[
  {
    "path": ".clang-format",
    "content": "IndentWidth: 4\nLanguage: Cpp\nAlignAfterOpenBracket: Align\nSortIncludes: false\nColumnLimit: 104\nPointerAlignment: Right\nAllowShortFunctionsOnASingleLine: false\nAllowShortIfStatementsOnASingleLine: false\nBinPackArguments: true\nBinPackParameters: true\nSpaceAfterCStyleCast: true\nBreakBeforeBraces: Attach\nBreakBeforeTernaryOperators: true\nBreakBeforeBinaryOperators: NonAssignment\nCpp11BracedListStyle: false\nIndentCaseLabels: true\nAlignTrailingComments: true\nUseTab: Never\n"
  },
  {
    "path": ".clang-tidy",
    "content": "---\nChecks: '-*,readability-braces-around-statements'\nWarningsAsErrors: ''\nHeaderFilterRegex: '(src|include|enhancements)\\/.*\\.h$'\nFormatStyle: 'file'\nCheckOptions:\n"
  },
  {
    "path": ".gitattributes",
    "content": "# Set the default behavior, in case people don't have core.autocrlf set.\n* text=auto\n\n# List text files in case git doesn't characterize correctly\n*.c text\n*.h text\n*.s text\n*.in text\n*.js text\n*.md text\n*.py text\n*.sh text\n*.ld text\n*.inc text\n*.txt text\n*.json text\n*.yaml text\n\n# Same for binary\n*.bin binary\n*.m64 binary\n*.png binary\n*.aiff binary"
  },
  {
    "path": ".gitignore",
    "content": "# Object files\n*.o\n*.obj\n*.elf\n\n# Linker output\n*.ilk\n*.exp\n\n# Precompiled Headers\n*.gch\n*.pch\n\n# Libraries\n*.lib\n*.a\n*.la\n*.lo\n\n# Shared objects (inc. Windows DLLs)\n*.dll\n*.so\n*.so.*\n*.dylib\n\n# Executables\n*.exe\n*.out\n*.app\n*.hex\n\n# Debug files\n*.dSYM/\n*.su\n*.idb\n*.pdb\n\n# datadump\n/tools/ddump/*\n\n# Text editor remnants\n*.swp\n.vscode/*\n\n# General project-specific ignores\ndoxygen/doxygen/*\nbuild/*\n*.dump\n*.mio0\n*.z64\n*.map\n.assets-local.txt\n\n# Assets. Generally ignored, but ones with \"custom\" in the name are fine.\n/levels/**/*.png\n/actors/**/*.png\n/textures/**/*.png\n/assets/**/*.bin\n/sound/**/*.m64\n/sound/**/*.aiff\n!/levels/**/*custom*.png\n!/levels/**/*custom*/**/*.png\n!/actors/**/*custom*.png\n!/actors/**/*custom*/**/*.png\n!/textures/**/*custom*.png\n!/textures/**/*custom*/**/*.png\n!/sound/**/*custom*.m64\n!/sound/**/*custom*/**/*.m64\n!/sound/**/*custom*.aiff\n!/sound/**/*custom*/**/*.aiff\n!/assets/**/*custom*.bin\n!/assets/**/*custom*/**/*.bin\n"
  },
  {
    "path": "CHANGES",
    "content": "Refresh 16 (Two years later...)\n1.) remove capstone from readme, slight update (#1212)\n2.) Update ido static recomp (#1211)\n3.) Fix misleading pointer (#1209)\n4.) update outdated link (#1208)\n5.) Match iQue (#1207)\n6.) iQue matching except BSS (#1124)\n7.) Create LICENSE.md\n8.) Reorganize and apply licenses to some of the tools/ programs per discussions with their author(s). (#1203)\n9.) Fix rumble_init libultra includes and checks (#1195)\n10.) Stacksize moved to defines (#1199)\n11.) Renamings we were too lazy to make a PR for for 3 years (#1198)\n12.) Fix spelling error in sound.h comment (#1197)\n13.) Update instrument sample names (#1196)\n14.) Object Labeling, Behavior Params, and Cleanup (#1193)\n15.) Significantly more Libultra Cleanup (#1192)\n16.) Typedefs for area Terrain Data and Rooms (#1178)\n17.) Allow spaces in filename for vadpcm_enc (#1175)\n18.) Label all warp nodes (#1191)\n19.) Remove hardware.h (#1190)\n20.) Document __osSetHWintrRoutine (#1186)\n21.) Change 3 space indent to 4 space indent and cleanup (#1189)\n22.) Libultra cleanup and labelling (#1188)\n23.) in-game menu renaming (#1187)\n24.) AVOID_UB fixes and cleanup (#1185)\n\nRefresh 15 (mostly a hotfix for RSP microcode selection)\n\n1.) Renamed frame_buffer funcs and _ZBUFFER (#1184)\n2.) RSP Microcode Hotfix (#1183)\n3.) Label osSetTimer.c (#1182)\n4.) Fix styling (#1177)\n5.) Rename all `FrameBuffer` variants to `Framebuffer` (#1176)\n6.) Remove (WIP) from sh.\n7.) Allow both archives and ELF objects to be patched (#1127)\n\nRefresh 14\n\n1.) Label whomp and some object fields (#1174)\n2.) Generate MIO0 object files using binutils `ld` instead of `as` (#1173)\n3.) Bowser documentation (#1166)\n4.) Fix comment syntax in 00_sound_player.0 (#1172)\n5.) Rename in-game menu variables (#1163)\n6.) Document double red coin sound and JP sound glitch (#1170)\n7.) Document different bug in external.c (#1168)\n8.) updated names/types of octagonal platform data (#1164)\n9.) Label a number of unnamed variables. (#1169)\n10.) Document JP PU sound glitch (#1167)\n11.) Set model ids to spawn_triangle_break_particles (#1165)\n12.) Fix borders in clear_frame_buffer (#1162)\n13.) Fix seq header files for 64-bit (#1161)\n14.) Game_init.c remaining doc (#1158)\n15.) Label a couple static variables in sound_init.c (#1159)\n16.) Properly define dialog values (status, flags, cutscenes) (#1153)\n17.) Label all of amp's assets. (#1018)\n18.) Split audio/synthesis.c into Shindou/non-Shindou files (#1144)\n19.) Avoid CC_CHECK warnings when using gcc (#1157)\n20.) level_select_menu.c => title_screen.c (#1152)\n21.) Use C preprocessor on assembly files (#1126)\n22.) Replace output_level_headers.py with sed equivalent (#1109)\n23.) Fix CC_CHECK warnings related to unused symbols and UB (#1155)\n24.) Define remaining floor lower limit values (#1147)\n25.) use r+b mode for libultra.a patch tool (#1148)\n26.) Use proper values for gPrevFrameObjectCount ifs (#1146)\n27.) Some minor bowser.inc.c labelling. (#1150)\n28.) fix king bob-omb texture pointers (#1145)\n29.) Split audio/load.c into Shindou/non-Shindou files (#1143)\n30.) Small Shindou audio cleanups (#1142)\n31.) Fix endians in ALSeqData (#1141)\n32.) Document S8 decoder rsp operation and some more (#1139)\n33.) Fix Shindou synthesis_process_note fake match (#1140)\n34.) More audio documentation, for the new rsp code and other fixes (#1138)\n35.) Build fixes for macOS: cpp, clang, recomp, aiff_extract_codebook (#1135)\n36.) Add ENABLE_RUMBLE to config.h (#1122)\n37.) Reduce recomp memory consumption by using smaller disassembly blocks (#1128)\n38.) Makefile fixes (#1123)\n39.) Update README.md\n40.) Update README.md\n41.) Reflect current decompilation status\n42.) Allow both archives and ELF objects to be patched (#1127)\n43.) Remove WIP mention in README for sh version.\n\nRefresh 13 2\n\n- No more nonmatchings remain for all builds including Shindou.\n\n1.) Shindou OK (#1118)\n2.) Match shindou sequence_player_process_sequence (#1117)\n3.) Match func_sh_802f4e50 (#1116)\n\nRefresh 13\n\n- No more nonmatchings remain for US, JP, or EU builds. Three(!!!) remain for Shindou (SH).\n\n*) SHINDOU MATCHING (#1081)\n*) Makefile gcc fixes (#1114)\n\n1.) Update diff.py (#1113)\n2.) Add support for generating C arrays from n64graphics and add Texture typedef (#1032)\n3.) Update README and Dockerfile with recomp info (#1105)\n4.) Support building tools with MSYS2 (#1112)\n5.) Support building tools with clang and macOS (#1106)\n6.) Clean tools directory when running distclean target (#1104)\n7.) Make build output cleaner (#1095)\n8.) Added 2 surface defines to bowser.inc.c (#1111)\n9.) fix fake matchings (#1108)\n10.) Use statically recompiled IDO instead of qemu-irix (#1099)\n11.) Add VERBOSE=1 to Jenkinsfile\n12.) updated intro_geo to use layer defines for geo flags (#1090)\n13.) Fix F3DZEX (#1097)\n14.) layer_transpose should take an s8 (#1093)\n15.) Fix tools/ build (#1082)\n16.) Relabel and document fish.inc.c (#1077)\n17.) Ensure all calls to .py files use $(PYTHON) (#1080)\n18.) Name Mario, Peach, and instrument sound files (#1078)\n19.) Goddard labeling, part 2 (#1076)\n20.) Fix envfx_snow and envfx_bubbles fake matches (#1075)\n21.) Use array subscripts instead of pointer math in 2 files (#1074)\n22.) refactor Makefile a bit (#1068)\n23.) Further improvements on field names (#1059)\n24.) Label and document manta_ray.inc.c (#1073)\n25.) Fix level_script and behavior fake matches (#1072)\n26.) Proper cell defines and more floor lower limit values. (#1065)\n27.) Document and re-label some goddard/intro code (#1069)\n28.) Match remaining functions (#1070)\n29.) match 'spawn_special_objects' (#1071)\n30.) Document parts of external.c and format sound defines (#1067)\n\nRefresh 12\n\n1.) Debug box improvements (#1066)\n2.) Improve 'geo_render_mirror_mario' (#1064)\n3.) Cleanup and small labeling (#1063)\n4.) Anim renames and other related renames (#1062)\n5.) remove do while 0 and make one line comments consistent (#1061)\n6.) fixed typo in segments.h (#1060)\n7.) Name unknown fields (from public repo) (#1058)\n8.) Change 'void *' to 'struct MainPoolState *' (#1057)\n9.) Fix type of freeList (#1056)\n10.) Newer version of diff script (#1055)\n11.) Add stubbed_printfs based on unused audio strings (#1054)\n12.) Fix comment in paintings.c (#1053)\n13.) Add defines for hardcoded cell/floor height values (#1051)\n14.) Update README.md: Remove GitHub specific Markdown syntax (#1052)\n15.) Properly label interation status that handle's Bowser's shockwave attack (#1050)\n\nRefresh 11\n1.) Make geo_process_level_of_detail endian-independent (#1049)\n2.) Label oMoveFlags and slight cleanup. (#1046)\n3.) Avoid UB in synthesis_resample_and_mix_reverb (#1048)\n4.) Change some void * to correct type (#1047)\n5.) Remove oPathedWaypointsS16 and convert all paths to Trajectory struct. (#1045)\n6.) Mr Blizzard documentation, Tox Box Unks (#1042)\n7.) Pipe input to textconv. (#1041)\n8.) Remove erroneous long double casts from audiofile.cpp (#1039)\n9.) Replace fixed dialogID in play_dialog_sound to DIALOG_COUNT (#1040)\n\nRefresh #10.1\n1.) Diff update (#1033)\n2.) Fix texture dimensions for exclamation boxes (#1034)\n3.) Fix armips compilation on Windows by changing order of inclusion files (#1035)\n4.) Embed libaudiofile into the repo as a single file (#1036)\n5.) Fix some tools issues found while compiling on MSYS2 (#1037)\n\nRefresh #10\n1.) GCC 9 noreturn UB fixes (#961)\n2.) List supported binutils variants in README.md (#960)\n3.) fix fly guy's possible values for target roll\n4.) clarify that 1 is an exclusive bound in random_float (#962)\n5.) replace unkB8 with prevNumStarsForDialog (#963)\n6.) Replace \"BulletBillUnkF8\" with \"BulletBillInitialMoveYaw\" (#966)\n7.) Renamed more warp behaviors and spawn types (#949)\n8.) EU bss cleanups (#965)\n9.) Add -fno-zero-initialized-in-bss to GCC CFLAGS (#968)\n10.) Use empty .SECONDARY target instead of .PRECIOUS (#964)\n11.) Match EU seq_channel_layer_process_script (#969)\n12.) Fix version variable overwriting bug for non-matching compilations (#974)\n13.) small bhv_collect_star_init labeling (#972)\n14.) Align SI DMA command buffers, add more names to osCont code (#973)\n15.) Minor for loop fix in playback.c (#976)\n16.) Add Docker config (Public #36)\n17.) Fix usage output crash for skyconv (#977)\n18.) Cleanup tools and their build flags (#978)\n19.) Print more detailed file reading error messages in extract_assets (#982)\n20.) Remove asmdiff (#983)\n21.) Fixed tabledesign makefile bug (#985)\n22.) Improve first-diff.py (#987)\n23.) Bring in some enhancements such as widescreen enhancements (#981)\n24.) Fix background shadow border if widescreen in shade_screen (#988)\n25.) Merge common EU sections in osExceptionPreamble (#990)\n26.) Introduce the NO_SEGMENTED_MEMORY define (#989)\n27.) NO_SEGMENTED_MEMORY comments (#992)\n28.) Introduce f3dex2e and a GBI_FLOATS setting (#993)\n29.) Audio uses signed 16-bit integers as samples, not unsigned (#995)\n30.) Assemble RSP ucode with armips (#970)\n31.) Label Mr. Blizzard, Yoshi, Whomp, Wiggler, Wood Piece oFields. (#996)\n32.) update crash enhancement (#1003)\n33.) Update README.md to use new public Discord server invite\n34.) Label variables in act_idle. (#1005)\n35.) Fix a typo in camera.h (#1009)\n36.) Fixed up profiler.c (#1010)\n37.) Add -d to first-diff.py (#1012)\n38.) Fix typo in first-diff.py (#1013)\n39.) Remove binutils 2.27 dependency check (#1015)\n40.) Update armips to v0.11.0 tag and add generator script (#1004)\n41.) Extract IPL3 font from ROM (#1011)\n42.) Documented audio playback flags (#1021)\n43.) Change RSP register notation to dollar-prefixed numbers (#1022)\n44.) Only check for QEMU_IRIX in Makefile when compiling with IDO (#1023)\n45.) Clean up header files and update function prototypes (#1000)\n46.) Named local variables in geo_update_layer_transparency (#1019)\n47.) Extract crash screen font textures from EU and SH ROMs (#1025)\n48.) Use ACTIVE_FLAG defines where appropriate (#1026)\n49.) Changed type of actor collision from s16 to Collision (#1024)\n50.) Implement sqrtf in assembly file (#1028)\n51.) Rename Struct8032FCE8 as OpenableGrill and identify data members (#1029)\n52.) Fix some mistakes in the abi doc (#1031)\n53.) The README.md PR (#979)\n\nRefresh #8\n1.) Use INT_STATUS_ macros for oInteractStatus (#911)\n2.) Update bullet_bill.inc.c (#912)\n3.) Make geo.c in levels nonconst to reduce diffs with gcc enhancement patch in future (#913)\n4.) Improve process_level_music_dynamics (#915)\n5.) add AVOID_UB define for fixing libultra aliasing. (#916)\n6.) const hack to TARGET_N64 and tweak ld script (#918)\n7.) Replace raw level/course numbers with defines (#919)\n8.) Label all graph node flags. (#920)\n9.) readme.md capitalization\n10.) The Big Function PR (Part 5) (#910)\n11.) Label hardware registers (#922)\n12.) Match EU synthesis_process_note (#923)\n13.) Some quick value changes (#909)\n14.) Added sequence player defines (#926)\n15.) Shindou diffs 2 [merge game.c and display.c, required for SH] (#927)\n16.) Match synthesis_process_notes and use -sopt for synthesis.c (#928)\n17.) Fix mips64-binutils for Fedora 31 and similar Linux distros (#931)\n18.) Update first-diff.py to work with Shindou (#933)\n19.) Labelled behavior_script.c (#929)\n20.) shindou diffs up to level_update (#932)\n21.) Update diff.py and diff_settings.py to work with SH (#936)\n22.) Add some Shindou resources to extract_assets.py (#939)\n23.) Label and document gd_math.c (#930)\n24.) Label all of Mario's actions. (#941)\n25.) Label all particles. (#940)\n26.) Renamed death related warpBhvs (#942)\n27.) Small Shindou differences (#945)\n28.) match player_performed_grab_escape_action in all versions (#943)\n29.) add main alignment (aglab2, #947)\n30.) Match a bunch of fake EU matchings (#944)\n31.) Shindou diffs round 4 (#937)\n32.) Easy PAL fake matchings (#946)\n33.) Merge object_helpers and object_helpers2 headers (#948)\n34.) match cap_check_quicksand (#950)\n35.) Shindou crash screen diffs (#938)\n36.) Thread6 (#951)\n37.) Correct IPL3 function and label addresses (#952)\n38.) Add COMPILER flag for Makefile and add official mips gcc support. (#953)\n39.) add align to sequence_00 (fixes gcc build) (#957)\n40.) Fixed itty bitty typo (#959)\n\nRefresh #7\n1.) update README.md (#861)\n2.) [eu] fix decompilation bugs in synthesis_process_note (#862)\n3.) Label and document Snufit.inc.c (#863)\n4.) Label and document Snufit.inc.c (#863)\n5.) Match append_bubble_vertex_buffer, append_snowflake_vertex_buffer (#860)\n6.) Compile audio/effects.c with -sopt (#870)\n7.) Match handle_dialog_text_and_pages (#872)\n8.) Remove improperly used LEVEL_SA define. (#875)\n9.) Remove unused EU ASM files (#873)\n10.) Shindou build flag support (#876)\n11.) The Big Function PR (Part 1) (#864)\n12.) \"Re-document\" file_select and star_select for EU (#877)\n13.) Document paintings.c (#868)\n14.) Minor interaction.c labelling/documentation. (#882)\n15.) Match synthesis_execute, prepare_reverb_ring_buffer, func_eu_802e00d8 (#886)\n16.) The Big Function PR (Part 2) (#874)\n17.) Additional painting documentation (#883)\n18.) Some EU audio labelling (#885)\n19.) Bring synthesis_do_one_audio_update a bit closer to matching (#887)\n20.) Misleading comment, this actually contols Bowser's init action (#889)\n21.) Match synthesis_do_one_audio_update (#890)\n22.) Remove unneeded if(1) in synthesis_do_one_audio_update (#891)\n23.) Match synthesis_resample_and_mix_reverb (#893)\n24.) Set LANG=C (#896)\n25.) Match note_apply_headset_pan_effects (#897)\n26.) Match play_sequence (#898)\n27.) Match sequence_channel_enable (#899)\n28.) Match sequence_player_process_sequence (#900)\n29.) Match (eu) alloc_bank_or_seq (#901)\n30.) Match alloc_bank_or_seq (#903)\n31.) Update README.md (again)\n32.) Documented behaviour/fish.inc.c & blue_fish.inc.c (#894)\n33.) Labelled 4 behavior files, made object_helper functions consistent (#881)\n34.) Add a make target for .copt (#902)\n35.) The Big Function PR (Part 3) (#888)\n36.) The Big Function PR (Part 4) (#906)\n37.) Rename src/audio/memory.c -> heap.c (#907)\n38.) Fix BBH texture (#908)\n\nRefresh #6\n1.) Make tools work on MinGW (#804) \n2.) Document mario_misc (#628) \n3.) add patch_libmalloc.py script to work around compiler crashes (#811) \n4.) Label the coffins file. (#829) \n5.) Convert enhancements into patches (#827) \n6.) Document Tweester.inc.c (#840) \n7.) EU OK and cleanup EU (#782)\n\nRefresh #5\n1.) mem_error_screen.inc.c updated for C (#775)\n2.) updated patch_libultra_math to work directly on libultra.a (#781)\n3.) Enhancement: Debug boxes (#783)\n4.) Label effects MemoryPool (#784)\n5.) Use full-width characters for JP text and rename mislabeled stuff (#772)\n6.) Small asset extraction fixes (#785)\n7.) Fix incremental asset extraction after the last PR (#790)\n8.) Labelled behavior script commands, tidied up behavior scripts and ren…\n9.) Document camera.c (#741)\n10.) Fix a HMC texture asset (#795)\n11.) Fix UB in angle conversion for paintings. Needed for pc-port. (#796)\n12.) Fix PSS texture assets (#801)\n13.) Fix some camera typos (#802)\n\nRefresh #4\n1.) Label screen_transition.c (#737)\n2.) Revamp macros (#738)\n3.) Simplify the cake makefile logic (#739)\n4.) Move zbuffer to C (#742)\n5.) Audio blob endian/64-bit fixes (#740)\n6.) Ub fixes (#745)\n7.) process_level_music_dynamics: slightly better stack and regalloc (#746)\n8.) move level order specific definitions out to levels/level_defines.h (#743)\n9.) Renamed some mislabelled sound effects (#748)\n10.) Very minor white space fixes in Mario.c (#752)\n11.) Renamed GRAVITY to OBJ_PHYSICS (#755)\n12.) Use defined macros instead of literal values for interactions in behavior_data.c (#754)\n13.) iQue Player console detection + full support (#756) \n14.) Fix Goddard Mario head for little endian etc. (#757) \n15.) Small bits of audio doc (#749)\n16.) Update diff script (#750) \n17.) Nicer format for course/dialog text, enum for dialog IDs (#753) \n18.) first-diff: store most recent mtime during check (#759)\n19.) Use Lights1 struct for light values (#760)\n20.) Detect mips64-elf in diff.py (#761) \n21.) Name display lists in gd renderer.c (#764) \n22.) Document a variety of PU type crashes. (#765) \n23.) Label object_behaviors. (#716) \n24.) Update swoop.inc.c (#767) \n25.) Label tilting_pyramid.inc.c (#768) \n26.) Label red_coin.inc.c (#770) \n27.) Use more level defines (#758) \n28.) Named Mario actions 6, 7, and 8 and noted causes of hands-free holding glitch (#769)\n\nRefresh #3\n1.) Small bits of sound sample labelling\n2.) Append 'b' to fopen calls in n64graphics to satisfy Windows\n3.) Document synthesis.c and abi.h\n4.) Remove gbi_old.h and use gbi.h instead for F3D_OLD\n5.) Fix and change most values used by f3d commands\n6.) Convert actors to C\n7.) Make extract_assets.py fail on bad baserom\n8.) Fix some (pragma-ignored) warnings\n9.) Convert trig tables and data/ buffers into C\n10.) Document intro behaviors and some of camera.c\n11.) Match dma_sample_data\n12.) Convert levels, bin, text, goddard_tex_dl to C\n13.) Remove .bss size hardcoding\n14.) Add mips64 fallback and alt dump option to diff.sh\n15.) Convert behavior_data to C\n16.) Get rid of the enum in behavior_data.\n17.) Change more values used by f3d commands\n18.) Document game/skybox.c\n19.) Actors levels fixup\n20.) Convert Mario animations to C (kind of)\n22.) generate skybox data from 248x248 images\n23.) 64-bit fixes\n24.) Move demo data to C\n25.) Change uintptr_t to GeoLayout for actors\n26.) Move libc includes to include/libc/\n\nRefresh #2a (hotfix)\nChanges from Refresh #2:\n\n1.) Fixed text Makefile dependencies\"\n\nRefresh #2\nChanges from Refresh #1:\n\n1.) Label src/game/behaviors/boo.inc.c\n2.) Verify half of audio_defines.h\n3.) Label ingame_menu.c and some dialog stuff\n4.) Improve handle_dialog_text_and_pages EU non-matching\n5.) Fix texture format for water splash/sparkle\n6.) Merge ucode.bin and ucode_unk.bin\n7.) 64-bit fixes\n8.) [AUDIO] Match func_80316928\n9.) Documented bug in Tuxie's mother's code \n10.) [AUDIO] Slightly closer matching for process_level_music_dynamics\n11.) Name channel scripts in sequence 0\n12.) Nicer error message when sha1sum doesn't match\n13.) Refactor object fields\n14.) Document file_select.c\n15.) Document star_select.c\n16.) Add uncompressed string support to textconv\n17.) Document main_menu geo and leveldata\n18.) Document hud.c and rename char textures\n19.) Correct gSPTextureRectangle values\n20.) Linker script wildcard\n     - Fixes \"undefined reference to x in discarded section y\" linker errors.\n     - Also means that you no longer have to add linker script entries for source files.\n21.) Reference qemu-irix package and add project structure\n     - Installing qemu-irix is as simple as installing the provided Debian package on the GitHub \"Releases\" tab\n       (https://github.com/n64decomp/qemu-irix).\n     - Old qemu-irix installs are unaffected by this change, and it is still possible to install qemu-irix with the older method.\n\nRefresh #1\nChanges from initial release:\n\n1.) More README cleanups and documentation\n2.) Fix .gitignore in tools/\n3.) More README cleanups and corrections\n4.) oUnk190 -> oInteractionSubtype\n5.) Normalize line endings\n6.) Replace bank_sets.s by sequences.json + build magic\n7.) Fix tabledesign in .gitignore\n8.) Cleaned and documented arrays in audio/\n9.) Change minimum Python 3 requirement in README.md to 3.6\n10.) Remove whitespace in ingame_menu.c, save_file.c, and star_select.c\n11.) Documentation comment style fixed\n12.) sm64.map -> sm64.version.map (ex: sm64.us.map)\n13.) Decompile EU versions of HUD and obj behaviors\n14.) Label ukiki.inc.c and ukiki_cage.inc.c\n15.) Add missing OS header includes\n16.) Fix alignment issue in model_ids.h\n17.) A bunch of behavior changes:\n     a.) Made styles consistent with function names (ex: BehBehaviorLoop -> beh_behavior_loop)\n     b.) Split obj_behaviors_2.c into multiple .inc.c files in behaviors/\n     c.) bhvHauntedRoomCheck -> bhvCoffinManager\n18.) Update README.md notes on WSL and add links\n19.) Added tidy.sh and also bracing around single-line ifs and loops\n"
  },
  {
    "path": "Dockerfile",
    "content": "FROM ubuntu:18.04 as build\n\nRUN apt-get update && \\\n    apt-get install -y \\\n        binutils-mips-linux-gnu \\\n        build-essential \\\n        git \\\n        pkgconf \\\n        python3\n\nRUN mkdir /sm64\nWORKDIR /sm64\nENV PATH=\"/sm64/tools:${PATH}\"\n\nCMD echo 'usage: docker run --rm --mount type=bind,source=\"$(pwd)\",destination=/sm64 sm64 make VERSION=us -j4\\n' \\\n         'see https://github.com/n64decomp/sm64/blob/master/README.md for advanced usage'\n"
  },
  {
    "path": "Doxyfile",
    "content": "# Doxyfile 1.8.14\n\n# This file describes the settings to be used by the documentation system\n# doxygen (www.doxygen.org) for a project.\n#\n# All text after a double hash (##) is considered a comment and is placed in\n# front of the TAG it is preceding.\n#\n# All text after a single hash (#) is considered a comment and will be ignored.\n# The format is:\n# TAG = value [value, ...]\n# For lists, items can also be appended using:\n# TAG += value [value, ...]\n# Values that contain spaces should be placed between quotes (\\\" \\\").\n\n#---------------------------------------------------------------------------\n# Project related configuration options\n#---------------------------------------------------------------------------\n\n# This tag specifies the encoding used for all characters in the config file\n# that follow. The default is UTF-8 which is also the encoding used for all text\n# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv\n# built into libc) for the transcoding. See\n# https://www.gnu.org/software/libiconv/ for the list of possible encodings.\n# The default value is: UTF-8.\n\nDOXYFILE_ENCODING      = UTF-8\n\n# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by\n# double-quotes, unless you are using Doxywizard) that should identify the\n# project for which the documentation is generated. This name is used in the\n# title of most generated pages and in a few other places.\n# The default value is: My Project.\n\nPROJECT_NAME           = \"Super Mario 64 Source\"\n\n# The PROJECT_NUMBER tag can be used to enter a project or revision number. This\n# could be handy for archiving the generated documentation or if some version\n# control system is used.\n\nPROJECT_NUMBER         =\n\n# Using the PROJECT_BRIEF tag one can provide an optional one line description\n# for a project that appears at the top of each page and should give viewer a\n# quick idea about the purpose of the project. Keep the description short.\n\nPROJECT_BRIEF          = \"A Super Mario 64 decompilation, brought to you by a bunch of clever folks.\"\n\n# With the PROJECT_LOGO tag one can specify a logo or an icon that is included\n# in the documentation. The maximum height of the logo should not exceed 55\n# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy\n# the logo to the output directory.\n\nPROJECT_LOGO           = doxygen/logo.png\n\n# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path\n# into which the generated documentation will be written. If a relative path is\n# entered, it will be relative to the location where doxygen was started. If\n# left blank the current directory will be used.\n\nOUTPUT_DIRECTORY       = doxygen/doxygen/\n\n# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-\n# directories (in 2 levels) under the output directory of each output format and\n# will distribute the generated files over these directories. Enabling this\n# option can be useful when feeding doxygen a huge amount of source files, where\n# putting all generated files in the same directory would otherwise causes\n# performance problems for the file system.\n# The default value is: NO.\n\nCREATE_SUBDIRS         = YES\n\n# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII\n# characters to appear in the names of generated files. If set to NO, non-ASCII\n# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode\n# U+3044.\n# The default value is: NO.\n\nALLOW_UNICODE_NAMES    = NO\n\n# The OUTPUT_LANGUAGE tag is used to specify the language in which all\n# documentation generated by doxygen is written. Doxygen will use this\n# information to generate all constant output in the proper language.\n# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,\n# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),\n# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,\n# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),\n# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,\n# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,\n# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,\n# Ukrainian and Vietnamese.\n# The default value is: English.\n\nOUTPUT_LANGUAGE        = English\n\n# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member\n# descriptions after the members that are listed in the file and class\n# documentation (similar to Javadoc). Set to NO to disable this.\n# The default value is: YES.\n\nBRIEF_MEMBER_DESC      = YES\n\n# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief\n# description of a member or function before the detailed description\n#\n# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the\n# brief descriptions will be completely suppressed.\n# The default value is: YES.\n\nREPEAT_BRIEF           = YES\n\n# This tag implements a quasi-intelligent brief description abbreviator that is\n# used to form the text in various listings. Each string in this list, if found\n# as the leading text of the brief description, will be stripped from the text\n# and the result, after processing the whole list, is used as the annotated\n# text. Otherwise, the brief description is used as-is. If left blank, the\n# following values are used ($name is automatically replaced with the name of\n# the entity):The $name class, The $name widget, The $name file, is, provides,\n# specifies, contains, represents, a, an and the.\n\nABBREVIATE_BRIEF       = \"The $name class\" \\\n                         \"The $name widget\" \\\n                         \"The $name file\" \\\n                         is \\\n                         provides \\\n                         specifies \\\n                         contains \\\n                         represents \\\n                         a \\\n                         an \\\n                         the\n\n# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then\n# doxygen will generate a detailed section even if there is only a brief\n# description.\n# The default value is: NO.\n\nALWAYS_DETAILED_SEC    = NO\n\n# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all\n# inherited members of a class in the documentation of that class as if those\n# members were ordinary class members. Constructors, destructors and assignment\n# operators of the base classes will not be shown.\n# The default value is: NO.\n\nINLINE_INHERITED_MEMB  = NO\n\n# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path\n# before files name in the file list and in the header files. If set to NO the\n# shortest path that makes the file name unique will be used\n# The default value is: YES.\n\nFULL_PATH_NAMES        = YES\n\n# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.\n# Stripping is only done if one of the specified strings matches the left-hand\n# part of the path. The tag can be used to show relative paths in the file list.\n# If left blank the directory from which doxygen is run is used as the path to\n# strip.\n#\n# Note that you can specify absolute paths here, but also relative paths, which\n# will be relative from the directory where doxygen is started.\n# This tag requires that the tag FULL_PATH_NAMES is set to YES.\n\nSTRIP_FROM_PATH        =\n\n# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the\n# path mentioned in the documentation of a class, which tells the reader which\n# header file to include in order to use a class. If left blank only the name of\n# the header file containing the class definition is used. Otherwise one should\n# specify the list of include paths that are normally passed to the compiler\n# using the -I flag.\n\nSTRIP_FROM_INC_PATH    =\n\n# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but\n# less readable) file names. This can be useful is your file systems doesn't\n# support long names like on DOS, Mac, or CD-ROM.\n# The default value is: NO.\n\nSHORT_NAMES            = NO\n\n# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the\n# first line (until the first dot) of a Javadoc-style comment as the brief\n# description. If set to NO, the Javadoc-style will behave just like regular Qt-\n# style comments (thus requiring an explicit @brief command for a brief\n# description.)\n# The default value is: NO.\n\nJAVADOC_AUTOBRIEF      = YES\n\n# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first\n# line (until the first dot) of a Qt-style comment as the brief description. If\n# set to NO, the Qt-style will behave just like regular Qt-style comments (thus\n# requiring an explicit \\brief command for a brief description.)\n# The default value is: NO.\n\nQT_AUTOBRIEF           = NO\n\n# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a\n# multi-line C++ special comment block (i.e. a block of //! or /// comments) as\n# a brief description. This used to be the default behavior. The new default is\n# to treat a multi-line C++ comment block as a detailed description. Set this\n# tag to YES if you prefer the old behavior instead.\n#\n# Note that setting this tag to YES also means that rational rose comments are\n# not recognized any more.\n# The default value is: NO.\n\nMULTILINE_CPP_IS_BRIEF = NO\n\n# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the\n# documentation from any documented member that it re-implements.\n# The default value is: YES.\n\nINHERIT_DOCS           = YES\n\n# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new\n# page for each member. If set to NO, the documentation of a member will be part\n# of the file/class/namespace that contains it.\n# The default value is: NO.\n\nSEPARATE_MEMBER_PAGES  = NO\n\n# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen\n# uses this value to replace tabs by spaces in code fragments.\n# Minimum value: 1, maximum value: 16, default value: 4.\n\nTAB_SIZE               = 4\n\n# This tag can be used to specify a number of aliases that act as commands in\n# the documentation. An alias has the form:\n# name=value\n# For example adding\n# \"sideeffect=@par Side Effects:\\n\"\n# will allow you to put the command \\sideeffect (or @sideeffect) in the\n# documentation, which will result in a user-defined paragraph with heading\n# \"Side Effects:\". You can put \\n's in the value part of an alias to insert\n# newlines (in the resulting output). You can put ^^ in the value part of an\n# alias to insert a newline as if a physical newline was in the original file.\n\nALIASES                =\n\n# This tag can be used to specify a number of word-keyword mappings (TCL only).\n# A mapping has the form \"name=value\". For example adding \"class=itcl::class\"\n# will allow you to use the command class in the itcl::class meaning.\n\nTCL_SUBST              =\n\n# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources\n# only. Doxygen will then generate output that is more tailored for C. For\n# instance, some of the names that are used will be different. The list of all\n# members will be omitted, etc.\n# The default value is: NO.\n\nOPTIMIZE_OUTPUT_FOR_C  = YES\n\n# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or\n# Python sources only. Doxygen will then generate output that is more tailored\n# for that language. For instance, namespaces will be presented as packages,\n# qualified scopes will look different, etc.\n# The default value is: NO.\n\nOPTIMIZE_OUTPUT_JAVA   = NO\n\n# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran\n# sources. Doxygen will then generate output that is tailored for Fortran.\n# The default value is: NO.\n\nOPTIMIZE_FOR_FORTRAN   = NO\n\n# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL\n# sources. Doxygen will then generate output that is tailored for VHDL.\n# The default value is: NO.\n\nOPTIMIZE_OUTPUT_VHDL   = NO\n\n# Doxygen selects the parser to use depending on the extension of the files it\n# parses. With this tag you can assign which parser to use for a given\n# extension. Doxygen has a built-in mapping, but you can override or extend it\n# using this tag. The format is ext=language, where ext is a file extension, and\n# language is one of the parsers supported by doxygen: IDL, Java, Javascript,\n# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran:\n# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran:\n# Fortran. In the later case the parser tries to guess whether the code is fixed\n# or free formatted code, this is the default for Fortran type files), VHDL. For\n# instance to make doxygen treat .inc files as Fortran files (default is PHP),\n# and .f files as C (default is Fortran), use: inc=Fortran f=C.\n#\n# Note: For files without extension you can use no_extension as a placeholder.\n#\n# Note that for custom extensions you also need to set FILE_PATTERNS otherwise\n# the files are not read by doxygen.\n\nEXTENSION_MAPPING      =\n\n# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments\n# according to the Markdown format, which allows for more readable\n# documentation. See http://daringfireball.net/projects/markdown/ for details.\n# The output of markdown processing is further processed by doxygen, so you can\n# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in\n# case of backward compatibilities issues.\n# The default value is: YES.\n\nMARKDOWN_SUPPORT       = YES\n\n# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up\n# to that level are automatically included in the table of contents, even if\n# they do not have an id attribute.\n# Note: This feature currently applies only to Markdown headings.\n# Minimum value: 0, maximum value: 99, default value: 0.\n# This tag requires that the tag MARKDOWN_SUPPORT is set to YES.\n\nTOC_INCLUDE_HEADINGS   = 0\n\n# When enabled doxygen tries to link words that correspond to documented\n# classes, or namespaces to their corresponding documentation. Such a link can\n# be prevented in individual cases by putting a % sign in front of the word or\n# globally by setting AUTOLINK_SUPPORT to NO.\n# The default value is: YES.\n\nAUTOLINK_SUPPORT       = YES\n\n# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want\n# to include (a tag file for) the STL sources as input, then you should set this\n# tag to YES in order to let doxygen match functions declarations and\n# definitions whose arguments contain STL classes (e.g. func(std::string);\n# versus func(std::string) {}). This also make the inheritance and collaboration\n# diagrams that involve STL classes more complete and accurate.\n# The default value is: NO.\n\nBUILTIN_STL_SUPPORT    = NO\n\n# If you use Microsoft's C++/CLI language, you should set this option to YES to\n# enable parsing support.\n# The default value is: NO.\n\nCPP_CLI_SUPPORT        = NO\n\n# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:\n# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen\n# will parse them like normal C++ but will assume all classes use public instead\n# of private inheritance when no explicit protection keyword is present.\n# The default value is: NO.\n\nSIP_SUPPORT            = NO\n\n# For Microsoft's IDL there are propget and propput attributes to indicate\n# getter and setter methods for a property. Setting this option to YES will make\n# doxygen to replace the get and set methods by a property in the documentation.\n# This will only work if the methods are indeed getting or setting a simple\n# type. If this is not the case, or you want to show the methods anyway, you\n# should set this option to NO.\n# The default value is: YES.\n\nIDL_PROPERTY_SUPPORT   = YES\n\n# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC\n# tag is set to YES then doxygen will reuse the documentation of the first\n# member in the group (if any) for the other members of the group. By default\n# all members of a group must be documented explicitly.\n# The default value is: NO.\n\nDISTRIBUTE_GROUP_DOC   = NO\n\n# If one adds a struct or class to a group and this option is enabled, then also\n# any nested class or struct is added to the same group. By default this option\n# is disabled and one has to add nested compounds explicitly via \\ingroup.\n# The default value is: NO.\n\nGROUP_NESTED_COMPOUNDS = NO\n\n# Set the SUBGROUPING tag to YES to allow class member groups of the same type\n# (for instance a group of public functions) to be put as a subgroup of that\n# type (e.g. under the Public Functions section). Set it to NO to prevent\n# subgrouping. Alternatively, this can be done per class using the\n# \\nosubgrouping command.\n# The default value is: YES.\n\nSUBGROUPING            = YES\n\n# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions\n# are shown inside the group in which they are included (e.g. using \\ingroup)\n# instead of on a separate page (for HTML and Man pages) or section (for LaTeX\n# and RTF).\n#\n# Note that this feature does not work in combination with\n# SEPARATE_MEMBER_PAGES.\n# The default value is: NO.\n\nINLINE_GROUPED_CLASSES = NO\n\n# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions\n# with only public data fields or simple typedef fields will be shown inline in\n# the documentation of the scope in which they are defined (i.e. file,\n# namespace, or group documentation), provided this scope is documented. If set\n# to NO, structs, classes, and unions are shown on a separate page (for HTML and\n# Man pages) or section (for LaTeX and RTF).\n# The default value is: NO.\n\nINLINE_SIMPLE_STRUCTS  = NO\n\n# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or\n# enum is documented as struct, union, or enum with the name of the typedef. So\n# typedef struct TypeS {} TypeT, will appear in the documentation as a struct\n# with name TypeT. When disabled the typedef will appear as a member of a file,\n# namespace, or class. And the struct will be named TypeS. This can typically be\n# useful for C code in case the coding convention dictates that all compound\n# types are typedef'ed and only the typedef is referenced, never the tag name.\n# The default value is: NO.\n\nTYPEDEF_HIDES_STRUCT   = NO\n\n# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This\n# cache is used to resolve symbols given their name and scope. Since this can be\n# an expensive process and often the same symbol appears multiple times in the\n# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small\n# doxygen will become slower. If the cache is too large, memory is wasted. The\n# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range\n# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536\n# symbols. At the end of a run doxygen will report the cache usage and suggest\n# the optimal cache size from a speed point of view.\n# Minimum value: 0, maximum value: 9, default value: 0.\n\nLOOKUP_CACHE_SIZE      = 0\n\n#---------------------------------------------------------------------------\n# Build related configuration options\n#---------------------------------------------------------------------------\n\n# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in\n# documentation are documented, even if no documentation was available. Private\n# class members and static file members will be hidden unless the\n# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.\n# Note: This will also disable the warnings about undocumented members that are\n# normally produced when WARNINGS is set to YES.\n# The default value is: NO.\n\nEXTRACT_ALL            = YES\n\n# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will\n# be included in the documentation.\n# The default value is: NO.\n\nEXTRACT_PRIVATE        = NO\n\n# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal\n# scope will be included in the documentation.\n# The default value is: NO.\n\nEXTRACT_PACKAGE        = NO\n\n# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be\n# included in the documentation.\n# The default value is: NO.\n\nEXTRACT_STATIC         = YES\n\n# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined\n# locally in source files will be included in the documentation. If set to NO,\n# only classes defined in header files are included. Does not have any effect\n# for Java sources.\n# The default value is: YES.\n\nEXTRACT_LOCAL_CLASSES  = YES\n\n# This flag is only useful for Objective-C code. If set to YES, local methods,\n# which are defined in the implementation section but not in the interface are\n# included in the documentation. If set to NO, only methods in the interface are\n# included.\n# The default value is: NO.\n\nEXTRACT_LOCAL_METHODS  = NO\n\n# If this flag is set to YES, the members of anonymous namespaces will be\n# extracted and appear in the documentation as a namespace called\n# 'anonymous_namespace{file}', where file will be replaced with the base name of\n# the file that contains the anonymous namespace. By default anonymous namespace\n# are hidden.\n# The default value is: NO.\n\nEXTRACT_ANON_NSPACES   = NO\n\n# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all\n# undocumented members inside documented classes or files. If set to NO these\n# members will be included in the various overviews, but no documentation\n# section is generated. This option has no effect if EXTRACT_ALL is enabled.\n# The default value is: NO.\n\nHIDE_UNDOC_MEMBERS     = NO\n\n# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all\n# undocumented classes that are normally visible in the class hierarchy. If set\n# to NO, these classes will be included in the various overviews. This option\n# has no effect if EXTRACT_ALL is enabled.\n# The default value is: NO.\n\nHIDE_UNDOC_CLASSES     = NO\n\n# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend\n# (class|struct|union) declarations. If set to NO, these declarations will be\n# included in the documentation.\n# The default value is: NO.\n\nHIDE_FRIEND_COMPOUNDS  = NO\n\n# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any\n# documentation blocks found inside the body of a function. If set to NO, these\n# blocks will be appended to the function's detailed documentation block.\n# The default value is: NO.\n\nHIDE_IN_BODY_DOCS      = NO\n\n# The INTERNAL_DOCS tag determines if documentation that is typed after a\n# \\internal command is included. If the tag is set to NO then the documentation\n# will be excluded. Set it to YES to include the internal documentation.\n# The default value is: NO.\n\nINTERNAL_DOCS          = NO\n\n# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file\n# names in lower-case letters. If set to YES, upper-case letters are also\n# allowed. This is useful if you have classes or files whose names only differ\n# in case and if your file system supports case sensitive file names. Windows\n# and Mac users are advised to set this option to NO.\n# The default value is: system dependent.\n\nCASE_SENSE_NAMES       = YES\n\n# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with\n# their full class and namespace scopes in the documentation. If set to YES, the\n# scope will be hidden.\n# The default value is: NO.\n\nHIDE_SCOPE_NAMES       = NO\n\n# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will\n# append additional text to a page's title, such as Class Reference. If set to\n# YES the compound reference will be hidden.\n# The default value is: NO.\n\nHIDE_COMPOUND_REFERENCE= NO\n\n# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of\n# the files that are included by a file in the documentation of that file.\n# The default value is: YES.\n\nSHOW_INCLUDE_FILES     = YES\n\n# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each\n# grouped member an include statement to the documentation, telling the reader\n# which file to include in order to use the member.\n# The default value is: NO.\n\nSHOW_GROUPED_MEMB_INC  = NO\n\n# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include\n# files with double quotes in the documentation rather than with sharp brackets.\n# The default value is: NO.\n\nFORCE_LOCAL_INCLUDES   = NO\n\n# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the\n# documentation for inline members.\n# The default value is: YES.\n\nINLINE_INFO            = YES\n\n# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the\n# (detailed) documentation of file and class members alphabetically by member\n# name. If set to NO, the members will appear in declaration order.\n# The default value is: YES.\n\nSORT_MEMBER_DOCS       = YES\n\n# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief\n# descriptions of file, namespace and class members alphabetically by member\n# name. If set to NO, the members will appear in declaration order. Note that\n# this will also influence the order of the classes in the class list.\n# The default value is: NO.\n\nSORT_BRIEF_DOCS        = NO\n\n# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the\n# (brief and detailed) documentation of class members so that constructors and\n# destructors are listed first. If set to NO the constructors will appear in the\n# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.\n# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief\n# member documentation.\n# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting\n# detailed member documentation.\n# The default value is: NO.\n\nSORT_MEMBERS_CTORS_1ST = NO\n\n# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy\n# of group names into alphabetical order. If set to NO the group names will\n# appear in their defined order.\n# The default value is: NO.\n\nSORT_GROUP_NAMES       = NO\n\n# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by\n# fully-qualified names, including namespaces. If set to NO, the class list will\n# be sorted only by class name, not including the namespace part.\n# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.\n# Note: This option applies only to the class list, not to the alphabetical\n# list.\n# The default value is: NO.\n\nSORT_BY_SCOPE_NAME     = NO\n\n# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper\n# type resolution of all parameters of a function it will reject a match between\n# the prototype and the implementation of a member function even if there is\n# only one candidate or it is obvious which candidate to choose by doing a\n# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still\n# accept a match between prototype and implementation in such cases.\n# The default value is: NO.\n\nSTRICT_PROTO_MATCHING  = NO\n\n# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo\n# list. This list is created by putting \\todo commands in the documentation.\n# The default value is: YES.\n\nGENERATE_TODOLIST      = YES\n\n# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test\n# list. This list is created by putting \\test commands in the documentation.\n# The default value is: YES.\n\nGENERATE_TESTLIST      = YES\n\n# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug\n# list. This list is created by putting \\bug commands in the documentation.\n# The default value is: YES.\n\nGENERATE_BUGLIST       = YES\n\n# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO)\n# the deprecated list. This list is created by putting \\deprecated commands in\n# the documentation.\n# The default value is: YES.\n\nGENERATE_DEPRECATEDLIST= YES\n\n# The ENABLED_SECTIONS tag can be used to enable conditional documentation\n# sections, marked by \\if <section_label> ... \\endif and \\cond <section_label>\n# ... \\endcond blocks.\n\nENABLED_SECTIONS       =\n\n# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the\n# initial value of a variable or macro / define can have for it to appear in the\n# documentation. If the initializer consists of more lines than specified here\n# it will be hidden. Use a value of 0 to hide initializers completely. The\n# appearance of the value of individual variables and macros / defines can be\n# controlled using \\showinitializer or \\hideinitializer command in the\n# documentation regardless of this setting.\n# Minimum value: 0, maximum value: 10000, default value: 30.\n\nMAX_INITIALIZER_LINES  = 30\n\n# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at\n# the bottom of the documentation of classes and structs. If set to YES, the\n# list will mention the files that were used to generate the documentation.\n# The default value is: YES.\n\nSHOW_USED_FILES        = YES\n\n# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This\n# will remove the Files entry from the Quick Index and from the Folder Tree View\n# (if specified).\n# The default value is: YES.\n\nSHOW_FILES             = YES\n\n# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces\n# page. This will remove the Namespaces entry from the Quick Index and from the\n# Folder Tree View (if specified).\n# The default value is: YES.\n\nSHOW_NAMESPACES        = YES\n\n# The FILE_VERSION_FILTER tag can be used to specify a program or script that\n# doxygen should invoke to get the current version for each file (typically from\n# the version control system). Doxygen will invoke the program by executing (via\n# popen()) the command command input-file, where command is the value of the\n# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided\n# by doxygen. Whatever the program writes to standard output is used as the file\n# version. For an example see the documentation.\n\nFILE_VERSION_FILTER    =\n\n# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed\n# by doxygen. The layout file controls the global structure of the generated\n# output files in an output format independent way. To create the layout file\n# that represents doxygen's defaults, run doxygen with the -l option. You can\n# optionally specify a file name after the option, if omitted DoxygenLayout.xml\n# will be used as the name of the layout file.\n#\n# Note that if you run doxygen from a directory containing a file called\n# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE\n# tag is left empty.\n\nLAYOUT_FILE            =\n\n# The CITE_BIB_FILES tag can be used to specify one or more bib files containing\n# the reference definitions. This must be a list of .bib files. The .bib\n# extension is automatically appended if omitted. This requires the bibtex tool\n# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info.\n# For LaTeX the style of the bibliography can be controlled using\n# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the\n# search path. See also \\cite for info how to create references.\n\nCITE_BIB_FILES         =\n\n#---------------------------------------------------------------------------\n# Configuration options related to warning and progress messages\n#---------------------------------------------------------------------------\n\n# The QUIET tag can be used to turn on/off the messages that are generated to\n# standard output by doxygen. If QUIET is set to YES this implies that the\n# messages are off.\n# The default value is: NO.\n\nQUIET                  = NO\n\n# The WARNINGS tag can be used to turn on/off the warning messages that are\n# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES\n# this implies that the warnings are on.\n#\n# Tip: Turn warnings on while writing the documentation.\n# The default value is: YES.\n\nWARNINGS               = YES\n\n# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate\n# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag\n# will automatically be disabled.\n# The default value is: YES.\n\nWARN_IF_UNDOCUMENTED   = YES\n\n# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for\n# potential errors in the documentation, such as not documenting some parameters\n# in a documented function, or documenting parameters that don't exist or using\n# markup commands wrongly.\n# The default value is: YES.\n\nWARN_IF_DOC_ERROR      = YES\n\n# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that\n# are documented, but have no documentation for their parameters or return\n# value. If set to NO, doxygen will only warn about wrong or incomplete\n# parameter documentation, but not about the absence of documentation.\n# The default value is: NO.\n\nWARN_NO_PARAMDOC       = NO\n\n# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when\n# a warning is encountered.\n# The default value is: NO.\n\nWARN_AS_ERROR          = NO\n\n# The WARN_FORMAT tag determines the format of the warning messages that doxygen\n# can produce. The string should contain the $file, $line, and $text tags, which\n# will be replaced by the file and line number from which the warning originated\n# and the warning text. Optionally the format may contain $version, which will\n# be replaced by the version of the file (if it could be obtained via\n# FILE_VERSION_FILTER)\n# The default value is: $file:$line: $text.\n\nWARN_FORMAT            = \"$file:$line: $text\"\n\n# The WARN_LOGFILE tag can be used to specify a file to which warning and error\n# messages should be written. If left blank the output is written to standard\n# error (stderr).\n\nWARN_LOGFILE           =\n\n#---------------------------------------------------------------------------\n# Configuration options related to the input files\n#---------------------------------------------------------------------------\n\n# The INPUT tag is used to specify the files and/or directories that contain\n# documented source files. You may enter file names like myfile.cpp or\n# directories like /usr/src/myproject. Separate the files or directories with\n# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING\n# Note: If this tag is empty the current directory is searched.\n\nINPUT                  =\n\n# This tag can be used to specify the character encoding of the source files\n# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses\n# libiconv (or the iconv built into libc) for the transcoding. See the libiconv\n# documentation (see: https://www.gnu.org/software/libiconv/) for the list of\n# possible encodings.\n# The default value is: UTF-8.\n\nINPUT_ENCODING         = UTF-8\n\n# If the value of the INPUT tag contains directories, you can use the\n# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and\n# *.h) to filter out the source-files in the directories.\n#\n# Note that for custom extensions or not directly supported extensions you also\n# need to set EXTENSION_MAPPING for the extension otherwise the files are not\n# read by doxygen.\n#\n# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp,\n# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h,\n# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc,\n# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f95, *.f03, *.f08,\n# *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf and *.qsf.\n\nFILE_PATTERNS          = *.c \\\n                         *.cc \\\n                         *.cxx \\\n                         *.cpp \\\n                         *.c++ \\\n                         *.java \\\n                         *.ii \\\n                         *.ixx \\\n                         *.ipp \\\n                         *.i++ \\\n                         *.inl \\\n                         *.idl \\\n                         *.ddl \\\n                         *.odl \\\n                         *.h \\\n                         *.hh \\\n                         *.hxx \\\n                         *.hpp \\\n                         *.h++ \\\n                         *.cs \\\n                         *.d \\\n                         *.php \\\n                         *.php4 \\\n                         *.php5 \\\n                         *.phtml \\\n                         *.inc \\\n                         *.m \\\n                         *.markdown \\\n                         *.md \\\n                         *.mm \\\n                         *.dox \\\n                         *.py \\\n                         *.pyw \\\n                         *.f90 \\\n                         *.f95 \\\n                         *.f03 \\\n                         *.f08 \\\n                         *.f \\\n                         *.for \\\n                         *.tcl \\\n                         *.vhd \\\n                         *.vhdl \\\n                         *.ucf \\\n                         *.qsf\n\n# The RECURSIVE tag can be used to specify whether or not subdirectories should\n# be searched for input files as well.\n# The default value is: NO.\n\nRECURSIVE              = YES\n\n# The EXCLUDE tag can be used to specify files and/or directories that should be\n# excluded from the INPUT source files. This way you can easily exclude a\n# subdirectory from a directory tree whose root is specified with the INPUT tag.\n#\n# Note that relative paths are relative to the directory from which doxygen is\n# run.\n\nEXCLUDE                =\n\n# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or\n# directories that are symbolic links (a Unix file system feature) are excluded\n# from the input.\n# The default value is: NO.\n\nEXCLUDE_SYMLINKS       = NO\n\n# If the value of the INPUT tag contains directories, you can use the\n# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude\n# certain files from those directories.\n#\n# Note that the wildcards are matched against the file with absolute path, so to\n# exclude all test directories for example use the pattern */test/*\n\nEXCLUDE_PATTERNS       =\n\n# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names\n# (namespaces, classes, functions, etc.) that should be excluded from the\n# output. The symbol name can be a fully qualified name, a word, or if the\n# wildcard * is used, a substring. Examples: ANamespace, AClass,\n# AClass::ANamespace, ANamespace::*Test\n#\n# Note that the wildcards are matched against the file with absolute path, so to\n# exclude all test directories use the pattern */test/*\n\nEXCLUDE_SYMBOLS        =\n\n# The EXAMPLE_PATH tag can be used to specify one or more files or directories\n# that contain example code fragments that are included (see the \\include\n# command).\n\nEXAMPLE_PATH           =\n\n# If the value of the EXAMPLE_PATH tag contains directories, you can use the\n# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and\n# *.h) to filter out the source-files in the directories. If left blank all\n# files are included.\n\nEXAMPLE_PATTERNS       = *\n\n# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be\n# searched for input files to be used with the \\include or \\dontinclude commands\n# irrespective of the value of the RECURSIVE tag.\n# The default value is: NO.\n\nEXAMPLE_RECURSIVE      = NO\n\n# The IMAGE_PATH tag can be used to specify one or more files or directories\n# that contain images that are to be included in the documentation (see the\n# \\image command).\n\nIMAGE_PATH             =\n\n# The INPUT_FILTER tag can be used to specify a program that doxygen should\n# invoke to filter for each input file. Doxygen will invoke the filter program\n# by executing (via popen()) the command:\n#\n# <filter> <input-file>\n#\n# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the\n# name of an input file. Doxygen will then use the output that the filter\n# program writes to standard output. If FILTER_PATTERNS is specified, this tag\n# will be ignored.\n#\n# Note that the filter must not add or remove lines; it is applied before the\n# code is scanned, but not when the output code is generated. If lines are added\n# or removed, the anchors will not be placed correctly.\n#\n# Note that for custom extensions or not directly supported extensions you also\n# need to set EXTENSION_MAPPING for the extension otherwise the files are not\n# properly processed by doxygen.\n\nINPUT_FILTER           =\n\n# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern\n# basis. Doxygen will compare the file name with each pattern and apply the\n# filter if there is a match. The filters are a list of the form: pattern=filter\n# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how\n# filters are used. If the FILTER_PATTERNS tag is empty or if none of the\n# patterns match the file name, INPUT_FILTER is applied.\n#\n# Note that for custom extensions or not directly supported extensions you also\n# need to set EXTENSION_MAPPING for the extension otherwise the files are not\n# properly processed by doxygen.\n\nFILTER_PATTERNS        =\n\n# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using\n# INPUT_FILTER) will also be used to filter the input files that are used for\n# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).\n# The default value is: NO.\n\nFILTER_SOURCE_FILES    = NO\n\n# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file\n# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and\n# it is also possible to disable source filtering for a specific pattern using\n# *.ext= (so without naming a filter).\n# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.\n\nFILTER_SOURCE_PATTERNS =\n\n# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that\n# is part of the input, its contents will be placed on the main page\n# (index.html). This can be useful if you have a project on for instance GitHub\n# and want to reuse the introduction page also for the doxygen output.\n\nUSE_MDFILE_AS_MAINPAGE =\n\n#---------------------------------------------------------------------------\n# Configuration options related to source browsing\n#---------------------------------------------------------------------------\n\n# If the SOURCE_BROWSER tag is set to YES then a list of source files will be\n# generated. Documented entities will be cross-referenced with these sources.\n#\n# Note: To get rid of all source code in the generated output, make sure that\n# also VERBATIM_HEADERS is set to NO.\n# The default value is: NO.\n\nSOURCE_BROWSER         = NO\n\n# Setting the INLINE_SOURCES tag to YES will include the body of functions,\n# classes and enums directly into the documentation.\n# The default value is: NO.\n\nINLINE_SOURCES         = NO\n\n# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any\n# special comment blocks from generated source code fragments. Normal C, C++ and\n# Fortran comments will always remain visible.\n# The default value is: YES.\n\nSTRIP_CODE_COMMENTS    = YES\n\n# If the REFERENCED_BY_RELATION tag is set to YES then for each documented\n# function all documented functions referencing it will be listed.\n# The default value is: NO.\n\nREFERENCED_BY_RELATION = NO\n\n# If the REFERENCES_RELATION tag is set to YES then for each documented function\n# all documented entities called/used by that function will be listed.\n# The default value is: NO.\n\nREFERENCES_RELATION    = NO\n\n# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set\n# to YES then the hyperlinks from functions in REFERENCES_RELATION and\n# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will\n# link to the documentation.\n# The default value is: YES.\n\nREFERENCES_LINK_SOURCE = YES\n\n# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the\n# source code will show a tooltip with additional information such as prototype,\n# brief description and links to the definition and documentation. Since this\n# will make the HTML file larger and loading of large files a bit slower, you\n# can opt to disable this feature.\n# The default value is: YES.\n# This tag requires that the tag SOURCE_BROWSER is set to YES.\n\nSOURCE_TOOLTIPS        = YES\n\n# If the USE_HTAGS tag is set to YES then the references to source code will\n# point to the HTML generated by the htags(1) tool instead of doxygen built-in\n# source browser. The htags tool is part of GNU's global source tagging system\n# (see https://www.gnu.org/software/global/global.html). You will need version\n# 4.8.6 or higher.\n#\n# To use it do the following:\n# - Install the latest version of global\n# - Enable SOURCE_BROWSER and USE_HTAGS in the config file\n# - Make sure the INPUT points to the root of the source tree\n# - Run doxygen as normal\n#\n# Doxygen will invoke htags (and that will in turn invoke gtags), so these\n# tools must be available from the command line (i.e. in the search path).\n#\n# The result: instead of the source browser generated by doxygen, the links to\n# source code will now point to the output of htags.\n# The default value is: NO.\n# This tag requires that the tag SOURCE_BROWSER is set to YES.\n\nUSE_HTAGS              = NO\n\n# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a\n# verbatim copy of the header file for each class for which an include is\n# specified. Set to NO to disable this.\n# See also: Section \\class.\n# The default value is: YES.\n\nVERBATIM_HEADERS       = YES\n\n#---------------------------------------------------------------------------\n# Configuration options related to the alphabetical class index\n#---------------------------------------------------------------------------\n\n# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all\n# compounds will be generated. Enable this if the project contains a lot of\n# classes, structs, unions or interfaces.\n# The default value is: YES.\n\nALPHABETICAL_INDEX     = YES\n\n# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in\n# which the alphabetical index list will be split.\n# Minimum value: 1, maximum value: 20, default value: 5.\n# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.\n\nCOLS_IN_ALPHA_INDEX    = 5\n\n# In case all classes in a project start with a common prefix, all classes will\n# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag\n# can be used to specify a prefix (or a list of prefixes) that should be ignored\n# while generating the index headers.\n# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.\n\nIGNORE_PREFIX          =\n\n#---------------------------------------------------------------------------\n# Configuration options related to the HTML output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output\n# The default value is: YES.\n\nGENERATE_HTML          = YES\n\n# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a\n# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of\n# it.\n# The default directory is: html.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_OUTPUT            = html\n\n# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each\n# generated HTML page (for example: .htm, .php, .asp).\n# The default value is: .html.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_FILE_EXTENSION    = .html\n\n# The HTML_HEADER tag can be used to specify a user-defined HTML header file for\n# each generated HTML page. If the tag is left blank doxygen will generate a\n# standard header.\n#\n# To get valid HTML the header file that includes any scripts and style sheets\n# that doxygen needs, which is dependent on the configuration options used (e.g.\n# the setting GENERATE_TREEVIEW). It is highly recommended to start with a\n# default header using\n# doxygen -w html new_header.html new_footer.html new_stylesheet.css\n# YourConfigFile\n# and then modify the file new_header.html. See also section \"Doxygen usage\"\n# for information on how to generate the default header that doxygen normally\n# uses.\n# Note: The header is subject to change so you typically have to regenerate the\n# default header when upgrading to a newer version of doxygen. For a description\n# of the possible markers and block names see the documentation.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_HEADER            =\n\n# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each\n# generated HTML page. If the tag is left blank doxygen will generate a standard\n# footer. See HTML_HEADER for more information on how to generate a default\n# footer and what special commands can be used inside the footer. See also\n# section \"Doxygen usage\" for information on how to generate the default footer\n# that doxygen normally uses.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_FOOTER            =\n\n# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style\n# sheet that is used by each HTML page. It can be used to fine-tune the look of\n# the HTML output. If left blank doxygen will generate a default style sheet.\n# See also section \"Doxygen usage\" for information on how to generate the style\n# sheet that doxygen normally uses.\n# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as\n# it is more robust and this tag (HTML_STYLESHEET) will in the future become\n# obsolete.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_STYLESHEET        =\n\n# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined\n# cascading style sheets that are included after the standard style sheets\n# created by doxygen. Using this option one can overrule certain style aspects.\n# This is preferred over using HTML_STYLESHEET since it does not replace the\n# standard style sheet and is therefore more robust against future updates.\n# Doxygen will copy the style sheet files to the output directory.\n# Note: The order of the extra style sheet files is of importance (e.g. the last\n# style sheet in the list overrules the setting of the previous ones in the\n# list). For an example see the documentation.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_EXTRA_STYLESHEET  =\n\n# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or\n# other source files which should be copied to the HTML output directory. Note\n# that these files will be copied to the base HTML output directory. Use the\n# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these\n# files. In the HTML_STYLESHEET file, use the file name only. Also note that the\n# files will be copied as-is; there are no commands or markers available.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_EXTRA_FILES       =\n\n# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen\n# will adjust the colors in the style sheet and background images according to\n# this color. Hue is specified as an angle on a colorwheel, see\n# https://en.wikipedia.org/wiki/Hue for more information. For instance the value\n# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300\n# purple, and 360 is red again.\n# Minimum value: 0, maximum value: 359, default value: 220.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_COLORSTYLE_HUE    = 220\n\n# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors\n# in the HTML output. For a value of 0 the output will use grayscales only. A\n# value of 255 will produce the most vivid colors.\n# Minimum value: 0, maximum value: 255, default value: 100.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_COLORSTYLE_SAT    = 100\n\n# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the\n# luminance component of the colors in the HTML output. Values below 100\n# gradually make the output lighter, whereas values above 100 make the output\n# darker. The value divided by 100 is the actual gamma applied, so 80 represents\n# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not\n# change the gamma.\n# Minimum value: 40, maximum value: 240, default value: 80.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_COLORSTYLE_GAMMA  = 80\n\n# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML\n# page will contain the date and time when the page was generated. Setting this\n# to YES can help to show when doxygen was last run and thus if the\n# documentation is up to date.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_TIMESTAMP         = NO\n\n# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML\n# documentation will contain a main index with vertical navigation menus that\n# are dynamically created via Javascript. If disabled, the navigation index will\n# consists of multiple levels of tabs that are statically embedded in every HTML\n# page. Disable this option to support browsers that do not have Javascript,\n# like the Qt help browser.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_DYNAMIC_MENUS     = YES\n\n# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML\n# documentation will contain sections that can be hidden and shown after the\n# page has loaded.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_DYNAMIC_SECTIONS  = NO\n\n# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries\n# shown in the various tree structured indices initially; the user can expand\n# and collapse entries dynamically later on. Doxygen will expand the tree to\n# such a level that at most the specified number of entries are visible (unless\n# a fully collapsed tree already exceeds this amount). So setting the number of\n# entries 1 will produce a full collapsed tree by default. 0 is a special value\n# representing an infinite number of entries and will result in a full expanded\n# tree by default.\n# Minimum value: 0, maximum value: 9999, default value: 100.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_INDEX_NUM_ENTRIES = 100\n\n# If the GENERATE_DOCSET tag is set to YES, additional index files will be\n# generated that can be used as input for Apple's Xcode 3 integrated development\n# environment (see: https://developer.apple.com/tools/xcode/), introduced with\n# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a\n# Makefile in the HTML output directory. Running make will produce the docset in\n# that directory and running make install will install the docset in\n# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at\n# startup. See https://developer.apple.com/tools/creatingdocsetswithdoxygen.html\n# for more information.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nGENERATE_DOCSET        = NO\n\n# This tag determines the name of the docset feed. A documentation feed provides\n# an umbrella under which multiple documentation sets from a single provider\n# (such as a company or product suite) can be grouped.\n# The default value is: Doxygen generated docs.\n# This tag requires that the tag GENERATE_DOCSET is set to YES.\n\nDOCSET_FEEDNAME        = \"Doxygen generated docs\"\n\n# This tag specifies a string that should uniquely identify the documentation\n# set bundle. This should be a reverse domain-name style string, e.g.\n# com.mycompany.MyDocSet. Doxygen will append .docset to the name.\n# The default value is: org.doxygen.Project.\n# This tag requires that the tag GENERATE_DOCSET is set to YES.\n\nDOCSET_BUNDLE_ID       = org.doxygen.Project\n\n# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify\n# the documentation publisher. This should be a reverse domain-name style\n# string, e.g. com.mycompany.MyDocSet.documentation.\n# The default value is: org.doxygen.Publisher.\n# This tag requires that the tag GENERATE_DOCSET is set to YES.\n\nDOCSET_PUBLISHER_ID    = org.doxygen.Publisher\n\n# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.\n# The default value is: Publisher.\n# This tag requires that the tag GENERATE_DOCSET is set to YES.\n\nDOCSET_PUBLISHER_NAME  = Publisher\n\n# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three\n# additional HTML index files: index.hhp, index.hhc, and index.hhk. The\n# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop\n# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on\n# Windows.\n#\n# The HTML Help Workshop contains a compiler that can convert all HTML output\n# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML\n# files are now used as the Windows 98 help format, and will replace the old\n# Windows help format (.hlp) on all Windows platforms in the future. Compressed\n# HTML files also contain an index, a table of contents, and you can search for\n# words in the documentation. The HTML workshop also contains a viewer for\n# compressed HTML files.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nGENERATE_HTMLHELP      = NO\n\n# The CHM_FILE tag can be used to specify the file name of the resulting .chm\n# file. You can add a path in front of the file if the result should not be\n# written to the html output directory.\n# This tag requires that the tag GENERATE_HTMLHELP is set to YES.\n\nCHM_FILE               =\n\n# The HHC_LOCATION tag can be used to specify the location (absolute path\n# including file name) of the HTML help compiler (hhc.exe). If non-empty,\n# doxygen will try to run the HTML help compiler on the generated index.hhp.\n# The file has to be specified with full path.\n# This tag requires that the tag GENERATE_HTMLHELP is set to YES.\n\nHHC_LOCATION           =\n\n# The GENERATE_CHI flag controls if a separate .chi index file is generated\n# (YES) or that it should be included in the master .chm file (NO).\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTMLHELP is set to YES.\n\nGENERATE_CHI           = NO\n\n# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc)\n# and project file content.\n# This tag requires that the tag GENERATE_HTMLHELP is set to YES.\n\nCHM_INDEX_ENCODING     =\n\n# The BINARY_TOC flag controls whether a binary table of contents is generated\n# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it\n# enables the Previous and Next buttons.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTMLHELP is set to YES.\n\nBINARY_TOC             = NO\n\n# The TOC_EXPAND flag can be set to YES to add extra items for group members to\n# the table of contents of the HTML help documentation and to the tree view.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTMLHELP is set to YES.\n\nTOC_EXPAND             = NO\n\n# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and\n# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that\n# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help\n# (.qch) of the generated HTML documentation.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nGENERATE_QHP           = NO\n\n# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify\n# the file name of the resulting .qch file. The path specified is relative to\n# the HTML output folder.\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQCH_FILE               =\n\n# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help\n# Project output. For more information please see Qt Help Project / Namespace\n# (see: http://doc.qt.io/qt-4.8/qthelpproject.html#namespace).\n# The default value is: org.doxygen.Project.\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQHP_NAMESPACE          = org.doxygen.Project\n\n# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt\n# Help Project output. For more information please see Qt Help Project / Virtual\n# Folders (see: http://doc.qt.io/qt-4.8/qthelpproject.html#virtual-folders).\n# The default value is: doc.\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQHP_VIRTUAL_FOLDER     = doc\n\n# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom\n# filter to add. For more information please see Qt Help Project / Custom\n# Filters (see: http://doc.qt.io/qt-4.8/qthelpproject.html#custom-filters).\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQHP_CUST_FILTER_NAME   =\n\n# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the\n# custom filter to add. For more information please see Qt Help Project / Custom\n# Filters (see: http://doc.qt.io/qt-4.8/qthelpproject.html#custom-filters).\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQHP_CUST_FILTER_ATTRS  =\n\n# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this\n# project's filter section matches. Qt Help Project / Filter Attributes (see:\n# http://doc.qt.io/qt-4.8/qthelpproject.html#filter-attributes).\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQHP_SECT_FILTER_ATTRS  =\n\n# The QHG_LOCATION tag can be used to specify the location of Qt's\n# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the\n# generated .qhp file.\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQHG_LOCATION           =\n\n# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be\n# generated, together with the HTML files, they form an Eclipse help plugin. To\n# install this plugin and make it available under the help contents menu in\n# Eclipse, the contents of the directory containing the HTML and XML files needs\n# to be copied into the plugins directory of eclipse. The name of the directory\n# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.\n# After copying Eclipse needs to be restarted before the help appears.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nGENERATE_ECLIPSEHELP   = NO\n\n# A unique identifier for the Eclipse help plugin. When installing the plugin\n# the directory name containing the HTML and XML files should also have this\n# name. Each documentation set should have its own identifier.\n# The default value is: org.doxygen.Project.\n# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.\n\nECLIPSE_DOC_ID         = org.doxygen.Project\n\n# If you want full control over the layout of the generated HTML pages it might\n# be necessary to disable the index and replace it with your own. The\n# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top\n# of each HTML page. A value of NO enables the index and the value YES disables\n# it. Since the tabs in the index contain the same information as the navigation\n# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nDISABLE_INDEX          = NO\n\n# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index\n# structure should be generated to display hierarchical information. If the tag\n# value is set to YES, a side panel will be generated containing a tree-like\n# index structure (just like the one that is generated for HTML Help). For this\n# to work a browser that supports JavaScript, DHTML, CSS and frames is required\n# (i.e. any modern browser). Windows users are probably better off using the\n# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can\n# further fine-tune the look of the index. As an example, the default style\n# sheet generated by doxygen has an example that shows how to put an image at\n# the root of the tree instead of the PROJECT_NAME. Since the tree basically has\n# the same information as the tab index, you could consider setting\n# DISABLE_INDEX to YES when enabling this option.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nGENERATE_TREEVIEW      = NO\n\n# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that\n# doxygen will group on one line in the generated HTML documentation.\n#\n# Note that a value of 0 will completely suppress the enum values from appearing\n# in the overview section.\n# Minimum value: 0, maximum value: 20, default value: 4.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nENUM_VALUES_PER_LINE   = 4\n\n# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used\n# to set the initial width (in pixels) of the frame in which the tree is shown.\n# Minimum value: 0, maximum value: 1500, default value: 250.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nTREEVIEW_WIDTH         = 250\n\n# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to\n# external symbols imported via tag files in a separate window.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nEXT_LINKS_IN_WINDOW    = NO\n\n# Use this tag to change the font size of LaTeX formulas included as images in\n# the HTML documentation. When you change the font size after a successful\n# doxygen run you need to manually remove any form_*.png images from the HTML\n# output directory to force them to be regenerated.\n# Minimum value: 8, maximum value: 50, default value: 10.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nFORMULA_FONTSIZE       = 10\n\n# Use the FORMULA_TRANSPARENT tag to determine whether or not the images\n# generated for formulas are transparent PNGs. Transparent PNGs are not\n# supported properly for IE 6.0, but are supported on all modern browsers.\n#\n# Note that when changing this option you need to delete any form_*.png files in\n# the HTML output directory before the changes have effect.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nFORMULA_TRANSPARENT    = YES\n\n# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see\n# https://www.mathjax.org) which uses client side Javascript for the rendering\n# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX\n# installed or if you want to formulas look prettier in the HTML output. When\n# enabled you may also need to install MathJax separately and configure the path\n# to it using the MATHJAX_RELPATH option.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nUSE_MATHJAX            = NO\n\n# When MathJax is enabled you can set the default output format to be used for\n# the MathJax output. See the MathJax site (see:\n# http://docs.mathjax.org/en/latest/output.html) for more details.\n# Possible values are: HTML-CSS (which is slower, but has the best\n# compatibility), NativeMML (i.e. MathML) and SVG.\n# The default value is: HTML-CSS.\n# This tag requires that the tag USE_MATHJAX is set to YES.\n\nMATHJAX_FORMAT         = HTML-CSS\n\n# When MathJax is enabled you need to specify the location relative to the HTML\n# output directory using the MATHJAX_RELPATH option. The destination directory\n# should contain the MathJax.js script. For instance, if the mathjax directory\n# is located at the same level as the HTML output directory, then\n# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax\n# Content Delivery Network so you can quickly see the result without installing\n# MathJax. However, it is strongly recommended to install a local copy of\n# MathJax from https://www.mathjax.org before deployment.\n# The default value is: https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/.\n# This tag requires that the tag USE_MATHJAX is set to YES.\n\nMATHJAX_RELPATH        = https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/\n\n# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax\n# extension names that should be enabled during MathJax rendering. For example\n# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols\n# This tag requires that the tag USE_MATHJAX is set to YES.\n\nMATHJAX_EXTENSIONS     =\n\n# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces\n# of code that will be used on startup of the MathJax code. See the MathJax site\n# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an\n# example see the documentation.\n# This tag requires that the tag USE_MATHJAX is set to YES.\n\nMATHJAX_CODEFILE       =\n\n# When the SEARCHENGINE tag is enabled doxygen will generate a search box for\n# the HTML output. The underlying search engine uses javascript and DHTML and\n# should work on any modern browser. Note that when using HTML help\n# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)\n# there is already a search function so this one should typically be disabled.\n# For large projects the javascript based search engine can be slow, then\n# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to\n# search using the keyboard; to jump to the search box use <access key> + S\n# (what the <access key> is depends on the OS and browser, but it is typically\n# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down\n# key> to jump into the search results window, the results can be navigated\n# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel\n# the search. The filter options can be selected when the cursor is inside the\n# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>\n# to select a filter and <Enter> or <escape> to activate or cancel the filter\n# option.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nSEARCHENGINE           = YES\n\n# When the SERVER_BASED_SEARCH tag is enabled the search engine will be\n# implemented using a web server instead of a web client using Javascript. There\n# are two flavors of web server based searching depending on the EXTERNAL_SEARCH\n# setting. When disabled, doxygen will generate a PHP script for searching and\n# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing\n# and searching needs to be provided by external tools. See the section\n# \"External Indexing and Searching\" for details.\n# The default value is: NO.\n# This tag requires that the tag SEARCHENGINE is set to YES.\n\nSERVER_BASED_SEARCH    = NO\n\n# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP\n# script for searching. Instead the search results are written to an XML file\n# which needs to be processed by an external indexer. Doxygen will invoke an\n# external search engine pointed to by the SEARCHENGINE_URL option to obtain the\n# search results.\n#\n# Doxygen ships with an example indexer (doxyindexer) and search engine\n# (doxysearch.cgi) which are based on the open source search engine library\n# Xapian (see: https://xapian.org/).\n#\n# See the section \"External Indexing and Searching\" for details.\n# The default value is: NO.\n# This tag requires that the tag SEARCHENGINE is set to YES.\n\nEXTERNAL_SEARCH        = NO\n\n# The SEARCHENGINE_URL should point to a search engine hosted by a web server\n# which will return the search results when EXTERNAL_SEARCH is enabled.\n#\n# Doxygen ships with an example indexer (doxyindexer) and search engine\n# (doxysearch.cgi) which are based on the open source search engine library\n# Xapian (see: https://xapian.org/). See the section \"External Indexing and\n# Searching\" for details.\n# This tag requires that the tag SEARCHENGINE is set to YES.\n\nSEARCHENGINE_URL       =\n\n# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed\n# search data is written to a file for indexing by an external tool. With the\n# SEARCHDATA_FILE tag the name of this file can be specified.\n# The default file is: searchdata.xml.\n# This tag requires that the tag SEARCHENGINE is set to YES.\n\nSEARCHDATA_FILE        = searchdata.xml\n\n# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the\n# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is\n# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple\n# projects and redirect the results back to the right project.\n# This tag requires that the tag SEARCHENGINE is set to YES.\n\nEXTERNAL_SEARCH_ID     =\n\n# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen\n# projects other than the one defined by this configuration file, but that are\n# all added to the same external search index. Each project needs to have a\n# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of\n# to a relative location where the documentation can be found. The format is:\n# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...\n# This tag requires that the tag SEARCHENGINE is set to YES.\n\nEXTRA_SEARCH_MAPPINGS  =\n\n#---------------------------------------------------------------------------\n# Configuration options related to the LaTeX output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output.\n# The default value is: YES.\n\nGENERATE_LATEX         = NO\n\n# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a\n# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of\n# it.\n# The default directory is: latex.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_OUTPUT           = latex\n\n# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be\n# invoked.\n#\n# Note that when enabling USE_PDFLATEX this option is only used for generating\n# bitmaps for formulas in the HTML output, but not in the Makefile that is\n# written to the output directory.\n# The default file is: latex.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_CMD_NAME         = latex\n\n# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate\n# index for LaTeX.\n# The default file is: makeindex.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nMAKEINDEX_CMD_NAME     = makeindex\n\n# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX\n# documents. This may be useful for small projects and may help to save some\n# trees in general.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nCOMPACT_LATEX          = NO\n\n# The PAPER_TYPE tag can be used to set the paper type that is used by the\n# printer.\n# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x\n# 14 inches) and executive (7.25 x 10.5 inches).\n# The default value is: a4.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nPAPER_TYPE             = a4\n\n# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names\n# that should be included in the LaTeX output. The package can be specified just\n# by its name or with the correct syntax as to be used with the LaTeX\n# \\usepackage command. To get the times font for instance you can specify :\n# EXTRA_PACKAGES=times or EXTRA_PACKAGES={times}\n# To use the option intlimits with the amsmath package you can specify:\n# EXTRA_PACKAGES=[intlimits]{amsmath}\n# If left blank no extra packages will be included.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nEXTRA_PACKAGES         =\n\n# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the\n# generated LaTeX document. The header should contain everything until the first\n# chapter. If it is left blank doxygen will generate a standard header. See\n# section \"Doxygen usage\" for information on how to let doxygen write the\n# default header to a separate file.\n#\n# Note: Only use a user-defined header if you know what you are doing! The\n# following commands have a special meaning inside the header: $title,\n# $datetime, $date, $doxygenversion, $projectname, $projectnumber,\n# $projectbrief, $projectlogo. Doxygen will replace $title with the empty\n# string, for the replacement values of the other commands the user is referred\n# to HTML_HEADER.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_HEADER           =\n\n# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the\n# generated LaTeX document. The footer should contain everything after the last\n# chapter. If it is left blank doxygen will generate a standard footer. See\n# LATEX_HEADER for more information on how to generate a default footer and what\n# special commands can be used inside the footer.\n#\n# Note: Only use a user-defined footer if you know what you are doing!\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_FOOTER           =\n\n# The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined\n# LaTeX style sheets that are included after the standard style sheets created\n# by doxygen. Using this option one can overrule certain style aspects. Doxygen\n# will copy the style sheet files to the output directory.\n# Note: The order of the extra style sheet files is of importance (e.g. the last\n# style sheet in the list overrules the setting of the previous ones in the\n# list).\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_EXTRA_STYLESHEET =\n\n# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or\n# other source files which should be copied to the LATEX_OUTPUT output\n# directory. Note that the files will be copied as-is; there are no commands or\n# markers available.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_EXTRA_FILES      =\n\n# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is\n# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will\n# contain links (just like the HTML output) instead of page references. This\n# makes the output suitable for online browsing using a PDF viewer.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nPDF_HYPERLINKS         = YES\n\n# If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate\n# the PDF file directly from the LaTeX files. Set this option to YES, to get a\n# higher quality PDF documentation.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nUSE_PDFLATEX           = YES\n\n# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode\n# command to the generated LaTeX files. This will instruct LaTeX to keep running\n# if errors occur, instead of asking the user for help. This option is also used\n# when generating formulas in HTML.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_BATCHMODE        = NO\n\n# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the\n# index chapters (such as File Index, Compound Index, etc.) in the output.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_HIDE_INDICES     = NO\n\n# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source\n# code with syntax highlighting in the LaTeX output.\n#\n# Note that which sources are shown also depends on other settings such as\n# SOURCE_BROWSER.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_SOURCE_CODE      = NO\n\n# The LATEX_BIB_STYLE tag can be used to specify the style to use for the\n# bibliography, e.g. plainnat, or ieeetr. See\n# https://en.wikipedia.org/wiki/BibTeX and \\cite for more info.\n# The default value is: plain.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_BIB_STYLE        = plain\n\n# If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated\n# page will contain the date and time when the page was generated. Setting this\n# to NO can help when comparing the output of multiple runs.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_TIMESTAMP        = NO\n\n#---------------------------------------------------------------------------\n# Configuration options related to the RTF output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The\n# RTF output is optimized for Word 97 and may not look too pretty with other RTF\n# readers/editors.\n# The default value is: NO.\n\nGENERATE_RTF           = NO\n\n# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a\n# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of\n# it.\n# The default directory is: rtf.\n# This tag requires that the tag GENERATE_RTF is set to YES.\n\nRTF_OUTPUT             = rtf\n\n# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF\n# documents. This may be useful for small projects and may help to save some\n# trees in general.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_RTF is set to YES.\n\nCOMPACT_RTF            = NO\n\n# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will\n# contain hyperlink fields. The RTF file will contain links (just like the HTML\n# output) instead of page references. This makes the output suitable for online\n# browsing using Word or some other Word compatible readers that support those\n# fields.\n#\n# Note: WordPad (write) and others do not support links.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_RTF is set to YES.\n\nRTF_HYPERLINKS         = NO\n\n# Load stylesheet definitions from file. Syntax is similar to doxygen's config\n# file, i.e. a series of assignments. You only have to provide replacements,\n# missing definitions are set to their default value.\n#\n# See also section \"Doxygen usage\" for information on how to generate the\n# default style sheet that doxygen normally uses.\n# This tag requires that the tag GENERATE_RTF is set to YES.\n\nRTF_STYLESHEET_FILE    =\n\n# Set optional variables used in the generation of an RTF document. Syntax is\n# similar to doxygen's config file. A template extensions file can be generated\n# using doxygen -e rtf extensionFile.\n# This tag requires that the tag GENERATE_RTF is set to YES.\n\nRTF_EXTENSIONS_FILE    =\n\n# If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code\n# with syntax highlighting in the RTF output.\n#\n# Note that which sources are shown also depends on other settings such as\n# SOURCE_BROWSER.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_RTF is set to YES.\n\nRTF_SOURCE_CODE        = NO\n\n#---------------------------------------------------------------------------\n# Configuration options related to the man page output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for\n# classes and files.\n# The default value is: NO.\n\nGENERATE_MAN           = NO\n\n# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a\n# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of\n# it. A directory man3 will be created inside the directory specified by\n# MAN_OUTPUT.\n# The default directory is: man.\n# This tag requires that the tag GENERATE_MAN is set to YES.\n\nMAN_OUTPUT             = man\n\n# The MAN_EXTENSION tag determines the extension that is added to the generated\n# man pages. In case the manual section does not start with a number, the number\n# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is\n# optional.\n# The default value is: .3.\n# This tag requires that the tag GENERATE_MAN is set to YES.\n\nMAN_EXTENSION          = .3\n\n# The MAN_SUBDIR tag determines the name of the directory created within\n# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by\n# MAN_EXTENSION with the initial . removed.\n# This tag requires that the tag GENERATE_MAN is set to YES.\n\nMAN_SUBDIR             =\n\n# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it\n# will generate one additional man file for each entity documented in the real\n# man page(s). These additional files only source the real man page, but without\n# them the man command would be unable to find the correct page.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_MAN is set to YES.\n\nMAN_LINKS              = NO\n\n#---------------------------------------------------------------------------\n# Configuration options related to the XML output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that\n# captures the structure of the code including all documentation.\n# The default value is: NO.\n\nGENERATE_XML           = NO\n\n# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a\n# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of\n# it.\n# The default directory is: xml.\n# This tag requires that the tag GENERATE_XML is set to YES.\n\nXML_OUTPUT             = xml\n\n# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program\n# listings (including syntax highlighting and cross-referencing information) to\n# the XML output. Note that enabling this will significantly increase the size\n# of the XML output.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_XML is set to YES.\n\nXML_PROGRAMLISTING     = YES\n\n#---------------------------------------------------------------------------\n# Configuration options related to the DOCBOOK output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files\n# that can be used to generate PDF.\n# The default value is: NO.\n\nGENERATE_DOCBOOK       = NO\n\n# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.\n# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in\n# front of it.\n# The default directory is: docbook.\n# This tag requires that the tag GENERATE_DOCBOOK is set to YES.\n\nDOCBOOK_OUTPUT         = docbook\n\n# If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the\n# program listings (including syntax highlighting and cross-referencing\n# information) to the DOCBOOK output. Note that enabling this will significantly\n# increase the size of the DOCBOOK output.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_DOCBOOK is set to YES.\n\nDOCBOOK_PROGRAMLISTING = NO\n\n#---------------------------------------------------------------------------\n# Configuration options for the AutoGen Definitions output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an\n# AutoGen Definitions (see http://autogen.sourceforge.net/) file that captures\n# the structure of the code including all documentation. Note that this feature\n# is still experimental and incomplete at the moment.\n# The default value is: NO.\n\nGENERATE_AUTOGEN_DEF   = NO\n\n#---------------------------------------------------------------------------\n# Configuration options related to the Perl module output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module\n# file that captures the structure of the code including all documentation.\n#\n# Note that this feature is still experimental and incomplete at the moment.\n# The default value is: NO.\n\nGENERATE_PERLMOD       = NO\n\n# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary\n# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI\n# output from the Perl module output.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_PERLMOD is set to YES.\n\nPERLMOD_LATEX          = NO\n\n# If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely\n# formatted so it can be parsed by a human reader. This is useful if you want to\n# understand what is going on. On the other hand, if this tag is set to NO, the\n# size of the Perl module output will be much smaller and Perl will parse it\n# just the same.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_PERLMOD is set to YES.\n\nPERLMOD_PRETTY         = YES\n\n# The names of the make variables in the generated doxyrules.make file are\n# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful\n# so different doxyrules.make files included by the same Makefile don't\n# overwrite each other's variables.\n# This tag requires that the tag GENERATE_PERLMOD is set to YES.\n\nPERLMOD_MAKEVAR_PREFIX =\n\n#---------------------------------------------------------------------------\n# Configuration options related to the preprocessor\n#---------------------------------------------------------------------------\n\n# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all\n# C-preprocessor directives found in the sources and include files.\n# The default value is: YES.\n\nENABLE_PREPROCESSING   = YES\n\n# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names\n# in the source code. If set to NO, only conditional compilation will be\n# performed. Macro expansion can be done in a controlled way by setting\n# EXPAND_ONLY_PREDEF to YES.\n# The default value is: NO.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nMACRO_EXPANSION        = NO\n\n# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then\n# the macro expansion is limited to the macros specified with the PREDEFINED and\n# EXPAND_AS_DEFINED tags.\n# The default value is: NO.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nEXPAND_ONLY_PREDEF     = NO\n\n# If the SEARCH_INCLUDES tag is set to YES, the include files in the\n# INCLUDE_PATH will be searched if a #include is found.\n# The default value is: YES.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nSEARCH_INCLUDES        = YES\n\n# The INCLUDE_PATH tag can be used to specify one or more directories that\n# contain include files that are not input files but should be processed by the\n# preprocessor.\n# This tag requires that the tag SEARCH_INCLUDES is set to YES.\n\nINCLUDE_PATH           =\n\n# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard\n# patterns (like *.h and *.hpp) to filter out the header-files in the\n# directories. If left blank, the patterns specified with FILE_PATTERNS will be\n# used.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nINCLUDE_FILE_PATTERNS  =\n\n# The PREDEFINED tag can be used to specify one or more macro names that are\n# defined before the preprocessor is started (similar to the -D option of e.g.\n# gcc). The argument of the tag is a list of macros of the form: name or\n# name=definition (no spaces). If the definition and the \"=\" are omitted, \"=1\"\n# is assumed. To prevent a macro definition from being undefined via #undef or\n# recursively expanded use the := operator instead of the = operator.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nPREDEFINED             = NON_MATCHING AVOID_UB\n\n# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this\n# tag can be used to specify a list of macro names that should be expanded. The\n# macro definition that is found in the sources will be used. Use the PREDEFINED\n# tag if you want to use a different macro definition that overrules the\n# definition found in the source code.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nEXPAND_AS_DEFINED      =\n\n# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will\n# remove all references to function-like macros that are alone on a line, have\n# an all uppercase name, and do not end with a semicolon. Such function macros\n# are typically used for boiler-plate code, and will confuse the parser if not\n# removed.\n# The default value is: YES.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nSKIP_FUNCTION_MACROS   = YES\n\n#---------------------------------------------------------------------------\n# Configuration options related to external references\n#---------------------------------------------------------------------------\n\n# The TAGFILES tag can be used to specify one or more tag files. For each tag\n# file the location of the external documentation should be added. The format of\n# a tag file without this location is as follows:\n# TAGFILES = file1 file2 ...\n# Adding location for the tag files is done as follows:\n# TAGFILES = file1=loc1 \"file2 = loc2\" ...\n# where loc1 and loc2 can be relative or absolute paths or URLs. See the\n# section \"Linking to external documentation\" for more information about the use\n# of tag files.\n# Note: Each tag file must have a unique name (where the name does NOT include\n# the path). If a tag file is not located in the directory in which doxygen is\n# run, you must also specify the path to the tagfile here.\n\nTAGFILES               =\n\n# When a file name is specified after GENERATE_TAGFILE, doxygen will create a\n# tag file that is based on the input files it reads. See section \"Linking to\n# external documentation\" for more information about the usage of tag files.\n\nGENERATE_TAGFILE       =\n\n# If the ALLEXTERNALS tag is set to YES, all external class will be listed in\n# the class index. If set to NO, only the inherited external classes will be\n# listed.\n# The default value is: NO.\n\nALLEXTERNALS           = NO\n\n# If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed\n# in the modules index. If set to NO, only the current project's groups will be\n# listed.\n# The default value is: YES.\n\nEXTERNAL_GROUPS        = YES\n\n# If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in\n# the related pages index. If set to NO, only the current project's pages will\n# be listed.\n# The default value is: YES.\n\nEXTERNAL_PAGES         = YES\n\n# The PERL_PATH should be the absolute path and name of the perl script\n# interpreter (i.e. the result of 'which perl').\n# The default file (with absolute path) is: /usr/bin/perl.\n\nPERL_PATH              = /usr/bin/perl\n\n#---------------------------------------------------------------------------\n# Configuration options related to the dot tool\n#---------------------------------------------------------------------------\n\n# If the CLASS_DIAGRAMS tag is set to YES, doxygen will generate a class diagram\n# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to\n# NO turns the diagrams off. Note that this option also works with HAVE_DOT\n# disabled, but it is recommended to install and use dot, since it yields more\n# powerful graphs.\n# The default value is: YES.\n\nCLASS_DIAGRAMS         = YES\n\n# You can define message sequence charts within doxygen comments using the \\msc\n# command. Doxygen will then run the mscgen tool (see:\n# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the\n# documentation. The MSCGEN_PATH tag allows you to specify the directory where\n# the mscgen tool resides. If left empty the tool is assumed to be found in the\n# default search path.\n\nMSCGEN_PATH            =\n\n# You can include diagrams made with dia in doxygen documentation. Doxygen will\n# then run dia to produce the diagram and insert it in the documentation. The\n# DIA_PATH tag allows you to specify the directory where the dia binary resides.\n# If left empty dia is assumed to be found in the default search path.\n\nDIA_PATH               =\n\n# If set to YES the inheritance and collaboration graphs will hide inheritance\n# and usage relations if the target is undocumented or is not a class.\n# The default value is: YES.\n\nHIDE_UNDOC_RELATIONS   = YES\n\n# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is\n# available from the path. This tool is part of Graphviz (see:\n# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent\n# Bell Labs. The other options in this section have no effect if this option is\n# set to NO\n# The default value is: NO.\n\nHAVE_DOT               = NO\n\n# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed\n# to run in parallel. When set to 0 doxygen will base this on the number of\n# processors available in the system. You can set it explicitly to a value\n# larger than 0 to get control over the balance between CPU load and processing\n# speed.\n# Minimum value: 0, maximum value: 32, default value: 0.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_NUM_THREADS        = 0\n\n# When you want a differently looking font in the dot files that doxygen\n# generates you can specify the font name using DOT_FONTNAME. You need to make\n# sure dot is able to find the font, which can be done by putting it in a\n# standard location or by setting the DOTFONTPATH environment variable or by\n# setting DOT_FONTPATH to the directory containing the font.\n# The default value is: Helvetica.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_FONTNAME           = Helvetica\n\n# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of\n# dot graphs.\n# Minimum value: 4, maximum value: 24, default value: 10.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_FONTSIZE           = 10\n\n# By default doxygen will tell dot to use the default font as specified with\n# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set\n# the path where dot can find it using this tag.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_FONTPATH           =\n\n# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for\n# each documented class showing the direct and indirect inheritance relations.\n# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nCLASS_GRAPH            = YES\n\n# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a\n# graph for each documented class showing the direct and indirect implementation\n# dependencies (inheritance, containment, and class references variables) of the\n# class with other documented classes.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nCOLLABORATION_GRAPH    = YES\n\n# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for\n# groups, showing the direct groups dependencies.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nGROUP_GRAPHS           = YES\n\n# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and\n# collaboration diagrams in a style similar to the OMG's Unified Modeling\n# Language.\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nUML_LOOK               = NO\n\n# If the UML_LOOK tag is enabled, the fields and methods are shown inside the\n# class node. If there are many fields or methods and many nodes the graph may\n# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the\n# number of items for each type to make the size more manageable. Set this to 0\n# for no limit. Note that the threshold may be exceeded by 50% before the limit\n# is enforced. So when you set the threshold to 10, up to 15 fields may appear,\n# but if the number exceeds 15, the total amount of fields shown is limited to\n# 10.\n# Minimum value: 0, maximum value: 100, default value: 10.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nUML_LIMIT_NUM_FIELDS   = 10\n\n# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and\n# collaboration graphs will show the relations between templates and their\n# instances.\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nTEMPLATE_RELATIONS     = NO\n\n# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to\n# YES then doxygen will generate a graph for each documented file showing the\n# direct and indirect include dependencies of the file with other documented\n# files.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nINCLUDE_GRAPH          = YES\n\n# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are\n# set to YES then doxygen will generate a graph for each documented file showing\n# the direct and indirect include dependencies of the file with other documented\n# files.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nINCLUDED_BY_GRAPH      = YES\n\n# If the CALL_GRAPH tag is set to YES then doxygen will generate a call\n# dependency graph for every global function or class method.\n#\n# Note that enabling this option will significantly increase the time of a run.\n# So in most cases it will be better to enable call graphs for selected\n# functions only using the \\callgraph command. Disabling a call graph can be\n# accomplished by means of the command \\hidecallgraph.\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nCALL_GRAPH             = NO\n\n# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller\n# dependency graph for every global function or class method.\n#\n# Note that enabling this option will significantly increase the time of a run.\n# So in most cases it will be better to enable caller graphs for selected\n# functions only using the \\callergraph command. Disabling a caller graph can be\n# accomplished by means of the command \\hidecallergraph.\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nCALLER_GRAPH           = NO\n\n# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical\n# hierarchy of all classes instead of a textual one.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nGRAPHICAL_HIERARCHY    = YES\n\n# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the\n# dependencies a directory has on other directories in a graphical way. The\n# dependency relations are determined by the #include relations between the\n# files in the directories.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDIRECTORY_GRAPH        = YES\n\n# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images\n# generated by dot. For an explanation of the image formats see the section\n# output formats in the documentation of the dot tool (Graphviz (see:\n# http://www.graphviz.org/)).\n# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order\n# to make the SVG files visible in IE 9+ (other browsers do not have this\n# requirement).\n# Possible values are: png, jpg, gif, svg, png:gd, png:gd:gd, png:cairo,\n# png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and\n# png:gdiplus:gdiplus.\n# The default value is: png.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_IMAGE_FORMAT       = png\n\n# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to\n# enable generation of interactive SVG images that allow zooming and panning.\n#\n# Note that this requires a modern browser other than Internet Explorer. Tested\n# and working are Firefox, Chrome, Safari, and Opera.\n# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make\n# the SVG files visible. Older versions of IE do not have SVG support.\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nINTERACTIVE_SVG        = NO\n\n# The DOT_PATH tag can be used to specify the path where the dot tool can be\n# found. If left blank, it is assumed the dot tool can be found in the path.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_PATH               =\n\n# The DOTFILE_DIRS tag can be used to specify one or more directories that\n# contain dot files that are included in the documentation (see the \\dotfile\n# command).\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOTFILE_DIRS           =\n\n# The MSCFILE_DIRS tag can be used to specify one or more directories that\n# contain msc files that are included in the documentation (see the \\mscfile\n# command).\n\nMSCFILE_DIRS           =\n\n# The DIAFILE_DIRS tag can be used to specify one or more directories that\n# contain dia files that are included in the documentation (see the \\diafile\n# command).\n\nDIAFILE_DIRS           =\n\n# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the\n# path where java can find the plantuml.jar file. If left blank, it is assumed\n# PlantUML is not used or called during a preprocessing step. Doxygen will\n# generate a warning when it encounters a \\startuml command in this case and\n# will not generate output for the diagram.\n\nPLANTUML_JAR_PATH      =\n\n# When using plantuml, the PLANTUML_CFG_FILE tag can be used to specify a\n# configuration file for plantuml.\n\nPLANTUML_CFG_FILE      =\n\n# When using plantuml, the specified paths are searched for files specified by\n# the !include statement in a plantuml block.\n\nPLANTUML_INCLUDE_PATH  =\n\n# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes\n# that will be shown in the graph. If the number of nodes in a graph becomes\n# larger than this value, doxygen will truncate the graph, which is visualized\n# by representing a node as a red box. Note that doxygen if the number of direct\n# children of the root node in a graph is already larger than\n# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that\n# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.\n# Minimum value: 0, maximum value: 10000, default value: 50.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_GRAPH_MAX_NODES    = 50\n\n# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs\n# generated by dot. A depth value of 3 means that only nodes reachable from the\n# root by following a path via at most 3 edges will be shown. Nodes that lay\n# further from the root node will be omitted. Note that setting this option to 1\n# or 2 may greatly reduce the computation time needed for large code bases. Also\n# note that the size of a graph can be further restricted by\n# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.\n# Minimum value: 0, maximum value: 1000, default value: 0.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nMAX_DOT_GRAPH_DEPTH    = 0\n\n# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent\n# background. This is disabled by default, because dot on Windows does not seem\n# to support this out of the box.\n#\n# Warning: Depending on the platform used, enabling this option may lead to\n# badly anti-aliased labels on the edges of a graph (i.e. they become hard to\n# read).\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_TRANSPARENT        = NO\n\n# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output\n# files in one run (i.e. multiple -o and -T options on the command line). This\n# makes dot run faster, but since only newer versions of dot (>1.8.10) support\n# this, this feature is disabled by default.\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_MULTI_TARGETS      = NO\n\n# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page\n# explaining the meaning of the various boxes and arrows in the dot generated\n# graphs.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nGENERATE_LEGEND        = YES\n\n# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate dot\n# files that are used to generate the various graphs.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_CLEANUP            = YES\n"
  },
  {
    "path": "Jenkinsfile",
    "content": "pipeline {\n  agent any\n  stages {\n    stage('Build Tools') {\n      steps {\n        sh 'make -j4 -C tools/'\n      }\n    }\n    stage('Extract Assets') {\n      steps {\n        sh 'ln -s \"$ROMS_DIR/Super Mario 64 (J) [!].z64\" baserom.jp.z64'\n        sh 'ln -s \"$ROMS_DIR/Super Mario 64 (U) [!].z64\" baserom.us.z64'\n        sh 'ln -s \"$ROMS_DIR/Super Mario 64 (E) (M3) [!].z64\" baserom.eu.z64'\n        sh 'ln -s \"$ROMS_DIR/Super Mario 64 - Shindou Edition (J) [!].z64\" baserom.sh.z64'\n        sh 'ln -s \"$ROMS_DIR/Super Mario 64 - iQue (Ch).z64\" baserom.cn.z64'\n        // verify no assets were committed to repo\n        sh '[ -z \"$(find {actors,levels,textures}/ -name \\'*.png\\')\" ]'\n        sh '[ -z \"$(find assets/ -name \\'*.m64\\' -or \\'*.bin\\')\" ]'\n        sh './extract_assets.py jp us eu sh cn'\n      }\n    }\n    stage('Build US Source') {\n      steps {\n        sh 'make -j4 VERSION=us VERBOSE=1 COLOR=0'\n      }\n    }\n    stage('Build SH Source') {\n      steps {\n        sh 'make -j4 VERSION=sh VERBOSE=1 COLOR=0'\n      }\n    }\n    stage('Build EU Source') {\n      steps {\n        sh 'make -j4 VERSION=eu VERBOSE=1 COLOR=0'\n      }\n    }\n    stage('Build JP Source') {\n      steps {\n        sh 'make -j4 VERSION=jp VERBOSE=1 COLOR=0'\n      }\n    }\n    stage('Build CN Source') {\n      steps {\n        sh 'make -j4 VERSION=cn VERBOSE=1 COLOR=0 COMPARE=0'\n      }\n    }\n    stage('Test Enhancements') {\n      steps {\n        sh '''\n          set -e\n          for f in enhancements/*.patch\n          do\n            git clean -fd .\n            git checkout -- .\n            echo 'y' | tools/apply_patch.sh \"$f\"\n            make -j4 VERSION=us COMPARE=0 VERBOSE=1\n          done\n        '''\n      }\n    }\n  }\n  environment {\n    QEMU_IRIX = credentials('qemu-irix')\n    ROMS_DIR = credentials('roms')\n  }\n}\n"
  },
  {
    "path": "LICENSE.md",
    "content": "Creative Commons Legal Code\n\nCC0 1.0 Universal\n\n    CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE\n    LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN\n    ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS\n    INFORMATION ON AN \"AS-IS\" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES\n    REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS\n    PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM\n    THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED\n    HEREUNDER.\n\nStatement of Purpose\n\nThe laws of most jurisdictions throughout the world automatically confer\nexclusive Copyright and Related Rights (defined below) upon the creator\nand subsequent owner(s) (each and all, an \"owner\") of an original work of\nauthorship and/or a database (each, a \"Work\").\n\nCertain owners wish to permanently relinquish those rights to a Work for\nthe purpose of contributing to a commons of creative, cultural and\nscientific works (\"Commons\") that the public can reliably and without fear\nof later claims of infringement build upon, modify, incorporate in other\nworks, reuse and redistribute as freely as possible in any form whatsoever\nand for any purposes, including without limitation commercial purposes.\nThese owners may contribute to the Commons to promote the ideal of a free\nculture and the further production of creative, cultural and scientific\nworks, or to gain reputation or greater distribution for their Work in\npart through the use and efforts of others.\n\nFor these and/or other purposes and motivations, and without any\nexpectation of additional consideration or compensation, the person\nassociating CC0 with a Work (the \"Affirmer\"), to the extent that he or she\nis an owner of Copyright and Related Rights in the Work, voluntarily\nelects to apply CC0 to the Work and publicly distribute the Work under its\nterms, with knowledge of his or her Copyright and Related Rights in the\nWork and the meaning and intended legal effect of CC0 on those rights.\n\n1. Copyright and Related Rights. A Work made available under CC0 may be\nprotected by copyright and related or neighboring rights (\"Copyright and\nRelated Rights\"). Copyright and Related Rights include, but are not\nlimited to, the following:\n\n  i. the right to reproduce, adapt, distribute, perform, display,\n     communicate, and translate a Work;\n ii. moral rights retained by the original author(s) and/or performer(s);\niii. publicity and privacy rights pertaining to a person's image or\n     likeness depicted in a Work;\n iv. rights protecting against unfair competition in regards to a Work,\n     subject to the limitations in paragraph 4(a), below;\n  v. rights protecting the extraction, dissemination, use and reuse of data\n     in a Work;\n vi. database rights (such as those arising under Directive 96/9/EC of the\n     European Parliament and of the Council of 11 March 1996 on the legal\n     protection of databases, and under any national implementation\n     thereof, including any amended or successor version of such\n     directive); and\nvii. other similar, equivalent or corresponding rights throughout the\n     world based on applicable law or treaty, and any national\n     implementations thereof.\n\n2. Waiver. To the greatest extent permitted by, but not in contravention\nof, applicable law, Affirmer hereby overtly, fully, permanently,\nirrevocably and unconditionally waives, abandons, and surrenders all of\nAffirmer's Copyright and Related Rights and associated claims and causes\nof action, whether now known or unknown (including existing as well as\nfuture claims and causes of action), in the Work (i) in all territories\nworldwide, (ii) for the maximum duration provided by applicable law or\ntreaty (including future time extensions), (iii) in any current or future\nmedium and for any number of copies, and (iv) for any purpose whatsoever,\nincluding without limitation commercial, advertising or promotional\npurposes (the \"Waiver\"). Affirmer makes the Waiver for the benefit of each\nmember of the public at large and to the detriment of Affirmer's heirs and\nsuccessors, fully intending that such Waiver shall not be subject to\nrevocation, rescission, cancellation, termination, or any other legal or\nequitable action to disrupt the quiet enjoyment of the Work by the public\nas contemplated by Affirmer's express Statement of Purpose.\n\n3. Public License Fallback. Should any part of the Waiver for any reason\nbe judged legally invalid or ineffective under applicable law, then the\nWaiver shall be preserved to the maximum extent permitted taking into\naccount Affirmer's express Statement of Purpose. In addition, to the\nextent the Waiver is so judged Affirmer hereby grants to each affected\nperson a royalty-free, non transferable, non sublicensable, non exclusive,\nirrevocable and unconditional license to exercise Affirmer's Copyright and\nRelated Rights in the Work (i) in all territories worldwide, (ii) for the\nmaximum duration provided by applicable law or treaty (including future\ntime extensions), (iii) in any current or future medium and for any number\nof copies, and (iv) for any purpose whatsoever, including without\nlimitation commercial, advertising or promotional purposes (the\n\"License\"). The License shall be deemed effective as of the date CC0 was\napplied by Affirmer to the Work. Should any part of the License for any\nreason be judged legally invalid or ineffective under applicable law, such\npartial invalidity or ineffectiveness shall not invalidate the remainder\nof the License, and in such case Affirmer hereby affirms that he or she\nwill not (i) exercise any of his or her remaining Copyright and Related\nRights in the Work or (ii) assert any associated claims and causes of\naction with respect to the Work, in either case contrary to Affirmer's\nexpress Statement of Purpose.\n\n4. Limitations and Disclaimers.\n\n a. No trademark or patent rights held by Affirmer are waived, abandoned,\n    surrendered, licensed or otherwise affected by this document.\n b. Affirmer offers the Work as-is and makes no representations or\n    warranties of any kind concerning the Work, express, implied,\n    statutory or otherwise, including without limitation warranties of\n    title, merchantability, fitness for a particular purpose, non\n    infringement, or the absence of latent or other defects, accuracy, or\n    the present or absence of errors, whether or not discoverable, all to\n    the greatest extent permissible under applicable law.\n c. Affirmer disclaims responsibility for clearing rights of other persons\n    that may apply to the Work or any use thereof, including without\n    limitation any person's Copyright and Related Rights in the Work.\n    Further, Affirmer disclaims responsibility for obtaining any necessary\n    consents, permissions or other rights required for any use of the\n    Work.\n d. Affirmer understands and acknowledges that Creative Commons is not a\n    party to this document and has no duty or obligation with respect to\n    this CC0 or use of the Work.\n"
  },
  {
    "path": "Makefile",
    "content": "# Makefile to rebuild SM64 split image\n\ninclude util.mk\n\n# Default target\ndefault: all\n\n# Preprocessor definitions\nDEFINES :=\n\n#==============================================================================#\n# Build Options                                                                #\n#==============================================================================#\n\n# These options can either be set by building with 'make SETTING=value'.\n# 'make clean' may be required first.\n\n# Build for the N64 (turn this off for ports)\nTARGET_N64 ?= 1\n\n\n# COMPILER - selects the C compiler to use\n#   ido - uses the SGI IRIS Development Option compiler, which is used to build\n#         an original matching N64 ROM\n#   gcc - uses the GNU C Compiler\nCOMPILER ?= ido\n$(eval $(call validate-option,COMPILER,ido gcc))\n\n\n# VERSION - selects the version of the game to build\n#   jp - builds the 1996 Japanese version\n#   us - builds the 1996 North American version\n#   eu - builds the 1997 PAL version\n#   sh - builds the 1997 Japanese Shindou version, with rumble pak support\n#   cn - builds the 2003 Chinese iQue version\nVERSION ?= us\n$(eval $(call validate-option,VERSION,jp us eu sh cn))\n\nifeq      ($(VERSION),jp)\n  DEFINES   += VERSION_JP=1\n  OPT_FLAGS := -g\n  GRUCODE   ?= f3d_old\n  VERSION_JP_US  ?= true\n  VERSION_SH_CN  ?= false\nelse ifeq ($(VERSION),us)\n  DEFINES   += VERSION_US=1\n  OPT_FLAGS := -g\n  GRUCODE   ?= f3d_old\n  VERSION_JP_US  ?= true\n  VERSION_SH_CN  ?= false\nelse ifeq ($(VERSION),eu)\n  DEFINES   += VERSION_EU=1\n  OPT_FLAGS := -O2\n  GRUCODE   ?= f3d_new\n  VERSION_JP_US  ?= false\n  VERSION_SH_CN  ?= false\nelse ifeq ($(VERSION),sh)\n  DEFINES   += VERSION_SH=1\n  OPT_FLAGS := -O2\n  GRUCODE   ?= f3d_new\n  VERSION_JP_US  ?= false\n  VERSION_SH_CN  ?= true\nelse ifeq ($(VERSION),cn)\n  DEFINES   += VERSION_CN=1\n  OPT_FLAGS := -O2\n  GRUCODE   ?= f3d_new\n  VERSION_JP_US ?= false\n  VERSION_SH_CN  ?= true\nendif\n\nTARGET := sm64.$(VERSION)\n\n\n# GRUCODE - selects which RSP microcode to use.\n#   f3d_old - default for JP and US versions\n#   f3d_new - default for EU and Shindou versions\n#   f3dex   -\n#   f3dex2  -\n#   f3dzex  - newer, experimental microcode used in Animal Crossing\n$(eval $(call validate-option,GRUCODE,f3d_old f3dex f3dex2 f3d_new f3dzex))\n\nifeq      ($(GRUCODE),f3d_old)\n  DEFINES += F3D_OLD=1\nelse ifeq ($(GRUCODE),f3d_new) # Fast3D 2.0H\n  DEFINES += F3D_NEW=1\nelse ifeq ($(GRUCODE),f3dex) # Fast3DEX\n  DEFINES += F3DEX_GBI=1 F3DEX_GBI_SHARED=1\nelse ifeq ($(GRUCODE), f3dex2) # Fast3DEX2\n  DEFINES += F3DEX_GBI_2=1 F3DEX_GBI_SHARED=1\nelse ifeq ($(GRUCODE),f3dzex) # Fast3DZEX (2.0J / Animal Forest - Dōbutsu no Mori)\n  $(warning Fast3DZEX is experimental. Try at your own risk.)\n  DEFINES += F3DZEX_GBI_2=1 F3DEX_GBI_2=1 F3DEX_GBI_SHARED=1\nendif\n\n\n# USE_QEMU_IRIX - when ido is selected, select which way to emulate IRIX programs\n#   1 - use qemu-irix\n#   0 - statically recompile the IRIX programs\nUSE_QEMU_IRIX ?= 0\n$(eval $(call validate-option,USE_QEMU_IRIX,0 1))\n\nifeq      ($(COMPILER),ido)\n  ifeq ($(USE_QEMU_IRIX),1)\n    # Verify that qemu-irix exists\n    QEMU_IRIX ?= $(call find-command,qemu-irix)\n    ifeq (, $(QEMU_IRIX))\n      $(error Using the IDO compiler requires qemu-irix. Please install qemu-irix package or set the QEMU_IRIX environment variable to the full qemu-irix binary path)\n    endif\n  endif\n\n  MIPSISET := -mips2\nelse ifeq ($(COMPILER),gcc)\n  NON_MATCHING := 1\n  MIPSISET     := -mips3\n  OPT_FLAGS    := -O2\nendif\n\n\n# NON_MATCHING - whether to build a matching, identical copy of the ROM\n#   1 - enable some alternate, more portable code that does not produce a matching ROM\n#   0 - build a matching ROM\nNON_MATCHING ?= 0\n$(eval $(call validate-option,NON_MATCHING,0 1))\n\nifeq ($(TARGET_N64),0)\n  NON_MATCHING := 1\nendif\n\nifeq ($(NON_MATCHING),1)\n  DEFINES += NON_MATCHING=1 AVOID_UB=1\n  COMPARE := 0\nendif\n\n\n# COMPARE - whether to verify the SHA-1 hash of the ROM after building\n#   1 - verifies the SHA-1 hash of the selected version of the game\n#   0 - does not verify the hash\nCOMPARE ?= 1\n$(eval $(call validate-option,COMPARE,0 1))\n\nTARGET_STRING := sm64.$(VERSION).$(GRUCODE)\n# If non-default settings were chosen, disable COMPARE\nifeq ($(filter $(TARGET_STRING), sm64.jp.f3d_old sm64.us.f3d_old sm64.eu.f3d_new sm64.sh.f3d_new sm64.cn.f3d_new),)\n  COMPARE := 0\nendif\n\n# Whether to hide commands or not\nVERBOSE ?= 0\nifeq ($(VERBOSE),0)\n  V := @\nendif\n\n# Whether to colorize build messages\nCOLOR ?= 1\n\n# display selected options unless 'make clean' or 'make distclean' is run\nifeq ($(filter clean distclean,$(MAKECMDGOALS)),)\n  $(info ==== Build Options ====)\n  $(info Version:        $(VERSION))\n  $(info Microcode:      $(GRUCODE))\n  $(info Target:         $(TARGET))\n  ifeq ($(COMPARE),1)\n    $(info Compare ROM:    yes)\n  else\n    $(info Compare ROM:    no)\n  endif\n  ifeq ($(NON_MATCHING),1)\n    $(info Build Matching: no)\n  else\n    $(info Build Matching: yes)\n  endif\n  $(info =======================)\nendif\n\nDEFINES += _FINALROM=1\n\n#==============================================================================#\n# Universal Dependencies                                                       #\n#==============================================================================#\n\nTOOLS_DIR := tools\n\n# (This is a bit hacky, but a lot of rules implicitly depend\n# on tools and assets, and we use directory globs further down\n# in the makefile that we want should cover assets.)\n\nPYTHON := python3\n\nifeq ($(filter clean distclean print-%,$(MAKECMDGOALS)),)\n\n  # Make sure assets exist\n  NOEXTRACT ?= 0\n  ifeq ($(NOEXTRACT),0)\n    DUMMY != $(PYTHON) extract_assets.py $(VERSION) >&2 || echo FAIL\n    ifeq ($(DUMMY),FAIL)\n      $(error Failed to extract assets)\n    endif\n  endif\n\n  # Make tools if out of date\n  $(info Building general tools...)\n  DUMMY != $(MAKE) -s -C $(TOOLS_DIR) $(if $(filter-out ido0,$(COMPILER)$(USE_QEMU_IRIX)),all-except-recomp,) >&2 || echo FAIL\n    ifeq ($(DUMMY),FAIL)\n      $(error Failed to build tools)\n    endif\n  $(info Building sm64tools...)\n  DUMMY != $(MAKE) -s -C $(TOOLS_DIR)/sm64tools $(if $(filter-out ido0,$(COMPILER)$(USE_QEMU_IRIX)),) >&2 || echo FAIL\n    ifeq ($(DUMMY),FAIL)\n      $(error Failed to build tools)\n    endif\n  $(info Building ROM...)\n\nendif\n\n\n#==============================================================================#\n# Target Executable and Sources                                                #\n#==============================================================================#\n\nBUILD_DIR_BASE := build\n# BUILD_DIR is the location where all build artifacts are placed\nBUILD_DIR      := $(BUILD_DIR_BASE)/$(VERSION)\nROM            := $(BUILD_DIR)/$(TARGET).z64\nELF            := $(BUILD_DIR)/$(TARGET).elf\nLIBULTRA       := $(BUILD_DIR)/libultra.a\nLD_SCRIPT      := sm64.ld\nCHARMAP        := charmap.txt\nCHARMAP_DEBUG  := charmap.debug.txt\nMIO0_DIR       := $(BUILD_DIR)/bin\nSOUND_BIN_DIR  := $(BUILD_DIR)/sound\nTEXTURE_DIR    := textures\nACTOR_DIR      := actors\nLEVEL_DIRS     := $(patsubst levels/%,%,$(dir $(wildcard levels/*/header.h)))\n\n# Directories containing source files\nSRC_DIRS := src src/engine src/game src/audio src/menu src/buffers actors levels bin data assets asm lib sound\nBIN_DIRS := bin bin/$(VERSION)\n\nifeq ($(VERSION),cn)\n  LIBGCC_SRC_DIRS += lib/src/libgcc\nendif\n\nULTRA_SRC_DIRS := lib/src lib/src/math lib/asm lib/data\nULTRA_BIN_DIRS := lib/bin\n\nGODDARD_SRC_DIRS := src/goddard src/goddard/dynlists\n\n# File dependencies and variables for specific files\ninclude Makefile.split\n\n# Source code files\nLEVEL_C_FILES     := $(wildcard levels/*/leveldata.c) $(wildcard levels/*/script.c) $(wildcard levels/*/geo.c)\nC_FILES           := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.c)) $(LEVEL_C_FILES)\nS_FILES           := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.s))\nULTRA_C_FILES     := $(foreach dir,$(ULTRA_SRC_DIRS),$(wildcard $(dir)/*.c))\nGODDARD_C_FILES   := $(foreach dir,$(GODDARD_SRC_DIRS),$(wildcard $(dir)/*.c))\nULTRA_S_FILES     := $(foreach dir,$(ULTRA_SRC_DIRS),$(wildcard $(dir)/*.s))\nLIBGCC_C_FILES    := $(foreach dir,$(LIBGCC_SRC_DIRS),$(wildcard $(dir)/*.c))\nGENERATED_C_FILES := $(BUILD_DIR)/assets/mario_anim_data.c $(BUILD_DIR)/assets/demo_data.c\n\n# Sound files\nSOUND_BANK_FILES    := $(wildcard sound/sound_banks/*.json)\nSOUND_SAMPLE_DIRS   := $(wildcard sound/samples/*)\nSOUND_SAMPLE_AIFFS  := $(foreach dir,$(SOUND_SAMPLE_DIRS),$(wildcard $(dir)/*.aiff))\nSOUND_SAMPLE_TABLES := $(foreach file,$(SOUND_SAMPLE_AIFFS),$(BUILD_DIR)/$(file:.aiff=.table))\nSOUND_SAMPLE_AIFCS  := $(foreach file,$(SOUND_SAMPLE_AIFFS),$(BUILD_DIR)/$(file:.aiff=.aifc))\nifeq ($(VERSION),cn)\n  SOUND_SEQUENCE_DIRS := sound/sequences sound/sequences/sh\nelse\n  SOUND_SEQUENCE_DIRS := sound/sequences sound/sequences/$(VERSION)\nendif\n# all .m64 files in SOUND_SEQUENCE_DIRS, plus all .m64 files that are generated from .s files in SOUND_SEQUENCE_DIRS\nSOUND_SEQUENCE_FILES := \\\n  $(foreach dir,$(SOUND_SEQUENCE_DIRS),\\\n    $(wildcard $(dir)/*.m64) \\\n    $(foreach file,$(wildcard $(dir)/*.s),$(BUILD_DIR)/$(file:.s=.m64)) \\\n  )\n\n# Object files\nO_FILES := $(foreach file,$(C_FILES),$(BUILD_DIR)/$(file:.c=.o)) \\\n           $(foreach file,$(S_FILES),$(BUILD_DIR)/$(file:.s=.o)) \\\n           $(foreach file,$(GENERATED_C_FILES),$(file:.c=.o))\n\nULTRA_O_FILES := $(foreach file,$(ULTRA_S_FILES),$(BUILD_DIR)/$(file:.s=.o)) \\\n                 $(foreach file,$(ULTRA_C_FILES),$(BUILD_DIR)/$(file:.c=.o))\n\nGODDARD_O_FILES := $(foreach file,$(GODDARD_C_FILES),$(BUILD_DIR)/$(file:.c=.o))\n\nLIBGCC_O_FILES := $(foreach file,$(LIBGCC_C_FILES),$(BUILD_DIR)/$(file:.c=.o))\n\n# Automatic dependency files\nDEP_FILES := $(O_FILES:.o=.d) $(ULTRA_O_FILES:.o=.d) $(GODDARD_O_FILES:.o=.d) $(LIBGCC_O_FILES:.o=.d) $(BUILD_DIR)/$(LD_SCRIPT).d\n\n# Files with GLOBAL_ASM blocks\nifeq ($(NON_MATCHING),0)\n  GLOBAL_ASM_C_FILES != grep -rl 'GLOBAL_ASM(' $(wildcard src/**/*.c)\nGLOBAL_ASM_O_FILES = $(foreach file,$(GLOBAL_ASM_C_FILES),$(BUILD_DIR)/$(file:.c=.o))\nGLOBAL_ASM_DEP = $(BUILD_DIR)/src/audio/non_matching_dep\nendif\n\n\n#==============================================================================#\n# Compiler Options                                                             #\n#==============================================================================#\n\nIQUE_EGCS_PATH := $(TOOLS_DIR)/ique_egcs\nIQUE_LD_PATH := $(TOOLS_DIR)/ique_ld\n\n# detect prefix for MIPS toolchain\nifneq      ($(call find-command,mips-linux-gnu-ld),)\n  CROSS := mips-linux-gnu-\nelse ifneq ($(call find-command,mips64-linux-gnu-ld),)\n  CROSS := mips64-linux-gnu-\nelse ifneq ($(call find-command,mips64-elf-ld),)\n  CROSS := mips64-elf-\nelse\n  $(error Unable to detect a suitable MIPS toolchain installed)\nendif\n\nAS            := $(CROSS)as\nifeq ($(COMPILER),gcc)\n  CC          := $(CROSS)gcc\nelse\n  ifeq ($(USE_QEMU_IRIX),1)\n    IRIX_ROOT := $(TOOLS_DIR)/ido5.3_compiler\n    CC        := $(QEMU_IRIX) -silent -L $(IRIX_ROOT) $(IRIX_ROOT)/usr/bin/cc\n    ACPP      := $(QEMU_IRIX) -silent -L $(IRIX_ROOT) $(IRIX_ROOT)/usr/lib/acpp\n    COPT      := $(QEMU_IRIX) -silent -L $(IRIX_ROOT) $(IRIX_ROOT)/usr/lib/copt\n  else\n    IDO_ROOT  := $(TOOLS_DIR)/ido-static-recomp/build/out\n    CC        := $(IDO_ROOT)/cc\n    ACPP      := $(IDO_ROOT)/acpp\n    COPT      := $(IDO_ROOT)/copt\n  endif\nendif\nifeq ($(VERSION),cn)\n  LD          := LD_LIBRARY_PATH=$(IQUE_LD_PATH) $(IQUE_LD_PATH)/mips64-elf-ld\nelse\n  LD          := $(CROSS)ld\nendif\nAR            := $(CROSS)ar\nOBJDUMP       := $(CROSS)objdump\nOBJCOPY       := $(CROSS)objcopy\n\nifeq ($(TARGET_N64),1)\n  TARGET_CFLAGS := -nostdinc -DTARGET_N64 -D_LANGUAGE_C\n  CC_CFLAGS := -fno-builtin\nendif\n\nINCLUDE_DIRS := include $(BUILD_DIR) $(BUILD_DIR)/include src .\nifeq ($(TARGET_N64),1)\n  INCLUDE_DIRS += include/libc\nendif\n\nC_DEFINES := $(foreach d,$(DEFINES),-D$(d))\nDEF_INC_CFLAGS := $(foreach i,$(INCLUDE_DIRS),-I$(i)) $(C_DEFINES)\n\nIQUE_AS := $(IQUE_EGCS_PATH)/as\nIQUE_ASFLAGS = -mcpu=r4300 -mabi=32 $(MIPSISET) $(foreach i,$(INCLUDE_DIRS),-I$(i)) $(foreach d,$(DEFINES),--defsym $(d))\n\nifeq ($(VERSION),cn)\n  IQUE_REASSEMBLED_ASM_FILES := $(wildcard asm/*.s) $(wildcard lib/asm/*.s)\n  IQUE_REASSEMBLED_ASM_FILES := $(filter-out asm/ipl3_font.s,$(IQUE_REASSEMBLED_ASM_FILES))\n  IQUE_REASSEMBLED := $(foreach file,$(IQUE_REASSEMBLED_ASM_FILES),$(BUILD_DIR)/$(file:.s=.o))\n  $(IQUE_REASSEMBLED): AS := $(IQUE_AS)\n  $(IQUE_REASSEMBLED): MIPSISET :=\n  $(IQUE_REASSEMBLED): ASFLAGS = $(IQUE_ASFLAGS)\nendif\n\nIQUE_CC := COMPILER_PATH=$(IQUE_EGCS_PATH) $(IQUE_EGCS_PATH)/gcc\nIQUE_CFLAGS = -G 0 $(TARGET_CFLAGS) $(OPT_FLAGS) -D__sgi -DBBPLAYER -mcpu=r4300 -mgp32 -fno-pic -Wa,--strip-local-absolute $(MIPSISET) $(DEF_INC_CFLAGS)\n\n# iQue recompiled some files with a different compiler\nifeq ($(VERSION),cn)\n  IQUE_RECOMPILED_SRC_GAME := $(addprefix $(BUILD_DIR)/src/game/,rumble_init.o level_update.o memory.o area.o print.o ingame_menu.o hud.o cn_common_syms_1.o cn_common_syms_2.o) $(addprefix $(BUILD_DIR)/src/menu/,title_screen.o intro_geo.o file_select.o star_select.o)\n  IQUE_RECOMPILED_LIB_SRC  := $(ULTRA_O_FILES)\n  # osDriveRomInit is weird\n  IQUE_RECOMPILED_LIB_SRC := $(filter-out $(addprefix $(BUILD_DIR)/lib/src/,osDriveRomInit.o),$(IQUE_RECOMPILED_LIB_SRC))\n  IQUE_RECOMPILED_LIBGCC_SRC  := $(LIBGCC_O_FILES)\n  IQUE_RECOMPILED = $(IQUE_RECOMPILED_SRC_GAME) $(IQUE_RECOMPILED_LIB_SRC) $(IQUE_RECOMPILED_LIBGCC_SRC)\n  $(IQUE_RECOMPILED): CC := $(IQUE_CC)\n  $(IQUE_RECOMPILED): MIPSISET :=\n  $(IQUE_RECOMPILED): CFLAGS = $(IQUE_CFLAGS)\nendif\n\n# Prefer clang as C preprocessor if installed on the system\nifneq (,$(call find-command,clang))\n  CPP      := clang\n  CPPFLAGS := -E -P -x c -Wno-trigraphs -D_LANGUAGE_ASSEMBLY $(DEF_INC_CFLAGS)\nelse\n  CPP      := cpp\n  CPPFLAGS := -P -Wno-trigraphs -D_LANGUAGE_ASSEMBLY $(DEF_INC_CFLAGS)\nendif\n\n# Check code syntax with host compiler\nCC_CHECK := gcc\nCC_CHECK_CFLAGS := -fsyntax-only -fsigned-char $(CC_CFLAGS) $(TARGET_CFLAGS) -std=gnu90 -Wall -Wextra -Wno-format-security -Wno-main -DNON_MATCHING -DAVOID_UB $(DEF_INC_CFLAGS)\n\n# C compiler options\nCFLAGS = -G 0 $(OPT_FLAGS) $(TARGET_CFLAGS) $(MIPSISET) $(DEF_INC_CFLAGS)\nifeq ($(COMPILER),gcc)\n  CFLAGS += -mno-shared -march=vr4300 -mfix4300 -mabi=32 -mhard-float -mdivide-breaks -fno-stack-protector -fno-common -fno-zero-initialized-in-bss -fno-PIC -mno-abicalls -fno-strict-aliasing -fno-inline-functions -ffreestanding -fwrapv -Wall -Wextra\nelse\n  CFLAGS += -non_shared -Wab,-r4300_mul -Xcpluscomm -Xfullwarn -signed -32\nendif\n\nASFLAGS   := -march=vr4300 -mabi=32 $(foreach i,$(INCLUDE_DIRS),-I$(i)) $(foreach d,$(DEFINES),--defsym $(d))\nRSPASMFLAGS := $(foreach d,$(DEFINES),-definelabel $(subst =, ,$(d)))\n\nifeq ($(shell getconf LONG_BIT), 32)\n  # Work around memory allocation bug in QEMU\n  export QEMU_GUEST_BASE := 1\nelse\n  # Ensure that gcc treats the code as 32-bit\n  CC_CHECK_CFLAGS += -m32\nendif\n\n# Prevent a crash with -sopt\nexport LANG := C\n\n#==============================================================================#\n# Miscellaneous Tools                                                          #\n#==============================================================================#\n\n# N64 tools\nMIO0TOOL              := $(TOOLS_DIR)/sm64tools/mio0\nN64CKSUM              := $(TOOLS_DIR)/sm64tools/n64cksum\nN64GRAPHICS           := $(TOOLS_DIR)/sm64tools/n64graphics\nN64GRAPHICS_CI        := $(TOOLS_DIR)/sm64tools/n64graphics_ci\nTEXTCONV              := $(TOOLS_DIR)/textconv\nAIFF_EXTRACT_CODEBOOK := $(TOOLS_DIR)/aiff_extract_codebook\nVADPCM_ENC            := $(TOOLS_DIR)/vadpcm_enc\nEXTRACT_DATA_FOR_MIO  := $(TOOLS_DIR)/extract_data_for_mio\nSKYCONV               := $(TOOLS_DIR)/skyconv\n# Use the system installed armips if available. Otherwise use the one provided with this repository.\nifneq (,$(call find-command,armips))\n  RSPASM              := armips\nelse\n  RSPASM              := $(TOOLS_DIR)/armips\nendif\nENDIAN_BITWIDTH       := $(BUILD_DIR)/endian-and-bitwidth\nEMULATOR = mupen64plus\nEMU_FLAGS = --noosd\nLOADER = loader64\nLOADER_FLAGS = -vwf\nSHA1SUM = sha1sum\nPRINT = printf\n\nifeq ($(COLOR),1)\nNO_COL  := \\033[0m\nRED     := \\033[0;31m\nGREEN   := \\033[0;32m\nBLUE    := \\033[0;34m\nYELLOW  := \\033[0;33m\nBLINK   := \\033[33;5m\nendif\n\n# Use objcopy instead of extract_data_for_mio to get 16-byte aligned padding\nifeq ($(COMPILER),gcc)\n  EXTRACT_DATA_FOR_MIO := $(OBJCOPY) -O binary --only-section=.data\nendif\nifeq ($(VERSION),cn)\n  EXTRACT_DATA_FOR_MIO := $(OBJCOPY) -O binary --only-section=.data\nendif\n\n# Common build print status function\ndefine print\n  @$(PRINT) \"$(GREEN)$(1) $(YELLOW)$(2)$(GREEN) -> $(BLUE)$(3)$(NO_COL)\\n\"\nendef\n\n#==============================================================================#\n# Main Targets                                                                 #\n#==============================================================================#\n\nall: $(ROM)\nifeq ($(COMPARE),1)\n\t@$(PRINT) \"$(GREEN)Checking if ROM matches.. $(NO_COL)\\n\"\n\t@$(SHA1SUM) --quiet -c $(TARGET).sha1 && $(PRINT) \"$(TARGET): $(GREEN)OK$(NO_COL)\\n\" || ($(PRINT) \"$(YELLOW)Building the ROM file has succeeded, but does not match the original ROM.\\nThis is expected, and not an error, if you are making modifications.\\nTo silence this message, use 'make COMPARE=0.' $(NO_COL)\\n\" && false)\nendif\n\nclean:\n\t$(RM) -r $(BUILD_DIR_BASE)\n\ndistclean: clean\n\t$(PYTHON) extract_assets.py --clean\n\t$(MAKE) -C $(TOOLS_DIR) clean\n\t$(MAKE) -C $(TOOLS_DIR)/sm64tools clean\n\ntest: $(ROM)\n\t$(EMULATOR) $(EMU_FLAGS) $<\n\nload: $(ROM)\n\t$(LOADER) $(LOADER_FLAGS) $<\n\nlibultra: $(BUILD_DIR)/libultra.a\n\n# Extra object file dependencies\n$(BUILD_DIR)/asm/ipl3_font.o:         $(IPL3_RAW_FILES)\n$(BUILD_DIR)/src/game/crash_screen.o: $(CRASH_TEXTURE_C_FILES)\n$(BUILD_DIR)/lib/rsp.o:               $(BUILD_DIR)/rsp/rspboot.bin $(BUILD_DIR)/rsp/fast3d.bin $(BUILD_DIR)/rsp/audio.bin\n$(SOUND_BIN_DIR)/sound_data.o:        $(SOUND_BIN_DIR)/sound_data.ctl.inc.c $(SOUND_BIN_DIR)/sound_data.tbl.inc.c $(SOUND_BIN_DIR)/sequences.bin.inc.c $(SOUND_BIN_DIR)/bank_sets.inc.c\n$(BUILD_DIR)/levels/scripts.o:        $(BUILD_DIR)/include/level_headers.h\n\nifeq ($(VERSION_SH_CN),true)\n  $(BUILD_DIR)/src/audio/load_sh.o: $(SOUND_BIN_DIR)/bank_sets.inc.c $(SOUND_BIN_DIR)/sequences_header.inc.c $(SOUND_BIN_DIR)/ctl_header.inc.c $(SOUND_BIN_DIR)/tbl_header.inc.c\nendif\n\n$(CRASH_TEXTURE_C_FILES): TEXTURE_ENCODING := u32\n\nifeq ($(COMPILER),gcc)\n  $(BUILD_DIR)/lib/src/math/%.o: CFLAGS += -fno-builtin\nendif\n\nifeq ($(VERSION),eu)\n  TEXT_DIRS := text/de text/us text/fr\n\n  # EU encoded text inserted into individual segment 0x19 files,\n  # and course data also duplicated in leveldata.c\n  $(BUILD_DIR)/bin/eu/translation_en.o: $(BUILD_DIR)/text/us/define_text.inc.c\n  $(BUILD_DIR)/bin/eu/translation_de.o: $(BUILD_DIR)/text/de/define_text.inc.c\n  $(BUILD_DIR)/bin/eu/translation_fr.o: $(BUILD_DIR)/text/fr/define_text.inc.c\n  $(BUILD_DIR)/levels/menu/leveldata.o: $(BUILD_DIR)/include/text_strings.h\n  $(BUILD_DIR)/levels/menu/leveldata.o: $(BUILD_DIR)/text/us/define_courses.inc.c\n  $(BUILD_DIR)/levels/menu/leveldata.o: $(BUILD_DIR)/text/de/define_courses.inc.c\n  $(BUILD_DIR)/levels/menu/leveldata.o: $(BUILD_DIR)/text/fr/define_courses.inc.c\nelse\n  ifeq ($(VERSION),sh)\n    TEXT_DIRS := text/jp\n    $(BUILD_DIR)/bin/segment2.o: $(BUILD_DIR)/text/jp/define_text.inc.c\n  else\n    TEXT_DIRS := text/$(VERSION)\n    # non-EU encoded text inserted into segment 0x02\n    $(BUILD_DIR)/bin/segment2.o: $(BUILD_DIR)/text/$(VERSION)/define_text.inc.c\n  endif\nendif\n$(BUILD_DIR)/bin/segment2.o: $(BUILD_DIR)/text/debug_text.raw.inc.c\n\nALL_DIRS := $(BUILD_DIR) $(addprefix $(BUILD_DIR)/,$(SRC_DIRS) $(GODDARD_SRC_DIRS) $(ULTRA_SRC_DIRS) $(ULTRA_BIN_DIRS) $(LIBGCC_SRC_DIRS) $(BIN_DIRS) $(TEXTURE_DIRS) $(TEXT_DIRS) $(SOUND_SAMPLE_DIRS) $(addprefix levels/,$(LEVEL_DIRS)) rsp include) $(MIO0_DIR) $(addprefix $(MIO0_DIR)/,$(VERSION)) $(SOUND_BIN_DIR) $(SOUND_BIN_DIR)/sequences/$(VERSION)\n\n# Make sure build directory exists before compiling anything\nDUMMY != mkdir -p $(ALL_DIRS)\n\n$(BUILD_DIR)/include/text_strings.h: $(BUILD_DIR)/include/text_menu_strings.h\n$(BUILD_DIR)/src/menu/file_select.o: $(BUILD_DIR)/include/text_strings.h\n$(BUILD_DIR)/src/menu/star_select.o: $(BUILD_DIR)/include/text_strings.h\n$(BUILD_DIR)/src/game/ingame_menu.o: $(BUILD_DIR)/include/text_strings.h\n\n\n#==============================================================================#\n# Texture Generation                                                           #\n#==============================================================================#\nTEXTURE_ENCODING := u8\n\n# Convert PNGs to RGBA32, RGBA16, IA16, IA8, IA4, IA1, I8, I4 binary files\n$(BUILD_DIR)/%: %.png\n\t$(call print,Converting:,$<,$@)\n\t$(V)$(N64GRAPHICS) -s raw -i $@ -g $< -f $(lastword $(subst ., ,$@))\n\n$(BUILD_DIR)/%.inc.c: %.png\n\t$(call print,Converting:,$<,$@)\n\t$(V)$(N64GRAPHICS) -s $(TEXTURE_ENCODING) -i $@ -g $< -f $(lastword ,$(subst ., ,$(basename $<)))\n\n# Color Index CI8\n$(BUILD_DIR)/%.ci8: %.ci8.png\n\t$(call print,Converting:,$<,$@)\n\t$(V)$(N64GRAPHICS_CI) -i $@ -g $< -f ci8\n\n# Color Index CI4\n$(BUILD_DIR)/%.ci4: %.ci4.png\n\t$(call print,Converting:,$<,$@)\n\t$(V)$(N64GRAPHICS_CI) -i $@ -g $< -f ci4\n\n\n#==============================================================================#\n# Compressed Segment Generation                                                #\n#==============================================================================#\n\n# Link segment file to resolve external labels\n# TODO: ideally this would be `-Trodata-segment=0x07000000` but that doesn't set the address\n$(BUILD_DIR)/%.elf: $(BUILD_DIR)/%.o\n\t$(call print,Linking ELF file:,$<,$@)\n\t$(V)$(LD) -e 0 -Ttext=$(SEGMENT_ADDRESS) -Map $@.map -o $@ $<\n# Override for leveldata.elf, which otherwise matches the above pattern\n.SECONDEXPANSION:\n$(BUILD_DIR)/levels/%/leveldata.elf: $(BUILD_DIR)/levels/%/leveldata.o $(BUILD_DIR)/bin/$$(TEXTURE_BIN).elf\n\t$(call print,Linking ELF file:,$<,$@)\n\t$(V)$(LD) -e 0 -Ttext=$(SEGMENT_ADDRESS) -Map $@.map --just-symbols=$(BUILD_DIR)/bin/$(TEXTURE_BIN).elf -o $@ $<\n\n$(BUILD_DIR)/%.bin: $(BUILD_DIR)/%.elf\n\t$(call print,Extracting compressible data from:,$<,$@)\n\t$(V)$(EXTRACT_DATA_FOR_MIO) $< $@\n\n$(BUILD_DIR)/levels/%/leveldata.bin: $(BUILD_DIR)/levels/%/leveldata.elf\n\t$(call print,Extracting compressible data from:,$<,$@)\n\t$(V)$(EXTRACT_DATA_FOR_MIO) $< $@\n\n# Compress binary file\n$(BUILD_DIR)/%.mio0: $(BUILD_DIR)/%.bin\n\t$(call print,Compressing:,$<,$@)\n\t$(V)$(MIO0TOOL) $< $@\n\n# convert binary mio0 to object file\n$(BUILD_DIR)/%.mio0.o: $(BUILD_DIR)/%.mio0\n\t$(call print,Converting MIO0 to ELF:,$<,$@)\n\t$(V)$(LD) -r -b binary $< -o $@\n\n\n#==============================================================================#\n# Sound File Generation                                                        #\n#==============================================================================#\n\n$(BUILD_DIR)/%.table: %.aiff\n\t$(call print,Extracting codebook:,$<,$@)\n\t$(V)$(AIFF_EXTRACT_CODEBOOK) $< >$@\n\n$(BUILD_DIR)/%.aifc: $(BUILD_DIR)/%.table %.aiff\n\t$(call print,Encoding ADPCM:,$(word 2,$^),$@)\n\t$(V)$(VADPCM_ENC) -c $^ $@\n\n$(ENDIAN_BITWIDTH): $(TOOLS_DIR)/determine-endian-bitwidth.c\n\t@$(PRINT) \"$(GREEN)Generating endian-bitwidth $(NO_COL)\\n\"\n\t$(V)$(CC) -c $(CFLAGS) -o $@.dummy2 $< 2>$@.dummy1; true\n\t$(V)grep -o 'msgbegin --endian .* --bitwidth .* msgend' $@.dummy1 > $@.dummy2\n\t$(V)head -n1 <$@.dummy2 | cut -d' ' -f2-5 > $@\n\t$(V)$(RM) $@.dummy1\n\t$(V)$(RM) $@.dummy2\n\n$(SOUND_BIN_DIR)/sound_data.ctl: sound/sound_banks/ $(SOUND_BANK_FILES) $(SOUND_SAMPLE_AIFCS) $(ENDIAN_BITWIDTH)\n\t@$(PRINT) \"$(GREEN)Generating:  $(BLUE)$@ $(NO_COL)\\n\"\n\t$(V)$(PYTHON) $(TOOLS_DIR)/assemble_sound.py $(BUILD_DIR)/sound/samples/ sound/sound_banks/ $(SOUND_BIN_DIR)/sound_data.ctl $(SOUND_BIN_DIR)/ctl_header $(SOUND_BIN_DIR)/sound_data.tbl $(SOUND_BIN_DIR)/tbl_header $(C_DEFINES) $$(cat $(ENDIAN_BITWIDTH))\n\n$(SOUND_BIN_DIR)/sound_data.tbl: $(SOUND_BIN_DIR)/sound_data.ctl\n\t@true\n\n$(SOUND_BIN_DIR)/ctl_header: $(SOUND_BIN_DIR)/sound_data.ctl\n\t@true\n\n$(SOUND_BIN_DIR)/tbl_header: $(SOUND_BIN_DIR)/sound_data.ctl\n\t@true\n\n$(SOUND_BIN_DIR)/sequences.bin: $(SOUND_BANK_FILES) sound/sequences.json $(SOUND_SEQUENCE_DIRS) $(SOUND_SEQUENCE_FILES) $(ENDIAN_BITWIDTH)\n\t@$(PRINT) \"$(GREEN)Generating:  $(BLUE)$@ $(NO_COL)\\n\"\n\t$(V)$(PYTHON) $(TOOLS_DIR)/assemble_sound.py --sequences $@ $(SOUND_BIN_DIR)/sequences_header $(SOUND_BIN_DIR)/bank_sets sound/sound_banks/ sound/sequences.json $(SOUND_SEQUENCE_FILES) $(C_DEFINES) $$(cat $(ENDIAN_BITWIDTH))\n\n$(SOUND_BIN_DIR)/bank_sets: $(SOUND_BIN_DIR)/sequences.bin\n\t@true\n\n$(SOUND_BIN_DIR)/sequences_header: $(SOUND_BIN_DIR)/sequences.bin\n\t@true\n\n$(SOUND_BIN_DIR)/%.m64: $(SOUND_BIN_DIR)/%.o\n\t$(call print,Converting to M64:,$<,$@)\n\t$(V)$(OBJCOPY) -j .rodata $< -O binary $@\n\n\n#==============================================================================#\n# Generated Source Code Files                                                  #\n#==============================================================================#\n\n# Convert binary file to a comma-separated list of byte values for inclusion in C code\n$(BUILD_DIR)/%.inc.c: $(BUILD_DIR)/%\n\t$(call print,Converting to C:,$<,$@)\n\t$(V)hexdump -v -e '1/1 \"0x%X,\"' $< > $@\n\t$(V)echo >> $@\n\n# Generate animation data\n$(BUILD_DIR)/assets/mario_anim_data.c: $(wildcard assets/anims/*.inc.c)\n\t@$(PRINT) \"$(GREEN)Generating animation data $(NO_COL)\\n\"\n\t$(V)$(PYTHON) $(TOOLS_DIR)/mario_anims_converter.py > $@\n\n# Generate demo input data\n$(BUILD_DIR)/assets/demo_data.c: assets/demo_data.json $(wildcard assets/demos/*.bin)\n\t@$(PRINT) \"$(GREEN)Generating demo data $(NO_COL)\\n\"\n\t$(V)$(PYTHON) $(TOOLS_DIR)/demo_data_converter.py assets/demo_data.json $(DEF_INC_CFLAGS) > $@\n\n# Encode in-game text strings\n$(BUILD_DIR)/$(CHARMAP): $(CHARMAP)\n\t$(call print,Preprocessing charmap:,$<,$@)\n\t$(V)$(CPP) $(CPPFLAGS) -DBUILD_DIR=$(BUILD_DIR) -MMD -MP -MT $@ -MF $@.d -o $@ $<\n$(BUILD_DIR)/$(CHARMAP_DEBUG): $(CHARMAP)\n\t$(call print,Preprocessing charmap:,$<,$@)\n\t$(V)$(CPP) $(CPPFLAGS) -DCHARMAP_DEBUG -DBUILD_DIR=$(BUILD_DIR) -MMD -MP -MT $@ -MF $@.d -o $@ $<\n$(BUILD_DIR)/include/text_strings.h: include/text_strings.h.in $(BUILD_DIR)/$(CHARMAP)\n\t$(call print,Encoding:,$<,$@)\n\t$(V)$(TEXTCONV) $(BUILD_DIR)/$(CHARMAP) $< $@\n$(BUILD_DIR)/include/text_menu_strings.h: include/text_menu_strings.h.in\n\t$(call print,Encoding:,$<,$@)\n\t$(V)$(TEXTCONV) charmap_menu.txt $< $@\n$(BUILD_DIR)/text/%/define_courses.inc.c: text/define_courses.inc.c text/%/courses.h\n\t@$(PRINT) \"$(GREEN)Preprocessing: $(BLUE)$@ $(NO_COL)\\n\"\n\t$(V)$(CPP) $(CPPFLAGS) $< -o - -I text/$*/ | $(TEXTCONV) $(BUILD_DIR)/$(CHARMAP) - $@\n$(BUILD_DIR)/text/%/define_text.inc.c: text/define_text.inc.c text/%/courses.h text/%/dialogs.h\n\t@$(PRINT) \"$(GREEN)Preprocessing: $(BLUE)$@ $(NO_COL)\\n\"\n\t$(V)$(CPP) $(CPPFLAGS) $< -o - -I text/$*/ | $(TEXTCONV) $(BUILD_DIR)/$(CHARMAP) - $@\n$(BUILD_DIR)/text/debug_text.raw.inc.c: text/debug_text.inc.c $(BUILD_DIR)/$(CHARMAP_DEBUG)\n\t@$(PRINT) \"$(GREEN)Preprocessing: $(BLUE)$@ $(NO_COL)\\n\"\n\t$(V)$(CPP) $(CPPFLAGS) $< -o - -I text/$*/ | $(TEXTCONV) $(BUILD_DIR)/$(CHARMAP_DEBUG) - $@\n\n# Level headers\n$(BUILD_DIR)/include/level_headers.h: levels/level_headers.h.in\n\t$(call print,Preprocessing level headers:,$<,$@)\n\t$(V)$(CPP) $(CPPFLAGS) -I . $< | sed -E 's|(.+)|#include \"\\1\"|' > $@\n\n# Run asm_processor on files that have NON_MATCHING code\nifeq ($(NON_MATCHING),0)\n$(GLOBAL_ASM_O_FILES): CC := $(V)$(PYTHON) $(TOOLS_DIR)/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) --\nendif\n\n# Rebuild files with 'GLOBAL_ASM' if the NON_MATCHING flag changes.\n$(GLOBAL_ASM_O_FILES): $(GLOBAL_ASM_DEP).$(NON_MATCHING)\n$(GLOBAL_ASM_DEP).$(NON_MATCHING):\n\t@$(RM) $(GLOBAL_ASM_DEP).*\n\t$(V)touch $@\n\n\n#==============================================================================#\n# Compilation Recipes                                                          #\n#==============================================================================#\n\n# Compile C code\n$(BUILD_DIR)/%.o: %.c\n\t$(call print,Compiling:,$<,$@)\n\t$(V)$(CC_CHECK) $(CC_CHECK_CFLAGS) -MMD -MP -MT $@ -MF $(BUILD_DIR)/$*.d $<\n\t$(V)$(CC) -c $(CFLAGS) -o $@ $<\nifeq ($(VERSION),cn)\n\t$(V)$(TOOLS_DIR)/patch_elf_32bit $@\nendif\n$(BUILD_DIR)/%.o: $(BUILD_DIR)/%.c\n\t$(call print,Compiling:,$<,$@)\n\t$(V)$(CC_CHECK) $(CC_CHECK_CFLAGS) -MMD -MP -MT $@ -MF $(BUILD_DIR)/$*.d $<\n\t$(V)$(CC) -c $(CFLAGS) -o $@ $<\nifeq ($(VERSION),cn)\n\t$(V)$(TOOLS_DIR)/patch_elf_32bit $@\nendif\n\n# Alternate compiler flags needed for matching\nifeq ($(COMPILER),ido)\n  $(BUILD_DIR)/levels/%/leveldata.o: OPT_FLAGS := -g\n  $(BUILD_DIR)/actors/%.o:           OPT_FLAGS := -g\n  $(BUILD_DIR)/bin/%.o:              OPT_FLAGS := -g\n  $(BUILD_DIR)/src/goddard/%.o:      OPT_FLAGS := -g\n  $(BUILD_DIR)/src/goddard/%.o:      MIPSISET := -mips1\n  $(BUILD_DIR)/lib/asm/__osDisableInt.o: MIPSISET := -mips2\n  $(BUILD_DIR)/lib/asm/bcopy.o:      MIPSISET := -mips2\n  $(BUILD_DIR)/lib/src/%.o:          OPT_FLAGS :=\n  $(BUILD_DIR)/lib/src/math/%.o:     OPT_FLAGS := -O2\n  $(BUILD_DIR)/lib/src/math/ll%.o:   OPT_FLAGS :=\n  $(BUILD_DIR)/lib/src/math/ll%.o:   MIPSISET := -mips3 -32\n  $(BUILD_DIR)/lib/src/ldiv.o:       OPT_FLAGS := -O2\n  $(BUILD_DIR)/lib/src/string.o:     OPT_FLAGS := -O2\n  $(BUILD_DIR)/lib/src/gu%.o:        OPT_FLAGS := -O3\n  $(BUILD_DIR)/lib/src/al%.o:        OPT_FLAGS := -O3\n  ifeq ($(VERSION_SH_CN),true)\n    $(BUILD_DIR)/lib/src/_Ldtob.o:   OPT_FLAGS := -O3\n    $(BUILD_DIR)/lib/src/_Litob.o:   OPT_FLAGS := -O3\n    $(BUILD_DIR)/lib/src/_Printf.o:  OPT_FLAGS := -O3\n    $(BUILD_DIR)/lib/src/sprintf.o:  OPT_FLAGS := -O3\n    $(BUILD_DIR)/lib/src/osDriveRomInit.o: OPT_FLAGS := -g\n  endif\n  ifeq ($(VERSION),cn)\n    $(BUILD_DIR)/lib/src/osAiSetFrequency.o:    MIPSISET := -mips2\n    $(BUILD_DIR)/lib/src/osVirtualToPhysical.o: OPT_FLAGS := -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osInitializeIQueWrapper.o: OPT_FLAGS := -O2\n    $(BUILD_DIR)/lib/src/osAiGetLength.o:       OPT_FLAGS := -O2\n    $(BUILD_DIR)/lib/src/osAiSetFrequency.o:    OPT_FLAGS := -O2\n    $(BUILD_DIR)/lib/src/math/cosf.o:           OPT_FLAGS := -O2 -mips2\n    $(BUILD_DIR)/lib/src/guOrthoF.o:            OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/guPerspectiveF.o:      OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osAiSetNextBuffer.o:   OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osContStartReadData.o: OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osContInit.o:          OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/math/sinf.o:           OPT_FLAGS := -O2 -mips2\n    $(BUILD_DIR)/lib/src/math/ll%.o:            OPT_FLAGS := -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/string.o:              OPT_FLAGS := -O2 -mips2\n    $(BUILD_DIR)/lib/src/sprintf.o:             OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osSyncPrintf.o:        OPT_FLAGS := -O2\n    $(BUILD_DIR)/lib/src/_Printf.o:             OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osCreateMesgQueue.o:   OPT_FLAGS := -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osRecvMesg.o:          OPT_FLAGS := -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osSendMesg.o:          OPT_FLAGS := -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osSetEventMesg.o:      OPT_FLAGS := -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osSpTaskLoadGo.o:      OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osSpTaskYield.o:       OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osSpTaskYielded.o:     OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/__osSiRawStartDma.o:   OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/__osSiCreateAccessQueue.o: OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osCreateThread.o:      OPT_FLAGS := -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osSetThreadPri.o:      OPT_FLAGS := -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osStartThread.o:       OPT_FLAGS := -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/__osDequeueThread.o:   OPT_FLAGS := -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/__osGetCurrFaultedThread.o: OPT_FLAGS := -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osGetTime.o:           OPT_FLAGS := -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osSetTime.o:           OPT_FLAGS := -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osSetTimer.o:          OPT_FLAGS := -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osTimer.o:             OPT_FLAGS := -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osCreateViManager.o:   OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osViSetEvent.o:        OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osViSetMode.o:         OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osViSetSpecialFeatures.o: OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osViSwapBuffer.o:      OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/__osViSwapContext.o:   OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osViBlack.o:           OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/guRotateF.o:           OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osEepromProbe.o:       OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osEepromLongWrite.o:   OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osEepromLongRead.o:    OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osCreatePiManager.o:   OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osEPiRawStartDma.o:    OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/epidma.o:              OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osCartRomInit.o:       OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/__osDevMgrMain.o:      OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/__osPiCreateAccessQueue.o: OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osPiStartDma.o:        OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/motor.o:               OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osInitialize.o:        OPT_FLAGS := -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/__osAiDeviceBusy.o:    OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/_Litob.o:              OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/_Ldtob.o:              OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osJamMesg.o:           OPT_FLAGS := -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/__osSpDeviceBusy.o:    OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/__osSpGetStatus.o:     OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/__osSpSetStatus.o:     OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/__osSpSetPc.o:         OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/__osSpRawStartDma.o:   OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/__osSiRawReadIo.o:     OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/__osSiRawWriteIo.o:    OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osDestroyThread.o:     OPT_FLAGS := -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osGetThreadPri.o:      OPT_FLAGS := -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osYieldThread.o:       OPT_FLAGS := -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/__osViInit.o:          OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/__osViGetCurrentContext.o: OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osEepromRead.o:        OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osEepromWrite.o:       OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/__osSetGlobalIntMask.o: OPT_FLAGS := -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/__osResetGlobalIntMask.o: OPT_FLAGS := -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osPiRawStartDma.o:     OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osPiGetCmdQueue.o:     OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osEPiRawReadIo.o:    OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/osEPiRawWriteIo.o:   OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/ldiv.o:                OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/__osSiDeviceBusy.o:    OPT_FLAGS := -O2 -mno-abicalls -mips2\n    $(BUILD_DIR)/lib/src/libgcc/%.o:            OPT_FLAGS := -O2 -g -mips2\n  endif\n  ifeq ($(VERSION),eu)\n    $(BUILD_DIR)/lib/src/_Ldtob.o:   OPT_FLAGS := -O3\n    $(BUILD_DIR)/lib/src/_Litob.o:   OPT_FLAGS := -O3\n    $(BUILD_DIR)/lib/src/_Printf.o:  OPT_FLAGS := -O3\n    $(BUILD_DIR)/lib/src/sprintf.o:  OPT_FLAGS := -O3\n\n    # For all audio files other than external.c and port_eu.c, put string literals\n    # in .data. (In Shindou, the port_eu.c string literals also moved to .data.)\n    $(BUILD_DIR)/src/audio/%.o:        OPT_FLAGS := -O2 -use_readwrite_const\n    $(BUILD_DIR)/src/audio/port_eu.o:  OPT_FLAGS := -O2\n  endif\n  ifeq ($(VERSION_JP_US),true)\n    $(BUILD_DIR)/src/audio/%.o:        OPT_FLAGS := -O2 -Wo,-loopunroll,0\n    $(BUILD_DIR)/src/audio/load.o:     OPT_FLAGS := -O2 -Wo,-loopunroll,0 -framepointer\n    # The source-to-source optimizer copt is enabled for audio. This makes it use\n    # acpp, which needs -Wp,-+ to handle C++-style comments.\n    # All other files than external.c should really use copt, but only a few have\n    # been matched so far.\n    $(BUILD_DIR)/src/audio/effects.o:   OPT_FLAGS := -O2 -Wo,-loopunroll,0 -sopt,-inline=sequence_channel_process_sound,-scalaroptimize=1 -Wp,-+\n    $(BUILD_DIR)/src/audio/synthesis.o: OPT_FLAGS := -O2 -Wo,-loopunroll,0 -sopt,-scalaroptimize=1 -Wp,-+\n  endif\n  $(BUILD_DIR)/src/audio/external.o: OPT_FLAGS := -O2 -Wo,-loopunroll,0\n\n# Add a target for build/eu/src/audio/*.copt to make it easier to see debug\n$(BUILD_DIR)/src/audio/%.acpp: src/audio/%.c\n\t$(ACPP) $(TARGET_CFLAGS) $(DEF_INC_CFLAGS) -D__sgi -+ $< > $@\n$(BUILD_DIR)/src/audio/%.copt: $(BUILD_DIR)/src/audio/%.acpp\n\t$(COPT) -signed -I=$< -CMP=$@ -cp=i -scalaroptimize=1 $(COPTFLAGS)\n$(BUILD_DIR)/src/audio/seqplayer.copt: COPTFLAGS := -inline_manual\n\nendif\n\n# Assemble assembly code\n$(BUILD_DIR)/%.o: %.s\n\t$(call print,Assembling:,$<,$@)\n\t$(V)$(CPP) $(CPPFLAGS) $< | $(AS) $(ASFLAGS) -MD $(BUILD_DIR)/$*.d -o $@\n\n# Assemble RSP assembly code\n$(BUILD_DIR)/rsp/%.bin $(BUILD_DIR)/rsp/%_data.bin: rsp/%.s\n\t$(call print,Assembling:,$<,$@)\n\t$(V)$(RSPASM) -sym $@.sym $(RSPASMFLAGS) -strequ CODE_FILE $(BUILD_DIR)/rsp/$*.bin -strequ DATA_FILE $(BUILD_DIR)/rsp/$*_data.bin $<\n\n# Run linker script through the C preprocessor\n$(BUILD_DIR)/$(LD_SCRIPT): $(LD_SCRIPT)\n\t$(call print,Preprocessing linker script:,$<,$@)\n\t$(V)$(CPP) $(CPPFLAGS) -DBUILD_DIR=$(BUILD_DIR) -MMD -MP -MT $@ -MF $@.d -o $@ $<\n\n# Link libultra\n$(BUILD_DIR)/libultra.a: $(ULTRA_O_FILES)\n\t@$(PRINT) \"$(GREEN)Linking libultra:  $(BLUE)$@ $(NO_COL)\\n\"\n\t$(V)$(AR) rcs -o $@ $(ULTRA_O_FILES)\n\t$(V)$(TOOLS_DIR)/patch_elf_32bit $@\n\n# Link libgoddard\n$(BUILD_DIR)/libgoddard.a: $(GODDARD_O_FILES)\n\t@$(PRINT) \"$(GREEN)Linking libgoddard:  $(BLUE)$@ $(NO_COL)\\n\"\n\t$(V)$(AR) rcs -o $@ $(GODDARD_O_FILES)\n\n# Link libgcc\n$(BUILD_DIR)/libgcc.a: $(LIBGCC_O_FILES)\n\t@$(PRINT) \"$(GREEN)Linking libgcc:  $(BLUE)$@ $(NO_COL)\\n\"\n\t$(V)$(AR) rcs -o $@ $(LIBGCC_O_FILES)\n\n# Link SM64 ELF file\n$(ELF): $(O_FILES) $(MIO0_OBJ_FILES) $(SEG_FILES) $(BUILD_DIR)/$(LD_SCRIPT) undefined_syms.txt $(BUILD_DIR)/libultra.a $(BUILD_DIR)/libgoddard.a $(BUILD_DIR)/libgcc.a\n\t@$(PRINT) \"$(GREEN)Linking ELF file:  $(BLUE)$@ $(NO_COL)\\n\"\n\t$(V)$(LD) -L $(BUILD_DIR) -T undefined_syms.txt -T $(BUILD_DIR)/$(LD_SCRIPT) -Map $(BUILD_DIR)/sm64.$(VERSION).map --no-check-sections $(addprefix -R ,$(SEG_FILES)) -o $@ $(O_FILES) -lultra -lgoddard -lgcc\n\n# Build ROM\nifeq ($(VERSION),cn)\n  PAD_TO_GAP_FILL := --pad-to=0x7B0000 --gap-fill=0x00\nelse\n  PAD_TO_GAP_FILL := --pad-to=0x800000 --gap-fill=0xFF\nendif\n\n$(ROM): $(ELF)\n\t$(call print,Building ROM:,$<,$@)\nifeq ($(VERSION),cn) # cn has no checksums\n\t$(V)$(OBJCOPY) $(PAD_TO_GAP_FILL) $< $(@) -O binary\nelse\n\t$(V)$(OBJCOPY) $(PAD_TO_GAP_FILL) $< $(@:.z64=.bin) -O binary\n\t$(V)$(N64CKSUM) $(@:.z64=.bin) $@\nendif\n\n$(BUILD_DIR)/$(TARGET).objdump: $(ELF)\n\t$(OBJDUMP) -D $< > $@\n\n\n\n.PHONY: all clean distclean default diff test load libultra\n# with no prerequisites, .SECONDARY causes no intermediate target to be removed\n.SECONDARY:\n\n# Remove built-in rules, to improve performance\nMAKEFLAGS += --no-builtin-rules\n\n-include $(DEP_FILES)\n\nprint-% : ; $(info $* is a $(flavor $*) variable set to [$($*)]) @true\n"
  },
  {
    "path": "Makefile.split",
    "content": "# --------------------------------------\n# General Rules\n# --------------------------------------\n\n# obtain a list of segments from the *.c files in bin directory\nSEGMENTS := \\\n    $(notdir $(basename $(wildcard bin/*.c))) \\\n    $(addprefix $(VERSION)/,$(notdir $(basename $(wildcard bin/$(VERSION)/*.c)))) \\\n    $(addsuffix _skybox,$(notdir $(basename $(wildcard textures/skyboxes/*.png))))\n\n# Directories containing PNG files\nTEXTURE_DIRS := \\\n    $(wildcard textures/*/) \\\n    $(filter %/,$(wildcard actors/*/))\n\n# NOTE: textures assume naming convention \"texture.<encoding>.png\" generates \"texture.<encoding>\"\n\nACTOR_GROUPS := \\\n    group0  \\\n    group1  \\\n    group2  \\\n    group3  \\\n    group4  \\\n    group5  \\\n    group6  \\\n    group7  \\\n    group8  \\\n    group9  \\\n    group10 \\\n    group11 \\\n    group12 \\\n    group13 \\\n    group14 \\\n    group15 \\\n    group16 \\\n    group17 \\\n    common0 \\\n    common1\n\nLEVEL_FILES := $(addsuffix leveldata,$(LEVEL_DIRS))\n\nSEG_FILES := \\\n    $(SEGMENTS:%=$(BUILD_DIR)/bin/%.elf) \\\n    $(ACTOR_GROUPS:%=$(BUILD_DIR)/actors/%.elf) \\\n    $(LEVEL_FILES:%=$(BUILD_DIR)/levels/%.elf)\n\nMIO0_FILES := \\\n    $(SEGMENTS:%=$(BUILD_DIR)/bin/%.mio0) \\\n    $(ACTOR_GROUPS:%=$(BUILD_DIR)/actors/%.mio0) \\\n    $(LEVEL_FILES:%=$(BUILD_DIR)/levels/%.mio0)\n\nMIO0_OBJ_FILES := $(MIO0_FILES:.mio0=.mio0.o)\n\n\n# --------------------------------------\n# Actor Rules\n# --------------------------------------\n\n# Actor Directories\nKOOPA_DIRS       := koopa_flag poundable_pole koopa piranha_plant whomp chain_ball chain_chomp\nCAPSWITCH_DIRS   := capswitch springboard\nCHILLYCHIEF_DIRS := chillychief moneybag\nBULLY_DIRS       := bully blargg\nSPINDRIFT_DIRS   := spindrift penguin snowman\nKING_BOBOMB_DIRS := king_bobomb water_bubble\nBOO_DIRS         := bookend book chair small_key mad_piano boo haunted_cage\nMR_I_DIRS        := mr_i_eyeball mr_i_iris swoop snufit dorrie scuttlebug\nHOOT_DIRS        := yellow_sphere_small hoot yoshi_egg thwomp bullet_bill heave_ho\nCOINS_DIRS       := mist explosion butterfly coin warp_pipe door bowser_key flame blue_fish pebble leaves warp_collision mario_cap power_meter mushroom_1up star sand dirt transparent_star white_particle wooden_signpost tree\nBUBBA_DIRS       := bubba wiggler wiggler_body_part lakitu_enemy spiny_egg spiny\nSKEETER_DIRS     := skeeter seaweed water_mine cyan_fish bub water_ring treasure_chest\nKLEPTO_DIRS      := klepto eyerok pokey tornado\nSEA_DIRS         := clam_shell manta sushi unagi whirlpool\nAMP_DIRS         := blue_coin_switch amp cannon_lid cannon_base cannon_barrel chuckya purple_switch checkerboard_platform heart flyguy breakable_box exclamation_box goomba bobomb metal_box exclamation_box_outline test_platform koopa_shell\nMOLE_DIRS        := monty_mole_hole monty_mole smoke ukiki fwoosh\nLAKITU_DIRS      := lakitu_cameraman toad mips boo_castle\nPEACH_DIRS       := bird peach yoshi\nBOWSER_DIRS      := bowser_flame impact_ring yellow_sphere bowser bomb impact_smoke\nMARIO_DIRS       := mario bubble walk_smoke burn_smoke stomp_smoke water_wave sparkle water_splash white_particle_small sparkle_animation\n\n# Actor Textures\nAMP_CHUCKYA_TEXTURES            := $(foreach dir,$(AMP_DIRS),        $(wildcard actors/$(dir)/*.png))\nBOBOMBS_BUBBLE_TEXTURES         := $(foreach dir,$(KING_BOBOMB_DIRS),$(wildcard actors/$(dir)/*.png))\nBOO_BOOKEND_TEXTURES            := $(foreach dir,$(BOO_DIRS),        $(wildcard actors/$(dir)/*.png))\nCAPSWITCH_SPRINGBOARD_TEXTURES  := $(foreach dir,$(CAPSWITCH_DIRS),  $(wildcard actors/$(dir)/*.png))\nCOINS_PIPE_TEXTURES             := $(foreach dir,$(COINS_DIRS),      $(wildcard actors/$(dir)/*.png))\nBOWSER_FLAMES_TEXTURES          := $(foreach dir,$(BOWSER_DIRS),     $(wildcard actors/$(dir)/*.png))\nBUBBA_WIGGLER_TEXTURES          := $(foreach dir,$(BUBBA_DIRS),      $(wildcard actors/$(dir)/*.png))\nBULLY_BLARGG_TEXTURES           := $(foreach dir,$(BULLY_DIRS),      $(wildcard actors/$(dir)/*.png))\nCHILLYCHIEF_TEXTURES            := $(foreach dir,$(CHILLYCHIEF_DIRS),$(wildcard actors/$(dir)/*.png))\nHOOT_THWOMP_TEXTURES            := $(foreach dir,$(HOOT_DIRS),       $(wildcard actors/$(dir)/*.png))\nKOOPA_LOG_TEXTURES              := $(foreach dir,$(KOOPA_DIRS),      $(wildcard actors/$(dir)/*.png))\nKLEPTO_EYEROK_TEXTURES          := $(foreach dir,$(KLEPTO_DIRS),     $(wildcard actors/$(dir)/*.png))\nLAKITU_TOAD_TEXTURES            := $(foreach dir,$(LAKITU_DIRS),     $(wildcard actors/$(dir)/*.png))\nMARIO_WATER_TEXTURES            := $(foreach dir,$(MARIO_DIRS),      $(wildcard actors/$(dir)/*.png))\nMOLE_UKIKI_TEXTURES             := $(foreach dir,$(MOLE_DIRS),       $(wildcard actors/$(dir)/*.png))\nMR_I_SWOOP_TEXTURES             := $(foreach dir,$(MR_I_DIRS),       $(wildcard actors/$(dir)/*.png))\nPEACH_TOADSTOOL_TEXTURES        := $(foreach dir,$(PEACH_DIRS),      $(wildcard actors/$(dir)/*.png))\nSEA_CREATURES_TEXTURES          := $(foreach dir,$(SEA_DIRS),        $(wildcard actors/$(dir)/*.png))\nSKEETER_FISH_TEXTURES           := $(foreach dir,$(SKEETER_DIRS),    $(wildcard actors/$(dir)/*.png))\nSPINDRIFT_PENGUIN_TEXTURES      := $(foreach dir,$(SPINDRIFT_DIRS),  $(wildcard actors/$(dir)/*.png))\n\n# Actor dependencies\n$(BUILD_DIR)/actors/group0.o:  $(MARIO_WATER_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)\n$(BUILD_DIR)/actors/group1.o:  $(HOOT_THWOMP_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)\n$(BUILD_DIR)/actors/group2.o:  $(BULLY_BLARGG_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)\n$(BUILD_DIR)/actors/group3.o:  $(BOBOMBS_BUBBLE_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)\n$(BUILD_DIR)/actors/group4.o:  $(SEA_CREATURES_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)\n$(BUILD_DIR)/actors/group5.o:  $(KLEPTO_EYEROK_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)\n$(BUILD_DIR)/actors/group6.o:  $(MOLE_UKIKI_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)\n$(BUILD_DIR)/actors/group7.o:  $(SPINDRIFT_PENGUIN_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)\n$(BUILD_DIR)/actors/group8.o:  $(CAPSWITCH_SPRINGBOARD_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)\n$(BUILD_DIR)/actors/group9.o:  $(BOO_BOOKEND_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)\n$(BUILD_DIR)/actors/group10.o: $(PEACH_TOADSTOOL_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)\n$(BUILD_DIR)/actors/group11.o: $(BUBBA_WIGGLER_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)\n$(BUILD_DIR)/actors/group12.o: $(BOWSER_FLAMES_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)\n$(BUILD_DIR)/actors/group13.o: $(SKEETER_FISH_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)\n$(BUILD_DIR)/actors/group14.o: $(KOOPA_LOG_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)\n$(BUILD_DIR)/actors/group15.o: $(LAKITU_TOAD_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)\n$(BUILD_DIR)/actors/group16.o: $(CHILLYCHIEF_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)\n$(BUILD_DIR)/actors/group17.o: $(MR_I_SWOOP_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)\n$(BUILD_DIR)/actors/common0.o: $(AMP_CHUCKYA_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)\n$(BUILD_DIR)/actors/common1.o: $(COINS_PIPE_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)\n\n# Actor Elf Files\n$(BUILD_DIR)/actors/group0.elf:  SEGMENT_ADDRESS := 0x04000000\n$(BUILD_DIR)/actors/group1.elf:  SEGMENT_ADDRESS := 0x05000000\n$(BUILD_DIR)/actors/group2.elf:  SEGMENT_ADDRESS := 0x05000000\n$(BUILD_DIR)/actors/group3.elf:  SEGMENT_ADDRESS := 0x05000000\n$(BUILD_DIR)/actors/group4.elf:  SEGMENT_ADDRESS := 0x05000000\n$(BUILD_DIR)/actors/group5.elf:  SEGMENT_ADDRESS := 0x05000000\n$(BUILD_DIR)/actors/group6.elf:  SEGMENT_ADDRESS := 0x05000000\n$(BUILD_DIR)/actors/group7.elf:  SEGMENT_ADDRESS := 0x05000000\n$(BUILD_DIR)/actors/group8.elf:  SEGMENT_ADDRESS := 0x05000000\n$(BUILD_DIR)/actors/group9.elf:  SEGMENT_ADDRESS := 0x05000000\n$(BUILD_DIR)/actors/group10.elf: SEGMENT_ADDRESS := 0x05000000\n$(BUILD_DIR)/actors/group11.elf: SEGMENT_ADDRESS := 0x05000000\n$(BUILD_DIR)/actors/group12.elf: SEGMENT_ADDRESS := 0x06000000\n$(BUILD_DIR)/actors/group13.elf: SEGMENT_ADDRESS := 0x06000000\n$(BUILD_DIR)/actors/group14.elf: SEGMENT_ADDRESS := 0x06000000\n$(BUILD_DIR)/actors/group15.elf: SEGMENT_ADDRESS := 0x06000000\n$(BUILD_DIR)/actors/group16.elf: SEGMENT_ADDRESS := 0x06000000\n$(BUILD_DIR)/actors/group17.elf: SEGMENT_ADDRESS := 0x06000000\n$(BUILD_DIR)/actors/common0.elf: SEGMENT_ADDRESS := 0x08000000\n$(BUILD_DIR)/actors/common1.elf: SEGMENT_ADDRESS := 0x03000000\n\n# --------------------------------------\n# Level Rules\n# --------------------------------------\n\n$(BUILD_DIR)/levels/%/leveldata.elf: SEGMENT_ADDRESS := 0x07000000\n\n# TODO: Generate these rules from the level configs?\n\ndefine level_rules = \n    $(1)_SEG7_FILES     := $$(patsubst %.png,%.inc.c,$$(wildcard levels/$(1)/*.png))\n    $$(BUILD_DIR)/levels/$(1)/leveldata.o: $$(addprefix $$(BUILD_DIR)/,$$($(1)_SEG7_FILES))\n    $$(BUILD_DIR)/levels/$(1)/leveldata.elf: TEXTURE_BIN := $(2)\nendef\n\nifneq ($(MAKECMDGOALS),clean)\nifneq ($(MAKECMDGOALS),distclean)\n$(BUILD_DIR)/level_rules.mk: levels/level_rules.mk levels/level_defines.h\n\t$(call print,Preprocessing level make rules:,$<,$@)\n\t$(V)$(CPP) $(CPPFLAGS) $(VERSION_CFLAGS) -I . -o $@ $<\ninclude $(BUILD_DIR)/level_rules.mk\nendif\nendif\n\n# --------------------------------------\n# Extra Level Rules\n# --------------------------------------\n$(eval $(call level_rules,intro,generic)) # Intro (Super Mario 64 Logo)\n$(eval $(call level_rules,menu,generic)) # Menu (File Select)\n\n# --------------------------------------\n# Cake Texture Rules\n# --------------------------------------\n\n# Ending cake textures are generated in a special way\n$(BUILD_DIR)/levels/ending/cake_cn.inc.c: levels/ending/cake_cn.png\n\t$(call print,Splitting:,$<,$@)\n\t$(V)$(SKYCONV) --type cake-cn --split $^ $(BUILD_DIR)/levels/ending\n$(BUILD_DIR)/levels/ending/cake_eu.inc.c: levels/ending/cake_eu.png\n\t$(call print,Splitting:,$<,$@)\n\t$(V)$(SKYCONV) --type cake-eu --split $^ $(BUILD_DIR)/levels/ending\n$(BUILD_DIR)/levels/ending/cake.inc.c: levels/ending/cake.png\n\t$(call print,Splitting:,$<,$@)\n\t$(V)$(SKYCONV) --type cake --split $^ $(BUILD_DIR)/levels/ending\n\n# --------------------------------------\n# Texture Bin Rules\n# --------------------------------------\n\n# Others\nSEGMENT2_TEXTURES               := $(wildcard $(TEXTURE_DIR)/segment2/*.png)\nTITLE_SCREEN_BG_TEXTURES        := $(wildcard $(TEXTURE_DIR)/title_screen_bg/*.png)\nSPOOKY_TEXTURES                 := $(wildcard $(TEXTURE_DIR)/spooky/*.png)\nGENERIC_TEXTURES                := $(wildcard $(TEXTURE_DIR)/generic/*.png)\nOUTSIDE_TEXTURES                := $(wildcard $(TEXTURE_DIR)/outside/*.png)\nSNOW_TEXTURES                   := $(wildcard $(TEXTURE_DIR)/snow/*.png)\nEFFECT_TEXTURES                 := $(wildcard $(TEXTURE_DIR)/effect/*.png)\nCAVE_TEXTURES                   := $(wildcard $(TEXTURE_DIR)/cave/*.png)\nINSIDE_TEXTURES                 := $(wildcard $(TEXTURE_DIR)/inside/*.png)\nWATER_TEXTURES                  := $(wildcard $(TEXTURE_DIR)/water/*.png)\nFIRE_TEXTURES_TEXTURES          := $(wildcard $(TEXTURE_DIR)/fire/*.png)\nSKY_TEXTURES                    := $(wildcard $(TEXTURE_DIR)/sky/*.png)\nMACHINE_TEXTURES                := $(wildcard $(TEXTURE_DIR)/machine/*.png)\nMOUNTAIN_TEXTURES               := $(wildcard $(TEXTURE_DIR)/mountain/*.png)\nGRASS_TEXTURES                  := $(wildcard $(TEXTURE_DIR)/grass/*.png)\n\n# Texture Files\n$(BUILD_DIR)/bin/segment2.o:        $(SEGMENT2_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)\n$(BUILD_DIR)/bin/title_screen_bg.o: $(TITLE_SCREEN_BG_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)\n$(BUILD_DIR)/bin/spooky.o:          $(SPOOKY_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)\n$(BUILD_DIR)/bin/generic.o:         $(GENERIC_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)\n$(BUILD_DIR)/bin/outside.o:         $(OUTSIDE_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)\n$(BUILD_DIR)/bin/snow.o:            $(SNOW_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)\n$(BUILD_DIR)/bin/effect.o:          $(EFFECT_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)\n$(BUILD_DIR)/bin/cave.o:            $(CAVE_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)\n$(BUILD_DIR)/bin/inside.o:          $(INSIDE_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)\n$(BUILD_DIR)/bin/water.o:           $(WATER_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)\n$(BUILD_DIR)/bin/fire.o:            $(FIRE_TEXTURES_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)\n$(BUILD_DIR)/bin/sky.o:             $(SKY_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)\n$(BUILD_DIR)/bin/machine.o:         $(MACHINE_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)\n$(BUILD_DIR)/bin/mountain.o:        $(MOUNTAIN_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)\n$(BUILD_DIR)/bin/grass.o:           $(GRASS_TEXTURES:%.png=$(BUILD_DIR)/%.inc.c)\n\n# Others\n$(BUILD_DIR)/bin/segment2.elf:           SEGMENT_ADDRESS := 0x02000000\n$(BUILD_DIR)/bin/title_screen_bg.elf:    SEGMENT_ADDRESS := 0x0A000000\n$(BUILD_DIR)/bin/debug_level_select.elf: SEGMENT_ADDRESS := 0x07000000\n$(BUILD_DIR)/bin/effect.elf:             SEGMENT_ADDRESS := 0x0B000000\n$(BUILD_DIR)/bin/spooky.elf:             SEGMENT_ADDRESS := 0x09000000\n$(BUILD_DIR)/bin/generic.elf:            SEGMENT_ADDRESS := 0x09000000\n$(BUILD_DIR)/bin/outside.elf:            SEGMENT_ADDRESS := 0x09000000\n$(BUILD_DIR)/bin/snow.elf:               SEGMENT_ADDRESS := 0x09000000\n$(BUILD_DIR)/bin/cave.elf:               SEGMENT_ADDRESS := 0x09000000\n$(BUILD_DIR)/bin/inside.elf:             SEGMENT_ADDRESS := 0x09000000\n$(BUILD_DIR)/bin/water.elf:              SEGMENT_ADDRESS := 0x09000000\n$(BUILD_DIR)/bin/fire.elf:               SEGMENT_ADDRESS := 0x09000000\n$(BUILD_DIR)/bin/sky.elf:                SEGMENT_ADDRESS := 0x09000000\n$(BUILD_DIR)/bin/machine.elf:            SEGMENT_ADDRESS := 0x09000000\n$(BUILD_DIR)/bin/mountain.elf:           SEGMENT_ADDRESS := 0x09000000\n$(BUILD_DIR)/bin/grass.elf:              SEGMENT_ADDRESS := 0x09000000\n# EU segment 19 translations\n$(BUILD_DIR)/bin/eu/translation_de.elf:  SEGMENT_ADDRESS := 0x19000000\n$(BUILD_DIR)/bin/eu/translation_en.elf:  SEGMENT_ADDRESS := 0x19000000\n$(BUILD_DIR)/bin/eu/translation_fr.elf:  SEGMENT_ADDRESS := 0x19000000\n\n# --------------------------------------\n# Skybox Rules\n# --------------------------------------\n\n$(BUILD_DIR)/bin/%_skybox.c: textures/skyboxes/%.png\n\t$(call print,Splitting:,$<,$@)\n\t$(V)$(SKYCONV) --type sky --split $^ $(BUILD_DIR)/bin\n\n$(BUILD_DIR)/bin/%_skybox.elf: SEGMENT_ADDRESS := 0x0A000000\n\n# --------------------------------------\n# Misc Rules\n# --------------------------------------\n\n# intro and ipl3 textures are not compressed\nINTRO_RAW_FILES              := $(wildcard $(TEXTURE_DIR)/intro_raw/*.png)\n$(BUILD_DIR)/src/goddard/renderer.o: $(addprefix $(BUILD_DIR)/,$(patsubst %.png,%.inc.c,$(INTRO_RAW_FILES)))\n\nIPL3_TEXTURE_FILES          := $(wildcard $(TEXTURE_DIR)/ipl3_raw/*.png)\nIPL3_RAW_FILES              := $(addprefix $(BUILD_DIR)/,$(patsubst %.png,%,$(IPL3_TEXTURE_FILES)))\n\nCRASH_TEXTURE_FILES         := $(wildcard $(TEXTURE_DIR)/crash_screen/*.png)\nCRASH_TEXTURE_C_FILES       := $(addprefix $(BUILD_DIR)/,$(patsubst %.png,%.inc.c,$(CRASH_TEXTURE_FILES)))\n"
  },
  {
    "path": "README.md",
    "content": "# Super Mario 64\n\n- This repo contains a full decompilation of Super Mario 64 of the following releases: Japan (jp), North America (us), Europe (eu), Shindou (sh) and iQue Player (cn).\n- Naming and documentation of the source code and data structures are in progress.\n\nIt builds the following ROMs:\n\n* sm64.jp.z64 `sha1: 8a20a5c83d6ceb0f0506cfc9fa20d8f438cafe51`\n* sm64.us.z64 `sha1: 9bef1128717f958171a4afac3ed78ee2bb4e86ce`\n* sm64.eu.z64 `sha1: 4ac5721683d0e0b6bbb561b58a71740845dceea9`\n* sm64.sh.z64 `sha1: 3f319ae697533a255a1003d09202379d78d5a2e0`\n* sm64.cn.z64 `sha1: 2e1db2780985a1f068077dc0444b685f39cd90ec`\n\nThis repo does not include all assets necessary for compiling the ROMs.\nA prior copy of the game is required to extract the assets.\n\n## Quick Start (for Ubuntu)\n\n1. Install prerequisites: `sudo apt install -y binutils-mips-linux-gnu build-essential git pkgconf python3`\n2. Clone the repo from within Linux: `git clone https://github.com/n64decomp/sm64.git`\n3. Place a Super Mario 64 ROM called `baserom.<VERSION>.z64` into the project folder for asset extraction, where `VERSION` can be `jp`, `us`, `eu`, `sh`, or `cn`.\n4. Run `make` to build. Specify the version through `make VERSION=<VERSION>`. Add `-j4` to improve build speed (hardware dependent).\n\nEnsure the repo path length does not exceed 255 characters. Long path names result in build errors.\n\n## Installation\n\n### Windows\n\nInstall WSL and a distro of your choice following\n[Windows Subsystem for Linux Installation Guide for Windows 10.](https://docs.microsoft.com/en-us/windows/wsl/install-win10)\nWe recommend either Debian or Ubuntu 18.04 Linux distributions under WSL.\nNote: WSL1 does not currently support Ubuntu 20.04.\n\nNext, clone the SM64 repo from within the Linux shell:\n`git clone https://github.com/n64decomp/sm64.git`\n\nThen continue following the directions in the [Linux](#linux) installation section below.\n\n### Linux\n\nThere are 3 steps to set up a working build.\n\n#### Step 1: Install dependencies\n\nThe build system has the following package requirements:\n * binutils-mips\n * pkgconf\n * python3 >= 3.6\n\nDependency installation instructions for common Linux distros are provided below:\n\n##### Debian / Ubuntu\nTo install build dependencies:\n```\nsudo apt install -y binutils-mips-linux-gnu build-essential git pkgconf python3\n```\n\n##### Arch Linux\nTo install build dependencies:\n```\nsudo pacman -S base-devel python\n```\nInstall the following AUR packages:\n* [mips64-elf-binutils](https://aur.archlinux.org/packages/mips64-elf-binutils) (AUR)\n\n##### Other Linux distributions\n\nMost modern Linux distributions should have equivalent packages to the other two listed above.\nYou may have to use a different version of GNU binutils. Listed below are fully compatible binutils\ndistributions with support in the makefile, and examples of distros that offer them:\n\n* `mips64-elf-` (Arch AUR)\n* `mips-linux-gnu-` (Ubuntu and other Debian-based distros)\n* `mips64-linux-gnu-` (RHEL/CentOS/Fedora)\n\nYou may also use [Docker](#docker-installation) to handle installing an image with minimal dependencies.\n\n#### Step 2: Copy baserom(s) for asset extraction\n\nFor each version (jp/us/eu/sh/cn) for which you want to build a ROM, put an existing ROM at\n`./baserom.<VERSION>.z64` for asset extraction.\n\n##### Step 3: Build the ROM\n\nRun `make` to build the ROM (defaults to `VERSION=us`).\nOther examples:\n```\nmake VERSION=jp -j4       # build (J) version instead with 4 jobs\nmake VERSION=eu COMPARE=0 # build (EU) version but do not compare ROM hashes\n```\n\nResulting artifacts can be found in the `build` directory.\n\nThe full list of configurable variables are listed below, with the default being the first listed:\n\n* ``VERSION``: ``jp``, ``us``, ``eu``, ``sh``, ``cn``\n* ``GRUCODE``: ``f3d_old``, ``f3d_new``, ``f3dex``, ``f3dex2``, ``f3dzex``\n* ``COMPARE``: ``1`` (compare ROM hash), ``0`` (do not compare ROM hash)\n* ``NON_MATCHING``: Use functionally equivalent C implementations for non-matchings. Also will avoid instances of undefined behavior.\n* ``CROSS``: Cross-compiler tool prefix (Example: ``mips64-elf-``).\n\n### macOS\n\nWith macOS, you may either use Homebrew or [Docker](#docker-installation).\n\n#### Homebrew\n\n#### Step 1: Install dependencies\nInstall [Homebrew](https://brew.sh) and the following dependencies:\n```\nbrew update\nbrew install coreutils make pkg-config tehzz/n64-dev/mips64-elf-binutils\n```\n\n#### Step 2: Copy baserom(s) for asset extraction\n\nFor each version (jp/us/eu/sh/cn) for which you want to build a ROM, put an existing ROM at\n`./baserom.<VERSION>.z64` for asset extraction.\n\n##### Step 3: Build the ROM\n\nUse Homebrew's GNU make because the version included with macOS is too old.\n\n```\ngmake VERSION=jp -j4       # build (J) version instead with 4 jobs\n```\n\n### Docker Installation\n\n#### Create Docker image\n\nAfter installing and starting Docker, create the docker image. This only needs to be done once.\n```\ndocker build -t sm64 .\n```\n\n#### Build\n\nTo build, mount the local filesystem into the Docker container and build the ROM with `docker run sm64 make`.\n\n##### macOS example for (U):\n```\ndocker run --rm --mount type=bind,source=\"$(pwd)\",destination=/sm64 sm64 make VERSION=us -j4\n```\n\n##### Linux example for (U):\nFor a Linux host, Docker needs to be instructed which user should own the output files:\n```\ndocker run --rm --mount type=bind,source=\"$(pwd)\",destination=/sm64 --user $UID:$GID sm64 make VERSION=us -j4\n```\n\nResulting artifacts can be found in the `build` directory.\n\n## Project Structure\n\n\tsm64\n\t├── actors: object behaviors, geo layout, and display lists\n\t├── asm: handwritten assembly code, rom header\n\t│   └── non_matchings: asm for non-matching sections\n\t├── assets: animation and demo data\n\t│   ├── anims: animation data\n\t│   └── demos: demo data\n\t├── bin: C files for ordering display lists and textures\n\t├── build: output directory\n\t├── data: behavior scripts, misc. data\n\t├── doxygen: documentation infrastructure\n\t├── enhancements: example source modifications\n\t├── include: header files\n\t├── levels: level scripts, geo layout, and display lists\n\t├── lib: SDK library code\n\t├── rsp: audio and Fast3D RSP assembly code\n\t├── sound: sequences, sound samples, and sound banks\n\t├── src: C source code for game\n\t│   ├── audio: audio code\n\t│   ├── buffers: stacks, heaps, and task buffers\n\t│   ├── engine: script processing engines and utils\n\t│   ├── game: behaviors and rest of game source\n\t│   ├── goddard: Mario intro screen\n\t│   └── menu: title screen and file, act, and debug level selection menus\n\t├── text: dialog, level names, act names\n\t├── textures: skybox and generic texture data\n\t└── tools: build tools\n\n## Contributing\n\nPull requests are welcome. For major changes, please open an issue first to\ndiscuss what you would like to change.\n\nRun `clang-format` on your code to ensure it meets the project's coding standards.\n\nOfficial Discord: [discord.gg/DuYH3Fh](https://discord.gg/DuYH3Fh)\n"
  },
  {
    "path": "actors/amp/anims/animation.inc.c",
    "content": "static const s16 dAmpAnimValue[] = {\n    0x0000, 0x0000, 0x0D79, 0x1AF2, 0x286B, 0x35E4, 0x435D, 0x50D6,\n    0x5E50, 0x6BC9, 0x7942, 0x86BE, 0x9437, 0xA1B0, 0xAF2A, 0xBCA3,\n    0xCA1C, 0xD795, 0xE50E, 0xF287, 0x1872, 0x0000, 0x1AF2, 0x35E4,\n    0x50D6, 0x6BC9, 0x86BE, 0xA1B0, 0xBCA3, 0xD795, 0xF287, 0x0D79,\n    0x286B, 0x435D, 0x5E50, 0x7942, 0x9437, 0xAF2A, 0xCA1C, 0xE50E,\n    0x0000, 0x1AF2, 0x35E4, 0x50D6, 0x6BC9, 0x86BE, 0xA1B0, 0xBCA3,\n    0xD795, 0xF287, 0x0D79, 0x286B, 0x435D, 0x5E50, 0x7942, 0x9437,\n    0xAF2A, 0xCA1C, 0xE50E, 0x8001, 0x5793, 0x2F28, 0x06BC, 0xDE52,\n    0xB5E6, 0x8D7B, 0x650C, 0x3CA1, 0x1435, 0xEBCB, 0xC35F, 0x9AF4,\n    0x7285, 0x4A1A, 0x21AE, 0xF944, 0xD0D8, 0xA86D, 0x3FFF, 0x0000,\n    0x0D7C, 0x1AF9, 0x2876, 0x35F3, 0x4370, 0x50ED, 0x5E6A, 0x6BE7,\n    0x7964, 0x86E3, 0x9460, 0xA1DD, 0xAF5A, 0xBCD7, 0xCA54, 0xD7D1,\n    0xE54E, 0xF2CB, 0xC001, 0x3FFF, 0x0000, 0x0D7B, 0x1AF7, 0x2873,\n    0x35EF, 0x436B, 0x50E6, 0x5E62, 0x6BDE, 0x795A, 0x86D9, 0x9455,\n    0xA1D0, 0xAF4C, 0xBCC8, 0xCA44, 0xD7C0, 0xE53B, 0xF2B7, 0xC001,\n    0x3FFF, 0xC001, 0xCD7A, 0xDAF2, 0xE86B, 0xF5E3, 0x035B, 0x10D3,\n    0x1E4C, 0x2BC4, 0x393D, 0x46B5, 0x542E, 0x61A6, 0x6F1F, 0x7C97,\n    0x8A13, 0x978B, 0xA504, 0xB27D, 0xC001, 0x3FFF, 0x4D79, 0x5AF2,\n    0x686C, 0x75E5, 0x8362, 0x90DB, 0x9E55, 0xABCF, 0xB948, 0xC6C2,\n    0xD43B, 0xE1B5, 0xEF2F, 0xFCA8, 0x0A21, 0x179A, 0x2514, 0x328D,\n    0xC001, 0x3FFF,\n};\n\nstatic const u16 dAmpAnimIndex[] = {\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00A1,\n    0x0001, 0x0000, 0x0013, 0x008D, 0x0001, 0x00A0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0013, 0x0001,\n    0x0001, 0x0000, 0x0013, 0x0079, 0x0001, 0x008C,\n    0x0001, 0x0014, 0x0001, 0x0000, 0x0013, 0x0015,\n    0x0001, 0x0000, 0x0013, 0x0064, 0x0001, 0x0077,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0013, 0x0028,\n    0x0001, 0x0000, 0x0013, 0x004F, 0x0001, 0x0062,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0013, 0x003B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0078,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0063,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x004E,\n};\n\nstatic const struct Animation dAmpAnimation = {\n    0,\n    0,\n    0,\n    0,\n    0x13,\n    ANIMINDEX_NUMPARTS(dAmpAnimIndex),\n    dAmpAnimValue,\n    dAmpAnimIndex,\n    0,\n};\n"
  },
  {
    "path": "actors/amp/anims/data.inc.c",
    "content": "#include \"animation.inc.c\"\n"
  },
  {
    "path": "actors/amp/anims/table.inc.c",
    "content": "const struct Animation *const dAmpAnimsList[] = {\n    &dAmpAnimation,\n};\n"
  },
  {
    "path": "actors/amp/geo.inc.c",
    "content": "const GeoLayout dAmpGeo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xC8, 100),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, dAmpEyeDl),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_SWITCH_CASE(2, geo_switch_anim_state),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                            GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, dAmpElectricityDl),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_SWITCH_CASE(2, geo_switch_anim_state),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                            GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, dAmpElectricityDl),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_SWITCH_CASE(2, geo_switch_anim_state),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                            GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, dAmpElectricityDl),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_SWITCH_CASE(2, geo_switch_anim_state),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                            GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, dAmpElectricityDl),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, dAmpMouthDl),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_BILLBOARD(),\n                    GEO_OPEN_NODE(),\n                        GEO_DISPLAY_LIST(LAYER_ALPHA, dAmpBodyDl),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/amp/model.inc.c",
    "content": "// Amp\n\nALIGNED8 static const Texture dAmpElectricityTexture[] = {\n#include \"actors/amp/amp_electricity.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture dAmpEyesTexture[] = {\n#include \"actors/amp/amp_eyes.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture dAmpBodyTexture[] = {\n#include \"actors/amp/amp_body.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture dAmpMouthTexture[] = {\n#include \"actors/amp/amp_mouth.rgba16.inc.c\"\n};\n\nstatic const Vtx dAmpElectricityVertices[] = {\n    {{{   224,      0,    -89}, 0, {     0,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   187,    149,      0}, 0, {   223,   1078}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   224,      0,     90}, 0, {   479,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   187,   -148,      0}, 0, {   224,   -122}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   224,      0,    -89}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\nconst Gfx dAmpElectricitySubDl[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dAmpElectricityTexture),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(dAmpElectricityVertices, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\nconst Gfx dAmpElectricityDl[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(dAmpElectricitySubDl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\nstatic const Vtx dAmpEyeVertices[] = {\n    {{{    68,     72,    158}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -27,    -71,    164}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    68,    -71,    158}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -27,     72,    164}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\nconst Gfx dAmpEyeSubDl[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dAmpEyesTexture),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(dAmpEyeVertices, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\nconst Gfx dAmpEyeDl[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(dAmpEyeSubDl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\nstatic const Vtx dAmpMouthVertices[] = {\n    {{{   -29,     72,    164}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -124,    -71,    121}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -29,    -71,    164}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -124,     72,    121}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\nconst Gfx dAmpMouthSubDl[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dAmpMouthTexture),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(dAmpMouthVertices, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\nconst Gfx dAmpMouthDl[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(dAmpMouthSubDl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\nstatic const Vtx dAmpBodyVertices[] = {\n    {{{   -39,    -39,      0}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    40,     40,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -39,     40,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    40,    -39,      0}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\nconst Gfx dAmpBodySubDl[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dAmpBodyTexture),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(dAmpBodyVertices, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\nconst Gfx dAmpBodyDl[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(dAmpBodySubDl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n/**\n * Everything beyond this point is unused, and seems to be an attempt at a 3D modelled\n * amp. The model and attempt are overall slightly buggy, with misread lights and a slightly\n * broken model.\n */\n\nUNUSED static const Lights1 dAmpUnused3DLights = gdSPDefLights1(\n    0x33, 0x3f, 0x00,\n    0xcf, 0xff, 0x00, 0x28, 0x28, 0x28\n);\n\nUNUSED static const Vtx dAmpUnused3DVtx01[] = {\n    {{{   280,      0,     35}, 0, {     0,      0}, {0x7b, 0xe2, 0x00, 0x00}}},\n    {{{   240,   -160,      0}, 0, {     0,      0}, {0x7b, 0xe2, 0x00, 0x00}}},\n    {{{   280,      0,    -35}, 0, {     0,      0}, {0x7b, 0xe2, 0x00, 0x00}}},\n    {{{   280,      0,    -35}, 0, {     0,      0}, {0x7b, 0x1e, 0x00, 0xff}}},\n    {{{   240,    160,      0}, 0, {     0,      0}, {0x7b, 0x1e, 0x00, 0xff}}},\n    {{{   280,      0,     35}, 0, {     0,      0}, {0x7b, 0x1e, 0x00, 0xff}}},\n};\n\nUNUSED static const Vtx dAmpUnused3DVtx02[] = {\n    {{{   280,      0,     35}, 0, {     0,      0}, {0x7b, 0xe2, 0x00, 0x00}}},\n    {{{   240,   -160,      0}, 0, {     0,      0}, {0x7b, 0xe2, 0x00, 0x00}}},\n    {{{   280,      0,    -35}, 0, {     0,      0}, {0x7b, 0xe2, 0x00, 0x00}}},\n    {{{   280,      0,    -35}, 0, {     0,      0}, {0x7b, 0x1e, 0x00, 0xff}}},\n    {{{   240,    160,      0}, 0, {     0,      0}, {0x7b, 0x1e, 0x00, 0xff}}},\n    {{{   280,      0,     35}, 0, {     0,      0}, {0x7b, 0x1e, 0x00, 0xff}}},\n};\n\nUNUSED static const Vtx dAmpUnused3DVtx03[] = {\n    {{{   280,      0,     35}, 0, {     0,      0}, {0x7b, 0xe2, 0x00, 0x00}}},\n    {{{   240,   -160,      0}, 0, {     0,      0}, {0x7b, 0xe2, 0x00, 0x00}}},\n    {{{   280,      0,    -35}, 0, {     0,      0}, {0x7b, 0xe2, 0x00, 0x00}}},\n    {{{   280,      0,    -35}, 0, {     0,      0}, {0x7b, 0x1e, 0x00, 0xff}}},\n    {{{   240,    160,      0}, 0, {     0,      0}, {0x7b, 0x1e, 0x00, 0xff}}},\n    {{{   280,      0,     35}, 0, {     0,      0}, {0x7b, 0x1e, 0x00, 0xff}}},\n};\n\nUNUSED static const Vtx dAmpUnused3DVtx04[] = {\n    {{{   280,      0,    -35}, 0, {     0,      0}, {0x7b, 0x1e, 0x00, 0x00}}},\n    {{{   240,    160,      0}, 0, {     0,      0}, {0x7b, 0x1e, 0x00, 0x00}}},\n    {{{   280,      0,     35}, 0, {     0,      0}, {0x7b, 0x1e, 0x00, 0x00}}},\n    {{{   280,      0,     35}, 0, {     0,      0}, {0x7b, 0xe2, 0x00, 0xff}}},\n    {{{   240,   -160,      0}, 0, {     0,      0}, {0x7b, 0xe2, 0x00, 0xff}}},\n    {{{   280,      0,    -35}, 0, {     0,      0}, {0x7b, 0xe2, 0x00, 0xff}}},\n};\n\nUNUSED static const Vtx dAmpUnused3DVtx05[] = {\n    {{{  -184,    -54,    -54}, 0, {     0,      0}, {0x8b, 0xde, 0xde, 0x00}}},\n    {{{  -184,    -76,      0}, 0, {     0,      0}, {0x8b, 0xd0, 0x00, 0x00}}},\n    {{{  -200,      0,      0}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{  -141,   -100,   -100}, 0, {     0,      0}, {0xa6, 0xc1, 0xc1, 0xff}}},\n    {{{  -141,   -141,      0}, 0, {     0,      0}, {0xa6, 0xa7, 0x00, 0xff}}},\n    {{{   -76,   -130,   -130}, 0, {     0,      0}, {0xd0, 0xae, 0xae, 0xff}}},\n    {{{   -76,   -184,      0}, 0, {     0,      0}, {0xd0, 0x8b, 0x00, 0xff}}},\n    {{{     0,   -141,   -141}, 0, {     0,      0}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{     0,   -200,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    76,   -130,   -130}, 0, {     0,      0}, {0x30, 0xae, 0xae, 0xff}}},\n    {{{    76,   -184,      0}, 0, {     0,      0}, {0x30, 0x8b, 0x00, 0xff}}},\n    {{{   141,   -100,   -100}, 0, {     0,      0}, {0x5a, 0xc1, 0xc1, 0xff}}},\n    {{{   141,   -141,      0}, 0, {     0,      0}, {0x5a, 0xa7, 0x00, 0xff}}},\n    {{{   184,    -54,    -54}, 0, {     0,      0}, {0x75, 0xde, 0xde, 0xff}}},\n    {{{   184,    -76,      0}, 0, {     0,      0}, {0x75, 0xd0, 0x00, 0xff}}},\n    {{{   200,      0,      0}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\nUNUSED static const Vtx dAmpUnused3DVtx06[] = {\n    {{{  -184,      0,    -76}, 0, {     0,      0}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{  -184,    -54,    -54}, 0, {     0,      0}, {0x8b, 0xde, 0xde, 0x00}}},\n    {{{  -200,      0,      0}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{  -141,      0,   -141}, 0, {     0,      0}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{  -141,   -100,   -100}, 0, {     0,      0}, {0xa6, 0xc1, 0xc1, 0xff}}},\n    {{{   -76,      0,   -184}, 0, {     0,      0}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{   -76,   -130,   -130}, 0, {     0,      0}, {0xd0, 0xae, 0xae, 0xff}}},\n    {{{     0,      0,   -200}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,   -141,   -141}, 0, {     0,      0}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{    76,      0,   -184}, 0, {     0,      0}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{    76,   -130,   -130}, 0, {     0,      0}, {0x30, 0xae, 0xae, 0xff}}},\n    {{{   141,      0,   -141}, 0, {     0,      0}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{   141,   -100,   -100}, 0, {     0,      0}, {0x5a, 0xc1, 0xc1, 0xff}}},\n    {{{   184,      0,    -76}, 0, {     0,      0}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{   184,    -54,    -54}, 0, {     0,      0}, {0x75, 0xde, 0xde, 0xff}}},\n    {{{   200,      0,      0}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\nUNUSED static const Vtx dAmpUnused3DVtx07[] = {\n    {{{  -184,     54,    -54}, 0, {     0,      0}, {0x8b, 0x22, 0xde, 0xff}}},\n    {{{  -184,      0,    -76}, 0, {     0,      0}, {0x8b, 0x00, 0xd0, 0x00}}},\n    {{{  -200,      0,      0}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{  -141,    100,   -100}, 0, {     0,      0}, {0xa6, 0x3f, 0xc1, 0xff}}},\n    {{{  -141,      0,   -141}, 0, {     0,      0}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{   -76,    130,   -130}, 0, {     0,      0}, {0xd0, 0x52, 0xae, 0xff}}},\n    {{{   -76,      0,   -184}, 0, {     0,      0}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{     0,    141,   -141}, 0, {     0,      0}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{     0,      0,   -200}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    76,    130,   -130}, 0, {     0,      0}, {0x30, 0x52, 0xae, 0xff}}},\n    {{{    76,      0,   -184}, 0, {     0,      0}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{   141,    100,   -100}, 0, {     0,      0}, {0x5a, 0x3f, 0xc1, 0xff}}},\n    {{{   141,      0,   -141}, 0, {     0,      0}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{   184,     54,    -54}, 0, {     0,      0}, {0x75, 0x22, 0xde, 0xff}}},\n    {{{   184,      0,    -76}, 0, {     0,      0}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{   200,      0,      0}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\nUNUSED static const Vtx dAmpUnused3DVtx08[] = {\n    {{{  -184,     76,      0}, 0, {     0,      0}, {0x8b, 0x30, 0x00, 0xff}}},\n    {{{  -184,     54,    -54}, 0, {     0,      0}, {0x8b, 0x22, 0xde, 0x00}}},\n    {{{  -200,      0,      0}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{  -141,    141,      0}, 0, {     0,      0}, {0xa6, 0x59, 0x00, 0xff}}},\n    {{{  -141,    100,   -100}, 0, {     0,      0}, {0xa6, 0x3f, 0xc1, 0xff}}},\n    {{{   -76,    184,      0}, 0, {     0,      0}, {0xd0, 0x75, 0x00, 0xff}}},\n    {{{   -76,    130,   -130}, 0, {     0,      0}, {0xd0, 0x52, 0xae, 0xff}}},\n    {{{     0,    200,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    141,   -141}, 0, {     0,      0}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{    76,    184,      0}, 0, {     0,      0}, {0x30, 0x75, 0x00, 0xff}}},\n    {{{    76,    130,   -130}, 0, {     0,      0}, {0x30, 0x52, 0xae, 0xff}}},\n    {{{   141,    141,      0}, 0, {     0,      0}, {0x5a, 0x59, 0x00, 0xff}}},\n    {{{   141,    100,   -100}, 0, {     0,      0}, {0x5a, 0x3f, 0xc1, 0xff}}},\n    {{{   184,     76,      0}, 0, {     0,      0}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{   184,     54,    -54}, 0, {     0,      0}, {0x75, 0x22, 0xde, 0xff}}},\n    {{{   200,      0,      0}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\nUNUSED static const Vtx dAmpUnused3DVtx09[] = {\n    {{{  -184,     54,     54}, 0, {     0,      0}, {0x8b, 0x22, 0x22, 0xff}}},\n    {{{  -184,     76,      0}, 0, {     0,      0}, {0x8b, 0x30, 0x00, 0x00}}},\n    {{{  -200,      0,      0}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{  -141,    100,    100}, 0, {     0,      0}, {0xa6, 0x3f, 0x3f, 0xff}}},\n    {{{  -141,    141,      0}, 0, {     0,      0}, {0xa6, 0x59, 0x00, 0xff}}},\n    {{{   -76,    130,    130}, 0, {     0,      0}, {0xd0, 0x52, 0x52, 0xff}}},\n    {{{   -76,    184,      0}, 0, {     0,      0}, {0xd0, 0x75, 0x00, 0xff}}},\n    {{{     0,    141,    141}, 0, {     0,      0}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{     0,    200,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    76,    130,    130}, 0, {     0,      0}, {0x30, 0x52, 0x52, 0xff}}},\n    {{{    76,    184,      0}, 0, {     0,      0}, {0x30, 0x75, 0x00, 0xff}}},\n    {{{   141,    100,    100}, 0, {     0,      0}, {0x5a, 0x3f, 0x3f, 0xff}}},\n    {{{   141,    141,      0}, 0, {     0,      0}, {0x5a, 0x59, 0x00, 0xff}}},\n    {{{   184,     54,     54}, 0, {     0,      0}, {0x75, 0x22, 0x22, 0xff}}},\n    {{{   184,     76,      0}, 0, {     0,      0}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{   200,      0,      0}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\nUNUSED static const Vtx dAmpUnused3DVtx10[] = {\n    {{{  -184,      0,     76}, 0, {     0,      0}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{  -184,     54,     54}, 0, {     0,      0}, {0x8b, 0x22, 0x22, 0x00}}},\n    {{{  -200,      0,      0}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{  -141,      0,    141}, 0, {     0,      0}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  -141,    100,    100}, 0, {     0,      0}, {0xa6, 0x3f, 0x3f, 0xff}}},\n    {{{   -76,      0,    184}, 0, {     0,      0}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{   -76,    130,    130}, 0, {     0,      0}, {0xd0, 0x52, 0x52, 0xff}}},\n    {{{     0,      0,    200}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,    141,    141}, 0, {     0,      0}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{    76,      0,    184}, 0, {     0,      0}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{    76,    130,    130}, 0, {     0,      0}, {0x30, 0x52, 0x52, 0xff}}},\n    {{{   141,      0,    141}, 0, {     0,      0}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{   141,    100,    100}, 0, {     0,      0}, {0x5a, 0x3f, 0x3f, 0xff}}},\n    {{{   184,      0,     76}, 0, {     0,      0}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{   184,     54,     54}, 0, {     0,      0}, {0x75, 0x22, 0x22, 0xff}}},\n    {{{   200,      0,      0}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\nUNUSED static const Vtx dAmpUnused3DVtx11[] = {\n    {{{  -184,    -54,     54}, 0, {     0,      0}, {0x8b, 0xde, 0x22, 0xff}}},\n    {{{  -184,      0,     76}, 0, {     0,      0}, {0x8b, 0x00, 0x30, 0x00}}},\n    {{{  -200,      0,      0}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{  -141,   -100,    100}, 0, {     0,      0}, {0xa6, 0xc1, 0x3f, 0xff}}},\n    {{{  -141,      0,    141}, 0, {     0,      0}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{   -76,   -130,    130}, 0, {     0,      0}, {0xd0, 0xae, 0x52, 0xff}}},\n    {{{   -76,      0,    184}, 0, {     0,      0}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{     0,   -141,    141}, 0, {     0,      0}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{     0,      0,    200}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    76,   -130,    130}, 0, {     0,      0}, {0x30, 0xae, 0x52, 0xff}}},\n    {{{    76,      0,    184}, 0, {     0,      0}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{   141,   -100,    100}, 0, {     0,      0}, {0x5a, 0xc1, 0x3f, 0xff}}},\n    {{{   141,      0,    141}, 0, {     0,      0}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{   184,    -54,     54}, 0, {     0,      0}, {0x75, 0xde, 0x22, 0xff}}},\n    {{{   184,      0,     76}, 0, {     0,      0}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{   200,      0,      0}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\nUNUSED static const Vtx dAmpUnused3DVtx12[] = {\n    {{{  -184,    -76,      0}, 0, {     0,      0}, {0x8b, 0xd0, 0x00, 0xff}}},\n    {{{  -184,    -54,     54}, 0, {     0,      0}, {0x8b, 0xde, 0x22, 0x00}}},\n    {{{  -200,      0,      0}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{  -141,   -141,      0}, 0, {     0,      0}, {0xa6, 0xa7, 0x00, 0xff}}},\n    {{{  -141,   -100,    100}, 0, {     0,      0}, {0xa6, 0xc1, 0x3f, 0xff}}},\n    {{{   -76,   -184,      0}, 0, {     0,      0}, {0xd0, 0x8b, 0x00, 0xff}}},\n    {{{   -76,   -130,    130}, 0, {     0,      0}, {0xd0, 0xae, 0x52, 0xff}}},\n    {{{     0,   -200,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     0,   -141,    141}, 0, {     0,      0}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{    76,   -184,      0}, 0, {     0,      0}, {0x30, 0x8b, 0x00, 0xff}}},\n    {{{    76,   -130,    130}, 0, {     0,      0}, {0x30, 0xae, 0x52, 0xff}}},\n    {{{   141,   -141,      0}, 0, {     0,      0}, {0x5a, 0xa7, 0x00, 0xff}}},\n    {{{   141,   -100,    100}, 0, {     0,      0}, {0x5a, 0xc1, 0x3f, 0xff}}},\n    {{{   184,    -76,      0}, 0, {     0,      0}, {0x75, 0xd0, 0x00, 0xff}}},\n    {{{   184,    -54,     54}, 0, {     0,      0}, {0x75, 0xde, 0x22, 0xff}}},\n    {{{   200,      0,      0}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\nUNUSED static const Vtx dAmpUnused3DVtx13[] = {\n    {{{   -37,     90,    205}, 0, {     0,      0}, {0xcc, 0x00, 0x73, 0x00}}},\n    {{{  -129,     90,    163}, 0, {     0,      0}, {0xcc, 0x00, 0x73, 0x00}}},\n    {{{  -129,    -90,    163}, 0, {     0,      0}, {0xcc, 0x00, 0x73, 0x00}}},\n    {{{   -37,    -90,    205}, 0, {     0,      0}, {0xcc, 0x00, 0x73, 0xff}}},\n};\n\nUNUSED static const Vtx dAmpUnused3DVtx14[] = {\n    {{{   112,     -7,    182}, 0, {     0,      0}, {0x4c, 0xd8, 0x5c, 0x00}}},\n    {{{    66,   -139,    162}, 0, {     0,      0}, {0x4c, 0xd8, 0x5c, 0x00}}},\n    {{{   175,    -77,     98}, 0, {     0,      0}, {0x4c, 0xd8, 0x5c, 0x00}}},\n};\n\nUNUSED static const Vtx dAmpUnused3DVtx15[] = {\n    {{{    63,     90,    198}, 0, {     0,      0}, {0x08, 0x00, 0x7e, 0x00}}},\n    {{{   -35,     90,    205}, 0, {     0,      0}, {0x08, 0x00, 0x7e, 0x00}}},\n    {{{   -35,    -90,    205}, 0, {     0,      0}, {0x08, 0x00, 0x7e, 0x00}}},\n    {{{    63,    -90,    198}, 0, {     0,      0}, {0x08, 0x00, 0x7e, 0xff}}},\n};\n\nUNUSED const Gfx dAmpUnused3DElectricDl1[] = {\n    gsSPLight(&dAmpUnused3DLights.l, 1),\n    gsSPLight(&dAmpUnused3DLights.a, 2),\n    gsSPVertex(dAmpUnused3DVtx01, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\nUNUSED const Gfx dAmpUnused3DElectricDl2[] = {\n    gsSPLight(&dAmpUnused3DLights.l, 1),\n    gsSPLight(&dAmpUnused3DLights.a, 2),\n    gsSPVertex(dAmpUnused3DVtx02, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\nUNUSED const Gfx dAmpUnused3DElectricDl3[] = {\n    gsSPLight(&dAmpUnused3DLights.l, 1),\n    gsSPLight(&dAmpUnused3DLights.a, 2),\n    gsSPVertex(dAmpUnused3DVtx03, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\nUNUSED const Gfx dAmpUnused3DElectricDl4[] = {\n    gsSPLight(&dAmpUnused3DLights.l, 1),\n    gsSPLight(&dAmpUnused3DLights.a, 2),\n    gsSPVertex(dAmpUnused3DVtx04, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\nUNUSED const Gfx dAmpUnused3DModelDl[] = {\n    //! Vertex interpreted as light\n    gsSPLight((const u8*)dAmpUnused3DVtx01 + 0x8, 1),\n    gsSPLight((const u8*)dAmpUnused3DVtx01, 2),\n    gsSPVertex(dAmpUnused3DVtx05, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(dAmpUnused3DVtx06, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(dAmpUnused3DVtx07, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(dAmpUnused3DVtx08, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(dAmpUnused3DVtx09, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(dAmpUnused3DVtx10, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(dAmpUnused3DVtx11, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(dAmpUnused3DVtx12, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\nUNUSED const Gfx dAmpUnused3DElectricDl5[] = {\n    //! Vertex interpreted as light\n    gsSPLight((const u8*)dAmpUnused3DVtx01 + 0x8, 1),\n    gsSPLight((const u8*)dAmpUnused3DVtx01, 2),\n    gsSPVertex(dAmpUnused3DVtx13, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\nUNUSED const Gfx dAmpUnused3DElectricDl6[] = {\n    //! Vertex interpreted as light\n    gsSPLight((const u8*)dAmpUnused3DVtx01 + 0x8, 1),\n    gsSPLight((const u8*)dAmpUnused3DVtx01, 2),\n    gsSPVertex(dAmpUnused3DVtx14, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\nUNUSED const Gfx dAmpUnused3DElectricDl7[] = {\n    //! Vertex interpreted as light\n    gsSPLight((const u8*)dAmpUnused3DVtx01 + 0x8, 1),\n    gsSPLight((const u8*)dAmpUnused3DVtx01, 2),\n    gsSPVertex(dAmpUnused3DVtx15, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/bird/anims/anim_050008D0.inc.c",
    "content": "// 0x050007E0\nstatic const s16 birds_seg5_animvalue_050007E0[] = {\n    0x0000, 0x0013, 0x0017, 0x001A, 0x001E, 0x0022, 0x0020, 0x001A,\n    0xFFFF, 0x3FFF, 0x0888, 0x0695, 0x024C, 0xFE04, 0xFC12, 0xFF4D,\n    0x054D, 0x0000, 0xFF6C, 0xFE24, 0xFCDD, 0xFC48, 0xFD3F, 0xFF0A,\n    0x31C6, 0x228D, 0x010E, 0xDF90, 0xD056, 0xE999, 0x1883, 0x8001,\n    0x7F50, 0x7EC6, 0x7F88, 0x80B3, 0x816F, 0x80C8, 0xF778, 0xF8AE,\n    0xFB59, 0xFE04, 0xFF3A, 0xFD37, 0xF97B, 0x0000, 0x0098, 0x01E8,\n    0x0339, 0x03D1, 0x02D4, 0x00FD, 0x31C6, 0x22A8, 0x0165, 0xE023,\n    0xD104, 0xEA1A, 0x18B0, 0x3FFF, 0x3FFF, 0xC001, 0x3FFF, 0xC001,\n    0x3FFF, 0x8001, 0x7F50, 0x7EC6, 0x7F88, 0x80B3, 0x816F, 0x80C8,\n};\n\n// 0x05000870\nstatic const u16 birds_seg5_animindex_5000870[] = {\n    0x0001, 0x0000, 0x0007, 0x0001, 0x0001, 0x0008, 0x0001, 0x0000, 0x0001, 0x0009, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0007, 0x0041,\n    0x0001, 0x003E, 0x0001, 0x003F, 0x0001, 0x0040,\n    0x0007, 0x000A, 0x0007, 0x0011, 0x0007, 0x0018,\n    0x0001, 0x003B, 0x0001, 0x003C, 0x0001, 0x003D,\n    0x0007, 0x0026, 0x0007, 0x002D, 0x0007, 0x0034,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0007, 0x001F,\n};\n\n// 0x050008D0\nstatic const struct Animation birds_seg5_anim_050008D0 = {\n    0,\n    0,\n    0,\n    0,\n    0x07,\n    ANIMINDEX_NUMPARTS(birds_seg5_animindex_5000870),\n    birds_seg5_animvalue_050007E0,\n    birds_seg5_animindex_5000870,\n    0,\n};\n"
  },
  {
    "path": "actors/bird/anims/anim_050009D0.inc.c",
    "content": "// 0x050008E8\nstatic const s16 birds_seg5_animvalue_050008E8[] = {\n    0x0000, 0x001A, 0x001B, 0x001B, 0x001B, 0x001B, 0x001B, 0x001B,\n    0x001A, 0xFFFF, 0x3FFF, 0x024C, 0x0246, 0x023A, 0x0234, 0x0238,\n    0x0240, 0x0249, 0x024C, 0xFE24, 0xFE1D, 0xFE0F, 0xFE07, 0xFE0C,\n    0xFE16, 0xFE20, 0xFE24, 0x010E, 0x0195, 0x0290, 0x0317, 0x02C6,\n    0x0212, 0x015F, 0x010E, 0x7EC6, 0xFB59, 0xFB5E, 0xFB68, 0xFB6D,\n    0xFB6A, 0xFB63, 0xFB5C, 0xFB59, 0x01E8, 0x01F5, 0x020B, 0x0218,\n    0x0210, 0x0200, 0x01F0, 0x01E8, 0x0165, 0x01D1, 0x0299, 0x0304,\n    0x02C3, 0x0235, 0x01A6, 0x0165, 0x3FFF, 0x3FFF, 0xC001, 0x3FFF,\n    0xC001, 0x3FFF, 0x7EC6, 0x0000,\n};\n\n// 0x05000970\nstatic const u16 birds_seg5_animindex_5000970[] = {\n    0x0001, 0x0000, 0x0008, 0x0001, 0x0001, 0x0009, 0x0001, 0x0000, 0x0001, 0x000A, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0042,\n    0x0001, 0x003F, 0x0001, 0x0040, 0x0001, 0x0041,\n    0x0008, 0x000B, 0x0008, 0x0013, 0x0008, 0x001B,\n    0x0001, 0x003C, 0x0001, 0x003D, 0x0001, 0x003E,\n    0x0008, 0x0024, 0x0008, 0x002C, 0x0008, 0x0034,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0023,\n};\n\n// 0x050009D0\nstatic const struct Animation birds_seg5_anim_050009D0 = {\n    0,\n    0,\n    0,\n    0,\n    0x08,\n    ANIMINDEX_NUMPARTS(birds_seg5_animindex_5000970),\n    birds_seg5_animvalue_050008E8,\n    birds_seg5_animindex_5000970,\n    0,\n};\n"
  },
  {
    "path": "actors/bird/anims/data.inc.c",
    "content": "#include \"anim_050008D0.inc.c\"\n#include \"anim_050009D0.inc.c\"\n"
  },
  {
    "path": "actors/bird/anims/table.inc.c",
    "content": "// 0x050009E8\nconst struct Animation *const birds_seg5_anims_050009E8[] = {\n    &birds_seg5_anim_050008D0,\n    &birds_seg5_anim_050009D0,\n};\n"
  },
  {
    "path": "actors/bird/geo.inc.c",
    "content": "// 0x0C000000\nconst GeoLayout birds_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 100),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, birds_seg5_dl_05000670),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 1, -12, 37, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, birds_seg5_dl_05000528),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 1, -12, -37, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, birds_seg5_dl_05000600),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, birds_seg5_dl_05000598),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/bird/model.inc.c",
    "content": "// Birds\n\n// 0x05000000\nstatic const Lights1 birds_seg5_lights_05000000 = gdSPDefLights1(\n    0x07, 0x24, 0x2c,\n    0x1d, 0x91, 0xb0, 0x28, 0x28, 0x28\n);\n\n// 0x05000018\nstatic const Lights1 birds_seg5_lights_05000018 = gdSPDefLights1(\n    0x33, 0x27, 0x0d,\n    0xce, 0x9d, 0x34, 0x28, 0x28, 0x28\n);\n\n// 0x05000030\nstatic const Lights1 birds_seg5_lights_05000030 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05000048\nstatic const Vtx birds_seg5_vertex_05000048[] = {\n    {{{   178,      2,     39}, 0, {     0,      0}, {0x0d, 0x7e, 0x00, 0x00}}},\n    {{{   122,     -4,    -33}, 0, {     0,      0}, {0x10, 0x79, 0xde, 0x00}}},\n    {{{    97,     10,     13}, 0, {     0,      0}, {0x0b, 0x7e, 0xff, 0x00}}},\n    {{{    47,      4,     47}, 0, {     0,      0}, {0xfe, 0x7c, 0x1b, 0xff}}},\n    {{{    53,     14,      7}, 0, {     0,      0}, {0xfe, 0x7e, 0xf8, 0xff}}},\n    {{{     0,      5,     32}, 0, {     0,      0}, {0xf0, 0x7d, 0x03, 0xff}}},\n    {{{    27,      9,     16}, 0, {     0,      0}, {0xee, 0x7d, 0x05, 0xff}}},\n    {{{    53,     -8,    -58}, 0, {     0,      0}, {0x0a, 0x78, 0xd8, 0xff}}},\n    {{{    -4,     -6,    -64}, 0, {     0,      0}, {0xf1, 0x7b, 0xe9, 0xff}}},\n};\n\n// 0x050000D8\nstatic const Vtx birds_seg5_vertex_050000D8[] = {\n    {{{  -143,     -7,    -29}, 0, {     0,      0}, {0x16, 0x94, 0xc2, 0x00}}},\n    {{{   -86,    -11,     -2}, 0, {     0,      0}, {0x16, 0x94, 0xc2, 0x00}}},\n    {{{  -154,    -21,     -9}, 0, {     0,      0}, {0x16, 0x94, 0xc2, 0x00}}},\n};\n\n// 0x05000108\nstatic const Vtx birds_seg5_vertex_05000108[] = {\n    {{{  -154,    -21,      9}, 0, {     0,      0}, {0x16, 0x94, 0x3e, 0x00}}},\n    {{{   -86,    -11,      2}, 0, {     0,      0}, {0x16, 0x94, 0x3e, 0x00}}},\n    {{{  -143,     -7,     29}, 0, {     0,      0}, {0x16, 0x94, 0x3e, 0x00}}},\n};\n\n// 0x05000138\nstatic const Vtx birds_seg5_vertex_05000138[] = {\n    {{{  -152,    -30,    -17}, 0, {     0,      0}, {0x26, 0x87, 0x00, 0x00}}},\n    {{{   -80,     -7,      0}, 0, {     0,      0}, {0x26, 0x87, 0x00, 0x00}}},\n    {{{  -152,    -30,     17}, 0, {     0,      0}, {0x26, 0x87, 0x00, 0x00}}},\n};\n\n// 0x05000168\nstatic const Vtx birds_seg5_vertex_05000168[] = {\n    {{{    97,     10,    -13}, 0, {     0,      0}, {0x0b, 0x7e, 0x01, 0x00}}},\n    {{{   122,     -4,     33}, 0, {     0,      0}, {0x10, 0x79, 0x22, 0x00}}},\n    {{{   178,      2,    -39}, 0, {     0,      0}, {0x0d, 0x7e, 0x00, 0x00}}},\n    {{{    47,      4,    -47}, 0, {     0,      0}, {0xfe, 0x7c, 0xe5, 0xff}}},\n    {{{    53,     14,     -7}, 0, {     0,      0}, {0xff, 0x7f, 0x02, 0xff}}},\n    {{{    27,      9,    -16}, 0, {     0,      0}, {0xf1, 0x7d, 0x06, 0xff}}},\n    {{{     0,      5,    -32}, 0, {     0,      0}, {0xf0, 0x7d, 0xfd, 0xff}}},\n    {{{    -4,     -6,     64}, 0, {     0,      0}, {0xf7, 0x7c, 0x14, 0xff}}},\n    {{{    53,     -8,     58}, 0, {     0,      0}, {0xfa, 0x79, 0x25, 0xff}}},\n};\n\n// 0x050001F8\nstatic const Vtx birds_seg5_vertex_050001F8[] = {\n    {{{    69,      4,    -40}, 0, {     0,      0}, {0x40, 0x26, 0x9a, 0x00}}},\n    {{{    78,    -51,    -21}, 0, {     0,      0}, {0x27, 0xae, 0xa8, 0x00}}},\n    {{{    -1,      0,    -56}, 0, {     0,      0}, {0xf4, 0xc6, 0x90, 0x00}}},\n    {{{    69,      4,     40}, 0, {     0,      0}, {0x40, 0x26, 0x66, 0xff}}},\n    {{{    10,     48,     56}, 0, {     0,      0}, {0xef, 0x41, 0x6b, 0xff}}},\n    {{{    -1,      0,     56}, 0, {     0,      0}, {0xf4, 0xc6, 0x70, 0xff}}},\n    {{{   -88,     21,      0}, 0, {     0,      0}, {0xaa, 0x5d, 0x00, 0xff}}},\n    {{{  -103,    -10,    -11}, 0, {     0,      0}, {0xa7, 0x30, 0xb4, 0xff}}},\n    {{{  -103,    -10,     11}, 0, {     0,      0}, {0xa7, 0x30, 0x4c, 0xff}}},\n    {{{    83,    -57,      0}, 0, {     0,      0}, {0xdd, 0x87, 0x00, 0xff}}},\n    {{{    -9,    -30,      0}, 0, {     0,      0}, {0xe0, 0x86, 0x00, 0xff}}},\n    {{{   113,      0,    -10}, 0, {     0,      0}, {0x4e, 0x32, 0xab, 0xff}}},\n    {{{   113,      0,     10}, 0, {     0,      0}, {0x4e, 0x32, 0x55, 0xff}}},\n    {{{    78,    -51,     21}, 0, {     0,      0}, {0x27, 0xae, 0x58, 0xff}}},\n    {{{  -103,    -10,     11}, 0, {     0,      0}, {0xea, 0x88, 0x1f, 0xff}}},\n    {{{   113,    -23,      0}, 0, {     0,      0}, {0x62, 0xb0, 0x00, 0xff}}},\n};\n\n// 0x050002F8\nstatic const Vtx birds_seg5_vertex_050002F8[] = {\n    {{{    83,    -57,      0}, 0, {     0,      0}, {0x60, 0xad, 0x00, 0xff}}},\n    {{{   113,    -23,      0}, 0, {     0,      0}, {0x62, 0xb0, 0x00, 0x00}}},\n    {{{    78,    -51,     21}, 0, {     0,      0}, {0x27, 0xae, 0x58, 0x00}}},\n    {{{    78,    -51,    -21}, 0, {     0,      0}, {0x27, 0xae, 0xa8, 0xff}}},\n    {{{  -103,    -10,    -11}, 0, {     0,      0}, {0xa7, 0x30, 0xb4, 0xff}}},\n    {{{   -88,     21,      0}, 0, {     0,      0}, {0xaa, 0x5d, 0x00, 0xff}}},\n    {{{    10,     48,    -56}, 0, {     0,      0}, {0xef, 0x41, 0x95, 0xff}}},\n    {{{    -1,      0,    -56}, 0, {     0,      0}, {0xf4, 0xc6, 0x90, 0xff}}},\n    {{{    10,     48,     56}, 0, {     0,      0}, {0xef, 0x41, 0x6b, 0xff}}},\n    {{{  -103,    -10,     11}, 0, {     0,      0}, {0xa7, 0x30, 0x4c, 0xff}}},\n    {{{  -103,    -10,    -11}, 0, {     0,      0}, {0xea, 0x88, 0xe1, 0xff}}},\n    {{{    -9,    -30,      0}, 0, {     0,      0}, {0xe0, 0x86, 0x00, 0xff}}},\n    {{{  -103,    -10,     11}, 0, {     0,      0}, {0xea, 0x88, 0x1f, 0xff}}},\n    {{{    83,    -57,      0}, 0, {     0,      0}, {0xdd, 0x87, 0x00, 0xff}}},\n    {{{    -1,      0,     56}, 0, {     0,      0}, {0xf4, 0xc6, 0x70, 0xff}}},\n    {{{    69,      4,    -40}, 0, {     0,      0}, {0x40, 0x26, 0x9a, 0xff}}},\n};\n\n// 0x050003F8\nstatic const Vtx birds_seg5_vertex_050003F8[] = {\n    {{{    -1,      0,     56}, 0, {     0,      0}, {0xf4, 0xc6, 0x70, 0xff}}},\n    {{{    78,    -51,     21}, 0, {     0,      0}, {0x27, 0xae, 0x58, 0x00}}},\n    {{{    69,      4,     40}, 0, {     0,      0}, {0x40, 0x26, 0x66, 0x00}}},\n};\n\n// 0x05000428\nstatic const Vtx birds_seg5_vertex_05000428[] = {\n    {{{    69,      4,    -40}, 0, {     0,      0}, {0x40, 0x26, 0x9a, 0x00}}},\n    {{{    10,     48,    -56}, 0, {     0,      0}, {0xef, 0x41, 0x95, 0x00}}},\n    {{{    18,     78,      0}, 0, {     0,      0}, {0x54, 0x5e, 0x00, 0x00}}},\n    {{{    10,     48,     56}, 0, {     0,      0}, {0xef, 0x41, 0x6b, 0xff}}},\n    {{{    18,     78,      0}, 0, {     0,      0}, {0xc4, 0x6f, 0x00, 0xff}}},\n    {{{   -88,     21,      0}, 0, {     0,      0}, {0xaa, 0x5d, 0x00, 0xff}}},\n    {{{   113,      0,    -10}, 0, {     0,      0}, {0x4e, 0x32, 0xab, 0xff}}},\n    {{{    69,     33,      0}, 0, {     0,      0}, {0x4b, 0x65, 0x00, 0xff}}},\n    {{{   113,      0,     10}, 0, {     0,      0}, {0x4e, 0x32, 0x55, 0xff}}},\n    {{{    69,      4,     40}, 0, {     0,      0}, {0x40, 0x26, 0x66, 0xff}}},\n};\n\n// 0x050004C8\nstatic const Vtx birds_seg5_vertex_050004C8[] = {\n    {{{   113,    -23,      0}, 0, {     0,      0}, {0x62, 0xb0, 0x00, 0x00}}},\n    {{{   113,      0,    -10}, 0, {     0,      0}, {0x4e, 0x32, 0xab, 0x00}}},\n    {{{   143,     -2,      0}, 0, {     0,      0}, {0x24, 0xcb, 0x93, 0x00}}},\n    {{{   113,      0,     10}, 0, {     0,      0}, {0x4e, 0x32, 0x55, 0xff}}},\n    {{{   143,     -2,      0}, 0, {     0,      0}, {0x24, 0xcb, 0x6d, 0xff}}},\n    {{{   143,     -2,      0}, 0, {     0,      0}, {0x07, 0x7e, 0x00, 0xff}}},\n};\n\n// 0x05000528 - 0x05000598\nconst Gfx birds_seg5_dl_05000528[] = {\n    gsSPLight(&birds_seg5_lights_05000000.l, 1),\n    gsSPLight(&birds_seg5_lights_05000000.a, 2),\n    gsSPVertex(birds_seg5_vertex_05000048, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 4,  3,  2, 0x0,  5,  3,  6, 0x0),\n    gsSP2Triangles( 4,  7,  8, 0x0,  4,  8,  6, 0x0),\n    gsSP2Triangles( 6,  8,  5, 0x0,  6,  3,  4, 0x0),\n    gsSP2Triangles( 2,  1,  7, 0x0,  2,  7,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05000598 - 0x05000600\nconst Gfx birds_seg5_dl_05000598[] = {\n    gsSPLight(&birds_seg5_lights_05000000.l, 1),\n    gsSPLight(&birds_seg5_lights_05000000.a, 2),\n    gsSPVertex(birds_seg5_vertex_050000D8, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPLight(&birds_seg5_lights_05000000.l, 1),\n    gsSPLight(&birds_seg5_lights_05000000.a, 2),\n    gsSPVertex(birds_seg5_vertex_05000108, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPLight(&birds_seg5_lights_05000000.l, 1),\n    gsSPLight(&birds_seg5_lights_05000000.a, 2),\n    gsSPVertex(birds_seg5_vertex_05000138, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05000600 - 0x05000670\nconst Gfx birds_seg5_dl_05000600[] = {\n    gsSPLight(&birds_seg5_lights_05000000.l, 1),\n    gsSPLight(&birds_seg5_lights_05000000.a, 2),\n    gsSPVertex(birds_seg5_vertex_05000168, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  5,  3,  6, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  5,  8,  4, 0x0),\n    gsSP2Triangles( 6,  7,  5, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  8,  1, 0x0,  4,  1,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05000670 - 0x050007E0\nconst Gfx birds_seg5_dl_05000670[] = {\n    gsSPLight(&birds_seg5_lights_05000000.l, 1),\n    gsSPLight(&birds_seg5_lights_05000000.a, 2),\n    gsSPVertex(birds_seg5_vertex_050001F8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  1,  9, 10, 0x0),\n    gsSP2Triangles( 1,  0, 11, 0x0, 12,  3, 13, 0x0),\n    gsSP2Triangles( 8,  5,  4, 0x0,  5, 14, 10, 0x0),\n    gsSP2Triangles(13, 15, 12, 0x0, 11, 15,  1, 0x0),\n    gsSPVertex(birds_seg5_vertex_050002F8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 8,  5,  9, 0x0, 10,  7, 11, 0x0),\n    gsSP2Triangles(11, 12, 10, 0x0, 11, 13,  2, 0x0),\n    gsSP2Triangles( 2, 14, 11, 0x0, 11,  7,  3, 0x0),\n    gsSP1Triangle( 7,  6, 15, 0x0),\n    gsSPVertex(birds_seg5_vertex_050003F8, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPLight(&birds_seg5_lights_05000030.l, 1),\n    gsSPLight(&birds_seg5_lights_05000030.a, 2),\n    gsSPVertex(birds_seg5_vertex_05000428, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  0,  7, 0x0,  7,  8,  6, 0x0),\n    gsSP2Triangles( 9,  7,  2, 0x0,  2,  7,  0, 0x0),\n    gsSP2Triangles( 2,  3,  9, 0x0,  7,  9,  8, 0x0),\n    gsSP1Triangle( 5,  4,  1, 0x0),\n    gsSPLight(&birds_seg5_lights_05000018.l, 1),\n    gsSPLight(&birds_seg5_lights_05000018.a, 2),\n    gsSPVertex(birds_seg5_vertex_050004C8, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP1Triangle( 1,  3,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/blargg/anims/anim_05006070.inc.c",
    "content": "// 0x05005EB8\nstatic const s16 blargg_seg5_animvalue_05005EB8[] = {\n    0x0000, 0x0016, 0xFFFC, 0xFFB9, 0xFF61, 0xFF08, 0xFEC0, 0xFE9F,\n    0xFEAC, 0xFED8, 0xFF16, 0xFF59, 0xFF95, 0xFFBB, 0xFFD4, 0xFFED,\n    0x0005, 0x001C, 0x0031, 0x0042, 0x004D, 0x0052, 0x004E, 0x0042,\n    0x002B, 0xFFED, 0xFF79, 0xFEEE, 0xFE68, 0xFE02, 0xFDD9, 0xFDDF,\n    0xFDF3, 0xFE13, 0xFE3C, 0xFE6C, 0xFEA1, 0xFED9, 0xFF13, 0xFF4C,\n    0xFF81, 0xFFB2, 0xFFDB, 0xFFFB, 0x000F, 0x0016, 0x3FFF, 0x8785,\n    0x8785, 0x8785, 0x8785, 0x8785, 0x8785, 0x8785, 0x8A1E, 0x909B,\n    0x990A, 0xA17A, 0xA7F7, 0xAA8F, 0xAA75, 0xAA2A, 0xA9B1, 0xA90E,\n    0xA843, 0xA753, 0xA643, 0xA516, 0xA3CE, 0xA26F, 0xA0FC, 0x9F79,\n    0x9DE9, 0x9C4F, 0x9AAE, 0x990A, 0x9766, 0x95C6, 0x942C, 0x929B,\n    0x9118, 0x8FA6, 0x8E47, 0x8CFF, 0x8BD1, 0x8AC1, 0x89D2, 0x8907,\n    0x8863, 0x87EA, 0x879F, 0x8785, 0x804C, 0x0BCD, 0x0D29, 0x106F,\n    0x1461, 0x17C8, 0x1967, 0x1806, 0x1248, 0x08E6, 0xFDBD, 0xF2AB,\n    0xE990, 0xE448, 0xE1F8, 0xE072, 0xDFA4, 0xDF79, 0xDFDD, 0xE0BB,\n    0xE1FF, 0xE394, 0xE567, 0xE762, 0xE972, 0xEE5F, 0xF6AA, 0xFED8,\n    0x036F, 0x04F7, 0x064D, 0x0774, 0x086F, 0x0941, 0x09EF, 0x0A7C,\n    0x0AEA, 0x0B3F, 0x0B7C, 0x0BA6, 0x0BC1, 0x0BCE, 0x0BD3, 0x0BD2,\n    0x0BCE, 0x0BCD, 0x76C1, 0x76C1, 0x76C1, 0x76C1, 0x76C1, 0x76C1,\n    0x76C1, 0x7543, 0x7181, 0x6C93, 0x678D, 0x6385, 0x6191, 0x613B,\n    0x614D, 0x61BA, 0x627B, 0x6384, 0x64CA, 0x6645, 0x67E8, 0x69AB,\n    0x6B83, 0x6D65, 0x7027, 0x7426, 0x78A4, 0x7CE5, 0x802E, 0x81BB,\n    0x81FB, 0x81DE, 0x8172, 0x80C4, 0x7FDE, 0x7ED2, 0x7DAC, 0x7C77,\n    0x7B41, 0x7A17, 0x7907, 0x781C, 0x7764, 0x76EC, 0x76C1, 0x0000,\n};\n\n// 0x05006028\nstatic const u16 blargg_seg5_animindex_05006028[] = {\n    0x0001, 0x0000, 0x002D, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x002E, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002D, 0x008A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002D, 0x005D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x005C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002D, 0x002F,\n};\n\n// 0x05006070\nstatic const struct Animation blargg_seg5_anim_05006070 = {\n    0,\n    0,\n    0,\n    0,\n    0x2D,\n    ANIMINDEX_NUMPARTS(blargg_seg5_animindex_05006028),\n    blargg_seg5_animvalue_05005EB8,\n    blargg_seg5_animindex_05006028,\n    0,\n};\n"
  },
  {
    "path": "actors/blargg/anims/anim_05006154.inc.c",
    "content": "// 0x05006088\nstatic const s16 blargg_seg5_animvalue_05006088[] = {\n    0x0000, 0x0016, 0x0018, 0x001C, 0x0022, 0x002A, 0x0033, 0x003D,\n    0x0047, 0x0052, 0x005C, 0x0065, 0x006D, 0x0073, 0x0077, 0x0078,\n    0x0077, 0x0074, 0x0070, 0x006B, 0x0064, 0x005C, 0x0054, 0x004C,\n    0x0043, 0x003A, 0x0031, 0x0029, 0x0022, 0x001C, 0x0016, 0x3FFF,\n    0x8785, 0x804C, 0x0BCD, 0x0BF1, 0x0C51, 0x0CD8, 0x0D72, 0x0E0C,\n    0x0E91, 0x0EEE, 0x0F0F, 0x0EFC, 0x0ED0, 0x0E8F, 0x0E3C, 0x0DDE,\n    0x0D78, 0x0D10, 0x0CA9, 0x0C48, 0x0BF2, 0x0BAB, 0x0B77, 0x0B5A,\n    0x0B50, 0x0B55, 0x0B64, 0x0B7B, 0x0B94, 0x0BAD, 0x0BC1, 0x0BCD,\n    0x76C1, 0x0000,\n};\n\n// 0x0500610C\nstatic const u16 blargg_seg5_animindex_0500610C[] = {\n    0x0001, 0x0000, 0x001E, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x001F, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0040,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0022,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0021,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0020,\n};\n\n// 0x05006154\nstatic const struct Animation blargg_seg5_anim_05006154 = {\n    0,\n    0,\n    0,\n    0,\n    0x1E,\n    ANIMINDEX_NUMPARTS(blargg_seg5_animindex_0500610C),\n    blargg_seg5_animvalue_05006088,\n    blargg_seg5_animindex_0500610C,\n    0,\n};\n"
  },
  {
    "path": "actors/blargg/anims/data.inc.c",
    "content": "#include \"anim_05006070.inc.c\"\n#include \"anim_05006154.inc.c\"\n"
  },
  {
    "path": "actors/blargg/anims/table.inc.c",
    "content": "// unreferenced\n// 0x0500616C\nconst struct Animation *const blargg_seg5_anims_0500616C[] = {\n    &blargg_seg5_anim_05006154,\n    &blargg_seg5_anim_05006070,\n    NULL,\n};\n"
  },
  {
    "path": "actors/blargg/geo.inc.c",
    "content": "// 0x0C000240\nconst GeoLayout blargg_geo[] = {\n    GEO_SCALE(0x00, 16384),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, blargg_seg5_dl_05005D00),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 306, 0, 0, blargg_seg5_dl_05005A60),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 6, 3, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, blargg_seg5_dl_050058D0),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/blargg/model.inc.c",
    "content": "// Blargg (Unused)\n\n// Unreferenced light group\nUNUSED static const Lights1 blargg_lights_unused = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05004740\nstatic const Lights1 blargg_seg5_lights_05004740 = gdSPDefLights1(\n    0x3f, 0x0d, 0x05,\n    0xff, 0x36, 0x16, 0x28, 0x28, 0x28\n);\n\n// 0x05004758\nstatic const Lights1 blargg_seg5_lights_05004758 = gdSPDefLights1(\n    0x2c, 0x2c, 0x2c,\n    0xb2, 0xb2, 0xb2, 0x28, 0x28, 0x28\n);\n\n// 0x05004770\nstatic const Lights1 blargg_seg5_lights_05004770 = gdSPDefLights1(\n    0x3f, 0x0a, 0x06,\n    0xff, 0x2a, 0x1a, 0x28, 0x28, 0x28\n);\n\n// 0x05004788\nstatic const Lights1 blargg_seg5_lights_05004788 = gdSPDefLights1(\n    0x3f, 0x0b, 0x07,\n    0xff, 0x2e, 0x1f, 0x28, 0x28, 0x28\n);\n\n// 0x050047A0\nstatic const Vtx blargg_seg5_vertex_050047A0[] = {\n    {{{   378,   -178,    -92}, 0, {     0,      0}, {0x32, 0xe7, 0x8f, 0x00}}},\n    {{{   298,   -166,   -131}, 0, {     0,      0}, {0x32, 0xe7, 0x8f, 0x00}}},\n    {{{   306,    -56,   -152}, 0, {     0,      0}, {0x32, 0xe7, 0x8f, 0x00}}},\n    {{{   417,    -73,    -99}, 0, {     0,      0}, {0x32, 0xe7, 0x8f, 0x00}}},\n    {{{   298,   -166,   -131}, 0, {     0,      0}, {0x8d, 0xff, 0xcb, 0x00}}},\n    {{{   280,   -163,    -94}, 0, {     0,      0}, {0x8d, 0xff, 0xcb, 0x00}}},\n    {{{   276,    -51,    -88}, 0, {     0,      0}, {0x8d, 0xff, 0xcb, 0x00}}},\n    {{{   306,    -56,   -152}, 0, {     0,      0}, {0x8d, 0xff, 0xcb, 0x00}}},\n    {{{   280,   -163,    -94}, 0, {     0,      0}, {0xc9, 0xf7, 0x71, 0x00}}},\n    {{{   361,   -176,    -56}, 0, {     0,      0}, {0xc9, 0xf7, 0x71, 0x00}}},\n    {{{   387,    -68,    -35}, 0, {     0,      0}, {0xc9, 0xf7, 0x71, 0x00}}},\n    {{{   276,    -51,    -88}, 0, {     0,      0}, {0xc9, 0xf7, 0x71, 0x00}}},\n    {{{   361,   -176,    -56}, 0, {     0,      0}, {0x6d, 0xdc, 0x35, 0x00}}},\n    {{{   378,   -178,    -92}, 0, {     0,      0}, {0x6d, 0xdc, 0x35, 0x00}}},\n    {{{   417,    -73,    -99}, 0, {     0,      0}, {0x6d, 0xdc, 0x35, 0x00}}},\n    {{{   387,    -68,    -35}, 0, {     0,      0}, {0x6d, 0xdc, 0x35, 0x00}}},\n};\n\n// 0x050048A0\nstatic const Vtx blargg_seg5_vertex_050048A0[] = {\n    {{{   361,   -176,    -56}, 0, {     0,      0}, {0xed, 0x83, 0x00, 0x00}}},\n    {{{   280,   -163,    -94}, 0, {     0,      0}, {0xed, 0x83, 0x00, 0x00}}},\n    {{{   298,   -166,   -131}, 0, {     0,      0}, {0xed, 0x83, 0x00, 0x00}}},\n    {{{   378,   -178,    -92}, 0, {     0,      0}, {0xed, 0x83, 0x00, 0x00}}},\n    {{{   417,    -73,     99}, 0, {     0,      0}, {0x32, 0xe7, 0x71, 0x00}}},\n    {{{   306,    -56,    152}, 0, {     0,      0}, {0x32, 0xe7, 0x71, 0x00}}},\n    {{{   298,   -166,    131}, 0, {     0,      0}, {0x32, 0xe7, 0x71, 0x00}}},\n    {{{   378,   -178,     92}, 0, {     0,      0}, {0x32, 0xe7, 0x71, 0x00}}},\n    {{{   306,    -56,    152}, 0, {     0,      0}, {0x8d, 0xff, 0x35, 0x00}}},\n    {{{   276,    -51,     88}, 0, {     0,      0}, {0x8d, 0xff, 0x35, 0x00}}},\n    {{{   280,   -163,     94}, 0, {     0,      0}, {0x8d, 0xff, 0x35, 0x00}}},\n    {{{   298,   -166,    131}, 0, {     0,      0}, {0x8d, 0xff, 0x35, 0x00}}},\n    {{{   276,    -51,     88}, 0, {     0,      0}, {0xc9, 0xf7, 0x8f, 0x00}}},\n    {{{   387,    -68,     35}, 0, {     0,      0}, {0xc9, 0xf7, 0x8f, 0x00}}},\n    {{{   361,   -176,     56}, 0, {     0,      0}, {0xc9, 0xf7, 0x8f, 0x00}}},\n    {{{   280,   -163,     94}, 0, {     0,      0}, {0xc9, 0xf7, 0x8f, 0x00}}},\n};\n\n// 0x050049A0\nstatic const Vtx blargg_seg5_vertex_050049A0[] = {\n    {{{   387,    -68,     35}, 0, {     0,      0}, {0x6d, 0xdc, 0xcb, 0x00}}},\n    {{{   417,    -73,     99}, 0, {     0,      0}, {0x6d, 0xdc, 0xcb, 0x00}}},\n    {{{   378,   -178,     92}, 0, {     0,      0}, {0x6d, 0xdc, 0xcb, 0x00}}},\n    {{{   361,   -176,     56}, 0, {     0,      0}, {0x6d, 0xdc, 0xcb, 0x00}}},\n    {{{   378,   -178,     92}, 0, {     0,      0}, {0xed, 0x83, 0x00, 0x00}}},\n    {{{   298,   -166,    131}, 0, {     0,      0}, {0xed, 0x83, 0x00, 0x00}}},\n    {{{   280,   -163,     94}, 0, {     0,      0}, {0xed, 0x83, 0x00, 0x00}}},\n    {{{   361,   -176,     56}, 0, {     0,      0}, {0xed, 0x83, 0x00, 0x00}}},\n};\n\n// 0x05004A20\nstatic const Vtx blargg_seg5_vertex_05004A20[] = {\n    {{{   556,    -10,    -56}, 0, {     0,      0}, {0x6e, 0x37, 0xe5, 0x00}}},\n    {{{   556,    -10,     56}, 0, {     0,      0}, {0x6e, 0x37, 0x1b, 0x00}}},\n    {{{   556,   -128,    120}, 0, {     0,      0}, {0x6b, 0x0f, 0x42, 0x00}}},\n    {{{   556,   -128,   -120}, 0, {     0,      0}, {0x6b, 0x0f, 0xbe, 0x00}}},\n    {{{   111,     99,     96}, 0, {     0,      0}, {0xd4, 0x72, 0x1f, 0x00}}},\n    {{{   111,     99,    -96}, 0, {     0,      0}, {0xe5, 0x71, 0xce, 0x00}}},\n    {{{   -73,     -8,    -90}, 0, {     0,      0}, {0xc3, 0x67, 0xd8, 0x00}}},\n    {{{   -73,     -8,     90}, 0, {     0,      0}, {0xce, 0x54, 0x50, 0x00}}},\n    {{{   556,   -128,   -120}, 0, {     0,      0}, {0xe9, 0x84, 0x00, 0x00}}},\n    {{{   556,   -128,    120}, 0, {     0,      0}, {0xe9, 0x84, 0x00, 0x00}}},\n    {{{   318,    -84,    267}, 0, {     0,      0}, {0xe9, 0x84, 0x00, 0x00}}},\n    {{{   -73,     -8,     90}, 0, {     0,      0}, {0xe9, 0x84, 0x00, 0x00}}},\n    {{{   -73,     -8,    -90}, 0, {     0,      0}, {0xe9, 0x84, 0x00, 0x00}}},\n    {{{   318,    -84,   -267}, 0, {     0,      0}, {0xe9, 0x84, 0x00, 0x00}}},\n    {{{   410,     80,    203}, 0, {     0,      0}, {0x27, 0x66, 0x40, 0x00}}},\n    {{{   410,     80,   -203}, 0, {     0,      0}, {0x35, 0x58, 0xb7, 0x00}}},\n};\n\n// 0x05004B20\nstatic const Vtx blargg_seg5_vertex_05004B20[] = {\n    {{{   111,     99,    -96}, 0, {     0,      0}, {0xe5, 0x71, 0xce, 0x00}}},\n    {{{   410,     80,   -203}, 0, {     0,      0}, {0x35, 0x58, 0xb7, 0x00}}},\n    {{{   318,    -84,   -267}, 0, {     0,      0}, {0xff, 0x2d, 0x8a, 0x00}}},\n    {{{   -73,     -8,    -90}, 0, {     0,      0}, {0xc3, 0x67, 0xd8, 0x00}}},\n    {{{   410,     80,    203}, 0, {     0,      0}, {0x27, 0x66, 0x40, 0x00}}},\n    {{{   111,     99,     96}, 0, {     0,      0}, {0xd4, 0x72, 0x1f, 0x00}}},\n    {{{   -73,     -8,     90}, 0, {     0,      0}, {0xce, 0x54, 0x50, 0x00}}},\n    {{{   318,    -84,    267}, 0, {     0,      0}, {0x11, 0x25, 0x78, 0x00}}},\n    {{{   556,   -128,   -120}, 0, {     0,      0}, {0x6b, 0x0f, 0xbe, 0x00}}},\n    {{{   556,    -10,     56}, 0, {     0,      0}, {0x6e, 0x37, 0x1b, 0x00}}},\n    {{{   556,    -10,    -56}, 0, {     0,      0}, {0x6e, 0x37, 0xe5, 0x00}}},\n    {{{   556,   -128,    120}, 0, {     0,      0}, {0x6b, 0x0f, 0x42, 0x00}}},\n};\n\n// 0x05004BE0\nstatic const Vtx blargg_seg5_vertex_05004BE0[] = {\n    {{{   524,     82,     92}, 0, {     0,      0}, {0x36, 0x10, 0x71, 0x00}}},\n    {{{   443,     83,    131}, 0, {     0,      0}, {0x36, 0x10, 0x71, 0x00}}},\n    {{{   432,    -25,    152}, 0, {     0,      0}, {0x36, 0x10, 0x71, 0x00}}},\n    {{{   544,    -28,     99}, 0, {     0,      0}, {0x36, 0x10, 0x71, 0x00}}},\n    {{{   443,     83,    131}, 0, {     0,      0}, {0x8f, 0x15, 0x35, 0x00}}},\n    {{{   425,     84,     94}, 0, {     0,      0}, {0x8f, 0x15, 0x35, 0x00}}},\n    {{{   401,    -25,     88}, 0, {     0,      0}, {0x8f, 0x15, 0x35, 0x00}}},\n    {{{   432,    -25,    152}, 0, {     0,      0}, {0x8f, 0x15, 0x35, 0x00}}},\n    {{{   425,     84,     94}, 0, {     0,      0}, {0xcb, 0x12, 0x8f, 0x00}}},\n    {{{   507,     82,     56}, 0, {     0,      0}, {0xcb, 0x12, 0x8f, 0x00}}},\n    {{{   513,    -27,     35}, 0, {     0,      0}, {0xcb, 0x12, 0x8f, 0x00}}},\n    {{{   401,    -25,     88}, 0, {     0,      0}, {0xcb, 0x12, 0x8f, 0x00}}},\n    {{{   507,     82,     56}, 0, {     0,      0}, {0x71, 0x10, 0xcb, 0x00}}},\n    {{{   524,     82,     92}, 0, {     0,      0}, {0x71, 0x10, 0xcb, 0x00}}},\n    {{{   544,    -28,     99}, 0, {     0,      0}, {0x71, 0x10, 0xcb, 0x00}}},\n    {{{   513,    -27,     35}, 0, {     0,      0}, {0x71, 0x10, 0xcb, 0x00}}},\n};\n\n// 0x05004CE0\nstatic const Vtx blargg_seg5_vertex_05004CE0[] = {\n    {{{   507,     82,     56}, 0, {     0,      0}, {0x02, 0x7f, 0x00, 0x00}}},\n    {{{   425,     84,     94}, 0, {     0,      0}, {0x02, 0x7f, 0x00, 0x00}}},\n    {{{   443,     83,    131}, 0, {     0,      0}, {0x02, 0x7f, 0x00, 0x00}}},\n    {{{   524,     82,     92}, 0, {     0,      0}, {0x02, 0x7f, 0x00, 0x00}}},\n    {{{   544,    -28,    -99}, 0, {     0,      0}, {0x36, 0x10, 0x8f, 0x00}}},\n    {{{   432,    -25,   -152}, 0, {     0,      0}, {0x36, 0x10, 0x8f, 0x00}}},\n    {{{   443,     83,   -131}, 0, {     0,      0}, {0x36, 0x10, 0x8f, 0x00}}},\n    {{{   524,     82,    -92}, 0, {     0,      0}, {0x36, 0x10, 0x8f, 0x00}}},\n    {{{   432,    -25,   -152}, 0, {     0,      0}, {0x8f, 0x15, 0xcb, 0x00}}},\n    {{{   401,    -25,    -88}, 0, {     0,      0}, {0x8f, 0x15, 0xcb, 0x00}}},\n    {{{   425,     84,    -94}, 0, {     0,      0}, {0x8f, 0x15, 0xcb, 0x00}}},\n    {{{   443,     83,   -131}, 0, {     0,      0}, {0x8f, 0x15, 0xcb, 0x00}}},\n    {{{   401,    -25,    -88}, 0, {     0,      0}, {0xcb, 0x12, 0x71, 0x00}}},\n    {{{   513,    -27,    -35}, 0, {     0,      0}, {0xcb, 0x12, 0x71, 0x00}}},\n    {{{   507,     82,    -56}, 0, {     0,      0}, {0xcb, 0x12, 0x71, 0x00}}},\n    {{{   425,     84,    -94}, 0, {     0,      0}, {0xcb, 0x12, 0x71, 0x00}}},\n};\n\n// 0x05004DE0\nstatic const Vtx blargg_seg5_vertex_05004DE0[] = {\n    {{{   513,    -27,    -35}, 0, {     0,      0}, {0x71, 0x10, 0x35, 0x00}}},\n    {{{   544,    -28,    -99}, 0, {     0,      0}, {0x71, 0x10, 0x35, 0x00}}},\n    {{{   524,     82,    -92}, 0, {     0,      0}, {0x71, 0x10, 0x35, 0x00}}},\n    {{{   507,     82,    -56}, 0, {     0,      0}, {0x71, 0x10, 0x35, 0x00}}},\n    {{{   524,     82,    -92}, 0, {     0,      0}, {0x02, 0x7f, 0x00, 0x00}}},\n    {{{   443,     83,   -131}, 0, {     0,      0}, {0x02, 0x7f, 0x00, 0x00}}},\n    {{{   425,     84,    -94}, 0, {     0,      0}, {0x02, 0x7f, 0x00, 0x00}}},\n    {{{   507,     82,    -56}, 0, {     0,      0}, {0x02, 0x7f, 0x00, 0x00}}},\n};\n\n// 0x05004E60\nstatic const Vtx blargg_seg5_vertex_05004E60[] = {\n    {{{   617,     23,   -154}, 0, {     0,      0}, {0x6b, 0xdf, 0xc5, 0x00}}},\n    {{{   571,   -260,      0}, 0, {     0,      0}, {0x7a, 0xdd, 0x00, 0x00}}},\n    {{{   555,   -242,   -127}, 0, {     0,      0}, {0x43, 0xba, 0xb0, 0x00}}},\n    {{{     2,   -334,    -93}, 0, {     0,      0}, {0x00, 0x8a, 0xd3, 0x00}}},\n    {{{    78,   -245,   -177}, 0, {     0,      0}, {0x21, 0xbc, 0x9b, 0x00}}},\n    {{{   130,   -287,      0}, 0, {     0,      0}, {0x58, 0xa6, 0xfc, 0x00}}},\n    {{{   571,   -260,      0}, 0, {     0,      0}, {0x11, 0x83, 0x00, 0x00}}},\n    {{{   261,   -308,      0}, 0, {     0,      0}, {0xd4, 0x8a, 0xff, 0x00}}},\n    {{{   295,   -262,   -175}, 0, {     0,      0}, {0xee, 0xa3, 0xad, 0x00}}},\n    {{{   -88,     24,   -119}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   -88,     24,    119}, 0, {     0,      0}, {0x01, 0x7f, 0x00, 0x00}}},\n    {{{   326,     21,    307}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   617,     23,    154}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   662,     23,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   617,     23,   -154}, 0, {     0,      0}, {0x00, 0x7f, 0xff, 0x00}}},\n    {{{   326,     21,   -307}, 0, {     0,      0}, {0x00, 0x7f, 0xfe, 0x00}}},\n};\n\n// 0x05004F60\nstatic const Vtx blargg_seg5_vertex_05004F60[] = {\n    {{{   326,     21,    307}, 0, {     0,      0}, {0x00, 0xd6, 0x77, 0x00}}},\n    {{{   295,   -262,    175}, 0, {     0,      0}, {0xf1, 0xa2, 0x53, 0x00}}},\n    {{{   555,   -242,    127}, 0, {     0,      0}, {0x43, 0xba, 0x50, 0x00}}},\n    {{{    78,   -245,   -177}, 0, {     0,      0}, {0x21, 0xbc, 0x9b, 0x00}}},\n    {{{     2,   -334,    -93}, 0, {     0,      0}, {0x00, 0x8a, 0xd3, 0x00}}},\n    {{{   -55,   -257,   -162}, 0, {     0,      0}, {0xd2, 0xc1, 0x9d, 0x00}}},\n    {{{     2,   -334,     93}, 0, {     0,      0}, {0xf8, 0x88, 0x25, 0x00}}},\n    {{{   -58,   -257,    160}, 0, {     0,      0}, {0xca, 0xc0, 0x5e, 0x00}}},\n    {{{  -107,   -275,     91}, 0, {     0,      0}, {0x9c, 0xc1, 0x2c, 0x00}}},\n    {{{   617,     23,    154}, 0, {     0,      0}, {0x6b, 0xdf, 0x3b, 0x00}}},\n    {{{   326,     21,   -307}, 0, {     0,      0}, {0xff, 0xd5, 0x89, 0x00}}},\n    {{{   617,     23,   -154}, 0, {     0,      0}, {0x6b, 0xdf, 0xc5, 0x00}}},\n    {{{   555,   -242,   -127}, 0, {     0,      0}, {0x43, 0xba, 0xb0, 0x00}}},\n    {{{   295,   -262,   -175}, 0, {     0,      0}, {0xee, 0xa3, 0xad, 0x00}}},\n    {{{   140,   -168,    171}, 0, {     0,      0}, {0xd0, 0xd3, 0x6c, 0x00}}},\n};\n\n// 0x05005050\nstatic const Vtx blargg_seg5_vertex_05005050[] = {\n    {{{   161,   -168,   -171}, 0, {     0,      0}, {0xce, 0xd4, 0x95, 0x00}}},\n    {{{   -88,     24,   -119}, 0, {     0,      0}, {0xeb, 0x06, 0x83, 0x00}}},\n    {{{   326,     21,   -307}, 0, {     0,      0}, {0xff, 0xd5, 0x89, 0x00}}},\n    {{{   -88,     24,    119}, 0, {     0,      0}, {0x88, 0x1b, 0x1e, 0x00}}},\n    {{{   -88,     24,   -119}, 0, {     0,      0}, {0x88, 0x1b, 0xe2, 0x00}}},\n    {{{  -158,   -149,      0}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{   -62,   -140,   -183}, 0, {     0,      0}, {0xc2, 0x01, 0x92, 0x00}}},\n    {{{   261,   -308,      0}, 0, {     0,      0}, {0xd4, 0x8a, 0xff, 0x00}}},\n    {{{   295,   -262,    175}, 0, {     0,      0}, {0xf1, 0xa2, 0x53, 0x00}}},\n    {{{   140,   -168,    171}, 0, {     0,      0}, {0xd0, 0xd3, 0x6c, 0x00}}},\n    {{{   -62,   -140,    183}, 0, {     0,      0}, {0xc1, 0x01, 0x6d, 0x00}}},\n    {{{   -55,   -257,   -162}, 0, {     0,      0}, {0xd2, 0xc1, 0x9d, 0x00}}},\n    {{{     2,   -334,    -93}, 0, {     0,      0}, {0x00, 0x8a, 0xd3, 0x00}}},\n    {{{  -107,   -275,    -91}, 0, {     0,      0}, {0xa1, 0xb6, 0xdb, 0x00}}},\n    {{{     2,   -334,     93}, 0, {     0,      0}, {0xf8, 0x88, 0x25, 0x00}}},\n    {{{  -107,   -275,     91}, 0, {     0,      0}, {0x9c, 0xc1, 0x2c, 0x00}}},\n};\n\n// 0x05005150\nstatic const Vtx blargg_seg5_vertex_05005150[] = {\n    {{{   -88,     24,    119}, 0, {     0,      0}, {0xec, 0x09, 0x7c, 0x00}}},\n    {{{   -62,   -140,    183}, 0, {     0,      0}, {0xc1, 0x01, 0x6d, 0x00}}},\n    {{{   140,   -168,    171}, 0, {     0,      0}, {0xd0, 0xd3, 0x6c, 0x00}}},\n    {{{    78,   -245,   -177}, 0, {     0,      0}, {0x21, 0xbc, 0x9b, 0x00}}},\n    {{{   161,   -168,   -171}, 0, {     0,      0}, {0x6f, 0xc7, 0xed, 0x00}}},\n    {{{   130,   -287,      0}, 0, {     0,      0}, {0x58, 0xa6, 0xfc, 0x00}}},\n    {{{   -58,   -257,    160}, 0, {     0,      0}, {0xca, 0xc0, 0x5e, 0x00}}},\n    {{{     2,   -334,     93}, 0, {     0,      0}, {0xf8, 0x88, 0x25, 0x00}}},\n    {{{    78,   -280,    177}, 0, {     0,      0}, {0x20, 0xb7, 0x62, 0x00}}},\n    {{{   -62,   -140,   -183}, 0, {     0,      0}, {0xc2, 0x01, 0x92, 0x00}}},\n    {{{   -88,     24,   -119}, 0, {     0,      0}, {0xeb, 0x06, 0x83, 0x00}}},\n    {{{   161,   -168,   -171}, 0, {     0,      0}, {0xce, 0xd4, 0x95, 0x00}}},\n    {{{   326,     21,    307}, 0, {     0,      0}, {0x00, 0xd6, 0x77, 0x00}}},\n    {{{   326,     21,   -307}, 0, {     0,      0}, {0xff, 0xd5, 0x89, 0x00}}},\n    {{{   295,   -262,   -175}, 0, {     0,      0}, {0xee, 0xa3, 0xad, 0x00}}},\n    {{{     2,   -334,    -93}, 0, {     0,      0}, {0x00, 0x8a, 0xd3, 0x00}}},\n};\n\n// 0x05005250\nstatic const Vtx blargg_seg5_vertex_05005250[] = {\n    {{{   161,   -168,   -171}, 0, {     0,      0}, {0x6f, 0xc7, 0xed, 0x00}}},\n    {{{   140,   -168,    171}, 0, {     0,      0}, {0x76, 0xd8, 0x15, 0x00}}},\n    {{{   130,   -287,      0}, 0, {     0,      0}, {0x58, 0xa6, 0xfc, 0x00}}},\n    {{{    78,   -280,    177}, 0, {     0,      0}, {0x20, 0xb7, 0x62, 0x00}}},\n    {{{   -55,   -257,   -162}, 0, {     0,      0}, {0xd2, 0xc1, 0x9d, 0x00}}},\n    {{{   -62,   -140,   -183}, 0, {     0,      0}, {0xc2, 0x01, 0x92, 0x00}}},\n    {{{    78,   -245,   -177}, 0, {     0,      0}, {0x21, 0xbc, 0x9b, 0x00}}},\n    {{{  -107,   -275,    -91}, 0, {     0,      0}, {0xa1, 0xb6, 0xdb, 0x00}}},\n    {{{  -158,   -149,      0}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{  -107,   -275,     91}, 0, {     0,      0}, {0x9c, 0xc1, 0x2c, 0x00}}},\n    {{{   -58,   -257,    160}, 0, {     0,      0}, {0xca, 0xc0, 0x5e, 0x00}}},\n    {{{   -62,   -140,    183}, 0, {     0,      0}, {0xc1, 0x01, 0x6d, 0x00}}},\n    {{{   617,     23,   -154}, 0, {     0,      0}, {0x6b, 0xdf, 0xc5, 0x00}}},\n    {{{   662,     23,      0}, 0, {     0,      0}, {0x78, 0xd9, 0x00, 0x00}}},\n    {{{   571,   -260,      0}, 0, {     0,      0}, {0x7a, 0xdd, 0x00, 0x00}}},\n};\n\n// 0x05005340\nstatic const Vtx blargg_seg5_vertex_05005340[] = {\n    {{{   617,     23,    154}, 0, {     0,      0}, {0x6b, 0xdf, 0x3b, 0x00}}},\n    {{{   555,   -242,    127}, 0, {     0,      0}, {0x43, 0xba, 0x50, 0x00}}},\n    {{{   571,   -260,      0}, 0, {     0,      0}, {0x7a, 0xdd, 0x00, 0x00}}},\n    {{{   571,   -260,      0}, 0, {     0,      0}, {0x11, 0x83, 0x00, 0x00}}},\n    {{{   295,   -262,    175}, 0, {     0,      0}, {0xf1, 0xa2, 0x53, 0x00}}},\n    {{{   261,   -308,      0}, 0, {     0,      0}, {0xd4, 0x8a, 0xff, 0x00}}},\n    {{{   161,   -168,   -171}, 0, {     0,      0}, {0xce, 0xd4, 0x95, 0x00}}},\n    {{{   295,   -262,   -175}, 0, {     0,      0}, {0xee, 0xa3, 0xad, 0x00}}},\n    {{{   140,   -168,    171}, 0, {     0,      0}, {0xd0, 0xd3, 0x6c, 0x00}}},\n    {{{   662,     23,      0}, 0, {     0,      0}, {0x78, 0xd9, 0x00, 0x00}}},\n};\n\n// 0x050053E0\nstatic const Vtx blargg_seg5_vertex_050053E0[] = {\n    {{{  -243,    -48,    -45}, 0, {     0,      0}, {0xf9, 0xf0, 0x83, 0x00}}},\n    {{{  -104,   -120,    -43}, 0, {     0,      0}, {0xfa, 0xf0, 0x83, 0x00}}},\n    {{{  -200,   -235,    -23}, 0, {     0,      0}, {0xf9, 0xf0, 0x83, 0x00}}},\n    {{{  -298,   -186,    -23}, 0, {     0,      0}, {0xf8, 0xf0, 0x83, 0x00}}},\n    {{{  -104,   -120,    -43}, 0, {     0,      0}, {0x61, 0xaf, 0x00, 0x00}}},\n    {{{  -104,   -120,     47}, 0, {     0,      0}, {0x61, 0xaf, 0x00, 0x00}}},\n    {{{  -200,   -235,     23}, 0, {     0,      0}, {0x61, 0xaf, 0x00, 0x00}}},\n    {{{  -200,   -235,    -23}, 0, {     0,      0}, {0x61, 0xaf, 0x00, 0x00}}},\n    {{{  -104,   -120,     47}, 0, {     0,      0}, {0xf7, 0xef, 0x7d, 0x00}}},\n    {{{  -243,    -48,     45}, 0, {     0,      0}, {0xf7, 0xf1, 0x7d, 0x00}}},\n    {{{  -298,   -186,     23}, 0, {     0,      0}, {0xf7, 0xef, 0x7d, 0x00}}},\n    {{{  -200,   -235,     23}, 0, {     0,      0}, {0xf7, 0xee, 0x7d, 0x00}}},\n    {{{  -243,    -48,     45}, 0, {     0,      0}, {0x8a, 0x2e, 0x00, 0x00}}},\n    {{{  -243,    -48,    -45}, 0, {     0,      0}, {0x8a, 0x2e, 0x00, 0x00}}},\n    {{{  -298,   -186,    -23}, 0, {     0,      0}, {0x8a, 0x2e, 0x00, 0x00}}},\n    {{{  -298,   -186,     23}, 0, {     0,      0}, {0x8a, 0x2e, 0x00, 0x00}}},\n};\n\n// 0x050054E0\nstatic const Vtx blargg_seg5_vertex_050054E0[] = {\n    {{{  -298,   -186,    -23}, 0, {     0,      0}, {0xc8, 0x8f, 0x00, 0x00}}},\n    {{{  -200,   -235,    -23}, 0, {     0,      0}, {0xc8, 0x8f, 0x00, 0x00}}},\n    {{{  -200,   -235,     23}, 0, {     0,      0}, {0xc8, 0x8f, 0x00, 0x00}}},\n    {{{  -298,   -186,     23}, 0, {     0,      0}, {0xc8, 0x8f, 0x00, 0x00}}},\n    {{{   -70,   -105,    -52}, 0, {     0,      0}, {0x01, 0xee, 0x83, 0x00}}},\n    {{{   113,    -88,    -52}, 0, {     0,      0}, {0x01, 0xee, 0x83, 0x00}}},\n    {{{    99,   -262,    -27}, 0, {     0,      0}, {0x01, 0xee, 0x83, 0x00}}},\n    {{{   -24,   -273,    -27}, 0, {     0,      0}, {0x01, 0xee, 0x83, 0x00}}},\n    {{{   113,    -88,    -52}, 0, {     0,      0}, {0x7e, 0xf7, 0x00, 0x00}}},\n    {{{   113,    -88,     53}, 0, {     0,      0}, {0x7e, 0xf7, 0x00, 0x00}}},\n    {{{    99,   -262,     27}, 0, {     0,      0}, {0x7e, 0xf7, 0x00, 0x00}}},\n    {{{    99,   -262,    -27}, 0, {     0,      0}, {0x7e, 0xf7, 0x00, 0x00}}},\n    {{{   113,    -88,     53}, 0, {     0,      0}, {0x01, 0xee, 0x7d, 0x00}}},\n    {{{   -70,   -105,     53}, 0, {     0,      0}, {0x01, 0xee, 0x7d, 0x00}}},\n    {{{   -24,   -273,     27}, 0, {     0,      0}, {0x01, 0xee, 0x7d, 0x00}}},\n    {{{    99,   -262,     27}, 0, {     0,      0}, {0x01, 0xee, 0x7d, 0x00}}},\n};\n\n// 0x050055E0\nstatic const Vtx blargg_seg5_vertex_050055E0[] = {\n    {{{   -70,   -105,     53}, 0, {     0,      0}, {0x86, 0xdf, 0x00, 0x00}}},\n    {{{   -70,   -105,    -52}, 0, {     0,      0}, {0x86, 0xdf, 0x00, 0x00}}},\n    {{{   -24,   -273,    -27}, 0, {     0,      0}, {0x86, 0xdf, 0x00, 0x00}}},\n    {{{   -24,   -273,     27}, 0, {     0,      0}, {0x86, 0xdf, 0x00, 0x00}}},\n    {{{   -24,   -273,    -27}, 0, {     0,      0}, {0x0a, 0x82, 0x00, 0x00}}},\n    {{{    99,   -262,    -27}, 0, {     0,      0}, {0x0a, 0x82, 0x00, 0x00}}},\n    {{{    99,   -262,     27}, 0, {     0,      0}, {0x0a, 0x82, 0x00, 0x00}}},\n    {{{   -24,   -273,     27}, 0, {     0,      0}, {0x0a, 0x82, 0x00, 0x00}}},\n    {{{   286,    227,   -123}, 0, {     0,      0}, {0x73, 0xf4, 0xce, 0x00}}},\n    {{{   286,    227,    123}, 0, {     0,      0}, {0x73, 0xf4, 0x32, 0x00}}},\n    {{{   288,    -17,     53}, 0, {     0,      0}, {0x64, 0xc7, 0x34, 0x00}}},\n    {{{   288,    -17,    -53}, 0, {     0,      0}, {0x64, 0xc7, 0xcc, 0x00}}},\n    {{{  -317,    -48,      0}, 0, {     0,      0}, {0xae, 0xa0, 0x00, 0x00}}},\n    {{{  -183,    -17,    128}, 0, {     0,      0}, {0xd5, 0xc4, 0x66, 0x00}}},\n    {{{  -233,    107,    161}, 0, {     0,      0}, {0xd0, 0xd2, 0x6b, 0x00}}},\n    {{{  -396,     69,      0}, 0, {     0,      0}, {0xb6, 0xcd, 0x58, 0x00}}},\n};\n\n// 0x050056E0\nstatic const Vtx blargg_seg5_vertex_050056E0[] = {\n    {{{   127,   -116,   -102}, 0, {     0,      0}, {0x26, 0x96, 0xc8, 0x00}}},\n    {{{   127,   -116,    102}, 0, {     0,      0}, {0x26, 0x96, 0x38, 0x00}}},\n    {{{  -114,   -139,     64}, 0, {     0,      0}, {0xe0, 0x92, 0x35, 0x00}}},\n    {{{  -114,   -139,    -64}, 0, {     0,      0}, {0xe0, 0x92, 0xcb, 0x00}}},\n    {{{   133,    191,   -247}, 0, {     0,      0}, {0x23, 0xde, 0x8c, 0x00}}},\n    {{{   286,    227,   -123}, 0, {     0,      0}, {0x73, 0xf4, 0xce, 0x00}}},\n    {{{   288,    -17,    -53}, 0, {     0,      0}, {0x64, 0xc7, 0xcc, 0x00}}},\n    {{{   146,     26,   -196}, 0, {     0,      0}, {0x20, 0xcb, 0x92, 0x00}}},\n    {{{   133,    191,    247}, 0, {     0,      0}, {0x23, 0xde, 0x74, 0x00}}},\n    {{{  -233,    107,    161}, 0, {     0,      0}, {0xd0, 0xd2, 0x6b, 0x00}}},\n    {{{  -183,    -17,    128}, 0, {     0,      0}, {0xd5, 0xc4, 0x66, 0x00}}},\n    {{{   146,     26,    196}, 0, {     0,      0}, {0x20, 0xcb, 0x6e, 0x00}}},\n    {{{  -233,    107,   -161}, 0, {     0,      0}, {0xd0, 0xd2, 0x95, 0x00}}},\n    {{{  -183,    -17,   -128}, 0, {     0,      0}, {0xd5, 0xc4, 0x9a, 0x00}}},\n    {{{   288,    -17,     53}, 0, {     0,      0}, {0x64, 0xc7, 0x34, 0x00}}},\n    {{{  -317,    -48,      0}, 0, {     0,      0}, {0xae, 0xa0, 0x00, 0x00}}},\n};\n\n// 0x050057E0\nstatic const Vtx blargg_seg5_vertex_050057E0[] = {\n    {{{   146,     26,    196}, 0, {     0,      0}, {0x20, 0xcb, 0x6e, 0x00}}},\n    {{{   288,    -17,     53}, 0, {     0,      0}, {0x64, 0xc7, 0x34, 0x00}}},\n    {{{   286,    227,    123}, 0, {     0,      0}, {0x73, 0xf4, 0x32, 0x00}}},\n    {{{   133,    191,    247}, 0, {     0,      0}, {0x23, 0xde, 0x74, 0x00}}},\n    {{{  -114,   -139,     64}, 0, {     0,      0}, {0xe0, 0x92, 0x35, 0x00}}},\n    {{{  -317,    -48,      0}, 0, {     0,      0}, {0xae, 0xa0, 0x00, 0x00}}},\n    {{{  -114,   -139,    -64}, 0, {     0,      0}, {0xe0, 0x92, 0xcb, 0x00}}},\n    {{{   127,   -116,    102}, 0, {     0,      0}, {0x26, 0x96, 0x38, 0x00}}},\n    {{{   146,     26,   -196}, 0, {     0,      0}, {0x20, 0xcb, 0x92, 0x00}}},\n    {{{   288,    -17,    -53}, 0, {     0,      0}, {0x64, 0xc7, 0xcc, 0x00}}},\n    {{{   127,   -116,   -102}, 0, {     0,      0}, {0x26, 0x96, 0xc8, 0x00}}},\n    {{{  -183,    -17,   -128}, 0, {     0,      0}, {0xd5, 0xc4, 0x9a, 0x00}}},\n    {{{  -396,     69,      0}, 0, {     0,      0}, {0xb6, 0xcd, 0xa8, 0x00}}},\n    {{{  -233,    107,   -161}, 0, {     0,      0}, {0xd0, 0xd2, 0x95, 0x00}}},\n    {{{  -183,    -17,    128}, 0, {     0,      0}, {0xd5, 0xc4, 0x66, 0x00}}},\n};\n\n// 0x050058D0 - 0x05005A60\nconst Gfx blargg_seg5_dl_050058D0[] = {\n    gsSPLight(&blargg_seg5_lights_05004758.l, 1),\n    gsSPLight(&blargg_seg5_lights_05004758.a, 2),\n    gsSPVertex(blargg_seg5_vertex_050047A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(blargg_seg5_vertex_050048A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(blargg_seg5_vertex_050049A0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPLight(&blargg_seg5_lights_05004740.l, 1),\n    gsSPLight(&blargg_seg5_lights_05004740.a, 2),\n    gsSPVertex(blargg_seg5_vertex_05004A20, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 8, 11, 12, 0x0,  8, 12, 13, 0x0),\n    gsSP2Triangles( 5,  4, 14, 0x0,  5, 14, 15, 0x0),\n    gsSP1Triangle( 1, 14,  2, 0x0),\n    gsSPVertex(blargg_seg5_vertex_05004B20, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 1,  8,  2, 0x0,  4,  9, 10, 0x0),\n    gsSP2Triangles( 4, 10,  1, 0x0,  4,  7, 11, 0x0),\n    gsSP1Triangle( 1, 10,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005A60 - 0x05005D00\nconst Gfx blargg_seg5_dl_05005A60[] = {\n    gsSPLight(&blargg_seg5_lights_05004758.l, 1),\n    gsSPLight(&blargg_seg5_lights_05004758.a, 2),\n    gsSPVertex(blargg_seg5_vertex_05004BE0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(blargg_seg5_vertex_05004CE0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(blargg_seg5_vertex_05004DE0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPLight(&blargg_seg5_lights_05004770.l, 1),\n    gsSPLight(&blargg_seg5_lights_05004770.a, 2),\n    gsSPVertex(blargg_seg5_vertex_05004E60, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 2,  6,  7, 0x0,  2,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 11, 12, 0x0),\n    gsSP2Triangles( 9, 12, 13, 0x0,  9, 13, 14, 0x0),\n    gsSP1Triangle( 9, 14, 15, 0x0),\n    gsSPVertex(blargg_seg5_vertex_05004F60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  2,  9,  0, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(blargg_seg5_vertex_05005050, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  3,  5, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(14, 15, 13, 0x0, 14, 13, 12, 0x0),\n    gsSPVertex(blargg_seg5_vertex_05005150, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(11,  3,  9, 0x0,  1,  8,  2, 0x0),\n    gsSP2Triangles(12,  0,  2, 0x0, 13, 14, 11, 0x0),\n    gsSP2Triangles( 5,  7, 15, 0x0,  5,  8,  7, 0x0),\n    gsSPVertex(blargg_seg5_vertex_05005250, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  5, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  3, 11, 10, 0x0),\n    gsSP2Triangles( 7,  5,  4, 0x0,  9,  8,  7, 0x0),\n    gsSP2Triangles(11,  8,  9, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(blargg_seg5_vertex_05005340, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  4, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  6,  7,  5, 0x0),\n    gsSP2Triangles( 8,  6,  5, 0x0,  9,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005D00 - 0x05005EB8\nconst Gfx blargg_seg5_dl_05005D00[] = {\n    gsSPLight(&blargg_seg5_lights_05004788.l, 1),\n    gsSPLight(&blargg_seg5_lights_05004788.a, 2),\n    gsSPVertex(blargg_seg5_vertex_050053E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(blargg_seg5_vertex_050054E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(blargg_seg5_vertex_050055E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(blargg_seg5_vertex_050056E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12,  4,  7, 0x0, 12,  7, 13, 0x0),\n    gsSP2Triangles( 0,  6, 14, 0x0,  0, 14,  1, 0x0),\n    gsSP2Triangles( 3, 15, 13, 0x0, 10, 15,  2, 0x0),\n    gsSPVertex(blargg_seg5_vertex_050057E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  1,  0, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  5, 12, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0,  8, 10,  6, 0x0),\n    gsSP2Triangles( 8,  6, 11, 0x0, 14,  4,  7, 0x0),\n    gsSP1Triangle(14,  7,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/blue_coin_switch/collision.inc.c",
    "content": "// Blue Coin Switch\n\n// 0x08000E98 - 0x08000F10\nconst Collision blue_coin_switch_seg8_collision_08000E98[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(26, 0, 26),\n    COL_VERTEX(26, 26, 26),\n    COL_VERTEX(-25, 26, 26),\n    COL_VERTEX(-25, 0, 26),\n    COL_VERTEX(26, 0, -25),\n    COL_VERTEX(26, 26, -25),\n    COL_VERTEX(-25, 26, -25),\n    COL_VERTEX(-25, 0, -25),\n\n    COL_TRI_INIT(SURFACE_DEFAULT, 10),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(4, 5, 1),\n    COL_TRI(5, 6, 2),\n    COL_TRI(5, 2, 1),\n    COL_TRI(7, 6, 5),\n    COL_TRI(7, 5, 4),\n    COL_TRI(3, 6, 7),\n    COL_TRI(3, 2, 6),\n    COL_TRI(4, 1, 0),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "actors/blue_coin_switch/geo.inc.c",
    "content": "// 0x0F000000\nconst GeoLayout blue_coin_switch_geo[] = {\n    GEO_CULLING_RADIUS(300),\n    GEO_OPEN_NODE(),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, blue_coin_switch_seg8_dl_08000E08),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/blue_coin_switch/model.inc.c",
    "content": "// Blue Coin Switch\n\n// 0x08000000\nstatic const Lights1 blue_coin_switch_seg8_lights_08000000 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x08000018\nALIGNED8 static const Texture blue_coin_switch_seg8_texture_08000018[] = {\n#include \"actors/blue_coin_switch/blue_coin_switch_side.rgba16.inc.c\"\n};\n\n// 0x08000418\nALIGNED8 static const Texture blue_coin_switch_seg8_texture_08000418[] = {\n#include \"actors/blue_coin_switch/blue_coin_switch_top.rgba16.inc.c\"\n};\n\n// 0x08000C18\nstatic const Vtx blue_coin_switch_seg8_vertex_08000C18[] = {\n    {{{    26,      0,     26}, 0, {   990,    479}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    26,     26,     26}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -25,     26,     26}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -25,      0,     26}, 0, {     0,    479}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -25,      0,    -25}, 0, {   990,    479}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    26,     26,    -25}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    26,      0,    -25}, 0, {     0,    479}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -25,     26,    -25}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -25,      0,     26}, 0, {   990,    479}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -25,     26,    -25}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -25,      0,    -25}, 0, {     0,    479}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -25,     26,     26}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    26,      0,    -25}, 0, {   990,    479}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    26,     26,    -25}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    26,     26,     26}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    26,      0,     26}, 0, {     0,    479}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x08000D18\nstatic const Vtx blue_coin_switch_seg8_vertex_08000D18[] = {\n    {{{    26,     26,    -25}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -25,     26,     26}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    26,     26,     26}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -25,     26,    -25}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x08000D58 - 0x08000DD0\nconst Gfx blue_coin_switch_seg8_dl_08000D58[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, blue_coin_switch_seg8_texture_08000018),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&blue_coin_switch_seg8_lights_08000000.l, 1),\n    gsSPLight(&blue_coin_switch_seg8_lights_08000000.a, 2),\n    gsSPVertex(blue_coin_switch_seg8_vertex_08000C18, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x08000DD0 - 0x08000E08\nconst Gfx blue_coin_switch_seg8_dl_08000DD0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, blue_coin_switch_seg8_texture_08000418),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(blue_coin_switch_seg8_vertex_08000D18, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x08000E08 - 0x08000E98\nconst Gfx blue_coin_switch_seg8_dl_08000E08[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 4, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (16 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(blue_coin_switch_seg8_dl_08000D58),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(blue_coin_switch_seg8_dl_08000DD0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/blue_fish/anims/anim_0301C298.inc.c",
    "content": "// 0x0301C1B0\nstatic const s16 blue_fish_seg3_animvalue_0301C1B0[] = {\n    0x0000, 0xFFF1, 0xFFF1, 0xFFF2, 0xFFF4, 0xFFF7, 0xFFFA, 0xFFFD,\n    0x0000, 0x0002, 0x0005, 0x0008, 0x000A, 0x000C, 0x000E, 0x000E,\n    0x000E, 0x000D, 0x000C, 0x000A, 0x0009, 0x0006, 0x0004, 0x0002,\n    0x0000, 0xFFFD, 0xFFFB, 0xFFF8, 0xFFF6, 0xFFF3, 0xFFF1, 0xC001,\n    0xF3F6, 0xF61A, 0xFAF7, 0x003A, 0x0390, 0x052A, 0x06BA, 0x0832,\n    0x0984, 0x0AA1, 0x0B7C, 0x0C06, 0x0C31, 0x0BEE, 0x0B2F, 0x078D,\n    0x00B3, 0xF9AA, 0xF579, 0xF3FF, 0xF306, 0xF27B, 0xF247, 0xF258,\n    0xF298, 0xF2F4, 0xF356, 0xF3AB, 0xF3DE, 0xF3DA, 0x461C, 0x4623,\n    0x462E, 0x4629, 0x4603, 0x45AA, 0x450A, 0x4410, 0x42C9, 0x4151,\n    0x3FC6, 0x3E45, 0x3CEA, 0x3BD2, 0x3B1B, 0x3ACE, 0x3AD5, 0x3B20,\n    0x3BA0, 0x3C43, 0x3CFA, 0x3DB5, 0x3E7E, 0x3F66, 0x4066, 0x4177,\n    0x4292, 0x43AF, 0x44C7, 0x45D4,\n};\n\n// 0x0301C268\nstatic const u16 blue_fish_seg3_animindex_0301C268[] = {\n    0x001E, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x001F, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x003E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0020,\n};\n\n// 0x0301C298\nstatic const struct Animation blue_fish_seg3_anim_0301C298 = {\n    0,\n    0,\n    0,\n    0,\n    0x1E,\n    ANIMINDEX_NUMPARTS(blue_fish_seg3_animindex_0301C268),\n    blue_fish_seg3_animvalue_0301C1B0,\n    blue_fish_seg3_animindex_0301C268,\n    0,\n};\n"
  },
  {
    "path": "actors/blue_fish/anims/data.inc.c",
    "content": "#include \"anim_0301C298.inc.c\"\n"
  },
  {
    "path": "actors/blue_fish/anims/table.inc.c",
    "content": "// 0x0301C2B0\nconst struct Animation *const blue_fish_seg3_anims_0301C2B0[] = {\n    &blue_fish_seg3_anim_0301C298,\n    NULL,\n};\n"
  },
  {
    "path": "actors/blue_fish/geo.inc.c",
    "content": "// 0x16000BEC\nconst GeoLayout fish_shadow_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x9B, 50),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, -16, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, blue_fish_seg3_dl_0301BFB8),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 97, 0, 0, blue_fish_seg3_dl_0301C150),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x16000C44\nconst GeoLayout fish_geo[] = {\n    GEO_SCALE(0x00, 16384),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, -16, 0, 0, NULL),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, blue_fish_seg3_dl_0301BFB8),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 97, 0, 0, blue_fish_seg3_dl_0301C150),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/blue_fish/model.inc.c",
    "content": "// Blue Fish\n\n// 0x0301B5C8\nstatic const Lights1 blue_fish_seg3_lights_0301B5C8 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0301B5E0\nALIGNED8 static const Texture blue_fish_seg3_texture_0301B5E0[] = {\n#include \"actors/blue_fish/blue_fish.rgba16.inc.c\"\n};\n\n// 0x0301BDE0\nstatic const Vtx blue_fish_seg3_vertex_0301BDE0[] = {\n    {{{  -108,      1,      0}, 0, {    14,    566}, {0x89, 0x00, 0xd7, 0xff}}},\n    {{{   -44,    -13,    -31}, 0, {   286,    688}, {0xeb, 0x89, 0xdc, 0xff}}},\n    {{{   -62,    -19,     12}, 0, {   210,    502}, {0xe8, 0x84, 0x0a, 0xff}}},\n    {{{   -44,     16,    -31}, 0, {   286,    688}, {0xea, 0x77, 0xdc, 0xff}}},\n    {{{   -62,     21,     12}, 0, {   210,    502}, {0xe8, 0x7c, 0x0b, 0xff}}},\n    {{{   -47,      1,    -64}, 0, {   274,    830}, {0xbd, 0xff, 0x95, 0xff}}},\n    {{{   -97,      1,     23}, 0, {    62,    462}, {0xa2, 0x00, 0x54, 0xff}}},\n    {{{    55,      1,    127}, 0, {   712,     -8}, {0x1a, 0x00, 0x7c, 0xff}}},\n    {{{    41,     16,     56}, 0, {   656,    298}, {0x43, 0x67, 0x1b, 0xff}}},\n    {{{    50,     16,    -43}, 0, {   692,    722}, {0x35, 0x6f, 0xe6, 0xff}}},\n    {{{    41,    -14,     56}, 0, {   656,    298}, {0x43, 0x99, 0x1b, 0xff}}},\n    {{{    50,    -13,    -43}, 0, {   692,    722}, {0x35, 0x91, 0xe6, 0xff}}},\n    {{{    62,      1,    -92}, 0, {   742,    930}, {0x42, 0xff, 0x94, 0xff}}},\n    {{{   101,      1,      1}, 0, {   910,    520}, {0x7e, 0x00, 0x01, 0xff}}},\n};\n\n// 0x0301BEC0 - 0x0301BFB8\nconst Gfx blue_fish_seg3_dl_0301BEC0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, blue_fish_seg3_texture_0301B5E0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&blue_fish_seg3_lights_0301B5C8.l, 1),\n    gsSPLight(&blue_fish_seg3_lights_0301B5C8.a, 2),\n    gsSPVertex(blue_fish_seg3_vertex_0301BDE0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 5,  0,  3, 0x0,  2,  6,  0, 0x0),\n    gsSP2Triangles( 0,  6,  4, 0x0,  5,  1,  0, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  6,  2,  7, 0x0),\n    gsSP2Triangles( 7,  8,  4, 0x0,  9,  4,  8, 0x0),\n    gsSP2Triangles( 9,  3,  4, 0x0,  2, 10,  7, 0x0),\n    gsSP2Triangles( 1, 11,  2, 0x0, 11, 10,  2, 0x0),\n    gsSP2Triangles( 1,  5, 12, 0x0, 12,  5,  3, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0,  3,  9, 12, 0x0),\n    gsSP2Triangles(12, 11,  1, 0x0,  8,  7, 10, 0x0),\n    gsSP2Triangles(13,  9,  8, 0x0,  9, 13, 11, 0x0),\n    gsSP2Triangles(11, 13, 10, 0x0, 10, 13,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0301BFB8 - 0x0301C018\nconst Gfx blue_fish_seg3_dl_0301BFB8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(blue_fish_seg3_dl_0301BEC0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0301C018\nstatic const Vtx blue_fish_seg3_vertex_0301C018[] = {\n    {{{    67,      0,    -58}, 0, {   736,    728}, {0x7a, 0x00, 0xde, 0xff}}},\n    {{{    67,     -3,    -28}, 0, {   704,    574}, {0x53, 0xa3, 0x14, 0xff}}},\n    {{{     0,      1,     -3}, 0, {  1022,    356}, {0xa1, 0xf9, 0xad, 0xff}}},\n    {{{    67,      4,     27}, 0, {   644,    290}, {0x3f, 0x6d, 0xf3, 0xff}}},\n    {{{    53,      0,      0}, 0, {   744,    414}, {0x7e, 0x00, 0xfe, 0xff}}},\n    {{{    67,     -3,     27}, 0, {   644,    290}, {0x40, 0x95, 0xeb, 0xff}}},\n    {{{     0,      0,      5}, 0, {  1016,    312}, {0x9e, 0xfd, 0x50, 0xff}}},\n    {{{    67,      4,    -28}, 0, {   704,    574}, {0x54, 0x5c, 0x15, 0xff}}},\n    {{{    67,      0,     57}, 0, {   612,    138}, {0x7a, 0x00, 0x22, 0xff}}},\n};\n\n// 0x0301C0A8 - 0x0301C150\nconst Gfx blue_fish_seg3_dl_0301C0A8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, blue_fish_seg3_texture_0301B5E0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&blue_fish_seg3_lights_0301B5C8.l, 1),\n    gsSPLight(&blue_fish_seg3_lights_0301B5C8.a, 2),\n    gsSPVertex(blue_fish_seg3_vertex_0301C018, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 4,  5,  2, 0x0,  2,  5,  6, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  2,  6,  3, 0x0),\n    gsSP2Triangles( 4,  7,  2, 0x0,  2,  7,  0, 0x0),\n    gsSP2Triangles( 6,  8,  3, 0x0,  3,  8,  5, 0x0),\n    gsSP2Triangles( 3,  5,  4, 0x0,  4,  1,  7, 0x0),\n    gsSP2Triangles( 6,  5,  8, 0x0,  1,  0,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0301C150 - 0x0301C1B0\nconst Gfx blue_fish_seg3_dl_0301C150[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(blue_fish_seg3_dl_0301C0A8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/bobomb/anims/anim_080237FC.inc.c",
    "content": "// 0x08023528\nstatic const s16 bobomb_seg8_animvalue_08023528[] = {\n    0x0000, 0xFFF8, 0xFFF8, 0xFFFA, 0xFFFC, 0xFFFF, 0x0000, 0x0001,\n    0x0003, 0x0005, 0x0006, 0x0007, 0x0008, 0x0007, 0x0006, 0x0005,\n    0x0003, 0x0001, 0x0000, 0xFFFF, 0xFFFD, 0xFFFC, 0xFFFA, 0xFFF9,\n    0xFFF8, 0xFFF8, 0x00A2, 0x00A3, 0x00A6, 0x00AA, 0x00AD, 0x00AE,\n    0x00AD, 0x00AB, 0x00A8, 0x00A5, 0x00A3, 0x00A2, 0x00A3, 0x00A5,\n    0x00A8, 0x00AB, 0x00AD, 0x00AE, 0x00AD, 0x00AB, 0x00A9, 0x00A7,\n    0x00A4, 0x00A3, 0x00A2, 0x3FFF, 0x0000, 0xFFFC, 0xFFF2, 0xFFE4,\n    0xFFD3, 0xFFC4, 0xFFB8, 0xFFB2, 0xFFB3, 0xFFBF, 0xFFD8, 0x0000,\n    0x0083, 0x016B, 0x0254, 0x02DA, 0x02D4, 0x027E, 0x0206, 0x019D,\n    0x013E, 0x00D1, 0x006A, 0x001E, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xFFFE, 0xFFFA, 0xFFF9, 0x0000, 0x0016, 0x0038, 0x0057,\n    0x0065, 0x005A, 0x0041, 0x0023, 0x000A, 0x0000, 0xA656, 0xA6E2,\n    0xA869, 0xAAC1, 0xADBF, 0xB138, 0xB503, 0xB8F5, 0xBCE3, 0xC0A3,\n    0xC40A, 0xC6EE, 0xC9DE, 0xCCB2, 0xCE29, 0xCD04, 0xC7AE, 0xBF3C,\n    0xB66F, 0xB005, 0xAC43, 0xA984, 0xA7AF, 0xA6A8, 0xA656, 0xC7BF,\n    0xCA53, 0xCEE8, 0xD0C6, 0xCB0D, 0xC265, 0xBB0B, 0xB3CD, 0xAE17,\n    0xAA0D, 0xA78C, 0xA78F, 0xA977, 0xABE8, 0xAEC2, 0xB1E6, 0xB537,\n    0xB896, 0xBBE5, 0xBF05, 0xC1D8, 0xC43F, 0xC61D, 0xC751, 0xC7BF,\n    0x6925, 0x6773, 0x62CA, 0x5BD5, 0x533B, 0x49A4, 0x3FB9, 0x3622,\n    0x2D88, 0x2693, 0x21EA, 0x2038, 0x2172, 0x24DD, 0x2A13, 0x30AE,\n    0x3848, 0x407B, 0x48E1, 0x5114, 0x58AE, 0x5F49, 0x6480, 0x67EB,\n    0x6925, 0x2108, 0x228D, 0x26B7, 0x2CEF, 0x349F, 0x3D32, 0x460F,\n    0x4EA1, 0x5652, 0x5C8A, 0x60B4, 0x6238, 0x611F, 0x5E11, 0x5968,\n    0x5381, 0x4CB5, 0x4561, 0x3DDF, 0x368B, 0x2FC0, 0x29D8, 0x2530,\n    0x2221, 0x2108, 0x0206, 0x01DD, 0x0172, 0x00E1, 0x0044, 0xFFB8,\n    0xFF27, 0xFE7F, 0xFDD5, 0xFD3F, 0xFCD6, 0xFCB0, 0xFCD1, 0xFD27,\n    0xFDA3, 0xFE35, 0xFECD, 0xFF5E, 0xFFD8, 0x004A, 0x00C6, 0x013E,\n    0x01A4, 0x01EC, 0x0206, 0x0034, 0x0030, 0x0027, 0x001A, 0x000B,\n    0xFFFE, 0xFFEE, 0xFFDB, 0xFFC7, 0xFFB5, 0xFFA8, 0xFFA3, 0xFFA6,\n    0xFFB0, 0xFFBE, 0xFFCF, 0xFFE0, 0xFFF0, 0xFFFE, 0x0008, 0x0015,\n    0x0020, 0x002A, 0x0031, 0x0034, 0x7BED, 0x7C6C, 0x7D9A, 0x7F02,\n    0x8030, 0x80A7, 0x8040, 0x7F48, 0x7E0E, 0x7CD6, 0x7BE6, 0x7B87,\n    0x7BD0, 0x7C8A, 0x7D89, 0x7E9F, 0x7FA0, 0x8061, 0x80B0, 0x805B,\n    0x7F79, 0x7E53, 0x7D2C, 0x7C48, 0x7BED, 0x0000,\n};\n\n// 0x08023754\nstatic const u16 bobomb_seg8_animindex_08023754[] = {\n    0x0019, 0x0001, 0x0019, 0x001A, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0033, 0x0001, 0x0000,\n    0x0019, 0x00CA, 0x0019, 0x00E3, 0x0019, 0x00FC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0019, 0x0098,\n    0x0019, 0x0034, 0x0019, 0x004D, 0x0019, 0x0066,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0019, 0x00B1,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0019, 0x007F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x080237FC\nstatic const struct Animation bobomb_seg8_anim_080237FC = {\n    0,\n    0,\n    0,\n    0,\n    0x19,\n    ANIMINDEX_NUMPARTS(bobomb_seg8_animindex_08023754),\n    bobomb_seg8_animvalue_08023528,\n    bobomb_seg8_animindex_08023754,\n    0,\n};\n"
  },
  {
    "path": "actors/bobomb/anims/anim_08023954.inc.c",
    "content": "// 0x08023814\nstatic const s16 bobomb_seg8_animvalue_08023814[] = {\n    0x0000, 0x00B1, 0x0000, 0x0002, 0x0008, 0x000E, 0x0010, 0x000E,\n    0x000A, 0x0005, 0x0001, 0x0000, 0x3FFF, 0x0FE3, 0x1004, 0x104C,\n    0x1093, 0x10B4, 0x109E, 0x106A, 0x102D, 0x0FF9, 0x0FE3, 0xBBEE,\n    0xBEFD, 0xC5B5, 0xCC6E, 0xCF7D, 0xCD74, 0xC89A, 0xC2D0, 0xBDF7,\n    0xBBEE, 0xFC25, 0xFD6A, 0x0032, 0x02FB, 0x0440, 0x0368, 0x0165,\n    0xFF00, 0xFCFD, 0xFC25, 0xF0FC, 0xEFB1, 0xECD9, 0xEA02, 0xE8B7,\n    0xE993, 0xEBA0, 0xEE13, 0xF020, 0xF0FC, 0xD8C1, 0xD34A, 0xC744,\n    0xBB3F, 0xB5C8, 0xB96B, 0xC217, 0xCC71, 0xD51E, 0xD8C1, 0x3FFF,\n    0x3FFF, 0x74FE, 0x7655, 0x7946, 0x7C36, 0x7D8D, 0x7CA9, 0x7A8A,\n    0x7801, 0x75E2, 0x74FE, 0x0000,\n};\n\n// 0x080238AC\nstatic const u16 bobomb_seg8_animindex_080238AC[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x000A, 0x0002, 0x0001, 0x0000, 0x0001, 0x000C, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0041,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x003F,\n    0x0001, 0x0000, 0x000A, 0x000D, 0x000A, 0x0017,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0040,\n    0x000A, 0x0021, 0x000A, 0x002B, 0x000A, 0x0035,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x08023954\nstatic const struct Animation bobomb_seg8_anim_08023954 = {\n    0,\n    0,\n    0,\n    0,\n    0x0A,\n    ANIMINDEX_NUMPARTS(bobomb_seg8_animindex_080238AC),\n    bobomb_seg8_animvalue_08023814,\n    bobomb_seg8_animindex_080238AC,\n    0,\n};\n"
  },
  {
    "path": "actors/bobomb/anims/data.inc.c",
    "content": "#include \"anim_080237FC.inc.c\"\n#include \"anim_08023954.inc.c\"\n"
  },
  {
    "path": "actors/bobomb/anims/table.inc.c",
    "content": "// 0x0802396C\nconst struct Animation *const bobomb_seg8_anims_0802396C[] = {\n    &bobomb_seg8_anim_080237FC,\n    &bobomb_seg8_anim_08023954,\n    NULL,\n};\n"
  },
  {
    "path": "actors/bobomb/geo.inc.c",
    "content": "// 0x0F0007B8\nconst GeoLayout black_bobomb_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xC8, 70),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 24576),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_BILLBOARD(),\n                        GEO_OPEN_NODE(),\n                            GEO_DISPLAY_LIST(LAYER_ALPHA, bobomb_seg8_dl_08022D08),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 57, -60, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 91, 0, 0, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bobomb_seg8_dl_08023270),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 55, 62, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 91, 0, 0, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bobomb_seg8_dl_08023378),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bobomb_seg8_dl_08023480),\n                    GEO_SWITCH_CASE(2, geo_switch_anim_state),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, bobomb_seg8_dl_08022B58),\n                        GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, bobomb_seg8_dl_08022B88),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0F0008F4\nconst GeoLayout bobomb_buddy_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xC8, 70),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 24576),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_BILLBOARD(),\n                        GEO_OPEN_NODE(),\n                            GEO_DISPLAY_LIST(LAYER_ALPHA, bobomb_seg8_dl_08022D78),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 57, -60, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 91, 0, 0, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bobomb_seg8_dl_08023270),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 55, 62, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 91, 0, 0, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bobomb_seg8_dl_08023378),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bobomb_seg8_dl_08023480),\n                    GEO_SWITCH_CASE(2, geo_switch_anim_state),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, bobomb_seg8_dl_08022B58),\n                        GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, bobomb_seg8_dl_08022B88),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/bobomb/model.inc.c",
    "content": "// Bobomb\n\n// 0x0801DA60\nALIGNED8 static const Texture bobomb_seg8_texture_0801DA60[] = {\n#include \"actors/bobomb/bob-omb_left_side.rgba16.inc.c\"\n};\n\n// 0x0801EA60\nALIGNED8 static const Texture bobomb_seg8_texture_0801EA60[] = {\n#include \"actors/bobomb/bob-omb_right_side.rgba16.inc.c\"\n};\n\n// 0x0801FA60\nALIGNED8 static const Texture bobomb_seg8_texture_0801FA60[] = {\n#include \"actors/bobomb/bob-omb_buddy_left_side.rgba16.inc.c\"\n};\n\n// 0x08020A60\nALIGNED8 static const Texture bobomb_seg8_texture_08020A60[] = {\n#include \"actors/bobomb/bob-omb_buddy_right_side.rgba16.inc.c\"\n};\n\n// 0x08021A60\nALIGNED8 static const Texture bobomb_seg8_texture_08021A60[] = {\n#include \"actors/bobomb/bob-omb_eyes.rgba16.inc.c\"\n};\n\n// 0x08022260\nALIGNED8 static const Texture bobomb_seg8_texture_08022260[] = {\n#include \"actors/bobomb/bob-omb_eyes_blink.rgba16.inc.c\"\n};\n\n// 0x08022A60\nstatic const Vtx bobomb_seg8_vertex_08022A60[] = {\n    {{{   133,    -47,      0}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   133,     32,      0}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   128,     32,     50}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   128,    -47,    -49}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   128,    -47,     50}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   128,     32,    -49}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x08022AC0 - 0x08022B08\nconst Gfx bobomb_seg8_dl_08022AC0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x08022B08 - 0x08022B58\nconst Gfx bobomb_seg8_dl_08022B08[] = {\n    gsSPVertex(bobomb_seg8_vertex_08022A60, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  3,  5,  1, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x08022B58 - 0x08022B88\nconst Gfx bobomb_seg8_dl_08022B58[] = {\n    gsSPDisplayList(bobomb_seg8_dl_08022AC0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bobomb_seg8_texture_08021A60),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(bobomb_seg8_dl_08022B08),\n    gsSPEndDisplayList(),\n};\n\n// 0x08022B88 - 0x08022BB8\nconst Gfx bobomb_seg8_dl_08022B88[] = {\n    gsSPDisplayList(bobomb_seg8_dl_08022AC0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bobomb_seg8_texture_08022260),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(bobomb_seg8_dl_08022B08),\n    gsSPEndDisplayList(),\n};\n\n// 0x08022BB8\nstatic const Vtx bobomb_seg8_vertex_08022BB8[] = {\n    {{{     0,     49,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -49,    -49,      0}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    -49,      0}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -49,     49,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x08022BF8\nstatic const Vtx bobomb_seg8_vertex_08022BF8[] = {\n    {{{    49,     49,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    -49,      0}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    49,    -49,      0}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,     49,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x08022C38 - 0x08022CA0\nconst Gfx bobomb_seg8_dl_08022C38[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bobomb_seg8_texture_0801DA60),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bobomb_seg8_vertex_08022BB8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bobomb_seg8_texture_0801EA60),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bobomb_seg8_vertex_08022BF8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x08022CA0 - 0x08022D08\nconst Gfx bobomb_seg8_dl_08022CA0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bobomb_seg8_texture_0801FA60),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bobomb_seg8_vertex_08022BB8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bobomb_seg8_texture_08020A60),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bobomb_seg8_vertex_08022BF8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x08022D08 - 0x08022D78\nconst Gfx bobomb_seg8_dl_08022D08[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bobomb_seg8_dl_08022C38),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x08022D78 - 0x08022DE8\nconst Gfx bobomb_seg8_dl_08022D78[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bobomb_seg8_dl_08022CA0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x08022DE8\nstatic const Lights1 bobomb_seg8_lights_08022DE8 = gdSPDefLights1(\n    0x3f, 0x26, 0x04,\n    0xff, 0x99, 0x12, 0x28, 0x28, 0x28\n);\n\n// 0x08022E00\nstatic const Lights1 bobomb_seg8_lights_08022E00 = gdSPDefLights1(\n    0x2c, 0x2c, 0x2c,\n    0xb2, 0xb2, 0xb2, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nstatic const Lights1 bobomb_lights_unused = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x08022E30\nstatic const Vtx bobomb_seg8_vertex_08022E30[] = {\n    {{{    27,    -26,    -31}, 0, {     0,      0}, {0xeb, 0x96, 0xbf, 0x00}}},\n    {{{   -36,      0,    -20}, 0, {     0,      0}, {0xb1, 0xd0, 0xaa, 0x00}}},\n    {{{    32,      0,    -41}, 0, {     0,      0}, {0xfc, 0xfb, 0x82, 0x00}}},\n    {{{    85,      0,    -32}, 0, {     0,      0}, {0x50, 0xf1, 0xa0, 0xff}}},\n    {{{    79,     28,    -20}, 0, {     0,      0}, {0x34, 0x62, 0xc4, 0xff}}},\n    {{{    79,     28,     15}, 0, {     0,      0}, {0x34, 0x62, 0x3c, 0xff}}},\n    {{{    85,      0,     27}, 0, {     0,      0}, {0x50, 0xf1, 0x60, 0xff}}},\n    {{{    33,     28,     29}, 0, {     0,      0}, {0xff, 0x69, 0x47, 0xff}}},\n    {{{   -29,     28,     12}, 0, {     0,      0}, {0xc8, 0x60, 0x3c, 0xff}}},\n    {{{   -36,      0,     16}, 0, {     0,      0}, {0xb1, 0xd0, 0x56, 0xff}}},\n    {{{    32,      0,     37}, 0, {     0,      0}, {0xfc, 0xfb, 0x7e, 0xff}}},\n    {{{    33,     28,    -34}, 0, {     0,      0}, {0xff, 0x69, 0xb9, 0xff}}},\n    {{{   -29,     28,    -16}, 0, {     0,      0}, {0xc8, 0x60, 0xc4, 0xff}}},\n    {{{    68,    -30,     16}, 0, {     0,      0}, {0x26, 0x95, 0x36, 0xff}}},\n    {{{    68,    -30,    -21}, 0, {     0,      0}, {0x26, 0x95, 0xca, 0xff}}},\n    {{{    27,    -26,     27}, 0, {     0,      0}, {0xeb, 0x96, 0x41, 0xff}}},\n};\n\n// 0x08022F30\nstatic const Vtx bobomb_seg8_vertex_08022F30[] = {\n    {{{    27,    -26,    -31}, 0, {     0,      0}, {0xed, 0x90, 0xc8, 0xff}}},\n    {{{    27,    -26,     27}, 0, {     0,      0}, {0xf5, 0xa2, 0x53, 0x00}}},\n    {{{   -36,      0,     16}, 0, {     0,      0}, {0xa2, 0xf8, 0x54, 0x00}}},\n    {{{   -36,      0,    -20}, 0, {     0,      0}, {0xa9, 0xdd, 0xac, 0xff}}},\n};\n\n// 0x08022F70\nstatic const Vtx bobomb_seg8_vertex_08022F70[] = {\n    {{{    32,      0,     41}, 0, {     0,      0}, {0xfc, 0xfb, 0x7e, 0x00}}},\n    {{{   -36,      0,     20}, 0, {     0,      0}, {0xb1, 0xd0, 0x56, 0x00}}},\n    {{{    27,    -26,     31}, 0, {     0,      0}, {0xeb, 0x96, 0x41, 0x00}}},\n    {{{    84,      0,    -27}, 0, {     0,      0}, {0x50, 0xf1, 0xa0, 0xff}}},\n    {{{    79,     28,    -15}, 0, {     0,      0}, {0x34, 0x62, 0xc4, 0xff}}},\n    {{{    79,     28,     20}, 0, {     0,      0}, {0x34, 0x62, 0x3c, 0xff}}},\n    {{{    84,      0,     32}, 0, {     0,      0}, {0x50, 0xf1, 0x60, 0xff}}},\n    {{{    32,      0,    -37}, 0, {     0,      0}, {0xfc, 0xfb, 0x82, 0xff}}},\n    {{{   -36,      0,    -16}, 0, {     0,      0}, {0xb1, 0xd0, 0xaa, 0xff}}},\n    {{{   -28,     28,    -12}, 0, {     0,      0}, {0xc8, 0x60, 0xc4, 0xff}}},\n    {{{    33,     28,    -29}, 0, {     0,      0}, {0xff, 0x69, 0xb9, 0xff}}},\n    {{{   -28,     28,     16}, 0, {     0,      0}, {0xc8, 0x60, 0x3c, 0xff}}},\n    {{{    33,     28,     33}, 0, {     0,      0}, {0xff, 0x69, 0x47, 0xff}}},\n    {{{    68,    -29,     21}, 0, {     0,      0}, {0x26, 0x95, 0x36, 0xff}}},\n    {{{    68,    -29,    -16}, 0, {     0,      0}, {0x26, 0x95, 0xca, 0xff}}},\n    {{{    27,    -26,    -27}, 0, {     0,      0}, {0xeb, 0x96, 0xbf, 0xff}}},\n};\n\n// 0x08023070\nstatic const Vtx bobomb_seg8_vertex_08023070[] = {\n    {{{    27,    -26,    -27}, 0, {     0,      0}, {0xed, 0x90, 0xc8, 0xff}}},\n    {{{    27,    -26,     31}, 0, {     0,      0}, {0xf5, 0xa2, 0x53, 0x00}}},\n    {{{   -36,      0,     20}, 0, {     0,      0}, {0xa2, 0xf8, 0x54, 0x00}}},\n    {{{   -36,      0,    -16}, 0, {     0,      0}, {0xa9, 0xdd, 0xac, 0xff}}},\n};\n\n// 0x080230B0\nstatic const Vtx bobomb_seg8_vertex_080230B0[] = {\n    {{{     0,   -100,     59}, 0, {     0,      0}, {0x00, 0xfe, 0x7f, 0x00}}},\n    {{{   -53,    -99,     28}, 0, {     0,      0}, {0xc1, 0xfe, 0x6d, 0x00}}},\n    {{{   -53,   -140,     27}, 0, {     0,      0}, {0xc1, 0xfe, 0x6d, 0x00}}},\n    {{{     0,   -141,     58}, 0, {     0,      0}, {0x00, 0xfe, 0x7f, 0xff}}},\n    {{{    53,    -99,     28}, 0, {     0,      0}, {0x3f, 0xfe, 0x6d, 0xff}}},\n    {{{    53,   -140,     27}, 0, {     0,      0}, {0x3f, 0xfe, 0x6d, 0xff}}},\n    {{{   -53,    -99,     28}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -53,    -98,    -32}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -53,   -139,    -33}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -53,   -140,     27}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -53,    -98,    -32}, 0, {     0,      0}, {0xc1, 0x02, 0x93, 0xff}}},\n    {{{     0,    -97,    -63}, 0, {     0,      0}, {0xc1, 0x02, 0x93, 0xff}}},\n    {{{     0,   -138,    -64}, 0, {     0,      0}, {0xc1, 0x02, 0x93, 0xff}}},\n    {{{   -53,   -139,    -33}, 0, {     0,      0}, {0xc1, 0x02, 0x93, 0xff}}},\n};\n\n// 0x08023190\nstatic const Vtx bobomb_seg8_vertex_08023190[] = {\n    {{{    53,    -98,    -32}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    53,    -99,     28}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    53,   -140,     27}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    53,   -139,    -33}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,    -97,    -63}, 0, {     0,      0}, {0x3f, 0x02, 0x93, 0xff}}},\n    {{{    53,    -98,    -32}, 0, {     0,      0}, {0x3f, 0x02, 0x93, 0xff}}},\n    {{{    53,   -139,    -33}, 0, {     0,      0}, {0x3f, 0x02, 0x93, 0xff}}},\n    {{{     0,   -138,    -64}, 0, {     0,      0}, {0x3f, 0x02, 0x93, 0xff}}},\n    {{{     0,   -138,    -64}, 0, {     0,      0}, {0x00, 0x81, 0xfe, 0xff}}},\n    {{{    53,   -139,    -33}, 0, {     0,      0}, {0x00, 0x81, 0xfe, 0xff}}},\n    {{{    53,   -140,     27}, 0, {     0,      0}, {0x00, 0x81, 0xfe, 0xff}}},\n    {{{     0,   -141,     58}, 0, {     0,      0}, {0x00, 0x81, 0xfe, 0xff}}},\n    {{{   -53,   -140,     27}, 0, {     0,      0}, {0x00, 0x81, 0xfe, 0xff}}},\n    {{{   -53,   -139,    -33}, 0, {     0,      0}, {0x00, 0x81, 0xfe, 0xff}}},\n};\n\n// 0x08023270 - 0x08023378\nconst Gfx bobomb_seg8_dl_08023270[] = {\n    gsSPLight(&bobomb_seg8_lights_08022DE8.l, 1),\n    gsSPLight(&bobomb_seg8_lights_08022DE8.a, 2),\n    gsSPVertex(bobomb_seg8_vertex_08022E30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12,  8, 0x0),\n    gsSP2Triangles(11,  8,  7, 0x0,  6, 13, 14, 0x0),\n    gsSP2Triangles( 6, 14,  3, 0x0,  9,  8, 12, 0x0),\n    gsSP2Triangles( 9, 12,  1, 0x0, 10,  9, 15, 0x0),\n    gsSP2Triangles( 2,  1, 12, 0x0,  2, 12, 11, 0x0),\n    gsSP2Triangles(10,  6,  5, 0x0, 10,  5,  7, 0x0),\n    gsSP2Triangles( 0, 14, 13, 0x0,  0, 13, 15, 0x0),\n    gsSP2Triangles(11,  4,  3, 0x0, 11,  3,  2, 0x0),\n    gsSP2Triangles( 2,  3, 14, 0x0,  2, 14,  0, 0x0),\n    gsSP2Triangles( 7,  5,  4, 0x0,  7,  4, 11, 0x0),\n    gsSP2Triangles(15, 13,  6, 0x0, 15,  6, 10, 0x0),\n    gsSPVertex(bobomb_seg8_vertex_08022F30, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x08023378 - 0x08023480\nconst Gfx bobomb_seg8_dl_08023378[] = {\n    gsSPLight(&bobomb_seg8_lights_08022DE8.l, 1),\n    gsSPLight(&bobomb_seg8_lights_08022DE8.a, 2),\n    gsSPVertex(bobomb_seg8_vertex_08022F70, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  6, 13, 14, 0x0),\n    gsSP2Triangles( 6, 14,  3, 0x0,  1, 11,  9, 0x0),\n    gsSP2Triangles( 1,  9,  8, 0x0, 15,  8,  7, 0x0),\n    gsSP2Triangles(12, 11,  1, 0x0, 12,  1,  0, 0x0),\n    gsSP2Triangles(10,  4,  3, 0x0, 10,  3,  7, 0x0),\n    gsSP2Triangles(15, 14, 13, 0x0, 15, 13,  2, 0x0),\n    gsSP2Triangles( 0,  6,  5, 0x0,  0,  5, 12, 0x0),\n    gsSP2Triangles( 2, 13,  6, 0x0,  2,  6,  0, 0x0),\n    gsSP2Triangles(12,  5,  4, 0x0, 12,  4, 10, 0x0),\n    gsSP2Triangles( 7,  3, 14, 0x0,  7, 14, 15, 0x0),\n    gsSPVertex(bobomb_seg8_vertex_08023070, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x08023480 - 0x08023528\nconst Gfx bobomb_seg8_dl_08023480[] = {\n    gsSPLight(&bobomb_seg8_lights_08022E00.l, 1),\n    gsSPLight(&bobomb_seg8_lights_08022E00.a, 2),\n    gsSPVertex(bobomb_seg8_vertex_080230B0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  0,  3, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(bobomb_seg8_vertex_08023190, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 8, 11, 12, 0x0,  8, 12, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/bomb/geo.inc.c",
    "content": "// 0x0D000B78 / 0BBC\nconst GeoLayout bowser_bomb_geo[] = {\n    GEO_CULLING_RADIUS(1000),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 196608),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, bomb_seg6_dl_0605A9C0),\n            GEO_BILLBOARD(),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_ALPHA, bomb_seg6_dl_0605A830),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/bomb/model.inc.c",
    "content": "// Bomb\n\n// 0x06057AA8\nstatic const Lights1 bomb_seg6_lights_06057AA8 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x06057AC0\nALIGNED8 static const Texture bomb_seg6_texture_06057AC0[] = {\n#include \"actors/bomb/bomb_left_side.rgba16.inc.c\"\n};\n\n// 0x06058AC0\nALIGNED8 static const Texture bomb_seg6_texture_06058AC0[] = {\n#include \"actors/bomb/bomb_right_side.rgba16.inc.c\"\n};\n\n// 0x06059AC0\nALIGNED8 static const Texture bomb_seg6_texture_06059AC0[] = {\n#include \"actors/bomb/bomb_spike.rgba16.inc.c\"\n};\n\n// 0x0605A2C0\nstatic const Vtx bomb_seg6_vertex_0605A2C0[] = {\n    {{{     0,    120,      0}, 0, {   992,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -120,   -120,      0}, 0, {     0,   2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -120,      0}, 0, {   992,   2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -120,    120,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0605A300\nstatic const Vtx bomb_seg6_vertex_0605A300[] = {\n    {{{   120,    120,      0}, 0, {   992,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -120,      0}, 0, {     0,   2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   120,   -120,      0}, 0, {   992,   2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    120,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0605A340\nstatic const Vtx bomb_seg6_vertex_0605A340[] = {\n    {{{     0,    -59,      0}, 0, {   502,    -18}, {0xf7, 0x82, 0xf7, 0xff}}},\n    {{{    -9,    -36,      0}, 0, {    14,    976}, {0x8a, 0xd2, 0xfd, 0xff}}},\n    {{{     0,    -36,     -8}, 0, {   938,    980}, {0xfd, 0xd7, 0x89, 0xff}}},\n    {{{     0,     37,     -8}, 0, {    -6,    974}, {0xfd, 0x29, 0x89, 0xff}}},\n    {{{    -9,     37,      0}, 0, {   972,    964}, {0x8a, 0x2e, 0xfd, 0xff}}},\n    {{{     0,     60,      0}, 0, {   434,    -20}, {0xf7, 0x7e, 0xf7, 0xff}}},\n    {{{    10,     37,      0}, 0, {   -14,    962}, {0x74, 0x32, 0xfd, 0xff}}},\n    {{{     0,     37,     -8}, 0, {   960,    962}, {0xfd, 0x29, 0x89, 0xff}}},\n    {{{     0,     60,      0}, 0, {   468,    -16}, {0xf7, 0x7e, 0xf7, 0xff}}},\n    {{{    -9,     37,      0}, 0, {    -8,    974}, {0x8a, 0x2e, 0xfd, 0xff}}},\n    {{{     0,     37,      9}, 0, {   974,    968}, {0xfd, 0x2e, 0x76, 0xff}}},\n    {{{     0,     60,      0}, 0, {   470,     -6}, {0xf7, 0x7e, 0xf7, 0xff}}},\n    {{{     0,     37,      9}, 0, {     4,    974}, {0xfd, 0x2e, 0x76, 0xff}}},\n    {{{    10,     37,      0}, 0, {   960,    986}, {0x74, 0x32, 0xfd, 0xff}}},\n    {{{     0,     60,      0}, 0, {   492,     34}, {0xf7, 0x7e, 0xf7, 0xff}}},\n};\n\n// 0x0605A430\nstatic const Vtx bomb_seg6_vertex_0605A430[] = {\n    {{{     0,     10,     37}, 0, {   -20,    976}, {0xfd, 0x74, 0x32, 0xff}}},\n    {{{    -9,      0,     37}, 0, {   974,    974}, {0x8a, 0xf9, 0x2e, 0xff}}},\n    {{{     0,      0,     60}, 0, {   428,      4}, {0xf8, 0xee, 0x7d, 0xff}}},\n    {{{     0,    -59,      0}, 0, {   494,    -12}, {0xf7, 0x82, 0xf7, 0xff}}},\n    {{{     0,    -36,     -8}, 0, {    -2,    946}, {0xfd, 0xd7, 0x89, 0xff}}},\n    {{{    10,    -36,      0}, 0, {   964,    964}, {0x74, 0xce, 0xfd, 0xff}}},\n    {{{     0,    -59,      0}, 0, {   458,    -18}, {0xf7, 0x82, 0xf7, 0xff}}},\n    {{{     0,    -36,      9}, 0, {    10,    944}, {0xfd, 0xd2, 0x76, 0xff}}},\n    {{{    -9,    -36,      0}, 0, {   916,    956}, {0x8a, 0xd2, 0xfd, 0xff}}},\n    {{{     0,    -59,      0}, 0, {   486,     -6}, {0xf7, 0x82, 0xf7, 0xff}}},\n    {{{    10,    -36,      0}, 0, {    -4,    958}, {0x74, 0xce, 0xfd, 0xff}}},\n    {{{     0,    -36,      9}, 0, {   958,    952}, {0xfd, 0xd2, 0x76, 0xff}}},\n    {{{    10,      0,     37}, 0, {    -8,    978}, {0x74, 0xf9, 0x32, 0xff}}},\n    {{{     0,     10,     37}, 0, {   952,    976}, {0xfd, 0x74, 0x32, 0xff}}},\n    {{{     0,      0,     60}, 0, {   428,    -12}, {0xf8, 0xee, 0x7d, 0xff}}},\n};\n\n// 0x0605A520\nstatic const Vtx bomb_seg6_vertex_0605A520[] = {\n    {{{    37,      0,     -9}, 0, {    10,    960}, {0x2e, 0xf9, 0x8a, 0xff}}},\n    {{{    37,     10,      0}, 0, {   928,    972}, {0x32, 0x74, 0xfd, 0xff}}},\n    {{{    60,      0,      0}, 0, {   494,     -4}, {0x7d, 0xee, 0xf8, 0xff}}},\n    {{{     0,     -8,     37}, 0, {   -10,    976}, {0xfd, 0x89, 0x29, 0xff}}},\n    {{{    10,      0,     37}, 0, {   956,    980}, {0x74, 0xf9, 0x32, 0xff}}},\n    {{{     0,      0,     60}, 0, {   428,    -12}, {0xf8, 0xee, 0x7d, 0xff}}},\n    {{{    -9,      0,     37}, 0, {   -24,    978}, {0x8a, 0xf9, 0x2e, 0xff}}},\n    {{{     0,     -8,     37}, 0, {   974,    976}, {0xfd, 0x89, 0x29, 0xff}}},\n    {{{     0,      0,     60}, 0, {   476,     -6}, {0xf8, 0xee, 0x7d, 0xff}}},\n    {{{    37,     -8,      0}, 0, {   -20,    968}, {0x29, 0x89, 0xfd, 0xff}}},\n    {{{    37,      0,     -9}, 0, {   954,    972}, {0x2e, 0xf9, 0x8a, 0xff}}},\n    {{{    60,      0,      0}, 0, {   402,    -10}, {0x7d, 0xee, 0xf8, 0xff}}},\n    {{{    37,     10,      0}, 0, {    -8,    964}, {0x32, 0x74, 0xfd, 0xff}}},\n    {{{    37,      0,     10}, 0, {   978,    962}, {0x32, 0xf9, 0x74, 0xff}}},\n    {{{    60,      0,      0}, 0, {   462,    -18}, {0x7d, 0xee, 0xf8, 0xff}}},\n};\n\n// 0x0605A610\nstatic const Vtx bomb_seg6_vertex_0605A610[] = {\n    {{{   -59,      0,      0}, 0, {   452,     20}, {0x83, 0xee, 0xf8, 0xff}}},\n    {{{   -36,      0,     -9}, 0, {    -4,    974}, {0xd2, 0xf9, 0x8a, 0xff}}},\n    {{{   -36,     -8,      0}, 0, {   948,    980}, {0xd7, 0x89, 0xfd, 0xff}}},\n    {{{    37,      0,     10}, 0, {   -10,    970}, {0x32, 0xf9, 0x74, 0xff}}},\n    {{{    37,     -8,      0}, 0, {   960,    966}, {0x29, 0x89, 0xfd, 0xff}}},\n    {{{    60,      0,      0}, 0, {   488,     -8}, {0x7d, 0xee, 0xf8, 0xff}}},\n    {{{   -59,      0,      0}, 0, {   370,     10}, {0x83, 0xee, 0xf8, 0xff}}},\n    {{{   -36,      0,     10}, 0, {    -6,    964}, {0xce, 0xf9, 0x74, 0xff}}},\n    {{{   -36,     10,      0}, 0, {   950,    968}, {0xce, 0x74, 0xfd, 0xff}}},\n    {{{   -59,      0,      0}, 0, {   428,     12}, {0x83, 0xee, 0xf8, 0xff}}},\n    {{{   -36,     10,      0}, 0, {     8,    968}, {0xce, 0x74, 0xfd, 0xff}}},\n    {{{   -36,      0,     -9}, 0, {   938,    974}, {0xd2, 0xf9, 0x8a, 0xff}}},\n    {{{   -59,      0,      0}, 0, {   464,    -18}, {0x83, 0xee, 0xf8, 0xff}}},\n    {{{   -36,     -8,      0}, 0, {    -4,    966}, {0xd7, 0x89, 0xfd, 0xff}}},\n    {{{   -36,      0,     10}, 0, {   964,    974}, {0xce, 0xf9, 0x74, 0xff}}},\n};\n\n// 0x0605A700\nstatic const Vtx bomb_seg6_vertex_0605A700[] = {\n    {{{     0,      0,    -59}, 0, {   464,      4}, {0xf8, 0xee, 0x83, 0xff}}},\n    {{{     0,     10,    -36}, 0, {   -14,    968}, {0xfd, 0x74, 0xce, 0xff}}},\n    {{{    10,      0,    -36}, 0, {   942,    976}, {0x74, 0xf9, 0xce, 0xff}}},\n    {{{     0,      0,    -59}, 0, {   480,    -20}, {0xf8, 0xee, 0x83, 0xff}}},\n    {{{    -9,      0,    -36}, 0, {    20,    962}, {0x8a, 0xf9, 0xd2, 0xff}}},\n    {{{     0,     10,    -36}, 0, {   946,    966}, {0xfd, 0x74, 0xce, 0xff}}},\n    {{{     0,      0,    -59}, 0, {   412,      6}, {0xf8, 0xee, 0x83, 0xff}}},\n    {{{    10,      0,    -36}, 0, {   -16,    970}, {0x74, 0xf9, 0xce, 0xff}}},\n    {{{     0,     -8,    -36}, 0, {   968,    968}, {0xfd, 0x89, 0xd7, 0xff}}},\n    {{{     0,      0,    -59}, 0, {   402,      8}, {0xf8, 0xee, 0x83, 0xff}}},\n    {{{     0,     -8,    -36}, 0, {     0,    970}, {0xfd, 0x89, 0xd7, 0xff}}},\n    {{{    -9,      0,    -36}, 0, {   952,    964}, {0x8a, 0xf9, 0xd2, 0xff}}},\n};\n\n// 0x0605A7C0 - 0x0605A7F8\nconst Gfx bomb_seg6_dl_0605A7C0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bomb_seg6_texture_06057AC0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bomb_seg6_vertex_0605A2C0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0605A7F8 - 0x0605A830\nconst Gfx bomb_seg6_dl_0605A7F8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bomb_seg6_texture_06058AC0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bomb_seg6_vertex_0605A300, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0605A830 - 0x0605A8A8\nconst Gfx bomb_seg6_dl_0605A830[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bomb_seg6_dl_0605A7C0),\n    gsSPDisplayList(bomb_seg6_dl_0605A7F8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x0605A8A8 - 0x0605A9C0\nconst Gfx bomb_seg6_dl_0605A8A8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bomb_seg6_texture_06059AC0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bomb_seg6_lights_06057AA8.l, 1),\n    gsSPLight(&bomb_seg6_lights_06057AA8.a, 2),\n    gsSPVertex(bomb_seg6_vertex_0605A340, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bomb_seg6_vertex_0605A430, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bomb_seg6_vertex_0605A520, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bomb_seg6_vertex_0605A610, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bomb_seg6_vertex_0605A700, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0605A9C0 - 0x0605AA20\nconst Gfx bomb_seg6_dl_0605A9C0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bomb_seg6_dl_0605A8A8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/boo/geo.inc.c",
    "content": "// 0x0C000224\nconst GeoLayout boo_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 70),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 26214),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_update_layer_transparency),\n            GEO_SWITCH_CASE(2, geo_switch_anim_state),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, boo_seg5_dl_0500C1B0),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, boo_seg5_dl_0500C1B0),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(), //! more close than open nodes\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/boo/model.inc.c",
    "content": "// Boo\n\n// 0x05009B28\nstatic const Lights1 boo_seg5_lights_05009B28 = gdSPDefLights1(\n    0x97, 0x9a, 0xff,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05009B40\nALIGNED8 static const Texture boo_seg5_texture_05009B40[] = {\n#include \"actors/boo/boo_eyes.rgba16.inc.c\"\n};\n\n// 0x0500AB40\nALIGNED8 static const Texture boo_seg5_texture_0500AB40[] = {\n#include \"actors/boo/boo_mouth.rgba16.inc.c\"\n};\n\n// 0x0500B340\nstatic const Vtx boo_seg5_vertex_0500B340[] = {\n    {{{     0,   -117,    131}, 0, {   458,    990}, {0x00, 0x9d, 0x4e, 0x9e}}},\n    {{{    87,    -78,    123}, 0, {  1096,    684}, {0x53, 0xc9, 0x4e, 0x9e}}},\n    {{{     0,    -47,    171}, 0, {   458,    168}, {0x00, 0xe9, 0x7c, 0x9e}}},\n    {{{     0,   -117,    131}, 0, {   458,    990}, {0x00, 0x9d, 0x4e, 0x9e}}},\n    {{{     0,    -47,    171}, 0, {   458,    168}, {0x00, 0xe9, 0x7c, 0x9e}}},\n    {{{   -86,    -78,    123}, 0, {  -176,    684}, {0xad, 0xc9, 0x4e, 0x9e}}},\n    {{{    87,    -78,    123}, 0, {  1096,    684}, {0x53, 0xc9, 0x4e, 0x9e}}},\n    {{{   108,     20,    118}, 0, {  1248,   -172}, {0x57, 0x14, 0x5a, 0x9e}}},\n    {{{     0,    -47,    171}, 0, {   458,    168}, {0x00, 0xe9, 0x7c, 0x9e}}},\n    {{{   -86,    -78,    123}, 0, {  -176,    684}, {0xad, 0xc9, 0x4e, 0x9e}}},\n    {{{     0,    -47,    171}, 0, {   458,    168}, {0x00, 0xe9, 0x7c, 0x9e}}},\n    {{{  -107,     20,    118}, 0, {  -328,   -172}, {0xa9, 0x14, 0x59, 0x9e}}},\n};\n\n// 0x0500B400\nstatic const Vtx boo_seg5_vertex_0500B400[] = {\n    {{{  -107,     20,    118}, 0, {  -656,    538}, {0xa9, 0x14, 0x59, 0x9e}}},\n    {{{     0,     60,    166}, 0, {   988,    148}, {0x00, 0x26, 0x79, 0x9e}}},\n    {{{   -57,    128,    108}, 0, {    76,   -690}, {0xd3, 0x60, 0x45, 0x9e}}},\n    {{{  -107,     20,    118}, 0, {  -656,    538}, {0xa9, 0x14, 0x59, 0x9e}}},\n    {{{     0,    -47,    171}, 0, {  1024,   1364}, {0x00, 0xe9, 0x7c, 0x9e}}},\n    {{{     0,     60,    166}, 0, {   988,    148}, {0x00, 0x26, 0x79, 0x9e}}},\n    {{{     0,     60,    166}, 0, {   988,    148}, {0x00, 0x26, 0x79, 0x9e}}},\n    {{{     0,    -47,    171}, 0, {  1024,   1364}, {0x00, 0xe9, 0x7c, 0x9e}}},\n    {{{   108,     20,    118}, 0, {  2660,    540}, {0x57, 0x14, 0x5a, 0x9e}}},\n    {{{   108,     20,    118}, 0, {  2660,    540}, {0x57, 0x14, 0x5a, 0x9e}}},\n    {{{    58,    128,    108}, 0, {  1852,   -688}, {0x35, 0x58, 0x49, 0x9e}}},\n    {{{     0,     60,    166}, 0, {   988,    148}, {0x00, 0x26, 0x79, 0x9e}}},\n};\n\n// 0x0500B4C0\nstatic const Vtx boo_seg5_vertex_0500B4C0[] = {\n    {{{  -135,    -70,     23}, 0, {     0,      0}, {0xb2, 0xaa, 0x33, 0x9e}}},\n    {{{  -127,    -69,    -89}, 0, {     0,      0}, {0x9c, 0xc6, 0xce, 0x9e}}},\n    {{{   -72,   -138,     30}, 0, {     0,      0}, {0xcf, 0x8c, 0x0a, 0x9e}}},\n    {{{    73,   -138,     30}, 0, {     0,      0}, {0x39, 0x90, 0x0e, 0x9e}}},\n    {{{     0,   -117,    131}, 0, {     0,      0}, {0x00, 0x9d, 0x4e, 0x9e}}},\n    {{{   -72,   -138,     30}, 0, {     0,      0}, {0xcf, 0x8c, 0x0a, 0x9e}}},\n    {{{   -86,    -78,    123}, 0, {     0,      0}, {0xad, 0xc9, 0x4e, 0x9e}}},\n    {{{  -135,    -70,     23}, 0, {     0,      0}, {0xb2, 0xaa, 0x33, 0x9e}}},\n    {{{   -72,   -138,     30}, 0, {     0,      0}, {0xcf, 0x8c, 0x0a, 0x9e}}},\n    {{{   -59,   -126,    -86}, 0, {     0,      0}, {0xe1, 0x90, 0xd0, 0x9e}}},\n    {{{    60,   -126,    -86}, 0, {     0,      0}, {0x20, 0x8b, 0xdb, 0x9e}}},\n    {{{   -72,   -138,     30}, 0, {     0,      0}, {0xcf, 0x8c, 0x0a, 0x9e}}},\n    {{{   -72,   -138,     30}, 0, {     0,      0}, {0xcf, 0x8c, 0x0a, 0x9e}}},\n    {{{    60,   -126,    -86}, 0, {     0,      0}, {0x20, 0x8b, 0xdb, 0x9e}}},\n    {{{    73,   -138,     30}, 0, {     0,      0}, {0x39, 0x90, 0x0e, 0x9e}}},\n};\n\n// 0x0500B5B0\nstatic const Vtx boo_seg5_vertex_0500B5B0[] = {\n    {{{   -86,    -78,    123}, 0, {     0,      0}, {0xad, 0xc9, 0x4e, 0x9e}}},\n    {{{   -72,   -138,     30}, 0, {     0,      0}, {0xcf, 0x8c, 0x0a, 0x9e}}},\n    {{{     0,   -117,    131}, 0, {     0,      0}, {0x00, 0x9d, 0x4e, 0x9e}}},\n    {{{   -59,   -126,    -86}, 0, {     0,      0}, {0xe1, 0x90, 0xd0, 0x9e}}},\n    {{{   -72,   -138,     30}, 0, {     0,      0}, {0xcf, 0x8c, 0x0a, 0x9e}}},\n    {{{  -127,    -69,    -89}, 0, {     0,      0}, {0x9c, 0xc6, 0xce, 0x9e}}},\n    {{{    60,   -126,    -86}, 0, {     0,      0}, {0x20, 0x8b, 0xdb, 0x9e}}},\n    {{{   -59,   -126,    -86}, 0, {     0,      0}, {0xe1, 0x90, 0xd0, 0x9e}}},\n    {{{    46,    -82,   -160}, 0, {     0,      0}, {0x2e, 0xba, 0xa2, 0x9e}}},\n    {{{    46,    -82,   -160}, 0, {     0,      0}, {0x2e, 0xba, 0xa2, 0x9e}}},\n    {{{   128,    -69,    -89}, 0, {     0,      0}, {0x64, 0xc6, 0xce, 0x9e}}},\n    {{{    60,   -126,    -86}, 0, {     0,      0}, {0x20, 0x8b, 0xdb, 0x9e}}},\n    {{{    60,   -126,    -86}, 0, {     0,      0}, {0x20, 0x8b, 0xdb, 0x9e}}},\n    {{{   128,    -69,    -89}, 0, {     0,      0}, {0x64, 0xc6, 0xce, 0x9e}}},\n    {{{    73,   -138,     30}, 0, {     0,      0}, {0x39, 0x90, 0x0e, 0x9e}}},\n};\n\n// 0x0500B6A0\nstatic const Vtx boo_seg5_vertex_0500B6A0[] = {\n    {{{   136,    -70,     23}, 0, {     0,      0}, {0x4e, 0xaa, 0x33, 0x9e}}},\n    {{{    73,   -138,     30}, 0, {     0,      0}, {0x39, 0x90, 0x0e, 0x9e}}},\n    {{{   128,    -69,    -89}, 0, {     0,      0}, {0x64, 0xc6, 0xce, 0x9e}}},\n    {{{    87,    -78,    123}, 0, {     0,      0}, {0x53, 0xc9, 0x4e, 0x9e}}},\n    {{{    73,   -138,     30}, 0, {     0,      0}, {0x39, 0x90, 0x0e, 0x9e}}},\n    {{{   136,    -70,     23}, 0, {     0,      0}, {0x4e, 0xaa, 0x33, 0x9e}}},\n    {{{    87,    -78,    123}, 0, {     0,      0}, {0x53, 0xc9, 0x4e, 0x9e}}},\n    {{{     0,   -117,    131}, 0, {     0,      0}, {0x00, 0x9d, 0x4e, 0x9e}}},\n    {{{    73,   -138,     30}, 0, {     0,      0}, {0x39, 0x90, 0x0e, 0x9e}}},\n    {{{   -43,    162,     15}, 0, {     0,      0}, {0xdf, 0x7a, 0xf8, 0x9e}}},\n    {{{   -57,    128,    108}, 0, {     0,      0}, {0xd3, 0x60, 0x45, 0x9e}}},\n    {{{    44,    162,     15}, 0, {     0,      0}, {0x21, 0x7a, 0x09, 0x9e}}},\n    {{{   -43,    162,     15}, 0, {     0,      0}, {0xdf, 0x7a, 0xf8, 0x9e}}},\n    {{{    44,    162,     15}, 0, {     0,      0}, {0x21, 0x7a, 0x09, 0x9e}}},\n    {{{    42,    130,    -88}, 0, {     0,      0}, {0x25, 0x6a, 0xc7, 0x9e}}},\n};\n\n// 0x0500B790\nstatic const Vtx boo_seg5_vertex_0500B790[] = {\n    {{{   125,     99,     15}, 0, {     0,      0}, {0x65, 0x4c, 0x08, 0x9e}}},\n    {{{    44,    162,     15}, 0, {     0,      0}, {0x21, 0x7a, 0x09, 0x9e}}},\n    {{{    58,    128,    108}, 0, {     0,      0}, {0x35, 0x58, 0x49, 0x9e}}},\n    {{{    58,    128,    108}, 0, {     0,      0}, {0x35, 0x58, 0x49, 0x9e}}},\n    {{{    44,    162,     15}, 0, {     0,      0}, {0x21, 0x7a, 0x09, 0x9e}}},\n    {{{   -57,    128,    108}, 0, {     0,      0}, {0xd3, 0x60, 0x45, 0x9e}}},\n    {{{    44,    162,     15}, 0, {     0,      0}, {0x21, 0x7a, 0x09, 0x9e}}},\n    {{{   125,     99,     15}, 0, {     0,      0}, {0x65, 0x4c, 0x08, 0x9e}}},\n    {{{    42,    130,    -88}, 0, {     0,      0}, {0x25, 0x6a, 0xc7, 0x9e}}},\n    {{{   122,     59,    -94}, 0, {     0,      0}, {0x5f, 0x2e, 0xbb, 0x9e}}},\n    {{{    42,    130,    -88}, 0, {     0,      0}, {0x25, 0x6a, 0xc7, 0x9e}}},\n    {{{   125,     99,     15}, 0, {     0,      0}, {0x65, 0x4c, 0x08, 0x9e}}},\n    {{{     0,     62,   -162}, 0, {     0,      0}, {0x00, 0x5a, 0xa8, 0x9e}}},\n    {{{    42,    130,    -88}, 0, {     0,      0}, {0x25, 0x6a, 0xc7, 0x9e}}},\n    {{{   122,     59,    -94}, 0, {     0,      0}, {0x5f, 0x2e, 0xbb, 0x9e}}},\n};\n\n// 0x0500B880\nstatic const Vtx boo_seg5_vertex_0500B880[] = {\n    {{{   -41,    130,    -88}, 0, {     0,      0}, {0xd4, 0x65, 0xc3, 0x9e}}},\n    {{{   -43,    162,     15}, 0, {     0,      0}, {0xdf, 0x7a, 0xf8, 0x9e}}},\n    {{{    42,    130,    -88}, 0, {     0,      0}, {0x25, 0x6a, 0xc7, 0x9e}}},\n    {{{     0,     62,   -162}, 0, {     0,      0}, {0x00, 0x5a, 0xa8, 0x9e}}},\n    {{{   -41,    130,    -88}, 0, {     0,      0}, {0xd4, 0x65, 0xc3, 0x9e}}},\n    {{{    42,    130,    -88}, 0, {     0,      0}, {0x25, 0x6a, 0xc7, 0x9e}}},\n    {{{  -135,    -70,     23}, 0, {     0,      0}, {0xb2, 0xaa, 0x33, 0x9e}}},\n    {{{   -86,    -78,    123}, 0, {     0,      0}, {0xad, 0xc9, 0x4e, 0x9e}}},\n    {{{  -155,      6,     33}, 0, {     0,      0}, {0x87, 0x0f, 0x22, 0x9e}}},\n    {{{   -86,    -78,    123}, 0, {     0,      0}, {0xad, 0xc9, 0x4e, 0x9e}}},\n    {{{  -107,     20,    118}, 0, {     0,      0}, {0xa9, 0x14, 0x59, 0x9e}}},\n    {{{  -155,      6,     33}, 0, {     0,      0}, {0x87, 0x0f, 0x22, 0x9e}}},\n    {{{  -199,    -60,     25}, 0, {     0,      0}, {0xa2, 0xbf, 0x36, 0x9e}}},\n    {{{  -127,    -69,    -89}, 0, {     0,      0}, {0x9c, 0xc6, 0xce, 0x9e}}},\n    {{{  -135,    -70,     23}, 0, {     0,      0}, {0xb2, 0xaa, 0x33, 0x9e}}},\n};\n\n// 0x0500B970\nstatic const Vtx boo_seg5_vertex_0500B970[] = {\n    {{{  -107,     20,    118}, 0, {     0,      0}, {0xa9, 0x14, 0x59, 0x9e}}},\n    {{{   -57,    128,    108}, 0, {     0,      0}, {0xd3, 0x60, 0x45, 0x9e}}},\n    {{{  -124,     99,     15}, 0, {     0,      0}, {0x9b, 0x4c, 0x08, 0x9e}}},\n    {{{  -124,     99,     15}, 0, {     0,      0}, {0x9b, 0x4c, 0x08, 0x9e}}},\n    {{{  -155,      6,     33}, 0, {     0,      0}, {0x87, 0x0f, 0x22, 0x9e}}},\n    {{{  -107,     20,    118}, 0, {     0,      0}, {0xa9, 0x14, 0x59, 0x9e}}},\n    {{{  -121,     59,    -94}, 0, {     0,      0}, {0xa1, 0x2e, 0xbb, 0x9e}}},\n    {{{  -127,    -69,    -89}, 0, {     0,      0}, {0x9c, 0xc6, 0xce, 0x9e}}},\n    {{{  -155,      6,     33}, 0, {     0,      0}, {0x87, 0x0f, 0x22, 0x9e}}},\n    {{{  -121,     59,    -94}, 0, {     0,      0}, {0xa1, 0x2e, 0xbb, 0x9e}}},\n    {{{  -155,      6,     33}, 0, {     0,      0}, {0x87, 0x0f, 0x22, 0x9e}}},\n    {{{  -124,     99,     15}, 0, {     0,      0}, {0x9b, 0x4c, 0x08, 0x9e}}},\n    {{{  -199,    -60,     25}, 0, {     0,      0}, {0xa2, 0xbf, 0x36, 0x9e}}},\n    {{{  -155,      6,     33}, 0, {     0,      0}, {0x87, 0x0f, 0x22, 0x9e}}},\n    {{{  -127,    -69,    -89}, 0, {     0,      0}, {0x9c, 0xc6, 0xce, 0x9e}}},\n};\n\n// 0x0500BA60\nstatic const Vtx boo_seg5_vertex_0500BA60[] = {\n    {{{  -199,    -60,     25}, 0, {     0,      0}, {0xa2, 0xbf, 0x36, 0x9e}}},\n    {{{  -135,    -70,     23}, 0, {     0,      0}, {0xb2, 0xaa, 0x33, 0x9e}}},\n    {{{  -155,      6,     33}, 0, {     0,      0}, {0x87, 0x0f, 0x22, 0x9e}}},\n    {{{   200,    -60,     25}, 0, {     0,      0}, {0x5e, 0xbf, 0x36, 0x9e}}},\n    {{{   128,    -69,    -89}, 0, {     0,      0}, {0x64, 0xc6, 0xce, 0x9e}}},\n    {{{   156,      6,     33}, 0, {     0,      0}, {0x79, 0x0f, 0x22, 0x9e}}},\n    {{{   108,     20,    118}, 0, {     0,      0}, {0x57, 0x14, 0x5a, 0x9e}}},\n    {{{   156,      6,     33}, 0, {     0,      0}, {0x79, 0x0f, 0x22, 0x9e}}},\n    {{{   125,     99,     15}, 0, {     0,      0}, {0x65, 0x4c, 0x08, 0x9e}}},\n    {{{   125,     99,     15}, 0, {     0,      0}, {0x65, 0x4c, 0x08, 0x9e}}},\n    {{{   156,      6,     33}, 0, {     0,      0}, {0x79, 0x0f, 0x22, 0x9e}}},\n    {{{   122,     59,    -94}, 0, {     0,      0}, {0x5f, 0x2e, 0xbb, 0x9e}}},\n    {{{   200,    -60,     25}, 0, {     0,      0}, {0x5e, 0xbf, 0x36, 0x9e}}},\n    {{{   156,      6,     33}, 0, {     0,      0}, {0x79, 0x0f, 0x22, 0x9e}}},\n    {{{   136,    -70,     23}, 0, {     0,      0}, {0x4e, 0xaa, 0x33, 0x9e}}},\n};\n\n// 0x0500BB50\nstatic const Vtx boo_seg5_vertex_0500BB50[] = {\n    {{{   156,      6,     33}, 0, {     0,      0}, {0x79, 0x0f, 0x22, 0x9e}}},\n    {{{   128,    -69,    -89}, 0, {     0,      0}, {0x64, 0xc6, 0xce, 0x9e}}},\n    {{{   122,     59,    -94}, 0, {     0,      0}, {0x5f, 0x2e, 0xbb, 0x9e}}},\n    {{{   200,    -60,     25}, 0, {     0,      0}, {0x5e, 0xbf, 0x36, 0x9e}}},\n    {{{   136,    -70,     23}, 0, {     0,      0}, {0x4e, 0xaa, 0x33, 0x9e}}},\n    {{{   128,    -69,    -89}, 0, {     0,      0}, {0x64, 0xc6, 0xce, 0x9e}}},\n    {{{   -43,    162,     15}, 0, {     0,      0}, {0xdf, 0x7a, 0xf8, 0x9e}}},\n    {{{   -41,    130,    -88}, 0, {     0,      0}, {0xd4, 0x65, 0xc3, 0x9e}}},\n    {{{  -124,     99,     15}, 0, {     0,      0}, {0x9b, 0x4c, 0x08, 0x9e}}},\n    {{{   -57,    128,    108}, 0, {     0,      0}, {0xd3, 0x60, 0x45, 0x9e}}},\n    {{{   -43,    162,     15}, 0, {     0,      0}, {0xdf, 0x7a, 0xf8, 0x9e}}},\n    {{{  -124,     99,     15}, 0, {     0,      0}, {0x9b, 0x4c, 0x08, 0x9e}}},\n    {{{   128,    -69,    -89}, 0, {     0,      0}, {0x64, 0xc6, 0xce, 0x9e}}},\n    {{{    46,    -82,   -160}, 0, {     0,      0}, {0x2e, 0xba, 0xa2, 0x9e}}},\n    {{{   122,     59,    -94}, 0, {     0,      0}, {0x5f, 0x2e, 0xbb, 0x9e}}},\n};\n\n// 0x0500BC40\nstatic const Vtx boo_seg5_vertex_0500BC40[] = {\n    {{{     0,     62,   -162}, 0, {     0,      0}, {0x00, 0x5a, 0xa8, 0x9e}}},\n    {{{   122,     59,    -94}, 0, {     0,      0}, {0x5f, 0x2e, 0xbb, 0x9e}}},\n    {{{     0,     24,   -213}, 0, {     0,      0}, {0x00, 0x22, 0x86, 0x9e}}},\n    {{{     0,     24,   -213}, 0, {     0,      0}, {0x00, 0x22, 0x86, 0x9e}}},\n    {{{   122,     59,    -94}, 0, {     0,      0}, {0x5f, 0x2e, 0xbb, 0x9e}}},\n    {{{    46,    -82,   -160}, 0, {     0,      0}, {0x2e, 0xba, 0xa2, 0x9e}}},\n    {{{     0,     62,   -162}, 0, {     0,      0}, {0x00, 0x5a, 0xa8, 0x9e}}},\n    {{{     0,     24,   -213}, 0, {     0,      0}, {0x00, 0x22, 0x86, 0x9e}}},\n    {{{  -121,     59,    -94}, 0, {     0,      0}, {0xa1, 0x2e, 0xbb, 0x9e}}},\n    {{{  -121,     59,    -94}, 0, {     0,      0}, {0xa1, 0x2e, 0xbb, 0x9e}}},\n    {{{   -41,    130,    -88}, 0, {     0,      0}, {0xd4, 0x65, 0xc3, 0x9e}}},\n    {{{     0,     62,   -162}, 0, {     0,      0}, {0x00, 0x5a, 0xa8, 0x9e}}},\n    {{{     0,     24,   -213}, 0, {     0,      0}, {0x00, 0x22, 0x86, 0x9e}}},\n    {{{    46,    -82,   -160}, 0, {     0,      0}, {0x2e, 0xba, 0xa2, 0x9e}}},\n    {{{   -45,    -82,   -160}, 0, {     0,      0}, {0xc9, 0xc5, 0x9f, 0x9e}}},\n};\n\n// 0x0500BD30\nstatic const Vtx boo_seg5_vertex_0500BD30[] = {\n    {{{   -45,    -82,   -160}, 0, {     0,      0}, {0xc9, 0xc5, 0x9f, 0x9e}}},\n    {{{    46,    -82,   -160}, 0, {     0,      0}, {0x2e, 0xba, 0xa2, 0x9e}}},\n    {{{   -59,   -126,    -86}, 0, {     0,      0}, {0xe1, 0x90, 0xd0, 0x9e}}},\n    {{{  -127,    -69,    -89}, 0, {     0,      0}, {0x9c, 0xc6, 0xce, 0x9e}}},\n    {{{  -121,     59,    -94}, 0, {     0,      0}, {0xa1, 0x2e, 0xbb, 0x9e}}},\n    {{{   -45,    -82,   -160}, 0, {     0,      0}, {0xc9, 0xc5, 0x9f, 0x9e}}},\n    {{{   -45,    -82,   -160}, 0, {     0,      0}, {0xc9, 0xc5, 0x9f, 0x9e}}},\n    {{{   -59,   -126,    -86}, 0, {     0,      0}, {0xe1, 0x90, 0xd0, 0x9e}}},\n    {{{  -127,    -69,    -89}, 0, {     0,      0}, {0x9c, 0xc6, 0xce, 0x9e}}},\n    {{{     0,     24,   -213}, 0, {     0,      0}, {0x00, 0x22, 0x86, 0x9e}}},\n    {{{   -45,    -82,   -160}, 0, {     0,      0}, {0xc9, 0xc5, 0x9f, 0x9e}}},\n    {{{  -121,     59,    -94}, 0, {     0,      0}, {0xa1, 0x2e, 0xbb, 0x9e}}},\n    {{{   -41,    130,    -88}, 0, {     0,      0}, {0xd4, 0x65, 0xc3, 0x9e}}},\n    {{{  -121,     59,    -94}, 0, {     0,      0}, {0xa1, 0x2e, 0xbb, 0x9e}}},\n    {{{  -124,     99,     15}, 0, {     0,      0}, {0x9b, 0x4c, 0x08, 0x9e}}},\n};\n\n// 0x0500BE20\nstatic const Vtx boo_seg5_vertex_0500BE20[] = {\n    {{{   -57,    128,    108}, 0, {     0,      0}, {0xd3, 0x60, 0x45, 0x9e}}},\n    {{{     0,     60,    166}, 0, {     0,      0}, {0x00, 0x26, 0x79, 0x9e}}},\n    {{{    58,    128,    108}, 0, {     0,      0}, {0x35, 0x58, 0x49, 0x9e}}},\n    {{{   108,     20,    118}, 0, {     0,      0}, {0x57, 0x14, 0x5a, 0x9e}}},\n    {{{   125,     99,     15}, 0, {     0,      0}, {0x65, 0x4c, 0x08, 0x9e}}},\n    {{{    58,    128,    108}, 0, {     0,      0}, {0x35, 0x58, 0x49, 0x9e}}},\n    {{{   136,    -70,     23}, 0, {     0,      0}, {0x4e, 0xaa, 0x33, 0x9e}}},\n    {{{   156,      6,     33}, 0, {     0,      0}, {0x79, 0x0f, 0x22, 0x9e}}},\n    {{{    87,    -78,    123}, 0, {     0,      0}, {0x53, 0xc9, 0x4e, 0x9e}}},\n    {{{   108,     20,    118}, 0, {     0,      0}, {0x57, 0x14, 0x5a, 0x9e}}},\n    {{{    87,    -78,    123}, 0, {     0,      0}, {0x53, 0xc9, 0x4e, 0x9e}}},\n    {{{   156,      6,     33}, 0, {     0,      0}, {0x79, 0x0f, 0x22, 0x9e}}},\n};\n\n// 0x0500BEE0 - 0x0500BF48\nconst Gfx boo_seg5_dl_0500BEE0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, boo_seg5_texture_0500AB40),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&boo_seg5_lights_05009B28.l, 1),\n    gsSPLight(&boo_seg5_lights_05009B28.a, 2),\n    gsSPVertex(boo_seg5_vertex_0500B340, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500BF48 - 0x0500BFA0\nconst Gfx boo_seg5_dl_0500BF48[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, boo_seg5_texture_05009B40),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(boo_seg5_vertex_0500B400, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500BFA0 - 0x0500C1B0\nconst Gfx boo_seg5_dl_0500BFA0[] = {\n    gsSPVertex(boo_seg5_vertex_0500B4C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(boo_seg5_vertex_0500B5B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(boo_seg5_vertex_0500B6A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(boo_seg5_vertex_0500B790, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(boo_seg5_vertex_0500B880, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(boo_seg5_vertex_0500B970, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(boo_seg5_vertex_0500BA60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(boo_seg5_vertex_0500BB50, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(boo_seg5_vertex_0500BC40, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(boo_seg5_vertex_0500BD30, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(boo_seg5_vertex_0500BE20, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500C1B0 - 0x0500C250\nconst Gfx boo_seg5_dl_0500C1B0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsSPNumLights(NUMLIGHTS_1),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(boo_seg5_dl_0500BEE0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(boo_seg5_dl_0500BF48),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(boo_seg5_dl_0500BFA0),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/boo_castle/geo.inc.c",
    "content": "// 0x0D0005B0\nconst GeoLayout boo_castle_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 70),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 26214),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_update_layer_transparency),\n            GEO_SWITCH_CASE(2, geo_switch_anim_state),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, boo_castle_seg6_dl_06017CE0),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, boo_castle_seg6_dl_06017CE0),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(), //! more close than open nodes\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/boo_castle/model.inc.c",
    "content": "// Boo (Castle)\n\n// 0x06015658\nstatic const Lights1 boo_castle_seg6_lights_06015658 = gdSPDefLights1(\n    0x97, 0x9a, 0xff,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x06015670\nALIGNED8 static const Texture boo_castle_seg6_texture_06015670[] = {\n#include \"actors/boo_castle/bbh_boo_eyes.rgba16.inc.c\"\n};\n\n// 0x06016670\nALIGNED8 static const Texture boo_castle_seg6_texture_06016670[] = {\n#include \"actors/boo_castle/bbh_boo_mouth.rgba16.inc.c\"\n};\n\n// 0x06016E70\nstatic const Vtx boo_castle_seg6_vertex_06016E70[] = {\n    {{{     0,   -117,    131}, 0, {   458,    990}, {0x00, 0x9d, 0x4e, 0x9e}}},\n    {{{    87,    -78,    123}, 0, {  1096,    684}, {0x53, 0xc9, 0x4e, 0x9e}}},\n    {{{     0,    -47,    171}, 0, {   458,    168}, {0x00, 0xe9, 0x7c, 0x9e}}},\n    {{{     0,   -117,    131}, 0, {   458,    990}, {0x00, 0x9d, 0x4e, 0x9e}}},\n    {{{     0,    -47,    171}, 0, {   458,    168}, {0x00, 0xe9, 0x7c, 0x9e}}},\n    {{{   -86,    -78,    123}, 0, {  -176,    684}, {0xad, 0xc9, 0x4e, 0x9e}}},\n    {{{    87,    -78,    123}, 0, {  1096,    684}, {0x53, 0xc9, 0x4e, 0x9e}}},\n    {{{   108,     20,    118}, 0, {  1248,   -172}, {0x57, 0x14, 0x5a, 0x9e}}},\n    {{{     0,    -47,    171}, 0, {   458,    168}, {0x00, 0xe9, 0x7c, 0x9e}}},\n    {{{   -86,    -78,    123}, 0, {  -176,    684}, {0xad, 0xc9, 0x4e, 0x9e}}},\n    {{{     0,    -47,    171}, 0, {   458,    168}, {0x00, 0xe9, 0x7c, 0x9e}}},\n    {{{  -107,     20,    118}, 0, {  -328,   -172}, {0xa9, 0x14, 0x59, 0x9e}}},\n};\n\n// 0x06016F30\nstatic const Vtx boo_castle_seg6_vertex_06016F30[] = {\n    {{{  -107,     20,    118}, 0, {  -656,    538}, {0xa9, 0x14, 0x59, 0x9e}}},\n    {{{     0,     60,    166}, 0, {   988,    148}, {0x00, 0x26, 0x79, 0x9e}}},\n    {{{   -57,    128,    108}, 0, {    76,   -690}, {0xd3, 0x60, 0x45, 0x9e}}},\n    {{{  -107,     20,    118}, 0, {  -656,    538}, {0xa9, 0x14, 0x59, 0x9e}}},\n    {{{     0,    -47,    171}, 0, {  1024,   1364}, {0x00, 0xe9, 0x7c, 0x9e}}},\n    {{{     0,     60,    166}, 0, {   988,    148}, {0x00, 0x26, 0x79, 0x9e}}},\n    {{{     0,     60,    166}, 0, {   988,    148}, {0x00, 0x26, 0x79, 0x9e}}},\n    {{{     0,    -47,    171}, 0, {  1024,   1364}, {0x00, 0xe9, 0x7c, 0x9e}}},\n    {{{   108,     20,    118}, 0, {  2660,    540}, {0x57, 0x14, 0x5a, 0x9e}}},\n    {{{   108,     20,    118}, 0, {  2660,    540}, {0x57, 0x14, 0x5a, 0x9e}}},\n    {{{    58,    128,    108}, 0, {  1852,   -688}, {0x35, 0x58, 0x49, 0x9e}}},\n    {{{     0,     60,    166}, 0, {   988,    148}, {0x00, 0x26, 0x79, 0x9e}}},\n};\n\n// 0x06016FF0\nstatic const Vtx boo_castle_seg6_vertex_06016FF0[] = {\n    {{{  -135,    -70,     23}, 0, {     0,      0}, {0xb2, 0xaa, 0x33, 0x9e}}},\n    {{{  -127,    -69,    -89}, 0, {     0,      0}, {0x9c, 0xc6, 0xce, 0x9e}}},\n    {{{   -72,   -138,     30}, 0, {     0,      0}, {0xcf, 0x8c, 0x0a, 0x9e}}},\n    {{{    73,   -138,     30}, 0, {     0,      0}, {0x39, 0x90, 0x0e, 0x9e}}},\n    {{{     0,   -117,    131}, 0, {     0,      0}, {0x00, 0x9d, 0x4e, 0x9e}}},\n    {{{   -72,   -138,     30}, 0, {     0,      0}, {0xcf, 0x8c, 0x0a, 0x9e}}},\n    {{{   -86,    -78,    123}, 0, {     0,      0}, {0xad, 0xc9, 0x4e, 0x9e}}},\n    {{{  -135,    -70,     23}, 0, {     0,      0}, {0xb2, 0xaa, 0x33, 0x9e}}},\n    {{{   -72,   -138,     30}, 0, {     0,      0}, {0xcf, 0x8c, 0x0a, 0x9e}}},\n    {{{   -59,   -126,    -86}, 0, {     0,      0}, {0xe1, 0x90, 0xd0, 0x9e}}},\n    {{{    60,   -126,    -86}, 0, {     0,      0}, {0x20, 0x8b, 0xdb, 0x9e}}},\n    {{{   -72,   -138,     30}, 0, {     0,      0}, {0xcf, 0x8c, 0x0a, 0x9e}}},\n    {{{   -72,   -138,     30}, 0, {     0,      0}, {0xcf, 0x8c, 0x0a, 0x9e}}},\n    {{{    60,   -126,    -86}, 0, {     0,      0}, {0x20, 0x8b, 0xdb, 0x9e}}},\n    {{{    73,   -138,     30}, 0, {     0,      0}, {0x39, 0x90, 0x0e, 0x9e}}},\n};\n\n// 0x060170E0\nstatic const Vtx boo_castle_seg6_vertex_060170E0[] = {\n    {{{   -86,    -78,    123}, 0, {     0,      0}, {0xad, 0xc9, 0x4e, 0x9e}}},\n    {{{   -72,   -138,     30}, 0, {     0,      0}, {0xcf, 0x8c, 0x0a, 0x9e}}},\n    {{{     0,   -117,    131}, 0, {     0,      0}, {0x00, 0x9d, 0x4e, 0x9e}}},\n    {{{   -59,   -126,    -86}, 0, {     0,      0}, {0xe1, 0x90, 0xd0, 0x9e}}},\n    {{{   -72,   -138,     30}, 0, {     0,      0}, {0xcf, 0x8c, 0x0a, 0x9e}}},\n    {{{  -127,    -69,    -89}, 0, {     0,      0}, {0x9c, 0xc6, 0xce, 0x9e}}},\n    {{{    60,   -126,    -86}, 0, {     0,      0}, {0x20, 0x8b, 0xdb, 0x9e}}},\n    {{{   -59,   -126,    -86}, 0, {     0,      0}, {0xe1, 0x90, 0xd0, 0x9e}}},\n    {{{    46,    -82,   -160}, 0, {     0,      0}, {0x2e, 0xba, 0xa2, 0x9e}}},\n    {{{    46,    -82,   -160}, 0, {     0,      0}, {0x2e, 0xba, 0xa2, 0x9e}}},\n    {{{   128,    -69,    -89}, 0, {     0,      0}, {0x64, 0xc6, 0xce, 0x9e}}},\n    {{{    60,   -126,    -86}, 0, {     0,      0}, {0x20, 0x8b, 0xdb, 0x9e}}},\n    {{{    60,   -126,    -86}, 0, {     0,      0}, {0x20, 0x8b, 0xdb, 0x9e}}},\n    {{{   128,    -69,    -89}, 0, {     0,      0}, {0x64, 0xc6, 0xce, 0x9e}}},\n    {{{    73,   -138,     30}, 0, {     0,      0}, {0x39, 0x90, 0x0e, 0x9e}}},\n};\n\n// 0x060171D0\nstatic const Vtx boo_castle_seg6_vertex_060171D0[] = {\n    {{{   136,    -70,     23}, 0, {     0,      0}, {0x4e, 0xaa, 0x33, 0x9e}}},\n    {{{    73,   -138,     30}, 0, {     0,      0}, {0x39, 0x90, 0x0e, 0x9e}}},\n    {{{   128,    -69,    -89}, 0, {     0,      0}, {0x64, 0xc6, 0xce, 0x9e}}},\n    {{{    87,    -78,    123}, 0, {     0,      0}, {0x53, 0xc9, 0x4e, 0x9e}}},\n    {{{    73,   -138,     30}, 0, {     0,      0}, {0x39, 0x90, 0x0e, 0x9e}}},\n    {{{   136,    -70,     23}, 0, {     0,      0}, {0x4e, 0xaa, 0x33, 0x9e}}},\n    {{{    87,    -78,    123}, 0, {     0,      0}, {0x53, 0xc9, 0x4e, 0x9e}}},\n    {{{     0,   -117,    131}, 0, {     0,      0}, {0x00, 0x9d, 0x4e, 0x9e}}},\n    {{{    73,   -138,     30}, 0, {     0,      0}, {0x39, 0x90, 0x0e, 0x9e}}},\n    {{{   -43,    162,     15}, 0, {     0,      0}, {0xdf, 0x7a, 0xf8, 0x9e}}},\n    {{{   -57,    128,    108}, 0, {     0,      0}, {0xd3, 0x60, 0x45, 0x9e}}},\n    {{{    44,    162,     15}, 0, {     0,      0}, {0x21, 0x7a, 0x09, 0x9e}}},\n    {{{   -43,    162,     15}, 0, {     0,      0}, {0xdf, 0x7a, 0xf8, 0x9e}}},\n    {{{    44,    162,     15}, 0, {     0,      0}, {0x21, 0x7a, 0x09, 0x9e}}},\n    {{{    42,    130,    -88}, 0, {     0,      0}, {0x25, 0x6a, 0xc7, 0x9e}}},\n};\n\n// 0x060172C0\nstatic const Vtx boo_castle_seg6_vertex_060172C0[] = {\n    {{{   125,     99,     15}, 0, {     0,      0}, {0x65, 0x4c, 0x08, 0x9e}}},\n    {{{    44,    162,     15}, 0, {     0,      0}, {0x21, 0x7a, 0x09, 0x9e}}},\n    {{{    58,    128,    108}, 0, {     0,      0}, {0x35, 0x58, 0x49, 0x9e}}},\n    {{{    58,    128,    108}, 0, {     0,      0}, {0x35, 0x58, 0x49, 0x9e}}},\n    {{{    44,    162,     15}, 0, {     0,      0}, {0x21, 0x7a, 0x09, 0x9e}}},\n    {{{   -57,    128,    108}, 0, {     0,      0}, {0xd3, 0x60, 0x45, 0x9e}}},\n    {{{    44,    162,     15}, 0, {     0,      0}, {0x21, 0x7a, 0x09, 0x9e}}},\n    {{{   125,     99,     15}, 0, {     0,      0}, {0x65, 0x4c, 0x08, 0x9e}}},\n    {{{    42,    130,    -88}, 0, {     0,      0}, {0x25, 0x6a, 0xc7, 0x9e}}},\n    {{{   122,     59,    -94}, 0, {     0,      0}, {0x5f, 0x2e, 0xbb, 0x9e}}},\n    {{{    42,    130,    -88}, 0, {     0,      0}, {0x25, 0x6a, 0xc7, 0x9e}}},\n    {{{   125,     99,     15}, 0, {     0,      0}, {0x65, 0x4c, 0x08, 0x9e}}},\n    {{{     0,     62,   -162}, 0, {     0,      0}, {0x00, 0x5a, 0xa8, 0x9e}}},\n    {{{    42,    130,    -88}, 0, {     0,      0}, {0x25, 0x6a, 0xc7, 0x9e}}},\n    {{{   122,     59,    -94}, 0, {     0,      0}, {0x5f, 0x2e, 0xbb, 0x9e}}},\n};\n\n// 0x060173B0\nstatic const Vtx boo_castle_seg6_vertex_060173B0[] = {\n    {{{   -41,    130,    -88}, 0, {     0,      0}, {0xd4, 0x65, 0xc3, 0x9e}}},\n    {{{   -43,    162,     15}, 0, {     0,      0}, {0xdf, 0x7a, 0xf8, 0x9e}}},\n    {{{    42,    130,    -88}, 0, {     0,      0}, {0x25, 0x6a, 0xc7, 0x9e}}},\n    {{{     0,     62,   -162}, 0, {     0,      0}, {0x00, 0x5a, 0xa8, 0x9e}}},\n    {{{   -41,    130,    -88}, 0, {     0,      0}, {0xd4, 0x65, 0xc3, 0x9e}}},\n    {{{    42,    130,    -88}, 0, {     0,      0}, {0x25, 0x6a, 0xc7, 0x9e}}},\n    {{{  -135,    -70,     23}, 0, {     0,      0}, {0xb2, 0xaa, 0x33, 0x9e}}},\n    {{{   -86,    -78,    123}, 0, {     0,      0}, {0xad, 0xc9, 0x4e, 0x9e}}},\n    {{{  -155,      6,     33}, 0, {     0,      0}, {0x87, 0x0f, 0x22, 0x9e}}},\n    {{{   -86,    -78,    123}, 0, {     0,      0}, {0xad, 0xc9, 0x4e, 0x9e}}},\n    {{{  -107,     20,    118}, 0, {     0,      0}, {0xa9, 0x14, 0x59, 0x9e}}},\n    {{{  -155,      6,     33}, 0, {     0,      0}, {0x87, 0x0f, 0x22, 0x9e}}},\n    {{{  -199,    -60,     25}, 0, {     0,      0}, {0xa2, 0xbf, 0x36, 0x9e}}},\n    {{{  -127,    -69,    -89}, 0, {     0,      0}, {0x9c, 0xc6, 0xce, 0x9e}}},\n    {{{  -135,    -70,     23}, 0, {     0,      0}, {0xb2, 0xaa, 0x33, 0x9e}}},\n};\n\n// 0x060174A0\nstatic const Vtx boo_castle_seg6_vertex_060174A0[] = {\n    {{{  -107,     20,    118}, 0, {     0,      0}, {0xa9, 0x14, 0x59, 0x9e}}},\n    {{{   -57,    128,    108}, 0, {     0,      0}, {0xd3, 0x60, 0x45, 0x9e}}},\n    {{{  -124,     99,     15}, 0, {     0,      0}, {0x9b, 0x4c, 0x08, 0x9e}}},\n    {{{  -124,     99,     15}, 0, {     0,      0}, {0x9b, 0x4c, 0x08, 0x9e}}},\n    {{{  -155,      6,     33}, 0, {     0,      0}, {0x87, 0x0f, 0x22, 0x9e}}},\n    {{{  -107,     20,    118}, 0, {     0,      0}, {0xa9, 0x14, 0x59, 0x9e}}},\n    {{{  -121,     59,    -94}, 0, {     0,      0}, {0xa1, 0x2e, 0xbb, 0x9e}}},\n    {{{  -127,    -69,    -89}, 0, {     0,      0}, {0x9c, 0xc6, 0xce, 0x9e}}},\n    {{{  -155,      6,     33}, 0, {     0,      0}, {0x87, 0x0f, 0x22, 0x9e}}},\n    {{{  -121,     59,    -94}, 0, {     0,      0}, {0xa1, 0x2e, 0xbb, 0x9e}}},\n    {{{  -155,      6,     33}, 0, {     0,      0}, {0x87, 0x0f, 0x22, 0x9e}}},\n    {{{  -124,     99,     15}, 0, {     0,      0}, {0x9b, 0x4c, 0x08, 0x9e}}},\n    {{{  -199,    -60,     25}, 0, {     0,      0}, {0xa2, 0xbf, 0x36, 0x9e}}},\n    {{{  -155,      6,     33}, 0, {     0,      0}, {0x87, 0x0f, 0x22, 0x9e}}},\n    {{{  -127,    -69,    -89}, 0, {     0,      0}, {0x9c, 0xc6, 0xce, 0x9e}}},\n};\n\n// 0x06017590\nstatic const Vtx boo_castle_seg6_vertex_06017590[] = {\n    {{{  -199,    -60,     25}, 0, {     0,      0}, {0xa2, 0xbf, 0x36, 0x9e}}},\n    {{{  -135,    -70,     23}, 0, {     0,      0}, {0xb2, 0xaa, 0x33, 0x9e}}},\n    {{{  -155,      6,     33}, 0, {     0,      0}, {0x87, 0x0f, 0x22, 0x9e}}},\n    {{{   200,    -60,     25}, 0, {     0,      0}, {0x5e, 0xbf, 0x36, 0x9e}}},\n    {{{   128,    -69,    -89}, 0, {     0,      0}, {0x64, 0xc6, 0xce, 0x9e}}},\n    {{{   156,      6,     33}, 0, {     0,      0}, {0x79, 0x0f, 0x22, 0x9e}}},\n    {{{   108,     20,    118}, 0, {     0,      0}, {0x57, 0x14, 0x5a, 0x9e}}},\n    {{{   156,      6,     33}, 0, {     0,      0}, {0x79, 0x0f, 0x22, 0x9e}}},\n    {{{   125,     99,     15}, 0, {     0,      0}, {0x65, 0x4c, 0x08, 0x9e}}},\n    {{{   125,     99,     15}, 0, {     0,      0}, {0x65, 0x4c, 0x08, 0x9e}}},\n    {{{   156,      6,     33}, 0, {     0,      0}, {0x79, 0x0f, 0x22, 0x9e}}},\n    {{{   122,     59,    -94}, 0, {     0,      0}, {0x5f, 0x2e, 0xbb, 0x9e}}},\n    {{{   200,    -60,     25}, 0, {     0,      0}, {0x5e, 0xbf, 0x36, 0x9e}}},\n    {{{   156,      6,     33}, 0, {     0,      0}, {0x79, 0x0f, 0x22, 0x9e}}},\n    {{{   136,    -70,     23}, 0, {     0,      0}, {0x4e, 0xaa, 0x33, 0x9e}}},\n};\n\n// 0x06017680\nstatic const Vtx boo_castle_seg6_vertex_06017680[] = {\n    {{{   156,      6,     33}, 0, {     0,      0}, {0x79, 0x0f, 0x22, 0x9e}}},\n    {{{   128,    -69,    -89}, 0, {     0,      0}, {0x64, 0xc6, 0xce, 0x9e}}},\n    {{{   122,     59,    -94}, 0, {     0,      0}, {0x5f, 0x2e, 0xbb, 0x9e}}},\n    {{{   200,    -60,     25}, 0, {     0,      0}, {0x5e, 0xbf, 0x36, 0x9e}}},\n    {{{   136,    -70,     23}, 0, {     0,      0}, {0x4e, 0xaa, 0x33, 0x9e}}},\n    {{{   128,    -69,    -89}, 0, {     0,      0}, {0x64, 0xc6, 0xce, 0x9e}}},\n    {{{   -43,    162,     15}, 0, {     0,      0}, {0xdf, 0x7a, 0xf8, 0x9e}}},\n    {{{   -41,    130,    -88}, 0, {     0,      0}, {0xd4, 0x65, 0xc3, 0x9e}}},\n    {{{  -124,     99,     15}, 0, {     0,      0}, {0x9b, 0x4c, 0x08, 0x9e}}},\n    {{{   -57,    128,    108}, 0, {     0,      0}, {0xd3, 0x60, 0x45, 0x9e}}},\n    {{{   -43,    162,     15}, 0, {     0,      0}, {0xdf, 0x7a, 0xf8, 0x9e}}},\n    {{{  -124,     99,     15}, 0, {     0,      0}, {0x9b, 0x4c, 0x08, 0x9e}}},\n    {{{   128,    -69,    -89}, 0, {     0,      0}, {0x64, 0xc6, 0xce, 0x9e}}},\n    {{{    46,    -82,   -160}, 0, {     0,      0}, {0x2e, 0xba, 0xa2, 0x9e}}},\n    {{{   122,     59,    -94}, 0, {     0,      0}, {0x5f, 0x2e, 0xbb, 0x9e}}},\n};\n\n// 0x06017770\nstatic const Vtx boo_castle_seg6_vertex_06017770[] = {\n    {{{     0,     62,   -162}, 0, {     0,      0}, {0x00, 0x5a, 0xa8, 0x9e}}},\n    {{{   122,     59,    -94}, 0, {     0,      0}, {0x5f, 0x2e, 0xbb, 0x9e}}},\n    {{{     0,     24,   -213}, 0, {     0,      0}, {0x00, 0x22, 0x86, 0x9e}}},\n    {{{     0,     24,   -213}, 0, {     0,      0}, {0x00, 0x22, 0x86, 0x9e}}},\n    {{{   122,     59,    -94}, 0, {     0,      0}, {0x5f, 0x2e, 0xbb, 0x9e}}},\n    {{{    46,    -82,   -160}, 0, {     0,      0}, {0x2e, 0xba, 0xa2, 0x9e}}},\n    {{{     0,     62,   -162}, 0, {     0,      0}, {0x00, 0x5a, 0xa8, 0x9e}}},\n    {{{     0,     24,   -213}, 0, {     0,      0}, {0x00, 0x22, 0x86, 0x9e}}},\n    {{{  -121,     59,    -94}, 0, {     0,      0}, {0xa1, 0x2e, 0xbb, 0x9e}}},\n    {{{  -121,     59,    -94}, 0, {     0,      0}, {0xa1, 0x2e, 0xbb, 0x9e}}},\n    {{{   -41,    130,    -88}, 0, {     0,      0}, {0xd4, 0x65, 0xc3, 0x9e}}},\n    {{{     0,     62,   -162}, 0, {     0,      0}, {0x00, 0x5a, 0xa8, 0x9e}}},\n    {{{     0,     24,   -213}, 0, {     0,      0}, {0x00, 0x22, 0x86, 0x9e}}},\n    {{{    46,    -82,   -160}, 0, {     0,      0}, {0x2e, 0xba, 0xa2, 0x9e}}},\n    {{{   -45,    -82,   -160}, 0, {     0,      0}, {0xc9, 0xc5, 0x9f, 0x9e}}},\n};\n\n// 0x06017860\nstatic const Vtx boo_castle_seg6_vertex_06017860[] = {\n    {{{   -45,    -82,   -160}, 0, {     0,      0}, {0xc9, 0xc5, 0x9f, 0x9e}}},\n    {{{    46,    -82,   -160}, 0, {     0,      0}, {0x2e, 0xba, 0xa2, 0x9e}}},\n    {{{   -59,   -126,    -86}, 0, {     0,      0}, {0xe1, 0x90, 0xd0, 0x9e}}},\n    {{{  -127,    -69,    -89}, 0, {     0,      0}, {0x9c, 0xc6, 0xce, 0x9e}}},\n    {{{  -121,     59,    -94}, 0, {     0,      0}, {0xa1, 0x2e, 0xbb, 0x9e}}},\n    {{{   -45,    -82,   -160}, 0, {     0,      0}, {0xc9, 0xc5, 0x9f, 0x9e}}},\n    {{{   -45,    -82,   -160}, 0, {     0,      0}, {0xc9, 0xc5, 0x9f, 0x9e}}},\n    {{{   -59,   -126,    -86}, 0, {     0,      0}, {0xe1, 0x90, 0xd0, 0x9e}}},\n    {{{  -127,    -69,    -89}, 0, {     0,      0}, {0x9c, 0xc6, 0xce, 0x9e}}},\n    {{{     0,     24,   -213}, 0, {     0,      0}, {0x00, 0x22, 0x86, 0x9e}}},\n    {{{   -45,    -82,   -160}, 0, {     0,      0}, {0xc9, 0xc5, 0x9f, 0x9e}}},\n    {{{  -121,     59,    -94}, 0, {     0,      0}, {0xa1, 0x2e, 0xbb, 0x9e}}},\n    {{{   -41,    130,    -88}, 0, {     0,      0}, {0xd4, 0x65, 0xc3, 0x9e}}},\n    {{{  -121,     59,    -94}, 0, {     0,      0}, {0xa1, 0x2e, 0xbb, 0x9e}}},\n    {{{  -124,     99,     15}, 0, {     0,      0}, {0x9b, 0x4c, 0x08, 0x9e}}},\n};\n\n// 0x06017950\nstatic const Vtx boo_castle_seg6_vertex_06017950[] = {\n    {{{   -57,    128,    108}, 0, {     0,      0}, {0xd3, 0x60, 0x45, 0x9e}}},\n    {{{     0,     60,    166}, 0, {     0,      0}, {0x00, 0x26, 0x79, 0x9e}}},\n    {{{    58,    128,    108}, 0, {     0,      0}, {0x35, 0x58, 0x49, 0x9e}}},\n    {{{   108,     20,    118}, 0, {     0,      0}, {0x57, 0x14, 0x5a, 0x9e}}},\n    {{{   125,     99,     15}, 0, {     0,      0}, {0x65, 0x4c, 0x08, 0x9e}}},\n    {{{    58,    128,    108}, 0, {     0,      0}, {0x35, 0x58, 0x49, 0x9e}}},\n    {{{   136,    -70,     23}, 0, {     0,      0}, {0x4e, 0xaa, 0x33, 0x9e}}},\n    {{{   156,      6,     33}, 0, {     0,      0}, {0x79, 0x0f, 0x22, 0x9e}}},\n    {{{    87,    -78,    123}, 0, {     0,      0}, {0x53, 0xc9, 0x4e, 0x9e}}},\n    {{{   108,     20,    118}, 0, {     0,      0}, {0x57, 0x14, 0x5a, 0x9e}}},\n    {{{    87,    -78,    123}, 0, {     0,      0}, {0x53, 0xc9, 0x4e, 0x9e}}},\n    {{{   156,      6,     33}, 0, {     0,      0}, {0x79, 0x0f, 0x22, 0x9e}}},\n};\n\n// 0x06017A10 - 0x06017A78\nconst Gfx boo_castle_seg6_dl_06017A10[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, boo_castle_seg6_texture_06016670),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&boo_castle_seg6_lights_06015658.l, 1),\n    gsSPLight(&boo_castle_seg6_lights_06015658.a, 2),\n    gsSPVertex(boo_castle_seg6_vertex_06016E70, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06017A78 - 0x06017AD0\nconst Gfx boo_castle_seg6_dl_06017A78[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, boo_castle_seg6_texture_06015670),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(boo_castle_seg6_vertex_06016F30, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06017AD0 - 0x06017CE0\nconst Gfx boo_castle_seg6_dl_06017AD0[] = {\n    gsSPVertex(boo_castle_seg6_vertex_06016FF0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(boo_castle_seg6_vertex_060170E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(boo_castle_seg6_vertex_060171D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(boo_castle_seg6_vertex_060172C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(boo_castle_seg6_vertex_060173B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(boo_castle_seg6_vertex_060174A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(boo_castle_seg6_vertex_06017590, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(boo_castle_seg6_vertex_06017680, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(boo_castle_seg6_vertex_06017770, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(boo_castle_seg6_vertex_06017860, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(boo_castle_seg6_vertex_06017950, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06017CE0 - 0x06017D80\nconst Gfx boo_castle_seg6_dl_06017CE0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsSPNumLights(NUMLIGHTS_1),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(boo_castle_seg6_dl_06017A10),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(boo_castle_seg6_dl_06017A78),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(boo_castle_seg6_dl_06017AD0),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/book/geo.inc.c",
    "content": "// 0x0C0000C0\nconst GeoLayout bookend_geo[] = {\n    GEO_CULLING_RADIUS(300),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, book_seg5_dl_05002FB0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/book/model.inc.c",
    "content": "// Book (Pushable Book)\n\n// This actor file requires including actor bookend because of bookend_seg5_texture_05000C60\n\n// 0x05002558\nstatic const Lights1 book_seg5_lights_05002558 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05002570\nALIGNED8 static const Texture book_seg5_texture_05002570[] = {\n#include \"actors/book/book_cover.rgba16.inc.c\"\n};\n\n// 0x05002D70\nstatic const Vtx book_seg5_vertex_05002D70[] = {\n    {{{    -9,     31,    -50}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    10,     31,      0}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    10,     31,    -50}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    -9,     31,      0}, 0, {   479,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    10,    -30,    -50}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    10,    -30,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    -9,    -30,      0}, 0, {   479,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    -9,    -30,    -50}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    10,    -30,    -50}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    -9,     31,    -50}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    10,     31,    -50}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    -9,    -30,    -50}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x05002E30\nstatic const Vtx book_seg5_vertex_05002E30[] = {\n    {{{    10,     31,      0}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -9,     31,      0}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -9,    -30,      0}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    10,    -30,      0}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -9,    -30,    -50}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,     31,      0}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,     31,    -50}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,    -30,      0}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    10,     31,    -50}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    10,     31,      0}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    10,    -30,      0}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    10,    -30,    -50}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x05002EF0 - 0x05002F58\nconst Gfx book_seg5_dl_05002EF0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bookend_seg5_texture_05000C60),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&book_seg5_lights_05002558.l, 1),\n    gsSPLight(&book_seg5_lights_05002558.a, 2),\n    gsSPVertex(book_seg5_vertex_05002D70, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05002F58 - 0x05002FB0\nconst Gfx book_seg5_dl_05002F58[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, book_seg5_texture_05002570),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(book_seg5_vertex_05002E30, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05002FB0 - 0x05003040\nconst Gfx book_seg5_dl_05002FB0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(book_seg5_dl_05002EF0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(book_seg5_dl_05002F58),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/bookend/anims/anim_050023F4.inc.c",
    "content": "// 0x05002350\nstatic const s16 bookend_seg5_animvalue_05002350[] = {\n    0x0000, 0xC001, 0x071C, 0x0D90, 0x198B, 0x1FFF, 0x198B, 0x0D90,\n    0x0AAA, 0x1032, 0x1A77, 0x1FFF, 0x1A77, 0x1032, 0x3FFF, 0x8001,\n};\n\n// 0x05002370\nstatic const u16 bookend_seg5_animindex_05002370[] = {\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0006, 0x0002,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x000E, 0x0001, 0x000F, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0006, 0x0008,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x050023F4\nstatic const struct Animation bookend_seg5_anim_050023F4 = {\n    0,\n    0,\n    0,\n    0,\n    0x06,\n    ANIMINDEX_NUMPARTS(bookend_seg5_animindex_05002370),\n    bookend_seg5_animvalue_05002350,\n    bookend_seg5_animindex_05002370,\n    0,\n};\n"
  },
  {
    "path": "actors/bookend/anims/anim_05002510.inc.c",
    "content": "// 0x0500240C\nstatic const s16 bookend_seg5_animvalue_0500240C[] = {\n    0x0000, 0xC001, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x3CB4, 0x381F, 0x3282, 0x2C20, 0x253E, 0x1E1D, 0x1701,\n    0x102D, 0x09E4, 0x0469, 0x0000, 0xFEFB, 0x01A8, 0x0549, 0x071C,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3CAF,\n    0x380D, 0x325E, 0x2BE8, 0x24F3, 0x1DC3, 0x169F, 0x0FCD, 0x0993,\n    0x0437, 0x0000, 0xFFAB, 0x038E, 0x0855, 0x0AAA, 0x3FFF, 0x8001,\n};\n\n// 0x0500248C\nstatic const u16 bookend_seg5_animindex_0500248C[] = {\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0002,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x003E, 0x0001, 0x003F, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0020,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x05002510\nstatic const struct Animation bookend_seg5_anim_05002510 = {\n    0,\n    0,\n    0,\n    0,\n    0x1E,\n    ANIMINDEX_NUMPARTS(bookend_seg5_animindex_0500248C),\n    bookend_seg5_animvalue_0500240C,\n    bookend_seg5_animindex_0500248C,\n    0,\n};\n\n// what the hell? no values/indexes for the table?\n"
  },
  {
    "path": "actors/bookend/anims/anim_05002528.inc.c",
    "content": "// 0x05002528\nstatic const struct Animation bookend_seg5_anim_05002528 = {\n    0,\n    0,\n    0,\n    0,\n    0x01,\n    ANIMINDEX_NUMPARTS(bookend_seg5_animindex_0500248C),\n    bookend_seg5_animvalue_0500240C,\n    bookend_seg5_animindex_0500248C,\n    0,\n};\n"
  },
  {
    "path": "actors/bookend/anims/data.inc.c",
    "content": "#include \"anim_050023F4.inc.c\"\n#include \"anim_05002510.inc.c\"\n#include \"anim_05002528.inc.c\"\n"
  },
  {
    "path": "actors/bookend/anims/table.inc.c",
    "content": "// 0x05002540\nconst struct Animation *const bookend_seg5_anims_05002540[] = {\n    &bookend_seg5_anim_05002528,\n    &bookend_seg5_anim_050023F4,\n    &bookend_seg5_anim_05002510,\n    NULL,\n};\n"
  },
  {
    "path": "actors/bookend/geo.inc.c",
    "content": "// 0x0C000000\nconst GeoLayout bookend_part_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 100),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bookend_seg5_dl_05001F98),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bookend_seg5_dl_05001B20),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bookend_seg5_dl_05002140),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bookend_seg5_dl_05001D68),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bookend_seg5_dl_05001978),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bookend_seg5_dl_050022E0),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(), //! more close than open nodes\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/bookend/model.inc.c",
    "content": "// Bookend\n\n// Unreferenced light group\nUNUSED static const Lights1 bookend_lights_unused1 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 bookend_lights_unused2 = gdSPDefLights1(\n    0x03, 0x19, 0x09,\n    0x0c, 0x66, 0x26, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 bookend_lights_unused3 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 bookend_lights_unused4 = gdSPDefLights1(\n    0x3f, 0x00, 0x00,\n    0xff, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x05000060\nALIGNED8 static const Texture bookend_seg5_texture_05000060[] = {\n#include \"actors/bookend/bookend_spine.rgba16.inc.c\"\n};\n\n// 0x05000460\nALIGNED8 static const Texture bookend_seg5_texture_05000460[] = {\n#include \"actors/bookend/bookend_tooth.rgba16.inc.c\"\n};\n\n// 0x05000860\nALIGNED8 static const Texture bookend_seg5_texture_05000860[] = {\n#include \"actors/bookend/bookend_mouth.rgba16.inc.c\"\n};\n\n// 0x05000C60\nALIGNED8 static const Texture bookend_seg5_texture_05000C60[] = {\n#include \"actors/bookend/bookend_pages.rgba16.inc.c\"\n};\n\n// 0x05001060\nALIGNED8 static const Texture bookend_seg5_texture_05001060[] = {\n#include \"actors/bookend/bookend_cover.rgba16.inc.c\"\n};\n\n// 0x05001860\nstatic const Lights1 bookend_seg5_lights_05001860 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05001878\nstatic const Vtx bookend_seg5_vertex_05001878[] = {\n    {{{   -10,      0,    108}, 0, {     0,    990}, {0x83, 0xed, 0x00, 0xff}}},\n    {{{    -4,    -39,   -109}, 0, {   479,      0}, {0x83, 0xed, 0x00, 0xff}}},\n    {{{    -4,    -39,    108}, 0, {   479,    990}, {0x83, 0xed, 0x00, 0xff}}},\n    {{{   -10,      0,   -109}, 0, {     0,      0}, {0x83, 0xed, 0x00, 0xff}}},\n};\n\n// 0x050018B8\nstatic const Vtx bookend_seg5_vertex_050018B8[] = {\n    {{{    -4,    -39,   -109}, 0, {   479,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   185,    -39,    108}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    -4,    -39,    108}, 0, {   479,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   185,    -39,   -109}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x050018F8 - 0x05001940\nconst Gfx bookend_seg5_dl_050018F8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bookend_seg5_texture_05000060),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bookend_seg5_lights_05001860.l, 1),\n    gsSPLight(&bookend_seg5_lights_05001860.a, 2),\n    gsSPVertex(bookend_seg5_vertex_05001878, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05001940 - 0x05001978\nconst Gfx bookend_seg5_dl_05001940[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bookend_seg5_texture_05001060),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bookend_seg5_vertex_050018B8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05001978 - 0x05001A08\nconst Gfx bookend_seg5_dl_05001978[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bookend_seg5_dl_050018F8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bookend_seg5_dl_05001940),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x05001A08\nstatic const Lights1 bookend_seg5_lights_05001A08 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05001A20\nstatic const Vtx bookend_seg5_vertex_05001A20[] = {\n    {{{    -4,    -39,   -107}, 0, {   479,    990}, {0x83, 0xed, 0x00, 0xff}}},\n    {{{    -4,    -39,    110}, 0, {   479,      0}, {0x83, 0xed, 0x00, 0xff}}},\n    {{{   -10,      0,    110}, 0, {     0,      0}, {0x83, 0xed, 0x00, 0xff}}},\n    {{{   -10,      0,   -107}, 0, {     0,    990}, {0x83, 0xed, 0x00, 0xff}}},\n};\n\n// 0x05001A60\nstatic const Vtx bookend_seg5_vertex_05001A60[] = {\n    {{{    -4,    -39,   -107}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   185,    -39,    110}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    -4,    -39,    110}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   185,    -39,   -107}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x05001AA0 - 0x05001AE8\nconst Gfx bookend_seg5_dl_05001AA0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bookend_seg5_texture_05000060),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bookend_seg5_lights_05001A08.l, 1),\n    gsSPLight(&bookend_seg5_lights_05001A08.a, 2),\n    gsSPVertex(bookend_seg5_vertex_05001A20, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05001AE8 - 0x05001B20\nconst Gfx bookend_seg5_dl_05001AE8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bookend_seg5_texture_05001060),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bookend_seg5_vertex_05001A60, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05001B20 - 0x05001BB0\nconst Gfx bookend_seg5_dl_05001B20[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bookend_seg5_dl_05001AA0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bookend_seg5_dl_05001AE8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x05001BB0\nstatic const Lights1 bookend_seg5_lights_05001BB0 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05001BC8\nstatic const Vtx bookend_seg5_vertex_05001BC8[] = {\n    {{{   -10,      0,    103}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   159,      0,   -104}, 0, {   479,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -10,      0,   -104}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   159,      0,    103}, 0, {   479,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x05001C08\nstatic const Vtx bookend_seg5_vertex_05001C08[] = {\n    {{{   159,      0,    103}, 0, {     0,     -6}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -10,      0,    103}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -4,    -38,    103}, 0, {   479,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   170,    -38,    103}, 0, {   479,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   159,      0,   -104}, 0, {     0,      0}, {0x79, 0x23, 0x00, 0xff}}},\n    {{{   159,      0,    103}, 0, {     0,    990}, {0x79, 0x23, 0x00, 0xff}}},\n    {{{   170,    -38,    103}, 0, {   479,    990}, {0x79, 0x23, 0x00, 0xff}}},\n    {{{   170,    -38,   -104}, 0, {   479,      0}, {0x79, 0x23, 0x00, 0xff}}},\n    {{{   -10,      0,   -104}, 0, {     0,     -6}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   159,      0,   -104}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   170,    -38,   -104}, 0, {   479,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    -4,    -38,   -104}, 0, {   479,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x05001CC8 - 0x05001D10\nconst Gfx bookend_seg5_dl_05001CC8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bookend_seg5_texture_05000860),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bookend_seg5_lights_05001BB0.l, 1),\n    gsSPLight(&bookend_seg5_lights_05001BB0.a, 2),\n    gsSPVertex(bookend_seg5_vertex_05001BC8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05001D10 - 0x05001D68\nconst Gfx bookend_seg5_dl_05001D10[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bookend_seg5_texture_05000C60),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bookend_seg5_vertex_05001C08, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05001D68 - 0x05001DE0\nconst Gfx bookend_seg5_dl_05001D68[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bookend_seg5_dl_05001CC8),\n    gsSPDisplayList(bookend_seg5_dl_05001D10),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x05001DE0\nstatic const Lights1 bookend_seg5_lights_05001DE0 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05001DF8\nstatic const Vtx bookend_seg5_vertex_05001DF8[] = {\n    {{{   -10,      0,    105}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   159,      0,   -102}, 0, {   479,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -10,      0,   -102}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   159,      0,    105}, 0, {   479,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x05001E38\nstatic const Vtx bookend_seg5_vertex_05001E38[] = {\n    {{{   170,    -38,   -102}, 0, {   479,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    -4,    -38,   -102}, 0, {   479,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -10,      0,   -102}, 0, {     0,     -6}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   159,      0,   -102}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   170,    -38,    105}, 0, {   479,    990}, {0x79, 0x23, 0x00, 0xff}}},\n    {{{   170,    -38,   -102}, 0, {   479,      0}, {0x79, 0x23, 0x00, 0xff}}},\n    {{{   159,      0,   -102}, 0, {     0,      0}, {0x79, 0x23, 0x00, 0xff}}},\n    {{{   159,      0,    105}, 0, {     0,    990}, {0x79, 0x23, 0x00, 0xff}}},\n    {{{    -4,    -38,    105}, 0, {   479,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   170,    -38,    105}, 0, {   479,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   159,      0,    105}, 0, {     0,     -6}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -10,      0,    105}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x05001EF8 - 0x05001F40\nconst Gfx bookend_seg5_dl_05001EF8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bookend_seg5_texture_05000860),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bookend_seg5_lights_05001DE0.l, 1),\n    gsSPLight(&bookend_seg5_lights_05001DE0.a, 2),\n    gsSPVertex(bookend_seg5_vertex_05001DF8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05001F40 - 0x05001F98\nconst Gfx bookend_seg5_dl_05001F40[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bookend_seg5_texture_05000C60),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bookend_seg5_vertex_05001E38, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05001F98 - 0x05002010\nconst Gfx bookend_seg5_dl_05001F98[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bookend_seg5_dl_05001EF8),\n    gsSPDisplayList(bookend_seg5_dl_05001F40),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x05002010\nstatic const Lights1 bookend_seg5_lights_05002010 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05002028\nstatic const Vtx bookend_seg5_vertex_05002028[] = {\n    {{{   157,     -1,    -48}, 0, {     6,    358}, {0x83, 0xee, 0x00, 0xff}}},\n    {{{   151,     39,    -72}, 0, {   475,    624}, {0x83, 0xee, 0x00, 0xff}}},\n    {{{   157,     -1,    -99}, 0, {   372,  -1002}, {0x83, 0xee, 0x00, 0xff}}},\n    {{{   157,     -1,      0}, 0, {   106,    390}, {0x83, 0xee, 0x00, 0xff}}},\n    {{{   151,     39,    -24}, 0, {   465,    636}, {0x83, 0xee, 0x00, 0xff}}},\n    {{{   157,     -1,    -48}, 0, {   461,   -950}, {0x83, 0xee, 0x00, 0xff}}},\n    {{{   157,     -1,     51}, 0, {   -54,    352}, {0x83, 0xee, 0x00, 0xff}}},\n    {{{   151,     39,     26}, 0, {   478,    570}, {0x83, 0xee, 0x00, 0xff}}},\n    {{{   157,     -1,      0}, 0, {   446,   -978}, {0x83, 0xee, 0x00, 0xff}}},\n    {{{   157,     -1,    103}, 0, {    66,    302}, {0x83, 0xee, 0x00, 0xff}}},\n    {{{   151,     39,     78}, 0, {   495,    590}, {0x83, 0xee, 0x00, 0xff}}},\n    {{{   157,     -1,     51}, 0, {   462,   -962}, {0x83, 0xee, 0x00, 0xff}}},\n};\n\n// 0x050020E8 - 0x05002140\nconst Gfx bookend_seg5_dl_050020E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bookend_seg5_texture_05000460),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bookend_seg5_lights_05002010.l, 1),\n    gsSPLight(&bookend_seg5_lights_05002010.a, 2),\n    gsSPVertex(bookend_seg5_vertex_05002028, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05002140 - 0x050021B0\nconst Gfx bookend_seg5_dl_05002140[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bookend_seg5_dl_050020E8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x050021B0\nstatic const Lights1 bookend_seg5_lights_050021B0 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x050021C8\nstatic const Vtx bookend_seg5_vertex_050021C8[] = {\n    {{{   157,     -1,    100}, 0, {    32,    394}, {0x83, 0xee, 0x00, 0xff}}},\n    {{{   151,     39,     73}, 0, {   426,    774}, {0x83, 0xee, 0x00, 0xff}}},\n    {{{   157,     -1,     49}, 0, {   414,   -722}, {0x83, 0xee, 0x00, 0xff}}},\n    {{{   157,     -1,     49}, 0, {   -39,    392}, {0x83, 0xee, 0x00, 0xff}}},\n    {{{   151,     39,     25}, 0, {   457,    852}, {0x83, 0xee, 0x00, 0xff}}},\n    {{{   157,     -1,      0}, 0, {   363,   -564}, {0x83, 0xee, 0x00, 0xff}}},\n    {{{   157,     -1,      0}, 0, {    -1,    360}, {0x83, 0xee, 0x00, 0xff}}},\n    {{{   151,     39,    -25}, 0, {   473,    906}, {0x83, 0xee, 0x00, 0xff}}},\n    {{{   157,     -1,    -50}, 0, {   372,   -932}, {0x83, 0xee, 0x00, 0xff}}},\n    {{{   157,     -1,    -50}, 0, {    12,    240}, {0x83, 0xee, 0x00, 0xff}}},\n    {{{   151,     39,    -77}, 0, {   491,    632}, {0x83, 0xee, 0x00, 0xff}}},\n    {{{   157,     -1,   -102}, 0, {   365,  -1004}, {0x83, 0xee, 0x00, 0xff}}},\n};\n\n// 0x05002288 - 0x050022E0\nconst Gfx bookend_seg5_dl_05002288[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bookend_seg5_texture_05000460),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bookend_seg5_lights_050021B0.l, 1),\n    gsSPLight(&bookend_seg5_lights_050021B0.a, 2),\n    gsSPVertex(bookend_seg5_vertex_050021C8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050022E0 - 0x05002350\nconst Gfx bookend_seg5_dl_050022E0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bookend_seg5_dl_05002288),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/bowling_ball/geo.inc.c",
    "content": "// This is a weird file where it cross-references another actor.\n// Most likely, it was a compile time optimization due to the\n// exact same DL being referenced.\n\n// 0x0F000640\nconst GeoLayout bowling_ball_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xC8, 280),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 170393),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, bobomb_seg8_dl_08022D08),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0F00066C\nconst GeoLayout bowling_ball_track_geo[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 170393),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, bobomb_seg8_dl_08022D08),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/bowser/anims/anim_060445EC.inc.c",
    "content": "// 0x06043700\nstatic const s16 bowser_seg6_animvalue_06043700[] = {\n    0x0000, 0x005B, 0x005B, 0x005B, 0x005B, 0x005B, 0x005C, 0x005C,\n    0x005C, 0x005C, 0x005C, 0x005C, 0x005C, 0x005C, 0x005C, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005E,\n    0x005E, 0x0060, 0x0063, 0x0068, 0x006D, 0x0072, 0x0078, 0x007E,\n    0x0084, 0x008A, 0x008F, 0x0093, 0x0096, 0x0097, 0x0097, 0x0097,\n    0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0xFFE7, 0x0B2B, 0x092A,\n    0x06B0, 0x062A, 0x0645, 0x06B0, 0x08BA, 0x09F4, 0x0B2B, 0x0C61,\n    0x0D74, 0x0E06, 0x0E2C, 0x0E3E, 0x0E41, 0x0E37, 0x0E25, 0x0E0F,\n    0x0DF8, 0x0DE4, 0x0DD8, 0x0DD7, 0x0DE5, 0x0E06, 0x0E6A, 0x0F20,\n    0x0FFB, 0x10CD, 0x1168, 0x119F, 0x1144, 0x1060, 0x0F29, 0x0DB0,\n    0x0C06, 0x0A3D, 0x0868, 0x0697, 0x04DE, 0x034C, 0x01F5, 0x00EA,\n    0x003D, 0x0000, 0x32C6, 0xC001, 0x32C6, 0x0000, 0x0000, 0x0001,\n    0x0002, 0x0004, 0x0007, 0x0009, 0x000C, 0x000F, 0x0011, 0x0014,\n    0x0017, 0x0019, 0x001A, 0x001B, 0x001C, 0x001C, 0x001B, 0x0019,\n    0x0016, 0x0013, 0x000D, 0x0007, 0x0000, 0xFFEC, 0xFFC6, 0xFF94,\n    0xFF60, 0xFF31, 0xFF10, 0xFF03, 0xFF07, 0xFF13, 0xFF25, 0xFF3C,\n    0xFF56, 0xFF73, 0xFF90, 0xFFAD, 0xFFC7, 0xFFDE, 0xFFF0, 0xFFFC,\n    0x0000, 0x09C7, 0x09C8, 0x09CD, 0x09D5, 0x09DF, 0x09EA, 0x09F7,\n    0x0A04, 0x0A12, 0x0A20, 0x0A2D, 0x0A38, 0x0A43, 0x0A4B, 0x0A51,\n    0x0A54, 0x0A53, 0x0A4F, 0x0A46, 0x0A38, 0x0A25, 0x0A0C, 0x09ED,\n    0x09C7, 0x0972, 0x08D7, 0x080D, 0x072A, 0x0648, 0x057D, 0x04E1,\n    0x0461, 0x03DE, 0x035A, 0x02D7, 0x0258, 0x01DE, 0x016E, 0x0108,\n    0x00AF, 0x0066, 0x002F, 0x000C, 0x0000, 0xA4A0, 0xA4A3, 0xA4AB,\n    0xA4B7, 0xA4C7, 0xA4DA, 0xA4EF, 0xA505, 0xA51B, 0xA532, 0xA547,\n    0xA55A, 0xA56B, 0xA579, 0xA582, 0xA587, 0xA586, 0xA57E, 0xA570,\n    0xA559, 0xA53A, 0xA511, 0xA4DE, 0xA4A0, 0xA3FC, 0xA2C3, 0xA133,\n    0x9F8E, 0x9E14, 0x9D04, 0x9C9E, 0x9CC7, 0x9D2F, 0x9DCB, 0x9E8F,\n    0x9F6F, 0xA060, 0xA157, 0xA248, 0xA327, 0xA3E8, 0xA481, 0xA4E5,\n    0xA509, 0xF0C0, 0xF051, 0xEF29, 0xED7D, 0xEB81, 0xE96A, 0xE6AF,\n    0xE341, 0xE00E, 0xDE02, 0xDCFA, 0xDC2E, 0xDB95, 0xDB26, 0xDADA,\n    0xDAA7, 0xDA86, 0xDA6E, 0xDA57, 0xDAD2, 0xDBE9, 0xDCC9, 0xDD18,\n    0xDCC9, 0xDBD0, 0xDA87, 0xD91E, 0xD7C5, 0xD6AE, 0xD60A, 0xD608,\n    0xD696, 0xD779, 0xD89E, 0xD9F5, 0xDB6F, 0xDCFA, 0xDE85, 0xE001,\n    0xE15D, 0xE289, 0xE373, 0xE40C, 0xE442, 0x0254, 0x0247, 0x0222,\n    0x01EA, 0x01A0, 0x014A, 0x00EA, 0x0085, 0x001D, 0xFFB7, 0xFF55,\n    0xFEFB, 0xFEAD, 0xFE6F, 0xFE43, 0xFE2E, 0xFE32, 0xFE55, 0xFE98,\n    0xFF00, 0xFF90, 0x004B, 0x0136, 0x0254, 0x04FB, 0x09EE, 0x1053,\n    0x174F, 0x1E07, 0x23A2, 0x2745, 0x2583, 0x1F3A, 0x19FF, 0x1708,\n    0x13E6, 0x10B5, 0x0D93, 0x0A9C, 0x07EE, 0x05A6, 0x03E1, 0x02BC,\n    0x0254, 0x053E, 0x0547, 0x0561, 0x0588, 0x05BB, 0x05F8, 0x063B,\n    0x0682, 0x06CB, 0x0712, 0x0757, 0x0796, 0x07CC, 0x07F8, 0x0817,\n    0x0826, 0x0822, 0x080A, 0x07DB, 0x0793, 0x072E, 0x06AA, 0x0606,\n    0x053E, 0x035C, 0xFFD5, 0xFB49, 0xF658, 0xF1A2, 0xEDC8, 0xEB68,\n    0xED57, 0xF2CD, 0xF702, 0xF904, 0xFB09, 0xFD01, 0xFEE2, 0x009C,\n    0x0223, 0x036B, 0x0466, 0x0506, 0x053E, 0xF8D6, 0xF8DD, 0xF8F0,\n    0xF90F, 0xF937, 0xF965, 0xF999, 0xF9D0, 0xFA08, 0xFA3F, 0xFA74,\n    0xFAA5, 0xFACF, 0xFAF0, 0xFB08, 0xFB14, 0xFB11, 0xFAFF, 0xFADA,\n    0xFAA2, 0xFA54, 0xF9EF, 0xF970, 0xF8D6, 0xF742, 0xF43E, 0xF067,\n    0xEC57, 0xE8AA, 0xE5FB, 0xE4E5, 0xE97A, 0xF25C, 0xF804, 0xF948,\n    0xFA11, 0xFA73, 0xFA83, 0xFA58, 0xFA05, 0xF9A0, 0xF93D, 0xF8F3,\n    0xF8D6, 0x2214, 0x2419, 0x286B, 0x2C6B, 0x2FEB, 0x33B1, 0x368C,\n    0x374C, 0x331C, 0x2BD2, 0x2739, 0x25FD, 0x24EB, 0x2401, 0x233D,\n    0x229E, 0x2222, 0x21C8, 0x218D, 0x2172, 0x2173, 0x218F, 0x21C6,\n    0x2214, 0x23FE, 0x27C2, 0x2B77, 0x2D35, 0x2D38, 0x2D06, 0x2CA6,\n    0x2C20, 0x2B7C, 0x2ABF, 0x29F2, 0x291C, 0x2844, 0x2771, 0x26AB,\n    0x25F9, 0x2561, 0x24EC, 0x24A1, 0x2486, 0xDB55, 0xDB57, 0xDB5C,\n    0xDB64, 0xDB6E, 0xDB79, 0xDB86, 0xDB94, 0xDBA2, 0xDBAF, 0xDBBC,\n    0xDBC8, 0xDBD3, 0xDBDB, 0xDBE1, 0xDBE4, 0xDBE3, 0xDBDF, 0xDBD6,\n    0xDBC8, 0xDBB5, 0xDB9B, 0xDB7C, 0xDB55, 0xDAE3, 0xDA01, 0xD8E6,\n    0xD7C7, 0xD6D8, 0xD64F, 0xD661, 0xD8ED, 0xDD42, 0xDFC3, 0xDFF2,\n    0xDFCA, 0xDF5E, 0xDEC0, 0xDE06, 0xDD42, 0xDC88, 0xDBEB, 0xDB7E,\n    0xDB55, 0x0000, 0xFFFB, 0xFFEA, 0xFFD1, 0xFFB0, 0xFF89, 0xFF5E,\n    0xFF31, 0xFF02, 0xFED4, 0xFEA8, 0xFE80, 0xFE5D, 0xFE41, 0xFE2D,\n    0xFE23, 0xFE26, 0xFE35, 0xFE53, 0xFE82, 0xFEC2, 0xFF17, 0xFF80,\n    0x0000, 0x0137, 0x0380, 0x0670, 0x09A0, 0x0CA7, 0x0F1A, 0x1093,\n    0x0F1E, 0x0B4A, 0x086C, 0x0727, 0x05EA, 0x04BA, 0x039F, 0x029E,\n    0x01BD, 0x0104, 0x0077, 0x001F, 0x0000, 0xF34B, 0xF354, 0xF36B,\n    0xF38F, 0xF3BD, 0xF3F4, 0xF430, 0xF471, 0xF4B2, 0xF4F3, 0xF532,\n    0xF56A, 0xF59C, 0xF5C3, 0xF5DF, 0xF5ED, 0xF5EA, 0xF5D4, 0xF5A9,\n    0xF567, 0xF50C, 0xF495, 0xF400, 0xF34B, 0xF189, 0xEE36, 0xE9F3,\n    0xE55D, 0xE115, 0xDDBA, 0xDBE9, 0xDF0A, 0xE611, 0xEAF3, 0xECA4,\n    0xEE1F, 0xEF65, 0xF07A, 0xF15F, 0xF216, 0xF2A0, 0xF301, 0xF339,\n    0xF34B, 0xA509, 0xA50E, 0xA51D, 0xA534, 0xA552, 0xA575, 0xA59C,\n    0xA5C6, 0xA5F0, 0xA61A, 0xA642, 0xA667, 0xA687, 0xA6A0, 0xA6B2,\n    0xA6BB, 0xA6B9, 0xA6AB, 0xA68F, 0xA665, 0xA62A, 0xA5DD, 0xA57D,\n    0xA509, 0xA3E2, 0xA1B5, 0x9EEC, 0x9BF0, 0x992C, 0x970B, 0x95F6,\n    0x9856, 0x9D69, 0xA0D7, 0xA1E6, 0xA2C3, 0xA373, 0xA3FC, 0xA463,\n    0xA4AC, 0xA4DC, 0xA4F8, 0xA505, 0xA509, 0x8001, 0x7FFC, 0x7FF5,\n    0x7FEB, 0x7FDD, 0x7FCD, 0x7FBB, 0x7FA8, 0x7F94, 0x7F81, 0x7F6F,\n    0x7F5E, 0x7F4F, 0x7F43, 0x7F3B, 0x7F37, 0x7F38, 0x7F3E, 0x7F4B,\n    0x7F5F, 0x7F7A, 0x7F9D, 0x7FC9, 0x8001, 0x808F, 0x819D, 0x82F5,\n    0x8460, 0x85A7, 0x8693, 0x86EE, 0x86D0, 0x867D, 0x85FF, 0x855E,\n    0x84A5, 0x83DE, 0x8312, 0x824B, 0x8192, 0x80F1, 0x8072, 0x801F,\n    0x8001, 0x8001, 0x8002, 0x8002, 0x8002, 0x8002, 0x8002, 0x8003,\n    0x8003, 0x8004, 0x8004, 0x8004, 0x8005, 0x8005, 0x8005, 0x8005,\n    0x8005, 0x8005, 0x8005, 0x8005, 0x8005, 0x8004, 0x8003, 0x8003,\n    0x8001, 0x7FFC, 0x7FF6, 0x7FEF, 0x7FE8, 0x7FE2, 0x7FDD, 0x7FDB,\n    0x7FDC, 0x7FDD, 0x7FE0, 0x7FE3, 0x7FE7, 0x7FEB, 0x7FEF, 0x7FF3,\n    0x7FF7, 0x7FFA, 0x7FFC, 0x7FFE, 0x8001, 0xD20B, 0xD20F, 0xD219,\n    0xD22A, 0xD23F, 0xD257, 0xD273, 0xD290, 0xD2AE, 0xD2CB, 0xD2E7,\n    0xD301, 0xD318, 0xD32A, 0xD336, 0xD33C, 0xD33B, 0xD331, 0xD31E,\n    0xD300, 0xD2D7, 0xD2A1, 0xD25D, 0xD20B, 0xD152, 0xCFFE, 0xCE43,\n    0xCC56, 0xCA6B, 0xC8B8, 0xC771, 0xC66F, 0xC56B, 0xC468, 0xC36A,\n    0xC276, 0xC190, 0xC0BC, 0xBFFD, 0xBF58, 0xBED0, 0xBE6B, 0xBE2B,\n    0xBE14, 0xE0D4, 0xDC85, 0xD453, 0xCF59, 0xD1D6, 0xD77F, 0xDA9A,\n    0xD99A, 0xD741, 0xD443, 0xD159, 0xCF39, 0xCE99, 0xCF3B, 0xD054,\n    0xD1D0, 0xD397, 0xD593, 0xD7AD, 0xD9CD, 0xDBDF, 0xDDCA, 0xDF79,\n    0xE0D4, 0xE20C, 0xE354, 0xE49A, 0xE5C9, 0xE6D1, 0xE79D, 0xE81C,\n    0xE83A, 0xE7E5, 0xE70A, 0xE54E, 0xE290, 0xDF18, 0xDB2E, 0xD71A,\n    0xD323, 0xCF90, 0xCCAB, 0xCAB9, 0xCA03, 0x005E, 0x005D, 0x005B,\n    0x005A, 0x005A, 0x005A, 0x005A, 0x005A, 0x0059, 0x0059, 0x0058,\n    0x0059, 0x0059, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, 0x0061,\n    0x0063, 0x0064, 0x0064, 0x0061, 0x005A, 0x004D, 0x003C, 0x0027,\n    0x0010, 0xFFFC, 0xFFE9, 0xFFD9, 0xFFC8, 0xFFB9, 0xFFAD, 0xFFA6,\n    0xFFA1, 0xFF9F, 0xFF9E, 0xFF9E, 0xFF9F, 0xFFA0, 0xFFA1, 0xFFA2,\n    0xFFA2, 0x0009, 0x000D, 0x0016, 0x001C, 0x001D, 0x001B, 0x001A,\n    0x001C, 0x001E, 0x0020, 0x0021, 0x0020, 0x001C, 0x0017, 0x0010,\n    0x000A, 0x0004, 0xFFE0, 0xFF90, 0xFF35, 0xFEF0, 0xFEE1, 0xFF27,\n    0xFFE4, 0x01B7, 0x04AE, 0x080B, 0x0B12, 0x0D06, 0x0D2A, 0x0A22,\n    0x0450, 0xFD91, 0xF7C1, 0xF4BD, 0xF451, 0xF4DE, 0xF626, 0xF7E8,\n    0xF9E7, 0xFBE2, 0xFD9A, 0xFED1, 0xFF46, 0x894D, 0x8757, 0x837B,\n    0x80BF, 0x807C, 0x812D, 0x818F, 0x8105, 0x8012, 0x7F23, 0x7EAD,\n    0x7F1A, 0x80AF, 0x8317, 0x85EF, 0x88D1, 0x8B56, 0x8D98, 0x8FE7,\n    0x9230, 0x945F, 0x9663, 0x9827, 0x9999, 0x9A8C, 0x9B01, 0x9B29,\n    0x9B34, 0x9B53, 0x9BB7, 0x9C8F, 0x9DB7, 0x9EE3, 0x9FC6, 0xA015,\n    0x9FD4, 0x9F4B, 0x9E8D, 0x9DB2, 0x9CCD, 0x9BF6, 0x9B42, 0x9AC6,\n    0x9A98, 0xE6F1, 0xDAA9, 0xCDF3, 0xD2B5, 0xDCAF, 0xE2D8, 0xDBE2,\n    0xD46A, 0xD4C1, 0xD54F, 0xD60F, 0xD6FB, 0xD80D, 0xD93F, 0xDA8B,\n    0xDBEA, 0xDD58, 0xDECE, 0xE047, 0xE1BB, 0xE326, 0xE481, 0xE5C7,\n    0xE6F1, 0xE839, 0xE9C6, 0xEB79, 0xED30, 0xEECB, 0xF028, 0xF128,\n    0xF1A9, 0xF18B, 0xF0AE, 0xEEA6, 0xEB5A, 0xE725, 0xE25E, 0xDD5F,\n    0xD881, 0xD41D, 0xD08B, 0xCE26, 0xCD46, 0xCC31, 0xCC28, 0xCC0F,\n    0xCBE9, 0xCBB7, 0xCB7C, 0xCB3B, 0xCAF6, 0xCAB0, 0xCA6A, 0xCA27,\n    0xC9EA, 0xC9B5, 0xC98B, 0xC96D, 0xC95F, 0xC962, 0xC979, 0xC9A7,\n    0xC9ED, 0xCA4F, 0xCACF, 0xCB6F, 0xCC31, 0xCDBC, 0xD07D, 0xD424,\n    0xD85D, 0xDCD8, 0xE143, 0xE54B, 0xE9AC, 0xEE49, 0xF18C, 0xF39D,\n    0xF5AE, 0xF7B0, 0xF998, 0xFB57, 0xFCE3, 0xFE2C, 0xFF28, 0xFFC8,\n    0x0000, 0xF52D, 0xF528, 0xF51A, 0xF504, 0xF4E9, 0xF4C8, 0xF4A4,\n    0xF47D, 0xF456, 0xF42F, 0xF409, 0xF3E7, 0xF3CA, 0xF3B2, 0xF3A1,\n    0xF399, 0xF39B, 0xF3A8, 0xF3C2, 0xF3E9, 0xF420, 0xF467, 0xF4C0,\n    0xF52D, 0xF625, 0xF7EE, 0xFA40, 0xFCD3, 0xFF5C, 0x0193, 0x0330,\n    0x034E, 0x0233, 0x0157, 0x011A, 0x00E3, 0x00B0, 0x0083, 0x005D,\n    0x003C, 0x0022, 0x000F, 0x0003, 0x0000, 0x4467, 0x4464, 0x445C,\n    0x4450, 0x443F, 0x442C, 0x4417, 0x4400, 0x43E9, 0x43D2, 0x43BC,\n    0x43A8, 0x4397, 0x4389, 0x437F, 0x437B, 0x437C, 0x4383, 0x4392,\n    0x43AA, 0x43CA, 0x43F3, 0x4428, 0x4467, 0x4513, 0x465E, 0x4803,\n    0x49BB, 0x4B40, 0x4C4E, 0x4C9E, 0x4A4A, 0x45E7, 0x42ED, 0x41E2,\n    0x40FD, 0x403B, 0x3F9B, 0x3F1A, 0x3EB5, 0x3E6A, 0x3E38, 0x3E1B,\n    0x3E12, 0xDED1, 0xDEC7, 0xDEAD, 0xDE85, 0xDE51, 0xDE14, 0xDDD1,\n    0xDD89, 0xDD3F, 0xDCF6, 0xDCB1, 0xDC71, 0xDC3A, 0xDC0D, 0xDBEE,\n    0xDBDF, 0xDBE3, 0xDBFB, 0xDC2B, 0xDC74, 0xDCDA, 0xDD60, 0xDE06,\n    0xDED1, 0xE080, 0xE38C, 0xE78E, 0xEC1C, 0xF0CE, 0xF53C, 0xF8FB,\n    0xFBD7, 0xFDFA, 0xFF8F, 0x00F7, 0x0273, 0x03F3, 0x056B, 0x06CE,\n    0x080E, 0x091D, 0x09F0, 0x0A78, 0x0AA8, 0x1FF4, 0x1FF7, 0x1FFF,\n    0x200C, 0x201D, 0x2032, 0x2048, 0x2060, 0x2078, 0x2090, 0x20A7,\n    0x20BC, 0x20CE, 0x20DD, 0x20E7, 0x20EC, 0x20EB, 0x20E3, 0x20D3,\n    0x20BB, 0x2099, 0x206D, 0x2036, 0x1FF4, 0x1FA2, 0x1F2E, 0x1E7D,\n    0x1D76, 0x1BFE, 0x19FB, 0x1755, 0x10A6, 0x0735, 0x01E3, 0x015B,\n    0x0194, 0x0264, 0x03A1, 0x0521, 0x06BA, 0x0841, 0x098D, 0x0A73,\n    0x0AC9, 0x8256, 0x824E, 0x8236, 0x8212, 0x81E3, 0x81AC, 0x816F,\n    0x812E, 0x80EB, 0x80A9, 0x806B, 0x8031, 0x7FFC, 0x7FD4, 0x7FB8,\n    0x7FAB, 0x7FAE, 0x7FC3, 0x7FEF, 0x8034, 0x8090, 0x8109, 0x819F,\n    0x8256, 0x83FE, 0x870F, 0x8B09, 0x8F6B, 0x93B4, 0x9764, 0x99FA,\n    0x9969, 0x9680, 0x9505, 0x95BF, 0x96DA, 0x983A, 0x99C5, 0x9B5F,\n    0x9CEB, 0x9E50, 0x9F70, 0xA032, 0xA078, 0x1898, 0x17F2, 0x1666,\n    0x1488, 0x12EF, 0x1231, 0x14D4, 0x17B3, 0x1805, 0x1845, 0x1875,\n    0x1897, 0x18AE, 0x18BA, 0x18BE, 0x18BC, 0x18B4, 0x18AA, 0x189F,\n    0x1895, 0x188D, 0x188A, 0x188D, 0x1898, 0x18A9, 0x18BC, 0x18D0,\n    0x18E5, 0x18FA, 0x190F, 0x1921, 0x1932, 0x1940, 0x194B, 0x1951,\n    0x1955, 0x1956, 0x1955, 0x1953, 0x194F, 0x194C, 0x1948, 0x1946,\n    0x1945, 0xE3FB, 0xE450, 0xE530, 0xE667, 0xE7C1, 0xE90D, 0xEB78,\n    0xED25, 0xECCA, 0xEC4B, 0xEBAF, 0xEAFC, 0xEA38, 0xE968, 0xE894,\n    0xE7BF, 0xE6F1, 0xE630, 0xE581, 0xE4EB, 0xE472, 0xE41E, 0xE3F4,\n    0xE3FB, 0xE467, 0xE557, 0xE6AA, 0xE841, 0xE9FC, 0xEBBA, 0xED5E,\n    0xEEC5, 0xEFD1, 0xF063, 0xF06E, 0xF00E, 0xEF5C, 0xEE71, 0xED66,\n    0xEC53, 0xEB52, 0xEA7C, 0xE9E9, 0xE9B2, 0xA0A7, 0xA198, 0xA3D2,\n    0xA66D, 0xA881, 0xA929, 0xA38D, 0x9DE4, 0x9D71, 0x9D0B, 0x9CB3,\n    0x9C6C, 0x9C37, 0x9C16, 0x9C0A, 0x9C17, 0x9C3C, 0x9C7E, 0x9CDC,\n    0x9D59, 0x9DF7, 0x9EB7, 0x9F9C, 0xA0A7, 0xA228, 0xA454, 0xA701,\n    0xAA07, 0xAD3E, 0xB07D, 0xB39B, 0xB66F, 0xB8D1, 0xBA99, 0xBBD2,\n    0xBCAF, 0xBD3D, 0xBD8B, 0xBDA5, 0xBD9C, 0xBD7C, 0xBD54, 0xBD31,\n    0xBD23, 0xE925, 0xE923, 0xE91C, 0xE913, 0xE906, 0xE8F7, 0xE8E7,\n    0xE8D5, 0xE8C3, 0xE8B2, 0xE8A1, 0xE891, 0xE884, 0xE879, 0xE871,\n    0xE86E, 0xE86F, 0xE874, 0xE880, 0xE892, 0xE8AB, 0xE8CB, 0xE8F4,\n    0xE925, 0xE97A, 0xEA06, 0xEABC, 0xEB90, 0xEC73, 0xED5B, 0xEE3A,\n    0xEF04, 0xEFAC, 0xF025, 0xF072, 0xF0A4, 0xF0BE, 0xF0C6, 0xF0C0,\n    0xF0B0, 0xF09B, 0xF087, 0xF077, 0xF071, 0x178C, 0x178E, 0x1795,\n    0x17A0, 0x17AE, 0x17BF, 0x17D2, 0x17E6, 0x17FA, 0x180E, 0x1821,\n    0x1832, 0x1842, 0x184E, 0x1856, 0x185A, 0x1859, 0x1853, 0x1846,\n    0x1831, 0x1815, 0x17F1, 0x17C3, 0x178C, 0x1730, 0x169E, 0x15E2,\n    0x1505, 0x1414, 0x1319, 0x121E, 0x1130, 0x105A, 0x0FA6, 0x0F04,\n    0x0E60, 0x0DBF, 0x0D25, 0x0C96, 0x0C18, 0x0BAE, 0x0B5C, 0x0B28,\n    0x0B16, 0x9EEA, 0x9EE0, 0x9EC6, 0x9E9E, 0x9E6A, 0x9E2D, 0x9DEA,\n    0x9DA2, 0x9D58, 0x9D10, 0x9CCA, 0x9C8B, 0x9C54, 0x9C27, 0x9C08,\n    0x9BF9, 0x9BFD, 0x9C15, 0x9C45, 0x9C8E, 0x9CF4, 0x9D79, 0x9E1F,\n    0x9EEA, 0xA045, 0xA27C, 0xA55D, 0xA8B6, 0xAC54, 0xB005, 0xB397,\n    0xB6D9, 0xB998, 0xBBA1, 0xBD0B, 0xBE15, 0xBECC, 0xBF3F, 0xBF7B,\n    0xBF8D, 0xBF83, 0xBF6B, 0xBF53, 0xBF48, 0x05F6, 0x05FE, 0x0615,\n    0x0638, 0x0666, 0x069C, 0x06D8, 0x0717, 0x0758, 0x0798, 0x07D5,\n    0x080D, 0x083E, 0x0865, 0x0881, 0x088E, 0x088B, 0x0876, 0x084B,\n    0x080B, 0x07B1, 0x073B, 0x06A8, 0x05F6, 0x0456, 0x0152, 0xFD6C,\n    0xF920, 0xF4F1, 0xF15C, 0xEEE4, 0xEF70, 0xF265, 0xF475, 0xF4E9,\n    0xF53F, 0xF57A, 0xF5A0, 0xF5B3, 0xF5BA, 0xF5B7, 0xF5B0, 0xF5A9,\n    0xF5A5, 0xEAE4, 0xEAE2, 0xEADD, 0xEAD5, 0xEACA, 0xEABE, 0xEAB1,\n    0xEAA2, 0xEA94, 0xEA85, 0xEA78, 0xEA6B, 0xEA60, 0xEA57, 0xEA51,\n    0xEA4E, 0xEA4F, 0xEA53, 0xEA5D, 0xEA6C, 0xEA80, 0xEA9A, 0xEABB,\n    0xEAE4, 0xEB32, 0xEBBB, 0xEC72, 0xED4A, 0xEE37, 0xEF2B, 0xF019,\n    0xF165, 0xF2F1, 0xF3EA, 0xF44C, 0xF49D, 0xF4DE, 0xF512, 0xF53A,\n    0xF557, 0xF56B, 0xF578, 0xF57E, 0xF580, 0xA38A, 0xA38B, 0xA38C,\n    0xA38F, 0xA392, 0xA395, 0xA399, 0xA39E, 0xA3A2, 0xA3A6, 0xA3AA,\n    0xA3AE, 0xA3B1, 0xA3B4, 0xA3B6, 0xA3B7, 0xA3B7, 0xA3B5, 0xA3B2,\n    0xA3AE, 0xA3A8, 0xA3A0, 0xA396, 0xA38A, 0xA39A, 0xA3CB, 0xA3FB,\n    0xA408, 0xA3CF, 0xA32C, 0xA1FF, 0x9DE1, 0x97C8, 0x9495, 0x94D0,\n    0x95A7, 0x96F4, 0x9890, 0x9A55, 0x9C1E, 0x9DC3, 0x9F20, 0xA00D,\n    0xA064, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x0000,\n};\n\n// 0x060443D0\nstatic const u16 bowser_seg6_animindex_060443D0[] = {\n    0x0001, 0x0000, 0x002C, 0x0001, 0x0001, 0x002D, 0x002C, 0x002E, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0666, 0x0001, 0x0000,\n    0x002C, 0x0451, 0x002C, 0x047D, 0x002C, 0x04A9,\n    0x002C, 0x026D, 0x002C, 0x0299, 0x002C, 0x02C5,\n    0x002C, 0x005D, 0x002C, 0x0089, 0x002C, 0x00B5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0665, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002C, 0x00E1,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0664, 0x0001, 0x0000,\n    0x002C, 0x04D5, 0x002C, 0x0501, 0x002C, 0x052D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002C, 0x02F1,\n    0x002C, 0x010D, 0x002C, 0x0139, 0x002C, 0x0165,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0663, 0x0001, 0x0000,\n    0x002C, 0x031D, 0x002C, 0x0349, 0x002C, 0x0375,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002C, 0x0191,\n    0x0001, 0x005A, 0x0001, 0x005B, 0x0001, 0x005C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0662, 0x0001, 0x0000,\n    0x002C, 0x0559, 0x002C, 0x0585, 0x002C, 0x05B1,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002C, 0x03A1,\n    0x002C, 0x01BD, 0x002C, 0x01E9, 0x002C, 0x0215,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0661, 0x0001, 0x0000,\n    0x002C, 0x05DD, 0x002C, 0x0609, 0x002C, 0x0635,\n    0x002C, 0x03CD, 0x002C, 0x03F9, 0x002C, 0x0425,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002C, 0x0241,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x060445EC\nstatic const struct Animation bowser_seg6_anim_060445EC = {\n    0,\n    0,\n    0,\n    0,\n    0x2C,\n    ANIMINDEX_NUMPARTS(bowser_seg6_animindex_060443D0),\n    bowser_seg6_animvalue_06043700,\n    bowser_seg6_animindex_060443D0,\n    0,\n};\n"
  },
  {
    "path": "actors/bowser/anims/anim_060453C8.inc.c",
    "content": "// 0x06044604\nstatic const s16 bowser_seg6_animvalue_06044604[] = {\n    0x0000, 0x0065, 0x0068, 0x006B, 0x006A, 0x005E, 0x0068, 0x006E,\n    0x0070, 0x006E, 0x006A, 0x0064, 0x005E, 0x0062, 0x0064, 0x0065,\n    0x0063, 0x0060, 0x005E, 0x005C, 0x005C, 0x005E, 0x0062, 0x0066,\n    0x006B, 0x0070, 0x0076, 0x007B, 0x0080, 0x0086, 0x008B, 0x008F,\n    0x0093, 0x0096, 0x0097, 0x0097, 0x0097, 0x0098, 0x0098, 0x0098,\n    0x0098, 0xFFE7, 0x0B2B, 0x0B1A, 0x0AFE, 0x0AF8, 0x0B2B, 0x0BC8,\n    0x0CAF, 0x0D8B, 0x0E06, 0x0E29, 0x0E39, 0x0E3A, 0x0E30, 0x0E1E,\n    0x0E08, 0x0DF3, 0x0DE0, 0x0DD5, 0x0DD6, 0x0DE4, 0x0E06, 0x0E6B,\n    0x0F24, 0x1002, 0x10D6, 0x1172, 0x11A6, 0x1144, 0x104E, 0x0EF6,\n    0x0D52, 0x0B7A, 0x0984, 0x0786, 0x0599, 0x03D2, 0x0248, 0x0112,\n    0x0048, 0x0000, 0x32C6, 0xC001, 0x32C6, 0x0000, 0x00BC, 0x025A,\n    0x03F9, 0x04B5, 0x04AB, 0x048F, 0x0463, 0x0428, 0x03E2, 0x0391,\n    0x0338, 0x02D9, 0x0276, 0x0212, 0x01AD, 0x014B, 0x00EC, 0x0094,\n    0x0045, 0x0000, 0xFFC4, 0xFF8D, 0xFF5E, 0xFF38, 0xFF1B, 0xFF09,\n    0xFF03, 0xFF08, 0xFF15, 0xFF2A, 0xFF44, 0xFF62, 0xFF82, 0xFFA1,\n    0xFFBF, 0xFFD9, 0xFFEE, 0xFFFC, 0x0000, 0x09C7, 0x0B7C, 0x0F3E,\n    0x1301, 0x14B6, 0x14A1, 0x1465, 0x1404, 0x1385, 0x12EA, 0x1238,\n    0x1173, 0x109F, 0x0FC0, 0x0EDA, 0x0DF1, 0x0D09, 0x0C26, 0x0B4D,\n    0x0A81, 0x09C7, 0x0910, 0x0850, 0x078D, 0x06CE, 0x0618, 0x0571,\n    0x04E1, 0x0459, 0x03CD, 0x033F, 0x02B3, 0x022B, 0x01AA, 0x0135,\n    0x00CE, 0x0079, 0x0037, 0x000E, 0x0000, 0xA4A0, 0xA7AE, 0xAE67,\n    0xB51F, 0xB82D, 0xB807, 0xB799, 0xB6EB, 0xB605, 0xB4EE, 0xB3AD,\n    0xB24A, 0xB0CC, 0xAF3B, 0xAD9F, 0xABFE, 0xAA60, 0xA8CE, 0xA74D,\n    0xA5E6, 0xA4A0, 0xA34D, 0xA1CF, 0xA049, 0x9EDE, 0x9DB2, 0x9CE6,\n    0x9C9E, 0x9CCD, 0x9D45, 0x9DF8, 0x9ED7, 0x9FD2, 0xA0DC, 0xA1E5,\n    0xA2DF, 0xA3BB, 0xA46B, 0xA4DF, 0xA509, 0xF0C0, 0xEEF8, 0xEAA8,\n    0xE55C, 0xE0A0, 0xDE02, 0xDEF2, 0xE254, 0xE5E1, 0xE754, 0xE646,\n    0xE427, 0xE170, 0xDE96, 0xDC11, 0xDA57, 0xDA58, 0xDBAD, 0xDCC9,\n    0xDD18, 0xDCC9, 0xDBD0, 0xDA85, 0xD91A, 0xD7C0, 0xD6A9, 0xD606,\n    0xD608, 0xD6A4, 0xD7A1, 0xD8EB, 0xDA6B, 0xDC0D, 0xDDBC, 0xDF62,\n    0xE0EB, 0xE242, 0xE350, 0xE402, 0xE442, 0x0254, 0x0243, 0x0215,\n    0x01CE, 0x0174, 0x010B, 0x009B, 0x0026, 0xFFB4, 0xFF49, 0xFEE9,\n    0xFE9B, 0xFE64, 0xFE49, 0xFE4F, 0xFE7C, 0xFED4, 0xFF5E, 0x001C,\n    0x0118, 0x0254, 0x0517, 0x0A15, 0x1078, 0x176A, 0x1E17, 0x23A7,\n    0x2745, 0x2590, 0x1F55, 0x19FF, 0x16C1, 0x1349, 0x0FC1, 0x0C53,\n    0x0928, 0x0669, 0x0440, 0x02D6, 0x0254, 0x053E, 0x054A, 0x056A,\n    0x059C, 0x05DB, 0x0624, 0x0673, 0x06C4, 0x0714, 0x0760, 0x07A2,\n    0x07D9, 0x07FF, 0x0812, 0x080E, 0x07EF, 0x07B1, 0x0751, 0x06CB,\n    0x061B, 0x053E, 0x0348, 0xFFBA, 0xFB2F, 0xF645, 0xF198, 0xEDC4,\n    0xEB68, 0xED4E, 0xF2BA, 0xF702, 0xF933, 0xFB69, 0xFD92, 0xFF9B,\n    0x016E, 0x02FC, 0x0430, 0x04F7, 0x053E, 0xF8D6, 0xF8DF, 0xF8F8,\n    0xF91E, 0xF94F, 0xF987, 0xF9C4, 0xFA03, 0xFA41, 0xFA7B, 0xFAAE,\n    0xFAD8, 0xFAF6, 0xFB05, 0xFB01, 0xFAE9, 0xFABA, 0xFA6F, 0xFA08,\n    0xF980, 0xF8D6, 0xF733, 0xF429, 0xF053, 0xEC48, 0xE8A1, 0xE5F8,\n    0xE4E5, 0xE973, 0xF24D, 0xF804, 0xF95B, 0xFA21, 0xFA72, 0xFA69,\n    0xFA22, 0xF9BB, 0xF94E, 0xF8F8, 0xF8D6, 0x2214, 0x276B, 0x3178,\n    0x374C, 0x356E, 0x3040, 0x2A93, 0x2739, 0x260C, 0x2504, 0x2420,\n    0x235E, 0x22BF, 0x2240, 0x21E2, 0x21A2, 0x2180, 0x217C, 0x2194,\n    0x21C7, 0x2214, 0x23FE, 0x27C1, 0x2B76, 0x2D35, 0x2D36, 0x2CFB,\n    0x2C8D, 0x2BF6, 0x2B3E, 0x2A6E, 0x298E, 0x28A8, 0x27C4, 0x26EB,\n    0x2626, 0x257D, 0x24FA, 0x24A4, 0x2486, 0xDB55, 0xDB58, 0xDB5E,\n    0xDB67, 0xDB74, 0xDB81, 0xDB91, 0xDBA0, 0xDBB0, 0xDBBE, 0xDBCB,\n    0xDBD5, 0xDBDD, 0xDBE0, 0xDBE0, 0xDBDA, 0xDBCE, 0xDBBB, 0xDBA2,\n    0xDB80, 0xDB55, 0xDADF, 0xD9FC, 0xD8E1, 0xD7C3, 0xD6D6, 0xD64F,\n    0xD661, 0xD8EB, 0xDD3F, 0xDFC3, 0xDFF0, 0xDFB4, 0xDF2A, 0xDE6D,\n    0xDD97, 0xDCC2, 0xDC09, 0xDB87, 0xDB55, 0x0000, 0xFFF9, 0xFFE4,\n    0xFFC4, 0xFF9C, 0xFF6D, 0xFF3A, 0xFF06, 0xFED3, 0xFEA2, 0xFE78,\n    0xFE55, 0xFE3C, 0xFE30, 0xFE32, 0xFE47, 0xFE6E, 0xFEAC, 0xFF02,\n    0xFF73, 0x0000, 0x0144, 0x0391, 0x0681, 0x09AD, 0x0CAD, 0x0F1C,\n    0x1093, 0x0F24, 0x0B56, 0x086C, 0x070B, 0x05B0, 0x0465, 0x0334,\n    0x0226, 0x0143, 0x0095, 0x0027, 0x0000, 0xF34B, 0xF356, 0xF373,\n    0xF3A0, 0xF3D9, 0xF41B, 0xF463, 0xF4AD, 0xF4F5, 0xF539, 0xF576,\n    0xF5A7, 0xF5CA, 0xF5DB, 0xF5D7, 0xF5BB, 0xF583, 0xF52C, 0xF4B3,\n    0xF414, 0xF34B, 0xF177, 0xEE1E, 0xE9DB, 0xE54C, 0xE10C, 0xDDB7,\n    0xDBE9, 0xDF02, 0xE600, 0xEAF3, 0xECC7, 0xEE5C, 0xEFB6, 0xF0D6,\n    0xF1BD, 0xF26E, 0xF2EA, 0xF333, 0xF34B, 0xA509, 0xA731, 0xABEF,\n    0xB0AE, 0xB2D6, 0xB2C1, 0xB285, 0xB223, 0xB19F, 0xB0FC, 0xB03C,\n    0xAF63, 0xAE72, 0xAD6E, 0xAC58, 0xAB34, 0xAA04, 0xA8CB, 0xA78D,\n    0xA64B, 0xA509, 0xA354, 0xA0EF, 0x9E2E, 0x9B61, 0x98DD, 0x96F3,\n    0x95F6, 0x9851, 0x9D5E, 0xA0D7, 0xA1FA, 0xA2E4, 0xA39A, 0xA424,\n    0xA487, 0xA4C9, 0xA4F0, 0xA504, 0xA509, 0x8001, 0x7FFB, 0x7FF3,\n    0x7FE5, 0x7FD4, 0x7FC1, 0x7FAC, 0x7F96, 0x7F80, 0x7F6C, 0x7F5A,\n    0x7F4C, 0x7F41, 0x7F3C, 0x7F3D, 0x7F46, 0x7F56, 0x7F70, 0x7F94,\n    0x7FC3, 0x8001, 0x8094, 0x81A4, 0x82FC, 0x8465, 0x85AA, 0x8694,\n    0x86EE, 0x86CB, 0x866B, 0x85D9, 0x8523, 0x8453, 0x8378, 0x829C,\n    0x81CD, 0x8117, 0x8085, 0x8024, 0x8001, 0x8001, 0x8002, 0x8002,\n    0x8002, 0x8002, 0x8003, 0x8003, 0x8004, 0x8004, 0x8004, 0x8005,\n    0x8005, 0x8005, 0x8005, 0x8005, 0x8005, 0x8005, 0x8004, 0x8004,\n    0x8003, 0x8001, 0x7FFC, 0x7FF6, 0x7FEF, 0x7FE8, 0x7FE2, 0x7FDD,\n    0x7FDB, 0x7FDC, 0x7FDE, 0x7FE1, 0x7FE4, 0x7FE8, 0x7FED, 0x7FF1,\n    0x7FF5, 0x7FF9, 0x7FFC, 0x7FFE, 0x8001, 0xD20B, 0xD210, 0xD21D,\n    0xD232, 0xD24B, 0xD269, 0xD28A, 0xD2AB, 0xD2CC, 0xD2EB, 0xD306,\n    0xD31D, 0xD32D, 0xD334, 0xD333, 0xD326, 0xD30C, 0xD2E5, 0xD2AE,\n    0xD266, 0xD20B, 0xD14C, 0xCFF8, 0xCE42, 0xCC5B, 0xCA75, 0xC8C1,\n    0xC771, 0xC660, 0xC54A, 0xC435, 0xC326, 0xC222, 0xC12F, 0xC053,\n    0xBF93, 0xBEF4, 0xBE7B, 0xBE2F, 0xBE14, 0xE0D4, 0xE034, 0xDE87,\n    0xDC1A, 0xD93A, 0xD633, 0xD353, 0xD0E6, 0xCF39, 0xCE99, 0xCEED,\n    0xCFD7, 0xD13C, 0xD300, 0xD508, 0xD739, 0xD977, 0xDBA7, 0xDDAF,\n    0xDF71, 0xE0D4, 0xE20E, 0xE359, 0xE4A3, 0xE5D8, 0xE6E4, 0xE7B3,\n    0xE832, 0xE84E, 0xE7F2, 0xE70A, 0xE519, 0xE1ED, 0xDDEA, 0xD974,\n    0xD4EE, 0xD0BD, 0xCD43, 0xCAE4, 0xCA03, 0x005E, 0x005E, 0x005E,\n    0x005D, 0x005D, 0x005D, 0x005C, 0x005C, 0x005B, 0x005B, 0x005C,\n    0x005D, 0x005E, 0x005E, 0x005F, 0x0061, 0x0063, 0x0064, 0x0064,\n    0x0061, 0x005A, 0x004D, 0x003C, 0x0027, 0x0010, 0xFFFC, 0xFFE9,\n    0xFFD9, 0xFFC8, 0xFFBA, 0xFFAE, 0xFFA6, 0xFFA1, 0xFF9F, 0xFF9E,\n    0xFF9E, 0xFF9F, 0xFFA1, 0xFFA2, 0xFFA2, 0x0009, 0x0009, 0x000A,\n    0x000C, 0x000E, 0x000F, 0x0012, 0x0015, 0x0018, 0x0018, 0x0015,\n    0x0010, 0x000A, 0x0004, 0xFFE0, 0xFF90, 0xFF35, 0xFEF0, 0xFEE1,\n    0xFF27, 0xFFE4, 0x01B7, 0x04AE, 0x080B, 0x0B12, 0x0D06, 0x0D2A,\n    0x0A25, 0x0459, 0xFD9F, 0xF7CD, 0xF4BD, 0xF460, 0xF52F, 0xF6D2,\n    0xF8F0, 0xFB31, 0xFD3A, 0xFEB5, 0xFF46, 0x894D, 0x8920, 0x88A9,\n    0x8800, 0x873B, 0x8673, 0x854A, 0x83C7, 0x829D, 0x827A, 0x83D0,\n    0x8629, 0x88E3, 0x8B56, 0x8D84, 0x8FCB, 0x9215, 0x944B, 0x9658,\n    0x9823, 0x9999, 0x9A8C, 0x9B01, 0x9B29, 0x9B34, 0x9B53, 0x9BB7,\n    0x9C90, 0x9DB8, 0x9EE4, 0x9FC7, 0xA015, 0x9FC8, 0x9F20, 0x9E3E,\n    0x9D40, 0x9C45, 0x9B6B, 0x9AD2, 0x9A98, 0xE6F1, 0xDDAD, 0xD46A,\n    0xD487, 0xD4DA, 0xD55E, 0xD60E, 0xD6E5, 0xD7DF, 0xD8F6, 0xDA25,\n    0xDB68, 0xDCB9, 0xDE13, 0xDF72, 0xE0D0, 0xE229, 0xE377, 0xE4B6,\n    0xE5E0, 0xE6F1, 0xE827, 0xE9AD, 0xEB61, 0xED1E, 0xEEC2, 0xF02A,\n    0xF132, 0xF1B8, 0xF197, 0xF0AE, 0xEE66, 0xEA93, 0xE5B3, 0xE03F,\n    0xDAB4, 0xD58D, 0xD146, 0xCE5A, 0xCD46, 0xCC31, 0xD1C0, 0xD74F,\n    0xD72E, 0xD6D1, 0xD640, 0xD585, 0xD4A6, 0xD3AE, 0xD2A4, 0xD191,\n    0xD07E, 0xCF72, 0xCE77, 0xCD95, 0xCCD4, 0xCC3E, 0xCBD9, 0xCBB0,\n    0xCBCB, 0xCC31, 0xCD89, 0xD037, 0xD3E0, 0xD82A, 0xDCBC, 0xE13A,\n    0xE54B, 0xE9A3, 0xEE36, 0xF18C, 0xF3CD, 0xF610, 0xF843, 0xFA52,\n    0xFC2C, 0xFDBD, 0xFEF2, 0xFFBA, 0x0000, 0xF52D, 0xF56E, 0xF5B0,\n    0xF5A8, 0xF590, 0xF56D, 0xF540, 0xF50C, 0xF4D6, 0xF49E, 0xF468,\n    0xF437, 0xF40E, 0xF3EF, 0xF3DE, 0xF3DD, 0xF3EF, 0xF416, 0xF457,\n    0xF4B3, 0xF52D, 0xF633, 0xF802, 0xFA54, 0xFCE1, 0xFF64, 0x0196,\n    0x0330, 0x034F, 0x0235, 0x0157, 0x0115, 0x00D9, 0x00A3, 0x0073,\n    0x004B, 0x002B, 0x0013, 0x0005, 0x0000, 0x4467, 0x43D4, 0x4340,\n    0x433E, 0x4337, 0x432E, 0x4323, 0x4317, 0x430D, 0x4304, 0x42FE,\n    0x42FC, 0x42FF, 0x4309, 0x431B, 0x4335, 0x435A, 0x4389, 0x43C6,\n    0x440F, 0x4467, 0x4527, 0x4679, 0x481D, 0x49CE, 0x4B4B, 0x4C51,\n    0x4C9E, 0x4A4F, 0x45F2, 0x42ED, 0x41CD, 0x40D9, 0x400D, 0x3F68,\n    0x3EE6, 0x3E86, 0x3E44, 0x3E1E, 0x3E12, 0xDED1, 0xE2F1, 0xE712,\n    0xE6F6, 0xE6A5, 0xE629, 0xE589, 0xE4CC, 0xE3FA, 0xE31B, 0xE237,\n    0xE155, 0xE07D, 0xDFB7, 0xDF0B, 0xDE81, 0xDE20, 0xDDEF, 0xDDF7,\n    0xDE40, 0xDED1, 0xE064, 0xE366, 0xE769, 0xEC01, 0xF0BF, 0xF537,\n    0xF8FB, 0xFBD1, 0xFDED, 0xFF8F, 0x0119, 0x02BD, 0x0465, 0x0600,\n    0x077B, 0x08C2, 0x09C3, 0x0A6C, 0x0AA8, 0x1FF4, 0x201E, 0x2048,\n    0x204C, 0x2057, 0x2068, 0x207D, 0x2094, 0x20AC, 0x20C4, 0x20DA,\n    0x20EC, 0x20F9, 0x2100, 0x20FE, 0x20F2, 0x20DC, 0x20B9, 0x2087,\n    0x2046, 0x1FF4, 0x1F94, 0x1F1B, 0x1E6B, 0x1D68, 0x1BF6, 0x19F9,\n    0x1755, 0x10AB, 0x073E, 0x01E3, 0x015E, 0x01BF, 0x02CD, 0x044E,\n    0x060B, 0x07C8, 0x094D, 0x0A60, 0x0AC9, 0x8256, 0x8481, 0x86AC,\n    0x8698, 0x865F, 0x8607, 0x8597, 0x8514, 0x8484, 0x83EE, 0x8356,\n    0x82C4, 0x823D, 0x81C6, 0x8167, 0x8124, 0x8104, 0x810C, 0x8144,\n    0x81B0, 0x8256, 0x83FC, 0x870C, 0x8B06, 0x8F69, 0x93B3, 0x9764,\n    0x99FA, 0x9967, 0x967B, 0x9505, 0x95D7, 0x971F, 0x98B6, 0x9A76,\n    0x9C3B, 0x9DDD, 0x9F36, 0xA021, 0xA078, 0x1898, 0x1826, 0x17B3,\n    0x17B4, 0x17B8, 0x17BE, 0x17C6, 0x17D0, 0x17DB, 0x17E8, 0x17F6,\n    0x1805, 0x1815, 0x1825, 0x1836, 0x1847, 0x1858, 0x1869, 0x1879,\n    0x1889, 0x1898, 0x18A8, 0x18BA, 0x18CE, 0x18E3, 0x18F8, 0x190D,\n    0x1920, 0x1931, 0x1940, 0x194B, 0x1952, 0x1955, 0x1955, 0x1953,\n    0x1950, 0x194C, 0x1949, 0x1946, 0x1945, 0xE3FB, 0xE890, 0xED25,\n    0xED0F, 0xECCF, 0xEC6B, 0xEBE9, 0xEB4D, 0xEA9D, 0xE9DF, 0xE918,\n    0xE84D, 0xE784, 0xE6C2, 0xE60C, 0xE568, 0xE4DB, 0xE46B, 0xE41C,\n    0xE3F5, 0xE3FB, 0xE465, 0xE552, 0xE6A4, 0xE839, 0xE9F3, 0xEBB2,\n    0xED56, 0xEEBF, 0xEFCE, 0xF063, 0xF065, 0xEFE8, 0xEF0E, 0xEDF8,\n    0xECC8, 0xEBA2, 0xEAA5, 0xE9F5, 0xE9B2, 0xA0A7, 0x9F45, 0x9DE4,\n    0x9DDD, 0x9DC9, 0x9DAB, 0x9D88, 0x9D62, 0x9D3D, 0x9D1D, 0x9D04,\n    0x9CF7, 0x9CF8, 0x9D0B, 0x9D34, 0x9D75, 0x9DD3, 0x9E50, 0x9EF0,\n    0x9FB6, 0xA0A7, 0xA213, 0xA42F, 0xA6D1, 0xA9D2, 0xAD08, 0xB04A,\n    0xB36F, 0xB64F, 0xB8C0, 0xBA99, 0xBBDE, 0xBCBB, 0xBD41, 0xBD82,\n    0xBD8F, 0xBD7A, 0xBD55, 0xBD32, 0xBD23, 0xE925, 0xE922, 0xE91A,\n    0xE90E, 0xE8FF, 0xE8ED, 0xE8DA, 0xE8C6, 0xE8B2, 0xE8A0, 0xE890,\n    0xE882, 0xE879, 0xE874, 0xE875, 0xE87D, 0xE88C, 0xE8A4, 0xE8C4,\n    0xE8EF, 0xE925, 0xE97F, 0xEA0C, 0xEAC2, 0xEB93, 0xEC75, 0xED5A,\n    0xEE37, 0xEF00, 0xEFA8, 0xF025, 0xF075, 0xF0A5, 0xF0BC, 0xF0BE,\n    0xF0B2, 0xF09F, 0xF089, 0xF078, 0xF071, 0x178C, 0x178F, 0x1798,\n    0x17A5, 0x17B7, 0x17CB, 0x17E0, 0x17F7, 0x180D, 0x1822, 0x1834,\n    0x1843, 0x184E, 0x1853, 0x1852, 0x1849, 0x1838, 0x181E, 0x17F9,\n    0x17C8, 0x178C, 0x172B, 0x1699, 0x15DD, 0x1504, 0x1416, 0x131E,\n    0x1227, 0x1139, 0x1060, 0x0FA6, 0x0EF9, 0x0E47, 0x0D97, 0x0CEF,\n    0x0C57, 0x0BD5, 0x0B6F, 0x0B2E, 0x0B16, 0x9EEA, 0x9EDE, 0x9EBD,\n    0x9E8C, 0x9E4D, 0x9E04, 0x9DB5, 0x9D63, 0x9D13, 0x9CC8, 0x9C85,\n    0x9C4E, 0x9C28, 0x9C15, 0x9C19, 0x9C38, 0x9C76, 0x9CD6, 0x9D5D,\n    0x9E0C, 0x9EEA, 0xA057, 0xA294, 0xA573, 0xA8C3, 0xAC56, 0xAFFD,\n    0xB386, 0xB6C5, 0xB988, 0xBBA1, 0xBD1A, 0xBE27, 0xBED9, 0xBF41,\n    0xBF71, 0xBF78, 0xBF69, 0xBF53, 0xBF48, 0x05F6, 0x0600, 0x061D,\n    0x0649, 0x0682, 0x06C3, 0x0709, 0x0752, 0x079A, 0x07DD, 0x0819,\n    0x0849, 0x086C, 0x087D, 0x0879, 0x085D, 0x0826, 0x07D0, 0x0758,\n    0x06BB, 0x05F6, 0x0445, 0x013A, 0xFD55, 0xF90F, 0xF4E7, 0xF15A,\n    0xEEE4, 0xEF6E, 0xF260, 0xF475, 0xF4F1, 0xF54A, 0xF584, 0xF5A6,\n    0xF5B5, 0xF5B7, 0xF5B1, 0xF5A9, 0xF5A5, 0xEAE4, 0xEAE1, 0xEADB,\n    0xEAD1, 0xEAC4, 0xEAB5, 0xEAA6, 0xEA95, 0xEA85, 0xEA76, 0xEA68,\n    0xEA5D, 0xEA56, 0xEA52, 0xEA53, 0xEA59, 0xEA65, 0xEA79, 0xEA94,\n    0xEAB7, 0xEAE4, 0xEB36, 0xEBC0, 0xEC77, 0xED4E, 0xEE39, 0xEF2B,\n    0xF019, 0xF163, 0xF2ED, 0xF3EA, 0xF453, 0xF4A9, 0xF4ED, 0xF522,\n    0xF549, 0xF564, 0xF575, 0xF57E, 0xF580, 0xA38A, 0xA38B, 0xA38D,\n    0xA390, 0xA394, 0xA398, 0xA39D, 0xA3A2, 0xA3A6, 0xA3AB, 0xA3AF,\n    0xA3B2, 0xA3B5, 0xA3B6, 0xA3B5, 0xA3B4, 0xA3B0, 0xA3AA, 0xA3A2,\n    0xA398, 0xA38A, 0xA399, 0xA3C9, 0xA3FA, 0xA407, 0xA3CE, 0xA32C,\n    0xA1FF, 0x9DE2, 0x97C9, 0x9495, 0x94E2, 0x95E9, 0x9777, 0x9957,\n    0x9B56, 0x9D3E, 0x9EDB, 0x9FF9, 0xA064, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x0000,\n};\n\n// 0x060451AC\nstatic const u16 bowser_seg6_animindex_060451AC[] = {\n    0x0001, 0x0000, 0x0028, 0x0001, 0x0001, 0x0029, 0x0028, 0x002A, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x05D2, 0x0001, 0x0000,\n    0x0028, 0x03ED, 0x0028, 0x0415, 0x0028, 0x043D,\n    0x0028, 0x0235, 0x0028, 0x025D, 0x0028, 0x0285,\n    0x0028, 0x0055, 0x0028, 0x007D, 0x0028, 0x00A5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x05D1, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x00CD,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x05D0, 0x0001, 0x0000,\n    0x0028, 0x0465, 0x0028, 0x048D, 0x0028, 0x04B5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x02AD,\n    0x0028, 0x00F5, 0x0028, 0x011D, 0x0028, 0x0145,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x05CF, 0x0001, 0x0000,\n    0x0028, 0x02D5, 0x0028, 0x02FD, 0x0028, 0x0325,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x016D,\n    0x0001, 0x0052, 0x0001, 0x0053, 0x0001, 0x0054,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x05CE, 0x0001, 0x0000,\n    0x0028, 0x04DD, 0x0028, 0x0505, 0x0028, 0x052D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x034D,\n    0x0028, 0x0195, 0x0028, 0x01BD, 0x0028, 0x01E5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x05CD, 0x0001, 0x0000,\n    0x0028, 0x0555, 0x0028, 0x057D, 0x0028, 0x05A5,\n    0x0028, 0x0375, 0x0028, 0x039D, 0x0028, 0x03C5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x020D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x060453C8\nstatic const struct Animation bowser_seg6_anim_060453C8 = {\n    0,\n    0,\n    0,\n    0,\n    0x28,\n    ANIMINDEX_NUMPARTS(bowser_seg6_animindex_060451AC),\n    bowser_seg6_animvalue_06044604,\n    bowser_seg6_animindex_060451AC,\n    0,\n};\n"
  },
  {
    "path": "actors/bowser/anims/anim_06045D28.inc.c",
    "content": "// 0x060453E0\nstatic const s16 bowser_seg6_animvalue_060453E0[] = {\n    0x0000, 0x005B, 0xFFE7, 0x0B2C, 0x0B33, 0x0B46, 0x0B61, 0x0B83,\n    0x0BA9, 0x0BD4, 0x0C00, 0x0C2C, 0x0C55, 0x0C7C, 0x0C9C, 0x0CB6,\n    0x0CC7, 0x0CCD, 0x0CC7, 0x0CB8, 0x0CA1, 0x0C83, 0x0C61, 0x0C3A,\n    0x0C11, 0x0BE7, 0x0BBE, 0x0B98, 0x0B75, 0x0B57, 0x0B40, 0x0B31,\n    0x0B2B, 0x32C6, 0xC001, 0x32C6, 0x0000, 0xFFFE, 0xFFFA, 0xFFF7,\n    0xFFF6, 0xFFFB, 0x0007, 0x001E, 0x0049, 0x0088, 0x00D2, 0x011C,\n    0x015D, 0x018A, 0x0199, 0x0184, 0x0150, 0x0108, 0x00B7, 0x0068,\n    0x0025, 0xFFFB, 0xFFE7, 0xFFDD, 0xFFDD, 0xFFE3, 0xFFEC, 0xFFF5,\n    0xFFFD, 0x0000, 0x09C7, 0x09C6, 0x09C6, 0x09C5, 0x09C4, 0x09C2,\n    0x09C0, 0x09BE, 0x09BB, 0x09B7, 0x09B2, 0x09AD, 0x09A9, 0x09A7,\n    0x09A6, 0x09A7, 0x09AA, 0x09AE, 0x09B3, 0x09B8, 0x09BC, 0x09BF,\n    0x09C1, 0x09C3, 0x09C4, 0x09C5, 0x09C6, 0x09C6, 0x09C7, 0x09C7,\n    0xA4A0, 0xA496, 0xA484, 0xA474, 0xA471, 0xA485, 0xA4BA, 0xA51B,\n    0xA5CD, 0xA6D7, 0xA80D, 0xA946, 0xAA56, 0xAB14, 0xAB55, 0xAAFA,\n    0xAA1E, 0xA8EE, 0xA798, 0xA64B, 0xA533, 0xA47F, 0xA429, 0xA404,\n    0xA404, 0xA41D, 0xA445, 0xA470, 0xA492, 0xA4A0, 0xF0BF, 0xF0B2,\n    0xF092, 0xF063, 0xF027, 0xEFE3, 0xEF99, 0xEF4C, 0xEF00, 0xEEB6,\n    0xEE73, 0xEE3A, 0xEE0D, 0xEDF0, 0xEDE6, 0xEDEF, 0xEE09, 0xEE32,\n    0xEE66, 0xEEA3, 0xEEE7, 0xEF2E, 0xEF77, 0xEFBF, 0xF002, 0xF040,\n    0xF074, 0xF09C, 0xF0B6, 0xF0C0, 0x0254, 0x0244, 0x021F, 0x01E9,\n    0x01A4, 0x0155, 0x00FD, 0x00A2, 0x0045, 0xFFEC, 0xFF98, 0xFF4C,\n    0xFF0D, 0xFEDD, 0xFEC1, 0xFEC2, 0xFEE6, 0xFF24, 0xFF74, 0xFFCE,\n    0x0029, 0x007E, 0x00C5, 0x0108, 0x0152, 0x019E, 0x01E4, 0x021E,\n    0x0245, 0x0254, 0x053E, 0x052D, 0x0505, 0x04C6, 0x0472, 0x040A,\n    0x038E, 0x0301, 0x0263, 0x01B6, 0x00FA, 0x0032, 0xFF5E, 0xFE7E,\n    0xFD95, 0xFC44, 0xFA55, 0xF80F, 0xF5B3, 0xF385, 0xF1C8, 0xF0C0,\n    0xF0B0, 0xF234, 0xF549, 0xF948, 0xFD88, 0x0160, 0x042A, 0x053E,\n    0xF8D5, 0xF8C6, 0xF8A1, 0xF86B, 0xF827, 0xF7D7, 0xF780, 0xF724,\n    0xF6C6, 0xF66B, 0xF615, 0xF5C7, 0xF585, 0xF552, 0xF531, 0xF52B,\n    0xF544, 0xF574, 0xF5B4, 0xF600, 0xF64F, 0xF69D, 0xF6E1, 0xF72B,\n    0xF784, 0xF7E3, 0xF83E, 0xF88C, 0xF8C2, 0xF8D6, 0x2214, 0x2233,\n    0x2288, 0x230A, 0x23B2, 0x2474, 0x2549, 0x2627, 0x2705, 0x27DA,\n    0x289D, 0x2944, 0x29C7, 0x2A1C, 0x2A3A, 0x2A20, 0x29D7, 0x2966,\n    0x28D3, 0x2828, 0x2769, 0x269F, 0x25D1, 0x2506, 0x2445, 0x2396,\n    0x22FF, 0x2288, 0x2237, 0x2215, 0xDB56, 0xDB58, 0xDB5E, 0xDB66,\n    0xDB70, 0xDB7A, 0xDB83, 0xDB8C, 0xDB93, 0xDB96, 0xDB96, 0xDB92,\n    0xDB87, 0xDB77, 0xDB5F, 0xDB29, 0xDACB, 0xDA58, 0xD9DF, 0xD973,\n    0xD925, 0xD907, 0xD920, 0xD962, 0xD9C1, 0xDA2D, 0xDA9A, 0xDAF9,\n    0xDB3C, 0xDB55, 0x0000, 0xFFFC, 0xFFF4, 0xFFEA, 0xFFE1, 0xFFDB,\n    0xFFDC, 0xFFE5, 0xFFF9, 0x001A, 0x004C, 0x0090, 0x00EB, 0x015D,\n    0x01EA, 0x02FA, 0x04BD, 0x06E2, 0x0915, 0x0B04, 0x0C5C, 0x0CCC,\n    0x0C26, 0x0AA7, 0x0899, 0x0645, 0x03F5, 0x01F3, 0x0089, 0x0000,\n    0xF34C, 0xF35C, 0xF382, 0xF3B8, 0xF3F9, 0xF441, 0xF48A, 0xF4D1,\n    0xF50F, 0xF541, 0xF561, 0xF56B, 0xF559, 0xF527, 0xF4D1, 0xF3F3,\n    0xF261, 0xF068, 0xEE55, 0xEC73, 0xEB10, 0xEA77, 0xEAC4, 0xEBBB,\n    0xED24, 0xEEC7, 0xF06E, 0xF1E1, 0xF2E7, 0xF34B, 0xA508, 0xA4FF,\n    0xA4F7, 0xA506, 0xA540, 0xA5BC, 0xA68C, 0xA7C7, 0xA9DF, 0xACE7,\n    0xB068, 0xB3EA, 0xB6F7, 0xB916, 0xB9D0, 0xB970, 0xB89E, 0xB769,\n    0xB5E6, 0xB426, 0xB23B, 0xB036, 0xAE2B, 0xAC2B, 0xAA48, 0xA895,\n    0xA723, 0xA604, 0xA54A, 0xA509, 0x8002, 0x8021, 0x806A, 0x80D5,\n    0x815C, 0x81F7, 0x829F, 0x834E, 0x83FC, 0x84A2, 0x853A, 0x85BD,\n    0x8623, 0x8665, 0x867C, 0x8667, 0x862C, 0x85D0, 0x8559, 0x84CE,\n    0x8434, 0x8392, 0x82EC, 0x8249, 0x81B0, 0x8124, 0x80AE, 0x8052,\n    0x8017, 0x8001, 0x7FFE, 0x7FFB, 0x7FF3, 0x7FE7, 0x7FD8, 0x7FC7,\n    0x7FB5, 0x7FA2, 0x7F8F, 0x7F7C, 0x7F6B, 0x7F5D, 0x7F52, 0x7F4B,\n    0x7F48, 0x7F4A, 0x7F51, 0x7F5B, 0x7F68, 0x7F77, 0x7F88, 0x7F9A,\n    0x7FAC, 0x7FBE, 0x7FCF, 0x7FDE, 0x7FEC, 0x7FF6, 0x7FFC, 0x8001,\n    0xD20A, 0xD1D9, 0xD168, 0xD0C0, 0xCFEE, 0xCEFC, 0xCDF5, 0xCCE4,\n    0xCBD4, 0xCACF, 0xC9E2, 0xC916, 0xC877, 0xC80F, 0xC7EA, 0xC80B,\n    0xC868, 0xC8F8, 0xC9B1, 0xCA8A, 0xCB7B, 0xCC79, 0xCD7C, 0xCE7A,\n    0xCF6B, 0xD044, 0xD0FD, 0xD18D, 0xD1EA, 0xD20B, 0xE0D5, 0xE0E6,\n    0xE10C, 0xE142, 0xE181, 0xE1C3, 0xE203, 0xE23A, 0xE262, 0xE276,\n    0xE26F, 0xE248, 0xE1FA, 0xE181, 0xE0D4, 0xDF7D, 0xDD41, 0xDA73,\n    0xD769, 0xD479, 0xD1F6, 0xD036, 0xCF8E, 0xD083, 0xD2FA, 0xD65A,\n    0xDA07, 0xDD67, 0xDFDF, 0xE0D4, 0x005E, 0x005E, 0x005E, 0x005E,\n    0x005E, 0x005E, 0x005E, 0x005D, 0x005D, 0x005C, 0x005A, 0x0059,\n    0x0057, 0x0056, 0x0056, 0x0056, 0x0058, 0x0059, 0x005B, 0x005D,\n    0x005F, 0x005F, 0x0060, 0x0060, 0x0060, 0x005F, 0x005F, 0x005E,\n    0x005E, 0x005E, 0x0009, 0x0090, 0x01F4, 0x03EB, 0x062C, 0x086E,\n    0x0A66, 0x0BCB, 0x0C54, 0x0BB9, 0x0A1C, 0x07D2, 0x052D, 0x0283,\n    0x0027, 0xFDC8, 0xFB07, 0xF82C, 0xF57A, 0xF337, 0xF1A8, 0xF113,\n    0xF1AF, 0xF351, 0xF5A3, 0xF852, 0xFB07, 0xFD6F, 0xFF35, 0x0004,\n    0x894D, 0x8910, 0x8868, 0x876E, 0x863D, 0x84ED, 0x8398, 0x8256,\n    0x8142, 0x802D, 0x7EF3, 0x7DC1, 0x7CBC, 0x7C0C, 0x7BD8, 0x7C2B,\n    0x7CE2, 0x7DE1, 0x7F0B, 0x8047, 0x8172, 0x8273, 0x836B, 0x847E,\n    0x859C, 0x86B2, 0x87AD, 0x887C, 0x890C, 0x894C, 0xE6EC, 0xE61B,\n    0xE456, 0xE1FB, 0xDF65, 0xDCF0, 0xDAF8, 0xD9DA, 0xD9B7, 0xDA4A,\n    0xDB50, 0xDC89, 0xDDB1, 0xDE88, 0xDECB, 0xDE48, 0xDD2A, 0xDBB7,\n    0xDA39, 0xD8F7, 0xD839, 0xD846, 0xD952, 0xDB2D, 0xDD8D, 0xE026,\n    0xE2AE, 0xE4DA, 0xE65F, 0xE6F1, 0xCC31, 0xCC35, 0xCC3E, 0xCC4C,\n    0xCC5D, 0xCC70, 0xCC86, 0xCC9C, 0xCCB2, 0xCCC7, 0xCCDA, 0xCCEB,\n    0xCCF8, 0xCD00, 0xCD03, 0xCD00, 0xCCF9, 0xCCED, 0xCCDE, 0xCCCD,\n    0xCCB9, 0xCCA5, 0xCC90, 0xCC7B, 0xCC68, 0xCC56, 0xCC47, 0xCC3B,\n    0xCC34, 0xCC31, 0xF52C, 0xF50A, 0xF4BC, 0xF449, 0xF3B8, 0xF311,\n    0xF25B, 0xF19F, 0xF0E3, 0xF02F, 0xEF8B, 0xEEFF, 0xEE91, 0xEE49,\n    0xEE30, 0xEE47, 0xEE87, 0xEEEA, 0xEF6A, 0xF000, 0xF0A6, 0xF155,\n    0xF208, 0xF2B7, 0xF35D, 0xF3F3, 0xF473, 0xF4D6, 0xF516, 0xF52D,\n    0x4467, 0x445C, 0x4441, 0x441A, 0x43E8, 0x43B0, 0x4372, 0x4332,\n    0x42F2, 0x42B5, 0x427D, 0x424E, 0x4228, 0x4210, 0x4207, 0x420F,\n    0x4225, 0x4247, 0x4272, 0x42A5, 0x42DD, 0x4319, 0x4356, 0x4391,\n    0x43CA, 0x43FD, 0x4428, 0x444A, 0x445F, 0x4467, 0xDED1, 0x1FF4,\n    0x8256, 0x1899, 0x18BF, 0x1918, 0x199B, 0x1A3F, 0x1AFB, 0x1BC8,\n    0x1C9B, 0x1D6E, 0x1E36, 0x1EEB, 0x1F85, 0x1FFB, 0x2044, 0x2058,\n    0x2000, 0x1F25, 0x1DEF, 0x1C83, 0x1B08, 0x19A3, 0x187D, 0x17BA,\n    0x1765, 0x175F, 0x1790, 0x17DF, 0x1836, 0x187C, 0x1898, 0xE3FB,\n    0xE420, 0xE473, 0xE4EE, 0xE587, 0xE635, 0xE6F1, 0xE7B0, 0xE86C,\n    0xE91A, 0xE9B3, 0xEA2D, 0xEA80, 0xEAA4, 0xEA8F, 0xE9FB, 0xE8C5,\n    0xE722, 0xE545, 0xE360, 0xE1A6, 0xE04B, 0xDF81, 0xDF6E, 0xDFF2,\n    0xE0D6, 0xE1E5, 0xE2EA, 0xE3AD, 0xE3FB, 0xA0A4, 0xA021, 0x9EEE,\n    0x9D2A, 0x9AF1, 0x985F, 0x9591, 0x92A5, 0x8FB6, 0x8CE2, 0x8A45,\n    0x87FD, 0x8625, 0x84DC, 0x843C, 0x84D1, 0x86D0, 0x89D6, 0x8D82,\n    0x9174, 0x9548, 0x989E, 0x9B13, 0x9CC7, 0x9E1D, 0x9F20, 0x9FD9,\n    0xA052, 0xA093, 0xA0A7, 0xE922, 0xE897, 0xE753, 0xE573, 0xE316,\n    0xE05A, 0xDD5B, 0xDA3A, 0xD712, 0xD403, 0xD12A, 0xCEA5, 0xCC92,\n    0xCB10, 0xCA3B, 0xCAD4, 0xCD28, 0xD0AB, 0xD4D1, 0xD90C, 0xDCD0,\n    0xDF91, 0xE18E, 0xE362, 0xE503, 0xE66B, 0xE790, 0xE86C, 0xE8F5,\n    0xE925, 0x178C, 0x17AE, 0x17FC, 0x186E, 0x18FE, 0x19A3, 0x1A57,\n    0x1B11, 0x1BC9, 0x1C79, 0x1D18, 0x1DA0, 0x1E08, 0x1E48, 0x1E5A,\n    0x1DF8, 0x1D06, 0x1BB6, 0x1A3D, 0x18CE, 0x179E, 0x16E0, 0x168E,\n    0x1678, 0x168E, 0x16C1, 0x1703, 0x1745, 0x1777, 0x178C, 0x9EE7,\n    0x9E6C, 0x9D4E, 0x9BA8, 0x9993, 0x972A, 0x9487, 0x91C6, 0x8F00,\n    0x8C51, 0x89D2, 0x879E, 0x85D0, 0x8482, 0x83CE, 0x8464, 0x868A,\n    0x89C0, 0x8D86, 0x915B, 0x94BF, 0x9731, 0x98E8, 0x9A6E, 0x9BC0,\n    0x9CDC, 0x9DBD, 0x9E62, 0x9EC7, 0x9EEA, 0x05F6, 0xEAE4, 0xA38A,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n};\n\n// 0x06045B0C\nstatic const u16 bowser_seg6_animindex_06045B0C[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x001E, 0x0003, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0395, 0x0001, 0x0000,\n    0x0001, 0x02D6, 0x0001, 0x02D7, 0x0001, 0x02D8,\n    0x001E, 0x018C, 0x001E, 0x01AA, 0x001E, 0x01C8,\n    0x001E, 0x0024, 0x001E, 0x0042, 0x001E, 0x0060,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0394, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x007E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0393, 0x0001, 0x0000,\n    0x001E, 0x02D9, 0x001E, 0x02F7, 0x001E, 0x0315,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x01E6,\n    0x001E, 0x009C, 0x001E, 0x00BA, 0x001E, 0x00D8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0392, 0x0001, 0x0000,\n    0x001E, 0x0204, 0x001E, 0x0222, 0x001E, 0x0240,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x00F6,\n    0x0001, 0x0021, 0x0001, 0x0022, 0x0001, 0x0023,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0391, 0x0001, 0x0000,\n    0x001E, 0x0333, 0x001E, 0x0351, 0x001E, 0x036F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x025E,\n    0x001E, 0x0114, 0x001E, 0x0132, 0x001E, 0x0150,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0390, 0x0001, 0x0000,\n    0x0001, 0x038D, 0x0001, 0x038E, 0x0001, 0x038F,\n    0x001E, 0x027C, 0x001E, 0x029A, 0x001E, 0x02B8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x016E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x06045D28\nstatic const struct Animation bowser_seg6_anim_06045D28 = {\n    0,\n    0,\n    0,\n    0,\n    0x1E,\n    ANIMINDEX_NUMPARTS(bowser_seg6_animindex_06045B0C),\n    bowser_seg6_animvalue_060453E0,\n    bowser_seg6_animindex_06045B0C,\n    0,\n};\n"
  },
  {
    "path": "actors/bowser/anims/anim_0604671C.inc.c",
    "content": "// 0x06045D40\nstatic const s16 bowser_seg6_animvalue_06045D40[] = {\n    0x0000, 0x0098, 0x0098, 0x0097, 0x0096, 0x0094, 0x0092, 0x008F,\n    0x008C, 0x0088, 0x0084, 0x007F, 0x0075, 0x0064, 0x0058, 0x0067,\n    0x006E, 0x006E, 0x006A, 0x0063, 0x005B, 0x0057, 0x0057, 0x005A,\n    0x005B, 0x005B, 0x005B, 0x005B, 0x005B, 0x005B, 0x005B, 0x005B,\n    0x005B, 0x005B, 0x005B, 0x005B, 0x005B, 0xFFE7, 0x0000, 0xFFFD,\n    0xFFF6, 0xFFED, 0xFFE6, 0xFFE4, 0xFFEB, 0xFFFC, 0x001C, 0x004D,\n    0x0094, 0x00E7, 0x013F, 0x019B, 0x01FA, 0x025C, 0x02C2, 0x032A,\n    0x0394, 0x0401, 0x0470, 0x04E0, 0x0552, 0x05C6, 0x063A, 0x06AE,\n    0x0724, 0x0799, 0x080E, 0x0883, 0x08F8, 0x096B, 0x09DE, 0x0A4F,\n    0x0ABE, 0x0B2B, 0x32C6, 0xC001, 0x32C6, 0x0000, 0x0006, 0x0017,\n    0x0034, 0x005A, 0x008A, 0x00C3, 0x0104, 0x014C, 0x019B, 0x01F0,\n    0x024A, 0x02A8, 0x030B, 0x0371, 0x03D9, 0x0443, 0x04AD, 0x0519,\n    0x0584, 0x05ED, 0x0656, 0x06BB, 0x071E, 0x077C, 0x07D6, 0x082B,\n    0x087A, 0x08C2, 0x0903, 0x093C, 0x096C, 0x0993, 0x09AF, 0x09C1,\n    0x09C7, 0xA509, 0xA508, 0xA508, 0xA506, 0xA505, 0xA503, 0xA501,\n    0xA4FE, 0xA4FB, 0xA4F7, 0xA4F4, 0xA4F0, 0xA4EC, 0xA4E8, 0xA4E4,\n    0xA4E0, 0xA4DB, 0xA4D7, 0xA4D2, 0xA4CE, 0xA4C9, 0xA4C5, 0xA4C1,\n    0xA4BD, 0xA4B9, 0xA4B5, 0xA4B1, 0xA4AE, 0xA4AB, 0xA4A8, 0xA4A6,\n    0xA4A4, 0xA4A2, 0xA4A1, 0xA4A1, 0xA4A0, 0xE442, 0xE545, 0xE78B,\n    0xE9F6, 0xEC20, 0xEE5D, 0xF0A8, 0xF2F9, 0xF547, 0xF78D, 0xF9C3,\n    0xFBE2, 0xFDE2, 0xFFBD, 0xFD6F, 0xF9D5, 0xF88D, 0xF8B5, 0xF961,\n    0xFB12, 0xFC11, 0xFB7B, 0xFAC1, 0xF9EA, 0xF8FE, 0xF801, 0xF6FD,\n    0xF5F6, 0xF4F5, 0xF401, 0xF31F, 0xF256, 0xF1AF, 0xF12F, 0xF0DD,\n    0xF0C0, 0x0254, 0x053E, 0xF8D6, 0x2486, 0x248A, 0x24A2, 0x24E2,\n    0x255E, 0x262A, 0x275A, 0x2901, 0x2BE6, 0x302B, 0x34EE, 0x394F,\n    0x3C6A, 0x3D60, 0x3AA9, 0x34BA, 0x2DAA, 0x2790, 0x2486, 0x26D4,\n    0x2CF3, 0x333C, 0x360B, 0x35B1, 0x34F7, 0x33E8, 0x3291, 0x3100,\n    0x2F40, 0x2D5E, 0x2B68, 0x2968, 0x276D, 0x2583, 0x23B7, 0x2214,\n    0xDB55, 0xF34B, 0xA509, 0x8001, 0x8001, 0xBE14, 0xBE21, 0xBE45,\n    0xBE7F, 0xBECD, 0xBF2F, 0xBFA3, 0xC028, 0xC0BB, 0xC15C, 0xC20A,\n    0xC2C2, 0xC383, 0xC44C, 0xC51B, 0xC5F0, 0xC6C8, 0xC7A2, 0xC87D,\n    0xC957, 0xCA30, 0xCB04, 0xCBD4, 0xCC9D, 0xCD5E, 0xCE16, 0xCEC3,\n    0xCF64, 0xCFF8, 0xD07C, 0xD0F0, 0xD152, 0xD1A1, 0xD1DB, 0xD1FF,\n    0xD20B, 0xCA03, 0xCAB1, 0xCC89, 0xCF42, 0xD293, 0xD632, 0xD9D6,\n    0xDD36, 0xE008, 0xE203, 0xE2DE, 0xDFBE, 0xD880, 0xD0EA, 0xCCC3,\n    0xCC1A, 0xCC55, 0xCD3E, 0xCEA1, 0xD049, 0xD1FF, 0xD38F, 0xD4C3,\n    0xD5C7, 0xD6E6, 0xD817, 0xD951, 0xDA8E, 0xDBC3, 0xDCEA, 0xDDFA,\n    0xDEEB, 0xDFB5, 0xE04F, 0xE0B2, 0xE0D4, 0xFFA2, 0xFFB8, 0xFFE9,\n    0x0020, 0x0047, 0x0047, 0x000A, 0xFFC5, 0xFF9F, 0xFF6A, 0xFEFC,\n    0xFE26, 0xFCBE, 0xFA97, 0xF4B7, 0xEC08, 0xE633, 0xE543, 0xE673,\n    0xE834, 0xE8F7, 0xE755, 0xE4DC, 0xE46F, 0xE64B, 0xE8AB, 0xEB6E,\n    0xEE73, 0xF199, 0xF4BE, 0xF7C2, 0xFA84, 0xFCE2, 0xFEBC, 0xFFF0,\n    0x005E, 0xFF46, 0xFECC, 0xFD83, 0xFBA3, 0xF964, 0xF700, 0xF4AF,\n    0xF226, 0xEF25, 0xEBF0, 0xE8CF, 0xE605, 0xE3D8, 0xE28E, 0xE4DA,\n    0xE9FF, 0xED1D, 0xEC58, 0xE9FB, 0xE761, 0xE5E5, 0xE64F, 0xE7E8,\n    0xE9CC, 0xEBB3, 0xEDDE, 0xF037, 0xF2A9, 0xF521, 0xF788, 0xF9CA,\n    0xFBD2, 0xFD8B, 0xFEE0, 0xFFBC, 0x0009, 0x9A98, 0x9A34, 0x991D,\n    0x9776, 0x955F, 0x92FA, 0x9068, 0x8D21, 0x88E4, 0x843E, 0x7FBA,\n    0x7BEB, 0x795B, 0x7897, 0x7F4E, 0x8BD1, 0x9396, 0x92CA, 0x8E6D,\n    0x8939, 0x85E7, 0x8614, 0x87FD, 0x894C, 0x897D, 0x899D, 0x89AE,\n    0x89B3, 0x89AF, 0x89A4, 0x8993, 0x8980, 0x896E, 0x895D, 0x8952,\n    0x894D, 0xCD46, 0xCD0B, 0xCC71, 0xCB9A, 0xCAA6, 0xC9B9, 0xC8F2,\n    0xC875, 0xC862, 0xC8DC, 0xCA03, 0xCBF2, 0xCE93, 0xD1C0, 0xD554,\n    0xD92B, 0xDD1F, 0xE10B, 0xE4C9, 0xE835, 0xEB2A, 0xED81, 0xEF17,\n    0xEFFB, 0xF064, 0xF060, 0xF000, 0xEF55, 0xEE6E, 0xED5C, 0xEC2F,\n    0xEAF8, 0xE9C5, 0xE8A8, 0xE7B2, 0xE6F1, 0x0000, 0xFFEB, 0xFFAC,\n    0xFF46, 0xFEBA, 0xFE0A, 0xFD38, 0xFC46, 0xFB35, 0xFA08, 0xF8C0,\n    0xF760, 0xF5E9, 0xF45D, 0xF2BD, 0xF10C, 0xEF4C, 0xED7E, 0xEBA5,\n    0xE9C1, 0xE7D5, 0xE5E4, 0xE3EE, 0xE1F5, 0xDFFC, 0xDE04, 0xDC0F,\n    0xDA1F, 0xD836, 0xD656, 0xD480, 0xD2B6, 0xD0FB, 0xCF50, 0xCDB7,\n    0xCC31, 0x0000, 0xFFFC, 0xFFEF, 0xFFDA, 0xFFBC, 0xFF97, 0xFF6C,\n    0xFF39, 0xFF00, 0xFEC1, 0xFE7D, 0xFE33, 0xFDE5, 0xFD92, 0xFD3B,\n    0xFCE0, 0xFC83, 0xFC22, 0xFBBF, 0xFB5A, 0xFAF4, 0xFA8C, 0xFA23,\n    0xF9B9, 0xF950, 0xF8E6, 0xF87E, 0xF816, 0xF7B0, 0xF74B, 0xF6E9,\n    0xF68A, 0xF62D, 0xF5D4, 0xF57E, 0xF52D, 0x3E12, 0x3E15, 0x3E1D,\n    0x3E29, 0x3E3A, 0x3E50, 0x3E69, 0x3E87, 0x3EA8, 0x3ECD, 0x3EF5,\n    0x3F20, 0x3F4E, 0x3F7F, 0x3FB1, 0x3FE6, 0x401D, 0x4055, 0x408F,\n    0x40CA, 0x4106, 0x4143, 0x4181, 0x41BE, 0x41FC, 0x423A, 0x4277,\n    0x42B3, 0x42EF, 0x432A, 0x4363, 0x439B, 0x43D1, 0x4406, 0x4438,\n    0x4467, 0x0AA8, 0x09E4, 0x07BF, 0x0476, 0x0044, 0xFB65, 0xF613,\n    0xF08A, 0xEB07, 0xE5C4, 0xE0FE, 0xDCEF, 0xD9D4, 0xD7E8, 0xD6CE,\n    0xD5FF, 0xD574, 0xD527, 0xD513, 0xD531, 0xD57C, 0xD5ED, 0xD67E,\n    0xD72A, 0xD7EA, 0xD8B9, 0xD991, 0xDA6B, 0xDB42, 0xDC10, 0xDCCE,\n    0xDD78, 0xDE06, 0xDE72, 0xDEB8, 0xDED1, 0x0AC9, 0x0B22, 0x0C1D,\n    0x0D9E, 0x0F89, 0x11C4, 0x1434, 0x16BD, 0x1945, 0x1BAF, 0x1DE2,\n    0x1FC2, 0x2134, 0x221C, 0x22A6, 0x230F, 0x235B, 0x238B, 0x23A2,\n    0x23A3, 0x2390, 0x236C, 0x2339, 0x22FA, 0x22B2, 0x2262, 0x220E,\n    0x21B8, 0x2163, 0x2111, 0x20C4, 0x2080, 0x2046, 0x201A, 0x1FFE,\n    0x1FF4, 0xA078, 0xA016, 0x9F03, 0x9D5B, 0x9B3D, 0x98C5, 0x9610,\n    0x933C, 0x9066, 0x8DAA, 0x8B26, 0x88F7, 0x873A, 0x860C, 0x853E,\n    0x848A, 0x83EF, 0x836B, 0x82FD, 0x82A3, 0x825C, 0x8225, 0x81FD,\n    0x81E2, 0x81D3, 0x81CE, 0x81D1, 0x81DC, 0x81EB, 0x81FD, 0x8211,\n    0x8226, 0x8238, 0x8248, 0x8252, 0x8256, 0x1945, 0x1944, 0x1943,\n    0x1941, 0x193F, 0x193B, 0x1937, 0x1933, 0x192E, 0x1928, 0x1923,\n    0x191C, 0x1916, 0x190F, 0x1908, 0x1901, 0x18FA, 0x18F2, 0x18EB,\n    0x18E3, 0x18DC, 0x18D5, 0x18CE, 0x18C7, 0x18C1, 0x18BA, 0x18B4,\n    0x18AF, 0x18AA, 0x18A6, 0x18A2, 0x189E, 0x189C, 0x189A, 0x1898,\n    0x1898, 0xE9B2, 0xE9AF, 0xE9A4, 0xE994, 0xE97D, 0xE961, 0xE940,\n    0xE91A, 0xE8F0, 0xE8C2, 0xE890, 0xE85B, 0xE824, 0xE7EB, 0xE7AF,\n    0xE772, 0xE734, 0xE6F6, 0xE6B7, 0xE679, 0xE63B, 0xE5FE, 0xE5C2,\n    0xE589, 0xE552, 0xE51D, 0xE4EB, 0xE4BD, 0xE493, 0xE46D, 0xE44C,\n    0xE430, 0xE419, 0xE408, 0xE3FE, 0xE3FB, 0xBD23, 0xBD11, 0xBCDE,\n    0xBC8B, 0xBC1B, 0xBB8F, 0xBAE9, 0xBA2C, 0xB95A, 0xB874, 0xB77D,\n    0xB677, 0xB563, 0xB444, 0xB31C, 0xB1ED, 0xB0B8, 0xAF81, 0xAE48,\n    0xAD11, 0xABDD, 0xAAAD, 0xA985, 0xA866, 0xA753, 0xA64C, 0xA555,\n    0xA46F, 0xA39D, 0xA2E0, 0xA23B, 0xA1AF, 0xA13E, 0xA0EB, 0xA0B8,\n    0xA0A7, 0xF071, 0xF03D, 0xEFAF, 0xEEDD, 0xEDDF, 0xECCB, 0xEBB7,\n    0xEAB8, 0xE9E7, 0xE959, 0xE925, 0xE925, 0xE925, 0xE925, 0xE925,\n    0xE925, 0xE925, 0xE925, 0xE925, 0xE925, 0xE925, 0xE925, 0xE925,\n    0xE925, 0xE925, 0xE925, 0xE925, 0xE925, 0xE925, 0xE925, 0xE925,\n    0xE925, 0xE925, 0xE925, 0xE925, 0xE925, 0x0B16, 0x0B6F, 0x0C62,\n    0x0DC7, 0x0F79, 0x1151, 0x1329, 0x14DB, 0x1640, 0x1732, 0x178C,\n    0x178C, 0x178C, 0x178C, 0x178C, 0x178C, 0x178C, 0x178C, 0x178C,\n    0x178C, 0x178C, 0x178C, 0x178C, 0x178C, 0x178C, 0x178C, 0x178C,\n    0x178C, 0x178C, 0x178C, 0x178C, 0x178C, 0x178C, 0x178C, 0x178C,\n    0x178C, 0xBF48, 0xBE60, 0xBBEA, 0xB84A, 0xB3E3, 0xAF19, 0xAA4E,\n    0xA5E7, 0xA247, 0x9FD2, 0x9EEA, 0x9EEA, 0x9EEA, 0x9EEA, 0x9EEA,\n    0x9EEA, 0x9EEA, 0x9EEA, 0x9EEA, 0x9EEA, 0x9EEA, 0x9EEA, 0x9EEA,\n    0x9EEA, 0x9EEA, 0x9EEA, 0x9EEA, 0x9EEA, 0x9EEA, 0x9EEA, 0x9EEA,\n    0x9EEA, 0x9EEA, 0x9EEA, 0x9EEA, 0x9EEA, 0xF5A5, 0xF64E, 0xF826,\n    0xFAF6, 0xFE8B, 0x02AC, 0x0728, 0x0BC8, 0x1056, 0x149E, 0x1869,\n    0x1B83, 0x1DB6, 0x1ECD, 0x1F21, 0x1F2E, 0x1EFC, 0x1E8F, 0x1DEB,\n    0x1D17, 0x1C17, 0x1AF0, 0x19A7, 0x1842, 0x16C5, 0x1535, 0x1398,\n    0x11F2, 0x104A, 0x0EA2, 0x0D02, 0x0B6D, 0x09E9, 0x087B, 0x0729,\n    0x05F6, 0xF580, 0xF551, 0xF4CC, 0xF401, 0xF2FD, 0xF1CF, 0xF086,\n    0xEF2F, 0xEDDA, 0xEC94, 0xEB6D, 0xEA72, 0xE9B1, 0xE93A, 0xE8F5,\n    0xE8C1, 0xE89B, 0xE884, 0xE87A, 0xE87B, 0xE886, 0xE89B, 0xE8B8,\n    0xE8DB, 0xE904, 0xE932, 0xE963, 0xE996, 0xE9C9, 0xE9FC, 0xEA2E,\n    0xEA5D, 0xEA87, 0xEAAD, 0xEACC, 0xEAE4, 0xA064, 0xA054, 0xA025,\n    0x9FDF, 0x9F86, 0x9F20, 0x9EB4, 0x9E47, 0x9DDE, 0x9D80, 0x9D32,\n    0x9CFA, 0x9CDD, 0x9CE1, 0x9CFD, 0x9D22, 0x9D50, 0x9D85, 0x9DC2,\n    0x9E05, 0x9E4F, 0x9E9D, 0x9EF0, 0x9F46, 0x9FA0, 0x9FFC, 0xA05A,\n    0xA0BA, 0xA119, 0xA179, 0xA1D7, 0xA234, 0xA28F, 0xA2E6, 0xA33A,\n    0xA38A, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x0000,\n};\n\n// 0x06046500\nstatic const u16 bowser_seg6_animindex_06046500[] = {\n    0x0001, 0x0000, 0x0024, 0x0001, 0x0001, 0x0025, 0x0024, 0x0026, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x03DE, 0x0001, 0x0000,\n    0x0024, 0x0229, 0x0024, 0x024D, 0x0024, 0x0271,\n    0x0001, 0x00E3, 0x0001, 0x00E4, 0x0024, 0x00E5,\n    0x0001, 0x0000, 0x0024, 0x004D, 0x0024, 0x0071,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x03DD, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0024, 0x0095,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x03DC, 0x0001, 0x0000,\n    0x0024, 0x0295, 0x0024, 0x02B9, 0x0024, 0x02DD,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0024, 0x0109,\n    0x0001, 0x00B9, 0x0001, 0x00BA, 0x0001, 0x00BB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x03DB, 0x0001, 0x0000,\n    0x0024, 0x012D, 0x0024, 0x0151, 0x0024, 0x0175,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0024, 0x00BC,\n    0x0001, 0x004A, 0x0001, 0x004B, 0x0001, 0x004C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x03DA, 0x0001, 0x0000,\n    0x0024, 0x0301, 0x0024, 0x0325, 0x0024, 0x0349,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0024, 0x0199,\n    0x0001, 0x00E0, 0x0001, 0x0000, 0x0001, 0x00E1,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x03D9, 0x0001, 0x0000,\n    0x0024, 0x036D, 0x0024, 0x0391, 0x0024, 0x03B5,\n    0x0024, 0x01BD, 0x0024, 0x01E1, 0x0024, 0x0205,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00E2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x0604671C\nstatic const struct Animation bowser_seg6_anim_0604671C = {\n    0,\n    0,\n    0,\n    0,\n    0x24,\n    ANIMINDEX_NUMPARTS(bowser_seg6_animindex_06046500),\n    bowser_seg6_animvalue_06045D40,\n    bowser_seg6_animindex_06046500,\n    0,\n};\n"
  },
  {
    "path": "actors/bowser/anims/anim_0604675C.inc.c",
    "content": "// 0x06046734\nstatic const s16 bowser_seg6_animvalue_06046734[] = {\n    0x0000, 0x0076, 0x00DB, 0x0050, 0xC21C, 0xE8CC, 0xC63B, 0x0000,\n};\n\n// 0x06046744\nstatic const u16 bowser_seg6_animindex_06046744[] = {\n    0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0003, 0x0001, 0x0004, 0x0001, 0x0005, 0x0001, 0x0006,\n};\n\n// 0x0604675C\nstatic const struct Animation bowser_seg6_anim_0604675C = {\n    0,\n    0,\n    0,\n    0,\n    0x64,\n    ANIMINDEX_NUMPARTS(bowser_seg6_animindex_06046744),\n    bowser_seg6_animvalue_06046734,\n    bowser_seg6_animindex_06046744,\n    0,\n};\n"
  },
  {
    "path": "actors/bowser/anims/anim_06048200.inc.c",
    "content": "// 0x06046774\nstatic const s16 bowser_seg6_animvalue_06046774[] = {\n    0x0000, 0x0098, 0x0098, 0x0099, 0x009B, 0x009C, 0x009D, 0x009E,\n    0x009F, 0x00A0, 0x00A0, 0x00A1, 0x00A1, 0x00A1, 0x00A0, 0x009F,\n    0x009E, 0x009D, 0x009C, 0x009A, 0x0099, 0x0098, 0x0097, 0x0095,\n    0x0093, 0x0090, 0x008D, 0x0089, 0x0083, 0x007E, 0x0072, 0x0074,\n    0x0079, 0x007E, 0x0082, 0x0083, 0x0082, 0x007F, 0x007C, 0x0078,\n    0x0074, 0x0071, 0x0070, 0x006F, 0x006F, 0x006F, 0x006F, 0x006E,\n    0x006E, 0x006E, 0x006E, 0x006F, 0x006F, 0x006F, 0x006F, 0x0070,\n    0x0070, 0x0070, 0x0071, 0x0071, 0x0071, 0x0071, 0x0072, 0x0072,\n    0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072,\n    0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0xFFE7, 0xFFE8, 0xFFEC,\n    0xFFF1, 0xFFF5, 0xFFF8, 0xFFF8, 0xFFF5, 0xFFEF, 0xFFE8, 0xFFE1,\n    0xFFD9, 0xFFD3, 0xFFCD, 0xFFC7, 0xFFC0, 0xFFBB, 0xFFB7, 0xFFB5,\n    0xFFB6, 0xFFB8, 0xFFBC, 0xFFC1, 0xFFC6, 0xFFC9, 0xFFCB, 0xFFCC,\n    0xFFCC, 0xFFCD, 0xFFCE, 0xFFCF, 0xFFCF, 0xFFD0, 0xFFD1, 0xFFD2,\n    0xFFD3, 0xFFD4, 0xFFD4, 0xFFD5, 0xFFD6, 0xFFD7, 0xFFD8, 0xFFD8,\n    0xFFD9, 0xFFDA, 0xFFDB, 0xFFDC, 0xFFDD, 0xFFDD, 0xFFDE, 0xFFDF,\n    0xFFE0, 0xFFE1, 0xFFE2, 0xFFE2, 0xFFE3, 0xFFE4, 0xFFE5, 0xFFE5,\n    0xFFE6, 0xFFE6, 0xFFE6, 0xFFE7, 0xFFE7, 0xFFE7, 0xFFE7, 0xFFE7,\n    0xFFE7, 0xFFE7, 0xFFE7, 0xFFE7, 0xFFE7, 0xFFE7, 0xFFE7, 0xFFE7,\n    0xFFE7, 0x0000, 0x00DA, 0x02F6, 0x05A2, 0x0830, 0x09EF, 0x0A2F,\n    0x090E, 0x073C, 0x04E1, 0x0229, 0xFF3E, 0xFC48, 0xF973, 0xF6E9,\n    0xF4D3, 0xF35D, 0xF2B0, 0xF2F7, 0xF47A, 0xF73B, 0xFAF7, 0xFF6B,\n    0x0452, 0x096C, 0x0E76, 0x132B, 0x174A, 0x1A8F, 0x1CB7, 0x1D06,\n    0x1B62, 0x187D, 0x1508, 0x11B4, 0x0F33, 0x0E37, 0x106F, 0x1557,\n    0x1A52, 0x1CC5, 0x1C6D, 0x1B07, 0x18F5, 0x169A, 0x1458, 0x1291,\n    0x11A8, 0x121E, 0x13BE, 0x15D4, 0x17AB, 0x188F, 0x1731, 0x1480,\n    0x1322, 0x136B, 0x13E1, 0x147D, 0x1536, 0x1604, 0x16DE, 0x17BE,\n    0x189A, 0x196B, 0x1A28, 0x1AC9, 0x1B46, 0x1B97, 0x1BB4, 0x1BB4,\n    0x1BB4, 0x1BB4, 0x1BB4, 0x1BB4, 0x1BB4, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0016, 0x002C, 0x0047,\n    0x0061, 0x0077, 0x0088, 0x008E, 0x0086, 0x006F, 0x0043, 0x0000,\n    0xFF94, 0xFEF5, 0xFE32, 0xFD56, 0xFC6F, 0xFB89, 0xFAB0, 0xF9F1,\n    0xF95A, 0xF8F5, 0xF8D1, 0xF8D1, 0xF8D1, 0xF8D1, 0xF8D1, 0xF8D1,\n    0xF8D1, 0xF8D1, 0xF8D1, 0xF8D1, 0xF8D1, 0xF8D1, 0xF8D1, 0xF8D1,\n    0xF8D1, 0xF8D1, 0xF8D1, 0xF8D1, 0xF8D1, 0xF8D1, 0xF8D1, 0xF8D1,\n    0xF8D1, 0xF8D1, 0xF8D1, 0xF8D1, 0xF8D1, 0xF8D1, 0xF8D1, 0xF8D1,\n    0xF8D1, 0xF8D1, 0xF8D1, 0xF8D1, 0xF8D1, 0xF8D1, 0xF8D1, 0xF8D1,\n    0xF8D1, 0xF8D1, 0xF8D1, 0xF8D1, 0xF8D1, 0xF8D1, 0xF8D1, 0xF8D1,\n    0xF8D1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0xFFFA, 0xFFE8, 0xFFCE, 0xFFB1, 0xFF94, 0xFF7B, 0xFF69, 0xFF62,\n    0xFF6A, 0xFF85, 0xFFB6, 0x0000, 0x0079, 0x012A, 0x0204, 0x02F9,\n    0x03FB, 0x04FC, 0x05ED, 0x06C2, 0x076B, 0x07DB, 0x0803, 0x0803,\n    0x0803, 0x0803, 0x0803, 0x0803, 0x0803, 0x0803, 0x0803, 0x0803,\n    0x0803, 0x0803, 0x0803, 0x0803, 0x0803, 0x0803, 0x0803, 0x0803,\n    0x0803, 0x0803, 0x0803, 0x0803, 0x0803, 0x0803, 0x0803, 0x0803,\n    0x0803, 0x0803, 0x0803, 0x0803, 0x0803, 0x0803, 0x0803, 0x0803,\n    0x0803, 0x0803, 0x0803, 0x0803, 0x0803, 0x0803, 0x0803, 0x0803,\n    0x0803, 0x0803, 0x0803, 0x0803, 0x0803, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x000B, 0x0028, 0x0051, 0x0080,\n    0x00AF, 0x00D9, 0x00F6, 0x0101, 0x00F4, 0x00C9, 0x0079, 0x0000,\n    0xFF3B, 0xFE1D, 0xFCBB, 0xFB2E, 0xF98B, 0xF7EA, 0xF662, 0xF509,\n    0xF3F7, 0xF341, 0xF300, 0xF300, 0xF300, 0xF300, 0xF300, 0xF300,\n    0xF300, 0xF300, 0xF300, 0xF300, 0xF300, 0xF300, 0xF300, 0xF300,\n    0xF300, 0xF300, 0xF300, 0xF300, 0xF300, 0xF300, 0xF300, 0xF300,\n    0xF300, 0xF300, 0xF300, 0xF300, 0xF300, 0xF300, 0xF300, 0xF300,\n    0xF300, 0xF300, 0xF300, 0xF300, 0xF300, 0xF300, 0xF300, 0xF300,\n    0xF300, 0xF300, 0xF300, 0xF300, 0xF300, 0xF300, 0xF300, 0xF300,\n    0xF300, 0x32C6, 0xC001, 0x32C6, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000A,\n    0x0024, 0x0048, 0x0070, 0x0097, 0x00B5, 0x00C5, 0x00C1, 0x00A3,\n    0x0064, 0x0000, 0xFF31, 0xFDDD, 0xFC3F, 0xFA91, 0xF90D, 0xF7EE,\n    0xF76F, 0xF841, 0xFA59, 0xFCD0, 0xFEC2, 0x0034, 0x01BB, 0x0342,\n    0x04B4, 0x05FB, 0x0704, 0x07BA, 0x0808, 0x07D0, 0x071C, 0x060D,\n    0x04C7, 0x036E, 0x0224, 0x010D, 0x004B, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xFFFD, 0xFFF6, 0xFFEB, 0xFFDF, 0xFFD3,\n    0xFFCA, 0xFFC6, 0xFFC7, 0xFFD0, 0xFFE2, 0x0000, 0x0038, 0x0090,\n    0x00FD, 0x0173, 0x01E4, 0x0247, 0x028F, 0x02A4, 0x028C, 0x0266,\n    0x0252, 0x0257, 0x0263, 0x0273, 0x0285, 0x0293, 0x029B, 0x0299,\n    0x028A, 0x0269, 0x0237, 0x01F9, 0x01B6, 0x0172, 0x0134, 0x0100,\n    0x00DD, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0,\n    0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0, 0x00D0,\n    0x00D0, 0x00D0, 0x00D0, 0x00D0, 0xA509, 0xA4AD, 0xA3D0, 0xA2BE,\n    0xA1C6, 0xA137, 0xA15E, 0xA21F, 0xA320, 0xA455, 0xA5B0, 0xA726,\n    0xA8A9, 0xAA2D, 0xABA4, 0xAD03, 0xAE3B, 0xAF42, 0xB009, 0xB092,\n    0xB0EB, 0xB11C, 0xB12A, 0xB11C, 0xB0FA, 0xB0CB, 0xB094, 0xB05D,\n    0xB02C, 0xB009, 0xAFE5, 0xAFB1, 0xAF6F, 0xAF25, 0xAED4, 0xAE80,\n    0xAE2E, 0xADE2, 0xAD92, 0xAD28, 0xAC8F, 0xABBB, 0xAABA, 0xA9A2,\n    0xA886, 0xA77C, 0xA697, 0xA5ED, 0xA591, 0xA58F, 0xA5D9, 0xA65A,\n    0xA6FE, 0xA7B1, 0xA85F, 0xA8F5, 0xA95D, 0xA984, 0xA984, 0xA984,\n    0xA984, 0xA984, 0xA984, 0xA984, 0xA984, 0xA984, 0xA984, 0xA984,\n    0xA984, 0xA984, 0xA984, 0xA984, 0xA984, 0xA984, 0xA984, 0xA984,\n    0xE442, 0xE33D, 0xE0BC, 0xDD98, 0xDAA8, 0xD8C4, 0xD8C4, 0xDA68,\n    0xDCC8, 0xDFB9, 0xE316, 0xE6B6, 0xEA71, 0xEE1F, 0xF198, 0xF4B5,\n    0xF74D, 0xF938, 0xFA4F, 0xFA5C, 0xF95D, 0xF776, 0xF4C9, 0xF17C,\n    0xEDB1, 0xE98D, 0xE533, 0xD29C, 0xCAFF, 0xC8DE, 0xCD64, 0xD4BF,\n    0xDA2F, 0xDCAF, 0xDE33, 0xDE6F, 0xDD15, 0xD8B8, 0xD1F4, 0xCB8A,\n    0xC83B, 0xCB8A, 0xD2BD, 0xD730, 0xD74E, 0xD63F, 0xD480, 0xD28F,\n    0xD0EB, 0xD010, 0xD02D, 0xD0E6, 0xD1EB, 0xD2EC, 0xD39C, 0xD3AA,\n    0xD310, 0xD214, 0xD0D3, 0xCF6E, 0xCE04, 0xCCB3, 0xCB9C, 0xCADE,\n    0xCA97, 0xCA97, 0xCA97, 0xCA97, 0xCA97, 0xCA97, 0xCA97, 0xCA97,\n    0xCA97, 0xCA97, 0xCA97, 0xCA97, 0x0254, 0x022A, 0x01B3, 0x00F7,\n    0xFFFE, 0xFECE, 0xFD71, 0xFBEF, 0xFA4F, 0xF899, 0xF6D6, 0xF50E,\n    0xF348, 0xF18D, 0xEFE4, 0xEE56, 0xECEB, 0xEBAA, 0xEA9C, 0xE9E9,\n    0xE9A3, 0xE9AB, 0xE9E7, 0xEA39, 0xEA85, 0xEAB0, 0xEAAF, 0xEA95,\n    0xEA67, 0xEA2E, 0xE9F0, 0xE9B6, 0xE987, 0xE96A, 0xE967, 0xE986,\n    0xE9CD, 0xEA45, 0xEAF4, 0xEBE3, 0xED08, 0xEE50, 0xEFB9, 0xF13F,\n    0xF2E0, 0xF496, 0xF660, 0xF83A, 0xFA1F, 0xFC0E, 0xFE02, 0xFFF8,\n    0x01EB, 0x03DB, 0x05C3, 0x079F, 0x096C, 0x0B26, 0x0CCB, 0x0E56,\n    0x0FC5, 0x1113, 0x1206, 0x1278, 0x1287, 0x1251, 0x11F2, 0x118A,\n    0x1136, 0x1113, 0x1113, 0x1113, 0x1113, 0x1113, 0x1113, 0x1113,\n    0x053E, 0x052E, 0x0502, 0x04BD, 0x0462, 0x03F5, 0x0378, 0x02F0,\n    0x0260, 0x01CB, 0x0135, 0x00A0, 0x0011, 0xFF8C, 0xFF12, 0xFEA8,\n    0xFE51, 0xFE10, 0xFDE9, 0xFE25, 0xFEE6, 0xFFF4, 0x0116, 0x0216,\n    0x02BD, 0x02D2, 0x0270, 0x01DD, 0x0121, 0x0046, 0xFF54, 0xFE52,\n    0xFD49, 0xFC42, 0xFB46, 0xFA5D, 0xF98F, 0xF8E5, 0xF867, 0xF81E,\n    0xF7FC, 0xF7EB, 0xF7EB, 0xF7F9, 0xF815, 0xF83C, 0xF86F, 0xF8AA,\n    0xF8EE, 0xF938, 0xF987, 0xF9DA, 0xFA2F, 0xFA85, 0xFADB, 0xFB2F,\n    0xFB80, 0xFBCD, 0xFC13, 0xFC52, 0xFC89, 0xFCB6, 0xFCD4, 0xFCE2,\n    0xFCE4, 0xFCDD, 0xFCD1, 0xFCC4, 0xFCBA, 0xFCB6, 0xFCB6, 0xFCB6,\n    0xFCB6, 0xFCB6, 0xFCB6, 0xFCB6, 0xF8D6, 0xF8BB, 0xF86F, 0xF7F6,\n    0xF759, 0xF69B, 0xF5C3, 0xF4D7, 0xF3DD, 0xF2DB, 0xF1D6, 0xF0D4,\n    0xEFDC, 0xEEF4, 0xEE20, 0xED67, 0xECD0, 0xEC5F, 0xEC1B, 0xEC82,\n    0xEDD0, 0xEFA2, 0xF198, 0xF353, 0xF471, 0xF491, 0xF3E5, 0xF2E7,\n    0xF1A6, 0xF02E, 0xEE8E, 0xECD3, 0xEB0C, 0xE945, 0xE78E, 0xE5F3,\n    0xE482, 0xE34A, 0xE257, 0xE1B9, 0xE156, 0xE10D, 0xE0DC, 0xE0C1,\n    0xE0B9, 0xE0C4, 0xE0DF, 0xE108, 0xE13D, 0xE17C, 0xE1C3, 0xE211,\n    0xE263, 0xE2B7, 0xE30C, 0xE360, 0xE3AF, 0xE3FA, 0xE43D, 0xE477,\n    0xE4A5, 0xE4C7, 0xE4DB, 0xE4E4, 0xE4E5, 0xE4E1, 0xE4D9, 0xE4D0,\n    0xE4CA, 0xE4C7, 0xE4C7, 0xE4C7, 0xE4C7, 0xE4C7, 0xE4C7, 0xE4C7,\n    0x2486, 0x24B0, 0x2527, 0x25E2, 0x26D8, 0x2801, 0x2953, 0x2AC5,\n    0x2C4E, 0x2DE6, 0x2F82, 0x311B, 0x32A7, 0x341C, 0x3573, 0x36A2,\n    0x37A0, 0x3864, 0x38E5, 0x38BA, 0x37AA, 0x35F4, 0x33D7, 0x3192,\n    0x2F64, 0x2D8C, 0x2BC8, 0x29EB, 0x2853, 0x2760, 0x26FE, 0x26D1,\n    0x26CC, 0x26E2, 0x2704, 0x2725, 0x2737, 0x272C, 0x26F8, 0x26A5,\n    0x264B, 0x25E9, 0x2580, 0x2512, 0x249E, 0x2427, 0x23AB, 0x232C,\n    0x22AC, 0x2229, 0x21A6, 0x2123, 0x20A1, 0x2020, 0x1FA1, 0x1F25,\n    0x1EAD, 0x1E39, 0x1DCA, 0x1D61, 0x1CFF, 0x1CA4, 0x1C50, 0x1C06,\n    0x1BC5, 0x1B8E, 0x1B62, 0x1B42, 0x1B2E, 0x1B27, 0x1B27, 0x1B27,\n    0x1B27, 0x1B27, 0x1B27, 0x1B27, 0xDB55, 0xDBA2, 0xDC7E, 0xDDDB,\n    0xDFA9, 0xE1DB, 0xE461, 0xE72D, 0xEA2F, 0xED59, 0xF09D, 0xF3EB,\n    0xF735, 0xFA6C, 0xFD81, 0x0065, 0x030A, 0x0561, 0x075B, 0x08AF,\n    0x0940, 0x0942, 0x08E9, 0x0868, 0x07F3, 0x07BD, 0x07B6, 0x07AC,\n    0x079F, 0x0790, 0x077F, 0x076D, 0x075A, 0x0747, 0x0735, 0x0724,\n    0x0715, 0x0708, 0x06FE, 0x06F8, 0x06F4, 0x06F0, 0x06ED, 0x06EB,\n    0x06E8, 0x06E7, 0x06E6, 0x06E5, 0x06E4, 0x06E4, 0x06E4, 0x06E5,\n    0x06E5, 0x06E6, 0x06E7, 0x06E8, 0x06EA, 0x06EB, 0x06ED, 0x06EE,\n    0x06F0, 0x06F1, 0x06F2, 0x06F4, 0x06F5, 0x06F6, 0x06F7, 0x06F7,\n    0x06F8, 0x06F8, 0x06F8, 0x06F8, 0x06F8, 0x06F8, 0x06F8, 0x06F8,\n    0x0000, 0x0005, 0x0015, 0x002E, 0x004E, 0x0075, 0x00A1, 0x00D1,\n    0x0104, 0x0137, 0x016B, 0x019D, 0x01CD, 0x01F9, 0x021F, 0x023F,\n    0x0257, 0x0267, 0x026C, 0x0258, 0x0222, 0x01D0, 0x0169, 0x00F1,\n    0x0070, 0xFFED, 0xFF5F, 0xFEC0, 0xFE14, 0xFD5F, 0xFCA4, 0xFBE8,\n    0xFB2E, 0xFA7A, 0xF9D0, 0xF933, 0xF8A7, 0xF831, 0xF7D4, 0xF794,\n    0xF767, 0xF73F, 0xF71E, 0xF702, 0xF6EB, 0xF6D9, 0xF6CC, 0xF6C3,\n    0xF6BE, 0xF6BC, 0xF6BE, 0xF6C2, 0xF6C9, 0xF6D3, 0xF6DE, 0xF6EB,\n    0xF6F9, 0xF708, 0xF718, 0xF728, 0xF738, 0xF748, 0xF757, 0xF765,\n    0xF772, 0xF77E, 0xF787, 0xF78E, 0xF792, 0xF794, 0xF794, 0xF794,\n    0xF794, 0xF794, 0xF794, 0xF794, 0xF34B, 0xF32E, 0xF2DA, 0xF257,\n    0xF1AB, 0xF0DC, 0xEFF3, 0xEEF6, 0xEDEB, 0xECDA, 0xEBC8, 0xEABE,\n    0xE9C2, 0xE8DA, 0xE80E, 0xE765, 0xE6E4, 0xE694, 0xE67A, 0xE746,\n    0xE949, 0xEC02, 0xEEEB, 0xF183, 0xF347, 0xF3B2, 0xF30A, 0xF1F8,\n    0xF08D, 0xEEDB, 0xECF3, 0xEAE6, 0xE8C6, 0xE6A5, 0xE494, 0xE2A4,\n    0xE0E8, 0xDF70, 0xDE4E, 0xDD94, 0xDD1C, 0xDCB4, 0xDC5B, 0xDC11,\n    0xDBD5, 0xDBA6, 0xDB82, 0xDB6A, 0xDB5C, 0xDB58, 0xDB5C, 0xDB68,\n    0xDB7B, 0xDB93, 0xDBB1, 0xDBD3, 0xDBF9, 0xDC21, 0xDC4B, 0xDC76,\n    0xDCA1, 0xDCCB, 0xDCF3, 0xDD18, 0xDD3B, 0xDD58, 0xDD71, 0xDD84,\n    0xDD90, 0xDD94, 0xDD94, 0xDD94, 0xDD94, 0xDD94, 0xDD94, 0xDD94,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFF8,\n    0xFFE2, 0xFFC2, 0xFF9E, 0xFF7A, 0xFF5B, 0xFF44, 0xFF3C, 0xFF46,\n    0xFF67, 0xFFA4, 0x0000, 0x008C, 0x014B, 0x0234, 0x0339, 0x0451,\n    0x0570, 0x068B, 0x0797, 0x0888, 0x0954, 0x09EE, 0x0A53, 0x0A87,\n    0x0A92, 0x0A7C, 0x0A4C, 0x0A09, 0x09BB, 0x0969, 0x08D4, 0x07E7,\n    0x06E8, 0x061C, 0x05C9, 0x05C9, 0x05C9, 0x05C9, 0x05C9, 0x05C9,\n    0x05C9, 0x05C9, 0x05C9, 0x05C9, 0x05C9, 0x05C9, 0x05C9, 0x05C9,\n    0x05C9, 0x05C9, 0x05C9, 0x05C9, 0x05C9, 0x05C9, 0x05C9, 0x05C9,\n    0x05C9, 0x05C9, 0x05C9, 0x05C9, 0x05C9, 0x05C9, 0x05C9, 0x05C9,\n    0x05C9, 0x05C9, 0x05C9, 0x05C9, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x000C, 0x002B, 0x0058, 0x008C, 0x00C0,\n    0x00ED, 0x010C, 0x0119, 0x010A, 0x00DB, 0x0084, 0x0000, 0xFF2F,\n    0xFE06, 0xFC9A, 0xFB00, 0xF94E, 0xF799, 0xF5F7, 0xF47C, 0xF33D,\n    0xF251, 0xF1CC, 0xF1ED, 0xF2C0, 0xF40E, 0xF5A3, 0xF749, 0xF8C9,\n    0xF9EE, 0xFA83, 0xFA10, 0xF8A8, 0xF6E7, 0xF568, 0xF4C6, 0xF4C6,\n    0xF4C6, 0xF4C6, 0xF4C6, 0xF4C6, 0xF4C6, 0xF4C6, 0xF4C6, 0xF4C6,\n    0xF4C6, 0xF4C6, 0xF4C6, 0xF4C6, 0xF4C6, 0xF4C6, 0xF4C6, 0xF4C6,\n    0xF4C6, 0xF4C6, 0xF4C6, 0xF4C6, 0xF4C6, 0xF4C6, 0xF4C6, 0xF4C6,\n    0xF4C6, 0xF4C6, 0xF4C6, 0xF4C6, 0xF4C6, 0xF4C6, 0xF4C6, 0xF4C6,\n    0xA509, 0xA49E, 0xA39B, 0xA25E, 0xA145, 0xA0AE, 0xA0F6, 0xA20D,\n    0xA396, 0xA574, 0xA78D, 0xA9C7, 0xAC06, 0xAE30, 0xB02A, 0xB1DA,\n    0xB324, 0xB3ED, 0xB41C, 0xB38A, 0xB23E, 0xB05B, 0xAE07, 0xAB66,\n    0xA89D, 0xA5D1, 0xA326, 0xA0C2, 0x9EC9, 0x9D60, 0x9CA6, 0x9C87,\n    0x9CDA, 0x9D76, 0x9E32, 0x9EE5, 0x9F65, 0x9F8B, 0x9F25, 0x9E53,\n    0x9D5F, 0x9C95, 0x9C41, 0x9C41, 0x9C41, 0x9C41, 0x9C41, 0x9C41,\n    0x9C41, 0x9C41, 0x9C41, 0x9C41, 0x9C41, 0x9C41, 0x9C41, 0x9C41,\n    0x9C41, 0x9C41, 0x9C41, 0x9C41, 0x9C41, 0x9C41, 0x9C41, 0x9C41,\n    0x9C41, 0x9C41, 0x9C41, 0x9C41, 0x9C41, 0x9C41, 0x9C41, 0x9C41,\n    0x9C41, 0x9C41, 0x9C41, 0x9C41, 0x8001, 0x8001, 0xBE14, 0xBD90,\n    0xBC46, 0xBA99, 0xB8EE, 0xB7A7, 0xB727, 0xB73B, 0xB76B, 0xB7B6,\n    0xB81A, 0xB898, 0xB92E, 0xB9DB, 0xBA9F, 0xBB78, 0xBC66, 0xBD68,\n    0xBE7D, 0xBFD6, 0xC194, 0xC39B, 0xC5CE, 0xC811, 0xCA49, 0xCC58,\n    0xCE23, 0xCF8E, 0xD07C, 0xD0D2, 0xD0D2, 0xD0D2, 0xD0D2, 0xD0D2,\n    0xD0D2, 0xD0D2, 0xD0D2, 0xD0D2, 0xD0D2, 0xD0D2, 0xD0D2, 0xD0D2,\n    0xD0D2, 0xD0D2, 0xD0D2, 0xD0D2, 0xD0D2, 0xD0D2, 0xD0D2, 0xD0D2,\n    0xD0D2, 0xD0D2, 0xD0D2, 0xD0D2, 0xD0D2, 0xD0D2, 0xD0D2, 0xD0D2,\n    0xD0D2, 0xD0D2, 0xD0D2, 0xD0D2, 0xD0D2, 0xD0D2, 0xD0D2, 0xD0D2,\n    0xD0D2, 0xD0D2, 0xD0D2, 0xD0D2, 0xD0D2, 0xD0D2, 0xD0D2, 0xD0D2,\n    0xD0D2, 0xD0D2, 0xCA03, 0xC9B8, 0xC8E5, 0xC79D, 0xC5F5, 0xC401,\n    0xC1D6, 0xBF87, 0xBD29, 0xBAD0, 0xB890, 0xB67E, 0xB4AD, 0xB333,\n    0xB222, 0xB190, 0xB191, 0xB238, 0xB39B, 0xB85D, 0xC1D5, 0xCE26,\n    0xDB6F, 0xE7D2, 0xF171, 0xF66C, 0xF7E9, 0xF864, 0xF7FC, 0xF6D5,\n    0xF50D, 0xF2C8, 0xF026, 0xED47, 0xEA4E, 0xE75A, 0xE48F, 0xE20B,\n    0xDFF1, 0xDE62, 0xDD2D, 0xDC07, 0xDAF1, 0xD9E9, 0xD8ED, 0xD7FB,\n    0xD713, 0xD631, 0xD556, 0xD480, 0xD3AC, 0xD2D9, 0xD207, 0xD132,\n    0xD05B, 0xCF7F, 0xCE9C, 0xCDB2, 0xCCBE, 0xCBBF, 0xCAB4, 0xC99B,\n    0xC82F, 0xC64D, 0xC429, 0xC1F6, 0xBFE7, 0xBE2F, 0xBD01, 0xBC91,\n    0xBC91, 0xBC91, 0xBC91, 0xBC91, 0xBC91, 0xBC91, 0xFFA2, 0xFF7D,\n    0xFF15, 0xFE79, 0xFDB7, 0xFCDD, 0xFBF8, 0xFB18, 0xFA49, 0xF99A,\n    0xF918, 0xF8D3, 0xF8D7, 0xF99E, 0xFB51, 0xFD82, 0xFFC6, 0x01B0,\n    0x02D6, 0x031B, 0x02D2, 0x022F, 0x0168, 0x00B3, 0x0046, 0x0025,\n    0x0028, 0x0040, 0x005C, 0x006C, 0x0070, 0x0075, 0x0079, 0x007D,\n    0x0081, 0x0084, 0x0087, 0x0089, 0x008A, 0x0081, 0x0073, 0x0069,\n    0x005E, 0x0054, 0x0049, 0x0040, 0x0036, 0x002E, 0x0027, 0x0021,\n    0x001A, 0x0014, 0x000F, 0x000A, 0x0005, 0x0002, 0x0000, 0x0000,\n    0x0000, 0x0002, 0x0007, 0x000E, 0x0016, 0x001F, 0x0028, 0x0030,\n    0x0038, 0x003E, 0x0042, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044,\n    0x0044, 0x0044, 0xFF46, 0xFF18, 0xFE99, 0xFDDA, 0xFCEF, 0xFBE8,\n    0xFAD9, 0xF9D2, 0xF8E6, 0xF826, 0xF7A6, 0xF775, 0xF7A7, 0xF8F7,\n    0xFBA3, 0xFF01, 0x0267, 0x052F, 0x06AE, 0x06AA, 0x059E, 0x03F2,\n    0x020F, 0x005B, 0xFF42, 0xFED5, 0xFEC9, 0xFEF6, 0xFF30, 0xFF4E,\n    0xFF50, 0xFF53, 0xFF56, 0xFF58, 0xFF5B, 0xFF5D, 0xFF5F, 0xFF60,\n    0xFF60, 0xFF5A, 0xFF51, 0xFF4D, 0xFF48, 0xFF44, 0xFF40, 0xFF3C,\n    0xFF39, 0xFF36, 0xFF34, 0xFF32, 0xFF31, 0xFF30, 0xFF2F, 0xFF2F,\n    0xFF2F, 0xFF2F, 0xFF2F, 0xFF2F, 0xFF30, 0xFF30, 0xFF31, 0xFF32,\n    0xFF34, 0xFF35, 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0xFF3B, 0xFF3B,\n    0xFF3B, 0xFF3B, 0xFF3B, 0xFF3B, 0xFF3B, 0xFF3B, 0x9A98, 0x9A82,\n    0x9A40, 0x99D0, 0x9932, 0x9864, 0x9765, 0x9634, 0x94D0, 0x9337,\n    0x9168, 0x8F63, 0x8D26, 0x899E, 0x8457, 0x7E3B, 0x783D, 0x7349,\n    0x704C, 0x6FBB, 0x70F2, 0x7332, 0x75BD, 0x77D6, 0x78BE, 0x7827,\n    0x7695, 0x7488, 0x7283, 0x7104, 0x6FF3, 0x6EE4, 0x6DDC, 0x6CE5,\n    0x6C03, 0x6B3E, 0x6A9D, 0x6A27, 0x69E2, 0x6BFA, 0x6F37, 0x7161,\n    0x7398, 0x75CE, 0x77F8, 0x7A08, 0x7BF1, 0x7DA6, 0x7F1A, 0x806B,\n    0x81B0, 0x82E4, 0x83FE, 0x84F8, 0x85C9, 0x8669, 0x86D2, 0x86FB,\n    0x86DC, 0x8652, 0x8553, 0x83F9, 0x8260, 0x80A5, 0x7EDF, 0x7D30,\n    0x7BB1, 0x7A7D, 0x79B1, 0x7966, 0x7966, 0x7966, 0x7966, 0x7966,\n    0x7966, 0x7966, 0xCD46, 0xCD0E, 0xCC70, 0xCB7C, 0xCA41, 0xC8D0,\n    0xC737, 0xC586, 0xC3CD, 0xC21B, 0xC080, 0xBF0C, 0xBDCE, 0xBCD5,\n    0xBC32, 0xBBF4, 0xBC2A, 0xBCE5, 0xBE33, 0xC263, 0xCA9D, 0xD534,\n    0xE079, 0xEABF, 0xF25A, 0xF59B, 0xF57C, 0xF42F, 0xF1E3, 0xEEC4,\n    0xEAFF, 0xE6C3, 0xE23B, 0xDD96, 0xD901, 0xD4A9, 0xD0BB, 0xCD64,\n    0xCAD3, 0xC933, 0xC82A, 0xC73F, 0xC671, 0xC5BD, 0xC522, 0xC49F,\n    0xC432, 0xC3DB, 0xC396, 0xC364, 0xC343, 0xC330, 0xC32B, 0xC332,\n    0xC344, 0xC360, 0xC383, 0xC3AD, 0xC3DC, 0xC40E, 0xC442, 0xC477,\n    0xC4AB, 0xC4DD, 0xC50B, 0xC534, 0xC557, 0xC571, 0xC582, 0xC588,\n    0xC588, 0xC588, 0xC588, 0xC588, 0xC588, 0xC588, 0x0000, 0xFFFE,\n    0xFFF9, 0xFFF3, 0xFFF1, 0xFFF4, 0x0000, 0x0018, 0x003A, 0x0065,\n    0x0094, 0x00C4, 0x00F3, 0x011D, 0x013F, 0x0157, 0x0160, 0x0159,\n    0x013D, 0x0101, 0x00A0, 0x0022, 0xFF93, 0xFEF9, 0xFE5F, 0xFDCC,\n    0xFD4A, 0xFCE2, 0xFC9D, 0xFC84, 0xFC84, 0xFC84, 0xFC84, 0xFC84,\n    0xFC84, 0xFC84, 0xFC84, 0xFC84, 0xFC84, 0xFC84, 0xFC84, 0xFC84,\n    0xFC84, 0xFC84, 0xFC84, 0xFC84, 0xFC84, 0xFC84, 0xFC84, 0xFC84,\n    0xFC84, 0xFC84, 0xFC84, 0xFC84, 0xFC84, 0xFC84, 0xFC84, 0xFC84,\n    0xFC84, 0xFC84, 0xFC84, 0xFC84, 0xFC84, 0xFC84, 0xFC84, 0xFC84,\n    0xFC84, 0xFC84, 0xFC84, 0xFC84, 0xFC84, 0xFC84, 0xFC84, 0xFC84,\n    0xFC84, 0xFC84, 0x0000, 0x000D, 0x002B, 0x0049, 0x0057, 0x0044,\n    0x0000, 0xFF90, 0xFF07, 0xFE6C, 0xFDC2, 0xFD11, 0xFC5D, 0xFBAB,\n    0xFB01, 0xFA65, 0xF9DB, 0xF969, 0xF914, 0xF8E1, 0xF8CB, 0xF8CE,\n    0xF8E4, 0xF908, 0xF935, 0xF966, 0xF995, 0xF9BD, 0xF9D9, 0xF9E3,\n    0xF9E3, 0xF9E3, 0xF9E3, 0xF9E3, 0xF9E3, 0xF9E3, 0xF9E3, 0xF9E3,\n    0xF9E3, 0xF9E3, 0xF9E3, 0xF9E3, 0xF9E3, 0xF9E3, 0xF9E3, 0xF9E3,\n    0xF9E3, 0xF9E3, 0xF9E3, 0xF9E3, 0xF9E3, 0xF9E3, 0xF9E3, 0xF9E3,\n    0xF9E3, 0xF9E3, 0xF9E3, 0xF9E3, 0xF9E3, 0xF9E3, 0xF9E3, 0xF9E3,\n    0xF9E3, 0xF9E3, 0xF9E3, 0xF9E3, 0xF9E3, 0xF9E3, 0xF9E3, 0xF9E3,\n    0xF9E3, 0xF9E3, 0xF9E3, 0xF9E3, 0xF9E3, 0xF9E3, 0x3E12, 0x3DB2,\n    0x3CBD, 0x3B77, 0x3A24, 0x3905, 0x385E, 0x37FE, 0x378E, 0x3717,\n    0x36A3, 0x363C, 0x35ED, 0x35BF, 0x35BC, 0x35EF, 0x3660, 0x371B,\n    0x3828, 0x39D6, 0x3C49, 0x3F4F, 0x42B5, 0x464A, 0x49DC, 0x4D38,\n    0x502C, 0x5286, 0x5414, 0x54A3, 0x54A3, 0x54A3, 0x54A3, 0x54A3,\n    0x54A3, 0x54A3, 0x54A3, 0x54A3, 0x54A3, 0x54A3, 0x54A3, 0x54A3,\n    0x54A3, 0x54A3, 0x54A3, 0x54A3, 0x54A3, 0x54A3, 0x54A3, 0x54A3,\n    0x54A3, 0x54A3, 0x54A3, 0x54A3, 0x54A3, 0x54A3, 0x54A3, 0x54A3,\n    0x54A3, 0x54A3, 0x54A3, 0x54A3, 0x54A3, 0x54A3, 0x54A3, 0x54A3,\n    0x54A3, 0x54A3, 0x54A3, 0x54A3, 0x54A3, 0x54A3, 0x54A3, 0x54A3,\n    0x54A3, 0x54A3, 0x0AA8, 0x0AA8, 0x0AA8, 0x0AA8, 0x0AA8, 0x0AA8,\n    0x0AA8, 0x0AB9, 0x0AE6, 0x0B25, 0x0B6E, 0x0BB7, 0x0BF6, 0x0C23,\n    0x0C34, 0x0C20, 0x0BDD, 0x0B63, 0x0AA8, 0x0978, 0x07BF, 0x059F,\n    0x033B, 0x00B6, 0xFE36, 0xFBDA, 0xF9C7, 0xF820, 0xF709, 0xF6A4,\n    0xF6A4, 0xF6A4, 0xF6A4, 0xF6A4, 0xF6A4, 0xF6A4, 0xF6A4, 0xF6A4,\n    0xF6A4, 0xF6A4, 0xF6A4, 0xF6A4, 0xF6A4, 0xF6A4, 0xF6A4, 0xF6A4,\n    0xF6A4, 0xF6A4, 0xF6A4, 0xF6A4, 0xF6A4, 0xF6A4, 0xF6A4, 0xF6A4,\n    0xF6A4, 0xF6A4, 0xF6A4, 0xF6A4, 0xF6A4, 0xF6A4, 0xF6A4, 0xF6A4,\n    0xF6A4, 0xF6A4, 0xF6A4, 0xF6A4, 0xF6A4, 0xF6A4, 0xF6A4, 0xF6A4,\n    0xF6A4, 0xF6A4, 0xF6A4, 0xF6A4, 0xF6A4, 0xF6A4, 0x0AC9, 0x0AC9,\n    0x0AC9, 0x0AC9, 0x0AC9, 0x0AC9, 0x0AC9, 0x0AB5, 0x0A82, 0x0A3A,\n    0x09E7, 0x0995, 0x094C, 0x0919, 0x0906, 0x091D, 0x0969, 0x09F4,\n    0x0AC9, 0x0C22, 0x0E19, 0x1084, 0x133C, 0x161A, 0x18F4, 0x1BA3,\n    0x1DFF, 0x1FE0, 0x211E, 0x2191, 0x2191, 0x2191, 0x2191, 0x2191,\n    0x2191, 0x2191, 0x2191, 0x2191, 0x2191, 0x2191, 0x2191, 0x2191,\n    0x2191, 0x2191, 0x2191, 0x2191, 0x2191, 0x2191, 0x2191, 0x2191,\n    0x2191, 0x2191, 0x2191, 0x2191, 0x2191, 0x2191, 0x2191, 0x2191,\n    0x2191, 0x2191, 0x2191, 0x2191, 0x2191, 0x2191, 0x2191, 0x2191,\n    0x2191, 0x2191, 0x2191, 0x2191, 0x2191, 0x2191, 0x2191, 0x2191,\n    0x2191, 0x2191, 0xA078, 0xA078, 0xA078, 0xA078, 0xA078, 0xA078,\n    0xA078, 0xA088, 0xA0B0, 0xA0E9, 0xA12A, 0xA16C, 0xA1A5, 0xA1CD,\n    0xA1DD, 0xA1CA, 0xA18F, 0xA121, 0xA078, 0x9F67, 0x9DDA, 0x9BF1,\n    0x99CA, 0x9787, 0x9545, 0x9326, 0x9149, 0x8FCC, 0x8ED1, 0x8E76,\n    0x8E76, 0x8E76, 0x8E76, 0x8E76, 0x8E76, 0x8E76, 0x8E76, 0x8E76,\n    0x8E76, 0x8E76, 0x8E76, 0x8E76, 0x8E76, 0x8E76, 0x8E76, 0x8E76,\n    0x8E76, 0x8E76, 0x8E76, 0x8E76, 0x8E76, 0x8E76, 0x8E76, 0x8E76,\n    0x8E76, 0x8E76, 0x8E76, 0x8E76, 0x8E76, 0x8E76, 0x8E76, 0x8E76,\n    0x8E76, 0x8E76, 0x8E76, 0x8E76, 0x8E76, 0x8E76, 0x8E76, 0x8E76,\n    0x8E76, 0x8E76, 0x8E76, 0x8E76, 0x8E76, 0x8E76, 0x1945, 0x1948,\n    0x1950, 0x195B, 0x1966, 0x1970, 0x1975, 0x1974, 0x196B, 0x1957,\n    0x1936, 0x1906, 0x18C5, 0x1870, 0x1805, 0x1782, 0x16E5, 0x162B,\n    0x1553, 0x1379, 0x1032, 0x0C2F, 0x0820, 0x04B6, 0x02A0, 0x028F,\n    0x074C, 0x10A9, 0x1AE4, 0x223A, 0x26B9, 0x2AEF, 0x2EE0, 0x328C,\n    0x35F7, 0x3923, 0x3C11, 0x3EC4, 0x413E, 0x4381, 0x457C, 0x46FD,\n    0x47D8, 0x47E1, 0x46E9, 0x44C4, 0x41C4, 0x3E60, 0x3AA8, 0x36AA,\n    0x3275, 0x2E17, 0x299E, 0x251A, 0x2098, 0x1C28, 0x17D9, 0x13B7,\n    0x0FD3, 0x0C3B, 0x08FD, 0x0627, 0x0428, 0x0338, 0x0319, 0x038C,\n    0x0452, 0x052D, 0x05DE, 0x0627, 0x0627, 0x0627, 0x0627, 0x0627,\n    0x0627, 0x0627, 0xE9B2, 0xE99D, 0xE95F, 0xE8FD, 0xE87A, 0xE7DB,\n    0xE722, 0xE653, 0xE573, 0xE485, 0xE38D, 0xE28F, 0xE18E, 0xE08E,\n    0xDF93, 0xDEA1, 0xDDBB, 0xDCE5, 0xDC23, 0xDB8D, 0xDB25, 0xDACE,\n    0xDA6B, 0xD9E0, 0xD910, 0xD7DD, 0xD579, 0xD1F6, 0xCE8C, 0xCC73,\n    0xCB85, 0xCAC9, 0xCA3A, 0xC9D2, 0xC98B, 0xC960, 0xC94D, 0xC94A,\n    0xC954, 0xC965, 0xC993, 0xC9F7, 0xCA92, 0xCB60, 0xCC61, 0xCD93,\n    0xCEEC, 0xD05F, 0xD1E8, 0xD381, 0xD528, 0xD6D8, 0xD88B, 0xDA3F,\n    0xDBEE, 0xDD94, 0xDF2D, 0xE0B4, 0xE225, 0xE37C, 0xE4B4, 0xE5CA,\n    0xE68F, 0xE6EC, 0xE6F8, 0xE6CC, 0xE67F, 0xE62A, 0xE5E6, 0xE5CA,\n    0xE5CA, 0xE5CA, 0xE5CA, 0xE5CA, 0xE5CA, 0xE5CA, 0xBD23, 0xBCF9,\n    0xBC84, 0xBBCC, 0xBADB, 0xB9BD, 0xB87A, 0xB71D, 0xB5B0, 0xB43D,\n    0xB2CD, 0xB16B, 0xB020, 0xAEF7, 0xADFA, 0xAD32, 0xACAA, 0xAC6C,\n    0xAC81, 0xAE1F, 0xB1D8, 0xB6BD, 0xBBE3, 0xC05E, 0xC340, 0xC39E,\n    0xBE47, 0xB38D, 0xA7C6, 0x9F48, 0x99F6, 0x94DA, 0x8FFC, 0x8B66,\n    0x8722, 0x8339, 0x7FB2, 0x7C9C, 0x79FE, 0x77E1, 0x76EC, 0x7780,\n    0x793D, 0x7BC4, 0x7EB8, 0x81BD, 0x84C5, 0x8806, 0x8B76, 0x8F0C,\n    0x92BD, 0x9682, 0x9A4F, 0x9E1B, 0xA1DD, 0xA58B, 0xA91B, 0xAC83,\n    0xAFBB, 0xB2B9, 0xB572, 0xB7DD, 0xB997, 0xBA67, 0xBA82, 0xBA1F,\n    0xB973, 0xB8B6, 0xB81C, 0xB7DD, 0xB7DD, 0xB7DD, 0xB7DD, 0xB7DD,\n    0xB7DD, 0xB7DD, 0xF071, 0xF058, 0xF010, 0xEFA0, 0xEF0F, 0xEE63,\n    0xEDA2, 0xECD3, 0xEBFB, 0xEB23, 0xEA4F, 0xE986, 0xE8CF, 0xE82F,\n    0xE7AF, 0xE753, 0xE722, 0xE723, 0xE75C, 0xE876, 0xEAC8, 0xEDDF,\n    0xF148, 0xF491, 0xF745, 0xF8F1, 0xFA22, 0xFA91, 0xF892, 0xF278,\n    0xE8DE, 0xDDC4, 0xD190, 0xC4A8, 0xB773, 0xAA58, 0x9DBD, 0x9209,\n    0x87A3, 0x7EED, 0x7749, 0x6FCB, 0x6872, 0x6140, 0x5A35, 0x5351,\n    0x4C95, 0x4602, 0x3F98, 0x3957, 0x3340, 0x2D53, 0x2792, 0x21FC,\n    0x1C92, 0x1754, 0x1244, 0x0D61, 0x08AC, 0x0426, 0xFFCF, 0xFBA7,\n    0xF8F3, 0xF88E, 0xF9DF, 0xFC4B, 0xFF3A, 0x0210, 0x0435, 0x050F,\n    0x050F, 0x050F, 0x050F, 0x050F, 0x050F, 0x050F, 0x0B16, 0x0B37,\n    0x0B97, 0x0C30, 0x0CFC, 0x0DF5, 0x0F14, 0x1055, 0x11B1, 0x1323,\n    0x14A4, 0x162F, 0x17BD, 0x194A, 0x1ACE, 0x1C44, 0x1DA6, 0x1EEF,\n    0x2017, 0x20FA, 0x2193, 0x220F, 0x229A, 0x2360, 0x2490, 0x2654,\n    0x29DD, 0x2F0F, 0x3427, 0x3763, 0x3902, 0x3A71, 0x3BAD, 0x3CB5,\n    0x3D88, 0x3E25, 0x3E8A, 0x3EB5, 0x3EA6, 0x3E5B, 0x3DE9, 0x3D66,\n    0x3CD3, 0x3C30, 0x3B80, 0x3AC1, 0x39F6, 0x391F, 0x383C, 0x374F,\n    0x3659, 0x355A, 0x3452, 0x3344, 0x3230, 0x3116, 0x2FF7, 0x2ED4,\n    0x2DAF, 0x2C87, 0x2B5E, 0x2A34, 0x28AE, 0x2697, 0x242C, 0x21AA,\n    0x1F4D, 0x1D51, 0x1BF5, 0x1B73, 0x1B73, 0x1B73, 0x1B73, 0x1B73,\n    0x1B73, 0x1B73, 0xBF48, 0xBF0C, 0xBE61, 0xBD54, 0xBBF4, 0xBA4D,\n    0xB86D, 0xB662, 0xB43A, 0xB201, 0xAFC5, 0xAD95, 0xAB7D, 0xA98B,\n    0xA7CC, 0xA64F, 0xA521, 0xA44F, 0xA3E6, 0xA4D9, 0xA7A1, 0xAB9C,\n    0xB025, 0xB499, 0xB854, 0xBAB3, 0xBBFF, 0xBC24, 0xB9EB, 0xB41F,\n    0xAB62, 0xA15D, 0x9665, 0x8ACF, 0x7EED, 0x7319, 0x67A6, 0x5CE7,\n    0x5332, 0x4ADB, 0x4362, 0x3C0D, 0x34DB, 0x2DCB, 0x26DD, 0x2010,\n    0x1964, 0x12D7, 0x0C6A, 0x061A, 0xFFEA, 0xF9D6, 0xF3DE, 0xEE02,\n    0xE841, 0xE29A, 0xDD0E, 0xD79A, 0xD23F, 0xCCFB, 0xC7CF, 0xC2B9,\n    0xBE37, 0xBAB0, 0xB807, 0xB61E, 0xB4D6, 0xB412, 0xB3B2, 0xB399,\n    0xB399, 0xB399, 0xB399, 0xB399, 0xB399, 0xB399, 0xF5A5, 0xF5A5,\n    0xF5A5, 0xF5A5, 0xF5A5, 0xF5A5, 0xF5A5, 0xF592, 0xF55F, 0xF517,\n    0xF4C4, 0xF471, 0xF429, 0xF3F6, 0xF3E2, 0xF3F9, 0xF445, 0xF4D0,\n    0xF5A5, 0xF6FF, 0xF8F6, 0xFB62, 0xFE1B, 0x00F8, 0x03D2, 0x0682,\n    0x08DF, 0x0AC0, 0x0BFE, 0x0C71, 0x0C71, 0x0C71, 0x0C71, 0x0C71,\n    0x0C71, 0x0C71, 0x0C71, 0x0C71, 0x0C71, 0x0C71, 0x0C71, 0x0C71,\n    0x0C71, 0x0C71, 0x0C71, 0x0C71, 0x0C71, 0x0C71, 0x0C71, 0x0C71,\n    0x0C71, 0x0C71, 0x0C71, 0x0C71, 0x0C71, 0x0C71, 0x0C71, 0x0C71,\n    0x0C71, 0x0C71, 0x0C71, 0x0C71, 0x0C71, 0x0C71, 0x0C71, 0x0C71,\n    0x0C71, 0x0C71, 0x0C71, 0x0C71, 0x0C71, 0x0C71, 0x0C71, 0x0C71,\n    0x0C71, 0x0C71, 0xF580, 0xF580, 0xF580, 0xF580, 0xF580, 0xF580,\n    0xF580, 0xF589, 0xF5A1, 0xF5C2, 0xF5E9, 0xF60F, 0xF630, 0xF648,\n    0xF651, 0xF646, 0xF623, 0xF5E3, 0xF580, 0xF4E0, 0xF3F7, 0xF2D8,\n    0xF196, 0xF042, 0xEEF0, 0xEDB2, 0xEC9A, 0xEBBB, 0xEB28, 0xEAF2,\n    0xEAF2, 0xEAF2, 0xEAF2, 0xEAF2, 0xEAF2, 0xEAF2, 0xEAF2, 0xEAF2,\n    0xEAF2, 0xEAF2, 0xEAF2, 0xEAF2, 0xEAF2, 0xEAF2, 0xEAF2, 0xEAF2,\n    0xEAF2, 0xEAF2, 0xEAF2, 0xEAF2, 0xEAF2, 0xEAF2, 0xEAF2, 0xEAF2,\n    0xEAF2, 0xEAF2, 0xEAF2, 0xEAF2, 0xEAF2, 0xEAF2, 0xEAF2, 0xEAF2,\n    0xEAF2, 0xEAF2, 0xEAF2, 0xEAF2, 0xEAF2, 0xEAF2, 0xEAF2, 0xEAF2,\n    0xEAF2, 0xEAF2, 0xEAF2, 0xEAF2, 0xEAF2, 0xEAF2, 0xA064, 0xA064,\n    0xA064, 0xA064, 0xA064, 0xA064, 0xA064, 0xA07D, 0xA0BE, 0xA119,\n    0xA182, 0xA1EB, 0xA247, 0xA288, 0xA2A0, 0xA283, 0xA223, 0xA173,\n    0xA064, 0x9EAE, 0x9C31, 0x991F, 0x95AC, 0x920A, 0x8E6B, 0x8B03,\n    0x8805, 0x85A3, 0x840F, 0x837E, 0x837E, 0x837E, 0x837E, 0x837E,\n    0x837E, 0x837E, 0x837E, 0x837E, 0x837E, 0x837E, 0x837E, 0x837E,\n    0x837E, 0x837E, 0x837E, 0x837E, 0x837E, 0x837E, 0x837E, 0x837E,\n    0x837E, 0x837E, 0x837E, 0x837E, 0x837E, 0x837E, 0x837E, 0x837E,\n    0x837E, 0x837E, 0x837E, 0x837E, 0x837E, 0x837E, 0x837E, 0x837E,\n    0x837E, 0x837E, 0x837E, 0x837E, 0x837E, 0x837E, 0x837E, 0x837E,\n    0x837E, 0x837E, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n};\n\n// 0x06047FE4\nstatic const u16 bowser_seg6_animindex_06047FE4[] = {\n    0x0001, 0x0000, 0x004C, 0x0001, 0x004C, 0x004D, 0x004C, 0x0099, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0C37, 0x0001, 0x0000,\n    0x004C, 0x08A2, 0x004C, 0x08EE, 0x004C, 0x093A,\n    0x0001, 0x05F4, 0x0001, 0x05F5, 0x004C, 0x05F6,\n    0x004C, 0x01CC, 0x004C, 0x0218, 0x004C, 0x0264,\n    0x004C, 0x00E5, 0x004C, 0x0131, 0x004C, 0x017D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0C36, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x004C, 0x02B0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0C35, 0x0001, 0x0000,\n    0x004C, 0x0986, 0x004C, 0x09D2, 0x004C, 0x0A1E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x004C, 0x0642,\n    0x004C, 0x02FC, 0x004C, 0x0348, 0x004C, 0x0394,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0C34, 0x0001, 0x0000,\n    0x004C, 0x068E, 0x004C, 0x06DA, 0x004C, 0x0726,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x004C, 0x03E0,\n    0x0001, 0x01C9, 0x0001, 0x01CA, 0x0001, 0x01CB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0C33, 0x0001, 0x0000,\n    0x004C, 0x0A6A, 0x004C, 0x0AB6, 0x004C, 0x0B02,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x004C, 0x0772,\n    0x004C, 0x042C, 0x004C, 0x0478, 0x004C, 0x04C4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0C32, 0x0001, 0x0000,\n    0x004C, 0x0B4E, 0x004C, 0x0B9A, 0x004C, 0x0BE6,\n    0x004C, 0x07BE, 0x004C, 0x080A, 0x004C, 0x0856,\n    0x004C, 0x0510, 0x004C, 0x055C, 0x004C, 0x05A8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x06048200\nstatic const struct Animation bowser_seg6_anim_06048200 = {\n    0,\n    0,\n    0,\n    0,\n    0x4C,\n    ANIMINDEX_NUMPARTS(bowser_seg6_animindex_06047FE4),\n    bowser_seg6_animvalue_06046774,\n    bowser_seg6_animindex_06047FE4,\n    0,\n};\n"
  },
  {
    "path": "actors/bowser/anims/anim_06049880.inc.c",
    "content": "// 0x06048218\nstatic const s16 bowser_seg6_animvalue_06048218[] = {\n    0x0000, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098,\n    0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0099, 0x0099, 0x0099,\n    0x0099, 0x0099, 0x0099, 0x0099, 0x009A, 0x009A, 0x009A, 0x009A,\n    0x009A, 0x009A, 0x009A, 0x009A, 0x0099, 0x0099, 0x0099, 0x0098,\n    0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098,\n    0x0098, 0x0096, 0x0095, 0x0094, 0x0093, 0x0091, 0x0090, 0x008F,\n    0x008D, 0x008C, 0x008C, 0x008D, 0x008D, 0x008D, 0x008E, 0x008E,\n    0x008E, 0x008E, 0x008F, 0x008F, 0x008F, 0x008F, 0x0090, 0x0090,\n    0x0090, 0x0091, 0x0091, 0x0091, 0x0091, 0x0092, 0x0092, 0x0092,\n    0x0093, 0x0093, 0x0093, 0x0093, 0x0094, 0x0094, 0x0094, 0x0094,\n    0x0095, 0x0095, 0x0095, 0x0096, 0x0096, 0x0096, 0x0096, 0x0097,\n    0x0097, 0x0097, 0x0097, 0x0098, 0x0098, 0xFFE7, 0xFFE9, 0xFFED,\n    0xFFF2, 0xFFF6, 0xFFF6, 0xFFF4, 0xFFF2, 0xFFEF, 0xFFEC, 0xFFE9,\n    0xFFE6, 0xFFE3, 0xFFDF, 0xFFDC, 0xFFD8, 0xFFD5, 0xFFD1, 0xFFCD,\n    0xFFCA, 0xFFC6, 0xFFC3, 0xFFBF, 0xFFBC, 0xFFB9, 0xFFB6, 0xFFB3,\n    0xFFB1, 0xFFAF, 0xFFAE, 0xFFAD, 0xFFAD, 0xFFAE, 0xFFAF, 0xFFB1,\n    0xFFB5, 0xFFB9, 0xFFBF, 0xFFC6, 0xFFCE, 0xFFD7, 0xFFDF, 0xFFE8,\n    0xFFF0, 0xFFF7, 0xFFFE, 0x0002, 0x0005, 0x0007, 0x0008, 0x0009,\n    0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0008, 0x0008,\n    0x0007, 0x0006, 0x0005, 0x0004, 0x0003, 0x0002, 0x0001, 0x0000,\n    0xFFFF, 0xFFFE, 0xFFFD, 0xFFFB, 0xFFFA, 0xFFF9, 0xFFF7, 0xFFF6,\n    0xFFF4, 0xFFF3, 0xFFF2, 0xFFF0, 0xFFEF, 0xFFEE, 0xFFED, 0xFFEC,\n    0xFFEB, 0xFFEA, 0xFFE9, 0xFFE8, 0xFFE8, 0xFFE7, 0xFFE7, 0xFFE7,\n    0xFFE7, 0x0000, 0x0099, 0x01FE, 0x0393, 0x04BE, 0x04E3, 0x0444,\n    0x038A, 0x02B9, 0x01D3, 0x00DA, 0xFFD2, 0xFEBC, 0xFD9A, 0xFC71,\n    0xFB41, 0xFA0E, 0xF8DA, 0xF7A8, 0xF67A, 0xF553, 0xF435, 0xF323,\n    0xF220, 0xF12D, 0xF04E, 0xEF85, 0xEED5, 0xEE3F, 0xEDC7, 0xED70,\n    0xED3A, 0xED2B, 0xED43, 0xEDD7, 0xEF27, 0xF114, 0xF37E, 0xF647,\n    0xF951, 0xFC7C, 0xFFA9, 0x02BA, 0x0591, 0x080E, 0x0A13, 0x0B81,\n    0x0C39, 0x0C83, 0x0CBC, 0x0CE6, 0x0D01, 0x0D0D, 0x0D0C, 0x0CFE,\n    0x0CE3, 0x0CBC, 0x0C8B, 0x0C4F, 0x0C0A, 0x0BBC, 0x0B66, 0x0B09,\n    0x0AA4, 0x0A3A, 0x09CA, 0x0955, 0x08DD, 0x0861, 0x07E3, 0x0763,\n    0x06E1, 0x0660, 0x05DE, 0x055D, 0x04DE, 0x0461, 0x03E7, 0x0371,\n    0x0300, 0x0293, 0x022C, 0x01CC, 0x0173, 0x0121, 0x00D9, 0x0099,\n    0x0064, 0x0039, 0x0019, 0x0006, 0x0000, 0x32C6, 0xC001, 0x32C6,\n    0x0000, 0x0007, 0x0016, 0x0021, 0x001D, 0x0000, 0xFFD1, 0xFFA1,\n    0xFF6E, 0xFF3B, 0xFF06, 0xFED0, 0xFE99, 0xFE61, 0xFE27, 0xFDEE,\n    0xFDB3, 0xFD78, 0xFD3C, 0xFD00, 0xFCC4, 0xFC87, 0xFC4B, 0xFC0E,\n    0xFBD1, 0xFB95, 0xFB59, 0xFB1D, 0xFAC7, 0xFA50, 0xF9D5, 0xF975,\n    0xF94E, 0xF97C, 0xF9ED, 0xFA79, 0xFB1A, 0xFBCC, 0xFC8C, 0xFD55,\n    0xFE22, 0xFEEF, 0xFFB9, 0x007A, 0x012F, 0x01D3, 0x0263, 0x02D9,\n    0x032D, 0x035D, 0x036F, 0x036B, 0x0355, 0x0335, 0x0312, 0x02F1,\n    0x02DA, 0x02C8, 0x02B5, 0x02A1, 0x028B, 0x0274, 0x025C, 0x0243,\n    0x022A, 0x020F, 0x01F4, 0x01D9, 0x01BD, 0x01A1, 0x0185, 0x0169,\n    0x014D, 0x0132, 0x0116, 0x00FC, 0x00E2, 0x00C9, 0x00B1, 0x0099,\n    0x0083, 0x006E, 0x005B, 0x0049, 0x0039, 0x002A, 0x001E, 0x0013,\n    0x000B, 0x0005, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFE,\n    0xFFFC, 0xFFFA, 0xFFF8, 0xFFF6, 0xFFF4, 0xFFF2, 0xFFF0, 0xFFEE,\n    0xFFED, 0xFFEC, 0xFFEB, 0xFFEB, 0xFFEB, 0xFFED, 0xFFF0, 0xFFF3,\n    0xFFF7, 0xFFFA, 0xFFFD, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0001,\n    0x0001, 0x0001, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0001,\n    0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0xA509, 0xA486, 0xA357, 0xA201, 0xA109, 0xA0F6, 0xA189, 0xA22B,\n    0xA2DC, 0xA399, 0xA462, 0xA536, 0xA612, 0xA6F6, 0xA7E0, 0xA8CF,\n    0xA9C2, 0xAAB7, 0xABAE, 0xACA3, 0xAD98, 0xAE89, 0xAF76, 0xB05E,\n    0xB13F, 0xB217, 0xB2E6, 0xB3AA, 0xB483, 0xB570, 0xB63B, 0xB6B0,\n    0xB69A, 0xB5C4, 0xB458, 0xB2AA, 0xB0C4, 0xAEB2, 0xAC80, 0xAA37,\n    0xA7E4, 0xA591, 0xA34B, 0xA11B, 0x9F0D, 0x9D2D, 0x9B85, 0x9A20,\n    0x9916, 0x9869, 0x980B, 0x97EE, 0x9802, 0x983A, 0x9886, 0x98D8,\n    0x9921, 0x9964, 0x99AE, 0x99FF, 0x9A56, 0x9AB3, 0x9B14, 0x9B7A,\n    0x9BE4, 0x9C51, 0x9CC1, 0x9D33, 0x9DA7, 0x9E1C, 0x9E92, 0x9F07,\n    0x9F7D, 0x9FF1, 0xA064, 0xA0D4, 0xA142, 0xA1AD, 0xA214, 0xA277,\n    0xA2D5, 0xA32E, 0xA381, 0xA3CD, 0xA413, 0xA451, 0xA487, 0xA4B4,\n    0xA4D8, 0xA4F3, 0xA503, 0xA509, 0xE442, 0xE45B, 0xE4A1, 0xE513,\n    0xE5AE, 0xE66E, 0xE751, 0xE853, 0xE972, 0xEAAA, 0xEBF9, 0xED5C,\n    0xEECF, 0xF050, 0xF1DC, 0xF370, 0xF508, 0xF6A2, 0xF83B, 0xF9CF,\n    0xFB5D, 0xFCE0, 0xFE56, 0xFFBC, 0x010E, 0x024B, 0x036F, 0x0477,\n    0x0560, 0x0627, 0x06C9, 0x0743, 0x0792, 0x07B4, 0x0796, 0x072F,\n    0x0683, 0x059A, 0x0478, 0x0324, 0x01A5, 0xFFFF, 0xFE39, 0xFC59,\n    0xFA64, 0xF860, 0xF655, 0xF446, 0xF23C, 0xF03A, 0xEE48, 0xEC6C,\n    0xEAAB, 0xE90B, 0xE792, 0xE646, 0xE516, 0xE3EE, 0xE2CE, 0xE1B8,\n    0xE0AF, 0xDFB3, 0xDEC6, 0xDDEA, 0xDD21, 0xDC6B, 0xDBCA, 0xDB41,\n    0xDAD0, 0xDA7A, 0xDA3F, 0xDA21, 0xDA27, 0xDA53, 0xDAA0, 0xDB0A,\n    0xDB8E, 0xDC27, 0xDCD1, 0xDD89, 0xDE49, 0xDF0E, 0xDFD4, 0xE096,\n    0xE151, 0xE200, 0xE2A0, 0xE32B, 0xE39F, 0xE3F7, 0xE42F, 0xE442,\n    0x0254, 0x053E, 0xF8D6, 0x2486, 0x247C, 0x2461, 0x2435, 0x23FA,\n    0x23B1, 0x235B, 0x22FB, 0x2291, 0x221F, 0x21A7, 0x2129, 0x20A7,\n    0x2023, 0x1F9E, 0x1F1A, 0x1E97, 0x1E17, 0x1D9C, 0x1D28, 0x1CBA,\n    0x1C56, 0x1BFC, 0x1BAE, 0x1B6D, 0x1B3B, 0x1B18, 0x1B08, 0x1B0A,\n    0x1B20, 0x1B4C, 0x1B8F, 0x1BEA, 0x1C60, 0x1D2F, 0x1E89, 0x2059,\n    0x228B, 0x250B, 0x27C3, 0x2AA0, 0x2D8D, 0x3076, 0x3346, 0x35E9,\n    0x384A, 0x3A55, 0x3BF5, 0x3D17, 0x3DDB, 0x3E74, 0x3EE5, 0x3F31,\n    0x3F5C, 0x3F69, 0x3F5C, 0x3F38, 0x3F00, 0x3EB7, 0x3E62, 0x3E03,\n    0x3D9E, 0x3D37, 0x3CD0, 0x3C6C, 0x3C11, 0x3BC0, 0x3B7D, 0x3B4C,\n    0x3B2F, 0x3B3F, 0x3B7F, 0x3BD5, 0x3C26, 0x3C58, 0x3C51, 0x3BF7,\n    0x3B2F, 0x39F7, 0x386A, 0x369A, 0x3497, 0x3273, 0x303F, 0x2E0D,\n    0x2BEE, 0x29F3, 0x282D, 0x26AE, 0x2587, 0x24C9, 0x2486, 0xDB55,\n    0xDBCF, 0xDCFD, 0xDE7C, 0xDFED, 0xE0ED, 0xE193, 0xE235, 0xE2D3,\n    0xE36E, 0xE406, 0xE49A, 0xE52C, 0xE5BC, 0xE64A, 0xE6D6, 0xE760,\n    0xE7E9, 0xE871, 0xE8F9, 0xE980, 0xEA07, 0xEA8F, 0xEB17, 0xEB9F,\n    0xEC29, 0xECB4, 0xED41, 0xEDCF, 0xEE60, 0xEEFE, 0xEFB2, 0xF077,\n    0xF149, 0xF225, 0xF305, 0xF3E5, 0xF4C2, 0xF596, 0xF65E, 0xF715,\n    0xF7B7, 0xF840, 0xF8AB, 0xF8F4, 0xF917, 0xF910, 0xF8DA, 0xF884,\n    0xF81E, 0xF7A9, 0xF726, 0xF697, 0xF5FB, 0xF554, 0xF4A3, 0xF3E7,\n    0xF323, 0xF257, 0xF184, 0xF0AA, 0xEFCA, 0xEEE6, 0xEDFE, 0xED13,\n    0xEC25, 0xEB36, 0xEA46, 0xE956, 0xE867, 0xE77B, 0xE690, 0xE5A9,\n    0xE4C7, 0xE3E9, 0xE311, 0xE240, 0xE177, 0xE0B6, 0xDFFE, 0xDF50,\n    0xDEAD, 0xDE15, 0xDD8A, 0xDD0D, 0xDC9D, 0xDC3C, 0xDBEB, 0xDBAB,\n    0xDB7C, 0xDB5F, 0xDB55, 0x0000, 0xFDD5, 0xF89F, 0xF250, 0xECD8,\n    0xEA2B, 0xE997, 0xE91E, 0xE8BE, 0xE877, 0xE847, 0xE82B, 0xE823,\n    0xE82D, 0xE848, 0xE872, 0xE8AA, 0xE8ED, 0xE93B, 0xE992, 0xE9F1,\n    0xEA55, 0xEABE, 0xEB2A, 0xEB98, 0xEC05, 0xEC71, 0xECD9, 0xED3D,\n    0xED9B, 0xEE02, 0xEE7F, 0xEF10, 0xEFB1, 0xF060, 0xF11B, 0xF1DD,\n    0xF2A4, 0xF36D, 0xF435, 0xF4FA, 0xF5B8, 0xF66C, 0xF714, 0xF7AD,\n    0xF833, 0xF8A4, 0xF8FD, 0xF949, 0xF993, 0xF9DB, 0xFA22, 0xFA68,\n    0xFAAC, 0xFAEF, 0xFB31, 0xFB71, 0xFBAF, 0xFBEC, 0xFC27, 0xFC61,\n    0xFC99, 0xFCD0, 0xFD05, 0xFD38, 0xFD6A, 0xFD9A, 0xFDC9, 0xFDF6,\n    0xFE21, 0xFE4A, 0xFE72, 0xFE97, 0xFEBC, 0xFEDE, 0xFEFE, 0xFF1D,\n    0xFF3A, 0xFF55, 0xFF6E, 0xFF85, 0xFF9A, 0xFFAD, 0xFFBE, 0xFFCE,\n    0xFFDB, 0xFFE6, 0xFFF0, 0xFFF7, 0xFFFC, 0xFFFF, 0x0000, 0xF34B,\n    0xF14F, 0xEC89, 0xE6C1, 0xE1C0, 0xDF4D, 0xDEC6, 0xDE58, 0xDE02,\n    0xDDC1, 0xDD96, 0xDD7E, 0xDD77, 0xDD82, 0xDD9B, 0xDDC3, 0xDDF6,\n    0xDE35, 0xDE7E, 0xDECE, 0xDF26, 0xDF83, 0xDFE4, 0xE048, 0xE0AD,\n    0xE112, 0xE176, 0xE1D7, 0xE234, 0xE28B, 0xE2EA, 0xE35E, 0xE3E4,\n    0xE479, 0xE51C, 0xE5C8, 0xE67B, 0xE733, 0xE7ED, 0xE8A6, 0xE95C,\n    0xEA0B, 0xEAB2, 0xEB4C, 0xEBD9, 0xEC54, 0xECBC, 0xED0D, 0xED52,\n    0xED95, 0xEDD7, 0xEE17, 0xEE56, 0xEE94, 0xEED0, 0xEF0B, 0xEF44,\n    0xEF7C, 0xEFB3, 0xEFE8, 0xF01C, 0xF04E, 0xF07F, 0xF0AE, 0xF0DB,\n    0xF108, 0xF132, 0xF15B, 0xF183, 0xF1A9, 0xF1CD, 0xF1F0, 0xF211,\n    0xF231, 0xF24F, 0xF26B, 0xF286, 0xF29F, 0xF2B7, 0xF2CC, 0xF2E0,\n    0xF2F3, 0xF304, 0xF312, 0xF320, 0xF32B, 0xF335, 0xF33D, 0xF343,\n    0xF348, 0xF34B, 0xF34B, 0x0000, 0xFFF8, 0xFFE8, 0xFFDC, 0xFFE0,\n    0x0000, 0x0035, 0x006E, 0x00AD, 0x00EE, 0x0134, 0x017C, 0x01C6,\n    0x0212, 0x025F, 0x02AD, 0x02FC, 0x034A, 0x0398, 0x03E4, 0x042F,\n    0x0478, 0x04BE, 0x0500, 0x0540, 0x057B, 0x05B1, 0x05E3, 0x060F,\n    0x0634, 0x0653, 0x066B, 0x067C, 0x0684, 0x065C, 0x05E7, 0x0537,\n    0x045B, 0x0366, 0x0268, 0x0173, 0x0097, 0xFFB7, 0xFEB8, 0xFDB3,\n    0xFCC3, 0xFC01, 0xFB85, 0xFB47, 0xFB29, 0xFB25, 0xFB35, 0xFB54,\n    0xFB7B, 0xFBA6, 0xFBCE, 0xFBEE, 0xFC09, 0xFC27, 0xFC45, 0xFC66,\n    0xFC88, 0xFCAB, 0xFCD0, 0xFCF5, 0xFD1B, 0xFD42, 0xFD69, 0xFD91,\n    0xFDB9, 0xFDE1, 0xFE08, 0xFE30, 0xFE56, 0xFE7C, 0xFEA2, 0xFEC6,\n    0xFEE9, 0xFF0B, 0xFF2B, 0xFF4A, 0xFF67, 0xFF82, 0xFF9B, 0xFFB1,\n    0xFFC5, 0xFFD7, 0xFFE5, 0xFFF1, 0xFFF9, 0xFFFF, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n    0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0001, 0x0003, 0x0005, 0x0007, 0x0009, 0x000A,\n    0x000C, 0x000C, 0x000C, 0x000B, 0x000B, 0x000B, 0x000C, 0x000F,\n    0x0012, 0x0016, 0x001B, 0x001F, 0x0023, 0x0026, 0x0029, 0x0029,\n    0x0029, 0x0028, 0x0028, 0x0027, 0x0026, 0x0025, 0x0024, 0x0022,\n    0x0021, 0x001F, 0x001E, 0x001C, 0x001B, 0x0019, 0x0017, 0x0016,\n    0x0014, 0x0012, 0x0011, 0x000F, 0x000D, 0x000C, 0x000A, 0x0009,\n    0x0007, 0x0006, 0x0005, 0x0004, 0x0003, 0x0002, 0x0001, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xA438, 0xA3DA, 0xA301, 0xA20E, 0xA162,\n    0xA15E, 0xA1D7, 0xA260, 0xA2F7, 0xA39B, 0xA44A, 0xA503, 0xA5C5,\n    0xA68D, 0xA75A, 0xA82C, 0xA8FF, 0xA9D3, 0xAAA7, 0xAB79, 0xAC46,\n    0xAD0F, 0xADD1, 0xAE8A, 0xAF3A, 0xAFDF, 0xB077, 0xB101, 0xB17C,\n    0xB1E5, 0xB23B, 0xB27D, 0xB2AA, 0xB2BF, 0xB24A, 0xB0FB, 0xAF05,\n    0xAC9E, 0xA9FB, 0xA74E, 0xA4CE, 0xA2AE, 0xA0B8, 0x9EAC, 0x9CB0,\n    0x9AEA, 0x9980, 0x9898, 0x9821, 0x97E9, 0x97E4, 0x9809, 0x984B,\n    0x98A1, 0x98FF, 0x995B, 0x99A9, 0x99EF, 0x9A3B, 0x9A8B, 0x9ADF,\n    0x9B37, 0x9B93, 0x9BF1, 0x9C52, 0x9CB5, 0x9D1A, 0x9D80, 0x9DE7,\n    0x9E4E, 0x9EB5, 0x9F1C, 0x9F82, 0x9FE7, 0xA04A, 0xA0AA, 0xA109,\n    0xA164, 0xA1BC, 0xA210, 0xA25F, 0xA2AA, 0xA2F0, 0xA330, 0xA36B,\n    0xA39F, 0xA3CC, 0xA3F2, 0xA410, 0xA426, 0xA433, 0xA438, 0x8001,\n    0x8001, 0xBE14, 0xCA03, 0xC80F, 0xC373, 0xBE10, 0xB9C9, 0xB87E,\n    0xB97D, 0xBACA, 0xBC5D, 0xBE2E, 0xC034, 0xC266, 0xC4BD, 0xC730,\n    0xC9B5, 0xCC46, 0xCED8, 0xD165, 0xD3E3, 0xD64A, 0xD892, 0xDAB1,\n    0xDCA1, 0xDE57, 0xDFCC, 0xE0F7, 0xE1D0, 0xE24E, 0xE269, 0xE218,\n    0xE111, 0xDF20, 0xDC64, 0xD8F9, 0xD4FE, 0xD08F, 0xCBCA, 0xC6CC,\n    0xC1B3, 0xBC9C, 0xB7A4, 0xB2EA, 0xAE8A, 0xAAA1, 0xA74E, 0xA4AD,\n    0xA2DB, 0xA1F8, 0xA1A8, 0xA180, 0xA17D, 0xA19E, 0xA1E0, 0xA242,\n    0xA2C3, 0xA360, 0xA419, 0xA4EA, 0xA5D2, 0xA6D0, 0xA7E2, 0xA906,\n    0xAA3A, 0xAB7C, 0xACCC, 0xAE26, 0xAF8A, 0xB0F5, 0xB266, 0xB3DB,\n    0xB552, 0xB6C9, 0xB840, 0xB9B3, 0xBB22, 0xBC8A, 0xBDEA, 0xBF40,\n    0xC08A, 0xC1C7, 0xC2F4, 0xC411, 0xC51A, 0xC610, 0xC6EE, 0xC7B5,\n    0xC862, 0xC8F4, 0xC968, 0xC9BD, 0xC9F1, 0xCA03, 0xFFA2, 0xFF9D,\n    0xFF90, 0xFF84, 0xFF80, 0xFF82, 0xFF84, 0xFF87, 0xFF8A, 0xFF8D,\n    0xFF90, 0xFF94, 0xFF97, 0xFF9C, 0xFFA0, 0xFFA4, 0xFFA9, 0xFFAE,\n    0xFFB3, 0xFFB9, 0xFFBE, 0xFFC4, 0xFFCA, 0xFFD1, 0xFFDA, 0xFFE4,\n    0xFFEE, 0xFFF9, 0x0004, 0x000E, 0x0018, 0x0021, 0x0029, 0x002E,\n    0x0032, 0x0035, 0x0038, 0x0039, 0x003A, 0x003B, 0x003B, 0x003B,\n    0x003A, 0x003A, 0x0039, 0x0038, 0x0038, 0x0037, 0x0037, 0x0036,\n    0x0035, 0x0034, 0x0033, 0x0031, 0x0030, 0x002E, 0x002D, 0x002B,\n    0x002A, 0x0029, 0x0028, 0x0027, 0x0027, 0x0027, 0x0027, 0x0027,\n    0x0028, 0x0028, 0x0029, 0x0029, 0x0029, 0x0028, 0x0028, 0x0026,\n    0x0025, 0x0022, 0x001F, 0x001B, 0x0016, 0x000E, 0x0005, 0xFFFB,\n    0xFFF0, 0xFFE4, 0xFFD8, 0xFFCC, 0xFFC1, 0xFFB7, 0xFFAE, 0xFFA8,\n    0xFFA4, 0xFFA2, 0xFF46, 0xFF4A, 0xFF52, 0xFF59, 0xFF5D, 0xFF5C,\n    0xFF5C, 0xFF5B, 0xFF5A, 0xFF58, 0xFF57, 0xFF55, 0xFF54, 0xFF52,\n    0xFF50, 0xFF4E, 0xFF4C, 0xFF4A, 0xFF48, 0xFF47, 0xFF45, 0xFF43,\n    0xFF42, 0xFF31, 0xFF07, 0xFECE, 0xFE8F, 0xFE52, 0xFE22, 0xFE08,\n    0xFE0D, 0xFE3B, 0xFE9B, 0xFF35, 0x0022, 0x0167, 0x02F2, 0x04B0,\n    0x0690, 0x087F, 0x0A6A, 0x0C41, 0x0DEF, 0x0F64, 0x108E, 0x1159,\n    0x11B3, 0x118B, 0x10B6, 0x0F2A, 0x0D08, 0x0A71, 0x0785, 0x0465,\n    0x0130, 0xFE0A, 0xFB10, 0xF864, 0xF627, 0xF478, 0xF379, 0xF308,\n    0xF2E5, 0xF309, 0xF36C, 0xF403, 0xF4C8, 0xF5B1, 0xF6B6, 0xF7CE,\n    0xF8F1, 0xFA16, 0xFB34, 0xFC43, 0xFD3B, 0xFE12, 0xFEC0, 0xFF3D,\n    0xFF92, 0xFFCD, 0xFFF3, 0x0005, 0x0008, 0x0000, 0xFFEC, 0xFFD2,\n    0xFFB4, 0xFF94, 0xFF77, 0xFF5E, 0xFF4D, 0xFF46, 0x9A98, 0x9BE8,\n    0x9EC3, 0xA188, 0xA295, 0xA233, 0xA1BF, 0xA138, 0xA0A1, 0x9FFA,\n    0x9F44, 0x9E7E, 0x9DAA, 0x9CC9, 0x9BDC, 0x9AE2, 0x99DC, 0x98CC,\n    0x97B2, 0x968F, 0x9563, 0x942F, 0x92F3, 0x9184, 0x8FC1, 0x8DC0,\n    0x8B94, 0x8952, 0x870F, 0x84DF, 0x82D7, 0x810B, 0x7F8D, 0x7E77,\n    0x7DB4, 0x7D22, 0x7CBA, 0x7C77, 0x7C54, 0x7C4D, 0x7C5B, 0x7C7A,\n    0x7CA5, 0x7CD5, 0x7D07, 0x7D34, 0x7D58, 0x7D6D, 0x7D7E, 0x7D9A,\n    0x7DBE, 0x7DEA, 0x7E1B, 0x7E50, 0x7E88, 0x7EC1, 0x7EF9, 0x7F2F,\n    0x7F62, 0x7F8F, 0x7FB6, 0x7FCE, 0x7FD1, 0x7FC3, 0x7FAA, 0x7F89,\n    0x7F64, 0x7F3F, 0x7F20, 0x7F09, 0x7EFF, 0x7F06, 0x7F23, 0x7F5A,\n    0x7FAF, 0x8028, 0x80C5, 0x818C, 0x82A9, 0x8435, 0x861C, 0x8848,\n    0x8AA4, 0x8D1B, 0x8F96, 0x9202, 0x9449, 0x9656, 0x9813, 0x996B,\n    0x9A49, 0x9A98, 0x0000, 0x02D5, 0x0996, 0x11A5, 0x1867, 0x1B3C,\n    0x1B1E, 0x1AC6, 0x1A3B, 0x197F, 0x1899, 0x178C, 0x165E, 0x1512,\n    0x13AF, 0x1238, 0x10B2, 0x0F22, 0x0D8D, 0x0BF7, 0x0A65, 0x08DC,\n    0x0760, 0x05F6, 0x04A3, 0x036C, 0x0255, 0x0162, 0x009A, 0x0000,\n    0xFF9B, 0xFF68, 0xFF64, 0xFF88, 0xFFCF, 0x0033, 0x00AF, 0x013E,\n    0x01D9, 0x027B, 0x0320, 0x03C0, 0x0457, 0x04DF, 0x0552, 0x05AB,\n    0x05E5, 0x05F9, 0x05F7, 0x05F0, 0x05E5, 0x05D6, 0x05C3, 0x05AC,\n    0x0592, 0x0574, 0x0554, 0x0530, 0x050A, 0x04E2, 0x04B8, 0x048B,\n    0x045D, 0x042E, 0x03FD, 0x03CB, 0x0398, 0x0364, 0x0331, 0x02FC,\n    0x02C8, 0x0294, 0x0261, 0x022E, 0x01FC, 0x01CB, 0x019C, 0x016E,\n    0x0141, 0x0117, 0x00EF, 0x00C9, 0x00A5, 0x0085, 0x0067, 0x004D,\n    0x0036, 0x0023, 0x0014, 0x0009, 0x0002, 0x0000, 0x0000, 0xFE56,\n    0xFA5C, 0xF59E, 0xF1A4, 0xEFFA, 0xF00B, 0xF03D, 0xF08C, 0xF0F7,\n    0xF17B, 0xF215, 0xF2C2, 0xF380, 0xF44D, 0xF525, 0xF606, 0xF6ED,\n    0xF7D9, 0xF8C5, 0xF9B0, 0xFA97, 0xFB77, 0xFC4E, 0xFD19, 0xFDD5,\n    0xFE80, 0xFF18, 0xFF99, 0x0000, 0x004E, 0x0084, 0x00A6, 0x00B5,\n    0x00B3, 0x00A3, 0x0088, 0x0062, 0x0036, 0x0004, 0xFFD0, 0xFF9C,\n    0xFF68, 0xFF3A, 0xFF11, 0xFEF1, 0xFEDD, 0xFED5, 0xFED6, 0xFED7,\n    0xFED9, 0xFEDC, 0xFEE0, 0xFEE4, 0xFEEA, 0xFEEF, 0xFEF6, 0xFEFD,\n    0xFF04, 0xFF0C, 0xFF14, 0xFF1D, 0xFF26, 0xFF2F, 0xFF39, 0xFF42,\n    0xFF4C, 0xFF56, 0xFF61, 0xFF6B, 0xFF75, 0xFF7F, 0xFF89, 0xFF93,\n    0xFF9D, 0xFFA7, 0xFFB0, 0xFFB9, 0xFFC2, 0xFFCA, 0xFFD2, 0xFFD9,\n    0xFFE0, 0xFFE6, 0xFFEC, 0xFFF1, 0xFFF6, 0xFFFA, 0xFFFD, 0xFFFF,\n    0x0000, 0x0000, 0xCD46, 0xCDC1, 0xCEFE, 0xD0B1, 0xD28D, 0xD446,\n    0xD5E9, 0xD7B4, 0xD9A0, 0xDBA9, 0xDDC8, 0xDFF9, 0xE236, 0xE479,\n    0xE6BD, 0xE8FB, 0xEB30, 0xED54, 0xEF63, 0xF157, 0xF32A, 0xF4D7,\n    0xF659, 0xF7A9, 0xF8C3, 0xF9A0, 0xFA3C, 0xFA90, 0xFA97, 0xFA4C,\n    0xF96A, 0xF7BE, 0xF563, 0xF270, 0xEEFE, 0xEB26, 0xE701, 0xE2A6,\n    0xDE30, 0xD9B5, 0xD54F, 0xD117, 0xCD25, 0xC991, 0xC675, 0xC3E9,\n    0xC205, 0xC0E2, 0xC035, 0xBFA2, 0xBF28, 0xBEC5, 0xBE79, 0xBE43,\n    0xBE21, 0xBE13, 0xBE17, 0xBE2D, 0xBE53, 0xBE89, 0xBECD, 0xBF1F,\n    0xBF7D, 0xBFE7, 0xC05B, 0xC0D8, 0xC15D, 0xC1EA, 0xC27D, 0xC315,\n    0xC3B2, 0xC452, 0xC4F4, 0xC597, 0xC63A, 0xC6DC, 0xC77D, 0xC81A,\n    0xC8B4, 0xC948, 0xC9D7, 0xCA5E, 0xCADE, 0xCB54, 0xCBC0, 0xCC22,\n    0xCC77, 0xCCBE, 0xCCF8, 0xCD23, 0xCD3D, 0xCD46, 0x3F4B, 0x3F4D,\n    0x3F51, 0x3F59, 0x3F63, 0x3F6F, 0x3F7E, 0x3F8F, 0x3FA1, 0x3FB6,\n    0x3FCB, 0x3FE3, 0x3FFB, 0x4014, 0x402E, 0x4049, 0x4064, 0x4080,\n    0x409B, 0x40B6, 0x40D1, 0x40EB, 0x4105, 0x411E, 0x4136, 0x414C,\n    0x4161, 0x4175, 0x4186, 0x4196, 0x41A4, 0x41AF, 0x41B7, 0x41BD,\n    0x41BC, 0x41AF, 0x4199, 0x417C, 0x4159, 0x4131, 0x4107, 0x40DC,\n    0x40B1, 0x4088, 0x4063, 0x4044, 0x402C, 0x401C, 0x4011, 0x4007,\n    0x3FFD, 0x3FF3, 0x3FEA, 0x3FE1, 0x3FD8, 0x3FD0, 0x3FC8, 0x3FC0,\n    0x3FB9, 0x3FB1, 0x3FAA, 0x3FA4, 0x3F9D, 0x3F97, 0x3F91, 0x3F8C,\n    0x3F87, 0x3F82, 0x3F7D, 0x3F78, 0x3F74, 0x3F70, 0x3F6C, 0x3F68,\n    0x3F65, 0x3F62, 0x3F5F, 0x3F5C, 0x3F5A, 0x3F58, 0x3F56, 0x3F54,\n    0x3F52, 0x3F51, 0x3F4F, 0x3F4E, 0x3F4D, 0x3F4D, 0x3F4C, 0x3F4C,\n    0x3F4B, 0x3F4B, 0x0AA8, 0x0AC9, 0xA078, 0x1945, 0x1854, 0x1612,\n    0x1357, 0x10F8, 0x0FCE, 0x0F88, 0x0F44, 0x0F03, 0x0EC3, 0x0E86,\n    0x0E4C, 0x0E13, 0x0DDD, 0x0DAA, 0x0D78, 0x0D49, 0x0D1C, 0x0CF2,\n    0x0CCA, 0x0CA4, 0x0C80, 0x0C5F, 0x0C41, 0x0C24, 0x0C0A, 0x0BF3,\n    0x0BDD, 0x0BCB, 0x0BBA, 0x0BAC, 0x0BA0, 0x0B97, 0x0B90, 0x0B8B,\n    0x0B89, 0x0B89, 0x0B8C, 0x0B91, 0x0B98, 0x0BA2, 0x0BAF, 0x0BBD,\n    0x0BCF, 0x0BE2, 0x0BF8, 0x0C11, 0x0C2C, 0x0C4C, 0x0C73, 0x0CA2,\n    0x0CD7, 0x0D12, 0x0D54, 0x0D9B, 0x0DE7, 0x0E38, 0x0E8D, 0x0EE6,\n    0x0F43, 0x0FA3, 0x1005, 0x106B, 0x10D2, 0x113B, 0x11A5, 0x1210,\n    0x127C, 0x12E8, 0x1353, 0x13BE, 0x1428, 0x1490, 0x14F7, 0x155C,\n    0x15BD, 0x161C, 0x1678, 0x16D0, 0x1724, 0x1773, 0x17BD, 0x1803,\n    0x1842, 0x187C, 0x18AF, 0x18DB, 0x1900, 0x191E, 0x1933, 0x1940,\n    0x1945, 0xE9B2, 0xE743, 0xE16B, 0xDA5E, 0xD44D, 0xD16B, 0xD0E0,\n    0xD05D, 0xCFE3, 0xCF71, 0xCF06, 0xCEA3, 0xCE47, 0xCDF3, 0xCDA6,\n    0xCD60, 0xCD21, 0xCCE9, 0xCCB7, 0xCC8C, 0xCC67, 0xCC48, 0xCC2F,\n    0xCC1B, 0xCC0D, 0xCC05, 0xCC02, 0xCC04, 0xCC0B, 0xCC17, 0xCC27,\n    0xCC3C, 0xCC56, 0xCC73, 0xCC95, 0xCCBA, 0xCCE3, 0xCD10, 0xCD40,\n    0xCD73, 0xCDA9, 0xCDE3, 0xCE1E, 0xCE5D, 0xCE9E, 0xCEE1, 0xCF27,\n    0xCF6E, 0xCFBD, 0xD01A, 0xD084, 0xD0FA, 0xD17B, 0xD206, 0xD29C,\n    0xD33B, 0xD3E2, 0xD492, 0xD548, 0xD604, 0xD6C6, 0xD78D, 0xD859,\n    0xD927, 0xD9F8, 0xDACC, 0xDBA0, 0xDC75, 0xDD4A, 0xDE1E, 0xDEF0,\n    0xDFC0, 0xE08D, 0xE155, 0xE21A, 0xE2D9, 0xE392, 0xE445, 0xE4F0,\n    0xE593, 0xE62D, 0xE6BD, 0xE743, 0xE7BE, 0xE82E, 0xE890, 0xE8E6,\n    0xE92E, 0xE967, 0xE990, 0xE9AA, 0xE9B2, 0xBD23, 0xBEB2, 0xC26D,\n    0xC6EB, 0xCAC3, 0xCC89, 0xCCCB, 0xCD07, 0xCD3C, 0xCD6B, 0xCD94,\n    0xCDB7, 0xCDD5, 0xCDED, 0xCE00, 0xCE0E, 0xCE17, 0xCE1C, 0xCE1C,\n    0xCE17, 0xCE0F, 0xCE03, 0xCDF3, 0xCDE0, 0xCDC9, 0xCDAF, 0xCD92,\n    0xCD73, 0xCD51, 0xCD2C, 0xCD06, 0xCCDD, 0xCCB3, 0xCC87, 0xCC59,\n    0xCC2B, 0xCBFB, 0xCBCB, 0xCB99, 0xCB68, 0xCB36, 0xCB04, 0xCAD2,\n    0xCAA1, 0xCA70, 0xCA3F, 0xCA10, 0xC9E1, 0xC9B1, 0xC97A, 0xC93E,\n    0xC8FE, 0xC8B8, 0xC86F, 0xC821, 0xC7CF, 0xC77B, 0xC723, 0xC6C8,\n    0xC66B, 0xC60B, 0xC5AA, 0xC548, 0xC4E4, 0xC47F, 0xC41A, 0xC3B4,\n    0xC34F, 0xC2EA, 0xC286, 0xC223, 0xC1C1, 0xC161, 0xC102, 0xC0A7,\n    0xC04D, 0xBFF7, 0xBFA4, 0xBF55, 0xBF09, 0xBEC2, 0xBE7F, 0xBE41,\n    0xBE08, 0xBDD5, 0xBDA8, 0xBD80, 0xBD5F, 0xBD45, 0xBD32, 0xBD27,\n    0xBD23, 0xF071, 0xF01E, 0xEF55, 0xEE59, 0xED72, 0xECE3, 0xEC99,\n    0xEC52, 0xEC0E, 0xEBCE, 0xEB90, 0xEB54, 0xEB1B, 0xEAE3, 0xEAAE,\n    0xEA7A, 0xEA48, 0xEA17, 0xE9E7, 0xE9B7, 0xE989, 0xE95A, 0xE92C,\n    0xE8FE, 0xE8D0, 0xE8A1, 0xE872, 0xE842, 0xE811, 0xE7DF, 0xE7A8,\n    0xE76A, 0xE726, 0xE6DE, 0xE694, 0xE648, 0xE5FD, 0xE5B4, 0xE56E,\n    0xE52D, 0xE4F2, 0xE4BF, 0xE496, 0xE476, 0xE464, 0xE45E, 0xE468,\n    0xE483, 0xE4A9, 0xE4D6, 0xE508, 0xE53F, 0xE57B, 0xE5BC, 0xE601,\n    0xE64B, 0xE698, 0xE6E8, 0xE73B, 0xE791, 0xE7EA, 0xE844, 0xE8A0,\n    0xE8FE, 0xE95D, 0xE9BC, 0xEA1D, 0xEA7D, 0xEADD, 0xEB3D, 0xEB9B,\n    0xEBF9, 0xEC55, 0xECB0, 0xED08, 0xED5E, 0xEDB1, 0xEE02, 0xEE4E,\n    0xEE98, 0xEEDD, 0xEF1E, 0xEF5A, 0xEF91, 0xEFC3, 0xEFEF, 0xF015,\n    0xF035, 0xF04F, 0xF062, 0xF06D, 0xF071, 0x0B16, 0x0E2C, 0x159B,\n    0x1EA7, 0x2691, 0x2A9E, 0x2BBE, 0x2CB9, 0x2D91, 0x2E47, 0x2EDE,\n    0x2F58, 0x2FB7, 0x2FFE, 0x302D, 0x3048, 0x3051, 0x3049, 0x3033,\n    0x3012, 0x2FE6, 0x2FB2, 0x2F79, 0x2F3C, 0x2EFE, 0x2EC0, 0x2E85,\n    0x2E50, 0x2E21, 0x2DFB, 0x2DD2, 0x2D99, 0x2D50, 0x2CF9, 0x2C96,\n    0x2C27, 0x2BAE, 0x2B2D, 0x2AA4, 0x2A14, 0x2980, 0x28E8, 0x284E,\n    0x27B2, 0x2717, 0x267E, 0x25E7, 0x2555, 0x24C1, 0x2426, 0x2384,\n    0x22DC, 0x222E, 0x217B, 0x20C3, 0x2007, 0x1F48, 0x1E85, 0x1DBF,\n    0x1CF7, 0x1C2E, 0x1B63, 0x1A98, 0x19CC, 0x1900, 0x1836, 0x176C,\n    0x16A5, 0x15DF, 0x151D, 0x145E, 0x13A2, 0x12EB, 0x1238, 0x118B,\n    0x10E4, 0x1043, 0x0FA8, 0x0F15, 0x0E8A, 0x0E07, 0x0D8C, 0x0D1B,\n    0x0CB4, 0x0C57, 0x0C05, 0x0BBE, 0x0B83, 0x0B54, 0x0B32, 0x0B1D,\n    0x0B16, 0xBF48, 0xBE95, 0xBCE2, 0xBAC6, 0xB8D8, 0xB7B0, 0xB721,\n    0xB699, 0xB618, 0xB59D, 0xB529, 0xB4BA, 0xB450, 0xB3EB, 0xB389,\n    0xB32C, 0xB2D2, 0xB27B, 0xB226, 0xB1D3, 0xB182, 0xB132, 0xB0E2,\n    0xB093, 0xB043, 0xAFF2, 0xAFA0, 0xAF4D, 0xAEF7, 0xAE9F, 0xAE3F,\n    0xADD2, 0xAD5D, 0xACE0, 0xAC60, 0xABDE, 0xAB5D, 0xAAE0, 0xAA69,\n    0xA9FB, 0xA998, 0xA944, 0xA8FF, 0xA8CE, 0xA8B3, 0xA8B0, 0xA8C7,\n    0xA8FC, 0xA947, 0xA99C, 0xA9FC, 0xAA65, 0xAAD7, 0xAB52, 0xABD4,\n    0xAC5E, 0xACEF, 0xAD86, 0xAE22, 0xAEC3, 0xAF69, 0xB012, 0xB0BE,\n    0xB16E, 0xB21F, 0xB2D1, 0xB384, 0xB438, 0xB4EB, 0xB59D, 0xB64D,\n    0xB6FB, 0xB7A7, 0xB84F, 0xB8F4, 0xB994, 0xBA2E, 0xBAC3, 0xBB52,\n    0xBBDA, 0xBC5A, 0xBCD2, 0xBD42, 0xBDA9, 0xBE05, 0xBE57, 0xBE9E,\n    0xBEDA, 0xBF09, 0xBF2C, 0xBF41, 0xBF48, 0xF5A5, 0xF580, 0xA064,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n};\n\n// 0x06049664\nstatic const u16 bowser_seg6_animindex_06049664[] = {\n    0x0001, 0x0000, 0x005C, 0x0001, 0x005C, 0x005D, 0x005C, 0x00B9, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0A25, 0x0001, 0x0000,\n    0x0001, 0x07F2, 0x0001, 0x07F3, 0x0001, 0x07F4,\n    0x0001, 0x050F, 0x0001, 0x0510, 0x0001, 0x0511,\n    0x005C, 0x0118, 0x005C, 0x0174, 0x005C, 0x01D0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0A24, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005C, 0x022C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0A23, 0x0001, 0x0000,\n    0x005C, 0x07F5, 0x005C, 0x0851, 0x005C, 0x08AD,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005C, 0x0512,\n    0x0001, 0x0288, 0x0001, 0x0289, 0x0001, 0x028A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0A22, 0x0001, 0x0000,\n    0x005C, 0x056E, 0x005C, 0x05CA, 0x005C, 0x0626,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005C, 0x028B,\n    0x0001, 0x0115, 0x0001, 0x0116, 0x0001, 0x0117,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0A21, 0x0001, 0x0000,\n    0x005C, 0x0909, 0x005C, 0x0965, 0x005C, 0x09C1,\n    0x005C, 0x0682, 0x005C, 0x06DE, 0x005C, 0x073A,\n    0x005C, 0x02E7, 0x005C, 0x0343, 0x005C, 0x039F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0A20, 0x0001, 0x0000,\n    0x0001, 0x0A1D, 0x0001, 0x0A1E, 0x0001, 0x0A1F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005C, 0x0796,\n    0x005C, 0x03FB, 0x005C, 0x0457, 0x005C, 0x04B3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x06049880\nstatic const struct Animation bowser_seg6_anim_06049880 = {\n    0,\n    0,\n    0,\n    0,\n    0x5C,\n    ANIMINDEX_NUMPARTS(bowser_seg6_animindex_06049664),\n    bowser_seg6_animvalue_06048218,\n    bowser_seg6_animindex_06049664,\n    0,\n};\n"
  },
  {
    "path": "actors/bowser/anims/anim_0604A8E4.inc.c",
    "content": "// 0x06049898\nstatic const s16 bowser_seg6_animvalue_06049898[] = {\n    0x0000, 0x0098, 0x0097, 0x0093, 0x008D, 0x0088, 0x0083, 0x008C,\n    0x0099, 0x00AC, 0x00C1, 0x00EE, 0x0112, 0x012C, 0x0140, 0x0153,\n    0x0163, 0x0170, 0x0178, 0x017B, 0x0177, 0x0170, 0x016A, 0x0164,\n    0x015C, 0x0152, 0x0144, 0x0132, 0x011B, 0x00FE, 0x00D9, 0x00AC,\n    0x0098, 0x0095, 0x0093, 0x0092, 0x0093, 0x0093, 0x0094, 0x0096,\n    0x0096, 0x0097, 0x0098, 0x0098, 0x0098, 0x0098, 0xFFE7, 0xFFEA,\n    0xFFF2, 0xFFFD, 0x0006, 0x000D, 0x000C, 0x0007, 0x0001, 0x0000,\n    0xFFFF, 0xFFFF, 0xFFFE, 0xFFFD, 0xFFFD, 0xFFFC, 0xFFFC, 0xFFFB,\n    0xFFFB, 0xFFFA, 0xFFFA, 0xFFF9, 0xFFF9, 0xFFF8, 0xFFF8, 0xFFF8,\n    0xFFF7, 0xFFF7, 0xFFF7, 0xFFF7, 0xFFF7, 0xFFF7, 0x0000, 0x0006,\n    0x000A, 0x0003, 0xFFFF, 0xFFFA, 0xFFF4, 0xFFEF, 0xFFEB, 0xFFE8,\n    0xFFE7, 0xFFE7, 0xFFE7, 0x0000, 0x011A, 0x03B0, 0x06A8, 0x08EA,\n    0x095E, 0x0849, 0x06B9, 0x04C7, 0x028C, 0x0020, 0xFD9D, 0xFB19,\n    0xF8AD, 0xF672, 0xF480, 0xF2F0, 0xF1D9, 0xF156, 0xF165, 0xF1ED,\n    0xF2DF, 0xF42D, 0xF5C7, 0xF79F, 0xF9A5, 0xFBCB, 0xFE01, 0x0039,\n    0x0264, 0x0473, 0x079E, 0x0BF6, 0x0FB7, 0x111C, 0x1017, 0x0E05,\n    0x0B43, 0x082F, 0x0527, 0x0288, 0x00B1, 0x0000, 0x0000, 0x0000,\n    0x32C6, 0xC001, 0x32C6, 0x0000, 0x0000, 0x0002, 0x0004, 0x0003,\n    0x0000, 0xFFF6, 0xFFE7, 0xFFD7, 0xFFC9, 0xFFCE, 0xFFCC, 0xFFCD,\n    0xFFC9, 0xFFBB, 0xFFAD, 0xFFAC, 0xFFC4, 0x0000, 0x005C, 0x00CB,\n    0x0147, 0x01CF, 0x025F, 0x02F3, 0x0388, 0x041C, 0x04AA, 0x0530,\n    0x05AA, 0x0616, 0x066F, 0x06B3, 0x06DE, 0x06ED, 0x06A0, 0x05D8,\n    0x04BC, 0x0376, 0x0231, 0x0115, 0x004C, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xFFFF, 0xFFFE, 0xFFFE, 0x0000, 0x0005, 0x000D,\n    0x0016, 0x0020, 0x0031, 0x0036, 0x0035, 0x002D, 0x0023, 0x0017,\n    0x000D, 0x0004, 0x0000, 0xFFFE, 0xFFFD, 0xFFFC, 0xFFFB, 0xFFFB,\n    0xFFFB, 0xFFFB, 0xFFFC, 0xFFFC, 0xFFFD, 0xFFFE, 0xFFFF, 0xFFFF,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xA509, 0xA323, 0x9EB2,\n    0x9992, 0x95A1, 0x94BD, 0x9821, 0x9ED4, 0xA760, 0xB04F, 0xBFF7,\n    0xC802, 0xCB2C, 0xC991, 0xC6B6, 0xC325, 0xBF68, 0xBC07, 0xB98E,\n    0xB7BB, 0xB5F0, 0xB42F, 0xB279, 0xB0CE, 0xAF30, 0xADA0, 0xAC1F,\n    0xAAAE, 0xA94D, 0xA7FF, 0xA6C3, 0xA59B, 0xA487, 0xA38A, 0xA2A3,\n    0xA216, 0xA20D, 0xA265, 0xA2FB, 0xA3AD, 0xA457, 0xA4D6, 0xA509,\n    0xA509, 0xA509, 0xE442, 0xE314, 0xE04A, 0xDD01, 0xDA5A, 0xD8E7,\n    0xD872, 0xD8BB, 0xD95F, 0xDA06, 0xDA5C, 0xDA59, 0xDA32, 0xD9EA,\n    0xD984, 0xD901, 0xD7B5, 0xD66D, 0xD5E9, 0xD574, 0xD515, 0xD4D1,\n    0xD4AE, 0xD4B0, 0xD500, 0xD5A6, 0xD67A, 0xD752, 0xD806, 0xD86D,\n    0xD85E, 0xD7B0, 0xD492, 0xCF21, 0xCA16, 0xC82B, 0xCAD5, 0xD064,\n    0xD6D0, 0xDC14, 0xDFFC, 0xE308, 0xE442, 0xE442, 0xE442, 0x0254,\n    0x0265, 0x0291, 0x02CF, 0x0316, 0x035C, 0x0398, 0x03D1, 0x040D,\n    0x0447, 0x0474, 0x048F, 0x0496, 0x048F, 0x047E, 0x0468, 0x0450,\n    0x043B, 0x0428, 0x0413, 0x03FD, 0x03E6, 0x03CD, 0x03B4, 0x039B,\n    0x0381, 0x0367, 0x034D, 0x0334, 0x031A, 0x0302, 0x02EA, 0x02D3,\n    0x02BE, 0x02AA, 0x0297, 0x0286, 0x0278, 0x026B, 0x0261, 0x025A,\n    0x0255, 0x0254, 0x0254, 0x0254, 0x053E, 0x04E8, 0x0406, 0x02C8,\n    0x015E, 0xFFF9, 0xFEC6, 0xFDA5, 0xFC6F, 0xFB4C, 0xFA62, 0xF9D9,\n    0xF9B7, 0xF9DB, 0xFA31, 0xFAA2, 0xFB1B, 0xFB87, 0xFBE9, 0xFC53,\n    0xFCC4, 0xFD3B, 0xFDB7, 0xFE36, 0xFEB8, 0xFF3C, 0xFFC1, 0x0044,\n    0x00C8, 0x0149, 0x01C6, 0x0240, 0x02B4, 0x0322, 0x0388, 0x03E7,\n    0x043C, 0x0486, 0x04C6, 0x04F9, 0x051F, 0x0536, 0x053E, 0x053E,\n    0x053E, 0xF8D6, 0xF891, 0xF7DC, 0xF6DE, 0xF5BC, 0xF49E, 0xF3A8,\n    0xF2C1, 0xF1C9, 0xF0E0, 0xF025, 0xEFB8, 0xEF9D, 0xEFBA, 0xEFFE,\n    0xF058, 0xF0B9, 0xF10F, 0xF15E, 0xF1B3, 0xF20D, 0xF26C, 0xF2CF,\n    0xF335, 0xF39D, 0xF407, 0xF471, 0xF4DB, 0xF544, 0xF5AB, 0xF610,\n    0xF671, 0xF6CE, 0xF726, 0xF778, 0xF7C3, 0xF807, 0xF843, 0xF876,\n    0xF89E, 0xF8BD, 0xF8CF, 0xF8D6, 0xF8D6, 0xF8D6, 0x2486, 0x240E,\n    0x22E9, 0x2180, 0x2038, 0x1F79, 0x1FAA, 0x20B2, 0x2225, 0x23EA,\n    0x25E9, 0x280A, 0x2A36, 0x2C53, 0x2E4A, 0x3004, 0x3166, 0x325B,\n    0x32C8, 0x32D6, 0x32BB, 0x327B, 0x321A, 0x319B, 0x3103, 0x3053,\n    0x2F91, 0x2EBF, 0x2DE1, 0x2CFA, 0x2C0F, 0x2B22, 0x2A37, 0x2952,\n    0x2876, 0x27A6, 0x26E7, 0x263C, 0x25A8, 0x252E, 0x24D3, 0x249A,\n    0x2486, 0x2486, 0x2486, 0xDB55, 0xDC0D, 0xDDEF, 0xE095, 0xE39A,\n    0xE697, 0xE926, 0xEB8E, 0xEE23, 0xF090, 0xF283, 0xF3A8, 0xF3EF,\n    0xF3A2, 0xF2ED, 0xF1FB, 0xF0F9, 0xF013, 0xEF41, 0xEE5F, 0xED6D,\n    0xEC70, 0xEB68, 0xEA58, 0xE943, 0xE829, 0xE70E, 0xE5F3, 0xE4DB,\n    0xE3C8, 0xE2BC, 0xE1B8, 0xE0C0, 0xDFD6, 0xDEFB, 0xDE32, 0xDD7C,\n    0xDCDD, 0xDC56, 0xDBE9, 0xDB98, 0xDB67, 0xDB55, 0xDB55, 0xDB55,\n    0x0000, 0xFFC5, 0xFF27, 0xFE49, 0xFD4D, 0xFC53, 0xFB7D, 0xFAB3,\n    0xF9DB, 0xF910, 0xF86D, 0xF80E, 0xF7F6, 0xF80F, 0xF84B, 0xF89A,\n    0xF8EE, 0xF939, 0xF97E, 0xF9C8, 0xFA17, 0xFA6A, 0xFAC0, 0xFB19,\n    0xFB73, 0xFBCF, 0xFC2C, 0xFC88, 0xFCE4, 0xFD3E, 0xFD95, 0xFDEA,\n    0xFE3B, 0xFE88, 0xFECF, 0xFF11, 0xFF4C, 0xFF81, 0xFFAD, 0xFFD0,\n    0xFFEB, 0xFFFB, 0x0000, 0x0000, 0x0000, 0xF34B, 0xF2E5, 0xF1D7,\n    0xF05A, 0xEEA9, 0xECFC, 0xEB8D, 0xEA34, 0xE8C1, 0xE765, 0xE64D,\n    0xE5AA, 0xE581, 0xE5AC, 0xE612, 0xE69A, 0xE72A, 0xE7AB, 0xE821,\n    0xE8A0, 0xE927, 0xE9B5, 0xEA49, 0xEAE1, 0xEB7D, 0xEC1B, 0xECBA,\n    0xED58, 0xEDF5, 0xEE8F, 0xEF26, 0xEFB7, 0xF042, 0xF0C5, 0xF140,\n    0xF1B1, 0xF217, 0xF270, 0xF2BC, 0xF2F9, 0xF326, 0xF342, 0xF34B,\n    0xF34B, 0xF34B, 0x0000, 0xFFFF, 0xFFFD, 0xFFFC, 0xFFFC, 0x0000,\n    0x000B, 0x001C, 0x002F, 0x003E, 0x003A, 0x003A, 0x0039, 0x003D,\n    0x0051, 0x0063, 0x0066, 0x004A, 0x0000, 0xFF8E, 0xFF06, 0xFE6C,\n    0xFDC4, 0xFD13, 0xFC5C, 0xFBA3, 0xFAED, 0xFA3D, 0xF998, 0xF900,\n    0xF87C, 0xF80E, 0xF7BA, 0xF785, 0xF772, 0xF7D0, 0xF8C8, 0xFA27,\n    0xFBB9, 0xFD4B, 0xFEAA, 0xFFA2, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0002, 0x0003, 0x0003, 0x0000, 0xFFF8, 0xFFEC, 0xFFDD,\n    0xFFCF, 0xFFC0, 0xFFB9, 0xFFB9, 0xFFC4, 0xFFD2, 0xFFE1, 0xFFEF,\n    0xFFFA, 0x0000, 0x0002, 0x0004, 0x0006, 0x0007, 0x0007, 0x0007,\n    0x0007, 0x0006, 0x0005, 0x0004, 0x0003, 0x0002, 0x0001, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0xA509, 0xA317, 0x9E84, 0x9934,\n    0x950B, 0x93EC, 0x9730, 0x9DCD, 0xA612, 0xAE50, 0xBA3F, 0xC289,\n    0xC62E, 0xC3D2, 0xBFE6, 0xBB2B, 0xB660, 0xB243, 0xAF95, 0xADEE,\n    0xAC66, 0xAAFC, 0xA9AE, 0xA87B, 0xA761, 0xA65F, 0xA573, 0xA49B,\n    0xA3D6, 0xA322, 0xA27E, 0xA1E8, 0xA15F, 0xA0E1, 0xA06C, 0xA049,\n    0xA0A6, 0xA15E, 0xA24A, 0xA344, 0xA426, 0xA4CA, 0xA509, 0xA509,\n    0xA509, 0x8001, 0x8001, 0xC0EE, 0xC1D2, 0xC3D6, 0xC606, 0xC76A,\n    0xC70B, 0xC3E2, 0xBE94, 0xB8AB, 0xB3B4, 0xB139, 0xB126, 0xB22A,\n    0xB3F4, 0xB635, 0xB89E, 0xBAE0, 0xBCA9, 0xBDAC, 0xBE1F, 0xBE70,\n    0xBEA3, 0xBEBD, 0xBEC1, 0xBEB2, 0xBE96, 0xBE70, 0xBE44, 0xBE15,\n    0xBDE9, 0xBDC1, 0xBDA4, 0xBD94, 0xBD95, 0xBDAC, 0xBDEB, 0xBE56,\n    0xBEDD, 0xBF70, 0xBFFF, 0xC079, 0xC0CE, 0xC0EE, 0xC0EE, 0xC0EE,\n    0xCA03, 0xC8E5, 0xC604, 0xC218, 0xBDD8, 0xB9FC, 0xB73B, 0xB54E,\n    0xB3B2, 0xB2C5, 0xB2E4, 0xB46B, 0xB816, 0xBDA6, 0xC406, 0xCA1F,\n    0xCEDB, 0xD124, 0xD1C0, 0xD230, 0xD27A, 0xD29E, 0xD2A1, 0xD285,\n    0xD24E, 0xD1FF, 0xD19A, 0xD124, 0xD09E, 0xD00D, 0xCF73, 0xCED3,\n    0xCE31, 0xCD90, 0xCCF3, 0xCC5C, 0xCBCF, 0xCB50, 0xCAE0, 0xCA84,\n    0xCA3F, 0xCA13, 0xCA03, 0xCA03, 0xCA03, 0xFFA2, 0xFFA8, 0xFFB7,\n    0xFFCB, 0xFFDE, 0xFFED, 0xFFF4, 0xFFF3, 0xFFF0, 0xFFEB, 0xFFE5,\n    0xFFDE, 0xFFD7, 0xFFCE, 0xFFC5, 0xFFBD, 0xFFB5, 0xFFAD, 0xFFA6,\n    0xFF9E, 0xFF96, 0xFF95, 0xFF99, 0xFF9D, 0xFFA2, 0xFFA8, 0xFFAE,\n    0xFFB4, 0xFFBB, 0xFFC3, 0xFFCA, 0xFFD2, 0xFFEC, 0xFFD8, 0xFFBC,\n    0xFFAA, 0xFFA4, 0xFFA1, 0xFF9F, 0xFFA0, 0xFFA1, 0xFFA2, 0xFFA2,\n    0xFFA2, 0xFFA2, 0xFF46, 0xFF45, 0xFF41, 0xFF3C, 0xFF36, 0xFF32,\n    0xFF31, 0xFF31, 0xFF31, 0xFF33, 0xFF34, 0xFF36, 0xFF38, 0xFF3A,\n    0xFF3C, 0xFF3E, 0xFF41, 0xFF43, 0xFF45, 0xFF48, 0xFF4B, 0xFF4C,\n    0xFF4A, 0xFF49, 0xFF46, 0xFF44, 0xFF41, 0xFF3F, 0xFF3C, 0xFF39,\n    0xFF37, 0xFF34, 0xFF31, 0xFF38, 0xFF41, 0xFF46, 0xFF48, 0xFF49,\n    0xFF48, 0xFF48, 0xFF47, 0xFF47, 0xFF46, 0xFF46, 0xFF46, 0x9A98,\n    0x9960, 0x9652, 0x9259, 0x8E5F, 0x8B4B, 0x8A09, 0x8A36, 0x8AC8,\n    0x8BB1, 0x8CE3, 0x8E4F, 0x8FE6, 0x9199, 0x935B, 0x951C, 0x96CD,\n    0x9861, 0x99C7, 0x9B77, 0x9D1B, 0x9D75, 0x9CAD, 0x9BBF, 0x9AAE,\n    0x997E, 0x9833, 0x96D1, 0x955B, 0x93D4, 0x9242, 0x90A7, 0x8BA9,\n    0x8FDC, 0x95A6, 0x9962, 0x9A8C, 0x9B26, 0x9B53, 0x9B37, 0x9AF7,\n    0x9AB6, 0x9A98, 0x9A98, 0x9A98, 0xCD46, 0xCC12, 0xC8FC, 0xC4CD,\n    0xC050, 0xBC4D, 0xB98E, 0xB7AB, 0xB617, 0xB564, 0xB624, 0xB8E7,\n    0xBED5, 0xC796, 0xD179, 0xDAD0, 0xE1EA, 0xE519, 0xE597, 0xE5C6,\n    0xE5AD, 0xE551, 0xE4B9, 0xE3EA, 0xE2EC, 0xE1C5, 0xE07B, 0xDF13,\n    0xDD96, 0xDC08, 0xDA70, 0xD8D5, 0xD73C, 0xD5AD, 0xD42C, 0xD2C2,\n    0xD173, 0xD047, 0xCF43, 0xCE6D, 0xCDCD, 0xCD69, 0xCD46, 0xCD46,\n    0xCD46, 0x428E, 0x4341, 0x44D6, 0x4685, 0x4783, 0x4709, 0x4431,\n    0x3F80, 0x3A4F, 0x35F8, 0x33D4, 0x33D0, 0x34C5, 0x366C, 0x387D,\n    0x3AB0, 0x3CBE, 0x3E5F, 0x3F4B, 0x3FB5, 0x3FFF, 0x402E, 0x4044,\n    0x4047, 0x4039, 0x401E, 0x3FFA, 0x3FD1, 0x3FA6, 0x3F7C, 0x3F59,\n    0x3F3E, 0x3F31, 0x3F34, 0x3F4B, 0x3F8A, 0x3FF5, 0x407C, 0x410F,\n    0x419E, 0x4218, 0x426E, 0x428E, 0x428E, 0x428E, 0x09A6, 0x09AF,\n    0x09C9, 0x09EF, 0x0A1F, 0x0A54, 0x0A94, 0x0ADF, 0x0B31, 0x0B82,\n    0x0BCE, 0x0C18, 0x0C68, 0x0CB8, 0x0D07, 0x0D51, 0x0D92, 0x0DC7,\n    0x0DEE, 0x0E0C, 0x0E2C, 0x0E4D, 0x0E6D, 0x0E8C, 0x0EA9, 0x0EC3,\n    0x0ED9, 0x0EEA, 0x0EF6, 0x0EFB, 0x0EF9, 0x0EEF, 0x0EDC, 0x0EBF,\n    0x0E97, 0x0E3D, 0x0D9E, 0x0CD1, 0x0BF1, 0x0B16, 0x0A5B, 0x09D7,\n    0x09A6, 0x09A6, 0x09A6, 0x0BB1, 0x0BAE, 0x0BA4, 0x0B8B, 0x0B5E,\n    0x0B19, 0x0AAB, 0x0A19, 0x0979, 0x08E0, 0x0864, 0x07EB, 0x075A,\n    0x06C2, 0x0637, 0x05C8, 0x0589, 0x058B, 0x05E1, 0x067D, 0x0744,\n    0x082E, 0x0935, 0x0A52, 0x0B7F, 0x0CB4, 0x0DEC, 0x0F20, 0x1048,\n    0x115F, 0x125D, 0x133C, 0x13F5, 0x1482, 0x14DC, 0x14A7, 0x13B3,\n    0x123E, 0x1084, 0x0EC3, 0x0D37, 0x0C1C, 0x0BB1, 0x0BB1, 0x0BB1,\n    0x9CC7, 0x9CDE, 0x9D25, 0x9DA0, 0x9E52, 0x9F3E, 0xA088, 0xA22C,\n    0xA3F7, 0xA5B6, 0xA738, 0xA8B0, 0xAA5C, 0xAC17, 0xADBA, 0xAF1F,\n    0xB01F, 0xB096, 0xB05B, 0xAF96, 0xAE8C, 0xAD46, 0xABCD, 0xAA2C,\n    0xA86C, 0xA695, 0xA4B2, 0xA2CC, 0xA0ED, 0x9F1D, 0x9D66, 0x9BD2,\n    0x9A6A, 0x9938, 0x9844, 0x97D6, 0x980E, 0x98BD, 0x99B5, 0x9AC7,\n    0x9BC4, 0x9C7E, 0x9CC7, 0x9CC7, 0x9CC7, 0x1945, 0x17AF, 0x13A8,\n    0x0E4D, 0x08B8, 0x0404, 0x014D, 0x01F8, 0x054B, 0x0931, 0x0B93,\n    0x0A5C, 0x0439, 0xFA90, 0xEF5E, 0xE4A2, 0xDC59, 0xD882, 0xD7F6,\n    0xD82D, 0xD911, 0xDA8C, 0xDC89, 0xDEF2, 0xE1B2, 0xE4B2, 0xE7DD,\n    0xEB1E, 0xEE5F, 0xF18A, 0xF48A, 0xF749, 0xFA38, 0xFDB7, 0x0199,\n    0x05B1, 0x09D1, 0x0DCC, 0x1174, 0x149B, 0x1714, 0x18B1, 0x1945,\n    0x1945, 0x1945, 0xE9B2, 0xE8D5, 0xE695, 0xE379, 0xE007, 0xDCC5,\n    0xDA38, 0xD882, 0xD73F, 0xD629, 0xD4FE, 0xD37A, 0xD15A, 0xCEC6,\n    0xCC12, 0xC997, 0xC7AB, 0xC6A6, 0xC637, 0xC5D6, 0xC587, 0xC54D,\n    0xC52B, 0xC524, 0xC53C, 0xC576, 0xC5D5, 0xC65D, 0xC711, 0xC7F4,\n    0xC909, 0xCA54, 0xCC37, 0xCEF0, 0xD247, 0xD607, 0xD9F7, 0xDDE2,\n    0xE191, 0xE4CE, 0xE761, 0xE915, 0xE9B2, 0xE9B2, 0xE9B2, 0xBD23,\n    0xBF52, 0xC4DF, 0xCC4C, 0xD417, 0xDAC2, 0xDECC, 0xDEFA, 0xDC4D,\n    0xD89D, 0xD5C7, 0xD5A4, 0xD933, 0xDF3B, 0xE648, 0xECE4, 0xF19A,\n    0xF2F5, 0xF1BD, 0xEFC7, 0xED2D, 0xEA0B, 0xE67E, 0xE2A1, 0xDE8F,\n    0xDA65, 0xD63E, 0xD236, 0xCE69, 0xCAF2, 0xC7EC, 0xC575, 0xC37C,\n    0xC1DA, 0xC086, 0xBF78, 0xBEA9, 0xBE10, 0xBDA5, 0xBD60, 0xBD38,\n    0xBD27, 0xBD23, 0xBD23, 0xBD23, 0xF071, 0xF104, 0xF279, 0xF46E,\n    0xF67D, 0xF843, 0xF95C, 0xF992, 0xF927, 0xF86F, 0xF7BC, 0xF761,\n    0xF756, 0xF75F, 0xF77E, 0xF7B8, 0xF810, 0xF88A, 0xF92C, 0xF9F5,\n    0xFADD, 0xFBD9, 0xFCE1, 0xFDEB, 0xFEEF, 0xFFE3, 0x00BD, 0x0175,\n    0x0202, 0x025A, 0x0275, 0x0249, 0x019A, 0x004C, 0xFE84, 0xFC66,\n    0xFA19, 0xF7C0, 0xF581, 0xF382, 0xF1E6, 0xF0D4, 0xF071, 0xF071,\n    0xF071, 0x0B16, 0x0BC7, 0x0D94, 0x1014, 0x12DD, 0x1585, 0x17A5,\n    0x1907, 0x19FB, 0x1AE0, 0x1C17, 0x1DFE, 0x20F1, 0x24B4, 0x28C5,\n    0x2CA3, 0x2FCA, 0x31B9, 0x32DF, 0x33FD, 0x350B, 0x3603, 0x36DF,\n    0x3796, 0x3823, 0x387F, 0x38A3, 0x3887, 0x3826, 0x3777, 0x3676,\n    0x351A, 0x32D8, 0x2F5E, 0x2AFA, 0x25F8, 0x20A7, 0x1B52, 0x1648,\n    0x11D6, 0x0E4A, 0x0BF0, 0x0B16, 0x0B16, 0x0B16, 0xBF48, 0xC03C,\n    0xC2A5, 0xC5D9, 0xC930, 0xCBFE, 0xCD9B, 0xCDE4, 0xCD4B, 0xCBFD,\n    0xCA29, 0xC800, 0xC530, 0xC197, 0xBDAD, 0xB9E8, 0xB6C0, 0xB4AC,\n    0xB355, 0xB214, 0xB0EA, 0xAFDB, 0xAEE7, 0xAE11, 0xAD5A, 0xACC3,\n    0xAC50, 0xAC02, 0xABD9, 0xABD9, 0xAC04, 0xAC5A, 0xAD24, 0xAE92,\n    0xB07B, 0xB2BA, 0xB529, 0xB7A1, 0xB9FC, 0xBC14, 0xBDC2, 0xBEE0,\n    0xBF48, 0xBF48, 0xBF48, 0xF717, 0xF6FC, 0xF6B8, 0xF65D, 0xF5FB,\n    0xF5A5, 0xF55A, 0xF50C, 0xF4BF, 0xF476, 0xF433, 0xF3F1, 0xF3A9,\n    0xF360, 0xF31A, 0xF2DC, 0xF2AB, 0xF28C, 0xF282, 0xF288, 0xF292,\n    0xF2A1, 0xF2B4, 0xF2CA, 0xF2E5, 0xF303, 0xF323, 0xF347, 0xF36E,\n    0xF396, 0xF3C1, 0xF3EE, 0xF41C, 0xF44B, 0xF47C, 0xF4BE, 0xF51B,\n    0xF588, 0xF5FA, 0xF666, 0xF6C1, 0xF700, 0xF717, 0xF717, 0xF717,\n    0xF442, 0xF454, 0xF484, 0xF4CB, 0xF521, 0xF580, 0xF5F3, 0xF67E,\n    0xF711, 0xF79A, 0xF808, 0xF875, 0xF8F8, 0xF980, 0xF9FD, 0xFA5C,\n    0xFA8E, 0xFA81, 0xFA24, 0xF983, 0xF8B7, 0xF7C9, 0xF6BE, 0xF59E,\n    0xF46E, 0xF336, 0xF1FD, 0xF0C8, 0xEF9E, 0xEE86, 0xED87, 0xECA7,\n    0xEBED, 0xEB60, 0xEB05, 0xEB3B, 0xEC30, 0xEDA8, 0xEF65, 0xF12A,\n    0xF2B9, 0xF3D6, 0xF442, 0xF442, 0xF442, 0x9B0B, 0x9B65, 0x9C4F,\n    0x9D95, 0x9F03, 0xA064, 0xA1CF, 0xA366, 0xA508, 0xA695, 0xA7ED,\n    0xA941, 0xAAC4, 0xAC52, 0xADC7, 0xAF01, 0xAFDD, 0xB036, 0xAFEA,\n    0xAF1C, 0xAE0E, 0xACC8, 0xAB53, 0xA9B8, 0xA7FF, 0xA631, 0xA457,\n    0xA27A, 0xA0A3, 0x9ED9, 0x9D27, 0x9B95, 0x9A2B, 0x98F2, 0x97F4,\n    0x976B, 0x9775, 0x97E9, 0x98A1, 0x9974, 0x9A3C, 0x9AD1, 0x9B0B,\n    0x9B0B, 0x9B0B, 0x3FFF, 0x0000, 0x04BD, 0x1097, 0x1FFF, 0x2F67,\n    0x3B41, 0x3FFF, 0x3A5F, 0x2C8E, 0x1B28, 0x0AC5, 0x0000, 0xFB09,\n    0xF888, 0xF7CC, 0xF822, 0xF8D8, 0xF93D, 0xF945, 0xF95C, 0xF982,\n    0xF9B4, 0xF9F1, 0xFA38, 0xFA88, 0xFADF, 0xFB3C, 0xFB9E, 0xFC04,\n    0xFC6B, 0xFCD3, 0xFD3A, 0xFD9F, 0xFE01, 0xFE5E, 0xFEB5, 0xFF05,\n    0xFF4C, 0xFF8A, 0xFFBC, 0xFFE1, 0xFFF8, 0x0000, 0x0000, 0x0000,\n    0x3FFF, 0x0000, 0x04BD, 0x1097, 0x1FFF, 0x2F67, 0x3B41, 0x3FFF,\n    0x3A5F, 0x2C8E, 0x1B28, 0x0AC5, 0x0000, 0xFB09, 0xF888, 0xF7CC,\n    0xF822, 0xF8D8, 0xF93D, 0xF945, 0xF95C, 0xF982, 0xF9B4, 0xF9F1,\n    0xFA38, 0xFA88, 0xFADF, 0xFB3C, 0xFB9E, 0xFC04, 0xFC6B, 0xFCD3,\n    0xFD3A, 0xFD9F, 0xFE01, 0xFE5E, 0xFEB5, 0xFF05, 0xFF4C, 0xFF8A,\n    0xFFBC, 0xFFE1, 0xFFF8, 0x0000, 0x0000, 0x0000, 0xC001, 0x3FFF,\n    0xC001, 0x0000, 0xFB43, 0xEF69, 0xE001, 0xD099, 0xC4BF, 0xC001,\n    0xC5A1, 0xD372, 0xE4D8, 0xF53B, 0x0000, 0x04F7, 0x0778, 0x0834,\n    0x07DE, 0x0728, 0x06C3, 0x06BB, 0x06A4, 0x067E, 0x064C, 0x060F,\n    0x05C8, 0x0578, 0x0521, 0x04C4, 0x0462, 0x03FC, 0x0395, 0x032D,\n    0x02C6, 0x0261, 0x01FF, 0x01A2, 0x014B, 0x00FB, 0x00B4, 0x0076,\n    0x0044, 0x001F, 0x0008, 0x0000, 0x0000, 0x0000, 0x3FFF, 0x0000,\n    0xFB43, 0xEF69, 0xE001, 0xD099, 0xC4BF, 0xC001, 0xC5A1, 0xD372,\n    0xE4D8, 0xF53B, 0x0000, 0x04F7, 0x0778, 0x0834, 0x07DE, 0x0728,\n    0x06C3, 0x06BB, 0x06A4, 0x067E, 0x064C, 0x060F, 0x05C8, 0x0578,\n    0x0521, 0x04C4, 0x0462, 0x03FC, 0x0395, 0x032D, 0x02C6, 0x0261,\n    0x01FF, 0x01A2, 0x014B, 0x00FB, 0x00B4, 0x0076, 0x0044, 0x001F,\n    0x0008, 0x0000, 0x0000, 0x0000, 0xC001, 0x3FFF, 0xC001, 0x3FFF,\n};\n\n// 0x0604A6C8\nstatic const u16 bowser_seg6_animindex_0604A6C8[] = {\n    0x0001, 0x0000, 0x002D, 0x0001, 0x002D, 0x002E, 0x002D, 0x005B, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0717, 0x0001, 0x0000,\n    0x002D, 0x043E, 0x002D, 0x046B, 0x002D, 0x0498,\n    0x0001, 0x0301, 0x0001, 0x0302, 0x002D, 0x0303,\n    0x002D, 0x008B, 0x002D, 0x00B8, 0x002D, 0x00E5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0714, 0x0001, 0x0715, 0x0001, 0x0716,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002D, 0x0112,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x002D, 0x06B9, 0x0001, 0x06E6, 0x002D, 0x06E7,\n    0x002D, 0x04C5, 0x002D, 0x04F2, 0x002D, 0x051F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002D, 0x0330,\n    0x002D, 0x013F, 0x002D, 0x016C, 0x002D, 0x0199,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x06B6, 0x0001, 0x06B7, 0x0001, 0x06B8,\n    0x002D, 0x035D, 0x002D, 0x038A, 0x002D, 0x03B7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002D, 0x01C6,\n    0x0001, 0x0088, 0x0001, 0x0089, 0x0001, 0x008A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x002D, 0x065B, 0x0001, 0x0688, 0x002D, 0x0689,\n    0x002D, 0x054C, 0x002D, 0x0579, 0x002D, 0x05A6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002D, 0x03E4,\n    0x002D, 0x01F3, 0x002D, 0x0220, 0x002D, 0x024D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x065A, 0x0001, 0x0000,\n    0x002D, 0x05D3, 0x002D, 0x0600, 0x002D, 0x062D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002D, 0x0411,\n    0x002D, 0x027A, 0x002D, 0x02A7, 0x002D, 0x02D4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x0604A8E4\nstatic const struct Animation bowser_seg6_anim_0604A8E4 = {\n    0,\n    0,\n    0,\n    0,\n    0x2D,\n    ANIMINDEX_NUMPARTS(bowser_seg6_animindex_0604A6C8),\n    bowser_seg6_animvalue_06049898,\n    bowser_seg6_animindex_0604A6C8,\n    0,\n};\n"
  },
  {
    "path": "actors/bowser/anims/anim_0604B178.inc.c",
    "content": "// 0x0604A8FC\nstatic const s16 bowser_seg6_animvalue_0604A8FC[] = {\n    0x0000, 0x0098, 0x0097, 0x0095, 0x0093, 0x0092, 0x0092, 0x0093,\n    0x0093, 0x0094, 0x0094, 0x0095, 0x0095, 0x0096, 0x0096, 0x0097,\n    0x0097, 0x0098, 0x0098, 0x0098, 0x0098, 0xFFE2, 0xFFE7, 0xFFEE,\n    0xFFF7, 0xFFFE, 0xFFFE, 0xFFFC, 0xFFFA, 0xFFF8, 0xFFF6, 0xFFF4,\n    0xFFF2, 0xFFF0, 0xFFEE, 0xFFEC, 0xFFEA, 0xFFE9, 0xFFE8, 0xFFE7,\n    0xFFE7, 0x009C, 0x0323, 0x08BB, 0x0E62, 0x111C, 0x10FB, 0x102B,\n    0x0ED2, 0x0D18, 0x0B23, 0x0919, 0x0721, 0x0561, 0x0401, 0x02EA,\n    0x01F3, 0x0125, 0x0088, 0x0023, 0x0000, 0x32C6, 0xC001, 0x32C6,\n    0x017B, 0x0259, 0x043E, 0x061E, 0x06ED, 0x06C5, 0x0678, 0x060E,\n    0x058B, 0x04F4, 0x0451, 0x03A7, 0x02FB, 0x0253, 0x01B5, 0x0127,\n    0x00AE, 0x0051, 0x0015, 0x0000, 0xFF1A, 0xFF3C, 0xFF87, 0xFFD6,\n    0x0000, 0x000A, 0x0012, 0x0017, 0x001A, 0x001A, 0x001A, 0x0018,\n    0x0015, 0x0011, 0x000D, 0x0009, 0x0005, 0x0002, 0x0000, 0x0000,\n    0xAB3D, 0xA9F5, 0xA71A, 0xA42A, 0xA2A3, 0xA262, 0xA244, 0xA243,\n    0xA25B, 0xA289, 0xA2C7, 0xA311, 0xA363, 0xA3B8, 0xA40D, 0xA45C,\n    0xA4A1, 0xA4D8, 0xA4FC, 0xA509, 0xEB3E, 0xE8F3, 0xE31F, 0xDB59,\n    0xD335, 0xCC49, 0xC82B, 0xC876, 0xCC3D, 0xD146, 0xD557, 0xD7D1,\n    0xD9E4, 0xDC14, 0xDEDE, 0xE1C6, 0xE3DB, 0xE491, 0xE475, 0xE442,\n    0x02EA, 0x02E9, 0x02E5, 0x02E0, 0x02D9, 0x02D0, 0x02C6, 0x02BC,\n    0x02B0, 0x02A5, 0x0299, 0x028D, 0x0282, 0x0277, 0x026E, 0x0265,\n    0x025E, 0x0259, 0x0255, 0x0254, 0x0240, 0x0246, 0x0257, 0x0273,\n    0x0297, 0x02C3, 0x02F5, 0x032B, 0x0365, 0x03A1, 0x03DD, 0x0419,\n    0x0453, 0x0489, 0x04BB, 0x04E6, 0x050B, 0x0526, 0x0538, 0x053E,\n    0xF671, 0xF676, 0xF684, 0xF69A, 0xF6B7, 0xF6DA, 0xF702, 0xF72D,\n    0xF75B, 0xF78B, 0xF7BB, 0xF7EB, 0xF819, 0xF845, 0xF86D, 0xF890,\n    0xF8AD, 0xF8C3, 0xF8D1, 0xF8D6, 0x2B22, 0x2B14, 0x2AEE, 0x2AB1,\n    0x2A61, 0x2A00, 0x2992, 0x291A, 0x289B, 0x2817, 0x2791, 0x270D,\n    0x268E, 0x2616, 0x25A8, 0x2547, 0x24F7, 0x24BA, 0x2494, 0x2486,\n    0xE1B8, 0xE1AB, 0xE186, 0xE14B, 0xE0FD, 0xE0A0, 0xE036, 0xDFC2,\n    0xDF47, 0xDEC7, 0xDE46, 0xDDC7, 0xDD4C, 0xDCD8, 0xDC6E, 0xDC10,\n    0xDBC3, 0xDB88, 0xDB63, 0xDB55, 0xFDEA, 0xFDEE, 0xFDFB, 0xFE0E,\n    0xFE27, 0xFE46, 0xFE68, 0xFE8E, 0xFEB7, 0xFEE0, 0xFF0A, 0xFF34,\n    0xFF5C, 0xFF82, 0xFFA5, 0xFFC3, 0xFFDD, 0xFFF0, 0xFFFC, 0x0000,\n    0xEFB7, 0xEFBE, 0xEFD3, 0xEFF4, 0xF020, 0xF054, 0xF08F, 0xF0D1,\n    0xF116, 0xF15D, 0xF1A5, 0xF1ED, 0xF232, 0xF273, 0xF2AE, 0xF2E3,\n    0xF30E, 0xF32F, 0xF344, 0xF34B, 0xFB05, 0xFA69, 0xF91A, 0xF7DB,\n    0xF772, 0xF7C9, 0xF841, 0xF8D7, 0xF983, 0xFA3F, 0xFB06, 0xFBD2,\n    0xFC9C, 0xFD5E, 0xFE13, 0xFEB5, 0xFF3D, 0xFFA6, 0xFFE9, 0x0000,\n    0x0157, 0x0125, 0x00B4, 0x003F, 0x0000, 0xFFF1, 0xFFE5, 0xFFDE,\n    0xFFDA, 0xFFD8, 0xFFD9, 0xFFDC, 0xFFE1, 0xFFE6, 0xFFEC, 0xFFF2,\n    0xFFF8, 0xFFFC, 0xFFFF, 0x0000, 0xA8B4, 0xA772, 0xA4A9, 0xA1D3,\n    0xA06C, 0xA050, 0xA05B, 0xA088, 0xA0D1, 0xA130, 0xA1A1, 0xA21D,\n    0xA29F, 0xA322, 0xA3A0, 0xA413, 0xA476, 0xA4C4, 0xA4F7, 0xA509,\n    0x8001, 0x8001, 0xBDA4, 0xBDA4, 0xBDA5, 0xBDA7, 0xBDAC, 0xBDB3,\n    0xBDBA, 0xBDC2, 0xBDCB, 0xBDD4, 0xBDDE, 0xBDE7, 0xBDF0, 0xBDF8,\n    0xBE00, 0xBE07, 0xBE0C, 0xBE11, 0xBE13, 0xBE14, 0xCED3, 0xCECA,\n    0xCEAD, 0xCE81, 0xCE47, 0xCE00, 0xCDB0, 0xCD59, 0xCCFC, 0xCC9C,\n    0xCC3B, 0xCBDB, 0xCB7E, 0xCB26, 0xCAD6, 0xCA90, 0xCA56, 0xCA29,\n    0xCA0D, 0xCA03, 0xFFD2, 0xFFE0, 0xFFEC, 0xFFDE, 0xFFC9, 0xFFB5,\n    0xFFAA, 0xFFA6, 0xFFA3, 0xFFA1, 0xFFA0, 0xFF9F, 0xFF9F, 0xFF9F,\n    0xFFA0, 0xFFA0, 0xFFA1, 0xFFA2, 0xFFA2, 0xFFA2, 0xFF34, 0xFF32,\n    0xFF31, 0xFF36, 0xFF3C, 0xFF43, 0xFF46, 0xFF47, 0xFF48, 0xFF49,\n    0xFF49, 0xFF49, 0xFF49, 0xFF48, 0xFF48, 0xFF47, 0xFF47, 0xFF47,\n    0xFF46, 0xFF46, 0x90A7, 0x8DCB, 0x8BA9, 0x8E76, 0x92D0, 0x9705,\n    0x9962, 0x9A27, 0x9AB8, 0x9B1B, 0x9B57, 0x9B72, 0x9B72, 0x9B5E,\n    0x9B3C, 0x9B12, 0x9AE6, 0x9ABF, 0x9AA3, 0x9A98, 0xD8D5, 0xD8BD,\n    0xD879, 0xD80F, 0xD783, 0xD6DA, 0xD61A, 0xD548, 0xD469, 0xD382,\n    0xD299, 0xD1B2, 0xD0D3, 0xD001, 0xCF41, 0xCE98, 0xCE0C, 0xCDA1,\n    0xCD5D, 0xCD46, 0x3F3E, 0x3F43, 0x3F4D, 0x3F52, 0x3F4B, 0x3F3A,\n    0x3F24, 0x3F0C, 0x3EF2, 0x3ED7, 0x3EBB, 0x3E9F, 0x3E84, 0x3E6A,\n    0x3E52, 0x3E3D, 0x3E2B, 0x3E1E, 0x3E15, 0x3E12, 0x0EEF, 0x0EEC,\n    0x0EE0, 0x0EC5, 0x0E97, 0x0E58, 0x0E0F, 0x0DBF, 0x0D6A, 0x0D12,\n    0x0CB8, 0x0C5F, 0x0C09, 0x0BB7, 0x0B6D, 0x0B2B, 0x0AF5, 0x0ACB,\n    0x0AB1, 0x0AA8, 0x133C, 0x1392, 0x1445, 0x14DB, 0x14DC, 0x1458,\n    0x13B4, 0x12F5, 0x1223, 0x1142, 0x105A, 0x0F71, 0x0E8B, 0x0DB1,\n    0x0CE7, 0x0C34, 0x0B9E, 0x0B2C, 0x0AE3, 0x0AC9, 0x9BD2, 0x9B38,\n    0x99EC, 0x98AF, 0x9844, 0x9896, 0x9908, 0x9997, 0x9A3B, 0x9AF0,\n    0x9BAF, 0x9C72, 0x9D34, 0x9DEF, 0x9E9D, 0x9F39, 0x9FBC, 0xA021,\n    0xA061, 0xA078, 0xF749, 0xF78F, 0xF856, 0xF98F, 0xFB2C, 0xFD1C,\n    0xFF50, 0x01B9, 0x0449, 0x06EF, 0x099E, 0x0C44, 0x0ED4, 0x113E,\n    0x1372, 0x1562, 0x16FF, 0x1838, 0x18FF, 0x1945, 0xCA54, 0xCA94,\n    0xCB4C, 0xCC6D, 0xCDEA, 0xCFB3, 0xD1BD, 0xD3F7, 0xD654, 0xD8C6,\n    0xDB40, 0xDDB2, 0xE00F, 0xE24A, 0xE453, 0xE61C, 0xE799, 0xE8BA,\n    0xE972, 0xE9B2, 0xC575, 0xC564, 0xC533, 0xC4E7, 0xC482, 0xC408,\n    0xC37E, 0xC2E7, 0xC246, 0xC1A0, 0xC0F8, 0xC052, 0xBFB1, 0xBF1A,\n    0xBE90, 0xBE16, 0xBDB1, 0xBD64, 0xBD34, 0xBD23, 0x0249, 0x0224,\n    0x01BC, 0x0117, 0x003F, 0xFF3B, 0xFE13, 0xFCCE, 0xFB76, 0xFA11,\n    0xF8A9, 0xF745, 0xF5EC, 0xF4A8, 0xF380, 0xF27B, 0xF1A3, 0xF0FE,\n    0xF096, 0xF071, 0x351A, 0x34C3, 0x33CD, 0x324A, 0x304C, 0x2DE7,\n    0x2B2D, 0x2832, 0x2507, 0x21C0, 0x1E70, 0x1B29, 0x17FE, 0x1502,\n    0x1249, 0x0FE3, 0x0DE6, 0x0C63, 0x0B6C, 0x0B16, 0xAC5A, 0xAC81,\n    0xACF0, 0xAD9E, 0xAE84, 0xAF98, 0xB0D2, 0xB22A, 0xB398, 0xB512,\n    0xB690, 0xB80A, 0xB977, 0xBACF, 0xBC0A, 0xBD1E, 0xBE04, 0xBEB2,\n    0xBF21, 0xBF48, 0xF3EE, 0xF400, 0xF429, 0xF459, 0xF47C, 0xF494,\n    0xF4AD, 0xF4C7, 0xF4E2, 0xF4FC, 0xF517, 0xF530, 0xF548, 0xF55E,\n    0xF572, 0xF583, 0xF592, 0xF59C, 0xF5A3, 0xF5A5, 0xECA7, 0xEC50,\n    0xEB9B, 0xEB03, 0xEB05, 0xEB8F, 0xEC3B, 0xED01, 0xEDDC, 0xEEC6,\n    0xEFB7, 0xF0AA, 0xF198, 0xF27B, 0xF34D, 0xF407, 0xF4A2, 0xF519,\n    0xF565, 0xF580, 0x9B95, 0x9AF7, 0x99A4, 0x9860, 0x97F4, 0x9848,\n    0x98BE, 0x9951, 0x99FA, 0x9AB4, 0x9B78, 0x9C41, 0x9D09, 0x9DC9,\n    0x9E7C, 0x9F1C, 0x9FA3, 0xA00A, 0xA04D, 0xA064, 0x3FFF, 0xFD3A,\n    0xFD3F, 0xFD50, 0xFD69, 0xFD8B, 0xFDB4, 0xFDE2, 0xFE14, 0xFE4A,\n    0xFE81, 0xFEB9, 0xFEF1, 0xFF26, 0xFF59, 0xFF87, 0xFFAF, 0xFFD1,\n    0xFFEB, 0xFFFB, 0x0000, 0x3FFF, 0xFD3A, 0xFD3F, 0xFD50, 0xFD69,\n    0xFD8B, 0xFDB4, 0xFDE2, 0xFE14, 0xFE4A, 0xFE81, 0xFEB9, 0xFEF1,\n    0xFF26, 0xFF59, 0xFF87, 0xFFAF, 0xFFD1, 0xFFEB, 0xFFFB, 0x0000,\n    0xC001, 0x3FFF, 0xC001, 0x02C6, 0x02C1, 0x02B0, 0x0297, 0x0275,\n    0x024C, 0x021E, 0x01EC, 0x01B6, 0x017F, 0x0147, 0x010F, 0x00DA,\n    0x00A7, 0x0079, 0x0051, 0x002F, 0x0015, 0x0005, 0x0000, 0x3FFF,\n    0x02C6, 0x02C1, 0x02B0, 0x0297, 0x0275, 0x024C, 0x021E, 0x01EC,\n    0x01B6, 0x017F, 0x0147, 0x010F, 0x00DA, 0x00A7, 0x0079, 0x0051,\n    0x002F, 0x0015, 0x0005, 0x0000, 0xC001, 0x3FFF, 0xC001, 0x3FFF,\n};\n\n// 0x0604AF5C\nstatic const u16 bowser_seg6_animindex_0604AF5C[] = {\n    0x0001, 0x0000, 0x0014, 0x0001, 0x0014, 0x0015, 0x0014, 0x0029, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x032F, 0x0001, 0x0000,\n    0x0014, 0x01E6, 0x0014, 0x01FA, 0x0014, 0x020E,\n    0x0001, 0x0158, 0x0001, 0x0159, 0x0014, 0x015A,\n    0x0014, 0x0040, 0x0014, 0x0054, 0x0014, 0x0068,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x032C, 0x0001, 0x032D, 0x0001, 0x032E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x007C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0014, 0x0303, 0x0001, 0x0317, 0x0014, 0x0318,\n    0x0014, 0x0222, 0x0014, 0x0236, 0x0014, 0x024A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x016E,\n    0x0014, 0x0090, 0x0014, 0x00A4, 0x0014, 0x00B8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0300, 0x0001, 0x0301, 0x0001, 0x0302,\n    0x0014, 0x0182, 0x0014, 0x0196, 0x0014, 0x01AA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x00CC,\n    0x0001, 0x003D, 0x0001, 0x003E, 0x0001, 0x003F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0014, 0x02D7, 0x0001, 0x02EB, 0x0014, 0x02EC,\n    0x0014, 0x025E, 0x0014, 0x0272, 0x0014, 0x0286,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x01BE,\n    0x0014, 0x00E0, 0x0014, 0x00F4, 0x0014, 0x0108,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x02D6, 0x0001, 0x0000,\n    0x0014, 0x029A, 0x0014, 0x02AE, 0x0014, 0x02C2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x01D2,\n    0x0014, 0x011C, 0x0014, 0x0130, 0x0014, 0x0144,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x0604B178\nstatic const struct Animation bowser_seg6_anim_0604B178 = {\n    0,\n    0,\n    0,\n    0,\n    0x14,\n    ANIMINDEX_NUMPARTS(bowser_seg6_animindex_0604AF5C),\n    bowser_seg6_animvalue_0604A8FC,\n    bowser_seg6_animindex_0604AF5C,\n    0,\n};\n"
  },
  {
    "path": "actors/bowser/anims/anim_0604B8CC.inc.c",
    "content": "// 0x0604B190\nstatic const s16 bowser_seg6_animvalue_0604B190[] = {\n    0x0000, 0x0098, 0x0097, 0x0093, 0x008D, 0x0088, 0x0083, 0x008C,\n    0x0099, 0x00AC, 0x00BF, 0x00EA, 0x00EA, 0x00EA, 0x00EA, 0x00EA,\n    0x00EA, 0xFFE7, 0xFFEA, 0xFFF2, 0xFFFD, 0x0006, 0x000D, 0x000C,\n    0x0007, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0118, 0x03AA, 0x069F, 0x08E3, 0x095E, 0x085A,\n    0x06E2, 0x050C, 0x02EC, 0x0095, 0xFE1E, 0xFB98, 0xF919, 0xF6B5,\n    0xF480, 0x32C6, 0xC001, 0x32C6, 0x0000, 0x0000, 0x0002, 0x0004,\n    0x0003, 0x0000, 0xFFF6, 0xFFE7, 0xFFD7, 0xFFC9, 0xFFCE, 0xFFD0,\n    0xFFCD, 0xFFC4, 0xFFB8, 0xFFAD, 0x0000, 0x0000, 0xFFFF, 0xFFFE,\n    0xFFFE, 0x0000, 0x0005, 0x000D, 0x0016, 0x0020, 0x0031, 0x0036,\n    0x0035, 0x002D, 0x0022, 0x0017, 0xA509, 0xA323, 0x9EB2, 0x9992,\n    0x95A1, 0x94BD, 0x9821, 0x9ED4, 0xA760, 0xB04F, 0xBFF7, 0xC7A6,\n    0xCB2C, 0xC9F8, 0xC68E, 0xC325, 0xE442, 0xE314, 0xE04A, 0xDD01,\n    0xDA5A, 0xD8E7, 0xD872, 0xD8BB, 0xD95F, 0xDA06, 0xDA5C, 0xDA4D,\n    0xDA0F, 0xD9B5, 0xD954, 0xD901, 0x0254, 0x0265, 0x0291, 0x02CF,\n    0x0316, 0x035C, 0x0398, 0x03D0, 0x0409, 0x0441, 0x046F, 0x048F,\n    0x0498, 0x048C, 0x0478, 0x0468, 0x053E, 0x04E8, 0x0406, 0x02C8,\n    0x015E, 0xFFF9, 0xFEC6, 0xFDAC, 0xFC83, 0xFB6A, 0xFA7D, 0xF9D9,\n    0xF9AD, 0xF9EA, 0xFA50, 0xFAA2, 0xF8D6, 0xF891, 0xF7DC, 0xF6DE,\n    0xF5BC, 0xF49E, 0xF3A8, 0xF2C6, 0xF1DA, 0xF0F9, 0xF03B, 0xEFB8,\n    0xEF94, 0xEFC5, 0xF017, 0xF058, 0x2486, 0x240F, 0x22EC, 0x2185,\n    0x203E, 0x1F7E, 0x1FAA, 0x20A7, 0x2207, 0x23B7, 0x25A2, 0x27B6,\n    0x29DD, 0x2C04, 0x2E18, 0x3004, 0xDB55, 0xDC0D, 0xDDEF, 0xE095,\n    0xE39A, 0xE697, 0xE926, 0xEB80, 0xEDF8, 0xF050, 0xF24A, 0xF3A8,\n    0xF406, 0xF384, 0xF2A9, 0xF1FB, 0x0000, 0xFFC5, 0xFF27, 0xFE49,\n    0xFD4D, 0xFC53, 0xFB7D, 0xFAB8, 0xF9EA, 0xF925, 0xF880, 0xF80E,\n    0xF7EF, 0xF819, 0xF861, 0xF89A, 0xF34B, 0xF2E5, 0xF1D7, 0xF05A,\n    0xEEA9, 0xECFC, 0xEB8D, 0xEA3C, 0xE8DA, 0xE789, 0xE66E, 0xE5AA,\n    0xE575, 0xE5BD, 0xE638, 0xE69A, 0x0000, 0xFFFF, 0xFFFD, 0xFFFC,\n    0xFFFC, 0x0000, 0x000B, 0x001C, 0x002F, 0x003E, 0x003A, 0x0037,\n    0x0039, 0x0044, 0x0054, 0x0063, 0x0000, 0x0000, 0x0002, 0x0003,\n    0x0003, 0x0000, 0xFFF8, 0xFFEC, 0xFFDD, 0xFFCF, 0xFFC0, 0xFFB9,\n    0xFFB9, 0xFFC4, 0xFFD2, 0xFFE1, 0xA509, 0xA317, 0x9E84, 0x9934,\n    0x950B, 0x93EC, 0x9730, 0x9DCD, 0xA612, 0xAE50, 0xBA3F, 0xC228,\n    0xC62E, 0xC439, 0xBFB2, 0xBB2B, 0x8001, 0x8001, 0xC0EE, 0xC1D2,\n    0xC3D6, 0xC606, 0xC76A, 0xC70B, 0xC400, 0xBEED, 0xB930, 0xB42A,\n    0xB139, 0xB0D5, 0xB214, 0xB442, 0xB6AC, 0xB89E, 0xCA03, 0xC8E5,\n    0xC604, 0xC218, 0xBDD8, 0xB9FC, 0xB73B, 0xB558, 0xB3D2, 0xB2F4,\n    0xB30E, 0xB46B, 0xB7F9, 0xBD9B, 0xC412, 0xCA1F, 0xFFA2, 0xFFA8,\n    0xFFB7, 0xFFCA, 0xFFDD, 0xFFEC, 0xFFF4, 0xFFF4, 0xFFF1, 0xFFEC,\n    0xFFE5, 0xFFDD, 0xFFD4, 0xFFCC, 0xFFC4, 0xFFBD, 0xFF46, 0xFF45,\n    0xFF41, 0xFF3C, 0xFF37, 0xFF33, 0xFF31, 0xFF31, 0xFF31, 0xFF32,\n    0xFF34, 0xFF36, 0xFF38, 0xFF3B, 0xFF3D, 0xFF3E, 0x9A98, 0x996B,\n    0x9677, 0x9297, 0x8EA8, 0x8B84, 0x8A09, 0x8A02, 0x8A91, 0x8B9A,\n    0x8CFD, 0x8E9D, 0x905B, 0x9219, 0x93B8, 0x951C, 0xCD46, 0xCC12,\n    0xC8FC, 0xC4CD, 0xC050, 0xBC4D, 0xB98E, 0xB7B5, 0xB637, 0xB595,\n    0xB64F, 0xB8E7, 0xBEB0, 0xC777, 0xD170, 0xDAD0, 0x428E, 0x4341,\n    0x44D6, 0x4685, 0x4783, 0x4709, 0x444B, 0x3FCE, 0x3AC5, 0x3661,\n    0x33D4, 0x3388, 0x34B2, 0x36B1, 0x38E6, 0x3AB0, 0x09A6, 0x09AF,\n    0x09C9, 0x09EF, 0x0A1F, 0x0A54, 0x0A93, 0x0ADC, 0x0B2D, 0x0B7F,\n    0x0BCE, 0x0C1B, 0x0C68, 0x0CB6, 0x0D03, 0x0D51, 0x0BB1, 0x0BAE,\n    0x0BA4, 0x0B8B, 0x0B5E, 0x0B19, 0x0AB0, 0x0A29, 0x0991, 0x08F5,\n    0x0864, 0x07DD, 0x0757, 0x06D2, 0x064D, 0x05C8, 0x9CC7, 0x9CDE,\n    0x9D25, 0x9DA0, 0x9E52, 0x9F3E, 0xA07D, 0xA20A, 0xA3C5, 0xA58A,\n    0xA738, 0xA8CD, 0xAA62, 0xABF6, 0xAD8A, 0xAF1F, 0x1945, 0x17AF,\n    0x13A8, 0x0E4D, 0x08B8, 0x0404, 0x014D, 0x01E3, 0x050B, 0x08D0,\n    0x0B3D, 0x0A5C, 0x0471, 0xFA9F, 0xEF3C, 0xE4A2, 0xE9B2, 0xE8D5,\n    0xE695, 0xE379, 0xE007, 0xDCC5, 0xDA38, 0xD885, 0xD747, 0xD636,\n    0xD509, 0xD37A, 0xD15B, 0xCED8, 0xCC2E, 0xC997, 0xBD23, 0xBF52,\n    0xC4DF, 0xCC4C, 0xD417, 0xDAC2, 0xDECC, 0xDF05, 0xDC6D, 0xD8CE,\n    0xD5F3, 0xD5A4, 0xD911, 0xDF24, 0xE648, 0xECE4, 0xF071, 0xF104,\n    0xF279, 0xF46E, 0xF67D, 0xF843, 0xF95C, 0xF996, 0xF934, 0xF883,\n    0xF7CD, 0xF761, 0xF750, 0xF76A, 0xF795, 0xF7B8, 0x0B16, 0x0BC7,\n    0x0D94, 0x1014, 0x12DD, 0x1585, 0x17A5, 0x1908, 0x19FF, 0x1AE8,\n    0x1C1E, 0x1DFE, 0x20E8, 0x24A6, 0x28BA, 0x2CA3, 0xBF48, 0xC03C,\n    0xC2A5, 0xC5D9, 0xC930, 0xCBFE, 0xCD9B, 0xCDE1, 0xCD41, 0xCBEE,\n    0xCA1D, 0xC800, 0xC53B, 0xC19F, 0xBDAE, 0xB9E8, 0xF717, 0xF6FC,\n    0xF6B8, 0xF65D, 0xF5FB, 0xF5A5, 0xF55B, 0xF510, 0xF4C5, 0xF47C,\n    0xF433, 0xF3ED, 0xF3A8, 0xF364, 0xF321, 0xF2DC, 0xF442, 0xF454,\n    0xF484, 0xF4CB, 0xF521, 0xF580, 0xF5ED, 0xF66E, 0xF6F9, 0xF785,\n    0xF808, 0xF883, 0xF8FB, 0xF971, 0xF9E6, 0xFA5C, 0x9B0B, 0x9B65,\n    0x9C4F, 0x9D95, 0x9F03, 0xA064, 0xA1C4, 0xA345, 0xA4D7, 0xA66A,\n    0xA7ED, 0xA95F, 0xAACA, 0xAC32, 0xAD99, 0xAF01, 0x3FFF, 0x0000,\n    0x04BD, 0x1097, 0x1FFF, 0x2F67, 0x3B41, 0x3FFF, 0x3A9E, 0x2D4D,\n    0x1C46, 0x0BC4, 0x0000, 0xFAA6, 0xF90F, 0xF8F9, 0xF822, 0x3FFF,\n    0x0000, 0x04BD, 0x1097, 0x1FFF, 0x2F67, 0x3B41, 0x3FFF, 0x3A9E,\n    0x2D4D, 0x1C46, 0x0BC4, 0x0000, 0xFAA6, 0xF90F, 0xF8F9, 0xF822,\n    0xC001, 0x3FFF, 0xC001, 0x0000, 0xFB43, 0xEF69, 0xE001, 0xD099,\n    0xC4BF, 0xC001, 0xC562, 0xD2B3, 0xE3BA, 0xF43C, 0x0000, 0x055A,\n    0x06F1, 0x0707, 0x07DE, 0x3FFF, 0x0000, 0xFB43, 0xEF69, 0xE001,\n    0xD099, 0xC4BF, 0xC001, 0xC562, 0xD2B3, 0xE3BA, 0xF43C, 0x0000,\n    0x055A, 0x06F1, 0x0707, 0x07DE, 0xC001, 0x3FFF, 0xC001, 0x3FFF,\n};\n\n// 0x0604B6B0\nstatic const u16 bowser_seg6_animindex_0604B6B0[] = {\n    0x0001, 0x0000, 0x0010, 0x0001, 0x0010, 0x0011, 0x0010, 0x0021, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x028F, 0x0001, 0x0000,\n    0x0010, 0x0186, 0x0010, 0x0196, 0x0010, 0x01A6,\n    0x0001, 0x0114, 0x0001, 0x0115, 0x0010, 0x0116,\n    0x0010, 0x0034, 0x0010, 0x0044, 0x0010, 0x0054,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x028C, 0x0001, 0x028D, 0x0001, 0x028E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x0064,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0010, 0x026B, 0x0001, 0x027B, 0x0010, 0x027C,\n    0x0010, 0x01B6, 0x0010, 0x01C6, 0x0010, 0x01D6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x0126,\n    0x0010, 0x0074, 0x0010, 0x0084, 0x0010, 0x0094,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0268, 0x0001, 0x0269, 0x0001, 0x026A,\n    0x0010, 0x0136, 0x0010, 0x0146, 0x0010, 0x0156,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x00A4,\n    0x0001, 0x0031, 0x0001, 0x0032, 0x0001, 0x0033,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0010, 0x0247, 0x0001, 0x0257, 0x0010, 0x0258,\n    0x0010, 0x01E6, 0x0010, 0x01F6, 0x0010, 0x0206,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x0166,\n    0x0010, 0x00B4, 0x0010, 0x00C4, 0x0010, 0x00D4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0246, 0x0001, 0x0000,\n    0x0010, 0x0216, 0x0010, 0x0226, 0x0010, 0x0236,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x0176,\n    0x0010, 0x00E4, 0x0010, 0x00F4, 0x0010, 0x0104,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x0604B8CC\nstatic const struct Animation bowser_seg6_anim_0604B8CC = {\n    1,\n    0,\n    0,\n    0,\n    0x10,\n    ANIMINDEX_NUMPARTS(bowser_seg6_animindex_0604B6B0),\n    bowser_seg6_animvalue_0604B190,\n    bowser_seg6_animindex_0604B6B0,\n    0,\n};\n"
  },
  {
    "path": "actors/bowser/anims/anim_0604D184.inc.c",
    "content": "// 0x0604B8E4\nstatic const s16 bowser_seg6_animvalue_0604B8E4[] = {\n    0x0000, 0x0000, 0x0000, 0x0002, 0x0004, 0x0008, 0x000C, 0x0010,\n    0x0014, 0x0018, 0x001C, 0x0022, 0x0028, 0x002D, 0x0033, 0x0039,\n    0x003F, 0x0044, 0x0045, 0x0041, 0x0037, 0x002B, 0x0017, 0x0000,\n    0xFFF4, 0xFFE7, 0xFFCF, 0xFFC0, 0xFFC1, 0xFFC6, 0xFFCB, 0xFFD0,\n    0xFFD6, 0xFFDC, 0xFFE2, 0xFFE8, 0xFFEE, 0xFFF5, 0xFFFB, 0x0000,\n    0x0003, 0x0004, 0x0007, 0x0012, 0x001E, 0x0029, 0x003E, 0x004D,\n    0x004B, 0x0041, 0x0039, 0x0034, 0x002F, 0x002B, 0x0026, 0x0022,\n    0x001D, 0x0019, 0x0014, 0x000F, 0x0008, 0x0003, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0098,\n    0x0099, 0x009A, 0x009C, 0x009F, 0x00A1, 0x00A4, 0x00A7, 0x00AA,\n    0x00AC, 0x00AE, 0x00B0, 0x00B2, 0x00B3, 0x00B4, 0x00B4, 0x00B5,\n    0x00B7, 0x00BB, 0x00C1, 0x00C3, 0x00B6, 0x00A9, 0x00AF, 0x00B9,\n    0x00C3, 0x00C2, 0x00BE, 0x00BA, 0x00B7, 0x00B7, 0x00B9, 0x00BA,\n    0x00BA, 0x00B6, 0x00B2, 0x00AD, 0x00A9, 0x00A8, 0x00AC, 0x00B5,\n    0x00BF, 0x00C7, 0x00C8, 0x00C3, 0x00C0, 0x00BE, 0x00BF, 0x00C0,\n    0x00C0, 0x00BE, 0x00BB, 0x00B9, 0x00B6, 0x00B3, 0x00B0, 0x00AD,\n    0x00A9, 0x00A5, 0x00A0, 0x009B, 0x0098, 0x0098, 0x0098, 0x0098,\n    0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0xFFE7, 0xFFE6, 0xFFE4,\n    0xFFE1, 0xFFDE, 0xFFD9, 0xFFD5, 0xFFCF, 0xFFCA, 0xFFC5, 0xFFC0,\n    0xFFBC, 0xFFB8, 0xFFB3, 0xFFAD, 0xFFA9, 0xFFA7, 0xFFAA, 0xFFBA,\n    0xFFD4, 0xFFE7, 0xFFE5, 0xFFDC, 0xFFD9, 0xFFD7, 0xFFD5, 0xFFCE,\n    0xFFC8, 0xFFC3, 0xFFC2, 0xFFC6, 0xFFCD, 0xFFD5, 0xFFDC, 0xFFE5,\n    0xFFEF, 0xFFF8, 0xFFFF, 0x0001, 0xFFFB, 0xFFEB, 0xFFDC, 0xFFCC,\n    0xFFBD, 0xFFB4, 0xFFAE, 0xFFAB, 0xFFAF, 0xFFB5, 0xFFBA, 0xFFBF,\n    0xFFC3, 0xFFC7, 0xFFCB, 0xFFCF, 0xFFD3, 0xFFD7, 0xFFDB, 0xFFDF,\n    0xFFE2, 0xFFE5, 0xFFE7, 0xFFE7, 0xFFE7, 0xFFE7, 0xFFE7, 0xFFE7,\n    0xFFE7, 0xFFE7, 0xFFE7, 0x0000, 0xFFE0, 0xFF85, 0xFEF8, 0xFE42,\n    0xFD6A, 0xFC7B, 0xFB7D, 0xFA78, 0xF974, 0xF87C, 0xF797, 0xF6CF,\n    0xF62B, 0xF5B5, 0xF575, 0xF574, 0xF5BA, 0xF79C, 0xFBA6, 0x00B5,\n    0x05AA, 0x0964, 0x0C2A, 0x0EE8, 0x1175, 0x13A7, 0x1556, 0x1658,\n    0x1683, 0x160E, 0x1553, 0x145A, 0x132D, 0x11D3, 0x1057, 0x0EC1,\n    0x0D1B, 0x0B6D, 0x09C0, 0x081E, 0x068F, 0x051C, 0x03CF, 0x02B0,\n    0x03B2, 0x0534, 0x052D, 0x051C, 0x0502, 0x04E0, 0x04B8, 0x048A,\n    0x0457, 0x0421, 0x03E7, 0x03AC, 0x036F, 0x0333, 0x02F7, 0x02BD,\n    0x0286, 0x0245, 0x0205, 0x01C4, 0x0183, 0x0143, 0x0102, 0x00C1,\n    0x0081, 0x0000, 0xFFCC, 0xFF39, 0xFE54, 0xFD2A, 0xFBC9, 0xFA3E,\n    0xF897, 0xF6E2, 0xF52B, 0xF380, 0xF1EE, 0xF083, 0xEF4D, 0xEE58,\n    0xEDB2, 0xED69, 0xED8A, 0xEFBE, 0xF4C6, 0xFB53, 0x0216, 0x07C0,\n    0x0D00, 0x12F9, 0x190B, 0x1E94, 0x22F3, 0x2586, 0x25AD, 0x2410,\n    0x21D0, 0x1F00, 0x1BB1, 0x17F8, 0x13E6, 0x0F8F, 0x0B05, 0x065B,\n    0x01A3, 0xFCF2, 0xF857, 0xF3E7, 0xEFB5, 0xEBD3, 0xE80E, 0xE6BB,\n    0xE806, 0xE982, 0xEB27, 0xECED, 0xEECC, 0xF0BC, 0xF2B5, 0xF4AF,\n    0xF6A2, 0xF886, 0xFA53, 0xFC01, 0xFD88, 0xFEE0, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0xFFC3, 0xFF14, 0xFE03, 0xFC9F, 0xFAF9, 0xF91E, 0xF720, 0xF50C,\n    0xF2F3, 0xF0E3, 0xEEED, 0xED20, 0xEB8A, 0xEA3C, 0xE945, 0xE8B4,\n    0xE898, 0xEAB6, 0xEFD6, 0xF68E, 0xFD74, 0x031E, 0x083B, 0x0E00,\n    0x13D3, 0x1919, 0x1D36, 0x1F91, 0x1F8F, 0x1DD8, 0x1B86, 0x18AC,\n    0x1559, 0x119F, 0x0D8E, 0x0936, 0x04A9, 0xFFF9, 0xFB33, 0xF66A,\n    0xF1AF, 0xED11, 0xE8A3, 0xE475, 0xDE4B, 0xDAF5, 0xDCC0, 0xDED9,\n    0xE136, 0xE3C8, 0xE684, 0xE95D, 0xEC46, 0xEF34, 0xF218, 0xF4E8,\n    0xF796, 0xFA15, 0xFC5A, 0xFE57, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x32C6, 0xC001, 0x32C6,\n    0x0000, 0x0005, 0x0014, 0x0028, 0x003C, 0x004E, 0x0073, 0x00A5,\n    0x00BB, 0x0087, 0x0020, 0xFFBA, 0xFF53, 0xFEE9, 0xFE7C, 0xFE0A,\n    0xFD94, 0xFD17, 0xFC94, 0xFC07, 0xFB72, 0xFAD2, 0xFA27, 0xF970,\n    0xF8AB, 0xF5D1, 0xF2FF, 0xF2E9, 0xF3C3, 0xF501, 0xF65B, 0xF7DD,\n    0xF976, 0xFB19, 0xFCB6, 0xFE3E, 0xFFA2, 0x00D2, 0x015B, 0x012C,\n    0x00CD, 0x005A, 0xFFB8, 0xFF17, 0xFE70, 0xFDBA, 0xFD26, 0xFCE5,\n    0xFCEE, 0xFD12, 0xFD4B, 0xFD93, 0xFDE2, 0xFE34, 0xFE80, 0xFEC1,\n    0xFEC4, 0xFEC4, 0xFF5E, 0x0212, 0x0452, 0x0000, 0xFFAF, 0xFF80,\n    0xFF6D, 0xFF70, 0xFF83, 0xFFA0, 0xFFC1, 0xFFE0, 0x0000, 0x0000,\n    0xFFFD, 0xFFF9, 0xFFF4, 0xFFED, 0xFFE2, 0xFFD1, 0xFFC3, 0xFFBE,\n    0xFFC0, 0xFFC2, 0xFFC5, 0xFFC9, 0xFFCE, 0xFFD3, 0xFFD8, 0xFFDE,\n    0xFFE4, 0xFFE9, 0xFFEF, 0xFFF4, 0xFFF9, 0xFFFD, 0x0000, 0xFFFE,\n    0xFFF5, 0xFFE9, 0xFFDA, 0xFFC9, 0xFFB3, 0xFF99, 0xFF7D, 0xFF62,\n    0xFF49, 0xFF37, 0xFF2C, 0xFF2D, 0xFF56, 0xFFAF, 0x0013, 0x0086,\n    0x0106, 0x016A, 0x01AE, 0x01E5, 0x0209, 0x0213, 0x0209, 0x01F5,\n    0x01DB, 0x01BB, 0x0198, 0x0174, 0x0151, 0x0130, 0x011D, 0x0105,\n    0x00C8, 0x000E, 0xFF62, 0x0000, 0x000B, 0x0012, 0x0015, 0x0014,\n    0x0012, 0x000D, 0x0009, 0x0004, 0xA509, 0xA5BD, 0xA795, 0xAA2D,\n    0xAD1F, 0xB006, 0xB3D2, 0xB88B, 0xBC71, 0xBDC2, 0xBD12, 0xBC25,\n    0xBB01, 0xB9AB, 0xB82B, 0xB686, 0xB4C4, 0xB2E9, 0xB0FE, 0xAF07,\n    0xAD0C, 0xAB13, 0xA922, 0xA73F, 0xA571, 0xA2DD, 0x9FE7, 0x9CF6,\n    0x9A21, 0x98D1, 0x98C6, 0x98D8, 0x9915, 0x998F, 0x9A55, 0x9B77,\n    0x9D04, 0x9F0C, 0xA3EB, 0xAB7B, 0xB210, 0xB6A3, 0xBA3A, 0xBC3A,\n    0xBC67, 0xBB70, 0xBA14, 0xB914, 0xB88D, 0xB815, 0xB7A8, 0xB740,\n    0xB6D8, 0xB66B, 0xB5F5, 0xB570, 0xB51C, 0xB49B, 0xB2F5, 0xAE84,\n    0xA8C0, 0xA367, 0xA32D, 0xA324, 0xA342, 0xA37E, 0xA3CC, 0xA423,\n    0xA478, 0xA4C2, 0x0000, 0xFFF7, 0xFFDE, 0xFFB6, 0xFF81, 0xFF43,\n    0xFEFC, 0xFEAF, 0xFE5F, 0xFE0D, 0xFDBC, 0xFD6D, 0xFD23, 0xFCE0,\n    0xFCA6, 0xFC77, 0xFC56, 0xFC42, 0xFC3A, 0xFC3C, 0xFC46, 0xFC58,\n    0xFC70, 0xFC8C, 0xFCAB, 0xFCCC, 0xFCED, 0xFD0D, 0xFD2A, 0xFD4F,\n    0xFD81, 0xFDBA, 0xFDF2, 0xFE24, 0xFE49, 0xFE60, 0xFE70, 0xFE7B,\n    0xFE83, 0xFE8A, 0xFE91, 0xFE9B, 0xFEAA, 0xFEBD, 0xFED3, 0xFEEA,\n    0xFF02, 0xFF1B, 0xFF34, 0xFF4C, 0xFF63, 0xFF79, 0xFF8C, 0xFF9E,\n    0xFFAE, 0xFFBE, 0xFFCD, 0xFFDA, 0xFFE6, 0xFFF1, 0xFFF9, 0x0000,\n    0x0004, 0x0007, 0x0009, 0x0008, 0x0007, 0x0005, 0x0003, 0x0001,\n    0x0000, 0x0000, 0x0001, 0x0004, 0x0006, 0x0009, 0x000C, 0x000F,\n    0x0011, 0x0013, 0x0014, 0x0014, 0x0013, 0x0011, 0x000D, 0x0007,\n    0x0000, 0xFFF6, 0xFFE8, 0xFFD7, 0xFFC3, 0xFFAE, 0xFF97, 0xFF7F,\n    0xFF66, 0xFF4E, 0xFF35, 0xFF1E, 0xFF08, 0xFEEE, 0xFECD, 0xFEAB,\n    0xFE90, 0xFE81, 0xFE84, 0xFE9B, 0xFEC0, 0xFEEF, 0xFF23, 0xFF58,\n    0xFF89, 0xFFB2, 0xFFCE, 0xFFE0, 0xFFEB, 0xFFF3, 0xFFF6, 0xFFF7,\n    0xFFF6, 0xFFF4, 0xFFF2, 0xFFF2, 0xFFF3, 0xFFF6, 0xFFF8, 0xFFFA,\n    0xFFFB, 0xFFFD, 0xFFFE, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0xE442, 0xE47C,\n    0xE520, 0xE61E, 0xE769, 0xE8F1, 0xEAA7, 0xEC7E, 0xEE65, 0xF04E,\n    0xF22A, 0xF3EB, 0xF581, 0xF6DE, 0xF7F3, 0xF8B1, 0xF90A, 0xF8F0,\n    0xF86B, 0xF787, 0xF654, 0xF4DD, 0xF332, 0xF160, 0xEF74, 0xED7C,\n    0xEB86, 0xE99F, 0xE7D5, 0xE58F, 0xE28A, 0xDF56, 0xDC81, 0xDA9B,\n    0xDA33, 0xDB75, 0xDDE8, 0xE126, 0xE4C8, 0xE867, 0xEB9F, 0xEE08,\n    0xEF3B, 0xEF4E, 0xEEB2, 0xED8B, 0xEC00, 0xEA34, 0xE84E, 0xE672,\n    0xE4C6, 0xE36F, 0xE292, 0xE22A, 0xE20E, 0xE22E, 0xE279, 0xE2E0,\n    0xE351, 0xE3BD, 0xE413, 0xE442, 0xE455, 0xE45F, 0xE464, 0xE463,\n    0xE45F, 0xE458, 0xE451, 0xE44A, 0x0254, 0x026A, 0x02A9, 0x030A,\n    0x0386, 0x0418, 0x04B8, 0x0562, 0x060D, 0x06B4, 0x0750, 0x07DB,\n    0x084F, 0x08A5, 0x08D7, 0x08DF, 0x08B5, 0x0855, 0x07B6, 0x06D4,\n    0x05A7, 0x0429, 0x0254, 0xFD35, 0xF35C, 0xE70E, 0xDA8E, 0xD021,\n    0xCA09, 0xC799, 0xC67F, 0xC684, 0xC776, 0xC91E, 0xCB48, 0xCDC0,\n    0xD04F, 0xD2C2, 0xD5E2, 0xDA3C, 0xDF45, 0xE46D, 0xE927, 0xECE5,\n    0xEFBA, 0xF218, 0xF408, 0xF593, 0xF6BF, 0xF796, 0xF826, 0xF881,\n    0xF8B2, 0xF8C1, 0xF8B9, 0xF8A3, 0xF888, 0xF874, 0xF86F, 0xF883,\n    0xF8BA, 0xF91D, 0xF9C5, 0xFAB3, 0xFBD3, 0xFD10, 0xFE55, 0xFF8E,\n    0x00A5, 0x0187, 0x053E, 0x0548, 0x0566, 0x0594, 0x05CE, 0x0613,\n    0x065F, 0x06AE, 0x06FF, 0x074E, 0x0797, 0x07D9, 0x0810, 0x0838,\n    0x0850, 0x0853, 0x0840, 0x0812, 0x07C8, 0x075D, 0x06CF, 0x061B,\n    0x053E, 0x02F3, 0xFE94, 0xF90C, 0xF347, 0xEE31, 0xEAB5, 0xE86E,\n    0xE65F, 0xE493, 0xE315, 0xE1EF, 0xE12C, 0xE0D7, 0xE0F9, 0xE19E,\n    0xE39B, 0xE746, 0xEBE7, 0xF0C7, 0xF52F, 0xF867, 0xFA7D, 0xFC08,\n    0xFD1B, 0xFDC9, 0xFE26, 0xFE46, 0xFE2D, 0xFDD8, 0xFD55, 0xFCB0,\n    0xFBF7, 0xFB38, 0xFA7E, 0xF9D7, 0xF951, 0xF8F8, 0xF8D9, 0xF902,\n    0xF99C, 0xFAB0, 0xFC1E, 0xFDC6, 0xFF86, 0x013D, 0x02CC, 0x0412,\n    0xF8D6, 0xF8CA, 0xF8A9, 0xF876, 0xF834, 0xF7E7, 0xF793, 0xF739,\n    0xF6DF, 0xF687, 0xF635, 0xF5EB, 0xF5AE, 0xF580, 0xF566, 0xF562,\n    0xF578, 0xF5AB, 0xF5FF, 0xF676, 0xF715, 0xF7DE, 0xF8D6, 0xFB7B,\n    0x008C, 0x06EA, 0x0D74, 0x1308, 0x1686, 0x1862, 0x19CD, 0x1ACA,\n    0x1B5A, 0x1B7E, 0x1B39, 0x1A8B, 0x1977, 0x17FC, 0x1548, 0x10F8,\n    0x0BBD, 0x0648, 0x0148, 0xFD6F, 0xFAA9, 0xF869, 0xF69D, 0xF539,\n    0xF42B, 0xF366, 0xF2CE, 0xF24F, 0xF1E9, 0xF19A, 0xF161, 0xF13D,\n    0xF12B, 0xF12C, 0xF13C, 0xF15C, 0xF189, 0xF1C3, 0xF229, 0xF2D0,\n    0xF3A7, 0xF49B, 0xF59B, 0xF695, 0xF776, 0xF82E, 0x2486, 0x2475,\n    0x2445, 0x23FC, 0x23A1, 0x2338, 0x22C9, 0x2259, 0x21ED, 0x218C,\n    0x213C, 0x2103, 0x20E6, 0x20EB, 0x2119, 0x2176, 0x2206, 0x2314,\n    0x24CA, 0x26FD, 0x2982, 0x2C2E, 0x2ED7, 0x3153, 0x3377, 0x3518,\n    0x360B, 0x3687, 0x36DE, 0x3715, 0x372D, 0x3729, 0x370B, 0x36D7,\n    0x368E, 0x3634, 0x35CA, 0x3555, 0x34D5, 0x344E, 0x33C3, 0x3335,\n    0x32A8, 0x321F, 0x319B, 0x310F, 0x306D, 0x2FB8, 0x2EF3, 0x2E22,\n    0x2D46, 0x2C63, 0x2B7C, 0x2A93, 0x29AD, 0x28CB, 0x27F1, 0x2721,\n    0x265F, 0x25AD, 0x250E, 0x2486, 0x2422, 0x23E7, 0x23D0, 0x23D3,\n    0x23EB, 0x240F, 0x2438, 0x245E, 0xDB55, 0xDBD6, 0xDD48, 0xDF91,\n    0xE297, 0xE641, 0xEA76, 0xEF1C, 0xF418, 0xF953, 0xFEB1, 0x0419,\n    0x0972, 0x0EA3, 0x1391, 0x1824, 0x1C41, 0x206C, 0x2504, 0x29B8,\n    0x2E36, 0x322D, 0x354C, 0x3741, 0x37BC, 0x34C0, 0x2DF0, 0x2564,\n    0x1D35, 0x177C, 0x13AC, 0x0FD7, 0x0C02, 0x0834, 0x0474, 0x00C6,\n    0xFD33, 0xF9BF, 0xF672, 0xF351, 0xF062, 0xEDAD, 0xEB37, 0xE906,\n    0xE722, 0xE58F, 0xE455, 0xE3AC, 0xE3B5, 0xE457, 0xE578, 0xE6FF,\n    0xE8D3, 0xEAD8, 0xECF6, 0xEF13, 0xF115, 0xF2E2, 0xF461, 0xF578,\n    0xF60E, 0xF608, 0xF4FE, 0xF2CB, 0xEFBC, 0xEC1D, 0xE83B, 0xE463,\n    0xE0E0, 0xDDFF, 0x0000, 0x0022, 0x0087, 0x0128, 0x0201, 0x030C,\n    0x0444, 0x05A4, 0x0727, 0x08C7, 0x0A7F, 0x0C4B, 0x0E24, 0x1006,\n    0x11EB, 0x13CF, 0x15AB, 0x1828, 0x1BA3, 0x1FAA, 0x23C8, 0x278A,\n    0x2A7E, 0x2C30, 0x2C2D, 0x2822, 0x1FD7, 0x15FF, 0x0D4C, 0x0872,\n    0x0697, 0x0510, 0x03D5, 0x02DD, 0x0220, 0x0196, 0x0137, 0x00FA,\n    0x00D7, 0x00C6, 0x00BE, 0x00B7, 0x00A8, 0x008B, 0x0055, 0x0000,\n    0xFF82, 0xFEE0, 0xFE27, 0xFD5E, 0xFC88, 0xFBAB, 0xFACC, 0xF9F0,\n    0xF91B, 0xF854, 0xF79E, 0xF6FF, 0xF67B, 0xF619, 0xF5DC, 0xF5CA,\n    0xF617, 0xF6E0, 0xF806, 0xF96A, 0xFAEC, 0xFC6D, 0xFDCF, 0xFEF2,\n    0xF34B, 0xF345, 0xF334, 0xF321, 0xF311, 0xF30C, 0xF317, 0xF339,\n    0xF379, 0xF3DE, 0xF46D, 0xF52D, 0xF625, 0xF75B, 0xF8D6, 0xFA9C,\n    0xFCB4, 0x0067, 0x0665, 0x0DCE, 0x15C3, 0x1D65, 0x23D3, 0x282F,\n    0x2999, 0x24A3, 0x1928, 0x0B36, 0xFEDA, 0xF821, 0xF5D5, 0xF405,\n    0xF2A5, 0xF1A7, 0xF100, 0xF0A2, 0xF081, 0xF090, 0xF0C2, 0xF10B,\n    0xF15F, 0xF1AF, 0xF1F1, 0xF216, 0xF213, 0xF1DB, 0xF160, 0xF0A9,\n    0xEFC8, 0xEEC5, 0xEDA9, 0xEC7C, 0xEB46, 0xEA10, 0xE8E1, 0xE7C3,\n    0xE6BD, 0xE5D7, 0xE51B, 0xE490, 0xE43E, 0xE42E, 0xE4AA, 0xE5DA,\n    0xE78F, 0xE99C, 0xEBD5, 0xEE0C, 0xF014, 0xF1BF, 0x0000, 0x0026,\n    0x0093, 0x013F, 0x0220, 0x032F, 0x0461, 0x05AF, 0x0710, 0x087B,\n    0x09E7, 0x0B4D, 0x0CA2, 0x0DDF, 0x0EFA, 0x0FEC, 0x10AA, 0x10FF,\n    0x10D1, 0x1047, 0x0F85, 0x0EB4, 0x0DF7, 0x0D1C, 0x0BFF, 0x0ADF,\n    0x09D0, 0x08BF, 0x07AD, 0x069A, 0x0586, 0x0474, 0x0363, 0x0255,\n    0x0149, 0x0041, 0xFF3F, 0xFE22, 0xFD27, 0xFCD5, 0xFE14, 0x0032,\n    0x0206, 0x0499, 0x0926, 0x0E40, 0x1164, 0x11C7, 0x10CE, 0x0F3E,\n    0x0DDF, 0x0CDB, 0x0BD6, 0x0ACD, 0x09BC, 0x089E, 0x076F, 0x062C,\n    0x0489, 0x0294, 0x00C9, 0x0000, 0xFFF2, 0xFFE9, 0xFFE6, 0xFFE6,\n    0xFFEA, 0xFFEF, 0xFFF5, 0xFFFB, 0x0000, 0x0003, 0x000D, 0x001D,\n    0x0032, 0x004A, 0x0065, 0x0081, 0x009E, 0x00BB, 0x00D6, 0x00EE,\n    0x0104, 0x0114, 0x0120, 0x0125, 0x0122, 0x010C, 0x00DB, 0x0093,\n    0x003B, 0xFFD9, 0xFF70, 0xFEB2, 0xFDC8, 0xFD6D, 0xFDA3, 0xFDEB,\n    0xFE43, 0xFEA7, 0xFF16, 0xFF8A, 0x0002, 0x007B, 0x00F2, 0x0164,\n    0x01CE, 0x022E, 0x028A, 0x02ED, 0x037B, 0x03DD, 0x03A0, 0x0331,\n    0x02D5, 0x027B, 0x023E, 0x0230, 0x023C, 0x0248, 0x023D, 0x0218,\n    0x01EC, 0x01BA, 0x0184, 0x014C, 0x0114, 0x00DD, 0x00A0, 0x005E,\n    0x0021, 0x0000, 0xFFFE, 0xFFFD, 0xFFFC, 0xFFFC, 0xFFFD, 0xFFFE,\n    0xFFFF, 0x0000, 0xA509, 0xA4FF, 0xA4E5, 0xA4BC, 0xA487, 0xA44A,\n    0xA406, 0xA3C0, 0xA378, 0xA332, 0xA2F2, 0xA2B8, 0xA28A, 0xA268,\n    0xA255, 0xA255, 0xA26B, 0xA2B4, 0xA347, 0xA41D, 0xA52D, 0xA66F,\n    0xA7DC, 0xAAC0, 0xAE6D, 0xAFE6, 0xAF18, 0xADF9, 0xAC98, 0xAB03,\n    0xA94A, 0xA779, 0xA5A1, 0xA3CE, 0xA211, 0xA077, 0x9F0F, 0x9DC7,\n    0x9D16, 0x9DD3, 0xA27F, 0xA7BA, 0xA990, 0xA93E, 0xA6AB, 0xA31C,\n    0xA072, 0x9F29, 0x9E6B, 0x9E18, 0x9E10, 0x9E42, 0x9EA5, 0x9F2A,\n    0x9FC0, 0xA057, 0xA0E0, 0xA14B, 0xA164, 0xA14B, 0xA172, 0xA2FF,\n    0xA351, 0xA3A0, 0xA3EB, 0xA42F, 0xA46C, 0xA4A1, 0xA4CD, 0xA4ED,\n    0x8001, 0x8001, 0xBE14, 0xBE02, 0xBDCD, 0xBD7A, 0xBD0A, 0xBC81,\n    0xBBE2, 0xBB31, 0xBA70, 0xB9A3, 0xB8CD, 0xB7F1, 0xB711, 0xB633,\n    0xB557, 0xB483, 0xB3B8, 0xB2FA, 0xB24C, 0xB1B1, 0xB12D, 0xB0C2,\n    0xB074, 0xB045, 0xB03A, 0xB1D9, 0xB5A3, 0xBA16, 0xBDAE, 0xBEE7,\n    0xBDD4, 0xBBBE, 0xB8ED, 0xB5AE, 0xB249, 0xAF0A, 0xAC3B, 0xAA26,\n    0xA88A, 0xA6FD, 0xA58A, 0xA43A, 0xA31A, 0xA234, 0xA192, 0xA140,\n    0xA149, 0xA1B7, 0xA283, 0xA397, 0xA4EB, 0xA677, 0xA832, 0xAA15,\n    0xAC18, 0xAE32, 0xB05A, 0xB28A, 0xB4B7, 0xB6DC, 0xB8EE, 0xBE14,\n    0xBE75, 0xBEAE, 0xBEC5, 0xBEC1, 0xBEAA, 0xBE87, 0xBE60, 0xBE3B,\n    0xCA03, 0xC9F5, 0xC9CE, 0xC991, 0xC942, 0xC8E7, 0xC882, 0xC817,\n    0xC7AB, 0xC742, 0xC6E0, 0xC688, 0xC63F, 0xC609, 0xC5E9, 0xC5E5,\n    0xC5FF, 0xC63C, 0xC6A0, 0xC72E, 0xC7EC, 0xC8DC, 0xCA03, 0xCD00,\n    0xD2AB, 0xD9E2, 0xE183, 0xE86A, 0xED75, 0xF106, 0xF441, 0xF728,\n    0xF9BD, 0xFC01, 0xFDF5, 0xFF9C, 0x00F6, 0x0206, 0x028D, 0x0255,\n    0x016E, 0xFFE9, 0xFDD5, 0xFB43, 0xF7CE, 0xF356, 0xEE4E, 0xE92F,\n    0xE46C, 0xE07D, 0xDD11, 0xD995, 0xD615, 0xD29F, 0xCF40, 0xCC06,\n    0xC8FE, 0xC636, 0xC3BA, 0xC199, 0xBFDF, 0xBE9B, 0xBE19, 0xBE7C,\n    0xBF91, 0xC126, 0xC308, 0xC504, 0xC6E8, 0xC880, 0xFFA2, 0xFFA4,\n    0xFFAB, 0xFFB7, 0xFFC8, 0xFFDE, 0xFFFC, 0x001F, 0x004A, 0x007D,\n    0x00B8, 0x00FC, 0x0149, 0x01A0, 0x0200, 0x026B, 0x02E1, 0x03ED,\n    0x05B8, 0x07B2, 0x094A, 0x0A50, 0x0AFD, 0x0B59, 0x0B70, 0x0B36,\n    0x0A97, 0x09BB, 0x08DA, 0x07F3, 0x0707, 0x0614, 0x051A, 0x0419,\n    0x0311, 0x0200, 0x00E6, 0xFFC4, 0xFE97, 0xFCBF, 0xFA62, 0xF8AD,\n    0xF833, 0xF862, 0xF8AC, 0xF8F2, 0xF953, 0xF9A8, 0xF9DF, 0xFA07,\n    0xFA2D, 0xFA5A, 0xFA99, 0xFAF5, 0xFB74, 0xFC12, 0xFCC1, 0xFD76,\n    0xFE26, 0xFEC5, 0xFF48, 0xFFA2, 0xFFD8, 0xFFF7, 0x0003, 0x0001,\n    0xFFF5, 0xFFE2, 0xFFCC, 0xFFB8, 0xFF46, 0xFF07, 0xFE53, 0xFD3C,\n    0xFBD0, 0xFA20, 0xF83C, 0xF634, 0xF418, 0xF1F9, 0xEFE5, 0xEDEE,\n    0xEC23, 0xEA94, 0xE951, 0xE86B, 0xE7F1, 0xE9C9, 0xEEA5, 0xF4C4,\n    0xFA66, 0xFF7F, 0x04C1, 0x098E, 0x0E9B, 0x1330, 0x148C, 0x132D,\n    0x1173, 0x0F69, 0x0D1F, 0x0AA1, 0x07FC, 0x0540, 0x0278, 0xFFB3,\n    0xFCFE, 0xFA66, 0xF7F9, 0xF5C1, 0xF3B0, 0xF1AE, 0xEF69, 0xED33,\n    0xEBE9, 0xEC13, 0xED29, 0xEE6D, 0xEF94, 0xF0CD, 0xF212, 0xF35B,\n    0xF4A1, 0xF5DD, 0xF722, 0xF87E, 0xF9E2, 0xFB40, 0xFC88, 0xFDAB,\n    0xFE9A, 0xFF46, 0xFFB3, 0xFFF2, 0x000A, 0x0006, 0xFFEE, 0xFFC7,\n    0xFF9B, 0xFF71, 0x9A98, 0x9AB1, 0x9AF7, 0x9B63, 0x9BEE, 0x9C91,\n    0x9D46, 0x9E05, 0x9EC7, 0x9F86, 0xA03B, 0xA0DE, 0xA16A, 0xA1D6,\n    0xA21B, 0xA234, 0xA219, 0xA047, 0x9C79, 0x9886, 0x9644, 0x97B2,\n    0x9B0D, 0x9C87, 0x99A1, 0x94DB, 0x91E9, 0x912E, 0x9093, 0x9019,\n    0x8FBD, 0x8F7E, 0x8F5B, 0x8F53, 0x8F65, 0x8F8F, 0x8FD0, 0x9027,\n    0x9092, 0x92CD, 0x968E, 0x98CC, 0x97C2, 0x9536, 0x936E, 0x9354,\n    0x93FF, 0x94F5, 0x9617, 0x9776, 0x98E7, 0x9A42, 0x9B5A, 0x9C05,\n    0x9C47, 0x9C48, 0x9C19, 0x9BCA, 0x9B6C, 0x9B0E, 0x9AC2, 0x9A98,\n    0x9A87, 0x9A7E, 0x9A7A, 0x9A7B, 0x9A7F, 0x9A84, 0x9A8B, 0x9A91,\n    0xCD46, 0xCD76, 0xCDFF, 0xCEDA, 0xCFFC, 0xD15C, 0xD2F2, 0xD4B5,\n    0xD69B, 0xD89B, 0xDAAD, 0xDCC7, 0xDEE0, 0xE0F0, 0xE2EC, 0xE4CD,\n    0xE688, 0xE87E, 0xEAE7, 0xED83, 0xF013, 0xF257, 0xF40F, 0xF4FA,\n    0xF4D9, 0xF24D, 0xED22, 0xE6DA, 0xE0F5, 0xDCF6, 0xDA70, 0xD7F8,\n    0xD58E, 0xD334, 0xD0EC, 0xCEB7, 0xCC96, 0xCA8A, 0xC895, 0xC6B9,\n    0xC4F7, 0xC34F, 0xC1C4, 0xC057, 0xBF0A, 0xBDDD, 0xBCD2, 0xBBF2,\n    0xBB41, 0xBABC, 0xBA61, 0xBA2D, 0xBA1C, 0xBA2C, 0xBA59, 0xBAA0,\n    0xBAFE, 0xBB71, 0xBBF5, 0xBC88, 0xBD25, 0xBDCA, 0xBEC2, 0xC03E,\n    0xC21A, 0xC430, 0xC65B, 0xC874, 0xCA58, 0xCBDF, 0x3E12, 0x3E2D,\n    0x3E7A, 0x3EF0, 0x3F8A, 0x4040, 0x410B, 0x41E5, 0x42C5, 0x43A5,\n    0x447E, 0x4548, 0x45FE, 0x4697, 0x470C, 0x4758, 0x4771, 0x4769,\n    0x4753, 0x4730, 0x4700, 0x46C4, 0x467C, 0x4629, 0x45CB, 0x4562,\n    0x44EF, 0x4472, 0x43EC, 0x435D, 0x42C6, 0x4227, 0x4180, 0x40D3,\n    0x401E, 0x3F63, 0x3EA3, 0x3DDD, 0x3B9D, 0x37D2, 0x348B, 0x33DB,\n    0x36D8, 0x3C24, 0x421A, 0x471A, 0x4981, 0x49DF, 0x49E5, 0x499D,\n    0x4911, 0x484D, 0x475C, 0x4647, 0x451B, 0x43E1, 0x42A4, 0x4170,\n    0x404F, 0x3F4B, 0x3E70, 0x3E12, 0x3E0B, 0x3E07, 0x3E06, 0x3E06,\n    0x3E08, 0x3E0A, 0x3E0D, 0x3E10, 0x0AA8, 0x0AA2, 0x0A91, 0x0A77,\n    0x0A56, 0x0A2E, 0x0A01, 0x09D2, 0x09A1, 0x0970, 0x0940, 0x0914,\n    0x08EC, 0x08CA, 0x08B0, 0x08A0, 0x089A, 0x08A0, 0x08B5, 0x08D8,\n    0x090D, 0x0954, 0x09AF, 0x0A20, 0x0AA8, 0x0CAB, 0x10AA, 0x1555,\n    0x195B, 0x1B6A, 0x1BAC, 0x1B45, 0x1A58, 0x190C, 0x1783, 0x15E4,\n    0x1451, 0x12F0, 0x117E, 0x0FC2, 0x0DF3, 0x0C45, 0x0AEE, 0x0A23,\n    0x0A8B, 0x0C08, 0x0DA5, 0x0E6D, 0x0E6D, 0x0E57, 0x0E2D, 0x0DF4,\n    0x0DAD, 0x0D5B, 0x0D02, 0x0CA4, 0x0C44, 0x0BE5, 0x0B8A, 0x0B36,\n    0x0AEB, 0x0AA8, 0x0AA3, 0x0AA0, 0x0A9F, 0x0A9F, 0x0AA0, 0x0AA2,\n    0x0AA4, 0x0AA6, 0x0AC9, 0x0AC4, 0x0AB6, 0x0AA1, 0x0A86, 0x0A65,\n    0x0A41, 0x0A1A, 0x09F2, 0x09CA, 0x09A3, 0x097E, 0x095E, 0x0942,\n    0x092D, 0x091F, 0x091B, 0x0920, 0x0930, 0x094E, 0x0979, 0x09B3,\n    0x09FE, 0x0A5A, 0x0AC9, 0x0C81, 0x0FED, 0x13DC, 0x171C, 0x187E,\n    0x182D, 0x1738, 0x15C0, 0x13E9, 0x11D2, 0x0F9E, 0x0D70, 0x0B67,\n    0x094C, 0x06E9, 0x0467, 0x01ED, 0xFFA5, 0xFDB4, 0xFC13, 0xFAC9,\n    0xFA1A, 0xFA4A, 0xFB11, 0xFBF9, 0xFD00, 0xFE1E, 0xFF52, 0x0094,\n    0x01E3, 0x0339, 0x0491, 0x05E8, 0x0738, 0x087E, 0x09B5, 0x0AC9,\n    0x0ADD, 0x0AE9, 0x0AEE, 0x0AED, 0x0AE8, 0x0AE1, 0x0AD9, 0x0AD1,\n    0xA078, 0xA074, 0xA06A, 0xA05A, 0xA044, 0xA02B, 0xA00F, 0x9FF1,\n    0x9FD2, 0x9FB3, 0x9F95, 0x9F79, 0x9F5F, 0x9F4A, 0x9F3A, 0x9F2F,\n    0x9F2B, 0x9F2F, 0x9F3C, 0x9F53, 0x9F74, 0x9FA1, 0x9FDB, 0xA022,\n    0xA078, 0xA1A3, 0xA3F5, 0xA6C1, 0xA95A, 0xAB13, 0xAC02, 0xACB6,\n    0xAD38, 0xAD93, 0xADD2, 0xADFE, 0xAE22, 0xAE48, 0xAE7B, 0xAEAF,\n    0xAEC8, 0xAEAB, 0xAE3F, 0xAD67, 0xAB5F, 0xA83D, 0xA531, 0xA369,\n    0xA2BD, 0xA236, 0xA1CF, 0xA184, 0xA150, 0xA12D, 0xA118, 0xA10B,\n    0xA101, 0xA0F6, 0xA0E5, 0xA0C9, 0xA09C, 0xA078, 0xA076, 0xA074,\n    0xA073, 0xA073, 0xA074, 0xA075, 0xA076, 0xA077, 0x1945, 0x1939,\n    0x1919, 0x18E7, 0x18A7, 0x185C, 0x1809, 0x17B2, 0x175A, 0x1704,\n    0x16B4, 0x166C, 0x1630, 0x1604, 0x15EA, 0x15E6, 0x15FC, 0x162E,\n    0x167F, 0x16F4, 0x178F, 0x1853, 0x1945, 0x1BD8, 0x20C7, 0x26F9,\n    0x2D58, 0x32CD, 0x3641, 0x381E, 0x398B, 0x3A8B, 0x3B23, 0x3B58,\n    0x3B2C, 0x3AA5, 0x39C5, 0x3893, 0x3640, 0x3272, 0x2DD6, 0x2918,\n    0x24E4, 0x21E9, 0x2030, 0x1F32, 0x1EBE, 0x1EA7, 0x1EBC, 0x1ECE,\n    0x1EE5, 0x1F20, 0x1F77, 0x1FE2, 0x2057, 0x20D0, 0x2143, 0x21A8,\n    0x21F7, 0x2227, 0x2231, 0x220B, 0x2197, 0x20CF, 0x1FC7, 0x1E97,\n    0x1D57, 0x1C1E, 0x1B01, 0x1A1A, 0xE9B2, 0xE9B8, 0xE9C8, 0xE9E0,\n    0xE9FF, 0xEA23, 0xEA4B, 0xEA75, 0xEAA0, 0xEACA, 0xEAF1, 0xEB14,\n    0xEB31, 0xEB46, 0xEB53, 0xEB54, 0xEB4A, 0xEB32, 0xEB0A, 0xEAD2,\n    0xEA87, 0xEA27, 0xE9B2, 0xE894, 0xE679, 0xE3C1, 0xE0CB, 0xDDF7,\n    0xDBA4, 0xD99B, 0xD774, 0xD545, 0xD326, 0xD12C, 0xCF6D, 0xCE01,\n    0xCCFE, 0xCC7A, 0xCCA9, 0xCDA2, 0xCF55, 0xD1AF, 0xD4A0, 0xD814,\n    0xDD10, 0xE3D7, 0xEB33, 0xF1F1, 0xF6DD, 0xF8C1, 0xF823, 0xF676,\n    0xF3EE, 0xF0BE, 0xED1A, 0xE934, 0xE540, 0xE171, 0xDDFB, 0xDB10,\n    0xD8E5, 0xD7AB, 0xD79E, 0xD8AB, 0xDA8E, 0xDD07, 0xDFD4, 0xE2B2,\n    0xE55F, 0xE79A, 0xBD23, 0xBD35, 0xBD6A, 0xBDBC, 0xBE25, 0xBE9F,\n    0xBF27, 0xBFB5, 0xC045, 0xC0D2, 0xC156, 0xC1CB, 0xC22D, 0xC275,\n    0xC29F, 0xC2A5, 0xC283, 0xC231, 0xC1AC, 0xC0ED, 0xBFEF, 0xBEAE,\n    0xBD23, 0xB8D9, 0xB09F, 0xA654, 0x9BD5, 0x9301, 0x8DB7, 0x8B65,\n    0x8A1F, 0x89BE, 0x8A1B, 0x8B0F, 0x8C72, 0x8E1E, 0x8FEC, 0x91B4,\n    0x9438, 0x97F1, 0x9C4E, 0xA0BD, 0xA4AA, 0xA784, 0xA933, 0xAA29,\n    0xAA9E, 0xAACA, 0xAAE8, 0xAB2F, 0xAB91, 0xABDD, 0xAC1A, 0xAC4D,\n    0xAC7C, 0xACAD, 0xACE6, 0xAD2E, 0xAD8A, 0xADFF, 0xAE95, 0xAF51,\n    0xB05D, 0xB1CC, 0xB380, 0xB55B, 0xB73F, 0xB90E, 0xBAAA, 0xBBF6,\n    0xF071, 0xEFED, 0xEE76, 0xEC2F, 0xE939, 0xE5B5, 0xE1C5, 0xDD8B,\n    0xD928, 0xD4BE, 0xD06D, 0xCC59, 0xC8A2, 0xC56A, 0xC2D2, 0xC0FC,\n    0xC00A, 0xC137, 0xC517, 0xCAD1, 0xD18A, 0xD86A, 0xDE97, 0xE338,\n    0xE571, 0xE2E3, 0xDBC7, 0xD32B, 0xCC1E, 0xC9AE, 0xCADC, 0xCC92,\n    0xCEBE, 0xD151, 0xD43A, 0xD766, 0xDAC7, 0xDE49, 0xE1DD, 0xE572,\n    0xE8F6, 0xEC5A, 0xEF8A, 0xF278, 0xF512, 0xF747, 0xF906, 0xFA5A,\n    0xFB5E, 0xFC19, 0xFC94, 0xFCD6, 0xFCE5, 0xFCCA, 0xFC8C, 0xFC33,\n    0xFBC5, 0xFB4A, 0xFACA, 0xFA4D, 0xF9D9, 0xF976, 0xF8EE, 0xF815,\n    0xF702, 0xF5CA, 0xF485, 0xF349, 0xF22C, 0xF145, 0x0B16, 0x0B72,\n    0x0C77, 0x0E0D, 0x101D, 0x1292, 0x1552, 0x1849, 0x1B5E, 0x1E7B,\n    0x2188, 0x246F, 0x2718, 0x296E, 0x2B57, 0x2CBF, 0x2D8D, 0x2D40,\n    0x2B98, 0x28E6, 0x2576, 0x2199, 0x1D9D, 0x19D1, 0x1683, 0x12F1,\n    0x0EBB, 0x0AC5, 0x07F1, 0x0722, 0x07CC, 0x08C4, 0x0A02, 0x0B7A,\n    0x0D23, 0x0EF2, 0x10DD, 0x12DA, 0x14E0, 0x16E3, 0x18DA, 0x1ABB,\n    0x1C7C, 0x1E11, 0x1F73, 0x2095, 0x216E, 0x220A, 0x227B, 0x22C4,\n    0x22E7, 0x22E7, 0x22C6, 0x2287, 0x222B, 0x21B5, 0x2127, 0x2085,\n    0x1FCF, 0x1F09, 0x1E35, 0x1D56, 0x1C19, 0x1A4B, 0x1814, 0x15A0,\n    0x1318, 0x10A7, 0x0E77, 0x0CB3, 0xBF48, 0xBE72, 0xBC13, 0xB863,\n    0xB398, 0xADE8, 0xA78A, 0xA0B5, 0x999F, 0x927F, 0x8B8B, 0x84FA,\n    0x7F00, 0x79D8, 0x75B7, 0x72D4, 0x7164, 0x7323, 0x78E6, 0x818A,\n    0x8BE8, 0x96DE, 0xA14A, 0xAA06, 0xAFF1, 0xB169, 0xAF08, 0xAB09,\n    0xA7A3, 0xA710, 0xA8D7, 0xAAFC, 0xAD70, 0xB026, 0xB311, 0xB623,\n    0xB94E, 0xBC84, 0xBFB9, 0xC2DD, 0xC5E4, 0xC8C0, 0xCB63, 0xCDC0,\n    0xCFC8, 0xD16F, 0xD2A6, 0xD365, 0xD3B5, 0xD3A2, 0xD339, 0xD286,\n    0xD196, 0xD075, 0xCF2F, 0xCDD3, 0xCC6A, 0xCB04, 0xC9AB, 0xC86C,\n    0xC755, 0xC671, 0xC59D, 0xC4B4, 0xC3C1, 0xC2CE, 0xC1E4, 0xC10F,\n    0xC057, 0xBFC7, 0xF5A5, 0xF5A1, 0xF593, 0xF57F, 0xF565, 0xF549,\n    0xF52B, 0xF50E, 0xF4F4, 0xF4DE, 0xF4CE, 0xF4C7, 0xF4C9, 0xF4D7,\n    0xF4F3, 0xF51F, 0xF55B, 0xF5A8, 0xF600, 0xF663, 0xF6CF, 0xF744,\n    0xF7C1, 0xF844, 0xF8CC, 0xF959, 0xF9E9, 0xFA7B, 0xFB0F, 0xFBA3,\n    0xFC36, 0xFCC7, 0xFD56, 0xFDE0, 0xFE65, 0xFEE5, 0xFF5D, 0xFFCD,\n    0x0016, 0x0026, 0x000F, 0xFFE1, 0xFFA1, 0xFF4D, 0xFEE7, 0xFE73,\n    0xFDF4, 0xFD6F, 0xFCE7, 0xFC5D, 0xFBD0, 0xFB41, 0xFAB0, 0xFA1E,\n    0xF98C, 0xF8F9, 0xF866, 0xF7D4, 0xF743, 0xF6B2, 0xF624, 0xF5A5,\n    0xF59C, 0xF597, 0xF595, 0xF595, 0xF597, 0xF59A, 0xF59E, 0xF5A2,\n    0xF580, 0xF54B, 0xF4B4, 0xF3CB, 0xF29D, 0xF138, 0xEFAC, 0xEE05,\n    0xEC54, 0xEAA5, 0xE907, 0xE788, 0xE637, 0xE522, 0xE457, 0xE3E5,\n    0xE3D9, 0xE425, 0xE4AC, 0xE569, 0xE654, 0xE76A, 0xE8A2, 0xE9F9,\n    0xEB67, 0xECE7, 0xEE73, 0xF004, 0xF196, 0xF322, 0xF4A3, 0xF611,\n    0xF769, 0xF8A2, 0xF9B9, 0xFAA6, 0xFB64, 0xFBED, 0xFAB9, 0xF72B,\n    0xF29F, 0xEE6E, 0xEA2C, 0xE531, 0xE07B, 0xDD0A, 0xDBDD, 0xDC59,\n    0xDD33, 0xDE5E, 0xDFD1, 0xE17F, 0xE35E, 0xE562, 0xE781, 0xE9AE,\n    0xEBDE, 0xEE07, 0xF01D, 0xF214, 0xF3E2, 0xF580, 0xF59F, 0xF5B0,\n    0xF5B7, 0xF5B6, 0xF5AF, 0xF5A4, 0xF598, 0xF58C, 0xA064, 0xA068,\n    0xA071, 0xA081, 0xA095, 0xA0AF, 0xA0CC, 0xA0ED, 0xA111, 0xA137,\n    0xA15F, 0xA188, 0xA1B2, 0xA1DD, 0xA207, 0xA230, 0xA258, 0xA282,\n    0xA2B3, 0xA2E9, 0xA324, 0xA362, 0xA3A3, 0xA3E5, 0xA428, 0xA46A,\n    0xA4AB, 0xA4EA, 0xA525, 0xA55C, 0xA58D, 0xA5B8, 0xA5DC, 0xA5F7,\n    0xA609, 0xA610, 0xA60C, 0xA5FC, 0xA552, 0xA3CF, 0xA1EC, 0xA020,\n    0x9E3A, 0x9C00, 0x99DF, 0x9847, 0x97A3, 0x97B5, 0x97ED, 0x9848,\n    0x98C1, 0x9953, 0x99FA, 0x9AB0, 0x9B71, 0x9C38, 0x9D01, 0x9DC6,\n    0x9E84, 0x9F35, 0x9FD5, 0xA064, 0xA06F, 0xA075, 0xA077, 0xA077,\n    0xA075, 0xA071, 0xA06D, 0xA068, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x3FFF,\n};\n\n// 0x0604CF68\nstatic const u16 bowser_seg6_animindex_0604CF68[] = {\n    0x0046, 0x0001, 0x0046, 0x0047, 0x0046, 0x008D, 0x0046, 0x00D3, 0x0046, 0x0119, 0x0046, 0x015F,\n    0x0001, 0x0000, 0x0001, 0x0B41, 0x0001, 0x0000,\n    0x0046, 0x07F4, 0x0046, 0x083A, 0x0046, 0x0880,\n    0x0001, 0x0608, 0x0001, 0x0609, 0x0046, 0x060A,\n    0x0046, 0x01A8, 0x0046, 0x01EE, 0x0046, 0x0234,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0B40, 0x0001, 0x0000,\n    0x0046, 0x027A, 0x0046, 0x02C0, 0x0046, 0x0306,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0B3F, 0x0001, 0x0000,\n    0x0046, 0x08C6, 0x0046, 0x090C, 0x0046, 0x0952,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0046, 0x0650,\n    0x0046, 0x034C, 0x0046, 0x0392, 0x0046, 0x03D8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0B3E, 0x0001, 0x0000,\n    0x0046, 0x0696, 0x0046, 0x06DC, 0x0046, 0x0722,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0046, 0x041E,\n    0x0001, 0x01A5, 0x0001, 0x01A6, 0x0001, 0x01A7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0B3D, 0x0001, 0x0000,\n    0x0046, 0x0998, 0x0046, 0x09DE, 0x0046, 0x0A24,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0046, 0x0768,\n    0x0046, 0x0464, 0x0046, 0x04AA, 0x0046, 0x04F0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0B3C, 0x0001, 0x0000,\n    0x0046, 0x0A6A, 0x0046, 0x0AB0, 0x0046, 0x0AF6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0046, 0x07AE,\n    0x0046, 0x0536, 0x0046, 0x057C, 0x0046, 0x05C2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x0604D184\nstatic const struct Animation bowser_seg6_anim_0604D184 = {\n    0,\n    0,\n    0,\n    0,\n    0x46,\n    ANIMINDEX_NUMPARTS(bowser_seg6_animindex_0604CF68),\n    bowser_seg6_animvalue_0604B8E4,\n    bowser_seg6_animindex_0604CF68,\n    0,\n};\n"
  },
  {
    "path": "actors/bowser/anims/anim_0604E5A0.inc.c",
    "content": "// 0x0604D19C\nstatic const s16 bowser_seg6_animvalue_0604D19C[] = {\n    0x0000, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098,\n    0x0098, 0x0098, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097,\n    0x0097, 0x0097, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096, 0x0096,\n    0x0096, 0x0095, 0x0095, 0x0095, 0x0095, 0x0095, 0x0095, 0x0095,\n    0x0095, 0x0095, 0x0095, 0x0095, 0x0095, 0x0095, 0x0095, 0x0095,\n    0x0095, 0x0096, 0x0096, 0x0096, 0x0097, 0x0097, 0x0097, 0x0098,\n    0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098,\n    0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0xFFE7, 0xFFE7, 0xFFE7,\n    0xFFE7, 0xFFE7, 0xFFE7, 0xFFE7, 0xFFE7, 0xFFE7, 0xFFE7, 0xFFE7,\n    0xFFE7, 0xFFE7, 0xFFE7, 0xFFE8, 0xFFE8, 0xFFE8, 0xFFE9, 0xFFEA,\n    0xFFEA, 0xFFEB, 0xFFEC, 0xFFED, 0xFFEE, 0xFFEF, 0xFFF0, 0xFFF1,\n    0xFFF1, 0xFFF2, 0xFFF2, 0xFFF2, 0xFFF3, 0xFFF3, 0xFFF3, 0xFFF2,\n    0xFFF2, 0xFFF2, 0xFFF2, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF0, 0xFFF0,\n    0xFFEF, 0xFFEF, 0xFFEE, 0xFFED, 0xFFED, 0xFFEC, 0xFFEB, 0xFFEB,\n    0xFFEA, 0xFFE9, 0xFFE9, 0xFFE8, 0xFFE8, 0xFFE7, 0xFFE7, 0xFFE7,\n    0xFFE7, 0x0000, 0xFFF1, 0xFFC3, 0xFF79, 0xFF16, 0xFE9B, 0xFE0C,\n    0xFD6B, 0xFCB9, 0xFBF9, 0xFB2D, 0xFA59, 0xF97D, 0xF89D, 0xF7BA,\n    0xF6D8, 0xF5F7, 0xF51C, 0xF447, 0xF37C, 0xF2BC, 0xF20A, 0xF168,\n    0xF0D9, 0xF05F, 0xEFFC, 0xEFB2, 0xEF84, 0xEF74, 0xEF81, 0xEFA7,\n    0xEFE3, 0xF035, 0xF09B, 0xF113, 0xF19B, 0xF231, 0xF2D4, 0xF382,\n    0xF43A, 0xF4F9, 0xF5BE, 0xF688, 0xF754, 0xF821, 0xF8ED, 0xF9B6,\n    0xFA7C, 0xFB3B, 0xFBF2, 0xFCA1, 0xFD44, 0xFDDA, 0xFE62, 0xFED9,\n    0xFF3F, 0xFF91, 0xFFCE, 0xFFF4, 0x0000, 0x32C6, 0xC001, 0x32C6,\n    0x0000, 0x0002, 0x0008, 0x0012, 0x0020, 0x0031, 0x0045, 0x005C,\n    0x0075, 0x0091, 0x00AE, 0x00CC, 0x00EC, 0x010D, 0x012E, 0x0150,\n    0x0171, 0x0193, 0x01B3, 0x01D3, 0x01F2, 0x020F, 0x022A, 0x0243,\n    0x025A, 0x026E, 0x027F, 0x028D, 0x0298, 0x029E, 0x02A0, 0x029E,\n    0x0297, 0x028C, 0x027D, 0x026B, 0x0256, 0x023E, 0x0223, 0x0206,\n    0x01E7, 0x01C7, 0x01A6, 0x0184, 0x0161, 0x013E, 0x011C, 0x00FA,\n    0x00D8, 0x00B8, 0x009A, 0x007D, 0x0062, 0x004A, 0x0035, 0x0022,\n    0x0014, 0x0009, 0x0002, 0x0000, 0x0000, 0x0000, 0x0001, 0x0003,\n    0x0006, 0x000A, 0x000E, 0x0013, 0x0018, 0x001D, 0x0023, 0x002A,\n    0x0030, 0x0037, 0x003E, 0x0045, 0x004C, 0x0053, 0x0059, 0x0060,\n    0x0066, 0x006C, 0x0072, 0x0077, 0x007C, 0x0080, 0x0083, 0x0086,\n    0x0088, 0x008A, 0x008A, 0x008A, 0x0088, 0x0086, 0x0083, 0x007F,\n    0x007B, 0x0076, 0x0070, 0x006A, 0x0064, 0x005D, 0x0057, 0x0050,\n    0x0048, 0x0041, 0x003A, 0x0033, 0x002C, 0x0026, 0x001F, 0x0019,\n    0x0014, 0x000F, 0x000A, 0x0007, 0x0004, 0x0001, 0x0000, 0x0000,\n    0xA509, 0xA501, 0xA4EA, 0xA4C6, 0xA495, 0xA458, 0xA411, 0xA3C0,\n    0xA367, 0xA306, 0xA29F, 0xA233, 0xA1C2, 0xA14E, 0xA0D8, 0xA061,\n    0x9FEA, 0x9F74, 0x9F01, 0x9E90, 0x9E24, 0x9DBD, 0x9D5C, 0x9D03,\n    0x9CB2, 0x9C6A, 0x9C2E, 0x9BFD, 0x9BD8, 0x9BC2, 0x9BBA, 0x9BC2,\n    0x9BDA, 0x9C01, 0x9C35, 0x9C76, 0x9CC2, 0x9D17, 0x9D76, 0x9DDC,\n    0x9E49, 0x9EBA, 0x9F30, 0x9FA9, 0xA024, 0xA09F, 0xA11A, 0xA192,\n    0xA208, 0xA27A, 0xA2E7, 0xA34D, 0xA3AB, 0xA401, 0xA44D, 0xA48D,\n    0xA4C1, 0xA4E8, 0xA500, 0xA509, 0xE442, 0xE48A, 0xE54C, 0xE66F,\n    0xE7D4, 0xE95F, 0xEAF5, 0xEC79, 0xEDCE, 0xEEFB, 0xF01E, 0xF143,\n    0xF273, 0xF3BB, 0xF524, 0xF6D7, 0xF8D8, 0xFAF8, 0xFD0B, 0xFEE3,\n    0x0051, 0x0129, 0x01A4, 0x0219, 0x0287, 0x02EA, 0x0344, 0x0391,\n    0x03D0, 0x0401, 0x0421, 0x042F, 0x042A, 0x0410, 0x03E1, 0x0399,\n    0x0339, 0x02BE, 0x0228, 0x0174, 0x008E, 0xFF69, 0xFE09, 0xFC79,\n    0xFAC2, 0xF8EA, 0xF6FB, 0xF4FD, 0xF2F8, 0xF0F5, 0xEEFB, 0xED14,\n    0xEB46, 0xE99C, 0xE81C, 0xE6CF, 0xE5BE, 0xE4F1, 0xE46F, 0xE442,\n    0x0254, 0x0254, 0x0256, 0x0259, 0x025B, 0x025F, 0x0261, 0x0264,\n    0x0266, 0x0267, 0x0267, 0x0265, 0x0261, 0x025C, 0x0254, 0x023B,\n    0x020A, 0x01D0, 0x019A, 0x0174, 0x016D, 0x0191, 0x01E3, 0x0256,\n    0x02E2, 0x037D, 0x0421, 0x04C3, 0x055C, 0x05E3, 0x064F, 0x0698,\n    0x06B6, 0x06B6, 0x06AD, 0x069C, 0x0682, 0x0662, 0x063B, 0x060F,\n    0x05DD, 0x05A8, 0x056F, 0x0533, 0x04F5, 0x04B6, 0x0476, 0x0437,\n    0x03F9, 0x03BC, 0x0381, 0x034A, 0x0316, 0x02E7, 0x02BD, 0x0299,\n    0x027C, 0x0266, 0x0259, 0x0254, 0x053E, 0x053E, 0x053E, 0x053F,\n    0x053F, 0x0540, 0x0540, 0x0541, 0x0541, 0x0541, 0x0541, 0x0541,\n    0x0540, 0x053F, 0x053E, 0x055E, 0x05A9, 0x0600, 0x063E, 0x0644,\n    0x05EE, 0x051C, 0x03BA, 0x01E4, 0xFFBA, 0xFD59, 0xFAE2, 0xF876,\n    0xF633, 0xF439, 0xF2A9, 0xF1A3, 0xF144, 0xF15A, 0xF196, 0xF1F6,\n    0xF277, 0xF315, 0xF3CD, 0xF49D, 0xF581, 0xF676, 0xF779, 0xF887,\n    0xF99D, 0xFAB7, 0xFBD3, 0xFCED, 0xFE02, 0xFF10, 0x0012, 0x0106,\n    0x01EA, 0x02B9, 0x0371, 0x040F, 0x048F, 0x04EE, 0x0529, 0x053E,\n    0xF8D6, 0xF8DA, 0xF8E7, 0xF8F9, 0xF90F, 0xF926, 0xF93D, 0xF951,\n    0xF95F, 0xF967, 0xF965, 0xF958, 0xF93D, 0xF912, 0xF8D6, 0xF871,\n    0xF7D5, 0xF70F, 0xF626, 0xF528, 0xF41E, 0xF312, 0xF1E8, 0xF086,\n    0xEEFF, 0xED66, 0xEBCC, 0xEA45, 0xE8E3, 0xE7B8, 0xE6D7, 0xE652,\n    0xE63B, 0xE672, 0xE6C8, 0xE73A, 0xE7C6, 0xE869, 0xE921, 0xE9EA,\n    0xEAC3, 0xEBA9, 0xEC99, 0xED90, 0xEE8D, 0xEF8C, 0xF08B, 0xF187,\n    0xF27D, 0xF36C, 0xF451, 0xF528, 0xF5EF, 0xF6A5, 0xF745, 0xF7CF,\n    0xF83E, 0xF890, 0xF8C4, 0xF8D6, 0x2486, 0x2429, 0x2354, 0x2269,\n    0x21C7, 0x21D1, 0x22E9, 0x24DF, 0x2739, 0x29E3, 0x2CCB, 0x2FDF,\n    0x330A, 0x363A, 0x395C, 0x3C5E, 0x3F2C, 0x41B4, 0x43E3, 0x45A5,\n    0x470A, 0x4831, 0x491E, 0x49D7, 0x4A61, 0x4AC2, 0x4AFD, 0x4B1A,\n    0x4B1C, 0x4B09, 0x4AE6, 0x4AB9, 0x4A85, 0x4A4E, 0x4A0B, 0x49B8,\n    0x4950, 0x48CD, 0x482A, 0x4762, 0x466F, 0x454C, 0x43F3, 0x4260,\n    0x408D, 0x3D2D, 0x37D7, 0x31DD, 0x2C90, 0x2942, 0x279D, 0x2660,\n    0x257D, 0x24E7, 0x248E, 0x2465, 0x245E, 0x246B, 0x247D, 0x2486,\n    0xDB55, 0xDBB0, 0xDCAF, 0xDE3A, 0xE03B, 0xE299, 0xE53C, 0xE80C,\n    0xEAF1, 0xEDD4, 0xF09D, 0xF333, 0xF580, 0xF76A, 0xF8DA, 0xF9BF,\n    0xFA25, 0xFA23, 0xF9CD, 0xF93A, 0xF880, 0xF7B4, 0xF6EB, 0xF63D,\n    0xF597, 0xF4DD, 0xF412, 0xF339, 0xF257, 0xF16D, 0xF081, 0xEF95,\n    0xEEAE, 0xEDCD, 0xECF7, 0xEC30, 0xEB6A, 0xEA99, 0xE9BF, 0xE8DD,\n    0xE7F4, 0xE708, 0xE619, 0xE529, 0xE43A, 0xE34E, 0xE266, 0xE185,\n    0xE0AB, 0xDFDB, 0xDF17, 0xDE60, 0xDDB8, 0xDD20, 0xDC9B, 0xDC2B,\n    0xDBD0, 0xDB8D, 0xDB64, 0xDB55, 0x0000, 0xFFEB, 0xFFB0, 0xFF54,\n    0xFEDC, 0xFE4E, 0xFDB0, 0xFD07, 0xFC58, 0xFBA9, 0xFB00, 0xFA61,\n    0xF9D3, 0xF95B, 0xF8FD, 0xF8C3, 0xF8A9, 0xF8A8, 0xF8B9, 0xF8D4,\n    0xF8F1, 0xF908, 0xF912, 0xF907, 0xF8E5, 0xF8B1, 0xF872, 0xF82A,\n    0xF7DF, 0xF796, 0xF753, 0xF71B, 0xF6F2, 0xF6DE, 0xF6E2, 0xF703,\n    0xF73C, 0xF784, 0xF7D8, 0xF837, 0xF8A1, 0xF912, 0xF98A, 0xFA08,\n    0xFA8A, 0xFB0E, 0xFB92, 0xFC17, 0xFC99, 0xFD17, 0xFD91, 0xFE04,\n    0xFE6F, 0xFED1, 0xFF27, 0xFF72, 0xFFAE, 0xFFDB, 0xFFF7, 0x0000,\n    0xF34B, 0xF33A, 0xF30A, 0xF2BE, 0xF25B, 0xF1E5, 0xF160, 0xF0D0,\n    0xF039, 0xEFA0, 0xEF09, 0xEE77, 0xEDEF, 0xED75, 0xED0D, 0xECB4,\n    0xEC62, 0xEC18, 0xEBD6, 0xEB9A, 0xEB64, 0xEB34, 0xEB0A, 0xEAE6,\n    0xEAC1, 0xEA9A, 0xEA71, 0xEA49, 0xEA25, 0xEA07, 0xE9F0, 0xE9E3,\n    0xE9E3, 0xE9F1, 0xEA0F, 0xEA41, 0xEA83, 0xEAD3, 0xEB2D, 0xEB92,\n    0xEBFF, 0xEC74, 0xECEE, 0xED6D, 0xEDEF, 0xEE73, 0xEEF7, 0xEF79,\n    0xEFFA, 0xF076, 0xF0ED, 0xF15E, 0xF1C6, 0xF225, 0xF279, 0xF2C1,\n    0xF2FC, 0xF327, 0xF342, 0xF34B, 0x0000, 0xFFFE, 0xFFF8, 0xFFEF,\n    0xFFE1, 0xFFD1, 0xFFBE, 0xFFA8, 0xFF90, 0xFF77, 0xFF5B, 0xFF3E,\n    0xFF20, 0xFF01, 0xFEE1, 0xFEC1, 0xFEA1, 0xFE82, 0xFE63, 0xFE45,\n    0xFE27, 0xFE0C, 0xFDF2, 0xFDDA, 0xFDC4, 0xFDB1, 0xFDA1, 0xFD94,\n    0xFD8A, 0xFD84, 0xFD82, 0xFD84, 0xFD8B, 0xFD95, 0xFDA3, 0xFDB4,\n    0xFDC9, 0xFDE0, 0xFDF9, 0xFE14, 0xFE31, 0xFE50, 0xFE6F, 0xFE90,\n    0xFEB1, 0xFED2, 0xFEF3, 0xFF13, 0xFF33, 0xFF51, 0xFF6E, 0xFF8A,\n    0xFFA3, 0xFFBA, 0xFFCE, 0xFFDF, 0xFFED, 0xFFF8, 0xFFFE, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0002,\n    0x0002, 0x0003, 0x0003, 0x0004, 0x0005, 0x0005, 0x0006, 0x0007,\n    0x0008, 0x0008, 0x0009, 0x000A, 0x000B, 0x000B, 0x000C, 0x000C,\n    0x000D, 0x000D, 0x000E, 0x000E, 0x000E, 0x000E, 0x000E, 0x000E,\n    0x000E, 0x000E, 0x000E, 0x000D, 0x000D, 0x000C, 0x000C, 0x000B,\n    0x000A, 0x000A, 0x0009, 0x0008, 0x0007, 0x0007, 0x0006, 0x0005,\n    0x0004, 0x0004, 0x0003, 0x0002, 0x0002, 0x0001, 0x0001, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0xA438, 0xA42F, 0xA416, 0xA3EC,\n    0xA3B5, 0xA370, 0xA31F, 0xA2C3, 0xA25E, 0xA1F0, 0xA17B, 0xA100,\n    0xA080, 0x9FFC, 0x9F77, 0x9EF0, 0x9E69, 0x9DE3, 0x9D5F, 0x9CDF,\n    0x9C64, 0x9BEF, 0x9B82, 0x9B1C, 0x9AC0, 0x9A6F, 0x9A2B, 0x99F3,\n    0x99CA, 0x99B0, 0x99A7, 0x99B1, 0x99CC, 0x99F8, 0x9A33, 0x9A7D,\n    0x9AD3, 0x9B34, 0x9B9F, 0x9C13, 0x9C8E, 0x9D0F, 0x9D95, 0x9E1E,\n    0x9EAA, 0x9F35, 0x9FC1, 0xA04A, 0xA0D0, 0xA151, 0xA1CC, 0xA240,\n    0xA2AB, 0xA30D, 0xA363, 0xA3AC, 0xA3E7, 0xA413, 0xA42F, 0xA438,\n    0x8001, 0x8001, 0xBE14, 0xBE1B, 0xBE2F, 0xBE4F, 0xBE7A, 0xBEAF,\n    0xBEED, 0xBF34, 0xBF82, 0xBFD7, 0xC031, 0xC090, 0xC0F3, 0xC158,\n    0xC1BF, 0xC227, 0xC290, 0xC2F7, 0xC35C, 0xC3BF, 0xC41E, 0xC478,\n    0xC4CC, 0xC51B, 0xC561, 0xC5A0, 0xC5D5, 0xC600, 0xC620, 0xC634,\n    0xC63A, 0xC633, 0xC61E, 0xC5FC, 0xC5CE, 0xC596, 0xC553, 0xC508,\n    0xC4B6, 0xC45C, 0xC3FD, 0xC39A, 0xC332, 0xC2C9, 0xC25D, 0xC1F1,\n    0xC186, 0xC11C, 0xC0B5, 0xC051, 0xBFF2, 0xBF99, 0xBF46, 0xBEFB,\n    0xBEB9, 0xBE80, 0xBE53, 0xBE31, 0xBE1C, 0xBE14, 0xCA03, 0xC978,\n    0xC7F0, 0xC594, 0xC28C, 0xBF01, 0xBB1B, 0xB701, 0xB2DD, 0xAED7,\n    0xAB17, 0xA7C5, 0xA50A, 0xA30D, 0xA1F8, 0xA2BF, 0xA5C7, 0xAA58,\n    0xAFBE, 0xB543, 0xBA32, 0xBDD5, 0xC096, 0xC350, 0xC5F7, 0xC882,\n    0xCAE4, 0xCD14, 0xCF05, 0xD0AE, 0xD202, 0xD2F7, 0xD381, 0xD3C4,\n    0xD3E8, 0xD3F1, 0xD3DF, 0xD3B7, 0xD379, 0xD327, 0xD2C5, 0xD254,\n    0xD1D6, 0xD14D, 0xD0BC, 0xD025, 0xCF89, 0xCEEC, 0xCE4F, 0xCDB4,\n    0xCD1D, 0xCC8E, 0xCC07, 0xCB8B, 0xCB1C, 0xCABD, 0xCA6F, 0xCA35,\n    0xCA10, 0xCA03, 0xFFA2, 0xFFA2, 0xFFA2, 0xFFA3, 0xFFA8, 0xFFB0,\n    0xFFBE, 0xFFD2, 0xFFEF, 0x0014, 0x0045, 0x0085, 0x00D6, 0x0134,\n    0x019C, 0x020A, 0x0279, 0x02E7, 0x034F, 0x03AF, 0x0401, 0x0442,\n    0x046F, 0x0484, 0x0478, 0x0449, 0x03FC, 0x0397, 0x031F, 0x0298,\n    0x0209, 0x0176, 0x00E4, 0x0044, 0xFF8B, 0xFEBF, 0xFDEA, 0xFD15,\n    0xFC4A, 0xFB92, 0xFAD7, 0xFA04, 0xF925, 0xF845, 0xF770, 0xF6B2,\n    0xF615, 0xF5A6, 0xF56F, 0xF57D, 0xF5F0, 0xF6CE, 0xF7FB, 0xF95A,\n    0xFAD1, 0xFC42, 0xFD92, 0xFEA5, 0xFF5E, 0xFFA2, 0xFF46, 0xFF3F,\n    0xFF2C, 0xFF12, 0xFEF6, 0xFEDE, 0xFECE, 0xFECB, 0xFEDA, 0xFF00,\n    0xFF43, 0xFFA9, 0x0032, 0x00D9, 0x0193, 0x025A, 0x0325, 0x03ED,\n    0x04AA, 0x0554, 0x05E4, 0x0651, 0x0694, 0x06A5, 0x066B, 0x05DD,\n    0x050C, 0x0409, 0x02E5, 0x01B0, 0x007C, 0xFF5A, 0xFE59, 0xFD58,\n    0xFC39, 0xFB13, 0xF9FD, 0xF90E, 0xF85E, 0xF802, 0xF7F2, 0xF80F,\n    0xF851, 0xF8B1, 0xF926, 0xF9A8, 0xFA30, 0xFAB5, 0xFB30, 0xFB99,\n    0xFBFF, 0xFC72, 0xFCED, 0xFD6A, 0xFDE4, 0xFE54, 0xFEB6, 0xFF02,\n    0xFF34, 0xFF46, 0x9A98, 0x99D2, 0x97B0, 0x947F, 0x9089, 0x8C17,\n    0x8777, 0x82F1, 0x7ECE, 0x7B5F, 0x78EC, 0x7740, 0x75EC, 0x74E4,\n    0x741B, 0x7384, 0x7312, 0x72B7, 0x7268, 0x7217, 0x71B7, 0x713B,\n    0x7096, 0x6FBC, 0x6E8D, 0x6D08, 0x6B4E, 0x697D, 0x67B6, 0x6619,\n    0x64C5, 0x63DB, 0x6379, 0x63D0, 0x64DE, 0x6673, 0x6864, 0x6A82,\n    0x6CA1, 0x6E92, 0x705E, 0x722E, 0x7402, 0x75DE, 0x77C3, 0x79B1,\n    0x7BAC, 0x7DB5, 0x7FCE, 0x81FB, 0x8473, 0x875B, 0x8A88, 0x8DD0,\n    0x9109, 0x940B, 0x96AA, 0x98BD, 0x9A1A, 0x9A98, 0x0000, 0x0013,\n    0x0049, 0x009D, 0x0109, 0x0189, 0x0216, 0x02AC, 0x0345, 0x03DC,\n    0x046C, 0x04F0, 0x0561, 0x05BB, 0x05F9, 0x0611, 0x0602, 0x05D4,\n    0x0590, 0x053F, 0x04E9, 0x0498, 0x0452, 0x0422, 0x0402, 0x03E6,\n    0x03CF, 0x03BA, 0x03A8, 0x0397, 0x0386, 0x0376, 0x0363, 0x034F,\n    0x0338, 0x031D, 0x02FE, 0x02DB, 0x02B7, 0x0290, 0x0267, 0x023D,\n    0x0211, 0x01E5, 0x01B9, 0x018D, 0x0161, 0x0136, 0x010C, 0x00E4,\n    0x00BE, 0x009A, 0x0079, 0x005B, 0x0041, 0x002A, 0x0018, 0x000B,\n    0x0002, 0x0000, 0x0000, 0xFFFF, 0xFFFA, 0xFFF1, 0xFFE6, 0xFFD7,\n    0xFFC5, 0xFFB0, 0xFF99, 0xFF7E, 0xFF62, 0xFF42, 0xFF20, 0xFEFC,\n    0xFED5, 0xFEA1, 0xFE59, 0xFE04, 0xFDA8, 0xFD4D, 0xFCF9, 0xFCB4,\n    0xFC84, 0xFC70, 0xFC76, 0xFC8C, 0xFCB0, 0xFCDF, 0xFD17, 0xFD53,\n    0xFD92, 0xFDD0, 0xFE0C, 0xFE41, 0xFE6D, 0xFE8D, 0xFEA6, 0xFEBF,\n    0xFED7, 0xFEEF, 0xFF06, 0xFF1C, 0xFF32, 0xFF47, 0xFF5C, 0xFF6F,\n    0xFF81, 0xFF93, 0xFFA3, 0xFFB2, 0xFFC0, 0xFFCD, 0xFFD9, 0xFFE3,\n    0xFFEC, 0xFFF3, 0xFFF9, 0xFFFD, 0x0000, 0x0000, 0xCD46, 0xCD10,\n    0xCC7B, 0xCB97, 0xCA76, 0xC92A, 0xC7C2, 0xC652, 0xC4E9, 0xC399,\n    0xC274, 0xC18B, 0xC0EF, 0xC0B1, 0xC0E2, 0xC1F7, 0xC423, 0xC713,\n    0xCA79, 0xCE02, 0xD15F, 0xD43E, 0xD64E, 0xD73F, 0xD72C, 0xD67A,\n    0xD546, 0xD3AF, 0xD1D0, 0xCFC8, 0xCDB5, 0xCBB3, 0xC9E0, 0xC85A,\n    0xC73E, 0xC6AA, 0xC671, 0xC654, 0xC650, 0xC662, 0xC689, 0xC6C3,\n    0xC70C, 0xC764, 0xC7C8, 0xC835, 0xC8A9, 0xC923, 0xC9A0, 0xCA1D,\n    0xCA99, 0xCB11, 0xCB83, 0xCBEE, 0xCC4E, 0xCCA1, 0xCCE6, 0xCD1A,\n    0xCD3A, 0xCD46, 0x3F4B, 0x3F51, 0x3F61, 0x3F7A, 0x3F9D, 0x3FC8,\n    0x3FFB, 0x4034, 0x4073, 0x40B7, 0x4100, 0x414D, 0x419D, 0x41EF,\n    0x4242, 0x4296, 0x42EA, 0x433E, 0x4390, 0x43E0, 0x442C, 0x4475,\n    0x44BA, 0x44F9, 0x4532, 0x4564, 0x458F, 0x45B2, 0x45CC, 0x45DC,\n    0x45E1, 0x45DB, 0x45CA, 0x45AF, 0x458A, 0x455C, 0x4527, 0x44EA,\n    0x44A7, 0x445F, 0x4412, 0x43C2, 0x436E, 0x4319, 0x42C2, 0x426B,\n    0x4214, 0x41BE, 0x416B, 0x411A, 0x40CE, 0x4085, 0x4043, 0x4006,\n    0x3FD0, 0x3FA3, 0x3F7E, 0x3F62, 0x3F51, 0x3F4B, 0x0AA8, 0x0AAA,\n    0x0AB1, 0x0ABC, 0x0ACB, 0x0ADE, 0x0AF4, 0x0B0C, 0x0B28, 0x0B45,\n    0x0B65, 0x0B86, 0x0BA8, 0x0BCC, 0x0BF0, 0x0C14, 0x0C38, 0x0C5D,\n    0x0C80, 0x0CA2, 0x0CC3, 0x0CE3, 0x0D01, 0x0D1C, 0x0D35, 0x0D4A,\n    0x0D5D, 0x0D6C, 0x0D77, 0x0D7E, 0x0D80, 0x0D7E, 0x0D76, 0x0D6B,\n    0x0D5B, 0x0D47, 0x0D30, 0x0D16, 0x0CF9, 0x0CD9, 0x0CB8, 0x0C95,\n    0x0C71, 0x0C4C, 0x0C27, 0x0C01, 0x0BDC, 0x0BB7, 0x0B93, 0x0B70,\n    0x0B4F, 0x0B30, 0x0B13, 0x0AF8, 0x0AE1, 0x0ACE, 0x0ABE, 0x0AB2,\n    0x0AAA, 0x0AA8, 0x0AC9, 0x0ACC, 0x0AD5, 0x0AE5, 0x0AF9, 0x0B12,\n    0x0B30, 0x0B51, 0x0B77, 0x0B9F, 0x0BCA, 0x0BF7, 0x0C25, 0x0C55,\n    0x0C86, 0x0CB8, 0x0CE9, 0x0D1A, 0x0D4A, 0x0D79, 0x0DA6, 0x0DD1,\n    0x0DF9, 0x0E1E, 0x0E40, 0x0E5E, 0x0E77, 0x0E8B, 0x0E9A, 0x0EA4,\n    0x0EA7, 0x0EA3, 0x0E99, 0x0E89, 0x0E74, 0x0E59, 0x0E39, 0x0E16,\n    0x0DEE, 0x0DC4, 0x0D97, 0x0D68, 0x0D37, 0x0D04, 0x0CD1, 0x0C9E,\n    0x0C6B, 0x0C39, 0x0C08, 0x0BD9, 0x0BAC, 0x0B81, 0x0B5A, 0x0B36,\n    0x0B17, 0x0AFC, 0x0AE6, 0x0AD6, 0x0ACC, 0x0AC9, 0xA078, 0xA088,\n    0xA0B6, 0xA101, 0xA165, 0xA1E1, 0xA273, 0xA319, 0xA3D0, 0xA496,\n    0xA569, 0xA646, 0xA72D, 0xA81A, 0xA90B, 0xA9FF, 0xAAF2, 0xABE3,\n    0xACD0, 0xADB7, 0xAE95, 0xAF68, 0xB02E, 0xB0E4, 0xB18A, 0xB21C,\n    0xB298, 0xB2FC, 0xB347, 0xB375, 0xB385, 0xB374, 0xB343, 0xB2F3,\n    0xB288, 0xB204, 0xB169, 0xB0BA, 0xAFF8, 0xAF27, 0xAE49, 0xAD60,\n    0xAC6F, 0xAB78, 0xAA7D, 0xA981, 0xA886, 0xA78E, 0xA69D, 0xA5B4,\n    0xA4D6, 0xA405, 0xA343, 0xA294, 0xA1F9, 0xA175, 0xA10A, 0xA0BB,\n    0xA089, 0xA078, 0x1945, 0x1914, 0x188D, 0x17BC, 0x16B1, 0x157A,\n    0x1426, 0x12C3, 0x115F, 0x100A, 0x0ED1, 0x0DC3, 0x0CEE, 0x0C62,\n    0x0C2C, 0x0CD8, 0x0EA0, 0x1112, 0x13BF, 0x1636, 0x1809, 0x18C6,\n    0x188B, 0x17D2, 0x16B8, 0x1557, 0x13CB, 0x1231, 0x10A4, 0x0F3F,\n    0x0E1F, 0x0D5F, 0x0D1B, 0x0D2B, 0x0D51, 0x0D8E, 0x0DDD, 0x0E3F,\n    0x0EB0, 0x0F2F, 0x0FBA, 0x1050, 0x10ED, 0x1191, 0x123A, 0x12E5,\n    0x1391, 0x143C, 0x14E4, 0x1588, 0x1624, 0x16B8, 0x1742, 0x17BF,\n    0x182F, 0x188E, 0x18DB, 0x1915, 0x1939, 0x1945, 0xE9B2, 0xE95D,\n    0xE86D, 0xE6FA, 0xE51A, 0xE2E7, 0xE077, 0xDDE1, 0xDB3E, 0xD8A4,\n    0xD62C, 0xD3ED, 0xD1FE, 0xD076, 0xCF6E, 0xCF62, 0xD07E, 0xD260,\n    0xD4A4, 0xD6E8, 0xD8C9, 0xD9E5, 0xDA5C, 0xDA96, 0xDAA2, 0xDA8B,\n    0xDA5D, 0xDA25, 0xD9EF, 0xD9C8, 0xD9BA, 0xD9D4, 0xDA21, 0xDA94,\n    0xDB16, 0xDBA6, 0xDC42, 0xDCEA, 0xDD9A, 0xDE53, 0xDF11, 0xDFD4,\n    0xE09A, 0xE162, 0xE229, 0xE2EF, 0xE3B2, 0xE470, 0xE527, 0xE5D7,\n    0xE67E, 0xE71A, 0xE7A9, 0xE82A, 0xE89B, 0xE8FC, 0xE949, 0xE983,\n    0xE9A6, 0xE9B2, 0xBD23, 0xBD65, 0xBE1E, 0xBF36, 0xC096, 0xC226,\n    0xC3D1, 0xC57D, 0xC715, 0xC881, 0xC9AA, 0xCA79, 0xCAD6, 0xCAAC,\n    0xC9E1, 0xC722, 0xC1D7, 0xBB0A, 0xB3C2, 0xAD08, 0xA7E4, 0xA55E,\n    0xA515, 0xA5D5, 0xA76B, 0xA9A4, 0xAC4D, 0xAF32, 0xB221, 0xB4E5,\n    0xB74C, 0xB923, 0xBA36, 0xBACE, 0xBB54, 0xBBCB, 0xBC33, 0xBC8D,\n    0xBCDA, 0xBD1A, 0xBD4F, 0xBD79, 0xBD99, 0xBDB0, 0xBDBF, 0xBDC7,\n    0xBDC9, 0xBDC5, 0xBDBC, 0xBDB0, 0xBDA1, 0xBD90, 0xBD7D, 0xBD6A,\n    0xBD58, 0xBD47, 0xBD38, 0xBD2D, 0xBD25, 0xBD23, 0xF071, 0xF042,\n    0xEFBF, 0xEEF6, 0xEDF5, 0xECCC, 0xEB89, 0xEA3A, 0xE8ED, 0xE7B1,\n    0xE695, 0xE5A8, 0xE4F6, 0xE490, 0xE483, 0xE500, 0xE618, 0xE7A9,\n    0xE992, 0xEBB1, 0xEDE7, 0xF011, 0xF20E, 0xF3BD, 0xF550, 0xF705,\n    0xF8CF, 0xFAA0, 0xFC6B, 0xFE21, 0xFFB6, 0x011A, 0x0242, 0x0320,\n    0x03A6, 0x03C6, 0x0397, 0x033D, 0x02BB, 0x0216, 0x0151, 0x0071,\n    0xFF7B, 0xFE70, 0xFD56, 0xFC31, 0xFB05, 0xF9D6, 0xF8A7, 0xF77E,\n    0xF65E, 0xF54B, 0xF449, 0xF35C, 0xF289, 0xF1D3, 0xF13E, 0xF0CF,\n    0xF089, 0xF071, 0x0B16, 0x0B61, 0x0C34, 0x0D7D, 0x0F29, 0x1127,\n    0x1363, 0x15CA, 0x184B, 0x1AD3, 0x1D4F, 0x1FAC, 0x21D9, 0x23C2,\n    0x2555, 0x26A2, 0x27C6, 0x28BF, 0x298D, 0x2A2E, 0x2AA1, 0x2AE6,\n    0x2AFB, 0x2ADF, 0x2A93, 0x2A1A, 0x297C, 0x28BE, 0x27E5, 0x26F8,\n    0x25FC, 0x24F8, 0x23F1, 0x22ED, 0x21F3, 0x2107, 0x201B, 0x1F1D,\n    0x1E0F, 0x1CF3, 0x1BCD, 0x1A9F, 0x196B, 0x1833, 0x16FB, 0x15C5,\n    0x1494, 0x1369, 0x1247, 0x1132, 0x102B, 0x0F35, 0x0E52, 0x0D86,\n    0x0CD2, 0x0C39, 0x0BBD, 0x0B62, 0x0B2A, 0x0B16, 0xBF48, 0xBF06,\n    0xBE4D, 0xBD2C, 0xBBB5, 0xB9F8, 0xB807, 0xB5F2, 0xB3CA, 0xB1A0,\n    0xAF85, 0xAD89, 0xABBE, 0xAA34, 0xA8FC, 0xA7FB, 0xA712, 0xA64E,\n    0xA5BB, 0xA566, 0xA55C, 0xA5A9, 0xA65A, 0xA77D, 0xA930, 0xAB74,\n    0xAE2A, 0xB132, 0xB46B, 0xB7B4, 0xBAEF, 0xBDFA, 0xC0B6, 0xC302,\n    0xC4BE, 0xC5CA, 0xC65D, 0xC6C6, 0xC707, 0xC725, 0xC722, 0xC701,\n    0xC6C6, 0xC674, 0xC60E, 0xC597, 0xC513, 0xC485, 0xC3EF, 0xC356,\n    0xC2BC, 0xC225, 0xC193, 0xC10B, 0xC08E, 0xC021, 0xBFC7, 0xBF83,\n    0xBF57, 0xBF48, 0xF5A5, 0xF5A7, 0xF5AC, 0xF5B3, 0xF5BD, 0xF5CA,\n    0xF5D8, 0xF5E9, 0xF5FB, 0xF60F, 0xF624, 0xF63A, 0xF651, 0xF669,\n    0xF681, 0xF699, 0xF6B1, 0xF6C9, 0xF6E1, 0xF6F8, 0xF70E, 0xF723,\n    0xF737, 0xF749, 0xF75A, 0xF769, 0xF775, 0xF77F, 0xF786, 0xF78B,\n    0xF78D, 0xF78B, 0xF786, 0xF77E, 0xF773, 0xF766, 0xF757, 0xF745,\n    0xF732, 0xF71D, 0xF707, 0xF6F0, 0xF6D7, 0xF6BF, 0xF6A6, 0xF68C,\n    0xF673, 0xF65B, 0xF643, 0xF62B, 0xF615, 0xF600, 0xF5ED, 0xF5DB,\n    0xF5CC, 0xF5BF, 0xF5B4, 0xF5AC, 0xF5A7, 0xF5A5, 0xF580, 0xF580,\n    0xF581, 0xF582, 0xF583, 0xF585, 0xF587, 0xF58A, 0xF58C, 0xF58F,\n    0xF592, 0xF595, 0xF598, 0xF59C, 0xF59F, 0xF5A3, 0xF5A6, 0xF5A9,\n    0xF5AD, 0xF5B0, 0xF5B3, 0xF5B6, 0xF5B9, 0xF5BB, 0xF5BE, 0xF5C0,\n    0xF5C2, 0xF5C3, 0xF5C4, 0xF5C5, 0xF5C5, 0xF5C5, 0xF5C4, 0xF5C3,\n    0xF5C1, 0xF5BF, 0xF5BD, 0xF5BB, 0xF5B8, 0xF5B5, 0xF5B2, 0xF5AF,\n    0xF5AB, 0xF5A8, 0xF5A4, 0xF5A1, 0xF59D, 0xF59A, 0xF596, 0xF593,\n    0xF590, 0xF58D, 0xF58A, 0xF588, 0xF586, 0xF584, 0xF582, 0xF581,\n    0xF580, 0xF580, 0xA064, 0xA075, 0xA0A6, 0xA0F5, 0xA15F, 0xA1E3,\n    0xA27E, 0xA32D, 0xA3EF, 0xA4C1, 0xA5A0, 0xA68B, 0xA780, 0xA87B,\n    0xA97B, 0xAA7D, 0xAB7F, 0xAC7E, 0xAD7A, 0xAE6E, 0xAF59, 0xB039,\n    0xB10A, 0xB1CC, 0xB27B, 0xB316, 0xB39A, 0xB404, 0xB453, 0xB484,\n    0xB495, 0xB483, 0xB44F, 0xB3FA, 0xB389, 0xB2FD, 0xB259, 0xB19F,\n    0xB0D2, 0xAFF4, 0xAF09, 0xAE12, 0xAD12, 0xAC0C, 0xAB02, 0xA9F7,\n    0xA8ED, 0xA7E7, 0xA6E7, 0xA5F0, 0xA505, 0xA427, 0xA35A, 0xA2A0,\n    0xA1FC, 0xA170, 0xA0FF, 0xA0AB, 0xA076, 0xA064, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n};\n\n// 0x0604E384\nstatic const u16 bowser_seg6_animindex_0604E384[] = {\n    0x0001, 0x0000, 0x003C, 0x0001, 0x003C, 0x003D, 0x003C, 0x0079, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x08F3, 0x0001, 0x0000,\n    0x003C, 0x061E, 0x003C, 0x065A, 0x003C, 0x0696,\n    0x0001, 0x0400, 0x0001, 0x0401, 0x003C, 0x0402,\n    0x003C, 0x00B8, 0x003C, 0x00F4, 0x003C, 0x0130,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x08F2, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x003C, 0x016C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x08F1, 0x0001, 0x0000,\n    0x003C, 0x06D2, 0x003C, 0x070E, 0x003C, 0x074A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x003C, 0x043E,\n    0x003C, 0x01A8, 0x003C, 0x01E4, 0x003C, 0x0220,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x08F0, 0x0001, 0x0000,\n    0x003C, 0x047A, 0x003C, 0x04B6, 0x003C, 0x04F2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x003C, 0x025C,\n    0x0001, 0x00B5, 0x0001, 0x00B6, 0x0001, 0x00B7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x08EF, 0x0001, 0x0000,\n    0x003C, 0x0786, 0x003C, 0x07C2, 0x003C, 0x07FE,\n    0x003C, 0x052E, 0x003C, 0x056A, 0x003C, 0x05A6,\n    0x003C, 0x0298, 0x003C, 0x02D4, 0x003C, 0x0310,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x08EE, 0x0001, 0x0000,\n    0x003C, 0x083A, 0x003C, 0x0876, 0x003C, 0x08B2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x003C, 0x05E2,\n    0x003C, 0x034C, 0x003C, 0x0388, 0x003C, 0x03C4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x0604E5A0\nstatic const struct Animation bowser_seg6_anim_0604E5A0 = {\n    0,\n    0,\n    0,\n    0,\n    0x3C,\n    ANIMINDEX_NUMPARTS(bowser_seg6_animindex_0604E384),\n    bowser_seg6_animvalue_0604D19C,\n    bowser_seg6_animindex_0604E384,\n    0,\n};\n"
  },
  {
    "path": "actors/bowser/anims/anim_0604F030.inc.c",
    "content": "// 0x0604E5B8\nstatic const s16 bowser_seg6_animvalue_0604E5B8[] = {\n    0x0000, 0x0098, 0xFFE7, 0x0000, 0x0005, 0x0013, 0x0029, 0x0047,\n    0x006B, 0x0093, 0x00C0, 0x00EF, 0x0120, 0x0151, 0x0182, 0x01B1,\n    0x01DD, 0x0206, 0x022A, 0x0247, 0x025E, 0x026C, 0x0271, 0x026D,\n    0x0260, 0x024B, 0x0230, 0x0210, 0x01EA, 0x01C1, 0x0195, 0x0167,\n    0x0138, 0x010A, 0x00DC, 0x00B0, 0x0087, 0x0061, 0x0041, 0x0026,\n    0x0011, 0x0004, 0x0000, 0x0004, 0x0011, 0x0026, 0x0041, 0x0061,\n    0x0087, 0x00B0, 0x00DC, 0x010A, 0x0138, 0x0167, 0x0195, 0x01C1,\n    0x01EA, 0x0210, 0x0230, 0x024B, 0x0260, 0x026D, 0x0271, 0x026D,\n    0x0260, 0x024B, 0x0230, 0x0210, 0x01EA, 0x01C1, 0x0195, 0x0167,\n    0x0138, 0x010A, 0x00DC, 0x00B0, 0x0087, 0x0061, 0x0041, 0x0026,\n    0x0011, 0x0004, 0x0000, 0x32C6, 0xC001, 0x32C6, 0xA509, 0xA50B,\n    0xA512, 0xA51E, 0xA52C, 0xA53E, 0xA553, 0xA569, 0xA580, 0xA599,\n    0xA5B1, 0xA5CA, 0xA5E1, 0xA5F8, 0xA60C, 0xA61E, 0xA62D, 0xA638,\n    0xA63F, 0xA642, 0xA63F, 0xA639, 0xA62F, 0xA621, 0xA611, 0xA5FE,\n    0xA5E9, 0xA5D3, 0xA5BC, 0xA5A5, 0xA58E, 0xA577, 0xA561, 0xA54C,\n    0xA53A, 0xA529, 0xA51C, 0xA511, 0xA50B, 0xA509, 0xA50B, 0xA511,\n    0xA51C, 0xA529, 0xA53A, 0xA54C, 0xA561, 0xA577, 0xA58E, 0xA5A5,\n    0xA5BC, 0xA5D3, 0xA5E9, 0xA5FE, 0xA611, 0xA621, 0xA62F, 0xA639,\n    0xA63F, 0xA642, 0xA63F, 0xA639, 0xA62F, 0xA621, 0xA611, 0xA5FE,\n    0xA5E9, 0xA5D3, 0xA5BC, 0xA5A5, 0xA58E, 0xA577, 0xA561, 0xA54C,\n    0xA53A, 0xA529, 0xA51C, 0xA511, 0xA50B, 0xA509, 0xE442, 0xE43E,\n    0xE432, 0xE41F, 0xE407, 0xE3E9, 0xE3C7, 0xE3A2, 0xE37B, 0xE352,\n    0xE329, 0xE300, 0xE2D9, 0xE2B4, 0xE292, 0xE274, 0xE25C, 0xE249,\n    0xE23D, 0xE239, 0xE23D, 0xE247, 0xE258, 0xE26F, 0xE28A, 0xE2A9,\n    0xE2CC, 0xE2F0, 0xE317, 0xE33E, 0xE365, 0xE38B, 0xE3AF, 0xE3D2,\n    0xE3F1, 0xE40C, 0xE423, 0xE434, 0xE43F, 0xE442, 0xE43F, 0xE434,\n    0xE423, 0xE40C, 0xE3F1, 0xE3D2, 0xE3AF, 0xE38B, 0xE365, 0xE33E,\n    0xE317, 0xE2F0, 0xE2CC, 0xE2A9, 0xE28A, 0xE26F, 0xE258, 0xE247,\n    0xE23D, 0xE239, 0xE23D, 0xE247, 0xE258, 0xE26F, 0xE28A, 0xE2A9,\n    0xE2CC, 0xE2F0, 0xE317, 0xE33E, 0xE365, 0xE38B, 0xE3AF, 0xE3D2,\n    0xE3F1, 0xE40C, 0xE423, 0xE434, 0xE43F, 0xE442, 0x0254, 0x053E,\n    0xF8D6, 0x2486, 0xDB55, 0xF34B, 0xA509, 0xA50B, 0xA512, 0xA51E,\n    0xA52C, 0xA53E, 0xA553, 0xA569, 0xA580, 0xA599, 0xA5B1, 0xA5CA,\n    0xA5E1, 0xA5F8, 0xA60C, 0xA61E, 0xA62D, 0xA638, 0xA63F, 0xA642,\n    0xA63F, 0xA639, 0xA62F, 0xA621, 0xA611, 0xA5FE, 0xA5E9, 0xA5D3,\n    0xA5BD, 0xA5A5, 0xA58E, 0xA577, 0xA561, 0xA54C, 0xA53A, 0xA529,\n    0xA51C, 0xA511, 0xA50B, 0xA509, 0xA50B, 0xA511, 0xA51C, 0xA529,\n    0xA53A, 0xA54C, 0xA561, 0xA577, 0xA58E, 0xA5A5, 0xA5BD, 0xA5D3,\n    0xA5E9, 0xA5FE, 0xA611, 0xA621, 0xA62F, 0xA639, 0xA63F, 0xA642,\n    0xA63F, 0xA639, 0xA62F, 0xA621, 0xA611, 0xA5FE, 0xA5E9, 0xA5D3,\n    0xA5BD, 0xA5A5, 0xA58E, 0xA577, 0xA561, 0xA54C, 0xA53A, 0xA529,\n    0xA51C, 0xA511, 0xA50B, 0xA509, 0x8001, 0x8001, 0xBE14, 0xCA03,\n    0xFFA2, 0xFFA2, 0xFFA1, 0xFFA0, 0xFF9F, 0xFF9F, 0xFFA0, 0xFFA2,\n    0xFFA6, 0xFFAC, 0xFFB4, 0xFFBF, 0xFFCE, 0xFFE0, 0xFFF6, 0x0010,\n    0x002F, 0x0053, 0x007C, 0x00AC, 0x00F2, 0x015B, 0x01DD, 0x0271,\n    0x030D, 0x03A9, 0x043D, 0x04C0, 0x0529, 0x0570, 0x058C, 0x058B,\n    0x0581, 0x056E, 0x0553, 0x0531, 0x0506, 0x04D5, 0x049E, 0x0461,\n    0x041E, 0x03D7, 0x038B, 0x033B, 0x02E8, 0x0292, 0x023A, 0x01E0,\n    0x0184, 0x0128, 0x00BE, 0x003C, 0xFFA9, 0xFF06, 0xFE59, 0xFDA6,\n    0xFCF2, 0xFC42, 0xFB98, 0xFAFB, 0xFA6E, 0xF9F6, 0xF997, 0xF955,\n    0xF936, 0xF93F, 0xF972, 0xF9C8, 0xFA3A, 0xFAC3, 0xFB5C, 0xFC00,\n    0xFCA7, 0xFD4D, 0xFDE9, 0xFE78, 0xFEF1, 0xFF4F, 0xFF8C, 0xFFA2,\n    0xFF46, 0xFF2B, 0xFEDC, 0xFE5F, 0xFDBB, 0xFCF5, 0xFC14, 0xFB1D,\n    0xFA17, 0xF907, 0xF7F3, 0xF6E1, 0xF5D8, 0xF4DC, 0xF3F5, 0xF328,\n    0xF27B, 0xF1F3, 0xF198, 0xF16F, 0xF197, 0xF221, 0xF2FC, 0xF418,\n    0xF564, 0xF6D1, 0xF84E, 0xF9CA, 0xFB35, 0xFC7E, 0xFD96, 0xFE93,\n    0xFF98, 0x00A2, 0x01B1, 0x02C3, 0x03D4, 0x04E4, 0x05F1, 0x06F9,\n    0x07F9, 0x08F2, 0x09DF, 0x0AC1, 0x0B94, 0x0C57, 0x0D08, 0x0DA6,\n    0x0E2F, 0x0EA0, 0x0EF4, 0x0F29, 0x0F40, 0x0F3D, 0x0F21, 0x0EF0,\n    0x0EAB, 0x0E56, 0x0DF2, 0x0D83, 0x0D0B, 0x0C8C, 0x0C08, 0x0B83,\n    0x0AFF, 0x0A67, 0x09A8, 0x08CB, 0x07D7, 0x06D2, 0x05C3, 0x04B3,\n    0x03A8, 0x02A9, 0x01BE, 0x00ED, 0x003F, 0xFFBA, 0xFF64, 0xFF46,\n    0x9A98, 0x9A93, 0x9A83, 0x9A6B, 0x9A4C, 0x9A25, 0x99FA, 0x99C9,\n    0x9995, 0x995F, 0x9928, 0x98F0, 0x98BA, 0x9885, 0x9853, 0x9826,\n    0x97FD, 0x97DB, 0x97C0, 0x97AE, 0x97A7, 0x97AE, 0x97C0, 0x97DB,\n    0x97FD, 0x9825, 0x9850, 0x987D, 0x98AA, 0x98D5, 0x98FB, 0x9920,\n    0x9948, 0x9971, 0x999C, 0x99C8, 0x99F5, 0x9A23, 0x9A51, 0x9A7E,\n    0x9AAA, 0x9AD6, 0x9B00, 0x9B28, 0x9B4E, 0x9B72, 0x9B92, 0x9BAF,\n    0x9BC8, 0x9BDD, 0x9BED, 0x9BF7, 0x9BFC, 0x9BFC, 0x9BF9, 0x9BF2,\n    0x9BE8, 0x9BDC, 0x9BCF, 0x9BC0, 0x9BB0, 0x9BA1, 0x9B92, 0x9B85,\n    0x9B79, 0x9B6D, 0x9B5E, 0x9B4D, 0x9B3A, 0x9B27, 0x9B12, 0x9AFE,\n    0x9AEA, 0x9AD8, 0x9AC6, 0x9AB7, 0x9AAA, 0x9AA0, 0x9A9A, 0x9A98,\n    0xCD46, 0x3E12, 0x0AA8, 0x0AA6, 0x0AA0, 0x0A97, 0x0A8A, 0x0A7C,\n    0x0A6B, 0x0A59, 0x0A45, 0x0A31, 0x0A1D, 0x0A09, 0x09F5, 0x09E3,\n    0x09D2, 0x09C4, 0x09B7, 0x09AE, 0x09A8, 0x09A6, 0x09A8, 0x09AD,\n    0x09B6, 0x09C1, 0x09CE, 0x09DE, 0x09EF, 0x0A01, 0x0A14, 0x0A27,\n    0x0A3A, 0x0A4D, 0x0A5F, 0x0A70, 0x0A80, 0x0A8D, 0x0A98, 0x0AA1,\n    0x0AA6, 0x0AA8, 0x0AA6, 0x0AA1, 0x0A98, 0x0A8D, 0x0A80, 0x0A70,\n    0x0A5F, 0x0A4D, 0x0A3A, 0x0A27, 0x0A14, 0x0A01, 0x09EF, 0x09DE,\n    0x09CE, 0x09C1, 0x09B6, 0x09AD, 0x09A8, 0x09A6, 0x09A8, 0x09AD,\n    0x09B6, 0x09C1, 0x09CE, 0x09DE, 0x09EF, 0x0A01, 0x0A14, 0x0A27,\n    0x0A3A, 0x0A4D, 0x0A5F, 0x0A70, 0x0A80, 0x0A8D, 0x0A98, 0x0AA1,\n    0x0AA6, 0x0AA8, 0x0AC9, 0x0ACB, 0x0AD0, 0x0AD8, 0x0AE3, 0x0AF1,\n    0x0B00, 0x0B10, 0x0B22, 0x0B34, 0x0B46, 0x0B58, 0x0B69, 0x0B7A,\n    0x0B89, 0x0B96, 0x0BA1, 0x0BA9, 0x0BAF, 0x0BB1, 0x0BAF, 0x0BAA,\n    0x0BA2, 0x0B98, 0x0B8C, 0x0B7F, 0x0B6F, 0x0B5F, 0x0B4E, 0x0B3D,\n    0x0B2B, 0x0B1A, 0x0B0A, 0x0AFB, 0x0AED, 0x0AE1, 0x0AD7, 0x0ACF,\n    0x0ACB, 0x0AC9, 0x0ACB, 0x0ACF, 0x0AD7, 0x0AE1, 0x0AED, 0x0AFB,\n    0x0B0A, 0x0B1A, 0x0B2B, 0x0B3D, 0x0B4E, 0x0B5F, 0x0B6F, 0x0B7F,\n    0x0B8C, 0x0B98, 0x0BA2, 0x0BAA, 0x0BAF, 0x0BB1, 0x0BAF, 0x0BAA,\n    0x0BA2, 0x0B98, 0x0B8C, 0x0B7F, 0x0B6F, 0x0B5F, 0x0B4E, 0x0B3D,\n    0x0B2B, 0x0B1A, 0x0B0A, 0x0AFB, 0x0AED, 0x0AE1, 0x0AD7, 0x0ACF,\n    0x0ACB, 0x0AC9, 0xA078, 0xA071, 0xA05B, 0xA039, 0xA00C, 0x9FD6,\n    0x9F99, 0x9F56, 0x9F0F, 0x9EC5, 0x9E7A, 0x9E30, 0x9DE9, 0x9DA6,\n    0x9D69, 0x9D33, 0x9D06, 0x9CE4, 0x9CCE, 0x9CC7, 0x9CCE, 0x9CE1,\n    0x9D00, 0x9D29, 0x9D5B, 0x9D93, 0x9DD1, 0x9E14, 0x9E59, 0x9EA0,\n    0x9EE6, 0x9F2B, 0x9F6E, 0x9FAC, 0x9FE5, 0xA016, 0xA03F, 0xA05E,\n    0xA071, 0xA078, 0xA071, 0xA05E, 0xA03F, 0xA016, 0x9FE5, 0x9FAC,\n    0x9F6E, 0x9F2B, 0x9EE6, 0x9EA0, 0x9E59, 0x9E14, 0x9DD1, 0x9D93,\n    0x9D5B, 0x9D29, 0x9D00, 0x9CE1, 0x9CCE, 0x9CC7, 0x9CCE, 0x9CE1,\n    0x9D00, 0x9D29, 0x9D5B, 0x9D93, 0x9DD1, 0x9E14, 0x9E59, 0x9EA0,\n    0x9EE6, 0x9F2B, 0x9F6E, 0x9FAC, 0x9FE5, 0xA016, 0xA03F, 0xA05E,\n    0xA071, 0xA078, 0x1945, 0xE9B2, 0xBD23, 0xF071, 0x0B16, 0xBF48,\n    0xF5A5, 0xF5A7, 0xF5AD, 0xF5B6, 0xF5C2, 0xF5D0, 0xF5E1, 0xF5F3,\n    0xF605, 0xF619, 0xF62D, 0xF640, 0xF653, 0xF665, 0xF675, 0xF684,\n    0xF690, 0xF699, 0xF69E, 0xF6A0, 0xF69F, 0xF699, 0xF691, 0xF686,\n    0xF679, 0xF66A, 0xF65A, 0xF648, 0xF636, 0xF623, 0xF610, 0xF5FE,\n    0xF5EC, 0xF5DC, 0xF5CD, 0xF5C0, 0xF5B5, 0xF5AC, 0xF5A7, 0xF5A5,\n    0xF5A7, 0xF5AC, 0xF5B5, 0xF5C0, 0xF5CD, 0xF5DC, 0xF5EC, 0xF5FE,\n    0xF610, 0xF623, 0xF636, 0xF648, 0xF65A, 0xF66A, 0xF679, 0xF686,\n    0xF691, 0xF699, 0xF69F, 0xF6A0, 0xF69F, 0xF699, 0xF691, 0xF686,\n    0xF679, 0xF66A, 0xF65A, 0xF648, 0xF636, 0xF623, 0xF610, 0xF5FE,\n    0xF5EC, 0xF5DC, 0xF5CD, 0xF5C0, 0xF5B5, 0xF5AC, 0xF5A7, 0xF5A5,\n    0xF580, 0xF57E, 0xF579, 0xF571, 0xF566, 0xF55A, 0xF54B, 0xF53B,\n    0xF52A, 0xF518, 0xF507, 0xF4F5, 0xF4E4, 0xF4D4, 0xF4C5, 0xF4B9,\n    0xF4AE, 0xF4A6, 0xF4A1, 0xF49F, 0xF4A1, 0xF4A5, 0xF4AD, 0xF4B6,\n    0xF4C2, 0xF4D0, 0xF4DE, 0xF4EE, 0xF4FF, 0xF510, 0xF520, 0xF531,\n    0xF541, 0xF54F, 0xF55D, 0xF569, 0xF572, 0xF57A, 0xF57E, 0xF580,\n    0xF57E, 0xF57A, 0xF572, 0xF569, 0xF55D, 0xF54F, 0xF541, 0xF531,\n    0xF520, 0xF510, 0xF4FF, 0xF4EE, 0xF4DE, 0xF4D0, 0xF4C2, 0xF4B6,\n    0xF4AD, 0xF4A5, 0xF4A1, 0xF49F, 0xF4A1, 0xF4A5, 0xF4AD, 0xF4B6,\n    0xF4C2, 0xF4D0, 0xF4DE, 0xF4EE, 0xF4FF, 0xF510, 0xF520, 0xF531,\n    0xF541, 0xF54F, 0xF55D, 0xF569, 0xF572, 0xF57A, 0xF57E, 0xF580,\n    0xA064, 0xA05D, 0xA047, 0xA025, 0x9FF8, 0x9FC2, 0x9F85, 0x9F42,\n    0x9EFB, 0x9EB1, 0x9E66, 0x9E1D, 0x9DD5, 0x9D92, 0x9D55, 0x9D1F,\n    0x9CF2, 0x9CD0, 0x9CBB, 0x9CB3, 0x9CBA, 0x9CCE, 0x9CED, 0x9D15,\n    0x9D47, 0x9D7F, 0x9DBD, 0x9E00, 0x9E45, 0x9E8C, 0x9ED2, 0x9F18,\n    0x9F5A, 0x9F98, 0x9FD1, 0xA002, 0xA02B, 0xA04A, 0xA05D, 0xA064,\n    0xA05D, 0xA04A, 0xA02B, 0xA002, 0x9FD1, 0x9F98, 0x9F5A, 0x9F18,\n    0x9ED2, 0x9E8C, 0x9E45, 0x9E00, 0x9DBD, 0x9D7F, 0x9D47, 0x9D15,\n    0x9CED, 0x9CCE, 0x9CBA, 0x9CB3, 0x9CBA, 0x9CCE, 0x9CED, 0x9D15,\n    0x9D47, 0x9D7F, 0x9DBD, 0x9E00, 0x9E45, 0x9E8C, 0x9ED2, 0x9F18,\n    0x9F5A, 0x9F98, 0x9FD1, 0xA002, 0xA02B, 0xA04A, 0xA05D, 0xA064,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n};\n\n// 0x0604EE14\nstatic const u16 bowser_seg6_animindex_0604EE14[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0050, 0x0003, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x042D, 0x0001, 0x0000,\n    0x0050, 0x0242, 0x0050, 0x0292, 0x0050, 0x02E2,\n    0x0001, 0x014C, 0x0001, 0x014D, 0x0001, 0x014E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0050, 0x0056,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x042C, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0050, 0x00A6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x042B, 0x0001, 0x0000,\n    0x0001, 0x0332, 0x0001, 0x0333, 0x0001, 0x0334,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x014F,\n    0x0001, 0x00F6, 0x0001, 0x00F7, 0x0001, 0x00F8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x042A, 0x0001, 0x0000,\n    0x0050, 0x0150, 0x0050, 0x01A0, 0x0050, 0x01F0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00F9,\n    0x0001, 0x0053, 0x0001, 0x0054, 0x0001, 0x0055,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0429, 0x0001, 0x0000,\n    0x0001, 0x0335, 0x0001, 0x0336, 0x0001, 0x0337,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0240,\n    0x0001, 0x00FA, 0x0001, 0x0000, 0x0001, 0x00FB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0428, 0x0001, 0x0000,\n    0x0050, 0x0338, 0x0050, 0x0388, 0x0050, 0x03D8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0241,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0050, 0x00FC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x0604F030\nstatic const struct Animation bowser_seg6_anim_0604F030 = {\n    0,\n    0,\n    0,\n    0,\n    0x50,\n    ANIMINDEX_NUMPARTS(bowser_seg6_animindex_0604EE14),\n    bowser_seg6_animvalue_0604E5B8,\n    bowser_seg6_animindex_0604EE14,\n    0,\n};\n"
  },
  {
    "path": "actors/bowser/anims/anim_0604FF4C.inc.c",
    "content": "// 0x0604F048\nstatic const s16 bowser_seg6_animvalue_0604F048[] = {\n    0x0000, 0x0098, 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009E,\n    0x009F, 0x00A0, 0x00A1, 0x00A2, 0x00A2, 0x00A2, 0x00A1, 0x00A0,\n    0x009E, 0x009C, 0x009B, 0x0099, 0x0098, 0x0098, 0x0098, 0x0099,\n    0x009B, 0x009C, 0x009E, 0x00A0, 0x00A2, 0x00A3, 0x00A4, 0x00A4,\n    0x00A4, 0x00A3, 0x00A2, 0x00A0, 0x009F, 0x009D, 0x009C, 0x009A,\n    0x0099, 0x0098, 0x0098, 0xFFE7, 0x0003, 0xFFFA, 0xFFE0, 0xFFB9,\n    0xFF88, 0xFF51, 0xFF19, 0xFEE2, 0xFEB1, 0xFE8A, 0xFE6F, 0xFE65,\n    0xFE73, 0xFE99, 0xFED0, 0xFF11, 0xFF55, 0xFF96, 0xFFCD, 0xFFF2,\n    0x0000, 0xFFF5, 0xFFD6, 0xFFA8, 0xFF70, 0xFF33, 0xFEF6, 0xFEBE,\n    0xFE90, 0xFE71, 0xFE65, 0xFE6F, 0xFE8A, 0xFEB1, 0xFEE2, 0xFF19,\n    0xFF51, 0xFF88, 0xFFB9, 0xFFE0, 0xFFFA, 0x0003, 0xF54F, 0xF572,\n    0xF5D4, 0xF66A, 0xF72C, 0xF80F, 0xF909, 0xFA10, 0xFB1B, 0xFC1F,\n    0xFD12, 0xFDEB, 0xFEC8, 0xFFC1, 0x00C9, 0x01D2, 0x02CC, 0x03A8,\n    0x0458, 0x04CC, 0x04F6, 0x04D5, 0x0478, 0x03E9, 0x0333, 0x025F,\n    0x0178, 0x0089, 0xFF9B, 0xFEB8, 0xFDEB, 0xFD1A, 0xFC2C, 0xFB2A,\n    0xFA20, 0xF917, 0xF81B, 0xF735, 0xF670, 0xF5D6, 0xF573, 0xF54F,\n    0x0002, 0xFFFB, 0xFFE7, 0xFFC9, 0xFFA4, 0xFF7A, 0xFF4F, 0xFF26,\n    0xFF01, 0xFEE3, 0xFECF, 0xFEC7, 0xFED2, 0xFEEF, 0xFF19, 0xFF4B,\n    0xFF7F, 0xFFB1, 0xFFDB, 0xFFF8, 0x0002, 0xFFFA, 0xFFE2, 0xFFBF,\n    0xFF94, 0xFF65, 0xFF36, 0xFF0B, 0xFEE8, 0xFED0, 0xFEC7, 0xFECF,\n    0xFEE3, 0xFF01, 0xFF26, 0xFF4F, 0xFF7A, 0xFFA4, 0xFFC9, 0xFFE7,\n    0xFFFB, 0x0002, 0x32C6, 0xC001, 0x32C6, 0x0005, 0x0004, 0x0003,\n    0x0002, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0003,\n    0x0006, 0x0005, 0x0003, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0003,\n    0x0004, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0xF430,\n    0xF477, 0xF532, 0xF63D, 0xF772, 0xF8AB, 0xFA15, 0xFBC8, 0xFD83,\n    0xFF01, 0x0000, 0x0083, 0x00C6, 0x00D9, 0x00CD, 0x00B4, 0x009D,\n    0x009B, 0x0094, 0x0079, 0x005B, 0x0037, 0x0016, 0x0000, 0x000A,\n    0x002C, 0x0037, 0x0000, 0xFF68, 0xFE8E, 0xFD9C, 0xFCBE, 0xFC01,\n    0xFB4F, 0xFA9D, 0xF9E2, 0xF913, 0xF805, 0xF6BD, 0xF57F, 0xF48F,\n    0xF430, 0xA506, 0xA567, 0xA651, 0xA771, 0xA874, 0xA906, 0xA90D,\n    0xA8C0, 0xA848, 0xA7CE, 0xA77A, 0xA744, 0xA70A, 0xA6D3, 0xA6A7,\n    0xA68D, 0xA68E, 0xA6B1, 0xA818, 0xA961, 0xA8F4, 0xA808, 0xA714,\n    0xA68D, 0xA6A3, 0xA712, 0xA7A2, 0xA81C, 0xA890, 0xA913, 0xA96E,\n    0xA96A, 0xA8EF, 0xA823, 0xA737, 0xA65A, 0xA5BA, 0xA560, 0xA52A,\n    0xA510, 0xA507, 0xA506, 0x0000, 0x0001, 0x0004, 0x0007, 0x0009,\n    0x000A, 0x0007, 0x0000, 0xFFEF, 0xFFD4, 0xFFB5, 0xFF98, 0xFF83,\n    0xFF7F, 0xFF8C, 0xFFA6, 0xFFC8, 0xFFED, 0x0010, 0x002D, 0x003E,\n    0x0041, 0x0037, 0x0026, 0x0014, 0x0005, 0x0000, 0x0004, 0x0011,\n    0x0020, 0x0030, 0x003C, 0x0041, 0x003F, 0x0039, 0x0030, 0x0026,\n    0x001B, 0x0010, 0x0008, 0x0002, 0x0000, 0x0C39, 0x0BC9, 0x0A9D,\n    0x08EB, 0x06E8, 0x04CA, 0x02C6, 0x0112, 0xFF94, 0xFE11, 0xFC98,\n    0xFB33, 0xF9EF, 0xF8D7, 0xF7CD, 0xF6BA, 0xF5B6, 0xF4D8, 0xF438,\n    0xF3EF, 0xF414, 0xF4E2, 0xF65C, 0xF840, 0xFA50, 0xFC4C, 0xFDF3,\n    0xFF4A, 0x0084, 0x01A6, 0x02B5, 0x03B5, 0x04AC, 0x05AF, 0x06C7,\n    0x07E6, 0x08FF, 0x0A03, 0x0AE6, 0x0B99, 0x0C0E, 0x0C39, 0xE442,\n    0xE43B, 0xE429, 0xE414, 0xE405, 0xE402, 0xE414, 0xE442, 0xE4AE,\n    0xE558, 0xE61B, 0xE6D1, 0xE754, 0xE77D, 0xE73E, 0xE6B6, 0xE600,\n    0xE535, 0xE471, 0xE3CE, 0xE368, 0xE343, 0xE348, 0xE36F, 0xE3AC,\n    0xE3F6, 0xE442, 0xE4A6, 0xE52D, 0xE5BF, 0xE646, 0xE6A8, 0xE6CE,\n    0xE6B8, 0xE67C, 0xE625, 0xE5BE, 0xE552, 0xE4EB, 0xE495, 0xE459,\n    0xE442, 0x0254, 0x024D, 0x023C, 0x0223, 0x0204, 0x01E2, 0x01C0,\n    0x01A1, 0x0187, 0x0175, 0x016A, 0x0162, 0x015B, 0x0157, 0x0155,\n    0x0154, 0x0154, 0x0155, 0x0157, 0x0158, 0x015A, 0x015B, 0x015C,\n    0x015E, 0x015F, 0x0162, 0x0164, 0x0168, 0x016C, 0x0172, 0x0178,\n    0x0180, 0x0189, 0x0195, 0x01A6, 0x01C0, 0x01DF, 0x0200, 0x0220,\n    0x023A, 0x024D, 0x0254, 0x053E, 0x0540, 0x0546, 0x054F, 0x055A,\n    0x0566, 0x0572, 0x057D, 0x0586, 0x058C, 0x058F, 0x0592, 0x0593,\n    0x0594, 0x0594, 0x0593, 0x0593, 0x0592, 0x0591, 0x0590, 0x058F,\n    0x058E, 0x058E, 0x058D, 0x058D, 0x058C, 0x058C, 0x058B, 0x0589,\n    0x0588, 0x0586, 0x0584, 0x0581, 0x057D, 0x0577, 0x056F, 0x0565,\n    0x055A, 0x054F, 0x0546, 0x0540, 0x053E, 0xF8D6, 0xF8A5, 0xF822,\n    0xF761, 0xF676, 0xF577, 0xF477, 0xF38B, 0xF2C9, 0xF244, 0xF1F0,\n    0xF1B0, 0xF183, 0xF165, 0xF155, 0xF150, 0xF153, 0xF15C, 0xF168,\n    0xF175, 0xF181, 0xF18A, 0xF194, 0xF19E, 0xF1AA, 0xF1BA, 0xF1CE,\n    0xF1E7, 0xF207, 0xF22F, 0xF260, 0xF29B, 0xF2E1, 0xF334, 0xF3B7,\n    0xF47A, 0xF565, 0xF65E, 0xF74C, 0xF816, 0xF8A1, 0xF8D6, 0x2486,\n    0x24A7, 0x2505, 0x2595, 0x264F, 0x272A, 0x281C, 0x291C, 0x2A20,\n    0x2B20, 0x2C11, 0x2CEC, 0x2DA6, 0x2E37, 0x2E94, 0x2EB5, 0x2D9F,\n    0x2B0A, 0x27FB, 0x2578, 0x2486, 0x24D5, 0x2564, 0x2627, 0x2716,\n    0x2828, 0x2954, 0x2A8F, 0x2BD0, 0x2D0F, 0x2E42, 0x2F5F, 0x305D,\n    0x3133, 0x31D8, 0x3241, 0x3267, 0x30F5, 0x2D84, 0x2969, 0x25F7,\n    0x2486, 0xDB55, 0xDB7C, 0xDBE9, 0xDC91, 0xDD69, 0xDE65, 0xDF7B,\n    0xE09E, 0xE1C4, 0xE2E1, 0xE3EA, 0xE4D5, 0xE594, 0xE61E, 0xE667,\n    0xE671, 0xE649, 0xE5FA, 0xE590, 0xE517, 0xE49A, 0xE425, 0xE3B4,\n    0xE33D, 0xE2C0, 0xE23F, 0xE1BA, 0xE133, 0xE0AA, 0xE020, 0xDF97,\n    0xDF0E, 0xDE88, 0xDE05, 0xDD86, 0xDD0C, 0xDC98, 0xDC2F, 0xDBD5,\n    0xDB91, 0xDB65, 0xDB55, 0x0000, 0xFFF6, 0xFFD7, 0xFFA7, 0xFF68,\n    0xFF1F, 0xFECD, 0xFE76, 0xFE1C, 0xFDC3, 0xFD6C, 0xFD1C, 0xFCD5,\n    0xFC9A, 0xFC69, 0xFC3D, 0xFC17, 0xFBF7, 0xFBDD, 0xFBCA, 0xFBBF,\n    0xFBBA, 0xFBBA, 0xFBB8, 0xFBB6, 0xFBB5, 0xFBB5, 0xFBB7, 0xFBBC,\n    0xFBC4, 0xFBD0, 0xFBE1, 0xFBF7, 0xFC13, 0xFC36, 0xFC61, 0xFC93,\n    0xFD11, 0xFDEF, 0xFEE6, 0xFFAE, 0x0000, 0xF34B, 0xF33D, 0xF312,\n    0xF2D1, 0xF27C, 0xF218, 0xF1A9, 0xF133, 0xF0BA, 0xF041, 0xEFCD,\n    0xEF62, 0xEF03, 0xEEB5, 0xEE75, 0xEE3B, 0xEE0A, 0xEDE3, 0xEDC6,\n    0xEDB4, 0xEDAF, 0xEDB8, 0xEDCA, 0xEDDE, 0xEDF5, 0xEE0F, 0xEE2C,\n    0xEE4D, 0xEE71, 0xEE99, 0xEEC4, 0xEEF3, 0xEF27, 0xEF5E, 0xEF9A,\n    0xEFDA, 0xF01F, 0xF0A1, 0xF171, 0xF250, 0xF302, 0xF34B, 0x0000,\n    0xFFFF, 0xFFFA, 0xFFF2, 0xFFE8, 0xFFDC, 0xFFCD, 0xFFBE, 0xFFAD,\n    0xFF9C, 0xFF8B, 0xFF7A, 0xFF69, 0xFF59, 0xFF44, 0xFF2A, 0xFF0E,\n    0xFEF4, 0xFEE1, 0xFED8, 0xFED8, 0xFED9, 0xFEDB, 0xFEE0, 0xFEE6,\n    0xFEEF, 0xFEFA, 0xFF08, 0xFF17, 0xFF2A, 0xFF3F, 0xFF76, 0xFFCD,\n    0x0012, 0x0038, 0x004F, 0x0054, 0x004A, 0x0035, 0x001C, 0x0008,\n    0x0000, 0x0000, 0x0012, 0x0048, 0x009B, 0x0107, 0x0187, 0x0216,\n    0x02AF, 0x034E, 0x03EE, 0x048A, 0x051C, 0x05A1, 0x0613, 0x067D,\n    0x06E5, 0x0742, 0x0788, 0x07AD, 0x07A7, 0x0780, 0x0748, 0x0704,\n    0x06B4, 0x065B, 0x05FB, 0x0597, 0x0530, 0x04C8, 0x0462, 0x0400,\n    0x0387, 0x02F4, 0x0271, 0x0210, 0x01C0, 0x0174, 0x011B, 0x00B8,\n    0x005D, 0x001A, 0x0000, 0xA438, 0xA43E, 0xA44E, 0xA466, 0xA485,\n    0xA4A7, 0xA4CC, 0xA4F1, 0xA515, 0xA534, 0xA54E, 0xA560, 0xA568,\n    0xA564, 0xA536, 0xA4D2, 0xA456, 0xA3DF, 0xA38A, 0xA374, 0xA38C,\n    0xA3B0, 0xA3DE, 0xA417, 0xA45A, 0xA4A7, 0xA4FC, 0xA559, 0xA5BF,\n    0xA62C, 0xA6A0, 0xA76D, 0xA8A9, 0xA9FC, 0xABC6, 0xADA6, 0xAE1F,\n    0xACA2, 0xAA1E, 0xA75C, 0xA522, 0xA438, 0x8001, 0x8001, 0xBE14,\n    0xBE12, 0xBE0C, 0xBE02, 0xBDF3, 0xBDE0, 0xBDC9, 0xBDAE, 0xBD8F,\n    0xBD6C, 0xBD44, 0xBD0E, 0xBCC6, 0xBC74, 0xBC1D, 0xBBCA, 0xBB82,\n    0xBB4D, 0xBB47, 0xBB73, 0xBBAA, 0xBBC7, 0xBBA6, 0xBB21, 0xBA2C,\n    0xB8E4, 0xB766, 0xB5CE, 0xB439, 0xB2C2, 0xB188, 0xB0A5, 0xB1FD,\n    0xB458, 0xB5CB, 0xB761, 0xB900, 0xBA8E, 0xBBF2, 0xBD10, 0xBDCF,\n    0xBE14, 0xCA03, 0xC9D0, 0xC947, 0xC883, 0xC79D, 0xC6B0, 0xC5D5,\n    0xC526, 0xC4BF, 0xC4B7, 0xC515, 0xC5BF, 0xC6A4, 0xC7B2, 0xC8D7,\n    0xCA03, 0xCB24, 0xCC27, 0xCCFC, 0xCD91, 0xCDD5, 0xCDCB, 0xCD89,\n    0xCD1A, 0xCC85, 0xCBD4, 0xCB10, 0xCA43, 0xC974, 0xC8AF, 0xC7FB,\n    0xC762, 0xC6ED, 0xC6A4, 0xC6A6, 0xC6F7, 0xC77F, 0xC825, 0xC8D2,\n    0xC96B, 0xC9D9, 0xCA03, 0xFF61, 0xFF4A, 0xFF1B, 0xFEF6, 0xFEE0,\n    0xFECB, 0xFEB6, 0xFEA1, 0xFE8D, 0xFE79, 0xFE65, 0xFE52, 0xFE40,\n    0xFE2F, 0xFE1E, 0xFE0E, 0xFDFF, 0xFDF2, 0xFDED, 0xFDF9, 0xFE15,\n    0xFE64, 0xFEAE, 0xFEC8, 0xFEE2, 0xFEFC, 0xFF16, 0xFF2F, 0xFF47,\n    0xFF5F, 0xFF75, 0xFF8B, 0xFF9F, 0xFFB2, 0xFFC4, 0xFFD4, 0xFFE2,\n    0xFFEE, 0xFFF9, 0xFFD5, 0xFF8A, 0xFF61, 0xF56D, 0xF568, 0xF592,\n    0xF63E, 0xF750, 0xF871, 0xF9A0, 0xFAD9, 0xFC1A, 0xFD60, 0xFEA9,\n    0xFFF2, 0x0138, 0x027A, 0x03B4, 0x04E4, 0x0607, 0x071C, 0x07E0,\n    0x082A, 0x0813, 0x0723, 0x05D4, 0x04D6, 0x03D5, 0x02D2, 0x01CC,\n    0x00C5, 0xFFBF, 0xFEB8, 0xFDB2, 0xFCAE, 0xFBAC, 0xFAAE, 0xF9B5,\n    0xF8C0, 0xF7D1, 0xF6E9, 0xF608, 0xF57E, 0xF564, 0xF56D, 0x898F,\n    0x89D1, 0x8A44, 0x8A6A, 0x8A3A, 0x8A00, 0x89BF, 0x8977, 0x892A,\n    0x88DA, 0x8889, 0x8838, 0x87E9, 0x879F, 0x8759, 0x871B, 0x86E6,\n    0x86BB, 0x86E3, 0x876A, 0x87F6, 0x88A3, 0x8912, 0x8901, 0x88E7,\n    0x88C7, 0x88A1, 0x8877, 0x884A, 0x881B, 0x87ED, 0x87BF, 0x8794,\n    0x876D, 0x874B, 0x8730, 0x871D, 0x8713, 0x8714, 0x87BB, 0x88EC,\n    0x898F, 0xCD46, 0xCD1E, 0xCCB1, 0xCC0B, 0xCB39, 0xCA49, 0xC948,\n    0xC843, 0xC747, 0xC662, 0xC5A0, 0xC510, 0xC4BE, 0xC4B7, 0xC54F,\n    0xC6A3, 0xC875, 0xCA85, 0xCC92, 0xCE5E, 0xCFA8, 0xD031, 0xD024,\n    0xCFDC, 0xCF61, 0xCEBD, 0xCDF8, 0xCD1A, 0xCC2B, 0xCB34, 0xCA3E,\n    0xC951, 0xC875, 0xC7B3, 0xC713, 0xC69E, 0xC65D, 0xC6FD, 0xC8B0,\n    0xCAC5, 0xCC88, 0xCD46, 0x3F4B, 0x3F30, 0x3EE3, 0x3E6E, 0x3DD9,\n    0x3D2E, 0x3C75, 0x3BB7, 0x3AFD, 0x3A4F, 0x39B7, 0x393D, 0x38EA,\n    0x38C6, 0x3929, 0x3A2F, 0x3B8C, 0x3CF3, 0x3E19, 0x3EB0, 0x3ED4,\n    0x3ED5, 0x3EB9, 0x3E86, 0x3E41, 0x3DF1, 0x3D9A, 0x3D42, 0x3CF0,\n    0x3CA8, 0x3C71, 0x3C3C, 0x3BFB, 0x3BB6, 0x3B77, 0x3B47, 0x3B2C,\n    0x3B30, 0x3B5C, 0x3C7F, 0x3E55, 0x3F4B, 0x0AA8, 0x0AA1, 0x0A8D,\n    0x0A70, 0x0A4B, 0x0A22, 0x09F7, 0x09CC, 0x09A5, 0x0983, 0x096A,\n    0x0956, 0x0943, 0x0935, 0x092D, 0x092E, 0x0938, 0x0950, 0x097C,\n    0x09BC, 0x0A0A, 0x0A5E, 0x0AB0, 0x0AF9, 0x0B3B, 0x0B80, 0x0BC3,\n    0x0C06, 0x0C46, 0x0C82, 0x0CB9, 0x0CE9, 0x0CE9, 0x0CB5, 0x0C72,\n    0x0C22, 0x0BCB, 0x0B75, 0x0B25, 0x0AE4, 0x0AB8, 0x0AA8, 0x0AC9,\n    0x0ACF, 0x0AE0, 0x0AFA, 0x0B1B, 0x0B3F, 0x0B65, 0x0B8B, 0x0BAD,\n    0x0BCB, 0x0BE1, 0x0BF2, 0x0C02, 0x0C0F, 0x0C15, 0x0C15, 0x0C0A,\n    0x0BF4, 0x0BCE, 0x0B97, 0x0B54, 0x0B09, 0x0ABB, 0x0A6E, 0x0A1F,\n    0x09CA, 0x0970, 0x0916, 0x08BE, 0x086C, 0x0821, 0x07E3, 0x07EF,\n    0x083C, 0x0891, 0x08F6, 0x0962, 0x09CD, 0x0A2E, 0x0A7F, 0x0AB5,\n    0x0AC9, 0xA078, 0xA05E, 0xA017, 0x9FAD, 0x9F27, 0x9E91, 0x9DF4,\n    0x9D59, 0x9CC9, 0x9C4F, 0x9BF3, 0x9BAA, 0x9B68, 0x9B34, 0x9B16,\n    0x9B18, 0x9B41, 0x9B99, 0x9C37, 0x9D1F, 0x9E38, 0x9F6B, 0xA0A1,\n    0xA1C1, 0xA2DA, 0xA403, 0xA532, 0xA65F, 0xA784, 0xA896, 0xA98E,\n    0xAA64, 0xAA4A, 0xA951, 0xA82D, 0xA6D1, 0xA55B, 0xA3E7, 0xA292,\n    0xA17B, 0xA0BE, 0xA078, 0x1945, 0x192C, 0x18E9, 0x1887, 0x1811,\n    0x1791, 0x1714, 0x16A5, 0x164D, 0x1619, 0x1601, 0x15F4, 0x15F1,\n    0x15F8, 0x1607, 0x161F, 0x163D, 0x1662, 0x168C, 0x16BA, 0x16EC,\n    0x1726, 0x176D, 0x17BF, 0x1817, 0x1875, 0x18D4, 0x1934, 0x1990,\n    0x19E6, 0x1A34, 0x1A78, 0x1AAE, 0x1AD3, 0x1AD8, 0x1AB5, 0x1A77,\n    0x1A29, 0x19D7, 0x198E, 0x1959, 0x1945, 0xE9B2, 0xE99A, 0xE957,\n    0xE8F6, 0xE881, 0xE803, 0xE787, 0xE719, 0xE6C2, 0xE68F, 0xE676,\n    0xE668, 0xE663, 0xE668, 0xE676, 0xE68B, 0xE6A9, 0xE6CD, 0xE6F8,\n    0xE729, 0xE75F, 0xE7A1, 0xE7F1, 0xE84E, 0xE8B4, 0xE91F, 0xE98D,\n    0xE9FA, 0xEA64, 0xEAC6, 0xEB1F, 0xEB6A, 0xEBA5, 0xEBCC, 0xEBCB,\n    0xEB98, 0xEB43, 0xEADB, 0xEA70, 0xEA11, 0xE9CC, 0xE9B2, 0xBD23,\n    0xBD4F, 0xBDC8, 0xBE7A, 0xBF4F, 0xC035, 0xC116, 0xC1E0, 0xC27E,\n    0xC2DB, 0xC308, 0xC321, 0xC327, 0xC31C, 0xC301, 0xC2D7, 0xC2A1,\n    0xC25F, 0xC212, 0xC1BD, 0xC160, 0xC0F1, 0xC06A, 0xBFCF, 0xBF26,\n    0xBE73, 0xBDBD, 0xBD07, 0xBC57, 0xBBB2, 0xBB1E, 0xBA9F, 0xBA3A,\n    0xB9F5, 0xB9F0, 0xBA3A, 0xBABA, 0xBB58, 0xBBFD, 0xBC90, 0xBCFA,\n    0xBD23, 0xF071, 0xF066, 0xF048, 0xF01A, 0xEFDF, 0xEF99, 0xEF4D,\n    0xEEFD, 0xEEAD, 0xEE5E, 0xEE16, 0xEDD6, 0xEDA1, 0xED7C, 0xED68,\n    0xED65, 0xED6F, 0xED84, 0xEDA2, 0xEDC5, 0xEDEB, 0xEE12, 0xEE3A,\n    0xEE66, 0xEE95, 0xEEC6, 0xEEFA, 0xEF2E, 0xEF63, 0xEF97, 0xEFCB,\n    0xEFFE, 0xF02E, 0xF05B, 0xF085, 0xF0AB, 0xF0CC, 0xF0D6, 0xF0C2,\n    0xF09F, 0xF07F, 0xF071, 0x0B16, 0x0B16, 0x0B14, 0x0B12, 0x0B0F,\n    0x0B0B, 0x0B07, 0x0B03, 0x0AFF, 0x0AFB, 0x0AF7, 0x0AF4, 0x0AF1,\n    0x0AEF, 0x0AED, 0x0AEA, 0x0AE7, 0x0AE5, 0x0AE5, 0x0AE8, 0x0AED,\n    0x0AF7, 0x0B05, 0x0B15, 0x0B28, 0x0B3D, 0x0B53, 0x0B6A, 0x0B81,\n    0x0B98, 0x0BAD, 0x0BC1, 0x0BD3, 0x0BE3, 0x0BEF, 0x0BF7, 0x0BFB,\n    0x0BE4, 0x0BAC, 0x0B67, 0x0B2E, 0x0B16, 0xBF48, 0xBF47, 0xBF43,\n    0xBF3D, 0xBF35, 0xBF2C, 0xBF21, 0xBF17, 0xBF0C, 0xBF02, 0xBEF8,\n    0xBEF0, 0xBEE9, 0xBEE4, 0xBEDE, 0xBED7, 0xBED0, 0xBECB, 0xBECA,\n    0xBED0, 0xBEDE, 0xBEF8, 0xBF1B, 0xBF46, 0xBF78, 0xBFAE, 0xBFE7,\n    0xC023, 0xC05E, 0xC099, 0xC0D1, 0xC105, 0xC134, 0xC15C, 0xC17B,\n    0xC190, 0xC19B, 0xC15F, 0xC0CC, 0xC01B, 0xBF87, 0xBF48, 0xF5A5,\n    0xF5A0, 0xF590, 0xF579, 0xF55B, 0xF538, 0xF512, 0xF4EB, 0xF4C5,\n    0xF4A1, 0xF482, 0xF468, 0xF456, 0xF44E, 0xF45B, 0xF481, 0xF4B7,\n    0xF4F7, 0xF536, 0xF56C, 0xF59F, 0xF5D8, 0xF614, 0xF652, 0xF68F,\n    0xF6CA, 0xF6FF, 0xF72C, 0xF750, 0xF769, 0xF773, 0xF76A, 0xF74E,\n    0xF723, 0xF6EC, 0xF6AF, 0xF670, 0xF633, 0xF5FB, 0xF5CE, 0xF5B0,\n    0xF5A5, 0xF580, 0xF586, 0xF598, 0xF5B3, 0xF5D5, 0xF5FC, 0xF627,\n    0xF653, 0xF67F, 0xF6A7, 0xF6CB, 0xF6E9, 0xF6FD, 0xF707, 0xF6F9,\n    0xF6CD, 0xF68F, 0xF648, 0xF603, 0xF5CC, 0xF59B, 0xF567, 0xF531,\n    0xF4FB, 0xF4C5, 0xF493, 0xF465, 0xF43E, 0xF41F, 0xF409, 0xF3FF,\n    0xF406, 0xF41C, 0xF440, 0xF46D, 0xF4A1, 0xF4D6, 0xF509, 0xF538,\n    0xF55E, 0xF577, 0xF580, 0xA064, 0xA07C, 0xA0BD, 0xA121, 0xA1A0,\n    0xA232, 0xA2D1, 0xA374, 0xA415, 0xA4AB, 0xA530, 0xA59D, 0xA5E8,\n    0xA60D, 0xA5D8, 0xA537, 0xA44F, 0xA347, 0xA243, 0xA169, 0xA0A4,\n    0x9FCB, 0x9EE7, 0x9DFF, 0x9D1B, 0x9C43, 0x9B7E, 0x9AD5, 0x9A4F,\n    0x99F4, 0x99CC, 0x99EA, 0x9A4F, 0x9AEE, 0x9BB4, 0x9C94, 0x9D7C,\n    0x9E5E, 0x9F29, 0x9FCE, 0xA03C, 0xA064, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x0000,\n};\n\n// 0x0604FD30\nstatic const u16 bowser_seg6_animindex_0604FD30[] = {\n    0x0001, 0x0000, 0x002A, 0x0001, 0x0001, 0x002B, 0x002A, 0x002C, 0x002A, 0x0056, 0x002A, 0x0080,\n    0x0001, 0x0000, 0x0001, 0x0672, 0x0001, 0x0000,\n    0x002A, 0x0475, 0x002A, 0x049F, 0x002A, 0x04C9,\n    0x0001, 0x034D, 0x0001, 0x034E, 0x002A, 0x034F,\n    0x002A, 0x00AD, 0x002A, 0x00D7, 0x002A, 0x0101,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0671, 0x0001, 0x0000,\n    0x002A, 0x012B, 0x002A, 0x0155, 0x002A, 0x017F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0670, 0x0001, 0x0000,\n    0x002A, 0x04F3, 0x002A, 0x051D, 0x002A, 0x0547,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002A, 0x0379,\n    0x002A, 0x01A9, 0x002A, 0x01D3, 0x002A, 0x01FD,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x066F, 0x0001, 0x0000,\n    0x002A, 0x03A3, 0x002A, 0x03CD, 0x002A, 0x03F7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002A, 0x0227,\n    0x0001, 0x00AA, 0x0001, 0x00AB, 0x0001, 0x00AC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x066E, 0x0001, 0x0000,\n    0x002A, 0x0571, 0x002A, 0x059B, 0x002A, 0x05C5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002A, 0x0421,\n    0x002A, 0x0251, 0x002A, 0x027B, 0x002A, 0x02A5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x066D, 0x0001, 0x0000,\n    0x002A, 0x05EF, 0x002A, 0x0619, 0x002A, 0x0643,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002A, 0x044B,\n    0x002A, 0x02CF, 0x002A, 0x02F9, 0x002A, 0x0323,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x0604FF4C\nstatic const struct Animation bowser_seg6_anim_0604FF4C = {\n    0,\n    0,\n    0,\n    0,\n    0x2A,\n    ANIMINDEX_NUMPARTS(bowser_seg6_animindex_0604FD30),\n    bowser_seg6_animvalue_0604F048,\n    bowser_seg6_animindex_0604FD30,\n    0,\n};\n"
  },
  {
    "path": "actors/bowser/anims/anim_06050530.inc.c",
    "content": "// 0x0604FF64\nstatic const s16 bowser_seg6_animvalue_0604FF64[] = {\n    0x0000, 0x0098, 0x0098, 0x0098, 0x0098, 0x0099, 0x0099, 0x0099,\n    0x0099, 0x0099, 0x009A, 0x009A, 0x009A, 0x009A, 0x009A, 0x0099,\n    0x0099, 0x0099, 0x0099, 0x0098, 0x0098, 0x0098, 0x0098, 0xFFE7,\n    0x0003, 0x0002, 0x0000, 0xFFFE, 0xFFF9, 0xFFF5, 0xFFF0, 0xFFEB,\n    0xFFE6, 0xFFE3, 0xFFE0, 0xFFDF, 0xFFE0, 0xFFE3, 0xFFE6, 0xFFEB,\n    0xFFF0, 0xFFF5, 0xFFF9, 0xFFFD, 0xFFFF, 0x0000, 0xF54F, 0xF565,\n    0xF5A4, 0xF604, 0xF67F, 0xF710, 0xF7B0, 0xF858, 0xF902, 0xF9A9,\n    0xFA45, 0xFAD1, 0xFB5F, 0xFC00, 0xFCAC, 0xFD5B, 0xFE05, 0xFEA4,\n    0xFF2D, 0xFF9B, 0xFFE4, 0x0000, 0x0002, 0x000E, 0x0032, 0x0066,\n    0x00A7, 0x00EF, 0x013A, 0x0182, 0x01C3, 0x01F7, 0x021A, 0x0227,\n    0x0217, 0x01EE, 0x01B1, 0x0167, 0x0116, 0x00C5, 0x007A, 0x003C,\n    0x0011, 0x0000, 0x32C6, 0xC001, 0x32C6, 0x0005, 0xFFF2, 0xFFBD,\n    0xFF6D, 0xFF0A, 0xFE9C, 0xFE2A, 0xFDBC, 0xFD59, 0xFD09, 0xFCD4,\n    0xFCC0, 0xFCD7, 0xFD15, 0xFD71, 0xFDE1, 0xFE5B, 0xFED6, 0xFF47,\n    0xFFA5, 0xFFE6, 0x0000, 0xF430, 0xF44B, 0xF498, 0xF50E, 0xF5A6,\n    0xF657, 0xF719, 0xF7E3, 0xF8AF, 0xF973, 0xFA28, 0xFAC6, 0xFB5F,\n    0xFC07, 0xFCB7, 0xFD67, 0xFE11, 0xFEAD, 0xFF34, 0xFF9E, 0xFFE5,\n    0x0000, 0xA506, 0xA506, 0xA505, 0xA503, 0xA502, 0xA4FF, 0xA4FD,\n    0xA4FB, 0xA4F9, 0xA4F7, 0xA4F6, 0xA4F6, 0xA4F7, 0xA4F8, 0xA4FA,\n    0xA4FD, 0xA4FF, 0xA502, 0xA505, 0xA507, 0xA508, 0xA509, 0x0C39,\n    0x0C24, 0x0BE9, 0x0B8C, 0x0B11, 0x0A7C, 0x09D0, 0x0912, 0x0846,\n    0x0770, 0x0694, 0x05B5, 0x04D9, 0x0402, 0x0335, 0x0276, 0x01C9,\n    0x0131, 0x00B4, 0x0055, 0x0017, 0x0000, 0xE442, 0x0254, 0x053E,\n    0xF8D6, 0x2486, 0xDB55, 0xDB1A, 0xDA77, 0xD984, 0xD857, 0xD707,\n    0xD5AC, 0xD45C, 0xD32F, 0xD23C, 0xD199, 0xD15D, 0xD1A4, 0xD263,\n    0xD37D, 0xD4D5, 0xD64B, 0xD7C2, 0xD91D, 0xDA3D, 0xDB04, 0xDB55,\n    0x0000, 0x000C, 0x002E, 0x0062, 0x00A1, 0x00E8, 0x0131, 0x0178,\n    0x01B7, 0x01EA, 0x020D, 0x0219, 0x020A, 0x01E2, 0x01A7, 0x015E,\n    0x010F, 0x00C0, 0x0077, 0x003B, 0x0011, 0x0000, 0xF34B, 0xF340,\n    0xF320, 0xF2F1, 0xF2B7, 0xF276, 0xF233, 0xF1F2, 0xF1B7, 0xF188,\n    0xF169, 0xF15D, 0xF16B, 0xF190, 0xF1C6, 0xF209, 0xF251, 0xF29A,\n    0xF2DD, 0xF315, 0xF33C, 0xF34B, 0x0000, 0x0000, 0xFFFF, 0xFFFE,\n    0xFFFC, 0xFFFA, 0xFFF8, 0xFFF7, 0xFFF6, 0xFFF5, 0xFFF5, 0xFFF6,\n    0xFFF7, 0xFFF8, 0xFFF9, 0xFFFB, 0xFFFC, 0xFFFD, 0xFFFF, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFC, 0xFFF6, 0xFFF0, 0xFFEA,\n    0xFFE3, 0xFFDE, 0xFFDB, 0xFFD9, 0xFFDA, 0xFFDC, 0xFFDF, 0xFFE3,\n    0xFFE8, 0xFFED, 0xFFF2, 0xFFF6, 0xFFFA, 0xFFFD, 0x0000, 0x0000,\n    0xA438, 0xA44B, 0xA47C, 0xA4C5, 0xA51B, 0xA577, 0xA5CF, 0xA61C,\n    0xA654, 0xA66F, 0xA671, 0xA663, 0xA649, 0xA625, 0xA5FB, 0xA5CD,\n    0xA59E, 0xA571, 0xA548, 0xA528, 0xA512, 0xA509, 0x8001, 0x8001,\n    0xBE14, 0xCA03, 0xCAA4, 0xCC51, 0xCEBE, 0xD19F, 0xD4A7, 0xD787,\n    0xD9F5, 0xDBA2, 0xDC42, 0xDBE8, 0xDAED, 0xD971, 0xD795, 0xD577,\n    0xD339, 0xD0FA, 0xCED9, 0xCCF6, 0xCB72, 0xCA6C, 0xCA04, 0xFF61,\n    0xFF61, 0xFF62, 0xFF64, 0xFF67, 0xFF6A, 0xFF6D, 0xFF71, 0xFF76,\n    0xFF7A, 0xFF7F, 0xFF84, 0xFF88, 0xFF8D, 0xFF91, 0xFF95, 0xFF99,\n    0xFF9C, 0xFF9E, 0xFFA0, 0xFFA2, 0xFFA2, 0xF56D, 0xF57E, 0xF5AD,\n    0xF5F8, 0xF65B, 0xF6D4, 0xF75E, 0xF7F7, 0xF89B, 0xF948, 0xF9F9,\n    0xFAAD, 0xFB5E, 0xFC0B, 0xFCB1, 0xFD4B, 0xFDD6, 0xFE50, 0xFEB5,\n    0xFF02, 0xFF33, 0xFF46, 0x898F, 0x89AB, 0x89FD, 0x8A7F, 0x8B2A,\n    0x8BFB, 0x8CEA, 0x8DF2, 0x8F0F, 0x9039, 0x916C, 0x92A2, 0x93D6,\n    0x9501, 0x961F, 0x9729, 0x981B, 0x98ED, 0x999C, 0x9A21, 0x9A77,\n    0x9A98, 0xCD46, 0xCD93, 0xCE66, 0xCFA1, 0xD126, 0xD2D8, 0xD499,\n    0xD64B, 0xD7D1, 0xD90C, 0xD9DF, 0xDA2C, 0xD9D1, 0xD8D9, 0xD76C,\n    0xD5B0, 0xD3CC, 0xD1E6, 0xD025, 0xCEB1, 0xCDAF, 0xCD46, 0x3F4B,\n    0x3F49, 0x3F43, 0x3F3A, 0x3F2E, 0x3F1F, 0x3F0E, 0x3EFB, 0x3EE6,\n    0x3ED1, 0x3EBB, 0x3EA5, 0x3E8E, 0x3E79, 0x3E65, 0x3E51, 0x3E40,\n    0x3E31, 0x3E24, 0x3E1B, 0x3E15, 0x3E12, 0x0AA8, 0x0AC9, 0xA078,\n    0x1945, 0xE9B2, 0xBD23, 0xF071, 0x0B16, 0xBF48, 0xF5A5, 0xF580,\n    0xA064, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x0000,\n};\n\n// 0x06050314\nstatic const u16 bowser_seg6_animindex_06050314[] = {\n    0x0001, 0x0000, 0x0016, 0x0001, 0x0001, 0x0017, 0x0016, 0x0018, 0x0016, 0x002E, 0x0016, 0x0044,\n    0x0001, 0x0000, 0x0001, 0x01D6, 0x0001, 0x0000,\n    0x0001, 0x01C5, 0x0001, 0x01C6, 0x0001, 0x01C7,\n    0x0001, 0x013E, 0x0001, 0x013F, 0x0001, 0x0140,\n    0x0016, 0x005D, 0x0016, 0x0073, 0x0016, 0x0089,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x01D5, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0016, 0x009F, 0x0001, 0x00B5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x01D4, 0x0001, 0x0000,\n    0x0001, 0x01C8, 0x0001, 0x01C9, 0x0001, 0x01CA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0016, 0x0141,\n    0x0001, 0x00B6, 0x0001, 0x00B7, 0x0001, 0x00B8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x01D3, 0x0001, 0x0000,\n    0x0016, 0x0157, 0x0016, 0x016D, 0x0016, 0x0183,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00B9,\n    0x0001, 0x005A, 0x0001, 0x005B, 0x0001, 0x005C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x01D2, 0x0001, 0x0000,\n    0x0001, 0x01CB, 0x0001, 0x01CC, 0x0001, 0x01CD,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0016, 0x0199,\n    0x0016, 0x00BA, 0x0016, 0x00D0, 0x0016, 0x00E6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x01D1, 0x0001, 0x0000,\n    0x0001, 0x01CE, 0x0001, 0x01CF, 0x0001, 0x01D0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0016, 0x01AF,\n    0x0016, 0x00FC, 0x0016, 0x0112, 0x0016, 0x0128,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x06050530\nstatic const struct Animation bowser_seg6_anim_06050530 = {\n    0,\n    0,\n    0,\n    0,\n    0x16,\n    ANIMINDEX_NUMPARTS(bowser_seg6_animindex_06050314),\n    bowser_seg6_animvalue_0604FF64,\n    bowser_seg6_animindex_06050314,\n    0,\n};\n"
  },
  {
    "path": "actors/bowser/anims/anim_060514E8.inc.c",
    "content": "// 0x06050548\nstatic const s16 bowser_seg6_animvalue_06050548[] = {\n    0x0000, 0x0098, 0x0098, 0x0099, 0x0099, 0x009A, 0x009B, 0x009D,\n    0x009E, 0x009F, 0x00A0, 0x00A1, 0x00A2, 0x00A2, 0x00A2, 0x00A2,\n    0x00A1, 0x00A0, 0x009E, 0x009C, 0x009B, 0x0099, 0x0098, 0x0098,\n    0x0098, 0x0099, 0x009B, 0x009C, 0x009E, 0x00A0, 0x00A2, 0x00A3,\n    0x00A4, 0x00A4, 0x00A4, 0x00A3, 0x00A3, 0x00A2, 0x00A0, 0x009F,\n    0x009D, 0x009C, 0x009B, 0x0099, 0x0098, 0xFFE7, 0x0000, 0xFFFA,\n    0xFFE6, 0xFFC9, 0xFFA4, 0xFF79, 0xFF4B, 0xFF1B, 0xFEED, 0xFEC2,\n    0xFE9D, 0xFE80, 0xFE6C, 0xFE65, 0xFE74, 0xFE99, 0xFED0, 0xFF11,\n    0xFF55, 0xFF96, 0xFFCD, 0xFFF2, 0x0000, 0xFFF5, 0xFFD6, 0xFFA8,\n    0xFF70, 0xFF33, 0xFEF6, 0xFEBE, 0xFE90, 0xFE71, 0xFE65, 0xFE6C,\n    0xFE7F, 0xFE9B, 0xFEBF, 0xFEEA, 0xFF19, 0xFF4B, 0xFF7D, 0xFFAE,\n    0xFFDB, 0x0003, 0x0000, 0xFFF3, 0xFFCF, 0xFF9A, 0xFF57, 0xFF0C,\n    0xFEBE, 0xFE73, 0xFE2E, 0xFDF5, 0xFDCD, 0xFDBB, 0xFDC3, 0xFDEB,\n    0xFE57, 0xFF15, 0x000B, 0x0122, 0x023F, 0x0349, 0x0427, 0x04BE,\n    0x04F6, 0x04D5, 0x0478, 0x03E9, 0x0333, 0x025F, 0x0178, 0x0089,\n    0xFF9B, 0xFEB8, 0xFDEB, 0xFD2B, 0xFC67, 0xFBA1, 0xFAD9, 0xFA10,\n    0xF945, 0xF879, 0xF7AE, 0xF6E3, 0xF618, 0xF54F, 0x0000, 0xFFFB,\n    0xFFED, 0xFFD6, 0xFFBA, 0xFF99, 0xFF76, 0xFF52, 0xFF2E, 0xFF0E,\n    0xFEF1, 0xFEDB, 0xFECC, 0xFEC7, 0xFED2, 0xFEEF, 0xFF19, 0xFF4B,\n    0xFF7F, 0xFFB1, 0xFFDB, 0xFFF8, 0x0002, 0xFFFA, 0xFFE2, 0xFFBF,\n    0xFF94, 0xFF65, 0xFF36, 0xFF0B, 0xFEE8, 0xFED0, 0xFEC7, 0xFECC,\n    0xFEDA, 0xFEF0, 0xFF0B, 0xFF2C, 0xFF50, 0xFF75, 0xFF9C, 0xFFC1,\n    0xFFE4, 0x0002, 0x32C6, 0xC001, 0x32C6, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0003, 0x0006, 0x0005, 0x0003, 0x0001, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0001, 0x0003, 0x0004, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,\n    0x0005, 0x0000, 0xFF99, 0xFE8C, 0xFD1E, 0xFB8E, 0xFA1F, 0xF913,\n    0xF8AB, 0xF953, 0xFAEF, 0xFCF2, 0xFED1, 0x0000, 0x0083, 0x00C6,\n    0x00D9, 0x00CD, 0x00B4, 0x009D, 0x009B, 0x0094, 0x0079, 0x005B,\n    0x0037, 0x0016, 0x0000, 0x000A, 0x002C, 0x0037, 0x0000, 0xFF68,\n    0xFE8E, 0xFD9C, 0xFCBE, 0xFC01, 0xFB4F, 0xFA9D, 0xF9E2, 0xF913,\n    0xF82D, 0xF735, 0xF633, 0xF52F, 0xF430, 0xA509, 0xA53B, 0xA5BE,\n    0xA674, 0xA741, 0xA807, 0xA8A7, 0xA906, 0xA906, 0xA8B8, 0xA843,\n    0xA7CC, 0xA77A, 0xA744, 0xA70A, 0xA6D3, 0xA6A7, 0xA68D, 0xA68E,\n    0xA6B1, 0xA818, 0xA961, 0xA8F4, 0xA808, 0xA714, 0xA68D, 0xA6A3,\n    0xA712, 0xA7A2, 0xA81C, 0xA890, 0xA913, 0xA96E, 0xA96A, 0xA8EF,\n    0xA823, 0xA737, 0xA65A, 0xA5BA, 0xA565, 0xA53B, 0xA52A, 0xA51E,\n    0xA506, 0x0000, 0x0000, 0x0003, 0x0005, 0x0008, 0x000A, 0x000B,\n    0x000A, 0x0006, 0x0000, 0xFFF0, 0xFFD5, 0xFFB5, 0xFF98, 0xFF84,\n    0xFF7F, 0xFF8C, 0xFFA6, 0xFFC8, 0xFFED, 0x0010, 0x002D, 0x003E,\n    0x0041, 0x0037, 0x0026, 0x0014, 0x0005, 0x0000, 0x0004, 0x0011,\n    0x0020, 0x0030, 0x003C, 0x0041, 0x003F, 0x003B, 0x0035, 0x002D,\n    0x0024, 0x001A, 0x0011, 0x0007, 0x0000, 0x0000, 0x0015, 0x004C,\n    0x0098, 0x00EB, 0x0136, 0x016E, 0x0183, 0x0169, 0x0112, 0x0045,\n    0xFEF6, 0xFD59, 0xFBA7, 0xFA14, 0xF8D7, 0xF7CB, 0xF6B7, 0xF5B3,\n    0xF4D5, 0xF436, 0xF3EE, 0xF414, 0xF4E4, 0xF65F, 0xF845, 0xFA56,\n    0xFC50, 0xFDF3, 0xFF47, 0x007F, 0x01A2, 0x02B3, 0x03B5, 0x04AC,\n    0x059A, 0x067D, 0x0757, 0x082B, 0x08FA, 0x09C8, 0x0A95, 0x0B65,\n    0x0C39, 0xE442, 0xE43D, 0xE42F, 0xE41E, 0xE40C, 0xE3FE, 0xE3F9,\n    0xE400, 0xE417, 0xE442, 0xE4A8, 0xE551, 0xE615, 0xE6CE, 0xE753,\n    0xE77D, 0xE73E, 0xE6B6, 0xE600, 0xE535, 0xE471, 0xE3CF, 0xE368,\n    0xE342, 0xE348, 0xE36F, 0xE3AD, 0xE3F7, 0xE442, 0xE4A5, 0xE52C,\n    0xE5BF, 0xE645, 0xE6A8, 0xE6CE, 0xE6BF, 0xE695, 0xE656, 0xE606,\n    0xE5AC, 0xE54C, 0xE4EC, 0xE492, 0xE442, 0x0254, 0x0250, 0x0244,\n    0x0232, 0x021C, 0x0202, 0x01E6, 0x01CB, 0x01B0, 0x0198, 0x0184,\n    0x0175, 0x016B, 0x0163, 0x015E, 0x0159, 0x0157, 0x0156, 0x0155,\n    0x0156, 0x0157, 0x0158, 0x015A, 0x015B, 0x015C, 0x015E, 0x015F,\n    0x0162, 0x0164, 0x0168, 0x016C, 0x0172, 0x0178, 0x0180, 0x0189,\n    0x0195, 0x01A3, 0x01B7, 0x01CE, 0x01E8, 0x0204, 0x0220, 0x023B,\n    0x0254, 0x053E, 0x053F, 0x0544, 0x054A, 0x0552, 0x055B, 0x0565,\n    0x056E, 0x0578, 0x0580, 0x0587, 0x058C, 0x058F, 0x0591, 0x0592,\n    0x0593, 0x0593, 0x0593, 0x0592, 0x0591, 0x0590, 0x0590, 0x058F,\n    0x058E, 0x058E, 0x058D, 0x058D, 0x058C, 0x058C, 0x058B, 0x0589,\n    0x0588, 0x0586, 0x0584, 0x0581, 0x057D, 0x0578, 0x0572, 0x056A,\n    0x0561, 0x0558, 0x054F, 0x0546, 0x053E, 0xF8D6, 0xF8B6, 0xF85C,\n    0xF7D5, 0xF72B, 0xF669, 0xF599, 0xF4C7, 0xF3FE, 0xF349, 0xF2B2,\n    0xF244, 0xF1F8, 0xF1BE, 0xF193, 0xF176, 0xF164, 0xF15C, 0xF15C,\n    0xF162, 0xF16B, 0xF176, 0xF181, 0xF18A, 0xF194, 0xF19E, 0xF1AA,\n    0xF1BA, 0xF1CE, 0xF1E7, 0xF207, 0xF22F, 0xF260, 0xF29B, 0xF2E1,\n    0xF334, 0xF3A3, 0xF436, 0xF4E6, 0xF5AA, 0xF679, 0xF74B, 0xF818,\n    0xF8D6, 0x2486, 0x24A0, 0x24EA, 0x255D, 0x25F3, 0x26A6, 0x276F,\n    0x2848, 0x292B, 0x2A11, 0x2AF3, 0x2BCC, 0x2C95, 0x2D48, 0x2DDF,\n    0x2E52, 0x2E9B, 0x2EB5, 0x2D9F, 0x2B0A, 0x27FB, 0x2578, 0x2486,\n    0x24D5, 0x2564, 0x2627, 0x2716, 0x2828, 0x2954, 0x2A8F, 0x2BD0,\n    0x2D0F, 0x2E42, 0x2F5F, 0x305D, 0x3133, 0x31D8, 0x3241, 0x3267,\n    0x3167, 0x2ED9, 0x2B68, 0x27BE, 0x2486, 0xDB55, 0xDB73, 0xDBC5,\n    0xDC46, 0xDCED, 0xDDB4, 0xDE94, 0xDF85, 0xE080, 0xE17F, 0xE279,\n    0xE367, 0xE443, 0xE505, 0xE5A6, 0xE61E, 0xE65F, 0xE665, 0xE63C,\n    0xE5EE, 0xE586, 0xE510, 0xE496, 0xE425, 0xE3B7, 0xE342, 0xE2C6,\n    0xE246, 0xE1C1, 0xE13A, 0xE0B0, 0xE026, 0xDF9B, 0xDF12, 0xDE8B,\n    0xDE07, 0xDD87, 0xDD0D, 0xDC98, 0xDC39, 0xDBF4, 0xDBBF, 0xDB8E,\n    0xDB55, 0x0000, 0xFFF8, 0xFFE1, 0xFFBD, 0xFF8D, 0xFF54, 0xFF13,\n    0xFECC, 0xFE81, 0xFE33, 0xFDE6, 0xFD99, 0xFD50, 0xFD0C, 0xFCCF,\n    0xFC9A, 0xFC6C, 0xFC42, 0xFC1C, 0xFBFB, 0xFBE0, 0xFBCC, 0xFBBF,\n    0xFBBA, 0xFBBA, 0xFBB8, 0xFBB6, 0xFBB5, 0xFBB5, 0xFBB7, 0xFBBC,\n    0xFBC4, 0xFBD0, 0xFBE1, 0xFBF7, 0xFC13, 0xFC36, 0xFC61, 0xFC93,\n    0xFCF5, 0xFD9B, 0xFE68, 0xFF3E, 0x0000, 0xF34B, 0xF340, 0xF321,\n    0xF2EF, 0xF2AE, 0xF260, 0xF208, 0xF1A7, 0xF141, 0xF0D9, 0xF070,\n    0xF009, 0xEFA7, 0xEF4C, 0xEEFB, 0xEEB5, 0xEE79, 0xEE42, 0xEE12,\n    0xEDE9, 0xEDCA, 0xEDB7, 0xEDB0, 0xEDB8, 0xEDC9, 0xEDDD, 0xEDF4,\n    0xEE0E, 0xEE2B, 0xEE4C, 0xEE70, 0xEE98, 0xEEC3, 0xEEF3, 0xEF26,\n    0xEF5E, 0xEF9A, 0xEFDA, 0xF01F, 0xF087, 0xF123, 0xF1DB, 0xF29A,\n    0xF34B, 0x0000, 0xFFFF, 0xFFFC, 0xFFF6, 0xFFEE, 0xFFE5, 0xFFDA,\n    0xFFCD, 0xFFC0, 0xFFB2, 0xFFA3, 0xFF94, 0xFF85, 0xFF76, 0xFF67,\n    0xFF59, 0xFF45, 0xFF2B, 0xFF0F, 0xFEF5, 0xFEE1, 0xFED8, 0xFED8,\n    0xFED9, 0xFEDB, 0xFEE0, 0xFEE6, 0xFEEF, 0xFEFA, 0xFF08, 0xFF17,\n    0xFF2A, 0xFF3F, 0xFF76, 0xFFCD, 0x0012, 0x0038, 0x004F, 0x0054,\n    0x004D, 0x003D, 0x0028, 0x0013, 0x0000, 0x0000, 0x000E, 0x0036,\n    0x0074, 0x00C7, 0x012B, 0x019D, 0x0219, 0x029D, 0x0326, 0x03B0,\n    0x0439, 0x04BE, 0x053B, 0x05AE, 0x0613, 0x0676, 0x06DD, 0x073B,\n    0x0784, 0x07AC, 0x07A7, 0x0780, 0x0748, 0x0704, 0x06B4, 0x065B,\n    0x05FB, 0x0597, 0x0530, 0x04C8, 0x0462, 0x0400, 0x0387, 0x02F4,\n    0x0271, 0x0210, 0x01C0, 0x0174, 0x0127, 0x00DC, 0x0093, 0x0049,\n    0x0000, 0xA509, 0xA50B, 0xA512, 0xA51B, 0xA528, 0xA536, 0xA545,\n    0xA553, 0xA561, 0xA56E, 0xA577, 0xA57E, 0xA580, 0xA57D, 0xA574,\n    0xA564, 0xA52F, 0xA4CA, 0xA450, 0xA3DB, 0xA389, 0xA374, 0xA38C,\n    0xA3B0, 0xA3DE, 0xA417, 0xA45A, 0xA4A7, 0xA4FC, 0xA559, 0xA5BF,\n    0xA62C, 0xA6A0, 0xA76D, 0xA8A9, 0xA9FC, 0xABC6, 0xADA6, 0xAE1F,\n    0xACF3, 0xAB12, 0xA8C9, 0xA667, 0xA438, 0x8001, 0x8001, 0xBE14,\n    0xBE13, 0xBE0F, 0xBE09, 0xBE00, 0xBDF3, 0xBDE4, 0xBDD2, 0xBDBC,\n    0xBDA4, 0xBD87, 0xBD67, 0xBD44, 0xBD12, 0xBCCB, 0xBC78, 0xBC20,\n    0xBBCC, 0xBB83, 0xBB4D, 0xBB47, 0xBB73, 0xBBAA, 0xBBC7, 0xBBA6,\n    0xBB21, 0xBA2C, 0xB8E4, 0xB766, 0xB5CE, 0xB439, 0xB2C2, 0xB188,\n    0xB0A5, 0xB1FD, 0xB458, 0xB5A9, 0xB6EC, 0xB825, 0xB957, 0xBA85,\n    0xBBB2, 0xBCE0, 0xBE14, 0xCA03, 0xC9E0, 0xC980, 0xC8F1, 0xC843,\n    0xC782, 0xC6BF, 0xC607, 0xC568, 0xC4F2, 0xC4B2, 0xC4B7, 0xC511,\n    0xC5B8, 0xC69C, 0xC7AA, 0xC8D0, 0xC9FD, 0xCB1F, 0xCC25, 0xCCFB,\n    0xCD91, 0xCDD5, 0xCDCA, 0xCD89, 0xCD19, 0xCC84, 0xCBD3, 0xCB10,\n    0xCA42, 0xC974, 0xC8AF, 0xC7FB, 0xC762, 0xC6ED, 0xC6A4, 0xC69A,\n    0xC6CE, 0xC733, 0xC7B9, 0xC853, 0xC8F2, 0xC987, 0xCA03, 0xFFA2,\n    0xFF94, 0xFF70, 0xFF43, 0xFF16, 0xFEF6, 0xFEDF, 0xFEC9, 0xFEB4,\n    0xFE9F, 0xFE8A, 0xFE76, 0xFE63, 0xFE51, 0xFE3F, 0xFE2E, 0xFE1D,\n    0xFE0E, 0xFDFF, 0xFDF2, 0xFDED, 0xFDF8, 0xFE15, 0xFE64, 0xFEAE,\n    0xFEC9, 0xFEE3, 0xFEFD, 0xFF17, 0xFF30, 0xFF48, 0xFF60, 0xFF76,\n    0xFF8C, 0xFFA0, 0xFFB3, 0xFFC4, 0xFFD4, 0xFFE2, 0xFFEE, 0xFFF9,\n    0xFFE1, 0xFFA1, 0xFF61, 0xFF46, 0xFE45, 0xFBE6, 0xF920, 0xF6EB,\n    0xF63E, 0xF6C6, 0xF786, 0xF877, 0xF992, 0xFACF, 0xFC26, 0xFD90,\n    0xFF06, 0x007F, 0x01F5, 0x0361, 0x04BB, 0x05FC, 0x071C, 0x07E2,\n    0x082B, 0x0813, 0x0723, 0x05D4, 0x04D2, 0x03CD, 0x02C7, 0x01C0,\n    0x00B9, 0xFFB2, 0xFEAC, 0xFDA7, 0xFCA5, 0xFBA5, 0xFAA9, 0xF9B1,\n    0xF8BE, 0xF7D0, 0xF6E9, 0xF608, 0xF589, 0xF57B, 0xF56D, 0x9A98,\n    0x9914, 0x9566, 0x90DD, 0x8CC4, 0x8A6A, 0x8978, 0x88B6, 0x881E,\n    0x87AB, 0x8758, 0x8721, 0x86FF, 0x86ED, 0x86E7, 0x86E7, 0x86E8,\n    0x86E4, 0x86D7, 0x86BB, 0x86E2, 0x8767, 0x87F6, 0x88A5, 0x8912,\n    0x8900, 0x88E7, 0x88C7, 0x88A1, 0x8876, 0x8849, 0x881B, 0x87EC,\n    0x87BF, 0x8794, 0x876D, 0x874B, 0x8730, 0x871D, 0x8713, 0x8714,\n    0x878C, 0x888D, 0x898F, 0xCD46, 0xCD28, 0xCCD4, 0xCC52, 0xCBAC,\n    0xCAEA, 0xCA14, 0xC933, 0xC851, 0xC774, 0xC6A7, 0xC5F2, 0xC55D,\n    0xC4F1, 0xC4B7, 0xC4B7, 0xC54C, 0xC6A0, 0xC872, 0xCA82, 0xCC91,\n    0xCE5D, 0xCFA8, 0xD031, 0xD023, 0xCFDB, 0xCF60, 0xCEBC, 0xCDF7,\n    0xCD19, 0xCC2A, 0xCB33, 0xCA3D, 0xC950, 0xC875, 0xC7B3, 0xC713,\n    0xC69E, 0xC65D, 0xC6C4, 0xC807, 0xC9C6, 0xCBA5, 0xCD46, 0x3E12,\n    0x3E01, 0x3DCF, 0x3D82, 0x3D1F, 0x3CAA, 0x3C2A, 0x3BA3, 0x3B1A,\n    0x3A94, 0x3A15, 0x39A4, 0x3945, 0x38FD, 0x38D1, 0x38C6, 0x3934,\n    0x3A3D, 0x3B98, 0x3CFA, 0x3E1B, 0x3EB0, 0x3ED4, 0x3ED5, 0x3EB9,\n    0x3E86, 0x3E41, 0x3DF1, 0x3D9A, 0x3D42, 0x3CF0, 0x3CA8, 0x3C71,\n    0x3C3C, 0x3BFB, 0x3BB6, 0x3B77, 0x3B47, 0x3B2C, 0x3B30, 0x3B5C,\n    0x3C34, 0x3DC0, 0x3F4B, 0x0AA8, 0x0AA3, 0x0A95, 0x0A80, 0x0A65,\n    0x0A46, 0x0A24, 0x0A00, 0x09DC, 0x09BA, 0x099A, 0x097F, 0x096A,\n    0x0957, 0x0946, 0x0937, 0x092F, 0x092E, 0x0939, 0x0950, 0x097C,\n    0x09BC, 0x0A0A, 0x0A5E, 0x0AB0, 0x0AF9, 0x0B3B, 0x0B80, 0x0BC3,\n    0x0C06, 0x0C46, 0x0C82, 0x0CB9, 0x0CE9, 0x0CE9, 0x0CB5, 0x0C7A,\n    0x0C3B, 0x0BF9, 0x0BB6, 0x0B72, 0x0B2E, 0x0AEA, 0x0AA8, 0x0AC9,\n    0x0ACD, 0x0AD9, 0x0AEC, 0x0B03, 0x0B1F, 0x0B3D, 0x0B5D, 0x0B7C,\n    0x0B9B, 0x0BB6, 0x0BCE, 0x0BE1, 0x0BF1, 0x0C00, 0x0C0D, 0x0C14,\n    0x0C14, 0x0C0A, 0x0BF4, 0x0BCE, 0x0B97, 0x0B54, 0x0B09, 0x0ABB,\n    0x0A6E, 0x0A1F, 0x09CA, 0x0970, 0x0916, 0x08BE, 0x086C, 0x0821,\n    0x07E3, 0x07EF, 0x083C, 0x0888, 0x08D7, 0x0928, 0x097B, 0x09CF,\n    0x0A23, 0x0A76, 0x0AC9, 0xA078, 0xA066, 0xA035, 0x9FE8, 0x9F87,\n    0x9F15, 0x9E98, 0x9E16, 0x9D94, 0x9D17, 0x9CA4, 0x9C41, 0x9BF3,\n    0x9BB0, 0x9B70, 0x9B3B, 0x9B1C, 0x9B1B, 0x9B42, 0x9B99, 0x9C37,\n    0x9D1F, 0x9E38, 0x9F6B, 0xA0A1, 0xA1C1, 0xA2DA, 0xA403, 0xA532,\n    0xA65F, 0xA784, 0xA896, 0xA98E, 0xAA64, 0xAA4A, 0xA951, 0xA84C,\n    0xA73C, 0xA622, 0xA502, 0xA3DE, 0xA2B9, 0xA197, 0xA078, 0x1945,\n    0x1934, 0x1906, 0x18C1, 0x186A, 0x1808, 0x17A1, 0x1739, 0x16D9,\n    0x1685, 0x1643, 0x1619, 0x1603, 0x15F8, 0x15F6, 0x15FE, 0x160D,\n    0x1624, 0x1642, 0x1665, 0x168E, 0x16BB, 0x16EC, 0x1725, 0x176C,\n    0x17BD, 0x1816, 0x1873, 0x18D3, 0x1932, 0x198F, 0x19E6, 0x1A34,\n    0x1A78, 0x1AAD, 0x1AD3, 0x1ADD, 0x1AC8, 0x1A9A, 0x1A5A, 0x1A11,\n    0x19C6, 0x197F, 0x1945, 0xE9B2, 0xE9A2, 0xE974, 0xE930, 0xE8DA,\n    0xE879, 0xE812, 0xE7AC, 0xE74C, 0xE6F9, 0xE6B8, 0xE68F, 0xE679,\n    0xE66C, 0xE669, 0xE66E, 0xE67B, 0xE691, 0xE6AD, 0xE6D0, 0xE6FA,\n    0xE72A, 0xE75F, 0xE7A0, 0xE7F0, 0xE84C, 0xE8B2, 0xE91D, 0xE98B,\n    0xE9F9, 0xEA63, 0xEAC6, 0xEB1E, 0xEB6A, 0xEBA5, 0xEBCC, 0xEBD2,\n    0xEBB1, 0xEB72, 0xEB1F, 0xEABF, 0xEA5D, 0xEA00, 0xE9B2, 0xBD23,\n    0xBD41, 0xBD94, 0xBE11, 0xBEAD, 0xBF5E, 0xC019, 0xC0D3, 0xC182,\n    0xC21A, 0xC290, 0xC2DB, 0xC303, 0xC319, 0xC31D, 0xC311, 0xC2F6,\n    0xC2CE, 0xC299, 0xC259, 0xC20E, 0xC1BB, 0xC160, 0xC0F2, 0xC06C,\n    0xBFD2, 0xBF29, 0xBE76, 0xBDBF, 0xBD09, 0xBC59, 0xBBB4, 0xBB1F,\n    0xBA9F, 0xBA3A, 0xB9F5, 0xB9E5, 0xBA14, 0xBA72, 0xBAF2, 0xBB86,\n    0xBC1E, 0xBCAC, 0xBD23, 0xF071, 0xF069, 0xF052, 0xF02F, 0xF001,\n    0xEFCA, 0xEF8C, 0xEF4A, 0xEF05, 0xEEBF, 0xEE7B, 0xEE3A, 0xEDFD,\n    0xEDC8, 0xED9D, 0xED7C, 0xED6A, 0xED68, 0xED73, 0xED88, 0xEDA5,\n    0xEDC7, 0xEDED, 0xEE12, 0xEE39, 0xEE64, 0xEE93, 0xEEC4, 0xEEF7,\n    0xEF2B, 0xEF61, 0xEF95, 0xEFCA, 0xEFFC, 0xF02D, 0xF05A, 0xF085,\n    0xF0AB, 0xF0CC, 0xF0D8, 0xF0CA, 0xF0AC, 0xF08B, 0xF071, 0x0B16,\n    0x0B16, 0x0B15, 0x0B13, 0x0B10, 0x0B0D, 0x0B0A, 0x0B07, 0x0B03,\n    0x0B00, 0x0AFC, 0x0AF9, 0x0AF6, 0x0AF3, 0x0AF1, 0x0AEF, 0x0AED,\n    0x0AEA, 0x0AE8, 0x0AE6, 0x0AE6, 0x0AE8, 0x0AED, 0x0AF7, 0x0B04,\n    0x0B15, 0x0B28, 0x0B3C, 0x0B52, 0x0B69, 0x0B80, 0x0B97, 0x0BAD,\n    0x0BC1, 0x0BD3, 0x0BE3, 0x0BEF, 0x0BF7, 0x0BFB, 0x0BEC, 0x0BC2,\n    0x0B88, 0x0B4B, 0x0B16, 0xBF48, 0xBF47, 0xBF44, 0xBF3F, 0xBF39,\n    0xBF32, 0xBF2A, 0xBF21, 0xBF18, 0xBF0F, 0xBF06, 0xBEFD, 0xBEF5,\n    0xBEEE, 0xBEE8, 0xBEE4, 0xBEDF, 0xBED8, 0xBED1, 0xBECC, 0xBECB,\n    0xBED1, 0xBEDF, 0xBEF8, 0xBF1A, 0xBF45, 0xBF76, 0xBFAC, 0xBFE5,\n    0xC021, 0xC05D, 0xC097, 0xC0D0, 0xC104, 0xC133, 0xC15B, 0xC17B,\n    0xC190, 0xC19B, 0xC172, 0xC105, 0xC071, 0xBFD3, 0xBF48, 0xF5A5,\n    0xF5A1, 0xF595, 0xF583, 0xF56B, 0xF54F, 0xF531, 0xF510, 0xF4EE,\n    0xF4CD, 0xF4AD, 0xF490, 0xF477, 0xF463, 0xF455, 0xF44E, 0xF45B,\n    0xF481, 0xF4B8, 0xF4F7, 0xF536, 0xF56C, 0xF59F, 0xF5D8, 0xF614,\n    0xF652, 0xF68F, 0xF6CA, 0xF6FF, 0xF72C, 0xF750, 0xF769, 0xF773,\n    0xF76E, 0xF75B, 0xF73C, 0xF713, 0xF6E3, 0xF6AE, 0xF676, 0xF63E,\n    0xF607, 0xF5D3, 0xF5A5, 0xF580, 0xF585, 0xF592, 0xF5A7, 0xF5C2,\n    0xF5E2, 0xF605, 0xF62A, 0xF650, 0xF676, 0xF69A, 0xF6BB, 0xF6D8,\n    0xF6EF, 0xF6FF, 0xF707, 0xF6F9, 0xF6CD, 0xF68E, 0xF648, 0xF603,\n    0xF5CC, 0xF59B, 0xF567, 0xF531, 0xF4FB, 0xF4C5, 0xF493, 0xF465,\n    0xF43E, 0xF41F, 0xF409, 0xF3FF, 0xF403, 0xF412, 0xF42B, 0xF44D,\n    0xF475, 0xF4A2, 0xF4D1, 0xF500, 0xF52F, 0xF55A, 0xF580, 0xA064,\n    0xA076, 0xA0A8, 0xA0F5, 0xA159, 0xA1CE, 0xA250, 0xA2DA, 0xA368,\n    0xA3F4, 0xA479, 0xA4F4, 0xA55E, 0xA5B4, 0xA5EF, 0xA60D, 0xA5D7,\n    0xA536, 0xA44E, 0xA346, 0xA243, 0xA169, 0xA0A4, 0x9FCB, 0x9EE7,\n    0x9DFF, 0x9D1B, 0x9C43, 0x9B7E, 0x9AD5, 0x9A4F, 0x99F4, 0x99CC,\n    0x99DD, 0x9A22, 0x9A92, 0x9B26, 0x9BD6, 0x9C98, 0x9D65, 0x9E36,\n    0x9F00, 0x9FBD, 0xA064, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x0000,\n};\n\n// 0x060512CC\nstatic const u16 bowser_seg6_animindex_060512CC[] = {\n    0x0001, 0x0000, 0x002C, 0x0001, 0x0001, 0x002D, 0x002C, 0x002E, 0x002C, 0x005A, 0x002C, 0x0086,\n    0x0001, 0x0000, 0x0001, 0x06C0, 0x0001, 0x0000,\n    0x002C, 0x04AB, 0x002C, 0x04D7, 0x002C, 0x0503,\n    0x0001, 0x0375, 0x0001, 0x0376, 0x002C, 0x0377,\n    0x002C, 0x00B5, 0x002C, 0x00E1, 0x002C, 0x010D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x06BF, 0x0001, 0x0000,\n    0x002C, 0x0139, 0x002C, 0x0165, 0x002C, 0x0191,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x06BE, 0x0001, 0x0000,\n    0x002C, 0x052F, 0x002C, 0x055B, 0x002C, 0x0587,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002C, 0x03A3,\n    0x002C, 0x01BD, 0x002C, 0x01E9, 0x002C, 0x0215,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x06BD, 0x0001, 0x0000,\n    0x002C, 0x03CF, 0x002C, 0x03FB, 0x002C, 0x0427,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002C, 0x0241,\n    0x0001, 0x00B2, 0x0001, 0x00B3, 0x0001, 0x00B4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x06BC, 0x0001, 0x0000,\n    0x002C, 0x05B3, 0x002C, 0x05DF, 0x002C, 0x060B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002C, 0x0453,\n    0x002C, 0x026D, 0x002C, 0x0299, 0x002C, 0x02C5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x06BB, 0x0001, 0x0000,\n    0x002C, 0x0637, 0x002C, 0x0663, 0x002C, 0x068F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002C, 0x047F,\n    0x002C, 0x02F1, 0x002C, 0x031D, 0x002C, 0x0349,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x060514E8\nstatic const struct Animation bowser_seg6_anim_060514E8 = {\n    0,\n    0,\n    0,\n    0,\n    0x2C,\n    ANIMINDEX_NUMPARTS(bowser_seg6_animindex_060512CC),\n    bowser_seg6_animvalue_06050548,\n    bowser_seg6_animindex_060512CC,\n    0,\n};\n"
  },
  {
    "path": "actors/bowser/anims/anim_06051C68.inc.c",
    "content": "// 0x06051500\nstatic const s16 bowser_seg6_animvalue_06051500[] = {\n    0x0000, 0x005C, 0x0060, 0x0065, 0x006A, 0x006F, 0x0073, 0x0078,\n    0x007D, 0x0081, 0x0086, 0x008B, 0x008F, 0x0094, 0x0099, 0x009D,\n    0x00A2, 0x00A7, 0x00AB, 0x00B0, 0x00B5, 0xFFE7, 0x0B2B, 0xF57D,\n    0xEB92, 0xE040, 0xD4A2, 0xC9D6, 0xC0F9, 0xBB29, 0xB72B, 0xB314,\n    0xAEF7, 0xAAE7, 0xA6F6, 0xA339, 0x9FC2, 0x9CA3, 0x99F0, 0x97BD,\n    0x961B, 0x951E, 0x32C6, 0xC001, 0x32C6, 0x0000, 0x0014, 0x004D,\n    0x009F, 0x0101, 0x016A, 0x01D1, 0x022C, 0x0289, 0x02F6, 0x0366,\n    0x03CA, 0x0416, 0x043E, 0x0432, 0x03FA, 0x03AB, 0x0357, 0x0312,\n    0x02F1, 0x09C7, 0x09C2, 0x09B5, 0x09A2, 0x098B, 0x0972, 0x095A,\n    0x0943, 0x092A, 0x090B, 0x08EA, 0x08CE, 0x08BA, 0x08B3, 0x08C0,\n    0x08DD, 0x0902, 0x0928, 0x0946, 0x0955, 0xA4A0, 0xA4FC, 0xA5F2,\n    0xA75A, 0xA90A, 0xAAD9, 0xAC9D, 0xAE2B, 0xAFC9, 0xB1AC, 0xB39A,\n    0xB557, 0xB6A7, 0xB74F, 0xB70E, 0xB606, 0xB492, 0xB30C, 0xB1CF,\n    0xB134, 0xF0C0, 0xFD65, 0x0B80, 0x0C45, 0x09DE, 0x05F9, 0x0244,\n    0xFE87, 0xFA05, 0xF5AA, 0xF25D, 0xF10B, 0xF1B7, 0xF38A, 0xF626,\n    0xF92A, 0xFC36, 0xFEED, 0x00EC, 0x01D6, 0x0254, 0x0254, 0x0254,\n    0x0254, 0x0254, 0x0254, 0x0254, 0x0254, 0x0254, 0x0254, 0x0254,\n    0x0254, 0x0254, 0x0254, 0x0254, 0x0254, 0x0254, 0x0254, 0x0254,\n    0x0254, 0x053E, 0x0561, 0x059C, 0x05A8, 0x053E, 0x03A3, 0x016E,\n    0x0052, 0x006A, 0x00AD, 0x0112, 0x0191, 0x0221, 0x02BB, 0x0355,\n    0x03E8, 0x046A, 0x04D4, 0x051D, 0x053D, 0xF8D6, 0xF939, 0xF9DE,\n    0xF9FF, 0xF8D6, 0xF45B, 0xEE31, 0xEB16, 0xEB5A, 0xEC14, 0xED2F,\n    0xEE91, 0xF025, 0xF1D2, 0xF381, 0xF51A, 0xF686, 0xF7AF, 0xF87B,\n    0xF8D4, 0x2214, 0x235A, 0x26A6, 0x2B30, 0x302F, 0x34DB, 0x386A,\n    0x3A14, 0x3A1E, 0x3A1E, 0x3A1E, 0x3A1E, 0x3A1E, 0x3A1E, 0x3A1E,\n    0x3A1E, 0x3A1E, 0x3A1E, 0x3A1E, 0x3A1E, 0xDB55, 0xDB4E, 0xDB41,\n    0xDB3F, 0xDB55, 0xDBAE, 0xDC28, 0xDC65, 0xDC60, 0xDC52, 0xDC3C,\n    0xDC21, 0xDC01, 0xDBE0, 0xDBBF, 0xDB9F, 0xDB83, 0xDB6C, 0xDB5C,\n    0xDB56, 0x0000, 0x0024, 0x0061, 0x006D, 0x0000, 0xFE5B, 0xFC17,\n    0xFAF3, 0xFB0B, 0xFB50, 0xFBB8, 0xFC3A, 0xFCCF, 0xFD6C, 0xFE0B,\n    0xFEA1, 0xFF27, 0xFF94, 0xFFDF, 0x0000, 0xF34B, 0xF3A7, 0xF43F,\n    0xF45D, 0xF34B, 0xEF29, 0xE97B, 0xE69D, 0xE6DB, 0xE787, 0xE88C,\n    0xE9D3, 0xEB47, 0xECD3, 0xEE60, 0xEFDA, 0xF12A, 0xF23B, 0xF2F8,\n    0xF34A, 0xA509, 0xA5AB, 0xA75A, 0xA9BF, 0xAC85, 0xAF57, 0xB1DF,\n    0xB3C8, 0xB555, 0xB6F0, 0xB879, 0xB9D1, 0xBAD8, 0xBB70, 0xBB79,\n    0xBAD4, 0xB76D, 0xB12E, 0xAAF0, 0xA790, 0x8001, 0x7F29, 0x7CFA,\n    0x79EF, 0x7685, 0x7338, 0x7085, 0x6EE8, 0x6EB2, 0x6F8C, 0x70FB,\n    0x7282, 0x73A4, 0x73E6, 0x7305, 0x7157, 0x6F44, 0x6D37, 0x6B99,\n    0x6AD3, 0x8001, 0x814C, 0x84B1, 0x897A, 0x8EEE, 0x9456, 0x98FA,\n    0x9C22, 0x9DD7, 0x9EB4, 0x9EE4, 0x9E92, 0x9DE7, 0x9D0E, 0x9BA0,\n    0x9967, 0x96D6, 0x945F, 0x9277, 0x9190, 0xD20B, 0xD0D4, 0xCDA2,\n    0xC920, 0xC3FC, 0xBEE2, 0xBA7E, 0xB77D, 0xB5A4, 0xB457, 0xB3A9,\n    0xB3B0, 0xB482, 0xB633, 0xB9A0, 0xBEE3, 0xC4F1, 0xCABB, 0xCF35,\n    0xD152, 0xE0D4, 0xE222, 0xE4C9, 0xE6E6, 0xE696, 0xE0D0, 0xD800,\n    0xD278, 0xD0D4, 0xCF75, 0xCE54, 0xCD6D, 0xCCB7, 0xCC2E, 0xCBCA,\n    0xCB87, 0xCB5D, 0xCB47, 0xCB3E, 0xCB3C, 0x005B, 0x0050, 0x0048,\n    0x0049, 0x004C, 0x0050, 0x0053, 0x0055, 0x0055, 0x0055, 0x0055,\n    0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055,\n    0x0055, 0xFFE8, 0x0012, 0x0037, 0x003A, 0x0038, 0x0032, 0x002C,\n    0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029,\n    0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x97F8, 0x83E6, 0x724E,\n    0x7116, 0x72D2, 0x7608, 0x793F, 0x7AFD, 0x7B08, 0x7B08, 0x7B08,\n    0x7B08, 0x7B08, 0x7B08, 0x7B08, 0x7B08, 0x7B08, 0x7B08, 0x7B08,\n    0x7B08, 0x0000, 0xFFF7, 0xFFE7, 0xFFE3, 0x0000, 0x0070, 0x010A,\n    0x0158, 0x0152, 0x013F, 0x0124, 0x0101, 0x00D9, 0x00AF, 0x0085,\n    0x005D, 0x0039, 0x001C, 0x0008, 0x0000, 0x0000, 0xFF84, 0xFE67,\n    0xFD2B, 0xFC56, 0xFC3A, 0xFC8D, 0xFCE9, 0xFD2C, 0xFD77, 0xFDCA,\n    0xFE20, 0xFE76, 0xFECB, 0xFF1B, 0xFF63, 0xFFA1, 0xFFD2, 0xFFF2,\n    0x0000, 0xE6F1, 0xE8D7, 0xECE7, 0xF0AA, 0xF1AC, 0xECB8, 0xE469,\n    0xDEFD, 0xDD32, 0xDB98, 0xDA2E, 0xD8F2, 0xD7E2, 0xD6FC, 0xD63E,\n    0xD5A6, 0xD532, 0xD4E0, 0xD4AF, 0xD49C, 0xCC31, 0xCCBA, 0xCE2D,\n    0xD051, 0xD2EB, 0xD5C1, 0xD898, 0xDB36, 0xDDAE, 0xE03A, 0xE2D2,\n    0xE572, 0xE814, 0xEAB3, 0xED48, 0xEFD0, 0xF29C, 0xF58E, 0xF7F5,\n    0xF921, 0xF52D, 0xF5B8, 0xF724, 0xF924, 0xFB68, 0xFDA2, 0xFF84,\n    0x00BE, 0x0149, 0x0166, 0x013B, 0x00E9, 0x0095, 0x0062, 0x0075,\n    0x00F0, 0x029C, 0x0560, 0x080F, 0x097F, 0x4467, 0x4213, 0x3C00,\n    0x338D, 0x2A1B, 0x2108, 0x19B3, 0x157D, 0x1400, 0x13D0, 0x14C1,\n    0x16A5, 0x194E, 0x1C91, 0x203F, 0x242C, 0x2B4A, 0x35EB, 0x3FEF,\n    0x4536, 0xDED1, 0x1FF4, 0x8256, 0x1898, 0x168B, 0x123D, 0x0E76,\n    0x0DFB, 0x1073, 0x1393, 0x173E, 0x1B53, 0x1FB4, 0x2442, 0x28DE,\n    0x2D69, 0x31C3, 0x35CD, 0x396A, 0x3C79, 0x3EDB, 0x4072, 0x411E,\n    0xE3FB, 0xE00A, 0xD748, 0xCE4B, 0xC9AD, 0xC900, 0xC8BC, 0xC8D5,\n    0xC93D, 0xC9E5, 0xCAC0, 0xCBC0, 0xCCD8, 0xCDF9, 0xCF16, 0xD021,\n    0xD10B, 0xD1C8, 0xD24A, 0xD282, 0xA0A7, 0xA232, 0xA558, 0xA7DE,\n    0xA788, 0xA4A8, 0xA11F, 0x9D0E, 0x9895, 0x93D4, 0x8EEA, 0x89F7,\n    0x851D, 0x807A, 0x7C2B, 0x7857, 0x751B, 0x7296, 0x70E9, 0x7034,\n    0xE925, 0xE5B8, 0xDE22, 0xD671, 0xD2B0, 0xD27C, 0xD2B3, 0xD348,\n    0xD429, 0xD549, 0xD697, 0xD805, 0xD983, 0xDB02, 0xDC73, 0xDDC6,\n    0xDEEC, 0xDFD7, 0xE076, 0xE0BA, 0x178C, 0x1ADC, 0x2232, 0x29A2,\n    0x2D40, 0x2D6D, 0x2D31, 0x2C9A, 0x2BB8, 0x2A9A, 0x294E, 0x27E4,\n    0x266A, 0x24F0, 0x2384, 0x2236, 0x2114, 0x202D, 0x1F91, 0x1F4E,\n    0x9EEA, 0x9BD0, 0x94D7, 0x8D7C, 0x893B, 0x87C9, 0x8686, 0x856F,\n    0x8481, 0x83B7, 0x8310, 0x8288, 0x821B, 0x81C7, 0x8189, 0x815D,\n    0x8140, 0x8130, 0x8128, 0x8126, 0x05F6, 0xEAE4, 0xA38A, 0x3FFF,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x0000,\n};\n\n// 0x06051A4C\nstatic const u16 bowser_seg6_animindex_06051A4C[] = {\n    0x0001, 0x0000, 0x0014, 0x0001, 0x0001, 0x0015, 0x0014, 0x0016, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x02A4, 0x0001, 0x0000,\n    0x0001, 0x0221, 0x0001, 0x0222, 0x0001, 0x0223,\n    0x0014, 0x011D, 0x0014, 0x0131, 0x0014, 0x0145,\n    0x0014, 0x002D, 0x0014, 0x0041, 0x0014, 0x0055,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x02A3, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x0069,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x02A2, 0x0001, 0x0000,\n    0x0014, 0x0224, 0x0014, 0x0238, 0x0014, 0x024C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x0159,\n    0x0014, 0x007D, 0x0014, 0x0091, 0x0014, 0x00A5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x02A1, 0x0001, 0x0000,\n    0x0014, 0x016D, 0x0014, 0x0181, 0x0014, 0x0195,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x00B9,\n    0x0001, 0x002A, 0x0001, 0x002B, 0x0001, 0x002C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x02A0, 0x0001, 0x0000,\n    0x0014, 0x0260, 0x0014, 0x0274, 0x0014, 0x0288,\n    0x0014, 0x01A9, 0x0014, 0x01BD, 0x0014, 0x01D1,\n    0x0014, 0x00CD, 0x0014, 0x00E1, 0x0014, 0x00F5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x029F, 0x0001, 0x0000,\n    0x0001, 0x029C, 0x0001, 0x029D, 0x0001, 0x029E,\n    0x0014, 0x01E5, 0x0014, 0x01F9, 0x0014, 0x020D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x0109,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x06051C68\nstatic const struct Animation bowser_seg6_anim_06051C68 = {\n    1,\n    0,\n    0,\n    0,\n    0x14,\n    ANIMINDEX_NUMPARTS(bowser_seg6_animindex_06051A4C),\n    bowser_seg6_animvalue_06051500,\n    bowser_seg6_animindex_06051A4C,\n    0,\n};\n"
  },
  {
    "path": "actors/bowser/anims/anim_06052680.inc.c",
    "content": "// 0x06051C80\nstatic const s16 bowser_seg6_animvalue_06051C80[] = {\n    0x0000, 0x00B5, 0xFFE7, 0x951E, 0x9510, 0x951B, 0x9526, 0x9533,\n    0x9540, 0x954D, 0x955B, 0x9569, 0x9577, 0x9585, 0x9594, 0x95A2,\n    0x95B0, 0x95BE, 0x95CC, 0x95D9, 0x95E6, 0x95F2, 0x95FE, 0x9609,\n    0x9613, 0x961C, 0x9624, 0x962C, 0x9632, 0x9637, 0x963A, 0x963C,\n    0x963D, 0x0000, 0x0001, 0x0003, 0x0004, 0x0006, 0x0008, 0x000A,\n    0x000B, 0x000D, 0x000F, 0x0011, 0x0013, 0x0015, 0x0017, 0x0019,\n    0x001A, 0x001C, 0x001E, 0x001F, 0x0021, 0x0022, 0x0024, 0x0025,\n    0x0026, 0x0027, 0x0028, 0x0028, 0x0029, 0x0029, 0x0029, 0x0000,\n    0xFFEE, 0xFFDA, 0xFFC6, 0xFFB0, 0xFF9A, 0xFF83, 0xFF6C, 0xFF54,\n    0xFF3D, 0xFF25, 0xFF0D, 0xFEF5, 0xFEDE, 0xFEC7, 0xFEB1, 0xFE9B,\n    0xFE86, 0xFE72, 0xFE5F, 0xFE4D, 0xFE3D, 0xFE2E, 0xFE21, 0xFE15,\n    0xFE0B, 0xFE03, 0xFDFD, 0xFDFA, 0xFDF9, 0x32C6, 0xC001, 0x32C6,\n    0x02F1, 0x02B3, 0x0272, 0x022D, 0x01E6, 0x019D, 0x0151, 0x0105,\n    0x00B8, 0x006A, 0x001D, 0xFFD2, 0xFF86, 0xFF3D, 0xFEF6, 0xFEB2,\n    0xFE71, 0xFE33, 0xFDFA, 0xFDC6, 0xFD97, 0xFD6E, 0xFD4C, 0xFD30,\n    0xFD1B, 0xFD0F, 0xFD0A, 0xFD0A, 0xFD0A, 0xFD0A, 0x0955, 0x0948,\n    0x0939, 0x092A, 0x091B, 0x090B, 0x08FB, 0x08EA, 0x08D9, 0x08C8,\n    0x08B7, 0x08A7, 0x0896, 0x0886, 0x0877, 0x0868, 0x0859, 0x084C,\n    0x0840, 0x0834, 0x082A, 0x0821, 0x081A, 0x0813, 0x080F, 0x080C,\n    0x080B, 0x080B, 0x080B, 0x080B, 0xB134, 0xB1B1, 0xB23A, 0xB2CA,\n    0xB360, 0xB3FB, 0xB499, 0xB53A, 0xB5DD, 0xB680, 0xB723, 0xB7C4,\n    0xB863, 0xB8FE, 0xB994, 0xBA24, 0xBAAD, 0xBB2E, 0xBBA6, 0xBC14,\n    0xBC77, 0xBCCD, 0xBD16, 0xBD51, 0xBD7D, 0xBD97, 0xBDA0, 0xBDA0,\n    0xBDA0, 0xBDA0, 0x01D6, 0x0289, 0x0341, 0x0403, 0x04CD, 0x059D,\n    0x0671, 0x074A, 0x0824, 0x0900, 0x09DA, 0x0AB3, 0x0B87, 0x0C57,\n    0x0D20, 0x0DE2, 0x0E9A, 0x0F47, 0x0FE8, 0x107C, 0x1100, 0x1174,\n    0x11D6, 0x1225, 0x125F, 0x1283, 0x1290, 0x1290, 0x1290, 0x1290,\n    0x0254, 0x053D, 0x053E, 0x053E, 0x053E, 0x053E, 0x053E, 0x053E,\n    0x053E, 0x053E, 0x053E, 0x053E, 0x053E, 0x053E, 0x053E, 0x053E,\n    0x053E, 0x053E, 0x053E, 0x053E, 0x053E, 0x053E, 0x053E, 0x053E,\n    0x053E, 0x053E, 0x053E, 0x053E, 0x053E, 0x053E, 0x053E, 0xF8D4,\n    0xF8D6, 0xF8D6, 0xF8D6, 0xF8D6, 0xF8D6, 0xF8D6, 0xF8D6, 0xF8D6,\n    0xF8D6, 0xF8D6, 0xF8D6, 0xF8D6, 0xF8D6, 0xF8D6, 0xF8D6, 0xF8D6,\n    0xF8D6, 0xF8D6, 0xF8D6, 0xF8D6, 0xF8D6, 0xF8D6, 0xF8D6, 0xF8D6,\n    0xF8D6, 0xF8D6, 0xF8D6, 0xF8D6, 0xF8D6, 0x3A1E, 0x39FF, 0x39A7,\n    0x3918, 0x3858, 0x376A, 0x3654, 0x3519, 0x33BE, 0x3246, 0x30B7,\n    0x2F15, 0x2D63, 0x2BA7, 0x29E4, 0x281F, 0x265C, 0x24A0, 0x22EE,\n    0x214C, 0x1FBC, 0x1E45, 0x1CEA, 0x1BAF, 0x1A98, 0x19AB, 0x18EB,\n    0x185C, 0x1803, 0x17E5, 0xDB56, 0xDB54, 0xDB52, 0xDB51, 0xDB4F,\n    0xDB4D, 0xDB4C, 0xDB4A, 0xDB48, 0xDB46, 0xDB44, 0xDB43, 0xDB41,\n    0xDB3F, 0xDB3E, 0xDB3C, 0xDB3A, 0xDB39, 0xDB38, 0xDB36, 0xDB35,\n    0xDB34, 0xDB34, 0xDB33, 0xDB32, 0xDB32, 0xDB32, 0xDB32, 0xDB32,\n    0xDB32, 0x0000, 0x0076, 0x00F4, 0x0177, 0x0201, 0x028F, 0x0320,\n    0x03B3, 0x0448, 0x04DE, 0x0573, 0x0606, 0x0697, 0x0725, 0x07AE,\n    0x0832, 0x08B0, 0x0926, 0x0994, 0x09F8, 0x0A53, 0x0AA2, 0x0AE5,\n    0x0B1B, 0x0B42, 0x0B5B, 0x0B63, 0x0B63, 0x0B63, 0x0B63, 0xF34A,\n    0xF36E, 0xF393, 0xF3BA, 0xF3E2, 0xF40C, 0xF437, 0xF462, 0xF48E,\n    0xF4BA, 0xF4E6, 0xF511, 0xF53C, 0xF565, 0xF58D, 0xF5B4, 0xF5D9,\n    0xF5FC, 0xF61C, 0xF63A, 0xF654, 0xF66B, 0xF67F, 0xF68F, 0xF69A,\n    0xF6A2, 0xF6A4, 0xF6A4, 0xF6A4, 0xF6A4, 0xA790, 0xA7AC, 0xA7E2,\n    0xA81A, 0xA854, 0xA891, 0xA8CF, 0xA90E, 0xA94E, 0xA98E, 0xA9CE,\n    0xAA0E, 0xAA4C, 0xAA89, 0xAAC4, 0xAAFD, 0xAB33, 0xAB66, 0xAB96,\n    0xABC1, 0xABE8, 0xAC0A, 0xAC27, 0xAC3F, 0xAC50, 0xAC5A, 0xAC5E,\n    0xAC5E, 0xAC5E, 0xAC5E, 0x6AD3, 0x6A74, 0x6A15, 0x69B1, 0x6949,\n    0x68DE, 0x6870, 0x6801, 0x6790, 0x671F, 0x66AE, 0x663F, 0x65D1,\n    0x6566, 0x64FE, 0x649B, 0x643C, 0x63E2, 0x638F, 0x6343, 0x62FF,\n    0x62C3, 0x6290, 0x6268, 0x624A, 0x6237, 0x6231, 0x6231, 0x6231,\n    0x6231, 0x9190, 0x919D, 0x91B1, 0x91C5, 0x91DA, 0x91F0, 0x9207,\n    0x921E, 0x9235, 0x924C, 0x9263, 0x927A, 0x9291, 0x92A7, 0x92BC,\n    0x92D0, 0x92E4, 0x92F6, 0x9308, 0x9317, 0x9325, 0x9332, 0x933C,\n    0x9345, 0x934B, 0x934F, 0x9350, 0x9350, 0x9350, 0x9350, 0xD152,\n    0xD1F1, 0xD28D, 0xD331, 0xD3DB, 0xD48A, 0xD53E, 0xD5F4, 0xD6AD,\n    0xD766, 0xD81E, 0xD8D4, 0xD988, 0xDA37, 0xDAE0, 0xDB83, 0xDC1E,\n    0xDCB0, 0xDD38, 0xDDB4, 0xDE24, 0xDE86, 0xDED9, 0xDF1B, 0xDF4C,\n    0xDF6A, 0xDF74, 0xDF74, 0xDF74, 0xDF74, 0xCB3C, 0xCABD, 0xCA36,\n    0xC9A9, 0xC915, 0xC87D, 0xC7E2, 0xC743, 0xC6A3, 0xC603, 0xC563,\n    0xC4C5, 0xC429, 0xC391, 0xC2FE, 0xC270, 0xC1E9, 0xC16A, 0xC0F5,\n    0xC089, 0xC028, 0xBFD3, 0xBF8B, 0xBF51, 0xBF26, 0xBF0C, 0xBF03,\n    0xBF03, 0xBF03, 0xBF03, 0x0055, 0x0055, 0x0054, 0x0054, 0x0053,\n    0x0053, 0x0052, 0x0051, 0x004F, 0x004E, 0x004D, 0x004C, 0x004A,\n    0x0049, 0x0047, 0x0046, 0x0044, 0x0043, 0x0041, 0x0040, 0x003F,\n    0x003E, 0x003C, 0x003B, 0x003A, 0x003A, 0x0039, 0x0039, 0x0038,\n    0x0038, 0x0029, 0x0029, 0x0029, 0x002A, 0x002A, 0x002B, 0x002C,\n    0x002E, 0x002F, 0x0030, 0x0032, 0x0034, 0x0035, 0x0037, 0x0039,\n    0x003B, 0x003D, 0x003E, 0x0040, 0x0042, 0x0043, 0x0045, 0x0046,\n    0x0047, 0x0049, 0x0049, 0x004A, 0x004B, 0x004B, 0x004B, 0x7B08,\n    0x7AF6, 0x7AC4, 0x7A72, 0x7A04, 0x797D, 0x78DE, 0x782A, 0x7763,\n    0x768D, 0x75A9, 0x74B9, 0x73C2, 0x72C4, 0x71C2, 0x70BF, 0x6FBE,\n    0x6EC0, 0x6DC8, 0x6CD9, 0x6BF5, 0x6B1E, 0x6A58, 0x69A4, 0x6905,\n    0x687D, 0x680F, 0x67BE, 0x678B, 0x6779, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xD49C, 0xD4FC, 0xD564, 0xD5D0, 0xD641, 0xD6B6, 0xD72D,\n    0xD7A7, 0xD821, 0xD89C, 0xD917, 0xD990, 0xDA08, 0xDA7C, 0xDAED,\n    0xDB5A, 0xDBC1, 0xDC22, 0xDC7D, 0xDCD0, 0xDD1A, 0xDD5B, 0xDD92,\n    0xDDBE, 0xDDDF, 0xDDF3, 0xDDFA, 0xDDFA, 0xDDFA, 0xDDFA, 0xF921,\n    0xF8DD, 0xF88D, 0xF839, 0xF7E2, 0xF788, 0xF72C, 0xF6CE, 0xF66F,\n    0xF610, 0xF5B1, 0xF553, 0xF4F6, 0xF49C, 0xF444, 0xF3F0, 0xF3A0,\n    0xF355, 0xF30F, 0xF2CF, 0xF295, 0xF263, 0xF238, 0xF216, 0xF1FC,\n    0xF1ED, 0xF1E7, 0xF1E7, 0xF1E7, 0xF1E7, 0x097F, 0x092F, 0x08CF,\n    0x086B, 0x0803, 0x0797, 0x0729, 0x06B9, 0x0647, 0x05D6, 0x0564,\n    0x04F4, 0x0485, 0x041A, 0x03B1, 0x034D, 0x02ED, 0x0293, 0x023F,\n    0x01F3, 0x01AE, 0x0171, 0x013E, 0x0115, 0x00F7, 0x00E5, 0x00DE,\n    0x00DE, 0x00DE, 0x00DE, 0x4536, 0x4596, 0x45D8, 0x461D, 0x4665,\n    0x46AE, 0x46FA, 0x4746, 0x4793, 0x47E1, 0x482E, 0x487A, 0x48C5,\n    0x490E, 0x4954, 0x4998, 0x49D9, 0x4A15, 0x4A4E, 0x4A81, 0x4AB0,\n    0x4AD8, 0x4AFB, 0x4B16, 0x4B2A, 0x4B37, 0x4B3B, 0x4B3B, 0x4B3B,\n    0x4B3B, 0xDED1, 0x1FF4, 0x8256, 0x411E, 0x4308, 0x450C, 0x472A,\n    0x495E, 0x4BA4, 0x4DF8, 0x5056, 0x52BA, 0x5520, 0x5783, 0x59E1,\n    0x5C35, 0x5E7A, 0x60AE, 0x62CC, 0x64CF, 0x66B4, 0x6878, 0x6A15,\n    0x6B88, 0x6CCD, 0x6DE0, 0x6EBD, 0x6F5F, 0x6FC4, 0x6FE6, 0x6FE6,\n    0x6FE6, 0x6FE6, 0xD282, 0xD283, 0xD283, 0xD283, 0xD284, 0xD284,\n    0xD284, 0xD284, 0xD284, 0xD284, 0xD285, 0xD285, 0xD285, 0xD285,\n    0xD285, 0xD285, 0xD285, 0xD286, 0xD286, 0xD286, 0xD286, 0xD286,\n    0xD286, 0xD286, 0xD286, 0xD286, 0xD286, 0xD286, 0xD286, 0xD286,\n    0x7034, 0x6CE2, 0x6960, 0x65B1, 0x61DC, 0x5DE7, 0x59DA, 0x55BB,\n    0x5193, 0x4D66, 0x493D, 0x451F, 0x4112, 0x3D1E, 0x3949, 0x359B,\n    0x321A, 0x2ECD, 0x2BBC, 0x28EC, 0x2667, 0x2431, 0x2253, 0x20D2,\n    0x1FB7, 0x1F08, 0x1ECC, 0x1ECC, 0x1ECC, 0x1ECC, 0xE0BA, 0xDFCE,\n    0xDED3, 0xDDCB, 0xDCB8, 0xDB9C, 0xDA7A, 0xD952, 0xD828, 0xD6FC,\n    0xD5D2, 0xD4AB, 0xD388, 0xD26D, 0xD15A, 0xD052, 0xCF56, 0xCE6A,\n    0xCD8D, 0xCCC4, 0xCC0F, 0xCB70, 0xCAEA, 0xCA7F, 0xCA2F, 0xC9FE,\n    0xC9ED, 0xC9ED, 0xC9ED, 0xC9ED, 0x1F4E, 0x1FB6, 0x2026, 0x209B,\n    0x2116, 0x2194, 0x2216, 0x2299, 0x231E, 0x23A4, 0x2428, 0x24AC,\n    0x252E, 0x25AC, 0x2626, 0x269C, 0x270C, 0x2776, 0x27D8, 0x2831,\n    0x2882, 0x28C9, 0x2904, 0x2934, 0x2958, 0x296E, 0x2975, 0x2975,\n    0x2975, 0x2975, 0x8126, 0x7EE8, 0x7C8B, 0x7A0F, 0x7779, 0x74CD,\n    0x7212, 0x6F4B, 0x6C7C, 0x69AC, 0x66DD, 0x6416, 0x615B, 0x5EB0,\n    0x5C1A, 0x599E, 0x5741, 0x5507, 0x52F6, 0x5110, 0x4F5D, 0x4DDF,\n    0x4C9C, 0x4B99, 0x4ADA, 0x4A64, 0x4A3C, 0x4A3C, 0x4A3C, 0x4A3C,\n    0x05F6, 0xEAE4, 0xA38A, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x0000,\n};\n\n// 0x06052464\nstatic const u16 bowser_seg6_animindex_06052464[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x001E, 0x0003, 0x001E, 0x0021, 0x001E, 0x003F,\n    0x0001, 0x0000, 0x0001, 0x03F0, 0x0001, 0x0000,\n    0x0001, 0x0331, 0x0001, 0x0332, 0x0001, 0x0333,\n    0x001E, 0x01AB, 0x001E, 0x01C9, 0x001E, 0x01E7,\n    0x001E, 0x0060, 0x001E, 0x007E, 0x001E, 0x009C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x03EF, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x00BA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x03EE, 0x0001, 0x0000,\n    0x001E, 0x0334, 0x001E, 0x0352, 0x001E, 0x0370,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0205,\n    0x0001, 0x00D8, 0x001E, 0x00D9, 0x001E, 0x00F7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x03ED, 0x0001, 0x0000,\n    0x001E, 0x0223, 0x001E, 0x0241, 0x001E, 0x025F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0115,\n    0x0001, 0x005D, 0x0001, 0x005E, 0x0001, 0x005F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x03EC, 0x0001, 0x0000,\n    0x001E, 0x038E, 0x001E, 0x03AC, 0x001E, 0x03CA,\n    0x001E, 0x027D, 0x001E, 0x029B, 0x001E, 0x02B9,\n    0x001E, 0x0133, 0x001E, 0x0151, 0x001E, 0x016F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x03EB, 0x0001, 0x0000,\n    0x0001, 0x03E8, 0x0001, 0x03E9, 0x0001, 0x03EA,\n    0x001E, 0x02D7, 0x001E, 0x02F5, 0x001E, 0x0313,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x018D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x06052680\nstatic const struct Animation bowser_seg6_anim_06052680 = {\n    1,\n    0,\n    0,\n    0,\n    0x1E,\n    ANIMINDEX_NUMPARTS(bowser_seg6_animindex_06052464),\n    bowser_seg6_animvalue_06051C80,\n    bowser_seg6_animindex_06052464,\n    0,\n};\n"
  },
  {
    "path": "actors/bowser/anims/anim_06052D94.inc.c",
    "content": "// 0x06052698\nstatic const s16 bowser_seg6_animvalue_06052698[] = {\n    0x0000, 0x009A, 0x009C, 0x00AC, 0x00C3, 0x00D5, 0x00D8, 0x00D1,\n    0x00BC, 0x00A8, 0x00A0, 0x00A3, 0x00B1, 0x00C4, 0x00CF, 0x00CB,\n    0x00C0, 0x00B5, 0x00AA, 0x009F, 0xFFE7, 0x0D71, 0x0C8F, 0x0A9E,\n    0x08AC, 0x07CA, 0x08A9, 0x0A97, 0x0C87, 0x0D71, 0x0CF2, 0x0BAD,\n    0x0A24, 0x08DA, 0x084F, 0x08B0, 0x09A4, 0x0AE0, 0x0C1D, 0x0D10,\n    0x0000, 0x00EA, 0x02F4, 0x050F, 0x062B, 0x0615, 0x0520, 0x02DA,\n    0x0000, 0xFDAC, 0xFBEE, 0xFAA9, 0xF9C1, 0xF966, 0xF9C0, 0xFAAC,\n    0xFC04, 0xFD8B, 0xFEF8, 0x0000, 0xFE56, 0xFAAA, 0xF6FF, 0xF554,\n    0xF6A6, 0xF9BD, 0xFD4B, 0x0000, 0x01E1, 0x03AF, 0x0538, 0x0648,\n    0x06AE, 0x0630, 0x04F3, 0x0357, 0x01BB, 0x007E, 0x32C6, 0xC001,\n    0x32C6, 0xA509, 0xA468, 0xA352, 0xA2FF, 0xA3F4, 0xA587, 0xA729,\n    0xA848, 0xA8AF, 0xA888, 0xA7D0, 0xA55B, 0xA347, 0xA53D, 0xA6D7,\n    0xA451, 0xA093, 0x9E75, 0xA1A8, 0xE442, 0xDD1C, 0xD600, 0xD6E5,\n    0xD916, 0xDC0B, 0xDF3C, 0xE221, 0xE433, 0xE4EA, 0xDCD5, 0xD4BF,\n    0xD53A, 0xD6C1, 0xD908, 0xDBC1, 0xDEA0, 0xE156, 0xE396, 0x0052,\n    0x0059, 0x0068, 0x0078, 0x0081, 0x0097, 0x00BF, 0x00DA, 0x00CA,\n    0x0072, 0xFF8E, 0xFE2F, 0xFCB8, 0xFB8D, 0xFB11, 0xFB9B, 0xFCE8,\n    0xFE78, 0xFFC6, 0x05B9, 0x04D0, 0x02C2, 0x0095, 0xFF50, 0xFF27,\n    0xFF7D, 0x001A, 0x00CB, 0x0157, 0x01C1, 0x0230, 0x02A1, 0x0313,\n    0x0383, 0x0406, 0x049B, 0x0528, 0x0590, 0xEA0A, 0xE895, 0xE54E,\n    0xE1D5, 0xDFCD, 0xDF9A, 0xE03F, 0xE152, 0xE264, 0xE30B, 0xE31A,\n    0xE2DC, 0xE292, 0xE27E, 0xE2DF, 0xE40F, 0xE5E5, 0xE7D9, 0xE968,\n    0x2486, 0x262E, 0x29D2, 0x2D76, 0x2F1E, 0x2D73, 0x29C9, 0x2624,\n    0x2486, 0x25BC, 0x2887, 0x2BD7, 0x2E9A, 0x2FC3, 0x2EEE, 0x2CD9,\n    0x2A24, 0x2770, 0x255B, 0xDB55, 0xF34B, 0xFB31, 0xFD0F, 0xFE1A,\n    0xFEE4, 0xFF94, 0x0000, 0x0027, 0x002C, 0x001D, 0x0009, 0x0000,\n    0x0017, 0x003E, 0x0046, 0x0000, 0xFF1C, 0xFDC8, 0xFC95, 0xFBA6,\n    0xFF21, 0xFF7C, 0xFF54, 0xFF8C, 0xFFD2, 0x0000, 0x000D, 0x000F,\n    0x000A, 0x0003, 0x0000, 0xFFFF, 0xFFFC, 0xFFFC, 0x0000, 0x001D,\n    0x0043, 0x003D, 0xFFA4, 0x9EF9, 0x9EDA, 0x9DF4, 0xA0B4, 0xA3F7,\n    0xA5D9, 0xA5E8, 0xA533, 0xA420, 0xA310, 0xA266, 0xA214, 0xA1EA,\n    0xA21E, 0xA2E5, 0xA57F, 0xA8FE, 0xAA52, 0xA474, 0x8001, 0x8001,\n    0xBE14, 0xBD83, 0xBC22, 0xBA6A, 0xB83D, 0xB59E, 0xB33B, 0xB1C1,\n    0xB14E, 0xB20D, 0xB4BC, 0xBA8A, 0xC256, 0xC96B, 0xCD12, 0xCC2B,\n    0xC889, 0xC3DA, 0xBFCE, 0xAD16, 0xAEB5, 0xB255, 0xB614, 0xB816,\n    0xB7D2, 0xB66C, 0xB486, 0xB2C1, 0xB1C1, 0xB1C9, 0xB26C, 0xB341,\n    0xB3DF, 0xB3DB, 0xB2DB, 0xB124, 0xAF3F, 0xADB7, 0x0030, 0x01C9,\n    0x03E9, 0x048F, 0x045E, 0x038A, 0x0253, 0x00BB, 0xFEA4, 0xFC33,\n    0xF9D1, 0xF7E9, 0xF651, 0xF4E9, 0xF424, 0xF479, 0xF6E3, 0xFAD9,\n    0xFE8E, 0xFF36, 0x00AE, 0x0384, 0x077B, 0x0A1B, 0x08F2, 0x0657,\n    0x03AD, 0x0127, 0xFE69, 0xFC03, 0xFA85, 0xFA4F, 0xFB00, 0xFC0C,\n    0xFCE9, 0xFD99, 0xFE5A, 0xFEF6, 0x7E77, 0x7FC1, 0x825F, 0x8466,\n    0x83F9, 0x80BB, 0x7CA9, 0x79F3, 0x7A8E, 0x7DFC, 0x8219, 0x84B1,\n    0x83D7, 0x8036, 0x7C09, 0x7997, 0x79E3, 0x7B9E, 0x7D8D, 0xBCFA,\n    0xBB78, 0xB82E, 0xB4F1, 0xB39B, 0xB43A, 0xB581, 0xB73E, 0xB93B,\n    0xBB46, 0xBD2A, 0xBEB4, 0xBFAF, 0xC001, 0xBFCC, 0xBF3E, 0xBE82,\n    0xBDC6, 0xBD34, 0x378E, 0x3944, 0x3D35, 0x4194, 0x4497, 0x4668,\n    0x4832, 0x49A8, 0x4A7E, 0x4A67, 0x4918, 0x44E5, 0x3DCC, 0x35FB,\n    0x2FA0, 0x2ACF, 0x274C, 0x26CA, 0x2F90, 0x043A, 0x03BD, 0x02CF,\n    0x023B, 0x0221, 0x0230, 0x0282, 0x0334, 0x04C5, 0x06F6, 0x08C6,\n    0x0A20, 0x0B61, 0x0C30, 0x0C33, 0x0B0D, 0x0908, 0x06CB, 0x04F9,\n    0x0E7F, 0x0E9A, 0x0ECD, 0x0EEA, 0x0EF3, 0x0EF7, 0x0EE0, 0x0E99,\n    0x0DF4, 0x0D03, 0x0C12, 0x0B05, 0x09D3, 0x08E9, 0x08B1, 0x0977,\n    0x0AED, 0x0C94, 0x0DEF, 0x8BD7, 0x8A77, 0x87D5, 0x8632, 0x85E5,\n    0x8605, 0x86F2, 0x890B, 0x8DC5, 0x9471, 0x9A33, 0x9F05, 0xA3CF,\n    0xA71D, 0xA77C, 0xA399, 0x9C9D, 0x94D0, 0x8E76, 0x1DB1, 0x1D9D,\n    0x1D7B, 0x1D74, 0x1DB1, 0x1E6F, 0x1F92, 0x20B8, 0x217E, 0x2184,\n    0x2059, 0x1E3D, 0x1BD4, 0x19C3, 0x18AD, 0x18F4, 0x1A2B, 0x1BBE,\n    0x1D1C, 0xCA25, 0xC9EB, 0xC98B, 0xC978, 0xCA25, 0xCBF6, 0xCE9A,\n    0xD16C, 0xD3CA, 0xD513, 0xD504, 0xD40C, 0xD291, 0xD0F4, 0xCF9C,\n    0xCE58, 0xCCE7, 0xCB8C, 0xCA8A, 0xADD9, 0xADE5, 0xADFA, 0xADFE,\n    0xADD9, 0xAD75, 0xACE3, 0xAC48, 0xABC5, 0xAB7F, 0xAB82, 0xABB7,\n    0xAC09, 0xAC61, 0xACAC, 0xACF1, 0xAD41, 0xAD8B, 0xADC3, 0xD1E0,\n    0xD4F4, 0xDBD9, 0xE30A, 0xE702, 0xE7C7, 0xE7D1, 0xE742, 0xE63C,\n    0xE4E3, 0xE358, 0xE1BF, 0xE039, 0xDE5F, 0xDBE9, 0xD92B, 0xD677,\n    0xD422, 0xD27E, 0x215C, 0x22D3, 0x261E, 0x2993, 0x2B8D, 0x2C10,\n    0x2C45, 0x2C37, 0x2BF2, 0x2B80, 0x2AEF, 0x2A48, 0x2998, 0x28A1,\n    0x2741, 0x25AD, 0x2417, 0x22B6, 0x21BB, 0xA062, 0xA1D9, 0xA526,\n    0xA8AC, 0xAAC8, 0xAB87, 0xAC0A, 0xAC55, 0xAC6A, 0xAC4C, 0xAC00,\n    0xAB87, 0xAAE5, 0xA9CB, 0xA817, 0xA611, 0xA400, 0xA22E, 0xA0E1,\n    0xF571, 0xF68F, 0xF924, 0xFC03, 0xFE03, 0xFF1A, 0x0004, 0x00B9,\n    0x0131, 0x0163, 0x0146, 0x0069, 0xFEBD, 0xFCCE, 0xFB2B, 0xF9BD,\n    0xF836, 0xF6D5, 0xF5D4, 0xF5B5, 0xF621, 0xF70C, 0xF7F5, 0xF858,\n    0xF823, 0xF7AB, 0xF70C, 0xF65F, 0xF5C0, 0xF54B, 0xF503, 0xF4D9,\n    0xF4C7, 0xF4C9, 0xF4E9, 0xF525, 0xF568, 0xF59E, 0xA135, 0xA30B,\n    0xA6DF, 0xAA2C, 0xAA6C, 0xA6F3, 0xA172, 0x9AF2, 0x947B, 0x8F15,\n    0x8BC9, 0x8BF7, 0x8F15, 0x9343, 0x96A5, 0x9941, 0x9C10, 0x9E9F,\n    0xA07C, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x0000,\n};\n\n// 0x06052B78\nstatic const u16 bowser_seg6_animindex_06052B78[] = {\n    0x0001, 0x0000, 0x0013, 0x0001, 0x0001, 0x0014, 0x0013, 0x0015, 0x0013, 0x0028, 0x0013, 0x003B,\n    0x0001, 0x0000, 0x0001, 0x026E, 0x0001, 0x0000,\n    0x0013, 0x0185, 0x0013, 0x0198, 0x0013, 0x01AB,\n    0x0001, 0x00FE, 0x0001, 0x00FF, 0x0013, 0x0100,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0013, 0x0051,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x026D, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0013, 0x0064,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x026C, 0x0001, 0x0000,\n    0x0013, 0x01BE, 0x0013, 0x01D1, 0x0013, 0x01E4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0013, 0x0113,\n    0x0013, 0x0077, 0x0013, 0x008A, 0x0013, 0x009D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x026B, 0x0001, 0x0000,\n    0x0013, 0x0126, 0x0013, 0x0139, 0x0013, 0x014C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0013, 0x00B0,\n    0x0001, 0x004E, 0x0001, 0x004F, 0x0001, 0x0050,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x026A, 0x0001, 0x0000,\n    0x0013, 0x01F7, 0x0013, 0x020A, 0x0013, 0x021D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0013, 0x015F,\n    0x0001, 0x00C3, 0x0001, 0x0000, 0x0001, 0x00C4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0269, 0x0001, 0x0000,\n    0x0013, 0x0230, 0x0013, 0x0243, 0x0013, 0x0256,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0013, 0x0172,\n    0x0013, 0x00C5, 0x0013, 0x00D8, 0x0013, 0x00EB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x06052D94\nstatic const struct Animation bowser_seg6_anim_06052D94 = {\n    0,\n    0,\n    0,\n    0,\n    0x13,\n    ANIMINDEX_NUMPARTS(bowser_seg6_animindex_06052B78),\n    bowser_seg6_animvalue_06052698,\n    bowser_seg6_animindex_06052B78,\n    0,\n};\n"
  },
  {
    "path": "actors/bowser/anims/anim_060534F4.inc.c",
    "content": "// 0x06052DAC\nstatic const s16 bowser_seg6_animvalue_06052DAC[] = {\n    0x0000, 0x0096, 0x0096, 0x0097, 0x0097, 0x0098, 0x009C, 0x00A2,\n    0x00A8, 0x00AB, 0x00A9, 0x00A4, 0x009F, 0x009A, 0x0098, 0x0098,\n    0x0098, 0x0098, 0x0098, 0xFFE7, 0xF31D, 0xF34A, 0xF381, 0xF3C2,\n    0xF40D, 0xF49D, 0xF597, 0xF6DA, 0xF847, 0xFA01, 0xFC11, 0xFE29,\n    0xFFFA, 0x0138, 0x0183, 0x010A, 0x005A, 0x0000, 0xE5A0, 0xE5EA,\n    0xE643, 0xE6AE, 0xE729, 0xE924, 0xED1B, 0xF1A2, 0xF54C, 0xF7FD,\n    0xFA7B, 0xFCB4, 0xFE92, 0x0000, 0x00AB, 0x0098, 0x0039, 0x0000,\n    0xF9A6, 0xF9D5, 0xFA0D, 0xFA4D, 0xFA95, 0xFC49, 0xFFB2, 0x032F,\n    0x051C, 0x050E, 0x0404, 0x027F, 0x00FD, 0x0000, 0xFFAF, 0xFFB8,\n    0xFFE5, 0x0000, 0x32C6, 0xC001, 0x32C6, 0xB203, 0xB1D1, 0xB18B,\n    0xB12F, 0xB0BA, 0xAFEE, 0xAEA4, 0xAD06, 0xAB3A, 0xA969, 0xA7BB,\n    0xA656, 0xA563, 0xA509, 0xA509, 0xA509, 0xA509, 0xA509, 0x01F4,\n    0x01AD, 0x010D, 0x0063, 0x0000, 0xFFE2, 0xFFD2, 0xFFCD, 0xFFD1,\n    0xFFDA, 0xFFE7, 0xFFF3, 0xFFFD, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0E54, 0x0E17, 0x0D88, 0x0CB7, 0x0BB1, 0x0A82, 0x0932,\n    0x07CA, 0x0658, 0x04E6, 0x037F, 0x022E, 0x0100, 0x0000, 0xFF7F,\n    0xFF8D, 0xFFD5, 0x0000, 0x076C, 0x064B, 0x03B8, 0x0086, 0xFD89,\n    0xFAD7, 0xF803, 0xF51D, 0xF233, 0xEF55, 0xEC92, 0xE9F7, 0xE796,\n    0xE57B, 0xE432, 0xE3E6, 0xE416, 0xE442, 0x0264, 0x0262, 0x025F,\n    0x025A, 0x0254, 0x0248, 0x0234, 0x021C, 0x0200, 0x01E4, 0x01CA,\n    0x01B4, 0x01A5, 0x01A0, 0x01BC, 0x01FA, 0x0238, 0x0254, 0x0538,\n    0x0539, 0x053A, 0x053C, 0x053E, 0x0542, 0x0549, 0x0552, 0x055D,\n    0x0567, 0x0570, 0x0578, 0x057E, 0x0580, 0x0575, 0x055F, 0x0548,\n    0x053E, 0xF951, 0xF942, 0xF929, 0xF906, 0xF8D6, 0xF87C, 0xF7E7,\n    0xF72B, 0xF658, 0xF583, 0xF4BD, 0xF419, 0xF3A9, 0xF37F, 0xF455,\n    0xF62B, 0xF800, 0xF8D6, 0x24AC, 0x24A7, 0x249F, 0x2494, 0x2486,\n    0x246B, 0x243E, 0x2404, 0x23C4, 0x2383, 0x2346, 0x2314, 0x22F1,\n    0x22E5, 0x2326, 0x23B5, 0x2445, 0x2486, 0xF340, 0xF2E3, 0xF262,\n    0xF1B9, 0xF0E2, 0xEF93, 0xED9C, 0xEB29, 0xE863, 0xE573, 0xE283,\n    0xDFBD, 0xDD4A, 0xDB55, 0xDA67, 0xDA81, 0xDB06, 0xDB55, 0x1577,\n    0x1524, 0x14B0, 0x1418, 0x1358, 0x122A, 0x1067, 0x0E34, 0x0BB7,\n    0x0914, 0x0671, 0x03F3, 0x01C1, 0x0000, 0xFF2A, 0xFF42, 0xFFB9,\n    0x0000, 0xE47F, 0xE4B8, 0xE508, 0xE571, 0xE5F6, 0xE6C5, 0xE7FC,\n    0xE980, 0xEB38, 0xED09, 0xEEDB, 0xF092, 0xF215, 0xF34B, 0xF3DF,\n    0xF3CF, 0xF37D, 0xF34B, 0x0EA3, 0x0E86, 0x0E3E, 0x0DB2, 0x0CC9,\n    0x0B75, 0x09CF, 0x07F8, 0x0610, 0x0438, 0x0290, 0x0139, 0x0053,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFF93, 0xFFCA, 0x0045,\n    0x00C3, 0x0101, 0x00FF, 0x00EB, 0x00C9, 0x00A0, 0x0073, 0x0048,\n    0x0023, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xC3B3,\n    0xC2E8, 0xC115, 0xBEB1, 0xBC38, 0xB98F, 0xB670, 0xB310, 0xAFA3,\n    0xAC5F, 0xA979, 0xA725, 0xA599, 0xA509, 0xA509, 0xA509, 0xA509,\n    0xA509, 0x8001, 0x8001, 0xBE14, 0xDC1C, 0xDBC8, 0xDB4F, 0xDAAC,\n    0xD9DB, 0xD884, 0xD674, 0xD3DE, 0xD0F3, 0xCDE6, 0xCAEA, 0xC830,\n    0xC5EC, 0xC44F, 0xC484, 0xC68D, 0xC8E5, 0xCA03, 0xFBFF, 0xFC29,\n    0xFC60, 0xFC9F, 0xFCE7, 0xFD34, 0xFD86, 0xFDD9, 0xFE2D, 0xFE80,\n    0xFED0, 0xFF1B, 0xFF5F, 0xFF9B, 0xFFBB, 0xFFBA, 0xFFAB, 0xFFA2,\n    0xEEC5, 0xEF94, 0xF093, 0xF1BB, 0xF305, 0xF467, 0xF5DA, 0xF757,\n    0xF8D5, 0xFA4C, 0xFBB5, 0xFD08, 0xFE3C, 0xFF4A, 0xFFD6, 0xFFC5,\n    0xFF76, 0xFF46, 0xA1B9, 0xA16F, 0xA119, 0xA0BA, 0xA053, 0x9FE6,\n    0x9F73, 0x9EFD, 0x9E84, 0x9E0A, 0x9D92, 0x9D1B, 0x9CA7, 0x9C39,\n    0x9BBC, 0x9B33, 0x9AC5, 0x9A98, 0xE515, 0xE4AF, 0xE41E, 0xE35D,\n    0xE266, 0xE0D8, 0xDE7A, 0xDB84, 0xD82B, 0xD4A7, 0xD12E, 0xCDF9,\n    0xCB3D, 0xC933, 0xC8EC, 0xCA6C, 0xCC55, 0xCD46, 0x36F5, 0x3710,\n    0x3736, 0x3769, 0x37A9, 0x3819, 0x38CE, 0x39B1, 0x3AAD, 0x3BAC,\n    0x3C98, 0x3D5C, 0x3DE1, 0x3E12, 0x3E12, 0x3E12, 0x3E12, 0x3E12,\n    0x1AA9, 0x1A71, 0x1A2A, 0x19D3, 0x196A, 0x1850, 0x164F, 0x1401,\n    0x1202, 0x1032, 0x0E3D, 0x0C75, 0x0B28, 0x0AA8, 0x0AA8, 0x0AA8,\n    0x0AA8, 0x0AA8, 0x1782, 0x1782, 0x178E, 0x17A7, 0x17CF, 0x18E5,\n    0x1AE5, 0x1C7C, 0x1C58, 0x1998, 0x151F, 0x1045, 0x0C61, 0x0AC9,\n    0x0AC9, 0x0AC9, 0x0AC9, 0x0AC9, 0xA9A1, 0xA978, 0xA951, 0xA92B,\n    0xA907, 0xA901, 0xA908, 0xA8DB, 0xA838, 0xA6CE, 0xA4CE, 0xA2BE,\n    0xA120, 0xA078, 0xA078, 0xA078, 0xA078, 0xA078, 0x26C8, 0x2693,\n    0x264B, 0x25EB, 0x2572, 0x24B4, 0x2398, 0x2236, 0x20A5, 0x1EFC,\n    0x1D53, 0x1BC2, 0x1A60, 0x1945, 0x18BE, 0x18CD, 0x1918, 0x1945,\n    0xDA7E, 0xDAB9, 0xDB0B, 0xDB76, 0xDBFF, 0xDCD4, 0xDE13, 0xDFA2,\n    0xE166, 0xE344, 0xE522, 0xE6E6, 0xE874, 0xE9B2, 0xEA4A, 0xEA39,\n    0xE9E5, 0xE9B2, 0xA963, 0xA9AF, 0xAA1A, 0xAAA6, 0xAB57, 0xAC6C,\n    0xAE0B, 0xB011, 0xB25C, 0xB4C9, 0xB735, 0xB980, 0xBB85, 0xBD23,\n    0xBDE8, 0xBDD2, 0xBD64, 0xBD23, 0x4EB7, 0x4D4D, 0x4B55, 0x48BE,\n    0x4578, 0x405B, 0x38B6, 0x2F2B, 0x245A, 0x18E7, 0x0D71, 0x029B,\n    0xF908, 0xF156, 0xED85, 0xED9E, 0xEF5B, 0xF071, 0x33F2, 0x3357,\n    0x327F, 0x3165, 0x3000, 0x2DD5, 0x2A9A, 0x2691, 0x21FF, 0x1D26,\n    0x1849, 0x13AE, 0x0F96, 0x0C45, 0x0A7D, 0x0A42, 0x0ABD, 0x0B16,\n    0x2295, 0x211D, 0x1F13, 0x1C66, 0x1906, 0x13C6, 0x0BF2, 0x022E,\n    0xF71C, 0xEB5F, 0xDF99, 0xD46E, 0xCA80, 0xC273, 0xBE12, 0xBD6A,\n    0xBE7B, 0xBF48, 0xF8B1, 0xF8AA, 0xF89E, 0xF88B, 0xF871, 0xF80B,\n    0xF749, 0xF67C, 0xF5F1, 0xF5B6, 0xF59D, 0xF59A, 0xF5A1, 0xF5A5,\n    0xF5A5, 0xF5A5, 0xF5A5, 0xF5A5, 0xF45D, 0xF43D, 0xF409, 0xF3BE,\n    0xF35B, 0xF1B1, 0xEEA1, 0xEBBD, 0xEA95, 0xEBDF, 0xEE99, 0xF1C6,\n    0xF467, 0xF580, 0xF580, 0xF580, 0xF580, 0xF580, 0x95AF, 0x95C2,\n    0x95E8, 0x9622, 0x9675, 0x97AF, 0x9A03, 0x9C86, 0x9E4C, 0x9F39,\n    0x9FD5, 0xA02F, 0xA05A, 0xA064, 0xA064, 0xA064, 0xA064, 0xA064,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n};\n\n// 0x060532D8\nstatic const u16 bowser_seg6_animindex_060532D8[] = {\n    0x0001, 0x0000, 0x0012, 0x0001, 0x0001, 0x0013, 0x0012, 0x0014, 0x0012, 0x0026, 0x0012, 0x0038,\n    0x0001, 0x0000, 0x0001, 0x0295, 0x0001, 0x0000,\n    0x0012, 0x01B8, 0x0012, 0x01CA, 0x0012, 0x01DC,\n    0x0001, 0x0149, 0x0001, 0x014A, 0x0001, 0x014B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x004D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0294, 0x0001, 0x0000,\n    0x0012, 0x005F, 0x0012, 0x0071, 0x0012, 0x0083,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0293, 0x0001, 0x0000,\n    0x0012, 0x01EE, 0x0012, 0x0200, 0x0012, 0x0212,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x014C,\n    0x0012, 0x0095, 0x0012, 0x00A7, 0x0012, 0x00B9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0292, 0x0001, 0x0000,\n    0x0012, 0x015E, 0x0012, 0x0170, 0x0012, 0x0182,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x00CB,\n    0x0001, 0x004A, 0x0001, 0x004B, 0x0001, 0x004C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0291, 0x0001, 0x0000,\n    0x0012, 0x0224, 0x0012, 0x0236, 0x0012, 0x0248,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x0194,\n    0x0012, 0x00DD, 0x0012, 0x00EF, 0x0012, 0x0101,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0290, 0x0001, 0x0000,\n    0x0012, 0x025A, 0x0012, 0x026C, 0x0012, 0x027E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x01A6,\n    0x0012, 0x0113, 0x0012, 0x0125, 0x0012, 0x0137,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x060534F4\nstatic const struct Animation bowser_seg6_anim_060534F4 = {\n    0,\n    0,\n    0,\n    0,\n    0x12,\n    ANIMINDEX_NUMPARTS(bowser_seg6_animindex_060532D8),\n    bowser_seg6_animvalue_06052DAC,\n    bowser_seg6_animindex_060532D8,\n    0,\n};\n"
  },
  {
    "path": "actors/bowser/anims/anim_06053B8C.inc.c",
    "content": "// 0x0605350C\nstatic const s16 bowser_seg6_animvalue_0605350C[] = {\n    0x0000, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098,\n    0x0098, 0x0097, 0x0097, 0x0097, 0x0097, 0x0097, 0x0096, 0x0096,\n    0x0096, 0x0096, 0xFFE7, 0x04A3, 0xFD30, 0xF6DE, 0xF40D, 0xF3C9,\n    0xF38A, 0xF351, 0xF31C, 0xF2ED, 0xF2C4, 0xF2A1, 0xF283, 0xF26B,\n    0xF259, 0xF24D, 0xF247, 0xF248, 0xF77B, 0xF03D, 0xEA0A, 0xE729,\n    0xE6B7, 0xE64D, 0xE5ED, 0xE596, 0xE548, 0xE504, 0xE4CA, 0xE499,\n    0xE472, 0xE455, 0xE443, 0xE43A, 0xE43C, 0xFE41, 0xFCBB, 0xFB5C,\n    0xFA95, 0xFA44, 0xF9FB, 0xF9B9, 0xF97F, 0xF94D, 0xF921, 0xF8FD,\n    0xF8E0, 0xF8CA, 0xF8BB, 0xF8B3, 0xF8B2, 0xF8B7, 0x32C6, 0xC001,\n    0x32C6, 0xA824, 0xAB19, 0xAE2A, 0xB0BA, 0xB1AA, 0xB1AC, 0xB1B3,\n    0xB1BD, 0xB1CA, 0xB1D9, 0xB1E9, 0xB1FA, 0xB20A, 0xB219, 0xB226,\n    0xB231, 0xB237, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x002A,\n    0x005A, 0x008F, 0x00C6, 0x00FD, 0x0134, 0x0167, 0x0195, 0x01BC,\n    0x01DA, 0x01ED, 0x01F4, 0x02EB, 0x05B7, 0x08A5, 0x0B24, 0x0CA1,\n    0x0D55, 0x0DDF, 0x0E43, 0x0E85, 0x0EAC, 0x0EBC, 0x0EBA, 0x0EAB,\n    0x0E94, 0x0E7B, 0x0E64, 0x0E54, 0xEB3B, 0xF1BA, 0xF844, 0xFD5E,\n    0xFF8F, 0xFFEC, 0x007F, 0x013E, 0x021A, 0x0308, 0x03FC, 0x04E8,\n    0x05C1, 0x067A, 0x0707, 0x075C, 0x076C, 0x0254, 0x053E, 0xF8D6,\n    0x2486, 0xE10F, 0xE681, 0xEC29, 0xF0E2, 0xF29C, 0xF2A0, 0xF2AD,\n    0xF2BF, 0xF2D7, 0xF2F3, 0xF311, 0xF32F, 0xF34D, 0xF369, 0xF381,\n    0xF394, 0xF3A0, 0x0523, 0x0A07, 0x0F1A, 0x1358, 0x14E4, 0x14E8,\n    0x14F3, 0x1504, 0x1519, 0x1532, 0x154D, 0x1568, 0x1583, 0x159C,\n    0x15B1, 0x15C2, 0x15CE, 0xEFC1, 0xEC62, 0xE8E2, 0xE5F6, 0xE4E5,\n    0xE4E2, 0xE4DA, 0xE4CF, 0xE4C0, 0xE4AF, 0xE49C, 0xE489, 0xE477,\n    0xE466, 0xE457, 0xE44B, 0xE443, 0x0365, 0x06A1, 0x09FC, 0x0CC9,\n    0x0DCF, 0x0DF3, 0x0E15, 0x0E34, 0x0E51, 0x0E6B, 0x0E81, 0x0E93,\n    0x0EA1, 0x0EA9, 0x0EAD, 0x0EAB, 0x0EA3, 0x0044, 0x0085, 0x00C8,\n    0x0101, 0x0115, 0x00F6, 0x00D2, 0x00AA, 0x0080, 0x0055, 0x002B,\n    0x0003, 0xFFE0, 0xFFC1, 0xFFA9, 0xFF99, 0xFF93, 0xAB31, 0xB10D,\n    0xB723, 0xBC38, 0xBE13, 0xBEAC, 0xBF50, 0xBFF8, 0xC0A0, 0xC144,\n    0xC1DF, 0xC26B, 0xC2E5, 0xC348, 0xC38E, 0xC3B3, 0xC3B3, 0x8001,\n    0x8001, 0xBE14, 0xCE39, 0xD23A, 0xD662, 0xD9DB, 0xDB20, 0xDB23,\n    0xDB2C, 0xDB3A, 0xDB4C, 0xDB60, 0xDB76, 0xDB8C, 0xDBA2, 0xDBB7,\n    0xDBC8, 0xDBD6, 0xDBDF, 0xFF14, 0xFE22, 0xFD27, 0xFC55, 0xFC07,\n    0xFC06, 0xFC05, 0xFC04, 0xFC03, 0xFC01, 0xFBFF, 0xFBFE, 0xFBFC,\n    0xFBFB, 0xFBFA, 0xFBFA, 0xFBFB, 0xFAE6, 0xF6D1, 0xF293, 0xEF09,\n    0xEDBF, 0xEDC1, 0xEDC7, 0xEDD1, 0xEDDF, 0xEDEF, 0xEE01, 0xEE16,\n    0xEE2C, 0xEE43, 0xEE5B, 0xEE73, 0xEE8B, 0x8B97, 0x92A9, 0x9A06,\n    0xA038, 0xA2EA, 0xA2E8, 0xA2E3, 0xA2DB, 0xA2CF, 0xA2C1, 0xA2AF,\n    0xA29A, 0xA283, 0xA26A, 0xA24E, 0xA22F, 0xA20E, 0xD2E2, 0xD839,\n    0xDDC4, 0xE266, 0xE417, 0xE41B, 0xE427, 0xE43A, 0xE451, 0xE46C,\n    0xE489, 0xE4A7, 0xE4C4, 0xE4DF, 0xE4F7, 0xE50A, 0xE516, 0x3C5E,\n    0x3ABF, 0x3910, 0x37A9, 0x3725, 0x3724, 0x3720, 0x371B, 0x3714,\n    0x370B, 0x3702, 0x36F9, 0x36F0, 0x36E8, 0x36E1, 0x36DB, 0x36D8,\n    0x0BF7, 0x1097, 0x1565, 0x196A, 0x1AF4, 0x1AF5, 0x1AF9, 0x1AFE,\n    0x1B05, 0x1B0C, 0x1B13, 0x1B1A, 0x1B20, 0x1B24, 0x1B26, 0x1B24,\n    0x1B20, 0x1024, 0x12C8, 0x1586, 0x17CF, 0x1898, 0x1895, 0x188E,\n    0x1882, 0x1873, 0x1861, 0x184D, 0x1836, 0x181F, 0x1807, 0x17EF,\n    0x17D8, 0x17C2, 0x99DD, 0x9F11, 0xA47B, 0xA907, 0xAAEC, 0xAAEA,\n    0xAAE6, 0xAADE, 0xAAD4, 0xAAC7, 0xAAB8, 0xAAA6, 0xAA93, 0xAA7E,\n    0xAA68, 0xAA50, 0xAA36, 0x1C81, 0x1F95, 0x22C7, 0x2572, 0x266B,\n    0x266E, 0x2675, 0x267F, 0x268D, 0x269C, 0x26AD, 0x26BE, 0x26CF,\n    0x26DF, 0x26EC, 0x26F7, 0x26FE, 0xE60F, 0xE298, 0xDF00, 0xDBFF,\n    0xDAE6, 0xDAE3, 0xDADB, 0xDACF, 0xDAC0, 0xDAAF, 0xDA9C, 0xDA88,\n    0xDA75, 0xDA64, 0xDA55, 0xDA49, 0xDA41, 0xB869, 0xB3E9, 0xAF3E,\n    0xAB57, 0xA9EA, 0xA9E7, 0xA9DD, 0xA9CD, 0xA9B9, 0xA9A2, 0xA98A,\n    0xA971, 0xA958, 0xA941, 0xA92D, 0xA91E, 0xA913, 0x0706, 0x1C84,\n    0x32D4, 0x4578, 0x4C45, 0x4C57, 0x4C88, 0x4CD2, 0x4D31, 0x4D9E,\n    0x4E13, 0x4E8C, 0x4F01, 0x4F6E, 0x4FCD, 0x5018, 0x5049, 0x14E4,\n    0x1E39, 0x27E9, 0x3000, 0x32F4, 0x32FC, 0x3311, 0x3332, 0x335B,\n    0x338A, 0x33BD, 0x33F1, 0x3424, 0x3453, 0x347D, 0x349D, 0x34B3,\n    0xD71E, 0xEDCE, 0x055A, 0x1906, 0x2034, 0x2046, 0x207A, 0x20C8,\n    0x212C, 0x219F, 0x221B, 0x229A, 0x2316, 0x2389, 0x23ED, 0x243C,\n    0x2471, 0xF8EE, 0xF8C4, 0xF898, 0xF871, 0xF852, 0xF853, 0xF856,\n    0xF85B, 0xF861, 0xF869, 0xF871, 0xF87A, 0xF883, 0xF88D, 0xF896,\n    0xF89E, 0xF8A6, 0xF317, 0xF32D, 0xF345, 0xF35B, 0xF36F, 0xF372,\n    0xF37C, 0xF38A, 0xF39D, 0xF3B4, 0xF3CD, 0xF3E7, 0xF401, 0xF41C,\n    0xF435, 0xF44C, 0xF45F, 0x94E2, 0x9569, 0x95F7, 0x9675, 0x96DF,\n    0x96DB, 0x96D1, 0x96C2, 0x96AE, 0x9696, 0x967B, 0x965F, 0x9641,\n    0x9624, 0x9607, 0x95EC, 0x95D3, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x3FFF,\n};\n\n// 0x06053970\nstatic const u16 bowser_seg6_animindex_06053970[] = {\n    0x0001, 0x0000, 0x0011, 0x0001, 0x0001, 0x0012, 0x0011, 0x0013, 0x0011, 0x0024, 0x0011, 0x0035,\n    0x0001, 0x0000, 0x0001, 0x0231, 0x0001, 0x0000,\n    0x0011, 0x0160, 0x0011, 0x0171, 0x0011, 0x0182,\n    0x0001, 0x00F7, 0x0001, 0x00F8, 0x0001, 0x00F9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0011, 0x0049,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0230, 0x0001, 0x0000,\n    0x0011, 0x005A, 0x0011, 0x006B, 0x0011, 0x007C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x022F, 0x0001, 0x0000,\n    0x0011, 0x0193, 0x0011, 0x01A4, 0x0011, 0x01B5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0011, 0x00FA,\n    0x0001, 0x008D, 0x0001, 0x008E, 0x0001, 0x008F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x022E, 0x0001, 0x0000,\n    0x0011, 0x010B, 0x0011, 0x011C, 0x0011, 0x012D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0090,\n    0x0001, 0x0046, 0x0001, 0x0047, 0x0001, 0x0048,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x022D, 0x0001, 0x0000,\n    0x0011, 0x01C6, 0x0011, 0x01D7, 0x0011, 0x01E8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0011, 0x013E,\n    0x0011, 0x0091, 0x0011, 0x00A2, 0x0011, 0x00B3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x022C, 0x0001, 0x0000,\n    0x0011, 0x01F9, 0x0011, 0x020A, 0x0011, 0x021B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0011, 0x014F,\n    0x0011, 0x00C4, 0x0011, 0x00D5, 0x0011, 0x00E6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x06053B8C\nstatic const struct Animation bowser_seg6_anim_06053B8C = {\n    0,\n    0,\n    0,\n    0,\n    0x11,\n    ANIMINDEX_NUMPARTS(bowser_seg6_animindex_06053970),\n    bowser_seg6_animvalue_0605350C,\n    bowser_seg6_animindex_06053970,\n    0,\n};\n"
  },
  {
    "path": "actors/bowser/anims/anim_06054290.inc.c",
    "content": "// 0x06053BA4\nstatic const s16 bowser_seg6_animvalue_06053BA4[] = {\n    0x0000, 0x0098, 0x0098, 0x0099, 0x009A, 0x009A, 0x009B, 0x009C,\n    0x009C, 0x009C, 0x009B, 0x009A, 0x0099, 0x0098, 0x0098, 0x0097,\n    0x0097, 0x0097, 0x0097, 0x0098, 0x0098, 0x0099, 0x0099, 0x009A,\n    0xFFE7, 0xFFE6, 0xFFE6, 0xFFE4, 0xFFE3, 0xFFE2, 0xFFE1, 0xFFE0,\n    0xFFE0, 0xFFE0, 0xFFE1, 0xFFE1, 0xFFE2, 0xFFE3, 0xFFE3, 0xFFE4,\n    0xFFE4, 0xFFE5, 0xFFE5, 0xFFE6, 0xFFE6, 0xFFE7, 0xFFE7, 0x0000,\n    0xFFAC, 0xFED0, 0xFD9C, 0xFC40, 0xFAEE, 0xF9D5, 0xF927, 0xF913,\n    0xF9BC, 0xFB02, 0xFCB8, 0xFEB0, 0x00BB, 0x02AB, 0x0454, 0x05E7,\n    0x079E, 0x0957, 0x0AED, 0x0C3B, 0x0D1E, 0x0D71, 0x32C6, 0xC001,\n    0x32C6, 0xA509, 0xA51A, 0xA546, 0xA57C, 0xA5AE, 0xA5CD, 0xA5CA,\n    0xA5A9, 0xA578, 0xA53B, 0xA4F6, 0xA4AD, 0xA463, 0xA41C, 0xA3DC,\n    0xA3A6, 0xA37E, 0xA367, 0xA38B, 0xA3F2, 0xA470, 0xA4DB, 0xA509,\n    0xE442, 0xE4C4, 0xE618, 0xE7F7, 0xEA19, 0xEC37, 0xEE0A, 0xEF48,\n    0xEFAB, 0xEEEC, 0xED32, 0xEAD7, 0xE836, 0xE5AA, 0xE38C, 0xE239,\n    0xE1BC, 0xE1CB, 0xE23A, 0xE2DC, 0xE386, 0xE40C, 0xE442, 0x0254,\n    0x0251, 0x0248, 0x023A, 0x0227, 0x0210, 0x01F6, 0x01D9, 0x01B9,\n    0x0198, 0x0176, 0x0153, 0x0130, 0x010E, 0x00EC, 0x00CD, 0x00B0,\n    0x0096, 0x007F, 0x006C, 0x005E, 0x0055, 0x0052, 0x053E, 0x053F,\n    0x0541, 0x0544, 0x0549, 0x054E, 0x0554, 0x055B, 0x0563, 0x056B,\n    0x0573, 0x057C, 0x0584, 0x058C, 0x0594, 0x059C, 0x05A3, 0x05A9,\n    0x05AF, 0x05B3, 0x05B7, 0x05B9, 0x05B9, 0xF8D6, 0xF8BF, 0xF87D,\n    0xF816, 0xF78C, 0xF6E4, 0xF622, 0xF54B, 0xF463, 0xF36F, 0xF271,\n    0xF170, 0xF06E, 0xEF71, 0xEE7C, 0xED94, 0xECBE, 0xEBFC, 0xEB54,\n    0xEACA, 0xEA62, 0xEA21, 0xEA0A, 0x2486, 0xDB55, 0xF34B, 0xA509,\n    0xA51B, 0xA548, 0xA581, 0xA5B7, 0xA5DD, 0xA5E4, 0xA5C9, 0xA59B,\n    0xA55E, 0xA51A, 0xA4D5, 0xA496, 0xA462, 0xA441, 0xA438, 0xA459,\n    0xA4A5, 0xA50B, 0xA579, 0xA5DD, 0xA625, 0xA642, 0x8001, 0x8001,\n    0xBE14, 0xCA03, 0xC9D7, 0xC957, 0xC88C, 0xC77E, 0xC636, 0xC4BB,\n    0xC317, 0xC152, 0xBF73, 0xBD84, 0xBB8D, 0xB995, 0xB7A6, 0xB5C7,\n    0xB402, 0xB25E, 0xB0E4, 0xAF9B, 0xAE8E, 0xADC2, 0xAD42, 0xAD16,\n    0xFFA2, 0xFFA2, 0xFFA0, 0xFF9E, 0xFF9B, 0xFF98, 0xFF95, 0xFF92,\n    0xFF90, 0xFF8E, 0xFF8C, 0xFF8C, 0xFF8D, 0xFF8F, 0xFF93, 0xFF98,\n    0xFFA5, 0xFFBD, 0xFFDB, 0xFFF9, 0x0014, 0x0028, 0x0030, 0xFF46,\n    0xFF47, 0xFF47, 0xFF47, 0xFF48, 0xFF49, 0xFF49, 0xFF4A, 0xFF4B,\n    0xFF4C, 0xFF4C, 0xFF4D, 0xFF4D, 0xFF4D, 0xFF4D, 0xFF4C, 0xFF4A,\n    0xFF47, 0xFF42, 0xFF3E, 0xFF3A, 0xFF37, 0xFF36, 0x9A98, 0x9AB5,\n    0x9B06, 0x9B7F, 0x9C15, 0x9CBD, 0x9D6A, 0x9E13, 0x9EAC, 0x9F29,\n    0x9F80, 0x9FA5, 0x9F8C, 0x9F2B, 0x9E76, 0x9D62, 0x9ABC, 0x95F4,\n    0x8FF8, 0x89B4, 0x8415, 0x8008, 0x7E77, 0xCD46, 0xCD2D, 0xCCE5,\n    0xCC72, 0xCBDA, 0xCB21, 0xCA4C, 0xC95F, 0xC860, 0xC752, 0xC63B,\n    0xC520, 0xC404, 0xC2ED, 0xC1E0, 0xC0E0, 0xBFF3, 0xBF1E, 0xBE65,\n    0xBDCD, 0xBD5B, 0xBD13, 0xBCFA, 0x3E12, 0x0AA8, 0x0AB7, 0x0ADE,\n    0x0B14, 0x0B53, 0x0B92, 0x0BC8, 0x0BED, 0x0BF9, 0x0BE5, 0x0BAF,\n    0x0B60, 0x0AFD, 0x0A8C, 0x0A11, 0x0991, 0x0912, 0x0898, 0x0829,\n    0x07CA, 0x0780, 0x074F, 0x073E, 0x0AC9, 0x0AB8, 0x0A8A, 0x0A4A,\n    0x09FE, 0x09B2, 0x096E, 0x093A, 0x0920, 0x0929, 0x0953, 0x0996,\n    0x09EB, 0x0A4F, 0x0ABD, 0x0B2F, 0x0BA2, 0x0C0F, 0x0C74, 0x0CCA,\n    0x0D0E, 0x0D3A, 0x0D4A, 0xA078, 0xA0B6, 0xA159, 0xA240, 0xA34B,\n    0xA456, 0xA542, 0xA5EE, 0xA636, 0xA5FC, 0xA53E, 0xA422, 0xA2BA,\n    0xA119, 0x9F52, 0x9D79, 0x9BA1, 0x99DD, 0x9840, 0x96DE, 0x95C9,\n    0x9515, 0x94D5, 0x1945, 0x194C, 0x195F, 0x197E, 0x19A8, 0x19DA,\n    0x1A14, 0x1A54, 0x1A99, 0x1AE2, 0x1B2E, 0x1B7B, 0x1BC8, 0x1C13,\n    0x1C5D, 0x1CA2, 0x1CE2, 0x1D1C, 0x1D4E, 0x1D77, 0x1D96, 0x1DAA,\n    0x1DB1, 0xE9B2, 0xE982, 0xE8F6, 0xE819, 0xE6F2, 0xE58C, 0xE3F0,\n    0xE225, 0xE037, 0xDE2D, 0xDC11, 0xD9EB, 0xD7C6, 0xD5AA, 0xD3A0,\n    0xD1B2, 0xCFE7, 0xCE4B, 0xCCE5, 0xCBBE, 0xCAE1, 0xCA55, 0xCA25,\n    0xBD23, 0xBD0B, 0xBCC7, 0xBC5C, 0xBBCE, 0xBB20, 0xBA58, 0xB97A,\n    0xB88A, 0xB78E, 0xB688, 0xB57E, 0xB474, 0xB36E, 0xB271, 0xB181,\n    0xB0A3, 0xAFDB, 0xAF2E, 0xAE9F, 0xAE34, 0xADF0, 0xADD9, 0xF071,\n    0xF042, 0xEFBB, 0xEEE4, 0xEDC7, 0xEC6C, 0xEADC, 0xE920, 0xE741,\n    0xE548, 0xE33C, 0xE128, 0xDF14, 0xDD09, 0xDB0F, 0xD930, 0xD774,\n    0xD5E5, 0xD48A, 0xD36D, 0xD296, 0xD20F, 0xD1E0, 0x0B16, 0x0B38,\n    0x0B9B, 0x0C37, 0x0D07, 0x0E04, 0x0F27, 0x106B, 0x11C8, 0x1338,\n    0x14B5, 0x1639, 0x17BD, 0x193A, 0x1AAB, 0x1C08, 0x1D4B, 0x1E6E,\n    0x1F6B, 0x203B, 0x20D7, 0x213A, 0x215C, 0xBF48, 0xBF19, 0xBE90,\n    0xBDB7, 0xBC97, 0xBB38, 0xB9A4, 0xB7E3, 0xB5FF, 0xB400, 0xB1EF,\n    0xAFD5, 0xADBB, 0xABAB, 0xA9AC, 0xA7C7, 0xA607, 0xA472, 0xA314,\n    0xA1F4, 0xA11B, 0xA092, 0xA062, 0xF5A5, 0xF597, 0xF572, 0xF53D,\n    0xF501, 0xF4C5, 0xF492, 0xF46F, 0xF465, 0xF47A, 0xF4B1, 0xF4FF,\n    0xF562, 0xF5D2, 0xF64D, 0xF6CC, 0xF74A, 0xF7C3, 0xF831, 0xF88F,\n    0xF8D9, 0xF908, 0xF919, 0xF580, 0xF591, 0xF5BC, 0xF5FA, 0xF642,\n    0xF68B, 0xF6CC, 0xF6FD, 0xF715, 0xF70C, 0xF6E2, 0xF6A0, 0xF64C,\n    0xF5EA, 0xF57F, 0xF50F, 0xF49F, 0xF433, 0xF3D1, 0xF37C, 0xF33A,\n    0xF30F, 0xF2FF, 0xA064, 0xA0A1, 0xA142, 0xA226, 0xA32C, 0xA433,\n    0xA51A, 0xA5BF, 0xA603, 0xA5C3, 0xA500, 0xA3DE, 0xA26F, 0xA0C7,\n    0x9EFA, 0x9D1A, 0x9B3B, 0x9971, 0x97CF, 0x9668, 0x954F, 0x9498,\n    0x9457, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x0000,\n};\n\n// 0x06054074\nstatic const u16 bowser_seg6_animindex_06054074[] = {\n    0x0001, 0x0000, 0x0017, 0x0001, 0x0017, 0x0018, 0x0017, 0x002F, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0266, 0x0001, 0x0000,\n    0x0017, 0x014D, 0x0017, 0x0164, 0x0017, 0x017B,\n    0x0001, 0x00D6, 0x0001, 0x00D7, 0x0001, 0x00D8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0017, 0x0049,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0265, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0017, 0x0060,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0264, 0x0001, 0x0000,\n    0x0017, 0x0192, 0x0017, 0x01A9, 0x0017, 0x01C0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0017, 0x00D9,\n    0x0017, 0x0077, 0x0017, 0x008E, 0x0017, 0x00A5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0263, 0x0001, 0x0000,\n    0x0017, 0x00F0, 0x0017, 0x0107, 0x0017, 0x011E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00BC,\n    0x0001, 0x0046, 0x0001, 0x0047, 0x0001, 0x0048,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0262, 0x0001, 0x0000,\n    0x0017, 0x01D7, 0x0017, 0x01EE, 0x0017, 0x0205,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0017, 0x0135,\n    0x0001, 0x00BD, 0x0001, 0x0000, 0x0001, 0x00BE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0261, 0x0001, 0x0000,\n    0x0017, 0x021C, 0x0017, 0x0233, 0x0017, 0x024A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x014C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0017, 0x00BF,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x06054290\nstatic const struct Animation bowser_seg6_anim_06054290 = {\n    0,\n    0,\n    0,\n    0,\n    0x17,\n    ANIMINDEX_NUMPARTS(bowser_seg6_animindex_06054074),\n    bowser_seg6_animvalue_06053BA4,\n    bowser_seg6_animindex_06054074,\n    0,\n};\n"
  },
  {
    "path": "actors/bowser/anims/anim_06054950.inc.c",
    "content": "// 0x060542A8\nstatic const s16 bowser_seg6_animvalue_060542A8[] = {\n    0x0000, 0x0098, 0x0096, 0x0093, 0x0091, 0x008F, 0x008C, 0x008D,\n    0x008E, 0x008F, 0x0090, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094,\n    0x0095, 0x0095, 0x0096, 0x0097, 0x0098, 0xFFE7, 0xFFEA, 0xFFF3,\n    0xFFFD, 0x0004, 0x0007, 0x0007, 0x0006, 0x0003, 0x0001, 0xFFFF,\n    0xFFFB, 0xFFF8, 0xFFF4, 0xFFF1, 0xFFEE, 0xFFEB, 0xFFE9, 0xFFE7,\n    0xFFE7, 0x0000, 0x0145, 0x044D, 0x07EB, 0x0AF3, 0x0C39, 0x0C0C,\n    0x0B8E, 0x0ACD, 0x09D5, 0x08B5, 0x0779, 0x062F, 0x04E5, 0x03A6,\n    0x0282, 0x0185, 0x00BD, 0x0037, 0x0000, 0x32C6, 0xC001, 0x32C6,\n    0x0000, 0x010C, 0x0150, 0x0313, 0x047E, 0x047E, 0x03FC, 0x037F,\n    0x032E, 0x02D4, 0x0275, 0x0212, 0x01B0, 0x0152, 0x00F9, 0x00A9,\n    0x0065, 0x0031, 0x000E, 0x0000, 0x0000, 0x000F, 0x002F, 0x005F,\n    0x0089, 0x009A, 0x00A0, 0x009D, 0x0092, 0x0084, 0x0075, 0x0064,\n    0x0053, 0x0041, 0x0031, 0x0021, 0x0014, 0x0009, 0x0002, 0x0000,\n    0xA509, 0xA298, 0xA05A, 0x9D2C, 0x9AAD, 0x99DF, 0x99C9, 0x9A40,\n    0x9B09, 0x9BFD, 0x9D12, 0x9E3B, 0x9F6D, 0xA09D, 0xA1BF, 0xA2C7,\n    0xA3AB, 0xA45F, 0xA4D7, 0xA508, 0xE442, 0xE476, 0xE4F5, 0xE596,\n    0xE632, 0xE69E, 0xE6B2, 0xE646, 0xE48E, 0xE190, 0xDE5D, 0xDC06,\n    0xDB9B, 0xDCC4, 0xDE71, 0xE058, 0xE22E, 0xE3A7, 0xE479, 0xE459,\n    0x0254, 0x053E, 0xF8D6, 0x2486, 0x27A2, 0x2F2C, 0x3878, 0x40DA,\n    0x45A5, 0x467D, 0x454E, 0x42D8, 0x3FD7, 0x3D0A, 0x3B2F, 0x3B0D,\n    0x3BF5, 0x3C7A, 0x3B2F, 0x3649, 0x2EEA, 0x2806, 0x2491, 0xDB55,\n    0xDE67, 0xE5B9, 0xEE76, 0xF5C8, 0xF8DA, 0xF86E, 0xF73E, 0xF56B,\n    0xF316, 0xF05D, 0xED63, 0xEA46, 0xE728, 0xE427, 0xE166, 0xDF03,\n    0xDD20, 0xDBDC, 0xDB57, 0x0000, 0xFF46, 0xFD89, 0xFB75, 0xF9B8,\n    0xF8FD, 0xF917, 0xF95F, 0xF9CE, 0xFA5C, 0xFB02, 0xFBB7, 0xFC74,\n    0xFD32, 0xFDE8, 0xFE90, 0xFF21, 0xFF94, 0xFFE1, 0x0000, 0xF34B,\n    0xF2A5, 0xF119, 0xEF40, 0xEDB4, 0xED0D, 0xED24, 0xED64, 0xEDC7,\n    0xEE46, 0xEED9, 0xEF7A, 0xF023, 0xF0CB, 0xF16E, 0xF203, 0xF284,\n    0xF2EB, 0xF32F, 0xF34B, 0x0000, 0xFFC8, 0xFF3D, 0xFE92, 0xFDF8,\n    0xFD57, 0xFCA2, 0xFC16, 0xFBF1, 0xFC25, 0xFC78, 0xFCE2, 0xFD5C,\n    0xFDDF, 0xFE62, 0xFEE0, 0xFF4F, 0xFFA9, 0xFFE7, 0x0000, 0x0000,\n    0xFFFA, 0xFFEC, 0xFFE0, 0xFFE1, 0xFFF9, 0x001E, 0x0042, 0x0053,\n    0x0053, 0x004E, 0x0047, 0x003E, 0x0032, 0x0027, 0x001B, 0x0011,\n    0x0008, 0x0002, 0x0000, 0xA438, 0xA2D7, 0x9FB2, 0x9C45, 0x9A0E,\n    0x997E, 0x99C6, 0x9A80, 0x9B48, 0x9C0B, 0x9CF3, 0x9DF5, 0x9F06,\n    0xA019, 0xA123, 0xA219, 0xA2EE, 0xA397, 0xA409, 0xA438, 0x8001,\n    0x8001, 0xBE14, 0xCA03, 0xC5D9, 0xBBEB, 0xB010, 0xA622, 0xA1F8,\n    0xA28B, 0xA427, 0xA6A0, 0xA9CB, 0xAD7B, 0xB186, 0xB5BF, 0xB9FA,\n    0xBE0C, 0xC1C9, 0xC506, 0xC796, 0xC94D, 0xCA01, 0xFFA2, 0xFFB5,\n    0xFFE3, 0x0018, 0x0045, 0x0063, 0x006F, 0x006B, 0x0066, 0x005F,\n    0x0057, 0x004E, 0x0043, 0x0038, 0x002A, 0x001B, 0x0000, 0xFFD9,\n    0xFFB5, 0xFFA2, 0xFF46, 0xFF45, 0xFF44, 0xFF42, 0xFF43, 0xFF4A,\n    0xFF51, 0xFF50, 0xFF4E, 0xFF4C, 0xFF49, 0xFF46, 0xFF43, 0xFF41,\n    0xFF3F, 0xFF3D, 0xFF3E, 0xFF41, 0xFF45, 0xFF46, 0x9A98, 0x96A4,\n    0x8D40, 0x821E, 0x78EC, 0x7258, 0x6FA8, 0x7093, 0x71BF, 0x732B,\n    0x74DB, 0x76D1, 0x790E, 0x7B96, 0x7E68, 0x818C, 0x8726, 0x8F47,\n    0x96CB, 0x9A8C, 0x0000, 0x009F, 0x021A, 0x03DF, 0x055A, 0x05F9,\n    0x05E3, 0x05A6, 0x0547, 0x04CE, 0x0441, 0x03A7, 0x0306, 0x0264,\n    0x01C9, 0x013A, 0x00BE, 0x005C, 0x001B, 0x0000, 0x0000, 0xFFE1,\n    0xFF97, 0xFF3F, 0xFEF4, 0xFED5, 0xFED9, 0xFEE6, 0xFEF8, 0xFF10,\n    0xFF2B, 0xFF49, 0xFF69, 0xFF89, 0xFFA7, 0xFFC3, 0xFFDB, 0xFFEE,\n    0xFFFB, 0x0000, 0xCD46, 0xCBFC, 0xC8E9, 0xC53F, 0xC22C, 0xC0E2,\n    0xC110, 0xC18F, 0xC253, 0xC34E, 0xC472, 0xC5B2, 0xC700, 0xC850,\n    0xC992, 0xCABA, 0xCBBA, 0xCC85, 0xCD0D, 0xCD45, 0x3F4B, 0x3F40,\n    0x3F1C, 0x3EDC, 0x3E7F, 0x3E02, 0x3D95, 0x3D52, 0x3D34, 0x3D35,\n    0x3D4F, 0x3D7D, 0x3DBB, 0x3E02, 0x3E4E, 0x3E98, 0x3EDC, 0x3F14,\n    0x3F3B, 0x3F4B, 0x0AA8, 0x0AC9, 0xA078, 0x1945, 0x17E8, 0x14A9,\n    0x10C8, 0x0D88, 0x0C2C, 0x0C5C, 0x0CE3, 0x0DB2, 0x0EBB, 0x0FF0,\n    0x1142, 0x12A4, 0x1406, 0x155B, 0x1694, 0x17A3, 0x187A, 0x1909,\n    0x1944, 0xE9B2, 0xE6F7, 0xE073, 0xD8AD, 0xD229, 0xCF6E, 0xCFCE,\n    0xD0DD, 0xD27C, 0xD490, 0xD6FB, 0xD9A2, 0xDC67, 0xDF2D, 0xE1D9,\n    0xE44D, 0xE66C, 0xE81A, 0xE93B, 0xE9B1, 0xBD23, 0xBE76, 0xC19F,\n    0xC565, 0xC88E, 0xC9E1, 0xC9B2, 0xC92F, 0xC866, 0xC764, 0xC637,\n    0xC4EE, 0xC396, 0xC23D, 0xC0F2, 0xBFC1, 0xBEB9, 0xBDE9, 0xBD5D,\n    0xBD23, 0xF071, 0xEF33, 0xEC3E, 0xE8B6, 0xE5C1, 0xE483, 0xE4AF,\n    0xE529, 0xE5E6, 0xE6D8, 0xE7F1, 0xE925, 0xEA67, 0xEBAA, 0xECE0,\n    0xEDFD, 0xEEF4, 0xEFB8, 0xF03B, 0xF070, 0x0B16, 0x0DD1, 0x1453,\n    0x1C18, 0x229A, 0x2555, 0x24F4, 0x23E6, 0x2247, 0x2034, 0x1DC9,\n    0x1B23, 0x185F, 0x1599, 0x12EE, 0x107A, 0x0E5B, 0x0CAE, 0x0B8D,\n    0x0B17, 0xBF48, 0xBCF6, 0xB76F, 0xB0D6, 0xAB4E, 0xA8FC, 0xA94E,\n    0xAA34, 0xAB94, 0xAD58, 0xAF66, 0xB1A6, 0xB3FF, 0xB65A, 0xB89F,\n    0xBAB3, 0xBC81, 0xBDEE, 0xBEE3, 0xBF47, 0xF5A5, 0xF580, 0xA064,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n};\n\n// 0x06054734\nstatic const u16 bowser_seg6_animindex_06054734[] = {\n    0x0001, 0x0000, 0x0014, 0x0001, 0x0014, 0x0015, 0x0014, 0x0029, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0245, 0x0001, 0x0000,\n    0x0001, 0x01C2, 0x0001, 0x01C3, 0x0001, 0x01C4,\n    0x0001, 0x011F, 0x0001, 0x0120, 0x0001, 0x0121,\n    0x0014, 0x0040, 0x0014, 0x0054, 0x0014, 0x0068,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0244, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x007C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0243, 0x0001, 0x0000,\n    0x0014, 0x01C5, 0x0014, 0x01D9, 0x0014, 0x01ED,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x0122,\n    0x0001, 0x0090, 0x0001, 0x0091, 0x0001, 0x0092,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0242, 0x0001, 0x0000,\n    0x0014, 0x0136, 0x0014, 0x014A, 0x0014, 0x015E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x0093,\n    0x0001, 0x003D, 0x0001, 0x003E, 0x0001, 0x003F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0241, 0x0001, 0x0000,\n    0x0014, 0x0201, 0x0014, 0x0215, 0x0014, 0x0229,\n    0x0014, 0x0172, 0x0014, 0x0186, 0x0014, 0x019A,\n    0x0014, 0x00A7, 0x0014, 0x00BB, 0x0014, 0x00CF,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0240, 0x0001, 0x0000,\n    0x0001, 0x023D, 0x0001, 0x023E, 0x0001, 0x023F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x01AE,\n    0x0014, 0x00E3, 0x0014, 0x00F7, 0x0014, 0x010B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x06054950\nstatic const struct Animation bowser_seg6_anim_06054950 = {\n    0,\n    0,\n    0,\n    0,\n    0x14,\n    ANIMINDEX_NUMPARTS(bowser_seg6_animindex_06054734),\n    bowser_seg6_animvalue_060542A8,\n    bowser_seg6_animindex_06054734,\n    0,\n};\n"
  },
  {
    "path": "actors/bowser/anims/anim_06055210.inc.c",
    "content": "// 0x06054968\nstatic const s16 bowser_seg6_animvalue_06054968[] = {\n    0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0003, 0x0004,\n    0x0003, 0x0003, 0x0002, 0x0002, 0x0000, 0x0000, 0xFFFE, 0xFFFA,\n    0xFFF7, 0xFFF6, 0xFFF6, 0xFFF7, 0xFFF8, 0xFFF9, 0xFFFA, 0xFFFC,\n    0xFFFD, 0xFFFE, 0xFFFF, 0x0000, 0x00D5, 0x00D5, 0x00D6, 0x00D8,\n    0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DB, 0x00D8, 0x00D6, 0x00D3,\n    0x00D1, 0x00D1, 0x00D2, 0x00D2, 0x00D1, 0x00D1, 0x00D1, 0x00D0,\n    0x00D0, 0x00CF, 0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0xFFFB,\n    0xFFFB, 0xFFFA, 0xFFF8, 0xFFF7, 0xFFF5, 0xFFF4, 0xFFF4, 0xFFF4,\n    0xFFF4, 0xFFF4, 0xFFF4, 0xFFF5, 0xFFF5, 0xFFF6, 0xFFF6, 0xFFF7,\n    0xFFF7, 0xFFF8, 0xFFF8, 0xFFF9, 0xFFF9, 0xFFFA, 0xFFFA, 0xFFFA,\n    0xFFFB, 0xFFFB, 0xF480, 0xF469, 0xF42A, 0xF3C9, 0xF34F, 0xF2C2,\n    0xF22A, 0xF18E, 0xF0F5, 0xF068, 0xEFED, 0xEF8C, 0xEF4C, 0xEF34,\n    0xEF43, 0xEF6E, 0xEFB3, 0xF00C, 0xF077, 0xF0EF, 0xF171, 0xF1F8,\n    0xF280, 0xF306, 0xF386, 0xF3FC, 0xF464, 0x0000, 0xFFEC, 0xFFB6,\n    0xFF67, 0xFF0B, 0xFEAC, 0xFE53, 0xFE0C, 0xFDE0, 0xFDD9, 0xFE02,\n    0xFE64, 0xFF0B, 0x0000, 0x00F5, 0x019D, 0x0202, 0x022D, 0x022A,\n    0x0200, 0x01BC, 0x0167, 0x010A, 0x00B1, 0x0064, 0x002F, 0x001B,\n    0x32C6, 0xC001, 0x32C6, 0xFFAD, 0xFFAD, 0xFFAE, 0xFFAF, 0xFFAF,\n    0xFFB0, 0xFFB0, 0xFFB0, 0xFFB0, 0xFFAF, 0xFFAE, 0xFFAE, 0xFFAE,\n    0xFFAD, 0xFFAD, 0xFFAD, 0xFFAD, 0xFFAD, 0xFFAD, 0xFFAC, 0xFFAC,\n    0xFFAC, 0xFFAC, 0xFFAD, 0xFFAD, 0xFFAD, 0xFFAD, 0x0017, 0x0018,\n    0x001A, 0x001C, 0x001E, 0x0020, 0x0020, 0x0020, 0x001F, 0x001D,\n    0x001C, 0x001A, 0x0019, 0x0018, 0x0018, 0x0018, 0x0017, 0x0017,\n    0x0016, 0x0015, 0x0014, 0x0015, 0x0015, 0x0015, 0x0016, 0x0017,\n    0x0017, 0xC325, 0xC378, 0xC448, 0xC557, 0xC66A, 0xC741, 0xC7A0,\n    0xC772, 0xC6E4, 0xC61B, 0xC53D, 0xC471, 0xC3DD, 0xC38F, 0xC36A,\n    0xC34C, 0xC317, 0xC2B3, 0xC239, 0xC1D2, 0xC1A6, 0xC1B8, 0xC1E9,\n    0xC22E, 0xC27D, 0xC2C9, 0xC308, 0xFC73, 0xFCCA, 0xFDA2, 0xFEBA,\n    0xFFD0, 0x00A1, 0x00ED, 0x00B8, 0x0035, 0xFF70, 0xFE6E, 0xFD38,\n    0xFBD8, 0xFA16, 0xF7DB, 0xF55F, 0xF2D8, 0xF07E, 0xEE88, 0xED2E,\n    0xECA7, 0xED67, 0xEF6E, 0xF248, 0xF582, 0xF8A6, 0xFB41, 0x0468,\n    0xFAA2, 0xF058, 0x256C, 0x2625, 0x27DB, 0x29DB, 0x2B73, 0x2BF1,\n    0x2AEA, 0x28D7, 0x2656, 0x2408, 0x228B, 0x21D1, 0x2161, 0x213D,\n    0x2165, 0x21DB, 0x22A0, 0x2443, 0x26D9, 0x29AC, 0x2C09, 0x2D38,\n    0x2CED, 0x2BA1, 0x29C7, 0x27D6, 0x2640, 0xF1FB, 0xF89A, 0xE69A,\n    0x005C, 0x005C, 0x005A, 0x0059, 0x0057, 0x0055, 0x0055, 0x0055,\n    0x0055, 0x0056, 0x0057, 0x0058, 0x0058, 0x0058, 0x0058, 0x0058,\n    0x0058, 0x0058, 0x0059, 0x0059, 0x005A, 0x005A, 0x005A, 0x005B,\n    0x005B, 0x005C, 0x005C, 0xFFD0, 0xFFCF, 0xFFCD, 0xFFCA, 0xFFC8,\n    0xFFC5, 0xFFC4, 0xFFC4, 0xFFC5, 0xFFC7, 0xFFC8, 0xFFC9, 0xFFCA,\n    0xFFCA, 0xFFC9, 0xFFC9, 0xFFCA, 0xFFCA, 0xFFCB, 0xFFCB, 0xFFCC,\n    0xFFCD, 0xFFCD, 0xFFCE, 0xFFCF, 0xFFCF, 0xFFD0, 0xC218, 0xC27A,\n    0xC373, 0xC4BC, 0xC612, 0xC72E, 0xC7CC, 0xC7C3, 0xC740, 0xC684,\n    0xC5CB, 0xC557, 0xC533, 0xC536, 0xC547, 0xC54D, 0xC530, 0xC4F5,\n    0xC4B1, 0xC466, 0xC416, 0xC3C2, 0xC36D, 0xC318, 0xC2C4, 0xC274,\n    0xC22A, 0x8001, 0x8001, 0xB89E, 0xB969, 0xBB4F, 0xBD95, 0xBF82,\n    0xC05C, 0xC004, 0xBF03, 0xBD9E, 0xBC1B, 0xBABE, 0xB9CD, 0xB98D,\n    0xBA19, 0xBB3F, 0xBCC8, 0xBE80, 0xC032, 0xC1A9, 0xC2AF, 0xC311,\n    0xC28B, 0xC132, 0xBF50, 0xBD30, 0xBB1F, 0xB967, 0xD10C, 0xD165,\n    0xD25B, 0xD3CF, 0xD5A2, 0xD7B4, 0xD9E7, 0xDC1C, 0xDE33, 0xE00E,\n    0xE18C, 0xE290, 0xE2F9, 0xE2E1, 0xE27A, 0xE1CE, 0xE0E5, 0xDFCA,\n    0xDE85, 0xDD20, 0xDBA4, 0xDA1B, 0xD88D, 0xD705, 0xD58B, 0xD428,\n    0xD2E7, 0xFF82, 0xFF4A, 0xFEB9, 0xFDEE, 0xFD0B, 0xFC2E, 0xFB79,\n    0xFB0C, 0xFB06, 0xFB89, 0xFC84, 0xFDCC, 0xFF37, 0x009B, 0x01D0,\n    0x02AB, 0x0301, 0x0249, 0x0084, 0xFE58, 0xFC68, 0xFB59, 0xFB5F,\n    0xFC0A, 0xFD10, 0xFE28, 0xFF08, 0xFF5F, 0xA28E, 0xDFB4, 0xDF41,\n    0xDE1E, 0xDC98, 0xDAFB, 0xD997, 0xD81A, 0xD63E, 0xD465, 0xD2F0,\n    0xD241, 0xD2B7, 0xD55E, 0xDA11, 0xDF68, 0xE3FA, 0xE660, 0xE6EA,\n    0xE6EA, 0xE679, 0xE5B1, 0xE4AA, 0xE37E, 0xE247, 0xE11C, 0xE019,\n    0xDF55, 0x3AB0, 0x3AF4, 0x3BA2, 0x3C8D, 0x3D86, 0x3E5F, 0x3EEB,\n    0x3F41, 0x3F95, 0x3FE5, 0x402F, 0x4071, 0x40AA, 0x40D7, 0x40F7,\n    0x4108, 0x4107, 0x40F4, 0x40CC, 0x4078, 0x3FE9, 0x3F2F, 0x3E57,\n    0x3D71, 0x3C8A, 0x3BB1, 0x3AF4, 0x0D51, 0x0D2C, 0x0CD5, 0x0C6D,\n    0x0C17, 0x0BF5, 0x0C0C, 0x0C41, 0x0C8A, 0x0CD9, 0x0D23, 0x0D5B,\n    0x0D76, 0x0D70, 0x0D54, 0x0D2A, 0x0CF7, 0x0CC3, 0x0C94, 0x0C72,\n    0x0C62, 0x0C6B, 0x0C89, 0x0CB4, 0x0CE6, 0x0D16, 0x0D3E, 0x05C8,\n    0x060C, 0x06AE, 0x076E, 0x080B, 0x0847, 0x0816, 0x07A8, 0x0716,\n    0x0678, 0x05E5, 0x0577, 0x0546, 0x0556, 0x0593, 0x05EF, 0x065C,\n    0x06CC, 0x0731, 0x077C, 0x07A0, 0x0792, 0x0757, 0x0701, 0x069E,\n    0x063D, 0x05ED, 0xAF1F, 0xAE48, 0xAC4B, 0xA9EF, 0xA7FD, 0xA73F,\n    0xA7D4, 0xA927, 0xAAEB, 0xACD6, 0xAE9D, 0xAFF4, 0xB090, 0xB062,\n    0xAFA9, 0xAE92, 0xAD46, 0xABF1, 0xAABE, 0xA9D8, 0xA96B, 0xA99A,\n    0xAA4F, 0xAB5A, 0xAC8C, 0xADB7, 0xAEAC, 0xD8E3, 0xD651, 0xCFCE,\n    0xC72A, 0xBE34, 0xB6BA, 0xB28C, 0xB1B4, 0xB2BD, 0xB53A, 0xB8BA,\n    0xBCD1, 0xC10E, 0xC5BA, 0xCB38, 0xD145, 0xD79E, 0xDE00, 0xE429,\n    0xE9D5, 0xEEC2, 0xF2AC, 0xF551, 0xF374, 0xEC50, 0xE354, 0xDBF1,\n    0xCC95, 0xCC7D, 0xCC4A, 0xCC18, 0xCC04, 0xCC2A, 0xCCA9, 0xCDD3,\n    0xCFA5, 0xD1B5, 0xD39A, 0xD4EC, 0xD543, 0xD4B7, 0xD3BA, 0xD266,\n    0xD0D3, 0xCF1E, 0xCD5E, 0xCBAE, 0xCA28, 0xC8E6, 0xC802, 0xC80F,\n    0xC923, 0xCA9A, 0xCBD0, 0x0C97, 0x0E78, 0x1332, 0x196D, 0x1FCF,\n    0x24FD, 0x27A0, 0x279A, 0x25FD, 0x2331, 0x1FA1, 0x1BB4, 0x17D4,\n    0x13B2, 0x0EE0, 0x099C, 0x0423, 0xFEB2, 0xF985, 0xF4D8, 0xF0EA,\n    0xEDF6, 0xEC3A, 0xEF01, 0xF718, 0x00FD, 0x0933, 0xCFB9, 0xD1D9,\n    0xD74E, 0xDEB8, 0xE6B5, 0xEDE5, 0xF2E7, 0xF45B, 0xF2B0, 0xEF78,\n    0xEB06, 0xE5AA, 0xDFB7, 0xD980, 0xD355, 0xCD8A, 0xC86F, 0xC456,\n    0xC193, 0xC06F, 0xC0C5, 0xC23C, 0xC47D, 0xC730, 0xC9FD, 0xCC8C,\n    0xCE87, 0x32D7, 0x32ED, 0x3322, 0x3362, 0x3398, 0x33B1, 0x3399,\n    0x333A, 0x3290, 0x31AC, 0x309C, 0x2F71, 0x2E39, 0x2D05, 0x2BE3,\n    0x2AE4, 0x2A16, 0x2989, 0x294D, 0x2985, 0x2A37, 0x2B47, 0x2C98,\n    0x2E0C, 0x2F87, 0x30ED, 0x321F, 0x87D4, 0x8A89, 0x917A, 0x9ADF,\n    0xA4F4, 0xADF1, 0xB411, 0xB58D, 0xB2EC, 0xAE2D, 0xA7C3, 0xA022,\n    0x97BB, 0x8F01, 0x8667, 0x7E5C, 0x775A, 0x71CF, 0x6E2F, 0x6CF4,\n    0x6DF4, 0x70AA, 0x7491, 0x7923, 0x7DDC, 0x823A, 0x85B2, 0xF2DC,\n    0xF2F2, 0xF326, 0xF366, 0xF39E, 0xF3BD, 0xF3BD, 0xF3AD, 0xF393,\n    0xF377, 0xF360, 0xF356, 0xF35B, 0xF369, 0xF37C, 0xF391, 0xF3A2,\n    0xF3AD, 0xF3AC, 0xF3A0, 0xF38D, 0xF374, 0xF358, 0xF339, 0xF31B,\n    0xF2FE, 0xF2E5, 0xFA5C, 0xFA32, 0xF9CA, 0xF94B, 0xF8DA, 0xF89C,\n    0xF89A, 0xF8B9, 0xF8EA, 0xF921, 0xF94D, 0xF960, 0xF957, 0xF93D,\n    0xF918, 0xF8F2, 0xF8D1, 0xF8BD, 0xF8C0, 0xF8D8, 0xF8FE, 0xF92F,\n    0xF968, 0xF9A4, 0xF9E1, 0xFA19, 0xFA4B, 0xAF01, 0xAE7B, 0xAD35,\n    0xABA6, 0xAA43, 0xA982, 0xA97C, 0xA9DE, 0xAA7C, 0xAB27, 0xABB3,\n    0xABF1, 0xABD5, 0xAB80, 0xAB0B, 0xAA90, 0xAA27, 0xA9E9, 0xA9F0,\n    0xAA3B, 0xAAB4, 0xAB4F, 0xAC01, 0xACBE, 0xAD7C, 0xAE2E, 0xAECA,\n    0x3FFF, 0xF822, 0x3FFF, 0xF822, 0xC001, 0x3FFF, 0xC001, 0x07DE,\n    0x3FFF, 0x07DE, 0xC001, 0x3FFF, 0xC001, 0x3FFF,\n};\n\n// 0x06054FF4\nstatic const u16 bowser_seg6_animindex_06054FF4[] = {\n    0x001B, 0x0001, 0x001B, 0x001C, 0x001B, 0x0037, 0x001B, 0x0052, 0x0001, 0x0000, 0x001B, 0x006D,\n    0x0001, 0x0000, 0x0001, 0x0345, 0x0001, 0x0000,\n    0x001B, 0x01F4, 0x001B, 0x020F, 0x001B, 0x022A,\n    0x0001, 0x0169, 0x0001, 0x016A, 0x001B, 0x016B,\n    0x001B, 0x008B, 0x001B, 0x00A6, 0x001B, 0x00C1,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0342, 0x0001, 0x0343, 0x0001, 0x0344,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001B, 0x00DC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x033F, 0x0001, 0x0340, 0x0001, 0x0341,\n    0x001B, 0x0245, 0x001B, 0x0260, 0x001B, 0x027B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001B, 0x0186,\n    0x0001, 0x00F7, 0x0001, 0x00F8, 0x0001, 0x00F9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x033C, 0x0001, 0x033D, 0x0001, 0x033E,\n    0x001B, 0x01A1, 0x0001, 0x01BC, 0x0001, 0x01BD,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001B, 0x00FA,\n    0x0001, 0x0088, 0x0001, 0x0089, 0x0001, 0x008A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0339, 0x0001, 0x033A, 0x0001, 0x033B,\n    0x001B, 0x0296, 0x001B, 0x02B1, 0x001B, 0x02CC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001B, 0x01BE,\n    0x0001, 0x0115, 0x0001, 0x0116, 0x0001, 0x0117,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0338, 0x0001, 0x0000,\n    0x001B, 0x02E7, 0x001B, 0x0302, 0x001B, 0x031D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001B, 0x01D9,\n    0x001B, 0x0118, 0x001B, 0x0133, 0x001B, 0x014E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x06055210\nstatic const struct Animation bowser_seg6_anim_06055210 = {\n    0,\n    0,\n    0,\n    0,\n    0x1B,\n    ANIMINDEX_NUMPARTS(bowser_seg6_animindex_06054FF4),\n    bowser_seg6_animvalue_06054968,\n    bowser_seg6_animindex_06054FF4,\n    0,\n};\n"
  },
  {
    "path": "actors/bowser/anims/anim_06055984.inc.c",
    "content": "// 0x06055228\nstatic const s16 bowser_seg6_animvalue_06055228[] = {\n    0x0000, 0x00D5, 0x00CC, 0x00C3, 0x00BB, 0x00B2, 0x00A9, 0x00A1,\n    0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0098,\n    0xFFFB, 0xFFF8, 0xFFF5, 0xFFF2, 0xFFEF, 0xFFED, 0xFFEA, 0xFFE7,\n    0xFFE7, 0xFFE7, 0xFFE7, 0xFFE7, 0xFFE7, 0xFFE7, 0xFFE7, 0xF480,\n    0xF509, 0xF672, 0xF86C, 0xFAAB, 0xFCE2, 0xFEC3, 0x0000, 0x009A,\n    0x00D6, 0x00CE, 0x009A, 0x0055, 0x0019, 0x0000, 0x32C6, 0xC001,\n    0x32C6, 0xFFAD, 0xFFB1, 0xFFBB, 0xFFCA, 0xFFDA, 0xFFEA, 0xFFF8,\n    0x0000, 0x0004, 0x0006, 0x0005, 0x0004, 0x0002, 0x0000, 0x0000,\n    0x0017, 0x0016, 0x0013, 0x000F, 0x000B, 0x0006, 0x0002, 0x0000,\n    0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0xC325,\n    0xC1BD, 0xBE0E, 0xB8E0, 0xB2FE, 0xAD33, 0xA848, 0xA509, 0xA374,\n    0xA2D7, 0xA2ED, 0xA374, 0xA428, 0xA4C5, 0xA509, 0xFC73, 0xFB52,\n    0xF85C, 0xF433, 0xEF79, 0xEAD1, 0xE6DE, 0xE442, 0xE2FD, 0xE27F,\n    0xE291, 0xE2FD, 0xE38E, 0xE40C, 0xE442, 0x0468, 0x044F, 0x040E,\n    0x03B2, 0x034A, 0x02E4, 0x028D, 0x0254, 0x0238, 0x022D, 0x022F,\n    0x0238, 0x0244, 0x024F, 0x0254, 0xFAA2, 0xFB21, 0xFC6D, 0xFE41,\n    0x0052, 0x025D, 0x0419, 0x053E, 0x05CC, 0x0604, 0x05FC, 0x05CC,\n    0x058D, 0x0556, 0x053E, 0xF058, 0xF0BE, 0xF1C8, 0xF33E, 0xF4E6,\n    0xF688, 0xF7EB, 0xF8D6, 0xF948, 0xF974, 0xF96E, 0xF948, 0xF915,\n    0xF8E9, 0xF8D6, 0x256C, 0x2561, 0x2545, 0x251D, 0x24F0, 0x24C4,\n    0x249F, 0x2486, 0x247A, 0x2475, 0x2476, 0x247A, 0x247F, 0x2484,\n    0x2486, 0xF1FB, 0xF0EC, 0xEE27, 0xEA41, 0xE5D5, 0xE179, 0xDDC7,\n    0xDB55, 0xDA25, 0xD9AF, 0xD9C0, 0xDA25, 0xDAAC, 0xDB23, 0xDB55,\n    0xF89A, 0xF8F2, 0xF9DA, 0xFB20, 0xFC92, 0xFDFF, 0xFF34, 0x0000,\n    0x0063, 0x008A, 0x0084, 0x0063, 0x0037, 0x0010, 0x0000, 0xE69A,\n    0xE731, 0xE8BF, 0xEAEE, 0xED69, 0xEFDA, 0xF1ED, 0xF34B, 0xF3F6,\n    0xF438, 0xF42F, 0xF3F6, 0xF3AA, 0xF368, 0xF34B, 0x005C, 0x0058,\n    0x004D, 0x003D, 0x002B, 0x0019, 0x000A, 0x0000, 0xFFFC, 0xFFFA,\n    0xFFFA, 0xFFFC, 0xFFFE, 0x0000, 0x0000, 0xFFD0, 0xFFD2, 0xFFD8,\n    0xFFE1, 0xFFEA, 0xFFF3, 0xFFFB, 0x0000, 0x0002, 0x0003, 0x0003,\n    0x0002, 0x0001, 0x0000, 0x0000, 0xC218, 0xC0BD, 0xBD2E, 0xB82E,\n    0xB281, 0xACEA, 0xA82B, 0xA509, 0xA382, 0xA2EA, 0xA300, 0xA382,\n    0xA430, 0xA4C8, 0xA509, 0x8001, 0x8001, 0xB89E, 0xB8E0, 0xB98B,\n    0xBA7B, 0xBB8C, 0xBC99, 0xBD7E, 0xBE14, 0xBE5E, 0xBE7A, 0xBE76,\n    0xBE5E, 0xBE3D, 0xBE21, 0xBE14, 0xD10C, 0xD10F, 0xD112, 0xD10E,\n    0xD0FB, 0xD0D2, 0xD08B, 0xD020, 0xCF6B, 0xCE66, 0xCD3A, 0xCC0D,\n    0xCB05, 0xCA4A, 0xCA03, 0xFF82, 0xFF83, 0xFF85, 0xFF89, 0xFF8E,\n    0xFF92, 0xFF96, 0xFF99, 0xFF9B, 0xFF9D, 0xFF9F, 0xFFA0, 0xFFA1,\n    0xFFA2, 0xFFA2, 0xFF5F, 0xFF5E, 0xFF5C, 0xFF58, 0xFF55, 0xFF51,\n    0xFF4E, 0xFF4B, 0xFF4A, 0xFF49, 0xFF48, 0xFF47, 0xFF47, 0xFF46,\n    0xFF46, 0xA28E, 0xA24C, 0xA19D, 0xA0A4, 0x9F85, 0x9E63, 0x9D60,\n    0x9CA1, 0x9C1A, 0x9BA5, 0x9B46, 0x9AFA, 0x9AC4, 0x9AA3, 0x9A98,\n    0xDFB4, 0xDF4B, 0xDE34, 0xDC9F, 0xDAC2, 0xD8CD, 0xD6F5, 0xD56C,\n    0xD401, 0xD276, 0xD0ED, 0xCF83, 0xCE5A, 0xCD90, 0xCD46, 0x3AB0,\n    0x3AD8, 0x3B42, 0x3BD8, 0x3C81, 0x3D27, 0x3DB5, 0x3E12, 0x3E40,\n    0x3E52, 0x3E4F, 0x3E40, 0x3E2C, 0x3E1A, 0x3E12, 0x0D51, 0x0D31,\n    0x0CDD, 0x0C68, 0x0BE3, 0x0B60, 0x0AF1, 0x0AA8, 0x0A84, 0x0A76,\n    0x0A78, 0x0A84, 0x0A94, 0x0AA2, 0x0AA8, 0x05C8, 0x0604, 0x06A1,\n    0x077D, 0x0877, 0x096E, 0x0A3F, 0x0AC9, 0x0B0C, 0x0B26, 0x0B22,\n    0x0B0C, 0x0AEE, 0x0AD4, 0x0AC9, 0xAF1F, 0xAE70, 0xACA5, 0xAA1F,\n    0xA743, 0xA471, 0xA20D, 0xA078, 0x9FB3, 0x9F67, 0x9F72, 0x9FB3,\n    0xA00B, 0xA057, 0xA078, 0xD8E3, 0xDBE4, 0xE3C6, 0xEEDA, 0xFB6D,\n    0x07D0, 0x1253, 0x1945, 0x1CA6, 0x1DF6, 0x1DC6, 0x1CA6, 0x1B25,\n    0x19D5, 0x1945, 0xCC95, 0xCDF0, 0xD181, 0xD683, 0xDC33, 0xE1CD,\n    0xE68E, 0xE9B2, 0xEB39, 0xEBD2, 0xEBBC, 0xEB39, 0xEA8C, 0xE9F3,\n    0xE9B2, 0x0C97, 0x08E2, 0xFF29, 0xF17E, 0xE1F8, 0xD2AE, 0xC5B5,\n    0xBD23, 0xB8F7, 0xB758, 0xB793, 0xB8F7, 0xBAD2, 0xBC71, 0xBD23,\n    0xCFB9, 0xD140, 0xD541, 0xDAE2, 0xE146, 0xE792, 0xECE9, 0xF071,\n    0xF228, 0xF2D3, 0xF2BB, 0xF228, 0xF165, 0xF0BA, 0xF071, 0x32D7,\n    0x30FD, 0x2C1E, 0x2548, 0x1D84, 0x15DE, 0x0F60, 0x0B16, 0x0900,\n    0x0830, 0x084E, 0x0900, 0x09ED, 0x0ABD, 0x0B16, 0x87D4, 0x8A6B,\n    0x9135, 0x9ABF, 0xA594, 0xB03F, 0xB94D, 0xBF48, 0xC231, 0xC353,\n    0xC329, 0xC231, 0xC0E6, 0xBFC4, 0xBF48, 0xF2DC, 0xF2FE, 0xF355,\n    0xF3D0, 0xF45B, 0xF4E4, 0xF559, 0xF5A5, 0xF5CB, 0xF5D9, 0xF5D7,\n    0xF5CB, 0xF5BA, 0xF5AC, 0xF5A5, 0xFA5C, 0xFA22, 0xF98A, 0xF8B4,\n    0xF7C1, 0xF6D2, 0xF606, 0xF580, 0xF53F, 0xF525, 0xF529, 0xF53F,\n    0xF55C, 0xF575, 0xF580, 0xAF01, 0xAE53, 0xAC89, 0xAA05, 0xA72A,\n    0xA45B, 0xA1F8, 0xA064, 0x9FA0, 0x9F54, 0x9F5F, 0x9FA0, 0x9FF7,\n    0xA044, 0xA064, 0x3FFF, 0xF822, 0xF880, 0xF977, 0xFAD1, 0xFC5B,\n    0xFDDE, 0xFF27, 0x0000, 0x0069, 0x0092, 0x008C, 0x0069, 0x003A,\n    0x0011, 0x0000, 0x3FFF, 0xF822, 0xF880, 0xF977, 0xFAD1, 0xFC5B,\n    0xFDDE, 0xFF27, 0x0000, 0x0069, 0x0092, 0x008C, 0x0069, 0x003A,\n    0x0011, 0x0000, 0xC001, 0xC2FD, 0xCAD3, 0xD5D6, 0xE256, 0xEEA6,\n    0xF919, 0x0000, 0x035B, 0x04AA, 0x047A, 0x035B, 0x01DD, 0x008F,\n    0x0000, 0x3FFF, 0xC001, 0xC2FD, 0xCAD3, 0xD5D6, 0xE256, 0xEEA6,\n    0xF919, 0x0000, 0x035B, 0x04AA, 0x047A, 0x035B, 0x01DD, 0x008F,\n    0x0000, 0x07DE, 0x0780, 0x0689, 0x052F, 0x03A5, 0x0222, 0x00D9,\n    0x0000, 0xFF97, 0xFF6E, 0xFF74, 0xFF97, 0xFFC6, 0xFFEF, 0x0000,\n    0x3FFF, 0x07DE, 0x0780, 0x0689, 0x052F, 0x03A5, 0x0222, 0x00D9,\n    0x0000, 0xFF97, 0xFF6E, 0xFF74, 0xFF97, 0xFFC6, 0xFFEF, 0x0000,\n    0xC001, 0xC2FD, 0xCAD3, 0xD5D6, 0xE256, 0xEEA6, 0xF919, 0x0000,\n    0x035B, 0x04AA, 0x047A, 0x035B, 0x01DD, 0x008F, 0x0000, 0x3FFF,\n    0xC001, 0xC2FD, 0xCAD3, 0xD5D6, 0xE256, 0xEEA6, 0xF919, 0x0000,\n    0x035B, 0x04AA, 0x047A, 0x035B, 0x01DD, 0x008F, 0x0000, 0x3FFF,\n};\n\n// 0x06055768\nstatic const u16 bowser_seg6_animindex_06055768[] = {\n    0x0001, 0x0000, 0x000F, 0x0001, 0x000F, 0x0010, 0x000F, 0x001F, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x029F, 0x0001, 0x0000,\n    0x000F, 0x016E, 0x000F, 0x017D, 0x000F, 0x018C,\n    0x0001, 0x0103, 0x0001, 0x0104, 0x000F, 0x0105,\n    0x000F, 0x0031, 0x000F, 0x0040, 0x000F, 0x004F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x000F, 0x0280, 0x0001, 0x028F, 0x000F, 0x0290,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000F, 0x005E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x000F, 0x0261, 0x0001, 0x0270, 0x000F, 0x0271,\n    0x000F, 0x019B, 0x000F, 0x01AA, 0x000F, 0x01B9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000F, 0x0114,\n    0x000F, 0x006D, 0x000F, 0x007C, 0x000F, 0x008B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x000F, 0x0242, 0x0001, 0x0251, 0x000F, 0x0252,\n    0x000F, 0x0123, 0x000F, 0x0132, 0x000F, 0x0141,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000F, 0x009A,\n    0x0001, 0x002E, 0x0001, 0x002F, 0x0001, 0x0030,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x000F, 0x0223, 0x0001, 0x0232, 0x000F, 0x0233,\n    0x000F, 0x01C8, 0x000F, 0x01D7, 0x000F, 0x01E6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000F, 0x0150,\n    0x000F, 0x00A9, 0x000F, 0x00B8, 0x000F, 0x00C7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0222, 0x0001, 0x0000,\n    0x000F, 0x01F5, 0x000F, 0x0204, 0x000F, 0x0213,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000F, 0x015F,\n    0x000F, 0x00D6, 0x000F, 0x00E5, 0x000F, 0x00F4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x06055984\nstatic const struct Animation bowser_seg6_anim_06055984 = {\n    0,\n    0,\n    0,\n    0,\n    0x0F,\n    ANIMINDEX_NUMPARTS(bowser_seg6_animindex_06055768),\n    bowser_seg6_animvalue_06055228,\n    bowser_seg6_animindex_06055768,\n    0,\n};\n"
  },
  {
    "path": "actors/bowser/anims/anim_06056774.inc.c",
    "content": "// 0x0605599C\nstatic const s16 bowser_seg6_animvalue_0605599C[] = {\n    0x0000, 0x005B, 0x005B, 0x005B, 0x005B, 0x005C, 0x005C, 0x005C,\n    0x005C, 0x005C, 0x005C, 0x005C, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005E, 0x005E, 0x005E, 0x005E, 0x005E,\n    0x005E, 0x005E, 0x005F, 0x005F, 0x005F, 0x005F, 0x005F, 0x005F,\n    0x005F, 0x005F, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060, 0x0060,\n    0x0060, 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0xFFE7, 0x0B2B,\n    0x05B8, 0xFD7F, 0xF34A, 0xE7E4, 0xDC17, 0xD0AE, 0xC674, 0xBD8F,\n    0xB4E3, 0xAC65, 0xA415, 0x9BF4, 0x9404, 0x8C45, 0x84BA, 0x7D5F,\n    0x763C, 0x6F4F, 0x6899, 0x621C, 0x5BD9, 0x55D1, 0x5004, 0x4A75,\n    0x4523, 0x4011, 0x3B40, 0x36B0, 0x3264, 0x2E5B, 0x2A97, 0x271A,\n    0x23E4, 0x20F6, 0x1E52, 0x1BF9, 0x19ED, 0x182D, 0x16BC, 0x159A,\n    0x14C8, 0x1449, 0x141C, 0x1443, 0x32C6, 0xC001, 0x32C6, 0x0000,\n    0x0000, 0x0003, 0x000D, 0x001D, 0x0034, 0x004F, 0x0070, 0x0094,\n    0x00BE, 0x00EA, 0x011A, 0x014D, 0x0182, 0x01B9, 0x01F2, 0x022C,\n    0x0269, 0x02AC, 0x02F5, 0x0342, 0x0394, 0x03E9, 0x0441, 0x049B,\n    0x04F6, 0x0553, 0x05B0, 0x060D, 0x0669, 0x06C4, 0x071C, 0x0772,\n    0x07C5, 0x0813, 0x085D, 0x08A2, 0x08E1, 0x091A, 0x094C, 0x0976,\n    0x0997, 0x09B0, 0x09C0, 0x09C5, 0x09C7, 0x09C7, 0x09C9, 0x09CE,\n    0x09D6, 0x09DF, 0x09E8, 0x09EF, 0x09F5, 0x09F7, 0x09F4, 0x09EC,\n    0x09DC, 0x09C5, 0x09A4, 0x0979, 0x0943, 0x0902, 0x08B7, 0x0863,\n    0x0809, 0x07A7, 0x0740, 0x06D3, 0x0663, 0x05EF, 0x0579, 0x0502,\n    0x048A, 0x0413, 0x039D, 0x0329, 0x02B8, 0x024B, 0x01E3, 0x0181,\n    0x0125, 0x00D1, 0x0085, 0x0042, 0x0009, 0xFFDD, 0xFFBB, 0xFFA6,\n    0xFF9F, 0xA4A0, 0xA4A0, 0xA4A7, 0xA4BD, 0xA4E3, 0xA51C, 0xA568,\n    0xA5CA, 0xA644, 0xA6D7, 0xA785, 0xA84F, 0xA937, 0xAA40, 0xAB6B,\n    0xACB8, 0xAE2B, 0xAFCC, 0xB19D, 0xB39B, 0xB5C1, 0xB808, 0xBA6E,\n    0xBCEC, 0xBF7F, 0xC220, 0xC4CC, 0xC77E, 0xCA30, 0xCCDD, 0xCF82,\n    0xD219, 0xD49D, 0xD709, 0xD959, 0xDB87, 0xDD90, 0xDF6D, 0xE11A,\n    0xE293, 0xE3D2, 0xE4D3, 0xE590, 0xE605, 0xE62D, 0xF0C0, 0xFD65,\n    0x0B80, 0x0C45, 0x09DE, 0x05F9, 0x0244, 0xFE87, 0xFA05, 0xF5AA,\n    0xF25D, 0xF10B, 0xF1B7, 0xF38A, 0xF626, 0xF92A, 0xFC36, 0xFEED,\n    0x00EC, 0x01D6, 0x01DB, 0x01DB, 0x01DB, 0x01DB, 0x01DB, 0x01DB,\n    0x01DB, 0x01DB, 0x01DB, 0x01DB, 0x01DB, 0x01DB, 0x01DB, 0x01DB,\n    0x01DB, 0x01DB, 0x01DB, 0x01DB, 0x01DB, 0x01DB, 0x01DB, 0x01DB,\n    0x01DB, 0x01DB, 0x01DB, 0x0254, 0x0254, 0x0254, 0x0254, 0x0254,\n    0x0254, 0x0254, 0x0254, 0x0254, 0x0254, 0x0254, 0x0254, 0x0254,\n    0x0254, 0x0254, 0x0254, 0x0254, 0x0254, 0x0254, 0x0254, 0x0254,\n    0x0254, 0x0254, 0x0254, 0x0254, 0x0254, 0x0254, 0x0254, 0x0254,\n    0x0254, 0x0254, 0x0254, 0x0254, 0x0254, 0x0254, 0x0254, 0x0254,\n    0x0254, 0x0254, 0x0254, 0x0254, 0x0254, 0x0254, 0x0254, 0x0254,\n    0x053E, 0x053E, 0x0546, 0x055A, 0x0573, 0x058D, 0x05A1, 0x05A9,\n    0x059F, 0x057D, 0x053E, 0x04A9, 0x03B0, 0x028C, 0x0175, 0x00A4,\n    0x0052, 0x0057, 0x0064, 0x007A, 0x0098, 0x00BC, 0x00E7, 0x0117,\n    0x014C, 0x0185, 0x01C1, 0x0200, 0x0242, 0x0284, 0x02C8, 0x030B,\n    0x034E, 0x038F, 0x03CF, 0x040B, 0x0444, 0x0479, 0x04A9, 0x04D4,\n    0x04F8, 0x0516, 0x052C, 0x0539, 0x053E, 0xF8D6, 0xF8D6, 0xF8EC,\n    0xF923, 0xF96B, 0xF9B2, 0xF9EA, 0xFA00, 0xF9E4, 0xF986, 0xF8D6,\n    0xF736, 0xF47F, 0xF14E, 0xEE43, 0xEBFC, 0xEB16, 0xEB23, 0xEB49,\n    0xEB87, 0xEBD9, 0xEC3F, 0xECB6, 0xED3C, 0xEDD0, 0xEE6F, 0xEF18,\n    0xEFC9, 0xF07F, 0xF13A, 0xF1F6, 0xF2B2, 0xF36C, 0xF423, 0xF4D4,\n    0xF57D, 0xF61C, 0xF6B0, 0xF736, 0xF7AD, 0xF813, 0xF865, 0xF8A2,\n    0xF8C8, 0xF8D6, 0x2214, 0x235A, 0x26A6, 0x2B30, 0x302F, 0x34DB,\n    0x386A, 0x3A14, 0x3A1E, 0x3A1E, 0x3A1E, 0x3A1E, 0x3A1E, 0x3A1E,\n    0x3A1E, 0x3A1E, 0x3A1E, 0x3A1E, 0x3A1E, 0x3A1E, 0x3A1E, 0x3A1E,\n    0x3A1E, 0x3A1E, 0x3A1E, 0x3A1E, 0x3A1E, 0x3A1E, 0x3A1E, 0x3A1E,\n    0x3A1E, 0x3A1E, 0x3A1E, 0x3A1E, 0x3A1E, 0x3A1E, 0x3A1E, 0x3A1E,\n    0x3A1E, 0x3A1E, 0x3A1E, 0x3A1E, 0x3A1E, 0x3A1E, 0x3A1E, 0xDB55,\n    0xDB55, 0xDB54, 0xDB4F, 0xDB4A, 0xDB44, 0xDB40, 0xDB3E, 0xDB41,\n    0xDB48, 0xDB55, 0xDB76, 0xDBAB, 0xDBEA, 0xDC27, 0xDC54, 0xDC65,\n    0xDC64, 0xDC61, 0xDC5D, 0xDC56, 0xDC4F, 0xDC45, 0xDC3B, 0xDC30,\n    0xDC23, 0xDC16, 0xDC08, 0xDBFA, 0xDBEC, 0xDBDD, 0xDBCF, 0xDBC1,\n    0xDBB2, 0xDBA5, 0xDB98, 0xDB8B, 0xDB80, 0xDB76, 0xDB6C, 0xDB65,\n    0xDB5E, 0xDB59, 0xDB56, 0xDB55, 0x0000, 0x0000, 0x0008, 0x001C,\n    0x0036, 0x0051, 0x0065, 0x006D, 0x0063, 0x0040, 0x0000, 0xFF68,\n    0xFE68, 0xFD3C, 0xFC1E, 0xFB47, 0xFAF3, 0xFAF8, 0xFB06, 0xFB1C,\n    0xFB3A, 0xFB60, 0xFB8B, 0xFBBD, 0xFBF3, 0xFC2E, 0xFC6C, 0xFCAD,\n    0xFCF0, 0xFD34, 0xFD7A, 0xFDBF, 0xFE03, 0xFE46, 0xFE87, 0xFEC5,\n    0xFF00, 0xFF36, 0xFF68, 0xFF93, 0xFFB9, 0xFFD7, 0xFFEE, 0xFFFC,\n    0x0000, 0xF34B, 0xF34B, 0xF360, 0xF393, 0xF3D5, 0xF417, 0xF44A,\n    0xF45E, 0xF445, 0xF3EE, 0xF34B, 0xF1CC, 0xEF4B, 0xEC5A, 0xE98B,\n    0xE771, 0xE69D, 0xE6A9, 0xE6CC, 0xE705, 0xE751, 0xE7AF, 0xE81C,\n    0xE898, 0xE921, 0xE9B4, 0xEA50, 0xEAF3, 0xEB9B, 0xEC47, 0xECF4,\n    0xEDA2, 0xEE4E, 0xEEF6, 0xEF99, 0xF035, 0xF0C8, 0xF150, 0xF1CC,\n    0xF23A, 0xF298, 0xF2E4, 0xF31C, 0xF33F, 0xF34B, 0xA509, 0xA509,\n    0xA52E, 0xA59A, 0xA642, 0xA71E, 0xA824, 0xA94C, 0xAA8C, 0xABDC,\n    0xAD33, 0xAE87, 0xAFCF, 0xB102, 0xB219, 0xB308, 0xB3C8, 0xB46E,\n    0xB515, 0xB5BC, 0xB664, 0xB70C, 0xB7B2, 0xB858, 0xB8FB, 0xB99B,\n    0xBA39, 0xBAD2, 0xBB68, 0xBBF8, 0xBC84, 0xBD09, 0xBD88, 0xBE00,\n    0xBE71, 0xBED9, 0xBF39, 0xBF8F, 0xBFDC, 0xC01F, 0xC056, 0xC082,\n    0xC0A3, 0xC0B6, 0xC0BD, 0x8001, 0x8001, 0x7FBC, 0x7F04, 0x7DE8,\n    0x7C7E, 0x7AD8, 0x790C, 0x772D, 0x754F, 0x7386, 0x71E6, 0x7083,\n    0x6F71, 0x6EC4, 0x6E8F, 0x6EE8, 0x6FAD, 0x70AE, 0x71E4, 0x734C,\n    0x74E1, 0x769C, 0x787A, 0x7A75, 0x7C88, 0x7EAF, 0x80E6, 0x8324,\n    0x8566, 0x87A7, 0x89E2, 0x8C12, 0x8E32, 0x903D, 0x922E, 0x9400,\n    0x95AE, 0x9733, 0x988A, 0x99AE, 0x9A9A, 0x9B48, 0x9BB5, 0x9BDA,\n    0x8001, 0x8001, 0x805A, 0x8154, 0x82D8, 0x84CB, 0x8718, 0x89A4,\n    0x8C58, 0x8F1B, 0x91D5, 0x946E, 0x96CD, 0x98DA, 0x9A7D, 0x9B9D,\n    0x9C22, 0x9C3B, 0x9C29, 0x9BEF, 0x9B90, 0x9B10, 0x9A71, 0x99B7,\n    0x98E5, 0x97FF, 0x9707, 0x9600, 0x94EE, 0x93D4, 0x92B5, 0x9195,\n    0x9075, 0x8F5B, 0x8E49, 0x8D41, 0x8C48, 0x8B60, 0x8A8D, 0x89D1,\n    0x8930, 0x88AE, 0x884D, 0x8810, 0x87FB, 0xD20B, 0xD20B, 0xD1B2,\n    0xD0B6, 0xCF31, 0xCD3D, 0xCAF3, 0xC86D, 0xC5C4, 0xC311, 0xC06E,\n    0xBDF5, 0xBBBE, 0xB9E4, 0xB87F, 0xB7AA, 0xB77D, 0xB7CA, 0xB850,\n    0xB90A, 0xB9F4, 0xBB08, 0xBC43, 0xBDA0, 0xBF1B, 0xC0AF, 0xC257,\n    0xC410, 0xC5D5, 0xC7A0, 0xC96F, 0xCB3B, 0xCD02, 0xCEBE, 0xD06B,\n    0xD204, 0xD385, 0xD4EA, 0xD62D, 0xD74B, 0xD83F, 0xD905, 0xD997,\n    0xD9F3, 0xDA12, 0xE0D4, 0xE0D4, 0xE11E, 0xE1DF, 0xE2EE, 0xE421,\n    0xE550, 0xE64F, 0xE6F7, 0xE71C, 0xE696, 0xE493, 0xE0EB, 0xDC72,\n    0xD7FE, 0xD464, 0xD278, 0xD1B3, 0xD0FC, 0xD053, 0xCFB7, 0xCF28,\n    0xCEA6, 0xCE2F, 0xCDC4, 0xCD63, 0xCD0C, 0xCCBF, 0xCC7B, 0xCC40,\n    0xCC0C, 0xCBE0, 0xCBBA, 0xCB9B, 0xCB81, 0xCB6D, 0xCB5C, 0xCB50,\n    0xCB48, 0xCB42, 0xCB3E, 0xCB3D, 0xCB3C, 0xCB3C, 0xCB3C, 0x0046,\n    0x0047, 0x0048, 0x0048, 0x0048, 0x0047, 0x0048, 0x0049, 0x0055,\n    0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055,\n    0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055,\n    0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055,\n    0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055,\n    0x0055, 0x0055, 0x0055, 0x0055, 0xFFC1, 0x0000, 0x0039, 0x0043,\n    0x0046, 0x0043, 0x003F, 0x003B, 0x0029, 0x0029, 0x0029, 0x0029,\n    0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029,\n    0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029,\n    0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029,\n    0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029,\n    0x0029, 0xAB1E, 0x8D3A, 0x719B, 0x6CAD, 0x6B9A, 0x6CFE, 0x6F75,\n    0x719A, 0x7B08, 0x7B08, 0x7B08, 0x7B08, 0x7B08, 0x7B08, 0x7B08,\n    0x7B08, 0x7B08, 0x7B08, 0x7B08, 0x7B08, 0x7B08, 0x7B08, 0x7B08,\n    0x7B08, 0x7B08, 0x7B08, 0x7B08, 0x7B08, 0x7B08, 0x7B08, 0x7B08,\n    0x7B08, 0x7B08, 0x7B08, 0x7B08, 0x7B08, 0x7B08, 0x7B08, 0x7B08,\n    0x7B08, 0x7B08, 0x7B08, 0x7B08, 0x7B08, 0x7B08, 0x0000, 0x0000,\n    0xFFFE, 0xFFF9, 0xFFF2, 0xFFEB, 0xFFE5, 0xFFE3, 0xFFE6, 0xFFEF,\n    0x0000, 0x0028, 0x006C, 0x00BC, 0x0109, 0x0142, 0x0158, 0x0157,\n    0x0153, 0x014D, 0x0145, 0x013B, 0x0130, 0x0122, 0x0114, 0x0104,\n    0x00F4, 0x00E2, 0x00D1, 0x00BE, 0x00AC, 0x0099, 0x0087, 0x0075,\n    0x0064, 0x0053, 0x0044, 0x0035, 0x0028, 0x001D, 0x0013, 0x000B,\n    0x0005, 0x0001, 0x0000, 0x0000, 0x0000, 0xFFE5, 0xFF9B, 0xFF2F,\n    0xFEAB, 0xFE1B, 0xFD8C, 0xFD09, 0xFC9E, 0xFC56, 0xFC3A, 0xFC43,\n    0xFC65, 0xFC94, 0xFCC4, 0xFCE9, 0xFD05, 0xFD24, 0xFD44, 0xFD65,\n    0xFD88, 0xFDAC, 0xFDD1, 0xFDF6, 0xFE1C, 0xFE41, 0xFE67, 0xFE8C,\n    0xFEB1, 0xFED5, 0xFEF8, 0xFF1A, 0xFF3A, 0xFF59, 0xFF76, 0xFF90,\n    0xFFA9, 0xFFBF, 0xFFD2, 0xFFE2, 0xFFEF, 0xFFF9, 0xFFFE, 0x0000,\n    0xE6F1, 0xE6F1, 0xE75C, 0xE878, 0xEA0F, 0xEBEA, 0xEDD2, 0xEF90,\n    0xF0EE, 0xF1B4, 0xF1AC, 0xF00E, 0xECC2, 0xE897, 0xE45E, 0xE0E5,\n    0xDEFD, 0xDE29, 0xDD5F, 0xDC9F, 0xDBE9, 0xDB3E, 0xDA9C, 0xDA03,\n    0xD974, 0xD8EE, 0xD871, 0xD7FD, 0xD791, 0xD72D, 0xD6D1, 0xD67D,\n    0xD631, 0xD5EB, 0xD5AE, 0xD576, 0xD546, 0xD51C, 0xD4F9, 0xD4DB,\n    0xD4C4, 0xD4B2, 0xD4A5, 0xD49E, 0xD49B, 0xCC31, 0xCC31, 0xCC5D,\n    0xCCDA, 0xCD9D, 0xCE98, 0xCFC2, 0xD10D, 0xD270, 0xD3DD, 0xD549,\n    0xD6A9, 0xD7F1, 0xD915, 0xDA09, 0xDAC3, 0xDB36, 0xDB7A, 0xDBAF,\n    0xDBD7, 0xDBF3, 0xDC02, 0xDC07, 0xDC02, 0xDBF4, 0xDBDE, 0xDBC1,\n    0xDB9D, 0xDB74, 0xDB46, 0xDB15, 0xDAE1, 0xDAAB, 0xDA75, 0xDA3E,\n    0xDA08, 0xD9D4, 0xD9A3, 0xD976, 0xD94D, 0xD929, 0xD90C, 0xD8F6,\n    0xD8E8, 0xD8E3, 0xF52D, 0xF52D, 0xF54C, 0xF5A4, 0xF62D, 0xF6DF,\n    0xF7B4, 0xF8A3, 0xF9A5, 0xFAB2, 0xFBC2, 0xFCCE, 0xFDCE, 0xFEBB,\n    0xFF8C, 0x003A, 0x00BE, 0x0129, 0x0192, 0x01F8, 0x025B, 0x02BB,\n    0x0319, 0x0373, 0x03CA, 0x041E, 0x046F, 0x04BC, 0x0505, 0x054B,\n    0x058D, 0x05CB, 0x0606, 0x063C, 0x066E, 0x069B, 0x06C5, 0x06E9,\n    0x070A, 0x0725, 0x073C, 0x074E, 0x075B, 0x0763, 0x0765, 0x4467,\n    0x4467, 0x43CD, 0x4219, 0x3F79, 0x3C18, 0x3820, 0x33BD, 0x2F1B,\n    0x2A65, 0x25C7, 0x216B, 0x1D7E, 0x1A2B, 0x179C, 0x15FE, 0x157D,\n    0x15C7, 0x166B, 0x1761, 0x18A4, 0x1A2C, 0x1BF1, 0x1DEE, 0x201A,\n    0x2270, 0x24E7, 0x277A, 0x2A20, 0x2CD4, 0x2F8D, 0x3246, 0x34F7,\n    0x3798, 0x3A24, 0x3C93, 0x3EDE, 0x40FE, 0x42EC, 0x44A2, 0x4617,\n    0x4746, 0x4827, 0x48B3, 0x48E3, 0xDED1, 0x1FF4, 0x8256, 0x1898,\n    0x1898, 0x1823, 0x16EE, 0x1537, 0x133D, 0x113F, 0x0F7B, 0x0E2F,\n    0x0D9A, 0x0DFB, 0x0EFF, 0x1028, 0x1173, 0x12DD, 0x1465, 0x1606,\n    0x17BE, 0x198B, 0x1B69, 0x1D56, 0x1F4F, 0x2152, 0x235C, 0x2569,\n    0x2778, 0x2985, 0x2B8D, 0x2D8F, 0x2F87, 0x3172, 0x334E, 0x3517,\n    0x36CC, 0x386A, 0x39ED, 0x3B53, 0x3C99, 0x3DBD, 0x3EBB, 0x3F91,\n    0x403C, 0x40BA, 0x4108, 0x4122, 0xE3FB, 0xE3FB, 0xE31E, 0xE0CD,\n    0xDD6E, 0xD969, 0xD525, 0xD109, 0xCD7C, 0xCAE6, 0xC9AD, 0xC951,\n    0xC90C, 0xC8DC, 0xC8C1, 0xC8B8, 0xC8C2, 0xC8DC, 0xC905, 0xC93C,\n    0xC980, 0xC9D0, 0xCA2B, 0xCA8E, 0xCAF9, 0xCB6C, 0xCBE3, 0xCC5F,\n    0xCCDE, 0xCD5F, 0xCDE1, 0xCE61, 0xCEE0, 0xCF5C, 0xCFD4, 0xD046,\n    0xD0B1, 0xD114, 0xD16E, 0xD1BD, 0xD201, 0xD238, 0xD261, 0xD27A,\n    0xD283, 0xA0A7, 0xA0A7, 0xA100, 0xA1E9, 0xA32F, 0xA4A1, 0xA60D,\n    0xA73F, 0xA806, 0xA82F, 0xA788, 0xA656, 0xA4FE, 0xA384, 0xA1EB,\n    0xA035, 0x9E66, 0x9C81, 0x9A87, 0x987D, 0x9664, 0x9440, 0x9213,\n    0x8FE1, 0x8DAC, 0x8B77, 0x8944, 0x8717, 0x84F3, 0x82DA, 0x80CF,\n    0x7ED2, 0x7CEC, 0x7B1C, 0x7966, 0x77CC, 0x7652, 0x74F9, 0x73C5,\n    0x72B9, 0x71D7, 0x7122, 0x709D, 0x704C, 0x7030, 0xE925, 0xE925,\n    0xE865, 0xE661, 0xE374, 0xDFF9, 0xDC4B, 0xD8C5, 0xD5C2, 0xD39D,\n    0xD2B0, 0xD28A, 0xD27C, 0xD283, 0xD29E, 0xD2CD, 0xD30D, 0xD35E,\n    0xD3BE, 0xD42C, 0xD4A5, 0xD52A, 0xD5B9, 0xD64F, 0xD6ED, 0xD790,\n    0xD837, 0xD8E2, 0xD98D, 0xDA39, 0xDAE3, 0xDB8B, 0xDC2F, 0xDCCE,\n    0xDD66, 0xDDF6, 0xDE7C, 0xDEF8, 0xDF67, 0xDFCA, 0xE01D, 0xE060,\n    0xE092, 0xE0B1, 0xE0BB, 0x178C, 0x178C, 0x1846, 0x1A39, 0x1D0D,\n    0x206B, 0x23FA, 0x2762, 0x2A4B, 0x2C5D, 0x2D40, 0x2D62, 0x2D6E,\n    0x2D64, 0x2D46, 0x2D16, 0x2CD5, 0x2C83, 0x2C23, 0x2BB5, 0x2B3C,\n    0x2AB8, 0x2A2A, 0x2995, 0x28F9, 0x2857, 0x27B2, 0x270A, 0x2660,\n    0x25B6, 0x250E, 0x2469, 0x23C7, 0x232B, 0x2295, 0x2207, 0x2183,\n    0x2109, 0x209B, 0x203A, 0x1FE8, 0x1FA6, 0x1F75, 0x1F57, 0x1F4C,\n    0x9EEA, 0x9EEA, 0x9E3D, 0x9C6A, 0x99C0, 0x968D, 0x9320, 0x8FC6,\n    0x8CCD, 0x8A85, 0x893B, 0x888F, 0x87ED, 0x8755, 0x86C6, 0x863F,\n    0x85C1, 0x854C, 0x84DF, 0x8479, 0x841B, 0x83C4, 0x8374, 0x832A,\n    0x82E7, 0x82AA, 0x8273, 0x8241, 0x8215, 0x81ED, 0x81CA, 0x81AB,\n    0x8191, 0x817A, 0x8167, 0x8156, 0x8149, 0x813F, 0x8136, 0x8130,\n    0x812C, 0x8129, 0x8127, 0x8126, 0x8126, 0x05F6, 0xEAE4, 0xA38A,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n};\n\n// 0x06056558\nstatic const u16 bowser_seg6_animindex_06056558[] = {\n    0x0001, 0x0000, 0x002D, 0x0001, 0x0001, 0x002E, 0x002D, 0x002F, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x05DD, 0x0001, 0x0000,\n    0x0001, 0x04C4, 0x0001, 0x04C5, 0x0001, 0x04C6,\n    0x002D, 0x027B, 0x002D, 0x02A8, 0x002D, 0x02D5,\n    0x002D, 0x005F, 0x002D, 0x008C, 0x002D, 0x00B9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x05DC, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002D, 0x00E6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x05DB, 0x0001, 0x0000,\n    0x002D, 0x04C7, 0x002D, 0x04F4, 0x002D, 0x0521,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002D, 0x0302,\n    0x002D, 0x0113, 0x002D, 0x0140, 0x002D, 0x016D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x05DA, 0x0001, 0x0000,\n    0x002D, 0x032F, 0x002D, 0x035C, 0x002D, 0x0389,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002D, 0x019A,\n    0x0001, 0x005C, 0x0001, 0x005D, 0x0001, 0x005E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x05D9, 0x0001, 0x0000,\n    0x002D, 0x054E, 0x002D, 0x057B, 0x002D, 0x05A8,\n    0x002D, 0x03B6, 0x002D, 0x03E3, 0x002D, 0x0410,\n    0x002D, 0x01C7, 0x002D, 0x01F4, 0x002D, 0x0221,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x05D8, 0x0001, 0x0000,\n    0x0001, 0x05D5, 0x0001, 0x05D6, 0x0001, 0x05D7,\n    0x002D, 0x043D, 0x002D, 0x046A, 0x002D, 0x0497,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002D, 0x024E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x06056774\nstatic const struct Animation bowser_seg6_anim_06056774 = {\n    0,\n    0,\n    0,\n    0,\n    0x2D,\n    ANIMINDEX_NUMPARTS(bowser_seg6_animindex_06056558),\n    bowser_seg6_animvalue_0605599C,\n    bowser_seg6_animindex_06056558,\n    0,\n};\n"
  },
  {
    "path": "actors/bowser/anims/anim_06057678.inc.c",
    "content": "// 0x0605678C\nstatic const s16 bowser_seg6_animvalue_0605678C[] = {\n    0x0000, 0x0061, 0x0061, 0x0061, 0x0060, 0x0060, 0x005F, 0x005F,\n    0x005E, 0x005D, 0x005C, 0x005C, 0x005B, 0x005A, 0x005A, 0x0059,\n    0x0059, 0x0059, 0x0059, 0x005A, 0x005A, 0x005B, 0x005C, 0x005E,\n    0x0060, 0x0064, 0x006A, 0x0071, 0x0078, 0x007F, 0x0086, 0x008D,\n    0x0093, 0x0096, 0x0096, 0x0096, 0x0095, 0x0095, 0x0095, 0x0095,\n    0x0096, 0x0097, 0x0098, 0x0098, 0x0098, 0xFFE7, 0x1443, 0x143B,\n    0x1422, 0x13FA, 0x13C6, 0x1385, 0x133B, 0x12E7, 0x128D, 0x122D,\n    0x11C9, 0x1163, 0x10FB, 0x1094, 0x102F, 0x0FCE, 0x0F71, 0x0F1C,\n    0x0ECE, 0x0E89, 0x0E50, 0x0E24, 0x0E06, 0x0E17, 0x0E6C, 0x0EF0,\n    0x0F8F, 0x1035, 0x10CE, 0x1146, 0x1189, 0x1182, 0x10F2, 0x0FBB,\n    0x0E04, 0x0BF2, 0x09AA, 0x0755, 0x0516, 0x0315, 0x0178, 0x0064,\n    0x0000, 0x0000, 0x32C6, 0xC001, 0x32C6, 0x09C5, 0x09BA, 0x099A,\n    0x0968, 0x0923, 0x08CF, 0x086D, 0x07FF, 0x0785, 0x0702, 0x0678,\n    0x05E7, 0x0553, 0x04BB, 0x0423, 0x038B, 0x02F6, 0x0264, 0x01D8,\n    0x0153, 0x00D7, 0x0065, 0x0000, 0xFFAD, 0xFF6D, 0xFF3F, 0xFF21,\n    0xFF0E, 0xFF05, 0xFF03, 0xFF07, 0xFF13, 0xFF25, 0xFF3C, 0xFF56,\n    0xFF73, 0xFF90, 0xFFAD, 0xFFC7, 0xFFDE, 0xFFF0, 0xFFFC, 0x0000,\n    0x0000, 0xFF9F, 0xFFAD, 0xFFD4, 0x0012, 0x0065, 0x00CB, 0x0142,\n    0x01C6, 0x0256, 0x02EF, 0x038F, 0x0433, 0x04D9, 0x057F, 0x0623,\n    0x06C1, 0x0759, 0x07E6, 0x0868, 0x08DB, 0x093D, 0x098D, 0x09C7,\n    0x09B3, 0x0931, 0x0863, 0x076B, 0x066C, 0x0588, 0x04E1, 0x0461,\n    0x03DE, 0x035A, 0x02D7, 0x0258, 0x01DE, 0x016E, 0x0108, 0x00AF,\n    0x0066, 0x002F, 0x000C, 0x0000, 0x0000, 0xE62D, 0xE5E4, 0xE512,\n    0xE3BF, 0xE1F9, 0xDFC9, 0xDD3A, 0xDA58, 0xD72C, 0xD3C2, 0xD026,\n    0xCC60, 0xC87E, 0xC488, 0xC08B, 0xBC91, 0xB8A5, 0xB4D1, 0xB122,\n    0xADA0, 0xAA58, 0xA755, 0xA4A0, 0xA251, 0xA071, 0x9EFA, 0x9DE3,\n    0x9D26, 0x9CBC, 0x9C9E, 0x9CC7, 0x9D2F, 0x9DCB, 0x9E8F, 0x9F6F,\n    0xA060, 0xA157, 0xA248, 0xA327, 0xA3E8, 0xA481, 0xA4E5, 0xA509,\n    0xA509, 0x01DB, 0xFF1C, 0xF848, 0xEF86, 0xE6F9, 0xE0C7, 0xDE43,\n    0xDCA3, 0xDB5F, 0xDA6F, 0xD9C8, 0xD95F, 0xD929, 0xD91D, 0xD92F,\n    0xD956, 0xD987, 0xD9B7, 0xD9DD, 0xD9ED, 0xD9E0, 0xD9C7, 0xD9A9,\n    0xD98B, 0xD974, 0xD969, 0xD970, 0xD98F, 0xD9CB, 0xDA2B, 0xDAB9,\n    0xDB74, 0xDC54, 0xDD4F, 0xDE59, 0xDF6A, 0xE077, 0xE176, 0xE25D,\n    0xE322, 0xE3BC, 0xE41F, 0xE442, 0xE442, 0x0254, 0x0246, 0x021E,\n    0x01E1, 0x0192, 0x0136, 0x00D0, 0x0065, 0xFFF9, 0xFF8F, 0xFF2C,\n    0xFED4, 0xFE8B, 0xFE54, 0xFE34, 0xFE30, 0xFE4A, 0xFE87, 0xFEEC,\n    0xFF7B, 0x0039, 0x012B, 0x0254, 0x0505, 0x09FC, 0x1060, 0x1759,\n    0x1E0D, 0x23A4, 0x2745, 0x2583, 0x1F3A, 0x19FF, 0x1708, 0x13E6,\n    0x10B5, 0x0D93, 0x0A9C, 0x07EE, 0x05A6, 0x03E1, 0x02BC, 0x0254,\n    0x0254, 0x053E, 0x0548, 0x0564, 0x058E, 0x05C6, 0x0606, 0x064D,\n    0x0698, 0x06E4, 0x072E, 0x0773, 0x07B1, 0x07E4, 0x080B, 0x0821,\n    0x0824, 0x0812, 0x07E7, 0x07A1, 0x073C, 0x06B7, 0x060E, 0x053E,\n    0x0355, 0xFFCC, 0xFB40, 0xF651, 0xF19E, 0xEDC7, 0xEB68, 0xED57,\n    0xF2CD, 0xF702, 0xF904, 0xFB09, 0xFD01, 0xFEE2, 0x009C, 0x0223,\n    0x036B, 0x0466, 0x0506, 0x053E, 0x053E, 0xF8D6, 0xF8DD, 0xF8F3,\n    0xF914, 0xF93E, 0xF970, 0xF9A7, 0xF9E1, 0xFA1B, 0xFA55, 0xFA8A,\n    0xFABA, 0xFAE1, 0xFAFF, 0xFB10, 0xFB12, 0xFB04, 0xFAE3, 0xFAAD,\n    0xFA5F, 0xF9F9, 0xF976, 0xF8D6, 0xF73C, 0xF437, 0xF060, 0xEC52,\n    0xE8A7, 0xE5FA, 0xE4E5, 0xE97A, 0xF25C, 0xF804, 0xF948, 0xFA11,\n    0xFA73, 0xFA83, 0xFA58, 0xFA05, 0xF9A0, 0xF93D, 0xF8F3, 0xF8D6,\n    0xF8D6, 0x3A1E, 0x39FE, 0x39A4, 0x3913, 0x3851, 0x3764, 0x3652,\n    0x351E, 0x33D0, 0x326B, 0x30F7, 0x2F77, 0x2DF1, 0x2C6B, 0x2AE9,\n    0x2972, 0x280B, 0x26B9, 0x2581, 0x2469, 0x2376, 0x22AD, 0x2214,\n    0x2384, 0x2756, 0x2B4F, 0x2D35, 0x2D38, 0x2D06, 0x2CA6, 0x2C20,\n    0x2B7C, 0x2ABF, 0x29F2, 0x291C, 0x2844, 0x2771, 0x26AB, 0x25F9,\n    0x2561, 0x24EC, 0x24A1, 0x2486, 0x2486, 0xDB55, 0xDB57, 0xDB5D,\n    0xDB65, 0xDB6F, 0xDB7C, 0xDB89, 0xDB98, 0xDBA6, 0xDBB5, 0xDBC2,\n    0xDBCE, 0xDBD8, 0xDBDF, 0xDBE3, 0xDBE4, 0xDBE0, 0xDBD8, 0xDBCB,\n    0xDBB7, 0xDB9E, 0xDB7D, 0xDB55, 0xDAE1, 0xD9FF, 0xD8E4, 0xD7C5,\n    0xD6D7, 0xD64F, 0xD661, 0xD8ED, 0xDD42, 0xDFC3, 0xDFF2, 0xDFCA,\n    0xDF5E, 0xDEC0, 0xDE06, 0xDD42, 0xDC88, 0xDBEB, 0xDB7E, 0xDB55,\n    0xDB55, 0x0000, 0xFFFA, 0xFFE8, 0xFFCD, 0xFFA9, 0xFF80, 0xFF52,\n    0xFF22, 0xFEF2, 0xFEC2, 0xFE96, 0xFE6E, 0xFE4D, 0xFE35, 0xFE27,\n    0xFE24, 0xFE30, 0xFE4C, 0xFE79, 0xFEB9, 0xFF0F, 0xFF7B, 0x0000,\n    0x013C, 0x0386, 0x0676, 0x09A5, 0x0CA9, 0x0F1B, 0x1093, 0x0F1E,\n    0x0B4A, 0x086C, 0x0727, 0x05EA, 0x04BA, 0x039F, 0x029E, 0x01BD,\n    0x0104, 0x0077, 0x001F, 0x0000, 0x0000, 0xF34B, 0xF354, 0xF36E,\n    0xF394, 0xF3C6, 0xF401, 0xF441, 0xF485, 0xF4CA, 0xF50D, 0xF54B,\n    0xF583, 0xF5B2, 0xF5D4, 0xF5E8, 0xF5EB, 0xF5DB, 0xF5B4, 0xF574,\n    0xF519, 0xF4A1, 0xF408, 0xF34B, 0xF182, 0xEE2D, 0xE9EA, 0xE557,\n    0xE112, 0xDDB9, 0xDBE9, 0xDF0A, 0xE611, 0xEAF3, 0xECA4, 0xEE1F,\n    0xEF65, 0xF07A, 0xF15F, 0xF216, 0xF2A0, 0xF301, 0xF339, 0xF34B,\n    0xF34B, 0xC0BD, 0xC0A3, 0xC056, 0xBFDB, 0xBF34, 0xBE64, 0xBD70,\n    0xBC59, 0xBB25, 0xB9D5, 0xB86D, 0xB6F1, 0xB564, 0xB3C9, 0xB224,\n    0xB077, 0xAEC6, 0xAD15, 0xAB66, 0xA9BD, 0xA81E, 0xA68B, 0xA509,\n    0xA32B, 0xA0B6, 0x9DF7, 0x9B38, 0x98C6, 0x96EC, 0x95F6, 0x9856,\n    0x9D69, 0xA0D7, 0xA1E6, 0xA2C3, 0xA373, 0xA3FC, 0xA463, 0xA4AC,\n    0xA4DC, 0xA4F8, 0xA505, 0xA509, 0xA509, 0x9BDA, 0x9BB7, 0x9B52,\n    0x9AB2, 0x99DB, 0x98D3, 0x97A0, 0x9649, 0x94D2, 0x9341, 0x919C,\n    0x8FEA, 0x8E2E, 0x8C71, 0x8AB6, 0x8904, 0x8761, 0x85D2, 0x845D,\n    0x8308, 0x81D9, 0x80D5, 0x8001, 0x7FD9, 0x80A5, 0x8206, 0x83AD,\n    0x8543, 0x8675, 0x86EE, 0x86D0, 0x867D, 0x85FF, 0x855E, 0x84A5,\n    0x83DE, 0x8312, 0x824B, 0x8192, 0x80F1, 0x8072, 0x801F, 0x8001,\n    0x8001, 0x87FB, 0x87F2, 0x87D8, 0x87AD, 0x8774, 0x872E, 0x86DC,\n    0x8680, 0x861A, 0x85AE, 0x853B, 0x84C3, 0x8449, 0x83CC, 0x834F,\n    0x82D3, 0x825A, 0x81E4, 0x8173, 0x8109, 0x80A7, 0x804F, 0x8001,\n    0x7FC8, 0x7FAE, 0x7FAA, 0x7FB4, 0x7FC5, 0x7FD4, 0x7FDB, 0x7FDC,\n    0x7FDD, 0x7FE0, 0x7FE3, 0x7FE7, 0x7FEB, 0x7FEF, 0x7FF3, 0x7FF7,\n    0x7FFA, 0x7FFC, 0x7FFE, 0x8001, 0x8001, 0xDA12, 0xDA0D, 0xD9FE,\n    0xD9E4, 0xD9C1, 0xD994, 0xD95F, 0xD920, 0xD8D9, 0xD88A, 0xD832,\n    0xD7D3, 0xD76C, 0xD6FE, 0xD689, 0xD60E, 0xD58C, 0xD504, 0xD477,\n    0xD3E3, 0xD34B, 0xD2AD, 0xD20B, 0xD11B, 0xCFB2, 0xCDFA, 0xCC1F,\n    0xCA4D, 0xC8AF, 0xC771, 0xC66F, 0xC56B, 0xC468, 0xC36A, 0xC276,\n    0xC190, 0xC0BC, 0xBFFD, 0xBF58, 0xBED0, 0xBE6B, 0xBE2B, 0xBE14,\n    0xBE14, 0xCB3C, 0xCB54, 0xCB98, 0xCC06, 0xCC9A, 0xCD50, 0xCE25,\n    0xCF15, 0xD01E, 0xD13B, 0xD269, 0xD3A4, 0xD4EA, 0xD637, 0xD786,\n    0xD8D6, 0xDA21, 0xDB65, 0xDC9F, 0xDDCA, 0xDEE4, 0xDFE8, 0xE0D4,\n    0xE1CF, 0xE2F4, 0xE42B, 0xE55D, 0xE672, 0xE755, 0xE7EC, 0xE822,\n    0xE7DE, 0xE70A, 0xE54E, 0xE290, 0xDF18, 0xDB2E, 0xD71A, 0xD323,\n    0xCF90, 0xCCAB, 0xCAB9, 0xCA03, 0xCA03, 0x0055, 0x0055, 0x0056,\n    0x0056, 0x0058, 0x0059, 0x005A, 0x005C, 0x005D, 0x005F, 0x0061,\n    0x0062, 0x0063, 0x0064, 0x0065, 0x0065, 0x0065, 0x0065, 0x0064,\n    0x0062, 0x0060, 0x005D, 0x005A, 0x0051, 0x0040, 0x002B, 0x0013,\n    0xFFFD, 0xFFE9, 0xFFD9, 0xFFC8, 0xFFB9, 0xFFAD, 0xFFA6, 0xFFA1,\n    0xFF9F, 0xFF9E, 0xFF9E, 0xFF9F, 0xFFA0, 0xFFA1, 0xFFA2, 0xFFA2,\n    0xFFA2, 0x0029, 0x0023, 0x0013, 0xFFFC, 0xFFDD, 0xFFB8, 0xFF8F,\n    0xFF64, 0xFF39, 0xFF0E, 0xFEE5, 0xFEC0, 0xFEA0, 0xFE88, 0xFE78,\n    0xFE72, 0xFE78, 0xFE8A, 0xFEAC, 0xFEDE, 0xFF21, 0xFF78, 0xFFE4,\n    0x0156, 0x0431, 0x07A2, 0x0AD4, 0x0CF3, 0x0D2A, 0x0A22, 0x0450,\n    0xFD91, 0xF7C1, 0xF4BD, 0xF451, 0xF4DE, 0xF626, 0xF7E8, 0xF9E7,\n    0xFBE2, 0xFD9A, 0xFED1, 0xFF46, 0xFF46, 0x7B08, 0x7B2A, 0x7B8D,\n    0x7C2B, 0x7D00, 0x7E06, 0x7F38, 0x8095, 0x8210, 0x83A9, 0x8559,\n    0x871C, 0x88ED, 0x8AC6, 0x8CA2, 0x8E7D, 0x9051, 0x9218, 0x93CF,\n    0x9570, 0x96F5, 0x985A, 0x9999, 0x9A7B, 0x9AEC, 0x9B17, 0x9B29,\n    0x9B50, 0x9BB7, 0x9C8F, 0x9DB7, 0x9EE3, 0x9FC6, 0xA015, 0x9FD4,\n    0x9F4B, 0x9E8D, 0x9DB2, 0x9CCD, 0x9BF6, 0x9B42, 0x9AC6, 0x9A98,\n    0x9A98, 0xD49B, 0xD4AE, 0xD4E3, 0xD53A, 0xD5AF, 0xD63F, 0xD6E9,\n    0xD7A9, 0xD87E, 0xD964, 0xDA5A, 0xDB5C, 0xDC69, 0xDD7D, 0xDE97,\n    0xDFB3, 0xE0CF, 0xE1E9, 0xE2FE, 0xE40C, 0xE510, 0xE608, 0xE6F1,\n    0xE80A, 0xE97D, 0xEB24, 0xECDD, 0xEE83, 0xEFF1, 0xF104, 0xF197,\n    0xF186, 0xF0AE, 0xEEA6, 0xEB5A, 0xE725, 0xE25E, 0xDD5F, 0xD881,\n    0xD41D, 0xD08B, 0xCE26, 0xCD46, 0xCD46, 0xD8E3, 0xD8CB, 0xD885,\n    0xD818, 0xD787, 0xD6D8, 0xD60F, 0xD533, 0xD448, 0xD352, 0xD258,\n    0xD15D, 0xD067, 0xCF7C, 0xCE9F, 0xCDD6, 0xCD27, 0xCC95, 0xCC27,\n    0xCBE1, 0xCBC8, 0xCBE1, 0xCC31, 0xCD70, 0xD014, 0xD3BF, 0xD812,\n    0xDCAE, 0xE136, 0xE54B, 0xE9AC, 0xEE49, 0xF18C, 0xF39D, 0xF5AE,\n    0xF7B0, 0xF998, 0xFB57, 0xFCE3, 0xFE2C, 0xFF28, 0xFFC8, 0x0000,\n    0x0000, 0x0765, 0x074B, 0x06FF, 0x0686, 0x05E5, 0x0520, 0x043E,\n    0x0341, 0x0230, 0x010E, 0xFFE3, 0xFEB0, 0xFD7B, 0xFC49, 0xFB1F,\n    0xFA02, 0xF8F6, 0xF801, 0xF727, 0xF66C, 0xF5D7, 0xF56B, 0xF52D,\n    0xF5B2, 0xF74F, 0xF9A8, 0xFC60, 0xFF1D, 0x0180, 0x0330, 0x034E,\n    0x0233, 0x0157, 0x011A, 0x00E3, 0x00B0, 0x0083, 0x005D, 0x003C,\n    0x0022, 0x000F, 0x0003, 0x0000, 0x0000, 0x48E3, 0x48DB, 0x48C3,\n    0x489D, 0x486B, 0x482F, 0x47EA, 0x479E, 0x474D, 0x46F8, 0x46A2,\n    0x464B, 0x45F5, 0x45A3, 0x4555, 0x450F, 0x44D0, 0x449C, 0x4473,\n    0x4458, 0x444C, 0x4450, 0x4467, 0x44F9, 0x4639, 0x47DF, 0x49A0,\n    0x4B31, 0x4C49, 0x4C9E, 0x4A4A, 0x45E7, 0x42ED, 0x41E2, 0x40FD,\n    0x403B, 0x3F9B, 0x3F1A, 0x3EB5, 0x3E6A, 0x3E38, 0x3E1B, 0x3E12,\n    0x3E12, 0xDED1, 0xDEC7, 0xDEAA, 0xDE7F, 0xDE47, 0xDE06, 0xDDBE,\n    0xDD72, 0xDD25, 0xDCDA, 0xDC94, 0xDC55, 0xDC21, 0xDBFB, 0xDBE4,\n    0xDBE1, 0xDBF4, 0xDC1F, 0xDC66, 0xDCCC, 0xDD53, 0xDDFE, 0xDED1,\n    0xE087, 0xE396, 0xE798, 0xEC23, 0xF0D2, 0xF53D, 0xF8FB, 0xFBD7,\n    0xFDFA, 0xFF8F, 0x00F7, 0x0273, 0x03F3, 0x056B, 0x06CE, 0x080E,\n    0x091D, 0x09F0, 0x0A78, 0x0AA8, 0x0AA8, 0x1FF4, 0x1FF7, 0x2000,\n    0x200E, 0x2021, 0x2036, 0x204E, 0x2067, 0x2080, 0x2099, 0x20B0,\n    0x20C5, 0x20D6, 0x20E3, 0x20EA, 0x20EB, 0x20E5, 0x20D7, 0x20BF,\n    0x209E, 0x2071, 0x2039, 0x1FF4, 0x1FA0, 0x1F2A, 0x1E7A, 0x1D73,\n    0x1BFC, 0x19FB, 0x1755, 0x10A6, 0x0735, 0x01E3, 0x015B, 0x0194,\n    0x0264, 0x03A1, 0x0521, 0x06BA, 0x0841, 0x098D, 0x0A73, 0x0AC9,\n    0x0AC9, 0x8256, 0x824D, 0x8234, 0x820C, 0x81DA, 0x819F, 0x815E,\n    0x8119, 0x80D4, 0x8090, 0x8051, 0x8018, 0x7FE6, 0x7FC3, 0x7FAF,\n    0x7FAC, 0x7FBD, 0x7FE4, 0x8027, 0x8083, 0x80FD, 0x8198, 0x8256,\n    0x8404, 0x8718, 0x8B11, 0x8F71, 0x93B7, 0x9765, 0x99FA, 0x9969,\n    0x9680, 0x9505, 0x95BF, 0x96DA, 0x983A, 0x99C5, 0x9B5F, 0x9CEB,\n    0x9E50, 0x9F70, 0xA032, 0xA078, 0xA078, 0x4122, 0x40F2, 0x4065,\n    0x3F84, 0x3E57, 0x3CE6, 0x3B37, 0x3953, 0x3741, 0x350A, 0x32B5,\n    0x304A, 0x2DD0, 0x2B4F, 0x28D0, 0x2659, 0x23F2, 0x21A4, 0x1F76,\n    0x1D70, 0x1B99, 0x19F9, 0x1898, 0x179A, 0x1710, 0x16E5, 0x1704,\n    0x1758, 0x17CD, 0x184F, 0x18C7, 0x1922, 0x194B, 0x1951, 0x1955,\n    0x1956, 0x1955, 0x1953, 0x194F, 0x194C, 0x1948, 0x1946, 0x1945,\n    0x1945, 0xD283, 0xD293, 0xD2C3, 0xD311, 0xD37A, 0xD3FD, 0xD497,\n    0xD546, 0xD608, 0xD6DC, 0xD7BE, 0xD8AE, 0xD9A8, 0xDAAB, 0xDBB5,\n    0xDCC3, 0xDDD4, 0xDEE5, 0xDFF5, 0xE101, 0xE207, 0xE306, 0xE3FB,\n    0xE50F, 0xE65F, 0xE7DA, 0xE96B, 0xEAFE, 0xEC81, 0xEDE0, 0xEF07,\n    0xEFE4, 0xF063, 0xF06E, 0xF00E, 0xEF5C, 0xEE71, 0xED66, 0xEC53,\n    0xEB52, 0xEA7C, 0xE9E9, 0xE9B2, 0xE9B2, 0x7030, 0x7061, 0x70EE,\n    0x71D3, 0x7307, 0x7484, 0x7644, 0x7840, 0x7A72, 0x7CD2, 0x7F5B,\n    0x8208, 0x84CD, 0x87A7, 0x8A8F, 0x8D7E, 0x906D, 0x9357, 0x9634,\n    0x98FE, 0x9BAE, 0x9E3E, 0xA0A7, 0xA322, 0xA5DF, 0xA8C7, 0xABC4,\n    0xAEC0, 0xB1A5, 0xB45D, 0xB6D2, 0xB8ED, 0xBA99, 0xBBD2, 0xBCAF,\n    0xBD3D, 0xBD8B, 0xBDA5, 0xBD9C, 0xBD7C, 0xBD54, 0xBD31, 0xBD23,\n    0xBD23, 0xE0BB, 0xE0C3, 0xE0D9, 0xE0FD, 0xE12E, 0xE16A, 0xE1B2,\n    0xE203, 0xE25E, 0xE2C2, 0xE32C, 0xE39D, 0xE414, 0xE48F, 0xE50E,\n    0xE590, 0xE615, 0xE69A, 0xE71F, 0xE7A4, 0xE827, 0xE8A8, 0xE925,\n    0xE9B3, 0xEA5F, 0xEB22, 0xEBF4, 0xECCA, 0xED9E, 0xEE66, 0xEF1A,\n    0xEFB2, 0xF025, 0xF072, 0xF0A4, 0xF0BE, 0xF0C6, 0xF0C0, 0xF0B0,\n    0xF09B, 0xF087, 0xF077, 0xF071, 0xF071, 0x1F4C, 0x1F46, 0x1F33,\n    0x1F14, 0x1EEA, 0x1EB5, 0x1E77, 0x1E2F, 0x1DE0, 0x1D88, 0x1D29,\n    0x1CC4, 0x1C59, 0x1BEA, 0x1B76, 0x1AFE, 0x1A83, 0x1A06, 0x1988,\n    0x1908, 0x1889, 0x180A, 0x178C, 0x16FC, 0x164C, 0x1583, 0x14A9,\n    0x13C3, 0x12DB, 0x11F6, 0x111C, 0x1054, 0x0FA6, 0x0F04, 0x0E60,\n    0x0DBF, 0x0D25, 0x0C96, 0x0C18, 0x0BAE, 0x0B5C, 0x0B28, 0x0B16,\n    0x0B16, 0x8126, 0x813F, 0x818A, 0x8203, 0x82A7, 0x8375, 0x8468,\n    0x857F, 0x86B6, 0x880A, 0x897A, 0x8B01, 0x8C9E, 0x8E4D, 0x900C,\n    0x91D8, 0x93AE, 0x958B, 0x976D, 0x9950, 0x9B33, 0x9D11, 0x9EEA,\n    0xA10D, 0xA3B8, 0xA6C8, 0xAA19, 0xAD88, 0xB0F2, 0xB433, 0xB728,\n    0xB9AE, 0xBBA1, 0xBD0B, 0xBE15, 0xBECC, 0xBF3F, 0xBF7B, 0xBF8D,\n    0xBF83, 0xBF6B, 0xBF53, 0xBF48, 0xBF48, 0x05F6, 0x05FF, 0x0617,\n    0x063E, 0x066F, 0x06A9, 0x06E8, 0x072B, 0x076F, 0x07B1, 0x07EF,\n    0x0826, 0x0854, 0x0876, 0x088A, 0x088D, 0x087C, 0x0856, 0x0817,\n    0x07BE, 0x0746, 0x06AF, 0x05F6, 0x0450, 0x014A, 0xFD64, 0xF91A,\n    0xF4ED, 0xF15B, 0xEEE4, 0xEF70, 0xF265, 0xF475, 0xF4E9, 0xF53F,\n    0xF57A, 0xF5A0, 0xF5B3, 0xF5BA, 0xF5B7, 0xF5B0, 0xF5A9, 0xF5A5,\n    0xF5A5, 0xEAE4, 0xEAE2, 0xEADC, 0xEAD4, 0xEAC8, 0xEABB, 0xEAAD,\n    0xEA9E, 0xEA8F, 0xEA80, 0xEA72, 0xEA65, 0xEA5B, 0xEA53, 0xEA4F,\n    0xEA4E, 0xEA52, 0xEA5B, 0xEA69, 0xEA7D, 0xEA98, 0xEABA, 0xEAE4,\n    0xEB33, 0xEBBD, 0xEC74, 0xED4C, 0xEE38, 0xEF2B, 0xF019, 0xF165,\n    0xF2F1, 0xF3EA, 0xF44C, 0xF49D, 0xF4DE, 0xF512, 0xF53A, 0xF557,\n    0xF56B, 0xF578, 0xF57E, 0xF580, 0xF580, 0xA38A, 0xA38B, 0xA38D,\n    0xA38F, 0xA392, 0xA396, 0xA39B, 0xA39F, 0xA3A4, 0xA3A8, 0xA3AC,\n    0xA3B0, 0xA3B3, 0xA3B5, 0xA3B7, 0xA3B7, 0xA3B6, 0xA3B3, 0xA3AF,\n    0xA3A9, 0xA3A1, 0xA397, 0xA38A, 0xA399, 0xA3CA, 0xA3FB, 0xA408,\n    0xA3CE, 0xA32C, 0xA1FF, 0x9DE1, 0x97C8, 0x9495, 0x94D0, 0x95A7,\n    0x96F4, 0x9890, 0x9A55, 0x9C1E, 0x9DC3, 0x9F20, 0xA00D, 0xA064,\n    0xA064, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x0000,\n};\n\n// 0x0605745C\nstatic const u16 bowser_seg6_animindex_0605745C[] = {\n    0x0001, 0x0000, 0x002C, 0x0001, 0x0001, 0x002D, 0x002C, 0x002E, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0666, 0x0001, 0x0000,\n    0x002C, 0x0451, 0x002C, 0x047D, 0x002C, 0x04A9,\n    0x002C, 0x026D, 0x002C, 0x0299, 0x002C, 0x02C5,\n    0x002C, 0x005D, 0x002C, 0x0089, 0x002C, 0x00B5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0665, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002C, 0x00E1,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0664, 0x0001, 0x0000,\n    0x002C, 0x04D5, 0x002C, 0x0501, 0x002C, 0x052D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002C, 0x02F1,\n    0x002C, 0x010D, 0x002C, 0x0139, 0x002C, 0x0165,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0663, 0x0001, 0x0000,\n    0x002C, 0x031D, 0x002C, 0x0349, 0x002C, 0x0375,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002C, 0x0191,\n    0x0001, 0x005A, 0x0001, 0x005B, 0x0001, 0x005C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0662, 0x0001, 0x0000,\n    0x002C, 0x0559, 0x002C, 0x0585, 0x002C, 0x05B1,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002C, 0x03A1,\n    0x002C, 0x01BD, 0x002C, 0x01E9, 0x002C, 0x0215,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0661, 0x0001, 0x0000,\n    0x002C, 0x05DD, 0x002C, 0x0609, 0x002C, 0x0635,\n    0x002C, 0x03CD, 0x002C, 0x03F9, 0x002C, 0x0425,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002C, 0x0241,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x06057678\nstatic const struct Animation bowser_seg6_anim_06057678 = {\n    0,\n    0,\n    0,\n    0,\n    0x2C,\n    ANIMINDEX_NUMPARTS(bowser_seg6_animindex_0605745C),\n    bowser_seg6_animvalue_0605678C,\n    bowser_seg6_animindex_0605745C,\n    0,\n};\n"
  },
  {
    "path": "actors/bowser/anims/data.inc.c",
    "content": "#include \"anim_060445EC.inc.c\"\n#include \"anim_060453C8.inc.c\"\n#include \"anim_06045D28.inc.c\"\n#include \"anim_0604671C.inc.c\"\n#include \"anim_0604675C.inc.c\"\n#include \"anim_06048200.inc.c\"\n#include \"anim_06049880.inc.c\"\n#include \"anim_0604A8E4.inc.c\"\n#include \"anim_0604B178.inc.c\"\n#include \"anim_0604B8CC.inc.c\"\n#include \"anim_0604D184.inc.c\"\n#include \"anim_0604E5A0.inc.c\"\n#include \"anim_0604F030.inc.c\"\n#include \"anim_0604FF4C.inc.c\"\n#include \"anim_06050530.inc.c\"\n#include \"anim_060514E8.inc.c\"\n#include \"anim_06051C68.inc.c\"\n#include \"anim_06052680.inc.c\"\n#include \"anim_06052D94.inc.c\"\n#include \"anim_060534F4.inc.c\"\n#include \"anim_06053B8C.inc.c\"\n#include \"anim_06054290.inc.c\"\n#include \"anim_06054950.inc.c\"\n#include \"anim_06055210.inc.c\"\n#include \"anim_06055984.inc.c\"\n#include \"anim_06056774.inc.c\"\n#include \"anim_06057678.inc.c\"\n"
  },
  {
    "path": "actors/bowser/anims/table.inc.c",
    "content": "// 0x06057690\nconst struct Animation *const bowser_seg6_anims_06057690[] = {\n    &bowser_seg6_anim_060445EC,\n    &bowser_seg6_anim_060453C8,\n    &bowser_seg6_anim_06045D28,\n    &bowser_seg6_anim_0604671C,\n    &bowser_seg6_anim_0604675C,\n    &bowser_seg6_anim_06048200,\n    &bowser_seg6_anim_06049880,\n    &bowser_seg6_anim_0604A8E4,\n    &bowser_seg6_anim_0604B178,\n    &bowser_seg6_anim_0604B8CC,\n    &bowser_seg6_anim_0604D184,\n    &bowser_seg6_anim_0604E5A0,\n    &bowser_seg6_anim_0604F030,\n    &bowser_seg6_anim_0604FF4C,\n    &bowser_seg6_anim_06050530,\n    &bowser_seg6_anim_060514E8,\n    &bowser_seg6_anim_06051C68,\n    &bowser_seg6_anim_06052680,\n    &bowser_seg6_anim_06054290,\n    &bowser_seg6_anim_06052D94,\n    &bowser_seg6_anim_060534F4,\n    &bowser_seg6_anim_06053B8C,\n    &bowser_seg6_anim_06054950,\n    &bowser_seg6_anim_06055210,\n    &bowser_seg6_anim_06055984,\n    &bowser_seg6_anim_06056774,\n    &bowser_seg6_anim_06057678,\n};\n"
  },
  {
    "path": "actors/bowser/flames_data.inc.c",
    "content": "// 0x060576FC\n\nconst s16 dBowserFlamesOrientationValues[] = {\n//   posX, posY, posZ,   rotY,   rotX\n        0,  280,   80, 0x00E9, 0x1A96,\n        0,  278,   83, 0x00EC, 0x1C7F,\n        0,  273,   92, 0x00F9, 0x20BF,\n        0,  268,  102, 0x010F, 0x2519,\n        0,  263,  109, 0x011D, 0x2751,\n        0,  263,  110, 0x011C, 0x2714,\n        0,  265,  106, 0x0112, 0x2601,\n        0,  268,  102, 0x0109, 0x24C0,\n        0,  271,   96, 0x00FF, 0x2358,\n        0,  274,   90, 0x00F7, 0x21CB,\n        0,  277,   84, 0x00EE, 0x201C,\n        0,  280,   78, 0x00E7, 0x1E4E,\n        0,  284,   71, 0x00DF, 0x1C64,\n        0,  288,   63, 0x00D9, 0x1A61,\n        0,  291,   56, 0x00D3, 0x184B,\n        0,  295,   48, 0x00CF, 0x1622,\n        0,  298,   40, 0x00CA, 0x13E9,\n        0,  301,   32, 0x00C7, 0x11A5,\n        0,  304,   23, 0x00C4, 0x0F59,\n        0,  308,   15, 0x00C1, 0x0D08,\n        0,  311,    7, 0x00C0, 0x0AB5,\n        0,  313,    0, 0x00C0, 0x0863,\n        0,  315,   -8, 0x00BF, 0x0615,\n        0,  317,  -15, 0x00CE, 0x03A3,\n        0,  319,  -22, 0x00F8, 0x00ED,\n        0,  320,  -29, 0x0131, 0xFFFF,\n        0,  322,  -36, 0x0172, 0xFFFF,\n        0,  322,  -40, 0x01B5, 0xFFFF,\n        0,  323,  -45, 0x01ED, 0xFFFF,\n        0,  323,  -48, 0x0213, 0xFFFF,\n        0,  323,  -51, 0x0219, 0xFFFF,\n        0,  323,  -52, 0x01F2, 0xFFFF,\n        0,  323,  -51, 0x018F, 0xFFFF,\n        0,  323,  -49, 0x00E5, 0xFFFF,\n        0,  322,  -45, 0xFFFF, 0xFFFF,\n        0,  320,  -35, 0xFFFF, 0xFFFF,\n        0,  317,  -23, 0xFFFF, 0xFFFF,\n        0,  312,   -7, 0xFFFF, 0xFFFF,\n        0,  306,   11, 0xFFFF, 0xFFFF,\n        0,  299,   31, 0xFFFF, 0xFFFF,\n        0,  288,   51, 0xFFFF, 0xFFFF,\n        0,  278,   70, 0xFFFF, 0xFFFF,\n        0,  267,   89, 0xFFFF, 0xFFFF,\n        0,  256,  106, 0xFFFF, 0x023A,\n        0,  244,  120, 0xFFFF, 0x04AA,\n        0,  236,  132, 0xFFFF, 0x069F,\n        0,  229,  139, 0xFFFF, 0x0803,\n        0,  224,  144, 0xFFFF, 0x08C0,\n        0,  222,  147, 0xFFFF, 0x0928,\n        0,  221,  148, 0xFFFF, 0x099D,\n        0,  221,  149, 0xFFFF, 0x0A16,\n        0,  221,  150, 0xFFFF, 0x0A8D,\n        0,  221,  150, 0xFFFF, 0x0AF6,\n        0,  222,  150, 0xFFFF, 0x0B4A,\n        0,  222,  150, 0xFFFF, 0x0B84,\n        0,  222,  149, 0x020A, 0x0BA0,\n        0,  223,  149, 0x0524, 0x0B9E,\n        0,  225,  148, 0x07EC, 0x0B84,\n        0,  226,  147, 0x0A3F, 0x0B57,\n        0,  227,  145, 0x0BFB, 0x0B1F,\n        0,  228,  144, 0x0D00, 0x0AE5,\n        0,  230,  142, 0x0D6F, 0x0AA0,\n        0,  232,  140, 0x0D8B, 0x0A48,\n        0,  233,  138, 0x0D5D, 0x09DE,\n        0,  236,  136, 0x0CED, 0x096A,\n        0,  238,  134, 0x0C49, 0x08EA,\n        0,  239,  132, 0x0B76, 0x0863,\n        0,  241,  130, 0x0A80, 0x07D9,\n        0,  244,  128, 0x0970, 0x074E,\n        0,  246,  125, 0x084E, 0x06C7,\n        0,  248,  122, 0x0723, 0x0649,\n        0,  251,  120, 0x05F8, 0x05D7,\n        0,  253,  117, 0x04D6, 0x0579,\n        0,  254,  114, 0x03C3, 0x0532,\n        0,  256,  111, 0x02C9, 0x0509,\n        0,  259,  108, 0x01F0, 0x0504,\n        0,  261,  105, 0x0141, 0x0525,\n        0,  262,  103, 0x00C3, 0x0572,\n        0,  264,  100, 0x006E, 0x0619,\n        0,  267,   97, 0x0032, 0x0734,\n        0,  268,   95, 0x000C, 0x08AF,\n        0,  269,   93, 0xFFFF, 0x0A74,\n        0,  272,   90, 0xFFFF, 0x0C70,\n        0,  273,   88, 0xFFFF, 0x0E8E,\n        0,  274,   86, 0x0014, 0x10B6,\n        0,  275,   84, 0x0032, 0x12DA,\n        0,  277,   82, 0x0056, 0x14E1,\n        0,  277,   82, 0x007E, 0x16B9,\n        0,  278,   80, 0x00A4, 0x184B,\n        0,  278,   80, 0x00C6, 0x1983,\n        0,  279,   80, 0x00DF, 0x1A4D,\n        0,  280,   80, 0x00E9, 0x1A96,\n        0,    0,    0, 0x0000, 0x0000,\n};\n"
  },
  {
    "path": "actors/bowser/geo.inc.c",
    "content": "// 0x0D0000D8\nconst GeoLayout bowser_geo_0000D8[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_9_VERTS, 0x9B, 400),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bowser_seg6_dl_06040210),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, -89, -2, -18, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 69, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 85, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bowser_seg6_dl_0603D200),\n                        GEO_CLOSE_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bowser_seg6_dl_0603E6B8),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, -32, -112, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bowser_seg6_dl_06043698),\n                    GEO_ASM(0, geo_update_body_rot_from_parent),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 118, 67, 105, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 65, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 49, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bowser_seg6_dl_0603B208),\n                        GEO_CLOSE_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bowser_seg6_dl_060399D8),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bowser_seg6_dl_060392E0),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 136, 130, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 61, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, -13, 258, 0, bowser_seg6_dl_060431F0),\n                    GEO_CLOSE_NODE(),\n                    GEO_SWITCH_CASE(9, geo_switch_bowser_eyes),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bowser_seg6_dl_06042348),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bowser_seg6_dl_060423A0),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bowser_seg6_dl_060423F8),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bowser_seg6_dl_06042450),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bowser_seg6_dl_060424A8),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bowser_seg6_dl_06042500),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bowser_seg6_dl_06042558),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bowser_seg6_dl_060425B0),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bowser_seg6_dl_06042608),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, -118, 67, 105, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 65, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 49, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bowser_seg6_dl_0603DFB0),\n                        GEO_CLOSE_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bowser_seg6_dl_0603C6D0),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bowser_seg6_dl_0603BFC8),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 89, -2, -18, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 69, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 85, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bowser_seg6_dl_0603A4E8),\n                        GEO_CLOSE_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bowser_seg6_dl_0603B8D0),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0D000424\nconst GeoLayout bowser_geo_000424[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_9_VERTS, 0x9B, 400),\n    GEO_OPEN_NODE(),\n#if BUGFIX_BOWSER_FADING_OUT\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_06040358),\n#else\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_06040210),\n#endif\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, -89, -2, -18, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 69, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 85, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_0603D200),\n                        GEO_CLOSE_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_0603E6B8),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, -32, -112, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_06043698),\n                    GEO_ASM(0, geo_update_body_rot_from_parent),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 118, 67, 105, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 65, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 49, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_0603B208),\n                        GEO_CLOSE_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_060399D8),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_060392E0),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 136, 130, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 61, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, -13, 258, 0, bowser_seg6_dl_060431F0),\n                    GEO_CLOSE_NODE(),\n                    GEO_SWITCH_CASE(9, geo_switch_bowser_eyes),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_06042348),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_060423A0),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_060423F8),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_06042450),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_060424A8),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_06042500),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_06042558),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_060425B0),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_06042608),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, -118, 67, 105, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 65, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 49, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_0603DFB0),\n                        GEO_CLOSE_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_0603C6D0),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_0603BFC8),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 89, -2, -18, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 69, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 85, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_0603A4E8),\n                        GEO_CLOSE_NODE(),\n#if BUGFIX_BOWSER_FADING_OUT\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_0603B948),\n#else\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_0603B8D0),\n#endif\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0D000770\nconst GeoLayout bowser_geo_000770[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n#if BUGFIX_BOWSER_FADING_OUT\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_06040358),\n#else\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_06040210),\n#endif\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, -89, -2, -18, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 69, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 85, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_0603D200),\n                        GEO_CLOSE_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_0603E6B8),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, -32, -112, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_06043698),\n                    GEO_ASM(0, geo_update_body_rot_from_parent),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 118, 67, 105, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 65, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 49, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_0603B208),\n                        GEO_CLOSE_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_060399D8),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_060392E0),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 136, 130, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 61, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, -13, 258, 0, bowser_seg6_dl_060431F0),\n                    GEO_CLOSE_NODE(),\n                    GEO_SWITCH_CASE(9, geo_switch_bowser_eyes),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_06042348),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_060423A0),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_060423F8),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_06042450),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_060424A8),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_06042500),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_06042558),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_060425B0),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_06042608),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, -118, 67, 105, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 65, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 49, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_0603DFB0),\n                        GEO_CLOSE_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_0603C6D0),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_0603BFC8),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 89, -2, -18, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 69, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 85, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_0603A4E8),\n                        GEO_CLOSE_NODE(),\n#if BUGFIX_BOWSER_FADING_OUT\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_0603B948),\n#else\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, bowser_seg6_dl_0603B8D0),\n#endif\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n#ifndef VERSION_JP\n// 0x0D000AB8\nconst GeoLayout bowser_shadow_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_9_VERTS, 0x9B, 400),\n    GEO_RETURN(),\n};\n#endif\n\n// 0x0D000AB8 / 0AC4\nconst GeoLayout bowser_geo[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_ASM(0, geo_update_layer_transparency),\n#ifndef VERSION_JP\n        GEO_SWITCH_CASE(3, geo_switch_anim_state),\n#else\n        GEO_SWITCH_CASE(2, geo_switch_anim_state),\n#endif\n        GEO_OPEN_NODE(),\n            GEO_NODE_START(),\n            GEO_OPEN_NODE(),\n                GEO_ASM(0, geo_bits_bowser_coloring),\n                GEO_BRANCH(1, bowser_geo_0000D8),\n            GEO_CLOSE_NODE(),\n\n            GEO_NODE_START(),\n            GEO_OPEN_NODE(),\n                GEO_ASM(0, geo_bits_bowser_coloring),\n                GEO_BRANCH(1, bowser_geo_000424),\n            GEO_CLOSE_NODE(),\n\n#ifndef VERSION_JP\n            GEO_NODE_START(),\n            GEO_OPEN_NODE(),\n                GEO_ASM(0, geo_bits_bowser_coloring),\n                GEO_BRANCH(1, bowser_shadow_geo),\n            GEO_CLOSE_NODE(),\n#endif\n        GEO_CLOSE_NODE(),\n\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0D000B18 / 0B40\nconst GeoLayout bowser_geo_no_shadow[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_ASM(0, geo_update_layer_transparency),\n#ifndef VERSION_JP\n        GEO_SWITCH_CASE(3, geo_switch_anim_state),\n#else\n        GEO_SWITCH_CASE(2, geo_switch_anim_state),\n#endif\n        GEO_OPEN_NODE(),\n            GEO_NODE_START(),\n            GEO_OPEN_NODE(),\n                GEO_ASM(0, geo_bits_bowser_coloring),\n                GEO_BRANCH(1, bowser_geo_0000D8),\n            GEO_CLOSE_NODE(),\n\n            GEO_NODE_START(),\n            GEO_OPEN_NODE(),\n                GEO_ASM(0, geo_bits_bowser_coloring),\n                GEO_BRANCH(1, bowser_geo_000770),\n            GEO_CLOSE_NODE(),\n\n#ifndef VERSION_JP\n            GEO_NODE_START(),\n            GEO_OPEN_NODE(),\n                GEO_ASM(0, geo_bits_bowser_coloring),\n                GEO_BRANCH(1, bowser_shadow_geo),\n            GEO_CLOSE_NODE(),\n#endif\n        GEO_CLOSE_NODE(),\n\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/bowser/model.inc.c",
    "content": "// Bowser (King Koopa)\n\n// 0x0601F438\nALIGNED8 static const Texture bowser_seg6_texture_0601F438[] = {\n#include \"actors/bowser/bowser_shell.rgba16.inc.c\"\n};\n\n// 0x0601FC38\nALIGNED8 static const Texture bowser_seg6_texture_0601FC38[] = {\n#include \"actors/bowser/bowser_eyebrow.rgba16.inc.c\"\n};\n\n// 0x06020C38\nALIGNED8 static const Texture bowser_seg6_texture_06020C38[] = {\n#include \"actors/bowser/bowser_muzzle.rgba16.inc.c\"\n};\n\n// 0x06021438\nALIGNED8 static const Texture bowser_seg6_texture_06021438[] = {\n#include \"actors/bowser/bowser_nostrils.rgba16.inc.c\"\n};\n\n// 0x06022438\nALIGNED8 static const Texture bowser_seg6_texture_06022438[] = {\n#include \"actors/bowser/bowser_body.rgba16.inc.c\"\n};\n\n// 0x06022C38\nALIGNED8 static const Texture bowser_seg6_texture_06022C38[] = {\n#include \"actors/bowser/bowser_armband_spike.rgba16.inc.c\"\n};\n\n// 0x06023C38\nALIGNED8 static const Texture bowser_seg6_texture_06023C38[] = {\n#include \"actors/bowser/bowser_armband.rgba16.inc.c\"\n};\n\n// 0x06024438\nALIGNED8 static const Texture bowser_seg6_texture_06024438[] = {\n#include \"actors/bowser/bowser_tongue.rgba16.inc.c\"\n};\n\n// 0x06025438\nALIGNED8 static const Texture bowser_seg6_texture_06025438[] = {\n#include \"actors/bowser/bowser_chest.rgba16.inc.c\"\n};\n\n// 0x06025C38\nALIGNED8 static const Texture bowser_seg6_texture_06025C38[] = {\n#include \"actors/bowser/bowser_shell_edge.rgba16.inc.c\"\n};\n\n// unreferenced, seen in pre-Spaceworld 1995 B-roll footage build\n// 0x06026438\nALIGNED8 static const Texture bowser_seg6_texture_06026438[] = {\n#include \"actors/bowser/bowser_blue_eye_unused.rgba16.inc.c\"\n};\n\n// unreferenced (stubbed texture? possibly original texture for mouth)\n// 0x06027438\nALIGNED8 static const Texture bowser_seg6_texture_06027438[] = {\n#include \"actors/bowser/bowser_mouth_unused.rgba16.inc.c\"\n};\n\n// 0x06028438\nALIGNED8 static const Texture bowser_seg6_texture_06028438[] = {\n#include \"actors/bowser/bowser_upper_face.rgba16.inc.c\"\n};\n\n// 0x06028C38\nALIGNED8 static const Texture bowser_seg6_texture_06028C38[] = {\n#include \"actors/bowser/bowser_hair.rgba16.inc.c\"\n};\n\n// 0x06029C38\nALIGNED8 static const Texture bowser_seg6_texture_06029C38[] = {\n#include \"actors/bowser/bowser_claw_edge.rgba16.inc.c\"\n};\n\n// 0x0602AC38\nALIGNED8 static const Texture bowser_seg6_texture_0602AC38[] = {\n#include \"actors/bowser/bowser_claw_horn_tooth.rgba16.inc.c\"\n};\n\n// 0x0602BC38\nALIGNED8 static const Texture bowser_seg6_texture_0602BC38[] = {\n#include \"actors/bowser/bowser_claw_horn_angle.rgba16.inc.c\"\n};\n\n// 0x0602CC38\nALIGNED8 static const Texture bowser_seg6_texture_0602CC38[] = {\n#include \"actors/bowser/bowser_eye_left_0.rgba16.inc.c\"\n};\n\n// 0x0602DC38\nALIGNED8 static const Texture bowser_seg6_texture_0602DC38[] = {\n#include \"actors/bowser/bowser_eye_half_closed_0.rgba16.inc.c\"\n};\n\n// 0x0602EC38\nALIGNED8 static const Texture bowser_seg6_texture_0602EC38[] = {\n#include \"actors/bowser/bowser_eye_closed_0.rgba16.inc.c\"\n};\n\n// 0x0602FC38\nALIGNED8 static const Texture bowser_seg6_texture_0602FC38[] = {\n#include \"actors/bowser/bowser_eye_center_0.rgba16.inc.c\"\n};\n\n// 0x06030C38\nALIGNED8 static const Texture bowser_seg6_texture_06030C38[] = {\n#include \"actors/bowser/bowser_eye_right_0.rgba16.inc.c\"\n};\n\n// 0x06031C38\nALIGNED8 static const Texture bowser_seg6_texture_06031C38[] = {\n#include \"actors/bowser/bowser_eye_far_left_0.rgba16.inc.c\"\n};\n\n// 0x06032C38\nALIGNED8 static const Texture bowser_seg6_texture_06032C38[] = {\n#include \"actors/bowser/bowser_eye_left_1.rgba16.inc.c\"\n};\n\n// 0x06033C38\nALIGNED8 static const Texture bowser_seg6_texture_06033C38[] = {\n#include \"actors/bowser/bowser_eye_half_closed_1.rgba16.inc.c\"\n};\n\n// 0x06034C38\nALIGNED8 static const Texture bowser_seg6_texture_06034C38[] = {\n#include \"actors/bowser/bowser_eye_closed_1.rgba16.inc.c\"\n};\n\n// 0x06035C38\nALIGNED8 static const Texture bowser_seg6_texture_06035C38[] = {\n#include \"actors/bowser/bowser_eye_center_1.rgba16.inc.c\"\n};\n\n// 0x06036C38\nALIGNED8 static const Texture bowser_seg6_texture_06036C38[] = {\n#include \"actors/bowser/bowser_eye_right_1.rgba16.inc.c\"\n};\n\n// 0x06037C38\nALIGNED8 static const Texture bowser_seg6_texture_06037C38[] = {\n#include \"actors/bowser/bowser_eye_far_left_1.rgba16.inc.c\"\n};\n\n// 0x06038C38\nstatic const Lights1 bowser_seg6_lights_06038C38 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 bowser_lights_unused1 = gdSPDefLights1(\n    0x33, 0x31, 0x00,\n    0xce, 0xc7, 0x00, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 bowser_lights_unused2 = gdSPDefLights1(\n    0x34, 0x34, 0x00,\n    0xd2, 0xd2, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x06038C80\nstatic const Vtx bowser_seg6_vertex_06038C80[] = {\n    {{{    46,     36,     22}, 0, {    -8,    978}, {0x41, 0x5e, 0x35, 0xff}}},\n    {{{    66,     32,     21}, 0, {   588,    968}, {0x41, 0x56, 0x41, 0xff}}},\n    {{{    46,     36,    -22}, 0, {    20,    -12}, {0x34, 0x65, 0xca, 0xff}}},\n    {{{    40,    -33,      0}, 0, {    14,    958}, {0x35, 0x8d, 0x00, 0xff}}},\n    {{{    60,    -32,      0}, 0, {   820,    956}, {0x2f, 0x8b, 0x00, 0xff}}},\n    {{{    42,     -6,     36}, 0, {    30,     20}, {0x2b, 0xe4, 0x73, 0xff}}},\n    {{{    63,     -7,     34}, 0, {   834,     78}, {0x4a, 0xdb, 0x5f, 0xff}}},\n    {{{    46,     36,    -22}, 0, {    10,    964}, {0x34, 0x65, 0xca, 0xff}}},\n    {{{    66,     32,    -21}, 0, {   746,    964}, {0x47, 0x45, 0xb2, 0xff}}},\n    {{{    42,     -6,    -36}, 0, {   -52,    -94}, {0x2b, 0xe4, 0x8d, 0xff}}},\n    {{{    63,     -7,    -34}, 0, {   684,    -28}, {0x4a, 0xdb, 0xa1, 0xff}}},\n    {{{    42,     -6,    -36}, 0, {   -38,    978}, {0x2b, 0xe4, 0x8d, 0xff}}},\n    {{{    60,    -32,      0}, 0, {   812,     20}, {0x2f, 0x8b, 0x00, 0xff}}},\n    {{{    40,    -33,      0}, 0, {   -36,    -26}, {0x35, 0x8d, 0x00, 0xff}}},\n    {{{    63,     -7,    -34}, 0, {   810,    962}, {0x4a, 0xdb, 0xa1, 0xff}}},\n    {{{    66,     32,    -21}, 0, {   614,     40}, {0x47, 0x45, 0xb2, 0xff}}},\n};\n\n// 0x06038D80\nstatic const Vtx bowser_seg6_vertex_06038D80[] = {\n    {{{    42,     -6,     36}, 0, {   -44,    974}, {0x2b, 0xe4, 0x73, 0xff}}},\n    {{{    66,     32,     21}, 0, {   692,     42}, {0x41, 0x56, 0x41, 0xff}}},\n    {{{    46,     36,     22}, 0, {   100,     20}, {0x41, 0x5e, 0x35, 0xff}}},\n    {{{    63,     -7,     34}, 0, {   556,    936}, {0x4a, 0xdb, 0x5f, 0xff}}},\n    {{{    66,     32,    -21}, 0, {  1104,    166}, {0x47, 0x45, 0xb2, 0xff}}},\n    {{{    81,      1,      0}, 0, {   402,    394}, {0x7e, 0xf5, 0x00, 0xff}}},\n    {{{    63,     -7,    -34}, 0, {   836,    990}, {0x4a, 0xdb, 0xa1, 0xff}}},\n    {{{    60,    -32,      0}, 0, {     0,    990}, {0x2f, 0x8b, 0x00, 0xff}}},\n    {{{    63,     -7,     34}, 0, {  -298,    166}, {0x4a, 0xdb, 0x5f, 0xff}}},\n    {{{    66,     32,     21}, 0, {   402,   -344}, {0x41, 0x56, 0x41, 0xff}}},\n};\n\n// 0x06038E20\nstatic const Vtx bowser_seg6_vertex_06038E20[] = {\n    {{{    36,     44,     27}, 0, {   -12,    930}, {0x2c, 0x60, 0x45, 0xff}}},\n    {{{    32,     -8,     44}, 0, {   954,    904}, {0x21, 0xdb, 0x74, 0xff}}},\n    {{{    42,     -6,     36}, 0, {   862,     76}, {0x2b, 0xe4, 0x73, 0xff}}},\n    {{{    40,    -33,      0}, 0, {   874,     60}, {0x35, 0x8d, 0x00, 0xff}}},\n    {{{    42,     -6,     36}, 0, {    78,     52}, {0x2b, 0xe4, 0x73, 0xff}}},\n    {{{    32,     -8,     44}, 0, {    -6,    896}, {0x21, 0xdb, 0x74, 0xff}}},\n    {{{    29,    -40,      0}, 0, {   968,    908}, {0x0a, 0x83, 0x13, 0xff}}},\n    {{{    32,     -8,    -44}, 0, {   984,    912}, {0x1d, 0xbe, 0x98, 0xff}}},\n    {{{    42,     -6,    -36}, 0, {   890,     76}, {0x2b, 0xe4, 0x8d, 0xff}}},\n    {{{    40,    -33,      0}, 0, {    80,     30}, {0x35, 0x8d, 0x00, 0xff}}},\n    {{{    29,    -40,      0}, 0, {   -10,    854}, {0x0a, 0x83, 0x13, 0xff}}},\n    {{{    36,     44,    -27}, 0, {   956,    894}, {0x33, 0x54, 0xb0, 0xff}}},\n    {{{    42,     -6,    -36}, 0, {    90,    150}, {0x2b, 0xe4, 0x8d, 0xff}}},\n    {{{    32,     -8,    -44}, 0, {     0,    922}, {0x1d, 0xbe, 0x98, 0xff}}},\n    {{{    46,     36,    -22}, 0, {   870,    126}, {0x34, 0x65, 0xca, 0xff}}},\n    {{{    46,     36,     22}, 0, {    72,     98}, {0x41, 0x5e, 0x35, 0xff}}},\n};\n\n// 0x06038F20\nstatic const Vtx bowser_seg6_vertex_06038F20[] = {\n    {{{    46,     36,     22}, 0, {   886,     96}, {0x41, 0x5e, 0x35, 0xff}}},\n    {{{    46,     36,    -22}, 0, {    86,    110}, {0x34, 0x65, 0xca, 0xff}}},\n    {{{    36,     44,    -27}, 0, {    -2,    892}, {0x33, 0x54, 0xb0, 0xff}}},\n    {{{    36,     44,     27}, 0, {   978,    876}, {0x2c, 0x60, 0x45, 0xff}}},\n    {{{     8,     -4,     41}, 0, {   370,    -46}, {0x97, 0xe3, 0x40, 0xff}}},\n    {{{    12,     43,    -25}, 0, {   386,    980}, {0xb0, 0x5c, 0xde, 0xff}}},\n    {{{     8,     -4,    -41}, 0, {   982,    980}, {0xa9, 0x01, 0xa4, 0xff}}},\n    {{{    12,     43,     25}, 0, {     6,    346}, {0xcb, 0x4d, 0x54, 0xff}}},\n    {{{     5,    -34,      0}, 0, {   972,    346}, {0xb9, 0x9b, 0xe6, 0xff}}},\n};\n\n// 0x06038FB0\nstatic const Vtx bowser_seg6_vertex_06038FB0[] = {\n    {{{     5,    -34,      0}, 0, {   132,    990}, {0xb9, 0x9b, 0xe6, 0xff}}},\n    {{{     8,     -4,    -41}, 0, {  1988,    992}, {0xa9, 0x01, 0xa4, 0xff}}},\n    {{{    32,     -8,    -44}, 0, {  2012,      0}, {0x1d, 0xbe, 0x98, 0xff}}},\n    {{{    12,     43,     25}, 0, {    56,    978}, {0xcb, 0x4d, 0x54, 0xff}}},\n    {{{     8,     -4,     41}, 0, {  1928,    978}, {0x97, 0xe3, 0x40, 0xff}}},\n    {{{    32,     -8,     44}, 0, {  2012,     88}, {0x21, 0xdb, 0x74, 0xff}}},\n    {{{    36,     44,     27}, 0, {   -28,     88}, {0x2c, 0x60, 0x45, 0xff}}},\n    {{{    12,     43,    -25}, 0, {    36,    988}, {0xb0, 0x5c, 0xde, 0xff}}},\n    {{{    12,     43,     25}, 0, {  1928,    964}, {0xcb, 0x4d, 0x54, 0xff}}},\n    {{{    36,     44,     27}, 0, {  2000,     64}, {0x2c, 0x60, 0x45, 0xff}}},\n    {{{    36,     44,    -27}, 0, {   -56,     90}, {0x33, 0x54, 0xb0, 0xff}}},\n    {{{     8,     -4,    -41}, 0, {    56,    974}, {0xa9, 0x01, 0xa4, 0xff}}},\n    {{{    12,     43,    -25}, 0, {  1928,    976}, {0xb0, 0x5c, 0xde, 0xff}}},\n    {{{    36,     44,    -27}, 0, {  2016,     84}, {0x33, 0x54, 0xb0, 0xff}}},\n    {{{    32,     -8,    -44}, 0, {   -28,     82}, {0x1d, 0xbe, 0x98, 0xff}}},\n};\n\n// 0x060390A0\nstatic const Vtx bowser_seg6_vertex_060390A0[] = {\n    {{{     8,     -4,     41}, 0, {    60,    980}, {0x97, 0xe3, 0x40, 0xff}}},\n    {{{     5,    -34,      0}, 0, {  1944,    980}, {0xb9, 0x9b, 0xe6, 0xff}}},\n    {{{    29,    -40,      0}, 0, {  2008,    -40}, {0x0a, 0x83, 0x13, 0xff}}},\n    {{{    29,    -40,      0}, 0, {   -12,      0}, {0x0a, 0x83, 0x13, 0xff}}},\n    {{{     5,    -34,      0}, 0, {   132,    990}, {0xb9, 0x9b, 0xe6, 0xff}}},\n    {{{    32,     -8,    -44}, 0, {  2012,      0}, {0x1d, 0xbe, 0x98, 0xff}}},\n    {{{    32,     -8,     44}, 0, {   -44,    -40}, {0x21, 0xdb, 0x74, 0xff}}},\n};\n\n// 0x06039110 - 0x060391C8\nconst Gfx bowser_seg6_dl_06039110[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06022438),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bowser_seg6_lights_06038C38.l, 1),\n    gsSPLight(&bowser_seg6_lights_06038C38.a, 2),\n    gsSPVertex(bowser_seg6_vertex_06038C80, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  1, 15,  2, 0x0),\n    gsSPVertex(bowser_seg6_vertex_06038D80, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 7,  5,  8, 0x0,  8,  5,  9, 0x0),\n    gsSP1Triangle( 9,  5,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x060391C8 - 0x06039260\nconst Gfx bowser_seg6_dl_060391C8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06023C38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_seg6_vertex_06038E20, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  2, 15,  0, 0x0),\n    gsSPVertex(bowser_seg6_vertex_06038F20, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP1Triangle( 4,  6,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06039260 - 0x060392E0\nconst Gfx bowser_seg6_dl_06039260[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06022C38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_seg6_vertex_06038FB0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 11, 13, 0x0),\n    gsSPVertex(bowser_seg6_vertex_060390A0, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x060392E0 - 0x06039368\nconst Gfx bowser_seg6_dl_060392E0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_seg6_dl_06039110),\n    gsSPDisplayList(bowser_seg6_dl_060391C8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_seg6_dl_06039260),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x06039368\nstatic const Vtx bowser_seg6_vertex_06039368[] = {\n    {{{    47,     33,    -21}, 0, {   -12,    326}, {0x68, 0x3a, 0xd7, 0xff}}},\n    {{{    47,     33,     21}, 0, {   282,    954}, {0x5b, 0x52, 0x20, 0xff}}},\n    {{{    49,    -32,      0}, 0, {   970,    362}, {0x64, 0xb3, 0x00, 0xff}}},\n    {{{    27,     37,    -24}, 0, {   968,    990}, {0xd6, 0x5f, 0xb9, 0xff}}},\n    {{{    21,     31,     20}, 0, {    66,     32}, {0xcb, 0x61, 0x3c, 0xff}}},\n    {{{    27,     37,     24}, 0, {    -2,    936}, {0xd7, 0x4c, 0x5c, 0xff}}},\n    {{{    21,     31,    -20}, 0, {   864,     76}, {0xcf, 0x51, 0xac, 0xff}}},\n    {{{    23,    -31,      0}, 0, {   884,     52}, {0xcd, 0x8c, 0x00, 0xff}}},\n    {{{    22,     -7,    -32}, 0, {   112,     30}, {0xc1, 0xea, 0x95, 0xff}}},\n    {{{    29,     -9,    -39}, 0, {     8,    884}, {0xde, 0xc0, 0x99, 0xff}}},\n    {{{    30,    -38,      0}, 0, {   946,    910}, {0xdf, 0x86, 0x00, 0xff}}},\n    {{{    29,     -9,     39}, 0, {   948,    890}, {0xdc, 0xc0, 0x67, 0xff}}},\n    {{{    23,    -31,      0}, 0, {    68,     14}, {0xcd, 0x8c, 0x00, 0xff}}},\n    {{{    30,    -38,      0}, 0, {    -6,    812}, {0xdf, 0x86, 0x00, 0xff}}},\n    {{{    22,     -7,     32}, 0, {   852,     78}, {0xc1, 0xea, 0x6b, 0xff}}},\n};\n\n// 0x06039458\nstatic const Vtx bowser_seg6_vertex_06039458[] = {\n    {{{    27,     37,     24}, 0, {   940,    856}, {0xd7, 0x4c, 0x5c, 0xff}}},\n    {{{    22,     -7,     32}, 0, {   116,    116}, {0xc1, 0xea, 0x6b, 0xff}}},\n    {{{    29,     -9,     39}, 0, {    16,    898}, {0xdc, 0xc0, 0x67, 0xff}}},\n    {{{    21,     31,     20}, 0, {   878,     82}, {0xcb, 0x61, 0x3c, 0xff}}},\n    {{{    29,     -9,    -39}, 0, {   968,    912}, {0xde, 0xc0, 0x99, 0xff}}},\n    {{{    22,     -7,    -32}, 0, {   890,     48}, {0xc1, 0xea, 0x95, 0xff}}},\n    {{{    27,     37,    -24}, 0, {   -12,    904}, {0xd6, 0x5f, 0xb9, 0xff}}},\n    {{{    21,     31,    -20}, 0, {    82,     40}, {0xcf, 0x51, 0xac, 0xff}}},\n    {{{    47,     33,     21}, 0, {   282,    954}, {0x5b, 0x52, 0x20, 0xff}}},\n    {{{    48,     -7,     35}, 0, {   890,    976}, {0x44, 0xfb, 0x6a, 0xff}}},\n    {{{    49,    -32,      0}, 0, {   970,    362}, {0x64, 0xb3, 0x00, 0xff}}},\n    {{{    48,     -7,    -34}, 0, {   412,    -40}, {0x46, 0xfb, 0x97, 0xff}}},\n    {{{    47,     33,    -21}, 0, {   -12,    326}, {0x68, 0x3a, 0xd7, 0xff}}},\n};\n\n// 0x06039528\nstatic const Vtx bowser_seg6_vertex_06039528[] = {\n    {{{    -8,     -8,    -31}, 0, {   926,    968}, {0xc9, 0xdc, 0x94, 0xff}}},\n    {{{    -9,     29,    -19}, 0, {   912,     42}, {0xba, 0x5f, 0xd3, 0xff}}},\n    {{{    21,     31,    -20}, 0, {     4,    -22}, {0xcf, 0x51, 0xac, 0xff}}},\n    {{{    22,     -7,     32}, 0, {    -8,    950}, {0xc1, 0xea, 0x6b, 0xff}}},\n    {{{    -8,     -8,     31}, 0, {   910,    962}, {0xc9, 0xdc, 0x6c, 0xff}}},\n    {{{    23,    -31,      0}, 0, {   -16,    -26}, {0xcd, 0x8c, 0x00, 0xff}}},\n    {{{    -7,    -31,      0}, 0, {   904,     16}, {0xb3, 0x9c, 0x00, 0xff}}},\n    {{{    21,     31,     20}, 0, {   -18,    938}, {0xcb, 0x61, 0x3c, 0xff}}},\n    {{{    -8,     -8,     31}, 0, {   936,     36}, {0xc9, 0xdc, 0x6c, 0xff}}},\n    {{{    22,     -7,     32}, 0, {    -6,    -10}, {0xc1, 0xea, 0x6b, 0xff}}},\n    {{{    -9,     29,     19}, 0, {   926,    956}, {0xac, 0x4b, 0x39, 0xff}}},\n    {{{    -9,     29,    -19}, 0, {   972,    944}, {0xba, 0x5f, 0xd3, 0xff}}},\n    {{{    -9,     29,     19}, 0, {   946,      0}, {0xac, 0x4b, 0x39, 0xff}}},\n    {{{    21,     31,     20}, 0, {    -6,    -26}, {0xcb, 0x61, 0x3c, 0xff}}},\n    {{{    21,     31,    -20}, 0, {    20,    948}, {0xcf, 0x51, 0xac, 0xff}}},\n    {{{    22,     -7,    -32}, 0, {    20,    934}, {0xc1, 0xea, 0x95, 0xff}}},\n};\n\n// 0x06039628\nstatic const Vtx bowser_seg6_vertex_06039628[] = {\n    {{{    23,    -31,      0}, 0, {    -8,    944}, {0xcd, 0x8c, 0x00, 0xff}}},\n    {{{    -7,    -31,      0}, 0, {   910,    962}, {0xb3, 0x9c, 0x00, 0xff}}},\n    {{{    -8,     -8,    -31}, 0, {   926,     32}, {0xc9, 0xdc, 0x94, 0xff}}},\n    {{{    22,     -7,    -32}, 0, {     8,    -14}, {0xc1, 0xea, 0x95, 0xff}}},\n    {{{    -8,     -8,     31}, 0, {   764,    984}, {0xc9, 0xdc, 0x6c, 0xff}}},\n    {{{   -20,      1,      0}, 0, {   350,    440}, {0x82, 0xfc, 0x00, 0xff}}},\n    {{{    -7,    -31,      0}, 0, {   -36,   1000}, {0xb3, 0x9c, 0x00, 0xff}}},\n    {{{    -9,     29,     19}, 0, {   996,    214}, {0xac, 0x4b, 0x39, 0xff}}},\n    {{{    -8,     -8,    -31}, 0, {  -302,    244}, {0xc9, 0xdc, 0x94, 0xff}}},\n    {{{    -9,     29,    -19}, 0, {   334,   -244}, {0xba, 0x5f, 0xd3, 0xff}}},\n};\n\n// 0x060396C8\nstatic const Vtx bowser_seg6_vertex_060396C8[] = {\n    {{{    27,     37,     24}, 0, {     0,     28}, {0xd7, 0x4c, 0x5c, 0xff}}},\n    {{{    47,     33,     21}, 0, {   140,    938}, {0x5b, 0x52, 0x20, 0xff}}},\n    {{{    27,     37,    -24}, 0, {  1992,     52}, {0xd6, 0x5f, 0xb9, 0xff}}},\n    {{{    49,    -32,      0}, 0, {    92,    942}, {0x64, 0xb3, 0x00, 0xff}}},\n    {{{    48,     -7,     35}, 0, {  1896,    926}, {0x44, 0xfb, 0x6a, 0xff}}},\n    {{{    29,     -9,     39}, 0, {  2004,      0}, {0xdc, 0xc0, 0x67, 0xff}}},\n    {{{    27,     37,    -24}, 0, {     0,     -8}, {0xd6, 0x5f, 0xb9, 0xff}}},\n    {{{    48,     -7,    -34}, 0, {  1884,    934}, {0x46, 0xfb, 0x97, 0xff}}},\n    {{{    29,     -9,    -39}, 0, {  1984,      4}, {0xde, 0xc0, 0x99, 0xff}}},\n    {{{    47,     33,    -21}, 0, {   108,    924}, {0x68, 0x3a, 0xd7, 0xff}}},\n    {{{    47,     33,    -21}, 0, {  1892,    960}, {0x68, 0x3a, 0xd7, 0xff}}},\n    {{{    29,     -9,     39}, 0, {   -48,     38}, {0xdc, 0xc0, 0x67, 0xff}}},\n    {{{    48,     -7,     35}, 0, {    72,    978}, {0x44, 0xfb, 0x6a, 0xff}}},\n    {{{    27,     37,     24}, 0, {  2008,      4}, {0xd7, 0x4c, 0x5c, 0xff}}},\n    {{{    47,     33,     21}, 0, {  1884,    950}, {0x5b, 0x52, 0x20, 0xff}}},\n    {{{    30,    -38,      0}, 0, {   -44,     18}, {0xdf, 0x86, 0x00, 0xff}}},\n};\n\n// 0x060397C8\nstatic const Vtx bowser_seg6_vertex_060397C8[] = {\n    {{{    29,     -9,    -39}, 0, {    -8,     36}, {0xde, 0xc0, 0x99, 0xff}}},\n    {{{    48,     -7,    -34}, 0, {   104,    890}, {0x46, 0xfb, 0x97, 0xff}}},\n    {{{    49,    -32,      0}, 0, {  1840,    892}, {0x64, 0xb3, 0x00, 0xff}}},\n    {{{    30,    -38,      0}, 0, {  1968,     40}, {0xdf, 0x86, 0x00, 0xff}}},\n};\n\n// 0x06039808 - 0x060398B0\nconst Gfx bowser_seg6_dl_06039808[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06023C38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bowser_seg6_lights_06038C38.l, 1),\n    gsSPLight(&bowser_seg6_lights_06038C38.a, 2),\n    gsSPVertex(bowser_seg6_vertex_06039368, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bowser_seg6_vertex_06039458, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x060398B0 - 0x06039958\nconst Gfx bowser_seg6_dl_060398B0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06022438),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_seg6_vertex_06039528, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(14, 11, 13, 0x0, 15,  0,  2, 0x0),\n    gsSPVertex(bowser_seg6_vertex_06039628, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  5,  4, 0x0),\n    gsSP2Triangles( 8,  5,  9, 0x0,  6,  5,  8, 0x0),\n    gsSP1Triangle( 9,  5,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06039958 - 0x060399D8\nconst Gfx bowser_seg6_dl_06039958[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06022C38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_seg6_vertex_060396C8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 1, 10,  2, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0, 15,  3,  5, 0x0),\n    gsSPVertex(bowser_seg6_vertex_060397C8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x060399D8 - 0x06039A60\nconst Gfx bowser_seg6_dl_060399D8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_seg6_dl_06039808),\n    gsSPDisplayList(bowser_seg6_dl_060398B0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_seg6_dl_06039958),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x06039A60\nstatic const Vtx bowser_seg6_vertex_06039A60[] = {\n    {{{    91,     -2,    -17}, 0, {  -308,    -60}, {0x32, 0x8c, 0xfb, 0xff}}},\n    {{{    91,     -2,     22}, 0, {  -298,    522}, {0x3a, 0x91, 0x0c, 0xff}}},\n    {{{    54,    -16,     22}, 0, {   280,    532}, {0x0e, 0x84, 0x15, 0xff}}},\n    {{{    74,     -3,    -48}, 0, {   -54,   -518}, {0x12, 0xa7, 0xa8, 0xff}}},\n    {{{    54,    -16,    -17}, 0, {   272,    -48}, {0x02, 0x83, 0xeb, 0xff}}},\n    {{{    74,     -3,     53}, 0, {     0,    990}, {0x10, 0xb7, 0x66, 0xff}}},\n    {{{   -16,      3,     42}, 0, {  1460,    844}, {0xd8, 0xb0, 0x59, 0xff}}},\n    {{{   -15,     -5,     22}, 0, {  1418,    552}, {0xdf, 0x87, 0x11, 0xff}}},\n    {{{    92,     29,     22}, 0, {   162,   2132}, {0x28, 0x78, 0xfc, 0xff}}},\n    {{{    92,     29,    -17}, 0, {   802,   2114}, {0x1c, 0x7b, 0x05, 0xff}}},\n    {{{    56,     36,    -17}, 0, {   812,   1498}, {0x0e, 0x7e, 0xfa, 0xff}}},\n    {{{    56,     36,     22}, 0, {   172,   1516}, {0x0c, 0x7e, 0x07, 0xff}}},\n    {{{    76,     31,     53}, 0, {  -342,   1870}, {0x0e, 0x58, 0x5a, 0xff}}},\n    {{{   -45,      9,     22}, 0, {  1920,    562}, {0xa1, 0xb9, 0x2d, 0xff}}},\n    {{{   -45,      9,    -17}, 0, {  1910,    -20}, {0xa7, 0xc0, 0xc1, 0xff}}},\n    {{{   -15,     -5,    -17}, 0, {  1408,    -28}, {0xd8, 0x89, 0xef, 0xff}}},\n};\n\n// 0x06039B60\nstatic const Vtx bowser_seg6_vertex_06039B60[] = {\n    {{{    56,     36,    -17}, 0, {   812,   1498}, {0x0e, 0x7e, 0xfa, 0xff}}},\n    {{{    92,     29,    -17}, 0, {   802,   2114}, {0x1c, 0x7b, 0x05, 0xff}}},\n    {{{    76,     31,    -48}, 0, {  1318,   1824}, {0x07, 0x4b, 0x9a, 0xff}}},\n    {{{   -14,     40,      2}, 0, {   512,    280}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{    56,     36,     22}, 0, {   172,   1516}, {0x0c, 0x7e, 0x07, 0xff}}},\n    {{{   -15,     35,    -37}, 0, {  1152,    264}, {0xdf, 0x53, 0xa7, 0xff}}},\n    {{{   -16,      3,    -37}, 0, {  1036,    282}, {0xdb, 0xbd, 0x9c, 0xff}}},\n    {{{   -15,     35,    -37}, 0, {  1012,    928}, {0xdf, 0x53, 0xa7, 0xff}}},\n    {{{    76,     31,    -48}, 0, {  -122,    912}, {0x07, 0x4b, 0x9a, 0xff}}},\n    {{{   -45,      9,    -17}, 0, {  1408,    400}, {0xa7, 0xc0, 0xc1, 0xff}}},\n    {{{   -51,     37,    -17}, 0, {  1478,    946}, {0x98, 0x3c, 0xd8, 0xff}}},\n    {{{    74,     -3,    -48}, 0, {   -94,    208}, {0x12, 0xa7, 0xa8, 0xff}}},\n    {{{    74,     -3,     53}, 0, {   -88,    348}, {0x10, 0xb7, 0x66, 0xff}}},\n    {{{    76,     31,     53}, 0, {   -74,    848}, {0x0e, 0x58, 0x5a, 0xff}}},\n    {{{   -15,     35,     42}, 0, {  1560,    656}, {0xe1, 0x47, 0x64, 0xff}}},\n};\n\n// 0x06039C50\nstatic const Vtx bowser_seg6_vertex_06039C50[] = {\n    {{{   -16,      3,     42}, 0, {  1460,    844}, {0xd8, 0xb0, 0x59, 0xff}}},\n    {{{   -45,      9,     22}, 0, {  1920,    562}, {0xa1, 0xb9, 0x2d, 0xff}}},\n    {{{   -15,     -5,     22}, 0, {  1418,    552}, {0xdf, 0x87, 0x11, 0xff}}},\n    {{{   -15,     -5,    -17}, 0, {  1408,    -28}, {0xd8, 0x89, 0xef, 0xff}}},\n    {{{   -45,      9,    -17}, 0, {  1910,    -20}, {0xa7, 0xc0, 0xc1, 0xff}}},\n    {{{   -16,      3,    -37}, 0, {  1442,   -318}, {0xdb, 0xbd, 0x9c, 0xff}}},\n    {{{    54,    -16,    -17}, 0, {   272,    -48}, {0x02, 0x83, 0xeb, 0xff}}},\n    {{{   -45,      9,     22}, 0, {  2092,    216}, {0xa1, 0xb9, 0x2d, 0xff}}},\n    {{{   -16,      3,     42}, 0, {  1546,    198}, {0xd8, 0xb0, 0x59, 0xff}}},\n    {{{   -15,     35,     42}, 0, {  1560,    656}, {0xe1, 0x47, 0x64, 0xff}}},\n    {{{   -51,     37,     22}, 0, {  2236,    586}, {0xb1, 0x55, 0x32, 0xff}}},\n    {{{    74,     -3,     53}, 0, {   -88,    348}, {0x10, 0xb7, 0x66, 0xff}}},\n    {{{    56,     36,     22}, 0, {   172,   1516}, {0x0c, 0x7e, 0x07, 0xff}}},\n    {{{   -14,     40,      2}, 0, {   512,    280}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{   -15,     35,     42}, 0, {  -128,    300}, {0xe1, 0x47, 0x64, 0xff}}},\n    {{{    76,     31,     53}, 0, {  -342,   1870}, {0x0e, 0x58, 0x5a, 0xff}}},\n};\n\n// 0x06039D50\nstatic const Vtx bowser_seg6_vertex_06039D50[] = {\n    {{{   -14,     40,      2}, 0, {   512,    280}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{   -51,     37,     22}, 0, {   200,   -324}, {0xb1, 0x55, 0x32, 0xff}}},\n    {{{   -15,     35,     42}, 0, {  -128,    300}, {0xe1, 0x47, 0x64, 0xff}}},\n    {{{   -15,     35,    -37}, 0, {  1152,    264}, {0xdf, 0x53, 0xa7, 0xff}}},\n    {{{   -51,     37,    -17}, 0, {   840,   -342}, {0x98, 0x3c, 0xd8, 0xff}}},\n    {{{   -45,      9,    -17}, 0, {  1026,    300}, {0xa7, 0xc0, 0xc1, 0xff}}},\n    {{{   -45,      9,     22}, 0, {   310,    298}, {0xa1, 0xb9, 0x2d, 0xff}}},\n    {{{   -51,     37,    -17}, 0, {   928,    754}, {0x98, 0x3c, 0xd8, 0xff}}},\n    {{{   -51,     37,     22}, 0, {   214,    750}, {0xb1, 0x55, 0x32, 0xff}}},\n    {{{    74,     -3,    -48}, 0, {  1318,   1834}, {0x12, 0xa7, 0xa8, 0xff}}},\n    {{{    54,    -16,    -17}, 0, {   812,   1512}, {0x02, 0x83, 0xeb, 0xff}}},\n    {{{   -16,      3,    -37}, 0, {  1152,    274}, {0xdb, 0xbd, 0x9c, 0xff}}},\n};\n\n// 0x06039E10\nstatic const Vtx bowser_seg6_vertex_06039E10[] = {\n    {{{    92,     29,     22}, 0, {    44,    928}, {0x28, 0x78, 0xfc, 0xff}}},\n    {{{   104,     30,     16}, 0, {   172,   1216}, {0x16, 0x6b, 0x3f, 0xff}}},\n    {{{    92,     29,    -17}, 0, {   972,    908}, {0x1c, 0x7b, 0x05, 0xff}}},\n    {{{   104,     30,    -11}, 0, {   846,   1200}, {0x1f, 0x5c, 0xaf, 0xff}}},\n    {{{   136,     31,      2}, 0, {   512,   1972}, {0x7b, 0x1c, 0x00, 0xff}}},\n    {{{    92,     29,    -17}, 0, {   212,   1076}, {0x1c, 0x7b, 0x05, 0xff}}},\n    {{{   106,      2,    -11}, 0, {   862,   1244}, {0x46, 0xca, 0xa6, 0xff}}},\n    {{{    91,     -2,    -17}, 0, {   858,    916}, {0x32, 0x8c, 0xfb, 0xff}}},\n    {{{   104,     30,    -11}, 0, {   270,   1316}, {0x1f, 0x5c, 0xaf, 0xff}}},\n    {{{   136,     31,      2}, 0, {   502,   1956}, {0x7b, 0x1c, 0x00, 0xff}}},\n    {{{    91,     -2,    -17}, 0, {   -82,    924}, {0x32, 0x8c, 0xfb, 0xff}}},\n    {{{   106,      2,     16}, 0, {   790,   1272}, {0x44, 0xb7, 0x4d, 0xff}}},\n    {{{    91,     -2,     22}, 0, {   914,    976}, {0x3a, 0x91, 0x0c, 0xff}}},\n    {{{   106,      2,    -11}, 0, {    78,   1236}, {0x46, 0xca, 0xa6, 0xff}}},\n};\n\n// 0x06039EF0\nstatic const Vtx bowser_seg6_vertex_06039EF0[] = {\n    {{{   104,     27,     25}, 0, {   300,   1356}, {0x1a, 0x51, 0xa2, 0xff}}},\n    {{{   126,     31,     32}, 0, {   416,   1916}, {0x7a, 0x20, 0x05, 0xff}}},\n    {{{   106,      6,     26}, 0, {   856,   1344}, {0x47, 0xc6, 0xa9, 0xff}}},\n    {{{   106,      2,    -11}, 0, {    78,   1236}, {0x46, 0xca, 0xa6, 0xff}}},\n    {{{   136,     31,      2}, 0, {   476,   1924}, {0x7b, 0x1c, 0x00, 0xff}}},\n    {{{   106,      2,     16}, 0, {   790,   1272}, {0x44, 0xb7, 0x4d, 0xff}}},\n    {{{    76,     31,     53}, 0, {   880,    820}, {0x0e, 0x58, 0x5a, 0xff}}},\n    {{{    93,     31,     49}, 0, {   748,   1252}, {0x1b, 0x6e, 0x37, 0xff}}},\n    {{{    92,     29,     22}, 0, {    18,   1036}, {0x28, 0x78, 0xfc, 0xff}}},\n    {{{   104,     27,     25}, 0, {   102,   1384}, {0x1a, 0x51, 0xa2, 0xff}}},\n    {{{   126,     31,     32}, 0, {   254,   2032}, {0x7a, 0x20, 0x05, 0xff}}},\n    {{{    92,     29,     22}, 0, {   116,   1072}, {0x28, 0x78, 0xfc, 0xff}}},\n    {{{    91,     -2,     22}, 0, {   926,    920}, {0x3a, 0x91, 0x0c, 0xff}}},\n    {{{    76,     31,     53}, 0, {   -10,    816}, {0x0e, 0x58, 0x5a, 0xff}}},\n    {{{    74,     -3,     53}, 0, {   860,    760}, {0x10, 0xb7, 0x66, 0xff}}},\n    {{{    95,      6,     49}, 0, {   736,   1228}, {0x3e, 0xc3, 0x5c, 0xff}}},\n};\n\n// 0x06039FF0\nstatic const Vtx bowser_seg6_vertex_06039FF0[] = {\n    {{{    91,     -2,     22}, 0, {   138,    952}, {0x3a, 0x91, 0x0c, 0xff}}},\n    {{{    95,      6,     49}, 0, {   790,   1252}, {0x3e, 0xc3, 0x5c, 0xff}}},\n    {{{    74,     -3,     53}, 0, {   958,    796}, {0x10, 0xb7, 0x66, 0xff}}},\n    {{{   106,      6,     26}, 0, {   192,   1352}, {0x47, 0xc6, 0xa9, 0xff}}},\n    {{{   126,     31,     32}, 0, {   298,   1992}, {0x7a, 0x20, 0x05, 0xff}}},\n    {{{   106,      2,     16}, 0, {   968,   1240}, {0x44, 0xb7, 0x4d, 0xff}}},\n    {{{   104,     30,     16}, 0, {    34,   1232}, {0x16, 0x6b, 0x3f, 0xff}}},\n    {{{    92,     29,     22}, 0, {   -42,    980}, {0x28, 0x78, 0xfc, 0xff}}},\n    {{{   136,     31,      2}, 0, {   354,   1912}, {0x7b, 0x1c, 0x00, 0xff}}},\n    {{{    91,     -2,     22}, 0, {   984,    908}, {0x3a, 0x91, 0x0c, 0xff}}},\n    {{{    95,      6,     49}, 0, {   736,   1228}, {0x3e, 0xc3, 0x5c, 0xff}}},\n    {{{   126,     31,     32}, 0, {   244,   1992}, {0x7a, 0x20, 0x05, 0xff}}},\n    {{{    93,     31,     49}, 0, {    88,   1200}, {0x1b, 0x6e, 0x37, 0xff}}},\n    {{{    76,     31,     53}, 0, {   -10,    816}, {0x0e, 0x58, 0x5a, 0xff}}},\n};\n\n// 0x0603A0D0\nstatic const Vtx bowser_seg6_vertex_0603A0D0[] = {\n    {{{    91,     -2,    -17}, 0, {   992,    904}, {0x32, 0x8c, 0xfb, 0xff}}},\n    {{{    74,     -3,    -48}, 0, {   246,    864}, {0x12, 0xa7, 0xa8, 0xff}}},\n    {{{   100,      5,    -44}, 0, {   386,   1256}, {0x3c, 0xbc, 0xa8, 0xff}}},\n    {{{    92,     29,    -17}, 0, {   222,    956}, {0x1c, 0x7b, 0x05, 0xff}}},\n    {{{   105,     29,    -19}, 0, {   270,   1160}, {0x10, 0x54, 0x5d, 0xff}}},\n    {{{    98,     31,    -44}, 0, {   962,   1236}, {0x15, 0x6e, 0xc5, 0xff}}},\n    {{{    76,     31,    -48}, 0, {  1104,    932}, {0x07, 0x4b, 0x9a, 0xff}}},\n    {{{   132,     31,    -26}, 0, {   430,   1636}, {0x7c, 0x1b, 0x00, 0xff}}},\n    {{{    76,     31,    -48}, 0, {   562,    936}, {0x07, 0x4b, 0x9a, 0xff}}},\n    {{{    98,     31,    -44}, 0, {   664,   1344}, {0x15, 0x6e, 0xc5, 0xff}}},\n    {{{   100,      5,    -44}, 0, {  1234,   1292}, {0x3c, 0xbc, 0xa8, 0xff}}},\n    {{{    74,     -3,    -48}, 0, {  1330,    776}, {0x12, 0xa7, 0xa8, 0xff}}},\n    {{{   132,     31,    -26}, 0, {   792,   2032}, {0x7c, 0x1b, 0x00, 0xff}}},\n    {{{   132,     31,    -26}, 0, {   848,   1780}, {0x7c, 0x1b, 0x00, 0xff}}},\n    {{{   107,      6,    -20}, 0, {   954,   1212}, {0x3c, 0xc5, 0x5e, 0xff}}},\n};\n\n// 0x0603A1C0\nstatic const Vtx bowser_seg6_vertex_0603A1C0[] = {\n    {{{    92,     29,    -17}, 0, {   784,    932}, {0x1c, 0x7b, 0x05, 0xff}}},\n    {{{    91,     -2,    -17}, 0, {     8,    928}, {0x32, 0x8c, 0xfb, 0xff}}},\n    {{{   107,      6,    -20}, 0, {   180,   1232}, {0x3c, 0xc5, 0x5e, 0xff}}},\n    {{{   132,     31,    -26}, 0, {   704,   1704}, {0x7c, 0x1b, 0x00, 0xff}}},\n    {{{   105,     29,    -19}, 0, {   740,   1168}, {0x10, 0x54, 0x5d, 0xff}}},\n};\n\n// 0x0603A210 - 0x0603A380\nconst Gfx bowser_seg6_dl_0603A210[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06022438),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bowser_seg6_lights_06038C38.l, 1),\n    gsSPLight(&bowser_seg6_lights_06038C38.a, 2),\n    gsSPVertex(bowser_seg6_vertex_06039A60, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 4,  0,  2, 0x0,  2,  1,  5, 0x0),\n    gsSP2Triangles( 6,  7,  2, 0x0,  4,  2,  7, 0x0),\n    gsSP2Triangles( 6,  2,  5, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(11,  8, 10, 0x0, 11, 12,  8, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(bowser_seg6_vertex_06039B60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 0,  5,  3, 0x0,  5,  0,  2, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  6,  9, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0, 11,  6,  8, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bowser_seg6_vertex_06039C50, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  2,  3,  6, 0x0),\n    gsSP2Triangles( 2,  1,  3, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 15, 12, 14, 0x0),\n    gsSPVertex(bowser_seg6_vertex_06039D50, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0603A380 - 0x0603A4E8\nconst Gfx bowser_seg6_dl_0603A380[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06029C38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_seg6_vertex_06039E10, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  8,  9,  6, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(bowser_seg6_vertex_06039EF0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles( 7, 10,  9, 0x0, 11,  2, 12, 0x0),\n    gsSP2Triangles(11,  0,  2, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bowser_seg6_vertex_06039FF0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 3,  4,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  9,  5,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603A0D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10, 11,  8, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0,  2, 13, 14, 0x0),\n    gsSP1Triangle( 2, 14,  0, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603A1C0, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP1Triangle( 2,  4,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0603A4E8 - 0x0603A568\nconst Gfx bowser_seg6_dl_0603A4E8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_seg6_dl_0603A210),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_seg6_dl_0603A380),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0603A568\nstatic const Vtx bowser_seg6_vertex_0603A568[] = {\n    {{{    15,     37,    -13}, 0, {  1182,    694}, {0xda, 0x4e, 0xa5, 0xff}}},\n    {{{    37,    -25,    -11}, 0, {  -316,     92}, {0x22, 0xc5, 0x96, 0xff}}},\n    {{{    13,     -3,    -13}, 0, {   178,    684}, {0x59, 0x47, 0xca, 0xff}}},\n    {{{     0,    -18,     15}, 0, {   680,    -50}, {0x9b, 0xc7, 0x32, 0xff}}},\n    {{{     0,     -6,     20}, 0, {   400,    -66}, {0xc6, 0xe2, 0x6c, 0xff}}},\n    {{{    -2,     19,     15}, 0, {  -124,    252}, {0x88, 0x21, 0x18, 0xff}}},\n    {{{    -1,      8,     20}, 0, {    78,     56}, {0xd9, 0x15, 0x76, 0xff}}},\n    {{{     0,    -23,    -11}, 0, {   966,    448}, {0xac, 0xa2, 0xfa, 0xff}}},\n    {{{    -2,     20,    -15}, 0, {    38,    882}, {0xa4, 0x3b, 0xc1, 0xff}}},\n    {{{     0,    -17,    -30}, 0, {   958,    896}, {0xb9, 0xd5, 0xa1, 0xff}}},\n    {{{    -2,     20,    -15}, 0, {   726,   1114}, {0xa4, 0x3b, 0xc1, 0xff}}},\n    {{{    15,      2,    -32}, 0, {   324,    686}, {0x08, 0x61, 0xaf, 0xff}}},\n    {{{     0,    -17,    -30}, 0, {  -182,   1010}, {0xb9, 0xd5, 0xa1, 0xff}}},\n    {{{    36,     38,    -12}, 0, {  1236,    186}, {0x15, 0x66, 0xb9, 0xff}}},\n};\n\n// 0x0603A648\nstatic const Vtx bowser_seg6_vertex_0603A648[] = {\n    {{{    37,    -25,    -11}, 0, {  1046,    614}, {0x22, 0xc5, 0x96, 0xff}}},\n    {{{    51,    -23,    -12}, 0, {  1378,    592}, {0x15, 0xa1, 0xaf, 0xff}}},\n    {{{    51,    -20,     14}, 0, {  1332,     -2}, {0x2b, 0xa4, 0x4b, 0xff}}},\n    {{{    36,     38,    -12}, 0, {  1236,    186}, {0x15, 0x66, 0xb9, 0xff}}},\n    {{{    50,     20,     -2}, 0, {   830,   -180}, {0x25, 0xea, 0x89, 0xff}}},\n    {{{    37,    -25,    -11}, 0, {  -316,     92}, {0x22, 0xc5, 0x96, 0xff}}},\n    {{{    54,      0,     -2}, 0, {   338,   -322}, {0xf9, 0x18, 0x84, 0xff}}},\n    {{{    51,    -23,    -12}, 0, {  -236,   -240}, {0x15, 0xa1, 0xaf, 0xff}}},\n    {{{    22,    -26,     15}, 0, {   648,     48}, {0xf8, 0x94, 0x41, 0xff}}},\n    {{{     0,    -23,    -11}, 0, {   152,    680}, {0xac, 0xa2, 0xfa, 0xff}}},\n    {{{     0,    -18,     15}, 0, {   106,     88}, {0x9b, 0xc7, 0x32, 0xff}}},\n    {{{    20,    -23,    -22}, 0, {   664,    880}, {0x2f, 0x8d, 0xe9, 0xff}}},\n    {{{     0,    -17,    -30}, 0, {   204,   1114}, {0xb9, 0xd5, 0xa1, 0xff}}},\n    {{{    50,     20,     24}, 0, {   216,   -160}, {0x3b, 0x32, 0x64, 0xff}}},\n    {{{    36,     35,     14}, 0, {  -154,    106}, {0x08, 0x61, 0x50, 0xff}}},\n    {{{    -1,      8,     20}, 0, {   360,    986}, {0xd9, 0x15, 0x76, 0xff}}},\n};\n\n// 0x0603A748\nstatic const Vtx bowser_seg6_vertex_0603A748[] = {\n    {{{    16,     35,     15}, 0, {   734,    100}, {0xe1, 0x67, 0x43, 0xff}}},\n    {{{    36,     35,     14}, 0, {    96,    132}, {0x08, 0x61, 0x50, 0xff}}},\n    {{{    36,     38,    -12}, 0, {    84,    916}, {0x15, 0x66, 0xb9, 0xff}}},\n    {{{    -2,     19,     15}, 0, {  1290,     72}, {0x88, 0x21, 0x18, 0xff}}},\n    {{{    15,     37,    -13}, 0, {   724,    938}, {0xda, 0x4e, 0xa5, 0xff}}},\n    {{{    -2,     20,    -15}, 0, {  1278,    964}, {0xa4, 0x3b, 0xc1, 0xff}}},\n    {{{    13,     -3,    -13}, 0, {   236,    338}, {0x59, 0x47, 0xca, 0xff}}},\n    {{{    15,      2,    -32}, 0, {   236,    830}, {0x08, 0x61, 0xaf, 0xff}}},\n    {{{    -2,     20,    -15}, 0, {   966,    548}, {0xa4, 0x3b, 0xc1, 0xff}}},\n    {{{    55,      0,     24}, 0, {   700,   -216}, {0x37, 0xf3, 0x71, 0xff}}},\n    {{{    50,     20,     24}, 0, {   216,   -160}, {0x3b, 0x32, 0x64, 0xff}}},\n    {{{    -1,      8,     20}, 0, {   360,    986}, {0xd9, 0x15, 0x76, 0xff}}},\n    {{{    36,     35,     14}, 0, {  -154,    106}, {0x08, 0x61, 0x50, 0xff}}},\n    {{{    16,     35,     15}, 0, {  -208,    554}, {0xe1, 0x67, 0x43, 0xff}}},\n    {{{     0,     -6,     20}, 0, {   704,   1000}, {0xc6, 0xe2, 0x6c, 0xff}}},\n    {{{    -2,     19,     15}, 0, {   106,    984}, {0x88, 0x21, 0x18, 0xff}}},\n};\n\n// 0x0603A848\nstatic const Vtx bowser_seg6_vertex_0603A848[] = {\n    {{{    20,    -23,    -22}, 0, {   664,    880}, {0x2f, 0x8d, 0xe9, 0xff}}},\n    {{{     0,    -17,    -30}, 0, {   204,   1114}, {0xb9, 0xd5, 0xa1, 0xff}}},\n    {{{    14,    -12,    -35}, 0, {   552,   1184}, {0x00, 0xcd, 0x8d, 0xff}}},\n    {{{    15,      2,    -32}, 0, {   324,    686}, {0x08, 0x61, 0xaf, 0xff}}},\n    {{{    14,    -12,    -35}, 0, {   -38,    684}, {0x00, 0xcd, 0x8d, 0xff}}},\n    {{{     0,    -17,    -30}, 0, {  -182,   1010}, {0xb9, 0xd5, 0xa1, 0xff}}},\n    {{{    13,     -3,    -13}, 0, {   730,    784}, {0x59, 0x47, 0xca, 0xff}}},\n    {{{    37,    -25,    -11}, 0, {   172,    178}, {0x22, 0xc5, 0x96, 0xff}}},\n    {{{    20,    -23,    -22}, 0, {    74,    774}, {0x2f, 0x8d, 0xe9, 0xff}}},\n    {{{     0,     -6,     20}, 0, {   704,   1000}, {0xc6, 0xe2, 0x6c, 0xff}}},\n    {{{     0,    -18,     15}, 0, {   964,   1020}, {0x9b, 0xc7, 0x32, 0xff}}},\n    {{{    22,    -26,     15}, 0, {  1214,    558}, {0xf8, 0x94, 0x41, 0xff}}},\n    {{{    51,    -20,     14}, 0, {  1154,    -68}, {0x2b, 0xa4, 0x4b, 0xff}}},\n    {{{    55,      0,     24}, 0, {   700,   -216}, {0x37, 0xf3, 0x71, 0xff}}},\n};\n\n// 0x0603A928\nstatic const Vtx bowser_seg6_vertex_0603A928[] = {\n    {{{    55,      0,     24}, 0, {   194,    592}, {0x37, 0xf3, 0x71, 0xff}}},\n    {{{    69,     -2,      6}, 0, {   248,   1300}, {0x60, 0x42, 0x31, 0xff}}},\n    {{{    54,      0,     -2}, 0, {   726,    960}, {0xf9, 0x18, 0x84, 0xff}}},\n    {{{    36,     38,    -12}, 0, {   270,    832}, {0x15, 0x66, 0xb9, 0xff}}},\n    {{{    48,     36,    -12}, 0, {   378,   1276}, {0xec, 0x09, 0x84, 0xff}}},\n    {{{    50,     20,     -2}, 0, {  1064,    960}, {0x25, 0xea, 0x89, 0xff}}},\n    {{{    54,     23,     -7}, 0, {   898,   1248}, {0xf1, 0x8f, 0xc9, 0xff}}},\n    {{{    62,     24,    -15}, 0, {   708,   1752}, {0x65, 0xe1, 0xbb, 0xff}}},\n    {{{    50,     20,     -2}, 0, {   -10,   1060}, {0x25, 0xea, 0x89, 0xff}}},\n    {{{    62,     16,     -6}, 0, {   206,   1404}, {0xe7, 0x37, 0x91, 0xff}}},\n    {{{    54,      0,     -2}, 0, {   906,    948}, {0xf9, 0x18, 0x84, 0xff}}},\n    {{{    65,      2,     -5}, 0, {   834,   1308}, {0xf3, 0x9f, 0xb1, 0xff}}},\n    {{{    78,      9,    -18}, 0, {   600,   1912}, {0x66, 0x03, 0xb6, 0xff}}},\n    {{{    63,     -2,     -7}, 0, {   632,   1320}, {0xee, 0x67, 0xb9, 0xff}}},\n    {{{    78,     -8,    -20}, 0, {   576,   2012}, {0x69, 0x10, 0xbd, 0xff}}},\n};\n\n// 0x0603AA18\nstatic const Vtx bowser_seg6_vertex_0603AA18[] = {\n    {{{    62,    -17,    -13}, 0, {   688,   1364}, {0xf2, 0xe4, 0x86, 0xff}}},\n    {{{    51,    -23,    -12}, 0, {   960,    992}, {0x15, 0xa1, 0xaf, 0xff}}},\n    {{{    54,      0,     -2}, 0, {   -70,   1012}, {0xf9, 0x18, 0x84, 0xff}}},\n    {{{    15,      2,    -32}, 0, {   876,    840}, {0x08, 0x61, 0xaf, 0xff}}},\n    {{{    29,      0,    -32}, 0, {   698,   1420}, {0x1e, 0x6b, 0xc5, 0xff}}},\n    {{{    29,     -9,    -34}, 0, {   456,   1336}, {0x13, 0xeb, 0x85, 0xff}}},\n    {{{    14,    -12,    -35}, 0, {   480,    704}, {0x00, 0xcd, 0x8d, 0xff}}},\n    {{{    44,     -6,    -31}, 0, {   430,   1972}, {0x75, 0x16, 0xd5, 0xff}}},\n    {{{    32,    -16,    -26}, 0, {   154,   1348}, {0x43, 0x96, 0xf2, 0xff}}},\n    {{{    51,    -20,     14}, 0, {   826,    744}, {0x2b, 0xa4, 0x4b, 0xff}}},\n    {{{    67,    -17,      1}, 0, {   794,   1356}, {0x4e, 0xa0, 0x19, 0xff}}},\n    {{{    69,     -2,      6}, 0, {   154,   1324}, {0x60, 0x42, 0x31, 0xff}}},\n    {{{    55,      0,     24}, 0, {   -82,    672}, {0x37, 0xf3, 0x71, 0xff}}},\n    {{{    63,     -2,     -7}, 0, {    54,   1328}, {0xee, 0x67, 0xb9, 0xff}}},\n};\n\n// 0x0603AAF8\nstatic const Vtx bowser_seg6_vertex_0603AAF8[] = {\n    {{{    67,     17,      6}, 0, {   676,   1304}, {0x52, 0x5a, 0x22, 0xff}}},\n    {{{    78,      9,    -18}, 0, {   246,   2024}, {0x66, 0x03, 0xb6, 0xff}}},\n    {{{    62,     16,     -6}, 0, {   156,   1420}, {0xe7, 0x37, 0x91, 0xff}}},\n    {{{    63,     -2,     -7}, 0, {    54,   1328}, {0xee, 0x67, 0xb9, 0xff}}},\n    {{{    78,     -8,    -20}, 0, {   382,   1912}, {0x69, 0x10, 0xbd, 0xff}}},\n    {{{    62,    -17,    -13}, 0, {   688,   1364}, {0xf2, 0xe4, 0x86, 0xff}}},\n    {{{    54,      0,     -2}, 0, {    60,    948}, {0xf9, 0x18, 0x84, 0xff}}},\n    {{{    65,      2,     -5}, 0, {   236,   1312}, {0xf3, 0x9f, 0xb1, 0xff}}},\n    {{{    70,      3,      6}, 0, {   672,   1308}, {0x55, 0xa8, 0x1f, 0xff}}},\n    {{{    55,      0,     24}, 0, {   744,    612}, {0x37, 0xf3, 0x71, 0xff}}},\n    {{{    78,      9,    -18}, 0, {   282,   1932}, {0x66, 0x03, 0xb6, 0xff}}},\n    {{{    55,      0,     24}, 0, {   -18,    640}, {0x37, 0xf3, 0x71, 0xff}}},\n    {{{    70,      3,      6}, 0, {    78,   1320}, {0x55, 0xa8, 0x1f, 0xff}}},\n    {{{    67,     17,      6}, 0, {   596,   1320}, {0x52, 0x5a, 0x22, 0xff}}},\n    {{{    50,     20,     24}, 0, {   738,    620}, {0x3b, 0x32, 0x64, 0xff}}},\n};\n\n// 0x0603ABE8\nstatic const Vtx bowser_seg6_vertex_0603ABE8[] = {\n    {{{    56,     35,      3}, 0, {   634,   1512}, {0x44, 0x68, 0x19, 0xff}}},\n    {{{    36,     35,     14}, 0, {  1066,    788}, {0x08, 0x61, 0x50, 0xff}}},\n    {{{    50,     20,     24}, 0, {   198,    532}, {0x3b, 0x32, 0x64, 0xff}}},\n    {{{    67,     17,      6}, 0, {   676,   1304}, {0x52, 0x5a, 0x22, 0xff}}},\n    {{{    62,     16,     -6}, 0, {   156,   1420}, {0xe7, 0x37, 0x91, 0xff}}},\n    {{{    50,     20,     -2}, 0, {   -90,   1084}, {0x25, 0xea, 0x89, 0xff}}},\n    {{{    50,     20,     24}, 0, {   748,    624}, {0x3b, 0x32, 0x64, 0xff}}},\n    {{{    50,     20,     -2}, 0, {   180,   1028}, {0x25, 0xea, 0x89, 0xff}}},\n    {{{    54,     23,     -7}, 0, {   310,   1312}, {0xf1, 0x8f, 0xc9, 0xff}}},\n    {{{    60,     25,      6}, 0, {   820,   1292}, {0x67, 0xba, 0x14, 0xff}}},\n    {{{    50,     20,     24}, 0, {   708,    544}, {0x3b, 0x32, 0x64, 0xff}}},\n    {{{    62,     24,    -15}, 0, {   498,   1792}, {0x65, 0xe1, 0xbb, 0xff}}},\n    {{{    60,     25,      6}, 0, {   178,   1344}, {0x67, 0xba, 0x14, 0xff}}},\n    {{{    28,     -4,    -21}, 0, {   586,   1272}, {0x38, 0x3a, 0x61, 0xff}}},\n    {{{    13,     -3,    -13}, 0, {   602,    624}, {0x59, 0x47, 0xca, 0xff}}},\n    {{{    20,    -23,    -22}, 0, {   232,    736}, {0x2f, 0x8d, 0xe9, 0xff}}},\n};\n\n// 0x0603ACE8\nstatic const Vtx bowser_seg6_vertex_0603ACE8[] = {\n    {{{    28,     -4,    -21}, 0, {   562,   1172}, {0x38, 0x3a, 0x61, 0xff}}},\n    {{{    29,      0,    -32}, 0, {   718,   1352}, {0x1e, 0x6b, 0xc5, 0xff}}},\n    {{{    15,      2,    -32}, 0, {   834,    816}, {0x08, 0x61, 0xaf, 0xff}}},\n    {{{    32,    -16,    -26}, 0, {   338,   1244}, {0x43, 0x96, 0xf2, 0xff}}},\n    {{{    44,     -6,    -31}, 0, {   540,   1852}, {0x75, 0x16, 0xd5, 0xff}}},\n    {{{    13,     -3,    -13}, 0, {   578,    524}, {0x59, 0x47, 0xca, 0xff}}},\n    {{{    32,    -16,    -26}, 0, {   154,   1348}, {0x43, 0x96, 0xf2, 0xff}}},\n    {{{    20,    -23,    -22}, 0, {   -18,    720}, {0x2f, 0x8d, 0xe9, 0xff}}},\n    {{{    14,    -12,    -35}, 0, {   480,    704}, {0x00, 0xcd, 0x8d, 0xff}}},\n    {{{    20,    -23,    -22}, 0, {   232,    736}, {0x2f, 0x8d, 0xe9, 0xff}}},\n    {{{    32,    -16,    -26}, 0, {   362,   1340}, {0x43, 0x96, 0xf2, 0xff}}},\n    {{{    28,     -4,    -21}, 0, {   586,   1272}, {0x38, 0x3a, 0x61, 0xff}}},\n    {{{    60,     25,      6}, 0, {   252,   1212}, {0x67, 0xba, 0x14, 0xff}}},\n    {{{    62,     24,    -15}, 0, {   196,   2012}, {0x65, 0xe1, 0xbb, 0xff}}},\n    {{{    56,     35,      3}, 0, {   708,   1380}, {0x44, 0x68, 0x19, 0xff}}},\n};\n\n// 0x0603ADD8\nstatic const Vtx bowser_seg6_vertex_0603ADD8[] = {\n    {{{    56,     35,      3}, 0, {   578,   1580}, {0x44, 0x68, 0x19, 0xff}}},\n    {{{    48,     36,    -12}, 0, {   -52,   1248}, {0xec, 0x09, 0x84, 0xff}}},\n    {{{    36,     38,    -12}, 0, {  -250,    736}, {0x15, 0x66, 0xb9, 0xff}}},\n    {{{    62,     24,    -15}, 0, {    86,   1984}, {0x65, 0xe1, 0xbb, 0xff}}},\n    {{{    36,     35,     14}, 0, {   640,    724}, {0x08, 0x61, 0x50, 0xff}}},\n    {{{    51,    -23,    -12}, 0, {    36,   1020}, {0x15, 0xa1, 0xaf, 0xff}}},\n    {{{    62,    -17,    -13}, 0, {   332,   1368}, {0xf2, 0xe4, 0x86, 0xff}}},\n    {{{    67,    -17,      1}, 0, {   760,   1272}, {0x4e, 0xa0, 0x19, 0xff}}},\n    {{{    51,    -20,     14}, 0, {   682,    732}, {0x2b, 0xa4, 0x4b, 0xff}}},\n    {{{    78,     -8,    -20}, 0, {   594,   1908}, {0x69, 0x10, 0xbd, 0xff}}},\n    {{{    67,    -17,      1}, 0, {   800,   1316}, {0x4e, 0xa0, 0x19, 0xff}}},\n    {{{    78,     -8,    -20}, 0, {   664,   2008}, {0x69, 0x10, 0xbd, 0xff}}},\n    {{{    69,     -2,      6}, 0, {   160,   1284}, {0x60, 0x42, 0x31, 0xff}}},\n    {{{    70,      3,      6}, 0, {    76,   1272}, {0x55, 0xa8, 0x1f, 0xff}}},\n    {{{    78,      9,    -18}, 0, {   334,   2008}, {0x66, 0x03, 0xb6, 0xff}}},\n    {{{    67,     17,      6}, 0, {   592,   1272}, {0x52, 0x5a, 0x22, 0xff}}},\n};\n\n// 0x0603AED8 - 0x0603B038\nconst Gfx bowser_seg6_dl_0603AED8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06022438),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bowser_seg6_lights_06038C38.l, 1),\n    gsSPLight(&bowser_seg6_lights_06038C38.a, 2),\n    gsSPVertex(bowser_seg6_vertex_0603A568, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  5,  8, 0x0),\n    gsSP2Triangles( 7,  3,  5, 0x0,  8,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10,  0,  2, 0x0),\n    gsSP1Triangle( 0, 13,  1, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603A648, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  6,  7,  5, 0x0),\n    gsSP2Triangles( 0,  2,  8, 0x0,  8,  9,  0, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0,  9, 11,  0, 0x0),\n    gsSP2Triangles( 9, 12, 11, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603A748, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  4,  5,  3, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 11, 0x0, 11, 14,  9, 0x0),\n    gsSP1Triangle(13, 15, 11, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603A848, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 13, 0x0,  9, 11, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0603B038 - 0x0603B208\nconst Gfx bowser_seg6_dl_0603B038[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06029C38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_seg6_vertex_0603A928, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  4,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles( 9, 12, 11, 0x0,  1, 13,  2, 0x0),\n    gsSP1Triangle( 1, 14, 13, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603AA18, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 6,  5,  8, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 11, 12,  9, 0x0),\n    gsSP1Triangle( 2, 13,  0, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603AAF8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  9,  6, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(13, 14, 11, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603ABE8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles( 2, 12,  0, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603ACE8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 2,  5,  0, 0x0,  0,  4,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603ADD8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 2,  4,  0, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 7,  8,  5, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0603B208 - 0x0603B288\nconst Gfx bowser_seg6_dl_0603B208[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_seg6_dl_0603AED8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_seg6_dl_0603B038),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0603B288\nstatic const Vtx bowser_seg6_vertex_0603B288[] = {\n    {{{    73,    -38,     22}, 0, {  1154,   1256}, {0x24, 0x8f, 0x2b, 0xff}}},\n    {{{   111,    -17,     22}, 0, {  1858,    808}, {0x5a, 0xc9, 0x45, 0xff}}},\n    {{{    78,    -18,     41}, 0, {  1218,    868}, {0x19, 0xd6, 0x75, 0xff}}},\n    {{{    88,     20,     41}, 0, {  1346,     90}, {0x30, 0x1d, 0x71, 0xff}}},\n    {{{   114,     19,     22}, 0, {  1848,     80}, {0x70, 0x2c, 0x25, 0xff}}},\n    {{{    93,     39,     22}, 0, {  1410,   -298}, {0x33, 0x61, 0x3e, 0xff}}},\n    {{{    24,     32,     41}, 0, {    82,    -92}, {0xf4, 0x2c, 0x76, 0xff}}},\n    {{{   111,    -17,    -15}, 0, {     8,    -66}, {0x62, 0xc3, 0xce, 0xff}}},\n    {{{   111,    -17,     22}, 0, {     0,    902}, {0x5a, 0xc9, 0x45, 0xff}}},\n    {{{    73,    -38,     22}, 0, {  1206,    878}, {0x24, 0x8f, 0x2b, 0xff}}},\n    {{{    73,    -38,    -15}, 0, {  1214,    -92}, {0x20, 0x96, 0xc4, 0xff}}},\n    {{{    93,     39,    -15}, 0, {  1430,   1364}, {0x38, 0x68, 0xd3, 0xff}}},\n    {{{   114,     19,    -15}, 0, {  1976,    994}, {0x69, 0x2a, 0xc8, 0xff}}},\n    {{{    88,     20,    -34}, 0, {  1400,    940}, {0x30, 0x1d, 0x8f, 0xff}}},\n    {{{   111,    -17,    -15}, 0, {  2070,    212}, {0x62, 0xc3, 0xce, 0xff}}},\n    {{{    78,    -18,    -34}, 0, {  1340,     88}, {0x19, 0xd6, 0x8b, 0xff}}},\n};\n\n// 0x0603B388\nstatic const Vtx bowser_seg6_vertex_0603B388[] = {\n    {{{    78,    -18,    -34}, 0, {  1340,     88}, {0x19, 0xd6, 0x8b, 0xff}}},\n    {{{   111,    -17,    -15}, 0, {  2070,    212}, {0x62, 0xc3, 0xce, 0xff}}},\n    {{{    73,    -38,    -15}, 0, {  1310,   -336}, {0x20, 0x96, 0xc4, 0xff}}},\n    {{{    93,     39,     22}, 0, {   226,    912}, {0x33, 0x61, 0x3e, 0xff}}},\n    {{{   114,     19,     22}, 0, {   938,    934}, {0x70, 0x2c, 0x25, 0xff}}},\n    {{{    93,     39,    -15}, 0, {   216,     30}, {0x38, 0x68, 0xd3, 0xff}}},\n    {{{   114,     19,    -15}, 0, {   928,     52}, {0x69, 0x2a, 0xc8, 0xff}}},\n    {{{    30,     59,    -15}, 0, {   -54,   1610}, {0xf3, 0x6f, 0xc6, 0xff}}},\n    {{{    24,     32,    -34}, 0, {   -74,   1020}, {0xf4, 0x2c, 0x8a, 0xff}}},\n    {{{    -7,     38,    -15}, 0, {  -812,   1062}, {0xa2, 0x42, 0xcb, 0xff}}},\n    {{{    12,    -21,    -34}, 0, {  -118,   -158}, {0xe2, 0xde, 0x8a, 0xff}}},\n    {{{   -21,    -23,    -15}, 0, {  -848,   -282}, {0x99, 0xe0, 0xbf, 0xff}}},\n    {{{    88,     20,    -34}, 0, {  1400,    940}, {0x30, 0x1d, 0x8f, 0xff}}},\n    {{{    93,     39,    -15}, 0, {  1430,   1364}, {0x38, 0x68, 0xd3, 0xff}}},\n    {{{     6,    -49,    -15}, 0, {  -140,   -748}, {0xdc, 0x8e, 0xd7, 0xff}}},\n};\n\n// 0x0603B478\nstatic const Vtx bowser_seg6_vertex_0603B478[] = {\n    {{{     6,    -49,     22}, 0, {    42,    882}, {0xdf, 0x97, 0x3e, 0xff}}},\n    {{{   -21,    -23,     22}, 0, {   970,    894}, {0x8f, 0xdd, 0x2b, 0xff}}},\n    {{{     6,    -49,    -15}, 0, {    42,     36}, {0xdc, 0x8e, 0xd7, 0xff}}},\n    {{{   -21,    -23,    -15}, 0, {   968,     48}, {0x99, 0xe0, 0xbf, 0xff}}},\n    {{{    12,    -21,     41}, 0, {   -60,    990}, {0xe2, 0xde, 0x76, 0xff}}},\n    {{{    78,    -18,     41}, 0, {  1218,    868}, {0x19, 0xd6, 0x75, 0xff}}},\n    {{{    24,     32,     41}, 0, {    82,    -92}, {0xf4, 0x2c, 0x76, 0xff}}},\n    {{{    73,    -38,     22}, 0, {  1154,   1256}, {0x24, 0x8f, 0x2b, 0xff}}},\n    {{{   -21,    -23,     22}, 0, {  -700,   1048}, {0x8f, 0xdd, 0x2b, 0xff}}},\n    {{{     6,    -49,     22}, 0, {  -132,   1528}, {0xdf, 0x97, 0x3e, 0xff}}},\n    {{{    -7,     38,     22}, 0, {  -548,   -184}, {0xab, 0x3a, 0x4a, 0xff}}},\n    {{{    30,     59,     22}, 0, {   154,   -632}, {0xf3, 0x78, 0x27, 0xff}}},\n    {{{    93,     39,     22}, 0, {  1410,   -298}, {0x33, 0x61, 0x3e, 0xff}}},\n    {{{    30,     59,    -15}, 0, {   948,     80}, {0xf3, 0x6f, 0xc6, 0xff}}},\n    {{{    -7,     38,    -15}, 0, {    66,     58}, {0xa2, 0x42, 0xcb, 0xff}}},\n    {{{    30,     59,     22}, 0, {   936,    928}, {0xf3, 0x78, 0x27, 0xff}}},\n};\n\n// 0x0603B578\nstatic const Vtx bowser_seg6_vertex_0603B578[] = {\n    {{{    -7,     38,    -15}, 0, {    66,     58}, {0xa2, 0x42, 0xcb, 0xff}}},\n    {{{    -7,     38,     22}, 0, {    54,    906}, {0xab, 0x3a, 0x4a, 0xff}}},\n    {{{    30,     59,     22}, 0, {   936,    928}, {0xf3, 0x78, 0x27, 0xff}}},\n    {{{   -21,    -23,     22}, 0, {    24,    862}, {0x8f, 0xdd, 0x2b, 0xff}}},\n    {{{    -7,     38,     22}, 0, {  1368,    856}, {0xab, 0x3a, 0x4a, 0xff}}},\n    {{{    -7,     38,    -15}, 0, {  1334,     94}, {0xa2, 0x42, 0xcb, 0xff}}},\n    {{{    93,     39,    -15}, 0, {  1430,   1364}, {0x38, 0x68, 0xd3, 0xff}}},\n    {{{    88,     20,    -34}, 0, {  1400,    940}, {0x30, 0x1d, 0x8f, 0xff}}},\n    {{{    24,     32,    -34}, 0, {   -74,   1020}, {0xf4, 0x2c, 0x8a, 0xff}}},\n    {{{    93,     39,     22}, 0, {  1406,    880}, {0x33, 0x61, 0x3e, 0xff}}},\n    {{{    93,     39,    -15}, 0, {  1396,     92}, {0x38, 0x68, 0xd3, 0xff}}},\n    {{{    30,     59,     22}, 0, {    10,    892}, {0xf3, 0x78, 0x27, 0xff}}},\n    {{{    30,     59,    -15}, 0, {     0,    104}, {0xf3, 0x6f, 0xc6, 0xff}}},\n    {{{     6,    -49,     22}, 0, {  1378,    818}, {0xdf, 0x97, 0x3e, 0xff}}},\n    {{{     6,    -49,    -15}, 0, {  1370,      8}, {0xdc, 0x8e, 0xd7, 0xff}}},\n    {{{    73,    -38,     22}, 0, {   -68,    832}, {0x24, 0x8f, 0x2b, 0xff}}},\n};\n\n// 0x0603B678\nstatic const Vtx bowser_seg6_vertex_0603B678[] = {\n    {{{     6,    -49,    -15}, 0, {  1370,      8}, {0xdc, 0x8e, 0xd7, 0xff}}},\n    {{{    73,    -38,    -15}, 0, {   -76,     22}, {0x20, 0x96, 0xc4, 0xff}}},\n    {{{    73,    -38,     22}, 0, {   -68,    832}, {0x24, 0x8f, 0x2b, 0xff}}},\n    {{{   -21,    -23,    -15}, 0, {   -10,    100}, {0x99, 0xe0, 0xbf, 0xff}}},\n    {{{   -21,    -23,     22}, 0, {    24,    862}, {0x8f, 0xdd, 0x2b, 0xff}}},\n    {{{    -7,     38,    -15}, 0, {  1334,     94}, {0xa2, 0x42, 0xcb, 0xff}}},\n    {{{   111,    -17,    -15}, 0, {   948,     58}, {0x62, 0xc3, 0xce, 0xff}}},\n    {{{   114,     19,    -15}, 0, {   124,     38}, {0x69, 0x2a, 0xc8, 0xff}}},\n    {{{   114,     19,     22}, 0, {   102,    858}, {0x70, 0x2c, 0x25, 0xff}}},\n    {{{   111,    -17,     22}, 0, {   926,    878}, {0x5a, 0xc9, 0x45, 0xff}}},\n};\n\n// 0x0603B718 - 0x0603B8D0\nconst Gfx bowser_seg6_dl_0603B718[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06022438),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bowser_seg6_lights_06038C38.l, 1),\n    gsSPLight(&bowser_seg6_lights_06038C38.a, 2),\n    gsSPVertex(bowser_seg6_vertex_0603B288, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  5,  3,  4, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  2,  3,  6, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  9, 10,  7, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 13, 12, 14, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603B388, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11,  9, 0x0,  9,  8, 10, 0x0),\n    gsSP2Triangles( 0, 10,  8, 0x0,  8, 12,  0, 0x0),\n    gsSP2Triangles(10,  0,  2, 0x0,  8,  7, 13, 0x0),\n    gsSP2Triangles(14, 11, 10, 0x0,  2, 14, 10, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603B478, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  5,  4, 0x0),\n    gsSP2Triangles( 4,  8,  9, 0x0,  4,  9,  7, 0x0),\n    gsSP2Triangles(10,  8,  4, 0x0,  4,  6, 10, 0x0),\n    gsSP2Triangles(11, 10,  6, 0x0, 12, 11,  6, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603B578, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(10, 12, 11, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603B678, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0603B8D0 - 0x0603B948\nconst Gfx bowser_seg6_dl_0603B8D0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_seg6_dl_0603B718),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsDPSetAlphaCompare(G_AC_NONE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n#if BUGFIX_BOWSER_FADING_OUT\n// 0x0603B948 - 0x0603B9C8\nconst Gfx bowser_seg6_dl_0603B948[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_seg6_dl_0603B718),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsDPSetAlphaCompare(G_AC_NONE),\n    gsDPSetRenderMode(G_RM_AA_ZB_XLU_SURF, G_RM_NOOP2),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n#endif\n\n// 0x0603B948\nstatic const Vtx bowser_seg6_vertex_0603B948[] = {\n    {{{    36,     44,    -26}, 0, {   954,    920}, {0x2c, 0x5f, 0xb9, 0xff}}},\n    {{{    46,     36,    -21}, 0, {   866,     54}, {0x3a, 0x59, 0xbc, 0xff}}},\n    {{{    42,     -6,    -35}, 0, {    86,     88}, {0x2b, 0xe5, 0x8d, 0xff}}},\n    {{{    12,     43,     26}, 0, {   576,    994}, {0xb0, 0x5c, 0x22, 0xff}}},\n    {{{    12,     43,    -24}, 0, {   988,    408}, {0xba, 0x57, 0xc6, 0xff}}},\n    {{{     8,     -4,    -40}, 0, {   654,    -20}, {0xa2, 0xef, 0xae, 0xff}}},\n    {{{     8,     -4,     42}, 0, {   -12,    932}, {0xa9, 0x01, 0x5b, 0xff}}},\n    {{{     5,    -34,      0}, 0, {    38,    304}, {0xb9, 0x9b, 0x19, 0xff}}},\n    {{{    36,     44,    -26}, 0, {    -8,    932}, {0x2c, 0x5f, 0xb9, 0xff}}},\n    {{{    36,     44,     28}, 0, {   948,    992}, {0x2a, 0x4c, 0x5c, 0xff}}},\n    {{{    46,     36,     23}, 0, {   886,     80}, {0x3b, 0x67, 0x2c, 0xff}}},\n    {{{    46,     36,    -21}, 0, {   106,     30}, {0x3a, 0x59, 0xbc, 0xff}}},\n    {{{    32,     -8,    -43}, 0, {    -4,    962}, {0x2a, 0xcb, 0x95, 0xff}}},\n    {{{    32,     -8,     45}, 0, {   948,    900}, {0x1d, 0xbe, 0x67, 0xff}}},\n    {{{    42,     -6,     37}, 0, {   872,     70}, {0x2b, 0xe3, 0x73, 0xff}}},\n    {{{    36,     44,     28}, 0, {   -10,    860}, {0x2a, 0x4c, 0x5c, 0xff}}},\n};\n\n// 0x0603BA48\nstatic const Vtx bowser_seg6_vertex_0603BA48[] = {\n    {{{    42,     -6,     37}, 0, {   872,     70}, {0x2b, 0xe3, 0x73, 0xff}}},\n    {{{    46,     36,     23}, 0, {    90,     38}, {0x3b, 0x67, 0x2c, 0xff}}},\n    {{{    36,     44,     28}, 0, {   -10,    860}, {0x2a, 0x4c, 0x5c, 0xff}}},\n    {{{    29,    -40,      0}, 0, {   966,    922}, {0x0a, 0x84, 0xec, 0xff}}},\n    {{{    40,    -33,      0}, 0, {   872,     54}, {0x35, 0x8d, 0xff, 0xff}}},\n    {{{    32,     -8,     45}, 0, {     2,    900}, {0x1d, 0xbe, 0x67, 0xff}}},\n    {{{    42,     -6,     37}, 0, {    86,     38}, {0x2b, 0xe3, 0x73, 0xff}}},\n    {{{    32,     -8,    -43}, 0, {   964,    910}, {0x2a, 0xcb, 0x95, 0xff}}},\n    {{{    42,     -6,    -35}, 0, {   864,     50}, {0x2b, 0xe5, 0x8d, 0xff}}},\n    {{{    40,    -33,      0}, 0, {    62,     10}, {0x35, 0x8d, 0xff, 0xff}}},\n    {{{    29,    -40,      0}, 0, {   -20,    864}, {0x0a, 0x84, 0xec, 0xff}}},\n};\n\n// 0x0603BAF8\nstatic const Vtx bowser_seg6_vertex_0603BAF8[] = {\n    {{{    42,     -6,     37}, 0, {   -24,    954}, {0x2b, 0xe3, 0x73, 0xff}}},\n    {{{    63,     -7,     35}, 0, {   590,    956}, {0x4a, 0xda, 0x5f, 0xff}}},\n    {{{    66,     32,     22}, 0, {   588,     14}, {0x48, 0x45, 0x4d, 0xff}}},\n    {{{    66,     32,    -20}, 0, {   620,    948}, {0x41, 0x56, 0xbe, 0xff}}},\n    {{{    63,     -7,    -33}, 0, {   606,     52}, {0x49, 0xdb, 0xa0, 0xff}}},\n    {{{    42,     -6,    -35}, 0, {     0,     -2}, {0x2b, 0xe5, 0x8d, 0xff}}},\n    {{{    46,     36,    -21}, 0, {    14,    954}, {0x3a, 0x59, 0xbc, 0xff}}},\n    {{{    46,     36,     23}, 0, {   -12,    958}, {0x3b, 0x67, 0x2c, 0xff}}},\n    {{{    66,     32,     22}, 0, {   716,    956}, {0x48, 0x45, 0x4d, 0xff}}},\n    {{{    66,     32,    -20}, 0, {   746,     44}, {0x41, 0x56, 0xbe, 0xff}}},\n    {{{    46,     36,    -21}, 0, {    20,    -14}, {0x3a, 0x59, 0xbc, 0xff}}},\n    {{{    60,    -32,      0}, 0, {   690,    954}, {0x2f, 0x8b, 0xff, 0xff}}},\n    {{{    63,     -7,     35}, 0, {   668,     50}, {0x4a, 0xda, 0x5f, 0xff}}},\n    {{{    42,     -6,     37}, 0, {   -26,    -10}, {0x2b, 0xe3, 0x73, 0xff}}},\n    {{{    40,    -33,      0}, 0, {    -2,    954}, {0x35, 0x8d, 0xff, 0xff}}},\n    {{{    46,     36,     23}, 0, {   -26,    -52}, {0x3b, 0x67, 0x2c, 0xff}}},\n};\n\n// 0x0603BBF8\nstatic const Vtx bowser_seg6_vertex_0603BBF8[] = {\n    {{{    42,     -6,    -35}, 0, {     0,    970}, {0x2b, 0xe5, 0x8d, 0xff}}},\n    {{{    63,     -7,    -33}, 0, {   704,    974}, {0x49, 0xdb, 0xa0, 0xff}}},\n    {{{    60,    -32,      0}, 0, {   718,     56}, {0x2f, 0x8b, 0xff, 0xff}}},\n    {{{    40,    -33,      0}, 0, {    16,    -12}, {0x35, 0x8d, 0xff, 0xff}}},\n    {{{    66,     32,    -20}, 0, {  1120,    246}, {0x41, 0x56, 0xbe, 0xff}}},\n    {{{    81,      1,      0}, 0, {   508,    472}, {0x7e, 0xf5, 0xff, 0xff}}},\n    {{{    63,     -7,    -33}, 0, {   926,    980}, {0x49, 0xdb, 0xa0, 0xff}}},\n    {{{    60,    -32,      0}, 0, {   154,   1010}, {0x2f, 0x8b, 0xff, 0xff}}},\n    {{{    66,     32,     22}, 0, {   468,   -176}, {0x48, 0x45, 0x4d, 0xff}}},\n    {{{    63,     -7,     35}, 0, {  -128,    298}, {0x4a, 0xda, 0x5f, 0xff}}},\n};\n\n// 0x0603BC98\nstatic const Vtx bowser_seg6_vertex_0603BC98[] = {\n    {{{    36,     44,    -26}, 0, {     0,     18}, {0x2c, 0x5f, 0xb9, 0xff}}},\n    {{{    12,     43,     26}, 0, {  1892,    958}, {0xb0, 0x5c, 0x22, 0xff}}},\n    {{{    36,     44,     28}, 0, {  1968,     34}, {0x2a, 0x4c, 0x5c, 0xff}}},\n    {{{    29,    -40,      0}, 0, {     0,     46}, {0x0a, 0x84, 0xec, 0xff}}},\n    {{{     8,     -4,    -40}, 0, {  1928,    976}, {0xa2, 0xef, 0xae, 0xff}}},\n    {{{    32,     -8,    -43}, 0, {  1976,     48}, {0x2a, 0xcb, 0x95, 0xff}}},\n    {{{     5,    -34,      0}, 0, {    88,    974}, {0xb9, 0x9b, 0x19, 0xff}}},\n    {{{    32,     -8,     45}, 0, {     0,     54}, {0x1d, 0xbe, 0x67, 0xff}}},\n    {{{     5,    -34,      0}, 0, {  1908,    968}, {0xb9, 0x9b, 0x19, 0xff}}},\n    {{{    29,    -40,      0}, 0, {  1992,     52}, {0x0a, 0x84, 0xec, 0xff}}},\n    {{{     8,     -4,     42}, 0, {    48,    968}, {0xa9, 0x01, 0x5b, 0xff}}},\n    {{{    36,     44,     28}, 0, {   -24,     40}, {0x2a, 0x4c, 0x5c, 0xff}}},\n    {{{     8,     -4,     42}, 0, {  1900,    978}, {0xa9, 0x01, 0x5b, 0xff}}},\n    {{{    32,     -8,     45}, 0, {  1992,     26}, {0x1d, 0xbe, 0x67, 0xff}}},\n    {{{    12,     43,     26}, 0, {    52,    990}, {0xb0, 0x5c, 0x22, 0xff}}},\n};\n\n// 0x0603BD88\nstatic const Vtx bowser_seg6_vertex_0603BD88[] = {\n    {{{     8,     -4,    -40}, 0, {    56,    982}, {0xa2, 0xef, 0xae, 0xff}}},\n    {{{    12,     43,    -24}, 0, {  1924,    976}, {0xba, 0x57, 0xc6, 0xff}}},\n    {{{    36,     44,    -26}, 0, {  2016,     68}, {0x2c, 0x5f, 0xb9, 0xff}}},\n    {{{    36,     44,    -26}, 0, {     0,     18}, {0x2c, 0x5f, 0xb9, 0xff}}},\n    {{{    12,     43,    -24}, 0, {    56,    944}, {0xba, 0x57, 0xc6, 0xff}}},\n    {{{    12,     43,     26}, 0, {  1892,    958}, {0xb0, 0x5c, 0x22, 0xff}}},\n    {{{    32,     -8,    -43}, 0, {   -24,     76}, {0x2a, 0xcb, 0x95, 0xff}}},\n};\n\n// 0x0603BDF8 - 0x0603BEA0\nconst Gfx bowser_seg6_dl_0603BDF8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06023C38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bowser_seg6_lights_06038C38.l, 1),\n    gsSPLight(&bowser_seg6_lights_06038C38.a, 2),\n    gsSPVertex(bowser_seg6_vertex_0603B948, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  6,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10, 11,  8, 0x0),\n    gsSP2Triangles( 2, 12,  0, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603BA48, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle( 7,  9, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0603BEA0 - 0x0603BF48\nconst Gfx bowser_seg6_dl_0603BEA0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06022438),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_seg6_vertex_0603BAF8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(14, 11, 13, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603BBF8, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 8,  5,  4, 0x0,  9,  5,  8, 0x0),\n    gsSP1Triangle( 7,  5,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0603BF48 - 0x0603BFC8\nconst Gfx bowser_seg6_dl_0603BF48[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06022C38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_seg6_vertex_0603BC98, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603BD88, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0603BFC8 - 0x0603C050\nconst Gfx bowser_seg6_dl_0603BFC8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_seg6_dl_0603BDF8),\n    gsSPDisplayList(bowser_seg6_dl_0603BEA0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_seg6_dl_0603BF48),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0603C050\nstatic const Vtx bowser_seg6_vertex_0603C050[] = {\n    {{{    21,     31,    -19}, 0, {   874,     66}, {0xcb, 0x61, 0xc4, 0xff}}},\n    {{{    21,     31,     21}, 0, {    96,    112}, {0xcf, 0x51, 0x54, 0xff}}},\n    {{{    27,     37,     25}, 0, {     8,    920}, {0xcc, 0x53, 0x50, 0xff}}},\n    {{{    49,    -32,      0}, 0, {   344,    990}, {0x64, 0xb3, 0x00, 0xff}}},\n    {{{    47,     33,     22}, 0, {   370,    -36}, {0x5b, 0x51, 0x21, 0xff}}},\n    {{{    48,     -7,     35}, 0, {   -28,    368}, {0x46, 0xfa, 0x69, 0xff}}},\n    {{{    48,     -7,    -34}, 0, {   974,    970}, {0x44, 0xfb, 0x96, 0xff}}},\n    {{{    47,     33,    -20}, 0, {   990,    336}, {0x68, 0x3b, 0xd8, 0xff}}},\n    {{{    27,     37,     25}, 0, {   970,    880}, {0xcc, 0x53, 0x50, 0xff}}},\n    {{{    22,     -7,     33}, 0, {    88,    154}, {0xc1, 0xe9, 0x6b, 0xff}}},\n    {{{    29,     -9,     40}, 0, {     0,    918}, {0xde, 0xbf, 0x67, 0xff}}},\n    {{{    21,     31,     21}, 0, {   886,    122}, {0xcf, 0x51, 0x54, 0xff}}},\n    {{{    27,     37,    -23}, 0, {   954,    864}, {0xe1, 0x5c, 0xaf, 0xff}}},\n    {{{    29,     -9,    -38}, 0, {   940,    880}, {0xdc, 0xc1, 0x99, 0xff}}},\n    {{{    22,     -7,    -31}, 0, {   860,    134}, {0xc2, 0xeb, 0x94, 0xff}}},\n    {{{    27,     37,    -23}, 0, {     8,    892}, {0xe1, 0x5c, 0xaf, 0xff}}},\n};\n\n// 0x0603C150\nstatic const Vtx bowser_seg6_vertex_0603C150[] = {\n    {{{    22,     -7,    -31}, 0, {   860,    134}, {0xc2, 0xeb, 0x94, 0xff}}},\n    {{{    21,     31,    -19}, 0, {    92,    144}, {0xcb, 0x61, 0xc4, 0xff}}},\n    {{{    27,     37,    -23}, 0, {     8,    892}, {0xe1, 0x5c, 0xaf, 0xff}}},\n    {{{    23,    -31,      0}, 0, {   858,     80}, {0xcd, 0x8c, 0xff, 0xff}}},\n    {{{    22,     -7,    -31}, 0, {    80,     66}, {0xc2, 0xeb, 0x94, 0xff}}},\n    {{{    29,     -9,    -38}, 0, {    -2,    896}, {0xdc, 0xc1, 0x99, 0xff}}},\n    {{{    30,    -38,      0}, 0, {   944,    914}, {0xdf, 0x86, 0xff, 0xff}}},\n    {{{    29,     -9,     40}, 0, {   960,    908}, {0xde, 0xbf, 0x67, 0xff}}},\n    {{{    22,     -7,     33}, 0, {   870,    102}, {0xc1, 0xe9, 0x6b, 0xff}}},\n    {{{    23,    -31,      0}, 0, {    90,     96}, {0xcd, 0x8c, 0xff, 0xff}}},\n    {{{    30,    -38,      0}, 0, {    12,    900}, {0xdf, 0x86, 0xff, 0xff}}},\n};\n\n// 0x0603C200\nstatic const Vtx bowser_seg6_vertex_0603C200[] = {\n    {{{    22,     -7,    -31}, 0, {   -16,    962}, {0xc2, 0xeb, 0x94, 0xff}}},\n    {{{    -8,     -8,    -30}, 0, {    20,    -28}, {0xca, 0xdd, 0x94, 0xff}}},\n    {{{    21,     31,    -19}, 0, {   980,    978}, {0xcb, 0x61, 0xc4, 0xff}}},\n    {{{    22,     -7,     33}, 0, {   -38,    982}, {0xc1, 0xe9, 0x6b, 0xff}}},\n    {{{    -8,     -8,     32}, 0, {     6,    -28}, {0xc9, 0xdb, 0x6b, 0xff}}},\n    {{{    23,    -31,      0}, 0, {   976,    998}, {0xcd, 0x8c, 0xff, 0xff}}},\n    {{{    -7,    -31,      0}, 0, {   992,    -10}, {0xb3, 0x9c, 0xff, 0xff}}},\n    {{{    21,     31,     21}, 0, {     8,   1004}, {0xcf, 0x51, 0x54, 0xff}}},\n    {{{    -8,     -8,     32}, 0, {   956,     18}, {0xc9, 0xdb, 0x6b, 0xff}}},\n    {{{    22,     -7,     33}, 0, {   960,    984}, {0xc1, 0xe9, 0x6b, 0xff}}},\n    {{{    -9,     29,     20}, 0, {    34,     40}, {0xba, 0x5f, 0x2d, 0xff}}},\n    {{{    21,     31,    -19}, 0, {    -8,    966}, {0xcb, 0x61, 0xc4, 0xff}}},\n    {{{    -9,     29,    -18}, 0, {    -4,     -8}, {0xad, 0x4b, 0xc7, 0xff}}},\n    {{{    -9,     29,     20}, 0, {   970,     -6}, {0xba, 0x5f, 0x2d, 0xff}}},\n    {{{    21,     31,     21}, 0, {   996,    968}, {0xcf, 0x51, 0x54, 0xff}}},\n    {{{    -9,     29,    -18}, 0, {   984,    -12}, {0xad, 0x4b, 0xc7, 0xff}}},\n};\n\n// 0x0603C300\nstatic const Vtx bowser_seg6_vertex_0603C300[] = {\n    {{{    23,    -31,      0}, 0, {     0,    982}, {0xcd, 0x8c, 0xff, 0xff}}},\n    {{{    -7,    -31,      0}, 0, {    48,     -4}, {0xb3, 0x9c, 0xff, 0xff}}},\n    {{{    -8,     -8,    -30}, 0, {   980,    -12}, {0xca, 0xdd, 0x94, 0xff}}},\n    {{{    22,     -7,    -31}, 0, {   960,    976}, {0xc2, 0xeb, 0x94, 0xff}}},\n    {{{    -8,     -8,     32}, 0, {  -430,    -36}, {0xc9, 0xdb, 0x6b, 0xff}}},\n    {{{   -20,      1,      0}, 0, {   504,    248}, {0x82, 0xfc, 0xff, 0xff}}},\n    {{{    -7,    -31,      0}, 0, {   508,   -632}, {0xb3, 0x9c, 0xff, 0xff}}},\n    {{{    -9,     29,     20}, 0, {   -78,    954}, {0xba, 0x5f, 0x2d, 0xff}}},\n    {{{    -9,     29,    -18}, 0, {  1078,    970}, {0xad, 0x4b, 0xc7, 0xff}}},\n    {{{    -8,     -8,    -30}, 0, {  1442,    -12}, {0xca, 0xdd, 0x94, 0xff}}},\n};\n\n// 0x0603C3A0\nstatic const Vtx bowser_seg6_vertex_0603C3A0[] = {\n    {{{    27,     37,     25}, 0, {     0,     60}, {0xcc, 0x53, 0x50, 0xff}}},\n    {{{    47,     33,     22}, 0, {   100,    978}, {0x5b, 0x51, 0x21, 0xff}}},\n    {{{    27,     37,    -23}, 0, {  1988,     34}, {0xe1, 0x5c, 0xaf, 0xff}}},\n    {{{    49,    -32,      0}, 0, {   132,    968}, {0x64, 0xb3, 0x00, 0xff}}},\n    {{{    48,     -7,     35}, 0, {  1872,    946}, {0x46, 0xfa, 0x69, 0xff}}},\n    {{{    29,     -9,     40}, 0, {  1980,     50}, {0xde, 0xbf, 0x67, 0xff}}},\n    {{{    30,    -38,      0}, 0, {     4,     76}, {0xdf, 0x86, 0xff, 0xff}}},\n    {{{    29,     -9,    -38}, 0, {     8,     62}, {0xdc, 0xc1, 0x99, 0xff}}},\n    {{{    49,    -32,      0}, 0, {  1876,    970}, {0x64, 0xb3, 0x00, 0xff}}},\n    {{{    30,    -38,      0}, 0, {  1992,     72}, {0xdf, 0x86, 0xff, 0xff}}},\n    {{{    48,     -7,    -34}, 0, {   132,    962}, {0x44, 0xfb, 0x96, 0xff}}},\n    {{{    27,     37,    -23}, 0, {    -4,     78}, {0xe1, 0x5c, 0xaf, 0xff}}},\n    {{{    48,     -7,    -34}, 0, {  1900,    950}, {0x44, 0xfb, 0x96, 0xff}}},\n    {{{    29,     -9,    -38}, 0, {  2000,     68}, {0xdc, 0xc1, 0x99, 0xff}}},\n    {{{    47,     33,    -20}, 0, {   132,    958}, {0x68, 0x3b, 0xd8, 0xff}}},\n};\n\n// 0x0603C490\nstatic const Vtx bowser_seg6_vertex_0603C490[] = {\n    {{{    48,     -7,     35}, 0, {   116,    936}, {0x46, 0xfa, 0x69, 0xff}}},\n    {{{    47,     33,     22}, 0, {  1860,    958}, {0x5b, 0x51, 0x21, 0xff}}},\n    {{{    27,     37,     25}, 0, {  1964,     82}, {0xcc, 0x53, 0x50, 0xff}}},\n    {{{    47,     33,     22}, 0, {   100,    978}, {0x5b, 0x51, 0x21, 0xff}}},\n    {{{    47,     33,    -20}, 0, {  1880,    956}, {0x68, 0x3b, 0xd8, 0xff}}},\n    {{{    27,     37,    -23}, 0, {  1988,     34}, {0xe1, 0x5c, 0xaf, 0xff}}},\n    {{{    29,     -9,     40}, 0, {   -20,     58}, {0xde, 0xbf, 0x67, 0xff}}},\n};\n\n// 0x0603C500 - 0x0603C5A8\nconst Gfx bowser_seg6_dl_0603C500[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06023C38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bowser_seg6_lights_06038C38.l, 1),\n    gsSPLight(&bowser_seg6_lights_06038C38.a, 2),\n    gsSPVertex(bowser_seg6_vertex_0603C050, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  3,  7,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12,  0,  2, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603C150, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle( 9, 10,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0603C5A8 - 0x0603C650\nconst Gfx bowser_seg6_dl_0603C5A8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06022438),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_seg6_vertex_0603C200, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  1, 15,  2, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603C300, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  5,  4, 0x0),\n    gsSP2Triangles( 8,  5,  7, 0x0,  6,  5,  9, 0x0),\n    gsSP1Triangle( 9,  5,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0603C650 - 0x0603C6D0\nconst Gfx bowser_seg6_dl_0603C650[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06022C38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_seg6_vertex_0603C3A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603C490, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0603C6D0 - 0x0603C758\nconst Gfx bowser_seg6_dl_0603C6D0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_seg6_dl_0603C500),\n    gsSPDisplayList(bowser_seg6_dl_0603C5A8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_seg6_dl_0603C650),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0603C758\nstatic const Vtx bowser_seg6_vertex_0603C758[] = {\n    {{{    54,    -16,    -21}, 0, {   176,     66}, {0x0e, 0x84, 0xeb, 0xff}}},\n    {{{    91,     -2,    -21}, 0, {  -372,     82}, {0x3a, 0x91, 0xf4, 0xff}}},\n    {{{    91,     -2,     18}, 0, {  -390,    596}, {0x32, 0x8c, 0x05, 0xff}}},\n    {{{   -15,     -5,    -21}, 0, {  1302,     36}, {0xdf, 0x87, 0xef, 0xff}}},\n    {{{   -16,      3,    -41}, 0, {  1362,   -224}, {0xd8, 0xb0, 0xa7, 0xff}}},\n    {{{    74,     -3,    -52}, 0, {  -102,   -336}, {0x10, 0xb7, 0x9a, 0xff}}},\n    {{{    54,    -16,     18}, 0, {   156,    580}, {0x02, 0x83, 0x15, 0xff}}},\n    {{{    74,     -3,     49}, 0, {  -150,    996}, {0x12, 0xa7, 0x58, 0xff}}},\n    {{{   -16,      3,     38}, 0, {  1324,    806}, {0xdb, 0xbd, 0x64, 0xff}}},\n    {{{   -15,     -5,     18}, 0, {  1284,    550}, {0xd8, 0x89, 0x11, 0xff}}},\n    {{{    56,     36,     18}, 0, {   780,    614}, {0x0e, 0x7e, 0x06, 0xff}}},\n    {{{    56,     36,    -21}, 0, {   236,    594}, {0x0c, 0x7e, 0xf9, 0xff}}},\n    {{{   -14,     40,     -1}, 0, {   582,   -466}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{    76,     31,     49}, 0, {  1194,    932}, {0x07, 0x4b, 0x66, 0xff}}},\n    {{{    92,     29,     18}, 0, {   744,   1156}, {0x1c, 0x7b, 0xfb, 0xff}}},\n};\n\n// 0x0603C848\nstatic const Vtx bowser_seg6_vertex_0603C848[] = {\n    {{{   -15,     -5,     18}, 0, {  1284,    550}, {0xd8, 0x89, 0x11, 0xff}}},\n    {{{   -45,      9,     18}, 0, {  1798,    536}, {0xa7, 0xc0, 0x3f, 0xff}}},\n    {{{   -45,      9,    -21}, 0, {  1816,     22}, {0xa1, 0xb9, 0xd3, 0xff}}},\n    {{{    56,     36,     18}, 0, {   780,    614}, {0x0e, 0x7e, 0x06, 0xff}}},\n    {{{    92,     29,     18}, 0, {   744,   1156}, {0x1c, 0x7b, 0xfb, 0xff}}},\n    {{{    92,     29,    -21}, 0, {   198,   1134}, {0x28, 0x78, 0x04, 0xff}}},\n    {{{    76,     31,    -52}, 0, {  -216,    880}, {0x0e, 0x58, 0xa6, 0xff}}},\n    {{{    56,     36,    -21}, 0, {   236,    594}, {0x0c, 0x7e, 0xf9, 0xff}}},\n    {{{   -15,     35,    -41}, 0, {    36,   -478}, {0xe1, 0x47, 0x9c, 0xff}}},\n    {{{   -14,     40,     -1}, 0, {   582,   -466}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{    76,     31,     49}, 0, {    74,    748}, {0x07, 0x4b, 0x66, 0xff}}},\n    {{{   -15,     35,     38}, 0, {  1102,    770}, {0xdf, 0x53, 0x59, 0xff}}},\n    {{{   -16,      3,     38}, 0, {  1110,    412}, {0xdb, 0xbd, 0x64, 0xff}}},\n    {{{   -45,      9,     18}, 0, {  1426,    482}, {0xa7, 0xc0, 0x3f, 0xff}}},\n    {{{   -51,     37,     18}, 0, {  1506,    786}, {0x98, 0x3c, 0x28, 0xff}}},\n    {{{   -15,     -5,    -21}, 0, {  1302,     36}, {0xdf, 0x87, 0xef, 0xff}}},\n};\n\n// 0x0603C948\nstatic const Vtx bowser_seg6_vertex_0603C948[] = {\n    {{{   -15,     -5,    -21}, 0, {  1302,     36}, {0xdf, 0x87, 0xef, 0xff}}},\n    {{{   -45,      9,    -21}, 0, {  1816,     22}, {0xa1, 0xb9, 0xd3, 0xff}}},\n    {{{   -16,      3,    -41}, 0, {  1362,   -224}, {0xd8, 0xb0, 0xa7, 0xff}}},\n    {{{   -15,     35,    -41}, 0, {  1110,    582}, {0xe1, 0x47, 0x9c, 0xff}}},\n    {{{   -16,      3,    -41}, 0, {  1106,     96}, {0xd8, 0xb0, 0xa7, 0xff}}},\n    {{{   -45,      9,    -21}, 0, {  1488,    198}, {0xa1, 0xb9, 0xd3, 0xff}}},\n    {{{   -51,     37,    -21}, 0, {  1592,    612}, {0xb1, 0x55, 0xce, 0xff}}},\n    {{{    76,     31,    -52}, 0, {  -118,    528}, {0x0e, 0x58, 0xa6, 0xff}}},\n    {{{    74,     -3,    -52}, 0, {  -120,     -2}, {0x10, 0xb7, 0x9a, 0xff}}},\n    {{{   -51,     37,    -21}, 0, {   346,  -1002}, {0xb1, 0x55, 0xce, 0xff}}},\n    {{{   -51,     37,     18}, 0, {   890,   -982}, {0x98, 0x3c, 0x28, 0xff}}},\n    {{{   -14,     40,     -1}, 0, {   582,   -466}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{   -15,     35,    -41}, 0, {    36,   -478}, {0xe1, 0x47, 0x9c, 0xff}}},\n    {{{   -51,     37,     18}, 0, {   154,    736}, {0x98, 0x3c, 0x28, 0xff}}},\n    {{{   -51,     37,    -21}, 0, {   798,    726}, {0xb1, 0x55, 0xce, 0xff}}},\n    {{{   -45,      9,    -21}, 0, {   810,    264}, {0xa1, 0xb9, 0xd3, 0xff}}},\n};\n\n// 0x0603CA48\nstatic const Vtx bowser_seg6_vertex_0603CA48[] = {\n    {{{   -51,     37,     18}, 0, {   890,   -982}, {0x98, 0x3c, 0x28, 0xff}}},\n    {{{   -15,     35,     38}, 0, {  1126,   -436}, {0xdf, 0x53, 0x59, 0xff}}},\n    {{{   -14,     40,     -1}, 0, {   582,   -466}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{    56,     36,     18}, 0, {   780,    614}, {0x0e, 0x7e, 0x06, 0xff}}},\n    {{{   -16,      3,     38}, 0, {  1324,    806}, {0xdb, 0xbd, 0x64, 0xff}}},\n    {{{   -45,      9,     18}, 0, {  1798,    536}, {0xa7, 0xc0, 0x3f, 0xff}}},\n    {{{   -15,     -5,     18}, 0, {  1284,    550}, {0xd8, 0x89, 0x11, 0xff}}},\n    {{{    76,     31,     49}, 0, {  1194,    932}, {0x07, 0x4b, 0x66, 0xff}}},\n    {{{    76,     31,     49}, 0, {    74,    748}, {0x07, 0x4b, 0x66, 0xff}}},\n    {{{   -16,      3,     38}, 0, {  1110,    412}, {0xdb, 0xbd, 0x64, 0xff}}},\n    {{{    74,     -3,     49}, 0, {    82,    356}, {0x12, 0xa7, 0x58, 0xff}}},\n    {{{   -51,     37,     18}, 0, {   154,    736}, {0x98, 0x3c, 0x28, 0xff}}},\n    {{{   -45,      9,    -21}, 0, {   810,    264}, {0xa1, 0xb9, 0xd3, 0xff}}},\n    {{{   -45,      9,     18}, 0, {   166,    272}, {0xa7, 0xc0, 0x3f, 0xff}}},\n};\n\n// 0x0603CB28\nstatic const Vtx bowser_seg6_vertex_0603CB28[] = {\n    {{{   100,      5,     45}, 0, {  -170,   1304}, {0x3c, 0xbc, 0x58, 0xff}}},\n    {{{    98,     31,     45}, 0, {   648,   1308}, {0x15, 0x6e, 0x3b, 0xff}}},\n    {{{    76,     31,     49}, 0, {   690,    956}, {0x07, 0x4b, 0x66, 0xff}}},\n    {{{   107,      6,     21}, 0, {   732,   1260}, {0x3c, 0xc5, 0xa2, 0xff}}},\n    {{{    91,     -2,     18}, 0, {   790,    824}, {0x32, 0x8c, 0x05, 0xff}}},\n    {{{    92,     29,     18}, 0, {     6,    988}, {0x1c, 0x7b, 0xfb, 0xff}}},\n    {{{   105,     29,     20}, 0, {   140,   1292}, {0x10, 0x54, 0xa3, 0xff}}},\n    {{{   132,     31,     27}, 0, {   380,   1988}, {0x7c, 0x1b, 0x00, 0xff}}},\n    {{{   100,      5,     45}, 0, {   234,   1344}, {0x3c, 0xbc, 0x58, 0xff}}},\n    {{{    74,     -3,     49}, 0, {    -4,    872}, {0x12, 0xa7, 0x58, 0xff}}},\n    {{{    91,     -2,     18}, 0, {   844,    892}, {0x32, 0x8c, 0x05, 0xff}}},\n    {{{   107,      6,     21}, 0, {   858,   1264}, {0x3c, 0xc5, 0xa2, 0xff}}},\n    {{{   132,     31,     27}, 0, {   826,   1940}, {0x7c, 0x1b, 0x00, 0xff}}},\n    {{{   132,     31,     27}, 0, {   644,   1912}, {0x7c, 0x1b, 0x00, 0xff}}},\n    {{{    74,     -3,     49}, 0, {  -438,    868}, {0x12, 0xa7, 0x58, 0xff}}},\n};\n\n// 0x0603CC18\nstatic const Vtx bowser_seg6_vertex_0603CC18[] = {\n    {{{    92,     29,     18}, 0, {   950,    936}, {0x1c, 0x7b, 0xfb, 0xff}}},\n    {{{    76,     31,     49}, 0, {   136,    892}, {0x07, 0x4b, 0x66, 0xff}}},\n    {{{    98,     31,     45}, 0, {   264,   1324}, {0x15, 0x6e, 0x3b, 0xff}}},\n    {{{   132,     31,     27}, 0, {   752,   1896}, {0x7c, 0x1b, 0x00, 0xff}}},\n    {{{   105,     29,     20}, 0, {   904,   1228}, {0x10, 0x54, 0xa3, 0xff}}},\n    {{{    95,      6,    -48}, 0, {   282,   1236}, {0x3e, 0xc3, 0xa4, 0xff}}},\n    {{{    74,     -3,    -52}, 0, {   148,    824}, {0x10, 0xb7, 0x9a, 0xff}}},\n    {{{    76,     31,    -52}, 0, {   982,    972}, {0x0e, 0x58, 0xa6, 0xff}}},\n    {{{    93,     31,    -48}, 0, {   902,   1284}, {0x1b, 0x6e, 0xc9, 0xff}}},\n    {{{   126,     31,    -31}, 0, {   776,   1940}, {0x7a, 0x20, 0xfb, 0xff}}},\n    {{{    92,     29,    -21}, 0, {   -30,    928}, {0x28, 0x78, 0x04, 0xff}}},\n    {{{   106,      2,    -15}, 0, {   780,   1176}, {0x44, 0xb7, 0xb3, 0xff}}},\n    {{{    91,     -2,    -21}, 0, {   800,    788}, {0x3a, 0x91, 0xf4, 0xff}}},\n    {{{   104,     30,    -15}, 0, {    26,   1220}, {0x16, 0x6b, 0xc1, 0xff}}},\n};\n\n// 0x0603CCF8\nstatic const Vtx bowser_seg6_vertex_0603CCF8[] = {\n    {{{   106,      6,    -25}, 0, {   648,   1280}, {0x47, 0xc6, 0x57, 0xff}}},\n    {{{   104,     27,    -24}, 0, {     0,   1252}, {0x1a, 0x51, 0x5e, 0xff}}},\n    {{{    92,     29,    -21}, 0, {  -186,    936}, {0x28, 0x78, 0x04, 0xff}}},\n    {{{   104,     30,    -15}, 0, {    26,   1220}, {0x16, 0x6b, 0xc1, 0xff}}},\n    {{{   136,     31,     -1}, 0, {   270,   1988}, {0x7b, 0x1c, 0x00, 0xff}}},\n    {{{   106,      2,    -15}, 0, {   780,   1176}, {0x44, 0xb7, 0xb3, 0xff}}},\n    {{{    74,     -3,    -52}, 0, {   984,    832}, {0x10, 0xb7, 0x9a, 0xff}}},\n    {{{    95,      6,    -48}, 0, {   818,   1248}, {0x3e, 0xc3, 0xa4, 0xff}}},\n    {{{    91,     -2,    -21}, 0, {    26,    892}, {0x3a, 0x91, 0xf4, 0xff}}},\n    {{{   126,     31,    -31}, 0, {   292,   1908}, {0x7a, 0x20, 0xfb, 0xff}}},\n    {{{   106,      6,    -25}, 0, {   120,   1280}, {0x47, 0xc6, 0x57, 0xff}}},\n    {{{    91,     -2,    -21}, 0, {   770,    836}, {0x3a, 0x91, 0xf4, 0xff}}},\n    {{{   126,     31,    -31}, 0, {    80,   1864}, {0x7a, 0x20, 0xfb, 0xff}}},\n    {{{    91,     -2,     18}, 0, {   602,    744}, {0x32, 0x8c, 0x05, 0xff}}},\n    {{{   106,      2,     12}, 0, {   660,   1164}, {0x46, 0xca, 0x5a, 0xff}}},\n    {{{    92,     29,     18}, 0, {    16,    796}, {0x1c, 0x7b, 0xfb, 0xff}}},\n};\n\n// 0x0603CDF8\nstatic const Vtx bowser_seg6_vertex_0603CDF8[] = {\n    {{{    92,     29,    -21}, 0, {   192,    920}, {0x28, 0x78, 0x04, 0xff}}},\n    {{{    93,     31,    -48}, 0, {   950,   1280}, {0x1b, 0x6e, 0xc9, 0xff}}},\n    {{{    76,     31,    -52}, 0, {  1096,    924}, {0x0e, 0x58, 0xa6, 0xff}}},\n    {{{   104,     27,    -24}, 0, {   274,   1248}, {0x1a, 0x51, 0x5e, 0xff}}},\n    {{{   126,     31,    -31}, 0, {   420,   1864}, {0x7a, 0x20, 0xfb, 0xff}}},\n    {{{   106,      2,    -15}, 0, {    30,   1148}, {0x44, 0xb7, 0xb3, 0xff}}},\n    {{{   136,     31,     -1}, 0, {   422,   1932}, {0x7b, 0x1c, 0x00, 0xff}}},\n    {{{   106,      2,     12}, 0, {   762,   1152}, {0x46, 0xca, 0x5a, 0xff}}},\n    {{{    91,     -2,     18}, 0, {   898,    800}, {0x32, 0x8c, 0x05, 0xff}}},\n    {{{    91,     -2,    -21}, 0, {  -126,    792}, {0x3a, 0x91, 0xf4, 0xff}}},\n    {{{   106,      2,     12}, 0, {   660,   1164}, {0x46, 0xca, 0x5a, 0xff}}},\n    {{{   136,     31,     -1}, 0, {   436,   1988}, {0x7b, 0x1c, 0x00, 0xff}}},\n    {{{   104,     30,     12}, 0, {   112,   1120}, {0x1f, 0x5c, 0x51, 0xff}}},\n    {{{    92,     29,     18}, 0, {    16,    796}, {0x1c, 0x7b, 0xfb, 0xff}}},\n};\n\n// 0x0603CED8\nstatic const Vtx bowser_seg6_vertex_0603CED8[] = {\n    {{{   104,     30,     12}, 0, {    80,   1152}, {0x1f, 0x5c, 0x51, 0xff}}},\n    {{{   136,     31,     -1}, 0, {   518,   1904}, {0x7b, 0x1c, 0x00, 0xff}}},\n    {{{   104,     30,    -15}, 0, {   964,   1216}, {0x16, 0x6b, 0xc1, 0xff}}},\n    {{{    92,     29,     18}, 0, {   -82,    868}, {0x1c, 0x7b, 0xfb, 0xff}}},\n    {{{    92,     29,    -21}, 0, {  1132,    956}, {0x28, 0x78, 0x04, 0xff}}},\n};\n\n// 0x0603CF28 - 0x0603D098\nconst Gfx bowser_seg6_dl_0603CF28[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06022438),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bowser_seg6_lights_06038C38.l, 1),\n    gsSPLight(&bowser_seg6_lights_06038C38.a, 2),\n    gsSPVertex(bowser_seg6_vertex_0603C758, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 5,  0,  4, 0x0,  0,  2,  6, 0x0),\n    gsSP2Triangles( 5,  1,  0, 0x0,  3,  0,  6, 0x0),\n    gsSP2Triangles( 6,  2,  7, 0x0,  8,  9,  6, 0x0),\n    gsSP2Triangles( 8,  6,  7, 0x0,  6,  9,  3, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 10, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603C848, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  3,  5,  7, 0x0),\n    gsSP2Triangles( 8,  9,  7, 0x0,  8,  7,  6, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 12, 11, 0x0),\n    gsSP2Triangles(11, 14, 13, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603C948, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  3,  7,  8, 0x0),\n    gsSP2Triangles( 3,  8,  4, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12,  9, 11, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603CA48, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  3,  1, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0603D098 - 0x0603D200\nconst Gfx bowser_seg6_dl_0603D098[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06029C38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_seg6_vertex_0603CB28, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  6,  7,  3, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10, 11,  8, 0x0),\n    gsSP2Triangles(11, 12,  8, 0x0,  0, 13,  1, 0x0),\n    gsSP1Triangle( 2, 14,  0, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603CC18, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 2,  4,  0, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 7,  8,  5, 0x0,  8,  9,  5, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603CCF8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11,  0,  2, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603CDF8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 3,  4,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  9,  5,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603CED8, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP1Triangle( 3,  2,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0603D200 - 0x0603D280\nconst Gfx bowser_seg6_dl_0603D200[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_seg6_dl_0603CF28),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_seg6_dl_0603D098),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0603D280\nstatic const Vtx bowser_seg6_vertex_0603D280[] = {\n    {{{    37,    -25,     12}, 0, {    68,    548}, {0x22, 0xc5, 0x6a, 0xff}}},\n    {{{    20,    -23,     23}, 0, {   512,    850}, {0x2f, 0x8d, 0x17, 0xff}}},\n    {{{     0,    -23,     12}, 0, {  1034,    558}, {0xac, 0xa2, 0x06, 0xff}}},\n    {{{    -2,     20,     16}, 0, {  1170,    662}, {0xa4, 0x3b, 0x3f, 0xff}}},\n    {{{    -2,     19,    -14}, 0, {  1092,   -220}, {0x88, 0x21, 0xe8, 0xff}}},\n    {{{     0,    -23,     12}, 0, {   -98,    626}, {0xac, 0xa2, 0x06, 0xff}}},\n    {{{    -1,      8,    -19}, 0, {   770,   -354}, {0xd9, 0x15, 0x8a, 0xff}}},\n    {{{     0,     -6,    -19}, 0, {   342,   -330}, {0xc6, 0xe2, 0x94, 0xff}}},\n    {{{     0,    -18,    -14}, 0, {    20,   -160}, {0x9b, 0xc7, 0xce, 0xff}}},\n    {{{     0,    -17,     31}, 0, {    98,   1182}, {0xb9, 0xd5, 0x5f, 0xff}}},\n    {{{    22,    -26,    -14}, 0, {   416,   -192}, {0xf8, 0x94, 0xbf, 0xff}}},\n    {{{     0,    -18,    -14}, 0, {  1012,   -164}, {0x9b, 0xc7, 0xce, 0xff}}},\n    {{{     0,    -17,     31}, 0, {  1044,   1120}, {0xb9, 0xd5, 0x5f, 0xff}}},\n    {{{    37,    -25,     12}, 0, {  1146,    194}, {0x22, 0xc5, 0x6a, 0xff}}},\n    {{{    36,     38,     13}, 0, {  -166,    126}, {0x15, 0x66, 0x47, 0xff}}},\n    {{{    15,     37,     14}, 0, {  -180,    554}, {0xda, 0x4e, 0x5b, 0xff}}},\n};\n\n// 0x0603D380\nstatic const Vtx bowser_seg6_vertex_0603D380[] = {\n    {{{    22,    -26,    -14}, 0, {   416,   -192}, {0xf8, 0x94, 0xbf, 0xff}}},\n    {{{    51,    -20,    -13}, 0, {  -310,   -174}, {0x2b, 0xa4, 0xb5, 0xff}}},\n    {{{    37,    -25,     12}, 0, {    68,    548}, {0x22, 0xc5, 0x6a, 0xff}}},\n    {{{    36,     38,     13}, 0, {   942,    912}, {0x15, 0x66, 0x47, 0xff}}},\n    {{{    36,     35,    -13}, 0, {   940,    264}, {0x08, 0x61, 0xb0, 0xff}}},\n    {{{    16,     35,    -14}, 0, {   318,    266}, {0xe1, 0x67, 0xbd, 0xff}}},\n    {{{    15,     37,     14}, 0, {   318,    958}, {0xda, 0x4e, 0x5b, 0xff}}},\n    {{{    -2,     19,    -14}, 0, {  -224,    264}, {0x88, 0x21, 0xe8, 0xff}}},\n    {{{    13,     -3,     14}, 0, {   660,    640}, {0x59, 0x47, 0x36, 0xff}}},\n    {{{    37,    -25,     12}, 0, {  1146,    194}, {0x22, 0xc5, 0x6a, 0xff}}},\n    {{{    15,     37,     14}, 0, {  -180,    554}, {0xda, 0x4e, 0x5b, 0xff}}},\n    {{{    50,     20,      3}, 0, {   214,   -140}, {0x25, 0xea, 0x77, 0xff}}},\n    {{{    36,     38,     13}, 0, {  -166,    126}, {0x15, 0x66, 0x47, 0xff}}},\n    {{{    54,      0,      3}, 0, {   644,   -212}, {0xf9, 0x18, 0x7c, 0xff}}},\n    {{{    51,    -23,     13}, 0, {  1118,    -90}, {0x15, 0xa1, 0x51, 0xff}}},\n};\n\n// 0x0603D470\nstatic const Vtx bowser_seg6_vertex_0603D470[] = {\n    {{{    14,    -12,     36}, 0, {   690,   1252}, {0x00, 0xcd, 0x73, 0xff}}},\n    {{{     0,    -17,     31}, 0, {  1044,   1120}, {0xb9, 0xd5, 0x5f, 0xff}}},\n    {{{    20,    -23,     23}, 0, {   512,    850}, {0x2f, 0x8d, 0x17, 0xff}}},\n    {{{    13,     -3,     14}, 0, {   660,    640}, {0x59, 0x47, 0x36, 0xff}}},\n    {{{    15,     37,     14}, 0, {  -180,    554}, {0xda, 0x4e, 0x5b, 0xff}}},\n    {{{    -2,     20,     16}, 0, {   152,    948}, {0xa4, 0x3b, 0x3f, 0xff}}},\n    {{{    -1,      8,    -19}, 0, {   872,   1410}, {0xd9, 0x15, 0x8a, 0xff}}},\n    {{{    50,     20,    -23}, 0, {   774,   -118}, {0x3b, 0x32, 0x9c, 0xff}}},\n    {{{    55,      0,    -23}, 0, {    -6,   -178}, {0x37, 0xf3, 0x8f, 0xff}}},\n    {{{     0,     -6,    -19}, 0, {   334,   1440}, {0xc6, 0xe2, 0x94, 0xff}}},\n    {{{    16,     35,    -14}, 0, {  1642,    820}, {0xe1, 0x67, 0xbd, 0xff}}},\n    {{{    36,     35,    -13}, 0, {  1432,    226}, {0x08, 0x61, 0xb0, 0xff}}},\n    {{{    -2,     19,    -14}, 0, {  1268,   1400}, {0x88, 0x21, 0xe8, 0xff}}},\n    {{{    -2,     19,    -14}, 0, {  -224,    264}, {0x88, 0x21, 0xe8, 0xff}}},\n    {{{    -2,     20,     16}, 0, {  -220,   1000}, {0xa4, 0x3b, 0x3f, 0xff}}},\n    {{{    15,     37,     14}, 0, {   318,    958}, {0xda, 0x4e, 0x5b, 0xff}}},\n};\n\n// 0x0603D570\nstatic const Vtx bowser_seg6_vertex_0603D570[] = {\n    {{{    22,    -26,    -14}, 0, {  -598,    868}, {0xf8, 0x94, 0xbf, 0xff}}},\n    {{{     0,    -18,    -14}, 0, {   -70,   1476}, {0x9b, 0xc7, 0xce, 0xff}}},\n    {{{     0,     -6,    -19}, 0, {   334,   1440}, {0xc6, 0xe2, 0x94, 0xff}}},\n    {{{    51,    -20,    -13}, 0, {  -682,     34}, {0x2b, 0xa4, 0xb5, 0xff}}},\n    {{{    55,      0,    -23}, 0, {    -6,   -178}, {0x37, 0xf3, 0x8f, 0xff}}},\n    {{{    51,    -20,    -13}, 0, {  -310,   -174}, {0x2b, 0xa4, 0xb5, 0xff}}},\n    {{{    51,    -23,     13}, 0, {  -286,    556}, {0x15, 0xa1, 0x51, 0xff}}},\n    {{{    37,    -25,     12}, 0, {    68,    548}, {0x22, 0xc5, 0x6a, 0xff}}},\n    {{{    20,    -23,     23}, 0, {  1080,    544}, {0x2f, 0x8d, 0x17, 0xff}}},\n    {{{    37,    -25,     12}, 0, {  1146,    194}, {0x22, 0xc5, 0x6a, 0xff}}},\n    {{{    13,     -3,     14}, 0, {   660,    640}, {0x59, 0x47, 0x36, 0xff}}},\n    {{{     0,    -17,     31}, 0, {   928,    950}, {0xb9, 0xd5, 0x5f, 0xff}}},\n    {{{    15,      2,     33}, 0, {   538,    628}, {0x08, 0x61, 0x51, 0xff}}},\n    {{{    -2,     20,     16}, 0, {   152,    948}, {0xa4, 0x3b, 0x3f, 0xff}}},\n};\n\n// 0x0603D650\nstatic const Vtx bowser_seg6_vertex_0603D650[] = {\n    {{{    -2,     20,     16}, 0, {   128,    620}, {0xa4, 0x3b, 0x3f, 0xff}}},\n    {{{    15,      2,     33}, 0, {   734,    816}, {0x08, 0x61, 0x51, 0xff}}},\n    {{{    13,     -3,     14}, 0, {   724,    238}, {0x59, 0x47, 0x36, 0xff}}},\n};\n\n// 0x0603D680\nstatic const Vtx bowser_seg6_vertex_0603D680[] = {\n    {{{    70,      3,     -5}, 0, {   786,   1400}, {0x55, 0xa8, 0xe1, 0xff}}},\n    {{{    65,      2,      6}, 0, {   280,   1324}, {0xf3, 0x9f, 0x4f, 0xff}}},\n    {{{    54,      0,      3}, 0, {   154,    904}, {0xf9, 0x18, 0x7c, 0xff}}},\n    {{{    78,      9,     19}, 0, {   202,   1984}, {0x66, 0x03, 0x4a, 0xff}}},\n    {{{    55,      0,    -23}, 0, {  1018,    680}, {0x37, 0xf3, 0x8f, 0xff}}},\n    {{{    28,     -4,     22}, 0, {   252,   1228}, {0x38, 0x3a, 0x9f, 0xff}}},\n    {{{    13,     -3,     14}, 0, {   224,    532}, {0x59, 0x47, 0x36, 0xff}}},\n    {{{    15,      2,     33}, 0, {  -134,    756}, {0x08, 0x61, 0x51, 0xff}}},\n    {{{    29,      0,     33}, 0, {    32,   1364}, {0x1e, 0x6b, 0x3b, 0xff}}},\n    {{{    44,     -6,     32}, 0, {   292,   1956}, {0x75, 0x16, 0x2b, 0xff}}},\n    {{{    20,    -23,     23}, 0, {   748,    776}, {0x2f, 0x8d, 0x17, 0xff}}},\n    {{{    32,    -16,     27}, 0, {   572,   1376}, {0x43, 0x96, 0x0e, 0xff}}},\n    {{{    32,    -16,     27}, 0, {   692,   1304}, {0x43, 0x96, 0x0e, 0xff}}},\n    {{{    44,     -6,     32}, 0, {   388,   1700}, {0x75, 0x16, 0x2b, 0xff}}},\n    {{{    29,     -9,     35}, 0, {   298,   1300}, {0x13, 0xeb, 0x7b, 0xff}}},\n};\n\n// 0x0603D770\nstatic const Vtx bowser_seg6_vertex_0603D770[] = {\n    {{{    14,    -12,     36}, 0, {   248,    912}, {0x00, 0xcd, 0x73, 0xff}}},\n    {{{    20,    -23,     23}, 0, {   894,    916}, {0x2f, 0x8d, 0x17, 0xff}}},\n    {{{    32,    -16,     27}, 0, {   692,   1304}, {0x43, 0x96, 0x0e, 0xff}}},\n    {{{    29,     -9,     35}, 0, {   298,   1300}, {0x13, 0xeb, 0x7b, 0xff}}},\n    {{{    50,     20,    -23}, 0, {   908,    648}, {0x3b, 0x32, 0x9c, 0xff}}},\n    {{{    36,     35,    -13}, 0, {    84,    748}, {0x08, 0x61, 0xb0, 0xff}}},\n    {{{    56,     35,     -2}, 0, {   136,   1444}, {0x44, 0x68, 0xe7, 0xff}}},\n    {{{    62,     16,      7}, 0, {   210,   1340}, {0xe7, 0x37, 0x6f, 0xff}}},\n    {{{    78,      9,     19}, 0, {    94,   1948}, {0x66, 0x03, 0x4a, 0xff}}},\n    {{{    67,     17,     -5}, 0, {   728,   1360}, {0x52, 0x5a, 0xde, 0xff}}},\n    {{{    60,     25,     -5}, 0, {   582,   1364}, {0x67, 0xba, 0xec, 0xff}}},\n    {{{    50,     20,      3}, 0, {   746,   1120}, {0x25, 0xea, 0x77, 0xff}}},\n    {{{    50,     20,    -23}, 0, {    54,    600}, {0x3b, 0x32, 0x9c, 0xff}}},\n    {{{    60,     25,     -5}, 0, {   230,   1360}, {0x67, 0xba, 0xec, 0xff}}},\n    {{{    62,     24,     16}, 0, {   724,   1916}, {0x65, 0xe1, 0x45, 0xff}}},\n    {{{    54,     23,      8}, 0, {   734,   1392}, {0xf1, 0x8f, 0x37, 0xff}}},\n};\n\n// 0x0603D870\nstatic const Vtx bowser_seg6_vertex_0603D870[] = {\n    {{{    67,     17,     -5}, 0, {   728,   1360}, {0x52, 0x5a, 0xde, 0xff}}},\n    {{{    50,     20,    -23}, 0, {  1014,    728}, {0x3b, 0x32, 0x9c, 0xff}}},\n    {{{    50,     20,      3}, 0, {    92,    952}, {0x25, 0xea, 0x77, 0xff}}},\n    {{{    62,     16,      7}, 0, {   210,   1340}, {0xe7, 0x37, 0x6f, 0xff}}},\n    {{{    67,     17,     -5}, 0, {   184,   1364}, {0x52, 0x5a, 0xde, 0xff}}},\n    {{{    78,      9,     19}, 0, {   558,   2016}, {0x66, 0x03, 0x4a, 0xff}}},\n    {{{    70,      3,     -5}, 0, {   824,   1364}, {0x55, 0xa8, 0xe1, 0xff}}},\n    {{{    55,      0,    -23}, 0, {   892,    760}, {0x37, 0xf3, 0x8f, 0xff}}},\n    {{{    50,     20,    -23}, 0, {   -42,    740}, {0x3b, 0x32, 0x9c, 0xff}}},\n    {{{    62,    -17,     14}, 0, {   716,   1304}, {0xf2, 0xe4, 0x7a, 0xff}}},\n    {{{    78,     -8,     21}, 0, {   420,   1872}, {0x69, 0x10, 0x43, 0xff}}},\n    {{{    63,     -2,      8}, 0, {    -8,   1300}, {0xee, 0x67, 0x47, 0xff}}},\n    {{{    54,      0,      3}, 0, {  -176,    988}, {0xf9, 0x18, 0x7c, 0xff}}},\n    {{{    51,    -23,     13}, 0, {   986,    912}, {0x15, 0xa1, 0x51, 0xff}}},\n};\n\n// 0x0603D950\nstatic const Vtx bowser_seg6_vertex_0603D950[] = {\n    {{{    51,    -20,    -13}, 0, {   488,    664}, {0x2b, 0xa4, 0xb5, 0xff}}},\n    {{{    55,      0,    -23}, 0, {  -392,    708}, {0x37, 0xf3, 0x8f, 0xff}}},\n    {{{    69,     -2,     -5}, 0, {  -168,   1360}, {0x60, 0x42, 0xcf, 0xff}}},\n    {{{    67,    -17,      0}, 0, {   450,   1308}, {0x4e, 0xa0, 0xe7, 0xff}}},\n    {{{    54,      0,      3}, 0, {   944,    888}, {0xf9, 0x18, 0x7c, 0xff}}},\n    {{{    65,      2,      6}, 0, {   868,   1296}, {0xf3, 0x9f, 0x4f, 0xff}}},\n    {{{    62,     16,      7}, 0, {   228,   1388}, {0xe7, 0x37, 0x6f, 0xff}}},\n    {{{    15,      2,     33}, 0, {   -86,    960}, {0x08, 0x61, 0x51, 0xff}}},\n    {{{    14,    -12,     36}, 0, {   566,    824}, {0x00, 0xcd, 0x73, 0xff}}},\n    {{{    29,     -9,     35}, 0, {   524,   1364}, {0x13, 0xeb, 0x7b, 0xff}}},\n    {{{    44,     -6,     32}, 0, {   434,   1924}, {0x75, 0x16, 0x2b, 0xff}}},\n    {{{    29,      0,     33}, 0, {   126,   1448}, {0x1e, 0x6b, 0x3b, 0xff}}},\n    {{{     0,    -17,     31}, 0, {   644,    292}, {0xb9, 0xd5, 0x5f, 0xff}}},\n    {{{    54,      0,      3}, 0, {  -108,   1016}, {0xf9, 0x18, 0x7c, 0xff}}},\n    {{{    69,     -2,     -5}, 0, {   444,   1280}, {0x60, 0x42, 0xcf, 0xff}}},\n    {{{    55,      0,    -23}, 0, {   626,    764}, {0x37, 0xf3, 0x8f, 0xff}}},\n};\n\n// 0x0603DA50\nstatic const Vtx bowser_seg6_vertex_0603DA50[] = {\n    {{{    54,      0,      3}, 0, {  -108,   1016}, {0xf9, 0x18, 0x7c, 0xff}}},\n    {{{    63,     -2,      8}, 0, {   -46,   1284}, {0xee, 0x67, 0x47, 0xff}}},\n    {{{    69,     -2,     -5}, 0, {   444,   1280}, {0x60, 0x42, 0xcf, 0xff}}},\n    {{{    78,     -8,     21}, 0, {   -86,   1792}, {0x69, 0x10, 0x43, 0xff}}},\n    {{{    54,      0,      3}, 0, {   944,    888}, {0xf9, 0x18, 0x7c, 0xff}}},\n    {{{    62,     16,      7}, 0, {   228,   1388}, {0xe7, 0x37, 0x6f, 0xff}}},\n    {{{    50,     20,      3}, 0, {    10,    988}, {0x25, 0xea, 0x77, 0xff}}},\n    {{{    56,     35,     -2}, 0, {   264,   1480}, {0x44, 0x68, 0xe7, 0xff}}},\n    {{{    36,     35,    -13}, 0, {   148,    708}, {0x08, 0x61, 0xb0, 0xff}}},\n    {{{    36,     38,     13}, 0, {   966,    956}, {0x15, 0x66, 0x47, 0xff}}},\n    {{{    65,      2,      6}, 0, {   868,   1296}, {0xf3, 0x9f, 0x4f, 0xff}}},\n    {{{    78,      9,     19}, 0, {   624,   1972}, {0x66, 0x03, 0x4a, 0xff}}},\n    {{{    50,     20,      3}, 0, {   798,   1040}, {0x25, 0xea, 0x77, 0xff}}},\n    {{{    48,     36,     13}, 0, {   136,   1296}, {0xec, 0x09, 0x7c, 0xff}}},\n    {{{    36,     38,     13}, 0, {  -106,    888}, {0x15, 0x66, 0x47, 0xff}}},\n    {{{    54,     23,      8}, 0, {   704,   1320}, {0xf1, 0x8f, 0x37, 0xff}}},\n};\n\n// 0x0603DB50\nstatic const Vtx bowser_seg6_vertex_0603DB50[] = {\n    {{{    54,     23,      8}, 0, {   704,   1320}, {0xf1, 0x8f, 0x37, 0xff}}},\n    {{{    62,     24,     16}, 0, {   664,   1856}, {0x65, 0xe1, 0x45, 0xff}}},\n    {{{    48,     36,     13}, 0, {   136,   1296}, {0xec, 0x09, 0x7c, 0xff}}},\n    {{{    48,     36,     13}, 0, {   820,   1356}, {0xec, 0x09, 0x7c, 0xff}}},\n    {{{    62,     24,     16}, 0, {   742,   1968}, {0x65, 0xe1, 0x45, 0xff}}},\n    {{{    56,     35,     -2}, 0, {   264,   1480}, {0x44, 0x68, 0xe7, 0xff}}},\n    {{{    36,     38,     13}, 0, {   966,    956}, {0x15, 0x66, 0x47, 0xff}}},\n    {{{    56,     35,     -2}, 0, {   144,   1364}, {0x44, 0x68, 0xe7, 0xff}}},\n    {{{    62,     24,     16}, 0, {   300,   1992}, {0x65, 0xe1, 0x45, 0xff}}},\n    {{{    60,     25,     -5}, 0, {   590,   1284}, {0x67, 0xba, 0xec, 0xff}}},\n    {{{    51,    -23,     13}, 0, {   738,    896}, {0x15, 0xa1, 0x51, 0xff}}},\n    {{{    51,    -20,    -13}, 0, {  -174,    668}, {0x2b, 0xa4, 0xb5, 0xff}}},\n    {{{    67,    -17,      0}, 0, {   -16,   1256}, {0x4e, 0xa0, 0xe7, 0xff}}},\n    {{{    78,     -8,     21}, 0, {   484,   1908}, {0x69, 0x10, 0x43, 0xff}}},\n    {{{    62,    -17,     14}, 0, {   546,   1304}, {0xf2, 0xe4, 0x7a, 0xff}}},\n};\n\n// 0x0603DC40\nstatic const Vtx bowser_seg6_vertex_0603DC40[] = {\n    {{{    69,     -2,     -5}, 0, {  -156,   1308}, {0x60, 0x42, 0xcf, 0xff}}},\n    {{{    78,     -8,     21}, 0, {   324,   1996}, {0x69, 0x10, 0x43, 0xff}}},\n    {{{    67,    -17,      0}, 0, {   464,   1256}, {0x4e, 0xa0, 0xe7, 0xff}}},\n};\n\n// 0x0603DC70 - 0x0603DDD0\nconst Gfx bowser_seg6_dl_0603DC70[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06022438),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bowser_seg6_lights_06038C38.l, 1),\n    gsSPLight(&bowser_seg6_lights_06038C38.a, 2),\n    gsSPVertex(bowser_seg6_vertex_0603D280, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 4,  8,  5, 0x0,  5,  9,  3, 0x0),\n    gsSP2Triangles( 0,  2, 10, 0x0,  2, 11, 10, 0x0),\n    gsSP2Triangles( 1, 12,  2, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603D380, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 12, 0x0),\n    gsSP2Triangles( 9, 13, 11, 0x0,  9, 14, 13, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603D470, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  9,  6, 0x0),\n    gsSP2Triangles( 6, 10, 11, 0x0,  6, 11,  7, 0x0),\n    gsSP2Triangles( 6, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603D570, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  3,  2, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603D650, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0603DDD0 - 0x0603DFB0\nconst Gfx bowser_seg6_dl_0603DDD0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06029C38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_seg6_vertex_0603D680, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 2,  4,  0, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9,  5, 0x0, 10,  6,  5, 0x0),\n    gsSP2Triangles( 9, 11,  5, 0x0,  5, 11, 10, 0x0),\n    gsSP2Triangles( 7,  8,  5, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603D770, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 6, 10,  4, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(13, 14, 15, 0x0, 13, 15, 11, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603D870, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  4, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13,  9, 0x0,  9, 11, 12, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603D950, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 11,  7, 0x0),\n    gsSP2Triangles(12,  8,  7, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603DA50, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11,  5, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 15, 13, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603DB50, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 14, 10, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603DC40, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0603DFB0 - 0x0603E030\nconst Gfx bowser_seg6_dl_0603DFB0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_seg6_dl_0603DC70),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_seg6_dl_0603DDD0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0603E030\nstatic const Vtx bowser_seg6_vertex_0603E030[] = {\n    {{{    30,     59,    -21}, 0, {   -60,    -38}, {0xf3, 0x6f, 0xc6, 0xff}}},\n    {{{    30,     59,     16}, 0, {   -84,    948}, {0xf3, 0x78, 0x27, 0xff}}},\n    {{{    93,     39,    -21}, 0, {  1694,    -14}, {0x38, 0x68, 0xd3, 0xff}}},\n    {{{   114,     19,    -21}, 0, {    72,     64}, {0x72, 0x1f, 0xd4, 0xff}}},\n    {{{   111,    -17,     16}, 0, {   870,    890}, {0x62, 0xc3, 0x32, 0xff}}},\n    {{{   111,    -17,    -21}, 0, {   894,     50}, {0x5a, 0xc9, 0xbb, 0xff}}},\n    {{{   114,     19,     16}, 0, {    50,    906}, {0x68, 0x37, 0x2c, 0xff}}},\n    {{{    -7,     38,     16}, 0, {  1478,    918}, {0xab, 0x3a, 0x4a, 0xff}}},\n    {{{    -7,     38,    -21}, 0, {  1460,     24}, {0xa2, 0x42, 0xcb, 0xff}}},\n    {{{   -21,    -23,     16}, 0, {   -22,    938}, {0x8f, 0xdd, 0x2b, 0xff}}},\n    {{{   -21,    -23,    -21}, 0, {   -40,     44}, {0x99, 0xe0, 0xbf, 0xff}}},\n    {{{    73,    -38,    -21}, 0, {  -288,     14}, {0x26, 0x93, 0xce, 0xff}}},\n    {{{    73,    -38,     16}, 0, {  -268,    982}, {0x1e, 0x90, 0x32, 0xff}}},\n    {{{     6,    -49,    -21}, 0, {  1464,     14}, {0xdc, 0x8e, 0xd7, 0xff}}},\n    {{{     6,    -49,     16}, 0, {  1484,    980}, {0xdf, 0x97, 0x3e, 0xff}}},\n};\n\n// 0x0603E120\nstatic const Vtx bowser_seg6_vertex_0603E120[] = {\n    {{{    -7,     38,     16}, 0, {  -590,   -436}, {0xab, 0x3a, 0x4a, 0xff}}},\n    {{{    24,     32,     35}, 0, {   206,   -406}, {0xf4, 0x2c, 0x76, 0xff}}},\n    {{{    30,     59,     16}, 0, {   264,  -1120}, {0xf3, 0x78, 0x27, 0xff}}},\n    {{{    30,     59,     16}, 0, {   -84,    948}, {0xf3, 0x78, 0x27, 0xff}}},\n    {{{    93,     39,     16}, 0, {  1670,    972}, {0x33, 0x61, 0x3e, 0xff}}},\n    {{{    93,     39,    -21}, 0, {  1694,    -14}, {0x38, 0x68, 0xd3, 0xff}}},\n    {{{    73,    -38,     16}, 0, {  1632,   1200}, {0x1e, 0x90, 0x32, 0xff}}},\n    {{{   111,    -17,     16}, 0, {  2488,    518}, {0x62, 0xc3, 0x32, 0xff}}},\n    {{{    78,    -18,     35}, 0, {  1688,    686}, {0x19, 0xd6, 0x75, 0xff}}},\n    {{{    12,    -21,     35}, 0, {    90,   1020}, {0xe2, 0xde, 0x76, 0xff}}},\n    {{{    88,     20,     35}, 0, {  1804,   -344}, {0x30, 0x1d, 0x71, 0xff}}},\n    {{{   114,     19,     16}, 0, {  2434,   -426}, {0x68, 0x37, 0x2c, 0xff}}},\n    {{{    93,     39,     16}, 0, {  1860,   -860}, {0x33, 0x61, 0x3e, 0xff}}},\n    {{{    93,     39,    -21}, 0, {   112,    942}, {0x38, 0x68, 0xd3, 0xff}}},\n    {{{    88,     20,    -40}, 0, {   774,    944}, {0x30, 0x1d, 0x8f, 0xff}}},\n    {{{    24,     32,    -40}, 0, {   750,   -682}, {0xf4, 0x2c, 0x8a, 0xff}}},\n};\n\n// 0x0603E220\nstatic const Vtx bowser_seg6_vertex_0603E220[] = {\n    {{{    24,     32,    -40}, 0, {   -40,    824}, {0xf4, 0x2c, 0x8a, 0xff}}},\n    {{{    -7,     38,    -21}, 0, {  -748,    892}, {0xa2, 0x42, 0xcb, 0xff}}},\n    {{{    30,     59,    -21}, 0, {    42,   1454}, {0xf3, 0x6f, 0xc6, 0xff}}},\n    {{{    78,    -18,    -40}, 0, {  1222,   -226}, {0x19, 0xd6, 0x8b, 0xff}}},\n    {{{    12,    -21,    -40}, 0, {  -208,   -442}, {0xe2, 0xde, 0x8a, 0xff}}},\n    {{{    88,     20,    -40}, 0, {  1372,    686}, {0x30, 0x1d, 0x8f, 0xff}}},\n    {{{   114,     19,    -21}, 0, {  1934,    726}, {0x72, 0x1f, 0xd4, 0xff}}},\n    {{{    93,     39,    -21}, 0, {  1446,   1140}, {0x38, 0x68, 0xd3, 0xff}}},\n    {{{   111,    -17,    -21}, 0, {  1938,   -116}, {0x5a, 0xc9, 0xbb, 0xff}}},\n    {{{    73,    -38,    -21}, 0, {  1148,   -680}, {0x26, 0x93, 0xce, 0xff}}},\n    {{{    24,     32,    -40}, 0, {   750,   -682}, {0xf4, 0x2c, 0x8a, 0xff}}},\n    {{{    30,     59,    -21}, 0, {   -44,   -700}, {0xf3, 0x6f, 0xc6, 0xff}}},\n    {{{    93,     39,    -21}, 0, {   112,    942}, {0x38, 0x68, 0xd3, 0xff}}},\n    {{{    12,    -21,     35}, 0, {    90,   1020}, {0xe2, 0xde, 0x76, 0xff}}},\n    {{{     6,    -49,     16}, 0, {    32,   1734}, {0xdf, 0x97, 0x3e, 0xff}}},\n    {{{    73,    -38,     16}, 0, {  1632,   1200}, {0x1e, 0x90, 0x32, 0xff}}},\n};\n\n// 0x0603E320\nstatic const Vtx bowser_seg6_vertex_0603E320[] = {\n    {{{    12,    -21,     35}, 0, {    90,   1020}, {0xe2, 0xde, 0x76, 0xff}}},\n    {{{   -21,    -23,     16}, 0, {  -706,   1188}, {0x8f, 0xdd, 0x2b, 0xff}}},\n    {{{     6,    -49,     16}, 0, {    32,   1734}, {0xdf, 0x97, 0x3e, 0xff}}},\n    {{{    -7,     38,     16}, 0, {  -590,   -436}, {0xab, 0x3a, 0x4a, 0xff}}},\n    {{{    12,    -21,    -40}, 0, {  -208,   -442}, {0xe2, 0xde, 0x8a, 0xff}}},\n    {{{   -21,    -23,    -21}, 0, {  -924,   -550}, {0x99, 0xe0, 0xbf, 0xff}}},\n    {{{    -7,     38,    -21}, 0, {  -748,    892}, {0xa2, 0x42, 0xcb, 0xff}}},\n    {{{    73,    -38,    -21}, 0, {  1148,   -680}, {0x26, 0x93, 0xce, 0xff}}},\n    {{{     6,    -49,    -21}, 0, {  -292,  -1074}, {0xdc, 0x8e, 0xd7, 0xff}}},\n    {{{    30,     59,    -21}, 0, {   988,    114}, {0xf3, 0x6f, 0xc6, 0xff}}},\n    {{{    -7,     38,    -21}, 0, {    58,    106}, {0xa2, 0x42, 0xcb, 0xff}}},\n    {{{    30,     59,     16}, 0, {   954,    930}, {0xf3, 0x78, 0x27, 0xff}}},\n    {{{    -7,     38,     16}, 0, {    24,    922}, {0xab, 0x3a, 0x4a, 0xff}}},\n    {{{   111,    -17,     16}, 0, {   -34,    922}, {0x62, 0xc3, 0x32, 0xff}}},\n    {{{    73,    -38,     16}, 0, {  1048,    922}, {0x1e, 0x90, 0x32, 0xff}}},\n    {{{    73,    -38,    -21}, 0, {  1022,    -28}, {0x26, 0x93, 0xce, 0xff}}},\n};\n\n// 0x0603E420\nstatic const Vtx bowser_seg6_vertex_0603E420[] = {\n    {{{     6,    -49,     16}, 0, {    -8,    940}, {0xdf, 0x97, 0x3e, 0xff}}},\n    {{{   -21,    -23,     16}, 0, {   952,    976}, {0x8f, 0xdd, 0x2b, 0xff}}},\n    {{{     6,    -49,    -21}, 0, {    -2,    -54}, {0xdc, 0x8e, 0xd7, 0xff}}},\n    {{{   -21,    -23,    -21}, 0, {   958,    -20}, {0x99, 0xe0, 0xbf, 0xff}}},\n    {{{    12,    -21,     35}, 0, {  -208,   -442}, {0xe2, 0xde, 0x76, 0xff}}},\n    {{{    24,     32,     35}, 0, {   -40,    824}, {0xf4, 0x2c, 0x76, 0xff}}},\n    {{{    -7,     38,     16}, 0, {  -748,    892}, {0xab, 0x3a, 0x4a, 0xff}}},\n    {{{    93,     39,     16}, 0, {    88,    880}, {0x33, 0x61, 0x3e, 0xff}}},\n    {{{   114,     19,     16}, 0, {   874,    902}, {0x68, 0x37, 0x2c, 0xff}}},\n    {{{    93,     39,    -21}, 0, {   102,      8}, {0x38, 0x68, 0xd3, 0xff}}},\n    {{{   114,     19,    -21}, 0, {   886,     30}, {0x72, 0x1f, 0xd4, 0xff}}},\n    {{{    73,    -38,    -21}, 0, {  1022,    -28}, {0x26, 0x93, 0xce, 0xff}}},\n    {{{   111,    -17,    -21}, 0, {   -62,    -28}, {0x5a, 0xc9, 0xbb, 0xff}}},\n    {{{   111,    -17,     16}, 0, {   -34,    922}, {0x62, 0xc3, 0x32, 0xff}}},\n};\n\n// 0x0603E500 - 0x0603E6B8\nconst Gfx bowser_seg6_dl_0603E500[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06022438),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bowser_seg6_lights_06038C38.l, 1),\n    gsSPLight(&bowser_seg6_lights_06038C38.a, 2),\n    gsSPVertex(bowser_seg6_vertex_0603E030, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603E120, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  1,  9,  8, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0,  8, 10,  1, 0x0),\n    gsSP2Triangles( 8,  7, 10, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles( 1, 10, 12, 0x0,  7, 11, 10, 0x0),\n    gsSP2Triangles(12,  2,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603E220, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  5,  3, 0x0,  1,  0,  4, 0x0),\n    gsSP2Triangles( 6,  5,  7, 0x0,  5,  6,  8, 0x0),\n    gsSP2Triangles( 5,  8,  3, 0x0,  3,  8,  9, 0x0),\n    gsSP2Triangles( 4,  3,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603E320, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  4, 0x0),\n    gsSP2Triangles( 8,  5,  4, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(10, 12, 11, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603E420, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0603E6B8 - 0x0603E718\nconst Gfx bowser_seg6_dl_0603E6B8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_seg6_dl_0603E500),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0603E718\nstatic const Vtx bowser_seg6_vertex_0603E718[] = {\n    {{{    67,    104,    167}, 0, {   898,    782}, {0x5c, 0x12, 0x55, 0xff}}},\n    {{{    82,    124,    131}, 0, {  1002,    500}, {0x5e, 0x40, 0x37, 0xff}}},\n    {{{    57,    174,     99}, 0, {   856,    102}, {0x42, 0x64, 0x27, 0xff}}},\n    {{{    40,     85,    189}, 0, {   720,    982}, {0x1d, 0x0d, 0x7a, 0xff}}},\n    {{{   -56,    174,     99}, 0, {   120,    106}, {0xbe, 0x64, 0x27, 0xff}}},\n    {{{   -81,    124,    131}, 0, {   -50,    504}, {0xa2, 0x40, 0x37, 0xff}}},\n    {{{   -66,    104,    167}, 0, {    34,    784}, {0xa4, 0x12, 0x55, 0xff}}},\n    {{{   -39,     85,    189}, 0, {   200,    984}, {0xe3, 0x0d, 0x7a, 0xff}}},\n    {{{     0,    185,     86}, 0, {   492,    -16}, {0x00, 0x7c, 0x17, 0xff}}},\n};\n\n// 0x0603E7A8\nstatic const Vtx bowser_seg6_vertex_0603E7A8[] = {\n    {{{   -84,    120,     92}, 0, {   956,     26}, {0xab, 0x5d, 0x0d, 0xff}}},\n    {{{  -137,     92,     80}, 0, {  -314,     18}, {0x99, 0x48, 0x06, 0xff}}},\n    {{{  -150,     79,    114}, 0, {  -680,    932}, {0x9b, 0x33, 0x39, 0xff}}},\n    {{{   151,     79,    114}, 0, {   -42,    800}, {0x65, 0x33, 0x39, 0xff}}},\n    {{{   159,     21,     94}, 0, {  1578,    980}, {0x74, 0xf9, 0x31, 0xff}}},\n    {{{   142,     56,     59}, 0, {  1040,    -42}, {0x79, 0x23, 0xfa, 0xff}}},\n    {{{   138,     92,     80}, 0, {   -50,    -18}, {0x67, 0x48, 0x06, 0xff}}},\n    {{{    82,    124,    131}, 0, {  -502,    864}, {0x5e, 0x40, 0x37, 0xff}}},\n    {{{   151,     79,    114}, 0, {  1730,    840}, {0x65, 0x33, 0x39, 0xff}}},\n    {{{    85,    120,     92}, 0, {  -196,    -56}, {0x55, 0x5d, 0x0d, 0xff}}},\n    {{{   138,     92,     80}, 0, {  1410,    -86}, {0x67, 0x48, 0x06, 0xff}}},\n    {{{  -154,     28,      6}, 0, {  -114,      8}, {0x8a, 0x28, 0xec, 0xff}}},\n    {{{  -158,     21,     94}, 0, {  1274,    976}, {0x8a, 0xfa, 0x2d, 0xff}}},\n    {{{  -141,     56,     59}, 0, {  1182,     -8}, {0x86, 0x20, 0xf6, 0xff}}},\n    {{{  -176,    -19,     11}, 0, {  -714,    966}, {0x87, 0xde, 0xf7, 0xff}}},\n    {{{   -81,    124,    131}, 0, {  1086,    926}, {0xa2, 0x40, 0x37, 0xff}}},\n};\n\n// 0x0603E8A8\nstatic const Vtx bowser_seg6_vertex_0603E8A8[] = {\n    {{{  -150,     79,    114}, 0, {  1076,    786}, {0x9b, 0x33, 0x39, 0xff}}},\n    {{{  -141,     56,     59}, 0, {    94,     -6}, {0x86, 0x20, 0xf6, 0xff}}},\n    {{{  -158,     21,     94}, 0, {  -250,    960}, {0x8a, 0xfa, 0x2d, 0xff}}},\n    {{{  -137,     92,     80}, 0, {  1004,     14}, {0x99, 0x48, 0x06, 0xff}}},\n    {{{   162,     30,      4}, 0, {   -64,      0}, {0x77, 0x26, 0xec, 0xff}}},\n    {{{   177,    -19,     11}, 0, {   210,    976}, {0x77, 0xd7, 0xf7, 0xff}}},\n    {{{   141,      2,    -36}, 0, {  1076,    -22}, {0x69, 0x1b, 0xbf, 0xff}}},\n    {{{   142,     56,     59}, 0, {  -262,    -46}, {0x79, 0x23, 0xfa, 0xff}}},\n    {{{   159,     21,     94}, 0, {  -426,    980}, {0x74, 0xf9, 0x31, 0xff}}},\n    {{{   162,     30,      4}, 0, {  1088,    -28}, {0x77, 0x26, 0xec, 0xff}}},\n    {{{   177,    -19,     11}, 0, {  1540,    954}, {0x77, 0xd7, 0xf7, 0xff}}},\n    {{{   -84,    120,     92}, 0, {   116,     -2}, {0xab, 0x5d, 0x0d, 0xff}}},\n    {{{   -56,    174,     99}, 0, {  1552,    948}, {0xbe, 0x64, 0x27, 0xff}}},\n    {{{   -54,    160,     54}, 0, {  1858,     10}, {0xc6, 0x70, 0xf4, 0xff}}},\n};\n\n// 0x0603E988\nstatic const Vtx bowser_seg6_vertex_0603E988[] = {\n    {{{   177,    -19,     11}, 0, { -1734,    990}, {0x77, 0xd7, 0xf7, 0xff}}},\n    {{{   129,    -50,    -86}, 0, {  1348,    990}, {0x57, 0xc1, 0xbe, 0xff}}},\n    {{{   141,      2,    -36}, 0, {  -354,    -74}, {0x69, 0x1b, 0xbf, 0xff}}},\n    {{{   111,    -16,    -99}, 0, {  1630,    -90}, {0x50, 0x16, 0xa1, 0xff}}},\n    {{{  -140,      2,    -36}, 0, {   982,     10}, {0x95, 0x1e, 0xc4, 0xff}}},\n    {{{  -128,    -50,    -86}, 0, {  -290,    928}, {0xa9, 0xc1, 0xbe, 0xff}}},\n    {{{  -176,    -19,     11}, 0, {  1970,    930}, {0x87, 0xde, 0xf7, 0xff}}},\n    {{{  -110,    -16,    -99}, 0, {  -474,     -6}, {0xb0, 0x16, 0xa1, 0xff}}},\n    {{{  -176,    -19,     11}, 0, {   652,    954}, {0x87, 0xde, 0xf7, 0xff}}},\n    {{{  -154,     28,      6}, 0, {  1022,     -6}, {0x8a, 0x28, 0xec, 0xff}}},\n    {{{  -140,      2,    -36}, 0, {  -278,     -8}, {0x95, 0x1e, 0xc4, 0xff}}},\n    {{{   -84,    120,     92}, 0, {   116,     -2}, {0xab, 0x5d, 0x0d, 0xff}}},\n    {{{   -81,    124,    131}, 0, {  -234,    712}, {0xa2, 0x40, 0x37, 0xff}}},\n    {{{   -56,    174,     99}, 0, {  1552,    948}, {0xbe, 0x64, 0x27, 0xff}}},\n};\n\n// 0x0603EA68\nstatic const Vtx bowser_seg6_vertex_0603EA68[] = {\n    {{{     0,    185,     86}, 0, {  1042,    808}, {0x00, 0x7c, 0x17, 0xff}}},\n    {{{    57,    174,     99}, 0, {  2130,   1006}, {0x42, 0x64, 0x27, 0xff}}},\n    {{{    55,    160,     54}, 0, {  2158,     24}, {0x39, 0x70, 0xf4, 0xff}}},\n    {{{   -56,    174,     99}, 0, {   -68,    982}, {0xbe, 0x64, 0x27, 0xff}}},\n    {{{   -54,    160,     54}, 0, {    30,     -2}, {0xc6, 0x70, 0xf4, 0xff}}},\n    {{{     0,    177,     49}, 0, {  1092,     24}, {0x00, 0x7d, 0xec, 0xff}}},\n    {{{    82,    124,    131}, 0, {  1360,    816}, {0x5e, 0x40, 0x37, 0xff}}},\n    {{{    85,    120,     92}, 0, {  1258,     54}, {0x55, 0x5d, 0x0d, 0xff}}},\n    {{{    57,    174,     99}, 0, {  -188,    916}, {0x42, 0x64, 0x27, 0xff}}},\n    {{{    55,    160,     54}, 0, {  -174,    -40}, {0x39, 0x70, 0xf4, 0xff}}},\n    {{{  -110,    -16,    -99}, 0, {  3194,    -10}, {0xb0, 0x16, 0xa1, 0xff}}},\n    {{{     0,    -21,   -146}, 0, {  -316,     -8}, {0x00, 0x17, 0x84, 0xff}}},\n    {{{     0,    -48,   -166}, 0, {  -612,   1006}, {0x00, 0xe5, 0x84, 0xff}}},\n    {{{  -128,    -50,    -86}, 0, {  3782,    774}, {0xa9, 0xc1, 0xbe, 0xff}}},\n};\n\n// 0x0603EB48\nstatic const Vtx bowser_seg6_vertex_0603EB48[] = {\n    {{{    97,     -2,    124}, 0, {  2126,  -2680}, {0x2e, 0xd7, 0x6e, 0xff}}},\n    {{{    49,     58,    158}, 0, {  1130,  -4916}, {0x39, 0xc9, 0x62, 0xff}}},\n    {{{     0,     -8,    133}, 0, {   136,  -2926}, {0x00, 0xbc, 0x6a, 0xff}}},\n    {{{   105,    -44,     89}, 0, {  2278,   -676}, {0x2f, 0xa5, 0x4a, 0xff}}},\n    {{{     0,     51,    166}, 0, {   136,  -5118}, {0x00, 0xb4, 0x65, 0xff}}},\n    {{{   -48,     58,    158}, 0, {  -858,  -4916}, {0xc6, 0xca, 0x62, 0xff}}},\n    {{{   -96,     -2,    124}, 0, { -1854,  -2680}, {0xd2, 0xd7, 0x6e, 0xff}}},\n    {{{  -104,    -44,     89}, 0, { -2006,   -676}, {0xd1, 0xa5, 0x4a, 0xff}}},\n    {{{     0,    -58,     95}, 0, {   136,   -692}, {0x00, 0x95, 0x43, 0xff}}},\n    {{{   -82,    -80,      5}, 0, { -1564,   3032}, {0xda, 0x88, 0x0b, 0xff}}},\n    {{{    83,    -80,      5}, 0, {  1836,   3032}, {0x26, 0x88, 0x0b, 0xff}}},\n    {{{     0,    -95,      7}, 0, {   136,   3224}, {0x00, 0x82, 0x0a, 0xff}}},\n    {{{     0,    -73,    -86}, 0, {   136,   6386}, {0x00, 0x86, 0xe0, 0xff}}},\n};\n\n// 0x0603EC18\nstatic const Vtx bowser_seg6_vertex_0603EC18[] = {\n    {{{    82,    124,    131}, 0, {   -88,    208}, {0x5e, 0x40, 0x37, 0xff}}},\n    {{{    81,     91,    138}, 0, {   -96,    706}, {0x4e, 0xf9, 0x63, 0xff}}},\n    {{{   151,     79,    114}, 0, {   972,    906}, {0x65, 0x33, 0x39, 0xff}}},\n    {{{   -82,    -80,      5}, 0, {  -892,    504}, {0xda, 0x88, 0x0b, 0xff}}},\n    {{{  -104,    -44,     89}, 0, { -1294,   -916}, {0xd1, 0xa5, 0x4a, 0xff}}},\n    {{{  -176,    -19,     11}, 0, { -2512,    142}, {0x87, 0xde, 0xf7, 0xff}}},\n    {{{  -128,    -50,    -86}, 0, { -1658,   1780}, {0xa9, 0xc1, 0xbe, 0xff}}},\n    {{{     0,    -73,    -86}, 0, {   568,   1940}, {0x00, 0x86, 0xe0, 0xff}}},\n    {{{     0,    -48,   -166}, 0, {   592,   3078}, {0x00, 0xe5, 0x84, 0xff}}},\n    {{{   129,    -50,    -86}, 0, {  2790,   1932}, {0x57, 0xc1, 0xbe, 0xff}}},\n    {{{    83,    -80,      5}, 0, {  1968,    604}, {0x26, 0x88, 0x0b, 0xff}}},\n    {{{   177,    -19,     11}, 0, {  3576,    352}, {0x77, 0xd7, 0xf7, 0xff}}},\n    {{{   105,    -44,     89}, 0, {  2310,   -792}, {0x2f, 0xa5, 0x4a, 0xff}}},\n    {{{   159,     21,     94}, 0, {  1158,    350}, {0x74, 0xf9, 0x31, 0xff}}},\n    {{{    97,     -2,    124}, 0, {   660,   1042}, {0x2e, 0xd7, 0x6e, 0xff}}},\n    {{{   105,    -44,     89}, 0, {  1324,   1476}, {0x2f, 0xa5, 0x4a, 0xff}}},\n};\n\n// 0x0603ED18\nstatic const Vtx bowser_seg6_vertex_0603ED18[] = {\n    {{{   -80,     91,    138}, 0, {   132,   -816}, {0xb2, 0xf9, 0x63, 0xff}}},\n    {{{   -96,     -2,    124}, 0, {   792,    334}, {0xd2, 0xd7, 0x6e, 0xff}}},\n    {{{   -48,     58,    158}, 0, {   822,   -908}, {0xc6, 0xca, 0x62, 0xff}}},\n    {{{  -150,     79,    114}, 0, {  -584,     72}, {0x9b, 0x33, 0x39, 0xff}}},\n    {{{  -158,     21,     94}, 0, {  -160,    840}, {0x8a, 0xfa, 0x2d, 0xff}}},\n    {{{  -104,    -44,     89}, 0, {  1064,   1074}, {0xd1, 0xa5, 0x4a, 0xff}}},\n    {{{  -150,     79,    114}, 0, {  -152,    620}, {0x9b, 0x33, 0x39, 0xff}}},\n    {{{   -80,     91,    138}, 0, {  1164,    654}, {0xb2, 0xf9, 0x63, 0xff}}},\n    {{{   -81,    124,    131}, 0, {  1086,    194}, {0xa2, 0x40, 0x37, 0xff}}},\n    {{{   151,     79,    114}, 0, {   480,   -238}, {0x65, 0x33, 0x39, 0xff}}},\n    {{{    97,     -2,    124}, 0, {   660,   1042}, {0x2e, 0xd7, 0x6e, 0xff}}},\n    {{{   159,     21,     94}, 0, {  1158,    350}, {0x74, 0xf9, 0x31, 0xff}}},\n    {{{    81,     91,    138}, 0, {  -354,    124}, {0x4e, 0xf9, 0x63, 0xff}}},\n    {{{    49,     58,    158}, 0, {  -468,    710}, {0x39, 0xc9, 0x62, 0xff}}},\n};\n\n// 0x0603EDF8\nstatic const Vtx bowser_seg6_vertex_0603EDF8[] = {\n    {{{   159,     21,     94}, 0, {  3230,  -1080}, {0x74, 0xf9, 0x31, 0xff}}},\n    {{{   105,    -44,     89}, 0, {  2310,   -792}, {0x2f, 0xa5, 0x4a, 0xff}}},\n    {{{   177,    -19,     11}, 0, {  3576,    352}, {0x77, 0xd7, 0xf7, 0xff}}},\n    {{{  -176,    -19,     11}, 0, { -2512,    142}, {0x87, 0xde, 0xf7, 0xff}}},\n    {{{  -104,    -44,     89}, 0, { -1294,   -916}, {0xd1, 0xa5, 0x4a, 0xff}}},\n    {{{  -158,     21,     94}, 0, { -2228,  -1266}, {0x8a, 0xfa, 0x2d, 0xff}}},\n};\n\n// 0x0603EE58\nstatic const Vtx bowser_seg6_vertex_0603EE58[] = {\n    {{{     0,    162,    -77}, 0, {   708,    976}, {0x00, 0x73, 0xcb, 0xff}}},\n    {{{     0,    177,     49}, 0, {   382,   -348}, {0x00, 0x7d, 0xec, 0xff}}},\n    {{{    55,    160,     54}, 0, {  -346,   -108}, {0x39, 0x70, 0xf4, 0xff}}},\n    {{{    69,     52,   -135}, 0, {     0,    990}, {0x3d, 0x22, 0x97, 0xff}}},\n    {{{   -68,     52,   -135}, 0, {   990,    990}, {0xc3, 0x22, 0x97, 0xff}}},\n    {{{     0,    162,    -77}, 0, {   500,   -438}, {0x00, 0x73, 0xcb, 0xff}}},\n    {{{     0,    -21,   -146}, 0, {   464,    814}, {0x00, 0x17, 0x84, 0xff}}},\n    {{{   -68,     52,   -135}, 0, {  1016,     82}, {0xc3, 0x22, 0x97, 0xff}}},\n    {{{    69,     52,   -135}, 0, {   -36,     36}, {0x3d, 0x22, 0x97, 0xff}}},\n    {{{     0,    162,    -77}, 0, {  1458,    536}, {0x00, 0x73, 0xcb, 0xff}}},\n    {{{   133,    130,     -9}, 0, {  -384,    232}, {0x66, 0x49, 0xef, 0xff}}},\n    {{{    69,     52,   -135}, 0, {   864,   1906}, {0x3d, 0x22, 0x97, 0xff}}},\n    {{{   133,    130,     -9}, 0, { -1174,    954}, {0x66, 0x49, 0xef, 0xff}}},\n    {{{  -154,     28,      6}, 0, {   406,    590}, {0x8a, 0x28, 0xec, 0xff}}},\n    {{{  -141,     56,     59}, 0, {   600,   -250}, {0x86, 0x20, 0xf6, 0xff}}},\n    {{{  -132,    130,     -9}, 0, {  1814,    410}, {0x99, 0x47, 0xf0, 0xff}}},\n};\n\n// 0x0603EF58\nstatic const Vtx bowser_seg6_vertex_0603EF58[] = {\n    {{{  -132,    130,     -9}, 0, {  1084,   -474}, {0x99, 0x47, 0xf0, 0xff}}},\n    {{{     0,    162,    -77}, 0, {  -408,   -586}, {0x00, 0x73, 0xcb, 0xff}}},\n    {{{   -68,     52,   -135}, 0, {    -6,   1036}, {0xc3, 0x22, 0x97, 0xff}}},\n    {{{  -132,    130,     -9}, 0, {  1362,   1002}, {0x99, 0x47, 0xf0, 0xff}}},\n    {{{   -54,    160,     54}, 0, {   640,   -158}, {0xc6, 0x70, 0xf4, 0xff}}},\n    {{{     0,    162,    -77}, 0, {  -156,   1064}, {0x00, 0x73, 0xcb, 0xff}}},\n    {{{     0,    177,     49}, 0, {    38,   -410}, {0x00, 0x7d, 0xec, 0xff}}},\n    {{{  -110,    -16,    -99}, 0, {   606,   1968}, {0xb0, 0x16, 0xa1, 0xff}}},\n    {{{  -140,      2,    -36}, 0, {  1264,   1534}, {0x95, 0x1e, 0xc4, 0xff}}},\n    {{{   -68,     52,   -135}, 0, {   -42,   1046}, {0xc3, 0x22, 0x97, 0xff}}},\n    {{{  -132,    130,     -9}, 0, {  1214,   -390}, {0x99, 0x47, 0xf0, 0xff}}},\n    {{{  -154,     28,      6}, 0, {   406,    590}, {0x8a, 0x28, 0xec, 0xff}}},\n    {{{  -132,    130,     -9}, 0, {  1814,    410}, {0x99, 0x47, 0xf0, 0xff}}},\n    {{{  -140,      2,    -36}, 0, {   266,   1220}, {0x95, 0x1e, 0xc4, 0xff}}},\n};\n\n// 0x0603F038\nstatic const Vtx bowser_seg6_vertex_0603F038[] = {\n    {{{   138,     92,     80}, 0, {   -42,    -22}, {0x67, 0x48, 0x06, 0xff}}},\n    {{{   133,    130,     -9}, 0, {   548,   1220}, {0x66, 0x49, 0xef, 0xff}}},\n    {{{    85,    120,     92}, 0, {   702,   -190}, {0x55, 0x5d, 0x0d, 0xff}}},\n    {{{  -141,     56,     59}, 0, {   600,   -250}, {0x86, 0x20, 0xf6, 0xff}}},\n    {{{  -137,     92,     80}, 0, {   994,   -652}, {0x99, 0x48, 0x06, 0xff}}},\n    {{{  -132,    130,     -9}, 0, {  1814,    410}, {0x99, 0x47, 0xf0, 0xff}}},\n    {{{   133,    130,     -9}, 0, {   174,   -870}, {0x66, 0x49, 0xef, 0xff}}},\n    {{{   162,     30,      4}, 0, {  -568,     30}, {0x77, 0x26, 0xec, 0xff}}},\n    {{{   141,      2,    -36}, 0, {  -254,    712}, {0x69, 0x1b, 0xbf, 0xff}}},\n    {{{    69,     52,   -135}, 0, {  1164,   1146}, {0x3d, 0x22, 0x97, 0xff}}},\n    {{{   111,    -16,    -99}, 0, {   322,   1498}, {0x50, 0x16, 0xa1, 0xff}}},\n    {{{  -132,    130,     -9}, 0, {   916,    970}, {0x99, 0x47, 0xf0, 0xff}}},\n    {{{   -84,    120,     92}, 0, {   872,   -552}, {0xab, 0x5d, 0x0d, 0xff}}},\n    {{{   -54,    160,     54}, 0, {   182,   -192}, {0xc6, 0x70, 0xf4, 0xff}}},\n    {{{  -137,     92,     80}, 0, {  1530,   -150}, {0x99, 0x48, 0x06, 0xff}}},\n};\n\n// 0x0603F128\nstatic const Vtx bowser_seg6_vertex_0603F128[] = {\n    {{{     0,    -21,   -146}, 0, {   -50,    888}, {0x00, 0x17, 0x84, 0xff}}},\n    {{{  -110,    -16,    -99}, 0, {   954,    896}, {0xb0, 0x16, 0xa1, 0xff}}},\n    {{{   -68,     52,   -135}, 0, {   536,    148}, {0xc3, 0x22, 0x97, 0xff}}},\n    {{{    85,    120,     92}, 0, {   702,   -190}, {0x55, 0x5d, 0x0d, 0xff}}},\n    {{{   133,    130,     -9}, 0, {   548,   1220}, {0x66, 0x49, 0xef, 0xff}}},\n    {{{    55,    160,     54}, 0, {  1428,    366}, {0x39, 0x70, 0xf4, 0xff}}},\n    {{{   142,     56,     59}, 0, {    62,    156}, {0x79, 0x23, 0xfa, 0xff}}},\n    {{{   133,    130,     -9}, 0, {  1224,    192}, {0x66, 0x49, 0xef, 0xff}}},\n    {{{   138,     92,     80}, 0, {    78,   -394}, {0x67, 0x48, 0x06, 0xff}}},\n    {{{   162,     30,      4}, 0, {   450,    996}, {0x77, 0x26, 0xec, 0xff}}},\n    {{{   111,    -16,    -99}, 0, {    36,    878}, {0x50, 0x16, 0xa1, 0xff}}},\n    {{{     0,    -21,   -146}, 0, {   956,    862}, {0x00, 0x17, 0x84, 0xff}}},\n    {{{    69,     52,   -135}, 0, {   430,     34}, {0x3d, 0x22, 0x97, 0xff}}},\n};\n\n// 0x0603F1F8\nstatic const Vtx bowser_seg6_vertex_0603F1F8[] = {\n    {{{  -106,     94,     78}, 0, {   124,   -380}, {0xfb, 0xf9, 0x7e, 0xff}}},\n    {{{   -85,    113,     62}, 0, {  1042,   -372}, {0x54, 0x4b, 0x38, 0xff}}},\n    {{{  -154,    176,     81}, 0, {   488,   2016}, {0xc3, 0x67, 0x29, 0xff}}},\n    {{{  -154,    176,     81}, 0, {   404,   2032}, {0xc3, 0x67, 0x29, 0xff}}},\n    {{{  -125,    101,     29}, 0, {   -76,   -380}, {0xa7, 0x19, 0xaa, 0xff}}},\n    {{{  -131,     86,     58}, 0, {  1026,   -356}, {0x8e, 0xd9, 0x27, 0xff}}},\n    {{{  -154,    176,     81}, 0, {   414,   2012}, {0xc3, 0x67, 0x29, 0xff}}},\n    {{{   -97,    118,     32}, 0, {   -42,   -372}, {0x21, 0x60, 0xb5, 0xff}}},\n    {{{  -125,    101,     29}, 0, {  1030,   -368}, {0xa7, 0x19, 0xaa, 0xff}}},\n    {{{  -154,    176,     81}, 0, {   416,   1976}, {0xc3, 0x67, 0x29, 0xff}}},\n    {{{   -85,    113,     62}, 0, {   -40,   -360}, {0x54, 0x4b, 0x38, 0xff}}},\n    {{{   -97,    118,     32}, 0, {   866,   -356}, {0x21, 0x60, 0xb5, 0xff}}},\n    {{{  -106,     94,     78}, 0, {   954,   -428}, {0xfb, 0xf9, 0x7e, 0xff}}},\n    {{{  -154,    176,     81}, 0, {   534,   2020}, {0xc3, 0x67, 0x29, 0xff}}},\n    {{{  -131,     86,     58}, 0, {    44,   -388}, {0x8e, 0xd9, 0x27, 0xff}}},\n};\n\n// 0x0603F2E8\nstatic const Vtx bowser_seg6_vertex_0603F2E8[] = {\n    {{{  -111,     36,    -71}, 0, {    88,    -12}, {0xe7, 0x99, 0xbb, 0xff}}},\n    {{{  -127,     44,    -43}, 0, {  1026,     -8}, {0xa2, 0xbc, 0x31, 0xff}}},\n    {{{  -181,     75,   -103}, 0, {   430,   2004}, {0x97, 0x15, 0xbe, 0xff}}},\n    {{{  -181,     75,   -103}, 0, {   414,   2004}, {0x97, 0x15, 0xbe, 0xff}}},\n    {{{  -106,     88,    -63}, 0, {    24,     -8}, {0xff, 0x79, 0xdd, 0xff}}},\n    {{{   -98,     63,    -83}, 0, {   984,      0}, {0x1f, 0x0e, 0x86, 0xff}}},\n    {{{  -181,     75,   -103}, 0, {   436,   2012}, {0x97, 0x15, 0xbe, 0xff}}},\n    {{{  -124,     76,    -39}, 0, {   -40,     12}, {0xb1, 0x46, 0x45, 0xff}}},\n    {{{  -106,     88,    -63}, 0, {   964,    -16}, {0xff, 0x79, 0xdd, 0xff}}},\n    {{{  -111,     36,    -71}, 0, {   986,      4}, {0xe7, 0x99, 0xbb, 0xff}}},\n    {{{  -181,     75,   -103}, 0, {   540,   1992}, {0x97, 0x15, 0xbe, 0xff}}},\n    {{{   -98,     63,    -83}, 0, {  -152,     16}, {0x1f, 0x0e, 0x86, 0xff}}},\n    {{{  -181,     75,   -103}, 0, {   480,   2020}, {0x97, 0x15, 0xbe, 0xff}}},\n    {{{  -127,     44,    -43}, 0, {    56,     -4}, {0xa2, 0xbc, 0x31, 0xff}}},\n    {{{  -124,     76,    -39}, 0, {  1028,    -12}, {0xb1, 0x46, 0x45, 0xff}}},\n};\n\n// 0x0603F3D8\nstatic const Vtx bowser_seg6_vertex_0603F3D8[] = {\n    {{{   100,    102,     79}, 0, {    -2,   -280}, {0xee, 0x07, 0x7d, 0xff}}},\n    {{{   127,     90,     65}, 0, {  1050,   -296}, {0x65, 0xd6, 0x3f, 0xff}}},\n    {{{   154,    180,     82}, 0, {   382,   2044}, {0x3f, 0x66, 0x27, 0xff}}},\n    {{{   154,    180,     82}, 0, {   512,   2016}, {0x3f, 0x66, 0x27, 0xff}}},\n    {{{   128,    102,     34}, 0, {  -126,   -256}, {0x69, 0x07, 0xbb, 0xff}}},\n    {{{   102,    120,     29}, 0, {  1068,   -288}, {0xf7, 0x58, 0xa6, 0xff}}},\n    {{{   154,    180,     82}, 0, {   468,   2000}, {0x3f, 0x66, 0x27, 0xff}}},\n    {{{   127,     90,     65}, 0, {    88,   -332}, {0x65, 0xd6, 0x3f, 0xff}}},\n    {{{   128,    102,     34}, 0, {  1024,   -332}, {0x69, 0x07, 0xbb, 0xff}}},\n    {{{    84,    120,     57}, 0, {  1024,   -312}, {0xaa, 0x58, 0x1d, 0xff}}},\n    {{{   154,    180,     82}, 0, {   458,   2040}, {0x3f, 0x66, 0x27, 0xff}}},\n    {{{   102,    120,     29}, 0, {     6,   -280}, {0xf7, 0x58, 0xa6, 0xff}}},\n    {{{   100,    102,     79}, 0, {   924,   -300}, {0xee, 0x07, 0x7d, 0xff}}},\n    {{{   154,    180,     82}, 0, {   458,   2036}, {0x3f, 0x66, 0x27, 0xff}}},\n    {{{    84,    120,     57}, 0, {     0,   -312}, {0xaa, 0x58, 0x1d, 0xff}}},\n};\n\n// 0x0603F4C8\nstatic const Vtx bowser_seg6_vertex_0603F4C8[] = {\n    {{{   -87,    144,     -1}, 0, {    18,     -8}, {0x88, 0x09, 0x25, 0xff}}},\n    {{{   -62,    153,     16}, 0, {   946,      4}, {0xf5, 0x30, 0x74, 0xff}}},\n    {{{   -86,    232,    -19}, 0, {   500,   2008}, {0xdc, 0x79, 0xf9, 0xff}}},\n    {{{   -86,    232,    -19}, 0, {   426,   1952}, {0xdc, 0x79, 0xf9, 0xff}}},\n    {{{   -46,    153,    -33}, 0, {   130,     12}, {0x3a, 0x2f, 0x9a, 0xff}}},\n    {{{   -77,    144,    -32}, 0, {   904,      0}, {0xb2, 0x06, 0x9d, 0xff}}},\n    {{{   -86,    232,    -19}, 0, {   460,   1992}, {0xdc, 0x79, 0xf9, 0xff}}},\n    {{{   -37,    159,     -2}, 0, {    20,    -28}, {0x61, 0x49, 0x21, 0xff}}},\n    {{{   -46,    153,    -33}, 0, {  1040,    -12}, {0x3a, 0x2f, 0x9a, 0xff}}},\n    {{{   -87,    144,     -1}, 0, {   928,     24}, {0x88, 0x09, 0x25, 0xff}}},\n    {{{   -86,    232,    -19}, 0, {   416,   2012}, {0xdc, 0x79, 0xf9, 0xff}}},\n    {{{   -77,    144,    -32}, 0, {    52,     12}, {0xb2, 0x06, 0x9d, 0xff}}},\n    {{{   -86,    232,    -19}, 0, {   488,   2004}, {0xdc, 0x79, 0xf9, 0xff}}},\n    {{{   -62,    153,     16}, 0, {    28,     12}, {0xf5, 0x30, 0x74, 0xff}}},\n    {{{   -37,    159,     -2}, 0, {   956,     16}, {0x61, 0x49, 0x21, 0xff}}},\n};\n\n// 0x0603F5B8\nstatic const Vtx bowser_seg6_vertex_0603F5B8[] = {\n    {{{    47,    153,    -33}, 0, {  -284,     28}, {0xc6, 0x2f, 0x9a, 0xff}}},\n    {{{    38,    159,     -2}, 0, {   980,     92}, {0x9f, 0x49, 0x21, 0xff}}},\n    {{{    87,    232,    -19}, 0, {   418,   2036}, {0x24, 0x79, 0xf9, 0xff}}},\n    {{{    87,    232,    -19}, 0, {   586,   1988}, {0x24, 0x79, 0xf9, 0xff}}},\n    {{{    78,    144,    -32}, 0, {   -34,     32}, {0x4e, 0x06, 0x9d, 0xff}}},\n    {{{    47,    153,    -33}, 0, {  1302,     16}, {0xc6, 0x2f, 0x9a, 0xff}}},\n    {{{    87,    232,    -19}, 0, {   460,   2000}, {0x24, 0x79, 0xf9, 0xff}}},\n    {{{    88,    144,     -1}, 0, {     8,     -4}, {0x78, 0x09, 0x25, 0xff}}},\n    {{{    78,    144,    -32}, 0, {   974,     -8}, {0x4e, 0x06, 0x9d, 0xff}}},\n    {{{    87,    232,    -19}, 0, {   460,   2004}, {0x24, 0x79, 0xf9, 0xff}}},\n    {{{    63,    153,     16}, 0, {  -382,     92}, {0x0b, 0x30, 0x74, 0xff}}},\n    {{{    88,    144,     -1}, 0, {  1000,      4}, {0x78, 0x09, 0x25, 0xff}}},\n    {{{    87,    232,    -19}, 0, {   604,   1996}, {0x24, 0x79, 0xf9, 0xff}}},\n    {{{    38,    159,     -2}, 0, {  -150,      4}, {0x9f, 0x49, 0x21, 0xff}}},\n    {{{    63,    153,     16}, 0, {  1090,      0}, {0x0b, 0x30, 0x74, 0xff}}},\n};\n\n// 0x0603F6A8\nstatic const Vtx bowser_seg6_vertex_0603F6A8[] = {\n    {{{   128,     44,    -43}, 0, {  1016,     -8}, {0x36, 0x8e, 0x05, 0xff}}},\n    {{{   125,     76,    -39}, 0, {   -10,      4}, {0x1e, 0x74, 0x27, 0xff}}},\n    {{{   128,     49,    -43}, 0, {   838,     -8}, {0x9b, 0x00, 0xb4, 0xff}}},\n    {{{   107,     88,    -63}, 0, {   962,      0}, {0x01, 0x79, 0xdd, 0xff}}},\n    {{{   182,     75,   -103}, 0, {   474,   2012}, {0x69, 0x15, 0xbe, 0xff}}},\n    {{{    99,     63,    -83}, 0, {     8,      0}, {0xe1, 0x0e, 0x86, 0xff}}},\n    {{{   125,     76,    -39}, 0, {   896,    -12}, {0x1e, 0x74, 0x27, 0xff}}},\n    {{{   182,     75,   -103}, 0, {   464,   1980}, {0x69, 0x15, 0xbe, 0xff}}},\n    {{{   107,     88,    -63}, 0, {    22,      0}, {0x01, 0x79, 0xdd, 0xff}}},\n    {{{   182,     75,   -103}, 0, {   420,   2004}, {0x69, 0x15, 0xbe, 0xff}}},\n    {{{   112,     36,    -71}, 0, {  -142,     -8}, {0x19, 0x99, 0xbb, 0xff}}},\n    {{{    99,     63,    -83}, 0, {   858,     -8}, {0xe1, 0x0e, 0x86, 0xff}}},\n    {{{   182,     75,   -103}, 0, {   448,   2004}, {0x69, 0x15, 0xbe, 0xff}}},\n    {{{    72,    132,    -53}, 0, {   898,    -16}, {0x27, 0x64, 0x43, 0xff}}},\n    {{{   107,    168,   -127}, 0, {   434,   2008}, {0x3b, 0x50, 0xb2, 0xff}}},\n    {{{    46,    133,    -72}, 0, {   -36,     16}, {0xb7, 0x66, 0xf0, 0xff}}},\n};\n\n// 0x0603F7A8\nstatic const Vtx bowser_seg6_vertex_0603F7A8[] = {\n    {{{   128,     44,    -43}, 0, {   -70,      0}, {0x36, 0x8e, 0x05, 0xff}}},\n    {{{   112,     36,    -71}, 0, {  1020,     20}, {0x19, 0x99, 0xbb, 0xff}}},\n    {{{   182,     75,   -103}, 0, {   492,   2048}, {0x69, 0x15, 0xbe, 0xff}}},\n    {{{    49,    108,    -94}, 0, {   980,    -12}, {0xc4, 0xfd, 0x91, 0xff}}},\n    {{{   107,    168,   -127}, 0, {   438,   2008}, {0x3b, 0x50, 0xb2, 0xff}}},\n    {{{    77,     93,    -88}, 0, {  -156,      0}, {0x3e, 0xbb, 0xaa, 0xff}}},\n    {{{    46,    133,    -72}, 0, {   952,     20}, {0xb7, 0x66, 0xf0, 0xff}}},\n    {{{   107,    168,   -127}, 0, {   480,   2004}, {0x3b, 0x50, 0xb2, 0xff}}},\n    {{{    49,    108,    -94}, 0, {   -58,    -12}, {0xc4, 0xfd, 0x91, 0xff}}},\n    {{{   107,    168,   -127}, 0, {   526,   2012}, {0x3b, 0x50, 0xb2, 0xff}}},\n    {{{    92,    108,    -62}, 0, {   -64,     -8}, {0x7c, 0xfc, 0x18, 0xff}}},\n    {{{    77,     93,    -88}, 0, {  1038,    -12}, {0x3e, 0xbb, 0xaa, 0xff}}},\n    {{{    26,     96,   -112}, 0, {   -18,     -8}, {0x71, 0x34, 0xeb, 0xff}}},\n    {{{    16,     69,   -126}, 0, {   976,     -8}, {0x46, 0xbf, 0xad, 0xff}}},\n    {{{     0,    124,   -183}, 0, {   434,   2004}, {0xff, 0x38, 0x8f, 0xff}}},\n};\n\n// 0x0603F898\nstatic const Vtx bowser_seg6_vertex_0603F898[] = {\n    {{{    72,    132,    -53}, 0, {    38,     24}, {0x27, 0x64, 0x43, 0xff}}},\n    {{{    92,    108,    -62}, 0, {  1040,      0}, {0x7c, 0xfc, 0x18, 0xff}}},\n    {{{   107,    168,   -127}, 0, {   468,   2016}, {0x3b, 0x50, 0xb2, 0xff}}},\n    {{{   -25,     96,   -112}, 0, {    -4,     12}, {0x8e, 0x32, 0xec, 0xff}}},\n    {{{     0,    113,   -103}, 0, {   968,     20}, {0xff, 0x7d, 0x11, 0xff}}},\n    {{{     0,    124,   -183}, 0, {   504,   2004}, {0xff, 0x38, 0x8f, 0xff}}},\n    {{{     0,    113,   -103}, 0, {   -74,    -12}, {0xff, 0x7d, 0x11, 0xff}}},\n    {{{    26,     96,   -112}, 0, {   916,     -8}, {0x71, 0x34, 0xeb, 0xff}}},\n    {{{     0,    124,   -183}, 0, {   400,   2012}, {0xff, 0x38, 0x8f, 0xff}}},\n    {{{   -15,     69,   -126}, 0, {  -194,      8}, {0xba, 0xbe, 0xae, 0xff}}},\n    {{{   -25,     96,   -112}, 0, {   746,     -8}, {0x8e, 0x32, 0xec, 0xff}}},\n    {{{     0,    124,   -183}, 0, {   388,   2008}, {0xff, 0x38, 0x8f, 0xff}}},\n    {{{   -71,    132,    -53}, 0, {   928,     -4}, {0xd9, 0x64, 0x43, 0xff}}},\n    {{{  -106,    168,   -127}, 0, {   458,   1980}, {0xc5, 0x50, 0xb2, 0xff}}},\n    {{{   -91,    108,    -62}, 0, {    52,      0}, {0x84, 0xfc, 0x18, 0xff}}},\n};\n\n// 0x0603F988\nstatic const Vtx bowser_seg6_vertex_0603F988[] = {\n    {{{    16,     69,   -126}, 0, {     2,     -8}, {0x46, 0xbf, 0xad, 0xff}}},\n    {{{   -15,     69,   -126}, 0, {  1120,      8}, {0xba, 0xbe, 0xae, 0xff}}},\n    {{{     0,    124,   -183}, 0, {   498,   2008}, {0xff, 0x38, 0x8f, 0xff}}},\n    {{{   -48,    108,    -94}, 0, {   950,     -4}, {0x3c, 0xfd, 0x91, 0xff}}},\n    {{{  -106,    168,   -127}, 0, {   382,   1992}, {0xc5, 0x50, 0xb2, 0xff}}},\n    {{{   -45,    133,    -72}, 0, {     6,     -4}, {0x49, 0x66, 0xf0, 0xff}}},\n    {{{  -106,    168,   -127}, 0, {   520,   2028}, {0xc5, 0x50, 0xb2, 0xff}}},\n    {{{   -76,     93,    -88}, 0, {  -156,     12}, {0xc2, 0xbb, 0xaa, 0xff}}},\n    {{{   -91,    108,    -62}, 0, {   932,     24}, {0x84, 0xfc, 0x18, 0xff}}},\n    {{{   -48,    108,    -94}, 0, {   -36,     56}, {0x3c, 0xfd, 0x91, 0xff}}},\n    {{{   -76,     93,    -88}, 0, {   984,      0}, {0xc2, 0xbb, 0xaa, 0xff}}},\n    {{{  -106,    168,   -127}, 0, {   540,   2024}, {0xc5, 0x50, 0xb2, 0xff}}},\n    {{{   -71,    132,    -53}, 0, {    24,    -12}, {0xd9, 0x64, 0x43, 0xff}}},\n    {{{   -45,    133,    -72}, 0, {  1000,    -12}, {0x49, 0x66, 0xf0, 0xff}}},\n    {{{  -106,    168,   -127}, 0, {   464,   1996}, {0xc5, 0x50, 0xb2, 0xff}}},\n};\n\n// 0x0603FA78\nstatic const Vtx bowser_seg6_vertex_0603FA78[] = {\n    {{{    67,    104,    167}, 0, {  1256,    140}, {0x5c, 0x12, 0x55, 0xff}}},\n    {{{    40,     85,    189}, 0, {   348,   -110}, {0x1d, 0x0d, 0x7a, 0xff}}},\n    {{{    49,     58,    158}, 0, {   388,    952}, {0x39, 0xc9, 0x62, 0xff}}},\n    {{{    81,     91,    138}, 0, {  1556,    950}, {0x4e, 0xf9, 0x63, 0xff}}},\n    {{{    82,    124,    131}, 0, {  2140,    574}, {0x5e, 0x40, 0x37, 0xff}}},\n    {{{    49,     58,    158}, 0, {  3948,    972}, {0x39, 0xc9, 0x62, 0xff}}},\n    {{{    40,     85,    189}, 0, {  3544,    -10}, {0x1d, 0x0d, 0x7a, 0xff}}},\n    {{{     0,     51,    166}, 0, {  2008,    982}, {0x00, 0xb4, 0x65, 0xff}}},\n    {{{   -48,     58,    158}, 0, {    68,    942}, {0xc6, 0xca, 0x62, 0xff}}},\n    {{{   -39,     85,    189}, 0, {   324,    -34}, {0xe3, 0x0d, 0x7a, 0xff}}},\n    {{{   -80,     91,    138}, 0, {  1688,    952}, {0xb2, 0xf9, 0x63, 0xff}}},\n    {{{   -66,    104,    167}, 0, {  1344,    156}, {0xa4, 0x12, 0x55, 0xff}}},\n    {{{   -81,    124,    131}, 0, {  2464,    566}, {0xa2, 0x40, 0x37, 0xff}}},\n    {{{   -48,     58,    158}, 0, {   196,    992}, {0xc6, 0xca, 0x62, 0xff}}},\n    {{{   -39,     85,    189}, 0, {   200,    -62}, {0xe3, 0x0d, 0x7a, 0xff}}},\n};\n\n// 0x0603FB68\nstatic const Vtx bowser_seg6_vertex_0603FB68[] = {\n    {{{   129,    -50,    -86}, 0, {     0,      0}, {0x57, 0xc1, 0xbe, 0xff}}},\n    {{{     0,    -48,   -166}, 0, {     0,      0}, {0x00, 0xe5, 0x84, 0xff}}},\n    {{{   111,    -16,    -99}, 0, {     0,      0}, {0x50, 0x16, 0xa1, 0xff}}},\n    {{{     0,    -21,   -146}, 0, {     0,      0}, {0x00, 0x17, 0x84, 0xff}}},\n};\n\n// 0x0603FBA8 - 0x0603FC18\nconst Gfx bowser_seg6_dl_0603FBA8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06023C38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bowser_seg6_lights_06038C38.l, 1),\n    gsSPLight(&bowser_seg6_lights_06038C38.a, 2),\n    gsSPVertex(bowser_seg6_vertex_0603E718, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 7,  8,  4, 0x0,  3,  2,  8, 0x0),\n    gsSP1Triangle( 7,  3,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0603FC18 - 0x0603FD38\nconst Gfx bowser_seg6_dl_0603FC18[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06025C38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_seg6_vertex_0603E7A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(14, 12, 11, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603E8A8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603E988, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603EA68, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 5,  0,  2, 0x0,  5,  4,  0, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0603FD38 - 0x0603FDD0\nconst Gfx bowser_seg6_dl_0603FD38[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06025438),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_seg6_vertex_0603EB48, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 4,  5,  2, 0x0,  2,  1,  4, 0x0),\n    gsSP2Triangles( 2,  6,  7, 0x0,  8,  3,  2, 0x0),\n    gsSP2Triangles( 2,  5,  6, 0x0,  2,  7,  8, 0x0),\n    gsSP2Triangles( 7,  9,  8, 0x0, 10,  3,  8, 0x0),\n    gsSP2Triangles(11,  8,  9, 0x0, 11,  9, 12, 0x0),\n    gsSP2Triangles(10,  8, 11, 0x0, 10, 11, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0603FDD0 - 0x0603FEA8\nconst Gfx bowser_seg6_dl_0603FDD0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06022438),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_seg6_vertex_0603EC18, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  3,  6,  7, 0x0),\n    gsSP2Triangles( 8,  7,  6, 0x0,  9,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0, 11, 10,  9, 0x0),\n    gsSP2Triangles(11, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603ED18, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603EDF8, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0603FEA8 - 0x0603FFA8\nconst Gfx bowser_seg6_dl_0603FEA8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_0601F438),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_seg6_vertex_0603EE58, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 2, 12,  0, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603EF58, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603F038, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603F128, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP1Triangle(10, 11, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0603FFA8 - 0x06040180\nconst Gfx bowser_seg6_dl_0603FFA8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_0602AC38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_seg6_vertex_0603F1F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603F2E8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603F3D8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603F4C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603F5B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603F6A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603F7A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603F898, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bowser_seg6_vertex_0603F988, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06040180 - 0x060401F0\nconst Gfx bowser_seg6_dl_06040180[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06022C38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_seg6_vertex_0603FA78, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 4,  0,  3, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  7,  9, 0x0,  7,  6,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 11, 10, 0x0),\n    gsSP1Triangle(13, 14, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x060401F0 - 0x06040210\nconst Gfx bowser_seg6_dl_060401F0[] = {\n    gsSPVertex(bowser_seg6_vertex_0603FB68, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06040210 - 0x060402D8\nconst Gfx bowser_seg6_dl_06040210[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_seg6_dl_0603FBA8),\n    gsSPDisplayList(bowser_seg6_dl_0603FC18),\n    gsSPDisplayList(bowser_seg6_dl_0603FD38),\n    gsSPDisplayList(bowser_seg6_dl_0603FDD0),\n    gsSPDisplayList(bowser_seg6_dl_0603FEA8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_seg6_dl_0603FFA8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_seg6_dl_06040180),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(bowser_seg6_dl_060401F0),\n    gsSPEndDisplayList(),\n};\n\n#if BUGFIX_BOWSER_FADING_OUT\n// 0x06040358 - 0x06040428\nconst Gfx bowser_seg6_dl_06040358[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPSetRenderMode(G_RM_CUSTOM_AA_ZB_XLU_SURF, G_RM_NOOP2),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_seg6_dl_0603FBA8),\n    gsSPDisplayList(bowser_seg6_dl_0603FC18),\n    gsSPDisplayList(bowser_seg6_dl_0603FD38),\n    gsSPDisplayList(bowser_seg6_dl_0603FDD0),\n    gsSPDisplayList(bowser_seg6_dl_0603FEA8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_seg6_dl_0603FFA8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_seg6_dl_06040180),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(bowser_seg6_dl_060401F0),\n    gsSPEndDisplayList(),\n};\n#endif\n\n// 0x060402D8\nstatic const Vtx bowser_seg6_vertex_060402D8[] = {\n    {{{   -36,    -51,     15}, 0, {    58,   -378}, {0xa6, 0xf9, 0x58, 0xff}}},\n    {{{   -19,    -43,     45}, 0, {  -690,   -202}, {0x92, 0xef, 0x3b, 0xff}}},\n    {{{   -40,      7,     39}, 0, {  -566,    990}, {0x96, 0x22, 0x3c, 0xff}}},\n    {{{    26,      4,     87}, 0, {   414,    -46}, {0xb7, 0x11, 0x65, 0xff}}},\n    {{{    62,     32,     94}, 0, {  -414,    796}, {0x24, 0x63, 0x46, 0xff}}},\n    {{{   -40,      7,     39}, 0, {  2638,    304}, {0x96, 0x22, 0x3c, 0xff}}},\n    {{{   157,    -55,    -19}, 0, {  -186,    770}, {0x54, 0xa4, 0xeb, 0xff}}},\n    {{{   157,    -55,     20}, 0, {  1026,    616}, {0x67, 0xbb, 0x16, 0xff}}},\n    {{{   150,    -73,      0}, 0, {   388,    122}, {0x78, 0xd7, 0x00, 0xff}}},\n    {{{    56,   -125,     36}, 0, {  1342,    228}, {0xea, 0x95, 0x3f, 0xff}}},\n    {{{   135,   -116,     30}, 0, {  -520,    234}, {0x40, 0x9b, 0x28, 0xff}}},\n    {{{    71,   -107,     61}, 0, {   992,    860}, {0xfe, 0xba, 0x69, 0xff}}},\n    {{{   -36,    -51,    -14}, 0, {   804,   -382}, {0x9d, 0xf8, 0xb2, 0xff}}},\n    {{{    56,   -125,    -35}, 0, {   728,    -68}, {0xea, 0x95, 0xc1, 0xff}}},\n    {{{    71,   -107,    -60}, 0, {   272,    742}, {0xfe, 0xba, 0x97, 0xff}}},\n    {{{   135,   -116,    -29}, 0, { -1926,   -108}, {0x40, 0x9b, 0xd8, 0xff}}},\n};\n\n// 0x060403D8\nstatic const Vtx bowser_seg6_vertex_060403D8[] = {\n    {{{   -40,      7,     39}, 0, {  -566,    990}, {0x96, 0x22, 0x3c, 0xff}}},\n    {{{   -40,      7,    -44}, 0, {  1518,    984}, {0xa0, 0x24, 0xb7, 0xff}}},\n    {{{   -36,    -51,    -14}, 0, {   804,   -382}, {0x9d, 0xf8, 0xb2, 0xff}}},\n    {{{   -19,    -43,    -44}, 0, {  1548,   -208}, {0x93, 0xeb, 0xc5, 0xff}}},\n    {{{    12,    -28,    -72}, 0, {  2238,     88}, {0xc0, 0x01, 0x93, 0xff}}},\n    {{{    56,   -125,     36}, 0, {  1264,   -504}, {0xea, 0x95, 0x3f, 0xff}}},\n    {{{    56,   -132,      0}, 0, {   588,   -514}, {0x09, 0x82, 0x00, 0xff}}},\n    {{{   135,   -116,     30}, 0, {  1068,    970}, {0x40, 0x9b, 0x28, 0xff}}},\n    {{{    56,   -125,    -35}, 0, {   -88,   -472}, {0xea, 0x95, 0xc1, 0xff}}},\n    {{{   135,   -116,    -29}, 0, {   -62,    996}, {0x40, 0x9b, 0xd8, 0xff}}},\n    {{{   137,   -119,      0}, 0, {   500,   1008}, {0x54, 0xa2, 0x00, 0xff}}},\n    {{{    56,   -125,    -35}, 0, {   728,    -68}, {0xea, 0x95, 0xc1, 0xff}}},\n    {{{    39,    -99,    -51}, 0, {  1272,    664}, {0xfa, 0x9e, 0xb0, 0xff}}},\n    {{{    71,   -107,    -60}, 0, {   272,    742}, {0xfe, 0xba, 0x97, 0xff}}},\n};\n\n// 0x060404B8\nstatic const Vtx bowser_seg6_vertex_060404B8[] = {\n    {{{    10,    -97,     45}, 0, {  -586,    996}, {0xc6, 0xac, 0x4a, 0xff}}},\n    {{{    56,   -132,      0}, 0, {   500,   -326}, {0x09, 0x82, 0x00, 0xff}}},\n    {{{    56,   -125,     36}, 0, {  -290,   -258}, {0xea, 0x95, 0x3f, 0xff}}},\n    {{{    10,    -97,    -44}, 0, {  1348,   1070}, {0xc6, 0xac, 0xb6, 0xff}}},\n    {{{    56,   -125,    -35}, 0, {  1274,   -198}, {0xea, 0x95, 0xc1, 0xff}}},\n    {{{    10,    -97,    -44}, 0, {   192,   1126}, {0xc6, 0xac, 0xb6, 0xff}}},\n    {{{    39,    -99,    -51}, 0, {   822,    640}, {0xfa, 0x9e, 0xb0, 0xff}}},\n    {{{    56,   -125,    -35}, 0, {   800,   -274}, {0xea, 0x95, 0xc1, 0xff}}},\n    {{{   150,    -73,      0}, 0, {   492,    886}, {0x78, 0xd7, 0x00, 0xff}}},\n    {{{   137,   -119,      0}, 0, {   514,    -20}, {0x54, 0xa2, 0x00, 0xff}}},\n    {{{   135,   -116,    -29}, 0, {   -44,     22}, {0x40, 0x9b, 0xd8, 0xff}}},\n    {{{   135,   -116,     30}, 0, {  1074,     38}, {0x40, 0x9b, 0x28, 0xff}}},\n    {{{    71,   -107,     61}, 0, {   770,    -12}, {0xfe, 0xba, 0x69, 0xff}}},\n    {{{    79,    -67,     69}, 0, {   584,    932}, {0x00, 0xc4, 0x6f, 0xff}}},\n    {{{    49,    -58,     77}, 0, {  1338,   1218}, {0x1c, 0xce, 0x71, 0xff}}},\n    {{{    39,    -99,     52}, 0, {  1566,    166}, {0xfa, 0x9e, 0x50, 0xff}}},\n};\n\n// 0x060405B8\nstatic const Vtx bowser_seg6_vertex_060405B8[] = {\n    {{{    63,     45,      0}, 0, {   478,   -512}, {0x1e, 0x7b, 0x00, 0xff}}},\n    {{{    62,     32,    -93}, 0, {  2542,   -382}, {0x25, 0x61, 0xb9, 0xff}}},\n    {{{   -40,      7,    -44}, 0, {  1430,   2406}, {0xa0, 0x24, 0xb7, 0xff}}},\n    {{{   -40,      7,     39}, 0, {  -414,   2412}, {0x96, 0x22, 0x3c, 0xff}}},\n    {{{    62,     32,     94}, 0, { -1586,   -370}, {0x24, 0x63, 0x46, 0xff}}},\n    {{{    10,    -97,     45}, 0, {   -12,   -548}, {0xc6, 0xac, 0x4a, 0xff}}},\n    {{{   -19,    -43,     45}, 0, {   -14,   1000}, {0x92, 0xef, 0x3b, 0xff}}},\n    {{{   -36,    -51,     15}, 0, {  1216,   1022}, {0xa6, 0xf9, 0x58, 0xff}}},\n    {{{    10,    -97,     45}, 0, {  1618,   1004}, {0xc6, 0xac, 0x4a, 0xff}}},\n    {{{    56,   -125,     36}, 0, {   726,   -172}, {0xea, 0x95, 0x3f, 0xff}}},\n    {{{    39,    -99,     52}, 0, {   900,    806}, {0xfa, 0x9e, 0x50, 0xff}}},\n    {{{    39,    -99,    -51}, 0, {  -738,    482}, {0xfa, 0x9e, 0xb0, 0xff}}},\n    {{{    49,    -58,    -76}, 0, {   -52,   1388}, {0x1c, 0xce, 0x8f, 0xff}}},\n    {{{    71,   -107,    -60}, 0, {   -14,     86}, {0xfe, 0xba, 0x97, 0xff}}},\n    {{{    71,   -107,     61}, 0, {    82,    472}, {0xfe, 0xba, 0x69, 0xff}}},\n};\n\n// 0x060406A8\nstatic const Vtx bowser_seg6_vertex_060406A8[] = {\n    {{{   -36,    -51,    -14}, 0, {  -184,   1010}, {0x9d, 0xf8, 0xb2, 0xff}}},\n    {{{   -19,    -43,    -44}, 0, {   896,    874}, {0x93, 0xeb, 0xc5, 0xff}}},\n    {{{    10,    -97,    -44}, 0, {   958,   -660}, {0xc6, 0xac, 0xb6, 0xff}}},\n    {{{   102,    -67,     73}, 0, {    -2,    948}, {0x08, 0xc2, 0x6e, 0xff}}},\n    {{{    79,    -67,     69}, 0, {   584,    932}, {0x00, 0xc4, 0x6f, 0xff}}},\n    {{{   123,    -90,     62}, 0, {  -536,    328}, {0x29, 0xbd, 0x63, 0xff}}},\n    {{{    49,    -58,    -76}, 0, {   -52,   1388}, {0x1c, 0xce, 0x8f, 0xff}}},\n    {{{    79,    -67,    -68}, 0, {   582,    902}, {0x00, 0xc4, 0x91, 0xff}}},\n    {{{    71,   -107,    -60}, 0, {   -14,     86}, {0xfe, 0xba, 0x97, 0xff}}},\n    {{{   -40,      7,     39}, 0, {  1442,    942}, {0x96, 0x22, 0x3c, 0xff}}},\n    {{{   -19,    -43,     45}, 0, {  1006,   -334}, {0x92, 0xef, 0x3b, 0xff}}},\n    {{{    12,    -28,     73}, 0, {  -106,      6}, {0xbe, 0x04, 0x6b, 0xff}}},\n    {{{    26,      4,     87}, 0, {  -646,    794}, {0xb7, 0x11, 0x65, 0xff}}},\n    {{{   -40,      7,    -44}, 0, {    -2,    932}, {0xa0, 0x24, 0xb7, 0xff}}},\n    {{{    26,      4,    -86}, 0, {  1490,    400}, {0xb9, 0x0e, 0x99, 0xff}}},\n    {{{    12,    -28,    -72}, 0, {   922,   -146}, {0xc0, 0x01, 0x93, 0xff}}},\n};\n\n// 0x060407A8\nstatic const Vtx bowser_seg6_vertex_060407A8[] = {\n    {{{   -40,      7,    -44}, 0, {  -952,    762}, {0xa0, 0x24, 0xb7, 0xff}}},\n    {{{    62,     32,    -93}, 0, {  1902,    694}, {0x25, 0x61, 0xb9, 0xff}}},\n    {{{    26,      4,    -86}, 0, {   916,    272}, {0xb9, 0x0e, 0x99, 0xff}}},\n};\n\n// 0x060407D8\nstatic const Vtx bowser_seg6_vertex_060407D8[] = {\n    {{{   154,      6,     90}, 0, {  1150,    -66}, {0x0b, 0x42, 0x6b, 0xff}}},\n    {{{   151,    -43,     67}, 0, {  1214,  -1116}, {0x20, 0xbf, 0x67, 0xff}}},\n    {{{   198,    -43,     64}, 0, {     0,  -1182}, {0x3e, 0xc5, 0x5d, 0xff}}},\n    {{{    62,     32,    -93}, 0, {   -48,    928}, {0x25, 0x61, 0xb9, 0xff}}},\n    {{{    76,     14,      0}, 0, {  2026,    760}, {0x64, 0x4d, 0x00, 0xff}}},\n    {{{    83,      2,    -86}, 0, {    72,    710}, {0x62, 0x34, 0xc4, 0xff}}},\n    {{{    63,     45,      0}, 0, {  2068,    964}, {0x1e, 0x7b, 0x00, 0xff}}},\n    {{{    62,     32,     94}, 0, {  4140,    854}, {0x24, 0x63, 0x46, 0xff}}},\n    {{{    98,    -10,    -72}, 0, {   388,    598}, {0x0b, 0x79, 0xdd, 0xff}}},\n    {{{    83,      2,     87}, 0, {  3948,    642}, {0x62, 0x34, 0x3c, 0xff}}},\n    {{{    98,    -10,     73}, 0, {  3612,    544}, {0x0b, 0x79, 0x23, 0xff}}},\n    {{{    94,    -30,     91}, 0, {  2700,   -896}, {0x34, 0xf9, 0x73, 0xff}}},\n    {{{   194,     27,     35}, 0, {   -18,    960}, {0x42, 0x68, 0x1d, 0xff}}},\n    {{{   170,     27,     44}, 0, {   612,    924}, {0x15, 0x6d, 0x3c, 0xff}}},\n};\n\n// 0x060408B8\nstatic const Vtx bowser_seg6_vertex_060408B8[] = {\n    {{{   151,    -43,    -66}, 0, {   714,   -182}, {0x20, 0xbf, 0x99, 0xff}}},\n    {{{   114,    -47,    -72}, 0, {  -112,    142}, {0x16, 0xef, 0x85, 0xff}}},\n    {{{    94,    -30,    -90}, 0, {  -386,    792}, {0x34, 0xf9, 0x8d, 0xff}}},\n    {{{    94,    -30,     91}, 0, {  2700,   -896}, {0x34, 0xf9, 0x73, 0xff}}},\n    {{{   114,    -47,     73}, 0, {  2184,  -1210}, {0x16, 0xef, 0x7b, 0xff}}},\n    {{{   151,    -43,     67}, 0, {  1214,  -1116}, {0x20, 0xbf, 0x67, 0xff}}},\n    {{{    62,      0,   -113}, 0, {   736,   1006}, {0x12, 0x1f, 0x87, 0xff}}},\n    {{{    63,    -31,   -110}, 0, {   548,    328}, {0x00, 0xdc, 0x87, 0xff}}},\n    {{{    26,      4,    -86}, 0, {   -82,   1186}, {0xb9, 0x0e, 0x99, 0xff}}},\n    {{{    62,     32,    -93}, 0, {   886,   1590}, {0x25, 0x61, 0xb9, 0xff}}},\n    {{{    12,    -28,    -72}, 0, {  -612,    530}, {0xc0, 0x01, 0x93, 0xff}}},\n    {{{   198,    -43,    -63}, 0, {  1788,   -624}, {0x3e, 0xc5, 0xa3, 0xff}}},\n    {{{   154,      6,    -89}, 0, {  1086,    900}, {0x0b, 0x42, 0x95, 0xff}}},\n    {{{   226,    -26,    -24}, 0, {   430,   -686}, {0x7b, 0x0c, 0xe8, 0xff}}},\n    {{{   198,    -43,    -63}, 0, {  -716,   -672}, {0x3e, 0xc5, 0xa3, 0xff}}},\n    {{{   201,     -2,    -61}, 0, {  -652,    312}, {0x5b, 0x25, 0xb1, 0xff}}},\n};\n\n// 0x060409B8\nstatic const Vtx bowser_seg6_vertex_060409B8[] = {\n    {{{   170,     27,    -43}, 0, {  -102,   1494}, {0x15, 0x6d, 0xc4, 0xff}}},\n    {{{   194,     27,    -34}, 0, {   168,   1126}, {0x42, 0x68, 0xe3, 0xff}}},\n    {{{   154,      6,    -89}, 0, { -1448,   1234}, {0x0b, 0x42, 0x95, 0xff}}},\n    {{{   199,     13,      0}, 0, {  1184,    690}, {0x36, 0x72, 0x00, 0xff}}},\n    {{{   226,    -26,    -24}, 0, {   430,   -686}, {0x7b, 0x0c, 0xe8, 0xff}}},\n    {{{   201,     -2,    -61}, 0, {  -652,    312}, {0x5b, 0x25, 0xb1, 0xff}}},\n    {{{   170,     33,    -25}, 0, {   434,   1636}, {0x17, 0x74, 0x2d, 0xff}}},\n    {{{   226,    -26,     25}, 0, {  1882,   -720}, {0x79, 0x15, 0x1d, 0xff}}},\n    {{{   194,     27,     35}, 0, {  2216,   1076}, {0x42, 0x68, 0x1d, 0xff}}},\n    {{{   146,     12,    -16}, 0, {   686,   1456}, {0xc3, 0x67, 0x29, 0xff}}},\n    {{{   170,     33,     26}, 0, {  1970,   1600}, {0x17, 0x74, 0xd4, 0xff}}},\n    {{{   146,     12,     17}, 0, {  1710,   1432}, {0xc3, 0x67, 0xd7, 0xff}}},\n    {{{   154,      6,    -89}, 0, {     0,   -488}, {0x0b, 0x42, 0x95, 0xff}}},\n    {{{   146,     18,    -53}, 0, {   826,   -458}, {0xc0, 0x61, 0xce, 0xff}}},\n    {{{   170,     27,    -43}, 0, {  1050,   -996}, {0x15, 0x6d, 0xc4, 0xff}}},\n};\n\n// 0x06040AA8\nstatic const Vtx bowser_seg6_vertex_06040AA8[] = {\n    {{{   154,      6,    -89}, 0, {     0,   -488}, {0x0b, 0x42, 0x95, 0xff}}},\n    {{{    94,    -30,    -90}, 0, {   -46,   1012}, {0x34, 0xf9, 0x8d, 0xff}}},\n    {{{    98,    -10,    -72}, 0, {   378,    734}, {0x0b, 0x79, 0xdd, 0xff}}},\n    {{{   146,     18,    -53}, 0, {   826,   -458}, {0xc0, 0x61, 0xce, 0xff}}},\n    {{{   201,     -2,     62}, 0, {  3004,    226}, {0x5b, 0x25, 0x4f, 0xff}}},\n    {{{   194,     27,     35}, 0, {  2216,   1076}, {0x42, 0x68, 0x1d, 0xff}}},\n    {{{   154,      6,     90}, 0, {  3836,   1108}, {0x0b, 0x42, 0x6b, 0xff}}},\n    {{{   226,    -26,     25}, 0, {  1882,   -720}, {0x79, 0x15, 0x1d, 0xff}}},\n    {{{   198,    -43,     64}, 0, {  3028,   -760}, {0x3e, 0xc5, 0x5d, 0xff}}},\n    {{{   151,    -43,    -66}, 0, {   -16,     52}, {0x20, 0xbf, 0x99, 0xff}}},\n    {{{   198,    -43,    -63}, 0, {     0,    990}, {0x3e, 0xc5, 0xa3, 0xff}}},\n    {{{   183,    -75,    -16}, 0, {   850,    672}, {0xff, 0x85, 0xe4, 0xff}}},\n    {{{   157,    -55,    -19}, 0, {   826,    164}, {0x54, 0xa4, 0xeb, 0xff}}},\n    {{{    63,    -31,   -110}, 0, {   548,    328}, {0x00, 0xdc, 0x87, 0xff}}},\n    {{{    49,    -58,    -76}, 0, {    28,   -286}, {0x1c, 0xce, 0x8f, 0xff}}},\n    {{{    12,    -28,    -72}, 0, {  -612,    530}, {0xc0, 0x01, 0x93, 0xff}}},\n};\n\n// 0x06040BA8\nstatic const Vtx bowser_seg6_vertex_06040BA8[] = {\n    {{{   215,    -61,    -21}, 0, {   700,   1310}, {0x58, 0xac, 0xdf, 0xff}}},\n    {{{   183,    -75,    -16}, 0, {   850,    672}, {0xff, 0x85, 0xe4, 0xff}}},\n    {{{   198,    -43,    -63}, 0, {     0,    990}, {0x3e, 0xc5, 0xa3, 0xff}}},\n    {{{   215,    -61,     22}, 0, {  1522,   1292}, {0x5b, 0xab, 0x16, 0xff}}},\n    {{{   183,    -75,     17}, 0, {  1470,    658}, {0xe6, 0x88, 0x1c, 0xff}}},\n    {{{   157,    -55,    -19}, 0, {   826,    164}, {0x54, 0xa4, 0xeb, 0xff}}},\n    {{{   157,    -55,     20}, 0, {  1570,    148}, {0x67, 0xbb, 0x16, 0xff}}},\n    {{{   198,    -43,     64}, 0, {  2306,    938}, {0x3e, 0xc5, 0x5d, 0xff}}},\n    {{{   151,    -43,     67}, 0, {  2432,     -2}, {0x20, 0xbf, 0x67, 0xff}}},\n    {{{    79,    -67,    -68}, 0, {   622,   -692}, {0x00, 0xc4, 0x91, 0xff}}},\n    {{{    49,    -58,    -76}, 0, {    28,   -286}, {0x1c, 0xce, 0x8f, 0xff}}},\n    {{{   102,    -67,    -72}, 0, {  1162,   -792}, {0x08, 0xc2, 0x92, 0xff}}},\n    {{{    63,    -31,   -110}, 0, {   548,    328}, {0x00, 0xdc, 0x87, 0xff}}},\n    {{{    94,    -30,     91}, 0, {  -256,   -102}, {0x34, 0xf9, 0x73, 0xff}}},\n    {{{    83,      2,     87}, 0, {  -102,    728}, {0x62, 0x34, 0x3c, 0xff}}},\n    {{{    63,    -31,    111}, 0, {   490,    -88}, {0x00, 0xdc, 0x79, 0xff}}},\n};\n\n// 0x06040CA8\nstatic const Vtx bowser_seg6_vertex_06040CA8[] = {\n    {{{    94,    -30,    -90}, 0, {  1234,     98}, {0x34, 0xf9, 0x8d, 0xff}}},\n    {{{   114,    -47,    -72}, 0, {  1524,   -452}, {0x16, 0xef, 0x85, 0xff}}},\n    {{{   102,    -67,    -72}, 0, {  1162,   -792}, {0x08, 0xc2, 0x92, 0xff}}},\n    {{{    63,    -31,   -110}, 0, {   548,    328}, {0x00, 0xdc, 0x87, 0xff}}},\n    {{{   102,    -67,     73}, 0, {  -382,    -18}, {0x08, 0xc2, 0x6e, 0xff}}},\n    {{{    49,    -58,     77}, 0, {   802,    130}, {0x1c, 0xce, 0x71, 0xff}}},\n    {{{    79,    -67,     69}, 0, {   116,    -10}, {0x00, 0xc4, 0x6f, 0xff}}},\n    {{{    83,      2,     87}, 0, {  -102,    728}, {0x62, 0x34, 0x3c, 0xff}}},\n    {{{    94,    -30,     91}, 0, {  -256,   -102}, {0x34, 0xf9, 0x73, 0xff}}},\n    {{{    98,    -10,     73}, 0, {  -412,    392}, {0x0b, 0x79, 0x23, 0xff}}},\n    {{{   102,    -67,     73}, 0, {  -310,  -1040}, {0x08, 0xc2, 0x6e, 0xff}}},\n    {{{   114,    -47,     73}, 0, {  -636,   -578}, {0x16, 0xef, 0x7b, 0xff}}},\n    {{{    63,    -31,    111}, 0, {   490,    -88}, {0x00, 0xdc, 0x79, 0xff}}},\n    {{{    98,    -10,     73}, 0, {  3836,    776}, {0x0b, 0x79, 0x23, 0xff}}},\n    {{{    94,    -30,     91}, 0, {  4264,   1066}, {0x34, 0xf9, 0x73, 0xff}}},\n    {{{   154,      6,     90}, 0, {  4240,   -434}, {0x0b, 0x42, 0x6b, 0xff}}},\n};\n\n// 0x06040DA8\nstatic const Vtx bowser_seg6_vertex_06040DA8[] = {\n    {{{    26,      4,     87}, 0, {  1196,    900}, {0xb7, 0x11, 0x65, 0xff}}},\n    {{{    63,    -31,    111}, 0, {   490,    -88}, {0x00, 0xdc, 0x79, 0xff}}},\n    {{{    62,      0,    114}, 0, {   382,    712}, {0x12, 0x1f, 0x79, 0xff}}},\n    {{{    83,      2,     87}, 0, {  -102,    728}, {0x62, 0x34, 0x3c, 0xff}}},\n    {{{    12,    -28,     73}, 0, {  1636,    114}, {0xbe, 0x04, 0x6b, 0xff}}},\n    {{{    49,    -58,     77}, 0, {   898,   -712}, {0x1c, 0xce, 0x71, 0xff}}},\n    {{{   102,    -67,     73}, 0, {  -310,  -1040}, {0x08, 0xc2, 0x6e, 0xff}}},\n    {{{    83,      2,    -86}, 0, {  1160,    822}, {0x62, 0x34, 0xc4, 0xff}}},\n    {{{    94,    -30,    -90}, 0, {  1234,     98}, {0x34, 0xf9, 0x8d, 0xff}}},\n    {{{    63,    -31,   -110}, 0, {   548,    328}, {0x00, 0xdc, 0x87, 0xff}}},\n    {{{    98,    -10,    -72}, 0, {  1400,    416}, {0x0b, 0x79, 0xdd, 0xff}}},\n    {{{   146,     18,     54}, 0, {  3382,   -426}, {0xc0, 0x61, 0x32, 0xff}}},\n    {{{    98,    -10,     73}, 0, {  3836,    776}, {0x0b, 0x79, 0x23, 0xff}}},\n    {{{   154,      6,     90}, 0, {  4240,   -434}, {0x0b, 0x42, 0x6b, 0xff}}},\n    {{{   170,     27,     44}, 0, {  3156,   -970}, {0x15, 0x6d, 0x3c, 0xff}}},\n    {{{    62,     32,     94}, 0, {   270,   1514}, {0x24, 0x63, 0x46, 0xff}}},\n};\n\n// 0x06040EA8\nstatic const Vtx bowser_seg6_vertex_06040EA8[] = {\n    {{{    62,     32,    -93}, 0, {   616,   1358}, {0x25, 0x61, 0xb9, 0xff}}},\n    {{{    83,      2,    -86}, 0, {  1006,    410}, {0x62, 0x34, 0xc4, 0xff}}},\n    {{{    62,      0,   -113}, 0, {    96,    522}, {0x12, 0x1f, 0x87, 0xff}}},\n    {{{    63,    -31,   -110}, 0, {    54,   -430}, {0x00, 0xdc, 0x87, 0xff}}},\n    {{{   199,     13,      0}, 0, {  2100,  -1358}, {0x36, 0x72, 0x00, 0xff}}},\n    {{{   146,     12,    -16}, 0, {  1690,   -380}, {0xc3, 0x67, 0x29, 0xff}}},\n    {{{   146,     12,     17}, 0, {  2518,   -370}, {0xc3, 0x67, 0xd7, 0xff}}},\n    {{{   170,     33,    -25}, 0, {    86,   1044}, {0x17, 0x74, 0x2d, 0xff}}},\n    {{{   194,     27,    -34}, 0, {     0,    798}, {0x42, 0x68, 0xe3, 0xff}}},\n    {{{   170,     27,    -43}, 0, {  -168,   1046}, {0x15, 0x6d, 0xc4, 0xff}}},\n    {{{   170,     27,     44}, 0, {  1072,   1038}, {0x15, 0x6d, 0x3c, 0xff}}},\n    {{{   194,     27,     35}, 0, {   944,    792}, {0x42, 0x68, 0x1d, 0xff}}},\n    {{{   170,     33,     26}, 0, {   818,   1038}, {0x17, 0x74, 0xd4, 0xff}}},\n    {{{   154,      6,     90}, 0, {  1626,    754}, {0x0b, 0x42, 0x6b, 0xff}}},\n    {{{   198,    -43,     64}, 0, {   222,   -854}, {0x3e, 0xc5, 0x5d, 0xff}}},\n    {{{   201,     -2,     62}, 0, {   -76,    244}, {0x5b, 0x25, 0x4f, 0xff}}},\n};\n\n// 0x06040FA8\nstatic const Vtx bowser_seg6_vertex_06040FA8[] = {\n    {{{   201,     -2,    -61}, 0, {  1502,    342}, {0x5b, 0x25, 0xb1, 0xff}}},\n    {{{   198,    -43,    -63}, 0, {  1302,   -672}, {0x3e, 0xc5, 0xa3, 0xff}}},\n    {{{   154,      6,    -89}, 0, {   100,    724}, {0x0b, 0x42, 0x95, 0xff}}},\n};\n\n// 0x06040FD8\nstatic const Vtx bowser_seg6_vertex_06040FD8[] = {\n    {{{   146,     12,    -16}, 0, {   348,   1572}, {0xc3, 0x67, 0x29, 0xff}}},\n    {{{   146,     18,    -53}, 0, {   126,   1636}, {0xc0, 0x61, 0xce, 0xff}}},\n    {{{    98,    -10,    -72}, 0, {    20,    612}, {0x0b, 0x79, 0xdd, 0xff}}},\n    {{{   146,     12,     17}, 0, {   562,   1556}, {0xc3, 0x67, 0xd7, 0xff}}},\n    {{{    98,    -10,      0}, 0, {   464,    576}, {0x06, 0x7e, 0x00, 0xff}}},\n    {{{    98,    -10,     73}, 0, {   910,    544}, {0x0b, 0x79, 0x23, 0xff}}},\n    {{{   146,     18,     54}, 0, {   784,   1584}, {0xc0, 0x61, 0x32, 0xff}}},\n    {{{    98,    -10,      0}, 0, {   446,    776}, {0x06, 0x7e, 0x00, 0xff}}},\n    {{{    98,    -10,    -72}, 0, {    16,    820}, {0x0b, 0x79, 0xdd, 0xff}}},\n    {{{    76,     14,      0}, 0, {   456,   1804}, {0x64, 0x4d, 0x00, 0xff}}},\n    {{{    98,    -10,     73}, 0, {   878,    728}, {0x0b, 0x79, 0x23, 0xff}}},\n};\n\n// 0x06041088\nstatic const Vtx bowser_seg6_vertex_06041088[] = {\n    {{{   -36,    -51,     15}, 0, {   -54,   1716}, {0xa6, 0xf9, 0x58, 0xff}}},\n    {{{   -95,    -69,      0}, 0, {   -44,    752}, {0xa3, 0x56, 0x00, 0xff}}},\n    {{{   -64,   -103,      0}, 0, {   580,    640}, {0xaf, 0x9f, 0xff, 0xff}}},\n    {{{   -51,   -159,      0}, 0, {   736,    392}, {0x87, 0xdb, 0xff, 0xff}}},\n    {{{    10,    -97,    -44}, 0, {   496,   1764}, {0xc6, 0xac, 0xb6, 0xff}}},\n    {{{    -8,   -167,      0}, 0, {   976,    744}, {0x03, 0x82, 0x00, 0xff}}},\n    {{{   -37,   -120,      0}, 0, {   478,    988}, {0x82, 0xf9, 0x00, 0xff}}},\n    {{{    33,   -158,      0}, 0, {  1074,   1296}, {0x41, 0x94, 0x00, 0xff}}},\n    {{{    56,   -132,      0}, 0, {   962,   1832}, {0x09, 0x82, 0x00, 0xff}}},\n    {{{   -36,    -51,    -14}, 0, {   -58,   1796}, {0x9d, 0xf8, 0xb2, 0xff}}},\n    {{{   -37,   -120,      0}, 0, {   942,    712}, {0x82, 0xf9, 0x00, 0xff}}},\n    {{{   -51,   -159,      0}, 0, {  1462,    -16}, {0x87, 0xdb, 0xff, 0xff}}},\n    {{{    10,    -97,     45}, 0, {   804,   1636}, {0xc6, 0xac, 0x4a, 0xff}}},\n    {{{   -36,    -51,    -14}, 0, {   818,   1844}, {0x9d, 0xf8, 0xb2, 0xff}}},\n    {{{   -95,    -69,      0}, 0, {   276,    908}, {0xa3, 0x56, 0x00, 0xff}}},\n    {{{   -36,    -51,     15}, 0, {   188,   1864}, {0xa6, 0xf9, 0x58, 0xff}}},\n};\n\n// 0x06041188\nstatic const Vtx bowser_seg6_vertex_06041188[] = {\n    {{{    10,    -97,     45}, 0, {   804,   1636}, {0xc6, 0xac, 0x4a, 0xff}}},\n    {{{   -51,   -159,      0}, 0, {  1462,    -16}, {0x87, 0xdb, 0xff, 0xff}}},\n    {{{    -8,   -167,      0}, 0, {  1756,    380}, {0x03, 0x82, 0x00, 0xff}}},\n    {{{    33,   -158,      0}, 0, {  1794,   1028}, {0x41, 0x94, 0x00, 0xff}}},\n    {{{    56,   -132,      0}, 0, {  1510,   1672}, {0x09, 0x82, 0x00, 0xff}}},\n    {{{   -37,   -120,      0}, 0, {   478,    988}, {0x82, 0xf9, 0x00, 0xff}}},\n    {{{   -64,   -103,      0}, 0, {   234,    912}, {0xaf, 0x9f, 0xff, 0xff}}},\n    {{{   -36,    -51,    -14}, 0, {   -58,   1796}, {0x9d, 0xf8, 0xb2, 0xff}}},\n    {{{   -95,    -69,      0}, 0, {  -162,    976}, {0xa3, 0x56, 0x00, 0xff}}},\n};\n\n// 0x06041218\nstatic const Vtx bowser_seg6_vertex_06041218[] = {\n    {{{     8,    -89,    106}, 0, {   912,   1024}, {0xe7, 0xe1, 0x78, 0xff}}},\n    {{{   -14,   -133,     74}, 0, {   380,   2016}, {0xdb, 0x87, 0xfe, 0xff}}},\n    {{{    21,   -103,     77}, 0, {   176,   1272}, {0x3b, 0x92, 0x14, 0xff}}},\n    {{{    21,   -103,     77}, 0, {   974,   1168}, {0x3b, 0x92, 0x14, 0xff}}},\n    {{{   -14,   -133,     74}, 0, {   512,   2000}, {0xdb, 0x87, 0xfe, 0xff}}},\n    {{{    -8,    -83,     69}, 0, {   146,    928}, {0x86, 0xdf, 0x00, 0xff}}},\n    {{{   -19,    -43,     45}, 0, {  1004,    -40}, {0x92, 0xef, 0x3b, 0xff}}},\n    {{{    -8,    -83,     69}, 0, {   976,   1256}, {0x86, 0xdf, 0x00, 0xff}}},\n    {{{     9,    -57,     98}, 0, {    48,   1108}, {0xd5, 0x38, 0x68, 0xff}}},\n    {{{    12,    -28,     73}, 0, {   -52,    -20}, {0xbe, 0x04, 0x6b, 0xff}}},\n    {{{     9,    -57,    -97}, 0, {   840,    896}, {0xd5, 0x38, 0x98, 0xff}}},\n    {{{     8,    -89,   -105}, 0, {  1072,   1340}, {0xe7, 0xe1, 0x88, 0xff}}},\n    {{{    -8,    -83,    -68}, 0, {   -60,   1092}, {0x86, 0xdf, 0x00, 0xff}}},\n    {{{   -14,   -133,    -73}, 0, {    84,   1768}, {0xdb, 0x87, 0x02, 0xff}}},\n    {{{    30,    -74,    100}, 0, {   646,    660}, {0x4a, 0xf4, 0x66, 0xff}}},\n};\n\n// 0x06041308\nstatic const Vtx bowser_seg6_vertex_06041308[] = {\n    {{{    10,    -97,     45}, 0, {   612,    -36}, {0xc6, 0xac, 0x4a, 0xff}}},\n    {{{    21,   -103,     77}, 0, {  1000,   1276}, {0x3b, 0x92, 0x14, 0xff}}},\n    {{{    -8,    -83,     69}, 0, {    96,   1060}, {0x86, 0xdf, 0x00, 0xff}}},\n    {{{    21,   -103,    -76}, 0, {   934,    880}, {0x3b, 0x92, 0xec, 0xff}}},\n    {{{     8,    -89,   -105}, 0, {   168,   1344}, {0xe7, 0xe1, 0x88, 0xff}}},\n    {{{    30,    -74,    -99}, 0, {   292,    612}, {0x4a, 0xf4, 0x9a, 0xff}}},\n    {{{   -14,   -133,    -73}, 0, {   996,   2028}, {0xdb, 0x87, 0x02, 0xff}}},\n    {{{    -8,    -83,    -68}, 0, {   796,   1460}, {0x86, 0xdf, 0x00, 0xff}}},\n    {{{    21,   -103,    -76}, 0, {   262,   1560}, {0x3b, 0x92, 0xec, 0xff}}},\n    {{{    10,    -97,    -44}, 0, {   640,     80}, {0xc6, 0xac, 0xb6, 0xff}}},\n    {{{    39,    -99,    -51}, 0, {   166,      8}, {0xfa, 0x9e, 0xb0, 0xff}}},\n    {{{   -19,    -43,    -44}, 0, {  1182,     52}, {0x93, 0xeb, 0xc5, 0xff}}},\n    {{{   -19,    -43,     45}, 0, {  -730,    164}, {0x92, 0xef, 0x3b, 0xff}}},\n    {{{    39,    -99,     52}, 0, {  1230,    212}, {0xfa, 0x9e, 0x50, 0xff}}},\n};\n\n// 0x060413E8\nstatic const Vtx bowser_seg6_vertex_060413E8[] = {\n    {{{    49,    -58,     77}, 0, {  1006,    -40}, {0x1c, 0xce, 0x71, 0xff}}},\n    {{{    21,   -103,     77}, 0, {   120,    808}, {0x3b, 0x92, 0x14, 0xff}}},\n    {{{    39,    -99,     52}, 0, {   -10,    -24}, {0xfa, 0x9e, 0x50, 0xff}}},\n    {{{    30,    -74,    100}, 0, {   910,    908}, {0x4a, 0xf4, 0x66, 0xff}}},\n    {{{    -8,    -83,     69}, 0, {   956,   1236}, {0x86, 0xdf, 0x00, 0xff}}},\n    {{{   -14,   -133,     74}, 0, {   396,   1884}, {0xdb, 0x87, 0xfe, 0xff}}},\n    {{{     8,    -89,    106}, 0, {   206,    872}, {0xe7, 0xe1, 0x78, 0xff}}},\n    {{{     9,    -57,     98}, 0, {   644,    520}, {0xd5, 0x38, 0x68, 0xff}}},\n    {{{    -8,    -83,    -68}, 0, {  1164,   1184}, {0x86, 0xdf, 0x00, 0xff}}},\n    {{{   -14,   -133,    -73}, 0, {   528,   2044}, {0xdb, 0x87, 0x02, 0xff}}},\n    {{{    21,   -103,    -76}, 0, {   288,    984}, {0x3b, 0x92, 0xec, 0xff}}},\n    {{{    -8,    -83,    -68}, 0, {   108,   1156}, {0x86, 0xdf, 0x00, 0xff}}},\n    {{{   -19,    -43,    -44}, 0, {    48,     -8}, {0x93, 0xeb, 0xc5, 0xff}}},\n    {{{     9,    -57,    -97}, 0, {   904,   1020}, {0xd5, 0x38, 0x98, 0xff}}},\n    {{{    12,    -28,    -72}, 0, {   960,      8}, {0xc0, 0x01, 0x93, 0xff}}},\n};\n\n// 0x060414D8\nstatic const Vtx bowser_seg6_vertex_060414D8[] = {\n    {{{    30,    -74,    -99}, 0, {   -52,    960}, {0x4a, 0xf4, 0x9a, 0xff}}},\n    {{{    49,    -58,    -76}, 0, {    -6,    -16}, {0x1c, 0xce, 0x8f, 0xff}}},\n    {{{    21,   -103,    -76}, 0, {   780,    828}, {0x3b, 0x92, 0xec, 0xff}}},\n    {{{    39,    -99,    -51}, 0, {  1044,    -40}, {0xfa, 0x9e, 0xb0, 0xff}}},\n    {{{   146,     12,    -16}, 0, {  -158,     20}, {0xc3, 0x67, 0x29, 0xff}}},\n    {{{   135,     53,    -34}, 0, {   526,   2012}, {0xe9, 0x7b, 0xec, 0xff}}},\n    {{{   146,     18,    -53}, 0, {  1216,     60}, {0xc0, 0x61, 0xce, 0xff}}},\n    {{{   146,     18,     54}, 0, {  -576,     52}, {0xc0, 0x61, 0x32, 0xff}}},\n    {{{   135,     53,     35}, 0, {   574,   1980}, {0xe9, 0x7b, 0x14, 0xff}}},\n    {{{   146,     12,     17}, 0, {  1148,     20}, {0xc3, 0x67, 0xd7, 0xff}}},\n    {{{   135,     53,     35}, 0, {   514,   2012}, {0xe9, 0x7b, 0x14, 0xff}}},\n    {{{   146,     18,     54}, 0, {  1094,    -20}, {0xc0, 0x61, 0x32, 0xff}}},\n    {{{   170,     27,     44}, 0, {  -198,    -16}, {0x15, 0x6d, 0x3c, 0xff}}},\n    {{{   170,     27,    -43}, 0, {  1234,     16}, {0x15, 0x6d, 0xc4, 0xff}}},\n    {{{   146,     18,    -53}, 0, {     0,     56}, {0xc0, 0x61, 0xce, 0xff}}},\n    {{{   135,     53,    -34}, 0, {   522,   1964}, {0xe9, 0x7b, 0xec, 0xff}}},\n};\n\n// 0x060415D8\nstatic const Vtx bowser_seg6_vertex_060415D8[] = {\n    {{{   146,     12,     17}, 0, {  -398,      4}, {0xc3, 0x67, 0xd7, 0xff}}},\n    {{{   135,     53,     35}, 0, {   552,   2028}, {0xe9, 0x7b, 0x14, 0xff}}},\n    {{{   170,     33,     26}, 0, {  1294,      0}, {0x17, 0x74, 0xd4, 0xff}}},\n    {{{   135,     53,    -34}, 0, {   480,   2076}, {0xe9, 0x7b, 0xec, 0xff}}},\n    {{{   170,     33,    -25}, 0, {   924,    112}, {0x17, 0x74, 0x2d, 0xff}}},\n    {{{   170,     27,    -43}, 0, {   -36,    116}, {0x15, 0x6d, 0xc4, 0xff}}},\n    {{{   135,     53,    -34}, 0, {   400,   1996}, {0xe9, 0x7b, 0xec, 0xff}}},\n    {{{   146,     12,    -16}, 0, {  1276,     16}, {0xc3, 0x67, 0x29, 0xff}}},\n    {{{   170,     33,    -25}, 0, {  -128,     -4}, {0x17, 0x74, 0x2d, 0xff}}},\n    {{{   135,     53,     35}, 0, {   362,   2012}, {0xe9, 0x7b, 0x14, 0xff}}},\n    {{{   170,     27,     44}, 0, {  1048,    -12}, {0x15, 0x6d, 0x3c, 0xff}}},\n    {{{   170,     33,     26}, 0, {   -52,    -44}, {0x17, 0x74, 0xd4, 0xff}}},\n};\n\n// 0x06041698\nstatic const Vtx bowser_seg6_vertex_06041698[] = {\n    {{{     9,    -57,    -97}, 0, {   276,    724}, {0xd5, 0x38, 0x98, 0xff}}},\n    {{{    12,    -28,    -72}, 0, {   218,      0}, {0xc0, 0x01, 0x93, 0xff}}},\n    {{{    49,    -58,    -76}, 0, {   976,    -48}, {0x1c, 0xce, 0x8f, 0xff}}},\n    {{{    30,    -74,    -99}, 0, {   712,    712}, {0x4a, 0xf4, 0x9a, 0xff}}},\n    {{{     8,    -89,   -105}, 0, {   448,   1212}, {0xe7, 0xe1, 0x88, 0xff}}},\n    {{{    49,    -58,     77}, 0, {  -330,    -12}, {0x1c, 0xce, 0x71, 0xff}}},\n    {{{    12,    -28,     73}, 0, {   854,     -8}, {0xbe, 0x04, 0x6b, 0xff}}},\n    {{{     9,    -57,     98}, 0, {   744,   1408}, {0xd5, 0x38, 0x68, 0xff}}},\n    {{{    30,    -74,    100}, 0, {    62,   1408}, {0x4a, 0xf4, 0x66, 0xff}}},\n    {{{     9,    -57,     98}, 0, {   764,    916}, {0xd5, 0x38, 0x68, 0xff}}},\n    {{{     8,    -89,    106}, 0, {   326,   1780}, {0xe7, 0xe1, 0x78, 0xff}}},\n    {{{    30,    -74,    100}, 0, {   -10,    916}, {0x4a, 0xf4, 0x66, 0xff}}},\n};\n\n// 0x06041758\nstatic const Vtx bowser_seg6_vertex_06041758[] = {\n    {{{   123,    -90,     62}, 0, {  1728,     54}, {0x29, 0xbd, 0x63, 0xff}}},\n    {{{   126,    -66,     77}, 0, {  1880,    686}, {0x18, 0xe6, 0x79, 0xff}}},\n    {{{   102,    -67,     73}, 0, {  2268,    532}, {0x08, 0xc2, 0x6e, 0xff}}},\n    {{{   146,    -71,     61}, 0, {  1304,    498}, {0x63, 0xcc, 0x3b, 0xff}}},\n    {{{   151,    -43,     67}, 0, {  1304,   1100}, {0x20, 0xbf, 0x67, 0xff}}},\n    {{{   114,    -47,     73}, 0, {  2076,    944}, {0x16, 0xef, 0x7b, 0xff}}},\n    {{{   146,    -71,     61}, 0, {  1344,    496}, {0x63, 0xcc, 0x3b, 0xff}}},\n    {{{   149,    -75,     42}, 0, {   892,    372}, {0x6c, 0xe0, 0x38, 0xff}}},\n    {{{   157,    -55,     20}, 0, {   256,    782}, {0x67, 0xbb, 0x16, 0xff}}},\n    {{{   151,    -43,     67}, 0, {  1344,   1116}, {0x20, 0xbf, 0x67, 0xff}}},\n    {{{   123,    -90,     62}, 0, {  1588,     -8}, {0x29, 0xbd, 0x63, 0xff}}},\n};\n\n// 0x06041808\nstatic const Vtx bowser_seg6_vertex_06041808[] = {\n    {{{    71,   -107,    -60}, 0, {  2224,    222}, {0xfe, 0xba, 0x97, 0xff}}},\n    {{{   123,    -90,    -61}, 0, {  1540,    648}, {0x29, 0xbd, 0x9d, 0xff}}},\n    {{{   135,   -116,    -29}, 0, {   940,    -94}, {0x40, 0x9b, 0xd8, 0xff}}},\n    {{{    79,    -67,    -68}, 0, {  2072,   1098}, {0x00, 0xc4, 0x91, 0xff}}},\n    {{{   155,    -86,    -33}, 0, {   620,    582}, {0x74, 0xde, 0xda, 0xff}}},\n    {{{   149,    -75,    -41}, 0, {   780,    844}, {0x6c, 0xe0, 0xc8, 0xff}}},\n    {{{   150,    -73,      0}, 0, {    -4,    584}, {0x78, 0xd7, 0x00, 0xff}}},\n    {{{   135,   -116,     30}, 0, {   920,   -114}, {0x40, 0x9b, 0x28, 0xff}}},\n    {{{   150,    -73,      0}, 0, {   -20,    588}, {0x78, 0xd7, 0x00, 0xff}}},\n    {{{   155,    -86,     34}, 0, {   608,    590}, {0x74, 0xde, 0x26, 0xff}}},\n    {{{   149,    -75,     42}, 0, {   768,    862}, {0x6c, 0xe0, 0x38, 0xff}}},\n    {{{   123,    -90,     62}, 0, {  1528,    660}, {0x29, 0xbd, 0x63, 0xff}}},\n    {{{   157,    -55,     20}, 0, {   184,   1136}, {0x67, 0xbb, 0x16, 0xff}}},\n    {{{    79,    -67,     69}, 0, {  2068,   1132}, {0x00, 0xc4, 0x6f, 0xff}}},\n    {{{    71,   -107,     61}, 0, {  2212,    220}, {0xfe, 0xba, 0x69, 0xff}}},\n    {{{   157,    -55,    -19}, 0, {   192,   1108}, {0x54, 0xa4, 0xeb, 0xff}}},\n};\n\n// 0x06041908\nstatic const Vtx bowser_seg6_vertex_06041908[] = {\n    {{{   198,    -43,     64}, 0, {  2516,    214}, {0x3e, 0xc5, 0x5d, 0xff}}},\n    {{{   215,    -61,     22}, 0, {  1532,    -22}, {0x5b, 0xab, 0x16, 0xff}}},\n    {{{   226,    -26,     25}, 0, {  1588,    746}, {0x79, 0x15, 0x1d, 0xff}}},\n    {{{   215,    -61,    -21}, 0, {   468,     -4}, {0x58, 0xac, 0xdf, 0xff}}},\n    {{{   226,    -26,    -24}, 0, {   416,    766}, {0x7b, 0x0c, 0xe8, 0xff}}},\n    {{{   198,    -43,    -63}, 0, {  -508,    264}, {0x3e, 0xc5, 0xa3, 0xff}}},\n};\n\n// 0x06041968\nstatic const Vtx bowser_seg6_vertex_06041968[] = {\n    {{{   146,    -71,    -60}, 0, {  1324,    512}, {0x63, 0xcc, 0xc5, 0xff}}},\n    {{{   151,    -43,    -66}, 0, {  1500,   1070}, {0x20, 0xbf, 0x99, 0xff}}},\n    {{{   157,    -55,    -19}, 0, {   368,    840}, {0x54, 0xa4, 0xeb, 0xff}}},\n    {{{    79,    -67,    -68}, 0, {  2616,    500}, {0x00, 0xc4, 0x91, 0xff}}},\n    {{{   102,    -67,    -72}, 0, {  2200,    584}, {0x08, 0xc2, 0x92, 0xff}}},\n    {{{   123,    -90,    -61}, 0, {  1784,    124}, {0x29, 0xbd, 0x9d, 0xff}}},\n    {{{   126,    -66,    -76}, 0, {  1780,    670}, {0x18, 0xe6, 0x87, 0xff}}},\n    {{{   114,    -47,    -72}, 0, {  2000,    976}, {0x16, 0xef, 0x85, 0xff}}},\n    {{{   146,    -71,    -60}, 0, {  1364,    536}, {0x63, 0xcc, 0xc5, 0xff}}},\n    {{{   151,    -43,    -66}, 0, {  1296,   1098}, {0x20, 0xbf, 0x99, 0xff}}},\n    {{{   149,    -75,    -41}, 0, {   860,    432}, {0x6c, 0xe0, 0xc8, 0xff}}},\n    {{{   123,    -90,    -61}, 0, {  1436,    -76}, {0x29, 0xbd, 0x9d, 0xff}}},\n};\n\n// 0x06041A28 - 0x06041BA0\nconst Gfx bowser_seg6_dl_06041A28[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06028438),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bowser_seg6_lights_06038C38.l, 1),\n    gsSPLight(&bowser_seg6_lights_06038C38.a, 2),\n    gsSPVertex(bowser_seg6_vertex_060402D8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 2, 12,  0, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bowser_seg6_vertex_060403D8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0,  6,  9, 10, 0x0),\n    gsSP2Triangles(10,  7,  6, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bowser_seg6_vertex_060404B8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 8, 11,  9, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 14, 15, 0x0),\n    gsSPVertex(bowser_seg6_vertex_060405B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 3,  4,  0, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(10,  9, 14, 0x0),\n    gsSPVertex(bowser_seg6_vertex_060406A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bowser_seg6_vertex_060407A8, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06041BA0 - 0x06041E48\nconst Gfx bowser_seg6_dl_06041BA0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06020C38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_seg6_vertex_060407D8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  5,  4, 0x0,  4,  9, 10, 0x0),\n    gsSP2Triangles( 7,  9,  4, 0x0,  0, 11,  1, 0x0),\n    gsSP1Triangle( 0, 12, 13, 0x0),\n    gsSPVertex(bowser_seg6_vertex_060408B8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  9,  6, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11,  0, 12, 0x0),\n    gsSP2Triangles( 2, 12,  0, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bowser_seg6_vertex_060409B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  3,  1,  6, 0x0),\n    gsSP2Triangles( 2,  1,  5, 0x0,  3,  7,  4, 0x0),\n    gsSP2Triangles( 3,  8,  7, 0x0,  6,  9,  3, 0x0),\n    gsSP2Triangles(10,  8,  3, 0x0, 11, 10,  3, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bowser_seg6_vertex_06040AA8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  5,  4, 0x0),\n    gsSP2Triangles( 4,  8,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(11, 12,  9, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bowser_seg6_vertex_06040BA8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 3,  4,  1, 0x0,  5,  1,  4, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  4,  3, 0x0),\n    gsSP2Triangles( 4,  7,  8, 0x0,  4,  8,  6, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 11, 10, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(bowser_seg6_vertex_06040CA8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11,  8, 0x0,  8, 12, 10, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(bowser_seg6_vertex_06040DA8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  1,  5,  6, 0x0),\n    gsSP2Triangles( 4,  5,  1, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  8,  7, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(14, 11, 13, 0x0,  3, 15,  2, 0x0),\n    gsSP1Triangle( 2, 15,  0, 0x0),\n    gsSPVertex(bowser_seg6_vertex_06040EA8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bowser_seg6_vertex_06040FA8, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06041E48 - 0x06041EA8\nconst Gfx bowser_seg6_dl_06041E48[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06024438),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_seg6_vertex_06040FD8, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  0,  4,  3, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  9, 10,  7, 0x0),\n    gsSP1Triangle( 0,  2,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06041EA8 - 0x06041F50\nconst Gfx bowser_seg6_dl_06041EA8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06028C38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_seg6_vertex_06041088, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 4,  8,  7, 0x0,  4,  6,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10,  0,  2, 0x0),\n    gsSP2Triangles(12,  0, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bowser_seg6_vertex_06041188, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 0,  2,  3, 0x0,  5,  6,  7, 0x0),\n    gsSP1Triangle( 6,  8,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06041F50 - 0x06042098\nconst Gfx bowser_seg6_dl_06041F50[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_0602AC38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_seg6_vertex_06041218, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSP1Triangle(14,  0,  2, 0x0),\n    gsSPVertex(bowser_seg6_vertex_06041308, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0,  9, 11,  7, 0x0),\n    gsSP2Triangles( 2, 12,  0, 0x0, 13,  1,  0, 0x0),\n    gsSPVertex(bowser_seg6_vertex_060413E8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(bowser_seg6_vertex_060414D8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bowser_seg6_vertex_060415D8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06042098 - 0x060420F0\nconst Gfx bowser_seg6_dl_06042098[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_0602BC38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_seg6_vertex_06041698, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 7,  8,  5, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x060420F0 - 0x06042140\nconst Gfx bowser_seg6_dl_060420F0[] = {\n    gsSPVertex(bowser_seg6_vertex_06041758, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 3,  4,  1, 0x0,  5,  1,  4, 0x0),\n    gsSP2Triangles( 2,  1,  5, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 8,  9,  6, 0x0,  6, 10,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06042140 - 0x060421D8\nconst Gfx bowser_seg6_dl_06042140[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_0601FC38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_seg6_vertex_06041808, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 4,  2,  1, 0x0,  1,  5,  4, 0x0),\n    gsSP2Triangles( 6,  2,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 11,  7,  9, 0x0),\n    gsSP2Triangles( 8, 12,  9, 0x0,  9, 12, 10, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0, 14,  7, 11, 0x0),\n    gsSP2Triangles( 4, 15,  6, 0x0,  5, 15,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x060421D8 - 0x06042220\nconst Gfx bowser_seg6_dl_060421D8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06021438),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_seg6_vertex_06041908, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  4,  3,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06042220 - 0x06042278\nconst Gfx bowser_seg6_dl_06042220[] = {\n    gsSPVertex(bowser_seg6_vertex_06041968, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  5,  4, 0x0,  7,  6,  4, 0x0),\n    gsSP2Triangles( 5,  6,  8, 0x0,  9,  6,  7, 0x0),\n    gsSP2Triangles( 6,  9,  8, 0x0, 10, 11,  0, 0x0),\n    gsSP1Triangle( 2, 10,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06042278 - 0x06042328\nconst Gfx bowser_seg6_dl_06042278[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_seg6_dl_06041A28),\n    gsSPDisplayList(bowser_seg6_dl_06041BA0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_seg6_dl_06041E48),\n    gsSPDisplayList(bowser_seg6_dl_06041EA8),\n    gsSPDisplayList(bowser_seg6_dl_06041F50),\n    gsSPDisplayList(bowser_seg6_dl_06042098),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_seg6_dl_06042140),\n    gsSPDisplayList(bowser_seg6_dl_060421D8),\n    gsSPEndDisplayList(),\n};\n\n// 0x06042328 - 0x06042348\nconst Gfx bowser_seg6_dl_06042328[] = {\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x06042348 - 0x060423A0\nconst Gfx bowser_seg6_dl_06042348[] = {\n    gsSPDisplayList(bowser_seg6_dl_06042278),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_0602CC38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(bowser_seg6_dl_060420F0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06032C38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(bowser_seg6_dl_06042220),\n    gsSPDisplayList(bowser_seg6_dl_06042328),\n    gsSPEndDisplayList(),\n};\n\n// 0x060423A0 - 0x060423F8\nconst Gfx bowser_seg6_dl_060423A0[] = {\n    gsSPDisplayList(bowser_seg6_dl_06042278),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_0602DC38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(bowser_seg6_dl_060420F0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06033C38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(bowser_seg6_dl_06042220),\n    gsSPDisplayList(bowser_seg6_dl_06042328),\n    gsSPEndDisplayList(),\n};\n\n// 0x060423F8 - 0x06042450\nconst Gfx bowser_seg6_dl_060423F8[] = {\n    gsSPDisplayList(bowser_seg6_dl_06042278),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_0602EC38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(bowser_seg6_dl_060420F0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06034C38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(bowser_seg6_dl_06042220),\n    gsSPDisplayList(bowser_seg6_dl_06042328),\n    gsSPEndDisplayList(),\n};\n\n// 0x06042450 - 0x060424A8\nconst Gfx bowser_seg6_dl_06042450[] = {\n    gsSPDisplayList(bowser_seg6_dl_06042278),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06031C38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(bowser_seg6_dl_060420F0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06035C38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(bowser_seg6_dl_06042220),\n    gsSPDisplayList(bowser_seg6_dl_06042328),\n    gsSPEndDisplayList(),\n};\n\n// 0x060424A8 - 0x06042500\nconst Gfx bowser_seg6_dl_060424A8[] = {\n    gsSPDisplayList(bowser_seg6_dl_06042278),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06031C38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(bowser_seg6_dl_060420F0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06036C38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(bowser_seg6_dl_06042220),\n    gsSPDisplayList(bowser_seg6_dl_06042328),\n    gsSPEndDisplayList(),\n};\n\n// 0x06042500 - 0x06042558\nconst Gfx bowser_seg6_dl_06042500[] = {\n    gsSPDisplayList(bowser_seg6_dl_06042278),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_0602FC38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(bowser_seg6_dl_060420F0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06037C38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(bowser_seg6_dl_06042220),\n    gsSPDisplayList(bowser_seg6_dl_06042328),\n    gsSPEndDisplayList(),\n};\n\n// 0x06042558 - 0x060425B0\nconst Gfx bowser_seg6_dl_06042558[] = {\n    gsSPDisplayList(bowser_seg6_dl_06042278),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06030C38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(bowser_seg6_dl_060420F0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06037C38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(bowser_seg6_dl_06042220),\n    gsSPDisplayList(bowser_seg6_dl_06042328),\n    gsSPEndDisplayList(),\n};\n\n// 0x060425B0 - 0x06042608\nconst Gfx bowser_seg6_dl_060425B0[] = {\n    gsSPDisplayList(bowser_seg6_dl_06042278),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06030C38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(bowser_seg6_dl_060420F0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06036C38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(bowser_seg6_dl_06042220),\n    gsSPDisplayList(bowser_seg6_dl_06042328),\n    gsSPEndDisplayList(),\n};\n\n// 0x06042608 - 0x06042660\nconst Gfx bowser_seg6_dl_06042608[] = {\n    gsSPDisplayList(bowser_seg6_dl_06042278),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06031C38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(bowser_seg6_dl_060420F0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06031C38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(bowser_seg6_dl_06042220),\n    gsSPDisplayList(bowser_seg6_dl_06042328),\n    gsSPEndDisplayList(),\n};\n\n// 0x06042660\nstatic const Vtx bowser_seg6_vertex_06042660[] = {\n    {{{   -47,    136,    235}, 0, {  2052,    666}, {0x9e, 0xe1, 0x49, 0xff}}},\n    {{{   -87,    152,    188}, 0, {   500,    682}, {0x9d, 0xb2, 0x06, 0xff}}},\n    {{{   -60,    128,    206}, 0, {  1400,    972}, {0xbc, 0x95, 0xfe, 0xff}}},\n    {{{   -51,    176,    218}, 0, {   980,    444}, {0xc8, 0x34, 0x65, 0xff}}},\n    {{{   -44,    199,    200}, 0, {   648,    694}, {0xf2, 0x79, 0x22, 0xff}}},\n    {{{   -86,    193,    186}, 0, {   440,    230}, {0xac, 0x57, 0x25, 0xff}}},\n    {{{   -72,    171,    214}, 0, {   914,    200}, {0xb2, 0x21, 0x5e, 0xff}}},\n    {{{   -43,    156,    235}, 0, {  1324,    384}, {0xa8, 0x42, 0x3d, 0xff}}},\n    {{{   -25,    198,    164}, 0, {   374,    964}, {0xf2, 0x65, 0xb5, 0xff}}},\n    {{{   -72,    171,    214}, 0, {  1022,    220}, {0xb2, 0x21, 0x5e, 0xff}}},\n    {{{   -43,    156,    235}, 0, {  1936,    370}, {0xa8, 0x42, 0x3d, 0xff}}},\n    {{{   -86,    193,    186}, 0, {   124,     66}, {0xac, 0x57, 0x25, 0xff}}},\n    {{{   -93,    163,    165}, 0, {  -112,    668}, {0xba, 0xfc, 0x97, 0xff}}},\n    {{{    87,    193,    186}, 0, {  1352,    404}, {0x54, 0x57, 0x25, 0xff}}},\n    {{{    45,    199,    200}, 0, {   652,    752}, {0x0e, 0x7c, 0x15, 0xff}}},\n    {{{    52,    176,    218}, 0, {   370,    494}, {0x37, 0x33, 0x65, 0xff}}},\n};\n\n// 0x06042760\nstatic const Vtx bowser_seg6_vertex_06042760[] = {\n    {{{    88,    152,    188}, 0, {  1086,    706}, {0x63, 0xb2, 0x07, 0xff}}},\n    {{{    94,    163,    165}, 0, {  1584,    690}, {0x46, 0xfc, 0x97, 0xff}}},\n    {{{    87,    193,    186}, 0, {  1502,    252}, {0x54, 0x57, 0x25, 0xff}}},\n    {{{    61,    128,    206}, 0, {   296,    856}, {0x44, 0x95, 0xfe, 0xff}}},\n    {{{    48,    136,    235}, 0, {  -174,    626}, {0x62, 0xe1, 0x49, 0xff}}},\n    {{{    73,    171,    214}, 0, {   744,    352}, {0x4e, 0x21, 0x5e, 0xff}}},\n    {{{    44,    156,    235}, 0, {     0,    394}, {0x58, 0x42, 0x3d, 0xff}}},\n    {{{    52,    176,    218}, 0, {   370,    494}, {0x37, 0x33, 0x65, 0xff}}},\n    {{{    44,    156,    235}, 0, {   -88,    392}, {0x58, 0x42, 0x3d, 0xff}}},\n    {{{    73,    171,    214}, 0, {   674,    304}, {0x4e, 0x21, 0x5e, 0xff}}},\n    {{{    87,    193,    186}, 0, {  1352,    404}, {0x54, 0x57, 0x25, 0xff}}},\n    {{{    45,    199,    200}, 0, {   652,    752}, {0x0e, 0x7c, 0x15, 0xff}}},\n    {{{    26,    198,    164}, 0, {   834,   1014}, {0x13, 0x63, 0xb4, 0xff}}},\n    {{{     0,    131,    186}, 0, {   494,    742}, {0x00, 0x8d, 0xcb, 0xff}}},\n    {{{   -32,    116,    235}, 0, {   298,    908}, {0xd5, 0x94, 0x31, 0xff}}},\n    {{{   -60,    128,    206}, 0, {   126,    784}, {0xbc, 0x95, 0xfe, 0xff}}},\n};\n\n// 0x06042860\nstatic const Vtx bowser_seg6_vertex_06042860[] = {\n    {{{   -47,    136,    235}, 0, {    52,    614}, {0x9e, 0xe1, 0x49, 0xff}}},\n    {{{   -32,    116,    235}, 0, {   122,    880}, {0xd5, 0x94, 0x31, 0xff}}},\n    {{{   -32,    163,    271}, 0, {  1098,    190}, {0xab, 0x12, 0x5c, 0xff}}},\n    {{{   -43,    156,    235}, 0, {   264,    436}, {0xa8, 0x42, 0x3d, 0xff}}},\n    {{{   -60,    128,    206}, 0, {   690,    824}, {0xbc, 0x95, 0xfe, 0xff}}},\n    {{{   -32,    116,    235}, 0, {  1540,    920}, {0xd5, 0x94, 0x31, 0xff}}},\n    {{{   -47,    136,    235}, 0, {  1270,    688}, {0x9e, 0xe1, 0x49, 0xff}}},\n    {{{    48,    136,    235}, 0, {   448,    622}, {0x62, 0xe1, 0x49, 0xff}}},\n    {{{    44,    156,    235}, 0, {   530,    422}, {0x58, 0x42, 0x3d, 0xff}}},\n    {{{    33,    163,    271}, 0, {  1192,    346}, {0x55, 0x12, 0x5c, 0xff}}},\n    {{{    33,    116,    235}, 0, {   558,    928}, {0x2b, 0x94, 0x31, 0xff}}},\n    {{{    61,    128,    206}, 0, {  -114,    678}, {0x44, 0x95, 0xfe, 0xff}}},\n    {{{     0,    137,    271}, 0, {   976,    -80}, {0x00, 0xbd, 0x6b, 0xff}}},\n    {{{   -19,    171,    271}, 0, {   406,   -836}, {0xe6, 0x62, 0x4b, 0xff}}},\n    {{{   -32,    163,    271}, 0, {    10,   -680}, {0xab, 0x12, 0x5c, 0xff}}},\n};\n\n// 0x06042950\nstatic const Vtx bowser_seg6_vertex_06042950[] = {\n    {{{   -33,    152,    163}, 0, {   284,    616}, {0xf5, 0xb3, 0x9d, 0xff}}},\n    {{{   -87,    152,    188}, 0, {   -42,    668}, {0x9d, 0xb2, 0x06, 0xff}}},\n    {{{   -93,    163,    165}, 0, {   -82,    574}, {0xba, 0xfc, 0x97, 0xff}}},\n    {{{   -60,    128,    206}, 0, {   126,    784}, {0xbc, 0x95, 0xfe, 0xff}}},\n    {{{     0,    131,    186}, 0, {   494,    742}, {0x00, 0x8d, 0xcb, 0xff}}},\n    {{{    88,    152,    188}, 0, {  1032,    722}, {0x63, 0xb2, 0x07, 0xff}}},\n    {{{    61,    128,    206}, 0, {   864,    822}, {0x44, 0x95, 0xfe, 0xff}}},\n    {{{    34,    152,    163}, 0, {   702,    636}, {0x0d, 0xac, 0xa3, 0xff}}},\n    {{{    33,    116,    235}, 0, {   698,    928}, {0x2b, 0x94, 0x31, 0xff}}},\n    {{{   -32,    116,    235}, 0, {     0,    990}, {0xd5, 0x94, 0x31, 0xff}}},\n    {{{     0,    137,    271}, 0, {   976,    -80}, {0x00, 0xbd, 0x6b, 0xff}}},\n    {{{   -32,    163,    271}, 0, {    10,   -680}, {0xab, 0x12, 0x5c, 0xff}}},\n    {{{    20,    171,    271}, 0, {  1584,   -822}, {0x1a, 0x62, 0x4b, 0xff}}},\n    {{{   -19,    171,    271}, 0, {   406,   -836}, {0xe6, 0x62, 0x4b, 0xff}}},\n    {{{     0,    131,    186}, 0, {   936,   1490}, {0x00, 0x8d, 0xcb, 0xff}}},\n};\n\n// 0x06042A40\nstatic const Vtx bowser_seg6_vertex_06042A40[] = {\n    {{{   -33,    177,    155}, 0, {   680,    956}, {0xf5, 0x08, 0x82, 0xff}}},\n    {{{   -93,    163,    165}, 0, {  1024,   1084}, {0xba, 0xfc, 0x97, 0xff}}},\n    {{{   -25,    198,    164}, 0, {   646,    620}, {0xf2, 0x65, 0xb5, 0xff}}},\n    {{{    34,    152,    163}, 0, {   702,    636}, {0x0d, 0xac, 0xa3, 0xff}}},\n    {{{   -33,    152,    163}, 0, {   284,    616}, {0xf5, 0xb3, 0x9d, 0xff}}},\n    {{{    34,    177,    155}, 0, {   700,    550}, {0x07, 0x07, 0x82, 0xff}}},\n    {{{   -33,    177,    155}, 0, {   282,    530}, {0xf5, 0x08, 0x82, 0xff}}},\n    {{{   -93,    163,    165}, 0, {   -82,    574}, {0xba, 0xfc, 0x97, 0xff}}},\n    {{{    94,    163,    165}, 0, {  1068,    632}, {0x46, 0xfc, 0x97, 0xff}}},\n    {{{     0,    137,    271}, 0, {   976,    -80}, {0x00, 0xbd, 0x6b, 0xff}}},\n    {{{    33,    116,    235}, 0, {  1930,   1014}, {0x2b, 0x94, 0x31, 0xff}}},\n    {{{    33,    163,    271}, 0, {  1972,   -654}, {0x55, 0x12, 0x5c, 0xff}}},\n    {{{    20,    171,    271}, 0, {  1584,   -822}, {0x1a, 0x62, 0x4b, 0xff}}},\n    {{{    88,    152,    188}, 0, {  1032,    722}, {0x63, 0xb2, 0x07, 0xff}}},\n    {{{   -86,    193,    186}, 0, {  1002,    568}, {0xac, 0x57, 0x25, 0xff}}},\n    {{{     0,    131,    186}, 0, {   936,   1490}, {0x00, 0x8d, 0xcb, 0xff}}},\n};\n\n// 0x06042B40\nstatic const Vtx bowser_seg6_vertex_06042B40[] = {\n    {{{   -25,    198,    164}, 0, {   646,    620}, {0xf2, 0x65, 0xb5, 0xff}}},\n    {{{    26,    198,    164}, 0, {   344,    624}, {0x13, 0x63, 0xb4, 0xff}}},\n    {{{    34,    177,    155}, 0, {   284,    960}, {0x07, 0x07, 0x82, 0xff}}},\n    {{{    87,    193,    186}, 0, {    -8,    582}, {0x54, 0x57, 0x25, 0xff}}},\n    {{{    94,    163,    165}, 0, {   -66,   1096}, {0x46, 0xfc, 0x97, 0xff}}},\n    {{{   -33,    177,    155}, 0, {   680,    956}, {0xf5, 0x08, 0x82, 0xff}}},\n    {{{     0,    164,    240}, 0, {   454,    680}, {0x00, 0x75, 0x30, 0xff}}},\n    {{{   -19,    171,    271}, 0, {   120,   1010}, {0xe6, 0x62, 0x4b, 0xff}}},\n    {{{    20,    171,    271}, 0, {   882,   1020}, {0x1a, 0x62, 0x4b, 0xff}}},\n    {{{    33,    163,    271}, 0, {  1134,   1010}, {0x55, 0x12, 0x5c, 0xff}}},\n    {{{   -32,    163,    271}, 0, {  -134,    990}, {0xab, 0x12, 0x5c, 0xff}}},\n};\n\n// 0x06042BF0\nstatic const Vtx bowser_seg6_vertex_06042BF0[] = {\n    {{{     0,    164,    240}, 0, {  1444,     64}, {0x00, 0x75, 0x30, 0xff}}},\n    {{{    30,    189,    252}, 0, {   414,   1972}, {0x1f, 0x7a, 0x00, 0xff}}},\n    {{{    44,    156,    235}, 0, {  -244,    -44}, {0x58, 0x42, 0x3d, 0xff}}},\n    {{{   -32,    163,    271}, 0, {   950,     80}, {0xab, 0x12, 0x5c, 0xff}}},\n    {{{   -29,    189,    252}, 0, {   462,   1936}, {0xe2, 0x7b, 0x00, 0xff}}},\n    {{{   -43,    156,    235}, 0, {  -200,     20}, {0xa8, 0x42, 0x3d, 0xff}}},\n    {{{     0,    164,    240}, 0, {  1276,     48}, {0x00, 0x75, 0x30, 0xff}}},\n    {{{   -29,    189,    252}, 0, {   458,   2016}, {0xe2, 0x7b, 0x00, 0xff}}},\n    {{{   -32,    163,    271}, 0, {  -322,     36}, {0xab, 0x12, 0x5c, 0xff}}},\n    {{{   -43,    156,    235}, 0, {  1708,     36}, {0xa8, 0x42, 0x3d, 0xff}}},\n    {{{   -29,    189,    252}, 0, {   692,   1880}, {0xe2, 0x7b, 0x00, 0xff}}},\n    {{{     0,    164,    240}, 0, {  -310,     -8}, {0x00, 0x75, 0x30, 0xff}}},\n    {{{    44,    156,    235}, 0, {  1894,     48}, {0x58, 0x42, 0x3d, 0xff}}},\n    {{{    30,    189,    252}, 0, {   518,   2028}, {0x1f, 0x7a, 0x00, 0xff}}},\n    {{{    33,    163,    271}, 0, {    74,     24}, {0x55, 0x12, 0x5c, 0xff}}},\n};\n\n// 0x06042CE0\nstatic const Vtx bowser_seg6_vertex_06042CE0[] = {\n    {{{    33,    184,    224}, 0, { -1314,     60}, {0xf8, 0x4a, 0x66, 0xff}}},\n    {{{    52,    176,    218}, 0, {  1222,      0}, {0x37, 0x33, 0x65, 0xff}}},\n    {{{    50,    205,    232}, 0, {   414,   1972}, {0x2c, 0x34, 0x6a, 0xff}}},\n    {{{   -44,    199,    200}, 0, {  1324,    -28}, {0xf2, 0x79, 0x22, 0xff}}},\n    {{{   -49,    205,    232}, 0, {   426,   1976}, {0xd4, 0x34, 0x6a, 0xff}}},\n    {{{   -32,    184,    224}, 0, {  -210,     68}, {0x0a, 0x3f, 0x6d, 0xff}}},\n    {{{   -51,    176,    218}, 0, {  1338,     16}, {0xc8, 0x34, 0x65, 0xff}}},\n    {{{   -49,    205,    232}, 0, {   676,   1904}, {0xd4, 0x34, 0x6a, 0xff}}},\n    {{{   -44,    199,    200}, 0, {  -170,     28}, {0xf2, 0x79, 0x22, 0xff}}},\n    {{{    45,    199,    200}, 0, {  1244,     68}, {0x0e, 0x7c, 0x15, 0xff}}},\n    {{{    50,    205,    232}, 0, {   180,   1944}, {0x2c, 0x34, 0x6a, 0xff}}},\n    {{{    52,    176,    218}, 0, {  -560,     32}, {0x37, 0x33, 0x65, 0xff}}},\n    {{{    33,    184,    224}, 0, {  1218,     36}, {0xf8, 0x4a, 0x66, 0xff}}},\n    {{{    50,    205,    232}, 0, {   678,   1928}, {0x2c, 0x34, 0x6a, 0xff}}},\n    {{{    45,    199,    200}, 0, {  -110,      0}, {0x0e, 0x7c, 0x15, 0xff}}},\n};\n\n// 0x06042DD0\nstatic const Vtx bowser_seg6_vertex_06042DD0[] = {\n    {{{   -32,    184,    224}, 0, {  1122,     92}, {0x0a, 0x3f, 0x6d, 0xff}}},\n    {{{   -49,    205,    232}, 0, {   524,   1920}, {0xd4, 0x34, 0x6a, 0xff}}},\n    {{{   -51,    176,    218}, 0, {   -30,     16}, {0xc8, 0x34, 0x65, 0xff}}},\n    {{{    33,    163,    271}, 0, {  1524,     20}, {0x55, 0x12, 0x5c, 0xff}}},\n    {{{    30,    189,    252}, 0, {   634,   1952}, {0x1f, 0x7a, 0x00, 0xff}}},\n    {{{     0,    164,    240}, 0, {  -788,    -56}, {0x00, 0x75, 0x30, 0xff}}},\n};\n\n// 0x06042E30\nstatic const Vtx bowser_seg6_vertex_06042E30[] = {\n    {{{    45,    199,    200}, 0, {   862,    688}, {0x0e, 0x7c, 0x15, 0xff}}},\n    {{{    26,    198,    164}, 0, {   700,    204}, {0x13, 0x63, 0xb4, 0xff}}},\n    {{{   -25,    198,    164}, 0, {   270,    224}, {0xf2, 0x65, 0xb5, 0xff}}},\n    {{{    33,    184,    224}, 0, {   762,   1152}, {0xf8, 0x4a, 0x66, 0xff}}},\n    {{{   -44,    199,    200}, 0, {   116,    720}, {0xf2, 0x79, 0x22, 0xff}}},\n    {{{   -32,    184,    224}, 0, {   226,   1176}, {0x0a, 0x3f, 0x6d, 0xff}}},\n    {{{     0,    164,    240}, 0, {   498,   1548}, {0x00, 0x75, 0x30, 0xff}}},\n    {{{   -51,    176,    218}, 0, {    64,   1168}, {0xc8, 0x34, 0x65, 0xff}}},\n    {{{    52,    176,    218}, 0, {   926,   1128}, {0x37, 0x33, 0x65, 0xff}}},\n    {{{    44,    156,    235}, 0, {   860,   1532}, {0x58, 0x42, 0x3d, 0xff}}},\n    {{{   -43,    156,    235}, 0, {   138,   1564}, {0xa8, 0x42, 0x3d, 0xff}}},\n};\n\n// 0x06042EE0 - 0x060430E8\nconst Gfx bowser_seg6_dl_06042EE0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06020C38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bowser_seg6_lights_06038C38.l, 1),\n    gsSPLight(&bowser_seg6_lights_06038C38.a, 2),\n    gsSPVertex(bowser_seg6_vertex_06042660, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  6,  7,  3, 0x0),\n    gsSP2Triangles( 5,  4,  8, 0x0,  1,  0,  9, 0x0),\n    gsSP2Triangles( 0, 10,  9, 0x0,  9, 11,  1, 0x0),\n    gsSP2Triangles( 1, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bowser_seg6_vertex_06042760, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 0,  5,  4, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 5,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0, 11, 10, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(bowser_seg6_vertex_06042860, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0, 10, 11,  7, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bowser_seg6_vertex_06042950, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  4, 0x0),\n    gsSP2Triangles( 4,  1,  0, 0x0,  4,  5,  6, 0x0),\n    gsSP2Triangles( 7,  5,  4, 0x0,  6,  8,  4, 0x0),\n    gsSP2Triangles( 0,  7,  4, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(10, 12, 13, 0x0, 14, 10,  9, 0x0),\n    gsSPVertex(bowser_seg6_vertex_06042A40, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  6,  4, 0x0),\n    gsSP2Triangles( 3,  5,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(11, 12,  9, 0x0, 13,  3,  8, 0x0),\n    gsSP2Triangles( 2,  1, 14, 0x0, 15, 10,  9, 0x0),\n    gsSPVertex(bowser_seg6_vertex_06042B40, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  9,  6, 0x0),\n    gsSP1Triangle(10,  7,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x060430E8 - 0x06043180\nconst Gfx bowser_seg6_dl_060430E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_0602AC38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_seg6_vertex_06042BF0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bowser_seg6_vertex_06042CE0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bowser_seg6_vertex_06042DD0, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06043180 - 0x060431F0\nconst Gfx bowser_seg6_dl_06043180[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06024438),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_seg6_vertex_06042E30, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 4,  0,  2, 0x0,  4,  5,  3, 0x0),\n    gsSP2Triangles( 6,  5,  7, 0x0,  5,  6,  3, 0x0),\n    gsSP2Triangles( 8,  3,  6, 0x0,  6,  9,  8, 0x0),\n    gsSP1Triangle(10,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x060431F0 - 0x06043278\nconst Gfx bowser_seg6_dl_060431F0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_seg6_dl_06042EE0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_seg6_dl_060430E8),\n    gsSPDisplayList(bowser_seg6_dl_06043180),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x06043278\nstatic const Vtx bowser_seg6_vertex_06043278[] = {\n    {{{    56,    -17,     50}, 0, {  -258,   -386}, {0x15, 0x3d, 0x6d, 0xff}}},\n    {{{   122,     13,      0}, 0, {   486,    530}, {0xfd, 0x7e, 0x00, 0xff}}},\n    {{{    44,      7,      0}, 0, {   462,   -604}, {0x17, 0x7c, 0x00, 0xff}}},\n    {{{    16,     20,      0}, 0, {   452,  -1014}, {0xd7, 0x78, 0x00, 0xff}}},\n    {{{     7,     -7,     60}, 0, {  -410,  -1108}, {0xd1, 0x37, 0x67, 0xff}}},\n    {{{   127,      3,     35}, 0, {   -18,    620}, {0x25, 0x26, 0x73, 0xff}}},\n    {{{    56,    -17,    -49}, 0, {  1190,   -428}, {0x15, 0x3c, 0x93, 0xff}}},\n    {{{     7,     -7,    -59}, 0, {  1310,  -1160}, {0xd1, 0x37, 0x99, 0xff}}},\n    {{{    74,    -55,     31}, 0, {  1284,    -20}, {0x1f, 0x95, 0x3c, 0xff}}},\n    {{{   127,      3,     35}, 0, {  2312,   1266}, {0x25, 0x26, 0x73, 0xff}}},\n    {{{    56,    -17,     50}, 0, {   942,    780}, {0x15, 0x3d, 0x6d, 0xff}}},\n    {{{    -8,    -52,     37}, 0, {  -322,      6}, {0xb0, 0xc8, 0x4f, 0xff}}},\n    {{{     7,     -7,     60}, 0, {   -12,    974}, {0xd1, 0x37, 0x67, 0xff}}},\n    {{{    16,     20,      0}, 0, {   692,    878}, {0xd7, 0x78, 0x00, 0xff}}},\n    {{{    -8,    -52,    -36}, 0, {   708,    270}, {0xbc, 0xac, 0xbe, 0xff}}},\n    {{{    -8,    -52,     37}, 0, {   304,    466}, {0xb0, 0xc8, 0x4f, 0xff}}},\n};\n\n// 0x06043378\nstatic const Vtx bowser_seg6_vertex_06043378[] = {\n    {{{    -8,    -52,    -36}, 0, {  -322,      6}, {0xbc, 0xac, 0xbe, 0xff}}},\n    {{{    56,    -17,    -49}, 0, {   942,    780}, {0x15, 0x3c, 0x93, 0xff}}},\n    {{{    74,    -55,    -30}, 0, {  1284,    -20}, {0x1e, 0xa6, 0xad, 0xff}}},\n    {{{     7,     -7,    -59}, 0, {   -12,    974}, {0xd1, 0x37, 0x99, 0xff}}},\n    {{{   127,      3,    -34}, 0, {  2312,   1266}, {0x24, 0x25, 0x8d, 0xff}}},\n    {{{   122,     13,      0}, 0, {   486,    530}, {0xfd, 0x7e, 0x00, 0xff}}},\n    {{{   127,      3,    -34}, 0, {   996,    588}, {0x24, 0x25, 0x8d, 0xff}}},\n    {{{    56,    -17,    -49}, 0, {  1190,   -428}, {0x15, 0x3c, 0x93, 0xff}}},\n    {{{    16,     20,      0}, 0, {   692,    878}, {0xd7, 0x78, 0x00, 0xff}}},\n    {{{    -8,    -52,     37}, 0, {   304,    466}, {0xb0, 0xc8, 0x4f, 0xff}}},\n    {{{     7,     -7,     60}, 0, {   294,    844}, {0xd1, 0x37, 0x67, 0xff}}},\n    {{{     7,     -7,    -59}, 0, {   946,    524}, {0xd1, 0x37, 0x99, 0xff}}},\n    {{{    -8,    -52,    -36}, 0, {   708,    270}, {0xbc, 0xac, 0xbe, 0xff}}},\n    {{{   127,      3,     35}, 0, {   -18,    620}, {0x25, 0x26, 0x73, 0xff}}},\n    {{{   187,      0,      0}, 0, {   508,   1472}, {0x77, 0x2a, 0x00, 0xff}}},\n};\n\n// 0x06043468\nstatic const Vtx bowser_seg6_vertex_06043468[] = {\n    {{{   127,      3,    -34}, 0, {  2312,   1266}, {0x24, 0x25, 0x8d, 0xff}}},\n    {{{   187,      0,      0}, 0, {  3464,   1198}, {0x77, 0x2a, 0x00, 0xff}}},\n    {{{   140,    -23,    -21}, 0, {  2558,    694}, {0x3e, 0xa0, 0xcb, 0xff}}},\n    {{{    74,    -55,    -30}, 0, {  1284,    -20}, {0x1e, 0xa6, 0xad, 0xff}}},\n    {{{    74,    -55,     31}, 0, {  1284,    -20}, {0x1f, 0x95, 0x3c, 0xff}}},\n    {{{   140,    -23,     22}, 0, {  2558,    694}, {0x3e, 0xa9, 0x43, 0xff}}},\n    {{{   127,      3,     35}, 0, {  2312,   1266}, {0x25, 0x26, 0x73, 0xff}}},\n};\n\n// 0x060434D8\nstatic const Vtx bowser_seg6_vertex_060434D8[] = {\n    {{{   140,    -23,    -21}, 0, {   308,  -1804}, {0x3e, 0xa0, 0xcb, 0xff}}},\n    {{{   187,      0,      0}, 0, {   734,  -2986}, {0x77, 0x2a, 0x00, 0xff}}},\n    {{{   140,    -23,     22}, 0, {   982,  -1816}, {0x3e, 0xa9, 0x43, 0xff}}},\n    {{{    -8,    -52,     37}, 0, {   966,   1500}, {0xb0, 0xc8, 0x4f, 0xff}}},\n    {{{    -8,    -52,    -36}, 0, {  -178,   1520}, {0xbc, 0xac, 0xbe, 0xff}}},\n    {{{    74,    -55,     31}, 0, {  1002,   -166}, {0x1f, 0x95, 0x3c, 0xff}}},\n    {{{    74,    -55,    -30}, 0, {    36,   -150}, {0x1e, 0xa6, 0xad, 0xff}}},\n};\n\n// 0x06043548 - 0x06043648\nconst Gfx bowser_seg6_dl_06043548[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06022438),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bowser_seg6_lights_06038C38.l, 1),\n    gsSPLight(&bowser_seg6_lights_06038C38.a, 2),\n    gsSPVertex(bowser_seg6_vertex_06043278, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 0,  2,  3, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 2,  1,  6, 0x0,  3,  2,  6, 0x0),\n    gsSP2Triangles( 7,  3,  6, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(11,  8, 10, 0x0, 10, 12, 11, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(bowser_seg6_vertex_06043378, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11, 12, 0x0),\n    gsSP2Triangles(13, 14,  5, 0x0,  5, 14,  6, 0x0),\n    gsSPVertex(bowser_seg6_vertex_06043468, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  1,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06043648 - 0x06043698\nconst Gfx bowser_seg6_dl_06043648[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06025438),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_seg6_vertex_060434D8, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  6,  0,  5, 0x0),\n    gsSP1Triangle( 0,  2,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06043698 - 0x06043700\nconst Gfx bowser_seg6_dl_06043698[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_seg6_dl_06043548),\n    gsSPDisplayList(bowser_seg6_dl_06043648),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/bowser_flame/geo.inc.c",
    "content": "// 0x0D000000\nconst GeoLayout bowser_flames_geo[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_SWITCH_CASE(14, geo_switch_anim_state),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, flame_seg6_dl_0601C108),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, flame_seg6_dl_0601C1A8),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, flame_seg6_dl_0601C248),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, flame_seg6_dl_0601C2E8),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, flame_seg6_dl_0601C388),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, flame_seg6_dl_0601C428),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, flame_seg6_dl_0601C4C8),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, flame_seg6_dl_0601C568),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, flame_seg6_dl_0601C608),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, flame_seg6_dl_0601C6A8),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, flame_seg6_dl_0601C748),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, flame_seg6_dl_0601C7E8),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, flame_seg6_dl_0601C888),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, flame_seg6_dl_0601C928),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/bowser_flame/model.inc.c",
    "content": "// Bowser Flame\n\n// TODO: These 64x64 textures are referenced as two different texture addresses in the DLs\n\n// 0x06000000\nALIGNED8 static const Texture flame_seg6_texture_06000000[] = {\n#include \"actors/bowser_flame/bowser_flame_0.rgba16.inc.c\"\n};\n\n// 0x06002000\nALIGNED8 static const Texture flame_seg6_texture_06002000[] = {\n#include \"actors/bowser_flame/bowser_flame_1.rgba16.inc.c\"\n};\n\n// 0x06004000\nALIGNED8 static const Texture flame_seg6_texture_06004000[] = {\n#include \"actors/bowser_flame/bowser_flame_2.rgba16.inc.c\"\n};\n\n// 0x06006000\nALIGNED8 static const Texture flame_seg6_texture_06006000[] = {\n#include \"actors/bowser_flame/bowser_flame_3.rgba16.inc.c\"\n};\n\n// 0x06008000\nALIGNED8 static const Texture flame_seg6_texture_06008000[] = {\n#include \"actors/bowser_flame/bowser_flame_4.rgba16.inc.c\"\n};\n\n// 0x0600A000\nALIGNED8 static const Texture flame_seg6_texture_0600A000[] = {\n#include \"actors/bowser_flame/bowser_flame_5.rgba16.inc.c\"\n};\n\n// 0x0600C000\nALIGNED8 static const Texture flame_seg6_texture_0600C000[] = {\n#include \"actors/bowser_flame/bowser_flame_6.rgba16.inc.c\"\n};\n\n// 0x0600E000\nALIGNED8 static const Texture flame_seg6_texture_0600E000[] = {\n#include \"actors/bowser_flame/bowser_flame_7.rgba16.inc.c\"\n};\n\n// 0x06010000\nALIGNED8 static const Texture flame_seg6_texture_06010000[] = {\n#include \"actors/bowser_flame/bowser_flame_8.rgba16.inc.c\"\n};\n\n// 0x06012000\nALIGNED8 static const Texture flame_seg6_texture_06012000[] = {\n#include \"actors/bowser_flame/bowser_flame_9.rgba16.inc.c\"\n};\n\n// 0x06014000\nALIGNED8 static const Texture flame_seg6_texture_06014000[] = {\n#include \"actors/bowser_flame/bowser_flame_10.rgba16.inc.c\"\n};\n\n// 0x06016000\nALIGNED8 static const Texture flame_seg6_texture_06016000[] = {\n#include \"actors/bowser_flame/bowser_flame_11.rgba16.inc.c\"\n};\n\n// 0x06018000\nALIGNED8 static const Texture flame_seg6_texture_06018000[] = {\n#include \"actors/bowser_flame/bowser_flame_12.rgba16.inc.c\"\n};\n\n// 0x0601A000\nALIGNED8 static const Texture flame_seg6_texture_0601A000[] = {\n#include \"actors/bowser_flame/bowser_flame_13.rgba16.inc.c\"\n};\n\n// 0x0601C000\nstatic const Vtx flame_seg6_vertex_0601C000[] = {\n    {{{  -150,    150,      0}, 0, {     0,    992}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   150,    150,      0}, 0, {  2016,    992}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   150,    300,      0}, 0, {  2016,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -150,    300,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -150,      0,      0}, 0, {     0,    992}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   150,      0,      0}, 0, {  2016,    992}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   150,    150,      0}, 0, {  2016,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -150,    150,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0601C080 - 0x0601C0B0\nconst Gfx flame_seg6_dl_0601C080[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPGeometryMode(G_LIGHTING, G_SHADING_SMOOTH),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsSPEndDisplayList(),\n};\n\n// 0x0601C0B0 - 0x0601C0C8\nconst Gfx flame_seg6_dl_0601C0B0[] = {\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0601C0C8 - 0x0601C0E0\nconst Gfx flame_seg6_dl_0601C0C8[] = {\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0601C0E0 - 0x0601C108\nconst Gfx flame_seg6_dl_0601C0E0[] = {\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x0601C108 - 0x0601C1A8\nconst Gfx flame_seg6_dl_0601C108[] = {\n    gsSPDisplayList(flame_seg6_dl_0601C080),\n    gsDPLoadTextureBlock(flame_seg6_texture_06000000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(flame_seg6_vertex_0601C000, 8, 0),\n    gsSPDisplayList(flame_seg6_dl_0601C0B0),\n    gsDPLoadTextureBlock((u8*)flame_seg6_texture_06000000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPDisplayList(flame_seg6_dl_0601C0C8),\n    gsSPDisplayList(flame_seg6_dl_0601C0E0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0601C1A8 - 0x0601C248\nconst Gfx flame_seg6_dl_0601C1A8[] = {\n    gsSPDisplayList(flame_seg6_dl_0601C080),\n    gsDPLoadTextureBlock(flame_seg6_texture_06002000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(flame_seg6_vertex_0601C000, 8, 0),\n    gsSPDisplayList(flame_seg6_dl_0601C0B0),\n    gsDPLoadTextureBlock((u8*)flame_seg6_texture_06002000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPDisplayList(flame_seg6_dl_0601C0C8),\n    gsSPDisplayList(flame_seg6_dl_0601C0E0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0601C248 - 0x0601C2E8\nconst Gfx flame_seg6_dl_0601C248[] = {\n    gsSPDisplayList(flame_seg6_dl_0601C080),\n    gsDPLoadTextureBlock(flame_seg6_texture_06004000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(flame_seg6_vertex_0601C000, 8, 0),\n    gsSPDisplayList(flame_seg6_dl_0601C0B0),\n    gsDPLoadTextureBlock((u8*)flame_seg6_texture_06004000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPDisplayList(flame_seg6_dl_0601C0C8),\n    gsSPDisplayList(flame_seg6_dl_0601C0E0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0601C2E8 - 0x0601C388\nconst Gfx flame_seg6_dl_0601C2E8[] = {\n    gsSPDisplayList(flame_seg6_dl_0601C080),\n    gsDPLoadTextureBlock(flame_seg6_texture_06006000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(flame_seg6_vertex_0601C000, 8, 0),\n    gsSPDisplayList(flame_seg6_dl_0601C0B0),\n    gsDPLoadTextureBlock((u8*)flame_seg6_texture_06006000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPDisplayList(flame_seg6_dl_0601C0C8),\n    gsSPDisplayList(flame_seg6_dl_0601C0E0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0601C388 - 0x0601C428\nconst Gfx flame_seg6_dl_0601C388[] = {\n    gsSPDisplayList(flame_seg6_dl_0601C080),\n    gsDPLoadTextureBlock(flame_seg6_texture_06008000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(flame_seg6_vertex_0601C000, 8, 0),\n    gsSPDisplayList(flame_seg6_dl_0601C0B0),\n    gsDPLoadTextureBlock((u8*)flame_seg6_texture_06008000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPDisplayList(flame_seg6_dl_0601C0C8),\n    gsSPDisplayList(flame_seg6_dl_0601C0E0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0601C428 - 0x0601C4C8\nconst Gfx flame_seg6_dl_0601C428[] = {\n    gsSPDisplayList(flame_seg6_dl_0601C080),\n    gsDPLoadTextureBlock(flame_seg6_texture_0600A000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(flame_seg6_vertex_0601C000, 8, 0),\n    gsSPDisplayList(flame_seg6_dl_0601C0B0),\n    gsDPLoadTextureBlock((u8*)flame_seg6_texture_0600A000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPDisplayList(flame_seg6_dl_0601C0C8),\n    gsSPDisplayList(flame_seg6_dl_0601C0E0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0601C4C8 - 0x0601C568\nconst Gfx flame_seg6_dl_0601C4C8[] = {\n    gsSPDisplayList(flame_seg6_dl_0601C080),\n    gsDPLoadTextureBlock(flame_seg6_texture_0600C000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(flame_seg6_vertex_0601C000, 8, 0),\n    gsSPDisplayList(flame_seg6_dl_0601C0B0),\n    gsDPLoadTextureBlock((u8*)flame_seg6_texture_0600C000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPDisplayList(flame_seg6_dl_0601C0C8),\n    gsSPDisplayList(flame_seg6_dl_0601C0E0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0601C568 - 0x0601C608\nconst Gfx flame_seg6_dl_0601C568[] = {\n    gsSPDisplayList(flame_seg6_dl_0601C080),\n    gsDPLoadTextureBlock(flame_seg6_texture_0600E000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(flame_seg6_vertex_0601C000, 8, 0),\n    gsSPDisplayList(flame_seg6_dl_0601C0B0),\n    gsDPLoadTextureBlock((u8*)flame_seg6_texture_0600E000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPDisplayList(flame_seg6_dl_0601C0C8),\n    gsSPDisplayList(flame_seg6_dl_0601C0E0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0601C608 - 0x0601C6A8\nconst Gfx flame_seg6_dl_0601C608[] = {\n    gsSPDisplayList(flame_seg6_dl_0601C080),\n    gsDPLoadTextureBlock(flame_seg6_texture_06010000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(flame_seg6_vertex_0601C000, 8, 0),\n    gsSPDisplayList(flame_seg6_dl_0601C0B0),\n    gsDPLoadTextureBlock((u8*)flame_seg6_texture_06010000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPDisplayList(flame_seg6_dl_0601C0C8),\n    gsSPDisplayList(flame_seg6_dl_0601C0E0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0601C6A8 - 0x0601C748\nconst Gfx flame_seg6_dl_0601C6A8[] = {\n    gsSPDisplayList(flame_seg6_dl_0601C080),\n    gsDPLoadTextureBlock(flame_seg6_texture_06012000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(flame_seg6_vertex_0601C000, 8, 0),\n    gsSPDisplayList(flame_seg6_dl_0601C0B0),\n    gsDPLoadTextureBlock((u8*)flame_seg6_texture_06012000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPDisplayList(flame_seg6_dl_0601C0C8),\n    gsSPDisplayList(flame_seg6_dl_0601C0E0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0601C748 - 0x0601C7E8\nconst Gfx flame_seg6_dl_0601C748[] = {\n    gsSPDisplayList(flame_seg6_dl_0601C080),\n    gsDPLoadTextureBlock(flame_seg6_texture_06014000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(flame_seg6_vertex_0601C000, 8, 0),\n    gsSPDisplayList(flame_seg6_dl_0601C0B0),\n    gsDPLoadTextureBlock((u8*)flame_seg6_texture_06014000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPDisplayList(flame_seg6_dl_0601C0C8),\n    gsSPDisplayList(flame_seg6_dl_0601C0E0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0601C7E8 - 0x0601C888\nconst Gfx flame_seg6_dl_0601C7E8[] = {\n    gsSPDisplayList(flame_seg6_dl_0601C080),\n    gsDPLoadTextureBlock(flame_seg6_texture_06016000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(flame_seg6_vertex_0601C000, 8, 0),\n    gsSPDisplayList(flame_seg6_dl_0601C0B0),\n    gsDPLoadTextureBlock((u8*)flame_seg6_texture_06016000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPDisplayList(flame_seg6_dl_0601C0C8),\n    gsSPDisplayList(flame_seg6_dl_0601C0E0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0601C888 - 0x0601C928\nconst Gfx flame_seg6_dl_0601C888[] = {\n    gsSPDisplayList(flame_seg6_dl_0601C080),\n    gsDPLoadTextureBlock(flame_seg6_texture_06018000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(flame_seg6_vertex_0601C000, 8, 0),\n    gsSPDisplayList(flame_seg6_dl_0601C0B0),\n    gsDPLoadTextureBlock((u8*)flame_seg6_texture_06018000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPDisplayList(flame_seg6_dl_0601C0C8),\n    gsSPDisplayList(flame_seg6_dl_0601C0E0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0601C928 - 0x0601C9C8\nconst Gfx flame_seg6_dl_0601C928[] = {\n    gsSPDisplayList(flame_seg6_dl_0601C080),\n    gsDPLoadTextureBlock(flame_seg6_texture_0601A000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(flame_seg6_vertex_0601C000, 8, 0),\n    gsSPDisplayList(flame_seg6_dl_0601C0B0),\n    gsDPLoadTextureBlock((u8*)flame_seg6_texture_0601A000 + 0x1000, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPDisplayList(flame_seg6_dl_0601C0C8),\n    gsSPDisplayList(flame_seg6_dl_0601C0E0),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/bowser_key/anims/anim_course_exit.inc.c",
    "content": "// 0x03016530\nstatic const s16 bowser_key_seg3_animvalue_course_exit[] = {\n    0x0000, 0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9,\n    0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9,\n    0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9,\n    0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9,\n    0xFFF9, 0xFFF9, 0xFFEF, 0xFFD6, 0xFFBA, 0xFFA6, 0xFFA6, 0xFFAA,\n    0xFFA5, 0xFF9C, 0xFF89, 0xFF77, 0xFF64, 0xFF53, 0xFF43, 0xFF3E,\n    0xFF43, 0xFF4A, 0xFF4C, 0xFF4F, 0xFF53, 0xFF58, 0xFF5B, 0xFF5B,\n    0xFF5C, 0xFF5C, 0xFF5B, 0xFF5A, 0xFF57, 0xFF4B, 0xFF3C, 0xFF3B,\n    0xFF41, 0xFF25, 0xFF2B, 0xFF41, 0xFF53, 0xFF68, 0xFF85, 0xFFA5,\n    0xFFC4, 0xFFE1, 0xFFFE, 0x001A, 0x0037, 0x0054, 0x006E, 0x0084,\n    0x0098, 0x00A8, 0x00B6, 0x00C3, 0x00CD, 0x00D7, 0x00D4, 0x00C1,\n    0x00AF, 0x00A7, 0x00BE, 0x00BF, 0x00D4, 0x00E8, 0x00EA, 0x00E4,\n    0x00DD, 0x00D6, 0x00CF, 0x00C8, 0x00C0, 0x00B5, 0x00A9, 0x009E,\n    0x0090, 0x008C, 0x0084, 0x0070, 0x0057, 0x003E, 0x002A, 0x0020,\n    0x001C, 0x0019, 0x0015, 0x0012, 0x0010, 0x000D, 0x000B, 0x0009,\n    0x0008, 0x0006, 0x0005, 0x0004, 0x0003, 0x0002, 0x0001, 0x0001,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0104, 0x0104, 0x0104,\n    0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104,\n    0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104,\n    0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104,\n    0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0104, 0x0108, 0x0112,\n    0x0121, 0x0133, 0x0153, 0x017D, 0x01A6, 0x01C8, 0x01C0, 0x01BC,\n    0x01B8, 0x01B4, 0x01B0, 0x01AA, 0x01AB, 0x01AB, 0x01A0, 0x019C,\n    0x019B, 0x01A2, 0x01A5, 0x01A7, 0x01A8, 0x01AA, 0x01AB, 0x01AA,\n    0x01A5, 0x0192, 0x0175, 0x015B, 0x014E, 0x017A, 0x01D8, 0x023E,\n    0x02A3, 0x030D, 0x037F, 0x03E4, 0x0427, 0x044F, 0x0461, 0x0463,\n    0x044F, 0x0426, 0x03E9, 0x0399, 0x033A, 0x02CC, 0x0255, 0x01DB,\n    0x0162, 0x00F0, 0x00D2, 0x00BE, 0x00AD, 0x00A3, 0x00A2, 0x00B8,\n    0x00C6, 0x00D5, 0x00E6, 0x00F5, 0x0103, 0x0110, 0x011F, 0x012E,\n    0x0159, 0x0161, 0x0164, 0x0173, 0x016E, 0x0178, 0x0179, 0x0163,\n    0x0145, 0x0127, 0x010E, 0x0101, 0x00FD, 0x00FA, 0x00F7, 0x00F5,\n    0x00F3, 0x00F1, 0x00F0, 0x00EF, 0x00EE, 0x00ED, 0x00ED, 0x00ED,\n    0x00ED, 0x00ED, 0x00ED, 0x00EE, 0x00EE, 0x00EF, 0x00EF, 0x00F0,\n    0x00F1, 0x00F2, 0x00F2, 0x00F3, 0x00F4, 0x00F4, 0x00F5, 0x00F5,\n    0x00F5, 0x001E, 0x001E, 0x001E, 0x001E, 0x001E, 0x001E, 0x001E,\n    0x001E, 0x001E, 0x001E, 0x001E, 0x001E, 0x001E, 0x001E, 0x001E,\n    0x001E, 0x001E, 0x001E, 0x001E, 0x001E, 0x001E, 0x001E, 0x001E,\n    0x001E, 0x001E, 0x001E, 0x001E, 0x001E, 0x001E, 0x001E, 0x001E,\n    0x001E, 0x001E, 0x002A, 0x0044, 0x005F, 0x006E, 0x005B, 0x0038,\n    0x0016, 0xFFF3, 0xFFC6, 0xFFB5, 0xFFA7, 0xFF9C, 0xFF92, 0xFF9A,\n    0xFFA3, 0xFFAB, 0xFFAE, 0xFFAC, 0xFFAA, 0xFFA6, 0xFFA6, 0xFFA6,\n    0xFFA5, 0xFFA5, 0xFFA6, 0xFFA8, 0xFFAC, 0xFFBC, 0xFFD4, 0xFFF3,\n    0xFFF7, 0xFFD9, 0xFF95, 0xFF9F, 0xFFB3, 0xFFCA, 0xFFDE, 0xFFEB,\n    0xFFF5, 0xFFFE, 0x0005, 0x000C, 0x0010, 0x0013, 0x0015, 0x001B,\n    0x0024, 0x002F, 0x003B, 0x0047, 0x0053, 0x005D, 0x0067, 0x0071,\n    0x007B, 0x007C, 0x005D, 0x0057, 0x0044, 0x002E, 0x001F, 0x0026,\n    0x0036, 0x0047, 0x0059, 0x0067, 0x006E, 0x0063, 0x0052, 0x0044,\n    0x004F, 0x004C, 0x0049, 0x004A, 0x004C, 0x004F, 0x0051, 0x0051,\n    0x0050, 0x004E, 0x004D, 0x004B, 0x004A, 0x0048, 0x0046, 0x0044,\n    0x0042, 0x0040, 0x003E, 0x003C, 0x003A, 0x0038, 0x0036, 0x0034,\n    0x0032, 0x0030, 0x002E, 0x002D, 0x002B, 0x002A, 0x0028, 0x0027,\n    0x0026, 0x0026, 0x0025, 0x0025, 0x0025, 0x0043, 0x0043, 0x0043,\n    0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043,\n    0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043,\n    0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043,\n    0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0x0043, 0xF625, 0xE13A,\n    0xCFAC, 0xC645, 0xC5B6, 0xD02D, 0xDF2E, 0xEDBE, 0xF6E4, 0xF82B,\n    0xF49A, 0xEF74, 0xEBFA, 0xEB00, 0xEB11, 0xEC03, 0xEFAB, 0xF2A2,\n    0xF25E, 0xF1BD, 0xF0D5, 0xEFBF, 0xEE94, 0xED6B, 0xEC5C, 0xEB80,\n    0xEB77, 0xEB52, 0xEA23, 0xE7A9, 0xE0B3, 0xFAF2, 0x033B, 0x03BB,\n    0x0428, 0x0483, 0x04CE, 0x050B, 0x053B, 0x0560, 0x057C, 0x0590,\n    0x059E, 0x05A7, 0x05AE, 0x05B4, 0x05BA, 0x05C3, 0x05CF, 0x05E1,\n    0x05FA, 0x061C, 0x0649, 0x069D, 0x071C, 0x079B, 0x07F0, 0x08A2,\n    0x0748, 0x028B, 0xFC9E, 0xF6DB, 0xF2A1, 0xF001, 0xED7B, 0xEA10,\n    0xE1D6, 0xE57A, 0xEB26, 0xF08C, 0xF35C, 0xF41A, 0xF4D1, 0xF582,\n    0xF62D, 0xF6D2, 0xF770, 0xF809, 0xF89B, 0xF927, 0xF9AE, 0xFA2E,\n    0xFAA9, 0xFB1E, 0xFB8D, 0xFBF7, 0xFC5B, 0xFCBA, 0xFD13, 0xFD67,\n    0xFDB6, 0xFDFF, 0xFE43, 0xFE82, 0xFEBC, 0xFEF1, 0xFF21, 0xFF4D,\n    0xFF73, 0xFF95, 0xFFB2, 0xFFCA, 0xFFDE, 0xFFED, 0xFFF8, 0xFFFE,\n    0x0000, 0x00C5, 0x00C5, 0x00C5, 0x00C5, 0x00C5, 0x00C5, 0x00C5,\n    0x00C5, 0x00C5, 0x00C5, 0x00C5, 0x00C5, 0x00C5, 0x00C5, 0x00C5,\n    0x00C5, 0x00C5, 0x00C5, 0x00C5, 0x00C5, 0x00C5, 0x00C5, 0x00C5,\n    0x00C5, 0x00C5, 0x00C5, 0x00C5, 0x00C5, 0x00C5, 0x00C5, 0x00C5,\n    0x00C5, 0x00C5, 0x068D, 0x1114, 0x161F, 0x09DC, 0xFAF2, 0xF65F,\n    0xF437, 0xF298, 0xEF9E, 0xE9D0, 0xE283, 0xDC08, 0xD8AF, 0xDB42,\n    0xE208, 0xE88D, 0xEDC0, 0xF13C, 0xF296, 0xF3B0, 0xF495, 0xF550,\n    0xF5EC, 0xF673, 0xF6EF, 0xF76C, 0xF6C5, 0xF643, 0xF84A, 0xFA95,\n    0xFA3A, 0xFEF8, 0xF54C, 0xF4F2, 0xF4B1, 0xF485, 0xF46D, 0xF467,\n    0xF471, 0xF488, 0xF4AA, 0xF4D4, 0xF506, 0xF53D, 0xF575, 0xF5AF,\n    0xF5E6, 0xF619, 0xF646, 0xF66B, 0xF685, 0xF693, 0xF692, 0xF649,\n    0xF5A8, 0xF4EC, 0xF44D, 0xF408, 0xF457, 0xF59C, 0xF7CD, 0xFA82,\n    0xFD52, 0x0050, 0x03BF, 0x0778, 0x0CA0, 0x0DE8, 0x0EBC, 0x0F1B,\n    0x0F04, 0x0EAF, 0x0E52, 0x0DED, 0x0D81, 0x0D0F, 0x0C97, 0x0C1A,\n    0x0B98, 0x0B13, 0x0A8A, 0x09FE, 0x0971, 0x08E2, 0x0852, 0x07C2,\n    0x0732, 0x06A3, 0x0616, 0x058C, 0x0504, 0x047F, 0x03FF, 0x0383,\n    0x030D, 0x029C, 0x0233, 0x01D0, 0x0175, 0x0122, 0x00D9, 0x0099,\n    0x0063, 0x0039, 0x0019, 0x0006, 0x0000, 0xCD0C, 0xCD0C, 0xCD0C,\n    0xCD0C, 0xCD0C, 0xCD0C, 0xCD0C, 0xCD0C, 0xCD0C, 0xCD0C, 0xCD0C,\n    0xCD0C, 0xCD0C, 0xCD0C, 0xCD0C, 0xCD0C, 0xCD0C, 0xCD0C, 0xCD0C,\n    0xCD0C, 0xCD0C, 0xCD0C, 0xCD0C, 0xCD0C, 0xCD0C, 0xCD0C, 0xCD0C,\n    0xCD0C, 0xCD0C, 0xCD0C, 0xCD0C, 0xCD0C, 0xCD0C, 0xBF49, 0xA435,\n    0x9122, 0x9756, 0xA330, 0xA4E1, 0xA48B, 0xA3FC, 0xA501, 0xA8C0,\n    0xAE0A, 0xB32E, 0xB67A, 0xB62B, 0xB395, 0xB1A9, 0xB267, 0xB36D,\n    0xB347, 0xB2F4, 0xB287, 0xB210, 0xB1A4, 0xB152, 0xB12E, 0xB149,\n    0xB2C9, 0xB5F6, 0xBB50, 0xBFAD, 0xBACF, 0xBA05, 0xBC07, 0xC1FA,\n    0xC816, 0xCE55, 0xD4B0, 0xDB22, 0xE1A3, 0xE82D, 0xEEBB, 0xF544,\n    0xFBC3, 0x0231, 0x0889, 0x0EC4, 0x14DB, 0x1AC8, 0x2084, 0x2609,\n    0x2B50, 0x3054, 0x350E, 0x3820, 0x38BD, 0x37B4, 0x35D7, 0x33F5,\n    0x32DD, 0x3219, 0x3114, 0x306F, 0x30CC, 0x32F6, 0x368C, 0x3A6B,\n    0x3F5C, 0x4190, 0x4385, 0x44F1, 0x4586, 0x4594, 0x459C, 0x459E,\n    0x459B, 0x4594, 0x4588, 0x4578, 0x4564, 0x454C, 0x4531, 0x4513,\n    0x44F3, 0x44D0, 0x44AB, 0x4485, 0x445D, 0x4434, 0x440A, 0x43E0,\n    0x43B5, 0x438B, 0x4361, 0x4338, 0x4310, 0x42EA, 0x42C5, 0x42A2,\n    0x4282, 0x4264, 0x4249, 0x4232, 0x421E, 0x420E, 0x4202, 0x41FA,\n    0x41F8, 0x0000,\n};\n\n// 0x03016BC4\nstatic const u16 bowser_key_seg3_animindex_course_exit[] = {\n    0x008C, 0x0001, 0x008C, 0x008D, 0x008C, 0x0119, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x008C, 0x01A5, 0x008C, 0x0231, 0x008C, 0x02BD,\n};\n\n// 0x03016BE8\nstatic const struct Animation bowser_key_seg3_anim_course_exit = {\n    1,\n    0,\n    0,\n    0,\n    0x8C,\n    ANIMINDEX_NUMPARTS(bowser_key_seg3_animindex_course_exit),\n    bowser_key_seg3_animvalue_course_exit,\n    bowser_key_seg3_animindex_course_exit,\n    0,\n};\n"
  },
  {
    "path": "actors/bowser_key/anims/anim_unlock_door.inc.c",
    "content": "// 0x03016C00\nstatic const s16 bowser_key_seg3_animvalue_unlock_door[] = {\n    0x0000, 0xFFE6, 0xFFE6, 0xFFE6, 0xFFE6, 0xFFE6, 0xFFE6, 0xFFE6,\n    0xFFE6, 0xFFE6, 0xFFE6, 0xFFE6, 0xFFE6, 0xFFE6, 0xFFE6, 0xFFE6,\n    0xFFE6, 0xFFE6, 0xFFE6, 0xFFE6, 0xFFE6, 0xFFE6, 0xFFE6, 0xFFE6,\n    0xFFE6, 0xFFE6, 0xFFE6, 0xFFE6, 0xFFE6, 0xFFE6, 0xFFE6, 0xFFE6,\n    0xFFE6, 0xFFE6, 0xFFE6, 0xFFE6, 0xFFE6, 0xFFE6, 0xFFE6, 0xFFE6,\n    0xFFE6, 0xFFE6, 0xFFE6, 0xFFE6, 0xFFE6, 0xFFE6, 0xFFE6, 0xFFE6,\n    0xFFDE, 0xFFC9, 0xFFAC, 0xFF8C, 0xFF6D, 0xFF55, 0xFF47, 0xFF3F,\n    0xFF39, 0xFF31, 0xFF2C, 0xFF28, 0xFF24, 0xFF20, 0xFF1D, 0xFF1A,\n    0xFF19, 0xFF1A, 0xFF20, 0xFF29, 0xFF35, 0xFF40, 0xFF47, 0xFF46,\n    0xFF40, 0xFF42, 0xFF53, 0xFF6C, 0xFF86, 0xFFA0, 0xFFB8, 0xFFCD,\n    0xFFE1, 0xFFF3, 0x0000, 0x0004, 0x0002, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00EF, 0x00EF, 0x00EF,\n    0x00EF, 0x00EF, 0x00EF, 0x00EF, 0x00EF, 0x00EF, 0x00EF, 0x00EF,\n    0x00EF, 0x00EF, 0x00EF, 0x00EF, 0x00EF, 0x00EF, 0x00EF, 0x00EF,\n    0x00EF, 0x00EF, 0x00EF, 0x00EF, 0x00EF, 0x00EF, 0x00EF, 0x00EF,\n    0x00EF, 0x00EF, 0x00EF, 0x00EF, 0x00EF, 0x00EF, 0x00EF, 0x00EF,\n    0x00EF, 0x00EF, 0x00EF, 0x00EF, 0x00EF, 0x00EF, 0x00EF, 0x00EF,\n    0x00EF, 0x00EF, 0x00EF, 0x00EF, 0x00F5, 0x0105, 0x011C, 0x0136,\n    0x014E, 0x0163, 0x0172, 0x017F, 0x0187, 0x0185, 0x017A, 0x016B,\n    0x015B, 0x014B, 0x013A, 0x0128, 0x0116, 0x0104, 0x00F0, 0x00D9,\n    0x00C2, 0x00B0, 0x00A5, 0x00A2, 0x00AE, 0x00D8, 0x012E, 0x01A3,\n    0x0214, 0x0282, 0x02D0, 0x02EC, 0x02F6, 0x02F9, 0x02FC, 0x02FE,\n    0x02FD, 0x02FC, 0x02FC, 0x02FC, 0x02FC, 0x02FC, 0x02FC, 0x02FC,\n    0x02FC, 0x02FC, 0x02FC, 0x02FC, 0x02FC, 0x02FC, 0x02FC, 0x02FC,\n    0x02FC, 0x02FC, 0x02FC, 0x02FC, 0x02FC, 0x02FC, 0x02FC, 0x02FC,\n    0x02FC, 0x02FC, 0x02FC, 0x02FC, 0x02FC, 0x02FC, 0x02FC, 0x02FC,\n    0x02FC, 0x02FC, 0x02FC, 0x02FC, 0x02FC, 0x02FC, 0x02FC, 0x02FC,\n    0x02FC, 0x02FC, 0x02FC, 0x02FC, 0x02FC, 0x02FC, 0x02FC, 0x02FC,\n    0x02FC, 0x02FC, 0x02FC, 0x02FC, 0x02FC, 0x02FC, 0x02FC, 0x02FC,\n    0x02FC, 0xFE78, 0xFE78, 0xFE78, 0xFE78, 0xFE78, 0xFE78, 0xFE78,\n    0xFE78, 0xFE78, 0xFE78, 0xFE78, 0xFE78, 0xFE78, 0xFE78, 0xFE78,\n    0xFE78, 0xFE78, 0xFE78, 0xFE78, 0xFE78, 0xFE78, 0xFE78, 0xFE78,\n    0xFE78, 0xFE78, 0xFE78, 0xFE78, 0xFE78, 0xFE78, 0xFE78, 0xFE78,\n    0xFE78, 0xFE78, 0xFE78, 0xFE78, 0xFE78, 0xFE78, 0xFE78, 0xFE78,\n    0xFE78, 0xFE7A, 0xFE81, 0xFE89, 0xFE92, 0xFE9A, 0xFEA0, 0xFEA2,\n    0xFEA3, 0xFEA2, 0xFEA1, 0xFE9F, 0xFE9B, 0xFE94, 0xFE86, 0xFE6F,\n    0xFE5B, 0xFE4B, 0xFE41, 0xFE3B, 0xFE34, 0xFE2E, 0xFE29, 0xFE26,\n    0xFE26, 0xFE2A, 0xFE37, 0xFE4D, 0xFE66, 0xFE7D, 0xFE8C, 0xFE8D,\n    0xFE83, 0xFE72, 0xFE55, 0xFE32, 0xFE1F, 0xFE33, 0xFE62, 0xFE9D,\n    0xFEE0, 0xFF1E, 0xFF4B, 0xFF55, 0xFF47, 0xFF3B, 0xFF3B, 0xFF3B,\n    0xFF3B, 0xFF3B, 0xFF3B, 0xFF3B, 0xFF3B, 0xFF3B, 0xFF3B, 0xFF3B,\n    0xFF3B, 0xFF3B, 0xFF3B, 0xFF3B, 0xFF3B, 0xFF3B, 0xFF3B, 0xFF3B,\n    0xFF3B, 0xFF3B, 0xFF3B, 0xFF3B, 0xFF3B, 0xFF3B, 0xFF3B, 0xFF3B,\n    0xFF3B, 0xFF3B, 0xFF3B, 0xFF3B, 0xFF3B, 0xFF3B, 0xFF3B, 0xFF3B,\n    0xFF3B, 0xFF3B, 0xFF3B, 0xFF3B, 0xFF3B, 0xFF3B, 0xFF3B, 0xFF3B,\n    0xFF3B, 0xFF3B, 0xFF3B, 0xFF3B, 0xFF3B, 0xFF3B, 0xFF3B, 0xFF3B,\n    0xFF3B, 0xFF3B, 0xFF3B, 0xFF3B, 0xFF3B, 0x8461, 0x8461, 0x8461,\n    0x8461, 0x8461, 0x8461, 0x8461, 0x8461, 0x8461, 0x8461, 0x8461,\n    0x8461, 0x8461, 0x8461, 0x8461, 0x8461, 0x8461, 0x8461, 0x8461,\n    0x8461, 0x8461, 0x8461, 0x8461, 0x8461, 0x8461, 0x8461, 0x8461,\n    0x8461, 0x8461, 0x8461, 0x8461, 0x8461, 0x8461, 0x8461, 0x8461,\n    0x8461, 0x8461, 0x8461, 0x8461, 0x8461, 0x8461, 0x8461, 0x8461,\n    0x8461, 0x8461, 0x8461, 0x8461, 0x82B3, 0x7E2F, 0x77A9, 0x6FEC,\n    0x67C7, 0x6008, 0x57E7, 0x4E25, 0x42DE, 0x3065, 0x2408, 0x24C3,\n    0x2662, 0x28C0, 0x2BB3, 0x2F16, 0x32C1, 0x368D, 0x3A53, 0x3DEB,\n    0x412E, 0x43F5, 0x4619, 0x46FC, 0x467E, 0x4535, 0x43B8, 0x429D,\n    0x4279, 0x43E4, 0x4773, 0x5289, 0x64E7, 0x76AE, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x7EA0, 0x7CB4, 0x7A53, 0x7792, 0x748A, 0x7151,\n    0x6DFE, 0x6AA7, 0x6765, 0x644D, 0x6177, 0x5EFA, 0x5EEA, 0x5FFF,\n    0x5FFF, 0x5FFF, 0x5FFF, 0x5FFF, 0x5FFF, 0x5FFF, 0x5FFF, 0x5FFF,\n    0x5FFF, 0x5FFF, 0x5FFF, 0x5FFF, 0x5FFF, 0x5FFF, 0x5FFF, 0x5FFF,\n    0x5FFF, 0x5FFF, 0x5FFF, 0x5FFF, 0x5FFF, 0x5FFF, 0x5FFF, 0x5FFF,\n    0x5FFF, 0xF473, 0xF473, 0xF473, 0xF473, 0xF473, 0xF473, 0xF473,\n    0xF473, 0xF473, 0xF473, 0xF473, 0xF473, 0xF473, 0xF473, 0xF473,\n    0xF473, 0xF473, 0xF473, 0xF473, 0xF473, 0xF473, 0xF473, 0xF473,\n    0xF473, 0xF473, 0xF473, 0xF473, 0xF473, 0xF473, 0xF473, 0xF473,\n    0xF473, 0xF473, 0xF473, 0xF473, 0xF473, 0xF473, 0xF473, 0xF473,\n    0xF473, 0xF473, 0xF473, 0xF473, 0xF473, 0xF473, 0xF473, 0xF473,\n    0xF586, 0xF816, 0xFB27, 0xFDBC, 0xFED8, 0xFD7F, 0xF39B, 0xE3D3,\n    0xDA4B, 0xE562, 0xF1AA, 0xF159, 0xF06D, 0xEEFF, 0xED25, 0xEAF8,\n    0xE891, 0xE606, 0xE371, 0xE0E8, 0xDE85, 0xDC60, 0xDA8F, 0xD92A,\n    0xD820, 0xD74C, 0xD689, 0xD5B3, 0xD4A6, 0xD33C, 0xD152, 0xCD83,\n    0xC7EF, 0xC2B8, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001,\n    0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001,\n    0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001,\n    0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001,\n    0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001,\n    0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001,\n    0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001,\n    0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xED15, 0xED15, 0xED15,\n    0xED15, 0xED15, 0xED15, 0xED15, 0xED15, 0xED15, 0xED15, 0xED15,\n    0xED15, 0xED15, 0xED15, 0xED15, 0xED15, 0xED15, 0xED15, 0xED15,\n    0xED15, 0xED15, 0xED15, 0xED15, 0xED15, 0xED15, 0xED15, 0xED15,\n    0xED15, 0xED15, 0xED15, 0xED15, 0xED15, 0xED15, 0xED15, 0xED15,\n    0xED15, 0xED15, 0xED15, 0xED15, 0xED15, 0xED15, 0xED15, 0xED15,\n    0xED15, 0xED15, 0xED15, 0xED15, 0xEC6B, 0xEB03, 0xE9B9, 0xE96B,\n    0xEAF7, 0xEF3A, 0xFB03, 0x0E30, 0x2241, 0x3A83, 0x4AE1, 0x4D0F,\n    0x4E8C, 0x4F6A, 0x4FB8, 0x4F88, 0x4EEA, 0x4DF0, 0x4CA9, 0x4B28,\n    0x497C, 0x47B7, 0x45E9, 0x43D7, 0x413A, 0x3E16, 0x3A6F, 0x3646,\n    0x31A0, 0x2C7F, 0x26E7, 0x1DDD, 0x1162, 0x05F0, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xFEA2, 0xFCB6, 0xFA55, 0xF794, 0xF48C, 0xF153,\n    0xEE00, 0xEAA9, 0xE767, 0xE44F, 0xE179, 0xDEFC, 0xDEEC, 0xE001,\n    0xE001, 0xE001, 0xE001, 0xE001, 0xE001, 0xE001, 0xE001, 0xE001,\n    0xE001, 0xE001, 0xE001, 0xE001, 0xE001, 0xE001, 0xE001, 0xE001,\n    0xE001, 0xE001, 0xE001, 0xE001, 0xE001, 0xE001, 0xE001, 0xE001,\n    0xE001, 0x0000,\n};\n\n// 0x03017294\nstatic const u16 bowser_key_seg3_animindex_unlock_door[] = {\n    0x008C, 0x0001, 0x008C, 0x008D, 0x008C, 0x0119, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x008C, 0x01A5, 0x008C, 0x0231, 0x008C, 0x02BD,\n};\n\n// 0x030172B8\nstatic const struct Animation bowser_key_seg3_anim_unlock_door = {\n    1,\n    0,\n    0,\n    0,\n    0x8C,\n    ANIMINDEX_NUMPARTS(bowser_key_seg3_animindex_unlock_door),\n    bowser_key_seg3_animvalue_unlock_door,\n    bowser_key_seg3_animindex_unlock_door,\n    0,\n};\n"
  },
  {
    "path": "actors/bowser_key/anims/data.inc.c",
    "content": "#include \"anim_course_exit.inc.c\"\n#include \"anim_unlock_door.inc.c\"\n"
  },
  {
    "path": "actors/bowser_key/anims/table.inc.c",
    "content": "// 0x030172D0\nconst struct Animation *const bowser_key_seg3_anims_list[] = {\n    &bowser_key_seg3_anim_unlock_door, // id 0\n    &bowser_key_seg3_anim_course_exit, // id 1\n};\n"
  },
  {
    "path": "actors/bowser_key/geo.inc.c",
    "content": "// 0x16000A84\nconst GeoLayout bowser_key_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x9B, 300),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 65536),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, bowser_key_dl),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x16000AB0\nconst GeoLayout bowser_key_cutscene_geo[] = {\n    GEO_SCALE(0x00, 16384),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ASM(0, geo_scale_bowser_key),\n                GEO_SCALE(0x00, 65536),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, bowser_key_dl),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(), //! more close than open nodes\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/bowser_key/model.inc.c",
    "content": "// Bowser Key\n\n// 0x030156E0, ambient color brown - light color orange\nstatic const Lights1 bowser_key_lights = gdSPDefLights1(\n    0x3f, 0x2c, 0x00,\n    0xff, 0xb2, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x030156F8\nstatic const Vtx bowser_key_dl_vertex_group1[] = {\n    {{{   219,     22,    -17}, 0, {     0,      0}, {0x88, 0x26, 0x00, 0x00}}},\n    {{{   219,     22,     17}, 0, {     0,      0}, {0x88, 0x26, 0x00, 0x00}}},\n    {{{   230,     57,      7}, 0, {     0,      0}, {0x88, 0x26, 0x00, 0x00}}},\n    {{{   230,     57,     -7}, 0, {     0,      0}, {0x88, 0x26, 0x00, 0xff}}},\n    {{{   257,     22,     17}, 0, {     0,      0}, {0x7b, 0x1c, 0x00, 0xff}}},\n    {{{   257,     22,    -17}, 0, {     0,      0}, {0x7b, 0x1c, 0x00, 0xff}}},\n    {{{   249,     57,     -7}, 0, {     0,      0}, {0x7b, 0x1c, 0x00, 0xff}}},\n    {{{   249,     57,      7}, 0, {     0,      0}, {0x7b, 0x1c, 0x00, 0xff}}},\n    {{{   257,     22,    -17}, 0, {     0,      0}, {0x00, 0x23, 0x87, 0xff}}},\n    {{{   219,     22,    -17}, 0, {     0,      0}, {0x00, 0x23, 0x87, 0xff}}},\n    {{{   230,     57,     -7}, 0, {     0,      0}, {0x00, 0x23, 0x87, 0xff}}},\n    {{{   249,     57,     -7}, 0, {     0,      0}, {0x00, 0x23, 0x87, 0xff}}},\n    {{{   219,     22,     17}, 0, {     0,      0}, {0x00, 0x23, 0x79, 0xff}}},\n    {{{   257,     22,     17}, 0, {     0,      0}, {0x00, 0x23, 0x79, 0xff}}},\n    {{{   249,     57,      7}, 0, {     0,      0}, {0x00, 0x23, 0x79, 0xff}}},\n    {{{   230,     57,      7}, 0, {     0,      0}, {0x00, 0x23, 0x79, 0xff}}},\n};\n\n// 0x030157F8\nstatic const Vtx bowser_key_dl_vertex_group2[] = {\n    {{{   230,     57,      7}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   249,     57,      7}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   249,     57,     -7}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   230,     57,     -7}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   272,     22,    -17}, 0, {     0,      0}, {0x87, 0x23, 0x00, 0xff}}},\n    {{{   272,     22,     17}, 0, {     0,      0}, {0x87, 0x23, 0x00, 0xff}}},\n    {{{   285,     70,      9}, 0, {     0,      0}, {0x87, 0x23, 0x00, 0xff}}},\n    {{{   285,     70,     -9}, 0, {     0,      0}, {0x87, 0x23, 0x00, 0xff}}},\n    {{{   317,     22,    -17}, 0, {     0,      0}, {0x00, 0x16, 0x84, 0xff}}},\n    {{{   272,     22,    -17}, 0, {     0,      0}, {0x00, 0x16, 0x84, 0xff}}},\n    {{{   285,     70,     -9}, 0, {     0,      0}, {0x00, 0x16, 0x84, 0xff}}},\n    {{{   318,     70,     -9}, 0, {     0,      0}, {0x00, 0x16, 0x84, 0xff}}},\n    {{{   317,     22,     17}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   317,     22,    -17}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   318,     70,     -9}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   318,     70,      9}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x030158F8\nstatic const Vtx bowser_key_dl_vertex_group3[] = {\n    {{{   272,     22,     17}, 0, {     0,      0}, {0x00, 0x16, 0x7c, 0xff}}},\n    {{{   317,     22,     17}, 0, {     0,      0}, {0x00, 0x16, 0x7c, 0x00}}},\n    {{{   318,     70,      9}, 0, {     0,      0}, {0x00, 0x16, 0x7c, 0x00}}},\n    {{{   285,     70,      9}, 0, {     0,      0}, {0x00, 0x16, 0x7c, 0xff}}},\n    {{{   272,     22,    -17}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   131,     22,    -17}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   131,     22,     17}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   272,     22,     17}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   317,     22,    -17}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   317,     22,     17}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   317,    -22,     17}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   317,    -22,    -17}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   285,     70,      9}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   318,     70,      9}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   318,     70,     -9}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   285,     70,     -9}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x030159F8\nstatic const Vtx bowser_key_dl_vertex_group4[] = {\n    {{{   317,    -22,    -17}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   317,    -22,     17}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{   131,    -22,     17}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{   131,    -22,    -17}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   130,     41,    -53}, 0, {     0,      0}, {0x78, 0x28, 0x00, 0xff}}},\n    {{{    92,    113,    -34}, 0, {     0,      0}, {0x70, 0x3b, 0x00, 0xff}}},\n    {{{    92,    113,     34}, 0, {     0,      0}, {0x70, 0x3b, 0x00, 0xff}}},\n    {{{   130,     41,     53}, 0, {     0,      0}, {0x7d, 0x14, 0x00, 0xff}}},\n    {{{   130,    -39,     53}, 0, {     0,      0}, {0x78, 0xd8, 0x00, 0xff}}},\n    {{{    92,   -111,     34}, 0, {     0,      0}, {0x70, 0xc5, 0x00, 0xff}}},\n    {{{    92,   -111,    -34}, 0, {     0,      0}, {0x70, 0xc5, 0x00, 0xff}}},\n    {{{   130,    -39,    -53}, 0, {     0,      0}, {0x7d, 0xec, 0x00, 0xff}}},\n    {{{    92,   -111,    -34}, 0, {     0,      0}, {0xee, 0xe2, 0x86, 0xff}}},\n    {{{    20,    -80,    -30}, 0, {     0,      0}, {0xeb, 0xde, 0x88, 0xff}}},\n    {{{    -4,    -39,    -37}, 0, {     0,      0}, {0xf0, 0xf1, 0x84, 0xff}}},\n    {{{   130,    -39,    -53}, 0, {     0,      0}, {0xf2, 0xf4, 0x83, 0xff}}},\n};\n\n// 0x03015AF8\nstatic const Vtx bowser_key_dl_vertex_group5[] = {\n    {{{    -4,    -39,    -37}, 0, {     0,      0}, {0xf0, 0xf1, 0x84, 0xff}}},\n    {{{    -4,     41,    -37}, 0, {     0,      0}, {0xef, 0x14, 0x84, 0x00}}},\n    {{{   130,     41,    -53}, 0, {     0,      0}, {0xf2, 0x08, 0x83, 0x00}}},\n    {{{   130,    -39,    -53}, 0, {     0,      0}, {0xf2, 0xf4, 0x83, 0xff}}},\n    {{{   130,    -39,     53}, 0, {     0,      0}, {0xf2, 0xf8, 0x7d, 0xff}}},\n    {{{   130,     41,     53}, 0, {     0,      0}, {0xf2, 0x0c, 0x7d, 0xff}}},\n    {{{    -4,     41,     37}, 0, {     0,      0}, {0xf0, 0x0f, 0x7c, 0xff}}},\n    {{{    -4,    -39,     37}, 0, {     0,      0}, {0xef, 0xec, 0x7c, 0xff}}},\n    {{{    92,    113,     34}, 0, {     0,      0}, {0xee, 0x1e, 0x7a, 0xff}}},\n    {{{    20,     82,     30}, 0, {     0,      0}, {0xeb, 0x22, 0x78, 0xff}}},\n    {{{    -4,     41,    -37}, 0, {     0,      0}, {0x84, 0x16, 0x00, 0xff}}},\n    {{{    -4,    -39,    -37}, 0, {     0,      0}, {0x8a, 0xd3, 0x00, 0xff}}},\n    {{{    -4,    -39,     37}, 0, {     0,      0}, {0x84, 0xea, 0x00, 0xff}}},\n    {{{    -4,     41,     37}, 0, {     0,      0}, {0x8a, 0x2d, 0x00, 0xff}}},\n    {{{    20,     82,     30}, 0, {     0,      0}, {0xad, 0x5f, 0x00, 0xff}}},\n    {{{    20,     82,    -30}, 0, {     0,      0}, {0xad, 0x5f, 0x00, 0xff}}},\n};\n\n// 0x03015BF8\nstatic const Vtx bowser_key_dl_vertex_group6[] = {\n    {{{    -4,    -39,    -37}, 0, {     0,      0}, {0x8a, 0xd3, 0x00, 0xff}}},\n    {{{    20,    -80,    -30}, 0, {     0,      0}, {0xad, 0xa1, 0x00, 0x00}}},\n    {{{    20,    -80,     30}, 0, {     0,      0}, {0xad, 0xa1, 0x00, 0x00}}},\n    {{{    -4,    -39,     37}, 0, {     0,      0}, {0x84, 0xea, 0x00, 0xff}}},\n    {{{   130,     41,     53}, 0, {     0,      0}, {0x7d, 0x14, 0x00, 0xff}}},\n    {{{   130,    -39,     53}, 0, {     0,      0}, {0x78, 0xd8, 0x00, 0xff}}},\n    {{{   130,    -39,    -53}, 0, {     0,      0}, {0x7d, 0xec, 0x00, 0xff}}},\n    {{{   130,     41,    -53}, 0, {     0,      0}, {0x78, 0x28, 0x00, 0xff}}},\n    {{{    -4,     41,    -37}, 0, {     0,      0}, {0xef, 0x14, 0x84, 0xff}}},\n    {{{    20,     82,    -30}, 0, {     0,      0}, {0xeb, 0x22, 0x88, 0xff}}},\n    {{{    92,    113,    -34}, 0, {     0,      0}, {0xee, 0x1e, 0x86, 0xff}}},\n    {{{   130,     41,    -53}, 0, {     0,      0}, {0xf2, 0x08, 0x83, 0xff}}},\n    {{{    92,    113,     34}, 0, {     0,      0}, {0xce, 0x74, 0x00, 0xff}}},\n    {{{    92,    113,    -34}, 0, {     0,      0}, {0xce, 0x74, 0x00, 0xff}}},\n    {{{    20,     82,    -30}, 0, {     0,      0}, {0xad, 0x5f, 0x00, 0xff}}},\n    {{{    20,     82,     30}, 0, {     0,      0}, {0xad, 0x5f, 0x00, 0xff}}},\n};\n\n// 0x03015CF8\nstatic const Vtx bowser_key_dl_vertex_group7[] = {\n    {{{    -4,    -39,     37}, 0, {     0,      0}, {0xef, 0xec, 0x7c, 0xff}}},\n    {{{    20,    -80,     30}, 0, {     0,      0}, {0xeb, 0xde, 0x78, 0x00}}},\n    {{{    92,   -111,     34}, 0, {     0,      0}, {0xee, 0xe2, 0x7a, 0x00}}},\n    {{{   130,    -39,     53}, 0, {     0,      0}, {0xf2, 0xf8, 0x7d, 0xff}}},\n    {{{    92,   -111,    -34}, 0, {     0,      0}, {0xce, 0x8c, 0x00, 0xff}}},\n    {{{    92,   -111,     34}, 0, {     0,      0}, {0xce, 0x8c, 0x00, 0xff}}},\n    {{{    20,    -80,     30}, 0, {     0,      0}, {0xad, 0xa1, 0x00, 0xff}}},\n    {{{    20,    -80,    -30}, 0, {     0,      0}, {0xad, 0xa1, 0x00, 0xff}}},\n    {{{    12,   -121,     15}, 0, {     0,      0}, {0x0b, 0x7e, 0x00, 0xff}}},\n    {{{    12,   -121,    -15}, 0, {     0,      0}, {0x0b, 0x7e, 0x00, 0xff}}},\n    {{{   -51,   -115,      0}, 0, {     0,      0}, {0x0b, 0x7e, 0x00, 0xff}}},\n    {{{    12,   -121,    -15}, 0, {     0,      0}, {0xc8, 0x19, 0x92, 0xff}}},\n    {{{    16,   -152,    -25}, 0, {     0,      0}, {0xce, 0x15, 0x8e, 0xff}}},\n    {{{   -51,   -115,      0}, 0, {     0,      0}, {0xe6, 0x21, 0x89, 0xff}}},\n};\n\n// 0x03015DD8\nstatic const Vtx bowser_key_dl_vertex_group8[] = {\n    {{{    16,   -152,     25}, 0, {     0,      0}, {0xce, 0x15, 0x72, 0xff}}},\n    {{{    12,   -121,     15}, 0, {     0,      0}, {0xc8, 0x19, 0x6e, 0x00}}},\n    {{{   -51,   -115,      0}, 0, {     0,      0}, {0xe6, 0x21, 0x77, 0x00}}},\n    {{{    21,   -171,      0}, 0, {     0,      0}, {0xb3, 0x9c, 0x00, 0xff}}},\n    {{{    16,   -152,     25}, 0, {     0,      0}, {0xbb, 0xa7, 0x38, 0xff}}},\n    {{{   -51,   -115,      0}, 0, {     0,      0}, {0xb3, 0x9c, 0x00, 0xff}}},\n    {{{    16,   -152,    -25}, 0, {     0,      0}, {0xbb, 0xa7, 0xc8, 0xff}}},\n    {{{   -51,    115,      0}, 0, {     0,      0}, {0x0b, 0x82, 0x00, 0xff}}},\n    {{{    12,    121,    -15}, 0, {     0,      0}, {0x0b, 0x82, 0x00, 0xff}}},\n    {{{    12,    121,     15}, 0, {     0,      0}, {0x0b, 0x82, 0x00, 0xff}}},\n    {{{   -51,    115,      0}, 0, {     0,      0}, {0xe6, 0xdf, 0x89, 0xff}}},\n    {{{    16,    152,    -25}, 0, {     0,      0}, {0xce, 0xeb, 0x8e, 0xff}}},\n    {{{    12,    121,    -15}, 0, {     0,      0}, {0xa7, 0xde, 0xad, 0xff}}},\n    {{{   -51,    115,      0}, 0, {     0,      0}, {0xe6, 0xdf, 0x77, 0xff}}},\n    {{{    12,    121,     15}, 0, {     0,      0}, {0x99, 0xdc, 0x3f, 0xff}}},\n    {{{    16,    152,     25}, 0, {     0,      0}, {0xce, 0xeb, 0x72, 0xff}}},\n};\n\n// 0x03015ED8\nstatic const Vtx bowser_key_dl_vertex_group9[] = {\n    {{{   -51,    115,      0}, 0, {     0,      0}, {0xb3, 0x64, 0x00, 0xff}}},\n    {{{    16,    152,     25}, 0, {     0,      0}, {0xbb, 0x59, 0x38, 0x00}}},\n    {{{    21,    171,      0}, 0, {     0,      0}, {0xb3, 0x64, 0x00, 0x00}}},\n    {{{    16,    152,    -25}, 0, {     0,      0}, {0xbb, 0x59, 0xc8, 0xff}}},\n    {{{   317,    -22,     17}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   317,     22,     17}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   131,     22,     17}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   131,    -22,     17}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   317,     22,    -17}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   317,    -22,    -17}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   131,    -22,    -17}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   131,     22,    -17}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    16,    152,    -25}, 0, {     0,      0}, {0xce, 0xeb, 0x8e, 0xff}}},\n    {{{    56,     97,    -31}, 0, {     0,      0}, {0xdb, 0xf2, 0x88, 0xff}}},\n    {{{    23,     83,    -19}, 0, {     0,      0}, {0x97, 0xe1, 0xc2, 0xff}}},\n    {{{    12,    121,    -15}, 0, {     0,      0}, {0xa7, 0xde, 0xad, 0xff}}},\n};\n\n// 0x03015FD8\nstatic const Vtx bowser_key_dl_vertex_group10[] = {\n    {{{    12,    121,     15}, 0, {     0,      0}, {0x99, 0xdc, 0x3f, 0xff}}},\n    {{{    12,    121,    -15}, 0, {     0,      0}, {0xa7, 0xde, 0xad, 0x00}}},\n    {{{    23,     83,    -19}, 0, {     0,      0}, {0x97, 0xe1, 0xc2, 0x00}}},\n    {{{    23,     83,     19}, 0, {     0,      0}, {0xa4, 0xe6, 0x52, 0xff}}},\n    {{{    16,    152,     25}, 0, {     0,      0}, {0xce, 0xeb, 0x72, 0xff}}},\n    {{{    56,     97,     31}, 0, {     0,      0}, {0xdb, 0xf2, 0x78, 0xff}}},\n    {{{    16,    152,    -25}, 0, {     0,      0}, {0x50, 0x43, 0xb9, 0xff}}},\n    {{{    21,    171,      0}, 0, {     0,      0}, {0x50, 0x45, 0xbb, 0xff}}},\n    {{{    77,    106,      0}, 0, {     0,      0}, {0x50, 0x43, 0xb9, 0xff}}},\n    {{{    56,     97,    -31}, 0, {     0,      0}, {0x4f, 0x42, 0xb7, 0xff}}},\n    {{{    16,    152,     25}, 0, {     0,      0}, {0x50, 0x43, 0x47, 0xff}}},\n    {{{    56,     97,     31}, 0, {     0,      0}, {0x4f, 0x42, 0x49, 0xff}}},\n    {{{    77,    106,      0}, 0, {     0,      0}, {0x50, 0x43, 0x47, 0xff}}},\n    {{{    21,    171,      0}, 0, {     0,      0}, {0x50, 0x45, 0x45, 0xff}}},\n};\n\n// 0x030160B8\nstatic const Vtx bowser_key_dl_vertex_group11[] = {\n    {{{    16,   -152,    -25}, 0, {     0,      0}, {0xce, 0x15, 0x8e, 0xff}}},\n    {{{    12,   -121,    -15}, 0, {     0,      0}, {0xc8, 0x19, 0x92, 0x00}}},\n    {{{    24,    -82,    -19}, 0, {     0,      0}, {0xc3, 0x0f, 0x93, 0x00}}},\n    {{{    57,    -96,    -31}, 0, {     0,      0}, {0xdb, 0x0e, 0x88, 0xff}}},\n    {{{    24,    -82,    -19}, 0, {     0,      0}, {0x87, 0x25, 0x00, 0xff}}},\n    {{{    12,   -121,    -15}, 0, {     0,      0}, {0x87, 0x25, 0x00, 0xff}}},\n    {{{    12,   -121,     15}, 0, {     0,      0}, {0x87, 0x25, 0x00, 0xff}}},\n    {{{    24,    -82,     19}, 0, {     0,      0}, {0x87, 0x25, 0x00, 0xff}}},\n    {{{    24,    -82,     19}, 0, {     0,      0}, {0xc3, 0x0f, 0x6d, 0xff}}},\n    {{{    12,   -121,     15}, 0, {     0,      0}, {0xc8, 0x19, 0x6e, 0xff}}},\n    {{{    16,   -152,     25}, 0, {     0,      0}, {0xce, 0x15, 0x72, 0xff}}},\n    {{{    57,    -96,     31}, 0, {     0,      0}, {0xdb, 0x0e, 0x78, 0xff}}},\n    {{{    78,   -105,      0}, 0, {     0,      0}, {0x50, 0xbd, 0xb9, 0xff}}},\n    {{{    21,   -171,      0}, 0, {     0,      0}, {0x50, 0xbb, 0xbb, 0xff}}},\n    {{{    16,   -152,    -25}, 0, {     0,      0}, {0x50, 0xbd, 0xb9, 0xff}}},\n    {{{    57,    -96,    -31}, 0, {     0,      0}, {0x4f, 0xbe, 0xb7, 0xff}}},\n};\n\n// 0x030161B8\nstatic const Vtx bowser_key_dl_vertex_group12[] = {\n    {{{    16,   -152,     25}, 0, {     0,      0}, {0x50, 0xbd, 0x47, 0xff}}},\n    {{{    21,   -171,      0}, 0, {     0,      0}, {0x50, 0xbb, 0x45, 0x00}}},\n    {{{    78,   -105,      0}, 0, {     0,      0}, {0x50, 0xbd, 0x47, 0x00}}},\n    {{{    57,    -96,     31}, 0, {     0,      0}, {0x4f, 0xbe, 0x49, 0xff}}},\n};\n\n// 0x030161F8 - 0x03016530\nconst Gfx bowser_key_dl[] = {\n    gsSPLight(&bowser_key_lights.l, 1),\n    gsSPLight(&bowser_key_lights.a, 2),\n    gsSPVertex(bowser_key_dl_vertex_group1, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bowser_key_dl_vertex_group2, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bowser_key_dl_vertex_group3, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bowser_key_dl_vertex_group4, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 15, 12, 14, 0x0),\n    gsSPVertex(bowser_key_dl_vertex_group5, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9,  6, 0x0,  5,  8,  6, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP2Triangles(13, 14, 15, 0x0, 13, 15, 10, 0x0),\n    gsSPVertex(bowser_key_dl_vertex_group6, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bowser_key_dl_vertex_group7, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bowser_key_dl_vertex_group8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bowser_key_dl_vertex_group9, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 15, 12, 14, 0x0),\n    gsSPVertex(bowser_key_dl_vertex_group10, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  0,  3, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 10, 12, 0x0),\n    gsSPVertex(bowser_key_dl_vertex_group11, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bowser_key_dl_vertex_group12, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/breakable_box/collision.inc.c",
    "content": "// Breakable Box\n\n// 0x08012D70 - 0x08012DF4\nconst Collision breakable_box_seg8_collision_08012D70[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-100, 0, -100),\n    COL_VERTEX(-100, 0, 100),\n    COL_VERTEX(-100, 200, 100),\n    COL_VERTEX(100, 0, 100),\n    COL_VERTEX(100, 200, 100),\n    COL_VERTEX(100, 0, -100),\n    COL_VERTEX(100, 200, -100),\n    COL_VERTEX(-100, 200, -100),\n\n    COL_TRI_INIT(SURFACE_NO_CAM_COLLISION, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(1, 3, 4),\n    COL_TRI(1, 4, 2),\n    COL_TRI(5, 3, 1),\n    COL_TRI(5, 1, 0),\n    COL_TRI(6, 4, 3),\n    COL_TRI(6, 3, 5),\n    COL_TRI(7, 4, 6),\n    COL_TRI(7, 2, 4),\n    COL_TRI(0, 2, 7),\n    COL_TRI(7, 6, 5),\n    COL_TRI(7, 5, 0),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n\nUNUSED static const u32 breakable_box_unused_1 = 0;\nUNUSED static const u64 breakable_box_unused_2 = 0;\n"
  },
  {
    "path": "actors/breakable_box/geo.inc.c",
    "content": "// 0x0F0005D0\nconst GeoLayout breakable_box_geo[] = {\n    GEO_CULLING_RADIUS(500),\n    GEO_OPEN_NODE(),\n        GEO_SHADOW(SHADOW_SQUARE_PERMANENT, 0xB4, 240),\n        GEO_OPEN_NODE(),\n            GEO_SWITCH_CASE(2, geo_switch_anim_state),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, breakable_box_seg8_dl_08012D20),\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, breakable_box_seg8_dl_08012D48),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0F000610\nconst GeoLayout breakable_box_small_geo[] = {\n    GEO_CULLING_RADIUS(500),\n    GEO_OPEN_NODE(),\n        GEO_SWITCH_CASE(2, geo_switch_anim_state),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, breakable_box_seg8_dl_08012D20),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, breakable_box_seg8_dl_08012D48),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/breakable_box/model.inc.c",
    "content": "// Breakable Box\n\n// 0x08011A78\nstatic const Lights1 breakable_box_seg8_lights_08011A80 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x08011A90\nALIGNED8 static const Texture breakable_box_seg8_texture_08011A90[] = {\n#include \"actors/breakable_box/crazy_box_surface.rgba16.inc.c\"\n};\n\n// 0x08012290\nALIGNED8 static const Texture breakable_box_seg8_texture_08012290[] = {\n#include \"actors/breakable_box/cork_box_surface.rgba16.inc.c\"\n};\n\n// 0x08012A90\nstatic const Vtx breakable_box_seg8_vertex_08012A90[] = {\n    {{{  -100,      0,   -100}, 0, {   992,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -100,      0,    100}, 0, {   992,    992}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -100,    200,    100}, 0, {     0,    992}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -100,      0,    100}, 0, {     0,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   100,      0,    100}, 0, {   992,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   100,    200,    100}, 0, {   992,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -100,    200,    100}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   100,      0,   -100}, 0, {   992,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   100,      0,    100}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -100,      0,    100}, 0, {     0,    992}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -100,      0,   -100}, 0, {   992,    992}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   100,    200,   -100}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   100,    200,    100}, 0, {     0,    992}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   100,      0,    100}, 0, {   992,    992}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   100,      0,   -100}, 0, {   992,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x08012B80\nstatic const Vtx breakable_box_seg8_vertex_08012B80[] = {\n    {{{  -100,    200,    100}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   100,    200,   -100}, 0, {   992,    992}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -100,    200,   -100}, 0, {   992,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   100,    200,    100}, 0, {     0,    992}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   100,    200,   -100}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   100,      0,   -100}, 0, {     0,    992}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -100,      0,   -100}, 0, {   992,    992}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -100,    200,   -100}, 0, {   992,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -100,      0,   -100}, 0, {   992,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -100,    200,    100}, 0, {     0,    992}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -100,    200,   -100}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x08012C30 - 0x08012CD8\nconst Gfx breakable_box_seg8_dl_08012C30[] = {\n    gsSPLight(&breakable_box_seg8_lights_08011A80.l, 1),\n    gsSPLight(&breakable_box_seg8_lights_08011A80.a, 2),\n    gsSPVertex(breakable_box_seg8_vertex_08012A90, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(breakable_box_seg8_vertex_08012B80, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP1Triangle( 8,  9, 10, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x08012CD8 - 0x08012D20\nconst Gfx breakable_box_seg8_dl_08012CD8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x08012D20 - 0x08012D48\nconst Gfx breakable_box_seg8_dl_08012D20[] = {\n    gsSPDisplayList(breakable_box_seg8_dl_08012CD8),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, breakable_box_seg8_texture_08011A90),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPBranchList(breakable_box_seg8_dl_08012C30),\n};\n\n// 0x08012D20 - 0x08012D70\nconst Gfx breakable_box_seg8_dl_08012D48[] = {\n    gsSPDisplayList(breakable_box_seg8_dl_08012CD8),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, breakable_box_seg8_texture_08012290),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPBranchList(breakable_box_seg8_dl_08012C30),\n};\n"
  },
  {
    "path": "actors/bub/anims/anim_0601233C.inc.c",
    "content": "// 0x06012000\nstatic const s16 bub_seg6_animvalue_06012000[] = {\n    0x0000, 0xFFF3, 0xFFF3, 0xFFF3, 0xFFF4, 0xFFF6, 0xFFF7, 0xFFF9,\n    0xFFFB, 0xFFFD, 0xFFFF, 0x0001, 0x0003, 0x0005, 0x0007, 0x0009,\n    0x000A, 0x000B, 0x000C, 0x000D, 0x000D, 0x000D, 0x000D, 0x000C,\n    0x000B, 0x000A, 0x0009, 0x0008, 0x0006, 0x0005, 0x0003, 0x0001,\n    0x0000, 0xFFFF, 0xFFFD, 0xFFFB, 0xFFF9, 0xFFF7, 0xFFF6, 0xFFF4,\n    0xFFF3, 0xC001, 0x1696, 0x16AB, 0x16E5, 0x173B, 0x17A3, 0x1814,\n    0x1886, 0x18EE, 0x1944, 0x197E, 0x1993, 0x1979, 0x1933, 0x18CD,\n    0x1854, 0x17D5, 0x175C, 0x16F6, 0x16B0, 0x1696, 0x16A2, 0x16C5,\n    0x16F8, 0x1736, 0x177A, 0x17BE, 0x17FC, 0x182F, 0x1853, 0x1860,\n    0x1858, 0x1841, 0x181D, 0x17EF, 0x17BA, 0x1780, 0x1745, 0x170A,\n    0x16D3, 0x16A2, 0x1881, 0x186A, 0x182C, 0x17D0, 0x1762, 0x16E9,\n    0x1670, 0x1601, 0x15A6, 0x1568, 0x1551, 0x156D, 0x15B8, 0x1625,\n    0x16A5, 0x172D, 0x17AD, 0x181A, 0x1865, 0x1881, 0x1874, 0x1851,\n    0x181F, 0x17E1, 0x179E, 0x175B, 0x171D, 0x16EA, 0x16C7, 0x16BA,\n    0x16C1, 0x16D9, 0x16FC, 0x172A, 0x175F, 0x1798, 0x17D3, 0x180D,\n    0x1844, 0x1874, 0xF776, 0xF79E, 0xF80B, 0xF8AC, 0xF96F, 0xFA43,\n    0xFB17, 0xFBDA, 0xFC7A, 0xFCE7, 0xFD0F, 0xFCDE, 0xFC5B, 0xFB9C,\n    0xFABA, 0xF9CC, 0xF8EA, 0xF82B, 0xF7A7, 0xF776, 0xF78E, 0xF7CD,\n    0xF82A, 0xF89C, 0xF917, 0xF993, 0xFA04, 0xFA62, 0xFAA2, 0xFABB,\n    0xFAAC, 0xFA82, 0xFA40, 0xF9EC, 0xF98B, 0xF922, 0xF8B6, 0xF84B,\n    0xF7E6, 0xF78E, 0xEBCF, 0xEBAF, 0xEB59, 0xEADD, 0xEA4A, 0xE9AF,\n    0xE91B, 0xE89F, 0xE849, 0xE829, 0xE843, 0xE88A, 0xE8F3, 0xE972,\n    0xE9FC, 0xEA86, 0xEB05, 0xEB6E, 0xEBB5, 0xEBCF, 0xEBBD, 0xEB8A,\n    0xEB40, 0xEAE6, 0xEA83, 0xEA21, 0xE9C7, 0xE97C, 0xE949, 0xE935,\n    0xE941, 0xE963, 0xE997, 0xE9DA, 0xEA27, 0xEA7B, 0xEAD1, 0xEB26,\n    0xEB76, 0xEBBD, 0x1CE8, 0x1CD0, 0x1C90, 0x1C33, 0x1BC5, 0x1B51,\n    0x1AE2, 0x1A85, 0x1A45, 0x1A2D, 0x1A41, 0x1A76, 0x1AC4, 0x1B23,\n    0x1B8B, 0x1BF2, 0x1C51, 0x1C9F, 0x1CD5, 0x1CE8, 0x1CDB, 0x1CB7,\n    0x1C82, 0x1C42, 0x1BFC, 0x1BB7, 0x1B76, 0x1B41, 0x1B1D, 0x1B0F,\n    0x1B17, 0x1B2F, 0x1B54, 0x1B84, 0x1BBB, 0x1BF6, 0x1C34, 0x1C70,\n    0x1CA9, 0x1CDB, 0x87BA, 0x8787, 0x86FE, 0x8638, 0x854D, 0x8455,\n    0x836A, 0x82A4, 0x821B, 0x81E7, 0x8211, 0x8282, 0x8329, 0x83F4,\n    0x84D1, 0x85AD, 0x8678, 0x871F, 0x8790, 0x87BA, 0x879D, 0x874E,\n    0x86D9, 0x864A, 0x85AF, 0x8515, 0x8486, 0x8410, 0x83C0, 0x83A1,\n    0x83B3, 0x83E9, 0x843B, 0x84A4, 0x851E, 0x85A2, 0x862A, 0x86B0,\n    0x872E, 0x879D, 0x3FFF, 0xC054, 0x3FFF, 0xC054, 0xF11C, 0xF15F,\n    0xF21D, 0xF34A, 0xF4D6, 0xF6B6, 0xF8DA, 0xFB35, 0xFDB9, 0x0057,\n    0x0303, 0x05B0, 0x084E, 0x0AD0, 0x0D29, 0x0F49, 0x1125, 0x12AD,\n    0x13D5, 0x148D, 0x1482, 0x1385, 0x11C5, 0x0F6F, 0x0CB2, 0x09BC,\n    0x06BA, 0x03DA, 0x014B, 0xFF3B, 0xFD6A, 0xFB89, 0xF9A6, 0xF7D1,\n    0xF619, 0xF48F, 0xF341, 0xF23F, 0xF199, 0xF15E, 0x421D, 0x4234,\n    0x4271, 0x42C9, 0x432F, 0x439A, 0x43FC, 0x444C, 0x447D, 0x4484,\n    0x4456, 0x43DD, 0x431B, 0x4223, 0x410A, 0x3FE5, 0x3EC7, 0x3DC6,\n    0x3CF5, 0x3C69, 0x3C18, 0x3BE5, 0x3BCE, 0x3BCF, 0x3BE5, 0x3C0B,\n    0x3C3F, 0x3C7D, 0x3CC2, 0x3D09, 0x3D5B, 0x3DC0, 0x3E34, 0x3EB5,\n    0x3F3F, 0x3FCE, 0x405F, 0x40F0, 0x417B, 0x4200,\n};\n\n// 0x060122DC\nstatic const u16 bub_seg6_animindex_060122DC[] = {\n    0x0028, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0029, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x0146,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x011E,\n    0x0001, 0x011C, 0x0001, 0x0000, 0x0001, 0x011D,\n    0x0028, 0x002A, 0x0028, 0x0052, 0x0028, 0x007A,\n    0x0001, 0x011A, 0x0001, 0x0000, 0x0001, 0x011B,\n    0x0028, 0x00A2, 0x0028, 0x00CA, 0x0028, 0x00F2,\n};\n\n// 0x0601233C\nstatic const struct Animation bub_seg6_anim_0601233C = {\n    0,\n    0,\n    0,\n    0,\n    0x28,\n    ANIMINDEX_NUMPARTS(bub_seg6_animindex_060122DC),\n    bub_seg6_animvalue_06012000,\n    bub_seg6_animindex_060122DC,\n    0,\n};\n"
  },
  {
    "path": "actors/bub/anims/data.inc.c",
    "content": "#include \"anim_0601233C.inc.c\"\n"
  },
  {
    "path": "actors/bub/anims/table.inc.c",
    "content": "// 0x06012354\nconst struct Animation *const bub_seg6_anims_06012354[] = {\n    &bub_seg6_anim_0601233C,\n    NULL,\n    NULL,\n};\n"
  },
  {
    "path": "actors/bub/geo.inc.c",
    "content": "// 0x0D00038C\nconst GeoLayout bub_geo[] = {\n    GEO_SCALE(0x00, 16384),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, -13, 0, 0, NULL),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bub_seg6_dl_06011B28),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 135, 0, 0, bub_seg6_dl_06011CF0),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, -33, -86, -35, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bub_seg6_dl_06011E48),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, -34, 71, -36, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bub_seg6_dl_06011FA0),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/bub/model.inc.c",
    "content": "// Bub\n\n// 0x0600E278\nstatic const Lights1 bub_seg6_lights_0600E280 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0600E290\nstatic const Lights1 bub_seg6_lights_0600E290 = gdSPDefLights1(\n    0x3f, 0x1d, 0x25,\n    0xff, 0x75, 0x94, 0x28, 0x28, 0x28\n);\n\n// 0x0600E2A8\nALIGNED8 static const Texture bub_seg6_texture_0600E2A8[] = {\n#include \"actors/bub/bub_eye_border.rgba16.inc.c\"\n};\n\n// 0x0600EAA8\nALIGNED8 static const Texture bub_seg6_texture_0600EAA8[] = {\n#include \"actors/bub/bub_fins.rgba16.inc.c\"\n};\n\n// 0x0600F2A8\nALIGNED8 static const Texture bub_seg6_texture_0600F2A8[] = {\n#include \"actors/bub/bub_eyes.rgba16.inc.c\"\n};\n\n// 0x060102A8\nALIGNED8 static const Texture bub_seg6_texture_060102A8[] = {\n#include \"actors/bub/bub_scales.rgba16.inc.c\"\n};\n\n// 0x060112A8\nstatic const Vtx bub_seg6_vertex_060112A8[] = {\n    {{{   -47,     79,     27}, 0, {    26,    980}, {0x00, 0x6b, 0x43, 0xff}}},\n    {{{   -94,     80,     38}, 0, {   928,    968}, {0xf7, 0x73, 0x33, 0xff}}},\n    {{{   -53,      0,     91}, 0, {   132,    102}, {0x10, 0x01, 0x7d, 0xff}}},\n    {{{  -111,     38,    102}, 0, {  1338,    362}, {0xa2, 0x33, 0x43, 0xff}}},\n    {{{  -111,    -41,    102}, 0, {  -428,    296}, {0xa4, 0xca, 0x43, 0xff}}},\n    {{{   -92,    -82,     38}, 0, {   -40,    958}, {0xf9, 0x8d, 0x33, 0xff}}},\n    {{{   -53,      0,     91}, 0, {   910,     -4}, {0x10, 0x01, 0x7d, 0xff}}},\n    {{{   -45,    -81,     27}, 0, {   940,    960}, {0x00, 0x95, 0x43, 0xff}}},\n    {{{  -100,    -71,    -23}, 0, {   302,     68}, {0x9f, 0xaf, 0x00, 0xff}}},\n    {{{   -45,    -81,     27}, 0, {   926,    956}, {0x00, 0x95, 0x43, 0xff}}},\n    {{{   -92,    -82,     38}, 0, {     4,    956}, {0xf9, 0x8d, 0x33, 0xff}}},\n    {{{  -111,    -41,    102}, 0, {   -54,    146}, {0xa4, 0xca, 0x43, 0xff}}},\n    {{{   -53,      0,     91}, 0, {   664,    466}, {0x10, 0x01, 0x7d, 0xff}}},\n    {{{  -111,     38,    102}, 0, {   -12,    790}, {0xa2, 0x33, 0x43, 0xff}}},\n};\n\n// 0x06011388\nstatic const Vtx bub_seg6_vertex_06011388[] = {\n    {{{  -102,     68,    -23}, 0, {   688,     60}, {0x9e, 0x4f, 0x00, 0xff}}},\n    {{{   -94,     80,     38}, 0, {   960,    960}, {0xf7, 0x73, 0x33, 0xff}}},\n    {{{   -47,     79,     27}, 0, {    16,    968}, {0x00, 0x6b, 0x43, 0xff}}},\n};\n\n// 0x060113B8\nstatic const Vtx bub_seg6_vertex_060113B8[] = {\n    {{{   -17,    -15,     85}, 0, {   426,   1050}, {0xfd, 0x8e, 0x35, 0xff}}},\n    {{{    93,      0,     75}, 0, {  2024,   1040}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{    30,      0,    126}, 0, {  1056,   1694}, {0x3c, 0x02, 0x6f, 0xff}}},\n    {{{   -46,      0,    152}, 0, {   -72,   1972}, {0xa7, 0x04, 0x5a, 0xff}}},\n    {{{   -53,      0,     91}, 0, {   -86,   1094}, {0x10, 0x01, 0x7d, 0xff}}},\n    {{{   -17,     13,     85}, 0, {   422,   1050}, {0xfe, 0x73, 0x34, 0xff}}},\n};\n\n// 0x06011418\nstatic const Vtx bub_seg6_vertex_06011418[] = {\n    {{{  -100,    -71,    -23}, 0, {  2008,   1286}, {0x9f, 0xaf, 0x00, 0xff}}},\n    {{{   -92,    -82,     38}, 0, {  2180,    384}, {0xf9, 0x8d, 0x33, 0xff}}},\n    {{{  -111,    -41,    102}, 0, {  1576,   -554}, {0xa4, 0xca, 0x43, 0xff}}},\n    {{{  -102,     68,    -23}, 0, {     0,   1286}, {0x9e, 0x4f, 0x00, 0xff}}},\n    {{{  -111,     38,    102}, 0, {   404,   -554}, {0xa2, 0x33, 0x43, 0xff}}},\n    {{{   -94,     80,     38}, 0, {  -200,    384}, {0xf7, 0x73, 0x33, 0xff}}},\n    {{{  -113,     -1,      6}, 0, {   992,    844}, {0x87, 0x00, 0x26, 0xff}}},\n};\n\n// 0x06011488\nstatic const Vtx bub_seg6_vertex_06011488[] = {\n    {{{    69,     68,     18}, 0, {  1976,   -164}, {0x3a, 0x6a, 0x24, 0xff}}},\n    {{{    63,     77,    -64}, 0, {  1872,   1220}, {0x35, 0x55, 0xb3, 0xff}}},\n    {{{   -62,    106,    -67}, 0, {  -288,   1334}, {0xe7, 0x7b, 0xf2, 0xff}}},\n    {{{   134,      0,     22}, 0, {  3456,     86}, {0x77, 0x00, 0x2a, 0xff}}},\n    {{{    93,      0,     75}, 0, {  2620,   -532}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{    70,    -68,     18}, 0, {  2152,    990}, {0x3b, 0x97, 0x24, 0xff}}},\n    {{{   -17,    -15,     85}, 0, {   528,   -486}, {0xfd, 0x8e, 0x35, 0xff}}},\n    {{{   -45,    -81,     27}, 0, {     0,    990}, {0x00, 0x95, 0x43, 0xff}}},\n    {{{   -53,      0,     91}, 0, {  -100,   -752}, {0x10, 0x01, 0x7d, 0xff}}},\n    {{{    93,      0,     75}, 0, {  2384,  -1138}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{   134,      0,     22}, 0, {  3100,   -272}, {0x77, 0x00, 0x2a, 0xff}}},\n    {{{   -47,     79,     27}, 0, {   -40,   -258}, {0x00, 0x6b, 0x43, 0xff}}},\n    {{{   -17,     13,     85}, 0, {   456,  -1234}, {0xfe, 0x73, 0x34, 0xff}}},\n    {{{   134,      0,    -17}, 0, {  3104,    404}, {0x7c, 0x00, 0xe7, 0xff}}},\n    {{{   -53,      0,     91}, 0, {  -152,  -1316}, {0x10, 0x01, 0x7d, 0xff}}},\n};\n\n// 0x06011578\nstatic const Vtx bub_seg6_vertex_06011578[] = {\n    {{{   134,      0,    -17}, 0, {  1744,   1076}, {0x7c, 0x00, 0xe7, 0xff}}},\n    {{{   134,      0,     22}, 0, {  1444,    174}, {0x77, 0x00, 0x2a, 0xff}}},\n    {{{    70,    -68,     18}, 0, {   124,    848}, {0x3b, 0x97, 0x24, 0xff}}},\n    {{{   134,      0,    -17}, 0, {  3680,   -186}, {0x7c, 0x00, 0xe7, 0xff}}},\n    {{{    70,    -68,     18}, 0, {  2148,   -526}, {0x3b, 0x97, 0x24, 0xff}}},\n    {{{    64,    -77,    -64}, 0, {  2176,    910}, {0x36, 0xac, 0xb3, 0xff}}},\n    {{{   -45,    -81,     27}, 0, {     0,   -416}, {0x00, 0x95, 0x43, 0xff}}},\n    {{{   -60,   -108,    -67}, 0, {  -204,   1278}, {0xe9, 0x85, 0xf2, 0xff}}},\n    {{{    64,    -77,    -64}, 0, {   616,    104}, {0x36, 0xac, 0xb3, 0xff}}},\n    {{{    85,      0,    -97}, 0, {  1508,    946}, {0x43, 0x00, 0x95, 0xff}}},\n    {{{   134,      0,    -17}, 0, {  2204,   -676}, {0x7c, 0x00, 0xe7, 0xff}}},\n    {{{    63,     77,    -64}, 0, {  -188,    674}, {0x35, 0x55, 0xb3, 0xff}}},\n    {{{   134,      0,    -17}, 0, {  1092,   -116}, {0x7c, 0x00, 0xe7, 0xff}}},\n    {{{    85,      0,    -97}, 0, {  1016,   1428}, {0x43, 0x00, 0x95, 0xff}}},\n};\n\n// 0x06011658\nstatic const Vtx bub_seg6_vertex_06011658[] = {\n    {{{   -60,   -108,    -67}, 0, {  1920,    450}, {0xe9, 0x85, 0xf2, 0xff}}},\n    {{{   -45,    -81,     27}, 0, {  2056,  -1674}, {0x00, 0x95, 0x43, 0xff}}},\n    {{{  -100,    -71,    -23}, 0, {   852,   -280}, {0x9f, 0xaf, 0x00, 0xff}}},\n    {{{  -102,     68,    -23}, 0, {   700,   -344}, {0x9e, 0x4f, 0x00, 0xff}}},\n    {{{   -47,     79,     27}, 0, {  1968,  -1410}, {0x00, 0x6b, 0x43, 0xff}}},\n    {{{   -62,    106,    -67}, 0, {  1876,    472}, {0xe7, 0x7b, 0xf2, 0xff}}},\n    {{{    63,     77,    -64}, 0, {  1884,    272}, {0x35, 0x55, 0xb3, 0xff}}},\n    {{{   -77,     71,    -91}, 0, {  -540,   1024}, {0xc0, 0x30, 0x9e, 0xff}}},\n    {{{   -62,    106,    -67}, 0, {  -288,    328}, {0xe7, 0x7b, 0xf2, 0xff}}},\n    {{{   -60,   -108,    -67}, 0, {  -228,   -428}, {0xe9, 0x85, 0xf2, 0xff}}},\n    {{{   -76,    -73,    -91}, 0, {  -344,    416}, {0xc1, 0xcf, 0x9e, 0xff}}},\n    {{{    64,    -77,    -64}, 0, {  2188,   -424}, {0x36, 0xac, 0xb3, 0xff}}},\n};\n\n// 0x06011718\nstatic const Vtx bub_seg6_vertex_06011718[] = {\n    {{{   -76,    -73,    -91}, 0, {     0,      0}, {0xc1, 0xcf, 0x9e, 0xff}}},\n    {{{  -107,     -1,    -79}, 0, {     0,      0}, {0x83, 0x00, 0xef, 0xff}}},\n    {{{   -83,     -1,   -102}, 0, {     0,      0}, {0xcb, 0x00, 0x8d, 0xff}}},\n    {{{   -89,     -1,    -52}, 0, {     0,      0}, {0x8e, 0x00, 0xca, 0xff}}},\n    {{{   -77,     71,    -91}, 0, {     0,      0}, {0xc0, 0x30, 0x9e, 0xff}}},\n    {{{  -138,     -1,    -51}, 0, {     0,      0}, {0xa1, 0x00, 0xad, 0xff}}},\n    {{{  -102,     68,    -23}, 0, {     0,      0}, {0x9e, 0x4f, 0x00, 0xff}}},\n    {{{   -62,    106,    -67}, 0, {     0,      0}, {0xe7, 0x7b, 0xf2, 0xff}}},\n    {{{  -100,    -71,    -23}, 0, {     0,      0}, {0x9f, 0xaf, 0x00, 0xff}}},\n    {{{  -113,     -1,      6}, 0, {     0,      0}, {0x87, 0x00, 0x26, 0xff}}},\n    {{{  -147,     -1,    -24}, 0, {     0,      0}, {0x87, 0x00, 0x24, 0xff}}},\n    {{{   -60,   -108,    -67}, 0, {     0,      0}, {0xe9, 0x85, 0xf2, 0xff}}},\n};\n\n// 0x060117D8\nstatic const Vtx bub_seg6_vertex_060117D8[] = {\n    {{{    63,     77,    -64}, 0, {     0,      0}, {0x35, 0x55, 0xb3, 0xff}}},\n    {{{    85,      0,    -97}, 0, {     0,      0}, {0x43, 0x00, 0x95, 0xff}}},\n    {{{   -24,      0,   -108}, 0, {     0,      0}, {0x07, 0x00, 0x82, 0xff}}},\n    {{{   -83,     -1,   -102}, 0, {     0,      0}, {0xcb, 0x00, 0x8d, 0xff}}},\n    {{{   -77,     71,    -91}, 0, {     0,      0}, {0xc0, 0x30, 0x9e, 0xff}}},\n    {{{    64,    -77,    -64}, 0, {     0,      0}, {0x36, 0xac, 0xb3, 0xff}}},\n    {{{   -76,    -73,    -91}, 0, {     0,      0}, {0xc1, 0xcf, 0x9e, 0xff}}},\n};\n\n// 0x06011848 - 0x060118C0\nconst Gfx bub_seg6_dl_06011848[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bub_seg6_texture_0600E2A8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bub_seg6_lights_0600E280.l, 1),\n    gsSPLight(&bub_seg6_lights_0600E280.a, 2),\n    gsSPVertex(bub_seg6_vertex_060112A8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bub_seg6_vertex_06011388, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x060118C0 - 0x06011918\nconst Gfx bub_seg6_dl_060118C0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bub_seg6_texture_0600EAA8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bub_seg6_vertex_060113B8, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  5,  2,  1, 0x0),\n    gsSP2Triangles( 5,  3,  2, 0x0,  4,  3,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06011918 - 0x06011968\nconst Gfx bub_seg6_dl_06011918[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bub_seg6_texture_0600F2A8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bub_seg6_vertex_06011418, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0,  6,  2,  4, 0x0),\n    gsSP1Triangle( 6,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06011968 - 0x06011A50\nconst Gfx bub_seg6_dl_06011968[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bub_seg6_texture_060102A8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bub_seg6_vertex_06011488, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  7,  5,  4, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  9, 10,  0, 0x0),\n    gsSP2Triangles( 9,  0, 11, 0x0, 11, 12,  9, 0x0),\n    gsSP2Triangles(10, 13,  0, 0x0, 13,  1,  0, 0x0),\n    gsSP2Triangles( 2, 11,  0, 0x0, 11, 14, 12, 0x0),\n    gsSPVertex(bub_seg6_vertex_06011578, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  5,  4,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bub_seg6_vertex_06011658, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06011A50 - 0x06011B28\nconst Gfx bub_seg6_dl_06011A50[] = {\n    gsSPLight(&bub_seg6_lights_0600E290.l, 1),\n    gsSPLight(&bub_seg6_lights_0600E290.a, 2),\n    gsSPVertex(bub_seg6_vertex_06011718, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 3,  5,  4, 0x0,  0,  5,  3, 0x0),\n    gsSP2Triangles( 6,  7,  4, 0x0,  4,  5,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8,  5,  0, 0x0),\n    gsSP2Triangles( 0, 11,  8, 0x0,  8, 10,  5, 0x0),\n    gsSP2Triangles( 5, 10,  6, 0x0, 10,  9,  6, 0x0),\n    gsSPLight(&bub_seg6_lights_0600E280.l, 1),\n    gsSPLight(&bub_seg6_lights_0600E280.a, 2),\n    gsSPVertex(bub_seg6_vertex_060117D8, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 2,  1,  5, 0x0,  2,  5,  6, 0x0),\n    gsSP2Triangles( 2,  6,  3, 0x0,  0,  2,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06011B28 - 0x06011BD8\nconst Gfx bub_seg6_dl_06011B28[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bub_seg6_dl_06011848),\n    gsSPDisplayList(bub_seg6_dl_060118C0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bub_seg6_dl_06011918),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bub_seg6_dl_06011968),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(bub_seg6_dl_06011A50),\n    gsSPEndDisplayList(),\n};\n\n// 0x06011BD8\nstatic const Vtx bub_seg6_vertex_06011BD8[] = {\n    {{{    45,     16,      2}, 0, {   488,    418}, {0x04, 0x7e, 0x00, 0xff}}},\n    {{{    61,      1,    -60}, 0, {   996,    234}, {0x1d, 0xff, 0x85, 0xff}}},\n    {{{     0,      0,    -16}, 0, {   634,    976}, {0x91, 0xfe, 0xc4, 0xff}}},\n    {{{     0,      0,     22}, 0, {   320,    974}, {0x90, 0xfe, 0x3b, 0xff}}},\n    {{{    61,      1,     66}, 0, {   -16,    226}, {0x1e, 0xff, 0x7b, 0xff}}},\n    {{{    81,      1,     26}, 0, {   306,    -18}, {0x7c, 0x00, 0x1a, 0xff}}},\n    {{{    81,      1,    -20}, 0, {   682,    -16}, {0x7c, 0x00, 0xe5, 0xff}}},\n    {{{    46,    -14,      2}, 0, {   488,    412}, {0x07, 0x82, 0x00, 0xff}}},\n};\n\n// 0x06011C58 - 0x06011CF0\nconst Gfx bub_seg6_dl_06011C58[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bub_seg6_texture_0600EAA8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bub_seg6_lights_0600E280.l, 1),\n    gsSPLight(&bub_seg6_lights_0600E280.a, 2),\n    gsSPVertex(bub_seg6_vertex_06011BD8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  0, 0x0,  0,  5,  6, 0x0),\n    gsSP2Triangles( 6,  1,  0, 0x0,  4,  0,  3, 0x0),\n    gsSP2Triangles( 6,  5,  7, 0x0,  5,  4,  7, 0x0),\n    gsSP2Triangles( 7,  1,  6, 0x0,  2,  7,  3, 0x0),\n    gsSP2Triangles( 3,  7,  4, 0x0,  1,  7,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06011CF0 - 0x06011D50\nconst Gfx bub_seg6_dl_06011CF0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bub_seg6_dl_06011C58),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x06011D50\nstatic const Vtx bub_seg6_vertex_06011D50[] = {\n    {{{   113,     -7,      0}, 0, {   586,    220}, {0x4b, 0x9b, 0x0c, 0xff}}},\n    {{{   113,     12,      0}, 0, {   584,    220}, {0x33, 0x73, 0xf7, 0xff}}},\n    {{{    84,      7,     42}, 0, {   120,    132}, {0x37, 0x30, 0x67, 0xff}}},\n    {{{    -9,      0,      0}, 0, {   182,    954}, {0xb1, 0x00, 0x63, 0xff}}},\n    {{{    84,     -2,     42}, 0, {   120,    132}, {0x17, 0xbd, 0x69, 0xff}}},\n    {{{    69,      1,    -51}, 0, {   900,    814}, {0x48, 0x00, 0x98, 0xff}}},\n    {{{    18,      1,    -30}, 0, {   540,    978}, {0xbb, 0xfe, 0x96, 0xff}}},\n};\n\n// 0x06011DC0 - 0x06011E48\nconst Gfx bub_seg6_dl_06011DC0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bub_seg6_texture_0600EAA8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bub_seg6_lights_0600E280.l, 1),\n    gsSPLight(&bub_seg6_lights_0600E280.a, 2),\n    gsSPVertex(bub_seg6_vertex_06011D50, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 2,  4,  0, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 3,  0,  4, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 6,  5,  0, 0x0,  3,  6,  0, 0x0),\n    gsSP2Triangles( 1,  5,  6, 0x0,  6,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06011E48 - 0x06011EA8\nconst Gfx bub_seg6_dl_06011E48[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bub_seg6_dl_06011DC0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x06011EA8\nstatic const Vtx bub_seg6_vertex_06011EA8[] = {\n    {{{   127,      8,      0}, 0, {   454,    956}, {0x4a, 0x65, 0x0d, 0xff}}},\n    {{{    31,      0,    -30}, 0, {   138,      4}, {0xbb, 0x01, 0x96, 0xff}}},\n    {{{     3,      0,      0}, 0, {   518,    -40}, {0xb3, 0x00, 0x64, 0xff}}},\n    {{{    82,      0,    -52}, 0, {  -152,    282}, {0x4a, 0x00, 0x99, 0xff}}},\n    {{{   127,    -10,      0}, 0, {   454,    956}, {0x34, 0x8d, 0xf8, 0xff}}},\n    {{{    97,      4,     41}, 0, {   974,    972}, {0x17, 0x43, 0x69, 0xff}}},\n    {{{    97,     -5,     41}, 0, {   974,    972}, {0x36, 0xd1, 0x68, 0xff}}},\n};\n\n// 0x06011F18 - 0x06011FA0\nconst Gfx bub_seg6_dl_06011F18[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bub_seg6_texture_0600EAA8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bub_seg6_lights_0600E280.l, 1),\n    gsSPLight(&bub_seg6_lights_0600E280.a, 2),\n    gsSPVertex(bub_seg6_vertex_06011EA8, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  3,  0, 0x0,  0,  5,  6, 0x0),\n    gsSP2Triangles( 5,  0,  2, 0x0,  6,  4,  0, 0x0),\n    gsSP2Triangles( 6,  5,  2, 0x0,  4,  6,  2, 0x0),\n    gsSP2Triangles( 4,  2,  1, 0x0,  1,  3,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06011FA0 - 0x06012000\nconst Gfx bub_seg6_dl_06011FA0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bub_seg6_dl_06011F18),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/bubba/geo.inc.c",
    "content": "// 0x0C000000\nconst GeoLayout bubba_geo[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_SWITCH_CASE(2, geo_switch_anim_state),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, bubba_seg5_dl_05004E80),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, bubba_seg5_dl_05005978),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/bubba/model.inc.c",
    "content": "// Possible Removed Actor File\n// It's possible that bubba and bub used to be 2 \"actors\" in\n// one actor file.\n\n// Bin ID? What is this?\nUNUSED static const u64 bubba_unused_1 = 0;\n\n// Bubba\n\n// 0x05000008\nALIGNED8 static const Texture bubba_seg5_texture_05000008[] = {\n#include \"actors/bubba/bubba_sunglasses.rgba16.inc.c\"\n};\n\n// unused eye texture, assumed leftover from when actor file was copied from bub\n// 0x05000408\nALIGNED8 static const Texture bubba_seg5_texture_05000408[] = {\n#include \"actors/bubba/bubba_eyes_unused.rgba16.inc.c\"\n};\n\n// 0x05001408\nALIGNED8 static const Texture bubba_seg5_texture_05001408[] = {\n#include \"actors/bubba/bubba_eye_border.rgba16.inc.c\"\n};\n\n// 0x05001C08\nALIGNED8 static const Texture bubba_seg5_texture_05001C08[] = {\n#include \"actors/bubba/bubba_fins.rgba16.inc.c\"\n};\n\n// 0x05002408\nALIGNED8 static const Texture bubba_seg5_texture_05002408[] = {\n#include \"actors/bubba/bubba_scales.rgba16.inc.c\"\n};\n\n// 0x05004408\nstatic const Lights1 bubba_seg5_lights_05004408 = gdSPDefLights1(\n    0x48, 0x31, 0x2a,\n    0xf1, 0xa6, 0x8c, 0x28, 0x28, 0x28\n);\n\n// 0x05004420\nstatic const Lights1 bubba_seg5_lights_05004420 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05004438\nstatic const Lights1 bubba_seg5_lights_05004438 = gdSPDefLights1(\n    0x10, 0x07, 0x08,\n    0x36, 0x1a, 0x1c, 0x28, 0x28, 0x28\n);\n\n// 0x05004450\nstatic const Vtx bubba_seg5_vertex_05004450[] = {\n    {{{   239,   -320,    320}, 0, {   203,    530}, {0x44, 0xad, 0x42, 0xff}}},\n    {{{     6,   -197,    290}, 0, {   372,    190}, {0x00, 0x99, 0x49, 0xff}}},\n    {{{     6,   -284,    420}, 0, {   267,    636}, {0x01, 0x07, 0x7e, 0xff}}},\n    {{{   123,   -217,    469}, 0, {   369,    578}, {0x09, 0x99, 0x48, 0xff}}},\n    {{{     7,   -195,    518}, 0, {   407,    618}, {0x00, 0xaf, 0x61, 0xff}}},\n    {{{  -109,   -217,    471}, 0, {   369,    580}, {0xf8, 0x99, 0x48, 0xff}}},\n    {{{  -227,   -320,    324}, 0, {   203,    536}, {0xbd, 0xad, 0x43, 0xff}}},\n};\n\n// 0x050044C0\nstatic const Vtx bubba_seg5_vertex_050044C0[] = {\n    {{{  -512,   -352,     46}, 0, {   856,    794}, {0xab, 0xa7, 0xe5, 0xff}}},\n    {{{  -248,   -181,    193}, 0, {    94,    684}, {0xf5, 0x65, 0x4b, 0xff}}},\n    {{{  -508,   -306,    182}, 0, {   816,    650}, {0xaf, 0x47, 0x41, 0xff}}},\n    {{{  -451,   -258,    151}, 0, {   664,    694}, {0xb3, 0x64, 0x08, 0xff}}},\n    {{{  -450,   -258,     81}, 0, {   678,    768}, {0xc5, 0x6b, 0xe1, 0xff}}},\n    {{{  -352,   -273,    -31}, 0, {   432,    906}, {0xdc, 0x4c, 0xa2, 0xff}}},\n    {{{  -269,   -214,     84}, 0, {   176,    796}, {0x6b, 0x1b, 0xc3, 0xff}}},\n    {{{     4,    -82,   -352}, 0, {   384,    704}, {0x00, 0xc4, 0x6f, 0xff}}},\n    {{{     3,     43,   -352}, 0, {   554,    698}, {0xff, 0x3c, 0x6f, 0xff}}},\n    {{{   -44,    -19,   -501}, 0, {   458,    800}, {0x82, 0xff, 0xfa, 0xff}}},\n    {{{    52,    -18,   -501}, 0, {   458,    800}, {0x7e, 0x01, 0xfa, 0xff}}},\n    {{{     6,   -222,   -550}, 0, {   182,    844}, {0x00, 0x85, 0xe1, 0xff}}},\n    {{{     1,    184,   -550}, 0, {   728,    822}, {0xff, 0x7b, 0xe2, 0xff}}},\n    {{{     4,    -94,   -615}, 0, {   348,    880}, {0x00, 0xe5, 0x84, 0xff}}},\n    {{{     3,     56,   -615}, 0, {   552,    872}, {0x00, 0x1b, 0x84, 0xff}}},\n};\n\n// 0x050045B0\nstatic const Vtx bubba_seg5_vertex_050045B0[] = {\n    {{{   513,   -352,     46}, 0, {   482,    860}, {0x55, 0xa7, 0xe5, 0xff}}},\n    {{{   353,   -273,    -31}, 0, {   896,    900}, {0x24, 0x4c, 0xa2, 0xff}}},\n    {{{   451,   -258,     81}, 0, {   626,    798}, {0x3b, 0x6b, 0xe1, 0xff}}},\n    {{{   452,   -258,    151}, 0, {   608,    716}, {0x4d, 0x64, 0x08, 0xff}}},\n    {{{   509,   -306,    182}, 0, {   458,    698}, {0x51, 0x47, 0x41, 0xff}}},\n    {{{   270,   -214,     84}, 0, {  1072,    736}, {0x95, 0x1b, 0xc3, 0xff}}},\n    {{{   249,   -181,    193}, 0, {  1098,    600}, {0x0b, 0x65, 0x4b, 0xff}}},\n};\n\n// 0x05004620\nstatic const Vtx bubba_seg5_vertex_05004620[] = {\n    {{{    51,    274,    117}, 0, {   360,    626}, {0x6b, 0x41, 0x12, 0xff}}},\n    {{{     5,    317,    341}, 0, {   -14,    458}, {0x00, 0x59, 0x5a, 0xff}}},\n    {{{     5,    215,    291}, 0, {    72,    912}, {0x01, 0x59, 0x5a, 0xff}}},\n    {{{   -42,    274,    118}, 0, {   358,    626}, {0x96, 0x41, 0x13, 0xff}}},\n    {{{     3,    404,    -20}, 0, {   586,     18}, {0x00, 0x7e, 0xf2, 0xff}}},\n    {{{     1,    191,   -223}, 0, {   928,    960}, {0x00, 0x6d, 0xbf, 0xff}}},\n};\n\n// 0x05004680\nstatic const Vtx bubba_seg5_vertex_05004680[] = {\n    {{{   261,    127,    217}, 0, {     0,  -2344}, {0x5f, 0x53, 0x07, 0xff}}},\n    {{{   350,   -212,    251}, 0, {  -196,   -646}, {0x7c, 0xf6, 0x18, 0xff}}},\n    {{{   222,     29,   -150}, 0, {  1808,  -1854}, {0x68, 0x23, 0xc1, 0xff}}},\n    {{{     0,     44,   -355}, 0, {  2828,  -1928}, {0x00, 0x2f, 0x8b, 0xff}}},\n    {{{     0,    -85,   -355}, 0, {  2828,  -1278}, {0xff, 0xe3, 0x85, 0xff}}},\n    {{{  -218,     29,   -147}, 0, {  1788,  -1854}, {0x97, 0x23, 0xc3, 0xff}}},\n    {{{     1,    191,   -223}, 0, {  2172,  -2664}, {0x00, 0x6d, 0xbf, 0xff}}},\n    {{{  -246,   -210,   -101}, 0, {  1560,   -654}, {0xa7, 0xb8, 0xcc, 0xff}}},\n    {{{  -251,    127,    221}, 0, {   -48,  -2344}, {0xa1, 0x53, 0x08, 0xff}}},\n    {{{  -339,   -212,    257}, 0, {  -224,   -646}, {0x85, 0xf6, 0x1a, 0xff}}},\n    {{{     1,   -337,   -197}, 0, {  2040,    -22}, {0x00, 0x95, 0xbd, 0xff}}},\n    {{{   251,   -210,   -105}, 0, {  1580,   -654}, {0x58, 0xb8, 0xca, 0xff}}},\n    {{{  -227,   -320,    324}, 0, {  -560,   -106}, {0xbd, 0xad, 0x43, 0xff}}},\n    {{{   230,   -105,    361}, 0, {  -744,  -1182}, {0x5d, 0x15, 0x53, 0xff}}},\n    {{{   239,   -320,    320}, 0, {  -540,   -106}, {0x44, 0xad, 0x42, 0xff}}},\n    {{{    51,    274,    117}, 0, {   468,  -3076}, {0x6b, 0x41, 0x12, 0xff}}},\n};\n\n// 0x05004780\nstatic const Vtx bubba_seg5_vertex_05004780[] = {\n    {{{   -42,    274,    118}, 0, {   464,  -3076}, {0x96, 0x41, 0x13, 0xff}}},\n    {{{     1,    191,   -223}, 0, {  2172,  -2664}, {0x00, 0x6d, 0xbf, 0xff}}},\n    {{{  -251,    127,    221}, 0, {   -48,  -2344}, {0xa1, 0x53, 0x08, 0xff}}},\n    {{{   -58,     79,    436}, 0, { -1120,  -2104}, {0xe3, 0x42, 0x67, 0xff}}},\n    {{{     5,    215,    291}, 0, {  -396,  -2784}, {0x01, 0x59, 0x5a, 0xff}}},\n    {{{  -217,   -105,    364}, 0, {  -760,  -1182}, {0xa4, 0x15, 0x54, 0xff}}},\n    {{{  -339,   -212,    257}, 0, {  -224,   -646}, {0x85, 0xf6, 0x1a, 0xff}}},\n    {{{   230,   -105,    361}, 0, {  -744,  -1182}, {0x5d, 0x15, 0x53, 0xff}}},\n    {{{   350,   -212,    251}, 0, {  -196,   -646}, {0x7c, 0xf6, 0x18, 0xff}}},\n    {{{   261,    127,    217}, 0, {     0,  -2344}, {0x5f, 0x53, 0x07, 0xff}}},\n    {{{    65,     79,    434}, 0, { -1108,  -2104}, {0x1f, 0x42, 0x67, 0xff}}},\n    {{{    51,    274,    117}, 0, {   468,  -3076}, {0x6b, 0x41, 0x12, 0xff}}},\n    {{{   239,   -320,    320}, 0, {  -540,   -106}, {0x44, 0xad, 0x42, 0xff}}},\n    {{{   251,   -210,   -105}, 0, {  1580,   -654}, {0x58, 0xb8, 0xca, 0xff}}},\n    {{{  -227,   -320,    324}, 0, {  -560,   -106}, {0xbd, 0xad, 0x43, 0xff}}},\n};\n\n// 0x05004870\nstatic const Vtx bubba_seg5_vertex_05004870[] = {\n    {{{   129,   -136,    504}, 0, {     0,      0}, {0x48, 0xf3, 0x67, 0xff}}},\n    {{{   123,   -217,    469}, 0, {     0,      0}, {0x09, 0x99, 0x48, 0xff}}},\n    {{{   239,   -320,    320}, 0, {     0,      0}, {0x44, 0xad, 0x42, 0xff}}},\n    {{{   230,   -105,    361}, 0, {     0,      0}, {0x5d, 0x15, 0x53, 0xff}}},\n    {{{     6,   -284,    420}, 0, {     0,      0}, {0x01, 0x07, 0x7e, 0xff}}},\n    {{{     6,   -357,    343}, 0, {     0,      0}, {0x00, 0x8d, 0x35, 0xff}}},\n    {{{  -227,   -320,    324}, 0, {     0,      0}, {0xbd, 0xad, 0x43, 0xff}}},\n    {{{     7,    -24,    547}, 0, {     0,      0}, {0x00, 0x4b, 0x65, 0xff}}},\n    {{{     6,     -7,    415}, 0, {     0,      0}, {0x01, 0x26, 0x78, 0xff}}},\n    {{{  -217,   -105,    364}, 0, {     0,      0}, {0xa4, 0x15, 0x54, 0xff}}},\n    {{{  -115,   -136,    506}, 0, {     0,      0}, {0xba, 0xf3, 0x68, 0xff}}},\n    {{{     7,   -195,    518}, 0, {     0,      0}, {0x00, 0xaf, 0x61, 0xff}}},\n    {{{  -109,   -217,    471}, 0, {     0,      0}, {0xf8, 0x99, 0x48, 0xff}}},\n};\n\n// 0x05004940\nstatic const Vtx bubba_seg5_vertex_05004940[] = {\n    {{{  -217,   -105,    364}, 0, {     0,      0}, {0xa4, 0x15, 0x54, 0xff}}},\n    {{{  -255,    129,    314}, 0, {     0,      0}, {0xa6, 0x42, 0x3b, 0xff}}},\n    {{{  -251,    127,    221}, 0, {     0,      0}, {0xa1, 0x53, 0x08, 0xff}}},\n    {{{    65,     79,    434}, 0, {     0,      0}, {0x1f, 0x42, 0x67, 0xff}}},\n    {{{     6,     -7,    415}, 0, {     0,      0}, {0x01, 0x26, 0x78, 0xff}}},\n    {{{   230,   -105,    361}, 0, {     0,      0}, {0x5d, 0x15, 0x53, 0xff}}},\n    {{{   267,    129,    309}, 0, {     0,      0}, {0x5b, 0x42, 0x39, 0xff}}},\n    {{{   261,    127,    217}, 0, {     0,      0}, {0x5f, 0x53, 0x07, 0xff}}},\n    {{{   -58,     79,    436}, 0, {     0,      0}, {0xe3, 0x42, 0x67, 0xff}}},\n};\n\n// 0x050049D0\nstatic const Vtx bubba_seg5_vertex_050049D0[] = {\n    {{{     4,   -377,    154}, 0, {     0,      0}, {0x00, 0x82, 0xf7, 0xff}}},\n    {{{   239,   -320,    320}, 0, {     0,      0}, {0x44, 0xad, 0x42, 0xff}}},\n    {{{     6,   -357,    343}, 0, {     0,      0}, {0x00, 0x8d, 0x35, 0xff}}},\n    {{{   251,   -210,   -105}, 0, {     0,      0}, {0x58, 0xb8, 0xca, 0xff}}},\n    {{{  -246,   -210,   -101}, 0, {     0,      0}, {0xa7, 0xb8, 0xcc, 0xff}}},\n    {{{     1,   -337,   -197}, 0, {     0,      0}, {0x00, 0x95, 0xbd, 0xff}}},\n    {{{  -227,   -320,    324}, 0, {     0,      0}, {0xbd, 0xad, 0x43, 0xff}}},\n};\n\n// 0x05004A40 - 0x05004AA8\nconst Gfx bubba_seg5_dl_05004A40[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bubba_seg5_texture_05000008),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bubba_seg5_lights_05004408.l, 1),\n    gsSPLight(&bubba_seg5_lights_05004408.a, 2),\n    gsSPVertex(bubba_seg5_vertex_05004450, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  1,  3, 0x0,  5,  1,  4, 0x0),\n    gsSP2Triangles( 1,  6,  2, 0x0,  5,  6,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004AA8 - 0x05004BE8\nconst Gfx bubba_seg5_dl_05004AA8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bubba_seg5_texture_05001408),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bubba_seg5_lights_05004420.l, 1),\n    gsSPLight(&bubba_seg5_lights_05004420.a, 2),\n    gsSPVertex(bubba_seg5_vertex_050044C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 0,  2,  3, 0x0,  5,  0,  4, 0x0),\n    gsSP2Triangles( 5,  6,  0, 0x0,  0,  6,  1, 0x0),\n    gsSP2Triangles( 6,  4,  1, 0x0,  1,  4,  3, 0x0),\n    gsSP2Triangles( 1,  3,  2, 0x0,  5,  4,  6, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0, 10,  8,  7, 0x0),\n    gsSP2Triangles( 9, 11,  7, 0x0, 10,  7, 11, 0x0),\n    gsSP2Triangles( 9,  8, 12, 0x0, 12,  8, 10, 0x0),\n    gsSP2Triangles(13,  9, 14, 0x0,  9, 12, 14, 0x0),\n    gsSP2Triangles(13, 11,  9, 0x0, 12, 10, 14, 0x0),\n    gsSP2Triangles(13, 14, 10, 0x0, 10, 11, 13, 0x0),\n    gsSPVertex(bubba_seg5_vertex_050045B0, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  4,  0, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 0,  6,  5, 0x0,  4,  6,  0, 0x0),\n    gsSP2Triangles( 6,  2,  5, 0x0,  2,  1,  5, 0x0),\n    gsSP2Triangles( 6,  3,  2, 0x0,  3,  6,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004BE8 - 0x05004C40\nconst Gfx bubba_seg5_dl_05004BE8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bubba_seg5_texture_05001C08),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bubba_seg5_vertex_05004620, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  1,  0,  4, 0x0),\n    gsSP2Triangles( 4,  5,  3, 0x0,  4,  0,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004C40 - 0x05004D48\nconst Gfx bubba_seg5_dl_05004C40[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bubba_seg5_texture_05002408),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bubba_seg5_vertex_05004680, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  5,  4,  7, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  9,  8,  5, 0x0),\n    gsSP2Triangles( 9,  5,  7, 0x0,  2,  4,  3, 0x0),\n    gsSP2Triangles(10,  4, 11, 0x0,  7,  4, 10, 0x0),\n    gsSP2Triangles(11,  4,  2, 0x0,  9,  7, 12, 0x0),\n    gsSP2Triangles( 2,  3,  6, 0x0,  0,  2,  6, 0x0),\n    gsSP2Triangles( 2,  1, 11, 0x0,  1, 13, 14, 0x0),\n    gsSP1Triangle( 0,  6, 15, 0x0),\n    gsSPVertex(bubba_seg5_vertex_05004780, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 2,  3,  0, 0x0,  5,  2,  6, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(11,  4, 10, 0x0, 10,  4,  3, 0x0),\n    gsSP2Triangles(12, 13,  8, 0x0,  5,  6, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004D48 - 0x05004E80\nconst Gfx bubba_seg5_dl_05004D48[] = {\n    gsSPLight(&bubba_seg5_lights_05004408.l, 1),\n    gsSPLight(&bubba_seg5_lights_05004408.a, 2),\n    gsSPVertex(bubba_seg5_vertex_05004870, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  4,  6,  5, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  8,  7,  3, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  7, 11,  0, 0x0),\n    gsSP2Triangles(10, 11,  7, 0x0,  3,  7,  0, 0x0),\n    gsSP2Triangles( 0, 11,  1, 0x0,  6, 10,  9, 0x0),\n    gsSP2Triangles(12, 10,  6, 0x0, 12, 11, 10, 0x0),\n    gsSPLight(&bubba_seg5_lights_05004438.l, 1),\n    gsSPLight(&bubba_seg5_lights_05004438.a, 2),\n    gsSPVertex(bubba_seg5_vertex_05004940, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  5,  6,  3, 0x0),\n    gsSP2Triangles( 3,  8,  4, 0x0,  7,  6,  5, 0x0),\n    gsSP2Triangles( 8,  2,  1, 0x0,  8,  1,  0, 0x0),\n    gsSP1Triangle( 4,  8,  0, 0x0),\n    gsSPLight(&bubba_seg5_lights_05004420.l, 1),\n    gsSPLight(&bubba_seg5_lights_05004420.a, 2),\n    gsSPVertex(bubba_seg5_vertex_050049D0, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  0, 0x0,  0,  5,  3, 0x0),\n    gsSP2Triangles( 2,  6,  0, 0x0,  6,  4,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004E80 - 0x05004F30\nconst Gfx bubba_seg5_dl_05004E80[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bubba_seg5_dl_05004A40),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bubba_seg5_dl_05004AA8),\n    gsSPDisplayList(bubba_seg5_dl_05004BE8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bubba_seg5_dl_05004C40),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(bubba_seg5_dl_05004D48),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004F30\nstatic const Lights1 bubba_seg5_lights_05004F30 = gdSPDefLights1(\n    0x48, 0x31, 0x2a,\n    0xf1, 0xa6, 0x8c, 0x28, 0x28, 0x28\n);\n\n// 0x05004F48\nstatic const Lights1 bubba_seg5_lights_05004F50 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05004F60\nstatic const Lights1 bubba_seg5_lights_05004F60 = gdSPDefLights1(\n    0x0a, 0x07, 0x08,\n    0x22, 0x1a, 0x1c, 0x28, 0x28, 0x28\n);\n\n// 0x05004F78\nstatic const Vtx bubba_seg5_vertex_05004F78[] = {\n    {{{     6,   -194,     96}, 0, {   405,     48}, {0x00, 0xbf, 0x6d, 0xff}}},\n    {{{  -227,   -437,    270}, 0, {   201,    516}, {0xba, 0xb3, 0x47, 0xff}}},\n    {{{     6,   -401,    385}, 0, {   222,    642}, {0x00, 0x0b, 0x7e, 0xff}}},\n    {{{     7,    -58,    559}, 0, {   485,    556}, {0x00, 0xb2, 0x64, 0xff}}},\n    {{{   123,    -93,    488}, 0, {   461,    492}, {0xf6, 0xa6, 0x58, 0xff}}},\n    {{{   239,   -437,    266}, 0, {   201,    512}, {0x47, 0xb3, 0x46, 0xff}}},\n    {{{  -108,    -93,    488}, 0, {   461,    492}, {0x0c, 0xa5, 0x57, 0xff}}},\n};\n\n// 0x05004FE8\nstatic const Vtx bubba_seg5_vertex_05004FE8[] = {\n    {{{   513,   -352,     46}, 0, {   482,    860}, {0x55, 0xa7, 0xe5, 0xff}}},\n    {{{   451,   -258,     81}, 0, {   626,    798}, {0x3b, 0x6b, 0xe1, 0xff}}},\n    {{{   452,   -258,    151}, 0, {   608,    716}, {0x4d, 0x64, 0x08, 0xff}}},\n    {{{   270,   -214,     84}, 0, {  1072,    736}, {0x95, 0x1b, 0xc3, 0xff}}},\n    {{{   353,   -273,    -31}, 0, {   896,    900}, {0x24, 0x4c, 0xa2, 0xff}}},\n    {{{   249,   -181,    193}, 0, {  1098,    600}, {0x0b, 0x65, 0x4b, 0xff}}},\n    {{{   509,   -306,    182}, 0, {   458,    698}, {0x51, 0x47, 0x41, 0xff}}},\n    {{{     1,    184,   -550}, 0, {   728,    822}, {0xff, 0x7b, 0xe2, 0xff}}},\n    {{{     3,     43,   -352}, 0, {   554,    698}, {0xff, 0x3c, 0x6f, 0xff}}},\n    {{{    52,    -18,   -501}, 0, {   458,    800}, {0x7e, 0x01, 0xfa, 0xff}}},\n    {{{     4,    -94,   -615}, 0, {   348,    880}, {0x00, 0xe5, 0x84, 0xff}}},\n    {{{     3,     56,   -615}, 0, {   552,    872}, {0x00, 0x1b, 0x84, 0xff}}},\n    {{{     4,    -82,   -352}, 0, {   384,    704}, {0x00, 0xc4, 0x6f, 0xff}}},\n    {{{     6,   -222,   -550}, 0, {   182,    844}, {0x00, 0x85, 0xe1, 0xff}}},\n    {{{   -44,    -19,   -501}, 0, {   458,    800}, {0x82, 0xff, 0xfa, 0xff}}},\n};\n\n// 0x050050D8\nstatic const Vtx bubba_seg5_vertex_050050D8[] = {\n    {{{  -512,   -352,     46}, 0, {   856,    794}, {0xab, 0xa7, 0xe5, 0xff}}},\n    {{{  -508,   -306,    182}, 0, {   816,    650}, {0xaf, 0x47, 0x41, 0xff}}},\n    {{{  -451,   -258,    151}, 0, {   664,    694}, {0xb3, 0x64, 0x08, 0xff}}},\n    {{{  -450,   -258,     81}, 0, {   678,    768}, {0xc5, 0x6b, 0xe1, 0xff}}},\n    {{{  -248,   -181,    193}, 0, {    94,    684}, {0xf5, 0x65, 0x4b, 0xff}}},\n    {{{  -352,   -273,    -31}, 0, {   432,    906}, {0xdc, 0x4c, 0xa2, 0xff}}},\n    {{{  -269,   -214,     84}, 0, {   176,    796}, {0x6b, 0x1b, 0xc3, 0xff}}},\n};\n\n// 0x05005148\nstatic const Vtx bubba_seg5_vertex_05005148[] = {\n    {{{     5,    465,    287}, 0, {   -14,    458}, {0x00, 0x43, 0x6b, 0xff}}},\n    {{{    51,    274,    117}, 0, {   360,    626}, {0x6a, 0x44, 0x06, 0xff}}},\n    {{{     3,    404,    -20}, 0, {   586,     18}, {0x00, 0x71, 0xc7, 0xff}}},\n    {{{     5,    317,    249}, 0, {    72,    912}, {0x01, 0x5d, 0x56, 0xff}}},\n    {{{   -42,    274,    118}, 0, {   358,    626}, {0x96, 0x44, 0x07, 0xff}}},\n    {{{     1,    191,   -223}, 0, {   928,    960}, {0x00, 0x6b, 0xbd, 0xff}}},\n};\n\n// 0x050051A8\nstatic const Vtx bubba_seg5_vertex_050051A8[] = {\n    {{{  -339,   -241,    257}, 0, {  -224,   -646}, {0x83, 0xf8, 0x14, 0xff}}},\n    {{{  -251,    216,    243}, 0, {   -48,  -2344}, {0xa6, 0x59, 0xfe, 0xff}}},\n    {{{  -218,     29,   -147}, 0, {  1788,  -1854}, {0x98, 0x20, 0xc0, 0xff}}},\n    {{{     0,    -85,   -355}, 0, {  2828,  -1278}, {0xff, 0xe7, 0x84, 0xff}}},\n    {{{  -246,   -210,   -101}, 0, {  1560,   -654}, {0xa0, 0xca, 0xc2, 0xff}}},\n    {{{     1,   -356,   -213}, 0, {  2040,    -22}, {0x00, 0xa4, 0xa9, 0xff}}},\n    {{{  -227,   -437,    270}, 0, {  -560,   -106}, {0xba, 0xb3, 0x47, 0xff}}},\n    {{{   222,     29,   -150}, 0, {  1808,  -1854}, {0x67, 0x20, 0xbe, 0xff}}},\n    {{{     0,     44,   -355}, 0, {  2828,  -1928}, {0x00, 0x2f, 0x8b, 0xff}}},\n    {{{   251,   -210,   -105}, 0, {  1580,   -654}, {0x5f, 0xca, 0xc0, 0xff}}},\n    {{{   239,   -437,    266}, 0, {  -540,   -106}, {0x47, 0xb3, 0x46, 0xff}}},\n    {{{   350,   -241,    251}, 0, {  -196,   -646}, {0x7d, 0xf9, 0x11, 0xff}}},\n    {{{  -217,     18,    383}, 0, {  -760,  -1182}, {0xa0, 0x13, 0x4f, 0xff}}},\n    {{{   -42,    274,    118}, 0, {   464,  -3076}, {0x96, 0x44, 0x07, 0xff}}},\n    {{{     1,    191,   -223}, 0, {  2172,  -2664}, {0x00, 0x6b, 0xbd, 0xff}}},\n    {{{   -58,    168,    458}, 0, { -1120,  -2104}, {0xdf, 0x49, 0x61, 0xff}}},\n};\n\n// 0x050052A8\nstatic const Vtx bubba_seg5_vertex_050052A8[] = {\n    {{{   350,   -241,    251}, 0, {  -196,   -646}, {0x7d, 0xf9, 0x11, 0xff}}},\n    {{{   230,     18,    380}, 0, {  -744,  -1182}, {0x61, 0x14, 0x4e, 0xff}}},\n    {{{   239,   -437,    266}, 0, {  -540,   -106}, {0x47, 0xb3, 0x46, 0xff}}},\n    {{{   261,    216,    239}, 0, {     0,  -2344}, {0x5a, 0x59, 0xfd, 0xff}}},\n    {{{   222,     29,   -150}, 0, {  1808,  -1854}, {0x67, 0x20, 0xbe, 0xff}}},\n    {{{     0,     44,   -355}, 0, {  2828,  -1928}, {0x00, 0x2f, 0x8b, 0xff}}},\n    {{{     1,    191,   -223}, 0, {  2172,  -2664}, {0x00, 0x6b, 0xbd, 0xff}}},\n    {{{    65,    168,    456}, 0, { -1108,  -2104}, {0x23, 0x49, 0x61, 0xff}}},\n    {{{    51,    274,    117}, 0, {   468,  -3076}, {0x6a, 0x44, 0x06, 0xff}}},\n    {{{     5,    317,    249}, 0, {  -396,  -2784}, {0x01, 0x5d, 0x56, 0xff}}},\n    {{{   -58,    168,    458}, 0, { -1120,  -2104}, {0xdf, 0x49, 0x61, 0xff}}},\n    {{{   -42,    274,    118}, 0, {   464,  -3076}, {0x96, 0x44, 0x07, 0xff}}},\n};\n\n// 0x05005368\nstatic const Vtx bubba_seg5_vertex_05005368[] = {\n    {{{  -227,   -437,    270}, 0, {     0,      0}, {0xba, 0xb3, 0x47, 0xff}}},\n    {{{  -133,    -12,    525}, 0, {     0,      0}, {0xbb, 0xed, 0x68, 0xff}}},\n    {{{  -217,     18,    383}, 0, {     0,      0}, {0xa0, 0x13, 0x4f, 0xff}}},\n    {{{     6,   -401,    385}, 0, {     0,      0}, {0x00, 0x0b, 0x7e, 0xff}}},\n    {{{     6,   -503,    295}, 0, {     0,      0}, {0x00, 0x8b, 0x30, 0xff}}},\n    {{{     7,    111,    588}, 0, {     0,      0}, {0x00, 0x5b, 0x57, 0xff}}},\n    {{{     7,    -58,    559}, 0, {     0,      0}, {0x00, 0xb2, 0x64, 0xff}}},\n    {{{     6,     81,    437}, 0, {     0,      0}, {0x01, 0x31, 0x74, 0xff}}},\n    {{{   239,   -437,    266}, 0, {     0,      0}, {0x47, 0xb3, 0x46, 0xff}}},\n    {{{   150,    -12,    523}, 0, {     0,      0}, {0x47, 0xee, 0x67, 0xff}}},\n    {{{   123,    -93,    488}, 0, {     0,      0}, {0xf6, 0xa6, 0x58, 0xff}}},\n    {{{  -108,    -93,    488}, 0, {     0,      0}, {0x0c, 0xa5, 0x57, 0xff}}},\n    {{{   230,     18,    380}, 0, {     0,      0}, {0x61, 0x14, 0x4e, 0xff}}},\n};\n\n// 0x05005438\nstatic const Vtx bubba_seg5_vertex_05005438[] = {\n    {{{  -217,     18,    383}, 0, {     0,      0}, {0xa0, 0x13, 0x4f, 0xff}}},\n    {{{  -255,    217,    336}, 0, {     0,      0}, {0xa5, 0x40, 0x3c, 0xff}}},\n    {{{  -251,    216,    243}, 0, {     0,      0}, {0xa6, 0x59, 0xfe, 0xff}}},\n    {{{    65,    168,    456}, 0, {     0,      0}, {0x23, 0x49, 0x61, 0xff}}},\n    {{{   267,    217,    332}, 0, {     0,      0}, {0x5b, 0x41, 0x3a, 0xff}}},\n    {{{   261,    216,    239}, 0, {     0,      0}, {0x5a, 0x59, 0xfd, 0xff}}},\n    {{{   230,     18,    380}, 0, {     0,      0}, {0x61, 0x14, 0x4e, 0xff}}},\n    {{{     6,     81,    437}, 0, {     0,      0}, {0x01, 0x31, 0x74, 0xff}}},\n    {{{   -58,    168,    458}, 0, {     0,      0}, {0xdf, 0x49, 0x61, 0xff}}},\n};\n\n// 0x050054C8\nstatic const Vtx bubba_seg5_vertex_050054C8[] = {\n    {{{     4,   -488,     81}, 0, {     0,      0}, {0x00, 0x88, 0xd8, 0xff}}},\n    {{{   239,   -437,    266}, 0, {     0,      0}, {0x47, 0xb3, 0x46, 0xff}}},\n    {{{     6,   -503,    295}, 0, {     0,      0}, {0x00, 0x8b, 0x30, 0xff}}},\n    {{{  -227,   -437,    270}, 0, {     0,      0}, {0xba, 0xb3, 0x47, 0xff}}},\n    {{{   251,   -210,   -105}, 0, {     0,      0}, {0x5f, 0xca, 0xc0, 0xff}}},\n    {{{  -246,   -210,   -101}, 0, {     0,      0}, {0xa0, 0xca, 0xc2, 0xff}}},\n    {{{     1,   -356,   -213}, 0, {     0,      0}, {0x00, 0xa4, 0xa9, 0xff}}},\n};\n\n// 0x05005538 - 0x050055A0\nconst Gfx bubba_seg5_dl_05005538[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bubba_seg5_texture_05000008),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bubba_seg5_lights_05004F30.l, 1),\n    gsSPLight(&bubba_seg5_lights_05004F30.a, 2),\n    gsSPVertex(bubba_seg5_vertex_05004F78, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 4,  0,  5, 0x0,  5,  0,  2, 0x0),\n    gsSP2Triangles( 6,  0,  3, 0x0,  1,  0,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050055A0 - 0x050056E0\nconst Gfx bubba_seg5_dl_050055A0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bubba_seg5_texture_05001408),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bubba_seg5_lights_05004F50.l, 1),\n    gsSPLight(&bubba_seg5_lights_05004F50.a, 2),\n    gsSPVertex(bubba_seg5_vertex_05004FE8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  5,  3, 0x0,  6,  5,  0, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  2,  6,  0, 0x0),\n    gsSP2Triangles( 5,  2,  1, 0x0,  5,  1,  3, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  2,  5,  6, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0, 10, 11,  9, 0x0),\n    gsSP2Triangles( 9,  8, 12, 0x0,  7,  9, 11, 0x0),\n    gsSP2Triangles( 9, 13, 10, 0x0,  9, 12, 13, 0x0),\n    gsSP2Triangles(12,  8, 14, 0x0, 14, 13, 12, 0x0),\n    gsSP2Triangles(10, 13, 14, 0x0, 10, 14, 11, 0x0),\n    gsSP2Triangles(14,  8,  7, 0x0, 14,  7, 11, 0x0),\n    gsSPVertex(bubba_seg5_vertex_050050D8, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 4,  2,  1, 0x0,  4,  3,  2, 0x0),\n    gsSP2Triangles( 5,  0,  3, 0x0,  5,  3,  6, 0x0),\n    gsSP2Triangles( 6,  3,  4, 0x0,  0,  4,  1, 0x0),\n    gsSP2Triangles( 0,  6,  4, 0x0,  5,  6,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050056E0 - 0x05005738\nconst Gfx bubba_seg5_dl_050056E0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bubba_seg5_texture_05001C08),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bubba_seg5_vertex_05005148, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 2,  1,  5, 0x0,  2,  5,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005738 - 0x05005840\nconst Gfx bubba_seg5_dl_05005738[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bubba_seg5_texture_05002408),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bubba_seg5_vertex_050051A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 4,  3,  5, 0x0,  0,  4,  6, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  7,  3,  8, 0x0),\n    gsSP2Triangles( 5,  3,  9, 0x0,  8,  3,  2, 0x0),\n    gsSP2Triangles( 9,  3,  7, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles( 7, 11,  9, 0x0, 12,  1,  0, 0x0),\n    gsSP2Triangles(12,  0,  6, 0x0, 13, 14,  1, 0x0),\n    gsSP2Triangles( 2,  1, 14, 0x0,  1, 15, 13, 0x0),\n    gsSP1Triangle(14,  8,  2, 0x0),\n    gsSPVertex(bubba_seg5_vertex_050052A8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 1,  0,  3, 0x0,  4,  5,  6, 0x0),\n    gsSP2Triangles( 3,  4,  6, 0x0,  7,  3,  8, 0x0),\n    gsSP2Triangles( 3,  6,  8, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles( 8,  9,  7, 0x0, 10,  9, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005840 - 0x05005978\nconst Gfx bubba_seg5_dl_05005840[] = {\n    gsSPLight(&bubba_seg5_lights_05004F30.l, 1),\n    gsSPLight(&bubba_seg5_lights_05004F30.a, 2),\n    gsSPVertex(bubba_seg5_vertex_05005368, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 5,  2,  1, 0x0,  1,  6,  5, 0x0),\n    gsSP2Triangles( 5,  7,  2, 0x0,  8,  3,  4, 0x0),\n    gsSP2Triangles( 9,  6, 10, 0x0,  5,  6,  9, 0x0),\n    gsSP2Triangles(11,  6,  1, 0x0,  9, 10,  8, 0x0),\n    gsSP2Triangles(12,  5,  9, 0x0,  7,  5, 12, 0x0),\n    gsSP2Triangles( 9,  8, 12, 0x0,  0, 11,  1, 0x0),\n    gsSPLight(&bubba_seg5_lights_05004F60.l, 1),\n    gsSPLight(&bubba_seg5_lights_05004F60.a, 2),\n    gsSPVertex(bubba_seg5_vertex_05005438, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  6,  4,  3, 0x0),\n    gsSP2Triangles( 3,  7,  6, 0x0,  3,  8,  7, 0x0),\n    gsSP2Triangles( 7,  8,  0, 0x0,  8,  1,  0, 0x0),\n    gsSP1Triangle( 8,  2,  1, 0x0),\n    gsSPLight(&bubba_seg5_lights_05004F50.l, 1),\n    gsSPLight(&bubba_seg5_lights_05004F50.a, 2),\n    gsSPVertex(bubba_seg5_vertex_050054C8, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  5,  6,  0, 0x0),\n    gsSP2Triangles( 3,  5,  0, 0x0,  0,  6,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005978 - 0x05005A28\nconst Gfx bubba_seg5_dl_05005978[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bubba_seg5_dl_05005538),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bubba_seg5_dl_050055A0),\n    gsSPDisplayList(bubba_seg5_dl_050056E0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bubba_seg5_dl_05005738),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(bubba_seg5_dl_05005840),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/bubble/geo.inc.c",
    "content": "// 0x17000000\nconst GeoLayout bubble_geo[] = {\n    GEO_SWITCH_CASE(1, geo_switch_anim_state),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bubble_seg4_dl_0401DD60),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x1700001C\nconst GeoLayout purple_marble_geo[] = {\n    GEO_SWITCH_CASE(1, geo_switch_anim_state),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bubble_seg4_dl_0401DDE0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/bubble/model.inc.c",
    "content": "// Bubble\n\n// 0x0401CD20\nstatic const Vtx bubble_seg4_vertex_0401CD20[] = {\n    {{{   -16,      0,      0}, 0, {     0,    992}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    16,      0,      0}, 0, {   992,    992}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    16,     32,      0}, 0, {   992,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -16,     32,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0401CD60\nALIGNED8 static const Texture bubble_seg4_texture_0401CD60[] = {\n#include \"actors/bubble/bubble.rgba16.inc.c\"\n};\n\n// 0x0401D560\nALIGNED8 static const Texture bubble_seg4_texture_0401D560[] = {\n#include \"actors/bubble/mr_i_bubble.rgba16.inc.c\"\n};\n\n// 0x0401DD60 - 0x0401DDE0\nconst Gfx bubble_seg4_dl_0401DD60[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPLoadTextureBlock(bubble_seg4_texture_0401CD60, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 5, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(bubble_seg4_vertex_0401CD20, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0401DDE0 - 0x0401DE60\nconst Gfx bubble_seg4_dl_0401DDE0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPLoadTextureBlock(bubble_seg4_texture_0401D560, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 5, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(bubble_seg4_vertex_0401CD20, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/bullet_bill/geo.inc.c",
    "content": "// 0x0C000264\nconst GeoLayout bullet_bill_geo[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_SHADOW(SHADOW_SQUARE_PERMANENT, 0x96, 400),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, bullet_bill_seg5_dl_0500E8A8),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/bullet_bill/model.inc.c",
    "content": "// Bullet Bill\n\n// 0x0500BA90\nstatic const Lights1 bullet_bill_seg5_lights_0500BA90 = gdSPDefLights1(\n    0x06, 0x07, 0x14,\n    0x19, 0x1c, 0x52, 0x28, 0x28, 0x28\n);\n\n// 0x0500BAA8\nALIGNED8 static const Texture bullet_bill_seg5_texture_0500BAA8[] = {\n#include \"actors/bullet_bill/bullet_bill_eye.rgba16.inc.c\"\n};\n\n// 0x0500CAA8\nALIGNED8 static const Texture bullet_bill_seg5_texture_0500CAA8[] = {\n#include \"actors/bullet_bill/bullet_bill_mouth.rgba16.inc.c\"\n};\n\n// 0x0500DAA8\nstatic const Vtx bullet_bill_seg5_vertex_0500DAA8[] = {\n    {{{  -195,      0,    272}, 0, {   884,   1044}, {0x9e, 0x02, 0x50, 0xff}}},\n    {{{  -138,    139,    272}, 0, {   884,   -180}, {0xbc, 0x47, 0x50, 0xff}}},\n    {{{  -176,    177,    161}, 0, {  2304,   -208}, {0x9e, 0x4a, 0x1c, 0xff}}},\n    {{{  -195,      0,    272}, 0, {   884,   1044}, {0x9e, 0x02, 0x50, 0xff}}},\n    {{{  -176,    177,    161}, 0, {  2304,   -208}, {0x9e, 0x4a, 0x1c, 0xff}}},\n    {{{  -249,      0,    161}, 0, {  2304,   1356}, {0x86, 0xef, 0x1c, 0xff}}},\n    {{{  -100,      0,    347}, 0, {  -336,    626}, {0xc4, 0x08, 0x6f, 0xff}}},\n    {{{  -138,    139,    272}, 0, {   884,   -180}, {0xbc, 0x47, 0x50, 0xff}}},\n    {{{  -195,      0,    272}, 0, {   884,   1044}, {0x9e, 0x02, 0x50, 0xff}}},\n    {{{  -100,      0,    347}, 0, {  -336,    626}, {0xc4, 0x08, 0x6f, 0xff}}},\n    {{{   -70,     71,    347}, 0, {  -336,     -4}, {0xf0, 0x15, 0x7c, 0xff}}},\n    {{{  -138,    139,    272}, 0, {   884,   -180}, {0xbc, 0x47, 0x50, 0xff}}},\n    {{{   101,      0,    347}, 0, {  -480,    478}, {0x36, 0x00, 0x72, 0xff}}},\n    {{{   196,      0,    272}, 0, {   620,    886}, {0x62, 0x00, 0x4f, 0xff}}},\n    {{{   139,    139,    272}, 0, {   960,   -306}, {0x48, 0x3e, 0x53, 0xff}}},\n};\n\n// 0x0500DB98\nstatic const Vtx bullet_bill_seg5_vertex_0500DB98[] = {\n    {{{    71,     71,    347}, 0, {  -304,   -134}, {0x1c, 0x1c, 0x78, 0xff}}},\n    {{{   101,      0,    347}, 0, {  -480,    478}, {0x36, 0x00, 0x72, 0xff}}},\n    {{{   139,    139,    272}, 0, {   960,   -306}, {0x48, 0x3e, 0x53, 0xff}}},\n    {{{   139,    139,    272}, 0, {   960,   -306}, {0x48, 0x3e, 0x53, 0xff}}},\n    {{{   250,      0,    161}, 0, {  1956,   1186}, {0x7a, 0x07, 0x20, 0xff}}},\n    {{{   177,    177,    161}, 0, {  2388,   -332}, {0x4a, 0x62, 0x1c, 0xff}}},\n    {{{   139,    139,    272}, 0, {   960,   -306}, {0x48, 0x3e, 0x53, 0xff}}},\n    {{{   196,      0,    272}, 0, {   620,    886}, {0x62, 0x00, 0x4f, 0xff}}},\n    {{{   250,      0,    161}, 0, {  1956,   1186}, {0x7a, 0x07, 0x20, 0xff}}},\n};\n\n// 0x0500DC28\nstatic const Vtx bullet_bill_seg5_vertex_0500DC28[] = {\n    {{{   -70,     71,    347}, 0, {   508,   -448}, {0xf0, 0x15, 0x7c, 0xff}}},\n    {{{     0,   -100,    347}, 0, {   996,    556}, {0xfa, 0xd0, 0x75, 0xff}}},\n    {{{    71,    -70,    347}, 0, {  1480,    384}, {0x1d, 0xd9, 0x74, 0xff}}},\n    {{{   -70,     71,    347}, 0, {   508,   -448}, {0xf0, 0x15, 0x7c, 0xff}}},\n    {{{    71,    -70,    347}, 0, {  1480,    384}, {0x1d, 0xd9, 0x74, 0xff}}},\n    {{{   101,      0,    347}, 0, {  1680,      0}, {0x36, 0x00, 0x72, 0xff}}},\n    {{{    71,    -70,    347}, 0, {  1480,    384}, {0x1d, 0xd9, 0x74, 0xff}}},\n    {{{     0,   -100,    347}, 0, {   996,    556}, {0xfa, 0xd0, 0x75, 0xff}}},\n    {{{     0,   -195,    272}, 0, {   996,   1110}, {0xfe, 0x9e, 0x50, 0xff}}},\n    {{{   101,      0,    347}, 0, {  1680,      0}, {0x36, 0x00, 0x72, 0xff}}},\n    {{{    71,    -70,    347}, 0, {  1480,    384}, {0x1d, 0xd9, 0x74, 0xff}}},\n    {{{   139,   -138,    272}, 0, {  1936,    776}, {0x4a, 0xbc, 0x4c, 0xff}}},\n    {{{    71,    -70,    347}, 0, {  1480,    384}, {0x1d, 0xd9, 0x74, 0xff}}},\n    {{{     0,   -195,    272}, 0, {   996,   1110}, {0xfe, 0x9e, 0x50, 0xff}}},\n    {{{   139,   -138,    272}, 0, {  1936,    776}, {0x4a, 0xbc, 0x4c, 0xff}}},\n};\n\n// 0x0500DD18\nstatic const Vtx bullet_bill_seg5_vertex_0500DD18[] = {\n    {{{   -70,     71,    347}, 0, {   508,   -448}, {0xf0, 0x15, 0x7c, 0xff}}},\n    {{{   -70,    -70,    347}, 0, {   508,    384}, {0xd9, 0xe3, 0x74, 0xff}}},\n    {{{     0,   -100,    347}, 0, {   996,    556}, {0xfa, 0xd0, 0x75, 0xff}}},\n    {{{     0,   -100,    347}, 0, {   996,    556}, {0xfa, 0xd0, 0x75, 0xff}}},\n    {{{  -138,   -138,    272}, 0, {    52,    776}, {0xb9, 0xbd, 0x50, 0xff}}},\n    {{{     0,   -195,    272}, 0, {   996,   1110}, {0xfe, 0x9e, 0x50, 0xff}}},\n    {{{     0,   -100,    347}, 0, {   996,    556}, {0xfa, 0xd0, 0x75, 0xff}}},\n    {{{   -70,    -70,    347}, 0, {   508,    384}, {0xd9, 0xe3, 0x74, 0xff}}},\n    {{{  -138,   -138,    272}, 0, {    52,    776}, {0xb9, 0xbd, 0x50, 0xff}}},\n    {{{   101,      0,    347}, 0, {  1680,      0}, {0x36, 0x00, 0x72, 0xff}}},\n    {{{   139,   -138,    272}, 0, {  1936,    776}, {0x4a, 0xbc, 0x4c, 0xff}}},\n    {{{   196,      0,    272}, 0, {  2328,      0}, {0x62, 0x00, 0x4f, 0xff}}},\n    {{{   -70,     71,    347}, 0, {   508,   -448}, {0xf0, 0x15, 0x7c, 0xff}}},\n    {{{  -100,      0,    347}, 0, {   308,      0}, {0xc4, 0x08, 0x6f, 0xff}}},\n    {{{   -70,    -70,    347}, 0, {   508,    384}, {0xd9, 0xe3, 0x74, 0xff}}},\n};\n\n// 0x0500DE08\nstatic const Vtx bullet_bill_seg5_vertex_0500DE08[] = {\n    {{{   -70,    -70,    347}, 0, {   508,    384}, {0xd9, 0xe3, 0x74, 0xff}}},\n    {{{  -195,      0,    272}, 0, {  -336,      0}, {0x9e, 0x02, 0x50, 0xff}}},\n    {{{  -138,   -138,    272}, 0, {    52,    776}, {0xb9, 0xbd, 0x50, 0xff}}},\n    {{{   -70,    -70,    347}, 0, {   508,    384}, {0xd9, 0xe3, 0x74, 0xff}}},\n    {{{  -100,      0,    347}, 0, {   308,      0}, {0xc4, 0x08, 0x6f, 0xff}}},\n    {{{  -195,      0,    272}, 0, {  -336,      0}, {0x9e, 0x02, 0x50, 0xff}}},\n    {{{   -70,     71,    347}, 0, {   508,   -448}, {0xf0, 0x15, 0x7c, 0xff}}},\n    {{{   101,      0,    347}, 0, {  1680,      0}, {0x36, 0x00, 0x72, 0xff}}},\n    {{{    71,     71,    347}, 0, {  1480,   -448}, {0x1c, 0x1c, 0x78, 0xff}}},\n    {{{   -70,     71,    347}, 0, {   508,   -448}, {0xf0, 0x15, 0x7c, 0xff}}},\n    {{{    71,     71,    347}, 0, {  1480,   -448}, {0x1c, 0x1c, 0x78, 0xff}}},\n    {{{     0,    101,    347}, 0, {   996,   -620}, {0x08, 0x3c, 0x6f, 0xff}}},\n};\n\n// 0x0500DEC8\nstatic const Vtx bullet_bill_seg5_vertex_0500DEC8[] = {\n    {{{  -176,   -176,   -192}, 0, {     0,      0}, {0xd6, 0xe0, 0x8d, 0xff}}},\n    {{{   250,      0,   -192}, 0, {     0,      0}, {0x66, 0xf2, 0xb7, 0xff}}},\n    {{{   177,   -176,   -192}, 0, {     0,      0}, {0x3e, 0xae, 0xb7, 0xff}}},\n    {{{  -176,   -176,   -192}, 0, {     0,      0}, {0xd6, 0xe0, 0x8d, 0xff}}},\n    {{{   177,   -176,   -192}, 0, {     0,      0}, {0x3e, 0xae, 0xb7, 0xff}}},\n    {{{     0,   -249,   -192}, 0, {     0,      0}, {0xf0, 0x8a, 0xd6, 0xff}}},\n    {{{   250,      0,   -192}, 0, {     0,      0}, {0x66, 0xf2, 0xb7, 0xff}}},\n    {{{   177,   -176,    161}, 0, {     0,      0}, {0x5f, 0xb0, 0x16, 0xff}}},\n    {{{   177,   -176,   -192}, 0, {     0,      0}, {0x3e, 0xae, 0xb7, 0xff}}},\n    {{{   177,   -176,   -192}, 0, {     0,      0}, {0x3e, 0xae, 0xb7, 0xff}}},\n    {{{   177,   -176,    161}, 0, {     0,      0}, {0x5f, 0xb0, 0x16, 0xff}}},\n    {{{     0,   -249,    161}, 0, {     0,      0}, {0x10, 0x86, 0x1c, 0xff}}},\n    {{{   177,   -176,   -192}, 0, {     0,      0}, {0x3e, 0xae, 0xb7, 0xff}}},\n    {{{     0,   -249,    161}, 0, {     0,      0}, {0x10, 0x86, 0x1c, 0xff}}},\n    {{{     0,   -249,   -192}, 0, {     0,      0}, {0xf0, 0x8a, 0xd6, 0xff}}},\n};\n\n// 0x0500DFB8\nstatic const Vtx bullet_bill_seg5_vertex_0500DFB8[] = {\n    {{{   139,   -138,    272}, 0, {     0,      0}, {0x4a, 0xbc, 0x4c, 0xff}}},\n    {{{   177,   -176,    161}, 0, {     0,      0}, {0x5f, 0xb0, 0x16, 0xff}}},\n    {{{   250,      0,    161}, 0, {     0,      0}, {0x7a, 0x07, 0x20, 0xff}}},\n    {{{   250,      0,   -192}, 0, {     0,      0}, {0x66, 0xf2, 0xb7, 0xff}}},\n    {{{   250,      0,    161}, 0, {     0,      0}, {0x7a, 0x07, 0x20, 0xff}}},\n    {{{   177,   -176,    161}, 0, {     0,      0}, {0x5f, 0xb0, 0x16, 0xff}}},\n    {{{   139,   -138,    272}, 0, {     0,      0}, {0x4a, 0xbc, 0x4c, 0xff}}},\n    {{{     0,   -249,    161}, 0, {     0,      0}, {0x10, 0x86, 0x1c, 0xff}}},\n    {{{   177,   -176,    161}, 0, {     0,      0}, {0x5f, 0xb0, 0x16, 0xff}}},\n    {{{     0,   -195,    272}, 0, {     0,      0}, {0xfe, 0x9e, 0x50, 0xff}}},\n    {{{  -176,   -176,    161}, 0, {     0,      0}, {0xb6, 0x9e, 0x1c, 0xff}}},\n    {{{     0,   -249,    161}, 0, {     0,      0}, {0x10, 0x86, 0x1c, 0xff}}},\n    {{{   139,   -138,    272}, 0, {     0,      0}, {0x4a, 0xbc, 0x4c, 0xff}}},\n    {{{     0,   -195,    272}, 0, {     0,      0}, {0xfe, 0x9e, 0x50, 0xff}}},\n    {{{     0,   -249,    161}, 0, {     0,      0}, {0x10, 0x86, 0x1c, 0xff}}},\n};\n\n// 0x0500E0A8\nstatic const Vtx bullet_bill_seg5_vertex_0500E0A8[] = {\n    {{{     0,   -249,   -192}, 0, {     0,      0}, {0xf0, 0x8a, 0xd6, 0xff}}},\n    {{{     0,   -249,    161}, 0, {     0,      0}, {0x10, 0x86, 0x1c, 0xff}}},\n    {{{  -176,   -176,    161}, 0, {     0,      0}, {0xb6, 0x9e, 0x1c, 0xff}}},\n    {{{     0,   -249,   -192}, 0, {     0,      0}, {0xf0, 0x8a, 0xd6, 0xff}}},\n    {{{  -176,   -176,    161}, 0, {     0,      0}, {0xb6, 0x9e, 0x1c, 0xff}}},\n    {{{  -176,   -176,   -192}, 0, {     0,      0}, {0xd6, 0xe0, 0x8d, 0xff}}},\n    {{{  -176,   -176,   -192}, 0, {     0,      0}, {0xd6, 0xe0, 0x8d, 0xff}}},\n    {{{   177,    177,   -192}, 0, {     0,      0}, {0x52, 0x3e, 0xb7, 0xff}}},\n    {{{   250,      0,   -192}, 0, {     0,      0}, {0x66, 0xf2, 0xb7, 0xff}}},\n    {{{   177,    177,   -192}, 0, {     0,      0}, {0x52, 0x3e, 0xb7, 0xff}}},\n    {{{   250,      0,    161}, 0, {     0,      0}, {0x7a, 0x07, 0x20, 0xff}}},\n    {{{   250,      0,   -192}, 0, {     0,      0}, {0x66, 0xf2, 0xb7, 0xff}}},\n    {{{   196,      0,    272}, 0, {     0,      0}, {0x62, 0x00, 0x4f, 0xff}}},\n    {{{   139,   -138,    272}, 0, {     0,      0}, {0x4a, 0xbc, 0x4c, 0xff}}},\n    {{{   250,      0,    161}, 0, {     0,      0}, {0x7a, 0x07, 0x20, 0xff}}},\n};\n\n// 0x0500E198\nstatic const Vtx bullet_bill_seg5_vertex_0500E198[] = {\n    {{{   177,    177,   -192}, 0, {     0,      0}, {0x52, 0x3e, 0xb7, 0xff}}},\n    {{{   177,    177,    161}, 0, {     0,      0}, {0x4a, 0x62, 0x1c, 0xff}}},\n    {{{   250,      0,    161}, 0, {     0,      0}, {0x7a, 0x07, 0x20, 0xff}}},\n    {{{  -176,   -176,   -192}, 0, {     0,      0}, {0xd6, 0xe0, 0x8d, 0xff}}},\n    {{{  -176,   -176,    161}, 0, {     0,      0}, {0xb6, 0x9e, 0x1c, 0xff}}},\n    {{{  -249,      0,    161}, 0, {     0,      0}, {0x86, 0xef, 0x1c, 0xff}}},\n    {{{  -176,   -176,   -192}, 0, {     0,      0}, {0xd6, 0xe0, 0x8d, 0xff}}},\n    {{{     0,    250,   -192}, 0, {     0,      0}, {0x0e, 0x66, 0xb7, 0xff}}},\n    {{{   177,    177,   -192}, 0, {     0,      0}, {0x52, 0x3e, 0xb7, 0xff}}},\n    {{{     0,    250,   -192}, 0, {     0,      0}, {0x0e, 0x66, 0xb7, 0xff}}},\n    {{{   177,    177,    161}, 0, {     0,      0}, {0x4a, 0x62, 0x1c, 0xff}}},\n    {{{   177,    177,   -192}, 0, {     0,      0}, {0x52, 0x3e, 0xb7, 0xff}}},\n    {{{     0,    196,    272}, 0, {     0,      0}, {0x02, 0x62, 0x50, 0xff}}},\n    {{{   177,    177,    161}, 0, {     0,      0}, {0x4a, 0x62, 0x1c, 0xff}}},\n    {{{     0,    250,    161}, 0, {     0,      0}, {0xef, 0x7a, 0x1c, 0xff}}},\n};\n\n// 0x0500E288\nstatic const Vtx bullet_bill_seg5_vertex_0500E288[] = {\n    {{{     0,    196,    272}, 0, {     0,      0}, {0x02, 0x62, 0x50, 0xff}}},\n    {{{   139,    139,    272}, 0, {     0,      0}, {0x48, 0x3e, 0x53, 0xff}}},\n    {{{   177,    177,    161}, 0, {     0,      0}, {0x4a, 0x62, 0x1c, 0xff}}},\n    {{{     0,    250,   -192}, 0, {     0,      0}, {0x0e, 0x66, 0xb7, 0xff}}},\n    {{{     0,    250,    161}, 0, {     0,      0}, {0xef, 0x7a, 0x1c, 0xff}}},\n    {{{   177,    177,    161}, 0, {     0,      0}, {0x4a, 0x62, 0x1c, 0xff}}},\n    {{{  -176,   -176,   -192}, 0, {     0,      0}, {0xd6, 0xe0, 0x8d, 0xff}}},\n    {{{  -176,    177,   -192}, 0, {     0,      0}, {0xc2, 0x52, 0xb7, 0xff}}},\n    {{{     0,    250,   -192}, 0, {     0,      0}, {0x0e, 0x66, 0xb7, 0xff}}},\n    {{{  -176,    177,   -192}, 0, {     0,      0}, {0xc2, 0x52, 0xb7, 0xff}}},\n    {{{     0,    250,    161}, 0, {     0,      0}, {0xef, 0x7a, 0x1c, 0xff}}},\n    {{{     0,    250,   -192}, 0, {     0,      0}, {0x0e, 0x66, 0xb7, 0xff}}},\n    {{{  -138,    139,    272}, 0, {     0,      0}, {0xbc, 0x47, 0x50, 0xff}}},\n    {{{     0,    250,    161}, 0, {     0,      0}, {0xef, 0x7a, 0x1c, 0xff}}},\n    {{{  -176,    177,    161}, 0, {     0,      0}, {0x9e, 0x4a, 0x1c, 0xff}}},\n};\n\n// 0x0500E378\nstatic const Vtx bullet_bill_seg5_vertex_0500E378[] = {\n    {{{  -138,    139,    272}, 0, {     0,      0}, {0xbc, 0x47, 0x50, 0xff}}},\n    {{{     0,    196,    272}, 0, {     0,      0}, {0x02, 0x62, 0x50, 0xff}}},\n    {{{     0,    250,    161}, 0, {     0,      0}, {0xef, 0x7a, 0x1c, 0xff}}},\n    {{{  -176,    177,   -192}, 0, {     0,      0}, {0xc2, 0x52, 0xb7, 0xff}}},\n    {{{  -176,    177,    161}, 0, {     0,      0}, {0x9e, 0x4a, 0x1c, 0xff}}},\n    {{{     0,    250,    161}, 0, {     0,      0}, {0xef, 0x7a, 0x1c, 0xff}}},\n    {{{  -176,   -176,   -192}, 0, {     0,      0}, {0xd6, 0xe0, 0x8d, 0xff}}},\n    {{{  -249,      0,   -192}, 0, {     0,      0}, {0x8a, 0x10, 0xd6, 0xff}}},\n    {{{  -176,    177,   -192}, 0, {     0,      0}, {0xc2, 0x52, 0xb7, 0xff}}},\n    {{{  -249,      0,   -192}, 0, {     0,      0}, {0x8a, 0x10, 0xd6, 0xff}}},\n    {{{  -176,    177,    161}, 0, {     0,      0}, {0x9e, 0x4a, 0x1c, 0xff}}},\n    {{{  -176,    177,   -192}, 0, {     0,      0}, {0xc2, 0x52, 0xb7, 0xff}}},\n    {{{  -249,      0,   -192}, 0, {     0,      0}, {0x8a, 0x10, 0xd6, 0xff}}},\n    {{{  -249,      0,    161}, 0, {     0,      0}, {0x86, 0xef, 0x1c, 0xff}}},\n    {{{  -176,    177,    161}, 0, {     0,      0}, {0x9e, 0x4a, 0x1c, 0xff}}},\n};\n\n// 0x0500E468\nstatic const Vtx bullet_bill_seg5_vertex_0500E468[] = {\n    {{{  -176,   -176,   -192}, 0, {     0,      0}, {0xd6, 0xe0, 0x8d, 0xff}}},\n    {{{  -249,      0,    161}, 0, {     0,      0}, {0x86, 0xef, 0x1c, 0xff}}},\n    {{{  -249,      0,   -192}, 0, {     0,      0}, {0x8a, 0x10, 0xd6, 0xff}}},\n    {{{  -138,   -138,    272}, 0, {     0,      0}, {0xb9, 0xbd, 0x50, 0xff}}},\n    {{{  -195,      0,    272}, 0, {     0,      0}, {0x9e, 0x02, 0x50, 0xff}}},\n    {{{  -249,      0,    161}, 0, {     0,      0}, {0x86, 0xef, 0x1c, 0xff}}},\n    {{{  -138,   -138,    272}, 0, {     0,      0}, {0xb9, 0xbd, 0x50, 0xff}}},\n    {{{  -249,      0,    161}, 0, {     0,      0}, {0x86, 0xef, 0x1c, 0xff}}},\n    {{{  -176,   -176,    161}, 0, {     0,      0}, {0xb6, 0x9e, 0x1c, 0xff}}},\n    {{{     0,    101,    347}, 0, {     0,      0}, {0x08, 0x3c, 0x6f, 0xff}}},\n    {{{    71,     71,    347}, 0, {     0,      0}, {0x1c, 0x1c, 0x78, 0xff}}},\n    {{{   139,    139,    272}, 0, {     0,      0}, {0x48, 0x3e, 0x53, 0xff}}},\n    {{{     0,   -195,    272}, 0, {     0,      0}, {0xfe, 0x9e, 0x50, 0xff}}},\n    {{{  -138,   -138,    272}, 0, {     0,      0}, {0xb9, 0xbd, 0x50, 0xff}}},\n    {{{  -176,   -176,    161}, 0, {     0,      0}, {0xb6, 0x9e, 0x1c, 0xff}}},\n};\n\n// 0x0500E558\nstatic const Vtx bullet_bill_seg5_vertex_0500E558[] = {\n    {{{   -70,     71,    347}, 0, {     0,      0}, {0xf0, 0x15, 0x7c, 0xff}}},\n    {{{     0,    196,    272}, 0, {     0,      0}, {0x02, 0x62, 0x50, 0xff}}},\n    {{{  -138,    139,    272}, 0, {     0,      0}, {0xbc, 0x47, 0x50, 0xff}}},\n    {{{   -70,     71,    347}, 0, {     0,      0}, {0xf0, 0x15, 0x7c, 0xff}}},\n    {{{     0,    101,    347}, 0, {     0,      0}, {0x08, 0x3c, 0x6f, 0xff}}},\n    {{{     0,    196,    272}, 0, {     0,      0}, {0x02, 0x62, 0x50, 0xff}}},\n    {{{     0,    101,    347}, 0, {     0,      0}, {0x08, 0x3c, 0x6f, 0xff}}},\n    {{{   139,    139,    272}, 0, {     0,      0}, {0x48, 0x3e, 0x53, 0xff}}},\n    {{{     0,    196,    272}, 0, {     0,      0}, {0x02, 0x62, 0x50, 0xff}}},\n};\n\n// 0x0500E5E8 - 0x0500E678\nconst Gfx bullet_bill_seg5_dl_0500E5E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bullet_bill_seg5_texture_0500BAA8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bullet_bill_seg5_lights_0500BA90.l, 1),\n    gsSPLight(&bullet_bill_seg5_lights_0500BA90.a, 2),\n    gsSPVertex(bullet_bill_seg5_vertex_0500DAA8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bullet_bill_seg5_vertex_0500DB98, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500E678 - 0x0500E730\nconst Gfx bullet_bill_seg5_dl_0500E678[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bullet_bill_seg5_texture_0500CAA8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bullet_bill_seg5_vertex_0500DC28, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bullet_bill_seg5_vertex_0500DD18, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bullet_bill_seg5_vertex_0500DE08, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500E730 - 0x0500E8A8\nconst Gfx bullet_bill_seg5_dl_0500E730[] = {\n    gsSPVertex(bullet_bill_seg5_vertex_0500DEC8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bullet_bill_seg5_vertex_0500DFB8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bullet_bill_seg5_vertex_0500E0A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bullet_bill_seg5_vertex_0500E198, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bullet_bill_seg5_vertex_0500E288, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bullet_bill_seg5_vertex_0500E378, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bullet_bill_seg5_vertex_0500E468, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bullet_bill_seg5_vertex_0500E558, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500E8A8 - 0x0500E918\nconst Gfx bullet_bill_seg5_dl_0500E8A8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBA, G_CC_BLENDRGBA),\n    gsSPNumLights(NUMLIGHTS_1),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bullet_bill_seg5_dl_0500E5E8),\n    gsSPDisplayList(bullet_bill_seg5_dl_0500E678),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(bullet_bill_seg5_dl_0500E730),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/bully/anims/anim_050042A4.inc.c",
    "content": "// 0x05004038\nstatic const s16 bully_seg5_animvalue_05004038[] = {\n    0x0000, 0x00AE, 0x00AE, 0x00AD, 0x00AB, 0x00A8, 0x00A4, 0x009F,\n    0x0098, 0x0090, 0x009D, 0x00A9, 0x00B1, 0x00B5, 0x00B3, 0x00B1,\n    0x00AE, 0x00AC, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AE, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xFFFF, 0xFFFF, 0x0000, 0x0003, 0x0009, 0x000E, 0x0010,\n    0x000E, 0x000A, 0x0005, 0x0001, 0x0000, 0x3FFF, 0x0000, 0x0000,\n    0x0001, 0x0002, 0x0003, 0x0004, 0x0004, 0x0004, 0x0005, 0x0005,\n    0x0005, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0005,\n    0x0003, 0x0002, 0x0000, 0x0000, 0x0000, 0xFCF9, 0xF61F, 0xEED0,\n    0xEA69, 0xE89E, 0xE6F0, 0xE564, 0xE403, 0xE2D5, 0xE1E2, 0xE131,\n    0xE0C9, 0xE0B4, 0xE0F8, 0xE19D, 0xE2AB, 0xE688, 0xEDE8, 0xF649,\n    0xFD28, 0x0000, 0xEAD4, 0xE2FE, 0xD170, 0xBF1D, 0xB4F7, 0xB26C,\n    0xB0DB, 0xB023, 0xB021, 0xB0B3, 0xB1B6, 0xB308, 0xB487, 0xB611,\n    0xB782, 0xB8B9, 0xB994, 0xBA9C, 0xBC2A, 0xBDCF, 0xBF1D, 0xBFA5,\n    0x8001, 0x8001, 0x7C2E, 0x739E, 0x6AA0, 0x6583, 0x63EA, 0x6295,\n    0x6186, 0x60BB, 0x6036, 0x5FF7, 0x5FFF, 0x604C, 0x60E1, 0x61BC,\n    0x62DF, 0x644A, 0x682B, 0x6F2A, 0x76FD, 0x7D5D, 0x8001, 0x6CDC,\n    0x64A9, 0x524D, 0x3F22, 0x3484, 0x31DA, 0x3036, 0x2F75, 0x2F71,\n    0x3008, 0x3116, 0x3276, 0x3406, 0x35A0, 0x3721, 0x3865, 0x3949,\n    0x3A5D, 0x3BFE, 0x3DB7, 0x3F14, 0x3FA3, 0xD282, 0xCC2F, 0xBE27,\n    0xAFD0, 0xA891, 0xA7DE, 0xA820, 0xA932, 0xAAEE, 0xAD2E, 0xAFCB,\n    0xB2A0, 0xB585, 0xB856, 0xBAEC, 0xBD21, 0xBECF, 0xBFC8, 0xC021,\n    0xC015, 0xBFE2, 0xBFC4, 0xD21A, 0xCBDD, 0xBE05, 0xAFE0, 0xA8BD,\n    0xA80F, 0xA855, 0xA969, 0xAB24, 0xAD61, 0xAFFB, 0xB2CB, 0xB5AC,\n    0xB877, 0xBB08, 0xBD39, 0xBEE4, 0xBFD9, 0xC02C, 0xC01B, 0xBFE4,\n    0xBFC4, 0xC04F, 0xC04F, 0x3CD6, 0x3C90, 0x3BD7, 0x3AD7, 0x39B8,\n    0x37F9, 0x35B2, 0x33F6, 0x33D8, 0x3557, 0x3792, 0x3A47, 0x3D38,\n    0x4025, 0x42CD, 0x44F1, 0x4651, 0x4636, 0x44A4, 0x4276, 0x4086,\n    0x3FB1, 0x0000,\n};\n\n// 0x050041FC\nstatic const u16 bully_seg5_animindex_050041FC[] = {\n    0x0001, 0x0000, 0x0016, 0x0001, 0x0016, 0x0017, 0x0001, 0x0000, 0x0001, 0x002D, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0016, 0x00CB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00CA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0016, 0x009D,\n    0x0016, 0x002E, 0x0016, 0x0044, 0x0016, 0x005A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00C9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0016, 0x00B3,\n    0x0001, 0x0070, 0x0016, 0x0071, 0x0016, 0x0087,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x050042A4\nstatic const struct Animation bully_seg5_anim_050042A4 = {\n    0,\n    0,\n    0,\n    0,\n    0x16,\n    ANIMINDEX_NUMPARTS(bully_seg5_animindex_050041FC),\n    bully_seg5_animvalue_05004038,\n    bully_seg5_animindex_050041FC,\n    0,\n};\n"
  },
  {
    "path": "actors/bully/anims/anim_050043D8.inc.c",
    "content": "// 0x050042BC\nstatic const s16 bully_seg5_animvalue_050042BC[] = {\n    0x0000, 0x00B4, 0x00B1, 0x00AE, 0x00B0, 0x00B2, 0x00B4, 0x00B1,\n    0x00AE, 0x00B0, 0x00B3, 0x3FFF, 0xB575, 0xB559, 0xB64C, 0xBB9D,\n    0xBCF3, 0xBE03, 0xC380, 0xBCE6, 0xB85B, 0xB5A2, 0x8001, 0x8001,\n    0x3FA3, 0x42BE, 0x3D15, 0x3757, 0x36AE, 0x3714, 0x3798, 0x3A46,\n    0x3D78, 0x3F80, 0xD89E, 0xD533, 0xCCDD, 0xC27D, 0xB8F4, 0xB323,\n    0xB7D6, 0xC220, 0xCDD6, 0xD7E2, 0xB38B, 0xB75B, 0xC073, 0xCB4E,\n    0xD466, 0xD836, 0xD32B, 0xC7BE, 0xBB82, 0xB407, 0xC04F, 0xC04F,\n    0x3FB1, 0x0000,\n};\n\n// 0x05004330\nstatic const u16 bully_seg5_animindex_05004330[] = {\n    0x0001, 0x0000, 0x000A, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x000B, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0038,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0037,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0022,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x000C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0036,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x002C,\n    0x0001, 0x0016, 0x0001, 0x0017, 0x000A, 0x0018,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x050043D8\nstatic const struct Animation bully_seg5_anim_050043D8 = {\n    0,\n    0,\n    0,\n    0,\n    0x0A,\n    ANIMINDEX_NUMPARTS(bully_seg5_animindex_05004330),\n    bully_seg5_animvalue_050042BC,\n    bully_seg5_animindex_05004330,\n    0,\n};\n"
  },
  {
    "path": "actors/bully/anims/anim_05004598.inc.c",
    "content": "// 0x050043F0\nstatic const s16 bully_seg5_animvalue_050043F0[] = {\n    0x0000, 0x00B4, 0x00B3, 0x00B2, 0x00B0, 0x00AF, 0x00AE, 0x00AF,\n    0x00AF, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B3, 0x00B2,\n    0x00B1, 0x00B0, 0x00AF, 0x00AE, 0x00AF, 0x00B0, 0x00B2, 0x00B3,\n    0x00B4, 0x3FFF, 0xB575, 0xB564, 0xB54B, 0xB54F, 0xB598, 0xB64C,\n    0xB8E5, 0xBB9D, 0xBC81, 0xBCEE, 0xBD28, 0xBD6E, 0xBE03, 0xBF5E,\n    0xC141, 0xC2E5, 0xC380, 0xC0B4, 0xBCE6, 0xBAB9, 0xB8B3, 0xB706,\n    0xB5E1, 0xB575, 0x8001, 0x8001, 0x3FA3, 0x4038, 0x4174, 0x428E,\n    0x42BE, 0x3D15, 0x398E, 0x3757, 0x36B5, 0x368F, 0x36B4, 0x36F1,\n    0x3714, 0x3708, 0x36F8, 0x3716, 0x3798, 0x3899, 0x39F7, 0x3B82,\n    0x3D08, 0x3E5A, 0x3F49, 0x3FA3, 0xD89E, 0xD7FB, 0xD632, 0xD37B,\n    0xD009, 0xCC12, 0xC7CB, 0xC369, 0xBF20, 0xBB26, 0xB7B0, 0xB4F2,\n    0xB323, 0xB2E5, 0xB466, 0xB729, 0xBAB2, 0xBE83, 0xC220, 0xC69B,\n    0xCC74, 0xD24F, 0xD6D1, 0xD89E, 0xB38B, 0xB444, 0xB642, 0xB946,\n    0xBD0D, 0xC156, 0xC5E1, 0xCA6B, 0xCEB4, 0xD27B, 0xD57F, 0xD77D,\n    0xD836, 0xD75B, 0xD504, 0xD184, 0xCD31, 0xC85F, 0xC362, 0xBE90,\n    0xBA3D, 0xB6BD, 0xB466, 0xB38B, 0xC04F, 0xC04F, 0x3FB1, 0x0000,\n};\n\n\n// 0x050044F0\nstatic const u16 bully_seg5_animindex_050044F0[] = {\n    0x0001, 0x0000, 0x0018, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0019, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x007E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x007D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x004C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x001A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x007C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x0064,\n    0x0001, 0x0032, 0x0001, 0x0033, 0x0018, 0x0034,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x05004598\nstatic const struct Animation bully_seg5_anim_05004598 = {\n    0,\n    0,\n    0,\n    0,\n    0x18,\n    ANIMINDEX_NUMPARTS(bully_seg5_animindex_050044F0),\n    bully_seg5_animvalue_050043F0,\n    bully_seg5_animindex_050044F0,\n    0,\n};\n"
  },
  {
    "path": "actors/bully/anims/anim_050046F4.inc.c",
    "content": "// 0x050045B0\nstatic const s16 bully_seg5_animvalue_050045B0[] = {\n    0x0000, 0x00AE, 0x00AE, 0x00AE, 0x00C1, 0x00D0, 0x00D7, 0x00D3,\n    0x00CA, 0x00BD, 0x00AE, 0x00AE, 0x00AE, 0x3FFF, 0xC00D, 0xBF15,\n    0xC015, 0xCBDE, 0xC3D9, 0xB86A, 0xB1CA, 0xB254, 0xB5BF, 0xBA52,\n    0xBE55, 0xC00D, 0x8001, 0x8001, 0x3FA3, 0x3EF5, 0x4050, 0x4BDC,\n    0x43F9, 0x38BD, 0x3231, 0x329C, 0x35D3, 0x3A2B, 0x3DFE, 0x3FA3,\n    0xC9F4, 0xC6B4, 0xBF90, 0xB86B, 0xB52C, 0xBF4E, 0xC9F4, 0xC6FE,\n    0xBFFF, 0xBAE0, 0xBCAE, 0xBFC2, 0xC9F4, 0xC6B4, 0xBF90, 0xB86B,\n    0xB52C, 0xBF4E, 0xC9F4, 0xC6FE, 0xBFFF, 0xBAE0, 0xBCAE, 0xBFC2,\n    0xC04F, 0xC04F, 0x3581, 0x38C0, 0x3FE5, 0x4709, 0x4A48, 0x4027,\n    0x3581, 0x3877, 0x3F76, 0x4494, 0x42C7, 0x3FB2,\n};\n\n// 0x0500464C\nstatic const u16 bully_seg5_animindex_0500464C[] = {\n    0x0001, 0x0000, 0x000C, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x000D, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x0042,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0041,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x0028,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x000E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0040,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x0034,\n    0x0001, 0x001A, 0x0001, 0x001B, 0x000C, 0x001C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x050046F4\nstatic const struct Animation bully_seg5_anim_050046F4 = {\n    0,\n    0,\n    0,\n    0,\n    0x0C,\n    ANIMINDEX_NUMPARTS(bully_seg5_animindex_0500464C),\n    bully_seg5_animvalue_050045B0,\n    bully_seg5_animindex_0500464C,\n    0,\n};\n"
  },
  {
    "path": "actors/bully/anims/data.inc.c",
    "content": "#include \"anim_050042A4.inc.c\"\n#include \"anim_050043D8.inc.c\"\n#include \"anim_05004598.inc.c\"\n#include \"anim_050046F4.inc.c\"\n"
  },
  {
    "path": "actors/bully/anims/table.inc.c",
    "content": "// 0x0500470C\nconst struct Animation *const bully_seg5_anims_0500470C[] = {\n    &bully_seg5_anim_05004598,\n    &bully_seg5_anim_050043D8,\n    &bully_seg5_anim_050042A4,\n    &bully_seg5_anim_050046F4,\n    NULL,\n};\n"
  },
  {
    "path": "actors/bully/geo.inc.c",
    "content": "// 0x0C000000\nconst GeoLayout bully_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xC8, 70),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 24576),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 75, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 146, 0, 0, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bully_seg5_dl_05003708),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, -75, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 146, 0, 0, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bully_seg5_dl_050037A0),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_BILLBOARD(),\n                        GEO_OPEN_NODE(),\n                            GEO_DISPLAY_LIST(LAYER_ALPHA, bully_seg5_dl_05003D40),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bully_seg5_dl_05000398),\n                    GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, bully_seg5_dl_05003FC8),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0C000120\nconst GeoLayout bully_boss_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xC8, 210),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 49152),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 75, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 146, 0, 0, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bully_seg5_dl_05003708),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, -75, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 146, 0, 0, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bully_seg5_dl_050037A0),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_BILLBOARD(),\n                        GEO_OPEN_NODE(),\n                            GEO_DISPLAY_LIST(LAYER_ALPHA, bully_seg5_dl_05003EA8),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, bully_seg5_dl_05000398),\n                    GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, bully_seg5_dl_05003FC8),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/bully/model.inc.c",
    "content": "// Bully\n\n// 0x05000000\nstatic const Vtx bully_seg5_vertex_05000000[] = {\n    {{{   196,     17,    114}, 0, {   325,    310}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   259,      2,    106}, 0, {   422,      7}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   184,    -14,    137}, 0, {   399,    416}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   196,     17,   -113}, 0, {   105,    286}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   259,      2,   -105}, 0, {    69,    -34}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   171,     17,   -157}, 0, {  -107,    540}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   184,    -14,   -136}, 0, {   -34,    392}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    91,     42,   -114}, 0, {   236,    784}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   140,     42,    -34}, 0, {   621,    305}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   116,    -38,    -75}, 0, {   344,    489}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   171,     17,    158}, 0, {   417,    557}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   116,    -38,     76}, 0, {   111,    499}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    91,     42,    115}, 0, {   120,    778}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   140,     42,     35}, 0, {   -40,    311}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x050000E0\nALIGNED8 static const Texture bully_seg5_texture_050000E0[] = {\n#include \"actors/bully/bully_horn.rgba16.inc.c\"\n};\n\n// 0x050002E0 - 0x05000398\nconst Gfx bully_seg5_dl_050002E0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bully_seg5_texture_050000E0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 16 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bully_seg5_vertex_05000000, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  6,  7,  5, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  5,  8,  3, 0x0),\n    gsSP2Triangles( 3,  8,  9, 0x0,  3,  9,  6, 0x0),\n    gsSP2Triangles( 6,  4,  3, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11,  2, 0x0,  0, 12, 10, 0x0),\n    gsSP2Triangles(10, 12, 11, 0x0,  2,  1, 10, 0x0),\n    gsSP2Triangles(10,  1,  0, 0x0,  2, 11, 13, 0x0),\n    gsSP2Triangles( 0, 13, 12, 0x0,  2, 13,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05000398 - 0x05000408\nconst Gfx bully_seg5_dl_05000398[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGB, G_CC_DECALRGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (16 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bully_seg5_dl_050002E0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x05000408\nstatic const Lights1 bully_seg5_lights_05000408 = gdSPDefLights1(\n    0x00, 0x38, 0x00,\n    0x00, 0xe3, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x05000420\nstatic const Lights1 bully_seg5_lights_05000420 = gdSPDefLights1(\n    0x00, 0x3f, 0x00,\n    0x00, 0xff, 0x00, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 bully_lights_unused = gdSPDefLights1(\n    0x3f, 0x29, 0x00,\n    0xff, 0xa5, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x05000450\nstatic const Lights1 bully_seg5_lights_05000450 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// //! There's another malformed light entry here.\n// 0x05000468\nALIGNED8 static const Texture bully_seg5_texture_05000468[] = {\n#include \"actors/bully/bully_left_side.rgba16.inc.c\"\n};\n\n// 0x05001468\nALIGNED8 static const Texture bully_seg5_texture_05001468[] = {\n#include \"actors/bully/bully_right_side.rgba16.inc.c\"\n};\n\n// 0x05002468\nALIGNED8 static const Texture bully_seg5_texture_05002468[] = {\n#include \"actors/bully/bully_eye.rgba16.inc.c\"\n};\n\n// 0x05002C68\nstatic const Vtx bully_seg5_vertex_05002C68[] = {\n    {{{    27,    -35,      0}, 0, {     0,      0}, {0x0c, 0x82, 0x04, 0x00}}},\n    {{{    56,    -16,    -27}, 0, {     0,      0}, {0x16, 0xae, 0xa3, 0x00}}},\n    {{{    72,    -16,      0}, 0, {     0,      0}, {0x59, 0xa7, 0x04, 0x00}}},\n    {{{    56,     28,    -46}, 0, {     0,      0}, {0x65, 0xdf, 0xbd, 0xff}}},\n    {{{    90,     28,      0}, 0, {     0,      0}, {0x65, 0xdf, 0xbd, 0xff}}},\n    {{{   -17,    -17,      0}, 0, {     0,      0}, {0xd7, 0xc5, 0x98, 0xff}}},\n    {{{   -37,     27,      0}, 0, {     0,      0}, {0xd0, 0xde, 0x90, 0xff}}},\n    {{{    56,     28,    -46}, 0, {     0,      0}, {0xd0, 0xde, 0x90, 0xff}}},\n    {{{    56,    -16,     22}, 0, {     0,      0}, {0x16, 0xb4, 0x62, 0xff}}},\n    {{{    90,     28,      0}, 0, {     0,      0}, {0x5f, 0xde, 0x4b, 0xff}}},\n    {{{    55,     28,     41}, 0, {     0,      0}, {0x5f, 0xde, 0x4b, 0xff}}},\n    {{{   -17,    -17,      0}, 0, {     0,      0}, {0xdc, 0xcb, 0x6c, 0xff}}},\n    {{{    55,     28,     41}, 0, {     0,      0}, {0xd5, 0xdf, 0x72, 0xff}}},\n    {{{   -37,     27,      0}, 0, {     0,      0}, {0xd5, 0xdf, 0x72, 0xff}}},\n};\n\n// 0x05002D48\nstatic const Vtx bully_seg5_vertex_05002D48[] = {\n    {{{    90,     28,      0}, 0, {     0,      0}, {0xff, 0x7f, 0x00, 0xff}}},\n    {{{    56,     28,    -46}, 0, {     0,      0}, {0xff, 0x7f, 0x00, 0x00}}},\n    {{{   -37,     27,      0}, 0, {     0,      0}, {0xff, 0x7f, 0x00, 0x00}}},\n    {{{    55,     28,     41}, 0, {     0,      0}, {0xff, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x05002D88\nstatic const Vtx bully_seg5_vertex_05002D88[] = {\n    {{{    72,    -16,      0}, 0, {     0,      0}, {0x59, 0xa7, 0xfc, 0x00}}},\n    {{{    56,    -16,     27}, 0, {     0,      0}, {0x16, 0xae, 0x5d, 0x00}}},\n    {{{    27,    -35,      0}, 0, {     0,      0}, {0x0c, 0x82, 0xfc, 0x00}}},\n    {{{    90,     28,      0}, 0, {     0,      0}, {0x65, 0xdf, 0x43, 0xff}}},\n    {{{    56,     28,     46}, 0, {     0,      0}, {0x65, 0xdf, 0x43, 0xff}}},\n    {{{    56,     28,     46}, 0, {     0,      0}, {0xd0, 0xde, 0x70, 0xff}}},\n    {{{   -37,     27,      0}, 0, {     0,      0}, {0xd0, 0xde, 0x70, 0xff}}},\n    {{{   -17,    -17,      0}, 0, {     0,      0}, {0xd7, 0xc5, 0x68, 0xff}}},\n    {{{    56,    -16,    -22}, 0, {     0,      0}, {0x16, 0xb4, 0x9e, 0xff}}},\n    {{{    55,     28,    -41}, 0, {     0,      0}, {0x5f, 0xde, 0xb5, 0xff}}},\n    {{{    90,     28,      0}, 0, {     0,      0}, {0x5f, 0xde, 0xb5, 0xff}}},\n    {{{   -37,     27,      0}, 0, {     0,      0}, {0xd5, 0xdf, 0x8e, 0xff}}},\n    {{{    55,     28,    -41}, 0, {     0,      0}, {0xd5, 0xdf, 0x8e, 0xff}}},\n    {{{   -17,    -17,      0}, 0, {     0,      0}, {0xdc, 0xcb, 0x94, 0xff}}},\n};\n\n// 0x05002E68\nstatic const Vtx bully_seg5_vertex_05002E68[] = {\n    {{{    55,     28,    -41}, 0, {     0,      0}, {0xff, 0x7f, 0x00, 0xff}}},\n    {{{   -37,     27,      0}, 0, {     0,      0}, {0xff, 0x7f, 0x00, 0x00}}},\n    {{{    56,     28,     46}, 0, {     0,      0}, {0xff, 0x7f, 0x00, 0x00}}},\n    {{{    90,     28,      0}, 0, {     0,      0}, {0xff, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x05002EA8\nstatic const Vtx bully_seg5_vertex_05002EA8[] = {\n    {{{    60,    143,      0}, 0, {     0,      0}, {0x0c, 0x7e, 0x00, 0x00}}},\n    {{{    57,    127,    -67}, 0, {     0,      0}, {0x0c, 0x7a, 0xe3, 0x00}}},\n    {{{   -46,    137,    -67}, 0, {     0,      0}, {0x0c, 0x7a, 0xe3, 0x00}}},\n    {{{   -42,    153,      0}, 0, {     0,      0}, {0x0c, 0x7e, 0x00, 0xff}}},\n    {{{   -46,    137,     67}, 0, {     0,      0}, {0x0c, 0x7a, 0x1d, 0xff}}},\n    {{{    57,    127,     67}, 0, {     0,      0}, {0x0c, 0x7a, 0x1d, 0xff}}},\n};\n\n// 0x05002F08\nstatic const Vtx bully_seg5_vertex_05002F08[] = {\n    {{{  -133,    -40,     39}, 0, {     0,      0}, {0x8b, 0xdd, 0x22, 0x00}}},\n    {{{  -134,     -1,     55}, 0, {     0,      0}, {0x8b, 0x00, 0x30, 0x00}}},\n    {{{  -145,     -1,      0}, 0, {     0,      0}, {0x81, 0xff, 0x00, 0x00}}},\n    {{{  -102,    -73,     72}, 0, {     0,      0}, {0xa7, 0xc0, 0x3f, 0xff}}},\n    {{{  -102,      0,    102}, 0, {     0,      0}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{   -54,    -95,     94}, 0, {     0,      0}, {0xd0, 0xad, 0x52, 0xff}}},\n    {{{   -55,      0,    134}, 0, {     0,      0}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{     0,   -102,    102}, 0, {     0,      0}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{     0,      0,    145}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    56,    -94,     94}, 0, {     0,      0}, {0x31, 0xae, 0x52, 0xff}}},\n    {{{    55,      0,    134}, 0, {     0,      0}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{   103,    -71,     72}, 0, {     0,      0}, {0x5a, 0xc2, 0x3f, 0xff}}},\n    {{{   102,      0,    102}, 0, {     0,      0}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{   134,    -38,     39}, 0, {     0,      0}, {0x75, 0xdf, 0x22, 0xff}}},\n    {{{   134,      1,     55}, 0, {     0,      0}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{   145,      1,      0}, 0, {     0,      0}, {0x7f, 0x01, 0x00, 0xff}}},\n};\n\n// 0x05003008\nstatic const Vtx bully_seg5_vertex_05003008[] = {\n    {{{  -133,    -56,      0}, 0, {     0,      0}, {0x8b, 0xcf, 0x00, 0xff}}},\n    {{{  -133,    -40,     39}, 0, {     0,      0}, {0x8b, 0xdd, 0x22, 0x00}}},\n    {{{  -145,     -1,      0}, 0, {     0,      0}, {0x81, 0xff, 0x00, 0x00}}},\n    {{{  -101,   -103,      0}, 0, {     0,      0}, {0xa7, 0xa6, 0x00, 0xff}}},\n    {{{  -102,    -73,     72}, 0, {     0,      0}, {0xa7, 0xc0, 0x3f, 0xff}}},\n    {{{   -54,   -134,      0}, 0, {     0,      0}, {0xd0, 0x8b, 0x00, 0xff}}},\n    {{{   -54,    -95,     94}, 0, {     0,      0}, {0xd0, 0xad, 0x52, 0xff}}},\n    {{{     1,   -145,      0}, 0, {     0,      0}, {0x01, 0x81, 0x00, 0xff}}},\n    {{{     0,   -102,    102}, 0, {     0,      0}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{    56,   -133,      0}, 0, {     0,      0}, {0x31, 0x8c, 0x00, 0xff}}},\n    {{{    56,    -94,     94}, 0, {     0,      0}, {0x31, 0xae, 0x52, 0xff}}},\n    {{{   103,   -101,      0}, 0, {     0,      0}, {0x5a, 0xa8, 0x00, 0xff}}},\n    {{{   103,    -71,     72}, 0, {     0,      0}, {0x5a, 0xc2, 0x3f, 0xff}}},\n    {{{   134,    -54,      0}, 0, {     0,      0}, {0x75, 0xd1, 0x00, 0xff}}},\n    {{{   134,    -38,     39}, 0, {     0,      0}, {0x75, 0xdf, 0x22, 0xff}}},\n    {{{   145,      1,      0}, 0, {     0,      0}, {0x7f, 0x01, 0x00, 0xff}}},\n};\n\n// 0x05003108\nstatic const Vtx bully_seg5_vertex_05003108[] = {\n    {{{  -133,    -40,    -39}, 0, {     0,      0}, {0x8b, 0xdd, 0xde, 0xff}}},\n    {{{  -133,    -56,      0}, 0, {     0,      0}, {0x8b, 0xcf, 0x00, 0x00}}},\n    {{{  -145,     -1,      0}, 0, {     0,      0}, {0x81, 0xff, 0x00, 0x00}}},\n    {{{  -102,    -73,    -72}, 0, {     0,      0}, {0xa7, 0xc0, 0xc1, 0xff}}},\n    {{{  -101,   -103,      0}, 0, {     0,      0}, {0xa7, 0xa6, 0x00, 0xff}}},\n    {{{   -54,    -95,    -94}, 0, {     0,      0}, {0xd0, 0xad, 0xae, 0xff}}},\n    {{{   -54,   -134,      0}, 0, {     0,      0}, {0xd0, 0x8b, 0x00, 0xff}}},\n    {{{     0,   -102,   -102}, 0, {     0,      0}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{     1,   -145,      0}, 0, {     0,      0}, {0x01, 0x81, 0x00, 0xff}}},\n    {{{    56,    -94,    -94}, 0, {     0,      0}, {0x31, 0xae, 0xae, 0xff}}},\n    {{{    56,   -133,      0}, 0, {     0,      0}, {0x31, 0x8c, 0x00, 0xff}}},\n    {{{   103,    -71,    -72}, 0, {     0,      0}, {0x5a, 0xc2, 0xc1, 0xff}}},\n    {{{   103,   -101,      0}, 0, {     0,      0}, {0x5a, 0xa8, 0x00, 0xff}}},\n    {{{   134,    -38,    -39}, 0, {     0,      0}, {0x75, 0xdf, 0xde, 0xff}}},\n    {{{   134,    -54,      0}, 0, {     0,      0}, {0x75, 0xd1, 0x00, 0xff}}},\n    {{{   145,      1,      0}, 0, {     0,      0}, {0x7f, 0x01, 0x00, 0xff}}},\n};\n\n// 0x05003208\nstatic const Vtx bully_seg5_vertex_05003208[] = {\n    {{{  -134,     -1,    -55}, 0, {     0,      0}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{  -133,    -40,    -39}, 0, {     0,      0}, {0x8b, 0xdd, 0xde, 0x00}}},\n    {{{  -145,     -1,      0}, 0, {     0,      0}, {0x81, 0xff, 0x00, 0x00}}},\n    {{{  -102,      0,   -102}, 0, {     0,      0}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{  -102,    -73,    -72}, 0, {     0,      0}, {0xa7, 0xc0, 0xc1, 0xff}}},\n    {{{   -55,      0,   -134}, 0, {     0,      0}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{   -54,    -95,    -94}, 0, {     0,      0}, {0xd0, 0xad, 0xae, 0xff}}},\n    {{{     0,      0,   -145}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,   -102,   -102}, 0, {     0,      0}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{    55,      0,   -134}, 0, {     0,      0}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{    56,    -94,    -94}, 0, {     0,      0}, {0x31, 0xae, 0xae, 0xff}}},\n    {{{   102,      0,   -102}, 0, {     0,      0}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{   103,    -71,    -72}, 0, {     0,      0}, {0x5a, 0xc2, 0xc1, 0xff}}},\n    {{{   134,      1,    -55}, 0, {     0,      0}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{   134,    -38,    -39}, 0, {     0,      0}, {0x75, 0xdf, 0xde, 0xff}}},\n    {{{   145,      1,      0}, 0, {     0,      0}, {0x7f, 0x01, 0x00, 0xff}}},\n};\n\n// 0x05003308\nstatic const Vtx bully_seg5_vertex_05003308[] = {\n    {{{  -134,     38,    -39}, 0, {     0,      0}, {0x8b, 0x21, 0xde, 0xff}}},\n    {{{  -134,     -1,    -55}, 0, {     0,      0}, {0x8b, 0x00, 0xd0, 0x00}}},\n    {{{  -145,     -1,      0}, 0, {     0,      0}, {0x81, 0xff, 0x00, 0x00}}},\n    {{{  -103,     71,    -72}, 0, {     0,      0}, {0xa6, 0x3e, 0xc1, 0xff}}},\n    {{{  -102,      0,   -102}, 0, {     0,      0}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{   -56,     94,    -94}, 0, {     0,      0}, {0xcf, 0x52, 0xae, 0xff}}},\n    {{{   -55,      0,   -134}, 0, {     0,      0}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{     0,    102,   -102}, 0, {     0,      0}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{     0,      0,   -145}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    54,     95,    -94}, 0, {     0,      0}, {0x30, 0x53, 0xae, 0xff}}},\n    {{{    55,      0,   -134}, 0, {     0,      0}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{   102,     73,    -72}, 0, {     0,      0}, {0x59, 0x40, 0xc1, 0xff}}},\n    {{{   102,      0,   -102}, 0, {     0,      0}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{   133,     40,    -39}, 0, {     0,      0}, {0x75, 0x23, 0xde, 0xff}}},\n    {{{   134,      1,    -55}, 0, {     0,      0}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{   145,      1,      0}, 0, {     0,      0}, {0x7f, 0x01, 0x00, 0xff}}},\n};\n\n// 0x05003408\nstatic const Vtx bully_seg5_vertex_05003408[] = {\n    {{{  -134,     54,      0}, 0, {     0,      0}, {0x8b, 0x2f, 0x00, 0xff}}},\n    {{{  -134,     38,    -39}, 0, {     0,      0}, {0x8b, 0x21, 0xde, 0x00}}},\n    {{{  -145,     -1,      0}, 0, {     0,      0}, {0x81, 0xff, 0x00, 0x00}}},\n    {{{  -103,    101,      0}, 0, {     0,      0}, {0xa6, 0x58, 0x00, 0xff}}},\n    {{{  -103,     71,    -72}, 0, {     0,      0}, {0xa6, 0x3e, 0xc1, 0xff}}},\n    {{{   -56,    133,      0}, 0, {     0,      0}, {0xcf, 0x74, 0x00, 0xff}}},\n    {{{   -56,     94,    -94}, 0, {     0,      0}, {0xcf, 0x52, 0xae, 0xff}}},\n    {{{    -1,    145,      0}, 0, {     0,      0}, {0xff, 0x7f, 0x00, 0xff}}},\n    {{{     0,    102,   -102}, 0, {     0,      0}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{    54,    134,      0}, 0, {     0,      0}, {0x30, 0x75, 0x00, 0xff}}},\n    {{{    54,     95,    -94}, 0, {     0,      0}, {0x30, 0x53, 0xae, 0xff}}},\n    {{{   101,    103,      0}, 0, {     0,      0}, {0x59, 0x5a, 0x00, 0xff}}},\n    {{{   102,     73,    -72}, 0, {     0,      0}, {0x59, 0x40, 0xc1, 0xff}}},\n    {{{   133,     56,      0}, 0, {     0,      0}, {0x75, 0x31, 0x00, 0xff}}},\n    {{{   133,     40,    -39}, 0, {     0,      0}, {0x75, 0x23, 0xde, 0xff}}},\n    {{{   145,      1,      0}, 0, {     0,      0}, {0x7f, 0x01, 0x00, 0xff}}},\n};\n\n// 0x05003508\nstatic const Vtx bully_seg5_vertex_05003508[] = {\n    {{{  -134,     38,     39}, 0, {     0,      0}, {0x8b, 0x21, 0x22, 0xff}}},\n    {{{  -134,     54,      0}, 0, {     0,      0}, {0x8b, 0x2f, 0x00, 0x00}}},\n    {{{  -145,     -1,      0}, 0, {     0,      0}, {0x81, 0xff, 0x00, 0x00}}},\n    {{{  -103,     71,     72}, 0, {     0,      0}, {0xa6, 0x3e, 0x3f, 0xff}}},\n    {{{  -103,    101,      0}, 0, {     0,      0}, {0xa6, 0x58, 0x00, 0xff}}},\n    {{{   -56,     94,     94}, 0, {     0,      0}, {0xcf, 0x52, 0x52, 0xff}}},\n    {{{   -56,    133,      0}, 0, {     0,      0}, {0xcf, 0x74, 0x00, 0xff}}},\n    {{{     0,    102,    102}, 0, {     0,      0}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{    -1,    145,      0}, 0, {     0,      0}, {0xff, 0x7f, 0x00, 0xff}}},\n    {{{    54,     95,     94}, 0, {     0,      0}, {0x30, 0x53, 0x52, 0xff}}},\n    {{{    54,    134,      0}, 0, {     0,      0}, {0x30, 0x75, 0x00, 0xff}}},\n    {{{   102,     73,     72}, 0, {     0,      0}, {0x59, 0x40, 0x3f, 0xff}}},\n    {{{   101,    103,      0}, 0, {     0,      0}, {0x59, 0x5a, 0x00, 0xff}}},\n    {{{   133,     40,     39}, 0, {     0,      0}, {0x75, 0x23, 0x22, 0xff}}},\n    {{{   133,     56,      0}, 0, {     0,      0}, {0x75, 0x31, 0x00, 0xff}}},\n    {{{   145,      1,      0}, 0, {     0,      0}, {0x7f, 0x01, 0x00, 0xff}}},\n};\n\n// 0x05003608\nstatic const Vtx bully_seg5_vertex_05003608[] = {\n    {{{  -134,     -1,     55}, 0, {     0,      0}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{  -134,     38,     39}, 0, {     0,      0}, {0x8b, 0x21, 0x22, 0x00}}},\n    {{{  -145,     -1,      0}, 0, {     0,      0}, {0x81, 0xff, 0x00, 0x00}}},\n    {{{  -102,      0,    102}, 0, {     0,      0}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  -103,     71,     72}, 0, {     0,      0}, {0xa6, 0x3e, 0x3f, 0xff}}},\n    {{{   -55,      0,    134}, 0, {     0,      0}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{   -56,     94,     94}, 0, {     0,      0}, {0xcf, 0x52, 0x52, 0xff}}},\n    {{{     0,      0,    145}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,    102,    102}, 0, {     0,      0}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{    55,      0,    134}, 0, {     0,      0}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{    54,     95,     94}, 0, {     0,      0}, {0x30, 0x53, 0x52, 0xff}}},\n    {{{   102,      0,    102}, 0, {     0,      0}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{   102,     73,     72}, 0, {     0,      0}, {0x59, 0x40, 0x3f, 0xff}}},\n    {{{   134,      1,     55}, 0, {     0,      0}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{   133,     40,     39}, 0, {     0,      0}, {0x75, 0x23, 0x22, 0xff}}},\n    {{{   145,      1,      0}, 0, {     0,      0}, {0x7f, 0x01, 0x00, 0xff}}},\n};\n\n// 0x05003708 - 0x050037A0\nconst Gfx bully_seg5_dl_05003708[] = {\n    gsSPLight(&bully_seg5_lights_05000408.l, 1),\n    gsSPLight(&bully_seg5_lights_05000408.a, 2),\n    gsSPVertex(bully_seg5_vertex_05002C68, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  1,  5,  6, 0x0),\n    gsSP2Triangles( 1,  6,  7, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 0,  2,  8, 0x0,  8,  2,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  8, 12, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0,  0,  8, 11, 0x0),\n    gsSPVertex(bully_seg5_vertex_05002D48, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050037A0 - 0x05003838\nconst Gfx bully_seg5_dl_050037A0[] = {\n    gsSPLight(&bully_seg5_lights_05000420.l, 1),\n    gsSPLight(&bully_seg5_lights_05000420.a, 2),\n    gsSPVertex(bully_seg5_vertex_05002D88, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 3,  1,  0, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  1, 0x0,  1,  7,  2, 0x0),\n    gsSP2Triangles( 8,  0,  2, 0x0,  9, 10,  0, 0x0),\n    gsSP2Triangles( 9,  0,  8, 0x0, 11, 12,  8, 0x0),\n    gsSP2Triangles(11,  8, 13, 0x0, 13,  8,  2, 0x0),\n    gsSPVertex(bully_seg5_vertex_05002E68, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003838 - 0x05003878\nconst Gfx bully_seg5_dl_05003838[] = {\n    gsSPLight((u8*)bully_seg5_texture_05000468 + 0x8, 1), //! yet another malformed light...\n    gsSPLight(bully_seg5_texture_05000468, 2),\n    gsSPVertex(bully_seg5_vertex_05002EA8, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  3,  5,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003878 - 0x05003C50\nconst Gfx bully_seg5_dl_05003878[] = {\n    gsSPLight(&bully_seg5_lights_05000450.l, 1),\n    gsSPLight(&bully_seg5_lights_05000450.a, 2),\n    gsSPVertex(bully_seg5_vertex_05002F08, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(bully_seg5_vertex_05003008, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(bully_seg5_vertex_05003108, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(bully_seg5_vertex_05003208, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(bully_seg5_vertex_05003308, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(bully_seg5_vertex_05003408, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(bully_seg5_vertex_05003508, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(bully_seg5_vertex_05003608, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003C50\nstatic const Vtx bully_seg5_vertex_05003C50[] = {\n    {{{     0,     57,      0}, 0, {   992,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -55,    -55,      0}, 0, {     0,   2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    -55,      0}, 0, {   992,   2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -55,     57,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x05003C90\nstatic const Vtx bully_seg5_vertex_05003C90[] = {\n    {{{    57,     57,      0}, 0, {   992,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    -55,      0}, 0, {     0,   2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    57,    -55,      0}, 0, {   992,   2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,     57,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x05003CD0 - 0x05003D08\nconst Gfx bully_seg5_dl_05003CD0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bully_seg5_texture_05000468),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bully_seg5_vertex_05003C50, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003D08 - 0x05003D40\nconst Gfx bully_seg5_dl_05003D08[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bully_seg5_texture_05001468),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bully_seg5_vertex_05003C90, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003D40 - 0x05003DB8\nconst Gfx bully_seg5_dl_05003D40[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bully_seg5_dl_05003CD0),\n    gsSPDisplayList(bully_seg5_dl_05003D08),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003DB8\nstatic const Vtx bully_seg5_vertex_05003DB8[] = {\n    {{{     0,    114,      0}, 0, {   992,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -111,   -111,      0}, 0, {     0,   2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -111,      0}, 0, {   992,   2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -111,    114,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x05003DF8\nstatic const Vtx bully_seg5_vertex_05003DF8[] = {\n    {{{   114,    114,      0}, 0, {   992,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -111,      0}, 0, {     0,   2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   114,   -111,      0}, 0, {   992,   2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    114,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x05003E38 - 0x05003E70\nconst Gfx bully_seg5_dl_05003E38[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bully_seg5_texture_05000468),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bully_seg5_vertex_05003DB8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003E70 - 0x05003EA8\nconst Gfx bully_seg5_dl_05003E70[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bully_seg5_texture_05001468),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bully_seg5_vertex_05003DF8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003EA8 - 0x05003F20\nconst Gfx bully_seg5_dl_05003EA8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bully_seg5_dl_05003E38),\n    gsSPDisplayList(bully_seg5_dl_05003E70),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003F20\nstatic const Vtx bully_seg5_vertex_05003F20[] = {\n    {{{   -36,    152,      0}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -40,    136,     68}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    56,    124,     68}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    60,    140,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    56,    124,    -64}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -40,    136,    -64}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x05003F80 - 0x05003FC8\nconst Gfx bully_seg5_dl_05003F80[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bully_seg5_texture_05002468),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bully_seg5_vertex_05003F20, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  3,  5,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003FC8 - 0x05004038\nconst Gfx bully_seg5_dl_05003FC8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bully_seg5_dl_05003F80),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/burn_smoke/geo.inc.c",
    "content": "// 0x17000084\nconst GeoLayout burn_smoke_geo[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, burn_smoke_seg4_dl_04022070),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/burn_smoke/model.inc.c",
    "content": "// Burn Smoke\n\n// 0x040217C0\nstatic const Vtx burn_smoke_seg4_vertex_040217C0[] = {\n    {{{   -50,    -50,      0}, 0, {     0,    992}, {0x14, 0x0a, 0x0a, 0xff}}},\n    {{{    50,    -50,      0}, 0, {   992,    992}, {0x14, 0x0a, 0x0a, 0xff}}},\n    {{{    50,     50,      0}, 0, {   992,      0}, {0x14, 0x0a, 0x0a, 0xff}}},\n    {{{   -50,     50,      0}, 0, {     0,      0}, {0x14, 0x0a, 0x0a, 0xff}}},\n};\n\n// //! Wrong texture format. Called as rgba16, which makes the burn smoke appear\n//     as a transparent black burn smoke. Probably meant to show up as white-ish\n//     burn smoke, but mistakened for being intended as black smoke.\n// 0x04021800\nALIGNED8 static const Texture burn_smoke_seg4_texture_04021800[] = {\n#include \"actors/burn_smoke/burn_smoke.ia16.inc.c\"\n};\n\n// 0x04022000 - 0x04022028\nconst Gfx burn_smoke_seg4_dl_04022000[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsSPEndDisplayList(),\n};\n\n// 0x04022028 - 0x04022048\nconst Gfx burn_smoke_seg4_dl_04022028[] = {\n    gsSPVertex(burn_smoke_seg4_vertex_040217C0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x04022048 - 0x04022070\nconst Gfx burn_smoke_seg4_dl_04022048[] = {\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x04022070 - 0x040220C8\nconst Gfx burn_smoke_seg4_dl_04022070[] = {\n    gsSPDisplayList(burn_smoke_seg4_dl_04022000),\n    gsDPLoadTextureBlock(burn_smoke_seg4_texture_04021800, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 5, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPDisplayList(burn_smoke_seg4_dl_04022028),\n    gsSPDisplayList(burn_smoke_seg4_dl_04022048),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/butterfly/anims/anim_030055B0.inc.c",
    "content": "// 0x03005538\nstatic const s16 butterfly_seg3_animvalue_03005538[] = {\n    0x0000, 0x352F, 0x28EE, 0x122D, 0x05EC, 0x0D4E, 0x1D8D, 0x2DCC,\n    0x352F, 0x4B1B, 0x569E, 0x6C00, 0x7784, 0x7093, 0x614F, 0x520B,\n    0x4B1B, 0x0000,\n};\n\n// 0x0300555C\nstatic const u16 butterfly_seg3_animindex_0300555C[] = {\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x0001,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x0009,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x030055B0\nstatic const struct Animation butterfly_seg3_anim_030055B0 = {\n    0,\n    0,\n    7,\n    0,\n    0x08,\n    ANIMINDEX_NUMPARTS(butterfly_seg3_animindex_0300555C),\n    butterfly_seg3_animvalue_03005538,\n    butterfly_seg3_animindex_0300555C,\n    0,\n};\n"
  },
  {
    "path": "actors/butterfly/anims/anim_03005698.inc.c",
    "content": "// 0x030055C8\nstatic const s16 butterfly_seg3_animvalue_030055C8[] = {\n    0x0000, 0x3A7B, 0x3A7B, 0x3998, 0x3721, 0x3360, 0x2E9D, 0x2923,\n    0x233A, 0x1D2D, 0x1744, 0x11CA, 0x0D07, 0x0945, 0x06CF, 0x05EC,\n    0x0697, 0x087A, 0x0B63, 0x0F24, 0x138C, 0x186C, 0x1D94, 0x22D3,\n    0x27FB, 0x2CDB, 0x3143, 0x3503, 0x37ED, 0x39CF, 0x3A7B, 0x4637,\n    0x4637, 0x470C, 0x495C, 0x4CE1, 0x5159, 0x567C, 0x5C07, 0x61B4,\n    0x673F, 0x6C63, 0x70DA, 0x7460, 0x76AF, 0x7784, 0x76E3, 0x751F,\n    0x7263, 0x6EDE, 0x6ABC, 0x6629, 0x6154, 0x5C68, 0x5792, 0x52FF,\n    0x4EDD, 0x4B58, 0x489D, 0x46D8, 0x4637, 0x0000,\n};\n\n// 0x03005644\nstatic const u16 butterfly_seg3_animindex_03005644[] = {\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0001,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x001F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x03005698\nstatic const struct Animation butterfly_seg3_anim_03005698 = {\n    0,\n    0,\n    7,\n    0,\n    0x1E,\n    ANIMINDEX_NUMPARTS(butterfly_seg3_animindex_03005644),\n    butterfly_seg3_animvalue_030055C8,\n    butterfly_seg3_animindex_03005644,\n    0,\n};\n"
  },
  {
    "path": "actors/butterfly/anims/data.inc.c",
    "content": "#include \"anim_030055B0.inc.c\"\n#include \"anim_03005698.inc.c\"\n"
  },
  {
    "path": "actors/butterfly/anims/table.inc.c",
    "content": "// 0x030056B0\nconst struct Animation *const butterfly_seg3_anims_030056B0[] = {\n    &butterfly_seg3_anim_030055B0,\n    &butterfly_seg3_anim_03005698,\n};\n"
  },
  {
    "path": "actors/butterfly/geo.inc.c",
    "content": "// 0x160000A8\nconst GeoLayout butterfly_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xB4, 25),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, butterfly_seg3_dl_03005408),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, butterfly_seg3_dl_030054A0),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/butterfly/model.inc.c",
    "content": "// Butterfly\n\n// 0x03004348\nstatic const Vtx butterfly_seg3_vertex_03004348[] = {\n    {{{     0,      0,    -78}, 0, {  2004,    -48}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    79,      0,     39}, 0, {   -60,   4056}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    79,      0,    -78}, 0, {   -56,    -48}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,    -78}, 0, {  2004,    -48}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,     39}, 0, {  2004,   4056}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    79,      0,     39}, 0, {   -60,   4056}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x030043A8\nALIGNED8 static const Texture butterfly_seg3_texture_030043A8[] = {\n#include \"actors/butterfly/butterfly_wing.rgba16.inc.c\"\n};\n\n// 0x030053A8\nstatic const Vtx butterfly_seg3_vertex_030053A8[] = {\n    {{{    79,      0,    -78}, 0, {   -56,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,     39}, 0, {  1972,   4024}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,    -78}, 0, {  2000,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    79,      0,    -78}, 0, {   -56,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    79,      0,     39}, 0, {   -80,   4032}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,     39}, 0, {  1972,   4024}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x03005408 - 0x030054A0\nconst Gfx butterfly_seg3_dl_03005408[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),\n    gsDPLoadTextureBlock(butterfly_seg3_texture_030043A8, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 64, 0, G_TX_CLAMP, G_TX_CLAMP, 5, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(butterfly_seg3_vertex_03004348, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPTexture(0x8000, 0x8000, 1, G_TX_RENDERTILE + 1, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x030054A0 - 0x03005538\nconst Gfx butterfly_seg3_dl_030054A0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),\n    gsDPLoadTextureBlock(butterfly_seg3_texture_030043A8, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 64, 0, G_TX_CLAMP, G_TX_CLAMP, 5, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(butterfly_seg3_vertex_030053A8, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPTexture(0x8000, 0x8000, 1, G_TX_RENDERTILE + 1, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/cannon_barrel/geo.inc.c",
    "content": "// 0x0F0001C0\nconst GeoLayout cannon_barrel_geo[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, cannon_barrel_seg8_dl_08006660),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/cannon_barrel/model.inc.c",
    "content": "// Cannon Barrel\n\n// 0x08005878\nstatic const Lights1 cannon_barrel_seg8_lights_08005878 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x08005890\nstatic const Lights1 cannon_barrel_seg8_lights_08005890 = gdSPDefLights1(\n    0x00, 0x00, 0x0f,\n    0x00, 0x00, 0x32, 0x28, 0x28, 0x28\n);\n\n// 0x080058A8\nALIGNED8 static const Texture cannon_barrel_seg8_texture_080058A8[] = {\n#include \"actors/cannon_barrel/cannon_barrel.rgba16.inc.c\"\n};\n\n// 0x080060A8\nstatic const Vtx cannon_barrel_seg8_vertex_080060A8[] = {\n    {{{   -40,    236,     41}, 0, {   176,    748}, {0x45, 0x5d, 0xcd, 0xff}}},\n    {{{   -56,    236,      0}, 0, {    64,    480}, {0x66, 0x49, 0x0d, 0xff}}},\n    {{{   -81,    236,      0}, 0, {   -98,    480}, {0xb8, 0x68, 0x09, 0xff}}},\n    {{{   -57,    236,     58}, 0, {    60,    864}, {0xcc, 0x5c, 0x44, 0xff}}},\n    {{{   -40,    236,    -40}, 0, {   176,    210}, {0x2b, 0x68, 0x3a, 0xff}}},\n    {{{   -57,    236,    -57}, 0, {    60,     94}, {0xae, 0x49, 0xc2, 0xff}}},\n    {{{     0,    236,    -81}, 0, {   444,    -66}, {0xf4, 0x5c, 0xab, 0xff}}},\n    {{{     0,    236,    -56}, 0, {   444,     98}, {0xf6, 0x5c, 0x56, 0xff}}},\n    {{{    41,    236,    -40}, 0, {   714,    210}, {0xbc, 0x5d, 0x33, 0xff}}},\n    {{{    58,    236,    -57}, 0, {   830,     94}, {0x34, 0x5c, 0xbb, 0xff}}},\n    {{{    57,    236,      0}, 0, {   826,    480}, {0xaa, 0x5c, 0xf6, 0xff}}},\n    {{{    82,    236,      0}, 0, {   990,    480}, {0x55, 0x5c, 0xf4, 0xff}}},\n    {{{    58,    236,     58}, 0, {   830,    864}, {0x3a, 0x68, 0x2b, 0xff}}},\n    {{{    41,    236,     41}, 0, {   714,    748}, {0xc3, 0x4a, 0xae, 0xff}}},\n    {{{     0,    236,     57}, 0, {   444,    860}, {0x09, 0x67, 0xb8, 0xff}}},\n    {{{     0,    236,     82}, 0, {   444,   1022}, {0x0d, 0x49, 0x66, 0xff}}},\n};\n\n// 0x080061A8\nstatic const Vtx cannon_barrel_seg8_vertex_080061A8[] = {\n    {{{    41,    236,     41}, 0, {     0,      0}, {0xc3, 0x4a, 0xae, 0xff}}},\n    {{{    41,    -19,     41}, 0, {     0,      0}, {0xae, 0x4a, 0xc3, 0xff}}},\n    {{{     0,    -19,     57}, 0, {     0,      0}, {0xf3, 0x49, 0x9a, 0xff}}},\n    {{{   -40,    236,    -40}, 0, {     0,      0}, {0x2b, 0x68, 0x3a, 0xff}}},\n    {{{   -40,    -19,    -40}, 0, {     0,      0}, {0x2a, 0x73, 0x20, 0xff}}},\n    {{{     0,    -19,    -56}, 0, {     0,      0}, {0x10, 0x2a, 0x76, 0xff}}},\n    {{{   -56,    236,      0}, 0, {     0,      0}, {0x66, 0x49, 0x0d, 0xff}}},\n    {{{   -56,    -19,      0}, 0, {     0,      0}, {0x76, 0x2a, 0xf1, 0xff}}},\n    {{{    41,    -19,    -40}, 0, {     0,      0}, {0xc3, 0x4a, 0x52, 0xff}}},\n    {{{   -40,    -19,     41}, 0, {     0,      0}, {0x3e, 0x4a, 0xae, 0xff}}},\n    {{{    57,    -19,      0}, 0, {     0,      0}, {0x9a, 0x49, 0x0d, 0xff}}},\n    {{{   -40,    236,     41}, 0, {     0,      0}, {0x45, 0x5d, 0xcd, 0xff}}},\n    {{{     0,    236,     57}, 0, {     0,      0}, {0x09, 0x67, 0xb8, 0xff}}},\n    {{{    57,    236,      0}, 0, {     0,      0}, {0xaa, 0x5c, 0xf6, 0xff}}},\n    {{{    41,    236,    -40}, 0, {     0,      0}, {0xbc, 0x5d, 0x33, 0xff}}},\n    {{{     0,    236,    -56}, 0, {     0,      0}, {0xf6, 0x5c, 0x56, 0xff}}},\n};\n\n// 0x080062A8\nstatic const Vtx cannon_barrel_seg8_vertex_080062A8[] = {\n    {{{    82,    -19,      0}, 0, {     0,      0}, {0x74, 0xce, 0x0b, 0xff}}},\n    {{{    58,    -19,     58}, 0, {     0,      0}, {0x49, 0xce, 0x5a, 0xff}}},\n    {{{     0,    -71,      0}, 0, {     0,      0}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{     0,    -19,     82}, 0, {     0,      0}, {0xf4, 0xce, 0x74, 0xff}}},\n    {{{    58,    236,     58}, 0, {     0,      0}, {0x3a, 0x68, 0x2b, 0xff}}},\n    {{{     0,    236,     82}, 0, {     0,      0}, {0x0d, 0x49, 0x66, 0xff}}},\n    {{{    82,    236,      0}, 0, {     0,      0}, {0x55, 0x5c, 0xf4, 0xff}}},\n    {{{   -57,    236,     58}, 0, {     0,      0}, {0xcc, 0x5c, 0x44, 0xff}}},\n    {{{   -57,    -19,     58}, 0, {     0,      0}, {0xa6, 0xcf, 0x49, 0xff}}},\n    {{{    58,    -19,    -57}, 0, {     0,      0}, {0x5a, 0xcf, 0xb6, 0xff}}},\n    {{{    58,    236,    -57}, 0, {     0,      0}, {0x34, 0x5c, 0xbb, 0xff}}},\n    {{{     0,    -19,    -81}, 0, {     0,      0}, {0x0b, 0xcf, 0x8c, 0xff}}},\n    {{{     0,    236,    -81}, 0, {     0,      0}, {0xf4, 0x5c, 0xab, 0xff}}},\n    {{{   -57,    -19,    -57}, 0, {     0,      0}, {0xb6, 0xcf, 0xa6, 0xff}}},\n    {{{   -81,    236,      0}, 0, {     0,      0}, {0xb8, 0x68, 0x09, 0xff}}},\n    {{{   -57,    236,    -57}, 0, {     0,      0}, {0xae, 0x49, 0xc2, 0xff}}},\n};\n\n// 0x080063A8\nstatic const Vtx cannon_barrel_seg8_vertex_080063A8[] = {\n    {{{   -81,    -19,      0}, 0, {     0,      0}, {0x8c, 0xcf, 0xf4, 0xff}}},\n    {{{   -57,    -19,    -57}, 0, {     0,      0}, {0xb6, 0xcf, 0xa6, 0xff}}},\n    {{{     0,    -71,      0}, 0, {     0,      0}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{   -57,    236,    -57}, 0, {     0,      0}, {0xae, 0x49, 0xc2, 0xff}}},\n    {{{   -81,    236,      0}, 0, {     0,      0}, {0xb8, 0x68, 0x09, 0xff}}},\n    {{{   -57,    -19,     58}, 0, {     0,      0}, {0xa6, 0xcf, 0x49, 0xff}}},\n};\n\n// 0x08006408 - 0x080064C0\nconst Gfx cannon_barrel_seg8_dl_08006408[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cannon_barrel_seg8_texture_080058A8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&cannon_barrel_seg8_lights_08005878.l, 1),\n    gsSPLight(&cannon_barrel_seg8_lights_08005878.a, 2),\n    gsSPVertex(cannon_barrel_seg8_vertex_080060A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  2,  1,  4, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  4,  7,  6, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7,  9,  6, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(10, 12, 11, 0x0, 10, 13, 12, 0x0),\n    gsSP2Triangles(14, 15, 12, 0x0, 14,  3, 15, 0x0),\n    gsSP2Triangles(14,  0,  3, 0x0, 14, 12, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x080064C0 - 0x08006660\nconst Gfx cannon_barrel_seg8_dl_080064C0[] = {\n    gsSPLight(&cannon_barrel_seg8_lights_08005890.l, 1),\n    gsSPLight(&cannon_barrel_seg8_lights_08005890.a, 2),\n    gsSPVertex(cannon_barrel_seg8_vertex_080061A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  4, 0x0,  6,  4,  3, 0x0),\n    gsSP2Triangles( 4,  8,  5, 0x0,  4,  7,  9, 0x0),\n    gsSP2Triangles( 4,  9,  2, 0x0,  4,  2,  1, 0x0),\n    gsSP2Triangles( 4,  1, 10, 0x0,  4, 10,  8, 0x0),\n    gsSP2Triangles(11,  9,  7, 0x0, 11,  7,  6, 0x0),\n    gsSP2Triangles(12,  2,  9, 0x0, 12,  9, 11, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 10,  1, 0x0),\n    gsSP2Triangles(13,  1,  0, 0x0, 14,  8, 10, 0x0),\n    gsSP2Triangles(14, 10, 13, 0x0, 15,  8, 14, 0x0),\n    gsSP2Triangles(15,  5,  8, 0x0,  3,  5, 15, 0x0),\n    gsSPVertex(cannon_barrel_seg8_vertex_080062A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  1,  5,  3, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  0,  6,  4, 0x0),\n    gsSP2Triangles( 3,  5,  7, 0x0,  3,  8,  2, 0x0),\n    gsSP2Triangles( 3,  7,  8, 0x0,  9,  0,  2, 0x0),\n    gsSP2Triangles( 9,  6,  0, 0x0,  9, 10,  6, 0x0),\n    gsSP2Triangles(11,  9,  2, 0x0, 11, 10,  9, 0x0),\n    gsSP2Triangles(11, 12, 10, 0x0, 13, 11,  2, 0x0),\n    gsSP2Triangles(13, 12, 11, 0x0,  8,  7, 14, 0x0),\n    gsSP1Triangle(13, 15, 12, 0x0),\n    gsSPVertex(cannon_barrel_seg8_vertex_080063A8, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  5,  0,  2, 0x0),\n    gsSP1Triangle( 5,  4,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x08006660 - 0x080066C8\nconst Gfx cannon_barrel_seg8_dl_08006660[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(cannon_barrel_seg8_dl_08006408),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(cannon_barrel_seg8_dl_080064C0),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/cannon_base/geo.inc.c",
    "content": "// 0x0F0001A8\nconst GeoLayout cannon_base_geo[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, cannon_base_seg8_dl_080057F8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/cannon_base/model.inc.c",
    "content": "// Cannon Base\n\n// 0x08004988\nstatic const Lights1 cannon_base_seg8_lights_08004988 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x080049A0\nstatic const Lights1 cannon_base_seg8_lights_080049A0 = gdSPDefLights1(\n    0x0e, 0x10, 0x4c,\n    0x30, 0x37, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x080049B8\nALIGNED8 static const Texture cannon_base_seg8_texture_080049B8[] = {\n#include \"actors/cannon_base/cannon_base.rgba16.inc.c\"\n};\n\n// 0x080051B8\nstatic const Vtx cannon_base_seg8_vertex_080051B8[] = {\n    {{{   102,   -101,     51}, 0, {     0,   1758}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,   -101,    -50}, 0, {   990,   1758}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,     51,    -50}, 0, {   990,    228}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,     77,     26}, 0, {   224,    -28}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,     51,     51}, 0, {     0,    228}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,     77,    -25}, 0, {   734,    -28}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -101,     51,    -50}, 0, {     0,    224}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -101,     77,     26}, 0, {   734,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -101,     77,    -25}, 0, {   224,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -101,   -101,    -50}, 0, {     0,   1754}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -101,   -101,     51}, 0, {   990,   1754}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -101,     51,     51}, 0, {   990,    224}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x08005278\nstatic const Vtx cannon_base_seg8_vertex_08005278[] = {\n    {{{   -60,   -101,     51}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    61,   -101,     51}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    61,   -101,    -50}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,   -101,    -50}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    61,     51,    -50}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   102,     51,    -50}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    61,   -101,    -50}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    61,     51,    -50}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    61,   -101,    -50}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    61,   -101,     51}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    61,     77,     26}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    61,     77,    -25}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    61,     51,     51}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   102,     51,    -50}, 0, {     0,      0}, {0x00, 0x58, 0xa5, 0xff}}},\n    {{{    61,     51,    -50}, 0, {     0,      0}, {0x00, 0x58, 0xa5, 0xff}}},\n    {{{    61,     77,    -25}, 0, {     0,      0}, {0x00, 0x58, 0xa5, 0xff}}},\n};\n\n// 0x08005378\nstatic const Vtx cannon_base_seg8_vertex_08005378[] = {\n    {{{   102,     51,    -50}, 0, {     0,      0}, {0x00, 0x58, 0xa5, 0xff}}},\n    {{{    61,     77,    -25}, 0, {     0,      0}, {0x00, 0x58, 0xa5, 0xff}}},\n    {{{   102,     77,    -25}, 0, {     0,      0}, {0x00, 0x58, 0xa5, 0xff}}},\n    {{{   102,     77,    -25}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    61,     77,    -25}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    61,     77,     26}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,     77,     26}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,     77,     26}, 0, {     0,      0}, {0x00, 0x58, 0x5b, 0xff}}},\n    {{{    61,     77,     26}, 0, {     0,      0}, {0x00, 0x58, 0x5b, 0xff}}},\n    {{{    61,     51,     51}, 0, {     0,      0}, {0x00, 0x58, 0x5b, 0xff}}},\n    {{{   102,     51,     51}, 0, {     0,      0}, {0x00, 0x58, 0x5b, 0xff}}},\n    {{{   102,     51,     51}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    61,     51,     51}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    61,   -101,     51}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,   -101,     51}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x08005468\nstatic const Vtx cannon_base_seg8_vertex_08005468[] = {\n    {{{   -60,   -101,     51}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    61,   -101,    -50}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -60,   -101,    -50}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -101,     77,    -25}, 0, {     0,      0}, {0x00, 0x58, 0xa5, 0xff}}},\n    {{{   -60,     51,    -50}, 0, {     0,      0}, {0x00, 0x58, 0xa5, 0xff}}},\n    {{{  -101,     51,    -50}, 0, {     0,      0}, {0x00, 0x58, 0xa5, 0xff}}},\n    {{{  -101,     51,    -50}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -60,   -101,    -50}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -101,   -101,    -50}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -60,     51,    -50}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -60,   -101,     51}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -60,   -101,    -50}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -60,     51,    -50}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -60,     77,    -25}, 0, {     0,      0}, {0x00, 0x58, 0xa5, 0xff}}},\n    {{{   -60,     77,    -25}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x08005558\nstatic const Vtx cannon_base_seg8_vertex_08005558[] = {\n    {{{  -101,   -101,     51}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -60,     51,     51}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -101,     51,     51}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -60,   -101,     51}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -60,   -101,     51}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -60,     77,    -25}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -60,     77,     26}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -60,     51,     51}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -101,     51,     51}, 0, {     0,      0}, {0x00, 0x58, 0x5b, 0xff}}},\n    {{{   -60,     51,     51}, 0, {     0,      0}, {0x00, 0x58, 0x5b, 0xff}}},\n    {{{   -60,     77,     26}, 0, {     0,      0}, {0x00, 0x58, 0x5b, 0xff}}},\n    {{{  -101,     77,     26}, 0, {     0,      0}, {0x00, 0x58, 0x5b, 0xff}}},\n    {{{  -101,     77,     26}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -60,     77,     26}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -60,     77,    -25}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -101,     77,    -25}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x08005658 - 0x080056D0\nconst Gfx cannon_base_seg8_dl_08005658[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cannon_base_seg8_texture_080049B8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&cannon_base_seg8_lights_08004988.l, 1),\n    gsSPLight(&cannon_base_seg8_lights_08004988.a, 2),\n    gsSPVertex(cannon_base_seg8_vertex_080051B8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  2,  5, 0x0,  0,  5,  3, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9, 10, 0x0),\n    gsSP2Triangles( 6, 10, 11, 0x0,  6, 11,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x080056D0 - 0x080057F8\nconst Gfx cannon_base_seg8_dl_080056D0[] = {\n    gsSPLight(&cannon_base_seg8_lights_080049A0.l, 1),\n    gsSPLight(&cannon_base_seg8_lights_080049A0.a, 2),\n    gsSPVertex(cannon_base_seg8_vertex_08005278, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10, 11, 0x0,  7, 12, 10, 0x0),\n    gsSP2Triangles( 7,  9, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(cannon_base_seg8_vertex_08005378, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(cannon_base_seg8_vertex_08005468, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  3, 13,  4, 0x0),\n    gsSP1Triangle(10, 12, 14, 0x0),\n    gsSPVertex(cannon_base_seg8_vertex_08005558, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x080057F8 - 0x08005870\nconst Gfx cannon_base_seg8_dl_080057F8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(cannon_base_seg8_dl_08005658),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(cannon_base_seg8_dl_080056D0),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/cannon_lid/collision.inc.c",
    "content": "// Cannon Lid\n\n// 0x08004950 - 0x08004980\nconst Collision cannon_lid_seg8_collision_08004950[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x4),\n    COL_VERTEX(112, 0, -111),\n    COL_VERTEX(-111, 0, -111),\n    COL_VERTEX(-111, 0, 112),\n    COL_VERTEX(112, 0, 112),\n\n    COL_TRI_INIT(SURFACE_DEFAULT, 2),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "actors/cannon_lid/geo.inc.c",
    "content": "// Empty geo script\nUNUSED static const u64 cannon_lid_unused_1 = 0;\n"
  },
  {
    "path": "actors/cannon_lid/model.inc.c",
    "content": "// Cannon Lid\n\n// 0x08004040\nstatic const Lights1 cannon_lid_seg8_lights_08004040 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x08004058\nALIGNED8 static const Texture cannon_lid_seg8_texture_08004058[] = {\n#include \"actors/cannon_lid/cannon_lid.rgba16.inc.c\"\n};\n\n// 0x08004858\nstatic const Vtx cannon_lid_seg8_vertex_08004858[] = {\n    {{{   102,      0,   -101}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -101,      0,   -101}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -101,      0,    102}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,      0,    102}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x08004898 - 0x080048E0\nconst Gfx cannon_lid_seg8_dl_08004898[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cannon_lid_seg8_texture_08004058),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&cannon_lid_seg8_lights_08004040.l, 1),\n    gsSPLight(&cannon_lid_seg8_lights_08004040.a, 2),\n    gsSPVertex(cannon_lid_seg8_vertex_08004858, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x080048E0 - 0x08004950\nconst Gfx cannon_lid_seg8_dl_080048E0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(cannon_lid_seg8_dl_08004898),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n"
  },
  {
    "path": "actors/capswitch/collision.inc.c",
    "content": "// Capswitch\n\nconst Collision capswitch_collision_050033D0[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(292, 0, 254),\n    COL_VERTEX(292, 0, -253),\n    COL_VERTEX(292, 353, -253),\n    COL_VERTEX(-291, 0, -253),\n    COL_VERTEX(-291, 353, -253),\n    COL_VERTEX(-291, 0, 254),\n    COL_VERTEX(-291, 353, 254),\n    COL_VERTEX(292, 353, 254),\n\n    COL_TRI_INIT(SURFACE_SWITCH, 10),\n    COL_TRI(0, 1, 2),\n    COL_TRI(1, 3, 4),\n    COL_TRI(1, 4, 2),\n    COL_TRI(3, 5, 6),\n    COL_TRI(3, 6, 4),\n    COL_TRI(2, 4, 6),\n    COL_TRI(0, 2, 7),\n    COL_TRI(2, 6, 7),\n    COL_TRI(5, 7, 6),\n    COL_TRI(5, 0, 7),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n\nconst Collision capswitch_collision_05003448[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(292, 0, 254),\n    COL_VERTEX(292, 0, -253),\n    COL_VERTEX(292, 145, -253),\n    COL_VERTEX(-291, 0, -253),\n    COL_VERTEX(-291, 145, -253),\n    COL_VERTEX(-291, 0, 254),\n    COL_VERTEX(-291, 145, 254),\n    COL_VERTEX(292, 145, 254),\n\n    COL_TRI_INIT(SURFACE_SWITCH, 10),\n    COL_TRI(0, 1, 2),\n    COL_TRI(1, 3, 4),\n    COL_TRI(1, 4, 2),\n    COL_TRI(3, 5, 6),\n    COL_TRI(3, 6, 4),\n    COL_TRI(2, 4, 6),\n    COL_TRI(0, 2, 7),\n    COL_TRI(2, 6, 7),\n    COL_TRI(5, 7, 6),\n    COL_TRI(5, 0, 7),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "actors/capswitch/geo.inc.c",
    "content": "// 0x0C000048\nconst GeoLayout cap_switch_geo[] = {\n    GEO_CULLING_RADIUS(600),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT_DECAL, cap_switch_exclamation_seg5_dl_05002E00),\n        GEO_SWITCH_CASE(4, geo_switch_anim_state),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, capswitch_seg5_dl_05003350),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, capswitch_seg5_dl_05003370),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, capswitch_seg5_dl_05003390),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, capswitch_seg5_dl_050033B0),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/capswitch/model.inc.c",
    "content": "// Capswitch\n\n// 0x05001BB8\nstatic const Lights1 capswitch_seg5_lights_05001BB8 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05001BD0\nstatic const Lights1 capswitch_seg5_lights_05001BD0 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05001BE8\nstatic const Lights1 capswitch_seg5_lights_05001BE8 = gdSPDefLights1(\n    0x3f, 0x00, 0x00,\n    0xff, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x05001C00\nstatic const Lights1 capswitch_seg5_lights_05001C00 = gdSPDefLights1(\n    0x01, 0x2a, 0x09,\n    0x07, 0xa9, 0x25, 0x28, 0x28, 0x28\n);\n\n// 0x05001C18\nstatic const Lights1 capswitch_seg5_lights_05001C18 = gdSPDefLights1(\n    0x00, 0x00, 0x3f,\n    0x00, 0x00, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05001C30\nstatic const Lights1 capswitch_seg5_lights_05001C30 = gdSPDefLights1(\n    0x3f, 0x25, 0x02,\n    0xff, 0x96, 0x08, 0x28, 0x28, 0x28\n);\n\n// 0x05001C48\nALIGNED8 static const Texture capswitch_seg5_texture_05001C48[] = {\n#include \"actors/capswitch/cap_switch_head.ia16.inc.c\"\n};\n\n// 0x05002C48\nALIGNED8 static const Texture capswitch_seg5_texture_05002C48[] = {\n#include \"actors/capswitch/cap_switch_base.rgba16.inc.c\"\n};\n\n// 0x05002CC8\nstatic const Vtx capswitch_seg5_vertex_05002CC8[] = {\n    {{{  -118,    262,   -203}, 0, {  -130,    364}, {0x00, 0x36, 0x8e, 0xff}}},\n    {{{   130,      0,   -224}, 0, {  1144,   2144}, {0x00, 0x0a, 0x82, 0xff}}},\n    {{{  -129,      0,   -224}, 0, {  -184,   2144}, {0x00, 0x0a, 0x82, 0xff}}},\n    {{{   119,    262,   -203}, 0, {  1088,    364}, {0x00, 0x36, 0x8e, 0xff}}},\n    {{{   109,    352,   -108}, 0, {  1034,   -252}, {0x00, 0x5c, 0xa9, 0xff}}},\n    {{{  -108,    352,   -108}, 0, {   -74,   -252}, {0x00, 0x5c, 0xa9, 0xff}}},\n    {{{  -129,      0,    225}, 0, {  -184,   2144}, {0x00, 0x0a, 0x7e, 0xff}}},\n    {{{   119,    262,    204}, 0, {  1088,    364}, {0x00, 0x36, 0x72, 0xff}}},\n    {{{  -118,    262,    204}, 0, {  -130,    364}, {0x00, 0x36, 0x72, 0xff}}},\n    {{{  -108,    352,    109}, 0, {   -74,   -252}, {0x00, 0x5c, 0x57, 0xff}}},\n    {{{   130,      0,    225}, 0, {  1144,   2144}, {0x00, 0x0a, 0x7e, 0xff}}},\n    {{{   109,    352,    109}, 0, {  1034,   -252}, {0x00, 0x5c, 0x57, 0xff}}},\n};\n\n// 0x05002D88 - 0x05002E00\nconst Gfx capswitch_seg5_dl_05002D88[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, capswitch_seg5_texture_05001C48),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&capswitch_seg5_lights_05001BB8.l, 1),\n    gsSPLight(&capswitch_seg5_lights_05001BB8.a, 2),\n    gsSPVertex(capswitch_seg5_vertex_05002CC8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 4,  3,  0, 0x0,  5,  4,  0, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 7,  6, 10, 0x0, 11,  9,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05002E00 - 0x05002E60\nconst Gfx cap_switch_exclamation_seg5_dl_05002E00[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(capswitch_seg5_dl_05002D88),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x05002E60\nstatic const Vtx capswitch_seg5_vertex_05002E60[] = {\n    {{{   147,      0,   -253}, 0, {     0,    499}, {0x29, 0x00, 0x88, 0xff}}},\n    {{{  -146,      0,   -253}, 0, {     0,   -436}, {0xad, 0x00, 0xa1, 0xff}}},\n    {{{  -146,    137,   -253}, 0, {   407,   -436}, {0xd3, 0x48, 0xa3, 0xff}}},\n    {{{  -146,      0,    254}, 0, {     0,   -436}, {0xd7, 0x00, 0x77, 0xff}}},\n    {{{   147,      0,    254}, 0, {     0,    499}, {0x53, 0x00, 0x5f, 0xff}}},\n    {{{   147,    137,    254}, 0, {   407,    499}, {0x2d, 0x48, 0x5d, 0xff}}},\n    {{{   293,    137,      0}, 0, {   407,    967}, {0x68, 0x48, 0x07, 0xff}}},\n    {{{   293,      0,      0}, 0, {     0,    967}, {0x7c, 0x00, 0xe8, 0xff}}},\n    {{{   147,    137,   -253}, 0, {   407,    499}, {0x3a, 0x47, 0xaa, 0xff}}},\n    {{{   111,    170,   -192}, 0, {   510,    386}, {0x23, 0x72, 0xd7, 0xff}}},\n    {{{   222,    170,      0}, 0, {   510,    741}, {0x35, 0x72, 0x0a, 0xff}}},\n    {{{  -146,    137,    254}, 0, {   407,   -436}, {0xc6, 0x47, 0x56, 0xff}}},\n    {{{   111,    170,    193}, 0, {   510,    386}, {0x11, 0x72, 0x33, 0xff}}},\n    {{{  -292,    137,      0}, 0, {   407,   -904}, {0x98, 0x48, 0xf9, 0xff}}},\n    {{{  -110,    170,    193}, 0, {   510,   -323}, {0xdd, 0x72, 0x29, 0xff}}},\n    {{{  -221,    170,      0}, 0, {   510,   -678}, {0xcb, 0x72, 0xf6, 0xff}}},\n};\n\n// 0x05002F60\nstatic const Vtx capswitch_seg5_vertex_05002F60[] = {\n    {{{  -146,      0,   -253}, 0, {     0,   -436}, {0xad, 0x00, 0xa1, 0xff}}},\n    {{{  -292,      0,      0}, 0, {     0,   -904}, {0x84, 0x00, 0x17, 0xff}}},\n    {{{  -292,    137,      0}, 0, {   407,   -904}, {0x98, 0x48, 0xf9, 0xff}}},\n    {{{   147,    137,   -253}, 0, {   407,    499}, {0x3a, 0x47, 0xaa, 0xff}}},\n    {{{  -146,    137,   -253}, 0, {   407,   -436}, {0xd3, 0x48, 0xa3, 0xff}}},\n    {{{  -110,    170,   -192}, 0, {   510,   -323}, {0xef, 0x72, 0xcd, 0xff}}},\n    {{{  -221,    170,      0}, 0, {   510,   -678}, {0xcb, 0x72, 0xf6, 0xff}}},\n    {{{   111,    170,   -192}, 0, {   510,    386}, {0x23, 0x72, 0xd7, 0xff}}},\n    {{{  -146,    137,    254}, 0, {   407,   -436}, {0xc6, 0x47, 0x56, 0xff}}},\n    {{{   111,    170,    193}, 0, {   510,    386}, {0x11, 0x72, 0x33, 0xff}}},\n    {{{  -110,    170,    193}, 0, {   510,   -323}, {0xdd, 0x72, 0x29, 0xff}}},\n    {{{  -146,      0,    254}, 0, {     0,   -436}, {0xd7, 0x00, 0x77, 0xff}}},\n};\n\n// 0x05003020 - 0x05003120\nconst Gfx capswitch_seg5_dl_05003020[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, capswitch_seg5_texture_05002C48),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 4 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&capswitch_seg5_lights_05001BD0.l, 1),\n    gsSPLight(&capswitch_seg5_lights_05001BD0.a, 2),\n    gsSPVertex(capswitch_seg5_vertex_05002E60, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  4,  7,  6, 0x0),\n    gsSP2Triangles( 7,  8,  6, 0x0,  6,  9, 10, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0,  5,  6, 10, 0x0),\n    gsSP2Triangles(11,  5, 12, 0x0,  3,  5, 11, 0x0),\n    gsSP2Triangles( 5, 10, 12, 0x0,  7,  0,  8, 0x0),\n    gsSP2Triangles( 0,  2,  8, 0x0, 13, 14, 15, 0x0),\n    gsSP1Triangle( 1, 13,  2, 0x0),\n    gsSPVertex(capswitch_seg5_vertex_05002F60, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  4,  2,  6, 0x0),\n    gsSP2Triangles( 3,  5,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 1,  8,  2, 0x0,  1, 11,  8, 0x0),\n    gsSP1Triangle( 2,  8, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003120 - 0x05003180\nconst Gfx cap_switch_base_seg5_dl_05003120[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 2, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (4 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(capswitch_seg5_dl_05003020),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n//0x05003180\nstatic const Vtx capswitch_seg5_vertex_05003180[] = {\n    {{{  -118,    262,   -203}, 0, {     0,      0}, {0xd9, 0x37, 0x95, 0xff}}},\n    {{{   130,      0,   -224}, 0, {     0,      0}, {0x29, 0x0b, 0x89, 0xff}}},\n    {{{  -129,      0,   -224}, 0, {     0,      0}, {0xae, 0x0a, 0xa0, 0xff}}},\n    {{{   119,    262,   -203}, 0, {     0,      0}, {0x49, 0x2c, 0xa3, 0xff}}},\n    {{{   260,      0,      0}, 0, {     0,      0}, {0x7c, 0x0a, 0xe8, 0xff}}},\n    {{{  -238,    262,      0}, 0, {     0,      0}, {0x8e, 0x34, 0xf4, 0xff}}},\n    {{{  -108,    352,   -108}, 0, {     0,      0}, {0xdb, 0x75, 0xe0, 0xff}}},\n    {{{   109,    352,   -108}, 0, {     0,      0}, {0x25, 0x6d, 0xcd, 0xff}}},\n    {{{   239,    262,      0}, 0, {     0,      0}, {0x72, 0x34, 0x0c, 0xff}}},\n    {{{  -259,      0,      0}, 0, {     0,      0}, {0x84, 0x0a, 0x18, 0xff}}},\n    {{{  -118,    262,    204}, 0, {     0,      0}, {0xb7, 0x2c, 0x5d, 0xff}}},\n    {{{  -108,    352,    109}, 0, {     0,      0}, {0xdb, 0x6d, 0x33, 0xff}}},\n    {{{  -129,      0,    225}, 0, {     0,      0}, {0xd7, 0x0b, 0x77, 0xff}}},\n    {{{   119,    262,    204}, 0, {     0,      0}, {0x27, 0x37, 0x6b, 0xff}}},\n    {{{   109,    352,    109}, 0, {     0,      0}, {0x25, 0x75, 0x20, 0xff}}},\n    {{{   130,      0,    225}, 0, {     0,      0}, {0x52, 0x0a, 0x5f, 0xff}}},\n};\n\n// 0x05003280 - 0x05003350\nconst Gfx capswitch_seg5_dl_05003280[] = {\n    gsSPVertex(capswitch_seg5_vertex_05003180, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 1,  0,  3, 0x0,  2,  5,  0, 0x0),\n    gsSP2Triangles( 0,  5,  6, 0x0,  7,  3,  0, 0x0),\n    gsSP2Triangles( 6,  7,  0, 0x0,  8,  3,  7, 0x0),\n    gsSP2Triangles( 4,  3,  8, 0x0,  9, 10,  5, 0x0),\n    gsSP2Triangles(11,  6,  5, 0x0,  5, 10, 11, 0x0),\n    gsSP2Triangles( 5,  2,  9, 0x0, 10,  9, 12, 0x0),\n    gsSP2Triangles(12, 13, 10, 0x0, 10, 13, 11, 0x0),\n    gsSP2Triangles( 6, 11, 14, 0x0, 14, 11, 13, 0x0),\n    gsSP2Triangles( 6, 14,  7, 0x0, 15,  8, 13, 0x0),\n    gsSP2Triangles(13,  8, 14, 0x0, 13, 12, 15, 0x0),\n    gsSP2Triangles( 8, 15,  4, 0x0,  7, 14,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003350 - 0x05003370\nconst Gfx capswitch_seg5_dl_05003350[] = {\n    gsSPLight(&capswitch_seg5_lights_05001BE8.l, 1),\n    gsSPLight(&capswitch_seg5_lights_05001BE8.a, 2),\n    gsSPDisplayList(capswitch_seg5_dl_05003280),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003370 - 0x05003390\nconst Gfx capswitch_seg5_dl_05003370[] = {\n    gsSPLight(&capswitch_seg5_lights_05001C00.l, 1),\n    gsSPLight(&capswitch_seg5_lights_05001C00.a, 2),\n    gsSPDisplayList(capswitch_seg5_dl_05003280),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003390 - 0x050033B0\nconst Gfx capswitch_seg5_dl_05003390[] = {\n    gsSPLight(&capswitch_seg5_lights_05001C18.l, 1),\n    gsSPLight(&capswitch_seg5_lights_05001C18.a, 2),\n    gsSPDisplayList(capswitch_seg5_dl_05003280),\n    gsSPEndDisplayList(),\n};\n\n// 0x050033B0 - 0x050033D0\nconst Gfx capswitch_seg5_dl_050033B0[] = {\n    gsSPLight(&capswitch_seg5_lights_05001C30.l, 1),\n    gsSPLight(&capswitch_seg5_lights_05001C30.a, 2),\n    gsSPDisplayList(capswitch_seg5_dl_05003280),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/chain_ball/geo.inc.c",
    "content": "// 0x0D0005D0\nconst GeoLayout metallic_ball_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 60),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, chain_ball_seg6_dl_060212E8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/chain_ball/model.inc.c",
    "content": "// Chain Ball\n\n\n// 0x06020AA0\nstatic const Vtx chain_ball_seg6_vertex_06020AA0[] = {\n    {{{   -26,    -26,      0}, 0, {     0,    992}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    26,    -26,      0}, 0, {   992,    992}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    26,     26,      0}, 0, {   992,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -26,     26,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// align? binid?\nUNUSED static const u64 chain_ball_unused_1 = 0;\n\n// 0x06020AE8\nALIGNED8 static const Texture chain_ball_seg6_texture_06020AE8[] = {\n#include \"actors/chain_ball/chain_ball.rgba16.inc.c\"\n};\n\n// 0x060212E8 - 0x06021380\nconst Gfx chain_ball_seg6_dl_060212E8[] = {\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsDPLoadTextureBlock(chain_ball_seg6_texture_06020AE8, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 5, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsSPVertex(chain_ball_seg6_vertex_06020AA0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/chain_chomp/anims/anim_06025160.inc.c",
    "content": "// 0x06025030\nstatic const s16 chain_chomp_seg6_animvalue_06025030[] = {\n    0x0000, 0x3FFF, 0x9602, 0x9483, 0x90D2, 0x8C1B, 0x878E, 0x845A,\n    0x83AC, 0x88AE, 0x9264, 0x9BC5, 0x9FC9, 0x9C7C, 0x950F, 0x8C27,\n    0x846D, 0x808A, 0x8348, 0x8ABB, 0x9273, 0x9602, 0x6FB2, 0x70C6,\n    0x7369, 0x76BA, 0x79D6, 0x7BDD, 0x7BEB, 0x7752, 0x6ED7, 0x66CA,\n    0x6379, 0x6692, 0x6D54, 0x756C, 0x7C87, 0x8054, 0x7E7C, 0x78B0,\n    0x728D, 0x6FB2, 0x9602, 0x9483, 0x90D2, 0x8C1B, 0x878E, 0x845A,\n    0x83AC, 0x88AE, 0x9264, 0x9BC5, 0x9FC9, 0x9C7C, 0x950F, 0x8C27,\n    0x846D, 0x808A, 0x8348, 0x8ABB, 0x9273, 0x9602, 0x6FB2, 0x70C6,\n    0x7369, 0x76BA, 0x79D6, 0x7BDD, 0x7BEB, 0x7752, 0x6ED7, 0x66CA,\n    0x6379, 0x6692, 0x6D54, 0x756C, 0x7C87, 0x8054, 0x7E7C, 0x78B0,\n    0x728D, 0x6FB2, 0x6FB2, 0x70C6, 0x7369, 0x76BA, 0x79D6, 0x7BDD,\n    0x7BEB, 0x7752, 0x6ED7, 0x66CA, 0x6379, 0x6692, 0x6D54, 0x756C,\n    0x7C87, 0x8054, 0x7E7C, 0x78B0, 0x728D, 0x6FB2, 0x3FFF, 0x0000,\n};\n\n// 0x06025100\nstatic const u16 chain_chomp_seg6_animindex_06025100[] = {\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x002A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x0002,\n    0x0001, 0x0000, 0x0001, 0x0066, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x0052,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x003E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x0016,\n};\n\n// 0x06025160\nstatic const struct Animation chain_chomp_seg6_anim_06025160 = {\n    0,\n    0,\n    0,\n    0,\n    0x14,\n    ANIMINDEX_NUMPARTS(chain_chomp_seg6_animindex_06025100),\n    chain_chomp_seg6_animvalue_06025030,\n    chain_chomp_seg6_animindex_06025100,\n    0,\n};\n"
  },
  {
    "path": "actors/chain_chomp/anims/data.inc.c",
    "content": "#include \"anim_06025160.inc.c\"\n"
  },
  {
    "path": "actors/chain_chomp/anims/table.inc.c",
    "content": "// 0x06025178\nconst struct Animation *const chain_chomp_seg6_anims_06025178[] = {\n    &chain_chomp_seg6_anim_06025160,\n    NULL,\n};\n"
  },
  {
    "path": "actors/chain_chomp/geo.inc.c",
    "content": "// 0x0D0005EC\nconst GeoLayout chain_chomp_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 200),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, chain_chomp_seg6_dl_06024940),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, chain_chomp_seg6_dl_06024FC0),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, chain_chomp_seg6_dl_06024240),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, chain_chomp_seg6_dl_06024D60),\n                GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, chain_chomp_seg6_dl_06024B00),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(), //! more close than open nodes\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/chain_chomp/model.inc.c",
    "content": "// Chain Chomp\n\n// 0x06021388\nUNUSED static const Lights1 chain_chomp_lights_unused1 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x060213A0\nUNUSED static const Lights1 chain_chomp_lights_unused2 = gdSPDefLights1(\n    0x03, 0x03, 0x05,\n    0x0d, 0x0f, 0x16, 0x28, 0x28, 0x28\n);\n\n// 0x060213B8\nUNUSED static const Lights1 chain_chomp_lights_unused3 = gdSPDefLights1(\n    0x25, 0x00, 0x00,\n    0x96, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x060213D0\nALIGNED8 static const Texture chain_chomp_seg6_texture_060213D0[] = {\n#include \"actors/chain_chomp/chain_chomp_bright_shine.rgba16.inc.c\"\n};\n\n// 0x06021BD0\nALIGNED8 static const Texture chain_chomp_seg6_texture_06021BD0[] = {\n#include \"actors/chain_chomp/chain_chomp_dull_shine.rgba16.inc.c\"\n};\n\n// 0x060223D0\nALIGNED8 static const Texture chain_chomp_seg6_texture_060223D0[] = {\n#include \"actors/chain_chomp/chain_chomp_tongue.rgba16.inc.c\"\n};\n\n// 0x06022BD0\nALIGNED8 static const Texture chain_chomp_seg6_texture_06022BD0[] = {\n#include \"actors/chain_chomp/chain_chomp_tooth.rgba16.inc.c\"\n};\n\n// 0x060233D0\nALIGNED8 static const Texture chain_chomp_seg6_texture_060233D0[] = {\n#include \"actors/chain_chomp/chain_chomp_eye.rgba16.inc.c\"\n};\n\n// 0x06023BD0\nstatic const Vtx chain_chomp_seg6_vertex_06023BD0[] = {\n    {{{     0,      0,    582}, 0, {   990,    380}, {0xb2, 0xb2, 0xb2, 0xff}}},\n    {{{   411,      0,   -410}, 0, {   118,    880}, {0xb2, 0xb2, 0xb2, 0xff}}},\n    {{{     0,      0,   -581}, 0, {   -52,    472}, {0xb2, 0xb2, 0xb2, 0xff}}},\n    {{{   582,      0,      0}, 0, {   496,   1020}, {0xb2, 0xb2, 0xb2, 0xff}}},\n    {{{   411,      0,    411}, 0, {   856,    816}, {0xb2, 0xb2, 0xb2, 0xff}}},\n};\n\n// 0x06023C20\nstatic const Vtx chain_chomp_seg6_vertex_06023C20[] = {\n    {{{     0,   -581,      0}, 0, {   448,   -130}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -156,   -536,   -156}, 0, {   334,   -408}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -536,   -222}, 0, {    58,   -276}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -536,    223}, 0, {   818,    106}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -156,   -536,    157}, 0, {   870,   -138}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -222,   -536,      0}, 0, {   670,   -350}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   223,   -536,      0}, 0, {   204,    180}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   157,   -536,    157}, 0, {   542,    238}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   157,   -536,   -156}, 0, {     4,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   291,   -410,   -290}, 0, {  -390,    142}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   411,   -410,      0}, 0, {   -22,    534}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   291,   -410,    291}, 0, {   600,    640}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   370,   -216,   -369}, 0, {  -652,    368}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   537,   -222,      0}, 0, {  -196,    880}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -222,   -536}, 0, {  -548,   -222}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   370,   -216,    370}, 0, {   608,   1002}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x06023D20\nstatic const Vtx chain_chomp_seg6_vertex_06023D20[] = {\n    {{{   291,   -410,    291}, 0, {   600,    640}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -410,    411}, 0, {  1110,    398}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -536,    223}, 0, {   818,    106}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   370,   -216,    370}, 0, {   608,   1002}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   411,      0,   -410}, 0, {  -814,    606}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   537,   -222,      0}, 0, {  -196,    880}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   370,   -216,   -369}, 0, {  -652,    368}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   582,      0,      0}, 0, {  -292,   1160}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   411,      0,    411}, 0, {   586,   1310}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -222,    537}, 0, {  1282,    700}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,    582}, 0, {  1306,    968}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,   -581}, 0, {  -674,    -30}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -222,   -536}, 0, {  -548,   -222}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -410,      0,    411}, 0, {  1446,    334}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -379,   -222,    380}, 0, {  1412,    114}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x06023E10\nstatic const Vtx chain_chomp_seg6_vertex_06023E10[] = {\n    {{{     0,   -410,   -410}, 0, {  -290,   -308}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   291,   -410,   -290}, 0, {  -390,    142}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   157,   -536,   -156}, 0, {     4,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -222,   -536}, 0, {  -548,   -222}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -536,   -222}, 0, {    58,   -276}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -410,    411}, 0, {  1110,    398}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -156,   -536,    157}, 0, {   870,   -138}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -536,    223}, 0, {   818,    106}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -290,   -410,    291}, 0, {  1210,    -52}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -222,    537}, 0, {  1282,    700}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,    582}, 0, {  1306,    968}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -379,   -222,    380}, 0, {  1412,    114}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -410,   -410,      0}, 0, {   840,   -444}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -156,   -536,   -156}, 0, {   334,   -408}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -222,   -536,      0}, 0, {   670,   -350}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x06023F00\nstatic const Vtx chain_chomp_seg6_vertex_06023F00[] = {\n    {{{  -410,      0,   -410}, 0, {    44,   -372}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,   -581}, 0, {  -674,    -30}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -222,   -536}, 0, {  -548,   -222}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -379,   -222,   -379}, 0, {   116,   -538}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -410,   -410}, 0, {  -290,   -308}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -290,   -410,   -290}, 0, {   218,   -550}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -536,   -222}, 0, {    58,   -276}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -156,   -536,   -156}, 0, {   334,   -408}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -290,   -410,    291}, 0, {  1210,    -52}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -222,   -536,      0}, 0, {   670,   -350}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -156,   -536,    157}, 0, {   870,   -138}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -410,   -410,      0}, 0, {   840,   -444}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -379,   -222,    380}, 0, {  1412,    114}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -536,   -222,      0}, 0, {   928,   -400}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -410,      0,    411}, 0, {  1446,    334}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -581,      0,      0}, 0, {   924,   -222}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x06024000 - 0x06024040\nconst Gfx chain_chomp_seg6_dl_06024000[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, chain_chomp_seg6_texture_060223D0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(chain_chomp_seg6_vertex_06023BD0, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP1Triangle( 0,  4,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06024040 - 0x06024240\nconst Gfx chain_chomp_seg6_dl_06024040[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, chain_chomp_seg6_texture_060213D0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(chain_chomp_seg6_vertex_06023C20, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  5,  1, 0x0,  0,  4,  5, 0x0),\n    gsSP2Triangles( 0,  6,  7, 0x0,  0,  8,  6, 0x0),\n    gsSP2Triangles( 0,  2,  8, 0x0,  0,  7,  3, 0x0),\n    gsSP2Triangles( 9,  6,  8, 0x0,  9, 10,  6, 0x0),\n    gsSP2Triangles(10,  7,  6, 0x0, 10, 11,  7, 0x0),\n    gsSP2Triangles(11,  3,  7, 0x0, 12, 10,  9, 0x0),\n    gsSP2Triangles(12, 13, 10, 0x0, 13, 11, 10, 0x0),\n    gsSP2Triangles(14, 12,  9, 0x0, 13, 15, 11, 0x0),\n    gsSPVertex(chain_chomp_seg6_vertex_06023D20, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 7,  3,  5, 0x0,  7,  8,  3, 0x0),\n    gsSP2Triangles( 3,  9,  1, 0x0,  8,  9,  3, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11,  4,  6, 0x0),\n    gsSP2Triangles(11,  6, 12, 0x0, 10, 13, 14, 0x0),\n    gsSPVertex(chain_chomp_seg6_vertex_06023E10, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  9,  8,  5, 0x0),\n    gsSP2Triangles(10, 11,  9, 0x0,  9, 11,  8, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(chain_chomp_seg6_vertex_06023F00, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 11,  8, 0x0, 11,  5,  7, 0x0),\n    gsSP2Triangles(13,  5, 11, 0x0, 12, 13, 11, 0x0),\n    gsSP2Triangles(14, 13, 12, 0x0, 14, 15, 13, 0x0),\n    gsSP2Triangles(15,  0,  3, 0x0, 13,  3,  5, 0x0),\n    gsSP1Triangle(15,  3, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06024240 - 0x060242D0\nconst Gfx chain_chomp_seg6_dl_06024240[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(chain_chomp_seg6_dl_06024000),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(chain_chomp_seg6_dl_06024040),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x060242D0\nstatic const Vtx chain_chomp_seg6_vertex_060242D0[] = {\n    {{{   157,    537,    157}, 0, { -1116,    776}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   223,    537,      0}, 0, {  -898,    552}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    582,      0}, 0, { -1454,    552}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   291,    411,    291}, 0, {  -832,    966}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    411,    411}, 0, { -1600,   1136}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    537,    223}, 0, { -1532,    870}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   157,    537,   -156}, 0, { -1004,    328}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   411,    411,      0}, 0, {  -428,    552}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    537,   -222}, 0, { -1374,    234}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -156,    537,    157}, 0, { -1902,    776}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -156,    537,   -156}, 0, { -1790,    328}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -222,    537,      0}, 0, { -2008,    552}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   380,    223,    380}, 0, {  -640,   1092}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    223,    537}, 0, { -1646,   1316}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x060243B0\nstatic const Vtx chain_chomp_seg6_vertex_060243B0[] = {\n    {{{     0,    411,   -410}, 0, { -1306,    -34}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   291,    411,   -290}, 0, {  -624,    138}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   380,    223,   -379}, 0, {  -370,     10}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   411,    411,      0}, 0, {  -428,    552}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   537,    223,      0}, 0, {  -112,    552}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   380,    223,    380}, 0, {  -640,   1092}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   157,    537,   -156}, 0, { -1004,    328}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   411,      0,    411}, 0, {  -574,   1136}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,    582}, 0, { -1660,   1380}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    223,    537}, 0, { -1646,   1316}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   582,      0,      0}, 0, {    -4,    552}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   411,      0,   -410}, 0, {  -280,    -34}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    223,   -536}, 0, { -1262,   -214}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    411,    411}, 0, { -1600,   1136}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -290,    411,    291}, 0, { -2282,    966}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -379,    223,    380}, 0, { -2538,   1092}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x060244B0\nstatic const Vtx chain_chomp_seg6_vertex_060244B0[] = {\n    {{{     0,    223,   -536}, 0, { -1262,   -214}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   411,      0,   -410}, 0, {  -280,    -34}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,   -581}, 0, { -1246,   -278}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    537,   -222}, 0, { -1374,    234}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   157,    537,   -156}, 0, { -1004,    328}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   291,    411,   -290}, 0, {  -624,    138}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    411,   -410}, 0, { -1306,    -34}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    537,    223}, 0, { -1532,    870}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -290,    411,    291}, 0, { -2282,    966}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    411,    411}, 0, { -1600,   1136}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -156,    537,    157}, 0, { -1902,    776}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -379,    223,    380}, 0, { -2538,   1092}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    223,    537}, 0, { -1646,   1316}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -410,      0,    411}, 0, { -2626,   1136}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,    582}, 0, { -1660,   1380}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -379,    223,   -379}, 0, { -2266,     10}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x060245B0\nstatic const Vtx chain_chomp_seg6_vertex_060245B0[] = {\n    {{{  -290,    411,   -290}, 0, { -2076,    138}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    223,   -536}, 0, { -1262,   -214}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -379,    223,   -379}, 0, { -2266,     10}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    411,   -410}, 0, { -1306,    -34}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,   -581}, 0, { -1246,   -278}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -410,      0,   -410}, 0, { -2334,    -34}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -156,    537,   -156}, 0, { -1790,    328}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    537,   -222}, 0, { -1374,    234}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -156,    537,    157}, 0, { -1902,    776}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -410,    411,      0}, 0, { -2480,    552}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -290,    411,    291}, 0, { -2282,    966}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -536,    223,      0}, 0, { -2794,    552}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -379,    223,    380}, 0, { -2538,   1092}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -581,      0,      0}, 0, { -2904,    552}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -410,      0,    411}, 0, { -2626,   1136}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -222,    537,      0}, 0, { -2008,    552}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x060246B0\nstatic const Vtx chain_chomp_seg6_vertex_060246B0[] = {\n    {{{     0,      0,   -581}, 0, {  1154,    138}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   582,      0,      0}, 0, {   470,   1104}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   411,      0,    411}, 0, {   -12,    822}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,    582}, 0, {  -210,    138}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   411,      0,   -410}, 0, {   954,    822}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x06024700 - 0x06024900\nconst Gfx chain_chomp_seg6_dl_06024700[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, chain_chomp_seg6_texture_06021BD0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(chain_chomp_seg6_vertex_060242D0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  5,  0,  2, 0x0),\n    gsSP2Triangles( 0,  5,  4, 0x0,  6,  1,  7, 0x0),\n    gsSP2Triangles( 1,  3,  7, 0x0,  1,  6,  2, 0x0),\n    gsSP2Triangles( 6,  8,  2, 0x0,  9,  5,  2, 0x0),\n    gsSP2Triangles( 8, 10,  2, 0x0, 10, 11,  2, 0x0),\n    gsSP2Triangles(11,  9,  2, 0x0,  7,  3, 12, 0x0),\n    gsSP2Triangles( 3, 13, 12, 0x0,  3,  4, 13, 0x0),\n    gsSPVertex(chain_chomp_seg6_vertex_060243B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 3,  5,  4, 0x0,  6,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  7, 0x0,  5,  8,  7, 0x0),\n    gsSP2Triangles( 5,  9,  8, 0x0,  2,  4, 10, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  4,  7, 10, 0x0),\n    gsSP2Triangles( 2, 10, 11, 0x0, 12,  2, 11, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(chain_chomp_seg6_vertex_060244B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  9, 11, 12, 0x0),\n    gsSP2Triangles(12, 11, 13, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(15,  0,  2, 0x0),\n    gsSPVertex(chain_chomp_seg6_vertex_060245B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  6,  3,  0, 0x0),\n    gsSP2Triangles( 6,  7,  3, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 9,  0,  2, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(10,  9, 11, 0x0, 12, 13, 14, 0x0),\n    gsSP2Triangles(12, 11, 13, 0x0, 11,  2,  5, 0x0),\n    gsSP2Triangles( 9,  2, 11, 0x0, 11,  5, 13, 0x0),\n    gsSP2Triangles(15,  0,  9, 0x0, 15,  6,  0, 0x0),\n    gsSP1Triangle( 8, 15,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06024900 - 0x06024940\nconst Gfx chain_chomp_seg6_dl_06024900[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, chain_chomp_seg6_texture_060223D0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(chain_chomp_seg6_vertex_060246B0, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP1Triangle( 0,  4,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06024940 - 0x060249D0\nconst Gfx chain_chomp_seg6_dl_06024940[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(chain_chomp_seg6_dl_06024700),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(chain_chomp_seg6_dl_06024900),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x060249D0\nstatic const Lights1 chain_chomp_seg6_lights_060249D0 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x060249E8\nstatic const Vtx chain_chomp_seg6_vertex_060249E8[] = {\n    {{{   341,   -287,    410}, 0, {   990,      0}, {0x69, 0xe7, 0x41, 0xff}}},\n    {{{   505,    -32,    246}, 0, {     0,    990}, {0x69, 0xe7, 0x41, 0xff}}},\n    {{{   374,    -49,    450}, 0, {   990,    990}, {0x69, 0xe7, 0x41, 0xff}}},\n    {{{   341,   -287,    410}, 0, {   990,      0}, {0x69, 0xe7, 0x42, 0xff}}},\n    {{{   473,   -270,    206}, 0, {     0,      0}, {0x69, 0xe7, 0x42, 0xff}}},\n    {{{   505,    -32,    246}, 0, {     0,    990}, {0x69, 0xe7, 0x42, 0xff}}},\n    {{{   374,    -49,   -449}, 0, {   990,    990}, {0x69, 0xe7, 0xbf, 0xff}}},\n    {{{   505,    -32,   -245}, 0, {     0,    990}, {0x69, 0xe7, 0xbf, 0xff}}},\n    {{{   341,   -287,   -409}, 0, {   990,      0}, {0x69, 0xe7, 0xbf, 0xff}}},\n    {{{   505,    -32,   -245}, 0, {     0,    990}, {0x69, 0xe7, 0xbe, 0xff}}},\n    {{{   473,   -270,   -205}, 0, {     0,      0}, {0x69, 0xe7, 0xbe, 0xff}}},\n    {{{   341,   -287,   -409}, 0, {   990,      0}, {0x69, 0xe7, 0xbe, 0xff}}},\n};\n\n// 0x06024AA8 - 0x06024B00\nconst Gfx chain_chomp_seg6_dl_06024AA8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, chain_chomp_seg6_texture_060233D0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&chain_chomp_seg6_lights_060249D0.l, 1),\n    gsSPLight(&chain_chomp_seg6_lights_060249D0.a, 2),\n    gsSPVertex(chain_chomp_seg6_vertex_060249E8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06024B00 - 0x06024B70\nconst Gfx chain_chomp_seg6_dl_06024B00[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(chain_chomp_seg6_dl_06024AA8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x06024B70\nstatic const Vtx chain_chomp_seg6_vertex_06024B70[] = {\n    {{{   568,     -6,      1}, 0, {  -466,    -52}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   458,    227,    139}, 0, {   756,    806}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   462,     -6,    263}, 0, {   652,   -626}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   182,     -6,   -493}, 0, {   -90,    384}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   225,     72,   -473}, 0, {   664,    930}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   284,     -6,   -454}, 0, {   666,   -726}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   284,     -6,   -454}, 0, {  -306,    174}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   325,    107,   -419}, 0, {   680,   1044}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   403,     -6,   -403}, 0, {   772,   -792}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   403,     -6,   -403}, 0, {  -114,     10}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   379,    160,   -332}, 0, {   526,   1002}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   462,     -6,   -262}, 0, {   578,   -702}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   462,     -6,   -262}, 0, {  -172,     58}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   458,    227,   -138}, 0, {   838,    944}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   568,     -6,      1}, 0, {   916,   -848}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x06024C60\nstatic const Vtx chain_chomp_seg6_vertex_06024C60[] = {\n    {{{   284,     -6,    455}, 0, {  -250,    814}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   225,     72,    474}, 0, {   530,   1852}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   182,     -6,    494}, 0, {   764,    134}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   462,     -6,    263}, 0, {  -108,    910}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   379,    160,    333}, 0, {   930,   1682}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   403,     -6,    404}, 0, {   670,    278}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   403,     -6,    404}, 0, {  -412,    892}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   325,    107,    420}, 0, {   430,   1696}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   284,     -6,    455}, 0, {   482,    364}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x06024CF0 - 0x06024D60\nconst Gfx chain_chomp_seg6_dl_06024CF0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, chain_chomp_seg6_texture_06022BD0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(chain_chomp_seg6_vertex_06024B70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(chain_chomp_seg6_vertex_06024C60, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06024D60 - 0x06024DD0\nconst Gfx chain_chomp_seg6_dl_06024D60[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(chain_chomp_seg6_dl_06024CF0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x06024DD0\nstatic const Vtx chain_chomp_seg6_vertex_06024DD0[] = {\n    {{{   462,      7,    263}, 0, {  1768,   -234}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   455,   -211,    139}, 0, {   702,   -864}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   568,      7,      1}, 0, {   294,    704}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   284,      7,   -454}, 0, {  1636,   -244}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   225,    -71,   -473}, 0, {   768,   -746}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   182,      7,   -493}, 0, {   594,    640}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   403,      7,   -403}, 0, {  1486,   -364}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   325,   -105,   -418}, 0, {    94,   -766}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   284,      7,   -454}, 0, {   268,    516}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   462,      7,   -262}, 0, {  1448,   -274}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   403,   -156,   -332}, 0, {   112,   -638}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   403,      7,   -403}, 0, {   202,    610}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   568,      7,      1}, 0, {  1208,   -184}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   455,   -211,   -138}, 0, {   440,   -848}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   462,      7,   -262}, 0, {   446,    714}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x06024EC0\nstatic const Vtx chain_chomp_seg6_vertex_06024EC0[] = {\n    {{{   182,      7,    494}, 0, {   860,    726}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   225,    -71,    474}, 0, {   378,    266}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   284,      7,    455}, 0, {   288,   1474}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   403,      7,    404}, 0, {  1210,    638}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   403,   -156,    333}, 0, {   294,    170}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   462,      7,    263}, 0, {   160,   1602}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   284,      7,    455}, 0, {   830,    718}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   325,   -105,    419}, 0, {   360,    204}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   403,      7,    404}, 0, {   192,   1584}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x06024F50 - 0x06024FC0\nconst Gfx chain_chomp_seg6_dl_06024F50[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, chain_chomp_seg6_texture_06022BD0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(chain_chomp_seg6_vertex_06024DD0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(chain_chomp_seg6_vertex_06024EC0, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06024FC0 - 0x06025030\nconst Gfx chain_chomp_seg6_dl_06024FC0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(chain_chomp_seg6_dl_06024F50),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/chair/anims/anim_0500576C.inc.c",
    "content": "// 0x050056F0\nstatic const s16 chair_seg5_animvalue_050056F0[] = {\n    0x0000, 0x0099, 0xFFAA, 0xC001, 0xC001, 0xC001, 0x3FFF, 0x0000,\n};\n\n// 0x05005700\nstatic const u16 chair_seg5_animindex_05005700[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0000, 0x0001, 0x0003, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0004,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0005,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0006,\n};\n\n// 0x0500576C\nstatic const struct Animation chair_seg5_anim_0500576C = {\n    0,\n    0,\n    0,\n    0,\n    0x64,\n    ANIMINDEX_NUMPARTS(chair_seg5_animindex_05005700),\n    chair_seg5_animvalue_050056F0,\n    chair_seg5_animindex_05005700,\n    0,\n};\n"
  },
  {
    "path": "actors/chair/anims/data.inc.c",
    "content": "#include \"anim_0500576C.inc.c\"\n"
  },
  {
    "path": "actors/chair/anims/table.inc.c",
    "content": "// 0x05005784\nconst struct Animation *const chair_seg5_anims_05005784[] = {\n    &chair_seg5_anim_0500576C,\n};\n"
  },
  {
    "path": "actors/chair/geo.inc.c",
    "content": "// 0x0C0000D8\nconst GeoLayout haunted_chair_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 100),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, chair_seg5_dl_05005190),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -7, -9, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, chair_seg5_dl_05005680),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 156, -9, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, chair_seg5_dl_05005408),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -3, 17, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, chair_seg5_dl_05004EE8),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(), //! more close than open nodes\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/chair/model.inc.c",
    "content": "// Chair\n\n// Unreferenced light group\nUNUSED static const Lights1 chair_lights_unused = gdSPDefLights1(\n    0x19, 0x0d, 0x06,\n    0x64, 0x36, 0x1a, 0x28, 0x28, 0x28\n);\n\n// 0x05003060\nALIGNED8 static const Texture chair_seg5_texture_05003060[] = {\n#include \"actors/chair/chair_front.rgba16.inc.c\"\n};\n\n// 0x05003860\nALIGNED8 static const Texture chair_seg5_texture_05003860[] = {\n#include \"actors/chair/chair_leg.rgba16.inc.c\"\n};\n\n// 0x05004060\nALIGNED8 static const Texture chair_seg5_texture_05004060[] = {\n#include \"actors/chair/chair_bottom.rgba16.inc.c\"\n};\n\n// unreferenced\n// 0x05004460\nALIGNED8 static const Texture chair_seg5_texture_05004460[] = {\n#include \"actors/chair/chair_surface_unused.rgba16.inc.c\"\n};\n\n// 0x05004C60\nstatic const Lights1 chair_seg5_lights_05004C60 = gdSPDefLights1(\n    0x47, 0x47, 0x47,\n    0xb2, 0xb2, 0xb2, 0x28, 0x28, 0x28\n);\n\n// 0x05004C78\nstatic const Vtx chair_seg5_vertex_05004C78[] = {\n    {{{   334,    -20,      1}, 0, {   474,   -182}, {0x77, 0x00, 0xd6, 0xff}}},\n    {{{   287,    -20,   -132}, 0, {  1212,     58}, {0x77, 0x00, 0xd6, 0xff}}},\n    {{{   334,     25,      1}, 0, {   474,   -182}, {0x77, 0x00, 0xd6, 0xff}}},\n    {{{   334,     25,      1}, 0, {   474,   -182}, {0x77, 0x00, 0x2a, 0xff}}},\n    {{{   287,     25,    134}, 0, {  -262,     58}, {0x77, 0x00, 0x2a, 0xff}}},\n    {{{   334,    -20,      1}, 0, {   474,   -182}, {0x77, 0x00, 0x2a, 0xff}}},\n    {{{   287,    -20,    134}, 0, {  -262,     58}, {0x77, 0x00, 0x2a, 0xff}}},\n    {{{   287,    -20,   -132}, 0, {  1212,     58}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   334,    -20,      1}, 0, {   474,   -182}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   287,    -20,    134}, 0, {  -262,     58}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    -7,    -20,    -91}, 0, {   986,   1536}, {0xef, 0x00, 0x83, 0xff}}},\n    {{{    -7,     25,    -91}, 0, {   986,   1536}, {0xef, 0x00, 0x83, 0xff}}},\n    {{{   287,    -20,   -132}, 0, {  1212,     58}, {0xef, 0x00, 0x83, 0xff}}},\n    {{{   287,     25,   -132}, 0, {  1212,     58}, {0xef, 0x00, 0x83, 0xff}}},\n    {{{   287,     25,   -132}, 0, {  1212,     58}, {0x77, 0x00, 0xd6, 0xff}}},\n    {{{    -7,    -20,    -91}, 0, {   986,   1536}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x05004D78\nstatic const Vtx chair_seg5_vertex_05004D78[] = {\n    {{{   287,     25,    134}, 0, {  -262,     58}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   334,     25,      1}, 0, {   474,   -182}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   287,     25,   -132}, 0, {  1212,     58}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    -7,     25,    -91}, 0, {   986,   1536}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    -7,     25,     93}, 0, {   -34,   1536}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    -7,    -20,     93}, 0, {   -34,   1536}, {0xef, 0x00, 0x7d, 0xff}}},\n    {{{   287,    -20,    134}, 0, {  -262,     58}, {0xef, 0x00, 0x7d, 0xff}}},\n    {{{   287,     25,    134}, 0, {  -262,     58}, {0xef, 0x00, 0x7d, 0xff}}},\n    {{{    -7,     25,     93}, 0, {   -34,   1536}, {0xef, 0x00, 0x7d, 0xff}}},\n    {{{    -7,    -20,     93}, 0, {   -34,   1536}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    -7,    -20,    -91}, 0, {   986,   1536}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   287,    -20,    134}, 0, {  -262,     58}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x05004E38 - 0x05004EE8\nconst Gfx chair_seg5_dl_05004E38[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, chair_seg5_texture_05003060),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&chair_seg5_lights_05004C60.l, 1),\n    gsSPLight(&chair_seg5_lights_05004C60.a, 2),\n    gsSPVertex(chair_seg5_vertex_05004C78, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSP2Triangles( 1, 14,  2, 0x0, 15,  7,  9, 0x0),\n    gsSPVertex(chair_seg5_vertex_05004D78, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 4,  0,  2, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  5,  7, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004EE8 - 0x05004F58\nconst Gfx chair_seg5_dl_05004EE8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(chair_seg5_dl_05004E38),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004F58\nstatic const Lights1 chair_seg5_lights_05004F58 = gdSPDefLights1(\n    0x47, 0x47, 0x47,\n    0xb2, 0xb2, 0xb2, 0x28, 0x28, 0x28\n);\n\n// 0x05004F70\nstatic const Vtx chair_seg5_vertex_05004F70[] = {\n    {{{   208,    -20,   -125}, 0, {  1934,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -38,     24,   -125}, 0, {  1935,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   208,     24,   -125}, 0, {  1934,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   208,     24,   -125}, 0, {  1934,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -38,     24,    127}, 0, {   -20,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   208,     24,    127}, 0, {   -21,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -38,     24,   -125}, 0, {  1935,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   208,    -20,    127}, 0, {   -21,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   208,     24,   -125}, 0, {  1934,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   208,     24,    127}, 0, {   -21,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   208,    -20,   -125}, 0, {  1934,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -38,    -20,   -125}, 0, {  1935,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -38,     24,    127}, 0, {   -20,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -38,     24,   -125}, 0, {  1935,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -38,    -20,    127}, 0, {   -20,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -38,    -20,   -125}, 0, {  1935,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x05005070\nstatic const Vtx chair_seg5_vertex_05005070[] = {\n    {{{   208,    -20,    127}, 0, {   -21,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -38,    -20,   -125}, 0, {  1935,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   208,    -20,   -125}, 0, {  1934,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -38,    -20,    127}, 0, {   -20,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -38,    -20,    127}, 0, {   577,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   208,    -20,    127}, 0, {   511,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   208,     24,    127}, 0, {   511,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -38,     24,    127}, 0, {   577,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x050050F0 - 0x05005190\nconst Gfx chair_seg5_dl_050050F0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, chair_seg5_texture_05004060),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&chair_seg5_lights_05004F58.l, 1),\n    gsSPLight(&chair_seg5_lights_05004F58.a, 2),\n    gsSPVertex(chair_seg5_vertex_05004F70, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(chair_seg5_vertex_05005070, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005190 - 0x05005200\nconst Gfx chair_seg5_dl_05005190[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(chair_seg5_dl_050050F0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005200\nstatic const Lights1 chair_seg5_lights_05005200 = gdSPDefLights1(\n    0x47, 0x47, 0x47,\n    0xb2, 0xb2, 0xb2, 0x28, 0x28, 0x28\n);\n\n// 0x05005218\nstatic const Vtx chair_seg5_vertex_05005218[] = {\n    {{{   146,    -22,    104}, 0, {   998,    990}, {0xef, 0x00, 0x7d, 0xff}}},\n    {{{   146,     26,    104}, 0, {   998,    990}, {0xef, 0x00, 0x7d, 0xff}}},\n    {{{    -8,     26,     82}, 0, {   886,    -24}, {0xef, 0x00, 0x7d, 0xff}}},\n    {{{   146,     26,    104}, 0, {   998,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   146,    -22,   -102}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   146,     26,   -102}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   146,    -22,    104}, 0, {   998,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   146,     26,    104}, 0, {   998,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    -8,     26,    -79}, 0, {    78,    -24}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    -8,     26,     82}, 0, {   886,    -24}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   146,     26,   -102}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   146,    -22,   -102}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    -8,    -22,     82}, 0, {   886,    -24}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    -8,    -22,    -79}, 0, {    78,    -24}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   146,    -22,    104}, 0, {   998,    990}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x05005308\nstatic const Vtx chair_seg5_vertex_05005308[] = {\n    {{{   146,     26,   -102}, 0, {     0,    990}, {0xee, 0x00, 0x83, 0xff}}},\n    {{{   146,    -22,   -102}, 0, {     0,    990}, {0xee, 0x00, 0x83, 0xff}}},\n    {{{    -8,    -22,    -79}, 0, {    78,    -24}, {0xee, 0x00, 0x83, 0xff}}},\n    {{{    -8,     26,    -79}, 0, {    78,    -24}, {0xee, 0x00, 0x83, 0xff}}},\n    {{{   146,    -22,    104}, 0, {   998,    990}, {0xef, 0x00, 0x7d, 0xff}}},\n    {{{    -8,     26,     82}, 0, {   886,    -24}, {0xef, 0x00, 0x7d, 0xff}}},\n    {{{    -8,    -22,     82}, 0, {   886,    -24}, {0xef, 0x00, 0x7d, 0xff}}},\n};\n\n// 0x05005378 - 0x05005408\nconst Gfx chair_seg5_dl_05005378[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, chair_seg5_texture_05003860),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&chair_seg5_lights_05005200.l, 1),\n    gsSPLight(&chair_seg5_lights_05005200.a, 2),\n    gsSPVertex(chair_seg5_vertex_05005218, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(chair_seg5_vertex_05005308, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP1Triangle( 4,  5,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005408 - 0x05005478\nconst Gfx chair_seg5_dl_05005408[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(chair_seg5_dl_05005378),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005478\nstatic const Lights1 chair_seg5_lights_05005478 = gdSPDefLights1(\n    0x47, 0x47, 0x47,\n    0xb2, 0xb2, 0xb2, 0x28, 0x28, 0x28\n);\n\n// 0x05005490\nstatic const Vtx chair_seg5_vertex_05005490[] = {\n    {{{   146,    -19,    104}, 0, {   998,    990}, {0xef, 0x00, 0x7d, 0xff}}},\n    {{{   146,     29,    104}, 0, {   998,    990}, {0xef, 0x00, 0x7d, 0xff}}},\n    {{{    -8,     29,     82}, 0, {   886,    -40}, {0xef, 0x00, 0x7d, 0xff}}},\n    {{{   146,     29,    104}, 0, {   998,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   146,    -19,   -102}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   146,     29,   -102}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   146,    -19,    104}, 0, {   998,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   146,     29,    104}, 0, {   998,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    -8,     29,    -79}, 0, {    78,    -40}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    -8,     29,     82}, 0, {   886,    -40}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   146,     29,   -102}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   146,    -19,   -102}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    -8,    -19,     82}, 0, {   886,    -40}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    -8,    -19,    -79}, 0, {    78,    -40}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   146,    -19,    104}, 0, {   998,    990}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x05005580\nstatic const Vtx chair_seg5_vertex_05005580[] = {\n    {{{   146,     29,   -102}, 0, {     0,    990}, {0xee, 0x00, 0x83, 0xff}}},\n    {{{   146,    -19,   -102}, 0, {     0,    990}, {0xee, 0x00, 0x83, 0xff}}},\n    {{{    -8,    -19,    -79}, 0, {    78,    -40}, {0xee, 0x00, 0x83, 0xff}}},\n    {{{    -8,     29,    -79}, 0, {    78,    -40}, {0xee, 0x00, 0x83, 0xff}}},\n    {{{   146,    -19,    104}, 0, {   998,    990}, {0xef, 0x00, 0x7d, 0xff}}},\n    {{{    -8,     29,     82}, 0, {   886,    -40}, {0xef, 0x00, 0x7d, 0xff}}},\n    {{{    -8,    -19,     82}, 0, {   886,    -40}, {0xef, 0x00, 0x7d, 0xff}}},\n};\n\n// 0x050055F0 - 0x05005680\nconst Gfx chair_seg5_dl_050055F0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, chair_seg5_texture_05003860),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&chair_seg5_lights_05005478.l, 1),\n    gsSPLight(&chair_seg5_lights_05005478.a, 2),\n    gsSPVertex(chair_seg5_vertex_05005490, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(chair_seg5_vertex_05005580, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP1Triangle( 4,  5,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005680 - 0x050056F0\nconst Gfx chair_seg5_dl_05005680[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(chair_seg5_dl_050055F0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/checkerboard_platform/collision.inc.c",
    "content": "// Checkerboard Platform\n\n// 0x0800D710 - 0x0800D794\nconst Collision checkerboard_platform_seg8_collision_0800D710[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(256, -25, -153),\n    COL_VERTEX(256, 26, -153),\n    COL_VERTEX(256, 26, 154),\n    COL_VERTEX(-255, 26, -153),\n    COL_VERTEX(-255, 26, 154),\n    COL_VERTEX(-255, -25, -153),\n    COL_VERTEX(-255, -25, 154),\n    COL_VERTEX(256, -25, 154),\n\n    COL_TRI_INIT(SURFACE_WALL_MISC, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(1, 3, 4),\n    COL_TRI(1, 4, 2),\n    COL_TRI(5, 3, 1),\n    COL_TRI(5, 1, 0),\n    COL_TRI(6, 4, 3),\n    COL_TRI(6, 3, 5),\n    COL_TRI(7, 4, 6),\n    COL_TRI(7, 2, 4),\n    COL_TRI(0, 2, 7),\n    COL_TRI(7, 6, 5),\n    COL_TRI(7, 5, 0),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "actors/checkerboard_platform/geo.inc.c",
    "content": "// 0x0F0004E4\nconst GeoLayout checkerboard_platform_geo[] = {\n    GEO_CULLING_RADIUS(400),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, checkerboard_platform_seg8_dl_0800D680),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/checkerboard_platform/model.inc.c",
    "content": "// Checkerboard Platform\n\n// 0x0800C828\nstatic const Lights1 checkerboard_platform_seg8_lights_0800C828 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0800C840\nALIGNED8 static const Texture checkerboard_platform_seg8_texture_0800C840[] = {\n#include \"actors/checkerboard_platform/checkerboard_platform_side.rgba16.inc.c\"\n};\n\n// 0x0800CC40\nALIGNED8 static const Texture checkerboard_platform_seg8_texture_0800CC40[] = {\n#include \"actors/checkerboard_platform/checkerboard_platform.rgba16.inc.c\"\n};\n\n// 0x0800D440\nstatic const Vtx checkerboard_platform_seg8_vertex_0800D440[] = {\n    {{{  -255,    -25,    154}, 0, {  1504,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,     26,    154}, 0, {  1504,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,     26,   -153}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,    -25,   -153}, 0, {     0,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   256,    -25,   -153}, 0, {  1504,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,     26,    154}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,    -25,    154}, 0, {     0,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,     26,   -153}, 0, {  1504,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0800D4C0\nstatic const Vtx checkerboard_platform_seg8_vertex_0800D4C0[] = {\n    {{{   256,    -25,    154}, 0, {  2528,    992}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -255,    -25,   -153}, 0, {     0,   -512}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   256,    -25,   -153}, 0, {  2528,   -512}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   256,     26,   -153}, 0, {  2528,   -512}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,     26,    154}, 0, {     0,    992}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,     26,    154}, 0, {  2528,    992}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,     26,   -153}, 0, {     0,   -512}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,    -25,   -153}, 0, {  2528,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -255,     26,   -153}, 0, {  2528,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,     26,   -153}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,    -25,   -153}, 0, {     0,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,    -25,    154}, 0, {  2528,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,     26,    154}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,    -25,    154}, 0, {     0,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,     26,    154}, 0, {  2528,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,    -25,    154}, 0, {     0,    992}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0800D5C0 - 0x0800D618\nconst Gfx checkerboard_platform_seg8_dl_0800D5C0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, checkerboard_platform_seg8_texture_0800C840),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&checkerboard_platform_seg8_lights_0800C828.l, 1),\n    gsSPLight(&checkerboard_platform_seg8_lights_0800C828.a, 2),\n    gsSPVertex(checkerboard_platform_seg8_vertex_0800D440, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0800D618 - 0x0800D680\nconst Gfx checkerboard_platform_seg8_dl_0800D618[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, checkerboard_platform_seg8_texture_0800CC40),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(checkerboard_platform_seg8_vertex_0800D4C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0800D680 - 0x0800D710\nconst Gfx checkerboard_platform_seg8_dl_0800D680[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (16 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(checkerboard_platform_seg8_dl_0800D5C0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(checkerboard_platform_seg8_dl_0800D618),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n"
  },
  {
    "path": "actors/chillychief/anims/anim_060032EC.inc.c",
    "content": "// 0x06003080\nstatic const s16 chilly_chief_seg6_animvalue_06003080[] = {\n    0x0000, 0x00AE, 0x00AE, 0x00AD, 0x00AB, 0x00A8, 0x00A4, 0x009F,\n    0x0098, 0x0090, 0x009D, 0x00A9, 0x00B1, 0x00B5, 0x00B3, 0x00B1,\n    0x00AE, 0x00AC, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AE, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xFFFF, 0xFFFF, 0x0000, 0x0003, 0x0009, 0x000E, 0x0010,\n    0x000E, 0x000A, 0x0005, 0x0001, 0x0000, 0x3FFF, 0x0000, 0x0000,\n    0x0001, 0x0002, 0x0003, 0x0004, 0x0004, 0x0004, 0x0005, 0x0005,\n    0x0005, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0005,\n    0x0003, 0x0002, 0x0000, 0x0000, 0x0000, 0xFCF9, 0xF61F, 0xEED0,\n    0xEA69, 0xE89E, 0xE6F0, 0xE564, 0xE403, 0xE2D5, 0xE1E2, 0xE131,\n    0xE0C9, 0xE0B4, 0xE0F8, 0xE19D, 0xE2AB, 0xE688, 0xEDE8, 0xF649,\n    0xFD28, 0x0000, 0xEAD4, 0xE2FE, 0xD170, 0xBF1D, 0xB4F7, 0xB26C,\n    0xB0DB, 0xB023, 0xB021, 0xB0B3, 0xB1B6, 0xB308, 0xB487, 0xB611,\n    0xB782, 0xB8B9, 0xB994, 0xBA9C, 0xBC2A, 0xBDCF, 0xBF1D, 0xBFA5,\n    0x8001, 0x8001, 0x7C2E, 0x739E, 0x6AA0, 0x6583, 0x63EA, 0x6295,\n    0x6186, 0x60BB, 0x6036, 0x5FF7, 0x5FFF, 0x604C, 0x60E1, 0x61BC,\n    0x62DF, 0x644A, 0x682B, 0x6F2A, 0x76FD, 0x7D5D, 0x8001, 0x6CDC,\n    0x64A9, 0x524D, 0x3F22, 0x3484, 0x31DA, 0x3036, 0x2F75, 0x2F71,\n    0x3008, 0x3116, 0x3276, 0x3406, 0x35A0, 0x3721, 0x3865, 0x3949,\n    0x3A5D, 0x3BFE, 0x3DB7, 0x3F14, 0x3FA3, 0xD282, 0xCC2F, 0xBE27,\n    0xAFD0, 0xA891, 0xA7DE, 0xA820, 0xA932, 0xAAEE, 0xAD2E, 0xAFCB,\n    0xB2A0, 0xB585, 0xB856, 0xBAEC, 0xBD21, 0xBECF, 0xBFC8, 0xC021,\n    0xC015, 0xBFE2, 0xBFC4, 0xD21A, 0xCBDD, 0xBE05, 0xAFE0, 0xA8BD,\n    0xA80F, 0xA855, 0xA969, 0xAB24, 0xAD61, 0xAFFB, 0xB2CB, 0xB5AC,\n    0xB877, 0xBB08, 0xBD39, 0xBEE4, 0xBFD9, 0xC02C, 0xC01B, 0xBFE4,\n    0xBFC4, 0xC04F, 0xC04F, 0x3CD6, 0x3C90, 0x3BD7, 0x3AD7, 0x39B8,\n    0x37F9, 0x35B2, 0x33F6, 0x33D8, 0x3557, 0x3792, 0x3A47, 0x3D38,\n    0x4025, 0x42CD, 0x44F1, 0x4651, 0x4636, 0x44A4, 0x4276, 0x4086,\n    0x3FB1, 0x0000,\n};\n\n// 0x06003244\nstatic const u16 chilly_chief_seg6_animindex_06003244[] = {\n    0x0001, 0x0000, 0x0016, 0x0001, 0x0016, 0x0017, 0x0001, 0x0000, 0x0001, 0x002D, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0016, 0x00CB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00CA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0016, 0x009D,\n    0x0016, 0x002E, 0x0016, 0x0044, 0x0016, 0x005A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00C9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0016, 0x00B3,\n    0x0001, 0x0070, 0x0016, 0x0071, 0x0016, 0x0087,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x060032EC\nstatic const struct Animation chilly_chief_seg6_anim_060032EC = {\n    0,\n    0,\n    0,\n    0,\n    0x16,\n    ANIMINDEX_NUMPARTS(chilly_chief_seg6_animindex_06003244),\n    chilly_chief_seg6_animvalue_06003080,\n    chilly_chief_seg6_animindex_06003244,\n    0,\n};\n"
  },
  {
    "path": "actors/chillychief/anims/anim_06003420.inc.c",
    "content": "// 0x06003304\nstatic const s16 chilly_chief_seg6_animvalue_06003304[] = {\n    0x0000, 0x00B4, 0x00B1, 0x00AE, 0x00B0, 0x00B2, 0x00B4, 0x00B1,\n    0x00AE, 0x00B0, 0x00B3, 0x3FFF, 0xB575, 0xB559, 0xB64C, 0xBB9D,\n    0xBCF3, 0xBE03, 0xC380, 0xBCE6, 0xB85B, 0xB5A2, 0x8001, 0x8001,\n    0x3FA3, 0x42BE, 0x3D15, 0x3757, 0x36AE, 0x3714, 0x3798, 0x3A46,\n    0x3D78, 0x3F80, 0xD89E, 0xD533, 0xCCDD, 0xC27D, 0xB8F4, 0xB323,\n    0xB7D6, 0xC220, 0xCDD6, 0xD7E2, 0xB38B, 0xB75B, 0xC073, 0xCB4E,\n    0xD466, 0xD836, 0xD32B, 0xC7BE, 0xBB82, 0xB407, 0xC04F, 0xC04F,\n    0x3FB1, 0x0000,\n};\n\n// 0x06003378\nstatic const u16 chilly_chief_seg6_animindex_06003378[] = {\n    0x0001, 0x0000, 0x000A, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x000B, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0038,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0037,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0022,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x000C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0036,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x002C,\n    0x0001, 0x0016, 0x0001, 0x0017, 0x000A, 0x0018,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x06003420\nstatic const struct Animation chilly_chief_seg6_anim_06003420 = {\n    0,\n    0,\n    0,\n    0,\n    0x0A,\n    ANIMINDEX_NUMPARTS(chilly_chief_seg6_animindex_06003378),\n    chilly_chief_seg6_animvalue_06003304,\n    chilly_chief_seg6_animindex_06003378,\n    0,\n};\n"
  },
  {
    "path": "actors/chillychief/anims/anim_060035E0.inc.c",
    "content": "// 0x06003438\nstatic const s16 chilly_chief_seg6_animvalue_06003438[] = {\n    0x0000, 0x00B4, 0x00B3, 0x00B2, 0x00B0, 0x00AF, 0x00AE, 0x00AF,\n    0x00AF, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B3, 0x00B2,\n    0x00B1, 0x00B0, 0x00AF, 0x00AE, 0x00AF, 0x00B0, 0x00B2, 0x00B3,\n    0x00B4, 0x3FFF, 0xB575, 0xB564, 0xB54B, 0xB54F, 0xB598, 0xB64C,\n    0xB8E5, 0xBB9D, 0xBC81, 0xBCEE, 0xBD28, 0xBD6E, 0xBE03, 0xBF5E,\n    0xC141, 0xC2E5, 0xC380, 0xC0B4, 0xBCE6, 0xBAB9, 0xB8B3, 0xB706,\n    0xB5E1, 0xB575, 0x8001, 0x8001, 0x3FA3, 0x4038, 0x4174, 0x428E,\n    0x42BE, 0x3D15, 0x398E, 0x3757, 0x36B5, 0x368F, 0x36B4, 0x36F1,\n    0x3714, 0x3708, 0x36F8, 0x3716, 0x3798, 0x3899, 0x39F7, 0x3B82,\n    0x3D08, 0x3E5A, 0x3F49, 0x3FA3, 0xD89E, 0xD7FB, 0xD632, 0xD37B,\n    0xD009, 0xCC12, 0xC7CB, 0xC369, 0xBF20, 0xBB26, 0xB7B0, 0xB4F2,\n    0xB323, 0xB2E5, 0xB466, 0xB729, 0xBAB2, 0xBE83, 0xC220, 0xC69B,\n    0xCC74, 0xD24F, 0xD6D1, 0xD89E, 0xB38B, 0xB444, 0xB642, 0xB946,\n    0xBD0D, 0xC156, 0xC5E1, 0xCA6B, 0xCEB4, 0xD27B, 0xD57F, 0xD77D,\n    0xD836, 0xD75B, 0xD504, 0xD184, 0xCD31, 0xC85F, 0xC362, 0xBE90,\n    0xBA3D, 0xB6BD, 0xB466, 0xB38B, 0xC04F, 0xC04F, 0x3FB1, 0x0000,\n};\n\n// 0x06003538\nstatic const u16 chilly_chief_seg6_animindex_06003538[] = {\n    0x0001, 0x0000, 0x0018, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0019, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x007E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x007D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x004C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x001A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x007C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x0064,\n    0x0001, 0x0032, 0x0001, 0x0033, 0x0018, 0x0034,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x060035E0\nstatic const struct Animation chilly_chief_seg6_anim_060035E0 = {\n    0,\n    0,\n    0,\n    0,\n    0x18,\n    ANIMINDEX_NUMPARTS(chilly_chief_seg6_animindex_06003538),\n    chilly_chief_seg6_animvalue_06003438,\n    chilly_chief_seg6_animindex_06003538,\n    0,\n};\n"
  },
  {
    "path": "actors/chillychief/anims/anim_0600373C.inc.c",
    "content": "// 0x060035F8\nstatic const s16 chilly_chief_seg6_animvalue_060035F8[] = {\n    0x0000, 0x00AE, 0x00AE, 0x00AE, 0x00C1, 0x00D0, 0x00D7, 0x00D3,\n    0x00CA, 0x00BD, 0x00AE, 0x00AE, 0x00AE, 0x3FFF, 0xC00D, 0xBF15,\n    0xC015, 0xCBDE, 0xC3D9, 0xB86A, 0xB1CA, 0xB254, 0xB5BF, 0xBA52,\n    0xBE55, 0xC00D, 0x8001, 0x8001, 0x3FA3, 0x3EF5, 0x4050, 0x4BDC,\n    0x43F9, 0x38BD, 0x3231, 0x329C, 0x35D3, 0x3A2B, 0x3DFE, 0x3FA3,\n    0xC9F4, 0xC6B4, 0xBF90, 0xB86B, 0xB52C, 0xBF4E, 0xC9F4, 0xC6FE,\n    0xBFFF, 0xBAE0, 0xBCAE, 0xBFC2, 0xC9F4, 0xC6B4, 0xBF90, 0xB86B,\n    0xB52C, 0xBF4E, 0xC9F4, 0xC6FE, 0xBFFF, 0xBAE0, 0xBCAE, 0xBFC2,\n    0xC04F, 0xC04F, 0x3581, 0x38C0, 0x3FE5, 0x4709, 0x4A48, 0x4027,\n    0x3581, 0x3877, 0x3F76, 0x4494, 0x42C7, 0x3FB2,\n};\n\n// 0x06003694\nstatic const u16 chilly_chief_seg6_animindex_06003694[] = {\n    0x0001, 0x0000, 0x000C, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x000D, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x0042,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0041,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x0028,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x000E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0040,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x0034,\n    0x0001, 0x001A, 0x0001, 0x001B, 0x000C, 0x001C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x0600373C\nstatic const struct Animation chilly_chief_seg6_anim_0600373C = {\n    0,\n    0,\n    0,\n    0,\n    0x0C,\n    ANIMINDEX_NUMPARTS(chilly_chief_seg6_animindex_06003694),\n    chilly_chief_seg6_animvalue_060035F8,\n    chilly_chief_seg6_animindex_06003694,\n    0,\n};\n"
  },
  {
    "path": "actors/chillychief/anims/data.inc.c",
    "content": "#include \"anim_060032EC.inc.c\"\n#include \"anim_06003420.inc.c\"\n#include \"anim_060035E0.inc.c\"\n#include \"anim_0600373C.inc.c\"\n"
  },
  {
    "path": "actors/chillychief/anims/table.inc.c",
    "content": "// 0x06003994\nconst struct Animation *const chilly_chief_seg6_anims_06003994[] = {\n    &chilly_chief_seg6_anim_060035E0,\n    &chilly_chief_seg6_anim_06003420,\n    &chilly_chief_seg6_anim_060032EC,\n    &chilly_chief_seg6_anim_0600373C,\n    NULL,\n};\n"
  },
  {
    "path": "actors/chillychief/geo.inc.c",
    "content": "// Why are these scripts compressed unlike the other ones?\n// 0x06003754\nconst GeoLayout chilly_chief_geo[] = {\n     GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xC8, 0x46),\n     GEO_OPEN_NODE(),\n          GEO_SCALE(0, 0x7333),\n          GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(1, 0, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                     GEO_ANIMATED_PART(1, 0, 0, 0, NULL),\n                     GEO_OPEN_NODE(),\n                          GEO_ANIMATED_PART(1, 0, 0, 75, NULL),\n                          GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(1, 0, 0, 0, NULL),\n                                GEO_OPEN_NODE(),\n                                     GEO_ANIMATED_PART(1, 146, 0, 0, NULL),\n                                     GEO_OPEN_NODE(),\n                                          GEO_ANIMATED_PART(1, 0, 0, 0, chilly_chief_seg6_dl_06002B30),\n                                     GEO_CLOSE_NODE(),\n                                GEO_CLOSE_NODE(),\n                          GEO_CLOSE_NODE(),\n                          GEO_ANIMATED_PART(1, 0, 0, -75, NULL),\n                          GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(1, 0, 0, 0, NULL),\n                                GEO_OPEN_NODE(),\n                                     GEO_ANIMATED_PART(1, 146, 0, 0, NULL),\n                                     GEO_OPEN_NODE(),\n                                          GEO_ANIMATED_PART(1, 0, 0, 0, chilly_chief_seg6_dl_06002BC8),\n                                     GEO_CLOSE_NODE(),\n                                GEO_CLOSE_NODE(),\n                          GEO_CLOSE_NODE(),\n                          GEO_ANIMATED_PART(1, 0, 0, 0, NULL),\n                          GEO_OPEN_NODE(),\n                                GEO_BILLBOARD(),\n                                GEO_OPEN_NODE(),\n                                     GEO_DISPLAY_LIST(LAYER_ALPHA, chilly_chief_seg6_dl_06002D88),\n                                GEO_CLOSE_NODE(),\n                          GEO_CLOSE_NODE(),\n                          GEO_ANIMATED_PART(1, 0, 0, 0, chilly_chief_seg6_dl_06002C60),\n                          GEO_ANIMATED_PART(4, 0, 0, 0, chilly_chief_seg6_dl_06003010),\n                     GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n          GEO_CLOSE_NODE(),\n     GEO_CLOSE_NODE(),\n     GEO_END(),\n};\n\n// 0x06003874\nconst GeoLayout chilly_chief_big_geo[] = {\n     GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xC8, 0xD2),\n     GEO_OPEN_NODE(),\n          GEO_SCALE(0, 0xE666),\n          GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(1, 0, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                     GEO_ANIMATED_PART(1, 0, 0, 0, NULL),\n                     GEO_OPEN_NODE(),\n                          GEO_ANIMATED_PART(1, 0, 0, 75, NULL),\n                          GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(1, 0, 0, 0, NULL),\n                                GEO_OPEN_NODE(),\n                                     GEO_ANIMATED_PART(1, 146, 0, 0, NULL),\n                                     GEO_OPEN_NODE(),\n                                          GEO_ANIMATED_PART(1, 0, 0, 0, chilly_chief_seg6_dl_06002B30),\n                                     GEO_CLOSE_NODE(),\n                                GEO_CLOSE_NODE(),\n                          GEO_CLOSE_NODE(),\n                          GEO_ANIMATED_PART(1, 0, 0, -75, NULL),\n                          GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(1, 0, 0, 0, NULL),\n                                GEO_OPEN_NODE(),\n                                     GEO_ANIMATED_PART(1, 146, 0, 0, NULL),\n                                     GEO_OPEN_NODE(),\n                                          GEO_ANIMATED_PART(1, 0, 0, 0, chilly_chief_seg6_dl_06002BC8),\n                                     GEO_CLOSE_NODE(),\n                                GEO_CLOSE_NODE(),\n                          GEO_CLOSE_NODE(),\n                          GEO_ANIMATED_PART(1, 0, 0, 0, NULL),\n                          GEO_OPEN_NODE(),\n                                GEO_BILLBOARD(),\n                                GEO_OPEN_NODE(),\n                                     GEO_DISPLAY_LIST(LAYER_ALPHA, chilly_chief_seg6_dl_06002EF0),\n                                GEO_CLOSE_NODE(),\n                          GEO_CLOSE_NODE(),\n                          GEO_ANIMATED_PART(1, 0, 0, 0, chilly_chief_seg6_dl_06002C60),\n                          GEO_ANIMATED_PART(4, 0, 0, 0, chilly_chief_seg6_dl_06003010),\n                     GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n          GEO_CLOSE_NODE(),\n     GEO_CLOSE_NODE(),\n     GEO_END(),\n};\n"
  },
  {
    "path": "actors/chillychief/model.inc.c",
    "content": "// Chilly Chief (Chill Bully)\n\n// 0x06000000\nstatic const Lights1 chilly_chief_seg6_lights_06000000 = gdSPDefLights1(\n    0x00, 0x38, 0x00,\n    0x00, 0xe3, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x06000018\nstatic const Lights1 chilly_chief_seg6_lights_06000018 = gdSPDefLights1(\n    0x00, 0x3f, 0x00,\n    0x00, 0xff, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x06000030\nstatic const Lights1 chilly_chief_seg6_lights_06000030 = gdSPDefLights1(\n    0x3f, 0x29, 0x00,\n    0xff, 0xa5, 0x00, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 chillychief_lights_unused = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x06000060\nALIGNED8 static const Texture chilly_chief_seg6_texture_06000060[] = {\n#include \"actors/chillychief/chill_bully_left_side.rgba16.inc.c\"\n};\n\n// 0x06001060\nALIGNED8 static const Texture chilly_chief_seg6_texture_06001060[] = {\n#include \"actors/chillychief/chill_bully_right_side.rgba16.inc.c\"\n};\n\n// 0x06002060\nALIGNED8 static const Texture chilly_chief_seg6_texture_06002060[] = {\n#include \"actors/chillychief/chill_bully_eye.rgba16.inc.c\"\n};\n\n// 0x06002860\nstatic const Vtx chilly_chief_seg6_vertex_06002860[] = {\n    {{{    27,    -35,      0}, 0, {     0,      0}, {0x0c, 0x82, 0x04, 0x00}}},\n    {{{    56,    -16,    -27}, 0, {     0,      0}, {0x16, 0xae, 0xa3, 0x00}}},\n    {{{    72,    -16,      0}, 0, {     0,      0}, {0x59, 0xa7, 0x04, 0x00}}},\n    {{{    56,     28,    -46}, 0, {     0,      0}, {0x65, 0xdf, 0xbd, 0xff}}},\n    {{{    90,     28,      0}, 0, {     0,      0}, {0x65, 0xdf, 0xbd, 0xff}}},\n    {{{   -17,    -17,      0}, 0, {     0,      0}, {0xd7, 0xc5, 0x98, 0xff}}},\n    {{{   -37,     27,      0}, 0, {     0,      0}, {0xd0, 0xde, 0x90, 0xff}}},\n    {{{    56,     28,    -46}, 0, {     0,      0}, {0xd0, 0xde, 0x90, 0xff}}},\n    {{{    56,    -16,     22}, 0, {     0,      0}, {0x16, 0xb4, 0x62, 0xff}}},\n    {{{    90,     28,      0}, 0, {     0,      0}, {0x5f, 0xde, 0x4b, 0xff}}},\n    {{{    55,     28,     41}, 0, {     0,      0}, {0x5f, 0xde, 0x4b, 0xff}}},\n    {{{   -17,    -17,      0}, 0, {     0,      0}, {0xdc, 0xcb, 0x6c, 0xff}}},\n    {{{    55,     28,     41}, 0, {     0,      0}, {0xd5, 0xdf, 0x72, 0xff}}},\n    {{{   -37,     27,      0}, 0, {     0,      0}, {0xd5, 0xdf, 0x72, 0xff}}},\n};\n\n// 0x06002940\nstatic const Vtx chilly_chief_seg6_vertex_06002940[] = {\n    {{{    90,     28,      0}, 0, {     0,      0}, {0xff, 0x7f, 0x00, 0xff}}},\n    {{{    56,     28,    -46}, 0, {     0,      0}, {0xff, 0x7f, 0x00, 0x00}}},\n    {{{   -37,     27,      0}, 0, {     0,      0}, {0xff, 0x7f, 0x00, 0x00}}},\n    {{{    55,     28,     41}, 0, {     0,      0}, {0xff, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x06002980\nstatic const Vtx chilly_chief_seg6_vertex_06002980[] = {\n    {{{    72,    -16,      0}, 0, {     0,      0}, {0x59, 0xa7, 0xfc, 0x00}}},\n    {{{    56,    -16,     27}, 0, {     0,      0}, {0x16, 0xae, 0x5d, 0x00}}},\n    {{{    27,    -35,      0}, 0, {     0,      0}, {0x0c, 0x82, 0xfc, 0x00}}},\n    {{{    90,     28,      0}, 0, {     0,      0}, {0x65, 0xdf, 0x43, 0xff}}},\n    {{{    56,     28,     46}, 0, {     0,      0}, {0x65, 0xdf, 0x43, 0xff}}},\n    {{{    56,     28,     46}, 0, {     0,      0}, {0xd0, 0xde, 0x70, 0xff}}},\n    {{{   -37,     27,      0}, 0, {     0,      0}, {0xd0, 0xde, 0x70, 0xff}}},\n    {{{   -17,    -17,      0}, 0, {     0,      0}, {0xd7, 0xc5, 0x68, 0xff}}},\n    {{{    56,    -16,    -22}, 0, {     0,      0}, {0x16, 0xb4, 0x9e, 0xff}}},\n    {{{    55,     28,    -41}, 0, {     0,      0}, {0x5f, 0xde, 0xb5, 0xff}}},\n    {{{    90,     28,      0}, 0, {     0,      0}, {0x5f, 0xde, 0xb5, 0xff}}},\n    {{{   -37,     27,      0}, 0, {     0,      0}, {0xd5, 0xdf, 0x8e, 0xff}}},\n    {{{    55,     28,    -41}, 0, {     0,      0}, {0xd5, 0xdf, 0x8e, 0xff}}},\n    {{{   -17,    -17,      0}, 0, {     0,      0}, {0xdc, 0xcb, 0x94, 0xff}}},\n};\n\n// 0x06002A60\nstatic const Vtx chilly_chief_seg6_vertex_06002A60[] = {\n    {{{    55,     28,    -41}, 0, {     0,      0}, {0xff, 0x7f, 0x00, 0xff}}},\n    {{{   -37,     27,      0}, 0, {     0,      0}, {0xff, 0x7f, 0x00, 0x00}}},\n    {{{    56,     28,     46}, 0, {     0,      0}, {0xff, 0x7f, 0x00, 0x00}}},\n    {{{    90,     28,      0}, 0, {     0,      0}, {0xff, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x06002AA0\nstatic const Vtx chilly_chief_seg6_vertex_06002AA0[] = {\n    {{{   132,    -29,      0}, 0, {     0,      0}, {0x10, 0xc2, 0x93, 0x00}}},\n    {{{   131,     31,    -35}, 0, {     0,      0}, {0x10, 0xc2, 0x93, 0x00}}},\n    {{{   250,      2,      0}, 0, {     0,      0}, {0x10, 0xc2, 0x93, 0x00}}},\n    {{{   131,     31,     35}, 0, {     0,      0}, {0x10, 0xc2, 0x6d, 0xff}}},\n    {{{   132,    -29,      0}, 0, {     0,      0}, {0x10, 0xc2, 0x6d, 0xff}}},\n    {{{   250,      2,      0}, 0, {     0,      0}, {0x10, 0xc2, 0x6d, 0xff}}},\n    {{{   131,     31,    -35}, 0, {     0,      0}, {0x1e, 0x7b, 0x00, 0xff}}},\n    {{{   131,     31,     35}, 0, {     0,      0}, {0x1e, 0x7b, 0x00, 0xff}}},\n    {{{   250,      2,      0}, 0, {     0,      0}, {0x1e, 0x7b, 0x00, 0xff}}},\n};\n\n// 0x06002B30 - 0x06002BC8\nconst Gfx chilly_chief_seg6_dl_06002B30[] = {\n    gsSPLight(&chilly_chief_seg6_lights_06000000.l, 1),\n    gsSPLight(&chilly_chief_seg6_lights_06000000.a, 2),\n    gsSPVertex(chilly_chief_seg6_vertex_06002860, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  1,  5,  6, 0x0),\n    gsSP2Triangles( 1,  6,  7, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 0,  2,  8, 0x0,  8,  2,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  8, 12, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0,  0,  8, 11, 0x0),\n    gsSPVertex(chilly_chief_seg6_vertex_06002940, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06002BC8 - 0x06002C60\nconst Gfx chilly_chief_seg6_dl_06002BC8[] = {\n    gsSPLight(&chilly_chief_seg6_lights_06000018.l, 1),\n    gsSPLight(&chilly_chief_seg6_lights_06000018.a, 2),\n    gsSPVertex(chilly_chief_seg6_vertex_06002980, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 3,  1,  0, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  1, 0x0,  1,  7,  2, 0x0),\n    gsSP2Triangles( 8,  0,  2, 0x0,  9, 10,  0, 0x0),\n    gsSP2Triangles( 9,  0,  8, 0x0, 11, 12,  8, 0x0),\n    gsSP2Triangles(11,  8, 13, 0x0, 13,  8,  2, 0x0),\n    gsSPVertex(chilly_chief_seg6_vertex_06002A60, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06002C60 - 0x06002C98\nconst Gfx chilly_chief_seg6_dl_06002C60[] = {\n    gsSPLight(&chilly_chief_seg6_lights_06000030.l, 1),\n    gsSPLight(&chilly_chief_seg6_lights_06000030.a, 2),\n    gsSPVertex(chilly_chief_seg6_vertex_06002AA0, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06002C98\nstatic const Vtx chilly_chief_seg6_vertex_06002C98[] = {\n    {{{     0,     68,      0}, 0, {   992,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -66,    -66,      0}, 0, {     0,   2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    -66,      0}, 0, {   992,   2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -66,     68,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x06002CD8\nstatic const Vtx chilly_chief_seg6_vertex_06002CD8[] = {\n    {{{    68,     68,      0}, 0, {   992,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    -66,      0}, 0, {     0,   2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    68,    -66,      0}, 0, {   992,   2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,     68,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x06002D18 - 0x06002D50\nconst Gfx chilly_chief_seg6_dl_06002D18[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, chilly_chief_seg6_texture_06000060),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(chilly_chief_seg6_vertex_06002C98, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06002D50 - 0x06002D88\nconst Gfx chilly_chief_seg6_dl_06002D50[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, chilly_chief_seg6_texture_06001060),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(chilly_chief_seg6_vertex_06002CD8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06002D88 - 0x06002E00\nconst Gfx chilly_chief_seg6_dl_06002D88[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(chilly_chief_seg6_dl_06002D18),\n    gsSPDisplayList(chilly_chief_seg6_dl_06002D50),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x06002E00\nstatic const Vtx chilly_chief_seg6_vertex_06002E00[] = {\n    {{{     0,    136,      0}, 0, {   992,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -133,   -133,      0}, 0, {     0,   2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -133,      0}, 0, {   992,   2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -133,    136,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x06002E40\nstatic const Vtx chilly_chief_seg6_vertex_06002E40[] = {\n    {{{   136,    136,      0}, 0, {   992,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -133,      0}, 0, {     0,   2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   136,   -133,      0}, 0, {   992,   2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    136,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x06002E80 - 0x06002EB8\nconst Gfx chilly_chief_seg6_dl_06002E80[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, chilly_chief_seg6_texture_06000060),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(chilly_chief_seg6_vertex_06002E00, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06002EB8 - 0x06002EF0\nconst Gfx chilly_chief_seg6_dl_06002EB8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, chilly_chief_seg6_texture_06001060),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(chilly_chief_seg6_vertex_06002E40, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06002EF0 - 0x06002F68\nconst Gfx chilly_chief_seg6_dl_06002EF0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(chilly_chief_seg6_dl_06002E80),\n    gsSPDisplayList(chilly_chief_seg6_dl_06002EB8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x06002F68\nstatic const Vtx chilly_chief_seg6_vertex_06002F68[] = {\n    {{{   -36,    152,      0}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -40,    136,     68}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    56,    124,     68}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    60,    140,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    56,    124,    -64}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -40,    136,    -64}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x06002FC8 - 0x06003010\nconst Gfx chilly_chief_seg6_dl_06002FC8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, chilly_chief_seg6_texture_06002060),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(chilly_chief_seg6_vertex_06002F68, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  3,  5,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06003010 - 0x06003080\nconst Gfx chilly_chief_seg6_dl_06003010[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(chilly_chief_seg6_dl_06002FC8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/chuckya/anims/anim_0800AF68.inc.c",
    "content": "// 0x0800AC18\nstatic const s16 chuckya_seg8_animvalue_0800AC18[] = {\n    0x0000, 0x0001, 0x3FFF, 0xF7A8, 0xF953, 0xFD9C, 0x036A, 0x09AA,\n    0x0F44, 0x1321, 0x142C, 0x0ACB, 0xF9F0, 0xF053, 0xF715, 0x0515,\n    0x0DA7, 0x0BC5, 0x0581, 0xFED6, 0xFBBB, 0x071C, 0xF225, 0x784B,\n    0xFD4B, 0xFD4E, 0xFD56, 0xFD61, 0xFD6D, 0xFD78, 0xFD80, 0xFD83,\n    0xFD83, 0xFD83, 0xFD83, 0xFD83, 0xFD83, 0xFD83, 0xFD83, 0xFD83,\n    0xFD83, 0xFD83, 0xFF52, 0xFFAF, 0x009C, 0x01E3, 0x0347, 0x048D,\n    0x057C, 0x05D9, 0x05D9, 0x05D9, 0x05D9, 0x05D9, 0x05D9, 0x05D9,\n    0x05D9, 0x05D9, 0x05D9, 0x05D9, 0x84C1, 0x832D, 0x7F17, 0x7986,\n    0x7375, 0x6DE4, 0x69D2, 0x683E, 0x683E, 0x683E, 0x683E, 0x683E,\n    0x683E, 0x683E, 0x683E, 0x683E, 0x683E, 0x683E, 0xFC87, 0xFDC1,\n    0x00EA, 0x0544, 0x0A0A, 0x0E7C, 0x11D6, 0x1357, 0x0F42, 0x069E,\n    0xFFCA, 0xFD29, 0xFC59, 0xFC87, 0xFDB6, 0xFFCA, 0x01C2, 0x02A3,\n    0xC001, 0x8001, 0xE35C, 0x3FFF, 0x8001, 0xE35C, 0x06BA, 0x0486,\n    0xFF22, 0xF85D, 0xEFBA, 0xE564, 0xDC23, 0xD6C1, 0xD4AB, 0xD35B,\n    0xD2B1, 0xD28A, 0xD2C5, 0xD341, 0xD3DC, 0xD474, 0xD4E8, 0xD516,\n    0x04DF, 0x00FB, 0xF8C0, 0xF156, 0xEBE4, 0xE6A7, 0xE262, 0xDFDD,\n    0xDEAE, 0xDDE0, 0xDD62, 0xDD27, 0xDD1F, 0xDD3A, 0xDD6A, 0xDD9F,\n    0xDDCA, 0xDDDC, 0xDF93, 0xDE2E, 0xDC38, 0xDD07, 0xE292, 0xEAA3,\n    0xF251, 0xF6B2, 0xF815, 0xF8D2, 0xF907, 0xF8D2, 0xF851, 0xF7A4,\n    0xF6E9, 0xF63D, 0xF5C0, 0xF58F, 0x7BF0, 0x7CCE, 0x7F22, 0x8287,\n    0x87BD, 0x8E50, 0x93F1, 0x9655, 0x9655, 0x9655, 0x9655, 0x9655,\n    0x9655, 0x9655, 0x9655, 0x9655, 0x9655, 0x9655, 0x87DA, 0x83BB,\n    0x7B04, 0x7339, 0x6D54, 0x6783, 0x6313, 0x614E, 0x614E, 0x614E,\n    0x614E, 0x614E, 0x614E, 0x614E, 0x614E, 0x614E, 0x614E, 0x614E,\n    0x6749, 0x6573, 0x6276, 0x6217, 0x6689, 0x6D78, 0x73D9, 0x76A6,\n    0x76A6, 0x76A6, 0x76A6, 0x76A6, 0x76A6, 0x76A6, 0x76A6, 0x76A6,\n    0x76A6, 0x76A6, 0x6078, 0x3FFF, 0xDF87, 0x9F88, 0xC001, 0xDF87,\n    0xBF0E, 0x5347, 0xC04A, 0x4A4E, 0x4983, 0x4775, 0x449C, 0x4173,\n    0x3E72, 0x3C14, 0x3AD2, 0x3B51, 0x3D51, 0x3FF7, 0x4268, 0x43C9,\n    0x430A, 0x40ED, 0x3F4E, 0x3F76, 0x3FFF, 0x0000,\n};\n\n// 0x0800ADF4\nstatic const u16 chuckya_seg8_animindex_0800ADF4[] = {\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x00DB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00DA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00D9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00D8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x004E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x0003,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x00D5, 0x0001, 0x00D6, 0x0001, 0x00D7,\n    0x0012, 0x0066, 0x0012, 0x0078, 0x0012, 0x008A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0060, 0x0001, 0x0061, 0x0001, 0x0062,\n    0x0001, 0x0015, 0x0001, 0x0016, 0x0001, 0x0017,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x00D2, 0x0001, 0x00D3, 0x0001, 0x00D4,\n    0x0012, 0x009C, 0x0012, 0x00AE, 0x0012, 0x00C0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0063, 0x0001, 0x0064, 0x0001, 0x0065,\n    0x0012, 0x0018, 0x0012, 0x002A, 0x0012, 0x003C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x0800AF68\nstatic const struct Animation chuckya_seg8_anim_0800AF68 = {\n    0,\n    0,\n    0,\n    0,\n    0x12,\n    ANIMINDEX_NUMPARTS(chuckya_seg8_animindex_0800ADF4),\n    chuckya_seg8_animvalue_0800AC18,\n    chuckya_seg8_animindex_0800ADF4,\n    0,\n};\n"
  },
  {
    "path": "actors/chuckya/anims/anim_0800B1A8.inc.c",
    "content": "// 0x0800AF80\nstatic const s16 chuckya_seg8_animvalue_0800AF80[] = {\n    0x0000, 0x0001, 0x3FFF, 0xFBBB, 0xFA1D, 0xF73F, 0xF620, 0xF81B,\n    0xFB8D, 0xFEEB, 0x00AA, 0xFFB2, 0xFD07, 0xFA55, 0xF944, 0xFAF2,\n    0xFE49, 0x019D, 0x0348, 0x0259, 0xFFE3, 0xFD3E, 0xFBC4, 0x071C,\n    0xF225, 0x784B, 0xFD83, 0x05D9, 0x683E, 0x02A3, 0x0334, 0x0466,\n    0x0579, 0x05AC, 0x04C3, 0x033C, 0x016D, 0xFFB0, 0xFE57, 0xFDBC,\n    0xFE43, 0xFFBA, 0x0196, 0x034F, 0x045B, 0x0469, 0x03D5, 0x0317,\n    0x02A6, 0xC001, 0x8001, 0xE35C, 0x3FFF, 0x8001, 0xE35C, 0xD516,\n    0xDDDC, 0xF58F, 0x9655, 0x614E, 0x76A6, 0x6078, 0x3FFF, 0xDF87,\n    0x9F88, 0xC001, 0xDF87, 0xBF0E, 0x5347, 0xC04A, 0x3FFF, 0x3FE4,\n    0x3FA6, 0x3F5E, 0x3F27, 0x3F1C, 0x3F3D, 0x3F77, 0x3FC0, 0x4011,\n    0x4061, 0x40A9, 0x40E0, 0x40FF, 0x40F8, 0x40CE, 0x4090, 0x404F,\n    0x401A, 0x4000,\n};\n\n// 0x0800B034\nstatic const u16 chuckya_seg8_animindex_0800B034[] = {\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x0046,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0045,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0044,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0043,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x001D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x0003,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0040, 0x0001, 0x0041, 0x0001, 0x0042,\n    0x0001, 0x0037, 0x0001, 0x0038, 0x0001, 0x0039,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0031, 0x0001, 0x0032, 0x0001, 0x0033,\n    0x0001, 0x0017, 0x0001, 0x0018, 0x0001, 0x0019,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x003D, 0x0001, 0x003E, 0x0001, 0x003F,\n    0x0001, 0x003A, 0x0001, 0x003B, 0x0001, 0x003C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0034, 0x0001, 0x0035, 0x0001, 0x0036,\n    0x0001, 0x001A, 0x0001, 0x001B, 0x0001, 0x001C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x0800B1A8\nstatic const struct Animation chuckya_seg8_anim_0800B1A8 = {\n    0,\n    0,\n    0,\n    0,\n    0x14,\n    ANIMINDEX_NUMPARTS(chuckya_seg8_animindex_0800B034),\n    chuckya_seg8_animvalue_0800AF80,\n    chuckya_seg8_animindex_0800B034,\n    0,\n};\n"
  },
  {
    "path": "actors/chuckya/anims/anim_0800B4A8.inc.c",
    "content": "// 0x0800B1C0\nstatic const s16 chuckya_seg8_animvalue_0800B1C0[] = {\n    0x0000, 0x000D, 0x000B, 0x0007, 0x0000, 0xFFFB, 0xFFF4, 0xFFF0,\n    0xFFEE, 0xFFF0, 0xFFF4, 0xFFFB, 0x0000, 0x0007, 0x000B, 0x000D,\n    0x00A9, 0x3FFF, 0xF7A8, 0xF1E5, 0xE7CA, 0xE41A, 0xEBF9, 0xF96D,\n    0x068C, 0x0D6B, 0x0D85, 0x0AEB, 0x0698, 0x0187, 0xFCB2, 0xF914,\n    0xF7A8, 0x03AA, 0x805D, 0x805D, 0xFC87, 0x00E5, 0x0A98, 0x147C,\n    0x1974, 0x1828, 0x13BD, 0x0DCA, 0x07E6, 0x03A8, 0x0110, 0xFF11,\n    0xFDA6, 0xFCCF, 0xFC87, 0xC001, 0x8001, 0xE35C, 0x3FFF, 0x8001,\n    0xE35C, 0x0000, 0x0010, 0x0039, 0x0072, 0x00B1, 0x00EA, 0x0113,\n    0x0124, 0x0113, 0x00EA, 0x00B1, 0x0072, 0x0039, 0x0010, 0x0000,\n    0xF1BE, 0xF302, 0xF646, 0xFABD, 0xFF9A, 0x0410, 0x0754, 0x0898,\n    0x0754, 0x0410, 0xFF9A, 0xFABD, 0xF646, 0xF302, 0xF1BE, 0x0429,\n    0x0401, 0x039A, 0x030D, 0x0273, 0x01E6, 0x017F, 0x0156, 0x017F,\n    0x01E6, 0x0273, 0x030D, 0x039A, 0x0401, 0x0429, 0x8005, 0x800C,\n    0x801E, 0x8036, 0x8051, 0x8069, 0x807B, 0x8082, 0x807B, 0x8069,\n    0x8051, 0x8036, 0x801E, 0x800C, 0x8005, 0x86EF, 0x8635, 0x8458,\n    0x81CB, 0x7F01, 0x7C74, 0x7A97, 0x79DE, 0x7A97, 0x7C74, 0x7F01,\n    0x81CB, 0x8458, 0x8635, 0x86EF, 0x82F4, 0x82CD, 0x8269, 0x81E0,\n    0x814B, 0x80C2, 0x805E, 0x8037, 0x805E, 0x80C2, 0x814B, 0x81E0,\n    0x8269, 0x82CD, 0x82F4, 0x6078, 0x3FFF, 0xDF87, 0x9F88, 0xC001,\n    0xDF87, 0xBF0E, 0x5347, 0x54E2, 0x584D, 0x5B74, 0x5C3E, 0x59BD,\n    0x554B, 0x5038, 0x4BD9, 0x4980, 0x49F1, 0x4C4C, 0x4F68, 0x521E,\n    0x5347, 0xC04A, 0x0342, 0x02EB, 0x020C, 0x00DA, 0xFF8E, 0xFE5D,\n    0xFD7D, 0xFD26, 0xFD7D, 0xFE5D, 0xFF8E, 0x00DA, 0x020C, 0x02EB,\n    0x0342, 0x3587,\n};\n\n// 0x0800B334\nstatic const u16 chuckya_seg8_animindex_0800B334[] = {\n    0x000F, 0x0001, 0x0001, 0x0000, 0x0001, 0x0010, 0x0001, 0x0000, 0x0001, 0x0011, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x000F, 0x00AA, 0x0001, 0x00B9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00A9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000F, 0x009A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0099,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000F, 0x0024,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000F, 0x0012,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0096, 0x0001, 0x0097, 0x0001, 0x0098,\n    0x000F, 0x0039, 0x000F, 0x0048, 0x000F, 0x0057,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0033, 0x0001, 0x0034, 0x0001, 0x0035,\n    0x0001, 0x0000, 0x0001, 0x0021, 0x0001, 0x0022,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0093, 0x0001, 0x0094, 0x0001, 0x0095,\n    0x000F, 0x0066, 0x000F, 0x0075, 0x000F, 0x0084,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0036, 0x0001, 0x0037, 0x0001, 0x0038,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0023,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x0800B4A8\nstatic const struct Animation chuckya_seg8_anim_0800B4A8 = {\n    0,\n    0,\n    0,\n    0,\n    0x0F,\n    ANIMINDEX_NUMPARTS(chuckya_seg8_animindex_0800B334),\n    chuckya_seg8_animvalue_0800B1C0,\n    chuckya_seg8_animindex_0800B334,\n    0,\n};\n"
  },
  {
    "path": "actors/chuckya/anims/anim_0800B9F8.inc.c",
    "content": "// 0x0800B4C0\nstatic const s16 chuckya_seg8_animvalue_0800B4C0[] = {\n    0x0000, 0x0001, 0x3FFF, 0xFBBB, 0xFD6C, 0x01C5, 0x07B7, 0x0E2E,\n    0x1416, 0x185D, 0x19F0, 0x16FE, 0x0FFC, 0x0745, 0xFF34, 0xFA20,\n    0xF767, 0xF4EF, 0xF2E7, 0xF17D, 0xF0DF, 0xF13C, 0xF2C3, 0xF5A0,\n    0x0296, 0x16F1, 0x21AE, 0x1D78, 0x1311, 0x0691, 0xFC11, 0xF7A8,\n    0x071C, 0x0716, 0x0702, 0x06E2, 0x06B7, 0x0683, 0x0645, 0x0600,\n    0x05B3, 0x0561, 0x0509, 0x04AE, 0x0450, 0x03EF, 0x038E, 0x032D,\n    0x02CC, 0x026E, 0x0212, 0x01BB, 0x0168, 0x011C, 0x00D6, 0x0099,\n    0x0064, 0x003A, 0x001A, 0x0006, 0x0000, 0xF225, 0xF236, 0xF266,\n    0xF2B4, 0xF31D, 0xF39F, 0xF437, 0xF4E2, 0xF59E, 0xF66A, 0xF741,\n    0xF822, 0xF90B, 0xF9F8, 0xFAE8, 0xFBD8, 0xFCC5, 0xFDAE, 0xFE8F,\n    0xFF67, 0x0031, 0x00ED, 0x0198, 0x0230, 0x02B2, 0x031B, 0x0369,\n    0x0399, 0x03AA, 0x784B, 0x7853, 0x7869, 0x788D, 0x78BD, 0x78F9,\n    0x793F, 0x798D, 0x79E4, 0x7A41, 0x7AA4, 0x7B0C, 0x7B77, 0x7BE4,\n    0x7C53, 0x7CC1, 0x7D2E, 0x7D99, 0x7E01, 0x7E64, 0x7EC1, 0x7F18,\n    0x7F67, 0x7FAC, 0x7FE8, 0x801B, 0x803F, 0x8056, 0x805D, 0xFD83,\n    0xFD85, 0xFD8C, 0xFD97, 0xFDA6, 0xFDB9, 0xFDCE, 0xFDE7, 0xFE01,\n    0xFE1E, 0xFE3D, 0xFE5D, 0xFE7E, 0xFEA0, 0xFEC2, 0xFEE4, 0xFF06,\n    0xFF27, 0xFF47, 0xFF65, 0xFF82, 0xFF9D, 0xFFB5, 0xFFCB, 0xFFDD,\n    0xFFEC, 0xFFF7, 0xFFFE, 0x0000, 0x05D9, 0x05D3, 0x05C3, 0x05A9,\n    0x0586, 0x055A, 0x0528, 0x04EF, 0x04B0, 0x046C, 0x0424, 0x03D9,\n    0x038B, 0x033C, 0x02EC, 0x029C, 0x024D, 0x01FF, 0x01B4, 0x016C,\n    0x0128, 0x00E9, 0x00B0, 0x007E, 0x0052, 0x002F, 0x0015, 0x0005,\n    0x0000, 0x683E, 0x6855, 0x6898, 0x6903, 0x6993, 0x6A46, 0x6B16,\n    0x6C02, 0x6D05, 0x6E1D, 0x6F45, 0x707B, 0x71BB, 0x7302, 0x744C,\n    0x7596, 0x76DD, 0x781D, 0x7953, 0x7A7B, 0x7B92, 0x7C96, 0x7D81,\n    0x7E52, 0x7F04, 0x7F95, 0x8003, 0x8046, 0x805D, 0x02A3, 0x04F2,\n    0x0AE5, 0x1304, 0x1BD8, 0x23E8, 0x29BE, 0x2BE1, 0x27D4, 0x1E37,\n    0x1245, 0x0733, 0x003B, 0xFC9F, 0xF98E, 0xF72B, 0xF596, 0xF4F0,\n    0xF559, 0xF6F4, 0xF9DF, 0x0762, 0x1CBF, 0x2811, 0x23C1, 0x18FB,\n    0x0C03, 0x011B, 0xFC87, 0xC001, 0x8001, 0xE35C, 0x3FFF, 0x8001,\n    0xE35C, 0xD516, 0xD516, 0xD516, 0xD516, 0xD516, 0xD516, 0xD516,\n    0xD516, 0xD516, 0xD516, 0xD516, 0xD516, 0xD516, 0xD516, 0xD516,\n    0xD8FD, 0xE27B, 0xEE3F, 0xF8F8, 0xFF52, 0x01C3, 0x031D, 0x0395,\n    0x0363, 0x02BE, 0x01DE, 0x00F9, 0x0047, 0x0000, 0xDDDC, 0xDDDC,\n    0xDDDC, 0xDDDC, 0xDDDC, 0xDDDC, 0xDDDC, 0xDDDC, 0xDDDC, 0xDDDC,\n    0xDDDC, 0xDDDC, 0xDDDC, 0xDDDC, 0xDDDC, 0xE011, 0xE57C, 0xEC4C,\n    0xF2B0, 0xF6D9, 0xF917, 0xFAF4, 0xFC79, 0xFDAD, 0xFE98, 0xFF41,\n    0xFFB1, 0xFFEE, 0x0000, 0xF58F, 0xF58F, 0xF58F, 0xF58F, 0xF58F,\n    0xF58F, 0xF58F, 0xF58F, 0xF58F, 0xF58F, 0xF58F, 0xF58F, 0xF58F,\n    0xF58F, 0xF58F, 0xF2E6, 0xEC9E, 0xE544, 0xDF67, 0xDD93, 0xDFB9,\n    0xE3B5, 0xE8F9, 0xEEF5, 0xF51B, 0xFADB, 0xFFA8, 0x02F1, 0x042A,\n    0x9655, 0x9655, 0x9655, 0x9655, 0x9655, 0x9655, 0x9655, 0x9655,\n    0x9655, 0x9655, 0x9655, 0x9655, 0x9655, 0x9655, 0x9655, 0x9220,\n    0x87FF, 0x7BAB, 0x70E6, 0x6B6B, 0x6ADD, 0x6C16, 0x6EA0, 0x7208,\n    0x75D7, 0x7999, 0x7CD9, 0x7F22, 0x8001, 0x614E, 0x614E, 0x614E,\n    0x614E, 0x614E, 0x614E, 0x614E, 0x614E, 0x614E, 0x614E, 0x614E,\n    0x614E, 0x614E, 0x614E, 0x614E, 0x635E, 0x686B, 0x6EC2, 0x74AF,\n    0x7880, 0x7A7D, 0x7C19, 0x7D5D, 0x7E55, 0x7F09, 0x7F83, 0x7FCE,\n    0x7FF4, 0x8001, 0x76A6, 0x76A6, 0x76A6, 0x76A6, 0x76A6, 0x76A6,\n    0x76A6, 0x76A6, 0x76A6, 0x76A6, 0x76A6, 0x76A6, 0x76A6, 0x76A6,\n    0x76A6, 0x743F, 0x6E92, 0x67EC, 0x6299, 0x60E5, 0x62C2, 0x6641,\n    0x6AE4, 0x702D, 0x759C, 0x7AB2, 0x7EF2, 0x81DE, 0x82F3, 0x6078,\n    0x3FFF, 0xDF87, 0x9F88, 0xC001, 0xDF87, 0xBF0E, 0x5347, 0x51FD,\n    0x4E9C, 0x49DF, 0x4482, 0x3F40, 0x3AD4, 0x37FB, 0x361B, 0x3447,\n    0x32BE, 0x31BF, 0x3187, 0x3255, 0x3467, 0x37FB, 0x4258, 0x539F,\n    0x6451, 0x6CF2, 0x6DB9, 0x6C3F, 0x6917, 0x64D5, 0x600E, 0x5B55,\n    0x573E, 0x545D, 0x5347, 0xC04A, 0x3FFF, 0x3FEA, 0x3FB2, 0x3F5E,\n    0x3EF9, 0x3E8B, 0x3E1C, 0x3DB6, 0x3D61, 0x3D27, 0x3D10, 0x3D13,\n    0x3D23, 0x3D3C, 0x3D5F, 0x3D89, 0x3DB9, 0x3DED, 0x3E24, 0x3E5D,\n    0x3E96, 0x3ECE, 0x3F03, 0x3F33, 0x3F5F, 0x3F83, 0x3F9E, 0x3FB0,\n    0x3FB6, 0x0000,\n};\n\n// 0x0800B884\nstatic const u16 chuckya_seg8_animindex_0800B884[] = {\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001D, 0x01C4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01C3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001D, 0x01A6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01A5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001D, 0x00CE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001D, 0x0003,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x01A2, 0x0001, 0x01A3, 0x0001, 0x01A4,\n    0x001D, 0x00F1, 0x001D, 0x010E, 0x001D, 0x012B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x00EB, 0x0001, 0x00EC, 0x0001, 0x00ED,\n    0x001D, 0x0020, 0x001D, 0x003D, 0x001D, 0x005A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x019F, 0x0001, 0x01A0, 0x0001, 0x01A1,\n    0x001D, 0x0148, 0x001D, 0x0165, 0x001D, 0x0182,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x00EE, 0x0001, 0x00EF, 0x0001, 0x00F0,\n    0x001D, 0x0077, 0x001D, 0x0094, 0x001D, 0x00B1,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x0800B9F8\nstatic const struct Animation chuckya_seg8_anim_0800B9F8 = {\n    0,\n    0,\n    0,\n    0,\n    0x1D,\n    ANIMINDEX_NUMPARTS(chuckya_seg8_animindex_0800B884),\n    chuckya_seg8_animvalue_0800B4C0,\n    chuckya_seg8_animindex_0800B884,\n    0,\n};\n"
  },
  {
    "path": "actors/chuckya/anims/anim_0800BBEC.inc.c",
    "content": "// 0x0800BA10\nstatic const s16 chuckya_seg8_animvalue_0800BA10[] = {\n    0x0000, 0x0001, 0x3FFF, 0xF7A8, 0xF9AA, 0xFD64, 0xFF66, 0xFD64,\n    0xF9AA, 0xF7A8, 0x071C, 0xF225, 0x784B, 0xFD4B, 0xFF52, 0x84C1,\n    0xFC87, 0xFD2A, 0xFE57, 0xFEF9, 0xFE57, 0xFD2A, 0xFC87, 0xC001,\n    0x8001, 0xE35C, 0x3FFF, 0x8001, 0xE35C, 0x06BA, 0x04DF, 0xDF93,\n    0x7BF0, 0x87DA, 0x6749, 0x6078, 0x3FFF, 0xDF87, 0x9F88, 0xC001,\n    0xDF87, 0xBF0E, 0x5347, 0xC04A, 0x4A4E, 0x49AC, 0x487E, 0x47DC,\n    0x487E, 0x49AC, 0x4A4E, 0x0000,\n};\n\n// 0x0800BA78\nstatic const u16 chuckya_seg8_animindex_0800BA78[] = {\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0007, 0x002C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x002B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x002A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0029,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0007, 0x0010,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0007, 0x0003,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0026, 0x0001, 0x0027, 0x0001, 0x0028,\n    0x0001, 0x001D, 0x0001, 0x001E, 0x0001, 0x001F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0017, 0x0001, 0x0018, 0x0001, 0x0019,\n    0x0001, 0x000A, 0x0001, 0x000B, 0x0001, 0x000C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0023, 0x0001, 0x0024, 0x0001, 0x0025,\n    0x0001, 0x0020, 0x0001, 0x0021, 0x0001, 0x0022,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x001A, 0x0001, 0x001B, 0x0001, 0x001C,\n    0x0001, 0x000D, 0x0001, 0x000E, 0x0001, 0x000F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x0800BBEC\nstatic const struct Animation chuckya_seg8_anim_0800BBEC = {\n    0,\n    0,\n    0,\n    0,\n    0x07,\n    ANIMINDEX_NUMPARTS(chuckya_seg8_animindex_0800BA78),\n    chuckya_seg8_animvalue_0800BA10,\n    chuckya_seg8_animindex_0800BA78,\n    0,\n};\n"
  },
  {
    "path": "actors/chuckya/anims/anim_0800C058.inc.c",
    "content": "// 0x0800BC04\nstatic const s16 chuckya_seg8_animvalue_0800BC04[] = {\n    0x0000, 0x0001, 0x3FFF, 0xF7A8, 0xF7BC, 0xF7F6, 0xF851, 0xF8CB,\n    0xF960, 0xFA0C, 0xFACC, 0xFB9C, 0xFC79, 0xFD5F, 0xFE49, 0xFF36,\n    0x0020, 0x0106, 0x02A7, 0x0507, 0x0707, 0x0787, 0x06A4, 0x054F,\n    0x03A3, 0x01BF, 0xFFBF, 0xFDBD, 0xFBD9, 0xFA2F, 0xF8DB, 0xF7F9,\n    0x03AA, 0x0386, 0x0320, 0x0283, 0x01BA, 0x00D0, 0xFFD2, 0xFEC8,\n    0xFDBD, 0xFCBE, 0xFBD4, 0xFB0C, 0xFA6F, 0xFA08, 0xF9E4, 0xFA04,\n    0xFA5E, 0xFAE8, 0xFB9B, 0xFC6D, 0xFD55, 0xFE4B, 0xFF45, 0x0039,\n    0x0121, 0x01F3, 0x02A6, 0x0331, 0x038A, 0x805D, 0x805D, 0x805D,\n    0x805D, 0x805D, 0x805D, 0x805D, 0x805D, 0x805D, 0x805D, 0x805D,\n    0x805D, 0x805D, 0x805D, 0x805D, 0x805D, 0x805D, 0x805D, 0x805D,\n    0x805D, 0x805D, 0x805D, 0x805D, 0x805D, 0x805D, 0x805D, 0x805D,\n    0x805D, 0x805D, 0x805D, 0x8040, 0x7FEC, 0x7F70, 0x7ED1, 0x7E18,\n    0x7D4E, 0x7C7B, 0x7BA8, 0x7ADE, 0x7A25, 0x7986, 0x790A, 0x78B9,\n    0x789C, 0x78B6, 0x78FD, 0x796B, 0x79F8, 0x7A9E, 0x7B56, 0x7C18,\n    0x7CDE, 0x7DA1, 0x7E58, 0x7EFF, 0x7F8C, 0x7FFA, 0x8044, 0xFC87,\n    0xFC9C, 0xFCD5, 0xFD2C, 0xFD9D, 0xFE20, 0xFEB0, 0xFF48, 0xFFE0,\n    0x0072, 0x00FB, 0x0173, 0x01D4, 0x0219, 0x023A, 0x019A, 0x001C,\n    0xFE83, 0xFD8F, 0xFD38, 0xFCF5, 0xFCC4, 0xFCA2, 0xFC8C, 0xFC80,\n    0xFC7C, 0xFC7D, 0xFC81, 0xFC85, 0xC001, 0x8001, 0xE35C, 0x3FFF,\n    0x8001, 0xE35C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001,\n    0x0001, 0x0001, 0x0002, 0x0002, 0x0002, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0002, 0x0002, 0x0002, 0x0001,\n    0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0xFFF6, 0xFFD8, 0xFFAA, 0xFF70, 0xFF2C, 0xFEE1, 0xFE93, 0xFE46,\n    0xFDFB, 0xFDB7, 0xFD7D, 0xFD4F, 0xFD31, 0xFD26, 0xFD30, 0xFD4A,\n    0xFD72, 0xFDA6, 0xFDE4, 0xFE27, 0xFE6F, 0xFEB8, 0xFEFF, 0xFF43,\n    0xFF80, 0xFFB5, 0xFFDD, 0xFFF7, 0x042A, 0x042A, 0x042A, 0x042A,\n    0x042A, 0x042A, 0x042A, 0x042A, 0x042A, 0x042A, 0x042A, 0x042A,\n    0x042A, 0x042A, 0x042A, 0x042A, 0x042A, 0x042A, 0x042A, 0x042A,\n    0x042A, 0x042A, 0x042A, 0x042A, 0x042A, 0x042A, 0x042A, 0x042A,\n    0x042A, 0x8001, 0x8001, 0x82F3, 0x82F7, 0x8304, 0x8318, 0x8331,\n    0x834E, 0x836E, 0x838F, 0x83B1, 0x83D1, 0x83EE, 0x8407, 0x841A,\n    0x8427, 0x842C, 0x8428, 0x841D, 0x840B, 0x83F5, 0x83DB, 0x83BE,\n    0x839F, 0x8380, 0x8361, 0x8344, 0x832A, 0x8313, 0x8302, 0x82F7,\n    0x6078, 0x3FFF, 0xDF87, 0x9F88, 0xC001, 0xDF87, 0xBF0E, 0x5347,\n    0xC04A, 0x0000, 0x0000, 0x0002, 0x0004, 0x0006, 0x0008, 0x000A,\n    0x000A, 0x000A, 0x000A, 0x0009, 0x0009, 0x0008, 0x0007, 0x0006,\n    0x0005, 0x0004, 0x0004, 0x0003, 0x0003, 0x0005, 0x0007, 0x000A,\n    0x000B, 0x000A, 0x0008, 0x0005, 0x0002, 0x0000, 0x0000, 0x000F,\n    0x0037, 0x0072, 0x00B8, 0x0101, 0x0146, 0x0173, 0x0137, 0x00F9,\n    0x00BA, 0x007A, 0x003A, 0xFFFB, 0xFFBB, 0xFF7D, 0xFF40, 0xFF06,\n    0xFECF, 0xFE9B, 0xFE6A, 0xFE50, 0xFE71, 0xFEA6, 0xFEE1, 0xFF2B,\n    0xFF77, 0xFFBC, 0xFFEE, 0x3FB6, 0x3FC3, 0x3FE4, 0x4010, 0x4041,\n    0x406C, 0x408B, 0x4096, 0x4092, 0x408A, 0x407D, 0x406C, 0x4058,\n    0x4042, 0x402B, 0x4012, 0x3FF9, 0x3FE1, 0x3FCB, 0x3FB6, 0x3F9C,\n    0x3F7E, 0x3F66, 0x3F5F, 0x3F67, 0x3F78, 0x3F8C, 0x3FA1, 0x3FB0,\n};\n\n// 0x0800BEE4\nstatic const u16 chuckya_seg8_animindex_0800BEE4[] = {\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x001D, 0x0119, 0x001D, 0x0136, 0x001D, 0x0153,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0118,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0117,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0116,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001D, 0x0077,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001D, 0x0003,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0113, 0x0001, 0x0114, 0x0001, 0x0115,\n    0x001D, 0x009A, 0x001D, 0x00B7, 0x001D, 0x00D4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0094, 0x0001, 0x0095, 0x0001, 0x0096,\n    0x0001, 0x0000, 0x001D, 0x0020, 0x001D, 0x003D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0110, 0x0001, 0x0111, 0x0001, 0x0112,\n    0x0001, 0x00F1, 0x0001, 0x00F2, 0x001D, 0x00F3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0097, 0x0001, 0x0098, 0x0001, 0x0099,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001D, 0x005A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x0800C058\nstatic const struct Animation chuckya_seg8_anim_0800C058 = {\n    0,\n    0,\n    0,\n    0,\n    0x1D,\n    ANIMINDEX_NUMPARTS(chuckya_seg8_animindex_0800BEE4),\n    chuckya_seg8_animvalue_0800BC04,\n    chuckya_seg8_animindex_0800BEE4,\n    0,\n};\n"
  },
  {
    "path": "actors/chuckya/anims/data.inc.c",
    "content": "#include \"anim_0800AF68.inc.c\"\n#include \"anim_0800B1A8.inc.c\"\n#include \"anim_0800B4A8.inc.c\"\n#include \"anim_0800B9F8.inc.c\"\n#include \"anim_0800BBEC.inc.c\"\n#include \"anim_0800C058.inc.c\"\n"
  },
  {
    "path": "actors/chuckya/anims/table.inc.c",
    "content": "// 0x0800C070\nconst struct Animation *const chuckya_seg8_anims_0800C070[] = {\n    &chuckya_seg8_anim_0800AF68,\n    &chuckya_seg8_anim_0800B1A8,\n    &chuckya_seg8_anim_0800B4A8,\n    &chuckya_seg8_anim_0800B9F8,\n    &chuckya_seg8_anim_0800BBEC,\n    &chuckya_seg8_anim_0800C058,\n};\n"
  },
  {
    "path": "actors/chuckya/geo.inc.c",
    "content": "// 0x0F0001D8\nconst GeoLayout chuckya_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 100),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 281, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, chuckya_seg8_dl_0800ABE8),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 113, -152, 0, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                                GEO_OPEN_NODE(),\n                                    GEO_ANIMATED_PART(LAYER_OPAQUE, 74, 0, 0, NULL),\n                                    GEO_OPEN_NODE(),\n                                        GEO_ANIMATED_PART(LAYER_OPAQUE, 96, 0, 0, NULL),\n                                        GEO_OPEN_NODE(),\n                                            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                                            GEO_OPEN_NODE(),\n                                                GEO_BILLBOARD(),\n                                                GEO_OPEN_NODE(),\n                                                    GEO_DISPLAY_LIST(LAYER_ALPHA, chuckya_seg8_dl_0800A5F8),\n                                                GEO_CLOSE_NODE(),\n                                            GEO_CLOSE_NODE(),\n                                        GEO_CLOSE_NODE(),\n                                    GEO_CLOSE_NODE(),\n                                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, chuckya_seg8_dl_0800A998),\n                                GEO_CLOSE_NODE(),\n                            GEO_CLOSE_NODE(),\n                            GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, chuckya_seg8_dl_0800A758),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_BILLBOARD(),\n                                GEO_OPEN_NODE(),\n                                    GEO_DISPLAY_LIST(LAYER_ALPHA, chuckya_seg8_dl_0800A068),\n                                GEO_CLOSE_NODE(),\n                            GEO_CLOSE_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 1, 0, 0, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                                GEO_OPEN_NODE(),\n                                    GEO_ANIMATED_PART(LAYER_OPAQUE, 209, 0, 0, NULL),\n                                    GEO_OPEN_NODE(),\n                                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                                        GEO_OPEN_NODE(),\n                                            GEO_BILLBOARD(),\n                                            GEO_OPEN_NODE(),\n                                                GEO_DISPLAY_LIST(LAYER_ALPHA, chuckya_seg8_dl_0800A1D0),\n                                            GEO_CLOSE_NODE(),\n                                        GEO_CLOSE_NODE(),\n                                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                                        GEO_OPEN_NODE(),\n                                            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                                            GEO_OPEN_NODE(),\n                                                GEO_ANIMATED_PART(LAYER_OPAQUE, 95, 0, 0, NULL),\n                                                GEO_OPEN_NODE(),\n                                                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                                                    GEO_OPEN_NODE(),\n                                                        GEO_BILLBOARD(),\n                                                        GEO_OPEN_NODE(),\n                                                            GEO_DISPLAY_LIST(LAYER_ALPHA, chuckya_seg8_dl_0800A428),\n                                                        GEO_CLOSE_NODE(),\n                                                    GEO_CLOSE_NODE(),\n                                                GEO_CLOSE_NODE(),\n                                            GEO_CLOSE_NODE(),\n                                        GEO_CLOSE_NODE(),\n                                    GEO_CLOSE_NODE(),\n                                GEO_CLOSE_NODE(),\n                            GEO_CLOSE_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 1, 0, 0, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                                GEO_OPEN_NODE(),\n                                    GEO_ANIMATED_PART(LAYER_OPAQUE, 209, 0, 0, NULL),\n                                    GEO_OPEN_NODE(),\n                                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                                        GEO_OPEN_NODE(),\n                                            GEO_BILLBOARD(),\n                                            GEO_OPEN_NODE(),\n                                                GEO_DISPLAY_LIST(LAYER_ALPHA, chuckya_seg8_dl_0800A338),\n                                            GEO_CLOSE_NODE(),\n                                        GEO_CLOSE_NODE(),\n                                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                                        GEO_OPEN_NODE(),\n                                            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                                            GEO_OPEN_NODE(),\n                                                GEO_ANIMATED_PART(LAYER_OPAQUE, 95, 0, 0, NULL),\n                                                GEO_OPEN_NODE(),\n                                                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                                                    GEO_OPEN_NODE(),\n                                                        GEO_BILLBOARD(),\n                                                        GEO_OPEN_NODE(),\n                                                            GEO_DISPLAY_LIST(LAYER_ALPHA, chuckya_seg8_dl_0800A510),\n                                                        GEO_CLOSE_NODE(),\n                                                    GEO_CLOSE_NODE(),\n                                                    GEO_ASM(0, geo_update_held_mario_pos),\n                                                GEO_CLOSE_NODE(),\n                                            GEO_CLOSE_NODE(),\n                                        GEO_CLOSE_NODE(),\n                                    GEO_CLOSE_NODE(),\n                                GEO_CLOSE_NODE(),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, chuckya_seg8_dl_0800A8D0),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/chuckya/model.inc.c",
    "content": "// Chuckya\n\n// Unreferenced light group\nUNUSED static const Lights1 chuckya_lights_unused1 = gdSPDefLights1(\n    0x26, 0x00, 0x27,\n    0x9a, 0x00, 0x9c, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 chuckya_lights_unused2 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 chuckya_lights_unused3 = gdSPDefLights1(\n    0x3f, 0x00, 0x00,\n    0xff, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 chuckya_lights_unused4 = gdSPDefLights1(\n    0x0e, 0x0e, 0x0e,\n    0x39, 0x39, 0x39, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 chuckya_lights_unused5 = gdSPDefLights1(\n    0x39, 0x20, 0x00,\n    0xe4, 0x83, 0x00, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 chuckya_lights_unused6 = gdSPDefLights1(\n    0x3f, 0x27, 0x00,\n    0xff, 0x9e, 0x00, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 chuckya_lights_unused7 = gdSPDefLights1(\n    0x15, 0x14, 0x16,\n    0x57, 0x53, 0x58, 0x28, 0x28, 0x28\n);\n\n// 0x08006778\nALIGNED8 static const Texture chuckya_seg8_texture_08006778[] = {\n#include \"actors/chuckya/chuckya_eyes.rgba16.inc.c\"\n};\n\n// 0x08007778\nALIGNED8 static const Texture chuckya_seg8_texture_08007778[] = {\n#include \"actors/chuckya/chuckya_hand_antenna.rgba16.inc.c\"\n};\n\n// 0x08007F78\nALIGNED8 static const Texture chuckya_seg8_texture_08007F78[] = {\n#include \"actors/chuckya/chuckya_body_arm_left_side.rgba16.inc.c\"\n};\n\n// 0x08008F78\nALIGNED8 static const Texture chuckya_seg8_texture_08008F78[] = {\n#include \"actors/chuckya/chuckya_body_arm_right_side.rgba16.inc.c\"\n};\n\n// 0x08009F78\nstatic const Vtx chuckya_seg8_vertex_08009F78[] = {\n    {{{     0,     56,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -56,    -56,      0}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    -56,      0}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -56,     56,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x08009FB8\nstatic const Vtx chuckya_seg8_vertex_08009FB8[] = {\n    {{{    56,     56,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    -56,      0}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    56,    -56,      0}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,     56,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x08009FF8 - 0x0800A030\nconst Gfx chuckya_seg8_dl_08009FF8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, chuckya_seg8_texture_08007F78),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(chuckya_seg8_vertex_08009F78, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0800A030 - 0x0800A068\nconst Gfx chuckya_seg8_dl_0800A030[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, chuckya_seg8_texture_08008F78),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(chuckya_seg8_vertex_08009FB8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0800A068 - 0x0800A0E0\nconst Gfx chuckya_seg8_dl_0800A068[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(chuckya_seg8_dl_08009FF8),\n    gsSPDisplayList(chuckya_seg8_dl_0800A030),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x0800A0E0\nstatic const Vtx chuckya_seg8_vertex_0800A0E0[] = {\n    {{{     0,     13,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -13,    -13,      0}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    -13,      0}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -13,     13,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0800A120\nstatic const Vtx chuckya_seg8_vertex_0800A120[] = {\n    {{{    13,     13,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    -13,      0}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    13,    -13,      0}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,     13,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0800A160 - 0x0800A198\nconst Gfx chuckya_seg8_dl_0800A160[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, chuckya_seg8_texture_08007F78),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(chuckya_seg8_vertex_0800A0E0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0800A198 - 0x0800A1D0\nconst Gfx chuckya_seg8_dl_0800A198[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, chuckya_seg8_texture_08008F78),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(chuckya_seg8_vertex_0800A120, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0800A1D0 - 0x0800A248\nconst Gfx chuckya_seg8_dl_0800A1D0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(chuckya_seg8_dl_0800A160),\n    gsSPDisplayList(chuckya_seg8_dl_0800A198),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x0800A248\nstatic const Vtx chuckya_seg8_vertex_0800A248[] = {\n    {{{     0,     13,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -13,    -13,      0}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    -13,      0}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -13,     13,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0800A288\nstatic const Vtx chuckya_seg8_vertex_0800A288[] = {\n    {{{    13,     13,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    -13,      0}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    13,    -13,      0}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,     13,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0800A2C8 - 0x0800A300\nconst Gfx chuckya_seg8_dl_0800A2C8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, chuckya_seg8_texture_08007F78),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(chuckya_seg8_vertex_0800A248, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0800A300 - 0x0800A338\nconst Gfx chuckya_seg8_dl_0800A300[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, chuckya_seg8_texture_08008F78),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(chuckya_seg8_vertex_0800A288, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0800A338 - 0x0800A3B0\nconst Gfx chuckya_seg8_dl_0800A338[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(chuckya_seg8_dl_0800A2C8),\n    gsSPDisplayList(chuckya_seg8_dl_0800A300),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x0800A3B0\nstatic const Vtx chuckya_seg8_vertex_0800A3B0[] = {\n    {{{    23,     23,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -22,     23,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -22,    -22,      0}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    23,    -22,      0}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0800A3F0 - 0x0800A428\nconst Gfx chuckya_seg8_dl_0800A3F0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, chuckya_seg8_texture_08007778),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(chuckya_seg8_vertex_0800A3B0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0800A428 - 0x0800A498\nconst Gfx chuckya_seg8_dl_0800A428[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(chuckya_seg8_dl_0800A3F0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x0800A498\nstatic const Vtx chuckya_seg8_vertex_0800A498[] = {\n    {{{    23,     23,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -22,     23,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -22,    -22,      0}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    23,    -22,      0}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0800A4D8 - 0x0800A510\nconst Gfx chuckya_seg8_dl_0800A4D8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, chuckya_seg8_texture_08007778),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(chuckya_seg8_vertex_0800A498, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0800A510 - 0x0800A580\nconst Gfx chuckya_seg8_dl_0800A510[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(chuckya_seg8_dl_0800A4D8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x0800A580\nstatic const Vtx chuckya_seg8_vertex_0800A580[] = {\n    {{{    25,     25,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -25,     25,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -25,    -25,      0}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    25,    -25,      0}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0800A5C0 - 0x0800A5F8\nconst Gfx chuckya_seg8_dl_0800A5C0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, chuckya_seg8_texture_08007778),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(chuckya_seg8_vertex_0800A580, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0800A5F8 - 0x0800A668\nconst Gfx chuckya_seg8_dl_0800A5F8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(chuckya_seg8_dl_0800A5C0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x0800A668\nstatic const Lights1 chuckya_seg8_lights_0800A668 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0800A680\nstatic const Vtx chuckya_seg8_vertex_0800A680[] = {\n    {{{    33,    237,      0}, 0, {   480,   1016}, {0x40, 0x65, 0x28, 0xff}}},\n    {{{    27,    198,    107}, 0, {  1012,    932}, {0x40, 0x65, 0x28, 0xff}}},\n    {{{   196,    134,      0}, 0, {   480,    -66}, {0x40, 0x65, 0x28, 0xff}}},\n    {{{   163,    112,    107}, 0, {  1012,     22}, {0x40, 0x65, 0x28, 0xff}}},\n    {{{   196,    134,      0}, 0, {   480,    -66}, {0x40, 0x65, 0xd7, 0xff}}},\n    {{{    27,    198,   -106}, 0, {   -52,    928}, {0x40, 0x65, 0xd7, 0xff}}},\n    {{{    33,    237,      0}, 0, {   480,   1016}, {0x40, 0x65, 0xd7, 0xff}}},\n    {{{   163,    112,   -106}, 0, {   -52,     20}, {0x40, 0x65, 0xd7, 0xff}}},\n};\n\n// 0x0800A700 - 0x0800A758\nconst Gfx chuckya_seg8_dl_0800A700[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, chuckya_seg8_texture_08006778),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&chuckya_seg8_lights_0800A668.l, 1),\n    gsSPLight(&chuckya_seg8_lights_0800A668.a, 2),\n    gsSPVertex(chuckya_seg8_vertex_0800A680, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0800A758 - 0x0800A7C8\nconst Gfx chuckya_seg8_dl_0800A758[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(chuckya_seg8_dl_0800A700),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x0800A7C8\nstatic const Lights1 chuckya_seg8_lights_0800A7C8 = gdSPDefLights1(\n    0x29, 0x29, 0x29,\n    0x89, 0x89, 0x8a, 0x28, 0x28, 0x28\n);\n\n// 0x0800A7E0\nstatic const Vtx chuckya_seg8_vertex_0800A7E0[] = {\n    {{{    87,     41,    -41}, 0, {     0,      0}, {0xb8, 0x49, 0xb7, 0xff}}},\n    {{{    87,      0,    -58}, 0, {     0,      0}, {0xb8, 0x00, 0x98, 0xff}}},\n    {{{     3,     -1,      0}, 0, {     0,      0}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{    87,     58,      0}, 0, {     0,      0}, {0xb8, 0x67, 0x00, 0xff}}},\n    {{{    87,    -42,    -41}, 0, {     0,      0}, {0xb8, 0xb6, 0xb7, 0xff}}},\n    {{{    87,    -42,     42}, 0, {     0,      0}, {0xb8, 0xb6, 0x49, 0xff}}},\n    {{{    87,      0,     59}, 0, {     0,      0}, {0xb8, 0x00, 0x67, 0xff}}},\n    {{{    87,     41,     42}, 0, {     0,      0}, {0xb7, 0x49, 0x48, 0xff}}},\n    {{{    88,    -59,      0}, 0, {     0,      0}, {0xb9, 0x98, 0x00, 0xff}}},\n};\n\n// 0x0800A870 - 0x0800A8D0\nconst Gfx chuckya_seg8_dl_0800A870[] = {\n    gsSPLight(&chuckya_seg8_lights_0800A7C8.l, 1),\n    gsSPLight(&chuckya_seg8_lights_0800A7C8.a, 2),\n    gsSPVertex(chuckya_seg8_vertex_0800A7E0, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  5,  6,  2, 0x0),\n    gsSP2Triangles( 6,  7,  2, 0x0,  8,  5,  2, 0x0),\n    gsSP2Triangles( 7,  3,  2, 0x0,  4,  8,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0800A8D0 - 0x0800A8F0\nconst Gfx chuckya_seg8_dl_0800A8D0[] = {\n    gsDPPipeSync(),\n    gsSPDisplayList(chuckya_seg8_dl_0800A870),\n    gsDPPipeSync(),\n    gsSPEndDisplayList(),\n};\n\n// 0x0800A8F0\nstatic const Lights1 chuckya_seg8_lights_0800A8F0 = gdSPDefLights1(\n    0x4c, 0x4c, 0x00,\n    0xff, 0xff, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x0800A908\nstatic const Vtx chuckya_seg8_vertex_0800A908[] = {\n    {{{    -9,      2,      0}, 0, {     0,      0}, {0x82, 0xfd, 0x00, 0xff}}},\n    {{{    79,     26,      0}, 0, {     0,      0}, {0xdf, 0x7a, 0x00, 0xff}}},\n    {{{    79,      1,    -33}, 0, {     0,      0}, {0xd4, 0xff, 0x8a, 0xff}}},\n    {{{    80,    -23,      0}, 0, {     0,      0}, {0xde, 0x86, 0x00, 0xff}}},\n    {{{    79,      1,     33}, 0, {     0,      0}, {0xd4, 0xff, 0x76, 0xff}}},\n};\n\n// 0x0800A958 - 0x0800A998\nconst Gfx chuckya_seg8_dl_0800A958[] = {\n    gsSPLight(&chuckya_seg8_lights_0800A8F0.l, 1),\n    gsSPLight(&chuckya_seg8_lights_0800A8F0.a, 2),\n    gsSPVertex(chuckya_seg8_vertex_0800A908, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  2,  3, 0x0,  0,  4,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0800A998 - 0x0800A9B8\nconst Gfx chuckya_seg8_dl_0800A998[] = {\n    gsDPPipeSync(),\n    gsSPDisplayList(chuckya_seg8_dl_0800A958),\n    gsDPPipeSync(),\n    gsSPEndDisplayList(),\n};\n\n// 0x0800A9B8\nstatic const Lights1 chuckya_seg8_lights_0800A9B8 = gdSPDefLights1(\n    0x0c, 0x0c, 0x0c,\n    0x32, 0x32, 0x32, 0x28, 0x28, 0x28\n);\n\n// 0x0800A9D0\nstatic const Vtx chuckya_seg8_vertex_0800A9D0[] = {\n    {{{   -99,   -129,    130}, 0, {     0,      0}, {0x24, 0xa9, 0x54, 0xff}}},\n    {{{  -135,   -173,    100}, 0, {     0,      0}, {0x24, 0xa9, 0x54, 0xff}}},\n    {{{   -55,   -236,      0}, 0, {     0,      0}, {0x24, 0xa9, 0x54, 0xff}}},\n    {{{  -135,   -173,    100}, 0, {     0,      0}, {0xa3, 0x11, 0x54, 0xff}}},\n    {{{  -202,    -49,      0}, 0, {     0,      0}, {0xa3, 0x11, 0x54, 0xff}}},\n    {{{  -213,   -113,      1}, 0, {     0,      0}, {0xa3, 0x11, 0x54, 0xff}}},\n    {{{  -135,   -173,    100}, 0, {     0,      0}, {0xa4, 0x12, 0x54, 0xff}}},\n    {{{   -99,   -129,    130}, 0, {     0,      0}, {0xa4, 0x12, 0x54, 0xff}}},\n    {{{  -202,    -49,      0}, 0, {     0,      0}, {0xa4, 0x12, 0x54, 0xff}}},\n    {{{  -135,   -173,    100}, 0, {     0,      0}, {0xb2, 0x9d, 0x00, 0xff}}},\n    {{{  -132,   -175,   -100}, 0, {     0,      0}, {0xb2, 0x9d, 0x00, 0xff}}},\n    {{{   -55,   -236,      0}, 0, {     0,      0}, {0xb2, 0x9d, 0x00, 0xff}}},\n    {{{  -135,   -173,    100}, 0, {     0,      0}, {0xb3, 0x9c, 0x00, 0xff}}},\n    {{{  -213,   -113,      1}, 0, {     0,      0}, {0xb3, 0x9c, 0x00, 0xff}}},\n    {{{  -132,   -175,   -100}, 0, {     0,      0}, {0xb3, 0x9c, 0x00, 0xff}}},\n};\n\n// 0x0800AAC0\nstatic const Vtx chuckya_seg8_vertex_0800AAC0[] = {\n    {{{  -213,   -113,      1}, 0, {     0,      0}, {0xa3, 0x0e, 0xac, 0xff}}},\n    {{{  -202,    -49,      0}, 0, {     0,      0}, {0xa3, 0x0e, 0xac, 0xff}}},\n    {{{   -98,   -130,   -130}, 0, {     0,      0}, {0xa3, 0x0e, 0xac, 0xff}}},\n    {{{  -132,   -175,   -100}, 0, {     0,      0}, {0xa3, 0x0e, 0xac, 0xff}}},\n    {{{   -99,   -129,    130}, 0, {     0,      0}, {0x25, 0xa9, 0x54, 0xff}}},\n    {{{   -55,   -236,      0}, 0, {     0,      0}, {0x25, 0xa9, 0x54, 0xff}}},\n    {{{     3,   -210,      1}, 0, {     0,      0}, {0x25, 0xa9, 0x54, 0xff}}},\n    {{{  -132,   -175,   -100}, 0, {     0,      0}, {0x28, 0xaa, 0xad, 0xff}}},\n    {{{     3,   -210,      1}, 0, {     0,      0}, {0x28, 0xaa, 0xad, 0xff}}},\n    {{{   -55,   -236,      0}, 0, {     0,      0}, {0x28, 0xaa, 0xad, 0xff}}},\n    {{{   -98,   -130,   -130}, 0, {     0,      0}, {0x28, 0xaa, 0xad, 0xff}}},\n};\n\n// 0x0800AB70 - 0x0800ABE8\nconst Gfx chuckya_seg8_dl_0800AB70[] = {\n    gsSPLight(&chuckya_seg8_lights_0800A9B8.l, 1),\n    gsSPLight(&chuckya_seg8_lights_0800A9B8.a, 2),\n    gsSPVertex(chuckya_seg8_vertex_0800A9D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(chuckya_seg8_vertex_0800AAC0, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle( 7, 10,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0800ABE8 - 0x0800AC18\nconst Gfx chuckya_seg8_dl_0800ABE8[] = {\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsSPDisplayList(chuckya_seg8_dl_0800AB70),\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/clam_shell/anims/anim_05001654.inc.c",
    "content": "// 0x050015D0\nstatic const s16 clam_shell_seg5_animvalue_050015D0[] = {\n    0x0000, 0x3FFF, 0x0E08, 0x1135, 0x1458, 0x1118, 0x0DBA, 0x1055,\n    0x1326, 0x10AE, 0x0E3E, 0x1121, 0x13F2, 0x116A, 0x0E81, 0x0FAA,\n    0x1127, 0x0FDC, 0x0E5C, 0x0E11, 0x0E00, 0x0E0D, 0x0E19, 0x0E08,\n    0x22E4, 0x4D59, 0x6EC3, 0x7A37, 0x7C9F, 0x7E13, 0x7D78, 0x7E13,\n    0x8001, 0x8001, 0x8001, 0x0000,\n};\n\n// 0x05001618\nstatic const u16 clam_shell_seg5_animindex_05001618[] = {\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0022,\n    0x0001, 0x0020, 0x0001, 0x0021, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0002,\n};\n\n// 0x05001654\nstatic const struct Animation clam_shell_seg5_anim_05001654 = {\n    1,\n    0,\n    0,\n    0,\n    0x1E,\n    ANIMINDEX_NUMPARTS(clam_shell_seg5_animindex_05001618),\n    clam_shell_seg5_animvalue_050015D0,\n    clam_shell_seg5_animindex_05001618,\n    0,\n};\n"
  },
  {
    "path": "actors/clam_shell/anims/anim_0500172C.inc.c",
    "content": "// 0x0500166C\nstatic const s16 clam_shell_seg5_animvalue_0500166C[] = {\n    0x0000, 0x3FFF, 0x7E13, 0x7DFA, 0x7DB2, 0x7D3C, 0x7C99, 0x7BCC,\n    0x7AD5, 0x79B7, 0x7874, 0x770C, 0x7582, 0x73D8, 0x720E, 0x7027,\n    0x6E24, 0x6C08, 0x69D3, 0x6787, 0x6527, 0x62B3, 0x602E, 0x5D98,\n    0x5AF5, 0x5845, 0x558A, 0x52C6, 0x4FFA, 0x4D28, 0x4A52, 0x477A,\n    0x44A1, 0x41C9, 0x3EF3, 0x3C21, 0x3955, 0x3691, 0x33D6, 0x3126,\n    0x2E83, 0x2BED, 0x2968, 0x26F4, 0x2494, 0x2248, 0x2013, 0x1DF7,\n    0x1BF4, 0x1A0D, 0x1843, 0x1699, 0x150F, 0x13A7, 0x1264, 0x1146,\n    0x104F, 0x0F82, 0x0EDF, 0x0E69, 0x0E21, 0x0E08, 0x8001, 0x8001,\n    0x8001, 0x0000,\n};\n\n// 0x050016F0\nstatic const u16 clam_shell_seg5_animindex_050016F0[] = {\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0040,\n    0x0001, 0x003E, 0x0001, 0x003F, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x003C, 0x0002,\n};\n\n// 0x0500172C\nstatic const struct Animation clam_shell_seg5_anim_0500172C = {\n    1,\n    0,\n    0,\n    0,\n    0x3C,\n    ANIMINDEX_NUMPARTS(clam_shell_seg5_animindex_050016F0),\n    clam_shell_seg5_animvalue_0500166C,\n    clam_shell_seg5_animindex_050016F0,\n    0,\n};\n"
  },
  {
    "path": "actors/clam_shell/anims/data.inc.c",
    "content": "#include \"anim_05001654.inc.c\"\n#include \"anim_0500172C.inc.c\"\n"
  },
  {
    "path": "actors/clam_shell/anims/table.inc.c",
    "content": "// 0x05001744\nconst struct Animation *const clam_shell_seg5_anims_05001744[] = {\n    &clam_shell_seg5_anim_05001654,\n    &clam_shell_seg5_anim_0500172C,\n    NULL,\n};\n"
  },
  {
    "path": "actors/clam_shell/geo.inc.c",
    "content": "// 0x0C000000\nconst GeoLayout clam_shell_geo[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, clam_shell_seg5_dl_05001568),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -520, -6, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, clam_shell_seg5_dl_050012B8),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/clam_shell/model.inc.c",
    "content": "// Clam Shell\n\n// Unreferenced light group\nUNUSED static const Lights1 clam_shell_lights_unused1 = gdSPDefLights1(\n    0x1b, 0x23, 0x30,\n    0x6d, 0x8f, 0xc3, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 clam_shell_lights_unused2 = gdSPDefLights1(\n    0x18, 0x28, 0x38,\n    0x60, 0xa2, 0xe2, 0x28, 0x28, 0x28\n);\n\n// 0x05000030\nALIGNED8 static const Texture clam_shell_seg5_texture_05000030[] = {\n#include \"actors/clam_shell/clam_shell.rgba16.inc.c\"\n};\n\n// 0x05000830\nALIGNED8 static const Texture clam_shell_seg5_texture_05000830[] = {\n#include \"actors/clam_shell/clam_shell_mouth.rgba16.inc.c\"\n};\n\n// 0x05001030\nstatic const Lights1 clam_shell_seg5_lights_05001030 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05001048\nstatic const Vtx clam_shell_seg5_vertex_05001048[] = {\n    {{{   728,   -261,      0}, 0, {   480,    566}, {0x00, 0x7e, 0xf5, 0xff}}},\n    {{{   -10,      2,   -131}, 0, {   580,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   404,    -50,   -528}, 0, {   886,    318}, {0xf5, 0x7e, 0x00, 0xff}}},\n    {{{   404,    -50,    529}, 0, {    72,    318}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1083,   -106,    435}, 0, {   144,    838}, {0xa8, 0xa8, 0x16, 0xff}}},\n    {{{   777,    -25,    658}, 0, {   -26,    604}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1087,   -154,      0}, 0, {   480,    842}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{  1214,     19,      0}, 0, {   480,    940}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{   -10,      2,    132}, 0, {   378,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1083,   -106,   -434}, 0, {   814,    838}, {0x31, 0x63, 0x3d, 0xff}}},\n    {{{   777,    -25,   -657}, 0, {   984,    604}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x050010F8\nstatic const Vtx clam_shell_seg5_vertex_050010F8[] = {\n    {{{  1087,   -154,      0}, 0, {   480,    816}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{  1214,     19,      0}, 0, {   480,    906}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  1083,   -106,   -434}, 0, {   168,    814}, {0x31, 0x63, 0x3d, 0xff}}},\n    {{{   728,   -261,      0}, 0, {   480,    560}, {0x00, 0x7e, 0xf5, 0xff}}},\n    {{{   -10,      2,    132}, 0, {   574,     34}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   404,    -50,    529}, 0, {   856,    328}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1083,   -106,    435}, 0, {   790,    814}, {0xa8, 0xa8, 0x16, 0xff}}},\n    {{{   777,    -25,    658}, 0, {   948,    594}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   777,    -25,   -657}, 0, {    10,    594}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   404,    -50,   -528}, 0, {   102,    328}, {0xf5, 0x7e, 0x00, 0xff}}},\n    {{{   -10,      2,   -131}, 0, {   384,     34}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x050011A8 - 0x05001238\nconst Gfx clam_shell_seg5_dl_050011A8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, clam_shell_seg5_texture_05000030),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&clam_shell_seg5_lights_05001030.l, 1),\n    gsSPLight(&clam_shell_seg5_lights_05001030.a, 2),\n    gsSPVertex(clam_shell_seg5_vertex_05001048, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 4,  5,  3, 0x0,  4,  0,  6, 0x0),\n    gsSP2Triangles( 6,  7,  4, 0x0,  3,  8,  0, 0x0),\n    gsSP2Triangles( 6,  0,  9, 0x0,  2, 10,  9, 0x0),\n    gsSP2Triangles( 9,  7,  6, 0x0,  9,  0,  2, 0x0),\n    gsSP1Triangle( 8,  1,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05001238 - 0x050012B8\nconst Gfx clam_shell_seg5_dl_05001238[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, clam_shell_seg5_texture_05000830),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(clam_shell_seg5_vertex_050010F8, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 0,  3,  6, 0x0,  6,  1,  0, 0x0),\n    gsSP2Triangles( 2,  8,  9, 0x0,  9, 10,  3, 0x0),\n    gsSP2Triangles( 9,  3,  2, 0x0,  3, 10,  4, 0x0),\n    gsSP1Triangle( 2,  3,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050012B8 - 0x05001320\nconst Gfx clam_shell_seg5_dl_050012B8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(clam_shell_seg5_dl_050011A8),\n    gsSPDisplayList(clam_shell_seg5_dl_05001238),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x05001320\nstatic const Lights1 clam_shell_seg5_lights_05001320 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05001338\nstatic const Vtx clam_shell_seg5_vertex_05001338[] = {\n    {{{   260,      0,      0}, 0, {   480,    600}, {0xf5, 0x7e, 0x07, 0xff}}},\n    {{{  -531,     -1,    132}, 0, {   580,     -8}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -124,    -74,    529}, 0, {   886,    304}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   692,    -45,      0}, 0, {   480,    932}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   556,   -160,   -434}, 0, {   144,    828}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   248,    -68,   -657}, 0, {   -26,    590}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -124,    -74,   -528}, 0, {    72,    304}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   248,    -68,    658}, 0, {   984,    590}, {0x0f, 0x7d, 0x0f, 0xff}}},\n    {{{   556,   -160,    435}, 0, {   814,    828}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -531,     -1,   -131}, 0, {   378,     -8}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x050013D8\nstatic const Vtx clam_shell_seg5_vertex_050013D8[] = {\n    {{{   556,   -160,    435}, 0, {   790,    796}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   248,    -68,    658}, 0, {   948,    568}, {0x0f, 0x7d, 0x0f, 0xff}}},\n    {{{   260,      0,      0}, 0, {   480,    576}, {0xf5, 0x7e, 0x07, 0xff}}},\n    {{{   692,    -45,      0}, 0, {   480,    896}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   556,   -160,   -434}, 0, {   168,    796}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -124,    -74,    529}, 0, {   856,    292}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -124,    -74,   -528}, 0, {   102,    292}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   248,    -68,   -657}, 0, {    10,    568}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -531,     -1,    132}, 0, {   574,     -8}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -531,     -1,   -131}, 0, {   384,     -8}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x05001478 - 0x050014F8\nconst Gfx clam_shell_seg5_dl_05001478[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, clam_shell_seg5_texture_05000030),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&clam_shell_seg5_lights_05001320.l, 1),\n    gsSPLight(&clam_shell_seg5_lights_05001320.a, 2),\n    gsSPVertex(clam_shell_seg5_vertex_05001338, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 4,  5,  0, 0x0,  0,  5,  6, 0x0),\n    gsSP2Triangles( 0,  7,  8, 0x0,  2,  7,  0, 0x0),\n    gsSP2Triangles( 8,  3,  0, 0x0,  0,  9,  1, 0x0),\n    gsSP1Triangle( 6,  9,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050014F8 - 0x05001568\nconst Gfx clam_shell_seg5_dl_050014F8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, clam_shell_seg5_texture_05000830),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(clam_shell_seg5_vertex_050013D8, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 2,  4,  3, 0x0,  2,  1,  5, 0x0),\n    gsSP2Triangles( 6,  7,  2, 0x0,  2,  7,  4, 0x0),\n    gsSP2Triangles( 8,  9,  2, 0x0,  2,  9,  6, 0x0),\n    gsSP1Triangle( 5,  8,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05001568 - 0x050015D0\nconst Gfx clam_shell_seg5_dl_05001568[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(clam_shell_seg5_dl_05001478),\n    gsSPDisplayList(clam_shell_seg5_dl_050014F8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/coin/geo.inc.c",
    "content": "// 0x1600013C\nconst GeoLayout yellow_coin_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xB4, 50),\n    GEO_OPEN_NODE(),\n        GEO_SWITCH_CASE(8, geo_switch_anim_state),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007800),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007800),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007828),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007828),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007850),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007850),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007878),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007878),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x160001A0\nconst GeoLayout yellow_coin_no_shadow_geo[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_SWITCH_CASE(8, geo_switch_anim_state),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007800),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007800),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007828),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007828),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007850),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007850),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007878),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007878),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x16000200\nconst GeoLayout blue_coin_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xB4, 80),\n    GEO_OPEN_NODE(),\n        GEO_SWITCH_CASE(8, geo_switch_anim_state),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_030078A0),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_030078A0),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_030078C8),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_030078C8),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_030078F0),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_030078F0),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007918),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007918),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x16000264\nconst GeoLayout blue_coin_no_shadow_geo[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_SWITCH_CASE(8, geo_switch_anim_state),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_030078A0),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_030078A0),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_030078C8),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_030078C8),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_030078F0),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_030078F0),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007918),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007918),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x160002C4\nconst GeoLayout red_coin_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xB4, 80),\n    GEO_OPEN_NODE(),\n        GEO_SWITCH_CASE(8, geo_switch_anim_state),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007940),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007940),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007968),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007968),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007990),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007990),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_030079B8),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_030079B8),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x16000328\nconst GeoLayout red_coin_no_shadow_geo[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_SWITCH_CASE(8, geo_switch_anim_state),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007940),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007940),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007968),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007968),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007990),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_03007990),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_030079B8),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, coin_seg3_dl_030079B8),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/coin/model.inc.c",
    "content": "// Coin\n\n// 0x030056C0\nstatic const Vtx coin_seg3_vertex_030056C0[] = {\n    {{{   -32,      0,      0}, 0, {     0,   1984}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{    32,      0,      0}, 0, {  1984,   1984}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{    32,     64,      0}, 0, {  1984,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{   -32,     64,      0}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n};\n\n// 0x03005700\nstatic const Vtx coin_seg3_vertex_03005700[] = {\n    {{{   -50,      0,      0}, 0, {     0,   1984}, {0x78, 0x78, 0xff, 0xff}}},\n    {{{    50,      0,      0}, 0, {  1984,   1984}, {0x78, 0x78, 0xff, 0xff}}},\n    {{{    50,    100,      0}, 0, {  1984,      0}, {0x78, 0x78, 0xff, 0xff}}},\n    {{{   -50,    100,      0}, 0, {     0,      0}, {0x78, 0x78, 0xff, 0xff}}},\n};\n\n// 0x03005740\nstatic const Vtx coin_seg3_vertex_03005740[] = {\n    {{{   -35,      0,      0}, 0, {     0,   1984}, {0xff, 0x00, 0x00, 0xff}}},\n    {{{    35,      0,      0}, 0, {  1984,   1984}, {0xff, 0x00, 0x00, 0xff}}},\n    {{{    35,     70,      0}, 0, {  1984,      0}, {0xff, 0x00, 0x00, 0xff}}},\n    {{{   -35,     70,      0}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0xff}}},\n};\n\n// 0x03005780\nALIGNED8 static const Texture coin_seg3_texture_03005780[] = {\n#include \"actors/coin/coin_front.ia16.inc.c\"\n};\n\n// 0x03005F80\nALIGNED8 static const Texture coin_seg3_texture_03005F80[] = {\n#include \"actors/coin/coin_tilt_right.ia16.inc.c\"\n};\n\n// 0x03006780\nALIGNED8 static const Texture coin_seg3_texture_03006780[] = {\n#include \"actors/coin/coin_side.ia16.inc.c\"\n};\n\n// 0x03006F80\nALIGNED8 static const Texture coin_seg3_texture_03006F80[] = {\n#include \"actors/coin/coin_tilt_left.ia16.inc.c\"\n};\n\n// 0x03007780 - 0x030077D0\nconst Gfx coin_seg3_dl_03007780[] = {\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x030077D0 - 0x03007800\nconst Gfx coin_seg3_dl_030077D0[] = {\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPTexture(0x0001, 0x0001, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x03007800 - 0x03007828\nconst Gfx coin_seg3_dl_03007800[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, coin_seg3_texture_03005780),\n    gsSPDisplayList(coin_seg3_dl_03007780),\n    gsSPVertex(coin_seg3_vertex_030056C0, 4, 0),\n    gsSPBranchList(coin_seg3_dl_030077D0),\n};\n\n// 0x03007828 - 0x03007850\nconst Gfx coin_seg3_dl_03007828[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, coin_seg3_texture_03005F80),\n    gsSPDisplayList(coin_seg3_dl_03007780),\n    gsSPVertex(coin_seg3_vertex_030056C0, 4, 0),\n    gsSPBranchList(coin_seg3_dl_030077D0),\n};\n\n// 0x03007850 - 0x03007878\nconst Gfx coin_seg3_dl_03007850[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, coin_seg3_texture_03006780),\n    gsSPDisplayList(coin_seg3_dl_03007780),\n    gsSPVertex(coin_seg3_vertex_030056C0, 4, 0),\n    gsSPBranchList(coin_seg3_dl_030077D0),\n};\n\n// 0x03007878 - 0x030078A0\nconst Gfx coin_seg3_dl_03007878[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, coin_seg3_texture_03006F80),\n    gsSPDisplayList(coin_seg3_dl_03007780),\n    gsSPVertex(coin_seg3_vertex_030056C0, 4, 0),\n    gsSPBranchList(coin_seg3_dl_030077D0),\n};\n\n// 0x030078A0 - 0x030078C8\nconst Gfx coin_seg3_dl_030078A0[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, coin_seg3_texture_03005780),\n    gsSPDisplayList(coin_seg3_dl_03007780),\n    gsSPVertex(coin_seg3_vertex_03005700, 4, 0),\n    gsSPBranchList(coin_seg3_dl_030077D0),\n};\n\n// 0x030078C8 - 0x030078F0\nconst Gfx coin_seg3_dl_030078C8[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, coin_seg3_texture_03005F80),\n    gsSPDisplayList(coin_seg3_dl_03007780),\n    gsSPVertex(coin_seg3_vertex_03005700, 4, 0),\n    gsSPBranchList(coin_seg3_dl_030077D0),\n};\n\n// 0x030078F0 - 0x03007918\nconst Gfx coin_seg3_dl_030078F0[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, coin_seg3_texture_03006780),\n    gsSPDisplayList(coin_seg3_dl_03007780),\n    gsSPVertex(coin_seg3_vertex_03005700, 4, 0),\n    gsSPBranchList(coin_seg3_dl_030077D0),\n};\n\n// 0x03007918 - 0x03007940\nconst Gfx coin_seg3_dl_03007918[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, coin_seg3_texture_03006F80),\n    gsSPDisplayList(coin_seg3_dl_03007780),\n    gsSPVertex(coin_seg3_vertex_03005700, 4, 0),\n    gsSPBranchList(coin_seg3_dl_030077D0),\n};\n\n// 0x03007940 - 0x03007968\nconst Gfx coin_seg3_dl_03007940[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, coin_seg3_texture_03005780),\n    gsSPDisplayList(coin_seg3_dl_03007780),\n    gsSPVertex(coin_seg3_vertex_03005740, 4, 0),\n    gsSPBranchList(coin_seg3_dl_030077D0),\n};\n\n// 0x03007968 - 0x03007990\nconst Gfx coin_seg3_dl_03007968[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, coin_seg3_texture_03005F80),\n    gsSPDisplayList(coin_seg3_dl_03007780),\n    gsSPVertex(coin_seg3_vertex_03005740, 4, 0),\n    gsSPBranchList(coin_seg3_dl_030077D0),\n};\n\n// 0x03007990 - 0x030079B8\nconst Gfx coin_seg3_dl_03007990[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, coin_seg3_texture_03006780),\n    gsSPDisplayList(coin_seg3_dl_03007780),\n    gsSPVertex(coin_seg3_vertex_03005740, 4, 0),\n    gsSPBranchList(coin_seg3_dl_030077D0),\n};\n\n// 0x030079B8 - 0x030079E0\nconst Gfx coin_seg3_dl_030079B8[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, coin_seg3_texture_03006F80),\n    gsSPDisplayList(coin_seg3_dl_03007780),\n    gsSPVertex(coin_seg3_vertex_03005740, 4, 0),\n    gsSPBranchList(coin_seg3_dl_030077D0),\n};\n"
  },
  {
    "path": "actors/common0.c",
    "content": "#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\n#include \"macros.h\"\n#include \"surface_terrains.h\"\n#include \"types.h\"\n#include \"make_const_nonconst.h\"\n\n#include \"blue_coin_switch/model.inc.c\"\n#include \"blue_coin_switch/collision.inc.c\"\nUNUSED static const u64 binid_0 = 0;\n\n#include \"amp/model.inc.c\"\n#include \"amp/anims/data.inc.c\"\n#include \"amp/anims/table.inc.c\"\nUNUSED static const u64 binid_1 = 1;\n\n#include \"cannon_lid/model.inc.c\"\n#include \"cannon_lid/collision.inc.c\"\nUNUSED static const u64 binid_2 = 2;\n\n#include \"cannon_base/model.inc.c\"\nUNUSED static const u64 binid_3 = 3;\n\n#include \"cannon_barrel/model.inc.c\"\nUNUSED static const u64 binid_4 = 4;\n\n#include \"chuckya/model.inc.c\"\n#include \"chuckya/anims/data.inc.c\"\n#include \"chuckya/anims/table.inc.c\"\nUNUSED static const u64 binid_5 = 5;\n\n#include \"purple_switch/model.inc.c\"\n#include \"purple_switch/collision.inc.c\"\nUNUSED static const u64 binid_6 = 6;\n\n#include \"checkerboard_platform/model.inc.c\"\n#include \"checkerboard_platform/collision.inc.c\"\nUNUSED static const u64 binid_7 = 7;\n\n#include \"heart/model.inc.c\"\nUNUSED static const u64 binid_8 = 8;\n\n#include \"flyguy/model.inc.c\"\n#include \"flyguy/anims/data.inc.c\"\n#include \"flyguy/anims/table.inc.c\"\nUNUSED static const u64 binid_9 = 9;\n\n#include \"breakable_box/model.inc.c\"\n#include \"breakable_box/collision.inc.c\"\nUNUSED static const u64 binid_10 = 10;\n\nUNUSED static const u64 binid_11 = 11;\n\n#include \"exclamation_box/model.inc.c\"\nUNUSED static const u64 binid_12 = 12;\n\n#include \"goomba/model.inc.c\"\n#include \"goomba/anims/data.inc.c\"\n#include \"goomba/anims/table.inc.c\"\nUNUSED static const u64 binid_13 = 13;\n\n#include \"bobomb/model.inc.c\"\n#include \"bobomb/anims/data.inc.c\"\n#include \"bobomb/anims/table.inc.c\"\nUNUSED static const u64 binid_14 = 14;\n\n#include \"metal_box/model.inc.c\"\n#include \"metal_box/collision.inc.c\"\nUNUSED static const u64 binid_15 = 15;\n\n#include \"exclamation_box_outline/model.inc.c\"\n#include \"exclamation_box_outline/collision.inc.c\"\nUNUSED static const u64 binid_16 = 16;\n\n#include \"test_platform/model.inc.c\"\n#include \"test_platform/collision.inc.c\"\nUNUSED static const u64 binid_17 = 17;\n\n#include \"koopa_shell/model.inc.c\"\nUNUSED static const u64 binid_18 = 18;\n"
  },
  {
    "path": "actors/common0.h",
    "content": "#ifndef COMMON0_H\n#define COMMON0_H\n\n#include \"types.h\"\n\n// amp\nextern const GeoLayout dAmpGeo[];\nextern const Gfx dAmpElectricityDl[];\nextern const Gfx dAmpEyeDl[];\nextern const Gfx dAmpMouthDl[];\nextern const Gfx dAmpBodyDl[];\nextern const struct Animation *const dAmpAnimsList[];\n\n// blue_coin_switch\nextern const GeoLayout blue_coin_switch_geo[];\nextern const Gfx blue_coin_switch_seg8_dl_08000D58[];\nextern const Gfx blue_coin_switch_seg8_dl_08000DD0[];\nextern const Gfx blue_coin_switch_seg8_dl_08000E08[];\nextern const Collision blue_coin_switch_seg8_collision_08000E98[];\n\n// bobomb\nextern const GeoLayout black_bobomb_geo[];\nextern const GeoLayout bobomb_buddy_geo[];\nextern const Gfx bobomb_seg8_dl_08022AC0[];\nextern const Gfx bobomb_seg8_dl_08022B08[];\nextern const Gfx bobomb_seg8_dl_08022B58[];\nextern const Gfx bobomb_seg8_dl_08022B88[];\nextern const Gfx bobomb_seg8_dl_08022C38[];\nextern const Gfx bobomb_seg8_dl_08022CA0[];\nextern const Gfx bobomb_seg8_dl_08022D08[];\nextern const Gfx bobomb_seg8_dl_08022D78[];\nextern const Gfx bobomb_seg8_dl_08023270[];\nextern const Gfx bobomb_seg8_dl_08023378[];\nextern const Gfx bobomb_seg8_dl_08023480[];\nextern const struct Animation *const bobomb_seg8_anims_0802396C[];\n\n// bowling_ball\nextern const GeoLayout bowling_ball_geo[];\nextern const GeoLayout bowling_ball_track_geo[];\n\n// breakable_box\nextern const GeoLayout breakable_box_geo[];\nextern const GeoLayout breakable_box_small_geo[];\nextern const Gfx breakable_box_seg8_dl_08012C30[];\nextern const Gfx breakable_box_seg8_dl_08012CD8[];\nextern const Gfx breakable_box_seg8_dl_08012D20[];\nextern const Gfx breakable_box_seg8_dl_08012D48[];\nextern const Collision breakable_box_seg8_collision_08012D70[];\n\n// cannon_barrel\nextern const GeoLayout cannon_barrel_geo[];\nextern const Gfx cannon_barrel_seg8_dl_08006408[];\nextern const Gfx cannon_barrel_seg8_dl_080064C0[];\nextern const Gfx cannon_barrel_seg8_dl_08006660[];\n\n// cannon_base\nextern const GeoLayout cannon_base_geo[];\nextern const Gfx cannon_base_seg8_dl_08005658[];\nextern const Gfx cannon_base_seg8_dl_080056D0[];\nextern const Gfx cannon_base_seg8_dl_080057F8[];\n\n// cannon_lid\nextern const Gfx cannon_lid_seg8_dl_08004898[];\nextern const Gfx cannon_lid_seg8_dl_080048E0[];\nextern const Collision cannon_lid_seg8_collision_08004950[];\n\n// checkerboard_platform\nextern const GeoLayout checkerboard_platform_geo[];\nextern const Gfx checkerboard_platform_seg8_dl_0800D5C0[];\nextern const Gfx checkerboard_platform_seg8_dl_0800D618[];\nextern const Gfx checkerboard_platform_seg8_dl_0800D680[];\nextern const Collision checkerboard_platform_seg8_collision_0800D710[];\n\n// chuckya\nextern const GeoLayout chuckya_geo[];\nextern const Gfx chuckya_seg8_dl_08009FF8[];\nextern const Gfx chuckya_seg8_dl_0800A030[];\nextern const Gfx chuckya_seg8_dl_0800A068[];\nextern const Gfx chuckya_seg8_dl_0800A160[];\nextern const Gfx chuckya_seg8_dl_0800A198[];\nextern const Gfx chuckya_seg8_dl_0800A1D0[];\nextern const Gfx chuckya_seg8_dl_0800A2C8[];\nextern const Gfx chuckya_seg8_dl_0800A300[];\nextern const Gfx chuckya_seg8_dl_0800A338[];\nextern const Gfx chuckya_seg8_dl_0800A3F0[];\nextern const Gfx chuckya_seg8_dl_0800A428[];\nextern const Gfx chuckya_seg8_dl_0800A4D8[];\nextern const Gfx chuckya_seg8_dl_0800A510[];\nextern const Gfx chuckya_seg8_dl_0800A5C0[];\nextern const Gfx chuckya_seg8_dl_0800A5F8[];\nextern const Gfx chuckya_seg8_dl_0800A700[];\nextern const Gfx chuckya_seg8_dl_0800A758[];\nextern const Gfx chuckya_seg8_dl_0800A870[];\nextern const Gfx chuckya_seg8_dl_0800A8D0[];\nextern const Gfx chuckya_seg8_dl_0800A958[];\nextern const Gfx chuckya_seg8_dl_0800A998[];\nextern const Gfx chuckya_seg8_dl_0800AB70[];\nextern const Gfx chuckya_seg8_dl_0800ABE8[];\nextern const struct Animation *const chuckya_seg8_anims_0800C070[];\n\n// exclamation_box\nextern const GeoLayout exclamation_box_geo[];\nextern const Gfx exclamation_box_seg8_dl_08018FA8[];\nextern const Gfx exclamation_box_seg8_dl_08019008[];\nextern const Gfx exclamation_box_seg8_dl_08019058[];\nextern const Gfx exclamation_box_seg8_dl_08019220[];\nextern const Gfx exclamation_box_seg8_dl_08019280[];\nextern const Gfx exclamation_box_seg8_dl_080192D0[];\nextern const Gfx exclamation_box_seg8_dl_08019318[];\nextern const Gfx exclamation_box_seg8_dl_08019378[];\nextern const Gfx exclamation_box_seg8_dl_080193D8[];\nextern const Gfx exclamation_box_seg8_dl_08019438[];\n\n// exclamation_box_outline\nextern const GeoLayout exclamation_box_outline_geo[];\nextern const Gfx exclamation_box_outline_seg8_dl_08024EB8[];\nextern const Gfx exclamation_box_outline_seg8_dl_08024F30[];\nextern const Gfx exclamation_box_outline_seg8_dl_08024F58[];\nextern const Gfx exclamation_box_outline_seg8_dl_08024F88[];\nextern const Gfx exclamation_box_outline_seg8_dl_08024FA8[];\nextern const Gfx exclamation_box_outline_seg8_dl_08024FC8[];\nextern const Gfx exclamation_box_outline_seg8_dl_08024FE8[];\nextern const Gfx exclamation_box_outline_seg8_dl_08025968[];\nextern const Gfx exclamation_box_outline_seg8_dl_080259F8[];\nextern const Gfx exclamation_box_outline_seg8_dl_08025EC0[];\nextern const Gfx exclamation_box_outline_seg8_dl_08025F08[];\nextern const Collision exclamation_box_outline_seg8_collision_08025F78[];\n\n// flyguy\nextern const GeoLayout flyguy_geo[];\nextern const Gfx flyguy_seg8_dl_08010840[];\nextern const Gfx flyguy_seg8_dl_08010968[];\nextern const Gfx flyguy_seg8_dl_08010A90[];\nextern const Gfx flyguy_seg8_dl_08010B38[];\nextern const Gfx flyguy_seg8_dl_08010B80[];\nextern const Gfx flyguy_seg8_dl_080113A8[];\nextern const Gfx flyguy_seg8_dl_08011420[];\nextern const Gfx flyguy_seg8_dl_080116D0[];\nextern const Gfx flyguy_seg8_dl_08011710[];\nextern const struct Animation *const flyguy_seg8_anims_08011A64[];\n\n// goomba\nextern const GeoLayout goomba_geo[];\nextern const Gfx goomba_seg8_dl_0801B2E8[];\nextern const Gfx goomba_seg8_dl_0801B560[];\nextern const Gfx goomba_seg8_dl_0801B5A0[];\nextern const Gfx goomba_seg8_dl_0801B5C8[];\nextern const Gfx goomba_seg8_dl_0801B5F0[];\nextern const Gfx goomba_seg8_dl_0801B658[];\nextern const Gfx goomba_seg8_dl_0801B690[];\nextern const Gfx goomba_seg8_dl_0801CE20[];\nextern const Gfx goomba_seg8_dl_0801CF78[];\nextern const Gfx goomba_seg8_dl_0801D0D0[];\nextern const Gfx goomba_seg8_dl_0801D360[];\nextern const Gfx goomba_seg8_dl_0801D760[];\nextern const struct Animation *const goomba_seg8_anims_0801DA4C[];\n\n// heart\nextern const GeoLayout heart_geo[];\nextern const Gfx heart_seg8_dl_0800DFE0[];\n\n// koopa_shell\nextern const GeoLayout koopa_shell_geo[];\nextern const GeoLayout koopa_shell2_geo[];\nextern const GeoLayout koopa_shell3_geo[];\nextern const Gfx koopa_shell_seg8_dl_08027108[];\nextern const Gfx koopa_shell_seg8_dl_08027170[];\nextern const Gfx koopa_shell_seg8_dl_08027258[];\nextern const Gfx koopa_shell_seg8_dl_080273C8[];\nextern const Gfx koopa_shell_seg8_dl_08027420[];\nextern const Gfx koopa_shell_seg8_dl_080288E0[];\nextern const Gfx koopa_shell_seg8_dl_08028978[];\nextern const Gfx koopa_shell_seg8_dl_08028A20[];\nextern const Gfx koopa_shell_seg8_dl_08028B78[];\n\n// metal_box\nextern const GeoLayout metal_box_geo[];\nextern const Gfx metal_box_seg8_dl_08024B18[];\nextern const Gfx metal_box_dl[];\nextern const Collision metal_box_seg8_collision_08024C28[];\n\n// purple_switch\nextern const GeoLayout purple_switch_geo[];\nextern const Gfx purple_switch_seg8_dl_0800C668[];\nextern const Gfx purple_switch_seg8_dl_0800C6E0[];\nextern const Gfx purple_switch_seg8_dl_0800C718[];\nextern const Collision purple_switch_seg8_collision_0800C7A8[];\n\n// test_platform\nextern const GeoLayout test_platform_geo[];\nextern const Gfx unknown_seg8_dl_08026260[];\nextern const Collision unknown_seg8_collision_080262F8[];\n\n#endif\n"
  },
  {
    "path": "actors/common0_geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"common1.h\"\n#include \"common0.h\"\n\n#include \"blue_coin_switch/geo.inc.c\"\n// Hmm, this is included earlier.\n#include \"test_platform/geo.inc.c\"\n#include \"amp/geo.inc.c\"\n#include \"cannon_lid/geo.inc.c\"\n#include \"cannon_base/geo.inc.c\"\n#include \"cannon_barrel/geo.inc.c\"\n#include \"chuckya/geo.inc.c\"\n#include \"purple_switch/geo.inc.c\"\n#include \"checkerboard_platform/geo.inc.c\"\n#include \"heart/geo.inc.c\"\n#include \"flyguy/geo.inc.c\"\n#include \"breakable_box/geo.inc.c\"\n#include \"bowling_ball/geo.inc.c\"\n#include \"exclamation_box/geo.inc.c\"\n#include \"goomba/geo.inc.c\"\n#include \"bobomb/geo.inc.c\"\n#include \"metal_box/geo.inc.c\"\n#include \"exclamation_box_outline/geo.inc.c\"\n#include \"koopa_shell/geo.inc.c\"\n"
  },
  {
    "path": "actors/common1.c",
    "content": "#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\n#include \"macros.h\"\n#include \"surface_terrains.h\"\n#include \"types.h\"\n#include \"make_const_nonconst.h\"\n\n#include \"mist/model.inc.c\"\nUNUSED static const u64 binid_0 = 0;\n\n#include \"explosion/model.inc.c\"\nUNUSED static const u64 binid_1 = 1;\n\n#include \"butterfly/model.inc.c\"\n#include \"butterfly/anims/data.inc.c\"\n#include \"butterfly/anims/table.inc.c\"\nUNUSED static const u64 binid_2 = 2;\n\n#include \"coin/model.inc.c\"\nUNUSED static const u64 binid_3 = 3;\n\n#include \"warp_pipe/model.inc.c\"\n#include \"warp_pipe/collision.inc.c\"\nUNUSED static const u64 binid_4 = 4;\n\n#include \"door/model.inc.c\"\n#include \"door/anims/data.inc.c\"\n#include \"door/anims/table.inc.c\"\nUNUSED static const u64 binid_5 = 5;\n\n#include \"bowser_key/model.inc.c\"\n#include \"bowser_key/anims/data.inc.c\"\n#include \"bowser_key/anims/table.inc.c\"\nUNUSED static const u64 binid_6 = 6;\n\n#include \"flame/model.inc.c\"\nUNUSED static const u64 binid_7 = 7;\n\n#include \"blue_fish/model.inc.c\"\n#include \"blue_fish/anims/data.inc.c\"\n#include \"blue_fish/anims/table.inc.c\"\nUNUSED static const u64 binid_8 = 8;\n\n#include \"pebble/model.inc.c\"\nUNUSED static const u64 binid_9 = 9;\n\n#include \"leaves/model.inc.c\"\nUNUSED static const u64 binid_10 = 10;\n\n// this is still weird...\n#include \"warp_collision/collision.inc.c\"\nUNUSED static const u64 binid_11 = 11;\n\n#include \"mario_cap/model.inc.c\"\nUNUSED static const u64 binid_12 = 12;\n\n#include \"power_meter/model.inc.c\"\nUNUSED static const u64 binid_13 = 13;\n\nUNUSED static const u64 binid_14 = 14;\n\n#include \"mushroom_1up/model.inc.c\"\nUNUSED static const u64 binid_15 = 15;\n\n#include \"star/model.inc.c\"\nUNUSED static const u64 binid_16 = 16;\n\n#include \"sand/model.inc.c\"\nUNUSED static const u64 binid_17 = 17;\n\n#include \"dirt/model.inc.c\"\nUNUSED static const u64 binid_18 = 18;\n\n#include \"transparent_star/model.inc.c\"\nUNUSED static const u64 binid_19 = 19;\n\n#include \"white_particle/model.inc.c\"\nUNUSED static const u64 binid_20 = 20;\n\n#include \"wooden_signpost/model.inc.c\"\n#include \"wooden_signpost/collision.inc.c\"\nUNUSED static const u64 binid_21 = 21;\n\n#include \"tree/model.inc.c\"\nUNUSED static const u64 binid_22 = 22;\n"
  },
  {
    "path": "actors/common1.h",
    "content": "#ifndef COMMON1_H\n#define COMMON1_H\n\n#include \"types.h\"\n\n// blue_fish\nextern const GeoLayout fish_shadow_geo[];\nextern const GeoLayout fish_geo[];\nextern const Gfx blue_fish_seg3_dl_0301BEC0[];\nextern const Gfx blue_fish_seg3_dl_0301BFB8[];\nextern const Gfx blue_fish_seg3_dl_0301C0A8[];\nextern const Gfx blue_fish_seg3_dl_0301C150[];\nextern const struct Animation *const blue_fish_seg3_anims_0301C2B0[];\n\n// bowser_key\nextern const GeoLayout bowser_key_geo[];\nextern const GeoLayout bowser_key_cutscene_geo[];\nextern const Gfx bowser_key_dl[];\nextern const struct Animation *const bowser_key_seg3_anims_list[];\n\n// butterfly\nextern const GeoLayout butterfly_geo[];\nextern const Gfx butterfly_seg3_dl_03005408[];\nextern const Gfx butterfly_seg3_dl_030054A0[];\nextern const struct Animation *const butterfly_seg3_anims_030056B0[];\n\n// coin\nextern const GeoLayout yellow_coin_geo[];\nextern const GeoLayout yellow_coin_no_shadow_geo[];\nextern const GeoLayout blue_coin_geo[];\nextern const GeoLayout blue_coin_no_shadow_geo[];\nextern const GeoLayout red_coin_geo[];\nextern const GeoLayout red_coin_no_shadow_geo[];\nextern const Gfx coin_seg3_dl_03007780[];\nextern const Gfx coin_seg3_dl_030077D0[];\nextern const Gfx coin_seg3_dl_03007800[];\nextern const Gfx coin_seg3_dl_03007828[];\nextern const Gfx coin_seg3_dl_03007850[];\nextern const Gfx coin_seg3_dl_03007878[];\nextern const Gfx coin_seg3_dl_030078A0[];\nextern const Gfx coin_seg3_dl_030078C8[];\nextern const Gfx coin_seg3_dl_030078F0[];\nextern const Gfx coin_seg3_dl_03007918[];\nextern const Gfx coin_seg3_dl_03007940[];\nextern const Gfx coin_seg3_dl_03007968[];\nextern const Gfx coin_seg3_dl_03007990[];\nextern const Gfx coin_seg3_dl_030079B8[];\n\n// dirt\nextern const GeoLayout dirt_animation_geo[];\nextern const GeoLayout cartoon_star_geo[];\nextern const Gfx dirt_seg3_dl_0302BFF8[];\nextern const Gfx dirt_seg3_dl_0302C028[];\nextern const Gfx dirt_seg3_dl_0302C238[];\nextern const Gfx dirt_seg3_dl_0302C298[];\nextern const Gfx dirt_seg3_dl_0302C2B8[];\nextern const Gfx dirt_seg3_dl_0302C2D8[];\nextern const Gfx dirt_seg3_dl_0302C2F8[];\nextern const Gfx dirt_seg3_dl_0302C318[];\nextern const Gfx dirt_seg3_dl_0302C378[];\nextern const Gfx dirt_seg3_dl_0302C3B0[];\nextern const Gfx dirt_seg3_dl_0302C3E8[];\nextern const Gfx dirt_seg3_dl_0302C420[];\nextern const Gfx dirt_seg3_dl_0302C458[];\n\n// door\nextern const GeoLayout castle_door_geo[];\nextern const GeoLayout cabin_door_geo[];\nextern const GeoLayout wooden_door_geo[];\nextern const GeoLayout wooden_door2_geo[];\nextern const GeoLayout metal_door_geo[];\nextern const GeoLayout hazy_maze_door_geo[];\nextern const GeoLayout haunted_door_geo[];\nextern const GeoLayout castle_door_0_star_geo[];\nextern const GeoLayout castle_door_1_star_geo[];\nextern const GeoLayout castle_door_3_stars_geo[];\nextern const GeoLayout key_door_geo[];\nextern const Gfx door_seg3_dl_03013C10[];\nextern const Gfx door_seg3_dl_03013CC8[];\nextern const Gfx door_seg3_dl_03013D78[];\nextern const Gfx door_seg3_dl_03013E28[];\nextern const Gfx door_seg3_dl_03013EA8[];\nextern const Gfx door_seg3_dl_03014020[];\nextern const Gfx door_seg3_dl_03014100[];\nextern const Gfx door_seg3_dl_03014128[];\nextern const Gfx door_seg3_dl_030141C0[];\nextern const Gfx door_seg3_dl_03014218[];\nextern const Gfx door_seg3_dl_03014250[];\nextern const Gfx door_seg3_dl_03014280[];\nextern const Gfx door_seg3_dl_030142B0[];\nextern const Gfx door_seg3_dl_030142E0[];\nextern const Gfx door_seg3_dl_03014310[];\nextern const Gfx door_seg3_dl_03014340[];\nextern const Gfx door_seg3_dl_03014470[];\nextern const Gfx door_seg3_dl_030144E0[];\nextern const Gfx door_seg3_dl_03014528[];\nextern const Gfx door_seg3_dl_03014540[];\nextern const Gfx door_seg3_dl_03014888[];\nextern const Gfx door_seg3_dl_030149C0[];\nextern const Gfx door_seg3_dl_03014A20[];\nextern const Gfx door_seg3_dl_03014A50[];\nextern const Gfx door_seg3_dl_03014A80[];\nextern const Gfx door_seg3_dl_03014B30[];\nextern const Gfx door_seg3_dl_03014BE0[];\nextern const Gfx door_seg3_dl_03014C90[];\nextern const Gfx door_seg3_dl_03014D40[];\nextern const Gfx door_seg3_dl_03014EF0[];\nextern const Gfx door_seg3_dl_03014F30[];\nextern const Gfx door_seg3_dl_03014F68[];\nextern const Gfx door_seg3_dl_03014F98[];\nextern const Gfx door_seg3_dl_03015008[];\nextern const Gfx door_seg3_dl_03015078[];\nextern const Gfx door_seg3_dl_030150E8[];\nextern const Gfx door_seg3_dl_03015158[];\nextern const struct Animation *const door_seg3_anims_030156C0[];\n\n// explosion\nextern const GeoLayout explosion_geo[];\nextern const Gfx explosion_seg3_dl_03004208[];\nextern const Gfx explosion_seg3_dl_03004298[];\nextern const Gfx explosion_seg3_dl_030042B0[];\nextern const Gfx explosion_seg3_dl_030042C8[];\nextern const Gfx explosion_seg3_dl_030042E0[];\nextern const Gfx explosion_seg3_dl_030042F8[];\nextern const Gfx explosion_seg3_dl_03004310[];\nextern const Gfx explosion_seg3_dl_03004328[];\n\n// flame\nextern const GeoLayout red_flame_shadow_geo[];\nextern const GeoLayout red_flame_geo[];\nextern const GeoLayout blue_flame_geo[];\nextern const Gfx flame_seg3_dl_0301B320[];\nextern const Gfx flame_seg3_dl_0301B3B0[];\nextern const Gfx flame_seg3_dl_0301B3C8[];\nextern const Gfx flame_seg3_dl_0301B3E0[];\nextern const Gfx flame_seg3_dl_0301B3F8[];\nextern const Gfx flame_seg3_dl_0301B410[];\nextern const Gfx flame_seg3_dl_0301B428[];\nextern const Gfx flame_seg3_dl_0301B440[];\nextern const Gfx flame_seg3_dl_0301B458[];\nextern const Gfx flame_seg3_dl_0301B470[];\nextern const Gfx flame_seg3_dl_0301B500[];\nextern const Gfx flame_seg3_dl_0301B518[];\nextern const Gfx flame_seg3_dl_0301B530[];\nextern const Gfx flame_seg3_dl_0301B548[];\nextern const Gfx flame_seg3_dl_0301B560[];\nextern const Gfx flame_seg3_dl_0301B578[];\nextern const Gfx flame_seg3_dl_0301B590[];\nextern const Gfx flame_seg3_dl_0301B5A8[];\n\n// leaves\nextern const GeoLayout leaves_geo[];\nextern const Gfx leaves_seg3_dl_0301CDE0[];\n\n// mario_cap\nextern const GeoLayout marios_cap_geo[];\nextern const GeoLayout marios_metal_cap_geo[];\nextern const GeoLayout marios_wing_cap_geo[];\nextern const GeoLayout marios_winged_metal_cap_geo[];\nextern const Gfx mario_cap_seg3_dl_03022B30[];\nextern const Gfx mario_cap_seg3_dl_03022B68[];\nextern const Gfx mario_cap_seg3_dl_03022CC8[];\nextern const Gfx mario_cap_seg3_dl_03022D10[];\nextern const Gfx mario_cap_seg3_dl_03022E78[];\nextern const Gfx mario_cap_seg3_dl_03022EA8[];\nextern const Gfx mario_cap_seg3_dl_03022ED8[];\nextern const Gfx mario_cap_seg3_dl_03022F20[];\nextern const Gfx mario_cap_seg3_dl_03022F48[];\nextern const Gfx mario_cap_seg3_dl_03022FF8[];\nextern const Gfx mario_cap_seg3_dl_030230B0[];\nextern const Gfx mario_cap_seg3_dl_03023108[];\nextern const Gfx mario_cap_seg3_dl_03023160[];\nextern const Gfx mario_cap_seg3_dl_03023298[];\n\n// mist\nextern const GeoLayout mist_geo[];\nextern const GeoLayout white_puff_geo[];\nextern const Gfx mist_seg3_dl_03000880[];\nextern const Gfx mist_seg3_dl_03000920[];\n\n// mushroom_1up\nextern const GeoLayout mushroom_1up_geo[];\nextern const Gfx mushroom_1up_seg3_dl_0302A628[];\nextern const Gfx mushroom_1up_seg3_dl_0302A660[];\n\n// number\nextern const GeoLayout number_geo[];\n\n// pebble\nextern const Gfx pebble_seg3_dl_0301CB00[];\n\n// power_meter\nextern const u8 *const power_meter_health_segments_lut[];\nextern const Gfx dl_power_meter_base[];\nextern const Gfx dl_power_meter_health_segments_begin[];\nextern const Gfx dl_power_meter_health_segments_end[];\n\n// sand\nextern const Gfx sand_seg3_dl_0302BCD0[];\n\n// star\nextern const GeoLayout star_geo[];\nextern const Gfx star_seg3_dl_0302B7B0[];\nextern const Gfx star_seg3_dl_0302B870[];\nextern const Gfx star_seg3_dl_0302B9C0[];\nextern const Gfx star_seg3_dl_0302BA18[];\n\n// transparent_star\nextern const GeoLayout transparent_star_geo[];\nextern const Gfx transparent_star_seg3_dl_0302C560[];\nextern const Gfx transparent_star_seg3_dl_0302C620[];\n\n// tree\nextern const GeoLayout bubbly_tree_geo[];\nextern const GeoLayout spiky_tree_geo[];\nextern const GeoLayout snow_tree_geo[];\nextern const GeoLayout spiky_tree1_geo[];\nextern const GeoLayout palm_tree_geo[];\nextern const Gfx tree_seg3_dl_0302FE88[];\nextern const Gfx tree_seg3_dl_0302FEB8[];\nextern const Gfx tree_seg3_dl_0302FEE8[];\nextern const Gfx tree_seg3_dl_03030FA0[];\nextern const Gfx tree_seg3_dl_03032088[];\nextern const Gfx tree_seg3_dl_03032170[];\nextern const Gfx tree_seg3_dl_03033258[];\n\n// warp_collision\nextern const Collision door_seg3_collision_0301CE78[];\nextern const Collision lll_hexagonal_mesh_seg3_collision_0301CECC[];\n\n// warp_pipe\nextern const GeoLayout warp_pipe_geo[];\nextern const Gfx warp_pipe_seg3_dl_03008E40[];\nextern const Gfx warp_pipe_seg3_dl_03008F98[];\nextern const Gfx warp_pipe_seg3_dl_03009968[];\nextern const Gfx warp_pipe_seg3_dl_03009A20[];\nextern const Gfx warp_pipe_seg3_dl_03009A50[];\nextern const Collision warp_pipe_seg3_collision_03009AC8[];\n\n// white_particle\nextern const GeoLayout white_particle_geo[];\nextern const Gfx white_particle_dl[];\n\n// wooden_signpost\nextern const GeoLayout wooden_signpost_geo[];\nextern const Gfx wooden_signpost_seg3_dl_0302D9C8[];\nextern const Gfx wooden_signpost_seg3_dl_0302DA48[];\nextern const Gfx wooden_signpost_seg3_dl_0302DC40[];\nextern const Gfx wooden_signpost_seg3_dl_0302DCD0[];\nextern const Gfx wooden_signpost_seg3_dl_0302DD08[];\nextern const Collision wooden_signpost_seg3_collision_0302DD80[];\n\n#endif\n"
  },
  {
    "path": "actors/common1_geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"common1.h\"\n\n#include \"mist/geo.inc.c\"\n#include \"explosion/geo.inc.c\"\n#include \"butterfly/geo.inc.c\"\n#include \"coin/geo.inc.c\"\n#include \"warp_pipe/geo.inc.c\"\n#include \"door/geo.inc.c\"\n#include \"bowser_key/geo.inc.c\"\n#include \"flame/geo.inc.c\"\n#include \"blue_fish/geo.inc.c\"\n#include \"leaves/geo.inc.c\"\n#include \"mario_cap/geo.inc.c\"\n#include \"number/geo.inc.c\"\n#include \"mushroom_1up/geo.inc.c\"\n#include \"star/geo.inc.c\"\n#include \"dirt/geo.inc.c\"\n#include \"transparent_star/geo.inc.c\"\n#include \"white_particle/geo.inc.c\"\n#include \"wooden_signpost/geo.inc.c\"\n#include \"tree/geo.inc.c\"\n"
  },
  {
    "path": "actors/cyan_fish/anims/anim_0600E24C.inc.c",
    "content": "// 0x0600E098\nstatic const s16 cyan_fish_seg6_animvalue_0600E098[] = {\n    0x0000, 0xFFFB, 0xFFFD, 0xFFFF, 0x0001, 0x0003, 0x0005, 0x0007,\n    0x0009, 0x000A, 0x000B, 0x000B, 0x000B, 0x000A, 0x0009, 0x0007,\n    0x0005, 0x0003, 0x0001, 0xFFFF, 0xFFFD, 0xFFFB, 0xFFFA, 0xFFF8,\n    0xFFF7, 0xFFF7, 0xFFF7, 0xFFF8, 0xFFF9, 0xFFFB, 0xFFFD, 0x3FFF,\n    0x017A, 0x01C2, 0x01F0, 0x0201, 0x01F2, 0x01C9, 0x018A, 0x0139,\n    0x00D9, 0x0070, 0x0000, 0xFF8F, 0xFF20, 0xFEB6, 0xFE56, 0xFE05,\n    0xFDC6, 0xFD9D, 0xFD8F, 0xFD9D, 0xFDC6, 0xFE05, 0xFE56, 0xFEB6,\n    0xFF20, 0xFF8F, 0x0000, 0x0070, 0x00D9, 0x0139, 0xFC36, 0xFB93,\n    0xFB29, 0xFB03, 0xFB24, 0xFB82, 0xFC12, 0xFCCC, 0xFDA6, 0xFE97,\n    0xFF96, 0x0099, 0x0199, 0x028A, 0x0364, 0x041E, 0x04AE, 0x050C,\n    0x052D, 0x050C, 0x04AE, 0x041E, 0x0364, 0x028A, 0x0199, 0x0099,\n    0xFF96, 0xFE97, 0xFDA6, 0xFCCC, 0x0B97, 0x0BA2, 0x0BAA, 0x0BAC,\n    0x0BAA, 0x0BA4, 0x0B99, 0x0B8D, 0x0B7D, 0x0B6C, 0x0B5B, 0x0B49,\n    0x0B37, 0x0B26, 0x0B17, 0x0B0A, 0x0B00, 0x0AF9, 0x0AF7, 0x0AF9,\n    0x0B00, 0x0B0A, 0x0B17, 0x0B26, 0x0B37, 0x0B49, 0x0B5B, 0x0B6C,\n    0x0B7D, 0x0B8D, 0x00A8, 0x02C3, 0x04CD, 0x06B5, 0x086B, 0x09DD,\n    0x0AFA, 0x0BB1, 0x0BF2, 0x0B9E, 0x0AB2, 0x0948, 0x0778, 0x055D,\n    0x030F, 0x00A8, 0xFE42, 0xFBF4, 0xF9D9, 0xF809, 0xF69F, 0xF5B3,\n    0xF55F, 0xF5A9, 0xF678, 0xF7B8, 0xF955, 0xFB39, 0xFD52, 0xFF88,\n    0x04B8, 0x0492, 0x0429, 0x0387, 0x02B8, 0x01C7, 0x00C0, 0xFFAE,\n    0xFE9B, 0xFD94, 0xFCA3, 0xFBD4, 0xFB32, 0xFAC9, 0xFAA3, 0xFAC4,\n    0xFB21, 0xFBB0, 0xFC68, 0xFD40, 0xFE30, 0xFF2D, 0x002E, 0x012B,\n    0x021A, 0x02F3, 0x03AB, 0x043A, 0x0497, 0x04B8,\n};\n\n// 0x0600E204\nstatic const u16 cyan_fish_seg6_animindex_0600E204[] = {\n    0x001E, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x001F, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x001E, 0x0098, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x001E, 0x007A, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x001E, 0x0020, 0x001E, 0x003E, 0x001E, 0x005C,\n};\n\n// 0x0600E24C\nstatic const struct Animation cyan_fish_seg6_anim_0600E24C = {\n    0,\n    0,\n    0,\n    0,\n    0x1E,\n    ANIMINDEX_NUMPARTS(cyan_fish_seg6_animindex_0600E204),\n    cyan_fish_seg6_animvalue_0600E098,\n    cyan_fish_seg6_animindex_0600E204,\n    0,\n};\n"
  },
  {
    "path": "actors/cyan_fish/anims/data.inc.c",
    "content": "#include \"anim_0600E24C.inc.c\"\n"
  },
  {
    "path": "actors/cyan_fish/anims/table.inc.c",
    "content": "// 0x0600E264\nconst struct Animation *const cyan_fish_seg6_anims_0600E264[] = {\n    &cyan_fish_seg6_anim_0600E24C,\n    NULL,\n    NULL,\n};\n"
  },
  {
    "path": "actors/cyan_fish/geo.inc.c",
    "content": "// 0x0D000324\nconst GeoLayout cyan_fish_geo[] = {\n    GEO_SCALE(0x00, 16384),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, cyan_fish_seg6_dl_0600DDD8),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 160, 0, 0, cyan_fish_seg6_dl_0600E038),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 32, 112, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, cyan_fish_seg6_dl_0600DED8),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/cyan_fish/model.inc.c",
    "content": "// Cyan Fish\n\n// ???\nUNUSED static const u64 cyan_fish_unused_1 = 0;\n\n// 0x0600D468\nALIGNED8 static const Texture cyan_fish_seg6_texture_0600D468[] = {\n#include \"actors/cyan_fish/cyan_fish.rgba16.inc.c\"\n};\n\nstatic const Lights1 cyan_fish_seg6_lights_0600DC68 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0600DC80\nstatic const Vtx cyan_fish_seg6_vertex_0600DC80[] = {\n    {{{   -95,     32,      0}, 0, {    32,    436}, {0xa9, 0x5b, 0xff, 0xff}}},\n    {{{   -39,     20,     28}, 0, {   184,    480}, {0xf4, 0x0a, 0x7d, 0xff}}},\n    {{{    32,    112,      0}, 0, {   376,    144}, {0xe2, 0x7b, 0xff, 0xff}}},\n    {{{   -39,     20,    -27}, 0, {   184,    478}, {0xf5, 0x09, 0x82, 0xff}}},\n    {{{  -115,      0,      0}, 0, {   -22,    552}, {0x95, 0xbd, 0x00, 0xff}}},\n    {{{    28,    -79,      8}, 0, {   366,    844}, {0xd7, 0xb9, 0x60, 0xff}}},\n    {{{   161,     14,      0}, 0, {   724,    500}, {0x69, 0x46, 0x00, 0xff}}},\n    {{{   161,    -13,      0}, 0, {   724,    604}, {0x69, 0xba, 0x00, 0xff}}},\n    {{{    28,    -79,     -7}, 0, {   366,    844}, {0xd7, 0xba, 0xa0, 0xff}}},\n    {{{    56,   -111,      0}, 0, {   442,    960}, {0xc2, 0x92, 0x00, 0xff}}},\n};\n\n// 0x0600DD20 - 0x0600DDD8\nconst Gfx cyan_fish_seg6_dl_0600DD20[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cyan_fish_seg6_texture_0600D468),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&cyan_fish_seg6_lights_0600DC68.l, 1),\n    gsSPLight(&cyan_fish_seg6_lights_0600DC68.a, 2),\n    gsSPVertex(cyan_fish_seg6_vertex_0600DC80, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  4,  0,  3, 0x0),\n    gsSP2Triangles( 4,  5,  1, 0x0,  1,  6,  2, 0x0),\n    gsSP2Triangles( 1,  5,  7, 0x0,  1,  7,  6, 0x0),\n    gsSP2Triangles( 6,  3,  2, 0x0,  4,  3,  8, 0x0),\n    gsSP2Triangles( 7,  8,  3, 0x0,  6,  7,  3, 0x0),\n    gsSP2Triangles( 5,  9,  7, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles( 4,  8,  5, 0x0,  5,  8,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600DDD8 - 0x0600DE38\nconst Gfx cyan_fish_seg6_dl_0600DDD8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(cyan_fish_seg6_dl_0600DD20),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600DE38\nstatic const Lights1 cyan_fish_seg6_lights_0600DE38 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0600DE50\nstatic const Vtx cyan_fish_seg6_vertex_0600DE50[] = {\n    {{{     9,    -26,      0}, 0, {   420,    230}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    57,    -48,      0}, 0, {   560,    260}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   120,      0,      0}, 0, {   688,     26}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,      0,      0}, 0, {   376,    144}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0600DE90 - 0x0600DED8\nconst Gfx cyan_fish_seg6_dl_0600DE90[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cyan_fish_seg6_texture_0600D468),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&cyan_fish_seg6_lights_0600DE38.l, 1),\n    gsSPLight(&cyan_fish_seg6_lights_0600DE38.a, 2),\n    gsSPVertex(cyan_fish_seg6_vertex_0600DE50, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600DED8 - 0x0600DF48\nconst Gfx cyan_fish_seg6_dl_0600DED8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(cyan_fish_seg6_dl_0600DE90),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600DF48\nstatic const Lights1 cyan_fish_seg6_lights_0600DF48 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0600DF60\nstatic const Vtx cyan_fish_seg6_vertex_0600DF60[] = {\n    {{{    55,    -37,      6}, 0, {   868,    690}, {0x4e, 0xae, 0x37, 0xff}}},\n    {{{    55,    -37,     -5}, 0, {   868,    690}, {0x15, 0xc0, 0x95, 0xff}}},\n    {{{    88,     64,     -3}, 0, {   958,    318}, {0x64, 0x15, 0xb6, 0xff}}},\n    {{{     0,    -13,      0}, 0, {   718,    604}, {0xca, 0xb5, 0x56, 0xff}}},\n    {{{     0,     14,      0}, 0, {   718,    500}, {0xc7, 0x4c, 0xad, 0xff}}},\n    {{{    88,     64,      4}, 0, {   958,    318}, {0x13, 0x24, 0x78, 0xff}}},\n};\n\n// 0x0600DFC0 - 0x0600E038\nconst Gfx cyan_fish_seg6_dl_0600DFC0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cyan_fish_seg6_texture_0600D468),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&cyan_fish_seg6_lights_0600DF48.l, 1),\n    gsSPLight(&cyan_fish_seg6_lights_0600DF48.a, 2),\n    gsSPVertex(cyan_fish_seg6_vertex_0600DF60, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 3,  5,  4, 0x0,  3,  0,  5, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  0,  2,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600E038 - 0x0600E098\nconst Gfx cyan_fish_seg6_dl_0600E038[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(cyan_fish_seg6_dl_0600DFC0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/dirt/geo.inc.c",
    "content": "// 0x16000ED4\nconst GeoLayout dirt_animation_geo[] = {\n    GEO_CULLING_RADIUS(300),\n    GEO_OPEN_NODE(),\n        GEO_SWITCH_CASE(6, geo_switch_anim_state),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, dirt_seg3_dl_0302C378),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, dirt_seg3_dl_0302C3B0),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, dirt_seg3_dl_0302C3E8),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, dirt_seg3_dl_0302C028),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, dirt_seg3_dl_0302C420),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, dirt_seg3_dl_0302C458),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// This is probably wrongly named according to the Bin IDs...\n// 0x16000F24\nconst GeoLayout cartoon_star_geo[] = {\n    GEO_CULLING_RADIUS(300),\n    GEO_OPEN_NODE(),\n        GEO_SWITCH_CASE(5, geo_switch_anim_state),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, dirt_seg3_dl_0302C298),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, dirt_seg3_dl_0302C2B8),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, dirt_seg3_dl_0302C2D8),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, dirt_seg3_dl_0302C2F8),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, dirt_seg3_dl_0302C318),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/dirt/model.inc.c",
    "content": "// Dirt\n\n// 0x0302BD68\nstatic const Lights1 dirt_seg3_lights_0302BD68 = gdSPDefLights1(\n    0x3f, 0x19, 0x19,\n    0xff, 0x64, 0x64, 0x28, 0x28, 0x28\n);\n\n// 0x0302BD80\nstatic const Lights1 dirt_seg3_lights_0302BD80 = gdSPDefLights1(\n    0x19, 0x3f, 0x19,\n    0x64, 0xff, 0x64, 0x28, 0x28, 0x28\n);\n\n// 0x0302BD98\nstatic const Lights1 dirt_seg3_lights_0302BD98 = gdSPDefLights1(\n    0x19, 0x19, 0x3f,\n    0x64, 0x64, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0302BDB0\nstatic const Lights1 dirt_seg3_lights_0302BDB0 = gdSPDefLights1(\n    0x3f, 0x3f, 0x19,\n    0xff, 0xff, 0x64, 0x28, 0x28, 0x28\n);\n\n// 0x0302BDC8\nstatic const Vtx dirt_seg3_vertex_0302BDC8[] = {\n    {{{  -101,    -60,      0}, 0, {  -130,    467}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,    -60,      0}, 0, {   599,    467}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,     92,      0}, 0, {   234,    -81}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0302BDF8\nALIGNED8 static const Texture dirt_seg3_texture_0302BDF8[] = {\n#include \"actors/dirt/dirt_particle.rgba16.inc.c\"\n};\n\n// 0x0302BFF8 - 0x0302C028\nconst Gfx dirt_seg3_dl_0302BFF8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dirt_seg3_texture_0302BDF8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 16 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(dirt_seg3_vertex_0302BDC8, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0302C028 - 0x0302C098\nconst Gfx dirt_seg3_dl_0302C028[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 4, G_TX_NOLOD, G_TX_CLAMP, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (16 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(dirt_seg3_dl_0302BFF8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x0302C098\nstatic const Vtx dirt_seg3_vertex_0302C098[] = {\n    {{{   -10,      0,     10}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{    10,      0,     10}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{     0,      0,    -10}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n};\n\n// 0x0302C0C8\nstatic const Vtx dirt_seg3_vertex_0302C0C8[] = {\n    {{{   -10,     10,      0}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{    10,     10,      0}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{     0,    -10,      0}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n};\n\n// 0x0302C0F8\nstatic const Vtx dirt_seg3_vertex_0302C0F8[] = {\n    {{{     0,     -8,      0}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x00}}},\n    {{{   -32,     80,      0}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x00}}},\n    {{{    32,     80,      0}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x00}}},\n    {{{   -52,     28,      0}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -116,     80,      0}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -84,    -52,      0}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    52,     28,      0}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    84,    -52,      0}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   116,     80,      0}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,    160,      0}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0302C198\nstatic const Vtx dirt_seg3_vertex_0302C198[] = {\n    {{{     0,     -8,      0}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{   -32,     80,      0}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{    32,     80,      0}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{   -52,     28,      0}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{  -116,     80,      0}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{   -84,    -52,      0}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{    52,     28,      0}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{    84,    -52,      0}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{   116,     80,      0}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{     0,    160,      0}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n};\n\n// 0x0302C238 - 0x0302C298\nconst Gfx dirt_seg3_dl_0302C238[] = {\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsSPVertex(dirt_seg3_vertex_0302C0F8, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 0,  5,  3, 0x0,  6,  7,  0, 0x0),\n    gsSP2Triangles( 2,  8,  6, 0x0,  1,  9,  2, 0x0),\n    gsSP2Triangles( 0,  3,  1, 0x0,  2,  6,  0, 0x0),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x0302C298 - 0x0302C2B8\nconst Gfx dirt_seg3_dl_0302C298[] = {\n    gsSPLight(&dirt_seg3_lights_0302BD68.l, 1),\n    gsSPLight(&dirt_seg3_lights_0302BD68.a, 2),\n    gsSPDisplayList(dirt_seg3_dl_0302C238),\n    gsSPEndDisplayList(),\n};\n\n// 0x0302C2B8 - 0x0302C2D8\nconst Gfx dirt_seg3_dl_0302C2B8[] = {\n    gsSPLight(&dirt_seg3_lights_0302BD80.l, 1),\n    gsSPLight(&dirt_seg3_lights_0302BD80.a, 2),\n    gsSPDisplayList(dirt_seg3_dl_0302C238),\n    gsSPEndDisplayList(),\n};\n\n// 0x0302C2D8 - 0x0302C2F8\nconst Gfx dirt_seg3_dl_0302C2D8[] = {\n    gsSPLight(&dirt_seg3_lights_0302BD98.l, 1),\n    gsSPLight(&dirt_seg3_lights_0302BD98.a, 2),\n    gsSPDisplayList(dirt_seg3_dl_0302C238),\n    gsSPEndDisplayList(),\n};\n\n// 0x0302C2F8 - 0x0302C318\nconst Gfx dirt_seg3_dl_0302C2F8[] = {\n    gsSPLight(&dirt_seg3_lights_0302BDB0.l, 1),\n    gsSPLight(&dirt_seg3_lights_0302BDB0.a, 2),\n    gsSPDisplayList(dirt_seg3_dl_0302C238),\n    gsSPEndDisplayList(),\n};\n\n// 0x0302C318 - 0x0302C378\nconst Gfx dirt_seg3_dl_0302C318[] = {\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPVertex(dirt_seg3_vertex_0302C198, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 0,  5,  3, 0x0,  6,  7,  0, 0x0),\n    gsSP2Triangles( 2,  8,  6, 0x0,  1,  9,  2, 0x0),\n    gsSP2Triangles( 0,  3,  1, 0x0,  2,  6,  0, 0x0),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x0302C378 - 0x0302C3B0\nconst Gfx dirt_seg3_dl_0302C378[] = {\n    gsSPLight(&dirt_seg3_lights_0302BD68.l, 1),\n    gsSPLight(&dirt_seg3_lights_0302BD68.a, 2),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsSPVertex(dirt_seg3_vertex_0302C098, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x0302C3B0 - 0x0302C3E8\nconst Gfx dirt_seg3_dl_0302C3B0[] = {\n    gsSPLight(&dirt_seg3_lights_0302BD80.l, 1),\n    gsSPLight(&dirt_seg3_lights_0302BD80.a, 2),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsSPVertex(dirt_seg3_vertex_0302C098, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x0302C3E8 - 0x0302C420\nconst Gfx dirt_seg3_dl_0302C3E8[] = {\n    gsSPLight(&dirt_seg3_lights_0302BD98.l, 1),\n    gsSPLight(&dirt_seg3_lights_0302BD98.a, 2),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsSPVertex(dirt_seg3_vertex_0302C098, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x0302C420 - 0x0302C458\nconst Gfx dirt_seg3_dl_0302C420[] = {\n    gsSPLight(&dirt_seg3_lights_0302BDB0.l, 1),\n    gsSPLight(&dirt_seg3_lights_0302BDB0.a, 2),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsSPVertex(dirt_seg3_vertex_0302C098, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x0302C458 - 0x0302C480\nconst Gfx dirt_seg3_dl_0302C458[] = {\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPVertex(dirt_seg3_vertex_0302C0C8, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/door/anims/anim_03015208.inc.c",
    "content": "// 0x030151C8\nstatic const s16 door_seg3_animvalue_030151C8[] = {\n    0x0000, 0xFED4,\n};\n\n// 0x030151CC\nstatic const u16 door_seg3_animindex_030151CC[] = {\n    0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x03015208\nstatic const struct Animation door_seg3_anim_03015208 = {\n    0,\n    0,\n    0,\n    0,\n    0x50,\n    ANIMINDEX_NUMPARTS(door_seg3_animindex_030151CC),\n    door_seg3_animvalue_030151C8,\n    door_seg3_animindex_030151CC,\n    0,\n};\n"
  },
  {
    "path": "actors/door/anims/anim_03015440.inc.c",
    "content": "// 0x03015220\nstatic const s16 door_seg3_animvalue_03015220[] = {\n    0x0000, 0xFED4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0002, 0x0006, 0x0005,\n    0x0003, 0x0001, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFE, 0xFFFF,\n    0x0000, 0x0002, 0x0007, 0x000D, 0x0014, 0x001B, 0x0023, 0x002B,\n    0x0034, 0x003D, 0x0046, 0x004F, 0x0058, 0x0061, 0x006A, 0x0073,\n    0x007C, 0x0085, 0x008D, 0x0095, 0x009D, 0x00A4, 0x00AB, 0x00B1,\n    0x00B6, 0x00BB, 0x00BF, 0x00C3, 0x00C7, 0x00CA, 0x00CD, 0x00CF,\n    0x00D1, 0x00D2, 0x00D3, 0x00D3, 0x00D3, 0x00D1, 0x00D0, 0x00CD,\n    0x00CA, 0x00C6, 0x00C1, 0x00BB, 0x00B3, 0x00A8, 0x009A, 0x008A,\n    0x0078, 0x0066, 0x0053, 0x0040, 0x002E, 0x001C, 0x000D, 0x0000,\n    0xFFF9, 0xFFF7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0068, 0x0285, 0x0803,\n    0x0DAB, 0x0FB3, 0x1184, 0x1529, 0x194B, 0x1DAB, 0x220E, 0x2635,\n    0x29E2, 0x2CD9, 0x2EDA, 0x3048, 0x31AC, 0x3305, 0x3451, 0x3591,\n    0x36C2, 0x37E3, 0x38F4, 0x39F4, 0x3AE1, 0x3BBA, 0x3C7F, 0x3D2E,\n    0x3DC6, 0x3E45, 0x3EAC, 0x3EF9, 0x3F2B, 0x3F40, 0x3F38, 0x3F12,\n    0x3ECC, 0x3E66, 0x3E66, 0x3E66, 0x3E66, 0x3E66, 0x3E66, 0x3E66,\n    0x3E66, 0x3E66, 0x3E66, 0x3E66, 0x3E66, 0x3E66, 0x3E66, 0x3E66,\n    0x3E66, 0x3E66, 0x3E66, 0x3E66, 0x3CAC, 0x3AF1, 0x3937, 0x377D,\n    0x35C2, 0x3408, 0x324E, 0x3093, 0x246E, 0x1849, 0x0C24, 0x0000,\n    0x012E, 0x01EB, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0002, 0x0006, 0x0005,\n    0x0003, 0x0003, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,\n    0x0007, 0x000A, 0x000F, 0x0015, 0x001C, 0x0023, 0x002B, 0x0033,\n    0x003C, 0x0044, 0x004D, 0x0056, 0x005F, 0x0068, 0x0071, 0x007A,\n    0x0083, 0x008B, 0x0094, 0x009C, 0x00A3, 0x00AA, 0x00B1, 0x00B7,\n    0x00BC, 0x00C1, 0x00C5, 0x00C9, 0x00CC, 0x00D0, 0x00D3, 0x00D5,\n    0x00D7, 0x00D8, 0x00D9, 0x00D9, 0x00D9, 0x00D8, 0x00D6, 0x00D3,\n    0x00D0, 0x00CC, 0x00C7, 0x00C1, 0x00B9, 0x00AD, 0x009F, 0x008E,\n    0x007C, 0x0069, 0x0056, 0x0042, 0x002F, 0x001E, 0x000D, 0x0000,\n    0xFFF8, 0xFFF6,\n};\n\n// 0x03015404\nstatic const u16 door_seg3_animindex_03015404[] = {\n    0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0050, 0x0002, 0x0050, 0x0052, 0x0050, 0x00A2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x03015440\nstatic const struct Animation door_seg3_anim_03015440 = {\n    1,\n    0,\n    0,\n    0,\n    0x50,\n    ANIMINDEX_NUMPARTS(door_seg3_animindex_03015404),\n    door_seg3_animvalue_03015220,\n    door_seg3_animindex_03015404,\n    0,\n};\n"
  },
  {
    "path": "actors/door/anims/anim_03015458.inc.c",
    "content": "// 0x03015458\nstatic const struct Animation door_seg3_anim_03015458 = {\n    1,\n    0,\n    40,\n    40,\n    0x50,\n    ANIMINDEX_NUMPARTS(door_seg3_animindex_03015404),\n    door_seg3_animvalue_03015220,\n    door_seg3_animindex_03015404,\n    0,\n};\n"
  },
  {
    "path": "actors/door/anims/anim_03015690.inc.c",
    "content": "// 0x03015470\nstatic const s16 door_seg3_animvalue_03015470[] = {\n    0x0000, 0xFED4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0001, 0x0003, 0x0001, 0x0000, 0xFFF7, 0xFFDF,\n    0xFFC1, 0xFFA6, 0xFF98, 0xFF9F, 0xFFC6, 0x0013, 0x00A5, 0x017E,\n    0x0281, 0x0395, 0x049C, 0x057C, 0x061A, 0x065A, 0x0650, 0x0629,\n    0x05E7, 0x058F, 0x0525, 0x04AE, 0x042D, 0x03A6, 0x031E, 0x0299,\n    0x021B, 0x01A8, 0x0144, 0x00F4, 0x00BB, 0x0094, 0x0077, 0x0063,\n    0x0056, 0x004F, 0x004F, 0x0053, 0x005C, 0x0067, 0x0074, 0x0083,\n    0x0091, 0x009F, 0x00AC, 0x00B6, 0x00BC, 0x00BE, 0x00BB, 0x00B3,\n    0x00A8, 0x009A, 0x008A, 0x0078, 0x0066, 0x0053, 0x0040, 0x002E,\n    0x001C, 0x000D, 0x0000, 0xFFF9, 0xFFF7, 0xFFF9, 0xFFFA, 0xFFFC,\n    0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x05B0, 0x0DAB, 0x101D, 0x1255, 0x16C3, 0x1BA6,\n    0x20C9, 0x25F7, 0x2AFB, 0x2FA1, 0x33B5, 0x3700, 0x3983, 0x3B6E,\n    0x3CDA, 0x3DDE, 0x3E91, 0x3F0C, 0x3F65, 0x3FB4, 0x3FFF, 0x403B,\n    0x4069, 0x4088, 0x4099, 0x409C, 0x4091, 0x4078, 0x4053, 0x4020,\n    0x3FE1, 0x3F94, 0x3F3C, 0x3ED7, 0x3E66, 0x3E66, 0x3E66, 0x3E66,\n    0x3E66, 0x3E66, 0x3E66, 0x3E66, 0x3E66, 0x3E66, 0x3E66, 0x3E66,\n    0x3E66, 0x3E66, 0x3E66, 0x3E66, 0x3E66, 0x3E66, 0x3E66, 0x3CAC,\n    0x3AF1, 0x3937, 0x377D, 0x35C2, 0x3408, 0x324E, 0x3093, 0x246E,\n    0x1849, 0x0C24, 0x0000, 0x012E, 0x01EB, 0x024D, 0x0268, 0x0214,\n    0x0137, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0001, 0x0003, 0x0001, 0x0000, 0xFFF7, 0xFFDF,\n    0xFFC1, 0xFFA5, 0xFF97, 0xFF9E, 0xFFC5, 0x0013, 0x00A6, 0x0180,\n    0x0285, 0x039A, 0x04A3, 0x0585, 0x0624, 0x0664, 0x065B, 0x0633,\n    0x05F1, 0x0599, 0x052F, 0x04B7, 0x0436, 0x03AE, 0x0326, 0x02A0,\n    0x0222, 0x01AE, 0x014A, 0x00FA, 0x00C1, 0x009A, 0x007D, 0x0068,\n    0x005B, 0x0055, 0x0055, 0x0059, 0x0062, 0x006D, 0x007A, 0x0089,\n    0x0098, 0x00A6, 0x00B2, 0x00BC, 0x00C2, 0x00C4, 0x00C1, 0x00B9,\n    0x00AD, 0x009F, 0x008E, 0x007C, 0x0069, 0x0056, 0x0042, 0x002F,\n    0x001E, 0x000D, 0x0000, 0xFFF8, 0xFFF6, 0xFFF7, 0xFFF8, 0xFFFB,\n    0xFFFE, 0x0000,\n};\n\n// 0x03015654\nstatic const u16 door_seg3_animindex_03015654[] = {\n    0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0050, 0x0002, 0x0050, 0x0052, 0x0050, 0x00A2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x03015690\nstatic const struct Animation door_seg3_anim_03015690 = {\n    0,\n    0,\n    0,\n    0,\n    0x50,\n    ANIMINDEX_NUMPARTS(door_seg3_animindex_03015654),\n    door_seg3_animvalue_03015470,\n    door_seg3_animindex_03015654,\n    0,\n};\n"
  },
  {
    "path": "actors/door/anims/anim_030156A8.inc.c",
    "content": "// 0x030156A8\nstatic const struct Animation door_seg3_anim_030156A8 = {\n    1,\n    0,\n    40,\n    40,\n    0x50,\n    ANIMINDEX_NUMPARTS(door_seg3_animindex_03015654),\n    door_seg3_animvalue_03015470,\n    door_seg3_animindex_03015654,\n    0,\n};\n"
  },
  {
    "path": "actors/door/anims/data.inc.c",
    "content": "#include \"anim_03015208.inc.c\"\n#include \"anim_03015440.inc.c\"\n#include \"anim_03015458.inc.c\"\n#include \"anim_03015690.inc.c\"\n#include \"anim_030156A8.inc.c\"\n"
  },
  {
    "path": "actors/door/anims/table.inc.c",
    "content": "// 0x030156C0\nconst struct Animation *const door_seg3_anims_030156C0[] = {\n    &door_seg3_anim_03015208,\n    &door_seg3_anim_03015440,\n    &door_seg3_anim_03015690,\n    &door_seg3_anim_03015458,\n    &door_seg3_anim_030156A8,\n    NULL,\n};\n"
  },
  {
    "path": "actors/door/geo.inc.c",
    "content": "// 0x160003A8\nconst GeoLayout castle_door_geo[] = {\n    GEO_TRANSLATE_NODE(0x00, 78, 0, 0),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, -300, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_OPEN_NODE(),\n                    GEO_RENDER_RANGE(-2048, 3500),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, door_seg3_dl_03013E28),\n                    GEO_CLOSE_NODE(),\n                    GEO_RENDER_RANGE(3500, 32767),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, door_seg3_dl_03014100),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(), //! more close than open nodes\n    GEO_END(),\n};\n\n// 0x1600043C\nconst GeoLayout cabin_door_geo[] = {\n    GEO_TRANSLATE_NODE(0x00, 78, 0, 0),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, -300, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_OPEN_NODE(),\n                    GEO_RENDER_RANGE(-2048, 3500),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, door_seg3_dl_03013EA8),\n                    GEO_CLOSE_NODE(),\n                    GEO_RENDER_RANGE(3500, 32767),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, door_seg3_dl_03014128),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(), //! more close than open nodes\n    GEO_END(),\n};\n\n// 0x160004D0\nconst GeoLayout wooden_door_geo[] = {\n    GEO_TRANSLATE_NODE(0x00, 78, 0, 0),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, -300, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_OPEN_NODE(),\n                    GEO_RENDER_RANGE(-2048, 3500),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, door_seg3_dl_03014A80),\n                    GEO_CLOSE_NODE(),\n                    GEO_RENDER_RANGE(3500, 32767),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, door_seg3_dl_03014F98),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(), //! more close than open nodes\n    GEO_END(),\n};\n\n// 0x16000564\nconst GeoLayout wooden_door2_geo[] = {\n    GEO_TRANSLATE_NODE(0x00, 78, 0, 0),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, -300, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_OPEN_NODE(),\n                    GEO_RENDER_RANGE(-2048, 3500),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, door_seg3_dl_03014B30),\n                    GEO_CLOSE_NODE(),\n                    GEO_RENDER_RANGE(3500, 32767),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, door_seg3_dl_03015008),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(), //! more close than open nodes\n    GEO_END(),\n};\n\n// 0x160005F8\nconst GeoLayout metal_door_geo[] = {\n    GEO_TRANSLATE_NODE(0x00, 78, 0, 0),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, -300, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_OPEN_NODE(),\n                    GEO_RENDER_RANGE(-2048, 3500),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, door_seg3_dl_03014BE0),\n                    GEO_CLOSE_NODE(),\n                    GEO_RENDER_RANGE(3500, 32767),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, door_seg3_dl_03015078),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(), //! more close than open nodes\n    GEO_END(),\n};\n\n// 0x1600068C\nconst GeoLayout hazy_maze_door_geo[] = {\n    GEO_TRANSLATE_NODE(0x00, 78, 0, 0),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, -300, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_OPEN_NODE(),\n                    GEO_RENDER_RANGE(-2048, 3500),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, door_seg3_dl_03014C90),\n                    GEO_CLOSE_NODE(),\n                    GEO_RENDER_RANGE(3500, 32767),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, door_seg3_dl_030150E8),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(), //! more close than open nodes\n    GEO_END(),\n};\n\n// 0x16000720\nconst GeoLayout haunted_door_geo[] = {\n    GEO_TRANSLATE_NODE(0x00, 78, 0, 0),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, -300, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_OPEN_NODE(),\n                    GEO_RENDER_RANGE(-2048, 3500),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, door_seg3_dl_03014D40),\n                    GEO_CLOSE_NODE(),\n                    GEO_RENDER_RANGE(3500, 32767),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, door_seg3_dl_03015158),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(), //! more close than open nodes\n    GEO_END(),\n};\n\n// 0x160007B4\nconst GeoLayout castle_door_0_star_geo[] = {\n    GEO_TRANSLATE_NODE(0x00, 78, 0, 0),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, -300, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_OPEN_NODE(),\n                    GEO_RENDER_RANGE(-2048, 1000),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, door_seg3_dl_03013E28),\n                        GEO_OPEN_NODE(),\n                            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, door_seg3_dl_03014250),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_RENDER_RANGE(1000, 32767),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, door_seg3_dl_03013E28),\n                        GEO_OPEN_NODE(),\n                            GEO_DISPLAY_LIST(LAYER_TRANSPARENT_DECAL, door_seg3_dl_03014280),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(), //! more close than open nodes\n    GEO_END(),\n};\n\n// 0x16000868\nconst GeoLayout castle_door_1_star_geo[] = {\n    GEO_TRANSLATE_NODE(0x00, 78, 0, 0),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, -300, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_OPEN_NODE(),\n                    GEO_RENDER_RANGE(-2048, 1000),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, door_seg3_dl_03013E28),\n                        GEO_OPEN_NODE(),\n                            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, door_seg3_dl_030142B0),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_RENDER_RANGE(1000, 32767),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, door_seg3_dl_03013E28),\n                        GEO_OPEN_NODE(),\n                            GEO_DISPLAY_LIST(LAYER_TRANSPARENT_DECAL, door_seg3_dl_030142E0),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(), //! more close than open nodes\n    GEO_END(),\n};\n\n// 0x1600091C\nconst GeoLayout castle_door_3_stars_geo[] = {\n    GEO_TRANSLATE_NODE(0x00, 78, 0, 0),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, -300, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_OPEN_NODE(),\n                    GEO_RENDER_RANGE(-2048, 1000),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, door_seg3_dl_03013E28),\n                        GEO_OPEN_NODE(),\n                            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, door_seg3_dl_03014310),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_RENDER_RANGE(1000, 32767),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, door_seg3_dl_03013E28),\n                        GEO_OPEN_NODE(),\n                            GEO_DISPLAY_LIST(LAYER_TRANSPARENT_DECAL, door_seg3_dl_03014340),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(), //! more close than open nodes\n    GEO_END(),\n};\n\n// 0x160009D0\nconst GeoLayout key_door_geo[] = {\n    GEO_TRANSLATE_NODE(0x00, 78, 0, 0),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, -300, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_OPEN_NODE(),\n                    GEO_RENDER_RANGE(-2048, 1000),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, door_seg3_dl_03013E28),\n                        GEO_OPEN_NODE(),\n                            GEO_DISPLAY_LIST(LAYER_OPAQUE, door_seg3_dl_03014540),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_RENDER_RANGE(1000, 32767),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, door_seg3_dl_03013E28),\n                        GEO_OPEN_NODE(),\n                            GEO_DISPLAY_LIST(LAYER_OPAQUE_DECAL, door_seg3_dl_03014528),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(), //! more close than open nodes\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/door/model.inc.c",
    "content": "// Door\n\n// 0x03009CE0\nstatic const Lights1 door_seg3_lights_03009CE0 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x03009CF8\nstatic const Lights1 door_seg3_lights_03009CF8 = gdSPDefLights1(\n    0x3f, 0x3f, 0x00,\n    0xff, 0xff, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x03009D10\nALIGNED8 static const Texture door_seg3_texture_03009D10[] = {\n#include \"actors/door/polished_wooden_door.rgba16.inc.c\"\n};\n\n// 0x0300AD10\nALIGNED8 static const Texture door_seg3_texture_0300AD10[] = {\n#include \"actors/door/polished_wooden_door_overlay.rgba16.inc.c\"\n};\n\n// 0x0300BD10\nALIGNED8 static const Texture door_seg3_texture_0300BD10[] = {\n#include \"actors/door/rough_wooden_door.rgba16.inc.c\"\n};\n\n// 0x0300CD10\nALIGNED8 static const Texture door_seg3_texture_0300CD10[] = {\n#include \"actors/door/rough_wooden_door_overlay.rgba16.inc.c\"\n};\n\n// 0x0300D510\nALIGNED8 static const Texture door_seg3_texture_0300D510[] = {\n#include \"actors/door/metal_door.rgba16.inc.c\"\n};\n\n// 0x0300E510\nALIGNED8 static const Texture door_seg3_texture_0300E510[] = {\n#include \"actors/door/metal_door_overlay.rgba16.inc.c\"\n};\n\n// 0x0300ED10\nALIGNED8 static const Texture door_seg3_texture_0300ED10[] = {\n#include \"actors/door/hmc_mural_door.rgba16.inc.c\"\n};\n\n// 0x0300FD10\nALIGNED8 static const Texture door_seg3_texture_0300FD10[] = {\n#include \"actors/door/hmc_mural_door_overlay.rgba16.inc.c\"\n};\n\n// 0x03010510\nALIGNED8 static const Texture door_seg3_texture_03010510[] = {\n#include \"actors/door/bbh_door.rgba16.inc.c\"\n};\n\n// 0x03011510\nALIGNED8 static const Texture door_seg3_texture_03011510[] = {\n#include \"actors/door/bbh_door_overlay.rgba16.inc.c\"\n};\n\n// 0x03011D10\nALIGNED8 static const Texture door_seg3_texture_03011D10[] = {\n#include \"actors/door/zero_star_door_sign.rgba16.inc.c\"\n};\n\n// 0x03012510\nALIGNED8 static const Texture door_seg3_texture_03012510[] = {\n#include \"actors/door/one_star_door_sign.rgba16.inc.c\"\n};\n\n// 0x03012D10\nALIGNED8 static const Texture door_seg3_texture_03012D10[] = {\n#include \"actors/door/three_star_door_sign.rgba16.inc.c\"\n};\n\n// 0x03013510\nALIGNED8 static const Texture door_seg3_texture_03013510[] = {\n#include \"actors/door/door_lock.rgba16.inc.c\"\n};\n\n// 0x03013910\nstatic const Vtx door_seg3_vertex_03013910[] = {\n    {{{   -12,      0,    -58}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -12,      0,     59}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -12,   1024,     59}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -12,   1024,    -58}, 0, {   990,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -12,   1024,     59}, 0, {     0,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   604,   1024,     59}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   604,   1024,    -58}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   604,      0,    -58}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -12,      0,     59}, 0, {   990,   2012}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -12,      0,    -58}, 0, {     0,   2012}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   604,      0,     59}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   604,      0,     59}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   604,      0,    -58}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   604,   1024,    -58}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   604,   1024,     59}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -12,   1024,    -58}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x03013A10\nstatic const Vtx door_seg3_vertex_03013A10[] = {\n    {{{   604,      0,    -58}, 0, {   974,   1820}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -12,      0,    -58}, 0, {     0,   1816}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -12,   1024,    -58}, 0, {     0,    124}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   604,   1024,    -58}, 0, {   974,    128}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -12,      0,     59}, 0, {     0,   1816}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   604,      0,     59}, 0, {   974,   1812}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   604,   1024,     59}, 0, {   974,    132}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -12,   1024,     59}, 0, {     0,    140}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x03013A90\nstatic const Vtx door_seg3_vertex_03013A90[] = {\n    {{{   512,    512,    104}, 0, {     0,      0}, {0xff, 0x7e, 0x01, 0xff}}},\n    {{{   456,    432,    160}, 0, {     0,      0}, {0xa6, 0x1f, 0x53, 0xff}}},\n    {{{   512,    488,    160}, 0, {     0,      0}, {0x16, 0x49, 0x65, 0xff}}},\n    {{{   512,    372,    160}, 0, {     0,      0}, {0xe7, 0xba, 0x66, 0xff}}},\n    {{{   572,    432,    160}, 0, {     0,      0}, {0x5a, 0xe3, 0x53, 0xff}}},\n    {{{   596,    432,    104}, 0, {     0,      0}, {0x7e, 0x01, 0x01, 0xff}}},\n    {{{   512,    348,    104}, 0, {     0,      0}, {0xff, 0x82, 0x01, 0xff}}},\n    {{{   432,    432,    104}, 0, {     0,      0}, {0x82, 0x01, 0x01, 0xff}}},\n    {{{   512,    488,     44}, 0, {     0,      0}, {0xda, 0x70, 0xd4, 0xff}}},\n    {{{   456,    432,     44}, 0, {     0,      0}, {0x8f, 0xde, 0xd4, 0xff}}},\n    {{{   512,    372,     44}, 0, {     0,      0}, {0x24, 0x90, 0xd3, 0xff}}},\n    {{{   572,    432,     44}, 0, {     0,      0}, {0x6f, 0x28, 0xd3, 0xff}}},\n};\n\n// 0x03013B50\nstatic const Vtx door_seg3_vertex_03013B50[] = {\n    {{{   512,    488,   -156}, 0, {     0,      0}, {0xe8, 0x48, 0x9b, 0xff}}},\n    {{{   512,    372,   -156}, 0, {     0,      0}, {0x17, 0xb9, 0x9a, 0xff}}},\n    {{{   456,    432,   -156}, 0, {     0,      0}, {0xa5, 0xe4, 0xae, 0xff}}},\n    {{{   432,    432,   -100}, 0, {     0,      0}, {0x82, 0x01, 0xff, 0xff}}},\n    {{{   512,    512,   -100}, 0, {     0,      0}, {0xff, 0x7e, 0xff, 0xff}}},\n    {{{   572,    432,   -156}, 0, {     0,      0}, {0x59, 0x20, 0xac, 0xff}}},\n    {{{   512,    348,   -100}, 0, {     0,      0}, {0xff, 0x82, 0xff, 0xff}}},\n    {{{   596,    432,   -100}, 0, {     0,      0}, {0x7e, 0x01, 0xff, 0xff}}},\n    {{{   572,    432,    -40}, 0, {     0,      0}, {0x70, 0xdc, 0x2d, 0xff}}},\n    {{{   512,    372,    -40}, 0, {     0,      0}, {0xd8, 0x91, 0x2d, 0xff}}},\n    {{{   456,    432,    -40}, 0, {     0,      0}, {0x90, 0x26, 0x2c, 0xff}}},\n    {{{   512,    488,    -40}, 0, {     0,      0}, {0x22, 0x71, 0x2c, 0xff}}},\n};\n\n// 0x03013C10 - 0x03013CC8\nconst Gfx door_seg3_dl_03013C10[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, door_seg3_texture_0300AD10),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&door_seg3_lights_03009CE0.l, 1),\n    gsSPLight(&door_seg3_lights_03009CE0.a, 2),\n    gsSPVertex(door_seg3_vertex_03013910, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, door_seg3_texture_03009D10),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(door_seg3_vertex_03013A10, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x03013CC8 - 0x03013D78\nconst Gfx door_seg3_dl_03013CC8[] = {\n    gsSPLight(&door_seg3_lights_03009CF8.l, 1),\n    gsSPLight(&door_seg3_lights_03009CF8.a, 2),\n    gsSPVertex(door_seg3_vertex_03013A90, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 2,  1,  3, 0x0,  5,  2,  4, 0x0),\n    gsSP2Triangles( 5,  0,  2, 0x0,  6,  4,  3, 0x0),\n    gsSP2Triangles( 7,  6,  3, 0x0,  7,  3,  1, 0x0),\n    gsSP2Triangles( 6,  5,  4, 0x0,  0,  7,  1, 0x0),\n    gsSP2Triangles( 8,  9,  7, 0x0,  9,  6,  7, 0x0),\n    gsSP2Triangles( 8,  7,  0, 0x0,  9, 10,  6, 0x0),\n    gsSP2Triangles(10,  5,  6, 0x0, 10, 11,  5, 0x0),\n    gsSP2Triangles(11,  0,  5, 0x0, 11,  8,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x03013D78 - 0x03013E28\nconst Gfx door_seg3_dl_03013D78[] = {\n    gsSPLight(&door_seg3_lights_03009CF8.l, 1),\n    gsSPLight(&door_seg3_lights_03009CF8.a, 2),\n    gsSPVertex(door_seg3_vertex_03013B50, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 5,  0,  4, 0x0,  2,  1,  6, 0x0),\n    gsSP2Triangles( 1,  7,  6, 0x0,  1,  5,  7, 0x0),\n    gsSP2Triangles( 2,  6,  3, 0x0,  5,  4,  7, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0,  3,  6,  9, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  4,  3, 10, 0x0),\n    gsSP2Triangles( 3,  9, 10, 0x0,  7,  4, 11, 0x0),\n    gsSP2Triangles( 7, 11,  8, 0x0,  4, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x03013E28 - 0x03013EA8\nconst Gfx door_seg3_dl_03013E28[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(door_seg3_dl_03013C10),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPDisplayList(door_seg3_dl_03013CC8),\n    gsSPDisplayList(door_seg3_dl_03013D78),\n    gsSPEndDisplayList(),\n};\n\n// 0x03013EA8 - 0x03013F20\nconst Gfx door_seg3_dl_03013EA8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(door_seg3_dl_03013C10),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPDisplayList(door_seg3_dl_03013CC8),\n    gsSPEndDisplayList(),\n};\n\n// 0x03013F20\nstatic const Vtx door_seg3_vertex_03013F20[] = {\n    {{{   591,      0,    -58}, 0, {   976,   1808}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    -8,   1010,    -58}, 0, {   -16,    148}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   591,   1010,    -58}, 0, {   990,    140}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    -8,      0,    -58}, 0, {   -30,   1812}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    -8,      0,     59}, 0, {     0,   1816}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   591,   1010,     59}, 0, {   974,    132}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -8,   1010,     59}, 0, {     0,    140}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   591,      0,     59}, 0, {   974,   1812}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x03013FA0\nstatic const Vtx door_seg3_vertex_03013FA0[] = {\n    {{{   492,    468,   -152}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   546,    412,   -152}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   492,    357,   -152}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   437,    412,   -152}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   492,    468,    153}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   492,    357,    153}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   546,    412,    153}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   437,    412,    153}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x03014020 - 0x03014100\nconst Gfx door_seg3_dl_03014020[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, door_seg3_texture_03009D10),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&door_seg3_lights_03009CE0.l, 1),\n    gsSPLight(&door_seg3_lights_03009CE0.a, 2),\n    gsSPVertex(door_seg3_vertex_03013F20, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPLight(&door_seg3_lights_03009CF8.l, 1),\n    gsSPLight(&door_seg3_lights_03009CF8.a, 2),\n    gsSPVertex(door_seg3_vertex_03013FA0, 8, 0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x03014100 - 0x03014128\nconst Gfx door_seg3_dl_03014100[] = {\n    gsSPDisplayList(door_seg3_dl_03014020),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x03014128 - 0x03014140\nconst Gfx door_seg3_dl_03014128[] = {\n    gsSPDisplayList(door_seg3_dl_03014020),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x03014140\nstatic const Vtx door_seg3_vertex_03014140[] = {\n    {{{   441,    850,     64}, 0, {   992,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   141,    850,     64}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   141,    550,     64}, 0, {     0,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   441,    550,     64}, 0, {   992,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x03014180\nstatic const Vtx door_seg3_vertex_03014180[] = {\n    {{{   441,    850,     59}, 0, {   992,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   141,    850,     59}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   141,    550,     59}, 0, {     0,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   441,    550,     59}, 0, {   992,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x030141C0 - 0x03014218\nconst Gfx door_seg3_dl_030141C0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPLight(&door_seg3_lights_03009CE0.l, 1),\n    gsSPLight(&door_seg3_lights_03009CE0.a, 2),\n    gsSPEndDisplayList(),\n};\n\n// 0x03014218 - 0x03014250\nconst Gfx door_seg3_dl_03014218[] = {\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x03014250 - 0x03014280\nconst Gfx door_seg3_dl_03014250[] = {\n    gsSPDisplayList(door_seg3_dl_030141C0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, door_seg3_texture_03011D10),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(door_seg3_vertex_03014140, 4, 0),\n    gsSPBranchList(door_seg3_dl_03014218),\n};\n\n// 0x03014280 - 0x030142B0\nconst Gfx door_seg3_dl_03014280[] = {\n    gsSPDisplayList(door_seg3_dl_030141C0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, door_seg3_texture_03011D10),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(door_seg3_vertex_03014180, 4, 0),\n    gsSPBranchList(door_seg3_dl_03014218),\n};\n\n// 0x030142B0 - 0x030142E0\nconst Gfx door_seg3_dl_030142B0[] = {\n    gsSPDisplayList(door_seg3_dl_030141C0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, door_seg3_texture_03012510),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(door_seg3_vertex_03014140, 4, 0),\n    gsSPBranchList(door_seg3_dl_03014218),\n};\n\n// 0x030142E0 - 0x03014310\nconst Gfx door_seg3_dl_030142E0[] = {\n    gsSPDisplayList(door_seg3_dl_030141C0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, door_seg3_texture_03012510),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(door_seg3_vertex_03014180, 4, 0),\n    gsSPBranchList(door_seg3_dl_03014218),\n};\n\n// 0x03014310 - 0x03014340\nconst Gfx door_seg3_dl_03014310[] = {\n    gsSPDisplayList(door_seg3_dl_030141C0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, door_seg3_texture_03012D10),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(door_seg3_vertex_03014140, 4, 0),\n    gsSPBranchList(door_seg3_dl_03014218),\n};\n\n// 0x03014340 - 0x03014370\nconst Gfx door_seg3_dl_03014340[] = {\n    gsSPDisplayList(door_seg3_dl_030141C0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, door_seg3_texture_03012D10),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(door_seg3_vertex_03014180, 4, 0),\n    gsSPBranchList(door_seg3_dl_03014218),\n};\n\n// 0x03014370\nstatic const Vtx door_seg3_vertex_03014370[] = {\n    {{{   595,    916,     59}, 0, {   478,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   405,    544,     59}, 0, {     0,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   595,    544,     59}, 0, {   478,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   405,    916,     59}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   595,    544,    -58}, 0, {   478,    992}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   405,    544,    -58}, 0, {     0,    992}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   405,    916,    -58}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   595,    916,    -58}, 0, {   478,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x030143F0\nstatic const Vtx door_seg3_vertex_030143F0[] = {\n    {{{   595,    916,     64}, 0, {   480,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   405,    544,     64}, 0, {     0,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   595,    544,     64}, 0, {   480,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   405,    916,     64}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   595,    544,    -63}, 0, {   480,    992}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   405,    544,    -63}, 0, {     0,    992}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   405,    916,    -63}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   595,    916,    -63}, 0, {   480,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x03014470 - 0x030144E0\nconst Gfx door_seg3_dl_03014470[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, door_seg3_texture_03013510),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&door_seg3_lights_03009CE0.l, 1),\n    gsSPLight(&door_seg3_lights_03009CE0.a, 2),\n    gsSPEndDisplayList(),\n};\n\n// 0x030144E0 - 0x03014528\nconst Gfx door_seg3_dl_030144E0[] = {\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x03014528 - 0x03014540\nconst Gfx door_seg3_dl_03014528[] = {\n    gsSPDisplayList(door_seg3_dl_03014470),\n    gsSPVertex(door_seg3_vertex_03014370, 8, 0),\n    gsSPBranchList(door_seg3_dl_030144E0),\n};\n\n// 0x03014540 - 0x03014558\nconst Gfx door_seg3_dl_03014540[] = {\n    gsSPDisplayList(door_seg3_dl_03014470),\n    gsSPVertex(door_seg3_vertex_030143F0, 8, 0),\n    gsSPBranchList(door_seg3_dl_030144E0),\n};\n\n// 0x03014558\nstatic const Vtx door_seg3_vertex_03014558[] = {\n    {{{    -8,   1000,    -58}, 0, {     0,     70}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -8,      0,    -58}, 0, {     0,    936}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -8,      0,     59}, 0, {   990,    936}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -8,      0,    -58}, 0, {   990,    114}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   591,      0,    -58}, 0, {   990,    856}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   591,      0,     59}, 0, {     0,    856}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    -8,      0,     59}, 0, {     0,    114}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    -8,   1000,     59}, 0, {     0,    114}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   591,   1000,    -58}, 0, {   990,    856}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    -8,   1000,    -58}, 0, {   990,    114}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   591,   1000,     59}, 0, {     0,    856}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   591,   1000,     59}, 0, {   990,     70}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   591,      0,     59}, 0, {   990,    936}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   591,      0,    -58}, 0, {     0,    936}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   591,   1000,    -58}, 0, {     0,     70}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    -8,   1000,     59}, 0, {   990,     70}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x03014658\nstatic const Vtx door_seg3_vertex_03014658[] = {\n    {{{    -8,      0,     59}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   591,   1000,     59}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -8,   1000,     59}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   591,      0,     59}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   591,      0,    -58}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    -8,      0,    -58}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    -8,   1000,    -58}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   591,   1000,    -58}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x030146D8\nstatic const Vtx door_seg3_vertex_030146D8[] = {\n    {{{   492,    468,   -152}, 0, {     0,      0}, {0xe8, 0x47, 0x9a, 0xff}}},\n    {{{   414,    412,    -98}, 0, {     0,      0}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{   492,    491,    -98}, 0, {     0,      0}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{   492,    468,    153}, 0, {     0,      0}, {0x18, 0x47, 0x66, 0xff}}},\n    {{{   492,    357,    153}, 0, {     0,      0}, {0xe9, 0xb8, 0x65, 0xff}}},\n    {{{   546,    412,    153}, 0, {     0,      0}, {0x5b, 0xe2, 0x53, 0xff}}},\n    {{{   437,    412,    153}, 0, {     0,      0}, {0xa5, 0x1d, 0x53, 0xff}}},\n    {{{   492,    491,     99}, 0, {     0,      0}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{   569,    412,     99}, 0, {     0,      0}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{   492,    334,     99}, 0, {     0,      0}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{   414,    412,     99}, 0, {     0,      0}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{   492,    468,     44}, 0, {     0,      0}, {0xdb, 0x6f, 0xd1, 0xff}}},\n    {{{   437,    412,     44}, 0, {     0,      0}, {0x91, 0xdb, 0xd2, 0xff}}},\n    {{{   492,    357,     44}, 0, {     0,      0}, {0x26, 0x91, 0xd2, 0xff}}},\n    {{{   546,    412,     44}, 0, {     0,      0}, {0x70, 0x24, 0xd2, 0xff}}},\n};\n\n// 0x030147C8\nstatic const Vtx door_seg3_vertex_030147C8[] = {\n    {{{   492,    491,    -98}, 0, {     0,      0}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{   437,    412,    -43}, 0, {     0,      0}, {0x90, 0x24, 0x2e, 0xff}}},\n    {{{   492,    468,    -43}, 0, {     0,      0}, {0x26, 0x6f, 0x2f, 0xff}}},\n    {{{   492,    468,   -152}, 0, {     0,      0}, {0xe8, 0x47, 0x9a, 0xff}}},\n    {{{   546,    412,   -152}, 0, {     0,      0}, {0x5b, 0x1d, 0xae, 0xff}}},\n    {{{   492,    357,   -152}, 0, {     0,      0}, {0x18, 0xb9, 0x9b, 0xff}}},\n    {{{   437,    412,   -152}, 0, {     0,      0}, {0xa6, 0xe2, 0xad, 0xff}}},\n    {{{   414,    412,    -98}, 0, {     0,      0}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{   569,    412,    -98}, 0, {     0,      0}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{   492,    334,    -98}, 0, {     0,      0}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{   492,    357,    -43}, 0, {     0,      0}, {0xdb, 0x90, 0x2e, 0xff}}},\n    {{{   546,    412,    -43}, 0, {     0,      0}, {0x70, 0xdb, 0x2e, 0xff}}},\n};\n\n// 0x03014888 - 0x030149C0\nconst Gfx door_seg3_dl_03014888[] = {\n    gsSPVertex(door_seg3_vertex_030146D8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  6,  3, 0x0),\n    gsSP2Triangles( 8,  3,  5, 0x0,  8,  7,  3, 0x0),\n    gsSP2Triangles( 9,  5,  4, 0x0, 10,  9,  4, 0x0),\n    gsSP2Triangles(10,  4,  6, 0x0,  9,  8,  5, 0x0),\n    gsSP2Triangles( 7, 10,  6, 0x0, 11, 12, 10, 0x0),\n    gsSP2Triangles(11, 10,  7, 0x0, 12,  9, 10, 0x0),\n    gsSP2Triangles(12, 13,  9, 0x0, 13,  8,  9, 0x0),\n    gsSP2Triangles(14,  7,  8, 0x0, 13, 14,  8, 0x0),\n    gsSP1Triangle(14, 11,  7, 0x0),\n    gsSPVertex(door_seg3_vertex_030147C8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  4,  3,  0, 0x0),\n    gsSP2Triangles( 5,  4,  8, 0x0,  6,  5,  9, 0x0),\n    gsSP2Triangles( 5,  8,  9, 0x0,  3,  5,  6, 0x0),\n    gsSP2Triangles( 6,  9,  7, 0x0,  4,  0,  8, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles( 9,  8, 11, 0x0,  0,  7,  1, 0x0),\n    gsSP2Triangles( 7, 10,  1, 0x0,  8,  0,  2, 0x0),\n    gsSP1Triangle( 8,  2, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x030149C0 - 0x03014A20\nconst Gfx door_seg3_dl_030149C0[] = {\n    gsSPLight(&door_seg3_lights_03009CE0.l, 1),\n    gsSPLight(&door_seg3_lights_03009CE0.a, 2),\n    gsSPVertex(door_seg3_vertex_03014558, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x03014A20 - 0x03014A50\nconst Gfx door_seg3_dl_03014A20[] = {\n    gsSPVertex(door_seg3_vertex_03014658, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x03014A50 - 0x03014A80\nconst Gfx door_seg3_dl_03014A50[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsSPEndDisplayList(),\n};\n\n// 0x03014A80 - 0x03014B30\nconst Gfx door_seg3_dl_03014A80[] = {\n    gsSPDisplayList(door_seg3_dl_03014A50),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, door_seg3_texture_0300CD10),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(door_seg3_dl_030149C0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, door_seg3_texture_0300BD10),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(door_seg3_dl_03014A20),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPLight(&door_seg3_lights_03009CF8.l, 1),\n    gsSPLight(&door_seg3_lights_03009CF8.a, 2),\n    gsSPBranchList(door_seg3_dl_03014888),\n};\n\n// 0x03014B30 - 0x03014BE0\nconst Gfx door_seg3_dl_03014B30[] = {\n    gsSPDisplayList(door_seg3_dl_03014A50),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, door_seg3_texture_0300CD10),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(door_seg3_dl_030149C0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, door_seg3_texture_0300BD10),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(door_seg3_dl_03014A20),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPLight(&door_seg3_lights_03009CF8.l, 1),\n    gsSPLight(&door_seg3_lights_03009CF8.a, 2),\n    gsSPBranchList(door_seg3_dl_03014888),\n};\n\n// 0x03014BE0 - 0x03014C90\nconst Gfx door_seg3_dl_03014BE0[] = {\n    gsSPDisplayList(door_seg3_dl_03014A50),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, door_seg3_texture_0300E510),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(door_seg3_dl_030149C0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, door_seg3_texture_0300D510),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(door_seg3_dl_03014A20),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPLight(&door_seg3_lights_03009CF8.l, 1),\n    gsSPLight(&door_seg3_lights_03009CF8.a, 2),\n    gsSPBranchList(door_seg3_dl_03014888),\n};\n\n// 0x03014C90 - 0x03014D40\nconst Gfx door_seg3_dl_03014C90[] = {\n    gsSPDisplayList(door_seg3_dl_03014A50),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, door_seg3_texture_0300FD10),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(door_seg3_dl_030149C0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, door_seg3_texture_0300ED10),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(door_seg3_dl_03014A20),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPLight(&door_seg3_lights_03009CF8.l, 1),\n    gsSPLight(&door_seg3_lights_03009CF8.a, 2),\n    gsSPBranchList(door_seg3_dl_03014888),\n};\n\n// 0x03014D40 - 0x03014DF0\nconst Gfx door_seg3_dl_03014D40[] = {\n    gsSPDisplayList(door_seg3_dl_03014A50),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, door_seg3_texture_03011510),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(door_seg3_dl_030149C0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, door_seg3_texture_03010510),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(door_seg3_dl_03014A20),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPLight(&door_seg3_lights_03009CF8.l, 1),\n    gsSPLight(&door_seg3_lights_03009CF8.a, 2),\n    gsSPBranchList(door_seg3_dl_03014888),\n};\n\n// 0x03014DF0\nstatic const Vtx door_seg3_vertex_03014DF0[] = {\n    {{{   591,      0,    -58}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    -8,   1000,    -58}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   591,   1000,    -58}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    -8,      0,    -58}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    -8,      0,     59}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   591,   1000,     59}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -8,   1000,     59}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   591,      0,     59}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x03014E70\nstatic const Vtx door_seg3_vertex_03014E70[] = {\n    {{{   492,    468,    153}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   492,    357,    153}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   546,    412,    153}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   437,    412,    153}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   492,    468,   -152}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   546,    412,   -152}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   492,    357,   -152}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   437,    412,   -152}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x03014EF0 - 0x03014F30\nconst Gfx door_seg3_dl_03014EF0[] = {\n    gsSPLight(&door_seg3_lights_03009CE0.l, 1),\n    gsSPLight(&door_seg3_lights_03009CE0.a, 2),\n    gsSPVertex(door_seg3_vertex_03014DF0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x03014F30 - 0x03014F68\nconst Gfx door_seg3_dl_03014F30[] = {\n    gsSPVertex(door_seg3_vertex_03014E70, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x03014F68 - 0x03014F98\nconst Gfx door_seg3_dl_03014F68[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsSPEndDisplayList(),\n};\n\n// 0x03014F98 - 0x03015008\nconst Gfx door_seg3_dl_03014F98[] = {\n    gsSPDisplayList(door_seg3_dl_03014F68),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, door_seg3_texture_0300BD10),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(door_seg3_dl_03014EF0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPLight(&door_seg3_lights_03009CF8.l, 1),\n    gsSPLight(&door_seg3_lights_03009CF8.a, 2),\n    gsSPBranchList(door_seg3_dl_03014F30),\n};\n\n// 0x03015008 - 0x03015078\nconst Gfx door_seg3_dl_03015008[] = {\n    gsSPDisplayList(door_seg3_dl_03014F68),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, door_seg3_texture_0300BD10),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(door_seg3_dl_03014EF0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPLight(&door_seg3_lights_03009CF8.l, 1),\n    gsSPLight(&door_seg3_lights_03009CF8.a, 2),\n    gsSPBranchList(door_seg3_dl_03014F30),\n};\n\n// 0x03015078 - 0x030150E8\nconst Gfx door_seg3_dl_03015078[] = {\n    gsSPDisplayList(door_seg3_dl_03014F68),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, door_seg3_texture_0300D510),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(door_seg3_dl_03014EF0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPLight(&door_seg3_lights_03009CF8.l, 1),\n    gsSPLight(&door_seg3_lights_03009CF8.a, 2),\n    gsSPBranchList(door_seg3_dl_03014F30),\n};\n\n// 0x030150E8 - 0x03015158\nconst Gfx door_seg3_dl_030150E8[] = {\n    gsSPDisplayList(door_seg3_dl_03014F68),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, door_seg3_texture_0300ED10),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(door_seg3_dl_03014EF0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPLight(&door_seg3_lights_03009CF8.l, 1),\n    gsSPLight(&door_seg3_lights_03009CF8.a, 2),\n    gsSPBranchList(door_seg3_dl_03014F30),\n};\n\n// 0x03015158 - 0x030151C8\nconst Gfx door_seg3_dl_03015158[] = {\n    gsSPDisplayList(door_seg3_dl_03014F68),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, door_seg3_texture_03010510),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(door_seg3_dl_03014EF0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPLight(&door_seg3_lights_03009CF8.l, 1),\n    gsSPLight(&door_seg3_lights_03009CF8.a, 2),\n    gsSPBranchList(door_seg3_dl_03014F30),\n};\n"
  },
  {
    "path": "actors/dorrie/anims/anim_0600E18C.inc.c",
    "content": "// 0x0600E060\nstatic const s16 dorrie_seg6_animvalue_0600E060[] = {\n    0x0000, 0xFFF6, 0xFFDA, 0x3FFF, 0x9614, 0xFCCB, 0xFBE7, 0xEE13,\n    0xE187, 0x0072, 0x01FC, 0xECD3, 0x1255, 0xE11F, 0xFF89, 0xFE05,\n    0xECD3, 0xC001, 0xC9C6, 0xC001, 0xC9C6, 0xEF81, 0xEDE4, 0xC9C6,\n    0xC001, 0xC9C6, 0x363A, 0x3FFF, 0xC9C6, 0x363A, 0x3FFF, 0xC9C6,\n    0x938B, 0xF41D, 0x6C75, 0x0000,\n};\n\n// 0x0600E0A8\nstatic const u16 dorrie_seg6_animindex_0600E0A8[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0000, 0x0001, 0x0003, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0022,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0021,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0016,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0015,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0011,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0004,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0020,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0006,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0005,\n    0x0001, 0x001D, 0x0001, 0x001E, 0x0001, 0x001F,\n    0x0001, 0x0000, 0x0001, 0x0007, 0x0001, 0x0008,\n    0x0001, 0x001A, 0x0001, 0x001B, 0x0001, 0x001C,\n    0x0001, 0x0009, 0x0001, 0x000A, 0x0001, 0x000B,\n    0x0001, 0x0017, 0x0001, 0x0018, 0x0001, 0x0019,\n    0x0001, 0x0000, 0x0001, 0x000C, 0x0001, 0x000D,\n    0x0001, 0x0012, 0x0001, 0x0013, 0x0001, 0x0014,\n    0x0001, 0x000E, 0x0001, 0x000F, 0x0001, 0x0010,\n};\n\n// 0x0600E18C\nstatic const struct Animation dorrie_seg6_anim_0600E18C = {\n    0,\n    0,\n    0,\n    0,\n    0x3C,\n    ANIMINDEX_NUMPARTS(dorrie_seg6_animindex_0600E0A8),\n    dorrie_seg6_animvalue_0600E060,\n    dorrie_seg6_animindex_0600E0A8,\n    0,\n};\n"
  },
  {
    "path": "actors/dorrie/anims/anim_0600E9BC.inc.c",
    "content": "// 0x0600E1A4\nstatic const s16 dorrie_seg6_animvalue_0600E1A4[] = {\n    0x0000, 0xFFF6, 0xFFDA, 0x3FFF, 0x9614, 0x960D, 0x95F9, 0x95DA,\n    0x95B0, 0x957D, 0x9543, 0x9501, 0x94BB, 0x9471, 0x9424, 0x93D6,\n    0x9388, 0x933C, 0x92F1, 0x92AB, 0x926A, 0x9230, 0x91FD, 0x91D3,\n    0x91B3, 0x91A0, 0x9199, 0x919B, 0x91A2, 0x91AE, 0x91BE, 0x91D2,\n    0x91E9, 0x9204, 0x9222, 0x9243, 0x9267, 0x928D, 0x92B4, 0x92DE,\n    0x9309, 0x9335, 0x9363, 0x9391, 0x93BF, 0x93EE, 0x941C, 0x944A,\n    0x9477, 0x94A4, 0x94CF, 0x94F8, 0x9520, 0x9546, 0x9569, 0x958A,\n    0x95A8, 0x95C3, 0x95DB, 0x95EF, 0x95FF, 0x960A, 0x9612, 0x9614,\n    0xFCCB, 0xFCCA, 0xFCC8, 0xFCC5, 0xFCC0, 0xFCBA, 0xFCB4, 0xFCAC,\n    0xFCA4, 0xFC9B, 0xFC91, 0xFC88, 0xFC7D, 0xFC73, 0xFC68, 0xFC5D,\n    0xFC52, 0xFC48, 0xFC3D, 0xFC34, 0xFC2A, 0xFC21, 0xFC19, 0xFC11,\n    0xFC0B, 0xFC05, 0xFC00, 0xFBFD, 0xFBFB, 0xFBFA, 0xFBFB, 0xFBFD,\n    0xFC00, 0xFC04, 0xFC0A, 0xFC10, 0xFC17, 0xFC1F, 0xFC27, 0xFC30,\n    0xFC3A, 0xFC44, 0xFC4E, 0xFC58, 0xFC62, 0xFC6D, 0xFC77, 0xFC81,\n    0xFC8B, 0xFC95, 0xFC9E, 0xFCA6, 0xFCAE, 0xFCB5, 0xFCBB, 0xFCC1,\n    0xFCC5, 0xFCC8, 0xFCCA, 0xFCCB, 0xFBE7, 0xFBE6, 0xFBE4, 0xFBE0,\n    0xFBDC, 0xFBD6, 0xFBD0, 0xFBC8, 0xFBC0, 0xFBB7, 0xFBAD, 0xFBA3,\n    0xFB99, 0xFB8E, 0xFB84, 0xFB79, 0xFB6E, 0xFB64, 0xFB59, 0xFB4F,\n    0xFB46, 0xFB3D, 0xFB35, 0xFB2D, 0xFB27, 0xFB21, 0xFB1C, 0xFB19,\n    0xFB17, 0xFB16, 0xFB17, 0xFB19, 0xFB1C, 0xFB20, 0xFB25, 0xFB2C,\n    0xFB33, 0xFB3B, 0xFB43, 0xFB4C, 0xFB56, 0xFB5F, 0xFB6A, 0xFB74,\n    0xFB7E, 0xFB89, 0xFB93, 0xFB9D, 0xFBA7, 0xFBB1, 0xFBBA, 0xFBC2,\n    0xFBCA, 0xFBD1, 0xFBD7, 0xFBDD, 0xFBE1, 0xFBE4, 0xFBE6, 0xFBE7,\n    0x0000, 0x0003, 0x000B, 0x001A, 0x002D, 0x0044, 0x0060, 0x0080,\n    0x00A2, 0x00C8, 0x00EF, 0x0119, 0x0144, 0x0170, 0x019D, 0x01CA,\n    0x01F7, 0x0224, 0x024F, 0x0279, 0x02A0, 0x02C6, 0x02E8, 0x0308,\n    0x0323, 0x033B, 0x034E, 0x035C, 0x0365, 0x0368, 0x0365, 0x035D,\n    0x0350, 0x033E, 0x0328, 0x030E, 0x02F0, 0x02CF, 0x02AC, 0x0286,\n    0x025E, 0x0235, 0x020B, 0x01DF, 0x01B4, 0x0188, 0x015D, 0x0133,\n    0x0109, 0x00E2, 0x00BC, 0x0099, 0x0078, 0x005A, 0x0040, 0x002A,\n    0x0018, 0x000B, 0x0002, 0x0000, 0xEE13, 0xEE0D, 0xEDF9, 0xEDDA,\n    0xEDB0, 0xED7C, 0xED3F, 0xECFB, 0xECAF, 0xEC5D, 0xEC06, 0xEBAA,\n    0xEB4C, 0xEAEB, 0xEA88, 0xEA25, 0xE9C3, 0xE962, 0xE903, 0xE8A8,\n    0xE851, 0xE7FF, 0xE7B3, 0xE76E, 0xE731, 0xE6FD, 0xE6D4, 0xE6B4,\n    0xE6A1, 0xE69A, 0xE6A1, 0xE6B3, 0xE6D0, 0xE6F7, 0xE728, 0xE761,\n    0xE7A2, 0xE7EA, 0xE838, 0xE88A, 0xE8E1, 0xE93C, 0xE999, 0xE9F7,\n    0xEA57, 0xEAB6, 0xEB15, 0xEB72, 0xEBCC, 0xEC23, 0xEC76, 0xECC4,\n    0xED0B, 0xED4C, 0xED86, 0xEDB6, 0xEDDE, 0xEDFB, 0xEE0D, 0xEE13,\n    0xE187, 0xE180, 0xE16C, 0xE14B, 0xE11F, 0xE0E8, 0xE0A7, 0xE05F,\n    0xE00F, 0xDFB8, 0xDF5C, 0xDEFB, 0xDE97, 0xDE30, 0xDDC8, 0xDD60,\n    0xDCF8, 0xDC91, 0xDC2D, 0xDBCC, 0xDB70, 0xDB1A, 0xDAC9, 0xDA81,\n    0xDA40, 0xDA0A, 0xD9DD, 0xD9BC, 0xD9A8, 0xD9A1, 0xD9A7, 0xD9BB,\n    0xD9D9, 0xDA03, 0xDA37, 0xDA73, 0xDAB8, 0xDB04, 0xDB56, 0xDBAD,\n    0xDC09, 0xDC69, 0xDCCB, 0xDD2F, 0xDD94, 0xDDF9, 0xDE5D, 0xDEBF,\n    0xDF1F, 0xDF7B, 0xDFD2, 0xE025, 0xE070, 0xE0B5, 0xE0F2, 0xE125,\n    0xE14F, 0xE16E, 0xE181, 0xE187, 0x0072, 0x0071, 0x006E, 0x006A,\n    0x0065, 0x005E, 0x0056, 0x004D, 0x0043, 0x0038, 0x002D, 0x0021,\n    0x0015, 0x0008, 0xFFFC, 0xFFEF, 0xFFE2, 0xFFD5, 0xFFC9, 0xFFBD,\n    0xFFB2, 0xFFA7, 0xFF9D, 0xFF94, 0xFF8C, 0xFF85, 0xFF80, 0xFF7C,\n    0xFF79, 0xFF78, 0xFF79, 0xFF7B, 0xFF7F, 0xFF84, 0xFF8B, 0xFF92,\n    0xFF9B, 0xFFA4, 0xFFAE, 0xFFB9, 0xFFC5, 0xFFD0, 0xFFDD, 0xFFE9,\n    0xFFF6, 0x0001, 0x000D, 0x001A, 0x0025, 0x0031, 0x003C, 0x0046,\n    0x004F, 0x0058, 0x005F, 0x0066, 0x006B, 0x006F, 0x0071, 0x0072,\n    0x01FC, 0x01F4, 0x01DC, 0x01B4, 0x0180, 0x013F, 0x00F2, 0x009C,\n    0x003D, 0xFFD7, 0xFF69, 0xFEF6, 0xFE7F, 0xFE05, 0xFD8A, 0xFD0D,\n    0xFC92, 0xFC18, 0xFBA1, 0xFB2E, 0xFAC1, 0xFA5A, 0xF9FA, 0xF9A4,\n    0xF957, 0xF916, 0xF8E2, 0xF8BA, 0xF8A2, 0xF89A, 0xF8A2, 0xF8B8,\n    0xF8DD, 0xF90F, 0xF94C, 0xF994, 0xF9E5, 0xFA3F, 0xFAA1, 0xFB09,\n    0xFB76, 0xFBE8, 0xFC5D, 0xFCD4, 0xFD4C, 0xFDC4, 0xFE3A, 0xFEAF,\n    0xFF21, 0xFF8E, 0xFFF6, 0x0057, 0x00B1, 0x0102, 0x014A, 0x0188,\n    0x01B9, 0x01DE, 0x01F5, 0x01FC, 0xECD3, 0xECC1, 0xEC8F, 0xEC3E,\n    0xEBD1, 0xEB4A, 0xEAAB, 0xE9F8, 0xE933, 0xE85D, 0xE77A, 0xE68C,\n    0xE596, 0xE499, 0xE399, 0xE297, 0xE197, 0xE09A, 0xDFA4, 0xDEB6,\n    0xDDD3, 0xDCFE, 0xDC38, 0xDB85, 0xDAE7, 0xDA60, 0xD9F2, 0xD9A1,\n    0xD96F, 0xD95D, 0xD96E, 0xD99D, 0xD9E9, 0xDA50, 0xDACE, 0xDB64,\n    0xDC0D, 0xDCC7, 0xDD91, 0xDE69, 0xDF4B, 0xE037, 0xE129, 0xE21F,\n    0xE318, 0xE411, 0xE507, 0xE5F9, 0xE6E5, 0xE7C7, 0xE89F, 0xE969,\n    0xEA24, 0xEACD, 0xEB62, 0xEBE1, 0xEC47, 0xEC93, 0xECC3, 0xECD3,\n    0x0000, 0xFFFE, 0xFFF7, 0xFFEB, 0xFFDC, 0xFFC9, 0xFFB2, 0xFF99,\n    0xFF7D, 0xFF5F, 0xFF3E, 0xFF1D, 0xFEFA, 0xFED6, 0xFEB2, 0xFE8D,\n    0xFE69, 0xFE45, 0xFE22, 0xFE00, 0xFDE0, 0xFDC2, 0xFDA6, 0xFD8C,\n    0xFD76, 0xFD63, 0xFD53, 0xFD48, 0xFD41, 0xFD3E, 0xFD41, 0xFD47,\n    0xFD52, 0xFD61, 0xFD73, 0xFD88, 0xFDA0, 0xFDBA, 0xFDD7, 0xFDF5,\n    0xFE15, 0xFE37, 0xFE59, 0xFE7C, 0xFE9F, 0xFEC3, 0xFEE6, 0xFF08,\n    0xFF29, 0xFF49, 0xFF68, 0xFF85, 0xFF9F, 0xFFB7, 0xFFCC, 0xFFDE,\n    0xFFED, 0xFFF8, 0xFFFE, 0x0000, 0x1255, 0x125C, 0x126F, 0x128D,\n    0x12B7, 0x12EA, 0x1326, 0x136A, 0x13B5, 0x1406, 0x145C, 0x14B6,\n    0x1514, 0x1574, 0x15D5, 0x1637, 0x1698, 0x16F8, 0x1755, 0x17AF,\n    0x1805, 0x1856, 0x18A1, 0x18E5, 0x1921, 0x1954, 0x197E, 0x199D,\n    0x19B0, 0x19B6, 0x19B0, 0x199E, 0x1981, 0x195B, 0x192A, 0x18F2,\n    0x18B2, 0x186B, 0x181E, 0x17CD, 0x1777, 0x171D, 0x16C2, 0x1664,\n    0x1606, 0x15A7, 0x154A, 0x14EE, 0x1495, 0x143F, 0x13ED, 0x13A0,\n    0x135A, 0x131A, 0x12E1, 0x12B1, 0x128A, 0x126D, 0x125B, 0x1255,\n    0xE11F, 0xE118, 0xE102, 0xE0DE, 0xE0AF, 0xE075, 0xE030, 0xDFE2,\n    0xDF8D, 0xDF30, 0xDECE, 0xDE66, 0xDDFC, 0xDD8E, 0xDD1F, 0xDCAF,\n    0xDC40, 0xDBD2, 0xDB68, 0xDB00, 0xDA9E, 0xDA41, 0xD9EC, 0xD99E,\n    0xD959, 0xD91F, 0xD8F0, 0xD8CC, 0xD8B6, 0xD8AF, 0xD8B6, 0xD8CA,\n    0xD8EB, 0xD918, 0xD94F, 0xD990, 0xD9D9, 0xDA2A, 0xDA82, 0xDADF,\n    0xDB41, 0xDBA7, 0xDC10, 0xDC7B, 0xDCE7, 0xDD53, 0xDDBE, 0xDE27,\n    0xDE8D, 0xDEEF, 0xDF4C, 0xDFA4, 0xDFF5, 0xE03E, 0xE07F, 0xE0B6,\n    0xE0E3, 0xE104, 0xE118, 0xE11F, 0xFF89, 0xFF89, 0xFF89, 0xFF8A,\n    0xFF8A, 0xFF8B, 0xFF8B, 0xFF8C, 0xFF8D, 0xFF8E, 0xFF8E, 0xFF8F,\n    0xFF90, 0xFF91, 0xFF92, 0xFF93, 0xFF94, 0xFF95, 0xFF96, 0xFF97,\n    0xFF98, 0xFF99, 0xFF99, 0xFF9A, 0xFF9B, 0xFF9B, 0xFF9C, 0xFF9C,\n    0xFF9C, 0xFF9C, 0xFF9C, 0xFF9C, 0xFF9C, 0xFF9B, 0xFF9B, 0xFF9A,\n    0xFF9A, 0xFF99, 0xFF98, 0xFF97, 0xFF96, 0xFF96, 0xFF95, 0xFF94,\n    0xFF93, 0xFF92, 0xFF91, 0xFF90, 0xFF8F, 0xFF8E, 0xFF8D, 0xFF8D,\n    0xFF8C, 0xFF8B, 0xFF8B, 0xFF8A, 0xFF8A, 0xFF89, 0xFF89, 0xFF89,\n    0xFE05, 0xFE0D, 0xFE25, 0xFE4C, 0xFE81, 0xFEC1, 0xFF0D, 0xFF63,\n    0xFFC2, 0x0027, 0x0093, 0x0106, 0x017C, 0x01F5, 0x0270, 0x02EB,\n    0x0366, 0x03DF, 0x0455, 0x04C7, 0x0534, 0x059A, 0x05F9, 0x064E,\n    0x069A, 0x06DB, 0x070F, 0x0736, 0x074E, 0x0757, 0x074F, 0x0738,\n    0x0714, 0x06E3, 0x06A6, 0x065E, 0x060D, 0x05B4, 0x0553, 0x04EC,\n    0x047F, 0x040E, 0x039A, 0x0324, 0x02AD, 0x0236, 0x01C0, 0x014C,\n    0x00DB, 0x006F, 0x0007, 0xFFA7, 0xFF4E, 0xFEFD, 0xFEB6, 0xFE79,\n    0xFE48, 0xFE23, 0xFE0D, 0xFE05, 0xECD3, 0xECC2, 0xEC92, 0xEC43,\n    0xEBDA, 0xEB58, 0xEABF, 0xEA12, 0xE954, 0xE886, 0xE7AB, 0xE6C5,\n    0xE5D7, 0xE4E4, 0xE3EC, 0xE2F4, 0xE1FD, 0xE109, 0xE01B, 0xDF35,\n    0xDE5A, 0xDD8D, 0xDCCE, 0xDC21, 0xDB88, 0xDB06, 0xDA9D, 0xDA4F,\n    0xDA1E, 0xDA0D, 0xDA1D, 0xDA4A, 0xDA94, 0xDAF7, 0xDB71, 0xDC01,\n    0xDCA4, 0xDD58, 0xDE1B, 0xDEEB, 0xDFC6, 0xE0A9, 0xE192, 0xE280,\n    0xE370, 0xE460, 0xE54E, 0xE637, 0xE71A, 0xE7F5, 0xE8C5, 0xE988,\n    0xEA3C, 0xEADF, 0xEB6F, 0xEBE9, 0xEC4C, 0xEC96, 0xECC3, 0xECD3,\n    0xC001, 0xC9C6, 0xC001, 0xC9C6, 0xEF81, 0xEDE4, 0xC9C6, 0xC001,\n    0xC9C6, 0x363A, 0x3FFF, 0xC9C6, 0x363A, 0x3FFF, 0xC9C6, 0x938B,\n    0xF41D, 0x6C75,\n};\n\n// 0x0600E8D8\nstatic const u16 dorrie_seg6_animindex_0600E8D8[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0000, 0x0001, 0x0003, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0399,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0398,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x038D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x038C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0388,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x003C, 0x0004,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0397,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x003C, 0x007C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x003C, 0x0040,\n    0x0001, 0x0394, 0x0001, 0x0395, 0x0001, 0x0396,\n    0x003C, 0x00B8, 0x003C, 0x00F4, 0x003C, 0x0130,\n    0x0001, 0x0391, 0x0001, 0x0392, 0x0001, 0x0393,\n    0x003C, 0x016C, 0x003C, 0x01A8, 0x003C, 0x01E4,\n    0x0001, 0x038E, 0x0001, 0x038F, 0x0001, 0x0390,\n    0x003C, 0x0220, 0x003C, 0x025C, 0x003C, 0x0298,\n    0x0001, 0x0389, 0x0001, 0x038A, 0x0001, 0x038B,\n    0x003C, 0x02D4, 0x003C, 0x0310, 0x003C, 0x034C,\n};\n\n// 0x0600E9BC\nstatic const struct Animation dorrie_seg6_anim_0600E9BC = {\n    0,\n    0,\n    0,\n    0,\n    0x3C,\n    ANIMINDEX_NUMPARTS(dorrie_seg6_animindex_0600E8D8),\n    dorrie_seg6_animvalue_0600E1A4,\n    dorrie_seg6_animindex_0600E8D8,\n    0,\n};\n"
  },
  {
    "path": "actors/dorrie/anims/anim_0600F620.inc.c",
    "content": "// 0x0600E9D4\nstatic const s16 dorrie_seg6_animvalue_0600E9D4[] = {\n    0x0000, 0xFFF6, 0xFFDA, 0x3FFF, 0x9614, 0x961E, 0x963B, 0x966A,\n    0x96A8, 0x96F6, 0x9750, 0x97B6, 0x9827, 0x989F, 0x9920, 0x99A5,\n    0x9A2F, 0x9ABC, 0x9B4A, 0x9BD8, 0x9C64, 0x9CED, 0x9D71, 0x9DEF,\n    0x9E66, 0x9ED3, 0x9F36, 0x9F8D, 0x9FD6, 0xA010, 0xA039, 0xA051,\n    0xA055, 0xA043, 0xA018, 0x9FD1, 0x9F6F, 0x9EF6, 0x9E67, 0x9DC6,\n    0x9D13, 0x9C53, 0x9B87, 0x9AB2, 0x99D5, 0x98F4, 0x9811, 0x972F,\n    0x964E, 0x9573, 0x949F, 0x93D5, 0x9318, 0x9269, 0x91CA, 0x9140,\n    0x90CB, 0x906E, 0x902C, 0x9003, 0x8FEF, 0x8FEF, 0x9000, 0x9022,\n    0x9052, 0x9090, 0x90D8, 0x912A, 0x9184, 0x91E4, 0x9249, 0x92B1,\n    0x931A, 0x9382, 0x93E9, 0x944C, 0x94A9, 0x94FF, 0x954D, 0x9590,\n    0x95C7, 0x95F1, 0x960B, 0x9614, 0xFCCB, 0xFCC9, 0xFCC5, 0xFCBE,\n    0xFCB5, 0xFCAA, 0xFC9D, 0xFC8E, 0xFC7D, 0xFC6B, 0xFC58, 0xFC44,\n    0xFC30, 0xFC1A, 0xFC05, 0xFBEF, 0xFBDA, 0xFBC5, 0xFBB0, 0xFB9C,\n    0xFB89, 0xFB77, 0xFB67, 0xFB58, 0xFB4B, 0xFB3F, 0xFB36, 0xFB2F,\n    0xFB2B, 0xFB2A, 0xFB2A, 0xFB2C, 0xFB2E, 0xFB31, 0xFB35, 0xFB3A,\n    0xFB40, 0xFB46, 0xFB4D, 0xFB55, 0xFB5D, 0xFB66, 0xFB70, 0xFB79,\n    0xFB84, 0xFB8E, 0xFB99, 0xFBA5, 0xFBB1, 0xFBBC, 0xFBC9, 0xFBD5,\n    0xFBE1, 0xFBEE, 0xFBFA, 0xFC07, 0xFC13, 0xFC20, 0xFC2C, 0xFC38,\n    0xFC44, 0xFC50, 0xFC5B, 0xFC66, 0xFC71, 0xFC7B, 0xFC85, 0xFC8E,\n    0xFC97, 0xFC9F, 0xFCA7, 0xFCAE, 0xFCB5, 0xFCBA, 0xFCBF, 0xFCC3,\n    0xFCC6, 0xFCC9, 0xFCCA, 0xFCCB, 0xFBE7, 0xFBE5, 0xFBE0, 0xFBD7,\n    0xFBCC, 0xFBBD, 0xFBAD, 0xFB9A, 0xFB85, 0xFB6F, 0xFB57, 0xFB3E,\n    0xFB25, 0xFB0A, 0xFAEF, 0xFAD4, 0xFABA, 0xFA9F, 0xFA85, 0xFA6C,\n    0xFA55, 0xFA3E, 0xFA2A, 0xFA17, 0xFA06, 0xF9F8, 0xF9ED, 0xF9E4,\n    0xF9DF, 0xF9DD, 0xF9DE, 0xF9E0, 0xF9E3, 0xF9E7, 0xF9EC, 0xF9F2,\n    0xF9F9, 0xFA01, 0xFA0A, 0xFA13, 0xFA1E, 0xFA29, 0xFA35, 0xFA41,\n    0xFA4E, 0xFA5B, 0xFA69, 0xFA77, 0xFA86, 0xFA95, 0xFAA4, 0xFAB3,\n    0xFAC3, 0xFAD2, 0xFAE2, 0xFAF2, 0xFB01, 0xFB11, 0xFB20, 0xFB2F,\n    0xFB3E, 0xFB4D, 0xFB5B, 0xFB69, 0xFB76, 0xFB83, 0xFB8F, 0xFB9B,\n    0xFBA6, 0xFBB0, 0xFBBA, 0xFBC3, 0xFBCB, 0xFBD2, 0xFBD8, 0xFBDD,\n    0xFBE1, 0xFBE4, 0xFBE6, 0xFBE7, 0x0000, 0x0004, 0x000F, 0x0022,\n    0x003C, 0x005B, 0x0080, 0x00AA, 0x00D8, 0x010A, 0x013F, 0x0176,\n    0x01B0, 0x01EB, 0x0227, 0x0263, 0x029F, 0x02D9, 0x0313, 0x034B,\n    0x037F, 0x03B1, 0x03DF, 0x0409, 0x042E, 0x044E, 0x0467, 0x047A,\n    0x0486, 0x048A, 0x0488, 0x0484, 0x047E, 0x0475, 0x0469, 0x045C,\n    0x044C, 0x043A, 0x0426, 0x0411, 0x03FA, 0x03E1, 0x03C7, 0x03AB,\n    0x038F, 0x0371, 0x0352, 0x0332, 0x0312, 0x02F1, 0x02CF, 0x02AD,\n    0x028A, 0x0268, 0x0245, 0x0222, 0x01FF, 0x01DD, 0x01BA, 0x0199,\n    0x0177, 0x0157, 0x0137, 0x0118, 0x00FB, 0x00DE, 0x00C2, 0x00A8,\n    0x0090, 0x0078, 0x0063, 0x004F, 0x003D, 0x002E, 0x0020, 0x0015,\n    0x000C, 0x0005, 0x0001, 0x0000, 0xEE13, 0xEE14, 0xEE15, 0xEE17,\n    0xEE1B, 0xEE1E, 0xEE23, 0xEE28, 0xEE2D, 0xEE33, 0xEE3A, 0xEE41,\n    0xEE47, 0xEE4F, 0xEE56, 0xEE5D, 0xEE64, 0xEE6B, 0xEE72, 0xEE79,\n    0xEE7F, 0xEE85, 0xEE8B, 0xEE90, 0xEE94, 0xEE98, 0xEE9B, 0xEE9E,\n    0xEE9F, 0xEEA0, 0xEE9F, 0xEE9F, 0xEE9E, 0xEE9D, 0xEE9C, 0xEE9A,\n    0xEE98, 0xEE96, 0xEE94, 0xEE91, 0xEE8E, 0xEE8B, 0xEE88, 0xEE85,\n    0xEE81, 0xEE7E, 0xEE7A, 0xEE76, 0xEE72, 0xEE6E, 0xEE6A, 0xEE66,\n    0xEE62, 0xEE5E, 0xEE59, 0xEE55, 0xEE51, 0xEE4D, 0xEE49, 0xEE45,\n    0xEE41, 0xEE3D, 0xEE39, 0xEE35, 0xEE32, 0xEE2E, 0xEE2B, 0xEE28,\n    0xEE25, 0xEE22, 0xEE1F, 0xEE1D, 0xEE1B, 0xEE19, 0xEE17, 0xEE16,\n    0xEE15, 0xEE14, 0xEE13, 0xEE13, 0xE187, 0xE17E, 0xE162, 0xE135,\n    0xE0F9, 0xE0AE, 0xE056, 0xDFF3, 0xDF86, 0xDF10, 0xDE92, 0xDE0F,\n    0xDD86, 0xDCFB, 0xDC6D, 0xDBDF, 0xDB51, 0xDAC5, 0xDA3D, 0xD9B9,\n    0xD93C, 0xD8C5, 0xD858, 0xD7F5, 0xD79E, 0xD753, 0xD717, 0xD6EA,\n    0xD6CE, 0xD6C4, 0xD6C7, 0xD6D1, 0xD6E1, 0xD6F6, 0xD711, 0xD732,\n    0xD757, 0xD781, 0xD7B0, 0xD7E3, 0xD81A, 0xD854, 0xD892, 0xD8D3,\n    0xD917, 0xD95E, 0xD9A7, 0xD9F2, 0xDA3F, 0xDA8E, 0xDADE, 0xDB2F,\n    0xDB81, 0xDBD3, 0xDC26, 0xDC78, 0xDCCB, 0xDD1D, 0xDD6E, 0xDDBE,\n    0xDE0C, 0xDE59, 0xDEA4, 0xDEEE, 0xDF34, 0xDF78, 0xDFB9, 0xDFF7,\n    0xE032, 0xE069, 0xE09C, 0xE0CA, 0xE0F4, 0xE11A, 0xE13A, 0xE155,\n    0xE16B, 0xE17A, 0xE184, 0xE187, 0x0072, 0x0071, 0x0070, 0x006E,\n    0x006B, 0x0067, 0x0062, 0x005D, 0x0058, 0x0052, 0x004C, 0x0045,\n    0x003E, 0x0037, 0x0030, 0x0029, 0x0021, 0x001A, 0x0013, 0x000D,\n    0x0006, 0x0000, 0xFFFC, 0xFFF7, 0xFFF3, 0xFFEF, 0xFFEC, 0xFFE9,\n    0xFFE8, 0xFFE8, 0xFFE8, 0xFFE8, 0xFFE9, 0xFFEA, 0xFFEB, 0xFFED,\n    0xFFEF, 0xFFF1, 0xFFF3, 0xFFF6, 0xFFF9, 0xFFFC, 0xFFFF, 0x0001,\n    0x0005, 0x0008, 0x000C, 0x0010, 0x0014, 0x0018, 0x001C, 0x0020,\n    0x0024, 0x0028, 0x002C, 0x0030, 0x0034, 0x0039, 0x003D, 0x0041,\n    0x0045, 0x0049, 0x004C, 0x0050, 0x0054, 0x0057, 0x005A, 0x005E,\n    0x0061, 0x0063, 0x0066, 0x0068, 0x006A, 0x006C, 0x006E, 0x006F,\n    0x0070, 0x0071, 0x0072, 0x0072, 0x01FC, 0x01FC, 0x01FC, 0x01FD,\n    0x01FD, 0x01FD, 0x01FE, 0x01FE, 0x01FF, 0x01FF, 0x0200, 0x0200,\n    0x0201, 0x0201, 0x0202, 0x0203, 0x0203, 0x0204, 0x0205, 0x0205,\n    0x0206, 0x0206, 0x0207, 0x0207, 0x0207, 0x0208, 0x0208, 0x0208,\n    0x0208, 0x0208, 0x0208, 0x0208, 0x0208, 0x0208, 0x0208, 0x0208,\n    0x0208, 0x0208, 0x0207, 0x0207, 0x0207, 0x0207, 0x0206, 0x0206,\n    0x0206, 0x0205, 0x0205, 0x0205, 0x0204, 0x0204, 0x0204, 0x0203,\n    0x0203, 0x0203, 0x0202, 0x0202, 0x0202, 0x0201, 0x0201, 0x0201,\n    0x0200, 0x0200, 0x0200, 0x01FF, 0x01FF, 0x01FF, 0x01FE, 0x01FE,\n    0x01FE, 0x01FE, 0x01FD, 0x01FD, 0x01FD, 0x01FD, 0x01FD, 0x01FD,\n    0x01FC, 0x01FC, 0x01FC, 0x01FC, 0xECD3, 0xECC9, 0xECAC, 0xEC7F,\n    0xEC41, 0xEBF4, 0xEB9B, 0xEB35, 0xEAC6, 0xEA4D, 0xE9CC, 0xE946,\n    0xE8BA, 0xE82B, 0xE79A, 0xE708, 0xE677, 0xE5E8, 0xE55D, 0xE4D6,\n    0xE455, 0xE3DD, 0xE36D, 0xE307, 0xE2AE, 0xE261, 0xE224, 0xE1F6,\n    0xE1D9, 0xE1CF, 0xE1D3, 0xE1DC, 0xE1ED, 0xE203, 0xE21E, 0xE23F,\n    0xE266, 0xE291, 0xE2C0, 0xE2F5, 0xE32D, 0xE369, 0xE3A8, 0xE3EB,\n    0xE430, 0xE479, 0xE4C3, 0xE510, 0xE55F, 0xE5B0, 0xE602, 0xE655,\n    0xE6A8, 0xE6FD, 0xE751, 0xE7A6, 0xE7FA, 0xE84E, 0xE8A1, 0xE8F2,\n    0xE943, 0xE992, 0xE9DF, 0xEA29, 0xEA72, 0xEAB7, 0xEAFA, 0xEB3A,\n    0xEB75, 0xEBAE, 0xEBE2, 0xEC11, 0xEC3D, 0xEC63, 0xEC84, 0xECA0,\n    0xECB6, 0xECC6, 0xECCF, 0xECD3, 0x0000, 0xFFFC, 0xFFF0, 0xFFDD,\n    0xFFC3, 0xFFA2, 0xFF7C, 0xFF52, 0xFF22, 0xFEEF, 0xFEB9, 0xFE80,\n    0xFE45, 0xFE08, 0xFDCB, 0xFD8D, 0xFD50, 0xFD14, 0xFCD9, 0xFCA0,\n    0xFC69, 0xFC36, 0xFC07, 0xFBDC, 0xFBB6, 0xFB96, 0xFB7C, 0xFB68,\n    0xFB5C, 0xFB58, 0xFB5A, 0xFB5E, 0xFB64, 0xFB6E, 0xFB79, 0xFB87,\n    0xFB98, 0xFBAA, 0xFBBE, 0xFBD4, 0xFBEC, 0xFC05, 0xFC20, 0xFC3C,\n    0xFC5A, 0xFC78, 0xFC98, 0xFCB8, 0xFCDA, 0xFCFC, 0xFD1E, 0xFD42,\n    0xFD65, 0xFD89, 0xFDAC, 0xFDD0, 0xFDF4, 0xFE17, 0xFE3A, 0xFE5D,\n    0xFE7F, 0xFEA0, 0xFEC1, 0xFEE0, 0xFEFF, 0xFF1C, 0xFF39, 0xFF53,\n    0xFF6D, 0xFF84, 0xFF9B, 0xFFAF, 0xFFC1, 0xFFD1, 0xFFDF, 0xFFEB,\n    0xFFF4, 0xFFFB, 0xFFFF, 0x0000, 0x1255, 0x1255, 0x1253, 0x1251,\n    0x124E, 0x124A, 0x1245, 0x1240, 0x123A, 0x1234, 0x122D, 0x1227,\n    0x121F, 0x1218, 0x1211, 0x1209, 0x1202, 0x11FB, 0x11F4, 0x11ED,\n    0x11E6, 0x11E0, 0x11DA, 0x11D5, 0x11D0, 0x11CD, 0x11C9, 0x11C7,\n    0x11C6, 0x11C5, 0x11C5, 0x11C6, 0x11C7, 0x11C8, 0x11C9, 0x11CB,\n    0x11CD, 0x11CF, 0x11D1, 0x11D4, 0x11D7, 0x11DA, 0x11DD, 0x11E1,\n    0x11E4, 0x11E8, 0x11EC, 0x11F0, 0x11F4, 0x11F8, 0x11FC, 0x1200,\n    0x1204, 0x1209, 0x120D, 0x1211, 0x1216, 0x121A, 0x121E, 0x1222,\n    0x1226, 0x122B, 0x122E, 0x1232, 0x1236, 0x1239, 0x123D, 0x1240,\n    0x1243, 0x1246, 0x1249, 0x124B, 0x124D, 0x124F, 0x1251, 0x1252,\n    0x1254, 0x1254, 0x1255, 0x1255, 0xE11F, 0xE115, 0xE0F9, 0xE0CC,\n    0xE090, 0xE045, 0xDFED, 0xDF89, 0xDF1B, 0xDEA5, 0xDE27, 0xDDA2,\n    0xDD1A, 0xDC8D, 0xDBFF, 0xDB70, 0xDAE1, 0xDA55, 0xD9CC, 0xD948,\n    0xD8CA, 0xD853, 0xD7E5, 0xD782, 0xD72A, 0xD6DF, 0xD6A2, 0xD675,\n    0xD659, 0xD64F, 0xD653, 0xD65C, 0xD66C, 0xD682, 0xD69D, 0xD6BD,\n    0xD6E3, 0xD70D, 0xD73C, 0xD76F, 0xD7A6, 0xD7E1, 0xD81F, 0xD861,\n    0xD8A5, 0xD8EC, 0xD936, 0xD981, 0xD9CF, 0xDA1E, 0xDA6E, 0xDABF,\n    0xDB11, 0xDB64, 0xDBB7, 0xDC0A, 0xDC5D, 0xDCAF, 0xDD00, 0xDD51,\n    0xDDA0, 0xDDED, 0xDE39, 0xDE82, 0xDEC9, 0xDF0E, 0xDF4F, 0xDF8D,\n    0xDFC8, 0xDFFF, 0xE032, 0xE061, 0xE08B, 0xE0B1, 0xE0D2, 0xE0ED,\n    0xE102, 0xE112, 0xE11C, 0xE11F, 0xFF89, 0xFF89, 0xFF8A, 0xFF8B,\n    0xFF8B, 0xFF8D, 0xFF8E, 0xFF90, 0xFF91, 0xFF93, 0xFF95, 0xFF97,\n    0xFF99, 0xFF9C, 0xFF9E, 0xFFA0, 0xFFA2, 0xFFA4, 0xFFA7, 0xFFA9,\n    0xFFAB, 0xFFAD, 0xFFAE, 0xFFB0, 0xFFB1, 0xFFB2, 0xFFB3, 0xFFB4,\n    0xFFB4, 0xFFB5, 0xFFB5, 0xFFB4, 0xFFB4, 0xFFB4, 0xFFB3, 0xFFB3,\n    0xFFB2, 0xFFB2, 0xFFB1, 0xFFB0, 0xFFAF, 0xFFAE, 0xFFAD, 0xFFAC,\n    0xFFAB, 0xFFAA, 0xFFA9, 0xFFA8, 0xFFA7, 0xFFA5, 0xFFA4, 0xFFA3,\n    0xFFA2, 0xFFA0, 0xFF9F, 0xFF9E, 0xFF9C, 0xFF9B, 0xFF9A, 0xFF99,\n    0xFF97, 0xFF96, 0xFF95, 0xFF94, 0xFF93, 0xFF92, 0xFF90, 0xFF90,\n    0xFF8F, 0xFF8E, 0xFF8D, 0xFF8C, 0xFF8C, 0xFF8B, 0xFF8A, 0xFF8A,\n    0xFF8A, 0xFF89, 0xFF89, 0xFF89, 0xFE05, 0xFE05, 0xFE06, 0xFE07,\n    0xFE08, 0xFE0A, 0xFE0C, 0xFE0E, 0xFE11, 0xFE13, 0xFE16, 0xFE19,\n    0xFE1C, 0xFE1F, 0xFE23, 0xFE26, 0xFE29, 0xFE2C, 0xFE2F, 0xFE32,\n    0xFE35, 0xFE38, 0xFE3A, 0xFE3D, 0xFE3F, 0xFE40, 0xFE42, 0xFE43,\n    0xFE43, 0xFE44, 0xFE44, 0xFE43, 0xFE43, 0xFE42, 0xFE42, 0xFE41,\n    0xFE40, 0xFE3F, 0xFE3E, 0xFE3D, 0xFE3C, 0xFE3A, 0xFE39, 0xFE38,\n    0xFE36, 0xFE34, 0xFE33, 0xFE31, 0xFE2F, 0xFE2D, 0xFE2C, 0xFE2A,\n    0xFE28, 0xFE26, 0xFE24, 0xFE22, 0xFE20, 0xFE1F, 0xFE1D, 0xFE1B,\n    0xFE19, 0xFE17, 0xFE16, 0xFE14, 0xFE12, 0xFE11, 0xFE0F, 0xFE0E,\n    0xFE0D, 0xFE0B, 0xFE0A, 0xFE09, 0xFE08, 0xFE07, 0xFE07, 0xFE06,\n    0xFE05, 0xFE05, 0xFE05, 0xFE05, 0xECD3, 0xECC9, 0xECAD, 0xEC7F,\n    0xEC41, 0xEBF4, 0xEB9B, 0xEB35, 0xEAC5, 0xEA4C, 0xE9CC, 0xE945,\n    0xE8BA, 0xE82A, 0xE799, 0xE707, 0xE676, 0xE5E7, 0xE55C, 0xE4D5,\n    0xE454, 0xE3DB, 0xE36C, 0xE306, 0xE2AC, 0xE260, 0xE222, 0xE1F4,\n    0xE1D8, 0xE1CE, 0xE1D1, 0xE1DB, 0xE1EB, 0xE201, 0xE21D, 0xE23E,\n    0xE264, 0xE28F, 0xE2BF, 0xE2F3, 0xE32B, 0xE367, 0xE3A7, 0xE3E9,\n    0xE42F, 0xE478, 0xE4C2, 0xE50F, 0xE55E, 0xE5AF, 0xE601, 0xE654,\n    0xE6A7, 0xE6FC, 0xE750, 0xE7A5, 0xE7F9, 0xE84D, 0xE8A0, 0xE8F2,\n    0xE942, 0xE991, 0xE9DE, 0xEA29, 0xEA72, 0xEAB7, 0xEAFA, 0xEB39,\n    0xEB75, 0xEBAE, 0xEBE2, 0xEC11, 0xEC3D, 0xEC63, 0xEC84, 0xECA0,\n    0xECB6, 0xECC6, 0xECD0, 0xECD3, 0xC001, 0xC9C6, 0xC001, 0xC9C6,\n    0xEF81, 0xEF62, 0xEF09, 0xEE79, 0xEDB5, 0xECC3, 0xEBA5, 0xEA5F,\n    0xE8F6, 0xE76D, 0xE5C8, 0xE40A, 0xE239, 0xE057, 0xDE68, 0xDC71,\n    0xDA74, 0xD877, 0xD67C, 0xD488, 0xD29E, 0xD0C2, 0xCEF9, 0xCD46,\n    0xCBAC, 0xCA30, 0xC8D5, 0xC7A0, 0xC694, 0xC5B5, 0xC4FE, 0xC466,\n    0xC3ED, 0xC390, 0xC34F, 0xC329, 0xC31C, 0xC327, 0xC349, 0xC382,\n    0xC3CE, 0xC42F, 0xC4A1, 0xC525, 0xC5B9, 0xC65B, 0xC70B, 0xC7C7,\n    0xC88F, 0xC960, 0xCA48, 0xCB51, 0xCC79, 0xCDBD, 0xCF1A, 0xD08D,\n    0xD213, 0xD3A9, 0xD54C, 0xD6FA, 0xD8AF, 0xDA68, 0xDC23, 0xDDDD,\n    0xDF93, 0xE142, 0xE2E6, 0xE47D, 0xE605, 0xE77A, 0xE8D9, 0xEA20,\n    0xEB4B, 0xEC57, 0xED43, 0xEE0A, 0xEEAA, 0xEF1F, 0xEF68, 0xEF81,\n    0xEDE4, 0xEDEB, 0xEDFD, 0xEE1B, 0xEE44, 0xEE76, 0xEEB1, 0xEEF4,\n    0xEF3E, 0xEF8E, 0xEFE3, 0xF03D, 0xF09A, 0xF0FA, 0xF15C, 0xF1BE,\n    0xF221, 0xF283, 0xF2E4, 0xF341, 0xF39C, 0xF3F2, 0xF443, 0xF48E,\n    0xF4D2, 0xF50F, 0xF543, 0xF56D, 0xF58D, 0xF5A2, 0xF5A8, 0xF59E,\n    0xF585, 0xF55F, 0xF52D, 0xF4F1, 0xF4AC, 0xF460, 0xF40E, 0xF3B8,\n    0xF360, 0xF306, 0xF2AC, 0xF254, 0xF1FF, 0xF1AF, 0xF166, 0xF124,\n    0xF0EC, 0xF0BE, 0xF097, 0xF070, 0xF049, 0xF024, 0xEFFF, 0xEFDA,\n    0xEFB6, 0xEF94, 0xEF72, 0xEF51, 0xEF31, 0xEF12, 0xEEF4, 0xEED8,\n    0xEEBD, 0xEEA3, 0xEE8A, 0xEE73, 0xEE5D, 0xEE49, 0xEE37, 0xEE26,\n    0xEE17, 0xEE0A, 0xEDFF, 0xEDF5, 0xEDEE, 0xEDE8, 0xEDE5, 0xEDE4,\n    0xC9C6, 0xC001, 0xC9C6, 0x363A, 0x3FFF, 0xC9C6, 0x363A, 0x3FFF,\n    0xC9C6, 0x938B, 0xF41D, 0xF436, 0xF47F, 0xF4F6, 0xF597, 0xF65E,\n    0xF749, 0xF856, 0xF97F, 0xFAC4, 0xFC1F, 0xFD8F, 0xFF10, 0x009F,\n    0x0239, 0x03DB, 0x0582, 0x072A, 0x08D1, 0x0A74, 0x0C0E, 0x0D9E,\n    0x0F21, 0x1092, 0x11EF, 0x1334, 0x1460, 0x156E, 0x165C, 0x1726,\n    0x17D3, 0x186E, 0x18F7, 0x196D, 0x19D1, 0x1A22, 0x1A61, 0x1A8D,\n    0x1AA8, 0x1AB0, 0x1AA6, 0x1A8A, 0x1A5C, 0x1A1C, 0x19CA, 0x1966,\n    0x18F0, 0x1869, 0x17D0, 0x1726, 0x1661, 0x157B, 0x1476, 0x1357,\n    0x121E, 0x10D0, 0x0F6E, 0x0DFC, 0x0C7D, 0x0AF3, 0x0961, 0x07C9,\n    0x062F, 0x0496, 0x0300, 0x0170, 0xFFE9, 0xFE6D, 0xFD00, 0xFBA4,\n    0xFA5B, 0xF929, 0xF811, 0xF715, 0xF639, 0xF57E, 0xF4E7, 0xF479,\n    0xF434, 0xF41D, 0x6C75, 0x0000,\n};\n\n// 0x0600F53C\nstatic const u16 dorrie_seg6_animindex_0600F53C[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0000, 0x0001, 0x0003, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x05B2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0050, 0x0562,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0050, 0x0508,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0050, 0x04B8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x04B4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0050, 0x0004,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0561,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0050, 0x00A4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0050, 0x0054,\n    0x0001, 0x055E, 0x0001, 0x055F, 0x0001, 0x0560,\n    0x0050, 0x00F4, 0x0050, 0x0144, 0x0050, 0x0194,\n    0x0001, 0x055B, 0x0001, 0x055C, 0x0001, 0x055D,\n    0x0050, 0x01E4, 0x0050, 0x0234, 0x0050, 0x0284,\n    0x0001, 0x0558, 0x0001, 0x0559, 0x0001, 0x055A,\n    0x0050, 0x02D4, 0x0050, 0x0324, 0x0050, 0x0374,\n    0x0001, 0x04B5, 0x0001, 0x04B6, 0x0001, 0x04B7,\n    0x0050, 0x03C4, 0x0050, 0x0414, 0x0050, 0x0464,\n};\n\n// 0x0600F620\nstatic const struct Animation dorrie_seg6_anim_0600F620 = {\n    0,\n    0,\n    0,\n    0,\n    0x50,\n    ANIMINDEX_NUMPARTS(dorrie_seg6_animindex_0600F53C),\n    dorrie_seg6_animvalue_0600E9D4,\n    dorrie_seg6_animindex_0600F53C,\n    0,\n};\n"
  },
  {
    "path": "actors/dorrie/anims/data.inc.c",
    "content": "#include \"anim_0600E18C.inc.c\"\n#include \"anim_0600E9BC.inc.c\"\n#include \"anim_0600F620.inc.c\"\n"
  },
  {
    "path": "actors/dorrie/anims/table.inc.c",
    "content": "// 0x0600F638\nconst struct Animation *const dorrie_seg6_anims_0600F638[] = {\n    &dorrie_seg6_anim_0600E18C,\n    &dorrie_seg6_anim_0600E9BC,\n    &dorrie_seg6_anim_0600F620,\n};\n"
  },
  {
    "path": "actors/dorrie/collision.inc.c",
    "content": "// Dorrie\n\n// 0x0600F644 - 0x0600FBB8\nconst Collision dorrie_seg6_collision_0600F644[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x4E),\n    COL_VERTEX(-104, 657, 512),\n    COL_VERTEX(-46, 632, 440),\n    COL_VERTEX(-75, 522, 419),\n    COL_VERTEX(-128, 539, 528),\n    COL_VERTEX(-120, 607, 610),\n    COL_VERTEX(-129, 534, 615),\n    COL_VERTEX(-41, 717, 644),\n    COL_VERTEX(-37, 713, 500),\n    COL_VERTEX(104, 657, 512),\n    COL_VERTEX(128, 539, 528),\n    COL_VERTEX(75, 522, 419),\n    COL_VERTEX(46, 632, 440),\n    COL_VERTEX(37, 713, 500),\n    COL_VERTEX(41, 717, 644),\n    COL_VERTEX(120, 607, 610),\n    COL_VERTEX(44, 647, 703),\n    COL_VERTEX(-44, 647, 703),\n    COL_VERTEX(-105, 603, 707),\n    COL_VERTEX(-123, 512, 709),\n    COL_VERTEX(129, 534, 615),\n    COL_VERTEX(123, 512, 709),\n    COL_VERTEX(-46, 616, 801),\n    COL_VERTEX(-58, 525, 822),\n    COL_VERTEX(46, 616, 801),\n    COL_VERTEX(173, -95, -339),\n    COL_VERTEX(0, -91, -947),\n    COL_VERTEX(94, -87, -586),\n    COL_VERTEX(0, -130, -307),\n    COL_VERTEX(-171, 105, -339),\n    COL_VERTEX(0, 168, -339),\n    COL_VERTEX(-94, -87, -586),\n    COL_VERTEX(-146, 294, -120),\n    COL_VERTEX(-280, 145, -153),\n    COL_VERTEX(146, 294, -120),\n    COL_VERTEX(301, -141, -152),\n    COL_VERTEX(280, 145, -153),\n    COL_VERTEX(-103, 298, 97),\n    COL_VERTEX(-278, 145, 219),\n    COL_VERTEX(-301, -141, -152),\n    COL_VERTEX(-91, 247, 228),\n    COL_VERTEX(97, 298, 97),\n    COL_VERTEX(92, 247, 228),\n    COL_VERTEX(307, -96, 202),\n    COL_VERTEX(89, 314, 286),\n    COL_VERTEX(241, 158, 291),\n    COL_VERTEX(-88, 314, 286),\n    COL_VERTEX(105, 603, 707),\n    COL_VERTEX(58, 525, 822),\n    COL_VERTEX(0, -108, -586),\n    COL_VERTEX(94, 29, -585),\n    COL_VERTEX(-94, 29, -585),\n    COL_VERTEX(0, 73, -585),\n    COL_VERTEX(171, 105, -339),\n    COL_VERTEX(-173, -95, -339),\n    COL_VERTEX(-313, -95, 205),\n    COL_VERTEX(277, 145, 219),\n    COL_VERTEX(-244, 159, 292),\n    COL_VERTEX(86, 381, 344),\n    COL_VERTEX(171, 343, 404),\n    COL_VERTEX(-85, 381, 344),\n    COL_VERTEX(121, 277, 523),\n    COL_VERTEX(164, 100, 467),\n    COL_VERTEX(100, 474, 583),\n    COL_VERTEX(-171, 343, 404),\n    COL_VERTEX(0, 453, 611),\n    COL_VERTEX(-105, 474, 583),\n    COL_VERTEX(0, 243, 572),\n    COL_VERTEX(-156, -17, 448),\n    COL_VERTEX(155, -16, 447),\n    COL_VERTEX(279, 29, 237),\n    COL_VERTEX(-169, 102, 466),\n    COL_VERTEX(185, -185, 249),\n    COL_VERTEX(-194, -192, -152),\n    COL_VERTEX(193, -192, -152),\n    COL_VERTEX(0, 63, 535),\n    COL_VERTEX(-123, 277, 523),\n    COL_VERTEX(-284, 29, 239),\n    COL_VERTEX(-186, -185, 249),\n\n    COL_TRI_INIT(SURFACE_NO_CAM_COLLISION, 67),\n    COL_TRI(58, 57, 10),\n    COL_TRI(22, 20, 47),\n    COL_TRI(22, 18, 20),\n    COL_TRI(20, 5, 19),\n    COL_TRI(20, 18, 5),\n    COL_TRI(57, 2, 10),\n    COL_TRI(58, 10, 9),\n    COL_TRI(10, 2, 1),\n    COL_TRI(10, 1, 11),\n    COL_TRI(43, 57, 44),\n    COL_TRI(57, 59, 2),\n    COL_TRI(3, 2, 59),\n    COL_TRI(44, 57, 58),\n    COL_TRI(60, 58, 9),\n    COL_TRI(61, 58, 60),\n    COL_TRI(61, 44, 58),\n    COL_TRI(9, 19, 62),\n    COL_TRI(60, 9, 62),\n    COL_TRI(57, 45, 59),\n    COL_TRI(57, 43, 45),\n    COL_TRI(62, 64, 66),\n    COL_TRI(3, 65, 5),\n    COL_TRI(63, 65, 3),\n    COL_TRI(3, 59, 63),\n    COL_TRI(59, 45, 56),\n    COL_TRI(63, 59, 56),\n    COL_TRI(63, 75, 65),\n    COL_TRI(56, 75, 63),\n    COL_TRI(64, 19, 5),\n    COL_TRI(5, 65, 64),\n    COL_TRI(64, 62, 19),\n    COL_TRI(64, 65, 75),\n    COL_TRI(64, 75, 66),\n    COL_TRI(56, 70, 75),\n    COL_TRI(66, 75, 70),\n    COL_TRI(54, 67, 70),\n    COL_TRI(62, 66, 60),\n    COL_TRI(60, 74, 61),\n    COL_TRI(60, 66, 74),\n    COL_TRI(67, 74, 70),\n    COL_TRI(61, 74, 68),\n    COL_TRI(68, 74, 67),\n    COL_TRI(66, 70, 74),\n    COL_TRI(69, 44, 61),\n    COL_TRI(42, 69, 61),\n    COL_TRI(61, 68, 42),\n    COL_TRI(54, 70, 76),\n    COL_TRI(70, 56, 76),\n    COL_TRI(42, 71, 73),\n    COL_TRI(37, 54, 76),\n    COL_TRI(38, 77, 54),\n    COL_TRI(67, 54, 77),\n    COL_TRI(71, 68, 67),\n    COL_TRI(71, 67, 77),\n    COL_TRI(42, 68, 71),\n    COL_TRI(42, 55, 69),\n    COL_TRI(42, 73, 34),\n    COL_TRI(72, 71, 77),\n    COL_TRI(72, 73, 71),\n    COL_TRI(38, 72, 77),\n    COL_TRI(38, 53, 72),\n    COL_TRI(72, 53, 27),\n    COL_TRI(72, 27, 73),\n    COL_TRI(73, 27, 24),\n    COL_TRI(24, 34, 73),\n    COL_TRI(56, 37, 76),\n    COL_TRI(55, 44, 69),\n\n    COL_TRI_INIT(SURFACE_SWITCH, 85),\n    COL_TRI(0, 1, 2),\n    COL_TRI(2, 3, 0),\n    COL_TRI(4, 0, 3),\n    COL_TRI(4, 3, 5),\n    COL_TRI(0, 4, 6),\n    COL_TRI(7, 1, 0),\n    COL_TRI(6, 7, 0),\n    COL_TRI(8, 9, 10),\n    COL_TRI(10, 11, 8),\n    COL_TRI(12, 11, 1),\n    COL_TRI(8, 11, 12),\n    COL_TRI(12, 1, 7),\n    COL_TRI(4, 17, 16),\n    COL_TRI(8, 12, 13),\n    COL_TRI(9, 8, 14),\n    COL_TRI(13, 14, 8),\n    COL_TRI(13, 12, 7),\n    COL_TRI(13, 7, 6),\n    COL_TRI(14, 13, 15),\n    COL_TRI(6, 15, 13),\n    COL_TRI(16, 6, 4),\n    COL_TRI(6, 16, 15),\n    COL_TRI(17, 21, 16),\n    COL_TRI(16, 21, 23),\n    COL_TRI(16, 23, 15),\n    COL_TRI(23, 47, 20),\n    COL_TRI(5, 18, 4),\n    COL_TRI(18, 17, 4),\n    COL_TRI(19, 9, 14),\n    COL_TRI(15, 46, 14),\n    COL_TRI(20, 14, 46),\n    COL_TRI(14, 20, 19),\n    COL_TRI(21, 17, 18),\n    COL_TRI(18, 22, 21),\n    COL_TRI(22, 47, 23),\n    COL_TRI(22, 23, 21),\n    COL_TRI(15, 23, 46),\n    COL_TRI(20, 46, 23),\n    COL_TRI(24, 48, 26),\n    COL_TRI(24, 26, 49),\n    COL_TRI(25, 49, 26),\n    COL_TRI(26, 48, 25),\n    COL_TRI(24, 27, 48),\n    COL_TRI(27, 30, 48),\n    COL_TRI(25, 48, 30),\n    COL_TRI(25, 50, 51),\n    COL_TRI(25, 30, 50),\n    COL_TRI(25, 51, 49),\n    COL_TRI(28, 29, 51),\n    COL_TRI(28, 51, 50),\n    COL_TRI(29, 49, 51),\n    COL_TRI(24, 49, 52),\n    COL_TRI(29, 52, 49),\n    COL_TRI(30, 53, 28),\n    COL_TRI(27, 53, 30),\n    COL_TRI(30, 28, 50),\n    COL_TRI(38, 37, 32),\n    COL_TRI(31, 28, 32),\n    COL_TRI(32, 28, 53),\n    COL_TRI(29, 28, 31),\n    COL_TRI(33, 29, 31),\n    COL_TRI(33, 52, 29),\n    COL_TRI(34, 24, 52),\n    COL_TRI(32, 53, 38),\n    COL_TRI(35, 52, 33),\n    COL_TRI(34, 52, 35),\n    COL_TRI(36, 33, 31),\n    COL_TRI(37, 36, 31),\n    COL_TRI(31, 32, 37),\n    COL_TRI(36, 39, 41),\n    COL_TRI(39, 37, 56),\n    COL_TRI(37, 39, 36),\n    COL_TRI(38, 54, 37),\n    COL_TRI(35, 33, 55),\n    COL_TRI(33, 40, 55),\n    COL_TRI(36, 40, 33),\n    COL_TRI(40, 41, 55),\n    COL_TRI(36, 41, 40),\n    COL_TRI(41, 44, 55),\n    COL_TRI(42, 35, 55),\n    COL_TRI(45, 39, 56),\n    COL_TRI(42, 34, 35),\n    COL_TRI(43, 41, 39),\n    COL_TRI(44, 41, 43),\n    COL_TRI(43, 39, 45),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n\n// 0x0600FBB8 - 0x060100CE\nconst Collision dorrie_seg6_collision_0600FBB8[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x49),\n    COL_VERTEX(-301, -141, -152),\n    COL_VERTEX(-194, -192, -152),\n    COL_VERTEX(-186, -185, 249),\n    COL_VERTEX(193, -192, -152),\n    COL_VERTEX(185, -185, 249),\n    COL_VERTEX(0, -130, -307),\n    COL_VERTEX(-173, -95, -339),\n    COL_VERTEX(173, -95, -339),\n    COL_VERTEX(-94, -87, -586),\n    COL_VERTEX(0, -108, -586),\n    COL_VERTEX(297, -96, 197),\n    COL_VERTEX(301, -141, -152),\n    COL_VERTEX(-280, 145, -153),\n    COL_VERTEX(-171, 105, -339),\n    COL_VERTEX(171, 105, -339),\n    COL_VERTEX(94, -87, -586),\n    COL_VERTEX(94, 29, -585),\n    COL_VERTEX(-91, 247, 228),\n    COL_VERTEX(-277, 145, 219),\n    COL_VERTEX(-298, -96, 197),\n    COL_VERTEX(-153, -15, 440),\n    COL_VERTEX(-146, 294, -120),\n    COL_VERTEX(92, 247, 228),\n    COL_VERTEX(152, -15, 440),\n    COL_VERTEX(280, 145, -153),\n    COL_VERTEX(97, 298, 97),\n    COL_VERTEX(146, 294, -120),\n    COL_VERTEX(-103, 298, 97),\n    COL_VERTEX(0, 168, -339),\n    COL_VERTEX(0, 73, -585),\n    COL_VERTEX(-94, 29, -585),\n    COL_VERTEX(-205, 154, 285),\n    COL_VERTEX(0, -9, 529),\n    COL_VERTEX(0, -91, -947),\n    COL_VERTEX(75, 96, 735),\n    COL_VERTEX(0, 55, 717),\n    COL_VERTEX(106, 46, 523),\n    COL_VERTEX(-141, 183, 508),\n    COL_VERTEX(129, 180, 821),\n    COL_VERTEX(-129, 180, 821),\n    COL_VERTEX(109, 191, 711),\n    COL_VERTEX(-128, 187, 734),\n    COL_VERTEX(104, 306, 720),\n    COL_VERTEX(140, 183, 508),\n    COL_VERTEX(128, 187, 734),\n    COL_VERTEX(41, 362, 854),\n    COL_VERTEX(53, 254, 642),\n    COL_VERTEX(-109, 191, 711),\n    COL_VERTEX(-41, 362, 854),\n    COL_VERTEX(-120, 254, 818),\n    COL_VERTEX(-37, 362, 710),\n    COL_VERTEX(-104, 306, 720),\n    COL_VERTEX(-53, 254, 642),\n    COL_VERTEX(37, 362, 710),\n    COL_VERTEX(-46, 283, 648),\n    COL_VERTEX(-123, 156, 914),\n    COL_VERTEX(-58, 167, 1027),\n    COL_VERTEX(46, 258, 1008),\n    COL_VERTEX(-44, 291, 912),\n    COL_VERTEX(123, 156, 914),\n    COL_VERTEX(44, 291, 912),\n    COL_VERTEX(-105, 247, 914),\n    COL_VERTEX(-46, 258, 1008),\n    COL_VERTEX(120, 254, 818),\n    COL_VERTEX(205, 154, 285),\n    COL_VERTEX(74, 255, 500),\n    COL_VERTEX(277, 145, 219),\n    COL_VERTEX(-106, 46, 523),\n    COL_VERTEX(-75, 96, 735),\n    COL_VERTEX(-74, 255, 500),\n    COL_VERTEX(46, 283, 648),\n    COL_VERTEX(58, 167, 1027),\n    COL_VERTEX(105, 247, 914),\n\n    COL_TRI_INIT(SURFACE_SWITCH, 142),\n    COL_TRI(0, 1, 2),\n    COL_TRI(1, 3, 4),\n    COL_TRI(1, 5, 3),\n    COL_TRI(1, 6, 5),\n    COL_TRI(1, 4, 2),\n    COL_TRI(0, 6, 1),\n    COL_TRI(3, 5, 7),\n    COL_TRI(5, 8, 9),\n    COL_TRI(5, 6, 8),\n    COL_TRI(7, 5, 9),\n    COL_TRI(10, 3, 11),\n    COL_TRI(10, 4, 3),\n    COL_TRI(7, 11, 3),\n    COL_TRI(12, 13, 6),\n    COL_TRI(12, 6, 0),\n    COL_TRI(8, 6, 13),\n    COL_TRI(11, 7, 14),\n    COL_TRI(7, 15, 16),\n    COL_TRI(7, 9, 15),\n    COL_TRI(7, 16, 14),\n    COL_TRI(17, 18, 31),\n    COL_TRI(18, 17, 27),\n    COL_TRI(18, 27, 21),\n    COL_TRI(0, 19, 18),\n    COL_TRI(0, 18, 12),\n    COL_TRI(21, 12, 18),\n    COL_TRI(20, 31, 18),\n    COL_TRI(22, 64, 66),\n    COL_TRI(23, 66, 64),\n    COL_TRI(24, 26, 66),\n    COL_TRI(25, 22, 66),\n    COL_TRI(10, 24, 66),\n    COL_TRI(23, 10, 66),\n    COL_TRI(26, 25, 66),\n    COL_TRI(27, 17, 22),\n    COL_TRI(27, 26, 21),\n    COL_TRI(27, 25, 26),\n    COL_TRI(27, 22, 25),\n    COL_TRI(26, 14, 28),\n    COL_TRI(24, 14, 26),\n    COL_TRI(26, 28, 21),\n    COL_TRI(21, 13, 12),\n    COL_TRI(28, 13, 21),\n    COL_TRI(4, 20, 2),\n    COL_TRI(4, 23, 20),\n    COL_TRI(10, 23, 4),\n    COL_TRI(0, 2, 19),\n    COL_TRI(20, 19, 2),\n    COL_TRI(10, 11, 24),\n    COL_TRI(11, 14, 24),\n    COL_TRI(19, 20, 18),\n    COL_TRI(13, 29, 30),\n    COL_TRI(13, 28, 29),\n    COL_TRI(8, 13, 30),\n    COL_TRI(28, 14, 16),\n    COL_TRI(28, 16, 29),\n    COL_TRI(33, 30, 29),\n    COL_TRI(23, 43, 36),\n    COL_TRI(23, 64, 43),\n    COL_TRI(20, 23, 32),\n    COL_TRI(23, 36, 32),\n    COL_TRI(31, 20, 67),\n    COL_TRI(32, 67, 20),\n    COL_TRI(33, 16, 15),\n    COL_TRI(33, 29, 16),\n    COL_TRI(33, 8, 30),\n    COL_TRI(33, 9, 8),\n    COL_TRI(15, 9, 33),\n    COL_TRI(34, 35, 32),\n    COL_TRI(35, 67, 32),\n    COL_TRI(34, 32, 36),\n    COL_TRI(36, 43, 40),\n    COL_TRI(36, 40, 34),\n    COL_TRI(35, 68, 67),\n    COL_TRI(37, 67, 68),\n    COL_TRI(31, 67, 37),\n    COL_TRI(34, 68, 35),\n    COL_TRI(38, 34, 44),\n    COL_TRI(39, 34, 38),\n    COL_TRI(39, 68, 34),\n    COL_TRI(41, 68, 39),\n    COL_TRI(41, 47, 68),\n    COL_TRI(37, 68, 47),\n    COL_TRI(42, 40, 46),\n    COL_TRI(43, 46, 40),\n    COL_TRI(44, 40, 42),\n    COL_TRI(40, 44, 34),\n    COL_TRI(44, 42, 63),\n    COL_TRI(38, 44, 63),\n    COL_TRI(45, 63, 42),\n    COL_TRI(42, 70, 53),\n    COL_TRI(42, 53, 45),\n    COL_TRI(46, 70, 42),\n    COL_TRI(47, 52, 69),\n    COL_TRI(47, 69, 37),\n    COL_TRI(47, 41, 51),\n    COL_TRI(47, 51, 52),\n    COL_TRI(48, 50, 51),\n    COL_TRI(49, 51, 41),\n    COL_TRI(50, 54, 51),\n    COL_TRI(51, 54, 52),\n    COL_TRI(51, 49, 48),\n    COL_TRI(52, 54, 46),\n    COL_TRI(53, 54, 50),\n    COL_TRI(53, 70, 54),\n    COL_TRI(54, 70, 46),\n    COL_TRI(55, 56, 62),\n    COL_TRI(55, 61, 49),\n    COL_TRI(56, 57, 62),\n    COL_TRI(56, 55, 59),\n    COL_TRI(56, 59, 71),\n    COL_TRI(57, 71, 59),\n    COL_TRI(56, 71, 57),\n    COL_TRI(58, 57, 60),\n    COL_TRI(58, 62, 57),\n    COL_TRI(59, 72, 57),\n    COL_TRI(60, 57, 72),\n    COL_TRI(61, 62, 58),\n    COL_TRI(62, 61, 55),\n    COL_TRI(45, 50, 48),\n    COL_TRI(58, 48, 49),\n    COL_TRI(48, 58, 60),\n    COL_TRI(48, 60, 45),\n    COL_TRI(49, 61, 58),\n    COL_TRI(60, 72, 63),\n    COL_TRI(63, 45, 60),\n    COL_TRI(45, 53, 50),\n    COL_TRI(59, 63, 72),\n    COL_TRI(63, 59, 38),\n    COL_TRI(59, 39, 38),\n    COL_TRI(59, 55, 39),\n    COL_TRI(39, 55, 49),\n    COL_TRI(49, 41, 39),\n    COL_TRI(64, 22, 65),\n    COL_TRI(22, 17, 69),\n    COL_TRI(37, 17, 31),\n    COL_TRI(37, 69, 17),\n    COL_TRI(65, 69, 52),\n    COL_TRI(22, 69, 65),\n    COL_TRI(65, 52, 46),\n    COL_TRI(64, 65, 43),\n    COL_TRI(43, 65, 46),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "actors/dorrie/geo.inc.c",
    "content": "// 0x0D000230\nconst GeoLayout dorrie_geo[] = {\n    GEO_CULLING_RADIUS(5000),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, dorrie_seg6_dl_0600CFD0),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 1295, 0, 0, dorrie_seg6_dl_0600C8B8),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 916, 0, 0, dorrie_seg6_dl_0600C468),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 874, 0, 0, dorrie_seg6_dl_0600BAF8),\n                            GEO_OPEN_NODE(),\n                                GEO_DISPLAY_LIST(LAYER_ALPHA, dorrie_seg6_dl_0600DFA8),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 30, 444, -6, NULL),\n                                GEO_OPEN_NODE(),\n                                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, dorrie_seg6_dl_0600C030),\n                                GEO_CLOSE_NODE(),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -893, -490, -6, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, dorrie_seg6_dl_0600D440),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 1300, 0, 0, dorrie_seg6_dl_0600D6D8),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -1086, 91, -700, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, dorrie_seg6_dl_0600DE38),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 902, 700, -785, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, dorrie_seg6_dl_0600DA88),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -1086, 91, 698, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, dorrie_seg6_dl_0600DC60),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 902, 700, 783, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, dorrie_seg6_dl_0600D8B0),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(), //! more close than open nodes\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/dorrie/model.inc.c",
    "content": "// Dorrie\n\n// 0x06009BA0\nALIGNED8 static const Texture dorrie_seg6_texture_06009BA0[] = {\n#include \"actors/dorrie/dorrie_eye.rgba16.inc.c\"\n};\n\n// 0x06009DA0\nALIGNED8 static const Texture dorrie_seg6_texture_06009DA0[] = {\n#include \"actors/dorrie/dorrie_skin.rgba16.inc.c\"\n};\n\n// 0x0600ADA0\nALIGNED8 static const Texture dorrie_seg6_texture_0600ADA0[] = {\n#include \"actors/dorrie/dorrie_tongue.rgba16.inc.c\"\n};\n\n// 0x0600B5A0\nstatic const Lights1 dorrie_seg6_lights_0600B5A0 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0600B5B8\nstatic const Vtx dorrie_seg6_vertex_0600B5B8[] = {\n    {{{   -22,   1201,   -234}, 0, {   672,    994}, {0xc5, 0x6a, 0xdd, 0xff}}},\n    {{{   -51,    746,    492}, 0, {   -52,    582}, {0xad, 0x15, 0x5d, 0xff}}},\n    {{{   -22,   1201,    234}, 0, {   204,    994}, {0xd6, 0x68, 0x3a, 0xff}}},\n    {{{   -51,    746,   -493}, 0, {   930,    582}, {0xd7, 0x20, 0x8d, 0xff}}},\n    {{{    55,    376,   -516}, 0, {   952,    216}, {0x9e, 0x17, 0xb4, 0xff}}},\n    {{{    55,    376,    515}, 0, {   -76,    216}, {0xb8, 0x10, 0x67, 0xff}}},\n};\n\n// 0x0600B618\nstatic const Vtx dorrie_seg6_vertex_0600B618[] = {\n    {{{   313,    758,   -422}, 0, {   606,    720}, {0x42, 0x27, 0x9b, 0xff}}},\n    {{{   345,   1135,   -185}, 0, {   568,    464}, {0x45, 0x50, 0xbb, 0xff}}},\n    {{{   487,    752,   -178}, 0, {   540,    696}, {0x68, 0x38, 0xd4, 0xff}}},\n    {{{   -22,   1201,   -234}, 0, {   684,    468}, {0xc5, 0x6a, 0xdd, 0xff}}},\n    {{{   345,   1135,    185}, 0, {   452,    456}, {0x4b, 0x58, 0x32, 0xff}}},\n    {{{   -51,    746,   -493}, 0, {   690,    776}, {0xd7, 0x20, 0x8d, 0xff}}},\n    {{{   349,    372,   -483}, 0, {   598,    968}, {0x2c, 0x13, 0x8b, 0xff}}},\n    {{{    55,    376,   -516}, 0, {   650,   1004}, {0x9e, 0x17, 0xb4, 0xff}}},\n    {{{   -51,    746,    492}, 0, {   288,    756}, {0xad, 0x15, 0x5d, 0xff}}},\n    {{{   313,    758,    421}, 0, {   388,    700}, {0x42, 0x26, 0x65, 0xff}}},\n    {{{   487,    752,    177}, 0, {   460,    688}, {0x61, 0x43, 0x2c, 0xff}}},\n    {{{   -22,   1201,    234}, 0, {   338,    460}, {0xd6, 0x68, 0x3a, 0xff}}},\n    {{{   349,    372,    482}, 0, {   388,    948}, {0x2c, 0x14, 0x75, 0xff}}},\n    {{{    55,    376,    515}, 0, {   332,    980}, {0xb8, 0x10, 0x67, 0xff}}},\n    {{{    91,     29,    515}, 0, {   350,   1204}, {0xf2, 0xe8, 0x7b, 0xff}}},\n    {{{   778,    532,    166}, 0, {   466,    796}, {0x6b, 0x25, 0x38, 0xff}}},\n};\n\n// 0x0600B718\nstatic const Vtx dorrie_seg6_vertex_0600B718[] = {\n    {{{   778,    532,    166}, 0, {   466,    796}, {0x6b, 0x25, 0x38, 0xff}}},\n    {{{   349,    372,    482}, 0, {   388,    948}, {0x2c, 0x14, 0x75, 0xff}}},\n    {{{   568,     -9,    418}, 0, {   420,   1172}, {0x3b, 0xdc, 0x6a, 0xff}}},\n    {{{   778,    532,   -167}, 0, {   520,    804}, {0x62, 0x39, 0xc8, 0xff}}},\n    {{{   487,    752,    177}, 0, {   460,    688}, {0x61, 0x43, 0x2c, 0xff}}},\n    {{{   793,    -43,    150}, 0, {   468,   1172}, {0x69, 0xc3, 0x22, 0xff}}},\n    {{{   793,    -43,   -151}, 0, {   510,   1176}, {0x73, 0xda, 0xdd, 0xff}}},\n    {{{   487,    752,   -178}, 0, {   540,    696}, {0x68, 0x38, 0xd4, 0xff}}},\n    {{{   568,     -9,   -418}, 0, {   558,   1188}, {0x3b, 0xdc, 0x96, 0xff}}},\n    {{{   349,    372,   -483}, 0, {   598,    968}, {0x2c, 0x13, 0x8b, 0xff}}},\n    {{{    91,     29,   -516}, 0, {   628,   1228}, {0xf2, 0xe8, 0x85, 0xff}}},\n    {{{    55,    376,   -516}, 0, {   650,   1004}, {0x9e, 0x17, 0xb4, 0xff}}},\n    {{{    91,     29,    515}, 0, {   350,   1204}, {0xf2, 0xe8, 0x7b, 0xff}}},\n    {{{    46,   -407,    300}, 0, {   402,   1500}, {0xe5, 0x93, 0x39, 0xff}}},\n    {{{   484,   -303,    184}, 0, {   456,   1380}, {0x3d, 0x9a, 0x2a, 0xff}}},\n};\n\n// 0x0600B808\nstatic const Vtx dorrie_seg6_vertex_0600B808[] = {\n    {{{    91,     29,   -516}, 0, {   628,   1228}, {0xf2, 0xe8, 0x85, 0xff}}},\n    {{{    46,   -407,   -301}, 0, {   582,   1512}, {0xee, 0x9e, 0xb3, 0xff}}},\n    {{{  -269,     26,   -300}, 0, {   696,   1268}, {0x92, 0xe3, 0xca, 0xff}}},\n    {{{    55,    376,   -516}, 0, {   650,   1004}, {0x9e, 0x17, 0xb4, 0xff}}},\n    {{{   568,     -9,   -418}, 0, {   558,   1188}, {0x3b, 0xdc, 0x96, 0xff}}},\n    {{{  -269,     26,    299}, 0, {   284,   1256}, {0x90, 0x0c, 0x39, 0xff}}},\n    {{{    55,    376,    515}, 0, {   332,    980}, {0xb8, 0x10, 0x67, 0xff}}},\n    {{{    91,     29,    515}, 0, {   350,   1204}, {0xf2, 0xe8, 0x7b, 0xff}}},\n    {{{    46,   -407,    300}, 0, {   402,   1500}, {0xe5, 0x93, 0x39, 0xff}}},\n    {{{   484,   -303,   -185}, 0, {   522,   1388}, {0x3c, 0x95, 0xe4, 0xff}}},\n    {{{   793,    -43,   -151}, 0, {   510,   1176}, {0x73, 0xda, 0xdd, 0xff}}},\n    {{{   568,     -9,    418}, 0, {   420,   1172}, {0x3b, 0xdc, 0x6a, 0xff}}},\n    {{{   484,   -303,    184}, 0, {   456,   1380}, {0x3d, 0x9a, 0x2a, 0xff}}},\n    {{{   793,    -43,    150}, 0, {   468,   1172}, {0x69, 0xc3, 0x22, 0xff}}},\n};\n\n// 0x0600B8E8 - 0x0600B940\nconst Gfx dorrie_seg6_dl_0600B8E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dorrie_seg6_texture_0600ADA0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&dorrie_seg6_lights_0600B5A0.l, 1),\n    gsSPLight(&dorrie_seg6_lights_0600B5A0.a, 2),\n    gsSPVertex(dorrie_seg6_vertex_0600B5B8, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  1,  3,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600B940 - 0x0600BAF8\nconst Gfx dorrie_seg6_dl_0600B940[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dorrie_seg6_texture_06009DA0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(dorrie_seg6_vertex_0600B618, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  1,  0,  5, 0x0),\n    gsSP2Triangles( 5,  3,  1, 0x0,  5,  0,  6, 0x0),\n    gsSP2Triangles( 6,  0,  2, 0x0,  7,  5,  6, 0x0),\n    gsSP2Triangles( 8,  9,  4, 0x0, 10,  4,  9, 0x0),\n    gsSP2Triangles( 3, 11,  4, 0x0,  4, 11,  8, 0x0),\n    gsSP2Triangles( 2,  4, 10, 0x0,  8, 12,  9, 0x0),\n    gsSP2Triangles(12,  8, 13, 0x0, 10,  9, 12, 0x0),\n    gsSP2Triangles(13, 14, 12, 0x0, 12, 15, 10, 0x0),\n    gsSPVertex(dorrie_seg6_vertex_0600B718, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 2,  5,  0, 0x0,  0,  6,  3, 0x0),\n    gsSP2Triangles( 0,  5,  6, 0x0,  3,  7,  4, 0x0),\n    gsSP2Triangles( 8,  9,  3, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0,  7,  3,  9, 0x0),\n    gsSP2Triangles( 3,  6,  8, 0x0, 12,  2,  1, 0x0),\n    gsSP1Triangle(13, 14,  2, 0x0),\n    gsSPVertex(dorrie_seg6_vertex_0600B808, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 1,  0,  4, 0x0,  3,  5,  6, 0x0),\n    gsSP2Triangles( 3,  2,  5, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 2,  1,  8, 0x0,  4,  9,  1, 0x0),\n    gsSP2Triangles( 8,  1,  9, 0x0, 10,  9,  4, 0x0),\n    gsSP2Triangles(11,  7,  8, 0x0,  2,  8,  5, 0x0),\n    gsSP2Triangles( 8,  9, 12, 0x0,  8,  7,  5, 0x0),\n    gsSP2Triangles(13,  9, 10, 0x0, 13, 12,  9, 0x0),\n    gsSP1Triangle(11, 12, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600BAF8 - 0x0600BBC0\nconst Gfx dorrie_seg6_dl_0600BAF8[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(dorrie_seg6_dl_0600B8E8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(dorrie_seg6_dl_0600B940),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600BBC0\nstatic const Lights1 dorrie_seg6_lights_0600BBC0 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0600BBD8\nstatic const Vtx dorrie_seg6_vertex_0600BBD8[] = {\n    {{{   442,     17,   -243}, 0, {   220,    696}, {0xdb, 0x88, 0x0b, 0xff}}},\n    {{{   442,     17,    253}, 0, {   716,    696}, {0xdf, 0x86, 0xf6, 0xff}}},\n    {{{  -109,    -18,    237}, 0, {   700,    208}, {0xed, 0x83, 0x06, 0xff}}},\n    {{{  -109,    -18,   -227}, 0, {   236,    208}, {0xf0, 0x83, 0xfd, 0xff}}},\n    {{{   390,    -29,   -460}, 0, {     2,    658}, {0x21, 0xb6, 0x9f, 0xff}}},\n    {{{   677,   -171,    253}, 0, {   716,    936}, {0x26, 0x89, 0x14, 0xff}}},\n    {{{   677,   -171,   -243}, 0, {   220,    936}, {0x21, 0x8b, 0xdf, 0xff}}},\n    {{{   390,    -29,    470}, 0, {   932,    658}, {0x27, 0xd0, 0x6e, 0xff}}},\n    {{{   -93,     25,    516}, 0, {   978,    216}, {0xf2, 0x9b, 0x4b, 0xff}}},\n    {{{  -345,     87,    467}, 0, {   928,    -20}, {0xa2, 0xda, 0x4c, 0xff}}},\n    {{{  -345,     87,   -456}, 0, {     6,    -20}, {0x99, 0xcf, 0xcb, 0xff}}},\n    {{{   -93,     23,   -481}, 0, {   -18,    216}, {0xef, 0xaf, 0xa1, 0xff}}},\n};\n\n// 0x0600BC98\nstatic const Vtx dorrie_seg6_vertex_0600BC98[] = {\n    {{{  -272,    375,    253}, 0, {   -80,   1972}, {0xbc, 0x66, 0x1c, 0xff}}},\n    {{{  -345,     87,   -456}, 0, {    58,   2052}, {0x99, 0xcf, 0xcb, 0xff}}},\n    {{{  -345,     87,    467}, 0, {  -122,   2052}, {0xa2, 0xda, 0x4c, 0xff}}},\n    {{{   456,     72,    416}, 0, {  -112,   1164}, {0x44, 0x35, 0x5c, 0xff}}},\n    {{{   708,      9,    173}, 0, {   -64,    884}, {0x6b, 0x24, 0x39, 0xff}}},\n    {{{   498,    236,    173}, 0, {   -64,   1120}, {0x43, 0x67, 0x1d, 0xff}}},\n    {{{   -28,    276,    501}, 0, {  -128,   1704}, {0x09, 0x48, 0x68, 0xff}}},\n    {{{     3,    403,   -243}, 0, {    16,   1668}, {0x0f, 0x7c, 0xec, 0xff}}},\n    {{{   498,    236,   -165}, 0, {     0,   1120}, {0x41, 0x64, 0xd7, 0xff}}},\n    {{{     3,    403,    253}, 0, {   -80,   1668}, {0x0f, 0x7a, 0x1e, 0xff}}},\n    {{{   708,      9,   -164}, 0, {     0,    884}, {0x72, 0x24, 0xd7, 0xff}}},\n    {{{   390,    -29,    470}, 0, {  -122,   1240}, {0x27, 0xd0, 0x6e, 0xff}}},\n    {{{   -93,     25,    516}, 0, {  -132,   1776}, {0xf2, 0x9b, 0x4b, 0xff}}},\n    {{{   -93,     23,   -481}, 0, {    62,   1776}, {0xef, 0xaf, 0xa1, 0xff}}},\n    {{{   -28,    276,   -491}, 0, {    64,   1704}, {0x09, 0x44, 0x96, 0xff}}},\n    {{{   677,   -171,    253}, 0, {   -80,    920}, {0x26, 0x89, 0x14, 0xff}}},\n};\n\n// 0x0600BD98\nstatic const Vtx dorrie_seg6_vertex_0600BD98[] = {\n    {{{   498,    236,   -165}, 0, {     0,   1120}, {0x41, 0x64, 0xd7, 0xff}}},\n    {{{   456,     72,   -407}, 0, {    48,   1164}, {0x44, 0x34, 0xa4, 0xff}}},\n    {{{   -28,    276,   -491}, 0, {    64,   1704}, {0x09, 0x44, 0x96, 0xff}}},\n    {{{  -272,    375,   -243}, 0, {    16,   1972}, {0xc4, 0x67, 0xd6, 0xff}}},\n    {{{     3,    403,   -243}, 0, {    16,   1668}, {0x0f, 0x7c, 0xec, 0xff}}},\n    {{{   390,    -29,   -460}, 0, {    58,   1240}, {0x21, 0xb6, 0x9f, 0xff}}},\n    {{{   -93,     23,   -481}, 0, {    62,   1776}, {0xef, 0xaf, 0xa1, 0xff}}},\n    {{{  -272,    375,    253}, 0, {   -80,   1972}, {0xbc, 0x66, 0x1c, 0xff}}},\n    {{{   708,      9,   -164}, 0, {     0,    884}, {0x72, 0x24, 0xd7, 0xff}}},\n    {{{   708,      9,    173}, 0, {   -64,    884}, {0x6b, 0x24, 0x39, 0xff}}},\n    {{{   677,   -171,    253}, 0, {   -80,    920}, {0x26, 0x89, 0x14, 0xff}}},\n    {{{   677,   -171,   -243}, 0, {    16,    920}, {0x21, 0x8b, 0xdf, 0xff}}},\n    {{{  -345,     87,   -456}, 0, {    58,   2052}, {0x99, 0xcf, 0xcb, 0xff}}},\n};\n\n// 0x0600BE68 - 0x0600BF10\nconst Gfx dorrie_seg6_dl_0600BE68[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dorrie_seg6_texture_0600ADA0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&dorrie_seg6_lights_0600BBC0.l, 1),\n    gsSPLight(&dorrie_seg6_lights_0600BBC0.a, 2),\n    gsSPVertex(dorrie_seg6_vertex_0600BBD8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  0,  3, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 0,  6,  5, 0x0,  4,  6,  0, 0x0),\n    gsSP2Triangles( 1,  5,  7, 0x0,  8,  1,  7, 0x0),\n    gsSP2Triangles( 8,  2,  1, 0x0,  8,  9,  2, 0x0),\n    gsSP2Triangles( 2, 10,  3, 0x0,  2,  9, 10, 0x0),\n    gsSP2Triangles( 3, 10, 11, 0x0,  4,  3, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600BF10 - 0x0600C030\nconst Gfx dorrie_seg6_dl_0600BF10[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dorrie_seg6_texture_06009DA0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(dorrie_seg6_vertex_0600BC98, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  5,  8, 0x0),\n    gsSP2Triangles( 7,  9,  5, 0x0,  5,  9,  6, 0x0),\n    gsSP2Triangles( 5, 10,  8, 0x0,  5,  4, 10, 0x0),\n    gsSP2Triangles( 0,  6,  9, 0x0,  7,  0,  9, 0x0),\n    gsSP2Triangles(11,  3,  6, 0x0,  6, 12, 11, 0x0),\n    gsSP2Triangles( 6,  0,  2, 0x0,  6,  2, 12, 0x0),\n    gsSP2Triangles(13,  1, 14, 0x0, 14,  7,  8, 0x0),\n    gsSP2Triangles( 4,  3, 11, 0x0, 11, 15,  4, 0x0),\n    gsSPVertex(dorrie_seg6_vertex_0600BD98, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 5,  6,  2, 0x0,  2,  1,  5, 0x0),\n    gsSP2Triangles( 4,  3,  7, 0x0,  8,  1,  0, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 5,  1,  8, 0x0,  8, 11,  5, 0x0),\n    gsSP2Triangles( 7,  3, 12, 0x0, 12,  3,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600C030 - 0x0600C0F8\nconst Gfx dorrie_seg6_dl_0600C030[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(dorrie_seg6_dl_0600BE68),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(dorrie_seg6_dl_0600BF10),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600C0F8\nstatic const Lights1 dorrie_seg6_lights_0600C0F8 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0600C110\nstatic const Vtx dorrie_seg6_vertex_0600C110[] = {\n    {{{  1090,    -93,    204}, 0, {   340,    152}, {0x64, 0xc3, 0x30, 0xff}}},\n    {{{   852,   -373,   -231}, 0, {   558,    336}, {0x3f, 0x98, 0xdf, 0xff}}},\n    {{{  1090,    -93,   -205}, 0, {   612,    144}, {0x5c, 0xe0, 0xaf, 0xff}}},\n    {{{    48,   -514,    297}, 0, {   400,    948}, {0xdb, 0x8c, 0x21, 0xff}}},\n    {{{    30,   -226,    563}, 0, {   288,    952}, {0xe6, 0xd2, 0x73, 0xff}}},\n    {{{  -192,   -274,    297}, 0, {   350,   1112}, {0x96, 0xdd, 0x3b, 0xff}}},\n    {{{    -4,    324,    424}, 0, {   110,    940}, {0xca, 0x3a, 0x62, 0xff}}},\n    {{{   837,   -121,    436}, 0, {   290,    348}, {0x33, 0xfa, 0x74, 0xff}}},\n    {{{   852,   -373,    230}, 0, {   400,    348}, {0x37, 0xa0, 0x3c, 0xff}}},\n    {{{   809,    286,    328}, 0, {   128,    340}, {0x1a, 0x5b, 0x54, 0xff}}},\n    {{{  1064,    288,    204}, 0, {   102,    148}, {0x3f, 0x51, 0x4a, 0xff}}},\n    {{{    48,   -514,   -298}, 0, {   572,    932}, {0xea, 0x95, 0xc1, 0xff}}},\n    {{{  -192,   -274,   -298}, 0, {   630,   1096}, {0x9b, 0xc1, 0xd5, 0xff}}},\n    {{{   768,    421,     -1}, 0, {   990,    352}, {0x19, 0x7c, 0xf7, 0xff}}},\n    {{{    -4,    324,   -425}, 0, {   836,    916}, {0xd5, 0x56, 0xae, 0xff}}},\n    {{{   -19,    548,      0}, 0, {   982,    924}, {0xdb, 0x78, 0x0b, 0xff}}},\n};\n\n// 0x0600C210\nstatic const Vtx dorrie_seg6_vertex_0600C210[] = {\n    {{{  1090,    -93,   -205}, 0, {   612,    144}, {0x5c, 0xe0, 0xaf, 0xff}}},\n    {{{   852,   -373,   -231}, 0, {   558,    336}, {0x3f, 0x98, 0xdf, 0xff}}},\n    {{{   837,   -121,   -437}, 0, {   668,    324}, {0x32, 0xda, 0x93, 0xff}}},\n    {{{    48,   -514,   -298}, 0, {   572,    932}, {0xea, 0x95, 0xc1, 0xff}}},\n    {{{   811,    287,   -349}, 0, {   826,    320}, {0x27, 0x3e, 0x99, 0xff}}},\n    {{{  1064,    288,   -205}, 0, {   864,    136}, {0x37, 0x5f, 0xc3, 0xff}}},\n    {{{    30,   -226,   -564}, 0, {   676,    920}, {0xd0, 0xf5, 0x8c, 0xff}}},\n    {{{  -192,   -274,   -298}, 0, {   630,   1096}, {0x9b, 0xc1, 0xd5, 0xff}}},\n    {{{    -4,    324,   -425}, 0, {   836,    916}, {0xd5, 0x56, 0xae, 0xff}}},\n    {{{  -227,    255,      0}, 0, {   968,   1096}, {0x8c, 0x2e, 0xef, 0xff}}},\n    {{{   768,    421,     -1}, 0, {   990,    352}, {0x19, 0x7c, 0xf7, 0xff}}},\n    {{{  1064,    288,    204}, 0, {  1124,    148}, {0x3f, 0x51, 0x4a, 0xff}}},\n    {{{    -4,    324,    424}, 0, {  1132,    940}, {0xca, 0x3a, 0x62, 0xff}}},\n    {{{   -19,    548,      0}, 0, {   982,    924}, {0xdb, 0x78, 0x0b, 0xff}}},\n    {{{  -192,   -274,    297}, 0, {  1372,   1112}, {0x96, 0xdd, 0x3b, 0xff}}},\n    {{{   809,    286,    328}, 0, {  1150,    340}, {0x1a, 0x5b, 0x54, 0xff}}},\n};\n\n// 0x0600C310 - 0x0600C468\nconst Gfx dorrie_seg6_dl_0600C310[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dorrie_seg6_texture_06009DA0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&dorrie_seg6_lights_0600C0F8.l, 1),\n    gsSPLight(&dorrie_seg6_lights_0600C0F8.a, 2),\n    gsSPVertex(dorrie_seg6_vertex_0600C110, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  4,  7, 0x0,  4,  8,  7, 0x0),\n    gsSP2Triangles( 4,  3,  8, 0x0,  6,  5,  4, 0x0),\n    gsSP2Triangles( 7,  8,  0, 0x0,  3,  1,  8, 0x0),\n    gsSP2Triangles( 0,  8,  1, 0x0,  6,  7,  9, 0x0),\n    gsSP2Triangles( 7, 10,  9, 0x0,  7,  0, 10, 0x0),\n    gsSP2Triangles( 3, 11,  1, 0x0, 12, 11,  3, 0x0),\n    gsSP2Triangles(12,  3,  5, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(dorrie_seg6_vertex_0600C210, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  0,  2, 0x0,  4,  5,  0, 0x0),\n    gsSP2Triangles( 6,  4,  2, 0x0,  2,  3,  6, 0x0),\n    gsSP2Triangles( 6,  3,  7, 0x0,  6,  8,  4, 0x0),\n    gsSP2Triangles( 6,  7,  9, 0x0,  6,  9,  8, 0x0),\n    gsSP2Triangles(10,  4,  8, 0x0,  4, 10,  5, 0x0),\n    gsSP2Triangles( 5, 10, 11, 0x0, 12, 13,  9, 0x0),\n    gsSP2Triangles( 9, 13,  8, 0x0, 12,  9, 14, 0x0),\n    gsSP2Triangles(11, 10, 15, 0x0, 15, 13, 12, 0x0),\n    gsSP1Triangle(15, 10, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600C468 - 0x0600C510\nconst Gfx dorrie_seg6_dl_0600C468[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(dorrie_seg6_dl_0600C310),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600C510\nstatic const Lights1 dorrie_seg6_lights_0600C510 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0600C528\nstatic const Vtx dorrie_seg6_vertex_0600C528[] = {\n    {{{    19,    -22,   -821}, 0, {   674,   1540}, {0xea, 0xfb, 0x84, 0xff}}},\n    {{{   187,    693,   -578}, 0, {   822,   1620}, {0x1c, 0x5d, 0xb0, 0xff}}},\n    {{{  1057,    309,   -449}, 0, {   834,    920}, {0x50, 0x27, 0xa6, 0xff}}},\n    {{{  1290,    174,      0}, 0, {   980,    736}, {0x79, 0x1f, 0x15, 0xff}}},\n    {{{  1106,    540,      0}, 0, {   982,    960}, {0x4f, 0x62, 0xf9, 0xff}}},\n    {{{  1057,    309,    440}, 0, {  1134,    948}, {0x4e, 0x3f, 0x4c, 0xff}}},\n    {{{   391,    797,      0}, 0, {   972,   1524}, {0x16, 0x7c, 0x0b, 0xff}}},\n    {{{   187,    693,    571}, 0, {  1140,   1652}, {0x1c, 0x4c, 0x61, 0xff}}},\n    {{{   899,   -211,    569}, 0, {  1306,    920}, {0x3f, 0xef, 0x6c, 0xff}}},\n    {{{  -273,    717,    553}, 0, {  1170,   1976}, {0xdf, 0x5f, 0x4c, 0xff}}},\n    {{{  -273,    717,   -552}, 0, {   792,   1944}, {0xde, 0x5f, 0xb4, 0xff}}},\n    {{{  -423,     59,   -383}, 0, {   612,   1876}, {0x8c, 0xef, 0xd0, 0xff}}},\n    {{{  -343,   -381,    386}, 0, {   418,   1728}, {0xaf, 0xa6, 0x25, 0xff}}},\n    {{{    19,    -22,    822}, 0, {   294,   1584}, {0xe4, 0xe8, 0x79, 0xff}}},\n    {{{  -423,     59,    384}, 0, {   378,   1900}, {0x94, 0xf2, 0x3f, 0xff}}},\n    {{{  1185,   -300,   -302}, 0, {   648,    676}, {0x5b, 0xc9, 0xbc, 0xff}}},\n};\n\n// 0x0600C628\nstatic const Vtx dorrie_seg6_vertex_0600C628[] = {\n    {{{   187,    693,    571}, 0, {   118,   1652}, {0x1c, 0x4c, 0x61, 0xff}}},\n    {{{    19,    -22,    822}, 0, {   294,   1584}, {0xe4, 0xe8, 0x79, 0xff}}},\n    {{{   899,   -211,    569}, 0, {   284,    920}, {0x3f, 0xef, 0x6c, 0xff}}},\n    {{{  -343,   -381,    386}, 0, {   418,   1728}, {0xaf, 0xa6, 0x25, 0xff}}},\n    {{{   832,   -489,    343}, 0, {   386,    888}, {0x17, 0x92, 0x3a, 0xff}}},\n    {{{  1185,   -300,    304}, 0, {   318,    692}, {0x50, 0xad, 0x33, 0xff}}},\n    {{{   832,   -489,   -340}, 0, {   584,    868}, {0x1b, 0x89, 0xdf, 0xff}}},\n    {{{  1057,    309,    440}, 0, {   112,    948}, {0x4e, 0x3f, 0x4c, 0xff}}},\n    {{{  -343,   -381,   -383}, 0, {   562,   1708}, {0xc5, 0xa7, 0xbc, 0xff}}},\n    {{{  1185,   -300,   -302}, 0, {   648,    676}, {0x5b, 0xc9, 0xbc, 0xff}}},\n    {{{   899,   -211,   -571}, 0, {   680,    888}, {0x27, 0xc8, 0x96, 0xff}}},\n    {{{  1057,    309,   -449}, 0, {   834,    920}, {0x50, 0x27, 0xa6, 0xff}}},\n    {{{  -273,    717,    553}, 0, {   148,   1976}, {0xdf, 0x5f, 0x4c, 0xff}}},\n    {{{    19,    -22,   -821}, 0, {   674,   1540}, {0xea, 0xfb, 0x84, 0xff}}},\n    {{{  -423,     59,   -383}, 0, {   612,   1876}, {0x8c, 0xef, 0xd0, 0xff}}},\n    {{{  -423,     59,    384}, 0, {   378,   1900}, {0x94, 0xf2, 0x3f, 0xff}}},\n};\n\n// 0x0600C728\nstatic const Vtx dorrie_seg6_vertex_0600C728[] = {\n    {{{   899,   -211,    569}, 0, {  1306,    920}, {0x3f, 0xef, 0x6c, 0xff}}},\n    {{{  1185,   -300,    304}, 0, {  1340,    692}, {0x50, 0xad, 0x33, 0xff}}},\n    {{{  1290,    174,      0}, 0, {   980,    736}, {0x79, 0x1f, 0x15, 0xff}}},\n};\n\n// 0x0600C758 - 0x0600C8B8\nconst Gfx dorrie_seg6_dl_0600C758[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dorrie_seg6_texture_06009DA0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&dorrie_seg6_lights_0600C510.l, 1),\n    gsSPLight(&dorrie_seg6_lights_0600C510.a, 2),\n    gsSPVertex(dorrie_seg6_vertex_0600C528, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  4,  6, 0x0),\n    gsSP2Triangles( 8,  3,  5, 0x0,  7,  6,  9, 0x0),\n    gsSP2Triangles( 4,  1,  6, 0x0,  6,  1, 10, 0x0),\n    gsSP2Triangles( 9,  6, 10, 0x0,  2,  4,  3, 0x0),\n    gsSP2Triangles( 4,  2,  1, 0x0,  0, 11, 10, 0x0),\n    gsSP2Triangles( 0, 10,  1, 0x0, 12, 13, 14, 0x0),\n    gsSP2Triangles(11, 12, 14, 0x0,  2,  3, 15, 0x0),\n    gsSPVertex(dorrie_seg6_vertex_0600C628, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  5,  4,  6, 0x0),\n    gsSP2Triangles( 0,  2,  7, 0x0,  3,  8,  6, 0x0),\n    gsSP2Triangles( 5,  6,  9, 0x0,  9,  6, 10, 0x0),\n    gsSP2Triangles(10,  6,  8, 0x0, 11,  9, 10, 0x0),\n    gsSP2Triangles( 1,  0, 12, 0x0, 13, 11, 10, 0x0),\n    gsSP2Triangles(10,  8, 13, 0x0, 13,  8, 14, 0x0),\n    gsSP2Triangles(14,  8,  3, 0x0, 12, 15,  1, 0x0),\n    gsSPVertex(dorrie_seg6_vertex_0600C728, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600C8B8 - 0x0600C960\nconst Gfx dorrie_seg6_dl_0600C8B8[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(dorrie_seg6_dl_0600C758),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600C960\nstatic const Lights1 dorrie_seg6_lights_0600C960 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0600C978\nstatic const Vtx dorrie_seg6_vertex_0600C978[] = {\n    {{{  1085,   -101,  -1112}, 0, {   710,    924}, {0x34, 0xd6, 0x95, 0xff}}},\n    {{{   934,   -870,   -414}, 0, {   558,   1232}, {0x4e, 0xa0, 0xe8, 0xff}}},\n    {{{   154,  -1257,   -586}, 0, {   584,   1788}, {0x11, 0x8e, 0xcc, 0xff}}},\n    {{{   154,  -1257,    585}, 0, {   374,   1788}, {0x17, 0x8c, 0x2d, 0xff}}},\n    {{{  -975,   -982,   -550}, 0, {   726,   2348}, {0xb2, 0xa8, 0xd1, 0xff}}},\n    {{{  -236,   -788,  -1121}, 0, {   708,   1876}, {0xea, 0xc3, 0x93, 0xff}}},\n    {{{  -854,  -1215,      0}, 0, {   480,   2344}, {0xcf, 0x8c, 0x00, 0xff}}},\n    {{{  -765,    228,  -1205}, 0, {   844,   1888}, {0xd2, 0x28, 0x92, 0xff}}},\n    {{{ -1340,   -279,   -695}, 0, {   870,   2356}, {0x8e, 0xf1, 0xcc, 0xff}}},\n    {{{  1981,    326,   -380}, 0, {   662,    292}, {0x79, 0xf8, 0xdb, 0xff}}},\n    {{{   560,    718,  -1192}, 0, {   830,    992}, {0x18, 0x34, 0x90, 0xff}}},\n    {{{  1832,    492,   -639}, 0, {   742,    332}, {0x64, 0x31, 0xc4, 0xff}}},\n    {{{  -236,   -788,   1119}, 0, {   250,   1876}, {0xf7, 0xcc, 0x73, 0xff}}},\n    {{{  1085,   -101,   1110}, 0, {   248,    924}, {0x3c, 0xd0, 0x64, 0xff}}},\n    {{{   934,   -870,    390}, 0, {   404,   1232}, {0x4e, 0xa3, 0x23, 0xff}}},\n};\n\n// 0x0600CA68\nstatic const Vtx dorrie_seg6_vertex_0600CA68[] = {\n    {{{  -765,    228,   1204}, 0, {   114,   1888}, {0xc2, 0x11, 0x6c, 0xff}}},\n    {{{  -975,   -982,    549}, 0, {   232,   2348}, {0xac, 0xb1, 0x34, 0xff}}},\n    {{{  -236,   -788,   1119}, 0, {   250,   1876}, {0xf7, 0xcc, 0x73, 0xff}}},\n    {{{   154,  -1257,    585}, 0, {   374,   1788}, {0x17, 0x8c, 0x2d, 0xff}}},\n    {{{   934,   -870,    390}, 0, {   404,   1232}, {0x4e, 0xa3, 0x23, 0xff}}},\n    {{{  1981,    326,    380}, 0, {   296,    292}, {0x6f, 0xcf, 0x22, 0xff}}},\n    {{{  1085,   -101,   1110}, 0, {   248,    924}, {0x3c, 0xd0, 0x64, 0xff}}},\n    {{{   934,   -870,   -414}, 0, {   558,   1232}, {0x4e, 0xa0, 0xe8, 0xff}}},\n    {{{   560,    718,   1191}, 0, {   126,    992}, {0x0b, 0x37, 0x71, 0xff}}},\n    {{{  1832,    492,    638}, 0, {   216,    332}, {0x62, 0x34, 0x3c, 0xff}}},\n    {{{  -854,  -1215,      0}, 0, {   480,   2344}, {0xcf, 0x8c, 0x00, 0xff}}},\n    {{{  1573,    878,    611}, 0, {   112,    368}, {0x4c, 0x5b, 0x2b, 0xff}}},\n    {{{   581,   1130,    741}, 0, {    60,    860}, {0xf5, 0x7a, 0x1e, 0xff}}},\n    {{{  -860,    411,    775}, 0, {    64,   1888}, {0xb7, 0x5f, 0x27, 0xff}}},\n    {{{  1981,    326,   -380}, 0, {   662,    292}, {0x79, 0xf8, 0xdb, 0xff}}},\n};\n\n// 0x0600CB58\nstatic const Vtx dorrie_seg6_vertex_0600CB58[] = {\n    {{{   560,    718,  -1192}, 0, {   830,    992}, {0x18, 0x34, 0x90, 0xff}}},\n    {{{  1573,    878,   -612}, 0, {   844,    368}, {0x3a, 0x67, 0xd5, 0xff}}},\n    {{{  1832,    492,   -639}, 0, {   742,    332}, {0x64, 0x31, 0xc4, 0xff}}},\n    {{{   581,   1130,   -744}, 0, {   898,    860}, {0xf0, 0x73, 0xcf, 0xff}}},\n    {{{  -765,    228,  -1205}, 0, {   844,   1888}, {0xd2, 0x28, 0x92, 0xff}}},\n    {{{   934,   -870,   -414}, 0, {   558,   1232}, {0x4e, 0xa0, 0xe8, 0xff}}},\n    {{{  1981,    326,   -380}, 0, {   662,    292}, {0x79, 0xf8, 0xdb, 0xff}}},\n    {{{  1981,    326,    380}, 0, {   296,    292}, {0x6f, 0xcf, 0x22, 0xff}}},\n    {{{   581,   1130,    741}, 0, {  1082,    860}, {0xf5, 0x7a, 0x1e, 0xff}}},\n    {{{  1573,    878,    611}, 0, {  1134,    368}, {0x4c, 0x5b, 0x2b, 0xff}}},\n    {{{  -860,    411,   -776}, 0, {   894,   1888}, {0xae, 0x5e, 0xee, 0xff}}},\n    {{{  -860,    411,    775}, 0, {  1086,   1888}, {0xb7, 0x5f, 0x27, 0xff}}},\n    {{{ -1340,   -279,    694}, 0, {  1110,   2356}, {0x8a, 0x19, 0x26, 0xff}}},\n    {{{ -1340,   -279,    694}, 0, {    88,   2356}, {0x8a, 0x19, 0x26, 0xff}}},\n    {{{  -765,    228,   1204}, 0, {   114,   1888}, {0xc2, 0x11, 0x6c, 0xff}}},\n    {{{  -860,    411,    775}, 0, {    64,   1888}, {0xb7, 0x5f, 0x27, 0xff}}},\n};\n\n// 0x0600CC58\nstatic const Vtx dorrie_seg6_vertex_0600CC58[] = {\n    {{{  -765,    228,   1204}, 0, {   114,   1888}, {0xc2, 0x11, 0x6c, 0xff}}},\n    {{{ -1340,   -279,    694}, 0, {    88,   2356}, {0x8a, 0x19, 0x26, 0xff}}},\n    {{{  -975,   -982,    549}, 0, {   232,   2348}, {0xac, 0xb1, 0x34, 0xff}}},\n    {{{  -860,    411,   -776}, 0, {   894,   1888}, {0xae, 0x5e, 0xee, 0xff}}},\n    {{{ -1340,   -279,   -695}, 0, {   870,   2356}, {0x8e, 0xf1, 0xcc, 0xff}}},\n    {{{ -1340,   -279,    694}, 0, {  1110,   2356}, {0x8a, 0x19, 0x26, 0xff}}},\n    {{{  -765,    228,  -1205}, 0, {   844,   1888}, {0xd2, 0x28, 0x92, 0xff}}},\n    {{{ -1340,   -279,   -695}, 0, {   874,   2352}, {0x8e, 0xf1, 0xcc, 0xff}}},\n    {{{  -975,   -982,   -550}, 0, {   736,   2344}, {0xb2, 0xa8, 0xd1, 0xff}}},\n    {{{  -975,   -982,    549}, 0, {  1240,   2344}, {0xac, 0xb1, 0x34, 0xff}}},\n    {{{  1832,    492,    638}, 0, {   698,    764}, {0x62, 0x34, 0x3c, 0xff}}},\n    {{{  1981,    326,   -380}, 0, {   352,   1476}, {0x79, 0xf8, 0xdb, 0xff}}},\n    {{{  1832,    492,   -639}, 0, {   488,   1848}, {0x64, 0x31, 0xc4, 0xff}}},\n    {{{  1832,    492,   -639}, 0, {   742,    332}, {0x64, 0x31, 0xc4, 0xff}}},\n    {{{  1573,    878,   -612}, 0, {   844,    368}, {0x3a, 0x67, 0xd5, 0xff}}},\n    {{{  1573,    878,    611}, 0, {  1134,    368}, {0x4c, 0x5b, 0x2b, 0xff}}},\n};\n\n// 0x0600CD58\nstatic const Vtx dorrie_seg6_vertex_0600CD58[] = {\n    {{{  1832,    492,   -639}, 0, {   742,    332}, {0x64, 0x31, 0xc4, 0xff}}},\n    {{{  1573,    878,    611}, 0, {  1134,    368}, {0x4c, 0x5b, 0x2b, 0xff}}},\n    {{{  1832,    492,    638}, 0, {  1238,    332}, {0x62, 0x34, 0x3c, 0xff}}},\n    {{{  -975,   -982,   -550}, 0, {   726,   2348}, {0xb2, 0xa8, 0xd1, 0xff}}},\n    {{{  -854,  -1215,      0}, 0, {   480,   2344}, {0xcf, 0x8c, 0x00, 0xff}}},\n    {{{  -975,   -982,    549}, 0, {   232,   2348}, {0xac, 0xb1, 0x34, 0xff}}},\n    {{{ -1340,   -279,    694}, 0, {  1110,   2356}, {0x8a, 0x19, 0x26, 0xff}}},\n    {{{ -1340,   -279,   -695}, 0, {   870,   2356}, {0x8e, 0xf1, 0xcc, 0xff}}},\n    {{{  -975,   -982,    549}, 0, {  1254,   2348}, {0xac, 0xb1, 0x34, 0xff}}},\n};\n\n// 0x0600CDE8 - 0x0600CFD0\nconst Gfx dorrie_seg6_dl_0600CDE8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dorrie_seg6_texture_06009DA0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&dorrie_seg6_lights_0600C960.l, 1),\n    gsSPLight(&dorrie_seg6_lights_0600C960.a, 2),\n    gsSPVertex(dorrie_seg6_vertex_0600C978, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  2,  5,  0, 0x0),\n    gsSP2Triangles( 3,  6,  2, 0x0,  6,  4,  2, 0x0),\n    gsSP2Triangles( 7,  0,  5, 0x0,  5,  8,  7, 0x0),\n    gsSP2Triangles( 5,  4,  8, 0x0,  0,  9,  1, 0x0),\n    gsSP2Triangles( 7, 10,  0, 0x0, 11,  9,  0, 0x0),\n    gsSP2Triangles(11,  0, 10, 0x0, 12,  3, 13, 0x0),\n    gsSP2Triangles( 1, 14,  3, 0x0,  3, 14, 13, 0x0),\n    gsSPVertex(dorrie_seg6_vertex_0600CA68, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  5,  4, 0x0),\n    gsSP2Triangles( 8,  2,  6, 0x0,  6,  5,  9, 0x0),\n    gsSP2Triangles( 8,  6,  9, 0x0,  3,  1, 10, 0x0),\n    gsSP2Triangles( 8, 11, 12, 0x0,  8, 12, 13, 0x0),\n    gsSP2Triangles( 8, 13,  0, 0x0,  8,  0,  2, 0x0),\n    gsSP2Triangles( 9, 11,  8, 0x0,  9,  5, 14, 0x0),\n    gsSPVertex(dorrie_seg6_vertex_0600CB58, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 4,  3,  0, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  1,  3, 0x0,  8,  9,  1, 0x0),\n    gsSP2Triangles(10,  8,  3, 0x0, 10, 11,  8, 0x0),\n    gsSP2Triangles( 4, 10,  3, 0x0, 10, 12, 11, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(dorrie_seg6_vertex_0600CC58, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  4,  3, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(dorrie_seg6_vertex_0600CD58, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600CFD0 - 0x0600D078\nconst Gfx dorrie_seg6_dl_0600CFD0[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(dorrie_seg6_dl_0600CDE8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600D078\nstatic const Lights1 dorrie_seg6_lights_0600D078 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0600D090\nstatic const Vtx dorrie_seg6_vertex_0600D090[] = {\n    {{{   324,   -369,    725}, 0, {   136,   1456}, {0x0a, 0xb0, 0x61, 0xff}}},\n    {{{  1263,    236,    383}, 0, {   320,   1800}, {0x33, 0x44, 0x5d, 0xff}}},\n    {{{   241,    413,    672}, 0, {   298,   1396}, {0xfb, 0x35, 0x72, 0xff}}},\n    {{{   207,    735,      5}, 0, {   474,   1364}, {0x07, 0x7e, 0x09, 0xff}}},\n    {{{  -240,    463,    573}, 0, {   308,   1200}, {0xd7, 0x59, 0x4f, 0xff}}},\n    {{{  -150,   -380,    431}, 0, {    88,   1268}, {0xd1, 0xac, 0x51, 0xff}}},\n    {{{   218,   -509,      5}, 0, {   -26,   1416}, {0x00, 0x82, 0xfc, 0xff}}},\n    {{{  1312,   -229,    383}, 0, {   144,   1840}, {0x4c, 0xc7, 0x53, 0xff}}},\n    {{{  1321,   -314,      5}, 0, {   -30,   1844}, {0x26, 0x87, 0x04, 0xff}}},\n    {{{  -240,    463,   -562}, 0, {   644,   1196}, {0xcd, 0x43, 0xa2, 0xff}}},\n    {{{   218,   -509,      5}, 0, {   996,   1416}, {0x00, 0x82, 0xfc, 0xff}}},\n    {{{   324,   -369,   -714}, 0, {   824,   1448}, {0xf6, 0xbc, 0x96, 0xff}}},\n    {{{  1312,   -229,   -372}, 0, {   816,   1836}, {0x3d, 0xb9, 0xac, 0xff}}},\n    {{{  1321,   -314,      5}, 0, {   992,   1844}, {0x26, 0x87, 0x04, 0xff}}},\n    {{{  1244,    411,      5}, 0, {   476,   1784}, {0x2e, 0x75, 0xf7, 0xff}}},\n};\n\n// 0x0600D180\nstatic const Vtx dorrie_seg6_vertex_0600D180[] = {\n    {{{   218,   -509,      5}, 0, {   996,   1416}, {0x00, 0x82, 0xfc, 0xff}}},\n    {{{  -150,   -380,    431}, 0, {  1110,   1268}, {0xd1, 0xac, 0x51, 0xff}}},\n    {{{  -150,   -380,   -420}, 0, {   878,   1264}, {0xd1, 0x97, 0xcc, 0xff}}},\n    {{{   324,   -369,   -714}, 0, {   824,   1448}, {0xf6, 0xbc, 0x96, 0xff}}},\n    {{{  -240,    463,   -562}, 0, {   644,   1196}, {0xcd, 0x43, 0xa2, 0xff}}},\n    {{{  1321,   -314,      5}, 0, {   -30,   1844}, {0x26, 0x87, 0x04, 0xff}}},\n    {{{  1568,   -185,      4}, 0, {   -30,   1936}, {0x68, 0xbd, 0xe6, 0xff}}},\n    {{{  1312,   -229,    383}, 0, {   144,   1840}, {0x4c, 0xc7, 0x53, 0xff}}},\n    {{{  1524,    227,    172}, 0, {   388,   1904}, {0x59, 0x3e, 0x40, 0xff}}},\n    {{{  1263,    236,    383}, 0, {   320,   1800}, {0x33, 0x44, 0x5d, 0xff}}},\n    {{{  1244,    411,      5}, 0, {   476,   1784}, {0x2e, 0x75, 0xf7, 0xff}}},\n    {{{  1524,    227,   -163}, 0, {   568,   1900}, {0x4f, 0x4d, 0xc3, 0xff}}},\n    {{{  1263,    236,   -372}, 0, {   636,   1796}, {0x46, 0x31, 0xa3, 0xff}}},\n    {{{   241,    413,   -661}, 0, {   656,   1388}, {0x17, 0x46, 0x9a, 0xff}}},\n    {{{   207,    735,      5}, 0, {   474,   1364}, {0x07, 0x7e, 0x09, 0xff}}},\n    {{{  1568,   -185,      4}, 0, {   992,   1936}, {0x68, 0xbd, 0xe6, 0xff}}},\n};\n\n// 0x0600D280\nstatic const Vtx dorrie_seg6_vertex_0600D280[] = {\n    {{{  1312,   -229,   -372}, 0, {   816,   1836}, {0x3d, 0xb9, 0xac, 0xff}}},\n    {{{   241,    413,   -661}, 0, {   656,   1388}, {0x17, 0x46, 0x9a, 0xff}}},\n    {{{  1263,    236,   -372}, 0, {   636,   1796}, {0x46, 0x31, 0xa3, 0xff}}},\n    {{{  1568,   -185,      4}, 0, {   992,   1936}, {0x68, 0xbd, 0xe6, 0xff}}},\n    {{{  1321,   -314,      5}, 0, {   992,   1844}, {0x26, 0x87, 0x04, 0xff}}},\n    {{{   324,   -369,   -714}, 0, {   824,   1448}, {0xf6, 0xbc, 0x96, 0xff}}},\n    {{{  -240,    463,   -562}, 0, {   644,   1196}, {0xcd, 0x43, 0xa2, 0xff}}},\n    {{{   207,    735,      5}, 0, {   474,   1364}, {0x07, 0x7e, 0x09, 0xff}}},\n};\n\n// 0x0600D300 - 0x0600D440\nconst Gfx dorrie_seg6_dl_0600D300[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dorrie_seg6_texture_06009DA0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&dorrie_seg6_lights_0600D078.l, 1),\n    gsSPLight(&dorrie_seg6_lights_0600D078.a, 2),\n    gsSPVertex(dorrie_seg6_vertex_0600D090, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  2,  5,  0, 0x0),\n    gsSP2Triangles( 3,  4,  2, 0x0,  0,  5,  6, 0x0),\n    gsSP2Triangles( 0,  7,  1, 0x0,  0,  6,  8, 0x0),\n    gsSP2Triangles( 0,  8,  7, 0x0,  3,  9,  4, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 3,  1, 14, 0x0),\n    gsSPVertex(dorrie_seg6_vertex_0600D180, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 2,  3,  0, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0, 10,  8, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 10, 0x0),\n    gsSP2Triangles(13, 10, 12, 0x0, 12, 11, 15, 0x0),\n    gsSPVertex(dorrie_seg6_vertex_0600D280, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 5,  6,  1, 0x0,  1,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600D440 - 0x0600D4E8\nconst Gfx dorrie_seg6_dl_0600D440[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(dorrie_seg6_dl_0600D300),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600D4E8\nstatic const Lights1 dorrie_seg6_lights_0600D4E8 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0600D500\nstatic const Vtx dorrie_seg6_vertex_0600D500[] = {\n    {{{  1443,      8,      5}, 0, {   484,   2048}, {0x7e, 0xf8, 0x00, 0xff}}},\n    {{{   -92,    409,      5}, 0, {   470,    932}, {0xef, 0x7d, 0x00, 0xff}}},\n    {{{   -65,    219,    361}, 0, {   316,    960}, {0xe2, 0x2a, 0x73, 0xff}}},\n    {{{   -65,    219,   -350}, 0, {   630,    948}, {0xfc, 0x41, 0x94, 0xff}}},\n    {{{  -332,    214,   -243}, 0, {   600,    756}, {0xb0, 0x32, 0xac, 0xff}}},\n    {{{  -332,    214,    254}, 0, {   338,    764}, {0xbb, 0x47, 0x4e, 0xff}}},\n    {{{    -3,   -224,   -350}, 0, {   822,   1000}, {0xee, 0xb4, 0x9d, 0xff}}},\n    {{{  -255,   -332,      5}, 0, {  1006,    820}, {0xc1, 0x97, 0x1e, 0xff}}},\n    {{{  -255,   -332,      5}, 0, {   -16,    820}, {0xc1, 0x97, 0x1e, 0xff}}},\n    {{{    -3,   -224,    361}, 0, {   146,   1008}, {0xf4, 0xa9, 0x5b, 0xff}}},\n    {{{     9,   -315,      5}, 0, {   -18,   1012}, {0x12, 0x83, 0x00, 0xff}}},\n    {{{     9,   -315,      5}, 0, {  1004,   1012}, {0x12, 0x83, 0x00, 0xff}}},\n    {{{    -3,   -224,    361}, 0, {   164,   1048}, {0xf4, 0xa9, 0x5b, 0xff}}},\n    {{{     9,   -315,      5}, 0, {     0,   1052}, {0x12, 0x83, 0x00, 0xff}}},\n    {{{  1443,      8,      5}, 0, {   502,   2084}, {0x7e, 0xf8, 0x00, 0xff}}},\n};\n\n// 0x0600D5F0\nstatic const Vtx dorrie_seg6_vertex_0600D5F0[] = {\n    {{{  1443,      8,      5}, 0, {   502,   2084}, {0x7e, 0xf8, 0x00, 0xff}}},\n    {{{     9,   -315,      5}, 0, {  1022,   1052}, {0x12, 0x83, 0x00, 0xff}}},\n    {{{    -3,   -224,   -350}, 0, {   840,   1036}, {0xee, 0xb4, 0x9d, 0xff}}},\n};\n\n// 0x0600D620 - 0x0600D6D8\nconst Gfx dorrie_seg6_dl_0600D620[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dorrie_seg6_texture_06009DA0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&dorrie_seg6_lights_0600D4E8.l, 1),\n    gsSPLight(&dorrie_seg6_lights_0600D4E8.a, 2),\n    gsSPVertex(dorrie_seg6_vertex_0600D500, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 1,  5,  2, 0x0,  6,  4,  3, 0x0),\n    gsSP2Triangles( 6,  7,  4, 0x0,  2,  5,  8, 0x0),\n    gsSP2Triangles( 0,  2,  9, 0x0,  2,  8,  9, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0, 11,  7,  6, 0x0),\n    gsSP2Triangles( 0,  6,  3, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(dorrie_seg6_vertex_0600D5F0, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600D6D8 - 0x0600D780\nconst Gfx dorrie_seg6_dl_0600D6D8[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(dorrie_seg6_dl_0600D620),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600D780\nstatic const Lights1 dorrie_seg6_lights_0600D780 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0600D798\nstatic const Vtx dorrie_seg6_vertex_0600D798[] = {\n    {{{  1134,    -10,   -867}, 0, {   594,   1972}, {0xdd, 0xc3, 0x97, 0xff}}},\n    {{{  2429,    -78,   -421}, 0, {   406,   1676}, {0x62, 0xda, 0x46, 0xff}}},\n    {{{  1289,   -124,    319}, 0, {   620,   1500}, {0x17, 0x46, 0x66, 0xff}}},\n    {{{   -58,    112,   -160}, 0, {   816,   1804}, {0xe0, 0x76, 0x20, 0xff}}},\n    {{{   -58,   -112,    147}, 0, {   830,   1696}, {0xc8, 0x8f, 0xfb, 0xff}}},\n    {{{  2429,     35,   -729}, 0, {   394,   1792}, {0x1c, 0x79, 0x16, 0xff}}},\n    {{{  1290,    101,     11}, 0, {   608,   1608}, {0x0b, 0x7a, 0x1e, 0xff}}},\n    {{{  2703,    -24,  -1003}, 0, {   338,   1876}, {0x3e, 0x6e, 0xfe, 0xff}}},\n};\n\n// 0x0600D818 - 0x0600D8B0\nconst Gfx dorrie_seg6_dl_0600D818[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dorrie_seg6_texture_06009DA0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&dorrie_seg6_lights_0600D780.l, 1),\n    gsSPLight(&dorrie_seg6_lights_0600D780.a, 2),\n    gsSPVertex(dorrie_seg6_vertex_0600D798, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 2,  1,  5, 0x0,  2,  6,  3, 0x0),\n    gsSP2Triangles( 5,  6,  2, 0x0,  2,  4,  0, 0x0),\n    gsSP2Triangles( 6,  5,  0, 0x0,  0,  3,  6, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  1,  7,  5, 0x0),\n    gsSP2Triangles( 5,  7,  0, 0x0,  0,  7,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600D8B0 - 0x0600D958\nconst Gfx dorrie_seg6_dl_0600D8B0[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(dorrie_seg6_dl_0600D818),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600D958\nstatic const Lights1 dorrie_seg6_lights_0600D958 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0600D970\nstatic const Vtx dorrie_seg6_vertex_0600D970[] = {\n    {{{  1134,    -13,    872}, 0, {   268,   1708}, {0xde, 0xc1, 0x68, 0xff}}},\n    {{{  1286,   -114,   -315}, 0, {   328,   1164}, {0x0d, 0x1f, 0x86, 0xff}}},\n    {{{  2428,    -73,    422}, 0, {   474,   1360}, {0x56, 0x2a, 0xae, 0xff}}},\n    {{{   -60,    113,    170}, 0, {   116,   1520}, {0xe0, 0x76, 0xe2, 0xff}}},\n    {{{  1287,    107,     -5}, 0, {   320,   1288}, {0x0e, 0x7a, 0xe0, 0xff}}},\n    {{{   -61,   -108,   -139}, 0, {   124,   1396}, {0xc8, 0x8f, 0x05, 0xff}}},\n    {{{  2428,     37,    731}, 0, {   464,   1492}, {0x17, 0x7c, 0xf8, 0xff}}},\n    {{{  2703,    -24,   1004}, 0, {   496,   1588}, {0x3d, 0x6e, 0x03, 0xff}}},\n};\n\n// 0x0600D9F0 - 0x0600DA88\nconst Gfx dorrie_seg6_dl_0600D9F0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dorrie_seg6_texture_06009DA0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&dorrie_seg6_lights_0600D958.l, 1),\n    gsSPLight(&dorrie_seg6_lights_0600D958.a, 2),\n    gsSPVertex(dorrie_seg6_vertex_0600D970, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 1,  5,  3, 0x0,  2,  1,  4, 0x0),\n    gsSP2Triangles( 0,  5,  1, 0x0,  3,  5,  0, 0x0),\n    gsSP2Triangles( 4,  3,  0, 0x0,  6,  7,  2, 0x0),\n    gsSP2Triangles( 4,  6,  2, 0x0,  2,  7,  0, 0x0),\n    gsSP2Triangles( 6,  4,  0, 0x0,  0,  7,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600DA88 - 0x0600DB30\nconst Gfx dorrie_seg6_dl_0600DA88[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(dorrie_seg6_dl_0600D9F0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600DB30\nstatic const Lights1 dorrie_seg6_lights_0600DB30 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0600DB48\nstatic const Vtx dorrie_seg6_vertex_0600DB48[] = {\n    {{{   864,     32,   -681}, 0, {   572,   1464}, {0xd8, 0xc2, 0x99, 0xff}}},\n    {{{   -63,    -44,     97}, 0, {   786,   1880}, {0xa9, 0xea, 0x59, 0xff}}},\n    {{{   -60,    106,    -81}, 0, {   782,   1756}, {0xcd, 0x73, 0xfe, 0xff}}},\n    {{{   978,    -62,    236}, 0, {   578,   2152}, {0x1b, 0xca, 0x6f, 0xff}}},\n    {{{   981,     88,     57}, 0, {   574,   2028}, {0x0b, 0x75, 0x2e, 0xff}}},\n    {{{  1864,    -30,   -331}, 0, {   378,   1888}, {0x56, 0x26, 0x55, 0xff}}},\n    {{{  1865,     35,   -511}, 0, {   374,   1760}, {0x18, 0x7b, 0x0f, 0xff}}},\n    {{{  2079,     13,   -780}, 0, {   320,   1596}, {0x3b, 0x6e, 0x10, 0xff}}},\n};\n\n// 0x0600DBC8 - 0x0600DC60\nconst Gfx dorrie_seg6_dl_0600DBC8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dorrie_seg6_texture_06009DA0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&dorrie_seg6_lights_0600DB30.l, 1),\n    gsSPLight(&dorrie_seg6_lights_0600DB30.a, 2),\n    gsSPVertex(dorrie_seg6_vertex_0600DB48, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  2,  1, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 4,  3,  5, 0x0,  0,  5,  3, 0x0),\n    gsSP2Triangles( 5,  6,  4, 0x0,  0,  2,  4, 0x0),\n    gsSP2Triangles( 4,  6,  0, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 0,  7,  5, 0x0,  6,  7,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600DC60 - 0x0600DD08\nconst Gfx dorrie_seg6_dl_0600DC60[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(dorrie_seg6_dl_0600DBC8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600DD08\nstatic const Lights1 dorrie_seg6_lights_0600DD08 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0600DD20\nstatic const Vtx dorrie_seg6_vertex_0600DD20[] = {\n    {{{   981,     88,    -55}, 0, {   478,    736}, {0x0b, 0x75, 0xd3, 0xff}}},\n    {{{   -61,     97,     82}, 0, {   288,   1108}, {0xcc, 0x73, 0x03, 0xff}}},\n    {{{   864,     24,    682}, 0, {   444,   1372}, {0xd8, 0xc1, 0x66, 0xff}}},\n    {{{   -63,    -52,    -97}, 0, {   292,    972}, {0xa9, 0xea, 0xa7, 0xff}}},\n    {{{  1865,     35,    512}, 0, {   628,    984}, {0x17, 0x7b, 0xf2, 0xff}}},\n    {{{  1864,    -28,    332}, 0, {   632,    840}, {0x55, 0x27, 0xac, 0xff}}},\n    {{{   979,    -61,   -236}, 0, {   482,    600}, {0x1b, 0xcb, 0x91, 0xff}}},\n    {{{  2079,     13,    781}, 0, {   662,   1152}, {0x3a, 0x6f, 0xf1, 0xff}}},\n};\n\n// 0x0600DDA0 - 0x0600DE38\nconst Gfx dorrie_seg6_dl_0600DDA0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dorrie_seg6_texture_06009DA0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&dorrie_seg6_lights_0600DD08.l, 1),\n    gsSPLight(&dorrie_seg6_lights_0600DD08.a, 2),\n    gsSPVertex(dorrie_seg6_vertex_0600DD20, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  0,  6,  3, 0x0),\n    gsSP2Triangles( 5,  6,  0, 0x0,  2,  4,  0, 0x0),\n    gsSP2Triangles( 2,  6,  5, 0x0,  2,  3,  6, 0x0),\n    gsSP2Triangles( 1,  3,  2, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 5,  7,  2, 0x0,  2,  7,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600DE38 - 0x0600DEE0\nconst Gfx dorrie_seg6_dl_0600DE38[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(dorrie_seg6_dl_0600DDA0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600DEE0\nstatic const Vtx dorrie_seg6_vertex_0600DEE0[] = {\n    {{{   558,    286,    434}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   544,    476,    403}, 0, {   479,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   358,    472,    454}, 0, {   479,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   371,    281,    485}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   371,    281,   -484}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   358,    472,   -453}, 0, {   479,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   544,    476,   -402}, 0, {   479,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   558,    286,   -433}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0600DF60 - 0x0600DFA8\nconst Gfx dorrie_seg6_dl_0600DF60[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dorrie_seg6_texture_06009BA0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 16 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(dorrie_seg6_vertex_0600DEE0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600DFA8 - 0x0600E060\nconst Gfx dorrie_seg6_dl_0600DFA8[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 4, G_TX_NOLOD, G_TX_CLAMP, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (16 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(dorrie_seg6_dl_0600DF60),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/exclamation_box/geo.inc.c",
    "content": "// 0x0F000694\nconst GeoLayout exclamation_box_geo[] = {\n    GEO_CULLING_RADIUS(300),\n    GEO_OPEN_NODE(),\n        GEO_SHADOW(SHADOW_SQUARE_PERMANENT, 0xB4, 70),\n        GEO_OPEN_NODE(),\n            GEO_SWITCH_CASE(4, geo_switch_anim_state),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, exclamation_box_seg8_dl_08019318),\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, exclamation_box_seg8_dl_08019378),\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, exclamation_box_seg8_dl_080193D8),\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, exclamation_box_seg8_dl_08019438),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/exclamation_box/model.inc.c",
    "content": "// Exclamation Box\n\n// 0x08012E10\nstatic const Lights1 exclamation_box_seg8_lights_08012E10 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x08012E28\nALIGNED8 static const Texture exclamation_box_seg8_texture_08012E28[] = {\n#include \"actors/exclamation_box/vanish_cap_box_front.rgba16.inc.c\"\n};\n\n// 0x08013628\nALIGNED8 static const Texture exclamation_box_seg8_texture_08013628[] = {\n#include \"actors/exclamation_box/vanish_cap_box_side.rgba16.inc.c\"\n};\n\n// 0x08014628\nALIGNED8 static const Texture exclamation_box_seg8_texture_08014628[] = {\n#include \"actors/exclamation_box/metal_cap_box_front.rgba16.inc.c\"\n};\n\n// 0x08014E28\nALIGNED8 static const Texture exclamation_box_seg8_texture_08014E28[] = {\n#include \"actors/exclamation_box/metal_cap_box_side.rgba16.inc.c\"\n};\n\n// 0x08015E28\nALIGNED8 static const Texture exclamation_box_seg8_texture_08015E28[] = {\n#include \"actors/exclamation_box/wing_cap_box_front.rgba16.inc.c\"\n};\n\n// 0x08016628\nALIGNED8 static const Texture exclamation_box_seg8_texture_08016628[] = {\n#include \"actors/exclamation_box/wing_cap_box_side.rgba16.inc.c\"\n};\n\n// 0x08017628\nALIGNED8 static const Texture exclamation_box_seg8_texture_08017628[] = {\n#include \"actors/exclamation_box/exclamation_box_front.rgba16.inc.c\"\n};\n\n// 0x08017E28\nALIGNED8 static const Texture exclamation_box_seg8_texture_08017E28[] = {\n#include \"actors/exclamation_box/exclamation_box_side.rgba16.inc.c\"\n};\n\n// 0x08018E28\nstatic const Vtx exclamation_box_seg8_vertex_08018E28[] = {\n    {{{   -25,      1,    -25}, 0, {   992,    992}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -25,     52,    -25}, 0, {   992,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    26,     52,    -25}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -25,      1,     26}, 0, {     0,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    26,      1,     26}, 0, {   992,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    26,     52,     26}, 0, {   992,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -25,     52,     26}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    26,     52,    -25}, 0, {   992,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    26,      1,     26}, 0, {     0,    992}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    26,      1,    -25}, 0, {   992,    992}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    26,     52,     26}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -25,      1,    -25}, 0, {     0,    992}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -25,      1,     26}, 0, {   992,    992}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -25,     52,     26}, 0, {   992,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -25,     52,    -25}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    26,      1,    -25}, 0, {     0,    992}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x08018F28\nstatic const Vtx exclamation_box_seg8_vertex_08018F28[] = {\n    {{{    26,      1,    -25}, 0, {   992,   2014}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    26,      1,     26}, 0, {   992,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -25,      1,     26}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -25,      1,    -25}, 0, {     0,   2014}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -25,     52,    -25}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -25,     52,     26}, 0, {     0,   2014}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    26,     52,     26}, 0, {   992,   2014}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    26,     52,    -25}, 0, {   992,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x08018FA8 - 0x08019008\nconst Gfx exclamation_box_seg8_dl_08018FA8[] = {\n    gsSPLight(&exclamation_box_seg8_lights_08012E10.l, 1),\n    gsSPLight(&exclamation_box_seg8_lights_08012E10.a, 2),\n    gsSPVertex(exclamation_box_seg8_vertex_08018E28, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x08019008 - 0x08019058\nconst Gfx exclamation_box_seg8_dl_08019008[] = {\n    gsSPVertex(exclamation_box_seg8_vertex_08018F28, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x08019058 - 0x080190A0\nconst Gfx exclamation_box_seg8_dl_08019058[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x080190A0\nstatic const Vtx exclamation_box_seg8_vertex_080190A0[] = {\n    {{{   -25,      1,     26}, 0, {   992,    992}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -25,     52,     26}, 0, {   992,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -25,     52,    -25}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    26,      1,     26}, 0, {   992,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    26,     52,     26}, 0, {   992,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -25,     52,     26}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -25,      1,     26}, 0, {     0,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    26,      1,    -25}, 0, {   992,    992}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    26,     52,    -25}, 0, {   992,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    26,     52,     26}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    26,      1,     26}, 0, {     0,    992}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -25,      1,    -25}, 0, {   992,    992}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    26,     52,    -25}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    26,      1,    -25}, 0, {     0,    992}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -25,     52,    -25}, 0, {   992,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -25,      1,    -25}, 0, {     0,    992}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x080191A0\nstatic const Vtx exclamation_box_seg8_vertex_080191A0[] = {\n    {{{   -25,     52,     26}, 0, {     0,    992}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    26,     52,     26}, 0, {  2014,    992}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    26,     52,    -25}, 0, {  2014,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -25,     52,    -25}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -25,      1,     26}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -25,      1,    -25}, 0, {     0,    992}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    26,      1,    -25}, 0, {  2014,    992}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    26,      1,     26}, 0, {  2014,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x08019220 - 0x08019280\nconst Gfx exclamation_box_seg8_dl_08019220[] = {\n    gsSPLight(&exclamation_box_seg8_lights_08012E10.l, 1),\n    gsSPLight(&exclamation_box_seg8_lights_08012E10.a, 2),\n    gsSPVertex(exclamation_box_seg8_vertex_080190A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x08019280 - 0x080192D0\nconst Gfx exclamation_box_seg8_dl_08019280[] = {\n    gsSPVertex(exclamation_box_seg8_vertex_080191A0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x080192D0 - 0x08019318\nconst Gfx exclamation_box_seg8_dl_080192D0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x08019318 - 0x08019378\nconst Gfx exclamation_box_seg8_dl_08019318[] = {\n    gsSPDisplayList(exclamation_box_seg8_dl_08019058),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, exclamation_box_seg8_texture_08015E28),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(exclamation_box_seg8_dl_08018FA8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, exclamation_box_seg8_texture_08016628),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPBranchList(exclamation_box_seg8_dl_08019008),\n};\n\n// 0x08019378 - 0x080193D8\nconst Gfx exclamation_box_seg8_dl_08019378[] = {\n    gsSPDisplayList(exclamation_box_seg8_dl_080192D0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, exclamation_box_seg8_texture_08014628),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(exclamation_box_seg8_dl_08019220),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, exclamation_box_seg8_texture_08014E28),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPBranchList(exclamation_box_seg8_dl_08019280),\n};\n\n// 0x080193D8 - 0x08019438\nconst Gfx exclamation_box_seg8_dl_080193D8[] = {\n    gsSPDisplayList(exclamation_box_seg8_dl_08019058),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, exclamation_box_seg8_texture_08012E28),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(exclamation_box_seg8_dl_08018FA8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, exclamation_box_seg8_texture_08013628),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPBranchList(exclamation_box_seg8_dl_08019008),\n};\n\n// 0x08019438 - 0x08019498\nconst Gfx exclamation_box_seg8_dl_08019438[] = {\n    gsSPDisplayList(exclamation_box_seg8_dl_080192D0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, exclamation_box_seg8_texture_08017628),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(exclamation_box_seg8_dl_08019220),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, exclamation_box_seg8_texture_08017E28),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPBranchList(exclamation_box_seg8_dl_08019280),\n};\n"
  },
  {
    "path": "actors/exclamation_box_outline/collision.inc.c",
    "content": "// Exclamation Box Outline\n\n// 0x08025F78 - 0x08025FFC\nconst Collision exclamation_box_outline_seg8_collision_08025F78[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-26, 30, -26),\n    COL_VERTEX(-26, 30, 26),\n    COL_VERTEX(-26, 52, 26),\n    COL_VERTEX(26, 30, 26),\n    COL_VERTEX(26, 52, 26),\n    COL_VERTEX(26, 30, -26),\n    COL_VERTEX(26, 52, -26),\n    COL_VERTEX(-26, 52, -26),\n\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(1, 3, 4),\n    COL_TRI(1, 4, 2),\n    COL_TRI(5, 3, 1),\n    COL_TRI(5, 1, 0),\n    COL_TRI(6, 4, 3),\n    COL_TRI(6, 3, 5),\n    COL_TRI(7, 4, 6),\n    COL_TRI(7, 2, 4),\n    COL_TRI(0, 2, 7),\n    COL_TRI(7, 6, 5),\n    COL_TRI(7, 5, 0),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "actors/exclamation_box_outline/geo.inc.c",
    "content": "// 0x0F000A5A\nconst GeoLayout exclamation_box_outline_geo[] = {\n    GEO_CULLING_RADIUS(300),\n    GEO_OPEN_NODE(),\n        GEO_SHADOW(SHADOW_SQUARE_PERMANENT, 0xB4, 70),\n        GEO_OPEN_NODE(),\n            GEO_SWITCH_CASE(4, geo_switch_anim_state),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, exclamation_box_outline_seg8_dl_08024F88),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, exclamation_box_outline_seg8_dl_08024FA8),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, exclamation_box_outline_seg8_dl_08024FC8),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, exclamation_box_outline_seg8_dl_08024FE8),\n            GEO_CLOSE_NODE(),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, exclamation_box_outline_seg8_dl_080259F8),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/exclamation_box_outline/model.inc.c",
    "content": "// Exclamation Box Outline\n\n// 0x08024CB8\nstatic const Lights1 exclamation_box_outline_seg8_lights_08024CB8 = gdSPDefLights1(\n    0x7f, 0x00, 0x00,\n    0xff, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x08024CD0\nstatic const Lights1 exclamation_box_outline_seg8_lights_08024CD0 = gdSPDefLights1(\n    0x00, 0x7f, 0x00,\n    0x00, 0xff, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x08024CE8\nstatic const Lights1 exclamation_box_outline_seg8_lights_08024CE8 = gdSPDefLights1(\n    0x00, 0x00, 0x7f,\n    0x00, 0x00, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x08024D00\nstatic const Lights1 exclamation_box_outline_seg8_lights_08024D00 = gdSPDefLights1(\n    0x7f, 0x6a, 0x00,\n    0xff, 0xd4, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x08024D18\nstatic const Vtx exclamation_box_outline_seg8_vertex_08024D18[] = {\n    {{{    26,      1,    -25}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x50}}},\n    {{{    26,     52,     26}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x50}}},\n    {{{    26,      1,     26}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x50}}},\n    {{{    26,      1,     26}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x50}}},\n    {{{   -25,      1,     26}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x50}}},\n    {{{   -25,      1,    -25}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x50}}},\n    {{{    26,      1,    -25}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x50}}},\n    {{{    26,      1,     26}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x50}}},\n    {{{    26,     52,     26}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x50}}},\n    {{{   -25,     52,     26}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x50}}},\n    {{{   -25,      1,     26}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x50}}},\n    {{{   -25,      1,     26}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x50}}},\n    {{{   -25,     52,     26}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x50}}},\n    {{{   -25,     52,    -25}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x50}}},\n    {{{   -25,      1,    -25}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x50}}},\n};\n\n// 0x08024E08\nstatic const Vtx exclamation_box_outline_seg8_vertex_08024E08[] = {\n    {{{   -25,      1,    -25}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x50}}},\n    {{{   -25,     52,    -25}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x50}}},\n    {{{    26,     52,    -25}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x50}}},\n    {{{    26,      1,    -25}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x50}}},\n    {{{    26,      1,    -25}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x50}}},\n    {{{    26,     52,    -25}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x50}}},\n    {{{    26,     52,     26}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x50}}},\n    {{{   -25,     52,     26}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x50}}},\n    {{{    26,     52,     26}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x50}}},\n    {{{    26,     52,    -25}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x50}}},\n    {{{   -25,     52,    -25}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x50}}},\n};\n\n// 0x08024EB8 - 0x08024F30\nconst Gfx exclamation_box_outline_seg8_dl_08024EB8[] = {\n    gsSPVertex(exclamation_box_outline_seg8_vertex_08024D18, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(exclamation_box_outline_seg8_vertex_08024E08, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle( 7,  9, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x08024F30 - 0x08024F58\nconst Gfx exclamation_box_outline_seg8_dl_08024F30[] = {\n    gsDPPipeSync(),\n    gsDPSetEnvColor(255, 255, 255, 80),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPEndDisplayList(),\n};\n\n// 0x08024F58 - 0x08024F88\nconst Gfx exclamation_box_outline_seg8_dl_08024F58[] = {\n    gsSPDisplayList(exclamation_box_outline_seg8_dl_08024EB8),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n\n// 0x08024F88 - 0x08024FA8\nconst Gfx exclamation_box_outline_seg8_dl_08024F88[] = {\n    gsSPDisplayList(exclamation_box_outline_seg8_dl_08024F30),\n    gsSPLight(&exclamation_box_outline_seg8_lights_08024CB8.l, 1),\n    gsSPLight(&exclamation_box_outline_seg8_lights_08024CB8.a, 2),\n    gsSPBranchList(exclamation_box_outline_seg8_dl_08024F58),\n};\n\n// 0x08024FA8 - 0x08024FC8\nconst Gfx exclamation_box_outline_seg8_dl_08024FA8[] = {\n    gsSPDisplayList(exclamation_box_outline_seg8_dl_08024F30),\n    gsSPLight(&exclamation_box_outline_seg8_lights_08024CD0.l, 1),\n    gsSPLight(&exclamation_box_outline_seg8_lights_08024CD0.a, 2),\n    gsSPBranchList(exclamation_box_outline_seg8_dl_08024F58),\n};\n\n// 0x08024FC8 - 0x08024FE8\nconst Gfx exclamation_box_outline_seg8_dl_08024FC8[] = {\n    gsSPDisplayList(exclamation_box_outline_seg8_dl_08024F30),\n    gsSPLight(&exclamation_box_outline_seg8_lights_08024CE8.l, 1),\n    gsSPLight(&exclamation_box_outline_seg8_lights_08024CE8.a, 2),\n    gsSPBranchList(exclamation_box_outline_seg8_dl_08024F58),\n};\n\n// 0x08024FE8 - 0x08025008\nconst Gfx exclamation_box_outline_seg8_dl_08024FE8[] = {\n    gsSPDisplayList(exclamation_box_outline_seg8_dl_08024F30),\n    gsSPLight(&exclamation_box_outline_seg8_lights_08024D00.l, 1),\n    gsSPLight(&exclamation_box_outline_seg8_lights_08024D00.a, 2),\n    gsSPBranchList(exclamation_box_outline_seg8_dl_08024F58),\n};\n\n// 0x08025008\nstatic const Vtx exclamation_box_outline_seg8_vertex_08025008[] = {\n    {{{   -25,     52,     26}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    26,     52,     26}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    26,     52,    -25}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -25,     52,    -25}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    26,      1,     26}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -25,     52,     26}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -25,      1,     26}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    26,      1,    -25}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    26,     52,    -25}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    26,     52,     26}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    26,      1,     26}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -25,      1,    -25}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    26,      1,    -25}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -25,     52,    -25}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x080250E8\nstatic const Vtx exclamation_box_outline_seg8_vertex_080250E8[] = {\n    {{{   -25,      1,     26}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -25,     52,     26}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -25,     52,    -25}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -25,      1,    -25}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -25,      1,     26}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -25,      1,    -25}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    26,      1,    -25}, 0, {   996,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    26,      1,     26}, 0, {   -26,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x08025168\nALIGNED8 static const Texture exclamation_box_outline_seg8_texture_08025168[] = {\n#include \"actors/exclamation_box_outline/exclamation_box_outline.rgba16.inc.c\"\n};\n\n// 0x08025968 - 0x080259F8\nconst Gfx exclamation_box_outline_seg8_dl_08025968[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, exclamation_box_outline_seg8_texture_08025168),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(exclamation_box_outline_seg8_vertex_08025008, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  1,  5, 0x0,  4,  5,  6, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles(11,  8, 12, 0x0, 11, 13,  8, 0x0),\n    gsSPVertex(exclamation_box_outline_seg8_vertex_080250E8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x080259F8 - 0x08025A68\nconst Gfx exclamation_box_outline_seg8_dl_080259F8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(exclamation_box_outline_seg8_dl_08025968),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x08025A68\nstatic const Lights1 exclamation_box_outline_seg8_lights_08025A68 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x08025A80\nALIGNED8 static const Texture exclamation_box_outline_seg8_texture_08025A80[] = {\n#include \"actors/exclamation_box_outline/exclamation_point.rgba16.inc.c\"\n};\n\n// 0x08025E80\nstatic const Vtx exclamation_box_outline_seg8_vertex_08025E80[] = {\n    {{{   -22,     49,      0}, 0, {  -157,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -22,      4,      0}, 0, {  -157,   1048}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    23,      4,      0}, 0, {   605,   1048}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    23,     49,      0}, 0, {   605,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x08025EC0 - 0x08025F08\nconst Gfx exclamation_box_outline_seg8_dl_08025EC0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, exclamation_box_outline_seg8_texture_08025A80),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&exclamation_box_outline_seg8_lights_08025A68.l, 1),\n    gsSPLight(&exclamation_box_outline_seg8_lights_08025A68.a, 2),\n    gsSPVertex(exclamation_box_outline_seg8_vertex_08025E80, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x08025F08 - 0x08025F78\nconst Gfx exclamation_box_outline_seg8_dl_08025F08[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(exclamation_box_outline_seg8_dl_08025EC0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/explosion/geo.inc.c",
    "content": "// 0x16000040\nconst GeoLayout explosion_geo[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_SWITCH_CASE(9, geo_switch_anim_state),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, explosion_seg3_dl_03004298),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, explosion_seg3_dl_03004298),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, explosion_seg3_dl_030042B0),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, explosion_seg3_dl_030042B0),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, explosion_seg3_dl_030042C8),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, explosion_seg3_dl_030042E0),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, explosion_seg3_dl_030042F8),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, explosion_seg3_dl_03004310),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, explosion_seg3_dl_03004328),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/explosion/model.inc.c",
    "content": "// Explosion\n\n// 0x030009C8\nstatic const Vtx explosion_seg3_vertex_030009C8[] = {\n    {{{  -128,   -128,      0}, 0, {     0,    992}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   128,   -128,      0}, 0, {   992,    992}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   128,    128,      0}, 0, {   992,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -128,    128,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x03000A08\nALIGNED8 static const Texture explosion_seg3_texture_03000A08[] = {\n#include \"actors/explosion/explosion_0.rgba16.inc.c\"\n};\n\n// 0x03001208\nALIGNED8 static const Texture explosion_seg3_texture_03001208[] = {\n#include \"actors/explosion/explosion_1.rgba16.inc.c\"\n};\n\n// 0x03001A08\nALIGNED8 static const Texture explosion_seg3_texture_03001A08[] = {\n#include \"actors/explosion/explosion_2.rgba16.inc.c\"\n};\n\n// 0x03002208\nALIGNED8 static const Texture explosion_seg3_texture_03002208[] = {\n#include \"actors/explosion/explosion_3.rgba16.inc.c\"\n};\n\n// 0x03002A08\nALIGNED8 static const Texture explosion_seg3_texture_03002A08[] = {\n#include \"actors/explosion/explosion_4.rgba16.inc.c\"\n};\n\n// 0x03003208\nALIGNED8 static const Texture explosion_seg3_texture_03003208[] = {\n#include \"actors/explosion/explosion_5.rgba16.inc.c\"\n};\n\n// 0x03003A08\nALIGNED8 static const Texture explosion_seg3_texture_03003A08[] = {\n#include \"actors/explosion/explosion_6.rgba16.inc.c\"\n};\n\n// 0x03004208 - 0x03004298\nconst Gfx explosion_seg3_dl_03004208[] = {\n    gsDPSetCombineMode(G_CC_DECALFADEA, G_CC_DECALFADEA),\n    gsDPSetEnvColor(255, 255, 255, 150),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPVertex(explosion_seg3_vertex_030009C8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x03004298 - 0x030042B0\nconst Gfx explosion_seg3_dl_03004298[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, explosion_seg3_texture_03000A08),\n    gsSPBranchList(explosion_seg3_dl_03004208),\n};\n\n// 0x030042B0 - 0x030042C8\nconst Gfx explosion_seg3_dl_030042B0[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, explosion_seg3_texture_03001208),\n    gsSPBranchList(explosion_seg3_dl_03004208),\n};\n\n// 0x030042C8 - 0x030042E0\nconst Gfx explosion_seg3_dl_030042C8[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, explosion_seg3_texture_03001A08),\n    gsSPBranchList(explosion_seg3_dl_03004208),\n};\n\n// 0x030042E0 - 0x030042F8\nconst Gfx explosion_seg3_dl_030042E0[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, explosion_seg3_texture_03002208),\n    gsSPBranchList(explosion_seg3_dl_03004208),\n};\n\n// 0x030042F8 - 0x03004310\nconst Gfx explosion_seg3_dl_030042F8[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, explosion_seg3_texture_03002A08),\n    gsSPBranchList(explosion_seg3_dl_03004208),\n};\n\n// 0x03004310 - 0x03004328\nconst Gfx explosion_seg3_dl_03004310[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, explosion_seg3_texture_03003208),\n    gsSPBranchList(explosion_seg3_dl_03004208),\n};\n\n// 0x03004328 - 0x03004340\nconst Gfx explosion_seg3_dl_03004328[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, explosion_seg3_texture_03003A08),\n    gsSPBranchList(explosion_seg3_dl_03004208),\n};\n"
  },
  {
    "path": "actors/eyerok/anims/anim_0500D270.inc.c",
    "content": "// 0x0500CC48\nstatic const s16 eyerok_seg5_animvalue_0500CC48[] = {\n    0x0000, 0x0078, 0x0077, 0x0076, 0x0075, 0x0074, 0x0074, 0x0075,\n    0x0078, 0x007D, 0x0084, 0x008E, 0x0097, 0x009F, 0x00A5, 0x00A7,\n    0x0000, 0x0013, 0x0048, 0x0093, 0x00E8, 0x013D, 0x0188, 0x01BC,\n    0x01DB, 0x01F0, 0x01FD, 0x0204, 0x0206, 0x0206, 0x0206, 0xFFFD,\n    0xFFF0, 0xFFCE, 0xFF9E, 0xFF67, 0xFF2F, 0xFEFD, 0xFED9, 0xFEC0,\n    0xFEAB, 0xFE9A, 0xFE8D, 0xFE83, 0xFE7E, 0xFE7C, 0x3FFF, 0x3D25,\n    0x3C98, 0x3B33, 0x3954, 0x375D, 0x35AD, 0x34A4, 0x3436, 0x340B,\n    0x3412, 0x343C, 0x3479, 0x34B9, 0x34EB, 0x34FF, 0x3CBD, 0x3C49,\n    0x3B23, 0x3997, 0x37F4, 0x3687, 0x359E, 0x352A, 0x34E6, 0x34C6,\n    0x34C1, 0x34CE, 0x34E3, 0x34F6, 0x34FF, 0x3B1B, 0x3AB0, 0x399F,\n    0x3832, 0x36B2, 0x3569, 0x34A1, 0x344F, 0x3432, 0x343B, 0x3460,\n    0x3492, 0x34C6, 0x34EF, 0x34FF, 0x3912, 0x38D7, 0x3841, 0x3778,\n    0x36A2, 0x35E7, 0x356E, 0x3530, 0x3509, 0x34F3, 0x34EC, 0x34EE,\n    0x34F4, 0x34FC, 0x34FF, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,\n    0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,\n    0xFFFC, 0xFFFC, 0x3AAB, 0x3A4A, 0x395A, 0x3823, 0x36EE, 0x3605,\n    0x35B1, 0x35FC, 0x36A9, 0x3798, 0x38A5, 0x39B1, 0x3A99, 0x3B3D,\n    0x3B7B, 0x8001, 0x8001, 0xBCBF, 0xBBEB, 0xB9D9, 0xB720, 0xB45D,\n    0xB229, 0xB11E, 0xB142, 0xB211, 0xB354, 0xB4D6, 0xB660, 0xB7BC,\n    0xB8B5, 0xB914, 0x8001, 0x8001, 0xB7DB, 0xB784, 0xB6AD, 0xB596,\n    0xB483, 0xB3B7, 0xB373, 0xB3C2, 0xB46D, 0xB555, 0xB65A, 0xB75C,\n    0xB83B, 0xB8D8, 0xB914, 0x8001, 0x8001, 0xBB1D, 0xBAAF, 0xB999,\n    0xB82D, 0xB6BA, 0xB592, 0xB504, 0xB514, 0xB57D, 0xB622, 0xB6E7,\n    0xB7B1, 0xB863, 0xB8E3, 0xB914, 0x8001, 0x8001, 0xBBEE, 0xBB5D,\n    0xB9EF, 0xB80F, 0xB626, 0xB49E, 0xB3E2, 0xB3F3, 0xB477, 0xB549,\n    0xB647, 0xB74A, 0xB830, 0xB8D5, 0xB914, 0x7FFB, 0x7FFE, 0x7FFE,\n    0x7FFE, 0x7FFE, 0x7FFE, 0x8002, 0x8002, 0x8001, 0x7FFE, 0x7FFE,\n    0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x488D, 0x4816, 0x46EB,\n    0x4569, 0x43E9, 0x42C6, 0x425B, 0x42B3, 0x4384, 0x44A4, 0x45EB,\n    0x4730, 0x484B, 0x4912, 0x495E, 0x8204, 0x81F1, 0x81C1, 0x8183,\n    0x8145, 0x8115, 0x8102, 0x810E, 0x812C, 0x8157, 0x8187, 0x81B8,\n    0x81E2, 0x8200, 0x820B, 0x7102, 0x713F, 0x71E0, 0x72C8, 0x73D6,\n    0x74ED, 0x75EE, 0x76FB, 0x7836, 0x7988, 0x7AD6, 0x7C06, 0x7D00,\n    0x7DA8, 0x7DE6, 0x09AF, 0x092A, 0x07D6, 0x060A, 0x041C, 0x0265,\n    0x013C, 0x008B, 0x0000, 0xFF97, 0xFF4A, 0xFF16, 0xFEF6, 0xFEE6,\n    0xFEE2, 0x806A, 0x8063, 0x8051, 0x8039, 0x8021, 0x800E, 0x8007,\n    0x800B, 0x8016, 0x8026, 0x8038, 0x804B, 0x805A, 0x8066, 0x806A,\n    0x7D50, 0x7D5E, 0x7D84, 0x7DBA, 0x7DFA, 0x7E3C, 0x7E79, 0x7EBA,\n    0x7F06, 0x7F58, 0x7FA9, 0x7FF2, 0x8032, 0x805B, 0x806A, 0x0488,\n    0x0397, 0x0135, 0xFE10, 0xFAD1, 0xF825, 0xF6B7, 0xF683, 0xF6F0,\n    0xF7D1, 0xF8F3, 0xFA29, 0xFB41, 0xFC0D, 0xFC5B, 0x80C9, 0x80C6,\n    0x80BC, 0x80AB, 0x8095, 0x8079, 0x8057, 0x802A, 0x7FEC, 0x7FAB,\n    0x7F68, 0x7F2A, 0x7EF6, 0x7ED2, 0x7EC5, 0x837B, 0x837A, 0x8377,\n    0x8374, 0x8370, 0x836C, 0x8369, 0x8367, 0x8364, 0x8362, 0x835F,\n    0x835D, 0x835B, 0x835A, 0x8359, 0x0003, 0xFFA9, 0xFEC3, 0xFD93,\n    0xFC5B, 0xFB5C, 0xFAD7, 0xFACA, 0xFAFE, 0xFB5F, 0xFBD9, 0xFC59,\n    0xFCCC, 0xFD20, 0xFD40, 0x7CD1, 0x7CE4, 0x7D16, 0x7D58, 0x7D9E,\n    0x7DDA, 0x7DFF, 0x7E0E, 0x7E14, 0x7E13, 0x7E0D, 0x7E05, 0x7DFC,\n    0x7DF5, 0x7DF2, 0x8971, 0x8959, 0x8919, 0x88BC, 0x884D, 0x87D8,\n    0x8768, 0x86EE, 0x865B, 0x85BD, 0x8520, 0x848F, 0x8418, 0x83C8,\n    0x83AB, 0x02B1, 0x0256, 0x0172, 0x0045, 0xFF12, 0xFE17, 0xFD97,\n    0xFD91, 0xFDCD, 0xFE37, 0xFEBB, 0xFF44, 0xFFBF, 0x0017, 0x0039,\n    0x8001, 0x8001, 0x8152, 0x8152, 0xF9B2, 0xF9F0, 0xFA9E, 0xFBA8,\n    0xFCFD, 0xFE8A, 0x003B, 0x0200, 0x03C5, 0x0577, 0x0703, 0x0858,\n    0x0963, 0x0A11, 0x0A4F, 0x2304, 0x2313, 0x233B, 0x237A, 0x23CB,\n    0x2428, 0x248E, 0x24F9, 0x2564, 0x25CA, 0x2627, 0x2678, 0x26B6,\n    0x26DF, 0x26EE, 0xF1F7, 0xF227, 0xF2AC, 0xF379, 0xF47F, 0xF5B0,\n    0xF6FE, 0xF85A, 0xF9B5, 0xFB03, 0xFC34, 0xFD3A, 0xFE07, 0xFE8C,\n    0xFEBC, 0x8152, 0x0347, 0xB298, 0xE257, 0x8152, 0x25DB, 0x25E7,\n    0x2609, 0x263E, 0x2681, 0x26CE, 0x2724, 0x277C, 0x27D5, 0x282A,\n    0x2878, 0x28BB, 0x28EF, 0x2911, 0x291E, 0x0000, 0x00EE, 0x038B,\n    0x078E, 0x0CB0, 0x12A8, 0x1930, 0x1FFF, 0x26CF, 0x2D56, 0x334F,\n    0x3871, 0x3C73, 0x3F10, 0x3FFF, 0x0000, 0x00B1, 0x02A3, 0x05A0,\n    0x0971, 0x0DE3, 0x12C0, 0x17D2, 0x1CE4, 0x21C0, 0x2632, 0x2A04,\n    0x2D00, 0x2EF2, 0x2FA4, 0x2DA1, 0x2ED5, 0x3231, 0x375B, 0x3DF5,\n    0x45A4, 0x4E0C, 0x56D0, 0x5F94, 0x67FB, 0x6FAA, 0x7645, 0x7B6F,\n    0x7ECB, 0x8001,\n};\n\n// 0x0500D06C\nstatic const u16 eyerok_seg5_animindex_0500D06C[] = {\n    0x000F, 0x0001, 0x000F, 0x0010, 0x000F, 0x001F, 0x0001, 0x0000, 0x0001, 0x002E, 0x0001, 0x0000,\n    0x000F, 0x01E5, 0x000F, 0x01F4, 0x000F, 0x0203,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000F, 0x01D6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01D5,\n    0x000F, 0x00EC, 0x000F, 0x00FB, 0x000F, 0x010A,\n    0x0001, 0x0089, 0x0001, 0x008A, 0x000F, 0x008B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000F, 0x002F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01D1,\n    0x000F, 0x0119, 0x000F, 0x0128, 0x000F, 0x0137,\n    0x0001, 0x009A, 0x0001, 0x009B, 0x000F, 0x009C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000F, 0x003E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01A3,\n    0x000F, 0x0146, 0x000F, 0x0155, 0x000F, 0x0164,\n    0x0001, 0x00AB, 0x0001, 0x00AC, 0x000F, 0x00AD,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000F, 0x004D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01A2,\n    0x000F, 0x0173, 0x000F, 0x0182, 0x000F, 0x0191,\n    0x0001, 0x00BC, 0x0001, 0x00BD, 0x000F, 0x00BE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000F, 0x005C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x01D2, 0x0001, 0x01D3, 0x0001, 0x01D4,\n    0x000F, 0x01A4, 0x000F, 0x01B3, 0x000F, 0x01C2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x01A0, 0x0001, 0x01A1, 0x0001, 0x0000,\n    0x0001, 0x00CD, 0x000F, 0x00CE, 0x000F, 0x00DD,\n    0x0001, 0x0000, 0x000F, 0x006B, 0x000F, 0x007A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x0500D270\nstatic const struct Animation eyerok_seg5_anim_0500D270 = {\n    33,\n    0,\n    0,\n    0,\n    0x0F,\n    ANIMINDEX_NUMPARTS(eyerok_seg5_animindex_0500D06C),\n    eyerok_seg5_animvalue_0500CC48,\n    eyerok_seg5_animindex_0500D06C,\n    0,\n};\n"
  },
  {
    "path": "actors/eyerok/anims/anim_0500DF50.inc.c",
    "content": "// 0x0500D288\nstatic const s16 eyerok_seg5_animvalue_0500D288[] = {\n    0x0000, 0x0078, 0x0000, 0x0005, 0x0017, 0x0031, 0x0051, 0x0072,\n    0x0094, 0x00B1, 0x00C8, 0x00DF, 0x00F8, 0x0109, 0x0109, 0x00FE,\n    0x00ED, 0x00DA, 0x00C7, 0x00D4, 0x00DF, 0x00E8, 0x00EF, 0x00F3,\n    0x00F4, 0x00F1, 0x00EB, 0x00E3, 0x00D9, 0x00CF, 0x00C6, 0x00D3,\n    0x00DE, 0x00E3, 0x00E2, 0x00DC, 0x00D6, 0x00CF, 0x00C9, 0x00C7,\n    0x00C8, 0x00C8, 0xFF96, 0xFFA2, 0xFFC2, 0xFFF2, 0x0029, 0x0066,\n    0x00A1, 0x00D6, 0x00FF, 0x010D, 0x0106, 0x00FF, 0x00FF, 0x00FF,\n    0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF,\n    0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF,\n    0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF, 0x00FF,\n    0x00FF, 0x00FF, 0x3FFF, 0x335E, 0x30A2, 0x2A47, 0x2312, 0x1DC6,\n    0x1BEF, 0x1BDB, 0x1B6F, 0x1970, 0x1719, 0x15F9, 0x166F, 0x1795,\n    0x190B, 0x1A73, 0x1B6F, 0x1BE6, 0x1C19, 0x1C28, 0x1C38, 0x1C6B,\n    0x1CE4, 0x1DC6, 0x1F06, 0x207D, 0x2220, 0x23E7, 0x25C8, 0x27B9,\n    0x29B0, 0x2BA5, 0x2D8D, 0x2F60, 0x3113, 0x329E, 0x33F6, 0x3512,\n    0x35E9, 0x3671, 0x36A0, 0x328D, 0x319F, 0x2F77, 0x2D04, 0x2B38,\n    0x2AD8, 0x2B12, 0x2A6D, 0x2780, 0x23B4, 0x21D1, 0x2297, 0x2479,\n    0x26D5, 0x2908, 0x2A6D, 0x2B00, 0x2B3B, 0x2B3B, 0x2B1E, 0x2B00,\n    0x2AFF, 0x2B38, 0x2BA1, 0x2C1C, 0x2CA6, 0x2D3B, 0x2DD8, 0x2E7B,\n    0x2F20, 0x2FC5, 0x3065, 0x30FE, 0x318C, 0x320D, 0x327E, 0x32DB,\n    0x3322, 0x334E, 0x335E, 0x37D9, 0x34C0, 0x2D8D, 0x2564, 0x1F67,\n    0x1D66, 0x1D67, 0x1CDD, 0x1A37, 0x1706, 0x157A, 0x161C, 0x17AE,\n    0x19AB, 0x1B91, 0x1CDD, 0x1D81, 0x1DD9, 0x1E06, 0x1E24, 0x1E55,\n    0x1EB6, 0x1F67, 0x2060, 0x2180, 0x22C0, 0x241A, 0x2585, 0x26FC,\n    0x2877, 0x29EF, 0x2B5E, 0x2CBB, 0x2E01, 0x2F27, 0x3028, 0x30FC,\n    0x319C, 0x3201, 0x3225, 0x35CF, 0x33F3, 0x2FA0, 0x2ABA, 0x2725,\n    0x2605, 0x261F, 0x25C1, 0x23CC, 0x2161, 0x2032, 0x20AE, 0x21E0,\n    0x2361, 0x24CE, 0x25C1, 0x2642, 0x269F, 0x26DE, 0x2706, 0x271B,\n    0x2723, 0x2725, 0x2725, 0x2725, 0x2725, 0x2725, 0x2725, 0x2725,\n    0x2725, 0x2725, 0x2725, 0x2725, 0x2725, 0x2725, 0x2725, 0x2725,\n    0x2725, 0x2725, 0x2725, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,\n    0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,\n    0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,\n    0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,\n    0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,\n    0xFFFC, 0xFFFC, 0xFFFC, 0x32ED, 0x32F4, 0x3304, 0x331B, 0x3335,\n    0x334C, 0x335C, 0x3363, 0x3367, 0x3374, 0x3386, 0x339B, 0x33B1,\n    0x33C7, 0x33D9, 0x33E6, 0x33EB, 0x33E6, 0x33D5, 0x33B6, 0x3386,\n    0x3344, 0x32ED, 0x3278, 0x31E0, 0x312C, 0x3060, 0x2F81, 0x2E96,\n    0x2DA3, 0x2CAE, 0x2BBC, 0x2AD2, 0x29F6, 0x292D, 0x287D, 0x27EB,\n    0x277C, 0x2735, 0x271C, 0x8001, 0x8001, 0xA37C, 0xA1E4, 0x9E2D,\n    0x99F6, 0x96DB, 0x95E9, 0x95FA, 0x955F, 0x92BE, 0x8F6F, 0x8DCF,\n    0x8E2E, 0x8F3A, 0x90D8, 0x92ED, 0x955F, 0x99E4, 0x9F9C, 0xA28B,\n    0xA0BA, 0x9C83, 0x9864, 0x96DB, 0x979D, 0x98B1, 0x9A08, 0x9B99,\n    0x9D56, 0x9F33, 0xA126, 0xA322, 0xA51B, 0xA705, 0xA8D4, 0xAA7D,\n    0xABF3, 0xAD2B, 0xAE18, 0xAEAF, 0xAEE4, 0x8001, 0x8001, 0xA37C,\n    0xA37C, 0xA37C, 0xA37C, 0xA37C, 0xA3C2, 0xA407, 0xA37C, 0xA10A,\n    0x9DC8, 0x9C27, 0x9C9C, 0x9DD1, 0x9F87, 0xA180, 0xA37C, 0xA664,\n    0xA9C9, 0xAB6B, 0xAA3F, 0xA7A4, 0xA4F0, 0xA37C, 0xA326, 0xA2E5,\n    0xA2B7, 0xA29A, 0xA28B, 0xA289, 0xA292, 0xA2A3, 0xA2BB, 0xA2D8,\n    0xA2F7, 0xA318, 0xA336, 0xA352, 0xA368, 0xA377, 0xA37C, 0x8001,\n    0x8001, 0xAA69, 0xAAFB, 0xAC4E, 0xADCD, 0xAEE4, 0xAF83, 0xAFBF,\n    0xAF41, 0xAD35, 0xAA6D, 0xA908, 0xA967, 0xAA65, 0xABD4, 0xAD82,\n    0xAF41, 0xB1FA, 0xB53A, 0xB6C6, 0xB589, 0xB2DE, 0xB02F, 0xAEE4,\n    0xAED6, 0xAEE7, 0xAF14, 0xAF59, 0xAFB1, 0xB019, 0xB08C, 0xB108,\n    0xB187, 0xB207, 0xB282, 0xB2F5, 0xB35C, 0xB3B3, 0xB3F6, 0xB421,\n    0xB430, 0x8001, 0x8001, 0xA37C, 0xA209, 0x9EAC, 0x9ADD, 0x9814,\n    0x973C, 0x9758, 0x96FF, 0x9530, 0x92ED, 0x91D0, 0x9208, 0x92AF,\n    0x93BE, 0x952F, 0x96FF, 0x9A9F, 0x9F4E, 0xA1B6, 0xA04B, 0x9CF9,\n    0x999C, 0x9814, 0x9814, 0x9814, 0x9814, 0x9814, 0x9814, 0x9814,\n    0x9814, 0x9814, 0x9814, 0x9814, 0x9814, 0x9814, 0x9814, 0x9814,\n    0x9814, 0x9814, 0x9814, 0x7FFB, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE,\n    0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE,\n    0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE,\n    0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x8002, 0x8002, 0x8002,\n    0x8002, 0x8002, 0x8002, 0x8002, 0x8002, 0x8002, 0x8002, 0x8002,\n    0x8002, 0x8002, 0x8002, 0x8002, 0x42D9, 0x42DE, 0x42EB, 0x42FC,\n    0x430F, 0x4321, 0x432D, 0x4332, 0x4336, 0x433F, 0x434D, 0x435D,\n    0x436E, 0x437E, 0x438C, 0x4396, 0x4399, 0x4396, 0x4389, 0x4371,\n    0x434D, 0x431B, 0x42D9, 0x4280, 0x420D, 0x4184, 0x40EA, 0x4041,\n    0x3F8E, 0x3ED6, 0x3E1C, 0x3D64, 0x3CB3, 0x3C0C, 0x3B74, 0x3AEE,\n    0x3A7F, 0x3A2B, 0x39F5, 0x39E2, 0x81DC, 0x830A, 0x85C8, 0x88E4,\n    0x8B2A, 0x8C1F, 0x8C4E, 0x8C17, 0x8B44, 0x8A0A, 0x8968, 0x89AA,\n    0x8A48, 0x8B0A, 0x8BB8, 0x8C17, 0x8C2C, 0x8C23, 0x8C03, 0x8BD3,\n    0x8B9B, 0x8B60, 0x8B2A, 0x8AF5, 0x8ABA, 0x8A78, 0x8A33, 0x89EB,\n    0x89A1, 0x8957, 0x890E, 0x88C7, 0x8884, 0x8845, 0x880D, 0x87DC,\n    0x87B3, 0x8795, 0x8781, 0x877B, 0x70FD, 0x7195, 0x72F6, 0x7487,\n    0x75AC, 0x7633, 0x7658, 0x7626, 0x7555, 0x742E, 0x7398, 0x73D5,\n    0x7469, 0x7520, 0x75C6, 0x7626, 0x7645, 0x764A, 0x763C, 0x7620,\n    0x75FB, 0x75D3, 0x75AC, 0x7585, 0x7558, 0x7526, 0x74F1, 0x74B8,\n    0x747F, 0x7444, 0x740A, 0x73D2, 0x739D, 0x736B, 0x733E, 0x7316,\n    0x72F6, 0x72DE, 0x72CE, 0x72C9, 0xF753, 0xFB07, 0x03A0, 0x0D60,\n    0x1484, 0x1792, 0x1837, 0x176F, 0x145C, 0x0FDE, 0x0D90, 0x0E7F,\n    0x10C3, 0x138B, 0x160A, 0x176F, 0x17C8, 0x17B7, 0x1756, 0x16BC,\n    0x1601, 0x153B, 0x1484, 0x13CF, 0x1301, 0x1220, 0x112F, 0x1034,\n    0x0F33, 0x0E31, 0x0D32, 0x0C3A, 0x0B4E, 0x0A74, 0x09AE, 0x0902,\n    0x0874, 0x080A, 0x07C6, 0x07AF, 0x808D, 0x80BC, 0x812B, 0x81A8,\n    0x8203, 0x8228, 0x822D, 0x8227, 0x8212, 0x81F2, 0x81E1, 0x81E8,\n    0x81F8, 0x820C, 0x821E, 0x8227, 0x8228, 0x8225, 0x821F, 0x8217,\n    0x820F, 0x8208, 0x8203, 0x81FF, 0x81FB, 0x81F6, 0x81F1, 0x81ED,\n    0x81E8, 0x81E3, 0x81DF, 0x81DB, 0x81D7, 0x81D3, 0x81D0, 0x81CD,\n    0x81CB, 0x81C9, 0x81C8, 0x81C7, 0x7D56, 0x7D71, 0x7DB0, 0x7DF7,\n    0x7E2B, 0x7E41, 0x7E46, 0x7E40, 0x7E29, 0x7E08, 0x7DF7, 0x7DFE,\n    0x7E0F, 0x7E23, 0x7E36, 0x7E40, 0x7E43, 0x7E42, 0x7E3F, 0x7E3A,\n    0x7E34, 0x7E2F, 0x7E2B, 0x7E28, 0x7E24, 0x7E20, 0x7E1B, 0x7E17,\n    0x7E12, 0x7E0E, 0x7E09, 0x7E05, 0x7E01, 0x7DFD, 0x7DFA, 0x7DF7,\n    0x7DF5, 0x7DF3, 0x7DF2, 0x7DF1, 0xEA78, 0xEDBA, 0xF54D, 0xFDE2,\n    0x0428, 0x06B8, 0x0726, 0x06A6, 0x04E2, 0x0231, 0x00CC, 0x015D,\n    0x02B9, 0x0463, 0x05DD, 0x06A6, 0x06C1, 0x0691, 0x062B, 0x05A5,\n    0x0514, 0x048E, 0x0428, 0x03D6, 0x037E, 0x0321, 0x02C1, 0x025F,\n    0x01FD, 0x019C, 0x013D, 0x00E3, 0x008D, 0x003F, 0xFFF9, 0xFFBC,\n    0xFF8B, 0xFF65, 0xFF4E, 0xFF46, 0x80DB, 0x8096, 0x7FF4, 0x7F40,\n    0x7EBD, 0x7E88, 0x7E81, 0x7E8A, 0x7EA8, 0x7ED7, 0x7EF0, 0x7EE6,\n    0x7ECE, 0x7EB1, 0x7E98, 0x7E8A, 0x7E8A, 0x7E90, 0x7E9B, 0x7EA6,\n    0x7EB2, 0x7EBA, 0x7EBD, 0x7EBB, 0x7EB9, 0x7EB6, 0x7EB2, 0x7EAD,\n    0x7EA8, 0x7EA2, 0x7E9C, 0x7E97, 0x7E91, 0x7E8C, 0x7E87, 0x7E82,\n    0x7E7F, 0x7E7C, 0x7E7A, 0x7E79, 0x8377, 0x8372, 0x8369, 0x835E,\n    0x8356, 0x8352, 0x8351, 0x8354, 0x835F, 0x836F, 0x8377, 0x8374,\n    0x836C, 0x8362, 0x8359, 0x8354, 0x8352, 0x8352, 0x8353, 0x8354,\n    0x8356, 0x8357, 0x8356, 0x8355, 0x8353, 0x8352, 0x8350, 0x834E,\n    0x834B, 0x8349, 0x8347, 0x8345, 0x8342, 0x8340, 0x833F, 0x833D,\n    0x833C, 0x833B, 0x833A, 0x833A, 0xE520, 0xE83D, 0xEF7A, 0xF7AB,\n    0xFDA8, 0x000A, 0x0061, 0xFFF1, 0xFE87, 0xFC56, 0xFB32, 0xFBA8,\n    0xFCC4, 0xFE1F, 0xFF51, 0xFFF1, 0xFFF6, 0xFFAE, 0xFF37, 0xFEAB,\n    0xFE27, 0xFDC7, 0xFDA8, 0xFDBA, 0xFDD9, 0xFE03, 0xFE36, 0xFE71,\n    0xFEB2, 0xFEF7, 0xFF3D, 0xFF84, 0xFFCA, 0x000B, 0x0048, 0x007E,\n    0x00AC, 0x00CE, 0x00E4, 0x00EC, 0x7DC7, 0x7D42, 0x7C0C, 0x7AAC,\n    0x79AB, 0x7942, 0x792F, 0x7942, 0x7985, 0x79ED, 0x7A23, 0x7A0D,\n    0x79D8, 0x7998, 0x795F, 0x7942, 0x793D, 0x7942, 0x794F, 0x7962,\n    0x7979, 0x7992, 0x79AB, 0x79C6, 0x79E4, 0x7A05, 0x7A29, 0x7A4E,\n    0x7A74, 0x7A9A, 0x7AC0, 0x7AE4, 0x7B07, 0x7B28, 0x7B45, 0x7B5E,\n    0x7B73, 0x7B83, 0x7B8D, 0x7B91, 0x88D1, 0x8887, 0x87DC, 0x871A,\n    0x868B, 0x864E, 0x8640, 0x8650, 0x8691, 0x86F0, 0x8721, 0x870D,\n    0x86DD, 0x86A2, 0x866E, 0x8650, 0x8648, 0x8648, 0x864E, 0x865A,\n    0x8669, 0x867A, 0x868B, 0x869E, 0x86B4, 0x86CC, 0x86E6, 0x8702,\n    0x871E, 0x873A, 0x8756, 0x8771, 0x878B, 0x87A4, 0x87B9, 0x87CD,\n    0x87DC, 0x87E8, 0x87F0, 0x87F2, 0xF69C, 0xF954, 0xFFA6, 0x06CF,\n    0x0C0F, 0x0E3C, 0x0EA5, 0x0E38, 0x0C99, 0x0A26, 0x08E1, 0x0965,\n    0x0AA2, 0x0C26, 0x0D7E, 0x0E38, 0x0E5C, 0x0E47, 0x0E05, 0x0DA1,\n    0x0D24, 0x0C9B, 0x0C0F, 0x0B7B, 0x0AD2, 0x0A18, 0x0951, 0x0880,\n    0x07AB, 0x06D4, 0x05FF, 0x0530, 0x046C, 0x03B5, 0x0310, 0x0280,\n    0x0209, 0x01B0, 0x0177, 0x0164, 0x8001, 0x8001, 0x8152, 0x8152,\n    0xF9B2, 0xF81F, 0xF476, 0xF051, 0xED49, 0xEC1E, 0xEBFC, 0xEC1C,\n    0xEC20, 0xEC2B, 0xEC3B, 0xEC51, 0xEC6A, 0xEC86, 0xECA4, 0xECC2,\n    0xECDF, 0xECFB, 0xED14, 0xED2A, 0xED3A, 0xED45, 0xED49, 0xED49,\n    0xED49, 0xED49, 0xED49, 0xED49, 0xED49, 0xED49, 0xED49, 0xED49,\n    0xED49, 0xED49, 0xED49, 0xED49, 0xED49, 0xED49, 0xED49, 0xED49,\n    0x2304, 0x2294, 0x218F, 0x2068, 0x1F91, 0x1F3D, 0x1F34, 0x1F3D,\n    0x1F3E, 0x1F41, 0x1F46, 0x1F4C, 0x1F53, 0x1F5A, 0x1F63, 0x1F6B,\n    0x1F73, 0x1F7B, 0x1F82, 0x1F88, 0x1F8C, 0x1F8F, 0x1F91, 0x1F91,\n    0x1F91, 0x1F91, 0x1F91, 0x1F91, 0x1F91, 0x1F91, 0x1F91, 0x1F91,\n    0x1F91, 0x1F91, 0x1F91, 0x1F91, 0x1F91, 0x1F91, 0x1F91, 0x1F91,\n    0xF1F7, 0xF01A, 0xEBC4, 0xE6DC, 0xE345, 0xE1E3, 0xE1BA, 0xE1E1,\n    0xE1E5, 0xE1F2, 0xE206, 0xE21F, 0xE23D, 0xE25E, 0xE281, 0xE2A4,\n    0xE2C7, 0xE2E8, 0xE306, 0xE320, 0xE334, 0xE340, 0xE345, 0xE345,\n    0xE345, 0xE345, 0xE345, 0xE345, 0xE345, 0xE345, 0xE345, 0xE345,\n    0xE345, 0xE345, 0xE345, 0xE345, 0xE345, 0xE345, 0xE345, 0xE345,\n    0x8152, 0x0347, 0x0360, 0x03A2, 0x03FB, 0x045D, 0x04B6, 0x04F8,\n    0x0511, 0x0523, 0x0553, 0x0599, 0x05EC, 0x0643, 0x0696, 0x06DD,\n    0x070E, 0x0722, 0x070F, 0x06CD, 0x0654, 0x059B, 0x049A, 0x0347,\n    0x017F, 0xFF33, 0xFC74, 0xF95A, 0xF5F8, 0xF264, 0xEEB3, 0xEAF9,\n    0xE74B, 0xE3BD, 0xE066, 0xDD59, 0xDAAB, 0xD871, 0xD6C1, 0xD5AE,\n    0xD54E, 0xB298, 0xB292, 0xB285, 0xB273, 0xB25E, 0xB24C, 0xB23E,\n    0xB239, 0xB236, 0xB22C, 0xB21D, 0xB20C, 0xB1FA, 0xB1E9, 0xB1DA,\n    0xB1D0, 0xB1CC, 0xB1D0, 0xB1DE, 0xB1F7, 0xB21D, 0xB252, 0xB298,\n    0xB2F6, 0xB36F, 0xB400, 0xB4A4, 0xB556, 0xB613, 0xB6D6, 0xB79B,\n    0xB85D, 0xB918, 0xB9C9, 0xBA6A, 0xBAF7, 0xBB6C, 0xBBC5, 0xBBFE,\n    0xBC12, 0xE257, 0xE240, 0xE206, 0xE1B6, 0xE15F, 0xE110, 0xE0D5,\n    0xE0BF, 0xE0AF, 0xE084, 0xE046, 0xDFFC, 0xDFAE, 0xDF64, 0xDF26,\n    0xDEFA, 0xDEE8, 0xDEF9, 0xDF33, 0xDF9F, 0xE044, 0xE129, 0xE257,\n    0xE3ED, 0xE5FA, 0xE86B, 0xEB2F, 0xEE31, 0xF161, 0xF4AB, 0xF7FD,\n    0xFB44, 0xFE6E, 0x0166, 0x041E, 0x0681, 0x087C, 0x09FD, 0x0AF2,\n    0x0B48, 0x8152, 0x1DB5, 0x2129, 0x28EB, 0x3114, 0x35BF, 0x343B,\n    0x2ECF, 0x2909, 0x2349, 0x1CBF, 0x172E, 0x1456, 0x1519, 0x1832,\n    0x1C2E, 0x1F97, 0x20F8, 0x1F99, 0x1C74, 0x189B, 0x1523, 0x131D,\n    0x130A, 0x1432, 0x15D5, 0x1737, 0x1799, 0x1696, 0x14AD, 0x1275,\n    0x1084, 0x0F73, 0x0F38, 0x0F56, 0x0FB5, 0x103B, 0x10CF, 0x1159,\n    0x11BD, 0x11E4, 0x2E09, 0x2CE6, 0x2978, 0x23BE, 0x1BB4, 0x0CAD,\n    0xF98D, 0xEDAB, 0xED6E, 0xF2BD, 0xF92D, 0xFC56, 0xFB05, 0xF7C2,\n    0xF3BC, 0xF01D, 0xEE13, 0xEE22, 0xEF82, 0xF16B, 0xF31A, 0xF3C7,\n    0xF31D, 0xF19F, 0xEFCF, 0xEE30, 0xED43, 0xED40, 0xEDD0, 0xEEA0,\n    0xEF5E, 0xEFB4, 0xEFA4, 0xEF6C, 0xEF19, 0xEEB8, 0xEE56, 0xEDFF,\n    0xEDC2, 0xEDAB,\n};\n\n// 0x0500DD4C\nstatic const u16 eyerok_seg5_animindex_0500DD4C[] = {\n    0x0001, 0x0001, 0x0028, 0x0002, 0x0028, 0x002A, 0x0001, 0x0000, 0x0001, 0x0052, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x053A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x0512,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0511,\n    0x0028, 0x023C, 0x0028, 0x0264, 0x0028, 0x028C,\n    0x0001, 0x0143, 0x0001, 0x0144, 0x0028, 0x0145,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x0053,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0498,\n    0x0028, 0x02B4, 0x0028, 0x02DC, 0x0028, 0x0304,\n    0x0001, 0x016D, 0x0001, 0x016E, 0x0028, 0x016F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x007B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x041F,\n    0x0028, 0x032C, 0x0028, 0x0354, 0x0028, 0x037C,\n    0x0001, 0x0197, 0x0001, 0x0198, 0x0028, 0x0199,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x00A3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x041E,\n    0x0028, 0x03A4, 0x0028, 0x03CC, 0x0028, 0x03F4,\n    0x0001, 0x01C1, 0x0001, 0x01C2, 0x0028, 0x01C3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x00CB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0028, 0x0499, 0x0028, 0x04C1, 0x0028, 0x04E9,\n    0x0028, 0x0420, 0x0028, 0x0448, 0x0028, 0x0470,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x041C, 0x0001, 0x041D, 0x0001, 0x0000,\n    0x0001, 0x01EB, 0x0028, 0x01EC, 0x0028, 0x0214,\n    0x0001, 0x0000, 0x0028, 0x00F3, 0x0028, 0x011B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x0500DF50\nstatic const struct Animation eyerok_seg5_anim_0500DF50 = {\n    32,\n    0,\n    0,\n    0,\n    0x28,\n    ANIMINDEX_NUMPARTS(eyerok_seg5_animindex_0500DD4C),\n    eyerok_seg5_animvalue_0500D288,\n    eyerok_seg5_animindex_0500DD4C,\n    0,\n};\n"
  },
  {
    "path": "actors/eyerok/anims/anim_0500E1D8.inc.c",
    "content": "// 0x0500DF68\nstatic const s16 eyerok_seg5_animvalue_0500DF68[] = {\n    0x0000, 0x00A7, 0x0206, 0xFE7C, 0x3FFF, 0x34FF, 0x34FF, 0x34FF,\n    0x34FF, 0xFFFC, 0x3B7B, 0x8001, 0x8001, 0xB914, 0x8001, 0x8001,\n    0xB914, 0x8001, 0x8001, 0xB914, 0x8001, 0x8001, 0xB914, 0x7FFB,\n    0x7FFE, 0x495E, 0x820B, 0x7DE6, 0xFEE2, 0x806A, 0x806A, 0xFC5B,\n    0x7EC5, 0x8359, 0xFD40, 0x7DF2, 0x83AB, 0x0039, 0x8001, 0x8001,\n    0x8152, 0x8152, 0x0A4F, 0x26EE, 0xFEBC, 0x8152, 0x0347, 0xB298,\n    0xE257, 0x8152, 0x291E, 0x3FFF, 0x2FA4, 0x8001,\n};\n\n// 0x0500DFD4\nstatic const u16 eyerok_seg5_animindex_0500DFD4[] = {\n    0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0003, 0x0001, 0x0000, 0x0001, 0x0004, 0x0001, 0x0000,\n    0x0001, 0x0033, 0x0001, 0x0034, 0x0001, 0x0035,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0032,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0031,\n    0x0001, 0x001A, 0x0001, 0x001B, 0x0001, 0x001C,\n    0x0001, 0x000B, 0x0001, 0x000C, 0x0001, 0x000D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0005,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x002D,\n    0x0001, 0x001D, 0x0001, 0x001E, 0x0001, 0x001F,\n    0x0001, 0x000E, 0x0001, 0x000F, 0x0001, 0x0010,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0006,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0029,\n    0x0001, 0x0020, 0x0001, 0x0021, 0x0001, 0x0022,\n    0x0001, 0x0011, 0x0001, 0x0012, 0x0001, 0x0013,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0007,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0028,\n    0x0001, 0x0023, 0x0001, 0x0024, 0x0001, 0x0025,\n    0x0001, 0x0014, 0x0001, 0x0015, 0x0001, 0x0016,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0008,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x002E, 0x0001, 0x002F, 0x0001, 0x0030,\n    0x0001, 0x002A, 0x0001, 0x002B, 0x0001, 0x002C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0026, 0x0001, 0x0027, 0x0001, 0x0000,\n    0x0001, 0x0017, 0x0001, 0x0018, 0x0001, 0x0019,\n    0x0001, 0x0000, 0x0001, 0x0009, 0x0001, 0x000A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x0500E1D8\nstatic const struct Animation eyerok_seg5_anim_0500E1D8 = {\n    32,\n    0,\n    0,\n    0,\n    0x02,\n    ANIMINDEX_NUMPARTS(eyerok_seg5_animindex_0500DFD4),\n    eyerok_seg5_animvalue_0500DF68,\n    eyerok_seg5_animindex_0500DFD4,\n    0,\n};\n"
  },
  {
    "path": "actors/eyerok/anims/anim_0500E99C.inc.c",
    "content": "// 0x0500E1F0\nstatic const s16 eyerok_seg5_animvalue_0500E1F0[] = {\n    0x0000, 0x0078, 0x0000, 0x002C, 0x005C, 0x0062, 0x0066, 0x006A,\n    0x006C, 0x006D, 0x006D, 0x006C, 0x006B, 0x0068, 0x0065, 0x0060,\n    0x005C, 0x0051, 0x003E, 0x0028, 0x0013, 0x0005, 0xFFFF, 0xFFFD,\n    0xFFFD, 0xFFFF, 0x0000, 0xFFFD, 0xFFE9, 0xFFD3, 0xFFD1, 0xFFD0,\n    0xFFD0, 0xFFD0, 0xFFD0, 0xFFD1, 0xFFD2, 0xFFD4, 0xFFD6, 0xFFD8,\n    0xFFDA, 0xFFDC, 0xFFE0, 0xFFE5, 0xFFEC, 0xFFF2, 0xFFF7, 0xFFF9,\n    0xFFFB, 0xFFFC, 0xFFFD, 0xFFFD, 0x3FFF, 0x335E, 0x3092, 0x2E79,\n    0x30B3, 0x340E, 0x37C5, 0x3B0F, 0x3D25, 0x3E17, 0x3E8C, 0x3E9F,\n    0x3E6A, 0x3E07, 0x3D92, 0x3D25, 0x3C93, 0x3BB5, 0x3AB0, 0x39A8,\n    0x38BE, 0x3818, 0x37D9, 0x3939, 0x3BC5, 0x3D25, 0x328D, 0x2EA3,\n    0x2B74, 0x2DF3, 0x31E4, 0x3650, 0x3A40, 0x3CBD, 0x3DD3, 0x3E4F,\n    0x3E55, 0x3E0A, 0x3D95, 0x3D19, 0x3CBD, 0x3C52, 0x3BAB, 0x3AEB,\n    0x3A36, 0x39AF, 0x397A, 0x39FD, 0x3B1B, 0x3C3A, 0x3CBD, 0x37D9,\n    0x30F1, 0x2A44, 0x2C17, 0x2FDB, 0x3464, 0x3888, 0x3B1B, 0x3C32,\n    0x3CBB, 0x3CD4, 0x3C99, 0x3C29, 0x3BA0, 0x3B1B, 0x3A54, 0x391B,\n    0x37B3, 0x365F, 0x3562, 0x34FF, 0x35F3, 0x380D, 0x3A27, 0x3B1B,\n    0x35CF, 0x2C75, 0x2357, 0x259C, 0x2A74, 0x3057, 0x35BA, 0x3912,\n    0x3A74, 0x3B19, 0x3B2B, 0x3AD5, 0x3A42, 0x399D, 0x3912, 0x3858,\n    0x3733, 0x35E4, 0x34A6, 0x33BA, 0x335E, 0x3442, 0x3638, 0x382E,\n    0x3912, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,\n    0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,\n    0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,\n    0xFFFC, 0xFFFC, 0x32ED, 0x2CDF, 0x2785, 0x2A41, 0x2EE5, 0x344A,\n    0x3947, 0x3CB4, 0x3DE8, 0x3D93, 0x3C9B, 0x3BE4, 0x3B71, 0x3AEB,\n    0x3AAB, 0x3AAB, 0x3AAB, 0x3AAB, 0x3AAB, 0x3AAB, 0x3AAB, 0x3AAB,\n    0x3AAB, 0x3AAB, 0x3AAB, 0x8001, 0x8001, 0xA37C, 0x9936, 0x90BE,\n    0x970B, 0xA112, 0xAC59, 0xB666, 0xBCBF, 0xBF70, 0xC07C, 0xC056,\n    0xBF70, 0xBE3E, 0xBD32, 0xBCBF, 0xBCBF, 0xBCBF, 0xBCBF, 0xBCBF,\n    0xBCBF, 0xBCBF, 0xBCBF, 0xBCBF, 0xBCBF, 0xBCBF, 0x8001, 0x8001,\n    0xA37C, 0x9FE8, 0x9DC8, 0xA202, 0xA803, 0xAE82, 0xB438, 0xB7DB,\n    0xB974, 0xBA13, 0xB9FC, 0xB974, 0xB8BE, 0xB81F, 0xB7DB, 0xB7DB,\n    0xB7DB, 0xB7DB, 0xB7DB, 0xB7DB, 0xB7DB, 0xB7DB, 0xB7DB, 0xB7DB,\n    0xB7DB, 0x8001, 0x8001, 0xAA69, 0x9FD5, 0x9672, 0x9B4C, 0xA39B,\n    0xAD27, 0xB5BA, 0xBB1D, 0xBD5C, 0xBE3C, 0xBE1C, 0xBD5C, 0xBC5D,\n    0xBB7D, 0xBB1D, 0xBB1D, 0xBB1D, 0xBB1D, 0xBB1D, 0xBB1D, 0xBB1D,\n    0xBB1D, 0xBB1D, 0xBB1D, 0xBB1D, 0x8001, 0x8001, 0xA37C, 0x98D5,\n    0x8FEE, 0x9627, 0xA02C, 0xAB7A, 0xB591, 0xBBEE, 0xBEA0, 0xBFAC,\n    0xBF86, 0xBEA0, 0xBD6D, 0xBC61, 0xBBEE, 0xBBEE, 0xBBEE, 0xBBEE,\n    0xBBEE, 0xBBEE, 0xBBEE, 0xBBEE, 0xBBEE, 0xBBEE, 0xBBEE, 0x7FFB,\n    0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE,\n    0x8002, 0x8002, 0x8002, 0x8002, 0x8002, 0x7FFE, 0x7FFE, 0x7FFE,\n    0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE,\n    0x7FFE, 0x42D9, 0x41FA, 0x4138, 0x41C0, 0x42A9, 0x43A2, 0x4458,\n    0x447A, 0x4357, 0x413D, 0x3F58, 0x3ED7, 0x419E, 0x462A, 0x488D,\n    0x488D, 0x488D, 0x488D, 0x488D, 0x488D, 0x488D, 0x488D, 0x488D,\n    0x488D, 0x488D, 0x81DC, 0x81DC, 0x81DC, 0x81E4, 0x81F6, 0x8203,\n    0x81FE, 0x81DC, 0x8171, 0x80CB, 0x8035, 0x7FF4, 0x807A, 0x816D,\n    0x8204, 0x820E, 0x81EF, 0x81BA, 0x817E, 0x814D, 0x8139, 0x8159,\n    0x819F, 0x81E4, 0x8204, 0x70FD, 0x70FD, 0x70FD, 0x70FE, 0x70FF,\n    0x7100, 0x70FF, 0x70FD, 0x70F7, 0x70EE, 0x70E5, 0x70E2, 0x70EA,\n    0x70FA, 0x7102, 0x7101, 0x70FD, 0x70F7, 0x70F2, 0x70ED, 0x70EB,\n    0x70EF, 0x70F7, 0x70FF, 0x7102, 0xF753, 0xF576, 0xF4E1, 0xF85E,\n    0xFD16, 0x0218, 0x0676, 0x093F, 0x095D, 0x076F, 0x051B, 0x0401,\n    0x056B, 0x080E, 0x09AF, 0x09CA, 0x0975, 0x08E0, 0x083A, 0x07B3,\n    0x077C, 0x07D4, 0x0895, 0x0957, 0x09AF, 0x808D, 0x808D, 0x808D,\n    0x8090, 0x8095, 0x8099, 0x8097, 0x808D, 0x806E, 0x803E, 0x8012,\n    0x7FF8, 0x8014, 0x8049, 0x806A, 0x806D, 0x8069, 0x8060, 0x8055,\n    0x804B, 0x8043, 0x8040, 0x804B, 0x805F, 0x806A, 0x7D56, 0x7D56,\n    0x7D56, 0x7D57, 0x7D57, 0x7D58, 0x7D57, 0x7D56, 0x7D54, 0x7D4F,\n    0x7D4B, 0x7D48, 0x7D4A, 0x7D4E, 0x7D50, 0x7D50, 0x7D4F, 0x7D4E,\n    0x7D4D, 0x7D4C, 0x7D4B, 0x7D4B, 0x7D4C, 0x7D4F, 0x7D50, 0xEA78,\n    0xE530, 0xE1E9, 0xE7CC, 0xF036, 0xF95A, 0x0168, 0x0693, 0x070C,\n    0x03FF, 0x0017, 0xFE01, 0xFF7B, 0x0299, 0x0488, 0x04AF, 0x046F,\n    0x03EC, 0x0349, 0x02A8, 0x022E, 0x01FD, 0x02A6, 0x03DF, 0x0488,\n    0x80DB, 0x80DB, 0x80DB, 0x80D8, 0x80D2, 0x80CE, 0x80CF, 0x80DB,\n    0x80FF, 0x8137, 0x816A, 0x817E, 0x8151, 0x80FE, 0x80C9, 0x80C0,\n    0x80C1, 0x80C9, 0x80D4, 0x80E0, 0x80E9, 0x80ED, 0x80E3, 0x80D2,\n    0x80C9, 0x8377, 0x8377, 0x8377, 0x8378, 0x837A, 0x837B, 0x837B,\n    0x8377, 0x836A, 0x8357, 0x8345, 0x833E, 0x834D, 0x8369, 0x837B,\n    0x837E, 0x837F, 0x837D, 0x837A, 0x8377, 0x8374, 0x8373, 0x8375,\n    0x8379, 0x837B, 0xE520, 0xE25C, 0xE175, 0xE68B, 0xED70, 0xF4C3,\n    0xFB24, 0xFF33, 0xFF57, 0xFC7B, 0xF90B, 0xF770, 0xF98F, 0xFD82,\n    0x0003, 0x006F, 0x0066, 0x000D, 0xFF8A, 0xFEFE, 0xFE90, 0xFE63,\n    0xFECF, 0xFF98, 0x0003, 0x7DC7, 0x7DDE, 0x7DC7, 0x7D4A, 0x7CA1,\n    0x7BF8, 0x7B7B, 0x7B56, 0x7BD5, 0x7CD8, 0x7DE4, 0x7E7C, 0x7E2D,\n    0x7D5A, 0x7CD1, 0x7CBE, 0x7CC4, 0x7CD9, 0x7CF7, 0x7D16, 0x7D2E,\n    0x7D37, 0x7D1D, 0x7CEB, 0x7CD1, 0x88D1, 0x88D1, 0x88D1, 0x88CC,\n    0x88C3, 0x88BB, 0x88BE, 0x88D1, 0x8906, 0x8957, 0x89A7, 0x89D7,\n    0x89C9, 0x8994, 0x8971, 0x896E, 0x8971, 0x8978, 0x8981, 0x8989,\n    0x8990, 0x8993, 0x898A, 0x897A, 0x8971, 0xF69C, 0xF37E, 0xF1B8,\n    0xF5B7, 0xFB70, 0x0186, 0x069D, 0x0958, 0x07FD, 0x037C, 0xFE79,\n    0xFB95, 0xFCE2, 0x0065, 0x02B1, 0x02FD, 0x02E5, 0x0288, 0x0207,\n    0x0183, 0x011C, 0x00F2, 0x0166, 0x023D, 0x02B1, 0x8001, 0x8001,\n    0x8152, 0x8152, 0xF9B2, 0x2304, 0xF1F7, 0x8152, 0x0347, 0xB298,\n    0xE257, 0x8152, 0x1DB5, 0x1B95, 0x1A0A, 0x1BE1, 0x1EA1, 0x21A5,\n    0x2445, 0x25DB, 0x25AF, 0x2433, 0x2280, 0x21B1, 0x22C5, 0x24C7,\n    0x25DB, 0x25DB, 0x25DB, 0x25DB, 0x25DB, 0x25DB, 0x25DB, 0x25DB,\n    0x25DB, 0x25DB, 0x25DB, 0x2E09, 0x2494, 0x19AA, 0x17DE, 0x17C4,\n    0x1890, 0x1976, 0x19AA, 0x18DD, 0x17A1, 0x167F, 0x1600, 0x164B,\n    0x1767, 0x19AA, 0x1D2B, 0x216D, 0x25EE, 0x2A2B, 0x2DA1, 0x2FC4,\n    0x30B0, 0x30E4, 0x2F42, 0x2DA1,\n};\n\n// 0x0500E798\nstatic const u16 eyerok_seg5_animindex_0500E798[] = {\n    0x0001, 0x0001, 0x0019, 0x0002, 0x0019, 0x001B, 0x0001, 0x0000, 0x0001, 0x0034, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0019, 0x02BB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0019, 0x02A2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02A1,\n    0x0019, 0x016A, 0x0019, 0x0183, 0x0019, 0x019C,\n    0x0001, 0x00CB, 0x0001, 0x00CC, 0x0019, 0x00CD,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0019, 0x0035,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x029D,\n    0x0019, 0x01B5, 0x0019, 0x01CE, 0x0019, 0x01E7,\n    0x0001, 0x00E6, 0x0001, 0x00E7, 0x0019, 0x00E8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0019, 0x004E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0299,\n    0x0019, 0x0200, 0x0019, 0x0219, 0x0019, 0x0232,\n    0x0001, 0x0101, 0x0001, 0x0102, 0x0019, 0x0103,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0019, 0x0067,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0298,\n    0x0019, 0x024B, 0x0019, 0x0264, 0x0019, 0x027D,\n    0x0001, 0x011C, 0x0001, 0x011D, 0x0019, 0x011E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0019, 0x0080,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x029E, 0x0001, 0x029F, 0x0001, 0x02A0,\n    0x0001, 0x029A, 0x0001, 0x029B, 0x0001, 0x029C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0296, 0x0001, 0x0297, 0x0001, 0x0000,\n    0x0001, 0x0137, 0x0019, 0x0138, 0x0019, 0x0151,\n    0x0001, 0x0000, 0x0019, 0x0099, 0x0019, 0x00B2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x0500E99C\nstatic const struct Animation eyerok_seg5_anim_0500E99C = {\n    32,\n    0,\n    0,\n    0,\n    0x19,\n    ANIMINDEX_NUMPARTS(eyerok_seg5_animindex_0500E798),\n    eyerok_seg5_animvalue_0500E1F0,\n    eyerok_seg5_animindex_0500E798,\n    0,\n};\n"
  },
  {
    "path": "actors/eyerok/anims/anim_0500F3D8.inc.c",
    "content": "// 0x0500E9B4\nstatic const s16 eyerok_seg5_animvalue_0500E9B4[] = {\n    0x0000, 0x00A7, 0x00A6, 0x00A5, 0x00A2, 0x009F, 0x009B, 0x0097,\n    0x0092, 0x008D, 0x0089, 0x0084, 0x0080, 0x007D, 0x007A, 0x0078,\n    0x0076, 0x0075, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0075,\n    0x0075, 0x0076, 0x0076, 0x0077, 0x0077, 0x0077, 0x0078, 0x0206,\n    0x0206, 0x0206, 0x0206, 0x0206, 0x0206, 0x0204, 0x0202, 0x01FE,\n    0x01F9, 0x01F2, 0x01E9, 0x01DE, 0x01D0, 0x01BF, 0x01AA, 0x018F,\n    0x016E, 0x014A, 0x0123, 0x00FB, 0x00D2, 0x00A9, 0x0083, 0x005F,\n    0x003F, 0x0025, 0x0010, 0x0003, 0x0000, 0xFE7C, 0xFE7A, 0xFE74,\n    0xFE6A, 0xFE5E, 0xFE51, 0xFE43, 0xFE35, 0xFE28, 0xFE1C, 0xFE14,\n    0xFE0F, 0xFE0E, 0xFE12, 0xFE1C, 0xFE2D, 0xFE47, 0xFE67, 0xFE8D,\n    0xFEB6, 0xFEE2, 0xFF0F, 0xFF3B, 0xFF67, 0xFF8F, 0xFFB3, 0xFFD1,\n    0xFFE8, 0xFFF7, 0xFFFD, 0x3FFF, 0x34FF, 0x34D9, 0x346E, 0x33C6,\n    0x32EA, 0x31E2, 0x30B7, 0x2F72, 0x2E1A, 0x2CB9, 0x2B58, 0x29FE,\n    0x28B4, 0x2784, 0x2675, 0x2590, 0x24DD, 0x2466, 0x2433, 0x2482,\n    0x2572, 0x26E1, 0x28AB, 0x2AAB, 0x2CBF, 0x2EC2, 0x3090, 0x3207,\n    0x3302, 0x335E, 0x34FF, 0x34E0, 0x3489, 0x3404, 0x3359, 0x3291,\n    0x31B6, 0x30D0, 0x2FE9, 0x2F09, 0x2E39, 0x2D83, 0x2CF0, 0x2C89,\n    0x2C56, 0x2C57, 0x2C83, 0x2CD2, 0x2D3E, 0x2DC2, 0x2E57, 0x2EF7,\n    0x2F9B, 0x303E, 0x30D8, 0x3165, 0x31DD, 0x323B, 0x3277, 0x328D,\n    0x34FF, 0x34CA, 0x3436, 0x3353, 0x3232, 0x30E2, 0x2F73, 0x2DF6,\n    0x2C7B, 0x2B12, 0x29CB, 0x28B6, 0x27E4, 0x2763, 0x2746, 0x2792,\n    0x283A, 0x2930, 0x2A64, 0x2BCA, 0x2D52, 0x2EEE, 0x308F, 0x3228,\n    0x33A9, 0x3504, 0x362C, 0x3711, 0x37A4, 0x37D9, 0x34FF, 0x34DF,\n    0x3485, 0x33F7, 0x333B, 0x3258, 0x3155, 0x3038, 0x2F08, 0x2DCB,\n    0x2C87, 0x2B44, 0x2A08, 0x28DA, 0x27BF, 0x26BF, 0x25E0, 0x2529,\n    0x24A0, 0x244C, 0x2433, 0x24D4, 0x2675, 0x28CE, 0x2B94, 0x2E7F,\n    0x3144, 0x3399, 0x3536, 0x35CF, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,\n    0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,\n    0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,\n    0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,\n    0xFFFC, 0xFFFC, 0x3B7B, 0x3B74, 0x3B5E, 0x3B3A, 0x3B0A, 0x3ACF,\n    0x3A89, 0x3A3A, 0x39E3, 0x3985, 0x3922, 0x38B9, 0x384D, 0x37DE,\n    0x376D, 0x36FC, 0x368B, 0x361C, 0x35AF, 0x3547, 0x34E3, 0x3485,\n    0x342E, 0x33E0, 0x339A, 0x335F, 0x332F, 0x330B, 0x32F5, 0x32ED,\n    0x8001, 0x8001, 0xB914, 0xB912, 0xB90D, 0xB904, 0xB8F5, 0xB8E0,\n    0xB8C4, 0xB8A0, 0xB874, 0xB83D, 0xB7FC, 0xB7AF, 0xB757, 0xB6F0,\n    0xB67C, 0xB5F9, 0xB566, 0xB4C2, 0xB40D, 0xB30C, 0xB19C, 0xAFD8,\n    0xADDD, 0xABC9, 0xA9B8, 0xA7C6, 0xA611, 0xA4B5, 0xA3CF, 0xA37C,\n    0x8001, 0x8001, 0xB914, 0xB8F8, 0xB8A7, 0xB826, 0xB77A, 0xB6A8,\n    0xB5B6, 0xB4A8, 0xB384, 0xB24D, 0xB10B, 0xAFC0, 0xAE74, 0xAD29,\n    0xABE7, 0xAAB1, 0xA98D, 0xA87F, 0xA78E, 0xA6BD, 0xA60B, 0xA573,\n    0xA4F1, 0xA485, 0xA42E, 0xA3EA, 0xA3B8, 0xA396, 0xA382, 0xA37C,\n    0x8001, 0x8001, 0xB914, 0xB8E6, 0xB865, 0xB799, 0xB68E, 0xB54D,\n    0xB3E1, 0xB254, 0xB0AF, 0xAEFE, 0xAD4B, 0xAB9F, 0xAA05, 0xA887,\n    0xA730, 0xA609, 0xA51D, 0xA475, 0xA427, 0xA432, 0xA489, 0xA51A,\n    0xA5D6, 0xA6AD, 0xA78F, 0xA86B, 0xA932, 0xA9D4, 0xAA41, 0xAA69,\n    0x8001, 0x8001, 0xB914, 0xB8EC, 0xB87B, 0xB7C6, 0xB6D6, 0xB5B1,\n    0xB45F, 0xB2E7, 0xB14F, 0xAFA0, 0xADE0, 0xAC16, 0xAA4A, 0xA883,\n    0xA6C8, 0xA520, 0xA392, 0xA226, 0xA0E3, 0x9FCF, 0x9EF3, 0x9E84,\n    0x9E9F, 0x9F22, 0x9FEC, 0xA0DB, 0xA1D0, 0xA2A8, 0xA341, 0xA37C,\n    0x7FFB, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE,\n    0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE,\n    0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE,\n    0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x495E,\n    0x4958, 0x4947, 0x492C, 0x4907, 0x48DA, 0x48A5, 0x4869, 0x4827,\n    0x47DF, 0x4793, 0x4744, 0x46F1, 0x469D, 0x4647, 0x45F0, 0x459A,\n    0x4546, 0x44F3, 0x44A4, 0x4458, 0x4410, 0x43CE, 0x4392, 0x435D,\n    0x4330, 0x430B, 0x42F0, 0x42DF, 0x42D9, 0x820B, 0x820A, 0x8205,\n    0x81FD, 0x81F3, 0x81E7, 0x81D9, 0x81CB, 0x81BB, 0x81AC, 0x819C,\n    0x818D, 0x817F, 0x8172, 0x8167, 0x815E, 0x8158, 0x8155, 0x8156,\n    0x815C, 0x8167, 0x8175, 0x8185, 0x8196, 0x81A7, 0x81B7, 0x81C6,\n    0x81D1, 0x81D9, 0x81DC, 0x7DE6, 0x7DDD, 0x7DC5, 0x7D9D, 0x7D68,\n    0x7D26, 0x7CD9, 0x7C82, 0x7C22, 0x7BBC, 0x7B4F, 0x7ADD, 0x7A68,\n    0x79F0, 0x7978, 0x7900, 0x7889, 0x7815, 0x7792, 0x76F0, 0x7639,\n    0x7574, 0x74A8, 0x73DE, 0x731E, 0x726F, 0x71D9, 0x7164, 0x7119,\n    0x70FD, 0xFEE2, 0xFEC6, 0xFE76, 0xFDF8, 0xFD53, 0xFC8D, 0xFBAD,\n    0xFAB9, 0xF9B8, 0xF8AF, 0xF7A6, 0xF6A2, 0xF5AA, 0xF4C5, 0xF3F9,\n    0xF34C, 0xF2C5, 0xF26A, 0xF24B, 0xF26A, 0xF2BE, 0xF339, 0xF3D1,\n    0xF47A, 0xF529, 0xF5D2, 0xF669, 0xF6E3, 0xF735, 0xF753, 0x806A,\n    0x806A, 0x806B, 0x806B, 0x806C, 0x806D, 0x806E, 0x806F, 0x8071,\n    0x8072, 0x8074, 0x8075, 0x8077, 0x8079, 0x807B, 0x807C, 0x807E,\n    0x8080, 0x8082, 0x8083, 0x8085, 0x8086, 0x8088, 0x8089, 0x808A,\n    0x808B, 0x808C, 0x808C, 0x808D, 0x808D, 0x806A, 0x8067, 0x805F,\n    0x8053, 0x8041, 0x802C, 0x8013, 0x7FF4, 0x7FD5, 0x7FB3, 0x7F8F,\n    0x7F6A, 0x7F43, 0x7F1B, 0x7EF3, 0x7ECA, 0x7EA2, 0x7E7A, 0x7E53,\n    0x7E2E, 0x7E0A, 0x7DE9, 0x7DCA, 0x7DAD, 0x7D94, 0x7D7F, 0x7D6E,\n    0x7D61, 0x7D59, 0x7D56, 0xFC5B, 0xFC4B, 0xFC1D, 0xFBD2, 0xFB6E,\n    0xFAF2, 0xFA60, 0xF9BB, 0xF906, 0xF842, 0xF771, 0xF696, 0xF5B4,\n    0xF4CB, 0xF3E0, 0xF2F3, 0xF207, 0xF11F, 0xF03C, 0xEF62, 0xEE91,\n    0xEDCD, 0xED17, 0xEC73, 0xEBE1, 0xEB65, 0xEB01, 0xEAB6, 0xEA88,\n    0xEA78, 0x7EC5, 0x7EC7, 0x7ECC, 0x7ED5, 0x7EE1, 0x7EEF, 0x7F00,\n    0x7F13, 0x7F28, 0x7F3F, 0x7F57, 0x7F70, 0x7F8B, 0x7FA5, 0x7FC1,\n    0x7FDC, 0x7FF8, 0x8015, 0x8030, 0x8049, 0x8061, 0x8078, 0x808D,\n    0x80A0, 0x80B1, 0x80BF, 0x80CB, 0x80D3, 0x80D9, 0x80DB, 0x8359,\n    0x835A, 0x835A, 0x835A, 0x835B, 0x835C, 0x835D, 0x835E, 0x835F,\n    0x8360, 0x8361, 0x8363, 0x8364, 0x8366, 0x8367, 0x8369, 0x836A,\n    0x836C, 0x836D, 0x836F, 0x8370, 0x8371, 0x8372, 0x8373, 0x8374,\n    0x8375, 0x8376, 0x8376, 0x8377, 0x8377, 0xFD40, 0xFD2A, 0xFCEC,\n    0xFC87, 0xFC00, 0xFB58, 0xFA94, 0xF9B6, 0xF8C1, 0xF7B8, 0xF69F,\n    0xF578, 0xF446, 0xF30D, 0xF1CF, 0xF090, 0xEF52, 0xEE19, 0xECE7,\n    0xEBC0, 0xEAA7, 0xE99F, 0xE8AA, 0xE7CC, 0xE707, 0xE660, 0xE5D8,\n    0xE574, 0xE535, 0xE520, 0x7DF2, 0x7DF2, 0x7DF2, 0x7DF1, 0x7DF0,\n    0x7DEF, 0x7DEE, 0x7DEC, 0x7DEA, 0x7DE9, 0x7DE7, 0x7DE5, 0x7DE2,\n    0x7DE0, 0x7DDE, 0x7DDC, 0x7DDA, 0x7DD7, 0x7DD5, 0x7DD3, 0x7DD1,\n    0x7DCF, 0x7DCE, 0x7DCC, 0x7DCB, 0x7DCA, 0x7DC9, 0x7DC8, 0x7DC8,\n    0x7DC7, 0x83AB, 0x83AF, 0x83BC, 0x83D2, 0x83EF, 0x8413, 0x843C,\n    0x846C, 0x84A0, 0x84D9, 0x8515, 0x8554, 0x8595, 0x85D8, 0x861B,\n    0x8660, 0x86A3, 0x86E6, 0x8727, 0x8766, 0x87A3, 0x87DB, 0x880F,\n    0x883F, 0x8869, 0x888C, 0x88A9, 0x88BF, 0x88CC, 0x88D1, 0x0039,\n    0x0030, 0x0017, 0xFFF0, 0xFFBA, 0xFF77, 0xFF29, 0xFED1, 0xFE6F,\n    0xFE05, 0xFD95, 0xFD20, 0xFCA6, 0xFC29, 0xFBAA, 0xFB2B, 0xFAAC,\n    0xFA2F, 0xF9B6, 0xF940, 0xF8D0, 0xF866, 0xF805, 0xF7AC, 0xF75E,\n    0xF71B, 0xF6E5, 0xF6BD, 0xF6A4, 0xF69C, 0x8001, 0x8001, 0x8152,\n    0x8152, 0x0A4F, 0x0A45, 0x0A27, 0x09F8, 0x09B8, 0x0969, 0x090D,\n    0x08A4, 0x0831, 0x07B4, 0x072F, 0x06A4, 0x0614, 0x0580, 0x04EA,\n    0x0453, 0x03BD, 0x0329, 0x027E, 0x01AA, 0x00B7, 0xFFB1, 0xFEA1,\n    0xFD92, 0xFC90, 0xFBA4, 0xFADA, 0xFA3D, 0xF9D7, 0xF9B2, 0x26EE,\n    0x26D2, 0x2681, 0x2603, 0x255F, 0x249A, 0x23BC, 0x22CB, 0x21CE,\n    0x20CC, 0x1FCB, 0x1ED2, 0x1DE8, 0x1D13, 0x1C5A, 0x1BC3, 0x1B57,\n    0x1B1A, 0x1B25, 0x1B80, 0x1C1C, 0x1CEA, 0x1DD9, 0x1EDB, 0x1FE0,\n    0x20D8, 0x21B4, 0x2264, 0x22D9, 0x2304, 0xFEBC, 0xFEAE, 0xFE85,\n    0xFE44, 0xFDEF, 0xFD86, 0xFD0E, 0xFC89, 0xFBF9, 0xFB61, 0xFAC3,\n    0xFA23, 0xF983, 0xF8E6, 0xF84E, 0xF7BE, 0xF739, 0xF6C0, 0xF64A,\n    0xF5C9, 0xF543, 0xF4BA, 0xF434, 0xF3B3, 0xF33B, 0xF2D1, 0xF277,\n    0xF233, 0xF207, 0xF1F7, 0x8152, 0x0347, 0xB298, 0xE257, 0x8152,\n    0x291E, 0x291C, 0x2916, 0x290C, 0x28FD, 0x28E8, 0x28CE, 0x28AC,\n    0x2884, 0x2854, 0x281B, 0x27DA, 0x278F, 0x273A, 0x26DB, 0x2665,\n    0x25D2, 0x2526, 0x2467, 0x239C, 0x22C9, 0x21F4, 0x2124, 0x205C,\n    0x1FA4, 0x1F01, 0x1E78, 0x1E10, 0x1DCD, 0x1DB5, 0x3FFF, 0x3FC6,\n    0x3F20, 0x3E15, 0x3CAE, 0x3AF2, 0x38E9, 0x369C, 0x3413, 0x3155,\n    0x2E6A, 0x2B5C, 0x2831, 0x24F2, 0x21A7, 0x1E58, 0x1B0D, 0x17CE,\n    0x14A3, 0x1194, 0x0EAA, 0x0BEC, 0x0962, 0x0715, 0x050D, 0x0351,\n    0x01E9, 0x00DF, 0x0039, 0x0000, 0x2FA4, 0x2F7A, 0x2EFE, 0x2E38,\n    0x2D2C, 0x2BE1, 0x2A5E, 0x28A7, 0x26C4, 0x24B9, 0x228E, 0x2047,\n    0x1DEB, 0x1B81, 0x190D, 0x1696, 0x1423, 0x11B8, 0x0F5D, 0x0D16,\n    0x0AEA, 0x08E0, 0x06FC, 0x0546, 0x03C2, 0x0278, 0x016C, 0x00A6,\n    0x002A, 0x0000, 0x8001, 0x7FB5, 0x7EE1, 0x7D8B, 0x7BBF, 0x7986,\n    0x76EC, 0x73F9, 0x70B9, 0x6D36, 0x697B, 0x6591, 0x6182, 0x5D5A,\n    0x5922, 0x54E6, 0x50AE, 0x4C86, 0x4877, 0x448D, 0x40D1, 0x3D4F,\n    0x3A0F, 0x371C, 0x3481, 0x3249, 0x307D, 0x2F27, 0x2E53, 0x2E09,\n};\n\n\n// 0x0500F1D4\nstatic const u16 eyerok_seg5_animindex_0500F1D4[] = {\n    0x001E, 0x0001, 0x001E, 0x001F, 0x001E, 0x003D, 0x0001, 0x0000, 0x0001, 0x005B, 0x0001, 0x0000,\n    0x001E, 0x03B6, 0x001E, 0x03D4, 0x001E, 0x03F2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0398,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0397,\n    0x001E, 0x01CD, 0x001E, 0x01EB, 0x001E, 0x0209,\n    0x0001, 0x0110, 0x0001, 0x0111, 0x001E, 0x0112,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x005C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0393,\n    0x001E, 0x0227, 0x001E, 0x0245, 0x001E, 0x0263,\n    0x0001, 0x0130, 0x0001, 0x0131, 0x001E, 0x0132,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x007A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0338,\n    0x001E, 0x0281, 0x001E, 0x029F, 0x001E, 0x02BD,\n    0x0001, 0x0150, 0x0001, 0x0151, 0x001E, 0x0152,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0098,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0337,\n    0x001E, 0x02DB, 0x001E, 0x02F9, 0x001E, 0x0317,\n    0x0001, 0x0170, 0x0001, 0x0171, 0x001E, 0x0172,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x00B6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0394, 0x0001, 0x0395, 0x0001, 0x0396,\n    0x001E, 0x0339, 0x001E, 0x0357, 0x001E, 0x0375,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0335, 0x0001, 0x0336, 0x0001, 0x0000,\n    0x0001, 0x0190, 0x001E, 0x0191, 0x001E, 0x01AF,\n    0x0001, 0x0000, 0x001E, 0x00D4, 0x001E, 0x00F2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x0500F3D8\nstatic const struct Animation eyerok_seg5_anim_0500F3D8 = {\n    33,\n    0,\n    0,\n    0,\n    0x1E,\n    ANIMINDEX_NUMPARTS(eyerok_seg5_animindex_0500F1D4),\n    eyerok_seg5_animvalue_0500E9B4,\n    eyerok_seg5_animindex_0500F1D4,\n    0,\n};\n\n// Same entries as above\n"
  },
  {
    "path": "actors/eyerok/anims/anim_0500F3F0.inc.c",
    "content": "// 0x0500F3F0\nstatic const struct Animation eyerok_seg5_anim_0500F3F0 = {\n    35,\n    0,\n    29,\n    0,\n    0x1E,\n    ANIMINDEX_NUMPARTS(eyerok_seg5_animindex_0500F1D4),\n    eyerok_seg5_animvalue_0500E9B4,\n    eyerok_seg5_animindex_0500F1D4,\n    0,\n};\n"
  },
  {
    "path": "actors/eyerok/anims/anim_0500FCCC.inc.c",
    "content": "// 0x0500F408\nstatic const s16 eyerok_seg5_animvalue_0500F408[] = {\n    0x0000, 0x0078, 0xFFFD, 0x3FFF, 0x335E, 0x33EB, 0x3555, 0x373C,\n    0x3942, 0x3B07, 0x3C2D, 0x3C54, 0x3B59, 0x3983, 0x3716, 0x3457,\n    0x318B, 0x2EF5, 0x2CD9, 0x2AF7, 0x28FC, 0x2713, 0x2565, 0x241E,\n    0x2367, 0x236B, 0x246F, 0x2666, 0x28F9, 0x2BD3, 0x2EA0, 0x3109,\n    0x32BA, 0x328D, 0x31FB, 0x3088, 0x2E9E, 0x2CA4, 0x2B02, 0x2A21,\n    0x2A67, 0x2C2C, 0x2F30, 0x32F9, 0x370F, 0x3AFA, 0x3E3F, 0x4067,\n    0x4179, 0x41E3, 0x41C6, 0x4142, 0x4077, 0x3F88, 0x3E93, 0x3D59,\n    0x3BA8, 0x39B0, 0x37A3, 0x35B5, 0x3415, 0x32F7, 0x37D9, 0x3839,\n    0x392E, 0x3A77, 0x3BD7, 0x3D0B, 0x3DD6, 0x3DF5, 0x3D49, 0x3BFC,\n    0x3A48, 0x3864, 0x3688, 0x34EB, 0x33C6, 0x3309, 0x327E, 0x3222,\n    0x31F0, 0x31E5, 0x31FD, 0x3234, 0x32A7, 0x3364, 0x344E, 0x354C,\n    0x3641, 0x3711, 0x37A2, 0x35CF, 0x3555, 0x341E, 0x327F, 0x30CB,\n    0x2F56, 0x2E75, 0x2E7A, 0x2FA0, 0x31AE, 0x3451, 0x3731, 0x39FB,\n    0x3C59, 0x3DF5, 0x3EDE, 0x3F61, 0x3F8F, 0x3F79, 0x3F2D, 0x3EBD,\n    0x3E37, 0x3D70, 0x3C4A, 0x3AEB, 0x3978, 0x3816, 0x36EB, 0x361D,\n    0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,\n    0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,\n    0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,\n    0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0x32ED, 0x339C, 0x355C,\n    0x37BA, 0x3A40, 0x3C7B, 0x3DF8, 0x3E42, 0x3D8E, 0x3C6A, 0x3AEB,\n    0x3925, 0x372C, 0x3515, 0x32F3, 0x30DB, 0x2EE1, 0x2D19, 0x2B98,\n    0x2A71, 0x29B9, 0x2988, 0x29D6, 0x2A8F, 0x2B9C, 0x2CE9, 0x2E60,\n    0x2FEC, 0x3177, 0x8001, 0x8001, 0xA37C, 0xA3D2, 0xA4AC, 0xA5CF,\n    0xA700, 0xA803, 0xA89E, 0xA894, 0xA7C3, 0xA656, 0xA482, 0xA27C,\n    0xA07B, 0x9EB5, 0x9D5F, 0x9C5E, 0x9B77, 0x9AB5, 0x9A23, 0x99CB,\n    0x99B8, 0x99F5, 0x9AAE, 0x9BE8, 0x9D73, 0x9F21, 0xA0C2, 0xA226,\n    0xA31F, 0x8001, 0x8001, 0xA37C, 0xA34B, 0xA2D5, 0xA243, 0xA1BC,\n    0xA16C, 0xA179, 0xA20F, 0xA35C, 0xA54E, 0xA7A5, 0xAA23, 0xAC8B,\n    0xAE9E, 0xB01D, 0xB126, 0xB1F7, 0xB28A, 0xB2D9, 0xB2DC, 0xB28D,\n    0xB1E4, 0xB0A1, 0xAEB2, 0xAC59, 0xA9D9, 0xA773, 0xA56B, 0xA403,\n    0x8001, 0x8001, 0xAA69, 0xAAA8, 0xAB46, 0xAC18, 0xACF0, 0xADA2,\n    0xAE01, 0xADE0, 0xAD25, 0xABF1, 0xAA6A, 0xA8BB, 0xA70B, 0xA584,\n    0xA44D, 0xA343, 0xA238, 0xA140, 0xA071, 0x9FE0, 0x9FA3, 0x9FCF,\n    0xA094, 0xA1ED, 0xA3A4, 0xA585, 0xA758, 0xA8E8, 0xAA00, 0x8001,\n    0x8001, 0xA37C, 0xA362, 0xA323, 0xA2D6, 0xA292, 0xA26E, 0xA280,\n    0xA2E0, 0xA3A5, 0xA4C5, 0xA61F, 0xA792, 0xA8FE, 0xAA40, 0xAB3A,\n    0xAC04, 0xACC6, 0xAD6F, 0xADF0, 0xAE39, 0xAE3C, 0xADE8, 0xAD11,\n    0xABB3, 0xAA01, 0xA82E, 0xA66B, 0xA4EB, 0xA3E0, 0x7FFB, 0x7FFE,\n    0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x8001, 0x8002,\n    0x8002, 0x8002, 0x8002, 0x8002, 0x8002, 0x8002, 0x8002, 0x8002,\n    0x8002, 0x8002, 0x8002, 0x8002, 0x8001, 0x7FFE, 0x7FFE, 0x7FFE,\n    0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x42D9, 0x42D1, 0x42BC, 0x429C,\n    0x4272, 0x4241, 0x420C, 0x41D4, 0x419D, 0x4168, 0x4137, 0x410D,\n    0x40EC, 0x40D7, 0x40D0, 0x40D6, 0x40E9, 0x4106, 0x412B, 0x4157,\n    0x4187, 0x41BA, 0x41EE, 0x4222, 0x4252, 0x427E, 0x42A3, 0x42C0,\n    0x42D2, 0x81DC, 0x81CF, 0x81AE, 0x817E, 0x8145, 0x8108, 0x80CC,\n    0x8098, 0x8064, 0x8029, 0x7FE9, 0x7FAF, 0x7F7F, 0x7F5E, 0x7F52,\n    0x7F5E, 0x7F7F, 0x7FB0, 0x7FEA, 0x802A, 0x8064, 0x8095, 0x80C4,\n    0x80F9, 0x812F, 0x8164, 0x8193, 0x81B9, 0x81D2, 0x70FD, 0x70FD,\n    0x70FC, 0x70FA, 0x70F8, 0x70F6, 0x70F3, 0x70F1, 0x70EF, 0x70ED,\n    0x70EB, 0x70E9, 0x70E7, 0x70E6, 0x70E5, 0x70E6, 0x70E7, 0x70E9,\n    0x70EB, 0x70ED, 0x70EF, 0x70F1, 0x70F3, 0x70F5, 0x70F7, 0x70F9,\n    0x70FB, 0x70FC, 0x70FD, 0xF753, 0xF731, 0xF6D6, 0xF651, 0xF5B2,\n    0xF508, 0xF464, 0xF3D4, 0xF345, 0xF2A1, 0xF1F7, 0xF158, 0xF0D3,\n    0xF078, 0xF055, 0xF077, 0xF0D4, 0xF15A, 0xF1FA, 0xF2A2, 0xF343,\n    0xF3CC, 0xF44E, 0xF4DF, 0xF575, 0xF607, 0xF689, 0xF6F3, 0xF739,\n    0x808D, 0x8090, 0x809A, 0x80A7, 0x80B8, 0x80C9, 0x80DA, 0x80E8,\n    0x80F7, 0x8108, 0x8119, 0x8129, 0x8137, 0x8140, 0x8144, 0x8140,\n    0x8137, 0x8129, 0x8119, 0x8108, 0x80F7, 0x80E9, 0x80DC, 0x80CD,\n    0x80BE, 0x80AF, 0x80A2, 0x8097, 0x8090, 0x7D56, 0x7D58, 0x7D5B,\n    0x7D60, 0x7D66, 0x7D6C, 0x7D72, 0x7D77, 0x7D7C, 0x7D82, 0x7D88,\n    0x7D8E, 0x7D93, 0x7D96, 0x7D98, 0x7D96, 0x7D93, 0x7D8E, 0x7D88,\n    0x7D82, 0x7D7C, 0x7D77, 0x7D73, 0x7D6D, 0x7D68, 0x7D63, 0x7D5E,\n    0x7D5A, 0x7D57, 0xEA78, 0xEAAF, 0xEB44, 0xEC1E, 0xED22, 0xEE37,\n    0xEF44, 0xF02E, 0xF119, 0xF225, 0xF33A, 0xF43E, 0xF517, 0xF5AD,\n    0xF5E5, 0xF5AD, 0xF516, 0xF43B, 0xF336, 0xF223, 0xF11C, 0xF03C,\n    0xEF67, 0xEE7A, 0xED84, 0xEC97, 0xEBC2, 0xEB15, 0xEAA2, 0x80DB,\n    0x80D6, 0x80CA, 0x80BA, 0x80AA, 0x809C, 0x8095, 0x8097, 0x80A6,\n    0x80BF, 0x80DF, 0x8101, 0x8121, 0x813C, 0x814C, 0x8151, 0x8150,\n    0x8149, 0x813F, 0x8134, 0x8128, 0x811F, 0x8116, 0x810C, 0x8101,\n    0x80F5, 0x80EB, 0x80E3, 0x80DD, 0x8377, 0x8378, 0x837A, 0x837D,\n    0x8380, 0x8383, 0x8384, 0x8382, 0x837E, 0x8377, 0x836F, 0x8366,\n    0x835E, 0x8357, 0x8353, 0x8352, 0x8353, 0x8355, 0x8358, 0x835C,\n    0x835F, 0x8362, 0x8365, 0x8368, 0x836B, 0x836F, 0x8372, 0x8374,\n    0x8376, 0xE520, 0xE557, 0xE5E3, 0xE69C, 0xE75B, 0xE7F8, 0xE84D,\n    0xE831, 0xE781, 0xE653, 0xE4DA, 0xE345, 0xE1C6, 0xE08F, 0xDFD0,\n    0xDF8E, 0xDFA1, 0xDFF2, 0xE06B, 0xE0F6, 0xE17E, 0xE1ED, 0xE255,\n    0xE2D3, 0xE35A, 0xE3E1, 0xE45D, 0xE4C2, 0xE507, 0x7DC7, 0x7DB4,\n    0x7D82, 0x7D3B, 0x7CEA, 0x7C9B, 0x7C56, 0x7C28, 0x7C0E, 0x7BFC,\n    0x7BF4, 0x7BF2, 0x7BF7, 0x7C00, 0x7C0D, 0x7C22, 0x7C40, 0x7C64,\n    0x7C8B, 0x7CB3, 0x7CD9, 0x7CFA, 0x7D19, 0x7D3B, 0x7D5D, 0x7D7E,\n    0x7D9B, 0x7DB2, 0x7DC2, 0x88D1, 0x88C9, 0x88B6, 0x889A, 0x887B,\n    0x885D, 0x8843, 0x8832, 0x8829, 0x8824, 0x8823, 0x8824, 0x8828,\n    0x882D, 0x8833, 0x883A, 0x8845, 0x8852, 0x8861, 0x886F, 0x887C,\n    0x8888, 0x8893, 0x889F, 0x88AB, 0x88B7, 0x88C1, 0x88C9, 0x88CF,\n    0xF69C, 0xF6F9, 0xF7EE, 0xF946, 0xFACF, 0xFC53, 0xFD9F, 0xFE7E,\n    0xFEFD, 0xFF4C, 0xFF73, 0xFF77, 0xFF5E, 0xFF2D, 0xFEEA, 0xFE86,\n    0xFDF7, 0xFD49, 0xFC8B, 0xFBCB, 0xFB14, 0xFA76, 0xF9DF, 0xF93D,\n    0xF898, 0xF7FB, 0xF770, 0xF701, 0xF6B7, 0x8001, 0x8001, 0x8152,\n    0x8152, 0xF9B2, 0xF9DE, 0xFA4C, 0xFADC, 0xFB6E, 0xFBE1, 0xFC16,\n    0xFBED, 0xFB57, 0xFA70, 0xF953, 0xF820, 0xF6F5, 0xF5EE, 0xF52A,\n    0xF494, 0xF409, 0xF38F, 0xF32C, 0xF2E7, 0xF2C5, 0xF2CD, 0xF305,\n    0xF37F, 0xF438, 0xF524, 0xF634, 0xF75B, 0xF889, 0x2304, 0x2307,\n    0x2310, 0x231A, 0x2324, 0x232A, 0x232A, 0x2320, 0x230A, 0x22E8,\n    0x22C0, 0x2295, 0x226B, 0x2246, 0x222A, 0x2213, 0x21FD, 0x21E9,\n    0x21D8, 0x21CB, 0x21C5, 0x21C6, 0x21D0, 0x21EC, 0x221C, 0x2257,\n    0x2295, 0x22CD, 0x22F5, 0xF1F7, 0xF220, 0xF284, 0xF307, 0xF389,\n    0xF3EB, 0xF411, 0xF3DB, 0xF32D, 0xF21A, 0xF0C7, 0xEF5A, 0xEDF9,\n    0xECC9, 0xEBEF, 0xEB56, 0xEAD4, 0xEA6A, 0xEA1E, 0xE9F3, 0xE9ED,\n    0xEA0F, 0xEA5F, 0xEAEA, 0xEBB8, 0xECBB, 0xEDE8, 0xEF33, 0xF092,\n    0x8152, 0x0347, 0xB298, 0xE257, 0x8152, 0x1DB5, 0x1DC9, 0x1DFE,\n    0x1E48, 0x1E9C, 0x1EEF, 0x1F37, 0x1F67, 0x1F76, 0x1F56, 0x1F08,\n    0x1E94, 0x1E03, 0x1D5D, 0x1CAA, 0x1BF2, 0x1B3D, 0x1A94, 0x19FD,\n    0x1982, 0x1929, 0x18FC, 0x1920, 0x19A2, 0x1A62, 0x1B44, 0x1C28,\n    0x1CF0, 0x1D7F, 0x2E09, 0x2E14, 0x2E31, 0x2E5E, 0x2E97, 0x2ED8,\n    0x2F1E, 0x2F66, 0x2FAD, 0x2FEE, 0x3027, 0x3053, 0x3071, 0x307B,\n    0x3076, 0x3066, 0x304D, 0x302C, 0x3004, 0x2FD7, 0x2FA6, 0x2F71,\n    0x2F3A, 0x2F03, 0x2ECB, 0x2E96, 0x2E63, 0x2E34, 0x2E09, 0x0000,\n};\n\n// 0x0500FAC8\nstatic const u16 eyerok_seg5_animindex_0500FAC8[] = {\n    0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000, 0x0001, 0x0003, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001D, 0x0342,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001D, 0x0325,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0324,\n    0x001D, 0x0169, 0x001D, 0x0186, 0x001D, 0x01A3,\n    0x0001, 0x00B2, 0x0001, 0x00B3, 0x001D, 0x00B4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001D, 0x0004,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0320,\n    0x001D, 0x01C0, 0x001D, 0x01DD, 0x001D, 0x01FA,\n    0x0001, 0x00D1, 0x0001, 0x00D2, 0x001D, 0x00D3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001D, 0x0021,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02C8,\n    0x001D, 0x0217, 0x001D, 0x0234, 0x001D, 0x0251,\n    0x0001, 0x00F0, 0x0001, 0x00F1, 0x001D, 0x00F2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001D, 0x003E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02C7,\n    0x001D, 0x026E, 0x001D, 0x028B, 0x001D, 0x02A8,\n    0x0001, 0x010F, 0x0001, 0x0110, 0x001D, 0x0111,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001D, 0x005B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0321, 0x0001, 0x0322, 0x0001, 0x0323,\n    0x001D, 0x02C9, 0x001D, 0x02E6, 0x001D, 0x0303,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x02C5, 0x0001, 0x02C6, 0x0001, 0x0000,\n    0x0001, 0x012E, 0x001D, 0x012F, 0x001D, 0x014C,\n    0x0001, 0x0000, 0x001D, 0x0078, 0x001D, 0x0095,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x0500FCCC\nstatic const struct Animation eyerok_seg5_anim_0500FCCC = {\n    32,\n    0,\n    0,\n    0,\n    0x1D,\n    ANIMINDEX_NUMPARTS(eyerok_seg5_animindex_0500FAC8),\n    eyerok_seg5_animvalue_0500F408,\n    eyerok_seg5_animindex_0500FAC8,\n    0,\n};\n"
  },
  {
    "path": "actors/eyerok/anims/anim_050116CC.inc.c",
    "content": "// 0x0500FCE4\nstatic const s16 eyerok_seg5_animvalue_0500FCE4[] = {\n    0x0000, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078,\n    0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078,\n    0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078,\n    0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078,\n    0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078,\n    0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078,\n    0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078,\n    0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078, 0x0078,\n    0x0078, 0x0077, 0x0076, 0x0075, 0x0075, 0x0075, 0x0078, 0x007B,\n    0x0080, 0x0086, 0x008D, 0x0093, 0x0099, 0x009F, 0x00A3, 0x00A6,\n    0x00A7, 0x00C7, 0x00C9, 0x00D1, 0x00DB, 0x00E9, 0x00FA, 0x010C,\n    0x011F, 0x0132, 0x0144, 0x0156, 0x0165, 0x0172, 0x017B, 0x0180,\n    0x0181, 0x017F, 0x017A, 0x0174, 0x016B, 0x0162, 0x0157, 0x014C,\n    0x0141, 0x0136, 0x012D, 0x0124, 0x011D, 0x0118, 0x0116, 0x0116,\n    0x011B, 0x0124, 0x0131, 0x0141, 0x0153, 0x0166, 0x0179, 0x018B,\n    0x019B, 0x01A9, 0x01B3, 0x01B9, 0x01BB, 0x01B9, 0x01B4, 0x01AD,\n    0x01A4, 0x019A, 0x0190, 0x0186, 0x017D, 0x0175, 0x016F, 0x016C,\n    0x016C, 0x0173, 0x0183, 0x0199, 0x01B1, 0x01C8, 0x01DB, 0x01EB,\n    0x01FB, 0x020C, 0x021C, 0x022A, 0x0235, 0x023E, 0x0242, 0x0243,\n    0x023F, 0x0239, 0x0230, 0x0227, 0x021D, 0x0214, 0x020D, 0x0208,\n    0x0206, 0xFE1C, 0xFE1C, 0xFE1C, 0xFE1C, 0xFE1C, 0xFE1C, 0xFE1C,\n    0xFE1C, 0xFE1C, 0xFE1C, 0xFE1C, 0xFE1C, 0xFE1C, 0xFE1C, 0xFE1C,\n    0xFE1C, 0xFE1C, 0xFE1C, 0xFE1C, 0xFE1C, 0xFE1C, 0xFE1C, 0xFE1C,\n    0xFE1C, 0xFE1C, 0xFE1C, 0xFE1C, 0xFE1C, 0xFE1C, 0xFE1C, 0xFE1C,\n    0xFE1C, 0xFE1C, 0xFE1C, 0xFE1C, 0xFE1C, 0xFE1C, 0xFE1C, 0xFE1C,\n    0xFE1C, 0xFE1C, 0xFE1C, 0xFE1C, 0xFE1C, 0xFE1C, 0xFE1C, 0xFE1C,\n    0xFE1C, 0xFE1C, 0xFE1C, 0xFE1C, 0xFE1C, 0xFE1C, 0xFE1C, 0xFE1C,\n    0xFE1C, 0xFE1B, 0xFE1B, 0xFE1A, 0xFE19, 0xFE18, 0xFE19, 0xFE1A,\n    0xFE1C, 0xFE20, 0xFE26, 0xFE2D, 0xFE35, 0xFE3D, 0xFE44, 0xFE4A,\n    0xFE51, 0xFE59, 0xFE60, 0xFE68, 0xFE6E, 0xFE74, 0xFE78, 0xFE7B,\n    0xFE7C, 0x3FFF, 0x3FFF, 0x3FFF, 0x4001, 0x4003, 0x4006, 0x4009,\n    0x400C, 0x400F, 0x4013, 0x4016, 0x4018, 0x401A, 0x401B, 0x401B,\n    0x401A, 0x4018, 0x4014, 0x400F, 0x4008, 0x3FFF, 0x4023, 0x4079,\n    0x40C4, 0x40C8, 0x4047, 0x3F04, 0x3B06, 0x34F5, 0x3084, 0x2E20,\n    0x2BC9, 0x2991, 0x2787, 0x25BC, 0x243F, 0x2320, 0x2271, 0x2241,\n    0x2465, 0x2929, 0x2E4D, 0x3192, 0x32A7, 0x32DD, 0x326F, 0x3194,\n    0x3084, 0x2F17, 0x2D25, 0x2AE3, 0x2885, 0x263F, 0x2447, 0x22D2,\n    0x2214, 0x2241, 0x2467, 0x28BC, 0x2E37, 0x33CD, 0x3873, 0x3B20,\n    0x3BE5, 0x3BB3, 0x3ACD, 0x3978, 0x37F5, 0x3688, 0x3575, 0x34FF,\n    0x3514, 0x356A, 0x35F3, 0x369E, 0x375B, 0x3819, 0x38C9, 0x395B,\n    0x39BE, 0x39E2, 0x3FFF, 0x3FD3, 0x3F57, 0x3E92, 0x3D8E, 0x3C54,\n    0x3AED, 0x3962, 0x37BC, 0x3605, 0x3444, 0x3284, 0x30CD, 0x2F28,\n    0x2D9F, 0x2C3A, 0x2B02, 0x2A01, 0x293F, 0x28C6, 0x28F2, 0x29F8,\n    0x2BA0, 0x2DB4, 0x2FFE, 0x3248, 0x345C, 0x3604, 0x3708, 0x3707,\n    0x3610, 0x349F, 0x332F, 0x3239, 0x3238, 0x3523, 0x39F9, 0x3CBD,\n    0x3CF4, 0x3CD7, 0x3C72, 0x3BD3, 0x3B05, 0x3A16, 0x3914, 0x380B,\n    0x3708, 0x357A, 0x3339, 0x30F1, 0x2F4F, 0x2EFF, 0x30BC, 0x3415,\n    0x37EF, 0x3B2F, 0x3CBD, 0x3CE7, 0x3CC6, 0x3C63, 0x3BCB, 0x3B0B,\n    0x3A2F, 0x3942, 0x3850, 0x3767, 0x3691, 0x35DB, 0x3551, 0x34FF,\n    0x34EE, 0x3516, 0x356A, 0x35DD, 0x3662, 0x36EC, 0x376E, 0x37DB,\n    0x3825, 0x3841, 0x3FFF, 0x3FF1, 0x3FCA, 0x3F88, 0x3F2D, 0x3EBB,\n    0x3E31, 0x3D91, 0x3CDC, 0x3C11, 0x3B33, 0x3A42, 0x393E, 0x3829,\n    0x3703, 0x3539, 0x3285, 0x2F60, 0x2C3E, 0x2996, 0x2714, 0x2468,\n    0x2211, 0x2092, 0x206A, 0x22BF, 0x273B, 0x2C20, 0x2FB3, 0x31E4,\n    0x33B5, 0x34FE, 0x359B, 0x3564, 0x338C, 0x302D, 0x2C75, 0x2996,\n    0x277A, 0x2572, 0x23CF, 0x22DE, 0x22F1, 0x24E7, 0x288F, 0x2C99,\n    0x2FB3, 0x31EF, 0x340D, 0x35C0, 0x36BD, 0x36BA, 0x3534, 0x325C,\n    0x2EF8, 0x2BCA, 0x2996, 0x283E, 0x272A, 0x2668, 0x260B, 0x2620,\n    0x26BA, 0x2809, 0x2A08, 0x2C72, 0x2F04, 0x3179, 0x338E, 0x34FF,\n    0x35EC, 0x36A8, 0x3737, 0x37A1, 0x37EA, 0x3819, 0x3833, 0x383F,\n    0x3842, 0x3841, 0x3FFF, 0x3FE7, 0x3FA2, 0x3F36, 0x3EA7, 0x3DFA,\n    0x3D34, 0x3C59, 0x3B70, 0x3A7C, 0x3983, 0x3889, 0x3794, 0x36A8,\n    0x35CA, 0x34FF, 0x344C, 0x33B7, 0x3343, 0x32F5, 0x33AB, 0x35AA,\n    0x3815, 0x3A0E, 0x3AB9, 0x3950, 0x3662, 0x3312, 0x3081, 0x2E95,\n    0x2CD6, 0x2BDA, 0x2C35, 0x2E3C, 0x3170, 0x3527, 0x38BB, 0x3B84,\n    0x3DA6, 0x3F62, 0x403C, 0x3FB6, 0x3CEB, 0x3860, 0x33B3, 0x3081,\n    0x2EE4, 0x2DE2, 0x2D7A, 0x2DAD, 0x2E79, 0x307B, 0x33B1, 0x3735,\n    0x3A1D, 0x3B84, 0x3BB8, 0x3BAD, 0x3B6A, 0x3AFA, 0x3A67, 0x39B9,\n    0x38F9, 0x3833, 0x376E, 0x36B5, 0x3611, 0x358A, 0x352C, 0x34FF,\n    0x3514, 0x356B, 0x35F4, 0x369E, 0x375B, 0x3819, 0x38C9, 0x395B,\n    0x39BE, 0x39E2, 0x0005, 0x0005, 0x0005, 0x0005, 0x0004, 0x0004,\n    0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,\n    0x0004, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0002, 0x0002, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0002, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0002, 0x0002, 0x0002, 0x0001, 0x0001,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE,\n    0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFD, 0xFFFD, 0xFFFD,\n    0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,\n    0xFFFD, 0xFFFD, 0xFFFD, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,\n    0xFFFC, 0xFFFC, 0xFFFC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,\n    0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFC,\n    0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,\n    0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,\n    0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,\n    0xFFFC, 0xFFFC, 0x0000, 0x0026, 0x0096, 0x0147, 0x0233, 0x0353,\n    0x049F, 0x0611, 0x07A2, 0x094A, 0x0B03, 0x0CC5, 0x0E89, 0x1049,\n    0x11FD, 0x139E, 0x1525, 0x168C, 0x17CA, 0x18DA, 0x198F, 0x19D9,\n    0x19D8, 0x19AE, 0x197A, 0x195F, 0x197C, 0x19F3, 0x1AE3, 0x1C8A,\n    0x1EE3, 0x21B2, 0x24B9, 0x27BC, 0x2A7E, 0x2CC1, 0x2E4A, 0x2EDA,\n    0x2E2B, 0x2C55, 0x29AD, 0x2687, 0x2337, 0x2010, 0x1D68, 0x1B93,\n    0x1AE3, 0x1B52, 0x1C83, 0x1E4F, 0x208E, 0x2319, 0x25C9, 0x2875,\n    0x2AF6, 0x2D25, 0x2EDA, 0x3039, 0x3180, 0x32B3, 0x33D1, 0x34DD,\n    0x35D9, 0x36C6, 0x37A6, 0x387B, 0x3946, 0x3A08, 0x3AC4, 0x3B7B,\n    0x3C29, 0x3CC5, 0x3D51, 0x3DCB, 0x3E33, 0x3E8A, 0x3ECE, 0x3EFF,\n    0x3F1C, 0x3F26, 0x8001, 0x8001, 0xC001, 0xBFCC, 0xBF33, 0xBE41,\n    0xBD01, 0xBB7D, 0xB9C0, 0xB7D3, 0xB5C3, 0xB398, 0xB15F, 0xAF20,\n    0xACE8, 0xAAC0, 0xA8B2, 0xA6CA, 0xA512, 0xA394, 0xA25C, 0xA172,\n    0xA12F, 0xA1BE, 0xA2EB, 0xA47F, 0xA646, 0xA80B, 0xA999, 0xAABA,\n    0xAB3A, 0xAB0D, 0xAA63, 0xA95F, 0xA823, 0xA6D3, 0xA591, 0xA480,\n    0xA3C3, 0xA37C, 0xA3C0, 0xA476, 0xA57E, 0xA6B6, 0xA7FF, 0xA938,\n    0xAA40, 0xAAF6, 0xAB3A, 0xAAE6, 0xAA0A, 0xA8D1, 0xA767, 0xA5F8,\n    0xA4B0, 0xA3BC, 0xA346, 0xA37C, 0xA440, 0xA550, 0xA6A0, 0xA826,\n    0xA9D6, 0xABA4, 0xAD86, 0xAF6F, 0xB155, 0xB32D, 0xB4EA, 0xB682,\n    0xB7E9, 0xB914, 0xBA02, 0xBABE, 0xBB4E, 0xBBB7, 0xBC00, 0xBC2F,\n    0xBC49, 0xBC54, 0xBC57, 0xBC56, 0x8001, 0x8001, 0xC001, 0xBFCC,\n    0xBF35, 0xBE46, 0xBD0A, 0xBB8B, 0xB9D4, 0xB7EF, 0xB5E7, 0xB3C6,\n    0xB198, 0xAF65, 0xAD3A, 0xAB20, 0xA922, 0xA74B, 0xA5A5, 0xA43B,\n    0xA317, 0xA243, 0xA204, 0xA27D, 0xA388, 0xA501, 0xA6C2, 0xA8A5,\n    0xAA86, 0xAC40, 0xADAB, 0xAF00, 0xB07C, 0xB20C, 0xB399, 0xB50D,\n    0xB655, 0xB759, 0xB805, 0xB843, 0xB7E6, 0xB6ED, 0xB584, 0xB3D8,\n    0xB216, 0xB06B, 0xAF02, 0xAE08, 0xADAB, 0xADEC, 0xAE9D, 0xAFA5,\n    0xB0EC, 0xB259, 0xB3D2, 0xB53F, 0xB687, 0xB791, 0xB843, 0xB8B0,\n    0xB8FD, 0xB92E, 0xB947, 0xB94E, 0xB946, 0xB936, 0xB921, 0xB90B,\n    0xB8FB, 0xB8F4, 0xB8FA, 0xB914, 0xB943, 0xB983, 0xB9D0, 0xBA24,\n    0xBA7A, 0xBACC, 0xBB15, 0xBB50, 0xBB77, 0xBB86, 0x8001, 0x8001,\n    0xC001, 0xBFCD, 0xBF39, 0xBE4F, 0xBD19, 0xBBA1, 0xB9F1, 0xB815,\n    0xB616, 0xB3FF, 0xB1D9, 0xAFB0, 0xAD8D, 0xAB7A, 0xA983, 0xA7B1,\n    0xA60E, 0xA4A6, 0xA381, 0xA2AB, 0xA286, 0xA342, 0xA4A5, 0xA670,\n    0xA868, 0xAA50, 0xABEA, 0xACFA, 0xAD43, 0xACA5, 0xAB4C, 0xA96E,\n    0xA743, 0xA502, 0xA2E1, 0xA118, 0x9FDE, 0x9F69, 0x9FE3, 0xA128,\n    0xA300, 0xA530, 0xA77C, 0xA9AC, 0xAB84, 0xACCA, 0xAD43, 0xACD4,\n    0xABA8, 0xA9F2, 0xA7E5, 0xA5B2, 0xA38C, 0xA1A6, 0xA031, 0x9F62,\n    0x9F69, 0xA030, 0xA171, 0xA318, 0xA513, 0xA74D, 0xA9B4, 0xAC35,\n    0xAEBC, 0xB135, 0xB38E, 0xB5B3, 0xB791, 0xB914, 0xBA44, 0xBB39,\n    0xBBF9, 0xBC8B, 0xBCF5, 0xBD3E, 0xBD6B, 0xBD83, 0xBD8D, 0xBD8F,\n    0x8001, 0x8001, 0xC001, 0xBFD6, 0xBF5B, 0xBE97, 0xBD93, 0xBC57,\n    0xBAEB, 0xB958, 0xB7A4, 0xB5DA, 0xB400, 0xB220, 0xB040, 0xAE69,\n    0xACA4, 0xAAF9, 0xA96F, 0xA80F, 0xA6E1, 0xA5EE, 0xA623, 0xA7CB,\n    0xA9F7, 0xABBA, 0xAC24, 0xAA04, 0xA61A, 0xA260, 0xA0D0, 0xA14D,\n    0xA253, 0xA3C4, 0xA581, 0xA76C, 0xA966, 0xAB50, 0xAD0C, 0xAE7C,\n    0xAFE7, 0xB13B, 0xB1D1, 0xB105, 0xAD8F, 0xA827, 0xA320, 0xA0D0,\n    0xA0F5, 0xA1AE, 0xA2DD, 0xA465, 0xA629, 0xA80B, 0xA9EE, 0xABB6,\n    0xAD44, 0xAE7C, 0xAF7A, 0xB06F, 0xB15A, 0xB23B, 0xB314, 0xB3E3,\n    0xB4A9, 0xB565, 0xB619, 0xB6C3, 0xB765, 0xB7FD, 0xB88D, 0xB914,\n    0xB989, 0xB9E6, 0xBA2E, 0xBA62, 0xBA87, 0xBA9F, 0xBAAD, 0xBAB3,\n    0xBAB5, 0xBAB5, 0x7FFB, 0x8001, 0x8001, 0x7FFE, 0x7FFE, 0x7FFE,\n    0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE,\n    0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE,\n    0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE,\n    0x7FFE, 0x7FFE, 0x7FFE, 0x8002, 0x8002, 0x8002, 0x8002, 0x8002,\n    0x8002, 0x8002, 0x8002, 0x8002, 0x8002, 0x8001, 0x7FFE, 0x7FFE,\n    0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x8002, 0x8002,\n    0x8002, 0x8002, 0x8002, 0x8002, 0x8002, 0x8002, 0x8002, 0x8002,\n    0x8002, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE,\n    0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFD, 0x7FFD,\n    0x7FFD, 0x7FFD, 0x7FFD, 0x3FFF, 0x400A, 0x402A, 0x405D, 0x40A0,\n    0x40F2, 0x414F, 0x41B5, 0x4223, 0x4295, 0x430A, 0x437F, 0x43F2,\n    0x4461, 0x44C9, 0x4528, 0x457B, 0x45C1, 0x45F8, 0x461C, 0x4621,\n    0x4600, 0x45BF, 0x4563, 0x44F3, 0x4475, 0x43ED, 0x4362, 0x42D9,\n    0x423A, 0x4172, 0x4092, 0x3FA8, 0x3EC5, 0x3DF9, 0x3D54, 0x3CE5,\n    0x3CBD, 0x3CF2, 0x3D82, 0x3E52, 0x3F49, 0x404D, 0x4143, 0x4214,\n    0x42A3, 0x42D9, 0x42A7, 0x421F, 0x4159, 0x406D, 0x3F70, 0x3E7B,\n    0x3DA4, 0x3D02, 0x3CAE, 0x3CBD, 0x3D23, 0x3DC0, 0x3E8B, 0x3F7C,\n    0x408A, 0x41AF, 0x42E0, 0x4418, 0x454C, 0x4675, 0x478C, 0x4886,\n    0x495E, 0x4A1F, 0x4ADA, 0x4B8B, 0x4C2F, 0x4CC3, 0x4D44, 0x4DAE,\n    0x4DFE, 0x4E30, 0x4E42, 0x8001, 0x7FFE, 0x7FFB, 0x7FF7, 0x7FF3,\n    0x7FED, 0x7FE7, 0x7FE2, 0x7FDC, 0x7FD7, 0x7FD2, 0x7FCF, 0x7FCD,\n    0x7FCD, 0x7FCE, 0x7FD2, 0x7FD9, 0x7FE2, 0x7FEF, 0x8001, 0x8023,\n    0x805C, 0x80A7, 0x80FA, 0x814D, 0x8198, 0x81D2, 0x81F3, 0x81F3,\n    0x81C6, 0x8170, 0x80FD, 0x8079, 0x7FEE, 0x7F6F, 0x7F04, 0x7EBB,\n    0x7EA0, 0x7EBD, 0x7F0B, 0x7F7C, 0x8004, 0x8091, 0x8117, 0x8188,\n    0x81D6, 0x81F3, 0x81D6, 0x8187, 0x8116, 0x8090, 0x8003, 0x7F7A,\n    0x7F09, 0x7EBC, 0x7EA0, 0x7EAB, 0x7EC8, 0x7EF5, 0x7F30, 0x7F74,\n    0x7FC1, 0x8016, 0x806B, 0x80BF, 0x8111, 0x815E, 0x81A3, 0x81DE,\n    0x820B, 0x822C, 0x8241, 0x824E, 0x8253, 0x8252, 0x824E, 0x8248,\n    0x8241, 0x823C, 0x823A, 0x8001, 0x7FF4, 0x7FD6, 0x7FA6, 0x7F66,\n    0x7F18, 0x7EBE, 0x7E5B, 0x7DEF, 0x7D7E, 0x7D08, 0x7C91, 0x7C19,\n    0x7BA4, 0x7B32, 0x7AC6, 0x7A62, 0x7A08, 0x79BA, 0x797A, 0x794F,\n    0x793E, 0x7940, 0x7951, 0x796B, 0x7989, 0x79A5, 0x79BB, 0x79C5,\n    0x79C5, 0x79C3, 0x79BE, 0x79B7, 0x79B1, 0x79AA, 0x79A4, 0x79A0,\n    0x799F, 0x79A0, 0x79A4, 0x79A9, 0x79AF, 0x79B5, 0x79BB, 0x79C0,\n    0x79C4, 0x79C5, 0x79BF, 0x79B0, 0x799C, 0x7988, 0x7976, 0x796B,\n    0x796C, 0x797C, 0x799F, 0x79D3, 0x7A13, 0x7A5D, 0x7AAF, 0x7B06,\n    0x7B62, 0x7BBF, 0x7C1D, 0x7C79, 0x7CD1, 0x7D24, 0x7D6F, 0x7DB0,\n    0x7DE6, 0x7E0E, 0x7E28, 0x7E37, 0x7E3C, 0x7E3A, 0x7E34, 0x7E2B,\n    0x7E21, 0x7E1A, 0x7E17, 0x0000, 0xFFC7, 0xFF21, 0xFE1C, 0xFCC2,\n    0xFB1E, 0xF93E, 0xF72B, 0xF4F1, 0xF29D, 0xF039, 0xEDD1, 0xEB70,\n    0xE923, 0xE6F4, 0xE4EF, 0xE321, 0xE193, 0xE052, 0xDF69, 0xDF50,\n    0xE044, 0xE1FA, 0xE427, 0xE681, 0xE8BC, 0xEA8D, 0xEBAA, 0xEBC8,\n    0xEAAE, 0xE88B, 0xE5B0, 0xE26A, 0xDF0B, 0xDBE1, 0xD93C, 0xD76C,\n    0xD6BF, 0xD778, 0xD967, 0xDC33, 0xDF85, 0xE302, 0xE654, 0xE920,\n    0xEB0F, 0xEBC8, 0xEAFA, 0xE8D7, 0xE5C6, 0xE230, 0xDE7E, 0xDB18,\n    0xD865, 0xD6D0, 0xD6BF, 0xD7ED, 0xD9BE, 0xDC1A, 0xDEE9, 0xE212,\n    0xE57D, 0xE913, 0xECBB, 0xF05D, 0xF3E1, 0xF72F, 0xFA2E, 0xFCC7,\n    0xFEE2, 0x0076, 0x0199, 0x025B, 0x02CC, 0x02FE, 0x0302, 0x02E7,\n    0x02C0, 0x029B, 0x028C, 0x8001, 0x7FFE, 0x7FFE, 0x7FFD, 0x7FFC,\n    0x7FFA, 0x7FF9, 0x7FF7, 0x7FF5, 0x7FF3, 0x7FF0, 0x7FEE, 0x7FEC,\n    0x7FE9, 0x7FE7, 0x7FE4, 0x7FE2, 0x7FE0, 0x7FDE, 0x7FDC, 0x7FD9,\n    0x7FD7, 0x7FD4, 0x7FD1, 0x7FCE, 0x7FCC, 0x7FCA, 0x7FC9, 0x7FCA,\n    0x7FCC, 0x7FCF, 0x7FD4, 0x7FDA, 0x7FE0, 0x7FE5, 0x7FE9, 0x7FEC,\n    0x7FEE, 0x7FEC, 0x7FE9, 0x7FE4, 0x7FDF, 0x7FD9, 0x7FD3, 0x7FCE,\n    0x7FCB, 0x7FCA, 0x7FCA, 0x7FCB, 0x7FCD, 0x7FD0, 0x7FD3, 0x7FD7,\n    0x7FDC, 0x7FE1, 0x7FE7, 0x7FEE, 0x7FF5, 0x7FFE, 0x800B, 0x8015,\n    0x8020, 0x802B, 0x8036, 0x8041, 0x804B, 0x8055, 0x805D, 0x8064,\n    0x806A, 0x806E, 0x806F, 0x806F, 0x806E, 0x806B, 0x8068, 0x8065,\n    0x8063, 0x8061, 0x8060, 0x8001, 0x7FFE, 0x7FFC, 0x7FF9, 0x7FF5,\n    0x7FF1, 0x7FEB, 0x7FE6, 0x7FDF, 0x7FD8, 0x7FD1, 0x7FCA, 0x7FC3,\n    0x7FBC, 0x7FB6, 0x7FAF, 0x7FAA, 0x7FA4, 0x7FA0, 0x7F9C, 0x7F9A,\n    0x7F99, 0x7F9A, 0x7F9C, 0x7F9E, 0x7FA1, 0x7FA3, 0x7FA4, 0x7FA5,\n    0x7FA4, 0x7FA3, 0x7FA1, 0x7F9F, 0x7F9D, 0x7F9B, 0x7F99, 0x7F98,\n    0x7F98, 0x7F98, 0x7F99, 0x7F9B, 0x7F9D, 0x7F9F, 0x7FA1, 0x7FA3,\n    0x7FA4, 0x7FA5, 0x7FA3, 0x7FA0, 0x7F9C, 0x7F98, 0x7F93, 0x7F90,\n    0x7F8E, 0x7F8E, 0x7F91, 0x7F98, 0x7FA2, 0x7FAE, 0x7FBE, 0x7FCF,\n    0x7FE1, 0x7FF4, 0x800A, 0x801E, 0x8030, 0x8042, 0x8051, 0x805F,\n    0x806A, 0x8072, 0x8077, 0x807A, 0x807B, 0x807A, 0x8079, 0x8077,\n    0x8075, 0x8074, 0x8073, 0x0000, 0xFFBD, 0xFEFB, 0xFDC6, 0xFC2A,\n    0xFA33, 0xF7ED, 0xF565, 0xF2A5, 0xEFBA, 0xECB0, 0xE993, 0xE66F,\n    0xE350, 0xE041, 0xDD50, 0xDA87, 0xD7F2, 0xD59E, 0xD397, 0xD1D0,\n    0xD038, 0xCED4, 0xCDA9, 0xCCBC, 0xCC12, 0xCBB1, 0xCB9C, 0xCBDA,\n    0xCCB0, 0xCE3F, 0xD04D, 0xD2A4, 0xD50B, 0xD74A, 0xD92A, 0xDA73,\n    0xDAED, 0xDA69, 0xD906, 0xD704, 0xD4A3, 0xD223, 0xCFC2, 0xCDC1,\n    0xCC5E, 0xCBDA, 0xCC15, 0xCCBE, 0xCDC7, 0xCF22, 0xD0C0, 0xD295,\n    0xD492, 0xD6A8, 0xD8CB, 0xDAED, 0xDD2C, 0xDFA8, 0xE254, 0xE524,\n    0xE80B, 0xEAFB, 0xEDE7, 0xF0C4, 0xF383, 0xF619, 0xF877, 0xFA91,\n    0xFC5B, 0xFDC4, 0xFECD, 0xFF85, 0xFFF8, 0x0034, 0x0047, 0x003F,\n    0x0028, 0x0011, 0x0006, 0x8001, 0x8006, 0x8011, 0x8024, 0x803D,\n    0x805B, 0x807D, 0x80A2, 0x80CA, 0x80F3, 0x811D, 0x8147, 0x8171,\n    0x8198, 0x81BC, 0x81DD, 0x81FA, 0x8211, 0x8222, 0x822C, 0x8224,\n    0x8203, 0x81D1, 0x8194, 0x8153, 0x8115, 0x80E0, 0x80BB, 0x80AE,\n    0x80BB, 0x80DE, 0x8111, 0x814D, 0x818D, 0x81C9, 0x81FC, 0x821F,\n    0x822C, 0x821F, 0x81FC, 0x81C9, 0x818D, 0x814D, 0x8111, 0x80DE,\n    0x80BB, 0x80AE, 0x80BA, 0x80DC, 0x810E, 0x8149, 0x8187, 0x81C4,\n    0x81F9, 0x821F, 0x8233, 0x822C, 0x820E, 0x81E1, 0x81A6, 0x8162,\n    0x8115, 0x80C3, 0x806E, 0x8019, 0x7FC3, 0x7F76, 0x7F30, 0x7EF4,\n    0x7EC5, 0x7EA4, 0x7E8E, 0x7E82, 0x7E7D, 0x7E7F, 0x7E84, 0x7E8B,\n    0x7E93, 0x7E98, 0x7E9B, 0x8001, 0x800A, 0x8022, 0x8047, 0x807A,\n    0x80B7, 0x80FE, 0x814C, 0x81A1, 0x81FC, 0x8259, 0x82B9, 0x8319,\n    0x8378, 0x83D5, 0x842D, 0x8480, 0x84CC, 0x8510, 0x8549, 0x8575,\n    0x8594, 0x85A8, 0x85B2, 0x85B6, 0x85B5, 0x85B1, 0x85AD, 0x85AC,\n    0x85A8, 0x859F, 0x8592, 0x8582, 0x8572, 0x8562, 0x8555, 0x854C,\n    0x8549, 0x854C, 0x8555, 0x8562, 0x8572, 0x8582, 0x8592, 0x859F,\n    0x85A8, 0x85AC, 0x85AB, 0x85AA, 0x85A7, 0x85A2, 0x859B, 0x8591,\n    0x8584, 0x8574, 0x8561, 0x8549, 0x852C, 0x850A, 0x84E4, 0x84BA,\n    0x848F, 0x8462, 0x8435, 0x8409, 0x83DE, 0x83B6, 0x8392, 0x8373,\n    0x8359, 0x8347, 0x833B, 0x8335, 0x8333, 0x8335, 0x8339, 0x833E,\n    0x8343, 0x8347, 0x8349, 0x0000, 0xFFAA, 0xFEB1, 0xFD27, 0xFB1D,\n    0xF8A3, 0xF5CA, 0xF2A4, 0xEF40, 0xEBAF, 0xE803, 0xE44C, 0xE09B,\n    0xDD01, 0xD98F, 0xD654, 0xD363, 0xD0CC, 0xCEA0, 0xCCEF, 0xCC2F,\n    0xCC9B, 0xCDE8, 0xCFCC, 0xD1FE, 0xD433, 0xD622, 0xD781, 0xD807,\n    0xD7A6, 0xD6A1, 0xD527, 0xD367, 0xD18F, 0xCFCF, 0xCE55, 0xCD50,\n    0xCCEF, 0xCD50, 0xCE55, 0xCFCF, 0xD18F, 0xD367, 0xD527, 0xD6A1,\n    0xD7A6, 0xD807, 0xD792, 0xD65B, 0xD49C, 0xD292, 0xD075, 0xCE82,\n    0xCCF3, 0xCC04, 0xCBEF, 0xCCEF, 0xCEF8, 0xD1C2, 0xD52C, 0xD914,\n    0xDD5A, 0xE1DC, 0xE67A, 0xEB13, 0xEF86, 0xF3B1, 0xF775, 0xFAAF,\n    0xFD40, 0xFF14, 0x0043, 0x00E8, 0x011E, 0x0101, 0x00AC, 0x003A,\n    0xFFC8, 0xFF6F, 0xFF4B, 0x8001, 0x7FFC, 0x7FF6, 0x7FEE, 0x7FE2,\n    0x7FD5, 0x7FC7, 0x7FB9, 0x7FAC, 0x7F9F, 0x7F94, 0x7F8C, 0x7F88,\n    0x7F87, 0x7F8B, 0x7F94, 0x7FA4, 0x7FBA, 0x7FD8, 0x8001, 0x804D,\n    0x80CF, 0x8176, 0x8232, 0x82F0, 0x839F, 0x842E, 0x848D, 0x84A9,\n    0x8471, 0x83ED, 0x8334, 0x825A, 0x8177, 0x80A0, 0x7FE8, 0x7F6B,\n    0x7F3D, 0x7F79, 0x8018, 0x80F6, 0x81F5, 0x82F3, 0x83D1, 0x846E,\n    0x84A9, 0x8489, 0x8430, 0x83AB, 0x8306, 0x824E, 0x818F, 0x80D4,\n    0x802C, 0x7F9E, 0x7F3D, 0x7EFC, 0x7EC6, 0x7E9A, 0x7E77, 0x7E5B,\n    0x7E46, 0x7E37, 0x7E2B, 0x7E22, 0x7E1A, 0x7E13, 0x7E0B, 0x7E00,\n    0x7DF2, 0x7DE4, 0x7DD8, 0x7DCF, 0x7DC8, 0x7DC3, 0x7DBF, 0x7DBD,\n    0x7DBC, 0x7DBB, 0x7DBB, 0x8001, 0x8015, 0x804F, 0x80AA, 0x8122,\n    0x81B5, 0x825E, 0x831A, 0x83E5, 0x84BA, 0x8597, 0x8678, 0x8758,\n    0x8835, 0x8909, 0x89D3, 0x8A8D, 0x8B34, 0x8BC4, 0x8C3B, 0x8C84,\n    0x8C9B, 0x8C89, 0x8C5B, 0x8C1B, 0x8BD6, 0x8B96, 0x8B67, 0x8B55,\n    0x8B5C, 0x8B71, 0x8B8F, 0x8BB2, 0x8BD7, 0x8BFB, 0x8C18, 0x8C2D,\n    0x8C35, 0x8C2B, 0x8C12, 0x8BEE, 0x8BC5, 0x8B9C, 0x8B78, 0x8B5F,\n    0x8B55, 0x8B63, 0x8B87, 0x8BB9, 0x8BF2, 0x8C2B, 0x8C5C, 0x8C7D,\n    0x8C86, 0x8C71, 0x8C35, 0x8BD4, 0x8B5A, 0x8ACA, 0x8A28, 0x8979,\n    0x88C0, 0x8802, 0x8744, 0x8689, 0x85D6, 0x852F, 0x8497, 0x8415,\n    0x83AB, 0x835F, 0x8331, 0x831B, 0x831A, 0x8326, 0x833C, 0x8356,\n    0x836F, 0x8382, 0x8389, 0x0000, 0xFFCD, 0xFF37, 0xFE47, 0xFD07,\n    0xFB7E, 0xF9B5, 0xF7B5, 0xF586, 0xF331, 0xF0BD, 0xEE35, 0xEB9F,\n    0xE905, 0xE670, 0xE3E7, 0xE173, 0xDF1D, 0xDCEE, 0xDAED, 0xD8DB,\n    0xD68B, 0xD41D, 0xD1B6, 0xCF78, 0xCD85, 0xCC00, 0xCB0C, 0xCACB,\n    0xCB8C, 0xCD53, 0xCFD4, 0xD2C3, 0xD5D4, 0xD8BC, 0xDB2D, 0xDCDB,\n    0xDD7C, 0xDCAE, 0xDA90, 0xD792, 0xD423, 0xD0B5, 0xCDB6, 0xCB98,\n    0xCACB, 0xCB1D, 0xCC06, 0xCD6D, 0xCF3C, 0xD15B, 0xD3B3, 0xD62C,\n    0xD8B1, 0xDB28, 0xDD7C, 0xDFCF, 0xE24D, 0xE4ED, 0xE7A6, 0xEA6F,\n    0xED3E, 0xF00A, 0xF2C9, 0xF573, 0xF7FE, 0xFA61, 0xFC92, 0xFE88,\n    0x0039, 0x018C, 0x0276, 0x0307, 0x0351, 0x0362, 0x034C, 0x031E,\n    0x02EA, 0x02BE, 0x02AC, 0x8001, 0x8001, 0x8152, 0x8152, 0x0000,\n    0xFFFF, 0xFFFA, 0xFFF2, 0xFFE9, 0xFFDE, 0xFFD3, 0xFFC7, 0xFFBC,\n    0xFFB1, 0xFFA8, 0xFFA2, 0xFF9E, 0xFF9E, 0xFFA2, 0xFFAA, 0xFFB7,\n    0xFFCA, 0xFFE4, 0x0003, 0x003F, 0x00A4, 0x0125, 0x01B7, 0x024E,\n    0x02DF, 0x035D, 0x03BC, 0x03F2, 0x03F4, 0x03C8, 0x037E, 0x0320,\n    0x02BD, 0x0263, 0x021D, 0x01F9, 0x0205, 0x022E, 0x025A, 0x0289,\n    0x02BB, 0x02EF, 0x0326, 0x035E, 0x0399, 0x03D7, 0x0415, 0x0456,\n    0x0498, 0x04DC, 0x0521, 0x0568, 0x05AF, 0x05F8, 0x0641, 0x068B,\n    0x06D5, 0x0720, 0x076B, 0x07B7, 0x0802, 0x084D, 0x0899, 0x08E3,\n    0x092D, 0x0977, 0x09C0, 0x0A08, 0x0A4F, 0x0A9F, 0x0AFF, 0x0B6A,\n    0x0BD9, 0x0C47, 0x0CAE, 0x0D08, 0x0D4F, 0x0D7F, 0x0D90, 0x0000,\n    0x0013, 0x004B, 0x00A5, 0x011B, 0x01AC, 0x0252, 0x030C, 0x03D4,\n    0x04A7, 0x0582, 0x0661, 0x0741, 0x081D, 0x08F3, 0x09BE, 0x0A7B,\n    0x0B26, 0x0BBC, 0x0C39, 0x0C90, 0x0CBE, 0x0CCA, 0x0CBD, 0x0CA0,\n    0x0C7A, 0x0C54, 0x0C36, 0x0C28, 0x0C15, 0x0BE8, 0x0BAF, 0x0B76,\n    0x0B49, 0x0B35, 0x0B47, 0x0B8B, 0x0C0F, 0x0CBB, 0x0D6F, 0x0E2C,\n    0x0EF1, 0x0FBC, 0x108E, 0x1166, 0x1243, 0x1324, 0x140A, 0x14F3,\n    0x15DE, 0x16CC, 0x17BC, 0x18AC, 0x199D, 0x1A8E, 0x1B7D, 0x1C6C,\n    0x1D58, 0x1E41, 0x1F28, 0x200A, 0x20E8, 0x21C1, 0x2294, 0x2361,\n    0x2427, 0x24E6, 0x259C, 0x264A, 0x26EE, 0x276A, 0x27A7, 0x27B1,\n    0x2794, 0x275B, 0x2712, 0x26C5, 0x267F, 0x264C, 0x2639, 0x0000,\n    0xFFEF, 0xFFBD, 0xFF6F, 0xFF09, 0xFE8F, 0xFE05, 0xFD6F, 0xFCD2,\n    0xFC31, 0xFB91, 0xFAF5, 0xFA62, 0xF9DC, 0xF967, 0xF907, 0xF8C0,\n    0xF897, 0xF88F, 0xF8AC, 0xF93A, 0xFA63, 0xFBFD, 0xFDDD, 0xFFD7,\n    0x01C0, 0x036F, 0x04B8, 0x0570, 0x058C, 0x0533, 0x0482, 0x0396,\n    0x028B, 0x0180, 0x0091, 0xFFDD, 0xFF7E, 0xFF55, 0xFF30, 0xFF0D,\n    0xFEED, 0xFECF, 0xFEB4, 0xFE9B, 0xFE85, 0xFE72, 0xFE60, 0xFE51,\n    0xFE44, 0xFE3A, 0xFE31, 0xFE2B, 0xFE26, 0xFE23, 0xFE23, 0xFE24,\n    0xFE26, 0xFE2B, 0xFE31, 0xFE39, 0xFE42, 0xFE4D, 0xFE59, 0xFE66,\n    0xFE75, 0xFE85, 0xFE96, 0xFEA8, 0xFEBC, 0xFEE8, 0xFF40, 0xFFB6,\n    0x0040, 0x00D4, 0x0167, 0x01EC, 0x0258, 0x02A2, 0x02BD, 0x8152,\n    0xF1A8, 0xF18E, 0xF144, 0xF0CF, 0xF033, 0xEF74, 0xEE97, 0xEDA0,\n    0xEC94, 0xEB77, 0xEA4E, 0xE91E, 0xE7EA, 0xE6B8, 0xE58B, 0xE468,\n    0xE354, 0xE254, 0xE16B, 0xE09E, 0xDFED, 0xDF54, 0xDED0, 0xDE5F,\n    0xDDFF, 0xDDAD, 0xDD67, 0xDD2B, 0xDCF6, 0xDCCF, 0xDCBD, 0xDCBB,\n    0xDCC5, 0xDCD7, 0xDCED, 0xDD01, 0xDD11, 0xDD17, 0xDD16, 0xDD13,\n    0xDD0E, 0xDD09, 0xDD03, 0xDCFE, 0xDCFA, 0xDCF7, 0xDCF6, 0xDCD0,\n    0xDC71, 0xDBF0, 0xDB68, 0xDAF1, 0xDAA5, 0xDA9D, 0xDAF1, 0xDBBC,\n    0xDD17, 0xDF08, 0xE179, 0xE452, 0xE77B, 0xEADF, 0xEE65, 0xF1F6,\n    0xF57C, 0xF8E0, 0xFC0A, 0xFEE3, 0x0154, 0x0347, 0x04A3, 0x0571,\n    0x05C9, 0x05C4, 0x057C, 0x0508, 0x0483, 0x0406, 0x03A8, 0x0383,\n    0xC001, 0xBFD5, 0xBF57, 0xBE8E, 0xBD82, 0xBC3C, 0xBAC3, 0xB91F,\n    0xB757, 0xB575, 0xB37F, 0xB17D, 0xAF78, 0xAD77, 0xAB83, 0xA9A2,\n    0xA7DE, 0xA63D, 0xA4C8, 0xA387, 0xA27D, 0xA1A7, 0xA101, 0xA085,\n    0xA02F, 0x9FFA, 0x9FE3, 0x9FE3, 0x9FF6, 0xA03D, 0xA0CA, 0xA189,\n    0xA265, 0xA348, 0xA41E, 0xA4D1, 0xA54C, 0xA57A, 0xA549, 0xA4C8,\n    0xA40C, 0xA32D, 0xA243, 0xA164, 0xA0A8, 0xA027, 0x9FF6, 0xA00B,\n    0xA047, 0xA0A4, 0xA120, 0xA1B5, 0xA25E, 0xA318, 0xA3DD, 0xA4AA,\n    0xA57A, 0xA65A, 0xA75A, 0xA870, 0xA998, 0xAAC9, 0xABFE, 0xAD30,\n    0xAE57, 0xAF6E, 0xB06D, 0xB14D, 0xB208, 0xB298, 0xB2E7, 0xB2F0,\n    0xB2C2, 0xB26A, 0xB1F9, 0xB17B, 0xB100, 0xB096, 0xB04B, 0xB02F,\n    0xE0BF, 0xE0E0, 0xE142, 0xE1DC, 0xE2AB, 0xE3A7, 0xE4CC, 0xE612,\n    0xE774, 0xE8EC, 0xEA75, 0xEC07, 0xED9E, 0xEF34, 0xF0C2, 0xF243,\n    0xF3B0, 0xF504, 0xF639, 0xF749, 0xF839, 0xF913, 0xF9D5, 0xFA7F,\n    0xFB0F, 0xFB85, 0xFBDF, 0xFC1D, 0xFC3E, 0xFC2C, 0xFBDC, 0xFB61,\n    0xFACA, 0xFA28, 0xF98D, 0xF90A, 0xF8AE, 0xF88C, 0xF8AC, 0xF903,\n    0xF981, 0xFA17, 0xFAB4, 0xFB49, 0xFBC7, 0xFC1E, 0xFC3E, 0xFC3E,\n    0xFC38, 0xFC27, 0xFC06, 0xFBCD, 0xFB78, 0xFB00, 0xFA5F, 0xF990,\n    0xF88C, 0xF747, 0xF5C0, 0xF404, 0xF220, 0xF021, 0xEE14, 0xEC05,\n    0xEA01, 0xE816, 0xE64F, 0xE4BA, 0xE363, 0xE257, 0xE1AE, 0xE169,\n    0xE174, 0xE1BE, 0xE231, 0xE2BB, 0xE348, 0xE3C5, 0xE41E, 0xE440,\n    0x8152, 0x1114, 0x112F, 0x117C, 0x11F6, 0x1298, 0x135D, 0x143F,\n    0x1539, 0x1647, 0x1762, 0x1886, 0x19AE, 0x1AD4, 0x1BF2, 0x1D05,\n    0x1E07, 0x1EF2, 0x1FC1, 0x206F, 0x20F8, 0x2134, 0x2114, 0x20AE,\n    0x2019, 0x1F6E, 0x1EC3, 0x1E31, 0x1DCF, 0x1DB5, 0x1DE9, 0x1E55,\n    0x1EEA, 0x1F98, 0x204E, 0x20FB, 0x2191, 0x21FD, 0x2230, 0x2221,\n    0x21DA, 0x216C, 0x20E5, 0x2054, 0x1FCB, 0x1F57, 0x1F08, 0x1EEE,\n    0x1F03, 0x1F32, 0x1F79, 0x1FD4, 0x203D, 0x20B0, 0x212B, 0x21A8,\n    0x2223, 0x2299, 0x2315, 0x23A5, 0x2444, 0x24EB, 0x2596, 0x2640,\n    0x26E4, 0x277D, 0x2805, 0x2878, 0x28D1, 0x290A, 0x291E, 0x291E,\n    0x291E, 0x291E, 0x291E, 0x291E, 0x291E, 0x291E, 0x291E, 0x291E,\n    0x291E, 0x0000, 0xFFFD, 0xFFF3, 0xFFE4, 0xFFD1, 0xFFBC, 0xFFA4,\n    0xFF8D, 0xFF76, 0xFF61, 0xFF4F, 0xFF42, 0xFF3A, 0xFF39, 0xFF40,\n    0xFF4F, 0xFF69, 0xFF8F, 0xFFC1, 0x0000, 0x007D, 0x0156, 0x026C,\n    0x03A4, 0x04E1, 0x0605, 0x06F5, 0x0794, 0x07C5, 0x076D, 0x069C,\n    0x0575, 0x0418, 0x02A9, 0x014B, 0x001F, 0xFF4A, 0xFEEA, 0xFF1D,\n    0xFFCB, 0x00D0, 0x0208, 0x034F, 0x047E, 0x0572, 0x0606, 0x0615,\n    0x053C, 0x036F, 0x010B, 0xFE6D, 0xFBED, 0xF9EB, 0xF8C2, 0xF8CE,\n    0xFA6B, 0xFD9A, 0x01F8, 0x074B, 0x0D59, 0x13E7, 0x1ABC, 0x219D,\n    0x284F, 0x2E9A, 0x3442, 0x390D, 0x3CC2, 0x3F26, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x0000, 0xFFFF, 0xFFFA, 0xFFF3, 0xFFEB, 0xFFE1, 0xFFD6,\n    0xFFCB, 0xFFC0, 0xFFB7, 0xFFAE, 0xFFA8, 0xFFA5, 0xFFA4, 0xFFA7,\n    0xFFAE, 0xFFBA, 0xFFCC, 0xFFE3, 0x0000, 0x0043, 0x00BF, 0x015E,\n    0x020D, 0x02B8, 0x0348, 0x03AC, 0x03CE, 0x0399, 0x02E9, 0x01BE,\n    0x003F, 0xFE94, 0xFCE1, 0xFB4D, 0xFA00, 0xF91F, 0xF8D1, 0xF93C,\n    0xFA4A, 0xFBCE, 0xFD98, 0xFF79, 0x0142, 0x02C4, 0x03D2, 0x043A,\n    0x03B0, 0x023A, 0x002B, 0xFDD7, 0xFB8D, 0xF9A1, 0xF866, 0xF82E,\n    0xF94B, 0xFBB6, 0xFF14, 0x0334, 0x07EB, 0x0D09, 0x1261, 0x17C5,\n    0x1D06, 0x21F6, 0x2668, 0x2A2D, 0x2D18, 0x2EF9, 0x2FA4, 0x2FA4,\n    0x2FA4, 0x2FA4, 0x2FA4, 0x2FA4, 0x2FA4, 0x2FA4, 0x2FA4, 0x2FA4,\n    0x2FA4, 0x6D9A, 0x6D6C, 0x6CE7, 0x6C14, 0x6AFA, 0x69A3, 0x6817,\n    0x665E, 0x6480, 0x6286, 0x6078, 0x5E5F, 0x5C42, 0x5A2A, 0x5820,\n    0x562C, 0x5456, 0x52A6, 0x5125, 0x4FDC, 0x4ED6, 0x4E13, 0x4D8A,\n    0x4D31, 0x4CFD, 0x4CE5, 0x4CE0, 0x4CE2, 0x4CE3, 0x4CF5, 0x4D2D,\n    0x4D80, 0x4DE5, 0x4E53, 0x4EBF, 0x4F21, 0x4F6F, 0x4F9F, 0x4FB4,\n    0x4FBA, 0x4FB3, 0x4FA2, 0x4F88, 0x4F68, 0x4F44, 0x4F1E, 0x4EF9,\n    0x4E95, 0x4DD2, 0x4CDE, 0x4BE5, 0x4B16, 0x4A9E, 0x4AAC, 0x4B6D,\n    0x4D0F, 0x4FA4, 0x5303, 0x5706, 0x5B82, 0x6050, 0x6548, 0x6A42,\n    0x6F14, 0x7397, 0x77A3, 0x7B0F, 0x7DB2, 0x7F65, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x0000,\n};\n\n// 0x050114C8\nstatic const u16 eyerok_seg5_animindex_050114C8[] = {\n    0x0050, 0x0001, 0x0050, 0x0051, 0x0050, 0x00A1, 0x0001, 0x0000, 0x0001, 0x00F1, 0x0001, 0x0000,\n    0x0050, 0x0B01, 0x0050, 0x0B51, 0x0050, 0x0BA1,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0050, 0x0AB1,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0AB0,\n    0x0050, 0x050B, 0x0050, 0x055B, 0x0050, 0x05AB,\n    0x0001, 0x0322, 0x0001, 0x0323, 0x0050, 0x0324,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0050, 0x00F2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x09BF,\n    0x0050, 0x05FB, 0x0050, 0x064B, 0x0050, 0x069B,\n    0x0001, 0x0374, 0x0001, 0x0375, 0x0050, 0x0376,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0050, 0x0142,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x08CE,\n    0x0050, 0x06EB, 0x0050, 0x073B, 0x0050, 0x078B,\n    0x0001, 0x03C6, 0x0001, 0x03C7, 0x0050, 0x03C8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0050, 0x0192,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x08CD,\n    0x0050, 0x07DB, 0x0050, 0x082B, 0x0050, 0x087B,\n    0x0001, 0x0418, 0x0001, 0x0419, 0x0050, 0x041A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0050, 0x01E2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0050, 0x09C0, 0x0050, 0x0A10, 0x0050, 0x0A60,\n    0x0050, 0x08CF, 0x0050, 0x091F, 0x0050, 0x096F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x08CB, 0x0001, 0x08CC, 0x0001, 0x0000,\n    0x0001, 0x046A, 0x0050, 0x046B, 0x0050, 0x04BB,\n    0x0050, 0x0232, 0x0050, 0x0282, 0x0050, 0x02D2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x050116CC\nstatic const struct Animation eyerok_seg5_anim_050116CC = {\n    32,\n    0,\n    0,\n    0,\n    0x50,\n    ANIMINDEX_NUMPARTS(eyerok_seg5_animindex_050114C8),\n    eyerok_seg5_animvalue_0500FCE4,\n    eyerok_seg5_animindex_050114C8,\n    0,\n};\n"
  },
  {
    "path": "actors/eyerok/anims/data.inc.c",
    "content": "#include \"anim_0500D270.inc.c\"\n#include \"anim_0500DF50.inc.c\"\n#include \"anim_0500E1D8.inc.c\"\n#include \"anim_0500E99C.inc.c\"\n#include \"anim_0500F3D8.inc.c\"\n#include \"anim_0500F3F0.inc.c\"\n#include \"anim_0500FCCC.inc.c\"\n#include \"anim_050116CC.inc.c\"\n"
  },
  {
    "path": "actors/eyerok/anims/table.inc.c",
    "content": "// 0x050116E4\nconst struct Animation *const eyerok_seg5_anims_050116E4[] = {\n    &eyerok_seg5_anim_0500D270,\n    &eyerok_seg5_anim_0500DF50,\n    &eyerok_seg5_anim_0500E1D8,\n    &eyerok_seg5_anim_0500E99C,\n    &eyerok_seg5_anim_0500F3D8,\n    &eyerok_seg5_anim_0500FCCC,\n    &eyerok_seg5_anim_050116CC,\n    &eyerok_seg5_anim_0500F3F0,\n    NULL,\n};\n"
  },
  {
    "path": "actors/eyerok/geo.inc.c",
    "content": "// 0x0C0002AC\nconst GeoLayout eyerok_geo_0002AC[] = {\n    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 447, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, eyerok_seg5_dl_0500C640),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 281, 5, -419, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 400, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 401, 0, 0, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, eyerok_seg5_dl_0500BF00),\n                            GEO_CLOSE_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, eyerok_seg5_dl_0500C100),\n                        GEO_CLOSE_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, eyerok_seg5_dl_0500C378),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 281, 5, -218, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 400, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 401, 0, 0, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, eyerok_seg5_dl_0500BF00),\n                            GEO_CLOSE_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, eyerok_seg5_dl_0500C100),\n                        GEO_CLOSE_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, eyerok_seg5_dl_0500C378),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 281, 5, -18, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 400, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 401, 0, 0, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, eyerok_seg5_dl_0500BF00),\n                            GEO_CLOSE_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, eyerok_seg5_dl_0500C100),\n                        GEO_CLOSE_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, eyerok_seg5_dl_0500C378),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 281, 5, 180, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 400, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 401, 0, 0, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, eyerok_seg5_dl_0500BF00),\n                            GEO_CLOSE_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, eyerok_seg5_dl_0500C100),\n                        GEO_CLOSE_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, eyerok_seg5_dl_0500C378),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, eyerok_seg5_dl_0500C908),\n            GEO_OPEN_NODE(),\n                GEO_SWITCH_CASE(4, geo_switch_anim_state),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_ALPHA, eyerok_seg5_dl_0500C9B8),\n                    GEO_DISPLAY_LIST(LAYER_ALPHA, eyerok_seg5_dl_0500CA50),\n                    GEO_DISPLAY_LIST(LAYER_ALPHA, eyerok_seg5_dl_0500CAE8),\n                    GEO_DISPLAY_LIST(LAYER_ALPHA, eyerok_seg5_dl_0500CB80),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 181, 89, 80, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 199, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, eyerok_seg5_dl_0500BC88),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 200, 199, 199, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 336, 0, 0, NULL),\n                                GEO_OPEN_NODE(),\n                                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, eyerok_seg5_dl_0500B748),\n                                GEO_CLOSE_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, eyerok_seg5_dl_0500B9C0),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0C0005A8\nconst GeoLayout eyerok_left_hand_geo[] = {\n    GEO_SHADOW(SHADOW_SQUARE_SCALABLE, 0xB4, 300),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, eyerok_seg5_dl_0500CC18),\n            GEO_BRANCH(1, eyerok_geo_0002AC),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, eyerok_seg5_dl_0500CC30),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0C0005E4\nconst GeoLayout eyerok_right_hand_geo[] = {\n    GEO_SHADOW(SHADOW_SQUARE_SCALABLE, 0xB4, 300),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_BRANCH(1, eyerok_geo_0002AC),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/eyerok/model.inc.c",
    "content": "// Eyerok\n\n// Unreferenced light group\nUNUSED static const Lights1 eyerok_lights_unused = gdSPDefLights1(\n    0x3f, 0x2a, 0x16,\n    0xff, 0xa9, 0x5b, 0x28, 0x28, 0x28\n);\n\n// 0x05008D40\nALIGNED8 static const Texture eyerok_seg5_texture_05008D40[] = {\n#include \"actors/eyerok/eyerok_bricks.rgba16.inc.c\"\n};\n\n// 0x05009540\nALIGNED8 static const Texture eyerok_seg5_texture_05009540[] = {\n#include \"actors/eyerok/eyerok_eye_open.rgba16.inc.c\"\n};\n\n// 0x05009D40\nALIGNED8 static const Texture eyerok_seg5_texture_05009D40[] = {\n#include \"actors/eyerok/eyerok_eye_mostly_open.rgba16.inc.c\"\n};\n\n// 0x0500A540\nALIGNED8 static const Texture eyerok_seg5_texture_0500A540[] = {\n#include \"actors/eyerok/eyerok_eye_mostly_closed.rgba16.inc.c\"\n};\n\n// 0x0500AD40\nALIGNED8 static const Texture eyerok_seg5_texture_0500AD40[] = {\n#include \"actors/eyerok/eyerok_eye_closed.rgba16.inc.c\"\n};\n\n// 0x0500B540\nstatic const Lights1 eyerok_seg5_lights_0500B540 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0500B558\nstatic const Vtx eyerok_seg5_vertex_0500B558[] = {\n    {{{   348,    201,   -202}, 0, {     0,    -16}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   348,      0,   -202}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,      0,   -202}, 0, {  1702,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   348,      0,      0}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   348,    201,      0}, 0, {     0,    -16}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,    201,      0}, 0, {  1702,    -16}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,      0,      0}, 0, {  1702,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   348,    201,   -202}, 0, {     0,    -16}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   348,      0,      0}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   348,      0,   -202}, 0, {   990,    -16}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   348,    201,      0}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   348,    201,   -202}, 0, {     0,    -16}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    201,   -202}, 0, {  1702,    -16}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   348,    201,      0}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    201,      0}, 0, {  1702,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0500B648\nstatic const Vtx eyerok_seg5_vertex_0500B648[] = {\n    {{{   348,      0,   -202}, 0, {     0,    -16}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   348,      0,      0}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     0,      0,      0}, 0, {  1702,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     0,    201,   -202}, 0, {  1702,    -16}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   348,    201,   -202}, 0, {     0,    -16}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,      0,   -202}, 0, {  1702,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,      0,   -202}, 0, {  1702,    -16}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0500B6B8 - 0x0500B748\nconst Gfx eyerok_seg5_dl_0500B6B8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, eyerok_seg5_texture_05008D40),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&eyerok_seg5_lights_0500B540.l, 1),\n    gsSPLight(&eyerok_seg5_lights_0500B540.a, 2),\n    gsSPVertex(eyerok_seg5_vertex_0500B558, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(eyerok_seg5_vertex_0500B648, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500B748 - 0x0500B7B8\nconst Gfx eyerok_seg5_dl_0500B748[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(eyerok_seg5_dl_0500B6B8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500B7B8\nstatic const Lights1 eyerok_seg5_lights_0500B7B8 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0500B7D0\nstatic const Vtx eyerok_seg5_vertex_0500B7D0[] = {\n    {{{   339,    201,   -201}, 0, {  1708,    -16}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{   339,      0,   -202}, 0, {  1708,    990}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{     0,      0,   -202}, 0, {  3406,    990}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{     0,      0,      0}, 0, {  3406,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   339,      0,      0}, 0, {  1708,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,    201,      0}, 0, {  3406,    -16}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   339,    201,      0}, 0, {  1708,    -16}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,    201,   -201}, 0, {   -16,    -16}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,      0,   -202}, 0, {   990,    -16}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,    201,      0}, 0, {   -16,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,      0,      0}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   339,    201,   -201}, 0, {  1708,    -16}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    201,   -201}, 0, {  3406,    -16}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   339,    201,      0}, 0, {  1708,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    201,      0}, 0, {  3406,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0500B8C0\nstatic const Vtx eyerok_seg5_vertex_0500B8C0[] = {\n    {{{   339,      0,   -202}, 0, {  1708,    -16}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   339,      0,      0}, 0, {  1708,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     0,      0,      0}, 0, {  3406,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     0,    201,   -201}, 0, {  3406,    -16}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{   339,    201,   -201}, 0, {  1708,    -16}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{     0,      0,   -202}, 0, {  3406,    990}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{     0,      0,   -202}, 0, {  3406,    -16}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0500B930 - 0x0500B9C0\nconst Gfx eyerok_seg5_dl_0500B930[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, eyerok_seg5_texture_05008D40),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&eyerok_seg5_lights_0500B7B8.l, 1),\n    gsSPLight(&eyerok_seg5_lights_0500B7B8.a, 2),\n    gsSPVertex(eyerok_seg5_vertex_0500B7D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(eyerok_seg5_vertex_0500B8C0, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500B9C0 - 0x0500BA30\nconst Gfx eyerok_seg5_dl_0500B9C0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(eyerok_seg5_dl_0500B930),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500BA30\nstatic const Lights1 eyerok_seg5_lights_0500BA30 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0500BA48\nstatic const Vtx eyerok_seg5_vertex_0500BA48[] = {\n    {{{  -200,    200,   -100}, 0, { -1020,   -512}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -200,   -202,   -100}, 0, {   990,   -512}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -200,    200,    200}, 0, { -1020,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -200,   -202,   -100}, 0, {  5728,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -200,    200,   -100}, 0, {  5728,  -1022}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   202,   -202,   -100}, 0, {  3716,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   202,    200,   -100}, 0, {  3716,  -1022}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   202,   -202,    200}, 0, {  3716,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   202,    200,    200}, 0, {  3716,  -1022}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -200,   -202,    200}, 0, {  5728,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -200,    200,    200}, 0, {  5728,  -1022}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -200,   -202,   -100}, 0, {  5728,   -512}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   202,   -202,   -100}, 0, {  3716,   -512}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -200,   -202,    200}, 0, {  5728,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   202,   -202,    200}, 0, {  3716,    990}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0500BB38\nstatic const Vtx eyerok_seg5_vertex_0500BB38[] = {\n    {{{   202,    200,   -100}, 0, {     0,   -512}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   202,    200,    200}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   202,   -202,    200}, 0, {  1980,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -200,   -202,   -100}, 0, {   990,   -512}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -200,   -202,    200}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -200,    200,    200}, 0, { -1020,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   202,    200,   -100}, 0, {  3716,   -512}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -200,    200,   -100}, 0, {  5728,   -512}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   202,    200,    200}, 0, {  3716,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -200,    200,    200}, 0, {  5728,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   202,   -202,   -100}, 0, {  1980,   -512}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0500BBE8 - 0x0500BC88\nconst Gfx eyerok_seg5_dl_0500BBE8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, eyerok_seg5_texture_05008D40),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&eyerok_seg5_lights_0500BA30.l, 1),\n    gsSPLight(&eyerok_seg5_lights_0500BA30.a, 2),\n    gsSPVertex(eyerok_seg5_vertex_0500BA48, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(eyerok_seg5_vertex_0500BB38, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP1Triangle(10,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500BC88 - 0x0500BCF8\nconst Gfx eyerok_seg5_dl_0500BC88[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(eyerok_seg5_dl_0500BBE8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500BCF8\nstatic const Lights1 eyerok_seg5_lights_0500BCF8 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0500BD10\nstatic const Vtx eyerok_seg5_vertex_0500BD10[] = {\n    {{{   403,      0,    101}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   403,      0,   -100}, 0, {   -16,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   403,    201,    101}, 0, {   990,    -16}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,    201,    101}, 0, {   -34,    974}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   403,    201,    101}, 0, {  1978,    974}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    201,   -100}, 0, {   -34,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   403,    201,   -100}, 0, {  1978,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   403,      0,   -100}, 0, {  1978,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   403,      0,    101}, 0, {  1978,    974}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     0,      0,    101}, 0, {   -34,    974}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     0,      0,   -100}, 0, {   -34,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   403,      0,   -100}, 0, {  1982,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,      0,   -100}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   403,    201,   -100}, 0, {  1982,    -16}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,    201,   -100}, 0, {     0,    -16}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0500BE00\nstatic const Vtx eyerok_seg5_vertex_0500BE00[] = {\n    {{{   403,      0,    101}, 0, {  1982,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   403,    201,    101}, 0, {  1982,    -16}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,    201,    101}, 0, {     0,    -16}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   403,      0,   -100}, 0, {   -16,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   403,    201,   -100}, 0, {   -16,    -16}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   403,    201,    101}, 0, {   990,    -16}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,      0,    101}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0500BE70 - 0x0500BF00\nconst Gfx eyerok_seg5_dl_0500BE70[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, eyerok_seg5_texture_05008D40),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&eyerok_seg5_lights_0500BCF8.l, 1),\n    gsSPLight(&eyerok_seg5_lights_0500BCF8.a, 2),\n    gsSPVertex(eyerok_seg5_vertex_0500BD10, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(eyerok_seg5_vertex_0500BE00, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500BF00 - 0x0500BF70\nconst Gfx eyerok_seg5_dl_0500BF00[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(eyerok_seg5_dl_0500BE70),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500BF70\nstatic const Lights1 eyerok_seg5_lights_0500BF70 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0500BF88\nstatic const Vtx eyerok_seg5_vertex_0500BF88[] = {\n    {{{     1,      0,    101}, 0, {   -16,  -1024}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   405,      0,    101}, 0, {   -16,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     1,    201,    101}, 0, {   990,  -1024}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     1,      0,   -100}, 0, {   -16,  -1024}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   405,      0,   -100}, 0, {   -16,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     1,      0,    101}, 0, {   990,  -1024}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   405,      0,    101}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     1,    201,    101}, 0, {   990,  -1024}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   405,    201,    101}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     1,    201,   -100}, 0, {   -16,  -1024}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   405,    201,   -100}, 0, {   -16,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   405,      0,   -100}, 0, {   -16,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     1,      0,   -100}, 0, {   -16,  -1024}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   405,    201,   -100}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     1,    201,   -100}, 0, {   990,  -1024}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   405,    201,    101}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0500C088 - 0x0500C100\nconst Gfx eyerok_seg5_dl_0500C088[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, eyerok_seg5_texture_05008D40),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&eyerok_seg5_lights_0500BF70.l, 1),\n    gsSPLight(&eyerok_seg5_lights_0500BF70.a, 2),\n    gsSPVertex(eyerok_seg5_vertex_0500BF88, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0,  1, 15,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500C100 - 0x0500C170\nconst Gfx eyerok_seg5_dl_0500C100[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(eyerok_seg5_dl_0500C088),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500C170\nstatic const Lights1 eyerok_seg5_lights_0500C170 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0500C188\nstatic const Vtx eyerok_seg5_vertex_0500C188[] = {\n    {{{   403,      0,   -100}, 0, {   986,    -16}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   403,      0,    101}, 0, {   986,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     0,      0,    101}, 0, { -1024,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     0,    201,    101}, 0, { -1024,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   403,    201,    101}, 0, {   988,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    201,   -100}, 0, { -1024,    -16}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   403,    201,   -100}, 0, {   988,    -16}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,      0,   -100}, 0, {   990,    -16}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,      0,    101}, 0, {   -16,    -16}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,    201,   -100}, 0, {   990,  -1022}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,    201,    101}, 0, {   -16,  -1022}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   403,      0,   -100}, 0, {   990,    -16}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,      0,   -100}, 0, { -1022,    -16}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   403,    201,   -100}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,    201,   -100}, 0, { -1022,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0500C278\nstatic const Vtx eyerok_seg5_vertex_0500C278[] = {\n    {{{   403,      0,    101}, 0, {     0,    -16}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   403,    201,    101}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,    201,    101}, 0, {  1982,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,      0,   -100}, 0, { -1024,    -16}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   403,      0,   -100}, 0, {   986,    -16}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     0,      0,    101}, 0, { -1024,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     0,      0,    101}, 0, {  1982,    -16}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0500C2E8 - 0x0500C378\nconst Gfx eyerok_seg5_dl_0500C2E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, eyerok_seg5_texture_05008D40),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&eyerok_seg5_lights_0500C170.l, 1),\n    gsSPLight(&eyerok_seg5_lights_0500C170.a, 2),\n    gsSPVertex(eyerok_seg5_vertex_0500C188, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(eyerok_seg5_vertex_0500C278, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500C378 - 0x0500C3E8\nconst Gfx eyerok_seg5_dl_0500C378[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(eyerok_seg5_dl_0500C2E8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500C3E8\nstatic const Lights1 eyerok_seg5_lights_0500C3E8 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0500C400\nstatic const Vtx eyerok_seg5_vertex_0500C400[] = {\n    {{{   464,     12,   -523}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    -3,     -2,   -523}, 0, {  2306,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   330,    409,   -523}, 0, {   576,   1966}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    -3,     -2,   -523}, 0, {  2304,  -3034}, {0x03, 0x82, 0x00, 0xff}}},\n    {{{   464,     12,   -523}, 0, {     0,  -3034}, {0x03, 0x82, 0x00, 0xff}}},\n    {{{    -3,     -2,    282}, 0, {  2304,    990}, {0x03, 0x82, 0x00, 0xff}}},\n    {{{   464,     12,    282}, 0, {     0,    990}, {0x03, 0x82, 0x00, 0xff}}},\n    {{{   -16,    398,    282}, 0, {  2368,    990}, {0xfc, 0x7e, 0x00, 0xff}}},\n    {{{   330,    409,    282}, 0, {   640,    990}, {0xfc, 0x7e, 0x00, 0xff}}},\n    {{{   -16,    398,   -523}, 0, {  2368,  -3034}, {0xfc, 0x7e, 0x00, 0xff}}},\n    {{{   330,    409,   -523}, 0, {   640,  -3034}, {0xfc, 0x7e, 0x00, 0xff}}},\n    {{{    -3,     -2,   -523}, 0, { -3032,    -50}, {0x82, 0xfc, 0x00, 0xff}}},\n    {{{    -3,     -2,    282}, 0, {   990,    -50}, {0x82, 0xfc, 0x00, 0xff}}},\n    {{{   -16,    398,   -523}, 0, { -3032,   1948}, {0x82, 0xfc, 0x00, 0xff}}},\n    {{{   -16,    398,    282}, 0, {   990,   1948}, {0x82, 0xfc, 0x00, 0xff}}},\n};\n\n// 0x0500C4F0\nstatic const Vtx eyerok_seg5_vertex_0500C4F0[] = {\n    {{{   464,     12,    282}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   330,    409,    282}, 0, {   576,   1966}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -16,    398,    282}, 0, {  2306,   1966}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -3,     -2,   -523}, 0, {  2306,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -16,    398,   -523}, 0, {  2306,   1966}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   330,    409,   -523}, 0, {   576,   1966}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   464,     12,    282}, 0, {   990,      0}, {0x78, 0x28, 0x00, 0xff}}},\n    {{{   464,     12,   -523}, 0, { -3032,      0}, {0x78, 0x28, 0x00, 0xff}}},\n    {{{   330,    409,    282}, 0, {   990,   1946}, {0x78, 0x28, 0x00, 0xff}}},\n    {{{   330,    409,   -523}, 0, { -3032,   1946}, {0x78, 0x28, 0x00, 0xff}}},\n    {{{    -3,     -2,    282}, 0, {  2306,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0500C5A0 - 0x0500C640\nconst Gfx eyerok_seg5_dl_0500C5A0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, eyerok_seg5_texture_05008D40),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&eyerok_seg5_lights_0500C3E8.l, 1),\n    gsSPLight(&eyerok_seg5_lights_0500C3E8.a, 2),\n    gsSPVertex(eyerok_seg5_vertex_0500C400, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(eyerok_seg5_vertex_0500C4F0, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP1Triangle(10,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500C640 - 0x0500C6B0\nconst Gfx eyerok_seg5_dl_0500C640[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(eyerok_seg5_dl_0500C5A0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500C6B0\nstatic const Lights1 eyerok_seg5_lights_0500C6B0 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0500C6C8\nstatic const Vtx eyerok_seg5_vertex_0500C6C8[] = {\n    {{{   273,    357,    281}, 0, {  2306,   1978}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -89,    181,    281}, 0, {  4318,   1978}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    86,   -181,    281}, 0, {  4318,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    86,   -181,   -522}, 0, {  4316,  -3022}, {0x37, 0x8e, 0x00, 0xff}}},\n    {{{   449,     -5,    281}, 0, {  2304,    990}, {0x37, 0x8e, 0x00, 0xff}}},\n    {{{    86,   -181,    281}, 0, {  4316,    990}, {0x37, 0x8e, 0x00, 0xff}}},\n    {{{   449,     -5,   -522}, 0, {  2304,  -3022}, {0x37, 0x8e, 0x00, 0xff}}},\n    {{{   -89,    181,    281}, 0, {  4380,    990}, {0xc9, 0x72, 0x00, 0xff}}},\n    {{{   273,    357,   -522}, 0, {  2370,  -3022}, {0xc9, 0x72, 0x00, 0xff}}},\n    {{{   -89,    181,   -522}, 0, {  4380,  -3022}, {0xc9, 0x72, 0x00, 0xff}}},\n    {{{   273,    357,    281}, 0, {  2370,    990}, {0xc9, 0x72, 0x00, 0xff}}},\n    {{{   -89,    181,    281}, 0, {     0,    990}, {0x8e, 0xc9, 0x00, 0xff}}},\n    {{{    86,   -181,   -522}, 0, {  3980,  -1022}, {0x8e, 0xc9, 0x00, 0xff}}},\n    {{{    86,   -181,    281}, 0, {     0,  -1022}, {0x8e, 0xc9, 0x00, 0xff}}},\n    {{{   -89,    181,   -522}, 0, {  3980,    990}, {0x8e, 0xc9, 0x00, 0xff}}},\n};\n\n// 0x0500C7B8\nstatic const Vtx eyerok_seg5_vertex_0500C7B8[] = {\n    {{{   -89,    181,   -522}, 0, {  4318,   1978}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   273,    357,   -522}, 0, {  2306,   1978}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   449,     -5,   -522}, 0, {  2306,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   273,    357,    281}, 0, {  2306,   1978}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    86,   -181,    281}, 0, {  4318,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   449,     -5,    281}, 0, {  2306,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   273,    357,   -522}, 0, { -3020,    990}, {0x72, 0x37, 0x00, 0xff}}},\n    {{{   449,     -5,    281}, 0, {   990,  -1056}, {0x72, 0x37, 0x00, 0xff}}},\n    {{{   449,     -5,   -522}, 0, { -3020,  -1056}, {0x72, 0x37, 0x00, 0xff}}},\n    {{{   273,    357,    281}, 0, {   990,    990}, {0x72, 0x37, 0x00, 0xff}}},\n    {{{    86,   -181,   -522}, 0, {  4318,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0500C868 - 0x0500C908\nconst Gfx eyerok_seg5_dl_0500C868[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, eyerok_seg5_texture_05008D40),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&eyerok_seg5_lights_0500C6B0.l, 1),\n    gsSPLight(&eyerok_seg5_lights_0500C6B0.a, 2),\n    gsSPVertex(eyerok_seg5_vertex_0500C6C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(eyerok_seg5_vertex_0500C7B8, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP1Triangle( 0,  2, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500C908 - 0x0500C978\nconst Gfx eyerok_seg5_dl_0500C908[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(eyerok_seg5_dl_0500C868),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500C978\nstatic const Vtx eyerok_seg5_vertex_0500C978[] = {\n    {{{   212,    365,     63}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   212,    365,   -255}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -73,    190,   -255}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -73,    190,     63}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500C9B8 - 0x0500CA50\nconst Gfx eyerok_seg5_dl_0500C9B8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, eyerok_seg5_texture_05009540),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(eyerok_seg5_vertex_0500C978, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500CA50 - 0x0500CAE8\nconst Gfx eyerok_seg5_dl_0500CA50[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, eyerok_seg5_texture_05009D40),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(eyerok_seg5_vertex_0500C978, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500CAE8 - 0x0500CB80\nconst Gfx eyerok_seg5_dl_0500CAE8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, eyerok_seg5_texture_0500A540),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(eyerok_seg5_vertex_0500C978, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500CB80 - 0x0500CC18\nconst Gfx eyerok_seg5_dl_0500CB80[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, eyerok_seg5_texture_0500AD40),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(eyerok_seg5_vertex_0500C978, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500CC18 - 0x0500CC30\nconst Gfx eyerok_seg5_dl_0500CC18[] = {\n    gsSPGeometryMode(G_CULL_BACK, G_CULL_FRONT),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500CC30 - 0x0500CC48\nconst Gfx eyerok_seg5_dl_0500CC30[] = {\n    gsSPGeometryMode(G_CULL_FRONT, G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/flame/geo.inc.c",
    "content": "// 0x16000B10\nconst GeoLayout red_flame_shadow_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x50, 20),\n    GEO_OPEN_NODE(),\n        GEO_BRANCH_AND_LINK(red_flame_geo),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x16000B2C\nconst GeoLayout red_flame_geo[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_SWITCH_CASE(8, geo_switch_anim_state),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, flame_seg3_dl_0301B3B0),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, flame_seg3_dl_0301B3C8),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, flame_seg3_dl_0301B3E0),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, flame_seg3_dl_0301B3F8),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, flame_seg3_dl_0301B410),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, flame_seg3_dl_0301B428),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, flame_seg3_dl_0301B440),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, flame_seg3_dl_0301B458),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x16000B8C\nconst GeoLayout blue_flame_geo[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_SWITCH_CASE(8, geo_switch_anim_state),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, flame_seg3_dl_0301B500),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, flame_seg3_dl_0301B518),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, flame_seg3_dl_0301B530),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, flame_seg3_dl_0301B548),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, flame_seg3_dl_0301B560),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, flame_seg3_dl_0301B578),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, flame_seg3_dl_0301B590),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, flame_seg3_dl_0301B5A8),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/flame/model.inc.c",
    "content": "// Flame\n\n// 0x030172E0\nstatic const Vtx flame_seg3_vertex_030172E0[] = {\n    {{{   -25,    -25,      0}, 0, {     0,    992}, {0x00, 0x00, 0x00, 0x00}}},\n    {{{    25,    -25,      0}, 0, {   992,    992}, {0x00, 0x00, 0x00, 0x00}}},\n    {{{    25,     25,      0}, 0, {   992,      0}, {0x00, 0x00, 0x00, 0x00}}},\n    {{{   -25,     25,      0}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0x00}}},\n};\n\n// 0x03017320\nALIGNED8 static const Texture flame_seg3_texture_03017320[] = {\n#include \"actors/flame/flame_0.ia16.inc.c\"\n};\n\n// 0x03017B20\nALIGNED8 static const Texture flame_seg3_texture_03017B20[] = {\n#include \"actors/flame/flame_1.ia16.inc.c\"\n};\n\n// 0x03018320\nALIGNED8 static const Texture flame_seg3_texture_03018320[] = {\n#include \"actors/flame/flame_2.ia16.inc.c\"\n};\n\n// 0x03018B20\nALIGNED8 static const Texture flame_seg3_texture_03018B20[] = {\n#include \"actors/flame/flame_3.ia16.inc.c\"\n};\n\n// 0x03019320\nALIGNED8 static const Texture flame_seg3_texture_03019320[] = {\n#include \"actors/flame/flame_4.ia16.inc.c\"\n};\n\n// 0x03019B20\nALIGNED8 static const Texture flame_seg3_texture_03019B20[] = {\n#include \"actors/flame/flame_5.ia16.inc.c\"\n};\n\n// 0x0301A320\nALIGNED8 static const Texture flame_seg3_texture_0301A320[] = {\n#include \"actors/flame/flame_6.ia16.inc.c\"\n};\n\n// 0x0301AB20\nALIGNED8 static const Texture flame_seg3_texture_0301AB20[] = {\n#include \"actors/flame/flame_7.ia16.inc.c\"\n};\n\n// 0x0301B320 - 0x0301B3B0\nconst Gfx flame_seg3_dl_0301B320[] = {\n    gsSPClearGeometryMode(G_LIGHTING | G_SHADING_SMOOTH),\n    gsDPSetEnvColor(255, 50, 0, 200),\n    gsDPSetCombineMode(G_CC_FADEA, G_CC_FADEA),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsSPVertex(flame_seg3_vertex_030172E0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_LIGHTING | G_SHADING_SMOOTH),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0301B3B0 - 0x0301B3C8\nconst Gfx flame_seg3_dl_0301B3B0[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, flame_seg3_texture_03017320),\n    gsSPBranchList(flame_seg3_dl_0301B320),\n};\n\n// 0x0301B3C8 - 0x0301B3E0\nconst Gfx flame_seg3_dl_0301B3C8[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, flame_seg3_texture_03017B20),\n    gsSPBranchList(flame_seg3_dl_0301B320),\n};\n\n// 0x0301B3E0 - 0x0301B3F8\nconst Gfx flame_seg3_dl_0301B3E0[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, flame_seg3_texture_03018320),\n    gsSPBranchList(flame_seg3_dl_0301B320),\n};\n\n// 0x0301B3F8 - 0x0301B410\nconst Gfx flame_seg3_dl_0301B3F8[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, flame_seg3_texture_03018B20),\n    gsSPBranchList(flame_seg3_dl_0301B320),\n};\n\n// 0x0301B410 - 0x0301B428\nconst Gfx flame_seg3_dl_0301B410[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, flame_seg3_texture_03019320),\n    gsSPBranchList(flame_seg3_dl_0301B320),\n};\n\n// 0x0301B428 - 0x0301B440\nconst Gfx flame_seg3_dl_0301B428[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, flame_seg3_texture_03019B20),\n    gsSPBranchList(flame_seg3_dl_0301B320),\n};\n\n// 0x0301B440 - 0x0301B458\nconst Gfx flame_seg3_dl_0301B440[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, flame_seg3_texture_0301A320),\n    gsSPBranchList(flame_seg3_dl_0301B320),\n};\n\n// 0x0301B458 - 0x0301B470\nconst Gfx flame_seg3_dl_0301B458[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, flame_seg3_texture_0301AB20),\n    gsSPBranchList(flame_seg3_dl_0301B320),\n};\n\n// 0x0301B470 - 0x0301B500\nconst Gfx flame_seg3_dl_0301B470[] = {\n    gsSPClearGeometryMode(G_LIGHTING | G_SHADING_SMOOTH),\n    gsDPSetEnvColor(100, 100, 255, 255),\n    gsDPSetCombineMode(G_CC_FADEA, G_CC_FADEA),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsSPVertex(flame_seg3_vertex_030172E0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_LIGHTING | G_SHADING_SMOOTH),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0301B500 - 0x0301B518\nconst Gfx flame_seg3_dl_0301B500[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, flame_seg3_texture_03017320),\n    gsSPBranchList(flame_seg3_dl_0301B470),\n};\n\n// 0x0301B518 - 0x0301B530\nconst Gfx flame_seg3_dl_0301B518[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, flame_seg3_texture_03017B20),\n    gsSPBranchList(flame_seg3_dl_0301B470),\n};\n\n// 0x0301B530 - 0x0301B548\nconst Gfx flame_seg3_dl_0301B530[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, flame_seg3_texture_03018320),\n    gsSPBranchList(flame_seg3_dl_0301B470),\n};\n\n// 0x0301B548 - 0x0301B560\nconst Gfx flame_seg3_dl_0301B548[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, flame_seg3_texture_03018B20),\n    gsSPBranchList(flame_seg3_dl_0301B470),\n};\n\n// 0x0301B560 - 0x0301B578\nconst Gfx flame_seg3_dl_0301B560[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, flame_seg3_texture_03019320),\n    gsSPBranchList(flame_seg3_dl_0301B470),\n};\n\n// 0x0301B578 - 0x0301B590\nconst Gfx flame_seg3_dl_0301B578[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, flame_seg3_texture_03019B20),\n    gsSPBranchList(flame_seg3_dl_0301B470),\n};\n\n// 0x0301B590 - 0x0301B5A8\nconst Gfx flame_seg3_dl_0301B590[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, flame_seg3_texture_0301A320),\n    gsSPBranchList(flame_seg3_dl_0301B470),\n};\n\n// 0x0301B5A8 - 0x0301B5C0\nconst Gfx flame_seg3_dl_0301B5A8[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, flame_seg3_texture_0301AB20),\n    gsSPBranchList(flame_seg3_dl_0301B470),\n};\n"
  },
  {
    "path": "actors/flyguy/anims/anim_08011A4C.inc.c",
    "content": "// 0x08011798\nstatic const s16 flyguy_seg8_animvalue_08011798[] = {\n    0x0000, 0x0050, 0x0050, 0x004F, 0x004F, 0x004E, 0x004D, 0x004C,\n    0x004B, 0x004A, 0x0048, 0x0047, 0x0046, 0x0044, 0x0043, 0x0042,\n    0x0040, 0x003F, 0x003E, 0x003D, 0x003D, 0x003C, 0x003C, 0x003C,\n    0x003C, 0x003C, 0x003D, 0x003D, 0x003E, 0x003F, 0x0040, 0x0041,\n    0x0042, 0x0044, 0x0045, 0x0046, 0x0048, 0x0049, 0x004A, 0x004B,\n    0x004C, 0x004D, 0x004E, 0x004F, 0x004F, 0x0050, 0x0050, 0x3C20,\n    0x3FFF, 0x3C20, 0x9460, 0x9463, 0x946C, 0x947A, 0x948C, 0x94A4,\n    0x94C0, 0x94E0, 0x9505, 0x952D, 0x9558, 0x9587, 0x95B8, 0x95EC,\n    0x9623, 0x965B, 0x9696, 0x96D2, 0x970F, 0x974D, 0x978C, 0x97CB,\n    0x980B, 0x985A, 0x98C3, 0x9940, 0x99CB, 0x9A5D, 0x9AF1, 0x9B80,\n    0x9C04, 0x9C76, 0x9CD1, 0x9D0D, 0x9D26, 0x9D14, 0x9CB5, 0x9BF8,\n    0x9AF7, 0x99C9, 0x9887, 0x9749, 0x9628, 0x953B, 0x949B, 0x9460,\n    0x93F8, 0x93FC, 0x9407, 0x941A, 0x9433, 0x9452, 0x9477, 0x94A1,\n    0x94D0, 0x9504, 0x953B, 0x9576, 0x95B5, 0x95F6, 0x9639, 0x967E,\n    0x96C5, 0x970D, 0x9755, 0x979D, 0x97E6, 0x982D, 0x9873, 0x98C8,\n    0x9936, 0x99B8, 0x9A46, 0x9ADC, 0x9B71, 0x9C01, 0x9C84, 0x9CF5,\n    0x9D4C, 0x9D84, 0x9D96, 0x9D7D, 0x9D10, 0x9C40, 0x9B25, 0x99DB,\n    0x987C, 0x9722, 0x95E7, 0x94E6, 0x9438, 0x93F8, 0x0000, 0x425E,\n    0xBDA2, 0x0000, 0xBDA2, 0x425E, 0x0000, 0x425E, 0xBDA2, 0x0000,\n    0xBDA2, 0x425E, 0x0000, 0x425E, 0xBDA2, 0x0000, 0xBDA2, 0x425E,\n    0x0000, 0x425E, 0xBDA2, 0x0000, 0xBDA2, 0x425E, 0x0000, 0x425E,\n    0xBDA2, 0x0000, 0xBDA2, 0x425E, 0x0000, 0x425E, 0xBDA2, 0x0000,\n    0xBDA2, 0x425E, 0x0000, 0x425E, 0xBDA2, 0x0000, 0xBDA2, 0x425E,\n    0x0000, 0x425E, 0xBDA2, 0x0000, 0x3FFF, 0x0000, 0x425E, 0xBDA2,\n    0x0000, 0xBDA2, 0x425E, 0x0000, 0x425E, 0xBDA2, 0x0000, 0xBDA2,\n    0x425E, 0x0000, 0x425E, 0xBDA2, 0x0000, 0xBDA2, 0x425E, 0x0000,\n    0x425E, 0xBDA2, 0x0000, 0xBDA2, 0x425E, 0x0000, 0x425E, 0xBDA2,\n    0x0000, 0xBDA2, 0x425E, 0x0000, 0x425E, 0xBDA2, 0x0000, 0xBDA2,\n    0x425E, 0x0000, 0x425E, 0xBDA2, 0x0000, 0xBDA2, 0x425E, 0x0000,\n    0x425E, 0xBDA2, 0x0000, 0x3FFF, 0xC001, 0xC001, 0xC001, 0x3841,\n    0x3857, 0x3896, 0x38FA, 0x397F, 0x3A21, 0x3ADC, 0x3BAB, 0x3C8A,\n    0x3D76, 0x3E6A, 0x3F63, 0x405B, 0x414F, 0x423B, 0x431A, 0x43E9,\n    0x44A4, 0x4546, 0x45CB, 0x462F, 0x466E, 0x4684, 0x4670, 0x4636,\n    0x45DA, 0x455F, 0x44C9, 0x441C, 0x435B, 0x428A, 0x41AC, 0x40C6,\n    0x3FDA, 0x3EEC, 0x3DFF, 0x3D19, 0x3C3B, 0x3B6A, 0x3AA9, 0x39FC,\n    0x3966, 0x38EB, 0x388F, 0x3855, 0x3841, 0x0000,\n};\n\n// 0x080119D4\nstatic const u16 flyguy_seg8_animindex_080119D4[] = {\n    0x0001, 0x0000, 0x002E, 0x0001, 0x0001, 0x0000, 0x0001, 0x002F, 0x0001, 0x0030, 0x0001, 0x0031,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002E, 0x00EF,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00EE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002E, 0x0032,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00ED,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002E, 0x0060,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00EC,\n    0x002E, 0x00BD, 0x0001, 0x0000, 0x0001, 0x00EB,\n    0x002E, 0x008E, 0x0001, 0x0000, 0x0001, 0x00BC,\n};\n\n// 0x08011A4C\nstatic const struct Animation flyguy_seg8_anim_08011A4C = {\n    0,\n    0,\n    0,\n    0,\n    0x2E,\n    ANIMINDEX_NUMPARTS(flyguy_seg8_animindex_080119D4),\n    flyguy_seg8_animvalue_08011798,\n    flyguy_seg8_animindex_080119D4,\n    0,\n};\n"
  },
  {
    "path": "actors/flyguy/anims/data.inc.c",
    "content": "#include \"anim_08011A4C.inc.c\"\n"
  },
  {
    "path": "actors/flyguy/anims/table.inc.c",
    "content": "// 0x08011A64\nconst struct Animation *const flyguy_seg8_anims_08011A64[] = {\n    &flyguy_seg8_anim_08011A4C,\n    NULL,\n    NULL,\n};\n"
  },
  {
    "path": "actors/flyguy/geo.inc.c",
    "content": "// 0x0F000518\nconst GeoLayout flyguy_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 100),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, flyguy_seg8_dl_08011710),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -45, -20, -55, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, flyguy_seg8_dl_08010840),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -45, -20, 55, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, flyguy_seg8_dl_08010968),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 250, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, flyguy_seg8_dl_08010B80),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/flyguy/model.inc.c",
    "content": "// Flyguy\n\n// ???\nUNUSED static const u64 flyguy_unused_1 = 0;\n\n// 0x0800E088\nALIGNED8 static const Texture flyguy_seg8_texture_0800E088[] = {\n#include \"actors/flyguy/flyguy_cloth_wrinkle.rgba16.inc.c\"\n};\n\n// 0x0800F088\nALIGNED8 static const Texture flyguy_seg8_texture_0800F088[] = {\n#include \"actors/flyguy/flyguy_face.rgba16.inc.c\"\n};\n\n// 0x0800F888\nALIGNED8 static const Texture flyguy_seg8_texture_0800F888[] = {\n#include \"actors/flyguy/flyguy_propeller.ia16.inc.c\"\n};\n\n// Unreferenced light group\nUNUSED static const Lights1 flyguy_lights_unused1 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x080100A0\nstatic const Lights1 flyguy_seg8_lights_080100A0 = gdSPDefLights1(\n    0x00, 0x1f, 0x33,\n    0x02, 0x7f, 0xcc, 0x28, 0x28, 0x28\n);\n\n// 0x080100B8\nstatic const Lights1 flyguy_seg8_lights_080100B8 = gdSPDefLights1(\n    0x3f, 0x32, 0x08,\n    0xff, 0xc8, 0x23, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 flyguy_lights_unused2 = gdSPDefLights1(\n    0x3a, 0x2f, 0x04,\n    0xe8, 0xbd, 0x13, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 flyguy_lights_unused3 = gdSPDefLights1(\n    0x2c, 0x00, 0x00,\n    0xb2, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 flyguy_lights_unused4 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 flyguy_lights_unused5 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x08010130\nstatic const Vtx flyguy_seg8_vertex_08010130[] = {\n    {{{    83,    -22,     14}, 0, {     0,      0}, {0x08, 0x8d, 0x33, 0x00}}},\n    {{{    83,      1,     40}, 0, {     0,      0}, {0x29, 0xca, 0x6b, 0x00}}},\n    {{{     5,     18,     30}, 0, {     0,      0}, {0xca, 0xba, 0x5a, 0x00}}},\n    {{{    83,    -22,    -14}, 0, {     0,      0}, {0x08, 0x8d, 0xcd, 0xff}}},\n    {{{     3,      3,      0}, 0, {     0,      0}, {0xca, 0x8e, 0x00, 0xff}}},\n    {{{     5,     18,    -30}, 0, {     0,      0}, {0xca, 0xba, 0xa6, 0xff}}},\n    {{{    82,     19,    -44}, 0, {     0,      0}, {0x16, 0x7c, 0x00, 0xff}}},\n    {{{     8,     31,    -34}, 0, {     0,      0}, {0x1a, 0x7c, 0x00, 0xff}}},\n    {{{     8,     31,     34}, 0, {     0,      0}, {0x1a, 0x7c, 0x00, 0xff}}},\n    {{{    82,     19,     44}, 0, {     0,      0}, {0x16, 0x7c, 0x00, 0xff}}},\n    {{{   -24,     40,      0}, 0, {     0,      0}, {0x1f, 0x7b, 0x00, 0xff}}},\n    {{{    83,      1,    -40}, 0, {     0,      0}, {0x29, 0xca, 0x95, 0xff}}},\n    {{{    82,     19,    -44}, 0, {     0,      0}, {0x24, 0xe5, 0x8a, 0xff}}},\n    {{{   107,     14,    -20}, 0, {     0,      0}, {0x6a, 0xeb, 0xbf, 0xff}}},\n    {{{   107,     14,     20}, 0, {     0,      0}, {0x6a, 0xeb, 0x41, 0xff}}},\n    {{{    82,     19,     44}, 0, {     0,      0}, {0x24, 0xe5, 0x76, 0xff}}},\n};\n\n// 0x08010230\nstatic const Vtx flyguy_seg8_vertex_08010230[] = {\n    {{{    82,     19,     44}, 0, {     0,      0}, {0x16, 0x7c, 0x00, 0xff}}},\n    {{{   107,     14,     20}, 0, {     0,      0}, {0x18, 0x7c, 0x00, 0x00}}},\n    {{{   107,     14,    -20}, 0, {     0,      0}, {0x18, 0x7c, 0x00, 0x00}}},\n    {{{    82,     19,    -44}, 0, {     0,      0}, {0x16, 0x7c, 0x00, 0xff}}},\n    {{{    83,      1,     40}, 0, {     0,      0}, {0x29, 0xca, 0x6b, 0xff}}},\n    {{{   103,     -2,     20}, 0, {     0,      0}, {0x65, 0xc5, 0x2f, 0xff}}},\n    {{{   107,     14,     20}, 0, {     0,      0}, {0x6a, 0xeb, 0x41, 0xff}}},\n    {{{    83,    -22,    -14}, 0, {     0,      0}, {0x08, 0x8d, 0xcd, 0xff}}},\n    {{{   103,     -2,    -20}, 0, {     0,      0}, {0x65, 0xc5, 0xd1, 0xff}}},\n    {{{    83,    -22,     14}, 0, {     0,      0}, {0x08, 0x8d, 0x33, 0xff}}},\n    {{{   107,     14,    -20}, 0, {     0,      0}, {0x6a, 0xeb, 0xbf, 0xff}}},\n    {{{    83,      1,    -40}, 0, {     0,      0}, {0x29, 0xca, 0x95, 0xff}}},\n    {{{     8,     31,     34}, 0, {     0,      0}, {0xc6, 0xf2, 0x70, 0xff}}},\n    {{{   -24,     40,      0}, 0, {     0,      0}, {0xa8, 0x04, 0x5a, 0xff}}},\n    {{{   -27,     23,      0}, 0, {     0,      0}, {0x95, 0xbe, 0x00, 0xff}}},\n    {{{     5,     18,     30}, 0, {     0,      0}, {0xca, 0xba, 0x5a, 0xff}}},\n};\n\n// 0x08010330\nstatic const Vtx flyguy_seg8_vertex_08010330[] = {\n    {{{     5,     18,     30}, 0, {     0,      0}, {0xca, 0xba, 0x5a, 0xff}}},\n    {{{     3,      3,      0}, 0, {     0,      0}, {0xca, 0x8e, 0x00, 0x00}}},\n    {{{    83,    -22,     14}, 0, {     0,      0}, {0x08, 0x8d, 0x33, 0x00}}},\n    {{{    83,      1,    -40}, 0, {     0,      0}, {0x29, 0xca, 0x95, 0xff}}},\n    {{{    83,    -22,    -14}, 0, {     0,      0}, {0x08, 0x8d, 0xcd, 0xff}}},\n    {{{     5,     18,    -30}, 0, {     0,      0}, {0xca, 0xba, 0xa6, 0xff}}},\n    {{{   103,     -2,     20}, 0, {     0,      0}, {0x65, 0xc5, 0x2f, 0xff}}},\n    {{{    83,      1,     40}, 0, {     0,      0}, {0x29, 0xca, 0x6b, 0xff}}},\n    {{{   103,     -2,    -20}, 0, {     0,      0}, {0x65, 0xc5, 0xd1, 0xff}}},\n    {{{   -27,     23,      0}, 0, {     0,      0}, {0x95, 0xbe, 0x00, 0xff}}},\n    {{{    82,     19,     44}, 0, {     0,      0}, {0x24, 0xe5, 0x76, 0xff}}},\n    {{{     8,     31,     34}, 0, {     0,      0}, {0xc6, 0xf2, 0x70, 0xff}}},\n    {{{     8,     31,    -34}, 0, {     0,      0}, {0xc6, 0xf2, 0x90, 0xff}}},\n    {{{    82,     19,    -44}, 0, {     0,      0}, {0x24, 0xe5, 0x8a, 0xff}}},\n    {{{   -24,     40,      0}, 0, {     0,      0}, {0xa8, 0x04, 0xa6, 0xff}}},\n    {{{   107,     14,    -20}, 0, {     0,      0}, {0x6a, 0xeb, 0xbf, 0xff}}},\n};\n\n// 0x08010430\nstatic const Vtx flyguy_seg8_vertex_08010430[] = {\n    {{{   103,     -2,     20}, 0, {     0,      0}, {0x65, 0xc5, 0x2f, 0xff}}},\n    {{{   107,     14,    -20}, 0, {     0,      0}, {0x6a, 0xeb, 0xbf, 0x00}}},\n    {{{   107,     14,     20}, 0, {     0,      0}, {0x6a, 0xeb, 0x41, 0x00}}},\n};\n\n// 0x08010460\nstatic const Vtx flyguy_seg8_vertex_08010460[] = {\n    {{{   107,     14,    -20}, 0, {     0,      0}, {0x6a, 0xeb, 0xbf, 0x00}}},\n    {{{   107,     14,     20}, 0, {     0,      0}, {0x6a, 0xeb, 0x41, 0x00}}},\n    {{{   103,     -2,     20}, 0, {     0,      0}, {0x65, 0xc5, 0x2f, 0x00}}},\n    {{{   103,     -2,    -20}, 0, {     0,      0}, {0x65, 0xc5, 0xd1, 0xff}}},\n    {{{   -27,     23,      0}, 0, {     0,      0}, {0x95, 0xbe, 0x00, 0xff}}},\n    {{{     5,     18,     30}, 0, {     0,      0}, {0xca, 0xba, 0x5a, 0xff}}},\n    {{{     8,     31,     34}, 0, {     0,      0}, {0xc6, 0xf2, 0x70, 0xff}}},\n    {{{   -24,     40,      0}, 0, {     0,      0}, {0xa8, 0x04, 0x5a, 0xff}}},\n    {{{    83,    -22,    -14}, 0, {     0,      0}, {0x08, 0x8d, 0xcd, 0xff}}},\n    {{{    83,    -22,     14}, 0, {     0,      0}, {0x08, 0x8d, 0x33, 0xff}}},\n    {{{     3,      3,      0}, 0, {     0,      0}, {0xca, 0x8e, 0x00, 0xff}}},\n    {{{    82,     19,     44}, 0, {     0,      0}, {0x24, 0xe5, 0x76, 0xff}}},\n    {{{    83,      1,     40}, 0, {     0,      0}, {0x29, 0xca, 0x6b, 0xff}}},\n    {{{     8,     31,    -34}, 0, {     0,      0}, {0xc6, 0xf2, 0x90, 0xff}}},\n    {{{    82,     19,    -44}, 0, {     0,      0}, {0x24, 0xe5, 0x8a, 0xff}}},\n    {{{    83,      1,    -40}, 0, {     0,      0}, {0x29, 0xca, 0x95, 0xff}}},\n};\n\n// 0x08010560\nstatic const Vtx flyguy_seg8_vertex_08010560[] = {\n    {{{     8,     31,    -34}, 0, {     0,      0}, {0xc6, 0xf2, 0x90, 0xff}}},\n    {{{    83,      1,    -40}, 0, {     0,      0}, {0x29, 0xca, 0x95, 0x00}}},\n    {{{     5,     18,    -30}, 0, {     0,      0}, {0xca, 0xba, 0xa6, 0x00}}},\n    {{{     3,      3,      0}, 0, {     0,      0}, {0xca, 0x8e, 0x00, 0xff}}},\n    {{{   -27,     23,      0}, 0, {     0,      0}, {0x95, 0xbe, 0x00, 0xff}}},\n    {{{     5,     18,     30}, 0, {     0,      0}, {0xca, 0xba, 0x5a, 0xff}}},\n    {{{    83,    -22,     14}, 0, {     0,      0}, {0x08, 0x8d, 0x33, 0xff}}},\n    {{{   103,     -2,     20}, 0, {     0,      0}, {0x65, 0xc5, 0x2f, 0xff}}},\n    {{{    83,      1,     40}, 0, {     0,      0}, {0x29, 0xca, 0x6b, 0xff}}},\n    {{{   103,     -2,    -20}, 0, {     0,      0}, {0x65, 0xc5, 0xd1, 0xff}}},\n    {{{    83,    -22,    -14}, 0, {     0,      0}, {0x08, 0x8d, 0xcd, 0xff}}},\n    {{{   -24,     40,      0}, 0, {     0,      0}, {0xa8, 0x04, 0xa6, 0xff}}},\n    {{{   107,     14,     20}, 0, {     0,      0}, {0x6a, 0xeb, 0x41, 0xff}}},\n    {{{   107,     14,    -20}, 0, {     0,      0}, {0x6a, 0xeb, 0xbf, 0xff}}},\n};\n\n// 0x08010640\nstatic const Vtx flyguy_seg8_vertex_08010640[] = {\n    {{{    82,     19,     44}, 0, {     0,      0}, {0x16, 0x7c, 0x00, 0xff}}},\n    {{{   107,     14,     20}, 0, {     0,      0}, {0x18, 0x7c, 0x00, 0x00}}},\n    {{{   107,     14,    -20}, 0, {     0,      0}, {0x18, 0x7c, 0x00, 0x00}}},\n    {{{    82,     19,    -44}, 0, {     0,      0}, {0x16, 0x7c, 0x00, 0xff}}},\n    {{{    83,      1,    -40}, 0, {     0,      0}, {0x29, 0xca, 0x95, 0xff}}},\n    {{{    82,     19,    -44}, 0, {     0,      0}, {0x24, 0xe5, 0x8a, 0xff}}},\n    {{{   107,     14,    -20}, 0, {     0,      0}, {0x6a, 0xeb, 0xbf, 0xff}}},\n    {{{   107,     14,     20}, 0, {     0,      0}, {0x6a, 0xeb, 0x41, 0xff}}},\n    {{{    82,     19,     44}, 0, {     0,      0}, {0x24, 0xe5, 0x76, 0xff}}},\n    {{{    83,      1,     40}, 0, {     0,      0}, {0x29, 0xca, 0x6b, 0xff}}},\n    {{{     8,     31,    -34}, 0, {     0,      0}, {0x1a, 0x7c, 0x00, 0xff}}},\n    {{{   -24,     40,      0}, 0, {     0,      0}, {0x1f, 0x7b, 0x00, 0xff}}},\n    {{{     8,     31,     34}, 0, {     0,      0}, {0x1a, 0x7c, 0x00, 0xff}}},\n    {{{     5,     18,     30}, 0, {     0,      0}, {0xca, 0xba, 0x5a, 0xff}}},\n    {{{     3,      3,      0}, 0, {     0,      0}, {0xca, 0x8e, 0x00, 0xff}}},\n    {{{    83,    -22,     14}, 0, {     0,      0}, {0x08, 0x8d, 0x33, 0xff}}},\n};\n\n// 0x08010740\nstatic const Vtx flyguy_seg8_vertex_08010740[] = {\n    {{{     5,     18,    -30}, 0, {     0,      0}, {0xca, 0xba, 0xa6, 0xff}}},\n    {{{    83,      1,    -40}, 0, {     0,      0}, {0x29, 0xca, 0x95, 0x00}}},\n    {{{    83,    -22,    -14}, 0, {     0,      0}, {0x08, 0x8d, 0xcd, 0x00}}},\n};\n\n// 0x08010770\nstatic const Vtx flyguy_seg8_vertex_08010770[] = {\n    {{{   -20,    -66,    -34}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{    40,    -66,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{     0,    -66,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{    40,    -66,      0}, 0, {     0,      0}, {0x3f, 0x0c, 0x93, 0xff}}},\n    {{{   -20,    -66,    -34}, 0, {     0,      0}, {0x3f, 0x0c, 0x93, 0xff}}},\n    {{{     0,    133,      0}, 0, {     0,      0}, {0x3f, 0x0c, 0x93, 0xff}}},\n    {{{   -20,    -66,     34}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -20,    -66,    -34}, 0, {     0,      0}, {0x82, 0x0c, 0x00, 0xff}}},\n    {{{   -20,    -66,     34}, 0, {     0,      0}, {0x82, 0x0c, 0x00, 0xff}}},\n    {{{     0,    133,      0}, 0, {     0,      0}, {0x82, 0x0c, 0x00, 0xff}}},\n    {{{   -20,    -66,     34}, 0, {     0,      0}, {0x3f, 0x0c, 0x6d, 0xff}}},\n    {{{    40,    -66,      0}, 0, {     0,      0}, {0x3f, 0x0c, 0x6d, 0xff}}},\n    {{{     0,    133,      0}, 0, {     0,      0}, {0x3f, 0x0c, 0x6d, 0xff}}},\n};\n\n// 0x08010840 - 0x08010968\nconst Gfx flyguy_seg8_dl_08010840[] = {\n    gsSPLight(&flyguy_seg8_lights_080100A0.l, 1),\n    gsSPLight(&flyguy_seg8_lights_080100A0.a, 2),\n    gsSPVertex(flyguy_seg8_vertex_08010130, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 15,  1, 0x0),\n    gsSPVertex(flyguy_seg8_vertex_08010230, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  5, 0x0),\n    gsSP2Triangles( 7,  5,  9, 0x0, 10,  8, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(flyguy_seg8_vertex_08010330, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 2,  6,  7, 0x0,  3,  8,  4, 0x0),\n    gsSP2Triangles( 1,  9,  5, 0x0,  0,  9,  1, 0x0),\n    gsSP2Triangles( 0,  7, 10, 0x0,  0, 10, 11, 0x0),\n    gsSP2Triangles( 3,  5, 12, 0x0,  3, 12, 13, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0, 14, 12,  5, 0x0),\n    gsSP2Triangles(14,  5,  9, 0x0,  6,  8, 15, 0x0),\n    gsSPVertex(flyguy_seg8_vertex_08010430, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x08010968 - 0x08010A90\nconst Gfx flyguy_seg8_dl_08010968[] = {\n    gsSPLight(&flyguy_seg8_lights_080100A0.l, 1),\n    gsSPLight(&flyguy_seg8_lights_080100A0.a, 2),\n    gsSPVertex(flyguy_seg8_vertex_08010460, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  6,  5, 0x0),\n    gsSP2Triangles(11,  5, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(flyguy_seg8_vertex_08010560, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 5,  4,  3, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 1,  9, 10, 0x0,  5,  6,  8, 0x0),\n    gsSP2Triangles(10,  3,  2, 0x0,  2,  4, 11, 0x0),\n    gsSP2Triangles( 2, 11,  0, 0x0,  8,  7, 12, 0x0),\n    gsSP2Triangles(10,  9,  7, 0x0, 10,  7,  6, 0x0),\n    gsSP1Triangle(13,  9,  1, 0x0),\n    gsSPVertex(flyguy_seg8_vertex_08010640, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  3, 10, 12, 0x0),\n    gsSP2Triangles( 3, 12,  0, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(flyguy_seg8_vertex_08010740, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x08010A90 - 0x08010AE0\nconst Gfx flyguy_seg8_dl_08010A90[] = {\n    gsSPLight(&flyguy_seg8_lights_080100B8.l, 1),\n    gsSPLight(&flyguy_seg8_lights_080100B8.a, 2),\n    gsSPVertex(flyguy_seg8_vertex_08010770, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  0,  2, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 1,  6,  2, 0x0, 10, 11, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x08010AE0\nstatic const Lights1 flyguy_seg8_lights_08010AE0 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x08010AF8\nstatic const Vtx flyguy_seg8_vertex_08010AF8[] = {\n    {{{    40,   -104,   -104}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    40,    106,    105}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    40,   -104,    105}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    40,    106,   -104}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x08010B38 - 0x08010B80\nconst Gfx flyguy_seg8_dl_08010B38[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, flyguy_seg8_texture_0800F888),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&flyguy_seg8_lights_08010AE0.l, 1),\n    gsSPLight(&flyguy_seg8_lights_08010AE0.a, 2),\n    gsSPVertex(flyguy_seg8_vertex_08010AF8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x08010B80 - 0x08010BF0\nconst Gfx flyguy_seg8_dl_08010B80[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(flyguy_seg8_dl_08010B38),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x08010BF0\nstatic const Lights1 flyguy_seg8_lights_08010BF0 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x08010C08\nstatic const Lights1 flyguy_seg8_lights_08010C08 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x08010C20\nstatic const Lights1 flyguy_seg8_lights_08010C20 = gdSPDefLights1(\n    0x62, 0x00, 0x13,\n    0xc4, 0x00, 0x26, 0x28, 0x28, 0x28\n);\n\n// 0x08010C38\nstatic const Vtx flyguy_seg8_vertex_08010C38[] = {\n    {{{   108,    123,      0}, 0, {   484,    568}, {0xf7, 0x7e, 0x00, 0xff}}},\n    {{{    56,    100,     68}, 0, {   828,    856}, {0xf4, 0x64, 0x4c, 0xff}}},\n    {{{   193,    100,     75}, 0, {   836,    132}, {0x1f, 0x51, 0x5b, 0xff}}},\n    {{{   126,     73,    100}, 0, {   974,    492}, {0xf3, 0x1d, 0x7a, 0xff}}},\n    {{{    30,    109,      0}, 0, {   498,    982}, {0x05, 0x7e, 0x00, 0xff}}},\n    {{{   221,    126,      0}, 0, {   462,    -24}, {0x58, 0x5b, 0x00, 0xff}}},\n    {{{    56,    100,    -67}, 0, {   162,    872}, {0xf4, 0x64, 0xb3, 0xff}}},\n    {{{   193,    100,    -74}, 0, {   102,    148}, {0x1f, 0x51, 0xa5, 0xff}}},\n    {{{   126,     73,    -99}, 0, {   -10,    516}, {0xf3, 0x1d, 0x86, 0xff}}},\n};\n\n// 0x08010CC8\nstatic const Vtx flyguy_seg8_vertex_08010CC8[] = {\n    {{{   -49,    -81,    -83}, 0, {  1756,    758}, {0xaf, 0xc4, 0xb4, 0xff}}},\n    {{{   -28,   -165,      0}, 0, {  1144,    820}, {0xff, 0x82, 0x00, 0xff}}},\n    {{{   -49,    -81,     84}, 0, {   528,    758}, {0x9a, 0xd3, 0x3c, 0xff}}},\n    {{{   -48,     72,     90}, 0, {  4212,    490}, {0xb6, 0x44, 0x4c, 0xff}}},\n    {{{   -60,    113,      0}, 0, {  3492,    468}, {0xb7, 0x67, 0x00, 0xff}}},\n    {{{   -48,     72,    -89}, 0, {  2776,    490}, {0xa1, 0x37, 0xc1, 0xff}}},\n};\n\n// 0x08010D28\nstatic const Vtx flyguy_seg8_vertex_08010D28[] = {\n    {{{    96,      0,     90}, 0, {  1540,    424}, {0x09, 0x00, 0x7e, 0xff}}},\n    {{{   117,    -60,     68}, 0, {  1524,    604}, {0xec, 0xb1, 0x60, 0xff}}},\n    {{{   142,     -6,    103}, 0, {  1308,    446}, {0x00, 0xf0, 0x7d, 0xff}}},\n    {{{   204,   -140,      0}, 0, {  1180,    840}, {0x13, 0x83, 0x00, 0xff}}},\n    {{{   171,    -48,     90}, 0, {  1216,    570}, {0x10, 0xca, 0x71, 0xff}}},\n    {{{   162,   -107,      0}, 0, {  1356,    744}, {0xf0, 0x83, 0x00, 0xff}}},\n    {{{   239,    -50,     62}, 0, {   860,    578}, {0x62, 0xdd, 0x47, 0xff}}},\n    {{{   232,     24,     76}, 0, {   780,    360}, {0x54, 0x10, 0x5d, 0xff}}},\n    {{{   193,    100,     75}, 0, {   876,    136}, {0x1f, 0x51, 0x5b, 0xff}}},\n    {{{   126,     73,    100}, 0, {  1272,    212}, {0xf3, 0x1d, 0x7a, 0xff}}},\n    {{{   117,    -60,    -67}, 0, {  1524,    604}, {0xec, 0xb1, 0x9f, 0xff}}},\n    {{{   142,     -6,   -102}, 0, {  1308,    446}, {0x00, 0xf0, 0x83, 0xff}}},\n    {{{   171,    -48,    -89}, 0, {  1216,    570}, {0x10, 0xca, 0x8f, 0xff}}},\n    {{{    96,      0,    -89}, 0, {  1540,    424}, {0x09, 0x00, 0x82, 0xff}}},\n};\n\n// 0x08010E08\nstatic const Vtx flyguy_seg8_vertex_08010E08[] = {\n    {{{    16,     64,     88}, 0, {  -556,    338}, {0xf6, 0x4c, 0x64, 0xff}}},\n    {{{     0,    117,      0}, 0, {  -940,    334}, {0xfd, 0x7e, 0x00, 0xff}}},\n    {{{   -48,     72,     90}, 0, {  -688,    582}, {0xb6, 0x44, 0x4c, 0xff}}},\n    {{{    96,      0,    -89}, 0, {  1540,    424}, {0x09, 0x00, 0x82, 0xff}}},\n    {{{   126,     73,    -99}, 0, {  1272,    212}, {0xf3, 0x1d, 0x86, 0xff}}},\n    {{{   142,     -6,   -102}, 0, {  1308,    446}, {0x00, 0xf0, 0x83, 0xff}}},\n    {{{    56,    100,    -67}, 0, {  1604,    132}, {0xf4, 0x64, 0xb3, 0xff}}},\n    {{{   193,    100,    -74}, 0, {   876,    136}, {0x1f, 0x51, 0xa5, 0xff}}},\n    {{{   232,     24,    -75}, 0, {   780,    360}, {0x54, 0x10, 0xa3, 0xff}}},\n    {{{   171,    -48,    -89}, 0, {  1216,    570}, {0x10, 0xca, 0x8f, 0xff}}},\n    {{{   -48,     72,    -89}, 0, {  -688,    582}, {0xa1, 0x37, 0xc1, 0xff}}},\n    {{{   -60,    113,      0}, 0, {  -988,    574}, {0xb7, 0x67, 0x00, 0xff}}},\n    {{{   -45,    -22,    112}, 0, {     0,    700}, {0xb4, 0xf8, 0x64, 0xff}}},\n    {{{    16,     64,    -87}, 0, {  -556,    338}, {0xf6, 0x4c, 0x9c, 0xff}}},\n    {{{    56,    100,    -67}, 0, {  -764,    128}, {0xf4, 0x64, 0xb3, 0xff}}},\n    {{{    56,    100,     68}, 0, {  -764,    128}, {0xf4, 0x64, 0x4c, 0xff}}},\n};\n\n// 0x08010F08\nstatic const Vtx flyguy_seg8_vertex_08010F08[] = {\n    {{{     0,    117,      0}, 0, {  -940,    334}, {0xfd, 0x7e, 0x00, 0xff}}},\n    {{{    56,    100,     68}, 0, {  -764,    128}, {0xf4, 0x64, 0x4c, 0xff}}},\n    {{{    30,    109,      0}, 0, {  -852,    218}, {0x05, 0x7e, 0x00, 0xff}}},\n    {{{    16,     64,    -87}, 0, {  -556,    338}, {0xf6, 0x4c, 0x9c, 0xff}}},\n    {{{   -48,     72,    -89}, 0, {  -688,    582}, {0xa1, 0x37, 0xc1, 0xff}}},\n    {{{    56,    100,    -67}, 0, {  -764,    128}, {0xf4, 0x64, 0xb3, 0xff}}},\n    {{{    61,    -61,     82}, 0, {   356,    330}, {0x16, 0xb7, 0x64, 0xff}}},\n    {{{   162,   -107,      0}, 0, {   788,     -6}, {0xf0, 0x83, 0x00, 0xff}}},\n    {{{   117,    -60,     68}, 0, {   412,    108}, {0xec, 0xb1, 0x60, 0xff}}},\n    {{{    96,      0,     90}, 0, {     0,    106}, {0x09, 0x00, 0x7e, 0xff}}},\n    {{{    69,   -122,      0}, 0, {   784,    384}, {0x24, 0x87, 0x00, 0xff}}},\n    {{{   -28,   -165,      0}, 0, {   964,    828}, {0xff, 0x82, 0x00, 0xff}}},\n    {{{   -49,    -81,     84}, 0, {   364,    796}, {0x9a, 0xd3, 0x3c, 0xff}}},\n    {{{   -45,    -22,    112}, 0, {     0,    700}, {0xb4, 0xf8, 0x64, 0xff}}},\n    {{{    16,     64,     88}, 0, {  -556,    338}, {0xf6, 0x4c, 0x64, 0xff}}},\n    {{{    61,    -61,    -81}, 0, {   356,    330}, {0x16, 0xb7, 0x9b, 0xff}}},\n};\n\n// 0x08011008\nstatic const Vtx flyguy_seg8_vertex_08011008[] = {\n    {{{    61,    -61,    -81}, 0, {   356,    330}, {0x16, 0xb7, 0x9b, 0xff}}},\n    {{{   -28,   -165,      0}, 0, {   964,    828}, {0xff, 0x82, 0x00, 0xff}}},\n    {{{   -49,    -81,    -83}, 0, {   364,    796}, {0xaf, 0xc4, 0xb4, 0xff}}},\n    {{{   162,   -107,      0}, 0, {   788,     -6}, {0xf0, 0x83, 0x00, 0xff}}},\n    {{{    69,   -122,      0}, 0, {   784,    384}, {0x24, 0x87, 0x00, 0xff}}},\n    {{{   -45,    -22,   -111}, 0, {     0,    700}, {0xb4, 0xfb, 0x9b, 0xff}}},\n    {{{    96,      0,    -89}, 0, {     0,    106}, {0x09, 0x00, 0x82, 0xff}}},\n    {{{   117,    -60,    -67}, 0, {   412,    108}, {0xec, 0xb1, 0x9f, 0xff}}},\n    {{{   -10,    -14,   -111}, 0, {   -48,    552}, {0xd9, 0xf2, 0x89, 0xff}}},\n    {{{   -48,     72,    -89}, 0, {  -688,    582}, {0xa1, 0x37, 0xc1, 0xff}}},\n    {{{    16,     64,    -87}, 0, {  -556,    338}, {0xf6, 0x4c, 0x9c, 0xff}}},\n    {{{    61,    -61,     82}, 0, {   716,    492}, {0x16, 0xb7, 0x64, 0xff}}},\n    {{{    13,     26,    144}, 0, {   496,    630}, {0x00, 0x05, 0x7e, 0xff}}},\n    {{{   -10,    -14,    112}, 0, {   772,    628}, {0xd9, 0xf2, 0x77, 0xff}}},\n    {{{    16,     64,     88}, 0, {   516,    690}, {0xf6, 0x4c, 0x64, 0xff}}},\n};\n\n// 0x080110F8\nstatic const Vtx flyguy_seg8_vertex_080110F8[] = {\n    {{{   -45,    -22,    112}, 0, {     0,    700}, {0xb4, 0xf8, 0x64, 0xff}}},\n    {{{   -10,    -14,    112}, 0, {   -48,    552}, {0xd9, 0xf2, 0x77, 0xff}}},\n    {{{    16,     64,     88}, 0, {  -556,    338}, {0xf6, 0x4c, 0x64, 0xff}}},\n    {{{    61,    -61,     82}, 0, {   356,    330}, {0x16, 0xb7, 0x64, 0xff}}},\n    {{{    16,     64,    -87}, 0, {  1384,    860}, {0xf6, 0x4c, 0x9c, 0xff}}},\n    {{{    13,     26,   -143}, 0, {  1612,    590}, {0x00, 0x05, 0x82, 0xff}}},\n    {{{   -10,    -14,   -111}, 0, {  1340,    552}, {0xd9, 0xf2, 0x89, 0xff}}},\n    {{{    61,    -61,    -81}, 0, {  1476,    234}, {0x16, 0xb7, 0x9b, 0xff}}},\n    {{{    16,     64,    -87}, 0, {  -556,    338}, {0xf6, 0x4c, 0x9c, 0xff}}},\n    {{{    56,    100,    -67}, 0, {  -764,    128}, {0xf4, 0x64, 0xb3, 0xff}}},\n    {{{    96,      0,    -89}, 0, {     0,    106}, {0x09, 0x00, 0x82, 0xff}}},\n    {{{   204,   -140,      0}, 0, {  1180,    840}, {0x13, 0x83, 0x00, 0xff}}},\n    {{{   239,    -50,    -61}, 0, {   860,    578}, {0x62, 0xdd, 0xb9, 0xff}}},\n    {{{   256,    -50,      0}, 0, {   772,    578}, {0x7a, 0xdf, 0x00, 0xff}}},\n    {{{   171,    -48,    -89}, 0, {  1216,    570}, {0x10, 0xca, 0x8f, 0xff}}},\n    {{{   232,     24,    -75}, 0, {   780,    360}, {0x54, 0x10, 0xa3, 0xff}}},\n};\n\n// 0x080111F8\nstatic const Vtx flyguy_seg8_vertex_080111F8[] = {\n    {{{   239,    -50,    -61}, 0, {   860,    578}, {0x62, 0xdd, 0xb9, 0xff}}},\n    {{{   232,     24,    -75}, 0, {   780,    360}, {0x54, 0x10, 0xa3, 0xff}}},\n    {{{   257,     35,      0}, 0, {   636,    328}, {0x7d, 0x10, 0x00, 0xff}}},\n    {{{   256,    -50,      0}, 0, {   772,    578}, {0x7a, 0xdf, 0x00, 0xff}}},\n    {{{   193,    100,    -74}, 0, {   876,    136}, {0x1f, 0x51, 0xa5, 0xff}}},\n    {{{   221,    126,      0}, 0, {   688,     62}, {0x58, 0x5b, 0x00, 0xff}}},\n    {{{   232,     24,     76}, 0, {   780,    360}, {0x54, 0x10, 0x5d, 0xff}}},\n    {{{   239,    -50,     62}, 0, {   860,    578}, {0x62, 0xdd, 0x47, 0xff}}},\n    {{{   204,   -140,      0}, 0, {  1180,    840}, {0x13, 0x83, 0x00, 0xff}}},\n    {{{   193,    100,     75}, 0, {   876,    136}, {0x1f, 0x51, 0x5b, 0xff}}},\n    {{{    16,     64,     88}, 0, {  1424,    450}, {0xf6, 0x4c, 0x64, 0xff}}},\n    {{{    13,     26,    144}, 0, {   996,    422}, {0x00, 0x05, 0x7e, 0xff}}},\n    {{{    96,      0,     90}, 0, {  1292,    826}, {0x09, 0x00, 0x7e, 0xff}}},\n    {{{    61,    -61,     82}, 0, {  1100,    820}, {0x16, 0xb7, 0x64, 0xff}}},\n};\n\n// 0x080112D8\nstatic const Vtx flyguy_seg8_vertex_080112D8[] = {\n    {{{   126,     73,    100}, 0, {  1272,    212}, {0xf3, 0x1d, 0x7a, 0xff}}},\n    {{{    56,    100,     68}, 0, {  1604,    132}, {0xf4, 0x64, 0x4c, 0xff}}},\n    {{{    96,      0,     90}, 0, {  1540,    424}, {0x09, 0x00, 0x7e, 0xff}}},\n    {{{    61,    -61,    -81}, 0, {   824,    208}, {0x16, 0xb7, 0x9b, 0xff}}},\n    {{{    13,     26,   -143}, 0, {  1196,    734}, {0x00, 0x05, 0x82, 0xff}}},\n    {{{    96,      0,    -89}, 0, {  1284,    218}, {0x09, 0x00, 0x82, 0xff}}},\n    {{{    16,     64,    -87}, 0, {  1516,    656}, {0xf6, 0x4c, 0x9c, 0xff}}},\n};\n\n// 0x08011348\nstatic const Vtx flyguy_seg8_vertex_08011348[] = {\n    {{{   -48,     72,    -89}, 0, {     0,      0}, {0xa1, 0x37, 0xc1, 0xff}}},\n    {{{   -45,    -22,   -111}, 0, {     0,      0}, {0xb4, 0xfb, 0x9b, 0xff}}},\n    {{{   -45,    -22,    112}, 0, {     0,      0}, {0xb4, 0xf8, 0x64, 0xff}}},\n    {{{   -48,     72,     90}, 0, {     0,      0}, {0xb6, 0x44, 0x4c, 0xff}}},\n    {{{   -49,    -81,     84}, 0, {     0,      0}, {0x9a, 0xd3, 0x3c, 0xff}}},\n    {{{   -49,    -81,    -83}, 0, {     0,      0}, {0xaf, 0xc4, 0xb4, 0xff}}},\n};\n\n// 0x080113A8 - 0x08011420\nconst Gfx flyguy_seg8_dl_080113A8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, flyguy_seg8_texture_0800F088),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&flyguy_seg8_lights_08010BF0.l, 1),\n    gsSPLight(&flyguy_seg8_lights_08010BF0.a, 2),\n    gsSPVertex(flyguy_seg8_vertex_08010C38, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  1,  0, 0x0,  2,  5,  0, 0x0),\n    gsSP2Triangles( 0,  6,  4, 0x0,  6,  0,  7, 0x0),\n    gsSP2Triangles( 7,  8,  6, 0x0,  0,  5,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x08011420 - 0x080116D0\nconst Gfx flyguy_seg8_dl_08011420[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, flyguy_seg8_texture_0800E088),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&flyguy_seg8_lights_08010C08.l, 1),\n    gsSPLight(&flyguy_seg8_lights_08010C08.a, 2),\n    gsSPVertex(flyguy_seg8_vertex_08010CC8, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPLight(&flyguy_seg8_lights_08010C20.l, 1),\n    gsSPLight(&flyguy_seg8_lights_08010C20.a, 2),\n    gsSPVertex(flyguy_seg8_vertex_08010D28, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 1,  5,  3, 0x0,  1,  4,  2, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 2,  4,  7, 0x0,  2,  8,  9, 0x0),\n    gsSP2Triangles( 2,  7,  8, 0x0,  0,  2,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10,  3,  5, 0x0),\n    gsSP2Triangles(10, 12,  3, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(flyguy_seg8_vertex_08010E08, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  5,  4,  7, 0x0),\n    gsSP2Triangles( 7,  8,  5, 0x0,  8,  9,  5, 0x0),\n    gsSP2Triangles( 1, 10, 11, 0x0, 11,  2,  1, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13,  1, 14, 0x0),\n    gsSP1Triangle( 1,  0, 15, 0x0),\n    gsSPVertex(flyguy_seg8_vertex_08010F08, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  2,  5, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0, 10,  7,  6, 0x0),\n    gsSP2Triangles(11,  6, 12, 0x0, 13, 12,  6, 0x0),\n    gsSP2Triangles( 6, 11, 10, 0x0, 14,  9,  1, 0x0),\n    gsSP1Triangle(10, 11, 15, 0x0),\n    gsSPVertex(flyguy_seg8_vertex_08011008, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  2,  5, 0x0,  0,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  0, 0x0,  0,  7,  3, 0x0),\n    gsSP2Triangles( 5,  9, 10, 0x0,  5, 10,  8, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 13, 12, 14, 0x0),\n    gsSPVertex(flyguy_seg8_vertex_080110F8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(12, 11, 14, 0x0, 15, 12, 14, 0x0),\n    gsSPVertex(flyguy_seg8_vertex_080111F8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  2,  1,  5, 0x0),\n    gsSP2Triangles( 2,  5,  6, 0x0,  7,  3,  2, 0x0),\n    gsSP2Triangles( 6,  7,  2, 0x0,  3,  7,  8, 0x0),\n    gsSP2Triangles( 5,  9,  6, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(11, 13, 12, 0x0),\n    gsSPVertex(flyguy_seg8_vertex_080112D8, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 4,  6,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x080116D0 - 0x08011710\nconst Gfx flyguy_seg8_dl_080116D0[] = {\n    gsSPLight(&flyguy_seg8_lights_08010C08.l, 1),\n    gsSPLight(&flyguy_seg8_lights_08010C08.a, 2),\n    gsSPVertex(flyguy_seg8_vertex_08011348, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  1,  5,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x08011710 - 0x08011798\nconst Gfx flyguy_seg8_dl_08011710[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(flyguy_seg8_dl_080113A8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(flyguy_seg8_dl_08011420),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(flyguy_seg8_dl_080116D0),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/fwoosh/geo.inc.c",
    "content": "// 0x0C00036C\nconst GeoLayout fwoosh_geo[] = {\n    GEO_CULLING_RADIUS(200),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, fwoosh_seg5_dl_05016040),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/fwoosh/model.inc.c",
    "content": "// Fwoosh\n\n// 0x050157C8\nstatic const Vtx fwoosh_seg5_vertex_050157C8[] = {\n    {{{   -19,    -19,      0}, 0, {   992,    992}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    20,    -19,      0}, 0, {     0,    992}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    20,     20,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -19,     20,      0}, 0, {   992,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x05015808\nALIGNED8 static const Texture fwoosh_seg5_texture_05015808[] = {\n#include \"actors/fwoosh/fwoosh_face.ia16.inc.c\"\n};\n\n// 0x05016008 - 0x05016040\nconst Gfx fwoosh_seg5_dl_05016008[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, fwoosh_seg5_texture_05015808),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(fwoosh_seg5_vertex_050157C8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05016040 - 0x050160B0\nconst Gfx fwoosh_seg5_dl_05016040[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(fwoosh_seg5_dl_05016008),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/goomba/anims/anim_0801DA34.inc.c",
    "content": "// 0x0801D770\nstatic const s16 goomba_seg8_animvalue_0801D770[] = {\n    0x0000, 0x005A, 0x0059, 0x0057, 0x0054, 0x0051, 0x004E, 0x004B,\n    0x0049, 0x004D, 0x0051, 0x0055, 0x0057, 0x0059, 0x005B, 0x005C,\n    0x005B, 0x0058, 0x0055, 0x0051, 0x004E, 0x004C, 0x004A, 0x0049,\n    0x004A, 0x004D, 0x0050, 0x0053, 0x0056, 0x0059, 0x005A, 0x3FFF,\n    0x0000, 0x0007, 0x001B, 0x003B, 0x0063, 0x0092, 0x00C5, 0x00FA,\n    0x012F, 0x0162, 0x0191, 0x01BA, 0x01D9, 0x01EE, 0x01F5, 0x01E5,\n    0x01B9, 0x0179, 0x012B, 0x00D8, 0x0086, 0x003D, 0x0005, 0xFFEF,\n    0xFFF4, 0xFFFB, 0xFFFC, 0xFFFE, 0x0000, 0x0000, 0x0000, 0xFFD2,\n    0xFF4E, 0xFE84, 0xFD80, 0xFC50, 0xFB02, 0xF9A4, 0xF842, 0xF6EB,\n    0xF5AC, 0xF493, 0xF3AD, 0xF308, 0xF2B2, 0xF2DD, 0xF39B, 0xF4C9,\n    0xF643, 0xF7E5, 0xF98B, 0xFB12, 0xFC56, 0xFD4D, 0xFE0E, 0xFEA4,\n    0xFF26, 0xFF96, 0xFFE3, 0x0000, 0x847D, 0x842C, 0x8349, 0x81EB,\n    0x802B, 0x7E1D, 0x7BDE, 0x7983, 0x7724, 0x74D8, 0x72B8, 0x70DA,\n    0x6F57, 0x6E45, 0x6DBE, 0x6E24, 0x6F9E, 0x71E4, 0x74AE, 0x77B4,\n    0x7AB0, 0x7D58, 0x7F67, 0x8027, 0x7FEA, 0x800A, 0x8125, 0x82A0,\n    0x83EE, 0x847D, 0x8001, 0x8003, 0x8006, 0x800A, 0x800E, 0x800F,\n    0x800C, 0x8005, 0x7FED, 0x7FCB, 0x7FA7, 0x7F8D, 0x7F82, 0x7F83,\n    0x7F91, 0x7FBA, 0x7FF1, 0x8014, 0x801A, 0x801D, 0x801D, 0x801C,\n    0x8019, 0x8016, 0x8011, 0x800D, 0x8008, 0x8005, 0x8002, 0x8001,\n    0x74FE, 0x7522, 0x7580, 0x760B, 0x76B1, 0x7762, 0x7810, 0x78A9,\n    0x793D, 0x79DA, 0x7A6F, 0x7AEA, 0x7B48, 0x7B84, 0x7B88, 0x7B3C,\n    0x7AB9, 0x7A36, 0x79BE, 0x7938, 0x78A9, 0x7816, 0x7782, 0x76F3,\n    0x766D, 0x75F6, 0x7590, 0x7542, 0x7510, 0x74FE, 0xEBA0, 0xEC75,\n    0xEEAC, 0xF1D6, 0xF585, 0xF94B, 0xFCBA, 0xFF64, 0x010E, 0x0203,\n    0x0296, 0x031D, 0x0394, 0x03C2, 0x03A4, 0x0354, 0x02B8, 0x0184,\n    0xFFBE, 0xFDAD, 0xFB66, 0xF8FF, 0xF68F, 0xF42C, 0xF1EA, 0xEFE1,\n    0xEE25, 0xECCD, 0xEBEF, 0xEBA0, 0xC001, 0xC001, 0xF913, 0xF946,\n    0xF9D2, 0xFAAA, 0xFBBE, 0xFCFF, 0xFE5E, 0xFFCC, 0x013A, 0x0299,\n    0x03DA, 0x04EE, 0x05C6, 0x0652, 0x0684, 0x0658, 0x05DD, 0x051E,\n    0x0429, 0x0308, 0x01C9, 0x0077, 0xFF20, 0xFDCF, 0xFC90, 0xFB6F,\n    0xFA79, 0xF9BB, 0xF93F, 0xF913, 0x061C, 0x05ED, 0x0569, 0x049E,\n    0x039B, 0x026D, 0x0123, 0xFFCC, 0xFE74, 0xFD2A, 0xFBFD, 0xFAF9,\n    0xFA2F, 0xF9AB, 0xF97C, 0xF9A5, 0xFA19, 0xFACC, 0xFBB3, 0xFCC2,\n    0xFDEE, 0xFF2B, 0x006D, 0x01AA, 0x02D6, 0x03E5, 0x04CC, 0x057F,\n    0x05F3, 0x061C, 0xFC56, 0xFC76, 0xFCCF, 0xFD58, 0xFE08, 0xFED4,\n    0xFFB4, 0x009C, 0x0185, 0x0265, 0x0331, 0x03E0, 0x046A, 0x04C3,\n    0x04E3, 0x04C7, 0x0479, 0x03FF, 0x0363, 0x02AB, 0x01E0, 0x0109,\n    0x002F, 0xFF59, 0xFE8E, 0xFDD6, 0xFD3A, 0xFCC0, 0xFC72, 0xFC56,\n    0x3FFF, 0x0000,\n};\n\n// 0x0801D9D4\nstatic const u16 goomba_seg8_animindex_0801D9D4[] = {\n    0x0001, 0x0000, 0x001E, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x001F, 0x0001, 0x0000,\n    0x001E, 0x00F4, 0x001E, 0x0112, 0x0001, 0x0130,\n    0x001E, 0x00D6, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00D5,\n    0x001E, 0x0020, 0x001E, 0x003E, 0x001E, 0x005C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00D4,\n    0x001E, 0x007A, 0x001E, 0x0098, 0x001E, 0x00B6,\n};\n\n// 0x0801DA34\nstatic const struct Animation goomba_seg8_anim_0801DA34 = {\n    0,\n    0,\n    0,\n    0,\n    0x1E,\n    ANIMINDEX_NUMPARTS(goomba_seg8_animindex_0801D9D4),\n    goomba_seg8_animvalue_0801D770,\n    goomba_seg8_animindex_0801D9D4,\n    0,\n};\n"
  },
  {
    "path": "actors/goomba/anims/data.inc.c",
    "content": "#include \"anim_0801DA34.inc.c\"\n"
  },
  {
    "path": "actors/goomba/anims/table.inc.c",
    "content": "// 0x0801DA4C\nconst struct Animation *const goomba_seg8_anims_0801DA4C[] = {\n    &goomba_seg8_anim_0801DA34,\n    NULL,\n    NULL,\n};\n"
  },
  {
    "path": "actors/goomba/geo.inc.c",
    "content": "// 0x0F0006E4\nconst GeoLayout goomba_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 100),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, goomba_seg8_dl_0801D760),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_BILLBOARD(),\n                    GEO_OPEN_NODE(),\n                        GEO_DISPLAY_LIST(LAYER_ALPHA, goomba_seg8_dl_0801B690),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_OPEN_NODE(),\n                    GEO_SWITCH_CASE(2, geo_switch_anim_state),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 48, 0, 0, goomba_seg8_dl_0801B5C8),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 48, 0, 0, goomba_seg8_dl_0801B5F0),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -60, -16, 45, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, goomba_seg8_dl_0801CE20),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -60, -16, -45, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, goomba_seg8_dl_0801CF78),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/goomba/model.inc.c",
    "content": "// Goomba\n\n// Unreferenced light group\nUNUSED static const Lights1 goomba_lights_unused1 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 goomba_lights_unused2 = gdSPDefLights1(\n    0x2c, 0x2c, 0x2c,\n    0xb2, 0xb2, 0xb2, 0x28, 0x28, 0x28\n);\n\n// 0x080194D0\nstatic const Lights1 goomba_seg8_lights_080194D0 = gdSPDefLights1(\n    0x15, 0x0b, 0x04,\n    0x54, 0x2e, 0x10, 0x28, 0x28, 0x28\n);\n\n// 0x080194E8\nstatic const Lights1 goomba_seg8_lights_080194E8 = gdSPDefLights1(\n    0x18, 0x0d, 0x04,\n    0x61, 0x34, 0x13, 0x28, 0x28, 0x28\n);\n\n// 0x08019500\nstatic const Lights1 goomba_seg8_lights_08019500 = gdSPDefLights1(\n    0x1d, 0x10, 0x08,\n    0x77, 0x42, 0x20, 0x28, 0x28, 0x28\n);\n\n// 0x08019518\nstatic const Lights1 goomba_seg8_lights_08019518 = gdSPDefLights1(\n    0x37, 0x2d, 0x13,\n    0xde, 0xb4, 0x4e, 0x28, 0x28, 0x28\n);\n\n// 0x08019530\nALIGNED8 static const Texture goomba_seg8_texture_08019530[] = {\n#include \"actors/goomba/goomba_body.rgba16.inc.c\"\n};\n\n// 0x08019D30\nALIGNED8 static const Texture goomba_seg8_texture_08019D30[] = {\n#include \"actors/goomba/goomba_face.rgba16.inc.c\"\n};\n\n// 0x0801A530\nALIGNED8 static const Texture goomba_seg8_texture_0801A530[] = {\n#include \"actors/goomba/goomba_face_blink.rgba16.inc.c\"\n};\n\n// 0x0801AD30\nstatic const Lights1 goomba_seg8_lights_0801AD30 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0801AD48\nstatic const Vtx goomba_seg8_vertex_0801AD48[] = {\n    {{{    80,     58,    105}, 0, {  1124,    322}, {0x22, 0x3f, 0x68, 0xff}}},\n    {{{    80,     98,     62}, 0, {   858,    338}, {0x1d, 0x6e, 0x36, 0xff}}},\n    {{{   -23,    109,     59}, 0, {   842,   1002}, {0xc7, 0x64, 0x34, 0xff}}},\n    {{{   -23,     55,    118}, 0, {  -898,   1226}, {0xbc, 0x29, 0x62, 0xff}}},\n    {{{   -51,    -48,     53}, 0, { -1544,   1510}, {0x87, 0xee, 0x1e, 0xff}}},\n    {{{   -23,    -54,    118}, 0, {  -898,   1226}, {0xc7, 0xc8, 0x62, 0xff}}},\n    {{{   -23,   -108,     75}, 0, { -1322,   1230}, {0xbf, 0x9b, 0x27, 0xff}}},\n    {{{    -1,      0,    141}, 0, {  -670,   1004}, {0xfa, 0xf8, 0x7e, 0xff}}},\n    {{{    80,    -97,     52}, 0, { -1560,    196}, {0x1c, 0x96, 0x3f, 0xff}}},\n    {{{    80,    -57,    105}, 0, { -1022,    196}, {0x1d, 0xbe, 0x67, 0xff}}},\n    {{{    82,      0,    120}, 0, {  -880,    168}, {0x2e, 0x05, 0x76, 0xff}}},\n    {{{   -51,     49,     53}, 0, { -1544,   1510}, {0x85, 0x1a, 0x10, 0xff}}},\n    {{{    80,     58,    105}, 0, { -1022,    196}, {0x22, 0x3f, 0x68, 0xff}}},\n    {{{   -23,    109,     59}, 0, { -1482,   1230}, {0xc7, 0x64, 0x34, 0xff}}},\n    {{{   -23,     55,    118}, 0, {  1198,    978}, {0xbc, 0x29, 0x62, 0xff}}},\n};\n\n// 0x0801AE38\nstatic const Vtx goomba_seg8_vertex_0801AE38[] = {\n    {{{   -23,    109,    -58}, 0, {   122,   1008}, {0xbd, 0x65, 0xdc, 0xff}}},\n    {{{    -1,    130,      0}, 0, {   482,    872}, {0xfb, 0x7e, 0x05, 0xff}}},\n    {{{    82,    110,      0}, 0, {   482,    330}, {0x2d, 0x76, 0xf9, 0xff}}},\n    {{{   -23,    109,     59}, 0, {   842,   1002}, {0xc7, 0x64, 0x34, 0xff}}},\n    {{{    80,     98,     62}, 0, {   858,    338}, {0x1d, 0x6e, 0x36, 0xff}}},\n    {{{    80,     98,    -61}, 0, {   108,    346}, {0x19, 0x6a, 0xc1, 0xff}}},\n    {{{   -23,     55,   -117}, 0, {  -232,    990}, {0xd2, 0x39, 0x99, 0xff}}},\n    {{{   -23,    -54,   -117}, 0, { -3250,   1226}, {0xbc, 0xdc, 0x9c, 0xff}}},\n    {{{   -51,     49,    -52}, 0, { -2604,   1510}, {0x87, 0x14, 0xe3, 0xff}}},\n    {{{   -23,     55,   -117}, 0, { -3250,   1226}, {0xd2, 0x39, 0x99, 0xff}}},\n    {{{   -23,    109,    -58}, 0, { -2666,   1230}, {0xbd, 0x65, 0xdc, 0xff}}},\n    {{{    -1,      0,   -140}, 0, { -3478,   1004}, {0xf2, 0x00, 0x82, 0xff}}},\n    {{{    82,      0,   -119}, 0, { -3268,    168}, {0x29, 0x03, 0x89, 0xff}}},\n    {{{    80,     58,   -104}, 0, { -3126,    196}, {0x1f, 0x40, 0x97, 0xff}}},\n    {{{   143,     65,    -68}, 0, {    62,    -70}, {0x4c, 0x49, 0xbb, 0xff}}},\n    {{{   156,     68,      0}, 0, {   484,   -156}, {0x6e, 0x3e, 0x00, 0xff}}},\n};\n\n// 0x0801AF38\nstatic const Vtx goomba_seg8_vertex_0801AF38[] = {\n    {{{   -23,    -54,   -117}, 0, { -3250,   1226}, {0xbc, 0xdc, 0x9c, 0xff}}},\n    {{{   -51,    -48,    -52}, 0, { -2604,   1510}, {0x85, 0xe8, 0xf0, 0xff}}},\n    {{{   -51,     49,    -52}, 0, { -2604,   1510}, {0x87, 0x14, 0xe3, 0xff}}},\n    {{{   -23,   -108,    -74}, 0, { -2826,   1230}, {0xca, 0x9c, 0xca, 0xff}}},\n    {{{    82,      0,   -119}, 0, { -3268,    168}, {0x29, 0x03, 0x89, 0xff}}},\n    {{{    80,    -57,   -104}, 0, { -3126,    196}, {0x24, 0xc1, 0x99, 0xff}}},\n    {{{    -1,   -129,      0}, 0, { -2074,   1004}, {0xfe, 0x82, 0xf8, 0xff}}},\n    {{{   -23,   -108,     75}, 0, { -1322,   1230}, {0xbf, 0x9b, 0x27, 0xff}}},\n    {{{    80,    -97,    -51}, 0, { -2588,    196}, {0x20, 0x91, 0xce, 0xff}}},\n    {{{    82,   -109,      0}, 0, { -2074,    168}, {0x2c, 0x8a, 0x05, 0xff}}},\n    {{{    80,    -97,     52}, 0, { -1560,    196}, {0x1c, 0x96, 0x3f, 0xff}}},\n    {{{   -51,    -48,     53}, 0, { -1544,   1510}, {0x87, 0xee, 0x1e, 0xff}}},\n    {{{    82,    110,      0}, 0, {   482,    330}, {0x2d, 0x76, 0xf9, 0xff}}},\n    {{{    80,     98,     62}, 0, {   858,    338}, {0x1d, 0x6e, 0x36, 0xff}}},\n    {{{   143,     65,     69}, 0, {   906,    -78}, {0x4d, 0x51, 0x3a, 0xff}}},\n    {{{   156,     68,      0}, 0, {   484,   -156}, {0x6e, 0x3e, 0x00, 0xff}}},\n};\n\n// 0x0801B038\nstatic const Vtx goomba_seg8_vertex_0801B038[] = {\n    {{{   143,     65,     69}, 0, {   906,    -78}, {0x4d, 0x51, 0x3a, 0xff}}},\n    {{{    80,     98,     62}, 0, {   858,    338}, {0x1d, 0x6e, 0x36, 0xff}}},\n    {{{    80,     58,    105}, 0, {  1124,    322}, {0x22, 0x3f, 0x68, 0xff}}},\n    {{{   156,      0,     74}, 0, { -1340,   -572}, {0x6a, 0x04, 0x45, 0xff}}},\n    {{{    80,     58,    105}, 0, { -1022,    196}, {0x22, 0x3f, 0x68, 0xff}}},\n    {{{    82,      0,    120}, 0, {  -880,    168}, {0x2e, 0x05, 0x76, 0xff}}},\n    {{{    80,    -57,    105}, 0, { -1022,    196}, {0x1d, 0xbe, 0x67, 0xff}}},\n    {{{   143,    -64,     69}, 0, { -1380,   -440}, {0x4a, 0xb4, 0x44, 0xff}}},\n    {{{    80,    -97,     52}, 0, { -1560,    196}, {0x1c, 0x96, 0x3f, 0xff}}},\n    {{{   156,    -67,      0}, 0, { -2074,   -572}, {0x6e, 0xc1, 0x00, 0xff}}},\n    {{{    82,   -109,      0}, 0, { -2074,    168}, {0x2c, 0x8a, 0x05, 0xff}}},\n    {{{   143,    -64,    -68}, 0, { -2768,   -440}, {0x4b, 0xac, 0xc6, 0xff}}},\n    {{{    80,    -97,    -51}, 0, { -2588,    196}, {0x20, 0x91, 0xce, 0xff}}},\n    {{{    80,    -57,   -104}, 0, { -3126,    196}, {0x24, 0xc1, 0x99, 0xff}}},\n    {{{   143,     65,     69}, 0, { -1380,   -440}, {0x4d, 0x51, 0x3a, 0xff}}},\n    {{{   177,      0,      0}, 0, { -2074,   -774}, {0x7e, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0801B138\nstatic const Vtx goomba_seg8_vertex_0801B138[] = {\n    {{{   156,      0,     74}, 0, { -1340,   -572}, {0x6a, 0x04, 0x45, 0xff}}},\n    {{{   156,     68,      0}, 0, { -2074,   -572}, {0x6e, 0x3e, 0x00, 0xff}}},\n    {{{   143,     65,     69}, 0, { -1380,   -440}, {0x4d, 0x51, 0x3a, 0xff}}},\n    {{{   177,      0,      0}, 0, { -2074,   -774}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{   156,      0,    -73}, 0, { -2808,   -572}, {0x6a, 0xfc, 0xbb, 0xff}}},\n    {{{    80,    -57,   -104}, 0, { -3126,    196}, {0x24, 0xc1, 0x99, 0xff}}},\n    {{{    82,      0,   -119}, 0, { -3268,    168}, {0x29, 0x03, 0x89, 0xff}}},\n    {{{    80,     58,   -104}, 0, { -3126,    196}, {0x1f, 0x40, 0x97, 0xff}}},\n    {{{   143,     65,    -68}, 0, { -2768,   -440}, {0x4c, 0x49, 0xbb, 0xff}}},\n    {{{   143,    -64,    -68}, 0, { -2768,   -440}, {0x4b, 0xac, 0xc6, 0xff}}},\n    {{{   156,    -67,      0}, 0, { -2074,   -572}, {0x6e, 0xc1, 0x00, 0xff}}},\n    {{{    82,   -109,      0}, 0, { -2074,    168}, {0x2c, 0x8a, 0x05, 0xff}}},\n    {{{    80,    -97,    -51}, 0, { -2588,    196}, {0x20, 0x91, 0xce, 0xff}}},\n    {{{   -51,     49,     53}, 0, { -1544,   1510}, {0x85, 0x1a, 0x10, 0xff}}},\n    {{{   -23,    109,    -58}, 0, { -2666,   1230}, {0xbd, 0x65, 0xdc, 0xff}}},\n    {{{   -51,     49,    -52}, 0, { -2604,   1510}, {0x87, 0x14, 0xe3, 0xff}}},\n};\n\n// 0x0801B238\nstatic const Vtx goomba_seg8_vertex_0801B238[] = {\n    {{{   143,     65,    -68}, 0, {    62,    -70}, {0x4c, 0x49, 0xbb, 0xff}}},\n    {{{    80,     98,    -61}, 0, {   108,    346}, {0x19, 0x6a, 0xc1, 0xff}}},\n    {{{    82,    110,      0}, 0, {   482,    330}, {0x2d, 0x76, 0xf9, 0xff}}},\n    {{{   -51,     49,     53}, 0, { -1544,   1510}, {0x85, 0x1a, 0x10, 0xff}}},\n    {{{   -51,    -48,    -52}, 0, { -2604,   1510}, {0x85, 0xe8, 0xf0, 0xff}}},\n    {{{   -51,    -48,     53}, 0, { -1544,   1510}, {0x87, 0xee, 0x1e, 0xff}}},\n    {{{   -51,     49,    -52}, 0, { -2604,   1510}, {0x87, 0x14, 0xe3, 0xff}}},\n    {{{   -23,     55,   -117}, 0, {  -232,    990}, {0xd2, 0x39, 0x99, 0xff}}},\n    {{{    80,     58,   -104}, 0, {  -156,    336}, {0x1f, 0x40, 0x97, 0xff}}},\n    {{{   -23,    109,     59}, 0, { -1482,   1230}, {0xc7, 0x64, 0x34, 0xff}}},\n    {{{   -23,    109,    -58}, 0, { -2666,   1230}, {0xbd, 0x65, 0xdc, 0xff}}},\n};\n\n// 0x0801B2E8 - 0x0801B560\nconst Gfx goomba_seg8_dl_0801B2E8[] = {\n    gsSPLight(&goomba_seg8_lights_0801AD30.l, 1),\n    gsSPLight(&goomba_seg8_lights_0801AD30.a, 2),\n    gsSPVertex(goomba_seg8_vertex_0801AD48, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  5,  4, 0x0,  5,  7,  3, 0x0),\n    gsSP2Triangles( 5,  6,  8, 0x0,  5,  8,  9, 0x0),\n    gsSP2Triangles( 7,  5,  9, 0x0,  3,  7, 10, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  3, 11,  4, 0x0),\n    gsSP2Triangles( 3, 10, 12, 0x0,  3, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(goomba_seg8_vertex_0801AE38, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  1,  4,  2, 0x0),\n    gsSP2Triangles( 0,  2,  5, 0x0,  6,  0,  5, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0, 10,  9,  8, 0x0),\n    gsSP2Triangles( 9, 11,  7, 0x0, 12,  9, 13, 0x0),\n    gsSP2Triangles(12, 11,  9, 0x0,  7, 11, 12, 0x0),\n    gsSP1Triangle(14,  2, 15, 0x0),\n    gsSPVertex(goomba_seg8_vertex_0801AF38, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  5,  3,  0, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  1,  3,  7, 0x0),\n    gsSP2Triangles( 5,  8,  3, 0x0,  6,  3,  8, 0x0),\n    gsSP2Triangles( 7,  6,  9, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  1,  7, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(goomba_seg8_vertex_0801B038, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  7,  3, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  9,  3,  7, 0x0),\n    gsSP2Triangles( 7, 10,  9, 0x0,  7,  8, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0,  3, 14,  4, 0x0),\n    gsSP1Triangle( 9, 15,  3, 0x0),\n    gsSPVertex(goomba_seg8_vertex_0801B138, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  8,  4, 0x0,  1,  4,  8, 0x0),\n    gsSP2Triangles( 4,  9,  5, 0x0,  4, 10,  9, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3, 10, 0x0),\n    gsSP2Triangles(11,  9, 10, 0x0, 11, 12,  9, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(goomba_seg8_vertex_0801B238, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  1,  8, 0x0),\n    gsSP2Triangles( 8,  1,  0, 0x0,  3,  9, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0801B560 - 0x0801B5A0\nconst Gfx goomba_seg8_dl_0801B560[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x0801B5A0 - 0x0801B5C8\nconst Gfx goomba_seg8_dl_0801B5A0[] = {\n    gsSPDisplayList(goomba_seg8_dl_0801B2E8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0801B5C8 - 0x0801B5F0\nconst Gfx goomba_seg8_dl_0801B5C8[] = {\n    gsSPDisplayList(goomba_seg8_dl_0801B560),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, goomba_seg8_texture_08019D30),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPBranchList(goomba_seg8_dl_0801B5A0),\n};\n\n// 0x0801B5F0 - 0x0801B618\nconst Gfx goomba_seg8_dl_0801B5F0[] = {\n    gsSPDisplayList(goomba_seg8_dl_0801B560),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, goomba_seg8_texture_0801A530),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPBranchList(goomba_seg8_dl_0801B5A0),\n};\n\n// 0x0801B618\nstatic const Vtx goomba_seg8_vertex_0801B618[] = {\n    {{{    18,     18,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -18,     18,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -18,    -18,      0}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    18,    -18,      0}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0801B658 - 0x0801B690\nconst Gfx goomba_seg8_dl_0801B658[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, goomba_seg8_texture_08019530),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(goomba_seg8_vertex_0801B618, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0801B690 - 0x0801B700\nconst Gfx goomba_seg8_dl_0801B690[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(goomba_seg8_dl_0801B658),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x0801B700\nstatic const Vtx goomba_seg8_vertex_0801B700[] = {\n    {{{    90,     14,    -14}, 0, {     0,      0}, {0x6c, 0xdf, 0xc8, 0x00}}},\n    {{{    90,     14,     29}, 0, {     0,      0}, {0x6c, 0xdf, 0x38, 0x00}}},\n    {{{    85,     -4,     29}, 0, {     0,      0}, {0x5d, 0xb8, 0x2d, 0x00}}},\n    {{{    85,     -4,    -14}, 0, {     0,      0}, {0x5d, 0xb8, 0xd3, 0xff}}},\n    {{{   -30,     14,     21}, 0, {     0,      0}, {0x95, 0xd4, 0x33, 0xff}}},\n    {{{   -30,     14,     -7}, 0, {     0,      0}, {0x95, 0xd4, 0xcd, 0xff}}},\n    {{{   -25,      0,     -4}, 0, {     0,      0}, {0xad, 0xa9, 0xda, 0xff}}},\n    {{{   -25,      0,     19}, 0, {     0,      0}, {0xad, 0xa9, 0x26, 0xff}}},\n    {{{    66,    -17,    -14}, 0, {     0,      0}, {0x1e, 0x88, 0xe5, 0xff}}},\n    {{{    66,    -17,     29}, 0, {     0,      0}, {0x1e, 0x88, 0x1b, 0xff}}},\n    {{{     4,    -12,     26}, 0, {     0,      0}, {0xe1, 0x87, 0x16, 0xff}}},\n    {{{     4,    -12,    -11}, 0, {     0,      0}, {0xe1, 0x87, 0xea, 0xff}}},\n    {{{    60,     14,     51}, 0, {     0,      0}, {0x1f, 0xe1, 0x76, 0xff}}},\n    {{{     0,     11,     45}, 0, {     0,      0}, {0xd3, 0xda, 0x6f, 0xff}}},\n    {{{     2,     -6,     39}, 0, {     0,      0}, {0xd5, 0xac, 0x54, 0xff}}},\n    {{{    60,    -12,     44}, 0, {     0,      0}, {0x20, 0xb2, 0x5e, 0xff}}},\n};\n\n// 0x0801B800\nstatic const Vtx goomba_seg8_vertex_0801B800[] = {\n    {{{     0,     11,    -30}, 0, {     0,      0}, {0xd3, 0xda, 0x91, 0xff}}},\n    {{{    60,     14,    -37}, 0, {     0,      0}, {0x1f, 0xe1, 0x8a, 0x00}}},\n    {{{    60,    -12,    -30}, 0, {     0,      0}, {0x20, 0xb2, 0xa2, 0x00}}},\n    {{{     2,     -6,    -25}, 0, {     0,      0}, {0xd5, 0xac, 0xac, 0xff}}},\n    {{{     4,    -12,    -11}, 0, {     0,      0}, {0xe1, 0x87, 0xea, 0xff}}},\n    {{{   -25,      0,     -4}, 0, {     0,      0}, {0xad, 0xa9, 0xda, 0xff}}},\n    {{{     2,     -6,     39}, 0, {     0,      0}, {0xd5, 0xac, 0x54, 0xff}}},\n    {{{   -25,      0,     19}, 0, {     0,      0}, {0xad, 0xa9, 0x26, 0xff}}},\n    {{{     4,    -12,     26}, 0, {     0,      0}, {0xe1, 0x87, 0x16, 0xff}}},\n    {{{    66,    -17,     29}, 0, {     0,      0}, {0x1e, 0x88, 0x1b, 0xff}}},\n    {{{    85,     -4,     29}, 0, {     0,      0}, {0x5d, 0xb8, 0x2d, 0xff}}},\n    {{{    60,    -12,     44}, 0, {     0,      0}, {0x20, 0xb2, 0x5e, 0xff}}},\n    {{{    85,     -4,    -14}, 0, {     0,      0}, {0x5d, 0xb8, 0xd3, 0xff}}},\n    {{{    66,    -17,    -14}, 0, {     0,      0}, {0x1e, 0x88, 0xe5, 0xff}}},\n    {{{   -30,     14,     -7}, 0, {     0,      0}, {0x95, 0xd4, 0xcd, 0xff}}},\n};\n\n// 0x0801B8F0\nstatic const Vtx goomba_seg8_vertex_0801B8F0[] = {\n    {{{     0,     11,     45}, 0, {     0,      0}, {0xd3, 0xda, 0x6f, 0xff}}},\n    {{{   -30,     14,     21}, 0, {     0,      0}, {0x95, 0xd4, 0x33, 0x00}}},\n    {{{   -25,      0,     19}, 0, {     0,      0}, {0xad, 0xa9, 0x26, 0x00}}},\n    {{{     2,     -6,     39}, 0, {     0,      0}, {0xd5, 0xac, 0x54, 0xff}}},\n    {{{    60,    -12,     44}, 0, {     0,      0}, {0x20, 0xb2, 0x5e, 0xff}}},\n    {{{    85,     -4,     29}, 0, {     0,      0}, {0x5d, 0xb8, 0x2d, 0xff}}},\n    {{{    90,     14,     29}, 0, {     0,      0}, {0x6c, 0xdf, 0x38, 0xff}}},\n    {{{    60,     14,     51}, 0, {     0,      0}, {0x1f, 0xe1, 0x76, 0xff}}},\n    {{{    66,    -17,    -14}, 0, {     0,      0}, {0x1e, 0x88, 0xe5, 0xff}}},\n    {{{    85,     -4,    -14}, 0, {     0,      0}, {0x5d, 0xb8, 0xd3, 0xff}}},\n    {{{    66,    -17,     29}, 0, {     0,      0}, {0x1e, 0x88, 0x1b, 0xff}}},\n    {{{    60,     14,    -37}, 0, {     0,      0}, {0x1f, 0xe1, 0x8a, 0xff}}},\n    {{{    90,     14,    -14}, 0, {     0,      0}, {0x6c, 0xdf, 0xc8, 0xff}}},\n    {{{    60,    -12,    -30}, 0, {     0,      0}, {0x20, 0xb2, 0xa2, 0xff}}},\n};\n\n// 0x0801B9D0\nstatic const Vtx goomba_seg8_vertex_0801B9D0[] = {\n    {{{   -30,     14,     -7}, 0, {     0,      0}, {0x09, 0x7e, 0x00, 0xff}}},\n    {{{   -30,     14,     21}, 0, {     0,      0}, {0x09, 0x7e, 0x00, 0x00}}},\n    {{{     0,     11,     45}, 0, {     0,      0}, {0x02, 0x7f, 0x00, 0x00}}},\n    {{{     0,     11,    -30}, 0, {     0,      0}, {0x02, 0x7f, 0x00, 0xff}}},\n    {{{    60,     14,     51}, 0, {     0,      0}, {0xfe, 0x7f, 0x00, 0xff}}},\n    {{{    90,     14,     29}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    90,     14,    -14}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    60,     14,    -37}, 0, {     0,      0}, {0xfe, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0801BA50\nstatic const Vtx goomba_seg8_vertex_0801BA50[] = {\n    {{{     0,     11,     30}, 0, {     0,      0}, {0x02, 0x7f, 0x00, 0x00}}},\n    {{{    60,     14,     37}, 0, {     0,      0}, {0xfe, 0x7f, 0x00, 0x00}}},\n    {{{    60,     14,    -51}, 0, {     0,      0}, {0xfe, 0x7f, 0x00, 0x00}}},\n    {{{     0,     11,    -45}, 0, {     0,      0}, {0x02, 0x7f, 0x00, 0xff}}},\n    {{{    90,     14,     14}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    90,     14,    -29}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -30,     14,    -21}, 0, {     0,      0}, {0x09, 0x7e, 0x00, 0xff}}},\n    {{{   -30,     14,      7}, 0, {     0,      0}, {0x09, 0x7e, 0x00, 0xff}}},\n    {{{    60,    -12,     30}, 0, {     0,      0}, {0x20, 0xb2, 0x5e, 0xff}}},\n    {{{    85,     -4,     14}, 0, {     0,      0}, {0x5d, 0xb8, 0x2d, 0xff}}},\n    {{{    90,     14,     14}, 0, {     0,      0}, {0x6c, 0xdf, 0x38, 0xff}}},\n    {{{    60,     14,     37}, 0, {     0,      0}, {0x1f, 0xe1, 0x76, 0xff}}},\n    {{{    66,    -17,    -29}, 0, {     0,      0}, {0x1e, 0x88, 0xe5, 0xff}}},\n    {{{    85,     -4,    -29}, 0, {     0,      0}, {0x5d, 0xb8, 0xd3, 0xff}}},\n    {{{    66,    -17,     14}, 0, {     0,      0}, {0x1e, 0x88, 0x1b, 0xff}}},\n};\n\n// 0x0801BB40\nstatic const Vtx goomba_seg8_vertex_0801BB40[] = {\n    {{{    60,     14,    -51}, 0, {     0,      0}, {0x1f, 0xe1, 0x8a, 0xff}}},\n    {{{    90,     14,    -29}, 0, {     0,      0}, {0x6c, 0xdf, 0xc8, 0x00}}},\n    {{{    85,     -4,    -29}, 0, {     0,      0}, {0x5d, 0xb8, 0xd3, 0x00}}},\n    {{{    60,    -12,    -44}, 0, {     0,      0}, {0x20, 0xb2, 0xa2, 0xff}}},\n    {{{     2,     -6,    -39}, 0, {     0,      0}, {0xd5, 0xac, 0xac, 0xff}}},\n    {{{   -25,      0,    -19}, 0, {     0,      0}, {0xad, 0xa9, 0xda, 0xff}}},\n    {{{   -30,     14,    -21}, 0, {     0,      0}, {0x95, 0xd4, 0xcd, 0xff}}},\n    {{{     0,     11,    -45}, 0, {     0,      0}, {0xd3, 0xda, 0x91, 0xff}}},\n    {{{     4,    -12,     11}, 0, {     0,      0}, {0xe1, 0x87, 0x16, 0xff}}},\n    {{{   -25,      0,      4}, 0, {     0,      0}, {0xad, 0xa9, 0x26, 0xff}}},\n    {{{     4,    -12,    -26}, 0, {     0,      0}, {0xe1, 0x87, 0xea, 0xff}}},\n    {{{     0,     11,     30}, 0, {     0,      0}, {0xd3, 0xda, 0x6f, 0xff}}},\n    {{{   -30,     14,      7}, 0, {     0,      0}, {0x95, 0xd4, 0x33, 0xff}}},\n    {{{     2,     -6,     25}, 0, {     0,      0}, {0xd5, 0xac, 0x54, 0xff}}},\n    {{{    66,    -17,     14}, 0, {     0,      0}, {0x1e, 0x88, 0x1b, 0xff}}},\n    {{{    60,    -12,     30}, 0, {     0,      0}, {0x20, 0xb2, 0x5e, 0xff}}},\n};\n\n// 0x0801BC40\nstatic const Vtx goomba_seg8_vertex_0801BC40[] = {\n    {{{    60,    -12,    -44}, 0, {     0,      0}, {0x20, 0xb2, 0xa2, 0xff}}},\n    {{{    66,    -17,    -29}, 0, {     0,      0}, {0x1e, 0x88, 0xe5, 0x00}}},\n    {{{     4,    -12,    -26}, 0, {     0,      0}, {0xe1, 0x87, 0xea, 0x00}}},\n    {{{     2,     -6,    -39}, 0, {     0,      0}, {0xd5, 0xac, 0xac, 0xff}}},\n    {{{    66,    -17,     14}, 0, {     0,      0}, {0x1e, 0x88, 0x1b, 0xff}}},\n    {{{    85,     -4,     14}, 0, {     0,      0}, {0x5d, 0xb8, 0x2d, 0xff}}},\n    {{{    60,    -12,     30}, 0, {     0,      0}, {0x20, 0xb2, 0x5e, 0xff}}},\n    {{{    85,     -4,    -29}, 0, {     0,      0}, {0x5d, 0xb8, 0xd3, 0xff}}},\n    {{{   -25,      0,    -19}, 0, {     0,      0}, {0xad, 0xa9, 0xda, 0xff}}},\n    {{{     2,     -6,     25}, 0, {     0,      0}, {0xd5, 0xac, 0x54, 0xff}}},\n    {{{   -25,      0,      4}, 0, {     0,      0}, {0xad, 0xa9, 0x26, 0xff}}},\n    {{{     4,    -12,     11}, 0, {     0,      0}, {0xe1, 0x87, 0x16, 0xff}}},\n    {{{    60,     14,     37}, 0, {     0,      0}, {0x1f, 0xe1, 0x76, 0xff}}},\n    {{{     0,     11,     30}, 0, {     0,      0}, {0xd3, 0xda, 0x6f, 0xff}}},\n    {{{     0,     11,    -45}, 0, {     0,      0}, {0xd3, 0xda, 0x91, 0xff}}},\n    {{{    60,     14,    -51}, 0, {     0,      0}, {0x1f, 0xe1, 0x8a, 0xff}}},\n};\n\n// 0x0801BD40\nstatic const Vtx goomba_seg8_vertex_0801BD40[] = {\n    {{{   -25,      0,    -19}, 0, {     0,      0}, {0xad, 0xa9, 0xda, 0xff}}},\n    {{{   -25,      0,      4}, 0, {     0,      0}, {0xad, 0xa9, 0x26, 0x00}}},\n    {{{   -30,     14,      7}, 0, {     0,      0}, {0x95, 0xd4, 0x33, 0x00}}},\n    {{{   -30,     14,    -21}, 0, {     0,      0}, {0x95, 0xd4, 0xcd, 0xff}}},\n    {{{    85,     -4,     14}, 0, {     0,      0}, {0x5d, 0xb8, 0x2d, 0xff}}},\n    {{{    85,     -4,    -29}, 0, {     0,      0}, {0x5d, 0xb8, 0xd3, 0xff}}},\n    {{{    90,     14,    -29}, 0, {     0,      0}, {0x6c, 0xdf, 0xc8, 0xff}}},\n    {{{    90,     14,     14}, 0, {     0,      0}, {0x6c, 0xdf, 0x38, 0xff}}},\n};\n\n// 0x0801BDC0\nstatic const Vtx goomba_seg8_vertex_0801BDC0[] = {\n    {{{   -24,    108,    -74}, 0, {     0,      0}, {0xbd, 0x62, 0xd6, 0x00}}},\n    {{{    -1,    128,      0}, 0, {     0,      0}, {0xf3, 0x7e, 0x00, 0x00}}},\n    {{{    81,    109,      0}, 0, {     0,      0}, {0x2a, 0x77, 0x00, 0x00}}},\n    {{{    79,     97,    -51}, 0, {     0,      0}, {0x22, 0x6c, 0xc8, 0xff}}},\n    {{{   -24,   -108,     58}, 0, {     0,      0}, {0xbc, 0x9d, 0x28, 0xff}}},\n    {{{    -1,   -128,      0}, 0, {     0,      0}, {0xef, 0x83, 0x00, 0xff}}},\n    {{{    81,   -109,      0}, 0, {     0,      0}, {0x28, 0x88, 0x00, 0xff}}},\n    {{{    79,    -97,     61}, 0, {     0,      0}, {0x20, 0x95, 0x3a, 0xff}}},\n    {{{   155,     67,      0}, 0, {     0,      0}, {0x63, 0x4f, 0x00, 0xff}}},\n    {{{   175,      0,      0}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   155,      0,    -73}, 0, {     0,      0}, {0x65, 0x00, 0xb4, 0xff}}},\n    {{{   142,     64,    -68}, 0, {     0,      0}, {0x4d, 0x4b, 0xbe, 0xff}}},\n    {{{   -51,    -49,    -52}, 0, {     0,      0}, {0x87, 0xe6, 0xe8, 0xff}}},\n    {{{   -51,    -49,     52}, 0, {     0,      0}, {0x87, 0xe6, 0x18, 0xff}}},\n    {{{   -51,     49,     52}, 0, {     0,      0}, {0x86, 0x17, 0x19, 0xff}}},\n    {{{   -51,     49,    -52}, 0, {     0,      0}, {0x86, 0x17, 0xe7, 0xff}}},\n};\n\n// 0x0801BEC0\nstatic const Vtx goomba_seg8_vertex_0801BEC0[] = {\n    {{{   -23,     55,    117}, 0, {     0,      0}, {0xbb, 0x2a, 0x61, 0xff}}},\n    {{{    -1,      0,    139}, 0, {     0,      0}, {0xed, 0x00, 0x7d, 0x00}}},\n    {{{    81,      0,    118}, 0, {     0,      0}, {0x2c, 0x00, 0x77, 0x00}}},\n    {{{    79,     57,    104}, 0, {     0,      0}, {0x23, 0x43, 0x65, 0xff}}},\n    {{{   -23,    -55,   -117}, 0, {     0,      0}, {0xba, 0xd3, 0xa1, 0xff}}},\n    {{{    -1,      0,   -139}, 0, {     0,      0}, {0xed, 0x00, 0x83, 0xff}}},\n    {{{    81,      0,   -118}, 0, {     0,      0}, {0x2c, 0x00, 0x89, 0xff}}},\n    {{{    79,    -57,   -104}, 0, {     0,      0}, {0x21, 0xbf, 0x99, 0xff}}},\n    {{{   -24,   -108,    -58}, 0, {     0,      0}, {0xbc, 0x9d, 0xd8, 0xff}}},\n    {{{   -51,    -49,    -52}, 0, {     0,      0}, {0x87, 0xe6, 0xe8, 0xff}}},\n    {{{   142,    -64,    -68}, 0, {     0,      0}, {0x4f, 0xb8, 0xbd, 0xff}}},\n    {{{    79,    -97,    -61}, 0, {     0,      0}, {0x20, 0x95, 0xc6, 0xff}}},\n    {{{    79,    -57,    104}, 0, {     0,      0}, {0x21, 0xbf, 0x67, 0xff}}},\n    {{{    79,    -97,     61}, 0, {     0,      0}, {0x20, 0x95, 0x3a, 0xff}}},\n    {{{   142,    -64,     68}, 0, {     0,      0}, {0x4f, 0xb8, 0x43, 0xff}}},\n};\n\n// 0x0801BFB0\nstatic const Vtx goomba_seg8_vertex_0801BFB0[] = {\n    {{{   -24,   -108,     58}, 0, {     0,      0}, {0xbc, 0x9d, 0x28, 0xff}}},\n    {{{   -23,    -55,    117}, 0, {     0,      0}, {0xba, 0xd3, 0x5f, 0x00}}},\n    {{{   -51,    -49,     52}, 0, {     0,      0}, {0x87, 0xe6, 0x18, 0x00}}},\n    {{{   -23,     55,    117}, 0, {     0,      0}, {0xbb, 0x2a, 0x61, 0xff}}},\n    {{{   -24,    108,     74}, 0, {     0,      0}, {0xbd, 0x62, 0x2a, 0xff}}},\n    {{{   -51,     49,     52}, 0, {     0,      0}, {0x86, 0x17, 0x19, 0xff}}},\n    {{{   142,     64,     68}, 0, {     0,      0}, {0x4d, 0x4b, 0x42, 0xff}}},\n    {{{    79,     97,     51}, 0, {     0,      0}, {0x22, 0x6c, 0x38, 0xff}}},\n    {{{    79,     57,    104}, 0, {     0,      0}, {0x23, 0x43, 0x65, 0xff}}},\n    {{{    79,     57,   -104}, 0, {     0,      0}, {0x23, 0x43, 0x9b, 0xff}}},\n    {{{    79,     97,    -51}, 0, {     0,      0}, {0x22, 0x6c, 0xc8, 0xff}}},\n    {{{   142,     64,    -68}, 0, {     0,      0}, {0x4d, 0x4b, 0xbe, 0xff}}},\n    {{{   -24,    108,    -74}, 0, {     0,      0}, {0xbd, 0x62, 0xd6, 0xff}}},\n    {{{   -23,     55,   -117}, 0, {     0,      0}, {0xbb, 0x2a, 0x9f, 0xff}}},\n    {{{   -51,     49,    -52}, 0, {     0,      0}, {0x86, 0x17, 0xe7, 0xff}}},\n};\n\n// 0x0801C0A0\nstatic const Vtx goomba_seg8_vertex_0801C0A0[] = {\n    {{{   -23,    -55,   -117}, 0, {     0,      0}, {0xba, 0xd3, 0xa1, 0xff}}},\n    {{{   -51,    -49,    -52}, 0, {     0,      0}, {0x87, 0xe6, 0xe8, 0x00}}},\n    {{{   -51,     49,    -52}, 0, {     0,      0}, {0x86, 0x17, 0xe7, 0x00}}},\n    {{{   -23,     55,   -117}, 0, {     0,      0}, {0xbb, 0x2a, 0x9f, 0xff}}},\n    {{{   155,      0,     73}, 0, {     0,      0}, {0x65, 0x00, 0x4c, 0xff}}},\n    {{{   142,     64,     68}, 0, {     0,      0}, {0x4d, 0x4b, 0x42, 0xff}}},\n    {{{    79,     57,    104}, 0, {     0,      0}, {0x23, 0x43, 0x65, 0xff}}},\n    {{{    81,      0,    118}, 0, {     0,      0}, {0x2c, 0x00, 0x77, 0xff}}},\n    {{{   155,      0,    -73}, 0, {     0,      0}, {0x65, 0x00, 0xb4, 0xff}}},\n    {{{   142,    -64,    -68}, 0, {     0,      0}, {0x4f, 0xb8, 0xbd, 0xff}}},\n    {{{    79,    -57,   -104}, 0, {     0,      0}, {0x21, 0xbf, 0x99, 0xff}}},\n    {{{    81,      0,   -118}, 0, {     0,      0}, {0x2c, 0x00, 0x89, 0xff}}},\n    {{{   -24,   -108,    -58}, 0, {     0,      0}, {0xbc, 0x9d, 0xd8, 0xff}}},\n    {{{   -24,   -108,     58}, 0, {     0,      0}, {0xbc, 0x9d, 0x28, 0xff}}},\n    {{{   -51,    -49,     52}, 0, {     0,      0}, {0x87, 0xe6, 0x18, 0xff}}},\n    {{{    79,    -97,    -61}, 0, {     0,      0}, {0x20, 0x95, 0xc6, 0xff}}},\n};\n\n// 0x0801C1A0\nstatic const Vtx goomba_seg8_vertex_0801C1A0[] = {\n    {{{   142,    -64,     68}, 0, {     0,      0}, {0x4f, 0xb8, 0x43, 0xff}}},\n    {{{    79,    -97,     61}, 0, {     0,      0}, {0x20, 0x95, 0x3a, 0x00}}},\n    {{{    81,   -109,      0}, 0, {     0,      0}, {0x28, 0x88, 0x00, 0x00}}},\n    {{{   155,    -67,      0}, 0, {     0,      0}, {0x63, 0xb2, 0x00, 0xff}}},\n    {{{   -23,    -55,    117}, 0, {     0,      0}, {0xba, 0xd3, 0x5f, 0xff}}},\n    {{{   -24,   -108,     58}, 0, {     0,      0}, {0xbc, 0x9d, 0x28, 0xff}}},\n    {{{    79,    -57,    104}, 0, {     0,      0}, {0x21, 0xbf, 0x67, 0xff}}},\n    {{{   -51,     49,     52}, 0, {     0,      0}, {0x86, 0x17, 0x19, 0xff}}},\n    {{{   -24,    108,     74}, 0, {     0,      0}, {0xbd, 0x62, 0x2a, 0xff}}},\n    {{{   -24,    108,    -74}, 0, {     0,      0}, {0xbd, 0x62, 0xd6, 0xff}}},\n    {{{   -51,     49,    -52}, 0, {     0,      0}, {0x86, 0x17, 0xe7, 0xff}}},\n    {{{    79,     57,    104}, 0, {     0,      0}, {0x23, 0x43, 0x65, 0xff}}},\n    {{{    79,     97,     51}, 0, {     0,      0}, {0x22, 0x6c, 0x38, 0xff}}},\n    {{{   -23,     55,    117}, 0, {     0,      0}, {0xbb, 0x2a, 0x61, 0xff}}},\n};\n\n// 0x0801C280\nstatic const Vtx goomba_seg8_vertex_0801C280[] = {\n    {{{   142,     64,    -68}, 0, {     0,      0}, {0x4d, 0x4b, 0xbe, 0xff}}},\n    {{{    79,     97,    -51}, 0, {     0,      0}, {0x22, 0x6c, 0xc8, 0x00}}},\n    {{{    81,    109,      0}, 0, {     0,      0}, {0x2a, 0x77, 0x00, 0x00}}},\n    {{{   155,     67,      0}, 0, {     0,      0}, {0x63, 0x4f, 0x00, 0xff}}},\n    {{{   -23,     55,   -117}, 0, {     0,      0}, {0xbb, 0x2a, 0x9f, 0xff}}},\n    {{{   -24,    108,    -74}, 0, {     0,      0}, {0xbd, 0x62, 0xd6, 0xff}}},\n    {{{    79,     57,   -104}, 0, {     0,      0}, {0x23, 0x43, 0x9b, 0xff}}},\n    {{{    -1,   -128,      0}, 0, {     0,      0}, {0xef, 0x83, 0x00, 0xff}}},\n    {{{   -24,   -108,    -58}, 0, {     0,      0}, {0xbc, 0x9d, 0xd8, 0xff}}},\n    {{{    79,    -97,    -61}, 0, {     0,      0}, {0x20, 0x95, 0xc6, 0xff}}},\n    {{{    81,   -109,      0}, 0, {     0,      0}, {0x28, 0x88, 0x00, 0xff}}},\n    {{{    -1,    128,      0}, 0, {     0,      0}, {0xf3, 0x7e, 0x00, 0xff}}},\n    {{{   -24,    108,     74}, 0, {     0,      0}, {0xbd, 0x62, 0x2a, 0xff}}},\n    {{{    79,     97,     51}, 0, {     0,      0}, {0x22, 0x6c, 0x38, 0xff}}},\n};\n\n// 0x0801C360\nstatic const Vtx goomba_seg8_vertex_0801C360[] = {\n    {{{    81,      0,    118}, 0, {     0,      0}, {0x2c, 0x00, 0x77, 0xff}}},\n    {{{    -1,      0,    139}, 0, {     0,      0}, {0xed, 0x00, 0x7d, 0x00}}},\n    {{{   -23,    -55,    117}, 0, {     0,      0}, {0xba, 0xd3, 0x5f, 0x00}}},\n    {{{    79,    -57,    104}, 0, {     0,      0}, {0x21, 0xbf, 0x67, 0xff}}},\n    {{{    -1,      0,   -139}, 0, {     0,      0}, {0xed, 0x00, 0x83, 0xff}}},\n    {{{   -23,     55,   -117}, 0, {     0,      0}, {0xbb, 0x2a, 0x9f, 0xff}}},\n    {{{    79,     57,   -104}, 0, {     0,      0}, {0x23, 0x43, 0x9b, 0xff}}},\n    {{{    81,      0,   -118}, 0, {     0,      0}, {0x2c, 0x00, 0x89, 0xff}}},\n    {{{   155,      0,    -73}, 0, {     0,      0}, {0x65, 0x00, 0xb4, 0xff}}},\n    {{{   175,      0,      0}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   155,    -67,      0}, 0, {     0,      0}, {0x63, 0xb2, 0x00, 0xff}}},\n    {{{   142,    -64,    -68}, 0, {     0,      0}, {0x4f, 0xb8, 0xbd, 0xff}}},\n    {{{   155,      0,     73}, 0, {     0,      0}, {0x65, 0x00, 0x4c, 0xff}}},\n    {{{   142,    -64,     68}, 0, {     0,      0}, {0x4f, 0xb8, 0x43, 0xff}}},\n    {{{   155,     67,      0}, 0, {     0,      0}, {0x63, 0x4f, 0x00, 0xff}}},\n    {{{   142,     64,     68}, 0, {     0,      0}, {0x4d, 0x4b, 0x42, 0xff}}},\n};\n\n// 0x0801C460\nstatic const Vtx goomba_seg8_vertex_0801C460[] = {\n    {{{    81,    109,      0}, 0, {     0,      0}, {0x2a, 0x77, 0x00, 0xff}}},\n    {{{    79,     97,     51}, 0, {     0,      0}, {0x22, 0x6c, 0x38, 0x00}}},\n    {{{   142,     64,     68}, 0, {     0,      0}, {0x4d, 0x4b, 0x42, 0x00}}},\n    {{{   155,     67,      0}, 0, {     0,      0}, {0x63, 0x4f, 0x00, 0xff}}},\n    {{{    81,      0,    118}, 0, {     0,      0}, {0x2c, 0x00, 0x77, 0xff}}},\n    {{{    79,    -57,    104}, 0, {     0,      0}, {0x21, 0xbf, 0x67, 0xff}}},\n    {{{   142,    -64,     68}, 0, {     0,      0}, {0x4f, 0xb8, 0x43, 0xff}}},\n    {{{   155,      0,     73}, 0, {     0,      0}, {0x65, 0x00, 0x4c, 0xff}}},\n    {{{    81,      0,   -118}, 0, {     0,      0}, {0x2c, 0x00, 0x89, 0xff}}},\n    {{{    79,     57,   -104}, 0, {     0,      0}, {0x23, 0x43, 0x9b, 0xff}}},\n    {{{   142,     64,    -68}, 0, {     0,      0}, {0x4d, 0x4b, 0xbe, 0xff}}},\n    {{{   155,      0,    -73}, 0, {     0,      0}, {0x65, 0x00, 0xb4, 0xff}}},\n    {{{    81,   -109,      0}, 0, {     0,      0}, {0x28, 0x88, 0x00, 0xff}}},\n    {{{    79,    -97,    -61}, 0, {     0,      0}, {0x20, 0x95, 0xc6, 0xff}}},\n    {{{   142,    -64,    -68}, 0, {     0,      0}, {0x4f, 0xb8, 0xbd, 0xff}}},\n    {{{   155,    -67,      0}, 0, {     0,      0}, {0x63, 0xb2, 0x00, 0xff}}},\n};\n\n// 0x0801C560\nstatic const Vtx goomba_seg8_vertex_0801C560[] = {\n    {{{   -24,    108,     74}, 0, {     0,      0}, {0xbd, 0x62, 0x2a, 0xff}}},\n    {{{    -1,    128,      0}, 0, {     0,      0}, {0xf3, 0x7e, 0x00, 0x00}}},\n    {{{   -24,    108,    -74}, 0, {     0,      0}, {0xbd, 0x62, 0xd6, 0x00}}},\n    {{{   -23,    -55,    117}, 0, {     0,      0}, {0xba, 0xd3, 0x5f, 0xff}}},\n    {{{    -1,      0,    139}, 0, {     0,      0}, {0xed, 0x00, 0x7d, 0xff}}},\n    {{{   -23,     55,    117}, 0, {     0,      0}, {0xbb, 0x2a, 0x61, 0xff}}},\n    {{{   -24,   -108,    -58}, 0, {     0,      0}, {0xbc, 0x9d, 0xd8, 0xff}}},\n    {{{    -1,   -128,      0}, 0, {     0,      0}, {0xef, 0x83, 0x00, 0xff}}},\n    {{{   -24,   -108,     58}, 0, {     0,      0}, {0xbc, 0x9d, 0x28, 0xff}}},\n    {{{   -23,     55,   -117}, 0, {     0,      0}, {0xbb, 0x2a, 0x9f, 0xff}}},\n    {{{    -1,      0,   -139}, 0, {     0,      0}, {0xed, 0x00, 0x83, 0xff}}},\n    {{{   -23,    -55,   -117}, 0, {     0,      0}, {0xba, 0xd3, 0xa1, 0xff}}},\n};\n\n// 0x0801C620\nstatic const Vtx goomba_seg8_vertex_0801C620[] = {\n    {{{    48,     47,      0}, 0, {     0,      0}, {0x5a, 0x59, 0x00, 0x00}}},\n    {{{    48,     38,     27}, 0, {     0,      0}, {0x5a, 0x48, 0x34, 0x00}}},\n    {{{    65,     14,     10}, 0, {     0,      0}, {0x77, 0x23, 0x19, 0x00}}},\n    {{{    65,     17,      0}, 0, {     0,      0}, {0x77, 0x2b, 0x00, 0xff}}},\n    {{{    18,     64,      0}, 0, {     0,      0}, {0x21, 0x7a, 0x00, 0xff}}},\n    {{{    18,     52,     38}, 0, {     0,      0}, {0x21, 0x63, 0x48, 0xff}}},\n    {{{   -16,     64,      0}, 0, {     0,      0}, {0xdf, 0x7a, 0x00, 0xff}}},\n    {{{   -16,     52,     38}, 0, {     0,      0}, {0xdf, 0x63, 0x48, 0xff}}},\n    {{{   -46,     47,      0}, 0, {     0,      0}, {0xa6, 0x59, 0x00, 0xff}}},\n    {{{   -46,     38,     27}, 0, {     0,      0}, {0xa6, 0x48, 0x34, 0xff}}},\n    {{{   -63,     17,      0}, 0, {     0,      0}, {0x89, 0x2b, 0x00, 0xff}}},\n    {{{   -63,     14,     10}, 0, {     0,      0}, {0x89, 0x23, 0x19, 0xff}}},\n    {{{    48,     14,     45}, 0, {     0,      0}, {0x5a, 0x1b, 0x55, 0xff}}},\n    {{{    65,      5,     16}, 0, {     0,      0}, {0x77, 0x0d, 0x29, 0xff}}},\n    {{{    18,     20,     61}, 0, {     0,      0}, {0x21, 0x25, 0x74, 0xff}}},\n    {{{   -16,     20,     61}, 0, {     0,      0}, {0xdf, 0x25, 0x74, 0xff}}},\n};\n\n// 0x0801C720\nstatic const Vtx goomba_seg8_vertex_0801C720[] = {\n    {{{   -46,     38,     27}, 0, {     0,      0}, {0xa6, 0x48, 0x34, 0xff}}},\n    {{{   -46,     14,     45}, 0, {     0,      0}, {0xa6, 0x1b, 0x55, 0x00}}},\n    {{{   -16,     20,     61}, 0, {     0,      0}, {0xdf, 0x25, 0x74, 0x00}}},\n    {{{   -16,     52,     38}, 0, {     0,      0}, {0xdf, 0x63, 0x48, 0xff}}},\n    {{{   -63,     14,     10}, 0, {     0,      0}, {0x89, 0x23, 0x19, 0xff}}},\n    {{{   -63,      5,     16}, 0, {     0,      0}, {0x89, 0x0d, 0x29, 0xff}}},\n    {{{    48,     14,     45}, 0, {     0,      0}, {0x5a, 0x1b, 0x55, 0xff}}},\n    {{{    48,    -14,     45}, 0, {     0,      0}, {0x5a, 0xe5, 0x55, 0xff}}},\n    {{{    65,     -5,     16}, 0, {     0,      0}, {0x77, 0xf3, 0x29, 0xff}}},\n    {{{    65,      5,     16}, 0, {     0,      0}, {0x77, 0x0d, 0x29, 0xff}}},\n    {{{    18,     20,     61}, 0, {     0,      0}, {0x21, 0x25, 0x74, 0xff}}},\n    {{{    18,    -20,     61}, 0, {     0,      0}, {0x21, 0xdb, 0x74, 0xff}}},\n    {{{   -16,    -20,     61}, 0, {     0,      0}, {0xdf, 0xdb, 0x74, 0xff}}},\n    {{{   -46,    -14,     45}, 0, {     0,      0}, {0xa6, 0xe5, 0x55, 0xff}}},\n    {{{   -63,     -5,     16}, 0, {     0,      0}, {0x89, 0xf3, 0x29, 0xff}}},\n};\n\n// 0x0801C810\nstatic const Vtx goomba_seg8_vertex_0801C810[] = {\n    {{{    48,    -14,     45}, 0, {     0,      0}, {0x5a, 0xe5, 0x55, 0xff}}},\n    {{{    48,    -38,     27}, 0, {     0,      0}, {0x5a, 0xb8, 0x34, 0x00}}},\n    {{{    65,    -14,     10}, 0, {     0,      0}, {0x77, 0xdd, 0x19, 0x00}}},\n    {{{    65,     -5,     16}, 0, {     0,      0}, {0x77, 0xf3, 0x29, 0xff}}},\n    {{{    18,    -20,     61}, 0, {     0,      0}, {0x21, 0xdb, 0x74, 0xff}}},\n    {{{    18,    -52,     38}, 0, {     0,      0}, {0x21, 0x9d, 0x48, 0xff}}},\n    {{{   -16,    -20,     61}, 0, {     0,      0}, {0xdf, 0xdb, 0x74, 0xff}}},\n    {{{   -16,    -52,     38}, 0, {     0,      0}, {0xdf, 0x9d, 0x48, 0xff}}},\n    {{{   -46,    -14,     45}, 0, {     0,      0}, {0xa6, 0xe5, 0x55, 0xff}}},\n    {{{   -46,    -38,     27}, 0, {     0,      0}, {0xa6, 0xb8, 0x34, 0xff}}},\n    {{{   -63,     -5,     16}, 0, {     0,      0}, {0x89, 0xf3, 0x29, 0xff}}},\n    {{{   -63,    -14,     10}, 0, {     0,      0}, {0x89, 0xdd, 0x19, 0xff}}},\n    {{{    48,    -47,      0}, 0, {     0,      0}, {0x5a, 0xa7, 0x00, 0xff}}},\n    {{{    65,    -17,      0}, 0, {     0,      0}, {0x77, 0xd5, 0x00, 0xff}}},\n    {{{    18,    -64,      0}, 0, {     0,      0}, {0x21, 0x86, 0x00, 0xff}}},\n    {{{   -16,    -64,      0}, 0, {     0,      0}, {0xdf, 0x86, 0x00, 0xff}}},\n};\n\n// 0x0801C910\nstatic const Vtx goomba_seg8_vertex_0801C910[] = {\n    {{{   -46,    -38,     27}, 0, {     0,      0}, {0xa6, 0xb8, 0x34, 0xff}}},\n    {{{   -46,    -47,      0}, 0, {     0,      0}, {0xa6, 0xa7, 0x00, 0x00}}},\n    {{{   -16,    -64,      0}, 0, {     0,      0}, {0xdf, 0x86, 0x00, 0x00}}},\n    {{{   -16,    -52,     38}, 0, {     0,      0}, {0xdf, 0x9d, 0x48, 0xff}}},\n    {{{   -63,    -14,     10}, 0, {     0,      0}, {0x89, 0xdd, 0x19, 0xff}}},\n    {{{   -63,    -17,      0}, 0, {     0,      0}, {0x89, 0xd5, 0x00, 0xff}}},\n    {{{    48,    -47,      0}, 0, {     0,      0}, {0x5a, 0xa7, 0x00, 0xff}}},\n    {{{    48,    -38,    -27}, 0, {     0,      0}, {0x5a, 0xb8, 0xcc, 0xff}}},\n    {{{    65,    -14,    -10}, 0, {     0,      0}, {0x77, 0xdd, 0xe7, 0xff}}},\n    {{{    65,    -17,      0}, 0, {     0,      0}, {0x77, 0xd5, 0x00, 0xff}}},\n    {{{    18,    -64,      0}, 0, {     0,      0}, {0x21, 0x86, 0x00, 0xff}}},\n    {{{    18,    -52,    -38}, 0, {     0,      0}, {0x21, 0x9d, 0xb8, 0xff}}},\n    {{{   -16,    -52,    -38}, 0, {     0,      0}, {0xdf, 0x9d, 0xb8, 0xff}}},\n    {{{   -46,    -38,    -27}, 0, {     0,      0}, {0xa6, 0xb8, 0xcc, 0xff}}},\n    {{{   -63,    -14,    -10}, 0, {     0,      0}, {0x89, 0xdd, 0xe7, 0xff}}},\n};\n\n// 0x0801CA00\nstatic const Vtx goomba_seg8_vertex_0801CA00[] = {\n    {{{    48,    -38,    -27}, 0, {     0,      0}, {0x5a, 0xb8, 0xcc, 0xff}}},\n    {{{    48,    -14,    -45}, 0, {     0,      0}, {0x5a, 0xe5, 0xab, 0x00}}},\n    {{{    65,     -5,    -16}, 0, {     0,      0}, {0x77, 0xf3, 0xd7, 0x00}}},\n    {{{    65,    -14,    -10}, 0, {     0,      0}, {0x77, 0xdd, 0xe7, 0xff}}},\n    {{{    18,    -52,    -38}, 0, {     0,      0}, {0x21, 0x9d, 0xb8, 0xff}}},\n    {{{    18,    -20,    -61}, 0, {     0,      0}, {0x21, 0xdb, 0x8c, 0xff}}},\n    {{{   -16,    -52,    -38}, 0, {     0,      0}, {0xdf, 0x9d, 0xb8, 0xff}}},\n    {{{   -16,    -20,    -61}, 0, {     0,      0}, {0xdf, 0xdb, 0x8c, 0xff}}},\n    {{{   -46,    -38,    -27}, 0, {     0,      0}, {0xa6, 0xb8, 0xcc, 0xff}}},\n    {{{   -46,    -14,    -45}, 0, {     0,      0}, {0xa6, 0xe5, 0xab, 0xff}}},\n    {{{   -63,    -14,    -10}, 0, {     0,      0}, {0x89, 0xdd, 0xe7, 0xff}}},\n    {{{   -63,     -5,    -16}, 0, {     0,      0}, {0x89, 0xf3, 0xd7, 0xff}}},\n    {{{    48,     14,    -45}, 0, {     0,      0}, {0x5a, 0x1b, 0xab, 0xff}}},\n    {{{    65,      5,    -16}, 0, {     0,      0}, {0x77, 0x0d, 0xd7, 0xff}}},\n    {{{    18,     20,    -61}, 0, {     0,      0}, {0x21, 0x25, 0x8c, 0xff}}},\n    {{{   -16,     20,    -61}, 0, {     0,      0}, {0xdf, 0x25, 0x8c, 0xff}}},\n};\n\n// 0x0801CB00\nstatic const Vtx goomba_seg8_vertex_0801CB00[] = {\n    {{{   -46,    -14,    -45}, 0, {     0,      0}, {0xa6, 0xe5, 0xab, 0xff}}},\n    {{{   -46,     14,    -45}, 0, {     0,      0}, {0xa6, 0x1b, 0xab, 0x00}}},\n    {{{   -16,     20,    -61}, 0, {     0,      0}, {0xdf, 0x25, 0x8c, 0x00}}},\n    {{{   -16,    -20,    -61}, 0, {     0,      0}, {0xdf, 0xdb, 0x8c, 0xff}}},\n    {{{   -63,     -5,    -16}, 0, {     0,      0}, {0x89, 0xf3, 0xd7, 0xff}}},\n    {{{   -63,      5,    -16}, 0, {     0,      0}, {0x89, 0x0d, 0xd7, 0xff}}},\n    {{{    48,     14,    -45}, 0, {     0,      0}, {0x5a, 0x1b, 0xab, 0xff}}},\n    {{{    48,     38,    -27}, 0, {     0,      0}, {0x5a, 0x48, 0xcc, 0xff}}},\n    {{{    65,     14,    -10}, 0, {     0,      0}, {0x77, 0x23, 0xe7, 0xff}}},\n    {{{    65,      5,    -16}, 0, {     0,      0}, {0x77, 0x0d, 0xd7, 0xff}}},\n    {{{    18,     20,    -61}, 0, {     0,      0}, {0x21, 0x25, 0x8c, 0xff}}},\n    {{{    18,     52,    -38}, 0, {     0,      0}, {0x21, 0x63, 0xb8, 0xff}}},\n    {{{   -16,     52,    -38}, 0, {     0,      0}, {0xdf, 0x63, 0xb8, 0xff}}},\n    {{{   -46,     38,    -27}, 0, {     0,      0}, {0xa6, 0x48, 0xcc, 0xff}}},\n    {{{   -63,     14,    -10}, 0, {     0,      0}, {0x89, 0x23, 0xe7, 0xff}}},\n};\n\n// 0x0801CBF0\nstatic const Vtx goomba_seg8_vertex_0801CBF0[] = {\n    {{{    48,     38,    -27}, 0, {     0,      0}, {0x5a, 0x48, 0xcc, 0xff}}},\n    {{{    48,     47,      0}, 0, {     0,      0}, {0x5a, 0x59, 0x00, 0x00}}},\n    {{{    65,     17,      0}, 0, {     0,      0}, {0x77, 0x2b, 0x00, 0x00}}},\n    {{{    65,     14,    -10}, 0, {     0,      0}, {0x77, 0x23, 0xe7, 0xff}}},\n    {{{    18,     52,    -38}, 0, {     0,      0}, {0x21, 0x63, 0xb8, 0xff}}},\n    {{{    18,     64,      0}, 0, {     0,      0}, {0x21, 0x7a, 0x00, 0xff}}},\n    {{{   -16,     52,    -38}, 0, {     0,      0}, {0xdf, 0x63, 0xb8, 0xff}}},\n    {{{   -16,     64,      0}, 0, {     0,      0}, {0xdf, 0x7a, 0x00, 0xff}}},\n    {{{   -46,     38,    -27}, 0, {     0,      0}, {0xa6, 0x48, 0xcc, 0xff}}},\n    {{{   -46,     47,      0}, 0, {     0,      0}, {0xa6, 0x59, 0x00, 0xff}}},\n    {{{   -63,     14,    -10}, 0, {     0,      0}, {0x89, 0x23, 0xe7, 0xff}}},\n    {{{   -63,     17,      0}, 0, {     0,      0}, {0x89, 0x2b, 0x00, 0xff}}},\n    {{{    65,     14,     10}, 0, {     0,      0}, {0x77, 0x23, 0x19, 0xff}}},\n    {{{    65,      5,     16}, 0, {     0,      0}, {0x77, 0x0d, 0x29, 0xff}}},\n    {{{    65,     -5,     16}, 0, {     0,      0}, {0x77, 0xf3, 0x29, 0xff}}},\n    {{{    65,    -14,     10}, 0, {     0,      0}, {0x77, 0xdd, 0x19, 0xff}}},\n};\n\n// 0x0801CCF0\nstatic const Vtx goomba_seg8_vertex_0801CCF0[] = {\n    {{{    65,     17,      0}, 0, {     0,      0}, {0x77, 0x2b, 0x00, 0xff}}},\n    {{{    65,    -14,     10}, 0, {     0,      0}, {0x77, 0xdd, 0x19, 0x00}}},\n    {{{    65,    -17,      0}, 0, {     0,      0}, {0x77, 0xd5, 0x00, 0x00}}},\n    {{{    65,    -14,    -10}, 0, {     0,      0}, {0x77, 0xdd, 0xe7, 0xff}}},\n    {{{    65,     -5,    -16}, 0, {     0,      0}, {0x77, 0xf3, 0xd7, 0xff}}},\n    {{{    65,      5,    -16}, 0, {     0,      0}, {0x77, 0x0d, 0xd7, 0xff}}},\n    {{{    65,     14,    -10}, 0, {     0,      0}, {0x77, 0x23, 0xe7, 0xff}}},\n    {{{   -63,     17,      0}, 0, {     0,      0}, {0x89, 0x2b, 0x00, 0xff}}},\n    {{{   -63,     14,    -10}, 0, {     0,      0}, {0x89, 0x23, 0xe7, 0xff}}},\n    {{{   -63,      5,    -16}, 0, {     0,      0}, {0x89, 0x0d, 0xd7, 0xff}}},\n    {{{   -63,     -5,    -16}, 0, {     0,      0}, {0x89, 0xf3, 0xd7, 0xff}}},\n    {{{   -63,    -14,    -10}, 0, {     0,      0}, {0x89, 0xdd, 0xe7, 0xff}}},\n    {{{   -63,    -17,      0}, 0, {     0,      0}, {0x89, 0xd5, 0x00, 0xff}}},\n    {{{   -63,    -14,     10}, 0, {     0,      0}, {0x89, 0xdd, 0x19, 0xff}}},\n    {{{   -63,     -5,     16}, 0, {     0,      0}, {0x89, 0xf3, 0x29, 0xff}}},\n    {{{   -63,      5,     16}, 0, {     0,      0}, {0x89, 0x0d, 0x29, 0xff}}},\n};\n\n// 0x0801CDF0\nstatic const Vtx goomba_seg8_vertex_0801CDF0[] = {\n    {{{   -63,     17,      0}, 0, {     0,      0}, {0x89, 0x2b, 0x00, 0xff}}},\n    {{{   -63,      5,     16}, 0, {     0,      0}, {0x89, 0x0d, 0x29, 0x00}}},\n    {{{   -63,     14,     10}, 0, {     0,      0}, {0x89, 0x23, 0x19, 0x00}}},\n};\n\n// 0x0801CE20 - 0x0801CF78\nconst Gfx goomba_seg8_dl_0801CE20[] = {\n    gsSPLight(&goomba_seg8_lights_080194D0.l, 1),\n    gsSPLight(&goomba_seg8_lights_080194D0.a, 2),\n    gsSPVertex(goomba_seg8_vertex_0801B700, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(goomba_seg8_vertex_0801B800, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  3, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  2, 12, 13, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0,  6,  9, 11, 0x0),\n    gsSP2Triangles( 2, 13,  4, 0x0,  2,  4,  3, 0x0),\n    gsSP2Triangles( 3,  5, 14, 0x0,  3, 14,  0, 0x0),\n    gsSP2Triangles( 8,  7,  5, 0x0,  8,  5,  4, 0x0),\n    gsSPVertex(goomba_seg8_vertex_0801B8F0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9,  5, 0x0,  8,  5, 10, 0x0),\n    gsSP2Triangles(11, 12,  9, 0x0, 11,  9, 13, 0x0),\n    gsSPVertex(goomba_seg8_vertex_0801B9D0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 2,  4,  7, 0x0,  2,  7,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0801CF78 - 0x0801D0D0\nconst Gfx goomba_seg8_dl_0801CF78[] = {\n    gsSPLight(&goomba_seg8_lights_080194E8.l, 1),\n    gsSPLight(&goomba_seg8_lights_080194E8.a, 2),\n    gsSPVertex(goomba_seg8_vertex_0801BA50, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles( 0,  3,  6, 0x0,  0,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13,  9, 0x0, 12,  9, 14, 0x0),\n    gsSPVertex(goomba_seg8_vertex_0801BB40, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9,  5, 0x0,  8,  5, 10, 0x0),\n    gsSP2Triangles(11, 12,  9, 0x0, 11,  9, 13, 0x0),\n    gsSP2Triangles(13,  8, 14, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(goomba_seg8_vertex_0801BC40, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  0,  7,  1, 0x0),\n    gsSP2Triangles( 2,  8,  3, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9,  6, 12, 0x0,  9, 12, 13, 0x0),\n    gsSP2Triangles( 0,  3, 14, 0x0,  0, 14, 15, 0x0),\n    gsSP2Triangles(11,  2,  1, 0x0, 11,  1,  4, 0x0),\n    gsSPVertex(goomba_seg8_vertex_0801BD40, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0801D0D0 - 0x0801D360\nconst Gfx goomba_seg8_dl_0801D0D0[] = {\n    gsSPLight(&goomba_seg8_lights_08019500.l, 1),\n    gsSPLight(&goomba_seg8_lights_08019500.a, 2),\n    gsSPVertex(goomba_seg8_vertex_0801BDC0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(goomba_seg8_vertex_0801BEC0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 4,  8,  9, 0x0, 10, 11,  7, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(goomba_seg8_vertex_0801BFB0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0,  3,  5,  2, 0x0),\n    gsSP1Triangle( 3,  2,  1, 0x0),\n    gsSPVertex(goomba_seg8_vertex_0801C0A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 1, 12, 13, 0x0,  1, 13, 14, 0x0),\n    gsSP2Triangles(10, 15, 12, 0x0, 10, 12,  0, 0x0),\n    gsSPVertex(goomba_seg8_vertex_0801C1A0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  1, 0x0,  4,  1,  6, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles(11, 12,  8, 0x0, 11,  8, 13, 0x0),\n    gsSPVertex(goomba_seg8_vertex_0801C280, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  1, 0x0,  4,  1,  6, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 13,  2, 0x0),\n    gsSPVertex(goomba_seg8_vertex_0801C360, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(10,  9, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP2Triangles(12,  9, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(goomba_seg8_vertex_0801C460, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(goomba_seg8_vertex_0801C560, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0801D360 - 0x0801D760\nconst Gfx goomba_seg8_dl_0801D360[] = {\n    gsSPLight(&goomba_seg8_lights_08019518.l, 1),\n    gsSPLight(&goomba_seg8_lights_08019518.a, 2),\n    gsSPVertex(goomba_seg8_vertex_0801C620, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  1, 0x0,  4,  1,  0, 0x0),\n    gsSP2Triangles( 6,  7,  5, 0x0,  6,  5,  4, 0x0),\n    gsSP2Triangles( 8,  9,  7, 0x0,  8,  7,  6, 0x0),\n    gsSP2Triangles(10, 11,  9, 0x0, 10,  9,  8, 0x0),\n    gsSP2Triangles( 1, 12, 13, 0x0,  1, 13,  2, 0x0),\n    gsSP2Triangles( 5, 14, 12, 0x0,  5, 12,  1, 0x0),\n    gsSP2Triangles( 7, 15, 14, 0x0,  7, 14,  5, 0x0),\n    gsSPVertex(goomba_seg8_vertex_0801C720, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  1, 0x0,  4,  1,  0, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11,  7, 0x0, 10,  7,  6, 0x0),\n    gsSP2Triangles( 2, 12, 11, 0x0,  2, 11, 10, 0x0),\n    gsSP2Triangles( 1, 13, 12, 0x0,  1, 12,  2, 0x0),\n    gsSP2Triangles( 5, 14, 13, 0x0,  5, 13,  1, 0x0),\n    gsSPVertex(goomba_seg8_vertex_0801C810, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  1, 0x0,  4,  1,  0, 0x0),\n    gsSP2Triangles( 6,  7,  5, 0x0,  6,  5,  4, 0x0),\n    gsSP2Triangles( 8,  9,  7, 0x0,  8,  7,  6, 0x0),\n    gsSP2Triangles(10, 11,  9, 0x0, 10,  9,  8, 0x0),\n    gsSP2Triangles( 1, 12, 13, 0x0,  1, 13,  2, 0x0),\n    gsSP2Triangles( 5, 14, 12, 0x0,  5, 12,  1, 0x0),\n    gsSP2Triangles( 7, 15, 14, 0x0,  7, 14,  5, 0x0),\n    gsSPVertex(goomba_seg8_vertex_0801C910, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  1, 0x0,  4,  1,  0, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11,  7, 0x0, 10,  7,  6, 0x0),\n    gsSP2Triangles( 2, 12, 11, 0x0,  2, 11, 10, 0x0),\n    gsSP2Triangles( 1, 13, 12, 0x0,  1, 12,  2, 0x0),\n    gsSP2Triangles( 5, 14, 13, 0x0,  5, 13,  1, 0x0),\n    gsSPVertex(goomba_seg8_vertex_0801CA00, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  1, 0x0,  4,  1,  0, 0x0),\n    gsSP2Triangles( 6,  7,  5, 0x0,  6,  5,  4, 0x0),\n    gsSP2Triangles( 8,  9,  7, 0x0,  8,  7,  6, 0x0),\n    gsSP2Triangles(10, 11,  9, 0x0, 10,  9,  8, 0x0),\n    gsSP2Triangles( 1, 12, 13, 0x0,  1, 13,  2, 0x0),\n    gsSP2Triangles( 5, 14, 12, 0x0,  5, 12,  1, 0x0),\n    gsSP2Triangles( 7, 15, 14, 0x0,  7, 14,  5, 0x0),\n    gsSPVertex(goomba_seg8_vertex_0801CB00, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  1, 0x0,  4,  1,  0, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11,  7, 0x0, 10,  7,  6, 0x0),\n    gsSP2Triangles( 2, 12, 11, 0x0,  2, 11, 10, 0x0),\n    gsSP2Triangles( 1, 13, 12, 0x0,  1, 12,  2, 0x0),\n    gsSP2Triangles( 5, 14, 13, 0x0,  5, 13,  1, 0x0),\n    gsSPVertex(goomba_seg8_vertex_0801CBF0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  1, 0x0,  4,  1,  0, 0x0),\n    gsSP2Triangles( 6,  7,  5, 0x0,  6,  5,  4, 0x0),\n    gsSP2Triangles( 8,  9,  7, 0x0,  8,  7,  6, 0x0),\n    gsSP2Triangles(10, 11,  9, 0x0, 10,  9,  8, 0x0),\n    gsSP2Triangles( 2, 12, 13, 0x0,  2, 13, 14, 0x0),\n    gsSP1Triangle( 2, 14, 15, 0x0),\n    gsSPVertex(goomba_seg8_vertex_0801CCF0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  0,  4,  5, 0x0),\n    gsSP2Triangles( 0,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  7, 10, 11, 0x0),\n    gsSP2Triangles( 7, 11, 12, 0x0,  7, 12, 13, 0x0),\n    gsSP2Triangles( 7, 13, 14, 0x0,  7, 14, 15, 0x0),\n    gsSPVertex(goomba_seg8_vertex_0801CDF0, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0801D760 - 0x0801D770\nconst Gfx goomba_seg8_dl_0801D760[] = {\n    gsSPNumLights(NUMLIGHTS_1),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/group0.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"surface_terrains.h\"\n#include \"geo_commands.h\"\n\n#include \"make_const_nonconst.h\"\n\n// Note: This bin does not use bin IDs, unlike the other segmented bins.\n#include \"mario/model.inc.c\"\n\n#include \"bubble/model.inc.c\"\n\n#include \"walk_smoke/model.inc.c\"\n\n#include \"burn_smoke/model.inc.c\"\n\n#include \"stomp_smoke/model.inc.c\"\n\n#include \"water_wave/model.inc.c\"\n\n#include \"sparkle/model.inc.c\"\n\n#include \"water_splash/model.inc.c\"\n\n#include \"white_particle_small/model.inc.c\"\n\n#include \"sparkle_animation/model.inc.c\"\n"
  },
  {
    "path": "actors/group0.h",
    "content": "#ifndef GROUP0_H\n#define GROUP0_H\n\n#include \"types.h\"\n\n// bubble\nextern const GeoLayout bubble_geo[];\nextern const GeoLayout purple_marble_geo[];\nextern const Gfx bubble_seg4_dl_0401DD60[];\nextern const Gfx bubble_seg4_dl_0401DDE0[];\n\n// burn_smoke\nextern const GeoLayout burn_smoke_geo[];\nextern const Gfx burn_smoke_seg4_dl_04022000[];\nextern const Gfx burn_smoke_seg4_dl_04022028[];\nextern const Gfx burn_smoke_seg4_dl_04022048[];\nextern const Gfx burn_smoke_seg4_dl_04022070[];\n\n// mario\nextern const GeoLayout mario_geo_face_and_wings[];\nextern const GeoLayout mario_geo_left_hand[];\nextern const GeoLayout mario_geo_right_hand[];\nextern const GeoLayout mario_geo_body[];\nextern const GeoLayout mario_geo_medium_poly_left_hand[];\nextern const GeoLayout mario_geo_medium_poly_right_hand[];\nextern const GeoLayout mario_geo_medium_poly_body[];\nextern const GeoLayout mario_geo_low_poly_face_and_wings[];\nextern const GeoLayout mario_geo_low_poly_left_hand[];\nextern const GeoLayout mario_geo_low_poly_right_hand[];\nextern const GeoLayout mario_geo_low_poly_body[];\nextern const GeoLayout mario_vanish_geo_face_and_wings[];\nextern const GeoLayout mario_vanish_geo_left_hand[];\nextern const GeoLayout mario_vanish_geo_right_hand[];\nextern const GeoLayout mario_vanish_geo_body[];\nextern const GeoLayout mario_vanish_geo_medium_poly_left_hand[];\nextern const GeoLayout mario_vanish_geo_medium_poly_right_hand[];\nextern const GeoLayout mario_vanish_geo_medium_poly_body[];\nextern const GeoLayout mario_vanish_geo_low_poly_face_and_wings[];\nextern const GeoLayout mario_vanish_geo_low_poly_left_hand[];\nextern const GeoLayout mario_vanish_geo_low_poly_right_hand[];\nextern const GeoLayout mario_vanish_geo_low_poly_body[];\nextern const GeoLayout mario_metal_geo_face_and_wings[];\nextern const GeoLayout mario_metal_geo_left_hand[];\nextern const GeoLayout mario_metal_geo_right_hand[];\nextern const GeoLayout mario_metal_geo_body[];\nextern const GeoLayout mario_metal_geo_medium_poly_left_hand[];\nextern const GeoLayout mario_metal_geo_medium_poly_right_hand[];\nextern const GeoLayout mario_metal_geo_medium_poly_body[];\nextern const GeoLayout mario_metal_geo_low_poly_face_and_wings[];\nextern const GeoLayout mario_metal_geo_low_poly_left_hand[];\nextern const GeoLayout mario_metal_geo_low_poly_right_hand[];\nextern const GeoLayout mario_metal_geo_low_poly_body[];\nextern const GeoLayout mario_metal_vanish_geo_face_and_wings[];\nextern const GeoLayout mario_metal_vanish_geo_left_hand[];\nextern const GeoLayout mario_metal_vanish_geo_right_hand[];\nextern const GeoLayout mario_metal_vanish_geo_body[];\nextern const GeoLayout mario_metal_vanish_geo_medium_poly_left_hand[];\nextern const GeoLayout mario_metal_vanish_geo_medium_poly_right_hand[];\nextern const GeoLayout mario_metal_vanish_geo_medium_poly_body[];\nextern const GeoLayout mario_metal_vanish_geo_low_poly_face_and_wings[];\nextern const GeoLayout mario_metal_vanish_geo_low_poly_left_hand[];\nextern const GeoLayout mario_metal_vanish_geo_low_poly_right_hand[];\nextern const GeoLayout mario_metal_vanish_geo_low_poly_body[];\nextern const GeoLayout mario_geo_load_body[];\nextern const GeoLayout mario_geo_load_medium_poly_body[];\nextern const GeoLayout mario_geo_load_low_poly_body[];\nextern const GeoLayout mario_geo_render_body[];\nextern const GeoLayout mario_geo[];\nextern const Gfx mario_butt_dl[];\nextern const Gfx mario_butt[];\nextern const Gfx mario_metal_butt[];\nextern const Gfx mario_left_arm_shared_dl[];\nextern const Gfx mario_left_arm[];\nextern const Gfx mario_left_forearm_shared_dl[];\nextern const Gfx mario_left_hand_closed_shared_dl[];\nextern const Gfx mario_left_hand_closed[];\nextern const Gfx mario_right_arm_shared_dl[];\nextern const Gfx mario_right_arm[];\nextern const Gfx mario_right_forearm_shared_dl[];\nextern const Gfx mario_right_hand_closed_dl[];\nextern const Gfx mario_right_hand_closed[];\nextern const Gfx mario_metal_right_hand_closed[];\nextern const Gfx mario_left_thigh_dl[];\nextern const Gfx mario_left_thigh[];\nextern const Gfx mario_metal_left_thigh[];\nextern const Gfx mario_left_leg_shared_dl[];\nextern const Gfx mario_left_foot_shared_dl[];\nextern const Gfx mario_left_foot[];\nextern const Gfx mario_right_thigh_shared_dl[];\nextern const Gfx mario_right_thigh[];\nextern const Gfx mario_right_leg_shared_dl[];\nextern const Gfx mario_right_foot_dl[];\nextern const Gfx mario_right_foot[];\nextern const Gfx mario_metal_right_foot[];\nextern const Gfx mario_yellow_button_dl[];\nextern const Gfx mario_pants_overalls_shared_dl[];\nextern const Gfx mario_tshirt_shared_dl[];\nextern const Gfx mario_torso_dl[];\nextern const Gfx mario_torso[];\nextern const Gfx mario_metal_torso_shared_dl[];\nextern const Gfx mario_m_logo_dl[];\nextern const Gfx mario_eyes_cap_on_dl[];\nextern const Gfx mario_hair_sideburn_cap_on_dl[];\nextern const Gfx mario_mustache_cap_on_dl[];\nextern const Gfx mario_face_part_cap_on_dl[];\nextern const Gfx mario_face_cap_dl[];\nextern const Gfx mario_face_back_hair_cap_on_dl[];\nextern const Gfx mario_face_cap_on_dl[];\nextern const Gfx mario_cap_on_eyes_front[];\nextern const Gfx mario_cap_on_eyes_half_closed[];\nextern const Gfx mario_cap_on_eyes_closed[];\nextern const Gfx mario_cap_on_eyes_right[];\nextern const Gfx mario_cap_on_eyes_left[];\nextern const Gfx mario_cap_on_eyes_up[];\nextern const Gfx mario_cap_on_eyes_down[];\nextern const Gfx mario_cap_on_eyes_dead[];\nextern const Gfx mario_metal_cap_on_shared_dl[];\nextern const Gfx mario_eyes_cap_off_dl[];\nextern const Gfx mario_mustache_cap_off_dl[];\nextern const Gfx mario_hair_sideburn_cap_off_dl[];\nextern const Gfx mario_face_part_cap_off_dl[];\nextern const Gfx mario_face_hair_cap_off_dl[];\nextern const Gfx mario_face_cap_off_dl[];\nextern const Gfx mario_cap_off_eyes_front[];\nextern const Gfx mario_cap_off_eyes_half_closed[];\nextern const Gfx mario_cap_off_eyes_closed[];\nextern const Gfx mario_cap_off_eyes_right[];\nextern const Gfx mario_cap_off_eyes_left[];\nextern const Gfx mario_cap_off_eyes_up[];\nextern const Gfx mario_cap_off_eyes_down[];\nextern const Gfx mario_cap_off_eyes_dead[];\nextern const Gfx mario_metal_cap_off_shared_dl[];\nextern const Gfx mario_medium_poly_butt_dl[];\nextern const Gfx mario_medium_poly_butt[];\nextern const Gfx mario_metal_medium_poly_butt[];\nextern const Gfx mario_medium_poly_left_arm_shared_dl[];\nextern const Gfx mario_medium_poly_left_arm[];\nextern const Gfx mario_medium_poly_left_forearm_shared_dl[];\nextern const Gfx mario_medium_poly_left_hand_closed_shared_dl[];\nextern const Gfx mario_medium_poly_left_hand_closed[];\nextern const Gfx mario_medium_poly_right_arm_shared_dl[];\nextern const Gfx mario_medium_poly_right_arm[];\nextern const Gfx mario_medium_poly_right_forearm_shared_dl[];\nextern const Gfx mario_medium_poly_right_hand_closed_dl[];\nextern const Gfx mario_medium_poly_right_hand_closed[];\nextern const Gfx mario_metal_medium_poly_right_hand_closed[];\nextern const Gfx mario_medium_poly_left_thigh_dl[];\nextern const Gfx mario_medium_poly_left_thigh[];\nextern const Gfx mario_metal_medium_poly_left_thigh[];\nextern const Gfx mario_medium_poly_left_leg_shared_dl[];\nextern const Gfx mario_medium_poly_left_foot_shared_dl[];\nextern const Gfx mario_medium_poly_left_foot[];\nextern const Gfx mario_medium_poly_right_thigh_shared_dl[];\nextern const Gfx mario_medium_poly_right_thigh[];\nextern const Gfx mario_medium_poly_right_leg_shared_dl[];\nextern const Gfx mario_medium_poly_right_foot_dl[];\nextern const Gfx mario_medium_poly_right_foot[];\nextern const Gfx mario_metal_medium_poly_right_foot[];\nextern const Gfx mario_medium_poly_yellow_button_dl[];\nextern const Gfx mario_medium_poly_pants_overalls_shared_dl[];\nextern const Gfx mario_medium_poly_tshirt_shared_dl[];\nextern const Gfx mario_medium_poly_torso_dl[];\nextern const Gfx mario_medium_poly_torso[];\nextern const Gfx mario_metal_medium_poly_torso[];\nextern const Gfx mario_low_poly_butt_dl[];\nextern const Gfx mario_low_poly_butt[];\nextern const Gfx mario_metal_low_poly_butt[];\nextern const Gfx mario_low_poly_left_arm_shared_dl[];\nextern const Gfx mario_low_poly_left_arm[];\nextern const Gfx mario_low_poly_left_forearm_shared_dl[];\nextern const Gfx mario_low_poly_left_hand_closed_shared_dl[];\nextern const Gfx mario_low_poly_left_hand_closed[];\nextern const Gfx mario_low_poly_right_arm_shared_dl[];\nextern const Gfx mario_low_poly_right_arm[];\nextern const Gfx mario_low_poly_right_forearm_shared_dl[];\nextern const Gfx mario_low_poly_right_hand_closed_dl[];\nextern const Gfx mario_low_poly_right_hand_closed[];\nextern const Gfx mario_metal_low_poly_right_hand_closed[];\nextern const Gfx mario_low_poly_left_thigh_dl[];\nextern const Gfx mario_low_poly_left_thigh[];\nextern const Gfx mario_metal_low_poly_left_thigh[];\nextern const Gfx mario_low_poly_left_leg_shared_dl[];\nextern const Gfx mario_low_poly_left_foot_shared_dl[];\nextern const Gfx mario_low_poly_left_foot[];\nextern const Gfx mario_low_poly_right_thigh_shared_dl[];\nextern const Gfx mario_low_poly_right_thigh[];\nextern const Gfx mario_low_poly_right_leg_shared_dl[];\nextern const Gfx mario_low_poly_right_foot_dl[];\nextern const Gfx mario_low_poly_right_foot[];\nextern const Gfx mario_metal_low_poly_right_foot[];\nextern const Gfx mario_low_poly_yellow_button_dl[];\nextern const Gfx mario_low_poly_pants_overalls_shared_dl[];\nextern const Gfx mario_low_poly_tshirt_shared_dl[];\nextern const Gfx mario_low_poly_torso_dl[];\nextern const Gfx mario_low_poly_torso[];\nextern const Gfx mario_metal_low_poly_torso[];\nextern const Gfx mario_low_poly_mario_m_logo_dl[];\nextern const Gfx mario_low_poly_eyes_cap_on_dl[];\nextern const Gfx mario_low_poly_mustache_cap_on_dl[];\nextern const Gfx mario_low_poly_face_part_cap_on_dl[];\nextern const Gfx mario_low_poly_face_cap_dl[];\nextern const Gfx mario_low_poly_face_back_hair_cap_on_dl[];\nextern const Gfx mario_low_poly_face_cap_on_dl[];\nextern const Gfx mario_low_poly_cap_on_eyes_front[];\nextern const Gfx mario_low_poly_cap_on_eyes_half_closed[];\nextern const Gfx mario_low_poly_cap_on_eyes_closed[];\nextern const Gfx mario_low_poly_cap_on_eyes_right[];\nextern const Gfx mario_low_poly_cap_on_eyes_left[];\nextern const Gfx mario_low_poly_cap_on_eyes_up[];\nextern const Gfx mario_low_poly_cap_on_eyes_down[];\nextern const Gfx mario_low_poly_cap_on_eyes_dead[];\nextern const Gfx mario_metal_low_poly_cap_on[];\nextern const Gfx mario_low_poly_mario_eyes_cap_off_dl[];\nextern const Gfx mario_low_poly_mustache_cap_off_dl[];\nextern const Gfx mario_low_poly_face_part_cap_off_dl[];\nextern const Gfx mario_low_poly_face_hair_cap_off_dl[];\nextern const Gfx mario_low_poly_face_cap_off_dl[];\nextern const Gfx mario_low_poly_cap_off_eyes_front[];\nextern const Gfx mario_low_poly_cap_off_eyes_half_closed[];\nextern const Gfx mario_low_poly_cap_off_eyes_closed[];\nextern const Gfx mario_low_poly_cap_off_eyes_right[];\nextern const Gfx mario_low_poly_cap_off_eyes_left[];\nextern const Gfx mario_low_poly_cap_off_eyes_up[];\nextern const Gfx mario_low_poly_cap_off_eyes_down[];\nextern const Gfx mario_low_poly_cap_off_eyes_dead[];\nextern const Gfx mario_metal_low_poly_cap_off[];\nextern const Gfx mario_left_hand_open_shared_dl[];\nextern const Gfx mario_left_hand_open[];\nextern const Gfx mario_right_hand_open_dl[];\nextern const Gfx mario_right_hand_open[];\nextern const Gfx mario_metal_right_hand_open[];\nextern const Gfx mario_right_hand_cap_m_logo_dl[];\nextern const Gfx mario_right_hand_cap_top_dl[];\nextern const Gfx mario_right_hand_cap_hand_position_dl[];\nextern const Gfx mario_right_hand_cap_bottom_dl[];\nextern const Gfx mario_right_hand_cap_dl[];\nextern const Gfx mario_right_hand_cap_wings_half_1_dl[];\nextern const Gfx mario_right_hand_cap_wings_half_2_dl[];\nextern const Gfx mario_right_hand_cap_wings_initial_dl[];\nextern const Gfx mario_right_hand_cap_wings_end_dl[];\nextern const Gfx mario_right_hand_cap[];\nextern const Gfx mario_right_hand_cap_wings[];\nextern const Gfx mario_metal_right_hand_cap_shared_dl[];\nextern const Gfx mario_metal_right_hand_cap_shared_dl_wings[];\nextern const Gfx mario_right_hand_peace_shared_dl[];\nextern const Gfx mario_right_hand_peace[];\nextern const Gfx mario_cap_unused_m_logo_dl[];\nextern const Gfx mario_cap_unused_base_top_dl[];\nextern const Gfx mario_cap_unused_base_bottom_dl[];\nextern const Gfx mario_cap_unused_base_dl[];\nextern const Gfx mario_wings_half_1_unused_dl[];\nextern const Gfx mario_wings_half_2_unused_dl[];\nextern const Gfx mario_cap_wings_unused_initial_dl[];\nextern const Gfx mario_cap_wings_unused_end_dl[];\nextern const Gfx mario_cap_unused_dl[];\nextern const Gfx mario_metal_cap_unused_dl[];\nextern const Gfx mario_cap_wings_unused[];\nextern const Gfx mario_metal_cap_wings_unused[];\nextern const Gfx mario_wings_half_1_dl[];\nextern const Gfx mario_wings_half_2_dl[];\nextern const Gfx mario_cap_wings[];\nextern const Gfx mario_cap_wings_transparent[];\nextern const Gfx mario_metal_cap_wings[];\nextern const Gfx mario_metal_cap_wings_transparent[];\n\n// sparkle\nextern const GeoLayout sparkles_geo[];\nextern const Gfx sparkles_seg4_dl_0402A490[];\nextern const Gfx sparkles_seg4_dl_0402A4F8[];\nextern const Gfx sparkles_seg4_dl_0402A510[];\nextern const Gfx sparkles_seg4_dl_0402A528[];\nextern const Gfx sparkles_seg4_dl_0402A540[];\nextern const Gfx sparkles_seg4_dl_0402A558[];\nextern const Gfx sparkles_seg4_dl_0402A570[];\n\n// sparkle_animation\nextern const GeoLayout sparkles_animation_geo[];\nextern const Gfx sparkles_animation_seg4_dl_04035288[];\nextern const Gfx sparkles_animation_seg4_dl_04035300[];\nextern const Gfx sparkles_animation_seg4_dl_04035318[];\nextern const Gfx sparkles_animation_seg4_dl_04035330[];\nextern const Gfx sparkles_animation_seg4_dl_04035348[];\nextern const Gfx sparkles_animation_seg4_dl_04035360[];\n\n// stomp_smoke\nextern const GeoLayout small_water_splash_geo[];\nextern const GeoLayout mario_TODO_geo_0000E0[];\nextern const Gfx stomp_smoke_seg4_dl_04025148[];\nextern const Gfx stomp_smoke_seg4_dl_04025190[];\nextern const Gfx stomp_smoke_seg4_dl_040251C8[];\nextern const Gfx stomp_smoke_seg4_dl_040251E0[];\nextern const Gfx stomp_smoke_seg4_dl_040251F8[];\nextern const Gfx stomp_smoke_seg4_dl_04025210[];\nextern const Gfx stomp_smoke_seg4_dl_04025228[];\nextern const Gfx stomp_smoke_seg4_dl_04025240[];\nextern const Gfx stomp_smoke_seg4_dl_04025258[];\nextern const Gfx stomp_smoke_seg4_dl_04025270[];\nextern const Gfx stomp_smoke_seg4_dl_04025288[];\nextern const Gfx stomp_smoke_seg4_dl_040252A0[];\nextern const Gfx stomp_smoke_seg4_dl_040252B8[];\nextern const Gfx stomp_smoke_seg4_dl_040252D0[];\nextern const Gfx stomp_smoke_seg4_dl_040252E8[];\nextern const Gfx stomp_smoke_seg4_dl_04025300[];\n\n// walk_smoke\nextern const GeoLayout smoke_geo[];\nextern const Gfx smoke_seg4_dl_040216A0[];\nextern const Gfx smoke_seg4_dl_04021718[];\nextern const Gfx smoke_seg4_dl_04021730[];\nextern const Gfx smoke_seg4_dl_04021748[];\nextern const Gfx smoke_seg4_dl_04021760[];\nextern const Gfx smoke_seg4_dl_04021778[];\nextern const Gfx smoke_seg4_dl_04021790[];\nextern const Gfx smoke_seg4_dl_040217A8[];\n\n// water_splash\nextern const GeoLayout water_splash_geo[];\nextern const Gfx water_splash_seg4_dl_040325C8[];\nextern const Gfx water_splash_seg4_dl_04032640[];\nextern const Gfx water_splash_seg4_dl_04032658[];\nextern const Gfx water_splash_seg4_dl_04032670[];\nextern const Gfx water_splash_seg4_dl_04032688[];\nextern const Gfx water_splash_seg4_dl_040326A0[];\nextern const Gfx water_splash_seg4_dl_040326B8[];\nextern const Gfx water_splash_seg4_dl_040326D0[];\nextern const Gfx water_splash_seg4_dl_040326E8[];\n\n// water_waves\nextern const GeoLayout idle_water_wave_geo[];\nextern const GeoLayout wave_trail_geo[];\nextern const Gfx water_wave_seg4_dl_04027358[];\nextern const Gfx water_wave_seg4_dl_040273A0[];\nextern const Gfx water_wave_seg4_dl_040273D8[];\nextern const Gfx water_wave_seg4_dl_040273F0[];\nextern const Gfx water_wave_seg4_dl_04027408[];\nextern const Gfx water_wave_seg4_dl_04027420[];\nextern const Gfx water_wave_seg4_dl_04027438[];\n\n// white_particle_small\nextern const Gfx white_particle_small_dl_begin[];\nextern const Gfx white_particle_small_dl_end[];\nextern const Gfx white_particle_small_dl[];\nextern const Gfx white_particle_small_unused_dl[];\n\n#endif\n"
  },
  {
    "path": "actors/group0_geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"common1.h\"\n#include \"group0.h\"\n\n#include \"bubble/geo.inc.c\"\n#include \"walk_smoke/geo.inc.c\"\n#include \"burn_smoke/geo.inc.c\"\n#include \"stomp_smoke/geo.inc.c\"\n#include \"water_wave/geo.inc.c\"\n#include \"sparkle/geo.inc.c\"\n#include \"water_splash/geo.inc.c\"\n#include \"sparkle_animation/geo.inc.c\"\n#include \"mario/geo.inc.c\"\n"
  },
  {
    "path": "actors/group1.c",
    "content": "#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\n#include \"macros.h\"\n#include \"surface_terrains.h\"\n#include \"types.h\"\n#include \"make_const_nonconst.h\"\n\n#include \"yellow_sphere_small/model.inc.c\"\nUNUSED static const u64 binid_0 = 0;\n\n#include \"hoot/model.inc.c\"\n#include \"hoot/anims/data.inc.c\"\n#include \"hoot/anims/table.inc.c\"\nUNUSED static const u64 binid_1 = 1;\n\n#include \"yoshi_egg/model.inc.c\"\nUNUSED static const u64 binid_2 = 2;\n\n#include \"thwomp/model.inc.c\"\n#include \"thwomp/collision.inc.c\"\nUNUSED static const u64 binid_3 = 3;\n\n#include \"bullet_bill/model.inc.c\"\nUNUSED static const u64 binid_4 = 4;\n\n#include \"heave_ho/model.inc.c\"\n#include \"heave_ho/anims/data.inc.c\"\n#include \"heave_ho/anims/table.inc.c\"\nUNUSED static const u64 binid_5 = 5;\n"
  },
  {
    "path": "actors/group1.h",
    "content": "#ifndef GROUP1_H\n#define GROUP1_H\n\n#include \"types.h\"\n\n// bullet_bill\nextern const GeoLayout bullet_bill_geo[];\nextern const Gfx bullet_bill_seg5_dl_0500E5E8[];\nextern const Gfx bullet_bill_seg5_dl_0500E678[];\nextern const Gfx bullet_bill_seg5_dl_0500E730[];\nextern const Gfx bullet_bill_seg5_dl_0500E8A8[];\n\n// heave_ho\nextern const GeoLayout heave_ho_geo[];\nextern const Gfx heave_ho_seg5_dl_05011D98[];\nextern const Gfx heave_ho_seg5_dl_05011DE0[];\nextern const Gfx heave_ho_seg5_dl_05011E28[];\nextern const Gfx heave_ho_seg5_dl_05011E80[];\nextern const Gfx heave_ho_seg5_dl_05011EC0[];\nextern const Gfx heave_ho_seg5_dl_050120A0[];\nextern const Gfx heave_ho_seg5_dl_05012100[];\nextern const Gfx heave_ho_seg5_dl_05012148[];\nextern const Gfx heave_ho_seg5_dl_05012300[];\nextern const Gfx heave_ho_seg5_dl_05012360[];\nextern const Gfx heave_ho_seg5_dl_050123A8[];\nextern const Gfx heave_ho_seg5_dl_05012560[];\nextern const Gfx heave_ho_seg5_dl_050125A8[];\nextern const Gfx heave_ho_seg5_dl_050125F8[];\nextern const Gfx heave_ho_seg5_dl_050126B0[];\nextern const Gfx heave_ho_seg5_dl_050126E8[];\nextern const Gfx heave_ho_seg5_dl_050127B0[];\nextern const Gfx heave_ho_seg5_dl_050127F8[];\nextern const Gfx heave_ho_seg5_dl_05014188[];\nextern const Gfx heave_ho_seg5_dl_05014560[];\nextern const Gfx heave_ho_seg5_dl_050145D0[];\nextern const Gfx heave_ho_seg5_dl_050149A8[];\nextern const Gfx heave_ho_seg5_dl_05014D80[];\nextern const struct Animation *const heave_ho_seg5_anims_0501534C[];\n\n// hoot\nextern const GeoLayout hoot_geo[];\nextern const Gfx hoot_seg5_dl_05001B80[];\nextern const Gfx hoot_seg5_dl_05001C00[];\nextern const Gfx hoot_seg5_dl_05001DF0[];\nextern const Gfx hoot_seg5_dl_05002EB0[];\nextern const Gfx hoot_seg5_dl_05002F10[];\nextern const Gfx hoot_seg5_dl_05002FD8[];\nextern const Gfx hoot_seg5_dl_05003038[];\nextern const Gfx hoot_seg5_dl_05003100[];\nextern const Gfx hoot_seg5_dl_05003160[];\nextern const Gfx hoot_seg5_dl_05003228[];\nextern const Gfx hoot_seg5_dl_05003288[];\nextern const Gfx hoot_seg5_dl_05003350[];\nextern const Gfx hoot_seg5_dl_050033B0[];\nextern const Gfx hoot_seg5_dl_05003478[];\nextern const Gfx hoot_seg5_dl_050034D8[];\nextern const Gfx hoot_seg5_dl_050035A0[];\nextern const Gfx hoot_seg5_dl_05003600[];\nextern const Gfx hoot_seg5_dl_050036C8[];\nextern const Gfx hoot_seg5_dl_05003728[];\nextern const Gfx hoot_seg5_dl_05004928[];\nextern const Gfx hoot_seg5_dl_05004A98[];\nextern const Gfx hoot_seg5_dl_05004B38[];\nextern const Gfx hoot_seg5_dl_05004CA8[];\nextern const Gfx hoot_seg5_dl_05004D48[];\nextern const struct Animation *const hoot_seg5_anims_05005768[];\n\n// thwomp\nextern const GeoLayout thwomp_geo[];\nextern const Gfx thwomp_seg5_dl_0500B570[];\nextern const Gfx thwomp_seg5_dl_0500B718[];\nextern const Gfx thwomp_seg5_dl_0500B750[];\nextern const Collision thwomp_seg5_collision_0500B7D0[];\nextern const Collision thwomp_seg5_collision_0500B92C[];\n\n// yellow_sphere_small\nextern const GeoLayout yellow_sphere_geo[];\nextern const Gfx yellow_sphere_seg5_dl_05000840[];\nextern const Gfx yellow_sphere_seg5_dl_05000888[];\nextern const Gfx yellow_sphere_seg5_dl_050008C8[];\n\n// yoshi_egg\nextern const GeoLayout yoshi_egg_geo[];\nextern const Gfx yoshi_egg_seg5_dl_050097B8[];\nextern const Gfx yoshi_egg_seg5_dl_05009820[];\nextern const Gfx yoshi_egg_seg5_dl_05009838[];\nextern const Gfx yoshi_egg_seg5_dl_05009850[];\nextern const Gfx yoshi_egg_seg5_dl_05009868[];\nextern const Gfx yoshi_egg_seg5_dl_05009880[];\nextern const Gfx yoshi_egg_seg5_dl_05009898[];\nextern const Gfx yoshi_egg_seg5_dl_050098B0[];\nextern const Gfx yoshi_egg_seg5_dl_050098C8[];\n\n#endif\n"
  },
  {
    "path": "actors/group10.c",
    "content": "#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\n#include \"macros.h\"\n#include \"surface_terrains.h\"\n#include \"types.h\"\n#include \"make_const_nonconst.h\"\n\n#include \"bird/model.inc.c\"\n#include \"bird/anims/data.inc.c\"\n#include \"bird/anims/table.inc.c\"\nUNUSED static const u64 binid_0 = 0;\n\n#include \"peach/model.inc.c\"\n#include \"peach/anims/data.inc.c\"\n#include \"peach/anims/table.inc.c\"\nUNUSED static const u64 binid_1 = 1;\n\n#include \"yoshi/model.inc.c\"\n#include \"yoshi/anims/data.inc.c\"\n#include \"yoshi/anims/table.inc.c\"\nUNUSED static const u64 binid_2 = 2;\n"
  },
  {
    "path": "actors/group10.h",
    "content": "#ifndef GROUP10_H\n#define GROUP10_H\n\n#include \"types.h\"\n\n// bird\nextern const GeoLayout birds_geo[];\nextern const Gfx birds_seg5_dl_05000528[];\nextern const Gfx birds_seg5_dl_05000598[];\nextern const Gfx birds_seg5_dl_05000600[];\nextern const Gfx birds_seg5_dl_05000670[];\nextern const struct Animation *const birds_seg5_anims_050009E8[];\n\n// peach\nextern const GeoLayout peach_geo_000098[];\nextern const GeoLayout peach_geo_000254[];\nextern const GeoLayout peach_geo[];\nextern const Gfx peach_seg5_dl_05005648[];\nextern const Gfx peach_seg5_dl_05005750[];\nextern const Gfx peach_seg5_dl_05005780[];\nextern const Gfx peach_seg5_dl_050058B8[];\nextern const Gfx peach_seg5_dl_050058E0[];\nextern const Gfx peach_seg5_dl_05005C48[];\nextern const Gfx peach_seg5_dl_05005CB0[];\nextern const Gfx peach_seg5_dl_05005CE0[];\nextern const Gfx peach_seg5_dl_05005D38[];\nextern const Gfx peach_seg5_dl_05005D90[];\nextern const Gfx peach_seg5_dl_05005DE8[];\nextern const Gfx peach_seg5_dl_05005E40[];\nextern const Gfx peach_seg5_dl_05005E98[];\nextern const Gfx peach_seg5_dl_05005EF0[];\nextern const Gfx peach_seg5_dl_05005F48[];\nextern const Gfx peach_seg5_dl_05006058[];\nextern const Gfx peach_seg5_dl_050060E0[];\nextern const Gfx peach_seg5_dl_05006728[];\nextern const Gfx peach_seg5_dl_05006798[];\nextern const Gfx peach_seg5_dl_05006A18[];\nextern const Gfx peach_seg5_dl_05006FA8[];\nextern const Gfx peach_seg5_dl_05007230[];\nextern const Gfx peach_seg5_us_dl_05007288[];\nextern const Gfx peach_seg5_dl_05007810[];\nextern const Gfx peach_seg5_dl_05007AB8[];\nextern const Gfx peach_seg5_dl_05007CE8[];\nextern const Gfx peach_seg5_dl_05007E58[];\nextern const Gfx peach_seg5_dl_050080B8[];\nextern const Gfx peach_seg5_dl_05008228[];\nextern const Gfx peach_seg5_dl_05008428[];\nextern const Gfx peach_seg5_dl_050084C0[];\nextern const Gfx peach_seg5_dl_05008560[];\nextern const Gfx peach_seg5_dl_050086C8[];\nextern const Gfx peach_seg5_dl_050087A8[];\nextern const Gfx peach_seg5_dl_05008978[];\nextern const Gfx peach_seg5_dl_05008A10[];\nextern const Gfx peach_seg5_dl_05008AB0[];\nextern const Gfx peach_seg5_dl_05008C18[];\nextern const Gfx peach_seg5_dl_05008CF8[];\nextern const Gfx peach_seg5_dl_05008E38[];\nextern const Gfx peach_seg5_dl_05008F20[];\nextern const Gfx peach_seg5_dl_05009060[];\nextern const Gfx peach_seg5_dl_05009148[];\nextern const Gfx peach_seg5_dl_05009388[];\nextern const Gfx peach_seg5_dl_05009500[];\nextern const Gfx peach_seg5_dl_050097C0[];\nextern const Gfx peach_seg5_dl_05009940[];\nextern const Gfx peach_seg5_dl_05009E20[];\nextern const Gfx peach_seg5_dl_0500A0A8[];\nextern const Gfx peach_seg5_us_dl_0500A188[];\nextern const struct Animation *const peach_seg5_anims_0501C41C[];\n\n// yoshi\nextern const GeoLayout yoshi_geo[];\nextern const Gfx yoshi_seg5_dl_0501D440[];\nextern const Gfx yoshi_seg5_dl_0501D488[];\nextern const Gfx yoshi_seg5_dl_0501D4E0[];\nextern const Gfx yoshi_seg5_dl_0501D8F8[];\nextern const Gfx yoshi_seg5_dl_0501D940[];\nextern const Gfx yoshi_seg5_dl_0501D970[];\nextern const Gfx yoshi_seg5_dl_0501D998[];\nextern const Gfx yoshi_seg5_dl_050212B0[];\nextern const Gfx yoshi_seg5_dl_05021490[];\nextern const Gfx yoshi_seg5_dl_050215D8[];\nextern const Gfx yoshi_seg5_dl_05021678[];\nextern const Gfx yoshi_seg5_dl_05021718[];\nextern const Gfx yoshi_seg5_dl_05021860[];\nextern const Gfx yoshi_seg5_dl_05021900[];\nextern const Gfx yoshi_seg5_dl_050219A0[];\nextern const Gfx yoshi_seg5_dl_05021B90[];\nextern const Gfx yoshi_seg5_dl_05021CD8[];\nextern const Gfx yoshi_seg5_dl_05021E38[];\nextern const Gfx yoshi_seg5_dl_05021F70[];\nextern const Gfx yoshi_seg5_dl_05022160[];\nextern const Gfx yoshi_seg5_dl_050222A8[];\nextern const Gfx yoshi_seg5_dl_05022408[];\nextern const Gfx yoshi_seg5_dl_05022608[];\nextern const struct Animation *const yoshi_seg5_anims_05024100[];\n\n#endif\n"
  },
  {
    "path": "actors/group10_geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"common1.h\"\n#include \"group10.h\"\n\n#include \"bird/geo.inc.c\"\n#include \"peach/geo.inc.c\"\n#include \"yoshi/geo.inc.c\"\n"
  },
  {
    "path": "actors/group11.c",
    "content": "#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\n#include \"geo_commands.h\"\n#include \"macros.h\"\n#include \"sm64.h\"\n#include \"surface_terrains.h\"\n#include \"types.h\"\n#include \"make_const_nonconst.h\"\n\n#include \"bubba/model.inc.c\"\nUNUSED static const u64 binid_0 = 0;\n\n#include \"wiggler_body/model.inc.c\"\n#include \"wiggler_body/anims/data.inc.c\"\n#include \"wiggler_body/geo.inc.c\"\n#include \"wiggler_body/anims/table.inc.c\"\n\n#include \"wiggler_head/model.inc.c\"\n#include \"wiggler_head/anims/data.inc.c\"\n#include \"wiggler_head/anims/table.inc.c\"\nUNUSED static const u64 binid_1 = 1;\n\n#include \"lakitu_enemy/model.inc.c\"\n#include \"lakitu_enemy/anims/data.inc.c\"\n#include \"lakitu_enemy/anims/table.inc.c\"\nUNUSED static const u64 binid_2 = 2;\n\n#include \"spiny_egg/model.inc.c\"\n#include \"spiny_egg/anims/data.inc.c\"\n#include \"spiny_egg/anims/table.inc.c\"\nUNUSED static const u64 binid_3 = 3;\n\n#include \"spiny/model.inc.c\"\n#include \"spiny/anims/data.inc.c\"\n#include \"spiny/anims/table.inc.c\"\nUNUSED static const u64 binid_4 = 4;\n"
  },
  {
    "path": "actors/group11.h",
    "content": "#ifndef GROUP11_H\n#define GROUP11_H\n\n#include \"types.h\"\n\n// bubba\nextern const GeoLayout bubba_geo[];\nextern const Gfx bubba_seg5_dl_05004A40[];\nextern const Gfx bubba_seg5_dl_05004AA8[];\nextern const Gfx bubba_seg5_dl_05004BE8[];\nextern const Gfx bubba_seg5_dl_05004C40[];\nextern const Gfx bubba_seg5_dl_05004D48[];\nextern const Gfx bubba_seg5_dl_05004E80[];\nextern const Gfx bubba_seg5_dl_05005538[];\nextern const Gfx bubba_seg5_dl_050055A0[];\nextern const Gfx bubba_seg5_dl_050056E0[];\nextern const Gfx bubba_seg5_dl_05005738[];\nextern const Gfx bubba_seg5_dl_05005840[];\nextern const Gfx bubba_seg5_dl_05005978[];\n\n// lakitu_enemy\nextern const GeoLayout enemy_lakitu_geo[];\nextern const Gfx lakitu_enemy_seg5_dl_05012760[];\nextern const Gfx lakitu_enemy_seg5_dl_05012890[];\nextern const Gfx lakitu_enemy_seg5_dl_05012910[];\nextern const Gfx lakitu_enemy_seg5_dl_05012EF0[];\nextern const Gfx lakitu_enemy_seg5_dl_05013160[];\nextern const Gfx lakitu_enemy_seg5_dl_05013298[];\nextern const Gfx lakitu_enemy_seg5_dl_050132D8[];\nextern const Gfx lakitu_enemy_seg5_dl_05013320[];\nextern const Gfx lakitu_enemy_seg5_dl_05013350[];\nextern const Gfx lakitu_enemy_seg5_dl_05013378[];\nextern const Gfx lakitu_enemy_seg5_dl_050134A8[];\nextern const Gfx lakitu_enemy_seg5_dl_050136A0[];\nextern const Gfx lakitu_enemy_seg5_dl_05013860[];\nextern const Gfx lakitu_enemy_seg5_dl_050138B0[];\nextern const struct Animation *const lakitu_enemy_seg5_anims_050144D4[];\n\n// spiny\nextern const GeoLayout spiny_geo[];\nextern const Gfx spiny_seg5_dl_05016418[];\nextern const Gfx spiny_seg5_dl_050164E0[];\nextern const Gfx spiny_seg5_dl_050165A8[];\nextern const Gfx spiny_seg5_dl_05016670[];\nextern const Gfx spiny_seg5_dl_05016738[];\nextern const Gfx spiny_seg5_dl_05016A48[];\nextern const struct Animation *const spiny_seg5_anims_05016EAC[];\n\n// spiny_egg\nextern const GeoLayout spiny_ball_geo[];\nextern const Gfx spiny_egg_seg5_dl_050151A8[];\nextern const Gfx spiny_egg_seg5_dl_050151E0[];\nextern const Gfx spiny_egg_seg5_dl_05015218[];\nextern const Gfx spiny_egg_seg5_dl_05015250[];\nextern const Gfx spiny_egg_seg5_dl_05015288[];\nextern const Gfx spiny_egg_seg5_dl_050152C0[];\nextern const Gfx spiny_egg_seg5_dl_050152F8[];\nextern const Gfx spiny_egg_seg5_dl_05015330[];\nextern const Gfx spiny_egg_seg5_dl_05015368[];\nextern const Gfx spiny_egg_seg5_dl_05015740[];\nextern const struct Animation *const spiny_egg_seg5_anims_050157E4[];\n\n// wiggler_body\nextern const Gfx wiggler_seg5_dl_0500BCB8[];\nextern const Gfx wiggler_seg5_dl_0500BE10[];\nextern const Gfx wiggler_seg5_dl_0500BE98[];\nextern const Gfx wiggler_seg5_dl_0500BF20[];\nextern const Gfx wiggler_seg5_dl_0500C078[];\nextern const Gfx wiggler_seg5_dl_0500C100[];\nextern const Gfx wiggler_seg5_dl_0500C208[];\nextern const Gfx wiggler_seg5_dl_0500C240[];\nextern const Gfx wiggler_seg5_dl_0500C278[];\nextern const GeoLayout wiggler_body_geo[];\nextern const struct Animation *const wiggler_seg5_anims_0500C874[];\n\n// wiggler_head\nextern const GeoLayout wiggler_head_geo[];\nextern const Gfx wiggler_seg5_dl_0500DC18[];\nextern const Gfx wiggler_seg5_dl_0500DD70[];\nextern const Gfx wiggler_seg5_dl_0500DDF8[];\nextern const Gfx wiggler_seg5_dl_0500DE80[];\nextern const Gfx wiggler_seg5_dl_0500DFD8[];\nextern const Gfx wiggler_seg5_dl_0500E060[];\nextern const Gfx wiggler_seg5_dl_0500E168[];\nextern const Gfx wiggler_seg5_dl_0500E1A0[];\nextern const Gfx wiggler_seg5_dl_0500E1D8[];\nextern const Gfx wiggler_seg5_dl_0500E2B0[];\nextern const Gfx wiggler_seg5_dl_0500E2F8[];\nextern const Gfx wiggler_seg5_dl_0500E3E8[];\nextern const Gfx wiggler_seg5_dl_0500E430[];\nextern const Gfx wiggler_seg5_dl_0500E4E0[];\nextern const Gfx wiggler_seg5_dl_0500E518[];\nextern const Gfx wiggler_seg5_dl_0500E608[];\nextern const Gfx wiggler_seg5_dl_0500E640[];\nextern const Gfx wiggler_seg5_dl_0500E678[];\nextern const struct Animation *const wiggler_seg5_anims_0500EC8C[];\n\n#endif\n"
  },
  {
    "path": "actors/group11_geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"common1.h\"\n#include \"group11.h\"\n\n#include \"bubba/geo.inc.c\"\n#include \"wiggler_head/geo.inc.c\"\n#include \"lakitu_enemy/geo.inc.c\"\n#include \"spiny_egg/geo.inc.c\"\n#include \"spiny/geo.inc.c\"\n"
  },
  {
    "path": "actors/group12.c",
    "content": "#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\n#include \"macros.h\"\n#include \"surface_terrains.h\"\n#include \"types.h\"\n#include \"make_const_nonconst.h\"\n\n#include \"bowser_flame/model.inc.c\"\nUNUSED static const u64 binid_0 = 0;\n\n#include \"impact_ring/model.inc.c\"\nUNUSED static const u64 binid_1 = 1;\n\n#include \"yellow_sphere/model.inc.c\"\nUNUSED static const u64 binid_2 = 2;\n\n#include \"bowser/model.inc.c\"\n#include \"bowser/anims/data.inc.c\"\n#include \"bowser/anims/table.inc.c\"\n#include \"bowser/flames_data.inc.c\"\nUNUSED static const u64 binid_3 = 3;\n\n#include \"bomb/model.inc.c\"\nUNUSED static const u64 binid_4 = 4;\n\n#include \"impact_smoke/model.inc.c\"\nUNUSED static const u64 binid_5 = 5;\n"
  },
  {
    "path": "actors/group12.h",
    "content": "#ifndef GROUP12_H\n#define GROUP12_H\n\n#include \"types.h\"\n\n// bomb\nextern const GeoLayout bowser_bomb_geo[];\nextern const Gfx bomb_seg6_dl_0605A7C0[];\nextern const Gfx bomb_seg6_dl_0605A7F8[];\nextern const Gfx bomb_seg6_dl_0605A830[];\nextern const Gfx bomb_seg6_dl_0605A8A8[];\nextern const Gfx bomb_seg6_dl_0605A9C0[];\n\n// bowser\nextern const GeoLayout bowser_geo_0000D8[];\nextern const GeoLayout bowser_geo_000424[];\nextern const GeoLayout bowser_geo_000770[];\nextern const GeoLayout bowser_shadow_geo[];\nextern const GeoLayout bowser_geo[];\nextern const GeoLayout bowser_geo_no_shadow[];\nextern const Gfx bowser_seg6_dl_06039110[];\nextern const Gfx bowser_seg6_dl_060391C8[];\nextern const Gfx bowser_seg6_dl_06039260[];\nextern const Gfx bowser_seg6_dl_060392E0[];\nextern const Gfx bowser_seg6_dl_06039808[];\nextern const Gfx bowser_seg6_dl_060398B0[];\nextern const Gfx bowser_seg6_dl_06039958[];\nextern const Gfx bowser_seg6_dl_060399D8[];\nextern const Gfx bowser_seg6_dl_0603A210[];\nextern const Gfx bowser_seg6_dl_0603A380[];\nextern const Gfx bowser_seg6_dl_0603A4E8[];\nextern const Gfx bowser_seg6_dl_0603AED8[];\nextern const Gfx bowser_seg6_dl_0603B038[];\nextern const Gfx bowser_seg6_dl_0603B208[];\nextern const Gfx bowser_seg6_dl_0603B718[];\nextern const Gfx bowser_seg6_dl_0603B8D0[];\nextern const Gfx bowser_seg6_dl_0603B948[];\nextern const Gfx bowser_seg6_dl_0603BDF8[];\nextern const Gfx bowser_seg6_dl_0603BEA0[];\nextern const Gfx bowser_seg6_dl_0603BF48[];\nextern const Gfx bowser_seg6_dl_0603BFC8[];\nextern const Gfx bowser_seg6_dl_0603C500[];\nextern const Gfx bowser_seg6_dl_0603C5A8[];\nextern const Gfx bowser_seg6_dl_0603C650[];\nextern const Gfx bowser_seg6_dl_0603C6D0[];\nextern const Gfx bowser_seg6_dl_0603CF28[];\nextern const Gfx bowser_seg6_dl_0603D098[];\nextern const Gfx bowser_seg6_dl_0603D200[];\nextern const Gfx bowser_seg6_dl_0603DC70[];\nextern const Gfx bowser_seg6_dl_0603DDD0[];\nextern const Gfx bowser_seg6_dl_0603DFB0[];\nextern const Gfx bowser_seg6_dl_0603E500[];\nextern const Gfx bowser_seg6_dl_0603E6B8[];\nextern const Gfx bowser_seg6_dl_0603FBA8[];\nextern const Gfx bowser_seg6_dl_0603FC18[];\nextern const Gfx bowser_seg6_dl_0603FD38[];\nextern const Gfx bowser_seg6_dl_0603FDD0[];\nextern const Gfx bowser_seg6_dl_0603FEA8[];\nextern const Gfx bowser_seg6_dl_0603FFA8[];\nextern const Gfx bowser_seg6_dl_06040180[];\nextern const Gfx bowser_seg6_dl_060401F0[];\nextern const Gfx bowser_seg6_dl_06040210[];\nextern const Gfx bowser_seg6_dl_06040358[];\nextern const Gfx bowser_seg6_dl_06041A28[];\nextern const Gfx bowser_seg6_dl_06041BA0[];\nextern const Gfx bowser_seg6_dl_06041E48[];\nextern const Gfx bowser_seg6_dl_06041EA8[];\nextern const Gfx bowser_seg6_dl_06041F50[];\nextern const Gfx bowser_seg6_dl_06042098[];\nextern const Gfx bowser_seg6_dl_060420F0[];\nextern const Gfx bowser_seg6_dl_06042140[];\nextern const Gfx bowser_seg6_dl_060421D8[];\nextern const Gfx bowser_seg6_dl_06042220[];\nextern const Gfx bowser_seg6_dl_06042278[];\nextern const Gfx bowser_seg6_dl_06042328[];\nextern const Gfx bowser_seg6_dl_06042348[];\nextern const Gfx bowser_seg6_dl_060423A0[];\nextern const Gfx bowser_seg6_dl_060423F8[];\nextern const Gfx bowser_seg6_dl_06042450[];\nextern const Gfx bowser_seg6_dl_060424A8[];\nextern const Gfx bowser_seg6_dl_06042500[];\nextern const Gfx bowser_seg6_dl_06042558[];\nextern const Gfx bowser_seg6_dl_060425B0[];\nextern const Gfx bowser_seg6_dl_06042608[];\nextern const Gfx bowser_seg6_dl_06042EE0[];\nextern const Gfx bowser_seg6_dl_060430E8[];\nextern const Gfx bowser_seg6_dl_06043180[];\nextern const Gfx bowser_seg6_dl_060431F0[];\nextern const Gfx bowser_seg6_dl_06043548[];\nextern const Gfx bowser_seg6_dl_06043648[];\nextern const Gfx bowser_seg6_dl_06043698[];\nextern const struct Animation *const bowser_seg6_anims_06057690[];\nextern const s16 dBowserFlamesOrientationValues[];\n\n// bowser_flame\nextern const GeoLayout bowser_flames_geo[];\nextern const Gfx flame_seg6_dl_0601C080[];\nextern const Gfx flame_seg6_dl_0601C0B0[];\nextern const Gfx flame_seg6_dl_0601C0C8[];\nextern const Gfx flame_seg6_dl_0601C0E0[];\nextern const Gfx flame_seg6_dl_0601C108[];\nextern const Gfx flame_seg6_dl_0601C1A8[];\nextern const Gfx flame_seg6_dl_0601C248[];\nextern const Gfx flame_seg6_dl_0601C2E8[];\nextern const Gfx flame_seg6_dl_0601C388[];\nextern const Gfx flame_seg6_dl_0601C428[];\nextern const Gfx flame_seg6_dl_0601C4C8[];\nextern const Gfx flame_seg6_dl_0601C568[];\nextern const Gfx flame_seg6_dl_0601C608[];\nextern const Gfx flame_seg6_dl_0601C6A8[];\nextern const Gfx flame_seg6_dl_0601C748[];\nextern const Gfx flame_seg6_dl_0601C7E8[];\nextern const Gfx flame_seg6_dl_0601C888[];\nextern const Gfx flame_seg6_dl_0601C928[];\n\n// impact_ring\nextern const GeoLayout invisible_bowser_accessory_geo[];\nextern const Gfx impact_ring_seg6_dl_0601EA50[];\nextern const Gfx impact_ring_seg6_dl_0601EA88[];\nextern const Gfx impact_ring_seg6_dl_0601EAC0[];\n\n// impact_smoke\nextern const GeoLayout bowser_impact_smoke_geo[];\nextern const Gfx impact_smoke_seg6_dl_06062AA8[];\nextern const Gfx impact_smoke_seg6_dl_06062AD8[];\nextern const Gfx impact_smoke_seg6_dl_06062AF0[];\nextern const Gfx impact_smoke_seg6_dl_06062B08[];\nextern const Gfx impact_smoke_seg6_dl_06062B38[];\nextern const Gfx impact_smoke_seg6_dl_06062BD8[];\nextern const Gfx impact_smoke_seg6_dl_06062C78[];\nextern const Gfx impact_smoke_seg6_dl_06062D18[];\n\n// yellow_sphere\nextern const GeoLayout bowser_1_yellow_sphere_geo[];\nextern const Gfx yellow_sphere_seg6_dl_0601F388[];\nextern const Gfx yellow_sphere_seg6_dl_0601F3C0[];\n\n#endif\n"
  },
  {
    "path": "actors/group12_geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"common1.h\"\n#include \"group12.h\"\n\n#include \"bowser_flame/geo.inc.c\"\n#include \"impact_ring/geo.inc.c\"\n#include \"yellow_sphere/geo.inc.c\"\n#include \"bowser/geo.inc.c\"\n#include \"bomb/geo.inc.c\"\n#include \"impact_smoke/geo.inc.c\"\n"
  },
  {
    "path": "actors/group13.c",
    "content": "#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\n#include \"macros.h\"\n#include \"surface_terrains.h\"\n#include \"types.h\"\n#include \"make_const_nonconst.h\"\n\n#include \"skeeter/model.inc.c\"\n#include \"skeeter/anims/data.inc.c\"\n#include \"skeeter/anims/table.inc.c\"\nUNUSED static const u64 binid_0 = 0;\n\n#include \"seaweed/model.inc.c\"\n#include \"seaweed/anims/data.inc.c\"\n#include \"seaweed/anims/table.inc.c\"\nUNUSED static const u64 binid_1 = 1;\n\n#include \"water_mine/model.inc.c\"\nUNUSED static const u64 binid_2 = 2;\n\n#include \"cyan_fish/model.inc.c\"\n#include \"cyan_fish/anims/data.inc.c\"\n#include \"cyan_fish/anims/table.inc.c\"\nUNUSED static const u64 binid_3 = 3;\n\n#include \"bub/model.inc.c\"\n#include \"bub/anims/data.inc.c\"\n#include \"bub/anims/table.inc.c\"\nUNUSED static const u64 binid_4 = 4;\n\n#include \"water_ring/model.inc.c\"\n#include \"water_ring/anims/data.inc.c\"\n#include \"water_ring/anims/table.inc.c\"\nUNUSED static const u64 binid_5 = 5;\n\n#include \"treasure_chest/model.inc.c\"\nUNUSED static const u64 binid_6 = 6;\n"
  },
  {
    "path": "actors/group13.h",
    "content": "#ifndef GROUP13_H\n#define GROUP13_H\n\n#include \"types.h\"\n\n// bub\nextern const GeoLayout bub_geo[];\nextern const Gfx bub_seg6_dl_06011848[];\nextern const Gfx bub_seg6_dl_060118C0[];\nextern const Gfx bub_seg6_dl_06011918[];\nextern const Gfx bub_seg6_dl_06011968[];\nextern const Gfx bub_seg6_dl_06011A50[];\nextern const Gfx bub_seg6_dl_06011B28[];\nextern const Gfx bub_seg6_dl_06011C58[];\nextern const Gfx bub_seg6_dl_06011CF0[];\nextern const Gfx bub_seg6_dl_06011DC0[];\nextern const Gfx bub_seg6_dl_06011E48[];\nextern const Gfx bub_seg6_dl_06011F18[];\nextern const Gfx bub_seg6_dl_06011FA0[];\nextern const struct Animation *const bub_seg6_anims_06012354[];\n\n// cyan_fish\nextern const GeoLayout cyan_fish_geo[];\nextern const Gfx cyan_fish_seg6_dl_0600DD20[];\nextern const Gfx cyan_fish_seg6_dl_0600DDD8[];\nextern const Gfx cyan_fish_seg6_dl_0600DE90[];\nextern const Gfx cyan_fish_seg6_dl_0600DED8[];\nextern const Gfx cyan_fish_seg6_dl_0600DFC0[];\nextern const Gfx cyan_fish_seg6_dl_0600E038[];\nextern const struct Animation *const cyan_fish_seg6_anims_0600E264[];\n\n// seaweed\nextern const GeoLayout seaweed_geo[];\nextern const Gfx seaweed_seg6_dl_06009E50[];\nextern const Gfx seaweed_seg6_dl_06009E98[];\nextern const Gfx seaweed_seg6_dl_06009F48[];\nextern const Gfx seaweed_seg6_dl_06009F90[];\nextern const Gfx seaweed_seg6_dl_0600A040[];\nextern const Gfx seaweed_seg6_dl_0600A088[];\nextern const Gfx seaweed_seg6_dl_0600A138[];\nextern const Gfx seaweed_seg6_dl_0600A180[];\nextern const struct Animation *const seaweed_seg6_anims_0600A4D4[];\n\n// skeeter\nextern const GeoLayout skeeter_geo[];\nextern const Gfx skeeter_seg6_dl_060009D0[];\nextern const Gfx skeeter_seg6_dl_06000A08[];\nextern const Gfx skeeter_seg6_dl_06000AB8[];\nextern const Gfx skeeter_seg6_dl_06000AF0[];\nextern const Gfx skeeter_seg6_dl_06000BA0[];\nextern const Gfx skeeter_seg6_dl_06000BD8[];\nextern const Gfx skeeter_seg6_dl_06000C78[];\nextern const Gfx skeeter_seg6_dl_06000CA8[];\nextern const Gfx skeeter_seg6_dl_06000D48[];\nextern const Gfx skeeter_seg6_dl_06000D78[];\nextern const Gfx skeeter_seg6_dl_06000E60[];\nextern const Gfx skeeter_seg6_dl_06000EC0[];\nextern const Gfx skeeter_seg6_dl_06003FF0[];\nextern const Gfx skeeter_seg6_dl_06004040[];\nextern const Gfx skeeter_seg6_dl_06004070[];\nextern const Gfx skeeter_seg6_dl_060040A0[];\nextern const Gfx skeeter_seg6_dl_060040F0[];\nextern const Gfx skeeter_seg6_dl_06004120[];\nextern const Gfx skeeter_seg6_dl_06004150[];\nextern const Gfx skeeter_seg6_dl_060041A0[];\nextern const Gfx skeeter_seg6_dl_060041D0[];\nextern const Gfx skeeter_seg6_dl_06004200[];\nextern const Gfx skeeter_seg6_dl_060045C8[];\nextern const Gfx skeeter_seg6_dl_06004618[];\nextern const Gfx skeeter_seg6_dl_06004648[];\nextern const Gfx skeeter_seg6_dl_06004678[];\nextern const Gfx skeeter_seg6_dl_06004A40[];\nextern const Gfx skeeter_seg6_dl_06005328[];\nextern const Gfx skeeter_seg6_dl_06005358[];\nextern const struct Animation *const skeeter_seg6_anims_06007DE0[];\n\n// treasure_chest\nextern const GeoLayout treasure_chest_base_geo[];\nextern const GeoLayout treasure_chest_lid_geo[];\nextern const Gfx treasure_chest_seg6_dl_06016D58[];\nextern const Gfx treasure_chest_seg6_dl_06016DA0[];\nextern const Gfx treasure_chest_seg6_dl_06016E18[];\nextern const Gfx treasure_chest_seg6_dl_06016EE0[];\nextern const Gfx treasure_chest_seg6_dl_06016F90[];\nextern const Gfx treasure_chest_seg6_dl_06017680[];\nextern const Gfx treasure_chest_seg6_dl_06017790[];\nextern const Gfx treasure_chest_seg6_dl_06017810[];\nextern const Gfx treasure_chest_seg6_dl_060178C0[];\n\n// water_mine\nextern const GeoLayout water_mine_geo[];\nextern const Gfx water_mine_seg6_dl_0600D1F8[];\nextern const Gfx water_mine_seg6_dl_0600D230[];\nextern const Gfx water_mine_seg6_dl_0600D268[];\nextern const Gfx water_mine_seg6_dl_0600D2E0[];\nextern const Gfx water_mine_seg6_dl_0600D3F8[];\n\n// water_ring\nextern const GeoLayout water_ring_geo[];\nextern const Gfx water_ring_seg6_dl_06013AC0[];\nextern const struct Animation *const water_ring_seg6_anims_06013F7C[];\n\n#endif\n"
  },
  {
    "path": "actors/group13_geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"common1.h\"\n#include \"group13.h\"\n\n#include \"skeeter/geo.inc.c\"\n#include \"seaweed/geo.inc.c\"\n#include \"water_mine/geo.inc.c\"\n#include \"cyan_fish/geo.inc.c\"\n#include \"bub/geo.inc.c\"\n#include \"water_ring/geo.inc.c\"\n#include \"treasure_chest/geo.inc.c\"\n"
  },
  {
    "path": "actors/group14.c",
    "content": "#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\n#include \"macros.h\"\n#include \"surface_terrains.h\"\n#include \"types.h\"\n#include \"make_const_nonconst.h\"\n\n#include \"koopa_flag/model.inc.c\"\n#include \"koopa_flag/anims/data.inc.c\"\n#include \"koopa_flag/anims/table.inc.c\"\nUNUSED static const u64 binid_0 = 0;\n\n#include \"poundable_pole/model.inc.c\"\n#include \"poundable_pole/collision.inc.c\"\nUNUSED static const u64 binid_1 = 1;\n\n#include \"koopa/model.inc.c\"\n#include \"koopa/anims/data.inc.c\"\n#include \"koopa/anims/table.inc.c\"\nUNUSED static const u64 binid_2 = 2;\n\n#include \"piranha_plant/model.inc.c\"\n#include \"piranha_plant/anims/data.inc.c\"\n#include \"piranha_plant/anims/table.inc.c\"\nUNUSED static const u64 binid_3 = 3;\n\n#include \"whomp/model.inc.c\"\n#include \"whomp/anims/data.inc.c\"\n#include \"whomp/anims/table.inc.c\"\n#include \"whomp/collision.inc.c\"\nUNUSED static const u64 binid_4 = 4;\n\n#include \"chain_ball/model.inc.c\"\nUNUSED static const u64 binid_5 = 5;\n\n#include \"chain_chomp/model.inc.c\"\n#include \"chain_chomp/anims/data.inc.c\"\n#include \"chain_chomp/anims/table.inc.c\"\nUNUSED static const u64 binid_6 = 6;\n"
  },
  {
    "path": "actors/group14.h",
    "content": "#ifndef GROUP14_H\n#define GROUP14_H\n\n#include \"types.h\"\n\n// chain_ball\nextern const GeoLayout metallic_ball_geo[];\nextern const Gfx chain_ball_seg6_dl_060212E8[];\n\n// chain_chomp\nextern const GeoLayout chain_chomp_geo[];\nextern const Gfx chain_chomp_seg6_dl_06024000[];\nextern const Gfx chain_chomp_seg6_dl_06024040[];\nextern const Gfx chain_chomp_seg6_dl_06024240[];\nextern const Gfx chain_chomp_seg6_dl_06024700[];\nextern const Gfx chain_chomp_seg6_dl_06024900[];\nextern const Gfx chain_chomp_seg6_dl_06024940[];\nextern const Gfx chain_chomp_seg6_dl_06024AA8[];\nextern const Gfx chain_chomp_seg6_dl_06024B00[];\nextern const Gfx chain_chomp_seg6_dl_06024CF0[];\nextern const Gfx chain_chomp_seg6_dl_06024D60[];\nextern const Gfx chain_chomp_seg6_dl_06024F50[];\nextern const Gfx chain_chomp_seg6_dl_06024FC0[];\nextern const struct Animation *const chain_chomp_seg6_anims_06025178[];\n\n// koopa\nextern const GeoLayout koopa_without_shell_geo[];\nextern const GeoLayout koopa_with_shell_geo[];\nextern const Gfx koopa_seg6_dl_06007658[];\nextern const Gfx koopa_seg6_dl_060076B0[];\nextern const Gfx koopa_seg6_dl_06007850[];\nextern const Gfx koopa_seg6_dl_06007970[];\nextern const Gfx koopa_seg6_dl_06007A60[];\nextern const Gfx koopa_seg6_dl_06007AA0[];\nextern const Gfx koopa_seg6_dl_06007AF8[];\nextern const Gfx koopa_seg6_dl_06007B20[];\nextern const Gfx koopa_seg6_dl_06007FB8[];\nextern const Gfx koopa_seg6_dl_06008050[];\nextern const Gfx koopa_seg6_dl_060080F8[];\nextern const Gfx koopa_seg6_dl_06008250[];\nextern const Gfx koopa_seg6_dl_06008530[];\nextern const Gfx koopa_seg6_dl_060085E8[];\nextern const Gfx koopa_seg6_dl_06008640[];\nextern const Gfx koopa_seg6_dl_060086D0[];\nextern const Gfx koopa_seg6_dl_060089B0[];\nextern const Gfx koopa_seg6_dl_06008A68[];\nextern const Gfx koopa_seg6_dl_06008AC0[];\nextern const Gfx koopa_seg6_dl_06008B50[];\nextern const Gfx koopa_seg6_dl_0600B6E0[];\nextern const Gfx koopa_seg6_dl_0600B838[];\nextern const Gfx koopa_seg6_dl_0600B8B8[];\nextern const Gfx koopa_seg6_dl_0600BA10[];\nextern const Gfx koopa_seg6_dl_0600BA90[];\nextern const Gfx koopa_seg6_dl_0600BC18[];\nextern const Gfx koopa_seg6_dl_0600BC88[];\nextern const Gfx koopa_seg6_dl_0600BE10[];\nextern const Gfx koopa_seg6_dl_0600BE80[];\nextern const Gfx koopa_seg6_dl_0600C240[];\nextern const Gfx koopa_seg6_dl_0600C498[];\nextern const struct Animation *const koopa_seg6_anims_06011364[];\n\n// koopa_flag\nextern const GeoLayout koopa_flag_geo[];\nextern const Gfx koopa_flag_seg6_dl_06000968[];\nextern const Gfx koopa_flag_seg6_dl_06000A08[];\nextern const Gfx koopa_flag_seg6_dl_06000AB8[];\nextern const Gfx koopa_flag_seg6_dl_06000AE8[];\nextern const Gfx koopa_flag_seg6_dl_06000B08[];\nextern const Gfx koopa_flag_seg6_dl_06000BC0[];\nextern const Gfx koopa_flag_seg6_dl_06000BF8[];\nextern const Gfx koopa_flag_seg6_dl_06000CA8[];\nextern const Gfx koopa_flag_seg6_dl_06000CE0[];\nextern const Gfx koopa_flag_seg6_dl_06000D90[];\nextern const Gfx koopa_flag_seg6_dl_06000DB0[];\nextern const Gfx koopa_flag_seg6_dl_06000E20[];\nextern const Gfx koopa_flag_seg6_dl_06000E38[];\nextern const struct Animation *const koopa_flag_seg6_anims_06001028[];\n\n// piranha_plant\nextern const GeoLayout piranha_plant_geo[];\nextern const Gfx piranha_plant_seg6_dl_06015438[];\nextern const Gfx piranha_plant_seg6_dl_06015480[];\nextern const Gfx piranha_plant_seg6_dl_06015530[];\nextern const Gfx piranha_plant_seg6_dl_06015578[];\nextern const Gfx piranha_plant_seg6_dl_06015798[];\nextern const Gfx piranha_plant_seg6_dl_06015850[];\nextern const Gfx piranha_plant_seg6_dl_06015E40[];\nextern const Gfx piranha_plant_seg6_dl_06015EA8[];\nextern const Gfx piranha_plant_seg6_dl_06015F68[];\nextern const Gfx piranha_plant_seg6_dl_06016060[];\nextern const Gfx piranha_plant_seg6_dl_060160B0[];\nextern const Gfx piranha_plant_seg6_dl_06016120[];\nextern const Gfx piranha_plant_seg6_dl_06016750[];\nextern const Gfx piranha_plant_seg6_dl_060167B8[];\nextern const Gfx piranha_plant_seg6_dl_06016890[];\nextern const Gfx piranha_plant_seg6_dl_06016960[];\nextern const Gfx piranha_plant_seg6_dl_060169A8[];\nextern const Gfx piranha_plant_seg6_dl_060169E8[];\nextern const Gfx piranha_plant_seg6_dl_06016A78[];\nextern const Gfx piranha_plant_seg6_dl_06016BA8[];\nextern const Gfx piranha_plant_seg6_dl_06016C10[];\nextern const Gfx piranha_plant_seg6_dl_06016D30[];\nextern const Gfx piranha_plant_seg6_dl_06016D98[];\nextern const Gfx piranha_plant_seg6_dl_06016EB8[];\nextern const Gfx piranha_plant_seg6_dl_06016F20[];\nextern const struct Animation *const piranha_plant_seg6_anims_0601C31C[];\n\n// poundable_pole\nextern const GeoLayout wooden_post_geo[];\nextern const Gfx poundable_pole_seg6_dl_060022F0[];\nextern const Gfx poundable_pole_seg6_dl_06002358[];\nextern const Gfx poundable_pole_seg6_dl_06002410[];\nextern const Collision poundable_pole_collision_06002490[];\n\n// whomp\nextern const GeoLayout whomp_geo[];\nextern const Gfx whomp_seg6_dl_0601F4F8[];\nextern const Gfx whomp_seg6_dl_0601F570[];\nextern const Gfx whomp_seg6_dl_0601F5A8[];\nextern const Gfx whomp_seg6_dl_0601F5E0[];\nextern const Gfx whomp_seg6_dl_0601F7F0[];\nextern const Gfx whomp_seg6_dl_0601F880[];\nextern const Gfx whomp_seg6_dl_0601FA58[];\nextern const Gfx whomp_seg6_dl_0601FAE8[];\nextern const Gfx whomp_seg6_dl_0601FB88[];\nextern const Gfx whomp_seg6_dl_0601FBC0[];\nextern const Gfx whomp_seg6_dl_0601FC70[];\nextern const Gfx whomp_seg6_dl_0601FCA8[];\nextern const Gfx whomp_seg6_dl_0601FE10[];\nextern const Gfx whomp_seg6_dl_0601FEA8[];\nextern const Gfx whomp_seg6_dl_0601FFA0[];\nextern const Gfx whomp_seg6_dl_06020038[];\nextern const struct Animation *const whomp_seg6_anims_06020A04[];\nextern const Collision whomp_seg6_collision_06020A0C[];\n\n#endif\n"
  },
  {
    "path": "actors/group14_geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"common1.h\"\n#include \"group14.h\"\n\n#include \"koopa_flag/geo.inc.c\"\n#include \"poundable_pole/geo.inc.c\"\n#include \"koopa/geo.inc.c\"\n#include \"piranha_plant/geo.inc.c\"\n#include \"whomp/geo.inc.c\"\n#include \"chain_ball/geo.inc.c\"\n#include \"chain_chomp/geo.inc.c\"\n"
  },
  {
    "path": "actors/group15.c",
    "content": "#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\n#include \"macros.h\"\n#include \"surface_terrains.h\"\n#include \"types.h\"\n#include \"make_const_nonconst.h\"\n\n#include \"lakitu_cameraman/model.inc.c\"\n#include \"lakitu_cameraman/anims/data.inc.c\"\n#include \"lakitu_cameraman/anims/table.inc.c\"\nUNUSED static const u64 binid_0 = 0;\n\n#include \"toad/model.inc.c\"\n#include \"toad/anims/data.inc.c\"\n#include \"toad/anims/table.inc.c\"\nUNUSED static const u64 binid_1 = 1;\n\n#include \"mips/model.inc.c\"\n#include \"mips/anims/data.inc.c\"\n#include \"mips/anims/table.inc.c\"\nUNUSED static const u64 binid_2 = 2;\n\n#include \"boo_castle/model.inc.c\"\nUNUSED static const u64 binid_3 = 3;\n"
  },
  {
    "path": "actors/group15.h",
    "content": "#ifndef GROUP15_H\n#define GROUP15_H\n\n#include \"types.h\"\n\n// boo_castle\nextern const GeoLayout boo_castle_geo[];\nextern const Gfx boo_castle_seg6_dl_06017A10[];\nextern const Gfx boo_castle_seg6_dl_06017A78[];\nextern const Gfx boo_castle_seg6_dl_06017AD0[];\nextern const Gfx boo_castle_seg6_dl_06017CE0[];\n\n// lakitu_cameraman\nextern const GeoLayout lakitu_geo[];\nextern const Gfx lakitu_seg6_dl_06003C80[];\nextern const Gfx lakitu_seg6_dl_06003DB0[];\nextern const Gfx lakitu_seg6_dl_06003E30[];\nextern const Gfx lakitu_seg6_dl_06004410[];\nextern const Gfx lakitu_seg6_dl_06004680[];\nextern const Gfx lakitu_seg6_dl_060047E8[];\nextern const Gfx lakitu_seg6_dl_060049E0[];\nextern const Gfx lakitu_seg6_dl_06004BA8[];\nextern const Gfx lakitu_seg6_dl_06004BE8[];\nextern const Gfx lakitu_seg6_dl_06004C30[];\nextern const Gfx lakitu_seg6_dl_06004C60[];\nextern const Gfx lakitu_seg6_dl_06004C88[];\nextern const Gfx lakitu_seg6_dl_060051D0[];\nextern const Gfx lakitu_seg6_dl_06005218[];\nextern const Gfx lakitu_seg6_dl_06005360[];\nextern const Gfx lakitu_seg6_dl_06005598[];\nextern const Gfx lakitu_seg6_dl_060055E8[];\nextern const Gfx lakitu_seg6_dl_06005610[];\nextern const struct Animation *const lakitu_seg6_anims_060058F8[];\n\n// mips\nextern const GeoLayout mips_geo[];\nextern const Gfx mips_seg6_dl_06010600[];\nextern const Gfx mips_seg6_dl_06010748[];\nextern const Gfx mips_seg6_dl_060107B8[];\nextern const Gfx mips_seg6_dl_06010A98[];\nextern const Gfx mips_seg6_dl_06010C40[];\nextern const Gfx mips_seg6_dl_06010DB0[];\nextern const Gfx mips_seg6_dl_06010E60[];\nextern const Gfx mips_seg6_dl_06010FF8[];\nextern const Gfx mips_seg6_dl_060110B0[];\nextern const Gfx mips_seg6_dl_06011240[];\nextern const Gfx mips_seg6_dl_06011310[];\nextern const Gfx mips_seg6_dl_06011470[];\nextern const Gfx mips_seg6_dl_06011520[];\nextern const Gfx mips_seg6_dl_060116B0[];\nextern const Gfx mips_seg6_dl_06011780[];\nextern const Gfx mips_seg6_dl_060118E0[];\nextern const Gfx mips_seg6_dl_06011990[];\nextern const Gfx mips_seg6_dl_06011B00[];\nextern const Gfx mips_seg6_dl_06011BB0[];\nextern const Gfx mips_seg6_dl_06011D10[];\nextern const Gfx mips_seg6_dl_06011DB0[];\nextern const Gfx mips_seg6_dl_06011E88[];\nextern const Gfx mips_seg6_dl_06011ED8[];\nextern const Gfx mips_seg6_dl_06011F70[];\nextern const Gfx mips_seg6_dl_06011FC0[];\nextern const struct Animation *const mips_seg6_anims_06015634[];\n\n// toad\nextern const GeoLayout toad_geo_000114[];\nextern const GeoLayout toad_geo_00027C[];\nextern const GeoLayout toad_geo[];\nextern const Gfx toad_seg6_dl_06007300[];\nextern const Gfx toad_seg6_dl_06007498[];\nextern const Gfx toad_seg6_dl_060076C0[];\nextern const Gfx toad_seg6_dl_06007710[];\nextern const Gfx toad_seg6_us_dl_06007788[];\nextern const Gfx toad_seg6_dl_06007960[];\nextern const Gfx toad_seg6_dl_06007A48[];\nextern const Gfx toad_seg6_us_dl_06007B00[];\nextern const Gfx toad_seg6_dl_06007D10[];\nextern const Gfx toad_seg6_dl_06007EB0[];\nextern const Gfx toad_seg6_dl_060080C0[];\nextern const Gfx toad_seg6_dl_060081F8[];\nextern const Gfx toad_seg6_dl_060083E8[];\nextern const Gfx toad_seg6_dl_06008520[];\nextern const Gfx toad_seg6_us_dl_06008608[];\nextern const Gfx toad_seg6_dl_06008748[];\nextern const Gfx toad_seg6_dl_06008890[];\nextern const Gfx toad_seg6_dl_06008A90[];\nextern const Gfx toad_seg6_dl_06008BD8[];\nextern const struct Animation *const toad_seg6_anims_0600FB58[];\n\n#endif\n"
  },
  {
    "path": "actors/group15_geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"common1.h\"\n#include \"group15.h\"\n\n#include \"lakitu_cameraman/geo.inc.c\"\n#include \"toad/geo.inc.c\"\n#include \"mips/geo.inc.c\"\n#include \"boo_castle/geo.inc.c\"\n"
  },
  {
    "path": "actors/group16.c",
    "content": "#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\n#include \"geo_commands.h\"\n#include \"macros.h\"\n#include \"sm64.h\"\n#include \"surface_terrains.h\"\n#include \"types.h\"\n#include \"make_const_nonconst.h\"\n\n#include \"chillychief/model.inc.c\"\n#include \"chillychief/anims/data.inc.c\"\n#include \"chillychief/geo.inc.c\"\n#include \"chillychief/anims/table.inc.c\"\nUNUSED static const u64 binid_0 = 0;\n\n#include \"moneybag/model.inc.c\"\n#include \"moneybag/anims/data.inc.c\"\n#include \"moneybag/anims/table.inc.c\"\nUNUSED static const u64 binid_1 = 1;\n"
  },
  {
    "path": "actors/group16.h",
    "content": "#ifndef GROUP16_H\n#define GROUP16_H\n\n#include \"types.h\"\n\n// chillychief\nextern const Gfx chilly_chief_seg6_dl_06002B30[];\nextern const Gfx chilly_chief_seg6_dl_06002BC8[];\nextern const Gfx chilly_chief_seg6_dl_06002C60[];\nextern const Gfx chilly_chief_seg6_dl_06002D18[];\nextern const Gfx chilly_chief_seg6_dl_06002D50[];\nextern const Gfx chilly_chief_seg6_dl_06002D88[];\nextern const Gfx chilly_chief_seg6_dl_06002E80[];\nextern const Gfx chilly_chief_seg6_dl_06002EB8[];\nextern const Gfx chilly_chief_seg6_dl_06002EF0[];\nextern const Gfx chilly_chief_seg6_dl_06002FC8[];\nextern const Gfx chilly_chief_seg6_dl_06003010[];\nextern const GeoLayout chilly_chief_geo[];\nextern const GeoLayout chilly_chief_big_geo[];\nextern const struct Animation *const chilly_chief_seg6_anims_06003994[];\n\n// moneybag\nextern const GeoLayout moneybag_geo_000000[];\nextern const GeoLayout moneybag_geo_000078[];\nextern const GeoLayout moneybag_geo[];\nextern const Gfx moneybag_seg6_dl_06005300[];\nextern const Gfx moneybag_seg6_dl_06005358[];\nextern const Gfx moneybag_seg6_dl_060053B8[];\nextern const Gfx moneybag_seg6_dl_06005590[];\nextern const Gfx moneybag_seg6_dl_06005618[];\nextern const Gfx moneybag_seg6_dl_06005688[];\nextern const Gfx moneybag_seg6_dl_06005708[];\nextern const Gfx moneybag_seg6_dl_06005750[];\nextern const Gfx moneybag_seg6_dl_06005980[];\nextern const Gfx moneybag_seg6_dl_060059F0[];\nextern const struct Animation *const moneybag_seg6_anims_06005E5C[];\n\n#endif\n"
  },
  {
    "path": "actors/group16_geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"common1.h\"\n#include \"group16.h\"\n\n#include \"moneybag/geo.inc.c\"\n"
  },
  {
    "path": "actors/group17.c",
    "content": "#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\n#include \"macros.h\"\n#include \"surface_terrains.h\"\n#include \"types.h\"\n#include \"make_const_nonconst.h\"\n\n#include \"mr_i_eyeball/model.inc.c\"\nUNUSED static const u64 binid_0 = 0;\n\n#include \"mr_i_iris/model.inc.c\"\nUNUSED static const u64 binid_1 = 1;\n\n#include \"swoop/model.inc.c\"\n#include \"swoop/anims/data.inc.c\"\n#include \"swoop/anims/table.inc.c\"\nUNUSED static const u64 binid_2 = 2;\n\n#include \"snufit/model.inc.c\"\nUNUSED static const u64 binid_3 = 3;\n\n#include \"dorrie/model.inc.c\"\n#include \"dorrie/anims/data.inc.c\"\n#include \"dorrie/anims/table.inc.c\"\n#include \"dorrie/collision.inc.c\"\nUNUSED static const u64 binid_4 = 4;\n\n#include \"scuttlebug/model.inc.c\"\n#include \"scuttlebug/anims/data.inc.c\"\n#include \"scuttlebug/anims/table.inc.c\"\nUNUSED static const u64 binid_5 = 5;\n"
  },
  {
    "path": "actors/group17.h",
    "content": "#ifndef GROUP17_H\n#define GROUP17_H\n\n#include \"types.h\"\n\n// dorrie\nextern const GeoLayout dorrie_geo[];\nextern const Gfx dorrie_seg6_dl_0600B8E8[];\nextern const Gfx dorrie_seg6_dl_0600B940[];\nextern const Gfx dorrie_seg6_dl_0600BAF8[];\nextern const Gfx dorrie_seg6_dl_0600BE68[];\nextern const Gfx dorrie_seg6_dl_0600BF10[];\nextern const Gfx dorrie_seg6_dl_0600C030[];\nextern const Gfx dorrie_seg6_dl_0600C310[];\nextern const Gfx dorrie_seg6_dl_0600C468[];\nextern const Gfx dorrie_seg6_dl_0600C758[];\nextern const Gfx dorrie_seg6_dl_0600C8B8[];\nextern const Gfx dorrie_seg6_dl_0600CDE8[];\nextern const Gfx dorrie_seg6_dl_0600CFD0[];\nextern const Gfx dorrie_seg6_dl_0600D300[];\nextern const Gfx dorrie_seg6_dl_0600D440[];\nextern const Gfx dorrie_seg6_dl_0600D620[];\nextern const Gfx dorrie_seg6_dl_0600D6D8[];\nextern const Gfx dorrie_seg6_dl_0600D818[];\nextern const Gfx dorrie_seg6_dl_0600D8B0[];\nextern const Gfx dorrie_seg6_dl_0600D9F0[];\nextern const Gfx dorrie_seg6_dl_0600DA88[];\nextern const Gfx dorrie_seg6_dl_0600DBC8[];\nextern const Gfx dorrie_seg6_dl_0600DC60[];\nextern const Gfx dorrie_seg6_dl_0600DDA0[];\nextern const Gfx dorrie_seg6_dl_0600DE38[];\nextern const Gfx dorrie_seg6_dl_0600DF60[];\nextern const Gfx dorrie_seg6_dl_0600DFA8[];\nextern const struct Animation *const dorrie_seg6_anims_0600F638[];\nextern const Collision dorrie_seg6_collision_0600F644[];\nextern const Collision dorrie_seg6_collision_0600FBB8[];\n\n// mr_i_eyeball\nextern const GeoLayout mr_i_geo[];\nextern const Gfx mr_i_eyeball_seg6_dl_06002080[];\n\n// mr_i_iris\nextern const GeoLayout mr_i_iris_geo[];\nextern const Gfx mr_i_iris_seg6_dl_06004170[];\nextern const Gfx mr_i_iris_seg6_dl_060041D8[];\nextern const Gfx mr_i_iris_seg6_dl_060041F0[];\nextern const Gfx mr_i_iris_seg6_dl_06004208[];\nextern const Gfx mr_i_iris_seg6_dl_06004220[];\n\n// scuttlebug\nextern const GeoLayout scuttlebug_geo[];\nextern const Gfx scuttlebug_seg6_dl_06013988[];\nextern const Gfx scuttlebug_seg6_dl_060139C0[];\nextern const Gfx scuttlebug_seg6_dl_060139F8[];\nextern const Gfx scuttlebug_seg6_dl_06013AB0[];\nextern const Gfx scuttlebug_seg6_dl_06013AE8[];\nextern const Gfx scuttlebug_seg6_dl_06013B98[];\nextern const Gfx scuttlebug_seg6_dl_06013BD0[];\nextern const Gfx scuttlebug_seg6_dl_06013C80[];\nextern const Gfx scuttlebug_seg6_dl_06013CB8[];\nextern const Gfx scuttlebug_seg6_dl_06013D68[];\nextern const Gfx scuttlebug_seg6_dl_06013DA0[];\nextern const Gfx scuttlebug_seg6_dl_06013FC8[];\nextern const Gfx scuttlebug_seg6_dl_060140F0[];\nextern const Gfx scuttlebug_seg6_dl_06014150[];\nextern const Gfx scuttlebug_seg6_dl_06014188[];\nextern const Gfx scuttlebug_seg6_dl_06014238[];\nextern const Gfx scuttlebug_seg6_dl_06014270[];\nextern const Gfx scuttlebug_seg6_dl_06014338[];\nextern const Gfx scuttlebug_seg6_dl_06014378[];\nextern const struct Animation *const scuttlebug_seg6_anims_06015064[];\n\n// snufit\nextern const GeoLayout snufit_geo[];\nextern const Gfx snufit_seg6_dl_060091E0[];\nextern const Gfx snufit_seg6_dl_06009278[];\nextern const Gfx snufit_seg6_dl_060092F0[];\nextern const Gfx snufit_seg6_dl_06009498[];\nextern const Gfx snufit_seg6_dl_06009668[];\nextern const Gfx snufit_seg6_dl_06009700[];\nextern const Gfx snufit_seg6_dl_06009748[];\nextern const Gfx snufit_seg6_dl_060098A0[];\nextern const Gfx snufit_seg6_dl_06009938[];\nextern const Gfx snufit_seg6_dl_060099D8[];\nextern const Gfx snufit_seg6_dl_06009A10[];\nextern const Gfx snufit_seg6_dl_06009B18[];\nextern const Gfx snufit_seg6_dl_06009B68[];\n\n// swoop\nextern const GeoLayout swoop_geo[];\nextern const Gfx swoop_seg6_dl_060065B8[];\nextern const Gfx swoop_seg6_dl_060066F8[];\nextern const Gfx swoop_seg6_dl_06006758[];\nextern const Gfx swoop_seg6_dl_06006848[];\nextern const Gfx swoop_seg6_dl_06006880[];\nextern const Gfx swoop_seg6_dl_06006A10[];\nextern const Gfx swoop_seg6_dl_06006A68[];\nextern const Gfx swoop_seg6_dl_06006A88[];\nextern const Gfx swoop_seg6_dl_06006B98[];\nextern const Gfx swoop_seg6_dl_06006BD0[];\nextern const Gfx swoop_seg6_dl_06006CC8[];\nextern const Gfx swoop_seg6_dl_06006D00[];\nextern const struct Animation *const swoop_seg6_anims_060070D0[];\n\n#endif\n"
  },
  {
    "path": "actors/group17_geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"common1.h\"\n#include \"group17.h\"\n\n#include \"mr_i_eyeball/geo.inc.c\"\n#include \"mr_i_iris/geo.inc.c\"\n#include \"swoop/geo.inc.c\"\n#include \"snufit/geo.inc.c\"\n#include \"dorrie/geo.inc.c\"\n#include \"scuttlebug/geo.inc.c\"\n"
  },
  {
    "path": "actors/group1_geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"common1.h\"\n#include \"group1.h\"\n\n#include \"yellow_sphere_small/geo.inc.c\"\n#include \"hoot/geo.inc.c\"\n#include \"yoshi_egg/geo.inc.c\"\n#include \"thwomp/geo.inc.c\"\n#include \"bullet_bill/geo.inc.c\"\n#include \"heave_ho/geo.inc.c\"\n"
  },
  {
    "path": "actors/group2.c",
    "content": "#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\n#include \"macros.h\"\n#include \"surface_terrains.h\"\n#include \"types.h\"\n#include \"make_const_nonconst.h\"\n\n#include \"bully/model.inc.c\"\n#include \"bully/anims/data.inc.c\"\n#include \"bully/anims/table.inc.c\"\nUNUSED static const u64 binid_0 = 0;\n\n#include \"blargg/model.inc.c\"\n#include \"blargg/anims/data.inc.c\"\n#include \"blargg/anims/table.inc.c\"\nUNUSED static const u64 binid_1 = 1;\n"
  },
  {
    "path": "actors/group2.h",
    "content": "#ifndef GROUP2_H\n#define GROUP2_H\n\n#include \"types.h\"\n\n// blargg\nextern const GeoLayout blargg_geo[];\nextern const Gfx blargg_seg5_dl_050058D0[];\nextern const Gfx blargg_seg5_dl_05005A60[];\nextern const Gfx blargg_seg5_dl_05005D00[];\nextern const struct Animation *const blargg_seg5_anims_0500616C[];\n\n// bully\nextern const GeoLayout bully_geo[];\nextern const GeoLayout bully_boss_geo[];\nextern const Gfx bully_seg5_dl_050002E0[];\nextern const Gfx bully_seg5_dl_05000398[];\nextern const Gfx bully_seg5_dl_05003708[];\nextern const Gfx bully_seg5_dl_050037A0[];\nextern const Gfx bully_seg5_dl_05003838[];\nextern const Gfx bully_seg5_dl_05003878[];\nextern const Gfx bully_seg5_dl_05003CD0[];\nextern const Gfx bully_seg5_dl_05003D08[];\nextern const Gfx bully_seg5_dl_05003D40[];\nextern const Gfx bully_seg5_dl_05003E38[];\nextern const Gfx bully_seg5_dl_05003E70[];\nextern const Gfx bully_seg5_dl_05003EA8[];\nextern const Gfx bully_seg5_dl_05003F80[];\nextern const Gfx bully_seg5_dl_05003FC8[];\nextern const struct Animation *const bully_seg5_anims_0500470C[];\n\n#endif\n"
  },
  {
    "path": "actors/group2_geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"common1.h\"\n#include \"group2.h\"\n\n#include \"bully/geo.inc.c\"\n#include \"blargg/geo.inc.c\"\n"
  },
  {
    "path": "actors/group3.c",
    "content": "#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\n#include \"macros.h\"\n#include \"surface_terrains.h\"\n#include \"types.h\"\n#include \"make_const_nonconst.h\"\n\n#include \"king_bobomb/model.inc.c\"\n#include \"king_bobomb/anims/data.inc.c\"\n#include \"king_bobomb/anims/table.inc.c\"\nUNUSED static const u64 binid_0 = 0;\n\n#include \"water_bubble/model.inc.c\"\nUNUSED static const u64 binid_1 = 1;\n"
  },
  {
    "path": "actors/group3.h",
    "content": "#ifndef GROUP3_H\n#define GROUP3_H\n\n#include \"types.h\"\n\n// king_bobomb\nextern const GeoLayout king_bobomb_geo[];\nextern const Gfx king_bobomb_seg5_dl_0500A4B8[];\nextern const Gfx king_bobomb_seg5_dl_0500A4F0[];\nextern const Gfx king_bobomb_seg5_dl_0500A5A0[];\nextern const Gfx king_bobomb_seg5_dl_0500A5D8[];\nextern const Gfx king_bobomb_seg5_dl_0500A688[];\nextern const Gfx king_bobomb_seg5_dl_0500A6C0[];\nextern const Gfx king_bobomb_seg5_dl_0500A770[];\nextern const Gfx king_bobomb_seg5_dl_0500A7A8[];\nextern const Gfx king_bobomb_seg5_dl_0500A858[];\nextern const Gfx king_bobomb_seg5_dl_0500A890[];\nextern const Gfx king_bobomb_seg5_dl_0500A940[];\nextern const Gfx king_bobomb_seg5_dl_0500A978[];\nextern const Gfx king_bobomb_seg5_dl_0500ABC0[];\nextern const Gfx king_bobomb_seg5_dl_0500AD08[];\nextern const Gfx king_bobomb_seg5_dl_0500AF20[];\nextern const Gfx king_bobomb_seg5_dl_0500B068[];\nextern const Gfx king_bobomb_seg5_dl_0500B118[];\nextern const Gfx king_bobomb_seg5_dl_0500B150[];\nextern const Gfx king_bobomb_seg5_dl_0500B188[];\nextern const Gfx king_bobomb_seg5_dl_0500B278[];\nextern const Gfx king_bobomb_seg5_dl_0500B2D0[];\nextern const Gfx king_bobomb_seg5_dl_0500B3C8[];\nextern const Gfx king_bobomb_seg5_dl_0500B418[];\nextern const Gfx king_bobomb_seg5_dl_0500B5F0[];\nextern const Gfx king_bobomb_seg5_dl_0500B6C0[];\nextern const struct Animation *const king_bobomb_seg5_anims_0500FE30[];\n\n// water_bubble\nextern const GeoLayout water_bomb_geo[];\nextern const GeoLayout water_bomb_shadow_geo[];\nextern const Gfx water_bubble_seg5_dl_05010D30[];\nextern const Gfx water_bubble_seg5_dl_05011000[];\n\n#endif\n"
  },
  {
    "path": "actors/group3_geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"common1.h\"\n#include \"group3.h\"\n\n#include \"king_bobomb/geo.inc.c\"\n#include \"water_bubble/geo.inc.c\"\n"
  },
  {
    "path": "actors/group4.c",
    "content": "#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\n#include \"geo_commands.h\"\n#include \"macros.h\"\n#include \"surface_terrains.h\"\n#include \"types.h\"\n#include \"make_const_nonconst.h\"\n\n#include \"clam_shell/model.inc.c\"\n#include \"clam_shell/anims/data.inc.c\"\n#include \"clam_shell/anims/table.inc.c\"\nUNUSED static const u64 binid_0 = 0;\n\n#include \"manta/model.inc.c\"\n#include \"manta/anims/data.inc.c\"\n#include \"manta/geo.inc.c\"\n#include \"manta/anims/table.inc.c\"\nUNUSED static const u64 binid_1 = 1;\n\n#include \"sushi/model.inc.c\"\n#include \"sushi/anims/data.inc.c\"\n#include \"sushi/anims/table.inc.c\"\nUNUSED static const u64 binid_2 = 2;\n\n#include \"unagi/model.inc.c\"\n#include \"unagi/anims/data.inc.c\"\n#include \"unagi/anims/table.inc.c\"\nUNUSED static const u64 binid_3 = 3;\n\n#include \"whirlpool/model.inc.c\"\nUNUSED static const u64 binid_4 = 4;\n"
  },
  {
    "path": "actors/group4.h",
    "content": "#ifndef GROUP4_H\n#define GROUP4_H\n\n#include \"types.h\"\n\n// clam_shell\nextern const GeoLayout clam_shell_geo[];\nextern const Gfx clam_shell_seg5_dl_050011A8[];\nextern const Gfx clam_shell_seg5_dl_05001238[];\nextern const Gfx clam_shell_seg5_dl_050012B8[];\nextern const Gfx clam_shell_seg5_dl_05001478[];\nextern const Gfx clam_shell_seg5_dl_050014F8[];\nextern const Gfx clam_shell_seg5_dl_05001568[];\nextern const struct Animation *const clam_shell_seg5_anims_05001744[];\n\n// manta\nextern const Gfx manta_seg5_dl_05004960[];\nextern const Gfx manta_seg5_dl_050049C8[];\nextern const Gfx manta_seg5_dl_05004A70[];\nextern const Gfx manta_seg5_dl_05004CA8[];\nextern const Gfx manta_seg5_dl_05004D10[];\nextern const Gfx manta_seg5_dl_05004DB8[];\nextern const Gfx manta_seg5_dl_05004E60[];\nextern const Gfx manta_seg5_dl_05004E90[];\nextern const Gfx manta_seg5_dl_05004FA0[];\nextern const Gfx manta_seg5_dl_05005038[];\nextern const Gfx manta_seg5_dl_05005248[];\nextern const Gfx manta_seg5_dl_05005288[];\nextern const Gfx manta_seg5_dl_05005308[];\nextern const Gfx manta_seg5_dl_05005358[];\nextern const Gfx manta_seg5_dl_050054F0[];\nextern const Gfx manta_seg5_dl_05005558[];\nextern const Gfx manta_seg5_dl_050055A8[];\nextern const Gfx manta_seg5_dl_050056E0[];\nextern const Gfx manta_seg5_dl_05005730[];\nextern const Gfx manta_seg5_dl_05005768[];\nextern const Gfx manta_seg5_dl_05005880[];\nextern const Gfx manta_seg5_dl_05005918[];\nextern const Gfx manta_seg5_dl_05005B28[];\nextern const Gfx manta_seg5_dl_05005B68[];\nextern const Gfx manta_seg5_dl_05005BE8[];\nextern const Gfx manta_seg5_dl_05005C38[];\nextern const Gfx manta_seg5_dl_05005DD0[];\nextern const Gfx manta_seg5_dl_05005E38[];\nextern const Gfx manta_seg5_dl_05005E88[];\nextern const Gfx manta_seg5_dl_05005FC0[];\nextern const Gfx manta_seg5_dl_05006010[];\nextern const Gfx manta_seg5_dl_05006048[];\nextern const Gfx manta_seg5_dl_05006510[];\nextern const Gfx manta_seg5_dl_05006588[];\nextern const Gfx manta_seg5_dl_050065F0[];\nextern const Gfx manta_seg5_dl_050066D0[];\nextern const Gfx manta_seg5_dl_05006750[];\nextern const Gfx manta_seg5_dl_05006B08[];\nextern const Gfx manta_seg5_dl_05006B70[];\nextern const Gfx manta_seg5_dl_05006C08[];\nextern const GeoLayout manta_seg5_geo_05008D14[];\nextern const struct Animation *const manta_seg5_anims_05008EB4[];\n\n// sushi\nextern const GeoLayout sushi_geo[];\nextern const Gfx sushi_seg5_dl_05009CC0[];\nextern const Gfx sushi_seg5_dl_05009DD0[];\nextern const Gfx sushi_seg5_dl_05009F30[];\nextern const Gfx sushi_seg5_dl_0500A008[];\nextern const Gfx sushi_seg5_dl_0500A0E8[];\nextern const Gfx sushi_seg5_dl_0500A160[];\nextern const Gfx sushi_seg5_dl_0500A580[];\nextern const Gfx sushi_seg5_dl_0500A748[];\nextern const Gfx sushi_seg5_dl_0500A768[];\nextern const Gfx sushi_seg5_dl_0500A860[];\nextern const Gfx sushi_seg5_dl_0500A8A8[];\nextern const Gfx sushi_seg5_dl_0500A958[];\nextern const Gfx sushi_seg5_dl_0500A990[];\nextern const struct Animation *const sushi_seg5_anims_0500AE54[];\n\n// unagi\nextern const GeoLayout unagi_geo[];\nextern const Gfx unagi_seg5_dl_0500CCE0[];\nextern const Gfx unagi_seg5_dl_0500CD30[];\nextern const Gfx unagi_seg5_dl_0500CDD0[];\nextern const Gfx unagi_seg5_dl_0500CF88[];\nextern const Gfx unagi_seg5_dl_0500D038[];\nextern const Gfx unagi_seg5_dl_0500D050[];\nextern const Gfx unagi_seg5_dl_0500D1C0[];\nextern const Gfx unagi_seg5_dl_0500D268[];\nextern const Gfx unagi_seg5_dl_0500D3C0[];\nextern const Gfx unagi_seg5_dl_0500D468[];\nextern const Gfx unagi_seg5_dl_0500D5C0[];\nextern const Gfx unagi_seg5_dl_0500D668[];\nextern const Gfx unagi_seg5_dl_0500D7A0[];\nextern const Gfx unagi_seg5_dl_0500D828[];\nextern const Gfx unagi_seg5_dl_0500DB60[];\nextern const Gfx unagi_seg5_dl_0500DBC0[];\nextern const Gfx unagi_seg5_dl_0500DD08[];\nextern const Gfx unagi_seg5_dl_0500DE70[];\nextern const Gfx unagi_seg5_dl_0500DEB8[];\nextern const Gfx unagi_seg5_dl_0500E030[];\nextern const Gfx unagi_seg5_dl_0500E088[];\nextern const Gfx unagi_seg5_dl_0500E200[];\nextern const Gfx unagi_seg5_dl_0500E258[];\nextern const struct Animation *const unagi_seg5_anims_05012824[];\n\n// whirlpool\nextern const Gfx whirlpool_seg5_dl_05013B58[];\nextern const Gfx whirlpool_seg5_dl_05013CB8[];\n\n#endif\n"
  },
  {
    "path": "actors/group4_geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"common1.h\"\n#include \"group4.h\"\n\n#include \"clam_shell/geo.inc.c\"\n#include \"sushi/geo.inc.c\"\n#include \"unagi/geo.inc.c\"\n"
  },
  {
    "path": "actors/group5.c",
    "content": "#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\n#include \"geo_commands.h\"\n#include \"macros.h\"\n#include \"surface_terrains.h\"\n#include \"sm64.h\"\n#include \"types.h\"\n#include \"make_const_nonconst.h\"\n\n#include \"klepto/model.inc.c\"\n#include \"klepto/anims/data.inc.c\"\n#include \"klepto/anims/table.inc.c\"\nUNUSED static const u64 binid_0 = 0;\n\n#include \"eyerok/model.inc.c\"\n#include \"eyerok/anims/data.inc.c\"\n#include \"eyerok/anims/table.inc.c\"\nUNUSED static const u64 binid_1 = 1;\n\n#include \"pokey/model.inc.c\"\nUNUSED static const u64 binid_2 = 2;\n\n#include \"tornado/model.inc.c\"\n#include \"tornado/geo.inc.c\"\nUNUSED static const u64 binid_3 = 3;\n"
  },
  {
    "path": "actors/group5.h",
    "content": "#ifndef GROUP5_H\n#define GROUP5_H\n\n#include \"types.h\"\n\n// eyerok\nextern const GeoLayout eyerok_geo_0002AC[];\nextern const GeoLayout eyerok_left_hand_geo[];\nextern const GeoLayout eyerok_right_hand_geo[];\nextern const Gfx eyerok_seg5_dl_0500B6B8[];\nextern const Gfx eyerok_seg5_dl_0500B748[];\nextern const Gfx eyerok_seg5_dl_0500B930[];\nextern const Gfx eyerok_seg5_dl_0500B9C0[];\nextern const Gfx eyerok_seg5_dl_0500BBE8[];\nextern const Gfx eyerok_seg5_dl_0500BC88[];\nextern const Gfx eyerok_seg5_dl_0500BE70[];\nextern const Gfx eyerok_seg5_dl_0500BF00[];\nextern const Gfx eyerok_seg5_dl_0500C088[];\nextern const Gfx eyerok_seg5_dl_0500C100[];\nextern const Gfx eyerok_seg5_dl_0500C2E8[];\nextern const Gfx eyerok_seg5_dl_0500C378[];\nextern const Gfx eyerok_seg5_dl_0500C5A0[];\nextern const Gfx eyerok_seg5_dl_0500C640[];\nextern const Gfx eyerok_seg5_dl_0500C868[];\nextern const Gfx eyerok_seg5_dl_0500C908[];\nextern const Gfx eyerok_seg5_dl_0500C9B8[];\nextern const Gfx eyerok_seg5_dl_0500CA50[];\nextern const Gfx eyerok_seg5_dl_0500CAE8[];\nextern const Gfx eyerok_seg5_dl_0500CB80[];\nextern const Gfx eyerok_seg5_dl_0500CC18[];\nextern const Gfx eyerok_seg5_dl_0500CC30[];\nextern const struct Animation *const eyerok_seg5_anims_050116E4[];\n\n// klepto\nextern const GeoLayout klepto_geo[];\nextern const Gfx klepto_seg5_dl_05003A68[];\nextern const Gfx klepto_seg5_dl_05003AC0[];\nextern const Gfx klepto_seg5_dl_05003B40[];\nextern const Gfx klepto_seg5_dl_05003BD0[];\nextern const Gfx klepto_seg5_dl_05003D00[];\nextern const Gfx klepto_seg5_dl_05003D80[];\nextern const Gfx klepto_seg5_dl_05003E68[];\nextern const Gfx klepto_seg5_dl_05003F20[];\nextern const Gfx klepto_seg5_dl_05004058[];\nextern const Gfx klepto_seg5_dl_05004118[];\nextern const Gfx klepto_seg5_dl_050041A0[];\nextern const Gfx klepto_seg5_dl_050041E8[];\nextern const Gfx klepto_seg5_dl_050042D0[];\nextern const Gfx klepto_seg5_dl_05004330[];\nextern const Gfx klepto_seg5_dl_050043D8[];\nextern const Gfx klepto_seg5_dl_05004438[];\nextern const Gfx klepto_seg5_dl_05004698[];\nextern const Gfx klepto_seg5_dl_050047C8[];\nextern const Gfx klepto_seg5_dl_05004A28[];\nextern const Gfx klepto_seg5_dl_05004B58[];\nextern const Gfx klepto_seg5_dl_05004BE0[];\nextern const Gfx klepto_seg5_dl_05004C28[];\nextern const Gfx klepto_seg5_dl_05004CF0[];\nextern const Gfx klepto_seg5_dl_05004D38[];\nextern const Gfx klepto_seg5_dl_05004E00[];\nextern const Gfx klepto_seg5_dl_05004E48[];\nextern const Gfx klepto_seg5_dl_05004F10[];\nextern const Gfx klepto_seg5_dl_05004F58[];\nextern const Gfx klepto_seg5_dl_05005020[];\nextern const Gfx klepto_seg5_dl_05005068[];\nextern const Gfx klepto_seg5_dl_05005130[];\nextern const Gfx klepto_seg5_dl_05005178[];\nextern const struct Animation *const klepto_seg5_anims_05008CFC[];\n\n// pokey\nextern const GeoLayout pokey_head_geo[];\nextern const GeoLayout pokey_body_part_geo[];\nextern const Gfx pokey_seg5_dl_05012750[];\nextern const Gfx pokey_seg5_dl_05012798[];\nextern const Gfx pokey_seg5_dl_050127D8[];\nextern const Gfx pokey_seg5_dl_05012808[];\nextern const Gfx pokey_seg5_dl_05013078[];\nextern const Gfx pokey_seg5_dl_050130B0[];\n\n// tweester\nextern const Gfx tornado_seg5_dl_05014450[];\nextern const Gfx tornado_seg5_dl_050145C0[];\nextern const GeoLayout tweester_geo[];\n\n#endif\n"
  },
  {
    "path": "actors/group5_geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"common1.h\"\n#include \"group5.h\"\n\n#include \"klepto/geo.inc.c\"\n#include \"eyerok/geo.inc.c\"\n#include \"pokey/geo.inc.c\"\n"
  },
  {
    "path": "actors/group6.c",
    "content": "#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\n#include \"macros.h\"\n#include \"surface_terrains.h\"\n#include \"types.h\"\n#include \"make_const_nonconst.h\"\n\n#include \"monty_mole_hole/model.inc.c\"\nUNUSED static const u64 binid_0 = 0;\n\n#include \"monty_mole/model.inc.c\"\n#include \"monty_mole/anims/data.inc.c\"\n#include \"monty_mole/anims/table.inc.c\"\nUNUSED static const u64 binid_1 = 1;\n\n#include \"smoke/model.inc.c\"\nUNUSED static const u64 binid_2 = 2;\n\n#include \"ukiki/model.inc.c\"\n#include \"ukiki/anims/data.inc.c\"\n#include \"ukiki/anims/table.inc.c\"\nUNUSED static const u64 binid_3 = 3;\n\n#include \"fwoosh/model.inc.c\"\nUNUSED static const u64 binid_4 = 4;\n"
  },
  {
    "path": "actors/group6.h",
    "content": "#ifndef GROUP6_H\n#define GROUP6_H\n\n#include \"types.h\"\n\n// fwoosh\nextern const GeoLayout fwoosh_geo[];\nextern const Gfx fwoosh_seg5_dl_05016008[];\nextern const Gfx fwoosh_seg5_dl_05016040[];\n\n// monty_mole\nextern const GeoLayout monty_mole_geo[];\nextern const Gfx monty_mole_seg5_dl_05003208[];\nextern const Gfx monty_mole_seg5_dl_050032A0[];\nextern const Gfx monty_mole_seg5_dl_05003438[];\nextern const Gfx monty_mole_seg5_dl_050034A0[];\nextern const Gfx monty_mole_seg5_dl_05003518[];\nextern const Gfx monty_mole_seg5_dl_05003730[];\nextern const Gfx monty_mole_seg5_dl_050037A8[];\nextern const Gfx monty_mole_seg5_dl_05003820[];\nextern const Gfx monty_mole_seg5_dl_05003938[];\nextern const Gfx monty_mole_seg5_dl_050039D0[];\nextern const Gfx monty_mole_seg5_dl_05003B68[];\nextern const Gfx monty_mole_seg5_dl_05003BD0[];\nextern const Gfx monty_mole_seg5_dl_05003C48[];\nextern const Gfx monty_mole_seg5_dl_05003E60[];\nextern const Gfx monty_mole_seg5_dl_05003ED8[];\nextern const Gfx monty_mole_seg5_dl_05003F50[];\nextern const Gfx monty_mole_seg5_dl_050042B8[];\nextern const Gfx monty_mole_seg5_dl_05004368[];\nextern const Gfx monty_mole_seg5_dl_050044B0[];\nextern const Gfx monty_mole_seg5_dl_050049B0[];\nextern const Gfx monty_mole_seg5_dl_05004A10[];\nextern const Gfx monty_mole_seg5_dl_05004B50[];\nextern const Gfx monty_mole_seg5_dl_05004BE0[];\nextern const Gfx monty_mole_seg5_dl_05004C00[];\nextern const Gfx monty_mole_seg5_dl_05004CE8[];\nextern const Gfx monty_mole_seg5_dl_05004D30[];\nextern const struct Animation *const monty_mole_seg5_anims_05007248[];\n\n// monty_mole_hole\nextern const Gfx monty_mole_hole_seg5_dl_05000840[];\n\n// smoke\nextern const Gfx smoke_seg5_dl_05007AC0[];\nextern const Gfx smoke_seg5_dl_05007AF8[];\n\n// ukiki\nextern const GeoLayout ukiki_geo[];\nextern const Gfx ukiki_seg5_dl_0500B040[];\nextern const Gfx ukiki_seg5_dl_0500B1D8[];\nextern const Gfx ukiki_seg5_dl_0500B278[];\nextern const Gfx ukiki_seg5_dl_0500B2B8[];\nextern const Gfx ukiki_seg5_dl_0500B2E8[];\nextern const Gfx ukiki_seg5_dl_0500B310[];\nextern const Gfx ukiki_seg5_dl_0500B660[];\nextern const Gfx ukiki_seg5_dl_0500B7E8[];\nextern const Gfx ukiki_seg5_dl_0500B820[];\nextern const Gfx ukiki_seg5_dl_0500B920[];\nextern const Gfx ukiki_seg5_dl_0500B988[];\nextern const Gfx ukiki_seg5_dl_0500BA90[];\nextern const Gfx ukiki_seg5_dl_0500BB28[];\nextern const Gfx ukiki_seg5_dl_0500BC10[];\nextern const Gfx ukiki_seg5_dl_0500BC78[];\nextern const Gfx ukiki_seg5_dl_0500BDA0[];\nextern const Gfx ukiki_seg5_dl_0500BE38[];\nextern const Gfx ukiki_seg5_dl_0500BF60[];\nextern const Gfx ukiki_seg5_dl_0500BFF8[];\nextern const Gfx ukiki_seg5_dl_0500C120[];\nextern const Gfx ukiki_seg5_dl_0500C1B8[];\nextern const Gfx ukiki_seg5_dl_0500C2D0[];\nextern const Gfx ukiki_seg5_dl_0500C368[];\nextern const Gfx ukiki_seg5_dl_0500C490[];\nextern const Gfx ukiki_seg5_dl_0500C528[];\nextern const Gfx ukiki_seg5_dl_0500C650[];\nextern const Gfx ukiki_seg5_dl_0500C6E8[];\nextern const Gfx ukiki_seg5_dl_0500C800[];\nextern const Gfx ukiki_seg5_dl_0500C898[];\nextern const Gfx ukiki_seg5_dl_0500C9B0[];\nextern const Gfx ukiki_seg5_dl_0500CA48[];\nextern const Gfx ukiki_seg5_dl_0500CF68[];\nextern const Gfx ukiki_seg5_dl_0500CFF0[];\nextern const Gfx ukiki_seg5_dl_0500D078[];\nextern const Gfx ukiki_seg5_dl_0500D108[];\nextern const struct Animation *const ukiki_seg5_anims_05015784[];\n\n#endif\n"
  },
  {
    "path": "actors/group6_geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"common1.h\"\n#include \"group6.h\"\n\n#include \"monty_mole/geo.inc.c\"\n#include \"ukiki/geo.inc.c\"\n#include \"fwoosh/geo.inc.c\"\n"
  },
  {
    "path": "actors/group7.c",
    "content": "#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\n#include \"macros.h\"\n#include \"surface_terrains.h\"\n#include \"types.h\"\n#include \"make_const_nonconst.h\"\n\n#include \"spindrift/model.inc.c\"\n#include \"spindrift/anims/data.inc.c\"\n#include \"spindrift/anims/table.inc.c\"\nUNUSED static const u64 binid_0 = 0;\n\n#include \"penguin/model.inc.c\"\n#include \"penguin/anims/data.inc.c\"\n#include \"penguin/anims/table.inc.c\"\n#include \"penguin/collision.inc.c\"\nUNUSED static const u64 binid_1 = 1;\n\n#include \"snowman/model.inc.c\"\n#include \"snowman/anims/data.inc.c\"\n#include \"snowman/anims/table.inc.c\"\nUNUSED static const u64 binid_2 = 2;\n"
  },
  {
    "path": "actors/group7.h",
    "content": "#ifndef GROUP7_H\n#define GROUP7_H\n\n#include \"types.h\"\n\n// penguin\nextern const GeoLayout penguin_geo[];\nextern const Gfx penguin_seg5_dl_05006188[];\nextern const Gfx penguin_seg5_dl_050061C8[];\nextern const Gfx penguin_seg5_dl_050061F8[];\nextern const Gfx penguin_seg5_dl_05006380[];\nextern const Gfx penguin_seg5_dl_050063C8[];\nextern const Gfx penguin_seg5_dl_05006428[];\nextern const Gfx penguin_seg5_dl_05006458[];\nextern const Gfx penguin_seg5_dl_05006488[];\nextern const Gfx penguin_seg5_dl_050064B8[];\nextern const Gfx penguin_seg5_dl_050064E8[];\nextern const Gfx penguin_seg5_dl_05007198[];\nextern const Gfx penguin_seg5_dl_050071E8[];\nextern const Gfx penguin_seg5_dl_05007238[];\nextern const Gfx penguin_seg5_dl_050072C8[];\nextern const Gfx penguin_seg5_dl_05007358[];\nextern const Gfx penguin_seg5_dl_05007540[];\nextern const struct Animation *const penguin_seg5_anims_05008B74[];\nextern const Collision penguin_seg5_collision_05008B88[];\n\n// snowman\nextern const GeoLayout mr_blizzard_hidden_geo[];\nextern const GeoLayout mr_blizzard_geo[];\nextern const Gfx snowman_seg5_dl_0500C4C8[];\nextern const Gfx snowman_seg5_dl_0500C500[];\nextern const Gfx snowman_seg5_dl_0500C5B0[];\nextern const Gfx snowman_seg5_dl_0500C5E8[];\nextern const Gfx snowman_seg5_dl_0500C620[];\nextern const Gfx snowman_seg5_dl_0500C718[];\nextern const Gfx snowman_seg5_dl_0500C760[];\nextern const Gfx snowman_seg5_dl_0500C978[];\nextern const Gfx snowman_seg5_dl_0500CAA8[];\nextern const Gfx snowman_seg5_dl_0500CB88[];\nextern const Gfx snowman_seg5_dl_0500CBC0[];\nextern const Gfx snowman_seg5_dl_0500CBF8[];\nextern const Gfx snowman_seg5_dl_0500CCB0[];\nextern const Gfx snowman_seg5_dl_0500CCE8[];\nextern const struct Animation *const snowman_seg5_anims_0500D118[];\n\n// spindrift\nextern const GeoLayout spindrift_geo[];\nextern const Gfx spindrift_seg5_dl_050002A0[];\nextern const Gfx spindrift_seg5_dl_05000328[];\nextern const Gfx spindrift_seg5_dl_05002710[];\nextern const Gfx spindrift_seg5_dl_05002748[];\nextern const Gfx spindrift_seg5_dl_050027F8[];\nextern const Gfx spindrift_seg5_dl_05002830[];\nextern const Gfx spindrift_seg5_dl_050028D0[];\nextern const Gfx spindrift_seg5_dl_05002900[];\nextern const Gfx spindrift_seg5_dl_050029C8[];\nextern const Gfx spindrift_seg5_dl_05002A20[];\nextern const Gfx spindrift_seg5_dl_05002AD8[];\nextern const Gfx spindrift_seg5_dl_05002B30[];\nextern const Gfx spindrift_seg5_dl_05002C98[];\nextern const Gfx spindrift_seg5_dl_05002D08[];\nextern const struct Animation *const spindrift_seg5_anims_05002D68[];\n\n#endif\n"
  },
  {
    "path": "actors/group7_geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"common1.h\"\n#include \"group7.h\"\n\n#include \"spindrift/geo.inc.c\"\n#include \"penguin/geo.inc.c\"\n#include \"snowman/geo.inc.c\"\n"
  },
  {
    "path": "actors/group8.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"macros.h\"\n#include \"surface_terrains.h\"\n#include \"types.h\"\n#include \"make_const_nonconst.h\"\n\n#include \"springboard/model.inc.c\"\n#include \"springboard/collision.inc.c\"\nUNUSED static const u64 binid_0 = 0;\n\n#include \"capswitch/model.inc.c\"\n#include \"capswitch/collision.inc.c\"\nUNUSED static const u64 binid_1 = 1;\n"
  },
  {
    "path": "actors/group8.h",
    "content": "#ifndef GROUP8_H\n#define GROUP8_H\n\n#include \"types.h\"\n\n// capswitch\nextern const GeoLayout cap_switch_geo[];\nextern const Gfx capswitch_seg5_dl_05002D88[];\nextern const Gfx cap_switch_exclamation_seg5_dl_05002E00[];\nextern const Gfx capswitch_seg5_dl_05003020[];\nextern const Gfx cap_switch_base_seg5_dl_05003120[];\nextern const Gfx capswitch_seg5_dl_05003280[];\nextern const Gfx capswitch_seg5_dl_05003350[];\nextern const Gfx capswitch_seg5_dl_05003370[];\nextern const Gfx capswitch_seg5_dl_05003390[];\nextern const Gfx capswitch_seg5_dl_050033B0[];\nextern const Collision capswitch_collision_050033D0[];\nextern const Collision capswitch_collision_05003448[];\n\n// springboard\nextern const GeoLayout springboard_top_geo[];\nextern const GeoLayout springboard_spring_geo[];\nextern const GeoLayout springboard_bottom_geo[];\nextern const Gfx springboard_checkerboard_seg5_dl_050016B8[];\nextern const Gfx springboard_spring_seg5_dl_05001800[];\nextern const Gfx springboard_checkerboard_seg5_dl_05001900[];\nextern const Collision springboard_collision_05001A28[];\n\n#endif\n"
  },
  {
    "path": "actors/group8_geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"common1.h\"\n#include \"group8.h\"\n\n#include \"springboard/geo.inc.c\"\n#include \"capswitch/geo.inc.c\"\n"
  },
  {
    "path": "actors/group9.c",
    "content": "#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\n#include \"macros.h\"\n#include \"surface_terrains.h\"\n#include \"types.h\"\n#include \"make_const_nonconst.h\"\n\n#include \"bookend/model.inc.c\"\n#include \"bookend/anims/data.inc.c\"\n#include \"bookend/anims/table.inc.c\"\nUNUSED static const u64 binid_0 = 0;\n\n#include \"book/model.inc.c\"\nUNUSED static const u64 binid_1 = 1;\n\n#include \"chair/model.inc.c\"\n#include \"chair/anims/data.inc.c\"\n#include \"chair/anims/table.inc.c\"\nUNUSED static const u64 binid_2 = 2;\n\n#include \"small_key/model.inc.c\"\nUNUSED static const u64 binid_3 = 3;\n\n#include \"mad_piano/model.inc.c\"\n#include \"mad_piano/anims/data.inc.c\"\n#include \"mad_piano/anims/table.inc.c\"\nUNUSED static const u64 binid_4 = 4;\n\n#include \"boo/model.inc.c\"\nUNUSED static const u64 binid_5 = 5;\n\n#include \"haunted_cage/model.inc.c\"\nUNUSED static const u64 binid_6 = 6;\n"
  },
  {
    "path": "actors/group9.h",
    "content": "#ifndef GROUP9_H\n#define GROUP9_H\n\n#include \"types.h\"\n\n// boo\nextern const GeoLayout boo_geo[];\nextern const Gfx boo_seg5_dl_0500BEE0[];\nextern const Gfx boo_seg5_dl_0500BF48[];\nextern const Gfx boo_seg5_dl_0500BFA0[];\nextern const Gfx boo_seg5_dl_0500C1B0[];\n\n// book\nextern const GeoLayout bookend_geo[];\nextern const Gfx book_seg5_dl_05002EF0[];\nextern const Gfx book_seg5_dl_05002F58[];\nextern const Gfx book_seg5_dl_05002FB0[];\n\n// bookend\nextern const GeoLayout bookend_part_geo[];\nextern const Gfx bookend_seg5_dl_050018F8[];\nextern const Gfx bookend_seg5_dl_05001940[];\nextern const Gfx bookend_seg5_dl_05001978[];\nextern const Gfx bookend_seg5_dl_05001AA0[];\nextern const Gfx bookend_seg5_dl_05001AE8[];\nextern const Gfx bookend_seg5_dl_05001B20[];\nextern const Gfx bookend_seg5_dl_05001CC8[];\nextern const Gfx bookend_seg5_dl_05001D10[];\nextern const Gfx bookend_seg5_dl_05001D68[];\nextern const Gfx bookend_seg5_dl_05001EF8[];\nextern const Gfx bookend_seg5_dl_05001F40[];\nextern const Gfx bookend_seg5_dl_05001F98[];\nextern const Gfx bookend_seg5_dl_050020E8[];\nextern const Gfx bookend_seg5_dl_05002140[];\nextern const Gfx bookend_seg5_dl_05002288[];\nextern const Gfx bookend_seg5_dl_050022E0[];\nextern const struct Animation *const bookend_seg5_anims_05002540[];\n\n// chair\nextern const GeoLayout haunted_chair_geo[];\nextern const Gfx chair_seg5_dl_05004E38[];\nextern const Gfx chair_seg5_dl_05004EE8[];\nextern const Gfx chair_seg5_dl_050050F0[];\nextern const Gfx chair_seg5_dl_05005190[];\nextern const Gfx chair_seg5_dl_05005378[];\nextern const Gfx chair_seg5_dl_05005408[];\nextern const Gfx chair_seg5_dl_050055F0[];\nextern const Gfx chair_seg5_dl_05005680[];\nextern const struct Animation *const chair_seg5_anims_05005784[];\n\n// haunted_cage\nextern const GeoLayout haunted_cage_geo[];\nextern const Gfx haunted_cage_seg5_dl_0500F4C8[];\nextern const Gfx haunted_cage_seg5_dl_0500F660[];\nextern const Gfx haunted_cage_seg5_dl_0500F760[];\nextern const Gfx haunted_cage_seg5_dl_0500F7D8[];\nextern const Gfx haunted_cage_seg5_dl_0500FB40[];\nextern const Gfx haunted_cage_seg5_dl_0500FC28[];\nextern const Gfx haunted_cage_seg5_dl_0500FFF0[];\nextern const Gfx haunted_cage_seg5_dl_05010100[];\n\n// mad_piano\nextern const GeoLayout mad_piano_geo[];\nextern const Gfx mad_piano_seg5_dl_05008B68[];\nextern const Gfx mad_piano_seg5_dl_05008BD0[];\nextern const Gfx mad_piano_seg5_dl_05008CB0[];\nextern const Gfx mad_piano_seg5_dl_05009590[];\nextern const Gfx mad_piano_seg5_dl_050096C8[];\nextern const Gfx mad_piano_seg5_dl_050097B0[];\nextern const Gfx mad_piano_seg5_dl_050097F8[];\nextern const Gfx mad_piano_seg5_dl_05009840[];\nextern const Gfx mad_piano_seg5_dl_05009888[];\nextern const Gfx mad_piano_seg5_dl_050098E8[];\nextern const struct Animation *const mad_piano_seg5_anims_05009B14[];\n\n// small_key\nextern const GeoLayout small_key_geo[];\nextern const Gfx small_key_seg5_dl_05006700[];\nextern const Gfx small_key_seg5_dl_05006A08[];\nextern const Gfx small_key_seg5_dl_05006A28[];\nextern const Gfx small_key_seg5_dl_05006A48[];\nextern const Gfx small_key_seg5_dl_05006A68[];\n\n#endif\n"
  },
  {
    "path": "actors/group9_geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"common1.h\"\n#include \"group9.h\"\n\n#include \"bookend/geo.inc.c\"\n#include \"book/geo.inc.c\"\n#include \"chair/geo.inc.c\"\n#include \"small_key/geo.inc.c\"\n#include \"mad_piano/geo.inc.c\"\n#include \"boo/geo.inc.c\"\n#include \"haunted_cage/geo.inc.c\"\n"
  },
  {
    "path": "actors/haunted_cage/geo.inc.c",
    "content": "// 0x0C000274\nconst GeoLayout haunted_cage_geo[] = {\n    GEO_CULLING_RADIUS(300),\n    GEO_OPEN_NODE(),\n        GEO_SHADOW(SHADOW_CIRCLE_9_VERTS, 0x96, 100),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, haunted_cage_seg5_dl_0500F7D8),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, haunted_cage_seg5_dl_0500FC28),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, haunted_cage_seg5_dl_05010100),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/haunted_cage/model.inc.c",
    "content": "// Haunted Cage\n\n// 0x0500C258\nstatic const Lights1 haunted_cage_seg5_lights_0500C258 = gdSPDefLights1(\n    0x39, 0x0c, 0x0e,\n    0x90, 0x1e, 0x25, 0x28, 0x28, 0x28\n);\n\n// 0x0500C270\nstatic const Lights1 haunted_cage_seg5_lights_0500C270 = gdSPDefLights1(\n    0x47, 0x47, 0x47,\n    0xb2, 0xb2, 0xb2, 0x28, 0x28, 0x28\n);\n\n// 0x0500C288\nALIGNED8 static const Texture haunted_cage_seg5_texture_0500C288[] = {\n#include \"actors/haunted_cage/bbh_cage_floor.rgba16.inc.c\"\n};\n\n// 0x0500CA88\nALIGNED8 static const Texture haunted_cage_seg5_texture_0500CA88[] = {\n#include \"actors/haunted_cage/bbh_cage_double_ornament.rgba16.inc.c\"\n};\n\n// 0x0500D288\nALIGNED8 static const Texture haunted_cage_seg5_texture_0500D288[] = {\n#include \"actors/haunted_cage/bbh_cage_ornament.rgba16.inc.c\"\n};\n\n// 0x0500D688\nALIGNED8 static const Texture haunted_cage_seg5_texture_0500D688[] = {\n#include \"actors/haunted_cage/bbh_cage_wooden_base.rgba16.inc.c\"\n};\n\n// 0x0500DA88\nALIGNED8 static const Texture haunted_cage_seg5_texture_0500DA88[] = {\n#include \"actors/haunted_cage/bbh_cage_bars.rgba16.inc.c\"\n};\n\n// possibly garbage. does not at all appear to be a texture and is unreferenced\n// also could be some sort of shader mask from much earlier in development, considering\n// Big Boo's Haunt was a very very early level.\n// 0x0500E288\nALIGNED8 static const Texture haunted_cage_seg5_texture_0500E288[] = {\n#include \"actors/haunted_cage/bbh_cage_garbage.rgba16.inc.c\"\n};\n\n// 0x0500EA88\nstatic const Vtx haunted_cage_seg5_vertex_0500EA88[] = {\n    {{{    47,     81,      0}, 0, {  6100,   2042}, {0x31, 0x73, 0xf1, 0xff}}},\n    {{{    40,     81,    -22}, 0, {  7122,   2042}, {0x31, 0x73, 0xf1, 0xff}}},\n    {{{     0,    101,      0}, 0, {  6612,     66}, {0x31, 0x73, 0xf1, 0xff}}},\n    {{{    40,     81,     23}, 0, {  5078,   2042}, {0x31, 0x74, 0x0f, 0xff}}},\n    {{{    47,     81,      0}, 0, {  6100,   2042}, {0x31, 0x74, 0x0f, 0xff}}},\n    {{{     0,    101,      0}, 0, {  5590,     66}, {0x31, 0x74, 0x0f, 0xff}}},\n    {{{    40,     81,    -22}, 0, {  7122,   2042}, {0x25, 0x73, 0xdb, 0xff}}},\n    {{{    23,     81,    -39}, 0, {  8144,   2042}, {0x25, 0x73, 0xdb, 0xff}}},\n    {{{     0,    101,      0}, 0, {  7634,     66}, {0x25, 0x73, 0xdb, 0xff}}},\n    {{{    23,     81,    -39}, 0, {  8144,   2042}, {0x0f, 0x73, 0xce, 0xff}}},\n    {{{     0,     81,    -46}, 0, {  9166,   2042}, {0x0f, 0x73, 0xce, 0xff}}},\n    {{{     0,    101,      0}, 0, {  8656,     66}, {0x0f, 0x73, 0xce, 0xff}}},\n    {{{     0,     81,    -46}, 0, {  9166,   2042}, {0xf1, 0x73, 0xce, 0xff}}},\n    {{{   -22,     81,    -39}, 0, { 10188,   2042}, {0xf1, 0x73, 0xce, 0xff}}},\n    {{{     0,    101,      0}, 0, {  9678,     66}, {0xf1, 0x73, 0xce, 0xff}}},\n};\n\n// 0x0500EB78\nstatic const Vtx haunted_cage_seg5_vertex_0500EB78[] = {\n    {{{   -22,     81,    -39}, 0, { 10188,   2042}, {0xdb, 0x73, 0xdb, 0xff}}},\n    {{{   -39,     81,    -22}, 0, { 11210,   2042}, {0xdb, 0x73, 0xdb, 0xff}}},\n    {{{     0,    101,      0}, 0, { 10698,     66}, {0xdb, 0x73, 0xdb, 0xff}}},\n    {{{   -39,     81,    -22}, 0, { 11210,   2042}, {0xce, 0x73, 0xf1, 0xff}}},\n    {{{   -46,     81,      0}, 0, { 12232,   2042}, {0xce, 0x73, 0xf1, 0xff}}},\n    {{{     0,    101,      0}, 0, { 11722,     66}, {0xce, 0x73, 0xf1, 0xff}}},\n    {{{   -46,     81,      0}, 0, {     0,   2042}, {0xce, 0x73, 0x0f, 0xff}}},\n    {{{   -39,     81,     23}, 0, {   990,   2042}, {0xce, 0x73, 0x0f, 0xff}}},\n    {{{     0,    101,      0}, 0, {   478,     66}, {0xce, 0x73, 0x0f, 0xff}}},\n    {{{   -39,     81,     23}, 0, {   990,   2042}, {0xdb, 0x73, 0x25, 0xff}}},\n    {{{   -22,     81,     40}, 0, {  2012,   2042}, {0xdb, 0x73, 0x25, 0xff}}},\n    {{{     0,    101,      0}, 0, {  1502,     66}, {0xdb, 0x73, 0x25, 0xff}}},\n    {{{   -22,     81,     40}, 0, {  2012,   2042}, {0xf1, 0x73, 0x31, 0xff}}},\n    {{{     0,     81,     47}, 0, {  3034,   2042}, {0xf1, 0x73, 0x31, 0xff}}},\n    {{{     0,    101,      0}, 0, {  2524,     66}, {0xf1, 0x73, 0x31, 0xff}}},\n};\n\n// 0x0500EC68\nstatic const Vtx haunted_cage_seg5_vertex_0500EC68[] = {\n    {{{     0,     81,     47}, 0, {  3034,   2042}, {0x0f, 0x74, 0x31, 0xff}}},\n    {{{    23,     81,     40}, 0, {  4056,   2042}, {0x0f, 0x74, 0x31, 0xff}}},\n    {{{     0,    101,      0}, 0, {  3546,     66}, {0x0f, 0x74, 0x31, 0xff}}},\n    {{{    23,     81,     40}, 0, {  4056,   2042}, {0x24, 0x73, 0x24, 0xff}}},\n    {{{    40,     81,     23}, 0, {  5078,   2042}, {0x24, 0x73, 0x24, 0xff}}},\n    {{{     0,    101,      0}, 0, {  4568,     66}, {0x24, 0x73, 0x24, 0xff}}},\n};\n\n// 0x0500ECC8\nstatic const Vtx haunted_cage_seg5_vertex_0500ECC8[] = {\n    {{{   -43,      0,    -25}, 0, { 11210,    479}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   -25,     10,    -43}, 0, { 10188,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   -25,      0,    -43}, 0, { 10188,    479}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{    44,      0,    -25}, 0, {  7122,    479}, {0x7a, 0x00, 0xde, 0xff}}},\n    {{{    51,     10,      0}, 0, {  6100,      0}, {0x7a, 0x00, 0xde, 0xff}}},\n    {{{    51,      0,      0}, 0, {  6100,    479}, {0x7a, 0x00, 0xde, 0xff}}},\n    {{{    26,      0,    -43}, 0, {  8144,    479}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{    44,     10,    -25}, 0, {  7122,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{    44,      0,    -25}, 0, {  7122,    479}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{    44,     10,    -25}, 0, {  7122,      0}, {0x7a, 0x00, 0xde, 0xff}}},\n    {{{    26,     10,    -43}, 0, {  8144,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{    51,      0,      0}, 0, {  6100,    479}, {0x7a, 0x00, 0x21, 0xff}}},\n    {{{    51,     10,      0}, 0, {  6100,      0}, {0x7a, 0x00, 0x21, 0xff}}},\n    {{{    44,     10,     26}, 0, {  5078,      0}, {0x7a, 0x00, 0x21, 0xff}}},\n    {{{    44,      0,     26}, 0, {  5078,    479}, {0x7a, 0x00, 0x21, 0xff}}},\n};\n\n// 0x0500EDB8\nstatic const Vtx haunted_cage_seg5_vertex_0500EDB8[] = {\n    {{{     0,      0,    -50}, 0, {  9166,    479}, {0x21, 0x00, 0x86, 0xff}}},\n    {{{    26,     10,    -43}, 0, {  8144,      0}, {0x21, 0x00, 0x86, 0xff}}},\n    {{{    26,      0,    -43}, 0, {  8144,    479}, {0x21, 0x00, 0x86, 0xff}}},\n    {{{     0,     10,    -50}, 0, {  9166,      0}, {0x21, 0x00, 0x86, 0xff}}},\n    {{{   -25,      0,    -43}, 0, { 10188,    479}, {0xde, 0x00, 0x86, 0xff}}},\n    {{{     0,     10,    -50}, 0, {  9166,      0}, {0xde, 0x00, 0x86, 0xff}}},\n    {{{     0,      0,    -50}, 0, {  9166,    479}, {0xde, 0x00, 0x86, 0xff}}},\n    {{{   -25,     10,    -43}, 0, { 10188,      0}, {0xde, 0x00, 0x86, 0xff}}},\n    {{{     0,      0,     51}, 0, {  3034,    479}, {0xde, 0x00, 0x7a, 0xff}}},\n    {{{     0,     10,     51}, 0, {  3034,      0}, {0xde, 0x00, 0x7a, 0xff}}},\n    {{{   -25,     10,     44}, 0, {  2012,      0}, {0xde, 0x00, 0x7a, 0xff}}},\n    {{{   -43,      0,    -25}, 0, { 11210,    479}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   -43,     10,    -25}, 0, { 11210,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   -25,     10,    -43}, 0, { 10188,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0500EE98\nstatic const Vtx haunted_cage_seg5_vertex_0500EE98[] = {\n    {{{   -50,      0,      0}, 0, { 12232,    479}, {0x86, 0x00, 0xde, 0xff}}},\n    {{{   -43,     10,    -25}, 0, { 11210,      0}, {0x86, 0x00, 0xde, 0xff}}},\n    {{{   -43,      0,    -25}, 0, { 11210,    479}, {0x86, 0x00, 0xde, 0xff}}},\n    {{{   -50,     10,      0}, 0, { 12232,      0}, {0x86, 0x00, 0xde, 0xff}}},\n    {{{   -43,      0,     26}, 0, {   990,    479}, {0x86, 0x00, 0x21, 0xff}}},\n    {{{   -43,     10,     26}, 0, {   990,      0}, {0x86, 0x00, 0x21, 0xff}}},\n    {{{   -50,     10,      0}, 0, {     0,      0}, {0x86, 0x00, 0x21, 0xff}}},\n    {{{   -50,      0,      0}, 0, {     0,    479}, {0x86, 0x00, 0x21, 0xff}}},\n    {{{   -25,      0,     44}, 0, {  2012,    479}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   -43,     10,     26}, 0, {   990,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   -43,      0,     26}, 0, {   990,    479}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   -25,     10,     44}, 0, {  2012,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{     0,      0,     51}, 0, {  3034,    479}, {0xde, 0x00, 0x7a, 0xff}}},\n    {{{   -25,     10,     44}, 0, {  2012,      0}, {0xde, 0x00, 0x7a, 0xff}}},\n    {{{   -25,      0,     44}, 0, {  2012,    479}, {0xde, 0x00, 0x7a, 0xff}}},\n};\n\n// 0x0500EF88\nstatic const Vtx haunted_cage_seg5_vertex_0500EF88[] = {\n    {{{    26,      0,     44}, 0, {  4056,    479}, {0x21, 0x00, 0x7a, 0xff}}},\n    {{{     0,     10,     51}, 0, {  3034,      0}, {0x21, 0x00, 0x7a, 0xff}}},\n    {{{     0,      0,     51}, 0, {  3034,    479}, {0x21, 0x00, 0x7a, 0xff}}},\n    {{{    26,     10,     44}, 0, {  4056,      0}, {0x21, 0x00, 0x7a, 0xff}}},\n    {{{    44,      0,     26}, 0, {  5078,    479}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{    26,     10,     44}, 0, {  4056,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{    26,      0,     44}, 0, {  4056,    479}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{    44,     10,     26}, 0, {  5078,      0}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x0500F008\nstatic const Vtx haunted_cage_seg5_vertex_0500F008[] = {\n    {{{    44,     64,    -25}, 0, {  7122,    990}, {0x74, 0x21, 0xdb, 0xff}}},\n    {{{    40,     81,    -22}, 0, {  7122,    -72}, {0x74, 0x21, 0xdb, 0xff}}},\n    {{{    47,     81,      0}, 0, {  6100,    -72}, {0x74, 0x21, 0xdb, 0xff}}},\n    {{{    26,     64,    -43}, 0, {  8144,    990}, {0x56, 0x23, 0xaa, 0xff}}},\n    {{{    40,     81,    -22}, 0, {  7122,    -72}, {0x56, 0x23, 0xaa, 0xff}}},\n    {{{    44,     64,    -25}, 0, {  7122,    990}, {0x56, 0x23, 0xaa, 0xff}}},\n    {{{    44,     64,    -25}, 0, {  7122,    990}, {0x77, 0x1c, 0xdf, 0xff}}},\n    {{{    47,     81,      0}, 0, {  6100,    -72}, {0x77, 0x1c, 0xdf, 0xff}}},\n    {{{    51,     64,      0}, 0, {  6100,    990}, {0x77, 0x1c, 0xdf, 0xff}}},\n    {{{    23,     81,    -39}, 0, {  8144,    -72}, {0x56, 0x23, 0xaa, 0xff}}},\n    {{{    51,     64,      0}, 0, {  6100,    990}, {0x76, 0x1b, 0x24, 0xff}}},\n    {{{    47,     81,      0}, 0, {  6100,    -72}, {0x76, 0x1b, 0x24, 0xff}}},\n    {{{    40,     81,     23}, 0, {  5078,    -72}, {0x76, 0x1b, 0x24, 0xff}}},\n    {{{    51,     64,      0}, 0, {  6100,    990}, {0x76, 0x21, 0x1f, 0xff}}},\n    {{{    40,     81,     23}, 0, {  5078,    -72}, {0x76, 0x21, 0x1f, 0xff}}},\n    {{{    44,     64,     26}, 0, {  5078,    990}, {0x76, 0x21, 0x1f, 0xff}}},\n};\n\n// 0x0500F108\nstatic const Vtx haunted_cage_seg5_vertex_0500F108[] = {\n    {{{     0,     81,    -46}, 0, {  9166,    -72}, {0x23, 0x21, 0x8b, 0xff}}},\n    {{{    23,     81,    -39}, 0, {  8144,    -72}, {0x23, 0x21, 0x8b, 0xff}}},\n    {{{    26,     64,    -43}, 0, {  8144,    990}, {0x23, 0x21, 0x8b, 0xff}}},\n    {{{     0,     64,    -50}, 0, {  9166,    990}, {0x20, 0x1c, 0x89, 0xff}}},\n    {{{     0,     81,    -46}, 0, {  9166,    -72}, {0x20, 0x1c, 0x89, 0xff}}},\n    {{{    26,     64,    -43}, 0, {  8144,    990}, {0x20, 0x1c, 0x89, 0xff}}},\n    {{{   -25,     64,    -43}, 0, { 10188,    990}, {0xdf, 0x1c, 0x89, 0xff}}},\n    {{{     0,     81,    -46}, 0, {  9166,    -72}, {0xdf, 0x1c, 0x89, 0xff}}},\n    {{{     0,     64,    -50}, 0, {  9166,    990}, {0xdf, 0x1c, 0x89, 0xff}}},\n    {{{   -25,     64,    -43}, 0, { 10188,    990}, {0xdb, 0x21, 0x8c, 0xff}}},\n    {{{   -22,     81,    -39}, 0, { 10188,    -72}, {0xdb, 0x21, 0x8c, 0xff}}},\n    {{{     0,     81,    -46}, 0, {  9166,    -72}, {0xdb, 0x21, 0x8c, 0xff}}},\n    {{{   -43,     64,    -25}, 0, { 11210,    990}, {0xaa, 0x23, 0xaa, 0xff}}},\n    {{{   -39,     81,    -22}, 0, { 11210,    -72}, {0xaa, 0x23, 0xaa, 0xff}}},\n    {{{   -25,     64,    -43}, 0, { 10188,    990}, {0xaa, 0x23, 0xaa, 0xff}}},\n    {{{   -22,     81,    -39}, 0, { 10188,    -72}, {0xaa, 0x23, 0xaa, 0xff}}},\n};\n\n// 0x0500F208\nstatic const Vtx haunted_cage_seg5_vertex_0500F208[] = {\n    {{{   -50,     64,      0}, 0, { 12232,    990}, {0x8b, 0x21, 0xdf, 0xff}}},\n    {{{   -39,     81,    -22}, 0, { 11210,    -72}, {0x8b, 0x21, 0xdf, 0xff}}},\n    {{{   -43,     64,    -25}, 0, { 11210,    990}, {0x8b, 0x21, 0xdf, 0xff}}},\n    {{{   -50,     64,      0}, 0, { 12232,    990}, {0x8a, 0x1b, 0xdb, 0xff}}},\n    {{{   -46,     81,      0}, 0, { 12232,    -72}, {0x8a, 0x1b, 0xdb, 0xff}}},\n    {{{   -39,     81,    -22}, 0, { 11210,    -72}, {0x8a, 0x1b, 0xdb, 0xff}}},\n    {{{   -25,     64,     44}, 0, {  2012,    990}, {0xaa, 0x23, 0x56, 0xff}}},\n    {{{   -39,     81,     23}, 0, {   990,    -72}, {0xaa, 0x23, 0x56, 0xff}}},\n    {{{   -43,     64,     26}, 0, {   990,    990}, {0xaa, 0x23, 0x56, 0xff}}},\n    {{{   -43,     64,     26}, 0, {   990,    990}, {0x8b, 0x21, 0x23, 0xff}}},\n    {{{   -39,     81,     23}, 0, {   990,    -72}, {0x8b, 0x21, 0x23, 0xff}}},\n    {{{   -46,     81,      0}, 0, {     0,    -72}, {0x8b, 0x21, 0x23, 0xff}}},\n    {{{   -43,     64,     26}, 0, {   990,    990}, {0x89, 0x1c, 0x20, 0xff}}},\n    {{{   -46,     81,      0}, 0, {     0,    -72}, {0x89, 0x1c, 0x20, 0xff}}},\n    {{{   -50,     64,      0}, 0, {     0,    990}, {0x89, 0x1c, 0x20, 0xff}}},\n    {{{   -22,     81,     40}, 0, {  2012,    -72}, {0xaa, 0x23, 0x56, 0xff}}},\n};\n\n// 0x0500F308\nstatic const Vtx haunted_cage_seg5_vertex_0500F308[] = {\n    {{{     0,     64,     51}, 0, {  3034,    990}, {0xdf, 0x1c, 0x77, 0xff}}},\n    {{{     0,     81,     47}, 0, {  3034,    -72}, {0xdf, 0x1c, 0x77, 0xff}}},\n    {{{   -25,     64,     44}, 0, {  2012,    990}, {0xdf, 0x1c, 0x77, 0xff}}},\n    {{{     0,     81,     47}, 0, {  3034,    -72}, {0xdb, 0x21, 0x74, 0xff}}},\n    {{{   -22,     81,     40}, 0, {  2012,    -72}, {0xdb, 0x21, 0x74, 0xff}}},\n    {{{   -25,     64,     44}, 0, {  2012,    990}, {0xdb, 0x21, 0x74, 0xff}}},\n    {{{    26,     64,     44}, 0, {  4056,    990}, {0x23, 0x21, 0x75, 0xff}}},\n    {{{    23,     81,     40}, 0, {  4056,    -72}, {0x23, 0x21, 0x75, 0xff}}},\n    {{{     0,     81,     47}, 0, {  3034,    -72}, {0x23, 0x21, 0x75, 0xff}}},\n    {{{    26,     64,     44}, 0, {  4056,    990}, {0x20, 0x1c, 0x77, 0xff}}},\n    {{{     0,     81,     47}, 0, {  3034,    -72}, {0x20, 0x1c, 0x77, 0xff}}},\n    {{{     0,     64,     51}, 0, {  3034,    990}, {0x20, 0x1c, 0x77, 0xff}}},\n    {{{    40,     81,     23}, 0, {  5078,    -72}, {0x56, 0x23, 0x56, 0xff}}},\n    {{{    23,     81,     40}, 0, {  4056,    -72}, {0x56, 0x23, 0x56, 0xff}}},\n    {{{    26,     64,     44}, 0, {  4056,    990}, {0x56, 0x23, 0x56, 0xff}}},\n    {{{    44,     64,     26}, 0, {  5078,    990}, {0x56, 0x23, 0x56, 0xff}}},\n};\n\n// 0x0500F408\nstatic const Vtx haunted_cage_seg5_vertex_0500F408[] = {\n    {{{   -43,      0,    -25}, 0, {  5204,  -2624}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,      0,     51}, 0, { -1052,  -8882}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    26,      0,     44}, 0, { -3342,  -7560}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -25,      0,     44}, 0, {  1592,  -8882}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -50,      0,      0}, 0, {  5204,  -5268}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -43,      0,     26}, 0, {  3882,  -7560}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    26,      0,    -43}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,      0,    -50}, 0, {  1592,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    44,      0,    -25}, 0, { -3342,   -332}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -25,      0,    -43}, 0, {  3882,   -332}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,      0,      0}, 0, { -4666,  -2624}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    44,      0,     26}, 0, { -4666,  -5268}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0500F4C8 - 0x0500F660\nconst Gfx haunted_cage_seg5_dl_0500F4C8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, haunted_cage_seg5_texture_0500D288),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&haunted_cage_seg5_lights_0500C258.l, 1),\n    gsSPLight(&haunted_cage_seg5_lights_0500C258.a, 2),\n    gsSPVertex(haunted_cage_seg5_vertex_0500EA88, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(haunted_cage_seg5_vertex_0500EB78, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(haunted_cage_seg5_vertex_0500EC68, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPLight(&haunted_cage_seg5_lights_0500C270.l, 1),\n    gsSPLight(&haunted_cage_seg5_lights_0500C270.a, 2),\n    gsSPVertex(haunted_cage_seg5_vertex_0500ECC8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  3,  9,  4, 0x0),\n    gsSP2Triangles( 6, 10,  7, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(haunted_cage_seg5_vertex_0500EDB8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(haunted_cage_seg5_vertex_0500EE98, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(haunted_cage_seg5_vertex_0500EF88, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500F660 - 0x0500F760\nconst Gfx haunted_cage_seg5_dl_0500F660[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, haunted_cage_seg5_texture_0500CA88),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(haunted_cage_seg5_vertex_0500F008, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  3,  9,  4, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(haunted_cage_seg5_vertex_0500F108, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(haunted_cage_seg5_vertex_0500F208, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0,  6, 15,  7, 0x0),\n    gsSPVertex(haunted_cage_seg5_vertex_0500F308, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 15, 12, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500F760 - 0x0500F7D8\nconst Gfx haunted_cage_seg5_dl_0500F760[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, haunted_cage_seg5_texture_0500C288),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(haunted_cage_seg5_vertex_0500F408, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  0,  5,  3, 0x0),\n    gsSP2Triangles( 0,  6,  7, 0x0,  0,  8,  6, 0x0),\n    gsSP2Triangles( 0,  7,  9, 0x0,  0, 10,  8, 0x0),\n    gsSP2Triangles( 0, 11, 10, 0x0,  0,  2, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500F7D8 - 0x0500F888\nconst Gfx haunted_cage_seg5_dl_0500F7D8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (16 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(haunted_cage_seg5_dl_0500F4C8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(haunted_cage_seg5_dl_0500F660),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(haunted_cage_seg5_dl_0500F760),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500F888\nstatic const Lights1 haunted_cage_seg5_lights_0500F888 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0500F8A0\nstatic const Vtx haunted_cage_seg5_vertex_0500F8A0[] = {\n    {{{   -19,      0,     10}, 0, {  3034,    479}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -19,     28,    -19}, 0, {     0,  -2350}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -19,      0,    -19}, 0, {     0,    479}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    20,      0,     10}, 0, {  4056,    479}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -19,     28,     10}, 0, {     0,  -2350}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -19,      0,     10}, 0, {     0,    479}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    20,     28,     10}, 0, {  4056,  -2350}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -19,      0,    -19}, 0, {  4056,    479}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    20,     28,    -19}, 0, {     0,  -2350}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    20,      0,    -19}, 0, {     0,    479}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -19,     28,    -19}, 0, {  4056,  -2350}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    20,     28,    -19}, 0, {  4056,  -2587}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -19,     28,    -19}, 0, {     0,  -2587}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -19,     28,     10}, 0, {     0,    479}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    20,     28,     10}, 0, {  4056,    479}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0500F990\nstatic const Vtx haunted_cage_seg5_vertex_0500F990[] = {\n    {{{   -30,      0,     39}, 0, {   990,    479}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -30,     10,     39}, 0, {   990,   -543}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -30,     10,     29}, 0, {     0,   -543}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -19,      0,     10}, 0, {  3034,    479}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -19,     28,     10}, 0, {  3034,  -2350}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -19,     28,    -19}, 0, {     0,  -2350}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    20,      0,    -19}, 0, {  3034,    479}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    20,     28,     10}, 0, {     0,  -2350}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    20,      0,     10}, 0, {     0,    479}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    20,     28,    -19}, 0, {  3034,  -2350}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -19,      0,     39}, 0, {   990,    479}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -30,     10,     39}, 0, {     0,   -543}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -30,      0,     39}, 0, {     0,    479}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -19,     10,     39}, 0, {   990,   -543}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -30,      0,     29}, 0, {     0,    479}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0500FA80\nstatic const Vtx haunted_cage_seg5_vertex_0500FA80[] = {\n    {{{   -30,      0,     29}, 0, {   990,    479}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -30,     10,     29}, 0, {   990,   -543}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -19,     10,     29}, 0, {     0,   -543}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -19,      0,     29}, 0, {     0,    479}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -19,      0,     29}, 0, {   990,    479}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -19,     10,     39}, 0, {    38,   -616}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -19,      0,     39}, 0, {     0,    408}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -19,     10,     29}, 0, {  1062,   -545}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -19,     10,     39}, 0, {   990,    479}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -30,     10,     29}, 0, {     0,   -543}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -30,     10,     39}, 0, {     0,    479}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -19,     10,     29}, 0, {   990,   -543}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0500FB40 - 0x0500FC28\nconst Gfx haunted_cage_seg5_dl_0500FB40[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, haunted_cage_seg5_texture_0500D688),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&haunted_cage_seg5_lights_0500F888.l, 1),\n    gsSPLight(&haunted_cage_seg5_lights_0500F888.a, 2),\n    gsSPVertex(haunted_cage_seg5_vertex_0500F8A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(haunted_cage_seg5_vertex_0500F990, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(haunted_cage_seg5_vertex_0500FA80, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500FC28 - 0x0500FC98\nconst Gfx haunted_cage_seg5_dl_0500FC28[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (16 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(haunted_cage_seg5_dl_0500FB40),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500FC98\nstatic const Lights1 haunted_cage_seg5_lights_0500FC98 = gdSPDefLights1(\n    0x2c, 0x2c, 0x2c,\n    0xb2, 0xb2, 0xb2, 0x28, 0x28, 0x28\n);\n\n// 0x0500FCB0\nstatic const Vtx haunted_cage_seg5_vertex_0500FCB0[] = {\n    {{{   -43,     10,     26}, 0, {  8484,    990}, {0x86, 0x00, 0x21, 0xff}}},\n    {{{   -43,     64,     26}, 0, {  8484,   6370}, {0x86, 0x00, 0x21, 0xff}}},\n    {{{   -50,     64,      0}, 0, { 10188,   6370}, {0x86, 0x00, 0x21, 0xff}}},\n    {{{    51,     10,      0}, 0, {     0,    990}, {0x7a, 0x00, 0x21, 0xff}}},\n    {{{    51,     64,      0}, 0, {     0,   6370}, {0x7a, 0x00, 0x21, 0xff}}},\n    {{{    44,     64,     26}, 0, {  1672,   6370}, {0x7a, 0x00, 0x21, 0xff}}},\n    {{{    44,     10,     26}, 0, {  1672,    990}, {0x7a, 0x00, 0x21, 0xff}}},\n    {{{    44,     10,     26}, 0, {  1672,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{    44,     64,     26}, 0, {  1672,   6370}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{    26,     64,     44}, 0, {  3374,   6370}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{    26,     10,     44}, 0, {  3374,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{    26,     10,     44}, 0, {  3374,    990}, {0x21, 0x00, 0x7a, 0xff}}},\n    {{{    26,     64,     44}, 0, {  3374,   6370}, {0x21, 0x00, 0x7a, 0xff}}},\n    {{{     0,     64,     51}, 0, {  5078,   6370}, {0x21, 0x00, 0x7a, 0xff}}},\n    {{{     0,     10,     51}, 0, {  5078,    990}, {0x21, 0x00, 0x7a, 0xff}}},\n};\n\n// 0x0500FDA0\nstatic const Vtx haunted_cage_seg5_vertex_0500FDA0[] = {\n    {{{     0,     10,     51}, 0, {  5078,    990}, {0xde, 0x00, 0x7a, 0xff}}},\n    {{{     0,     64,     51}, 0, {  5078,   6370}, {0xde, 0x00, 0x7a, 0xff}}},\n    {{{   -25,     64,     44}, 0, {  6782,   6370}, {0xde, 0x00, 0x7a, 0xff}}},\n    {{{   -25,     10,     44}, 0, {  6782,    990}, {0xde, 0x00, 0x7a, 0xff}}},\n    {{{   -25,     10,     44}, 0, {  6782,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   -25,     64,     44}, 0, {  6782,   6370}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   -43,     64,     26}, 0, {  8484,   6370}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   -43,     10,     26}, 0, {  8484,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{    26,     10,    -43}, 0, { 17002,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{    44,     64,    -25}, 0, { 18704,   6370}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{    44,     10,    -25}, 0, { 18704,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   -43,     10,     26}, 0, {  8484,    990}, {0x86, 0x00, 0x21, 0xff}}},\n    {{{   -50,     64,      0}, 0, { 10188,   6370}, {0x86, 0x00, 0x21, 0xff}}},\n    {{{   -50,     10,      0}, 0, { 10188,    990}, {0x86, 0x00, 0x21, 0xff}}},\n};\n\n// 0x0500FE80\nstatic const Vtx haunted_cage_seg5_vertex_0500FE80[] = {\n    {{{   -50,     10,      0}, 0, { 10188,    990}, {0x86, 0x00, 0xde, 0xff}}},\n    {{{   -50,     64,      0}, 0, { 10188,   6370}, {0x86, 0x00, 0xde, 0xff}}},\n    {{{   -43,     64,    -25}, 0, { 11892,   6370}, {0x86, 0x00, 0xde, 0xff}}},\n    {{{   -43,     10,    -25}, 0, { 11892,    990}, {0x86, 0x00, 0xde, 0xff}}},\n    {{{   -43,     10,    -25}, 0, { 11892,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   -43,     64,    -25}, 0, { 11892,   6370}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   -25,     64,    -43}, 0, { 13594,   6370}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   -25,     10,    -43}, 0, { 13594,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   -25,     10,    -43}, 0, { 13594,    990}, {0xde, 0x00, 0x86, 0xff}}},\n    {{{   -25,     64,    -43}, 0, { 13594,   6370}, {0xde, 0x00, 0x86, 0xff}}},\n    {{{     0,     64,    -50}, 0, { 15298,   6370}, {0xde, 0x00, 0x86, 0xff}}},\n    {{{     0,     10,    -50}, 0, { 15298,    990}, {0xde, 0x00, 0x86, 0xff}}},\n    {{{     0,     10,    -50}, 0, { 15298,    990}, {0x21, 0x00, 0x86, 0xff}}},\n    {{{     0,     64,    -50}, 0, { 15298,   6370}, {0x21, 0x00, 0x86, 0xff}}},\n    {{{    26,     64,    -43}, 0, { 17002,   6370}, {0x21, 0x00, 0x86, 0xff}}},\n    {{{    26,     10,    -43}, 0, { 17002,    990}, {0x21, 0x00, 0x86, 0xff}}},\n};\n\n// 0x0500FF80\nstatic const Vtx haunted_cage_seg5_vertex_0500FF80[] = {\n    {{{    26,     10,    -43}, 0, { 17002,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{    26,     64,    -43}, 0, { 17002,   6370}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{    44,     64,    -25}, 0, { 18704,   6370}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{    44,     10,    -25}, 0, { 18704,    990}, {0x7a, 0x00, 0xde, 0xff}}},\n    {{{    44,     64,    -25}, 0, { 18704,   6370}, {0x7a, 0x00, 0xde, 0xff}}},\n    {{{    51,     64,      0}, 0, { 20408,   6370}, {0x7a, 0x00, 0xde, 0xff}}},\n    {{{    51,     10,      0}, 0, { 20408,    990}, {0x7a, 0x00, 0xde, 0xff}}},\n};\n\n// 0x0500FFF0 - 0x05010100\nconst Gfx haunted_cage_seg5_dl_0500FFF0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, haunted_cage_seg5_texture_0500DA88),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&haunted_cage_seg5_lights_0500FC98.l, 1),\n    gsSPLight(&haunted_cage_seg5_lights_0500FC98.a, 2),\n    gsSPVertex(haunted_cage_seg5_vertex_0500FCB0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(haunted_cage_seg5_vertex_0500FDA0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(haunted_cage_seg5_vertex_0500FE80, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(haunted_cage_seg5_vertex_0500FF80, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 3,  5,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05010100 - 0x05010170\nconst Gfx haunted_cage_seg5_dl_05010100[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(haunted_cage_seg5_dl_0500FFF0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/heart/geo.inc.c",
    "content": "// 0x0F0004FC\nconst GeoLayout heart_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x64, 100),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, heart_seg8_dl_0800DFE0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/heart/model.inc.c",
    "content": "// Heart\n\n// 0x0800D7A0\nstatic const Vtx heart_seg8_vertex_0800D7A0[] = {\n    {{{   -50,    -50,      0}, 0, {     0,    992}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{    50,    -50,      0}, 0, {   992,    992}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{    50,     50,      0}, 0, {   992,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{   -50,     50,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n};\n\n// 0x0800D7E0\nALIGNED8 static const Texture heart_seg8_texture_0800D7E0[] = {\n#include \"actors/heart/spinning_heart.rgba16.inc.c\"\n};\n\n// 0x0800DFE0 - 0x0800E078\nconst Gfx heart_seg8_dl_0800DFE0[] = {\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsDPLoadTextureBlock(heart_seg8_texture_0800D7E0, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 5, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsSPVertex(heart_seg8_vertex_0800D7A0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/heave_ho/anims/anim_05014F28.inc.c",
    "content": "// 0x05014DD0\nstatic const s16 heave_ho_seg5_animvalue_05014DD0[] = {\n    0x0000, 0x0030, 0xFF92, 0xC001, 0x3FFF, 0xC001, 0x0000, 0xF5C3,\n    0xEB86, 0xE148, 0xD70B, 0xCCCE, 0xC290, 0xB853, 0xAE16, 0xA3D8,\n    0x999B, 0x8F5E, 0x8520, 0x7AE0, 0x70A2, 0x6665, 0x5C28, 0x51EA,\n    0x47AD, 0x3D70, 0x3332, 0x28F5, 0x1EB8, 0x147A, 0x0A3D, 0x2170,\n    0x8001, 0x8001, 0x0000, 0xF5C3, 0xEB86, 0xE148, 0xD70B, 0xCCCE,\n    0xC290, 0xB853, 0xAE16, 0xA3D8, 0x999B, 0x8F5E, 0x8520, 0x7AE0,\n    0x70A2, 0x6665, 0x5C28, 0x51EA, 0x47AD, 0x3D70, 0x3332, 0x28F5,\n    0x1EB8, 0x147A, 0x0A3D, 0x2170, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x3FFF, 0xC001, 0x3FFF, 0x8001, 0x8001, 0x8001,\n};\n\n// 0x05014E5C\nstatic const u16 heave_ho_seg5_animindex_05014E5C[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0003, 0x0001, 0x0004, 0x0001, 0x0005,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0045,\n    0x0001, 0x0043, 0x0001, 0x0044, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0019, 0x0022, 0x0001, 0x0000, 0x0001, 0x003B,\n    0x0019, 0x0006, 0x0001, 0x0000, 0x0001, 0x001F,\n    0x0001, 0x0040, 0x0001, 0x0041, 0x0001, 0x0042,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x003E, 0x0001, 0x003F, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x003D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x003C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0020,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0021,\n};\n\n// 0x05014F28\nstatic const struct Animation heave_ho_seg5_anim_05014F28 = {\n    0,\n    0,\n    0,\n    0,\n    0x18,\n    ANIMINDEX_NUMPARTS(heave_ho_seg5_animindex_05014E5C),\n    heave_ho_seg5_animvalue_05014DD0,\n    heave_ho_seg5_animindex_05014E5C,\n    0,\n};\n"
  },
  {
    "path": "actors/heave_ho/anims/anim_05015118.inc.c",
    "content": "// 0x05014F40\nstatic const s16 heave_ho_seg5_animvalue_05014F40[] = {\n    0x0000, 0x0030, 0xFF92, 0xC001, 0x3FFF, 0xC001, 0x0000, 0x06BC,\n    0x0D79, 0x1435, 0x1AF2, 0x21AE, 0x286B, 0x2F28, 0x35E4, 0x3CA1,\n    0x435D, 0x4A1A, 0x50D6, 0x5793, 0x5E50, 0x650C, 0x6BC9, 0x7285,\n    0x7942, 0x8001, 0x86BE, 0x8D7B, 0x9437, 0x9AF4, 0xA1B0, 0xA86D,\n    0xAF2A, 0xB5E6, 0xBCA3, 0xC35F, 0xCA1C, 0xD0D8, 0xD795, 0xDE52,\n    0xE50E, 0xEBCB, 0xF287, 0xF944, 0x2170, 0x8001, 0x8001, 0x0000,\n    0x06BC, 0x0D79, 0x1435, 0x1AF2, 0x21AE, 0x286B, 0x2F28, 0x35E4,\n    0x3CA1, 0x435D, 0x4A1A, 0x50D6, 0x5793, 0x5E50, 0x650C, 0x6BC9,\n    0x7285, 0x7942, 0x8001, 0x86BE, 0x8D7B, 0x9437, 0x9AF4, 0xA1B0,\n    0xA86D, 0xAF2A, 0xB5E6, 0xBCA3, 0xC35F, 0xCA1C, 0xD0D8, 0xD795,\n    0xDE52, 0xE50E, 0xEBCB, 0xF287, 0xF944, 0x2170, 0x8001, 0x8001,\n    0x0000, 0x0069, 0x0152, 0x023B, 0x02A4, 0x025E, 0x01B6, 0x00EE,\n    0x0046, 0x0000, 0x0046, 0x00EE, 0x01B6, 0x025E, 0x02A4, 0x025F,\n    0x01B9, 0x00F3, 0x004A, 0x0000, 0x0066, 0x014F, 0x0239, 0x02A4,\n    0x025E, 0x01B6, 0x00EE, 0x0046, 0x0000, 0x0046, 0x00EE, 0x01B6,\n    0x025E, 0x02A4, 0x025F, 0x01B9, 0x00F3, 0x004A, 0x8001, 0x8001,\n    0x3FFF, 0xC001, 0x3FFF, 0x8001, 0x8001, 0x8001,\n};\n\n// 0x0501504C\nstatic const u16 heave_ho_seg5_animindex_0501504C[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0003, 0x0001, 0x0004, 0x0001, 0x0005,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0085,\n    0x0001, 0x0083, 0x0001, 0x0084, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0026, 0x0058,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0026, 0x002F, 0x0001, 0x0000, 0x0001, 0x0055,\n    0x0026, 0x0006, 0x0001, 0x0000, 0x0001, 0x002C,\n    0x0001, 0x0080, 0x0001, 0x0081, 0x0001, 0x0082,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x007E, 0x0001, 0x007F, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0057,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0056,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x002D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x002E,\n};\n\n// 0x05015118\nstatic const struct Animation heave_ho_seg5_anim_05015118 = {\n    0,\n    0,\n    0,\n    0,\n    0x26,\n    ANIMINDEX_NUMPARTS(heave_ho_seg5_animindex_0501504C),\n    heave_ho_seg5_animvalue_05014F40,\n    heave_ho_seg5_animindex_0501504C,\n    0,\n};\n"
  },
  {
    "path": "actors/heave_ho/anims/anim_05015334.inc.c",
    "content": "// 0x05015130\nstatic const s16 heave_ho_seg5_animvalue_05015130[] = {\n    0x0000, 0x0030, 0xFF92, 0xC001, 0x3FFF, 0xC001, 0x672F, 0xB545,\n    0xEEB0, 0x17E3, 0x3554, 0x4D42, 0x6308, 0x76C7, 0x889F, 0x98A9,\n    0xA706, 0xB3D6, 0xBF37, 0xC948, 0xD227, 0xD9F3, 0xE0CA, 0xE6CC,\n    0xEC16, 0xF0C8, 0xF501, 0xF8DE, 0xFC7E, 0x2170, 0x59B4, 0x30F4,\n    0x2BC7, 0x2990, 0x29C2, 0x2BD0, 0x2F2C, 0x3348, 0x3798, 0x3B8C,\n    0x3FA4, 0x449E, 0x4A48, 0x5073, 0x56ED, 0x5D87, 0x640F, 0x6A55,\n    0x702A, 0x755B, 0x79BA, 0x7D15, 0x7F3C, 0x8001, 0x672F, 0xB545,\n    0xEEB0, 0x17E3, 0x3554, 0x4D42, 0x6308, 0x76C7, 0x889F, 0x98A9,\n    0xA706, 0xB3D6, 0xBF37, 0xC948, 0xD227, 0xD9F3, 0xE0CA, 0xE6CC,\n    0xEC16, 0xF0C8, 0xF501, 0xF8DE, 0xFC7E, 0x2170, 0x59B4, 0x30F4,\n    0x2BC7, 0x2990, 0x29C2, 0x2BD0, 0x2F2C, 0x3348, 0x3798, 0x3B8C,\n    0x3FA4, 0x449E, 0x4A48, 0x5073, 0x56ED, 0x5D87, 0x640F, 0x6A55,\n    0x702A, 0x755B, 0x79BA, 0x7D15, 0x7F3C, 0x59B4, 0x30F4, 0x2BC7,\n    0x2990, 0x29C2, 0x2BD0, 0x2F2C, 0x3348, 0x3798, 0x3B8C, 0x3FA4,\n    0x449E, 0x4A48, 0x5073, 0x56ED, 0x5D87, 0x640F, 0x6A55, 0x702A,\n    0x755B, 0x79BA, 0x7D15, 0x7F3C, 0xFEB0, 0xFD12, 0xFBB2, 0xFB1D,\n    0xFB31, 0xFB6B, 0xFBC3, 0xFC33, 0xFCB4, 0xFD3F, 0xFDCE, 0xFE59,\n    0xFEDA, 0xFF4B, 0xFFA3, 0xFFDD, 0xFFF2, 0xFFF2, 0xFFF2, 0xFFF2,\n    0xFFF2, 0xFFF2, 0xFFF2, 0x8001, 0x8001, 0x3FFF, 0xC001, 0x3FFF,\n    0x8001, 0x8001, 0x8001, 0x0000,\n};\n\n// 0x05015268\nstatic const u16 heave_ho_seg5_animindex_05015268[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0003, 0x0001, 0x0004, 0x0001, 0x0005,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x009A,\n    0x0001, 0x0098, 0x0001, 0x0099, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0017, 0x007C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0017, 0x0036, 0x0001, 0x0000, 0x0001, 0x004D,\n    0x0017, 0x0006, 0x0001, 0x0000, 0x0001, 0x001D,\n    0x0001, 0x0095, 0x0001, 0x0096, 0x0001, 0x0097,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0093, 0x0001, 0x0094, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0017, 0x0065,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0017, 0x004E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0017, 0x001E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0035,\n};\n\n// 0x05015334\nstatic const struct Animation heave_ho_seg5_anim_05015334 = {\n    0,\n    0,\n    0,\n    0,\n    0x17,\n    ANIMINDEX_NUMPARTS(heave_ho_seg5_animindex_05015268),\n    heave_ho_seg5_animvalue_05015130,\n    heave_ho_seg5_animindex_05015268,\n    0,\n};\n"
  },
  {
    "path": "actors/heave_ho/anims/data.inc.c",
    "content": "#include \"anim_05014F28.inc.c\"\n#include \"anim_05015118.inc.c\"\n#include \"anim_05015334.inc.c\"\n"
  },
  {
    "path": "actors/heave_ho/anims/table.inc.c",
    "content": "// 0x0501534C\nconst struct Animation *const heave_ho_seg5_anims_0501534C[] = {\n    &heave_ho_seg5_anim_05015118,\n    &heave_ho_seg5_anim_05015334,\n    &heave_ho_seg5_anim_05014F28,\n};\n"
  },
  {
    "path": "actors/heave_ho/geo.inc.c",
    "content": "// 0x0C00028C\nconst GeoLayout heave_ho_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xC8, 100),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, heave_ho_seg5_dl_05014D80),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 140, -11, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, heave_ho_seg5_dl_05011EC0),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 150, 50, 0, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, heave_ho_seg5_dl_05014560),\n                                GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, heave_ho_seg5_dl_050127F8),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 135, 0, -84, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_BILLBOARD(),\n                            GEO_OPEN_NODE(),\n                                GEO_DISPLAY_LIST(LAYER_ALPHA, heave_ho_seg5_dl_050126E8),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 168, 0, 0, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_BILLBOARD(),\n                                GEO_OPEN_NODE(),\n                                    GEO_DISPLAY_LIST(LAYER_ALPHA, heave_ho_seg5_dl_050126E8),\n                                GEO_CLOSE_NODE(),\n                            GEO_CLOSE_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 168, 0, 0, NULL),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 149, -28, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, heave_ho_seg5_dl_050125F8),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, heave_ho_seg5_dl_05012148),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, heave_ho_seg5_dl_050123A8),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_BILLBOARD(),\n                    GEO_OPEN_NODE(),\n                        GEO_DISPLAY_LIST(LAYER_ALPHA, heave_ho_seg5_dl_050126E8),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/heave_ho/model.inc.c",
    "content": "// Heave Ho\n\n// Unreferenced light group\nstatic const Lights1 heave_ho_lights_unused1 = gdSPDefLights1(\n    0x2c, 0x2c, 0x2c,\n    0xb2, 0xb2, 0xb2, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nstatic const Lights1 heave_ho_lights_unused2 = gdSPDefLights1(\n    0x3f, 0x38, 0x00,\n    0xff, 0xe3, 0x00, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nstatic const Lights1 heave_ho_lights_unused3 = gdSPDefLights1(\n    0x3f, 0x00, 0x00,\n    0xff, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x0500E968\nstatic const Lights1 heave_ho_seg5_lights_0500E968 = gdSPDefLights1(\n    0x14, 0x14, 0x15,\n    0x50, 0x50, 0x54, 0x28, 0x28, 0x28\n);\n\n// 0x0500E980\nstatic const Lights1 heave_ho_seg5_lights_0500E980 = gdSPDefLights1(\n    0x73, 0x3f, 0x32,\n    0xff, 0xe0, 0x85, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nstatic const Lights1 heave_ho_lights_unused4 = gdSPDefLights1(\n    0x3b, 0x38, 0x21,\n    0xec, 0xe3, 0x84, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nstatic const Lights1 heave_ho_lights_unused5 = gdSPDefLights1(\n    0x32, 0x32, 0x32,\n    0xc8, 0xc8, 0xc8, 0x28, 0x28, 0x28\n);\n\n// 0x0500E9C8\nALIGNED8 static const Texture heave_ho_seg5_texture_0500E9C8[] = {\n#include \"actors/heave_ho/heave-ho_face.rgba16.inc.c\"\n};\n\n// 0x0500F1C8\nALIGNED8 static const Texture heave_ho_seg5_texture_0500F1C8[] = {\n#include \"actors/heave_ho/heave-ho_platform.rgba16.inc.c\"\n};\n\n// 0x0500F9C8\nALIGNED8 static const Texture heave_ho_seg5_texture_0500F9C8[] = {\n#include \"actors/heave_ho/heave-ho_logo.rgba16.inc.c\"\n};\n\n// 0x050109C8\nALIGNED8 static const Texture heave_ho_seg5_texture_050109C8[] = {\n#include \"actors/heave_ho/heave-ho_arm_ornament.rgba16.inc.c\"\n};\n\n// 0x050111C8\nALIGNED8 static const Texture heave_ho_seg5_texture_050111C8[] = {\n#include \"actors/heave_ho/heave-ho_roller.rgba16.inc.c\"\n};\n\n// 0x050113C8\nALIGNED8 static const Texture heave_ho_seg5_texture_050113C8[] = {\n#include \"actors/heave_ho/heave-ho_turnkey.rgba16.inc.c\"\n};\n\n// 0x05011BC8\nstatic const Lights1 heave_ho_seg5_lights_05011BC8 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05011BE0\nstatic const Lights1 heave_ho_seg5_lights_05011BE0 = gdSPDefLights1(\n    0x40, 0x00, 0x0d,\n    0x81, 0x01, 0x1a, 0x28, 0x28, 0x28\n);\n\n// 0x05011BF8\nstatic const Vtx heave_ho_seg5_vertex_05011BF8[] = {\n    {{{   -23,    108,    -47}, 0, {    96,   -150}, {0xd4, 0x70, 0xda, 0xff}}},\n    {{{  -107,    -11,    -95}, 0, {  -286,   1018}, {0xa6, 0xbd, 0xc6, 0xff}}},\n    {{{  -107,    -11,     96}, 0, {  1246,   1018}, {0x90, 0x28, 0x2b, 0xff}}},\n    {{{   -23,    108,     48}, 0, {   862,   -150}, {0xd9, 0x6a, 0x39, 0xff}}},\n};\n\n// 0x05011C38\nstatic const Vtx heave_ho_seg5_vertex_05011C38[] = {\n    {{{   -23,    108,    -47}, 0, {   862,   -822}, {0xd4, 0x70, 0xda, 0xff}}},\n    {{{   -23,    108,     48}, 0, {    96,   -822}, {0xd9, 0x6a, 0x39, 0xff}}},\n    {{{   132,     86,     72}, 0, {   -94,    236}, {0x30, 0x6e, 0x27, 0xff}}},\n    {{{   132,     86,    -71}, 0, {  1054,    236}, {0x2b, 0x67, 0xc4, 0xff}}},\n    {{{   233,     -9,     72}, 0, {   -94,   1170}, {0x51, 0xba, 0x43, 0xff}}},\n    {{{   233,     -9,    -71}, 0, {  1054,   1170}, {0x68, 0x31, 0xcc, 0xff}}},\n};\n\n// 0x05011C98\nstatic const Vtx heave_ho_seg5_vertex_05011C98[] = {\n    {{{   132,     86,    -71}, 0, {  1736,   -108}, {0x2b, 0x67, 0xc4, 0xff}}},\n    {{{    24,    -11,   -155}, 0, {    36,   1382}, {0x00, 0xbf, 0x93, 0xff}}},\n    {{{   -23,    108,    -47}, 0, {  -452,   -292}, {0xd4, 0x70, 0xda, 0xff}}},\n    {{{   233,     -9,    -71}, 0, {  3024,   1182}, {0x68, 0x31, 0xcc, 0xff}}},\n    {{{  -107,    -11,    -95}, 0, { -1844,   1486}, {0xa6, 0xbd, 0xc6, 0xff}}},\n    {{{   -23,    108,     48}, 0, {  -452,   -292}, {0xd9, 0x6a, 0x39, 0xff}}},\n    {{{    24,    -11,    156}, 0, {    36,   1382}, {0x00, 0xbf, 0x6d, 0xff}}},\n    {{{   132,     86,     72}, 0, {  1736,   -108}, {0x30, 0x6e, 0x27, 0xff}}},\n    {{{  -107,    -11,     96}, 0, { -1844,   1486}, {0x90, 0x28, 0x2b, 0xff}}},\n    {{{   233,     -9,     72}, 0, {  3024,   1182}, {0x51, 0xba, 0x43, 0xff}}},\n};\n\n// 0x05011D38\nstatic const Vtx heave_ho_seg5_vertex_05011D38[] = {\n    {{{  -107,    -11,    -95}, 0, {     0,      0}, {0xa6, 0xbd, 0xc6, 0xff}}},\n    {{{    24,    -11,    156}, 0, {     0,      0}, {0x00, 0xbf, 0x6d, 0xff}}},\n    {{{  -107,    -11,     96}, 0, {     0,      0}, {0x90, 0x28, 0x2b, 0xff}}},\n    {{{    24,    -11,   -155}, 0, {     0,      0}, {0x00, 0xbf, 0x93, 0xff}}},\n    {{{   233,     -9,    -71}, 0, {     0,      0}, {0x68, 0x31, 0xcc, 0xff}}},\n    {{{   233,     -9,     72}, 0, {     0,      0}, {0x51, 0xba, 0x43, 0xff}}},\n};\n\n// 0x05011D98 - 0x05011DE0\nconst Gfx heave_ho_seg5_dl_05011D98[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, heave_ho_seg5_texture_0500E9C8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&heave_ho_seg5_lights_05011BC8.l, 1),\n    gsSPLight(&heave_ho_seg5_lights_05011BC8.a, 2),\n    gsSPVertex(heave_ho_seg5_vertex_05011BF8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05011DE0 - 0x05011E28\nconst Gfx heave_ho_seg5_dl_05011DE0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, heave_ho_seg5_texture_050109C8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(heave_ho_seg5_vertex_05011C38, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  2,  5,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05011E28 - 0x05011E80\nconst Gfx heave_ho_seg5_dl_05011E28[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, heave_ho_seg5_texture_0500F9C8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(heave_ho_seg5_vertex_05011C98, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  6,  5, 0x0,  6,  9,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05011E80 - 0x05011EC0\nconst Gfx heave_ho_seg5_dl_05011E80[] = {\n    gsSPLight(&heave_ho_seg5_lights_05011BE0.l, 1),\n    gsSPLight(&heave_ho_seg5_lights_05011BE0.a, 2),\n    gsSPVertex(heave_ho_seg5_vertex_05011D38, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  3,  5,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05011EC0 - 0x05011F50\nconst Gfx heave_ho_seg5_dl_05011EC0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(heave_ho_seg5_dl_05011D98),\n    gsSPDisplayList(heave_ho_seg5_dl_05011DE0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(heave_ho_seg5_dl_05011E28),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(heave_ho_seg5_dl_05011E80),\n    gsSPEndDisplayList(),\n};\n\n// 0x05011F50\nstatic const Lights1 heave_ho_seg5_lights_05011F50 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05011F68\nstatic const Lights1 heave_ho_seg5_lights_05011F68 = gdSPDefLights1(\n    0x4c, 0x00, 0x16,\n    0x99, 0x00, 0x2d, 0x28, 0x28, 0x28\n);\n\n// 0x05011F80\nstatic const Vtx heave_ho_seg5_vertex_05011F80[] = {\n    {{{    -1,     -2,    245}, 0, {  -604,    434}, {0xd6, 0xf8, 0x77, 0xff}}},\n    {{{   -37,     20,    206}, 0, {   990,   1372}, {0xb4, 0x5f, 0xdf, 0xff}}},\n    {{{   -28,    -33,    206}, 0, {   990,   -368}, {0xdb, 0x8c, 0x21, 0xff}}},\n    {{{   -37,     20,    206}, 0, {   198,    552}, {0xb4, 0x5f, 0xdf, 0xff}}},\n    {{{   218,     73,    204}, 0, {   774,    552}, {0x30, 0x75, 0xfc, 0xff}}},\n    {{{   228,      3,    206}, 0, {   764,    338}, {0x6f, 0xc5, 0xf2, 0xff}}},\n    {{{   -28,    -33,    206}, 0, {   194,    386}, {0xdb, 0x8c, 0x21, 0xff}}},\n    {{{   166,     53,    250}, 0, {  1112,    914}, {0x19, 0x3d, 0x6c, 0xff}}},\n    {{{   174,      9,    250}, 0, {  1060,     34}, {0x1e, 0xc0, 0x69, 0xff}}},\n    {{{   228,      3,    206}, 0, {   -98,   -190}, {0x6f, 0xc5, 0xf2, 0xff}}},\n    {{{   218,     73,    204}, 0, {   -98,   1190}, {0x30, 0x75, 0xfc, 0xff}}},\n};\n\n// 0x05012030\nstatic const Vtx heave_ho_seg5_vertex_05012030[] = {\n    {{{   166,     53,    250}, 0, {     0,      0}, {0x19, 0x3d, 0x6c, 0xff}}},\n    {{{   218,     73,    204}, 0, {     0,      0}, {0x30, 0x75, 0xfc, 0xff}}},\n    {{{   -37,     20,    206}, 0, {     0,      0}, {0xb4, 0x5f, 0xdf, 0xff}}},\n    {{{    -1,     -2,    245}, 0, {     0,      0}, {0xd6, 0xf8, 0x77, 0xff}}},\n    {{{   174,      9,    250}, 0, {     0,      0}, {0x1e, 0xc0, 0x69, 0xff}}},\n    {{{   -28,    -33,    206}, 0, {     0,      0}, {0xdb, 0x8c, 0x21, 0xff}}},\n    {{{   228,      3,    206}, 0, {     0,      0}, {0x6f, 0xc5, 0xf2, 0xff}}},\n};\n\n// 0x050120A0 - 0x05012100\nconst Gfx heave_ho_seg5_dl_050120A0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, heave_ho_seg5_texture_050109C8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&heave_ho_seg5_lights_05011F50.l, 1),\n    gsSPLight(&heave_ho_seg5_lights_05011F50.a, 2),\n    gsSPVertex(heave_ho_seg5_vertex_05011F80, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle( 9, 10,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05012100 - 0x05012148\nconst Gfx heave_ho_seg5_dl_05012100[] = {\n    gsSPLight(&heave_ho_seg5_lights_05011F68.l, 1),\n    gsSPLight(&heave_ho_seg5_lights_05011F68.a, 2),\n    gsSPVertex(heave_ho_seg5_vertex_05012030, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 4,  0,  3, 0x0,  3,  5,  4, 0x0),\n    gsSP1Triangle( 6,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05012148 - 0x050121B0\nconst Gfx heave_ho_seg5_dl_05012148[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(heave_ho_seg5_dl_050120A0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(heave_ho_seg5_dl_05012100),\n    gsSPEndDisplayList(),\n};\n\n// 0x050121B0\nstatic const Lights1 heave_ho_seg5_lights_050121B0 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x050121C8\nstatic const Lights1 heave_ho_seg5_lights_050121C8 = gdSPDefLights1(\n    0x4c, 0x00, 0x16,\n    0x99, 0x00, 0x2d, 0x28, 0x28, 0x28\n);\n\n// 0x050121E0\nstatic const Vtx heave_ho_seg5_vertex_050121E0[] = {\n    {{{   -28,    -33,   -205}, 0, {   990,   -368}, {0xdb, 0x8c, 0xdf, 0xff}}},\n    {{{   -37,     20,   -205}, 0, {   990,   1372}, {0xb4, 0x5f, 0x21, 0xff}}},\n    {{{    -1,     -2,   -244}, 0, {  -604,    434}, {0xd6, 0xf8, 0x89, 0xff}}},\n    {{{   228,      3,   -205}, 0, {   764,    338}, {0x6f, 0xc5, 0x0e, 0xff}}},\n    {{{   218,     73,   -203}, 0, {   774,    552}, {0x30, 0x75, 0x04, 0xff}}},\n    {{{   -37,     20,   -205}, 0, {   198,    552}, {0xb4, 0x5f, 0x21, 0xff}}},\n    {{{   -28,    -33,   -205}, 0, {   194,    386}, {0xdb, 0x8c, 0xdf, 0xff}}},\n    {{{   228,      3,   -205}, 0, {   -98,   -190}, {0x6f, 0xc5, 0x0e, 0xff}}},\n    {{{   174,      9,   -249}, 0, {  1060,     34}, {0x1e, 0xc0, 0x97, 0xff}}},\n    {{{   166,     53,   -249}, 0, {  1112,    914}, {0x19, 0x3d, 0x94, 0xff}}},\n    {{{   218,     73,   -203}, 0, {   -98,   1190}, {0x30, 0x75, 0x04, 0xff}}},\n};\n\n// 0x05012290\nstatic const Vtx heave_ho_seg5_vertex_05012290[] = {\n    {{{   -37,     20,   -205}, 0, {     0,      0}, {0xb4, 0x5f, 0x21, 0xff}}},\n    {{{   218,     73,   -203}, 0, {     0,      0}, {0x30, 0x75, 0x04, 0xff}}},\n    {{{   166,     53,   -249}, 0, {     0,      0}, {0x19, 0x3d, 0x94, 0xff}}},\n    {{{   -28,    -33,   -205}, 0, {     0,      0}, {0xdb, 0x8c, 0xdf, 0xff}}},\n    {{{   174,      9,   -249}, 0, {     0,      0}, {0x1e, 0xc0, 0x97, 0xff}}},\n    {{{   228,      3,   -205}, 0, {     0,      0}, {0x6f, 0xc5, 0x0e, 0xff}}},\n    {{{    -1,     -2,   -244}, 0, {     0,      0}, {0xd6, 0xf8, 0x89, 0xff}}},\n};\n\n// 0x05012300 - 0x05012360\nconst Gfx heave_ho_seg5_dl_05012300[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, heave_ho_seg5_texture_050109C8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&heave_ho_seg5_lights_050121B0.l, 1),\n    gsSPLight(&heave_ho_seg5_lights_050121B0.a, 2),\n    gsSPVertex(heave_ho_seg5_vertex_050121E0, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle( 9, 10,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05012360 - 0x050123A8\nconst Gfx heave_ho_seg5_dl_05012360[] = {\n    gsSPLight(&heave_ho_seg5_lights_050121C8.l, 1),\n    gsSPLight(&heave_ho_seg5_lights_050121C8.a, 2),\n    gsSPVertex(heave_ho_seg5_vertex_05012290, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  2,  4, 0x0,  4,  3,  6, 0x0),\n    gsSP1Triangle( 2,  6,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050123A8 - 0x05012410\nconst Gfx heave_ho_seg5_dl_050123A8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(heave_ho_seg5_dl_05012300),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(heave_ho_seg5_dl_05012360),\n    gsSPEndDisplayList(),\n};\n\n// 0x05012410\nstatic const Lights1 heave_ho_seg5_lights_05012410 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05012428\nstatic const Lights1 heave_ho_seg5_lights_05012428 = gdSPDefLights1(\n    0x5d, 0x6d, 0x65,\n    0xbb, 0xda, 0xcb, 0x28, 0x28, 0x28\n);\n\n// 0x05012440\nstatic const Vtx heave_ho_seg5_vertex_05012440[] = {\n    {{{   438,     63,   -205}, 0, {     0,    990}, {0x10, 0x83, 0x00, 0xff}}},\n    {{{   438,     63,    206}, 0, {   990,    990}, {0x10, 0x83, 0x00, 0xff}}},\n    {{{   146,     25,    206}, 0, {   990,      0}, {0x10, 0x83, 0x00, 0xff}}},\n    {{{   146,     25,   -205}, 0, {     0,      0}, {0x10, 0x83, 0x00, 0xff}}},\n};\n\n// 0x05012480\nstatic const Vtx heave_ho_seg5_vertex_05012480[] = {\n    {{{   188,     61,    206}, 0, {     0,      0}, {0xae, 0x60, 0x00, 0xff}}},\n    {{{   188,     61,   -205}, 0, {     0,      0}, {0xae, 0x60, 0x00, 0xff}}},\n    {{{   146,     25,   -205}, 0, {     0,      0}, {0xae, 0x60, 0x00, 0xff}}},\n    {{{   188,     61,   -205}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   438,     63,   -205}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   146,     25,   -205}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   188,     61,    206}, 0, {     0,      0}, {0xff, 0x7e, 0x00, 0xff}}},\n    {{{   438,     63,   -205}, 0, {     0,      0}, {0xff, 0x7e, 0x00, 0xff}}},\n    {{{   188,     61,   -205}, 0, {     0,      0}, {0xff, 0x7e, 0x00, 0xff}}},\n    {{{   438,     63,    206}, 0, {     0,      0}, {0xff, 0x7e, 0x00, 0xff}}},\n    {{{   146,     25,    206}, 0, {     0,      0}, {0xae, 0x60, 0x00, 0xff}}},\n    {{{   438,     63,    206}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   188,     61,    206}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   146,     25,    206}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x05012560 - 0x050125A8\nconst Gfx heave_ho_seg5_dl_05012560[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, heave_ho_seg5_texture_0500F1C8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&heave_ho_seg5_lights_05012410.l, 1),\n    gsSPLight(&heave_ho_seg5_lights_05012410.a, 2),\n    gsSPVertex(heave_ho_seg5_vertex_05012440, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050125A8 - 0x050125F8\nconst Gfx heave_ho_seg5_dl_050125A8[] = {\n    gsSPLight(&heave_ho_seg5_lights_05012428.l, 1),\n    gsSPLight(&heave_ho_seg5_lights_05012428.a, 2),\n    gsSPVertex(heave_ho_seg5_vertex_05012480, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 0,  2, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050125F8 - 0x05012670\nconst Gfx heave_ho_seg5_dl_050125F8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(heave_ho_seg5_dl_05012560),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(heave_ho_seg5_dl_050125A8),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x05012670\nstatic const Vtx heave_ho_seg5_vertex_05012670[] = {\n    {{{   -11,     12,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    12,    -11,      0}, 0, {   479,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    12,     12,      0}, 0, {   479,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -11,    -11,      0}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x050126B0 - 0x050126E8\nconst Gfx heave_ho_seg5_dl_050126B0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, heave_ho_seg5_texture_050111C8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 16 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(heave_ho_seg5_vertex_05012670, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050126E8 - 0x05012758\nconst Gfx heave_ho_seg5_dl_050126E8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 4, G_TX_NOLOD, G_TX_CLAMP, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (16 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(heave_ho_seg5_dl_050126B0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x05012758\nstatic const Lights1 heave_ho_seg5_lights_05012758 = gdSPDefLights1(\n    0x93, 0x73, 0x7c,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05012770\nstatic const Vtx heave_ho_seg5_vertex_05012770[] = {\n    {{{    30,    155,      0}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    30,   -153,      0}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   214,    155,      0}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   214,   -153,      0}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x050127B0 - 0x050127F8\nconst Gfx heave_ho_seg5_dl_050127B0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, heave_ho_seg5_texture_050113C8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&heave_ho_seg5_lights_05012758.l, 1),\n    gsSPLight(&heave_ho_seg5_lights_05012758.a, 2),\n    gsSPVertex(heave_ho_seg5_vertex_05012770, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050127F8 - 0x05012868\nconst Gfx heave_ho_seg5_dl_050127F8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(heave_ho_seg5_dl_050127B0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x05012868\nstatic const Vtx heave_ho_seg5_vertex_05012868[] = {\n    {{{   -13,     44,     13}, 0, {     0,      0}, {0xde, 0x75, 0x22, 0x00}}},\n    {{{     0,     44,     18}, 0, {     0,      0}, {0x00, 0x75, 0x30, 0x00}}},\n    {{{     0,     48,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   -24,     33,     24}, 0, {     0,      0}, {0xc1, 0x5a, 0x3f, 0xff}}},\n    {{{     0,     33,     33}, 0, {     0,      0}, {0x00, 0x5a, 0x59, 0xff}}},\n    {{{   -31,     18,     31}, 0, {     0,      0}, {0xae, 0x30, 0x52, 0xff}}},\n    {{{     0,     18,     44}, 0, {     0,      0}, {0x00, 0x30, 0x75, 0xff}}},\n    {{{   -33,      0,     33}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{     0,      0,     48}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -31,    -18,     31}, 0, {     0,      0}, {0xae, 0xd0, 0x52, 0xff}}},\n    {{{     0,    -18,     44}, 0, {     0,      0}, {0x00, 0xd0, 0x75, 0xff}}},\n    {{{   -24,    -33,     24}, 0, {     0,      0}, {0xc1, 0xa6, 0x3f, 0xff}}},\n    {{{     0,    -33,     33}, 0, {     0,      0}, {0x00, 0xa6, 0x59, 0xff}}},\n    {{{   -13,    -44,     13}, 0, {     0,      0}, {0xde, 0x8b, 0x22, 0xff}}},\n    {{{     0,    -44,     18}, 0, {     0,      0}, {0x00, 0x8b, 0x30, 0xff}}},\n    {{{     0,    -48,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x05012968\nstatic const Vtx heave_ho_seg5_vertex_05012968[] = {\n    {{{   -18,     44,      0}, 0, {     0,      0}, {0xd0, 0x75, 0x00, 0xff}}},\n    {{{   -13,     44,     13}, 0, {     0,      0}, {0xde, 0x75, 0x22, 0x00}}},\n    {{{     0,     48,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   -33,     33,      0}, 0, {     0,      0}, {0xa7, 0x5a, 0x00, 0xff}}},\n    {{{   -24,     33,     24}, 0, {     0,      0}, {0xc1, 0x5a, 0x3f, 0xff}}},\n    {{{   -44,     18,      0}, 0, {     0,      0}, {0x8b, 0x30, 0x00, 0xff}}},\n    {{{   -31,     18,     31}, 0, {     0,      0}, {0xae, 0x30, 0x52, 0xff}}},\n    {{{   -48,      0,      0}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -33,      0,     33}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   -44,    -18,      0}, 0, {     0,      0}, {0x8b, 0xd0, 0x00, 0xff}}},\n    {{{   -31,    -18,     31}, 0, {     0,      0}, {0xae, 0xd0, 0x52, 0xff}}},\n    {{{   -33,    -33,      0}, 0, {     0,      0}, {0xa7, 0xa6, 0x00, 0xff}}},\n    {{{   -24,    -33,     24}, 0, {     0,      0}, {0xc1, 0xa6, 0x3f, 0xff}}},\n    {{{   -18,    -44,      0}, 0, {     0,      0}, {0xd0, 0x8b, 0x00, 0xff}}},\n    {{{   -13,    -44,     13}, 0, {     0,      0}, {0xde, 0x8b, 0x22, 0xff}}},\n    {{{     0,    -48,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x05012A68\nstatic const Vtx heave_ho_seg5_vertex_05012A68[] = {\n    {{{   -13,     44,    -13}, 0, {     0,      0}, {0xde, 0x75, 0xde, 0xff}}},\n    {{{   -18,     44,      0}, 0, {     0,      0}, {0xd0, 0x75, 0x00, 0x00}}},\n    {{{     0,     48,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   -24,     33,    -24}, 0, {     0,      0}, {0xc1, 0x5a, 0xc1, 0xff}}},\n    {{{   -33,     33,      0}, 0, {     0,      0}, {0xa7, 0x5a, 0x00, 0xff}}},\n    {{{   -31,     18,    -31}, 0, {     0,      0}, {0xae, 0x30, 0xae, 0xff}}},\n    {{{   -44,     18,      0}, 0, {     0,      0}, {0x8b, 0x30, 0x00, 0xff}}},\n    {{{   -33,      0,    -33}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   -48,      0,      0}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -31,    -18,    -31}, 0, {     0,      0}, {0xae, 0xd0, 0xae, 0xff}}},\n    {{{   -44,    -18,      0}, 0, {     0,      0}, {0x8b, 0xd0, 0x00, 0xff}}},\n    {{{   -24,    -33,    -24}, 0, {     0,      0}, {0xc1, 0xa6, 0xc1, 0xff}}},\n    {{{   -33,    -33,      0}, 0, {     0,      0}, {0xa7, 0xa6, 0x00, 0xff}}},\n    {{{   -13,    -44,    -13}, 0, {     0,      0}, {0xde, 0x8b, 0xde, 0xff}}},\n    {{{   -18,    -44,      0}, 0, {     0,      0}, {0xd0, 0x8b, 0x00, 0xff}}},\n    {{{     0,    -48,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x05012B68\nstatic const Vtx heave_ho_seg5_vertex_05012B68[] = {\n    {{{     0,     44,    -18}, 0, {     0,      0}, {0x00, 0x75, 0xd0, 0xff}}},\n    {{{   -13,     44,    -13}, 0, {     0,      0}, {0xde, 0x75, 0xde, 0x00}}},\n    {{{     0,     48,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{     0,     33,    -33}, 0, {     0,      0}, {0x00, 0x5a, 0xa7, 0xff}}},\n    {{{   -24,     33,    -24}, 0, {     0,      0}, {0xc1, 0x5a, 0xc1, 0xff}}},\n    {{{     0,     18,    -44}, 0, {     0,      0}, {0x00, 0x30, 0x8b, 0xff}}},\n    {{{   -31,     18,    -31}, 0, {     0,      0}, {0xae, 0x30, 0xae, 0xff}}},\n    {{{     0,      0,    -48}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -33,      0,    -33}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{     0,    -18,    -44}, 0, {     0,      0}, {0x00, 0xd0, 0x8b, 0xff}}},\n    {{{   -31,    -18,    -31}, 0, {     0,      0}, {0xae, 0xd0, 0xae, 0xff}}},\n    {{{     0,    -33,    -33}, 0, {     0,      0}, {0x00, 0xa6, 0xa7, 0xff}}},\n    {{{   -24,    -33,    -24}, 0, {     0,      0}, {0xc1, 0xa6, 0xc1, 0xff}}},\n    {{{     0,    -44,    -18}, 0, {     0,      0}, {0x00, 0x8b, 0xd0, 0xff}}},\n    {{{   -13,    -44,    -13}, 0, {     0,      0}, {0xde, 0x8b, 0xde, 0xff}}},\n    {{{     0,    -48,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x05012C68\nstatic const Vtx heave_ho_seg5_vertex_05012C68[] = {\n    {{{    13,     44,    -13}, 0, {     0,      0}, {0x22, 0x75, 0xde, 0xff}}},\n    {{{     0,     44,    -18}, 0, {     0,      0}, {0x00, 0x75, 0xd0, 0x00}}},\n    {{{     0,     48,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{    24,     33,    -24}, 0, {     0,      0}, {0x3f, 0x5a, 0xc1, 0xff}}},\n    {{{     0,     33,    -33}, 0, {     0,      0}, {0x00, 0x5a, 0xa7, 0xff}}},\n    {{{    31,     18,    -31}, 0, {     0,      0}, {0x52, 0x30, 0xae, 0xff}}},\n    {{{     0,     18,    -44}, 0, {     0,      0}, {0x00, 0x30, 0x8b, 0xff}}},\n    {{{    33,      0,    -33}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{     0,      0,    -48}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    31,    -18,    -31}, 0, {     0,      0}, {0x52, 0xd0, 0xae, 0xff}}},\n    {{{     0,    -18,    -44}, 0, {     0,      0}, {0x00, 0xd0, 0x8b, 0xff}}},\n    {{{    24,    -33,    -24}, 0, {     0,      0}, {0x3f, 0xa6, 0xc1, 0xff}}},\n    {{{     0,    -33,    -33}, 0, {     0,      0}, {0x00, 0xa6, 0xa7, 0xff}}},\n    {{{    13,    -44,    -13}, 0, {     0,      0}, {0x22, 0x8b, 0xde, 0xff}}},\n    {{{     0,    -44,    -18}, 0, {     0,      0}, {0x00, 0x8b, 0xd0, 0xff}}},\n    {{{     0,    -48,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x05012D68\nstatic const Vtx heave_ho_seg5_vertex_05012D68[] = {\n    {{{    18,     44,      0}, 0, {     0,      0}, {0x30, 0x75, 0x00, 0xff}}},\n    {{{    13,     44,    -13}, 0, {     0,      0}, {0x22, 0x75, 0xde, 0x00}}},\n    {{{     0,     48,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{    33,     33,      0}, 0, {     0,      0}, {0x59, 0x5a, 0x00, 0xff}}},\n    {{{    24,     33,    -24}, 0, {     0,      0}, {0x3f, 0x5a, 0xc1, 0xff}}},\n    {{{    44,     18,      0}, 0, {     0,      0}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{    31,     18,    -31}, 0, {     0,      0}, {0x52, 0x30, 0xae, 0xff}}},\n    {{{    48,      0,      0}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    33,      0,    -33}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{    44,    -18,      0}, 0, {     0,      0}, {0x75, 0xd0, 0x00, 0xff}}},\n    {{{    31,    -18,    -31}, 0, {     0,      0}, {0x52, 0xd0, 0xae, 0xff}}},\n    {{{    33,    -33,      0}, 0, {     0,      0}, {0x59, 0xa6, 0x00, 0xff}}},\n    {{{    24,    -33,    -24}, 0, {     0,      0}, {0x3f, 0xa6, 0xc1, 0xff}}},\n    {{{    18,    -44,      0}, 0, {     0,      0}, {0x30, 0x8b, 0x00, 0xff}}},\n    {{{    13,    -44,    -13}, 0, {     0,      0}, {0x22, 0x8b, 0xde, 0xff}}},\n    {{{     0,    -48,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x05012E68\nstatic const Vtx heave_ho_seg5_vertex_05012E68[] = {\n    {{{    13,     44,     13}, 0, {     0,      0}, {0x22, 0x75, 0x22, 0xff}}},\n    {{{    18,     44,      0}, 0, {     0,      0}, {0x30, 0x75, 0x00, 0x00}}},\n    {{{     0,     48,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{    24,     33,     24}, 0, {     0,      0}, {0x3f, 0x5a, 0x3f, 0xff}}},\n    {{{    33,     33,      0}, 0, {     0,      0}, {0x59, 0x5a, 0x00, 0xff}}},\n    {{{    31,     18,     31}, 0, {     0,      0}, {0x52, 0x30, 0x52, 0xff}}},\n    {{{    44,     18,      0}, 0, {     0,      0}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{    33,      0,     33}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{    48,      0,      0}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    31,    -18,     31}, 0, {     0,      0}, {0x52, 0xd0, 0x52, 0xff}}},\n    {{{    44,    -18,      0}, 0, {     0,      0}, {0x75, 0xd0, 0x00, 0xff}}},\n    {{{    24,    -33,     24}, 0, {     0,      0}, {0x3f, 0xa6, 0x3f, 0xff}}},\n    {{{    33,    -33,      0}, 0, {     0,      0}, {0x59, 0xa6, 0x00, 0xff}}},\n    {{{    13,    -44,     13}, 0, {     0,      0}, {0x22, 0x8b, 0x22, 0xff}}},\n    {{{    18,    -44,      0}, 0, {     0,      0}, {0x30, 0x8b, 0x00, 0xff}}},\n    {{{     0,    -48,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x05012F68\nstatic const Vtx heave_ho_seg5_vertex_05012F68[] = {\n    {{{     0,     44,     18}, 0, {     0,      0}, {0x00, 0x75, 0x30, 0xff}}},\n    {{{    13,     44,     13}, 0, {     0,      0}, {0x22, 0x75, 0x22, 0x00}}},\n    {{{     0,     48,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{     0,     33,     33}, 0, {     0,      0}, {0x00, 0x5a, 0x59, 0xff}}},\n    {{{    24,     33,     24}, 0, {     0,      0}, {0x3f, 0x5a, 0x3f, 0xff}}},\n    {{{     0,     18,     44}, 0, {     0,      0}, {0x00, 0x30, 0x75, 0xff}}},\n    {{{    31,     18,     31}, 0, {     0,      0}, {0x52, 0x30, 0x52, 0xff}}},\n    {{{     0,      0,     48}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    33,      0,     33}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{     0,    -18,     44}, 0, {     0,      0}, {0x00, 0xd0, 0x75, 0xff}}},\n    {{{    31,    -18,     31}, 0, {     0,      0}, {0x52, 0xd0, 0x52, 0xff}}},\n    {{{     0,    -33,     33}, 0, {     0,      0}, {0x00, 0xa6, 0x59, 0xff}}},\n    {{{    24,    -33,     24}, 0, {     0,      0}, {0x3f, 0xa6, 0x3f, 0xff}}},\n    {{{     0,    -44,     18}, 0, {     0,      0}, {0x00, 0x8b, 0x30, 0xff}}},\n    {{{    13,    -44,     13}, 0, {     0,      0}, {0x22, 0x8b, 0x22, 0xff}}},\n    {{{     0,    -48,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x05013068\nstatic const Vtx heave_ho_seg5_vertex_05013068[] = {\n    {{{   223,    -25,      0}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{   223,      0,    -25}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{   223,     25,      0}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{   223,     25,      0}, 0, {     0,      0}, {0x01, 0x7f, 0x00, 0xff}}},\n    {{{     0,     18,    -18}, 0, {     0,      0}, {0xff, 0x59, 0xa7, 0xff}}},\n    {{{     0,     18,     18}, 0, {     0,      0}, {0xff, 0x59, 0x59, 0xff}}},\n    {{{   223,      0,    -25}, 0, {     0,      0}, {0x01, 0x00, 0x81, 0xff}}},\n    {{{   223,      0,     25}, 0, {     0,      0}, {0x01, 0x00, 0x7f, 0xff}}},\n    {{{     0,    -18,     18}, 0, {     0,      0}, {0xff, 0xa7, 0x59, 0xff}}},\n    {{{   223,    -25,      0}, 0, {     0,      0}, {0x01, 0x81, 0x00, 0xff}}},\n    {{{     0,    -18,    -18}, 0, {     0,      0}, {0xff, 0xa7, 0xa7, 0xff}}},\n    {{{   223,      0,     25}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x05013128\nstatic const Vtx heave_ho_seg5_vertex_05013128[] = {\n    {{{   -13,     44,     13}, 0, {     0,      0}, {0xde, 0x75, 0x22, 0x00}}},\n    {{{     0,     44,     18}, 0, {     0,      0}, {0x00, 0x75, 0x30, 0x00}}},\n    {{{     0,     48,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   -24,     33,     24}, 0, {     0,      0}, {0xc1, 0x5a, 0x3f, 0xff}}},\n    {{{     0,     33,     33}, 0, {     0,      0}, {0x00, 0x5a, 0x59, 0xff}}},\n    {{{   -31,     18,     31}, 0, {     0,      0}, {0xae, 0x30, 0x52, 0xff}}},\n    {{{     0,     18,     44}, 0, {     0,      0}, {0x00, 0x30, 0x75, 0xff}}},\n    {{{   -33,      0,     33}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{     0,      0,     48}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -31,    -18,     31}, 0, {     0,      0}, {0xae, 0xd0, 0x52, 0xff}}},\n    {{{     0,    -18,     44}, 0, {     0,      0}, {0x00, 0xd0, 0x75, 0xff}}},\n    {{{   -24,    -33,     24}, 0, {     0,      0}, {0xc1, 0xa6, 0x3f, 0xff}}},\n    {{{     0,    -33,     33}, 0, {     0,      0}, {0x00, 0xa6, 0x59, 0xff}}},\n    {{{   -13,    -44,     13}, 0, {     0,      0}, {0xde, 0x8b, 0x22, 0xff}}},\n    {{{     0,    -44,     18}, 0, {     0,      0}, {0x00, 0x8b, 0x30, 0xff}}},\n    {{{     0,    -48,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x05013228\nstatic const Vtx heave_ho_seg5_vertex_05013228[] = {\n    {{{   -18,     44,      0}, 0, {     0,      0}, {0xd0, 0x75, 0x00, 0xff}}},\n    {{{   -13,     44,     13}, 0, {     0,      0}, {0xde, 0x75, 0x22, 0x00}}},\n    {{{     0,     48,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   -33,     33,      0}, 0, {     0,      0}, {0xa7, 0x5a, 0x00, 0xff}}},\n    {{{   -24,     33,     24}, 0, {     0,      0}, {0xc1, 0x5a, 0x3f, 0xff}}},\n    {{{   -44,     18,      0}, 0, {     0,      0}, {0x8b, 0x30, 0x00, 0xff}}},\n    {{{   -31,     18,     31}, 0, {     0,      0}, {0xae, 0x30, 0x52, 0xff}}},\n    {{{   -48,      0,      0}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -33,      0,     33}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   -44,    -18,      0}, 0, {     0,      0}, {0x8b, 0xd0, 0x00, 0xff}}},\n    {{{   -31,    -18,     31}, 0, {     0,      0}, {0xae, 0xd0, 0x52, 0xff}}},\n    {{{   -33,    -33,      0}, 0, {     0,      0}, {0xa7, 0xa6, 0x00, 0xff}}},\n    {{{   -24,    -33,     24}, 0, {     0,      0}, {0xc1, 0xa6, 0x3f, 0xff}}},\n    {{{   -18,    -44,      0}, 0, {     0,      0}, {0xd0, 0x8b, 0x00, 0xff}}},\n    {{{   -13,    -44,     13}, 0, {     0,      0}, {0xde, 0x8b, 0x22, 0xff}}},\n    {{{     0,    -48,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x05013328\nstatic const Vtx heave_ho_seg5_vertex_05013328[] = {\n    {{{   -13,     44,    -13}, 0, {     0,      0}, {0xde, 0x75, 0xde, 0xff}}},\n    {{{   -18,     44,      0}, 0, {     0,      0}, {0xd0, 0x75, 0x00, 0x00}}},\n    {{{     0,     48,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   -24,     33,    -24}, 0, {     0,      0}, {0xc1, 0x5a, 0xc1, 0xff}}},\n    {{{   -33,     33,      0}, 0, {     0,      0}, {0xa7, 0x5a, 0x00, 0xff}}},\n    {{{   -31,     18,    -31}, 0, {     0,      0}, {0xae, 0x30, 0xae, 0xff}}},\n    {{{   -44,     18,      0}, 0, {     0,      0}, {0x8b, 0x30, 0x00, 0xff}}},\n    {{{   -33,      0,    -33}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   -48,      0,      0}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -31,    -18,    -31}, 0, {     0,      0}, {0xae, 0xd0, 0xae, 0xff}}},\n    {{{   -44,    -18,      0}, 0, {     0,      0}, {0x8b, 0xd0, 0x00, 0xff}}},\n    {{{   -24,    -33,    -24}, 0, {     0,      0}, {0xc1, 0xa6, 0xc1, 0xff}}},\n    {{{   -33,    -33,      0}, 0, {     0,      0}, {0xa7, 0xa6, 0x00, 0xff}}},\n    {{{   -13,    -44,    -13}, 0, {     0,      0}, {0xde, 0x8b, 0xde, 0xff}}},\n    {{{   -18,    -44,      0}, 0, {     0,      0}, {0xd0, 0x8b, 0x00, 0xff}}},\n    {{{     0,    -48,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x05013428\nstatic const Vtx heave_ho_seg5_vertex_05013428[] = {\n    {{{     0,     44,    -18}, 0, {     0,      0}, {0x00, 0x75, 0xd0, 0xff}}},\n    {{{   -13,     44,    -13}, 0, {     0,      0}, {0xde, 0x75, 0xde, 0x00}}},\n    {{{     0,     48,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{     0,     33,    -33}, 0, {     0,      0}, {0x00, 0x5a, 0xa7, 0xff}}},\n    {{{   -24,     33,    -24}, 0, {     0,      0}, {0xc1, 0x5a, 0xc1, 0xff}}},\n    {{{     0,     18,    -44}, 0, {     0,      0}, {0x00, 0x30, 0x8b, 0xff}}},\n    {{{   -31,     18,    -31}, 0, {     0,      0}, {0xae, 0x30, 0xae, 0xff}}},\n    {{{     0,      0,    -48}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -33,      0,    -33}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{     0,    -18,    -44}, 0, {     0,      0}, {0x00, 0xd0, 0x8b, 0xff}}},\n    {{{   -31,    -18,    -31}, 0, {     0,      0}, {0xae, 0xd0, 0xae, 0xff}}},\n    {{{     0,    -33,    -33}, 0, {     0,      0}, {0x00, 0xa6, 0xa7, 0xff}}},\n    {{{   -24,    -33,    -24}, 0, {     0,      0}, {0xc1, 0xa6, 0xc1, 0xff}}},\n    {{{     0,    -44,    -18}, 0, {     0,      0}, {0x00, 0x8b, 0xd0, 0xff}}},\n    {{{   -13,    -44,    -13}, 0, {     0,      0}, {0xde, 0x8b, 0xde, 0xff}}},\n    {{{     0,    -48,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x05013528\nstatic const Vtx heave_ho_seg5_vertex_05013528[] = {\n    {{{    13,     44,    -13}, 0, {     0,      0}, {0x22, 0x75, 0xde, 0xff}}},\n    {{{     0,     44,    -18}, 0, {     0,      0}, {0x00, 0x75, 0xd0, 0x00}}},\n    {{{     0,     48,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{    24,     33,    -24}, 0, {     0,      0}, {0x3f, 0x5a, 0xc1, 0xff}}},\n    {{{     0,     33,    -33}, 0, {     0,      0}, {0x00, 0x5a, 0xa7, 0xff}}},\n    {{{    31,     18,    -31}, 0, {     0,      0}, {0x52, 0x30, 0xae, 0xff}}},\n    {{{     0,     18,    -44}, 0, {     0,      0}, {0x00, 0x30, 0x8b, 0xff}}},\n    {{{    33,      0,    -33}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{     0,      0,    -48}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    31,    -18,    -31}, 0, {     0,      0}, {0x52, 0xd0, 0xae, 0xff}}},\n    {{{     0,    -18,    -44}, 0, {     0,      0}, {0x00, 0xd0, 0x8b, 0xff}}},\n    {{{    24,    -33,    -24}, 0, {     0,      0}, {0x3f, 0xa6, 0xc1, 0xff}}},\n    {{{     0,    -33,    -33}, 0, {     0,      0}, {0x00, 0xa6, 0xa7, 0xff}}},\n    {{{    13,    -44,    -13}, 0, {     0,      0}, {0x22, 0x8b, 0xde, 0xff}}},\n    {{{     0,    -44,    -18}, 0, {     0,      0}, {0x00, 0x8b, 0xd0, 0xff}}},\n    {{{     0,    -48,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x05013628\nstatic const Vtx heave_ho_seg5_vertex_05013628[] = {\n    {{{    18,     44,      0}, 0, {     0,      0}, {0x30, 0x75, 0x00, 0xff}}},\n    {{{    13,     44,    -13}, 0, {     0,      0}, {0x22, 0x75, 0xde, 0x00}}},\n    {{{     0,     48,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{    33,     33,      0}, 0, {     0,      0}, {0x59, 0x5a, 0x00, 0xff}}},\n    {{{    24,     33,    -24}, 0, {     0,      0}, {0x3f, 0x5a, 0xc1, 0xff}}},\n    {{{    44,     18,      0}, 0, {     0,      0}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{    31,     18,    -31}, 0, {     0,      0}, {0x52, 0x30, 0xae, 0xff}}},\n    {{{    48,      0,      0}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    33,      0,    -33}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{    44,    -18,      0}, 0, {     0,      0}, {0x75, 0xd0, 0x00, 0xff}}},\n    {{{    31,    -18,    -31}, 0, {     0,      0}, {0x52, 0xd0, 0xae, 0xff}}},\n    {{{    33,    -33,      0}, 0, {     0,      0}, {0x59, 0xa6, 0x00, 0xff}}},\n    {{{    24,    -33,    -24}, 0, {     0,      0}, {0x3f, 0xa6, 0xc1, 0xff}}},\n    {{{    18,    -44,      0}, 0, {     0,      0}, {0x30, 0x8b, 0x00, 0xff}}},\n    {{{    13,    -44,    -13}, 0, {     0,      0}, {0x22, 0x8b, 0xde, 0xff}}},\n    {{{     0,    -48,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x05013728\nstatic const Vtx heave_ho_seg5_vertex_05013728[] = {\n    {{{    13,     44,     13}, 0, {     0,      0}, {0x22, 0x75, 0x22, 0xff}}},\n    {{{    18,     44,      0}, 0, {     0,      0}, {0x30, 0x75, 0x00, 0x00}}},\n    {{{     0,     48,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{    24,     33,     24}, 0, {     0,      0}, {0x3f, 0x5a, 0x3f, 0xff}}},\n    {{{    33,     33,      0}, 0, {     0,      0}, {0x59, 0x5a, 0x00, 0xff}}},\n    {{{    31,     18,     31}, 0, {     0,      0}, {0x52, 0x30, 0x52, 0xff}}},\n    {{{    44,     18,      0}, 0, {     0,      0}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{    33,      0,     33}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{    48,      0,      0}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    31,    -18,     31}, 0, {     0,      0}, {0x52, 0xd0, 0x52, 0xff}}},\n    {{{    44,    -18,      0}, 0, {     0,      0}, {0x75, 0xd0, 0x00, 0xff}}},\n    {{{    24,    -33,     24}, 0, {     0,      0}, {0x3f, 0xa6, 0x3f, 0xff}}},\n    {{{    33,    -33,      0}, 0, {     0,      0}, {0x59, 0xa6, 0x00, 0xff}}},\n    {{{    13,    -44,     13}, 0, {     0,      0}, {0x22, 0x8b, 0x22, 0xff}}},\n    {{{    18,    -44,      0}, 0, {     0,      0}, {0x30, 0x8b, 0x00, 0xff}}},\n    {{{     0,    -48,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x05013828\nstatic const Vtx heave_ho_seg5_vertex_05013828[] = {\n    {{{     0,     44,     18}, 0, {     0,      0}, {0x00, 0x75, 0x30, 0xff}}},\n    {{{    13,     44,     13}, 0, {     0,      0}, {0x22, 0x75, 0x22, 0x00}}},\n    {{{     0,     48,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{     0,     33,     33}, 0, {     0,      0}, {0x00, 0x5a, 0x59, 0xff}}},\n    {{{    24,     33,     24}, 0, {     0,      0}, {0x3f, 0x5a, 0x3f, 0xff}}},\n    {{{     0,     18,     44}, 0, {     0,      0}, {0x00, 0x30, 0x75, 0xff}}},\n    {{{    31,     18,     31}, 0, {     0,      0}, {0x52, 0x30, 0x52, 0xff}}},\n    {{{     0,      0,     48}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    33,      0,     33}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{     0,    -18,     44}, 0, {     0,      0}, {0x00, 0xd0, 0x75, 0xff}}},\n    {{{    31,    -18,     31}, 0, {     0,      0}, {0x52, 0xd0, 0x52, 0xff}}},\n    {{{     0,    -33,     33}, 0, {     0,      0}, {0x00, 0xa6, 0x59, 0xff}}},\n    {{{    24,    -33,     24}, 0, {     0,      0}, {0x3f, 0xa6, 0x3f, 0xff}}},\n    {{{     0,    -44,     18}, 0, {     0,      0}, {0x00, 0x8b, 0x30, 0xff}}},\n    {{{    13,    -44,     13}, 0, {     0,      0}, {0x22, 0x8b, 0x22, 0xff}}},\n    {{{     0,    -48,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x05013928\nstatic const Vtx heave_ho_seg5_vertex_05013928[] = {\n    {{{   -13,     44,     13}, 0, {     0,      0}, {0xde, 0x75, 0x22, 0x00}}},\n    {{{     0,     44,     18}, 0, {     0,      0}, {0x00, 0x75, 0x30, 0x00}}},\n    {{{     0,     48,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   -24,     33,     24}, 0, {     0,      0}, {0xc1, 0x5a, 0x3f, 0xff}}},\n    {{{     0,     33,     33}, 0, {     0,      0}, {0x00, 0x5a, 0x59, 0xff}}},\n    {{{   -31,     18,     31}, 0, {     0,      0}, {0xae, 0x30, 0x52, 0xff}}},\n    {{{     0,     18,     44}, 0, {     0,      0}, {0x00, 0x30, 0x75, 0xff}}},\n    {{{   -33,      0,     33}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{     0,      0,     48}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -31,    -18,     31}, 0, {     0,      0}, {0xae, 0xd0, 0x52, 0xff}}},\n    {{{     0,    -18,     44}, 0, {     0,      0}, {0x00, 0xd0, 0x75, 0xff}}},\n    {{{   -24,    -33,     24}, 0, {     0,      0}, {0xc1, 0xa6, 0x3f, 0xff}}},\n    {{{     0,    -33,     33}, 0, {     0,      0}, {0x00, 0xa6, 0x59, 0xff}}},\n    {{{   -13,    -44,     13}, 0, {     0,      0}, {0xde, 0x8b, 0x22, 0xff}}},\n    {{{     0,    -44,     18}, 0, {     0,      0}, {0x00, 0x8b, 0x30, 0xff}}},\n    {{{     0,    -48,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x05013A28\nstatic const Vtx heave_ho_seg5_vertex_05013A28[] = {\n    {{{   -18,     44,      0}, 0, {     0,      0}, {0xd0, 0x75, 0x00, 0xff}}},\n    {{{   -13,     44,     13}, 0, {     0,      0}, {0xde, 0x75, 0x22, 0x00}}},\n    {{{     0,     48,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   -33,     33,      0}, 0, {     0,      0}, {0xa7, 0x5a, 0x00, 0xff}}},\n    {{{   -24,     33,     24}, 0, {     0,      0}, {0xc1, 0x5a, 0x3f, 0xff}}},\n    {{{   -44,     18,      0}, 0, {     0,      0}, {0x8b, 0x30, 0x00, 0xff}}},\n    {{{   -31,     18,     31}, 0, {     0,      0}, {0xae, 0x30, 0x52, 0xff}}},\n    {{{   -48,      0,      0}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -33,      0,     33}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   -44,    -18,      0}, 0, {     0,      0}, {0x8b, 0xd0, 0x00, 0xff}}},\n    {{{   -31,    -18,     31}, 0, {     0,      0}, {0xae, 0xd0, 0x52, 0xff}}},\n    {{{   -33,    -33,      0}, 0, {     0,      0}, {0xa7, 0xa6, 0x00, 0xff}}},\n    {{{   -24,    -33,     24}, 0, {     0,      0}, {0xc1, 0xa6, 0x3f, 0xff}}},\n    {{{   -18,    -44,      0}, 0, {     0,      0}, {0xd0, 0x8b, 0x00, 0xff}}},\n    {{{   -13,    -44,     13}, 0, {     0,      0}, {0xde, 0x8b, 0x22, 0xff}}},\n    {{{     0,    -48,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x05013B28\nstatic const Vtx heave_ho_seg5_vertex_05013B28[] = {\n    {{{   -13,     44,    -13}, 0, {     0,      0}, {0xde, 0x75, 0xde, 0xff}}},\n    {{{   -18,     44,      0}, 0, {     0,      0}, {0xd0, 0x75, 0x00, 0x00}}},\n    {{{     0,     48,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   -24,     33,    -24}, 0, {     0,      0}, {0xc1, 0x5a, 0xc1, 0xff}}},\n    {{{   -33,     33,      0}, 0, {     0,      0}, {0xa7, 0x5a, 0x00, 0xff}}},\n    {{{   -31,     18,    -31}, 0, {     0,      0}, {0xae, 0x30, 0xae, 0xff}}},\n    {{{   -44,     18,      0}, 0, {     0,      0}, {0x8b, 0x30, 0x00, 0xff}}},\n    {{{   -33,      0,    -33}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   -48,      0,      0}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -31,    -18,    -31}, 0, {     0,      0}, {0xae, 0xd0, 0xae, 0xff}}},\n    {{{   -44,    -18,      0}, 0, {     0,      0}, {0x8b, 0xd0, 0x00, 0xff}}},\n    {{{   -24,    -33,    -24}, 0, {     0,      0}, {0xc1, 0xa6, 0xc1, 0xff}}},\n    {{{   -33,    -33,      0}, 0, {     0,      0}, {0xa7, 0xa6, 0x00, 0xff}}},\n    {{{   -13,    -44,    -13}, 0, {     0,      0}, {0xde, 0x8b, 0xde, 0xff}}},\n    {{{   -18,    -44,      0}, 0, {     0,      0}, {0xd0, 0x8b, 0x00, 0xff}}},\n    {{{     0,    -48,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x05013C28\nstatic const Vtx heave_ho_seg5_vertex_05013C28[] = {\n    {{{     0,     44,    -18}, 0, {     0,      0}, {0x00, 0x75, 0xd0, 0xff}}},\n    {{{   -13,     44,    -13}, 0, {     0,      0}, {0xde, 0x75, 0xde, 0x00}}},\n    {{{     0,     48,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{     0,     33,    -33}, 0, {     0,      0}, {0x00, 0x5a, 0xa7, 0xff}}},\n    {{{   -24,     33,    -24}, 0, {     0,      0}, {0xc1, 0x5a, 0xc1, 0xff}}},\n    {{{     0,     18,    -44}, 0, {     0,      0}, {0x00, 0x30, 0x8b, 0xff}}},\n    {{{   -31,     18,    -31}, 0, {     0,      0}, {0xae, 0x30, 0xae, 0xff}}},\n    {{{     0,      0,    -48}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -33,      0,    -33}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{     0,    -18,    -44}, 0, {     0,      0}, {0x00, 0xd0, 0x8b, 0xff}}},\n    {{{   -31,    -18,    -31}, 0, {     0,      0}, {0xae, 0xd0, 0xae, 0xff}}},\n    {{{     0,    -33,    -33}, 0, {     0,      0}, {0x00, 0xa6, 0xa7, 0xff}}},\n    {{{   -24,    -33,    -24}, 0, {     0,      0}, {0xc1, 0xa6, 0xc1, 0xff}}},\n    {{{     0,    -44,    -18}, 0, {     0,      0}, {0x00, 0x8b, 0xd0, 0xff}}},\n    {{{   -13,    -44,    -13}, 0, {     0,      0}, {0xde, 0x8b, 0xde, 0xff}}},\n    {{{     0,    -48,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x05013D28\nstatic const Vtx heave_ho_seg5_vertex_05013D28[] = {\n    {{{    13,     44,    -13}, 0, {     0,      0}, {0x22, 0x75, 0xde, 0xff}}},\n    {{{     0,     44,    -18}, 0, {     0,      0}, {0x00, 0x75, 0xd0, 0x00}}},\n    {{{     0,     48,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{    24,     33,    -24}, 0, {     0,      0}, {0x3f, 0x5a, 0xc1, 0xff}}},\n    {{{     0,     33,    -33}, 0, {     0,      0}, {0x00, 0x5a, 0xa7, 0xff}}},\n    {{{    31,     18,    -31}, 0, {     0,      0}, {0x52, 0x30, 0xae, 0xff}}},\n    {{{     0,     18,    -44}, 0, {     0,      0}, {0x00, 0x30, 0x8b, 0xff}}},\n    {{{    33,      0,    -33}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{     0,      0,    -48}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    31,    -18,    -31}, 0, {     0,      0}, {0x52, 0xd0, 0xae, 0xff}}},\n    {{{     0,    -18,    -44}, 0, {     0,      0}, {0x00, 0xd0, 0x8b, 0xff}}},\n    {{{    24,    -33,    -24}, 0, {     0,      0}, {0x3f, 0xa6, 0xc1, 0xff}}},\n    {{{     0,    -33,    -33}, 0, {     0,      0}, {0x00, 0xa6, 0xa7, 0xff}}},\n    {{{    13,    -44,    -13}, 0, {     0,      0}, {0x22, 0x8b, 0xde, 0xff}}},\n    {{{     0,    -44,    -18}, 0, {     0,      0}, {0x00, 0x8b, 0xd0, 0xff}}},\n    {{{     0,    -48,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x05013E28\nstatic const Vtx heave_ho_seg5_vertex_05013E28[] = {\n    {{{    18,     44,      0}, 0, {     0,      0}, {0x30, 0x75, 0x00, 0xff}}},\n    {{{    13,     44,    -13}, 0, {     0,      0}, {0x22, 0x75, 0xde, 0x00}}},\n    {{{     0,     48,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{    33,     33,      0}, 0, {     0,      0}, {0x59, 0x5a, 0x00, 0xff}}},\n    {{{    24,     33,    -24}, 0, {     0,      0}, {0x3f, 0x5a, 0xc1, 0xff}}},\n    {{{    44,     18,      0}, 0, {     0,      0}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{    31,     18,    -31}, 0, {     0,      0}, {0x52, 0x30, 0xae, 0xff}}},\n    {{{    48,      0,      0}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    33,      0,    -33}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{    44,    -18,      0}, 0, {     0,      0}, {0x75, 0xd0, 0x00, 0xff}}},\n    {{{    31,    -18,    -31}, 0, {     0,      0}, {0x52, 0xd0, 0xae, 0xff}}},\n    {{{    33,    -33,      0}, 0, {     0,      0}, {0x59, 0xa6, 0x00, 0xff}}},\n    {{{    24,    -33,    -24}, 0, {     0,      0}, {0x3f, 0xa6, 0xc1, 0xff}}},\n    {{{    18,    -44,      0}, 0, {     0,      0}, {0x30, 0x8b, 0x00, 0xff}}},\n    {{{    13,    -44,    -13}, 0, {     0,      0}, {0x22, 0x8b, 0xde, 0xff}}},\n    {{{     0,    -48,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x05013F28\nstatic const Vtx heave_ho_seg5_vertex_05013F28[] = {\n    {{{    13,     44,     13}, 0, {     0,      0}, {0x22, 0x75, 0x22, 0xff}}},\n    {{{    18,     44,      0}, 0, {     0,      0}, {0x30, 0x75, 0x00, 0x00}}},\n    {{{     0,     48,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{    24,     33,     24}, 0, {     0,      0}, {0x3f, 0x5a, 0x3f, 0xff}}},\n    {{{    33,     33,      0}, 0, {     0,      0}, {0x59, 0x5a, 0x00, 0xff}}},\n    {{{    31,     18,     31}, 0, {     0,      0}, {0x52, 0x30, 0x52, 0xff}}},\n    {{{    44,     18,      0}, 0, {     0,      0}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{    33,      0,     33}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{    48,      0,      0}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    31,    -18,     31}, 0, {     0,      0}, {0x52, 0xd0, 0x52, 0xff}}},\n    {{{    44,    -18,      0}, 0, {     0,      0}, {0x75, 0xd0, 0x00, 0xff}}},\n    {{{    24,    -33,     24}, 0, {     0,      0}, {0x3f, 0xa6, 0x3f, 0xff}}},\n    {{{    33,    -33,      0}, 0, {     0,      0}, {0x59, 0xa6, 0x00, 0xff}}},\n    {{{    13,    -44,     13}, 0, {     0,      0}, {0x22, 0x8b, 0x22, 0xff}}},\n    {{{    18,    -44,      0}, 0, {     0,      0}, {0x30, 0x8b, 0x00, 0xff}}},\n    {{{     0,    -48,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x05014028\nstatic const Vtx heave_ho_seg5_vertex_05014028[] = {\n    {{{     0,     44,     18}, 0, {     0,      0}, {0x00, 0x75, 0x30, 0xff}}},\n    {{{    13,     44,     13}, 0, {     0,      0}, {0x22, 0x75, 0x22, 0x00}}},\n    {{{     0,     48,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{     0,     33,     33}, 0, {     0,      0}, {0x00, 0x5a, 0x59, 0xff}}},\n    {{{    24,     33,     24}, 0, {     0,      0}, {0x3f, 0x5a, 0x3f, 0xff}}},\n    {{{     0,     18,     44}, 0, {     0,      0}, {0x00, 0x30, 0x75, 0xff}}},\n    {{{    31,     18,     31}, 0, {     0,      0}, {0x52, 0x30, 0x52, 0xff}}},\n    {{{     0,      0,     48}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    33,      0,     33}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{     0,    -18,     44}, 0, {     0,      0}, {0x00, 0xd0, 0x75, 0xff}}},\n    {{{    31,    -18,     31}, 0, {     0,      0}, {0x52, 0xd0, 0x52, 0xff}}},\n    {{{     0,    -33,     33}, 0, {     0,      0}, {0x00, 0xa6, 0x59, 0xff}}},\n    {{{    24,    -33,     24}, 0, {     0,      0}, {0x3f, 0xa6, 0x3f, 0xff}}},\n    {{{     0,    -44,     18}, 0, {     0,      0}, {0x00, 0x8b, 0x30, 0xff}}},\n    {{{    13,    -44,     13}, 0, {     0,      0}, {0x22, 0x8b, 0x22, 0xff}}},\n    {{{     0,    -48,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x05014128\nstatic const Vtx heave_ho_seg5_vertex_05014128[] = {\n    {{{   204,    -17,    220}, 0, {     0,      0}, {0x3e, 0x6e, 0x00, 0x00}}},\n    {{{   204,    -29,   -219}, 0, {     0,      0}, {0x7f, 0x00, 0xfd, 0x00}}},\n    {{{   180,    -17,   -219}, 0, {     0,      0}, {0xc2, 0x6e, 0x00, 0x00}}},\n    {{{   204,    -41,    220}, 0, {     0,      0}, {0x3e, 0x92, 0x00, 0xff}}},\n    {{{   180,    -41,   -219}, 0, {     0,      0}, {0xc2, 0x92, 0x00, 0xff}}},\n    {{{   180,    -29,    220}, 0, {     0,      0}, {0x81, 0x00, 0x03, 0xff}}},\n};\n\n// 0x05014188 - 0x05014560\nconst Gfx heave_ho_seg5_dl_05014188[] = {\n    gsSPLight(&heave_ho_seg5_lights_0500E968.l, 1),\n    gsSPLight(&heave_ho_seg5_lights_0500E968.a, 2),\n    gsSPVertex(heave_ho_seg5_vertex_05012868, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(heave_ho_seg5_vertex_05012968, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(heave_ho_seg5_vertex_05012A68, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(heave_ho_seg5_vertex_05012B68, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(heave_ho_seg5_vertex_05012C68, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(heave_ho_seg5_vertex_05012D68, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(heave_ho_seg5_vertex_05012E68, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(heave_ho_seg5_vertex_05012F68, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05014560 - 0x050145D0\nconst Gfx heave_ho_seg5_dl_05014560[] = {\n    gsSPLight(&heave_ho_seg5_lights_0500E980.l, 1),\n    gsSPLight(&heave_ho_seg5_lights_0500E980.a, 2),\n    gsSPVertex(heave_ho_seg5_vertex_05013068, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0,  5,  7,  3, 0x0),\n    gsSP2Triangles( 8,  9,  7, 0x0, 10,  6,  9, 0x0),\n    gsSP2Triangles( 2, 11,  0, 0x0,  7,  5,  8, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0,  6, 10,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050145D0 - 0x050149A8\nconst Gfx heave_ho_seg5_dl_050145D0[] = {\n    gsSPLight(&heave_ho_seg5_lights_0500E968.l, 1),\n    gsSPLight(&heave_ho_seg5_lights_0500E968.a, 2),\n    gsSPVertex(heave_ho_seg5_vertex_05013128, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(heave_ho_seg5_vertex_05013228, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(heave_ho_seg5_vertex_05013328, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(heave_ho_seg5_vertex_05013428, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(heave_ho_seg5_vertex_05013528, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(heave_ho_seg5_vertex_05013628, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(heave_ho_seg5_vertex_05013728, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(heave_ho_seg5_vertex_05013828, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050149A8 - 0x05014D80\nconst Gfx heave_ho_seg5_dl_050149A8[] = {\n    gsSPLight(&heave_ho_seg5_lights_0500E968.l, 1),\n    gsSPLight(&heave_ho_seg5_lights_0500E968.a, 2),\n    gsSPVertex(heave_ho_seg5_vertex_05013928, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(heave_ho_seg5_vertex_05013A28, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(heave_ho_seg5_vertex_05013B28, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(heave_ho_seg5_vertex_05013C28, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(heave_ho_seg5_vertex_05013D28, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(heave_ho_seg5_vertex_05013E28, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(heave_ho_seg5_vertex_05013F28, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(heave_ho_seg5_vertex_05014028, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05014D80 - 0x05014DD0\nconst Gfx heave_ho_seg5_dl_05014D80[] = {\n    gsSPLight(&heave_ho_seg5_lights_0500E980.l, 1),\n    gsSPLight(&heave_ho_seg5_lights_0500E980.a, 2),\n    gsSPVertex(heave_ho_seg5_vertex_05014128, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 4,  3,  5, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 0,  3,  1, 0x0,  2,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/hoot/anims/anim_050053EC.inc.c",
    "content": "// 0x05004EC0\nstatic const s16 hoot_seg5_animvalue_05004EC0[] = {\n    0x0000, 0x0093, 0xFFFB, 0x3FFF, 0xF70A, 0xFC1D, 0x081E, 0x163B,\n    0x21A1, 0x257B, 0x16F1, 0xFC62, 0xEAD1, 0xE6C0, 0xE5FD, 0xE778,\n    0xEA26, 0xECF9, 0xEEE4, 0xF073, 0xF28F, 0xF4B4, 0xF65E, 0xF70A,\n    0xF01D, 0xF18D, 0xF4B9, 0xF7E8, 0xF963, 0xF772, 0xEC01, 0xDA3D,\n    0xCE4C, 0xCA24, 0xC78E, 0xC66C, 0xC6A2, 0xC813, 0xCAA1, 0xD07F,\n    0xDA09, 0xE465, 0xECB5, 0xF01D, 0x3B13, 0x3637, 0x2A0A, 0x1A24,\n    0x0A1D, 0xFD8F, 0xF471, 0xEE4D, 0xEE13, 0xF34E, 0xFAF0, 0x040D,\n    0x0DB7, 0x16FF, 0x1EF6, 0x265E, 0x2DE6, 0x348A, 0x3945, 0x3B13,\n    0x061C, 0xEAAE, 0xEAA7, 0xEA96, 0xEA7D, 0xEA61, 0xEA44, 0xEA2B,\n    0xEA1A, 0xEA13, 0xEA17, 0xEA20, 0xEA2F, 0xEA42, 0xEA56, 0xEA6B,\n    0xEA7F, 0xEA92, 0xEAA1, 0xEAAA, 0xEAAE, 0x04DA, 0x04D1, 0x04B8,\n    0x0496, 0x046F, 0x0448, 0x0426, 0x040E, 0x0405, 0x040A, 0x0418,\n    0x042C, 0x0445, 0x0461, 0x047E, 0x049A, 0x04B3, 0x04C7, 0x04D5,\n    0x04DA, 0xA148, 0xA0DF, 0x9FCC, 0x9E47, 0x9C8A, 0x9ACC, 0x9947,\n    0x9834, 0x97CC, 0x9804, 0x989F, 0x9987, 0x9AA5, 0x9BE5, 0x9D2F,\n    0x9E6E, 0x9F8C, 0xA074, 0xA10F, 0xA148, 0x0415, 0x132D, 0x1334,\n    0x1346, 0x135F, 0x137C, 0x1398, 0x13B1, 0x13C3, 0x13CA, 0x13C6,\n    0x13BC, 0x13AD, 0x139B, 0x1386, 0x1371, 0x135C, 0x134A, 0x133B,\n    0x1331, 0x132D, 0xFB3A, 0xFB43, 0xFB5C, 0xFB80, 0xFBA9, 0xFBD2,\n    0xFBF5, 0xFC0E, 0xFC18, 0xFC13, 0xFC04, 0xFBEF, 0xFBD5, 0xFBB8,\n    0xFB9A, 0xFB7C, 0xFB62, 0xFB4D, 0xFB3F, 0xFB3A, 0xA26B, 0xA20A,\n    0xA10C, 0x9FA4, 0x9E08, 0x9C6B, 0x9B03, 0x9A05, 0x99A4, 0x99D9,\n    0x9A68, 0x9B3E, 0x9C47, 0x9D6F, 0x9EA0, 0x9FC8, 0xA0D1, 0xA1A7,\n    0xA236, 0xA26B, 0xEFB4, 0xF63C, 0x05BF, 0x1827, 0x2758, 0x2D39,\n    0x1CDC, 0xFDED, 0xE930, 0xE41A, 0xE2C9, 0xE406, 0xE696, 0xE942,\n    0xEAD1, 0xEBB4, 0xECF7, 0xEE45, 0xEF4B, 0xEFB4, 0xF28F, 0xF440,\n    0xF802, 0xFBDB, 0xFDD2, 0xFBED, 0xEF56, 0xDBB0, 0xCEB4, 0xCAB3,\n    0xC8A5, 0xC841, 0xC940, 0xCB5C, 0xCE4C, 0xD427, 0xDD68, 0xE75C,\n    0xEF4F, 0xF28F, 0x39DA, 0x34D6, 0x284A, 0x17FA, 0x07AA, 0xFB1D,\n    0xF2D6, 0xEE09, 0xEE7C, 0xF375, 0xFA87, 0x02E8, 0x0BD2, 0x147B,\n    0x1C1C, 0x2397, 0x2B83, 0x32AC, 0x37DB, 0x39DA, 0xF70A, 0xFC1D,\n    0x081E, 0x163B, 0x21A1, 0x257B, 0x16F1, 0xFC62, 0xEAD1, 0xE6C0,\n    0xE5FD, 0xE778, 0xEA26, 0xECF9, 0xEEE4, 0xF073, 0xF28F, 0xF4B4,\n    0xF65E, 0xF70A, 0xF01D, 0xF18D, 0xF4B9, 0xF7E8, 0xF963, 0xF772,\n    0xEC01, 0xDA3D, 0xCE4C, 0xCA24, 0xC78E, 0xC66C, 0xC6A2, 0xC813,\n    0xCAA1, 0xD07F, 0xDA09, 0xE465, 0xECB5, 0xF01D, 0x3B13, 0x3637,\n    0x2A0A, 0x1A24, 0x0A1D, 0xFD8F, 0xF471, 0xEE4D, 0xEE13, 0xF34E,\n    0xFAF0, 0x040D, 0x0DB7, 0x16FF, 0x1EF6, 0x265E, 0x2DE6, 0x348A,\n    0x3945, 0x3B13, 0xEFB4, 0xF63C, 0x05BF, 0x1827, 0x2758, 0x2D39,\n    0x1CDC, 0xFDED, 0xE930, 0xE41A, 0xE2C9, 0xE406, 0xE696, 0xE942,\n    0xEAD1, 0xEBB4, 0xECF7, 0xEE45, 0xEF4B, 0xEFB4, 0xF28F, 0xF440,\n    0xF802, 0xFBDB, 0xFDD2, 0xFBED, 0xEF56, 0xDBB0, 0xCEB4, 0xCAB3,\n    0xC8A5, 0xC841, 0xC940, 0xCB5C, 0xCE4C, 0xD427, 0xDD68, 0xE75C,\n    0xEF4F, 0xF28F, 0x39DA, 0x34D6, 0x284A, 0x17FA, 0x07AA, 0xFB1D,\n    0xF2D6, 0xEE09, 0xEE7C, 0xF375, 0xFA87, 0x02E8, 0x0BD2, 0x147B,\n    0x1C1C, 0x2397, 0x2B83, 0x32AC, 0x37DB, 0x39DA, 0x3B13, 0x3637,\n    0x2A0A, 0x1A24, 0x0A1D, 0xFD8F, 0xF471, 0xEE4D, 0xEE13, 0xF34E,\n    0xFAF0, 0x040D, 0x0DB7, 0x16FF, 0x1EF6, 0x265E, 0x2DE6, 0x348A,\n    0x3945, 0x3B13, 0x39DA, 0x34D6, 0x284A, 0x17FA, 0x07AA, 0xFB1D,\n    0xF2D6, 0xEE09, 0xEE7C, 0xF375, 0xFA87, 0x02E8, 0x0BD2, 0x147B,\n    0x1C1C, 0x2397, 0x2B83, 0x32AC, 0x37DB, 0x39DA, 0x3B13, 0x3637,\n    0x2A0A, 0x1A24, 0x0A1D, 0xFD8F, 0xF471, 0xEE4D, 0xEE13, 0xF34E,\n    0xFAF0, 0x040D, 0x0DB7, 0x16FF, 0x1EF6, 0x265E, 0x2DE6, 0x348A,\n    0x3945, 0x3B13, 0x39DA, 0x34D6, 0x284A, 0x17FA, 0x07AA, 0xFB1D,\n    0xF2D6, 0xEE09, 0xEE7C, 0xF375, 0xFA87, 0x02E8, 0x0BD2, 0x147B,\n    0x1C1C, 0x2397, 0x2B83, 0x32AC, 0x37DB, 0x39DA, 0xE495, 0x3FFF,\n    0x5B6E, 0xB6D9, 0xB6D9, 0x9B6D, 0xC001, 0xDB6D, 0xDA89, 0xDA4A,\n    0xD9A5, 0xD8BB, 0xD7AF, 0xD6A3, 0xD5B9, 0xD514, 0xD4D5, 0xD4F7,\n    0xD554, 0xD5E0, 0xD68C, 0xD74C, 0xD812, 0xD8D2, 0xD97F, 0xDA0A,\n    0xDA67, 0xDA89, 0x7114, 0x7153, 0x71F8, 0x72E2, 0x73EE, 0x74FA,\n    0x75E4, 0x768A, 0x76C8, 0x76A6, 0x7649, 0x75BE, 0x7512, 0x7452,\n    0x738B, 0x72CB, 0x721F, 0x7193, 0x7136, 0x7114,\n};\n\n// 0x0500529C\nstatic const u16 hoot_seg5_animindex_0500529C[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0000, 0x0001, 0x0003, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x01DA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x01C6,\n    0x0001, 0x01C3, 0x0001, 0x01C4, 0x0001, 0x01C5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x0196,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x010A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x00F6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x0004,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x0018,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x016E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x011E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x002C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01C2,\n    0x0014, 0x0041, 0x0014, 0x0055, 0x0014, 0x0069,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0040,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01C1,\n    0x0014, 0x007E, 0x0014, 0x0092, 0x0014, 0x00A6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x007D,\n    0x0001, 0x01BE, 0x0001, 0x01BF, 0x0001, 0x01C0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x01AA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x0146,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x0132,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x00BA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x00CE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x0182,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x015A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x00E2,\n};\n\n// 0x050053EC\nstatic const struct Animation hoot_seg5_anim_050053EC = {\n    0,\n    0,\n    0,\n    0,\n    0x14,\n    ANIMINDEX_NUMPARTS(hoot_seg5_animindex_0500529C),\n    hoot_seg5_animvalue_05004EC0,\n    hoot_seg5_animindex_0500529C,\n    0,\n};\n"
  },
  {
    "path": "actors/hoot/anims/anim_05005750.inc.c",
    "content": "// 0x05005404\nstatic const s16 hoot_seg5_animvalue_05005404[] = {\n    0x0000, 0x0093, 0xFFFB, 0x3FFF, 0xF70A, 0x0F06, 0x257B, 0x0A1D,\n    0xEAD1, 0xE67A, 0xEA52, 0xEEE4, 0xF393, 0xF70A, 0xF01D, 0xF5E5,\n    0xF772, 0xE300, 0xCE4C, 0xC7DC, 0xC695, 0xCAA1, 0xDF10, 0xF01D,\n    0x3B13, 0x2120, 0xFD8F, 0xEF55, 0xEE13, 0xFA4C, 0x0CED, 0x1EF6,\n    0x30DE, 0x3B13, 0x061C, 0xEAAE, 0xEA96, 0xEA61, 0xEA2B, 0xEA13,\n    0xEA23, 0xEA4A, 0xEA77, 0xEA9E, 0xEAAE, 0x04DA, 0x04B8, 0x046F,\n    0x0426, 0x0405, 0x041B, 0x0450, 0x048F, 0x04C4, 0x04DA, 0xA148,\n    0x9FCC, 0x9C8A, 0x9947, 0x97CC, 0x98C8, 0x9B22, 0x9DF1, 0xA04B,\n    0xA148, 0x0415, 0x132D, 0x1346, 0x137C, 0x13B1, 0x13CA, 0x13B9,\n    0x1393, 0x1364, 0x133E, 0x132D, 0xFB3A, 0xFB5C, 0xFBA9, 0xFBF5,\n    0xFC18, 0xFC01, 0xFBCA, 0xFB88, 0xFB51, 0xFB3A, 0xA26B, 0xA10C,\n    0x9E08, 0x9B03, 0x99A4, 0x9A8E, 0x9CBB, 0x9F54, 0xA181, 0xA26B,\n    0xEFB4, 0x0EDE, 0x2D39, 0x0E1E, 0xE930, 0xE36A, 0xE6DD, 0xEAD1,\n    0xED96, 0xEFB4, 0xF28F, 0xF97C, 0xFBED, 0xE55B, 0xCEB4, 0xC8F3,\n    0xC930, 0xCE4C, 0xE238, 0xF28F, 0x39DA, 0x1F31, 0xFB1D, 0xEE70,\n    0xEE7C, 0xF9E6, 0x0B0C, 0x1C1C, 0x2EC0, 0x39DA, 0xF70A, 0x0F06,\n    0x257B, 0x0A1D, 0xEAD1, 0xE67A, 0xEA52, 0xEEE4, 0xF393, 0xF70A,\n    0xF01D, 0xF5E5, 0xF772, 0xE300, 0xCE4C, 0xC7DC, 0xC695, 0xCAA1,\n    0xDF10, 0xF01D, 0x3B13, 0x2120, 0xFD8F, 0xEF55, 0xEE13, 0xFA4C,\n    0x0CED, 0x1EF6, 0x30DE, 0x3B13, 0xEFB4, 0x0EDE, 0x2D39, 0x0E1E,\n    0xE930, 0xE36A, 0xE6DD, 0xEAD1, 0xED96, 0xEFB4, 0xF28F, 0xF97C,\n    0xFBED, 0xE55B, 0xCEB4, 0xC8F3, 0xC930, 0xCE4C, 0xE238, 0xF28F,\n    0x39DA, 0x1F31, 0xFB1D, 0xEE70, 0xEE7C, 0xF9E6, 0x0B0C, 0x1C1C,\n    0x2EC0, 0x39DA, 0x3B13, 0x2120, 0xFD8F, 0xEF55, 0xEE13, 0xFA4C,\n    0x0CED, 0x1EF6, 0x30DE, 0x3B13, 0x39DA, 0x1F31, 0xFB1D, 0xEE70,\n    0xEE7C, 0xF9E6, 0x0B0C, 0x1C1C, 0x2EC0, 0x39DA, 0x3B13, 0x2120,\n    0xFD8F, 0xEF55, 0xEE13, 0xFA4C, 0x0CED, 0x1EF6, 0x30DE, 0x3B13,\n    0x39DA, 0x1F31, 0xFB1D, 0xEE70, 0xEE7C, 0xF9E6, 0x0B0C, 0x1C1C,\n    0x2EC0, 0x39DA, 0xE495, 0x3FFF, 0x5B6E, 0xB6D9, 0xB6D9, 0x9B6D,\n    0xC001, 0xDB6D, 0xDA89, 0xD9A5, 0xD7AF, 0xD5B9, 0xD4D5, 0xD56D,\n    0xD6D7, 0xD887, 0xD9F1, 0xDA89, 0x640B, 0x64EF, 0x66E5, 0x68DB,\n    0x69BF, 0x6927, 0x67BD, 0x660D, 0x64A2, 0x640B,\n};\n\n// 0x05005600\nstatic const u16 hoot_seg5_animindex_05005600[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0000, 0x0001, 0x0003, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x00F4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x00EA,\n    0x0001, 0x00E7, 0x0001, 0x00E8, 0x0001, 0x00E9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x00CE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0088,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x007E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0004,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x000E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x00BA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0092,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0018,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00E6,\n    0x000A, 0x0023, 0x000A, 0x002D, 0x000A, 0x0037,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0022,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00E5,\n    0x000A, 0x0042, 0x000A, 0x004C, 0x000A, 0x0056,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0041,\n    0x0001, 0x00E2, 0x0001, 0x00E3, 0x0001, 0x00E4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x00D8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x00A6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x009C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0060,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x006A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x00C4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x00B0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0074,\n};\n\n// 0x05005750\nstatic const struct Animation hoot_seg5_anim_05005750 = {\n    0,\n    0,\n    0,\n    0,\n    0x0A,\n    ANIMINDEX_NUMPARTS(hoot_seg5_animindex_05005600),\n    hoot_seg5_animvalue_05005404,\n    hoot_seg5_animindex_05005600,\n    0,\n};\n"
  },
  {
    "path": "actors/hoot/anims/data.inc.c",
    "content": "#include \"anim_050053EC.inc.c\"\n#include \"anim_05005750.inc.c\"\n"
  },
  {
    "path": "actors/hoot/anims/table.inc.c",
    "content": "// 0x05005768\nconst struct Animation *const hoot_seg5_anims_05005768[] = {\n    &hoot_seg5_anim_050053EC,\n    &hoot_seg5_anim_05005750,\n};\n"
  },
  {
    "path": "actors/hoot/geo.inc.c",
    "content": "// 0x0C000018\nconst GeoLayout hoot_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xFF, 100),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 147, -5, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, hoot_seg5_dl_05004D48),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 96, 0, 0, hoot_seg5_dl_05001DF0),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 34, -35, 31, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, hoot_seg5_dl_05003728),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_ALPHA, 91, 0, 0, hoot_seg5_dl_050034D8),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_ALPHA, 121, 0, 0, hoot_seg5_dl_050033B0),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 121, 0, 0, NULL),\n                            GEO_CLOSE_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 91, 0, 0, NULL),\n                        GEO_CLOSE_NODE(),\n                        GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, hoot_seg5_dl_05003600),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -31, 5, 37, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, hoot_seg5_dl_05004A98),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 42, 0, 0, hoot_seg5_dl_05004928),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -31, 5, -37, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, hoot_seg5_dl_05004CA8),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 42, 0, 0, hoot_seg5_dl_05004B38),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 34, -35, -31, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, hoot_seg5_dl_05003288),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_ALPHA, 91, 0, 0, hoot_seg5_dl_05003038),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_ALPHA, 121, 0, 0, hoot_seg5_dl_05002F10),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 121, 0, 0, NULL),\n                            GEO_CLOSE_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 91, 0, 0, NULL),\n                        GEO_CLOSE_NODE(),\n                        GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, hoot_seg5_dl_05003160),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(), //! more close than open nodes\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/hoot/model.inc.c",
    "content": "// Hoot\n\n// 0x05000900\nstatic const Lights1 hoot_seg5_lights_05000900 = gdSPDefLights1(\n    0x30, 0x1b, 0x0f,\n    0xc0, 0x6e, 0x3d, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 hoot_lights_unused1 = gdSPDefLights1(\n    0x37, 0x27, 0x0b,\n    0xdd, 0x9d, 0x2d, 0x28, 0x28, 0x28\n);\n\n// 0x05000930\nstatic const Lights1 hoot_seg5_lights_05000930 = gdSPDefLights1(\n    0x36, 0x26, 0x11,\n    0xdb, 0x99, 0x46, 0x28, 0x28, 0x28\n);\n\n// 0x05000948\nstatic const Lights1 hoot_seg5_lights_05000948 = gdSPDefLights1(\n    0x06, 0x06, 0x06,\n    0x19, 0x19, 0x19, 0x28, 0x28, 0x28\n);\n\n// 0x05000960\nstatic const Lights1 hoot_seg5_lights_05000960 = gdSPDefLights1(\n    0x1d, 0x0a, 0x05,\n    0x77, 0x2a, 0x16, 0x28, 0x28, 0x28\n);\n\n// 0x05000978\nstatic const Lights1 hoot_seg5_lights_05000978 = gdSPDefLights1(\n    0x06, 0x06, 0x06,\n    0x19, 0x19, 0x19, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 hoot_lights_unused2 = gdSPDefLights1(\n    0x39, 0x27, 0x0a,\n    0xe6, 0x9d, 0x29, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 hoot_lights_unused3 = gdSPDefLights1(\n    0x1d, 0x06, 0x3b,\n    0x75, 0x18, 0xef, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 hoot_lights_unused4 = gdSPDefLights1(\n    0x3a, 0x29, 0x09,\n    0xeb, 0xa6, 0x27, 0x28, 0x28, 0x28\n);\n\n// 0x050009D8\nstatic const Lights1 hoot_seg5_lights_050009D8 = gdSPDefLights1(\n    0x18, 0x07, 0x03,\n    0x63, 0x1e, 0x0f, 0x28, 0x28, 0x28\n);\n\n// 0x050009F0\nstatic const Lights1 hoot_seg5_lights_050009F0 = gdSPDefLights1(\n    0x3f, 0x3a, 0x09,\n    0xfe, 0xea, 0x26, 0x28, 0x28, 0x28\n);\n\n// 0x05000A08\nstatic const Lights1 hoot_seg5_lights_05000A08 = gdSPDefLights1(\n    0x13, 0x0d, 0x0b,\n    0x4d, 0x35, 0x2e, 0x28, 0x28, 0x28\n);\n\n// 0x05000A20\nALIGNED8 static const Texture hoot_seg5_texture_05000A20[] = {\n#include \"actors/hoot/hoot_eyes.rgba16.inc.c\"\n};\n\n// 0x05001220\nstatic const Vtx hoot_seg5_vertex_05001220[] = {\n    {{{     8,     86,     22}, 0, {  1292,   1620}, {0xc8, 0x5e, 0x3f, 0x00}}},\n    {{{     1,     77,     65}, 0, {  1984,   1676}, {0xb2, 0x4d, 0x3e, 0x00}}},\n    {{{    89,     76,     57}, 0, {  1892,    256}, {0x0f, 0x6e, 0x3b, 0x00}}},\n    {{{    89,     76,    -56}, 0, {    72,    280}, {0x19, 0x68, 0xbd, 0x00}}},\n    {{{    40,     94,      0}, 0, {   956,   1164}, {0x37, 0x72, 0x00, 0x00}}},\n    {{{    89,     76,     57}, 0, {  1892,    256}, {0x0f, 0x6e, 0x3b, 0x00}}},\n    {{{     8,     86,    -21}, 0, {   596,   1628}, {0xd7, 0x5b, 0xb3, 0x00}}},\n    {{{    40,     94,      0}, 0, {   956,   1164}, {0x37, 0x72, 0x00, 0x00}}},\n    {{{    89,     76,    -56}, 0, {    72,    280}, {0x19, 0x68, 0xbd, 0x00}}},\n    {{{    89,     76,    -56}, 0, {    72,    280}, {0x19, 0x68, 0xbd, 0x00}}},\n    {{{     1,     77,    -64}, 0, {  -100,   1704}, {0xa1, 0x46, 0xd4, 0x00}}},\n    {{{     8,     86,    -21}, 0, {   596,   1628}, {0xd7, 0x5b, 0xb3, 0x00}}},\n    {{{     8,     86,     22}, 0, {  1292,   1620}, {0xc8, 0x5e, 0x3f, 0x00}}},\n    {{{    89,     76,     57}, 0, {  1892,    256}, {0x0f, 0x6e, 0x3b, 0x00}}},\n    {{{    40,     94,      0}, 0, {   956,   1164}, {0x37, 0x72, 0x00, 0x00}}},\n};\n\n// 0x05001310\nstatic const Vtx hoot_seg5_vertex_05001310[] = {\n    {{{    39,    120,      0}, 0, {     0,      0}, {0x49, 0x67, 0xfe, 0x00}}},\n    {{{   -10,    111,      0}, 0, {     0,      0}, {0x94, 0x41, 0xff, 0x00}}},\n    {{{     8,     86,     22}, 0, {     0,      0}, {0xc8, 0x5e, 0x3f, 0x00}}},\n    {{{     8,     86,     22}, 0, {     0,      0}, {0xc8, 0x5e, 0x3f, 0x00}}},\n    {{{    40,     94,      0}, 0, {     0,      0}, {0x37, 0x72, 0x00, 0x00}}},\n    {{{    39,    120,      0}, 0, {     0,      0}, {0x49, 0x67, 0xfe, 0x00}}},\n    {{{     8,     86,    -21}, 0, {     0,      0}, {0xd7, 0x5b, 0xb3, 0x00}}},\n    {{{    39,    120,      0}, 0, {     0,      0}, {0x49, 0x67, 0xfe, 0x00}}},\n    {{{    40,     94,      0}, 0, {     0,      0}, {0x37, 0x72, 0x00, 0x00}}},\n    {{{     8,     86,    -21}, 0, {     0,      0}, {0xd7, 0x5b, 0xb3, 0x00}}},\n    {{{   -10,    111,      0}, 0, {     0,      0}, {0x94, 0x41, 0xff, 0x00}}},\n    {{{    39,    120,      0}, 0, {     0,      0}, {0x49, 0x67, 0xfe, 0x00}}},\n};\n\n// 0x050013D0\nstatic const Vtx hoot_seg5_vertex_050013D0[] = {\n    {{{     8,     86,    -21}, 0, {     0,      0}, {0xd7, 0x5b, 0xb3, 0x00}}},\n    {{{     8,     86,     22}, 0, {     0,      0}, {0xc8, 0x5e, 0x3f, 0x00}}},\n    {{{   -10,    111,      0}, 0, {     0,      0}, {0x94, 0x41, 0xff, 0x00}}},\n};\n\n// 0x05001400\nstatic const Vtx hoot_seg5_vertex_05001400[] = {\n    {{{    -8,    -82,     44}, 0, {     0,      0}, {0x8d, 0xcf, 0x0e, 0x00}}},\n    {{{    -8,    -82,    -43}, 0, {     0,      0}, {0xa4, 0xab, 0xf1, 0x00}}},\n    {{{    69,    -83,     35}, 0, {     0,      0}, {0x26, 0x8c, 0x20, 0x00}}},\n    {{{    -8,    -82,    -43}, 0, {     0,      0}, {0xa4, 0xab, 0xf1, 0x00}}},\n    {{{    69,    -83,    -34}, 0, {     0,      0}, {0x25, 0x90, 0xd3, 0x00}}},\n    {{{    69,    -83,     35}, 0, {     0,      0}, {0x26, 0x8c, 0x20, 0x00}}},\n    {{{     1,     77,    -64}, 0, {     0,      0}, {0xa1, 0x46, 0xd4, 0x00}}},\n    {{{    -8,    -82,    -43}, 0, {     0,      0}, {0xa4, 0xab, 0xf1, 0x00}}},\n    {{{    -8,    -82,     44}, 0, {     0,      0}, {0x8d, 0xcf, 0x0e, 0x00}}},\n    {{{    69,    -83,    -34}, 0, {     0,      0}, {0x25, 0x90, 0xd3, 0x00}}},\n    {{{    -8,    -82,    -43}, 0, {     0,      0}, {0xa4, 0xab, 0xf1, 0x00}}},\n    {{{    -3,    -55,    -96}, 0, {     0,      0}, {0xf8, 0xc9, 0x8e, 0x00}}},\n    {{{    -3,     33,    -87}, 0, {     0,      0}, {0xb0, 0x1e, 0xa3, 0x00}}},\n    {{{    -3,    -55,    -96}, 0, {     0,      0}, {0xf8, 0xc9, 0x8e, 0x00}}},\n    {{{    -8,    -82,    -43}, 0, {     0,      0}, {0xa4, 0xab, 0xf1, 0x00}}},\n};\n\n// 0x050014F0\nstatic const Vtx hoot_seg5_vertex_050014F0[] = {\n    {{{    -8,    -82,    -43}, 0, {     0,      0}, {0xa4, 0xab, 0xf1, 0x00}}},\n    {{{     1,     77,    -64}, 0, {     0,      0}, {0xa1, 0x46, 0xd4, 0x00}}},\n    {{{    -3,     33,    -87}, 0, {     0,      0}, {0xb0, 0x1e, 0xa3, 0x00}}},\n    {{{   122,    -45,    -35}, 0, {     0,      0}, {0x66, 0xbb, 0xe2, 0x00}}},\n    {{{    69,    -83,    -34}, 0, {     0,      0}, {0x25, 0x90, 0xd3, 0x00}}},\n    {{{    81,    -44,    -72}, 0, {     0,      0}, {0x3b, 0xd3, 0x9a, 0x00}}},\n    {{{    81,    -44,    -72}, 0, {     0,      0}, {0x3b, 0xd3, 0x9a, 0x00}}},\n    {{{    69,    -83,    -34}, 0, {     0,      0}, {0x25, 0x90, 0xd3, 0x00}}},\n    {{{    -3,    -55,    -96}, 0, {     0,      0}, {0xf8, 0xc9, 0x8e, 0x00}}},\n    {{{    69,    -83,     35}, 0, {     0,      0}, {0x26, 0x8c, 0x20, 0x00}}},\n    {{{    69,    -83,    -34}, 0, {     0,      0}, {0x25, 0x90, 0xd3, 0x00}}},\n    {{{   122,    -45,    -35}, 0, {     0,      0}, {0x66, 0xbb, 0xe2, 0x00}}},\n    {{{    -3,    -55,     97}, 0, {     0,      0}, {0xf8, 0xc9, 0x72, 0x00}}},\n    {{{    69,    -83,     35}, 0, {     0,      0}, {0x26, 0x8c, 0x20, 0x00}}},\n    {{{    81,    -44,     73}, 0, {     0,      0}, {0x3b, 0xd3, 0x66, 0x00}}},\n};\n\n// 0x050015E0\nstatic const Vtx hoot_seg5_vertex_050015E0[] = {\n    {{{    81,    -44,     73}, 0, {     0,      0}, {0x3b, 0xd3, 0x66, 0x00}}},\n    {{{    69,    -83,     35}, 0, {     0,      0}, {0x26, 0x8c, 0x20, 0x00}}},\n    {{{   122,    -45,     36}, 0, {     0,      0}, {0x60, 0xbd, 0x2d, 0x00}}},\n    {{{   122,    -45,     36}, 0, {     0,      0}, {0x60, 0xbd, 0x2d, 0x00}}},\n    {{{    69,    -83,     35}, 0, {     0,      0}, {0x26, 0x8c, 0x20, 0x00}}},\n    {{{   122,    -45,    -35}, 0, {     0,      0}, {0x66, 0xbb, 0xe2, 0x00}}},\n    {{{    -3,    -55,     97}, 0, {     0,      0}, {0xf8, 0xc9, 0x72, 0x00}}},\n    {{{    -8,    -82,     44}, 0, {     0,      0}, {0x8d, 0xcf, 0x0e, 0x00}}},\n    {{{    69,    -83,     35}, 0, {     0,      0}, {0x26, 0x8c, 0x20, 0x00}}},\n    {{{   135,     24,    -43}, 0, {     0,      0}, {0x65, 0x05, 0xb5, 0x00}}},\n    {{{   131,     93,    -14}, 0, {     0,      0}, {0x4c, 0x60, 0xe2, 0x00}}},\n    {{{   135,     24,     44}, 0, {     0,      0}, {0x71, 0x01, 0x39, 0x00}}},\n    {{{   135,     24,    -43}, 0, {     0,      0}, {0x65, 0x05, 0xb5, 0x00}}},\n    {{{   135,     24,     44}, 0, {     0,      0}, {0x71, 0x01, 0x39, 0x00}}},\n    {{{   122,    -45,    -35}, 0, {     0,      0}, {0x66, 0xbb, 0xe2, 0x00}}},\n};\n\n// 0x050016D0\nstatic const Vtx hoot_seg5_vertex_050016D0[] = {\n    {{{   135,     24,     44}, 0, {     0,      0}, {0x71, 0x01, 0x39, 0x00}}},\n    {{{   122,    -45,     36}, 0, {     0,      0}, {0x60, 0xbd, 0x2d, 0x00}}},\n    {{{   122,    -45,    -35}, 0, {     0,      0}, {0x66, 0xbb, 0xe2, 0x00}}},\n    {{{    81,    -44,     73}, 0, {     0,      0}, {0x3b, 0xd3, 0x66, 0x00}}},\n    {{{   122,    -45,     36}, 0, {     0,      0}, {0x60, 0xbd, 0x2d, 0x00}}},\n    {{{   135,     24,     44}, 0, {     0,      0}, {0x71, 0x01, 0x39, 0x00}}},\n    {{{   135,     24,    -43}, 0, {     0,      0}, {0x65, 0x05, 0xb5, 0x00}}},\n    {{{   122,    -45,    -35}, 0, {     0,      0}, {0x66, 0xbb, 0xe2, 0x00}}},\n    {{{    81,    -44,    -72}, 0, {     0,      0}, {0x3b, 0xd3, 0x9a, 0x00}}},\n    {{{   131,     93,     15}, 0, {     0,      0}, {0x4f, 0x56, 0x2f, 0x00}}},\n    {{{    89,     76,     57}, 0, {     0,      0}, {0x0f, 0x6e, 0x3b, 0x00}}},\n    {{{   135,     24,     44}, 0, {     0,      0}, {0x71, 0x01, 0x39, 0x00}}},\n    {{{    81,    -44,     73}, 0, {     0,      0}, {0x3b, 0xd3, 0x66, 0x00}}},\n    {{{   135,     24,     44}, 0, {     0,      0}, {0x71, 0x01, 0x39, 0x00}}},\n    {{{    86,     27,     73}, 0, {     0,      0}, {0x25, 0x16, 0x77, 0x00}}},\n};\n\n// 0x050017C0\nstatic const Vtx hoot_seg5_vertex_050017C0[] = {\n    {{{    86,     27,     73}, 0, {     0,      0}, {0x25, 0x16, 0x77, 0x00}}},\n    {{{     1,     77,     65}, 0, {     0,      0}, {0xb2, 0x4d, 0x3e, 0x00}}},\n    {{{    -3,     33,     88}, 0, {     0,      0}, {0xb0, 0x1e, 0x5d, 0x00}}},\n    {{{    -3,     33,     88}, 0, {     0,      0}, {0xb0, 0x1e, 0x5d, 0x00}}},\n    {{{    -3,    -55,     97}, 0, {     0,      0}, {0xf8, 0xc9, 0x72, 0x00}}},\n    {{{    86,     27,     73}, 0, {     0,      0}, {0x25, 0x16, 0x77, 0x00}}},\n    {{{   135,     24,     44}, 0, {     0,      0}, {0x71, 0x01, 0x39, 0x00}}},\n    {{{    89,     76,     57}, 0, {     0,      0}, {0x0f, 0x6e, 0x3b, 0x00}}},\n    {{{    86,     27,     73}, 0, {     0,      0}, {0x25, 0x16, 0x77, 0x00}}},\n    {{{    -3,    -55,     97}, 0, {     0,      0}, {0xf8, 0xc9, 0x72, 0x00}}},\n    {{{    81,    -44,     73}, 0, {     0,      0}, {0x3b, 0xd3, 0x66, 0x00}}},\n    {{{    86,     27,     73}, 0, {     0,      0}, {0x25, 0x16, 0x77, 0x00}}},\n    {{{    86,     27,     73}, 0, {     0,      0}, {0x25, 0x16, 0x77, 0x00}}},\n    {{{    89,     76,     57}, 0, {     0,      0}, {0x0f, 0x6e, 0x3b, 0x00}}},\n    {{{     1,     77,     65}, 0, {     0,      0}, {0xb2, 0x4d, 0x3e, 0x00}}},\n};\n\n// 0x050018B0\nstatic const Vtx hoot_seg5_vertex_050018B0[] = {\n    {{{    89,     76,     57}, 0, {     0,      0}, {0x0f, 0x6e, 0x3b, 0x00}}},\n    {{{   131,     93,    -14}, 0, {     0,      0}, {0x4c, 0x60, 0xe2, 0x00}}},\n    {{{    89,     76,    -56}, 0, {     0,      0}, {0x19, 0x68, 0xbd, 0x00}}},\n    {{{    89,     76,     57}, 0, {     0,      0}, {0x0f, 0x6e, 0x3b, 0x00}}},\n    {{{   131,     93,     15}, 0, {     0,      0}, {0x4f, 0x56, 0x2f, 0x00}}},\n    {{{   131,     93,    -14}, 0, {     0,      0}, {0x4c, 0x60, 0xe2, 0x00}}},\n    {{{     1,     77,     65}, 0, {     0,      0}, {0xb2, 0x4d, 0x3e, 0x00}}},\n    {{{     8,     86,     22}, 0, {     0,      0}, {0xc8, 0x5e, 0x3f, 0x00}}},\n    {{{     1,     77,    -64}, 0, {     0,      0}, {0xa1, 0x46, 0xd4, 0x00}}},\n    {{{     1,     77,     65}, 0, {     0,      0}, {0xb2, 0x4d, 0x3e, 0x00}}},\n    {{{     1,     77,    -64}, 0, {     0,      0}, {0xa1, 0x46, 0xd4, 0x00}}},\n    {{{    -8,    -82,     44}, 0, {     0,      0}, {0x8d, 0xcf, 0x0e, 0x00}}},\n    {{{    -3,     33,     88}, 0, {     0,      0}, {0xb0, 0x1e, 0x5d, 0x00}}},\n    {{{     1,     77,     65}, 0, {     0,      0}, {0xb2, 0x4d, 0x3e, 0x00}}},\n    {{{    -8,    -82,     44}, 0, {     0,      0}, {0x8d, 0xcf, 0x0e, 0x00}}},\n};\n\n// 0x050019A0\nstatic const Vtx hoot_seg5_vertex_050019A0[] = {\n    {{{   131,     93,    -14}, 0, {     0,      0}, {0x4c, 0x60, 0xe2, 0x00}}},\n    {{{   131,     93,     15}, 0, {     0,      0}, {0x4f, 0x56, 0x2f, 0x00}}},\n    {{{   135,     24,     44}, 0, {     0,      0}, {0x71, 0x01, 0x39, 0x00}}},\n    {{{    -8,    -82,     44}, 0, {     0,      0}, {0x8d, 0xcf, 0x0e, 0x00}}},\n    {{{    -3,    -55,     97}, 0, {     0,      0}, {0xf8, 0xc9, 0x72, 0x00}}},\n    {{{    -3,     33,     88}, 0, {     0,      0}, {0xb0, 0x1e, 0x5d, 0x00}}},\n    {{{   135,     24,    -43}, 0, {     0,      0}, {0x65, 0x05, 0xb5, 0x00}}},\n    {{{    89,     76,    -56}, 0, {     0,      0}, {0x19, 0x68, 0xbd, 0x00}}},\n    {{{   131,     93,    -14}, 0, {     0,      0}, {0x4c, 0x60, 0xe2, 0x00}}},\n    {{{    -3,     33,    -87}, 0, {     0,      0}, {0xb0, 0x1e, 0xa3, 0x00}}},\n    {{{     1,     77,    -64}, 0, {     0,      0}, {0xa1, 0x46, 0xd4, 0x00}}},\n    {{{    86,     27,    -72}, 0, {     0,      0}, {0x25, 0x16, 0x89, 0x00}}},\n    {{{     8,     86,     22}, 0, {     0,      0}, {0xc8, 0x5e, 0x3f, 0x00}}},\n    {{{     8,     86,    -21}, 0, {     0,      0}, {0xd7, 0x5b, 0xb3, 0x00}}},\n    {{{     1,     77,    -64}, 0, {     0,      0}, {0xa1, 0x46, 0xd4, 0x00}}},\n};\n\n// 0x05001A90\nstatic const Vtx hoot_seg5_vertex_05001A90[] = {\n    {{{     1,     77,    -64}, 0, {     0,      0}, {0xa1, 0x46, 0xd4, 0x00}}},\n    {{{    89,     76,    -56}, 0, {     0,      0}, {0x19, 0x68, 0xbd, 0x00}}},\n    {{{    86,     27,    -72}, 0, {     0,      0}, {0x25, 0x16, 0x89, 0x00}}},\n    {{{    86,     27,    -72}, 0, {     0,      0}, {0x25, 0x16, 0x89, 0x00}}},\n    {{{    89,     76,    -56}, 0, {     0,      0}, {0x19, 0x68, 0xbd, 0x00}}},\n    {{{   135,     24,    -43}, 0, {     0,      0}, {0x65, 0x05, 0xb5, 0x00}}},\n    {{{    -3,    -55,    -96}, 0, {     0,      0}, {0xf8, 0xc9, 0x8e, 0x00}}},\n    {{{    86,     27,    -72}, 0, {     0,      0}, {0x25, 0x16, 0x89, 0x00}}},\n    {{{    81,    -44,    -72}, 0, {     0,      0}, {0x3b, 0xd3, 0x9a, 0x00}}},\n    {{{    86,     27,    -72}, 0, {     0,      0}, {0x25, 0x16, 0x89, 0x00}}},\n    {{{   135,     24,    -43}, 0, {     0,      0}, {0x65, 0x05, 0xb5, 0x00}}},\n    {{{    81,    -44,    -72}, 0, {     0,      0}, {0x3b, 0xd3, 0x9a, 0x00}}},\n    {{{    -3,    -55,    -96}, 0, {     0,      0}, {0xf8, 0xc9, 0x8e, 0x00}}},\n    {{{    -3,     33,    -87}, 0, {     0,      0}, {0xb0, 0x1e, 0xa3, 0x00}}},\n    {{{    86,     27,    -72}, 0, {     0,      0}, {0x25, 0x16, 0x89, 0x00}}},\n};\n\n// 0x05001B80 - 0x05001C00\nconst Gfx hoot_seg5_dl_05001B80[] = {\n    gsDPLoadTextureBlock(hoot_seg5_texture_05000A20, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 5, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPLight(&hoot_seg5_lights_050009D8.l, 1),\n    gsSPLight(&hoot_seg5_lights_050009D8.a, 2),\n    gsSPVertex(hoot_seg5_vertex_05001220, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05001C00 - 0x05001DF0\nconst Gfx hoot_seg5_dl_05001C00[] = {\n    gsSPLight(&hoot_seg5_lights_050009F0.l, 1),\n    gsSPLight(&hoot_seg5_lights_050009F0.a, 2),\n    gsSPVertex(hoot_seg5_vertex_05001310, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPLight(&hoot_seg5_lights_05000A08.l, 1),\n    gsSPLight(&hoot_seg5_lights_05000A08.a, 2),\n    gsSPVertex(hoot_seg5_vertex_050013D0, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPLight(&hoot_seg5_lights_050009D8.l, 1),\n    gsSPLight(&hoot_seg5_lights_050009D8.a, 2),\n    gsSPVertex(hoot_seg5_vertex_05001400, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(hoot_seg5_vertex_050014F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(hoot_seg5_vertex_050015E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(hoot_seg5_vertex_050016D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(hoot_seg5_vertex_050017C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(hoot_seg5_vertex_050018B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(hoot_seg5_vertex_050019A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(hoot_seg5_vertex_05001A90, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05001DF0 - 0x05001E38\nconst Gfx hoot_seg5_dl_05001DF0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBA, G_CC_BLENDRGBA),\n    gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),\n    gsSPDisplayList(hoot_seg5_dl_05001B80),\n    gsSPTexture(0x8000, 0x8000, 1, G_TX_RENDERTILE + 1, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(hoot_seg5_dl_05001C00),\n    gsSPEndDisplayList(),\n};\n\n// 0x05001E38\nstatic const Lights1 hoot_seg5_lights_05001E38 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05001E50\nALIGNED8 static const Texture hoot_seg5_texture_05001E50[] = {\n#include \"actors/hoot/hoot_wing.rgba16.inc.c\"\n};\n\n// 0x05002650\nALIGNED8 static const Texture hoot_seg5_texture_05002650[] = {\n#include \"actors/hoot/hoot_wing_tip.rgba16.inc.c\"\n};\n\n// //! The vertex macro which calls this has too large of a size.\n// 0x05002E50\nstatic const Vtx hoot_seg5_vertex_05002E50[] = {\n    {{{   126,      0,    -62}, 0, {  1780,    228}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{     0,      0,    -87}, 0, {   296,    -56}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   168,      0,    125}, 0, {  2288,   2352}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{     0,      0,    -87}, 0, {   296,    -56}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{     0,      0,     78}, 0, {   304,   1824}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   168,      0,    125}, 0, {  2288,   2352}, {0x00, 0x7f, 0x00, 0x00}}},\n};\n\n// vertex   -752,      0,   1280,  -2800,      0,  0x07, 0x00, 0x00, 0x00\n// vertex  -6656,      0,      0,  -3328,      0,  0x07, 0x3F, 0xF1, 0x00\n// vertex  -2800,   4096,      0,  -3584,      0,  0x00, 0x07, 0xC0, 0x7C\n// vertex    902,     16,   1280,    904,     16,  0x05, 0x00, 0x1E, 0x38\n// vertex   1200,    192,   1280, -16640,      0,  0x00, 0x00, 0x0A, 0x14\n// vertex -16640,      0,     30, -18432,      0,  0x00, 0x00, 0x00, 0x00\n\n// 0x05002EB0 - 0x05002F10\nconst Gfx hoot_seg5_dl_05002EB0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, hoot_seg5_texture_05002650),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPLight(&hoot_seg5_lights_05001E38.l, 1),\n    gsSPLight(&hoot_seg5_lights_05001E38.a, 2),\n    gsSPVertex(hoot_seg5_vertex_05002E50, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05002F10 - 0x05002F60\nconst Gfx hoot_seg5_dl_05002F10[] = {\n    gsDPPipeSync(),\n    gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsSPDisplayList(hoot_seg5_dl_05002EB0),\n    gsSPTexture(0x8000, 0x8000, 1, G_TX_RENDERTILE + 1, G_OFF),\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x05002F60\nstatic const Lights1 hoot_seg5_lights_05002F60 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// //! The vertex macro which calls this has too large of a size.\n// 0x05002F78\nstatic const Vtx hoot_seg5_vertex_05002F78[] = {\n    {{{   119,      0,    -85}, 0, {  1972,     68}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{     0,      0,     96}, 0, {   964,   2040}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   119,      0,     77}, 0, {  1976,   1840}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   119,      0,    -85}, 0, {  1972,     68}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{     0,      0,    -47}, 0, {   960,    484}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{     0,      0,     96}, 0, {   964,   2040}, {0x00, 0x7f, 0x00, 0x00}}},\n};\n\n// vertex   -752,      0,   1280,  -2800,      0,  0x07, 0x00, 0x00, 0x00\n// vertex  -6656,      0,      0,  -3328,      0,  0x07, 0x3F, 0xF1, 0x00\n// vertex  -2800,   4096,      0,  -3584,      0,  0x00, 0x07, 0xC0, 0x7C\n// vertex    902,     16,   1280,    904,     16,  0x05, 0x00, 0x2F, 0x60\n// vertex   1200,    192,   1280, -16640,      0,  0x00, 0x00, 0x0A, 0x14\n// vertex -16640,      0,     30, -18432,      0,  0x00, 0x00, 0x00, 0x00\n\n// 0x05002FD8 - 0x05003038\nconst Gfx hoot_seg5_dl_05002FD8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, hoot_seg5_texture_05001E50),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPLight(&hoot_seg5_lights_05002F60.l, 1),\n    gsSPLight(&hoot_seg5_lights_05002F60.a, 2),\n    gsSPVertex(hoot_seg5_vertex_05002F78, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003038 - 0x05003088\nconst Gfx hoot_seg5_dl_05003038[] = {\n    gsDPPipeSync(),\n    gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsSPDisplayList(hoot_seg5_dl_05002FD8),\n    gsSPTexture(0x8000, 0x8000, 1, G_TX_RENDERTILE + 1, G_OFF),\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003088\nstatic const Lights1 hoot_seg5_lights_05003088 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// //! The vertex macro which calls this has too large of a size.\n// 0x050030A0\nstatic const Vtx hoot_seg5_vertex_050030A0[] = {\n    {{{    89,      1,    -46}, 0, {   928,    456}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{    37,      1,    -66}, 0, {   352,    216}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{    89,      1,     95}, 0, {   924,   2076}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{    37,      1,    -66}, 0, {   352,    216}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{    37,      1,     29}, 0, {   348,   1324}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{    89,      1,     95}, 0, {   924,   2076}, {0x00, 0x7f, 0x00, 0x00}}},\n};\n\n// vertex   -752,      0,   1280,  -2800,      0,  0x07, 0x00, 0x00, 0x00\n// vertex  -6656,      0,      0,  -3328,      0,  0x07, 0x3F, 0xF1, 0x00\n// vertex  -2800,   4096,      0,  -3584,      0,  0x00, 0x07, 0xC0, 0x7C\n// vertex    902,     16,   1280,    904,     16,  0x05, 0x00, 0x30, 0x88\n// vertex   1200,    192,   1280, -16640,      0,  0x00, 0x00, 0x0A, 0x14\n// vertex -16640,      0,     30, -18432,      0,  0x00, 0x00, 0x00, 0x00\n\n// 0x05003100 - 0x05003160\nconst Gfx hoot_seg5_dl_05003100[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, hoot_seg5_texture_05001E50),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPLight(&hoot_seg5_lights_05003088.l, 1),\n    gsSPLight(&hoot_seg5_lights_05003088.a, 2),\n    gsSPVertex(hoot_seg5_vertex_050030A0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003160 - 0x050031B0\nconst Gfx hoot_seg5_dl_05003160[] = {\n    gsDPPipeSync(),\n    gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsSPDisplayList(hoot_seg5_dl_05003100),\n    gsSPTexture(0x8000, 0x8000, 1, G_TX_RENDERTILE + 1, G_OFF),\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x050031B0\nstatic const Lights1 hoot_seg5_lights_050031B0 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// //! The vertex macro which calls this has too large of a size.\n// 0x050031C8\nstatic const Vtx hoot_seg5_vertex_050031C8[] = {\n    {{{    37,      1,    -66}, 0, {   380,    184}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{     2,      1,    -39}, 0, {     0,    528}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{    37,      1,     28}, 0, {   400,   1356}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{     2,      1,    -39}, 0, {     0,    528}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{     1,      1,     72}, 0, {   -56,   1904}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{    37,      1,     28}, 0, {   400,   1356}, {0x00, 0x7f, 0x00, 0x00}}},\n};\n\n// vertex   -752,      0,   1280,  -2800,      0,  0x07, 0x00, 0x00, 0x00\n// vertex  -6656,      0,      0,  -3328,      0,  0x07, 0x3F, 0xF1, 0x00\n// vertex  -2800,   4096,      0,  -3584,      0,  0x00, 0x07, 0xC0, 0x7C\n// vertex    902,     16,   1280,    904,     16,  0x05, 0x00, 0x31, 0xB0\n// vertex   1200,    192,   1280, -16640,      0,  0x00, 0x00, 0x0A, 0x14\n// vertex -16640,      0,     30, -18432,      0,  0x00, 0x00, 0x00, 0x00\n\n// 0x05003228 - 0x05003288\nconst Gfx hoot_seg5_dl_05003228[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, hoot_seg5_texture_05001E50),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPLight(&hoot_seg5_lights_050031B0.l, 1),\n    gsSPLight(&hoot_seg5_lights_050031B0.a, 2),\n    gsSPVertex(hoot_seg5_vertex_050031C8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003288 - 0x050032D8\nconst Gfx hoot_seg5_dl_05003288[] = {\n    gsDPPipeSync(),\n    gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsSPDisplayList(hoot_seg5_dl_05003228),\n    gsSPTexture(0x8000, 0x8000, 1, G_TX_RENDERTILE + 1, G_OFF),\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x050032D8\nstatic const Lights1 hoot_seg5_lights_050032D8 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// //! The vertex macro which calls this has too large of a size.\n// 0x050032F0\nstatic const Vtx hoot_seg5_vertex_050032F0[] = {\n    {{{   168,      0,   -124}, 0, {  2340,   2408}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{     0,      0,     88}, 0, {   424,     -4}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   126,      0,     63}, 0, {  1920,    276}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   168,      0,   -124}, 0, {  2340,   2408}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{     0,      0,    -77}, 0, {   348,   1884}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{     0,      0,     88}, 0, {   424,     -4}, {0x00, 0x7f, 0x00, 0x00}}},\n};\n\n// vertex   -752,      0,   1280,  -2800,      0,  0x07, 0x00, 0x00, 0x00\n// vertex  -6656,      0,      0,  -3328,      0,  0x07, 0x3F, 0xF1, 0x00\n// vertex  -2800,   4096,      0,  -3584,      0,  0x00, 0x07, 0xC0, 0x7C\n// vertex    902,     16,   1280,    904,     16,  0x05, 0x00, 0x32, 0xD8\n// vertex   1200,    192,   1280, -16640,      0,  0x00, 0x00, 0x0A, 0x14\n// vertex -16640,      0,     30, -18432,      0,  0x00, 0x00, 0x00, 0x00\n\n// 0x05003350 - 0x050033B0\nconst Gfx hoot_seg5_dl_05003350[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, hoot_seg5_texture_05002650),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPLight(&hoot_seg5_lights_050032D8.l, 1),\n    gsSPLight(&hoot_seg5_lights_050032D8.a, 2),\n    gsSPVertex(hoot_seg5_vertex_050032F0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050033B0 - 0x05003400\nconst Gfx hoot_seg5_dl_050033B0[] = {\n    gsDPPipeSync(),\n    gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsSPDisplayList(hoot_seg5_dl_05003350),\n    gsSPTexture(0x8000, 0x8000, 1, G_TX_RENDERTILE + 1, G_OFF),\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003400\nstatic const Lights1 hoot_seg5_lights_05003400 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// //! The vertex macro which calls this has too large of a size.\n// 0x05003418\nstatic const Vtx hoot_seg5_vertex_05003418[] = {\n    {{{   119,      0,    -76}, 0, {  1988,   1892}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{     0,      0,    -95}, 0, {  1000,   2096}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   119,      0,     86}, 0, {  1984,     36}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{     0,      0,    -95}, 0, {  1000,   2096}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{     0,      0,     48}, 0, {  1000,    468}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   119,      0,     86}, 0, {  1984,     36}, {0x00, 0x7f, 0x00, 0x00}}},\n};\n\n// vertex   -752,      0,   1280,  -2800,      0,  0x07, 0x00, 0x00, 0x00\n// vertex  -6656,      0,      0,  -3328,      0,  0x07, 0x3F, 0xF1, 0x00\n// vertex  -2800,   4096,      0,  -3584,      0,  0x00, 0x07, 0xC0, 0x7C\n// vertex    902,     16,   1280,    904,     16,  0x05, 0x00, 0x34, 0x00\n// vertex   1200,    192,   1280, -16640,      0,  0x00, 0x00, 0x0A, 0x14\n// vertex -16640,      0,     30, -18432,      0,  0x00, 0x00, 0x00, 0x00\n\n// 0x05003478 - 0x050034D8\nconst Gfx hoot_seg5_dl_05003478[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, hoot_seg5_texture_05001E50),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPLight(&hoot_seg5_lights_05003400.l, 1),\n    gsSPLight(&hoot_seg5_lights_05003400.a, 2),\n    gsSPVertex(hoot_seg5_vertex_05003418, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050034D8 - 0x05003528\nconst Gfx hoot_seg5_dl_050034D8[] = {\n    gsDPPipeSync(),\n    gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsSPDisplayList(hoot_seg5_dl_05003478),\n    gsSPTexture(0x8000, 0x8000, 1, G_TX_RENDERTILE + 1, G_OFF),\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003528\nstatic const Lights1 hoot_seg5_lights_05003528 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// //! The vertex macro which calls this has too large of a size.\n// 0x05003540\nstatic const Vtx hoot_seg5_vertex_05003540[] = {\n    {{{    89,      1,    -94}, 0, {   984,   2096}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{    37,      1,     67}, 0, {   368,    192}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{    89,      1,     47}, 0, {   992,    436}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{    89,      1,    -94}, 0, {   984,   2096}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{    37,      1,    -28}, 0, {   360,   1324}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{    37,      1,     67}, 0, {   368,    192}, {0x00, 0x7f, 0x00, 0x00}}},\n};\n\n// vertex   -752,      0,   1280,  -2800,      0,  0x07, 0x00, 0x00, 0x00\n// vertex  -6656,      0,      0,  -3328,      0,  0x07, 0x3F, 0xF1, 0x00\n// vertex  -2800,   4096,      0,  -3584,      0,  0x00, 0x07, 0xC0, 0x7C\n// vertex    902,     16,   1280,    904,     16,  0x05, 0x00, 0x35, 0x28\n// vertex   1200,    192,   1280, -16640,      0,  0x00, 0x00, 0x0A, 0x14\n// vertex -16640,      0,     30, -18432,      0,  0x00, 0x00, 0x00, 0x00\n\n// 0x050035A0 - 0x05003600\nconst Gfx hoot_seg5_dl_050035A0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, hoot_seg5_texture_05001E50),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPLight(&hoot_seg5_lights_05003528.l, 1),\n    gsSPLight(&hoot_seg5_lights_05003528.a, 2),\n    gsSPVertex(hoot_seg5_vertex_05003540, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003600 - 0x05003650\nconst Gfx hoot_seg5_dl_05003600[] = {\n    gsDPPipeSync(),\n    gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsSPDisplayList(hoot_seg5_dl_050035A0),\n    gsSPTexture(0x8000, 0x8000, 1, G_TX_RENDERTILE + 1, G_OFF),\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003650\nstatic const Lights1 hoot_seg5_lights_05003650 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// //! The vertex macro which calls this has too large of a size.\n// 0x05003668\nstatic const Vtx hoot_seg5_vertex_05003668[] = {\n    {{{    37,      1,    -27}, 0, {   428,   1324}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{     2,      1,     40}, 0, {   -24,    512}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{    37,      1,     67}, 0, {   432,    180}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{    37,      1,    -27}, 0, {   428,   1324}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{     1,      1,    -71}, 0, {   -40,   1848}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{     2,      1,     40}, 0, {   -24,    512}, {0x00, 0x7f, 0x00, 0x00}}},\n};\n\n// vertex   -752,      0,   1280,  -2800,      0,  0x07, 0x00, 0x00, 0x00\n// vertex  -6656,      0,      0,  -3328,      0,  0x07, 0x3F, 0xF1, 0x00\n// vertex  -2800,   4096,      0,  -3584,      0,  0x00, 0x07, 0xC0, 0x7C\n// vertex    902,     16,   1280,    904,     16,  0x05, 0x00, 0x36, 0x50\n// vertex   1200,    192,   1280, -16640,      0,  0x00, 0x00, 0x0A, 0x14\n// vertex -16640,      0,     30, -18432,      0,  0x00, 0x00, 0x00, 0x00\n\n// 0x050036C8 - 0x05003728\nconst Gfx hoot_seg5_dl_050036C8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, hoot_seg5_texture_05001E50),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPLight(&hoot_seg5_lights_05003650.l, 1),\n    gsSPLight(&hoot_seg5_lights_05003650.a, 2),\n    gsSPVertex(hoot_seg5_vertex_05003668, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003728 - 0x05003778\nconst Gfx hoot_seg5_dl_05003728[] = {\n    gsDPPipeSync(),\n    gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsSPDisplayList(hoot_seg5_dl_050036C8),\n    gsSPTexture(0x8000, 0x8000, 1, G_TX_RENDERTILE + 1, G_OFF),\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003778\nstatic const Vtx hoot_seg5_vertex_05003778[] = {\n    {{{    26,    -12,      0}, 0, {     0,      0}, {0x02, 0xbe, 0x6c, 0x00}}},\n    {{{    22,     13,     15}, 0, {     0,      0}, {0x02, 0xbe, 0x6c, 0x00}}},\n    {{{   -14,      3,     11}, 0, {     0,      0}, {0x02, 0xbe, 0x6c, 0x00}}},\n    {{{    22,     13,    -15}, 0, {     0,      0}, {0x02, 0xbe, 0x94, 0xff}}},\n    {{{    26,    -12,      0}, 0, {     0,      0}, {0x02, 0xbe, 0x94, 0xff}}},\n    {{{   -14,      3,    -10}, 0, {     0,      0}, {0x02, 0xbe, 0x94, 0xff}}},\n    {{{   -14,      3,    -10}, 0, {     0,      0}, {0x84, 0xea, 0x00, 0xff}}},\n    {{{   -10,    -13,      0}, 0, {     0,      0}, {0x84, 0xea, 0x00, 0xff}}},\n    {{{   -14,      3,     11}, 0, {     0,      0}, {0x84, 0xea, 0x00, 0xff}}},\n    {{{    22,     13,    -15}, 0, {     0,      0}, {0xe1, 0x7b, 0x00, 0xff}}},\n    {{{   -14,      3,     11}, 0, {     0,      0}, {0xe1, 0x7b, 0x00, 0xff}}},\n    {{{    22,     13,     15}, 0, {     0,      0}, {0xe1, 0x7b, 0x00, 0xff}}},\n    {{{    49,    -27,    -24}, 0, {     0,      0}, {0x37, 0x5f, 0xc2, 0xff}}},\n    {{{    38,    -32,    -47}, 0, {     0,      0}, {0x2d, 0x6c, 0xd1, 0xff}}},\n    {{{    22,     13,    -15}, 0, {     0,      0}, {0x4e, 0x29, 0xa5, 0xff}}},\n};\n\n// 0x05003868\nstatic const Vtx hoot_seg5_vertex_05003868[] = {\n    {{{    22,     13,    -15}, 0, {     0,      0}, {0x87, 0xe1, 0xf1, 0xff}}},\n    {{{    38,    -32,    -47}, 0, {     0,      0}, {0x87, 0xe1, 0xf1, 0x00}}},\n    {{{    26,    -12,      0}, 0, {     0,      0}, {0x87, 0xe1, 0xf1, 0x00}}},\n    {{{    26,    -12,      0}, 0, {     0,      0}, {0x35, 0xbb, 0x5b, 0xff}}},\n    {{{    41,    -47,    -38}, 0, {     0,      0}, {0x18, 0xb1, 0x5f, 0xff}}},\n    {{{    49,    -27,    -24}, 0, {     0,      0}, {0x26, 0xb7, 0x60, 0xff}}},\n    {{{    49,    -27,     25}, 0, {     0,      0}, {0x26, 0xb7, 0xa0, 0xff}}},\n    {{{    41,    -47,     39}, 0, {     0,      0}, {0x18, 0xb1, 0xa1, 0xff}}},\n    {{{    26,    -12,      0}, 0, {     0,      0}, {0x35, 0xbb, 0xa5, 0xff}}},\n    {{{    26,    -12,      0}, 0, {     0,      0}, {0x87, 0xe1, 0x0f, 0xff}}},\n    {{{    38,    -32,     48}, 0, {     0,      0}, {0x87, 0xe1, 0x0f, 0xff}}},\n    {{{    22,     13,     15}, 0, {     0,      0}, {0x87, 0xe1, 0x0f, 0xff}}},\n    {{{    22,     13,     15}, 0, {     0,      0}, {0x4e, 0x29, 0x5b, 0xff}}},\n    {{{    38,    -32,     48}, 0, {     0,      0}, {0x2d, 0x6c, 0x2f, 0xff}}},\n    {{{    49,    -27,     25}, 0, {     0,      0}, {0x37, 0x5f, 0x3e, 0xff}}},\n};\n\n// 0x05003958\nstatic const Vtx hoot_seg5_vertex_05003958[] = {\n    {{{    41,     29,      0}, 0, {     0,      0}, {0x33, 0xf6, 0x73, 0xff}}},\n    {{{    26,     49,      9}, 0, {     0,      0}, {0x27, 0xea, 0x76, 0x00}}},\n    {{{    22,     13,     15}, 0, {     0,      0}, {0x4e, 0x29, 0x5b, 0x00}}},\n    {{{    22,     13,     15}, 0, {     0,      0}, {0x82, 0x0e, 0x00, 0xff}}},\n    {{{    26,     49,      9}, 0, {     0,      0}, {0x82, 0x0e, 0x00, 0xff}}},\n    {{{    22,     13,    -15}, 0, {     0,      0}, {0x82, 0x0e, 0x00, 0xff}}},\n    {{{    22,     13,    -15}, 0, {     0,      0}, {0x4e, 0x29, 0xa5, 0xff}}},\n    {{{    26,     49,     -8}, 0, {     0,      0}, {0x27, 0xea, 0x8a, 0xff}}},\n    {{{    41,     29,      0}, 0, {     0,      0}, {0x33, 0xf6, 0x8d, 0xff}}},\n    {{{    45,      8,      0}, 0, {     0,      0}, {0x48, 0x27, 0xa0, 0xff}}},\n    {{{    26,     49,     -8}, 0, {     0,      0}, {0x82, 0x0e, 0x00, 0xff}}},\n    {{{    45,      8,      0}, 0, {     0,      0}, {0x48, 0x27, 0x60, 0xff}}},\n    {{{    49,    -27,     25}, 0, {     0,      0}, {0x37, 0x5f, 0x3e, 0xff}}},\n    {{{    26,    -12,      0}, 0, {     0,      0}, {0x87, 0xe1, 0x0f, 0xff}}},\n    {{{    41,    -47,     39}, 0, {     0,      0}, {0x87, 0xe1, 0x0f, 0xff}}},\n    {{{    38,    -32,     48}, 0, {     0,      0}, {0x87, 0xe1, 0x0f, 0xff}}},\n};\n\n// 0x05003A58\nstatic const Vtx hoot_seg5_vertex_05003A58[] = {\n    {{{    26,    -12,      0}, 0, {     0,      0}, {0x35, 0xbb, 0xa5, 0xff}}},\n    {{{    45,      8,      0}, 0, {     0,      0}, {0x3f, 0xc7, 0xa3, 0x00}}},\n    {{{    49,    -27,     25}, 0, {     0,      0}, {0x26, 0xb7, 0xa0, 0x00}}},\n    {{{    49,    -27,    -24}, 0, {     0,      0}, {0x26, 0xb7, 0x60, 0xff}}},\n    {{{    45,      8,      0}, 0, {     0,      0}, {0x3f, 0xc7, 0x5d, 0xff}}},\n    {{{    26,    -12,      0}, 0, {     0,      0}, {0x35, 0xbb, 0x5b, 0xff}}},\n    {{{    38,    -32,    -47}, 0, {     0,      0}, {0x87, 0xe1, 0xf1, 0xff}}},\n    {{{    41,    -47,    -38}, 0, {     0,      0}, {0x87, 0xe1, 0xf1, 0xff}}},\n    {{{    26,    -12,      0}, 0, {     0,      0}, {0x87, 0xe1, 0xf1, 0xff}}},\n    {{{    22,     13,    -15}, 0, {     0,      0}, {0x4e, 0x29, 0xa5, 0xff}}},\n    {{{    45,      8,      0}, 0, {     0,      0}, {0x48, 0x27, 0xa0, 0xff}}},\n    {{{    49,    -27,    -24}, 0, {     0,      0}, {0x37, 0x5f, 0xc2, 0xff}}},\n    {{{    22,     13,    -15}, 0, {     0,      0}, {0xe1, 0x7b, 0x00, 0xff}}},\n    {{{   -14,      3,    -10}, 0, {     0,      0}, {0xe1, 0x7b, 0x00, 0xff}}},\n    {{{   -14,      3,     11}, 0, {     0,      0}, {0xe1, 0x7b, 0x00, 0xff}}},\n};\n\n// 0x05003B48\nstatic const Vtx hoot_seg5_vertex_05003B48[] = {\n    {{{    26,    -12,      0}, 0, {     0,      0}, {0x02, 0xbe, 0x94, 0xff}}},\n    {{{   -10,    -13,      0}, 0, {     0,      0}, {0x02, 0xbe, 0x94, 0x00}}},\n    {{{   -14,      3,    -10}, 0, {     0,      0}, {0x02, 0xbe, 0x94, 0x00}}},\n    {{{   -14,      3,     11}, 0, {     0,      0}, {0x02, 0xbe, 0x6c, 0xff}}},\n    {{{   -10,    -13,      0}, 0, {     0,      0}, {0x02, 0xbe, 0x6c, 0xff}}},\n    {{{    26,    -12,      0}, 0, {     0,      0}, {0x02, 0xbe, 0x6c, 0xff}}},\n};\n\n// 0x05003BA8\nstatic const Vtx hoot_seg5_vertex_05003BA8[] = {\n    {{{    41,    -47,    -38}, 0, {     0,      0}, {0x18, 0xb1, 0x5f, 0x00}}},\n    {{{    79,    -26,    -25}, 0, {     0,      0}, {0x07, 0xb4, 0x64, 0x00}}},\n    {{{    49,    -27,    -24}, 0, {     0,      0}, {0x26, 0xb7, 0x60, 0x00}}},\n    {{{    49,    -27,    -24}, 0, {     0,      0}, {0x37, 0x5f, 0xc2, 0xff}}},\n    {{{    79,    -26,    -25}, 0, {     0,      0}, {0xfc, 0x7b, 0xe4, 0xff}}},\n    {{{    38,    -32,    -47}, 0, {     0,      0}, {0x2d, 0x6c, 0xd1, 0xff}}},\n    {{{    38,    -32,     48}, 0, {     0,      0}, {0x2d, 0x6c, 0x2f, 0xff}}},\n    {{{    79,    -26,     26}, 0, {     0,      0}, {0xfc, 0x7b, 0x1c, 0xff}}},\n    {{{    49,    -27,     25}, 0, {     0,      0}, {0x37, 0x5f, 0x3e, 0xff}}},\n    {{{    49,    -27,     25}, 0, {     0,      0}, {0x26, 0xb7, 0xa0, 0xff}}},\n    {{{    79,    -26,     26}, 0, {     0,      0}, {0x07, 0xb4, 0x9c, 0xff}}},\n    {{{    41,    -47,     39}, 0, {     0,      0}, {0x18, 0xb1, 0xa1, 0xff}}},\n    {{{    26,     49,     -8}, 0, {     0,      0}, {0x27, 0xea, 0x8a, 0xff}}},\n    {{{    63,     30,      0}, 0, {     0,      0}, {0x00, 0xcc, 0x8d, 0xff}}},\n    {{{    41,     29,      0}, 0, {     0,      0}, {0x33, 0xf6, 0x8d, 0xff}}},\n};\n\n// 0x05003C98\nstatic const Vtx hoot_seg5_vertex_05003C98[] = {\n    {{{    41,     29,      0}, 0, {     0,      0}, {0x33, 0xf6, 0x73, 0xff}}},\n    {{{    63,     30,      0}, 0, {     0,      0}, {0x00, 0xcc, 0x73, 0x00}}},\n    {{{    26,     49,      9}, 0, {     0,      0}, {0x27, 0xea, 0x76, 0x00}}},\n    {{{    41,    -47,     39}, 0, {     0,      0}, {0x3d, 0xcf, 0x63, 0xff}}},\n    {{{    79,    -26,     26}, 0, {     0,      0}, {0x3d, 0xcf, 0x63, 0xff}}},\n    {{{    38,    -32,     48}, 0, {     0,      0}, {0x3d, 0xcf, 0x63, 0xff}}},\n    {{{    26,     49,      9}, 0, {     0,      0}, {0x3a, 0x70, 0x00, 0xff}}},\n    {{{    63,     30,      0}, 0, {     0,      0}, {0x3a, 0x70, 0x00, 0xff}}},\n    {{{    26,     49,     -8}, 0, {     0,      0}, {0x3a, 0x70, 0x00, 0xff}}},\n    {{{    38,    -32,    -47}, 0, {     0,      0}, {0x3d, 0xcf, 0x9d, 0xff}}},\n    {{{    79,    -26,    -25}, 0, {     0,      0}, {0x3d, 0xcf, 0x9d, 0xff}}},\n    {{{    41,    -47,    -38}, 0, {     0,      0}, {0x3d, 0xcf, 0x9d, 0xff}}},\n};\n\n// 0x05003D58\nstatic const Vtx hoot_seg5_vertex_05003D58[] = {\n    {{{    45,    -48,      1}, 0, {     0,      0}, {0xde, 0xb4, 0x5f, 0x00}}},\n    {{{    51,     -7,     36}, 0, {     0,      0}, {0xde, 0xb4, 0x5f, 0x00}}},\n    {{{   -10,    -23,      1}, 0, {     0,      0}, {0xde, 0xb4, 0x5f, 0x00}}},\n    {{{    58,     33,      1}, 0, {     0,      0}, {0xf8, 0x53, 0xa1, 0xff}}},\n    {{{    51,     -7,    -34}, 0, {     0,      0}, {0xf8, 0x53, 0xa1, 0xff}}},\n    {{{    -2,     26,      1}, 0, {     0,      0}, {0xf8, 0x53, 0xa1, 0xff}}},\n    {{{   -10,    -23,      1}, 0, {     0,      0}, {0x83, 0x14, 0x00, 0xff}}},\n    {{{    -6,      1,     23}, 0, {     0,      0}, {0x83, 0x14, 0x00, 0xff}}},\n    {{{    -6,      1,    -20}, 0, {     0,      0}, {0x83, 0x14, 0x00, 0xff}}},\n    {{{    51,     -7,     36}, 0, {     0,      0}, {0xf8, 0x53, 0x5f, 0xff}}},\n    {{{    58,     33,      1}, 0, {     0,      0}, {0xf8, 0x53, 0x5f, 0xff}}},\n    {{{    -2,     26,      1}, 0, {     0,      0}, {0xf8, 0x53, 0x5f, 0xff}}},\n    {{{    51,     -7,    -34}, 0, {     0,      0}, {0xde, 0xb4, 0xa1, 0xff}}},\n    {{{    45,    -48,      1}, 0, {     0,      0}, {0xde, 0xb4, 0xa1, 0xff}}},\n    {{{   -10,    -23,      1}, 0, {     0,      0}, {0xde, 0xb4, 0xa1, 0xff}}},\n    {{{    -6,      1,    -20}, 0, {     0,      0}, {0xde, 0xb4, 0xa1, 0xff}}},\n};\n\n// 0x05003E58\nstatic const Vtx hoot_seg5_vertex_05003E58[] = {\n    {{{    -2,     26,      1}, 0, {     0,      0}, {0xf8, 0x53, 0x5f, 0xff}}},\n    {{{    -6,      1,     23}, 0, {     0,      0}, {0xf8, 0x53, 0x5f, 0x00}}},\n    {{{    51,     -7,     36}, 0, {     0,      0}, {0xf8, 0x53, 0x5f, 0x00}}},\n    {{{    -6,      1,     23}, 0, {     0,      0}, {0x83, 0x14, 0x00, 0xff}}},\n    {{{    -2,     26,      1}, 0, {     0,      0}, {0x83, 0x14, 0x00, 0xff}}},\n    {{{    -6,      1,    -20}, 0, {     0,      0}, {0x83, 0x14, 0x00, 0xff}}},\n    {{{    51,     -7,    -34}, 0, {     0,      0}, {0xf8, 0x53, 0xa1, 0xff}}},\n    {{{    -6,      1,    -20}, 0, {     0,      0}, {0xf8, 0x53, 0xa1, 0xff}}},\n    {{{    -2,     26,      1}, 0, {     0,      0}, {0xf8, 0x53, 0xa1, 0xff}}},\n    {{{    51,     -7,     36}, 0, {     0,      0}, {0xde, 0xb4, 0x5f, 0xff}}},\n    {{{    -6,      1,     23}, 0, {     0,      0}, {0xde, 0xb4, 0x5f, 0xff}}},\n    {{{   -10,    -23,      1}, 0, {     0,      0}, {0xde, 0xb4, 0x5f, 0xff}}},\n};\n\n// 0x05003F18\nstatic const Vtx hoot_seg5_vertex_05003F18[] = {\n    {{{    51,     -7,    -34}, 0, {     0,      0}, {0x7d, 0xec, 0x00, 0x00}}},\n    {{{    58,     33,      1}, 0, {     0,      0}, {0x7d, 0xec, 0x00, 0x00}}},\n    {{{    51,     -7,     36}, 0, {     0,      0}, {0x7d, 0xec, 0x00, 0x00}}},\n    {{{    45,    -48,      1}, 0, {     0,      0}, {0x7d, 0xec, 0x00, 0xff}}},\n};\n\n// 0x05003F58\nstatic const Vtx hoot_seg5_vertex_05003F58[] = {\n    {{{    26,     49,     -9}, 0, {     0,      0}, {0x27, 0xea, 0x8a, 0x00}}},\n    {{{    63,     30,      0}, 0, {     0,      0}, {0x00, 0xcc, 0x8d, 0x00}}},\n    {{{    41,     29,      0}, 0, {     0,      0}, {0x33, 0xf6, 0x8d, 0x00}}},\n    {{{    41,     29,      0}, 0, {     0,      0}, {0x33, 0xf6, 0x73, 0xff}}},\n    {{{    63,     30,      0}, 0, {     0,      0}, {0x00, 0xcc, 0x73, 0xff}}},\n    {{{    26,     49,      8}, 0, {     0,      0}, {0x27, 0xea, 0x76, 0xff}}},\n    {{{    41,    -47,    -39}, 0, {     0,      0}, {0x18, 0xb1, 0x5f, 0xff}}},\n    {{{    79,    -26,    -26}, 0, {     0,      0}, {0x07, 0xb4, 0x64, 0xff}}},\n    {{{    49,    -27,    -25}, 0, {     0,      0}, {0x26, 0xb7, 0x60, 0xff}}},\n    {{{    49,    -27,    -25}, 0, {     0,      0}, {0x37, 0x5f, 0xc2, 0xff}}},\n    {{{    79,    -26,    -26}, 0, {     0,      0}, {0xfc, 0x7b, 0xe4, 0xff}}},\n    {{{    38,    -32,    -48}, 0, {     0,      0}, {0x2d, 0x6c, 0xd1, 0xff}}},\n    {{{    38,    -32,     47}, 0, {     0,      0}, {0x2d, 0x6c, 0x2f, 0xff}}},\n    {{{    79,    -26,     25}, 0, {     0,      0}, {0xfc, 0x7b, 0x1c, 0xff}}},\n    {{{    49,    -27,     24}, 0, {     0,      0}, {0x37, 0x5f, 0x3e, 0xff}}},\n};\n\n// 0x05004048\nstatic const Vtx hoot_seg5_vertex_05004048[] = {\n    {{{    49,    -27,     24}, 0, {     0,      0}, {0x26, 0xb7, 0xa0, 0xff}}},\n    {{{    79,    -26,     25}, 0, {     0,      0}, {0x07, 0xb4, 0x9c, 0x00}}},\n    {{{    41,    -47,     38}, 0, {     0,      0}, {0x18, 0xb1, 0xa1, 0x00}}},\n    {{{    41,    -47,     38}, 0, {     0,      0}, {0x3d, 0xcf, 0x63, 0xff}}},\n    {{{    79,    -26,     25}, 0, {     0,      0}, {0x3d, 0xcf, 0x63, 0xff}}},\n    {{{    38,    -32,     47}, 0, {     0,      0}, {0x3d, 0xcf, 0x63, 0xff}}},\n    {{{    26,     49,      8}, 0, {     0,      0}, {0x3a, 0x70, 0x00, 0xff}}},\n    {{{    63,     30,      0}, 0, {     0,      0}, {0x3a, 0x70, 0x00, 0xff}}},\n    {{{    26,     49,     -9}, 0, {     0,      0}, {0x3a, 0x70, 0x00, 0xff}}},\n    {{{    38,    -32,    -48}, 0, {     0,      0}, {0x3d, 0xcf, 0x9d, 0xff}}},\n    {{{    79,    -26,    -26}, 0, {     0,      0}, {0x3d, 0xcf, 0x9d, 0xff}}},\n    {{{    41,    -47,    -39}, 0, {     0,      0}, {0x3d, 0xcf, 0x9d, 0xff}}},\n};\n\n// 0x05004108\nstatic const Vtx hoot_seg5_vertex_05004108[] = {\n    {{{    49,    -27,    -25}, 0, {     0,      0}, {0x37, 0x5f, 0xc2, 0x00}}},\n    {{{    38,    -32,    -48}, 0, {     0,      0}, {0x2d, 0x6c, 0xd1, 0x00}}},\n    {{{    22,     13,    -15}, 0, {     0,      0}, {0x4e, 0x29, 0xa5, 0x00}}},\n    {{{    22,     13,    -15}, 0, {     0,      0}, {0x87, 0xe1, 0xf1, 0xff}}},\n    {{{    38,    -32,    -48}, 0, {     0,      0}, {0x87, 0xe1, 0xf1, 0xff}}},\n    {{{    26,    -12,      0}, 0, {     0,      0}, {0x87, 0xe1, 0xf1, 0xff}}},\n    {{{    26,    -12,      0}, 0, {     0,      0}, {0x35, 0xbb, 0x5b, 0xff}}},\n    {{{    41,    -47,    -39}, 0, {     0,      0}, {0x18, 0xb1, 0x5f, 0xff}}},\n    {{{    49,    -27,    -25}, 0, {     0,      0}, {0x26, 0xb7, 0x60, 0xff}}},\n    {{{    49,    -27,     24}, 0, {     0,      0}, {0x26, 0xb7, 0xa0, 0xff}}},\n    {{{    41,    -47,     38}, 0, {     0,      0}, {0x18, 0xb1, 0xa1, 0xff}}},\n    {{{    26,    -12,      0}, 0, {     0,      0}, {0x35, 0xbb, 0xa5, 0xff}}},\n    {{{    26,    -12,      0}, 0, {     0,      0}, {0x87, 0xe1, 0x0f, 0xff}}},\n    {{{    38,    -32,     47}, 0, {     0,      0}, {0x87, 0xe1, 0x0f, 0xff}}},\n    {{{    22,     13,     15}, 0, {     0,      0}, {0x87, 0xe1, 0x0f, 0xff}}},\n};\n\n// 0x050041F8\nstatic const Vtx hoot_seg5_vertex_050041F8[] = {\n    {{{    22,     13,     15}, 0, {     0,      0}, {0x4e, 0x29, 0x5b, 0xff}}},\n    {{{    38,    -32,     47}, 0, {     0,      0}, {0x2d, 0x6c, 0x2f, 0x00}}},\n    {{{    49,    -27,     24}, 0, {     0,      0}, {0x37, 0x5f, 0x3e, 0x00}}},\n    {{{    41,     29,      0}, 0, {     0,      0}, {0x33, 0xf6, 0x73, 0xff}}},\n    {{{    26,     49,      8}, 0, {     0,      0}, {0x27, 0xea, 0x76, 0xff}}},\n    {{{    22,     13,     15}, 0, {     0,      0}, {0x82, 0x0e, 0x00, 0xff}}},\n    {{{    26,     49,     -9}, 0, {     0,      0}, {0x82, 0x0e, 0x00, 0xff}}},\n    {{{    22,     13,    -15}, 0, {     0,      0}, {0x82, 0x0e, 0x00, 0xff}}},\n    {{{    22,     13,    -15}, 0, {     0,      0}, {0xe1, 0x7b, 0x00, 0xff}}},\n    {{{   -14,      3,    -11}, 0, {     0,      0}, {0xe1, 0x7b, 0x00, 0xff}}},\n    {{{    22,     13,     15}, 0, {     0,      0}, {0xe1, 0x7b, 0x00, 0xff}}},\n    {{{   -14,      3,    -11}, 0, {     0,      0}, {0x84, 0xea, 0x00, 0xff}}},\n    {{{   -10,    -13,      0}, 0, {     0,      0}, {0x84, 0xea, 0x00, 0xff}}},\n    {{{   -14,      3,     10}, 0, {     0,      0}, {0x84, 0xea, 0x00, 0xff}}},\n};\n\n// 0x050042D8\nstatic const Vtx hoot_seg5_vertex_050042D8[] = {\n    {{{   -14,      3,     10}, 0, {     0,      0}, {0x02, 0xbe, 0x6c, 0xff}}},\n    {{{    26,    -12,      0}, 0, {     0,      0}, {0x02, 0xbe, 0x6c, 0x00}}},\n    {{{    22,     13,     15}, 0, {     0,      0}, {0x02, 0xbe, 0x6c, 0x00}}},\n    {{{    22,     13,    -15}, 0, {     0,      0}, {0x4e, 0x29, 0xa5, 0xff}}},\n    {{{    26,     49,     -9}, 0, {     0,      0}, {0x27, 0xea, 0x8a, 0xff}}},\n    {{{    41,     29,      0}, 0, {     0,      0}, {0x33, 0xf6, 0x8d, 0xff}}},\n    {{{   -14,      3,    -11}, 0, {     0,      0}, {0x02, 0xbe, 0x94, 0xff}}},\n    {{{    22,     13,    -15}, 0, {     0,      0}, {0x02, 0xbe, 0x94, 0xff}}},\n    {{{    26,    -12,      0}, 0, {     0,      0}, {0x02, 0xbe, 0x94, 0xff}}},\n    {{{   -10,    -13,      0}, 0, {     0,      0}, {0x02, 0xbe, 0x94, 0xff}}},\n    {{{   -10,    -13,      0}, 0, {     0,      0}, {0x02, 0xbe, 0x6c, 0xff}}},\n    {{{   -14,      3,    -11}, 0, {     0,      0}, {0xe1, 0x7b, 0x00, 0xff}}},\n    {{{   -14,      3,     10}, 0, {     0,      0}, {0xe1, 0x7b, 0x00, 0xff}}},\n    {{{    22,     13,     15}, 0, {     0,      0}, {0xe1, 0x7b, 0x00, 0xff}}},\n};\n\n// 0x050043B8\nstatic const Vtx hoot_seg5_vertex_050043B8[] = {\n    {{{    49,    -27,     24}, 0, {     0,      0}, {0x37, 0x5f, 0x3e, 0xff}}},\n    {{{    45,      8,      0}, 0, {     0,      0}, {0x48, 0x27, 0x60, 0x00}}},\n    {{{    22,     13,     15}, 0, {     0,      0}, {0x4e, 0x29, 0x5b, 0x00}}},\n    {{{    26,    -12,      0}, 0, {     0,      0}, {0x87, 0xe1, 0x0f, 0xff}}},\n    {{{    41,    -47,     38}, 0, {     0,      0}, {0x87, 0xe1, 0x0f, 0xff}}},\n    {{{    38,    -32,     47}, 0, {     0,      0}, {0x87, 0xe1, 0x0f, 0xff}}},\n    {{{    26,    -12,      0}, 0, {     0,      0}, {0x35, 0xbb, 0xa5, 0xff}}},\n    {{{    45,      8,      0}, 0, {     0,      0}, {0x3f, 0xc7, 0xa3, 0xff}}},\n    {{{    49,    -27,     24}, 0, {     0,      0}, {0x26, 0xb7, 0xa0, 0xff}}},\n    {{{    49,    -27,    -25}, 0, {     0,      0}, {0x26, 0xb7, 0x60, 0xff}}},\n    {{{    45,      8,      0}, 0, {     0,      0}, {0x3f, 0xc7, 0x5d, 0xff}}},\n    {{{    26,    -12,      0}, 0, {     0,      0}, {0x35, 0xbb, 0x5b, 0xff}}},\n    {{{    38,    -32,    -48}, 0, {     0,      0}, {0x87, 0xe1, 0xf1, 0xff}}},\n    {{{    41,    -47,    -39}, 0, {     0,      0}, {0x87, 0xe1, 0xf1, 0xff}}},\n    {{{    26,    -12,      0}, 0, {     0,      0}, {0x87, 0xe1, 0xf1, 0xff}}},\n};\n\n// 0x050044A8\nstatic const Vtx hoot_seg5_vertex_050044A8[] = {\n    {{{    22,     13,    -15}, 0, {     0,      0}, {0x4e, 0x29, 0xa5, 0xff}}},\n    {{{    45,      8,      0}, 0, {     0,      0}, {0x48, 0x27, 0xa0, 0x00}}},\n    {{{    49,    -27,    -25}, 0, {     0,      0}, {0x37, 0x5f, 0xc2, 0x00}}},\n    {{{    41,     29,      0}, 0, {     0,      0}, {0x33, 0xf6, 0x8d, 0xff}}},\n    {{{    22,     13,     15}, 0, {     0,      0}, {0x82, 0x0e, 0x00, 0xff}}},\n    {{{    26,     49,      8}, 0, {     0,      0}, {0x82, 0x0e, 0x00, 0xff}}},\n    {{{    26,     49,     -9}, 0, {     0,      0}, {0x82, 0x0e, 0x00, 0xff}}},\n    {{{    22,     13,     15}, 0, {     0,      0}, {0x4e, 0x29, 0x5b, 0xff}}},\n    {{{    45,      8,      0}, 0, {     0,      0}, {0x48, 0x27, 0x60, 0xff}}},\n    {{{    41,     29,      0}, 0, {     0,      0}, {0x33, 0xf6, 0x73, 0xff}}},\n};\n\n// 0x05004548\nstatic const Vtx hoot_seg5_vertex_05004548[] = {\n    {{{   -10,    -23,     -1}, 0, {     0,      0}, {0xde, 0xb4, 0x5f, 0x00}}},\n    {{{    45,    -48,     -1}, 0, {     0,      0}, {0xde, 0xb4, 0x5f, 0x00}}},\n    {{{    51,     -7,     34}, 0, {     0,      0}, {0xde, 0xb4, 0x5f, 0x00}}},\n    {{{    -2,     26,     -1}, 0, {     0,      0}, {0xf8, 0x53, 0xa1, 0xff}}},\n    {{{    58,     33,     -1}, 0, {     0,      0}, {0xf8, 0x53, 0xa1, 0xff}}},\n    {{{    51,     -7,    -36}, 0, {     0,      0}, {0xf8, 0x53, 0xa1, 0xff}}},\n    {{{    -6,      1,     20}, 0, {     0,      0}, {0x83, 0x14, 0x00, 0xff}}},\n    {{{    -6,      1,    -23}, 0, {     0,      0}, {0x83, 0x14, 0x00, 0xff}}},\n    {{{   -10,    -23,     -1}, 0, {     0,      0}, {0x83, 0x14, 0x00, 0xff}}},\n    {{{    -2,     26,     -1}, 0, {     0,      0}, {0xf8, 0x53, 0x5f, 0xff}}},\n    {{{    51,     -7,     34}, 0, {     0,      0}, {0xf8, 0x53, 0x5f, 0xff}}},\n    {{{    58,     33,     -1}, 0, {     0,      0}, {0xf8, 0x53, 0x5f, 0xff}}},\n    {{{   -10,    -23,     -1}, 0, {     0,      0}, {0xde, 0xb4, 0xa1, 0xff}}},\n    {{{    51,     -7,    -36}, 0, {     0,      0}, {0xde, 0xb4, 0xa1, 0xff}}},\n    {{{    45,    -48,     -1}, 0, {     0,      0}, {0xde, 0xb4, 0xa1, 0xff}}},\n    {{{    -6,      1,    -23}, 0, {     0,      0}, {0xde, 0xb4, 0xa1, 0xff}}},\n};\n\n// 0x05004648\nstatic const Vtx hoot_seg5_vertex_05004648[] = {\n    {{{    -2,     26,     -1}, 0, {     0,      0}, {0xf8, 0x53, 0x5f, 0xff}}},\n    {{{    -6,      1,     20}, 0, {     0,      0}, {0xf8, 0x53, 0x5f, 0x00}}},\n    {{{    51,     -7,     34}, 0, {     0,      0}, {0xf8, 0x53, 0x5f, 0x00}}},\n    {{{    -6,      1,     20}, 0, {     0,      0}, {0x83, 0x14, 0x00, 0xff}}},\n    {{{    -2,     26,     -1}, 0, {     0,      0}, {0x83, 0x14, 0x00, 0xff}}},\n    {{{    -6,      1,    -23}, 0, {     0,      0}, {0x83, 0x14, 0x00, 0xff}}},\n    {{{    51,     -7,    -36}, 0, {     0,      0}, {0xf8, 0x53, 0xa1, 0xff}}},\n    {{{    -6,      1,    -23}, 0, {     0,      0}, {0xf8, 0x53, 0xa1, 0xff}}},\n    {{{    -2,     26,     -1}, 0, {     0,      0}, {0xf8, 0x53, 0xa1, 0xff}}},\n    {{{    51,     -7,     34}, 0, {     0,      0}, {0xde, 0xb4, 0x5f, 0xff}}},\n    {{{    -6,      1,     20}, 0, {     0,      0}, {0xde, 0xb4, 0x5f, 0xff}}},\n    {{{   -10,    -23,     -1}, 0, {     0,      0}, {0xde, 0xb4, 0x5f, 0xff}}},\n};\n\n// 0x05004708\nstatic const Vtx hoot_seg5_vertex_05004708[] = {\n    {{{    45,    -48,     -1}, 0, {     0,      0}, {0x7d, 0xec, 0x00, 0x00}}},\n    {{{    51,     -7,    -36}, 0, {     0,      0}, {0x7d, 0xec, 0x00, 0x00}}},\n    {{{    51,     -7,     34}, 0, {     0,      0}, {0x7d, 0xec, 0x00, 0x00}}},\n    {{{    58,     33,     -1}, 0, {     0,      0}, {0x7d, 0xec, 0x00, 0xff}}},\n};\n\n// 0x05004748\nstatic const Vtx hoot_seg5_vertex_05004748[] = {\n    {{{     0,     71,    -47}, 0, {     0,      0}, {0xd6, 0x6a, 0xca, 0x00}}},\n    {{{     0,     71,     47}, 0, {     0,      0}, {0xd4, 0x71, 0x23, 0x00}}},\n    {{{    64,     81,    -43}, 0, {     0,      0}, {0x18, 0x71, 0xcd, 0x00}}},\n    {{{  -105,    -59,      0}, 0, {     0,      0}, {0x82, 0x0c, 0x00, 0xff}}},\n    {{{   -39,     46,     39}, 0, {     0,      0}, {0xa5, 0x4c, 0x2b, 0xff}}},\n    {{{   -39,     46,    -39}, 0, {     0,      0}, {0xa9, 0x54, 0xde, 0xff}}},\n    {{{   -16,     11,     85}, 0, {     0,      0}, {0xce, 0x1d, 0x70, 0xff}}},\n    {{{   112,     35,     48}, 0, {     0,      0}, {0x75, 0x1a, 0x27, 0xff}}},\n    {{{    64,     81,     43}, 0, {     0,      0}, {0x1f, 0x6b, 0x3b, 0xff}}},\n    {{{    65,     30,     89}, 0, {     0,      0}, {0x2e, 0x22, 0x71, 0xff}}},\n    {{{    65,     30,    -89}, 0, {     0,      0}, {0x2e, 0x22, 0x8f, 0xff}}},\n    {{{   112,     35,    -48}, 0, {     0,      0}, {0x6f, 0x24, 0xd1, 0xff}}},\n    {{{   -16,     11,    -85}, 0, {     0,      0}, {0xce, 0x1d, 0x90, 0xff}}},\n    {{{   109,     54,      0}, 0, {     0,      0}, {0x5f, 0x54, 0x00, 0xff}}},\n};\n\n// 0x05004828\nstatic const Vtx hoot_seg5_vertex_05004828[] = {\n    {{{    48,    -41,    -96}, 0, {     0,      0}, {0x09, 0xca, 0x8e, 0x00}}},\n    {{{    36,    -84,    -48}, 0, {     0,      0}, {0x0a, 0x87, 0xde, 0x00}}},\n    {{{   -36,    -75,    -34}, 0, {     0,      0}, {0xd6, 0x9d, 0xbe, 0x00}}},\n    {{{    99,    -52,     48}, 0, {     0,      0}, {0x5e, 0xc5, 0x3d, 0xff}}},\n    {{{    36,    -84,     48}, 0, {     0,      0}, {0x1a, 0x89, 0x23, 0xff}}},\n    {{{    99,    -52,    -48}, 0, {     0,      0}, {0x63, 0xbf, 0xd4, 0xff}}},\n    {{{   -16,     11,     85}, 0, {     0,      0}, {0xce, 0x1d, 0x70, 0xff}}},\n    {{{   -36,    -75,     34}, 0, {     0,      0}, {0xda, 0x95, 0x37, 0xff}}},\n    {{{    48,    -41,     96}, 0, {     0,      0}, {0x09, 0xca, 0x72, 0xff}}},\n    {{{  -105,    -59,      0}, 0, {     0,      0}, {0x82, 0x0c, 0x00, 0xff}}},\n    {{{   112,     35,    -48}, 0, {     0,      0}, {0x6f, 0x24, 0xd1, 0xff}}},\n    {{{   112,     35,     48}, 0, {     0,      0}, {0x75, 0x1a, 0x27, 0xff}}},\n    {{{    65,     30,     89}, 0, {     0,      0}, {0x2e, 0x22, 0x71, 0xff}}},\n    {{{   -16,     11,    -85}, 0, {     0,      0}, {0xce, 0x1d, 0x90, 0xff}}},\n    {{{    65,     30,    -89}, 0, {     0,      0}, {0x2e, 0x22, 0x8f, 0xff}}},\n    {{{  -105,    -59,      0}, 0, {     0,      0}, {0xe4, 0x85, 0x00, 0xff}}},\n};\n\n// 0x05004928 - 0x05004A98\nconst Gfx hoot_seg5_dl_05004928[] = {\n    gsSPLight(&hoot_seg5_lights_05000930.l, 1),\n    gsSPLight(&hoot_seg5_lights_05000930.a, 2),\n    gsSPVertex(hoot_seg5_vertex_05003778, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(hoot_seg5_vertex_05003868, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(hoot_seg5_vertex_05003958, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  9,  6, 0x0),\n    gsSP2Triangles( 4, 10,  5, 0x0,  2, 11,  0, 0x0),\n    gsSP2Triangles(12, 11,  2, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hoot_seg5_vertex_05003A58, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(hoot_seg5_vertex_05003B48, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPLight(&hoot_seg5_lights_05000948.l, 1),\n    gsSPLight(&hoot_seg5_lights_05000948.a, 2),\n    gsSPVertex(hoot_seg5_vertex_05003BA8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(hoot_seg5_vertex_05003C98, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004A98 - 0x05004B38\nconst Gfx hoot_seg5_dl_05004A98[] = {\n    gsSPLight(&hoot_seg5_lights_05000960.l, 1),\n    gsSPLight(&hoot_seg5_lights_05000960.a, 2),\n    gsSPVertex(hoot_seg5_vertex_05003D58, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 15, 12, 0x0),\n    gsSPVertex(hoot_seg5_vertex_05003E58, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPLight(&hoot_seg5_lights_05000978.l, 1),\n    gsSPLight(&hoot_seg5_lights_05000978.a, 2),\n    gsSPVertex(hoot_seg5_vertex_05003F18, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004B38 - 0x05004CA8\nconst Gfx hoot_seg5_dl_05004B38[] = {\n    gsSPLight(&hoot_seg5_lights_05000948.l, 1),\n    gsSPLight(&hoot_seg5_lights_05000948.a, 2),\n    gsSPVertex(hoot_seg5_vertex_05003F58, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(hoot_seg5_vertex_05004048, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPLight(&hoot_seg5_lights_05000930.l, 1),\n    gsSPLight(&hoot_seg5_lights_05000930.a, 2),\n    gsSPVertex(hoot_seg5_vertex_05004108, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(hoot_seg5_vertex_050041F8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP1Triangle(11, 12, 13, 0x0),\n    gsSPVertex(hoot_seg5_vertex_050042D8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  9,  6, 0x0),\n    gsSP2Triangles( 0, 10,  1, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(hoot_seg5_vertex_050043B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(hoot_seg5_vertex_050044A8, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004CA8 - 0x05004D48\nconst Gfx hoot_seg5_dl_05004CA8[] = {\n    gsSPLight(&hoot_seg5_lights_05000960.l, 1),\n    gsSPLight(&hoot_seg5_lights_05000960.a, 2),\n    gsSPVertex(hoot_seg5_vertex_05004548, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(hoot_seg5_vertex_05004648, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPLight(&hoot_seg5_lights_05000978.l, 1),\n    gsSPLight(&hoot_seg5_lights_05000978.a, 2),\n    gsSPVertex(hoot_seg5_vertex_05004708, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004D48 - 0x05004EC0\nconst Gfx hoot_seg5_dl_05004D48[] = {\n    gsSPLight(&hoot_seg5_lights_05000900.l, 1),\n    gsSPLight(&hoot_seg5_lights_05000900.a, 2),\n    gsSPVertex(hoot_seg5_vertex_05004748, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  1,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  2, 11, 0x0,  0, 12,  5, 0x0),\n    gsSP2Triangles( 6,  4,  3, 0x0, 12,  3,  5, 0x0),\n    gsSP2Triangles( 1,  0,  5, 0x0,  8,  1,  6, 0x0),\n    gsSP2Triangles(11,  2, 13, 0x0, 12,  0,  2, 0x0),\n    gsSP2Triangles( 8,  7, 13, 0x0,  2,  8, 13, 0x0),\n    gsSP2Triangles( 2, 10, 12, 0x0,  6,  9,  8, 0x0),\n    gsSP2Triangles(11, 13,  7, 0x0,  5,  4,  1, 0x0),\n    gsSP1Triangle( 1,  8,  2, 0x0),\n    gsSPLight(&hoot_seg5_lights_05000960.l, 1),\n    gsSPLight(&hoot_seg5_lights_05000960.a, 2),\n    gsSPVertex(hoot_seg5_vertex_05004828, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  4,  3, 0x0),\n    gsSP2Triangles( 7,  6,  9, 0x0, 10, 11,  5, 0x0),\n    gsSP2Triangles( 7,  1,  4, 0x0,  6,  8, 12, 0x0),\n    gsSP2Triangles(13, 14,  0, 0x0,  7,  4,  8, 0x0),\n    gsSP2Triangles( 2, 13,  0, 0x0, 13,  2,  9, 0x0),\n    gsSP2Triangles( 5,  1,  0, 0x0,  3, 11, 12, 0x0),\n    gsSP2Triangles(14, 10,  5, 0x0,  4,  1,  5, 0x0),\n    gsSP2Triangles( 5,  0, 14, 0x0, 12,  8,  3, 0x0),\n    gsSP2Triangles(11,  3,  5, 0x0,  7,  2,  1, 0x0),\n    gsSP1Triangle(15,  2,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/impact_ring/geo.inc.c",
    "content": "// 0x0D000090\nconst GeoLayout invisible_bowser_accessory_geo[] = {\n    GEO_CULLING_RADIUS(10000),\n    GEO_OPEN_NODE(),\n        GEO_ASM(20, geo_update_layer_transparency),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT_DECAL, impact_ring_seg6_dl_0601EAC0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/impact_ring/model.inc.c",
    "content": "// Impact Ring\n\n// 0x0601C9D0\nstatic const Vtx impact_ring_seg6_vertex_0601C9D0[] = {\n    {{{     0,      0,     -5}, 0, {   992,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    -5,      0,      5}, 0, {     0,   2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,      5}, 0, {   992,   2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    -5,      0,     -5}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0601CA10\nstatic const Vtx impact_ring_seg6_vertex_0601CA10[] = {\n    {{{     5,      0,     -5}, 0, {   992,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,      5}, 0, {     0,   2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     5,      0,      5}, 0, {   992,   2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,     -5}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0601CA50\nALIGNED8 static const Texture impact_ring_seg6_texture_0601CA50[] = {\n#include \"actors/impact_ring/impact_ring_left_side.ia16.inc.c\"\n};\n\n// 0x0601DA50\nALIGNED8 static const Texture impact_ring_seg6_texture_0601DA50[] = {\n#include \"actors/impact_ring/impact_ring_right_side.ia16.inc.c\"\n};\n\n// 0x0601EA50 - 0x0601EA88\nconst Gfx impact_ring_seg6_dl_0601EA50[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, impact_ring_seg6_texture_0601CA50),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(impact_ring_seg6_vertex_0601C9D0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0601EA88 - 0x0601EAC0\nconst Gfx impact_ring_seg6_dl_0601EA88[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, impact_ring_seg6_texture_0601DA50),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(impact_ring_seg6_vertex_0601CA10, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0601EAC0 - 0x0601EB40\nconst Gfx impact_ring_seg6_dl_0601EAC0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIFADEA, G_CC_MODULATEIFADEA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(impact_ring_seg6_dl_0601EA50),\n    gsSPDisplayList(impact_ring_seg6_dl_0601EA88),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/impact_smoke/geo.inc.c",
    "content": "// 0x0D000BB8 / 0BFC\nconst GeoLayout bowser_impact_smoke_geo[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_ASM(0, geo_update_layer_transparency),\n        GEO_SWITCH_CASE(5, geo_switch_anim_state),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, impact_smoke_seg6_dl_06062B38),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, impact_smoke_seg6_dl_06062BD8),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, impact_smoke_seg6_dl_06062C78),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, impact_smoke_seg6_dl_06062D18),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, impact_smoke_seg6_dl_06062BD8),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/impact_smoke/model.inc.c",
    "content": "// Impact Smoke\n\n// TODO: These 64x64 textures are referenced as two different texture addresses in the DLs\n\n// 0x0605AA28\nALIGNED8 static const u8 impact_smoke_seg6_texture_0605AA28[] = {\n#include \"actors/impact_smoke/impact_smoke_0.ia16.inc.c\"\n};\n\n// 0x0605CA28\nALIGNED8 static const u8 impact_smoke_seg6_texture_0605CA28[] = {\n#include \"actors/impact_smoke/impact_smoke_1.ia16.inc.c\"\n};\n\n// 0x0605EA28\nALIGNED8 static const u8 impact_smoke_seg6_texture_0605EA28[] = {\n#include \"actors/impact_smoke/impact_smoke_2.ia16.inc.c\"\n};\n\n// 0x06060A28\nALIGNED8 static const u8 impact_smoke_seg6_texture_06060A28[] = {\n#include \"actors/impact_smoke/impact_smoke_3.ia16.inc.c\"\n};\n\n// 0x06062A28\nstatic const Vtx impact_smoke_seg6_vertex_06062A28[] = {\n    {{{  -150,    150,      0}, 0, {     0,    992}, {0x28, 0x19, 0x14, 0xff}}},\n    {{{   150,    150,      0}, 0, {  2016,    992}, {0x28, 0x19, 0x14, 0xff}}},\n    {{{   150,    300,      0}, 0, {  2016,      0}, {0x28, 0x19, 0x14, 0xff}}},\n    {{{  -150,    300,      0}, 0, {     0,      0}, {0x28, 0x19, 0x14, 0xff}}},\n    {{{  -150,      0,      0}, 0, {     0,    992}, {0x28, 0x19, 0x14, 0xff}}},\n    {{{   150,      0,      0}, 0, {  2016,    992}, {0x28, 0x19, 0x14, 0xff}}},\n    {{{   150,    150,      0}, 0, {  2016,      0}, {0x28, 0x19, 0x14, 0xff}}},\n    {{{  -150,    150,      0}, 0, {     0,      0}, {0x28, 0x19, 0x14, 0xff}}},\n};\n\n// 0x06062AA8 - 0x06062AD8\nconst Gfx impact_smoke_seg6_dl_06062AA8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEFADE, G_CC_MODULATEFADE),\n    gsSPGeometryMode(G_LIGHTING, G_SHADING_SMOOTH),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsSPEndDisplayList(),\n};\n\n// 0x06062AD8 - 0x06062AF0\nconst Gfx impact_smoke_seg6_dl_06062AD8[] = {\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06062AF0 - 0x06062B08\nconst Gfx impact_smoke_seg6_dl_06062AF0[] = {\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06062B08 - 0x06062B38\nconst Gfx impact_smoke_seg6_dl_06062B08[] = {\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x06062B38 - 0x06062BD8\nconst Gfx impact_smoke_seg6_dl_06062B38[] = {\n    gsSPDisplayList(impact_smoke_seg6_dl_06062AA8),\n    gsDPLoadTextureBlock(impact_smoke_seg6_texture_0605AA28, G_IM_FMT_IA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(impact_smoke_seg6_vertex_06062A28, 8, 0),\n    gsSPDisplayList(impact_smoke_seg6_dl_06062AD8),\n    gsDPLoadTextureBlock((u8*)impact_smoke_seg6_texture_0605AA28 + 0x1000, G_IM_FMT_IA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPDisplayList(impact_smoke_seg6_dl_06062AF0),\n    gsSPDisplayList(impact_smoke_seg6_dl_06062B08),\n    gsSPEndDisplayList(),\n};\n\n// 0x06062BD8 - 0x06062C78\nconst Gfx impact_smoke_seg6_dl_06062BD8[] = {\n    gsSPDisplayList(impact_smoke_seg6_dl_06062AA8),\n    gsDPLoadTextureBlock(impact_smoke_seg6_texture_0605CA28, G_IM_FMT_IA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(impact_smoke_seg6_vertex_06062A28, 8, 0),\n    gsSPDisplayList(impact_smoke_seg6_dl_06062AD8),\n    gsDPLoadTextureBlock((u8*)impact_smoke_seg6_texture_0605CA28 + 0x1000, G_IM_FMT_IA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPDisplayList(impact_smoke_seg6_dl_06062AF0),\n    gsSPDisplayList(impact_smoke_seg6_dl_06062B08),\n    gsSPEndDisplayList(),\n};\n\n// 0x06062C78 - 0x06062D18\nconst Gfx impact_smoke_seg6_dl_06062C78[] = {\n    gsSPDisplayList(impact_smoke_seg6_dl_06062AA8),\n    gsDPLoadTextureBlock(impact_smoke_seg6_texture_0605EA28, G_IM_FMT_IA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(impact_smoke_seg6_vertex_06062A28, 8, 0),\n    gsSPDisplayList(impact_smoke_seg6_dl_06062AD8),\n    gsDPLoadTextureBlock((u8*)impact_smoke_seg6_texture_0605EA28 + 0x1000, G_IM_FMT_IA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPDisplayList(impact_smoke_seg6_dl_06062AF0),\n    gsSPDisplayList(impact_smoke_seg6_dl_06062B08),\n    gsSPEndDisplayList(),\n};\n\n// 0x06062D18 - 0x06062DB8\nconst Gfx impact_smoke_seg6_dl_06062D18[] = {\n    gsSPDisplayList(impact_smoke_seg6_dl_06062AA8),\n    gsDPLoadTextureBlock(impact_smoke_seg6_texture_06060A28, G_IM_FMT_IA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(impact_smoke_seg6_vertex_06062A28, 8, 0),\n    gsSPDisplayList(impact_smoke_seg6_dl_06062AD8),\n    gsDPLoadTextureBlock((u8*)impact_smoke_seg6_texture_06060A28 + 0x1000, G_IM_FMT_IA, G_IM_SIZ_16b, 64, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPDisplayList(impact_smoke_seg6_dl_06062AF0),\n    gsSPDisplayList(impact_smoke_seg6_dl_06062B08),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/king_bobomb/anims/anim_0500BDFC.inc.c",
    "content": "// 0x0500B730\nstatic const s16 king_bobomb_seg5_animvalue_0500B730[] = {\n    0x0000, 0x02A5, 0x0000, 0x0000, 0x0001, 0x0004, 0x0007, 0x000A,\n    0x000D, 0x0011, 0x0014, 0x0017, 0x001A, 0x001D, 0x001E, 0x001B,\n    0x0017, 0x000F, 0x0001, 0xFFF4, 0xFFF4, 0x0001, 0x000D, 0x0012,\n    0x0013, 0x0013, 0xFFFB, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0001, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFD, 0xFFFB,\n    0xFFF8, 0xFFF6, 0xFFF3, 0xFFF1, 0xFFEF, 0xFFEE, 0xFFF1, 0xFFF6,\n    0xFFFA, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0002, 0x0007, 0x000D, 0x0014,\n    0x0019, 0x001B, 0x0019, 0x0010, 0x0000, 0xFFCD, 0xFF75, 0xFF18,\n    0xFEDA, 0xFEDC, 0xFFE4, 0x013B, 0x01DF, 0x0209, 0x0161, 0x0098,\n    0x0042, 0x0010, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xFFFE, 0xFFFA, 0xFFF6, 0xFFF4, 0xFFF5, 0xFFF8,\n    0xFFFB, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0004, 0x0008, 0x000D,\n    0x0010, 0x0012, 0x0010, 0x000A, 0x0000, 0xFFDE, 0xFFA2, 0xFF64,\n    0xFF3C, 0xFF43, 0x0006, 0x010F, 0x01C1, 0x0209, 0x015F, 0x0090,\n    0x003C, 0x000E, 0x0000, 0x0000, 0xFFF2, 0xFFCC, 0xFF94, 0xFF53,\n    0xFF0D, 0xFECB, 0xFE94, 0xFE6E, 0xFE5F, 0xFE5F, 0xFE5F, 0xFE5F,\n    0xFE5F, 0xFE5F, 0xFE5F, 0xFE5F, 0xFE5F, 0xFE5F, 0xFE5F, 0xFE5F,\n    0xFE5F, 0xFE5F, 0xFE5F, 0x0000, 0xFFF2, 0xFFCC, 0xFF94, 0xFF53,\n    0xFF0D, 0xFECB, 0xFE94, 0xFE6E, 0xFE5F, 0xFE5F, 0xFE5F, 0xFE5F,\n    0xFE5F, 0xFE5F, 0xFE5F, 0xFE5F, 0xFE5F, 0xFE5F, 0xFE5F, 0xFE5F,\n    0xFE5F, 0xFE5F, 0xFE5F, 0x0000, 0xFF0C, 0xFC7D, 0xF8C8, 0xF463,\n    0xEFC4, 0xEB5F, 0xE7AA, 0xE51B, 0xE426, 0xE426, 0xE426, 0xE426,\n    0xE426, 0xE426, 0xE426, 0xE426, 0xE426, 0xE426, 0xE426, 0xE426,\n    0xE426, 0xE426, 0xE426, 0x0000, 0xFF39, 0xFD22, 0xFA1C, 0xF687,\n    0xF2C1, 0xEF2C, 0xEC26, 0xEA0F, 0xE948, 0xE948, 0xE948, 0xE948,\n    0xE948, 0xE948, 0xE948, 0xE948, 0xE948, 0xE948, 0xE948, 0xE948,\n    0xE948, 0xE948, 0xE948, 0xEECD, 0xEEBF, 0xEE98, 0xEE60, 0xEE1E,\n    0xEDD8, 0xED95, 0xED5D, 0xED37, 0xED28, 0xED28, 0xED28, 0xED28,\n    0xED28, 0xED28, 0xED28, 0xED28, 0xED28, 0xED28, 0xED28, 0xED28,\n    0xED28, 0xED28, 0xED28, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002,\n    0x0002, 0x0003, 0x0004, 0x0004, 0x0005, 0x0005, 0x0005, 0x0005,\n    0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,\n    0x0005, 0x0005, 0x0005, 0x0000, 0x00E1, 0x033D, 0x06A7, 0x0AB4,\n    0x0EF6, 0x1303, 0x166D, 0x18C9, 0x19AA, 0x19AA, 0x19AA, 0x19AA,\n    0x19AA, 0x19AA, 0x19AA, 0x19AA, 0x19AA, 0x19AA, 0x19AA, 0x19AA,\n    0x19AA, 0x19AA, 0x19AA, 0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD,\n    0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD,\n    0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD,\n    0xEECD, 0xEECD, 0xEECD, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xC001, 0xBFCE, 0xBF49, 0xBE8B, 0xBDB1,\n    0xBCD6, 0xBC16, 0xBB8C, 0xBB52, 0xBB86, 0xBC83, 0xBE58, 0xC0A5,\n    0xC30E, 0xC534, 0xC6BA, 0xC79E, 0xC82B, 0xC875, 0xC891, 0xC893,\n    0xC88F, 0xC88F, 0xC88F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xC001, 0xBFCE, 0xBF49, 0xBE8B, 0xBDB1,\n    0xBCD6, 0xBC16, 0xBB8C, 0xBB52, 0xBB86, 0xBC83, 0xBE58, 0xC0A5,\n    0xC30E, 0xC534, 0xC6BA, 0xC79E, 0xC82B, 0xC875, 0xC891, 0xC893,\n    0xC88F, 0xC88F, 0xC88F, 0x0000, 0x0050, 0x0123, 0x024C, 0x039D,\n    0x04E9, 0x0602, 0x06BC, 0x06E9, 0x065C, 0x0504, 0x0306, 0x0087,\n    0xFDAF, 0xFAA0, 0xF780, 0xF476, 0xF1A5, 0xEF33, 0xED46, 0xEC03,\n    0xEB8F, 0xEB8F, 0xEB8F, 0x0000, 0xFEFC, 0xFC3B, 0xF82B, 0xF33E,\n    0xEDE3, 0xE88B, 0xE3A4, 0xDFA1, 0xDCEF, 0xDB43, 0xD9FB, 0xD90B,\n    0xD867, 0xD804, 0xD7D5, 0xD7CF, 0xD7E4, 0xD80A, 0xD834, 0xD856,\n    0xD864, 0xD864, 0xD864, 0xF1FD, 0xF1AA, 0xF0D1, 0xEF9B, 0xEE37,\n    0xECD0, 0xEB92, 0xEAA9, 0xEA42, 0xEA89, 0xEB86, 0xED11, 0xEF0A,\n    0xF153, 0xF3CB, 0xF655, 0xF8D0, 0xFB1D, 0xFD1E, 0xFEB3, 0xFFBD,\n    0x001B, 0x001B, 0x001B, 0x0000, 0xFF92, 0xFE6E, 0xFCCE, 0xFAEB,\n    0xF8FF, 0xF744, 0xF5F3, 0xF546, 0xF577, 0xF68D, 0xF84E, 0xFA97,\n    0xFD40, 0x0025, 0x0320, 0x060D, 0x08C6, 0x0B25, 0x0D05, 0x0E40,\n    0x0EB1, 0x0EB1, 0x0EB1, 0x0000, 0x00FC, 0x03AA, 0x079B, 0x0C64,\n    0x1197, 0x16C7, 0x1B87, 0x1F6B, 0x2206, 0x23A2, 0x24DC, 0x25C0,\n    0x2658, 0x26B2, 0x26D9, 0x26D9, 0x26BE, 0x2694, 0x2668, 0x2644,\n    0x2636, 0x2636, 0x2636, 0xF1FD, 0xF1B7, 0xF100, 0xEFFC, 0xEED2,\n    0xEDA8, 0xECA4, 0xEBEB, 0xEBA4, 0xEBF3, 0xECE5, 0xEE55, 0xF028,\n    0xF242, 0xF487, 0xF6DA, 0xF91E, 0xFB39, 0xFD0D, 0xFE7E, 0xFF71,\n    0xFFC8, 0xFFC8, 0xFFC8, 0x8001, 0xC000, 0xC000, 0x2000, 0x3FFF,\n    0xE000, 0x2000, 0x3FFF, 0xE000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0001, 0x0001, 0x0002, 0x0002, 0x0003, 0x0003, 0x0004, 0x0004,\n    0x0005, 0x0005, 0x0006, 0x0006, 0x0006, 0x0007, 0x0007, 0x0006,\n    0x0006, 0x0006, 0x0006, 0x0006, 0x0000, 0xFFBB, 0xFF02, 0xFDFB,\n    0xFCCA, 0xFB96, 0xFA82, 0xF9B3, 0xF950, 0xF97C, 0xFA63, 0xFBF9,\n    0xFE08, 0x005E, 0x02C8, 0x0513, 0x070C, 0x087F, 0x08E1, 0x0845,\n    0x0761, 0x06ED, 0x06ED, 0x06ED, 0x4000, 0x4000, 0x4000, 0x4000,\n    0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000,\n    0x4000, 0x4000, 0x4001, 0x4001, 0x4001, 0x4001, 0x4001, 0x4001,\n    0x4001, 0x4001, 0x4001, 0x4001,\n};\n\n// 0x0500BC88\nstatic const u16 king_bobomb_seg5_animindex_0500BC88[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0018, 0x0002, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0018, 0x0264, 0x0018, 0x027C, 0x0018, 0x0294,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0261, 0x0001, 0x0262, 0x0001, 0x0263,\n    0x0001, 0x0000, 0x0018, 0x016B, 0x0018, 0x0183,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x00AB,\n    0x0018, 0x001B, 0x0018, 0x0033, 0x0018, 0x004B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x025E, 0x0001, 0x025F, 0x0001, 0x0260,\n    0x0001, 0x0000, 0x0018, 0x019B, 0x0018, 0x01B3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x00C3,\n    0x0018, 0x0063, 0x0018, 0x007B, 0x0018, 0x0093,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x025D,\n    0x0018, 0x01CB, 0x0018, 0x01E3, 0x0018, 0x01FB,\n    0x0018, 0x00DB, 0x0018, 0x00F3, 0x0018, 0x010B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x025B, 0x0001, 0x025C,\n    0x0018, 0x0213, 0x0018, 0x022B, 0x0018, 0x0243,\n    0x0018, 0x0123, 0x0018, 0x013B, 0x0018, 0x0153,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x001A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x0500BDFC\nstatic const struct Animation king_bobomb_seg5_anim_0500BDFC = {\n    0,\n    0,\n    0,\n    0,\n    0x18,\n    ANIMINDEX_NUMPARTS(king_bobomb_seg5_animindex_0500BC88),\n    king_bobomb_seg5_animvalue_0500B730,\n    king_bobomb_seg5_animindex_0500BC88,\n    0,\n};\n"
  },
  {
    "path": "actors/king_bobomb/anims/anim_0500C2AC.inc.c",
    "content": "// 0x0500BE14\nstatic const s16 king_bobomb_seg5_animvalue_0500BE14[] = {\n    0x0000, 0x0000, 0xFFFD, 0xFFF4, 0xFFE9, 0xFFE0, 0xFFDC, 0xFFDE,\n    0xFFE1, 0xFFE6, 0xFFEB, 0xFFF2, 0xFFF8, 0xFFFD, 0x0001, 0x0007,\n    0x000D, 0x0013, 0x0019, 0x001F, 0x0024, 0x0028, 0x002A, 0x002B,\n    0x0029, 0x0023, 0x001A, 0x0011, 0x0008, 0x0002, 0x02A5, 0x02A7,\n    0x02AC, 0x02B2, 0x02B7, 0x02B9, 0x02B9, 0x02B7, 0x02B5, 0x02B2,\n    0x02B0, 0x02AE, 0x02AD, 0x02AE, 0x02AF, 0x02B1, 0x02B4, 0x02B6,\n    0x02B9, 0x02BB, 0x02BC, 0x02BD, 0x02BD, 0x02BC, 0x02B8, 0x02B3,\n    0x02AE, 0x02AA, 0x02A6, 0xFFFB, 0x0000, 0x001C, 0x006C, 0x00E4,\n    0x017A, 0x0225, 0x02DA, 0x038E, 0x0439, 0x04D0, 0x0548, 0x0597,\n    0x05B4, 0x05A5, 0x057C, 0x053B, 0x04E7, 0x0483, 0x0412, 0x0399,\n    0x031A, 0x0299, 0x021A, 0x01A1, 0x0130, 0x00CC, 0x0078, 0x0037,\n    0x000E, 0x0000, 0x0005, 0x0015, 0x002A, 0x0041, 0x0057, 0x0067,\n    0x006E, 0x0069, 0x0054, 0x002A, 0xFFEA, 0xFF38, 0xFE00, 0xFCA6,\n    0xFB8E, 0xFB1D, 0xFC4B, 0xFE8E, 0x0000, 0x0052, 0x007E, 0x008B,\n    0x0080, 0x0067, 0x0045, 0x0024, 0x000A, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0005, 0x0008,\n    0x000A, 0x0008, 0x0000, 0xFFE9, 0xFFC3, 0xFF9F, 0xFF8C, 0xFF89,\n    0xFF8D, 0xFF94, 0xFF9F, 0xFFAB, 0xFFB7, 0xFFC1, 0xFFCC, 0xFFDA,\n    0xFFE8, 0xFFF4, 0xFFFD, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0009, 0x001E, 0x0034, 0x003D, 0x0030, 0x0000,\n    0xFF84, 0xFEC0, 0xFDEF, 0xFD4A, 0xFCC4, 0xFC33, 0xFBA6, 0xFB2B,\n    0xFAD0, 0xFAA4, 0xFAB6, 0xFB3F, 0xFC45, 0xFD83, 0xFEB9, 0xFFA4,\n    0x0000, 0x00C8, 0x02AF, 0x050A, 0x072E, 0x0870, 0x0826, 0x05AA,\n    0x0165, 0xFC3F, 0xF71D, 0xF2E8, 0xF085, 0xF17D, 0xF545, 0xF9A7,\n    0xFC6E, 0xFD66, 0xFDEB, 0xFE1C, 0xFE1A, 0xFE05, 0xFDFD, 0xFE22,\n    0xFE76, 0xFEDD, 0xFF46, 0xFFA4, 0xFFE7, 0x0000, 0xFFFF, 0xFFFD,\n    0xFFFA, 0xFFF9, 0xFFFA, 0x0000, 0x000B, 0x001B, 0x002E, 0x0042,\n    0x0056, 0x0068, 0x0077, 0x0086, 0x0094, 0x00A2, 0x00B0, 0x00BF,\n    0x00D4, 0x00F0, 0x0109, 0x0117, 0x0112, 0x00F2, 0x00BC, 0x007C,\n    0x003F, 0x0011, 0x0000, 0x003F, 0x00E0, 0x01B4, 0x0290, 0x0346,\n    0x03AA, 0x03C0, 0x03AC, 0x0373, 0x0317, 0x029D, 0x0209, 0x0137,\n    0x001E, 0xFEE7, 0xFDBB, 0xFCC1, 0xFC24, 0xFC04, 0xFC4D, 0xFCD0,\n    0xFD63, 0xFDDA, 0xFE41, 0xFEB8, 0xFF31, 0xFF9A, 0xFFE4, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFDE, 0xFF92,\n    0xFF45, 0xFF23, 0xFF53, 0x0000, 0x019D, 0x0420, 0x06F7, 0x098E,\n    0x0B53, 0x0BB4, 0x09C0, 0x05C3, 0x0105, 0xFCD0, 0xFA69, 0xFA16,\n    0xFAEA, 0xFC69, 0xFE14, 0xFF71, 0xEA00, 0xEECC, 0x048C, 0x1C1A,\n    0xF843, 0xC8C0, 0xC8ED, 0xF7B2, 0xD966, 0xFAF7, 0xFDD9, 0x2652,\n    0xFD23, 0x8001, 0xC000, 0xC000, 0x2000, 0x3FFF, 0xE000, 0x2000,\n    0x3FFF, 0xE000, 0x054B, 0x0507, 0x0452, 0x0350, 0x0223, 0x00EF,\n    0xFFD9, 0xFEBB, 0xFD6E, 0xFC0C, 0xFAAE, 0xF96F, 0xF86A, 0xF7B7,\n    0xF772, 0xF7AC, 0xF854, 0xF950, 0xFA84, 0xFBD7, 0xFD2E, 0xFE6D,\n    0xFF7B, 0x007A, 0x0193, 0x02AC, 0x03AF, 0x0485, 0x0516, 0x0867,\n    0x0868, 0x0868, 0x0869, 0x086A, 0x086B, 0x086C, 0x086C, 0x086B,\n    0x086B, 0x086B, 0x086A, 0x0869, 0x0868, 0x0867, 0x0866, 0x0863,\n    0x0860, 0x085E, 0x085B, 0x0859, 0x0857, 0x0857, 0x0858, 0x085A,\n    0x085D, 0x0861, 0x0864, 0x0866, 0x4000, 0x4055, 0x412A, 0x423E,\n    0x4352, 0x4427, 0x447C, 0x445B, 0x4403, 0x437E, 0x42DA, 0x4222,\n    0x4163, 0x40A9, 0x4000, 0x3F50, 0x3E81, 0x3DA3, 0x3CC8, 0x3C00,\n    0x3B5D, 0x3AEF, 0x3AC6, 0x3B10, 0x3BCF, 0x3CD5, 0x3DF2, 0x3EF7,\n    0x3FB6, 0x0000,\n};\n\n// 0x0500C138\nstatic const u16 king_bobomb_seg5_animindex_0500C138[] = {\n    0x001D, 0x0001, 0x001D, 0x001E, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x001D, 0x013A, 0x001D, 0x0157, 0x001D, 0x0174,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0137, 0x0001, 0x0138, 0x0001, 0x0139,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0129,\n    0x001D, 0x0076, 0x001D, 0x0093, 0x001D, 0x00B0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001D, 0x003C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0134, 0x0001, 0x0135, 0x0001, 0x0136,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x012A,\n    0x001D, 0x00CD, 0x001D, 0x00EA, 0x001D, 0x0107,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001D, 0x0059,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0133,\n    0x0001, 0x012B, 0x0001, 0x012C, 0x0001, 0x012D,\n    0x0001, 0x0000, 0x0001, 0x0124, 0x0001, 0x0125,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0131, 0x0001, 0x0132,\n    0x0001, 0x012E, 0x0001, 0x012F, 0x0001, 0x0130,\n    0x0001, 0x0126, 0x0001, 0x0127, 0x0001, 0x0128,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x003B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x0500C2AC\nstatic const struct Animation king_bobomb_seg5_anim_0500C2AC = {\n    0,\n    0,\n    0,\n    0,\n    0x1D,\n    ANIMINDEX_NUMPARTS(king_bobomb_seg5_animindex_0500C138),\n    king_bobomb_seg5_animvalue_0500BE14,\n    king_bobomb_seg5_animindex_0500C138,\n    0,\n};\n"
  },
  {
    "path": "actors/king_bobomb/anims/anim_0500C520.inc.c",
    "content": "// 0x0500C2C4\nstatic const s16 king_bobomb_seg5_animvalue_0500C2C4[] = {\n    0x0000, 0x0000, 0xFFF5, 0xFFED, 0xFFFB, 0x000E, 0x0019, 0x000C,\n    0x0000, 0x01FB, 0xFFFB, 0x0891, 0x1343, 0x1CF0, 0x179F, 0x0E25,\n    0x041E, 0xFD26, 0x0844, 0xFE5F, 0x0695, 0x0EAA, 0x0AC4, 0x0324,\n    0xFD26, 0xFCC9, 0xFE59, 0xEECD, 0xEECD, 0xF697, 0xFBCB, 0xB036,\n    0x0970, 0x07DB, 0xB3B3, 0x00D3, 0x00D1, 0x00CF, 0x00D2, 0x00D6,\n    0x00D9, 0x00D6, 0x00D3, 0x0927, 0x087E, 0x07AA, 0x0830, 0x09A6,\n    0x0AA0, 0x0A02, 0x092A, 0x0757, 0x0749, 0x073E, 0x074A, 0x075E,\n    0x076B, 0x0763, 0x0757, 0x00D0, 0x00D1, 0x00D2, 0x00D0, 0x00CD,\n    0x00CB, 0x00CD, 0x00D0, 0xF66D, 0xF58F, 0xF4D2, 0xF5B5, 0xF71A,\n    0xF7F7, 0xF74F, 0xF670, 0x0626, 0x0623, 0x0623, 0x0630, 0x0641,\n    0x0649, 0x0639, 0x0626, 0x8001, 0xC000, 0xC000, 0x2000, 0x3FFF,\n    0xE000, 0x2000, 0x3FFF, 0xE000, 0x0005, 0xFF75, 0xFEF3, 0x0006,\n    0x00B1, 0x0133, 0x010C, 0x0009, 0x2B2F, 0x2C41, 0x2D52, 0x2E64,\n    0x2E5E, 0x2D58, 0x2C51, 0x2B4A, 0x4006, 0x4007, 0x4007, 0x4008,\n    0x4008, 0x4008, 0x4007, 0x4006,\n};\n\n// 0x0500C3AC\nstatic const u16 king_bobomb_seg5_animindex_0500C3AC[] = {\n    0x0008, 0x0001, 0x0001, 0x0009, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0008, 0x005C, 0x0008, 0x0064, 0x0008, 0x006C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0059, 0x0001, 0x005A, 0x0001, 0x005B,\n    0x0001, 0x001D, 0x0001, 0x001E, 0x0001, 0x001F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x000B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0056, 0x0001, 0x0057, 0x0001, 0x0058,\n    0x0001, 0x0020, 0x0001, 0x0021, 0x0001, 0x0022,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x0013,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0055,\n    0x0008, 0x0023, 0x0008, 0x002B, 0x0008, 0x0033,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x001B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0053, 0x0001, 0x0054,\n    0x0008, 0x003B, 0x0008, 0x0043, 0x0008, 0x004B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x001C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x000A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x0500C520\nstatic const struct Animation king_bobomb_seg5_anim_0500C520 = {\n    0,\n    0,\n    0,\n    0,\n    0x08,\n    ANIMINDEX_NUMPARTS(king_bobomb_seg5_animindex_0500C3AC),\n    king_bobomb_seg5_animvalue_0500C2C4,\n    king_bobomb_seg5_animindex_0500C3AC,\n    0,\n};\n"
  },
  {
    "path": "actors/king_bobomb/anims/anim_0500C774.inc.c",
    "content": "// 0x0500C538\nstatic const s16 king_bobomb_seg5_animvalue_0500C538[] = {\n    0x0000, 0x01FB, 0x01FB, 0x01F9, 0x01F7, 0xFFFB, 0x0891, 0x0887,\n    0x086A, 0x083A, 0xFE5F, 0xFE61, 0xFE67, 0xFE70, 0x0000, 0xFE72,\n    0xFA6F, 0xF4F4, 0x0000, 0xFEDF, 0xFBF2, 0xF7EF, 0xEECD, 0xEEA7,\n    0xEE47, 0xEDCB, 0xEECD, 0xEEB2, 0xEE6E, 0xEE15, 0xF697, 0xF6A8,\n    0xF6DA, 0xF725, 0xFBCB, 0xFBCF, 0xFBDD, 0xFBF3, 0xB036, 0xB040,\n    0xB05E, 0xB08F, 0x0970, 0x095B, 0x0920, 0x08C8, 0x07DB, 0x07D2,\n    0x07B8, 0x0791, 0xB3B3, 0xB3A6, 0xB383, 0xB353, 0x00D3, 0x00E5,\n    0x0114, 0x0156, 0x0927, 0x0913, 0x08DA, 0x0884, 0x0757, 0x07BD,\n    0x08BE, 0x0A15, 0x00D0, 0x00B9, 0x007A, 0x0021, 0xF66D, 0xF680,\n    0xF6B3, 0xF700, 0x0626, 0x0696, 0x07B5, 0x0938, 0x8001, 0xC000,\n    0xC000, 0x2000, 0x3FFF, 0xE000, 0x2000, 0x3FFF, 0xE000, 0x0005,\n    0x0005, 0x0005, 0x0005, 0x2B2F, 0x2AB5, 0x295A, 0x273A, 0x4006,\n    0x4006, 0x4006, 0x4006, 0x0000,\n};\n\n// 0x0500C600\nstatic const u16 king_bobomb_seg5_animindex_0500C600[] = {\n    0x0001, 0x0000, 0x0004, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0004, 0x0057, 0x0004, 0x005B, 0x0004, 0x005F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0054, 0x0001, 0x0055, 0x0001, 0x0056,\n    0x0004, 0x001E, 0x0004, 0x0022, 0x0004, 0x0026,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0004, 0x000E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0004, 0x0006,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0051, 0x0001, 0x0052, 0x0001, 0x0053,\n    0x0004, 0x002A, 0x0004, 0x002E, 0x0004, 0x0032,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0004, 0x0012,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0004, 0x000A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0050,\n    0x0004, 0x0036, 0x0004, 0x003A, 0x0004, 0x003E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0004, 0x0016,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x004E, 0x0001, 0x004F,\n    0x0004, 0x0042, 0x0004, 0x0046, 0x0004, 0x004A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0004, 0x001A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0005,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x0500C774\nstatic const struct Animation king_bobomb_seg5_anim_0500C774 = {\n    0,\n    0,\n    0,\n    0,\n    0x04,\n    ANIMINDEX_NUMPARTS(king_bobomb_seg5_animindex_0500C600),\n    king_bobomb_seg5_animvalue_0500C538,\n    king_bobomb_seg5_animindex_0500C600,\n    0,\n};\n"
  },
  {
    "path": "actors/king_bobomb/anims/anim_0500CFCC.inc.c",
    "content": "// 0x0500C78C\nstatic const s16 king_bobomb_seg5_animvalue_0500C78C[] = {\n    0x0000, 0x0000, 0x0003, 0x000E, 0x001F, 0x0033, 0x004B, 0x0064,\n    0x007D, 0x0094, 0x00A9, 0x00B9, 0x00C4, 0x00C8, 0x00B7, 0x008D,\n    0x0058, 0x0024, 0x0000, 0xFFF5, 0xFFFB, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x02A5, 0x02A6, 0x02A9, 0x02AC, 0x02B1,\n    0x02B7, 0x02BD, 0x02C3, 0x02C8, 0x02CD, 0x02D1, 0x02D4, 0x02D5,\n    0x02D2, 0x02C8, 0x02BD, 0x02B1, 0x02A8, 0x02A3, 0x02A1, 0x02A1,\n    0x02A1, 0x02A2, 0x02A3, 0x02A5, 0x02A5, 0xFFFB, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0xFF3F, 0xFDC5, 0xFCBE, 0xFC7B, 0xFC73, 0xFC8C, 0xFCAD, 0xFCBE,\n    0x0000, 0xFFED, 0xFFCC, 0xFFA1, 0xFF6F, 0xFF37, 0xFEFC, 0xFEC1,\n    0xFE89, 0xFE56, 0xFE2B, 0xFE0B, 0xFDF7, 0xFE32, 0xFEC0, 0xFF49,\n    0xFFBF, 0x0000, 0xFFB8, 0xFF2B, 0xFEC9, 0xFEB0, 0xFEAD, 0xFEB6,\n    0xFEC2, 0xFEC9, 0x0000, 0x0043, 0x00B6, 0x014F, 0x0202, 0x02C8,\n    0x0395, 0x0461, 0x0521, 0x05CC, 0x0658, 0x06BB, 0x06EC, 0x05C9,\n    0x0352, 0x0135, 0x0042, 0x0000, 0x0005, 0x0011, 0x0019, 0x001B,\n    0x001B, 0x001A, 0x0019, 0x0019, 0x0000, 0x0004, 0x000C, 0x0016,\n    0x0022, 0x0030, 0x003E, 0x004B, 0x0057, 0x0062, 0x006A, 0x0071,\n    0x0078, 0x007D, 0x0080, 0x0080, 0x007C, 0x0073, 0x0045, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x005D,\n    0x0105, 0x01E4, 0x02E9, 0x0402, 0x051C, 0x0627, 0x070E, 0x07C2,\n    0x082F, 0x084A, 0x081A, 0x07AC, 0x070D, 0x0649, 0x056D, 0x0486,\n    0x0299, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xFEFC, 0xFD1F, 0xFAA3, 0xF7C1, 0xF4B2, 0xF1AE, 0xEEEF,\n    0xECAE, 0xEB23, 0xEA87, 0xEB4F, 0xED83, 0xF0B4, 0xF476, 0xF85B,\n    0xFBF5, 0xFED8, 0xFFE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xFFF2, 0xFFDA, 0xFFBA, 0xFF95, 0xFF6B,\n    0xFF41, 0xFF16, 0xFEEF, 0xFECD, 0xFEB2, 0xFEA0, 0xFE9A, 0xFEBF,\n    0xFF18, 0xFF82, 0xFFDB, 0x0000, 0x0000, 0x0002, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0000, 0xFF97, 0xFEE3, 0xFDF4,\n    0xFCDA, 0xFBA6, 0xFA66, 0xF92C, 0xF806, 0xF707, 0xF63C, 0xF5B7,\n    0xF587, 0xF69E, 0xF937, 0xFC50, 0xFEEA, 0x0000, 0x0152, 0x03E8,\n    0x05B4, 0x0629, 0x0637, 0x060B, 0x05D1, 0x05B4, 0x0000, 0xFFAC,\n    0xFF1B, 0xFE5A, 0xFD77, 0xFC7E, 0xFB7C, 0xFA7F, 0xF992, 0xF8C4,\n    0xF821, 0xF7B5, 0xF78E, 0xF86F, 0xFA87, 0xFD07, 0xFF20, 0x0000,\n    0x0000, 0x0002, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001,\n    0x0001, 0x0001, 0x0002, 0x0002, 0x0002, 0x0002, 0x0001, 0x0001,\n    0x0000, 0x0000, 0xFFFB, 0xFFF0, 0xFFDF, 0xFFDD, 0xFFDD, 0xFFDD,\n    0xFFDE, 0xFFDF, 0x0000, 0xFFDE, 0xFFAF, 0xFF74, 0xFF2F, 0xFEE2,\n    0xFE8E, 0xFE34, 0xFDD7, 0xFD77, 0xFD17, 0xFCB7, 0xFC59, 0xFBFF,\n    0xFBAA, 0xFB5C, 0xFB16, 0xFAD9, 0xFB2D, 0xFBEE, 0xFCC5, 0xFCDC,\n    0xFCDF, 0xFCD6, 0xFCCB, 0xFCC5, 0x0000, 0x0000, 0xFFFE, 0xFFFC,\n    0xFFF9, 0xFFF5, 0xFFF1, 0xFFEE, 0xFFEB, 0xFFE8, 0xFFE6, 0xFFE5,\n    0xFFE5, 0xFFE7, 0xFFEA, 0xFFEF, 0xFFF7, 0x0000, 0x0051, 0x00D1,\n    0x0139, 0x0144, 0x0146, 0x0142, 0x013C, 0x0139, 0xC748, 0xC867,\n    0xCA13, 0xCC37, 0xCEBE, 0xD194, 0xD4A4, 0xD7DC, 0xDB25, 0xDE6C,\n    0xE19D, 0xE4A3, 0xE769, 0xE9DC, 0xEBE7, 0xED76, 0xEE74, 0xEECD,\n    0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD,\n    0x0008, 0x00A4, 0x011A, 0x016E, 0x01A3, 0x01BD, 0x01C0, 0x01AF,\n    0x018F, 0x0162, 0x012D, 0x00F3, 0x00B8, 0x007F, 0x004D, 0x0024,\n    0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x4AF7, 0x47B9, 0x43B6, 0x3F0F, 0x39E2, 0x3450,\n    0x2E78, 0x287C, 0x2279, 0x1C91, 0x16E4, 0x1190, 0x0CB7, 0x0878,\n    0x04F3, 0x0248, 0x0097, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0xBA17, 0xBCD9, 0xC008, 0xC390,\n    0xC75E, 0xCB5E, 0xCF7C, 0xD3A5, 0xD7C6, 0xDBCB, 0xDF9F, 0xE331,\n    0xE66B, 0xE93C, 0xEB8E, 0xED4F, 0xEE6A, 0xEECD, 0xEECD, 0xEECD,\n    0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD, 0x0000, 0xFF8C,\n    0xFEEA, 0xFE1F, 0xFD32, 0xFC28, 0xFB06, 0xF9D3, 0xF893, 0xF74D,\n    0xF607, 0xF4C5, 0xF38F, 0xF268, 0xF158, 0xF063, 0xEF90, 0xEEE4,\n    0xEFDD, 0xF26A, 0xF439, 0xF4A7, 0xF4B4, 0xF48B, 0xF455, 0xF439,\n    0x0000, 0x0003, 0x000C, 0x001A, 0x002B, 0x003E, 0x0052, 0x0065,\n    0x0077, 0x0086, 0x0091, 0x0096, 0x0095, 0x008C, 0x007A, 0x005D,\n    0x0035, 0x0000, 0xFED0, 0xFCBD, 0xFB50, 0xFAF0, 0xFAE4, 0xFB08,\n    0xFB38, 0xFB50, 0xC9C8, 0xC93F, 0xC882, 0xC797, 0xC684, 0xC54F,\n    0xC3FF, 0xC29A, 0xC125, 0xBFA8, 0xBE28, 0xBCAC, 0xBB39, 0xB9D7,\n    0xB88B, 0xB75B, 0xB64E, 0xB569, 0xB5D7, 0xB7C3, 0xB9B2, 0xBB63,\n    0xBD52, 0xBF25, 0xC080, 0xC107, 0x0000, 0x0057, 0x00CC, 0x015C,\n    0x0203, 0x02BF, 0x038C, 0x0467, 0x054E, 0x063D, 0x0732, 0x0829,\n    0x091F, 0x0A11, 0x0AFC, 0x0BDE, 0x0CB3, 0x0D78, 0x0DE0, 0x0DF1,\n    0x0DFC, 0x0DFF, 0x0DFD, 0x0DF8, 0x0DF4, 0x0DF1, 0x0000, 0x0001,\n    0xFFFF, 0xFFFA, 0xFFF3, 0xFFEB, 0xFFE3, 0xFFDC, 0xFFD7, 0xFFD6,\n    0xFFD8, 0xFFDF, 0xFFEC, 0xFFFF, 0x001A, 0x003E, 0x006C, 0x00A4,\n    0x028F, 0x049B, 0x04F3, 0x050C, 0x04FA, 0x04D4, 0x04AD, 0x049B,\n    0xC9C8, 0xC943, 0xC88F, 0xC7B0, 0xC6AD, 0xC58A, 0xC44C, 0xC2F9,\n    0xC196, 0xC027, 0xBEB3, 0xBD3E, 0xBBCD, 0xBA66, 0xB90E, 0xB7C9,\n    0xB69E, 0xB591, 0xB5C6, 0xB70C, 0xB86C, 0xBA15, 0xBBC9, 0xBD4C,\n    0xBE60, 0xBECA, 0x0ED6, 0x0E6A, 0x0DC9, 0x0CFC, 0x0C09, 0x0AF8,\n    0x09D2, 0x089D, 0x0761, 0x0626, 0x04F3, 0x03D1, 0x02C6, 0x01DA,\n    0x0116, 0x0080, 0x0021, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x1A05, 0x1948, 0x182E, 0x16C6,\n    0x151C, 0x133E, 0x1139, 0x0F1B, 0x0CF1, 0x0AC8, 0x08AF, 0x06B1,\n    0x04DD, 0x0341, 0x01E8, 0x00E2, 0x003A, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xF44D, 0xF43C,\n    0xF423, 0xF403, 0xF3DD, 0xF3B2, 0xF385, 0xF354, 0xF323, 0xF2F2,\n    0xF2C2, 0xF295, 0xF26C, 0xF247, 0xF228, 0xF211, 0xF202, 0xF1FD,\n    0xF1FD, 0xF1FD, 0xF1FD, 0xF1FD, 0xF1FD, 0xF1FD, 0xF1FD, 0xF1FD,\n    0xF933, 0xF931, 0xF955, 0xF998, 0xF9F6, 0xFA6A, 0xFAF0, 0xFB83,\n    0xFC1E, 0xFCBD, 0xFD5A, 0xFDF2, 0xFE7F, 0xFEFE, 0xFF68, 0xFFBA,\n    0xFFEE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0215, 0x01A2, 0x013F, 0x00EC, 0x00A8, 0x0070,\n    0x0044, 0x0023, 0x000B, 0xFFFC, 0xFFF3, 0xFFEF, 0xFFEF, 0xFFF2,\n    0xFFF6, 0xFFFB, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0xF487, 0xF479, 0xF461, 0xF440,\n    0xF418, 0xF3EB, 0xF3B8, 0xF383, 0xF34C, 0xF315, 0xF2DF, 0xF2AB,\n    0xF27C, 0xF252, 0xF22F, 0xF214, 0xF203, 0xF1FD, 0xF1FD, 0xF1FD,\n    0xF1FD, 0xF1FD, 0xF1FD, 0xF1FD, 0xF1FD, 0xF1FD, 0x8001, 0xC000,\n    0xC000, 0x2000, 0x3FFF, 0xE000, 0x2000, 0x3FFF, 0xE000, 0x0000,\n    0x0009, 0x001A, 0x0030, 0x004B, 0x0067, 0x0085, 0x00A3, 0x00BE,\n    0x00D6, 0x00E9, 0x00F5, 0x00FA, 0x00E4, 0x00AD, 0x0068, 0x0029,\n    0x0003, 0xFFF5, 0xFFEE, 0xFFEC, 0xFFEF, 0xFFF4, 0xFFFA, 0xFFFF,\n    0x0000, 0x09C7, 0x095C, 0x08BB, 0x07EB, 0x06F3, 0x05D9, 0x04A5,\n    0x035D, 0x0208, 0x00AE, 0xFF55, 0xFE04, 0xFCC1, 0xFB20, 0xF907,\n    0xF6F7, 0xF574, 0xF500, 0xF5AA, 0xF700, 0xF8C6, 0xFAC0, 0xFCB2,\n    0xFE60, 0xFF8E, 0x0000, 0x4002, 0x3F88, 0x3EB4, 0x3D9B, 0x3C50,\n    0x3AE6, 0x3971, 0x3806, 0x36B7, 0x3599, 0x34BF, 0x343C, 0x3426,\n    0x3555, 0x37FD, 0x3B3E, 0x3E35, 0x4000, 0x4000, 0x4000, 0x4000,\n    0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x0000,\n};\n\n// 0x0500CE58\nstatic const u16 king_bobomb_seg5_animindex_0500CE58[] = {\n    0x001A, 0x0001, 0x001A, 0x001B, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x001A, 0x0317, 0x001A, 0x0331, 0x001A, 0x034B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0314, 0x0001, 0x0315, 0x0001, 0x0316,\n    0x001A, 0x01D6, 0x001A, 0x01F0, 0x001A, 0x020A,\n    0x001A, 0x00D2, 0x001A, 0x00EC, 0x001A, 0x0106,\n    0x001A, 0x0036, 0x001A, 0x0050, 0x001A, 0x006A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0311, 0x0001, 0x0312, 0x0001, 0x0313,\n    0x001A, 0x0224, 0x001A, 0x023E, 0x001A, 0x0258,\n    0x001A, 0x0120, 0x001A, 0x013A, 0x001A, 0x0154,\n    0x001A, 0x0084, 0x001A, 0x009E, 0x001A, 0x00B8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0310,\n    0x001A, 0x0272, 0x001A, 0x028C, 0x001A, 0x02A6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001A, 0x016E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x030E, 0x0001, 0x030F,\n    0x001A, 0x02C0, 0x001A, 0x02DA, 0x001A, 0x02F4,\n    0x001A, 0x0188, 0x001A, 0x01A2, 0x001A, 0x01BC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0035,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x0500CFCC\nstatic const struct Animation king_bobomb_seg5_anim_0500CFCC = {\n    0,\n    0,\n    0,\n    0,\n    0x1A,\n    ANIMINDEX_NUMPARTS(king_bobomb_seg5_animindex_0500CE58),\n    king_bobomb_seg5_animvalue_0500C78C,\n    king_bobomb_seg5_animindex_0500CE58,\n    0,\n};\n"
  },
  {
    "path": "actors/king_bobomb/anims/anim_0500D5B0.inc.c",
    "content": "// 0x0500CFE4\nstatic const s16 king_bobomb_seg5_animvalue_0500CFE4[] = {\n    0x0000, 0x02A5, 0xFFFB, 0xC748, 0xC73E, 0xC724, 0xC6F9, 0xC6C1,\n    0xC67E, 0xC630, 0xC5DA, 0xC57E, 0xC51E, 0xC4BB, 0xC457, 0xC3F5,\n    0xC396, 0xC33C, 0xC2E8, 0xC29E, 0xC25E, 0xC22A, 0xC205, 0xC1F0,\n    0xC1ED, 0xC1FD, 0xC224, 0xC262, 0xC2BA, 0xC32D, 0xC3BD, 0xC46C,\n    0xC53D, 0xC630, 0xC748, 0x0008, 0xFFBF, 0xFEEF, 0xFDAC, 0xFC0D,\n    0xFA25, 0xF809, 0xF5CF, 0xF38A, 0xF14F, 0xEF33, 0xED4B, 0xEBAC,\n    0xEA6A, 0xE999, 0xE94F, 0xE97E, 0xEA04, 0xEAD8, 0xEBF0, 0xED43,\n    0xEEC6, 0xF070, 0xF238, 0xF413, 0xF5F8, 0xF7DE, 0xF9BA, 0xFB82,\n    0xFD2E, 0xFEB4, 0x0008, 0x4AF7, 0x4B31, 0x4BD6, 0x4CD4, 0x4E1B,\n    0x4F9C, 0x5146, 0x5307, 0x54D1, 0x5693, 0x583D, 0x59BD, 0x5B05,\n    0x5C03, 0x5CA8, 0x5CE2, 0x5CFA, 0x5D36, 0x5D86, 0x5DD9, 0x5E1F,\n    0x5E46, 0x5E3E, 0x5DF7, 0x5D5F, 0x5C67, 0x5AFC, 0x5910, 0x5690,\n    0x536C, 0x4F94, 0x4AF7, 0xBA17, 0xB9B4, 0xB89D, 0xB6ED, 0xB4C0,\n    0xB232, 0xAF5F, 0xAC63, 0xA958, 0xA65C, 0xA389, 0xA0FB, 0x9ECE,\n    0x9D1E, 0x9C07, 0x9BA4, 0x9BB8, 0x9BF7, 0x9C65, 0x9D07, 0x9DE0,\n    0x9EF4, 0xA048, 0xA1E0, 0xA3C0, 0xA5EC, 0xA868, 0xAB38, 0xAE61,\n    0xB1E6, 0xB5CC, 0xBA17, 0x0000, 0x0004, 0x000F, 0x0021, 0x003A,\n    0x0057, 0x0079, 0x009E, 0x00C6, 0x00EF, 0x011A, 0x0145, 0x0170,\n    0x0199, 0x01C0, 0x01E4, 0x0204, 0x0220, 0x0237, 0x0247, 0x0250,\n    0x0251, 0x024A, 0x0239, 0x021E, 0x01F8, 0x01C7, 0x0188, 0x013C,\n    0x00E2, 0x0079, 0x0000, 0xC9C8, 0xC9CD, 0xC9DB, 0xC9F1, 0xCA0D,\n    0xCA30, 0xCA58, 0xCA85, 0xCAB4, 0xCAE6, 0xCB19, 0xCB4C, 0xCB7F,\n    0xCBB0, 0xCBDE, 0xCC09, 0xCC30, 0xCC51, 0xCC6B, 0xCC7E, 0xCC89,\n    0xCC8B, 0xCC82, 0xCC6E, 0xCC4E, 0xCC21, 0xCBE6, 0xCB9C, 0xCB41,\n    0xCAD6, 0xCA58, 0xC9C8, 0x0000, 0xFFFD, 0xFFF4, 0xFFE5, 0xFFD1,\n    0xFFBA, 0xFF9E, 0xFF80, 0xFF60, 0xFF3E, 0xFF1C, 0xFEF9, 0xFED6,\n    0xFEB5, 0xFE95, 0xFE78, 0xFE5E, 0xFE48, 0xFE35, 0xFE28, 0xFE21,\n    0xFE20, 0xFE26, 0xFE33, 0xFE49, 0xFE68, 0xFE90, 0xFEC3, 0xFF00,\n    0xFF49, 0xFF9E, 0x0000, 0xC9C8, 0xC9CD, 0xC9DB, 0xC9F1, 0xCA0D,\n    0xCA30, 0xCA58, 0xCA85, 0xCAB4, 0xCAE6, 0xCB19, 0xCB4C, 0xCB7F,\n    0xCBB0, 0xCBDE, 0xCC09, 0xCC30, 0xCC51, 0xCC6B, 0xCC7E, 0xCC89,\n    0xCC8B, 0xCC82, 0xCC6E, 0xCC4E, 0xCC21, 0xCBE6, 0xCB9C, 0xCB41,\n    0xCAD6, 0xCA58, 0xC9C8, 0x0ED6, 0x0ED9, 0x0EE3, 0x0EF3, 0x0F08,\n    0x0F22, 0x0F3F, 0x0F5F, 0x0F81, 0x0FA5, 0x0FCA, 0x0FEF, 0x1014,\n    0x1038, 0x1059, 0x1078, 0x1094, 0x10AC, 0x10C0, 0x10CE, 0x10D5,\n    0x10D7, 0x10D0, 0x10C2, 0x10AB, 0x108A, 0x105F, 0x1029, 0x0FE7,\n    0x0F9A, 0x0F3F, 0x0ED6, 0x1A05, 0x1A0C, 0x1A1D, 0x1A39, 0x1A5D,\n    0x1A8A, 0x1ABD, 0x1AF5, 0x1B32, 0x1B71, 0x1BB2, 0x1BF3, 0x1C33,\n    0x1C72, 0x1CAD, 0x1CE3, 0x1D14, 0x1D3E, 0x1D60, 0x1D79, 0x1D87,\n    0x1D89, 0x1D7E, 0x1D64, 0x1D3C, 0x1D02, 0x1CB7, 0x1C58, 0x1BE5,\n    0x1B5C, 0x1ABD, 0x1A05, 0xF44D, 0xF44D, 0xF44F, 0xF451, 0xF454,\n    0xF458, 0xF45D, 0xF462, 0xF467, 0xF46D, 0xF473, 0xF478, 0xF47E,\n    0xF484, 0xF489, 0xF48E, 0xF492, 0xF496, 0xF499, 0xF49B, 0xF49C,\n    0xF49C, 0xF49C, 0xF499, 0xF496, 0xF491, 0xF48A, 0xF481, 0xF477,\n    0xF46B, 0xF45D, 0xF44D, 0xF933, 0xF952, 0xF9A9, 0xFA30, 0xFADD,\n    0xFBA9, 0xFC8B, 0xFD79, 0xFE6C, 0xFF5B, 0x003B, 0x0107, 0x01B5,\n    0x023B, 0x0293, 0x02B2, 0x0298, 0x0251, 0x01E2, 0x0151, 0x00A5,\n    0xFFE4, 0xFF14, 0xFE3B, 0xFD60, 0xFC89, 0xFBBD, 0xFB00, 0xFA5B,\n    0xF9D3, 0xF96E, 0xF933, 0x0215, 0x0243, 0x02C3, 0x0388, 0x0487,\n    0x05B2, 0x06FD, 0x085B, 0x09C0, 0x0B1E, 0x0C69, 0x0D94, 0x0E93,\n    0x0F59, 0x0FD9, 0x1006, 0x0FEB, 0x0F9C, 0x0F1F, 0x0E7A, 0x0DB2,\n    0x0CCC, 0x0BCE, 0x0ABD, 0x099F, 0x0878, 0x074F, 0x0629, 0x050A,\n    0x03F9, 0x02FB, 0x0215, 0xF487, 0xF482, 0xF474, 0xF45F, 0xF444,\n    0xF425, 0xF402, 0xF3DD, 0xF3B7, 0xF392, 0xF36F, 0xF34F, 0xF334,\n    0xF31F, 0xF311, 0xF30D, 0xF312, 0xF320, 0xF336, 0xF352, 0xF374,\n    0xF398, 0xF3BF, 0xF3E6, 0xF40D, 0xF431, 0xF451, 0xF46C, 0xF480,\n    0xF48C, 0xF48F, 0xF487, 0x8001, 0xC000, 0xC000, 0x2000, 0x3FFF,\n    0xE000, 0x2000, 0x3FFF, 0xE000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x09C7, 0x09CC, 0x09DA, 0x09F0,\n    0x0A0D, 0x0A31, 0x0A5A, 0x0A87, 0x0AB7, 0x0AEA, 0x0B1E, 0x0B52,\n    0x0B86, 0x0BB8, 0x0BE7, 0x0C13, 0x0C3A, 0x0C5C, 0x0C77, 0x0C8B,\n    0x0C96, 0x0C98, 0x0C8F, 0x0C7B, 0x0C5A, 0x0C2C, 0x0BEF, 0x0BA3,\n    0x0B47, 0x0ADA, 0x0A5A, 0x09C7, 0x4002, 0x4002, 0x4002, 0x4002,\n    0x4002, 0x4002, 0x4002, 0x4002, 0x4002, 0x4002, 0x4002, 0x4002,\n    0x4002, 0x4002, 0x4002, 0x4002, 0x4002, 0x4002, 0x4002, 0x4002,\n    0x4002, 0x4002, 0x4002, 0x4002, 0x4002, 0x4002, 0x4002, 0x4002,\n    0x4002, 0x4002, 0x4002, 0x4002,\n};\n\n// 0x0500D43C\nstatic const u16 king_bobomb_seg5_animindex_0500D43C[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0020, 0x01CC, 0x0020, 0x01EC, 0x0020, 0x020C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x01C9, 0x0001, 0x01CA, 0x0001, 0x01CB,\n    0x0020, 0x0083, 0x0001, 0x0000, 0x0020, 0x00A3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x01C6, 0x0001, 0x01C7, 0x0001, 0x01C8,\n    0x0020, 0x00C3, 0x0001, 0x0000, 0x0020, 0x00E3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01C5,\n    0x0020, 0x0103, 0x0020, 0x0123, 0x0020, 0x0143,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0020, 0x0003,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x01C3, 0x0001, 0x01C4,\n    0x0020, 0x0163, 0x0020, 0x0183, 0x0020, 0x01A3,\n    0x0020, 0x0023, 0x0020, 0x0043, 0x0020, 0x0063,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0002,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x0500D5B0\nstatic const struct Animation king_bobomb_seg5_anim_0500D5B0 = {\n    0,\n    0,\n    0,\n    0,\n    0x20,\n    ANIMINDEX_NUMPARTS(king_bobomb_seg5_animindex_0500D43C),\n    king_bobomb_seg5_animvalue_0500CFE4,\n    king_bobomb_seg5_animindex_0500D43C,\n    0,\n};\n"
  },
  {
    "path": "actors/king_bobomb/anims/anim_0500D978.inc.c",
    "content": "// 0x0500D5C8\nstatic const s16 king_bobomb_seg5_animvalue_0500D5C8[] = {\n    0x0000, 0x02A5, 0xFFFB, 0x0209, 0x0078, 0xFD29, 0xFA2F, 0xF80F,\n    0xF645, 0xF561, 0xF5D7, 0xF732, 0xF8AB, 0xFA1E, 0xFBD1, 0xFD99,\n    0xFF48, 0x00B2, 0x01AC, 0x0000, 0xFDE1, 0xFA09, 0xF843, 0xFA27,\n    0xFDBB, 0x016D, 0x03AA, 0x0309, 0x00BF, 0xFF30, 0xFEF7, 0xFF09,\n    0xFF4A, 0xFF9C, 0xFFE3, 0x0000, 0xFFA6, 0xFEDE, 0xFE16, 0xFDBB,\n    0xFE0F, 0xFECA, 0xFF90, 0x0000, 0xFFED, 0xFF8F, 0xFF27, 0xFEF6,\n    0xFF1F, 0xFF7B, 0xFFD7, 0x0000, 0x00A6, 0x0237, 0x0420, 0x05CF,\n    0x0792, 0x0992, 0x0AFC, 0x0B00, 0x08B6, 0x04C8, 0x00C0, 0xFE27,\n    0xFDAB, 0xFE64, 0xFF75, 0xEECD, 0xEC6B, 0xE72F, 0xE1F2, 0xDF90,\n    0xE100, 0xE4AA, 0xE996, 0xEECD, 0xF58E, 0xFDDD, 0x04E8, 0x07E1,\n    0x03F6, 0xFB57, 0xF2B8, 0x0003, 0xFFFC, 0xFFEB, 0xFFDA, 0xFFD3,\n    0xFFD3, 0xFFD9, 0xFFE8, 0x0003, 0x003E, 0x0091, 0x00DA, 0x00F9,\n    0x00D3, 0x007E, 0x002A, 0xED43, 0xEF3F, 0xF413, 0xFA08, 0xFF6B,\n    0x04D3, 0x0AD0, 0x0FA1, 0x1184, 0x0F3E, 0x0A00, 0x03A9, 0xFE1D,\n    0xF8EE, 0xF36C, 0xEF0B, 0xEECB, 0xF0D5, 0xF551, 0xF9CE, 0xFBD9,\n    0xFA96, 0xF764, 0xF32B, 0xEED2, 0xE968, 0xE2D6, 0xDD4B, 0xDAF5,\n    0xDE0E, 0xE4E0, 0xEBB2, 0xC61E, 0xC518, 0xC276, 0xBED9, 0xBAE5,\n    0xB73D, 0xB485, 0xB360, 0xB3F0, 0xB5B0, 0xB847, 0xBB5B, 0xBE95,\n    0xC19B, 0xC414, 0xC59E, 0xAE7C, 0xAFC4, 0xB311, 0xB795, 0xBC83,\n    0xC10B, 0xC461, 0xC5B5, 0xC4D3, 0xC261, 0xBED7, 0xBAB1, 0xB666,\n    0xB272, 0xAF4D, 0xAE3F, 0x0003, 0x0003, 0x0004, 0x0004, 0x0005,\n    0x0006, 0x0006, 0x0007, 0x0007, 0x0007, 0x0006, 0x0006, 0x0005,\n    0x0004, 0x0004, 0x0003, 0xF639, 0xF707, 0xF927, 0xFC27, 0xFF98,\n    0x0308, 0x0608, 0x0828, 0x08F6, 0x0836, 0x0634, 0x034E, 0xFFE5,\n    0xFC54, 0xF8FC, 0xF639, 0xF1FD, 0xF1FD, 0xF1FD, 0xF1FE, 0xF1FE,\n    0xF1FF, 0xF1FF, 0xF1FF, 0xF1FF, 0xF1FF, 0xF1FF, 0xF1FF, 0xF1FE,\n    0xF1FE, 0xF1FD, 0xF1FD, 0x0003, 0xF569, 0xF652, 0xF8B8, 0xFC1D,\n    0x0000, 0x03E3, 0x0748, 0x09AE, 0x0A97, 0x09BE, 0x0779, 0x0433,\n    0x0056, 0xFC50, 0xF887, 0xF569, 0xF1FD, 0xF1FD, 0xF1FD, 0xF1FD,\n    0xF1FD, 0xF1FE, 0xF1FE, 0xF1FE, 0xF1FE, 0xF1FE, 0xF1FE, 0xF1FE,\n    0xF1FD, 0xF1FD, 0xF1FD, 0xF1FD, 0x8001, 0xC000, 0xC000, 0x2000,\n    0x3FFF, 0xE000, 0x2000, 0x3FFF, 0xE000, 0x0288, 0x0238, 0x0164,\n    0x0037, 0xFEDF, 0xFD85, 0xFC55, 0xFB7C, 0xFB25, 0xFB6B, 0xFC31,\n    0xFD4D, 0xFE94, 0xFFDB, 0x00F8, 0x01C3, 0x2235, 0x40B7, 0x40B0,\n    0x409F, 0x4086, 0x4068, 0x4049, 0x402B, 0x4013, 0x4002, 0x3FFA,\n    0x3FF6, 0x3FF5, 0x3FF7, 0x3FFB, 0x3FFE, 0x4001,\n};\n\n// 0x0500D804\nstatic const u16 king_bobomb_seg5_animindex_0500D804[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0010, 0x00FD, 0x0001, 0x010D, 0x0010, 0x010E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x00FA, 0x0001, 0x00FB, 0x0001, 0x00FC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x0083,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x0003,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x00F7, 0x0001, 0x00F8, 0x0001, 0x00F9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x0093,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x0013,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00F6,\n    0x0010, 0x00A3, 0x0010, 0x00B3, 0x0010, 0x00C3,\n    0x0010, 0x0023, 0x0010, 0x0033, 0x0010, 0x0043,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x00F4, 0x0001, 0x00F5,\n    0x0001, 0x00D3, 0x0010, 0x00D4, 0x0010, 0x00E4,\n    0x0010, 0x0053, 0x0010, 0x0063, 0x0010, 0x0073,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0002,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x0500D978\nstatic const struct Animation king_bobomb_seg5_anim_0500D978 = {\n    0,\n    0,\n    0,\n    0,\n    0x10,\n    ANIMINDEX_NUMPARTS(king_bobomb_seg5_animindex_0500D804),\n    king_bobomb_seg5_animvalue_0500D5C8,\n    king_bobomb_seg5_animindex_0500D804,\n    0,\n};\n"
  },
  {
    "path": "actors/king_bobomb/anims/anim_0500DDD8.inc.c",
    "content": "// 0x0500D990\nstatic const s16 king_bobomb_seg5_animvalue_0500D990[] = {\n    0x0000, 0x031E, 0x0305, 0x02EB, 0x02CD, 0x02B3, 0x02A3, 0x029D,\n    0x029B, 0x029B, 0x029C, 0x029F, 0x02A2, 0x02A4, 0x02A5, 0x0015,\n    0x0021, 0x002E, 0x003C, 0x004C, 0x005F, 0x006C, 0x0070, 0x006A,\n    0x0057, 0x003C, 0x001F, 0x0008, 0x0000, 0xFFFB, 0x13E6, 0x0C63,\n    0x07C1, 0x03FD, 0x00FF, 0xFEAF, 0xFCF4, 0xFBB5, 0xFB4F, 0xFBE7,\n    0xFD15, 0xFE6E, 0xFF8A, 0x0000, 0xFC03, 0xFAED, 0xFAC4, 0xFAFF,\n    0xFB7E, 0xFC21, 0xFCC5, 0xFD4C, 0xFDCA, 0xFE60, 0xFEF7, 0xFF7D,\n    0xFFDC, 0x0000, 0x02EA, 0x015B, 0x0089, 0xFFF9, 0xFF9C, 0xFF64,\n    0xFF41, 0xFF26, 0xFF22, 0xFF45, 0xFF7D, 0xFFBB, 0xFFEC, 0x0000,\n    0x13D7, 0x0CAE, 0x0823, 0x0458, 0x0140, 0xFECE, 0xFCF4, 0xFBA5,\n    0xFB3B, 0xFBD5, 0xFD08, 0xFE67, 0xFF88, 0x0000, 0x0177, 0x0170,\n    0x0066, 0xFE9F, 0xFC30, 0xFA51, 0xFA23, 0xFAA0, 0xFB5A, 0xFC49,\n    0xFD7F, 0xFEB4, 0xFFA2, 0x0000, 0x03CF, 0x043F, 0x0300, 0x00C5,\n    0xFE40, 0xFC3F, 0xFBA3, 0xFB9A, 0xFBF3, 0xFCAB, 0xFDB6, 0xFECC,\n    0xFFA8, 0x0000, 0x0112, 0x0457, 0x03FB, 0xF938, 0xE7C6, 0xDD96,\n    0xDCDC, 0xDE1F, 0xE0CA, 0xE447, 0xE802, 0xEB65, 0xEDDA, 0xEECD,\n    0xFC7D, 0xFEAF, 0xFDE0, 0xF439, 0xE4F9, 0xDC47, 0xDC08, 0xDDA4,\n    0xE08B, 0xE42D, 0xE7FB, 0xEB65, 0xEDDB, 0xEECD, 0xFB10, 0xFB74,\n    0xFBDA, 0xFC4D, 0xFCC9, 0xFD49, 0xFDCA, 0xFE48, 0xFEBD, 0xFF26,\n    0xFF80, 0xFFC4, 0xFFF1, 0x0000, 0x0056, 0x0006, 0xFFEE, 0xFFDE,\n    0xFFD4, 0xFFD1, 0xFFD2, 0xFFD7, 0xFFDF, 0xFFE8, 0xFFF1, 0xFFF9,\n    0xFFFE, 0x0000, 0xC092, 0xBDF4, 0xBD46, 0xBCEA, 0xBCD4, 0xBCF6,\n    0xBD44, 0xBDB1, 0xBE31, 0xBEB6, 0xBF34, 0xBF9D, 0xBFE6, 0xC001,\n    0x097C, 0x08BA, 0x07F5, 0x0718, 0x062A, 0x0533, 0x043C, 0x034C,\n    0x026B, 0x01A1, 0x00F6, 0x0072, 0x001E, 0x0000, 0xFFE8, 0x0091,\n    0x00BC, 0x00D2, 0x00D6, 0x00CC, 0x00B7, 0x009A, 0x0079, 0x0056,\n    0x0035, 0x0019, 0x0007, 0x0000, 0xBF1E, 0xBC2A, 0xBB7D, 0xBB36,\n    0xBB42, 0xBB93, 0xBC17, 0xBCBF, 0xBD7A, 0xBE37, 0xBEE7, 0xBF79,\n    0xBFDC, 0xC001, 0xFC72, 0xFE76, 0xFFE9, 0x008B, 0x0099, 0x0066,\n    0x0044, 0x0036, 0x0016, 0x0000, 0xFFFB, 0xFFFC, 0xFFFF, 0x0000,\n    0x0B34, 0x06C3, 0x037E, 0x01E9, 0x0183, 0x019E, 0x0188, 0x012B,\n    0x00E1, 0x00A4, 0x006B, 0x0036, 0x000F, 0x0000, 0xEF15, 0xEE90,\n    0xEF02, 0xF1A0, 0xF5F2, 0xF9ED, 0xFB85, 0xF7F1, 0xF154, 0xED08,\n    0xED0A, 0xEED4, 0xF0F5, 0xF1FD, 0x034B, 0x0226, 0x0118, 0x0041,\n    0xFFD8, 0xFFCB, 0xFFD0, 0xFFD6, 0xFFEF, 0x0000, 0x0003, 0x0003,\n    0x0001, 0x0000, 0xF2D7, 0xF6A7, 0xFA28, 0xFCF6, 0xFE49, 0xFE63,\n    0xFE6E, 0xFEC9, 0xFF15, 0xFF54, 0xFF8F, 0xFFC7, 0xFFF0, 0x0000,\n    0xF032, 0xEF89, 0xEF52, 0xEFD0, 0xF310, 0xF81A, 0xFAA2, 0xF7CB,\n    0xF272, 0xEEE3, 0xEEAD, 0xEFD2, 0xF146, 0xF1FD, 0x8001, 0xC000,\n    0xC000, 0x2000, 0x3FFF, 0xE000, 0x2000, 0x3FFF, 0xE000, 0x0002,\n    0x0003, 0x0004, 0x0004, 0x0005, 0x0004, 0x0004, 0x0003, 0x0002,\n    0x0002, 0x0001, 0x0000, 0x0000, 0x0000, 0xFECF, 0xFC8D, 0xFAC3,\n    0xF930, 0xF7C0, 0xF5FF, 0xF460, 0xF42A, 0xF5AD, 0xF80C, 0xFAC5,\n    0xFD57, 0xFF41, 0x0000, 0x4000, 0x4000, 0x4000, 0x4000, 0x3FFF,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x4000, 0x4000, 0x4000,\n    0x4000, 0x0000,\n};\n\n// 0x0500DC64\nstatic const u16 king_bobomb_seg5_animindex_0500DC64[] = {\n    0x0001, 0x0000, 0x000E, 0x0001, 0x000E, 0x000F, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x000E, 0x013F, 0x000E, 0x014D, 0x000E, 0x015B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x013C, 0x0001, 0x013D, 0x0001, 0x013E,\n    0x000E, 0x008E, 0x000E, 0x009C, 0x000E, 0x00AA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x0056,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x001E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0139, 0x0001, 0x013A, 0x0001, 0x013B,\n    0x000E, 0x00B8, 0x000E, 0x00C6, 0x000E, 0x00D4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x0064,\n    0x000E, 0x002C, 0x000E, 0x003A, 0x000E, 0x0048,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0138,\n    0x000E, 0x00E2, 0x000E, 0x00F0, 0x000E, 0x00FE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x0072,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0136, 0x0001, 0x0137,\n    0x000E, 0x010C, 0x000E, 0x011A, 0x000E, 0x0128,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x0080,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x001D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x0500DDD8\nstatic const struct Animation king_bobomb_seg5_anim_0500DDD8 = {\n    1,\n    0,\n    0,\n    0,\n    0x0E,\n    ANIMINDEX_NUMPARTS(king_bobomb_seg5_animindex_0500DC64),\n    king_bobomb_seg5_animvalue_0500D990,\n    king_bobomb_seg5_animindex_0500DC64,\n    0,\n};\n"
  },
  {
    "path": "actors/king_bobomb/anims/anim_0500E10C.inc.c",
    "content": "// 0x0500DDF0\nstatic const s16 king_bobomb_seg5_animvalue_0500DDF0[] = {\n    0x0000, 0x029F, 0x02B9, 0x02F2, 0x0331, 0x035A, 0x0369, 0x036E,\n    0x036B, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFD, 0xFFFC,\n    0xFFFB, 0xFFFB, 0x0000, 0x0652, 0x14BF, 0x2479, 0x2EAF, 0x329D,\n    0x3440, 0x33EB, 0x0000, 0x002C, 0x0091, 0x0100, 0x0148, 0x017C,\n    0x01B9, 0x01DC, 0x0000, 0x0132, 0x03EE, 0x06E8, 0x08D8, 0x099B,\n    0x09F3, 0x09EA, 0x0000, 0x0619, 0x1403, 0x232E, 0x2D07, 0x30CE,\n    0x325B, 0x3205, 0x0000, 0x000D, 0x002D, 0x0050, 0x0067, 0x0069,\n    0x0061, 0x0057, 0x0000, 0x001F, 0x0068, 0x00B7, 0x00EA, 0x00EB,\n    0x00CF, 0x00B2, 0xEECD, 0xEF7B, 0xF109, 0xF2BA, 0xF3D4, 0xF3ED,\n    0xF374, 0xF2EF, 0xEECD, 0xEF53, 0xF086, 0xF1D5, 0xF2AE, 0xF2C6,\n    0xF274, 0xF214, 0xF95F, 0xF979, 0xF9B3, 0xF9F3, 0xFA1C, 0xFA23,\n    0xFA19, 0xFA0B, 0xFFD9, 0x001D, 0x00BD, 0x016A, 0x01DB, 0x0208,\n    0x021D, 0x021C, 0xC072, 0xC23E, 0xC658, 0xCAD0, 0xCDB7, 0xCEF0,\n    0xCF9E, 0xCFAF, 0x0CB9, 0x0C8A, 0x0C20, 0x0BAB, 0x0B60, 0x0B53,\n    0x0B68, 0x0B84, 0x00AB, 0x001D, 0xFEDA, 0xFD79, 0xFC94, 0xFC37,\n    0xFC0A, 0xFC0A, 0xC09F, 0xC278, 0xC6AF, 0xCB48, 0xCE44, 0xCF8F,\n    0xD052, 0xD071, 0x00D3, 0xFF7E, 0xFC71, 0xF91F, 0xF6F6, 0xF61E,\n    0xF5BE, 0xF5CA, 0x0927, 0x0B0D, 0x0F61, 0x1419, 0x172A, 0x1879,\n    0x193A, 0x1954, 0x0757, 0x046C, 0xFDC5, 0xF684, 0xF1CE, 0xF051,\n    0xF037, 0xF0DB, 0x00D0, 0x0187, 0x0328, 0x04EE, 0x0615, 0x068B,\n    0x06C2, 0x06BF, 0xF66D, 0xF4AF, 0xF0B4, 0xEC5E, 0xE98D, 0xE85A,\n    0xE7AD, 0xE798, 0x0626, 0x0376, 0xFD55, 0xF6A6, 0xF24F, 0xF0EF,\n    0xF0D5, 0xF16A, 0x8001, 0xC000, 0xC000, 0x2000, 0x3FFF, 0xE000,\n    0x2000, 0x3FFF, 0xE000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x00B5, 0x0253, 0x0415, 0x053A,\n    0x05C1, 0x061C, 0x0633, 0x4000, 0x4001, 0x4001, 0x4001, 0x4001,\n    0x4001, 0x4001, 0x4001, 0x0000,\n};\n\n// 0x0500DF98\nstatic const u16 king_bobomb_seg5_animindex_0500DF98[] = {\n    0x0001, 0x0000, 0x0008, 0x0001, 0x0008, 0x0009, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0008, 0x00BB, 0x0008, 0x00C3, 0x0008, 0x00CB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x00B8, 0x0001, 0x00B9, 0x0001, 0x00BA,\n    0x0008, 0x0052, 0x0008, 0x005A, 0x0008, 0x0062,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x0032,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x0012,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x00B5, 0x0001, 0x00B6, 0x0001, 0x00B7,\n    0x0008, 0x006A, 0x0008, 0x0072, 0x0008, 0x007A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x003A,\n    0x0008, 0x001A, 0x0008, 0x0022, 0x0008, 0x002A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00B4,\n    0x0008, 0x0082, 0x0008, 0x008A, 0x0008, 0x0092,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x0042,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x00B2, 0x0001, 0x00B3,\n    0x0008, 0x009A, 0x0008, 0x00A2, 0x0008, 0x00AA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x004A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0011,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x0500E10C\nstatic const struct Animation king_bobomb_seg5_anim_0500E10C = {\n    0,\n    0,\n    0,\n    0,\n    0x08,\n    ANIMINDEX_NUMPARTS(king_bobomb_seg5_animindex_0500DF98),\n    king_bobomb_seg5_animvalue_0500DDF0,\n    king_bobomb_seg5_animindex_0500DF98,\n    0,\n};\n"
  },
  {
    "path": "actors/king_bobomb/anims/anim_0500F078.inc.c",
    "content": "// 0x0500E124\nstatic const s16 king_bobomb_seg5_animvalue_0500E124[] = {\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0003, 0x0009, 0x000A, 0x0000, 0xFFDF, 0xFFAE, 0xFF7F, 0xFF66,\n    0xFF61, 0xFF60, 0xFF62, 0xFF68, 0xFF70, 0xFF7A, 0xFF85, 0xFF90,\n    0xFF9C, 0xFFAB, 0xFFC2, 0xFFDA, 0xFFF1, 0x0000, 0x0006, 0x0005,\n    0x0002, 0x0000, 0x02A5, 0x02A5, 0x02A5, 0x02A5, 0x02A5, 0x02A5,\n    0x02A5, 0x02A5, 0x02A5, 0x02A5, 0x02A5, 0x02A5, 0x02A5, 0x02A5,\n    0x02A5, 0x02A5, 0x02A4, 0x02A3, 0x02A5, 0x02AB, 0x02B4, 0x02BD,\n    0x02C4, 0x02C8, 0x02CA, 0x02CE, 0x02D5, 0x02E5, 0x02FA, 0x030E,\n    0x031D, 0x031B, 0x0311, 0x030A, 0x0304, 0x02FE, 0x02F7, 0x02F3,\n    0x02EF, 0x02E7, 0x02DB, 0x02CC, 0x02BD, 0x02AF, 0x02A5, 0x02A1,\n    0x02A1, 0x02A4, 0x02A5, 0x000A, 0x000D, 0x0011, 0x0014, 0x0017,\n    0x001A, 0x001D, 0x001E, 0x001B, 0x0017, 0x000F, 0x0001, 0xFFF4,\n    0xFFF4, 0x0001, 0x000D, 0x0011, 0x0013, 0x0013, 0x0012, 0x000F,\n    0x000E, 0x000F, 0x0016, 0x001F, 0x002A, 0x0034, 0x003E, 0x0048,\n    0x0053, 0x005F, 0x0073, 0x0083, 0x0088, 0x008B, 0x0089, 0x0082,\n    0x006F, 0x0052, 0x0038, 0x0023, 0x000D, 0xFFFB, 0xFFEB, 0xFFE1,\n    0xFFE2, 0xFFED, 0xFFFA, 0x0000, 0xFFFB, 0x0000, 0x0001, 0x0000,\n    0x0000, 0x0000, 0xFFFF, 0xFFFD, 0xFFFB, 0xFFF8, 0xFFF6, 0xFFF3,\n    0xFFF1, 0xFFEF, 0xFFEE, 0xFFF1, 0xFFF6, 0xFFFA, 0xFFFE, 0x0000,\n    0x0000, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0019,\n    0x001B, 0x0019, 0x0010, 0x0000, 0xFFCD, 0xFF75, 0xFF18, 0xFEDA,\n    0xFEDC, 0xFFE4, 0x013B, 0x01DF, 0x0209, 0x0161, 0x0098, 0x0046,\n    0x0017, 0x0000, 0xFFF5, 0xFFF1, 0xFFF2, 0xFFF5, 0xFFFA, 0xFFFF,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xFFFE, 0xFFFA, 0xFFF6, 0xFFF4, 0xFFF5, 0xFFF8,\n    0xFFFB, 0xFFFE, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF,\n    0x0000, 0x0004, 0x000A, 0x0010, 0x0017, 0x001D, 0x0021, 0x0022,\n    0x001F, 0x0016, 0x000C, 0x0003, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFF6, 0xFFE4,\n    0xFFE1, 0x0000, 0x004C, 0x00B5, 0x012D, 0x01A4, 0x020C, 0x0255,\n    0x0270, 0x022F, 0x0194, 0x00DB, 0x0040, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0010, 0x0012, 0x0010, 0x000A, 0x0000, 0xFFDE,\n    0xFFA2, 0xFF64, 0xFF3C, 0xFF43, 0x0006, 0x010F, 0x01C1, 0x0209,\n    0x015F, 0x0090, 0x003F, 0x0013, 0x0000, 0xFFF8, 0xFFF2, 0xFFF0,\n    0xFFF1, 0xFFF3, 0xFFF6, 0xFFFA, 0xFFFD, 0xFFFF, 0x0000, 0xFFF8,\n    0xFFE9, 0xFFE6, 0x0000, 0x0040, 0x0099, 0x00FD, 0x0162, 0x01B9,\n    0x01F6, 0x020E, 0x01D7, 0x0154, 0x00B9, 0x0036, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0001, 0x0004, 0x0006, 0x0009, 0x000B, 0x000E, 0x000F,\n    0x0010, 0x0010, 0x000E, 0x000B, 0x0006, 0x0000, 0xFFEB, 0xFFC2,\n    0xFF95, 0xFF70, 0xFF6F, 0xFF74, 0xFF3C, 0xFEB2, 0xFDFC, 0xFD33,\n    0xFC6E, 0xFBC7, 0xFB55, 0xFB31, 0xFB4B, 0xFB81, 0xFBD0, 0xFC32,\n    0xFCA4, 0xFD20, 0xFDA3, 0xFE29, 0xFEAD, 0xFF2A, 0xFF9D, 0x0000,\n    0x002A, 0x0027, 0x0013, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0002, 0x000B, 0x0016, 0x0024, 0x0033, 0x0042, 0x004E,\n    0x0058, 0x005D, 0x005B, 0x0053, 0x0042, 0x0026, 0x0000, 0xFF92,\n    0xFEC4, 0xFDC9, 0xFCD6, 0xFBB8, 0xFA89, 0xF9F3, 0xF9FF, 0xFA37,\n    0xFA90, 0xFAFC, 0xFB71, 0xFBE0, 0xFC3E, 0xFC91, 0xFCE3, 0xFD37,\n    0xFD8A, 0xFDDD, 0xFE30, 0xFE81, 0xFED2, 0xFF21, 0xFF6E, 0xFFB8,\n    0x0000, 0x0020, 0x001C, 0x000E, 0x0000, 0xFF24, 0xFEE4, 0xFEAA,\n    0xFE7C, 0xFE5F, 0xFE49, 0xFE2D, 0xFE0D, 0xFDEB, 0xFDCA, 0xFDAD,\n    0xFD95, 0xFD86, 0xFD81, 0xFD8A, 0xFDA2, 0xFDCC, 0xFE0A, 0xFE5F,\n    0xFF7A, 0x0182, 0x03AF, 0x0536, 0x04DC, 0x03D3, 0x04F5, 0x0913,\n    0x0E96, 0x14BF, 0x1ACE, 0x2005, 0x23A2, 0x24E7, 0x2448, 0x22D1,\n    0x20A2, 0x1DDD, 0x1AA2, 0x1713, 0x1351, 0x0F7C, 0x0BB7, 0x0821,\n    0x04DC, 0x0209, 0x010C, 0x0116, 0x006A, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xFFFA, 0xFFE9, 0xFFCF, 0xFFB1, 0xFF91,\n    0xFF72, 0xFF56, 0xFF42, 0xFF38, 0xFF3A, 0xFF4C, 0xFF72, 0xFFAD,\n    0x0000, 0x00FA, 0x02CC, 0x04EE, 0x06D6, 0x08E6, 0x0B3B, 0x0CE3,\n    0x0CF1, 0x074B, 0x007B, 0xFF19, 0xFF64, 0xFFDF, 0x0061, 0x0069,\n    0x006B, 0x0069, 0x0062, 0x0058, 0x004C, 0x003E, 0x0030, 0x0021,\n    0x0014, 0x0008, 0x0000, 0xFFFD, 0xFFFD, 0xFFFF, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x0012, 0x0025, 0x003D,\n    0x0056, 0x006E, 0x0083, 0x0092, 0x009A, 0x0099, 0x008A, 0x006E,\n    0x0040, 0x0000, 0xFED0, 0xFCAF, 0xFAE6, 0xFABB, 0xFD1F, 0x012E,\n    0x057A, 0x088F, 0x07EB, 0x06B7, 0x099B, 0x0C09, 0x0978, 0x067F,\n    0x05AF, 0x04F4, 0x044D, 0x03B6, 0x032C, 0x02AD, 0x0236, 0x01C5,\n    0x0156, 0x00E8, 0x0076, 0x0000, 0xFFC8, 0xFFCD, 0xFFE7, 0x0000,\n    0xFF24, 0xFEE4, 0xFEAA, 0xFE7C, 0xFE5F, 0xFE25, 0xFDA8, 0xFCFA,\n    0xFC2F, 0xFB5A, 0xFA8E, 0xF9DE, 0xF95D, 0xF91E, 0xF934, 0xF9B3,\n    0xFAAD, 0xFC35, 0xFE5F, 0x06F9, 0x1692, 0x2556, 0x2B72, 0x2429,\n    0x148A, 0x0374, 0xF7C7, 0xFB23, 0x0350, 0x044A, 0x03A0, 0x02CA,\n    0x0214, 0x020D, 0x0213, 0x0222, 0x023A, 0x0256, 0x0275, 0x0294,\n    0x02B1, 0x02C9, 0x02D9, 0x02E0, 0x02DA, 0x0245, 0x015C, 0x0080,\n    0x0000, 0xF142, 0xECFC, 0xE921, 0xE610, 0xE426, 0xE320, 0xE270,\n    0xE20B, 0xE1E7, 0xE1F6, 0xE22E, 0xE282, 0xE2E8, 0xE353, 0xE3B8,\n    0xE40B, 0xE441, 0xE44E, 0xE426, 0xE3BF, 0xE31E, 0xE255, 0xE173,\n    0xE088, 0xDFA4, 0xDED7, 0xDE31, 0xDDC2, 0xDD99, 0xDE38, 0xDFCC,\n    0xE1EB, 0xE426, 0xE681, 0xE933, 0xEC21, 0xEF31, 0xF249, 0xF54D,\n    0xF823, 0xFAB1, 0xFCDC, 0xFE89, 0xFF9E, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xF3FA, 0xF07D, 0xED58, 0xEAD7, 0xE948, 0xE851,\n    0xE769, 0xE697, 0xE5DF, 0xE548, 0xE4D7, 0xE491, 0xE47D, 0xE49F,\n    0xE4FE, 0xE5A0, 0xE688, 0xE7BF, 0xE948, 0xEBCF, 0xEFB9, 0xF4A1,\n    0xFA25, 0xFFE1, 0x0570, 0x0A71, 0x0E7F, 0x1137, 0x1235, 0x0C07,\n    0xFE51, 0xF051, 0xE948, 0xE8C6, 0xE962, 0xEAE9, 0xED26, 0xEFE4,\n    0xF2EF, 0xF612, 0xF91A, 0xFBD0, 0xFE01, 0xFF78, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xEDEE, 0xEDAE, 0xED74, 0xED45, 0xED28,\n    0xECFE, 0xECAC, 0xEC3E, 0xEBBE, 0xEB3A, 0xEABC, 0xEA50, 0xEA02,\n    0xE9DE, 0xE9EE, 0xEA3F, 0xEADC, 0xEBD0, 0xED28, 0xEF76, 0xF306,\n    0xF77F, 0xFC85, 0x01BD, 0x06CF, 0x0B5E, 0x0F0F, 0x1189, 0x1271,\n    0x0D08, 0x00E9, 0xF43D, 0xED28, 0xEB51, 0xEA2F, 0xE9A8, 0xE9A0,\n    0xE9FC, 0xEAA3, 0xEB7A, 0xEC65, 0xED4A, 0xEE0F, 0xEE99, 0xEECD,\n    0xEECD, 0xEECD, 0xEECD, 0xEECD, 0x0002, 0x0003, 0x0004, 0x0004,\n    0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,\n    0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,\n    0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,\n    0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0004, 0x0004, 0x0003,\n    0x0003, 0x0002, 0x0002, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0D96, 0x1186, 0x1514,\n    0x17E7, 0x19AA, 0x1AA1, 0x1B4E, 0x1BBC, 0x1BF1, 0x1BF9, 0x1BDA,\n    0x1B9E, 0x1B4E, 0x1AF2, 0x1A94, 0x1A3B, 0x19F0, 0x19BD, 0x19AA,\n    0x19BB, 0x19E8, 0x1A2A, 0x1A79, 0x1ACD, 0x1B1E, 0x1B65, 0x1B9A,\n    0x1BB5, 0x1BAE, 0x1B7F, 0x1B1E, 0x1A84, 0x19AA, 0x1855, 0x1665,\n    0x13FD, 0x1142, 0x0E55, 0x0B5A, 0x0874, 0x05C6, 0x0374, 0x01A0,\n    0x006D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xEECD, 0xEECD,\n    0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD,\n    0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD,\n    0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD,\n    0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD,\n    0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD,\n    0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0008, 0x0000, 0xFFD4, 0xFF99, 0xFF57, 0xFF19, 0xFEE8, 0xFECD,\n    0xFED1, 0xFF01, 0xFF5C, 0xFFCF, 0x0048, 0x00B9, 0x010F, 0x013B,\n    0x0142, 0x013A, 0x0125, 0x0105, 0x00DF, 0x00B5, 0x008A, 0x005F,\n    0x003A, 0x001B, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0010, 0x0000, 0xFF98, 0xFEFB, 0xFE4D, 0xFDB0, 0xFD4A,\n    0xFD3E, 0xFDAF, 0xFEE6, 0x00DD, 0x0340, 0x05B6, 0x07EC, 0x098B,\n    0x0A3D, 0x0A24, 0x09A6, 0x08D8, 0x07CD, 0x0698, 0x054D, 0x0400,\n    0x02C3, 0x01AB, 0x00CA, 0x0035, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xBCD6, 0xBC16, 0xBB8C, 0xBB52, 0xBB86, 0xBC83, 0xBE58,\n    0xC0A5, 0xC30E, 0xC534, 0xC6BA, 0xC796, 0xC811, 0xC849, 0xC85D,\n    0xC86A, 0xC88F, 0xC861, 0xC88F, 0xC98D, 0xCAA1, 0xCBC8, 0xCD03,\n    0xCE50, 0xCFAD, 0xD11A, 0xD2F0, 0xD54C, 0xD7D7, 0xDA38, 0xDC17,\n    0xDD1B, 0xDCEC, 0xDB99, 0xD988, 0xD6E3, 0xD3D3, 0xD083, 0xCD1D,\n    0xC9CA, 0xC6B4, 0xC404, 0xC1E5, 0xC081, 0xC001, 0xC001, 0xC001,\n    0xC001, 0xC001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0057, 0x0000, 0xFE4F, 0xFC24, 0xF9C5,\n    0xF778, 0xF583, 0xF42C, 0xF3B8, 0xF6FE, 0xFD20, 0x00CF, 0xFFEE,\n    0xFD14, 0xFA0B, 0xF899, 0xF8B4, 0xF914, 0xF9AC, 0xFA6E, 0xFB4C,\n    0xFC3A, 0xFD28, 0xFE0A, 0xFED1, 0xFF71, 0xFFDA, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0xFFA3, 0x0000, 0x01A6, 0x0399,\n    0x05B5, 0x07DA, 0x09E4, 0x0BB3, 0x0D23, 0x0D6B, 0x0CAB, 0x0C21,\n    0x0C66, 0x0CF2, 0x0D4D, 0x0D05, 0x0C20, 0x0B00, 0x09B4, 0x084B,\n    0x06D5, 0x055F, 0x03F9, 0x02B3, 0x019B, 0x00C0, 0x0032, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0xBCD6, 0xBC16, 0xBB8C, 0xBB52,\n    0xBB86, 0xBC83, 0xBE58, 0xC0A5, 0xC30E, 0xC534, 0xC6BA, 0xC796,\n    0xC811, 0xC849, 0xC85D, 0xC86A, 0xC88F, 0xC9D1, 0xC88F, 0xC2BA,\n    0xBB61, 0xB35B, 0xAB81, 0xA4AB, 0x9FB0, 0x9D68, 0xA62F, 0xB789,\n    0xC20E, 0xBF9A, 0xB7A5, 0xAF2A, 0xAB25, 0xAB73, 0xAC83, 0xAE30,\n    0xB053, 0xB2C6, 0xB562, 0xB800, 0xBA7B, 0xBCAC, 0xBE6C, 0xBF95,\n    0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0x04E9, 0x0602, 0x06BC,\n    0x06E9, 0x065C, 0x0529, 0x038E, 0x019B, 0xFF63, 0xFCF4, 0xFA60,\n    0xF7B7, 0xF50C, 0xF26E, 0xEFEF, 0xED9F, 0xEB8F, 0xEAC0, 0xEB8F,\n    0xED1D, 0xEF01, 0xF10F, 0xF31C, 0xF4FC, 0xF683, 0xF787, 0xF7E1,\n    0xF7AA, 0xF718, 0xF65F, 0xF5B5, 0xF54D, 0xF55E, 0xF5CF, 0xF663,\n    0xF714, 0xF7DC, 0xF8B4, 0xF998, 0xFA82, 0xFB6C, 0xFC50, 0xFD28,\n    0xFDEE, 0xFE9E, 0xFF30, 0xFFA0, 0xFFE7, 0x0000, 0xEDE3, 0xE88B,\n    0xE3A4, 0xDFA1, 0xDCEF, 0xDB49, 0xDA12, 0xD939, 0xD8B1, 0xD869,\n    0xD852, 0xD85C, 0xD878, 0xD896, 0xD8A8, 0xD89C, 0xD864, 0xD784,\n    0xD864, 0xDC33, 0xE0F2, 0xE61F, 0xEB37, 0xEFB8, 0xF31F, 0xF4EA,\n    0xF483, 0xF22C, 0xEEA6, 0xEAB3, 0xE714, 0xE48C, 0xE3DB, 0xE498,\n    0xE5CD, 0xE768, 0xE956, 0xEB86, 0xEDE4, 0xF05F, 0xF2E4, 0xF562,\n    0xF7C6, 0xF9FE, 0xFBF7, 0xFDA0, 0xFEE6, 0xFFB7, 0x0000, 0xECD0,\n    0xEB92, 0xEAA9, 0xEA42, 0xEA89, 0xEB68, 0xECA3, 0xEE2C, 0xEFF4,\n    0xF1EC, 0xF405, 0xF631, 0xF860, 0xFA84, 0xFC8F, 0xFE71, 0x001B,\n    0x0059, 0x001B, 0x00BB, 0x016F, 0x0231, 0x02FA, 0x03C5, 0x048B,\n    0x0545, 0x0622, 0x0739, 0x085C, 0x095D, 0x0A10, 0x0A47, 0x09D4,\n    0x08D3, 0x0785, 0x05F8, 0x0437, 0x0251, 0x0052, 0xFE47, 0xFC3C,\n    0xFA3E, 0xF85A, 0xF69E, 0xF516, 0xF3CE, 0xF2D4, 0xF235, 0xF1FD,\n    0xF8FF, 0xF744, 0xF5F3, 0xF546, 0xF577, 0xF66A, 0xF7CE, 0xF993,\n    0xFBA6, 0xFDF5, 0x006C, 0x02FC, 0x0592, 0x081A, 0x0A84, 0x0CBC,\n    0x0EB1, 0x0F25, 0x0EB1, 0x0EBA, 0x0ED0, 0x0EF1, 0x0F18, 0x0F41,\n    0x0F6A, 0x0F8D, 0x0FA7, 0x0FB4, 0x0FB1, 0x0F9A, 0x0F6A, 0x0F1D,\n    0x0EB1, 0x0E19, 0x0D50, 0x0C5E, 0x0B4B, 0x0A20, 0x08E5, 0x07A2,\n    0x065E, 0x0522, 0x03F5, 0x02E1, 0x01ED, 0x0121, 0x0086, 0x0022,\n    0x0000, 0x1197, 0x16C7, 0x1B87, 0x1F6B, 0x2206, 0x239D, 0x24C7,\n    0x2594, 0x2614, 0x2655, 0x2666, 0x2657, 0x2636, 0x2613, 0x25FE,\n    0x2604, 0x2636, 0x2649, 0x2636, 0x264C, 0x2686, 0x26DB, 0x2740,\n    0x27AC, 0x2815, 0x2871, 0x28B5, 0x28D8, 0x28CF, 0x2892, 0x2815,\n    0x274F, 0x2636, 0x24A9, 0x229E, 0x2029, 0x1D60, 0x1A56, 0x1722,\n    0x13D9, 0x108F, 0x0D59, 0x0A4C, 0x077E, 0x0503, 0x02F1, 0x015D,\n    0x005A, 0x0000, 0xEDA8, 0xECA4, 0xEBEB, 0xEBA4, 0xEBF3, 0xECC9,\n    0xEDF0, 0xEF5C, 0xF100, 0xF2CE, 0xF4BA, 0xF6B6, 0xF8B4, 0xFAA9,\n    0xFC87, 0xFE40, 0xFFC8, 0x0021, 0xFFC8, 0xFFCF, 0xFFE4, 0x0002,\n    0x0027, 0x004E, 0x0073, 0x0095, 0x00AD, 0x00BA, 0x00B7, 0x00A1,\n    0x0073, 0x002C, 0xFFC8, 0xFF38, 0xFE7C, 0xFD99, 0xFC97, 0xFB7F,\n    0xFA57, 0xF927, 0xF7F7, 0xF6CE, 0xF5B5, 0xF4B1, 0xF3CC, 0xF30D,\n    0xF27B, 0xF21E, 0xF1FD, 0x8001, 0xC000, 0xC000, 0x2000, 0x3FFF,\n    0xE000, 0x2000, 0x3FFF, 0xE000, 0x0001, 0x0002, 0x0002, 0x0003,\n    0x0003, 0x0004, 0x0004, 0x0005, 0x0005, 0x0006, 0x0006, 0x0006,\n    0x0007, 0xFFD1, 0xFF75, 0xFF62, 0x0006, 0x02BA, 0x06E7, 0x0BD4,\n    0x11E4, 0x1846, 0x1E2C, 0x22C4, 0x2540, 0x24CE, 0x2017, 0x1764,\n    0x0C4F, 0x0076, 0xF574, 0xECE4, 0xE863, 0xE71D, 0xE70A, 0xE7FB,\n    0xE9C2, 0xEC30, 0xEF15, 0xF243, 0xF58C, 0xF8BF, 0xFBAE, 0xFE2A,\n    0x0003, 0x00D7, 0x00BE, 0x0047, 0x0000, 0xFB96, 0xFA82, 0xF9B3,\n    0xF950, 0xF97C, 0xFA63, 0xFBF9, 0xFE08, 0x005E, 0x02C8, 0x0513,\n    0x070C, 0x087F, 0x08DB, 0x0834, 0x074F, 0x06ED, 0x07C5, 0x0946,\n    0x0B0C, 0x0D45, 0x0FA0, 0x11C9, 0x136E, 0x143E, 0x13E6, 0x11DD,\n    0x0E41, 0x09B4, 0x04D9, 0x0054, 0xFCC9, 0xFAD9, 0xFA34, 0xFA0C,\n    0xFA4E, 0xFAE6, 0xFBC1, 0xFCC9, 0xFDED, 0xFF16, 0x0032, 0x012D,\n    0x01F4, 0x0271, 0x023E, 0x0162, 0x0071, 0x0000, 0x4000, 0x4000,\n    0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000, 0x4001,\n    0x4001, 0x4001, 0x4001, 0x3FF3, 0x3FDC, 0x3FD7, 0x4001, 0x4099,\n    0x41BC, 0x431C, 0x4480, 0x45ED, 0x4768, 0x48F6, 0x4A9A, 0x4C5B,\n    0x4E96, 0x5166, 0x546C, 0x5748, 0x599A, 0x5B02, 0x5B20, 0x5A2D,\n    0x58AF, 0x56BE, 0x5472, 0x51E1, 0x4F22, 0x4C4D, 0x4978, 0x46BC,\n    0x4430, 0x41E9, 0x4001, 0x3F0D, 0x3F28, 0x3FAF, 0x4000, 0x0000,\n};\n\n// 0x0500EF04\nstatic const u16 king_bobomb_seg5_animindex_0500EF04[] = {\n    0x0031, 0x0001, 0x0031, 0x0032, 0x0031, 0x0063, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0031, 0x065C, 0x0031, 0x068D, 0x0031, 0x06BE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0659, 0x0001, 0x065A, 0x0001, 0x065B,\n    0x0031, 0x0407, 0x0031, 0x0438, 0x0031, 0x0469,\n    0x0031, 0x01BB, 0x0031, 0x01EC, 0x0031, 0x021D,\n    0x0031, 0x0095, 0x0031, 0x00C6, 0x0031, 0x00F7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0656, 0x0001, 0x0657, 0x0001, 0x0658,\n    0x0031, 0x049A, 0x0031, 0x04CB, 0x0031, 0x04FC,\n    0x0031, 0x024E, 0x0031, 0x027F, 0x0031, 0x02B0,\n    0x0031, 0x0128, 0x0031, 0x0159, 0x0031, 0x018A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0655,\n    0x0031, 0x052D, 0x0031, 0x055E, 0x0031, 0x058F,\n    0x0031, 0x02E1, 0x0031, 0x0312, 0x0031, 0x0343,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0653, 0x0001, 0x0654,\n    0x0031, 0x05C0, 0x0031, 0x05F1, 0x0031, 0x0622,\n    0x0031, 0x0374, 0x0031, 0x03A5, 0x0031, 0x03D6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0094,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x0500F078\nstatic const struct Animation king_bobomb_seg5_anim_0500F078 = {\n    0,\n    0,\n    0,\n    0,\n    0x31,\n    ANIMINDEX_NUMPARTS(king_bobomb_seg5_animindex_0500EF04),\n    king_bobomb_seg5_animvalue_0500E124,\n    king_bobomb_seg5_animindex_0500EF04,\n    0,\n};\n"
  },
  {
    "path": "actors/king_bobomb/anims/anim_0500F6C8.inc.c",
    "content": "// 0x0500F090\nstatic const s16 king_bobomb_seg5_animvalue_0500F090[] = {\n    0x0000, 0x01FB, 0x01FB, 0x01F9, 0x01F7, 0x01F5, 0x01F3, 0x01F2,\n    0x01F3, 0x01F6, 0x0204, 0x0222, 0x024E, 0x027F, 0x02A0, 0x02AB,\n    0x02AB, 0x02A6, 0x02A3, 0x02A4, 0x02A4, 0x02A4, 0x02A5, 0x02A5,\n    0x02A5, 0x02A5, 0x02A5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFE,\n    0x0000, 0x0009, 0x0015, 0x0022, 0x0029, 0x002A, 0x0026, 0x0020,\n    0x001B, 0x0013, 0x000A, 0x0003, 0x0000, 0xFFFB, 0x0891, 0x0887,\n    0x086A, 0x083A, 0x07FB, 0x07AD, 0x0753, 0x06EE, 0x067F, 0x0609,\n    0x058D, 0x050D, 0x048A, 0x0407, 0x0384, 0x0304, 0x0288, 0x0212,\n    0x01A3, 0x013E, 0x00E4, 0x0096, 0x0057, 0x0027, 0x000A, 0x0000,\n    0xFE5F, 0xFE61, 0xFE67, 0xFE70, 0xFE7C, 0xFE8B, 0xFE9C, 0xFEAF,\n    0xFEC4, 0xFEDB, 0xFEF2, 0xFF0B, 0xFF23, 0xFF3C, 0xFF55, 0xFF6E,\n    0xFF85, 0xFF9C, 0xFFB1, 0xFFC4, 0xFFD5, 0xFFE4, 0xFFF0, 0xFFF9,\n    0xFFFF, 0x0000, 0x0000, 0xFE72, 0xFA6F, 0xF4F4, 0xEEFC, 0xE983,\n    0xE585, 0xE2B3, 0xE0B1, 0xE06A, 0xE2C7, 0xEB43, 0xF7E7, 0x0170,\n    0x01DD, 0xFE9F, 0xFC30, 0xFA51, 0xFA23, 0xFAA0, 0xFB5A, 0xFC49,\n    0xFD7F, 0xFEB4, 0xFFA2, 0x0000, 0x0000, 0xFEDF, 0xFBF2, 0xF7EF,\n    0xF38B, 0xEF7A, 0xEC72, 0xEA04, 0xE7FA, 0xE75C, 0xE931, 0xF0AB,\n    0xFBE5, 0x043F, 0x0430, 0x00C5, 0xFE40, 0xFC3F, 0xFBA3, 0xFB9A,\n    0xFBF3, 0xFCAB, 0xFDB6, 0xFECC, 0xFFA8, 0x0000, 0xEECD, 0xEEA7,\n    0xEE47, 0xEDCB, 0xED4E, 0xECEF, 0xECC8, 0xECF8, 0xED9B, 0xEECD,\n    0xF251, 0xF861, 0xFECE, 0x0366, 0x03FB, 0xF980, 0xE7EA, 0xDD96,\n    0xDCDC, 0xDE1F, 0xE0CA, 0xE447, 0xE802, 0xEB65, 0xEDDA, 0xEECD,\n    0xEECD, 0xEEB2, 0xEE6E, 0xEE15, 0xEDBD, 0xED79, 0xED5D, 0xED7F,\n    0xEDF3, 0xEECD, 0xF16E, 0xF5FE, 0xFAC1, 0xFDF6, 0xFDE0, 0xF470,\n    0xE514, 0xDC47, 0xDC08, 0xDDA4, 0xE08B, 0xE42D, 0xE7FB, 0xEB65,\n    0xEDDB, 0xEECD, 0xF697, 0xF6A8, 0xF6DA, 0xF725, 0xF785, 0xF7F4,\n    0xF86D, 0xF8EA, 0xF965, 0xF9DA, 0xFA42, 0xFAA8, 0xFB1A, 0xFB93,\n    0xFC13, 0xFC95, 0xFD17, 0xFD97, 0xFE12, 0xFE85, 0xFEEE, 0xFF4A,\n    0xFF96, 0xFFCF, 0xFFF4, 0x0000, 0xFBCB, 0xFBCF, 0xFBDD, 0xFBF3,\n    0xFC0F, 0xFC31, 0xFC57, 0xFC80, 0xFCAB, 0xFCD7, 0xFD02, 0xFD31,\n    0xFD68, 0xFDA4, 0xFDE5, 0xFE28, 0xFE6D, 0xFEB1, 0xFEF3, 0xFF31,\n    0xFF6A, 0xFF9C, 0xFFC5, 0xFFE5, 0xFFF9, 0x0000, 0xB036, 0xB040,\n    0xB05E, 0xB08F, 0xB0D2, 0xB126, 0xB18A, 0xB1FD, 0xB27F, 0xB30E,\n    0xB3A9, 0xB45E, 0xB535, 0xB627, 0xB72E, 0xB843, 0xB95E, 0xBA78,\n    0xBB8C, 0xBC91, 0xBD81, 0xBE55, 0xBF06, 0xBF8D, 0xBFE3, 0xC001,\n    0x0970, 0x095B, 0x0920, 0x08C8, 0x0857, 0x07D6, 0x074C, 0x06BE,\n    0x0635, 0x05B7, 0x054C, 0x04E6, 0x0479, 0x0406, 0x038E, 0x0316,\n    0x029E, 0x0229, 0x01BA, 0x0152, 0x00F4, 0x00A2, 0x005E, 0x002B,\n    0x000B, 0x0000, 0x07DB, 0x07D2, 0x07B8, 0x0791, 0x075D, 0x071F,\n    0x06D9, 0x068D, 0x063D, 0x05EC, 0x059B, 0x0542, 0x04DC, 0x046B,\n    0x03F2, 0x0374, 0x02F4, 0x0275, 0x01FA, 0x0185, 0x011A, 0x00BC,\n    0x006E, 0x0033, 0x000D, 0x0000, 0xB3B3, 0xB3A6, 0xB383, 0xB353,\n    0xB31F, 0xB2EF, 0xB2CB, 0xB2BD, 0xB2CC, 0xB301, 0xB365, 0xB3FB,\n    0xB4BE, 0xB5A6, 0xB6A9, 0xB7C1, 0xB8E4, 0xBA0C, 0xBB2F, 0xBC46,\n    0xBD48, 0xBE2D, 0xBEEE, 0xBF81, 0xBFE0, 0xC001, 0x00D3, 0x00E5,\n    0x0114, 0x0156, 0x019F, 0x01E7, 0x0222, 0x0247, 0x024A, 0x0218,\n    0x01B4, 0x0133, 0x00AD, 0x0037, 0xFFE9, 0xFFDA, 0xFFFC, 0x002B,\n    0x0044, 0x0042, 0x0039, 0x002B, 0x001C, 0x000E, 0x0004, 0x0000,\n    0x0927, 0x0913, 0x08DA, 0x0884, 0x081A, 0x07A2, 0x0726, 0x06AC,\n    0x063D, 0x05D1, 0x0560, 0x04EA, 0x0471, 0x03F7, 0x037E, 0x02FB,\n    0x026F, 0x01ED, 0x0188, 0x0137, 0x00E8, 0x009E, 0x005F, 0x002C,\n    0x000B, 0x0000, 0x0757, 0x07BD, 0x08BE, 0x0A15, 0x0B7A, 0x0CA8,\n    0x0D58, 0x0D43, 0x0C23, 0x0901, 0x03C7, 0xFD85, 0xF744, 0xF214,\n    0xEF02, 0xEFFB, 0xF44D, 0xF91A, 0xFB85, 0xFB31, 0xF9E8, 0xF808,\n    0xF5F0, 0xF3FD, 0xF28D, 0xF1FD, 0x00D0, 0x00B9, 0x007A, 0x0021,\n    0xFFBB, 0xFF53, 0xFEF7, 0xFEB2, 0xFE92, 0xFE9F, 0xFED1, 0xFF1B,\n    0xFF72, 0xFFC8, 0x0010, 0x0041, 0x0033, 0xFFF8, 0xFFD0, 0xFFCE,\n    0xFFD3, 0xFFDD, 0xFFE9, 0xFFF4, 0xFFFD, 0x0000, 0xF66D, 0xF680,\n    0xF6B3, 0xF700, 0xF761, 0xF7D1, 0xF848, 0xF8C1, 0xF935, 0xF9AB,\n    0xFA2E, 0xFABA, 0xFB4B, 0xFBDD, 0xFC6C, 0xFCF6, 0xFD82, 0xFE08,\n    0xFE6E, 0xFEBD, 0xFF0C, 0xFF58, 0xFF9B, 0xFFD0, 0xFFF4, 0x0000,\n    0x0626, 0x0696, 0x07B5, 0x0938, 0x0AD6, 0x0C44, 0x0D38, 0x0D68,\n    0x0C8B, 0x0A13, 0x060E, 0x0117, 0xFBC8, 0xF6BA, 0xF289, 0xEFD0,\n    0xF1C6, 0xF756, 0xFAA2, 0xFA50, 0xF924, 0xF771, 0xF58D, 0xF3CA,\n    0xF27E, 0xF1FD, 0x8001, 0xC000, 0xC000, 0x2000, 0x3FFF, 0xE000,\n    0x2000, 0x3FFF, 0xE000, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,\n    0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,\n    0x0005, 0x0005, 0x0005, 0x0005, 0x0004, 0x0004, 0x0003, 0x0002,\n    0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x2B2F, 0x2AB5, 0x295A,\n    0x273A, 0x2471, 0x211B, 0x1D55, 0x193B, 0x14E9, 0x107C, 0x0C0F,\n    0x07C0, 0x03A9, 0xFFE9, 0xFC99, 0xF9D8, 0xF7C0, 0xF6AC, 0xF6B5,\n    0xF798, 0xF911, 0xFADC, 0xFCB7, 0xFE5E, 0xFF8D, 0x0000, 0x4006,\n    0x4006, 0x4006, 0x4006, 0x4005, 0x4005, 0x4005, 0x4004, 0x4003,\n    0x4003, 0x4002, 0x4002, 0x4001, 0x4001, 0x4000, 0x4000, 0x3FFF,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x4000, 0x4000, 0x4000, 0x4000, 0x4000,\n    0x4000, 0x0000,\n};\n\n// 0x0500F554\nstatic const u16 king_bobomb_seg5_animindex_0500F554[] = {\n    0x0001, 0x0000, 0x001A, 0x0001, 0x001A, 0x001B, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x001A, 0x0213, 0x001A, 0x022D, 0x001A, 0x0247,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0210, 0x0001, 0x0211, 0x0001, 0x0212,\n    0x001A, 0x00D2, 0x001A, 0x00EC, 0x001A, 0x0106,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001A, 0x006A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001A, 0x0036,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x020D, 0x0001, 0x020E, 0x0001, 0x020F,\n    0x001A, 0x0120, 0x001A, 0x013A, 0x001A, 0x0154,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001A, 0x0084,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001A, 0x0050,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x020C,\n    0x001A, 0x016E, 0x001A, 0x0188, 0x001A, 0x01A2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001A, 0x009E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x020A, 0x0001, 0x020B,\n    0x001A, 0x01BC, 0x001A, 0x01D6, 0x001A, 0x01F0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001A, 0x00B8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0035,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x0500F6C8\nstatic const struct Animation king_bobomb_seg5_anim_0500F6C8 = {\n    0,\n    0,\n    0,\n    0,\n    0x1A,\n    ANIMINDEX_NUMPARTS(king_bobomb_seg5_animindex_0500F554),\n    king_bobomb_seg5_animvalue_0500F090,\n    king_bobomb_seg5_animindex_0500F554,\n    0,\n};\n"
  },
  {
    "path": "actors/king_bobomb/anims/anim_0500FE18.inc.c",
    "content": "// 0x0500F6E0\nstatic const s16 king_bobomb_seg5_animvalue_0500F6E0[] = {\n    0x0000, 0x0000, 0xFFFD, 0xFFF4, 0xFFE9, 0xFFE0, 0xFFDC, 0xFFDE,\n    0xFFE1, 0xFFE6, 0xFFEB, 0xFFF2, 0xFFF8, 0xFFFD, 0x0001, 0x0007,\n    0x000D, 0x0013, 0x0019, 0x001F, 0x0024, 0x0028, 0x002A, 0x002B,\n    0x0029, 0x0023, 0x001A, 0x0011, 0x0008, 0x0002, 0x02A5, 0x02A7,\n    0x02AC, 0x02B2, 0x02B7, 0x02B9, 0x02B9, 0x02B7, 0x02B5, 0x02B2,\n    0x02B0, 0x02AE, 0x02AD, 0x02AE, 0x02AF, 0x02B1, 0x02B4, 0x02B6,\n    0x02B9, 0x02BB, 0x02BC, 0x02BD, 0x02BD, 0x02BC, 0x02B8, 0x02B3,\n    0x02AE, 0x02AA, 0x02A6, 0xFFFB, 0x0000, 0x001C, 0x006C, 0x00E4,\n    0x017A, 0x0225, 0x02DA, 0x038E, 0x0439, 0x04D0, 0x0548, 0x0597,\n    0x05B4, 0x05A5, 0x057C, 0x053B, 0x04E7, 0x0483, 0x0412, 0x0399,\n    0x031A, 0x0299, 0x021A, 0x01A1, 0x0130, 0x00CC, 0x0078, 0x0037,\n    0x000E, 0x0000, 0x0005, 0x0015, 0x002A, 0x0041, 0x0057, 0x0067,\n    0x006E, 0x0069, 0x0054, 0x002A, 0xFFEA, 0xFF38, 0xFE00, 0xFCA6,\n    0xFB8E, 0xFB1D, 0xFC4B, 0xFE8E, 0x0000, 0x0052, 0x007E, 0x008B,\n    0x0080, 0x0067, 0x0045, 0x0024, 0x000A, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0005, 0x0008,\n    0x000A, 0x0008, 0x0000, 0xFFE9, 0xFFC3, 0xFF9F, 0xFF8C, 0xFF89,\n    0xFF8D, 0xFF94, 0xFF9F, 0xFFAB, 0xFFB7, 0xFFC1, 0xFFCC, 0xFFDA,\n    0xFFE8, 0xFFF4, 0xFFFD, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0009, 0x001E, 0x0034, 0x003D, 0x0030, 0x0000,\n    0xFF84, 0xFEC0, 0xFDEF, 0xFD4A, 0xFCC4, 0xFC33, 0xFBA6, 0xFB2B,\n    0xFAD0, 0xFAA4, 0xFAB6, 0xFB3F, 0xFC45, 0xFD83, 0xFEB9, 0xFFA4,\n    0x0000, 0x00C8, 0x02AF, 0x050A, 0x072E, 0x0870, 0x0826, 0x05AA,\n    0x0165, 0xFC3F, 0xF71D, 0xF2E8, 0xF085, 0xF17D, 0xF545, 0xF9A7,\n    0xFC6E, 0xFD66, 0xFDEB, 0xFE1C, 0xFE1A, 0xFE05, 0xFDFD, 0xFE22,\n    0xFE76, 0xFEDD, 0xFF46, 0xFFA4, 0xFFE7, 0x0000, 0xFFFF, 0xFFFD,\n    0xFFFA, 0xFFF9, 0xFFFA, 0x0000, 0x000B, 0x001B, 0x002E, 0x0042,\n    0x0056, 0x0068, 0x0077, 0x0086, 0x0094, 0x00A2, 0x00B0, 0x00BF,\n    0x00D4, 0x00F0, 0x0109, 0x0117, 0x0112, 0x00F2, 0x00BC, 0x007C,\n    0x003F, 0x0011, 0x0000, 0x003F, 0x00E0, 0x01B4, 0x0290, 0x0346,\n    0x03AA, 0x03C0, 0x03AC, 0x0373, 0x0317, 0x029D, 0x0209, 0x0137,\n    0x001E, 0xFEE7, 0xFDBB, 0xFCC1, 0xFC24, 0xFC04, 0xFC4D, 0xFCD0,\n    0xFD63, 0xFDDA, 0xFE41, 0xFEB8, 0xFF31, 0xFF9A, 0xFFE4, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFDE, 0xFF92,\n    0xFF45, 0xFF23, 0xFF53, 0x0000, 0x019D, 0x0420, 0x06F7, 0x098E,\n    0x0B53, 0x0BB4, 0x09C0, 0x05C3, 0x0105, 0xFCD0, 0xFA69, 0xFA16,\n    0xFAEA, 0xFC69, 0xFE14, 0xFF71, 0x0000, 0x0000, 0x0001, 0x0003,\n    0x0004, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0004, 0x0004,\n    0x0004, 0x0003, 0x0003, 0x0003, 0x0002, 0x0001, 0x0001, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xEA00, 0xE975, 0xE853, 0xE75F, 0xE759, 0xE903, 0xEC4B,\n    0xF071, 0xF535, 0xFA56, 0xFF95, 0x04B0, 0x096A, 0x0D80, 0x10B4,\n    0x12F3, 0x1457, 0x14DC, 0x1481, 0x1344, 0x1122, 0x0DC1, 0x0913,\n    0x038C, 0xFDA2, 0xF7C6, 0xF26D, 0xEE0C, 0xEB17, 0xEECC, 0xEECC,\n    0xEECC, 0xEECB, 0xEECB, 0xEECB, 0xEECB, 0xEECB, 0xEECC, 0xEECC,\n    0xEECC, 0xEECC, 0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD,\n    0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECD, 0xEECC, 0xEECC,\n    0xEECC, 0xEECC, 0xEECC, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,\n    0x0005, 0x0004, 0x0004, 0x0003, 0x0002, 0x0001, 0x0001, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0002, 0x0003, 0x0003,\n    0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0005, 0x0005,\n    0xF3C7, 0xF25A, 0xEF18, 0xEB88, 0xE931, 0xE99B, 0xEC82, 0xF073,\n    0xF52D, 0xFA70, 0xFFFB, 0x058E, 0x0AE9, 0x0FCC, 0x13F6, 0x17B2,\n    0x1B16, 0x1D95, 0x1EA1, 0x1DAC, 0x1AC2, 0x1691, 0x1178, 0x0BD5,\n    0x060A, 0x0076, 0xFB7A, 0xF773, 0xF4C2, 0xEECC, 0xEECC, 0xEECB,\n    0xEECA, 0xEEC9, 0xEEC8, 0xEEC8, 0xEEC8, 0xEEC8, 0xEEC9, 0xEEC9,\n    0xEEC9, 0xEECA, 0xEECA, 0xEECA, 0xEECA, 0xEECA, 0xEECB, 0xEECB,\n    0xEECB, 0xEECB, 0xEECB, 0xEECB, 0xEECB, 0xEECC, 0xEECC, 0xEECC,\n    0xEECC, 0xEECC, 0xC001, 0xC009, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0002, 0x0002, 0x0002, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0001, 0x0001, 0x0001, 0x0002, 0x0002, 0x0002, 0x0003, 0x0003,\n    0x0003, 0xF085, 0xF0F7, 0xF236, 0xF421, 0xF694, 0xF96E, 0xFC8C,\n    0xFFCC, 0x030C, 0x062A, 0x0904, 0x0B77, 0x0D61, 0x0EA1, 0x0F13,\n    0x0EAF, 0x0D96, 0x0BE5, 0x09B6, 0x0727, 0x0451, 0x0152, 0xFE46,\n    0xFB47, 0xF871, 0xF5E1, 0xF3B3, 0xF201, 0xF0E9, 0xF1FC, 0xF1FC,\n    0xF1FC, 0xF1FC, 0xF1FC, 0xF1FC, 0xF1FD, 0xF1FD, 0xF1FD, 0xF1FD,\n    0xF1FD, 0xF1FD, 0xF1FD, 0xF1FD, 0xF1FD, 0xF1FD, 0xF1FD, 0xF1FD,\n    0xF1FD, 0xF1FD, 0xF1FD, 0xF1FD, 0xF1FD, 0xF1FD, 0xF1FC, 0xF1FC,\n    0xF1FC, 0xF1FC, 0xF1FC, 0x0003, 0x0003, 0x0003, 0x0003, 0x0002,\n    0x0002, 0x0002, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001,\n    0x0001, 0x0001, 0x0002, 0x0002, 0x0002, 0x0003, 0x0003, 0x0003,\n    0xF639, 0xF69F, 0xF7BC, 0xF972, 0xFBA3, 0xFE2F, 0x00F7, 0x03DE,\n    0x06C6, 0x098F, 0x0C1B, 0x0E4B, 0x1001, 0x111F, 0x1184, 0x112B,\n    0x1031, 0x0EAE, 0x0CBB, 0x0A71, 0x07E9, 0x053B, 0x0281, 0xFFD5,\n    0xFD4D, 0xFB03, 0xF910, 0xF78D, 0xF692, 0xF1FD, 0xF1FD, 0xF1FD,\n    0xF1FD, 0xF1FD, 0xF1FD, 0xF1FD, 0xF1FD, 0xF1FD, 0xF1FD, 0xF1FD,\n    0xF1FD, 0xF1FD, 0xF1FD, 0xF1FD, 0xF1FD, 0xF1FD, 0xF1FD, 0xF1FD,\n    0xF1FD, 0xF1FD, 0xF1FD, 0xF1FD, 0xF1FD, 0xF1FD, 0xF1FD, 0xF1FD,\n    0xF1FD, 0xF1FD, 0x8001, 0xC000, 0xC000, 0x2000, 0x3FFF, 0xE000,\n    0x2000, 0x3FFF, 0xE000, 0x054B, 0x0507, 0x0452, 0x0350, 0x0223,\n    0x00EF, 0xFFD9, 0xFEBB, 0xFD6E, 0xFC0C, 0xFAAE, 0xF96F, 0xF86A,\n    0xF7B7, 0xF772, 0xF7AC, 0xF854, 0xF950, 0xFA84, 0xFBD7, 0xFD2E,\n    0xFE6D, 0xFF7B, 0x007A, 0x0193, 0x02AC, 0x03AF, 0x0485, 0x0516,\n    0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0004, 0x0004,\n    0x0004, 0x0003, 0x0003, 0x0002, 0x0002, 0x0001, 0x0000, 0xFFFF,\n    0xFFFC, 0xFFFA, 0xFFF7, 0xFFF4, 0xFFF2, 0xFFF1, 0xFFF0, 0xFFF1,\n    0xFFF3, 0xFFF7, 0xFFFA, 0xFFFD, 0x0000, 0x4000, 0x4055, 0x412A,\n    0x423E, 0x4352, 0x4427, 0x447C, 0x445B, 0x4403, 0x437E, 0x42DA,\n    0x4222, 0x4163, 0x40A9, 0x4000, 0x3F50, 0x3E81, 0x3DA3, 0x3CC8,\n    0x3C00, 0x3B5D, 0x3AEF, 0x3AC6, 0x3B10, 0x3BCF, 0x3CD5, 0x3DF2,\n    0x3EF7, 0x3FB6,\n};\n\n// 0x0500FCA4\nstatic const u16 king_bobomb_seg5_animindex_0500FCA4[] = {\n    0x001D, 0x0001, 0x001D, 0x001E, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x001D, 0x028B, 0x001D, 0x02A8, 0x001D, 0x02C5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0288, 0x0001, 0x0289, 0x0001, 0x028A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01D2,\n    0x001D, 0x0076, 0x001D, 0x0093, 0x001D, 0x00B0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001D, 0x003C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0285, 0x0001, 0x0286, 0x0001, 0x0287,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01D3,\n    0x001D, 0x00CD, 0x001D, 0x00EA, 0x001D, 0x0107,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001D, 0x0059,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0284,\n    0x001D, 0x01D4, 0x001D, 0x01F1, 0x001D, 0x020E,\n    0x001D, 0x0124, 0x001D, 0x0141, 0x001D, 0x015E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0282, 0x0001, 0x0283,\n    0x001D, 0x022B, 0x001D, 0x0248, 0x001D, 0x0265,\n    0x001D, 0x017B, 0x001D, 0x0198, 0x001D, 0x01B5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x003B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x0500FE18\nstatic const struct Animation king_bobomb_seg5_anim_0500FE18 = {\n    0,\n    0,\n    0,\n    0,\n    0x1D,\n    ANIMINDEX_NUMPARTS(king_bobomb_seg5_animindex_0500FCA4),\n    king_bobomb_seg5_animvalue_0500F6E0,\n    king_bobomb_seg5_animindex_0500FCA4,\n    0,\n};\n"
  },
  {
    "path": "actors/king_bobomb/anims/data.inc.c",
    "content": "#include \"anim_0500BDFC.inc.c\"\n#include \"anim_0500C2AC.inc.c\"\n#include \"anim_0500C520.inc.c\"\n#include \"anim_0500C774.inc.c\"\n#include \"anim_0500CFCC.inc.c\"\n#include \"anim_0500D5B0.inc.c\"\n#include \"anim_0500D978.inc.c\"\n#include \"anim_0500DDD8.inc.c\"\n#include \"anim_0500E10C.inc.c\"\n#include \"anim_0500F078.inc.c\"\n#include \"anim_0500F6C8.inc.c\"\n#include \"anim_0500FE18.inc.c\"\n"
  },
  {
    "path": "actors/king_bobomb/anims/table.inc.c",
    "content": "// 0x0500FE30\nconst struct Animation *const king_bobomb_seg5_anims_0500FE30[] = {\n    &king_bobomb_seg5_anim_0500BDFC,\n    &king_bobomb_seg5_anim_0500C2AC,\n    &king_bobomb_seg5_anim_0500C520,\n    &king_bobomb_seg5_anim_0500C774,\n    &king_bobomb_seg5_anim_0500CFCC,\n    &king_bobomb_seg5_anim_0500D5B0,\n    &king_bobomb_seg5_anim_0500D978,\n    &king_bobomb_seg5_anim_0500DDD8,\n    &king_bobomb_seg5_anim_0500E10C,\n    &king_bobomb_seg5_anim_0500F078,\n    &king_bobomb_seg5_anim_0500F6C8,\n    &king_bobomb_seg5_anim_0500FE18,\n};\n"
  },
  {
    "path": "actors/king_bobomb/geo.inc.c",
    "content": "// 0x0C000000\nconst GeoLayout king_bobomb_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 300),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_BILLBOARD(),\n                        GEO_OPEN_NODE(),\n                            GEO_DISPLAY_LIST(LAYER_ALPHA, king_bobomb_seg5_dl_0500B188),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, -243, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 488, 0, 0, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 110, 0, 0, NULL),\n                                GEO_OPEN_NODE(),\n                                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, king_bobomb_seg5_dl_0500AD08),\n                                GEO_CLOSE_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                                GEO_OPEN_NODE(),\n                                    GEO_BILLBOARD(),\n                                    GEO_OPEN_NODE(),\n                                        GEO_DISPLAY_LIST(LAYER_ALPHA, king_bobomb_seg5_dl_0500A5D8),\n                                    GEO_CLOSE_NODE(),\n                                GEO_CLOSE_NODE(),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, king_bobomb_seg5_dl_0500B2D0),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, king_bobomb_seg5_dl_0500B418),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, king_bobomb_seg5_dl_0500B6C0),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 243, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 488, 0, 0, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 110, 0, 0, NULL),\n                                GEO_OPEN_NODE(),\n                                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, king_bobomb_seg5_dl_0500B068),\n                                GEO_CLOSE_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                                GEO_OPEN_NODE(),\n                                    GEO_BILLBOARD(),\n                                    GEO_OPEN_NODE(),\n                                        GEO_DISPLAY_LIST(LAYER_ALPHA, king_bobomb_seg5_dl_0500A890),\n                                    GEO_CLOSE_NODE(),\n                                GEO_CLOSE_NODE(),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, -1, 36, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 548, 0, 0, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                                GEO_OPEN_NODE(),\n                                    GEO_BILLBOARD(),\n                                    GEO_OPEN_NODE(),\n                                        GEO_DISPLAY_LIST(LAYER_ALPHA, king_bobomb_seg5_dl_0500A4F0),\n                                    GEO_CLOSE_NODE(),\n                                GEO_CLOSE_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 189, 0, 0, NULL),\n                                GEO_OPEN_NODE(),\n                                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                                    GEO_OPEN_NODE(),\n                                        GEO_BILLBOARD(),\n                                        GEO_OPEN_NODE(),\n                                            GEO_DISPLAY_LIST(LAYER_ALPHA, king_bobomb_seg5_dl_0500A6C0),\n                                        GEO_CLOSE_NODE(),\n                                    GEO_CLOSE_NODE(),\n                                    GEO_ASM(0, geo_update_held_mario_pos),\n                                GEO_CLOSE_NODE(),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 1, 36, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 548, 0, 0, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                                GEO_OPEN_NODE(),\n                                    GEO_BILLBOARD(),\n                                    GEO_OPEN_NODE(),\n                                        GEO_DISPLAY_LIST(LAYER_ALPHA, king_bobomb_seg5_dl_0500A7A8),\n                                    GEO_CLOSE_NODE(),\n                                GEO_CLOSE_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 189, 0, 0, NULL),\n                                GEO_OPEN_NODE(),\n                                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                                    GEO_OPEN_NODE(),\n                                        GEO_BILLBOARD(),\n                                        GEO_OPEN_NODE(),\n                                            GEO_DISPLAY_LIST(LAYER_ALPHA, king_bobomb_seg5_dl_0500A978),\n                                        GEO_CLOSE_NODE(),\n                                    GEO_CLOSE_NODE(),\n                                GEO_CLOSE_NODE(),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(), //! more close than open nodes\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/king_bobomb/model.inc.c",
    "content": "// King Bobomb\n\n// Unreferenced light group\nUNUSED static const Lights1 king_bobomb_lights_unused1 = gdSPDefLights1(\n    0x36, 0x1e, 0x00,\n    0xd9, 0x7a, 0x00, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 king_bobomb_lights_unused2 = gdSPDefLights1(\n    0x00, 0x00, 0x3f,\n    0x00, 0x00, 0xff, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 king_bobomb_lights_unused3 = gdSPDefLights1(\n    0x3c, 0x28, 0x00,\n    0xf1, 0xa2, 0x00, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 king_bobomb_lights_unused4 = gdSPDefLights1(\n    0x2c, 0x2c, 0x2c,\n    0xb2, 0xb2, 0xb2, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 king_bobomb_lights_unused5 = gdSPDefLights1(\n    0x06, 0x06, 0x06,\n    0x19, 0x19, 0x19, 0x28, 0x28, 0x28\n);\n\n// 0x05000078\nALIGNED8 static const Texture king_bobomb_seg5_texture_05000078[] = {\n#include \"actors/king_bobomb/bob-omb_buddy_left_side_unused.rgba16.inc.c\"\n};\n\n// 0x05001078\nALIGNED8 static const Texture king_bobomb_seg5_texture_05001078[] = {\n#include \"actors/king_bobomb/bob-omb_buddy_right_side_unused.rgba16.inc.c\"\n};\n\n// 0x05002078\nALIGNED8 static const Texture king_bobomb_seg5_texture_05002078[] = {\n#include \"actors/king_bobomb/king_bob-omb_arm.rgba16.inc.c\"\n};\n\n// 0x05002878\nALIGNED8 static const Texture king_bobomb_seg5_texture_05002878[] = {\n#include \"actors/king_bobomb/king_bob-omb_body_unused.rgba16.inc.c\"\n};\n\n// 0x05004878\nALIGNED8 static const Texture king_bobomb_seg5_texture_05004878[] = {\n#include \"actors/king_bobomb/king_bob-omb_eyes.rgba16.inc.c\"\n};\n\n// 0x05005078 - Unused\nALIGNED8 static const Texture king_bobomb_seg5_texture_05005078[] = {\n#include \"actors/king_bobomb/king_bob-omb_eyes_blink.rgba16.inc.c\"\n};\n\n// 0x05005878\nALIGNED8 static const Texture king_bobomb_seg5_texture_05005878[] = {\n#include \"actors/king_bobomb/king_bob-omb_hand.rgba16.inc.c\"\n};\n\n// 0x05006078\nALIGNED8 static const Texture king_bobomb_seg5_texture_05006078[] = {\n#include \"actors/king_bobomb/king_bob-omb_crown_rim.rgba16.inc.c\"\n};\n\n// 0x05006478\nALIGNED8 static const Texture king_bobomb_seg5_texture_05006478[] = {\n#include \"actors/king_bobomb/bob-omb_buddy_body_unused.rgba16.inc.c\"\n};\n\n// 0x05008478\nALIGNED8 static const Texture king_bobomb_seg5_texture_05008478[] = {\n#include \"actors/king_bobomb/king_bob-omb_left_side.rgba16.inc.c\"\n};\n\n// 0x05009478\nALIGNED8 static const Texture king_bobomb_seg5_texture_05009478[] = {\n#include \"actors/king_bobomb/king_bob-omb_right_side.rgba16.inc.c\"\n};\n\n// 0x0500A478\nstatic const Vtx king_bobomb_seg5_vertex_0500A478[] = {\n    {{{    23,     23,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -22,     23,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -22,    -22,      0}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    23,    -22,      0}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500A4B8 - 0x0500A4F0\nconst Gfx king_bobomb_seg5_dl_0500A4B8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, king_bobomb_seg5_texture_05002078),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(king_bobomb_seg5_vertex_0500A478, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500A4F0 - 0x0500A560\nconst Gfx king_bobomb_seg5_dl_0500A4F0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(king_bobomb_seg5_dl_0500A4B8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500A560\nstatic const Vtx king_bobomb_seg5_vertex_0500A560[] = {\n    {{{    26,     26,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -25,     26,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -25,    -25,      0}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    26,    -25,      0}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500A5A0 - 0x0500A5D8\nconst Gfx king_bobomb_seg5_dl_0500A5A0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, king_bobomb_seg5_texture_05002078),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(king_bobomb_seg5_vertex_0500A560, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500A5D8 - 0x0500A648\nconst Gfx king_bobomb_seg5_dl_0500A5D8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(king_bobomb_seg5_dl_0500A5A0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500A648\nstatic const Vtx king_bobomb_seg5_vertex_0500A648[] = {\n    {{{    49,     49,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -48,     49,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -48,    -48,      0}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    49,    -48,      0}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500A688 - 0x0500A6C0\nconst Gfx king_bobomb_seg5_dl_0500A688[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, king_bobomb_seg5_texture_05005878),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(king_bobomb_seg5_vertex_0500A648, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500A6C0 - 0x0500A730\nconst Gfx king_bobomb_seg5_dl_0500A6C0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(king_bobomb_seg5_dl_0500A688),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500A730\nstatic const Vtx king_bobomb_seg5_vertex_0500A730[] = {\n    {{{    23,     23,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -22,     23,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -22,    -22,      0}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    23,    -22,      0}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500A770 - 0x0500A7A8\nconst Gfx king_bobomb_seg5_dl_0500A770[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, king_bobomb_seg5_texture_05002078),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(king_bobomb_seg5_vertex_0500A730, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500A7A8 - 0x0500A818\nconst Gfx king_bobomb_seg5_dl_0500A7A8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(king_bobomb_seg5_dl_0500A770),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500A818\nstatic const Vtx king_bobomb_seg5_vertex_0500A818[] = {\n    {{{    26,     26,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -25,     26,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -25,    -25,      0}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    26,    -25,      0}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500A858 - 0x0500A890\nconst Gfx king_bobomb_seg5_dl_0500A858[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, king_bobomb_seg5_texture_05002078),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(king_bobomb_seg5_vertex_0500A818, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500A890 - 0x0500A900\nconst Gfx king_bobomb_seg5_dl_0500A890[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(king_bobomb_seg5_dl_0500A858),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500A900\nstatic const Vtx king_bobomb_seg5_vertex_0500A900[] = {\n    {{{    49,     49,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -48,     49,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -48,    -48,      0}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    49,    -48,      0}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500A940 - 0x0500A978\nconst Gfx king_bobomb_seg5_dl_0500A940[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, king_bobomb_seg5_texture_05005878),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(king_bobomb_seg5_vertex_0500A900, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500A978 - 0x0500A9E8\nconst Gfx king_bobomb_seg5_dl_0500A978[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(king_bobomb_seg5_dl_0500A940),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500A9E8\nstatic const Lights1 king_bobomb_seg5_lights_0500A9E8 = gdSPDefLights1(\n    0x6f, 0x56, 0x11,\n    0xde, 0xad, 0x23, 0x28, 0x28, 0x28\n);\n\n// 0x0500AA00\nstatic const Vtx king_bobomb_seg5_vertex_0500AA00[] = {\n    {{{   -40,   -165,   -122}, 0, {     0,      0}, {0xcc, 0xd8, 0x94, 0xff}}},\n    {{{    80,     37,   -144}, 0, {     0,      0}, {0x68, 0x1b, 0xbe, 0xff}}},\n    {{{    80,   -165,   -144}, 0, {     0,      0}, {0x2d, 0xd3, 0x93, 0xff}}},\n    {{{   -14,     37,   -122}, 0, {     0,      0}, {0xb3, 0x29, 0xa5, 0xff}}},\n    {{{    80,    138,    -42}, 0, {     0,      0}, {0x37, 0x69, 0xd5, 0xff}}},\n    {{{    80,    138,    159}, 0, {     0,      0}, {0x36, 0x69, 0x2c, 0xff}}},\n    {{{    80,     37,    261}, 0, {     0,      0}, {0x54, 0x24, 0x57, 0xff}}},\n    {{{    80,   -266,    -42}, 0, {     0,      0}, {0x38, 0x98, 0xd4, 0xff}}},\n    {{{    80,   -266,    159}, 0, {     0,      0}, {0x5b, 0xaf, 0x21, 0xff}}},\n    {{{    80,   -165,    261}, 0, {     0,      0}, {0x2d, 0xd5, 0x6e, 0xff}}},\n    {{{     6,    138,    -31}, 0, {     0,      0}, {0xd6, 0x6e, 0xd3, 0xff}}},\n    {{{   -40,   -266,    148}, 0, {     0,      0}, {0xd4, 0x94, 0x30, 0xff}}},\n    {{{   -40,   -266,    -31}, 0, {     0,      0}, {0xb5, 0xa2, 0xdb, 0xff}}},\n    {{{   -40,   -165,    239}, 0, {     0,      0}, {0xb2, 0xe7, 0x60, 0xff}}},\n    {{{   -14,     37,    239}, 0, {     0,      0}, {0xcc, 0x31, 0x68, 0xff}}},\n    {{{     6,    138,    148}, 0, {     0,      0}, {0xbc, 0x65, 0x22, 0xff}}},\n};\n\n// 0x0500AB00\nstatic const Vtx king_bobomb_seg5_vertex_0500AB00[] = {\n    {{{     6,    138,    148}, 0, {     0,      0}, {0xbc, 0x65, 0x22, 0xff}}},\n    {{{     6,    138,    -31}, 0, {     0,      0}, {0xd6, 0x6e, 0xd3, 0xff}}},\n    {{{   -75,     37,    -31}, 0, {     0,      0}, {0x8e, 0x31, 0xe9, 0xff}}},\n    {{{   -75,     37,    148}, 0, {     0,      0}, {0x90, 0x29, 0x2a, 0xff}}},\n    {{{   -14,     37,    239}, 0, {     0,      0}, {0xcc, 0x31, 0x68, 0xff}}},\n    {{{  -101,   -165,    -31}, 0, {     0,      0}, {0x8b, 0xef, 0xd4, 0xff}}},\n    {{{  -101,   -165,    148}, 0, {     0,      0}, {0x87, 0xe7, 0x18, 0xff}}},\n    {{{   -14,     37,   -122}, 0, {     0,      0}, {0xb3, 0x29, 0xa5, 0xff}}},\n    {{{   -40,   -165,    239}, 0, {     0,      0}, {0xb2, 0xe7, 0x60, 0xff}}},\n    {{{   -40,   -266,    148}, 0, {     0,      0}, {0xd4, 0x94, 0x30, 0xff}}},\n    {{{   -40,   -165,   -122}, 0, {     0,      0}, {0xcc, 0xd8, 0x94, 0xff}}},\n    {{{   -40,   -266,    -31}, 0, {     0,      0}, {0xb5, 0xa2, 0xdb, 0xff}}},\n};\n\n// 0x0500ABC0 - 0x0500AD08\nconst Gfx king_bobomb_seg5_dl_0500ABC0[] = {\n    gsSPLight(&king_bobomb_seg5_lights_0500A9E8.l, 1),\n    gsSPLight(&king_bobomb_seg5_lights_0500A9E8.a, 2),\n    gsSPVertex(king_bobomb_seg5_vertex_0500AA00, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  1,  5,  6, 0x0),\n    gsSP2Triangles( 1,  7,  2, 0x0,  1,  8,  7, 0x0),\n    gsSP2Triangles( 1,  9,  8, 0x0,  1,  6,  9, 0x0),\n    gsSP2Triangles( 1, 10,  4, 0x0,  1,  3, 10, 0x0),\n    gsSP2Triangles(11, 12,  7, 0x0, 11,  7,  8, 0x0),\n    gsSP2Triangles( 7, 12,  0, 0x0,  7,  0,  2, 0x0),\n    gsSP2Triangles( 9, 11,  8, 0x0, 10,  5,  4, 0x0),\n    gsSP2Triangles( 9, 13, 11, 0x0, 14, 13,  9, 0x0),\n    gsSP2Triangles(14,  9,  6, 0x0, 14,  6,  5, 0x0),\n    gsSP2Triangles(14,  5, 15, 0x0, 10, 15,  5, 0x0),\n    gsSPVertex(king_bobomb_seg5_vertex_0500AB00, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  4,  0, 0x0,  2,  5,  6, 0x0),\n    gsSP2Triangles( 2,  6,  3, 0x0,  2,  1,  7, 0x0),\n    gsSP2Triangles( 7,  5,  2, 0x0,  8,  4,  3, 0x0),\n    gsSP2Triangles( 8,  3,  6, 0x0,  6,  9,  8, 0x0),\n    gsSP2Triangles( 7, 10,  5, 0x0,  5, 10, 11, 0x0),\n    gsSP2Triangles(11,  6,  5, 0x0, 11,  9,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500AD08 - 0x0500AD38\nconst Gfx king_bobomb_seg5_dl_0500AD08[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(king_bobomb_seg5_dl_0500ABC0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500AD38\nstatic const Lights1 king_bobomb_seg5_lights_0500AD38 = gdSPDefLights1(\n    0x6f, 0x4f, 0x10,\n    0xde, 0x9e, 0x20, 0x28, 0x28, 0x28\n);\n\n// 0x0500AD50\nstatic const Vtx king_bobomb_seg5_vertex_0500AD50[] = {\n    {{{     6,    138,   -147}, 0, {     0,      0}, {0xd6, 0x6e, 0xd3, 0xff}}},\n    {{{    80,     37,   -260}, 0, {     0,      0}, {0x68, 0x1b, 0xbe, 0xff}}},\n    {{{   -14,     37,   -238}, 0, {     0,      0}, {0xb3, 0x29, 0xa5, 0xff}}},\n    {{{    80,    138,   -158}, 0, {     0,      0}, {0x37, 0x69, 0xd5, 0xff}}},\n    {{{    80,   -165,   -260}, 0, {     0,      0}, {0x2d, 0xd3, 0x93, 0xff}}},\n    {{{   -40,   -165,   -238}, 0, {     0,      0}, {0xcc, 0xd8, 0x94, 0xff}}},\n    {{{    80,    138,     43}, 0, {     0,      0}, {0x36, 0x69, 0x2c, 0xff}}},\n    {{{    80,     37,    145}, 0, {     0,      0}, {0x54, 0x24, 0x57, 0xff}}},\n    {{{    80,   -266,   -158}, 0, {     0,      0}, {0x38, 0x98, 0xd4, 0xff}}},\n    {{{    80,   -266,     43}, 0, {     0,      0}, {0x5b, 0xaf, 0x21, 0xff}}},\n    {{{    80,   -165,    145}, 0, {     0,      0}, {0x2d, 0xd5, 0x6e, 0xff}}},\n    {{{   -40,   -266,   -147}, 0, {     0,      0}, {0xb5, 0xa2, 0xdb, 0xff}}},\n    {{{   -40,   -266,     32}, 0, {     0,      0}, {0xd4, 0x94, 0x30, 0xff}}},\n    {{{   -14,     37,    123}, 0, {     0,      0}, {0xcc, 0x31, 0x68, 0xff}}},\n    {{{   -40,   -165,    123}, 0, {     0,      0}, {0xb2, 0xe7, 0x60, 0xff}}},\n    {{{     6,    138,     32}, 0, {     0,      0}, {0xbc, 0x65, 0x22, 0xff}}},\n};\n\n// 0x0500AE50\nstatic const Vtx king_bobomb_seg5_vertex_0500AE50[] = {\n    {{{   -75,     37,   -147}, 0, {     0,      0}, {0x8e, 0x31, 0xe9, 0xff}}},\n    {{{  -101,   -165,   -147}, 0, {     0,      0}, {0x8b, 0xef, 0xd4, 0xff}}},\n    {{{  -101,   -165,     32}, 0, {     0,      0}, {0x87, 0xe7, 0x18, 0xff}}},\n    {{{   -75,     37,     32}, 0, {     0,      0}, {0x90, 0x29, 0x2a, 0xff}}},\n    {{{   -14,     37,   -238}, 0, {     0,      0}, {0xb3, 0x29, 0xa5, 0xff}}},\n    {{{     6,    138,     32}, 0, {     0,      0}, {0xbc, 0x65, 0x22, 0xff}}},\n    {{{     6,    138,   -147}, 0, {     0,      0}, {0xd6, 0x6e, 0xd3, 0xff}}},\n    {{{   -14,     37,    123}, 0, {     0,      0}, {0xcc, 0x31, 0x68, 0xff}}},\n    {{{    80,    138,     43}, 0, {     0,      0}, {0x36, 0x69, 0x2c, 0xff}}},\n    {{{   -40,   -165,    123}, 0, {     0,      0}, {0xb2, 0xe7, 0x60, 0xff}}},\n    {{{   -40,   -266,     32}, 0, {     0,      0}, {0xd4, 0x94, 0x30, 0xff}}},\n    {{{   -40,   -165,   -238}, 0, {     0,      0}, {0xcc, 0xd8, 0x94, 0xff}}},\n    {{{   -40,   -266,   -147}, 0, {     0,      0}, {0xb5, 0xa2, 0xdb, 0xff}}},\n};\n\n// 0x0500AF20 - 0x0500B068\nconst Gfx king_bobomb_seg5_dl_0500AF20[] = {\n    gsSPLight(&king_bobomb_seg5_lights_0500AD38.l, 1),\n    gsSPLight(&king_bobomb_seg5_lights_0500AD38.a, 2),\n    gsSPVertex(king_bobomb_seg5_vertex_0500AD50, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles( 1,  3,  6, 0x0,  1,  6,  7, 0x0),\n    gsSP2Triangles( 1,  8,  4, 0x0,  1,  9,  8, 0x0),\n    gsSP2Triangles( 1, 10,  9, 0x0,  1,  7, 10, 0x0),\n    gsSP2Triangles( 8, 11,  5, 0x0,  8,  9, 12, 0x0),\n    gsSP2Triangles( 8, 12, 11, 0x0,  8,  5,  4, 0x0),\n    gsSP2Triangles(10, 12,  9, 0x0,  6,  3,  0, 0x0),\n    gsSP2Triangles(10, 13, 14, 0x0, 10,  7, 13, 0x0),\n    gsSP2Triangles(10, 14, 12, 0x0,  6, 13,  7, 0x0),\n    gsSP1Triangle( 6,  0, 15, 0x0),\n    gsSPVertex(king_bobomb_seg5_vertex_0500AE50, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 1,  0,  4, 0x0,  0,  3,  5, 0x0),\n    gsSP2Triangles( 0,  5,  6, 0x0,  6,  4,  0, 0x0),\n    gsSP2Triangles( 7,  5,  3, 0x0,  8,  5,  7, 0x0),\n    gsSP2Triangles( 3,  9,  7, 0x0,  3,  2,  9, 0x0),\n    gsSP2Triangles(10,  9,  2, 0x0,  1,  4, 11, 0x0),\n    gsSP2Triangles( 2, 12, 10, 0x0,  2,  1, 12, 0x0),\n    gsSP1Triangle(11, 12,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500B068 - 0x0500B098\nconst Gfx king_bobomb_seg5_dl_0500B068[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(king_bobomb_seg5_dl_0500AF20),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500B098\nstatic const Vtx king_bobomb_seg5_vertex_0500B098[] = {\n    {{{     0,    128,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -127,   -127,      0}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -127,      0}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -127,    128,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500B0D8\nstatic const Vtx king_bobomb_seg5_vertex_0500B0D8[] = {\n    {{{   128,    128,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -127,      0}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   128,   -127,      0}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    128,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500B118 - 0x0500B150\nconst Gfx king_bobomb_seg5_dl_0500B118[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, king_bobomb_seg5_texture_05008478),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(king_bobomb_seg5_vertex_0500B098, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500B150 - 0x0500B188\nconst Gfx king_bobomb_seg5_dl_0500B150[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, king_bobomb_seg5_texture_05009478),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(king_bobomb_seg5_vertex_0500B0D8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500B188 - 0x0500B200\nconst Gfx king_bobomb_seg5_dl_0500B188[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(king_bobomb_seg5_dl_0500B118),\n    gsSPDisplayList(king_bobomb_seg5_dl_0500B150),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500B200\nstatic const Lights1 king_bobomb_seg5_lights_0500B200 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0500B218\nstatic const Vtx king_bobomb_seg5_vertex_0500B218[] = {\n    {{{   124,    159,    493}, 0, {     0,      0}, {0x00, 0x18, 0x7c, 0xff}}},\n    {{{  -103,    159,    493}, 0, {     0,    990}, {0x00, 0x18, 0x7c, 0xff}}},\n    {{{  -103,      0,    524}, 0, {   478,    990}, {0x00, 0x08, 0x7e, 0xff}}},\n    {{{   124,      0,    524}, 0, {   478,      0}, {0x00, 0xf8, 0x7e, 0xff}}},\n    {{{  -103,   -158,    493}, 0, {   990,    990}, {0x00, 0xe8, 0x7c, 0xff}}},\n    {{{   124,   -158,    493}, 0, {   990,      0}, {0x00, 0xe8, 0x7c, 0xff}}},\n};\n\n// 0x0500B278 - 0x0500B2D0\nconst Gfx king_bobomb_seg5_dl_0500B278[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, king_bobomb_seg5_texture_05004878),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&king_bobomb_seg5_lights_0500B200.l, 1),\n    gsSPLight(&king_bobomb_seg5_lights_0500B200.a, 2),\n    gsSPVertex(king_bobomb_seg5_vertex_0500B218, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 2,  3,  0, 0x0,  4,  5,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500B2D0 - 0x0500B330\nconst Gfx king_bobomb_seg5_dl_0500B2D0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(king_bobomb_seg5_dl_0500B278),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500B330\nstatic const Lights1 king_bobomb_seg5_lights_0500B330 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0500B348\nstatic const Vtx king_bobomb_seg5_vertex_0500B348[] = {\n    {{{  -189,     -1,    571}, 0, {     0,      0}, {0xdc, 0x19, 0x76, 0xff}}},\n    {{{  -379,    180,    438}, 0, {     0,      0}, {0xde, 0x2e, 0x70, 0xff}}},\n    {{{  -273,     -1,    548}, 0, {     0,      0}, {0xda, 0xed, 0x77, 0xff}}},\n    {{{  -379,   -183,    438}, 0, {     0,      0}, {0xd7, 0xd5, 0x6f, 0xff}}},\n    {{{  -281,   -365,    404}, 0, {     0,      0}, {0xd8, 0xd5, 0x70, 0xff}}},\n    {{{    24,   -436,    485}, 0, {     0,      0}, {0xdd, 0xd7, 0x72, 0xff}}},\n    {{{    24,    432,    485}, 0, {     0,      0}, {0xd9, 0x2a, 0x71, 0xff}}},\n    {{{  -281,    361,    404}, 0, {     0,      0}, {0xd9, 0x2a, 0x71, 0xff}}},\n};\n\n// 0x0500B3C8 - 0x0500B418\nconst Gfx king_bobomb_seg5_dl_0500B3C8[] = {\n    gsSPLight(&king_bobomb_seg5_lights_0500B330.l, 1),\n    gsSPLight(&king_bobomb_seg5_lights_0500B330.a, 2),\n    gsSPVertex(king_bobomb_seg5_vertex_0500B348, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  2,  5,  0, 0x0),\n    gsSP2Triangles( 0,  6,  7, 0x0,  0,  7,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500B418 - 0x0500B458\nconst Gfx king_bobomb_seg5_dl_0500B418[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(king_bobomb_seg5_dl_0500B3C8),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500B458\nstatic const Lights1 king_bobomb_seg5_lights_0500B458 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0500B470\nstatic const Vtx king_bobomb_seg5_vertex_0500B470[] = {\n    {{{   729,    304,    176}, 0, {   394,   -458}, {0xef, 0x6c, 0x3e, 0xff}}},\n    {{{   576,    296,      0}, 0, {     0,    234}, {0xfc, 0x7e, 0x00, 0xff}}},\n    {{{   416,    290,      0}, 0, {   -31,    962}, {0xe9, 0x7c, 0x00, 0xff}}},\n    {{{   416,    145,    252}, 0, {   820,    962}, {0xe9, 0x3e, 0x6c, 0xff}}},\n    {{{   576,    148,    257}, 0, {   820,    234}, {0xfc, 0x3f, 0x6d, 0xff}}},\n    {{{   729,      0,    352}, 0, {  1246,   -458}, {0xef, 0x00, 0x7d, 0xff}}},\n    {{{   416,   -144,    252}, 0, {  1671,    962}, {0xe9, 0xc2, 0x6c, 0xff}}},\n    {{{   729,    304,   -175}, 0, {  4652,   -458}, {0xee, 0x6c, 0xc2, 0xff}}},\n    {{{   415,    145,   -250}, 0, {  4226,    964}, {0xe9, 0x3e, 0x94, 0xff}}},\n    {{{   416,    290,      0}, 0, {  5079,    962}, {0xe9, 0x7c, 0x00, 0xff}}},\n    {{{   576,    296,      0}, 0, {  5078,    234}, {0xfc, 0x7e, 0x00, 0xff}}},\n    {{{   576,    148,   -256}, 0, {  4226,    234}, {0xfb, 0x3f, 0x93, 0xff}}},\n    {{{   729,      0,   -351}, 0, {  3800,   -458}, {0xee, 0x00, 0x83, 0xff}}},\n    {{{   415,   -144,   -250}, 0, {  3374,    964}, {0xe9, 0xc2, 0x94, 0xff}}},\n    {{{   576,   -147,   -256}, 0, {  3374,    234}, {0xfb, 0xc1, 0x93, 0xff}}},\n    {{{   729,   -304,   -175}, 0, {  2948,   -458}, {0xee, 0x94, 0xc2, 0xff}}},\n};\n\n// 0x0500B570\nstatic const Vtx king_bobomb_seg5_vertex_0500B570[] = {\n    {{{   729,   -304,   -175}, 0, {  2948,   -458}, {0xee, 0x94, 0xc2, 0xff}}},\n    {{{   415,   -289,      0}, 0, {  2522,    964}, {0xe9, 0x84, 0x00, 0xff}}},\n    {{{   415,   -144,   -250}, 0, {  3374,    964}, {0xe9, 0xc2, 0x94, 0xff}}},\n    {{{   576,   -295,      0}, 0, {  2523,    234}, {0xfc, 0x82, 0x00, 0xff}}},\n    {{{   729,   -304,    176}, 0, {  2097,   -458}, {0xef, 0x94, 0x3e, 0xff}}},\n    {{{   416,   -144,    252}, 0, {  1671,    962}, {0xe9, 0xc2, 0x6c, 0xff}}},\n    {{{   576,   -147,    257}, 0, {  1671,    234}, {0xfc, 0xc1, 0x6d, 0xff}}},\n    {{{   729,      0,    352}, 0, {  1246,   -458}, {0xef, 0x00, 0x7d, 0xff}}},\n};\n\n// 0x0500B5F0 - 0x0500B6C0\nconst Gfx king_bobomb_seg5_dl_0500B5F0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, king_bobomb_seg5_texture_05006078),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&king_bobomb_seg5_lights_0500B458.l, 1),\n    gsSPLight(&king_bobomb_seg5_lights_0500B458.a, 2),\n    gsSPVertex(king_bobomb_seg5_vertex_0500B470, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 0,  2,  3, 0x0,  5,  4,  3, 0x0),\n    gsSP2Triangles( 5,  3,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0,  7, 11,  8, 0x0),\n    gsSP2Triangles(12, 13,  8, 0x0,  8, 11, 12, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(king_bobomb_seg5_vertex_0500B570, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  1, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  5,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500B6C0 - 0x0500B730\nconst Gfx king_bobomb_seg5_dl_0500B6C0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(king_bobomb_seg5_dl_0500B5F0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/klepto/anims/anim_05005E44.inc.c",
    "content": "// 0x050051E8\nstatic const s16 klepto_seg5_animvalue_050051E8[] = {\n    0x0000, 0x0059, 0x005A, 0x005D, 0x0062, 0x0067, 0x006D, 0x0074,\n    0x007B, 0x0082, 0x0089, 0x008E, 0x0092, 0x0095, 0x0096, 0x0096,\n    0x0094, 0x0091, 0x008E, 0x008A, 0x0085, 0x0080, 0x007B, 0x0075,\n    0x0070, 0x006B, 0x0066, 0x0062, 0x005E, 0x005C, 0x005A, 0x0013,\n    0x0014, 0x0016, 0x001A, 0x001F, 0x0024, 0x002A, 0x002F, 0x0035,\n    0x003A, 0x003F, 0x0042, 0x0045, 0x0046, 0x0045, 0x0044, 0x0041,\n    0x003F, 0x003B, 0x0037, 0x0033, 0x002F, 0x002A, 0x0026, 0x0022,\n    0x001E, 0x001A, 0x0017, 0x0015, 0x0014, 0x3FFF, 0x2C00, 0x2C23,\n    0x2C87, 0x2D25, 0x2DF5, 0x2EEE, 0x300B, 0x3142, 0x328C, 0x33E2,\n    0x353B, 0x3691, 0x37DB, 0x3912, 0x3A2E, 0x3B28, 0x3BF7, 0x3C95,\n    0x3CF9, 0x3D1D, 0x3CB7, 0x3B9F, 0x39FD, 0x37F8, 0x35B8, 0x3364,\n    0x3124, 0x2F20, 0x2D7E, 0x2C66, 0xE0A1, 0xE043, 0xDF36, 0xDD93,\n    0xDB70, 0xD8E5, 0xD609, 0xD2F3, 0xCFBA, 0xCC75, 0xC93D, 0xC626,\n    0xC34A, 0xC0BF, 0xBE9C, 0xBCF9, 0xBBED, 0xBB8E, 0xBC2E, 0xBDEB,\n    0xC091, 0xC3ED, 0xC7CA, 0xCBF5, 0xD03A, 0xD465, 0xD843, 0xDB9E,\n    0xDE45, 0xE002, 0x678C, 0x67C0, 0x6852, 0x6934, 0x6A56, 0x6BAB,\n    0x6D24, 0x6EB3, 0x7049, 0x71D8, 0x7352, 0x74A7, 0x75C9, 0x76AB,\n    0x773C, 0x7770, 0x773C, 0x76AB, 0x75C9, 0x74A7, 0x7352, 0x71D8,\n    0x7049, 0x6EB3, 0x6D24, 0x6BAB, 0x6A56, 0x6934, 0x6852, 0x67C0,\n    0x0000, 0x0000, 0xFFDC, 0xFF76, 0xFED6, 0xFE07, 0xFD13, 0xFC01,\n    0xFADD, 0xF9B0, 0xF882, 0xF75E, 0xF64D, 0xF558, 0xF48A, 0xF3EA,\n    0xF383, 0xF35F, 0xF396, 0xF42D, 0xF514, 0xF639, 0xF78A, 0xF8F6,\n    0xFA6A, 0xFBD6, 0xFD27, 0xFE4B, 0xFF32, 0xFFCA, 0x0000, 0x0000,\n    0xFFE0, 0xFF83, 0xFEF3, 0xFE38, 0xFD5B, 0xFC64, 0xFB5D, 0xFA4C,\n    0xF93C, 0xF834, 0xF73D, 0xF660, 0xF5A6, 0xF516, 0xF4B9, 0xF498,\n    0xF4C9, 0xF552, 0xF623, 0xF72B, 0xF85C, 0xF9A4, 0xFAF4, 0xFC3D,\n    0xFD6D, 0xFE76, 0xFF46, 0xFFCF, 0xF334, 0xF334, 0xF2B5, 0xF150,\n    0xEF24, 0xEC54, 0xE8FF, 0xE548, 0xE14E, 0xDD34, 0xD919, 0xD51F,\n    0xD168, 0xCE13, 0xCB43, 0xC917, 0xC7B2, 0xC733, 0xC7F1, 0xCA01,\n    0xCD26, 0xD122, 0xD5B9, 0xDAAB, 0xDFBC, 0xE4AF, 0xE945, 0xED41,\n    0xF066, 0xF276, 0x0000, 0x0000, 0x0012, 0x0045, 0x0098, 0x0104,\n    0x0188, 0x0220, 0x02C7, 0x037B, 0x0438, 0x04FA, 0x05BE, 0x0680,\n    0x073D, 0x07F1, 0x0899, 0x0930, 0x09B4, 0x0A21, 0x0A73, 0x0AA7,\n    0x0AB9, 0x0A43, 0x090C, 0x0754, 0x055C, 0x0364, 0x01AC, 0x0075,\n    0x0000, 0x0000, 0x000D, 0x0036, 0x0075, 0x00C9, 0x012F, 0x01A4,\n    0x0226, 0x02B1, 0x0343, 0x03D9, 0x0471, 0x0507, 0x0599, 0x0624,\n    0x06A5, 0x071B, 0x0781, 0x07D5, 0x0814, 0x083C, 0x084A, 0x07EF,\n    0x06FF, 0x05AB, 0x0425, 0x029F, 0x014B, 0x005B, 0xF334, 0xF334,\n    0xF2EA, 0xF218, 0xF0CB, 0xEF12, 0xECFB, 0xEA95, 0xE7EE, 0xE514,\n    0xE217, 0xDF04, 0xDBE9, 0xD8D6, 0xD5D8, 0xD2FF, 0xD058, 0xCDF1,\n    0xCBDB, 0xCA21, 0xC8D5, 0xC802, 0xC7B9, 0xC997, 0xCE84, 0xD57B,\n    0xDD76, 0xE572, 0xEC69, 0xF156, 0x13F6, 0x11A2, 0x0B88, 0x02FD,\n    0xF957, 0xEFE9, 0xE808, 0xE30A, 0xE243, 0xE62D, 0xEDB4, 0xF7D2,\n    0x0384, 0x0FC6, 0x1B94, 0x25EA, 0x2DC3, 0x321C, 0x3387, 0x336D,\n    0x320C, 0x2FA3, 0x2C71, 0x28B4, 0x24AB, 0x2096, 0x1CB2, 0x193E,\n    0x1679, 0x14A1, 0x0A2F, 0x0AC4, 0x0C65, 0x0EE6, 0x1219, 0x15D3,\n    0x19E6, 0x1E26, 0x2265, 0x2678, 0x2A32, 0x2D66, 0x2FE6, 0x3187,\n    0x321C, 0x31AA, 0x3065, 0x2E6D, 0x2BDF, 0x28DA, 0x257A, 0x21DF,\n    0x1E26, 0x1A6C, 0x16D1, 0x1372, 0x106C, 0x0DDE, 0x0BE6, 0x0AA2,\n    0xBD25, 0xBF32, 0xC498, 0xCC34, 0xD4E4, 0xDD85, 0xE4F7, 0xEA16,\n    0xED3F, 0xEF93, 0xF115, 0xF1CB, 0xF1B9, 0xF0E3, 0xEF4D, 0xED05,\n    0xEA27, 0xE6CD, 0xE311, 0xDF0D, 0xDADA, 0xD693, 0xD251, 0xCE2E,\n    0xCA44, 0xC6AE, 0xC384, 0xC0E2, 0xBEE0, 0xBD98, 0xDE3B, 0xDE3D,\n    0xDE56, 0xDEA4, 0xDF42, 0xE050, 0xE1EA, 0xE42D, 0xE7DA, 0xED16,\n    0xF318, 0xF916, 0xFE45, 0x01DA, 0x030C, 0x0268, 0x0112, 0xFF24,\n    0xFCB8, 0xF9E7, 0xF6CC, 0xF381, 0xF020, 0xECC3, 0xE985, 0xE67E,\n    0xE3CA, 0xE183, 0xDFC2, 0xDEA1, 0x433B, 0x40F9, 0x3B02, 0x328B,\n    0x28C9, 0x1EF2, 0x163B, 0x0FD9, 0x0B27, 0x06DB, 0x0332, 0x006D,\n    0xFEC9, 0xFE83, 0xFFDB, 0x0293, 0x062B, 0x0A7F, 0x0F68, 0x14C2,\n    0x1A68, 0x2035, 0x2602, 0x2BAC, 0x310D, 0x3601, 0x3A61, 0x3E08,\n    0x40D3, 0x429B, 0xEC72, 0xF18D, 0xF8E0, 0x0174, 0x0A54, 0x128A,\n    0x191E, 0x1D1C, 0x1D8E, 0x19D2, 0x1294, 0x08D1, 0xFD84, 0xF1A9,\n    0xE63A, 0xDC35, 0xD495, 0xD055, 0xCEA5, 0xCDF8, 0xCE36, 0xCF44,\n    0xD108, 0xD367, 0xD648, 0xD990, 0xDD26, 0xE0EE, 0xE4CF, 0xE8AE,\n    0xF430, 0xF3A4, 0xF21C, 0xEFC3, 0xECC1, 0xE942, 0xE56F, 0xE172,\n    0xDD75, 0xD9A2, 0xD622, 0xD321, 0xD0C8, 0xCF40, 0xCEB4, 0xCF20,\n    0xD050, 0xD22A, 0xD48F, 0xD766, 0xDA90, 0xDDF3, 0xE172, 0xE4F1,\n    0xE854, 0xEB7E, 0xEE54, 0xF0BA, 0xF293, 0xF3C4, 0x4545, 0x42A9,\n    0x3C16, 0x32E7, 0x2879, 0x1E28, 0x1550, 0x0F4D, 0x0BC0, 0x0952,\n    0x07F0, 0x0786, 0x07FE, 0x0946, 0x0B48, 0x0DFC, 0x1155, 0x1535,\n    0x1981, 0x1E1C, 0x22E9, 0x27CC, 0x2CA8, 0x3162, 0x35DC, 0x39F9,\n    0x3D9F, 0x40AF, 0x430E, 0x449E, 0x26FB, 0x26F8, 0x2691, 0x25C0,\n    0x247E, 0x22C5, 0x2090, 0x1DD8, 0x19CB, 0x142A, 0x0DC8, 0x0777,\n    0x020C, 0xFE5A, 0xFD34, 0xFDF2, 0xFF55, 0x0144, 0x03AE, 0x067B,\n    0x0995, 0x0CE9, 0x105F, 0x13E4, 0x1760, 0x1AC0, 0x1DED, 0x20D2,\n    0x2359, 0x256E, 0x456B, 0x42CA, 0x3BE4, 0x3226, 0x26FE, 0x1BD7,\n    0x121F, 0x0B42, 0x06AD, 0x02EC, 0x0017, 0xFE49, 0xFD98, 0xFE1F,\n    0xFFF6, 0x02EF, 0x06B8, 0x0B2D, 0x102C, 0x1593, 0x1B40, 0x2110,\n    0x26E0, 0x2C8F, 0x31FA, 0x36FF, 0x3B7C, 0x3F4E, 0x4252, 0x4468,\n    0x0000, 0x0000, 0xFFDC, 0xFF76, 0xFED6, 0xFE07, 0xFD13, 0xFC01,\n    0xFADD, 0xF9B0, 0xF882, 0xF75E, 0xF64D, 0xF558, 0xF48A, 0xF3EA,\n    0xF383, 0xF35F, 0xF396, 0xF42D, 0xF514, 0xF639, 0xF78A, 0xF8F6,\n    0xFA6A, 0xFBD6, 0xFD27, 0xFE4B, 0xFF32, 0xFFCA, 0x0000, 0x0000,\n    0xFFE0, 0xFF83, 0xFEF3, 0xFE38, 0xFD5B, 0xFC64, 0xFB5D, 0xFA4C,\n    0xF93C, 0xF834, 0xF73D, 0xF660, 0xF5A6, 0xF516, 0xF4B9, 0xF498,\n    0xF4C9, 0xF552, 0xF623, 0xF72B, 0xF85C, 0xF9A4, 0xFAF4, 0xFC3D,\n    0xFD6D, 0xFE76, 0xFF46, 0xFFCF, 0xF334, 0xF334, 0xF2B5, 0xF150,\n    0xEF24, 0xEC54, 0xE8FF, 0xE548, 0xE14E, 0xDD34, 0xD919, 0xD51F,\n    0xD168, 0xCE13, 0xCB43, 0xC917, 0xC7B2, 0xC733, 0xC7F1, 0xCA01,\n    0xCD26, 0xD122, 0xD5B9, 0xDAAB, 0xDFBC, 0xE4AF, 0xE945, 0xED41,\n    0xF066, 0xF276, 0x0000, 0x0000, 0x0012, 0x0045, 0x0098, 0x0104,\n    0x0188, 0x0220, 0x02C7, 0x037B, 0x0438, 0x04FA, 0x05BE, 0x0680,\n    0x073D, 0x07F1, 0x0899, 0x0930, 0x09B4, 0x0A21, 0x0A73, 0x0AA7,\n    0x0AB9, 0x0A43, 0x090C, 0x0754, 0x055C, 0x0364, 0x01AC, 0x0075,\n    0x0000, 0x0000, 0x000D, 0x0036, 0x0075, 0x00C9, 0x012F, 0x01A4,\n    0x0226, 0x02B1, 0x0343, 0x03D9, 0x0471, 0x0507, 0x0599, 0x0624,\n    0x06A5, 0x071B, 0x0781, 0x07D5, 0x0814, 0x083C, 0x084A, 0x07EF,\n    0x06FF, 0x05AB, 0x0425, 0x029F, 0x014B, 0x005B, 0xF334, 0xF334,\n    0xF2EA, 0xF218, 0xF0CB, 0xEF12, 0xECFB, 0xEA95, 0xE7EE, 0xE514,\n    0xE217, 0xDF04, 0xDBE9, 0xD8D6, 0xD5D8, 0xD2FF, 0xD058, 0xCDF1,\n    0xCBDB, 0xCA21, 0xC8D5, 0xC802, 0xC7B9, 0xC997, 0xCE84, 0xD57B,\n    0xDD76, 0xE572, 0xEC69, 0xF156, 0xEBD6, 0xC001, 0xC448, 0x0000,\n    0x0000, 0xFFDC, 0xFF76, 0xFED6, 0xFE07, 0xFD13, 0xFC01, 0xFADD,\n    0xF9B0, 0xF882, 0xF75E, 0xF64D, 0xF558, 0xF48A, 0xF3EA, 0xF383,\n    0xF35F, 0xF396, 0xF42D, 0xF514, 0xF639, 0xF78A, 0xF8F6, 0xFA6A,\n    0xFBD6, 0xFD27, 0xFE4B, 0xFF32, 0xFFCA, 0x0000, 0x0000, 0xFFE0,\n    0xFF83, 0xFEF3, 0xFE38, 0xFD5B, 0xFC64, 0xFB5D, 0xFA4C, 0xF93C,\n    0xF834, 0xF73D, 0xF660, 0xF5A6, 0xF516, 0xF4B9, 0xF498, 0xF4C9,\n    0xF552, 0xF623, 0xF72B, 0xF85C, 0xF9A4, 0xFAF4, 0xFC3D, 0xFD6D,\n    0xFE76, 0xFF46, 0xFFCF, 0xF334, 0xF334, 0xF2B5, 0xF150, 0xEF24,\n    0xEC54, 0xE8FF, 0xE548, 0xE14E, 0xDD34, 0xD919, 0xD51F, 0xD168,\n    0xCE13, 0xCB43, 0xC917, 0xC7B2, 0xC733, 0xC7F1, 0xCA01, 0xCD26,\n    0xD122, 0xD5B9, 0xDAAB, 0xDFBC, 0xE4AF, 0xE945, 0xED41, 0xF066,\n    0xF276, 0x0000, 0x0000, 0x0012, 0x0045, 0x0098, 0x0104, 0x0188,\n    0x0220, 0x02C7, 0x037B, 0x0438, 0x04FA, 0x05BE, 0x0680, 0x073D,\n    0x07F1, 0x0899, 0x0930, 0x09B4, 0x0A21, 0x0A73, 0x0AA7, 0x0AB9,\n    0x0A43, 0x090C, 0x0754, 0x055C, 0x0364, 0x01AC, 0x0075, 0x0000,\n    0x0000, 0x000D, 0x0036, 0x0075, 0x00C9, 0x012F, 0x01A4, 0x0226,\n    0x02B1, 0x0343, 0x03D9, 0x0471, 0x0507, 0x0599, 0x0624, 0x06A5,\n    0x071B, 0x0781, 0x07D5, 0x0814, 0x083C, 0x084A, 0x07EF, 0x06FF,\n    0x05AB, 0x0425, 0x029F, 0x014B, 0x005B, 0xF334, 0xF334, 0xF2EA,\n    0xF218, 0xF0CB, 0xEF12, 0xECFB, 0xEA95, 0xE7EE, 0xE514, 0xE217,\n    0xDF04, 0xDBE9, 0xD8D6, 0xD5D8, 0xD2FF, 0xD058, 0xCDF1, 0xCBDB,\n    0xCA21, 0xC8D5, 0xC802, 0xC7B9, 0xC997, 0xCE84, 0xD57B, 0xDD76,\n    0xE572, 0xEC69, 0xF156, 0x1555, 0x3FFF, 0xC001, 0x0000, 0x0000,\n    0xFFDC, 0xFF76, 0xFED6, 0xFE07, 0xFD13, 0xFC01, 0xFADD, 0xF9B0,\n    0xF882, 0xF75E, 0xF64D, 0xF558, 0xF48A, 0xF3EA, 0xF383, 0xF35F,\n    0xF396, 0xF42D, 0xF514, 0xF639, 0xF78A, 0xF8F6, 0xFA6A, 0xFBD6,\n    0xFD27, 0xFE4B, 0xFF32, 0xFFCA, 0x0000, 0x0000, 0xFFE0, 0xFF83,\n    0xFEF3, 0xFE38, 0xFD5B, 0xFC64, 0xFB5D, 0xFA4C, 0xF93C, 0xF834,\n    0xF73D, 0xF660, 0xF5A6, 0xF516, 0xF4B9, 0xF498, 0xF4C9, 0xF552,\n    0xF623, 0xF72B, 0xF85C, 0xF9A4, 0xFAF4, 0xFC3D, 0xFD6D, 0xFE76,\n    0xFF46, 0xFFCF, 0xF334, 0xF334, 0xF2B5, 0xF150, 0xEF24, 0xEC54,\n    0xE8FF, 0xE548, 0xE14E, 0xDD34, 0xD919, 0xD51F, 0xD168, 0xCE13,\n    0xCB43, 0xC917, 0xC7B2, 0xC733, 0xC7F1, 0xCA01, 0xCD26, 0xD122,\n    0xD5B9, 0xDAAB, 0xDFBC, 0xE4AF, 0xE945, 0xED41, 0xF066, 0xF276,\n    0x072A, 0x074A, 0x07A4, 0x082B, 0x08D5, 0x0996, 0x0A62, 0x0B2F,\n    0x0BF0, 0x0C99, 0x0D21, 0x0D7B, 0x0D9B, 0x0D8C, 0x0D63, 0x0D21,\n    0x0CCB, 0x0C64, 0x0BF0, 0x0B71, 0x0AEB, 0x0A62, 0x09D9, 0x0954,\n    0x08D5, 0x0861, 0x07FA, 0x07A4, 0x0762, 0x0738, 0xF3A7, 0xF3A6,\n    0xF3A3, 0xF3A0, 0xF39B, 0xF395, 0xF38F, 0xF38A, 0xF384, 0xF37F,\n    0xF37B, 0xF379, 0xF378, 0xF378, 0xF379, 0xF37B, 0xF37E, 0xF381,\n    0xF384, 0xF388, 0xF38B, 0xF38F, 0xF393, 0xF397, 0xF39B, 0xF39E,\n    0xF3A1, 0xF3A3, 0xF3A5, 0xF3A7, 0xAA21, 0xA8EE, 0xA59E, 0xA09D,\n    0x9A57, 0x9338, 0x8BAD, 0x8422, 0x7D01, 0x76BB, 0x71B9, 0x6E69,\n    0x6D37, 0x6DC2, 0x6F4D, 0x71B9, 0x74E6, 0x78B3, 0x7D01, 0x81B1,\n    0x869F, 0x8BAD, 0x90BB, 0x95A9, 0x9A57, 0x9EA4, 0xA271, 0xA59E,\n    0xA80A, 0xA996, 0x0000, 0x0000, 0x0012, 0x0045, 0x0098, 0x0104,\n    0x0188, 0x0220, 0x02C7, 0x037B, 0x0438, 0x04FA, 0x05BE, 0x0680,\n    0x073D, 0x07F1, 0x0899, 0x0930, 0x09B4, 0x0A21, 0x0A73, 0x0AA7,\n    0x0AB9, 0x0A43, 0x090C, 0x0754, 0x055C, 0x0364, 0x01AC, 0x0075,\n    0x0000, 0x0000, 0x000D, 0x0036, 0x0075, 0x00C9, 0x012F, 0x01A4,\n    0x0226, 0x02B1, 0x0343, 0x03D9, 0x0471, 0x0507, 0x0599, 0x0624,\n    0x06A5, 0x071B, 0x0781, 0x07D5, 0x0814, 0x083C, 0x084A, 0x07EF,\n    0x06FF, 0x05AB, 0x0425, 0x029F, 0x014B, 0x005B, 0xF334, 0xF334,\n    0xF2EA, 0xF218, 0xF0CB, 0xEF12, 0xECFB, 0xEA95, 0xE7EE, 0xE514,\n    0xE217, 0xDF04, 0xDBE9, 0xD8D6, 0xD5D8, 0xD2FF, 0xD058, 0xCDF1,\n    0xCBDB, 0xCA21, 0xC8D5, 0xC802, 0xC7B9, 0xC997, 0xCE84, 0xD57B,\n    0xDD76, 0xE572, 0xEC69, 0xF156, 0xF8D6, 0xF8CD, 0xF8B3, 0xF88B,\n    0xF857, 0xF819, 0xF7D4, 0xF78A, 0xF73D, 0xF6F1, 0xF6A7, 0xF662,\n    0xF624, 0xF5F0, 0xF5C8, 0xF5AE, 0xF5A5, 0xF5B0, 0xF5D2, 0xF605,\n    0xF647, 0xF693, 0xF6E6, 0xF73D, 0xF795, 0xF7E8, 0xF834, 0xF876,\n    0xF8A9, 0xF8CA, 0x0C59, 0x0C57, 0x0C53, 0x0C4B, 0x0C42, 0x0C36,\n    0x0C2A, 0x0C1C, 0x0C0E, 0x0C00, 0x0BF3, 0x0BE6, 0x0BDB, 0x0BD1,\n    0x0BCA, 0x0BC5, 0x0BC4, 0x0BC6, 0x0BCC, 0x0BD5, 0x0BE1, 0x0BEF,\n    0x0BFE, 0x0C0E, 0x0C1E, 0x0C2D, 0x0C3B, 0x0C47, 0x0C51, 0x0C57,\n    0xAA21, 0xA972, 0xA784, 0xA485, 0xA0A1, 0x9C07, 0x96E5, 0x9167,\n    0x8BBC, 0x8610, 0x8092, 0x7B6D, 0x76D3, 0x72F0, 0x6FF0, 0x6E02,\n    0x6D53, 0x6E36, 0x70B2, 0x7481, 0x7961, 0x7F0D, 0x8544, 0x8BBC,\n    0x9234, 0x9868, 0x9E14, 0xA2F3, 0xA6C3, 0xA93E, 0xC001, 0xC001,\n    0x0A2F, 0x0A5E, 0x0AE0, 0x0BAB, 0x0CAF, 0x0DE1, 0x0F34, 0x109A,\n    0x1207, 0x136D, 0x14BF, 0x15F1, 0x16F6, 0x17C0, 0x1843, 0x1872,\n    0x1843, 0x17C0, 0x16F6, 0x15F1, 0x14BF, 0x136D, 0x1207, 0x109A,\n    0x0F34, 0x0DE1, 0x0CAF, 0x0BAB, 0x0AE0, 0x0A5E, 0x678C, 0x67C0,\n    0x6852, 0x6934, 0x6A56, 0x6BAB, 0x6D24, 0x6EB3, 0x7049, 0x71D8,\n    0x7352, 0x74A7, 0x75C9, 0x76AB, 0x773C, 0x7770, 0x773C, 0x76AB,\n    0x75C9, 0x74A7, 0x7352, 0x71D8, 0x7049, 0x6EB3, 0x6D24, 0x6BAB,\n    0x6A56, 0x6934, 0x6852, 0x67C0,\n};\n\n// 0x05005D00\nstatic const u16 klepto_seg5_animindex_05005D00[] = {\n    0x0001, 0x0000, 0x001E, 0x0001, 0x001E, 0x001F, 0x0001, 0x0000, 0x0001, 0x003D, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x056E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0550,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x005C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x003E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x054F,\n    0x001E, 0x0440, 0x001E, 0x045E, 0x001E, 0x047C,\n    0x001E, 0x03E6, 0x001E, 0x0404, 0x001E, 0x0422,\n    0x001E, 0x032F, 0x001E, 0x034D, 0x001E, 0x036B,\n    0x001E, 0x0278, 0x001E, 0x0296, 0x001E, 0x02B4,\n    0x001E, 0x0098, 0x001E, 0x00B6, 0x001E, 0x00D4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x054E,\n    0x001E, 0x04F4, 0x001E, 0x0512, 0x001E, 0x0530,\n    0x001E, 0x049A, 0x001E, 0x04B8, 0x001E, 0x04D6,\n    0x001E, 0x0389, 0x001E, 0x03A7, 0x001E, 0x03C5,\n    0x001E, 0x02D2, 0x001E, 0x02F0, 0x001E, 0x030E,\n    0x001E, 0x00F2, 0x001E, 0x0110, 0x001E, 0x012E,\n    0x0001, 0x03E3, 0x0001, 0x03E4, 0x0001, 0x03E5,\n    0x001E, 0x0188, 0x001E, 0x01A6, 0x001E, 0x01C4,\n    0x0001, 0x0000, 0x001E, 0x016A, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x001E, 0x014C, 0x0001, 0x0000,\n    0x0001, 0x032C, 0x0001, 0x032D, 0x0001, 0x032E,\n    0x001E, 0x021E, 0x001E, 0x023C, 0x001E, 0x025A,\n    0x0001, 0x0000, 0x001E, 0x0200, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x001E, 0x01E2, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x007A,\n};\n\n// 0x05005E44\nstatic const struct Animation klepto_seg5_anim_05005E44 = {\n    0,\n    0,\n    0,\n    0,\n    0x1E,\n    ANIMINDEX_NUMPARTS(klepto_seg5_animindex_05005D00),\n    klepto_seg5_animvalue_050051E8,\n    klepto_seg5_animindex_05005D00,\n    0,\n};\n"
  },
  {
    "path": "actors/klepto/anims/anim_05007574.inc.c",
    "content": "// 0x05005E5C\nstatic const s16 klepto_seg5_animvalue_05005E5C[] = {\n    0x0000, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052,\n    0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052,\n    0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0053,\n    0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053, 0x0053,\n    0x0053, 0x0053, 0x0053, 0x0056, 0x005C, 0x0062, 0x0064, 0x0062,\n    0x005B, 0x0053, 0x004C, 0x0049, 0x004B, 0x0051, 0x0058, 0x0061,\n    0x0068, 0x006E, 0x0070, 0x006F, 0x006D, 0x006A, 0x0067, 0x0063,\n    0x005F, 0x005C, 0x005A, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C,\n    0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C,\n    0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C,\n    0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C,\n    0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x000B, 0x0009, 0x0006,\n    0x0006, 0x0007, 0x000A, 0x000D, 0x0010, 0x0011, 0x0013, 0x0017,\n    0x001D, 0x0024, 0x002A, 0x002E, 0x002F, 0x002E, 0x002C, 0x0028,\n    0x0023, 0x001F, 0x001A, 0x0017, 0x0014, 0x3FFF, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x1DC9, 0x319D, 0x106B, 0xEF3B, 0xCE09, 0xEF3B, 0x106B, 0x319D,\n    0x26A4, 0x1BAC, 0x10B3, 0x05BA, 0xFAC3, 0xF866, 0xF70C, 0xF68F,\n    0xF6C8, 0xF790, 0xF8C0, 0xFA32, 0xFBC0, 0xFD42, 0xFE91, 0xFF89,\n    0x2973, 0x1EEB, 0x1428, 0x0B9C, 0x07BD, 0x07BD, 0x07BD, 0x07BD,\n    0x07BD, 0x07BD, 0x07BD, 0x07BD, 0x07BD, 0x07BD, 0x07BD, 0x07BD,\n    0x07BD, 0x07BD, 0x07BD, 0x07BD, 0x07BD, 0x07BD, 0x07BD, 0x07BD,\n    0x07BD, 0x07BD, 0x07BD, 0x07BD, 0x07BD, 0x07BD, 0x07BD, 0x1449,\n    0x2B33, 0x3BC8, 0x3E5B, 0x3A99, 0x36DC, 0x3521, 0x3342, 0x3165,\n    0x2FAE, 0x2E40, 0x2D42, 0x2D6C, 0x2EC0, 0x3049, 0x3237, 0x345A,\n    0x352E, 0x34A2, 0x33B7, 0x328A, 0x3136, 0x2FD6, 0x2E85, 0x2D60,\n    0x2C80, 0x2C01, 0xF84A, 0xF760, 0xF70A, 0xF70A, 0xF70A, 0xF70A,\n    0xF70A, 0xF70A, 0xF70A, 0xF70A, 0xF70A, 0xF70A, 0xF70A, 0xF70A,\n    0xF70A, 0xF70A, 0xF70A, 0xF70A, 0xF70A, 0xF70A, 0xF70A, 0xF70A,\n    0xF70A, 0xF70A, 0xF70A, 0xF70A, 0xF70A, 0xF70A, 0xF70A, 0xF70A,\n    0xF70A, 0xFBEE, 0x04D3, 0x0AFF, 0x0B84, 0x0C08, 0x0C8C, 0x0D10,\n    0x0D95, 0x0E19, 0x0D19, 0x0B43, 0x08B5, 0x058D, 0x013F, 0xFBCF,\n    0xF62A, 0xEF61, 0xEA69, 0xE8D6, 0xE7A6, 0xE6C0, 0xE60C, 0xE572,\n    0xE4D9, 0xE42A, 0xE34B, 0xE226, 0x400D, 0x3C20, 0x3A4B, 0x3A4B,\n    0x3A4B, 0x3A4B, 0x3A4B, 0x3A4B, 0x3A4B, 0x3A4B, 0x3A4B, 0x3A4B,\n    0x3A4B, 0x3A4B, 0x3A4B, 0x3A4B, 0x3A4B, 0x3A4B, 0x3A4B, 0x3A4B,\n    0x3A4B, 0x3A4B, 0x3A4B, 0x3A4B, 0x3A4B, 0x3A4B, 0x3A4B, 0x3A4B,\n    0x3A4B, 0x3A4B, 0x3A4B, 0x3AF2, 0x3BE9, 0x3D26, 0x3EA3, 0x4058,\n    0x423C, 0x4448, 0x4675, 0x48BB, 0x4B11, 0x4D71, 0x5038, 0x53A0,\n    0x576A, 0x5B57, 0x5F2A, 0x62A3, 0x6583, 0x678C, 0x68B2, 0x692E,\n    0x6928, 0x68CA, 0x6840, 0x67B1, 0x6747, 0x672D, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0002, 0x0008, 0x0012, 0x0020, 0x0030,\n    0x0043, 0x0058, 0x006D, 0x0084, 0x009C, 0x00B3, 0x00CA, 0x00E0,\n    0x00F4, 0x0107, 0x0117, 0x0125, 0x012F, 0x0136, 0x0138, 0x0135,\n    0x012E, 0x0121, 0x010D, 0x00F4, 0x00D3, 0x00AA, 0x007A, 0x0041,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0002, 0x0007, 0x0011,\n    0x001D, 0x002C, 0x003C, 0x004F, 0x0063, 0x0078, 0x008D, 0x00A2,\n    0x00B6, 0x00CA, 0x00DD, 0x00EE, 0x00FC, 0x0109, 0x0112, 0x0118,\n    0x011A, 0x0117, 0x0111, 0x0105, 0x00F3, 0x00DC, 0x00BE, 0x009A,\n    0x006E, 0x003B, 0xD680, 0xD05B, 0xCBD0, 0xC8B0, 0xC6CB, 0xC6CB,\n    0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB,\n    0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB,\n    0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB, 0xC3BF, 0xC0B4, 0xBDA8, 0xBF15,\n    0xC0A9, 0xC25F, 0xC435, 0xC627, 0xC832, 0xCA52, 0xCC84, 0xCEC4,\n    0xD10F, 0xD362, 0xD5B9, 0xD810, 0xDA65, 0xDCB3, 0xDEF7, 0xE12F,\n    0xE356, 0xE568, 0xE764, 0xE944, 0xEB06, 0xECA6, 0xEE21, 0xEF73,\n    0xF099, 0xF190, 0xF253, 0xF2E1, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFF9, 0xFFF0, 0xFFE5, 0xFFD7,\n    0xFFC8, 0xFFB7, 0xFFA5, 0xFF93, 0xFF80, 0xFF6E, 0xFF5C, 0xFF4B,\n    0xFF3C, 0xFF2F, 0xFF25, 0xFF1D, 0xFF19, 0xFF18, 0xFF1C, 0xFF24,\n    0xFF31, 0xFF43, 0xFF5C, 0xFF7B, 0xFFA0, 0xFFCC, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFB, 0xFFF4,\n    0xFFEB, 0xFFE1, 0xFFD5, 0xFFC8, 0xFFBA, 0xFFAB, 0xFF9D, 0xFF8F,\n    0xFF81, 0xFF74, 0xFF69, 0xFF5F, 0xFF57, 0xFF51, 0xFF4D, 0xFF4D,\n    0xFF50, 0xFF56, 0xFF60, 0xFF6E, 0xFF81, 0xFF99, 0xFFB6, 0xFFD8,\n    0xD59C, 0xD10D, 0xCD50, 0xCAA2, 0xC93D, 0xC93D, 0xC93D, 0xC93D,\n    0xC93D, 0xC93D, 0xC93D, 0xC93D, 0xC93D, 0xC93D, 0xC93D, 0xC93D,\n    0xC93D, 0xC93D, 0xC93D, 0xC93D, 0xC93D, 0xC93D, 0xC93D, 0xC93D,\n    0xC93D, 0xC93D, 0xC7A2, 0xC47F, 0xC112, 0xBE9B, 0xBE5B, 0xBFBB,\n    0xC14B, 0xC308, 0xC4ED, 0xC6F6, 0xC91D, 0xCB5F, 0xCDB6, 0xD01F,\n    0xD294, 0xD512, 0xD794, 0xDA14, 0xDC90, 0xDF01, 0xE164, 0xE3B4,\n    0xE5ED, 0xE809, 0xEA06, 0xEBDD, 0xED8A, 0xEF09, 0xF056, 0xF16C,\n    0xF245, 0xF2DF, 0x05A1, 0xFF15, 0xF9BF, 0xF5FE, 0xF430, 0xF430,\n    0xF430, 0xF430, 0xF430, 0xF430, 0xF430, 0xF430, 0xF430, 0xF430,\n    0xF430, 0xF430, 0xF430, 0xF430, 0xF430, 0xF430, 0xF430, 0xF430,\n    0xF430, 0xF430, 0xF430, 0xF430, 0xF430, 0xF430, 0xF430, 0xF430,\n    0xF430, 0xF430, 0xF430, 0xF430, 0xF430, 0x040B, 0x1F1A, 0x2B9B,\n    0x1682, 0xF2DE, 0xE018, 0xF34F, 0x1765, 0x2C71, 0x2ED7, 0x3053,\n    0x30FA, 0x30DE, 0x3015, 0x2EB1, 0x2CC8, 0x2A6C, 0x27B2, 0x24AD,\n    0x2173, 0x1E15, 0x1AAA, 0x1743, 0x04BA, 0xFA7A, 0xF498, 0xF498,\n    0xF498, 0xF498, 0xF498, 0xF498, 0xF498, 0xF498, 0xF498, 0xF498,\n    0xF498, 0xF498, 0xF498, 0xF498, 0xF498, 0xF498, 0xF498, 0xF498,\n    0xF498, 0xF498, 0xF498, 0xF498, 0xF498, 0xF498, 0xF498, 0xF498,\n    0xF498, 0xF498, 0xF498, 0xF498, 0xF498, 0xF498, 0x0048, 0x1452,\n    0x1DD2, 0x13A1, 0x0012, 0xED74, 0xE60E, 0xF7CB, 0x1762, 0x295B,\n    0x2AB5, 0x2ADA, 0x29F4, 0x282E, 0x25B3, 0x22AC, 0x1F44, 0x1BA5,\n    0x17FA, 0x146C, 0x1127, 0x0E53, 0x0C1D, 0x0AAD, 0xEB90, 0xEB8F,\n    0xEB8E, 0xEB8F, 0xEB90, 0xEB93, 0xEB96, 0xEB9A, 0xEB9E, 0xEBA2,\n    0xEBA6, 0xEBAA, 0xEBAD, 0xEBB0, 0xEBB2, 0xEBB3, 0xEBB3, 0xEBB1,\n    0xEBAE, 0xEBA9, 0xEBA2, 0xEB9A, 0xEB8E, 0xEB59, 0xEAF3, 0xEA91,\n    0xEA65, 0xEB28, 0xECBA, 0xEE09, 0xEE01, 0xEB8E, 0xE28A, 0xD4CE,\n    0xCA4C, 0xC632, 0xC552, 0xC60B, 0xC853, 0xCC36, 0xD034, 0xD506,\n    0xD9F3, 0xDB58, 0xD5BA, 0xCC94, 0xC6AE, 0xC4A8, 0xC2A9, 0xC0BF,\n    0xBEF9, 0xBD67, 0xBC19, 0xBB1D, 0xBA84, 0xBA5C, 0xBAB4, 0xBB9D,\n    0x00B9, 0xFB47, 0xF89A, 0xF89A, 0xF89A, 0xF89A, 0xF89A, 0xF89A,\n    0xF89A, 0xF89A, 0xF89A, 0xF89A, 0xF89A, 0xF89A, 0xF89A, 0xF89A,\n    0xF89A, 0xF89A, 0xF89A, 0xF89A, 0xF9C0, 0xFBE3, 0xFDF3, 0xFEE0,\n    0xFE53, 0xFCF8, 0xFB43, 0xF9A8, 0xF89A, 0xF8BD, 0xF9A4, 0xFA2F,\n    0xF93C, 0xF586, 0xEFFA, 0xEAC1, 0xE806, 0xE95E, 0xED4D, 0xF15C,\n    0xF315, 0xF2B0, 0xF20F, 0xF13A, 0xF036, 0xEF0C, 0xEDC1, 0xEC5D,\n    0xEAE7, 0xE965, 0xE7DE, 0xE65A, 0xE4DE, 0xE373, 0xE21F, 0xE0E8,\n    0xDFD6, 0xDEEF, 0x0E56, 0x0F52, 0x0FBC, 0x0FBC, 0x0FBC, 0x0FBC,\n    0x0FBC, 0x0FBC, 0x0FBC, 0x0FBC, 0x0FBC, 0x0FBC, 0x0FBC, 0x0FBC,\n    0x0FBC, 0x0FBC, 0x0FBC, 0x0FBC, 0x0FBC, 0x0FBC, 0x0FBC, 0x0FBC,\n    0x0FBC, 0x1285, 0x17D4, 0x1D1D, 0x1FD1, 0x1FDA, 0x1ECF, 0x1CA5,\n    0x1951, 0x14C8, 0x0ADD, 0xFDAD, 0xF6A1, 0xFC6F, 0x0861, 0x0FBE,\n    0x0C10, 0x03CC, 0xFF8F, 0x0304, 0x0A81, 0x1396, 0x1FD6, 0x2DAF,\n    0x3601, 0x3916, 0x3BF3, 0x3E8F, 0x40DD, 0x42D2, 0x4464, 0x4588,\n    0x4631, 0x4656, 0x45EC, 0x44E6, 0xF892, 0xFEEE, 0x04BA, 0x090E,\n    0x0B00, 0x0B00, 0x0B00, 0x0B00, 0x0B00, 0x0B00, 0x0B00, 0x0B00,\n    0x0B00, 0x0B00, 0x0B00, 0x0B00, 0x0B00, 0x0B00, 0x0B00, 0x0B00,\n    0x0B00, 0x0B00, 0x0B00, 0x0B00, 0x0B00, 0x0B00, 0x0B00, 0x0B00,\n    0x0B00, 0x0B00, 0x0B00, 0x0B00, 0x0B00, 0x0B00, 0x0B00, 0xFC03,\n    0xE262, 0xD653, 0xE990, 0x0A5F, 0x1BCC, 0x0A89, 0xE9E4, 0xD6D1,\n    0xD49C, 0xD334, 0xD28A, 0xD28B, 0xD329, 0xD451, 0xD5F4, 0xD801,\n    0xDA66, 0xDD14, 0xDFFA, 0xE307, 0xE62B, 0xE954, 0xFBE6, 0x068C,\n    0x0CA1, 0x0C93, 0x0C86, 0x0C78, 0x0C6B, 0x0C5E, 0x0C50, 0x0C43,\n    0x0C35, 0x0C28, 0x0C1A, 0x0C0D, 0x0BFF, 0x0BF2, 0x0BE4, 0x0BD7,\n    0x0BC9, 0x0BBC, 0x0BAF, 0x0BA1, 0x0B94, 0x0B86, 0x0B79, 0x0B6B,\n    0x0B5E, 0x0B50, 0x0B43, 0x0B35, 0x0B28, 0x0B1B, 0x0B0D, 0x0B00,\n    0xFF83, 0xEBDE, 0xE29D, 0xF118, 0x09F6, 0x17B8, 0x0E82, 0xFA31,\n    0xE8D1, 0xDE64, 0xD6E9, 0xD46F, 0xD593, 0xD779, 0xD9FD, 0xDCF7,\n    0xE042, 0xE3B8, 0xE733, 0xEA8D, 0xEDA0, 0xF046, 0xF259, 0xF3B4,\n    0x0F6C, 0x0F8D, 0x0F9C, 0x0F94, 0x0F8B, 0x0F82, 0x0F7A, 0x0F71,\n    0x0F68, 0x0F60, 0x0F57, 0x0F4E, 0x0F46, 0x0F3D, 0x0F34, 0x0F2C,\n    0x0F23, 0x0F1A, 0x0F11, 0x0F09, 0x0F15, 0x0F3E, 0x0F8B, 0x101C,\n    0x10D9, 0x1179, 0x11B0, 0x106F, 0x0F04, 0x0DE1, 0x0D25, 0x0F96,\n    0x17BE, 0x2312, 0x2CB9, 0x320C, 0x338E, 0x3256, 0x2FF7, 0x2D01,\n    0x2A05, 0x25B5, 0x2103, 0x1FE5, 0x25EF, 0x2F8D, 0x35EE, 0x387B,\n    0x3B17, 0x3DAD, 0x4025, 0x4269, 0x4463, 0x45FC, 0x471F, 0x47B4,\n    0x47A6, 0x46DD, 0x005B, 0x0629, 0x092C, 0x092D, 0x092D, 0x092D,\n    0x092E, 0x092E, 0x092E, 0x092F, 0x092F, 0x0930, 0x0930, 0x0930,\n    0x0931, 0x0931, 0x0931, 0x0932, 0x0932, 0x0932, 0x07CE, 0x0576,\n    0x042D, 0x049A, 0x05C3, 0x073D, 0x089C, 0x0A39, 0x0B3F, 0x0A6E,\n    0x0907, 0x089B, 0x09CB, 0x0BF7, 0x0ECB, 0x1432, 0x17E0, 0x1608,\n    0x1265, 0x0EA4, 0x0C6E, 0x0D00, 0x0F55, 0x11B5, 0x13AC, 0x15AD,\n    0x175F, 0x18D8, 0x1A67, 0x1C03, 0x1DA3, 0x1F3E, 0x20CA, 0x2240,\n    0x2396, 0x24C3, 0x25BE, 0x267F, 0x0E49, 0x0E6C, 0x0E6A, 0x0E70,\n    0x0E76, 0x0E7C, 0x0E83, 0x0E89, 0x0E8F, 0x0E95, 0x0E9C, 0x0EA2,\n    0x0EA8, 0x0EAE, 0x0EB4, 0x0EBB, 0x0EC1, 0x0EC7, 0x0ECD, 0x0ED3,\n    0x0E5B, 0x0DE7, 0x0EF8, 0x1255, 0x16F5, 0x1BA1, 0x1F22, 0x1FCD,\n    0x1E15, 0x1C04, 0x192F, 0x13DB, 0x08E4, 0xFB6F, 0xF336, 0xFAC4,\n    0x04B3, 0x0437, 0x0116, 0xFDFD, 0xFD92, 0x016C, 0x087A, 0x1169,\n    0x1E5D, 0x2D32, 0x362C, 0x398F, 0x3CBE, 0x3FAD, 0x424C, 0x448D,\n    0x4662, 0x47BD, 0x4890, 0x48CC, 0x4864, 0x4748, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0002, 0x0008, 0x0012, 0x0020, 0x0030,\n    0x0043, 0x0058, 0x006D, 0x0084, 0x009C, 0x00B3, 0x00CA, 0x00E0,\n    0x00F4, 0x0107, 0x0117, 0x0125, 0x012F, 0x0136, 0x0138, 0x0135,\n    0x012E, 0x0121, 0x010D, 0x00F4, 0x00D3, 0x00AA, 0x007A, 0x0041,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0002, 0x0007, 0x0011,\n    0x001D, 0x002C, 0x003C, 0x004F, 0x0063, 0x0078, 0x008D, 0x00A2,\n    0x00B6, 0x00CA, 0x00DD, 0x00EE, 0x00FC, 0x0109, 0x0112, 0x0118,\n    0x011A, 0x0117, 0x0111, 0x0105, 0x00F3, 0x00DC, 0x00BE, 0x009A,\n    0x006E, 0x003B, 0xD680, 0xD05B, 0xCBD0, 0xC8B0, 0xC6CB, 0xC6CB,\n    0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB,\n    0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB,\n    0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB, 0xC3BF, 0xC0B4, 0xBDA8, 0xBF15,\n    0xC0A9, 0xC25F, 0xC435, 0xC627, 0xC832, 0xCA52, 0xCC84, 0xCEC4,\n    0xD10F, 0xD362, 0xD5B9, 0xD810, 0xDA65, 0xDCB3, 0xDEF7, 0xE12F,\n    0xE356, 0xE568, 0xE764, 0xE944, 0xEB06, 0xECA6, 0xEE21, 0xEF73,\n    0xF099, 0xF190, 0xF253, 0xF2E1, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFF9, 0xFFF0, 0xFFE5, 0xFFD7,\n    0xFFC8, 0xFFB7, 0xFFA5, 0xFF93, 0xFF80, 0xFF6E, 0xFF5C, 0xFF4B,\n    0xFF3C, 0xFF2F, 0xFF25, 0xFF1D, 0xFF19, 0xFF18, 0xFF1C, 0xFF24,\n    0xFF31, 0xFF43, 0xFF5C, 0xFF7B, 0xFFA0, 0xFFCC, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFB, 0xFFF4,\n    0xFFEB, 0xFFE1, 0xFFD5, 0xFFC8, 0xFFBA, 0xFFAB, 0xFF9D, 0xFF8F,\n    0xFF81, 0xFF74, 0xFF69, 0xFF5F, 0xFF57, 0xFF51, 0xFF4D, 0xFF4D,\n    0xFF50, 0xFF56, 0xFF60, 0xFF6E, 0xFF81, 0xFF99, 0xFFB6, 0xFFD8,\n    0xD59C, 0xD10D, 0xCD50, 0xCAA2, 0xC93D, 0xC93D, 0xC93D, 0xC93D,\n    0xC93D, 0xC93D, 0xC93D, 0xC93D, 0xC93D, 0xC93D, 0xC93D, 0xC93D,\n    0xC93D, 0xC93D, 0xC93D, 0xC93D, 0xC93D, 0xC93D, 0xC93D, 0xC93D,\n    0xC93D, 0xC93D, 0xC7A2, 0xC47F, 0xC112, 0xBE9B, 0xBE5B, 0xBFBB,\n    0xC14B, 0xC308, 0xC4ED, 0xC6F6, 0xC91D, 0xCB5F, 0xCDB6, 0xD01F,\n    0xD294, 0xD512, 0xD794, 0xDA14, 0xDC90, 0xDF01, 0xE164, 0xE3B4,\n    0xE5ED, 0xE809, 0xEA06, 0xEBDD, 0xED8A, 0xEF09, 0xF056, 0xF16C,\n    0xF245, 0xF2DF, 0xEBD6, 0xC001, 0xC448, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0002, 0x0008, 0x0012, 0x0020, 0x0030, 0x0043,\n    0x0058, 0x006D, 0x0084, 0x009C, 0x00B3, 0x00CA, 0x00E0, 0x00F4,\n    0x0107, 0x0117, 0x0125, 0x012F, 0x0136, 0x0138, 0x0135, 0x012E,\n    0x0121, 0x010D, 0x00F4, 0x00D3, 0x00AA, 0x007A, 0x0041, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0002, 0x0007, 0x0011, 0x001D,\n    0x002C, 0x003C, 0x004F, 0x0063, 0x0078, 0x008D, 0x00A2, 0x00B6,\n    0x00CA, 0x00DD, 0x00EE, 0x00FC, 0x0109, 0x0112, 0x0118, 0x011A,\n    0x0117, 0x0111, 0x0105, 0x00F3, 0x00DC, 0x00BE, 0x009A, 0x006E,\n    0x003B, 0xD680, 0xD05B, 0xCBD0, 0xC8B0, 0xC6CB, 0xC6CB, 0xC6CB,\n    0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB,\n    0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB,\n    0xC6CB, 0xC6CB, 0xC6CB, 0xC3BF, 0xC0B4, 0xBDA8, 0xBF15, 0xC0A9,\n    0xC25F, 0xC435, 0xC627, 0xC832, 0xCA52, 0xCC84, 0xCEC4, 0xD10F,\n    0xD362, 0xD5B9, 0xD810, 0xDA65, 0xDCB3, 0xDEF7, 0xE12F, 0xE356,\n    0xE568, 0xE764, 0xE944, 0xEB06, 0xECA6, 0xEE21, 0xEF73, 0xF099,\n    0xF190, 0xF253, 0xF2E1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xFFFF, 0xFFF9, 0xFFF0, 0xFFE5, 0xFFD7, 0xFFC8,\n    0xFFB7, 0xFFA5, 0xFF93, 0xFF80, 0xFF6E, 0xFF5C, 0xFF4B, 0xFF3C,\n    0xFF2F, 0xFF25, 0xFF1D, 0xFF19, 0xFF18, 0xFF1C, 0xFF24, 0xFF31,\n    0xFF43, 0xFF5C, 0xFF7B, 0xFFA0, 0xFFCC, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFB, 0xFFF4, 0xFFEB,\n    0xFFE1, 0xFFD5, 0xFFC8, 0xFFBA, 0xFFAB, 0xFF9D, 0xFF8F, 0xFF81,\n    0xFF74, 0xFF69, 0xFF5F, 0xFF57, 0xFF51, 0xFF4D, 0xFF4D, 0xFF50,\n    0xFF56, 0xFF60, 0xFF6E, 0xFF81, 0xFF99, 0xFFB6, 0xFFD8, 0xD59C,\n    0xD10D, 0xCD50, 0xCAA2, 0xC93D, 0xC93D, 0xC93D, 0xC93D, 0xC93D,\n    0xC93D, 0xC93D, 0xC93D, 0xC93D, 0xC93D, 0xC93D, 0xC93D, 0xC93D,\n    0xC93D, 0xC93D, 0xC93D, 0xC93D, 0xC93D, 0xC93D, 0xC93D, 0xC93D,\n    0xC93D, 0xC7A2, 0xC47F, 0xC112, 0xBE9B, 0xBE5B, 0xBFBB, 0xC14B,\n    0xC308, 0xC4ED, 0xC6F6, 0xC91D, 0xCB5F, 0xCDB6, 0xD01F, 0xD294,\n    0xD512, 0xD794, 0xDA14, 0xDC90, 0xDF01, 0xE164, 0xE3B4, 0xE5ED,\n    0xE809, 0xEA06, 0xEBDD, 0xED8A, 0xEF09, 0xF056, 0xF16C, 0xF245,\n    0xF2DF, 0x1555, 0x3FFF, 0xC001, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0002, 0x0008, 0x0012, 0x0020, 0x0030, 0x0043, 0x0058,\n    0x006D, 0x0084, 0x009C, 0x00B3, 0x00CA, 0x00E0, 0x00F4, 0x0107,\n    0x0117, 0x0125, 0x012F, 0x0136, 0x0138, 0x0135, 0x012E, 0x0121,\n    0x010D, 0x00F4, 0x00D3, 0x00AA, 0x007A, 0x0041, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0002, 0x0007, 0x0011, 0x001D, 0x002C,\n    0x003C, 0x004F, 0x0063, 0x0078, 0x008D, 0x00A2, 0x00B6, 0x00CA,\n    0x00DD, 0x00EE, 0x00FC, 0x0109, 0x0112, 0x0118, 0x011A, 0x0117,\n    0x0111, 0x0105, 0x00F3, 0x00DC, 0x00BE, 0x009A, 0x006E, 0x003B,\n    0xD680, 0xD05B, 0xCBD0, 0xC8B0, 0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB,\n    0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB,\n    0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB, 0xC6CB,\n    0xC6CB, 0xC6CB, 0xC3BF, 0xC0B4, 0xBDA8, 0xBF15, 0xC0A9, 0xC25F,\n    0xC435, 0xC627, 0xC832, 0xCA52, 0xCC84, 0xCEC4, 0xD10F, 0xD362,\n    0xD5B9, 0xD810, 0xDA65, 0xDCB3, 0xDEF7, 0xE12F, 0xE356, 0xE568,\n    0xE764, 0xE944, 0xEB06, 0xECA6, 0xEE21, 0xEF73, 0xF099, 0xF190,\n    0xF253, 0xF2E1, 0xD079, 0xC9E5, 0xC856, 0xC856, 0xC856, 0xC856,\n    0xC856, 0xC856, 0xC856, 0xC856, 0xC856, 0xC856, 0xC856, 0xC856,\n    0xC856, 0xC856, 0xC856, 0xC856, 0xC856, 0xC856, 0xC856, 0xC856,\n    0xC856, 0xC856, 0xDE26, 0x0338, 0x16D9, 0x128F, 0x077B, 0xF84F,\n    0xE7B8, 0xD867, 0xCD0C, 0xC856, 0xC81C, 0xC860, 0xC91A, 0xCA42,\n    0xCBCE, 0xCDB6, 0xCFF0, 0xD273, 0xD537, 0xD832, 0xDB5C, 0xDEAC,\n    0xE218, 0xE598, 0xE922, 0xECAF, 0xF034, 0xF3A9, 0xF706, 0xFA40,\n    0xFD4F, 0x0029, 0x02C7, 0x0520, 0xE11F, 0xDCA0, 0xDA33, 0xDA33,\n    0xDA33, 0xDA33, 0xDA33, 0xDA33, 0xDA33, 0xDA33, 0xDA33, 0xDA33,\n    0xDA33, 0xDA33, 0xDA33, 0xDA33, 0xDA33, 0xDA33, 0xDA33, 0xDA33,\n    0xDA33, 0xDA33, 0xDA33, 0xDA33, 0xD48E, 0xCAF6, 0xC5E2, 0xC6D5,\n    0xC954, 0xCCD4, 0xD0CD, 0xD4B6, 0xD806, 0xDA33, 0xDB9C, 0xDCFB,\n    0xDE51, 0xDF9D, 0xE0E0, 0xE21A, 0xE34B, 0xE474, 0xE594, 0xE6AB,\n    0xE7BA, 0xE8C2, 0xE9C2, 0xEABA, 0xEBAB, 0xEC94, 0xED77, 0xEE53,\n    0xEF28, 0xEFF7, 0xF0BF, 0xF182, 0xF23E, 0xF2F5, 0xAE45, 0xBBAF,\n    0xC1C3, 0xC1C3, 0xC1C3, 0xC1C3, 0xC1C3, 0xC1C3, 0xC1C3, 0xC1C3,\n    0xC1C3, 0xC1C3, 0xC1C3, 0xC1C3, 0xC1C3, 0xC1C3, 0xC1C3, 0xC1C3,\n    0xC1C3, 0xC1C3, 0xC1C3, 0xC1C3, 0xC1C3, 0xC1C3, 0xAB72, 0x8583,\n    0x716A, 0x75A6, 0x80A1, 0x8FBE, 0xA068, 0xB007, 0xBC03, 0xC1C3,\n    0xC35F, 0xC4AB, 0xC5AA, 0xC65F, 0xC6CD, 0xC6F9, 0xC6E5, 0xC695,\n    0xC60C, 0xC54E, 0xC45E, 0xC33F, 0xC1F5, 0xC083, 0xBEED, 0xBD35,\n    0xBB60, 0xB971, 0xB76B, 0xB551, 0xB327, 0xB0F0, 0xAEB0, 0xAC6A,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF,\n    0xFFF9, 0xFFF0, 0xFFE5, 0xFFD7, 0xFFC8, 0xFFB7, 0xFFA5, 0xFF93,\n    0xFF80, 0xFF6E, 0xFF5C, 0xFF4B, 0xFF3C, 0xFF2F, 0xFF25, 0xFF1D,\n    0xFF19, 0xFF18, 0xFF1C, 0xFF24, 0xFF31, 0xFF43, 0xFF5C, 0xFF7B,\n    0xFFA0, 0xFFCC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xFFFF, 0xFFFB, 0xFFF4, 0xFFEB, 0xFFE1, 0xFFD5, 0xFFC8,\n    0xFFBA, 0xFFAB, 0xFF9D, 0xFF8F, 0xFF81, 0xFF74, 0xFF69, 0xFF5F,\n    0xFF57, 0xFF51, 0xFF4D, 0xFF4D, 0xFF50, 0xFF56, 0xFF60, 0xFF6E,\n    0xFF81, 0xFF99, 0xFFB6, 0xFFD8, 0xD59C, 0xD10D, 0xCD50, 0xCAA2,\n    0xC93D, 0xC93D, 0xC93D, 0xC93D, 0xC93D, 0xC93D, 0xC93D, 0xC93D,\n    0xC93D, 0xC93D, 0xC93D, 0xC93D, 0xC93D, 0xC93D, 0xC93D, 0xC93D,\n    0xC93D, 0xC93D, 0xC93D, 0xC93D, 0xC93D, 0xC93D, 0xC7A2, 0xC47F,\n    0xC112, 0xBE9B, 0xBE5B, 0xBFBB, 0xC14B, 0xC308, 0xC4ED, 0xC6F6,\n    0xC91D, 0xCB5F, 0xCDB6, 0xD01F, 0xD294, 0xD512, 0xD794, 0xDA14,\n    0xDC90, 0xDF01, 0xE164, 0xE3B4, 0xE5ED, 0xE809, 0xEA06, 0xEBDD,\n    0xED8A, 0xEF09, 0xF056, 0xF16C, 0xF245, 0xF2DF, 0x2834, 0x30CE,\n    0x350B, 0x350B, 0x350B, 0x350B, 0x350B, 0x350B, 0x350B, 0x350B,\n    0x350B, 0x350B, 0x350B, 0x350B, 0x350B, 0x350B, 0x350B, 0x350B,\n    0x350B, 0x350B, 0x350B, 0x350B, 0x350B, 0x350B, 0x275C, 0x0F0D,\n    0xFE67, 0xFD7E, 0x043D, 0x0CA9, 0x15C2, 0x20FB, 0x2C0B, 0x34A8,\n    0x3889, 0x38A0, 0x3789, 0x3576, 0x3298, 0x2F20, 0x2B41, 0x272B,\n    0x2310, 0x1F22, 0x1B93, 0x1893, 0x15DD, 0x1310, 0x1036, 0x0D58,\n    0x0A80, 0x07B6, 0x0504, 0x0273, 0x000C, 0xFDDA, 0xFBE5, 0xFA36,\n    0x1F22, 0x24B0, 0x2729, 0x2729, 0x2729, 0x2729, 0x2729, 0x2729,\n    0x2729, 0x2729, 0x2729, 0x2729, 0x2729, 0x2729, 0x2729, 0x2729,\n    0x2729, 0x2729, 0x2729, 0x2729, 0x2729, 0x2729, 0x2729, 0x2729,\n    0x2B9C, 0x33A7, 0x39A8, 0x3B8D, 0x3B69, 0x39D1, 0x3727, 0x33AF,\n    0x2FD6, 0x2C09, 0x28B7, 0x25B0, 0x2286, 0x1F4B, 0x1C0E, 0x18E2,\n    0x15D6, 0x12FB, 0x1062, 0x0E1C, 0x0C3A, 0x0ACB, 0x09D0, 0x0931,\n    0x08E3, 0x08DA, 0x0907, 0x0960, 0x09D7, 0x0A5F, 0x0AED, 0x0B73,\n    0x0BE5, 0x0C36, 0xA9BD, 0xB904, 0xC04A, 0xC04A, 0xC04A, 0xC04A,\n    0xC04A, 0xC04A, 0xC04A, 0xC04A, 0xC04A, 0xC04A, 0xC04A, 0xC04A,\n    0xC04A, 0xC04A, 0xC04A, 0xC04A, 0xC04A, 0xC04A, 0xC04A, 0xC04A,\n    0xC04A, 0xC04A, 0xB232, 0x991E, 0x87CB, 0x8670, 0x8CD5, 0x9517,\n    0x9E1B, 0xA940, 0xB456, 0xBD2C, 0xC193, 0xC25D, 0xC1F7, 0xC098,\n    0xBE76, 0xBBCA, 0xB8C9, 0xB5AB, 0xB2A7, 0xAFF4, 0xADC9, 0xAC5E,\n    0xABA6, 0xAB64, 0xAB7C, 0xABD7, 0xAC59, 0xACEB, 0xAD71, 0xADD3,\n    0xADF8, 0xADC5, 0xAD21, 0xABF3, 0xC001, 0xC001, 0xFDEF, 0xFC50,\n    0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85,\n    0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85,\n    0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85,\n    0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB7E, 0xFB6B, 0xFB4D,\n    0xFB28, 0xFAFF, 0xFAD2, 0xFAA6, 0xFA7C, 0xFA57, 0xFA3A, 0xFA27,\n    0xFA20, 0xFA27, 0xFA41, 0xFA6E, 0xFAB1, 0xFB0E, 0xFB85, 0xFC40,\n    0xFD59, 0xFEBB, 0x0053, 0x020F, 0x03DB, 0x05A5, 0x0758, 0x08E2,\n    0x400D, 0x3C20, 0x3A4B, 0x3A4B, 0x3A4B, 0x3A4B, 0x3A4B, 0x3A4B,\n    0x3A4B, 0x3A4B, 0x3A4B, 0x3A4B, 0x3A4B, 0x3A4B, 0x3A4B, 0x3A4B,\n    0x3A4B, 0x3A4B, 0x3A4B, 0x3A4B, 0x3A4B, 0x3A4B, 0x3A4B, 0x3A4B,\n    0x3A4B, 0x3A4B, 0x3A4B, 0x3A4B, 0x3A4B, 0x3A4B, 0x3A4B, 0x3AF2,\n    0x3BE9, 0x3D26, 0x3EA3, 0x4058, 0x423C, 0x4448, 0x4675, 0x48BB,\n    0x4B11, 0x4D71, 0x5038, 0x53A0, 0x576A, 0x5B57, 0x5F2A, 0x62A3,\n    0x6583, 0x678C, 0x68B2, 0x692E, 0x6928, 0x68CA, 0x6840, 0x67B1,\n    0x6747, 0x672D,\n};\n\n// 0x05007430\nstatic const u16 klepto_seg5_animindex_05007430[] = {\n    0x0001, 0x0000, 0x003A, 0x0001, 0x003A, 0x003B, 0x0001, 0x0000, 0x0001, 0x0075, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x003A, 0x0AB0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x003A, 0x0A76,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x003A, 0x00EA,\n    0x0001, 0x0000, 0x003A, 0x0076, 0x003A, 0x00B0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0A75,\n    0x003A, 0x086A, 0x003A, 0x08A4, 0x003A, 0x08DE,\n    0x003A, 0x07BC, 0x003A, 0x07F6, 0x003A, 0x0830,\n    0x003A, 0x065D, 0x003A, 0x0697, 0x003A, 0x06D1,\n    0x003A, 0x04FE, 0x003A, 0x0538, 0x003A, 0x0572,\n    0x003A, 0x015E, 0x003A, 0x0198, 0x003A, 0x01D2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0A74,\n    0x003A, 0x09C6, 0x003A, 0x0A00, 0x003A, 0x0A3A,\n    0x003A, 0x0918, 0x003A, 0x0952, 0x003A, 0x098C,\n    0x003A, 0x070B, 0x003A, 0x0745, 0x003A, 0x077F,\n    0x003A, 0x05AC, 0x003A, 0x05E6, 0x003A, 0x0620,\n    0x003A, 0x020C, 0x003A, 0x0246, 0x003A, 0x0280,\n    0x0001, 0x07B9, 0x0001, 0x07BA, 0x0001, 0x07BB,\n    0x003A, 0x032E, 0x003A, 0x0368, 0x003A, 0x03A2,\n    0x0001, 0x0000, 0x003A, 0x02F4, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x003A, 0x02BA, 0x0001, 0x0000,\n    0x0001, 0x065A, 0x0001, 0x065B, 0x0001, 0x065C,\n    0x003A, 0x0450, 0x003A, 0x048A, 0x003A, 0x04C4,\n    0x0001, 0x0000, 0x003A, 0x0416, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x003A, 0x03DC, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x003A, 0x0124,\n};\n\n// 0x05007574\nstatic const struct Animation klepto_seg5_anim_05007574 = {\n    1,\n    0,\n    1,\n    1,\n    0x3A,\n    ANIMINDEX_NUMPARTS(klepto_seg5_animindex_05007430),\n    klepto_seg5_animvalue_05005E5C,\n    klepto_seg5_animindex_05007430,\n    0,\n};\n"
  },
  {
    "path": "actors/klepto/anims/anim_050079B0.inc.c",
    "content": "// 0x0500758C\nstatic const s16 klepto_seg5_animvalue_0500758C[] = {\n    0x0000, 0x0059, 0x0059, 0x0058, 0x0058, 0x0057, 0x0058, 0x0058,\n    0x0013, 0x0012, 0x0012, 0x0011, 0x0010, 0x0011, 0x0011, 0x3FFF,\n    0x000D, 0xFFF0, 0xFFE3, 0xFFE3, 0xFFEA, 0xFFF5, 0xFFFE, 0xFFFB,\n    0x000C, 0x0013, 0x0013, 0x000E, 0x0007, 0x0001, 0x0AC9, 0x0E8C,\n    0x13EE, 0x1A29, 0x2075, 0x260C, 0x2A27, 0xF8CC, 0xF61B, 0xF247,\n    0xEDD8, 0xE955, 0xE546, 0xE232, 0xFFD1, 0x0025, 0x004A, 0x004C,\n    0x0038, 0x001C, 0x0005, 0x79D2, 0x7778, 0x743F, 0x70A0, 0x6D12,\n    0x6A10, 0x6810, 0xFFFF, 0xFFFC, 0xFFF9, 0xFFF6, 0xFFF4, 0xFFF4,\n    0xFFF8, 0xFFFF, 0xFFFC, 0xFFF9, 0xFFF6, 0xFFF4, 0xFFF4, 0xFFF8,\n    0xD29B, 0xD62B, 0xDB80, 0xE1C3, 0xE81C, 0xEDB1, 0xF1AC, 0x0000,\n    0xFFFE, 0xFFFB, 0xFFF9, 0xFFF8, 0xFFF8, 0xFFFB, 0x0001, 0x0006,\n    0x000B, 0x0010, 0x0012, 0x0012, 0x000C, 0xD300, 0xD731, 0xDCBB,\n    0xE2E3, 0xE8F0, 0xEE29, 0xF1D2, 0x05EB, 0x2038, 0x307C, 0x2FA7,\n    0x28DB, 0x1FA0, 0x177C, 0x1592, 0x1410, 0x11CA, 0x0F30, 0x0CB0,\n    0x0ABB, 0x09C0, 0xE861, 0xE2B7, 0xDB38, 0xD2E1, 0xCAB4, 0xC3B0,\n    0xBED6, 0xE949, 0xE7E4, 0xE5F7, 0xE3C9, 0xE1A5, 0xDFD0, 0xDE95,\n    0x155F, 0x1B5A, 0x2347, 0x2C19, 0x34C1, 0x3C32, 0x415F, 0xFB0D,\n    0xE104, 0xD0E0, 0xD193, 0xD825, 0xE11F, 0xE90B, 0xEB23, 0xEBF9,\n    0xED66, 0xEF26, 0xF0F7, 0xF296, 0xF3BF, 0x12EE, 0x1975, 0x221B,\n    0x2BBD, 0x3537, 0x3D63, 0x431F, 0x14C8, 0x16E6, 0x19EE, 0x1D6C,\n    0x20ED, 0x23FC, 0x2628, 0x11DA, 0x1888, 0x2163, 0x2B40, 0x34F4,\n    0x3D53, 0x4334, 0xFFFF, 0xFFFC, 0xFFF9, 0xFFF6, 0xFFF4, 0xFFF4,\n    0xFFF8, 0xFFFF, 0xFFFC, 0xFFF9, 0xFFF6, 0xFFF4, 0xFFF4, 0xFFF8,\n    0xD29B, 0xD62B, 0xDB80, 0xE1C3, 0xE81C, 0xEDB1, 0xF1AC, 0x0000,\n    0xFFFE, 0xFFFB, 0xFFF9, 0xFFF8, 0xFFF8, 0xFFFB, 0x0001, 0x0006,\n    0x000B, 0x0010, 0x0012, 0x0012, 0x000C, 0xD300, 0xD731, 0xDCBB,\n    0xE2E3, 0xE8F0, 0xEE29, 0xF1D2, 0xEBD6, 0xC001, 0xC448, 0xFFFF,\n    0xFFFC, 0xFFF9, 0xFFF6, 0xFFF4, 0xFFF4, 0xFFF8, 0xFFFF, 0xFFFC,\n    0xFFF9, 0xFFF6, 0xFFF4, 0xFFF4, 0xFFF8, 0xD29B, 0xD62B, 0xDB80,\n    0xE1C3, 0xE81C, 0xEDB1, 0xF1AC, 0x0000, 0xFFFE, 0xFFFB, 0xFFF9,\n    0xFFF8, 0xFFF8, 0xFFFB, 0x0001, 0x0006, 0x000B, 0x0010, 0x0012,\n    0x0012, 0x000C, 0xD300, 0xD731, 0xDCBB, 0xE2E3, 0xE8F0, 0xEE29,\n    0xF1D2, 0x1555, 0x3FFF, 0xC001, 0xFFFF, 0xFFFC, 0xFFF9, 0xFFF6,\n    0xFFF4, 0xFFF4, 0xFFF8, 0xFFFF, 0xFFFC, 0xFFF9, 0xFFF6, 0xFFF4,\n    0xFFF4, 0xFFF8, 0xD29B, 0xD62B, 0xDB80, 0xE1C3, 0xE81C, 0xEDB1,\n    0xF1AC, 0xF18C, 0xF456, 0xF809, 0xFC29, 0x0037, 0x03BA, 0x0634,\n    0xF27C, 0xF2A3, 0xF2D6, 0xF310, 0xF348, 0xF379, 0xF39B, 0x7416,\n    0x7A5D, 0x835F, 0x8DBE, 0x9826, 0xA13E, 0xA7AF, 0x0000, 0xFFFE,\n    0xFFFB, 0xFFF9, 0xFFF8, 0xFFF8, 0xFFFB, 0x0001, 0x0006, 0x000B,\n    0x0010, 0x0012, 0x0012, 0x000C, 0xD300, 0xD731, 0xDCBB, 0xE2E3,\n    0xE8F0, 0xEE29, 0xF1D2, 0x0DCF, 0x0B23, 0x0799, 0x03A4, 0xFFBB,\n    0xFC52, 0xF9DF, 0x0EF7, 0x0E95, 0x0E13, 0x0D85, 0x0CFF, 0x0C93,\n    0x0C56, 0x752B, 0x7B31, 0x83F2, 0x8E15, 0x984A, 0xA140, 0xA7A3,\n    0xC001, 0xC001, 0x0AB1, 0x0A7D, 0x0A35, 0x09EB, 0x09B3, 0x099F,\n    0x09C2, 0xFFD1, 0x0025, 0x004A, 0x004C, 0x0038, 0x001C, 0x0005,\n    0x79D2, 0x7778, 0x743F, 0x70A0, 0x6D12, 0x6A10, 0x6810, 0x0000,\n};\n\n// 0x0500786C\nstatic const u16 klepto_seg5_animindex_0500786C[] = {\n    0x0001, 0x0000, 0x0007, 0x0001, 0x0007, 0x0008, 0x0001, 0x0000, 0x0001, 0x000F, 0x0001, 0x0000,\n    0x0007, 0x0161, 0x0001, 0x0000, 0x0007, 0x0168,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0007, 0x015A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0007, 0x0025,\n    0x0007, 0x0010, 0x0007, 0x0017, 0x0007, 0x001E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0159,\n    0x0007, 0x0119, 0x0007, 0x0120, 0x0007, 0x0127,\n    0x0007, 0x0104, 0x0007, 0x010B, 0x0007, 0x0112,\n    0x0007, 0x00D7, 0x0007, 0x00DE, 0x0007, 0x00E5,\n    0x0007, 0x00AA, 0x0007, 0x00B1, 0x0007, 0x00B8,\n    0x0007, 0x003A, 0x0007, 0x0041, 0x0007, 0x0048,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0158,\n    0x0007, 0x0143, 0x0007, 0x014A, 0x0007, 0x0151,\n    0x0007, 0x012E, 0x0007, 0x0135, 0x0007, 0x013C,\n    0x0007, 0x00EC, 0x0007, 0x00F3, 0x0007, 0x00FA,\n    0x0007, 0x00BF, 0x0007, 0x00C6, 0x0007, 0x00CD,\n    0x0007, 0x004F, 0x0007, 0x0056, 0x0007, 0x005D,\n    0x0001, 0x0101, 0x0001, 0x0102, 0x0001, 0x0103,\n    0x0007, 0x0072, 0x0007, 0x0079, 0x0007, 0x0080,\n    0x0001, 0x0000, 0x0007, 0x006B, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0007, 0x0064, 0x0001, 0x0000,\n    0x0001, 0x00D4, 0x0001, 0x00D5, 0x0001, 0x00D6,\n    0x0007, 0x0095, 0x0007, 0x009C, 0x0007, 0x00A3,\n    0x0001, 0x0000, 0x0007, 0x008E, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0007, 0x0087, 0x0001, 0x0000,\n    0x0007, 0x002C, 0x0001, 0x0000, 0x0007, 0x0033,\n};\n\n// 0x050079B0\nstatic const struct Animation klepto_seg5_anim_050079B0 = {\n    0,\n    0,\n    0,\n    0,\n    0x07,\n    ANIMINDEX_NUMPARTS(klepto_seg5_animindex_0500786C),\n    klepto_seg5_animvalue_0500758C,\n    klepto_seg5_animindex_0500786C,\n    0,\n};\n"
  },
  {
    "path": "actors/klepto/anims/anim_05007E34.inc.c",
    "content": "// 0x050079C8\nstatic const s16 klepto_seg5_animvalue_050079C8[] = {\n    0x0000, 0x0059, 0x0013, 0x3FFF, 0x0000, 0x0002, 0x0008, 0x000F,\n    0x0015, 0x0019, 0x0018, 0x0010, 0x0000, 0x0000, 0xFFFE, 0xFFFB,\n    0xFFF9, 0xFFF8, 0xFFF8, 0xFFFB, 0x2C00, 0x2A36, 0x2624, 0x2090,\n    0x1A42, 0x1401, 0x0E94, 0x0AC4, 0xE0A1, 0xE226, 0xE52F, 0xE935,\n    0xEDB1, 0xF21F, 0xF5F8, 0xF8B5, 0x0000, 0xFFF3, 0xFFCD, 0xFF9F,\n    0xFF77, 0xFF65, 0xFF79, 0xFFC0, 0x678C, 0x686E, 0x6A84, 0x6D6C,\n    0x70C5, 0x742D, 0x7742, 0x79A1, 0x0000, 0x0075, 0x00AD, 0x00B4,\n    0x0099, 0x006C, 0x0039, 0x0010, 0x0000, 0x006A, 0x009C, 0x00A2,\n    0x008B, 0x0061, 0x0034, 0x000F, 0xF334, 0xF22C, 0xEEAD, 0xE97A,\n    0xE359, 0xDD0E, 0xD75D, 0xD30D, 0x0000, 0xFF7D, 0xFF3F, 0xFF37,\n    0xFF55, 0xFF88, 0xFFC0, 0xFFEE, 0x0000, 0xFF9B, 0xFF6B, 0xFF65,\n    0xFF7C, 0xFFA3, 0xFFCF, 0xFFF2, 0xF334, 0xF228, 0xEE63, 0xE8CE,\n    0xE253, 0xDBDB, 0xD650, 0xD29D, 0x13F6, 0x10BC, 0x0C95, 0x07FC,\n    0x0371, 0xFF6F, 0xFC73, 0xFAFA, 0x0A2F, 0x09AF, 0x0A68, 0x0C00,\n    0x0E1C, 0x1061, 0x1274, 0x13FA, 0xBD25, 0xBEE0, 0xC3BF, 0xCAC4,\n    0xD2EE, 0xDB41, 0xE2BC, 0xE862, 0xDE3B, 0xDDDF, 0xDEAF, 0xE056,\n    0xE281, 0xE4DC, 0xE716, 0xE8D9, 0x433B, 0x41D9, 0x3CE4, 0x357A,\n    0x2CB7, 0x23B7, 0x1B95, 0x1570, 0xEC72, 0xEFA5, 0xF3D3, 0xF87C,\n    0xFD24, 0x0148, 0x046D, 0x0612, 0xF430, 0xF4D8, 0xF48F, 0xF38E,\n    0xF20E, 0xF04B, 0xEE7D, 0xECDF, 0x4545, 0x433E, 0x3D91, 0x3566,\n    0x2BE6, 0x2238, 0x1984, 0x12F2, 0x26FB, 0x26D9, 0x24F0, 0x21D0,\n    0x1E0D, 0x1A37, 0x16E1, 0x149D, 0x456B, 0x43AA, 0x3E00, 0x35A8,\n    0x2BD9, 0x21CF, 0x18C1, 0x11EA, 0x0000, 0x0075, 0x00AD, 0x00B4,\n    0x0099, 0x006C, 0x0039, 0x0010, 0x0000, 0x006A, 0x009C, 0x00A2,\n    0x008B, 0x0061, 0x0034, 0x000F, 0xF334, 0xF22C, 0xEEAD, 0xE97A,\n    0xE359, 0xDD0E, 0xD75D, 0xD30D, 0x0000, 0xFF7D, 0xFF3F, 0xFF37,\n    0xFF55, 0xFF88, 0xFFC0, 0xFFEE, 0x0000, 0xFF9B, 0xFF6B, 0xFF65,\n    0xFF7C, 0xFFA3, 0xFFCF, 0xFFF2, 0xF334, 0xF228, 0xEE63, 0xE8CE,\n    0xE253, 0xDBDB, 0xD650, 0xD29D, 0xEBD6, 0xC001, 0xC448, 0x0000,\n    0x0075, 0x00AD, 0x00B4, 0x0099, 0x006C, 0x0039, 0x0010, 0x0000,\n    0x006A, 0x009C, 0x00A2, 0x008B, 0x0061, 0x0034, 0x000F, 0xF334,\n    0xF22C, 0xEEAD, 0xE97A, 0xE359, 0xDD0E, 0xD75D, 0xD30D, 0x0000,\n    0xFF7D, 0xFF3F, 0xFF37, 0xFF55, 0xFF88, 0xFFC0, 0xFFEE, 0x0000,\n    0xFF9B, 0xFF6B, 0xFF65, 0xFF7C, 0xFFA3, 0xFFCF, 0xFFF2, 0xF334,\n    0xF228, 0xEE63, 0xE8CE, 0xE253, 0xDBDB, 0xD650, 0xD29D, 0x1555,\n    0x3FFF, 0xC001, 0x0000, 0x0075, 0x00AD, 0x00B4, 0x0099, 0x006C,\n    0x0039, 0x0010, 0x0000, 0x006A, 0x009C, 0x00A2, 0x008B, 0x0061,\n    0x0034, 0x000F, 0xF334, 0xF22C, 0xEEAD, 0xE97A, 0xE359, 0xDD0E,\n    0xD75D, 0xD30D, 0x072A, 0x0640, 0x03CB, 0x0048, 0xFC37, 0xF813,\n    0xF45B, 0xF18D, 0xF3A7, 0xF392, 0xF36C, 0xF33B, 0xF305, 0xF2CF,\n    0xF29F, 0xF27B, 0xAA21, 0xA7BA, 0xA122, 0x97C6, 0x8D17, 0x8282,\n    0x7975, 0x7363, 0x0000, 0xFF7D, 0xFF3F, 0xFF37, 0xFF55, 0xFF88,\n    0xFFC0, 0xFFEE, 0x0000, 0xFF9B, 0xFF6B, 0xFF65, 0xFF7C, 0xFFA3,\n    0xFFCF, 0xFFF2, 0xF334, 0xF228, 0xEE63, 0xE8CE, 0xE253, 0xDBDB,\n    0xD650, 0xD29D, 0xF8D6, 0xFAA1, 0xFD6F, 0x00E3, 0x04A1, 0x084B,\n    0x0B82, 0x0DEA, 0x0C59, 0x0C94, 0x0CEF, 0x0D5F, 0x0DD7, 0x0E4C,\n    0x0EB3, 0x0F00, 0xAA21, 0xA7FE, 0xA1F0, 0x993F, 0x8F2F, 0x8507,\n    0x7C0A, 0x7583, 0xC001, 0xC001, 0x0A2F, 0x09C3, 0x09A4, 0x09BC,\n    0x09F8, 0x0A45, 0x0A8E, 0x0ABF, 0x0000, 0xFFF3, 0xFFCD, 0xFF9F,\n    0xFF77, 0xFF65, 0xFF79, 0xFFC0, 0x678C, 0x686E, 0x6A84, 0x6D6C,\n    0x70C5, 0x742D, 0x7742, 0x79A1,\n};\n\n// 0x05007CF0\nstatic const u16 klepto_seg5_animindex_05007CF0[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0000, 0x0001, 0x0003, 0x0001, 0x0000,\n    0x0008, 0x0184, 0x0001, 0x0000, 0x0008, 0x018C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x017C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x001C,\n    0x0008, 0x0004, 0x0008, 0x000C, 0x0008, 0x0014,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x017B,\n    0x0008, 0x0132, 0x0008, 0x013A, 0x0008, 0x0142,\n    0x0008, 0x011A, 0x0008, 0x0122, 0x0008, 0x012A,\n    0x0008, 0x00E7, 0x0008, 0x00EF, 0x0008, 0x00F7,\n    0x0008, 0x00B4, 0x0008, 0x00BC, 0x0008, 0x00C4,\n    0x0008, 0x0034, 0x0008, 0x003C, 0x0008, 0x0044,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x017A,\n    0x0008, 0x0162, 0x0008, 0x016A, 0x0008, 0x0172,\n    0x0008, 0x014A, 0x0008, 0x0152, 0x0008, 0x015A,\n    0x0008, 0x00FF, 0x0008, 0x0107, 0x0008, 0x010F,\n    0x0008, 0x00CC, 0x0008, 0x00D4, 0x0008, 0x00DC,\n    0x0008, 0x004C, 0x0008, 0x0054, 0x0008, 0x005C,\n    0x0001, 0x0117, 0x0001, 0x0118, 0x0001, 0x0119,\n    0x0008, 0x0074, 0x0008, 0x007C, 0x0008, 0x0084,\n    0x0001, 0x0000, 0x0008, 0x006C, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0008, 0x0064, 0x0001, 0x0000,\n    0x0001, 0x00E4, 0x0001, 0x00E5, 0x0001, 0x00E6,\n    0x0008, 0x009C, 0x0008, 0x00A4, 0x0008, 0x00AC,\n    0x0001, 0x0000, 0x0008, 0x0094, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0008, 0x008C, 0x0001, 0x0000,\n    0x0008, 0x0024, 0x0001, 0x0000, 0x0008, 0x002C,\n};\n\n// 0x05007E34\nstatic const struct Animation klepto_seg5_anim_05007E34 = {\n    0,\n    0,\n    0,\n    0,\n    0x08,\n    ANIMINDEX_NUMPARTS(klepto_seg5_animindex_05007CF0),\n    klepto_seg5_animvalue_050079C8,\n    klepto_seg5_animindex_05007CF0,\n    0,\n};\n"
  },
  {
    "path": "actors/klepto/anims/anim_050086C0.inc.c",
    "content": "// 0x05007E4C\nstatic const s16 klepto_seg5_animvalue_05007E4C[] = {\n    0x0000, 0x0059, 0x0013, 0x3FFF, 0x0000, 0xFFB4, 0xFF5B, 0xFF11,\n    0xFED1, 0xFE8D, 0xFE4C, 0xFE18, 0xFDF9, 0xFDF7, 0xFE10, 0xFE38,\n    0xFE6D, 0xFEAC, 0xFEF0, 0xFF38, 0xFF7F, 0xFFC3, 0x0000, 0x003E,\n    0x0084, 0x00CE, 0x0118, 0x015D, 0x019A, 0x01CB, 0x01EB, 0x01F7,\n    0x01EC, 0x01CD, 0x019E, 0x0162, 0x011E, 0x00D5, 0x008A, 0x0042,\n    0x0000, 0x001B, 0x0033, 0x0050, 0x007A, 0x00AE, 0x00E2, 0x0110,\n    0x012F, 0x0138, 0x012C, 0x0116, 0x00F7, 0x00D1, 0x00A7, 0x007B,\n    0x004F, 0x0025, 0x0000, 0xFFDA, 0xFFAF, 0xFF81, 0xFF54, 0xFF28,\n    0xFF02, 0xFEE4, 0xFED0, 0xFEC9, 0xFED0, 0xFEE5, 0xFF04, 0xFF2A,\n    0xFF56, 0xFF84, 0xFFB2, 0xFFDC, 0x0958, 0x094A, 0x0945, 0x094C,\n    0x095F, 0x0980, 0x09B1, 0x09F8, 0x0A55, 0x0AC0, 0x0B2F, 0x0B9A,\n    0x0BFA, 0x0C45, 0x0C78, 0x0C96, 0x0CA3, 0x0CA3, 0x0C9A, 0x0C52,\n    0x0BED, 0x0BA6, 0x0B60, 0x0B22, 0x0AF1, 0x0AC8, 0x0A9E, 0x0A75,\n    0x0A4D, 0x0A26, 0x0A01, 0x09DE, 0x09BD, 0x099E, 0x0983, 0x096B,\n    0xF9D1, 0xF9D4, 0xF9DC, 0xF9E8, 0xF9F9, 0xFA0C, 0xFA22, 0xFA3A,\n    0xFA54, 0xFA6E, 0xFA88, 0xFAA1, 0xFAB9, 0xFACF, 0xFAE3, 0xFAF3,\n    0xFAFF, 0xFB07, 0xFB0A, 0xFB07, 0xFAFF, 0xFAF3, 0xFAE3, 0xFACF,\n    0xFAB9, 0xFAA1, 0xFA88, 0xFA6E, 0xFA54, 0xFA3A, 0xFA22, 0xFA0C,\n    0xF9F9, 0xF9E8, 0xF9DC, 0xF9D4, 0x004B, 0x010F, 0x01CE, 0x0282,\n    0x0328, 0x03BA, 0x0433, 0x0490, 0x04CB, 0x04E0, 0x04CA, 0x048C,\n    0x042C, 0x03AE, 0x0316, 0x026B, 0x01B1, 0x00ED, 0x0024, 0xFF5C,\n    0xFE97, 0xFDDD, 0xFD32, 0xFC9B, 0xFC1C, 0xFBBC, 0xFB7F, 0xFB69,\n    0xFB7E, 0xFBB9, 0xFC16, 0xFC90, 0xFD23, 0xFDC9, 0xFE7E, 0xFF3E,\n    0x7AEA, 0x7B01, 0x7B18, 0x7B2A, 0x7B37, 0x7B3C, 0x7B37, 0x7B2A,\n    0x7B18, 0x7B01, 0x7AEA, 0x7AD4, 0x7AC1, 0x7AB4, 0x7AAF, 0x7AB4,\n    0x7AC1, 0x7AD4, 0x7AEA, 0x7B01, 0x7B18, 0x7B2A, 0x7B37, 0x7B3C,\n    0x7B37, 0x7B2A, 0x7B18, 0x7B01, 0x7AEA, 0x7AD4, 0x7AC1, 0x7AB4,\n    0x7AAF, 0x7AB4, 0x7AC1, 0x7AD4, 0xD0E0, 0xD017, 0xCF7D, 0xCF3F,\n    0xCF7D, 0xD017, 0xD0E0, 0xD1A9, 0xD244, 0xD281, 0xD244, 0xD1A9,\n    0xD0E0, 0xD017, 0xCF7D, 0xCF3F, 0xCF7D, 0xD017, 0xD0E0, 0xD1A9,\n    0xD244, 0xD281, 0xD244, 0xD1A9, 0xD0E0, 0xD017, 0xCF7D, 0xCF3F,\n    0xCF7D, 0xD017, 0xD0E0, 0xD1A9, 0xD244, 0xD281, 0xD244, 0xD1A9,\n    0xD1A9, 0xD244, 0xD281, 0xD244, 0xD1A9, 0xD0E0, 0xD017, 0xCF7D,\n    0xCF3F, 0xCF7D, 0xD017, 0xD0E0, 0xD1A9, 0xD244, 0xD281, 0xD244,\n    0xD1A9, 0xD0E0, 0xD017, 0xCF7D, 0xCF3F, 0xCF7D, 0xD017, 0xD0E0,\n    0xD1A9, 0xD244, 0xD281, 0xD244, 0xD1A9, 0xD0E0, 0xD017, 0xCF7D,\n    0xCF3F, 0xCF7D, 0xD017, 0xD0E0, 0xFB81, 0xFC7A, 0xFB81, 0xF95D,\n    0xF739, 0xF640, 0xF739, 0xF95D, 0xFB81, 0xFC7A, 0xFB81, 0xF95D,\n    0xF739, 0xF640, 0xF739, 0xF95D, 0xFB81, 0xFC7A, 0xFB81, 0xF95D,\n    0xF739, 0xF640, 0xF739, 0xF95D, 0xFB81, 0xFC7A, 0xFB81, 0xF95D,\n    0xF739, 0xF640, 0xF739, 0xF95D, 0xFB81, 0xFC7A, 0xFB81, 0xF95D,\n    0x149A, 0x14D6, 0x155B, 0x15E0, 0x161D, 0x15E0, 0x155B, 0x14D6,\n    0x149A, 0x14D6, 0x155B, 0x15E0, 0x161D, 0x15E0, 0x155B, 0x14D6,\n    0x149A, 0x14D6, 0x155B, 0x15E0, 0x161D, 0x15E0, 0x155B, 0x14D6,\n    0x149A, 0x14D6, 0x155B, 0x15E0, 0x161D, 0x15E0, 0x155B, 0x14D6,\n    0x149A, 0x14D6, 0x155B, 0x15E0, 0xEB33, 0xE9D3, 0xE9E5, 0xEA13,\n    0xEA56, 0xEAA2, 0xEAEE, 0xEB30, 0xEB5F, 0xEB71, 0xEB65, 0xEB46,\n    0xEB17, 0xEADF, 0xEAA2, 0xEA65, 0xEA2C, 0xE9FE, 0xE9DE, 0xE9D3,\n    0xE9E5, 0xEA13, 0xEA56, 0xEAA2, 0xEAEE, 0xEB30, 0xEB5F, 0xEB71,\n    0xEB65, 0xEB46, 0xEB17, 0xEADF, 0xEAA2, 0xEA65, 0xEA2C, 0xE9FE,\n    0xE9DE, 0x1262, 0x05BA, 0x04E2, 0x05BA, 0x0795, 0x0970, 0x0A48,\n    0x0970, 0x0795, 0x05BA, 0x04E2, 0x05BA, 0x0795, 0x0970, 0x0A48,\n    0x0970, 0x0795, 0x05BA, 0x04E2, 0x05BA, 0x0795, 0x0970, 0x0A48,\n    0x0970, 0x0795, 0x05BA, 0x04E2, 0x05BA, 0x0795, 0x0970, 0x0A48,\n    0x0970, 0x0795, 0x05BA, 0x04E2, 0x05BA, 0x0795, 0xEBAC, 0xEBE8,\n    0xEBAC, 0xEB27, 0xEAA2, 0xEA65, 0xEAA2, 0xEB27, 0xEBAC, 0xEBE8,\n    0xEBAC, 0xEB27, 0xEAA2, 0xEA65, 0xEAA2, 0xEB27, 0xEBAC, 0xEBE8,\n    0xEBAC, 0xEB27, 0xEAA2, 0xEA65, 0xEAA2, 0xEB27, 0xEBAC, 0xEBE8,\n    0xEBAC, 0xEB27, 0xEAA2, 0xEA65, 0xEAA2, 0xEB27, 0xEBAC, 0xEBE8,\n    0xEBAC, 0xEB27, 0x0FAB, 0x13FD, 0x140F, 0x143D, 0x1480, 0x14CC,\n    0x1518, 0x155A, 0x1589, 0x159B, 0x158F, 0x1570, 0x1541, 0x1509,\n    0x14CC, 0x148E, 0x1456, 0x1428, 0x1408, 0x13FD, 0x140F, 0x143D,\n    0x1480, 0x14CC, 0x1518, 0x155A, 0x1589, 0x159B, 0x158F, 0x1570,\n    0x1541, 0x1509, 0x14CC, 0x148E, 0x1456, 0x1428, 0x1408, 0x0E83,\n    0xD0E0, 0xD017, 0xCF7D, 0xCF3F, 0xCF7D, 0xD017, 0xD0E0, 0xD1A9,\n    0xD244, 0xD281, 0xD244, 0xD1A9, 0xD0E0, 0xD017, 0xCF7D, 0xCF3F,\n    0xCF7D, 0xD017, 0xD0E0, 0xD1A9, 0xD244, 0xD281, 0xD244, 0xD1A9,\n    0xD0E0, 0xD017, 0xCF7D, 0xCF3F, 0xCF7D, 0xD017, 0xD0E0, 0xD1A9,\n    0xD244, 0xD281, 0xD244, 0xD1A9, 0xD1A9, 0xD244, 0xD281, 0xD244,\n    0xD1A9, 0xD0E0, 0xD017, 0xCF7D, 0xCF3F, 0xCF7D, 0xD017, 0xD0E0,\n    0xD1A9, 0xD244, 0xD281, 0xD244, 0xD1A9, 0xD0E0, 0xD017, 0xCF7D,\n    0xCF3F, 0xCF7D, 0xD017, 0xD0E0, 0xD1A9, 0xD244, 0xD281, 0xD244,\n    0xD1A9, 0xD0E0, 0xD017, 0xCF7D, 0xCF3F, 0xCF7D, 0xD017, 0xD0E0,\n    0xEBD6, 0xC001, 0xC448, 0xD0E0, 0xD017, 0xCF7D, 0xCF3F, 0xCF7D,\n    0xD017, 0xD0E0, 0xD1A9, 0xD244, 0xD281, 0xD244, 0xD1A9, 0xD0E0,\n    0xD017, 0xCF7D, 0xCF3F, 0xCF7D, 0xD017, 0xD0E0, 0xD1A9, 0xD244,\n    0xD281, 0xD244, 0xD1A9, 0xD0E0, 0xD017, 0xCF7D, 0xCF3F, 0xCF7D,\n    0xD017, 0xD0E0, 0xD1A9, 0xD244, 0xD281, 0xD244, 0xD1A9, 0xD1A9,\n    0xD244, 0xD281, 0xD244, 0xD1A9, 0xD0E0, 0xD017, 0xCF7D, 0xCF3F,\n    0xCF7D, 0xD017, 0xD0E0, 0xD1A9, 0xD244, 0xD281, 0xD244, 0xD1A9,\n    0xD0E0, 0xD017, 0xCF7D, 0xCF3F, 0xCF7D, 0xD017, 0xD0E0, 0xD1A9,\n    0xD244, 0xD281, 0xD244, 0xD1A9, 0xD0E0, 0xD017, 0xCF7D, 0xCF3F,\n    0xCF7D, 0xD017, 0xD0E0, 0x1555, 0x3FFF, 0xC001, 0xD0E0, 0xD017,\n    0xCF7D, 0xCF3F, 0xCF7D, 0xD017, 0xD0E0, 0xD1A9, 0xD244, 0xD281,\n    0xD244, 0xD1A9, 0xD0E0, 0xD017, 0xCF7D, 0xCF3F, 0xCF7D, 0xD017,\n    0xD0E0, 0xD1A9, 0xD244, 0xD281, 0xD244, 0xD1A9, 0xD0E0, 0xD017,\n    0xCF7D, 0xCF3F, 0xCF7D, 0xD017, 0xD0E0, 0xD1A9, 0xD244, 0xD281,\n    0xD244, 0xD1A9, 0xF027, 0xF268, 0x71B8, 0x71DD, 0x723B, 0x72B6,\n    0x7330, 0x738E, 0x73B3, 0x738E, 0x7330, 0x72B6, 0x723B, 0x71DD,\n    0x71B8, 0x71DD, 0x723B, 0x72B6, 0x7330, 0x738E, 0x73B3, 0x738E,\n    0x7330, 0x72B6, 0x723B, 0x71DD, 0x71B8, 0x71DD, 0x723B, 0x72B6,\n    0x7330, 0x738E, 0x73B3, 0x738E, 0x7330, 0x72B6, 0x723B, 0x71DD,\n    0xD1A9, 0xD244, 0xD281, 0xD244, 0xD1A9, 0xD0E0, 0xD017, 0xCF7D,\n    0xCF3F, 0xCF7D, 0xD017, 0xD0E0, 0xD1A9, 0xD244, 0xD281, 0xD244,\n    0xD1A9, 0xD0E0, 0xD017, 0xCF7D, 0xCF3F, 0xCF7D, 0xD017, 0xD0E0,\n    0xD1A9, 0xD244, 0xD281, 0xD244, 0xD1A9, 0xD0E0, 0xD017, 0xCF7D,\n    0xCF3F, 0xCF7D, 0xD017, 0xD0E0, 0x0F25, 0x0F28, 0x72B6, 0x723B,\n    0x71DD, 0x71B8, 0x71DD, 0x723B, 0x72B6, 0x7330, 0x738E, 0x73B3,\n    0x738E, 0x7330, 0x72B6, 0x723B, 0x71DD, 0x71B8, 0x71DD, 0x723B,\n    0x72B6, 0x7330, 0x738E, 0x73B3, 0x738E, 0x7330, 0x72B6, 0x723B,\n    0x71DD, 0x71B8, 0x71DD, 0x723B, 0x72B6, 0x7330, 0x738E, 0x73B3,\n    0x738E, 0x7330, 0xC001, 0xC001, 0x0AC5, 0x0ABF, 0x0AAC, 0x0A8F,\n    0x0A69, 0x0A3C, 0x0A08, 0x09D0, 0x0995, 0x0958, 0x091C, 0x08E1,\n    0x08A9, 0x0875, 0x0847, 0x0821, 0x0804, 0x07F2, 0x07EB, 0x07F2,\n    0x0804, 0x0821, 0x0847, 0x0875, 0x08A9, 0x08E1, 0x091C, 0x0958,\n    0x0995, 0x09D0, 0x0A08, 0x0A3C, 0x0A69, 0x0A8F, 0x0AAC, 0x0ABF,\n    0x004B, 0x010F, 0x01CE, 0x0282, 0x0328, 0x03BA, 0x0433, 0x0490,\n    0x04CB, 0x04E0, 0x04CA, 0x048C, 0x042C, 0x03AE, 0x0316, 0x026B,\n    0x01B1, 0x00ED, 0x0024, 0xFF5C, 0xFE97, 0xFDDD, 0xFD32, 0xFC9B,\n    0xFC1C, 0xFBBC, 0xFB7F, 0xFB69, 0xFB7E, 0xFBB9, 0xFC16, 0xFC90,\n    0xFD23, 0xFDC9, 0xFE7E, 0xFF3E, 0x7AEA, 0x7B01, 0x7B18, 0x7B2A,\n    0x7B37, 0x7B3C, 0x7B37, 0x7B2A, 0x7B18, 0x7B01, 0x7AEA, 0x7AD4,\n    0x7AC1, 0x7AB4, 0x7AAF, 0x7AB4, 0x7AC1, 0x7AD4, 0x7AEA, 0x7B01,\n    0x7B18, 0x7B2A, 0x7B37, 0x7B3C, 0x7B37, 0x7B2A, 0x7B18, 0x7B01,\n    0x7AEA, 0x7AD4, 0x7AC1, 0x7AB4, 0x7AAF, 0x7AB4, 0x7AC1, 0x7AD4,\n};\n\n// 0x0500857C\nstatic const u16 klepto_seg5_animindex_0500857C[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0000, 0x0001, 0x0003, 0x0001, 0x0000,\n    0x0024, 0x0350, 0x0001, 0x0000, 0x0024, 0x0374,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0024, 0x032C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0024, 0x0070,\n    0x0024, 0x0004, 0x0024, 0x0028, 0x0024, 0x004C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x032B,\n    0x0001, 0x02BA, 0x0001, 0x02BB, 0x0024, 0x02BC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0024, 0x0296,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0024, 0x024B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0024, 0x0200,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0024, 0x00DC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x032A,\n    0x0001, 0x0304, 0x0001, 0x0305, 0x0024, 0x0306,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0024, 0x02E0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0024, 0x026F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0024, 0x0224,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0024, 0x0100,\n    0x0001, 0x0293, 0x0001, 0x0294, 0x0001, 0x0295,\n    0x0001, 0x016C, 0x0024, 0x016D, 0x0001, 0x0191,\n    0x0001, 0x0000, 0x0024, 0x0148, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0024, 0x0124, 0x0001, 0x0000,\n    0x0001, 0x0248, 0x0001, 0x0249, 0x0001, 0x024A,\n    0x0001, 0x01DA, 0x0024, 0x01DB, 0x0001, 0x01FF,\n    0x0001, 0x0000, 0x0024, 0x01B6, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0024, 0x0192, 0x0001, 0x0000,\n    0x0024, 0x0094, 0x0001, 0x0000, 0x0024, 0x00B8,\n};\n\n// 0x050086C0\nstatic const struct Animation klepto_seg5_anim_050086C0 = {\n    0,\n    0,\n    0,\n    0,\n    0x24,\n    ANIMINDEX_NUMPARTS(klepto_seg5_animindex_0500857C),\n    klepto_seg5_animvalue_05007E4C,\n    klepto_seg5_animindex_0500857C,\n    0,\n};\n"
  },
  {
    "path": "actors/klepto/anims/anim_05008A18.inc.c",
    "content": "// 0x050086D8\nstatic const s16 klepto_seg5_animvalue_050086D8[] = {\n    0x0000, 0x0088, 0x0087, 0x0085, 0x0084, 0x0083, 0x0083, 0x0085,\n    0x0089, 0x003A, 0x0039, 0x0037, 0x0036, 0x0035, 0x0036, 0x0037,\n    0x003A, 0x3FFF, 0x204A, 0x22EE, 0x2619, 0x2981, 0x2CDE, 0x2FE8,\n    0x3257, 0x33E2, 0xD836, 0xD726, 0xD5E5, 0xD471, 0xD2C8, 0xD0E7,\n    0xCECC, 0xCC75, 0x7996, 0x7833, 0x767F, 0x74B8, 0x731E, 0x71F1,\n    0x716F, 0x71D8, 0xF921, 0xF9CC, 0xDB95, 0xDC5B, 0xDD50, 0xDE2E,\n    0xDEAE, 0xDE8B, 0xDD7F, 0xDB43, 0x03EA, 0x0307, 0xD7BB, 0xDA12,\n    0xDCE6, 0xDFCA, 0xE24E, 0xE405, 0xE481, 0xE353, 0xE7CE, 0xDB3B,\n    0xD482, 0xD298, 0xD472, 0xD906, 0xDF48, 0xE62D, 0x279F, 0x2688,\n    0x2561, 0x2464, 0x23C9, 0x23C8, 0x249A, 0x2678, 0xEF51, 0xEF05,\n    0xEEA8, 0xEE55, 0xEE27, 0xEE3A, 0xEEAA, 0xEF93, 0xDE13, 0xD7FF,\n    0xD5CA, 0xD6C5, 0xDA44, 0xDF9A, 0xE619, 0xED16, 0x0754, 0x081C,\n    0x0913, 0x09F2, 0x0A70, 0x0A46, 0x092C, 0x06DB, 0x1234, 0x1B80,\n    0x219E, 0x24D0, 0x255E, 0x238A, 0x1F99, 0x19D2, 0xDB3A, 0xDBE0,\n    0xDC7D, 0xDCEA, 0xDCFE, 0xDC94, 0xDB82, 0xD9A2, 0x0B20, 0x0ADE,\n    0x0A9C, 0x0A5A, 0x0A18, 0x09D6, 0x0994, 0x0952, 0x2159, 0x2721,\n    0x29AE, 0x2968, 0x26B6, 0x2201, 0x1BAF, 0x142A, 0x032C, 0x03C7,\n    0x0487, 0x0535, 0x059A, 0x057E, 0x04AC, 0x02EC, 0xF921, 0xF9CC,\n    0xDB95, 0xDC5B, 0xDD50, 0xDE2E, 0xDEAE, 0xDE8B, 0xDD7F, 0xDB43,\n    0x03EA, 0x0307, 0xD7BB, 0xDA12, 0xDCE6, 0xDFCA, 0xE24E, 0xE405,\n    0xE481, 0xE353, 0xEBD6, 0xC001, 0xC448, 0xF921, 0xF9CC, 0xDB95,\n    0xDC5B, 0xDD50, 0xDE2E, 0xDEAE, 0xDE8B, 0xDD7F, 0xDB43, 0x03EA,\n    0x0307, 0xD7BB, 0xDA12, 0xDCE6, 0xDFCA, 0xE24E, 0xE405, 0xE481,\n    0xE353, 0x1555, 0x3FFF, 0xC001, 0xF921, 0xF9CC, 0xDB95, 0xDC5B,\n    0xDD50, 0xDE2E, 0xDEAE, 0xDE8B, 0xDD7F, 0xDB43, 0x0C99, 0xF37F,\n    0x7755, 0x78CD, 0x7A9C, 0x7C40, 0x7D33, 0x7CF0, 0x7AF5, 0x76BB,\n    0x03EA, 0x0307, 0xD7BB, 0xDA12, 0xDCE6, 0xDFCA, 0xE24E, 0xE405,\n    0xE481, 0xE353, 0xF6F8, 0xF707, 0xF71A, 0xF72B, 0xF735, 0xF732,\n    0xF71E, 0xF6F1, 0x0C00, 0x7446, 0x7824, 0x7CD4, 0x8196, 0x85A4,\n    0x883E, 0x88A2, 0x8610, 0xC001, 0xC001, 0x1311, 0x12A0, 0x1232,\n    0x11DE, 0x11BB, 0x11E3, 0x126B, 0x136D, 0x7996, 0x7833, 0x767F,\n    0x74B8, 0x731E, 0x71F1, 0x716F, 0x71D8, 0x0000,\n};\n\n// 0x050088D4\nstatic const u16 klepto_seg5_animindex_050088D4[] = {\n    0x0001, 0x0000, 0x0008, 0x0001, 0x0008, 0x0009, 0x0001, 0x0000, 0x0001, 0x0011, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x00F5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x00ED,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x001A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x0012,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00EC,\n    0x0001, 0x00C6, 0x0001, 0x00C7, 0x0008, 0x00C8,\n    0x0001, 0x00BC, 0x0001, 0x00BD, 0x0008, 0x00BE,\n    0x0001, 0x00A5, 0x0001, 0x00A6, 0x0008, 0x00A7,\n    0x0001, 0x008E, 0x0001, 0x008F, 0x0008, 0x0090,\n    0x0001, 0x002A, 0x0001, 0x002B, 0x0008, 0x002C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00EB,\n    0x0008, 0x00DA, 0x0001, 0x00E2, 0x0008, 0x00E3,\n    0x0001, 0x00D0, 0x0001, 0x00D1, 0x0008, 0x00D2,\n    0x0001, 0x00AF, 0x0001, 0x00B0, 0x0008, 0x00B1,\n    0x0001, 0x0098, 0x0001, 0x0099, 0x0008, 0x009A,\n    0x0001, 0x0034, 0x0001, 0x0035, 0x0008, 0x0036,\n    0x0001, 0x00B9, 0x0001, 0x00BA, 0x0001, 0x00BB,\n    0x0008, 0x004E, 0x0008, 0x0056, 0x0008, 0x005E,\n    0x0001, 0x0000, 0x0008, 0x0046, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0008, 0x003E, 0x0001, 0x0000,\n    0x0001, 0x00A2, 0x0001, 0x00A3, 0x0001, 0x00A4,\n    0x0008, 0x0076, 0x0008, 0x007E, 0x0008, 0x0086,\n    0x0001, 0x0000, 0x0008, 0x006E, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0008, 0x0066, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x0022,\n};\n\n// 0x05008A18\nstatic const struct Animation klepto_seg5_anim_05008A18 = {\n    0,\n    0,\n    0,\n    0,\n    0x08,\n    ANIMINDEX_NUMPARTS(klepto_seg5_animindex_050088D4),\n    klepto_seg5_animvalue_050086D8,\n    klepto_seg5_animindex_050088D4,\n    0,\n};\n"
  },
  {
    "path": "actors/klepto/anims/anim_05008CE4.inc.c",
    "content": "// 0x05008A30\nstatic const s16 klepto_seg5_animvalue_05008A30[] = {\n    0x0000, 0x0089, 0x003A, 0x3FFF, 0x3328, 0x30D4, 0x2D6C, 0x2974,\n    0x2573, 0x21EF, 0x1F6D, 0x1E73, 0xCAC7, 0xCAFE, 0xCCA0, 0xCF31,\n    0xD234, 0xD52E, 0xD7A3, 0xD917, 0x739F, 0x75B1, 0x77BB, 0x7969,\n    0x7A67, 0x7A67, 0x7A67, 0x7A67, 0xF921, 0xF9CC, 0xDB43, 0x03EA,\n    0x0307, 0xE1B3, 0xE013, 0xDE72, 0xDCD2, 0xDB31, 0xD991, 0xD7F1,\n    0xD650, 0xEB74, 0xF0BA, 0xF600, 0xFB47, 0xFB47, 0xFB47, 0xFB47,\n    0xFB47, 0x26B7, 0x26F6, 0x2735, 0x2773, 0x27B2, 0x27F1, 0x282F,\n    0x286E, 0xEF8E, 0xEF8A, 0xEF85, 0xEF81, 0xEF7C, 0xEF77, 0xEF73,\n    0xEF6E, 0xEC89, 0xEBFD, 0xEB70, 0xEAE4, 0xEA57, 0xE9CA, 0xE93E,\n    0xE8B1, 0x06E0, 0x06E5, 0x06EA, 0x06EF, 0x06F4, 0x06F9, 0x06FE,\n    0x0703, 0x1614, 0x1271, 0x0F07, 0x0BF5, 0x0958, 0x0750, 0x05FA,\n    0x0574, 0xD9C4, 0xD9E6, 0xDA08, 0xDA2A, 0xDA4C, 0xDA6E, 0xDA91,\n    0xDAB3, 0x0994, 0x09D6, 0x0A18, 0x0A5A, 0x0A9C, 0x0ADE, 0x0B20,\n    0x0B62, 0x14A3, 0x151B, 0x1594, 0x160C, 0x1685, 0x16FE, 0x1776,\n    0x17EF, 0x02EC, 0xF921, 0xF9CC, 0xDB43, 0x03EA, 0x0307, 0xE1B3,\n    0xE013, 0xDE72, 0xDCD2, 0xDB31, 0xD991, 0xD7F1, 0xD650, 0xEBD6,\n    0xC001, 0xC448, 0xF921, 0xF9CC, 0xDB43, 0x03EA, 0x0307, 0xE1B3,\n    0xE013, 0xDE72, 0xDCD2, 0xDB31, 0xD991, 0xD7F1, 0xD650, 0x1555,\n    0x3FFF, 0xC001, 0xF921, 0xF9CC, 0xDB43, 0x0C99, 0xF37F, 0x76BB,\n    0x03EA, 0x0307, 0xE1B3, 0xE013, 0xDE72, 0xDCD2, 0xDB31, 0xD991,\n    0xD7F1, 0xD650, 0xF6F1, 0x0C00, 0x80AD, 0x7C16, 0x7853, 0x7562,\n    0x7344, 0x71FA, 0x71FA, 0x71FA, 0xC001, 0xC001, 0x136D, 0x739F,\n    0x75B1, 0x77BB, 0x7969, 0x7A67, 0x7A67, 0x7A67, 0x7A67, 0x0000,\n};\n\n// 0x05008BA0\nstatic const u16 klepto_seg5_animindex_05008BA0[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0000, 0x0001, 0x0003, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x00AF,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00AE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x000C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x0004,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00AD,\n    0x0001, 0x0095, 0x0001, 0x0096, 0x0001, 0x0097,\n    0x0001, 0x0092, 0x0001, 0x0093, 0x0001, 0x0094,\n    0x0001, 0x0082, 0x0001, 0x0083, 0x0001, 0x0084,\n    0x0001, 0x0072, 0x0001, 0x0073, 0x0001, 0x0074,\n    0x0001, 0x001C, 0x0001, 0x001D, 0x0001, 0x001E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00AC,\n    0x0001, 0x00A2, 0x0001, 0x00A3, 0x0008, 0x00A4,\n    0x0001, 0x0098, 0x0001, 0x0099, 0x0008, 0x009A,\n    0x0001, 0x0085, 0x0001, 0x0086, 0x0008, 0x0087,\n    0x0001, 0x0075, 0x0001, 0x0076, 0x0008, 0x0077,\n    0x0001, 0x001F, 0x0001, 0x0020, 0x0008, 0x0021,\n    0x0001, 0x008F, 0x0001, 0x0090, 0x0001, 0x0091,\n    0x0008, 0x0039, 0x0008, 0x0041, 0x0008, 0x0049,\n    0x0001, 0x0000, 0x0008, 0x0031, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0008, 0x0029, 0x0001, 0x0000,\n    0x0001, 0x007F, 0x0001, 0x0080, 0x0001, 0x0081,\n    0x0008, 0x0061, 0x0008, 0x0069, 0x0001, 0x0071,\n    0x0001, 0x0000, 0x0008, 0x0059, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0008, 0x0051, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x0014,\n};\n\n// 0x05008CE4\nstatic const struct Animation klepto_seg5_anim_05008CE4 = {\n    1,\n    0,\n    0,\n    0,\n    0x08,\n    ANIMINDEX_NUMPARTS(klepto_seg5_animindex_05008BA0),\n    klepto_seg5_animvalue_05008A30,\n    klepto_seg5_animindex_05008BA0,\n    0,\n};\n"
  },
  {
    "path": "actors/klepto/anims/data.inc.c",
    "content": "#include \"anim_05005E44.inc.c\"\n#include \"anim_05007574.inc.c\"\n#include \"anim_050079B0.inc.c\"\n#include \"anim_05007E34.inc.c\"\n#include \"anim_050086C0.inc.c\"\n#include \"anim_05008A18.inc.c\"\n#include \"anim_05008CE4.inc.c\"\n"
  },
  {
    "path": "actors/klepto/anims/table.inc.c",
    "content": "// 0x05008CFC\nconst struct Animation *const klepto_seg5_anims_05008CFC[] = {\n    &klepto_seg5_anim_05005E44,\n    &klepto_seg5_anim_05007574,\n    &klepto_seg5_anim_050079B0,\n    &klepto_seg5_anim_05007E34,\n    &klepto_seg5_anim_050086C0,\n    &klepto_seg5_anim_05008A18,\n    &klepto_seg5_anim_05008CE4,\n    NULL,\n    NULL,\n};\n"
  },
  {
    "path": "actors/klepto/geo.inc.c",
    "content": "// 0x0C000000\nconst GeoLayout klepto_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 250),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 65536),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, klepto_seg5_dl_050041E8),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 62, 0, 0, klepto_seg5_dl_05003F20),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 44, 0, 0, klepto_seg5_dl_05003D80),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 58, 0, 0, klepto_seg5_dl_05003BD0),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -3, 17, 17, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, klepto_seg5_dl_05004330),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 68, 0, 0, klepto_seg5_dl_050047C8),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_SWITCH_CASE(4, geo_switch_anim_state),\n                                GEO_OPEN_NODE(),\n                                    GEO_NODE_START(),\n                                    GEO_NODE_START(),\n                                    GEO_OPEN_NODE(),\n                                        GEO_SCALE(0x00, 16384),\n                                        GEO_OPEN_NODE(),\n                                            GEO_ASM(0, geo_offset_klepto_held_object),\n                                            GEO_TRANSLATE_ROTATE_WITH_DL(LAYER_OPAQUE, 0, 100, 0, 180, 270, 0, mario_cap_seg3_dl_03022F48),\n                                        GEO_CLOSE_NODE(),\n                                    GEO_CLOSE_NODE(),\n                                    GEO_NODE_START(),\n                                    GEO_OPEN_NODE(),\n                                        GEO_SCALE(0x00, 16384),\n                                        GEO_OPEN_NODE(),\n                                            GEO_ASM(0, geo_offset_klepto_held_object),\n                                            GEO_TRANSLATE_ROTATE_WITH_DL(LAYER_OPAQUE, 0, 100, 0, 180, 270, 0, star_seg3_dl_0302B870),\n                                            GEO_ASM(0, geo_offset_klepto_held_object),\n                                            GEO_TRANSLATE_ROTATE_WITH_DL(LAYER_ALPHA, 0, 100, 0, 180, 270, 0, star_seg3_dl_0302BA18),\n                                        GEO_CLOSE_NODE(),\n                                    GEO_CLOSE_NODE(),\n                                    GEO_NODE_START(),\n                                    GEO_OPEN_NODE(),\n                                        GEO_SCALE(0x00, 16384),\n                                        GEO_OPEN_NODE(),\n                                            GEO_ASM(0, geo_offset_klepto_held_object),\n                                            GEO_TRANSLATE_ROTATE_WITH_DL(LAYER_OPAQUE, 0, 100, 0, 180, 270, 0, transparent_star_seg3_dl_0302C620),\n                                        GEO_CLOSE_NODE(),\n                                    GEO_CLOSE_NODE(),\n                                GEO_CLOSE_NODE(),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -3, 17, -17, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, klepto_seg5_dl_05004438),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 68, 0, 0, klepto_seg5_dl_05004B58),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 49, -9, -17, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, klepto_seg5_dl_05004D38),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_ALPHA, 34, 0, 0, klepto_seg5_dl_05004F58),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_ALPHA, 79, 0, 0, klepto_seg5_dl_05005178),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 49, -9, 17, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, klepto_seg5_dl_05004C28),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_ALPHA, 34, 0, 0, klepto_seg5_dl_05004E48),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_ALPHA, 79, 0, 0, klepto_seg5_dl_05005068),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, klepto_seg5_dl_05004118),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/klepto/model.inc.c",
    "content": "// Possible Removed Actor File\n\n// Bin ID? What is this?\nUNUSED static const u64 klepto_unused_1 = 0;\n\n// Klepto\n\n// 0x05000008\nALIGNED8 static const Texture klepto_seg5_texture_05000008[] = {\n#include \"actors/klepto/klepto_chest_tuft.rgba16.inc.c\"\n};\n\n// 0x05000808\nALIGNED8 static const Texture klepto_seg5_texture_05000808[] = {\n#include \"actors/klepto/klepto_eye.rgba16.inc.c\"\n};\n\n// 0x05001008\nALIGNED8 static const Texture klepto_seg5_texture_05001008[] = {\n#include \"actors/klepto/klepto_beak.rgba16.inc.c\"\n};\n\n// 0x05002008\nALIGNED8 static const Texture klepto_seg5_texture_05002008[] = {\n#include \"actors/klepto/klepto_wing.rgba16.inc.c\"\n};\n\n// 0x05003008\nALIGNED8 static const Texture klepto_seg5_texture_05003008[] = {\n#include \"actors/klepto/klepto_wing_flap.rgba16.inc.c\"\n};\n\n// 0x05003808\nstatic const Lights1 klepto_seg5_lights_05003808 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05003820\nstatic const Lights1 klepto_seg5_lights_05003820 = gdSPDefLights1(\n    0x3f, 0x1d, 0x08,\n    0xff, 0x75, 0x21, 0x28, 0x28, 0x28\n);\n\n// 0x05003838\nstatic const Vtx klepto_seg5_vertex_05003838[] = {\n    {{{    14,    -62,     52}, 0, {  1058,   -314}, {0x0e, 0xc0, 0x6c, 0xff}}},\n    {{{    65,    -69,      0}, 0, {    80,   -454}, {0x56, 0xa3, 0x00, 0xff}}},\n    {{{    76,    -43,      0}, 0, {   -36,    532}, {0x5b, 0xa9, 0x00, 0xff}}},\n    {{{    26,     -6,     56}, 0, {   942,   1784}, {0x0e, 0x06, 0x7e, 0xff}}},\n    {{{    14,    -62,    -51}, 0, {  1058,   -314}, {0x0e, 0xc0, 0x94, 0xff}}},\n    {{{    26,     -6,    -55}, 0, {   942,   1784}, {0x0e, 0x06, 0x82, 0xff}}},\n};\n\n// 0x05003898\nstatic const Vtx klepto_seg5_vertex_05003898[] = {\n    {{{   134,     -7,     32}, 0, {   496,   1112}, {0x1b, 0x59, 0x55, 0xff}}},\n    {{{   134,     -7,    -31}, 0, {   224,   1048}, {0x1a, 0x59, 0xab, 0xff}}},\n    {{{     0,     16,      0}, 0, {   454,   -308}, {0xf5, 0x7e, 0x00, 0xff}}},\n    {{{     0,     16,      0}, 0, {   480,   -328}, {0xf5, 0x7e, 0x00, 0xff}}},\n    {{{   134,     -7,    -31}, 0, {   684,   1248}, {0x1a, 0x59, 0xab, 0xff}}},\n    {{{    26,     -6,    -55}, 0, {   836,    324}, {0x0e, 0x06, 0x82, 0xff}}},\n    {{{    26,     -6,     56}, 0, {   836,    324}, {0x0e, 0x06, 0x7e, 0xff}}},\n    {{{   134,     -7,     32}, 0, {   684,   1248}, {0x1b, 0x59, 0x55, 0xff}}},\n    {{{   183,     18,      0}, 0, {   -34,   1968}, {0x72, 0x35, 0xff, 0xff}}},\n    {{{   134,     -7,     32}, 0, {   550,   1664}, {0x1b, 0x59, 0x55, 0xff}}},\n    {{{   158,    -40,      0}, 0, {   -34,   1564}, {0x36, 0x8e, 0x00, 0xff}}},\n    {{{    26,     -6,     56}, 0, {   982,    280}, {0x0e, 0x06, 0x7e, 0xff}}},\n    {{{    76,    -43,      0}, 0, {   -34,    256}, {0x5b, 0xa9, 0x00, 0xff}}},\n    {{{    26,     -6,    -55}, 0, {   982,    280}, {0x0e, 0x06, 0x82, 0xff}}},\n    {{{   134,     -7,    -31}, 0, {   550,   1664}, {0x1a, 0x59, 0xab, 0xff}}},\n};\n\n// 0x05003988\nstatic const Vtx klepto_seg5_vertex_05003988[] = {\n    {{{   134,     -7,    -31}, 0, {   558,   1256}, {0x1a, 0x59, 0xab, 0xff}}},\n    {{{   134,     -7,     32}, 0, {   318,   1032}, {0x1b, 0x59, 0x55, 0xff}}},\n    {{{   183,     18,      0}, 0, {   326,   1572}, {0x72, 0x35, 0xff, 0xff}}},\n};\n\n// 0x050039B8\nstatic const Vtx klepto_seg5_vertex_050039B8[] = {\n    {{{    14,    -62,    -51}, 0, {     0,      0}, {0x0e, 0xc0, 0x94, 0xff}}},\n    {{{    65,    -69,      0}, 0, {     0,      0}, {0x56, 0xa3, 0x00, 0xff}}},\n    {{{    21,    -88,      0}, 0, {     0,      0}, {0xf8, 0x82, 0x00, 0xff}}},\n    {{{    14,    -62,     52}, 0, {     0,      0}, {0x0e, 0xc0, 0x6c, 0xff}}},\n    {{{   -42,     -8,     32}, 0, {     0,      0}, {0xa8, 0x2f, 0x4d, 0xff}}},\n    {{{   -32,    -61,     23}, 0, {     0,      0}, {0x9f, 0xb8, 0x25, 0xff}}},\n    {{{    26,     -6,     56}, 0, {     0,      0}, {0x0e, 0x06, 0x7e, 0xff}}},\n    {{{   -32,    -61,    -22}, 0, {     0,      0}, {0xac, 0xae, 0xd2, 0xff}}},\n    {{{   -42,     -8,    -31}, 0, {     0,      0}, {0x99, 0x21, 0xbf, 0xff}}},\n    {{{    26,     -6,    -55}, 0, {     0,      0}, {0x0e, 0x06, 0x82, 0xff}}},\n    {{{     0,     16,      0}, 0, {     0,      0}, {0xf5, 0x7e, 0x00, 0xff}}},\n};\n\n// 0x05003A68 - 0x05003AC0\nconst Gfx klepto_seg5_dl_05003A68[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, klepto_seg5_texture_05000808),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&klepto_seg5_lights_05003808.l, 1),\n    gsSPLight(&klepto_seg5_lights_05003808.a, 2),\n    gsSPVertex(klepto_seg5_vertex_05003838, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  4,  5,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003AC0 - 0x05003B40\nconst Gfx klepto_seg5_dl_05003AC0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, klepto_seg5_texture_05001008),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(klepto_seg5_vertex_05003898, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  3, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(10,  9, 11, 0x0, 11, 12, 10, 0x0),\n    gsSP2Triangles(13, 14, 10, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle(10, 14,  8, 0x0),\n    gsSPVertex(klepto_seg5_vertex_05003988, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003B40 - 0x05003BD0\nconst Gfx klepto_seg5_dl_05003B40[] = {\n    gsSPLight(&klepto_seg5_lights_05003820.l, 1),\n    gsSPLight(&klepto_seg5_lights_05003820.a, 2),\n    gsSPVertex(klepto_seg5_vertex_050039B8, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  3, 0x0,  3,  6,  4, 0x0),\n    gsSP2Triangles( 3,  5,  2, 0x0,  2,  5,  7, 0x0),\n    gsSP2Triangles( 7,  0,  2, 0x0,  0,  7,  8, 0x0),\n    gsSP2Triangles( 8,  9,  0, 0x0,  8,  7,  5, 0x0),\n    gsSP2Triangles(10,  8,  4, 0x0,  4,  8,  5, 0x0),\n    gsSP2Triangles(10,  9,  8, 0x0, 10,  4,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003BD0 - 0x05003C58\nconst Gfx klepto_seg5_dl_05003BD0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(klepto_seg5_dl_05003A68),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(klepto_seg5_dl_05003AC0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(klepto_seg5_dl_05003B40),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003C58\nstatic const Lights1 klepto_seg5_lights_05003C58 = gdSPDefLights1(\n    0x3f, 0x1d, 0x08,\n    0xff, 0x75, 0x21, 0x28, 0x28, 0x28\n);\n\n// 0x05003C70\nstatic const Vtx klepto_seg5_vertex_05003C70[] = {\n    {{{    65,    -11,    -11}, 0, {     0,      0}, {0x0d, 0xa7, 0xa7, 0xff}}},\n    {{{    65,    -11,     12}, 0, {     0,      0}, {0x0c, 0xa6, 0x58, 0xff}}},\n    {{{     6,    -19,      0}, 0, {     0,      0}, {0xd5, 0x89, 0xff, 0xff}}},\n    {{{     6,      1,    -20}, 0, {     0,      0}, {0xd5, 0x00, 0x89, 0xff}}},\n    {{{   -10,      1,      0}, 0, {     0,      0}, {0x82, 0x00, 0xff, 0xff}}},\n    {{{     6,      1,     21}, 0, {     0,      0}, {0xd4, 0x00, 0x76, 0xff}}},\n    {{{    65,     13,    -11}, 0, {     0,      0}, {0x0d, 0x59, 0xa7, 0xff}}},\n    {{{     6,     21,      0}, 0, {     0,      0}, {0xd5, 0x77, 0xff, 0xff}}},\n    {{{    65,     13,     12}, 0, {     0,      0}, {0x0c, 0x5a, 0x58, 0xff}}},\n};\n\n// 0x05003D00 - 0x05003D80\nconst Gfx klepto_seg5_dl_05003D00[] = {\n    gsSPLight(&klepto_seg5_lights_05003C58.l, 1),\n    gsSPLight(&klepto_seg5_lights_05003C58.a, 2),\n    gsSPVertex(klepto_seg5_vertex_05003C70, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 4,  2,  5, 0x0,  2,  4,  3, 0x0),\n    gsSP2Triangles( 5,  2,  1, 0x0,  6,  0,  3, 0x0),\n    gsSP2Triangles( 3,  7,  6, 0x0,  4,  7,  3, 0x0),\n    gsSP2Triangles( 7,  4,  5, 0x0,  1,  8,  5, 0x0),\n    gsSP2Triangles( 7,  5,  8, 0x0,  8,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003D80 - 0x05003DB0\nconst Gfx klepto_seg5_dl_05003D80[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(klepto_seg5_dl_05003D00),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003DB0\nstatic const Lights1 klepto_seg5_lights_05003DB0 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05003DC8\nstatic const Vtx klepto_seg5_vertex_05003DC8[] = {\n    {{{   -10,      0,      0}, 0, {   478,    974}, {0x82, 0xf2, 0x00, 0xff}}},\n    {{{    10,     24,    -20}, 0, {   186,    654}, {0xc1, 0x4b, 0xb1, 0xff}}},\n    {{{    17,    -23,    -20}, 0, {   186,    650}, {0xc2, 0xb5, 0xb0, 0xff}}},\n    {{{    44,    -40,      0}, 0, {   480,    314}, {0x29, 0x89, 0x00, 0xff}}},\n    {{{    17,    -23,     21}, 0, {   772,    650}, {0xc2, 0xb4, 0x4f, 0xff}}},\n    {{{    51,      7,    -33}, 0, {   -10,    134}, {0x32, 0x00, 0x8c, 0xff}}},\n    {{{    51,     35,      0}, 0, {   478,     84}, {0x39, 0x71, 0x00, 0xff}}},\n    {{{    72,     -9,      0}, 0, {   480,   -110}, {0x7e, 0xf6, 0x00, 0xff}}},\n    {{{    51,      7,     34}, 0, {   968,    134}, {0x33, 0x00, 0x74, 0xff}}},\n    {{{    10,     24,     21}, 0, {   772,    654}, {0xc0, 0x4b, 0x4e, 0xff}}},\n};\n\n// 0x05003E68 - 0x05003F20\nconst Gfx klepto_seg5_dl_05003E68[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, klepto_seg5_texture_05000008),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&klepto_seg5_lights_05003DB0.l, 1),\n    gsSPLight(&klepto_seg5_lights_05003DB0.a, 2),\n    gsSPVertex(klepto_seg5_vertex_05003DC8, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 5,  2,  1, 0x0,  2,  5,  3, 0x0),\n    gsSP2Triangles( 4,  0,  2, 0x0,  6,  7,  5, 0x0),\n    gsSP2Triangles( 1,  6,  5, 0x0,  7,  3,  5, 0x0),\n    gsSP2Triangles( 4,  3,  8, 0x0,  3,  7,  8, 0x0),\n    gsSP2Triangles( 1,  0,  9, 0x0,  6,  1,  9, 0x0),\n    gsSP2Triangles( 9,  8,  6, 0x0,  7,  6,  8, 0x0),\n    gsSP2Triangles( 8,  9,  4, 0x0,  0,  4,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003F20 - 0x05003F80\nconst Gfx klepto_seg5_dl_05003F20[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(klepto_seg5_dl_05003E68),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003F80\nstatic const Lights1 klepto_seg5_lights_05003F80 = gdSPDefLights1(\n    0x07, 0x01, 0x01,\n    0x1e, 0x05, 0x04, 0x28, 0x28, 0x28\n);\n\n// 0x05003F98\nstatic const Vtx klepto_seg5_vertex_05003F98[] = {\n    {{{    54,     19,    -37}, 0, {     0,      0}, {0x38, 0x13, 0x91, 0xff}}},\n    {{{    86,     16,      0}, 0, {     0,      0}, {0x78, 0x27, 0xfc, 0xff}}},\n    {{{    76,    -14,      0}, 0, {     0,      0}, {0x67, 0xb7, 0xfd, 0xff}}},\n    {{{    54,     19,     43}, 0, {     0,      0}, {0x38, 0x12, 0x70, 0xff}}},\n    {{{    42,    -26,     26}, 0, {     0,      0}, {0x05, 0x9e, 0x50, 0xff}}},\n    {{{    42,    -26,    -25}, 0, {     0,      0}, {0x0a, 0xa2, 0xad, 0xff}}},\n    {{{    19,     17,    -33}, 0, {     0,      0}, {0xdc, 0x1a, 0x8a, 0xff}}},\n    {{{   -34,    -10,      0}, 0, {     0,      0}, {0x8b, 0xcf, 0x00, 0xff}}},\n    {{{    47,     50,      0}, 0, {     0,      0}, {0x04, 0x7e, 0xfe, 0xff}}},\n    {{{    19,     17,     34}, 0, {     0,      0}, {0xd6, 0x19, 0x74, 0xff}}},\n    {{{    -5,     25,     20}, 0, {     0,      0}, {0xb9, 0x57, 0x3a, 0xff}}},\n    {{{    -5,     25,    -19}, 0, {     0,      0}, {0xb9, 0x57, 0xc6, 0xff}}},\n};\n\n// 0x05004058 - 0x05004118\nconst Gfx klepto_seg5_dl_05004058[] = {\n    gsSPLight(&klepto_seg5_lights_05003F80.l, 1),\n    gsSPLight(&klepto_seg5_lights_05003F80.a, 2),\n    gsSPVertex(klepto_seg5_vertex_05003F98, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  2,  5,  0, 0x0),\n    gsSP2Triangles( 3,  4,  2, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 4,  7,  5, 0x0,  0,  5,  6, 0x0),\n    gsSP2Triangles( 8,  1,  0, 0x0,  8,  0,  6, 0x0),\n    gsSP2Triangles( 7,  4,  9, 0x0,  3,  9,  4, 0x0),\n    gsSP2Triangles( 3,  8,  9, 0x0,  9,  8, 10, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0,  8, 11, 10, 0x0),\n    gsSP2Triangles( 6, 11,  8, 0x0,  3,  1,  8, 0x0),\n    gsSP2Triangles(10, 11,  7, 0x0,  7, 11,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004118 - 0x05004148\nconst Gfx klepto_seg5_dl_05004118[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(klepto_seg5_dl_05004058),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004148\nstatic const Lights1 klepto_seg5_lights_05004148 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05004160\nstatic const Vtx klepto_seg5_vertex_05004160[] = {\n    {{{     5,     -3,      0}, 0, {     0,    992}, {0x37, 0x8e, 0x00, 0xff}}},\n    {{{   -81,    -45,      0}, 0, {     0,      0}, {0x37, 0x8e, 0x00, 0xff}}},\n    {{{   -77,      2,    -47}, 0, {  1700,    224}, {0x2a, 0xaa, 0xae, 0xff}}},\n    {{{   -77,      2,     48}, 0, {  1700,    224}, {0x2a, 0xa9, 0x51, 0xff}}},\n};\n\n// 0x050041A0 - 0x050041E8\nconst Gfx klepto_seg5_dl_050041A0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, klepto_seg5_texture_05003008),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&klepto_seg5_lights_05004148.l, 1),\n    gsSPLight(&klepto_seg5_lights_05004148.a, 2),\n    gsSPVertex(klepto_seg5_vertex_05004160, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050041E8 - 0x05004258\nconst Gfx klepto_seg5_dl_050041E8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(klepto_seg5_dl_050041A0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004258\nstatic const Lights1 klepto_seg5_lights_05004258 = gdSPDefLights1(\n    0x3f, 0x1d, 0x08,\n    0xff, 0x75, 0x21, 0x28, 0x28, 0x28\n);\n\n// 0x05004270\nstatic const Vtx klepto_seg5_vertex_05004270[] = {\n    {{{     9,     27,      3}, 0, {     0,      0}, {0xd5, 0x50, 0x57, 0xff}}},\n    {{{     0,      0,      0}, 0, {     0,      0}, {0x86, 0xe0, 0xfd, 0xff}}},\n    {{{    14,      9,      8}, 0, {     0,      0}, {0x01, 0xb1, 0x62, 0xff}}},\n    {{{     9,     27,     -3}, 0, {     0,      0}, {0xd6, 0x4d, 0xa5, 0xff}}},\n    {{{    69,      0,      0}, 0, {     0,      0}, {0x62, 0x50, 0xfd, 0xff}}},\n    {{{    14,      9,     -7}, 0, {     0,      0}, {0x03, 0xb0, 0x9f, 0xff}}},\n};\n\n// 0x050042D0 - 0x05004330\nconst Gfx klepto_seg5_dl_050042D0[] = {\n    gsSPLight(&klepto_seg5_lights_05004258.l, 1),\n    gsSPLight(&klepto_seg5_lights_05004258.a, 2),\n    gsSPVertex(klepto_seg5_vertex_05004270, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 4,  0,  2, 0x0,  0,  4,  3, 0x0),\n    gsSP2Triangles( 5,  1,  3, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles( 5,  4,  2, 0x0,  4,  5,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004330 - 0x05004360\nconst Gfx klepto_seg5_dl_05004330[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(klepto_seg5_dl_050042D0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004360\nstatic const Lights1 klepto_seg5_lights_05004360 = gdSPDefLights1(\n    0x3f, 0x1d, 0x08,\n    0xff, 0x75, 0x21, 0x28, 0x28, 0x28\n);\n\n// 0x05004378\nstatic const Vtx klepto_seg5_vertex_05004378[] = {\n    {{{     9,     27,      3}, 0, {     0,      0}, {0xd5, 0x50, 0x57, 0xff}}},\n    {{{     0,      0,      0}, 0, {     0,      0}, {0x86, 0xe0, 0xfd, 0xff}}},\n    {{{    14,      9,      8}, 0, {     0,      0}, {0x01, 0xb1, 0x62, 0xff}}},\n    {{{     9,     27,     -3}, 0, {     0,      0}, {0xd6, 0x4d, 0xa5, 0xff}}},\n    {{{    69,      0,      0}, 0, {     0,      0}, {0x62, 0x50, 0xfd, 0xff}}},\n    {{{    14,      9,     -7}, 0, {     0,      0}, {0x03, 0xb0, 0x9f, 0xff}}},\n};\n\n// 0x050043D8 - 0x05004438\nconst Gfx klepto_seg5_dl_050043D8[] = {\n    gsSPLight(&klepto_seg5_lights_05004360.l, 1),\n    gsSPLight(&klepto_seg5_lights_05004360.a, 2),\n    gsSPVertex(klepto_seg5_vertex_05004378, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 4,  0,  2, 0x0,  0,  4,  3, 0x0),\n    gsSP2Triangles( 5,  1,  3, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles( 5,  4,  2, 0x0,  4,  5,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004438 - 0x05004468\nconst Gfx klepto_seg5_dl_05004438[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(klepto_seg5_dl_050043D8),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004468\nstatic const Lights1 klepto_seg5_lights_05004468 = gdSPDefLights1(\n    0x02, 0x00, 0x00,\n    0x08, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x05004480\nstatic const Lights1 klepto_seg5_lights_05004480 = gdSPDefLights1(\n    0x3f, 0x1d, 0x08,\n    0xff, 0x75, 0x21, 0x28, 0x28, 0x28\n);\n\n// 0x05004498\nstatic const Vtx klepto_seg5_vertex_05004498[] = {\n    {{{    38,      7,     24}, 0, {     0,      0}, {0x10, 0x7d, 0x00, 0xff}}},\n    {{{    24,    -12,     28}, 0, {     0,      0}, {0xb4, 0x24, 0x5e, 0xff}}},\n    {{{    43,    -19,     30}, 0, {     0,      0}, {0x50, 0xae, 0x35, 0xff}}},\n    {{{    48,      7,      0}, 0, {     0,      0}, {0x09, 0x7e, 0xfe, 0xff}}},\n    {{{    34,    -14,     -7}, 0, {     0,      0}, {0xf6, 0x1d, 0x85, 0xff}}},\n    {{{    34,    -14,      9}, 0, {     0,      0}, {0xf0, 0x1c, 0x7a, 0xff}}},\n    {{{    51,    -21,      1}, 0, {     0,      0}, {0x55, 0xa2, 0xfc, 0xff}}},\n    {{{    24,    -12,    -25}, 0, {     0,      0}, {0xb4, 0x24, 0xa2, 0xff}}},\n    {{{    38,      7,    -23}, 0, {     0,      0}, {0x08, 0x7e, 0x0a, 0xff}}},\n    {{{    44,    -19,    -28}, 0, {     0,      0}, {0x49, 0xaa, 0xc7, 0xff}}},\n    {{{    33,    -14,    -11}, 0, {     0,      0}, {0x34, 0x11, 0x72, 0xff}}},\n    {{{    33,    -13,     13}, 0, {     0,      0}, {0x35, 0x11, 0x8f, 0xff}}},\n};\n\n// 0x05004558\nstatic const Vtx klepto_seg5_vertex_05004558[] = {\n    {{{     7,     -1,      6}, 0, {     0,      0}, {0xac, 0x4a, 0xc6, 0xff}}},\n    {{{    33,    -13,     13}, 0, {     0,      0}, {0x35, 0x11, 0x8f, 0xff}}},\n    {{{    20,    -24,     16}, 0, {     0,      0}, {0xdd, 0x87, 0xf3, 0xff}}},\n    {{{    34,    -14,      9}, 0, {     0,      0}, {0xf0, 0x1c, 0x7a, 0xff}}},\n    {{{    24,    -25,      0}, 0, {     0,      0}, {0xd9, 0x88, 0xfa, 0xff}}},\n    {{{    51,    -21,      1}, 0, {     0,      0}, {0x55, 0xa2, 0xfc, 0xff}}},\n    {{{    34,    -14,     -7}, 0, {     0,      0}, {0xf6, 0x1d, 0x85, 0xff}}},\n    {{{     8,     -2,      0}, 0, {     0,      0}, {0xa6, 0x57, 0xf4, 0xff}}},\n    {{{    33,    -14,    -11}, 0, {     0,      0}, {0x34, 0x11, 0x72, 0xff}}},\n    {{{    20,    -24,    -14}, 0, {     0,      0}, {0xda, 0x88, 0x09, 0xff}}},\n    {{{    44,    -19,    -28}, 0, {     0,      0}, {0x49, 0xaa, 0xc7, 0xff}}},\n    {{{    24,    -12,    -25}, 0, {     0,      0}, {0xb4, 0x24, 0xa2, 0xff}}},\n    {{{     7,     -1,     -4}, 0, {     0,      0}, {0xaf, 0x4b, 0x3d, 0xff}}},\n    {{{    24,    -12,     28}, 0, {     0,      0}, {0xb4, 0x24, 0x5e, 0xff}}},\n    {{{    43,    -19,     30}, 0, {     0,      0}, {0x50, 0xae, 0x35, 0xff}}},\n};\n\n// 0x05004648\nstatic const Vtx klepto_seg5_vertex_05004648[] = {\n    {{{   -22,      7,      0}, 0, {     0,      0}, {0x9a, 0x4a, 0xf4, 0xff}}},\n    {{{     2,    -10,      0}, 0, {     0,      0}, {0xe8, 0x84, 0xfe, 0xff}}},\n    {{{    15,     -3,     17}, 0, {     0,      0}, {0x4b, 0x0d, 0x65, 0xff}}},\n    {{{    15,     -3,    -15}, 0, {     0,      0}, {0x48, 0x0e, 0x99, 0xff}}},\n    {{{     6,      5,      0}, 0, {     0,      0}, {0x25, 0x79, 0xfe, 0xff}}},\n};\n\n// 0x05004698 - 0x050047C8\nconst Gfx klepto_seg5_dl_05004698[] = {\n    gsSPLight(&klepto_seg5_lights_05004468.l, 1),\n    gsSPLight(&klepto_seg5_lights_05004468.a, 2),\n    gsSPVertex(klepto_seg5_vertex_05004498, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0,  3,  5,  6, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  8,  7, 10, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0,  0, 11,  1, 0x0),\n    gsSP1Triangle(11,  0,  2, 0x0),\n    gsSPLight(&klepto_seg5_lights_05004480.l, 1),\n    gsSPLight(&klepto_seg5_lights_05004480.a, 2),\n    gsSPVertex(klepto_seg5_vertex_05004558, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  3, 0x0,  7,  4,  3, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  7,  6,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12,  8, 0x0),\n    gsSP2Triangles(12,  9,  8, 0x0, 12, 11,  9, 0x0),\n    gsSP2Triangles(10,  9, 11, 0x0,  0,  2, 13, 0x0),\n    gsSP2Triangles( 1,  0, 13, 0x0, 13,  2, 14, 0x0),\n    gsSP1Triangle(14,  2,  1, 0x0),\n    gsSPVertex(klepto_seg5_vertex_05004648, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 3,  2,  1, 0x0,  4,  2,  3, 0x0),\n    gsSP2Triangles( 2,  4,  0, 0x0,  3,  0,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050047C8 - 0x050047F8\nconst Gfx klepto_seg5_dl_050047C8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(klepto_seg5_dl_05004698),\n    gsSPEndDisplayList(),\n};\n\n// 0x050047F8\nstatic const Lights1 klepto_seg5_lights_050047F8 = gdSPDefLights1(\n    0x02, 0x00, 0x00,\n    0x08, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x05004810\nstatic const Lights1 klepto_seg5_lights_05004810 = gdSPDefLights1(\n    0x3f, 0x1d, 0x08,\n    0xff, 0x75, 0x21, 0x28, 0x28, 0x28\n);\n\n// 0x05004828\nstatic const Vtx klepto_seg5_vertex_05004828[] = {\n    {{{    38,      7,     24}, 0, {     0,      0}, {0x10, 0x7d, 0x00, 0xff}}},\n    {{{    24,    -12,     28}, 0, {     0,      0}, {0xb4, 0x24, 0x5e, 0xff}}},\n    {{{    43,    -19,     30}, 0, {     0,      0}, {0x50, 0xae, 0x35, 0xff}}},\n    {{{    48,      7,      0}, 0, {     0,      0}, {0x09, 0x7e, 0xfe, 0xff}}},\n    {{{    34,    -14,     -7}, 0, {     0,      0}, {0xf6, 0x1d, 0x85, 0xff}}},\n    {{{    34,    -14,      9}, 0, {     0,      0}, {0xf0, 0x1c, 0x7a, 0xff}}},\n    {{{    51,    -21,      1}, 0, {     0,      0}, {0x55, 0xa2, 0xfc, 0xff}}},\n    {{{    24,    -12,    -25}, 0, {     0,      0}, {0xb4, 0x24, 0xa2, 0xff}}},\n    {{{    38,      7,    -23}, 0, {     0,      0}, {0x08, 0x7e, 0x0a, 0xff}}},\n    {{{    44,    -19,    -28}, 0, {     0,      0}, {0x49, 0xaa, 0xc7, 0xff}}},\n    {{{    33,    -14,    -11}, 0, {     0,      0}, {0x34, 0x11, 0x72, 0xff}}},\n    {{{    33,    -13,     13}, 0, {     0,      0}, {0x35, 0x11, 0x8f, 0xff}}},\n};\n\n// 0x050048E8\nstatic const Vtx klepto_seg5_vertex_050048E8[] = {\n    {{{     7,     -1,      6}, 0, {     0,      0}, {0xac, 0x4a, 0xc6, 0xff}}},\n    {{{    33,    -13,     13}, 0, {     0,      0}, {0x35, 0x11, 0x8f, 0xff}}},\n    {{{    20,    -24,     16}, 0, {     0,      0}, {0xdd, 0x87, 0xf3, 0xff}}},\n    {{{    34,    -14,      9}, 0, {     0,      0}, {0xf0, 0x1c, 0x7a, 0xff}}},\n    {{{    24,    -25,      0}, 0, {     0,      0}, {0xd9, 0x88, 0xfa, 0xff}}},\n    {{{    51,    -21,      1}, 0, {     0,      0}, {0x55, 0xa2, 0xfc, 0xff}}},\n    {{{    34,    -14,     -7}, 0, {     0,      0}, {0xf6, 0x1d, 0x85, 0xff}}},\n    {{{     8,     -2,      0}, 0, {     0,      0}, {0xa6, 0x57, 0xf4, 0xff}}},\n    {{{    33,    -14,    -11}, 0, {     0,      0}, {0x34, 0x11, 0x72, 0xff}}},\n    {{{    20,    -24,    -14}, 0, {     0,      0}, {0xda, 0x88, 0x09, 0xff}}},\n    {{{    44,    -19,    -28}, 0, {     0,      0}, {0x49, 0xaa, 0xc7, 0xff}}},\n    {{{    24,    -12,    -25}, 0, {     0,      0}, {0xb4, 0x24, 0xa2, 0xff}}},\n    {{{     7,     -1,     -4}, 0, {     0,      0}, {0xaf, 0x4b, 0x3d, 0xff}}},\n    {{{    24,    -12,     28}, 0, {     0,      0}, {0xb4, 0x24, 0x5e, 0xff}}},\n    {{{    43,    -19,     30}, 0, {     0,      0}, {0x50, 0xae, 0x35, 0xff}}},\n};\n\n// 0x050049D8\nstatic const Vtx klepto_seg5_vertex_050049D8[] = {\n    {{{   -22,      7,      0}, 0, {     0,      0}, {0x9a, 0x4a, 0xf4, 0xff}}},\n    {{{     2,    -10,      0}, 0, {     0,      0}, {0xe8, 0x84, 0xfe, 0xff}}},\n    {{{    15,     -3,     17}, 0, {     0,      0}, {0x4b, 0x0d, 0x65, 0xff}}},\n    {{{    15,     -3,    -15}, 0, {     0,      0}, {0x48, 0x0e, 0x99, 0xff}}},\n    {{{     6,      5,      0}, 0, {     0,      0}, {0x25, 0x79, 0xfe, 0xff}}},\n};\n\n// 0x05004A28 - 0x05004B58\nconst Gfx klepto_seg5_dl_05004A28[] = {\n    gsSPLight(&klepto_seg5_lights_050047F8.l, 1),\n    gsSPLight(&klepto_seg5_lights_050047F8.a, 2),\n    gsSPVertex(klepto_seg5_vertex_05004828, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0,  3,  5,  6, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  8,  7, 10, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0,  0, 11,  1, 0x0),\n    gsSP1Triangle(11,  0,  2, 0x0),\n    gsSPLight(&klepto_seg5_lights_05004810.l, 1),\n    gsSPLight(&klepto_seg5_lights_05004810.a, 2),\n    gsSPVertex(klepto_seg5_vertex_050048E8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  3, 0x0,  7,  4,  3, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  7,  6,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12,  8, 0x0),\n    gsSP2Triangles(12,  9,  8, 0x0, 12, 11,  9, 0x0),\n    gsSP2Triangles(10,  9, 11, 0x0,  0,  2, 13, 0x0),\n    gsSP2Triangles( 1,  0, 13, 0x0, 13,  2, 14, 0x0),\n    gsSP1Triangle(14,  2,  1, 0x0),\n    gsSPVertex(klepto_seg5_vertex_050049D8, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 3,  2,  1, 0x0,  4,  2,  3, 0x0),\n    gsSP2Triangles( 2,  4,  0, 0x0,  3,  0,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004B58 - 0x05004B88\nconst Gfx klepto_seg5_dl_05004B58[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(klepto_seg5_dl_05004A28),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004B88\nstatic const Lights1 klepto_seg5_lights_05004B88 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05004BA0\nstatic const Vtx klepto_seg5_vertex_05004BA0[] = {\n    {{{    -2,    -13,      0}, 0, {  1992,    528}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    -2,     14,      0}, 0, {  1992,    272}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    34,     24,      0}, 0, {  1640,    176}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    34,    -33,      0}, 0, {  1640,    722}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x05004BE0 - 0x05004C28\nconst Gfx klepto_seg5_dl_05004BE0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, klepto_seg5_texture_05002008),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&klepto_seg5_lights_05004B88.l, 1),\n    gsSPLight(&klepto_seg5_lights_05004B88.a, 2),\n    gsSPVertex(klepto_seg5_vertex_05004BA0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004C28 - 0x05004C98\nconst Gfx klepto_seg5_dl_05004C28[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(klepto_seg5_dl_05004BE0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004C98\nstatic const Lights1 klepto_seg5_lights_05004C98 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05004CB0\nstatic const Vtx klepto_seg5_vertex_05004CB0[] = {\n    {{{    34,    -33,      0}, 0, {  1640,    722}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    34,     24,      0}, 0, {  1640,    176}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -2,    -13,      0}, 0, {  1992,    528}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -2,     14,      0}, 0, {  1992,    272}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x05004CF0 - 0x05004D38\nconst Gfx klepto_seg5_dl_05004CF0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, klepto_seg5_texture_05002008),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&klepto_seg5_lights_05004C98.l, 1),\n    gsSPLight(&klepto_seg5_lights_05004C98.a, 2),\n    gsSPVertex(klepto_seg5_vertex_05004CB0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004D38 - 0x05004DA8\nconst Gfx klepto_seg5_dl_05004D38[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(klepto_seg5_dl_05004CF0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004DA8\nstatic const Lights1 klepto_seg5_lights_05004DA8 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05004DC0\nstatic const Vtx klepto_seg5_vertex_05004DC0[] = {\n    {{{     0,    -33,      0}, 0, {  1640,    716}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,     24,      0}, 0, {  1640,    172}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    79,     34,      0}, 0, {   904,     76}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    79,    -58,      0}, 0, {   904,    940}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x05004E00 - 0x05004E48\nconst Gfx klepto_seg5_dl_05004E00[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, klepto_seg5_texture_05002008),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&klepto_seg5_lights_05004DA8.l, 1),\n    gsSPLight(&klepto_seg5_lights_05004DA8.a, 2),\n    gsSPVertex(klepto_seg5_vertex_05004DC0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004E48 - 0x05004EB8\nconst Gfx klepto_seg5_dl_05004E48[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(klepto_seg5_dl_05004E00),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004EB8\nstatic const Lights1 klepto_seg5_lights_05004EB8 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05004ED0\nstatic const Vtx klepto_seg5_vertex_05004ED0[] = {\n    {{{    79,    -58,      0}, 0, {   904,    940}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    79,     34,      0}, 0, {   904,     76}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,    -33,      0}, 0, {  1640,    716}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,     24,      0}, 0, {  1640,    172}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x05004F10 - 0x05004F58\nconst Gfx klepto_seg5_dl_05004F10[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, klepto_seg5_texture_05002008),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&klepto_seg5_lights_05004EB8.l, 1),\n    gsSPLight(&klepto_seg5_lights_05004EB8.a, 2),\n    gsSPVertex(klepto_seg5_vertex_05004ED0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004F58 - 0x05004FC8\nconst Gfx klepto_seg5_dl_05004F58[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(klepto_seg5_dl_05004F10),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004FC8\nstatic const Lights1 klepto_seg5_lights_05004FC8 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05004FE0\nstatic const Vtx klepto_seg5_vertex_05004FE0[] = {\n    {{{     0,    -58,      0}, 0, {   904,    942}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,     34,      0}, 0, {   904,     78}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   108,     52,      0}, 0, {   -96,    -86}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    65,    -68,      0}, 0, {   296,   1036}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x05005020 - 0x05005068\nconst Gfx klepto_seg5_dl_05005020[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, klepto_seg5_texture_05002008),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&klepto_seg5_lights_05004FC8.l, 1),\n    gsSPLight(&klepto_seg5_lights_05004FC8.a, 2),\n    gsSPVertex(klepto_seg5_vertex_05004FE0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005068 - 0x050050D8\nconst Gfx klepto_seg5_dl_05005068[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(klepto_seg5_dl_05005020),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x050050D8\nstatic const Lights1 klepto_seg5_lights_050050D8 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x050050F0\nstatic const Vtx klepto_seg5_vertex_050050F0[] = {\n    {{{    65,    -68,      0}, 0, {   296,   1036}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   108,     52,      0}, 0, {   -96,    -86}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,    -58,      0}, 0, {   904,    942}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,     34,      0}, 0, {   904,     78}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x05005130 - 0x05005178\nconst Gfx klepto_seg5_dl_05005130[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, klepto_seg5_texture_05002008),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&klepto_seg5_lights_050050D8.l, 1),\n    gsSPLight(&klepto_seg5_lights_050050D8.a, 2),\n    gsSPVertex(klepto_seg5_vertex_050050F0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005178 - 0x050051E8\nconst Gfx klepto_seg5_dl_05005178[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(klepto_seg5_dl_05005130),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/koopa/anims/anim_0600CC24.inc.c",
    "content": "// 0x0600C6A0\nstatic const s16 koopa_seg6_animvalue_0600C6A0[] = {\n    0x0000, 0x00A9, 0x00A8, 0x00A1, 0x0095, 0x0084, 0x0059, 0x004E,\n    0x004A, 0x004A, 0x0058, 0x0066, 0x0063, 0x005B, 0x0051, 0x0045,\n    0x004A, 0x004F, 0x0054, 0x0056, 0x0053, 0x004D, 0x0046, 0x0049,\n    0x004B, 0x004D, 0x004E, 0x004C, 0x0048, 0x0045, 0x0044, 0xFFF3,\n    0x3FFF, 0x3972, 0x3969, 0x3951, 0x392F, 0x390A, 0x38E7, 0x38CC,\n    0x38BD, 0x38C1, 0x38DC, 0x3916, 0x3972, 0x3B2C, 0x3DF7, 0x3F8E,\n    0x3EE6, 0x3D33, 0x3B8E, 0x3B13, 0x3D39, 0x40C8, 0x42D1, 0x420D,\n    0x4002, 0x3DF1, 0x3D1D, 0x3E5F, 0x40E1, 0x4356, 0x4472, 0xF1C7,\n    0xF1B9, 0xF19C, 0xF18A, 0xF198, 0xF1FC, 0xF28C, 0xF2D6, 0xF2D6,\n    0xF2D6, 0xF2D6, 0xF2D6, 0xF2D6, 0xF2D6, 0xF2D6, 0xF2D6, 0xF2D6,\n    0xF2D6, 0xF2D6, 0xF2D6, 0xF2D6, 0xF2D6, 0xF2D6, 0xF2D6, 0xF2D6,\n    0xF2D6, 0xF2D6, 0xF2D6, 0xF2D6, 0xF2D6, 0x03DE, 0x039C, 0x0314,\n    0x02A7, 0x02B2, 0x03EA, 0x05C0, 0x06B3, 0x06B3, 0x06B3, 0x06B3,\n    0x06B3, 0x06B3, 0x06B3, 0x06B3, 0x06B3, 0x06B3, 0x06B3, 0x06B3,\n    0x06B3, 0x06B3, 0x06B3, 0x06B3, 0x06B3, 0x06B3, 0x06B3, 0x06B3,\n    0x06B3, 0x06B3, 0x06B3, 0xCEF7, 0xCE41, 0xCCCE, 0xCBA5, 0xCBCE,\n    0xCF41, 0xD470, 0xD71C, 0xD71C, 0xD71C, 0xD71C, 0xD71C, 0xD71C,\n    0xD71C, 0xD71C, 0xD71C, 0xD71C, 0xD71C, 0xD71C, 0xD71C, 0xD71C,\n    0xD71C, 0xD71C, 0xD71C, 0xD71C, 0xD71C, 0xD71C, 0xD71C, 0xD71C,\n    0xD71C, 0x2B98, 0x2B91, 0x2B7F, 0x2B67, 0x2B4C, 0x2B32, 0x2B1E,\n    0x2B13, 0x2B16, 0x2B2A, 0x2B54, 0x2B98, 0x2CE9, 0x2F02, 0x3013,\n    0x2F25, 0x2D40, 0x2B8C, 0x2B2F, 0x2DE0, 0x3246, 0x34F7, 0x3489,\n    0x32B7, 0x30CC, 0x3013, 0x3164, 0x33E5, 0x3652, 0x3768, 0x0E1F,\n    0x0E40, 0x0E82, 0x0EB3, 0x0EA1, 0x0DE6, 0x0CD1, 0x0C43, 0x0C43,\n    0x0C43, 0x0C43, 0x0C43, 0x0C43, 0x0C43, 0x0C43, 0x0C43, 0x0C43,\n    0x0C43, 0x0C43, 0x0C43, 0x0C43, 0x0C43, 0x0C43, 0x0C43, 0x0C43,\n    0x0C43, 0x0C43, 0x0C43, 0x0C43, 0x0C43, 0xF7B3, 0xF7F3, 0xF875,\n    0xF8DF, 0xF8D7, 0xF7B5, 0xF5FC, 0xF519, 0xF519, 0xF519, 0xF519,\n    0xF519, 0xF519, 0xF519, 0xF519, 0xF519, 0xF519, 0xF519, 0xF519,\n    0xF519, 0xF519, 0xF519, 0xF519, 0xF519, 0xF519, 0xF519, 0xF519,\n    0xF519, 0xF519, 0xF519, 0xD4FC, 0xD44C, 0xD2E6, 0xD1C9, 0xD1F3,\n    0xD54D, 0xDA56, 0xDCEE, 0xDCEE, 0xDCEE, 0xDCEE, 0xDCEE, 0xDCEE,\n    0xDCEE, 0xDCEE, 0xDCEE, 0xDCEE, 0xDCEE, 0xDCEE, 0xDCEE, 0xDCEE,\n    0xDCEE, 0xDCEE, 0xDCEE, 0xDCEE, 0xDCEE, 0xDCEE, 0xDCEE, 0xDCEE,\n    0xDCEE, 0x0132, 0x18EA, 0x1E99, 0x2C1A, 0x3C18, 0x4941, 0x5304,\n    0x5BEF, 0x635D, 0x68A8, 0x697F, 0x66EB, 0x654F, 0x66D0, 0x6947,\n    0x6AA4, 0x6A00, 0x6872, 0x66DD, 0x6626, 0x675D, 0x6999, 0x6ACC,\n    0x6ACC, 0x6ACC, 0x6ACC, 0x6ACC, 0x6ACC, 0x6ACC, 0x6ACC, 0x6ACC,\n    0x1EEC, 0x2180, 0x274B, 0x2D61, 0x30D6, 0x3080, 0x2E0E, 0x2ADD,\n    0x2847, 0x26E2, 0x25C4, 0x2410, 0x20F3, 0x1D3F, 0x1A90, 0x195E,\n    0x18DB, 0x18B2, 0x1892, 0x189A, 0x18E1, 0x190E, 0x190E, 0x190E,\n    0x190E, 0x190E, 0x190E, 0x190E, 0x190E, 0x190E, 0x7236, 0x7670,\n    0x80E7, 0x8E39, 0x9B13, 0xA854, 0xB730, 0xC4C5, 0xCE34, 0xCF4E,\n    0xCABB, 0xC7E9, 0xCA88, 0xCEE6, 0xD15C, 0xD052, 0xCDAD, 0xCB05,\n    0xC9F0, 0xCC67, 0xD0BB, 0xD309, 0xD309, 0xD309, 0xD309, 0xD309,\n    0xD309, 0xD309, 0xD309, 0xD309, 0x0132, 0x6818, 0x62D3, 0x5664,\n    0x47DC, 0x3C4B, 0x3485, 0x2E01, 0x28CE, 0x24F5, 0x240F, 0x258B,\n    0x2640, 0x2481, 0x21FB, 0x208B, 0x20FC, 0x224E, 0x23B2, 0x2459,\n    0x2363, 0x2197, 0x209F, 0x209F, 0x209F, 0x209F, 0x209F, 0x209F,\n    0x209F, 0x209F, 0x209F, 0x9C39, 0x9E88, 0xA3BF, 0xA950, 0xACAD,\n    0xAD0B, 0xABD2, 0xA9B9, 0xA77C, 0xA4B4, 0xA13B, 0x9E2F, 0x9BF8,\n    0x9A2D, 0x98AF, 0x9775, 0x9673, 0x9582, 0x947C, 0x930C, 0x918C,\n    0x90DB, 0x90DB, 0x90DB, 0x90DB, 0x90DB, 0x90DB, 0x90DB, 0x90DB,\n    0x90DB, 0xFDA8, 0x032D, 0x104B, 0x1FD0, 0x2C8A, 0x35D8, 0x3E3E,\n    0x4546, 0x4A77, 0x4BB7, 0x49F9, 0x495D, 0x4C4E, 0x5061, 0x5275,\n    0x5123, 0x4E2B, 0x4B23, 0x49A1, 0x4B6E, 0x4F00, 0x50F2, 0x50F2,\n    0x50F2, 0x50F2, 0x50F2, 0x50F2, 0x50F2, 0x50F2, 0x50F2, 0xA205,\n    0xA205, 0xA205, 0xA205, 0xFFE1, 0xFFE1, 0xFFE1, 0xFFE2, 0xFFE2,\n    0xFFE2, 0xFFE3, 0xFFE3, 0xFFE3, 0xFFE3, 0xFFE3, 0xFFE2, 0xFFE1,\n    0xFFE2, 0xFFE2, 0xFFE2, 0xFFE2, 0xFFE1, 0xFFE1, 0xFFE1, 0xFFE1,\n    0xFFE2, 0xFFE1, 0xFFE1, 0xFFE1, 0xFFE1, 0xFFE1, 0xFFE1, 0xFFE1,\n    0xFFE2, 0x0000, 0xFFFF, 0xFFFD, 0xFFFA, 0xFFF8, 0xFFF7, 0xFFF7,\n    0xFFFA, 0x0000, 0x0006, 0x000B, 0x0008, 0x0002, 0xFFFD, 0xFFF8,\n    0xFFF9, 0xFFFC, 0xFFFF, 0x0000, 0xFFFF, 0xFFFD, 0xFFFB, 0xFFFB,\n    0xFFFC, 0xFFFD, 0xFFFD, 0xFFFC, 0xFFFC, 0xFFFB, 0xFFFB, 0xEDDF,\n    0xECC6, 0xEA1A, 0xE6C5, 0xE3B5, 0xE1D4, 0xE20E, 0xE6C5, 0xEF58,\n    0xF834, 0xFDC3, 0xFA50, 0xF25A, 0xE9FC, 0xE480, 0xE5C0, 0xE943,\n    0xED0B, 0xEF18, 0xEDB6, 0xEA71, 0xE82B, 0xE855, 0xE97F, 0xEA34,\n    0xE9FE, 0xE97D, 0xE8E2, 0xE861, 0xE82B, 0xFFFC, 0xFFFC, 0xFFFC,\n    0xFFFC, 0xFFFC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,\n    0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,\n    0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,\n    0xFFFD, 0xFFFD, 0xFFFD, 0x696E, 0x6C55, 0x7372, 0x7C5D, 0x84B4,\n    0x8A09, 0x89CC, 0x85B1, 0x81BE, 0x7EC7, 0x7D65, 0x7EE6, 0x817C,\n    0x840F, 0x858E, 0x855C, 0x8421, 0x82B2, 0x81E3, 0x8252, 0x8359,\n    0x83ED, 0x83ED, 0x83ED, 0x83ED, 0x83ED, 0x83ED, 0x83ED, 0x83ED,\n    0x83ED, 0x0000,\n};\n\n// 0x0600CB64\nstatic const u16 koopa_seg6_animindex_0600CB64[] = {\n    0x0001, 0x0000, 0x001E, 0x0001, 0x0001, 0x001F, 0x0001, 0x0000, 0x0001, 0x0020, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x001E, 0x0225, 0x001E, 0x0243,\n    0x001E, 0x01CB, 0x001E, 0x01E9, 0x001E, 0x0207,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01CA,\n    0x001E, 0x003F, 0x001E, 0x005D, 0x001E, 0x007B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0021,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01C9,\n    0x001E, 0x00B7, 0x001E, 0x00D5, 0x001E, 0x00F3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0099,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01C8,\n    0x001E, 0x0112, 0x001E, 0x0130, 0x001E, 0x014E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0111,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01C7,\n    0x001E, 0x016D, 0x001E, 0x018B, 0x001E, 0x01A9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x016C,\n};\n\n// 0x0600CC24\nstatic const struct Animation koopa_seg6_anim_0600CC24 = {\n    0,\n    0,\n    0,\n    0,\n    0x1E,\n    ANIMINDEX_NUMPARTS(koopa_seg6_animindex_0600CB64),\n    koopa_seg6_animvalue_0600C6A0,\n    koopa_seg6_animindex_0600CB64,\n    0,\n};\n"
  },
  {
    "path": "actors/koopa/anims/anim_0600CFB8.inc.c",
    "content": "// 0x0600CC3C\nstatic const s16 koopa_seg6_animvalue_0600CC3C[] = {\n    0x0000, 0x0090, 0x008E, 0x008A, 0x0088, 0x008C, 0x0090, 0x008D,\n    0x0089, 0x0086, 0x008B, 0x0090, 0x008D, 0x0089, 0x0086, 0x008B,\n    0x0090, 0x008D, 0x0089, 0x0086, 0x0089, 0x008D, 0x0090, 0xFFF3,\n    0x3FFF, 0xFCBE, 0xF789, 0xF156, 0xEFA0, 0xEE68, 0xED9B, 0xED22,\n    0xECE9, 0xECDA, 0xECDA, 0xECDA, 0xECDA, 0xECDA, 0xECDA, 0xECDA,\n    0xECDA, 0xECDA, 0xECDA, 0xECDA, 0xECDA, 0xECDA, 0xECDA, 0x00AA,\n    0x009F, 0x0085, 0x0065, 0x004A, 0x003F, 0x004A, 0x0065, 0x0085,\n    0x009F, 0x00AA, 0x00A2, 0x008F, 0x0075, 0x005B, 0x0047, 0x003F,\n    0x004A, 0x0065, 0x0085, 0x009F, 0x00AA, 0xFF2C, 0xFF5E, 0xFFD4,\n    0x0061, 0x00D7, 0x0109, 0x00D7, 0x0061, 0xFFD4, 0xFF5E, 0xFF2C,\n    0xFF50, 0xFFA8, 0x001A, 0x008D, 0x00E5, 0x0109, 0x00D7, 0x0061,\n    0xFFD4, 0xFF5E, 0xFF2C, 0xE43B, 0xDAC9, 0xC441, 0xA95D, 0x92D5,\n    0x8963, 0x92D5, 0xA95D, 0xC441, 0xDAC9, 0xE43B, 0xDD81, 0xCCAE,\n    0xB6CF, 0xA0F0, 0x901D, 0x8963, 0x92D5, 0xA95D, 0xC441, 0xDAC9,\n    0xE43B, 0x0000, 0xFC5E, 0xF563, 0xF0ED, 0xEFD3, 0xEEFA, 0xEE5F,\n    0xEDFF, 0xEDD7, 0xEDE5, 0xEE24, 0xEE93, 0xEF2D, 0xEFF0, 0xF145,\n    0xF364, 0xF600, 0xF8CF, 0xFB82, 0xFDCE, 0xFF67, 0x0000, 0x00BB,\n    0x009D, 0x0054, 0xFFFF, 0xFFB6, 0xFF98, 0xFFB6, 0xFFFF, 0x0054,\n    0x009D, 0x00BB, 0x009D, 0x0054, 0xFFFF, 0xFFB6, 0xFF98, 0xFFAD,\n    0xFFE4, 0x0029, 0x006F, 0x00A5, 0x00BB, 0xFFED, 0xFFDF, 0xFFBD,\n    0xFF94, 0xFF72, 0xFF64, 0xFF72, 0xFF94, 0xFFBD, 0xFFDF, 0xFFED,\n    0xFFDF, 0xFFBD, 0xFF94, 0xFF72, 0xFF64, 0xFF6E, 0xFF87, 0xFFA9,\n    0xFFCA, 0xFFE3, 0xFFED, 0x8608, 0x8EC3, 0xA394, 0xBC6C, 0xD13C,\n    0xD9F7, 0xD13C, 0xBC6C, 0xA394, 0x8EC3, 0x8608, 0x8EC3, 0xA394,\n    0xBC6C, 0xD13C, 0xD9F7, 0xD3BF, 0xC434, 0xB000, 0x9BCB, 0x8C40,\n    0x8608, 0x050C, 0x19B9, 0xFA85, 0x0968, 0x1887, 0xBE70, 0x0003,\n    0x1942, 0xF709, 0x5930, 0x9D0D, 0x538B, 0xA205, 0xA205, 0xA205,\n    0xA205, 0x03BC, 0x0497, 0x04DA, 0x0404, 0x001E, 0xFCE5, 0xFF53,\n    0x0295, 0x03D2, 0x0496, 0x04DC, 0x04CF, 0x0465, 0x0361, 0x009E,\n    0xFCD6, 0x0068, 0x0391, 0x04BC, 0x0554, 0x051C, 0x03BC, 0xFE08,\n    0xFD7C, 0xFCC5, 0xFD49, 0x01F4, 0x0609, 0x0332, 0xFEFD, 0xFD70,\n    0xFCC9, 0xFC66, 0xFC47, 0xFC6C, 0xFDE7, 0x0081, 0x05FB, 0x0297,\n    0xFDA5, 0xFA64, 0xFABF, 0xFCCB, 0xFE08, 0xEEE9, 0xEEE2, 0xEED2,\n    0xEEBD, 0xEE97, 0xEE7B, 0xEE91, 0xEEB2, 0xEEC7, 0xEECE, 0xEEC1,\n    0xEEAC, 0xEE96, 0xEE80, 0xEE92, 0xEE74, 0xEE75, 0xEE7C, 0xEE8B,\n    0xEEAC, 0xEED5, 0xEEE9, 0xFF65, 0xFF5A, 0xFF5A, 0xFF9B, 0x00B7,\n    0x019D, 0x0135, 0x005B, 0xFFA5, 0xFF64, 0xFF5C, 0xFF52, 0xFF58,\n    0xFF9B, 0x00B3, 0x0190, 0x0115, 0x0027, 0xFF71, 0xFF3B, 0xFF3C,\n    0xFF47, 0x03A9, 0x0424, 0x04B8, 0x0418, 0xFF56, 0xFB62, 0xFCBB,\n    0xFFBD, 0x02C1, 0x0449, 0x04CC, 0x04A6, 0x03DD, 0x01C3, 0xFDD7,\n    0xFBB0, 0xFD91, 0x0149, 0x0413, 0x04B1, 0x045E, 0x040D, 0x7460,\n    0x7526, 0x76A6, 0x77A3, 0x76DF, 0x75FC, 0x7698, 0x779A, 0x780C,\n    0x7698, 0x752E, 0x75D1, 0x770E, 0x77A3, 0x760C, 0x745F, 0x74A6,\n    0x7581, 0x7600, 0x7593, 0x74C9, 0x745D, 0x0000,\n};\n\n// 0x0600CEF8\nstatic const u16 koopa_seg6_animindex_0600CEF8[] = {\n    0x0001, 0x0000, 0x0016, 0x0001, 0x0001, 0x0017, 0x0001, 0x0000, 0x0001, 0x0018, 0x0001, 0x0000,\n    0x0016, 0x011B, 0x0016, 0x0131, 0x0016, 0x0147,\n    0x0016, 0x00D9, 0x0016, 0x00EF, 0x0016, 0x0105,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00D8,\n    0x0016, 0x002F, 0x0016, 0x0045, 0x0016, 0x005B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0016, 0x0019,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00D7,\n    0x0016, 0x0087, 0x0016, 0x009D, 0x0016, 0x00B3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0016, 0x0071,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00D6,\n    0x0001, 0x00CC, 0x0001, 0x00CD, 0x0001, 0x00CE,\n    0x0001, 0x00C9, 0x0001, 0x00CA, 0x0001, 0x00CB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00D5,\n    0x0001, 0x00D2, 0x0001, 0x00D3, 0x0001, 0x00D4,\n    0x0001, 0x00CF, 0x0001, 0x00D0, 0x0001, 0x00D1,\n};\n\n// 0x0600CFB8\nstatic const struct Animation koopa_seg6_anim_0600CFB8 = {\n    0,\n    0,\n    0,\n    0,\n    0x16,\n    ANIMINDEX_NUMPARTS(koopa_seg6_animindex_0600CEF8),\n    koopa_seg6_animvalue_0600CC3C,\n    koopa_seg6_animindex_0600CEF8,\n    0,\n};\n"
  },
  {
    "path": "actors/koopa/anims/anim_0600D518.inc.c",
    "content": "// 0x0600CFD0\nstatic const s16 koopa_seg6_animvalue_0600CFD0[] = {\n    0x0000, 0x004E, 0x004F, 0x0051, 0x0053, 0x0055, 0x0057, 0x0057,\n    0x0058, 0x0058, 0x0057, 0x0057, 0x0056, 0x0054, 0x0052, 0x0051,\n    0x004F, 0x004D, 0x004B, 0x004A, 0x0049, 0x0048, 0x0048, 0xFFF3,\n    0x3FFF, 0x2372, 0x22E4, 0x219F, 0x2039, 0x1F47, 0x1F5F, 0x2069,\n    0x21DB, 0x2399, 0x258B, 0x2797, 0x29A3, 0x2B95, 0x2D54, 0x2EC5,\n    0x2FD0, 0x305A, 0x2F2C, 0x2BFE, 0x281C, 0x24D4, 0x2372, 0xF2D6,\n    0xF2DC, 0xF2E0, 0xF2CB, 0xF287, 0xF200, 0xF13E, 0xF05C, 0xEF60,\n    0xEE51, 0xED35, 0xEC11, 0xEAED, 0xE9CD, 0xE8B8, 0xE7B4, 0xE6C8,\n    0xE5F9, 0xE54D, 0xE4CB, 0xE478, 0xE45B, 0x06B3, 0x05E4, 0x03F5,\n    0x01A3, 0xFFAD, 0xFECE, 0xFECF, 0xFEF6, 0xFF3D, 0xFF9F, 0x0017,\n    0x009F, 0x0134, 0x01CF, 0x026B, 0x0303, 0x0392, 0x0413, 0x0480,\n    0x04D4, 0x050B, 0x051E, 0xD71C, 0xD4AD, 0xCEE1, 0xC7F8, 0xC233,\n    0xBFD1, 0xC025, 0xC0F7, 0xC235, 0xC3CC, 0xC5AA, 0xC7BD, 0xC9F4,\n    0xCC3C, 0xCE82, 0xD0B6, 0xD2C4, 0xD49C, 0xD62A, 0xD75C, 0xD822,\n    0xD867, 0x12BD, 0x12F0, 0x137E, 0x145B, 0x157A, 0x16CE, 0x1848,\n    0x19DE, 0x1B80, 0x1D22, 0x1EB7, 0x2032, 0x2185, 0x22A4, 0x2382,\n    0x2410, 0x2442, 0x2270, 0x1E18, 0x18E8, 0x1490, 0x12BD, 0x0C43,\n    0x0C90, 0x0D4F, 0x0E3E, 0x0F21, 0x0FB6, 0x100F, 0x1069, 0x10C2,\n    0x111A, 0x1170, 0x11C2, 0x1210, 0x125A, 0x129E, 0x12DB, 0x1312,\n    0x1340, 0x1365, 0x1381, 0x1392, 0x1398, 0xF519, 0xF5EB, 0xF7E0,\n    0xFA36, 0xFC2B, 0xFCFD, 0xFCE7, 0xFCA7, 0xFC43, 0xFBC2, 0xFB29,\n    0xFA7E, 0xF9C8, 0xF90B, 0xF84F, 0xF798, 0xF6EE, 0xF655, 0xF5D4,\n    0xF570, 0xF530, 0xF519, 0xDCEE, 0xDAA1, 0xD523, 0xCE96, 0xC918,\n    0xC6CB, 0xC70B, 0xC7BF, 0xC8D6, 0xCA40, 0xCBED, 0xCDCC, 0xCFCC,\n    0xD1DC, 0xD3ED, 0xD5ED, 0xD7CC, 0xD978, 0xDAE3, 0xDBFA, 0xDCAE,\n    0xDCEE, 0x0000, 0xFF13, 0xFD0A, 0xFB00, 0xFA13, 0xFA22, 0xFA4D,\n    0xFA90, 0xFAE8, 0xFB50, 0xFBC5, 0xFC43, 0xFCC7, 0xFD4D, 0xFDD1,\n    0xFE4F, 0xFEC4, 0xFF2C, 0xFF83, 0xFFC6, 0xFFF1, 0x0000, 0x0000,\n    0xFDAE, 0xF891, 0xF374, 0xF121, 0xF147, 0xF1B3, 0xF25B, 0xF336,\n    0xF43B, 0xF561, 0xF69E, 0xF7E9, 0xF939, 0xFA83, 0xFBC0, 0xFCE6,\n    0xFDEB, 0xFEC7, 0xFF6F, 0xFFDB, 0x0000, 0x0132, 0xFF9B, 0xFC18,\n    0xF895, 0xF6FC, 0xF716, 0xF760, 0xF7D4, 0xF86A, 0xF91E, 0xF9E7,\n    0xFAC1, 0xFBA4, 0xFC8B, 0xFD6E, 0xFE48, 0xFF12, 0xFFC5, 0x005B,\n    0x00CE, 0x0118, 0x0132, 0x5A4A, 0x5A48, 0x5A47, 0x5A54, 0x5A78,\n    0x5ABE, 0x5B31, 0x5BDB, 0x5CC0, 0x5DD6, 0x5F13, 0x606C, 0x61D6,\n    0x6346, 0x64B3, 0x6612, 0x6758, 0x687A, 0x696E, 0x6A29, 0x6AA1,\n    0x6ACC, 0x0471, 0x0501, 0x067C, 0x0893, 0x0AF5, 0x0D53, 0x0F5E,\n    0x10C6, 0x11BD, 0x12AC, 0x1391, 0x146B, 0x1537, 0x15F4, 0x16A1,\n    0x173D, 0x17C4, 0x1837, 0x1892, 0x18D6, 0x18FF, 0x190E, 0xC8DB,\n    0xC87A, 0xC783, 0xC63A, 0xC4E0, 0xC3BA, 0xC30A, 0xC313, 0xC3BA,\n    0xC4AC, 0xC5DC, 0xC73B, 0xC8BB, 0xCA4F, 0xCBE7, 0xCD77, 0xCEF0,\n    0xD044, 0xD165, 0xD245, 0xD2D6, 0xD309, 0x0000, 0x004F, 0x00FD,\n    0x01AC, 0x01FB, 0x01F6, 0x01E7, 0x01D1, 0x01B4, 0x0191, 0x016A,\n    0x0140, 0x0114, 0x00E7, 0x00BB, 0x0090, 0x0069, 0x0047, 0x0029,\n    0x0013, 0x0005, 0x0000, 0x0000, 0xFEB5, 0xFBDA, 0xF900, 0xF7B4,\n    0xF7CA, 0xF806, 0xF864, 0xF8DE, 0xF970, 0xFA13, 0xFAC4, 0xFB7D,\n    0xFC38, 0xFCF1, 0xFDA1, 0xFE45, 0xFED7, 0xFF51, 0xFFAF, 0xFFEB,\n    0x0000, 0x0132, 0xFCF5, 0xF39F, 0xEA49, 0xE60B, 0xE650, 0xE715,\n    0xE848, 0xE9D9, 0xEBB5, 0xEDCE, 0xF011, 0xF26D, 0xF4D1, 0xF72E,\n    0xF970, 0xFB89, 0xFD66, 0xFEF6, 0x0028, 0x00ED, 0x0132, 0x3AE1,\n    0x3ABE, 0x3A58, 0x39B9, 0x38E7, 0x37EC, 0x36D0, 0x359A, 0x3437,\n    0x329A, 0x30CF, 0x2EE4, 0x2CE7, 0x2AE5, 0x28EC, 0x270B, 0x254E,\n    0x23C3, 0x2278, 0x217A, 0x20D8, 0x209F, 0x7F8E, 0x7FE0, 0x80BC,\n    0x81F3, 0x835C, 0x84CF, 0x8621, 0x8727, 0x8801, 0x88E7, 0x89D3,\n    0x8AC2, 0x8BAF, 0x8C96, 0x8D72, 0x8E3F, 0x8EF9, 0x8F9B, 0x9020,\n    0x9085, 0x90C5, 0x90DB, 0x4C18, 0x4B86, 0x4A0D, 0x480E, 0x45E9,\n    0x43FB, 0x42A4, 0x4244, 0x42AE, 0x436B, 0x446D, 0x45A6, 0x4706,\n    0x487F, 0x4A03, 0x4B82, 0x4CEE, 0x4E39, 0x4F54, 0x5030, 0x50BF,\n    0x50F2, 0xA205, 0xA205, 0xA205, 0xA205, 0xFFED, 0xFFEE, 0xFFF1,\n    0xFFF5, 0xFFF8, 0xFFFA, 0xFFFB, 0xFFFC, 0xFFFC, 0xFFFB, 0xFFFA,\n    0xFFF9, 0xFFF7, 0xFFF4, 0xFFF2, 0xFFEF, 0xFFED, 0xFFEB, 0xFFE9,\n    0xFFE7, 0xFFE6, 0xFFE6, 0xFFE8, 0xFFE8, 0xFFE6, 0xFFE5, 0xFFE3,\n    0xFFE2, 0xFFE2, 0xFFE1, 0xFFE1, 0xFFE2, 0xFFE2, 0xFFE3, 0xFFE5,\n    0xFFE6, 0xFFE8, 0xFFE9, 0xFFEB, 0xFFED, 0xFFEE, 0xFFEF, 0xFFF0,\n    0xFFF0, 0xCAD5, 0xC922, 0xC4F7, 0xBFB9, 0xBACE, 0xB79A, 0xB612,\n    0xB542, 0xB536, 0xB5FA, 0xB79A, 0xBA14, 0xBD3A, 0xC0DC, 0xC4C8,\n    0xC8CE, 0xCCBC, 0xD061, 0xD38C, 0xD60C, 0xD7B0, 0xD847, 0xFFFD,\n    0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,\n    0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,\n    0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x9297, 0x934E, 0x950D,\n    0x973F, 0x994F, 0x9AA6, 0x9B50, 0x9BB3, 0x9BC0, 0x9B6B, 0x9AA6,\n    0x9974, 0x97EE, 0x962C, 0x9447, 0x9255, 0x906F, 0x8EAB, 0x8D23,\n    0x8BEE, 0x8B23, 0x8ADA, 0x0000,\n};\n\n// 0x0600D458\nstatic const u16 koopa_seg6_animindex_0600D458[] = {\n    0x0001, 0x0000, 0x0016, 0x0001, 0x0001, 0x0017, 0x0001, 0x0000, 0x0001, 0x0018, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0016, 0x0217, 0x0016, 0x022D,\n    0x0016, 0x01D5, 0x0016, 0x01EB, 0x0016, 0x0201,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01D4,\n    0x0016, 0x002F, 0x0016, 0x0045, 0x0016, 0x005B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0016, 0x0019,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01D3,\n    0x0016, 0x0087, 0x0016, 0x009D, 0x0016, 0x00B3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0016, 0x0071,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01D2,\n    0x0016, 0x010B, 0x0016, 0x0121, 0x0016, 0x0137,\n    0x0016, 0x00C9, 0x0016, 0x00DF, 0x0016, 0x00F5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01D1,\n    0x0016, 0x018F, 0x0016, 0x01A5, 0x0016, 0x01BB,\n    0x0016, 0x014D, 0x0016, 0x0163, 0x0016, 0x0179,\n};\n\n// 0x0600D518\nstatic const struct Animation koopa_seg6_anim_0600D518 = {\n    0,\n    0,\n    0,\n    0,\n    0x16,\n    ANIMINDEX_NUMPARTS(koopa_seg6_animindex_0600D458),\n    koopa_seg6_animvalue_0600CFD0,\n    koopa_seg6_animindex_0600D458,\n    0,\n};\n"
  },
  {
    "path": "actors/koopa/anims/anim_0600D804.inc.c",
    "content": "// 0x0600D530\nstatic const s16 koopa_seg6_animvalue_0600D530[] = {\n    0x0000, 0x0087, 0x0084, 0x007E, 0x007B, 0x007E, 0x0084, 0x0087,\n    0x0084, 0x007E, 0x007B, 0x007E, 0x0084, 0x0087, 0xFFDC, 0x3FFF,\n    0x0DD2, 0x0F4D, 0x1132, 0x104D, 0x102A, 0x1010, 0x1000, 0x0FFC,\n    0x1004, 0x1019, 0x1116, 0x0F43, 0x0DD2, 0xF419, 0xF9FA, 0x007D,\n    0xF7F2, 0xF6E3, 0xF636, 0xF5F1, 0xF619, 0xF6B5, 0xF7CA, 0x013D,\n    0xFA5D, 0xF419, 0xFE67, 0xF591, 0xEB08, 0xF439, 0xF567, 0xF628,\n    0xF679, 0xF65A, 0xF5C8, 0xF4BF, 0xEB60, 0xF5B1, 0xFE67, 0xE18D,\n    0xE18E, 0xE18F, 0xE190, 0xE191, 0xE192, 0xE193, 0xE192, 0xE191,\n    0xE190, 0xE18F, 0xE18E, 0xE18D, 0x0B68, 0x0B68, 0x0B68, 0x0B69,\n    0x0B69, 0x0B69, 0x0B69, 0x0B69, 0x0B69, 0x0B68, 0x0B68, 0x0B68,\n    0x0B68, 0x0D4E, 0x0345, 0xED62, 0xD7F1, 0xC392, 0xAFA8, 0xA6A5,\n    0xAF7A, 0xC336, 0xD780, 0xED0E, 0x0328, 0x0D4E, 0xE8EA, 0xE7F2,\n    0xE604, 0xE494, 0xE616, 0xE4FD, 0xE5B8, 0xE6C6, 0xE78E, 0xE6BD,\n    0xE774, 0xE86D, 0xE8EA, 0x05F3, 0x0459, 0x005C, 0xFB2F, 0xF079,\n    0x01CE, 0xFDE9, 0xF632, 0xF130, 0xFBDC, 0x00C7, 0x047C, 0x05F3,\n    0xFBD1, 0xFC76, 0xFD63, 0xFD12, 0xF60B, 0x03A8, 0x009D, 0xFA91,\n    0xF66B, 0xFD6D, 0xFD9C, 0xFC89, 0xFBD1, 0x291C, 0x291C, 0x291B,\n    0x291A, 0x2919, 0x2918, 0x2917, 0x2918, 0x2919, 0x291A, 0x291B,\n    0x291C, 0x291C, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178,\n    0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0xA47F,\n    0xAE49, 0xC411, 0xDA7B, 0xF26C, 0x0AFE, 0x162A, 0x0A7D, 0xF169,\n    0xD93E, 0xC326, 0xADF6, 0xA47F, 0x0EB5, 0xEEB3, 0xF6F0, 0x6176,\n    0xE264, 0x77FC, 0xDF7B, 0x0105, 0xF2F4, 0x479E, 0x6501, 0xFBFE,\n    0xA205, 0xA205, 0xA205, 0xA205, 0xFFE7, 0xFFE7, 0xFFE8, 0xFFE9,\n    0xFFE9, 0xFFE8, 0xFFE8, 0xFFE8, 0xFFE8, 0xFFE8, 0xFFE8, 0xFFE7,\n    0xFFE7, 0x0011, 0x0012, 0x0013, 0x0014, 0x0014, 0x0013, 0x0012,\n    0x0013, 0x0013, 0x0013, 0x0013, 0x0012, 0x0011, 0x07F1, 0x090A,\n    0x0B23, 0x0C6C, 0x0BDE, 0x0A81, 0x09A2, 0x0A08, 0x0AEC, 0x0B44,\n    0x0A47, 0x08BD, 0x07F1, 0x004C, 0x003F, 0x0021, 0x0000, 0xFFD7,\n    0xFFAA, 0xFF95, 0xFFAA, 0xFFD7, 0x0000, 0x0021, 0x003F, 0x004C,\n    0x0201, 0x01AD, 0x00E6, 0xFFFE, 0xFEC4, 0xFD67, 0xFCC2, 0xFD67,\n    0xFEC4, 0xFFFE, 0x00E6, 0x01AD, 0x0201, 0x45FE, 0x46C2, 0x4827,\n    0x48D6, 0x47D9, 0x4625, 0x4543, 0x463B, 0x4804, 0x490B, 0x484F,\n    0x46CF, 0x45FE,\n};\n\n// 0x0600D744\nstatic const u16 koopa_seg6_animindex_0600D744[] = {\n    0x0001, 0x0000, 0x000D, 0x0001, 0x0001, 0x000E, 0x0001, 0x0000, 0x0001, 0x000F, 0x0001, 0x0000,\n    0x000D, 0x00E3, 0x000D, 0x00F0, 0x000D, 0x00FD,\n    0x000D, 0x00BC, 0x000D, 0x00C9, 0x000D, 0x00D6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00BB,\n    0x000D, 0x0037, 0x000D, 0x0044, 0x000D, 0x0051,\n    0x000D, 0x0010, 0x000D, 0x001D, 0x000D, 0x002A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00BA,\n    0x000D, 0x0085, 0x000D, 0x0092, 0x000D, 0x009F,\n    0x000D, 0x005E, 0x000D, 0x006B, 0x000D, 0x0078,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00B9,\n    0x0001, 0x00AF, 0x0001, 0x00B0, 0x0001, 0x00B1,\n    0x0001, 0x00AC, 0x0001, 0x00AD, 0x0001, 0x00AE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00B8,\n    0x0001, 0x00B5, 0x0001, 0x00B6, 0x0001, 0x00B7,\n    0x0001, 0x00B2, 0x0001, 0x00B3, 0x0001, 0x00B4,\n};\n\n// 0x0600D804\nstatic const struct Animation koopa_seg6_anim_0600D804 = {\n    0,\n    0,\n    0,\n    0,\n    0x0D,\n    ANIMINDEX_NUMPARTS(koopa_seg6_animindex_0600D744),\n    koopa_seg6_animvalue_0600D530,\n    koopa_seg6_animindex_0600D744,\n    0,\n};\n"
  },
  {
    "path": "actors/koopa/anims/anim_0600DD90.inc.c",
    "content": "// 0x0600D81C\nstatic const s16 koopa_seg6_animvalue_0600D81C[] = {\n    0x0000, 0x0090, 0x008F, 0x008D, 0x008B, 0x0089, 0x0088, 0x0089,\n    0x008B, 0x008D, 0x008F, 0x0090, 0x008F, 0x008C, 0x008A, 0x0087,\n    0x0086, 0x0087, 0x0089, 0x008B, 0x008D, 0x008F, 0x0090, 0xFFF3,\n    0x3FFF, 0xFCBE, 0xF9F6, 0xF4B5, 0xF1A2, 0xF598, 0xFA80, 0xFB98,\n    0xFC18, 0xFC3C, 0xFC3D, 0xFC56, 0xFCBD, 0xFD4E, 0xFDB5, 0xFD9F,\n    0xFCB9, 0xF90A, 0xF3AF, 0xF0F2, 0xF3C9, 0xF93B, 0xFCAE, 0xFF0A,\n    0xFF18, 0xFF3C, 0xFF72, 0xFFB3, 0xFFFA, 0x0040, 0x0081, 0x00B7,\n    0x00DB, 0x00E9, 0x00DE, 0x00BF, 0x0091, 0x0059, 0x001A, 0xFFD9,\n    0xFF9A, 0xFF62, 0xFF34, 0xFF15, 0xFF0A, 0xFF2C, 0xFF2C, 0xFF2B,\n    0xFF29, 0xFF27, 0xFF25, 0xFF23, 0xFF21, 0xFF1F, 0xFF1E, 0xFF1E,\n    0xFF1E, 0xFF1F, 0xFF20, 0xFF22, 0xFF24, 0xFF26, 0xFF28, 0xFF2A,\n    0xFF2B, 0xFF2C, 0xFF2C, 0xE43B, 0xE257, 0xDD33, 0xD5A0, 0xCC6E,\n    0xC26B, 0xB869, 0xAF37, 0xA7A4, 0xA280, 0xA09C, 0xA22F, 0xA680,\n    0xACF4, 0xB4EE, 0xBDD2, 0xC704, 0xCFE9, 0xD7E3, 0xDE57, 0xE2A8,\n    0xE43B, 0x0000, 0xFFFB, 0xFFD1, 0xFF5B, 0xFE73, 0xFCF2, 0xF76B,\n    0xF26D, 0xF3D3, 0xF738, 0xF913, 0xF717, 0xF391, 0xF1EA, 0xF635,\n    0xFB2B, 0xFCBC, 0xFDF6, 0xFEDF, 0xFF80, 0xFFDE, 0x0000, 0x0092,\n    0x0089, 0x0071, 0x004E, 0x0023, 0xFFF6, 0xFFC7, 0xFF9C, 0xFF79,\n    0xFF61, 0xFF58, 0xFF60, 0xFF73, 0xFF91, 0xFFB5, 0xFFDE, 0x0007,\n    0x0030, 0x0055, 0x0074, 0x0089, 0x0092, 0xFF8A, 0xFF8B, 0xFF8D,\n    0xFF91, 0xFF95, 0xFF9A, 0xFF9F, 0xFFA4, 0xFFA8, 0xFFAA, 0xFFAB,\n    0xFFAA, 0xFFA8, 0xFFA5, 0xFFA1, 0xFF9D, 0xFF98, 0xFF94, 0xFF90,\n    0xFF8D, 0xFF8B, 0xFF8A, 0x9DA9, 0x9FEB, 0xA60D, 0xAF16, 0xBA0F,\n    0xC5FF, 0xD1F0, 0xDCE9, 0xE5F2, 0xEC14, 0xEE56, 0xEC80, 0xE776,\n    0xDFEB, 0xD694, 0xCC23, 0xC14C, 0xB6C3, 0xAD3C, 0xA569, 0x9FFF,\n    0x9DB2, 0x04B7, 0x0496, 0x043A, 0x03B3, 0x030F, 0x025D, 0x01AB,\n    0x0107, 0x0080, 0x0025, 0x0003, 0x001F, 0x006A, 0x00DA, 0x0166,\n    0x0202, 0x02A3, 0x0341, 0x03CF, 0x0444, 0x0494, 0x04B7, 0x1A88,\n    0x18FB, 0x14C4, 0x0E8D, 0x0702, 0xFECE, 0xF699, 0xEF0E, 0xE8D8,\n    0xE4A1, 0xE313, 0xE456, 0xE7CD, 0xECFC, 0xF368, 0xFA96, 0x0208,\n    0x0946, 0x0FD3, 0x1534, 0x18ED, 0x1A82, 0xFAA6, 0xFA6E, 0xF9D8,\n    0xF8FB, 0xF7EF, 0xF6CB, 0xF5A7, 0xF49A, 0xF3BD, 0xF327, 0xF2F0,\n    0xF31D, 0xF398, 0xF451, 0xF535, 0xF635, 0xF73E, 0xF840, 0xF929,\n    0xF9E8, 0xFA6C, 0xFAA5, 0x160B, 0x1578, 0x13E7, 0x1198, 0x0ECA,\n    0x0BBE, 0x08B1, 0x05E3, 0x0395, 0x0204, 0x0170, 0x01E8, 0x0332,\n    0x051F, 0x0782, 0x0A2C, 0x0CF1, 0x0FA2, 0x1211, 0x1411, 0x1573,\n    0x1609, 0x1F3A, 0x1F1B, 0x1EC5, 0x1E48, 0x1DAF, 0x1D09, 0x1C63,\n    0x1BCA, 0x1B4D, 0x1AF7, 0x1AD8, 0x1AF2, 0x1B38, 0x1BA1, 0x1C22,\n    0x1CB4, 0x1D4A, 0x1DDD, 0x1E61, 0x1ECE, 0x1F1A, 0x1F3A, 0xC24D,\n    0xC070, 0xBB63, 0xB3F1, 0xAAE7, 0xA111, 0x973B, 0x8E30, 0x86BF,\n    0x81B1, 0x7FD2, 0x8158, 0x857F, 0x8BB6, 0x9368, 0x9C02, 0xA4F0,\n    0xAD9E, 0xB578, 0xBBEA, 0xC060, 0xC246, 0x0003, 0xFF3D, 0xFD22,\n    0xFA08, 0xF643, 0xF229, 0xEE0F, 0xEA4A, 0xE730, 0xE514, 0xE44E,\n    0xE4EF, 0xE6AA, 0xE942, 0xEC77, 0xF00D, 0xF3C6, 0xF765, 0xFAAB,\n    0xFD5A, 0xFF37, 0x0000, 0x1942, 0x1839, 0x156A, 0x1146, 0x0C3F,\n    0x06C6, 0x014E, 0xFC47, 0xF824, 0xF554, 0xF44B, 0xF523, 0xF772,\n    0xFAE6, 0xFF2E, 0x03F6, 0x08EE, 0x0DC1, 0x121F, 0x15B5, 0x1830,\n    0x193E, 0xF709, 0xF6E0, 0xF672, 0xF5CF, 0xF50A, 0xF434, 0xF35D,\n    0xF298, 0xF1F5, 0xF187, 0xF15E, 0xF17F, 0xF1DA, 0xF262, 0xF30A,\n    0xF3C5, 0xF488, 0xF545, 0xF5F1, 0xF67D, 0xF6DF, 0xF708, 0x20D3,\n    0x1EB9, 0x1907, 0x10A1, 0x066F, 0xFB58, 0xF040, 0xE60E, 0xDDA8,\n    0xD7F6, 0xD5DD, 0xD791, 0xDC40, 0xE342, 0xEBF0, 0xF5A4, 0xFFB6,\n    0x097F, 0x125A, 0x199F, 0x1EA6, 0x20CA, 0xDD51, 0xDD7E, 0xDDF6,\n    0xDEA7, 0xDF7E, 0xE067, 0xE151, 0xE228, 0xE2D9, 0xE351, 0xE37D,\n    0xE359, 0xE2F7, 0xE263, 0xE1AC, 0xE0E0, 0xE00B, 0xDF3D, 0xDE82,\n    0xDDE9, 0xDD7F, 0xDD52, 0x71C9, 0x7460, 0x7B67, 0x85C6, 0x9259,\n    0xA009, 0xADB8, 0xBA4C, 0xC4A7, 0xCBAE, 0xCE45, 0xCC2A, 0xC664,\n    0xBDBF, 0xB30A, 0xA712, 0x9AA5, 0x8E92, 0x83A6, 0x7AAC, 0x7477,\n    0x71D3, 0xA205, 0xA205, 0xA205, 0xA205, 0x02CD, 0x029A, 0x0218,\n    0x016A, 0x00B1, 0x0012, 0xFF74, 0xFEBD, 0xFE11, 0xFD90, 0xFD5D,\n    0xFD90, 0xFE11, 0xFEBE, 0xFF72, 0x000A, 0x0095, 0x012D, 0x01C3,\n    0x0245, 0x02A3, 0x02CD, 0xFCD8, 0xFD0F, 0xFD9D, 0xFE5A, 0xFF23,\n    0xFFD1, 0x007F, 0x0148, 0x0206, 0x0294, 0x02CD, 0x0294, 0x0205,\n    0x0146, 0x007F, 0xFFD9, 0xFF41, 0xFE9B, 0xFDF8, 0xFD6B, 0xFD05,\n    0xFCD9, 0xFD8F, 0xFDDB, 0xFE91, 0xFF6A, 0x001F, 0x006B, 0x0019,\n    0xFF58, 0xFE76, 0xFDC5, 0xFD95, 0xFE2D, 0xFF56, 0x00A8, 0x01BF,\n    0x0233, 0x01DE, 0x0109, 0xFFF4, 0xFEDA, 0xFDFA, 0xFD91, 0xFDA7,\n    0xFDC4, 0xFE15, 0xFE8C, 0xFF1C, 0xFFB9, 0x0055, 0x00E5, 0x015B,\n    0x01AC, 0x01CA, 0x01B2, 0x016F, 0x010C, 0x0091, 0x0008, 0xFF7B,\n    0xFEF0, 0xFE73, 0xFE0C, 0xFDC5, 0xFDA7, 0x0361, 0x0334, 0x02BB,\n    0x0207, 0x012E, 0x0041, 0xFF55, 0xFE7B, 0xFDC8, 0xFD4E, 0xFD21,\n    0xFD46, 0xFDAA, 0xFE3F, 0xFEF9, 0xFFC8, 0x009E, 0x016F, 0x022C,\n    0x02C7, 0x0333, 0x0360, 0x62C8, 0x62C8, 0x62C9, 0x62CA, 0x62CA,\n    0x62CB, 0x62CC, 0x62CD, 0x62CE, 0x62CF, 0x62CF, 0x62CF, 0x62CE,\n    0x62CE, 0x62CD, 0x62CC, 0x62CB, 0x62CA, 0x62C9, 0x62C9, 0x62C8,\n    0x62C8, 0x0000,\n};\n\n// 0x0600DCD0\nstatic const u16 koopa_seg6_animindex_0600DCD0[] = {\n    0x0001, 0x0000, 0x0016, 0x0001, 0x0001, 0x0017, 0x0001, 0x0000, 0x0001, 0x0018, 0x0001, 0x0000,\n    0x0016, 0x0217, 0x0016, 0x022D, 0x0016, 0x0243,\n    0x0016, 0x01D5, 0x0016, 0x01EB, 0x0016, 0x0201,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01D4,\n    0x0016, 0x002F, 0x0016, 0x0045, 0x0016, 0x005B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0016, 0x0019,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01D3,\n    0x0016, 0x0087, 0x0016, 0x009D, 0x0016, 0x00B3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0016, 0x0071,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01D2,\n    0x0016, 0x010B, 0x0016, 0x0121, 0x0016, 0x0137,\n    0x0016, 0x00C9, 0x0016, 0x00DF, 0x0016, 0x00F5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01D1,\n    0x0016, 0x018F, 0x0016, 0x01A5, 0x0016, 0x01BB,\n    0x0016, 0x014D, 0x0016, 0x0163, 0x0016, 0x0179,\n};\n\n// 0x0600DD90\nstatic const struct Animation koopa_seg6_anim_0600DD90 = {\n    0,\n    0,\n    0,\n    0,\n    0x16,\n    ANIMINDEX_NUMPARTS(koopa_seg6_animindex_0600DCD0),\n    koopa_seg6_animvalue_0600D81C,\n    koopa_seg6_animindex_0600DCD0,\n    0,\n};\n"
  },
  {
    "path": "actors/koopa/anims/anim_0600E32C.inc.c",
    "content": "// 0x0600DDA8\nstatic const s16 koopa_seg6_animvalue_0600DDA8[] = {\n    0x0000, 0x00A9, 0x00A8, 0x00A1, 0x0095, 0x0084, 0x0059, 0x004E,\n    0x004A, 0x004A, 0x0058, 0x0066, 0x0063, 0x005B, 0x0051, 0x0045,\n    0x004A, 0x004F, 0x0054, 0x0056, 0x0053, 0x004D, 0x0046, 0x0049,\n    0x004B, 0x004D, 0x004E, 0x004C, 0x0048, 0x0045, 0x0044, 0xFFF3,\n    0x3FFF, 0x2C00, 0x2CFF, 0x2F13, 0x30E2, 0x320A, 0x3318, 0x3416,\n    0x350D, 0x3608, 0x3711, 0x3830, 0x3972, 0x3B92, 0x3E2A, 0x3F8E,\n    0x3EE6, 0x3D33, 0x3B8E, 0x3B13, 0x3D39, 0x40C8, 0x42D1, 0x420D,\n    0x4002, 0x3DF1, 0x3D1D, 0x3E5F, 0x40E1, 0x4356, 0x4472, 0xF148,\n    0xF18B, 0xF20B, 0xF25C, 0xF198, 0xF1F8, 0xF28B, 0xF2D6, 0xF2D6,\n    0xF2D6, 0xF2D6, 0xF2D6, 0xF2D6, 0xF2D6, 0xF2D6, 0xF2D6, 0xF2D6,\n    0xF2D6, 0xF2D6, 0xF2D6, 0xF2D6, 0xF2D6, 0xF2D6, 0xF2D6, 0xF2D6,\n    0xF2D6, 0xF2D6, 0xF2D6, 0xF2D6, 0xF2D6, 0x002B, 0x016B, 0x03DC,\n    0x0588, 0x02B2, 0x03DD, 0x05BA, 0x06B3, 0x06B3, 0x06B3, 0x06B3,\n    0x06B3, 0x06B3, 0x06B3, 0x06B3, 0x06B3, 0x06B3, 0x06B3, 0x06B3,\n    0x06B3, 0x06B3, 0x06B3, 0x06B3, 0x06B3, 0x06B3, 0x06B3, 0x06B3,\n    0x06B3, 0x06B3, 0x06B3, 0xC506, 0xC872, 0xCF20, 0xD3AE, 0xCBCE,\n    0xCF1E, 0xD45E, 0xD71C, 0xD71C, 0xD71C, 0xD71C, 0xD71C, 0xD71C,\n    0xD71C, 0xD71C, 0xD71C, 0xD71C, 0xD71C, 0xD71C, 0xD71C, 0xD71C,\n    0xD71C, 0xD71C, 0xD71C, 0xD71C, 0xD71C, 0xD71C, 0xD71C, 0xD71C,\n    0xD71C, 0x2785, 0x2939, 0x2C77, 0x2E6B, 0x2E90, 0x2E56, 0x2DDA,\n    0x2D39, 0x2C92, 0x2C01, 0x2BA4, 0x2B98, 0x2CD6, 0x2EF9, 0x3013,\n    0x2F25, 0x2D40, 0x2B8C, 0x2B2F, 0x2DE0, 0x3246, 0x34F7, 0x3489,\n    0x32B7, 0x30CC, 0x3013, 0x3164, 0x33E5, 0x3652, 0x3768, 0x101E,\n    0x0FC3, 0x0F07, 0x0E6C, 0x0EA1, 0x0DC7, 0x0CC1, 0x0C43, 0x0C43,\n    0x0C43, 0x0C43, 0x0C43, 0x0C43, 0x0C43, 0x0C43, 0x0C43, 0x0C43,\n    0x0C43, 0x0C43, 0x0C43, 0x0C43, 0x0C43, 0x0C43, 0x0C43, 0x0C43,\n    0x0C43, 0x0C43, 0x0C43, 0x0C43, 0x0C43, 0xFD87, 0xFC7D, 0xFA55,\n    0xF883, 0xF8D7, 0xF77E, 0xF5E1, 0xF519, 0xF519, 0xF519, 0xF519,\n    0xF519, 0xF519, 0xF519, 0xF519, 0xF519, 0xF519, 0xF519, 0xF519,\n    0xF519, 0xF519, 0xF519, 0xF519, 0xF519, 0xF519, 0xF519, 0xF519,\n    0xF519, 0xF519, 0xF519, 0xC60F, 0xC8B9, 0xCE3D, 0xD2E2, 0xD1F3,\n    0xD5E9, 0xDAA4, 0xDCEE, 0xDCEE, 0xDCEE, 0xDCEE, 0xDCEE, 0xDCEE,\n    0xDCEE, 0xDCEE, 0xDCEE, 0xDCEE, 0xDCEE, 0xDCEE, 0xDCEE, 0xDCEE,\n    0xDCEE, 0xDCEE, 0xDCEE, 0xDCEE, 0xDCEE, 0xDCEE, 0xDCEE, 0xDCEE,\n    0xDCEE, 0x0132, 0x18EA, 0x1E99, 0x2C1A, 0x3C18, 0x4941, 0x5304,\n    0x5BEF, 0x635D, 0x68A8, 0x697F, 0x66EB, 0x654F, 0x66D0, 0x6947,\n    0x6AA4, 0x6A00, 0x6872, 0x66DD, 0x6626, 0x675D, 0x6999, 0x6ACC,\n    0x6ACC, 0x6ACC, 0x6ACC, 0x6ACC, 0x6ACC, 0x6ACC, 0x6ACC, 0x6ACC,\n    0x1EEC, 0x2180, 0x274B, 0x2D61, 0x30D6, 0x3080, 0x2E0E, 0x2ADD,\n    0x2847, 0x26E2, 0x25C4, 0x2410, 0x20F3, 0x1D3F, 0x1A90, 0x195E,\n    0x18DB, 0x18B2, 0x1892, 0x189A, 0x18E1, 0x190E, 0x190E, 0x190E,\n    0x190E, 0x190E, 0x190E, 0x190E, 0x190E, 0x190E, 0x7236, 0x7670,\n    0x80E7, 0x8E39, 0x9B13, 0xA854, 0xB730, 0xC4C5, 0xCE34, 0xCF4E,\n    0xCABB, 0xC7E9, 0xCA88, 0xCEE6, 0xD15C, 0xD052, 0xCDAD, 0xCB05,\n    0xC9F0, 0xCC67, 0xD0BB, 0xD309, 0xD309, 0xD309, 0xD309, 0xD309,\n    0xD309, 0xD309, 0xD309, 0xD309, 0x0132, 0x6818, 0x62D3, 0x5664,\n    0x47DC, 0x3C4B, 0x3485, 0x2E01, 0x28CE, 0x24F5, 0x240F, 0x258B,\n    0x2640, 0x2481, 0x21FB, 0x208B, 0x20FC, 0x224E, 0x23B2, 0x2459,\n    0x2363, 0x2197, 0x209F, 0x209F, 0x209F, 0x209F, 0x209F, 0x209F,\n    0x209F, 0x209F, 0x209F, 0x9C39, 0x9E88, 0xA3BF, 0xA950, 0xACAD,\n    0xAD0B, 0xABD2, 0xA9B9, 0xA77C, 0xA4B4, 0xA13B, 0x9E2F, 0x9BF8,\n    0x9A2D, 0x98AF, 0x9775, 0x9673, 0x9582, 0x947C, 0x930C, 0x918C,\n    0x90DB, 0x90DB, 0x90DB, 0x90DB, 0x90DB, 0x90DB, 0x90DB, 0x90DB,\n    0x90DB, 0xFDA8, 0x032D, 0x104B, 0x1FD0, 0x2C8A, 0x35D8, 0x3E3E,\n    0x4546, 0x4A77, 0x4BB7, 0x49F9, 0x495D, 0x4C4E, 0x5061, 0x5275,\n    0x5123, 0x4E2B, 0x4B23, 0x49A1, 0x4B6E, 0x4F00, 0x50F2, 0x50F2,\n    0x50F2, 0x50F2, 0x50F2, 0x50F2, 0x50F2, 0x50F2, 0x50F2, 0xA205,\n    0xA205, 0xA205, 0xA205, 0xFFE1, 0xFFE1, 0xFFE1, 0xFFE2, 0xFFE2,\n    0xFFE2, 0xFFE3, 0xFFE3, 0xFFE3, 0xFFE3, 0xFFE3, 0xFFE2, 0xFFE1,\n    0xFFE2, 0xFFE2, 0xFFE2, 0xFFE2, 0xFFE1, 0xFFE1, 0xFFE1, 0xFFE1,\n    0xFFE2, 0xFFE1, 0xFFE1, 0xFFE1, 0xFFE1, 0xFFE1, 0xFFE1, 0xFFE1,\n    0xFFE2, 0x0000, 0xFFFF, 0xFFFD, 0xFFFA, 0xFFF8, 0xFFF7, 0xFFF7,\n    0xFFFA, 0x0000, 0x0006, 0x000B, 0x0008, 0x0002, 0xFFFD, 0xFFF8,\n    0xFFF9, 0xFFFC, 0xFFFF, 0x0000, 0xFFFF, 0xFFFD, 0xFFFB, 0xFFFB,\n    0xFFFC, 0xFFFD, 0xFFFD, 0xFFFC, 0xFFFC, 0xFFFB, 0xFFFB, 0xEDDF,\n    0xEC24, 0xE7D5, 0xE248, 0xDCD2, 0xD8C8, 0xD77E, 0xDB9D, 0xE441,\n    0xED71, 0xF333, 0xEFC1, 0xE7CA, 0xDF6C, 0xD9F0, 0xDB31, 0xDEB4,\n    0xE27B, 0xE488, 0xE326, 0xDFE1, 0xDD9B, 0xDDC5, 0xDEEF, 0xDFA4,\n    0xDF6E, 0xDEED, 0xDE53, 0xDDD1, 0xDD9B, 0xFFFC, 0xFFFC, 0xFFFC,\n    0xFFFC, 0xFFFC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,\n    0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,\n    0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,\n    0xFFFD, 0xFFFD, 0xFFFD, 0x72CD, 0x74EB, 0x7A14, 0x8084, 0x866D,\n    0x8A09, 0x8947, 0x856E, 0x81BE, 0x7EC7, 0x7D65, 0x7EE6, 0x817C,\n    0x840F, 0x858E, 0x855C, 0x8421, 0x82B2, 0x81E3, 0x8252, 0x8359,\n    0x83ED, 0x83ED, 0x83ED, 0x83ED, 0x83ED, 0x83ED, 0x83ED, 0x83ED,\n    0x83ED, 0x0000,\n};\n\n// 0x0600E26C\nstatic const u16 koopa_seg6_animindex_0600E26C[] = {\n    0x0001, 0x0000, 0x001E, 0x0001, 0x0001, 0x001F, 0x0001, 0x0000, 0x0001, 0x0020, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x001E, 0x0225, 0x001E, 0x0243,\n    0x001E, 0x01CB, 0x001E, 0x01E9, 0x001E, 0x0207,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01CA,\n    0x001E, 0x003F, 0x001E, 0x005D, 0x001E, 0x007B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0021,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01C9,\n    0x001E, 0x00B7, 0x001E, 0x00D5, 0x001E, 0x00F3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0099,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01C8,\n    0x001E, 0x0112, 0x001E, 0x0130, 0x001E, 0x014E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0111,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01C7,\n    0x001E, 0x016D, 0x001E, 0x018B, 0x001E, 0x01A9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x016C,\n};\n\n// 0x0600E32C\nstatic const struct Animation koopa_seg6_anim_0600E32C = {\n    0,\n    0,\n    0,\n    0,\n    0x1E,\n    ANIMINDEX_NUMPARTS(koopa_seg6_animindex_0600E26C),\n    koopa_seg6_animvalue_0600DDA8,\n    koopa_seg6_animindex_0600E26C,\n    0,\n};\n"
  },
  {
    "path": "actors/koopa/anims/anim_0600E928.inc.c",
    "content": "// 0x0600E344\nstatic const s16 koopa_seg6_animvalue_0600E344[] = {\n    0x0000, 0x0046, 0x0056, 0x0066, 0x0090, 0x0085, 0x0087, 0x007D,\n    0x0077, 0x0079, 0x007E, 0x0083, 0x0086, 0x0087, 0x0088, 0x0088,\n    0x0088, 0x0088, 0x0088, 0x0088, 0x0088, 0x0088, 0xFFF3, 0xFFFE,\n    0x000D, 0x001C, 0x0027, 0x002E, 0x0033, 0x0037, 0x003A, 0x003C,\n    0x003C, 0x0038, 0x0031, 0x0027, 0x001B, 0x000F, 0x0004, 0xFFFB,\n    0xFFF5, 0xFFF3, 0xFFF3, 0x3FFF, 0x0000, 0x00F5, 0x0242, 0x03A4,\n    0x04D8, 0x059C, 0x0586, 0x04B2, 0x03AD, 0x0262, 0x00E4, 0x0000,\n    0xFFBF, 0xFFA0, 0xFF9C, 0xFFAB, 0xFFC4, 0xFFE0, 0xFFF7, 0x0000,\n    0x0000, 0x0000, 0x00E3, 0x01FC, 0x0341, 0x04A9, 0x062B, 0x0872,\n    0x0B12, 0x0C5B, 0x0B1E, 0x088B, 0x0684, 0x0560, 0x043C, 0x0323,\n    0x0222, 0x0145, 0x0098, 0x0028, 0x0000, 0x0000, 0x42D1, 0x386B,\n    0x29F0, 0x19DB, 0x0AA9, 0xFED5, 0xF900, 0xF7EB, 0xF841, 0xF9AA,\n    0xFC7E, 0xFE6B, 0xFF06, 0xFF75, 0xFFBF, 0xFFEA, 0xFFFF, 0x0004,\n    0x0002, 0x0000, 0x0000, 0xF2D6, 0xF313, 0xF3A2, 0xF44C, 0xF4D5,\n    0xF505, 0xF4CD, 0xF457, 0xF3BE, 0xF31C, 0xF28D, 0xF22C, 0xF1F1,\n    0xF1C1, 0xF19C, 0xF180, 0xF16C, 0xF160, 0xF159, 0xF157, 0xF157,\n    0x06B3, 0x055B, 0x0216, 0xFE09, 0xFA55, 0xF81F, 0xF788, 0xF7C0,\n    0xF880, 0xF982, 0xFA80, 0xFB32, 0xFBB3, 0xFC44, 0xFCDB, 0xFD6D,\n    0xFDF1, 0xFE5B, 0xFEA3, 0xFEBD, 0xFEBD, 0xD71C, 0xD28B, 0xC75D,\n    0xB956, 0xAC3E, 0xA3D8, 0xA077, 0x9F6D, 0xA003, 0xA181, 0xA32F,\n    0xA457, 0xA539, 0xA677, 0xA7EC, 0xA972, 0xAAE3, 0xAC1A, 0xACF0,\n    0xAD3F, 0xAD3F, 0x0000, 0x0015, 0x003F, 0x005F, 0x0055, 0x0000,\n    0xFEB2, 0xFCD0, 0xFBDA, 0xFCD8, 0xFEC2, 0x0000, 0x0049, 0x006C,\n    0x0071, 0x0060, 0x0043, 0x0024, 0x000A, 0x0000, 0x0000, 0x0000,\n    0x0028, 0x007A, 0x00B8, 0x00A3, 0x0000, 0xFD7C, 0xF9DC, 0xF803,\n    0xF9EC, 0xFD9B, 0x0000, 0x008E, 0x00D1, 0x00D9, 0x00B9, 0x0082,\n    0x0045, 0x0014, 0x0000, 0x0000, 0x34F7, 0x2C99, 0x20A3, 0x132F,\n    0x0659, 0xFC3D, 0xF6EB, 0xF542, 0xF485, 0xF3E9, 0xF43A, 0xF51B,\n    0xF65F, 0xF7FB, 0xF9C6, 0xFB99, 0xFD4A, 0xFEB1, 0xFFA6, 0x0000,\n    0x0000, 0x0C43, 0x0C5B, 0x0C9A, 0x0CF3, 0x0D57, 0x0DB9, 0x0E20,\n    0x0E94, 0x0F0B, 0x0F7A, 0x0FD7, 0x1017, 0x103C, 0x1052, 0x105C,\n    0x105E, 0x1059, 0x1052, 0x104C, 0x1049, 0x1049, 0xF519, 0xF6D4,\n    0xFB03, 0x0021, 0x04AD, 0x0724, 0x073C, 0x0609, 0x0412, 0x01DC,\n    0xFFEF, 0xFECF, 0xFE69, 0xFE45, 0xFE51, 0xFE7F, 0xFEBE, 0xFEFF,\n    0xFF31, 0xFF46, 0xFF46, 0xDCEE, 0xD7D4, 0xCB65, 0xBBF1, 0xADC8,\n    0xA53A, 0xA2E5, 0xA3BD, 0xA692, 0xAA37, 0xAD7D, 0xAF36, 0xAF8B,\n    0xAF82, 0xAF34, 0xAEBA, 0xAE2F, 0xADAD, 0xAD4B, 0xAD25, 0xAD25,\n    0x0000, 0x01D2, 0x03A4, 0x01FB, 0x0000, 0xFF97, 0xFF8A, 0xFFA6,\n    0xFFBA, 0xFFCB, 0xFFEB, 0x0000, 0x0004, 0x0007, 0x0007, 0x0006,\n    0x0004, 0x0002, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFC8, 0xFF90,\n    0xFFC5, 0x0000, 0x0003, 0xFFF8, 0xFFEA, 0xFFE3, 0xFFEA, 0xFFF8,\n    0x0000, 0x0002, 0x0003, 0x0003, 0x0002, 0x0001, 0x0001, 0x0000,\n    0x0000, 0x0000, 0x0132, 0xF458, 0xE231, 0xDB22, 0xD6D4, 0xD0C4,\n    0xCA26, 0xC519, 0xC3BC, 0xCA20, 0xD5D0, 0xDF23, 0xE4E1, 0xEABF,\n    0xF076, 0xF5C1, 0xFA5A, 0xFDF9, 0x0058, 0x0132, 0x0132, 0x6ACC,\n    0x6376, 0x590F, 0x4D11, 0x40F4, 0x31C8, 0x2185, 0x1902, 0x1C0F,\n    0x252D, 0x2F3D, 0x3521, 0x369C, 0x3709, 0x36AA, 0x35C4, 0x349A,\n    0x3372, 0x328E, 0x3233, 0x3233, 0x190E, 0x1462, 0x0DDD, 0x0756,\n    0x02A6, 0x016B, 0x025D, 0x02F9, 0x01E9, 0x0045, 0xFF39, 0xFFED,\n    0x0295, 0x0651, 0x0AB0, 0x0F41, 0x1393, 0x1735, 0x19B5, 0x1AA4,\n    0x1AA4, 0xD309, 0xC03D, 0xA4F1, 0x8A4D, 0x7974, 0x7BB2, 0x89F5,\n    0x94DC, 0x96EE, 0x9662, 0x956B, 0x963B, 0x9949, 0x9D4E, 0xA1DF,\n    0xA68E, 0xAAEF, 0xAE96, 0xB117, 0xB205, 0xB205, 0x0000, 0x0009,\n    0xFE23, 0xF599, 0xF082, 0xF66B, 0xFFE4, 0x099D, 0x1049, 0x1254,\n    0x10E7, 0x0CC7, 0x0679, 0xFE81, 0xF5A3, 0xECA6, 0xE44F, 0xDD66,\n    0xD8AF, 0xD6F1, 0xD6F1, 0x0000, 0xFEF5, 0xFF86, 0x06A3, 0x0CE2,\n    0x0D45, 0x0C10, 0x0A23, 0x085E, 0x063E, 0x03E0, 0x0317, 0x0412,\n    0x05A5, 0x0798, 0x09B1, 0x0BB5, 0x0D6E, 0x0EA0, 0x0F12, 0x0F12,\n    0x0132, 0xEE3E, 0xD7BA, 0xDC61, 0xE4C0, 0xE2C3, 0xDE33, 0xDA26,\n    0xD9B1, 0xE0EC, 0xECB7, 0xF551, 0xF99B, 0xFD94, 0x0126, 0x043F,\n    0x06CB, 0x08B6, 0x09EB, 0x0A56, 0x0A56, 0x209F, 0x23F2, 0x28E1,\n    0x2B52, 0x2816, 0x21C7, 0x1D1C, 0x1F55, 0x3171, 0x4254, 0x491A,\n    0x4DFE, 0x51D7, 0x5579, 0x59BD, 0x5F76, 0x7179, 0xFD1D, 0xF4CD,\n    0xD27B, 0xD27B, 0x90DB, 0x9107, 0x91C1, 0x925B, 0x9225, 0x9019,\n    0x8D04, 0x8AFC, 0x8BDD, 0x8E16, 0x9063, 0x9306, 0x9539, 0x9635,\n    0x9345, 0x8ECE, 0x8D63, 0xF6C0, 0xFBB3, 0x027B, 0x027B, 0x50F2,\n    0x3BE2, 0x1E18, 0x09AD, 0x039B, 0x03C8, 0x061C, 0x06E6, 0x0808,\n    0x0971, 0x0ADF, 0x0C48, 0x0C90, 0x0BF6, 0x0A3C, 0x0587, 0xF14E,\n    0x69E2, 0x6AA7, 0x69D3, 0x69D3, 0xA205, 0xA205, 0xA205, 0xA205,\n    0xFFE2, 0xFFE1, 0xFFE1, 0xFFE1, 0xFFE1, 0xFFE1, 0xFFE1, 0xFFE2,\n    0xFFE2, 0xFFE1, 0xFFE1, 0xFFE1, 0xFFE1, 0xFFE1, 0xFFE1, 0xFFE1,\n    0xFFE1, 0xFFE1, 0xFFE1, 0xFFE1, 0xFFE1, 0xFFFB, 0xFFFB, 0xFFFC,\n    0xFFFD, 0xFFFD, 0xFFFC, 0xFFFC, 0xFFFB, 0xFFFB, 0xFFFC, 0xFFFC,\n    0xFFFD, 0xFFFD, 0xFFFE, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xDD9B, 0xDDC5, 0xDEEF, 0xDFA4, 0xDF47, 0xDE76,\n    0xDDA0, 0xDD33, 0xDD9B, 0xDED2, 0xE076, 0xE268, 0xE48D, 0xE6C6,\n    0xE8F8, 0xEB04, 0xECCF, 0xEE3A, 0xEF2A, 0xEF80, 0xEF80, 0xFFFD,\n    0xFFFD, 0xFFFD, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,\n    0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,\n    0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0x83ED, 0x86F3, 0x8AF2, 0x8E97,\n    0x908E, 0x9105, 0x910D, 0x90AA, 0x8FDF, 0x8EAF, 0x8D1D, 0x8B2D,\n    0x8863, 0x848B, 0x8016, 0x7B71, 0x7712, 0x7368, 0x70E3, 0x6FF3,\n    0x6FF3, 0x0000,\n};\n\n// 0x0600E868\nstatic const u16 koopa_seg6_animindex_0600E868[] = {\n    0x0001, 0x0000, 0x0015, 0x0001, 0x0015, 0x0016, 0x0001, 0x0000, 0x0001, 0x002B, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0015, 0x0267, 0x0015, 0x027C,\n    0x0015, 0x0228, 0x0015, 0x023D, 0x0015, 0x0252,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0227,\n    0x0015, 0x006B, 0x0015, 0x0080, 0x0015, 0x0095,\n    0x0015, 0x002C, 0x0015, 0x0041, 0x0015, 0x0056,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0226,\n    0x0015, 0x00E9, 0x0015, 0x00FE, 0x0015, 0x0113,\n    0x0015, 0x00AA, 0x0015, 0x00BF, 0x0015, 0x00D4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0225,\n    0x0015, 0x0167, 0x0015, 0x017C, 0x0015, 0x0191,\n    0x0015, 0x0128, 0x0015, 0x013D, 0x0015, 0x0152,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0224,\n    0x0015, 0x01E5, 0x0015, 0x01FA, 0x0015, 0x020F,\n    0x0015, 0x01A6, 0x0015, 0x01BB, 0x0015, 0x01D0,\n};\n\n// 0x0600E928\nstatic const struct Animation koopa_seg6_anim_0600E928 = {\n    0,\n    0,\n    0,\n    0,\n    0x15,\n    ANIMINDEX_NUMPARTS(koopa_seg6_animindex_0600E868),\n    koopa_seg6_animvalue_0600E344,\n    koopa_seg6_animindex_0600E868,\n    0,\n};\n"
  },
  {
    "path": "actors/koopa/anims/anim_0600F3EC.inc.c",
    "content": "// 0x0600E940\nstatic const s16 koopa_seg6_animvalue_0600E940[] = {\n    0x0000, 0x0088, 0x0088, 0x0088, 0x0088, 0x0088, 0x0088, 0x0088,\n    0x0088, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0086,\n    0x0086, 0x0086, 0x0086, 0x0086, 0x0085, 0x0085, 0x0085, 0x0085,\n    0x0085, 0x0085, 0x0085, 0x0084, 0x0084, 0x0084, 0x0084, 0x0084,\n    0x0084, 0x0084, 0x0084, 0x0084, 0x0085, 0x0085, 0x0085, 0x0085,\n    0x0085, 0x0085, 0x0085, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086,\n    0x0087, 0x0087, 0x0087, 0x0087, 0x0087, 0x0088, 0x0088, 0x0088,\n    0x0088, 0x0088, 0x0088, 0x0088, 0x0088, 0xFFF3, 0xFFF3, 0xFFF3,\n    0xFFF3, 0xFFF3, 0xFFF3, 0xFFF4, 0xFFF4, 0xFFF4, 0xFFF5, 0xFFF5,\n    0xFFF6, 0xFFF6, 0xFFF7, 0xFFF7, 0xFFF8, 0xFFF9, 0xFFF9, 0xFFFA,\n    0xFFFA, 0xFFFB, 0xFFFB, 0xFFFB, 0xFFFC, 0xFFFC, 0xFFFD, 0xFFFD,\n    0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,\n    0xFFFD, 0xFFFC, 0xFFFC, 0xFFFB, 0xFFFB, 0xFFFA, 0xFFFA, 0xFFF9,\n    0xFFF9, 0xFFF8, 0xFFF8, 0xFFF7, 0xFFF7, 0xFFF6, 0xFFF6, 0xFFF5,\n    0xFFF5, 0xFFF4, 0xFFF4, 0xFFF3, 0xFFF3, 0xFFF3, 0xFFF3, 0xFFF3,\n    0xFFF3, 0x3FFF, 0xF157, 0xF157, 0xF157, 0xF157, 0xF157, 0xF157,\n    0xF157, 0xF157, 0xF157, 0xF157, 0xF157, 0xF157, 0xF156, 0xF156,\n    0xF156, 0xF156, 0xF156, 0xF156, 0xF156, 0xF156, 0xF156, 0xF156,\n    0xF156, 0xF156, 0xF156, 0xF156, 0xF156, 0xF156, 0xF156, 0xF156,\n    0xF156, 0xF156, 0xF156, 0xF156, 0xF156, 0xF156, 0xF156, 0xF156,\n    0xF156, 0xF156, 0xF156, 0xF156, 0xF156, 0xF156, 0xF156, 0xF156,\n    0xF156, 0xF156, 0xF156, 0xF157, 0xF157, 0xF157, 0xF157, 0xF157,\n    0xF157, 0xF157, 0xF157, 0xF157, 0xF157, 0xF157, 0xFEBD, 0xFEBD,\n    0xFEBD, 0xFEBD, 0xFEBD, 0xFEBD, 0xFEBD, 0xFEBD, 0xFEBD, 0xFEBD,\n    0xFEBD, 0xFEBD, 0xFEBD, 0xFEBD, 0xFEBD, 0xFEBD, 0xFEBE, 0xFEBE,\n    0xFEBE, 0xFEBE, 0xFEBE, 0xFEBE, 0xFEBE, 0xFEBE, 0xFEBE, 0xFEBE,\n    0xFEBE, 0xFEBE, 0xFEBE, 0xFEBE, 0xFEBE, 0xFEBE, 0xFEBE, 0xFEBE,\n    0xFEBE, 0xFEBE, 0xFEBE, 0xFEBE, 0xFEBE, 0xFEBE, 0xFEBE, 0xFEBE,\n    0xFEBE, 0xFEBE, 0xFEBD, 0xFEBD, 0xFEBD, 0xFEBD, 0xFEBD, 0xFEBD,\n    0xFEBD, 0xFEBD, 0xFEBD, 0xFEBD, 0xFEBD, 0xFEBD, 0xFEBD, 0xFEBD,\n    0xFEBD, 0xFEBD, 0xAD3F, 0xAD39, 0xAD26, 0xAD08, 0xACDF, 0xACAD,\n    0xAC72, 0xAC2F, 0xABE5, 0xAB95, 0xAB3F, 0xAAE5, 0xAA88, 0xAA28,\n    0xA9C6, 0xA963, 0xA901, 0xA89F, 0xA83F, 0xA7E2, 0xA788, 0xA732,\n    0xA6E2, 0xA698, 0xA655, 0xA61A, 0xA5E7, 0xA5BF, 0xA5A1, 0xA58E,\n    0xA587, 0xA58E, 0xA5A2, 0xA5C3, 0xA5EE, 0xA623, 0xA662, 0xA6A9,\n    0xA6F8, 0xA74C, 0xA7A6, 0xA805, 0xA866, 0xA8CB, 0xA930, 0xA996,\n    0xA9FC, 0xAA60, 0xAAC2, 0xAB21, 0xAB7B, 0xABCF, 0xAC1E, 0xAC65,\n    0xACA3, 0xACD9, 0xAD04, 0xAD24, 0xAD38, 0xAD3F, 0x1049, 0x1049,\n    0x1049, 0x1049, 0x1049, 0x1049, 0x1049, 0x1049, 0x1049, 0x1049,\n    0x1049, 0x1049, 0x1049, 0x1049, 0x1049, 0x1049, 0x1049, 0x1049,\n    0x1048, 0x1048, 0x1048, 0x1048, 0x1048, 0x1048, 0x1048, 0x1048,\n    0x1048, 0x1048, 0x1048, 0x1048, 0x1048, 0x1048, 0x1048, 0x1048,\n    0x1048, 0x1048, 0x1048, 0x1048, 0x1048, 0x1048, 0x1048, 0x1048,\n    0x1048, 0x1049, 0x1049, 0x1049, 0x1049, 0x1049, 0x1049, 0x1049,\n    0x1049, 0x1049, 0x1049, 0x1049, 0x1049, 0x1049, 0x1049, 0x1049,\n    0x1049, 0x1049, 0xFF46, 0xFF46, 0xFF46, 0xFF46, 0xFF46, 0xFF46,\n    0xFF46, 0xFF46, 0xFF46, 0xFF46, 0xFF46, 0xFF46, 0xFF46, 0xFF46,\n    0xFF46, 0xFF46, 0xFF46, 0xFF46, 0xFF46, 0xFF47, 0xFF47, 0xFF47,\n    0xFF47, 0xFF47, 0xFF47, 0xFF47, 0xFF47, 0xFF47, 0xFF47, 0xFF47,\n    0xFF47, 0xFF47, 0xFF47, 0xFF47, 0xFF47, 0xFF47, 0xFF47, 0xFF47,\n    0xFF47, 0xFF47, 0xFF47, 0xFF47, 0xFF46, 0xFF46, 0xFF46, 0xFF46,\n    0xFF46, 0xFF46, 0xFF46, 0xFF46, 0xFF46, 0xFF46, 0xFF46, 0xFF46,\n    0xFF46, 0xFF46, 0xFF46, 0xFF46, 0xFF46, 0xFF46, 0xAD25, 0xAD1E,\n    0xAD0B, 0xACEB, 0xACC0, 0xAC8B, 0xAC4D, 0xAC06, 0xABB8, 0xAB64,\n    0xAB0A, 0xAAAB, 0xAA49, 0xA9E4, 0xA97D, 0xA915, 0xA8AD, 0xA846,\n    0xA7E1, 0xA77F, 0xA720, 0xA6C6, 0xA672, 0xA624, 0xA5DD, 0xA59F,\n    0xA56A, 0xA53F, 0xA520, 0xA50C, 0xA505, 0xA50C, 0xA521, 0xA543,\n    0xA571, 0xA5A9, 0xA5EB, 0xA636, 0xA689, 0xA6E2, 0xA740, 0xA7A4,\n    0xA80B, 0xA874, 0xA8DF, 0xA94B, 0xA9B6, 0xAA1F, 0xAA86, 0xAAEA,\n    0xAB48, 0xABA2, 0xABF4, 0xAC3F, 0xAC81, 0xACB9, 0xACE7, 0xAD09,\n    0xAD1E, 0xAD25, 0x0000, 0x0009, 0x0026, 0x0054, 0x0092, 0x00E0,\n    0x013A, 0x01A1, 0x0212, 0x028D, 0x0310, 0x0399, 0x0428, 0x04BB,\n    0x0551, 0x05E8, 0x067F, 0x0715, 0x07A8, 0x0836, 0x08C0, 0x0943,\n    0x09BE, 0x0A2F, 0x0A96, 0x0AF0, 0x0B3D, 0x0B7C, 0x0BAA, 0x0BC6,\n    0x0BD0, 0x0BC6, 0x0BA7, 0x0B76, 0x0B33, 0x0AE1, 0x0A81, 0x0A15,\n    0x099D, 0x091B, 0x0891, 0x0801, 0x076B, 0x06D2, 0x0636, 0x059A,\n    0x04FE, 0x0465, 0x03CF, 0x033E, 0x02B5, 0x0233, 0x01BB, 0x014E,\n    0x00EE, 0x009C, 0x005A, 0x0029, 0x000A, 0x0000, 0x0132, 0x0120,\n    0x00EA, 0x0094, 0x0021, 0xFF92, 0xFEE9, 0xFE2A, 0xFD57, 0xFC73,\n    0xFB7F, 0xFA7F, 0xF975, 0xF863, 0xF74C, 0xF633, 0xF51A, 0xF403,\n    0xF2F1, 0xF1E7, 0xF0E7, 0xEFF3, 0xEF0F, 0xEE3C, 0xED7D, 0xECD4,\n    0xEC45, 0xEBD1, 0xEB7B, 0xEB45, 0xEB33, 0xEB47, 0xEB80, 0xEBDB,\n    0xEC57, 0xECEF, 0xEDA2, 0xEE6D, 0xEF4C, 0xF03E, 0xF13E, 0xF24B,\n    0xF362, 0xF480, 0xF5A1, 0xF6C5, 0xF7E6, 0xF904, 0xFA1B, 0xFB28,\n    0xFC28, 0xFD1A, 0xFDF9, 0xFEC4, 0xFF77, 0x000E, 0x008A, 0x00E6,\n    0x011F, 0x0132, 0x2D39, 0x2D35, 0x2D28, 0x2D15, 0x2CFA, 0x2CDA,\n    0x2CB3, 0x2C87, 0x2C57, 0x2C23, 0x2BEB, 0x2BB1, 0x2B74, 0x2B35,\n    0x2AF6, 0x2AB5, 0x2A75, 0x2A35, 0x29F7, 0x29BA, 0x297F, 0x2948,\n    0x2914, 0x28E3, 0x28B8, 0x2891, 0x2870, 0x2856, 0x2842, 0x2836,\n    0x2832, 0x2836, 0x2843, 0x2858, 0x2874, 0x2897, 0x28C0, 0x28EF,\n    0x2922, 0x2959, 0x2993, 0x29D1, 0x2A11, 0x2A52, 0x2A94, 0x2AD7,\n    0x2B19, 0x2B5A, 0x2B9A, 0x2BD7, 0x2C12, 0x2C49, 0x2C7C, 0x2CAA,\n    0x2CD3, 0x2CF6, 0x2D12, 0x2D27, 0x2D34, 0x2D39, 0x1AE3, 0x1ADB,\n    0x1AC5, 0x1AA0, 0x1A6E, 0x1A30, 0x19E8, 0x1996, 0x193B, 0x18D9,\n    0x1870, 0x1802, 0x1790, 0x171A, 0x16A2, 0x162A, 0x15B1, 0x1539,\n    0x14C4, 0x1451, 0x13E3, 0x137A, 0x1318, 0x12BE, 0x126C, 0x1223,\n    0x11E5, 0x11B4, 0x118F, 0x1178, 0x1170, 0x1178, 0x1191, 0x11B8,\n    0x11ED, 0x122F, 0x127C, 0x12D3, 0x1333, 0x139A, 0x1409, 0x147C,\n    0x14F4, 0x156F, 0x15EB, 0x1668, 0x16E5, 0x175F, 0x17D7, 0x184B,\n    0x18B9, 0x1921, 0x1980, 0x19D7, 0x1A24, 0x1A66, 0x1A9B, 0x1AC2,\n    0x1ADB, 0x1AE3, 0xB15D, 0xB15A, 0xB153, 0xB148, 0xB138, 0xB125,\n    0xB10E, 0xB0F5, 0xB0D9, 0xB0BA, 0xB099, 0xB077, 0xB053, 0xB02F,\n    0xB009, 0xAFE4, 0xAFBE, 0xAF99, 0xAF74, 0xAF51, 0xAF2E, 0xAF0E,\n    0xAEEF, 0xAED3, 0xAEB9, 0xAEA3, 0xAE8F, 0xAE80, 0xAE74, 0xAE6D,\n    0xAE6B, 0xAE6D, 0xAE75, 0xAE81, 0xAE92, 0xAEA6, 0xAEBE, 0xAED9,\n    0xAEF7, 0xAF18, 0xAF3A, 0xAF5E, 0xAF83, 0xAFA9, 0xAFD0, 0xAFF7,\n    0xB01E, 0xB044, 0xB06A, 0xB08E, 0xB0B0, 0xB0D0, 0xB0EE, 0xB109,\n    0xB121, 0xB136, 0xB146, 0xB153, 0xB15A, 0xB15D, 0xD6F1, 0x0F12,\n    0x0A56, 0xD27B, 0xD28F, 0xD2C6, 0xD31E, 0xD391, 0xD41B, 0xD4B8,\n    0xD565, 0xD61B, 0xD6D9, 0xD798, 0xD855, 0xD90C, 0xD9B8, 0xDA56,\n    0xDAE0, 0xDB53, 0xDBAA, 0xDBE2, 0xDBF5, 0xDBD9, 0xDB89, 0xDB0C,\n    0xDA6A, 0xD9AB, 0xD8D7, 0xD7F4, 0xD70A, 0xD621, 0xD540, 0xD46F,\n    0xD3B6, 0xD31B, 0xD2A7, 0xD260, 0xD24F, 0xD27B, 0xD318, 0xD43F,\n    0xD5D5, 0xD7BB, 0xD9D6, 0xDC07, 0xDE32, 0xE039, 0xE200, 0xE369,\n    0xE456, 0xE4AC, 0xE440, 0xE316, 0xE15A, 0xDF35, 0xDCD0, 0xDA57,\n    0xD7F3, 0xD5CD, 0xD411, 0xD2E8, 0xD27B, 0x027B, 0x029A, 0x02F2,\n    0x037D, 0x0435, 0x0511, 0x060C, 0x071F, 0x0842, 0x0970, 0x0AA1,\n    0x0BCF, 0x0CF3, 0x0E05, 0x0F00, 0x0FDD, 0x1094, 0x111F, 0x1178,\n    0x1197, 0x1181, 0x1141, 0x10DA, 0x1050, 0x0FA5, 0x0EDE, 0x0DFC,\n    0x0D05, 0x0BFA, 0x0ADF, 0x09B8, 0x0887, 0x0751, 0x0617, 0x04DE,\n    0x03A9, 0x027B, 0x0122, 0xFF7D, 0xFD9C, 0xFB96, 0xF980, 0xF76D,\n    0xF574, 0xF3A7, 0xF21E, 0xF0EB, 0xF023, 0xEFDC, 0xF04B, 0xF17C,\n    0xF342, 0xF575, 0xF7E8, 0xFA70, 0xFCE3, 0xFF15, 0x00DB, 0x020B,\n    0x027B, 0x69D3, 0x69CD, 0x69BB, 0x699E, 0x6978, 0x694A, 0x6916,\n    0x68DD, 0x68A1, 0x6862, 0x6823, 0x67E4, 0x67A8, 0x676F, 0x673B,\n    0x670D, 0x66E7, 0x66CA, 0x66B8, 0x66B2, 0x66BA, 0x66D1, 0x66F6,\n    0x6726, 0x675F, 0x679E, 0x67E3, 0x682A, 0x6873, 0x68B9, 0x68FD,\n    0x693A, 0x6970, 0x699D, 0x69BE, 0x69D0, 0x69D3, 0x69BC, 0x6984,\n    0x6933, 0x68CF, 0x685E, 0x67E8, 0x6772, 0x6703, 0x66A1, 0x6653,\n    0x6620, 0x660D, 0x6624, 0x6662, 0x66BE, 0x6730, 0x67AF, 0x6832,\n    0x68B1, 0x6923, 0x697F, 0x69BD, 0x69D3, 0xA205, 0xA205, 0xA205,\n    0xA205, 0xFFE1, 0xFFBF, 0xFF5C, 0xFEBF, 0xFDEF, 0xFCF1, 0xFBCD,\n    0xFA89, 0xF92B, 0xF7B9, 0xF63B, 0xF4B7, 0xF332, 0xF1B5, 0xF044,\n    0xEEE7, 0xEDA3, 0xEC80, 0xEB84, 0xEAB6, 0xEA1B, 0xE9BA, 0xE99A,\n    0xE9C1, 0xEA3C, 0xEB0B, 0xEC26, 0xED86, 0xEF20, 0xF0EE, 0xF2E6,\n    0xF4FF, 0xF732, 0xF975, 0xFBC0, 0xFE0B, 0x004C, 0x027D, 0x0493,\n    0x0687, 0x084F, 0x09E4, 0x0B3D, 0x0C51, 0x0D18, 0x0D85, 0x0D96,\n    0x0D57, 0x0CD1, 0x0C0D, 0x0B17, 0x09F8, 0x08B9, 0x0765, 0x0606,\n    0x04A6, 0x034F, 0x020A, 0x00E2, 0xFFE1, 0x0000, 0x001E, 0x0073,\n    0x00FA, 0x01AD, 0x0288, 0x0383, 0x049A, 0x05C8, 0x0706, 0x084F,\n    0x099D, 0x0AEB, 0x0C33, 0x0D70, 0x0E9C, 0x0FB1, 0x10AA, 0x1182,\n    0x1233, 0x12B6, 0x1308, 0x1321, 0x12FD, 0x1291, 0x11DB, 0x10E2,\n    0x0FAF, 0x0E48, 0x0CB4, 0x0AFD, 0x0928, 0x073D, 0x0544, 0x0344,\n    0x0144, 0xFF4E, 0xFD66, 0xFB95, 0xF9E2, 0xF855, 0xF6F5, 0xF5CA,\n    0xF4DB, 0xF430, 0xF3D4, 0xF3C9, 0xF405, 0xF480, 0xF531, 0xF60E,\n    0xF710, 0xF82C, 0xF95B, 0xFA93, 0xFBCC, 0xFCFC, 0xFE1B, 0xFF1F,\n    0x0000, 0xEF80, 0xEF79, 0xEF66, 0xEF46, 0xEF1D, 0xEEEA, 0xEEAE,\n    0xEE6C, 0xEE24, 0xEDD6, 0xED86, 0xED32, 0xECDD, 0xEC88, 0xEC34,\n    0xEBE2, 0xEB93, 0xEB48, 0xEB03, 0xEAC4, 0xEA8D, 0xEA5E, 0xEA3A,\n    0xEA21, 0xEA11, 0xEA08, 0xEA05, 0xEA08, 0xEA11, 0xEA1F, 0xEA31,\n    0xEA48, 0xEA62, 0xEA80, 0xEAA0, 0xEAC4, 0xEAE9, 0xEB10, 0xEB38,\n    0xEB62, 0xEB8B, 0xEBB5, 0xEBDE, 0xEC06, 0xEC2D, 0xEC5A, 0xEC93,\n    0xECD5, 0xED1F, 0xED6E, 0xEDBF, 0xEE10, 0xEE5F, 0xEEA9, 0xEEEC,\n    0xEF26, 0xEF54, 0xEF74, 0xEF83, 0xEF80, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0002, 0x0002,\n    0x0002, 0x0003, 0x0003, 0x0004, 0x0004, 0x0005, 0x0005, 0x0006,\n    0x0006, 0x0007, 0x0007, 0x0007, 0x0008, 0x0008, 0x0008, 0x0009,\n    0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009,\n    0x0008, 0x0008, 0x0008, 0x0007, 0x0007, 0x0006, 0x0006, 0x0005,\n    0x0005, 0x0005, 0x0004, 0x0004, 0x0003, 0x0003, 0x0002, 0x0002,\n    0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xFFFC, 0x6FF3, 0x6FFA, 0x700F, 0x7030, 0x705D, 0x7095,\n    0x70D7, 0x7121, 0x7173, 0x71CC, 0x722B, 0x728E, 0x72F6, 0x7360,\n    0x73CD, 0x743A, 0x74A7, 0x7514, 0x757E, 0x75E6, 0x7649, 0x76A8,\n    0x7701, 0x7753, 0x779D, 0x77DF, 0x7817, 0x7844, 0x7865, 0x787A,\n    0x7881, 0x787A, 0x7863, 0x7840, 0x7810, 0x77D4, 0x778F, 0x7740,\n    0x76E9, 0x768B, 0x7627, 0x75BF, 0x7552, 0x74E3, 0x7473, 0x7401,\n    0x7391, 0x7322, 0x72B5, 0x724D, 0x71E9, 0x718B, 0x7134, 0x70E5,\n    0x70A0, 0x7064, 0x7034, 0x7011, 0x6FFB, 0x6FF3,\n};\n\n// 0x0600F32C\nstatic const u16 koopa_seg6_animindex_0600F32C[] = {\n    0x0001, 0x0000, 0x003C, 0x0001, 0x003C, 0x003D, 0x0001, 0x0000, 0x0001, 0x0079, 0x0001, 0x0000,\n    0x003C, 0x047D, 0x0001, 0x04B9, 0x003C, 0x04BA,\n    0x003C, 0x03C9, 0x003C, 0x0405, 0x003C, 0x0441,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x03C8,\n    0x003C, 0x007A, 0x003C, 0x00B6, 0x003C, 0x00F2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x03C7,\n    0x003C, 0x012E, 0x003C, 0x016A, 0x003C, 0x01A6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x03C6,\n    0x003C, 0x025A, 0x003C, 0x0296, 0x003C, 0x02D2,\n    0x003C, 0x01E2, 0x0001, 0x0000, 0x003C, 0x021E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x03C5,\n    0x003C, 0x0311, 0x003C, 0x034D, 0x003C, 0x0389,\n    0x0001, 0x030E, 0x0001, 0x030F, 0x0001, 0x0310,\n};\n\n// 0x0600F3EC\nstatic const struct Animation koopa_seg6_anim_0600F3EC = {\n    0,\n    0,\n    0,\n    0,\n    0x3C,\n    ANIMINDEX_NUMPARTS(koopa_seg6_animindex_0600F32C),\n    koopa_seg6_animvalue_0600E940,\n    koopa_seg6_animindex_0600F32C,\n    0,\n};\n"
  },
  {
    "path": "actors/koopa/anims/anim_0600FB1C.inc.c",
    "content": "// 0x0600F404\nstatic const s16 koopa_seg6_animvalue_0600F404[] = {\n    0x0000, 0x0048, 0x004B, 0x0052, 0x005C, 0x0068, 0x0073, 0x007D,\n    0x0084, 0x0083, 0x0080, 0x007D, 0x007C, 0x007C, 0x007E, 0x0080,\n    0x0082, 0x0084, 0x0085, 0x0085, 0x0086, 0x0086, 0x0086, 0x0086,\n    0x0087, 0x0087, 0x0087, 0xFFF3, 0xFFF3, 0xFFF3, 0xFFF3, 0xFFF3,\n    0xFFF3, 0xFFF2, 0xFFF1, 0xFFEF, 0xFFEB, 0xFFE7, 0xFFE2, 0xFFE1,\n    0xFFE0, 0xFFE0, 0xFFDF, 0xFFDE, 0xFFDE, 0xFFDD, 0xFFDC, 0xFFDC,\n    0xFFDC, 0xFFDC, 0xFFDC, 0xFFDC, 0xFFDC, 0x3FFF, 0x0000, 0x002A,\n    0x0097, 0x012A, 0x01C7, 0x0253, 0x02B0, 0x02C2, 0x022E, 0x00FD,\n    0xFFB1, 0xFEC5, 0xFEBA, 0x000D, 0x0275, 0x0544, 0x07CB, 0x0A50,\n    0x0CBC, 0x0DD2, 0x0DD2, 0x0DD2, 0x0DD2, 0x0DD2, 0x0DD2, 0x0DD2,\n    0x0000, 0xFFC2, 0xFF18, 0xFE1D, 0xFCEA, 0xFB99, 0xFA44, 0xF904,\n    0xF7AF, 0xF628, 0xF4A0, 0xF348, 0xF252, 0xF1EB, 0xF1FC, 0xF24A,\n    0xF29D, 0xF31C, 0xF3C5, 0xF419, 0xF419, 0xF419, 0xF419, 0xF419,\n    0xF419, 0xF419, 0x2372, 0x2181, 0x1C6F, 0x1557, 0x0D58, 0x058F,\n    0xFF1A, 0xFB16, 0xFA9E, 0xFD12, 0x00F6, 0x04D0, 0x0721, 0x078E,\n    0x0700, 0x05DF, 0x0492, 0x026B, 0xFFBA, 0xFE67, 0xFE67, 0xFE67,\n    0xFE67, 0xFE67, 0xFE67, 0xFE67, 0xE45B, 0xE4E9, 0xE670, 0xE8C2,\n    0xEBAE, 0xEF03, 0xF291, 0xF628, 0xF997, 0xFCAD, 0xFF3C, 0x0110,\n    0x01FD, 0x0147, 0xFEBF, 0xFAFF, 0xF6A4, 0xF24B, 0xEE8F, 0xEC0E,\n    0xEAE2, 0xEA8E, 0xEACA, 0xEB4E, 0xEBD2, 0xEC0E, 0x051E, 0x053D,\n    0x0593, 0x0617, 0x06BE, 0x077F, 0x0851, 0x0929, 0x09FD, 0x0AC5,\n    0x0B76, 0x0C06, 0x0C6C, 0x0C93, 0x0C79, 0x0C33, 0x0BD3, 0x0B6D,\n    0x0B16, 0x0AE0, 0x0ACB, 0x0AC5, 0x0AC9, 0x0AD3, 0x0ADC, 0x0AE0,\n    0xD867, 0xD74F, 0xD443, 0xCFA0, 0xC9C3, 0xC309, 0xBBCD, 0xB46D,\n    0xAD45, 0xA6B1, 0xA10F, 0x9CBB, 0x9A10, 0x9A38, 0x9D6D, 0xA2AD,\n    0xA8F5, 0xAF43, 0xB494, 0xB7E5, 0xB8F8, 0xB89A, 0xB758, 0xB5C2,\n    0xB466, 0xB3D2, 0x0000, 0x001B, 0x0066, 0x00DA, 0x016D, 0x0218,\n    0x02D0, 0x038F, 0x04D9, 0x06BB, 0x087C, 0x0963, 0x08B4, 0x0562,\n    0xFFD9, 0xF99A, 0xF428, 0xEF39, 0xEAD2, 0xE8EA, 0xE8EA, 0xE8EA,\n    0xE8EA, 0xE8EA, 0xE8EA, 0xE8EA, 0x0000, 0x0063, 0x016C, 0x02E7,\n    0x04A1, 0x0667, 0x0806, 0x094C, 0x0A3F, 0x0B05, 0x0B97, 0x0BEE,\n    0x0C01, 0x0B9E, 0x0AC3, 0x09B4, 0x08B7, 0x079D, 0x0679, 0x05F3,\n    0x05F3, 0x05F3, 0x05F3, 0x05F3, 0x05F3, 0x05F3, 0x12BD, 0x1179,\n    0x0E2D, 0x0996, 0x0473, 0xFF84, 0xFB85, 0xF935, 0xF975, 0xFBDF,\n    0xFF4A, 0x028D, 0x0480, 0x04C2, 0x0405, 0x02BE, 0x0163, 0xFF65,\n    0xFCFC, 0xFBD1, 0xFBD1, 0xFBD1, 0xFBD1, 0xFBD1, 0xFBD1, 0xFBD1,\n    0x1398, 0x1329, 0x11F6, 0x1025, 0x0DDC, 0x0B42, 0x087D, 0x05B2,\n    0x030A, 0x00A8, 0xFEB6, 0xFD57, 0xFCB2, 0xFD61, 0xFF8D, 0x02B6,\n    0x065D, 0x0A00, 0x0D1F, 0x0F39, 0x1037, 0x107E, 0x104B, 0x0FDB,\n    0x0F6C, 0x0F39, 0xF519, 0xF513, 0xF502, 0xF4E8, 0xF4CA, 0xF4A9,\n    0xF489, 0xF46B, 0xF454, 0xF446, 0xF443, 0xF44F, 0xF46C, 0xF4B1,\n    0xF52A, 0xF5C2, 0xF668, 0xF709, 0xF794, 0xF7F4, 0xF824, 0xF832,\n    0xF828, 0xF813, 0xF7FE, 0xF7F4, 0xDCEE, 0xDBCA, 0xD89E, 0xD3CB,\n    0xCDB2, 0xC6B4, 0xBF30, 0xB789, 0xB01D, 0xA950, 0xA380, 0x9F0F,\n    0x9C5D, 0x9CA0, 0xA019, 0xA5BB, 0xAC76, 0xB33E, 0xB905, 0xBCBC,\n    0xBE34, 0xBE48, 0xBD77, 0xBC43, 0xBB2C, 0xBAB2, 0x0000, 0x0286,\n    0x04F1, 0x0435, 0x02C1, 0x0106, 0xFF77, 0xFE84, 0xFE5A, 0xFEAF,\n    0xFF3E, 0xFFC5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0007, 0x005F, 0x010F, 0x01D5, 0x02A5, 0x0373, 0x0431,\n    0x04F6, 0x05CC, 0x068F, 0x071E, 0x0755, 0x0755, 0x0755, 0x0755,\n    0x0755, 0x0755, 0x0755, 0x0755, 0x0755, 0x0755, 0x0755, 0x0755,\n    0x0755, 0x0755, 0x0132, 0xFA6F, 0xF170, 0xED4B, 0xE9CC, 0xE6FB,\n    0xE4DC, 0xE375, 0xE32E, 0xE402, 0xE557, 0xE694, 0xE720, 0xE720,\n    0xE720, 0xE720, 0xE720, 0xE720, 0xE720, 0xE720, 0xE720, 0xE720,\n    0xE720, 0xE720, 0xE720, 0xE720, 0x6ACC, 0x6284, 0x4EFD, 0x382F,\n    0x2611, 0x2939, 0x2CDB, 0x2FA3, 0x3055, 0x305F, 0x3034, 0x3048,\n    0x310C, 0x32B7, 0x34FA, 0x3787, 0x3A0E, 0x3C3F, 0x3DCA, 0x3E5F,\n    0x3E5F, 0x3E5F, 0x3E5F, 0x3E5F, 0x3E5F, 0x3E5F, 0x190E, 0x1BBE,\n    0x2160, 0x264F, 0x26E7, 0x0B16, 0x03F0, 0x022F, 0x037F, 0x06B1,\n    0x09F7, 0x0B87, 0x0994, 0x033A, 0xF9C6, 0xEEB2, 0xE37E, 0xD9A5,\n    0xD2A5, 0xCFFB, 0xCFFB, 0xCFFB, 0xCFFB, 0xCFFB, 0xCFFB, 0xCFFB,\n    0xD309, 0xC7CB, 0xAD83, 0x8F5A, 0x7875, 0x8572, 0x8BC7, 0x8F50,\n    0x8FC3, 0x8F17, 0x8E0C, 0x8D61, 0x8DD7, 0x8FAE, 0x9260, 0x9583,\n    0x98AC, 0x9B72, 0x9D6A, 0x9E2A, 0x9E2A, 0x9E2A, 0x9E2A, 0x9E2A,\n    0x9E2A, 0x9E2A, 0x0000, 0xFA28, 0xF488, 0xF623, 0xF963, 0xFD48,\n    0x00CF, 0x02F9, 0x0366, 0x02C0, 0x0198, 0x007E, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFF5F, 0xFE34, 0xFCEE,\n    0xFB76, 0xFA17, 0xF91E, 0xF8D9, 0xF9B5, 0xFB7F, 0xFD92, 0xFF49,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0132, 0xF593,\n    0xE74C, 0xE300, 0xE067, 0xDF00, 0xDE4B, 0xDDC7, 0xDDC8, 0xDEA3,\n    0xDFDB, 0xE0F3, 0xE16C, 0xE16C, 0xE16C, 0xE16C, 0xE16C, 0xE16C,\n    0xE16C, 0xE16C, 0xE16C, 0xE16C, 0xE16C, 0xE16C, 0xE16C, 0xE16C,\n    0x209F, 0x27E9, 0x3922, 0x4D4F, 0x5D78, 0x5BC2, 0x590D, 0x56C6,\n    0x5600, 0x55B8, 0x558F, 0x5528, 0x5424, 0x524C, 0x4FDC, 0x4D25,\n    0x4A7B, 0x482E, 0x4691, 0x45F5, 0x45F5, 0x45F5, 0x45F5, 0x45F5,\n    0x45F5, 0x45F5, 0x90DB, 0x9465, 0x9BFF, 0xA321, 0xA542, 0x8775,\n    0x8060, 0x7EE0, 0x7FEA, 0x82A6, 0x857E, 0x86E6, 0x854F, 0x7FF4,\n    0x77FD, 0x6EA8, 0x6536, 0x5CE8, 0x5701, 0x54C2, 0x54C2, 0x54C2,\n    0x54C2, 0x54C2, 0x54C2, 0x54C2, 0x50F2, 0x4609, 0x2C89, 0x0F47,\n    0xF91A, 0x05CF, 0x0D4B, 0x121F, 0x13D1, 0x14AA, 0x14E6, 0x14BE,\n    0x146C, 0x13D9, 0x12E3, 0x11B6, 0x107F, 0x0F6A, 0x0EA4, 0x0E58,\n    0x0E58, 0x0E58, 0x0E58, 0x0E58, 0x0E58, 0x0E58, 0xA205, 0xA205,\n    0xA205, 0xA205, 0xFFE6, 0xFFAC, 0xFF12, 0xFE33, 0xFD2A, 0xFC13,\n    0xFB0B, 0xFA2B, 0xF991, 0xF957, 0xFAE5, 0xFDE8, 0xFFE6, 0x0060,\n    0x008F, 0x0088, 0x005F, 0x0028, 0xFFF9, 0xFFE4, 0xFFE4, 0xFFE4,\n    0xFFE4, 0xFFE5, 0xFFE5, 0xFFE5, 0xFFF0, 0x0031, 0x00DD, 0x01CD,\n    0x02D9, 0x03DB, 0x04AC, 0x0526, 0x0520, 0x0475, 0xFFAF, 0xF7D2,\n    0xF371, 0xF3B2, 0xF518, 0xF742, 0xF9D0, 0xFC62, 0xFE96, 0x000C,\n    0x00B9, 0x00EA, 0x00C8, 0x007D, 0x0031, 0x000F, 0xD847, 0xD91B,\n    0xDB64, 0xDED9, 0xE32D, 0xE818, 0xED4C, 0xF281, 0xF76C, 0xFBC0,\n    0x0077, 0x052E, 0x0791, 0x0785, 0x06AD, 0x0550, 0x03B5, 0x0222,\n    0x00DF, 0x0033, 0x0046, 0x00E6, 0x01D2, 0x02CA, 0x038E, 0x03DE,\n    0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,\n    0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,\n    0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,\n    0xFFFD, 0xFFFD, 0x8ADA, 0x8AC1, 0x8A76, 0x89FC, 0x8952, 0x8879,\n    0x8774, 0x8642, 0x84E4, 0x835C, 0x81AB, 0x7FCE, 0x7DCD, 0x7B0B,\n    0x7739, 0x72C5, 0x6E1E, 0x69B4, 0x65F5, 0x6352, 0x620F, 0x61E9,\n    0x6279, 0x635C, 0x642E, 0x648B,\n};\n\n// 0x0600FA5C\nstatic const u16 koopa_seg6_animindex_0600FA5C[] = {\n    0x0001, 0x0000, 0x001A, 0x0001, 0x001A, 0x001B, 0x0001, 0x0000, 0x0001, 0x0035, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x001A, 0x02F8, 0x001A, 0x0312,\n    0x001A, 0x02AA, 0x001A, 0x02C4, 0x001A, 0x02DE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02A9,\n    0x001A, 0x0084, 0x001A, 0x009E, 0x001A, 0x00B8,\n    0x001A, 0x0036, 0x001A, 0x0050, 0x001A, 0x006A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02A8,\n    0x001A, 0x0120, 0x001A, 0x013A, 0x001A, 0x0154,\n    0x001A, 0x00D2, 0x001A, 0x00EC, 0x001A, 0x0106,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02A7,\n    0x001A, 0x01BC, 0x001A, 0x01D6, 0x001A, 0x01F0,\n    0x001A, 0x016E, 0x001A, 0x0188, 0x001A, 0x01A2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02A6,\n    0x001A, 0x0258, 0x001A, 0x0272, 0x001A, 0x028C,\n    0x001A, 0x020A, 0x001A, 0x0224, 0x001A, 0x023E,\n};\n\n// 0x0600FB1C\nstatic const struct Animation koopa_seg6_anim_0600FB1C = {\n    0,\n    0,\n    0,\n    0,\n    0x1A,\n    ANIMINDEX_NUMPARTS(koopa_seg6_animindex_0600FA5C),\n    koopa_seg6_animvalue_0600F404,\n    koopa_seg6_animindex_0600FA5C,\n    0,\n};\n"
  },
  {
    "path": "actors/koopa/anims/anim_06010258.inc.c",
    "content": "// 0x0600FB34\nstatic const s16 koopa_seg6_animvalue_0600FB34[] = {\n    0x0000, 0x0090, 0x008F, 0x008E, 0x008D, 0x008B, 0x0089, 0x0088,\n    0x0088, 0x0088, 0x0089, 0x008B, 0x008D, 0x008E, 0x0090, 0x0090,\n    0x008F, 0x008E, 0x008C, 0x008A, 0x0088, 0x0087, 0x0086, 0x0087,\n    0x0088, 0x0089, 0x008B, 0x008D, 0x008E, 0x008F, 0x0090, 0xFFF3,\n    0x3FFF, 0xFAB5, 0xF94B, 0xF62F, 0xF311, 0xF1A2, 0xF3AF, 0xF7B9,\n    0xFA80, 0xFB47, 0xFB95, 0xFB99, 0xFB80, 0xFB79, 0xFBB1, 0xFC56,\n    0xFDDE, 0x0032, 0x02AD, 0x04A9, 0x0581, 0x0261, 0xFCB9, 0xF692,\n    0xF173, 0xF013, 0xF0F2, 0xF356, 0xF699, 0xF978, 0xFAB5, 0xFF15,\n    0xFF1C, 0xFF2F, 0xFF4C, 0xFF72, 0xFF9E, 0xFFCD, 0xFFFF, 0x0030,\n    0x0060, 0x008C, 0x00B1, 0x00CF, 0x00E2, 0x00E9, 0x00E3, 0x00D2,\n    0x00B8, 0x0096, 0x006F, 0x0044, 0x0016, 0xFFE8, 0xFFBA, 0xFF8E,\n    0xFF67, 0xFF46, 0xFF2C, 0xFF1B, 0xFF15, 0xFF20, 0xFF20, 0xFF20,\n    0xFF20, 0xFF20, 0xFF1F, 0xFF1F, 0xFF1F, 0xFF1F, 0xFF1E, 0xFF1E,\n    0xFF1E, 0xFF1E, 0xFF1E, 0xFF1E, 0xFF1E, 0xFF1E, 0xFF1E, 0xFF1E,\n    0xFF1E, 0xFF1F, 0xFF1F, 0xFF1F, 0xFF1F, 0xFF1F, 0xFF20, 0xFF20,\n    0xFF20, 0xFF20, 0xFF20, 0xE239, 0xE144, 0xDE97, 0xDA7A, 0xD537,\n    0xCF18, 0xC866, 0xC16A, 0xBA6F, 0xB3BD, 0xAD9E, 0xA85B, 0xA43E,\n    0xA190, 0xA09C, 0xA172, 0xA3CC, 0xA76E, 0xAC1E, 0xB19E, 0xB7B4,\n    0xBE24, 0xC4B1, 0xCB20, 0xD136, 0xD6B7, 0xDB66, 0xDF09, 0xE163,\n    0xE239, 0x0000, 0x00B8, 0x026A, 0x0460, 0x05E5, 0x0644, 0x0292,\n    0xFCF2, 0xF852, 0xF3DC, 0xF0CC, 0xEF8B, 0xEF48, 0xEF67, 0xEF4C,\n    0xEE74, 0xED4F, 0xECB1, 0xED6F, 0xF15F, 0xF73B, 0xFB2B, 0xFCAB,\n    0xFDD2, 0xFEAD, 0xFF46, 0xFFA9, 0xFFE1, 0xFFFB, 0x0000, 0x0092,\n    0x008E, 0x0084, 0x0073, 0x005E, 0x0046, 0x002B, 0x0010, 0xFFF5,\n    0xFFDA, 0xFFC2, 0xFFAD, 0xFF9D, 0xFF92, 0xFF8E, 0xFF92, 0xFF9B,\n    0xFFA9, 0xFFBC, 0xFFD2, 0xFFEA, 0x0003, 0x001D, 0x0036, 0x004E,\n    0x0064, 0x0077, 0x0085, 0x008F, 0x0092, 0xFF8A, 0xFF89, 0xFF88,\n    0xFF86, 0xFF84, 0xFF81, 0xFF7D, 0xFF7A, 0xFF77, 0xFF74, 0xFF71,\n    0xFF6E, 0xFF6C, 0xFF6B, 0xFF6A, 0xFF6B, 0xFF6C, 0xFF6E, 0xFF70,\n    0xFF73, 0xFF75, 0xFF79, 0xFF7C, 0xFF7F, 0xFF82, 0xFF84, 0xFF86,\n    0xFF88, 0xFF89, 0xFF8A, 0x9DA9, 0x9E92, 0xA11D, 0xA505, 0xAA05,\n    0xAFD6, 0xB632, 0xBCD5, 0xC377, 0xC9D4, 0xCFA5, 0xD4A4, 0xD88C,\n    0xDB18, 0xDC01, 0xDB35, 0xD8F9, 0xD585, 0xD111, 0xCBD7, 0xC60F,\n    0xBFF2, 0xB9B8, 0xB39B, 0xADD3, 0xA898, 0xA425, 0xA0B0, 0x9E74,\n    0x9DA9, 0x04B7, 0x04A6, 0x0475, 0x0429, 0x03C9, 0x0358, 0x02DD,\n    0x025D, 0x01DD, 0x0162, 0x00F2, 0x0091, 0x0046, 0x0015, 0x0003,\n    0x0012, 0x003E, 0x0080, 0x00D6, 0x013B, 0x01AB, 0x0221, 0x0299,\n    0x030F, 0x037F, 0x03E4, 0x043A, 0x047D, 0x04A8, 0x04B7, 0x1A88,\n    0x19B9, 0x1776, 0x13FC, 0x0F89, 0x0A5D, 0x04B4, 0xFECE, 0xF8E7,\n    0xF33F, 0xEE12, 0xE9A0, 0xE626, 0xE3E2, 0xE313, 0xE3C8, 0xE5C5,\n    0xE8D8, 0xECCE, 0xF174, 0xF699, 0xFC09, 0x0192, 0x0702, 0x0C27,\n    0x10CE, 0x14C4, 0x17D6, 0x19D3, 0x1A88, 0xFAA6, 0xFA89, 0xFA38,\n    0xF9BD, 0xF91E, 0xF866, 0xF79D, 0xF6CB, 0xF5F9, 0xF52F, 0xF477,\n    0xF3D9, 0xF35D, 0xF30D, 0xF2F0, 0xF309, 0xF350, 0xF3BD, 0xF44A,\n    0xF4F0, 0xF5A7, 0xF668, 0xF72D, 0xF7EF, 0xF8A6, 0xF94B, 0xF9D8,\n    0xFA46, 0xFA8D, 0xFAA6, 0x160B, 0x15BF, 0x14E7, 0x139D, 0x11F6,\n    0x1009, 0x0DEF, 0x0BBE, 0x098C, 0x0772, 0x0586, 0x03DF, 0x0294,\n    0x01BD, 0x0170, 0x01B3, 0x0270, 0x0395, 0x050D, 0x06C8, 0x08B1,\n    0x0AB6, 0x0CC5, 0x0ECA, 0x10B4, 0x126E, 0x13E7, 0x150B, 0x15C8,\n    0x160B, 0x1F3A, 0x1F2A, 0x1EFC, 0x1EB6, 0x1E5C, 0x1DF3, 0x1D80,\n    0x1D09, 0x1C92, 0x1C1F, 0x1BB6, 0x1B5C, 0x1B16, 0x1AE8, 0x1AD8,\n    0x1AE6, 0x1B0F, 0x1B4D, 0x1B9D, 0x1BFB, 0x1C63, 0x1CD1, 0x1D41,\n    0x1DAF, 0x1E17, 0x1E75, 0x1EC5, 0x1F04, 0x1F2C, 0x1F3A, 0xC24D,\n    0xC155, 0xBE9E, 0xBA74, 0xB51F, 0xAEEC, 0xA824, 0xA111, 0x99FE,\n    0x9336, 0x8D02, 0x87AE, 0x8384, 0x80CD, 0x7FD2, 0x80AE, 0x8310,\n    0x86BF, 0x8B7E, 0x9110, 0x973B, 0x9DBF, 0xA462, 0xAAE7, 0xB111,\n    0xB6A4, 0xBB63, 0xBF12, 0xC174, 0xC24D, 0x0003, 0xFF9D, 0xFE7B,\n    0xFCBE, 0xFA86, 0xF7F0, 0xF51C, 0xF229, 0xEF36, 0xEC62, 0xE9CC,\n    0xE793, 0xE5D7, 0xE4B5, 0xE44E, 0xE4A8, 0xE5A7, 0xE730, 0xE92A,\n    0xEB7D, 0xEE0F, 0xF0C7, 0xF38B, 0xF643, 0xF8D5, 0xFB28, 0xFD22,\n    0xFEAB, 0xFFAA, 0x0003, 0x1942, 0x18B8, 0x1736, 0x14E5, 0x11EE,\n    0x0E7B, 0x0AB5, 0x06C6, 0x02D7, 0xFF12, 0xFBA0, 0xF8A9, 0xF658,\n    0xF4D5, 0xF44B, 0xF4C4, 0xF617, 0xF824, 0xFAC7, 0xFDE1, 0x014E,\n    0x04EE, 0x089F, 0x0C3F, 0x0FAD, 0x12C6, 0x156A, 0x1776, 0x18CA,\n    0x1942, 0xF709, 0xF6F4, 0xF6B8, 0xF65D, 0xF5E9, 0xF562, 0xF4CE,\n    0xF434, 0xF399, 0xF305, 0xF27E, 0xF20A, 0xF1AF, 0xF174, 0xF15E,\n    0xF171, 0xF1A5, 0xF1F5, 0xF25D, 0xF2D6, 0xF35D, 0xF3EB, 0xF47C,\n    0xF50A, 0xF591, 0xF60A, 0xF672, 0xF6C2, 0xF6F6, 0xF709, 0x20D3,\n    0x1FBB, 0x1CAC, 0x17F9, 0x11F6, 0x0AF8, 0x0351, 0xFB58, 0xF35E,\n    0xEBB8, 0xE4B9, 0xDEB7, 0xDA04, 0xD6F4, 0xD5DD, 0xD6D1, 0xD981,\n    0xDDA8, 0xE303, 0xE94C, 0xF040, 0xF79A, 0xFF16, 0x066F, 0x0D63,\n    0x13AC, 0x1907, 0x1D2E, 0x1FDE, 0x20D3, 0xDD51, 0xDD69, 0xDDA9,\n    0xDE0C, 0xDE8B, 0xDF1E, 0xDFBF, 0xE067, 0xE110, 0xE1B1, 0xE244,\n    0xE2C3, 0xE326, 0xE366, 0xE37D, 0xE369, 0xE331, 0xE2D9, 0xE268,\n    0xE1E4, 0xE151, 0xE0B6, 0xE019, 0xDF7E, 0xDEEB, 0xDE67, 0xDDF6,\n    0xDD9E, 0xDD66, 0xDD51, 0x71C9, 0x7322, 0x76E9, 0x7CB4, 0x8421,\n    0x8CC2, 0x9632, 0xA009, 0xA9E0, 0xB34F, 0xBBF0, 0xC35A, 0xC926,\n    0xCCEC, 0xCE45, 0xCD17, 0xC9C7, 0xC4A7, 0xBE0D, 0xB64C, 0xADB8,\n    0xA4A7, 0x9B6B, 0x9259, 0x89C6, 0x8205, 0x7B67, 0x7648, 0x72F7,\n    0x71C9, 0xA205, 0xA205, 0xA205, 0xA205, 0x02CD, 0x02B3, 0x026B,\n    0x0203, 0x0186, 0x0102, 0x0081, 0x0012, 0xFFA3, 0xFF24, 0xFEA1,\n    0xFE25, 0xFDBF, 0xFD78, 0xFD5D, 0xFD77, 0xFDBF, 0xFE26, 0xFEA1,\n    0xFF24, 0xFFA0, 0x000A, 0x006F, 0x00E1, 0x0156, 0x01C8, 0x022F,\n    0x0282, 0x02B9, 0x02CD, 0xFCD8, 0xFCF5, 0xFD42, 0xFDB4, 0xFE3B,\n    0xFECB, 0xFF57, 0xFFD1, 0x004B, 0x00D7, 0x0168, 0x01EF, 0x0261,\n    0x02AF, 0x02CD, 0x02AF, 0x0260, 0x01EE, 0x0165, 0x00D6, 0x004C,\n    0xFFD9, 0xFF6A, 0xFEEE, 0xFE6E, 0xFDF3, 0xFD84, 0xFD2A, 0xFCEE,\n    0xFCD8, 0xFD8F, 0xFDB7, 0xFE20, 0xFEAF, 0xFF4B, 0xFFDA, 0x0042,\n    0x006B, 0x003F, 0xFFCF, 0xFF37, 0xFE94, 0xFE05, 0xFDA6, 0xFD95,\n    0xFDEF, 0xFEA1, 0xFF87, 0x007A, 0x0156, 0x01F6, 0x0233, 0x01FF,\n    0x0179, 0x00BA, 0xFFE1, 0xFF07, 0xFE49, 0xFDC2, 0xFD8F, 0xFDA7,\n    0xFDB6, 0xFDE1, 0xFE24, 0xFE79, 0xFEDC, 0xFF48, 0xFFB9, 0x0028,\n    0x0095, 0x00F8, 0x014D, 0x018F, 0x01BA, 0x01CA, 0x01BC, 0x0196,\n    0x015B, 0x0110, 0x00B7, 0x0055, 0xFFEE, 0xFF84, 0xFF1C, 0xFEB9,\n    0xFE61, 0xFE15, 0xFDDA, 0xFDB4, 0xFDA7, 0x0361, 0x034A, 0x0308,\n    0x02A4, 0x0224, 0x018E, 0x00EB, 0x0041, 0xFF97, 0xFEF4, 0xFE5F,\n    0xFDDE, 0xFD7A, 0xFD39, 0xFD21, 0xFD36, 0xFD6F, 0xFDC8, 0xFE3A,\n    0xFEC0, 0xFF55, 0xFFF2, 0x0091, 0x012E, 0x01C2, 0x0248, 0x02BB,\n    0x0313, 0x034D, 0x0361, 0x62C8, 0x62C8, 0x62C8, 0x62C9, 0x62C9,\n    0x62CA, 0x62CB, 0x62CB, 0x62CC, 0x62CD, 0x62CD, 0x62CE, 0x62CE,\n    0x62CF, 0x62CF, 0x62CF, 0x62CE, 0x62CE, 0x62CE, 0x62CD, 0x62CC,\n    0x62CC, 0x62CB, 0x62CA, 0x62CA, 0x62C9, 0x62C9, 0x62C8, 0x62C8,\n    0x62C8, 0x0000,\n};\n\n// 0x06010198\nstatic const u16 koopa_seg6_animindex_06010198[] = {\n    0x0001, 0x0000, 0x001E, 0x0001, 0x0001, 0x001F, 0x0001, 0x0000, 0x0001, 0x0020, 0x0001, 0x0000,\n    0x001E, 0x02D7, 0x001E, 0x02F5, 0x001E, 0x0313,\n    0x001E, 0x027D, 0x001E, 0x029B, 0x001E, 0x02B9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x027C,\n    0x001E, 0x003F, 0x001E, 0x005D, 0x001E, 0x007B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0021,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x027B,\n    0x001E, 0x00B7, 0x001E, 0x00D5, 0x001E, 0x00F3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0099,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x027A,\n    0x001E, 0x016B, 0x001E, 0x0189, 0x001E, 0x01A7,\n    0x001E, 0x0111, 0x001E, 0x012F, 0x001E, 0x014D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0279,\n    0x001E, 0x021F, 0x001E, 0x023D, 0x001E, 0x025B,\n    0x001E, 0x01C5, 0x001E, 0x01E3, 0x001E, 0x0201,\n};\n\n// 0x06010258\nstatic const struct Animation koopa_seg6_anim_06010258 = {\n    0,\n    0,\n    0,\n    0,\n    0x1E,\n    ANIMINDEX_NUMPARTS(koopa_seg6_animindex_06010198),\n    koopa_seg6_animvalue_0600FB34,\n    koopa_seg6_animindex_06010198,\n    0,\n};\n"
  },
  {
    "path": "actors/koopa/anims/anim_06010634.inc.c",
    "content": "// 0x06010270\nstatic const s16 koopa_seg6_animvalue_06010270[] = {\n    0x0000, 0x0090, 0x0090, 0x008F, 0x008E, 0x008C, 0x008B, 0x0089,\n    0x0088, 0x0088, 0x0088, 0x0088, 0x0088, 0x0088, 0x0088, 0xFFF3,\n    0x3FFF, 0xFAB5, 0xF94B, 0xF62F, 0xF311, 0xF1A2, 0xF391, 0xF77D,\n    0xFA80, 0xFC05, 0xFD59, 0xFE73, 0xFF49, 0xFFD1, 0x0000, 0xFF15,\n    0xFEDA, 0xFE35, 0xFD39, 0xFBFB, 0xFA8C, 0xF900, 0xF76B, 0xF5E0,\n    0xF471, 0xF332, 0xF237, 0xF192, 0xF157, 0xFF20, 0xFF1E, 0xFF1A,\n    0xFF13, 0xFF0A, 0xFEFF, 0xFEF4, 0xFEE9, 0xFEDE, 0xFED3, 0xFECA,\n    0xFEC3, 0xFEBF, 0xFEBD, 0xE239, 0xE155, 0xDED9, 0xDB10, 0xD643,\n    0xD0BE, 0xCAC9, 0xC4AF, 0xBEBB, 0xB935, 0xB469, 0xB09F, 0xAE24,\n    0xAD3F, 0x0000, 0x00B8, 0x026A, 0x0460, 0x05E5, 0x0644, 0x01B1,\n    0xFCF2, 0xFCA1, 0xFD0B, 0xFDE3, 0xFEDD, 0xFFAB, 0x0000, 0x0092,\n    0x00D6, 0x0192, 0x02B2, 0x041E, 0x05C2, 0x0786, 0x0955, 0x0B1A,\n    0x0CBD, 0x0E29, 0x0F49, 0x1005, 0x1049, 0xFF8A, 0xFF89, 0xFF85,\n    0xFF81, 0xFF7A, 0xFF73, 0xFF6C, 0xFF64, 0xFF5C, 0xFF55, 0xFF4F,\n    0xFF4A, 0xFF47, 0xFF46, 0x9DA9, 0x9DEC, 0x9EA6, 0x9FC1, 0xA128,\n    0xA2C5, 0xA483, 0xA64B, 0xA809, 0xA9A6, 0xAB0D, 0xAC29, 0xACE2,\n    0xAD25, 0x04B7, 0x04A3, 0x046A, 0x0414, 0x03A7, 0x0329, 0x02A1,\n    0x0216, 0x018E, 0x0110, 0x00A3, 0x004C, 0x0014, 0x0000, 0x1A88,\n    0x1A16, 0x18D7, 0x16F2, 0x148B, 0x11C7, 0x0ECB, 0x0BBD, 0x08C1,\n    0x05FD, 0x0396, 0x01B0, 0x0072, 0x0000, 0xFAA6, 0xFAC2, 0xFB11,\n    0xFB88, 0xFC20, 0xFCCF, 0xFD8C, 0xFE4D, 0xFF0A, 0xFFB8, 0x004F,\n    0x00C7, 0x0116, 0x0132, 0x160B, 0x166F, 0x1786, 0x192E, 0x1B47,\n    0x1DB1, 0x204D, 0x22F8, 0x2593, 0x27FD, 0x2A17, 0x2BBF, 0x2CD5,\n    0x2D39, 0x1F3A, 0x1F27, 0x1EF3, 0x1EA4, 0x1E3F, 0x1DCC, 0x1D4F,\n    0x1CCF, 0x1C52, 0x1BDE, 0x1B79, 0x1B2A, 0x1AF6, 0x1AE3, 0xC24D,\n    0xC204, 0xC138, 0xC003, 0xBE7A, 0xBCB6, 0xBACE, 0xB8DB, 0xB6F4,\n    0xB530, 0xB3A7, 0xB271, 0xB1A6, 0xB15D, 0x0003, 0xFF53, 0xFD66,\n    0xFA77, 0xF6BE, 0xF276, 0xEDD8, 0xE91D, 0xE47F, 0xE037, 0xDC7E,\n    0xD98F, 0xD7A2, 0xD6F1, 0x1942, 0x1916, 0x189C, 0x17E2, 0x16F5,\n    0x15E6, 0x14C0, 0x1394, 0x126F, 0x115F, 0x1073, 0x0FB9, 0x0F3E,\n    0x0F12, 0xF709, 0xF75C, 0xF844, 0xF9A5, 0xFB65, 0xFD68, 0xFF93,\n    0x01CC, 0x03F7, 0x05FA, 0x07BA, 0x091B, 0x0A03, 0x0A56, 0x20D3,\n    0x1F81, 0x1BD5, 0x163B, 0x0F23, 0x06F8, 0xFE2A, 0xF525, 0xEC56,\n    0xE42B, 0xDD13, 0xD779, 0xD3CD, 0xD27B, 0xDD51, 0xDDF2, 0xDFB0,\n    0xE258, 0xE5B5, 0xE995, 0xEDC3, 0xF20A, 0xF638, 0xFA18, 0xFD75,\n    0x001C, 0x01DA, 0x027B, 0x71C9, 0x71A7, 0x7147, 0x70B6, 0x6FFD,\n    0x6F29, 0x6E44, 0x6D59, 0x6C74, 0x6BA0, 0x6AE7, 0x6A55, 0x69F6,\n    0x69D3, 0xA205, 0xA205, 0xA205, 0xA205, 0x02CD, 0x02AE, 0x025A,\n    0x01E4, 0x015D, 0x00D7, 0x0063, 0x0012, 0xFFE7, 0xFFD2, 0xFFCF,\n    0xFFD4, 0xFFDD, 0xFFE1, 0xFCD8, 0xFCFB, 0xFD56, 0xFDD6, 0xFE69,\n    0xFEFB, 0xFF79, 0xFFD1, 0x0000, 0x0014, 0x0017, 0x000F, 0x0005,\n    0x0000, 0xFD8F, 0xFDD9, 0xFE91, 0xFF7B, 0x005A, 0x00F4, 0x010E,\n    0x006B, 0xFE6B, 0xFB13, 0xF726, 0xF368, 0xF09A, 0xEF80, 0xFDA7,\n    0xFDB1, 0xFDCD, 0xFDF8, 0xFE2E, 0xFE6D, 0xFEB1, 0xFEF6, 0xFF3A,\n    0xFF79, 0xFFAF, 0xFFDA, 0xFFF6, 0x0000, 0x0361, 0x0352, 0x032A,\n    0x02EB, 0x029D, 0x0242, 0x01E0, 0x017C, 0x011A, 0x00C0, 0x0071,\n    0x0033, 0x000A, 0xFFFC, 0x62C8, 0x6301, 0x639F, 0x6490, 0x65C1,\n    0x6720, 0x689B, 0x6A20, 0x6B9B, 0x6CFA, 0x6E2B, 0x6F1C, 0x6FBA,\n    0x6FF3, 0x0000,\n};\n\n// 0x06010574\nstatic const u16 koopa_seg6_animindex_06010574[] = {\n    0x0001, 0x0000, 0x000E, 0x0001, 0x0001, 0x000F, 0x0001, 0x0000, 0x0001, 0x0010, 0x0001, 0x0000,\n    0x000E, 0x0157, 0x000E, 0x0165, 0x000E, 0x0173,\n    0x000E, 0x012D, 0x000E, 0x013B, 0x000E, 0x0149,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x012C,\n    0x000E, 0x001F, 0x000E, 0x002D, 0x000E, 0x003B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x0011,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x012B,\n    0x000E, 0x0057, 0x000E, 0x0065, 0x000E, 0x0073,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x0049,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x012A,\n    0x000E, 0x00AB, 0x000E, 0x00B9, 0x000E, 0x00C7,\n    0x000E, 0x0081, 0x000E, 0x008F, 0x000E, 0x009D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0129,\n    0x000E, 0x00FF, 0x000E, 0x010D, 0x000E, 0x011B,\n    0x000E, 0x00D5, 0x000E, 0x00E3, 0x000E, 0x00F1,\n};\n\n// 0x06010634\nstatic const struct Animation koopa_seg6_anim_06010634 = {\n    0,\n    0,\n    0,\n    0,\n    0x0E,\n    ANIMINDEX_NUMPARTS(koopa_seg6_animindex_06010574),\n    koopa_seg6_animvalue_06010270,\n    koopa_seg6_animindex_06010574,\n    0,\n};\n"
  },
  {
    "path": "actors/koopa/anims/anim_06010E48.inc.c",
    "content": "// 0x0601064C\nstatic const s16 koopa_seg6_animvalue_0601064C[] = {\n    0x0000, 0x0088, 0x0089, 0x008C, 0x008F, 0x0090, 0x008F, 0x008E,\n    0x008D, 0x008B, 0x0089, 0x0088, 0x0088, 0x0088, 0x0089, 0x008B,\n    0x008D, 0x008E, 0x0090, 0x0090, 0x008F, 0x008E, 0x008C, 0x008A,\n    0x0088, 0x0087, 0x0086, 0x0087, 0x0088, 0x0089, 0x008B, 0x008D,\n    0x008E, 0x008F, 0x0090, 0xFFF3, 0x3FFF, 0x0000, 0xFF2D, 0xFD5B,\n    0xFB88, 0xFAB5, 0xF94B, 0xF62F, 0xF311, 0xF1A2, 0xF3AF, 0xF7B9,\n    0xFA80, 0xFB47, 0xFB95, 0xFB99, 0xFB80, 0xFB79, 0xFBB1, 0xFC56,\n    0xFDDE, 0x0032, 0x02AD, 0x04A9, 0x0581, 0x0261, 0xFCB9, 0xF692,\n    0xF173, 0xF013, 0xF0F2, 0xF356, 0xF699, 0xF978, 0xFAB5, 0xF157,\n    0xF37D, 0xF836, 0xFCEF, 0xFF15, 0xFF1C, 0xFF2F, 0xFF4C, 0xFF72,\n    0xFF9E, 0xFFCD, 0xFFFF, 0x0030, 0x0060, 0x008C, 0x00B1, 0x00CF,\n    0x00E2, 0x00E9, 0x00E3, 0x00D2, 0x00B8, 0x0096, 0x006F, 0x0044,\n    0x0016, 0xFFE8, 0xFFBA, 0xFF8E, 0xFF67, 0xFF46, 0xFF2C, 0xFF1B,\n    0xFF15, 0xFEBD, 0xFECC, 0xFEEF, 0xFF11, 0xFF20, 0xFF20, 0xFF20,\n    0xFF20, 0xFF20, 0xFF1F, 0xFF1F, 0xFF1F, 0xFF1F, 0xFF1E, 0xFF1E,\n    0xFF1E, 0xFF1E, 0xFF1E, 0xFF1E, 0xFF1E, 0xFF1E, 0xFF1E, 0xFF1E,\n    0xFF1E, 0xFF1F, 0xFF1F, 0xFF1F, 0xFF1F, 0xFF1F, 0xFF20, 0xFF20,\n    0xFF20, 0xFF20, 0xFF20, 0xAD3F, 0xB586, 0xC7BC, 0xD9F2, 0xE239,\n    0xE144, 0xDE97, 0xDA7A, 0xD537, 0xCF18, 0xC866, 0xC16A, 0xBA6F,\n    0xB3BD, 0xAD9E, 0xA85B, 0xA43E, 0xA190, 0xA09C, 0xA172, 0xA3CC,\n    0xA76E, 0xAC1E, 0xB19E, 0xB7B4, 0xBE24, 0xC4B1, 0xCB20, 0xD136,\n    0xD6B7, 0xDB66, 0xDF09, 0xE163, 0xE239, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x00B8, 0x026A, 0x0460, 0x05E5, 0x0644, 0x0292,\n    0xFCF2, 0xF852, 0xF3DC, 0xF0CC, 0xEF8B, 0xEF48, 0xEF67, 0xEF4C,\n    0xEE74, 0xED4F, 0xECB1, 0xED6F, 0xF15F, 0xF73B, 0xFB2B, 0xFCAB,\n    0xFDD2, 0xFEAD, 0xFF46, 0xFFA9, 0xFFE1, 0xFFFB, 0x0000, 0x1049,\n    0x0DD5, 0x086E, 0x0307, 0x0092, 0x008E, 0x0084, 0x0073, 0x005E,\n    0x0046, 0x002B, 0x0010, 0xFFF5, 0xFFDA, 0xFFC2, 0xFFAD, 0xFF9D,\n    0xFF92, 0xFF8E, 0xFF92, 0xFF9B, 0xFFA9, 0xFFBC, 0xFFD2, 0xFFEA,\n    0x0003, 0x001D, 0x0036, 0x004E, 0x0064, 0x0077, 0x0085, 0x008F,\n    0x0092, 0xFF46, 0xFF50, 0xFF68, 0xFF7F, 0xFF8A, 0xFF89, 0xFF88,\n    0xFF86, 0xFF84, 0xFF81, 0xFF7D, 0xFF7A, 0xFF77, 0xFF74, 0xFF71,\n    0xFF6E, 0xFF6C, 0xFF6B, 0xFF6A, 0xFF6B, 0xFF6C, 0xFF6E, 0xFF70,\n    0xFF73, 0xFF75, 0xFF79, 0xFF7C, 0xFF7F, 0xFF82, 0xFF84, 0xFF86,\n    0xFF88, 0xFF89, 0xFF8A, 0xAD25, 0xAABA, 0xA567, 0xA014, 0x9DA9,\n    0x9E92, 0xA11D, 0xA505, 0xAA05, 0xAFD6, 0xB632, 0xBCD5, 0xC377,\n    0xC9D4, 0xCFA5, 0xD4A4, 0xD88C, 0xDB18, 0xDC01, 0xDB35, 0xD8F9,\n    0xD585, 0xD111, 0xCBD7, 0xC60F, 0xBFF2, 0xB9B8, 0xB39B, 0xADD3,\n    0xA898, 0xA425, 0xA0B0, 0x9E74, 0x9DA9, 0x0000, 0x00BC, 0x025B,\n    0x03FB, 0x04B7, 0x04A6, 0x0475, 0x0429, 0x03C9, 0x0358, 0x02DD,\n    0x025D, 0x01DD, 0x0162, 0x00F2, 0x0091, 0x0046, 0x0015, 0x0003,\n    0x0012, 0x003E, 0x0080, 0x00D6, 0x013B, 0x01AB, 0x0221, 0x0299,\n    0x030F, 0x037F, 0x03E4, 0x043A, 0x047D, 0x04A8, 0x04B7, 0x0000,\n    0x0425, 0x0D44, 0x1663, 0x1A88, 0x19B9, 0x1776, 0x13FC, 0x0F89,\n    0x0A5D, 0x04B4, 0xFECE, 0xF8E7, 0xF33F, 0xEE12, 0xE9A0, 0xE626,\n    0xE3E2, 0xE313, 0xE3C8, 0xE5C5, 0xE8D8, 0xECCE, 0xF174, 0xF699,\n    0xFC09, 0x0192, 0x0702, 0x0C27, 0x10CE, 0x14C4, 0x17D6, 0x19D3,\n    0x1A88, 0x0132, 0x002C, 0xFDEC, 0xFBAC, 0xFAA6, 0xFA89, 0xFA38,\n    0xF9BD, 0xF91E, 0xF866, 0xF79D, 0xF6CB, 0xF5F9, 0xF52F, 0xF477,\n    0xF3D9, 0xF35D, 0xF30D, 0xF2F0, 0xF309, 0xF350, 0xF3BD, 0xF44A,\n    0xF4F0, 0xF5A7, 0xF668, 0xF72D, 0xF7EF, 0xF8A6, 0xF94B, 0xF9D8,\n    0xFA46, 0xFA8D, 0xFAA6, 0x2D39, 0x299A, 0x21A2, 0x19AB, 0x160B,\n    0x15BF, 0x14E7, 0x139D, 0x11F6, 0x1009, 0x0DEF, 0x0BBE, 0x098C,\n    0x0772, 0x0586, 0x03DF, 0x0294, 0x01BD, 0x0170, 0x01B3, 0x0270,\n    0x0395, 0x050D, 0x06C8, 0x08B1, 0x0AB6, 0x0CC5, 0x0ECA, 0x10B4,\n    0x126E, 0x13E7, 0x150B, 0x15C8, 0x160B, 0x1AE3, 0x1B91, 0x1D0F,\n    0x1E8D, 0x1F3A, 0x1F2A, 0x1EFC, 0x1EB6, 0x1E5C, 0x1DF3, 0x1D80,\n    0x1D09, 0x1C92, 0x1C1F, 0x1BB6, 0x1B5C, 0x1B16, 0x1AE8, 0x1AD8,\n    0x1AE6, 0x1B0F, 0x1B4D, 0x1B9D, 0x1BFB, 0x1C63, 0x1CD1, 0x1D41,\n    0x1DAF, 0x1E17, 0x1E75, 0x1EC5, 0x1F04, 0x1F2C, 0x1F3A, 0xB15D,\n    0xB402, 0xB9D5, 0xBFA7, 0xC24D, 0xC155, 0xBE9E, 0xBA74, 0xB51F,\n    0xAEEC, 0xA824, 0xA111, 0x99FE, 0x9336, 0x8D02, 0x87AE, 0x8384,\n    0x80CD, 0x7FD2, 0x80AE, 0x8310, 0x86BF, 0x8B7E, 0x9110, 0x973B,\n    0x9DBF, 0xA462, 0xAAE7, 0xB111, 0xB6A4, 0xBB63, 0xBF12, 0xC174,\n    0xC24D, 0xD6F1, 0xDD5C, 0xEB7A, 0xF999, 0x0003, 0xFF9D, 0xFE7B,\n    0xFCBE, 0xFA86, 0xF7F0, 0xF51C, 0xF229, 0xEF36, 0xEC62, 0xE9CC,\n    0xE793, 0xE5D7, 0xE4B5, 0xE44E, 0xE4A8, 0xE5A7, 0xE730, 0xE92A,\n    0xEB7D, 0xEE0F, 0xF0C7, 0xF38B, 0xF643, 0xF8D5, 0xFB28, 0xFD22,\n    0xFEAB, 0xFFAA, 0x0003, 0x0F12, 0x10AA, 0x142A, 0x17AB, 0x1942,\n    0x18B8, 0x1736, 0x14E5, 0x11EE, 0x0E7B, 0x0AB5, 0x06C6, 0x02D7,\n    0xFF12, 0xFBA0, 0xF8A9, 0xF658, 0xF4D5, 0xF44B, 0xF4C4, 0xF617,\n    0xF824, 0xFAC7, 0xFDE1, 0x014E, 0x04EE, 0x089F, 0x0C3F, 0x0FAD,\n    0x12C6, 0x156A, 0x1776, 0x18CA, 0x1942, 0x0A56, 0x0752, 0x00AF,\n    0xFA0D, 0xF709, 0xF6F4, 0xF6B8, 0xF65D, 0xF5E9, 0xF562, 0xF4CE,\n    0xF434, 0xF399, 0xF305, 0xF27E, 0xF20A, 0xF1AF, 0xF174, 0xF15E,\n    0xF171, 0xF1A5, 0xF1F5, 0xF25D, 0xF2D6, 0xF35D, 0xF3EB, 0xF47C,\n    0xF50A, 0xF591, 0xF60A, 0xF672, 0xF6C2, 0xF6F6, 0xF709, 0xD27B,\n    0xDEB9, 0xF9A7, 0x1495, 0x20D3, 0x1FBB, 0x1CAC, 0x17F9, 0x11F6,\n    0x0AF8, 0x0351, 0xFB58, 0xF35E, 0xEBB8, 0xE4B9, 0xDEB7, 0xDA04,\n    0xD6F4, 0xD5DD, 0xD6D1, 0xD981, 0xDDA8, 0xE303, 0xE94C, 0xF040,\n    0xF79A, 0xFF16, 0x066F, 0x0D63, 0x13AC, 0x1907, 0x1D2E, 0x1FDE,\n    0x20D3, 0x027B, 0xFCAD, 0xEFE6, 0xE320, 0xDD51, 0xDD69, 0xDDA9,\n    0xDE0C, 0xDE8B, 0xDF1E, 0xDFBF, 0xE067, 0xE110, 0xE1B1, 0xE244,\n    0xE2C3, 0xE326, 0xE366, 0xE37D, 0xE369, 0xE331, 0xE2D9, 0xE268,\n    0xE1E4, 0xE151, 0xE0B6, 0xE019, 0xDF7E, 0xDEEB, 0xDE67, 0xDDF6,\n    0xDD9E, 0xDD66, 0xDD51, 0x69D3, 0x6B12, 0x6DCE, 0x708B, 0x71C9,\n    0x7322, 0x76E9, 0x7CB4, 0x8421, 0x8CC2, 0x9632, 0xA009, 0xA9E0,\n    0xB34F, 0xBBF0, 0xC35A, 0xC926, 0xCCEC, 0xCE45, 0xCD17, 0xC9C7,\n    0xC4A7, 0xBE0D, 0xB64C, 0xADB8, 0xA4A7, 0x9B6B, 0x9259, 0x89C6,\n    0x8205, 0x7B67, 0x7648, 0x72F7, 0x71C9, 0xA205, 0xA205, 0xA205,\n    0xA205, 0xFFE1, 0x0055, 0x0157, 0x0258, 0x02CD, 0x02B3, 0x026B,\n    0x0203, 0x0186, 0x0102, 0x0081, 0x0012, 0xFFA3, 0xFF24, 0xFEA1,\n    0xFE25, 0xFDBF, 0xFD78, 0xFD5D, 0xFD77, 0xFDBF, 0xFE26, 0xFEA1,\n    0xFF24, 0xFFA0, 0x000A, 0x006F, 0x00E1, 0x0156, 0x01C8, 0x022F,\n    0x0282, 0x02B9, 0x02CD, 0x0000, 0xFF82, 0xFE6C, 0xFD56, 0xFCD8,\n    0xFCF5, 0xFD42, 0xFDB4, 0xFE3B, 0xFECB, 0xFF57, 0xFFD1, 0x004B,\n    0x00D7, 0x0168, 0x01EF, 0x0261, 0x02AF, 0x02CD, 0x02AF, 0x0260,\n    0x01EE, 0x0165, 0x00D6, 0x004C, 0xFFD9, 0xFF6A, 0xFEEE, 0xFE6E,\n    0xFDF3, 0xFD84, 0xFD2A, 0xFCEE, 0xFCD8, 0xEF80, 0xF1B2, 0xF687,\n    0xFB5D, 0xFD8F, 0xFDB7, 0xFE20, 0xFEAF, 0xFF4B, 0xFFDA, 0x0042,\n    0x006B, 0x003F, 0xFFCF, 0xFF37, 0xFE94, 0xFE05, 0xFDA6, 0xFD95,\n    0xFDEF, 0xFEA1, 0xFF87, 0x007A, 0x0156, 0x01F6, 0x0233, 0x01FF,\n    0x0179, 0x00BA, 0xFFE1, 0xFF07, 0xFE49, 0xFDC2, 0xFD8F, 0x0000,\n    0xFFA2, 0xFED4, 0xFE05, 0xFDA7, 0xFDB6, 0xFDE1, 0xFE24, 0xFE79,\n    0xFEDC, 0xFF48, 0xFFB9, 0x0028, 0x0095, 0x00F8, 0x014D, 0x018F,\n    0x01BA, 0x01CA, 0x01BC, 0x0196, 0x015B, 0x0110, 0x00B7, 0x0055,\n    0xFFEE, 0xFF84, 0xFF1C, 0xFEB9, 0xFE61, 0xFE15, 0xFDDA, 0xFDB4,\n    0xFDA7, 0xFFFC, 0x0083, 0x01AE, 0x02D9, 0x0361, 0x034A, 0x0308,\n    0x02A4, 0x0224, 0x018E, 0x00EB, 0x0041, 0xFF97, 0xFEF4, 0xFE5F,\n    0xFDDE, 0xFD7A, 0xFD39, 0xFD21, 0xFD36, 0xFD6F, 0xFDC8, 0xFE3A,\n    0xFEC0, 0xFF55, 0xFFF2, 0x0091, 0x012E, 0x01C2, 0x0248, 0x02BB,\n    0x0313, 0x034D, 0x0361, 0x6FF3, 0x6DE4, 0x695D, 0x64D7, 0x62C8,\n    0x62C8, 0x62C8, 0x62C9, 0x62C9, 0x62CA, 0x62CB, 0x62CB, 0x62CC,\n    0x62CD, 0x62CD, 0x62CE, 0x62CE, 0x62CF, 0x62CF, 0x62CF, 0x62CE,\n    0x62CE, 0x62CE, 0x62CD, 0x62CC, 0x62CC, 0x62CB, 0x62CA, 0x62CA,\n    0x62C9, 0x62C9, 0x62C8, 0x62C8, 0x62C8, 0x0000,\n};\n\n// 0x06010D88\nstatic const u16 koopa_seg6_animindex_06010D88[] = {\n    0x0001, 0x0000, 0x0022, 0x0001, 0x0001, 0x0023, 0x0001, 0x0000, 0x0001, 0x0024, 0x0001, 0x0000,\n    0x0022, 0x0337, 0x0022, 0x0359, 0x0022, 0x037B,\n    0x0022, 0x02D1, 0x0022, 0x02F3, 0x0022, 0x0315,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02D0,\n    0x0022, 0x0047, 0x0022, 0x0069, 0x0022, 0x008B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0022, 0x0025,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02CF,\n    0x0022, 0x00CF, 0x0022, 0x00F1, 0x0022, 0x0113,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0022, 0x00AD,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02CE,\n    0x0022, 0x019B, 0x0022, 0x01BD, 0x0022, 0x01DF,\n    0x0022, 0x0135, 0x0022, 0x0157, 0x0022, 0x0179,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02CD,\n    0x0022, 0x0267, 0x0022, 0x0289, 0x0022, 0x02AB,\n    0x0022, 0x0201, 0x0022, 0x0223, 0x0022, 0x0245,\n};\n\n// 0x06010E48\nstatic const struct Animation koopa_seg6_anim_06010E48 = {\n    0,\n    0,\n    0,\n    0,\n    0x22,\n    ANIMINDEX_NUMPARTS(koopa_seg6_animindex_06010D88),\n    koopa_seg6_animvalue_0601064C,\n    koopa_seg6_animindex_06010D88,\n    0,\n};\n"
  },
  {
    "path": "actors/koopa/anims/anim_060110D8.inc.c",
    "content": "// 0x06010E60\nstatic const s16 koopa_seg6_animvalue_06010E60[] = {\n    0x0000, 0x00AD, 0x0089, 0x0087, 0x0087, 0x0087, 0x0088, 0x0088,\n    0x0088, 0xFFE6, 0xFFE6, 0xFFE6, 0xFFE8, 0xFFEC, 0xFFEF, 0xFFF2,\n    0xFFF3, 0x3FFF, 0xFFBC, 0xFF41, 0xFF00, 0xFEBC, 0xFE7B, 0xFE45,\n    0xFE1F, 0xFE11, 0x005E, 0x0052, 0x007A, 0x00AD, 0x00E1, 0x0111,\n    0x0133, 0x0140, 0x15C2, 0x07C2, 0x0570, 0x03E7, 0x02FE, 0x028B,\n    0x0265, 0x0261, 0xFE61, 0xFD6D, 0xFAF6, 0xF797, 0xF3EA, 0xF08B,\n    0xEE14, 0xED20, 0xFEED, 0xFEDF, 0xFEBD, 0xFE8E, 0xFE5B, 0xFE2D,\n    0xFE0B, 0xFDFD, 0xC673, 0xC59D, 0xC373, 0xC07F, 0xBD46, 0xBA51,\n    0xB828, 0xB751, 0xFE38, 0xFE01, 0xFDFB, 0xFDF9, 0xFDFA, 0xFDFC,\n    0xFDFE, 0xFDFF, 0x00AF, 0x0008, 0x002E, 0x006C, 0x00B5, 0x00FB,\n    0x012E, 0x0143, 0x1494, 0x0673, 0x03A2, 0x0181, 0xFFFD, 0xFF00,\n    0xFE76, 0xFE4D, 0xFFC5, 0x0014, 0x00E4, 0x01FF, 0x0335, 0x0450,\n    0x0520, 0x0570, 0xFF60, 0xFF5E, 0xFF5B, 0xFF56, 0xFF51, 0xFF4C,\n    0xFF49, 0xFF48, 0xC6E9, 0xC62F, 0xC44E, 0xC1BD, 0xBEF2, 0xBC61,\n    0xBA80, 0xB9C6, 0x336E, 0xF9B4, 0xEC6C, 0x9E5B, 0xA221, 0xABDC,\n    0xB92B, 0xC7AC, 0xD4FB, 0xDEB6, 0xE27C, 0x2477, 0x2406, 0x22E3,\n    0x2154, 0x1FA2, 0x1E14, 0x1CF0, 0x1C7F, 0x4A7C, 0x4F25, 0x5B29,\n    0x6B98, 0x7D7F, 0x8DF0, 0x99F4, 0x9E9D, 0x0003, 0x1942, 0xF709,\n    0x0B4B, 0x06CC, 0xFB37, 0xEB5F, 0xDA1B, 0xCA43, 0xBEAC, 0xBA2E,\n    0xD84E, 0xD8EE, 0xDA88, 0xDCBA, 0xDF1E, 0xE14F, 0xE2EA, 0xE389,\n    0x57FD, 0x5D7D, 0x6BAD, 0x7F13, 0x9439, 0xA79F, 0xB5CF, 0xBB4F,\n    0xA205, 0xA205, 0xA205, 0xA205, 0x0277, 0x00FE, 0x012E, 0x018C,\n    0x0203, 0x027A, 0x02DB, 0x02D5, 0xFD4D, 0xFC46, 0xFC4C, 0xFC6F,\n    0xFCA1, 0xFCD4, 0xFCF9, 0xFCDF, 0xFE2B, 0x10D3, 0x0F03, 0x0AF2,\n    0x05BA, 0x0079, 0xFC4B, 0xFD26, 0xFCE9, 0xFCF6, 0xFD17, 0xFD44,\n    0xFD75, 0xFDA2, 0xFDC3, 0xFDD0, 0x0299, 0x02A5, 0x02C6, 0x02F2,\n    0x0323, 0x034F, 0x036F, 0x037C, 0x5816, 0x58CB, 0x5A9C, 0x5D19,\n    0x5FCF, 0x624C, 0x641E, 0x64D3,\n};\n\n// 0x06011018\nstatic const u16 koopa_seg6_animindex_06011018[] = {\n    0x0001, 0x0000, 0x0008, 0x0001, 0x0008, 0x0009, 0x0001, 0x0000, 0x0001, 0x0011, 0x0001, 0x0000,\n    0x0008, 0x00C4, 0x0008, 0x00CC, 0x0008, 0x00D4,\n    0x0008, 0x00AC, 0x0008, 0x00B4, 0x0008, 0x00BC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00AB,\n    0x0008, 0x002A, 0x0008, 0x0032, 0x0008, 0x003A,\n    0x0008, 0x0012, 0x0008, 0x001A, 0x0008, 0x0022,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00AA,\n    0x0008, 0x005A, 0x0008, 0x0062, 0x0008, 0x006A,\n    0x0008, 0x0042, 0x0008, 0x004A, 0x0008, 0x0052,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00A9,\n    0x0008, 0x0075, 0x0008, 0x007D, 0x0008, 0x0085,\n    0x0001, 0x0072, 0x0001, 0x0073, 0x0001, 0x0074,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00A8,\n    0x0008, 0x0090, 0x0008, 0x0098, 0x0008, 0x00A0,\n    0x0001, 0x008D, 0x0001, 0x008E, 0x0001, 0x008F,\n};\n\n// 0x060110D8\nstatic const struct Animation koopa_seg6_anim_060110D8 = {\n    0,\n    0,\n    0,\n    0,\n    0x08,\n    ANIMINDEX_NUMPARTS(koopa_seg6_animindex_06011018),\n    koopa_seg6_animvalue_06010E60,\n    koopa_seg6_animindex_06011018,\n    0,\n};\n"
  },
  {
    "path": "actors/koopa/anims/anim_0601134C.inc.c",
    "content": "// 0x060110F0\nstatic const s16 koopa_seg6_animvalue_060110F0[] = {\n    0x0000, 0x007A, 0xFFF3, 0x3FFF, 0xFD8F, 0xFDBD, 0xFE31, 0xFEC8,\n    0xFF5E, 0xFFD2, 0x0000, 0x0000, 0x00D0, 0x00C0, 0x009A, 0x0068,\n    0x0035, 0x000F, 0x0000, 0x0000, 0xF96F, 0xFC6D, 0x03E7, 0x0D9F,\n    0x1758, 0x1ED3, 0x21D0, 0x21D0, 0x00FA, 0x00E0, 0x009F, 0x004B,\n    0xFFF8, 0xFFB7, 0xFF9D, 0xFF9D, 0xFF31, 0xFF2A, 0xFF17, 0xFEFE,\n    0xFEE5, 0xFED2, 0xFECB, 0xFECB, 0x9D52, 0xA0EA, 0xA9E5, 0xB592,\n    0xC13F, 0xCA3A, 0xCDD2, 0xCDD2, 0xFE05, 0xFE0C, 0xFE1F, 0xFE38,\n    0xFE50, 0xFE63, 0xFE6B, 0xFE6B, 0xFF8A, 0xFFAB, 0xFFFD, 0x0068,\n    0x00D4, 0x0126, 0x0147, 0x0147, 0xFC59, 0xFF17, 0x05F2, 0x0EDD,\n    0x17C7, 0x1EA3, 0x2162, 0x2162, 0x009E, 0x008E, 0x0066, 0x0032,\n    0xFFFF, 0xFFD7, 0xFFC7, 0xFFC7, 0xFF9B, 0xFF95, 0xFF87, 0xFF74,\n    0xFF61, 0xFF53, 0xFF4D, 0xFF4D, 0x992E, 0x9D22, 0xA704, 0xB3DE,\n    0xC0B8, 0xCA9A, 0xCE8E, 0xCE8E, 0x336E, 0xF9B4, 0xEC6C, 0x160B,\n    0x1D98, 0x3111, 0x4BB0, 0x68B3, 0x8355, 0x96CE, 0x9E5B, 0x1F3A,\n    0x1F84, 0x2044, 0x214A, 0x2267, 0x236D, 0x242D, 0x2477, 0xC24D,\n    0xC9D8, 0xDD4D, 0xF7E7, 0x14E2, 0x2F7C, 0x42F1, 0x4A7C, 0x0003,\n    0x1942, 0xF709, 0xAD7C, 0xB2AE, 0xC015, 0xD268, 0xE65F, 0xF8B2,\n    0x0618, 0x0B4B, 0xE518, 0xE463, 0xE28F, 0xE010, 0xDD57, 0xDAD8,\n    0xD904, 0xD84E, 0xC72B, 0xC102, 0xB121, 0x9B6A, 0x83C1, 0x6E07,\n    0x5E25, 0x57FD, 0xA205, 0xA205, 0xA205, 0xA205, 0x02CD, 0x02E0,\n    0x030F, 0x034C, 0x0389, 0x03B8, 0x03CA, 0x03CA, 0xFCD8, 0xFCF1,\n    0xFD2E, 0xFD7F, 0xFDCF, 0xFE0D, 0xFE25, 0xFE25, 0xFD8F, 0xFC62,\n    0xF972, 0xF5A0, 0xF1CE, 0xEEDE, 0xEDB1, 0xEDB1, 0x0127, 0x00D2,\n    0xFFFF, 0xFEEB, 0xFDD7, 0xFD03, 0xFCAE, 0xFCAE, 0x03F3, 0x03D6,\n    0x038F, 0x0331, 0x02D4, 0x028C, 0x026F, 0x026F, 0x8735, 0x8384,\n    0x7A45, 0x6E44, 0x6243, 0x5907, 0x5556, 0x5556,\n};\n\n// 0x0601128C\nstatic const u16 koopa_seg6_animindex_0601128C[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0000, 0x0001, 0x0003, 0x0001, 0x0000,\n    0x0008, 0x00B6, 0x0008, 0x00BE, 0x0008, 0x00C6,\n    0x0008, 0x009E, 0x0008, 0x00A6, 0x0008, 0x00AE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x009D,\n    0x0008, 0x001C, 0x0008, 0x0024, 0x0008, 0x002C,\n    0x0008, 0x0004, 0x0008, 0x000C, 0x0008, 0x0014,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x009C,\n    0x0008, 0x004C, 0x0008, 0x0054, 0x0008, 0x005C,\n    0x0008, 0x0034, 0x0008, 0x003C, 0x0008, 0x0044,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x009B,\n    0x0008, 0x0067, 0x0008, 0x006F, 0x0008, 0x0077,\n    0x0001, 0x0064, 0x0001, 0x0065, 0x0001, 0x0066,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x009A,\n    0x0008, 0x0082, 0x0008, 0x008A, 0x0008, 0x0092,\n    0x0001, 0x007F, 0x0001, 0x0080, 0x0001, 0x0081,\n};\n\n// 0x0601134C\nstatic const struct Animation koopa_seg6_anim_0601134C = {\n    1,\n    0,\n    0,\n    0,\n    0x08,\n    ANIMINDEX_NUMPARTS(koopa_seg6_animindex_0601128C),\n    koopa_seg6_animvalue_060110F0,\n    koopa_seg6_animindex_0601128C,\n    0,\n};\n"
  },
  {
    "path": "actors/koopa/anims/data.inc.c",
    "content": "#include \"anim_0600CC24.inc.c\"\n#include \"anim_0600CFB8.inc.c\"\n#include \"anim_0600D518.inc.c\"\n#include \"anim_0600D804.inc.c\"\n#include \"anim_0600DD90.inc.c\"\n#include \"anim_0600E32C.inc.c\"\n#include \"anim_0600E928.inc.c\"\n#include \"anim_0600F3EC.inc.c\"\n#include \"anim_0600FB1C.inc.c\"\n#include \"anim_06010258.inc.c\"\n#include \"anim_06010634.inc.c\"\n#include \"anim_06010E48.inc.c\"\n#include \"anim_060110D8.inc.c\"\n#include \"anim_0601134C.inc.c\"\n"
  },
  {
    "path": "actors/koopa/anims/table.inc.c",
    "content": "// 0x06011364\nconst struct Animation *const koopa_seg6_anims_06011364[] = {\n    &koopa_seg6_anim_0600CC24,\n    &koopa_seg6_anim_0600CFB8,\n    &koopa_seg6_anim_0600D518,\n    &koopa_seg6_anim_0600D804,\n    &koopa_seg6_anim_0600DD90,\n    &koopa_seg6_anim_0600E32C,\n    &koopa_seg6_anim_0600E928,\n    &koopa_seg6_anim_0600F3EC,\n    &koopa_seg6_anim_0600FB1C,\n    &koopa_seg6_anim_06010258,\n    &koopa_seg6_anim_06010634,\n    &koopa_seg6_anim_06010E48,\n    &koopa_seg6_anim_0601134C, // Hmm.. these last 2 are swapped.\n    &koopa_seg6_anim_060110D8,\n    NULL,\n    NULL,\n    NULL,\n};\n"
  },
  {
    "path": "actors/koopa/geo.inc.c",
    "content": "// 0x0D0000D0\nconst GeoLayout koopa_without_shell_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x9B, 100),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, koopa_seg6_dl_0600C498),\n                GEO_OPEN_NODE(),\n                    GEO_SWITCH_CASE(2, geo_switch_anim_state),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 114, 0, 0, koopa_seg6_dl_06007AF8),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 114, 0, 0, koopa_seg6_dl_06007B20),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -29, 39, 60, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, koopa_seg6_dl_0600B838),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, koopa_seg6_dl_060086D0),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -29, 39, -60, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, koopa_seg6_dl_0600BA10),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, koopa_seg6_dl_06008B50),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 55, 25, -73, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, koopa_seg6_dl_0600BC18),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 54, 0, 0, koopa_seg6_dl_0600BA90),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 55, 25, 74, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, koopa_seg6_dl_0600BE10),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 54, 0, 0, koopa_seg6_dl_0600BC88),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0D000214\nconst GeoLayout koopa_with_shell_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x9B, 100),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, koopa_seg6_dl_06008250),\n                GEO_OPEN_NODE(),\n                    GEO_SWITCH_CASE(2, geo_switch_anim_state),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 114, 0, 0, koopa_seg6_dl_06007AF8),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 114, 0, 0, koopa_seg6_dl_06007B20),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -29, 39, 60, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, koopa_seg6_dl_0600B838),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, koopa_seg6_dl_060086D0),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -29, 39, -60, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, koopa_seg6_dl_0600BA10),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, koopa_seg6_dl_06008B50),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 55, 25, -73, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, koopa_seg6_dl_0600BC18),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 54, 0, 0, koopa_seg6_dl_0600BA90),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 55, 25, 74, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, koopa_seg6_dl_0600BE10),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 54, 0, 0, koopa_seg6_dl_0600BC88),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/koopa/model.inc.c",
    "content": "// Koopa (Small Koopa, Big Koopa [Koopa the Quick])\n\n\n// Unreferenced light group\nUNUSED static const Lights1 koopa_lights_unused1 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x060025A0\nstatic const Lights1 koopa_seg6_lights_060025A0 = gdSPDefLights1(\n    0x00, 0x59, 0x00,\n    0x00, 0xb2, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x060025B8\nstatic const Lights1 koopa_seg6_lights_060025B8 = gdSPDefLights1(\n    0x70, 0x57, 0x00,\n    0xe0, 0xae, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x060025D0\nstatic const Lights1 koopa_seg6_lights_060025D0 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 koopa_lights_unused2 = gdSPDefLights1(\n    0x59, 0x59, 0x59,\n    0xb2, 0xb2, 0xb2, 0x28, 0x28, 0x28\n);\n\n// 0x06002600\nstatic const Lights1 koopa_seg6_lights_06002600 = gdSPDefLights1(\n    0x00, 0x54, 0x00,\n    0x00, 0xa9, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x06002618\nstatic const Lights1 koopa_seg6_lights_06002618 = gdSPDefLights1(\n    0x59, 0x59, 0x59,\n    0xb2, 0xb2, 0xb2, 0x28, 0x28, 0x28\n);\n\n// 0x06002630\nstatic const Lights1 koopa_seg6_lights_06002630 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// //! There is a malformed light entry here pointing to this texture + 0x18.\n//     It results in the koopa actor 'wearing' what appears to be pink shorts\n//     beneath its shell, despite the fact it was intended to be white like\n//     the rest of its body. This is evident because once the mistake is corrected\n//     it turns back to being white like the other polygons.\n// 0x06002648\nALIGNED8 static const Texture koopa_seg6_texture_06002648[] = {\n#include \"actors/koopa/koopa_shell_front.rgba16.inc.c\"\n};\n\n// 0x06002E48\nALIGNED8 static const Texture koopa_seg6_texture_06002E48[] = {\n#include \"actors/koopa/koopa_shell_back.rgba16.inc.c\"\n};\n\n// 0x06003648\nALIGNED8 static const Texture koopa_seg6_texture_06003648[] = {\n#include \"actors/koopa/koopa_shoe.rgba16.inc.c\"\n};\n\n// 0x06003E48\nALIGNED8 static const Texture koopa_seg6_texture_06003E48[] = {\n#include \"actors/koopa/koopa_shell_front_top.rgba16.inc.c\"\n};\n\n// 0x06004648\nALIGNED8 static const Texture koopa_seg6_texture_06004648[] = {\n#include \"actors/koopa/koopa_eyes_open.rgba16.inc.c\"\n};\n\n// 0x06004E48\nALIGNED8 static const Texture koopa_seg6_texture_06004E48[] = {\n#include \"actors/koopa/koopa_eyes_closed.rgba16.inc.c\"\n};\n\n// 0x06005648\nALIGNED8 static const Texture koopa_seg6_texture_06005648[] = {\n#include \"actors/koopa/koopa_eye_border.rgba16.inc.c\"\n};\n\n// 0x06005E48\nALIGNED8 static const Texture koopa_seg6_texture_06005E48[] = {\n#include \"actors/koopa/koopa_nostrils.rgba16.inc.c\"\n};\n\n// 0x06006E48\nstatic const Lights1 koopa_seg6_lights_06006E48 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x06006E60\nstatic const Lights1 koopa_seg6_lights_06006E60 = gdSPDefLights1(\n    0x67, 0x0b, 0x1a,\n    0xce, 0x16, 0x35, 0x28, 0x28, 0x28\n);\n\n// 0x06006E78\nstatic const Vtx koopa_seg6_vertex_06006E78[] = {\n    {{{   139,     -4,      0}, 0, {   486,    684}, {0x76, 0x2d, 0x00, 0xff}}},\n    {{{   133,    -11,    -56}, 0, {     8,    694}, {0x38, 0x4e, 0xae, 0xff}}},\n    {{{   111,      2,    -51}, 0, {    40,    976}, {0x39, 0x0d, 0x90, 0xff}}},\n    {{{   155,    -27,     49}, 0, {   908,    324}, {0x57, 0x36, 0x49, 0xff}}},\n    {{{   184,    -56,     23}, 0, {   700,    -64}, {0x75, 0x18, 0x29, 0xff}}},\n    {{{   133,    -11,     56}, 0, {   962,    696}, {0x39, 0x41, 0x5c, 0xff}}},\n    {{{   184,    -56,    -23}, 0, {   302,    -66}, {0x6f, 0x23, 0xcf, 0xff}}},\n    {{{   111,      2,     52}, 0, {   918,    980}, {0x39, 0x0e, 0x70, 0xff}}},\n    {{{   155,    -27,    -48}, 0, {    78,    322}, {0x51, 0x2e, 0xab, 0xff}}},\n};\n\n// 0x06006F08\nstatic const Vtx koopa_seg6_vertex_06006F08[] = {\n    {{{    10,     50,    -36}, 0, {   796,   3890}, {0xad, 0x48, 0xc2, 0xff}}},\n    {{{    15,     22,    -64}, 0, {  1060,   3604}, {0xae, 0x1d, 0xa5, 0xff}}},\n    {{{   -12,     -4,      0}, 0, {   458,   4320}, {0x82, 0xf8, 0x00, 0xff}}},\n    {{{    16,    -63,      0}, 0, {   458,   3226}, {0xbd, 0x95, 0x00, 0xff}}},\n    {{{    43,    -44,    -54}, 0, {   964,   2536}, {0xe5, 0xa4, 0xae, 0xff}}},\n    {{{    69,    -65,    -18}, 0, {   626,   1742}, {0xe6, 0x8b, 0xd7, 0xff}}},\n    {{{    99,    -87,      0}, 0, {   458,    814}, {0xdc, 0x87, 0x00, 0xff}}},\n    {{{   102,    -44,    -54}, 0, {   960,    882}, {0xf5, 0xaf, 0x9f, 0xff}}},\n    {{{    69,    -65,     18}, 0, {   288,   1766}, {0xe6, 0x8b, 0x29, 0xff}}},\n    {{{   102,    -44,     54}, 0, {   -42,    956}, {0xf4, 0xae, 0x60, 0xff}}},\n    {{{   147,    -93,      0}, 0, {   458,   -570}, {0xf9, 0x82, 0x00, 0xff}}},\n    {{{    43,    -44,     54}, 0, {   -46,   2612}, {0xe6, 0xa4, 0x52, 0xff}}},\n    {{{    23,    -24,     60}, 0, {   -92,   3240}, {0xad, 0xcb, 0x4f, 0xff}}},\n    {{{    23,    -24,    -59}, 0, {  1012,   3160}, {0xac, 0xcc, 0xb2, 0xff}}},\n    {{{     0,     52,      0}, 0, {   460,   4212}, {0x99, 0x49, 0x09, 0xff}}},\n};\n\n// 0x06006FF8\nstatic const Vtx koopa_seg6_vertex_06006FF8[] = {\n    {{{     0,     52,      0}, 0, {   460,   4212}, {0x99, 0x49, 0x09, 0xff}}},\n    {{{    45,     75,     32}, 0, {   164,   3076}, {0xe3, 0x6a, 0x3e, 0xff}}},\n    {{{    36,     84,      0}, 0, {   462,   3348}, {0xd1, 0x75, 0xfa, 0xff}}},\n    {{{   -12,     -4,      0}, 0, {   458,   4320}, {0x82, 0xf8, 0x00, 0xff}}},\n    {{{    10,     50,     36}, 0, {   124,   3938}, {0xac, 0x44, 0x41, 0xff}}},\n    {{{    15,     22,     65}, 0, {  -140,   3692}, {0xae, 0x1e, 0x5b, 0xff}}},\n    {{{    23,    -24,     60}, 0, {   -92,   3240}, {0xad, 0xcb, 0x4f, 0xff}}},\n    {{{    54,      2,     87}, 0, {  -344,   2534}, {0xf3, 0x01, 0x7e, 0xff}}},\n    {{{    64,     41,     62}, 0, {  -112,   2410}, {0xf3, 0x4e, 0x62, 0xff}}},\n    {{{    10,     50,    -36}, 0, {   796,   3890}, {0xad, 0x48, 0xc2, 0xff}}},\n    {{{    45,     75,    -31}, 0, {   758,   3032}, {0xf3, 0x69, 0xbb, 0xff}}},\n    {{{    64,     41,    -62}, 0, {  1034,   2326}, {0x03, 0x47, 0x98, 0xff}}},\n    {{{    15,     22,    -64}, 0, {  1060,   3604}, {0xae, 0x1d, 0xa5, 0xff}}},\n    {{{    54,      2,    -87}, 0, {  1264,   2416}, {0xf1, 0x01, 0x82, 0xff}}},\n    {{{    77,    -16,    -82}, 0, {  1220,   1700}, {0x2d, 0xe3, 0x8e, 0xff}}},\n    {{{    43,    -44,    -54}, 0, {   964,   2536}, {0xe5, 0xa4, 0xae, 0xff}}},\n};\n\n// 0x060070F8\nstatic const Vtx koopa_seg6_vertex_060070F8[] = {\n    {{{    54,      2,    -87}, 0, {  1264,   2416}, {0xf1, 0x01, 0x82, 0xff}}},\n    {{{    23,    -24,    -59}, 0, {  1012,   3160}, {0xac, 0xcc, 0xb2, 0xff}}},\n    {{{    15,     22,    -64}, 0, {  1060,   3604}, {0xae, 0x1d, 0xa5, 0xff}}},\n    {{{    92,     84,    -51}, 0, {   940,   1738}, {0xb8, 0x43, 0xb1, 0xff}}},\n    {{{    92,     84,     51}, 0, {   -16,   1808}, {0xca, 0x3d, 0x60, 0xff}}},\n    {{{    87,    114,      0}, 0, {   460,   2068}, {0xfc, 0x7e, 0x00, 0xff}}},\n    {{{    64,     41,     62}, 0, {  -112,   2410}, {0xf3, 0x4e, 0x62, 0xff}}},\n    {{{    64,     41,    -62}, 0, {  1034,   2326}, {0x03, 0x47, 0x98, 0xff}}},\n    {{{    84,     81,      0}, 0, {   462,   2006}, {0x40, 0x6d, 0x00, 0xff}}},\n    {{{    45,     75,     32}, 0, {   164,   3076}, {0xe3, 0x6a, 0x3e, 0xff}}},\n    {{{    45,     75,    -31}, 0, {   758,   3032}, {0xf3, 0x69, 0xbb, 0xff}}},\n    {{{    43,    -44,    -54}, 0, {   964,   2536}, {0xe5, 0xa4, 0xae, 0xff}}},\n    {{{    77,    -16,    -82}, 0, {  1220,   1700}, {0x2d, 0xe3, 0x8e, 0xff}}},\n    {{{   102,    -44,    -54}, 0, {   960,    882}, {0xf5, 0xaf, 0x9f, 0xff}}},\n    {{{    36,     84,      0}, 0, {   462,   3348}, {0xd1, 0x75, 0xfa, 0xff}}},\n};\n\n// 0x060071E8\nstatic const Vtx koopa_seg6_vertex_060071E8[] = {\n    {{{    43,    -44,     54}, 0, {   -46,   2612}, {0xe6, 0xa4, 0x52, 0xff}}},\n    {{{    77,    -16,     82}, 0, {  -300,   1812}, {0x2c, 0xe3, 0x73, 0xff}}},\n    {{{    54,      2,     87}, 0, {  -344,   2534}, {0xf3, 0x01, 0x7e, 0xff}}},\n    {{{    23,    -24,     60}, 0, {   -92,   3240}, {0xad, 0xcb, 0x4f, 0xff}}},\n    {{{   102,    -44,     54}, 0, {   -42,    956}, {0xf4, 0xae, 0x60, 0xff}}},\n    {{{    36,     84,      0}, 0, {   462,   3348}, {0xd1, 0x75, 0xfa, 0xff}}},\n    {{{    45,     75,     32}, 0, {   164,   3076}, {0xe3, 0x6a, 0x3e, 0xff}}},\n    {{{    84,     81,      0}, 0, {   462,   2006}, {0x40, 0x6d, 0x00, 0xff}}},\n};\n\n// 0x06007268\nstatic const Vtx koopa_seg6_vertex_06007268[] = {\n    {{{    92,     84,    -51}, 0, {    48,   1042}, {0xb8, 0x43, 0xb1, 0xff}}},\n    {{{   140,     72,    -49}, 0, {    80,    596}, {0x45, 0x33, 0xa3, 0xff}}},\n    {{{    99,     22,    -60}, 0, {  -128,    110}, {0x30, 0x0e, 0x8c, 0xff}}},\n    {{{   153,     27,    -31}, 0, {   388,   -146}, {0x5a, 0xd7, 0xb2, 0xff}}},\n    {{{   149,     99,      0}, 0, {   988,    924}, {0x56, 0x5c, 0x00, 0xff}}},\n    {{{   170,     42,      0}, 0, {   968,    -30}, {0x7e, 0xf8, 0x00, 0xff}}},\n    {{{    87,    114,      0}, 0, {  1000,   1504}, {0xfc, 0x7e, 0x00, 0xff}}},\n    {{{   140,     72,     49}, 0, {  1884,    574}, {0x45, 0x33, 0x5d, 0xff}}},\n    {{{   153,     27,     31}, 0, {  1544,   -162}, {0x5a, 0xd8, 0x4e, 0xff}}},\n    {{{   139,     -4,      0}, 0, {   960,   -544}, {0x76, 0x2d, 0x00, 0xff}}},\n    {{{    92,     84,     51}, 0, {  1932,   1018}, {0xca, 0x3d, 0x60, 0xff}}},\n    {{{    99,     22,     60}, 0, {  2076,     82}, {0x2f, 0x10, 0x74, 0xff}}},\n    {{{   111,      2,     52}, 0, {  1908,   -278}, {0x39, 0x0e, 0x70, 0xff}}},\n    {{{    77,    -16,    -82}, 0, {  -536,   -332}, {0x2d, 0xe3, 0x8e, 0xff}}},\n    {{{   111,      2,    -51}, 0, {    20,   -254}, {0x39, 0x0d, 0x90, 0xff}}},\n};\n\n// 0x06007358\nstatic const Vtx koopa_seg6_vertex_06007358[] = {\n    {{{   111,      2,     52}, 0, {  1908,   -278}, {0x39, 0x0e, 0x70, 0xff}}},\n    {{{    77,    -16,     82}, 0, {  2464,   -370}, {0x2c, 0xe3, 0x73, 0xff}}},\n    {{{   102,    -44,     54}, 0, {  1944,   -924}, {0xf4, 0xae, 0x60, 0xff}}},\n    {{{    99,     22,     60}, 0, {  2076,     82}, {0x2f, 0x10, 0x74, 0xff}}},\n    {{{   111,      2,    -51}, 0, {    20,   -254}, {0x39, 0x0d, 0x90, 0xff}}},\n    {{{   153,     27,    -31}, 0, {   388,   -146}, {0x5a, 0xd7, 0xb2, 0xff}}},\n    {{{   139,     -4,      0}, 0, {   960,   -544}, {0x76, 0x2d, 0x00, 0xff}}},\n    {{{    92,     84,     51}, 0, {  1932,   1018}, {0xca, 0x3d, 0x60, 0xff}}},\n    {{{    64,     41,     62}, 0, {  2116,    556}, {0xf3, 0x4e, 0x62, 0xff}}},\n    {{{    54,      2,     87}, 0, {  2560,     40}, {0xf3, 0x01, 0x7e, 0xff}}},\n    {{{   102,    -44,    -54}, 0, {   -36,   -900}, {0xf5, 0xaf, 0x9f, 0xff}}},\n    {{{    77,    -16,    -82}, 0, {  -536,   -332}, {0x2d, 0xe3, 0x8e, 0xff}}},\n    {{{    99,     22,    -60}, 0, {  -128,    110}, {0x30, 0x0e, 0x8c, 0xff}}},\n    {{{    54,      2,    -87}, 0, {  -616,     80}, {0xf1, 0x01, 0x82, 0xff}}},\n    {{{    64,     41,    -62}, 0, {  -148,    586}, {0x03, 0x47, 0x98, 0xff}}},\n    {{{    92,     84,    -51}, 0, {    48,   1042}, {0xb8, 0x43, 0xb1, 0xff}}},\n};\n\n// 0x06007458\nstatic const Vtx koopa_seg6_vertex_06007458[] = {\n    {{{    15,     22,    -64}, 0, {  -200,    590}, {0xae, 0x1d, 0xa5, 0xff}}},\n    {{{    64,     41,    -62}, 0, {  -148,    586}, {0x03, 0x47, 0x98, 0xff}}},\n    {{{    54,      2,    -87}, 0, {  -616,     80}, {0xf1, 0x01, 0x82, 0xff}}},\n};\n\n// 0x06007488\nstatic const Vtx koopa_seg6_vertex_06007488[] = {\n    {{{    64,     41,    -62}, 0, {     0,      0}, {0x03, 0x47, 0x98, 0xff}}},\n    {{{    84,     81,      0}, 0, {     0,      0}, {0x40, 0x6d, 0x00, 0xff}}},\n    {{{    64,     41,     62}, 0, {     0,      0}, {0xf3, 0x4e, 0x62, 0xff}}},\n};\n\n// 0x060074B8\nstatic const Vtx koopa_seg6_vertex_060074B8[] = {\n    {{{   111,      2,     52}, 0, {     0,      0}, {0x39, 0x0e, 0x70, 0xff}}},\n    {{{   102,    -44,     54}, 0, {     0,      0}, {0xf4, 0xae, 0x60, 0xff}}},\n    {{{   120,    -30,     64}, 0, {     0,      0}, {0xf6, 0x07, 0x7e, 0xff}}},\n    {{{   184,    -56,    -23}, 0, {     0,      0}, {0x6f, 0x23, 0xcf, 0xff}}},\n    {{{   180,    -81,    -29}, 0, {     0,      0}, {0x4c, 0xac, 0xc8, 0xff}}},\n    {{{   139,    -51,    -58}, 0, {     0,      0}, {0x24, 0xe1, 0x8b, 0xff}}},\n    {{{   102,    -44,    -54}, 0, {     0,      0}, {0xf5, 0xaf, 0x9f, 0xff}}},\n    {{{   147,    -93,      0}, 0, {     0,      0}, {0xf9, 0x82, 0x00, 0xff}}},\n    {{{   120,    -30,    -63}, 0, {     0,      0}, {0x01, 0x09, 0x82, 0xff}}},\n    {{{   111,      2,    -51}, 0, {     0,      0}, {0x39, 0x0d, 0x90, 0xff}}},\n    {{{   155,    -27,    -48}, 0, {     0,      0}, {0x51, 0x2e, 0xab, 0xff}}},\n    {{{   180,    -81,     29}, 0, {     0,      0}, {0x36, 0xa3, 0x42, 0xff}}},\n    {{{   139,    -51,     58}, 0, {     0,      0}, {0x27, 0xe7, 0x76, 0xff}}},\n    {{{   184,    -56,     23}, 0, {     0,      0}, {0x75, 0x18, 0x29, 0xff}}},\n    {{{   155,    -27,     49}, 0, {     0,      0}, {0x57, 0x36, 0x49, 0xff}}},\n    {{{   133,    -11,     56}, 0, {     0,      0}, {0x39, 0x41, 0x5c, 0xff}}},\n};\n\n// 0x060075B8\nstatic const Vtx koopa_seg6_vertex_060075B8[] = {\n    {{{   111,      2,    -51}, 0, {     0,      0}, {0x39, 0x0d, 0x90, 0xff}}},\n    {{{   133,    -11,    -56}, 0, {     0,      0}, {0x38, 0x4e, 0xae, 0xff}}},\n    {{{   120,    -30,    -63}, 0, {     0,      0}, {0x01, 0x09, 0x82, 0xff}}},\n    {{{   155,    -27,    -48}, 0, {     0,      0}, {0x51, 0x2e, 0xab, 0xff}}},\n    {{{   184,    -56,     23}, 0, {     0,      0}, {0x75, 0x18, 0x29, 0xff}}},\n    {{{   180,    -81,     29}, 0, {     0,      0}, {0x36, 0xa3, 0x42, 0xff}}},\n    {{{   180,    -81,    -29}, 0, {     0,      0}, {0x4c, 0xac, 0xc8, 0xff}}},\n    {{{   139,    -51,     58}, 0, {     0,      0}, {0x27, 0xe7, 0x76, 0xff}}},\n    {{{   184,    -56,    -23}, 0, {     0,      0}, {0x6f, 0x23, 0xcf, 0xff}}},\n    {{{   147,    -93,      0}, 0, {     0,      0}, {0xf9, 0x82, 0x00, 0xff}}},\n};\n\n// 0x06007658 - 0x060076B0\nconst Gfx koopa_seg6_dl_06007658[] = {\n    gsSPLight(&koopa_seg6_lights_06006E48.l, 1),\n    gsSPLight(&koopa_seg6_lights_06006E48.a, 2),\n    gsSPVertex(koopa_seg6_vertex_06006E78, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 0,  5,  3, 0x0,  4,  6,  0, 0x0),\n    gsSP2Triangles( 7,  5,  0, 0x0,  8,  1,  0, 0x0),\n    gsSP1Triangle( 0,  6,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x060076B0 - 0x06007850\nconst Gfx koopa_seg6_dl_060076B0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, koopa_seg6_texture_06005648),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(koopa_seg6_vertex_06006F08, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  5,  7, 0x0,  5,  6,  8, 0x0),\n    gsSP2Triangles( 3,  5,  8, 0x0,  7,  5,  4, 0x0),\n    gsSP2Triangles( 9,  6, 10, 0x0,  7, 10,  6, 0x0),\n    gsSP2Triangles( 9,  8,  6, 0x0,  8, 11,  3, 0x0),\n    gsSP2Triangles(11,  8,  9, 0x0,  3, 11, 12, 0x0),\n    gsSP2Triangles( 2,  3, 12, 0x0,  3, 13,  4, 0x0),\n    gsSP2Triangles(13,  3,  2, 0x0,  2,  1, 13, 0x0),\n    gsSP1Triangle(14,  0,  2, 0x0),\n    gsSPVertex(koopa_seg6_vertex_06006FF8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 3,  5,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 7,  8,  5, 0x0,  4,  5,  8, 0x0),\n    gsSP2Triangles( 6,  5,  3, 0x0,  0,  4,  1, 0x0),\n    gsSP2Triangles( 8,  1,  4, 0x0,  2,  9,  0, 0x0),\n    gsSP2Triangles( 2, 10,  9, 0x0,  9, 11, 12, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(koopa_seg6_vertex_060070F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  7,  6, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0, 10,  8,  7, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0,  0, 11,  1, 0x0),\n    gsSP1Triangle(14,  8, 10, 0x0),\n    gsSPVertex(koopa_seg6_vertex_060071E8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 1,  0,  4, 0x0,  5,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06007850 - 0x06007970\nconst Gfx koopa_seg6_dl_06007850[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, koopa_seg6_texture_06005E48),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(koopa_seg6_vertex_06007268, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  1,  0,  6, 0x0),\n    gsSP2Triangles( 6,  4,  1, 0x0,  5,  3,  1, 0x0),\n    gsSP2Triangles( 7,  4,  6, 0x0,  7,  5,  4, 0x0),\n    gsSP2Triangles( 7,  8,  5, 0x0,  3,  5,  9, 0x0),\n    gsSP2Triangles( 9,  5,  8, 0x0,  7,  6, 10, 0x0),\n    gsSP2Triangles(11,  7, 10, 0x0,  8,  7, 11, 0x0),\n    gsSP2Triangles(12,  9,  8, 0x0,  8, 11, 12, 0x0),\n    gsSP1Triangle(13,  2, 14, 0x0),\n    gsSPVertex(koopa_seg6_vertex_06007358, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  3, 0x0),\n    gsSP2Triangles( 9,  1,  3, 0x0,  9,  3,  8, 0x0),\n    gsSP2Triangles( 4, 10, 11, 0x0,  4, 12,  5, 0x0),\n    gsSP2Triangles(13, 14, 12, 0x0, 14, 15, 12, 0x0),\n    gsSP1Triangle(12, 11, 13, 0x0),\n    gsSPVertex(koopa_seg6_vertex_06007458, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06007970 - 0x06007A60\nconst Gfx koopa_seg6_dl_06007970[] = {\n    gsSPLight(&koopa_seg6_lights_06006E60.l, 1),\n    gsSPLight(&koopa_seg6_lights_06006E60.a, 2),\n    gsSPVertex(koopa_seg6_vertex_06007488, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPLight(&koopa_seg6_lights_06006E48.l, 1),\n    gsSPLight(&koopa_seg6_lights_06006E48.a, 2),\n    gsSPVertex(koopa_seg6_vertex_060074B8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  4,  7, 0x0,  4,  6,  5, 0x0),\n    gsSP2Triangles( 6,  8,  5, 0x0,  8,  6,  9, 0x0),\n    gsSP2Triangles( 5, 10,  3, 0x0,  8, 10,  5, 0x0),\n    gsSP2Triangles(11, 12,  1, 0x0, 12,  2,  1, 0x0),\n    gsSP2Triangles( 1,  7, 11, 0x0, 13, 14, 12, 0x0),\n    gsSP2Triangles(12, 15,  2, 0x0, 12, 14, 15, 0x0),\n    gsSP1Triangle( 0,  2, 15, 0x0),\n    gsSPVertex(koopa_seg6_vertex_060075B8, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  5,  4, 0x0),\n    gsSP2Triangles( 6,  8,  4, 0x0,  9,  6,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06007A60 - 0x06007AA0\nconst Gfx koopa_seg6_dl_06007A60[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x06007AA0 - 0x06007AF8\nconst Gfx koopa_seg6_dl_06007AA0[] = {\n    gsSPDisplayList(koopa_seg6_dl_06007658),\n    gsSPDisplayList(koopa_seg6_dl_060076B0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(koopa_seg6_dl_06007850),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(koopa_seg6_dl_06007970),\n    gsSPEndDisplayList(),\n};\n\n// 0x06007AF8 - 0x06007B20\nconst Gfx koopa_seg6_dl_06007AF8[] = {\n    gsSPDisplayList(koopa_seg6_dl_06007A60),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, koopa_seg6_texture_06004648),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPBranchList(koopa_seg6_dl_06007AA0),\n};\n\n// 0x06007B20 - 0x06007B48\nconst Gfx koopa_seg6_dl_06007B20[] = {\n    gsSPDisplayList(koopa_seg6_dl_06007A60),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, koopa_seg6_texture_06004E48),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPBranchList(koopa_seg6_dl_06007AA0),\n};\n\n// 0x06007B48\nstatic const Lights1 koopa_seg6_lights_06007B48 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x06007B60\nstatic const Lights1 koopa_seg6_lights_06007B60 = gdSPDefLights1(\n    0x70, 0x57, 0x00,\n    0xe0, 0xae, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x06007B78\nstatic const Vtx koopa_seg6_vertex_06007B78[] = {\n    {{{   -28,    -79,    -33}, 0, {   774,    814}, {0xc7, 0x96, 0xda, 0xff}}},\n    {{{   -84,    -15,      0}, 0, {   468,   1346}, {0xa0, 0xae, 0x00, 0xff}}},\n    {{{   -56,      0,    -71}, 0, {  1132,   1060}, {0xce, 0xb0, 0xac, 0xff}}},\n    {{{    35,    -89,    -33}, 0, {   770,    152}, {0x12, 0x97, 0xbd, 0xff}}},\n    {{{   -28,    -79,     33}, 0, {   158,    814}, {0xbe, 0x9f, 0x2f, 0xff}}},\n    {{{    35,    -89,     33}, 0, {   156,    152}, {0x0b, 0x8f, 0x36, 0xff}}},\n    {{{   -56,      0,     73}, 0, {  -196,   1060}, {0xce, 0xaf, 0x53, 0xff}}},\n    {{{    63,    -28,    -76}, 0, {  1164,   -156}, {0x13, 0xae, 0xa2, 0xff}}},\n    {{{    91,    -63,      0}, 0, {   462,   -438}, {0x39, 0x8f, 0x00, 0xff}}},\n    {{{    63,    -28,     79}, 0, {  -236,   -154}, {0x15, 0xaf, 0x5e, 0xff}}},\n};\n\n// 0x06007C18\nstatic const Vtx koopa_seg6_vertex_06007C18[] = {\n    {{{    68,     63,     40}, 0, {   826,     98}, {0x2c, 0x72, 0x1f, 0xff}}},\n    {{{   109,     38,      0}, 0, {   524,   -122}, {0x6d, 0x40, 0x00, 0xff}}},\n    {{{    68,     63,    -38}, 0, {   212,    100}, {0x33, 0x6d, 0xda, 0xff}}},\n    {{{   -40,     71,    -38}, 0, {   196,    712}, {0xdd, 0x74, 0xdd, 0xff}}},\n    {{{   -40,     71,     40}, 0, {   810,    710}, {0xe3, 0x71, 0x31, 0xff}}},\n    {{{    91,     28,     61}, 0, {   990,    -24}, {0x5c, 0x3f, 0x3a, 0xff}}},\n    {{{    51,     43,     79}, 0, {  1120,    194}, {0x1b, 0x5f, 0x4e, 0xff}}},\n    {{{    51,     43,    -76}, 0, {   -88,    190}, {0x1b, 0x61, 0xb4, 0xff}}},\n    {{{    91,     28,    -58}, 0, {    52,    -26}, {0x5c, 0x41, 0xc7, 0xff}}},\n    {{{   -68,     38,     56}, 0, {   932,    864}, {0xab, 0x53, 0x2a, 0xff}}},\n    {{{   -68,     38,    -56}, 0, {    58,    862}, {0xaf, 0x54, 0xcf, 0xff}}},\n    {{{   -25,     43,    -76}, 0, {   -98,    628}, {0xe7, 0x5d, 0xaf, 0xff}}},\n    {{{   -81,     25,      0}, 0, {   492,    932}, {0x99, 0x49, 0x00, 0xff}}},\n    {{{   -25,     43,     79}, 0, {  1104,    632}, {0xe4, 0x5a, 0x54, 0xff}}},\n};\n\n// 0x06007CF8\nstatic const Vtx koopa_seg6_vertex_06007CF8[] = {\n    {{{   122,    -43,    -30}, 0, {     0,      0}, {0x6a, 0xd5, 0xcc, 0xff}}},\n    {{{    91,     28,    -58}, 0, {     0,      0}, {0x5c, 0x41, 0xc7, 0xff}}},\n    {{{   109,     38,      0}, 0, {     0,      0}, {0x6d, 0x40, 0x00, 0xff}}},\n    {{{   122,    -43,     30}, 0, {     0,      0}, {0x6b, 0xd5, 0x34, 0xff}}},\n    {{{    91,     28,     61}, 0, {     0,      0}, {0x5c, 0x3f, 0x3a, 0xff}}},\n};\n\n// 0x06007D48\nstatic const Vtx koopa_seg6_vertex_06007D48[] = {\n    {{{   -56,      0,    -71}, 0, {     0,      0}, {0xce, 0xb0, 0xac, 0xff}}},\n    {{{   -68,     17,    -84}, 0, {     0,      0}, {0x9d, 0x10, 0xb4, 0xff}}},\n    {{{     0,     22,   -107}, 0, {     0,      0}, {0xee, 0x19, 0x85, 0xff}}},\n    {{{  -107,      5,      0}, 0, {     0,      0}, {0x88, 0xd8, 0x00, 0xff}}},\n    {{{   -81,     25,      0}, 0, {     0,      0}, {0x99, 0x49, 0x00, 0xff}}},\n    {{{   -68,     38,    -56}, 0, {     0,      0}, {0xaf, 0x54, 0xcf, 0xff}}},\n    {{{   -68,     17,     86}, 0, {     0,      0}, {0x9d, 0x12, 0x4c, 0xff}}},\n    {{{   -68,     38,     56}, 0, {     0,      0}, {0xab, 0x53, 0x2a, 0xff}}},\n    {{{   -25,     43,    -76}, 0, {     0,      0}, {0xe7, 0x5d, 0xaf, 0xff}}},\n    {{{    63,    -28,    -76}, 0, {     0,      0}, {0x13, 0xae, 0xa2, 0xff}}},\n    {{{    79,     10,    -94}, 0, {     0,      0}, {0x43, 0x11, 0x96, 0xff}}},\n    {{{   122,    -43,    -30}, 0, {     0,      0}, {0x6a, 0xd5, 0xcc, 0xff}}},\n    {{{    91,    -63,      0}, 0, {     0,      0}, {0x39, 0x8f, 0x00, 0xff}}},\n    {{{   122,    -43,     30}, 0, {     0,      0}, {0x6b, 0xd5, 0x34, 0xff}}},\n    {{{    91,     28,    -58}, 0, {     0,      0}, {0x5c, 0x41, 0xc7, 0xff}}},\n};\n\n// 0x06007E38\nstatic const Vtx koopa_seg6_vertex_06007E38[] = {\n    {{{  -107,      5,      0}, 0, {     0,      0}, {0x88, 0xd8, 0x00, 0xff}}},\n    {{{   -84,    -15,      0}, 0, {     0,      0}, {0xa0, 0xae, 0x00, 0xff}}},\n    {{{   -56,      0,     73}, 0, {     0,      0}, {0xce, 0xaf, 0x53, 0xff}}},\n    {{{    51,     43,    -76}, 0, {     0,      0}, {0x1b, 0x61, 0xb4, 0xff}}},\n    {{{    91,     28,    -58}, 0, {     0,      0}, {0x5c, 0x41, 0xc7, 0xff}}},\n    {{{    79,     10,    -94}, 0, {     0,      0}, {0x43, 0x11, 0x96, 0xff}}},\n    {{{     0,     22,   -107}, 0, {     0,      0}, {0xee, 0x19, 0x85, 0xff}}},\n    {{{   -25,     43,    -76}, 0, {     0,      0}, {0xe7, 0x5d, 0xaf, 0xff}}},\n    {{{   -56,      0,    -71}, 0, {     0,      0}, {0xce, 0xb0, 0xac, 0xff}}},\n    {{{    63,    -28,     79}, 0, {     0,      0}, {0x15, 0xaf, 0x5e, 0xff}}},\n    {{{    91,    -63,      0}, 0, {     0,      0}, {0x39, 0x8f, 0x00, 0xff}}},\n    {{{   122,    -43,     30}, 0, {     0,      0}, {0x6b, 0xd5, 0x34, 0xff}}},\n    {{{   -68,     17,     86}, 0, {     0,      0}, {0x9d, 0x12, 0x4c, 0xff}}},\n    {{{    91,     28,     61}, 0, {     0,      0}, {0x5c, 0x3f, 0x3a, 0xff}}},\n    {{{    79,     10,     94}, 0, {     0,      0}, {0x42, 0x10, 0x6a, 0xff}}},\n};\n\n// 0x06007F28\nstatic const Vtx koopa_seg6_vertex_06007F28[] = {\n    {{{   -68,     38,     56}, 0, {     0,      0}, {0xab, 0x53, 0x2a, 0xff}}},\n    {{{   -68,     17,     86}, 0, {     0,      0}, {0x9d, 0x12, 0x4c, 0xff}}},\n    {{{     0,     22,    107}, 0, {     0,      0}, {0xef, 0x17, 0x7b, 0xff}}},\n    {{{   -25,     43,     79}, 0, {     0,      0}, {0xe4, 0x5a, 0x54, 0xff}}},\n    {{{   -56,      0,     73}, 0, {     0,      0}, {0xce, 0xaf, 0x53, 0xff}}},\n    {{{    63,    -28,     79}, 0, {     0,      0}, {0x15, 0xaf, 0x5e, 0xff}}},\n    {{{    51,     43,     79}, 0, {     0,      0}, {0x1b, 0x5f, 0x4e, 0xff}}},\n    {{{    79,     10,     94}, 0, {     0,      0}, {0x42, 0x10, 0x6a, 0xff}}},\n    {{{    91,     28,     61}, 0, {     0,      0}, {0x5c, 0x3f, 0x3a, 0xff}}},\n};\n\n// 0x06007FB8 - 0x06008050\nconst Gfx koopa_seg6_dl_06007FB8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, koopa_seg6_texture_06002E48),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&koopa_seg6_lights_06007B48.l, 1),\n    gsSPLight(&koopa_seg6_lights_06007B48.a, 2),\n    gsSPVertex(koopa_seg6_vertex_06007B78, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  0,  5,  4, 0x0),\n    gsSP2Triangles( 0,  3,  5, 0x0,  1,  4,  6, 0x0),\n    gsSP2Triangles( 6,  4,  5, 0x0,  3,  2,  7, 0x0),\n    gsSP2Triangles( 3,  8,  5, 0x0,  8,  3,  7, 0x0),\n    gsSP2Triangles( 9,  5,  8, 0x0,  9,  6,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06008050 - 0x060080F8\nconst Gfx koopa_seg6_dl_06008050[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, koopa_seg6_texture_06002648),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(koopa_seg6_vertex_06007C18, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 0,  2,  3, 0x0,  1,  0,  5, 0x0),\n    gsSP2Triangles( 4,  6,  0, 0x0,  6,  5,  0, 0x0),\n    gsSP2Triangles( 3,  2,  7, 0x0,  8,  2,  1, 0x0),\n    gsSP2Triangles( 2,  8,  7, 0x0,  9,  4,  3, 0x0),\n    gsSP2Triangles( 3, 10,  9, 0x0,  7, 11,  3, 0x0),\n    gsSP2Triangles(11, 10,  3, 0x0, 10, 12,  9, 0x0),\n    gsSP2Triangles( 4,  9, 13, 0x0,  4, 13,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x060080F8 - 0x06008250\nconst Gfx koopa_seg6_dl_060080F8[] = {\n    gsSPLight(&koopa_seg6_lights_06007B60.l, 1),\n    gsSPLight(&koopa_seg6_lights_06007B60.a, 2),\n    gsSPVertex(koopa_seg6_vertex_06007CF8, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP1Triangle( 2,  4,  3, 0x0),\n    gsSPLight(&koopa_seg6_lights_06007B48.l, 1),\n    gsSPLight(&koopa_seg6_lights_06007B48.a, 2),\n    gsSPVertex(koopa_seg6_vertex_06007D48, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  1,  3, 0x0,  2,  1,  5, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  4,  3,  6, 0x0),\n    gsSP2Triangles( 7,  4,  6, 0x0,  2,  5,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 11, 12,  9, 0x0),\n    gsSP2Triangles(12, 11, 13, 0x0, 11, 10, 14, 0x0),\n    gsSP2Triangles( 9,  2, 10, 0x0,  2,  9,  0, 0x0),\n    gsSPVertex(koopa_seg6_vertex_06007E38, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  6,  7,  3, 0x0),\n    gsSP2Triangles( 0,  8,  1, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 2, 12,  0, 0x0, 13, 14, 11, 0x0),\n    gsSP1Triangle(11, 14,  9, 0x0),\n    gsSPVertex(koopa_seg6_vertex_06007F28, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  4,  5,  2, 0x0),\n    gsSP2Triangles( 6,  2,  7, 0x0,  6,  3,  2, 0x0),\n    gsSP2Triangles( 7,  2,  5, 0x0,  6,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06008250 - 0x060082C0\nconst Gfx koopa_seg6_dl_06008250[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(koopa_seg6_dl_06007FB8),\n    gsSPDisplayList(koopa_seg6_dl_06008050),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(koopa_seg6_dl_060080F8),\n    gsSPEndDisplayList(),\n};\n\n// 0x060082C0\nstatic const Lights1 koopa_seg6_lights_060082C0 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x060082D8\nstatic const Lights1 koopa_seg6_lights_060082D8 = gdSPDefLights1(\n    0x00, 0x64, 0x00,\n    0x00, 0xc8, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x060082F0\nstatic const Vtx koopa_seg6_vertex_060082F0[] = {\n    {{{     2,      5,     30}, 0, {  2880,    262}, {0xc7, 0x1e, 0x6d, 0xff}}},\n    {{{     0,    -45,     43}, 0, {  1052,    144}, {0xd7, 0xd7, 0x70, 0xff}}},\n    {{{    28,    -45,     43}, 0, {  1040,    916}, {0x59, 0xf7, 0x59, 0xff}}},\n    {{{    28,    -73,     20}, 0, {   140,    922}, {0x2b, 0x9e, 0x43, 0xff}}},\n    {{{     2,    -73,     20}, 0, {   134,    272}, {0xd2, 0x8f, 0x20, 0xff}}},\n    {{{    28,    -73,    -25}, 0, {   140,    922}, {0x4a, 0x9e, 0xe4, 0xff}}},\n    {{{    28,      7,     38}, 0, {  2916,    906}, {0x4e, 0x2b, 0x59, 0xff}}},\n    {{{     2,    -73,    -25}, 0, {   134,    272}, {0xd9, 0x9a, 0xc0, 0xff}}},\n    {{{    28,    -45,    -48}, 0, {  1040,    916}, {0x5a, 0xdd, 0xaf, 0xff}}},\n    {{{     0,    -45,    -45}, 0, {  1052,    144}, {0xc5, 0xf4, 0x91, 0xff}}},\n    {{{    28,      7,    -43}, 0, {  2916,    906}, {0x4e, 0x21, 0xa3, 0xff}}},\n    {{{     2,      5,    -33}, 0, {  2880,    262}, {0xc8, 0x33, 0x9b, 0xff}}},\n    {{{     0,     40,    -10}, 0, {  4032,    248}, {0xc8, 0x67, 0xd1, 0xff}}},\n    {{{    28,     40,    -15}, 0, {  4040,    898}, {0x17, 0x64, 0xb7, 0xff}}},\n    {{{    28,     40,     12}, 0, {  4040,    898}, {0x45, 0x65, 0x1e, 0xff}}},\n    {{{     0,     40,      5}, 0, {  4032,    248}, {0xb1, 0x52, 0x37, 0xff}}},\n};\n\n// 0x060083F0\nstatic const Vtx koopa_seg6_vertex_060083F0[] = {\n    {{{    28,      7,     38}, 0, {   938,    710}, {0x4e, 0x2b, 0x59, 0xff}}},\n    {{{    28,    -45,    -48}, 0, {   -52,    240}, {0x5a, 0xdd, 0xaf, 0xff}}},\n    {{{    28,      7,    -43}, 0, {    14,    710}, {0x4e, 0x21, 0xa3, 0xff}}},\n    {{{    28,     40,    -15}, 0, {   304,    990}, {0x17, 0x64, 0xb7, 0xff}}},\n    {{{    28,     40,     12}, 0, {   650,    990}, {0x45, 0x65, 0x1e, 0xff}}},\n    {{{    28,    -45,     43}, 0, {  1008,    240}, {0x59, 0xf7, 0x59, 0xff}}},\n    {{{    28,    -73,    -25}, 0, {   212,     16}, {0x4a, 0x9e, 0xe4, 0xff}}},\n    {{{    28,    -73,     20}, 0, {   742,     16}, {0x2b, 0x9e, 0x43, 0xff}}},\n};\n\n// 0x06008470\nstatic const Vtx koopa_seg6_vertex_06008470[] = {\n    {{{     0,     40,      5}, 0, {     0,      0}, {0xb1, 0x52, 0x37, 0xff}}},\n    {{{     0,     40,    -10}, 0, {     0,      0}, {0xc8, 0x67, 0xd1, 0xff}}},\n    {{{   -22,    -20,    -20}, 0, {     0,      0}, {0x90, 0x22, 0xd1, 0xff}}},\n    {{{   -22,    -20,     15}, 0, {     0,      0}, {0x8c, 0x1c, 0x2a, 0xff}}},\n    {{{     2,      5,     30}, 0, {     0,      0}, {0xc7, 0x1e, 0x6d, 0xff}}},\n    {{{     2,      5,    -33}, 0, {     0,      0}, {0xc8, 0x33, 0x9b, 0xff}}},\n    {{{   -28,    -48,    -15}, 0, {     0,      0}, {0x8d, 0xd7, 0xe0, 0xff}}},\n    {{{     0,    -45,    -45}, 0, {     0,      0}, {0xc5, 0xf4, 0x91, 0xff}}},\n    {{{   -28,    -48,     10}, 0, {     0,      0}, {0x97, 0xe2, 0x3f, 0xff}}},\n    {{{     0,    -45,     43}, 0, {     0,      0}, {0xd7, 0xd7, 0x70, 0xff}}},\n    {{{     2,    -73,    -25}, 0, {     0,      0}, {0xd9, 0x9a, 0xc0, 0xff}}},\n    {{{     2,    -73,     20}, 0, {     0,      0}, {0xd2, 0x8f, 0x20, 0xff}}},\n};\n\n// 0x06008530 - 0x060085E8\nconst Gfx koopa_seg6_dl_06008530[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, koopa_seg6_texture_06003648),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&koopa_seg6_lights_060082C0.l, 1),\n    gsSPLight(&koopa_seg6_lights_060082C0.a, 2),\n    gsSPVertex(koopa_seg6_vertex_060082F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  4,  5,  3, 0x0),\n    gsSP2Triangles( 0,  2,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  5,  7, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 9, 10,  8, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 13, 10, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0, 12, 15, 14, 0x0),\n    gsSP2Triangles( 6, 14, 15, 0x0,  6, 15,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x060085E8 - 0x06008640\nconst Gfx koopa_seg6_dl_060085E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, koopa_seg6_texture_06003E48),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(koopa_seg6_vertex_060083F0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 2,  4,  0, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 5,  6,  1, 0x0,  5,  7,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06008640 - 0x060086D0\nconst Gfx koopa_seg6_dl_06008640[] = {\n    gsSPLight(&koopa_seg6_lights_060082D8.l, 1),\n    gsSPLight(&koopa_seg6_lights_060082D8.a, 2),\n    gsSPVertex(koopa_seg6_vertex_06008470, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  4,  0, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles( 3,  2,  6, 0x0,  7,  6,  2, 0x0),\n    gsSP2Triangles( 7,  2,  5, 0x0,  3,  6,  8, 0x0),\n    gsSP2Triangles( 4,  3,  8, 0x0,  4,  8,  9, 0x0),\n    gsSP2Triangles( 6, 10, 11, 0x0,  7, 10,  6, 0x0),\n    gsSP2Triangles( 6, 11,  8, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x060086D0 - 0x06008740\nconst Gfx koopa_seg6_dl_060086D0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(koopa_seg6_dl_06008530),\n    gsSPDisplayList(koopa_seg6_dl_060085E8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(koopa_seg6_dl_06008640),\n    gsSPEndDisplayList(),\n};\n\n// 0x06008740\nstatic const Lights1 koopa_seg6_lights_06008740 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x06008758\nstatic const Lights1 koopa_seg6_lights_06008758 = gdSPDefLights1(\n    0x00, 0x64, 0x00,\n    0x00, 0xc8, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x06008770\nstatic const Vtx koopa_seg6_vertex_06008770[] = {\n    {{{    28,      7,    -35}, 0, {   648,    906}, {0x50, 0x21, 0xa4, 0xff}}},\n    {{{    28,    -45,    -43}, 0, {   216,    916}, {0x5b, 0xdb, 0xb0, 0xff}}},\n    {{{     0,    -45,    -40}, 0, {   218,    144}, {0xc6, 0xf4, 0x91, 0xff}}},\n    {{{     2,    -73,    -17}, 0, {     6,    272}, {0xdb, 0x98, 0xc4, 0xff}}},\n    {{{    28,    -73,    -17}, 0, {     8,    922}, {0x4a, 0x9d, 0xe5, 0xff}}},\n    {{{     2,    -73,     25}, 0, {     6,    272}, {0xd3, 0x8f, 0x21, 0xff}}},\n    {{{     2,      5,    -28}, 0, {   640,    262}, {0xc9, 0x32, 0x9a, 0xff}}},\n    {{{    28,    -73,     25}, 0, {     8,    922}, {0x28, 0x9c, 0x42, 0xff}}},\n    {{{     0,    -45,     48}, 0, {   218,    144}, {0xd4, 0xd7, 0x6f, 0xff}}},\n    {{{    28,    -45,     51}, 0, {   216,    916}, {0x57, 0xf6, 0x5b, 0xff}}},\n    {{{     2,      5,     35}, 0, {   640,    262}, {0xc6, 0x20, 0x6b, 0xff}}},\n    {{{    28,      7,     43}, 0, {   648,    906}, {0x4f, 0x2b, 0x59, 0xff}}},\n    {{{    28,     40,     17}, 0, {   908,    898}, {0x47, 0x64, 0x1e, 0xff}}},\n    {{{     0,     40,     12}, 0, {   906,    248}, {0xb2, 0x51, 0x39, 0xff}}},\n    {{{     0,     40,     -5}, 0, {   906,    248}, {0xc7, 0x67, 0xd2, 0xff}}},\n    {{{    28,     40,    -10}, 0, {   908,    898}, {0x1a, 0x63, 0xb6, 0xff}}},\n};\n\n// 0x06008870\nstatic const Vtx koopa_seg6_vertex_06008870[] = {\n    {{{    28,      7,     43}, 0, {   846,    710}, {0x4f, 0x2b, 0x59, 0xff}}},\n    {{{    28,    -45,    -43}, 0, {   -46,    240}, {0x5b, 0xdb, 0xb0, 0xff}}},\n    {{{    28,      7,    -35}, 0, {    14,    710}, {0x50, 0x21, 0xa4, 0xff}}},\n    {{{    28,     40,    -10}, 0, {   274,    990}, {0x1a, 0x63, 0xb6, 0xff}}},\n    {{{    28,     40,     17}, 0, {   586,    990}, {0x47, 0x64, 0x1e, 0xff}}},\n    {{{    28,    -45,     51}, 0, {   908,    240}, {0x57, 0xf6, 0x5b, 0xff}}},\n    {{{    28,    -73,    -17}, 0, {   192,     16}, {0x4a, 0x9d, 0xe5, 0xff}}},\n    {{{    28,    -73,     25}, 0, {   670,     16}, {0x28, 0x9c, 0x42, 0xff}}},\n};\n\n// 0x060088F0\nstatic const Vtx koopa_seg6_vertex_060088F0[] = {\n    {{{   -22,    -20,    -12}, 0, {     0,      0}, {0x8f, 0x22, 0xd3, 0xff}}},\n    {{{   -22,    -20,     20}, 0, {     0,      0}, {0x8c, 0x1e, 0x29, 0xff}}},\n    {{{     0,     40,     12}, 0, {     0,      0}, {0xb2, 0x51, 0x39, 0xff}}},\n    {{{   -28,    -48,    -10}, 0, {     0,      0}, {0x8d, 0xd7, 0xe1, 0xff}}},\n    {{{     0,     40,     -5}, 0, {     0,      0}, {0xc7, 0x67, 0xd2, 0xff}}},\n    {{{     0,    -45,    -40}, 0, {     0,      0}, {0xc6, 0xf4, 0x91, 0xff}}},\n    {{{     2,      5,    -28}, 0, {     0,      0}, {0xc9, 0x32, 0x9a, 0xff}}},\n    {{{     2,      5,     35}, 0, {     0,      0}, {0xc6, 0x20, 0x6b, 0xff}}},\n    {{{   -28,    -48,     17}, 0, {     0,      0}, {0x96, 0xe5, 0x3f, 0xff}}},\n    {{{     0,    -45,     48}, 0, {     0,      0}, {0xd4, 0xd7, 0x6f, 0xff}}},\n    {{{     2,    -73,    -17}, 0, {     0,      0}, {0xdb, 0x98, 0xc4, 0xff}}},\n    {{{     2,    -73,     25}, 0, {     0,      0}, {0xd3, 0x8f, 0x21, 0xff}}},\n};\n\n// 0x060089B0 - 0x06008A68\nconst Gfx koopa_seg6_dl_060089B0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, koopa_seg6_texture_06003648),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&koopa_seg6_lights_06008740.l, 1),\n    gsSPLight(&koopa_seg6_lights_06008740.a, 2),\n    gsSPVertex(koopa_seg6_vertex_06008770, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  4,  5,  3, 0x0),\n    gsSP2Triangles( 0,  2,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  5,  7, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 9, 10,  8, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 13, 10, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0, 12, 15, 14, 0x0),\n    gsSP2Triangles( 6, 14, 15, 0x0,  6, 15,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06008A68 - 0x06008AC0\nconst Gfx koopa_seg6_dl_06008A68[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, koopa_seg6_texture_06003E48),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(koopa_seg6_vertex_06008870, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 2,  4,  0, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 5,  6,  1, 0x0,  5,  7,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06008AC0 - 0x06008B50\nconst Gfx koopa_seg6_dl_06008AC0[] = {\n    gsSPLight(&koopa_seg6_lights_06008758.l, 1),\n    gsSPLight(&koopa_seg6_lights_06008758.a, 2),\n    gsSPVertex(koopa_seg6_vertex_060088F0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  5,  0,  6, 0x0),\n    gsSP2Triangles( 5,  3,  0, 0x0,  4,  6,  0, 0x0),\n    gsSP2Triangles( 1,  7,  2, 0x0,  3,  8,  1, 0x0),\n    gsSP2Triangles( 7,  1,  8, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 3, 10, 11, 0x0,  3, 11,  8, 0x0),\n    gsSP2Triangles( 5, 10,  3, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06008B50 - 0x06008BC0\nconst Gfx koopa_seg6_dl_06008B50[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(koopa_seg6_dl_060089B0),\n    gsSPDisplayList(koopa_seg6_dl_06008A68),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(koopa_seg6_dl_06008AC0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06008BC0\nstatic const Vtx koopa_seg6_vertex_06008BC0[] = {\n    {{{    27,    -76,    -21}, 0, {     0,      0}, {0xff, 0x8d, 0xcb, 0x00}}},\n    {{{    27,    -76,     26}, 0, {     0,      0}, {0xff, 0x8d, 0x35, 0x00}}},\n    {{{     1,    -76,     26}, 0, {     0,      0}, {0xd2, 0x95, 0x2f, 0x00}}},\n    {{{     1,    -76,    -21}, 0, {     0,      0}, {0xd2, 0x95, 0xd1, 0x00}}},\n    {{{    26,     40,     17}, 0, {     0,      0}, {0xef, 0x70, 0x38, 0x00}}},\n    {{{    26,     40,    -13}, 0, {     0,      0}, {0xef, 0x70, 0xc8, 0x00}}},\n    {{{     1,     39,     -7}, 0, {     0,      0}, {0xb8, 0x5a, 0xcc, 0x00}}},\n    {{{     1,     39,     11}, 0, {     0,      0}, {0xb8, 0x5a, 0x34, 0x00}}},\n    {{{   -30,    -49,    -11}, 0, {     0,      0}, {0x91, 0xdb, 0xd0, 0x00}}},\n    {{{   -30,    -49,     16}, 0, {     0,      0}, {0x91, 0xdb, 0x30, 0x00}}},\n    {{{   -25,    -23,     21}, 0, {     0,      0}, {0x8f, 0x25, 0x2c, 0x00}}},\n    {{{   -25,    -23,    -16}, 0, {     0,      0}, {0x8f, 0x25, 0xd4, 0x00}}},\n    {{{    27,    -49,     49}, 0, {     0,      0}, {0xf2, 0xdf, 0x79, 0x00}}},\n    {{{    27,      6,     43}, 0, {     0,      0}, {0xe6, 0x30, 0x72, 0x00}}},\n    {{{     1,      5,     35}, 0, {     0,      0}, {0xc3, 0x2b, 0x66, 0x00}}},\n    {{{    -3,    -48,     48}, 0, {     0,      0}, {0xc9, 0xe0, 0x6d, 0x00}}},\n};\n\n// 0x06008CC0\nstatic const Vtx koopa_seg6_vertex_06008CC0[] = {\n    {{{    27,      6,    -38}, 0, {     0,      0}, {0xe6, 0x30, 0x8e, 0x00}}},\n    {{{    27,    -49,    -45}, 0, {     0,      0}, {0xf2, 0xdf, 0x87, 0x00}}},\n    {{{    -3,    -48,    -43}, 0, {     0,      0}, {0xc9, 0xe0, 0x93, 0x00}}},\n    {{{     1,      5,    -30}, 0, {     0,      0}, {0xc3, 0x2b, 0x9a, 0x00}}},\n    {{{   -30,    -49,     16}, 0, {     0,      0}, {0x91, 0xdb, 0x30, 0x00}}},\n    {{{     1,    -76,     26}, 0, {     0,      0}, {0xd2, 0x95, 0x2f, 0x00}}},\n    {{{    -3,    -48,     48}, 0, {     0,      0}, {0xc9, 0xe0, 0x6d, 0x00}}},\n    {{{     1,    -76,    -21}, 0, {     0,      0}, {0xd2, 0x95, 0xd1, 0x00}}},\n    {{{   -30,    -49,    -11}, 0, {     0,      0}, {0x91, 0xdb, 0xd0, 0x00}}},\n    {{{     1,      5,     35}, 0, {     0,      0}, {0xc3, 0x2b, 0x66, 0x00}}},\n    {{{   -25,    -23,     21}, 0, {     0,      0}, {0x8f, 0x25, 0x2c, 0x00}}},\n    {{{   -25,    -23,    -16}, 0, {     0,      0}, {0x8f, 0x25, 0xd4, 0x00}}},\n    {{{     1,     39,     -7}, 0, {     0,      0}, {0xb8, 0x5a, 0xcc, 0x00}}},\n    {{{    26,     40,    -13}, 0, {     0,      0}, {0xef, 0x70, 0xc8, 0x00}}},\n};\n\n// 0x06008DA0\nstatic const Vtx koopa_seg6_vertex_06008DA0[] = {\n    {{{    27,      6,     43}, 0, {     0,      0}, {0xe6, 0x30, 0x72, 0x00}}},\n    {{{    26,     40,     17}, 0, {     0,      0}, {0xef, 0x70, 0x38, 0x00}}},\n    {{{     1,     39,     11}, 0, {     0,      0}, {0xb8, 0x5a, 0x34, 0x00}}},\n    {{{     1,      5,     35}, 0, {     0,      0}, {0xc3, 0x2b, 0x66, 0x00}}},\n    {{{    -3,    -48,     48}, 0, {     0,      0}, {0xc9, 0xe0, 0x6d, 0x00}}},\n    {{{     1,    -76,     26}, 0, {     0,      0}, {0xd2, 0x95, 0x2f, 0x00}}},\n    {{{    27,    -76,     26}, 0, {     0,      0}, {0xff, 0x8d, 0x35, 0x00}}},\n    {{{    27,    -49,     49}, 0, {     0,      0}, {0xf2, 0xdf, 0x79, 0x00}}},\n    {{{   -30,    -49,    -11}, 0, {     0,      0}, {0x91, 0xdb, 0xd0, 0x00}}},\n    {{{     1,    -76,    -21}, 0, {     0,      0}, {0xd2, 0x95, 0xd1, 0x00}}},\n    {{{   -30,    -49,     16}, 0, {     0,      0}, {0x91, 0xdb, 0x30, 0x00}}},\n    {{{    27,    -49,    -45}, 0, {     0,      0}, {0xf2, 0xdf, 0x87, 0x00}}},\n    {{{    27,    -76,    -21}, 0, {     0,      0}, {0xff, 0x8d, 0xcb, 0x00}}},\n    {{{    -3,    -48,    -43}, 0, {     0,      0}, {0xc9, 0xe0, 0x93, 0x00}}},\n};\n\n// 0x06008E80\nstatic const Vtx koopa_seg6_vertex_06008E80[] = {\n    {{{    27,    -49,     49}, 0, {     0,      0}, {0x7f, 0x01, 0x00, 0x00}}},\n    {{{    27,    -76,     26}, 0, {     0,      0}, {0x7f, 0x01, 0x00, 0x00}}},\n    {{{    27,    -76,    -21}, 0, {     0,      0}, {0x7f, 0x01, 0x00, 0x00}}},\n    {{{    27,    -49,    -45}, 0, {     0,      0}, {0x7f, 0x01, 0x00, 0x00}}},\n    {{{     1,     39,     -7}, 0, {     0,      0}, {0xb8, 0x5a, 0xcc, 0x00}}},\n    {{{     1,      5,    -30}, 0, {     0,      0}, {0xc3, 0x2b, 0x9a, 0x00}}},\n    {{{   -25,    -23,    -16}, 0, {     0,      0}, {0x8f, 0x25, 0xd4, 0x00}}},\n    {{{   -25,    -23,     21}, 0, {     0,      0}, {0x8f, 0x25, 0x2c, 0x00}}},\n    {{{     1,      5,     35}, 0, {     0,      0}, {0xc3, 0x2b, 0x66, 0x00}}},\n    {{{     1,     39,     11}, 0, {     0,      0}, {0xb8, 0x5a, 0x34, 0x00}}},\n    {{{    27,      6,     43}, 0, {     0,      0}, {0x7f, 0x01, 0x00, 0x00}}},\n    {{{    27,      6,    -38}, 0, {     0,      0}, {0x7f, 0x01, 0x00, 0x00}}},\n    {{{    26,     40,    -13}, 0, {     0,      0}, {0x7f, 0x01, 0x00, 0x00}}},\n    {{{    26,     40,     17}, 0, {     0,      0}, {0x7f, 0x01, 0x00, 0x00}}},\n};\n\n// 0x06008F60\nstatic const Vtx koopa_seg6_vertex_06008F60[] = {\n    {{{    61,     -6,    -30}, 0, {     0,      0}, {0xe3, 0xe0, 0x8a, 0x00}}},\n    {{{    61,    -25,      0}, 0, {     0,      0}, {0xf0, 0x83, 0x00, 0x00}}},\n    {{{    -1,    -17,      0}, 0, {     0,      0}, {0xf0, 0x83, 0x00, 0x00}}},\n    {{{    -1,     -6,    -16}, 0, {     0,      0}, {0xe3, 0xe0, 0x8a, 0x00}}},\n    {{{    60,     34,     11}, 0, {     0,      0}, {0xdb, 0x68, 0x3e, 0x00}}},\n    {{{    60,     34,    -11}, 0, {     0,      0}, {0xdb, 0x68, 0xc2, 0x00}}},\n    {{{    -1,     16,      0}, 0, {     0,      0}, {0xd2, 0x76, 0x00, 0x00}}},\n    {{{    61,     -6,    -30}, 0, {     0,      0}, {0x7f, 0x01, 0x00, 0x00}}},\n    {{{    60,     34,    -11}, 0, {     0,      0}, {0x7f, 0x01, 0x00, 0x00}}},\n    {{{    60,     34,     11}, 0, {     0,      0}, {0x7f, 0x01, 0x00, 0x00}}},\n    {{{    61,     -6,     29}, 0, {     0,      0}, {0x7f, 0x01, 0x00, 0x00}}},\n    {{{    61,    -25,      0}, 0, {     0,      0}, {0x7f, 0x01, 0x00, 0x00}}},\n    {{{    61,     -6,     29}, 0, {     0,      0}, {0xe3, 0xe0, 0x76, 0x00}}},\n    {{{    -1,     -6,     16}, 0, {     0,      0}, {0xe3, 0xe0, 0x76, 0x00}}},\n};\n\n// 0x06009040\nstatic const Vtx koopa_seg6_vertex_06009040[] = {\n    {{{     1,    -76,     20}, 0, {     0,      0}, {0xd2, 0x95, 0x2f, 0x00}}},\n    {{{     1,    -76,    -27}, 0, {     0,      0}, {0xd2, 0x95, 0xd1, 0x00}}},\n    {{{    27,    -76,    -27}, 0, {     0,      0}, {0xff, 0x8d, 0xcb, 0x00}}},\n    {{{    27,    -76,     20}, 0, {     0,      0}, {0xff, 0x8d, 0x35, 0x00}}},\n    {{{     1,     39,    -12}, 0, {     0,      0}, {0xb8, 0x5a, 0xcc, 0x00}}},\n    {{{     1,     39,      6}, 0, {     0,      0}, {0xb8, 0x5a, 0x34, 0x00}}},\n    {{{    26,     40,     12}, 0, {     0,      0}, {0xef, 0x70, 0x38, 0x00}}},\n    {{{    26,     40,    -18}, 0, {     0,      0}, {0xef, 0x70, 0xc8, 0x00}}},\n    {{{   -25,    -23,     15}, 0, {     0,      0}, {0x8f, 0x25, 0x2c, 0x00}}},\n    {{{   -25,    -23,    -22}, 0, {     0,      0}, {0x8f, 0x25, 0xd4, 0x00}}},\n    {{{   -30,    -49,    -17}, 0, {     0,      0}, {0x91, 0xdb, 0xd0, 0x00}}},\n    {{{   -30,    -49,     11}, 0, {     0,      0}, {0x91, 0xdb, 0x30, 0x00}}},\n    {{{    -3,    -48,    -48}, 0, {     0,      0}, {0xc9, 0xe0, 0x93, 0x00}}},\n    {{{     1,      5,    -36}, 0, {     0,      0}, {0xc3, 0x2b, 0x9a, 0x00}}},\n    {{{    27,      6,    -44}, 0, {     0,      0}, {0xe6, 0x30, 0x8e, 0x00}}},\n    {{{    27,    -49,    -50}, 0, {     0,      0}, {0xf2, 0xdf, 0x87, 0x00}}},\n};\n\n// 0x06009140\nstatic const Vtx koopa_seg6_vertex_06009140[] = {\n    {{{     1,      5,     29}, 0, {     0,      0}, {0xc3, 0x2b, 0x66, 0x00}}},\n    {{{    -3,    -48,     42}, 0, {     0,      0}, {0xc9, 0xe0, 0x6d, 0x00}}},\n    {{{    27,    -49,     44}, 0, {     0,      0}, {0xf2, 0xdf, 0x79, 0x00}}},\n    {{{    27,      6,     38}, 0, {     0,      0}, {0xe6, 0x30, 0x72, 0x00}}},\n    {{{    -3,    -48,    -48}, 0, {     0,      0}, {0xc9, 0xe0, 0x93, 0x00}}},\n    {{{     1,    -76,    -27}, 0, {     0,      0}, {0xd2, 0x95, 0xd1, 0x00}}},\n    {{{   -30,    -49,    -17}, 0, {     0,      0}, {0x91, 0xdb, 0xd0, 0x00}}},\n    {{{   -30,    -49,     11}, 0, {     0,      0}, {0x91, 0xdb, 0x30, 0x00}}},\n    {{{     1,    -76,     20}, 0, {     0,      0}, {0xd2, 0x95, 0x2f, 0x00}}},\n    {{{   -25,    -23,    -22}, 0, {     0,      0}, {0x8f, 0x25, 0xd4, 0x00}}},\n    {{{     1,      5,    -36}, 0, {     0,      0}, {0xc3, 0x2b, 0x9a, 0x00}}},\n    {{{   -25,    -23,     15}, 0, {     0,      0}, {0x8f, 0x25, 0x2c, 0x00}}},\n    {{{    26,     40,     12}, 0, {     0,      0}, {0xef, 0x70, 0x38, 0x00}}},\n    {{{     1,     39,      6}, 0, {     0,      0}, {0xb8, 0x5a, 0x34, 0x00}}},\n    {{{     1,     39,    -12}, 0, {     0,      0}, {0xb8, 0x5a, 0xcc, 0x00}}},\n    {{{    26,     40,    -18}, 0, {     0,      0}, {0xef, 0x70, 0xc8, 0x00}}},\n};\n\n// 0x06009240\nstatic const Vtx koopa_seg6_vertex_06009240[] = {\n    {{{     1,      5,    -36}, 0, {     0,      0}, {0xc3, 0x2b, 0x9a, 0x00}}},\n    {{{    26,     40,    -18}, 0, {     0,      0}, {0xef, 0x70, 0xc8, 0x00}}},\n    {{{    27,      6,    -44}, 0, {     0,      0}, {0xe6, 0x30, 0x8e, 0x00}}},\n    {{{    27,    -49,    -50}, 0, {     0,      0}, {0xf2, 0xdf, 0x87, 0x00}}},\n    {{{    27,    -76,    -27}, 0, {     0,      0}, {0xff, 0x8d, 0xcb, 0x00}}},\n    {{{     1,    -76,    -27}, 0, {     0,      0}, {0xd2, 0x95, 0xd1, 0x00}}},\n    {{{    -3,    -48,    -48}, 0, {     0,      0}, {0xc9, 0xe0, 0x93, 0x00}}},\n    {{{   -30,    -49,    -17}, 0, {     0,      0}, {0x91, 0xdb, 0xd0, 0x00}}},\n    {{{     1,    -76,     20}, 0, {     0,      0}, {0xd2, 0x95, 0x2f, 0x00}}},\n    {{{   -30,    -49,     11}, 0, {     0,      0}, {0x91, 0xdb, 0x30, 0x00}}},\n    {{{    -3,    -48,     42}, 0, {     0,      0}, {0xc9, 0xe0, 0x6d, 0x00}}},\n    {{{    27,    -76,     20}, 0, {     0,      0}, {0xff, 0x8d, 0x35, 0x00}}},\n    {{{    27,    -49,     44}, 0, {     0,      0}, {0xf2, 0xdf, 0x79, 0x00}}},\n    {{{    27,    -49,     44}, 0, {     0,      0}, {0x7f, 0x01, 0x00, 0x00}}},\n    {{{    27,    -76,     20}, 0, {     0,      0}, {0x7f, 0x01, 0x00, 0x00}}},\n    {{{    27,    -76,    -27}, 0, {     0,      0}, {0x7f, 0x01, 0x00, 0x00}}},\n};\n\n// 0x06009340\nstatic const Vtx koopa_seg6_vertex_06009340[] = {\n    {{{    27,    -49,     44}, 0, {     0,      0}, {0x7f, 0x01, 0x00, 0x00}}},\n    {{{    27,    -76,    -27}, 0, {     0,      0}, {0x7f, 0x01, 0x00, 0x00}}},\n    {{{    27,    -49,    -50}, 0, {     0,      0}, {0x7f, 0x01, 0x00, 0x00}}},\n    {{{   -25,    -23,     15}, 0, {     0,      0}, {0x8f, 0x25, 0x2c, 0x00}}},\n    {{{     1,      5,     29}, 0, {     0,      0}, {0xc3, 0x2b, 0x66, 0x00}}},\n    {{{     1,     39,      6}, 0, {     0,      0}, {0xb8, 0x5a, 0x34, 0x00}}},\n    {{{     1,     39,    -12}, 0, {     0,      0}, {0xb8, 0x5a, 0xcc, 0x00}}},\n    {{{     1,      5,    -36}, 0, {     0,      0}, {0xc3, 0x2b, 0x9a, 0x00}}},\n    {{{   -25,    -23,    -22}, 0, {     0,      0}, {0x8f, 0x25, 0xd4, 0x00}}},\n    {{{    27,      6,     38}, 0, {     0,      0}, {0x7f, 0x01, 0x00, 0x00}}},\n    {{{    27,      6,    -44}, 0, {     0,      0}, {0x7f, 0x01, 0x00, 0x00}}},\n    {{{    26,     40,    -18}, 0, {     0,      0}, {0x7f, 0x01, 0x00, 0x00}}},\n    {{{    26,     40,     12}, 0, {     0,      0}, {0x7f, 0x01, 0x00, 0x00}}},\n};\n\n// 0x06009410\nstatic const Vtx koopa_seg6_vertex_06009410[] = {\n    {{{    -1,     -6,     16}, 0, {     0,      0}, {0xe3, 0xe0, 0x76, 0x00}}},\n    {{{    -1,    -17,      0}, 0, {     0,      0}, {0xf0, 0x83, 0x00, 0x00}}},\n    {{{    61,    -25,      0}, 0, {     0,      0}, {0xf0, 0x83, 0x00, 0x00}}},\n    {{{    61,     -6,     29}, 0, {     0,      0}, {0xe3, 0xe0, 0x76, 0x00}}},\n    {{{    -1,     16,      0}, 0, {     0,      0}, {0xd2, 0x76, 0x00, 0x00}}},\n    {{{    60,     34,     10}, 0, {     0,      0}, {0xdb, 0x68, 0x3e, 0x00}}},\n    {{{    60,     34,    -11}, 0, {     0,      0}, {0xdb, 0x68, 0xc2, 0x00}}},\n    {{{    61,    -25,      0}, 0, {     0,      0}, {0x7f, 0x01, 0x00, 0x00}}},\n    {{{    61,     -6,    -30}, 0, {     0,      0}, {0x7f, 0x01, 0x00, 0x00}}},\n    {{{    60,     34,    -11}, 0, {     0,      0}, {0x7f, 0x01, 0x00, 0x00}}},\n    {{{    60,     34,     10}, 0, {     0,      0}, {0x7f, 0x01, 0x00, 0x00}}},\n    {{{    61,     -6,     29}, 0, {     0,      0}, {0x7f, 0x01, 0x00, 0x00}}},\n    {{{    -1,     -6,    -17}, 0, {     0,      0}, {0xe3, 0xe0, 0x8a, 0x00}}},\n    {{{    61,     -6,    -30}, 0, {     0,      0}, {0xe3, 0xe0, 0x8a, 0x00}}},\n};\n\n// 0x060094F0\nstatic const Vtx koopa_seg6_vertex_060094F0[] = {\n    {{{    14,    -41,     15}, 0, {     0,      0}, {0xdc, 0x98, 0x3e, 0x00}}},\n    {{{    14,    -41,    -19}, 0, {     0,      0}, {0xdc, 0x98, 0xc2, 0x00}}},\n    {{{    48,    -41,    -22}, 0, {     0,      0}, {0x23, 0x99, 0xc0, 0x00}}},\n    {{{    48,    -41,     18}, 0, {     0,      0}, {0x23, 0x99, 0x40, 0x00}}},\n    {{{    44,      5,    -22}, 0, {     0,      0}, {0x1d, 0x74, 0xd8, 0x00}}},\n    {{{    20,     35,     -2}, 0, {     0,      0}, {0x15, 0x7d, 0x00, 0x00}}},\n    {{{    44,      5,     18}, 0, {     0,      0}, {0x1d, 0x74, 0x28, 0x00}}},\n    {{{    -6,     24,     -2}, 0, {     0,      0}, {0xa1, 0x53, 0x00, 0x00}}},\n    {{{    -6,    -18,    -23}, 0, {     0,      0}, {0x96, 0xe3, 0xc2, 0x00}}},\n    {{{    -6,    -18,     19}, 0, {     0,      0}, {0x96, 0xe3, 0x3e, 0x00}}},\n    {{{    67,    -22,     20}, 0, {     0,      0}, {0x68, 0xdf, 0x3f, 0x00}}},\n    {{{    67,    -22,    -24}, 0, {     0,      0}, {0x68, 0xdf, 0xc1, 0x00}}},\n    {{{    67,     15,    -11}, 0, {     0,      0}, {0x3a, 0x5e, 0xc3, 0x00}}},\n    {{{    67,     15,      6}, 0, {     0,      0}, {0x3a, 0x5e, 0x3d, 0x00}}},\n};\n\n// 0x060095D0\nstatic const Vtx koopa_seg6_vertex_060095D0[] = {\n    {{{    14,     15,    -37}, 0, {     0,      0}, {0xdb, 0x2b, 0x8f, 0x00}}},\n    {{{    44,     -8,    -42}, 0, {     0,      0}, {0x26, 0x15, 0x89, 0x00}}},\n    {{{    30,    -22,    -37}, 0, {     0,      0}, {0x05, 0xcc, 0x8d, 0x00}}},\n    {{{    14,     15,     33}, 0, {     0,      0}, {0xdb, 0x2b, 0x71, 0x00}}},\n    {{{    14,    -22,     33}, 0, {     0,      0}, {0xdc, 0xd5, 0x71, 0x00}}},\n    {{{    30,    -22,     33}, 0, {     0,      0}, {0x05, 0xcc, 0x73, 0x00}}},\n    {{{    67,     15,      6}, 0, {     0,      0}, {0x3a, 0x5e, 0x3d, 0x00}}},\n    {{{    44,      5,     18}, 0, {     0,      0}, {0x1d, 0x74, 0x28, 0x00}}},\n    {{{    44,     -8,     38}, 0, {     0,      0}, {0x26, 0x15, 0x77, 0x00}}},\n    {{{    20,     35,     -2}, 0, {     0,      0}, {0x15, 0x7d, 0x00, 0x00}}},\n    {{{    -6,     24,     -2}, 0, {     0,      0}, {0xa1, 0x53, 0x00, 0x00}}},\n    {{{    67,     15,    -11}, 0, {     0,      0}, {0x3a, 0x5e, 0xc3, 0x00}}},\n    {{{    44,      5,    -22}, 0, {     0,      0}, {0x1d, 0x74, 0xd8, 0x00}}},\n    {{{    67,    -22,    -24}, 0, {     0,      0}, {0x68, 0xdf, 0xc1, 0x00}}},\n    {{{    48,    -41,    -22}, 0, {     0,      0}, {0x23, 0x99, 0xc0, 0x00}}},\n};\n\n// 0x060096C0\nstatic const Vtx koopa_seg6_vertex_060096C0[] = {\n    {{{    14,    -22,    -37}, 0, {     0,      0}, {0xdc, 0xd5, 0x8f, 0x00}}},\n    {{{    14,    -41,    -19}, 0, {     0,      0}, {0xdc, 0x98, 0xc2, 0x00}}},\n    {{{    -6,    -18,    -23}, 0, {     0,      0}, {0x96, 0xe3, 0xc2, 0x00}}},\n    {{{    -6,    -18,     19}, 0, {     0,      0}, {0x96, 0xe3, 0x3e, 0x00}}},\n    {{{    14,    -41,     15}, 0, {     0,      0}, {0xdc, 0x98, 0x3e, 0x00}}},\n    {{{    14,    -22,     33}, 0, {     0,      0}, {0xdc, 0xd5, 0x71, 0x00}}},\n    {{{    48,    -41,     18}, 0, {     0,      0}, {0x23, 0x99, 0x40, 0x00}}},\n    {{{    67,    -22,     20}, 0, {     0,      0}, {0x68, 0xdf, 0x3f, 0x00}}},\n    {{{    44,     -8,     38}, 0, {     0,      0}, {0x26, 0x15, 0x77, 0x00}}},\n    {{{    67,     15,      6}, 0, {     0,      0}, {0x3a, 0x5e, 0x3d, 0x00}}},\n    {{{    -6,     24,     -2}, 0, {     0,      0}, {0xa1, 0x53, 0x00, 0x00}}},\n    {{{    14,     15,    -37}, 0, {     0,      0}, {0xdb, 0x2b, 0x8f, 0x00}}},\n    {{{    14,     15,     33}, 0, {     0,      0}, {0xdb, 0x2b, 0x71, 0x00}}},\n    {{{    44,      5,     18}, 0, {     0,      0}, {0x1d, 0x74, 0x28, 0x00}}},\n    {{{    30,    -22,    -37}, 0, {     0,      0}, {0x05, 0xcc, 0x8d, 0x00}}},\n};\n\n// 0x060097B0\nstatic const Vtx koopa_seg6_vertex_060097B0[] = {\n    {{{    14,     15,    -37}, 0, {     0,      0}, {0xdb, 0x2b, 0x8f, 0x00}}},\n    {{{    20,     35,     -2}, 0, {     0,      0}, {0x15, 0x7d, 0x00, 0x00}}},\n    {{{    44,      5,    -22}, 0, {     0,      0}, {0x1d, 0x74, 0xd8, 0x00}}},\n    {{{    67,    -22,     20}, 0, {     0,      0}, {0x68, 0xdf, 0x3f, 0x00}}},\n    {{{    48,    -41,     18}, 0, {     0,      0}, {0x23, 0x99, 0x40, 0x00}}},\n    {{{    48,    -41,    -22}, 0, {     0,      0}, {0x23, 0x99, 0xc0, 0x00}}},\n    {{{    67,    -22,    -24}, 0, {     0,      0}, {0x68, 0xdf, 0xc1, 0x00}}},\n    {{{    30,    -22,    -37}, 0, {     0,      0}, {0x05, 0xcc, 0x8d, 0x00}}},\n    {{{    14,    -41,    -19}, 0, {     0,      0}, {0xdc, 0x98, 0xc2, 0x00}}},\n    {{{    -6,    -18,    -23}, 0, {     0,      0}, {0x96, 0xe3, 0xc2, 0x00}}},\n    {{{    14,    -41,     15}, 0, {     0,      0}, {0xdc, 0x98, 0x3e, 0x00}}},\n    {{{    -6,    -18,     19}, 0, {     0,      0}, {0x96, 0xe3, 0x3e, 0x00}}},\n    {{{    30,    -22,     33}, 0, {     0,      0}, {0x05, 0xcc, 0x73, 0x00}}},\n    {{{    14,    -22,     33}, 0, {     0,      0}, {0xdc, 0xd5, 0x71, 0x00}}},\n    {{{    14,    -22,    -37}, 0, {     0,      0}, {0xdc, 0xd5, 0x8f, 0x00}}},\n};\n\n// 0x060098A0\nstatic const Vtx koopa_seg6_vertex_060098A0[] = {\n    {{{    14,     15,     33}, 0, {     0,      0}, {0xdb, 0x2b, 0x71, 0x00}}},\n    {{{    -6,     24,     -2}, 0, {     0,      0}, {0xa1, 0x53, 0x00, 0x00}}},\n    {{{    -6,    -18,     19}, 0, {     0,      0}, {0x96, 0xe3, 0x3e, 0x00}}},\n    {{{    14,     15,    -37}, 0, {     0,      0}, {0xdb, 0x2b, 0x8f, 0x00}}},\n    {{{    14,    -22,    -37}, 0, {     0,      0}, {0xdc, 0xd5, 0x8f, 0x00}}},\n    {{{    -6,    -18,    -23}, 0, {     0,      0}, {0x96, 0xe3, 0xc2, 0x00}}},\n    {{{    44,     -8,    -42}, 0, {     0,      0}, {0x26, 0x15, 0x89, 0x00}}},\n    {{{    67,     15,    -11}, 0, {     0,      0}, {0x3a, 0x5e, 0xc3, 0x00}}},\n    {{{    67,    -22,    -24}, 0, {     0,      0}, {0x68, 0xdf, 0xc1, 0x00}}},\n    {{{    30,    -22,     33}, 0, {     0,      0}, {0x05, 0xcc, 0x73, 0x00}}},\n    {{{    44,     -8,     38}, 0, {     0,      0}, {0x26, 0x15, 0x77, 0x00}}},\n    {{{    44,      5,     18}, 0, {     0,      0}, {0x1d, 0x74, 0x28, 0x00}}},\n    {{{    67,     15,      6}, 0, {     0,      0}, {0x3a, 0x5e, 0x3d, 0x00}}},\n    {{{    44,      5,    -22}, 0, {     0,      0}, {0x1d, 0x74, 0xd8, 0x00}}},\n    {{{    48,    -41,    -22}, 0, {     0,      0}, {0x23, 0x99, 0xc0, 0x00}}},\n    {{{    30,    -22,    -37}, 0, {     0,      0}, {0x05, 0xcc, 0x8d, 0x00}}},\n};\n\n// 0x060099A0\nstatic const Vtx koopa_seg6_vertex_060099A0[] = {\n    {{{    44,     -8,     38}, 0, {     0,      0}, {0x26, 0x15, 0x77, 0x00}}},\n    {{{    30,    -22,     33}, 0, {     0,      0}, {0x05, 0xcc, 0x73, 0x00}}},\n    {{{    48,    -41,     18}, 0, {     0,      0}, {0x23, 0x99, 0x40, 0x00}}},\n    {{{    44,      5,     18}, 0, {     0,      0}, {0x1d, 0x74, 0x28, 0x00}}},\n    {{{    20,     35,     -2}, 0, {     0,      0}, {0x15, 0x7d, 0x00, 0x00}}},\n    {{{    14,     15,     33}, 0, {     0,      0}, {0xdb, 0x2b, 0x71, 0x00}}},\n    {{{    44,      5,    -22}, 0, {     0,      0}, {0x1d, 0x74, 0xd8, 0x00}}},\n    {{{    44,     -8,    -42}, 0, {     0,      0}, {0x26, 0x15, 0x89, 0x00}}},\n    {{{    14,     15,    -37}, 0, {     0,      0}, {0xdb, 0x2b, 0x8f, 0x00}}},\n};\n\n// 0x06009A30\nstatic const Vtx koopa_seg6_vertex_06009A30[] = {\n    {{{     0,     -2,    -10}, 0, {     0,      0}, {0xef, 0x00, 0x83, 0x00}}},\n    {{{    -1,      8,     -2}, 0, {     0,      0}, {0xeb, 0x76, 0xda, 0x00}}},\n    {{{    52,     17,     -4}, 0, {     0,      0}, {0xeb, 0x76, 0xda, 0x00}}},\n    {{{    53,      0,    -17}, 0, {     0,      0}, {0xef, 0x00, 0x83, 0x00}}},\n    {{{    -1,      4,     10}, 0, {     0,      0}, {0xed, 0x49, 0x65, 0x00}}},\n    {{{    52,     10,     16}, 0, {     0,      0}, {0xed, 0x49, 0x65, 0x00}}},\n    {{{     0,     -8,     10}, 0, {     0,      0}, {0xf1, 0xb6, 0x65, 0x00}}},\n    {{{    53,    -11,     16}, 0, {     0,      0}, {0xf1, 0xb6, 0x65, 0x00}}},\n    {{{     0,    -13,     -2}, 0, {     0,      0}, {0xf2, 0x88, 0xda, 0x00}}},\n    {{{    53,    -18,     -4}, 0, {     0,      0}, {0xf2, 0x88, 0xda, 0x00}}},\n};\n\n// 0x06009AD0\nstatic const Vtx koopa_seg6_vertex_06009AD0[] = {\n    {{{    48,    -41,    -18}, 0, {     0,      0}, {0x23, 0x99, 0xc0, 0x00}}},\n    {{{    48,    -41,     22}, 0, {     0,      0}, {0x23, 0x99, 0x40, 0x00}}},\n    {{{    14,    -41,     19}, 0, {     0,      0}, {0xdc, 0x98, 0x3e, 0x00}}},\n    {{{    14,    -41,    -15}, 0, {     0,      0}, {0xdc, 0x98, 0xc2, 0x00}}},\n    {{{    44,      5,    -18}, 0, {     0,      0}, {0x1d, 0x74, 0xd8, 0x00}}},\n    {{{    20,     35,      2}, 0, {     0,      0}, {0x15, 0x7d, 0x00, 0x00}}},\n    {{{    44,      5,     22}, 0, {     0,      0}, {0x1d, 0x74, 0x28, 0x00}}},\n    {{{    -6,    -18,    -19}, 0, {     0,      0}, {0x96, 0xe3, 0xc2, 0x00}}},\n    {{{    -6,    -18,     23}, 0, {     0,      0}, {0x96, 0xe3, 0x3e, 0x00}}},\n    {{{    -6,     24,      2}, 0, {     0,      0}, {0xa1, 0x53, 0x00, 0x00}}},\n    {{{    67,     15,     -6}, 0, {     0,      0}, {0x3a, 0x5e, 0xc3, 0x00}}},\n    {{{    67,     15,     11}, 0, {     0,      0}, {0x3a, 0x5e, 0x3d, 0x00}}},\n    {{{    67,    -22,     24}, 0, {     0,      0}, {0x68, 0xdf, 0x3f, 0x00}}},\n    {{{    67,    -22,    -20}, 0, {     0,      0}, {0x68, 0xdf, 0xc1, 0x00}}},\n};\n\n// 0x06009BB0\nstatic const Vtx koopa_seg6_vertex_06009BB0[] = {\n    {{{    30,    -22,     37}, 0, {     0,      0}, {0x05, 0xcc, 0x73, 0x00}}},\n    {{{    44,     -8,     42}, 0, {     0,      0}, {0x26, 0x15, 0x77, 0x00}}},\n    {{{    14,     15,     37}, 0, {     0,      0}, {0xdb, 0x2b, 0x71, 0x00}}},\n    {{{    30,    -22,    -33}, 0, {     0,      0}, {0x05, 0xcc, 0x8d, 0x00}}},\n    {{{    14,    -22,    -33}, 0, {     0,      0}, {0xdc, 0xd5, 0x8f, 0x00}}},\n    {{{    14,     15,    -33}, 0, {     0,      0}, {0xdb, 0x2b, 0x8f, 0x00}}},\n    {{{    44,     -8,    -38}, 0, {     0,      0}, {0x26, 0x15, 0x89, 0x00}}},\n    {{{    44,      5,    -18}, 0, {     0,      0}, {0x1d, 0x74, 0xd8, 0x00}}},\n    {{{    67,     15,     -6}, 0, {     0,      0}, {0x3a, 0x5e, 0xc3, 0x00}}},\n    {{{    -6,     24,      2}, 0, {     0,      0}, {0xa1, 0x53, 0x00, 0x00}}},\n    {{{    20,     35,      2}, 0, {     0,      0}, {0x15, 0x7d, 0x00, 0x00}}},\n    {{{    44,      5,     22}, 0, {     0,      0}, {0x1d, 0x74, 0x28, 0x00}}},\n    {{{    67,     15,     11}, 0, {     0,      0}, {0x3a, 0x5e, 0x3d, 0x00}}},\n    {{{    48,    -41,     22}, 0, {     0,      0}, {0x23, 0x99, 0x40, 0x00}}},\n    {{{    67,    -22,     24}, 0, {     0,      0}, {0x68, 0xdf, 0x3f, 0x00}}},\n};\n\n// 0x06009CA0\nstatic const Vtx koopa_seg6_vertex_06009CA0[] = {\n    {{{    -6,    -18,     23}, 0, {     0,      0}, {0x96, 0xe3, 0x3e, 0x00}}},\n    {{{    14,    -41,     19}, 0, {     0,      0}, {0xdc, 0x98, 0x3e, 0x00}}},\n    {{{    14,    -22,     37}, 0, {     0,      0}, {0xdc, 0xd5, 0x71, 0x00}}},\n    {{{    14,    -22,    -33}, 0, {     0,      0}, {0xdc, 0xd5, 0x8f, 0x00}}},\n    {{{    14,    -41,    -15}, 0, {     0,      0}, {0xdc, 0x98, 0xc2, 0x00}}},\n    {{{    -6,    -18,    -19}, 0, {     0,      0}, {0x96, 0xe3, 0xc2, 0x00}}},\n    {{{    44,     -8,    -38}, 0, {     0,      0}, {0x26, 0x15, 0x89, 0x00}}},\n    {{{    67,    -22,    -20}, 0, {     0,      0}, {0x68, 0xdf, 0xc1, 0x00}}},\n    {{{    48,    -41,    -18}, 0, {     0,      0}, {0x23, 0x99, 0xc0, 0x00}}},\n    {{{    67,     15,     -6}, 0, {     0,      0}, {0x3a, 0x5e, 0xc3, 0x00}}},\n    {{{    14,     15,     37}, 0, {     0,      0}, {0xdb, 0x2b, 0x71, 0x00}}},\n    {{{    -6,     24,      2}, 0, {     0,      0}, {0xa1, 0x53, 0x00, 0x00}}},\n    {{{    14,     15,    -33}, 0, {     0,      0}, {0xdb, 0x2b, 0x8f, 0x00}}},\n    {{{    44,      5,    -18}, 0, {     0,      0}, {0x1d, 0x74, 0xd8, 0x00}}},\n    {{{    30,    -22,     37}, 0, {     0,      0}, {0x05, 0xcc, 0x73, 0x00}}},\n};\n\n// 0x06009D90\nstatic const Vtx koopa_seg6_vertex_06009D90[] = {\n    {{{    44,      5,     22}, 0, {     0,      0}, {0x1d, 0x74, 0x28, 0x00}}},\n    {{{    20,     35,      2}, 0, {     0,      0}, {0x15, 0x7d, 0x00, 0x00}}},\n    {{{    14,     15,     37}, 0, {     0,      0}, {0xdb, 0x2b, 0x71, 0x00}}},\n    {{{    67,    -22,     24}, 0, {     0,      0}, {0x68, 0xdf, 0x3f, 0x00}}},\n    {{{    48,    -41,     22}, 0, {     0,      0}, {0x23, 0x99, 0x40, 0x00}}},\n    {{{    48,    -41,    -18}, 0, {     0,      0}, {0x23, 0x99, 0xc0, 0x00}}},\n    {{{    67,    -22,    -20}, 0, {     0,      0}, {0x68, 0xdf, 0xc1, 0x00}}},\n    {{{    14,    -41,     19}, 0, {     0,      0}, {0xdc, 0x98, 0x3e, 0x00}}},\n    {{{    30,    -22,     37}, 0, {     0,      0}, {0x05, 0xcc, 0x73, 0x00}}},\n    {{{    -6,    -18,    -19}, 0, {     0,      0}, {0x96, 0xe3, 0xc2, 0x00}}},\n    {{{    14,    -41,    -15}, 0, {     0,      0}, {0xdc, 0x98, 0xc2, 0x00}}},\n    {{{    -6,    -18,     23}, 0, {     0,      0}, {0x96, 0xe3, 0x3e, 0x00}}},\n    {{{    30,    -22,    -33}, 0, {     0,      0}, {0x05, 0xcc, 0x8d, 0x00}}},\n    {{{    14,    -22,    -33}, 0, {     0,      0}, {0xdc, 0xd5, 0x8f, 0x00}}},\n    {{{    14,    -22,     37}, 0, {     0,      0}, {0xdc, 0xd5, 0x71, 0x00}}},\n};\n\n// 0x06009E80\nstatic const Vtx koopa_seg6_vertex_06009E80[] = {\n    {{{    -6,    -18,    -19}, 0, {     0,      0}, {0x96, 0xe3, 0xc2, 0x00}}},\n    {{{    -6,     24,      2}, 0, {     0,      0}, {0xa1, 0x53, 0x00, 0x00}}},\n    {{{    14,     15,    -33}, 0, {     0,      0}, {0xdb, 0x2b, 0x8f, 0x00}}},\n    {{{    -6,    -18,     23}, 0, {     0,      0}, {0x96, 0xe3, 0x3e, 0x00}}},\n    {{{    14,    -22,     37}, 0, {     0,      0}, {0xdc, 0xd5, 0x71, 0x00}}},\n    {{{    14,     15,     37}, 0, {     0,      0}, {0xdb, 0x2b, 0x71, 0x00}}},\n    {{{    67,    -22,     24}, 0, {     0,      0}, {0x68, 0xdf, 0x3f, 0x00}}},\n    {{{    67,     15,     11}, 0, {     0,      0}, {0x3a, 0x5e, 0x3d, 0x00}}},\n    {{{    44,     -8,     42}, 0, {     0,      0}, {0x26, 0x15, 0x77, 0x00}}},\n    {{{    44,     -8,    -38}, 0, {     0,      0}, {0x26, 0x15, 0x89, 0x00}}},\n    {{{    30,    -22,    -33}, 0, {     0,      0}, {0x05, 0xcc, 0x8d, 0x00}}},\n    {{{    44,      5,     22}, 0, {     0,      0}, {0x1d, 0x74, 0x28, 0x00}}},\n    {{{    67,     15,     -6}, 0, {     0,      0}, {0x3a, 0x5e, 0xc3, 0x00}}},\n    {{{    44,      5,    -18}, 0, {     0,      0}, {0x1d, 0x74, 0xd8, 0x00}}},\n    {{{    30,    -22,     37}, 0, {     0,      0}, {0x05, 0xcc, 0x73, 0x00}}},\n    {{{    48,    -41,     22}, 0, {     0,      0}, {0x23, 0x99, 0x40, 0x00}}},\n};\n\n// 0x06009F80\nstatic const Vtx koopa_seg6_vertex_06009F80[] = {\n    {{{    48,    -41,    -18}, 0, {     0,      0}, {0x23, 0x99, 0xc0, 0x00}}},\n    {{{    30,    -22,    -33}, 0, {     0,      0}, {0x05, 0xcc, 0x8d, 0x00}}},\n    {{{    44,     -8,    -38}, 0, {     0,      0}, {0x26, 0x15, 0x89, 0x00}}},\n    {{{    14,     15,    -33}, 0, {     0,      0}, {0xdb, 0x2b, 0x8f, 0x00}}},\n    {{{    20,     35,      2}, 0, {     0,      0}, {0x15, 0x7d, 0x00, 0x00}}},\n    {{{    44,      5,    -18}, 0, {     0,      0}, {0x1d, 0x74, 0xd8, 0x00}}},\n    {{{    14,     15,     37}, 0, {     0,      0}, {0xdb, 0x2b, 0x71, 0x00}}},\n    {{{    44,     -8,     42}, 0, {     0,      0}, {0x26, 0x15, 0x77, 0x00}}},\n    {{{    44,      5,     22}, 0, {     0,      0}, {0x1d, 0x74, 0x28, 0x00}}},\n};\n\n// 0x0600A010\nstatic const Vtx koopa_seg6_vertex_0600A010[] = {\n    {{{    53,      0,     17}, 0, {     0,      0}, {0xef, 0x00, 0x7d, 0x00}}},\n    {{{    52,     17,      3}, 0, {     0,      0}, {0xeb, 0x76, 0x26, 0x00}}},\n    {{{    -1,      8,      1}, 0, {     0,      0}, {0xeb, 0x76, 0x26, 0x00}}},\n    {{{     0,     -2,      9}, 0, {     0,      0}, {0xef, 0x00, 0x7d, 0x00}}},\n    {{{    52,     10,    -17}, 0, {     0,      0}, {0xed, 0x49, 0x9b, 0x00}}},\n    {{{    -1,      4,    -11}, 0, {     0,      0}, {0xed, 0x49, 0x9b, 0x00}}},\n    {{{    53,    -11,    -17}, 0, {     0,      0}, {0xf1, 0xb6, 0x9b, 0x00}}},\n    {{{     0,     -8,    -11}, 0, {     0,      0}, {0xf1, 0xb6, 0x9b, 0x00}}},\n    {{{    53,    -18,      3}, 0, {     0,      0}, {0xf2, 0x88, 0x26, 0x00}}},\n    {{{     0,    -13,      1}, 0, {     0,      0}, {0xf2, 0x88, 0x26, 0x00}}},\n};\n\n// 0x0600A0B0\nstatic const Vtx koopa_seg6_vertex_0600A0B0[] = {\n    {{{     0,     51,      0}, 0, {     0,      0}, {0x95, 0x44, 0x00, 0x00}}},\n    {{{    10,     49,     35}, 0, {     0,      0}, {0xac, 0x42, 0x43, 0x00}}},\n    {{{    44,     74,     31}, 0, {     0,      0}, {0xf1, 0x69, 0x44, 0x00}}},\n    {{{    35,     83,      0}, 0, {     0,      0}, {0xdc, 0x79, 0x00, 0x00}}},\n    {{{    14,     21,     64}, 0, {     0,      0}, {0xaf, 0x1e, 0x5c, 0x00}}},\n    {{{    63,     40,     61}, 0, {     0,      0}, {0x17, 0x3d, 0x6c, 0x00}}},\n    {{{   139,     71,     48}, 0, {     0,      0}, {0x46, 0x33, 0x5c, 0x00}}},\n    {{{    86,    112,      0}, 0, {     0,      0}, {0x1f, 0x7b, 0x00, 0x00}}},\n    {{{    91,     82,     51}, 0, {     0,      0}, {0x14, 0x35, 0x71, 0x00}}},\n    {{{    82,     80,      0}, 0, {     0,      0}, {0x42, 0x6c, 0x00, 0x00}}},\n    {{{    98,     22,     59}, 0, {     0,      0}, {0x2f, 0x0e, 0x74, 0x00}}},\n    {{{    53,      2,     86}, 0, {     0,      0}, {0xf2, 0x02, 0x7e, 0x00}}},\n    {{{   -13,     -4,      0}, 0, {     0,      0}, {0x82, 0xf8, 0x00, 0x00}}},\n    {{{    16,    -63,      0}, 0, {     0,      0}, {0xbc, 0x95, 0x00, 0x00}}},\n    {{{    23,    -24,     59}, 0, {     0,      0}, {0xad, 0xcb, 0x4f, 0x00}}},\n};\n\n// 0x0600A1A0\nstatic const Vtx koopa_seg6_vertex_0600A1A0[] = {\n    {{{    68,    -65,     17}, 0, {     0,      0}, {0xe6, 0x8b, 0x28, 0x00}}},\n    {{{    42,    -44,     54}, 0, {     0,      0}, {0xe4, 0xa5, 0x52, 0x00}}},\n    {{{    16,    -63,      0}, 0, {     0,      0}, {0xbc, 0x95, 0x00, 0x00}}},\n    {{{    23,    -24,     59}, 0, {     0,      0}, {0xad, 0xcb, 0x4f, 0x00}}},\n    {{{   101,    -44,     53}, 0, {     0,      0}, {0xf4, 0xae, 0x60, 0x00}}},\n    {{{    97,    -86,      0}, 0, {     0,      0}, {0xdc, 0x87, 0x00, 0x00}}},\n    {{{   146,    -93,      0}, 0, {     0,      0}, {0xf9, 0x82, 0x00, 0x00}}},\n    {{{    14,     21,     64}, 0, {     0,      0}, {0xaf, 0x1e, 0x5c, 0x00}}},\n    {{{    53,      2,     86}, 0, {     0,      0}, {0xf2, 0x02, 0x7e, 0x00}}},\n    {{{    75,    -16,     81}, 0, {     0,      0}, {0x2c, 0xe3, 0x73, 0x00}}},\n    {{{    98,     22,     59}, 0, {     0,      0}, {0x2f, 0x0e, 0x74, 0x00}}},\n    {{{    63,     40,     61}, 0, {     0,      0}, {0x17, 0x3d, 0x6c, 0x00}}},\n    {{{   -13,     -4,      0}, 0, {     0,      0}, {0x82, 0xf8, 0x00, 0x00}}},\n    {{{    14,     21,    -64}, 0, {     0,      0}, {0xaf, 0x1e, 0xa4, 0x00}}},\n    {{{    23,    -24,    -59}, 0, {     0,      0}, {0xad, 0xcb, 0xb1, 0x00}}},\n    {{{    42,    -44,    -54}, 0, {     0,      0}, {0xe4, 0xa5, 0xae, 0x00}}},\n};\n\n// 0x0600A2A0\nstatic const Vtx koopa_seg6_vertex_0600A2A0[] = {\n    {{{    91,     82,    -51}, 0, {     0,      0}, {0x84, 0x19, 0x00, 0x00}}},\n    {{{    91,     82,     51}, 0, {     0,      0}, {0x84, 0x19, 0x00, 0x00}}},\n    {{{    86,    112,      0}, 0, {     0,      0}, {0x84, 0xe9, 0x00, 0x00}}},\n    {{{    35,     83,      0}, 0, {     0,      0}, {0xdc, 0x79, 0x00, 0x00}}},\n    {{{    44,     74,    -32}, 0, {     0,      0}, {0xf1, 0x69, 0xbc, 0x00}}},\n    {{{    10,     49,    -36}, 0, {     0,      0}, {0xac, 0x42, 0xbd, 0x00}}},\n    {{{     0,     51,      0}, 0, {     0,      0}, {0x95, 0x44, 0x00, 0x00}}},\n    {{{    63,     40,    -62}, 0, {     0,      0}, {0x17, 0x3d, 0x94, 0x00}}},\n    {{{    82,     80,      0}, 0, {     0,      0}, {0x42, 0x6c, 0x00, 0x00}}},\n    {{{    63,     40,     61}, 0, {     0,      0}, {0x17, 0x3d, 0x6c, 0x00}}},\n    {{{    98,     22,    -60}, 0, {     0,      0}, {0x2f, 0x0e, 0x8c, 0x00}}},\n    {{{    75,    -16,    -82}, 0, {     0,      0}, {0x2c, 0xe3, 0x8d, 0x00}}},\n    {{{    53,      2,    -86}, 0, {     0,      0}, {0xf2, 0x02, 0x82, 0x00}}},\n    {{{    42,    -44,    -54}, 0, {     0,      0}, {0xe4, 0xa5, 0xae, 0x00}}},\n    {{{    23,    -24,    -59}, 0, {     0,      0}, {0xad, 0xcb, 0xb1, 0x00}}},\n    {{{    14,     21,    -64}, 0, {     0,      0}, {0xaf, 0x1e, 0xa4, 0x00}}},\n};\n\n// 0x0600A3A0\nstatic const Vtx koopa_seg6_vertex_0600A3A0[] = {\n    {{{   101,    -44,    -54}, 0, {     0,      0}, {0xf4, 0xae, 0xa0, 0x00}}},\n    {{{    68,    -65,    -18}, 0, {     0,      0}, {0xe6, 0x8b, 0xd8, 0x00}}},\n    {{{    42,    -44,    -54}, 0, {     0,      0}, {0xe4, 0xa5, 0xae, 0x00}}},\n    {{{   146,    -93,      0}, 0, {     0,      0}, {0xf9, 0x82, 0x00, 0x00}}},\n    {{{    97,    -86,      0}, 0, {     0,      0}, {0xdc, 0x87, 0x00, 0x00}}},\n    {{{   151,     26,    -31}, 0, {     0,      0}, {0x5a, 0xd7, 0xb1, 0x00}}},\n    {{{    98,     22,    -60}, 0, {     0,      0}, {0x2f, 0x0e, 0x8c, 0x00}}},\n    {{{   139,     71,    -49}, 0, {     0,      0}, {0x46, 0x33, 0xa4, 0x00}}},\n    {{{    14,     21,    -64}, 0, {     0,      0}, {0xaf, 0x1e, 0xa4, 0x00}}},\n    {{{    63,     40,    -62}, 0, {     0,      0}, {0x17, 0x3d, 0x94, 0x00}}},\n    {{{    53,      2,    -86}, 0, {     0,      0}, {0xf2, 0x02, 0x82, 0x00}}},\n    {{{    91,     82,    -51}, 0, {     0,      0}, {0x14, 0x35, 0x8f, 0x00}}},\n    {{{    35,     83,      0}, 0, {     0,      0}, {0xdc, 0x79, 0x00, 0x00}}},\n    {{{    82,     80,      0}, 0, {     0,      0}, {0x42, 0x6c, 0x00, 0x00}}},\n    {{{    44,     74,    -32}, 0, {     0,      0}, {0xf1, 0x69, 0xbc, 0x00}}},\n    {{{    86,    112,      0}, 0, {     0,      0}, {0x1f, 0x7b, 0x00, 0x00}}},\n};\n\n// 0x0600A4A0\nstatic const Vtx koopa_seg6_vertex_0600A4A0[] = {\n    {{{    10,     49,    -36}, 0, {     0,      0}, {0xac, 0x42, 0xbd, 0x00}}},\n    {{{    63,     40,    -62}, 0, {     0,      0}, {0x17, 0x3d, 0x94, 0x00}}},\n    {{{    14,     21,    -64}, 0, {     0,      0}, {0xaf, 0x1e, 0xa4, 0x00}}},\n    {{{    75,    -16,     81}, 0, {     0,      0}, {0x2c, 0xe3, 0x73, 0x00}}},\n    {{{    42,    -44,     54}, 0, {     0,      0}, {0xe4, 0xa5, 0x52, 0x00}}},\n    {{{   101,    -44,     53}, 0, {     0,      0}, {0xf4, 0xae, 0x60, 0x00}}},\n    {{{    44,     74,    -32}, 0, {     0,      0}, {0xf1, 0x69, 0xbc, 0x00}}},\n    {{{    63,     40,     61}, 0, {     0,      0}, {0x17, 0x3d, 0x6c, 0x00}}},\n    {{{    44,     74,     31}, 0, {     0,      0}, {0xf1, 0x69, 0x44, 0x00}}},\n    {{{    10,     49,     35}, 0, {     0,      0}, {0xac, 0x42, 0x43, 0x00}}},\n    {{{    68,    -65,     17}, 0, {     0,      0}, {0xe6, 0x8b, 0x28, 0x00}}},\n    {{{    97,    -86,      0}, 0, {     0,      0}, {0xdc, 0x87, 0x00, 0x00}}},\n    {{{   151,     26,     31}, 0, {     0,      0}, {0x5a, 0xd7, 0x4f, 0x00}}},\n    {{{   139,     71,     48}, 0, {     0,      0}, {0x46, 0x33, 0x5c, 0x00}}},\n    {{{    98,     22,     59}, 0, {     0,      0}, {0x2f, 0x0e, 0x74, 0x00}}},\n    {{{    91,     82,     51}, 0, {     0,      0}, {0x14, 0x35, 0x71, 0x00}}},\n};\n\n// 0x0600A5A0\nstatic const Vtx koopa_seg6_vertex_0600A5A0[] = {\n    {{{    91,     82,    -51}, 0, {     0,      0}, {0x14, 0x35, 0x8f, 0x00}}},\n    {{{   139,     71,    -49}, 0, {     0,      0}, {0x46, 0x33, 0xa4, 0x00}}},\n    {{{    98,     22,    -60}, 0, {     0,      0}, {0x2f, 0x0e, 0x8c, 0x00}}},\n    {{{    53,      2,    -86}, 0, {     0,      0}, {0xf2, 0x02, 0x82, 0x00}}},\n    {{{    63,     40,    -62}, 0, {     0,      0}, {0x17, 0x3d, 0x94, 0x00}}},\n    {{{    53,      2,     86}, 0, {     0,      0}, {0xf2, 0x02, 0x7e, 0x00}}},\n    {{{    75,    -16,     81}, 0, {     0,      0}, {0x2c, 0xe3, 0x73, 0x00}}},\n    {{{    98,     22,     59}, 0, {     0,      0}, {0x2f, 0x0e, 0x74, 0x00}}},\n    {{{    23,    -24,     59}, 0, {     0,      0}, {0xad, 0xcb, 0x4f, 0x00}}},\n    {{{    14,     21,     64}, 0, {     0,      0}, {0xaf, 0x1e, 0x5c, 0x00}}},\n    {{{   -13,     -4,      0}, 0, {     0,      0}, {0x82, 0xf8, 0x00, 0x00}}},\n    {{{    23,    -24,    -59}, 0, {     0,      0}, {0xad, 0xcb, 0xb1, 0x00}}},\n    {{{    16,    -63,      0}, 0, {     0,      0}, {0xbc, 0x95, 0x00, 0x00}}},\n    {{{    42,    -44,    -54}, 0, {     0,      0}, {0xe4, 0xa5, 0xae, 0x00}}},\n    {{{    68,    -65,    -18}, 0, {     0,      0}, {0xe6, 0x8b, 0xd8, 0x00}}},\n};\n\n// 0x0600A690\nstatic const Vtx koopa_seg6_vertex_0600A690[] = {\n    {{{    42,    -44,     54}, 0, {     0,      0}, {0xe4, 0xa5, 0x52, 0x00}}},\n    {{{    68,    -65,     17}, 0, {     0,      0}, {0xe6, 0x8b, 0x28, 0x00}}},\n    {{{   101,    -44,     53}, 0, {     0,      0}, {0xf4, 0xae, 0x60, 0x00}}},\n    {{{    53,      2,     86}, 0, {     0,      0}, {0xf2, 0x02, 0x7e, 0x00}}},\n    {{{    23,    -24,     59}, 0, {     0,      0}, {0xad, 0xcb, 0x4f, 0x00}}},\n    {{{    42,    -44,    -54}, 0, {     0,      0}, {0xe4, 0xa5, 0xae, 0x00}}},\n    {{{    75,    -16,    -82}, 0, {     0,      0}, {0x2c, 0xe3, 0x8d, 0x00}}},\n    {{{   101,    -44,    -54}, 0, {     0,      0}, {0xf4, 0xae, 0xa0, 0x00}}},\n    {{{    53,      2,    -86}, 0, {     0,      0}, {0xf2, 0x02, 0x82, 0x00}}},\n    {{{     0,     51,      0}, 0, {     0,      0}, {0x95, 0x44, 0x00, 0x00}}},\n    {{{   -13,     -4,      0}, 0, {     0,      0}, {0x82, 0xf8, 0x00, 0x00}}},\n    {{{    10,     49,     35}, 0, {     0,      0}, {0xac, 0x42, 0x43, 0x00}}},\n    {{{    10,     49,    -36}, 0, {     0,      0}, {0xac, 0x42, 0xbd, 0x00}}},\n    {{{   109,      2,     51}, 0, {     0,      0}, {0x39, 0x0c, 0x70, 0x00}}},\n    {{{    75,    -16,     81}, 0, {     0,      0}, {0x2c, 0xe3, 0x73, 0x00}}},\n    {{{    98,     22,     59}, 0, {     0,      0}, {0x2f, 0x0e, 0x74, 0x00}}},\n};\n\n// 0x0600A790\nstatic const Vtx koopa_seg6_vertex_0600A790[] = {\n    {{{    75,    -16,    -82}, 0, {     0,      0}, {0x2c, 0xe3, 0x8d, 0x00}}},\n    {{{    98,     22,    -60}, 0, {     0,      0}, {0x2f, 0x0e, 0x8c, 0x00}}},\n    {{{   109,      2,    -51}, 0, {     0,      0}, {0x39, 0x0c, 0x90, 0x00}}},\n    {{{   101,    -44,    -54}, 0, {     0,      0}, {0xf4, 0xae, 0xa0, 0x00}}},\n    {{{    97,    -86,      0}, 0, {     0,      0}, {0xdc, 0x87, 0x00, 0x00}}},\n    {{{    68,    -65,    -18}, 0, {     0,      0}, {0xe6, 0x8b, 0xd8, 0x00}}},\n    {{{    86,    112,      0}, 0, {     0,      0}, {0x1f, 0x7b, 0x00, 0x00}}},\n    {{{   147,     97,      0}, 0, {     0,      0}, {0x56, 0x5d, 0x00, 0x00}}},\n    {{{   139,     71,    -49}, 0, {     0,      0}, {0x46, 0x33, 0xa4, 0x00}}},\n    {{{   168,     41,      0}, 0, {     0,      0}, {0x7e, 0xf8, 0x00, 0x00}}},\n    {{{   151,     26,    -31}, 0, {     0,      0}, {0x5a, 0xd7, 0xb1, 0x00}}},\n    {{{   139,     71,     48}, 0, {     0,      0}, {0x46, 0x33, 0x5c, 0x00}}},\n    {{{   137,     -5,      0}, 0, {     0,      0}, {0x60, 0xae, 0x00, 0x00}}},\n    {{{   151,     26,     31}, 0, {     0,      0}, {0x5a, 0xd7, 0x4f, 0x00}}},\n    {{{    98,     22,     59}, 0, {     0,      0}, {0x2f, 0x0e, 0x74, 0x00}}},\n    {{{   109,      2,     51}, 0, {     0,      0}, {0x39, 0x0c, 0x70, 0x00}}},\n};\n\n// 0x0600A890\nstatic const Vtx koopa_seg6_vertex_0600A890[] = {\n    {{{    91,     82,    -51}, 0, {     0,      0}, {0x84, 0x19, 0x00, 0x00}}},\n    {{{    63,     40,    -62}, 0, {     0,      0}, {0x97, 0x46, 0x00, 0x00}}},\n    {{{    63,     40,     61}, 0, {     0,      0}, {0x97, 0x46, 0x00, 0x00}}},\n    {{{    91,     82,     51}, 0, {     0,      0}, {0x84, 0x19, 0x00, 0x00}}},\n    {{{    10,     49,    -36}, 0, {     0,      0}, {0xac, 0x42, 0xbd, 0x00}}},\n    {{{    14,     21,    -64}, 0, {     0,      0}, {0xaf, 0x1e, 0xa4, 0x00}}},\n    {{{   -13,     -4,      0}, 0, {     0,      0}, {0x82, 0xf8, 0x00, 0x00}}},\n    {{{    14,     21,     64}, 0, {     0,      0}, {0xaf, 0x1e, 0x5c, 0x00}}},\n    {{{    10,     49,     35}, 0, {     0,      0}, {0xac, 0x42, 0x43, 0x00}}},\n    {{{    16,    -63,      0}, 0, {     0,      0}, {0xbc, 0x95, 0x00, 0x00}}},\n    {{{    68,    -65,    -18}, 0, {     0,      0}, {0xe6, 0x8b, 0xd8, 0x00}}},\n    {{{    68,    -65,     17}, 0, {     0,      0}, {0xe6, 0x8b, 0x28, 0x00}}},\n    {{{    97,    -86,      0}, 0, {     0,      0}, {0xdc, 0x87, 0x00, 0x00}}},\n    {{{   139,     71,     48}, 0, {     0,      0}, {0x46, 0x33, 0x5c, 0x00}}},\n    {{{   151,     26,     31}, 0, {     0,      0}, {0x5a, 0xd7, 0x4f, 0x00}}},\n    {{{   168,     41,      0}, 0, {     0,      0}, {0x7e, 0xf8, 0x00, 0x00}}},\n};\n\n// 0x0600A990\nstatic const Vtx koopa_seg6_vertex_0600A990[] = {\n    {{{   139,     71,    -49}, 0, {     0,      0}, {0x46, 0x33, 0xa4, 0x00}}},\n    {{{   147,     97,      0}, 0, {     0,      0}, {0x56, 0x5d, 0x00, 0x00}}},\n    {{{   168,     41,      0}, 0, {     0,      0}, {0x7e, 0xf8, 0x00, 0x00}}},\n};\n\n// 0x0600A9C0\nstatic const Vtx koopa_seg6_vertex_0600A9C0[] = {\n    {{{   178,    -81,    -29}, 0, {     0,      0}, {0x4b, 0xab, 0xc8, 0x00}}},\n    {{{   182,    -56,    -23}, 0, {     0,      0}, {0x6d, 0x22, 0xc9, 0x00}}},\n    {{{   182,    -56,     23}, 0, {     0,      0}, {0x73, 0x18, 0x2d, 0x00}}},\n    {{{   119,    -30,    -63}, 0, {     0,      0}, {0xf6, 0x07, 0x82, 0x00}}},\n    {{{   101,    -44,    -54}, 0, {     0,      0}, {0xf4, 0xae, 0xa0, 0x00}}},\n    {{{   109,      2,    -51}, 0, {     0,      0}, {0x39, 0x0c, 0x90, 0x00}}},\n    {{{   109,      2,     51}, 0, {     0,      0}, {0x39, 0x0c, 0x70, 0x00}}},\n    {{{   119,    -30,     63}, 0, {     0,      0}, {0xf6, 0x07, 0x7e, 0x00}}},\n    {{{   131,    -11,     55}, 0, {     0,      0}, {0x41, 0x48, 0x51, 0x00}}},\n    {{{   153,    -37,     48}, 0, {     0,      0}, {0x59, 0x2f, 0x4c, 0x00}}},\n    {{{   137,    -52,     57}, 0, {     0,      0}, {0x24, 0xde, 0x74, 0x00}}},\n    {{{   146,    -93,      0}, 0, {     0,      0}, {0xf9, 0x82, 0x00, 0x00}}},\n    {{{   137,     -5,      0}, 0, {     0,      0}, {0x56, 0x5c, 0x00, 0x00}}},\n    {{{   131,    -11,    -56}, 0, {     0,      0}, {0x41, 0x48, 0xaf, 0x00}}},\n    {{{   178,    -81,     28}, 0, {     0,      0}, {0x36, 0xa2, 0x41, 0x00}}},\n    {{{   101,    -44,     53}, 0, {     0,      0}, {0xf4, 0xae, 0x60, 0x00}}},\n};\n\n// 0x0600AAC0\nstatic const Vtx koopa_seg6_vertex_0600AAC0[] = {\n    {{{   119,    -30,    -63}, 0, {     0,      0}, {0xf6, 0x07, 0x82, 0x00}}},\n    {{{   131,    -11,    -56}, 0, {     0,      0}, {0x41, 0x48, 0xaf, 0x00}}},\n    {{{   153,    -37,    -49}, 0, {     0,      0}, {0x59, 0x2f, 0xb4, 0x00}}},\n    {{{   137,    -52,     57}, 0, {     0,      0}, {0x24, 0xde, 0x74, 0x00}}},\n    {{{   119,    -30,     63}, 0, {     0,      0}, {0xf6, 0x07, 0x7e, 0x00}}},\n    {{{   101,    -44,     53}, 0, {     0,      0}, {0xf4, 0xae, 0x60, 0x00}}},\n    {{{   146,    -93,      0}, 0, {     0,      0}, {0xf9, 0x82, 0x00, 0x00}}},\n    {{{   178,    -81,     28}, 0, {     0,      0}, {0x36, 0xa2, 0x41, 0x00}}},\n    {{{   178,    -81,    -29}, 0, {     0,      0}, {0x4b, 0xab, 0xc8, 0x00}}},\n    {{{   101,    -44,    -54}, 0, {     0,      0}, {0xf4, 0xae, 0xa0, 0x00}}},\n    {{{   137,    -52,    -58}, 0, {     0,      0}, {0x24, 0xde, 0x8c, 0x00}}},\n    {{{   109,      2,    -51}, 0, {     0,      0}, {0x39, 0x0c, 0x90, 0x00}}},\n    {{{   182,    -56,    -23}, 0, {     0,      0}, {0x6d, 0x22, 0xc9, 0x00}}},\n    {{{   153,    -37,     48}, 0, {     0,      0}, {0x59, 0x2f, 0x4c, 0x00}}},\n    {{{   131,    -11,     55}, 0, {     0,      0}, {0x41, 0x48, 0x51, 0x00}}},\n};\n\n// 0x0600ABB0\nstatic const Vtx koopa_seg6_vertex_0600ABB0[] = {\n    {{{   182,    -56,     23}, 0, {     0,      0}, {0x73, 0x18, 0x2d, 0x00}}},\n    {{{   182,    -56,    -23}, 0, {     0,      0}, {0x6d, 0x22, 0xc9, 0x00}}},\n    {{{   137,     -5,      0}, 0, {     0,      0}, {0x56, 0x5c, 0x00, 0x00}}},\n    {{{   131,    -11,     55}, 0, {     0,      0}, {0x41, 0x48, 0x51, 0x00}}},\n    {{{   153,    -37,     48}, 0, {     0,      0}, {0x59, 0x2f, 0x4c, 0x00}}},\n    {{{   153,    -37,    -49}, 0, {     0,      0}, {0x59, 0x2f, 0xb4, 0x00}}},\n    {{{   131,    -11,    -56}, 0, {     0,      0}, {0x41, 0x48, 0xaf, 0x00}}},\n    {{{   101,    -44,    -54}, 0, {     0,      0}, {0xf4, 0xae, 0xa0, 0x00}}},\n    {{{   119,    -30,    -63}, 0, {     0,      0}, {0xf6, 0x07, 0x82, 0x00}}},\n    {{{   137,    -52,    -58}, 0, {     0,      0}, {0x24, 0xde, 0x8c, 0x00}}},\n    {{{   137,    -52,     57}, 0, {     0,      0}, {0x24, 0xde, 0x74, 0x00}}},\n    {{{   119,    -30,     63}, 0, {     0,      0}, {0xf6, 0x07, 0x7e, 0x00}}},\n    {{{   178,    -81,     28}, 0, {     0,      0}, {0x36, 0xa2, 0x41, 0x00}}},\n    {{{   178,    -81,    -29}, 0, {     0,      0}, {0x4b, 0xab, 0xc8, 0x00}}},\n};\n\n// 0x0600AC90\nstatic const Vtx koopa_seg6_vertex_0600AC90[] = {\n    {{{   -84,     25,      0}, 0, {     0,      0}, {0x96, 0x44, 0x00, 0x00}}},\n    {{{  -109,      4,      0}, 0, {     0,      0}, {0xaf, 0x61, 0x00, 0x00}}},\n    {{{   -71,     18,     85}, 0, {     0,      0}, {0xa7, 0x50, 0x27, 0x00}}},\n    {{{   -71,     38,     56}, 0, {     0,      0}, {0xaa, 0x53, 0x29, 0x00}}},\n    {{{    91,     27,     60}, 0, {     0,      0}, {0x5f, 0x3d, 0x38, 0x00}}},\n    {{{    79,      8,     94}, 0, {     0,      0}, {0x43, 0x0c, 0x6a, 0x00}}},\n    {{{   121,    -46,     31}, 0, {     0,      0}, {0x6d, 0xdb, 0x33, 0x00}}},\n    {{{    51,     43,     78}, 0, {     0,      0}, {0x1d, 0x5f, 0x4e, 0x00}}},\n    {{{   -28,     43,     78}, 0, {     0,      0}, {0xe4, 0x5b, 0x53, 0x00}}},\n    {{{    -3,     23,    107}, 0, {     0,      0}, {0xee, 0x16, 0x7b, 0x00}}},\n    {{{  -109,      4,      0}, 0, {     0,      0}, {0xa8, 0xa6, 0x00, 0x00}}},\n    {{{   -85,    -18,      0}, 0, {     0,      0}, {0x98, 0xb9, 0x00, 0x00}}},\n    {{{   -57,     -2,     73}, 0, {     0,      0}, {0xcc, 0xb7, 0x59, 0x00}}},\n    {{{   -71,     18,     85}, 0, {     0,      0}, {0xc9, 0xad, 0x4d, 0x00}}},\n    {{{    63,    -31,     77}, 0, {     0,      0}, {0x16, 0xb3, 0x61, 0x00}}},\n    {{{    91,    -65,      0}, 0, {     0,      0}, {0x41, 0x94, 0x00, 0x00}}},\n};\n\n// 0x0600AD90\nstatic const Vtx koopa_seg6_vertex_0600AD90[] = {\n    {{{  -109,      4,      0}, 0, {     0,      0}, {0xa8, 0xa6, 0x00, 0x00}}},\n    {{{   -57,     -2,    -74}, 0, {     0,      0}, {0xcc, 0xb7, 0xa7, 0x00}}},\n    {{{   -85,    -18,      0}, 0, {     0,      0}, {0x98, 0xb9, 0x00, 0x00}}},\n    {{{    91,    -65,      0}, 0, {     0,      0}, {0x41, 0x94, 0x00, 0x00}}},\n    {{{   121,    -46,    -32}, 0, {     0,      0}, {0x33, 0x9b, 0xc8, 0x00}}},\n    {{{   121,    -46,     31}, 0, {     0,      0}, {0x33, 0x9b, 0x38, 0x00}}},\n    {{{   -84,     25,      0}, 0, {     0,      0}, {0x96, 0x44, 0x00, 0x00}}},\n    {{{   -71,     18,    -86}, 0, {     0,      0}, {0xa7, 0x50, 0xd9, 0x00}}},\n    {{{  -109,      4,      0}, 0, {     0,      0}, {0xaf, 0x61, 0x00, 0x00}}},\n    {{{    -3,     23,   -108}, 0, {     0,      0}, {0xee, 0x16, 0x85, 0x00}}},\n    {{{   -71,     38,    -57}, 0, {     0,      0}, {0xad, 0x52, 0xd0, 0x00}}},\n    {{{    51,     43,    -79}, 0, {     0,      0}, {0x1d, 0x60, 0xb3, 0x00}}},\n    {{{    91,     27,    -62}, 0, {     0,      0}, {0x5f, 0x3d, 0xc8, 0x00}}},\n    {{{    79,      8,    -96}, 0, {     0,      0}, {0x43, 0x0c, 0x96, 0x00}}},\n    {{{   -71,     18,    -86}, 0, {     0,      0}, {0xc9, 0xad, 0xb3, 0x00}}},\n    {{{    63,    -31,    -78}, 0, {     0,      0}, {0x16, 0xb3, 0x9f, 0x00}}},\n};\n\n// 0x0600AE90\nstatic const Vtx koopa_seg6_vertex_0600AE90[] = {\n    {{{   121,    -46,    -32}, 0, {     0,      0}, {0x6d, 0xdb, 0xcd, 0x00}}},\n    {{{    91,    -65,      0}, 0, {     0,      0}, {0x41, 0x94, 0x00, 0x00}}},\n    {{{    63,    -31,    -78}, 0, {     0,      0}, {0x16, 0xb3, 0x9f, 0x00}}},\n    {{{    79,      8,    -96}, 0, {     0,      0}, {0x43, 0x0c, 0x96, 0x00}}},\n    {{{    -3,     23,   -108}, 0, {     0,      0}, {0xee, 0x16, 0x85, 0x00}}},\n    {{{   -57,     -2,    -74}, 0, {     0,      0}, {0xcc, 0xb7, 0xa7, 0x00}}},\n    {{{   -71,     18,    -86}, 0, {     0,      0}, {0xc9, 0xad, 0xb3, 0x00}}},\n    {{{   -71,     38,    -57}, 0, {     0,      0}, {0xad, 0x52, 0xd0, 0x00}}},\n    {{{   -28,     43,    -79}, 0, {     0,      0}, {0xe4, 0x5b, 0xae, 0x00}}},\n    {{{    51,     43,    -79}, 0, {     0,      0}, {0x1d, 0x60, 0xb3, 0x00}}},\n    {{{    91,     27,    -62}, 0, {     0,      0}, {0x5f, 0x3d, 0xc8, 0x00}}},\n    {{{   -71,     18,    -86}, 0, {     0,      0}, {0xa7, 0x50, 0xd9, 0x00}}},\n    {{{   -84,     25,      0}, 0, {     0,      0}, {0x96, 0x44, 0x00, 0x00}}},\n};\n\n// 0x0600AF60\nstatic const Vtx koopa_seg6_vertex_0600AF60[] = {\n    {{{   -85,    -18,      0}, 0, {     0,      0}, {0x98, 0xb9, 0x00, 0x00}}},\n    {{{   -32,    -96,     33}, 0, {     0,      0}, {0xb7, 0xa9, 0x37, 0x00}}},\n    {{{   -57,     -2,     73}, 0, {     0,      0}, {0xcc, 0xb7, 0x59, 0x00}}},\n    {{{    32,   -106,    -34}, 0, {     0,      0}, {0x1c, 0x9f, 0xb4, 0x00}}},\n    {{{    91,    -65,      0}, 0, {     0,      0}, {0x41, 0x94, 0x00, 0x00}}},\n    {{{    32,   -106,     33}, 0, {     0,      0}, {0x1c, 0x9f, 0x4c, 0x00}}},\n    {{{   -32,    -96,    -34}, 0, {     0,      0}, {0xb7, 0xa9, 0xc9, 0x00}}},\n    {{{    63,    -31,     77}, 0, {     0,      0}, {0x16, 0xb3, 0x61, 0x00}}},\n    {{{   -57,     -2,    -74}, 0, {     0,      0}, {0xcc, 0xb7, 0xa7, 0x00}}},\n    {{{    63,    -31,    -78}, 0, {     0,      0}, {0x16, 0xb3, 0x9f, 0x00}}},\n};\n\n// 0x0600B000\nstatic const Vtx koopa_seg6_vertex_0600B000[] = {\n    {{{   -43,     70,     40}, 0, {     0,      0}, {0xe1, 0x71, 0x30, 0x00}}},\n    {{{    51,     43,     78}, 0, {     0,      0}, {0x1d, 0x5f, 0x4e, 0x00}}},\n    {{{    68,     63,     39}, 0, {     0,      0}, {0x2d, 0x71, 0x20, 0x00}}},\n    {{{    91,     27,    -62}, 0, {     0,      0}, {0x5f, 0x3d, 0xc8, 0x00}}},\n    {{{    68,     63,    -40}, 0, {     0,      0}, {0x34, 0x6d, 0xdb, 0x00}}},\n    {{{   109,     39,      0}, 0, {     0,      0}, {0x6f, 0x3c, 0x00, 0x00}}},\n    {{{    51,     43,    -79}, 0, {     0,      0}, {0x1d, 0x60, 0xb3, 0x00}}},\n    {{{   -28,     43,    -79}, 0, {     0,      0}, {0xe4, 0x5b, 0xae, 0x00}}},\n    {{{   -71,     38,    -57}, 0, {     0,      0}, {0xad, 0x52, 0xd0, 0x00}}},\n    {{{   -43,     70,    -40}, 0, {     0,      0}, {0xda, 0x73, 0xde, 0x00}}},\n    {{{    91,     27,     60}, 0, {     0,      0}, {0x5f, 0x3d, 0x38, 0x00}}},\n    {{{   -71,     38,     56}, 0, {     0,      0}, {0xaa, 0x53, 0x29, 0x00}}},\n    {{{   -28,     43,     78}, 0, {     0,      0}, {0xe4, 0x5b, 0x53, 0x00}}},\n    {{{   -84,     25,      0}, 0, {     0,      0}, {0x96, 0x44, 0x00, 0x00}}},\n};\n\n// 0x0600B0E0\nstatic const Vtx koopa_seg6_vertex_0600B0E0[] = {\n    {{{   109,     39,      0}, 0, {     0,      0}, {0x64, 0x4d, 0x00, 0x00}}},\n    {{{    91,     27,     60}, 0, {     0,      0}, {0x63, 0x3d, 0x30, 0x00}}},\n    {{{   121,    -46,     31}, 0, {     0,      0}, {0x79, 0x1a, 0x1b, 0x00}}},\n    {{{   121,    -46,    -32}, 0, {     0,      0}, {0x79, 0x1a, 0xe5, 0x00}}},\n    {{{    91,     27,    -62}, 0, {     0,      0}, {0x63, 0x3d, 0xd0, 0x00}}},\n    {{{   -71,     38,     56}, 0, {     0,      0}, {0xaa, 0x53, 0x29, 0x00}}},\n    {{{   -43,     70,     40}, 0, {     0,      0}, {0xe1, 0x71, 0x30, 0x00}}},\n    {{{   -43,     70,    -40}, 0, {     0,      0}, {0xda, 0x73, 0xde, 0x00}}},\n    {{{   -71,     38,    -57}, 0, {     0,      0}, {0xad, 0x52, 0xd0, 0x00}}},\n    {{{    68,     63,     39}, 0, {     0,      0}, {0x2d, 0x71, 0x20, 0x00}}},\n    {{{    68,     63,    -40}, 0, {     0,      0}, {0x34, 0x6d, 0xdb, 0x00}}},\n};\n\n// 0x0600B190\nstatic const Vtx koopa_seg6_vertex_0600B190[] = {\n    {{{    38,     -9,    -69}, 0, {     0,      0}, {0x1f, 0x1d, 0x89, 0x00}}},\n    {{{   -16,     -3,    -77}, 0, {     0,      0}, {0xe7, 0xb7, 0x9c, 0x00}}},\n    {{{   -42,     55,    -74}, 0, {     0,      0}, {0xd1, 0x2d, 0x94, 0x00}}},\n    {{{    29,     49,    -50}, 0, {     0,      0}, {0x1f, 0x62, 0xb7, 0xff}}},\n    {{{   116,      0,      0}, 0, {     0,      0}, {0x76, 0x2a, 0xf2, 0xff}}},\n    {{{   115,    -22,     17}, 0, {     0,      0}, {0x5e, 0xc3, 0x39, 0xff}}},\n    {{{   115,    -22,    -17}, 0, {     0,      0}, {0x5e, 0xbb, 0xcf, 0xff}}},\n    {{{    38,     -9,     69}, 0, {     0,      0}, {0x15, 0x97, 0x43, 0xff}}},\n    {{{    69,     -7,     58}, 0, {     0,      0}, {0x21, 0xa7, 0x54, 0xff}}},\n    {{{    61,     25,     88}, 0, {     0,      0}, {0x57, 0x12, 0x5a, 0xff}}},\n    {{{   -32,     71,     39}, 0, {     0,      0}, {0x16, 0x7b, 0x13, 0xff}}},\n    {{{    71,     55,     19}, 0, {     0,      0}, {0x35, 0x6c, 0x27, 0xff}}},\n    {{{    71,     55,    -19}, 0, {     0,      0}, {0x33, 0x70, 0xe5, 0xff}}},\n    {{{   -32,     71,    -39}, 0, {     0,      0}, {0x1a, 0x75, 0xd8, 0xff}}},\n};\n\n// 0x0600B270\nstatic const Vtx koopa_seg6_vertex_0600B270[] = {\n    {{{    13,    -27,    -42}, 0, {     0,      0}, {0xff, 0x88, 0xda, 0xff}}},\n    {{{    65,    -37,    -31}, 0, {     0,      0}, {0x15, 0x90, 0xca, 0x00}}},\n    {{{    65,    -37,     31}, 0, {     0,      0}, {0x0c, 0x87, 0x21, 0x00}}},\n    {{{    13,    -27,     35}, 0, {     0,      0}, {0x0d, 0x89, 0x29, 0xff}}},\n    {{{    29,     49,    -50}, 0, {     0,      0}, {0x1f, 0x62, 0xb7, 0xff}}},\n    {{{   -42,     55,    -74}, 0, {     0,      0}, {0xd1, 0x2d, 0x94, 0xff}}},\n    {{{   -32,     71,    -39}, 0, {     0,      0}, {0x1a, 0x75, 0xd8, 0xff}}},\n    {{{    71,     55,    -19}, 0, {     0,      0}, {0x33, 0x70, 0xe5, 0xff}}},\n    {{{   116,      0,      0}, 0, {     0,      0}, {0x76, 0x2a, 0xf2, 0xff}}},\n    {{{   115,    -22,    -17}, 0, {     0,      0}, {0x5e, 0xbb, 0xcf, 0xff}}},\n    {{{    69,     -7,    -58}, 0, {     0,      0}, {0x44, 0xcd, 0xa3, 0xff}}},\n    {{{    62,     26,    -88}, 0, {     0,      0}, {0x57, 0x15, 0xa7, 0xff}}},\n    {{{   115,    -22,     17}, 0, {     0,      0}, {0x5e, 0xc3, 0x39, 0xff}}},\n    {{{    71,     55,     19}, 0, {     0,      0}, {0x35, 0x6c, 0x27, 0xff}}},\n    {{{    61,     25,     88}, 0, {     0,      0}, {0x57, 0x12, 0x5a, 0xff}}},\n    {{{    69,     -7,     58}, 0, {     0,      0}, {0x21, 0xa7, 0x54, 0xff}}},\n};\n\n// 0x0600B370\nstatic const Vtx koopa_seg6_vertex_0600B370[] = {\n    {{{    13,    -27,     35}, 0, {     0,      0}, {0x0d, 0x89, 0x29, 0xff}}},\n    {{{    69,     -7,     58}, 0, {     0,      0}, {0x21, 0xa7, 0x54, 0x00}}},\n    {{{    38,     -9,     69}, 0, {     0,      0}, {0x15, 0x97, 0x43, 0x00}}},\n    {{{    29,     49,     50}, 0, {     0,      0}, {0x06, 0x46, 0x69, 0xff}}},\n    {{{    61,     25,     88}, 0, {     0,      0}, {0x57, 0x12, 0x5a, 0xff}}},\n    {{{    71,     55,     19}, 0, {     0,      0}, {0x35, 0x6c, 0x27, 0xff}}},\n    {{{   116,      0,      0}, 0, {     0,      0}, {0x76, 0x2a, 0xf2, 0xff}}},\n    {{{    62,     26,    -88}, 0, {     0,      0}, {0x57, 0x15, 0xa7, 0xff}}},\n    {{{    71,     55,    -19}, 0, {     0,      0}, {0x33, 0x70, 0xe5, 0xff}}},\n    {{{    69,     -7,    -58}, 0, {     0,      0}, {0x44, 0xcd, 0xa3, 0xff}}},\n    {{{   115,    -22,    -17}, 0, {     0,      0}, {0x5e, 0xbb, 0xcf, 0xff}}},\n    {{{    65,    -37,    -31}, 0, {     0,      0}, {0x15, 0x90, 0xca, 0xff}}},\n    {{{   115,    -22,     17}, 0, {     0,      0}, {0x5e, 0xc3, 0x39, 0xff}}},\n    {{{    65,    -37,     31}, 0, {     0,      0}, {0x0c, 0x87, 0x21, 0xff}}},\n    {{{    38,     -9,    -69}, 0, {     0,      0}, {0x13, 0xa3, 0xad, 0xff}}},\n    {{{    13,    -27,    -42}, 0, {     0,      0}, {0xff, 0x88, 0xda, 0xff}}},\n};\n\n// 0x0600B470\nstatic const Vtx koopa_seg6_vertex_0600B470[] = {\n    {{{    29,     49,     50}, 0, {     0,      0}, {0x06, 0x46, 0x69, 0xff}}},\n    {{{   -42,     55,     74}, 0, {     0,      0}, {0x24, 0x55, 0x56, 0x00}}},\n    {{{   -16,     -3,     77}, 0, {     0,      0}, {0x20, 0x21, 0x76, 0x00}}},\n    {{{    38,     -9,     69}, 0, {     0,      0}, {0xd9, 0x1e, 0x74, 0xff}}},\n    {{{    38,     -9,    -69}, 0, {     0,      0}, {0xa5, 0x0c, 0xaa, 0xff}}},\n    {{{    29,     49,    -50}, 0, {     0,      0}, {0xa5, 0x0c, 0xaa, 0xff}}},\n    {{{    62,     26,    -88}, 0, {     0,      0}, {0xa5, 0x0c, 0xaa, 0xff}}},\n    {{{    71,     55,     19}, 0, {     0,      0}, {0x35, 0x6c, 0x27, 0xff}}},\n    {{{   -32,     71,     39}, 0, {     0,      0}, {0x16, 0x7b, 0x13, 0xff}}},\n    {{{    71,     55,    -19}, 0, {     0,      0}, {0x33, 0x70, 0xe5, 0xff}}},\n    {{{    62,     26,    -88}, 0, {     0,      0}, {0x57, 0x15, 0xa7, 0xff}}},\n    {{{    29,     49,    -50}, 0, {     0,      0}, {0x1f, 0x62, 0xb7, 0xff}}},\n    {{{   -16,     -3,    -77}, 0, {     0,      0}, {0xe7, 0xb7, 0x9c, 0xff}}},\n    {{{    38,     -9,    -69}, 0, {     0,      0}, {0x13, 0xa3, 0xad, 0xff}}},\n    {{{    13,    -27,    -42}, 0, {     0,      0}, {0xff, 0x88, 0xda, 0xff}}},\n};\n\n// 0x0600B560\nstatic const Vtx koopa_seg6_vertex_0600B560[] = {\n    {{{    13,    -27,     35}, 0, {     0,      0}, {0x0d, 0x89, 0x29, 0xff}}},\n    {{{    38,     -9,     69}, 0, {     0,      0}, {0x15, 0x97, 0x43, 0x00}}},\n    {{{   -16,     -3,     77}, 0, {     0,      0}, {0xd0, 0xb0, 0x55, 0x00}}},\n    {{{    61,     25,     88}, 0, {     0,      0}, {0xa4, 0x0c, 0x55, 0xff}}},\n    {{{    29,     49,     50}, 0, {     0,      0}, {0x06, 0x46, 0x69, 0xff}}},\n    {{{    38,     -9,     69}, 0, {     0,      0}, {0xd9, 0x1e, 0x74, 0xff}}},\n    {{{    62,     26,    -88}, 0, {     0,      0}, {0x57, 0x15, 0xa7, 0xff}}},\n    {{{    69,     -7,    -58}, 0, {     0,      0}, {0x44, 0xcd, 0xa3, 0xff}}},\n    {{{    38,     -9,    -69}, 0, {     0,      0}, {0x13, 0xa3, 0xad, 0xff}}},\n};\n\n// 0x0600B5F0\nstatic const Vtx koopa_seg6_vertex_0600B5F0[] = {\n    {{{   -63,    -17,    -28}, 0, {     0,      0}, {0x95, 0xce, 0xd3, 0x00}}},\n    {{{   -42,     55,    -74}, 0, {     0,      0}, {0xd1, 0x2d, 0x94, 0x00}}},\n    {{{   -16,     -3,    -77}, 0, {     0,      0}, {0xe7, 0xb7, 0x9c, 0x00}}},\n    {{{   -16,     -3,     77}, 0, {     0,      0}, {0xd0, 0xb0, 0x55, 0xff}}},\n    {{{   -63,    -17,     28}, 0, {     0,      0}, {0xa5, 0xb2, 0x26, 0xff}}},\n    {{{   -24,    -39,     28}, 0, {     0,      0}, {0xf1, 0x89, 0x28, 0xff}}},\n    {{{   -65,     24,     35}, 0, {     0,      0}, {0x87, 0x0f, 0x21, 0xff}}},\n    {{{   -65,     24,    -34}, 0, {     0,      0}, {0x8a, 0x2a, 0xf0, 0xff}}},\n    {{{    13,    -27,     35}, 0, {     0,      0}, {0x0d, 0x89, 0x29, 0xff}}},\n    {{{   -24,    -39,    -28}, 0, {     0,      0}, {0xef, 0x86, 0xe5, 0xff}}},\n    {{{    13,    -27,    -42}, 0, {     0,      0}, {0xff, 0x88, 0xda, 0xff}}},\n    {{{   -42,     55,     74}, 0, {     0,      0}, {0xa5, 0xdc, 0x50, 0xff}}},\n    {{{   -32,     71,     39}, 0, {     0,      0}, {0x98, 0x48, 0x01, 0xff}}},\n    {{{   -32,     71,    -39}, 0, {     0,      0}, {0x98, 0x48, 0xfe, 0xff}}},\n    {{{   -42,     55,     74}, 0, {     0,      0}, {0x98, 0x48, 0x04, 0xff}}},\n};\n\n// 0x0600B6E0 - 0x0600B838\nconst Gfx koopa_seg6_dl_0600B6E0[] = {\n    gsSPLight(&koopa_seg6_lights_060025A0.l, 1),\n    gsSPLight(&koopa_seg6_lights_060025A0.a, 2),\n    gsSPVertex(koopa_seg6_vertex_06008BC0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(koopa_seg6_vertex_06008CC0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  2,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10,  4, 0x0,  9,  4,  6, 0x0),\n    gsSP2Triangles( 2,  8, 11, 0x0,  2, 11,  3, 0x0),\n    gsSP2Triangles( 3, 12, 13, 0x0,  3, 13,  0, 0x0),\n    gsSPVertex(koopa_seg6_vertex_06008DA0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9,  5, 0x0,  8,  5, 10, 0x0),\n    gsSP2Triangles(11, 12,  9, 0x0, 11,  9, 13, 0x0),\n    gsSPVertex(koopa_seg6_vertex_06008E80, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 6,  7,  9, 0x0,  6,  9,  4, 0x0),\n    gsSP2Triangles(10,  0,  3, 0x0, 10,  3, 11, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 13, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600B838 - 0x0600B8B8\nconst Gfx koopa_seg6_dl_0600B838[] = {\n    gsSPLight(&koopa_seg6_lights_060025B8.l, 1),\n    gsSPLight(&koopa_seg6_lights_060025B8.a, 2),\n    gsSPVertex(koopa_seg6_vertex_06008F60, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  7, 10, 11, 0x0),\n    gsSP2Triangles(12,  4,  6, 0x0, 12,  6, 13, 0x0),\n    gsSP2Triangles( 5,  0,  3, 0x0,  5,  3,  6, 0x0),\n    gsSP2Triangles( 1, 12, 13, 0x0,  1, 13,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600B8B8 - 0x0600BA10\nconst Gfx koopa_seg6_dl_0600B8B8[] = {\n    gsSPLight(&koopa_seg6_lights_060025A0.l, 1),\n    gsSPLight(&koopa_seg6_lights_060025A0.a, 2),\n    gsSPVertex(koopa_seg6_vertex_06009040, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(koopa_seg6_vertex_06009140, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  1, 0x0),\n    gsSP2Triangles( 4,  6,  9, 0x0,  4,  9, 10, 0x0),\n    gsSP2Triangles( 0, 11,  7, 0x0,  0,  7,  1, 0x0),\n    gsSP2Triangles( 3, 12, 13, 0x0,  3, 13,  0, 0x0),\n    gsSP1Triangle(10, 14, 15, 0x0),\n    gsSPVertex(koopa_seg6_vertex_06009240, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  5,  8, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0, 10,  8, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(koopa_seg6_vertex_06009340, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  5,  6,  8, 0x0),\n    gsSP2Triangles( 5,  8,  3, 0x0,  9,  0,  2, 0x0),\n    gsSP2Triangles( 9,  2, 10, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(10, 12,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600BA10 - 0x0600BA90\nconst Gfx koopa_seg6_dl_0600BA10[] = {\n    gsSPLight(&koopa_seg6_lights_060025B8.l, 1),\n    gsSPLight(&koopa_seg6_lights_060025B8.a, 2),\n    gsSPVertex(koopa_seg6_vertex_06009410, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  7, 10, 11, 0x0),\n    gsSP2Triangles(12,  4,  6, 0x0, 12,  6, 13, 0x0),\n    gsSP2Triangles( 4,  0,  3, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 1, 12, 13, 0x0,  1, 13,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600BA90 - 0x0600BC18\nconst Gfx koopa_seg6_dl_0600BA90[] = {\n    gsSPLight(&koopa_seg6_lights_060025B8.l, 1),\n    gsSPLight(&koopa_seg6_lights_060025B8.a, 2),\n    gsSPVertex(koopa_seg6_vertex_060094F0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(koopa_seg6_vertex_060095D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  3,  9, 10, 0x0),\n    gsSP2Triangles(10,  9,  0, 0x0, 11,  1, 12, 0x0),\n    gsSP1Triangle( 1, 13, 14, 0x0),\n    gsSPVertex(koopa_seg6_vertex_060096C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles( 2, 10, 11, 0x0, 12,  3,  5, 0x0),\n    gsSP2Triangles(12,  8, 13, 0x0, 14,  0, 11, 0x0),\n    gsSPVertex(koopa_seg6_vertex_060097B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  5,  8, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(10,  4, 12, 0x0, 12, 13, 10, 0x0),\n    gsSP1Triangle( 8, 14,  7, 0x0),\n    gsSPVertex(koopa_seg6_vertex_060098A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10,  0, 0x0),\n    gsSP2Triangles(11, 12,  7, 0x0, 11,  7, 13, 0x0),\n    gsSP1Triangle(14, 15,  6, 0x0),\n    gsSPVertex(koopa_seg6_vertex_060099A0, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600BC18 - 0x0600BC88\nconst Gfx koopa_seg6_dl_0600BC18[] = {\n    gsSPLight(&koopa_seg6_lights_060025B8.l, 1),\n    gsSPLight(&koopa_seg6_lights_060025B8.a, 2),\n    gsSPVertex(koopa_seg6_vertex_06009A30, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 8,  0,  3, 0x0,  8,  3,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600BC88 - 0x0600BE10\nconst Gfx koopa_seg6_dl_0600BC88[] = {\n    gsSPLight(&koopa_seg6_lights_060025B8.l, 1),\n    gsSPLight(&koopa_seg6_lights_060025B8.a, 2),\n    gsSPVertex(koopa_seg6_vertex_06009AD0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(koopa_seg6_vertex_06009BB0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10,  5, 0x0),\n    gsSP2Triangles( 2, 10,  9, 0x0, 11,  1, 12, 0x0),\n    gsSP1Triangle(13, 14,  1, 0x0),\n    gsSPVertex(koopa_seg6_vertex_06009CA0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11,  0, 0x0,  3,  5, 12, 0x0),\n    gsSP2Triangles(13,  6, 12, 0x0, 10,  2, 14, 0x0),\n    gsSPVertex(koopa_seg6_vertex_06009D90, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  4,  8, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0,  9,  7, 11, 0x0),\n    gsSP2Triangles(12,  5, 10, 0x0, 10, 13, 12, 0x0),\n    gsSP1Triangle( 8, 14,  7, 0x0),\n    gsSPVertex(koopa_seg6_vertex_06009E80, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  2,  9, 10, 0x0),\n    gsSP2Triangles(11,  7, 12, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 8, 14, 15, 0x0),\n    gsSPVertex(koopa_seg6_vertex_06009F80, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600BE10 - 0x0600BE80\nconst Gfx koopa_seg6_dl_0600BE10[] = {\n    gsSPLight(&koopa_seg6_lights_060025B8.l, 1),\n    gsSPLight(&koopa_seg6_lights_060025B8.a, 2),\n    gsSPVertex(koopa_seg6_vertex_0600A010, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 8,  0,  3, 0x0,  8,  3,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600BE80 - 0x0600C240\nconst Gfx koopa_seg6_dl_0600BE80[] = {\n    gsSPLight(&koopa_seg6_lights_060025B8.l, 1),\n    gsSPLight(&koopa_seg6_lights_060025B8.a, 2),\n    gsSPVertex(koopa_seg6_vertex_0600A0B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 5,  9,  2, 0x0,  3,  2,  9, 0x0),\n    gsSP2Triangles(10,  6,  8, 0x0, 11,  5,  4, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(koopa_seg6_vertex_0600A1A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  3,  8, 0x0),\n    gsSP2Triangles( 1,  9,  8, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0,  2, 14, 15, 0x0),\n    gsSPVertex(koopa_seg6_vertex_0600A2A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 14, 15, 0x0),\n    gsSPVertex(koopa_seg6_vertex_0600A3A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 9, 11,  6, 0x0, 12, 13, 14, 0x0),\n    gsSP2Triangles(14, 13,  9, 0x0,  7, 11, 15, 0x0),\n    gsSPVertex(koopa_seg6_vertex_0600A4A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 5, 10, 11, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(15,  7, 14, 0x0),\n    gsSPVertex(koopa_seg6_vertex_0600A5A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(11, 12, 10, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(koopa_seg6_vertex_0600A690, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  6,  5, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 12, 10, 0x0),\n    gsSP2Triangles(13, 14,  2, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(koopa_seg6_vertex_0600A790, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 4,  5,  3, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10,  8, 0x0, 11,  7,  6, 0x0),\n    gsSP2Triangles(11,  9,  7, 0x0, 10,  9, 12, 0x0),\n    gsSP2Triangles(12,  9, 13, 0x0,  2, 10, 12, 0x0),\n    gsSP2Triangles( 2,  1, 10, 0x0, 13, 14, 15, 0x0),\n    gsSP1Triangle(15, 12, 13, 0x0),\n    gsSPVertex(koopa_seg6_vertex_0600A890, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 10, 12, 11, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(koopa_seg6_vertex_0600A990, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPLight(&koopa_seg6_lights_060025D0.l, 1),\n    gsSPLight(&koopa_seg6_lights_060025D0.a, 2),\n    gsSPVertex(koopa_seg6_vertex_0600A9C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  2,  9, 10, 0x0),\n    gsSP2Triangles( 4,  0, 11, 0x0, 12, 13,  5, 0x0),\n    gsSP2Triangles( 6,  8, 12, 0x0, 11,  0, 14, 0x0),\n    gsSP2Triangles( 6, 15,  7, 0x0, 10, 14,  2, 0x0),\n    gsSPVertex(koopa_seg6_vertex_0600AAC0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 0,  2, 10, 0x0, 11,  1,  0, 0x0),\n    gsSP2Triangles(12,  8, 10, 0x0,  3, 13, 14, 0x0),\n    gsSP2Triangles(10,  2, 12, 0x0,  7,  3,  5, 0x0),\n    gsSPVertex(koopa_seg6_vertex_0600ABB0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 5,  6,  2, 0x0,  2,  1,  5, 0x0),\n    gsSP2Triangles( 4,  0,  2, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  3, 11, 0x0,  0, 12, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600C240 - 0x0600C498\nconst Gfx koopa_seg6_dl_0600C240[] = {\n    gsSPLight(&koopa_seg6_lights_06002618.l, 1),\n    gsSPLight(&koopa_seg6_lights_06002618.a, 2),\n    gsSPVertex(koopa_seg6_vertex_0600AC90, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  5,  4, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  8,  3,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  9, 13, 12, 0x0),\n    gsSP2Triangles( 5,  9, 14, 0x0,  6,  5, 14, 0x0),\n    gsSP2Triangles(14, 15,  6, 0x0, 12, 14,  9, 0x0),\n    gsSP2Triangles(12, 13, 10, 0x0,  7,  9,  5, 0x0),\n    gsSP1Triangle( 3,  2,  9, 0x0),\n    gsSPVertex(koopa_seg6_vertex_0600AD90, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  7, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0,  0, 14,  1, 0x0),\n    gsSP1Triangle( 9, 15,  1, 0x0),\n    gsSPVertex(koopa_seg6_vertex_0600AE90, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 2,  4,  3, 0x0,  5,  6,  4, 0x0),\n    gsSP2Triangles( 4,  7,  8, 0x0,  4,  8,  9, 0x0),\n    gsSP2Triangles( 3,  4,  9, 0x0,  0,  3, 10, 0x0),\n    gsSP1Triangle(11, 12,  7, 0x0),\n    gsSPLight(&koopa_seg6_lights_06002600.l, 1),\n    gsSPLight(&koopa_seg6_lights_06002600.a, 2),\n    gsSPVertex(koopa_seg6_vertex_0600AF60, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  6,  5,  1, 0x0),\n    gsSP2Triangles( 7,  5,  4, 0x0,  2,  1,  5, 0x0),\n    gsSP2Triangles( 3,  8,  9, 0x0,  4,  3,  9, 0x0),\n    gsSP2Triangles( 7,  2,  5, 0x0,  6,  0,  8, 0x0),\n    gsSP2Triangles( 8,  3,  6, 0x0,  6,  1,  0, 0x0),\n    gsSPLight(&koopa_seg6_lights_060025B8.l, 1),\n    gsSPLight(&koopa_seg6_lights_060025B8.a, 2),\n    gsSPVertex(koopa_seg6_vertex_0600B000, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 1, 10,  2, 0x0,  0, 11, 12, 0x0),\n    gsSP2Triangles( 6,  7,  9, 0x0,  0, 12,  1, 0x0),\n    gsSP2Triangles( 2,  5,  4, 0x0,  9,  4,  6, 0x0),\n    gsSP2Triangles( 5,  2, 10, 0x0,  9,  0,  2, 0x0),\n    gsSP1Triangle( 8, 13, 11, 0x0),\n    gsSPVertex(koopa_seg6_vertex_0600B0E0, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 2,  3,  0, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 7,  8,  5, 0x0,  9, 10,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600C498 - 0x0600C6A0\nconst Gfx koopa_seg6_dl_0600C498[] = {\n    gsSPLight(&koopa_seg6_lights_06002630.l, 1),\n    gsSPLight(&koopa_seg6_lights_06002630.a, 2),\n    gsSPVertex(koopa_seg6_vertex_0600B190, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(koopa_seg6_vertex_0600B270, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 2,  1,  9, 0x0,  2,  9, 12, 0x0),\n    gsSP2Triangles( 7, 13,  8, 0x0, 14, 15, 12, 0x0),\n    gsSP2Triangles(14, 12,  8, 0x0,  3,  2, 15, 0x0),\n    gsSPVertex(koopa_seg6_vertex_0600B370, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0, 12,  1, 13, 0x0),\n    gsSP2Triangles(14,  9, 11, 0x0, 14, 11, 15, 0x0),\n    gsSPVertex(koopa_seg6_vertex_0600B470, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  1, 0x0),\n    gsSP2Triangles( 7,  1,  0, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(koopa_seg6_vertex_0600B560, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  7,  8, 0x0),\n    gsSPLight((u8*)koopa_seg6_texture_06002648 + 0x20, 1), //! this malformed light results in a\n    gsSPLight((u8*)koopa_seg6_texture_06002648 + 0x18, 2), //! koopa appearing to wear pink shorts.\n    gsSPVertex(koopa_seg6_vertex_0600B5F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  0, 0x0,  8,  5,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  3,  5,  8, 0x0),\n    gsSP2Triangles( 6,  0,  4, 0x0,  6,  4,  3, 0x0),\n    gsSP2Triangles( 6,  3, 11, 0x0,  9,  5,  4, 0x0),\n    gsSP2Triangles( 9,  4,  0, 0x0, 12, 13,  7, 0x0),\n    gsSP2Triangles(12,  7,  6, 0x0,  1,  7, 13, 0x0),\n    gsSP2Triangles(10,  9,  2, 0x0,  0,  2,  9, 0x0),\n    gsSP2Triangles( 0,  7,  1, 0x0,  6, 14, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/koopa_flag/anims/anim_06001010.inc.c",
    "content": "// 0x06000E78\nstatic const s16 koopa_flag_seg6_animvalue_06000E78[] = {\n    0x0000, 0x12E3, 0x0F43, 0x099F, 0x02D1, 0xFBB3, 0xF51B, 0xEFE3,\n    0xECC0, 0xEA97, 0xE905, 0xE817, 0xE7DA, 0xE85A, 0xE9A5, 0xEBC7,\n    0xEF2B, 0xF51F, 0xFCD4, 0x053B, 0x0D49, 0x13EE, 0x181E, 0x1A24,\n    0x1B1B, 0x1B28, 0x1A71, 0x191C, 0x174F, 0x152F, 0x0DFD, 0x0B37,\n    0x064A, 0x006D, 0xFADA, 0xF6C7, 0xF4D9, 0xF371, 0xF25D, 0xF1A3,\n    0xF148, 0xF152, 0xF1C6, 0xF2AA, 0xF404, 0xF622, 0xFA11, 0xFF44,\n    0x04FD, 0x0A7D, 0x0F08, 0x11DD, 0x132A, 0x13B1, 0x1393, 0x12F3,\n    0x11F2, 0x10B2, 0x0F55, 0xF43F, 0xF376, 0xF2F2, 0xF2B7, 0xF2C3,\n    0xF319, 0xF3B9, 0xF4A5, 0xF64B, 0xF8E8, 0xFC2A, 0xFFC5, 0x0367,\n    0x06C3, 0x098B, 0x0B73, 0x0C85, 0x0CE4, 0x0CA5, 0x0BDD, 0x0AA2,\n    0x08F8, 0x06A5, 0x03D3, 0x00B6, 0xFD87, 0xFA7A, 0xF7C5, 0xF59F,\n    0xF5BC, 0xF61A, 0xF722, 0xF8BA, 0xFAC7, 0xFD30, 0xFFD8, 0x02A6,\n    0x0580, 0x0829, 0x0A3A, 0x0BBC, 0x0CB9, 0x0D3F, 0x0D4C, 0x0C44,\n    0x0A3B, 0x0785, 0x0478, 0x0169, 0xFEAD, 0xFC97, 0xFB3E, 0xFA01,\n    0xF8DB, 0xF7D5, 0xF6F8, 0xF64F, 0xF5E2, 0x04EA, 0x04B3, 0x0421,\n    0x034C, 0x0250, 0x0147, 0x004B, 0xFF77, 0xFEAA, 0xFDC3, 0xFCD9,\n    0xFC02, 0xFB55, 0xFAE7, 0xFAD0, 0xFB25, 0xFBDC, 0xFCD6, 0xFDF4,\n    0xFF17, 0x0020, 0x00F2, 0x01A2, 0x0253, 0x02FE, 0x039A, 0x0422,\n    0x048C, 0x04D1, 0x3FFF, 0xC001, 0x3FFF, 0x0000,\n};\n\n// 0x06000FA4\nstatic const u16 koopa_flag_seg6_animindex_06000FA4[] = {\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0094,\n    0x0001, 0x0092, 0x0001, 0x0000, 0x0001, 0x0093,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001D, 0x0075,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001D, 0x0058,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001D, 0x003B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001D, 0x001E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001D, 0x0001,\n};\n\n// 0x06001010\nstatic const struct Animation koopa_flag_seg6_anim_06001010 = {\n    0,\n    0,\n    0,\n    0,\n    0x1D,\n    ANIMINDEX_NUMPARTS(koopa_flag_seg6_animindex_06000FA4),\n    koopa_flag_seg6_animvalue_06000E78,\n    koopa_flag_seg6_animindex_06000FA4,\n    0,\n};\n"
  },
  {
    "path": "actors/koopa_flag/anims/data.inc.c",
    "content": "#include \"anim_06001010.inc.c\"\n"
  },
  {
    "path": "actors/koopa_flag/anims/table.inc.c",
    "content": "// 0x06001028\nconst struct Animation *const koopa_flag_seg6_anims_06001028[] = {\n    &koopa_flag_seg6_anim_06001010,\n    NULL,\n};\n"
  },
  {
    "path": "actors/koopa_flag/geo.inc.c",
    "content": "// 0x0D000000\nconst GeoLayout koopa_flag_geo[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, koopa_flag_seg6_dl_06000A08),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 2040, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, koopa_flag_seg6_dl_06000B08),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 460, 0, 0, koopa_flag_seg6_dl_06000BF8),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 460, 0, 0, koopa_flag_seg6_dl_06000CE0),\n                                GEO_OPEN_NODE(),\n                                    GEO_ANIMATED_PART(LAYER_OPAQUE, 344, 0, 0, koopa_flag_seg6_dl_06000DB0),\n                                    GEO_OPEN_NODE(),\n                                        GEO_ANIMATED_PART(LAYER_OPAQUE, 288, 0, 0, koopa_flag_seg6_dl_06000E38),\n                                    GEO_CLOSE_NODE(),\n                                GEO_CLOSE_NODE(),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/koopa_flag/model.inc.c",
    "content": "// Koopa Flag\n\n// 0x06000000\nstatic const Lights1 koopa_flag_seg6_lights_06000000 = gdSPDefLights1(\n    0x00, 0x1b, 0x00,\n    0x00, 0x6e, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x06000018\nstatic const Lights1 koopa_flag_seg6_lights_06000018 = gdSPDefLights1(\n    0x3f, 0x39, 0x15,\n    0xff, 0xe6, 0x57, 0x28, 0x28, 0x28\n);\n\n// 0x06000030\nstatic const Lights1 koopa_flag_seg6_lights_06000030 = gdSPDefLights1(\n    0x2b, 0x15, 0x01,\n    0xac, 0x54, 0x05, 0x28, 0x28, 0x28\n);\n\n// 0x06000048\nALIGNED8 static const Texture koopa_flag_seg6_texture_06000048[] = {\n#include \"actors/koopa_flag/koopa_flag_banner.rgba16.inc.c\"\n};\n\n// 0x06000848\nstatic const Lights1 koopa_flag_seg6_lights_06000848 = gdSPDefLights1(\n    0x37, 0x27, 0x07,\n    0xdf, 0x9f, 0x1f, 0x28, 0x28, 0x28\n);\n\n// 0x06000860\nstatic const Lights1 koopa_flag_seg6_lights_06000860 = gdSPDefLights1(\n    0x14, 0x0a, 0x00,\n    0x50, 0x28, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x06000878\nstatic const Vtx koopa_flag_seg6_vertex_06000878[] = {\n    {{{  2800,    -18,     57}, 0, {     0,      0}, {0x5f, 0xe7, 0x4f, 0xff}}},\n    {{{  2800,    -59,      0}, 0, {     0,      0}, {0x2d, 0x8a, 0x00, 0xff}}},\n    {{{  2800,    -18,    -56}, 0, {     0,      0}, {0x4d, 0xe1, 0xa1, 0xff}}},\n    {{{  2800,     49,    -34}, 0, {     0,      0}, {0x4d, 0x51, 0xc5, 0xff}}},\n    {{{  2800,     49,     35}, 0, {     0,      0}, {0x2d, 0x60, 0x45, 0xff}}},\n};\n\n// 0x060008C8\nstatic const Vtx koopa_flag_seg6_vertex_060008C8[] = {\n    {{{  2800,    -18,     57}, 0, {     0,      0}, {0x5f, 0xe7, 0x4f, 0xff}}},\n    {{{  2800,     49,     35}, 0, {     0,      0}, {0x2d, 0x60, 0x45, 0xff}}},\n    {{{     0,     19,     57}, 0, {     0,      0}, {0x00, 0x27, 0x78, 0xff}}},\n    {{{     0,    -48,     35}, 0, {     0,      0}, {0x00, 0x9a, 0x4a, 0xff}}},\n    {{{     0,     60,      0}, 0, {     0,      0}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  2800,    -59,      0}, 0, {     0,      0}, {0x2d, 0x8a, 0x00, 0xff}}},\n    {{{     0,    -48,    -34}, 0, {     0,      0}, {0x00, 0x9a, 0xb6, 0xff}}},\n    {{{  2800,    -18,    -56}, 0, {     0,      0}, {0x4d, 0xe1, 0xa1, 0xff}}},\n    {{{     0,     19,    -56}, 0, {     0,      0}, {0x00, 0x27, 0x88, 0xff}}},\n    {{{  2800,     49,    -34}, 0, {     0,      0}, {0x4d, 0x51, 0xc5, 0xff}}},\n};\n\n// 0x06000968 - 0x06000A08\nconst Gfx koopa_flag_seg6_dl_06000968[] = {\n    gsSPLight(&koopa_flag_seg6_lights_06000848.l, 1),\n    gsSPLight(&koopa_flag_seg6_lights_06000848.a, 2),\n    gsSPVertex(koopa_flag_seg6_vertex_06000878, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP1Triangle( 3,  0,  2, 0x0),\n    gsSPLight(&koopa_flag_seg6_lights_06000860.l, 1),\n    gsSPLight(&koopa_flag_seg6_lights_06000860.a, 2),\n    gsSPVertex(koopa_flag_seg6_vertex_060008C8, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 4,  2,  1, 0x0,  5,  0,  3, 0x0),\n    gsSP2Triangles( 3,  6,  5, 0x0,  7,  5,  6, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  9,  7,  8, 0x0),\n    gsSP2Triangles( 8,  4,  9, 0x0,  1,  9,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06000A08 - 0x06000A38\nconst Gfx koopa_flag_seg6_dl_06000A08[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(koopa_flag_seg6_dl_06000968),\n    gsSPEndDisplayList(),\n};\n\n// 0x06000A38\nstatic const Vtx koopa_flag_seg6_vertex_06000A38[] = {\n    {{{     0,      0,      0}, 0, {  -226,    510}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   460,      0,    540}, 0, {   224,   1318}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   460,      0,   -539}, 0, {   224,   -302}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x06000A68\nstatic const Vtx koopa_flag_seg6_vertex_06000A68[] = {\n    {{{     0,      0,    720}, 0, {     0,      0}, {0xfd, 0xa8, 0x02, 0xff}}},\n    {{{   460,      0,    540}, 0, {     0,      0}, {0xfd, 0xa8, 0x02, 0xff}}},\n    {{{     0,      0,      0}, 0, {     0,      0}, {0xfd, 0xa8, 0x02, 0xff}}},\n    {{{   460,      0,   -539}, 0, {     0,      0}, {0xfd, 0xa8, 0x02, 0xff}}},\n    {{{     0,      0,   -719}, 0, {     0,      0}, {0xfd, 0xa8, 0x02, 0xff}}},\n};\n\n// 0x06000AB8 - 0x06000AE8\nconst Gfx koopa_flag_seg6_dl_06000AB8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, koopa_flag_seg6_texture_06000048),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(koopa_flag_seg6_vertex_06000A38, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06000AE8 - 0x06000B08\nconst Gfx koopa_flag_seg6_dl_06000AE8[] = {\n    gsSPVertex(koopa_flag_seg6_vertex_06000A68, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06000B08 - 0x06000B80\nconst Gfx koopa_flag_seg6_dl_06000B08[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGB, G_CC_DECALRGB),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(koopa_flag_seg6_dl_06000AB8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(koopa_flag_seg6_dl_06000AE8),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x06000B80\nstatic const Vtx koopa_flag_seg6_vertex_06000B80[] = {\n    {{{     0,      0,    540}, 0, {   224,   1318}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   460,      0,    360}, 0, {   676,   1048}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   460,      0,   -359}, 0, {   676,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,   -539}, 0, {   224,   -302}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x06000BC0 - 0x06000BF8\nconst Gfx koopa_flag_seg6_dl_06000BC0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, koopa_flag_seg6_texture_06000048),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(koopa_flag_seg6_vertex_06000B80, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06000BF8 - 0x06000C68\nconst Gfx koopa_flag_seg6_dl_06000BF8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGB, G_CC_DECALRGB),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(koopa_flag_seg6_dl_06000BC0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x06000C68\nstatic const Vtx koopa_flag_seg6_vertex_06000C68[] = {\n    {{{   344,      0,    224}, 0, {  1014,    846}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   344,      0,   -223}, 0, {  1014,    172}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,    360}, 0, {   676,   1048}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,   -359}, 0, {   676,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x06000CA8 - 0x06000CE0\nconst Gfx koopa_flag_seg6_dl_06000CA8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, koopa_flag_seg6_texture_06000048),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(koopa_flag_seg6_vertex_06000C68, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06000CE0 - 0x06000D50\nconst Gfx koopa_flag_seg6_dl_06000CE0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGB, G_CC_DECALRGB),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(koopa_flag_seg6_dl_06000CA8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x06000D50\nstatic const Vtx koopa_flag_seg6_vertex_06000D50[] = {\n    {{{     0,      0,    224}, 0, {     0,      0}, {0xfd, 0xa8, 0x02, 0xff}}},\n    {{{   288,      0,    112}, 0, {     0,      0}, {0xfd, 0xa8, 0x02, 0xff}}},\n    {{{   288,      0,   -111}, 0, {     0,      0}, {0xfd, 0xa8, 0x02, 0xff}}},\n    {{{     0,      0,   -223}, 0, {     0,      0}, {0xfd, 0xa8, 0x02, 0xff}}},\n};\n\n// 0x06000D90 - 0x06000DB0\nconst Gfx koopa_flag_seg6_dl_06000D90[] = {\n    gsSPVertex(koopa_flag_seg6_vertex_06000D50, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06000DB0 - 0x06000DF0\nconst Gfx koopa_flag_seg6_dl_06000DB0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(koopa_flag_seg6_dl_06000D90),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x06000DF0\nstatic const Vtx koopa_flag_seg6_vertex_06000DF0[] = {\n    {{{     0,      0,    112}, 0, {     0,      0}, {0xfd, 0xa8, 0x02, 0xff}}},\n    {{{   288,      0,      0}, 0, {     0,      0}, {0xfd, 0xa8, 0x02, 0xff}}},\n    {{{     0,      0,   -111}, 0, {     0,      0}, {0xfd, 0xa8, 0x02, 0xff}}},\n};\n\n// 0x06000E20 - 0x06000E38\nconst Gfx koopa_flag_seg6_dl_06000E20[] = {\n    gsSPVertex(koopa_flag_seg6_vertex_06000DF0, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06000E38 - 0x06000E78\nconst Gfx koopa_flag_seg6_dl_06000E38[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(koopa_flag_seg6_dl_06000E20),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/koopa_shell/geo.inc.c",
    "content": "// 0x0F000AB0\nconst GeoLayout koopa_shell_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xC8, 70),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 65536),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, koopa_shell_seg8_dl_08028B78),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0F000ADC\nconst GeoLayout koopa_shell2_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xC8, 70),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, koopa_shell_seg8_dl_08027420),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0F000B08\nconst GeoLayout koopa_shell3_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xC8, 70),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, koopa_shell_seg8_dl_080273C8),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/koopa_shell/model.inc.c",
    "content": "// Koopa Shell\n\n// 0x08026388\nstatic const Lights1 koopa_shell_seg8_lights_08026388 = gdSPDefLights1(\n    0x11, 0x33, 0x06,\n    0x45, 0xcd, 0x1a, 0x28, 0x28, 0x28\n);\n\n// 0x080263A0\nstatic const Lights1 koopa_shell_seg8_lights_080263A0 = gdSPDefLights1(\n    0x39, 0x0a, 0x07,\n    0xe4, 0x29, 0x1d, 0x28, 0x28, 0x28\n);\n\n// 0x080263B8\nstatic const Lights1 koopa_shell_seg8_lights_080263B8 = gdSPDefLights1(\n    0x21, 0x30, 0x39,\n    0x84, 0xc3, 0xe5, 0x28, 0x28, 0x28\n);\n\n// 0x080263D0\nstatic const Lights1 koopa_shell_seg8_lights_080263D0 = gdSPDefLights1(\n    0x3e, 0x3f, 0x3e,\n    0xfa, 0xff, 0xf8, 0x28, 0x28, 0x28\n);\n\n// 0x080263E8\nstatic const Vtx koopa_shell_seg8_vertex_080263E8[] = {\n    {{{   101,     53,     57}, 0, {     0,      0}, {0x53, 0x5e, 0x14, 0xff}}},\n    {{{    40,    149,     46}, 0, {     0,      0}, {0x40, 0x6a, 0x1e, 0xff}}},\n    {{{     0,     78,    118}, 0, {     0,      0}, {0x00, 0x6d, 0x42, 0xff}}},\n    {{{   101,     53,     57}, 0, {     0,      0}, {0x53, 0x5e, 0x14, 0xff}}},\n    {{{    90,     51,    -81}, 0, {     0,      0}, {0x42, 0x69, 0xe3, 0xff}}},\n    {{{    40,    149,     46}, 0, {     0,      0}, {0x40, 0x6a, 0x1e, 0xff}}},\n    {{{     0,     65,   -111}, 0, {     0,      0}, {0x00, 0x6f, 0xc2, 0xff}}},\n    {{{     0,    138,    -67}, 0, {     0,      0}, {0x00, 0x69, 0xb8, 0xff}}},\n    {{{    90,     51,    -81}, 0, {     0,      0}, {0x42, 0x69, 0xe3, 0xff}}},\n    {{{    90,     51,    -81}, 0, {     0,      0}, {0x42, 0x69, 0xe3, 0xff}}},\n    {{{     0,    138,    -67}, 0, {     0,      0}, {0x00, 0x69, 0xb8, 0xff}}},\n    {{{    40,    149,     46}, 0, {     0,      0}, {0x40, 0x6a, 0x1e, 0xff}}},\n    {{{   -40,    149,     46}, 0, {     0,      0}, {0xc0, 0x6a, 0x1e, 0xff}}},\n    {{{     0,     78,    118}, 0, {     0,      0}, {0x00, 0x6d, 0x42, 0xff}}},\n    {{{    40,    149,     46}, 0, {     0,      0}, {0x40, 0x6a, 0x1e, 0xff}}},\n};\n\n// 0x080264D8\nstatic const Vtx koopa_shell_seg8_vertex_080264D8[] = {\n    {{{     0,    138,    -67}, 0, {     0,      0}, {0x00, 0x69, 0xb8, 0xff}}},\n    {{{   -40,    149,     46}, 0, {     0,      0}, {0xc0, 0x6a, 0x1e, 0xff}}},\n    {{{    40,    149,     46}, 0, {     0,      0}, {0x40, 0x6a, 0x1e, 0xff}}},\n    {{{   -40,    149,     46}, 0, {     0,      0}, {0xc0, 0x6a, 0x1e, 0xff}}},\n    {{{     0,    138,    -67}, 0, {     0,      0}, {0x00, 0x69, 0xb8, 0xff}}},\n    {{{   -90,     51,    -81}, 0, {     0,      0}, {0xbe, 0x69, 0xe3, 0xff}}},\n    {{{   -90,     51,    -81}, 0, {     0,      0}, {0xbe, 0x69, 0xe3, 0xff}}},\n    {{{     0,    138,    -67}, 0, {     0,      0}, {0x00, 0x69, 0xb8, 0xff}}},\n    {{{     0,     65,   -111}, 0, {     0,      0}, {0x00, 0x6f, 0xc2, 0xff}}},\n    {{{   -40,    149,     46}, 0, {     0,      0}, {0xc0, 0x6a, 0x1e, 0xff}}},\n    {{{   -90,     51,    -81}, 0, {     0,      0}, {0xbe, 0x69, 0xe3, 0xff}}},\n    {{{  -101,     53,     57}, 0, {     0,      0}, {0xad, 0x5e, 0x14, 0xff}}},\n    {{{     0,     78,    118}, 0, {     0,      0}, {0x00, 0x6d, 0x42, 0xff}}},\n    {{{   -40,    149,     46}, 0, {     0,      0}, {0xc0, 0x6a, 0x1e, 0xff}}},\n    {{{  -101,     53,     57}, 0, {     0,      0}, {0xad, 0x5e, 0x14, 0xff}}},\n};\n\n// 0x080265C8\nstatic const Vtx koopa_shell_seg8_vertex_080265C8[] = {\n    {{{     0,     17,    108}, 0, {     0,      0}, {0x00, 0xab, 0x5f, 0xff}}},\n    {{{    46,      0,     60}, 0, {     0,      0}, {0x23, 0x8c, 0x25, 0xff}}},\n    {{{    25,     51,    118}, 0, {     0,      0}, {0x14, 0xba, 0x68, 0xff}}},\n    {{{    70,     27,    -99}, 0, {     0,      0}, {0x33, 0xa5, 0xb8, 0xff}}},\n    {{{    46,      0,    -68}, 0, {     0,      0}, {0x2a, 0x8a, 0xe9, 0xff}}},\n    {{{     0,     14,    -99}, 0, {     0,      0}, {0x00, 0xa6, 0xa6, 0xff}}},\n    {{{    46,      0,    -68}, 0, {     0,      0}, {0x2a, 0x8a, 0xe9, 0xff}}},\n    {{{    46,      0,     60}, 0, {     0,      0}, {0x23, 0x8c, 0x25, 0xff}}},\n    {{{     0,      0,     -5}, 0, {     0,      0}, {0x00, 0x80, 0x00, 0xff}}},\n    {{{   -46,      0,     59}, 0, {     0,      0}, {0xdd, 0x8c, 0x25, 0xff}}},\n    {{{     0,      0,     -5}, 0, {     0,      0}, {0x00, 0x80, 0x00, 0xff}}},\n    {{{    46,      0,     60}, 0, {     0,      0}, {0x23, 0x8c, 0x25, 0xff}}},\n    {{{     0,     14,    -99}, 0, {     0,      0}, {0x00, 0xa6, 0xa6, 0xff}}},\n    {{{     0,     39,   -112}, 0, {     0,      0}, {0x00, 0xc4, 0x90, 0xff}}},\n    {{{    70,     27,    -99}, 0, {     0,      0}, {0x33, 0xa5, 0xb8, 0xff}}},\n};\n\n// 0x080266B8\nstatic const Vtx koopa_shell_seg8_vertex_080266B8[] = {\n    {{{    46,      0,    -68}, 0, {     0,      0}, {0x2a, 0x8a, 0xe9, 0xff}}},\n    {{{    70,     17,     41}, 0, {     0,      0}, {0x49, 0x98, 0x07, 0xff}}},\n    {{{    46,      0,     60}, 0, {     0,      0}, {0x23, 0x8c, 0x25, 0xff}}},\n    {{{    46,      0,     60}, 0, {     0,      0}, {0x23, 0x8c, 0x25, 0xff}}},\n    {{{    70,     28,     88}, 0, {     0,      0}, {0x37, 0xa0, 0x3f, 0xff}}},\n    {{{    25,     51,    118}, 0, {     0,      0}, {0x14, 0xba, 0x68, 0xff}}},\n    {{{     0,      0,     -5}, 0, {     0,      0}, {0x00, 0x80, 0x00, 0xff}}},\n    {{{   -45,      0,    -69}, 0, {     0,      0}, {0xd7, 0x8a, 0xe9, 0xff}}},\n    {{{    46,      0,    -68}, 0, {     0,      0}, {0x2a, 0x8a, 0xe9, 0xff}}},\n    {{{     0,      0,     -5}, 0, {     0,      0}, {0x00, 0x80, 0x00, 0xff}}},\n    {{{   -46,      0,     59}, 0, {     0,      0}, {0xdd, 0x8c, 0x25, 0xff}}},\n    {{{   -45,      0,    -69}, 0, {     0,      0}, {0xd7, 0x8a, 0xe9, 0xff}}},\n    {{{   -45,      0,    -69}, 0, {     0,      0}, {0xd7, 0x8a, 0xe9, 0xff}}},\n    {{{   -46,      0,     59}, 0, {     0,      0}, {0xdd, 0x8c, 0x25, 0xff}}},\n    {{{   -70,     17,     41}, 0, {     0,      0}, {0xb8, 0x98, 0x07, 0xff}}},\n};\n\n// 0x080267A8\nstatic const Vtx koopa_shell_seg8_vertex_080267A8[] = {\n    {{{   -25,     51,    118}, 0, {     0,      0}, {0xf0, 0xbb, 0x6a, 0xff}}},\n    {{{   -70,     28,     88}, 0, {     0,      0}, {0xc9, 0xa0, 0x3f, 0xff}}},\n    {{{   -46,      0,     59}, 0, {     0,      0}, {0xdd, 0x8c, 0x25, 0xff}}},\n    {{{   -70,     27,    -99}, 0, {     0,      0}, {0xcd, 0xa5, 0xb7, 0xff}}},\n    {{{     0,     39,   -112}, 0, {     0,      0}, {0x00, 0xc4, 0x90, 0xff}}},\n    {{{     0,     14,    -99}, 0, {     0,      0}, {0x00, 0xa6, 0xa6, 0xff}}},\n    {{{     0,     14,    -99}, 0, {     0,      0}, {0x00, 0xa6, 0xa6, 0xff}}},\n    {{{   -45,      0,    -69}, 0, {     0,      0}, {0xd7, 0x8a, 0xe9, 0xff}}},\n    {{{   -70,     27,    -99}, 0, {     0,      0}, {0xcd, 0xa5, 0xb7, 0xff}}},\n    {{{   -25,     51,    118}, 0, {     0,      0}, {0xf0, 0xbb, 0x6a, 0xff}}},\n    {{{   -46,      0,     59}, 0, {     0,      0}, {0xdd, 0x8c, 0x25, 0xff}}},\n    {{{     0,     17,    108}, 0, {     0,      0}, {0x00, 0xab, 0x5f, 0xff}}},\n    {{{   -46,      0,     59}, 0, {     0,      0}, {0xdd, 0x8c, 0x25, 0xff}}},\n    {{{   -70,     28,     88}, 0, {     0,      0}, {0xc9, 0xa0, 0x3f, 0xff}}},\n    {{{   -70,     17,     41}, 0, {     0,      0}, {0xb8, 0x98, 0x07, 0xff}}},\n};\n\n// 0x08026898\nstatic const Vtx koopa_shell_seg8_vertex_08026898[] = {\n    {{{   -70,     21,    -50}, 0, {     0,      0}, {0xbd, 0x94, 0xf7, 0xff}}},\n    {{{   -70,     27,    -99}, 0, {     0,      0}, {0xcd, 0xa5, 0xb7, 0xff}}},\n    {{{   -45,      0,    -69}, 0, {     0,      0}, {0xd7, 0x8a, 0xe9, 0xff}}},\n    {{{    70,     17,     41}, 0, {     0,      0}, {0x49, 0x98, 0x07, 0xff}}},\n    {{{    70,     28,     88}, 0, {     0,      0}, {0x37, 0xa0, 0x3f, 0xff}}},\n    {{{    46,      0,     60}, 0, {     0,      0}, {0x23, 0x8c, 0x25, 0xff}}},\n    {{{    46,      0,    -68}, 0, {     0,      0}, {0x2a, 0x8a, 0xe9, 0xff}}},\n    {{{    70,     27,    -99}, 0, {     0,      0}, {0x33, 0xa5, 0xb8, 0xff}}},\n    {{{    70,     21,    -50}, 0, {     0,      0}, {0x44, 0x95, 0xf7, 0xff}}},\n    {{{   -70,     17,     41}, 0, {     0,      0}, {0xb8, 0x98, 0x07, 0xff}}},\n    {{{   -70,     21,    -50}, 0, {     0,      0}, {0xbd, 0x94, 0xf7, 0xff}}},\n    {{{   -45,      0,    -69}, 0, {     0,      0}, {0xd7, 0x8a, 0xe9, 0xff}}},\n    {{{    46,      0,    -68}, 0, {     0,      0}, {0x2a, 0x8a, 0xe9, 0xff}}},\n    {{{    70,     21,    -50}, 0, {     0,      0}, {0x44, 0x95, 0xf7, 0xff}}},\n    {{{    70,     17,     41}, 0, {     0,      0}, {0x49, 0x98, 0x07, 0xff}}},\n};\n\n// 0x08026988\nstatic const Vtx koopa_shell_seg8_vertex_08026988[] = {\n    {{{    46,      0,     60}, 0, {     0,      0}, {0x23, 0x8c, 0x25, 0xff}}},\n    {{{     0,     17,    108}, 0, {     0,      0}, {0x00, 0xab, 0x5f, 0xff}}},\n    {{{   -46,      0,     59}, 0, {     0,      0}, {0xdd, 0x8c, 0x25, 0xff}}},\n    {{{   -45,      0,    -69}, 0, {     0,      0}, {0xd7, 0x8a, 0xe9, 0xff}}},\n    {{{     0,     14,    -99}, 0, {     0,      0}, {0x00, 0xa6, 0xa6, 0xff}}},\n    {{{    46,      0,    -68}, 0, {     0,      0}, {0x2a, 0x8a, 0xe9, 0xff}}},\n    {{{   -25,     51,    118}, 0, {     0,      0}, {0xf0, 0xbb, 0x6a, 0xff}}},\n    {{{     0,     17,    108}, 0, {     0,      0}, {0x00, 0xab, 0x5f, 0xff}}},\n    {{{    25,     51,    118}, 0, {     0,      0}, {0x14, 0xba, 0x68, 0xff}}},\n};\n\n// 0x08026A18\nstatic const Vtx koopa_shell_seg8_vertex_08026A18[] = {\n    {{{     0,     39,   -112}, 0, {     0,      0}, {0x00, 0xc4, 0x90, 0xff}}},\n    {{{    36,     58,   -129}, 0, {     0,      0}, {0x22, 0x44, 0x9a, 0xff}}},\n    {{{   103,     44,    -89}, 0, {     0,      0}, {0x52, 0x0e, 0x9f, 0xff}}},\n    {{{    70,     27,    -99}, 0, {     0,      0}, {0x33, 0xa5, 0xb8, 0xff}}},\n    {{{     0,     39,   -112}, 0, {     0,      0}, {0x00, 0xc4, 0x90, 0xff}}},\n    {{{   103,     44,    -89}, 0, {     0,      0}, {0x52, 0x0e, 0x9f, 0xff}}},\n    {{{    70,     28,     88}, 0, {     0,      0}, {0x37, 0xa0, 0x3f, 0xff}}},\n    {{{   103,     44,     80}, 0, {     0,      0}, {0x6f, 0xfe, 0x3e, 0xff}}},\n    {{{    38,     70,    129}, 0, {     0,      0}, {0x27, 0x11, 0x78, 0xff}}},\n    {{{    38,     70,    129}, 0, {     0,      0}, {0x27, 0x11, 0x78, 0xff}}},\n    {{{    25,     51,    118}, 0, {     0,      0}, {0x14, 0xba, 0x68, 0xff}}},\n    {{{    70,     28,     88}, 0, {     0,      0}, {0x37, 0xa0, 0x3f, 0xff}}},\n    {{{    70,     17,     41}, 0, {     0,      0}, {0x49, 0x98, 0x07, 0xff}}},\n    {{{   117,     36,    -19}, 0, {     0,      0}, {0x70, 0xc4, 0x00, 0xff}}},\n    {{{    70,     28,     88}, 0, {     0,      0}, {0x37, 0xa0, 0x3f, 0xff}}},\n};\n\n// 0x08026B08\nstatic const Vtx koopa_shell_seg8_vertex_08026B08[] = {\n    {{{    70,     17,     41}, 0, {     0,      0}, {0x49, 0x98, 0x07, 0xff}}},\n    {{{    70,     21,    -50}, 0, {     0,      0}, {0x44, 0x95, 0xf7, 0xff}}},\n    {{{   117,     36,    -19}, 0, {     0,      0}, {0x70, 0xc4, 0x00, 0xff}}},\n    {{{    70,     21,    -50}, 0, {     0,      0}, {0x44, 0x95, 0xf7, 0xff}}},\n    {{{    70,     27,    -99}, 0, {     0,      0}, {0x33, 0xa5, 0xb8, 0xff}}},\n    {{{   117,     36,    -19}, 0, {     0,      0}, {0x70, 0xc4, 0x00, 0xff}}},\n    {{{    36,     58,   -129}, 0, {     0,      0}, {0x22, 0x44, 0x9a, 0xff}}},\n    {{{     0,     65,   -111}, 0, {     0,      0}, {0x00, 0x6f, 0xc2, 0xff}}},\n    {{{    90,     51,    -81}, 0, {     0,      0}, {0x42, 0x69, 0xe3, 0xff}}},\n    {{{   117,     36,    -19}, 0, {     0,      0}, {0x70, 0xc4, 0x00, 0xff}}},\n    {{{   103,     44,    -89}, 0, {     0,      0}, {0x52, 0x0e, 0x9f, 0xff}}},\n    {{{    90,     51,    -81}, 0, {     0,      0}, {0x42, 0x69, 0xe3, 0xff}}},\n    {{{   103,     44,     80}, 0, {     0,      0}, {0x6f, 0xfe, 0x3e, 0xff}}},\n    {{{   117,     36,    -19}, 0, {     0,      0}, {0x70, 0xc4, 0x00, 0xff}}},\n    {{{   101,     53,     57}, 0, {     0,      0}, {0x53, 0x5e, 0x14, 0xff}}},\n};\n\n// 0x08026BF8\nstatic const Vtx koopa_shell_seg8_vertex_08026BF8[] = {\n    {{{    38,     70,    129}, 0, {     0,      0}, {0x27, 0x11, 0x78, 0xff}}},\n    {{{   103,     44,     80}, 0, {     0,      0}, {0x6f, 0xfe, 0x3e, 0xff}}},\n    {{{   101,     53,     57}, 0, {     0,      0}, {0x53, 0x5e, 0x14, 0xff}}},\n    {{{   101,     53,     57}, 0, {     0,      0}, {0x53, 0x5e, 0x14, 0xff}}},\n    {{{     0,     78,    118}, 0, {     0,      0}, {0x00, 0x6d, 0x42, 0xff}}},\n    {{{    38,     70,    129}, 0, {     0,      0}, {0x27, 0x11, 0x78, 0xff}}},\n    {{{    90,     51,    -81}, 0, {     0,      0}, {0x42, 0x69, 0xe3, 0xff}}},\n    {{{   101,     53,     57}, 0, {     0,      0}, {0x53, 0x5e, 0x14, 0xff}}},\n    {{{   117,     36,    -19}, 0, {     0,      0}, {0x70, 0xc4, 0x00, 0xff}}},\n    {{{    90,     51,    -81}, 0, {     0,      0}, {0x42, 0x69, 0xe3, 0xff}}},\n    {{{   103,     44,    -89}, 0, {     0,      0}, {0x52, 0x0e, 0x9f, 0xff}}},\n    {{{    36,     58,   -129}, 0, {     0,      0}, {0x22, 0x44, 0x9a, 0xff}}},\n    {{{   117,     36,    -19}, 0, {     0,      0}, {0x70, 0xc4, 0x00, 0xff}}},\n    {{{   103,     44,     80}, 0, {     0,      0}, {0x6f, 0xfe, 0x3e, 0xff}}},\n    {{{    70,     28,     88}, 0, {     0,      0}, {0x37, 0xa0, 0x3f, 0xff}}},\n};\n\n// 0x08026CE8\nstatic const Vtx koopa_shell_seg8_vertex_08026CE8[] = {\n    {{{    70,     27,    -99}, 0, {     0,      0}, {0x33, 0xa5, 0xb8, 0xff}}},\n    {{{   103,     44,    -89}, 0, {     0,      0}, {0x52, 0x0e, 0x9f, 0xff}}},\n    {{{   117,     36,    -19}, 0, {     0,      0}, {0x70, 0xc4, 0x00, 0xff}}},\n    {{{   -36,     58,   -129}, 0, {     0,      0}, {0xde, 0x44, 0x9a, 0xff}}},\n    {{{     0,     65,   -111}, 0, {     0,      0}, {0x00, 0x6f, 0xc2, 0xff}}},\n    {{{    36,     58,   -129}, 0, {     0,      0}, {0x22, 0x44, 0x9a, 0xff}}},\n    {{{     0,     78,    118}, 0, {     0,      0}, {0x00, 0x6d, 0x42, 0xff}}},\n    {{{   -38,     70,    129}, 0, {     0,      0}, {0xd1, 0x25, 0x70, 0xff}}},\n    {{{    38,     70,    129}, 0, {     0,      0}, {0x27, 0x11, 0x78, 0xff}}},\n    {{{     0,     39,   -112}, 0, {     0,      0}, {0x00, 0xc4, 0x90, 0xff}}},\n    {{{   -36,     58,   -129}, 0, {     0,      0}, {0xde, 0x44, 0x9a, 0xff}}},\n    {{{    36,     58,   -129}, 0, {     0,      0}, {0x22, 0x44, 0x9a, 0xff}}},\n    {{{  -117,     36,    -19}, 0, {     0,      0}, {0x90, 0xc4, 0x00, 0xff}}},\n    {{{  -103,     44,    -89}, 0, {     0,      0}, {0xae, 0x0e, 0x9f, 0xff}}},\n    {{{   -70,     27,    -99}, 0, {     0,      0}, {0xcd, 0xa5, 0xb7, 0xff}}},\n};\n\n// 0x08026DD8\nstatic const Vtx koopa_shell_seg8_vertex_08026DD8[] = {\n    {{{   -70,     28,     88}, 0, {     0,      0}, {0xc9, 0xa0, 0x3f, 0xff}}},\n    {{{  -103,     44,     80}, 0, {     0,      0}, {0x91, 0xfe, 0x3e, 0xff}}},\n    {{{  -117,     36,    -19}, 0, {     0,      0}, {0x90, 0xc4, 0x00, 0xff}}},\n    {{{   -36,     58,   -129}, 0, {     0,      0}, {0xde, 0x44, 0x9a, 0xff}}},\n    {{{  -103,     44,    -89}, 0, {     0,      0}, {0xae, 0x0e, 0x9f, 0xff}}},\n    {{{   -90,     51,    -81}, 0, {     0,      0}, {0xbe, 0x69, 0xe3, 0xff}}},\n    {{{  -117,     36,    -19}, 0, {     0,      0}, {0x90, 0xc4, 0x00, 0xff}}},\n    {{{  -101,     53,     57}, 0, {     0,      0}, {0xad, 0x5e, 0x14, 0xff}}},\n    {{{   -90,     51,    -81}, 0, {     0,      0}, {0xbe, 0x69, 0xe3, 0xff}}},\n    {{{   -38,     70,    129}, 0, {     0,      0}, {0xd1, 0x25, 0x70, 0xff}}},\n    {{{     0,     78,    118}, 0, {     0,      0}, {0x00, 0x6d, 0x42, 0xff}}},\n    {{{  -101,     53,     57}, 0, {     0,      0}, {0xad, 0x5e, 0x14, 0xff}}},\n    {{{  -101,     53,     57}, 0, {     0,      0}, {0xad, 0x5e, 0x14, 0xff}}},\n    {{{  -103,     44,     80}, 0, {     0,      0}, {0x91, 0xfe, 0x3e, 0xff}}},\n    {{{   -38,     70,    129}, 0, {     0,      0}, {0xd1, 0x25, 0x70, 0xff}}},\n};\n\n// 0x08026EC8\nstatic const Vtx koopa_shell_seg8_vertex_08026EC8[] = {\n    {{{  -101,     53,     57}, 0, {     0,      0}, {0xad, 0x5e, 0x14, 0xff}}},\n    {{{  -117,     36,    -19}, 0, {     0,      0}, {0x90, 0xc4, 0x00, 0xff}}},\n    {{{  -103,     44,     80}, 0, {     0,      0}, {0x91, 0xfe, 0x3e, 0xff}}},\n    {{{   -90,     51,    -81}, 0, {     0,      0}, {0xbe, 0x69, 0xe3, 0xff}}},\n    {{{  -103,     44,    -89}, 0, {     0,      0}, {0xae, 0x0e, 0x9f, 0xff}}},\n    {{{  -117,     36,    -19}, 0, {     0,      0}, {0x90, 0xc4, 0x00, 0xff}}},\n    {{{   -90,     51,    -81}, 0, {     0,      0}, {0xbe, 0x69, 0xe3, 0xff}}},\n    {{{     0,     65,   -111}, 0, {     0,      0}, {0x00, 0x6f, 0xc2, 0xff}}},\n    {{{   -36,     58,   -129}, 0, {     0,      0}, {0xde, 0x44, 0x9a, 0xff}}},\n    {{{  -117,     36,    -19}, 0, {     0,      0}, {0x90, 0xc4, 0x00, 0xff}}},\n    {{{   -70,     27,    -99}, 0, {     0,      0}, {0xcd, 0xa5, 0xb7, 0xff}}},\n    {{{   -70,     21,    -50}, 0, {     0,      0}, {0xbd, 0x94, 0xf7, 0xff}}},\n    {{{  -117,     36,    -19}, 0, {     0,      0}, {0x90, 0xc4, 0x00, 0xff}}},\n    {{{   -70,     21,    -50}, 0, {     0,      0}, {0xbd, 0x94, 0xf7, 0xff}}},\n    {{{   -70,     17,     41}, 0, {     0,      0}, {0xb8, 0x98, 0x07, 0xff}}},\n};\n\n// 0x08026FB8\nstatic const Vtx koopa_shell_seg8_vertex_08026FB8[] = {\n    {{{   -70,     28,     88}, 0, {     0,      0}, {0xc9, 0xa0, 0x3f, 0xff}}},\n    {{{  -117,     36,    -19}, 0, {     0,      0}, {0x90, 0xc4, 0x00, 0xff}}},\n    {{{   -70,     17,     41}, 0, {     0,      0}, {0xb8, 0x98, 0x07, 0xff}}},\n    {{{   -70,     28,     88}, 0, {     0,      0}, {0xc9, 0xa0, 0x3f, 0xff}}},\n    {{{   -25,     51,    118}, 0, {     0,      0}, {0xf0, 0xbb, 0x6a, 0xff}}},\n    {{{   -38,     70,    129}, 0, {     0,      0}, {0xd1, 0x25, 0x70, 0xff}}},\n    {{{   -38,     70,    129}, 0, {     0,      0}, {0xd1, 0x25, 0x70, 0xff}}},\n    {{{  -103,     44,     80}, 0, {     0,      0}, {0x91, 0xfe, 0x3e, 0xff}}},\n    {{{   -70,     28,     88}, 0, {     0,      0}, {0xc9, 0xa0, 0x3f, 0xff}}},\n    {{{  -103,     44,    -89}, 0, {     0,      0}, {0xae, 0x0e, 0x9f, 0xff}}},\n    {{{     0,     39,   -112}, 0, {     0,      0}, {0x00, 0xc4, 0x90, 0xff}}},\n    {{{   -70,     27,    -99}, 0, {     0,      0}, {0xcd, 0xa5, 0xb7, 0xff}}},\n    {{{  -103,     44,    -89}, 0, {     0,      0}, {0xae, 0x0e, 0x9f, 0xff}}},\n    {{{   -36,     58,   -129}, 0, {     0,      0}, {0xde, 0x44, 0x9a, 0xff}}},\n    {{{     0,     39,   -112}, 0, {     0,      0}, {0x00, 0xc4, 0x90, 0xff}}},\n};\n\n// 0x080270A8\nstatic const Vtx koopa_shell_seg8_vertex_080270A8[] = {\n    {{{   -25,     51,    118}, 0, {     0,      0}, {0xf0, 0xbb, 0x6a, 0xff}}},\n    {{{    25,     51,    118}, 0, {     0,      0}, {0x14, 0xba, 0x68, 0xff}}},\n    {{{    38,     70,    129}, 0, {     0,      0}, {0x27, 0x11, 0x78, 0xff}}},\n    {{{    38,     70,    129}, 0, {     0,      0}, {0x27, 0x11, 0x78, 0xff}}},\n    {{{   -38,     70,    129}, 0, {     0,      0}, {0xd1, 0x25, 0x70, 0xff}}},\n    {{{   -25,     51,    118}, 0, {     0,      0}, {0xf0, 0xbb, 0x6a, 0xff}}},\n};\n\n// 0x08027108 - 0x08027170\nconst Gfx koopa_shell_seg8_dl_08027108[] = {\n    gsSPVertex(koopa_shell_seg8_vertex_080263E8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(koopa_shell_seg8_vertex_080264D8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x08027170 - 0x08027258\nconst Gfx koopa_shell_seg8_dl_08027170[] = {\n    gsSPVertex(koopa_shell_seg8_vertex_080265C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(koopa_shell_seg8_vertex_080266B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(koopa_shell_seg8_vertex_080267A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(koopa_shell_seg8_vertex_08026898, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(koopa_shell_seg8_vertex_08026988, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x08027258 - 0x080273C8\nconst Gfx koopa_shell_seg8_dl_08027258[] = {\n    gsSPVertex(koopa_shell_seg8_vertex_08026A18, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(koopa_shell_seg8_vertex_08026B08, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(koopa_shell_seg8_vertex_08026BF8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(koopa_shell_seg8_vertex_08026CE8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(koopa_shell_seg8_vertex_08026DD8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(koopa_shell_seg8_vertex_08026EC8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(koopa_shell_seg8_vertex_08026FB8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(koopa_shell_seg8_vertex_080270A8, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x080273C8 - 0x08027420\nconst Gfx koopa_shell_seg8_dl_080273C8[] = {\n    gsDPPipeSync(),\n    gsSPNumLights(NUMLIGHTS_1),\n    gsSPLight(&koopa_shell_seg8_lights_08026388.l, 1),\n    gsSPLight(&koopa_shell_seg8_lights_08026388.a, 2),\n    gsSPDisplayList(koopa_shell_seg8_dl_08027108),\n    gsSPLight(&koopa_shell_seg8_lights_080263B8.l, 1),\n    gsSPLight(&koopa_shell_seg8_lights_080263B8.a, 2),\n    gsSPDisplayList(koopa_shell_seg8_dl_08027170),\n    gsSPLight(&koopa_shell_seg8_lights_080263D0.l, 1),\n    gsSPLight(&koopa_shell_seg8_lights_080263D0.a, 2),\n    gsSPBranchList(koopa_shell_seg8_dl_08027258),\n};\n\n// 0x08027420 - 0x08027470\nconst Gfx koopa_shell_seg8_dl_08027420[] = {\n    gsDPPipeSync(),\n    gsSPLight(&koopa_shell_seg8_lights_080263A0.l, 1),\n    gsSPLight(&koopa_shell_seg8_lights_080263A0.a, 2),\n    gsSPDisplayList(koopa_shell_seg8_dl_08027108),\n    gsSPLight(&koopa_shell_seg8_lights_080263B8.l, 1),\n    gsSPLight(&koopa_shell_seg8_lights_080263B8.a, 2),\n    gsSPDisplayList(koopa_shell_seg8_dl_08027170),\n    gsSPLight(&koopa_shell_seg8_lights_080263D0.l, 1),\n    gsSPLight(&koopa_shell_seg8_lights_080263D0.a, 2),\n    gsSPBranchList(koopa_shell_seg8_dl_08027258),\n};\n\n// 0x08027470\nstatic const Lights1 koopa_shell_seg8_lights_08027470 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x08027488\nstatic const Lights1 koopa_shell_seg8_lights_08027488 = gdSPDefLights1(\n    0x38, 0x2b, 0x00,\n    0xe0, 0xae, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x080274A0\nALIGNED8 static const Texture koopa_shell_seg8_texture_080274A0[] = {\n#include \"actors/koopa_shell/koopa_shell_front.rgba16.inc.c\"\n};\n\n// 0x08027CA0\nALIGNED8 static const Texture koopa_shell_seg8_texture_08027CA0[] = {\n#include \"actors/koopa_shell/koopa_shell_back.rgba16.inc.c\"\n};\n\n// 0x080284A0\nstatic const Vtx koopa_shell_seg8_vertex_080284A0[] = {\n    {{{   -15,     47,    -16}, 0, {   774,    814}, {0xe1, 0x74, 0xdb, 0xff}}},\n    {{{     0,     29,    -44}, 0, {   468,   1346}, {0x00, 0x67, 0xb6, 0xff}}},\n    {{{   -34,     23,    -31}, 0, {  1132,   1060}, {0xba, 0x63, 0xdc, 0xff}}},\n    {{{   -15,     49,     15}, 0, {   770,    152}, {0xca, 0x71, 0x12, 0xff}}},\n    {{{    16,     47,    -16}, 0, {   158,    814}, {0x27, 0x6f, 0xd3, 0xff}}},\n    {{{    16,     49,     15}, 0, {   156,    152}, {0x2c, 0x75, 0x0e, 0xff}}},\n    {{{    35,     23,    -31}, 0, {  -196,   1060}, {0x46, 0x63, 0xdc, 0xff}}},\n    {{{   -36,     29,     26}, 0, {  1164,   -156}, {0xb1, 0x60, 0x16, 0xff}}},\n    {{{     0,     40,     40}, 0, {   462,   -438}, {0x00, 0x75, 0x2f, 0xff}}},\n    {{{    37,     29,     26}, 0, {  -236,   -154}, {0x4f, 0x60, 0x16, 0xff}}},\n};\n\n// 0x08028540\nstatic const Vtx koopa_shell_seg8_vertex_08028540[] = {\n    {{{    19,      0,     25}, 0, {   826,     98}, {0x15, 0x86, 0x18, 0xff}}},\n    {{{     0,      6,     45}, 0, {   524,   -122}, {0x00, 0xa7, 0x5a, 0xff}}},\n    {{{   -18,      0,     25}, 0, {   212,    100}, {0xe6, 0x88, 0x1d, 0xff}}},\n    {{{   -18,      0,    -27}, 0, {   196,    712}, {0xe8, 0x88, 0xe0, 0xff}}},\n    {{{    19,      0,    -27}, 0, {   810,    710}, {0x21, 0x89, 0xe5, 0xff}}},\n    {{{    29,     10,     37}, 0, {   990,    -24}, {0x2f, 0xa7, 0x4c, 0xff}}},\n    {{{    37,      6,     18}, 0, {  1120,    194}, {0x39, 0x91, 0x10, 0xff}}},\n    {{{   -36,      6,     18}, 0, {   -88,    190}, {0xc7, 0x91, 0x10, 0xff}}},\n    {{{   -28,     10,     37}, 0, {    52,    -26}, {0xd0, 0xa8, 0x4c, 0xff}}},\n    {{{    27,     10,    -39}, 0, {   932,    864}, {0x22, 0xa1, 0xb5, 0xff}}},\n    {{{   -26,     10,    -39}, 0, {    58,    862}, {0xd7, 0xa2, 0xb7, 0xff}}},\n    {{{   -36,      8,    -19}, 0, {   -98,    628}, {0xc0, 0x97, 0xe6, 0xff}}},\n    {{{     0,     15,    -45}, 0, {   492,    932}, {0x00, 0xb2, 0x9d, 0xff}}},\n    {{{    37,      8,    -19}, 0, {  1104,    632}, {0x40, 0x97, 0xe6, 0xff}}},\n};\n\n// 0x08028620\nstatic const Vtx koopa_shell_seg8_vertex_08028620[] = {\n    {{{   -14,     33,     54}, 0, {     0,      0}, {0xcd, 0x27, 0x6d, 0xff}}},\n    {{{   -28,     10,     37}, 0, {     0,      0}, {0xd0, 0xa8, 0x4c, 0xff}}},\n    {{{     0,      6,     45}, 0, {     0,      0}, {0x00, 0xa7, 0x5a, 0xff}}},\n    {{{    15,     33,     54}, 0, {     0,      0}, {0x32, 0x27, 0x6d, 0xff}}},\n    {{{    29,     10,     37}, 0, {     0,      0}, {0x2f, 0xa7, 0x4c, 0xff}}},\n};\n\n// 0x08028670\nstatic const Vtx koopa_shell_seg8_vertex_08028670[] = {\n    {{{   -34,     23,    -31}, 0, {     0,      0}, {0xba, 0x63, 0xdc, 0xff}}},\n    {{{   -40,     17,    -38}, 0, {     0,      0}, {0xb5, 0xf3, 0x9b, 0xff}}},\n    {{{   -50,     14,     -6}, 0, {     0,      0}, {0x86, 0xe2, 0xee, 0xff}}},\n    {{{     0,     22,    -56}, 0, {     0,      0}, {0x00, 0x3d, 0x92, 0xff}}},\n    {{{     0,     15,    -45}, 0, {     0,      0}, {0x00, 0xb2, 0x9d, 0xff}}},\n    {{{   -26,     10,    -39}, 0, {     0,      0}, {0xd7, 0xa2, 0xb7, 0xff}}},\n    {{{    41,     17,    -38}, 0, {     0,      0}, {0x4a, 0xf3, 0x9b, 0xff}}},\n    {{{    27,     10,    -39}, 0, {     0,      0}, {0x22, 0xa1, 0xb5, 0xff}}},\n    {{{   -36,      8,    -19}, 0, {     0,      0}, {0xc0, 0x97, 0xe6, 0xff}}},\n    {{{   -36,     29,     26}, 0, {     0,      0}, {0xb1, 0x60, 0x16, 0xff}}},\n    {{{   -44,     16,     32}, 0, {     0,      0}, {0x97, 0xe5, 0x41, 0xff}}},\n    {{{   -14,     33,     54}, 0, {     0,      0}, {0xcd, 0x27, 0x6d, 0xff}}},\n    {{{     0,     40,     40}, 0, {     0,      0}, {0x00, 0x75, 0x2f, 0xff}}},\n    {{{    15,     33,     54}, 0, {     0,      0}, {0x32, 0x27, 0x6d, 0xff}}},\n    {{{   -28,     10,     37}, 0, {     0,      0}, {0xd0, 0xa8, 0x4c, 0xff}}},\n};\n\n// 0x08028760\nstatic const Vtx koopa_shell_seg8_vertex_08028760[] = {\n    {{{     0,     22,    -56}, 0, {     0,      0}, {0x00, 0x3d, 0x92, 0xff}}},\n    {{{     0,     29,    -44}, 0, {     0,      0}, {0x00, 0x67, 0xb6, 0xff}}},\n    {{{    35,     23,    -31}, 0, {     0,      0}, {0x46, 0x63, 0xdc, 0xff}}},\n    {{{   -36,      6,     18}, 0, {     0,      0}, {0xc7, 0x91, 0x10, 0xff}}},\n    {{{   -28,     10,     37}, 0, {     0,      0}, {0xd0, 0xa8, 0x4c, 0xff}}},\n    {{{   -44,     16,     32}, 0, {     0,      0}, {0x97, 0xe5, 0x41, 0xff}}},\n    {{{   -50,     14,     -6}, 0, {     0,      0}, {0x86, 0xe2, 0xee, 0xff}}},\n    {{{   -36,      8,    -19}, 0, {     0,      0}, {0xc0, 0x97, 0xe6, 0xff}}},\n    {{{   -34,     23,    -31}, 0, {     0,      0}, {0xba, 0x63, 0xdc, 0xff}}},\n    {{{    37,     29,     26}, 0, {     0,      0}, {0x4f, 0x60, 0x16, 0xff}}},\n    {{{     0,     40,     40}, 0, {     0,      0}, {0x00, 0x75, 0x2f, 0xff}}},\n    {{{    15,     33,     54}, 0, {     0,      0}, {0x32, 0x27, 0x6d, 0xff}}},\n    {{{    41,     17,    -38}, 0, {     0,      0}, {0x4a, 0xf3, 0x9b, 0xff}}},\n    {{{    29,     10,     37}, 0, {     0,      0}, {0x2f, 0xa7, 0x4c, 0xff}}},\n    {{{    45,     16,     32}, 0, {     0,      0}, {0x69, 0xe5, 0x41, 0xff}}},\n};\n\n// 0x08028850\nstatic const Vtx koopa_shell_seg8_vertex_08028850[] = {\n    {{{    27,     10,    -39}, 0, {     0,      0}, {0x22, 0xa1, 0xb5, 0xff}}},\n    {{{    41,     17,    -38}, 0, {     0,      0}, {0x4a, 0xf3, 0x9b, 0xff}}},\n    {{{    51,     14,     -6}, 0, {     0,      0}, {0x7a, 0xe2, 0xee, 0xff}}},\n    {{{    37,      8,    -19}, 0, {     0,      0}, {0x40, 0x97, 0xe6, 0xff}}},\n    {{{    35,     23,    -31}, 0, {     0,      0}, {0x46, 0x63, 0xdc, 0xff}}},\n    {{{    37,     29,     26}, 0, {     0,      0}, {0x4f, 0x60, 0x16, 0xff}}},\n    {{{    37,      6,     18}, 0, {     0,      0}, {0x39, 0x91, 0x10, 0xff}}},\n    {{{    45,     16,     32}, 0, {     0,      0}, {0x69, 0xe5, 0x41, 0xff}}},\n    {{{    29,     10,     37}, 0, {     0,      0}, {0x2f, 0xa7, 0x4c, 0xff}}},\n};\n\n// 0x080288E0 - 0x08028978\nconst Gfx koopa_shell_seg8_dl_080288E0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, koopa_shell_seg8_texture_08027CA0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&koopa_shell_seg8_lights_08027470.l, 1),\n    gsSPLight(&koopa_shell_seg8_lights_08027470.a, 2),\n    gsSPVertex(koopa_shell_seg8_vertex_080284A0, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  0,  5,  4, 0x0),\n    gsSP2Triangles( 0,  3,  5, 0x0,  1,  4,  6, 0x0),\n    gsSP2Triangles( 6,  4,  5, 0x0,  3,  2,  7, 0x0),\n    gsSP2Triangles( 3,  8,  5, 0x0,  8,  3,  7, 0x0),\n    gsSP2Triangles( 9,  5,  8, 0x0,  9,  6,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x08028978 - 0x08028A20\nconst Gfx koopa_shell_seg8_dl_08028978[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, koopa_shell_seg8_texture_080274A0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(koopa_shell_seg8_vertex_08028540, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 0,  2,  3, 0x0,  1,  0,  5, 0x0),\n    gsSP2Triangles( 4,  6,  0, 0x0,  6,  5,  0, 0x0),\n    gsSP2Triangles( 3,  2,  7, 0x0,  8,  2,  1, 0x0),\n    gsSP2Triangles( 2,  8,  7, 0x0,  9,  4,  3, 0x0),\n    gsSP2Triangles( 3, 10,  9, 0x0,  7, 11,  3, 0x0),\n    gsSP2Triangles(11, 10,  3, 0x0, 10, 12,  9, 0x0),\n    gsSP2Triangles( 4,  9, 13, 0x0,  4, 13,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x08028A20 - 0x08028B78\nconst Gfx koopa_shell_seg8_dl_08028A20[] = {\n    gsSPLight(&koopa_shell_seg8_lights_08027488.l, 1),\n    gsSPLight(&koopa_shell_seg8_lights_08027488.a, 2),\n    gsSPVertex(koopa_shell_seg8_vertex_08028620, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP1Triangle( 2,  4,  3, 0x0),\n    gsSPLight(&koopa_shell_seg8_lights_08027470.l, 1),\n    gsSPLight(&koopa_shell_seg8_lights_08027470.a, 2),\n    gsSPVertex(koopa_shell_seg8_vertex_08028670, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  1,  3, 0x0,  2,  1,  5, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  4,  3,  6, 0x0),\n    gsSP2Triangles( 7,  4,  6, 0x0,  2,  5,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 11, 12,  9, 0x0),\n    gsSP2Triangles(12, 11, 13, 0x0, 11, 10, 14, 0x0),\n    gsSP2Triangles( 9,  2, 10, 0x0,  2,  9,  0, 0x0),\n    gsSPVertex(koopa_shell_seg8_vertex_08028760, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  6,  7,  3, 0x0),\n    gsSP2Triangles( 0,  8,  1, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 2, 12,  0, 0x0, 13, 14, 11, 0x0),\n    gsSP1Triangle(11, 14,  9, 0x0),\n    gsSPVertex(koopa_shell_seg8_vertex_08028850, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  4,  5,  2, 0x0),\n    gsSP2Triangles( 6,  2,  7, 0x0,  6,  3,  2, 0x0),\n    gsSP2Triangles( 7,  2,  5, 0x0,  6,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x08028B78 - 0x08028BE8\nconst Gfx koopa_shell_seg8_dl_08028B78[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(koopa_shell_seg8_dl_080288E0),\n    gsSPDisplayList(koopa_shell_seg8_dl_08028978),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(koopa_shell_seg8_dl_08028A20),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/lakitu_cameraman/anims/anim_060058E0.inc.c",
    "content": "// 0x06005638\nstatic const s16 lakitu_seg6_animvalue_06005638[] = {\n    0x0000, 0x0097, 0xFFC2, 0x3FFF, 0xFC86, 0x1413, 0x89B5, 0x019A,\n    0xF031, 0x88AD, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0001, 0x0002, 0x0002, 0x0003, 0x0004, 0x0004, 0x0004,\n    0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0006, 0x0006, 0x0006,\n    0x0006, 0x0006, 0x0006, 0x0005, 0x0004, 0x0003, 0x0001, 0x0000,\n    0xF913, 0xF9B4, 0xFA9E, 0xFBC3, 0xFD18, 0xFE8C, 0x0013, 0x01A0,\n    0x0324, 0x0493, 0x05DD, 0x06F6, 0x07CF, 0x085C, 0x088E, 0x0863,\n    0x07E9, 0x072A, 0x0633, 0x050E, 0x03C5, 0x0264, 0x00F6, 0xFF86,\n    0xFE1E, 0xFCC9, 0xFB93, 0xFA86, 0xF9AD, 0xF913, 0x009A, 0x0065,\n    0x0040, 0x002A, 0x0022, 0x0026, 0x0035, 0x004E, 0x006E, 0x0095,\n    0x00C2, 0x00F2, 0x0124, 0x0158, 0x018B, 0x01BC, 0x01EA, 0x0214,\n    0x0237, 0x0253, 0x0266, 0x026F, 0x026C, 0x025C, 0x023D, 0x020F,\n    0x01CF, 0x017D, 0x0116, 0x009A, 0x05B4, 0x0586, 0x0506, 0x0442,\n    0x0347, 0x0223, 0x00E4, 0xFF98, 0xFE4B, 0xFD0C, 0xFBE8, 0xFAED,\n    0xFA29, 0xF9A9, 0xF97C, 0xF9A4, 0xFA14, 0xFAC1, 0xFBA1, 0xFCA7,\n    0xFDC9, 0xFEFC, 0x0033, 0x0166, 0x0288, 0x038F, 0x046E, 0x051C,\n    0x058C, 0x05B4, 0xBF67, 0xBF67, 0xBF67, 0xBF67, 0xBF67, 0xBF67,\n    0xBF67, 0xBF67, 0xBF66, 0xBF66, 0xBF66, 0xBF66, 0xBF66, 0xBF66,\n    0xBF66, 0xBF66, 0xBF66, 0xBF66, 0xBF66, 0xBF66, 0xBF66, 0xBF66,\n    0xBF67, 0xBF67, 0xBF67, 0xBF67, 0xBF67, 0xBF67, 0xBF67, 0xBF67,\n    0x05B4, 0x0586, 0x0506, 0x0442, 0x0347, 0x0223, 0x00E4, 0xFF98,\n    0xFE4B, 0xFD0C, 0xFBE8, 0xFAED, 0xFA29, 0xF9A9, 0xF97C, 0xF9A4,\n    0xFA14, 0xFAC1, 0xFBA1, 0xFCA7, 0xFDC9, 0xFEFC, 0x0033, 0x0166,\n    0x0288, 0x038F, 0x046E, 0x051C, 0x058C, 0x05B4, 0xBF67, 0xBF67,\n    0xBF67, 0xBF67, 0xBF67, 0xBF67, 0xBF67, 0xBF67, 0xBF66, 0xBF66,\n    0xBF66, 0xBF66, 0xBF66, 0xBF66, 0xBF66, 0xBF66, 0xBF66, 0xBF66,\n    0xBF66, 0xBF66, 0xBF66, 0xBF66, 0xBF67, 0xBF67, 0xBF67, 0xBF67,\n    0xBF67, 0xBF67, 0xBF67, 0xBF67, 0x04DE, 0xF0D8, 0x76E8, 0x019A,\n    0xF031, 0x88AD, 0xA2CB, 0xA2CB, 0xFFCA, 0xFE70, 0x2743, 0x274A,\n    0x275D, 0x277B, 0x27A1, 0x27CD, 0x27FD, 0x2830, 0x2863, 0x2894,\n    0x28C1, 0x28E8, 0x2907, 0x291C, 0x2925, 0x2920, 0x2910, 0x28F6,\n    0x28D4, 0x28AC, 0x287F, 0x284F, 0x281F, 0x27EF, 0x27C2, 0x2799,\n    0x2776, 0x275A, 0x2749, 0x2743, 0x5C65, 0x0000,\n};\n\n// 0x06005844\nstatic const u16 lakitu_seg6_animindex_06005844[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0000, 0x0001, 0x0003, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0104,\n    0x0001, 0x00E4, 0x0001, 0x00E5, 0x001E, 0x00E6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00E3,\n    0x0001, 0x0004, 0x0001, 0x0005, 0x0001, 0x0006,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00E2,\n    0x0001, 0x00DF, 0x0001, 0x00E0, 0x0001, 0x00E1,\n    0x0001, 0x00DC, 0x0001, 0x00DD, 0x0001, 0x00DE,\n    0x0001, 0x0000, 0x001E, 0x00A0, 0x001E, 0x00BE,\n    0x001E, 0x000A, 0x001E, 0x0028, 0x001E, 0x0046,\n    0x0001, 0x0000, 0x001E, 0x0064, 0x001E, 0x0082,\n    0x0001, 0x0007, 0x0001, 0x0008, 0x0001, 0x0009,\n};\n\n// 0x060058E0\nstatic const struct Animation lakitu_seg6_anim_060058E0 = {\n    0,\n    0,\n    0,\n    0,\n    0x1E,\n    ANIMINDEX_NUMPARTS(lakitu_seg6_animindex_06005844),\n    lakitu_seg6_animvalue_06005638,\n    lakitu_seg6_animindex_06005844,\n    0,\n};\n"
  },
  {
    "path": "actors/lakitu_cameraman/anims/data.inc.c",
    "content": "#include \"anim_060058E0.inc.c\"\n"
  },
  {
    "path": "actors/lakitu_cameraman/anims/table.inc.c",
    "content": "// 0x060058F8\nconst struct Animation *const lakitu_seg6_anims_060058F8[] = {\n    &lakitu_seg6_anim_060058E0,\n    NULL,\n};\n"
  },
  {
    "path": "actors/lakitu_cameraman/geo.inc.c",
    "content": "// 0x0D000000\nconst GeoLayout lakitu_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 100),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, lakitu_seg6_dl_06003E30),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 132, 0, 0, lakitu_seg6_dl_06004680),\n                    GEO_OPEN_NODE(),\n                        GEO_SWITCH_CASE(2, geo_switch_anim_state),\n                        GEO_OPEN_NODE(),\n                            GEO_DISPLAY_LIST(LAYER_ALPHA, lakitu_seg6_dl_06004C60),\n                            GEO_DISPLAY_LIST(LAYER_ALPHA, lakitu_seg6_dl_06004C88),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 87, 18, 72, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, lakitu_seg6_dl_060047E8),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 87, 18, -72, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, lakitu_seg6_dl_060049E0),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 334, -214, -50, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, lakitu_seg6_dl_06005610),\n                                GEO_OPEN_NODE(),\n                                    GEO_ANIMATED_PART(LAYER_OPAQUE, 191, 0, 0, lakitu_seg6_dl_06005360),\n                                GEO_CLOSE_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, lakitu_seg6_dl_060055E8),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, lakitu_seg6_dl_06005598),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/lakitu_cameraman/model.inc.c",
    "content": "// Lakitu (Cameraman)\n\n// 0x06000000\nALIGNED8 static const Texture lakitu_seg6_texture_06000000[] = {\n#include \"actors/lakitu_cameraman/lakitu_cameraman_cloud_face_unused.rgba16.inc.c\"\n};\n\n// 0x06000800\nALIGNED8 static const Texture lakitu_seg6_texture_06000800[] = {\n#include \"actors/lakitu_cameraman/lakitu_cameraman_eyes_open.rgba16.inc.c\"\n};\n\n// 0x06001800\nALIGNED8 static const Texture lakitu_seg6_texture_06001800[] = {\n#include \"actors/lakitu_cameraman/lakitu_cameraman_eyes_closed.rgba16.inc.c\"\n};\n\n// 0x06002800\nALIGNED8 static const Texture lakitu_seg6_texture_06002800[] = {\n#include \"actors/lakitu_cameraman/lakitu_cameraman_shell.rgba16.inc.c\"\n};\n\n// 0x06003000\nALIGNED8 static const Texture lakitu_seg6_texture_06003000[] = {\n#include \"actors/lakitu_cameraman/lakitu_cameraman_frown.rgba16.inc.c\"\n};\n\n// 0x06003800\nALIGNED8 static const Texture lakitu_seg6_texture_06003800[] = {\n#include \"actors/lakitu_cameraman/lakitu_camera_lens.rgba16.inc.c\"\n};\n\n// 0x06003A00\nstatic const Lights1 lakitu_seg6_lights_06003A00 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x06003A18\nstatic const Lights1 lakitu_seg6_lights_06003A18 = gdSPDefLights1(\n    0x79, 0x55, 0x00,\n    0xf2, 0xab, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x06003A30\nstatic const Vtx lakitu_seg6_vertex_06003A30[] = {\n    {{{    91,    -25,     86}, 0, {   240,    464}, {0x3e, 0xd0, 0x63, 0xff}}},\n    {{{   132,    -17,     43}, 0, {    34,    468}, {0x71, 0xce, 0x1a, 0xff}}},\n    {{{   137,     35,     43}, 0, {     0,    980}, {0x64, 0x33, 0x39, 0xff}}},\n    {{{    -2,     15,    -96}, 0, {   684,    990}, {0xd6, 0x33, 0x94, 0xff}}},\n    {{{    84,     28,    -96}, 0, {   242,    984}, {0x36, 0x2a, 0x96, 0xff}}},\n    {{{    91,    -22,    -81}, 0, {   240,    474}, {0x24, 0xc2, 0x98, 0xff}}},\n    {{{   137,     35,    -40}, 0, {     0,    980}, {0x66, 0x45, 0xe3, 0xff}}},\n    {{{   132,    -17,    -40}, 0, {    34,    468}, {0x6a, 0xd6, 0xcb, 0xff}}},\n    {{{    84,    -76,    -28}, 0, {   310,    -14}, {0x3a, 0x94, 0xe4, 0xff}}},\n    {{{    22,    -84,    -28}, 0, {   612,    -10}, {0xeb, 0x8f, 0xcb, 0xff}}},\n    {{{     2,    -35,    -81}, 0, {   684,    480}, {0xd1, 0xbf, 0x9f, 0xff}}},\n    {{{    22,    -84,     30}, 0, {   612,    -10}, {0xe0, 0x89, 0x1b, 0xff}}},\n    {{{    84,    -76,     30}, 0, {   310,    -14}, {0x30, 0x97, 0x33, 0xff}}},\n    {{{     2,    -35,     86}, 0, {   684,    470}, {0xea, 0xbb, 0x67, 0xff}}},\n    {{{    84,     28,     99}, 0, {   242,    984}, {0x1f, 0x28, 0x74, 0xff}}},\n    {{{    -2,     15,     99}, 0, {   684,    990}, {0xc1, 0x34, 0x60, 0xff}}},\n};\n\n// 0x06003B30\nstatic const Vtx lakitu_seg6_vertex_06003B30[] = {\n    {{{    -2,     15,     99}, 0, {   684,    990}, {0xc1, 0x34, 0x60, 0xff}}},\n    {{{   -56,      7,     43}, 0, {   958,    992}, {0x87, 0x10, 0x21, 0xff}}},\n    {{{   -33,    -40,     43}, 0, {   884,    484}, {0xa3, 0xbb, 0x31, 0xff}}},\n    {{{     2,    -35,     86}, 0, {   684,    470}, {0xea, 0xbb, 0x67, 0xff}}},\n    {{{    22,    -84,     30}, 0, {   612,    -10}, {0xe0, 0x89, 0x1b, 0xff}}},\n    {{{   -33,    -40,    -40}, 0, {   884,    484}, {0xa1, 0xb1, 0xe7, 0xff}}},\n    {{{   -56,      7,    -40}, 0, {   958,    992}, {0x90, 0x14, 0xc9, 0xff}}},\n    {{{    22,    -84,    -28}, 0, {   612,    -10}, {0xeb, 0x8f, 0xcb, 0xff}}},\n    {{{     2,    -35,    -81}, 0, {   684,    480}, {0xd1, 0xbf, 0x9f, 0xff}}},\n    {{{    -2,     15,    -96}, 0, {   684,    990}, {0xd6, 0x33, 0x94, 0xff}}},\n};\n\n// 0x06003BD0\nstatic const Vtx lakitu_seg6_vertex_06003BD0[] = {\n    {{{     0,     51,      0}, 0, {     0,      0}, {0xcf, 0x75, 0x00, 0xff}}},\n    {{{    68,     61,     35}, 0, {     0,      0}, {0x09, 0x7b, 0x1a, 0xff}}},\n    {{{    68,     61,    -33}, 0, {     0,      0}, {0x01, 0x7a, 0xe0, 0xff}}},\n    {{{    84,     28,    -96}, 0, {     0,      0}, {0x36, 0x2a, 0x96, 0xff}}},\n    {{{    -2,     15,    -96}, 0, {     0,      0}, {0xd6, 0x33, 0x94, 0xff}}},\n    {{{   137,     35,    -40}, 0, {     0,      0}, {0x66, 0x45, 0xe3, 0xff}}},\n    {{{   -56,      7,    -40}, 0, {     0,      0}, {0x90, 0x14, 0xc9, 0xff}}},\n    {{{    -2,     15,     99}, 0, {     0,      0}, {0xc1, 0x34, 0x60, 0xff}}},\n    {{{    84,     28,     99}, 0, {     0,      0}, {0x1f, 0x28, 0x74, 0xff}}},\n    {{{   -56,      7,     43}, 0, {     0,      0}, {0x87, 0x10, 0x21, 0xff}}},\n    {{{   137,     35,     43}, 0, {     0,      0}, {0x64, 0x33, 0x39, 0xff}}},\n};\n\n// 0x06003C80 - 0x06003DB0\nconst Gfx lakitu_seg6_dl_06003C80[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lakitu_seg6_texture_06002800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&lakitu_seg6_lights_06003A00.l, 1),\n    gsSPLight(&lakitu_seg6_lights_06003A00.a, 2),\n    gsSPVertex(lakitu_seg6_vertex_06003A30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  8,  7,  1, 0x0),\n    gsSP2Triangles( 6,  1,  7, 0x0,  5,  8,  9, 0x0),\n    gsSP2Triangles( 5,  9, 10, 0x0,  3,  5, 10, 0x0),\n    gsSP2Triangles( 6,  2,  1, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles( 8, 12, 11, 0x0,  8,  1, 12, 0x0),\n    gsSP2Triangles(12,  1,  0, 0x0, 13, 11, 12, 0x0),\n    gsSP2Triangles(13, 12,  0, 0x0, 14, 13,  0, 0x0),\n    gsSP2Triangles( 0,  2, 14, 0x0, 14, 15, 13, 0x0),\n    gsSPVertex(lakitu_seg6_vertex_06003B30, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  4,  2,  5, 0x0),\n    gsSP2Triangles( 1,  5,  2, 0x0,  1,  6,  5, 0x0),\n    gsSP2Triangles( 4,  5,  7, 0x0,  7,  5,  8, 0x0),\n    gsSP2Triangles( 8,  5,  6, 0x0,  8,  6,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06003DB0 - 0x06003E30\nconst Gfx lakitu_seg6_dl_06003DB0[] = {\n    gsSPLight(&lakitu_seg6_lights_06003A18.l, 1),\n    gsSPLight(&lakitu_seg6_lights_06003A18.a, 2),\n    gsSPVertex(lakitu_seg6_vertex_06003BD0, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 1,  5,  2, 0x0,  4,  0,  2, 0x0),\n    gsSP2Triangles( 5,  3,  2, 0x0,  4,  6,  0, 0x0),\n    gsSP2Triangles( 7,  8,  1, 0x0,  9,  7,  0, 0x0),\n    gsSP2Triangles( 1,  0,  7, 0x0,  8, 10,  1, 0x0),\n    gsSP2Triangles( 1, 10,  5, 0x0,  0,  6,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06003E30 - 0x06003E98\nconst Gfx lakitu_seg6_dl_06003E30[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lakitu_seg6_dl_06003C80),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(lakitu_seg6_dl_06003DB0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06003E98\nstatic const Lights1 lakitu_seg6_lights_06003E98 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x06003EB0\nstatic const Vtx lakitu_seg6_vertex_06003EB0[] = {\n    {{{     2,     -6,     83}, 0, { -1072,    916}, {0xcb, 0x25, 0x6c, 0xff}}},\n    {{{   -49,    -11,     35}, 0, {  -556,    874}, {0x92, 0x2e, 0x2b, 0xff}}},\n    {{{     1,    -57,     76}, 0, { -1062,    410}, {0xd5, 0xe6, 0x74, 0xff}}},\n    {{{     9,     27,    -50}, 0, { -1138,   1254}, {0xce, 0x70, 0xe4, 0xff}}},\n    {{{     9,     27,     51}, 0, { -1138,   1254}, {0xce, 0x6d, 0x28, 0xff}}},\n    {{{   -49,    -11,    -36}, 0, {  -556,    874}, {0x98, 0x26, 0xc4, 0xff}}},\n    {{{   -49,    -73,    -25}, 0, {  -552,    248}, {0x8d, 0xdc, 0xda, 0xff}}},\n    {{{   -49,    -73,     26}, 0, {  -552,    248}, {0x93, 0xde, 0x36, 0xff}}},\n    {{{     0,   -140,     32}, 0, { -1046,   -414}, {0xc5, 0x94, 0x1d, 0xff}}},\n    {{{     0,    -98,     73}, 0, { -1054,     -2}, {0xd6, 0xc8, 0x69, 0xff}}},\n    {{{   103,    -17,    101}, 0, { -2084,    810}, {0x33, 0xd1, 0x69, 0xff}}},\n    {{{    98,    -35,     81}, 0, { -2034,    626}, {0x43, 0xd5, 0x62, 0xff}}},\n    {{{    97,   -100,     73}, 0, { -2022,    -18}, {0x22, 0xd7, 0x73, 0xff}}},\n    {{{   101,   -142,     35}, 0, { -2058,   -434}, {0x26, 0x99, 0x3d, 0xff}}},\n    {{{     2,     -6,    -82}, 0, { -1072,    916}, {0xcf, 0x36, 0x99, 0xff}}},\n    {{{     1,    -57,    -75}, 0, { -1062,    410}, {0xd6, 0xe6, 0x8c, 0xff}}},\n};\n\n// 0x06003FB0\nstatic const Vtx lakitu_seg6_vertex_06003FB0[] = {\n    {{{     1,    -57,    -75}, 0, { -1062,    410}, {0xd6, 0xe6, 0x8c, 0xff}}},\n    {{{    98,    -35,    -80}, 0, { -2034,    626}, {0x43, 0xd5, 0x9e, 0xff}}},\n    {{{    97,   -100,    -72}, 0, { -2022,    -18}, {0x1b, 0xcd, 0x90, 0xff}}},\n    {{{     0,    -98,    -72}, 0, { -1054,     -2}, {0xcc, 0xd2, 0x97, 0xff}}},\n    {{{     2,     -6,    -82}, 0, { -1072,    916}, {0xcf, 0x36, 0x99, 0xff}}},\n    {{{   103,    -17,   -100}, 0, { -2084,    810}, {0x33, 0xd1, 0x97, 0xff}}},\n    {{{   -49,    -73,    -25}, 0, {  -552,    248}, {0x8d, 0xdc, 0xda, 0xff}}},\n    {{{   148,     21,    -45}, 0, { -2528,   1194}, {0x67, 0x30, 0xc9, 0xff}}},\n    {{{   104,     34,    -89}, 0, { -2094,   1332}, {0x1d, 0x53, 0xa5, 0xff}}},\n    {{{   105,     51,    -39}, 0, { -2096,   1494}, {0x15, 0x78, 0xe0, 0xff}}},\n    {{{     0,   -140,     32}, 0, { -1046,   -414}, {0xc5, 0x94, 0x1d, 0xff}}},\n    {{{     0,   -140,    -31}, 0, { -1046,   -414}, {0xd1, 0x9a, 0xc6, 0xff}}},\n    {{{   161,     16,      0}, 0, {   480,    568}, {0x70, 0x3a, 0x00, 0xff}}},\n    {{{   154,    -30,     28}, 0, {   746,    166}, {0x6d, 0xc7, 0x1e, 0xff}}},\n    {{{   154,    -30,    -27}, 0, {   210,    164}, {0x6e, 0xcf, 0xdc, 0xff}}},\n};\n\n// 0x060040A0\nstatic const Vtx lakitu_seg6_vertex_060040A0[] = {\n    {{{   105,     51,     40}, 0, {   864,    924}, {0x15, 0x7c, 0x0f, 0xff}}},\n    {{{   148,     21,     46}, 0, {   920,    620}, {0x67, 0x30, 0x36, 0xff}}},\n    {{{   161,     16,      0}, 0, {   480,    568}, {0x70, 0x3a, 0x00, 0xff}}},\n    {{{   154,    -30,    -27}, 0, {   210,    164}, {0x6e, 0xcf, 0xdc, 0xff}}},\n    {{{   148,     21,    -45}, 0, {    40,    620}, {0x67, 0x30, 0xc9, 0xff}}},\n    {{{   154,    -30,     28}, 0, {   746,    166}, {0x6d, 0xc7, 0x1e, 0xff}}},\n    {{{   105,     51,    -39}, 0, {   100,    924}, {0x15, 0x78, 0xe0, 0xff}}},\n    {{{     9,     27,    -50}, 0, { -1138,   1254}, {0xce, 0x70, 0xe4, 0xff}}},\n    {{{   105,     51,     40}, 0, { -2096,   1494}, {0x15, 0x7c, 0x0f, 0xff}}},\n    {{{   105,     51,    -39}, 0, { -2096,   1494}, {0x15, 0x78, 0xe0, 0xff}}},\n    {{{     2,     -6,    -82}, 0, { -1072,    916}, {0xcf, 0x36, 0x99, 0xff}}},\n    {{{   104,     34,    -89}, 0, { -2094,   1332}, {0x1d, 0x53, 0xa5, 0xff}}},\n    {{{     9,     27,     51}, 0, { -1138,   1254}, {0xce, 0x6d, 0x28, 0xff}}},\n    {{{   104,     34,     90}, 0, { -2094,   1332}, {0x12, 0x57, 0x5a, 0xff}}},\n    {{{   161,     16,      0}, 0, { -2654,   1148}, {0x70, 0x3a, 0x00, 0xff}}},\n    {{{   148,     21,     46}, 0, { -2528,   1194}, {0x67, 0x30, 0x36, 0xff}}},\n};\n\n// 0x060041A0\nstatic const Vtx lakitu_seg6_vertex_060041A0[] = {\n    {{{     2,     -6,    -82}, 0, { -1072,    916}, {0xcf, 0x36, 0x99, 0xff}}},\n    {{{   104,     34,    -89}, 0, { -2094,   1332}, {0x1d, 0x53, 0xa5, 0xff}}},\n    {{{   103,    -17,   -100}, 0, { -2084,    810}, {0x33, 0xd1, 0x97, 0xff}}},\n    {{{    98,    -35,    -80}, 0, { -2034,    626}, {0x43, 0xd5, 0x9e, 0xff}}},\n    {{{   138,    -47,    -10}, 0, { -2428,    508}, {0x68, 0xbf, 0xe0, 0xff}}},\n    {{{   148,     21,    -45}, 0, { -2528,   1194}, {0x67, 0x30, 0xc9, 0xff}}},\n    {{{   154,    -30,    -27}, 0, { -2588,    680}, {0x6e, 0xcf, 0xdc, 0xff}}},\n    {{{    97,   -100,    -72}, 0, { -2022,    -18}, {0x1b, 0xcd, 0x90, 0xff}}},\n    {{{   135,    -98,    -38}, 0, { -2404,     -2}, {0x74, 0xe5, 0xd5, 0xff}}},\n    {{{   101,   -142,    -34}, 0, { -2058,   -434}, {0x34, 0x92, 0xde, 0xff}}},\n    {{{    98,    -35,     81}, 0, { -2034,    626}, {0x43, 0xd5, 0x62, 0xff}}},\n    {{{    97,   -100,     73}, 0, { -2022,    -18}, {0x22, 0xd7, 0x73, 0xff}}},\n    {{{   135,    -98,     39}, 0, { -2404,     -2}, {0x70, 0xd8, 0x2b, 0xff}}},\n    {{{   138,    -47,     11}, 0, { -2428,    508}, {0x6f, 0xce, 0x20, 0xff}}},\n    {{{   103,    -17,    101}, 0, { -2084,    810}, {0x33, 0xd1, 0x69, 0xff}}},\n};\n\n// 0x06004290\nstatic const Vtx lakitu_seg6_vertex_06004290[] = {\n    {{{   103,    -17,    101}, 0, { -2084,    810}, {0x33, 0xd1, 0x69, 0xff}}},\n    {{{   104,     34,     90}, 0, { -2094,   1332}, {0x12, 0x57, 0x5a, 0xff}}},\n    {{{     2,     -6,     83}, 0, { -1072,    916}, {0xcb, 0x25, 0x6c, 0xff}}},\n    {{{   138,    -47,     11}, 0, { -2428,    508}, {0x6f, 0xce, 0x20, 0xff}}},\n    {{{   154,    -30,     28}, 0, { -2588,    680}, {0x6d, 0xc7, 0x1e, 0xff}}},\n    {{{   148,     21,     46}, 0, { -2528,   1194}, {0x67, 0x30, 0x36, 0xff}}},\n    {{{   101,   -142,     35}, 0, { -2058,   -434}, {0x26, 0x99, 0x3d, 0xff}}},\n    {{{   135,    -98,     39}, 0, { -2404,     -2}, {0x70, 0xd8, 0x2b, 0xff}}},\n    {{{    97,   -100,     73}, 0, { -2022,    -18}, {0x22, 0xd7, 0x73, 0xff}}},\n    {{{   101,   -142,    -34}, 0, { -2058,   -434}, {0x34, 0x92, 0xde, 0xff}}},\n    {{{   135,    -98,    -38}, 0, { -2404,     -2}, {0x74, 0xe5, 0xd5, 0xff}}},\n    {{{    98,    -35,    -80}, 0, { -2034,    626}, {0x43, 0xd5, 0x9e, 0xff}}},\n    {{{   138,    -47,    -10}, 0, { -2428,    508}, {0x68, 0xbf, 0xe0, 0xff}}},\n    {{{    97,   -100,    -72}, 0, { -2022,    -18}, {0x1b, 0xcd, 0x90, 0xff}}},\n    {{{     9,     27,     51}, 0, { -1138,   1254}, {0xce, 0x6d, 0x28, 0xff}}},\n    {{{     0,   -140,    -31}, 0, { -1046,   -414}, {0xd1, 0x9a, 0xc6, 0xff}}},\n};\n\n// 0x06004390\nstatic const Vtx lakitu_seg6_vertex_06004390[] = {\n    {{{   101,   -142,    -34}, 0, { -2058,   -434}, {0x34, 0x92, 0xde, 0xff}}},\n    {{{     0,   -140,     32}, 0, { -1046,   -414}, {0xc5, 0x94, 0x1d, 0xff}}},\n    {{{     0,   -140,    -31}, 0, { -1046,   -414}, {0xd1, 0x9a, 0xc6, 0xff}}},\n    {{{   101,   -142,     35}, 0, { -2058,   -434}, {0x26, 0x99, 0x3d, 0xff}}},\n    {{{   138,    -47,    -10}, 0, {   370,    -88}, {0x68, 0xbf, 0xe0, 0xff}}},\n    {{{   154,    -30,     28}, 0, {   724,    182}, {0x6d, 0xc7, 0x1e, 0xff}}},\n    {{{   138,    -47,     11}, 0, {   570,    -84}, {0x6f, 0xce, 0x20, 0xff}}},\n    {{{   154,    -30,    -27}, 0, {   196,    176}, {0x6e, 0xcf, 0xdc, 0xff}}},\n};\n\n// 0x06004410 - 0x06004680\nconst Gfx lakitu_seg6_dl_06004410[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lakitu_seg6_texture_06003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&lakitu_seg6_lights_06003E98.l, 1),\n    gsSPLight(&lakitu_seg6_lights_06003E98.a, 2),\n    gsSPVertex(lakitu_seg6_vertex_06003EB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  4, 0x0),\n    gsSP2Triangles( 3,  5,  1, 0x0,  1,  6,  7, 0x0),\n    gsSP2Triangles( 1,  5,  6, 0x0,  1,  0,  4, 0x0),\n    gsSP2Triangles( 1,  7,  2, 0x0,  8,  7,  6, 0x0),\n    gsSP2Triangles( 9,  7,  8, 0x0,  2,  7,  9, 0x0),\n    gsSP2Triangles(10,  0,  2, 0x0,  2, 11, 10, 0x0),\n    gsSP2Triangles( 2, 12, 11, 0x0,  2,  9, 12, 0x0),\n    gsSP2Triangles( 9, 13, 12, 0x0,  9,  8, 13, 0x0),\n    gsSP2Triangles(14,  5,  3, 0x0,  5, 15,  6, 0x0),\n    gsSP1Triangle( 5, 14, 15, 0x0),\n    gsSPVertex(lakitu_seg6_vertex_06003FB0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  6,  0,  3, 0x0),\n    gsSP2Triangles( 0,  5,  1, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  6, 11, 0x0, 11,  6,  3, 0x0),\n    gsSP2Triangles( 2, 11,  3, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(lakitu_seg6_vertex_060040A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 2,  1,  5, 0x0,  4,  6,  2, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0,  7, 12,  8, 0x0),\n    gsSP2Triangles(13,  8, 12, 0x0,  9,  8, 14, 0x0),\n    gsSP1Triangle(15,  8, 13, 0x0),\n    gsSPVertex(lakitu_seg6_vertex_060041A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 5,  6,  2, 0x0,  2,  6,  4, 0x0),\n    gsSP2Triangles( 5,  2,  1, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle(14, 10, 13, 0x0),\n    gsSPVertex(lakitu_seg6_vertex_06004290, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 1,  0,  5, 0x0,  0,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10,  7, 0x0),\n    gsSP2Triangles( 3,  7, 10, 0x0,  9,  7,  6, 0x0),\n    gsSP2Triangles(11, 12, 10, 0x0, 10, 13, 11, 0x0),\n    gsSP2Triangles( 3, 10, 12, 0x0,  1, 14,  2, 0x0),\n    gsSP1Triangle(13,  9, 15, 0x0),\n    gsSPVertex(lakitu_seg6_vertex_06004390, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06004680 - 0x060046E0\nconst Gfx lakitu_seg6_dl_06004680[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lakitu_seg6_dl_06004410),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x060046E0\nstatic const Lights1 lakitu_seg6_lights_060046E0 = gdSPDefLights1(\n    0x79, 0x55, 0x00,\n    0xf2, 0xab, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x060046F8\nstatic const Vtx lakitu_seg6_vertex_060046F8[] = {\n    {{{    99,     30,     33}, 0, {     0,      0}, {0x06, 0x5e, 0x54, 0xff}}},\n    {{{   102,      0,     33}, 0, {     0,      0}, {0x21, 0xd1, 0x70, 0xff}}},\n    {{{   140,     20,      2}, 0, {     0,      0}, {0x73, 0xfb, 0x35, 0xff}}},\n    {{{    99,     30,    -28}, 0, {     0,      0}, {0xfa, 0x4f, 0x9e, 0xff}}},\n    {{{   102,      0,    -28}, 0, {     0,      0}, {0x1b, 0xb7, 0x9d, 0xff}}},\n    {{{    30,     -5,    -20}, 0, {     0,      0}, {0xdf, 0xce, 0x91, 0xff}}},\n    {{{   104,    -15,      2}, 0, {     0,      0}, {0x31, 0x8c, 0x07, 0xff}}},\n    {{{    33,    -17,      0}, 0, {     0,      0}, {0xec, 0x84, 0xef, 0xff}}},\n    {{{   137,     20,    -12}, 0, {     0,      0}, {0x64, 0xfb, 0xb3, 0xff}}},\n    {{{    30,     -5,     25}, 0, {     0,      0}, {0xe3, 0xaf, 0x5d, 0xff}}},\n    {{{    -5,      0,      2}, 0, {     0,      0}, {0x83, 0xee, 0xfe, 0xff}}},\n    {{{    28,     15,    -20}, 0, {     0,      0}, {0xc9, 0x34, 0x9b, 0xff}}},\n    {{{    28,     15,     25}, 0, {     0,      0}, {0xd1, 0x29, 0x6e, 0xff}}},\n    {{{    25,     28,      2}, 0, {     0,      0}, {0xce, 0x74, 0x00, 0xff}}},\n    {{{   119,     45,      0}, 0, {     0,      0}, {0x35, 0x72, 0xf9, 0xff}}},\n};\n\n// 0x060047E8 - 0x060048D8\nconst Gfx lakitu_seg6_dl_060047E8[] = {\n    gsSPLight(&lakitu_seg6_lights_060046E0.l, 1),\n    gsSPLight(&lakitu_seg6_lights_060046E0.a, 2),\n    gsSPVertex(lakitu_seg6_vertex_060046F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 6,  4,  8, 0x0,  3,  8,  4, 0x0),\n    gsSP2Triangles( 9,  7,  6, 0x0, 10,  7,  9, 0x0),\n    gsSP2Triangles( 5,  7, 10, 0x0,  3,  5, 11, 0x0),\n    gsSP2Triangles( 5, 10, 11, 0x0,  1,  6,  2, 0x0),\n    gsSP2Triangles( 2,  6,  8, 0x0,  9,  6,  1, 0x0),\n    gsSP2Triangles( 1, 12,  9, 0x0, 12, 10,  9, 0x0),\n    gsSP2Triangles( 1,  0, 12, 0x0, 11, 13,  3, 0x0),\n    gsSP2Triangles(14,  0,  2, 0x0, 14,  2,  8, 0x0),\n    gsSP2Triangles( 3, 14,  8, 0x0, 13,  0,  3, 0x0),\n    gsSP2Triangles( 3,  0, 14, 0x0,  0, 13, 12, 0x0),\n    gsSP2Triangles(10, 13, 11, 0x0, 12, 13, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x060048D8\nstatic const Lights1 lakitu_seg6_lights_060048D8 = gdSPDefLights1(\n    0x79, 0x55, 0x00,\n    0xf2, 0xab, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x060048F0\nstatic const Vtx lakitu_seg6_vertex_060048F0[] = {\n    {{{    30,     -5,    -22}, 0, {     0,      0}, {0xe3, 0xb1, 0xa2, 0xff}}},\n    {{{    -5,      0,      0}, 0, {     0,      0}, {0x83, 0xee, 0x00, 0xff}}},\n    {{{    28,     15,    -22}, 0, {     0,      0}, {0xd1, 0x29, 0x92, 0xff}}},\n    {{{    30,     -5,     22}, 0, {     0,      0}, {0xdf, 0xcb, 0x6e, 0xff}}},\n    {{{   102,      0,     30}, 0, {     0,      0}, {0x1b, 0xb6, 0x63, 0xff}}},\n    {{{    99,     30,     30}, 0, {     0,      0}, {0xfa, 0x4f, 0x62, 0xff}}},\n    {{{    28,     15,     22}, 0, {     0,      0}, {0xc9, 0x34, 0x65, 0xff}}},\n    {{{    33,    -17,      0}, 0, {     0,      0}, {0xec, 0x84, 0x0d, 0xff}}},\n    {{{   104,    -15,      0}, 0, {     0,      0}, {0x31, 0x8c, 0xf8, 0xff}}},\n    {{{   137,     20,     15}, 0, {     0,      0}, {0x64, 0xfb, 0x4d, 0xff}}},\n    {{{   140,     20,      0}, 0, {     0,      0}, {0x73, 0xfb, 0xcb, 0xff}}},\n    {{{   102,      0,    -30}, 0, {     0,      0}, {0x21, 0xd1, 0x90, 0xff}}},\n    {{{    99,     30,    -30}, 0, {     0,      0}, {0x06, 0x5e, 0xac, 0xff}}},\n    {{{   119,     45,      2}, 0, {     0,      0}, {0x35, 0x72, 0x07, 0xff}}},\n    {{{    25,     28,      0}, 0, {     0,      0}, {0xce, 0x74, 0x00, 0xff}}},\n};\n\n// 0x060049E0 - 0x06004AD0\nconst Gfx lakitu_seg6_dl_060049E0[] = {\n    gsSPLight(&lakitu_seg6_lights_060048D8.l, 1),\n    gsSPLight(&lakitu_seg6_lights_060048D8.a, 2),\n    gsSPVertex(lakitu_seg6_vertex_060048F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  3,  7,  4, 0x0),\n    gsSP2Triangles( 6,  1,  3, 0x0,  1,  7,  3, 0x0),\n    gsSP2Triangles( 8,  7,  0, 0x0,  7,  8,  4, 0x0),\n    gsSP2Triangles( 0,  7,  1, 0x0,  9,  4,  8, 0x0),\n    gsSP2Triangles( 4,  9,  5, 0x0, 10,  8, 11, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0, 11,  8,  0, 0x0),\n    gsSP2Triangles( 0,  2, 11, 0x0,  2, 12, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 12,  5, 0x0),\n    gsSP2Triangles( 9, 10, 13, 0x0,  9, 13,  5, 0x0),\n    gsSP2Triangles(10, 12, 13, 0x0,  1, 14,  2, 0x0),\n    gsSP2Triangles( 2, 14, 12, 0x0,  6, 14,  1, 0x0),\n    gsSP2Triangles( 5, 14,  6, 0x0,  5, 12, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06004AD0\nstatic const Lights1 lakitu_seg6_lights_06004AD0 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x06004AE8\nstatic const Vtx lakitu_seg6_vertex_06004AE8[] = {\n    {{{   150,    -30,      0}, 0, {   992,    994}, {0x7e, 0xf5, 0x09, 0xff}}},\n    {{{   136,   -116,     82}, 0, {  2012,      0}, {0x7e, 0xf5, 0x09, 0xff}}},\n    {{{   142,   -116,      0}, 0, {   992,    -26}, {0x7e, 0xf5, 0x09, 0xff}}},\n    {{{   142,   -116,      0}, 0, {   992,    -26}, {0x7e, 0xf5, 0xf9, 0xff}}},\n    {{{   145,    -30,    -81}, 0, {     0,    990}, {0x7e, 0xf5, 0xf9, 0xff}}},\n    {{{   150,    -30,      0}, 0, {   992,    994}, {0x7e, 0xf5, 0xf9, 0xff}}},\n    {{{   142,   -116,      0}, 0, {   992,    -26}, {0x7d, 0xf3, 0xf7, 0xff}}},\n    {{{   136,   -116,    -81}, 0, {     0,      0}, {0x7d, 0xf3, 0xf7, 0xff}}},\n    {{{   145,    -30,    -81}, 0, {     0,    990}, {0x7d, 0xf3, 0xf7, 0xff}}},\n    {{{   150,    -30,      0}, 0, {   992,    994}, {0x7e, 0xf3, 0x07, 0xff}}},\n    {{{   145,    -30,     82}, 0, {  2012,    990}, {0x7e, 0xf3, 0x07, 0xff}}},\n    {{{   136,   -116,     82}, 0, {  2012,      0}, {0x7e, 0xf3, 0x07, 0xff}}},\n};\n\n// 0x06004BA8 - 0x06004BE8\nconst Gfx lakitu_seg6_dl_06004BA8[] = {\n    gsSPLight(&lakitu_seg6_lights_06004AD0.l, 1),\n    gsSPLight(&lakitu_seg6_lights_06004AD0.a, 2),\n    gsSPVertex(lakitu_seg6_vertex_06004AE8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06004BE8 - 0x06004C30\nconst Gfx lakitu_seg6_dl_06004BE8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x06004C30 - 0x06004C60\nconst Gfx lakitu_seg6_dl_06004C30[] = {\n    gsSPDisplayList(lakitu_seg6_dl_06004BA8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x06004C60 - 0x06004C88\nconst Gfx lakitu_seg6_dl_06004C60[] = {\n    gsSPDisplayList(lakitu_seg6_dl_06004BE8),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lakitu_seg6_texture_06000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPBranchList(lakitu_seg6_dl_06004C30),\n};\n\n// 0x06004C88 - 0x06004CB0\nconst Gfx lakitu_seg6_dl_06004C88[] = {\n    gsSPDisplayList(lakitu_seg6_dl_06004BE8),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lakitu_seg6_texture_06001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPBranchList(lakitu_seg6_dl_06004C30),\n};\n\n// 0x06004CB0\nstatic const Lights1 lakitu_seg6_lights_06004CB0 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x06004CC8\nstatic const Lights1 lakitu_seg6_lights_06004CC8 = gdSPDefLights1(\n    0x0c, 0x0c, 0x0c,\n    0x19, 0x19, 0x19, 0x28, 0x28, 0x28\n);\n\n// 0x06004CE0\nstatic const Lights1 lakitu_seg6_lights_06004CE0 = gdSPDefLights1(\n    0x19, 0x22, 0x20,\n    0x32, 0x44, 0x40, 0x28, 0x28, 0x28\n);\n\n// 0x06004CF8\nstatic const Lights1 lakitu_seg6_lights_06004CF8 = gdSPDefLights1(\n    0x18, 0x18, 0x18,\n    0x30, 0x30, 0x30, 0x28, 0x28, 0x28\n);\n\n// 0x06004D10\nstatic const Vtx lakitu_seg6_vertex_06004D10[] = {\n    {{{    79,   -113,    -34}, 0, {     0,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     7,   -113,     37}, 0, {   480,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     7,   -113,    -34}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    79,   -113,     37}, 0, {   480,    480}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x06004D50\nstatic const Vtx lakitu_seg6_vertex_06004D50[] = {\n    {{{    20,    -58,    -21}, 0, {     0,      0}, {0x00, 0x39, 0x8f, 0xff}}},\n    {{{    66,    -58,    -21}, 0, {     0,      0}, {0x00, 0x39, 0x8f, 0xff}}},\n    {{{    43,   -113,    -49}, 0, {     0,      0}, {0x00, 0x39, 0x8f, 0xff}}},\n    {{{    20,    -58,    -21}, 0, {     0,      0}, {0xd2, 0x25, 0x90, 0xff}}},\n    {{{    43,   -113,    -49}, 0, {     0,      0}, {0xd2, 0x25, 0x90, 0xff}}},\n    {{{     7,   -113,    -34}, 0, {     0,      0}, {0xd2, 0x25, 0x90, 0xff}}},\n    {{{    20,    -58,    -21}, 0, {     0,      0}, {0x90, 0x25, 0xd3, 0xff}}},\n    {{{     7,   -113,    -34}, 0, {     0,      0}, {0x90, 0x25, 0xd3, 0xff}}},\n    {{{    -7,   -113,      1}, 0, {     0,      0}, {0x90, 0x25, 0xd3, 0xff}}},\n    {{{    20,    -58,    -21}, 0, {     0,      0}, {0x8e, 0x37, 0x00, 0xff}}},\n    {{{    -7,   -113,      1}, 0, {     0,      0}, {0x8e, 0x37, 0x00, 0xff}}},\n    {{{    20,    -58,     24}, 0, {     0,      0}, {0x8e, 0x37, 0x00, 0xff}}},\n    {{{    79,   -113,    -34}, 0, {     0,      0}, {0x2e, 0x25, 0x90, 0xff}}},\n    {{{    43,   -113,    -49}, 0, {     0,      0}, {0x2e, 0x25, 0x90, 0xff}}},\n    {{{    66,    -58,    -21}, 0, {     0,      0}, {0x2e, 0x25, 0x90, 0xff}}},\n};\n\n// 0x06004E40\nstatic const Vtx lakitu_seg6_vertex_06004E40[] = {\n    {{{    66,    -58,    -21}, 0, {     0,      0}, {0x71, 0x39, 0x00, 0xff}}},\n    {{{    66,    -58,     24}, 0, {     0,      0}, {0x71, 0x39, 0x00, 0xff}}},\n    {{{    94,   -113,      1}, 0, {     0,      0}, {0x71, 0x39, 0x00, 0xff}}},\n    {{{    66,    -58,    -21}, 0, {     0,      0}, {0x6f, 0x25, 0xd1, 0xff}}},\n    {{{    94,   -113,      1}, 0, {     0,      0}, {0x6f, 0x25, 0xd1, 0xff}}},\n    {{{    79,   -113,    -34}, 0, {     0,      0}, {0x6f, 0x25, 0xd1, 0xff}}},\n    {{{    94,   -113,      1}, 0, {     0,      0}, {0x70, 0x25, 0x2e, 0xff}}},\n    {{{    66,    -58,     24}, 0, {     0,      0}, {0x70, 0x25, 0x2e, 0xff}}},\n    {{{    79,   -113,     37}, 0, {     0,      0}, {0x70, 0x25, 0x2e, 0xff}}},\n    {{{    79,   -113,     37}, 0, {     0,      0}, {0x2e, 0x25, 0x70, 0xff}}},\n    {{{    66,    -58,     24}, 0, {     0,      0}, {0x2e, 0x25, 0x70, 0xff}}},\n    {{{    43,   -113,     52}, 0, {     0,      0}, {0x2e, 0x25, 0x70, 0xff}}},\n    {{{    66,    -58,     24}, 0, {     0,      0}, {0x00, 0x39, 0x71, 0xff}}},\n    {{{    20,    -58,     24}, 0, {     0,      0}, {0x00, 0x39, 0x71, 0xff}}},\n    {{{    43,   -113,     52}, 0, {     0,      0}, {0x00, 0x39, 0x71, 0xff}}},\n};\n\n// 0x06004F30\nstatic const Vtx lakitu_seg6_vertex_06004F30[] = {\n    {{{    43,   -113,     52}, 0, {     0,      0}, {0xd2, 0x25, 0x70, 0xff}}},\n    {{{    20,    -58,     24}, 0, {     0,      0}, {0xd2, 0x25, 0x70, 0xff}}},\n    {{{     7,   -113,     37}, 0, {     0,      0}, {0xd2, 0x25, 0x70, 0xff}}},\n    {{{    -7,   -113,      1}, 0, {     0,      0}, {0x8f, 0x25, 0x2c, 0xff}}},\n    {{{     7,   -113,     37}, 0, {     0,      0}, {0x8f, 0x25, 0x2c, 0xff}}},\n    {{{    20,    -58,     24}, 0, {     0,      0}, {0x8f, 0x25, 0x2c, 0xff}}},\n};\n\n// 0x06004F90\nstatic const Vtx lakitu_seg6_vertex_06004F90[] = {\n    {{{    -4,     46,    -40}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -4,    -58,     43}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -4,     46,     43}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   100,     46,     43}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   100,     46,    -40}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    -4,     46,    -40}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    -4,     46,     43}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    -4,    -58,    -40}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   100,     46,    -40}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    -4,    -58,    -40}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    -4,     46,    -40}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   100,    -58,     43}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -4,     46,     43}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -4,    -58,     43}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x06005070\nstatic const Vtx lakitu_seg6_vertex_06005070[] = {\n    {{{   100,    -58,    -40}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   100,    -58,     43}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    -4,    -58,     43}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    -4,    -58,    -40}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   100,    -58,     43}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   100,     46,     43}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -4,     46,     43}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   100,     46,    -40}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   100,    -58,    -40}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    -4,    -58,    -40}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   100,     46,     43}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   100,    -58,    -40}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   100,     46,    -40}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   100,    -58,     43}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x06005150\nstatic const Vtx lakitu_seg6_vertex_06005150[] = {\n    {{{     7,   -113,    -34}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     7,   -113,     37}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    -7,   -113,      1}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    43,   -113,    -49}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    79,   -113,    -34}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    94,   -113,      1}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    79,   -113,     37}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    43,   -113,     52}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x060051D0 - 0x06005218\nconst Gfx lakitu_seg6_dl_060051D0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lakitu_seg6_texture_06003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 16 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&lakitu_seg6_lights_06004CB0.l, 1),\n    gsSPLight(&lakitu_seg6_lights_06004CB0.a, 2),\n    gsSPVertex(lakitu_seg6_vertex_06004D10, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06005218 - 0x06005360\nconst Gfx lakitu_seg6_dl_06005218[] = {\n    gsSPLight(&lakitu_seg6_lights_06004CC8.l, 1),\n    gsSPLight(&lakitu_seg6_lights_06004CC8.a, 2),\n    gsSPVertex(lakitu_seg6_vertex_06004D50, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(lakitu_seg6_vertex_06004E40, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(lakitu_seg6_vertex_06004F30, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPLight(&lakitu_seg6_lights_06004CE0.l, 1),\n    gsSPLight(&lakitu_seg6_lights_06004CE0.a, 2),\n    gsSPVertex(lakitu_seg6_vertex_06004F90, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  0,  7,  1, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(lakitu_seg6_vertex_06005070, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPLight(&lakitu_seg6_lights_06004CF8.l, 1),\n    gsSPLight(&lakitu_seg6_lights_06004CF8.a, 2),\n    gsSPVertex(lakitu_seg6_vertex_06005150, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  1,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06005360 - 0x060053D8\nconst Gfx lakitu_seg6_dl_06005360[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 4, G_TX_NOLOD, G_TX_CLAMP, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (16 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lakitu_seg6_dl_060051D0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(lakitu_seg6_dl_06005218),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// Unreferenced light group\nUNUSED static const Lights1 lakitu_cameraman_lights_unused1 = gdSPDefLights1(\n    0x33, 0x1f, 0x0c,\n    0xcc, 0x7f, 0x33, 0x28, 0x28, 0x28\n);\n\n// 0x060053F0\nstatic const Lights1 lakitu_seg6_lights_060053F0 = gdSPDefLights1(\n    0x29, 0x13, 0x06,\n    0xa5, 0x4f, 0x1b, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 lakitu_cameraman_lights_unused2 = gdSPDefLights1(\n    0x06, 0x06, 0x06,\n    0x19, 0x19, 0x19, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 lakitu_cameraman_lights_unused3 = gdSPDefLights1(\n    0x2c, 0x2c, 0x2c,\n    0xb2, 0xb2, 0xb2, 0x28, 0x28, 0x28\n);\n\n// 0x06005438\nstatic const Lights1 lakitu_seg6_lights_06005438 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 lakitu_cameraman_lights_unused4 = gdSPDefLights1(\n    0x0d, 0x2c, 0x0b,\n    0x34, 0xb2, 0x2c, 0x28, 0x28, 0x28\n);\n\n// 0x06005468\nstatic const Vtx lakitu_seg6_vertex_06005468[] = {\n    {{{   103,     40,     28}, 0, {     0,      0}, {0xb1, 0x5e, 0x1c, 0x00}}},\n    {{{   115,     46,     39}, 0, {     0,      0}, {0xb1, 0x5e, 0x1c, 0x00}}},\n    {{{   111,     46,     30}, 0, {     0,      0}, {0xb1, 0x5e, 0x1c, 0x00}}},\n    {{{   115,     46,     39}, 0, {     0,      0}, {0xce, 0xb9, 0x5b, 0xff}}},\n    {{{   103,     40,     28}, 0, {     0,      0}, {0xce, 0xb9, 0x5b, 0xff}}},\n    {{{   345,   -234,    -54}, 0, {     0,      0}, {0xce, 0xb9, 0x5b, 0xff}}},\n    {{{   115,     51,     23}, 0, {     0,      0}, {0xb1, 0x5e, 0x1c, 0xff}}},\n    {{{   103,     40,     28}, 0, {     0,      0}, {0xd2, 0xfb, 0x8b, 0xff}}},\n    {{{   115,     51,     23}, 0, {     0,      0}, {0xd2, 0xfb, 0x8b, 0xff}}},\n    {{{   345,   -234,    -54}, 0, {     0,      0}, {0xd2, 0xfb, 0x8b, 0xff}}},\n    {{{   115,     51,     23}, 0, {     0,      0}, {0x64, 0x49, 0x18, 0xff}}},\n    {{{   115,     46,     39}, 0, {     0,      0}, {0x64, 0x49, 0x18, 0xff}}},\n    {{{   345,   -234,    -54}, 0, {     0,      0}, {0x64, 0x49, 0x18, 0xff}}},\n};\n\n// 0x06005538\nstatic const Vtx lakitu_seg6_vertex_06005538[] = {\n    {{{   189,      1,      1}, 0, {     0,      0}, {0xff, 0x7f, 0x00, 0x00}}},\n    {{{   189,      1,     -2}, 0, {     0,      0}, {0xff, 0x7f, 0x00, 0x00}}},\n    {{{    -3,      0,      0}, 0, {     0,      0}, {0xff, 0x7f, 0x00, 0x00}}},\n};\n\n// 0x06005568\nstatic const Vtx lakitu_seg6_vertex_06005568[] = {\n    {{{    -3,      0,      0}, 0, {     0,      0}, {0x01, 0x81, 0x00, 0x00}}},\n    {{{   189,      2,     -2}, 0, {     0,      0}, {0x01, 0x81, 0x00, 0x00}}},\n    {{{   189,      2,      1}, 0, {     0,      0}, {0x01, 0x81, 0x00, 0x00}}},\n};\n\n// 0x06005598 - 0x060055E8\nconst Gfx lakitu_seg6_dl_06005598[] = {\n    gsSPLight(&lakitu_seg6_lights_060053F0.l, 1),\n    gsSPLight(&lakitu_seg6_lights_060053F0.a, 2),\n    gsSPVertex(lakitu_seg6_vertex_06005468, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  0,  2, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 1,  6,  2, 0x0, 10, 11, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x060055E8 - 0x06005610\nconst Gfx lakitu_seg6_dl_060055E8[] = {\n    gsSPLight(&lakitu_seg6_lights_06005438.l, 1),\n    gsSPLight(&lakitu_seg6_lights_06005438.a, 2),\n    gsSPVertex(lakitu_seg6_vertex_06005538, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06005610 - 0x06005638\nconst Gfx lakitu_seg6_dl_06005610[] = {\n    gsSPLight(&lakitu_seg6_lights_06005438.l, 1),\n    gsSPLight(&lakitu_seg6_lights_06005438.a, 2),\n    gsSPVertex(lakitu_seg6_vertex_06005568, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/lakitu_enemy/anims/anim_05013EDC.inc.c",
    "content": "// 0x050138C0\nstatic const s16 lakitu_enemy_seg5_animvalue_050138C0[] = {\n    0x0000, 0x003F, 0xFFC2, 0x3FFF, 0xFC86, 0xFC85, 0xFC83, 0xFC7E,\n    0xFC78, 0xFC70, 0xFC68, 0xFC5E, 0xFC53, 0xFC47, 0xFC3A, 0xFC2D,\n    0xFC1F, 0xFC11, 0xFC03, 0xFBF5, 0xFBE6, 0xFBD8, 0xFBCB, 0xFBBD,\n    0xFBB1, 0xFBA5, 0xFB9A, 0xFB90, 0xFB87, 0xFB80, 0xFB7A, 0xFB75,\n    0xFB72, 0xFB71, 0xFB72, 0xFB75, 0xFB79, 0xFB7F, 0xFB86, 0xFB8E,\n    0xFB98, 0xFBA2, 0xFBAD, 0xFBB9, 0xFBC6, 0xFBD3, 0xFBE0, 0xFBEE,\n    0xFBFC, 0xFC0A, 0xFC17, 0xFC25, 0xFC32, 0xFC3F, 0xFC4B, 0xFC56,\n    0xFC60, 0xFC6A, 0xFC72, 0xFC79, 0xFC7F, 0xFC83, 0xFC85, 0xFC86,\n    0x1413, 0x1413, 0x1412, 0x1411, 0x1410, 0x140F, 0x140D, 0x140B,\n    0x1409, 0x1407, 0x1405, 0x1402, 0x1400, 0x13FD, 0x13FA, 0x13F8,\n    0x13F5, 0x13F2, 0x13F0, 0x13ED, 0x13EB, 0x13E9, 0x13E7, 0x13E5,\n    0x13E3, 0x13E2, 0x13E1, 0x13E0, 0x13E0, 0x13DF, 0x13E0, 0x13E0,\n    0x13E1, 0x13E2, 0x13E3, 0x13E5, 0x13E6, 0x13E8, 0x13EA, 0x13ED,\n    0x13EF, 0x13F1, 0x13F4, 0x13F6, 0x13F9, 0x13FC, 0x13FE, 0x1401,\n    0x1403, 0x1405, 0x1408, 0x140A, 0x140C, 0x140D, 0x140F, 0x1410,\n    0x1411, 0x1412, 0x1413, 0x1413, 0x89B5, 0x89B3, 0x89AD, 0x89A3,\n    0x8996, 0x8986, 0x8974, 0x895F, 0x8947, 0x892E, 0x8913, 0x88F7,\n    0x88DA, 0x88BC, 0x889E, 0x887F, 0x8861, 0x8843, 0x8826, 0x880A,\n    0x87EF, 0x87D6, 0x87BF, 0x87AA, 0x8797, 0x8787, 0x877A, 0x8771,\n    0x876B, 0x8769, 0x876A, 0x8770, 0x8779, 0x8785, 0x8794, 0x87A6,\n    0x87BA, 0x87D0, 0x87E8, 0x8801, 0x881C, 0x8838, 0x8854, 0x8871,\n    0x888F, 0x88AC, 0x88C9, 0x88E6, 0x8902, 0x891C, 0x8936, 0x894E,\n    0x8964, 0x8978, 0x8989, 0x8998, 0x89A4, 0x89AD, 0x89B3, 0x89B5,\n    0x00EF, 0x00F0, 0x00F2, 0x00F6, 0x00FA, 0x0100, 0x0107, 0x010F,\n    0x0117, 0x0120, 0x012A, 0x0134, 0x013F, 0x0149, 0x0154, 0x015F,\n    0x016A, 0x0175, 0x0180, 0x018A, 0x0194, 0x019D, 0x01A5, 0x01AD,\n    0x01B4, 0x01BA, 0x01BE, 0x01C2, 0x01C4, 0x01C5, 0x01C4, 0x01C2,\n    0x01BF, 0x01BA, 0x01B5, 0x01AE, 0x01A7, 0x019F, 0x0197, 0x018D,\n    0x0184, 0x017A, 0x016F, 0x0165, 0x015A, 0x014F, 0x0145, 0x013A,\n    0x0130, 0x0127, 0x011D, 0x0115, 0x010D, 0x0105, 0x00FF, 0x00FA,\n    0x00F5, 0x00F2, 0x00F0, 0x00EF, 0xF025, 0xF025, 0xF025, 0xF025,\n    0xF025, 0xF026, 0xF026, 0xF027, 0xF028, 0xF028, 0xF029, 0xF02A,\n    0xF02B, 0xF02C, 0xF02D, 0xF02E, 0xF02E, 0xF02F, 0xF030, 0xF031,\n    0xF032, 0xF033, 0xF033, 0xF034, 0xF034, 0xF035, 0xF035, 0xF036,\n    0xF036, 0xF036, 0xF036, 0xF036, 0xF035, 0xF035, 0xF035, 0xF034,\n    0xF033, 0xF033, 0xF032, 0xF031, 0xF031, 0xF030, 0xF02F, 0xF02E,\n    0xF02D, 0xF02C, 0xF02B, 0xF02B, 0xF02A, 0xF029, 0xF028, 0xF028,\n    0xF027, 0xF026, 0xF026, 0xF025, 0xF025, 0xF025, 0xF025, 0xF025,\n    0x8A70, 0x8A6E, 0x8A68, 0x8A5F, 0x8A53, 0x8A43, 0x8A32, 0x8A1D,\n    0x8A07, 0x89EF, 0x89D5, 0x89BA, 0x899E, 0x8982, 0x8965, 0x8948,\n    0x892B, 0x890E, 0x88F2, 0x88D7, 0x88BE, 0x88A6, 0x888F, 0x887B,\n    0x8869, 0x885A, 0x884E, 0x8844, 0x883F, 0x883D, 0x883F, 0x8844,\n    0x884C, 0x8858, 0x8866, 0x8877, 0x888A, 0x889F, 0x88B6, 0x88CF,\n    0x88E8, 0x8903, 0x891E, 0x893A, 0x8956, 0x8972, 0x898E, 0x89AA,\n    0x89C4, 0x89DE, 0x89F6, 0x8A0D, 0x8A22, 0x8A35, 0x8A46, 0x8A55,\n    0x8A60, 0x8A69, 0x8A6E, 0x8A70, 0x00EF, 0x00F0, 0x00F2, 0x00F6,\n    0x00FA, 0x0100, 0x0107, 0x010F, 0x0117, 0x0120, 0x012A, 0x0134,\n    0x013F, 0x0149, 0x0154, 0x015F, 0x016A, 0x0175, 0x0180, 0x018A,\n    0x0194, 0x019D, 0x01A5, 0x01AD, 0x01B4, 0x01BA, 0x01BE, 0x01C2,\n    0x01C4, 0x01C5, 0x01C4, 0x01C2, 0x01BF, 0x01BA, 0x01B5, 0x01AE,\n    0x01A7, 0x019F, 0x0197, 0x018D, 0x0184, 0x017A, 0x016F, 0x0165,\n    0x015A, 0x014F, 0x0145, 0x013A, 0x0130, 0x0127, 0x011D, 0x0115,\n    0x010D, 0x0105, 0x00FF, 0x00FA, 0x00F5, 0x00F2, 0x00F0, 0x00EF,\n    0xF025, 0xF025, 0xF025, 0xF025, 0xF025, 0xF026, 0xF026, 0xF027,\n    0xF028, 0xF028, 0xF029, 0xF02A, 0xF02B, 0xF02C, 0xF02D, 0xF02E,\n    0xF02E, 0xF02F, 0xF030, 0xF031, 0xF032, 0xF033, 0xF033, 0xF034,\n    0xF034, 0xF035, 0xF035, 0xF036, 0xF036, 0xF036, 0xF036, 0xF036,\n    0xF035, 0xF035, 0xF035, 0xF034, 0xF033, 0xF033, 0xF032, 0xF031,\n    0xF031, 0xF030, 0xF02F, 0xF02E, 0xF02D, 0xF02C, 0xF02B, 0xF02B,\n    0xF02A, 0xF029, 0xF028, 0xF028, 0xF027, 0xF026, 0xF026, 0xF025,\n    0xF025, 0xF025, 0xF025, 0xF025, 0x8A70, 0x8A6E, 0x8A68, 0x8A5F,\n    0x8A53, 0x8A43, 0x8A32, 0x8A1D, 0x8A07, 0x89EF, 0x89D5, 0x89BA,\n    0x899E, 0x8982, 0x8965, 0x8948, 0x892B, 0x890E, 0x88F2, 0x88D7,\n    0x88BE, 0x88A6, 0x888F, 0x887B, 0x8869, 0x885A, 0x884E, 0x8844,\n    0x883F, 0x883D, 0x883F, 0x8844, 0x884C, 0x8858, 0x8866, 0x8877,\n    0x888A, 0x889F, 0x88B6, 0x88CF, 0x88E8, 0x8903, 0x891E, 0x893A,\n    0x8956, 0x8972, 0x898E, 0x89AA, 0x89C4, 0x89DE, 0x89F6, 0x8A0D,\n    0x8A22, 0x8A35, 0x8A46, 0x8A55, 0x8A60, 0x8A69, 0x8A6E, 0x8A70,\n    0xA2CB, 0xA2CB, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0002, 0x0002, 0x0002, 0x0001, 0x0001, 0x0001,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0021,\n    0x007F, 0x010E, 0x01C6, 0x029C, 0x0387, 0x047B, 0x056F, 0x0659,\n    0x072F, 0x07E7, 0x0877, 0x08D5, 0x08F6, 0x08E4, 0x08B0, 0x085E,\n    0x07F0, 0x076B, 0x06D1, 0x0627, 0x056E, 0x04AC, 0x03E2, 0x0315,\n    0x0247, 0x017D, 0x00B9, 0x0000, 0xFF3B, 0xFE56, 0xFD5B, 0xFC4F,\n    0xFB39, 0xFA23, 0xF912, 0xF80D, 0xF71D, 0xF648, 0xF596, 0xF50E,\n    0xF4B7, 0xF498, 0xF4B9, 0xF516, 0xF5A6, 0xF660, 0xF73D, 0xF834,\n    0xF93C, 0xFA4C, 0xFB5D, 0xFC64, 0xFD5B, 0xFE38, 0xFEF3, 0xFF83,\n    0xFFE0, 0x0000, 0x2395, 0x23A7, 0x23DA, 0x2429, 0x248D, 0x2502,\n    0x2581, 0x2607, 0x268C, 0x270B, 0x2780, 0x27E5, 0x2833, 0x2866,\n    0x2878, 0x2868, 0x283B, 0x27F6, 0x279D, 0x2734, 0x26C0, 0x2645,\n    0x25C8, 0x254D, 0x24D9, 0x2470, 0x2417, 0x23D2, 0x23A5, 0x2395,\n    0x23A7, 0x23DA, 0x2429, 0x248D, 0x2502, 0x2582, 0x2607, 0x268C,\n    0x270C, 0x2780, 0x27E5, 0x2833, 0x2866, 0x2879, 0x286A, 0x2843,\n    0x2805, 0x27B5, 0x2756, 0x26ED, 0x267B, 0x2607, 0x2592, 0x2521,\n    0x24B7, 0x2459, 0x2409, 0x23CB, 0x23A3, 0x2395, 0x5C65, 0x0000,\n};\n\n// 0x05013E70\nstatic const u16 lakitu_enemy_seg5_animindex_05013E70[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0000, 0x0001, 0x0003, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02D6,\n    0x003C, 0x0222, 0x003C, 0x025E, 0x003C, 0x029A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0221,\n    0x003C, 0x0004, 0x003C, 0x0040, 0x003C, 0x007C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0220,\n    0x003C, 0x016C, 0x003C, 0x01A8, 0x003C, 0x01E4,\n    0x003C, 0x00B8, 0x003C, 0x00F4, 0x003C, 0x0130,\n};\n\n// 0x05013EDC\nstatic const struct Animation lakitu_enemy_seg5_anim_05013EDC = {\n    0,\n    0,\n    0,\n    0,\n    0x3C,\n    ANIMINDEX_NUMPARTS(lakitu_enemy_seg5_animindex_05013E70),\n    lakitu_enemy_seg5_animvalue_050138C0,\n    lakitu_enemy_seg5_animindex_05013E70,\n    0,\n};\n"
  },
  {
    "path": "actors/lakitu_enemy/anims/anim_050140E8.inc.c",
    "content": "// 0x05013EF4\nstatic const s16 lakitu_enemy_seg5_animvalue_05013EF4[] = {\n    0x0000, 0x003F, 0xFFC2, 0x3FFF, 0xFCF0, 0xFE8D, 0x8B77, 0x00DD,\n    0x013F, 0x8AD2, 0x00DD, 0x013F, 0x8AD2, 0xA2CB, 0xA2CB, 0x00AF,\n    0x00AC, 0x00A1, 0x0090, 0x0079, 0x005C, 0x003B, 0x0016, 0xFFEE,\n    0xFFC1, 0xFF93, 0xFF62, 0xFF30, 0xFEFD, 0xFECA, 0xFE97, 0xFE65,\n    0xFE34, 0xFE06, 0xFDDA, 0xFDB1, 0xFD8B, 0xFD6A, 0xFD4E, 0xFD36,\n    0xFD25, 0xFD1B, 0xFD17, 0xFD19, 0xFD21, 0xFD2C, 0xFD3C, 0xFD50,\n    0xFD67, 0xFD82, 0xFD9F, 0xFDBF, 0xFDE1, 0xFE06, 0xFE2C, 0xFE53,\n    0xFE7C, 0xFEA5, 0xFECF, 0xFEF9, 0xFF22, 0xFF4B, 0xFF74, 0xFF9B,\n    0xFFC1, 0xFFE6, 0x0007, 0x0027, 0x0045, 0x005F, 0x0076, 0x008A,\n    0x009A, 0x00A6, 0x00AD, 0x046D, 0x0458, 0x041C, 0x03BB, 0x0338,\n    0x0298, 0x01DC, 0x0109, 0x0021, 0xFF29, 0xFE21, 0xFD0E, 0xFBF3,\n    0xFAD4, 0xF9B3, 0xF893, 0xF778, 0xF666, 0xF55E, 0xF464, 0xF37D,\n    0xF2A9, 0xF1EE, 0xF14D, 0xF0CB, 0xF06A, 0xF02D, 0xF018, 0xF026,\n    0xF04F, 0xF091, 0xF0EB, 0xF15B, 0xF1DE, 0xF274, 0xF31A, 0xF3CF,\n    0xF491, 0xF55E, 0xF635, 0xF713, 0xF7F8, 0xF8E1, 0xF9CD, 0xFABA,\n    0xFBA5, 0xFC8E, 0xFD73, 0xFE52, 0xFF29, 0xFFF6, 0x00B7, 0x016C,\n    0x0212, 0x02A8, 0x032B, 0x039A, 0x03F4, 0x0436, 0x045F, 0x29BB,\n    0x29BC, 0x29C2, 0x29CB, 0x29D6, 0x29E5, 0x29F6, 0x2A08, 0x2A1D,\n    0x2A34, 0x2A4B, 0x2A64, 0x2A7D, 0x2A97, 0x2AB1, 0x2ACB, 0x2AE4,\n    0x2AFD, 0x2B14, 0x2B2B, 0x2B40, 0x2B52, 0x2B63, 0x2B72, 0x2B7D,\n    0x2B86, 0x2B8C, 0x2B8D, 0x2B8C, 0x2B88, 0x2B83, 0x2B7A, 0x2B70,\n    0x2B65, 0x2B57, 0x2B48, 0x2B38, 0x2B27, 0x2B14, 0x2B01, 0x2AED,\n    0x2AD9, 0x2AC4, 0x2AAF, 0x2A99, 0x2A84, 0x2A6F, 0x2A5B, 0x2A47,\n    0x2A34, 0x2A21, 0x2A10, 0x2A00, 0x29F1, 0x29E3, 0x29D8, 0x29CE,\n    0x29C5, 0x29C0, 0x29BC, 0x5C65,\n};\n\n// 0x0501407C\nstatic const u16 lakitu_enemy_seg5_animindex_0501407C[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0000, 0x0001, 0x0003, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00C3,\n    0x003C, 0x000F, 0x003C, 0x004B, 0x003C, 0x0087,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x000E,\n    0x0001, 0x0004, 0x0001, 0x0005, 0x0001, 0x0006,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x000D,\n    0x0001, 0x000A, 0x0001, 0x000B, 0x0001, 0x000C,\n    0x0001, 0x0007, 0x0001, 0x0008, 0x0001, 0x0009,\n};\n\n// 0x050140E8\nstatic const struct Animation lakitu_enemy_seg5_anim_050140E8 = {\n    0,\n    0,\n    0,\n    0,\n    0x3C,\n    ANIMINDEX_NUMPARTS(lakitu_enemy_seg5_animindex_0501407C),\n    lakitu_enemy_seg5_animvalue_05013EF4,\n    lakitu_enemy_seg5_animindex_0501407C,\n    0,\n};\n"
  },
  {
    "path": "actors/lakitu_enemy/anims/anim_050142E0.inc.c",
    "content": "// 0x05014100\nstatic const s16 lakitu_enemy_seg5_animvalue_05014100[] = {\n    0x0000, 0x003F, 0xFFC2, 0x3FFF, 0xFCF0, 0xFD3F, 0xFDFC, 0xFEDD,\n    0xFF9A, 0xFFE9, 0xFFB1, 0xFF24, 0xFE6D, 0xFDB5, 0xFD28, 0xFCF0,\n    0xFE8D, 0x007B, 0x0517, 0x0A97, 0x0F34, 0x1123, 0x0FC2, 0x0C51,\n    0x07D7, 0x035D, 0xFFED, 0xFE8D, 0x8B77, 0x8C25, 0x8DC6, 0x8FB7,\n    0x9158, 0x9206, 0x918A, 0x9053, 0x8EBF, 0x8D2A, 0x8BF3, 0x8B77,\n    0xFA65, 0xFB92, 0xFE69, 0x01E1, 0x04F3, 0x0699, 0x0695, 0x05A2,\n    0x042C, 0x029D, 0x015F, 0x00DD, 0x1B41, 0x1A6B, 0x1847, 0x1564,\n    0x124E, 0x0F94, 0x0CE0, 0x09C3, 0x06A4, 0x03E9, 0x01FB, 0x013F,\n    0x3F20, 0x45A5, 0x559D, 0x69A6, 0x7C5E, 0x8867, 0x8D5C, 0x8F25,\n    0x8EC6, 0x8D40, 0x8B98, 0x8AD2, 0xFA65, 0xFB92, 0xFE69, 0x01E1,\n    0x04F3, 0x0699, 0x0695, 0x05A2, 0x042C, 0x029D, 0x015F, 0x00DD,\n    0x1B41, 0x1A6B, 0x1847, 0x1564, 0x124E, 0x0F94, 0x0CE0, 0x09C3,\n    0x06A4, 0x03E9, 0x01FB, 0x013F, 0x3F20, 0x45A5, 0x559D, 0x69A6,\n    0x7C5E, 0x8867, 0x8D5C, 0x8F25, 0x8EC6, 0x8D40, 0x8B98, 0x8AD2,\n    0xA2CB, 0xA2CB, 0x0810, 0x076A, 0x05D2, 0x03D3, 0x01F7, 0x00C7,\n    0x004E, 0x0028, 0x003A, 0x0069, 0x0099, 0x00AF, 0xF0E1, 0xF43F,\n    0xFC65, 0x065D, 0x0F39, 0x1404, 0x1418, 0x118E, 0x0D8E, 0x0942,\n    0x05D4, 0x046D, 0x2964, 0x297B, 0x29B2, 0x29F5, 0x2A2F, 0x2A4C,\n    0x2A47, 0x2A2E, 0x2A09, 0x29E4, 0x29C7, 0x29BB, 0xEA72, 0xEE3A,\n    0xF75E, 0x028C, 0x0C79, 0x11D2, 0x11DD, 0x0EF1, 0x0A61, 0x057D,\n    0x0197, 0x0000, 0x007C, 0xFF61, 0xFCBA, 0xF98F, 0xF6E3, 0xF5BE,\n    0xF679, 0xF85D, 0xFAD7, 0xFD53, 0xFF3C, 0x0000, 0x5576, 0x55AC,\n    0x5636, 0x56F2, 0x57BD, 0x5874, 0x592F, 0x5A09, 0x5AE5, 0x5BA7,\n    0x5C31, 0x5C65,\n};\n\n// 0x05014274\nstatic const u16 lakitu_enemy_seg5_animindex_05014274[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0000, 0x0001, 0x0003, 0x0001, 0x0000,\n    0x000C, 0x0096, 0x000C, 0x00A2, 0x000C, 0x00AE,\n    0x000C, 0x0072, 0x000C, 0x007E, 0x000C, 0x008A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0071,\n    0x000C, 0x0004, 0x000C, 0x0010, 0x000C, 0x001C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0070,\n    0x000C, 0x004C, 0x000C, 0x0058, 0x000C, 0x0064,\n    0x000C, 0x0028, 0x000C, 0x0034, 0x000C, 0x0040,\n};\n\n// 0x050142E0\nstatic const struct Animation lakitu_enemy_seg5_anim_050142E0 = {\n    0,\n    0,\n    0,\n    0,\n    0x0C,\n    ANIMINDEX_NUMPARTS(lakitu_enemy_seg5_animindex_05014274),\n    lakitu_enemy_seg5_animvalue_05014100,\n    lakitu_enemy_seg5_animindex_05014274,\n    0,\n};\n"
  },
  {
    "path": "actors/lakitu_enemy/anims/anim_050144BC.inc.c",
    "content": "// 0x050142F8\nstatic const s16 lakitu_enemy_seg5_animvalue_050142F8[] = {\n    0x0000, 0x003F, 0xFFC2, 0x3FFF, 0xFCF0, 0xFCC9, 0xFCB3, 0xFCAA,\n    0xFCAB, 0xFCB4, 0xFCC2, 0xFCD2, 0xFCE1, 0xFCEC, 0xFCF0, 0xFE8D,\n    0xFD9C, 0xFD10, 0xFCD7, 0xFCE0, 0xFD19, 0xFD6F, 0xFDD1, 0xFE2D,\n    0xFE72, 0xFE8D, 0x8B77, 0x8B22, 0x8AF0, 0x8ADC, 0x8AE0, 0x8AF3,\n    0x8B12, 0x8B35, 0x8B55, 0x8B6D, 0x8B77, 0x00DD, 0x0011, 0xFF38,\n    0xFE59, 0xFD7E, 0xFCAE, 0xFBF1, 0xFB50, 0xFAD3, 0xFA82, 0xFA65,\n    0x013F, 0x0291, 0x04E3, 0x07F0, 0x0B73, 0x0F29, 0x12CC, 0x1618,\n    0x18C8, 0x1A97, 0x1B41, 0x8AD2, 0x84FE, 0x7D13, 0x73BA, 0x6993,\n    0x5F3E, 0x555E, 0x4C96, 0x4588, 0x40D5, 0x3F20, 0x00DD, 0x0011,\n    0xFF38, 0xFE59, 0xFD7E, 0xFCAE, 0xFBF1, 0xFB50, 0xFAD3, 0xFA82,\n    0xFA65, 0x013F, 0x0291, 0x04E3, 0x07F0, 0x0B73, 0x0F29, 0x12CC,\n    0x1618, 0x18C8, 0x1A97, 0x1B41, 0x8AD2, 0x84FE, 0x7D13, 0x73BA,\n    0x6993, 0x5F3E, 0x555E, 0x4C96, 0x4588, 0x40D5, 0x3F20, 0xA2CB,\n    0xA2CB, 0x00AF, 0x0143, 0x0209, 0x02F3, 0x03F0, 0x04F2, 0x05E7,\n    0x06C2, 0x0771, 0x07E6, 0x0810, 0x046D, 0x021A, 0xFF96, 0xFCFB,\n    0xFA63, 0xF7E9, 0xF5A7, 0xF3B8, 0xF235, 0xF13A, 0xF0E1, 0x29BB,\n    0x29AC, 0x299F, 0x2992, 0x2987, 0x297D, 0x2974, 0x296D, 0x2968,\n    0x2965, 0x2964, 0x0000, 0xFD68, 0xFA9C, 0xF7BA, 0xF4DF, 0xF225,\n    0xEFAB, 0xED8D, 0xEBE6, 0xEAD4, 0xEA72, 0x0000, 0x008E, 0x00E9,\n    0x0117, 0x0123, 0x0115, 0x00F5, 0x00CE, 0x00A6, 0x0088, 0x007C,\n    0x5C65, 0x5C0C, 0x5B6F, 0x5A9F, 0x59AF, 0x58B1, 0x57B9, 0x56D7,\n    0x561F, 0x55A3, 0x5576, 0x0000,\n};\n\n// 0x05014450\nstatic const u16 lakitu_enemy_seg5_animindex_05014450[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0000, 0x0001, 0x0003, 0x0001, 0x0000,\n    0x000B, 0x008A, 0x000B, 0x0095, 0x000B, 0x00A0,\n    0x000B, 0x0069, 0x000B, 0x0074, 0x000B, 0x007F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0068,\n    0x000B, 0x0004, 0x000B, 0x000F, 0x000B, 0x001A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0067,\n    0x000B, 0x0046, 0x000B, 0x0051, 0x000B, 0x005C,\n    0x000B, 0x0025, 0x000B, 0x0030, 0x000B, 0x003B,\n};\n\n// 0x050144BC\nstatic const struct Animation lakitu_enemy_seg5_anim_050144BC = {\n    0,\n    0,\n    0,\n    0,\n    0x0B,\n    ANIMINDEX_NUMPARTS(lakitu_enemy_seg5_animindex_05014450),\n    lakitu_enemy_seg5_animvalue_050142F8,\n    lakitu_enemy_seg5_animindex_05014450,\n    0,\n};\n"
  },
  {
    "path": "actors/lakitu_enemy/anims/data.inc.c",
    "content": "#include \"anim_05013EDC.inc.c\"\n#include \"anim_050140E8.inc.c\"\n#include \"anim_050142E0.inc.c\"\n#include \"anim_050144BC.inc.c\"\n"
  },
  {
    "path": "actors/lakitu_enemy/anims/table.inc.c",
    "content": "// 0x050144D4\nconst struct Animation *const lakitu_enemy_seg5_anims_050144D4[] = {\n    &lakitu_enemy_seg5_anim_05013EDC,\n    &lakitu_enemy_seg5_anim_050140E8,\n    &lakitu_enemy_seg5_anim_050142E0,\n    &lakitu_enemy_seg5_anim_050144BC,\n    NULL,\n    NULL,\n    NULL,\n};\n"
  },
  {
    "path": "actors/lakitu_enemy/geo.inc.c",
    "content": "// 0x0C0001BC\nconst GeoLayout enemy_lakitu_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 100),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 63, -62, lakitu_enemy_seg5_dl_050138B0),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, lakitu_enemy_seg5_dl_05012910),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 132, 0, 0, lakitu_enemy_seg5_dl_05013160),\n                    GEO_OPEN_NODE(),\n                        GEO_SWITCH_CASE(2, geo_switch_anim_state),\n                        GEO_OPEN_NODE(),\n                            GEO_DISPLAY_LIST(LAYER_ALPHA, lakitu_enemy_seg5_dl_05013350),\n                            GEO_DISPLAY_LIST(LAYER_ALPHA, lakitu_enemy_seg5_dl_05013378),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 87, 18, 72, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, lakitu_enemy_seg5_dl_050136A0),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 87, 18, -72, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, lakitu_enemy_seg5_dl_050134A8),\n                        GEO_ASM(0, geo_update_projectile_pos_from_parent),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/lakitu_enemy/model.inc.c",
    "content": "// Lakitu Enemy\n\n// Unreferenced light group\nUNUSED static const Lights1 lakitu_enemy_lights_unused1 = gdSPDefLights1(\n    0x33, 0x1f, 0x0c,\n    0xcc, 0x7f, 0x33, 0x28, 0x28, 0x28\n);\n\n// 0x0500ECB0\nstatic const Lights1 lakitu_enemy_seg5_lights_0500ECB0 = gdSPDefLights1(\n    0x29, 0x13, 0x06,\n    0xa5, 0x4f, 0x1b, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 lakitu_enemy_lights_unused2 = gdSPDefLights1(\n    0x0d, 0x2c, 0x0b,\n    0x34, 0xb2, 0x2c, 0x28, 0x28, 0x28\n);\n\n// Unreferenced texture\n// 0x0500ECE0\nALIGNED8 static const Texture lakitu_enemy_seg5_texture_0500ECE0[] = {\n#include \"actors/lakitu_enemy/lakitu_enemy_cloud_face_unused.rgba16.inc.c\"\n};\n\n// 0x0500F4E0\nALIGNED8 static const Texture lakitu_enemy_seg5_texture_0500F4E0[] = {\n#include \"actors/lakitu_enemy/lakitu_enemy_eyes_open.rgba16.inc.c\"\n};\n\n// 0x050104E0\nALIGNED8 static const Texture lakitu_enemy_seg5_texture_050104E0[] = {\n#include \"actors/lakitu_enemy/lakitu_enemy_eyes_closed.rgba16.inc.c\"\n};\n\n// 0x050114E0\nALIGNED8 static const Texture lakitu_enemy_seg5_texture_050114E0[] = {\n#include \"actors/lakitu_enemy/lakitu_enemy_shell.rgba16.inc.c\"\n};\n\n// 0x05011CE0\nALIGNED8 static const Texture lakitu_enemy_seg5_texture_05011CE0[] = {\n#include \"actors/lakitu_enemy/lakitu_enemy_frown.rgba16.inc.c\"\n};\n\n// 0x050124E0\nstatic const Lights1 lakitu_enemy_seg5_lights_050124E0 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x050124F8\nstatic const Lights1 lakitu_enemy_seg5_lights_050124F8 = gdSPDefLights1(\n    0x79, 0x55, 0x00,\n    0xf2, 0xab, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x05012510\nstatic const Vtx lakitu_enemy_seg5_vertex_05012510[] = {\n    {{{    91,    -25,     86}, 0, {   240,    464}, {0x3e, 0xd0, 0x63, 0xff}}},\n    {{{   132,    -17,     43}, 0, {    34,    468}, {0x71, 0xce, 0x1a, 0xff}}},\n    {{{   137,     35,     43}, 0, {     0,    980}, {0x64, 0x33, 0x39, 0xff}}},\n    {{{    -2,     15,    -96}, 0, {   684,    990}, {0xd6, 0x33, 0x94, 0xff}}},\n    {{{    84,     28,    -96}, 0, {   242,    984}, {0x36, 0x2a, 0x96, 0xff}}},\n    {{{    91,    -22,    -81}, 0, {   240,    474}, {0x24, 0xc2, 0x98, 0xff}}},\n    {{{   137,     35,    -40}, 0, {     0,    980}, {0x66, 0x45, 0xe3, 0xff}}},\n    {{{   132,    -17,    -40}, 0, {    34,    468}, {0x6a, 0xd6, 0xcb, 0xff}}},\n    {{{    84,    -76,    -28}, 0, {   310,    -14}, {0x3a, 0x94, 0xe4, 0xff}}},\n    {{{    22,    -84,    -28}, 0, {   612,    -10}, {0xeb, 0x8f, 0xcb, 0xff}}},\n    {{{     2,    -35,    -81}, 0, {   684,    480}, {0xd1, 0xbf, 0x9f, 0xff}}},\n    {{{    22,    -84,     30}, 0, {   612,    -10}, {0xe0, 0x89, 0x1b, 0xff}}},\n    {{{    84,    -76,     30}, 0, {   310,    -14}, {0x30, 0x97, 0x33, 0xff}}},\n    {{{     2,    -35,     86}, 0, {   684,    470}, {0xea, 0xbb, 0x67, 0xff}}},\n    {{{    84,     28,     99}, 0, {   242,    984}, {0x1f, 0x28, 0x74, 0xff}}},\n    {{{    -2,     15,     99}, 0, {   684,    990}, {0xc1, 0x34, 0x60, 0xff}}},\n};\n\n// 0x05012610\nstatic const Vtx lakitu_enemy_seg5_vertex_05012610[] = {\n    {{{    -2,     15,     99}, 0, {   684,    990}, {0xc1, 0x34, 0x60, 0xff}}},\n    {{{   -56,      7,     43}, 0, {   958,    992}, {0x87, 0x10, 0x21, 0xff}}},\n    {{{   -33,    -40,     43}, 0, {   884,    484}, {0xa3, 0xbb, 0x31, 0xff}}},\n    {{{     2,    -35,     86}, 0, {   684,    470}, {0xea, 0xbb, 0x67, 0xff}}},\n    {{{    22,    -84,     30}, 0, {   612,    -10}, {0xe0, 0x89, 0x1b, 0xff}}},\n    {{{   -33,    -40,    -40}, 0, {   884,    484}, {0xa1, 0xb1, 0xe7, 0xff}}},\n    {{{   -56,      7,    -40}, 0, {   958,    992}, {0x90, 0x14, 0xc9, 0xff}}},\n    {{{    22,    -84,    -28}, 0, {   612,    -10}, {0xeb, 0x8f, 0xcb, 0xff}}},\n    {{{     2,    -35,    -81}, 0, {   684,    480}, {0xd1, 0xbf, 0x9f, 0xff}}},\n    {{{    -2,     15,    -96}, 0, {   684,    990}, {0xd6, 0x33, 0x94, 0xff}}},\n};\n\n// 0x050126B0\nstatic const Vtx lakitu_enemy_seg5_vertex_050126B0[] = {\n    {{{     0,     51,      0}, 0, {     0,      0}, {0xcf, 0x75, 0x00, 0xff}}},\n    {{{    68,     61,     35}, 0, {     0,      0}, {0x09, 0x7b, 0x1a, 0xff}}},\n    {{{    68,     61,    -33}, 0, {     0,      0}, {0x01, 0x7a, 0xe0, 0xff}}},\n    {{{    84,     28,    -96}, 0, {     0,      0}, {0x36, 0x2a, 0x96, 0xff}}},\n    {{{    -2,     15,    -96}, 0, {     0,      0}, {0xd6, 0x33, 0x94, 0xff}}},\n    {{{   137,     35,    -40}, 0, {     0,      0}, {0x66, 0x45, 0xe3, 0xff}}},\n    {{{   -56,      7,    -40}, 0, {     0,      0}, {0x90, 0x14, 0xc9, 0xff}}},\n    {{{    -2,     15,     99}, 0, {     0,      0}, {0xc1, 0x34, 0x60, 0xff}}},\n    {{{    84,     28,     99}, 0, {     0,      0}, {0x1f, 0x28, 0x74, 0xff}}},\n    {{{   -56,      7,     43}, 0, {     0,      0}, {0x87, 0x10, 0x21, 0xff}}},\n    {{{   137,     35,     43}, 0, {     0,      0}, {0x64, 0x33, 0x39, 0xff}}},\n};\n\n// 0x05012760 - 0x05012890\nconst Gfx lakitu_enemy_seg5_dl_05012760[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lakitu_enemy_seg5_texture_050114E0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&lakitu_enemy_seg5_lights_050124E0.l, 1),\n    gsSPLight(&lakitu_enemy_seg5_lights_050124E0.a, 2),\n    gsSPVertex(lakitu_enemy_seg5_vertex_05012510, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  8,  7,  1, 0x0),\n    gsSP2Triangles( 6,  1,  7, 0x0,  5,  8,  9, 0x0),\n    gsSP2Triangles( 5,  9, 10, 0x0,  3,  5, 10, 0x0),\n    gsSP2Triangles( 6,  2,  1, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles( 8, 12, 11, 0x0,  8,  1, 12, 0x0),\n    gsSP2Triangles(12,  1,  0, 0x0, 13, 11, 12, 0x0),\n    gsSP2Triangles(13, 12,  0, 0x0, 14, 13,  0, 0x0),\n    gsSP2Triangles( 0,  2, 14, 0x0, 14, 15, 13, 0x0),\n    gsSPVertex(lakitu_enemy_seg5_vertex_05012610, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  4,  2,  5, 0x0),\n    gsSP2Triangles( 1,  5,  2, 0x0,  1,  6,  5, 0x0),\n    gsSP2Triangles( 4,  5,  7, 0x0,  7,  5,  8, 0x0),\n    gsSP2Triangles( 8,  5,  6, 0x0,  8,  6,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05012890 - 0x05012910\nconst Gfx lakitu_enemy_seg5_dl_05012890[] = {\n    gsSPLight(&lakitu_enemy_seg5_lights_050124F8.l, 1),\n    gsSPLight(&lakitu_enemy_seg5_lights_050124F8.a, 2),\n    gsSPVertex(lakitu_enemy_seg5_vertex_050126B0, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 1,  5,  2, 0x0,  4,  0,  2, 0x0),\n    gsSP2Triangles( 5,  3,  2, 0x0,  4,  6,  0, 0x0),\n    gsSP2Triangles( 7,  8,  1, 0x0,  9,  7,  0, 0x0),\n    gsSP2Triangles( 1,  0,  7, 0x0,  8, 10,  1, 0x0),\n    gsSP2Triangles( 1, 10,  5, 0x0,  0,  6,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05012910 - 0x05012978\nconst Gfx lakitu_enemy_seg5_dl_05012910[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lakitu_enemy_seg5_dl_05012760),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(lakitu_enemy_seg5_dl_05012890),\n    gsSPEndDisplayList(),\n};\n\n// 0x05012978\nstatic const Lights1 lakitu_enemy_seg5_lights_05012978 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05012990\nstatic const Vtx lakitu_enemy_seg5_vertex_05012990[] = {\n    {{{     2,     -6,     83}, 0, { -1072,    916}, {0xcb, 0x25, 0x6c, 0xff}}},\n    {{{   -49,    -11,     35}, 0, {  -556,    874}, {0x92, 0x2e, 0x2b, 0xff}}},\n    {{{     1,    -57,     76}, 0, { -1062,    410}, {0xd5, 0xe6, 0x74, 0xff}}},\n    {{{     9,     27,    -50}, 0, { -1138,   1254}, {0xce, 0x70, 0xe4, 0xff}}},\n    {{{     9,     27,     51}, 0, { -1138,   1254}, {0xce, 0x6d, 0x28, 0xff}}},\n    {{{   -49,    -11,    -36}, 0, {  -556,    874}, {0x98, 0x26, 0xc4, 0xff}}},\n    {{{   -49,    -73,    -25}, 0, {  -552,    248}, {0x8d, 0xdc, 0xda, 0xff}}},\n    {{{   -49,    -73,     26}, 0, {  -552,    248}, {0x93, 0xde, 0x36, 0xff}}},\n    {{{     0,   -140,     32}, 0, { -1046,   -414}, {0xc5, 0x94, 0x1d, 0xff}}},\n    {{{     0,    -98,     73}, 0, { -1054,     -2}, {0xd6, 0xc8, 0x69, 0xff}}},\n    {{{   103,    -17,    101}, 0, { -2084,    810}, {0x33, 0xd1, 0x69, 0xff}}},\n    {{{    98,    -35,     81}, 0, { -2034,    626}, {0x43, 0xd5, 0x62, 0xff}}},\n    {{{    97,   -100,     73}, 0, { -2022,    -18}, {0x22, 0xd7, 0x73, 0xff}}},\n    {{{   101,   -142,     35}, 0, { -2058,   -434}, {0x26, 0x99, 0x3d, 0xff}}},\n    {{{     2,     -6,    -82}, 0, { -1072,    916}, {0xcf, 0x36, 0x99, 0xff}}},\n    {{{     1,    -57,    -75}, 0, { -1062,    410}, {0xd6, 0xe6, 0x8c, 0xff}}},\n};\n\n// 0x05012A90\nstatic const Vtx lakitu_enemy_seg5_vertex_05012A90[] = {\n    {{{     1,    -57,    -75}, 0, { -1062,    410}, {0xd6, 0xe6, 0x8c, 0xff}}},\n    {{{    98,    -35,    -80}, 0, { -2034,    626}, {0x43, 0xd5, 0x9e, 0xff}}},\n    {{{    97,   -100,    -72}, 0, { -2022,    -18}, {0x1b, 0xcd, 0x90, 0xff}}},\n    {{{     0,    -98,    -72}, 0, { -1054,     -2}, {0xcc, 0xd2, 0x97, 0xff}}},\n    {{{     2,     -6,    -82}, 0, { -1072,    916}, {0xcf, 0x36, 0x99, 0xff}}},\n    {{{   103,    -17,   -100}, 0, { -2084,    810}, {0x33, 0xd1, 0x97, 0xff}}},\n    {{{   -49,    -73,    -25}, 0, {  -552,    248}, {0x8d, 0xdc, 0xda, 0xff}}},\n    {{{   148,     21,    -45}, 0, { -2528,   1194}, {0x67, 0x30, 0xc9, 0xff}}},\n    {{{   104,     34,    -89}, 0, { -2094,   1332}, {0x1d, 0x53, 0xa5, 0xff}}},\n    {{{   105,     51,    -39}, 0, { -2096,   1494}, {0x15, 0x78, 0xe0, 0xff}}},\n    {{{     0,   -140,     32}, 0, { -1046,   -414}, {0xc5, 0x94, 0x1d, 0xff}}},\n    {{{     0,   -140,    -31}, 0, { -1046,   -414}, {0xd1, 0x9a, 0xc6, 0xff}}},\n    {{{   161,     16,      0}, 0, {   480,    568}, {0x70, 0x3a, 0x00, 0xff}}},\n    {{{   154,    -30,     28}, 0, {   746,    166}, {0x6d, 0xc7, 0x1e, 0xff}}},\n    {{{   154,    -30,    -27}, 0, {   210,    164}, {0x6e, 0xcf, 0xdc, 0xff}}},\n};\n\n// 0x05012B80\nstatic const Vtx lakitu_enemy_seg5_vertex_05012B80[] = {\n    {{{   105,     51,     40}, 0, {   864,    924}, {0x15, 0x7c, 0x0f, 0xff}}},\n    {{{   148,     21,     46}, 0, {   920,    620}, {0x67, 0x30, 0x36, 0xff}}},\n    {{{   161,     16,      0}, 0, {   480,    568}, {0x70, 0x3a, 0x00, 0xff}}},\n    {{{   154,    -30,    -27}, 0, {   210,    164}, {0x6e, 0xcf, 0xdc, 0xff}}},\n    {{{   148,     21,    -45}, 0, {    40,    620}, {0x67, 0x30, 0xc9, 0xff}}},\n    {{{   154,    -30,     28}, 0, {   746,    166}, {0x6d, 0xc7, 0x1e, 0xff}}},\n    {{{   105,     51,    -39}, 0, {   100,    924}, {0x15, 0x78, 0xe0, 0xff}}},\n    {{{     9,     27,    -50}, 0, { -1138,   1254}, {0xce, 0x70, 0xe4, 0xff}}},\n    {{{   105,     51,     40}, 0, { -2096,   1494}, {0x15, 0x7c, 0x0f, 0xff}}},\n    {{{   105,     51,    -39}, 0, { -2096,   1494}, {0x15, 0x78, 0xe0, 0xff}}},\n    {{{     2,     -6,    -82}, 0, { -1072,    916}, {0xcf, 0x36, 0x99, 0xff}}},\n    {{{   104,     34,    -89}, 0, { -2094,   1332}, {0x1d, 0x53, 0xa5, 0xff}}},\n    {{{     9,     27,     51}, 0, { -1138,   1254}, {0xce, 0x6d, 0x28, 0xff}}},\n    {{{   104,     34,     90}, 0, { -2094,   1332}, {0x12, 0x57, 0x5a, 0xff}}},\n    {{{   161,     16,      0}, 0, { -2654,   1148}, {0x70, 0x3a, 0x00, 0xff}}},\n    {{{   148,     21,     46}, 0, { -2528,   1194}, {0x67, 0x30, 0x36, 0xff}}},\n};\n\n// 0x05012C80\nstatic const Vtx lakitu_enemy_seg5_vertex_05012C80[] = {\n    {{{     2,     -6,    -82}, 0, { -1072,    916}, {0xcf, 0x36, 0x99, 0xff}}},\n    {{{   104,     34,    -89}, 0, { -2094,   1332}, {0x1d, 0x53, 0xa5, 0xff}}},\n    {{{   103,    -17,   -100}, 0, { -2084,    810}, {0x33, 0xd1, 0x97, 0xff}}},\n    {{{    98,    -35,    -80}, 0, { -2034,    626}, {0x43, 0xd5, 0x9e, 0xff}}},\n    {{{   138,    -47,    -10}, 0, { -2428,    508}, {0x68, 0xbf, 0xe0, 0xff}}},\n    {{{   148,     21,    -45}, 0, { -2528,   1194}, {0x67, 0x30, 0xc9, 0xff}}},\n    {{{   154,    -30,    -27}, 0, { -2588,    680}, {0x6e, 0xcf, 0xdc, 0xff}}},\n    {{{    97,   -100,    -72}, 0, { -2022,    -18}, {0x1b, 0xcd, 0x90, 0xff}}},\n    {{{   135,    -98,    -38}, 0, { -2404,     -2}, {0x74, 0xe5, 0xd5, 0xff}}},\n    {{{   101,   -142,    -34}, 0, { -2058,   -434}, {0x34, 0x92, 0xde, 0xff}}},\n    {{{    98,    -35,     81}, 0, { -2034,    626}, {0x43, 0xd5, 0x62, 0xff}}},\n    {{{    97,   -100,     73}, 0, { -2022,    -18}, {0x22, 0xd7, 0x73, 0xff}}},\n    {{{   135,    -98,     39}, 0, { -2404,     -2}, {0x70, 0xd8, 0x2b, 0xff}}},\n    {{{   138,    -47,     11}, 0, { -2428,    508}, {0x6f, 0xce, 0x20, 0xff}}},\n    {{{   103,    -17,    101}, 0, { -2084,    810}, {0x33, 0xd1, 0x69, 0xff}}},\n};\n\n// 0x05012D70\nstatic const Vtx lakitu_enemy_seg5_vertex_05012D70[] = {\n    {{{   103,    -17,    101}, 0, { -2084,    810}, {0x33, 0xd1, 0x69, 0xff}}},\n    {{{   104,     34,     90}, 0, { -2094,   1332}, {0x12, 0x57, 0x5a, 0xff}}},\n    {{{     2,     -6,     83}, 0, { -1072,    916}, {0xcb, 0x25, 0x6c, 0xff}}},\n    {{{   138,    -47,     11}, 0, { -2428,    508}, {0x6f, 0xce, 0x20, 0xff}}},\n    {{{   154,    -30,     28}, 0, { -2588,    680}, {0x6d, 0xc7, 0x1e, 0xff}}},\n    {{{   148,     21,     46}, 0, { -2528,   1194}, {0x67, 0x30, 0x36, 0xff}}},\n    {{{   101,   -142,     35}, 0, { -2058,   -434}, {0x26, 0x99, 0x3d, 0xff}}},\n    {{{   135,    -98,     39}, 0, { -2404,     -2}, {0x70, 0xd8, 0x2b, 0xff}}},\n    {{{    97,   -100,     73}, 0, { -2022,    -18}, {0x22, 0xd7, 0x73, 0xff}}},\n    {{{   101,   -142,    -34}, 0, { -2058,   -434}, {0x34, 0x92, 0xde, 0xff}}},\n    {{{   135,    -98,    -38}, 0, { -2404,     -2}, {0x74, 0xe5, 0xd5, 0xff}}},\n    {{{    98,    -35,    -80}, 0, { -2034,    626}, {0x43, 0xd5, 0x9e, 0xff}}},\n    {{{   138,    -47,    -10}, 0, { -2428,    508}, {0x68, 0xbf, 0xe0, 0xff}}},\n    {{{    97,   -100,    -72}, 0, { -2022,    -18}, {0x1b, 0xcd, 0x90, 0xff}}},\n    {{{     9,     27,     51}, 0, { -1138,   1254}, {0xce, 0x6d, 0x28, 0xff}}},\n    {{{     0,   -140,    -31}, 0, { -1046,   -414}, {0xd1, 0x9a, 0xc6, 0xff}}},\n};\n\n// 0x05012E70\nstatic const Vtx lakitu_enemy_seg5_vertex_05012E70[] = {\n    {{{   101,   -142,    -34}, 0, { -2058,   -434}, {0x34, 0x92, 0xde, 0xff}}},\n    {{{     0,   -140,     32}, 0, { -1046,   -414}, {0xc5, 0x94, 0x1d, 0xff}}},\n    {{{     0,   -140,    -31}, 0, { -1046,   -414}, {0xd1, 0x9a, 0xc6, 0xff}}},\n    {{{   101,   -142,     35}, 0, { -2058,   -434}, {0x26, 0x99, 0x3d, 0xff}}},\n    {{{   138,    -47,    -10}, 0, {   370,    -88}, {0x68, 0xbf, 0xe0, 0xff}}},\n    {{{   154,    -30,     28}, 0, {   724,    182}, {0x6d, 0xc7, 0x1e, 0xff}}},\n    {{{   138,    -47,     11}, 0, {   570,    -84}, {0x6f, 0xce, 0x20, 0xff}}},\n    {{{   154,    -30,    -27}, 0, {   196,    176}, {0x6e, 0xcf, 0xdc, 0xff}}},\n};\n\n// 0x05012EF0 - 0x05013160\nconst Gfx lakitu_enemy_seg5_dl_05012EF0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lakitu_enemy_seg5_texture_05011CE0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&lakitu_enemy_seg5_lights_05012978.l, 1),\n    gsSPLight(&lakitu_enemy_seg5_lights_05012978.a, 2),\n    gsSPVertex(lakitu_enemy_seg5_vertex_05012990, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  4, 0x0),\n    gsSP2Triangles( 3,  5,  1, 0x0,  1,  6,  7, 0x0),\n    gsSP2Triangles( 1,  5,  6, 0x0,  1,  0,  4, 0x0),\n    gsSP2Triangles( 1,  7,  2, 0x0,  8,  7,  6, 0x0),\n    gsSP2Triangles( 9,  7,  8, 0x0,  2,  7,  9, 0x0),\n    gsSP2Triangles(10,  0,  2, 0x0,  2, 11, 10, 0x0),\n    gsSP2Triangles( 2, 12, 11, 0x0,  2,  9, 12, 0x0),\n    gsSP2Triangles( 9, 13, 12, 0x0,  9,  8, 13, 0x0),\n    gsSP2Triangles(14,  5,  3, 0x0,  5, 15,  6, 0x0),\n    gsSP1Triangle( 5, 14, 15, 0x0),\n    gsSPVertex(lakitu_enemy_seg5_vertex_05012A90, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  6,  0,  3, 0x0),\n    gsSP2Triangles( 0,  5,  1, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  6, 11, 0x0, 11,  6,  3, 0x0),\n    gsSP2Triangles( 2, 11,  3, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(lakitu_enemy_seg5_vertex_05012B80, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 2,  1,  5, 0x0,  4,  6,  2, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0,  7, 12,  8, 0x0),\n    gsSP2Triangles(13,  8, 12, 0x0,  9,  8, 14, 0x0),\n    gsSP1Triangle(15,  8, 13, 0x0),\n    gsSPVertex(lakitu_enemy_seg5_vertex_05012C80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 5,  6,  2, 0x0,  2,  6,  4, 0x0),\n    gsSP2Triangles( 5,  2,  1, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle(14, 10, 13, 0x0),\n    gsSPVertex(lakitu_enemy_seg5_vertex_05012D70, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 1,  0,  5, 0x0,  0,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10,  7, 0x0),\n    gsSP2Triangles( 3,  7, 10, 0x0,  9,  7,  6, 0x0),\n    gsSP2Triangles(11, 12, 10, 0x0, 10, 13, 11, 0x0),\n    gsSP2Triangles( 3, 10, 12, 0x0,  1, 14,  2, 0x0),\n    gsSP1Triangle(13,  9, 15, 0x0),\n    gsSPVertex(lakitu_enemy_seg5_vertex_05012E70, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05013160 - 0x050131C0\nconst Gfx lakitu_enemy_seg5_dl_05013160[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lakitu_enemy_seg5_dl_05012EF0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x050131C0\nstatic const Lights1 lakitu_enemy_seg5_lights_050131C0 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x050131D8\nstatic const Vtx lakitu_enemy_seg5_vertex_050131D8[] = {\n    {{{   150,    -30,      0}, 0, {   992,    994}, {0x7e, 0xf5, 0x09, 0xff}}},\n    {{{   136,   -116,     82}, 0, {  2012,      0}, {0x7e, 0xf5, 0x09, 0xff}}},\n    {{{   142,   -116,      0}, 0, {   992,    -26}, {0x7e, 0xf5, 0x09, 0xff}}},\n    {{{   142,   -116,      0}, 0, {   992,    -26}, {0x7e, 0xf5, 0xf9, 0xff}}},\n    {{{   145,    -30,    -81}, 0, {     0,    990}, {0x7e, 0xf5, 0xf9, 0xff}}},\n    {{{   150,    -30,      0}, 0, {   992,    994}, {0x7e, 0xf5, 0xf9, 0xff}}},\n    {{{   142,   -116,      0}, 0, {   992,    -26}, {0x7d, 0xf3, 0xf7, 0xff}}},\n    {{{   136,   -116,    -81}, 0, {     0,      0}, {0x7d, 0xf3, 0xf7, 0xff}}},\n    {{{   145,    -30,    -81}, 0, {     0,    990}, {0x7d, 0xf3, 0xf7, 0xff}}},\n    {{{   150,    -30,      0}, 0, {   992,    994}, {0x7e, 0xf3, 0x07, 0xff}}},\n    {{{   145,    -30,     82}, 0, {  2012,    990}, {0x7e, 0xf3, 0x07, 0xff}}},\n    {{{   136,   -116,     82}, 0, {  2012,      0}, {0x7e, 0xf3, 0x07, 0xff}}},\n};\n\n// 0x05013298 - 0x050132D8\nconst Gfx lakitu_enemy_seg5_dl_05013298[] = {\n    gsSPLight(&lakitu_enemy_seg5_lights_050131C0.l, 1),\n    gsSPLight(&lakitu_enemy_seg5_lights_050131C0.a, 2),\n    gsSPVertex(lakitu_enemy_seg5_vertex_050131D8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050132D8 - 0x05013320\nconst Gfx lakitu_enemy_seg5_dl_050132D8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x05013320 - 0x05013350\nconst Gfx lakitu_enemy_seg5_dl_05013320[] = {\n    gsSPDisplayList(lakitu_enemy_seg5_dl_05013298),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x05013350 - 0x05013378\nconst Gfx lakitu_enemy_seg5_dl_05013350[] = {\n    gsSPDisplayList(lakitu_enemy_seg5_dl_050132D8),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lakitu_enemy_seg5_texture_0500F4E0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPBranchList(lakitu_enemy_seg5_dl_05013320),\n};\n\n// 0x05013378 - 0x050133A0\nconst Gfx lakitu_enemy_seg5_dl_05013378[] = {\n    gsSPDisplayList(lakitu_enemy_seg5_dl_050132D8),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lakitu_enemy_seg5_texture_050104E0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPBranchList(lakitu_enemy_seg5_dl_05013320),\n};\n\n// 0x050133A0\nstatic const Lights1 lakitu_enemy_seg5_lights_050133A0 = gdSPDefLights1(\n    0x79, 0x55, 0x00,\n    0xf2, 0xab, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x050133B8\nstatic const Vtx lakitu_enemy_seg5_vertex_050133B8[] = {\n    {{{    30,     -5,    -22}, 0, {     0,      0}, {0xe3, 0xb1, 0xa2, 0xff}}},\n    {{{    -5,      0,      0}, 0, {     0,      0}, {0x83, 0xee, 0x00, 0xff}}},\n    {{{    28,     15,    -22}, 0, {     0,      0}, {0xd1, 0x29, 0x92, 0xff}}},\n    {{{    30,     -5,     22}, 0, {     0,      0}, {0xdf, 0xcb, 0x6e, 0xff}}},\n    {{{   102,      0,     30}, 0, {     0,      0}, {0x1b, 0xb6, 0x63, 0xff}}},\n    {{{    99,     30,     30}, 0, {     0,      0}, {0xfa, 0x4f, 0x62, 0xff}}},\n    {{{    28,     15,     22}, 0, {     0,      0}, {0xc9, 0x34, 0x65, 0xff}}},\n    {{{    33,    -17,      0}, 0, {     0,      0}, {0xec, 0x84, 0x0d, 0xff}}},\n    {{{   104,    -15,      0}, 0, {     0,      0}, {0x31, 0x8c, 0xf8, 0xff}}},\n    {{{   137,     20,     15}, 0, {     0,      0}, {0x64, 0xfb, 0x4d, 0xff}}},\n    {{{   140,     20,      0}, 0, {     0,      0}, {0x73, 0xfb, 0xcb, 0xff}}},\n    {{{   102,      0,    -30}, 0, {     0,      0}, {0x21, 0xd1, 0x90, 0xff}}},\n    {{{    99,     30,    -30}, 0, {     0,      0}, {0x06, 0x5e, 0xac, 0xff}}},\n    {{{   119,     45,      2}, 0, {     0,      0}, {0x35, 0x72, 0x07, 0xff}}},\n    {{{    25,     28,      0}, 0, {     0,      0}, {0xce, 0x74, 0x00, 0xff}}},\n};\n\n// 0x050134A8 - 0x05013598\nconst Gfx lakitu_enemy_seg5_dl_050134A8[] = {\n    gsSPLight(&lakitu_enemy_seg5_lights_050133A0.l, 1),\n    gsSPLight(&lakitu_enemy_seg5_lights_050133A0.a, 2),\n    gsSPVertex(lakitu_enemy_seg5_vertex_050133B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  3,  7,  4, 0x0),\n    gsSP2Triangles( 6,  1,  3, 0x0,  1,  7,  3, 0x0),\n    gsSP2Triangles( 8,  7,  0, 0x0,  7,  8,  4, 0x0),\n    gsSP2Triangles( 0,  7,  1, 0x0,  9,  4,  8, 0x0),\n    gsSP2Triangles( 4,  9,  5, 0x0, 10,  8, 11, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0, 11,  8,  0, 0x0),\n    gsSP2Triangles( 0,  2, 11, 0x0,  2, 12, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 12,  5, 0x0),\n    gsSP2Triangles( 9, 10, 13, 0x0,  9, 13,  5, 0x0),\n    gsSP2Triangles(10, 12, 13, 0x0,  1, 14,  2, 0x0),\n    gsSP2Triangles( 2, 14, 12, 0x0,  6, 14,  1, 0x0),\n    gsSP2Triangles( 5, 14,  6, 0x0,  5, 12, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05013598\nstatic const Lights1 lakitu_enemy_seg5_lights_05013598 = gdSPDefLights1(\n    0x79, 0x55, 0x00,\n    0xf2, 0xab, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x050135B0\nstatic const Vtx lakitu_enemy_seg5_vertex_050135B0[] = {\n    {{{    99,     30,     33}, 0, {     0,      0}, {0x06, 0x5e, 0x54, 0xff}}},\n    {{{   102,      0,     33}, 0, {     0,      0}, {0x21, 0xd1, 0x70, 0xff}}},\n    {{{   140,     20,      2}, 0, {     0,      0}, {0x73, 0xfb, 0x35, 0xff}}},\n    {{{    99,     30,    -28}, 0, {     0,      0}, {0xfa, 0x4f, 0x9e, 0xff}}},\n    {{{   102,      0,    -28}, 0, {     0,      0}, {0x1b, 0xb7, 0x9d, 0xff}}},\n    {{{    30,     -5,    -20}, 0, {     0,      0}, {0xdf, 0xce, 0x91, 0xff}}},\n    {{{   104,    -15,      2}, 0, {     0,      0}, {0x31, 0x8c, 0x07, 0xff}}},\n    {{{    33,    -17,      0}, 0, {     0,      0}, {0xec, 0x84, 0xef, 0xff}}},\n    {{{   137,     20,    -12}, 0, {     0,      0}, {0x64, 0xfb, 0xb3, 0xff}}},\n    {{{    30,     -5,     25}, 0, {     0,      0}, {0xe3, 0xaf, 0x5d, 0xff}}},\n    {{{    -5,      0,      2}, 0, {     0,      0}, {0x83, 0xee, 0xfe, 0xff}}},\n    {{{    28,     15,    -20}, 0, {     0,      0}, {0xc9, 0x34, 0x9b, 0xff}}},\n    {{{    28,     15,     25}, 0, {     0,      0}, {0xd1, 0x29, 0x6e, 0xff}}},\n    {{{    25,     28,      2}, 0, {     0,      0}, {0xce, 0x74, 0x00, 0xff}}},\n    {{{   119,     45,      0}, 0, {     0,      0}, {0x35, 0x72, 0xf9, 0xff}}},\n};\n\n// 0x050136A0 - 0x05013790\nconst Gfx lakitu_enemy_seg5_dl_050136A0[] = {\n    gsSPLight(&lakitu_enemy_seg5_lights_05013598.l, 1),\n    gsSPLight(&lakitu_enemy_seg5_lights_05013598.a, 2),\n    gsSPVertex(lakitu_enemy_seg5_vertex_050135B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 6,  4,  8, 0x0,  3,  8,  4, 0x0),\n    gsSP2Triangles( 9,  7,  6, 0x0, 10,  7,  9, 0x0),\n    gsSP2Triangles( 5,  7, 10, 0x0,  3,  5, 11, 0x0),\n    gsSP2Triangles( 5, 10, 11, 0x0,  1,  6,  2, 0x0),\n    gsSP2Triangles( 2,  6,  8, 0x0,  9,  6,  1, 0x0),\n    gsSP2Triangles( 1, 12,  9, 0x0, 12, 10,  9, 0x0),\n    gsSP2Triangles( 1,  0, 12, 0x0, 11, 13,  3, 0x0),\n    gsSP2Triangles(14,  0,  2, 0x0, 14,  2,  8, 0x0),\n    gsSP2Triangles( 3, 14,  8, 0x0, 13,  0,  3, 0x0),\n    gsSP2Triangles( 3,  0, 14, 0x0,  0, 13, 12, 0x0),\n    gsSP2Triangles(10, 13, 11, 0x0, 12, 13, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05013790\nstatic const Vtx lakitu_enemy_seg5_vertex_05013790[] = {\n    {{{   103,     40,     28}, 0, {     0,      0}, {0xb1, 0x5e, 0x1c, 0x00}}},\n    {{{   115,     46,     39}, 0, {     0,      0}, {0xb1, 0x5e, 0x1c, 0x00}}},\n    {{{   111,     46,     30}, 0, {     0,      0}, {0xb1, 0x5e, 0x1c, 0x00}}},\n    {{{   115,     46,     39}, 0, {     0,      0}, {0xce, 0xb9, 0x5b, 0xff}}},\n    {{{   103,     40,     28}, 0, {     0,      0}, {0xce, 0xb9, 0x5b, 0xff}}},\n    {{{   345,   -234,    -54}, 0, {     0,      0}, {0xce, 0xb9, 0x5b, 0xff}}},\n    {{{   115,     51,     23}, 0, {     0,      0}, {0xb1, 0x5e, 0x1c, 0xff}}},\n    {{{   103,     40,     28}, 0, {     0,      0}, {0xd2, 0xfb, 0x8b, 0xff}}},\n    {{{   115,     51,     23}, 0, {     0,      0}, {0xd2, 0xfb, 0x8b, 0xff}}},\n    {{{   345,   -234,    -54}, 0, {     0,      0}, {0xd2, 0xfb, 0x8b, 0xff}}},\n    {{{   115,     51,     23}, 0, {     0,      0}, {0x64, 0x49, 0x18, 0xff}}},\n    {{{   115,     46,     39}, 0, {     0,      0}, {0x64, 0x49, 0x18, 0xff}}},\n    {{{   345,   -234,    -54}, 0, {     0,      0}, {0x64, 0x49, 0x18, 0xff}}},\n};\n\n// 0x05013860 - 0x050138B0\nconst Gfx lakitu_enemy_seg5_dl_05013860[] = {\n    gsSPLight(&lakitu_enemy_seg5_lights_0500ECB0.l, 1),\n    gsSPLight(&lakitu_enemy_seg5_lights_0500ECB0.a, 2),\n    gsSPVertex(lakitu_enemy_seg5_vertex_05013790, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  0,  2, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 1,  6,  2, 0x0, 10, 11, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050138B0 - 0x050138C0\nconst Gfx lakitu_enemy_seg5_dl_050138B0[] = {\n    gsSPNumLights(NUMLIGHTS_1),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/leaves/geo.inc.c",
    "content": "// 0x16000C8C\nconst GeoLayout leaves_geo[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, leaves_seg3_dl_0301CDE0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/leaves/model.inc.c",
    "content": "// Leaves\n\n// 0x0301CBA0\nstatic const Vtx leaves_seg3_vertex_0301CBA0[] = {\n    {{{   -10,    -10,      0}, 0, {     0,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    10,    -10,      0}, 0, {   480,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    10,     10,      0}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -10,     10,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0301CBE0\nALIGNED8 static const Texture leaves_seg3_texture_0301CBE0[] = {\n#include \"actors/leaves/leaf.rgba16.inc.c\"\n};\n\n// 0x0301CDE0 - 0x0301CE70\nconst Gfx leaves_seg3_dl_0301CDE0[] = {\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPLoadTextureBlock(leaves_seg3_texture_0301CBE0, G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 16, 0, G_TX_CLAMP, G_TX_CLAMP, 4, 4, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(leaves_seg3_vertex_0301CBA0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/mad_piano/anims/anim_05009A04.inc.c",
    "content": "// 0x050099B8\nstatic const s16 mad_piano_seg5_animvalue_050099B8[] = {\n    0x0000, 0xFFEF, 0x0175, 0x00C4, 0xC001, 0x3FFF, 0x4077, 0xBF89,\n};\n\n// 0x050099C8\nstatic const u16 mad_piano_seg5_animindex_050099C8[] = {\n    0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0003, 0x0001, 0x0004, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0007,\n    0x0001, 0x0005, 0x0001, 0x0000, 0x0001, 0x0006,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x05009A04\nstatic const struct Animation mad_piano_seg5_anim_05009A04 = {\n    0,\n    0,\n    0,\n    0,\n    0x64,\n    ANIMINDEX_NUMPARTS(mad_piano_seg5_animindex_050099C8),\n    mad_piano_seg5_animvalue_050099B8,\n    mad_piano_seg5_animindex_050099C8,\n    0,\n};\n"
  },
  {
    "path": "actors/mad_piano/anims/anim_05009AFC.inc.c",
    "content": "// 0x05009A1C\nstatic const s16 mad_piano_seg5_animvalue_05009A1C[] = {\n    0x0000, 0xFFEF, 0x01DC, 0x01EA, 0x01EE, 0x01CB, 0x019C, 0x0184,\n    0x019A, 0x01C7, 0x01E3, 0x01C8, 0x01A8, 0x01AD, 0x01BA, 0x01CA,\n    0x01D7, 0x00C4, 0xC001, 0x0000, 0x03F9, 0x0881, 0x0D05, 0x10F3,\n    0x13BA, 0x14C7, 0x11F7, 0x0B8D, 0x048E, 0x0000, 0x001F, 0x02CB,\n    0x047B, 0x0246, 0x3FFF, 0x4077, 0x0006, 0xFFA5, 0xFEBC, 0xFDA6,\n    0xFCBD, 0xFC5B, 0xFCA3, 0xFD69, 0xFE93, 0x0005, 0x0296, 0x05B9,\n    0x0741, 0x0561, 0x01E6, 0xF843, 0xF89B, 0xF986, 0xFADA, 0xFC6C,\n    0xFE12, 0x006A, 0x0370, 0x05FE, 0x06ED, 0x0496, 0x000D, 0xFC42,\n    0xFA23, 0xF8C1, 0xBF89, 0xBF89, 0xBF89, 0xBF89, 0xBF89, 0xBF89,\n    0xBF89, 0xBF89, 0xBF8A, 0xBF8A, 0xBF8A, 0xBF89, 0xBF89, 0xBF89,\n    0xBF89, 0x0000,\n};\n\n// 0x05009AC0\nstatic const u16 mad_piano_seg5_animindex_05009AC0[] = {\n    0x0001, 0x0001, 0x000F, 0x0002, 0x0001, 0x0011, 0x0001, 0x0012, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x000F, 0x0024, 0x000F, 0x0033, 0x000F, 0x0042,\n    0x0001, 0x0022, 0x0001, 0x0000, 0x0001, 0x0023,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000F, 0x0013,\n};\n\n// 0x05009AFC\nstatic const struct Animation mad_piano_seg5_anim_05009AFC = {\n    0,\n    0,\n    0,\n    0,\n    0x0F,\n    ANIMINDEX_NUMPARTS(mad_piano_seg5_animindex_05009AC0),\n    mad_piano_seg5_animvalue_05009A1C,\n    mad_piano_seg5_animindex_05009AC0,\n    0,\n};\n"
  },
  {
    "path": "actors/mad_piano/anims/data.inc.c",
    "content": "#include \"anim_05009A04.inc.c\"\n#include \"anim_05009AFC.inc.c\"\n"
  },
  {
    "path": "actors/mad_piano/anims/table.inc.c",
    "content": "// 0x05009B14\nconst struct Animation *const mad_piano_seg5_anims_05009B14[] = {\n    &mad_piano_seg5_anim_05009A04,\n    &mad_piano_seg5_anim_05009AFC,\n    NULL,\n};\n"
  },
  {
    "path": "actors/mad_piano/geo.inc.c",
    "content": "// 0x0C0001B4\nconst GeoLayout mad_piano_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 100),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mad_piano_seg5_dl_050098E8),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -141, -546, 218, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mad_piano_seg5_dl_05008CB0),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(), //! more close than open nodes\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/mad_piano/model.inc.c",
    "content": "// Mad Piano\n\n// Unreferenced light group\nUNUSED static const Lights1 mad_piano_lights_unused1 = gdSPDefLights1(\n    0x05, 0x04, 0x08,\n    0x14, 0x13, 0x20, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 mad_piano_lights_unused2 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 mad_piano_lights_unused3 = gdSPDefLights1(\n    0x2c, 0x2c, 0x2c,\n    0xb2, 0xb2, 0xb2, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 mad_piano_lights_unused4 = gdSPDefLights1(\n    0x30, 0x00, 0x00,\n    0xc3, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x05006AF0\nALIGNED8 static const Texture mad_piano_seg5_texture_05006AF0[] = {\n#include \"actors/mad_piano/mad_piano_tooth.rgba16.inc.c\"\n};\n\n// 0x050072F0\nALIGNED8 static const Texture mad_piano_seg5_texture_050072F0[] = {\n#include \"actors/mad_piano/mad_piano_body.rgba16.inc.c\"\n};\n\n// 0x050076F0\nALIGNED8 static const Texture mad_piano_seg5_texture_050076F0[] = {\n#include \"actors/mad_piano/mad_piano_keys_corner.rgba16.inc.c\"\n};\n\n// 0x05007AF0\nALIGNED8 static const Texture mad_piano_seg5_texture_05007AF0[] = {\n#include \"actors/mad_piano/mad_piano_mouth.rgba16.inc.c\"\n};\n\n// 0x05007EF0\nALIGNED8 static const Texture mad_piano_seg5_texture_05007EF0[] = {\n#include \"actors/mad_piano/mad_piano_keys.rgba16.inc.c\"\n};\n\n// 0x050082F0\nALIGNED8 static const Texture mad_piano_seg5_texture_050082F0[] = {\n#include \"actors/mad_piano/mad_piano_keys_edge.rgba16.inc.c\"\n};\n\n// 0x050086F0\nstatic const Lights1 mad_piano_seg5_lights_050086F0 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05008708\nstatic const Vtx mad_piano_seg5_vertex_05008708[] = {\n    {{{     0,      0,    609}, 0, {    17,    776}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{   834,     -2,   -523}, 0, {   529,    420}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{   626,     -1,   -740}, 0, {   566,    662}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{     0,      0,    609}, 0, {    17,    776}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   201,      0,   -740}, 0, {   495,   1020}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,      0,   -523}, 0, {   390,   1124}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   201,      0,   -740}, 0, {   495,   1020}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  1136,     -2,    140}, 0, {   361,    -38}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{   887,     -2,    -47}, 0, {   381,    228}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  1136,     -2,    609}, 0, {   206,   -184}, {0x00, 0x7e, 0x00, 0xff}}},\n};\n\n// 0x050087A8\nstatic const Vtx mad_piano_seg5_vertex_050087A8[] = {\n    {{{   641,     -4,    600}, 0, {  -344,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   721,   -189,    600}, 0, {   920,    884}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   802,     -5,    600}, 0, {   536,   -572}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     2,     -2,    600}, 0, {   998,    390}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    83,   -135,    600}, 0, {    22,    878}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   163,     -3,    600}, 0, {   136,   -574}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   160,     -3,    600}, 0, {   -78,    226}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   241,   -164,    600}, 0, {  1000,    906}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   321,     -3,    600}, 0, {   876,   -476}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   320,     -3,    600}, 0, {  -370,    262}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   401,   -189,    600}, 0, {  1036,    966}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   482,     -4,    600}, 0, {   588,   -652}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   479,     -4,    600}, 0, {  -184,    116}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   559,   -211,    600}, 0, {   914,    830}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   640,     -4,    600}, 0, {   566,   -574}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x05008898\nstatic const Vtx mad_piano_seg5_vertex_05008898[] = {\n    {{{  1126,     -6,    337}, 0, {    68,    134}, {0x7e, 0xf3, 0x00, 0xff}}},\n    {{{  1110,   -157,    267}, 0, {   728,    892}, {0x7e, 0xf3, 0x00, 0xff}}},\n    {{{  1126,     -6,    198}, 0, {   726,   -548}, {0x7e, 0xf3, 0x00, 0xff}}},\n    {{{   799,     -5,    600}, 0, {    14,    114}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   880,   -164,    600}, 0, {   904,    824}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   961,     -5,    600}, 0, {   868,   -900}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   959,     -5,    600}, 0, {   -42,    174}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1040,   -156,    600}, 0, {   982,    896}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1120,     -5,    600}, 0, {   974,   -680}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1126,     -6,    598}, 0, {   -22,    132}, {0x7e, 0xf3, 0x00, 0xff}}},\n    {{{  1110,   -159,    541}, 0, {   690,    890}, {0x7e, 0xf3, 0x00, 0xff}}},\n    {{{  1126,     -6,    472}, 0, {   574,   -626}, {0x7e, 0xf3, 0x00, 0xff}}},\n    {{{  1126,     -6,    475}, 0, {   -38,    232}, {0x7e, 0xf3, 0x00, 0xff}}},\n    {{{  1110,   -152,    405}, 0, {   764,    754}, {0x7e, 0xf3, 0x00, 0xff}}},\n    {{{  1126,     -6,    336}, 0, {   650,   -482}, {0x7e, 0xf3, 0x00, 0xff}}},\n};\n\n// 0x05008988\nstatic const Vtx mad_piano_seg5_vertex_05008988[] = {\n    {{{   435,     -4,   -728}, 0, {    90,    138}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   354,   -123,   -728}, 0, {   858,    806}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   274,     -3,   -728}, 0, {   978,   -868}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1126,     -6,    201}, 0, {   120,    -18}, {0x6b, 0x03, 0xbc, 0xff}}},\n    {{{  1097,   -151,    148}, 0, {   816,    786}, {0x6b, 0x03, 0xbc, 0xff}}},\n    {{{  1059,     -5,     96}, 0, {   662,   -828}, {0x6b, 0x03, 0xbc, 0xff}}},\n    {{{  1059,     -5,     97}, 0, {   182,    198}, {0x3c, 0x05, 0x91, 0xff}}},\n    {{{  1007,   -140,     62}, 0, {   808,    914}, {0x3c, 0x05, 0x91, 0xff}}},\n    {{{   933,     -5,     28}, 0, {   958,   -596}, {0x3c, 0x05, 0x91, 0xff}}},\n    {{{   935,     -5,     29}, 0, {   -62,    182}, {0x67, 0xfe, 0xb8, 0xff}}},\n    {{{   895,   -134,    -23}, 0, {   834,    682}, {0x67, 0xfe, 0xb8, 0xff}}},\n    {{{   860,     -5,    -78}, 0, {   694,   -694}, {0x67, 0xfe, 0xb8, 0xff}}},\n    {{{   860,     -5,    -78}, 0, {   128,    310}, {0x7e, 0x01, 0xf3, 0xff}}},\n    {{{   854,   -119,   -147}, 0, {   746,    928}, {0x7e, 0x01, 0xf3, 0xff}}},\n    {{{   845,     -5,   -216}, 0, {   712,   -528}, {0x7e, 0x01, 0xf3, 0xff}}},\n};\n\n// 0x05008A78\nstatic const Vtx mad_piano_seg5_vertex_05008A78[] = {\n    {{{   845,     -5,   -216}, 0, {    10,    306}, {0x7e, 0x02, 0xf5, 0xff}}},\n    {{{   841,   -123,   -288}, 0, {   828,    886}, {0x7e, 0x02, 0xf5, 0xff}}},\n    {{{   831,     -5,   -368}, 0, {   878,   -954}, {0x7e, 0x02, 0xf5, 0xff}}},\n    {{{   594,     -4,   -728}, 0, {  -258,    222}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   513,   -123,   -728}, 0, {   840,    686}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   433,     -3,   -728}, 0, {   838,   -766}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   707,     -4,   -612}, 0, {   -84,    164}, {0x5a, 0x00, 0xa8, 0xff}}},\n    {{{   651,   -123,   -670}, 0, {   866,    834}, {0x5a, 0x00, 0xa8, 0xff}}},\n    {{{   594,     -4,   -728}, 0, {   992,   -908}, {0x5a, 0x00, 0xa8, 0xff}}},\n    {{{   817,     -5,   -501}, 0, {  -268,    128}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{   759,   -123,   -559}, 0, {   872,    820}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{   707,     -4,   -612}, 0, {   826,   -972}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{   831,     -5,   -368}, 0, {   166,     88}, {0x7e, 0x02, 0xf3, 0xff}}},\n    {{{   828,   -123,   -421}, 0, {   836,    872}, {0x7e, 0x02, 0xf3, 0xff}}},\n    {{{   817,     -5,   -501}, 0, {   818,   -724}, {0x7e, 0x02, 0xf3, 0xff}}},\n};\n\n// 0x05008B68 - 0x05008BD0\nconst Gfx mad_piano_seg5_dl_05008B68[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mad_piano_seg5_texture_050072F0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mad_piano_seg5_lights_050086F0.l, 1),\n    gsSPLight(&mad_piano_seg5_lights_050086F0.a, 2),\n    gsSPVertex(mad_piano_seg5_vertex_05008708, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  2,  6, 0x0,  0,  7,  8, 0x0),\n    gsSP2Triangles( 0,  8,  1, 0x0,  0,  9,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05008BD0 - 0x05008CB0\nconst Gfx mad_piano_seg5_dl_05008BD0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mad_piano_seg5_texture_05006AF0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(mad_piano_seg5_vertex_050087A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(mad_piano_seg5_vertex_05008898, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(mad_piano_seg5_vertex_05008988, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(mad_piano_seg5_vertex_05008A78, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05008CB0 - 0x05008D40\nconst Gfx mad_piano_seg5_dl_05008CB0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(mad_piano_seg5_dl_05008B68),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(mad_piano_seg5_dl_05008BD0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x05008D40\nstatic const Lights1 mad_piano_seg5_lights_05008D40 = gdSPDefLights1(\n    0x3d, 0x3d, 0x3d,\n    0xcc, 0xcc, 0xcc, 0x28, 0x28, 0x28\n);\n\n// 0x05008D58\nstatic const Lights1 mad_piano_seg5_lights_05008D58 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05008D70\nstatic const Lights1 mad_piano_seg5_lights_05008D70 = gdSPDefLights1(\n    0x26, 0x26, 0x26,\n    0x7f, 0x7f, 0x7f, 0x28, 0x28, 0x28\n);\n\n// 0x05008D88\nstatic const Lights1 mad_piano_seg5_lights_05008D88 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x05008DA0\nstatic const Vtx mad_piano_seg5_vertex_05008DA0[] = {\n    {{{   454,    592,     18}, 0, {   262,    962}, {0x2d, 0x74, 0x17, 0xff}}},\n    {{{   -14,    586,    220}, 0, {   485,    588}, {0xfe, 0x09, 0x7e, 0xff}}},\n    {{{   454,    592,    220}, 0, {   485,    962}, {0x92, 0x00, 0x3d, 0xff}}},\n    {{{   454,    592,     18}, 0, {   411,   -102}, {0x2d, 0x74, 0x17, 0xff}}},\n    {{{   454,    592,    220}, 0, {   160,    118}, {0x92, 0x00, 0x3d, 0xff}}},\n    {{{   467,   -543,    220}, 0, {   160,   1024}, {0x70, 0xfe, 0x3a, 0xff}}},\n    {{{   467,   -543,     18}, 0, {   411,    804}, {0x23, 0x9b, 0x43, 0xff}}},\n    {{{  -199,    336,    -92}, 0, {   138,    418}, {0xda, 0x5f, 0xb6, 0xff}}},\n    {{{  -674,    277,    220}, 0, {   485,     36}, {0xfb, 0x08, 0x7e, 0xff}}},\n    {{{  -199,    336,    220}, 0, {   485,    418}, {0xff, 0x0b, 0x7e, 0xff}}},\n    {{{  -674,    277,    -92}, 0, {   138,     36}, {0xc9, 0x58, 0xb8, 0xff}}},\n    {{{   -14,    586,    -92}, 0, {   138,    588}, {0xce, 0x62, 0xc3, 0xff}}},\n    {{{   454,    592,    -92}, 0, {   138,    962}, {0x00, 0x38, 0x8f, 0xff}}},\n};\n\n// 0x05008E70\nstatic const Vtx mad_piano_seg5_vertex_05008E70[] = {\n    {{{   393,    432,   -372}, 0, {   -64,    714}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{   444,    347,    -92}, 0, {   456,    672}, {0x3d, 0x9a, 0xd6, 0xff}}},\n    {{{   294,    431,    -92}, 0, {   428,    926}, {0x89, 0xff, 0xd6, 0xff}}},\n    {{{  -598,   -135,   -372}, 0, {   -21,    860}, {0xff, 0x00, 0x82, 0xff}}},\n    {{{  -549,    -48,    -92}, 0, {   446,    702}, {0x3a, 0x68, 0xd6, 0xff}}},\n    {{{  -547,   -221,    -92}, 0, {   456,    934}, {0x3c, 0x9a, 0xd6, 0xff}}},\n    {{{  -598,   -135,   -372}, 0, {   -37,    724}, {0xff, 0x00, 0x82, 0xff}}},\n    {{{  -547,   -221,    -92}, 0, {   417,    570}, {0x3c, 0x9a, 0xd6, 0xff}}},\n    {{{  -697,   -136,    -92}, 0, {   425,    938}, {0x89, 0xff, 0xd6, 0xff}}},\n    {{{  -598,   -135,   -372}, 0, {     0,    736}, {0xff, 0x00, 0x82, 0xff}}},\n    {{{  -697,   -136,    -92}, 0, {   428,    620}, {0x89, 0xff, 0xd6, 0xff}}},\n    {{{  -549,    -48,    -92}, 0, {   422,    816}, {0x3a, 0x68, 0xd6, 0xff}}},\n    {{{   393,    432,   -372}, 0, {   -42,    728}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{   442,    519,    -92}, 0, {   498,    594}, {0x3a, 0x68, 0xd6, 0xff}}},\n    {{{   444,    347,    -92}, 0, {   493,    952}, {0x3d, 0x9a, 0xd6, 0xff}}},\n};\n\n// 0x05008F60\nstatic const Vtx mad_piano_seg5_vertex_05008F60[] = {\n    {{{  -884,   -357,    -92}, 0, {     0,     50}, {0x9c, 0xc0, 0xd6, 0xff}}},\n    {{{  -665,   -556,    220}, 0, {   488,    286}, {0x05, 0xed, 0x7d, 0xff}}},\n    {{{  -884,   -357,    220}, 0, {   488,     50}, {0xf5, 0xfd, 0x7e, 0xff}}},\n    {{{   393,    432,   -372}, 0, {    82,    738}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{   294,    431,    -92}, 0, {   472,    582}, {0x89, 0xff, 0xd6, 0xff}}},\n    {{{   442,    519,    -92}, 0, {   462,    838}, {0x3a, 0x68, 0xd6, 0xff}}},\n    {{{   403,   -384,   -372}, 0, {   -36,    732}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{   451,   -297,    -92}, 0, {   450,    628}, {0x3a, 0x68, 0xd6, 0xff}}},\n    {{{   453,   -470,    -92}, 0, {   441,    938}, {0x3c, 0x99, 0xd6, 0xff}}},\n    {{{   403,   -384,   -372}, 0, {   -58,    714}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{   453,   -470,    -92}, 0, {   495,    672}, {0x3c, 0x99, 0xd6, 0xff}}},\n    {{{   303,   -385,    -92}, 0, {   505,    990}, {0x89, 0xff, 0xd6, 0xff}}},\n    {{{   403,   -384,   -372}, 0, {   -47,    688}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{   303,   -385,    -92}, 0, {   448,    628}, {0x89, 0xff, 0xd6, 0xff}}},\n    {{{   451,   -297,    -92}, 0, {   480,    948}, {0x3a, 0x68, 0xd6, 0xff}}},\n};\n\n// 0x05009050\nstatic const Vtx mad_piano_seg5_vertex_05009050[] = {\n    {{{  -674,    277,    -92}, 0, {   138,     36}, {0xc9, 0x58, 0xb8, 0xff}}},\n    {{{  -889,     67,    220}, 0, {   485,   -156}, {0xf5, 0x02, 0x7e, 0xff}}},\n    {{{  -674,    277,    220}, 0, {   485,     36}, {0xfb, 0x08, 0x7e, 0xff}}},\n    {{{  -884,   -357,    -92}, 0, {     0,     50}, {0x9c, 0xc0, 0xd6, 0xff}}},\n    {{{  -665,   -556,    -92}, 0, {     0,    286}, {0xf5, 0xbe, 0x95, 0xff}}},\n    {{{  -665,   -556,    220}, 0, {   488,    286}, {0x05, 0xed, 0x7d, 0xff}}},\n    {{{  -889,     67,    -92}, 0, {   -60,    754}, {0x9d, 0x19, 0xb6, 0xff}}},\n    {{{  -884,   -357,    220}, 0, {   477,    972}, {0xf5, 0xfd, 0x7e, 0xff}}},\n    {{{  -889,     67,    220}, 0, {   459,    754}, {0xf5, 0x02, 0x7e, 0xff}}},\n    {{{  -884,   -357,    -92}, 0, {   -42,    972}, {0x9c, 0xc0, 0xd6, 0xff}}},\n    {{{  -665,   -556,    -92}, 0, {    32,    596}, {0xf5, 0xbe, 0x95, 0xff}}},\n    {{{   467,   -543,    220}, 0, {   422,    990}, {0x70, 0xfe, 0x3a, 0xff}}},\n    {{{  -665,   -556,    220}, 0, {   422,    596}, {0x05, 0xed, 0x7d, 0xff}}},\n    {{{   467,   -543,     18}, 0, {   171,    990}, {0x23, 0x9b, 0x43, 0xff}}},\n    {{{   467,   -543,    -92}, 0, {    32,    990}, {0x01, 0x97, 0xba, 0xff}}},\n    {{{  -889,     67,    -92}, 0, {   138,   -156}, {0x9d, 0x19, 0xb6, 0xff}}},\n};\n\n// 0x05009150\nstatic const Vtx mad_piano_seg5_vertex_05009150[] = {\n    {{{  -889,     67,    220}, 0, {  -124,     16}, {0xf5, 0x02, 0x7e, 0xff}}},\n    {{{  -855,     64,     46}, 0, {     0,    936}, {0x5a, 0xea, 0x56, 0xff}}},\n    {{{  -655,    253,     38}, 0, {   884,    936}, {0x33, 0xb0, 0x53, 0xff}}},\n    {{{   -14,    586,    220}, 0, {   -53,     10}, {0xfe, 0x09, 0x7e, 0xff}}},\n    {{{   -10,    556,     46}, 0, {   -33,    950}, {0x37, 0xb5, 0x55, 0xff}}},\n    {{{   422,    560,     46}, 0, {  1395,    942}, {0xd3, 0xa3, 0x48, 0xff}}},\n    {{{   454,    592,    220}, 0, {  1493,     -2}, {0x92, 0x00, 0x3d, 0xff}}},\n    {{{  -199,    336,    220}, 0, {     3,    -12}, {0xff, 0x0b, 0x7e, 0xff}}},\n    {{{   -10,    556,     46}, 0, {   917,    952}, {0x37, 0xb5, 0x55, 0xff}}},\n    {{{   -14,    586,    220}, 0, {   976,      6}, {0xfe, 0x09, 0x7e, 0xff}}},\n    {{{  -186,    307,     38}, 0, {   -34,    982}, {0x22, 0xa9, 0x54, 0xff}}},\n    {{{  -674,    277,    220}, 0, {   -87,    -28}, {0xfb, 0x08, 0x7e, 0xff}}},\n    {{{  -655,    253,     38}, 0, {     0,    990}, {0x33, 0xb0, 0x53, 0xff}}},\n    {{{  -186,    307,     38}, 0, {  1537,    990}, {0x22, 0xa9, 0x54, 0xff}}},\n    {{{  -199,    336,    220}, 0, {  1506,    -30}, {0xff, 0x0b, 0x7e, 0xff}}},\n};\n\n// 0x05009240\nstatic const Vtx mad_piano_seg5_vertex_05009240[] = {\n    {{{   467,   -543,    220}, 0, {  -137,      6}, {0x70, 0xfe, 0x3a, 0xff}}},\n    {{{  -666,   -525,     46}, 0, {  3633,    936}, {0x1c, 0x6c, 0x3b, 0xff}}},\n    {{{  -665,   -556,    220}, 0, {  3631,      6}, {0x05, 0xed, 0x7d, 0xff}}},\n    {{{  -889,     67,    220}, 0, {  -124,     16}, {0xf5, 0x02, 0x7e, 0xff}}},\n    {{{  -655,    253,     38}, 0, {   884,    936}, {0x33, 0xb0, 0x53, 0xff}}},\n    {{{  -674,    277,    220}, 0, {   876,      0}, {0xfb, 0x08, 0x7e, 0xff}}},\n    {{{  -884,   -357,    220}, 0, {   -99,      4}, {0xf5, 0xfd, 0x7e, 0xff}}},\n    {{{  -855,     64,     46}, 0, {  1302,    936}, {0x5a, 0xea, 0x56, 0xff}}},\n    {{{  -889,     67,    220}, 0, {  1313,      4}, {0xf5, 0x02, 0x7e, 0xff}}},\n    {{{  -850,   -336,     46}, 0, {     0,    936}, {0x4f, 0x30, 0x55, 0xff}}},\n    {{{  -665,   -556,    220}, 0, {   -90,     14}, {0x05, 0xed, 0x7d, 0xff}}},\n    {{{  -850,   -336,     46}, 0, {   626,    936}, {0x4f, 0x30, 0x55, 0xff}}},\n    {{{  -884,   -357,    220}, 0, {   648,      4}, {0xf5, 0xfd, 0x7e, 0xff}}},\n    {{{  -666,   -525,     46}, 0, {     0,    936}, {0x1c, 0x6c, 0x3b, 0xff}}},\n    {{{   435,   -512,     46}, 0, {     0,    936}, {0xdc, 0x12, 0x78, 0xff}}},\n};\n\n// 0x05009330\nstatic const Vtx mad_piano_seg5_vertex_05009330[] = {\n    {{{   454,    592,    220}, 0, {  -204,      6}, {0x92, 0x00, 0x3d, 0xff}}},\n    {{{   435,   -512,     46}, 0, {  5439,   1010}, {0xdc, 0x12, 0x78, 0xff}}},\n    {{{   467,   -543,    220}, 0, {  5605,     44}, {0x70, 0xfe, 0x3a, 0xff}}},\n    {{{   422,    560,     46}, 0, {   -44,    978}, {0xd3, 0xa3, 0x48, 0xff}}},\n    {{{   435,   -512,     46}, 0, {    67,    870}, {0xdc, 0x12, 0x78, 0xff}}},\n    {{{  -655,    253,     38}, 0, {   340,    166}, {0x33, 0xb0, 0x53, 0xff}}},\n    {{{  -855,     64,     46}, 0, {   406,    246}, {0x5a, 0xea, 0x56, 0xff}}},\n    {{{  -186,    307,     38}, 0, {   204,    224}, {0x22, 0xa9, 0x54, 0xff}}},\n    {{{  -850,   -336,     46}, 0, {   425,    502}, {0x4f, 0x30, 0x55, 0xff}}},\n    {{{  -666,   -525,     46}, 0, {   382,    658}, {0x1c, 0x6c, 0x3b, 0xff}}},\n    {{{   422,    560,     46}, 0, {    18,    184}, {0xd3, 0xa3, 0x48, 0xff}}},\n    {{{   -10,    556,     46}, 0, {   141,    100}, {0x37, 0xb5, 0x55, 0xff}}},\n};\n\n// 0x050093F0\nstatic const Vtx mad_piano_seg5_vertex_050093F0[] = {\n    {{{   678,   -541,    -92}, 0, {     0,    479}, {0x55, 0xd7, 0xac, 0xff}}},\n    {{{   665,    594,     18}, 0, {  4504,    -77}, {0x54, 0x2b, 0x54, 0xff}}},\n    {{{   678,   -541,     18}, 0, {     0,    -77}, {0x34, 0x99, 0x33, 0xff}}},\n    {{{   665,    594,    -92}, 0, {  4504,    479}, {0x32, 0x68, 0xcd, 0xff}}},\n};\n\n// 0x05009430\nstatic const Vtx mad_piano_seg5_vertex_05009430[] = {\n    {{{   467,   -543,     18}, 0, {   -40,   -224}, {0x23, 0x9b, 0x43, 0xff}}},\n    {{{   665,    594,     18}, 0, {  4504,    436}, {0x54, 0x2b, 0x54, 0xff}}},\n    {{{   454,    592,     18}, 0, {  4494,   -268}, {0x2d, 0x74, 0x17, 0xff}}},\n    {{{   678,   -541,     18}, 0, {     0,    479}, {0x34, 0x99, 0x33, 0xff}}},\n};\n\n// 0x05009470\nstatic const Vtx mad_piano_seg5_vertex_05009470[] = {\n    {{{   454,    592,     18}, 0, {   972,    -27}, {0x2d, 0x74, 0x17, 0xff}}},\n    {{{   665,    594,     18}, 0, {     0,    -27}, {0x54, 0x2b, 0x54, 0xff}}},\n    {{{   665,    594,    -92}, 0, {     0,    479}, {0x32, 0x68, 0xcd, 0xff}}},\n    {{{   454,    592,    -92}, 0, {   972,    479}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{   467,   -543,    -92}, 0, {   942,    479}, {0x01, 0x97, 0xba, 0xff}}},\n    {{{   678,   -541,     18}, 0, {     0,    -27}, {0x34, 0x99, 0x33, 0xff}}},\n    {{{   467,   -543,     18}, 0, {   942,    -27}, {0x23, 0x9b, 0x43, 0xff}}},\n    {{{   678,   -541,    -92}, 0, {     0,    479}, {0x55, 0xd7, 0xac, 0xff}}},\n};\n\n// 0x050094F0\nstatic const Vtx mad_piano_seg5_vertex_050094F0[] = {\n    {{{  -665,   -556,    -92}, 0, {     0,      0}, {0xf5, 0xbe, 0x95, 0xff}}},\n    {{{   -14,    586,    -92}, 0, {     0,      0}, {0xce, 0x62, 0xc3, 0xff}}},\n    {{{   454,    592,    -92}, 0, {     0,      0}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{   467,   -543,    -92}, 0, {     0,      0}, {0x01, 0x97, 0xba, 0xff}}},\n    {{{   678,   -541,    -92}, 0, {     0,      0}, {0x55, 0xd7, 0xac, 0xff}}},\n    {{{   665,    594,    -92}, 0, {     0,      0}, {0x32, 0x68, 0xcd, 0xff}}},\n    {{{  -199,    336,    -92}, 0, {     0,      0}, {0xda, 0x5f, 0xb6, 0xff}}},\n    {{{  -674,    277,    -92}, 0, {     0,      0}, {0xc9, 0x58, 0xb8, 0xff}}},\n    {{{  -889,     67,    -92}, 0, {     0,      0}, {0x9d, 0x19, 0xb6, 0xff}}},\n    {{{  -884,   -357,    -92}, 0, {     0,      0}, {0x9c, 0xc0, 0xd6, 0xff}}},\n};\n\n// 0x05009590 - 0x050096C8\nconst Gfx mad_piano_seg5_dl_05009590[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mad_piano_seg5_texture_050072F0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mad_piano_seg5_lights_05008D40.l, 1),\n    gsSPLight(&mad_piano_seg5_lights_05008D40.a, 2),\n    gsSPVertex(mad_piano_seg5_vertex_05008DA0, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11,  7,  9, 0x0),\n    gsSP2Triangles(11,  9,  1, 0x0,  0, 12, 11, 0x0),\n    gsSP1Triangle( 0, 11,  1, 0x0),\n    gsSPLight(&mad_piano_seg5_lights_05008D58.l, 1),\n    gsSPLight(&mad_piano_seg5_lights_05008D58.a, 2),\n    gsSPVertex(mad_piano_seg5_vertex_05008E70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(mad_piano_seg5_vertex_05008F60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(mad_piano_seg5_vertex_05009050, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP2Triangles(10, 14, 13, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050096C8 - 0x050097B0\nconst Gfx mad_piano_seg5_dl_050096C8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mad_piano_seg5_texture_05007AF0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(mad_piano_seg5_vertex_05009150, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(mad_piano_seg5_vertex_05009240, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(mad_piano_seg5_vertex_05009330, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 4,  6,  8, 0x0,  4,  8,  9, 0x0),\n    gsSP2Triangles( 4, 10, 11, 0x0,  4, 11,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050097B0 - 0x050097F8\nconst Gfx mad_piano_seg5_dl_050097B0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mad_piano_seg5_texture_050082F0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mad_piano_seg5_lights_05008D70.l, 1),\n    gsSPLight(&mad_piano_seg5_lights_05008D70.a, 2),\n    gsSPVertex(mad_piano_seg5_vertex_050093F0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050097F8 - 0x05009840\nconst Gfx mad_piano_seg5_dl_050097F8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mad_piano_seg5_texture_05007EF0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mad_piano_seg5_lights_05008D40.l, 1),\n    gsSPLight(&mad_piano_seg5_lights_05008D40.a, 2),\n    gsSPVertex(mad_piano_seg5_vertex_05009430, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05009840 - 0x05009888\nconst Gfx mad_piano_seg5_dl_05009840[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mad_piano_seg5_texture_050076F0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(mad_piano_seg5_vertex_05009470, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05009888 - 0x050098E8\nconst Gfx mad_piano_seg5_dl_05009888[] = {\n    gsSPLight(&mad_piano_seg5_lights_05008D88.l, 1),\n    gsSPLight(&mad_piano_seg5_lights_05008D88.a, 2),\n    gsSPVertex(mad_piano_seg5_vertex_050094F0, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 2,  4,  3, 0x0,  2,  5,  4, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  0,  7,  6, 0x0),\n    gsSP2Triangles( 0,  8,  7, 0x0,  0,  9,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050098E8 - 0x050099B8\nconst Gfx mad_piano_seg5_dl_050098E8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(mad_piano_seg5_dl_05009590),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(mad_piano_seg5_dl_050096C8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 4, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (16 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(mad_piano_seg5_dl_050097B0),\n    gsSPDisplayList(mad_piano_seg5_dl_050097F8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 4, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (16 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(mad_piano_seg5_dl_05009840),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(mad_piano_seg5_dl_05009888),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/manta/anims/anim_05008CFC.inc.c",
    "content": "// 0x05006CA0\nstatic const s16 manta_seg5_animvalue_05006CA0[] = {\n    0x0000, 0x0081, 0x0080, 0x0080, 0x0080, 0x007F, 0x007F, 0x007E,\n    0x007E, 0x007D, 0x007C, 0x007B, 0x007B, 0x007A, 0x0079, 0x0078,\n    0x0077, 0x0076, 0x0075, 0x0073, 0x0072, 0x0071, 0x0070, 0x006F,\n    0x006D, 0x006C, 0x006A, 0x0069, 0x0068, 0x0066, 0x0065, 0x0063,\n    0x0062, 0x0060, 0x005E, 0x005D, 0x005B, 0x005A, 0x0058, 0x0056,\n    0x0055, 0x0053, 0x0051, 0x0050, 0x004E, 0x004C, 0x004A, 0x0049,\n    0x0047, 0x0045, 0x0044, 0x0042, 0x0040, 0x003E, 0x003D, 0x003B,\n    0x0039, 0x0038, 0x0036, 0x0034, 0x0033, 0x0031, 0x0030, 0x002E,\n    0x002C, 0x002B, 0x0029, 0x0028, 0x0027, 0x0025, 0x0024, 0x0022,\n    0x0021, 0x0020, 0x001F, 0x001D, 0x001C, 0x001B, 0x001A, 0x0019,\n    0x0018, 0x0017, 0x0016, 0x0015, 0x0014, 0x0013, 0x0013, 0x0012,\n    0x0011, 0x0011, 0x0010, 0x0010, 0x000F, 0x000F, 0x000F, 0x000F,\n    0x000F, 0x000E, 0x000E, 0x000E, 0x000F, 0x000F, 0x000F, 0x000F,\n    0x0010, 0x0010, 0x0011, 0x0011, 0x0012, 0x0013, 0x0013, 0x0014,\n    0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C,\n    0x001D, 0x001E, 0x0020, 0x0021, 0x0022, 0x0024, 0x0025, 0x0026,\n    0x0028, 0x0029, 0x002B, 0x002C, 0x002E, 0x002F, 0x0031, 0x0033,\n    0x0034, 0x0036, 0x0037, 0x0039, 0x003B, 0x003D, 0x003E, 0x0040,\n    0x0042, 0x0043, 0x0045, 0x0047, 0x0048, 0x004A, 0x004C, 0x004E,\n    0x004F, 0x0051, 0x0053, 0x0054, 0x0056, 0x0058, 0x0059, 0x005B,\n    0x005D, 0x005E, 0x0060, 0x0061, 0x0063, 0x0064, 0x0066, 0x0067,\n    0x0069, 0x006A, 0x006C, 0x006D, 0x006E, 0x0070, 0x0071, 0x0072,\n    0x0073, 0x0074, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007A,\n    0x007B, 0x007C, 0x007D, 0x007D, 0x007E, 0x007F, 0x007F, 0x0080,\n    0x0080, 0x0080, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081, 0x0081,\n    0xFE8C, 0xC001, 0x2909, 0x290E, 0x2907, 0x28F2, 0x28CF, 0x289F,\n    0x2862, 0x2819, 0x27C3, 0x2761, 0x26F3, 0x2679, 0x25F5, 0x2566,\n    0x24CC, 0x2428, 0x237B, 0x22C3, 0x2203, 0x2139, 0x2067, 0x1F8D,\n    0x1EAA, 0x1DC0, 0x1CCF, 0x1BD6, 0x1AD7, 0x19D2, 0x18C6, 0x17B4,\n    0x169D, 0x1581, 0x1460, 0x133B, 0x1211, 0x10E3, 0x0FB2, 0x0E7D,\n    0x0D45, 0x0C0B, 0x0ACF, 0x0990, 0x0850, 0x070E, 0x05CB, 0x0487,\n    0x0343, 0x01FF, 0x00BB, 0xFF78, 0xFE35, 0xFCF3, 0xFBB3, 0xFA74,\n    0xF938, 0xF7FD, 0xF6C6, 0xF591, 0xF460, 0xF332, 0xF208, 0xF0E3,\n    0xEFC2, 0xEEA6, 0xED8F, 0xEC7D, 0xEB71, 0xEA6C, 0xE96C, 0xE874,\n    0xE783, 0xE699, 0xE5B6, 0xE4DC, 0xE40A, 0xE340, 0xE280, 0xE1C8,\n    0xE11B, 0xE077, 0xDFDD, 0xDF4E, 0xDEC9, 0xDE50, 0xDDE2, 0xDD80,\n    0xDD2A, 0xDCE1, 0xDCA4, 0xDC74, 0xDC51, 0xDC3C, 0xDC35, 0xDC3A,\n    0xDC4A, 0xDC63, 0xDC87, 0xDCB5, 0xDCEB, 0xDD2C, 0xDD75, 0xDDC8,\n    0xDE23, 0xDE87, 0xDEF3, 0xDF67, 0xDFE3, 0xE067, 0xE0F2, 0xE185,\n    0xE21F, 0xE2C0, 0xE368, 0xE416, 0xE4CB, 0xE585, 0xE646, 0xE70D,\n    0xE7D9, 0xE8AA, 0xE981, 0xEA5C, 0xEB3D, 0xEC22, 0xED0B, 0xEDF8,\n    0xEEEA, 0xEFDF, 0xF0D8, 0xF1D4, 0xF2D3, 0xF3D5, 0xF4DA, 0xF5E2,\n    0xF6EC, 0xF7F8, 0xF906, 0xFA16, 0xFB27, 0xFC3A, 0xFD4E, 0xFE63,\n    0xFF79, 0x008E, 0x01A5, 0x02BC, 0x03D3, 0x04EA, 0x0600, 0x0715,\n    0x082A, 0x093E, 0x0A51, 0x0B62, 0x0C72, 0x0D7F, 0x0E8B, 0x0F95,\n    0x109C, 0x11A0, 0x12A2, 0x13A1, 0x149D, 0x1595, 0x1689, 0x177A,\n    0x1867, 0x194F, 0x1A33, 0x1B13, 0x1BEE, 0x1CC3, 0x1D94, 0x1E5F,\n    0x1F25, 0x1FE4, 0x209E, 0x2152, 0x21FF, 0x22A5, 0x2345, 0x23DE,\n    0x2470, 0x24FA, 0x257C, 0x25F7, 0x266A, 0x26D5, 0x2737, 0x2791,\n    0x27E2, 0x282A, 0x2869, 0x289E, 0x28CA, 0x28EC, 0x2904, 0x2912,\n    0x2915, 0x043E, 0x03A8, 0x0312, 0x027C, 0x01E6, 0x014F, 0x00B8,\n    0x0022, 0xFF8C, 0xFEF6, 0xFE60, 0xFDCB, 0xFD35, 0xFCA1, 0xFC0D,\n    0xFB79, 0xFAE6, 0xFA54, 0xF9C3, 0xF933, 0xF8A4, 0xF816, 0xF78A,\n    0xF6FE, 0xF674, 0xF5EC, 0xF564, 0xF4DF, 0xF45B, 0xF3D9, 0xF358,\n    0xF2DA, 0xF25E, 0xF1E3, 0xF16B, 0xF0F5, 0xF081, 0xF00F, 0xEFA0,\n    0xEF34, 0xEECA, 0xEE62, 0xEDFE, 0xED9C, 0xED3D, 0xECE1, 0xEC88,\n    0xEC32, 0xEBE0, 0xEB91, 0xEB45, 0xEAFC, 0xEAB7, 0xEA76, 0xEA38,\n    0xE9FE, 0xE9C8, 0xE996, 0xE967, 0xE93D, 0xE917, 0xE8F5, 0xE8D7,\n    0xE8BE, 0xE8A9, 0xE899, 0xE88D, 0xE886, 0xE883, 0xE88A, 0xE89D,\n    0xE8BD, 0xE8E9, 0xE921, 0xE964, 0xE9B2, 0xEA0B, 0xEA6F, 0xEADC,\n    0xEB53, 0xEBD4, 0xEC5D, 0xECF0, 0xED8A, 0xEE2C, 0xEED6, 0xEF88,\n    0xF040, 0xF0FE, 0xF1C3, 0xF28E, 0xF35E, 0xF434, 0xF50E, 0xF5ED,\n    0xF6D0, 0xF7B6, 0xF8A0, 0xF98D, 0xFA7D, 0xFB6F, 0xFC64, 0xFD59,\n    0xFE51, 0xFF49, 0x0041, 0x013A, 0x0233, 0x032B, 0x0423, 0x051A,\n    0x060F, 0x0703, 0x07F4, 0x08E3, 0x09CF, 0x0AB7, 0x0B9D, 0x0C7E,\n    0x0D5B, 0x0E33, 0x0F07, 0x0FD5, 0x109E, 0x1160, 0x121C, 0x12D2,\n    0x1380, 0x1427, 0x14C7, 0x155E, 0x15ED, 0x1673, 0x16F0, 0x1763,\n    0x17CD, 0x182C, 0x1881, 0x18CB, 0x190A, 0x193D, 0x1964, 0x197F,\n    0x198D, 0x198F, 0x1987, 0x197B, 0x196A, 0x1955, 0x193B, 0x191D,\n    0x18FB, 0x18D5, 0x18AA, 0x187B, 0x1849, 0x1812, 0x17D8, 0x179A,\n    0x1758, 0x1713, 0x16CA, 0x167E, 0x162E, 0x15DC, 0x1586, 0x152C,\n    0x14D0, 0x1471, 0x140F, 0x13AA, 0x1343, 0x12D9, 0x126C, 0x11FC,\n    0x118B, 0x1117, 0x10A0, 0x1028, 0x0FAD, 0x0F31, 0x0EB2, 0x0E31,\n    0x0DAF, 0x0D2B, 0x0CA5, 0x0C1E, 0x0B95, 0x0B0B, 0x0A80, 0x09F3,\n    0x0965, 0x08D6, 0x0846, 0x07B4, 0x0722, 0x0690, 0x05FC, 0x0568,\n    0xFF79, 0xFF25, 0xFED1, 0xFE7E, 0xFE2B, 0xFDD9, 0xFD87, 0xFD36,\n    0xFCE6, 0xFC96, 0xFC47, 0xFBF9, 0xFBAB, 0xFB5F, 0xFB13, 0xFAC8,\n    0xFA7E, 0xFA36, 0xF9EE, 0xF9A8, 0xF963, 0xF91F, 0xF8DC, 0xF89B,\n    0xF85B, 0xF81C, 0xF7DF, 0xF7A4, 0xF76A, 0xF732, 0xF6FB, 0xF6C6,\n    0xF693, 0xF662, 0xF632, 0xF605, 0xF5D9, 0xF5B0, 0xF588, 0xF563,\n    0xF53F, 0xF51E, 0xF4FF, 0xF4E3, 0xF4C9, 0xF4B1, 0xF49B, 0xF488,\n    0xF478, 0xF46A, 0xF45F, 0xF456, 0xF450, 0xF44D, 0xF44D, 0xF44F,\n    0xF455, 0xF45D, 0xF469, 0xF477, 0xF489, 0xF49D, 0xF4B5, 0xF4D2,\n    0xF4F5, 0xF51F, 0xF54E, 0xF584, 0xF5C0, 0xF600, 0xF647, 0xF692,\n    0xF6E2, 0xF737, 0xF791, 0xF7EF, 0xF850, 0xF8B6, 0xF920, 0xF98D,\n    0xF9FD, 0xFA70, 0xFAE6, 0xFB5F, 0xFBDB, 0xFC58, 0xFCD8, 0xFD5A,\n    0xFDDD, 0xFE62, 0xFEE8, 0xFF6F, 0xFFF7, 0x007F, 0x0108, 0x0191,\n    0x021A, 0x02A4, 0x032C, 0x03B5, 0x043C, 0x04C3, 0x0548, 0x05CC,\n    0x064F, 0x06D0, 0x074E, 0x07CB, 0x0845, 0x08BD, 0x0932, 0x09A4,\n    0x0A12, 0x0A7E, 0x0AE5, 0x0B49, 0x0BA9, 0x0C05, 0x0C5C, 0x0CAF,\n    0x0CFD, 0x0D45, 0x0D89, 0x0DC7, 0x0E00, 0x0E33, 0x0E60, 0x0E86,\n    0x0EA6, 0x0EC0, 0x0ED2, 0x0EDE, 0x0EE3, 0x0EE6, 0x0EE5, 0x0EE1,\n    0x0EDB, 0x0ED2, 0x0EC6, 0x0EB8, 0x0EA7, 0x0E94, 0x0E7E, 0x0E65,\n    0x0E4A, 0x0E2D, 0x0E0E, 0x0DEC, 0x0DC8, 0x0DA2, 0x0D7A, 0x0D50,\n    0x0D24, 0x0CF5, 0x0CC5, 0x0C93, 0x0C5F, 0x0C2A, 0x0BF2, 0x0BB9,\n    0x0B7F, 0x0B43, 0x0B05, 0x0AC6, 0x0A85, 0x0A43, 0x0A00, 0x09BB,\n    0x0975, 0x092E, 0x08E5, 0x089C, 0x0852, 0x0806, 0x07BA, 0x076C,\n    0x071E, 0x06CF, 0x067F, 0x062F, 0x05DE, 0x058C, 0x0539, 0x04E6,\n    0x0493, 0x043F, 0x03EB, 0x0396, 0x0341, 0x02EC, 0x0297, 0x0242,\n    0x01EC, 0x0196, 0x0141, 0x00EB, 0x0096, 0x0041, 0xFFEC, 0x2909,\n    0x290E, 0x2907, 0x28F2, 0x28CF, 0x289F, 0x2862, 0x2819, 0x27C3,\n    0x2761, 0x26F3, 0x2679, 0x25F5, 0x2566, 0x24CC, 0x2428, 0x237B,\n    0x22C3, 0x2203, 0x2139, 0x2067, 0x1F8D, 0x1EAA, 0x1DC0, 0x1CCF,\n    0x1BD6, 0x1AD7, 0x19D2, 0x18C6, 0x17B4, 0x169D, 0x1581, 0x1460,\n    0x133B, 0x1211, 0x10E3, 0x0FB2, 0x0E7D, 0x0D45, 0x0C0B, 0x0ACF,\n    0x0990, 0x0850, 0x070E, 0x05CB, 0x0487, 0x0343, 0x01FF, 0x00BB,\n    0xFF78, 0xFE35, 0xFCF3, 0xFBB3, 0xFA74, 0xF938, 0xF7FD, 0xF6C6,\n    0xF591, 0xF460, 0xF332, 0xF208, 0xF0E3, 0xEFC2, 0xEEA6, 0xED8F,\n    0xEC7D, 0xEB71, 0xEA6C, 0xE96C, 0xE874, 0xE783, 0xE699, 0xE5B6,\n    0xE4DC, 0xE40A, 0xE340, 0xE280, 0xE1C8, 0xE11B, 0xE077, 0xDFDD,\n    0xDF4E, 0xDEC9, 0xDE50, 0xDDE2, 0xDD80, 0xDD2A, 0xDCE1, 0xDCA4,\n    0xDC74, 0xDC51, 0xDC3C, 0xDC35, 0xDC3A, 0xDC4A, 0xDC63, 0xDC87,\n    0xDCB5, 0xDCEB, 0xDD2C, 0xDD75, 0xDDC8, 0xDE23, 0xDE87, 0xDEF3,\n    0xDF67, 0xDFE3, 0xE067, 0xE0F2, 0xE185, 0xE21F, 0xE2C0, 0xE368,\n    0xE416, 0xE4CB, 0xE585, 0xE646, 0xE70D, 0xE7D9, 0xE8AA, 0xE981,\n    0xEA5C, 0xEB3D, 0xEC22, 0xED0B, 0xEDF8, 0xEEEA, 0xEFDF, 0xF0D8,\n    0xF1D4, 0xF2D3, 0xF3D5, 0xF4DA, 0xF5E2, 0xF6EC, 0xF7F8, 0xF906,\n    0xFA16, 0xFB27, 0xFC3A, 0xFD4E, 0xFE63, 0xFF79, 0x008E, 0x01A5,\n    0x02BC, 0x03D3, 0x04EA, 0x0600, 0x0715, 0x082A, 0x093E, 0x0A51,\n    0x0B62, 0x0C72, 0x0D7F, 0x0E8B, 0x0F95, 0x109C, 0x11A0, 0x12A2,\n    0x13A1, 0x149D, 0x1595, 0x1689, 0x177A, 0x1867, 0x194F, 0x1A33,\n    0x1B13, 0x1BEE, 0x1CC3, 0x1D94, 0x1E5F, 0x1F25, 0x1FE4, 0x209E,\n    0x2152, 0x21FF, 0x22A5, 0x2345, 0x23DE, 0x2470, 0x24FA, 0x257C,\n    0x25F7, 0x266A, 0x26D5, 0x2737, 0x2791, 0x27E2, 0x282A, 0x2869,\n    0x289E, 0x28CA, 0x28EC, 0x2904, 0x2912, 0x2915, 0x0625, 0x05B4,\n    0x0541, 0x04CB, 0x0450, 0x03D2, 0x0350, 0x02CA, 0x0242, 0x01B6,\n    0x0128, 0x0097, 0x0004, 0xFF70, 0xFED8, 0xFE3F, 0xFDA5, 0xFD08,\n    0xFC6B, 0xFBCD, 0xFB2D, 0xFA8D, 0xF9ED, 0xF94D, 0xF8AC, 0xF80C,\n    0xF76C, 0xF6CC, 0xF62D, 0xF590, 0xF4F3, 0xF458, 0xF3BE, 0xF326,\n    0xF28F, 0xF1FB, 0xF169, 0xF0DA, 0xF04E, 0xEFC4, 0xEF3D, 0xEEBA,\n    0xEE3A, 0xEDBE, 0xED46, 0xECD1, 0xEC61, 0xEBF6, 0xEB8F, 0xEB2D,\n    0xEAD0, 0xEA78, 0xEA26, 0xE9D9, 0xE992, 0xE952, 0xE917, 0xE8E3,\n    0xE8B5, 0xE88E, 0xE86E, 0xE856, 0xE845, 0xE83B, 0xE839, 0xE83F,\n    0xE84E, 0xE864, 0xE883, 0xE8AC, 0xE8E1, 0xE91F, 0xE969, 0xE9BC,\n    0xEA19, 0xEA7F, 0xEAEF, 0xEB67, 0xEBE8, 0xEC71, 0xED02, 0xED9B,\n    0xEE3B, 0xEEE1, 0xEF8F, 0xF043, 0xF0FC, 0xF1BC, 0xF280, 0xF34A,\n    0xF419, 0xF4EC, 0xF5C3, 0xF69E, 0xF77D, 0xF85F, 0xF943, 0xFA2B,\n    0xFB14, 0xFC00, 0xFCED, 0xFDDB, 0xFECB, 0xFFBB, 0x00AA, 0x019B,\n    0x028B, 0x037B, 0x046A, 0x0558, 0x0645, 0x072F, 0x0818, 0x08FE,\n    0x09E2, 0x0AC2, 0x0B9F, 0x0C78, 0x0D4E, 0x0E1F, 0x0EEC, 0x0FB3,\n    0x1076, 0x1133, 0x11EA, 0x129B, 0x1345, 0x13E9, 0x1486, 0x151B,\n    0x15A9, 0x162E, 0x16AB, 0x1720, 0x178C, 0x17EE, 0x1847, 0x1896,\n    0x18DA, 0x1915, 0x1944, 0x1968, 0x1981, 0x198E, 0x198F, 0x1987,\n    0x1979, 0x1966, 0x194D, 0x192E, 0x190B, 0x18E3, 0x18B6, 0x1884,\n    0x184D, 0x1812, 0x17D3, 0x1790, 0x1749, 0x16FE, 0x16AF, 0x165D,\n    0x1607, 0x15AF, 0x1553, 0x14F4, 0x1492, 0x142E, 0x13C7, 0x135E,\n    0x12F3, 0x1286, 0x1217, 0x11A6, 0x1134, 0x10C0, 0x104A, 0x0FD4,\n    0x0F5D, 0x0EE5, 0x0E6C, 0x0DF2, 0x0D79, 0x0CFE, 0x0C84, 0x0C0A,\n    0x0B90, 0x0B17, 0x0A9D, 0x0A25, 0x09AD, 0x0936, 0x08C1, 0x084C,\n    0x07D9, 0x0768, 0x06F8, 0x068A, 0x061E, 0xFF62, 0xFF39, 0xFF10,\n    0xFEE6, 0xFEBB, 0xFE90, 0xFE63, 0xFE36, 0xFE09, 0xFDDB, 0xFDAC,\n    0xFD7E, 0xFD4E, 0xFD1F, 0xFCEF, 0xFCBF, 0xFC8F, 0xFC5E, 0xFC2E,\n    0xFBFE, 0xFBCD, 0xFB9D, 0xFB6D, 0xFB3D, 0xFB0D, 0xFADE, 0xFAAF,\n    0xFA80, 0xFA52, 0xFA24, 0xF9F7, 0xF9CB, 0xF99F, 0xF974, 0xF949,\n    0xF91F, 0xF8F7, 0xF8CF, 0xF8A8, 0xF882, 0xF85D, 0xF839, 0xF816,\n    0xF7F5, 0xF7D5, 0xF7B6, 0xF798, 0xF77C, 0xF761, 0xF748, 0xF731,\n    0xF71B, 0xF706, 0xF6F4, 0xF6E3, 0xF6D4, 0xF6C7, 0xF6BB, 0xF6B2,\n    0xF6AB, 0xF6A6, 0xF6A3, 0xF6A2, 0xF6A6, 0xF6B1, 0xF6C4, 0xF6DE,\n    0xF6FE, 0xF725, 0xF753, 0xF786, 0xF7BF, 0xF7FE, 0xF842, 0xF88C,\n    0xF8DA, 0xF92D, 0xF984, 0xF9E0, 0xFA3F, 0xFAA2, 0xFB09, 0xFB72,\n    0xFBDF, 0xFC4F, 0xFCC1, 0xFD35, 0xFDAB, 0xFE24, 0xFE9D, 0xFF18,\n    0xFF95, 0x0011, 0x008E, 0x010C, 0x018B, 0x0209, 0x0286, 0x0304,\n    0x0380, 0x03FB, 0x0476, 0x04EE, 0x0565, 0x05DA, 0x064D, 0x06BD,\n    0x072A, 0x0795, 0x07FC, 0x0860, 0x08C1, 0x091D, 0x0976, 0x09CA,\n    0x0A19, 0x0A64, 0x0AA9, 0x0AEA, 0x0B24, 0x0B59, 0x0B88, 0x0BB1,\n    0x0BD3, 0x0BEF, 0x0C03, 0x0C13, 0x0C1F, 0x0C28, 0x0C2D, 0x0C30,\n    0x0C30, 0x0C2D, 0x0C27, 0x0C1E, 0x0C13, 0x0C05, 0x0BF4, 0x0BE1,\n    0x0BCB, 0x0BB3, 0x0B99, 0x0B7D, 0x0B5E, 0x0B3D, 0x0B1B, 0x0AF6,\n    0x0AD0, 0x0AA7, 0x0A7D, 0x0A52, 0x0A24, 0x09F5, 0x09C5, 0x0993,\n    0x0960, 0x092C, 0x08F7, 0x08C0, 0x0889, 0x0850, 0x0816, 0x07DC,\n    0x07A1, 0x0765, 0x0729, 0x06EC, 0x06AE, 0x0670, 0x0632, 0x05F4,\n    0x05B5, 0x0576, 0x0537, 0x04F8, 0x04B9, 0x047A, 0x043C, 0x03FD,\n    0x03BF, 0x0382, 0x0344, 0x0308, 0x02CC, 0x0290, 0x0256, 0x021C,\n    0x01E3, 0x01AB, 0x0174, 0x013F, 0x010A, 0x00D7, 0x00A5, 0x0074,\n    0x0045, 0x0017, 0xFFEC, 0xFFC1, 0x8001, 0x0912, 0x098C, 0x09F9,\n    0x0A5B, 0x0AAF, 0x0AF5, 0x0B2D, 0x0B56, 0x0B6E, 0x0B77, 0x0B6E,\n    0x0B53, 0x0B27, 0x0AEA, 0x0A9F, 0x0A44, 0x09DB, 0x0965, 0x08E3,\n    0x0855, 0x07BC, 0x0718, 0x066B, 0x05B6, 0x04F8, 0x0433, 0x0368,\n    0x0297, 0x01C1, 0x00E7, 0x000A, 0xFF2B, 0xFE49, 0xFD66, 0xFC82,\n    0xFB9F, 0xFABD, 0xF9DD, 0xF900, 0xF826, 0xF750, 0xF67F, 0xF5B4,\n    0xF4EF, 0xF432, 0xF37C, 0xF2CF, 0xF22C, 0xF193, 0xF104, 0xF082,\n    0xF00C, 0xEFA3, 0xEF49, 0xEEFD, 0xEEC0, 0xEE94, 0xEE79, 0xEE70,\n    0xEE79, 0xEE93, 0xEEBD, 0xEEF7, 0xEF40, 0xEF98, 0xEFFD, 0xF06E,\n    0xF0EC, 0xF175, 0xF209, 0xF2A7, 0xF34E, 0xF3FE, 0xF4B6, 0xF574,\n    0xF639, 0xF704, 0xF7D4, 0xF8A8, 0xF980, 0xFA5A, 0xFB37, 0xFC15,\n    0xFCF4, 0xFDD3, 0xFEB1, 0xFF8E, 0x0067, 0x013F, 0x0213, 0x02E3,\n    0x03AE, 0x0473, 0x0532, 0x05E9, 0x0699, 0x0740, 0x07DE, 0x0872,\n    0x08FB, 0x0979, 0x09EB, 0x0A50, 0x0AA7, 0x0AF0, 0x0B2A, 0x0B54,\n    0x0B6E, 0x0B77, 0x0B6E, 0x0B54, 0x0B2A, 0x0AF0, 0x0AA7, 0x0A50,\n    0x09EB, 0x0979, 0x08FB, 0x0872, 0x07DE, 0x0740, 0x0699, 0x05E9,\n    0x0532, 0x0473, 0x03AE, 0x02E3, 0x0213, 0x013F, 0x0067, 0xFF8E,\n    0xFEB1, 0xFDD3, 0xFCF4, 0xFC15, 0xFB37, 0xFA5A, 0xF980, 0xF8A8,\n    0xF7D4, 0xF704, 0xF639, 0xF574, 0xF4B6, 0xF3FE, 0xF34E, 0xF2A7,\n    0xF209, 0xF175, 0xF0EC, 0xF06E, 0xEFFD, 0xEF98, 0xEF40, 0xEEF7,\n    0xEEBD, 0xEE93, 0xEE79, 0xEE70, 0xEE79, 0xEE92, 0xEEBA, 0xEEF2,\n    0xEF39, 0xEF8D, 0xEFEE, 0xF05C, 0xF0D5, 0xF159, 0xF1E8, 0xF281,\n    0xF323, 0xF3CD, 0xF47F, 0xF538, 0xF5F7, 0xF6BC, 0xF786, 0xF855,\n    0xF927, 0xF9FC, 0xFAD3, 0xFBAD, 0xFC87, 0xFD61, 0xFE3C, 0xFF15,\n    0xFFEC, 0x00C0, 0x0193, 0x0261, 0x032B, 0x03F0, 0x04B0, 0x0568,\n    0x061A, 0x06C4, 0x0766, 0x07FF, 0x03F0, 0x047B, 0x0505, 0x0590,\n    0x061A, 0x06A4, 0x072D, 0x07B5, 0x083D, 0x08C4, 0x094A, 0x09CE,\n    0x0A51, 0x0AD3, 0x0B54, 0x0BD3, 0x0C50, 0x0CCB, 0x0D45, 0x0DBC,\n    0x0E32, 0x0EA5, 0x0F15, 0x0F83, 0x0FEF, 0x1058, 0x10BE, 0x1121,\n    0x1181, 0x11DD, 0x1237, 0x128D, 0x12E0, 0x132F, 0x137A, 0x13C1,\n    0x1404, 0x1444, 0x147F, 0x14B6, 0x14E8, 0x1516, 0x153F, 0x1563,\n    0x1583, 0x159D, 0x15B3, 0x15C3, 0x15CE, 0x15D3, 0x15D3, 0x15CE,\n    0x15C3, 0x15B3, 0x159D, 0x1583, 0x1564, 0x1540, 0x1517, 0x14EA,\n    0x14B9, 0x1483, 0x1449, 0x140A, 0x13C8, 0x1382, 0x1338, 0x12EA,\n    0x1299, 0x1245, 0x11ED, 0x1191, 0x1133, 0x10D2, 0x106D, 0x1006,\n    0x0F9D, 0x0F30, 0x0EC1, 0x0E50, 0x0DDD, 0x0D67, 0x0CF0, 0x0C76,\n    0x0BFB, 0x0B7E, 0x0AFF, 0x0A7F, 0x09FE, 0x097B, 0x08F7, 0x0872,\n    0x07EC, 0x0766, 0x06DE, 0x0656, 0x05CE, 0x0545, 0x04BC, 0x0432,\n    0x03A9, 0x0320, 0x0297, 0x020E, 0x0185, 0x00FD, 0x0076, 0xFFF0,\n    0xFF6B, 0xFEE6, 0xFE62, 0xFDDF, 0xFD5E, 0xFCDE, 0xFC5F, 0xFBE2,\n    0xFB67, 0xFAED, 0xFA76, 0xFA00, 0xF98D, 0xF91C, 0xF8AD, 0xF841,\n    0xF7D7, 0xF770, 0xF70C, 0xF6AB, 0xF64C, 0xF5F1, 0xF599, 0xF545,\n    0xF4F4, 0xF4A6, 0xF45C, 0xF416, 0xF3D4, 0xF396, 0xF35C, 0xF326,\n    0xF2F4, 0xF2C7, 0xF29F, 0xF27B, 0xF25C, 0xF242, 0xF22D, 0xF21D,\n    0xF212, 0xF20C, 0xF20C, 0xF212, 0xF21D, 0xF22D, 0xF242, 0xF25C,\n    0xF27B, 0xF29F, 0xF2C7, 0xF2F5, 0xF326, 0xF35C, 0xF397, 0xF3D5,\n    0xF417, 0xF45E, 0xF4A8, 0xF4F6, 0xF547, 0xF59C, 0xF5F4, 0xF650,\n    0xF6AF, 0xF710, 0xF775, 0xF7DC, 0xF846, 0xF8B3, 0xF922, 0xF994,\n    0xFA08, 0xFA7E, 0xFAF6, 0xFB70, 0xFBEB, 0xFC69, 0xFCE8, 0xFD69,\n    0xFDEA, 0xFE6E, 0xFEF2, 0xFF77, 0xFFFE, 0x0084, 0x010C, 0x0194,\n    0x021D, 0x02A6, 0x0330, 0x0169, 0x0132, 0x00FC, 0x00C6, 0x0090,\n    0x005B, 0x0027, 0xFFF3, 0xFFC0, 0xFF8D, 0xFF5A, 0xFF29, 0xFEF8,\n    0xFEC7, 0xFE98, 0xFE69, 0xFE3B, 0xFE0E, 0xFDE2, 0xFDB6, 0xFD8C,\n    0xFD63, 0xFD3B, 0xFD13, 0xFCED, 0xFCC9, 0xFCA5, 0xFC82, 0xFC61,\n    0xFC41, 0xFC23, 0xFC06, 0xFBEA, 0xFBD0, 0xFBB7, 0xFBA0, 0xFB8A,\n    0xFB76, 0xFB63, 0xFB53, 0xFB43, 0xFB36, 0xFB2A, 0xFB21, 0xFB19,\n    0xFB13, 0xFB0E, 0xFB0C, 0xFB0C, 0xFB0E, 0xFB12, 0xFB18, 0xFB20,\n    0xFB2A, 0xFB37, 0xFB45, 0xFB56, 0xFB6A, 0xFB7F, 0xFB97, 0xFBB2,\n    0xFBCF, 0xFBEE, 0xFC10, 0xFC35, 0xFC5C, 0xFC85, 0xFCB0, 0xFCDD,\n    0xFD0C, 0xFD3E, 0xFD71, 0xFDA6, 0xFDDC, 0xFE14, 0xFE4E, 0xFE89,\n    0xFEC6, 0xFF04, 0xFF43, 0xFF83, 0xFFC5, 0x0006, 0x0049, 0x008D,\n    0x00D2, 0x0118, 0x015E, 0x01A4, 0x01EC, 0x0233, 0x027B, 0x02C3,\n    0x030B, 0x0353, 0x039B, 0x03E3, 0x042B, 0x0472, 0x04B9, 0x0500,\n    0x0546, 0x058C, 0x05D1, 0x0615, 0x0659, 0x069B, 0x06DD, 0x071D,\n    0x075D, 0x079B, 0x07D8, 0x0813, 0x084D, 0x0886, 0x08BD, 0x08F2,\n    0x0926, 0x0957, 0x0987, 0x09B5, 0x09E0, 0x0A0A, 0x0A31, 0x0A56,\n    0x0A78, 0x0A98, 0x0AB6, 0x0AD1, 0x0AE9, 0x0AFE, 0x0B11, 0x0B20,\n    0x0B2D, 0x0B36, 0x0B3D, 0x0B40, 0x0B40, 0x0B3D, 0x0B39, 0x0B33,\n    0x0B2A, 0x0B20, 0x0B14, 0x0B06, 0x0AF6, 0x0AE5, 0x0AD1, 0x0ABC,\n    0x0AA6, 0x0A8E, 0x0A74, 0x0A58, 0x0A3C, 0x0A1D, 0x09FE, 0x09DC,\n    0x09BA, 0x0996, 0x0971, 0x094B, 0x0923, 0x08FB, 0x08D1, 0x08A6,\n    0x087A, 0x084D, 0x081F, 0x07F1, 0x07C1, 0x0790, 0x075F, 0x072D,\n    0x06FA, 0x06C7, 0x0692, 0x065E, 0x0628, 0x05F2, 0x05BC, 0x0585,\n    0x054E, 0x0516, 0x04DE, 0x04A6, 0x046D, 0x0434, 0x03FB, 0x03C2,\n    0x0389, 0x034F, 0x0316, 0x02DC, 0x02A3, 0x026A, 0x0230, 0x01F7,\n    0x01BE, 0x0186, 0xC091, 0xC07B, 0xC066, 0xC051, 0xC03C, 0xC027,\n    0xC014, 0xC001, 0xBFEE, 0xBFDD, 0xBFCC, 0xBFBC, 0xBFAD, 0xBF9F,\n    0xBF92, 0xBF87, 0xBF7C, 0xBF73, 0xBF6B, 0xBF65, 0xBF60, 0xBF5D,\n    0xBF5B, 0xBF5C, 0xBF5F, 0xBF63, 0xBF6A, 0xBF72, 0xBF7C, 0xBF87,\n    0xBF94, 0xBFA2, 0xBFB1, 0xBFC2, 0xBFD4, 0xBFE7, 0xBFFB, 0xC00F,\n    0xC025, 0xC03B, 0xC052, 0xC069, 0xC081, 0xC099, 0xC0B2, 0xC0CA,\n    0xC0E3, 0xC0FC, 0xC114, 0xC12D, 0xC145, 0xC15D, 0xC174, 0xC18B,\n    0xC1A2, 0xC1B7, 0xC1CC, 0xC1E0, 0xC1F3, 0xC205, 0xC216, 0xC226,\n    0xC234, 0xC241, 0xC24D, 0xC257, 0xC260, 0xC266, 0xC26B, 0xC26E,\n    0xC26F, 0xC26E, 0xC26B, 0xC267, 0xC261, 0xC259, 0xC250, 0xC245,\n    0xC239, 0xC22C, 0xC21D, 0xC20E, 0xC1FD, 0xC1EB, 0xC1D9, 0xC1C5,\n    0xC1B1, 0xC19C, 0xC187, 0xC171, 0xC15A, 0xC144, 0xC12C, 0xC115,\n    0xC0FE, 0xC0E6, 0xC0CE, 0xC0B7, 0xC0A0, 0xC088, 0xC072, 0xC05B,\n    0xC045, 0xC030, 0xC01B, 0xC007, 0xBFF3, 0xBFE1, 0xBFCF, 0xBFBE,\n    0xBFAF, 0xBFA0, 0xBF93, 0xBF87, 0xBF7C, 0xBF73, 0xBF6B, 0xBF65,\n    0xBF61, 0xBF5E, 0xBF5D, 0xBF5E, 0xBF61, 0xBF65, 0xBF6B, 0xBF73,\n    0xBF7C, 0xBF87, 0xBF93, 0xBFA0, 0xBFAF, 0xBFBE, 0xBFCF, 0xBFE1,\n    0xBFF3, 0xC007, 0xC01B, 0xC030, 0xC045, 0xC05B, 0xC072, 0xC088,\n    0xC0A0, 0xC0B7, 0xC0CE, 0xC0E6, 0xC0FE, 0xC115, 0xC12C, 0xC144,\n    0xC15A, 0xC171, 0xC187, 0xC19C, 0xC1B1, 0xC1C5, 0xC1D9, 0xC1EB,\n    0xC1FD, 0xC20E, 0xC21D, 0xC22C, 0xC239, 0xC245, 0xC250, 0xC259,\n    0xC261, 0xC267, 0xC26B, 0xC26E, 0xC26F, 0xC26E, 0xC26B, 0xC267,\n    0xC260, 0xC258, 0xC24E, 0xC243, 0xC236, 0xC228, 0xC219, 0xC208,\n    0xC1F7, 0xC1E4, 0xC1D0, 0xC1BC, 0xC1A7, 0xC191, 0xC17B, 0xC164,\n    0xC14C, 0xC134, 0xC11C, 0xC104, 0xC0EC, 0xC0D4, 0xC0BB, 0xC0A3,\n    0xC08B, 0xFB2B, 0xF6C0, 0xF6B2, 0xF6A9, 0xF6A3, 0xF6A2, 0xF6A3,\n    0xF6A7, 0xF6AE, 0xF6B7, 0xF6C3, 0xF6D1, 0xF6E2, 0xF6F5, 0xF70A,\n    0xF721, 0xF73B, 0xF757, 0xF775, 0xF794, 0xF7B6, 0xF7DA, 0xF800,\n    0xF827, 0xF850, 0xF87B, 0xF8A8, 0xF8D7, 0xF907, 0xF938, 0xF96B,\n    0xF9A0, 0xF9D6, 0xFA0D, 0xFA45, 0xFA7F, 0xFABA, 0xFAF7, 0xFB34,\n    0xFB72, 0xFBB2, 0xFBF2, 0xFC33, 0xFC76, 0xFCB9, 0xFCFC, 0xFD41,\n    0xFD86, 0xFDCC, 0xFE12, 0xFE59, 0xFEA1, 0xFEE9, 0xFF31, 0xFF7A,\n    0xFFC3, 0x000B, 0x0054, 0x009E, 0x00E7, 0x0131, 0x017B, 0x01C4,\n    0x020E, 0x0257, 0x02A1, 0x02EA, 0x0332, 0x037B, 0x03C3, 0x040A,\n    0x0451, 0x0498, 0x04DE, 0x0523, 0x0568, 0x05AC, 0x05EF, 0x0631,\n    0x0673, 0x06B3, 0x06F3, 0x0732, 0x076F, 0x07AC, 0x07E7, 0x0821,\n    0x085A, 0x0891, 0x08C7, 0x08FC, 0x0930, 0x0961, 0x0992, 0x09C0,\n    0x09EE, 0x0A19, 0x0A43, 0x0A6A, 0x0A90, 0x0AB5, 0x0AD7, 0x0AF7,\n    0x0B15, 0x0B31, 0x0B4B, 0x0B63, 0x0B79, 0x0B8C, 0x0B9D, 0x0BAC,\n    0x0BB8, 0x0BC2, 0x0BC9, 0x0BCE, 0x0BD0, 0x0BCF, 0x0BCA, 0x0BC1,\n    0x0BB5, 0x0BA4, 0x0B90, 0x0B78, 0x0B5C, 0x0B3E, 0x0B1B, 0x0AF6,\n    0x0ACD, 0x0AA2, 0x0A73, 0x0A42, 0x0A0E, 0x09D7, 0x099D, 0x0961,\n    0x0923, 0x08E2, 0x08A0, 0x085B, 0x0814, 0x07CB, 0x0780, 0x0733,\n    0x06E5, 0x0696, 0x0644, 0x05F2, 0x059E, 0x0549, 0x04F3, 0x049C,\n    0x0444, 0x03EB, 0x0392, 0x0338, 0x02DD, 0x0282, 0x0227, 0x01CB,\n    0x016F, 0x0114, 0x00B8, 0x005C, 0x0001, 0xFFA7, 0xFF4C, 0xFEF2,\n    0xFE98, 0xFE3F, 0xFDE7, 0xFD90, 0xFD3A, 0xFCE5, 0xFC91, 0xFC3E,\n    0xFBEC, 0xFB9C, 0xFB4E, 0xFB01, 0xFAB6, 0xFA6D, 0xFA25, 0xF9E0,\n    0xF99D, 0xF95C, 0xF91D, 0xF8E0, 0xF8A6, 0xF86F, 0xF83A, 0xF808,\n    0xF7D9, 0xF7AD, 0xF784, 0xF75E, 0xF73B, 0xF71B, 0xF6FF, 0xF6E7,\n    0xF6D2, 0xC183, 0xFFEC, 0x019D, 0x0166, 0x0131, 0x00FB, 0x00C6,\n    0x0091, 0x005D, 0x0029, 0xFFF7, 0xFFC4, 0xFF92, 0xFF60, 0xFF2F,\n    0xFEFF, 0xFECF, 0xFEA0, 0xFE72, 0xFE45, 0xFE18, 0xFDEC, 0xFDC2,\n    0xFD98, 0xFD6F, 0xFD47, 0xFD21, 0xFCFB, 0xFCD6, 0xFCB3, 0xFC91,\n    0xFC70, 0xFC50, 0xFC32, 0xFC15, 0xFBF9, 0xFBDE, 0xFBC6, 0xFBAE,\n    0xFB98, 0xFB84, 0xFB71, 0xFB60, 0xFB50, 0xFB42, 0xFB36, 0xFB2B,\n    0xFB23, 0xFB1C, 0xFB17, 0xFB13, 0xFB12, 0xFB13, 0xFB16, 0xFB1A,\n    0xFB21, 0xFB2A, 0xFB35, 0xFB42, 0xFB51, 0xFB63, 0xFB77, 0xFB8D,\n    0xFBA5, 0xFBC0, 0xFBDE, 0xFBFF, 0xFC22, 0xFC48, 0xFC70, 0xFC9B,\n    0xFCC8, 0xFCF7, 0xFD28, 0xFD5B, 0xFD90, 0xFDC6, 0xFDFF, 0xFE39,\n    0xFE75, 0xFEB2, 0xFEF1, 0xFF31, 0xFF72, 0xFFB4, 0xFFF7, 0x003B,\n    0x0080, 0x00C6, 0x010D, 0x0155, 0x019D, 0x01E5, 0x022E, 0x0277,\n    0x02C1, 0x030A, 0x0354, 0x039E, 0x03E7, 0x0431, 0x047A, 0x04C2,\n    0x050B, 0x0552, 0x0599, 0x05E0, 0x0625, 0x066A, 0x06AE, 0x06F0,\n    0x0732, 0x0772, 0x07B1, 0x07EF, 0x082B, 0x0866, 0x089F, 0x08D7,\n    0x090C, 0x0940, 0x0971, 0x09A1, 0x09CF, 0x09FA, 0x0A23, 0x0A4A,\n    0x0A6E, 0x0A8F, 0x0AAE, 0x0ACA, 0x0AE4, 0x0AFA, 0x0B0E, 0x0B1E,\n    0x0B2B, 0x0B35, 0x0B3C, 0x0B40, 0x0B40, 0x0B3E, 0x0B39, 0x0B33,\n    0x0B2B, 0x0B21, 0x0B16, 0x0B08, 0x0AF9, 0x0AE8, 0x0AD5, 0x0AC0,\n    0x0AAA, 0x0A92, 0x0A79, 0x0A5E, 0x0A42, 0x0A24, 0x0A05, 0x09E5,\n    0x09C3, 0x09A0, 0x097C, 0x0956, 0x092F, 0x0907, 0x08DE, 0x08B4,\n    0x0889, 0x085D, 0x0830, 0x0802, 0x07D3, 0x07A3, 0x0773, 0x0741,\n    0x070F, 0x06DD, 0x06A9, 0x0675, 0x0641, 0x060C, 0x05D6, 0x05A0,\n    0x0569, 0x0532, 0x04FB, 0x04C3, 0x048B, 0x0453, 0x041B, 0x03E2,\n    0x03AA, 0x0371, 0x0338, 0x02FF, 0x02C6, 0x028D, 0x0255, 0x021C,\n    0x01E4, 0x01AB, 0xBF5D, 0xBF5B, 0xBF5C, 0xBF5F, 0xBF63, 0xBF6A,\n    0xBF72, 0xBF7C, 0xBF87, 0xBF94, 0xBFA2, 0xBFB1, 0xBFC2, 0xBFD4,\n    0xBFE7, 0xBFFB, 0xC00F, 0xC025, 0xC03B, 0xC052, 0xC069, 0xC081,\n    0xC099, 0xC0B2, 0xC0CA, 0xC0E3, 0xC0FC, 0xC114, 0xC12D, 0xC145,\n    0xC15D, 0xC174, 0xC18B, 0xC1A2, 0xC1B7, 0xC1CC, 0xC1E0, 0xC1F3,\n    0xC205, 0xC216, 0xC226, 0xC234, 0xC241, 0xC24D, 0xC257, 0xC260,\n    0xC266, 0xC26B, 0xC26E, 0xC26F, 0xC26E, 0xC26B, 0xC267, 0xC261,\n    0xC259, 0xC250, 0xC245, 0xC239, 0xC22C, 0xC21D, 0xC20E, 0xC1FD,\n    0xC1EB, 0xC1D9, 0xC1C5, 0xC1B1, 0xC19C, 0xC187, 0xC171, 0xC15A,\n    0xC144, 0xC12C, 0xC115, 0xC0FE, 0xC0E6, 0xC0CE, 0xC0B7, 0xC0A0,\n    0xC088, 0xC072, 0xC05B, 0xC045, 0xC030, 0xC01B, 0xC007, 0xBFF3,\n    0xBFE1, 0xBFCF, 0xBFBE, 0xBFAF, 0xBFA0, 0xBF93, 0xBF87, 0xBF7C,\n    0xBF73, 0xBF6B, 0xBF65, 0xBF61, 0xBF5E, 0xBF5D, 0xBF5E, 0xBF61,\n    0xBF65, 0xBF6B, 0xBF73, 0xBF7C, 0xBF87, 0xBF93, 0xBFA0, 0xBFAF,\n    0xBFBE, 0xBFCF, 0xBFE1, 0xBFF3, 0xC007, 0xC01B, 0xC030, 0xC045,\n    0xC05B, 0xC072, 0xC088, 0xC0A0, 0xC0B7, 0xC0CE, 0xC0E6, 0xC0FE,\n    0xC115, 0xC12C, 0xC144, 0xC15A, 0xC171, 0xC187, 0xC19C, 0xC1B1,\n    0xC1C5, 0xC1D9, 0xC1EB, 0xC1FD, 0xC20E, 0xC21D, 0xC22C, 0xC239,\n    0xC245, 0xC250, 0xC259, 0xC261, 0xC267, 0xC26B, 0xC26E, 0xC26F,\n    0xC26E, 0xC26B, 0xC267, 0xC260, 0xC258, 0xC24E, 0xC243, 0xC236,\n    0xC228, 0xC219, 0xC208, 0xC1F7, 0xC1E4, 0xC1D0, 0xC1BC, 0xC1A7,\n    0xC191, 0xC17B, 0xC164, 0xC14C, 0xC134, 0xC11C, 0xC104, 0xC0EC,\n    0xC0D4, 0xC0BB, 0xC0A3, 0xC08B, 0xC074, 0xC05C, 0xC046, 0xC02F,\n    0xC01A, 0xC005, 0xBFF1, 0xBFDE, 0xBFCC, 0xBFBB, 0xBFAB, 0xBF9C,\n    0xBF8E, 0xBF82, 0xBF78, 0xBF6E, 0xBF67, 0xBF61, 0xBF5D, 0xBF5B,\n    0xBF5B, 0x054D, 0xF6C0, 0xF6B2, 0xF6A9, 0xF6A3, 0xF6A2, 0xF6A3,\n    0xF6A7, 0xF6AE, 0xF6B7, 0xF6C3, 0xF6D1, 0xF6E2, 0xF6F5, 0xF70A,\n    0xF721, 0xF73B, 0xF757, 0xF775, 0xF794, 0xF7B6, 0xF7DA, 0xF800,\n    0xF827, 0xF850, 0xF87B, 0xF8A8, 0xF8D7, 0xF907, 0xF938, 0xF96B,\n    0xF9A0, 0xF9D6, 0xFA0D, 0xFA45, 0xFA7F, 0xFABA, 0xFAF7, 0xFB34,\n    0xFB72, 0xFBB2, 0xFBF2, 0xFC33, 0xFC76, 0xFCB9, 0xFCFC, 0xFD41,\n    0xFD86, 0xFDCC, 0xFE12, 0xFE59, 0xFEA1, 0xFEE9, 0xFF31, 0xFF7A,\n    0xFFC3, 0x000B, 0x0054, 0x009E, 0x00E7, 0x0131, 0x017B, 0x01C4,\n    0x020E, 0x0257, 0x02A1, 0x02EA, 0x0332, 0x037B, 0x03C3, 0x040A,\n    0x0451, 0x0498, 0x04DE, 0x0523, 0x0568, 0x05AC, 0x05EF, 0x0631,\n    0x0673, 0x06B3, 0x06F3, 0x0732, 0x076F, 0x07AC, 0x07E7, 0x0821,\n    0x085A, 0x0891, 0x08C7, 0x08FC, 0x0930, 0x0961, 0x0992, 0x09C0,\n    0x09EE, 0x0A19, 0x0A43, 0x0A6A, 0x0A90, 0x0AB5, 0x0AD7, 0x0AF7,\n    0x0B15, 0x0B31, 0x0B4B, 0x0B63, 0x0B79, 0x0B8C, 0x0B9D, 0x0BAC,\n    0x0BB8, 0x0BC2, 0x0BC9, 0x0BCE, 0x0BD0, 0x0BCF, 0x0BCA, 0x0BC1,\n    0x0BB5, 0x0BA4, 0x0B90, 0x0B78, 0x0B5C, 0x0B3E, 0x0B1B, 0x0AF6,\n    0x0ACD, 0x0AA2, 0x0A73, 0x0A42, 0x0A0E, 0x09D7, 0x099D, 0x0961,\n    0x0923, 0x08E2, 0x08A0, 0x085B, 0x0814, 0x07CB, 0x0780, 0x0733,\n    0x06E5, 0x0696, 0x0644, 0x05F2, 0x059E, 0x0549, 0x04F3, 0x049C,\n    0x0444, 0x03EB, 0x0392, 0x0338, 0x02DD, 0x0282, 0x0227, 0x01CB,\n    0x016F, 0x0114, 0x00B8, 0x005C, 0x0001, 0xFFA7, 0xFF4C, 0xFEF2,\n    0xFE98, 0xFE3F, 0xFDE7, 0xFD90, 0xFD3A, 0xFCE5, 0xFC91, 0xFC3E,\n    0xFBEC, 0xFB9C, 0xFB4E, 0xFB01, 0xFAB6, 0xFA6D, 0xFA25, 0xF9E0,\n    0xF99D, 0xF95C, 0xF91D, 0xF8E0, 0xF8A6, 0xF86F, 0xF83A, 0xF808,\n    0xF7D9, 0xF7AD, 0xF784, 0xF75E, 0xF73B, 0xF71B, 0xF6FF, 0xF6E7,\n    0xF6D2, 0xBE91, 0x0912, 0x098C, 0x09F9, 0x0A5B, 0x0AAF, 0x0AF5,\n    0x0B2D, 0x0B56, 0x0B6E, 0x0B77, 0x0B6E, 0x0B53, 0x0B27, 0x0AEA,\n    0x0A9F, 0x0A44, 0x09DB, 0x0965, 0x08E3, 0x0855, 0x07BC, 0x0718,\n    0x066B, 0x05B6, 0x04F8, 0x0433, 0x0368, 0x0297, 0x01C1, 0x00E7,\n    0x000A, 0xFF2B, 0xFE49, 0xFD66, 0xFC82, 0xFB9F, 0xFABD, 0xF9DD,\n    0xF900, 0xF826, 0xF750, 0xF67F, 0xF5B4, 0xF4EF, 0xF432, 0xF37C,\n    0xF2CF, 0xF22C, 0xF193, 0xF104, 0xF082, 0xF00C, 0xEFA3, 0xEF49,\n    0xEEFD, 0xEEC0, 0xEE94, 0xEE79, 0xEE70, 0xEE79, 0xEE93, 0xEEBD,\n    0xEEF7, 0xEF40, 0xEF98, 0xEFFD, 0xF06E, 0xF0EC, 0xF175, 0xF209,\n    0xF2A7, 0xF34E, 0xF3FE, 0xF4B6, 0xF574, 0xF639, 0xF704, 0xF7D4,\n    0xF8A8, 0xF980, 0xFA5A, 0xFB37, 0xFC15, 0xFCF4, 0xFDD3, 0xFEB1,\n    0xFF8E, 0x0067, 0x013F, 0x0213, 0x02E3, 0x03AE, 0x0473, 0x0532,\n    0x05E9, 0x0699, 0x0740, 0x07DE, 0x0872, 0x08FB, 0x0979, 0x09EB,\n    0x0A50, 0x0AA7, 0x0AF0, 0x0B2A, 0x0B54, 0x0B6E, 0x0B77, 0x0B6E,\n    0x0B54, 0x0B2A, 0x0AF0, 0x0AA7, 0x0A50, 0x09EB, 0x0979, 0x08FB,\n    0x0872, 0x07DE, 0x0740, 0x0699, 0x05E9, 0x0532, 0x0473, 0x03AE,\n    0x02E3, 0x0213, 0x013F, 0x0067, 0xFF8E, 0xFEB1, 0xFDD3, 0xFCF4,\n    0xFC15, 0xFB37, 0xFA5A, 0xF980, 0xF8A8, 0xF7D4, 0xF704, 0xF639,\n    0xF574, 0xF4B6, 0xF3FE, 0xF34E, 0xF2A7, 0xF209, 0xF175, 0xF0EC,\n    0xF06E, 0xEFFD, 0xEF98, 0xEF40, 0xEEF7, 0xEEBD, 0xEE93, 0xEE79,\n    0xEE70, 0xEE79, 0xEE92, 0xEEBA, 0xEEF2, 0xEF39, 0xEF8D, 0xEFEE,\n    0xF05C, 0xF0D5, 0xF159, 0xF1E8, 0xF281, 0xF323, 0xF3CD, 0xF47F,\n    0xF538, 0xF5F7, 0xF6BC, 0xF786, 0xF855, 0xF927, 0xF9FC, 0xFAD3,\n    0xFBAD, 0xFC87, 0xFD61, 0xFE3C, 0xFF15, 0xFFEC, 0x00C0, 0x0193,\n    0x0261, 0x032B, 0x03F0, 0x04B0, 0x0568, 0x061A, 0x06C4, 0x0766,\n    0x07FF, 0x03F0, 0x047B, 0x0505, 0x0590, 0x061A, 0x06A4, 0x072D,\n    0x07B5, 0x083D, 0x08C4, 0x094A, 0x09CE, 0x0A51, 0x0AD3, 0x0B54,\n    0x0BD3, 0x0C50, 0x0CCB, 0x0D45, 0x0DBC, 0x0E32, 0x0EA5, 0x0F15,\n    0x0F83, 0x0FEF, 0x1058, 0x10BE, 0x1121, 0x1181, 0x11DD, 0x1237,\n    0x128D, 0x12E0, 0x132F, 0x137A, 0x13C1, 0x1404, 0x1444, 0x147F,\n    0x14B6, 0x14E8, 0x1516, 0x153F, 0x1563, 0x1583, 0x159D, 0x15B3,\n    0x15C3, 0x15CE, 0x15D3, 0x15D3, 0x15CE, 0x15C3, 0x15B3, 0x159D,\n    0x1583, 0x1564, 0x1540, 0x1517, 0x14EA, 0x14B9, 0x1483, 0x1449,\n    0x140A, 0x13C8, 0x1382, 0x1338, 0x12EA, 0x1299, 0x1245, 0x11ED,\n    0x1191, 0x1133, 0x10D2, 0x106D, 0x1006, 0x0F9D, 0x0F30, 0x0EC1,\n    0x0E50, 0x0DDD, 0x0D67, 0x0CF0, 0x0C76, 0x0BFB, 0x0B7E, 0x0AFF,\n    0x0A7F, 0x09FE, 0x097B, 0x08F7, 0x0872, 0x07EC, 0x0766, 0x06DE,\n    0x0656, 0x05CE, 0x0545, 0x04BC, 0x0432, 0x03A9, 0x0320, 0x0297,\n    0x020E, 0x0185, 0x00FD, 0x0076, 0xFFF0, 0xFF6B, 0xFEE6, 0xFE62,\n    0xFDDF, 0xFD5E, 0xFCDE, 0xFC5F, 0xFBE2, 0xFB67, 0xFAED, 0xFA76,\n    0xFA00, 0xF98D, 0xF91C, 0xF8AD, 0xF841, 0xF7D7, 0xF770, 0xF70C,\n    0xF6AB, 0xF64C, 0xF5F1, 0xF599, 0xF545, 0xF4F4, 0xF4A6, 0xF45C,\n    0xF416, 0xF3D4, 0xF396, 0xF35C, 0xF326, 0xF2F4, 0xF2C7, 0xF29F,\n    0xF27B, 0xF25C, 0xF242, 0xF22D, 0xF21D, 0xF212, 0xF20C, 0xF20C,\n    0xF212, 0xF21D, 0xF22D, 0xF242, 0xF25C, 0xF27B, 0xF29F, 0xF2C7,\n    0xF2F5, 0xF326, 0xF35C, 0xF397, 0xF3D5, 0xF417, 0xF45E, 0xF4A8,\n    0xF4F6, 0xF547, 0xF59C, 0xF5F4, 0xF650, 0xF6AF, 0xF710, 0xF775,\n    0xF7DC, 0xF846, 0xF8B3, 0xF922, 0xF994, 0xFA08, 0xFA7E, 0xFAF6,\n    0xFB70, 0xFBEB, 0xFC69, 0xFCE8, 0xFD69, 0xFDEA, 0xFE6E, 0xFEF2,\n    0xFF77, 0xFFFE, 0x0084, 0x010C, 0x0194, 0x021D, 0x02A6, 0x0330,\n    0x114C, 0x1160, 0x116D, 0x1171, 0x1170, 0x116D, 0x1167, 0x1160,\n    0x1156, 0x114A, 0x113C, 0x112B, 0x1119, 0x1105, 0x10EF, 0x10D6,\n    0x10BC, 0x10A0, 0x1083, 0x1063, 0x1042, 0x101F, 0x0FFA, 0x0FD4,\n    0x0FAC, 0x0F82, 0x0F57, 0x0F2B, 0x0EFD, 0x0ECD, 0x0E9C, 0x0E6A,\n    0x0E37, 0x0E02, 0x0DCC, 0x0D94, 0x0D5C, 0x0D22, 0x0CE8, 0x0CAC,\n    0x0C6F, 0x0C31, 0x0BF2, 0x0BB2, 0x0B72, 0x0B30, 0x0AEE, 0x0AAB,\n    0x0A67, 0x0A22, 0x09DD, 0x0997, 0x0951, 0x090A, 0x08C2, 0x087A,\n    0x0831, 0x07E8, 0x079F, 0x0755, 0x070B, 0x06C0, 0x0676, 0x062B,\n    0x05E0, 0x0595, 0x0549, 0x04FE, 0x04B3, 0x0467, 0x041C, 0x03D0,\n    0x0385, 0x033A, 0x02EF, 0x02A4, 0x025A, 0x0210, 0x01C6, 0x017C,\n    0x0133, 0x00EB, 0x00A2, 0x005B, 0x0013, 0xFFCE, 0xFF88, 0xFF42,\n    0xFEFE, 0xFEBA, 0xFE76, 0xFE34, 0xFDF2, 0xFDB1, 0xFD72, 0xFD33,\n    0xFCF4, 0xFCB7, 0xFC7B, 0xFC40, 0xFC07, 0xFBCE, 0xFB96, 0xFB60,\n    0xFB2B, 0xFAF7, 0xFAC5, 0xFA94, 0xFA64, 0xFA36, 0xFA09, 0xF9DD,\n    0xF9B4, 0xF98B, 0xF965, 0xF940, 0xF91C, 0xF8FB, 0xF8DB, 0xF8BD,\n    0xF8A0, 0xF886, 0xF86D, 0xF857, 0xF842, 0xF82F, 0xF81F, 0xF810,\n    0xF804, 0xF7F9, 0xF7F1, 0xF7EB, 0xF7E7, 0xF7E6, 0xF7E9, 0xF7F4,\n    0xF807, 0xF822, 0xF843, 0xF86C, 0xF89C, 0xF8D3, 0xF90F, 0xF952,\n    0xF99B, 0xF9E9, 0xFA3D, 0xFA96, 0xFAF4, 0xFB57, 0xFBBE, 0xFC29,\n    0xFC98, 0xFD0B, 0xFD82, 0xFDFB, 0xFE78, 0xFEF8, 0xFF7A, 0xFFFE,\n    0x0083, 0x010C, 0x0196, 0x0221, 0x02AD, 0x033A, 0x03C8, 0x0456,\n    0x04E4, 0x0572, 0x0600, 0x068D, 0x071A, 0x07A5, 0x082F, 0x08B8,\n    0x093F, 0x09C4, 0x0A46, 0x0AC6, 0x0B43, 0x0BBE, 0x0C35, 0x0CA9,\n    0x0D19, 0x0D85, 0x0DED, 0x0E50, 0x0EAF, 0x0F09, 0x0F5E, 0x0FAD,\n    0x0FF7, 0x103B, 0x1079, 0x10B1, 0x10E2, 0x110C, 0x112F, 0x06DD,\n    0x06C2, 0x06A7, 0x068B, 0x066E, 0x0650, 0x0632, 0x0612, 0x05F3,\n    0x05D2, 0x05B1, 0x058F, 0x056D, 0x054A, 0x0527, 0x0503, 0x04DE,\n    0x04B9, 0x0494, 0x046E, 0x0448, 0x0422, 0x03FB, 0x03D4, 0x03AC,\n    0x0385, 0x035D, 0x0335, 0x030C, 0x02E4, 0x02BB, 0x0292, 0x0269,\n    0x0240, 0x0217, 0x01EE, 0x01C5, 0x019C, 0x0173, 0x014A, 0x0121,\n    0x00F8, 0x00D0, 0x00A7, 0x007F, 0x0057, 0x002F, 0x0007, 0xFFE1,\n    0xFFBA, 0xFF93, 0xFF6D, 0xFF47, 0xFF22, 0xFEFC, 0xFED8, 0xFEB4,\n    0xFE90, 0xFE6D, 0xFE4A, 0xFE28, 0xFE07, 0xFDE6, 0xFDC6, 0xFDA6,\n    0xFD87, 0xFD69, 0xFD4C, 0xFD2F, 0xFD13, 0xFCF8, 0xFCDE, 0xFCC5,\n    0xFCAC, 0xFC95, 0xFC7E, 0xFC68, 0xFC54, 0xFC40, 0xFC2D, 0xFC1C,\n    0xFC0B, 0xFBFC, 0xFBED, 0xFBE0, 0xFBD4, 0xFBC9, 0xFBC0, 0xFBB7,\n    0xFBB0, 0xFBAA, 0xFBA6, 0xFBA3, 0xFBA1, 0xFBA0, 0xFBA1, 0xFBA4,\n    0xFBA8, 0xFBAD, 0xFBB9, 0xFBCA, 0xFBE2, 0xFC00, 0xFC24, 0xFC4D,\n    0xFC7B, 0xFCAE, 0xFCE6, 0xFD22, 0xFD63, 0xFDA7, 0xFDEF, 0xFE3B,\n    0xFE8A, 0xFEDC, 0xFF31, 0xFF88, 0xFFE2, 0x003C, 0x009A, 0x00F8,\n    0x0158, 0x01B9, 0x021B, 0x027E, 0x02E0, 0x0343, 0x03A6, 0x0408,\n    0x0469, 0x04CA, 0x0529, 0x0587, 0x05E3, 0x063D, 0x0695, 0x06EA,\n    0x073D, 0x078D, 0x07DA, 0x0824, 0x0869, 0x08AB, 0x08E9, 0x0922,\n    0x0957, 0x0987, 0x09B1, 0x09D7, 0x09F6, 0x0A10, 0x0A24, 0x0A31,\n    0x0A38, 0x0A38, 0x0A37, 0x0A35, 0x0A32, 0x0A2E, 0x0A28, 0x0A22,\n    0x0A1B, 0x0A12, 0x0A09, 0x09FF, 0x09F4, 0x09E8, 0x09DB, 0x09CD,\n    0x09BE, 0x09AF, 0x099E, 0x098D, 0x097B, 0x0968, 0x0955, 0x0940,\n    0x092B, 0x0915, 0x08FF, 0x08E7, 0x08CF, 0x08B7, 0x089D, 0x0883,\n    0x0869, 0x084E, 0x0832, 0x0815, 0x07F8, 0x07DB, 0x07BD, 0x079E,\n    0x077F, 0x0760, 0x0740, 0x071F, 0x06FE, 0x06DD, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x0326, 0x032C,\n    0x0331, 0x0335, 0x0337, 0x0338, 0x0338, 0x0336, 0x0333, 0x032F,\n    0x0329, 0x0322, 0x031A, 0x0311, 0x0306, 0x02FB, 0x02EE, 0x02E1,\n    0x02D2, 0x02C2, 0x02B1, 0x02A0, 0x028D, 0x027A, 0x0265, 0x0250,\n    0x023A, 0x0223, 0x020B, 0x01F3, 0x01DA, 0x01C0, 0x01A6, 0x018B,\n    0x016F, 0x0153, 0x0136, 0x0119, 0x00FB, 0x00DD, 0x00BE, 0x009F,\n    0x007F, 0x005F, 0x003F, 0x001F, 0xFFFF, 0xFFDE, 0xFFBC, 0xFF9B,\n    0xFF79, 0xFF58, 0xFF36, 0xFF14, 0xFEF2, 0xFED0, 0xFEAE, 0xFE8C,\n    0xFE69, 0xFE48, 0xFE26, 0xFE04, 0xFDE3, 0xFDC1, 0xFDA0, 0xFD7F,\n    0xFD5F, 0xFD3E, 0xFD1E, 0xFCFF, 0xFCDF, 0xFCC0, 0xFCA2, 0xFC84,\n    0xFC66, 0xFC49, 0xFC2D, 0xFC11, 0xFBF6, 0xFBDB, 0xFBC1, 0xFBA8,\n    0xFB8F, 0xFB77, 0xFB60, 0xFB4A, 0xFB34, 0xFB1F, 0xFB0C, 0xFAF9,\n    0xFAE7, 0xFAD6, 0xFAC5, 0xFAB6, 0xFAA8, 0xFA9B, 0xFA8F, 0xFA85,\n    0xFA7B, 0xFA72, 0xFA6B, 0xFA65, 0xFA60, 0xFA5D, 0xFA5A, 0xFA59,\n    0xFA5A, 0xFA5C, 0xFA5F, 0xFA63, 0xFA69, 0xFA70, 0xFA78, 0xFA81,\n    0xFA8B, 0xFA97, 0xFAA3, 0xFAB1, 0xFAC0, 0xFACF, 0xFAE0, 0xFAF2,\n    0xFB04, 0xFB18, 0xFB2C, 0xFB42, 0xFB58, 0xFB6F, 0xFB86, 0xFB9F,\n    0xFBB8, 0xFBD1, 0xFBEC, 0xFC07, 0xFC23, 0xFC3F, 0xFC5C, 0xFC79,\n    0xFC97, 0xFCB5, 0xFCD4, 0xFCF3, 0xFD12, 0xFD32, 0xFD52, 0xFD73,\n    0xFD94, 0xFDB5, 0xFDD6, 0xFDF8, 0xFE19, 0xFE3B, 0xFE5D, 0xFE7F,\n    0xFEA1, 0xFEC3, 0xFEE5, 0xFF07, 0xFF29, 0xFF4B, 0xFF6D, 0xFF8F,\n    0xFFB0, 0xFFD1, 0xFFF3, 0x0012, 0x0033, 0x0053, 0x0073, 0x0093,\n    0x00B2, 0x00D1, 0x00F0, 0x010E, 0x012B, 0x0148, 0x0165, 0x0180,\n    0x019C, 0x01B6, 0x01D0, 0x01EA, 0x0202, 0x021A, 0x0231, 0x0248,\n    0x025D, 0x0272, 0x0286, 0x0299, 0x02AB, 0x02BC, 0x02CC, 0x02DB,\n    0x02E9, 0x02F6, 0x0302, 0x030D, 0x0317, 0xBF3F,\n};\n\n// 0x05008BDC\nstatic const u16 manta_seg5_animindex_05008BDC[] = {\n    0x0001, 0x0000, 0x00C7, 0x0001, 0x0001, 0x00C8, 0x0001, 0x00C9, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x00C7, 0x0ED6, 0x0001, 0x0F9D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0ED5,\n    0x0001, 0x0000, 0x00C7, 0x0258, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x00C7, 0x0191, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x00C7, 0x00CA, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0ED4,\n    0x0001, 0x0000, 0x00C7, 0x04AD, 0x0001, 0x0574,\n    0x0001, 0x0000, 0x00C7, 0x03E6, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x00C7, 0x031F, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0ED3,\n    0x0001, 0x0000, 0x00C7, 0x0E07, 0x0001, 0x0ECE,\n    0x0001, 0x0000, 0x00C7, 0x0D40, 0x0001, 0x0000,\n    0x00C7, 0x0BB2, 0x00C7, 0x0C79, 0x0001, 0x0000,\n    0x00C7, 0x0575, 0x00C7, 0x063C, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0ED2,\n    0x0001, 0x0000, 0x00C7, 0x0703, 0x00C7, 0x07CA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0ED1,\n    0x0001, 0x0891, 0x00C7, 0x0892, 0x0001, 0x0959,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0ED0,\n    0x0001, 0x095A, 0x00C7, 0x095B, 0x00C7, 0x0A22,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0ECF,\n    0x0001, 0x0AE9, 0x00C7, 0x0AEA, 0x0001, 0x0BB1,\n};\n\n// 0x05008CFC\nstatic const struct Animation manta_seg5_anim_05008CFC = {\n    0,\n    0,\n    0,\n    0,\n    0xC7,\n    ANIMINDEX_NUMPARTS(manta_seg5_animindex_05008BDC),\n    manta_seg5_animvalue_05006CA0,\n    manta_seg5_animindex_05008BDC,\n    0,\n};\n"
  },
  {
    "path": "actors/manta/anims/data.inc.c",
    "content": "#include \"anim_05008CFC.inc.c\"\n"
  },
  {
    "path": "actors/manta/anims/table.inc.c",
    "content": "// 0x05008EB4\nconst struct Animation *const manta_seg5_anims_05008EB4[] = {\n    &manta_seg5_anim_05008CFC,\n    NULL,\n    NULL,\n};\n"
  },
  {
    "path": "actors/manta/geo.inc.c",
    "content": "// 0x05008D14\nconst GeoLayout manta_seg5_geo_05008D14[] = {\n     GEO_SCALE(0, 16384),\n     GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(1, 0, 0, 0, NULL),\n        GEO_OPEN_NODE(),\n          GEO_ANIMATED_PART(1, 0, 0, 0, manta_seg5_dl_05006750),\n          GEO_OPEN_NODE(),\n             GEO_ANIMATED_PART(1, 440, 220, 6, NULL),\n             GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(1, 0, 0, 0, manta_seg5_dl_05005358),\n                GEO_OPEN_NODE(),\n                  GEO_ANIMATED_PART(1, 220, 0, 0, manta_seg5_dl_050055A8),\n                  GEO_OPEN_NODE(),\n                     GEO_ANIMATED_PART(1, 180, 0, 0, manta_seg5_dl_05005768),\n                  GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n             GEO_CLOSE_NODE(),\n             GEO_ANIMATED_PART(1, 440, -220, 6, NULL),\n             GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(1, 0, 0, 0, manta_seg5_dl_05005C38),\n                GEO_OPEN_NODE(),\n                  GEO_ANIMATED_PART(1, 220, 0, 0, manta_seg5_dl_05005E88),\n                  GEO_OPEN_NODE(),\n                     GEO_ANIMATED_PART(1, 180, 0, 0, manta_seg5_dl_05006048),\n                  GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n             GEO_CLOSE_NODE(),\n             GEO_ANIMATED_PART(1, 0, 0, 0, NULL),\n             GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(1, 0, 0, 0, manta_seg5_dl_05006C08),\n                GEO_OPEN_NODE(),\n                  GEO_ANIMATED_PART(1, 168, 0, 0, manta_seg5_dl_05006B70),\n                  GEO_OPEN_NODE(),\n                     GEO_ANIMATED_PART(1, 236, 0, 0, manta_seg5_dl_05006B08),\n                     GEO_ANIMATED_PART(1, 236, 0, 0, manta_seg5_dl_05004E90),\n                  GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n             GEO_CLOSE_NODE(),\n             GEO_ANIMATED_PART(1, 688, 120, -6, NULL),\n             GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(1, 0, 0, 0, manta_seg5_dl_05005038),\n             GEO_CLOSE_NODE(),\n             GEO_ANIMATED_PART(1, 668, 170, 6, NULL),\n             GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(1, 0, 0, 0, manta_seg5_dl_05004DB8),\n             GEO_CLOSE_NODE(),\n             GEO_ANIMATED_PART(1, 688, -120, -6, NULL),\n             GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(1, 0, 0, 0, manta_seg5_dl_05005918),\n             GEO_CLOSE_NODE(),\n             GEO_ANIMATED_PART(1, 668, -170, 6, NULL),\n             GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(1, 0, 0, 0, manta_seg5_dl_05004A70),\n             GEO_CLOSE_NODE(),\n          GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n     GEO_CLOSE_NODE(),\n     GEO_END(),\n};\n"
  },
  {
    "path": "actors/manta/model.inc.c",
    "content": "// Manta Ray\n\n// 0x05001758\nstatic const Lights1 manta_seg5_lights_05001758 = gdSPDefLights1(\n    0x31, 0x3b, 0x3b,\n    0xc6, 0xee, 0xed, 0x28, 0x28, 0x28\n);\n\n// 0x05001770\nstatic const Lights1 manta_seg5_lights_05001770 = gdSPDefLights1(\n    0x00, 0x16, 0x18,\n    0x03, 0x5b, 0x63, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nstatic const Lights1 manta_lights_unused = gdSPDefLights1(\n    0x3f, 0x3f, 0x35,\n    0xff, 0xff, 0xd7, 0x28, 0x28, 0x28\n);\n\n// 0x050017A0\nALIGNED8 static const Texture manta_seg5_texture_050017A0[] = {\n#include \"actors/manta/manta_fin_corner.rgba16.inc.c\"\n};\n\n// 0x05001FA0\nALIGNED8 static const Texture manta_seg5_texture_05001FA0[] = {\n#include \"actors/manta/manta_gills.rgba16.inc.c\"\n};\n\n// 0x05002FA0\nALIGNED8 static const Texture manta_seg5_texture_05002FA0[] = {\n#include \"actors/manta/manta_eye.rgba16.inc.c\"\n};\n\n// 0x050037A0\nALIGNED8 static const Texture manta_seg5_texture_050037A0[] = {\n#include \"actors/manta/manta_fin_edge.rgba16.inc.c\"\n};\n\n// 0x050047A0\nstatic const Vtx manta_seg5_vertex_050047A0[] = {\n    {{{    60,    -41,     -9}, 0, {   112,    436}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    51,      3,    -29}, 0, {   718,    778}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    60,      2,      2}, 0, {   836,    436}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    27,    -25,    -55}, 0, {   224,   1082}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    51,    -26,    -37}, 0, {   274,    802}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    12,    -59,    -29}, 0, {  -108,   1004}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    27,     15,    -44}, 0, {   766,   1082}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    51,      3,    -29}, 0, {   670,    802}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    12,     30,      3}, 0, {  1114,    962}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    51,    -26,    -37}, 0, {   208,    756}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    60,    -41,     -9}, 0, {    96,    416}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    12,    -59,    -29}, 0, {  -270,    708}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    51,    -26,    -37}, 0, {   224,    778}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    60,      2,      2}, 0, {   868,    416}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    51,      3,    -29}, 0, {   750,    756}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    12,     30,      3}, 0, {  1304,    626}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x050048A0\nstatic const Vtx manta_seg5_vertex_050048A0[] = {\n    {{{   -23,    -42,      8}, 0, {   394,     38}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -48,    -24,    -36}, 0, {   286,    704}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    12,    -59,    -29}, 0, {   554,    584}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    27,    -25,    -55}, 0, {   622,    960}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -60,     27,    -28}, 0, {   232,    594}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -26,      9,     23}, 0, {   380,   -172}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    27,     15,    -44}, 0, {   622,    794}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    60,    -41,     -9}, 0, {   770,    280}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    33,    -47,     23}, 0, {   648,   -192}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    12,     30,      3}, 0, {   554,     98}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    33,     -6,     34}, 0, {   648,   -358}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    60,      2,      2}, 0, {   770,    102}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x05004960 - 0x050049C8\nconst Gfx manta_seg5_dl_05004960[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, manta_seg5_texture_05002FA0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(manta_seg5_vertex_050047A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050049C8 - 0x05004A70\nconst Gfx manta_seg5_dl_050049C8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, manta_seg5_texture_050017A0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(manta_seg5_vertex_050048A0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  4, 0x0),\n    gsSP2Triangles( 1,  0,  5, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 1,  5,  4, 0x0,  3,  4,  6, 0x0),\n    gsSP2Triangles( 7,  8,  2, 0x0,  8,  0,  2, 0x0),\n    gsSP2Triangles( 6,  4,  9, 0x0,  4,  5,  9, 0x0),\n    gsSP2Triangles( 5, 10,  9, 0x0, 10, 11,  9, 0x0),\n    gsSP2Triangles( 0, 10,  5, 0x0,  0,  8, 10, 0x0),\n    gsSP2Triangles( 8,  7, 11, 0x0,  8, 11, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004A70 - 0x05004AE8\nconst Gfx manta_seg5_dl_05004A70[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGB, G_CC_DECALRGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(manta_seg5_dl_05004960),\n    gsSPDisplayList(manta_seg5_dl_050049C8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004AE8\nstatic const Vtx manta_seg5_vertex_05004AE8[] = {\n    {{{    60,     -1,      2}, 0, {   836,    436}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    51,     -2,    -29}, 0, {   718,    778}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    60,     42,     -9}, 0, {   112,    436}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    12,     60,    -29}, 0, {  -108,   1004}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    51,     27,    -37}, 0, {   274,    802}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    27,     26,    -55}, 0, {   224,   1082}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    27,    -14,    -44}, 0, {   766,   1082}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    51,     -2,    -29}, 0, {   670,    802}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    12,    -29,      3}, 0, {  1114,    962}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    12,     60,    -29}, 0, {  -270,    708}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    60,     42,     -9}, 0, {    96,    416}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    51,     27,    -37}, 0, {   208,    756}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    51,     27,    -37}, 0, {   224,    778}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    12,    -29,      3}, 0, {  1304,    626}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    51,     -2,    -29}, 0, {   750,    756}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    60,     -1,      2}, 0, {   868,    416}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x05004BE8\nstatic const Vtx manta_seg5_vertex_05004BE8[] = {\n    {{{    12,     60,    -29}, 0, {   554,    584}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    33,     48,     23}, 0, {   648,   -192}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    60,     42,     -9}, 0, {   770,    280}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -23,     43,      8}, 0, {   394,     38}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -48,     25,    -36}, 0, {   286,    704}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    27,     26,    -55}, 0, {   622,    960}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    27,    -14,    -44}, 0, {   622,    794}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -60,    -26,    -28}, 0, {   232,    594}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -26,     -8,     23}, 0, {   380,   -172}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    12,    -29,      3}, 0, {   554,     98}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    33,      7,     34}, 0, {   648,   -358}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    60,     -1,      2}, 0, {   770,    102}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x05004CA8 - 0x05004D10\nconst Gfx manta_seg5_dl_05004CA8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, manta_seg5_texture_05002FA0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(manta_seg5_vertex_05004AE8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  5,  4, 0x0,  7,  6,  4, 0x0),\n    gsSP2Triangles( 8,  6,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 1, 12,  2, 0x0, 13, 14, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004D10 - 0x05004DB8\nconst Gfx manta_seg5_dl_05004D10[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, manta_seg5_texture_050017A0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(manta_seg5_vertex_05004BE8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  0,  5,  4, 0x0),\n    gsSP2Triangles( 6,  7,  5, 0x0,  7,  4,  5, 0x0),\n    gsSP2Triangles( 8,  3,  4, 0x0,  7,  8,  4, 0x0),\n    gsSP2Triangles( 9,  7,  6, 0x0,  9,  8,  7, 0x0),\n    gsSP2Triangles( 9, 10,  8, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles( 8, 10,  3, 0x0, 10,  1,  3, 0x0),\n    gsSP2Triangles(11,  2,  1, 0x0, 10, 11,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004DB8 - 0x05004E30\nconst Gfx manta_seg5_dl_05004DB8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGB, G_CC_DECALRGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(manta_seg5_dl_05004CA8),\n    gsSPDisplayList(manta_seg5_dl_05004D10),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004E30\nstatic const Vtx manta_seg5_vertex_05004E30[] = {\n    {{{    97,      0,     52}, 0, {   412,    534}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   135,      0,      0}, 0, {   432,    770}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   274,      0,      0}, 0, {  1244,    550}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x05004E60 - 0x05004E90\nconst Gfx manta_seg5_dl_05004E60[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, manta_seg5_texture_050037A0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(manta_seg5_vertex_05004E30, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004E90 - 0x05004F00\nconst Gfx manta_seg5_dl_05004E90[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(manta_seg5_dl_05004E60),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004F00\nstatic const Vtx manta_seg5_vertex_05004F00[] = {\n    {{{   172,    -21,     42}, 0, {   862,   -544}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   184,    -11,      8}, 0, {   918,    -60}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   102,     18,      2}, 0, {   544,    108}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    92,    -11,      2}, 0, {   500,    116}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    92,     -1,    -23}, 0, {   500,    496}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   102,     -1,     32}, 0, {   544,   -330}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -15,    -31,     32}, 0, {     8,   -216}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -15,    -31,    -31}, 0, {     8,    718}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -15,     18,     32}, 0, {     8,   -216}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -15,     18,    -31}, 0, {     8,    718}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x05004FA0 - 0x05005038\nconst Gfx manta_seg5_dl_05004FA0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, manta_seg5_texture_050017A0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(manta_seg5_vertex_05004F00, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 1,  0,  3, 0x0,  2,  1,  4, 0x0),\n    gsSP2Triangles( 3,  0,  5, 0x0,  2,  5,  0, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  4,  3, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  8,  5,  2, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  9,  2,  4, 0x0),\n    gsSP2Triangles( 4,  7,  9, 0x0,  2,  9,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005038 - 0x050050A8\nconst Gfx manta_seg5_dl_05005038[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(manta_seg5_dl_05004FA0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x050050A8\nstatic const Vtx manta_seg5_vertex_050050A8[] = {\n    {{{   -89,    -89,      0}, 0, {   376,    742}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -119,    -39}, 0, {     0,    626}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -159,      0}, 0, {     0,     40}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -119,    -39}, 0, {   990,    626}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   220,    -89,    -19}, 0, {   780,    948}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   220,   -123,      0}, 0, {   780,    656}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -159,      0}, 0, {   990,     40}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x05005118\nstatic const Vtx manta_seg5_vertex_05005118[] = {\n    {{{   220,    -89,     20}, 0, {   812,    282}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   220,   -123,      0}, 0, {   812,    242}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   244,    -63,      0}, 0, {   840,    314}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -119,     30}, 0, {   552,    248}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -159,      0}, 0, {   552,    200}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -89,    -89,      0}, 0, {   448,    282}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -89,    140,      0}, 0, {   448,    556}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    180,     30}, 0, {   552,    604}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    350,      0}, 0, {   552,    806}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   220,    228,      0}, 0, {   812,    660}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x050051B8\nstatic const Vtx manta_seg5_vertex_050051B8[] = {\n    {{{   244,    -63,      0}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{   220,   -123,      0}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{   220,    -89,    -19}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{     0,   -119,    -39}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{     0,    180,    -39}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{   220,    228,      0}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{   -89,    -89,      0}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{   -89,    140,      0}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{     0,    350,      0}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n};\n\n// 0x05005248 - 0x05005288\nconst Gfx manta_seg5_dl_05005248[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, manta_seg5_texture_050017A0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(manta_seg5_vertex_050050A8, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  3,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005288 - 0x05005308\nconst Gfx manta_seg5_dl_05005288[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, manta_seg5_texture_050037A0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(manta_seg5_vertex_05005118, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 1,  0,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 5,  3,  6, 0x0,  3,  7,  6, 0x0),\n    gsSP2Triangles( 7,  3,  0, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9,  8,  7, 0x0,  0,  9,  7, 0x0),\n    gsSP1Triangle( 2,  9,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005308 - 0x05005358\nconst Gfx manta_seg5_dl_05005308[] = {\n    gsSPVertex(manta_seg5_vertex_050051B8, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 0,  2,  5, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 8,  4,  7, 0x0,  5,  4,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005358 - 0x050053F0\nconst Gfx manta_seg5_dl_05005358[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(manta_seg5_dl_05005248),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(manta_seg5_dl_05005288),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(manta_seg5_dl_05005308),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x050053F0\nstatic const Vtx manta_seg5_vertex_050053F0[] = {\n    {{{     0,    -89,     20}, 0, {   804,    296}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    228,      0}, 0, {   804,    674}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -31,    -63,      0}, 0, {   768,    326}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -123,      0}, 0, {   804,    254}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   180,    -91,     10}, 0, {  1016,    292}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   180,   -111,      0}, 0, {  1016,    268}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   180,    120,      0}, 0, {  1016,    544}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   186,    -79,      0}, 0, {  1024,    306}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x05005470\nstatic const Vtx manta_seg5_vertex_05005470[] = {\n    {{{     0,    -89,    -19}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{   180,    120,      0}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{   180,    -91,     -9}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{     0,   -123,      0}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{   180,   -111,      0}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{   -31,    -63,      0}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{     0,    228,      0}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{   186,    -79,      0}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n};\n\n// 0x050054F0 - 0x05005558\nconst Gfx manta_seg5_dl_050054F0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, manta_seg5_texture_050037A0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(manta_seg5_vertex_050053F0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 4,  0,  3, 0x0,  5,  4,  3, 0x0),\n    gsSP2Triangles( 0,  4,  6, 0x0,  0,  6,  1, 0x0),\n    gsSP2Triangles( 4,  5,  7, 0x0,  4,  7,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005558 - 0x050055A8\nconst Gfx manta_seg5_dl_05005558[] = {\n    gsSPVertex(manta_seg5_vertex_05005470, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 5,  6,  0, 0x0,  6,  1,  0, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  0,  3,  5, 0x0),\n    gsSP2Triangles( 7,  2,  1, 0x0,  7,  4,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050055A8 - 0x05005620\nconst Gfx manta_seg5_dl_050055A8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGB, G_CC_DECALRGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(manta_seg5_dl_050054F0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(manta_seg5_dl_05005558),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005620\nstatic const Vtx manta_seg5_vertex_05005620[] = {\n    {{{   167,   -105,      0}, 0, {  1220,    280}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    -89,     10}, 0, {  1024,    298}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -109,      0}, 0, {  1024,    274}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    122,      0}, 0, {  1024,    550}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   180,    -17,      0}, 0, {  1236,    384}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    -7,    -77,      0}, 0, {  1012,    312}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x05005680\nstatic const Vtx manta_seg5_vertex_05005680[] = {\n    {{{     0,    -89,     -9}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{   180,    -17,      0}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{   167,   -105,      0}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{     0,   -109,      0}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{    -7,    -77,      0}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{     0,    122,      0}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n};\n\n// 0x050056E0 - 0x05005730\nconst Gfx manta_seg5_dl_050056E0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, manta_seg5_texture_050037A0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(manta_seg5_vertex_05005620, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  4, 0x0),\n    gsSP2Triangles( 4,  1,  0, 0x0,  1,  3,  5, 0x0),\n    gsSP1Triangle( 5,  2,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005730 - 0x05005768\nconst Gfx manta_seg5_dl_05005730[] = {\n    gsSPVertex(manta_seg5_vertex_05005680, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 3,  0,  2, 0x0,  4,  5,  0, 0x0),\n    gsSP1Triangle( 5,  1,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005768 - 0x050057E0\nconst Gfx manta_seg5_dl_05005768[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(manta_seg5_dl_050056E0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(manta_seg5_dl_05005730),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x050057E0\nstatic const Vtx manta_seg5_vertex_050057E0[] = {\n    {{{   102,      2,     32}, 0, {   544,   -330}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    92,     12,      2}, 0, {   500,    116}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -15,     32,     32}, 0, {     8,   -216}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    92,      2,    -23}, 0, {   500,    496}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -15,     32,    -31}, 0, {     8,    718}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   184,     12,      8}, 0, {   918,    -60}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   172,     22,     42}, 0, {   862,   -544}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   102,    -17,      2}, 0, {   544,    108}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -15,    -17,     32}, 0, {     8,   -216}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -15,    -17,    -31}, 0, {     8,    718}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x05005880 - 0x05005918\nconst Gfx manta_seg5_dl_05005880[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, manta_seg5_texture_050017A0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(manta_seg5_vertex_050057E0, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 5,  3,  1, 0x0,  1,  6,  5, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  4,  2,  1, 0x0),\n    gsSP2Triangles( 7,  5,  6, 0x0,  6,  0,  7, 0x0),\n    gsSP2Triangles( 3,  5,  7, 0x0,  7,  0,  8, 0x0),\n    gsSP2Triangles( 2,  8,  0, 0x0,  3,  7,  9, 0x0),\n    gsSP2Triangles( 9,  4,  3, 0x0,  8,  9,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005918 - 0x05005988\nconst Gfx manta_seg5_dl_05005918[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(manta_seg5_dl_05005880),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005988\nstatic const Vtx manta_seg5_vertex_05005988[] = {\n    {{{     0,    160,      0}, 0, {     0,     40}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    120,    -39}, 0, {     0,    626}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -89,     90,      0}, 0, {   376,    742}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   220,    124,      0}, 0, {   780,    656}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   220,     90,    -19}, 0, {   780,    948}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    120,    -39}, 0, {   990,    626}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    160,      0}, 0, {   990,     40}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x050059F8\nstatic const Vtx manta_seg5_vertex_050059F8[] = {\n    {{{   244,     64,      0}, 0, {   840,    314}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   220,    124,      0}, 0, {   812,    242}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   220,     90,     20}, 0, {   812,    282}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -89,   -139,      0}, 0, {   448,    556}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    120,     30}, 0, {   552,    248}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -89,     90,      0}, 0, {   448,    282}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    160,      0}, 0, {   552,    200}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -179,     30}, 0, {   552,    604}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -349,      0}, 0, {   552,    806}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   220,   -227,      0}, 0, {   812,    660}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x05005A98\nstatic const Vtx manta_seg5_vertex_05005A98[] = {\n    {{{   220,   -227,      0}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{   220,     90,    -19}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{   244,     64,      0}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{     0,   -349,      0}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{     0,   -179,    -39}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{     0,    120,    -39}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{   -89,     90,      0}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{   -89,   -139,      0}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{   220,    124,      0}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n};\n\n// 0x05005B28 - 0x05005B68\nconst Gfx manta_seg5_dl_05005B28[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, manta_seg5_texture_050017A0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(manta_seg5_vertex_05005988, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 3,  5,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005B68 - 0x05005BE8\nconst Gfx manta_seg5_dl_05005B68[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, manta_seg5_texture_050037A0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(manta_seg5_vertex_050059F8, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  6,  4,  2, 0x0),\n    gsSP2Triangles( 3,  7,  4, 0x0,  2,  4,  7, 0x0),\n    gsSP2Triangles( 6,  2,  1, 0x0,  8,  7,  3, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7,  9,  2, 0x0),\n    gsSP1Triangle( 2,  9,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005BE8 - 0x05005C38\nconst Gfx manta_seg5_dl_05005BE8[] = {\n    gsSPVertex(manta_seg5_vertex_05005A98, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  4,  5,  1, 0x0),\n    gsSP2Triangles( 6,  5,  4, 0x0,  6,  4,  7, 0x0),\n    gsSP2Triangles( 7,  4,  3, 0x0,  1,  8,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005C38 - 0x05005CD0\nconst Gfx manta_seg5_dl_05005C38[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(manta_seg5_dl_05005B28),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(manta_seg5_dl_05005B68),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(manta_seg5_dl_05005BE8),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005CD0\nstatic const Vtx manta_seg5_vertex_05005CD0[] = {\n    {{{   180,   -119,      0}, 0, {  1016,    538}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   180,     92,     10}, 0, {  1016,    286}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,     90,     20}, 0, {   804,    290}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -31,     64,      0}, 0, {   764,    320}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -227,      0}, 0, {   804,    668}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    124,      0}, 0, {   804,    248}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   180,    112,      0}, 0, {  1016,    264}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   186,     80,      0}, 0, {  1024,    302}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x05005D50\nstatic const Vtx manta_seg5_vertex_05005D50[] = {\n    {{{   180,     92,     -9}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{   180,   -119,      0}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{     0,     90,    -19}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{   186,     80,      0}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{   180,    112,      0}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{     0,   -227,      0}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{     0,    124,      0}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{   -31,     64,      0}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n};\n\n// 0x05005DD0 - 0x05005E38\nconst Gfx manta_seg5_dl_05005DD0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, manta_seg5_texture_050037A0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(manta_seg5_vertex_05005CD0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 2,  5,  3, 0x0,  5,  2,  1, 0x0),\n    gsSP2Triangles( 4,  0,  2, 0x0,  5,  1,  6, 0x0),\n    gsSP2Triangles( 7,  6,  1, 0x0,  0,  7,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005E38 - 0x05005E88\nconst Gfx manta_seg5_dl_05005E38[] = {\n    gsSPVertex(manta_seg5_vertex_05005D50, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  4,  0,  2, 0x0),\n    gsSP2Triangles( 2,  1,  5, 0x0,  4,  2,  6, 0x0),\n    gsSP2Triangles( 2,  5,  7, 0x0,  7,  6,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005E88 - 0x05005F00\nconst Gfx manta_seg5_dl_05005E88[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(manta_seg5_dl_05005DD0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(manta_seg5_dl_05005E38),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005F00\nstatic const Vtx manta_seg5_vertex_05005F00[] = {\n    {{{     0,     90,     10}, 0, {  1024,    298}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    110,      0}, 0, {  1024,    274}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    -7,     78,      0}, 0, {  1012,    312}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   167,    106,      0}, 0, {  1220,    280}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   180,     18,      0}, 0, {  1236,    384}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -121,      0}, 0, {  1024,    550}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x05005F60\nstatic const Vtx manta_seg5_vertex_05005F60[] = {\n    {{{     0,     90,     -9}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{   180,     18,      0}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{     0,   -121,      0}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{   167,    106,      0}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{     0,    110,      0}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{    -7,     78,      0}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n};\n\n// 0x05005FC0 - 0x05006010\nconst Gfx manta_seg5_dl_05005FC0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, manta_seg5_texture_050037A0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(manta_seg5_vertex_05005F00, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 1,  0,  3, 0x0,  4,  0,  5, 0x0),\n    gsSP1Triangle( 2,  5,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05006010 - 0x05006048\nconst Gfx manta_seg5_dl_05006010[] = {\n    gsSPVertex(manta_seg5_vertex_05005F60, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 3,  0,  4, 0x0,  0,  2,  5, 0x0),\n    gsSP1Triangle( 5,  4,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05006048 - 0x050060C0\nconst Gfx manta_seg5_dl_05006048[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(manta_seg5_dl_05005FC0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(manta_seg5_dl_05006010),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x050060C0\nstatic const Vtx manta_seg5_vertex_050060C0[] = {\n    {{{   600,    220,      6}, 0, {     0,     36}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   560,    220,    -33}, 0, {     0,    718}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   532,    288,      6}, 0, {   178,    388}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   730,      0,    -43}, 0, {   480,    888}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   740,    120,     26}, 0, {   758,   -304}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   770,      0,     16}, 0, {   480,   -134}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   670,    130,    -53}, 0, {   780,   1056}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   740,   -119,     26}, 0, {   200,   -304}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   670,   -129,    -53}, 0, {   178,   1056}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   560,    220,    -33}, 0, {   990,    718}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   600,    220,      6}, 0, {   990,     36}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   600,   -219,      6}, 0, {     0,     36}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   560,   -219,    -33}, 0, {     0,    718}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   532,   -287,      6}, 0, {   178,    388}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x050061A0\nstatic const Vtx manta_seg5_vertex_050061A0[] = {\n    {{{   260,   -219,    -33}, 0, {     0,   2324}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   220,      0,    -73}, 0, {  1092,   2532}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   504,      0,    -91}, 0, {  1092,   1048}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   560,   -219,    -33}, 0, {     0,    756}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   260,    220,    -33}, 0, {     0,   2324}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   560,    220,    -33}, 0, {     0,    756}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   560,   -219,    -33}, 0, {   -10,     48}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   504,      0,    -91}, 0, {  1212,    864}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   670,   -129,    -53}, 0, {   490,     16}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   670,   -129,    -53}, 0, {   532,      8}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   504,      0,    -91}, 0, {   990,    912}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   730,      0,    -43}, 0, {   990,    -72}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   670,    130,    -53}, 0, {   490,     16}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   560,    220,    -33}, 0, {   -10,     48}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   670,    130,    -53}, 0, {   532,      8}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x05006290\nstatic const Vtx manta_seg5_vertex_05006290[] = {\n    {{{   740,    120,     26}, 0, {   144,     40}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   560,    220,     36}, 0, {    28,    254}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   500,      0,     56}, 0, {   288,    324}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   532,   -287,      6}, 0, {   628,    286}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   600,   -219,      6}, 0, {   548,    206}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   560,   -219,     36}, 0, {   548,    254}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   260,   -219,     36}, 0, {   548,    610}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   300,   -287,      6}, 0, {   628,    562}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   740,   -119,     26}, 0, {   428,     40}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   260,    220,     36}, 0, {    28,    610}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    20,   -109,      6}, 0, {   416,    894}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    90,   -219,      6}, 0, {   548,    812}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   770,      0,     16}, 0, {   288,      4}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   600,    220,      6}, 0, {    28,    206}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x05006370\nstatic const Vtx manta_seg5_vertex_05006370[] = {\n    {{{   560,    220,     36}, 0, {   536,    250}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   600,    220,      6}, 0, {   536,    202}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   532,    288,      6}, 0, {   616,    284}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   260,    220,     36}, 0, {    28,    610}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    20,    120,     16}, 0, {   144,    894}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    20,   -109,      6}, 0, {   416,    894}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -39,      0,      6}, 0, {   288,    966}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    90,    220,      6}, 0, {    28,    812}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    90,    220,      6}, 0, {   536,    810}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   260,    220,     36}, 0, {   536,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   300,    288,      6}, 0, {   616,    560}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x05006420\nstatic const Vtx manta_seg5_vertex_05006420[] = {\n    {{{   300,    288,      6}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{   260,    220,    -33}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{    90,    220,      6}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{    80,      0,    -40}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{    90,   -219,      6}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{    20,   -109,      6}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{   260,   -219,    -33}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{   300,   -287,      6}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{   532,   -287,      6}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{   560,   -219,    -33}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{   220,      0,    -73}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{   532,    288,      6}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{   560,    220,    -33}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{   -39,      0,      6}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n    {{{    20,    120,     16}, 0, {     0,      0}, {0xc6, 0xee, 0xed, 0xff}}},\n};\n\n// 0x05006510 - 0x05006588\nconst Gfx manta_seg5_dl_05006510[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, manta_seg5_texture_050017A0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(manta_seg5_vertex_050060C0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  5,  7, 0x0),\n    gsSP2Triangles( 7,  8,  3, 0x0,  6,  9, 10, 0x0),\n    gsSP2Triangles( 4,  6, 10, 0x0, 11, 12,  8, 0x0),\n    gsSP2Triangles( 8,  7, 11, 0x0, 13, 12, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05006588 - 0x050065F0\nconst Gfx manta_seg5_dl_05006588[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, manta_seg5_texture_05001FA0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(manta_seg5_vertex_050061A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  5,  2,  4, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12,  7, 13, 0x0, 11, 10, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050065F0 - 0x050066D0\nconst Gfx manta_seg5_dl_050065F0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, manta_seg5_texture_050037A0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(manta_seg5_vertex_05006290, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  2,  5,  8, 0x0),\n    gsSP2Triangles( 8,  5,  4, 0x0,  6,  5,  2, 0x0),\n    gsSP2Triangles( 5,  7,  3, 0x0,  6,  2,  9, 0x0),\n    gsSP2Triangles(10,  6,  9, 0x0,  7,  6, 11, 0x0),\n    gsSP2Triangles(10, 11,  6, 0x0,  8, 12,  0, 0x0),\n    gsSP2Triangles( 0,  2,  8, 0x0, 13,  1,  0, 0x0),\n    gsSP1Triangle( 2,  1,  9, 0x0),\n    gsSPVertex(manta_seg5_vertex_05006370, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  3,  7,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9,  0, 0x0),\n    gsSP1Triangle( 2, 10,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050066D0 - 0x05006750\nconst Gfx manta_seg5_dl_050066D0[] = {\n    gsSPVertex(manta_seg5_vertex_05006420, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  7,  6, 0x0,  8,  6,  9, 0x0),\n    gsSP2Triangles( 3, 10,  6, 0x0, 11, 12,  1, 0x0),\n    gsSP2Triangles(11,  1,  0, 0x0,  1, 10,  3, 0x0),\n    gsSP2Triangles( 2,  1,  3, 0x0,  3, 13, 14, 0x0),\n    gsSP2Triangles( 2,  3, 14, 0x0,  5, 13,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05006750 - 0x05006808\nconst Gfx manta_seg5_dl_05006750[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGB, G_CC_DECALRGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(manta_seg5_dl_05006510),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(manta_seg5_dl_05006588),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(manta_seg5_dl_050065F0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(manta_seg5_dl_050066D0),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x05006808\nstatic const Vtx manta_seg5_vertex_05006808[] = {\n    {{{     0,     -5,     -3}, 0, {     0,      0}, {0xf3, 0x98, 0x46, 0x00}}},\n    {{{     0,      0,      4}, 0, {     0,      0}, {0xf6, 0x00, 0x7e, 0x00}}},\n    {{{    -4,      0,      2}, 0, {     0,      0}, {0xa9, 0x00, 0x5b, 0x00}}},\n    {{{   238,      0,      0}, 0, {     0,      0}, {0x01, 0x66, 0x4a, 0x00}}},\n    {{{     0,      5,     -3}, 0, {     0,      0}, {0xf3, 0x68, 0x46, 0x00}}},\n    {{{   238,      0,      0}, 0, {     0,      0}, {0x01, 0x9a, 0x4a, 0x00}}},\n};\n\n// 0x05006868\nstatic const Vtx manta_seg5_vertex_05006868[] = {\n    {{{    -4,      0,      2}, 0, {     0,      0}, {0xa9, 0x00, 0x5b, 0x00}}},\n    {{{     0,      5,     -3}, 0, {     0,      0}, {0xf3, 0x68, 0x46, 0x00}}},\n    {{{     0,     -5,     -3}, 0, {     0,      0}, {0xf3, 0x98, 0x46, 0x00}}},\n    {{{     0,     -5,     -3}, 0, {     0,      0}, {0x01, 0x00, 0x81, 0x00}}},\n    {{{     0,      5,     -3}, 0, {     0,      0}, {0x01, 0x00, 0x81, 0x00}}},\n    {{{   238,      0,      0}, 0, {     0,      0}, {0x01, 0x00, 0x81, 0x00}}},\n};\n\n// 0x050068C8\nstatic const Vtx manta_seg5_vertex_050068C8[] = {\n    {{{     0,     -8,     -5}, 0, {     0,      0}, {0xf1, 0x94, 0x3f, 0x00}}},\n    {{{     0,      0,      7}, 0, {     0,      0}, {0xf4, 0x00, 0x7e, 0x00}}},\n    {{{    -7,      0,      0}, 0, {     0,      0}, {0x84, 0x00, 0x18, 0x00}}},\n    {{{   236,     -5,     -3}, 0, {     0,      0}, {0x13, 0x8e, 0xcd, 0x00}}},\n    {{{   240,      0,      0}, 0, {     0,      0}, {0x7b, 0x00, 0x1b, 0x00}}},\n    {{{   236,      0,      4}, 0, {     0,      0}, {0x0f, 0x00, 0x7e, 0x00}}},\n    {{{   236,      5,     -3}, 0, {     0,      0}, {0x13, 0x72, 0xcd, 0x00}}},\n    {{{     0,      8,     -5}, 0, {     0,      0}, {0xf1, 0x6c, 0x3f, 0x00}}},\n};\n\n// 0x05006948\nstatic const Vtx manta_seg5_vertex_05006948[] = {\n    {{{    -7,      0,      0}, 0, {     0,      0}, {0x84, 0x00, 0x18, 0x00}}},\n    {{{     0,      8,     -5}, 0, {     0,      0}, {0xf1, 0x6c, 0x3f, 0x00}}},\n    {{{     0,     -8,     -5}, 0, {     0,      0}, {0xf1, 0x94, 0x3f, 0x00}}},\n    {{{   236,      5,     -3}, 0, {     0,      0}, {0x13, 0x72, 0xcd, 0x00}}},\n    {{{   240,      0,      0}, 0, {     0,      0}, {0x7b, 0x00, 0x1b, 0x00}}},\n    {{{   236,     -5,     -3}, 0, {     0,      0}, {0x13, 0x8e, 0xcd, 0x00}}},\n    {{{     0,     -8,     -5}, 0, {     0,      0}, {0x01, 0x00, 0x81, 0x00}}},\n    {{{     0,      8,     -5}, 0, {     0,      0}, {0x01, 0x00, 0x81, 0x00}}},\n};\n\n// 0x050069C8\nstatic const Vtx manta_seg5_vertex_050069C8[] = {\n    {{{     0,    -11,     -7}, 0, {     0,      0}, {0x95, 0xbf, 0xee, 0x00}}},\n    {{{     0,      0,     10}, 0, {     0,      0}, {0x9d, 0x00, 0x4f, 0x00}}},\n    {{{    -8,      0,      0}, 0, {     0,      0}, {0x83, 0x00, 0x13, 0x00}}},\n    {{{   168,     -8,     -5}, 0, {     0,      0}, {0x13, 0x8f, 0xcc, 0x00}}},\n    {{{   175,      0,      0}, 0, {     0,      0}, {0x7c, 0x00, 0x18, 0x00}}},\n    {{{   168,      0,      7}, 0, {     0,      0}, {0x10, 0x00, 0x7d, 0x00}}},\n    {{{   168,      8,     -5}, 0, {     0,      0}, {0x13, 0x71, 0xcc, 0x00}}},\n    {{{     0,     11,     -7}, 0, {     0,      0}, {0x95, 0x41, 0xee, 0x00}}},\n    {{{     0,      0,     10}, 0, {     0,      0}, {0x01, 0x97, 0x46, 0x00}}},\n    {{{     0,    -11,     -7}, 0, {     0,      0}, {0x01, 0x97, 0x46, 0x00}}},\n    {{{     0,     11,     -7}, 0, {     0,      0}, {0x01, 0x69, 0x46, 0x00}}},\n    {{{     0,      0,     10}, 0, {     0,      0}, {0x01, 0x69, 0x46, 0x00}}},\n};\n\n// 0x05006A88\nstatic const Vtx manta_seg5_vertex_05006A88[] = {\n    {{{    -8,      0,      0}, 0, {     0,      0}, {0x83, 0x00, 0x13, 0x00}}},\n    {{{     0,     11,     -7}, 0, {     0,      0}, {0x95, 0x41, 0xee, 0x00}}},\n    {{{     0,    -11,     -7}, 0, {     0,      0}, {0x95, 0xbf, 0xee, 0x00}}},\n    {{{   168,      8,     -5}, 0, {     0,      0}, {0x13, 0x71, 0xcc, 0x00}}},\n    {{{   175,      0,      0}, 0, {     0,      0}, {0x7c, 0x00, 0x18, 0x00}}},\n    {{{   168,     -8,     -5}, 0, {     0,      0}, {0x13, 0x8f, 0xcc, 0x00}}},\n    {{{     0,    -11,     -7}, 0, {     0,      0}, {0x01, 0x00, 0x81, 0x00}}},\n    {{{     0,     11,     -7}, 0, {     0,      0}, {0x01, 0x00, 0x81, 0x00}}},\n};\n\n// 0x05006B08 - 0x05006B70\nconst Gfx manta_seg5_dl_05006B08[] = {\n    gsSPLight(&manta_seg5_lights_05001770.l, 1),\n    gsSPLight(&manta_seg5_lights_05001770.a, 2),\n    gsSPVertex(manta_seg5_vertex_05006808, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  1,  0,  5, 0x0),\n    gsSPLight(&manta_seg5_lights_05001758.l, 1),\n    gsSPLight(&manta_seg5_lights_05001758.a, 2),\n    gsSPVertex(manta_seg5_vertex_05006868, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05006B70 - 0x05006C08\nconst Gfx manta_seg5_dl_05006B70[] = {\n    gsSPLight(&manta_seg5_lights_05001770.l, 1),\n    gsSPLight(&manta_seg5_lights_05001770.a, 2),\n    gsSPVertex(manta_seg5_vertex_050068C8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  1,  7,  2, 0x0),\n    gsSP2Triangles( 5,  1,  0, 0x0,  5,  0,  3, 0x0),\n    gsSP2Triangles( 6,  7,  1, 0x0,  6,  1,  5, 0x0),\n    gsSPLight(&manta_seg5_lights_05001758.l, 1),\n    gsSPLight(&manta_seg5_lights_05001758.a, 2),\n    gsSPVertex(manta_seg5_vertex_05006948, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  7,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05006C08 - 0x05006CA0\nconst Gfx manta_seg5_dl_05006C08[] = {\n    gsSPLight(&manta_seg5_lights_05001770.l, 1),\n    gsSPLight(&manta_seg5_lights_05001770.a, 2),\n    gsSPVertex(manta_seg5_vertex_050069C8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  1,  7,  2, 0x0),\n    gsSP2Triangles( 5,  8,  9, 0x0,  5,  9,  3, 0x0),\n    gsSP2Triangles( 6, 10, 11, 0x0,  6, 11,  5, 0x0),\n    gsSPLight(&manta_seg5_lights_05001758.l, 1),\n    gsSPLight(&manta_seg5_lights_05001758.a, 2),\n    gsSPVertex(manta_seg5_vertex_05006A88, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  7,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/mario/geo.inc.c",
    "content": "// Normal Mario Geo\n\n// 0x170002E0\nconst GeoLayout mario_geo_face_and_wings[] = {\n    GEO_ASM(0, geo_mario_head_rotation),\n    GEO_ROTATION_NODE(0x00, 0, 0, 0),\n    GEO_OPEN_NODE(),\n        GEO_SWITCH_CASE(0, geo_switch_mario_cap_on_off),\n        GEO_OPEN_NODE(),\n            GEO_SWITCH_CASE(0, geo_switch_mario_eyes),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_cap_on_eyes_front),\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_cap_on_eyes_half_closed),\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_cap_on_eyes_closed),\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_cap_on_eyes_right), // unused\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_cap_on_eyes_left), // unused\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_cap_on_eyes_up), // unused\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_cap_on_eyes_down), // unused\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_cap_on_eyes_dead),\n            GEO_CLOSE_NODE(),\n            GEO_SWITCH_CASE(0, geo_switch_mario_eyes),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_cap_off_eyes_front),\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_cap_off_eyes_half_closed),\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_cap_off_eyes_closed),\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_cap_off_eyes_right), // unused\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_cap_off_eyes_left), // unused\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_cap_off_eyes_up), // unused\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_cap_off_eyes_down), // unused\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_cap_off_eyes_dead),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_TRANSLATE_ROTATE(0, 142, -51, -126, 22, -40, -135),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_mario_rotate_wing_cap_wings),\n            GEO_ROTATION_NODE(0x00, 0, 0, 0),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_ALPHA, mario_cap_wings), // left\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_TRANSLATE_ROTATE(0, 142, -51, 126, -22, 40, -135),\n        GEO_OPEN_NODE(),\n            GEO_ASM(1, geo_mario_rotate_wing_cap_wings),\n            GEO_ROTATION_NODE(0x00, 0, 0, 0),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_ALPHA, mario_cap_wings), // right\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x1700041C\nconst GeoLayout mario_geo_left_hand[] = {\n    GEO_SWITCH_CASE(1, geo_switch_mario_hand),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, NULL),\n        GEO_OPEN_NODE(),\n            GEO_ASM(1, geo_mario_hand_foot_scaler),\n            GEO_SCALE(0x00, 65536),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_left_hand_closed),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_left_hand_open),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_left_hand_closed),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_left_hand_closed),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_left_hand_closed),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x17000494\nconst GeoLayout mario_geo_right_hand[] = {\n    GEO_SWITCH_CASE(0, geo_switch_mario_hand),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, NULL),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_mario_hand_foot_scaler),\n            GEO_SCALE(0x00, 65536),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_right_hand_closed),\n            GEO_CLOSE_NODE(),\n            GEO_HELD_OBJECT(0x00, 0, 0, 0, geo_switch_mario_hand_grab_pos),\n        GEO_CLOSE_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_right_hand_open),\n        GEO_OPEN_NODE(),\n            GEO_HELD_OBJECT(0x00, 0, 0, 0, geo_switch_mario_hand_grab_pos),\n        GEO_CLOSE_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_right_hand_peace), // here we go hand\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_right_hand_cap),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_right_hand_cap),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, mario_right_hand_cap_wings),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// The body loads all the parts with some shared dls to apply the solid color of the dl that has it, the same rule applies to the medium and low poly geos\n\n// 0x1700053C\nconst GeoLayout mario_geo_body[] = {\n    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_butt), // starts sharing solid color with mario_torso (blue)\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_move_mario_part_from_parent),\n            GEO_ASM(0, geo_mario_tilt_torso),\n            GEO_ROTATION_NODE(0x00, 0, 0, 0),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 68, 0, 0, mario_torso),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 87, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_BRANCH(1, mario_geo_face_and_wings), // stops sharing because faces has its own dl\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 67, -10, 79, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_left_arm), // starts sharing solid color with mario_left_forearm (red)\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 65, 0, 0, mario_left_forearm_shared_dl),\n                            GEO_OPEN_NODE(),\n                                GEO_BRANCH(1, mario_geo_left_hand), // stops sharing because hand has its solid color (white)\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 68, -10, -79, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_right_arm), // starts sharing solid color of his dl with mario_right_forearm (red)\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 65, 0, 0, mario_right_forearm_shared_dl),\n                            GEO_OPEN_NODE(),\n                                GEO_BRANCH(1, mario_geo_right_hand), // stops sharing because hand has its solid color (white)\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 13, -8, 42, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_left_thigh), // starts sharing solid color of his dl with mario_left_leg (blue)\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 89, 0, 0, mario_left_leg_shared_dl),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 67, 0, 0, mario_left_foot), // stops sharing because foot has its solid color (brown)\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 13, -8, -42, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_right_thigh), // starts sharing solid color of his dl with mario_left_leg (blue)\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 89, 0, 0, mario_right_leg_shared_dl),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 67, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ASM(2, geo_mario_hand_foot_scaler),\n                            GEO_SCALE(0x00, 65536),\n                            GEO_OPEN_NODE(),\n                                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_right_foot), // stops sharing because foot has its solid color (brown)\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x170006F8\nconst GeoLayout mario_geo_medium_poly_left_hand[] = {\n    GEO_SWITCH_CASE(1, geo_switch_mario_hand),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, NULL),\n        GEO_OPEN_NODE(),\n            GEO_ASM(1, geo_mario_hand_foot_scaler),\n            GEO_SCALE(0x00, 65536),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_medium_poly_left_hand_closed),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_left_hand_open),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_medium_poly_left_hand_closed),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_medium_poly_left_hand_closed),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_medium_poly_left_hand_closed),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x17000770\nconst GeoLayout mario_geo_medium_poly_right_hand[] = {\n    GEO_SWITCH_CASE(0, geo_switch_mario_hand),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, NULL),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_mario_hand_foot_scaler),\n            GEO_SCALE(0x00, 65536),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_medium_poly_right_hand_closed),\n            GEO_CLOSE_NODE(),\n            GEO_HELD_OBJECT(0x00, 0, 0, 0, geo_switch_mario_hand_grab_pos),\n        GEO_CLOSE_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_right_hand_open),\n        GEO_OPEN_NODE(),\n            GEO_HELD_OBJECT(0x00, 0, 0, 0, geo_switch_mario_hand_grab_pos),\n        GEO_CLOSE_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_right_hand_peace), // here we go hand\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_right_hand_cap),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_right_hand_cap),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, mario_right_hand_cap_wings),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x17000818\nconst GeoLayout mario_geo_medium_poly_body[] = {\n    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_medium_poly_butt), // starts sharing solid color with mario_torso (blue)\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_move_mario_part_from_parent),\n            GEO_ASM(0, geo_mario_tilt_torso),\n            GEO_ROTATION_NODE(0x00, 0, 0, 0),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 68, 0, 0, mario_medium_poly_torso),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 87, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_BRANCH(1, mario_geo_face_and_wings), // stops sharing because faces has its own dl - medium poly mario uses high poly face\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 67, -10, 79, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_medium_poly_left_arm), // starts sharing solid color with mario_left_forearm (red)\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 65, 0, 0, mario_medium_poly_left_forearm_shared_dl),\n                            GEO_OPEN_NODE(),\n                                GEO_BRANCH(1, mario_geo_medium_poly_left_hand), // stops sharing because hand has its solid color (white)\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 68, -10, -79, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_medium_poly_right_arm), // starts sharing solid color of his dl with mario_right_forearm (red)\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 65, 0, 0, mario_medium_poly_right_forearm_shared_dl),\n                            GEO_OPEN_NODE(),\n                                GEO_BRANCH(1, mario_geo_medium_poly_right_hand), // stops sharing because hand has its solid color (white)\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 13, -8, 42, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_medium_poly_left_thigh), // starts sharing solid color of his dl with mario_left_leg (blue)\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 89, 0, 0, mario_medium_poly_left_leg_shared_dl),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 67, 0, 0, mario_medium_poly_left_foot), // stops sharing because foot has its solid color (brown)\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 13, -8, -42, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_medium_poly_right_thigh), // starts sharing solid color of his dl with mario_left_leg (blue)\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 89, 0, 0, mario_medium_poly_right_leg_shared_dl),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 67, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ASM(2, geo_mario_hand_foot_scaler),\n                            GEO_SCALE(0x00, 65536),\n                            GEO_OPEN_NODE(),\n                                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_medium_poly_right_foot), // stops sharing because foot has its solid color (brown)\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x170009D4\nconst GeoLayout mario_geo_low_poly_face_and_wings[] = {\n    GEO_ASM(0, geo_mario_head_rotation),\n    GEO_ROTATION_NODE(0x00, 0, 0, 0),\n    GEO_OPEN_NODE(),\n        GEO_SWITCH_CASE(0, geo_switch_mario_cap_on_off),\n        GEO_OPEN_NODE(),\n            GEO_SWITCH_CASE(0, geo_switch_mario_eyes),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_cap_on_eyes_front),\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_cap_on_eyes_half_closed),\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_cap_on_eyes_closed),\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_cap_on_eyes_right), // unused\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_cap_on_eyes_left), // unused\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_cap_on_eyes_up), // unused\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_cap_on_eyes_down), // unused\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_cap_on_eyes_dead),\n            GEO_CLOSE_NODE(),\n            GEO_SWITCH_CASE(0, geo_switch_mario_eyes),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_cap_off_eyes_front),\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_cap_off_eyes_half_closed),\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_cap_off_eyes_closed),\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_cap_off_eyes_right), // unused\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_cap_off_eyes_left), // unused\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_cap_off_eyes_up), // unused\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_cap_off_eyes_down), // unused\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_cap_off_eyes_dead),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_TRANSLATE_ROTATE(0, 142, -51, -126, 22, -40, -135),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_mario_rotate_wing_cap_wings),\n            GEO_ROTATION_NODE(0x00, 0, 0, 0),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_ALPHA, mario_cap_wings), // left\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_TRANSLATE_ROTATE(0, 142, -51, 126, -22, 40, -135),\n        GEO_OPEN_NODE(),\n            GEO_ASM(1, geo_mario_rotate_wing_cap_wings),\n            GEO_ROTATION_NODE(0x00, 0, 0, 0),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_ALPHA, mario_cap_wings), // right\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x17000B10\nconst GeoLayout mario_geo_low_poly_left_hand[] = {\n    GEO_SWITCH_CASE(1, geo_switch_mario_hand),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, NULL),\n        GEO_OPEN_NODE(),\n            GEO_ASM(1, geo_mario_hand_foot_scaler),\n            GEO_SCALE(0x00, 65536),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_left_hand_closed),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_left_hand_open),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_low_poly_left_hand_closed),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_low_poly_left_hand_closed),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_low_poly_left_hand_closed),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x17000B88\nconst GeoLayout mario_geo_low_poly_right_hand[] = {\n    GEO_SWITCH_CASE(0, geo_switch_mario_hand),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, NULL),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_mario_hand_foot_scaler),\n            GEO_SCALE(0x00, 65536),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_right_hand_closed),\n            GEO_CLOSE_NODE(),\n            GEO_HELD_OBJECT(0x00, 0, 0, 0, geo_switch_mario_hand_grab_pos),\n        GEO_CLOSE_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_right_hand_open),\n        GEO_OPEN_NODE(),\n            GEO_HELD_OBJECT(0x00, 0, 0, 0, geo_switch_mario_hand_grab_pos),\n        GEO_CLOSE_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_right_hand_peace), // here we go hand\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_right_hand_cap),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_right_hand_cap),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, mario_right_hand_cap_wings),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x17000C30\nconst GeoLayout mario_geo_low_poly_body[] = {\n    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_low_poly_butt), // starts sharing solid color with mario_torso (blue)\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_move_mario_part_from_parent),\n            GEO_ASM(0, geo_mario_tilt_torso),\n            GEO_ROTATION_NODE(0x00, 0, 0, 0),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 68, 0, 0, mario_low_poly_torso),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 87, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_BRANCH(1, mario_geo_low_poly_face_and_wings), // stops sharing because faces has its own dl\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 67, -10, 79, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_low_poly_left_arm), // starts sharing solid color with mario_left_forearm (red)\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 65, 0, 0, mario_low_poly_left_forearm_shared_dl),\n                            GEO_OPEN_NODE(),\n                                GEO_BRANCH(1, mario_geo_low_poly_left_hand), // stops sharing because hand has its solid color (white)\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 68, -10, -79, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_low_poly_right_arm), // starts sharing solid color of his dl with mario_right_forearm (red)\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 65, 0, 0, mario_low_poly_right_forearm_shared_dl),\n                            GEO_OPEN_NODE(),\n                                GEO_BRANCH(1, mario_geo_low_poly_right_hand), // stops sharing because hand has its solid color (white)\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 13, -8, 42, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_low_poly_left_thigh), // starts sharing solid color of his dl with mario_left_leg (blue)\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 89, 0, 0, mario_low_poly_left_leg_shared_dl),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 67, 0, 0, mario_low_poly_left_foot), // stops sharing because foot has its solid color (brown)\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 13, -8, -42, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_low_poly_right_thigh), // starts sharing solid color of his dl with mario_left_leg (blue)\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 89, 0, 0, mario_low_poly_right_leg_shared_dl),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 67, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ASM(2, geo_mario_hand_foot_scaler),\n                            GEO_SCALE(0x00, 65536),\n                            GEO_OPEN_NODE(),\n                                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_right_foot), // stops sharing because foot has its solid color (brown)\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// Vanish Mario Geo\n\n// 0x17000DEC\nconst GeoLayout mario_vanish_geo_face_and_wings[] = {\n    GEO_ASM(0, geo_mario_head_rotation),\n    GEO_ROTATION_NODE(0x00, 0, 0, 0),\n    GEO_OPEN_NODE(),\n        GEO_SWITCH_CASE(0, geo_switch_mario_cap_on_off),\n        GEO_OPEN_NODE(),\n            GEO_SWITCH_CASE(0, geo_switch_mario_eyes),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_on_eyes_front),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_on_eyes_half_closed),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_on_eyes_closed),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_on_eyes_right), // unused\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_on_eyes_left), // unused\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_on_eyes_up), // unused\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_on_eyes_down), // unused\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_on_eyes_dead),\n            GEO_CLOSE_NODE(),\n            GEO_SWITCH_CASE(0, geo_switch_mario_eyes),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_off_eyes_front),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_off_eyes_half_closed),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_off_eyes_closed),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_off_eyes_right), // unused\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_off_eyes_left), // unused\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_off_eyes_up), // unused\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_off_eyes_down), // unused\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_off_eyes_dead),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_TRANSLATE_ROTATE(0, 142, -51, -126, 22, -40, -135),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_mario_rotate_wing_cap_wings),\n            GEO_ROTATION_NODE(0x00, 0, 0, 0),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_wings_transparent),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_TRANSLATE_ROTATE(0, 142, -51, 126, -22, 40, -135),\n        GEO_OPEN_NODE(),\n            GEO_ASM(1, geo_mario_rotate_wing_cap_wings),\n            GEO_ROTATION_NODE(0x00, 0, 0, 0),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_wings_transparent),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x17000F28\nconst GeoLayout mario_vanish_geo_left_hand[] = {\n    GEO_SWITCH_CASE(1, geo_switch_mario_hand),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, NULL),\n        GEO_OPEN_NODE(),\n            GEO_ASM(1, geo_mario_hand_foot_scaler),\n            GEO_SCALE(0x00, 65536),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_left_hand_closed),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_left_hand_open),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_left_hand_closed),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_left_hand_closed),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_left_hand_closed),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x17000FA0\nconst GeoLayout mario_vanish_geo_right_hand[] = {\n    GEO_SWITCH_CASE(0, geo_switch_mario_hand),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, NULL),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_mario_hand_foot_scaler),\n            GEO_SCALE(0x00, 65536),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_right_hand_closed),\n            GEO_CLOSE_NODE(),\n            GEO_HELD_OBJECT(0x00, 0, 0, 0, geo_switch_mario_hand_grab_pos),\n        GEO_CLOSE_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_right_hand_open),\n        GEO_OPEN_NODE(),\n            GEO_HELD_OBJECT(0x00, 0, 0, 0, geo_switch_mario_hand_grab_pos),\n        GEO_CLOSE_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_right_hand_peace), // here we go hand\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_right_hand_cap),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_right_hand_cap),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, mario_right_hand_cap_wings),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// Same rule body as Normal Mario\n\n// 0x17001048\nconst GeoLayout mario_vanish_geo_body[] = {\n    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_butt),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_move_mario_part_from_parent),\n            GEO_ASM(0, geo_mario_tilt_torso),\n            GEO_ROTATION_NODE(0x00, 0, 0, 0),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 68, 0, 0, mario_torso),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 87, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_BRANCH(1, mario_vanish_geo_face_and_wings),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, -10, 79, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_left_arm),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 65, 0, 0, mario_left_forearm_shared_dl),\n                            GEO_OPEN_NODE(),\n                                GEO_BRANCH(1, mario_vanish_geo_left_hand),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 68, -10, -79, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_right_arm),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 65, 0, 0, mario_right_forearm_shared_dl),\n                            GEO_OPEN_NODE(),\n                                GEO_BRANCH(1, mario_vanish_geo_right_hand),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 13, -8, 42, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_left_thigh),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 89, 0, 0, mario_left_leg_shared_dl),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, 0, 0, mario_left_foot),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 13, -8, -42, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_right_thigh),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 89, 0, 0, mario_right_leg_shared_dl),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ASM(2, geo_mario_hand_foot_scaler),\n                            GEO_SCALE(0x00, 65536),\n                            GEO_OPEN_NODE(),\n                                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_right_foot),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x17001204\nconst GeoLayout mario_vanish_geo_medium_poly_left_hand[] = {\n    GEO_SWITCH_CASE(1, geo_switch_mario_hand),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, NULL),\n        GEO_OPEN_NODE(),\n            GEO_ASM(1, geo_mario_hand_foot_scaler),\n            GEO_SCALE(0x00, 65536),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_medium_poly_left_hand_closed),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_left_hand_open),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_medium_poly_left_hand_closed),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_medium_poly_left_hand_closed),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_medium_poly_left_hand_closed),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x1700127C\nconst GeoLayout mario_vanish_geo_medium_poly_right_hand[] = {\n    GEO_SWITCH_CASE(0, geo_switch_mario_hand),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, NULL),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_mario_hand_foot_scaler),\n            GEO_SCALE(0x00, 65536),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_medium_poly_right_hand_closed),\n            GEO_CLOSE_NODE(),\n            GEO_HELD_OBJECT(0x00, 0, 0, 0, geo_switch_mario_hand_grab_pos),\n        GEO_CLOSE_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_right_hand_open),\n        GEO_OPEN_NODE(),\n            GEO_HELD_OBJECT(0x00, 0, 0, 0, geo_switch_mario_hand_grab_pos),\n        GEO_CLOSE_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_right_hand_peace), // here we go hand\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_right_hand_cap),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_right_hand_cap),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, mario_right_hand_cap_wings),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x17001324\nconst GeoLayout mario_vanish_geo_medium_poly_body[] = {\n    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_medium_poly_butt),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_move_mario_part_from_parent),\n            GEO_ASM(0, geo_mario_tilt_torso),\n            GEO_ROTATION_NODE(0x00, 0, 0, 0),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 68, 0, 0, mario_medium_poly_torso),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 87, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_BRANCH(1, mario_vanish_geo_face_and_wings),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, -10, 79, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_medium_poly_left_arm),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 65, 0, 0, mario_medium_poly_left_forearm_shared_dl),\n                            GEO_OPEN_NODE(),\n                                GEO_BRANCH(1, mario_vanish_geo_medium_poly_left_hand),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 68, -10, -79, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_medium_poly_right_arm),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 65, 0, 0, mario_medium_poly_right_forearm_shared_dl),\n                            GEO_OPEN_NODE(),\n                                GEO_BRANCH(1, mario_vanish_geo_medium_poly_right_hand),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 13, -8, 42, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_medium_poly_left_thigh),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 89, 0, 0, mario_medium_poly_left_leg_shared_dl),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, 0, 0, mario_medium_poly_left_foot),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 13, -8, -42, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_medium_poly_right_thigh),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 89, 0, 0, mario_medium_poly_right_leg_shared_dl),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ASM(2, geo_mario_hand_foot_scaler),\n                            GEO_SCALE(0x00, 65536),\n                            GEO_OPEN_NODE(),\n                                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_medium_poly_right_foot),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x170014E0\nconst GeoLayout mario_vanish_geo_low_poly_face_and_wings[] = {\n    GEO_ASM(0, geo_mario_head_rotation),\n    GEO_ROTATION_NODE(0x00, 0, 0, 0),\n    GEO_OPEN_NODE(),\n        GEO_SWITCH_CASE(0, geo_switch_mario_cap_on_off),\n        GEO_OPEN_NODE(),\n            GEO_SWITCH_CASE(0, geo_switch_mario_eyes),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_cap_on_eyes_front),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_cap_on_eyes_half_closed),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_cap_on_eyes_closed),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_cap_on_eyes_right),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_cap_on_eyes_left),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_cap_on_eyes_up),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_cap_on_eyes_down),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_cap_on_eyes_dead),\n            GEO_CLOSE_NODE(),\n            GEO_SWITCH_CASE(0, geo_switch_mario_eyes),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_cap_off_eyes_front),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_cap_off_eyes_half_closed),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_cap_off_eyes_closed),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_cap_off_eyes_right),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_cap_off_eyes_left),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_cap_off_eyes_up),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_cap_off_eyes_down),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_cap_off_eyes_dead),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_TRANSLATE_ROTATE(0, 142, -51, -126, 22, -40, -135),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_mario_rotate_wing_cap_wings),\n            GEO_ROTATION_NODE(0x00, 0, 0, 0),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_wings_transparent),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_TRANSLATE_ROTATE(0, 142, -51, 126, -22, 40, -135),\n        GEO_OPEN_NODE(),\n            GEO_ASM(1, geo_mario_rotate_wing_cap_wings),\n            GEO_ROTATION_NODE(0x00, 0, 0, 0),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_wings_transparent),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x1700161C\nconst GeoLayout mario_vanish_geo_low_poly_left_hand[] = {\n    GEO_SWITCH_CASE(1, geo_switch_mario_hand),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, NULL),\n        GEO_OPEN_NODE(),\n            GEO_ASM(1, geo_mario_hand_foot_scaler),\n            GEO_SCALE(0x00, 65536),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_left_hand_closed),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_left_hand_open),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_low_poly_left_hand_closed),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_low_poly_left_hand_closed),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_low_poly_left_hand_closed),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x17001694\nconst GeoLayout mario_vanish_geo_low_poly_right_hand[] = {\n    GEO_SWITCH_CASE(0, geo_switch_mario_hand),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, NULL),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_mario_hand_foot_scaler),\n            GEO_SCALE(0x00, 65536),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_right_hand_closed),\n            GEO_CLOSE_NODE(),\n            GEO_HELD_OBJECT(0x00, 0, 0, 0, geo_switch_mario_hand_grab_pos),\n        GEO_CLOSE_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_right_hand_open),\n        GEO_OPEN_NODE(),\n            GEO_HELD_OBJECT(0x00, 0, 0, 0, geo_switch_mario_hand_grab_pos),\n        GEO_CLOSE_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_right_hand_peace), // here we go hand\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_right_hand_cap),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_right_hand_cap),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, mario_right_hand_cap_wings),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x1700173C\nconst GeoLayout mario_vanish_geo_low_poly_body[] = {\n    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_low_poly_butt),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_move_mario_part_from_parent),\n            GEO_ASM(0, geo_mario_tilt_torso),\n            GEO_ROTATION_NODE(0x00, 0, 0, 0),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 68, 0, 0, mario_low_poly_torso),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 87, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_BRANCH(1, mario_vanish_geo_low_poly_face_and_wings),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, -10, 79, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_low_poly_left_arm),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 65, 0, 0, mario_low_poly_left_forearm_shared_dl),\n                            GEO_OPEN_NODE(),\n                                GEO_BRANCH(1, mario_vanish_geo_low_poly_left_hand),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 68, -10, -79, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_low_poly_right_arm),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 65, 0, 0, mario_low_poly_right_forearm_shared_dl),\n                            GEO_OPEN_NODE(),\n                                GEO_BRANCH(1, mario_vanish_geo_low_poly_right_hand),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 13, -8, 42, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_low_poly_left_thigh),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 89, 0, 0, mario_low_poly_left_leg_shared_dl),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, 0, 0, mario_low_poly_left_foot),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 13, -8, -42, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_low_poly_right_thigh),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 89, 0, 0, mario_low_poly_right_leg_shared_dl),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ASM(2, geo_mario_hand_foot_scaler),\n                            GEO_SCALE(0x00, 65536),\n                            GEO_OPEN_NODE(),\n                                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_right_foot),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// Metal Mario Geo\n\n// 0x170018F8\nconst GeoLayout mario_metal_geo_face_and_wings[] = {\n    GEO_ASM(0, geo_mario_head_rotation),\n    GEO_ROTATION_NODE(0x00, 0, 0, 0),\n    GEO_OPEN_NODE(),\n        GEO_SWITCH_CASE(0, geo_switch_mario_cap_on_off),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_metal_cap_on_shared_dl),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_metal_cap_off_shared_dl),\n        GEO_CLOSE_NODE(),\n        GEO_TRANSLATE_ROTATE(0, 142, -51, -126, 22, -40, -135),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_mario_rotate_wing_cap_wings),\n            GEO_ROTATION_NODE(0x00, 0, 0, 0),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_ALPHA, mario_metal_cap_wings), // left\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_TRANSLATE_ROTATE(0, 142, -51, 126, -22, 40, -135),\n        GEO_OPEN_NODE(),\n            GEO_ASM(1, geo_mario_rotate_wing_cap_wings),\n            GEO_ROTATION_NODE(0x00, 0, 0, 0),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_ALPHA, mario_metal_cap_wings), // right\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x170019A4\nconst GeoLayout mario_metal_geo_left_hand[] = {\n    GEO_SWITCH_CASE(1, geo_switch_mario_hand),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, NULL),\n        GEO_OPEN_NODE(),\n            GEO_ASM(1, geo_mario_hand_foot_scaler),\n            GEO_SCALE(0x00, 65536),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_left_hand_closed_shared_dl),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_left_hand_open_shared_dl),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_left_hand_closed_shared_dl),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_left_hand_closed_shared_dl),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_left_hand_closed_shared_dl),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x17001A1C\nconst GeoLayout mario_metal_geo_right_hand[] = {\n    GEO_SWITCH_CASE(0, geo_switch_mario_hand),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, NULL),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_mario_hand_foot_scaler),\n            GEO_SCALE(0x00, 65536),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_metal_right_hand_closed),\n            GEO_CLOSE_NODE(),\n            GEO_HELD_OBJECT(0x00, 0, 0, 0, geo_switch_mario_hand_grab_pos),\n        GEO_CLOSE_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_metal_right_hand_open),\n        GEO_OPEN_NODE(),\n            GEO_HELD_OBJECT(0x00, 0, 0, 0, geo_switch_mario_hand_grab_pos),\n        GEO_CLOSE_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_right_hand_peace_shared_dl), // here we go hand\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_metal_right_hand_cap_shared_dl),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_metal_right_hand_cap_shared_dl),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, mario_metal_right_hand_cap_shared_dl_wings),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// A difference from Normal Mario is that the dls after the butt and left thigh shares the metal texture of it, same rule applies to the medium and low poly geos\n\n// 0x17001AC4\nconst GeoLayout mario_metal_geo_body[] = {\n    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_metal_butt), // starts sharing metal texture with the dls below\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_move_mario_part_from_parent),\n            GEO_ASM(0, geo_mario_tilt_torso),\n            GEO_ROTATION_NODE(0x00, 0, 0, 0),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 68, 0, 0, mario_metal_torso_shared_dl),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 87, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_BRANCH(1, mario_metal_geo_face_and_wings), // unlike normal mario geo, these dls still share the metal texture\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 67, -10, 79, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_left_arm_shared_dl),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 65, 0, 0, mario_left_forearm_shared_dl),\n                            GEO_OPEN_NODE(),\n                                GEO_BRANCH(1, mario_metal_geo_left_hand),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 68, -10, -79, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_right_arm_shared_dl),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 65, 0, 0, mario_right_forearm_shared_dl),\n                            GEO_OPEN_NODE(),\n                                GEO_BRANCH(1, mario_metal_geo_right_hand), // stop sharing because the wing metal cap of it\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 13, -8, 42, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_metal_left_thigh), // starts sharing metal texture with the dls below\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 89, 0, 0, mario_left_leg_shared_dl),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 67, 0, 0, mario_left_foot_shared_dl),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 13, -8, -42, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_right_thigh_shared_dl),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 89, 0, 0, mario_right_leg_shared_dl),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 67, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ASM(2, geo_mario_hand_foot_scaler),\n                            GEO_SCALE(0x00, 65536),\n                            GEO_OPEN_NODE(),\n                                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_metal_right_foot),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x17001C80\nconst GeoLayout mario_metal_geo_medium_poly_left_hand[] = {\n    GEO_SWITCH_CASE(1, geo_switch_mario_hand),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, NULL),\n        GEO_OPEN_NODE(),\n            GEO_ASM(1, geo_mario_hand_foot_scaler),\n            GEO_SCALE(0x00, 65536),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_medium_poly_left_hand_closed_shared_dl),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_left_hand_open_shared_dl),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_medium_poly_left_hand_closed_shared_dl),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_medium_poly_left_hand_closed_shared_dl),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_medium_poly_left_hand_closed_shared_dl),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x17001CF8\nconst GeoLayout mario_metal_geo_medium_poly_right_hand[] = {\n    GEO_SWITCH_CASE(0, geo_switch_mario_hand),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, NULL),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_mario_hand_foot_scaler),\n            GEO_SCALE(0x00, 65536),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_metal_medium_poly_right_hand_closed),\n            GEO_CLOSE_NODE(),\n            GEO_HELD_OBJECT(0x00, 0, 0, 0, geo_switch_mario_hand_grab_pos),\n        GEO_CLOSE_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_metal_right_hand_open),\n        GEO_OPEN_NODE(),\n            GEO_HELD_OBJECT(0x00, 0, 0, 0, geo_switch_mario_hand_grab_pos),\n        GEO_CLOSE_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_right_hand_peace_shared_dl), // here we go hand\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_metal_right_hand_cap_shared_dl),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_metal_right_hand_cap_shared_dl),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, mario_metal_right_hand_cap_shared_dl_wings),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x17001DA0\nconst GeoLayout mario_metal_geo_medium_poly_body[] = {\n    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_metal_medium_poly_butt),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_move_mario_part_from_parent),\n            GEO_ASM(0, geo_mario_tilt_torso),\n            GEO_ROTATION_NODE(0x00, 0, 0, 0),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 68, 0, 0, mario_metal_medium_poly_torso),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 87, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_BRANCH(1, mario_metal_geo_face_and_wings),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 67, -10, 79, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_medium_poly_left_arm_shared_dl),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 65, 0, 0, mario_medium_poly_left_forearm_shared_dl),\n                            GEO_OPEN_NODE(),\n                                GEO_BRANCH(1, mario_metal_geo_medium_poly_left_hand),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 68, -10, -79, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_medium_poly_right_arm_shared_dl),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 65, 0, 0, mario_medium_poly_right_forearm_shared_dl),\n                            GEO_OPEN_NODE(),\n                                GEO_BRANCH(1, mario_metal_geo_medium_poly_right_hand),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 13, -8, 42, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_metal_medium_poly_left_thigh),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 89, 0, 0, mario_medium_poly_left_leg_shared_dl),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 67, 0, 0, mario_medium_poly_left_foot_shared_dl),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 13, -8, -42, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_medium_poly_right_thigh_shared_dl),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 89, 0, 0, mario_medium_poly_right_leg_shared_dl),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 67, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ASM(2, geo_mario_hand_foot_scaler),\n                            GEO_SCALE(0x00, 65536),\n                            GEO_OPEN_NODE(),\n                                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_metal_medium_poly_right_foot),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x17001F5C\nconst GeoLayout mario_metal_geo_low_poly_face_and_wings[] = {\n    GEO_ASM(0, geo_mario_head_rotation),\n    GEO_ROTATION_NODE(0x00, 0, 0, 0),\n    GEO_OPEN_NODE(),\n        GEO_SWITCH_CASE(0, geo_switch_mario_cap_on_off),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_metal_low_poly_cap_on),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_metal_low_poly_cap_off),\n        GEO_CLOSE_NODE(),\n        GEO_TRANSLATE_ROTATE(0, 142, -51, -126, 22, -40, -135),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_mario_rotate_wing_cap_wings),\n            GEO_ROTATION_NODE(0x00, 0, 0, 0),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_ALPHA, mario_metal_cap_wings),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_TRANSLATE_ROTATE(0, 142, -51, 126, -22, 40, -135),\n        GEO_OPEN_NODE(),\n            GEO_ASM(1, geo_mario_rotate_wing_cap_wings),\n            GEO_ROTATION_NODE(0x00, 0, 0, 0),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_ALPHA, mario_metal_cap_wings),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x17002008\nconst GeoLayout mario_metal_geo_low_poly_left_hand[] = {\n    GEO_SWITCH_CASE(1, geo_switch_mario_hand),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, NULL),\n        GEO_OPEN_NODE(),\n            GEO_ASM(1, geo_mario_hand_foot_scaler),\n            GEO_SCALE(0x00, 65536),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_low_poly_left_hand_closed_shared_dl),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_left_hand_open_shared_dl),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_low_poly_left_hand_closed_shared_dl),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_low_poly_left_hand_closed_shared_dl),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_low_poly_left_hand_closed_shared_dl),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x17002080\nconst GeoLayout mario_metal_geo_low_poly_right_hand[] = {\n    GEO_SWITCH_CASE(0, geo_switch_mario_hand),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, NULL),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_mario_hand_foot_scaler),\n            GEO_SCALE(0x00, 65536),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_metal_low_poly_right_hand_closed),\n            GEO_CLOSE_NODE(),\n            GEO_HELD_OBJECT(0x00, 0, 0, 0, geo_switch_mario_hand_grab_pos),\n        GEO_CLOSE_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_metal_right_hand_open),\n        GEO_OPEN_NODE(),\n            GEO_HELD_OBJECT(0x00, 0, 0, 0, geo_switch_mario_hand_grab_pos),\n        GEO_CLOSE_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_right_hand_peace_shared_dl), // here we go hand\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_metal_right_hand_cap_shared_dl),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 60, 0, 0, mario_metal_right_hand_cap_shared_dl),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, mario_metal_right_hand_cap_shared_dl_wings),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x17002128\nconst GeoLayout mario_metal_geo_low_poly_body[] = {\n    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_metal_low_poly_butt),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_move_mario_part_from_parent),\n            GEO_ASM(0, geo_mario_tilt_torso),\n            GEO_ROTATION_NODE(0x00, 0, 0, 0),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 68, 0, 0, mario_metal_low_poly_torso),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 87, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_BRANCH(1, mario_metal_geo_low_poly_face_and_wings),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 67, -10, 79, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_low_poly_left_arm_shared_dl),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 65, 0, 0, mario_low_poly_left_forearm_shared_dl),\n                            GEO_OPEN_NODE(),\n                                GEO_BRANCH(1, mario_metal_geo_low_poly_left_hand),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 68, -10, -79, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_low_poly_right_arm_shared_dl),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 65, 0, 0, mario_low_poly_right_forearm_shared_dl),\n                            GEO_OPEN_NODE(),\n                                GEO_BRANCH(1, mario_metal_geo_low_poly_right_hand),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 13, -8, 42, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_metal_low_poly_left_thigh),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 89, 0, 0, mario_low_poly_left_leg_shared_dl),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 67, 0, 0, mario_low_poly_left_foot_shared_dl),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 13, -8, -42, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mario_low_poly_right_thigh_shared_dl),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 89, 0, 0, mario_low_poly_right_leg_shared_dl),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 67, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ASM(2, geo_mario_hand_foot_scaler),\n                            GEO_SCALE(0x00, 65536),\n                            GEO_OPEN_NODE(),\n                                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_metal_low_poly_right_foot),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// Metal Vanish Mario Geo\n\n// 0x170022E4\nconst GeoLayout mario_metal_vanish_geo_face_and_wings[] = {\n    GEO_ASM(0, geo_mario_head_rotation),\n    GEO_ROTATION_NODE(0x00, 0, 0, 0),\n    GEO_OPEN_NODE(),\n        GEO_SWITCH_CASE(0, geo_switch_mario_cap_on_off),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_metal_cap_on_shared_dl),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_metal_cap_off_shared_dl),\n        GEO_CLOSE_NODE(),\n        GEO_TRANSLATE_ROTATE(0, 142, -51, -126, 22, -40, -135),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_mario_rotate_wing_cap_wings),\n            GEO_ROTATION_NODE(0x00, 0, 0, 0),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_metal_cap_wings_transparent),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_TRANSLATE_ROTATE(0, 142, -51, 126, -22, 40, -135),\n        GEO_OPEN_NODE(),\n            GEO_ASM(1, geo_mario_rotate_wing_cap_wings),\n            GEO_ROTATION_NODE(0x00, 0, 0, 0),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_metal_cap_wings_transparent),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x17002390\nconst GeoLayout mario_metal_vanish_geo_left_hand[] = {\n    GEO_SWITCH_CASE(0, geo_switch_mario_hand),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, NULL),\n        GEO_OPEN_NODE(),\n            GEO_ASM(1, geo_mario_hand_foot_scaler),\n            GEO_SCALE(0x00, 65536),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_left_hand_closed_shared_dl),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_left_hand_open_shared_dl),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_left_hand_closed_shared_dl),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_left_hand_closed_shared_dl),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_left_hand_closed_shared_dl),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x17002408\nconst GeoLayout mario_metal_vanish_geo_right_hand[] = {\n    GEO_SWITCH_CASE(0, geo_switch_mario_hand),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, NULL),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_mario_hand_foot_scaler),\n            GEO_SCALE(0x00, 65536),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_metal_right_hand_closed),\n            GEO_CLOSE_NODE(),\n            GEO_HELD_OBJECT(0x00, 0, 0, 0, geo_switch_mario_hand_grab_pos),\n        GEO_CLOSE_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_metal_right_hand_open),\n        GEO_OPEN_NODE(),\n            GEO_HELD_OBJECT(0x00, 0, 0, 0, geo_switch_mario_hand_grab_pos),\n        GEO_CLOSE_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_right_hand_peace_shared_dl), // here we go hand\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_metal_right_hand_cap_shared_dl),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_metal_right_hand_cap_shared_dl),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, mario_metal_right_hand_cap_shared_dl_wings),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// Same rules as Metal Mario\n\n// 0x170024B0\nconst GeoLayout mario_metal_vanish_geo_body[] = {\n    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_metal_butt),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_move_mario_part_from_parent),\n            GEO_ASM(0, geo_mario_tilt_torso),\n            GEO_ROTATION_NODE(0x00, 0, 0, 0),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 68, 0, 0, mario_metal_torso_shared_dl),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 87, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_BRANCH(1, mario_metal_vanish_geo_face_and_wings),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, -10, 79, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_left_arm_shared_dl),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 65, 0, 0, mario_left_forearm_shared_dl),\n                            GEO_OPEN_NODE(),\n                                GEO_BRANCH(1, mario_metal_vanish_geo_left_hand),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 68, -10, -79, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_right_arm_shared_dl),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 65, 0, 0, mario_right_forearm_shared_dl),\n                            GEO_OPEN_NODE(),\n                                GEO_BRANCH(1, mario_metal_vanish_geo_right_hand),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 13, -8, 42, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_metal_left_thigh),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 89, 0, 0, mario_left_leg_shared_dl),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, 0, 0, mario_left_foot_shared_dl),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 13, -8, -42, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_right_thigh_shared_dl),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 89, 0, 0, mario_right_leg_shared_dl),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ASM(2, geo_mario_hand_foot_scaler),\n                            GEO_SCALE(0x00, 65536),\n                            GEO_OPEN_NODE(),\n                                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_metal_right_foot),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x1700266C\nconst GeoLayout mario_metal_vanish_geo_medium_poly_left_hand[] = {\n    GEO_SWITCH_CASE(0, geo_switch_mario_hand),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, NULL),\n        GEO_OPEN_NODE(),\n            GEO_ASM(1, geo_mario_hand_foot_scaler),\n            GEO_SCALE(0x00, 65536),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_medium_poly_left_hand_closed_shared_dl),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_left_hand_open_shared_dl),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_medium_poly_left_hand_closed_shared_dl),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_medium_poly_left_hand_closed_shared_dl),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_medium_poly_left_hand_closed_shared_dl),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x170026E4\nconst GeoLayout mario_metal_vanish_geo_medium_poly_right_hand[] = {\n    GEO_SWITCH_CASE(0, geo_switch_mario_hand),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, NULL),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_mario_hand_foot_scaler),\n            GEO_SCALE(0x00, 65536),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_metal_medium_poly_right_hand_closed),\n            GEO_CLOSE_NODE(),\n            GEO_HELD_OBJECT(0x00, 0, 0, 0, geo_switch_mario_hand_grab_pos),\n        GEO_CLOSE_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_metal_right_hand_open),\n        GEO_OPEN_NODE(),\n            GEO_HELD_OBJECT(0x00, 0, 0, 0, geo_switch_mario_hand_grab_pos),\n        GEO_CLOSE_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_right_hand_peace_shared_dl), // here we go hand\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_metal_right_hand_cap_shared_dl),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_metal_right_hand_cap_shared_dl),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, mario_metal_right_hand_cap_shared_dl_wings),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x1700278C\nconst GeoLayout mario_metal_vanish_geo_medium_poly_body[] = {\n    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_metal_medium_poly_butt),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_move_mario_part_from_parent),\n            GEO_ASM(0, geo_mario_tilt_torso),\n            GEO_ROTATION_NODE(0x00, 0, 0, 0),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 68, 0, 0, mario_metal_medium_poly_torso),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 87, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_BRANCH(1, mario_metal_vanish_geo_face_and_wings),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, -10, 79, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_medium_poly_left_arm_shared_dl),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 65, 0, 0, mario_medium_poly_left_forearm_shared_dl),\n                            GEO_OPEN_NODE(),\n                                GEO_BRANCH(1, mario_metal_vanish_geo_medium_poly_left_hand),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 68, -10, -79, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_medium_poly_right_arm_shared_dl),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 65, 0, 0, mario_medium_poly_right_forearm_shared_dl),\n                            GEO_OPEN_NODE(),\n                                GEO_SWITCH_CASE(0, geo_switch_mario_hand),\n                                GEO_OPEN_NODE(),\n                                    GEO_BRANCH(1, mario_metal_vanish_geo_medium_poly_right_hand),\n                                GEO_CLOSE_NODE(),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 13, -8, 42, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_metal_medium_poly_left_thigh),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 89, 0, 0, mario_medium_poly_left_leg_shared_dl),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, 0, 0, mario_medium_poly_left_foot_shared_dl),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 13, -8, -42, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_medium_poly_right_thigh_shared_dl),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 89, 0, 0, mario_medium_poly_right_leg_shared_dl),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ASM(2, geo_mario_hand_foot_scaler),\n                            GEO_SCALE(0x00, 65536),\n                            GEO_OPEN_NODE(),\n                                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_metal_medium_poly_right_foot),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x17002958\nconst GeoLayout mario_metal_vanish_geo_low_poly_face_and_wings[] = {\n    GEO_ASM(0, geo_mario_head_rotation),\n    GEO_ROTATION_NODE(0x00, 0, 0, 0),\n    GEO_OPEN_NODE(),\n        GEO_SWITCH_CASE(0, geo_switch_mario_cap_on_off),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_metal_low_poly_cap_on),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_metal_low_poly_cap_off),\n        GEO_CLOSE_NODE(),\n        GEO_TRANSLATE_ROTATE(0, 142, -51, -126, 22, -40, -135),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_mario_rotate_wing_cap_wings),\n            GEO_ROTATION_NODE(0x00, 0, 0, 0),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_metal_cap_wings_transparent),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_TRANSLATE_ROTATE(0, 142, -51, 126, -22, 40, -135),\n        GEO_OPEN_NODE(),\n            GEO_ASM(1, geo_mario_rotate_wing_cap_wings),\n            GEO_ROTATION_NODE(0x00, 0, 0, 0),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_metal_cap_wings_transparent),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x17002A04\nconst GeoLayout mario_metal_vanish_geo_low_poly_left_hand[] = {\n    GEO_SWITCH_CASE(0, geo_switch_mario_hand),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, NULL),\n        GEO_OPEN_NODE(),\n            GEO_ASM(1, geo_mario_hand_foot_scaler),\n            GEO_SCALE(0x00, 65536),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_low_poly_left_hand_closed_shared_dl),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_left_hand_open_shared_dl),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_low_poly_left_hand_closed_shared_dl),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_low_poly_left_hand_closed_shared_dl),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_low_poly_left_hand_closed_shared_dl),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x17002A7C\nconst GeoLayout mario_metal_vanish_geo_low_poly_right_hand[] = {\n    GEO_SWITCH_CASE(0, geo_switch_mario_hand),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, NULL),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_mario_hand_foot_scaler),\n            GEO_SCALE(0x00, 65536),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_metal_low_poly_right_hand_closed),\n            GEO_CLOSE_NODE(),\n            GEO_HELD_OBJECT(0x00, 0, 0, 0, geo_switch_mario_hand_grab_pos),\n        GEO_CLOSE_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_metal_right_hand_open),\n        GEO_OPEN_NODE(),\n            GEO_HELD_OBJECT(0x00, 0, 0, 0, geo_switch_mario_hand_grab_pos),\n        GEO_CLOSE_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_right_hand_peace_shared_dl), // here we go hand\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_metal_right_hand_cap_shared_dl),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 60, 0, 0, mario_metal_right_hand_cap_shared_dl),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, mario_metal_right_hand_cap_shared_dl_wings),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x17002B24\nconst GeoLayout mario_metal_vanish_geo_low_poly_body[] = {\n    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_metal_low_poly_butt),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_move_mario_part_from_parent),\n            GEO_ASM(0, geo_mario_tilt_torso),\n            GEO_ROTATION_NODE(0x00, 0, 0, 0),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 68, 0, 0, mario_metal_low_poly_torso),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 87, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_BRANCH(1, mario_metal_vanish_geo_low_poly_face_and_wings),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, -10, 79, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_low_poly_left_arm_shared_dl),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 65, 0, 0, mario_low_poly_left_forearm_shared_dl),\n                            GEO_OPEN_NODE(),\n                                GEO_BRANCH(1, mario_metal_vanish_geo_low_poly_left_hand),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 68, -10, -79, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_low_poly_right_arm_shared_dl),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 65, 0, 0, mario_low_poly_right_forearm_shared_dl),\n                            GEO_OPEN_NODE(),\n                                GEO_BRANCH(1, mario_metal_vanish_geo_low_poly_right_hand),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 13, -8, 42, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_metal_low_poly_left_thigh),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 89, 0, 0, mario_low_poly_left_leg_shared_dl),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, 0, 0, mario_low_poly_left_foot_shared_dl),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 13, -8, -42, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, mario_low_poly_right_thigh_shared_dl),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 89, 0, 0, mario_low_poly_right_leg_shared_dl),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 67, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ASM(2, geo_mario_hand_foot_scaler),\n                            GEO_SCALE(0x00, 65536),\n                            GEO_OPEN_NODE(),\n                                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_metal_low_poly_right_foot),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// High Poly\n\n// 0x17002CE0\nconst GeoLayout mario_geo_load_body[] = {\n    GEO_SWITCH_CASE(0, geo_switch_mario_cap_effect),\n    GEO_OPEN_NODE(),\n        GEO_BRANCH(1, mario_geo_body),\n        GEO_BRANCH(1, mario_vanish_geo_body),\n        GEO_BRANCH(1, mario_metal_geo_body),\n        GEO_BRANCH(1, mario_metal_vanish_geo_body),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// Medium Poly\n\n// 0x17002D14\nconst GeoLayout mario_geo_load_medium_poly_body[] = {\n    GEO_SWITCH_CASE(0, geo_switch_mario_cap_effect),\n    GEO_OPEN_NODE(),\n        GEO_BRANCH(1, mario_geo_medium_poly_body),\n        GEO_BRANCH(1, mario_vanish_geo_medium_poly_body),\n        GEO_BRANCH(1, mario_metal_geo_medium_poly_body),\n        GEO_BRANCH(1, mario_metal_vanish_geo_medium_poly_body),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// Low Poly\n\n// 0x17002D48\nconst GeoLayout mario_geo_load_low_poly_body[] = {\n    GEO_SWITCH_CASE(0, geo_switch_mario_cap_effect),\n    GEO_OPEN_NODE(),\n        GEO_BRANCH(1, mario_geo_low_poly_body),\n        GEO_BRANCH(1, mario_vanish_geo_low_poly_body),\n        GEO_BRANCH(1, mario_metal_geo_low_poly_body),\n        GEO_BRANCH(1, mario_metal_vanish_geo_low_poly_body),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x17002D7C\nconst GeoLayout mario_geo_render_body[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_RENDER_RANGE(-2048, 600),\n        GEO_OPEN_NODE(),\n            GEO_BRANCH(1, mario_geo_load_body),\n        GEO_CLOSE_NODE(),\n        GEO_RENDER_RANGE(600, 1600),\n        GEO_OPEN_NODE(),\n            GEO_BRANCH(1, mario_geo_load_medium_poly_body),\n        GEO_CLOSE_NODE(),\n        GEO_RENDER_RANGE(1600, 32767),\n        GEO_OPEN_NODE(),\n            GEO_BRANCH(1, mario_geo_load_low_poly_body),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// This last geo is used to load all of Mario Geo in the Level Scripts\n\n// 0x17002DD4\nconst GeoLayout mario_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_PLAYER, 0xB4, 100),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_mirror_mario_backface_culling),\n            GEO_ASM(0, geo_mirror_mario_set_alpha),\n            GEO_SWITCH_CASE(0, geo_switch_mario_stand_run),\n            GEO_OPEN_NODE(),\n                GEO_BRANCH(1, mario_geo_load_body),\n                GEO_BRANCH(1, mario_geo_render_body),\n            GEO_CLOSE_NODE(),\n            GEO_ASM(1, geo_mirror_mario_backface_culling),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/mario/model.inc.c",
    "content": "// Mario\n\n// 0x04000000 # solid color blue - butt, left thigh, right thigh - all poly types\nstatic const Lights1 mario_blue_lights_group = gdSPDefLights1(\n    0x00, 0x00, 0x7f,\n    0x00, 0x00, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x04000018 # solid color red - left & right arm, torso (tshirt part), caps - all poly types\nstatic const Lights1 mario_red_lights_group = gdSPDefLights1(\n    0x7f, 0x00, 0x00,\n    0xff, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x04000030 # solid color white - metal butt & left thigh - normal left & right hand closed & open (with cap too) and all wings - all poly types\nstatic const Lights1 mario_white_lights_group = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x04000048 # solid color brown 1 - foot - all poly types\nstatic const Lights1 mario_brown1_lights_group = gdSPDefLights1(\n    0x39, 0x0e, 0x07,\n    0x72, 0x1c, 0x0e, 0x28, 0x28, 0x28\n);\n\n// 0x04000060 # solid color beige skin - face (cap on and off dls) - all poly types\nstatic const Lights1 mario_beige_lights_group = gdSPDefLights1(\n    0x7f, 0x60, 0x3c,\n    0xfe, 0xc1, 0x79, 0x28, 0x28, 0x28\n);\n\n// 0x04000078  # solid color brown 2 - hair - all poly types\nstatic const Lights1 mario_brown2_lights_group = gdSPDefLights1(\n    0x39, 0x03, 0x00,\n    0x73, 0x06, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x04000090\nALIGNED8 static const Texture mario_texture_metal[] = {\n#include \"actors/mario/mario_metal.rgba16.inc.c\"\n};\n\n// 0x04001090\nALIGNED8 static const Texture mario_texture_yellow_button[] = {\n#include \"actors/mario/mario_overalls_button.rgba16.inc.c\"\n};\n\n// 0x04001890\nALIGNED8 static const Texture mario_texture_m_logo[] = {\n#include \"actors/mario/mario_logo.rgba16.inc.c\"\n};\n\n// 0x04002090\nALIGNED8 static const Texture mario_texture_hair_sideburn[] = {\n#include \"actors/mario/mario_sideburn.rgba16.inc.c\"\n};\n\n// 0x04002890\nALIGNED8 static const Texture mario_texture_mustache[] = {\n#include \"actors/mario/mario_mustache.rgba16.inc.c\"\n};\n\n// 0x04003090\nALIGNED8 static const Texture mario_texture_eyes_front[] = {\n#include \"actors/mario/mario_eyes_center.rgba16.inc.c\"\n};\n\n// 0x04003890\nALIGNED8 static const Texture mario_texture_eyes_half_closed[] = {\n#include \"actors/mario/mario_eyes_half_closed.rgba16.inc.c\"\n};\n\n// 0x04004090\nALIGNED8 static const Texture mario_texture_eyes_closed[] = {\n#include \"actors/mario/mario_eyes_closed.rgba16.inc.c\"\n};\n\n// Unreferenced\n// 0x04004890\nALIGNED8 static const Texture mario_texture_eyes_closed_unused1[] = {\n#include \"actors/mario/mario_eyes_closed_unused_0.rgba16.inc.c\"\n};\n\n// Unreferenced\n// 0x04005090\nALIGNED8 static const Texture mario_texture_eyes_closed_unused2[] = {\n#include \"actors/mario/mario_eyes_closed_unused_1.rgba16.inc.c\"\n};\n\n// 0x04005890\nALIGNED8 static const Texture mario_texture_eyes_right[] = {\n#include \"actors/mario/mario_eyes_left_unused.rgba16.inc.c\"\n};\n\n// 0x04006090\nALIGNED8 static const Texture mario_texture_eyes_left[] = {\n#include \"actors/mario/mario_eyes_right_unused.rgba16.inc.c\"\n};\n\n// 0x04006890\nALIGNED8 static const Texture mario_texture_eyes_up[] = {\n#include \"actors/mario/mario_eyes_up_unused.rgba16.inc.c\"\n};\n\n// 0x04007090\nALIGNED8 static const Texture mario_texture_eyes_down[] = {\n#include \"actors/mario/mario_eyes_down_unused.rgba16.inc.c\"\n};\n\n// 0x04007890\nALIGNED8 static const Texture mario_texture_eyes_dead[] = {\n#include \"actors/mario/mario_eyes_dead.rgba16.inc.c\"\n};\n\n// 0x04008090\nALIGNED8 static const Texture mario_texture_wings_half_1[] = {\n#include \"actors/mario/mario_wing.rgba16.inc.c\"\n};\n\n// 0x04009090\nALIGNED8 static const Texture mario_texture_wings_half_2[] = {\n#include \"actors/mario/mario_wing_tip.rgba16.inc.c\"\n};\n\n// 0x0400A090\nALIGNED8 static const Texture mario_texture_metal_wings_half_1[] = {\n#include \"actors/mario/mario_metal_wing_unused.rgba16.inc.c\"\n};\n\n// 0x0400B090\nALIGNED8 static const Texture mario_texture_metal_wings_half_2[] = {\n#include \"actors/mario/mario_metal_wing_tip_unused.rgba16.inc.c\"\n};\n\n// 0x0400C090\nstatic const Vtx mario_butt_dl_vertex_group1[] = {\n    {{{    -9,     73,    -34}, 0, {     0,      0}, {0xc2, 0x6b, 0xe6, 0x00}}},\n    {{{    -9,     73,     34}, 0, {     0,      0}, {0xbe, 0x6a, 0x12, 0x00}}},\n    {{{    22,     82,    -26}, 0, {     0,      0}, {0x07, 0x7e, 0xf5, 0x00}}},\n    {{{    73,     11,      0}, 0, {     0,      0}, {0x7e, 0x04, 0x00, 0x00}}},\n    {{{    55,    -61,    -36}, 0, {     0,      0}, {0x67, 0xbe, 0xe1, 0x00}}},\n    {{{    44,    -10,    -92}, 0, {     0,      0}, {0x4f, 0xf2, 0x9e, 0x00}}},\n    {{{     7,     33,     95}, 0, {     0,      0}, {0xe6, 0x26, 0x75, 0x00}}},\n    {{{    44,     -9,     92}, 0, {     0,      0}, {0x4f, 0xf2, 0x62, 0x00}}},\n    {{{    43,     40,     91}, 0, {     0,      0}, {0x4e, 0x30, 0x57, 0x00}}},\n    {{{     8,     -8,    -99}, 0, {     0,      0}, {0xf3, 0xee, 0x84, 0x00}}},\n    {{{    36,    -51,    -79}, 0, {     0,      0}, {0x30, 0xb8, 0xa4, 0x00}}},\n    {{{    26,    -74,    -46}, 0, {     0,      0}, {0x18, 0x88, 0xe2, 0x00}}},\n    {{{    36,    -52,     79}, 0, {     0,      0}, {0x30, 0xb8, 0x5c, 0x00}}},\n    {{{    26,    -74,     45}, 0, {     0,      0}, {0x12, 0x88, 0x22, 0x00}}},\n    {{{    55,    -61,     36}, 0, {     0,      0}, {0x60, 0xb3, 0x1a, 0x00}}},\n};\n\n// 0x0400C180\nstatic const Vtx mario_butt_dl_vertex_group2[] = {\n    {{{    -5,     59,     72}, 0, {     0,      0}, {0xc0, 0x52, 0x47, 0x00}}},\n    {{{    -9,     73,     34}, 0, {     0,      0}, {0xbe, 0x6a, 0x12, 0x00}}},\n    {{{   -32,     40,     39}, 0, {     0,      0}, {0x8b, 0x25, 0x1d, 0x00}}},\n    {{{    52,     70,     38}, 0, {     0,      0}, {0x53, 0x5d, 0x16, 0x00}}},\n    {{{    22,     82,     26}, 0, {     0,      0}, {0x07, 0x7d, 0x11, 0x00}}},\n    {{{    27,     72,     63}, 0, {     0,      0}, {0x06, 0x6c, 0x42, 0x00}}},\n    {{{    43,     40,    -91}, 0, {     0,      0}, {0x4e, 0x30, 0xa9, 0x00}}},\n    {{{    27,     72,    -63}, 0, {     0,      0}, {0x07, 0x6b, 0xbe, 0x00}}},\n    {{{    52,     70,    -39}, 0, {     0,      0}, {0x59, 0x56, 0xe5, 0x00}}},\n    {{{    -5,     59,    -72}, 0, {     0,      0}, {0xc0, 0x52, 0xb9, 0x00}}},\n    {{{   -17,     32,    -79}, 0, {     0,      0}, {0xa4, 0x23, 0xb1, 0x00}}},\n    {{{   -32,     40,    -39}, 0, {     0,      0}, {0x89, 0x25, 0xeb, 0x00}}},\n    {{{    73,     11,      0}, 0, {     0,      0}, {0x7e, 0x04, 0x00, 0x00}}},\n    {{{    43,     40,     91}, 0, {     0,      0}, {0x4e, 0x30, 0x57, 0x00}}},\n};\n\n// 0x0400C260\nstatic const Vtx mario_butt_dl_vertex_group3[] = {\n    {{{   -14,    -74,      0}, 0, {     0,      0}, {0xcb, 0x8d, 0x00, 0x00}}},\n    {{{    -9,    -69,     55}, 0, {     0,      0}, {0xcd, 0x97, 0x30, 0x00}}},\n    {{{   -31,    -51,     42}, 0, {     0,      0}, {0x8d, 0xd7, 0x1f, 0x00}}},\n    {{{    26,    -74,    -46}, 0, {     0,      0}, {0x18, 0x88, 0xe2, 0x00}}},\n    {{{    -9,    -69,    -55}, 0, {     0,      0}, {0xcd, 0x97, 0xd0, 0x00}}},\n    {{{     4,    -48,    -86}, 0, {     0,      0}, {0xd8, 0xba, 0x9f, 0x00}}},\n    {{{     4,    -49,     86}, 0, {     0,      0}, {0xd8, 0xb9, 0x61, 0x00}}},\n    {{{    26,    -74,     45}, 0, {     0,      0}, {0x12, 0x88, 0x22, 0x00}}},\n    {{{   -32,     40,     39}, 0, {     0,      0}, {0x8b, 0x25, 0x1d, 0x00}}},\n    {{{    -9,     73,     34}, 0, {     0,      0}, {0xbe, 0x6a, 0x12, 0x00}}},\n    {{{   -32,     40,    -39}, 0, {     0,      0}, {0x89, 0x25, 0xeb, 0x00}}},\n    {{{    27,     72,     63}, 0, {     0,      0}, {0x06, 0x6c, 0x42, 0x00}}},\n    {{{    -5,     59,     72}, 0, {     0,      0}, {0xc0, 0x52, 0x47, 0x00}}},\n    {{{    52,     70,    -39}, 0, {     0,      0}, {0x59, 0x56, 0xe5, 0x00}}},\n    {{{    22,     82,    -26}, 0, {     0,      0}, {0x07, 0x7e, 0xf5, 0x00}}},\n    {{{    52,     70,     38}, 0, {     0,      0}, {0x53, 0x5d, 0x16, 0x00}}},\n};\n\n// 0x0400C360\nstatic const Vtx mario_butt_dl_vertex_group4[] = {\n    {{{     6,     33,    -95}, 0, {     0,      0}, {0xe6, 0x26, 0x8b, 0x00}}},\n    {{{    27,     72,    -63}, 0, {     0,      0}, {0x07, 0x6b, 0xbe, 0x00}}},\n    {{{    43,     40,    -91}, 0, {     0,      0}, {0x4e, 0x30, 0xa9, 0x00}}},\n    {{{   -31,    -51,     42}, 0, {     0,      0}, {0x8d, 0xd7, 0x1f, 0x00}}},\n    {{{   -31,    -51,    -42}, 0, {     0,      0}, {0x91, 0xd0, 0xdc, 0x00}}},\n    {{{   -14,    -74,      0}, 0, {     0,      0}, {0xcb, 0x8d, 0x00, 0x00}}},\n    {{{    -9,    -69,    -55}, 0, {     0,      0}, {0xcd, 0x97, 0xd0, 0x00}}},\n    {{{    73,     11,      0}, 0, {     0,      0}, {0x7e, 0x04, 0x00, 0x00}}},\n    {{{    44,    -10,    -92}, 0, {     0,      0}, {0x4f, 0xf2, 0x9e, 0x00}}},\n    {{{    52,     70,     38}, 0, {     0,      0}, {0x53, 0x5d, 0x16, 0x00}}},\n    {{{    52,     70,    -39}, 0, {     0,      0}, {0x59, 0x56, 0xe5, 0x00}}},\n    {{{    43,     40,     91}, 0, {     0,      0}, {0x4e, 0x30, 0x57, 0x00}}},\n    {{{    44,     -9,     92}, 0, {     0,      0}, {0x4f, 0xf2, 0x62, 0x00}}},\n    {{{     7,     33,     95}, 0, {     0,      0}, {0xe6, 0x26, 0x75, 0x00}}},\n    {{{    27,     72,     63}, 0, {     0,      0}, {0x06, 0x6c, 0x42, 0x00}}},\n};\n\n// 0x0400C450\nstatic const Vtx mario_butt_dl_vertex_group5[] = {\n    {{{    -5,     59,    -72}, 0, {     0,      0}, {0xc0, 0x52, 0xb9, 0x00}}},\n    {{{    -9,     73,    -34}, 0, {     0,      0}, {0xc2, 0x6b, 0xe6, 0x00}}},\n    {{{    27,     72,    -63}, 0, {     0,      0}, {0x07, 0x6b, 0xbe, 0x00}}},\n    {{{   -32,     40,    -39}, 0, {     0,      0}, {0x89, 0x25, 0xeb, 0x00}}},\n    {{{   -32,     40,     39}, 0, {     0,      0}, {0x8b, 0x25, 0x1d, 0x00}}},\n    {{{   -18,     32,     79}, 0, {     0,      0}, {0xa4, 0x23, 0x4f, 0x00}}},\n    {{{    -5,     59,     72}, 0, {     0,      0}, {0xc0, 0x52, 0x47, 0x00}}},\n    {{{    22,     82,    -26}, 0, {     0,      0}, {0x07, 0x7e, 0xf5, 0x00}}},\n    {{{    52,     70,    -39}, 0, {     0,      0}, {0x59, 0x56, 0xe5, 0x00}}},\n    {{{    27,     72,     63}, 0, {     0,      0}, {0x06, 0x6c, 0x42, 0x00}}},\n    {{{    43,     40,     91}, 0, {     0,      0}, {0x4e, 0x30, 0x57, 0x00}}},\n    {{{    52,     70,     38}, 0, {     0,      0}, {0x53, 0x5d, 0x16, 0x00}}},\n    {{{     8,     -8,     99}, 0, {     0,      0}, {0xf3, 0xef, 0x7c, 0x00}}},\n    {{{    36,    -52,     79}, 0, {     0,      0}, {0x30, 0xb8, 0x5c, 0x00}}},\n    {{{    44,     -9,     92}, 0, {     0,      0}, {0x4f, 0xf2, 0x62, 0x00}}},\n};\n\n// 0x0400C540\nstatic const Vtx mario_butt_dl_vertex_group6[] = {\n    {{{     6,     33,    -95}, 0, {     0,      0}, {0xe6, 0x26, 0x8b, 0x00}}},\n    {{{    43,     40,    -91}, 0, {     0,      0}, {0x4e, 0x30, 0xa9, 0x00}}},\n    {{{    44,    -10,    -92}, 0, {     0,      0}, {0x4f, 0xf2, 0x9e, 0x00}}},\n    {{{    44,     -9,     92}, 0, {     0,      0}, {0x4f, 0xf2, 0x62, 0x00}}},\n    {{{    36,    -52,     79}, 0, {     0,      0}, {0x30, 0xb8, 0x5c, 0x00}}},\n    {{{    55,    -61,     36}, 0, {     0,      0}, {0x60, 0xb3, 0x1a, 0x00}}},\n    {{{   -18,     32,     79}, 0, {     0,      0}, {0xa4, 0x23, 0x4f, 0x00}}},\n    {{{     7,     33,     95}, 0, {     0,      0}, {0xe6, 0x26, 0x75, 0x00}}},\n    {{{    -5,     59,     72}, 0, {     0,      0}, {0xc0, 0x52, 0x47, 0x00}}},\n    {{{   -20,     -7,     81}, 0, {     0,      0}, {0xa3, 0xf9, 0x55, 0x00}}},\n    {{{     8,     -8,     99}, 0, {     0,      0}, {0xf3, 0xef, 0x7c, 0x00}}},\n    {{{     4,    -49,     86}, 0, {     0,      0}, {0xd8, 0xb9, 0x61, 0x00}}},\n    {{{   -20,     -8,    -81}, 0, {     0,      0}, {0xa3, 0xf8, 0xab, 0x00}}},\n    {{{     8,     -8,    -99}, 0, {     0,      0}, {0xf3, 0xee, 0x84, 0x00}}},\n    {{{     4,    -48,    -86}, 0, {     0,      0}, {0xd8, 0xba, 0x9f, 0x00}}},\n};\n\n// 0x0400C630\nstatic const Vtx mario_butt_dl_vertex_group7[] = {\n    {{{    -5,     59,    -72}, 0, {     0,      0}, {0xc0, 0x52, 0xb9, 0x00}}},\n    {{{     6,     33,    -95}, 0, {     0,      0}, {0xe6, 0x26, 0x8b, 0x00}}},\n    {{{   -17,     32,    -79}, 0, {     0,      0}, {0xa4, 0x23, 0xb1, 0x00}}},\n    {{{   -20,     -8,    -81}, 0, {     0,      0}, {0xa3, 0xf8, 0xab, 0x00}}},\n    {{{     7,     33,     95}, 0, {     0,      0}, {0xe6, 0x26, 0x75, 0x00}}},\n    {{{   -18,     32,     79}, 0, {     0,      0}, {0xa4, 0x23, 0x4f, 0x00}}},\n    {{{   -20,     -7,     81}, 0, {     0,      0}, {0xa3, 0xf9, 0x55, 0x00}}},\n    {{{   -32,     40,    -39}, 0, {     0,      0}, {0x89, 0x25, 0xeb, 0x00}}},\n    {{{    55,    -61,     36}, 0, {     0,      0}, {0x60, 0xb3, 0x1a, 0x00}}},\n    {{{    73,     11,      0}, 0, {     0,      0}, {0x7e, 0x04, 0x00, 0x00}}},\n    {{{    44,     -9,     92}, 0, {     0,      0}, {0x4f, 0xf2, 0x62, 0x00}}},\n    {{{    55,    -61,    -36}, 0, {     0,      0}, {0x67, 0xbe, 0xe1, 0x00}}},\n    {{{    36,    -51,    -79}, 0, {     0,      0}, {0x30, 0xb8, 0xa4, 0x00}}},\n    {{{    44,    -10,    -92}, 0, {     0,      0}, {0x4f, 0xf2, 0x9e, 0x00}}},\n    {{{     8,     -8,    -99}, 0, {     0,      0}, {0xf3, 0xee, 0x84, 0x00}}},\n};\n\n// 0x0400C720\nstatic const Vtx mario_butt_dl_vertex_group8[] = {\n    {{{     8,     -8,     99}, 0, {     0,      0}, {0xf3, 0xef, 0x7c, 0x00}}},\n    {{{     4,    -49,     86}, 0, {     0,      0}, {0xd8, 0xb9, 0x61, 0x00}}},\n    {{{    36,    -52,     79}, 0, {     0,      0}, {0x30, 0xb8, 0x5c, 0x00}}},\n    {{{    -9,     73,    -34}, 0, {     0,      0}, {0xc2, 0x6b, 0xe6, 0x00}}},\n    {{{    22,     82,    -26}, 0, {     0,      0}, {0x07, 0x7e, 0xf5, 0x00}}},\n    {{{    27,     72,    -63}, 0, {     0,      0}, {0x07, 0x6b, 0xbe, 0x00}}},\n    {{{    27,     72,     63}, 0, {     0,      0}, {0x06, 0x6c, 0x42, 0x00}}},\n    {{{    -5,     59,     72}, 0, {     0,      0}, {0xc0, 0x52, 0x47, 0x00}}},\n    {{{     7,     33,     95}, 0, {     0,      0}, {0xe6, 0x26, 0x75, 0x00}}},\n    {{{     6,     33,    -95}, 0, {     0,      0}, {0xe6, 0x26, 0x8b, 0x00}}},\n    {{{    -5,     59,    -72}, 0, {     0,      0}, {0xc0, 0x52, 0xb9, 0x00}}},\n    {{{    22,     82,     26}, 0, {     0,      0}, {0x07, 0x7d, 0x11, 0x00}}},\n    {{{    52,     70,     38}, 0, {     0,      0}, {0x53, 0x5d, 0x16, 0x00}}},\n    {{{    -9,     73,     34}, 0, {     0,      0}, {0xbe, 0x6a, 0x12, 0x00}}},\n    {{{   -32,     40,    -39}, 0, {     0,      0}, {0x89, 0x25, 0xeb, 0x00}}},\n    {{{    26,    -74,     45}, 0, {     0,      0}, {0x12, 0x88, 0x22, 0x00}}},\n};\n\n// 0x0400C820\nstatic const Vtx mario_butt_dl_vertex_group9[] = {\n    {{{     4,    -48,    -86}, 0, {     0,      0}, {0xd8, 0xba, 0x9f, 0x00}}},\n    {{{    36,    -51,    -79}, 0, {     0,      0}, {0x30, 0xb8, 0xa4, 0x00}}},\n    {{{    26,    -74,    -46}, 0, {     0,      0}, {0x18, 0x88, 0xe2, 0x00}}},\n    {{{   -20,     -7,     81}, 0, {     0,      0}, {0xa3, 0xf9, 0x55, 0x00}}},\n    {{{   -18,     32,     79}, 0, {     0,      0}, {0xa4, 0x23, 0x4f, 0x00}}},\n    {{{   -32,     40,     39}, 0, {     0,      0}, {0x8b, 0x25, 0x1d, 0x00}}},\n    {{{     8,     -8,    -99}, 0, {     0,      0}, {0xf3, 0xee, 0x84, 0x00}}},\n    {{{     7,     33,     95}, 0, {     0,      0}, {0xe6, 0x26, 0x75, 0x00}}},\n    {{{     8,     -8,     99}, 0, {     0,      0}, {0xf3, 0xef, 0x7c, 0x00}}},\n    {{{    44,     -9,     92}, 0, {     0,      0}, {0x4f, 0xf2, 0x62, 0x00}}},\n    {{{    -9,     73,     34}, 0, {     0,      0}, {0xbe, 0x6a, 0x12, 0x00}}},\n    {{{    22,     82,     26}, 0, {     0,      0}, {0x07, 0x7d, 0x11, 0x00}}},\n    {{{    22,     82,    -26}, 0, {     0,      0}, {0x07, 0x7e, 0xf5, 0x00}}},\n    {{{    -9,    -69,    -55}, 0, {     0,      0}, {0xcd, 0x97, 0xd0, 0x00}}},\n    {{{   -31,    -51,    -42}, 0, {     0,      0}, {0x91, 0xd0, 0xdc, 0x00}}},\n    {{{   -20,     -8,    -81}, 0, {     0,      0}, {0xa3, 0xf8, 0xab, 0x00}}},\n};\n\n// 0x0400C920\nstatic const Vtx mario_butt_dl_vertex_group10[] = {\n    {{{   -31,    -51,     42}, 0, {     0,      0}, {0x8d, 0xd7, 0x1f, 0x00}}},\n    {{{    -9,    -69,     55}, 0, {     0,      0}, {0xcd, 0x97, 0x30, 0x00}}},\n    {{{     4,    -49,     86}, 0, {     0,      0}, {0xd8, 0xb9, 0x61, 0x00}}},\n    {{{   -20,     -7,     81}, 0, {     0,      0}, {0xa3, 0xf9, 0x55, 0x00}}},\n    {{{   -32,     40,     39}, 0, {     0,      0}, {0x8b, 0x25, 0x1d, 0x00}}},\n    {{{   -32,     40,    -39}, 0, {     0,      0}, {0x89, 0x25, 0xeb, 0x00}}},\n    {{{   -20,     -8,    -81}, 0, {     0,      0}, {0xa3, 0xf8, 0xab, 0x00}}},\n    {{{   -31,    -51,    -42}, 0, {     0,      0}, {0x91, 0xd0, 0xdc, 0x00}}},\n    {{{    55,    -61,     36}, 0, {     0,      0}, {0x60, 0xb3, 0x1a, 0x00}}},\n    {{{    26,    -74,     45}, 0, {     0,      0}, {0x12, 0x88, 0x22, 0x00}}},\n    {{{    26,    -74,    -46}, 0, {     0,      0}, {0x18, 0x88, 0xe2, 0x00}}},\n    {{{   -14,    -74,      0}, 0, {     0,      0}, {0xcb, 0x8d, 0x00, 0x00}}},\n    {{{    -9,    -69,    -55}, 0, {     0,      0}, {0xcd, 0x97, 0xd0, 0x00}}},\n    {{{    55,    -61,    -36}, 0, {     0,      0}, {0x67, 0xbe, 0xe1, 0x00}}},\n};\n\n// 0x0400CA00 - 0x0400CC98\nconst Gfx mario_butt_dl[] = {\n    gsSPVertex(mario_butt_dl_vertex_group1, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  5, 10, 0x0),\n    gsSP2Triangles( 4, 11, 10, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(mario_butt_dl_vertex_group2, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12,  3, 13, 0x0,  6,  8, 12, 0x0),\n    gsSPVertex(mario_butt_dl_vertex_group3, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  1,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(11,  9, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(mario_butt_dl_vertex_group4, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  2, 0x0),\n    gsSP2Triangles( 9,  7, 10, 0x0, 11, 12,  7, 0x0),\n    gsSP1Triangle(13, 11, 14, 0x0),\n    gsSPVertex(mario_butt_dl_vertex_group5, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  2,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(mario_butt_dl_vertex_group6, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10,  7, 0x0),\n    gsSP2Triangles(11, 10,  9, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle( 0, 13, 12, 0x0),\n    gsSPVertex(mario_butt_dl_vertex_group7, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  2,  3, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9,  8, 11, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 13, 14,  1, 0x0),\n    gsSPVertex(mario_butt_dl_vertex_group8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10,  5, 0x0),\n    gsSP2Triangles( 4, 11, 12, 0x0,  6, 11, 13, 0x0),\n    gsSP2Triangles(13,  3, 14, 0x0, 15,  2,  1, 0x0),\n    gsSPVertex(mario_butt_dl_vertex_group9, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 1,  0,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  0, 13, 14, 0x0),\n    gsSP1Triangle(15,  0, 14, 0x0),\n    gsSPVertex(mario_butt_dl_vertex_group10, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 3,  4,  0, 0x0,  0,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  7,  0, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles( 9,  1, 11, 0x0, 11, 12, 10, 0x0),\n    gsSP1Triangle(10, 13,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0400CC98 - 0x0400CCC8\nconst Gfx mario_butt[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPLight(&mario_blue_lights_group.l, 1),\n    gsSPLight(&mario_blue_lights_group.a, 2),\n    gsSPDisplayList(mario_butt_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x0400CCC8 - 0x0400CD40\nconst Gfx mario_metal_butt[] = {\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_TEXTURE_GEN),\n    gsDPSetCombineMode(G_CC_DECALFADE, G_CC_DECALFADE),\n    gsDPLoadTextureBlock(mario_texture_metal, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_ON),\n    gsSPLight(&mario_white_lights_group.l, 1),\n    gsSPLight(&mario_white_lights_group.a, 2),\n    gsSPDisplayList(mario_butt_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x0400CD40\nstatic const Vtx mario_left_arm_shared_dl_vertex_group1[] = {\n    {{{     7,     27,     20}, 0, {     0,      0}, {0xda, 0x61, 0x47, 0x00}}},\n    {{{    59,     20,     15}, 0, {     0,      0}, {0x44, 0x4a, 0x4c, 0x00}}},\n    {{{    59,     21,    -21}, 0, {     0,      0}, {0x37, 0x67, 0xd0, 0x00}}},\n    {{{     6,    -16,     32}, 0, {     0,      0}, {0xd5, 0xdc, 0x71, 0x00}}},\n    {{{    58,    -15,     25}, 0, {     0,      0}, {0x32, 0xc6, 0x64, 0x00}}},\n    {{{     5,    -42,     -5}, 0, {     0,      0}, {0xd3, 0x8a, 0xff, 0x00}}},\n    {{{    57,    -36,     -5}, 0, {     0,      0}, {0x3e, 0x93, 0xef, 0x00}}},\n    {{{     6,    -13,    -42}, 0, {     0,      0}, {0xd6, 0xde, 0x8e, 0x00}}},\n    {{{    58,    -13,    -34}, 0, {     0,      0}, {0x3b, 0xfb, 0x90, 0x00}}},\n    {{{     7,     29,    -26}, 0, {     0,      0}, {0xda, 0x62, 0xbb, 0x00}}},\n    {{{    -8,     17,    -17}, 0, {     0,      0}, {0x90, 0x2a, 0xd6, 0x00}}},\n    {{{    -8,     16,     10}, 0, {     0,      0}, {0x9a, 0x44, 0x1d, 0x00}}},\n    {{{    -8,     -9,    -27}, 0, {     0,      0}, {0x8e, 0xe8, 0xce, 0x00}}},\n    {{{    -9,    -26,     -5}, 0, {     0,      0}, {0x96, 0xbd, 0x0e, 0x00}}},\n    {{{    -8,    -11,     18}, 0, {     0,      0}, {0x8b, 0xff, 0x2f, 0x00}}},\n};\n\n// 0x0400CE30\nstatic const Vtx mario_left_arm_shared_dl_vertex_group2[] = {\n    {{{    68,     13,    -16}, 0, {     0,      0}, {0x6a, 0x38, 0xd9, 0x00}}},\n    {{{    68,    -10,    -25}, 0, {     0,      0}, {0x75, 0xe7, 0xd9, 0x00}}},\n    {{{    58,    -13,    -34}, 0, {     0,      0}, {0x3b, 0xfb, 0x90, 0x00}}},\n    {{{    59,     20,     15}, 0, {     0,      0}, {0x44, 0x4a, 0x4c, 0x00}}},\n    {{{    68,     12,      9}, 0, {     0,      0}, {0x78, 0x1f, 0x1b, 0x00}}},\n    {{{    67,    -12,     16}, 0, {     0,      0}, {0x6f, 0xe8, 0x37, 0x00}}},\n    {{{    57,    -36,     -5}, 0, {     0,      0}, {0x3e, 0x93, 0xef, 0x00}}},\n    {{{    67,    -26,     -5}, 0, {     0,      0}, {0x6e, 0xc2, 0xfe, 0x00}}},\n    {{{    58,    -15,     25}, 0, {     0,      0}, {0x32, 0xc6, 0x64, 0x00}}},\n    {{{    59,     21,    -21}, 0, {     0,      0}, {0x37, 0x67, 0xd0, 0x00}}},\n    {{{     7,     27,     20}, 0, {     0,      0}, {0xda, 0x61, 0x47, 0x00}}},\n    {{{    -8,    -11,     18}, 0, {     0,      0}, {0x8b, 0xff, 0x2f, 0x00}}},\n    {{{     6,    -16,     32}, 0, {     0,      0}, {0xd5, 0xdc, 0x71, 0x00}}},\n    {{{    -9,    -26,     -5}, 0, {     0,      0}, {0x96, 0xbd, 0x0e, 0x00}}},\n    {{{     5,    -42,     -5}, 0, {     0,      0}, {0xd3, 0x8a, 0xff, 0x00}}},\n};\n\n// 0x0400CF20\nstatic const Vtx mario_left_arm_shared_dl_vertex_group3[] = {\n    {{{     5,    -42,     -5}, 0, {     0,      0}, {0xd3, 0x8a, 0xff, 0x00}}},\n    {{{    -8,     -9,    -27}, 0, {     0,      0}, {0x8e, 0xe8, 0xce, 0x00}}},\n    {{{     6,    -13,    -42}, 0, {     0,      0}, {0xd6, 0xde, 0x8e, 0x00}}},\n    {{{    -8,     17,    -17}, 0, {     0,      0}, {0x90, 0x2a, 0xd6, 0x00}}},\n    {{{     7,     29,    -26}, 0, {     0,      0}, {0xda, 0x62, 0xbb, 0x00}}},\n    {{{    -8,     16,     10}, 0, {     0,      0}, {0x9a, 0x44, 0x1d, 0x00}}},\n    {{{     7,     27,     20}, 0, {     0,      0}, {0xda, 0x61, 0x47, 0x00}}},\n    {{{    58,    -13,    -34}, 0, {     0,      0}, {0x3b, 0xfb, 0x90, 0x00}}},\n    {{{    57,    -36,     -5}, 0, {     0,      0}, {0x3e, 0x93, 0xef, 0x00}}},\n    {{{     6,    -16,     32}, 0, {     0,      0}, {0xd5, 0xdc, 0x71, 0x00}}},\n    {{{    58,    -15,     25}, 0, {     0,      0}, {0x32, 0xc6, 0x64, 0x00}}},\n    {{{    59,     20,     15}, 0, {     0,      0}, {0x44, 0x4a, 0x4c, 0x00}}},\n    {{{    59,     21,    -21}, 0, {     0,      0}, {0x37, 0x67, 0xd0, 0x00}}},\n    {{{    -8,    -11,     18}, 0, {     0,      0}, {0x8b, 0xff, 0x2f, 0x00}}},\n};\n\n// 0x0400D000\nstatic const Vtx mario_left_arm_shared_dl_vertex_group4[] = {\n    {{{    68,     12,      9}, 0, {     0,      0}, {0x78, 0x1f, 0x1b, 0x00}}},\n    {{{    68,    -10,    -25}, 0, {     0,      0}, {0x75, 0xe7, 0xd9, 0x00}}},\n    {{{    68,     13,    -16}, 0, {     0,      0}, {0x6a, 0x38, 0xd9, 0x00}}},\n    {{{    67,    -12,     16}, 0, {     0,      0}, {0x6f, 0xe8, 0x37, 0x00}}},\n    {{{    67,    -26,     -5}, 0, {     0,      0}, {0x6e, 0xc2, 0xfe, 0x00}}},\n    {{{    -8,     17,    -17}, 0, {     0,      0}, {0x90, 0x2a, 0xd6, 0x00}}},\n    {{{    -8,     -9,    -27}, 0, {     0,      0}, {0x8e, 0xe8, 0xce, 0x00}}},\n    {{{    -8,    -11,     18}, 0, {     0,      0}, {0x8b, 0xff, 0x2f, 0x00}}},\n    {{{    -9,    -26,     -5}, 0, {     0,      0}, {0x96, 0xbd, 0x0e, 0x00}}},\n};\n\n// 0x0400D090 - 0x0400D1D8\nconst Gfx mario_left_arm_shared_dl[] = {\n    gsSPVertex(mario_left_arm_shared_dl_vertex_group1, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 5,  6,  4, 0x0,  7,  8,  6, 0x0),\n    gsSP2Triangles( 9,  2,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 7, 12, 10, 0x0,  5, 13, 12, 0x0),\n    gsSP2Triangles( 3, 14, 13, 0x0,  0, 11, 14, 0x0),\n    gsSPVertex(mario_left_arm_shared_dl_vertex_group2, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 5,  4,  3, 0x0,  6,  7,  5, 0x0),\n    gsSP2Triangles( 1,  7,  6, 0x0,  2,  1,  6, 0x0),\n    gsSP2Triangles( 6,  5,  8, 0x0,  8,  5,  3, 0x0),\n    gsSP2Triangles( 3,  0,  9, 0x0,  9,  0,  2, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(mario_left_arm_shared_dl_vertex_group3, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  2,  4,  7, 0x0),\n    gsSP2Triangles( 0,  2,  8, 0x0,  9,  0, 10, 0x0),\n    gsSP2Triangles( 6,  9, 11, 0x0,  4,  6, 12, 0x0),\n    gsSP1Triangle(13,  5,  3, 0x0),\n    gsSPVertex(mario_left_arm_shared_dl_vertex_group4, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 3,  4,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP1Triangle( 6,  8,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0400D1D8 - 0x0400D1F8\nconst Gfx mario_left_arm[] = {\n    gsSPLight(&mario_red_lights_group.l, 1),\n    gsSPLight(&mario_red_lights_group.a, 2),\n    gsSPDisplayList(mario_left_arm_shared_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x0400D1F8\nstatic const Vtx mario_left_forearm_shared_dl_vertex[] = {\n    {{{    -2,     19,     16}, 0, {     0,      0}, {0xdb, 0x61, 0x48, 0x00}}},\n    {{{    47,     14,     13}, 0, {     0,      0}, {0x44, 0x44, 0x51, 0x00}}},\n    {{{    47,     16,    -19}, 0, {     0,      0}, {0x45, 0x61, 0xd6, 0x00}}},\n    {{{    -3,    -17,     26}, 0, {     0,      0}, {0xd7, 0xdb, 0x71, 0x00}}},\n    {{{    46,    -17,     22}, 0, {     0,      0}, {0x41, 0xc7, 0x5c, 0x00}}},\n    {{{    -3,    -38,     -4}, 0, {     0,      0}, {0xd4, 0x89, 0xfe, 0x00}}},\n    {{{    45,    -34,     -4}, 0, {     0,      0}, {0x3f, 0x95, 0xe8, 0x00}}},\n    {{{    -3,    -14,    -34}, 0, {     0,      0}, {0xd7, 0xde, 0x8e, 0x00}}},\n    {{{    46,    -14,    -30}, 0, {     0,      0}, {0x42, 0xf4, 0x95, 0x00}}},\n    {{{    -2,     21,    -21}, 0, {     0,      0}, {0xdb, 0x63, 0xbb, 0x00}}},\n    {{{   -14,     13,    -15}, 0, {     0,      0}, {0x93, 0x2c, 0xd3, 0x00}}},\n    {{{   -14,     11,     10}, 0, {     0,      0}, {0x93, 0x3b, 0x19, 0x00}}},\n    {{{   -15,    -11,    -24}, 0, {     0,      0}, {0x9a, 0xde, 0xbe, 0x00}}},\n    {{{   -15,    -27,     -4}, 0, {     0,      0}, {0x8b, 0xd2, 0x0a, 0x00}}},\n    {{{   -15,    -13,     17}, 0, {     0,      0}, {0x9b, 0xfb, 0x4c, 0x00}}},\n    {{{    58,     -7,     -3}, 0, {     0,      0}, {0x7e, 0xfc, 0x00, 0x00}}},\n};\n\n// 0x0400D2F8 - 0x0400D3E8\nconst Gfx mario_left_forearm_shared_dl[] = {\n    gsSPVertex(mario_left_forearm_shared_dl_vertex, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 5,  6,  4, 0x0,  7,  8,  6, 0x0),\n    gsSP2Triangles( 9,  2,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 7, 12, 10, 0x0,  5, 13, 12, 0x0),\n    gsSP2Triangles( 3, 14, 13, 0x0,  0, 11, 14, 0x0),\n    gsSP2Triangles( 8, 15,  6, 0x0,  6, 15,  4, 0x0),\n    gsSP2Triangles( 4, 15,  1, 0x0,  1, 15,  2, 0x0),\n    gsSP2Triangles( 2, 15,  8, 0x0,  0, 14,  3, 0x0),\n    gsSP2Triangles( 3, 13,  5, 0x0,  5, 12,  7, 0x0),\n    gsSP2Triangles( 7, 10,  9, 0x0,  9, 11,  0, 0x0),\n    gsSP2Triangles( 7,  9,  8, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 3,  5,  4, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 9,  0,  2, 0x0, 12, 13, 10, 0x0),\n    gsSP2Triangles(13, 11, 10, 0x0, 13, 14, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0400D3E8\nstatic const Vtx mario_left_hand_closed_shared_dl_vertex_group1[] = {\n    {{{    36,      6,     42}, 0, {     0,      0}, {0xe1, 0xf0, 0x79, 0x00}}},\n    {{{    17,     -1,     27}, 0, {     0,      0}, {0x00, 0xfd, 0x7f, 0x00}}},\n    {{{    34,    -41,      3}, 0, {     0,      0}, {0x42, 0xa3, 0x36, 0x00}}},\n    {{{    26,    -25,    -32}, 0, {     0,      0}, {0x09, 0xc7, 0x8f, 0x00}}},\n    {{{     4,     24,    -31}, 0, {     0,      0}, {0xd5, 0x3f, 0x9c, 0x00}}},\n    {{{    33,      7,    -44}, 0, {     0,      0}, {0xc6, 0xfe, 0x90, 0x00}}},\n    {{{    -1,     39,      5}, 0, {     0,      0}, {0xea, 0x6e, 0x3a, 0x00}}},\n    {{{     5,     -6,     36}, 0, {     0,      0}, {0x44, 0x1b, 0x67, 0x00}}},\n    {{{   -10,     26,    -38}, 0, {     0,      0}, {0xf0, 0x41, 0x95, 0x00}}},\n    {{{    17,    -38,    -39}, 0, {     0,      0}, {0x1a, 0xb7, 0x9d, 0x00}}},\n    {{{    86,     29,     41}, 0, {     0,      0}, {0x4b, 0x20, 0x60, 0x00}}},\n    {{{    59,     81,      8}, 0, {     0,      0}, {0x11, 0x7a, 0x1d, 0x00}}},\n    {{{   107,    -26,      4}, 0, {     0,      0}, {0x67, 0xc5, 0x2b, 0x00}}},\n    {{{    61,     12,    -60}, 0, {     0,      0}, {0x00, 0x21, 0x86, 0x00}}},\n    {{{    90,     17,    -46}, 0, {     0,      0}, {0x43, 0x35, 0xa3, 0x00}}},\n    {{{   100,     -6,    -46}, 0, {     0,      0}, {0x63, 0x0a, 0xb3, 0x00}}},\n};\n\n// 0x0400D4E8\nstatic const Vtx mario_left_hand_closed_shared_dl_vertex_group2[] = {\n    {{{    90,     17,    -46}, 0, {     0,      0}, {0x43, 0x35, 0xa3, 0x00}}},\n    {{{    57,     55,    -37}, 0, {     0,      0}, {0x22, 0x54, 0xa9, 0x00}}},\n    {{{    99,     40,    -16}, 0, {     0,      0}, {0x6c, 0x3c, 0xe5, 0x00}}},\n    {{{    32,     63,    -28}, 0, {     0,      0}, {0xd0, 0x4f, 0xaa, 0x00}}},\n    {{{    12,     59,     10}, 0, {     0,      0}, {0xaa, 0x58, 0x1b, 0x00}}},\n    {{{    59,     81,      8}, 0, {     0,      0}, {0x11, 0x7a, 0x1d, 0x00}}},\n    {{{    80,    -31,    -61}, 0, {     0,      0}, {0x0c, 0xb2, 0x9d, 0x00}}},\n    {{{   100,     -6,    -46}, 0, {     0,      0}, {0x63, 0x0a, 0xb3, 0x00}}},\n    {{{   107,    -26,      4}, 0, {     0,      0}, {0x67, 0xc5, 0x2b, 0x00}}},\n    {{{    61,     12,    -60}, 0, {     0,      0}, {0x00, 0x21, 0x86, 0x00}}},\n    {{{    33,      7,    -44}, 0, {     0,      0}, {0xc6, 0xfe, 0x90, 0x00}}},\n    {{{    86,     29,     41}, 0, {     0,      0}, {0x4b, 0x20, 0x60, 0x00}}},\n    {{{    58,    -45,      7}, 0, {     0,      0}, {0x01, 0x85, 0x1c, 0x00}}},\n    {{{    36,      6,     42}, 0, {     0,      0}, {0xe1, 0xf0, 0x79, 0x00}}},\n};\n\n// 0x0400D5C8\nstatic const Vtx mario_left_hand_closed_shared_dl_vertex_group3[] = {\n    {{{    27,    -58,      6}, 0, {     0,      0}, {0xa3, 0xad, 0x12, 0x00}}},\n    {{{   -14,    -14,     -4}, 0, {     0,      0}, {0x8c, 0xcd, 0x02, 0x00}}},\n    {{{    17,    -38,    -39}, 0, {     0,      0}, {0x1a, 0xb7, 0x9d, 0x00}}},\n    {{{   -10,     26,    -38}, 0, {     0,      0}, {0xf0, 0x41, 0x95, 0x00}}},\n    {{{   -18,     45,      8}, 0, {     0,      0}, {0x84, 0xf3, 0x13, 0x00}}},\n    {{{     5,     -6,     36}, 0, {     0,      0}, {0x99, 0xd2, 0x38, 0x00}}},\n    {{{    34,    -41,      3}, 0, {     0,      0}, {0x42, 0xa3, 0x36, 0x00}}},\n    {{{    27,    -58,      6}, 0, {     0,      0}, {0x73, 0xd5, 0x1d, 0x00}}},\n    {{{    26,    -25,    -32}, 0, {     0,      0}, {0x09, 0xc7, 0x8f, 0x00}}},\n    {{{   -18,     45,      8}, 0, {     0,      0}, {0x2d, 0x71, 0x21, 0x00}}},\n    {{{    -1,     39,      5}, 0, {     0,      0}, {0xea, 0x6e, 0x3a, 0x00}}},\n    {{{     5,     -6,     36}, 0, {     0,      0}, {0x44, 0x1b, 0x67, 0x00}}},\n    {{{    36,      6,     42}, 0, {     0,      0}, {0xe1, 0xf0, 0x79, 0x00}}},\n    {{{    12,     59,     10}, 0, {     0,      0}, {0xaa, 0x58, 0x1b, 0x00}}},\n    {{{    58,    -45,      7}, 0, {     0,      0}, {0x01, 0x85, 0x1c, 0x00}}},\n};\n\n// 0x0400D6B8\nstatic const Vtx mario_left_hand_closed_shared_dl_vertex_group4[] = {\n    {{{    26,    -25,    -32}, 0, {     0,      0}, {0x09, 0xc7, 0x8f, 0x00}}},\n    {{{    33,      7,    -44}, 0, {     0,      0}, {0xc6, 0xfe, 0x90, 0x00}}},\n    {{{    80,    -31,    -61}, 0, {     0,      0}, {0x0c, 0xb2, 0x9d, 0x00}}},\n    {{{    58,    -45,      7}, 0, {     0,      0}, {0x01, 0x85, 0x1c, 0x00}}},\n    {{{    34,    -41,      3}, 0, {     0,      0}, {0x42, 0xa3, 0x36, 0x00}}},\n    {{{    61,     12,    -60}, 0, {     0,      0}, {0x00, 0x21, 0x86, 0x00}}},\n    {{{    12,     59,     10}, 0, {     0,      0}, {0xaa, 0x58, 0x1b, 0x00}}},\n    {{{    32,     63,    -28}, 0, {     0,      0}, {0xd0, 0x4f, 0xaa, 0x00}}},\n    {{{     4,     24,    -31}, 0, {     0,      0}, {0xd5, 0x3f, 0x9c, 0x00}}},\n    {{{    -1,     39,      5}, 0, {     0,      0}, {0xea, 0x6e, 0x3a, 0x00}}},\n};\n\n// 0x0400D758 - 0x0400D8F0\nconst Gfx mario_left_hand_closed_shared_dl[] = {\n    gsSPVertex(mario_left_hand_closed_shared_dl_vertex_group1, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  1,  0, 0x0,  2,  1,  7, 0x0),\n    gsSP2Triangles( 7,  1,  6, 0x0,  6,  4,  8, 0x0),\n    gsSP2Triangles( 8,  4,  3, 0x0,  9,  3,  2, 0x0),\n    gsSP2Triangles( 0, 10, 11, 0x0, 12, 10,  0, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(mario_left_hand_closed_shared_dl_vertex_group2, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  1,  3, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10,  3, 0x0,  1,  0,  9, 0x0),\n    gsSP2Triangles( 9,  3,  1, 0x0,  5,  2,  1, 0x0),\n    gsSP2Triangles( 0,  2,  7, 0x0,  7,  2,  8, 0x0),\n    gsSP2Triangles( 8,  2, 11, 0x0, 11,  2,  5, 0x0),\n    gsSP2Triangles( 9,  7,  6, 0x0,  6,  8, 12, 0x0),\n    gsSP2Triangles(12,  8, 13, 0x0, 13,  5,  4, 0x0),\n    gsSPVertex(mario_left_hand_closed_shared_dl_vertex_group3, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 3,  1,  4, 0x0,  4,  1,  5, 0x0),\n    gsSP2Triangles( 5,  1,  0, 0x0,  6,  7,  2, 0x0),\n    gsSP2Triangles( 8,  2,  3, 0x0,  3,  9, 10, 0x0),\n    gsSP2Triangles(10,  9, 11, 0x0, 11,  7,  6, 0x0),\n    gsSP2Triangles(10, 12, 13, 0x0,  6, 14, 12, 0x0),\n    gsSPVertex(mario_left_hand_closed_shared_dl_vertex_group4, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 1,  5,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  9,  6, 0x0),\n    gsSP1Triangle( 7,  1,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0400D8F0 - 0x0400D910\nconst Gfx mario_left_hand_closed[] = {\n    gsSPLight(&mario_white_lights_group.l, 1),\n    gsSPLight(&mario_white_lights_group.a, 2),\n    gsSPDisplayList(mario_left_hand_closed_shared_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x0400D910\nstatic const Vtx mario_right_arm_shared_dl_vertex_group1[] = {\n    {{{    57,    -14,    -22}, 0, {     0,      0}, {0x33, 0xcf, 0x97, 0x00}}},\n    {{{     5,    -44,      5}, 0, {     0,      0}, {0xd3, 0x8a, 0xf7, 0x00}}},\n    {{{     6,    -15,    -30}, 0, {     0,      0}, {0xd6, 0xe6, 0x8c, 0x00}}},\n    {{{    57,    -38,      6}, 0, {     0,      0}, {0x3e, 0x93, 0x07, 0x00}}},\n    {{{     6,    -19,     44}, 0, {     0,      0}, {0xd5, 0xd4, 0x6e, 0x00}}},\n    {{{    57,    -17,     37}, 0, {     0,      0}, {0x33, 0xe8, 0x71, 0x00}}},\n    {{{     7,     25,     32}, 0, {     0,      0}, {0xd9, 0x5c, 0x4d, 0x00}}},\n    {{{    58,     17,     27}, 0, {     0,      0}, {0x44, 0x59, 0x39, 0x00}}},\n    {{{     7,     27,    -13}, 0, {     0,      0}, {0xda, 0x67, 0xc2, 0x00}}},\n    {{{    58,     19,     -9}, 0, {     0,      0}, {0x3e, 0x4a, 0xaf, 0x00}}},\n    {{{    -9,    -28,      6}, 0, {     0,      0}, {0x96, 0xbf, 0xec, 0x00}}},\n    {{{    -9,    -10,    -15}, 0, {     0,      0}, {0x8f, 0x01, 0xc7, 0x00}}},\n    {{{    -8,     15,     -5}, 0, {     0,      0}, {0x91, 0x39, 0xed, 0x00}}},\n    {{{    -8,     14,     22}, 0, {     0,      0}, {0x99, 0x2e, 0x38, 0x00}}},\n    {{{    -9,    -13,     30}, 0, {     0,      0}, {0x8a, 0xe9, 0x26, 0x00}}},\n    {{{    67,    -12,    -13}, 0, {     0,      0}, {0x68, 0xeb, 0xbc, 0x00}}},\n};\n\n// 0x0400DA10\nstatic const Vtx mario_right_arm_shared_dl_vertex_group2[] = {\n    {{{    57,    -38,      6}, 0, {     0,      0}, {0x3e, 0x93, 0x07, 0x00}}},\n    {{{    67,    -14,     28}, 0, {     0,      0}, {0x6f, 0xe8, 0x37, 0x00}}},\n    {{{    57,    -17,     37}, 0, {     0,      0}, {0x33, 0xe8, 0x71, 0x00}}},\n    {{{    58,     17,     27}, 0, {     0,      0}, {0x44, 0x59, 0x39, 0x00}}},\n    {{{    67,     11,     -4}, 0, {     0,      0}, {0x78, 0x26, 0xf1, 0x00}}},\n    {{{    58,     19,     -9}, 0, {     0,      0}, {0x3e, 0x4a, 0xaf, 0x00}}},\n    {{{    67,     10,     21}, 0, {     0,      0}, {0x71, 0x2a, 0x25, 0x00}}},\n    {{{    66,    -28,      6}, 0, {     0,      0}, {0x75, 0xd1, 0xfe, 0x00}}},\n    {{{    67,    -12,    -13}, 0, {     0,      0}, {0x68, 0xeb, 0xbc, 0x00}}},\n    {{{    -9,    -13,     30}, 0, {     0,      0}, {0x8a, 0xe9, 0x26, 0x00}}},\n    {{{    -9,    -28,      6}, 0, {     0,      0}, {0x96, 0xbf, 0xec, 0x00}}},\n    {{{     5,    -44,      5}, 0, {     0,      0}, {0xd3, 0x8a, 0xf7, 0x00}}},\n    {{{    -8,     14,     22}, 0, {     0,      0}, {0x99, 0x2e, 0x38, 0x00}}},\n    {{{     6,    -19,     44}, 0, {     0,      0}, {0xd5, 0xd4, 0x6e, 0x00}}},\n    {{{    -8,     15,     -5}, 0, {     0,      0}, {0x91, 0x39, 0xed, 0x00}}},\n    {{{     7,     25,     32}, 0, {     0,      0}, {0xd9, 0x5c, 0x4d, 0x00}}},\n};\n\n// 0x0400DB10\nstatic const Vtx mario_right_arm_shared_dl_vertex_group3[] = {\n    {{{    -9,    -10,    -15}, 0, {     0,      0}, {0x8f, 0x01, 0xc7, 0x00}}},\n    {{{    -8,     15,     -5}, 0, {     0,      0}, {0x91, 0x39, 0xed, 0x00}}},\n    {{{     7,     27,    -13}, 0, {     0,      0}, {0xda, 0x67, 0xc2, 0x00}}},\n    {{{    -9,    -28,      6}, 0, {     0,      0}, {0x96, 0xbf, 0xec, 0x00}}},\n    {{{     6,    -15,    -30}, 0, {     0,      0}, {0xd6, 0xe6, 0x8c, 0x00}}},\n    {{{    58,     19,     -9}, 0, {     0,      0}, {0x3e, 0x4a, 0xaf, 0x00}}},\n    {{{    57,    -14,    -22}, 0, {     0,      0}, {0x33, 0xcf, 0x97, 0x00}}},\n    {{{    58,     17,     27}, 0, {     0,      0}, {0x44, 0x59, 0x39, 0x00}}},\n    {{{    57,    -17,     37}, 0, {     0,      0}, {0x33, 0xe8, 0x71, 0x00}}},\n    {{{     7,     25,     32}, 0, {     0,      0}, {0xd9, 0x5c, 0x4d, 0x00}}},\n    {{{    57,    -38,      6}, 0, {     0,      0}, {0x3e, 0x93, 0x07, 0x00}}},\n    {{{     6,    -19,     44}, 0, {     0,      0}, {0xd5, 0xd4, 0x6e, 0x00}}},\n    {{{     5,    -44,      5}, 0, {     0,      0}, {0xd3, 0x8a, 0xf7, 0x00}}},\n    {{{    67,    -12,    -13}, 0, {     0,      0}, {0x68, 0xeb, 0xbc, 0x00}}},\n    {{{    67,     11,     -4}, 0, {     0,      0}, {0x78, 0x26, 0xf1, 0x00}}},\n    {{{    66,    -28,      6}, 0, {     0,      0}, {0x75, 0xd1, 0xfe, 0x00}}},\n};\n\n// 0x0400DC10\nstatic const Vtx mario_right_arm_shared_dl_vertex_group4[] = {\n    {{{    -9,    -10,    -15}, 0, {     0,      0}, {0x8f, 0x01, 0xc7, 0x00}}},\n    {{{    -9,    -28,      6}, 0, {     0,      0}, {0x96, 0xbf, 0xec, 0x00}}},\n    {{{    -9,    -13,     30}, 0, {     0,      0}, {0x8a, 0xe9, 0x26, 0x00}}},\n    {{{    -8,     15,     -5}, 0, {     0,      0}, {0x91, 0x39, 0xed, 0x00}}},\n    {{{    -8,     14,     22}, 0, {     0,      0}, {0x99, 0x2e, 0x38, 0x00}}},\n    {{{    67,     11,     -4}, 0, {     0,      0}, {0x78, 0x26, 0xf1, 0x00}}},\n    {{{    67,    -14,     28}, 0, {     0,      0}, {0x6f, 0xe8, 0x37, 0x00}}},\n    {{{    66,    -28,      6}, 0, {     0,      0}, {0x75, 0xd1, 0xfe, 0x00}}},\n    {{{    67,     10,     21}, 0, {     0,      0}, {0x71, 0x2a, 0x25, 0x00}}},\n};\n\n// 0x0400DCA0 - 0x0400DDE8\nconst Gfx mario_right_arm_shared_dl[] = {\n    gsSPVertex(mario_right_arm_shared_dl_vertex_group1, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 5,  6,  4, 0x0,  7,  8,  6, 0x0),\n    gsSP2Triangles( 9,  2,  8, 0x0,  1, 10,  2, 0x0),\n    gsSP2Triangles( 2, 11,  8, 0x0,  8, 12,  6, 0x0),\n    gsSP2Triangles( 6, 13,  4, 0x0,  4, 14,  1, 0x0),\n    gsSP2Triangles( 9, 15,  0, 0x0,  0, 15,  3, 0x0),\n    gsSPVertex(mario_right_arm_shared_dl_vertex_group2, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  3,  6,  4, 0x0),\n    gsSP2Triangles( 1,  6,  3, 0x0,  0,  7,  1, 0x0),\n    gsSP2Triangles( 8,  7,  0, 0x0,  5,  4,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 12,  9, 13, 0x0),\n    gsSP1Triangle(14, 12, 15, 0x0),\n    gsSPVertex(mario_right_arm_shared_dl_vertex_group3, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 5,  6,  4, 0x0,  7,  5,  2, 0x0),\n    gsSP2Triangles( 8,  7,  9, 0x0, 10,  8, 11, 0x0),\n    gsSP2Triangles( 6, 10, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(mario_right_arm_shared_dl_vertex_group4, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 2,  4,  3, 0x0,  5,  6,  7, 0x0),\n    gsSP1Triangle( 5,  8,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0400DDE8 - 0x0400DE08\nconst Gfx mario_right_arm[] = {\n    gsSPLight(&mario_red_lights_group.l, 1),\n    gsSPLight(&mario_red_lights_group.a, 2),\n    gsSPDisplayList(mario_right_arm_shared_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x0400DE08\nstatic const Vtx mario_right_forearm_shared_dl_vertex[] = {\n    {{{    47,    -15,    -19}, 0, {     0,      0}, {0x41, 0xcf, 0x9f, 0x00}}},\n    {{{    -3,    -39,      6}, 0, {     0,      0}, {0xd4, 0x8a, 0xf8, 0x00}}},\n    {{{    -2,    -15,    -23}, 0, {     0,      0}, {0xd7, 0xe5, 0x8c, 0x00}}},\n    {{{    46,    -36,      6}, 0, {     0,      0}, {0x3f, 0x94, 0x0f, 0x00}}},\n    {{{    -2,    -18,     38}, 0, {     0,      0}, {0xd6, 0xd5, 0x6f, 0x00}}},\n    {{{    47,    -17,     34}, 0, {     0,      0}, {0x42, 0xec, 0x6a, 0x00}}},\n    {{{    -1,     18,     28}, 0, {     0,      0}, {0xdb, 0x5d, 0x4d, 0x00}}},\n    {{{    48,     13,     25}, 0, {     0,      0}, {0x45, 0x5d, 0x32, 0x00}}},\n    {{{    -1,     20,     -9}, 0, {     0,      0}, {0xdb, 0x67, 0xc1, 0x00}}},\n    {{{    48,     15,     -7}, 0, {     0,      0}, {0x45, 0x4c, 0xb6, 0x00}}},\n    {{{   -14,    -28,      6}, 0, {     0,      0}, {0x90, 0xc9, 0xef, 0x00}}},\n    {{{   -14,    -12,    -13}, 0, {     0,      0}, {0x91, 0x01, 0xc3, 0x00}}},\n    {{{   -13,     12,     -4}, 0, {     0,      0}, {0x9e, 0x4b, 0xe7, 0x00}}},\n    {{{   -13,     10,     21}, 0, {     0,      0}, {0x8d, 0x22, 0x28, 0x00}}},\n    {{{   -14,    -14,     28}, 0, {     0,      0}, {0x9a, 0xd8, 0x3f, 0x00}}},\n    {{{    59,     -8,      7}, 0, {     0,      0}, {0x7f, 0xfd, 0x00, 0x00}}},\n};\n\n// 0x0400DF08 - 0x0400DFF8\nconst Gfx mario_right_forearm_shared_dl[] = {\n    gsSPVertex(mario_right_forearm_shared_dl_vertex, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 5,  6,  4, 0x0,  7,  8,  6, 0x0),\n    gsSP2Triangles( 9,  2,  8, 0x0,  1, 10,  2, 0x0),\n    gsSP2Triangles( 2, 11,  8, 0x0,  8, 12,  6, 0x0),\n    gsSP2Triangles( 6, 13,  4, 0x0,  4, 14,  1, 0x0),\n    gsSP2Triangles( 9, 15,  0, 0x0,  0, 15,  3, 0x0),\n    gsSP2Triangles( 3, 15,  5, 0x0,  5, 15,  7, 0x0),\n    gsSP2Triangles( 7, 15,  9, 0x0, 14, 10,  1, 0x0),\n    gsSP2Triangles(13, 14,  4, 0x0, 12, 13,  6, 0x0),\n    gsSP2Triangles(11, 12,  8, 0x0, 10, 11,  2, 0x0),\n    gsSP2Triangles( 9,  0,  2, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles( 5,  7,  6, 0x0,  3,  5,  4, 0x0),\n    gsSP2Triangles( 0,  3,  1, 0x0, 11, 13, 12, 0x0),\n    gsSP2Triangles(11, 10, 13, 0x0, 10, 14, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0400DFF8\nstatic const Vtx mario_right_hand_closed_dl_vertex_group1[] = {\n    {{{    35,      9,    -37}, 0, {     0,      0}, {0xe5, 0xf5, 0x85, 0x00}}},\n    {{{    55,    -44,     -4}, 0, {     0,      0}, {0x00, 0x86, 0xdf, 0x00}}},\n    {{{    31,    -40,     -1}, 0, {     0,      0}, {0x43, 0xa4, 0xc9, 0x00}}},\n    {{{    10,     60,     -4}, 0, {     0,      0}, {0xac, 0x5a, 0xe5, 0x00}}},\n    {{{    -2,     41,     -1}, 0, {     0,      0}, {0xed, 0x70, 0xc9, 0x00}}},\n    {{{    24,    -57,     -4}, 0, {     0,      0}, {0x73, 0xd4, 0xe6, 0x00}}},\n    {{{     4,     -3,    -33}, 0, {     0,      0}, {0x48, 0x1e, 0x9d, 0x00}}},\n    {{{   -19,     47,     -4}, 0, {     0,      0}, {0x30, 0x72, 0xe5, 0x00}}},\n    {{{   -14,     26,     41}, 0, {     0,      0}, {0xed, 0x3d, 0x6d, 0x00}}},\n    {{{    13,    -38,     41}, 0, {     0,      0}, {0x15, 0xb3, 0x61, 0x00}}},\n    {{{    23,    -26,     35}, 0, {     0,      0}, {0x04, 0xc3, 0x6e, 0x00}}},\n    {{{    24,    -57,     -4}, 0, {     0,      0}, {0xa2, 0xaf, 0xe7, 0x00}}},\n    {{{   -16,    -12,      6}, 0, {     0,      0}, {0x8c, 0xcf, 0xf8, 0x00}}},\n    {{{     4,     -3,    -33}, 0, {     0,      0}, {0x9b, 0xd5, 0xc2, 0x00}}},\n    {{{   -19,     47,     -4}, 0, {     0,      0}, {0x85, 0xf5, 0xe7, 0x00}}},\n    {{{    58,     81,      0}, 0, {     0,      0}, {0x14, 0x7b, 0xe9, 0x00}}},\n};\n\n// 0x0400E0F8\nstatic const Vtx mario_right_hand_closed_dl_vertex_group2[] = {\n    {{{    35,      9,    -37}, 0, {     0,      0}, {0xe5, 0xf5, 0x85, 0x00}}},\n    {{{   104,    -26,      1}, 0, {     0,      0}, {0x68, 0xc5, 0xd7, 0x00}}},\n    {{{    55,    -44,     -4}, 0, {     0,      0}, {0x00, 0x86, 0xdf, 0x00}}},\n    {{{    75,    -33,     66}, 0, {     0,      0}, {0x08, 0xaf, 0x60, 0x00}}},\n    {{{    96,     -8,     52}, 0, {     0,      0}, {0x60, 0x06, 0x51, 0x00}}},\n    {{{    57,     10,     66}, 0, {     0,      0}, {0xfd, 0x1c, 0x7b, 0x00}}},\n    {{{    58,     81,      0}, 0, {     0,      0}, {0x14, 0x7b, 0xe9, 0x00}}},\n    {{{    97,     39,     24}, 0, {     0,      0}, {0x6b, 0x3a, 0x21, 0x00}}},\n    {{{    86,     30,    -33}, 0, {     0,      0}, {0x4f, 0x22, 0xa4, 0x00}}},\n    {{{    86,     15,     52}, 0, {     0,      0}, {0x40, 0x30, 0x61, 0x00}}},\n    {{{    54,     54,     44}, 0, {     0,      0}, {0x20, 0x51, 0x5c, 0x00}}},\n    {{{    29,     62,     34}, 0, {     0,      0}, {0xce, 0x4c, 0x57, 0x00}}},\n    {{{    29,      6,     49}, 0, {     0,      0}, {0xc2, 0xfa, 0x6e, 0x00}}},\n    {{{    10,     60,     -4}, 0, {     0,      0}, {0xac, 0x5a, 0xe5, 0x00}}},\n};\n\n// 0x0400E1D8\nstatic const Vtx mario_right_hand_closed_dl_vertex_group3[] = {\n    {{{    31,    -40,     -1}, 0, {     0,      0}, {0x43, 0xa4, 0xc9, 0x00}}},\n    {{{    23,    -26,     35}, 0, {     0,      0}, {0x04, 0xc3, 0x6e, 0x00}}},\n    {{{    13,    -38,     41}, 0, {     0,      0}, {0x15, 0xb3, 0x61, 0x00}}},\n    {{{     1,     24,     35}, 0, {     0,      0}, {0xd2, 0x3c, 0x65, 0x00}}},\n    {{{   -14,     26,     41}, 0, {     0,      0}, {0xed, 0x3d, 0x6d, 0x00}}},\n    {{{    -2,     41,     -1}, 0, {     0,      0}, {0xed, 0x70, 0xc9, 0x00}}},\n    {{{    15,      0,    -23}, 0, {     0,      0}, {0x04, 0x01, 0x82, 0x00}}},\n    {{{     4,     -3,    -33}, 0, {     0,      0}, {0x48, 0x1e, 0x9d, 0x00}}},\n    {{{    35,      9,    -37}, 0, {     0,      0}, {0xe5, 0xf5, 0x85, 0x00}}},\n    {{{    29,      6,     49}, 0, {     0,      0}, {0xc2, 0xfa, 0x6e, 0x00}}},\n    {{{    55,    -44,     -4}, 0, {     0,      0}, {0x00, 0x86, 0xdf, 0x00}}},\n    {{{    75,    -33,     66}, 0, {     0,      0}, {0x08, 0xaf, 0x60, 0x00}}},\n    {{{    57,     10,     66}, 0, {     0,      0}, {0xfd, 0x1c, 0x7b, 0x00}}},\n    {{{    10,     60,     -4}, 0, {     0,      0}, {0xac, 0x5a, 0xe5, 0x00}}},\n    {{{    29,     62,     34}, 0, {     0,      0}, {0xce, 0x4c, 0x57, 0x00}}},\n};\n\n// 0x0400E2C8 - 0x0400E458\nconst Gfx mario_right_hand_closed_dl[] = {\n    gsSPVertex(mario_right_hand_closed_dl_vertex_group1, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 2,  5,  6, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 4,  7,  8, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 9,  5,  2, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(13, 12, 14, 0x0, 14, 12,  8, 0x0),\n    gsSP2Triangles( 8, 12,  9, 0x0,  9, 12, 11, 0x0),\n    gsSP1Triangle( 3, 15,  0, 0x0),\n    gsSPVertex(mario_right_hand_closed_dl_vertex_group2, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 8,  7,  1, 0x0,  1,  7,  4, 0x0),\n    gsSP2Triangles( 4,  7,  9, 0x0, 10,  7,  6, 0x0),\n    gsSP2Triangles( 9, 10,  5, 0x0, 10, 11,  5, 0x0),\n    gsSP2Triangles(11, 12,  5, 0x0,  1,  4,  3, 0x0),\n    gsSP2Triangles(11, 10,  6, 0x0,  6, 13, 11, 0x0),\n    gsSP2Triangles( 7, 10,  9, 0x0,  4,  9,  5, 0x0),\n    gsSP2Triangles( 0,  8,  1, 0x0,  6,  8,  0, 0x0),\n    gsSPVertex(mario_right_hand_closed_dl_vertex_group3, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 4,  3,  5, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 7,  6,  0, 0x0,  8,  6,  5, 0x0),\n    gsSP2Triangles( 9,  3,  1, 0x0,  0,  6,  8, 0x0),\n    gsSP2Triangles(10, 11,  1, 0x0, 11,  9,  1, 0x0),\n    gsSP2Triangles(11, 12,  9, 0x0,  1,  0, 10, 0x0),\n    gsSP2Triangles(13,  5,  3, 0x0,  3,  9, 14, 0x0),\n    gsSP1Triangle(14, 13,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0400E458 - 0x0400E478\nconst Gfx mario_right_hand_closed[] = {\n    gsSPLight(&mario_white_lights_group.l, 1),\n    gsSPLight(&mario_white_lights_group.a, 2),\n    gsSPDisplayList(mario_right_hand_closed_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x0400E478 - 0x0400E4A8\nconst Gfx mario_metal_right_hand_closed[] = {\n    gsSPDisplayList(mario_right_hand_closed_dl),\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_TEXTURE_GEN),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_OFF),\n    gsSPEndDisplayList(),\n};\n\n// 0x0400E4A8\nstatic const Vtx mario_left_thigh_dl_vertex_group1[] = {\n    {{{     1,    -44,      8}, 0, {     0,      0}, {0xab, 0xa2, 0x00, 0x00}}},\n    {{{   -15,      0,      7}, 0, {     0,      0}, {0x82, 0xf7, 0xff, 0x00}}},\n    {{{     0,    -13,    -32}, 0, {     0,      0}, {0x9f, 0xe1, 0xb5, 0x00}}},\n    {{{    -4,     37,    -17}, 0, {     0,      0}, {0x9e, 0x30, 0xc0, 0x00}}},\n    {{{    -5,     37,     31}, 0, {     0,      0}, {0xa0, 0x3f, 0x34, 0x00}}},\n    {{{    -1,    -12,     47}, 0, {     0,      0}, {0x9e, 0xe3, 0x49, 0x00}}},\n    {{{    95,     -5,     48}, 0, {     0,      0}, {0x4e, 0xe9, 0x60, 0x00}}},\n    {{{   116,     10,      8}, 0, {     0,      0}, {0x7e, 0x09, 0x01, 0x00}}},\n    {{{    91,     45,     32}, 0, {     0,      0}, {0x3c, 0x4e, 0x4f, 0x00}}},\n    {{{    92,     45,    -16}, 0, {     0,      0}, {0x35, 0x5d, 0xbd, 0x00}}},\n    {{{    96,     -5,    -31}, 0, {     0,      0}, {0x50, 0xe8, 0xa1, 0x00}}},\n    {{{    98,    -37,      8}, 0, {     0,      0}, {0x46, 0x97, 0x01, 0x00}}},\n    {{{    19,    -15,    -42}, 0, {     0,      0}, {0xec, 0xd9, 0x8a, 0x00}}},\n    {{{    14,     48,    -23}, 0, {     0,      0}, {0xd7, 0x67, 0xc5, 0x00}}},\n    {{{    13,     48,     38}, 0, {     0,      0}, {0xe7, 0x6d, 0x3a, 0x00}}},\n    {{{    18,    -15,     58}, 0, {     0,      0}, {0xea, 0xda, 0x76, 0x00}}},\n};\n\n// 0x0400E5A8\nstatic const Vtx mario_left_thigh_dl_vertex_group2[] = {\n    {{{    18,    -15,     58}, 0, {     0,      0}, {0xea, 0xda, 0x76, 0x00}}},\n    {{{     1,    -44,      8}, 0, {     0,      0}, {0xab, 0xa2, 0x00, 0x00}}},\n    {{{    21,    -54,      8}, 0, {     0,      0}, {0xf0, 0x83, 0x00, 0x00}}},\n    {{{    19,    -15,    -42}, 0, {     0,      0}, {0xec, 0xd9, 0x8a, 0x00}}},\n    {{{    -1,    -12,     47}, 0, {     0,      0}, {0x9e, 0xe3, 0x49, 0x00}}},\n    {{{   -15,      0,      7}, 0, {     0,      0}, {0x82, 0xf7, 0xff, 0x00}}},\n    {{{    98,    -37,      8}, 0, {     0,      0}, {0x46, 0x97, 0x01, 0x00}}},\n    {{{    13,     48,     38}, 0, {     0,      0}, {0xe7, 0x6d, 0x3a, 0x00}}},\n    {{{    91,     45,     32}, 0, {     0,      0}, {0x3c, 0x4e, 0x4f, 0x00}}},\n    {{{    14,     48,    -23}, 0, {     0,      0}, {0xd7, 0x67, 0xc5, 0x00}}},\n    {{{    92,     45,    -16}, 0, {     0,      0}, {0x35, 0x5d, 0xbd, 0x00}}},\n    {{{    96,     -5,    -31}, 0, {     0,      0}, {0x50, 0xe8, 0xa1, 0x00}}},\n    {{{    95,     -5,     48}, 0, {     0,      0}, {0x4e, 0xe9, 0x60, 0x00}}},\n    {{{     0,    -13,    -32}, 0, {     0,      0}, {0x9f, 0xe1, 0xb5, 0x00}}},\n    {{{    -5,     37,     31}, 0, {     0,      0}, {0xa0, 0x3f, 0x34, 0x00}}},\n    {{{    -4,     37,    -17}, 0, {     0,      0}, {0x9e, 0x30, 0xc0, 0x00}}},\n};\n\n// 0x0400E6A8 - 0x0400E7B0\nconst Gfx mario_left_thigh_dl[] = {\n    gsSPVertex(mario_left_thigh_dl_vertex_group1, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 3,  1,  4, 0x0,  4,  1,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 9,  7, 10, 0x0, 10,  7, 11, 0x0),\n    gsSP2Triangles(11,  7,  6, 0x0, 12,  3, 13, 0x0),\n    gsSP2Triangles(13,  4, 14, 0x0, 14,  4, 15, 0x0),\n    gsSPVertex(mario_left_thigh_dl_vertex_group2, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  5,  1, 0x0,  0,  2,  6, 0x0),\n    gsSP2Triangles( 7,  0,  8, 0x0,  9,  7, 10, 0x0),\n    gsSP2Triangles( 3,  9, 10, 0x0,  2,  3,  6, 0x0),\n    gsSP2Triangles( 3, 11,  6, 0x0, 10, 11,  3, 0x0),\n    gsSP2Triangles( 7,  8, 10, 0x0,  0, 12,  8, 0x0),\n    gsSP2Triangles( 6, 12,  0, 0x0,  1, 13,  3, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0, 14,  4,  0, 0x0),\n    gsSP2Triangles( 9, 15, 14, 0x0,  3, 13, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0400E7B0 - 0x0400E7E0\nconst Gfx mario_left_thigh[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPLight(&mario_blue_lights_group.l, 1),\n    gsSPLight(&mario_blue_lights_group.a, 2),\n    gsSPDisplayList(mario_left_thigh_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x0400E7E0 - 0x0400E858\nconst Gfx mario_metal_left_thigh[] = {\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_TEXTURE_GEN),\n    gsDPSetCombineMode(G_CC_DECALFADE, G_CC_DECALFADE),\n    gsDPLoadTextureBlock(mario_texture_metal, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_ON),\n    gsSPLight(&mario_white_lights_group.l, 1),\n    gsSPLight(&mario_white_lights_group.a, 2),\n    gsSPDisplayList(mario_left_thigh_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x0400E858\nstatic const Vtx mario_left_leg_shared_dl_vertex[] = {\n    {{{     4,    -37,      9}, 0, {     0,      0}, {0xc1, 0x93, 0x00, 0x00}}},\n    {{{    64,    -46,      9}, 0, {     0,      0}, {0x4b, 0x9a, 0x01, 0x00}}},\n    {{{    65,    -11,     54}, 0, {     0,      0}, {0x2d, 0xdb, 0x70, 0x00}}},\n    {{{     8,     44,     33}, 0, {     0,      0}, {0xcc, 0x5e, 0x43, 0x00}}},\n    {{{    68,     45,     37}, 0, {     0,      0}, {0x52, 0x4b, 0x3c, 0x00}}},\n    {{{    69,     45,    -18}, 0, {     0,      0}, {0x42, 0x61, 0xd1, 0x00}}},\n    {{{     9,     44,    -16}, 0, {     0,      0}, {0xc4, 0x4d, 0xaf, 0x00}}},\n    {{{    66,    -11,    -36}, 0, {     0,      0}, {0x2e, 0xda, 0x91, 0x00}}},\n    {{{     6,     -6,    -31}, 0, {     0,      0}, {0xb4, 0xe5, 0x9f, 0x00}}},\n    {{{     6,     -6,     49}, 0, {     0,      0}, {0xb3, 0xe7, 0x60, 0x00}}},\n    {{{   -14,      8,      8}, 0, {     0,      0}, {0x82, 0x06, 0xff, 0x00}}},\n    {{{    81,      3,      9}, 0, {     0,      0}, {0x7e, 0xfa, 0x01, 0x00}}},\n};\n\n// 0x0400E918 - 0x0400E9C8\nconst Gfx mario_left_leg_shared_dl[] = {\n    gsSPVertex(mario_left_leg_shared_dl_vertex, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 0,  7,  1, 0x0,  0,  8,  7, 0x0),\n    gsSP2Triangles( 7,  8,  6, 0x0,  5,  6,  3, 0x0),\n    gsSP2Triangles( 3,  9,  2, 0x0,  2,  9,  0, 0x0),\n    gsSP2Triangles( 3, 10,  9, 0x0,  5, 11,  7, 0x0),\n    gsSP2Triangles( 7, 11,  1, 0x0,  1, 11,  2, 0x0),\n    gsSP2Triangles( 2, 11,  4, 0x0,  4, 11,  5, 0x0),\n    gsSP2Triangles( 9, 10,  0, 0x0,  0, 10,  8, 0x0),\n    gsSP2Triangles( 8, 10,  6, 0x0,  6, 10,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0400E9C8\nstatic const Vtx mario_left_foot_shared_dl_vertex_group1[] = {\n    {{{   110,      9,     35}, 0, {     0,      0}, {0x2b, 0x77, 0xff, 0x00}}},\n    {{{   110,      8,    -20}, 0, {     0,      0}, {0x2b, 0x77, 0xff, 0x00}}},\n    {{{    76,     20,    -41}, 0, {     0,      0}, {0x2b, 0x77, 0xff, 0x00}}},\n    {{{    78,     21,     61}, 0, {     0,      0}, {0x2b, 0x77, 0xff, 0x00}}},\n    {{{   -12,     53,    -32}, 0, {     0,      0}, {0x2b, 0x77, 0xff, 0x00}}},\n    {{{   -11,     54,     53}, 0, {     0,      0}, {0x2b, 0x77, 0xff, 0x00}}},\n    {{{   -39,     64,     -8}, 0, {     0,      0}, {0x2b, 0x77, 0xff, 0x00}}},\n    {{{   -41,     65,     26}, 0, {     0,      0}, {0x2b, 0x77, 0xff, 0x00}}},\n    {{{    43,    -18,     54}, 0, {     0,      0}, {0x07, 0xb3, 0x64, 0x00}}},\n    {{{    78,     21,     61}, 0, {     0,      0}, {0x15, 0xdb, 0x77, 0x00}}},\n    {{{   -11,     54,     53}, 0, {     0,      0}, {0xd9, 0x00, 0x78, 0x00}}},\n    {{{    44,    -12,    -33}, 0, {     0,      0}, {0x01, 0xb7, 0x99, 0x00}}},\n    {{{   -35,     11,    -21}, 0, {     0,      0}, {0xb5, 0xd2, 0xa5, 0x00}}},\n    {{{   -12,     53,    -32}, 0, {     0,      0}, {0xd7, 0xfd, 0x89, 0x00}}},\n    {{{   -34,     12,     44}, 0, {     0,      0}, {0xb2, 0xd2, 0x58, 0x00}}},\n    {{{    76,     20,    -41}, 0, {     0,      0}, {0x0c, 0xd8, 0x89, 0x00}}},\n};\n\n// 0x0400EAC8\nstatic const Vtx mario_left_foot_shared_dl_vertex_group2[] = {\n    {{{    44,    -12,    -33}, 0, {     0,      0}, {0x01, 0xb7, 0x99, 0x00}}},\n    {{{    76,     20,    -41}, 0, {     0,      0}, {0x0c, 0xd8, 0x89, 0x00}}},\n    {{{   110,      8,    -20}, 0, {     0,      0}, {0x44, 0xad, 0xbe, 0x00}}},\n    {{{    80,    -31,      7}, 0, {     0,      0}, {0x34, 0x8d, 0xfb, 0x00}}},\n    {{{   110,      9,     35}, 0, {     0,      0}, {0x4c, 0xaf, 0x3c, 0x00}}},\n    {{{    78,     21,     61}, 0, {     0,      0}, {0x15, 0xdb, 0x77, 0x00}}},\n    {{{    43,    -18,     54}, 0, {     0,      0}, {0x07, 0xb3, 0x64, 0x00}}},\n    {{{   -34,     12,     44}, 0, {     0,      0}, {0xb2, 0xd2, 0x58, 0x00}}},\n    {{{   -11,     54,     53}, 0, {     0,      0}, {0xd9, 0x00, 0x78, 0x00}}},\n    {{{   -41,     65,     26}, 0, {     0,      0}, {0x90, 0x17, 0x35, 0x00}}},\n    {{{   -39,     64,     -8}, 0, {     0,      0}, {0x93, 0x16, 0xc4, 0x00}}},\n    {{{   -35,     11,    -21}, 0, {     0,      0}, {0xb5, 0xd2, 0xa5, 0x00}}},\n    {{{   -54,     15,      8}, 0, {     0,      0}, {0x88, 0xd8, 0xfd, 0x00}}},\n    {{{   -12,     53,    -32}, 0, {     0,      0}, {0xd7, 0xfd, 0x89, 0x00}}},\n    {{{    27,    -35,     11}, 0, {     0,      0}, {0xdb, 0x87, 0xfc, 0x00}}},\n};\n\n// 0x0400EBB8 - 0x0400ECA0\nconst Gfx mario_left_foot_shared_dl[] = {\n    gsSPVertex(mario_left_foot_shared_dl_vertex_group1, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  5,  3,  4, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(14,  8, 10, 0x0, 11, 13, 15, 0x0),\n    gsSPVertex(mario_left_foot_shared_dl_vertex_group2, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 2,  3,  0, 0x0,  4,  5,  6, 0x0),\n    gsSP2Triangles( 6,  3,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP2Triangles(12,  9, 10, 0x0,  9, 12,  7, 0x0),\n    gsSP2Triangles(14,  0,  3, 0x0, 11,  0, 14, 0x0),\n    gsSP2Triangles( 3,  6, 14, 0x0, 14,  6,  7, 0x0),\n    gsSP2Triangles(14,  7, 12, 0x0, 12, 11, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0400ECA0 - 0x0400ECC0\nconst Gfx mario_left_foot[] = {\n    gsSPLight(&mario_brown1_lights_group.l, 1),\n    gsSPLight(&mario_brown1_lights_group.a, 2),\n    gsSPDisplayList(mario_left_foot_shared_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x0400ECC0\nstatic const Vtx mario_right_thigh_shared_dl_vertex_group1[] = {\n    {{{    98,    -35,    -10}, 0, {     0,      0}, {0x47, 0x97, 0xfc, 0x00}}},\n    {{{    19,    -16,     41}, 0, {     0,      0}, {0xee, 0xd6, 0x76, 0x00}}},\n    {{{    22,    -54,     -9}, 0, {     0,      0}, {0xf2, 0x82, 0xfd, 0x00}}},\n    {{{    91,     46,     16}, 0, {     0,      0}, {0x35, 0x5c, 0x44, 0x00}}},\n    {{{    13,     48,     24}, 0, {     0,      0}, {0xd6, 0x66, 0x3e, 0x00}}},\n    {{{    12,     49,    -37}, 0, {     0,      0}, {0xe5, 0x6e, 0xc9, 0x00}}},\n    {{{    90,     47,    -32}, 0, {     0,      0}, {0x3b, 0x50, 0xb2, 0x00}}},\n    {{{    18,    -13,    -58}, 0, {     0,      0}, {0xea, 0xdc, 0x89, 0x00}}},\n    {{{     1,    -44,     -9}, 0, {     0,      0}, {0xad, 0xa1, 0xff, 0x00}}},\n    {{{   -15,      0,     -7}, 0, {     0,      0}, {0x82, 0xf5, 0x02, 0x00}}},\n    {{{    -1,    -11,    -47}, 0, {     0,      0}, {0x9d, 0xe3, 0xb7, 0x00}}},\n    {{{    -6,     38,    -31}, 0, {     0,      0}, {0x9e, 0x3f, 0xcf, 0x00}}},\n    {{{    -5,     36,     18}, 0, {     0,      0}, {0x9e, 0x2d, 0x42, 0x00}}},\n    {{{    95,     -3,    -49}, 0, {     0,      0}, {0x4d, 0xec, 0x9e, 0x00}}},\n    {{{   116,     11,     -9}, 0, {     0,      0}, {0x7e, 0x0b, 0xfe, 0x00}}},\n    {{{    96,     -5,     30}, 0, {     0,      0}, {0x51, 0xe7, 0x5d, 0x00}}},\n};\n\n// 0x0400EDC0\nstatic const Vtx mario_right_thigh_shared_dl_vertex_group2[] = {\n    {{{    -5,     36,     18}, 0, {     0,      0}, {0x9e, 0x2d, 0x42, 0x00}}},\n    {{{   -15,      0,     -7}, 0, {     0,      0}, {0x82, 0xf5, 0x02, 0x00}}},\n    {{{     0,    -14,     31}, 0, {     0,      0}, {0xa0, 0xdf, 0x4b, 0x00}}},\n    {{{     1,    -44,     -9}, 0, {     0,      0}, {0xad, 0xa1, 0xff, 0x00}}},\n    {{{    19,    -16,     41}, 0, {     0,      0}, {0xee, 0xd6, 0x76, 0x00}}},\n    {{{    -6,     38,    -31}, 0, {     0,      0}, {0x9e, 0x3f, 0xcf, 0x00}}},\n    {{{    13,     48,     24}, 0, {     0,      0}, {0xd6, 0x66, 0x3e, 0x00}}},\n    {{{    18,    -13,    -58}, 0, {     0,      0}, {0xea, 0xdc, 0x89, 0x00}}},\n    {{{    -1,    -11,    -47}, 0, {     0,      0}, {0x9d, 0xe3, 0xb7, 0x00}}},\n    {{{    95,     -3,    -49}, 0, {     0,      0}, {0x4d, 0xec, 0x9e, 0x00}}},\n    {{{    98,    -35,    -10}, 0, {     0,      0}, {0x47, 0x97, 0xfc, 0x00}}},\n    {{{    90,     47,    -32}, 0, {     0,      0}, {0x3b, 0x50, 0xb2, 0x00}}},\n    {{{    91,     46,     16}, 0, {     0,      0}, {0x35, 0x5c, 0x44, 0x00}}},\n    {{{    12,     49,    -37}, 0, {     0,      0}, {0xe5, 0x6e, 0xc9, 0x00}}},\n    {{{    96,     -5,     30}, 0, {     0,      0}, {0x51, 0xe7, 0x5d, 0x00}}},\n};\n\n// 0x0400EEB0 - 0x0400EFB8\nconst Gfx mario_right_thigh_shared_dl[] = {\n    gsSPVertex(mario_right_thigh_shared_dl_vertex_group1, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 3,  5,  4, 0x0,  6,  7,  5, 0x0),\n    gsSP2Triangles( 0,  2,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 1,  8,  2, 0x0,  2,  8,  7, 0x0),\n    gsSP2Triangles( 7, 11,  5, 0x0,  5, 11,  4, 0x0),\n    gsSP2Triangles( 4, 12,  1, 0x0, 13, 14,  0, 0x0),\n    gsSP2Triangles( 0, 14, 15, 0x0, 15, 14,  3, 0x0),\n    gsSP2Triangles( 3, 14,  6, 0x0,  6, 14, 13, 0x0),\n    gsSP2Triangles(10,  9, 11, 0x0, 11,  9, 12, 0x0),\n    gsSPVertex(mario_right_thigh_shared_dl_vertex_group2, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  5,  0,  6, 0x0),\n    gsSP2Triangles( 7,  8,  5, 0x0,  3,  8,  7, 0x0),\n    gsSP2Triangles( 4,  2,  3, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles(11,  9,  7, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles( 4, 14, 12, 0x0, 10, 14,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0400EFB8 - 0x0400EFD8\nconst Gfx mario_right_thigh[] = {\n    gsSPLight(&mario_blue_lights_group.l, 1),\n    gsSPLight(&mario_blue_lights_group.a, 2),\n    gsSPDisplayList(mario_right_thigh_shared_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x0400EFD8\nstatic const Vtx mario_right_leg_shared_dl_vertex_group1[] = {\n    {{{    63,    -45,    -12}, 0, {     0,      0}, {0xf2, 0x9b, 0x4a, 0x00}}},\n    {{{    66,    -11,     34}, 0, {     0,      0}, {0xf2, 0x9b, 0x4a, 0x00}}},\n    {{{     4,    -36,    -10}, 0, {     0,      0}, {0xc0, 0x93, 0xfe, 0x00}}},\n    {{{    66,    -11,     34}, 0, {     0,      0}, {0xfb, 0x22, 0x7a, 0x00}}},\n    {{{    69,     45,     18}, 0, {     0,      0}, {0xfc, 0x22, 0x7a, 0x00}}},\n    {{{     9,     44,     16}, 0, {     0,      0}, {0xc6, 0x4b, 0x53, 0x00}}},\n    {{{    69,     45,     18}, 0, {     0,      0}, {0xff, 0x7f, 0x03, 0x00}}},\n    {{{    69,     46,    -37}, 0, {     0,      0}, {0xff, 0x7f, 0x03, 0x00}}},\n    {{{     9,     46,    -33}, 0, {     0,      0}, {0xcd, 0x60, 0xc0, 0x00}}},\n    {{{    69,     46,    -37}, 0, {     0,      0}, {0xf7, 0x27, 0x88, 0x00}}},\n    {{{    65,     -9,    -56}, 0, {     0,      0}, {0xf8, 0x28, 0x88, 0x00}}},\n    {{{    65,     -9,    -56}, 0, {     0,      0}, {0xef, 0xa0, 0xb0, 0x00}}},\n    {{{    63,    -45,    -12}, 0, {     0,      0}, {0xef, 0xa0, 0xb0, 0x00}}},\n    {{{     6,     -6,     30}, 0, {     0,      0}, {0xb4, 0xe4, 0x61, 0x00}}},\n    {{{   -13,     10,     -9}, 0, {     0,      0}, {0x82, 0x08, 0x02, 0x00}}},\n    {{{     5,     -3,    -50}, 0, {     0,      0}, {0xb2, 0xea, 0xa0, 0x00}}},\n};\n\n// 0x0400F0D8\nstatic const Vtx mario_right_leg_shared_dl_vertex_group2[] = {\n    {{{    65,     -9,    -56}, 0, {     0,      0}, {0x75, 0xee, 0xd5, 0x00}}},\n    {{{    83,      4,    -10}, 0, {     0,      0}, {0x7e, 0xf9, 0xfe, 0x00}}},\n    {{{    63,    -45,    -12}, 0, {     0,      0}, {0x75, 0xd1, 0xfd, 0x00}}},\n    {{{    66,    -11,     34}, 0, {     0,      0}, {0x77, 0xec, 0x26, 0x00}}},\n    {{{    69,     45,     18}, 0, {     0,      0}, {0x7a, 0x18, 0x17, 0x00}}},\n    {{{    69,     46,    -37}, 0, {     0,      0}, {0x79, 0x19, 0xe6, 0x00}}},\n    {{{     4,    -36,    -10}, 0, {     0,      0}, {0xc0, 0x93, 0xfe, 0x00}}},\n    {{{     5,     -3,    -50}, 0, {     0,      0}, {0xb2, 0xea, 0xa0, 0x00}}},\n    {{{    65,     -9,    -56}, 0, {     0,      0}, {0xef, 0xa0, 0xb0, 0x00}}},\n    {{{    65,     -9,    -56}, 0, {     0,      0}, {0xf8, 0x28, 0x88, 0x00}}},\n    {{{     9,     46,    -33}, 0, {     0,      0}, {0xcd, 0x60, 0xc0, 0x00}}},\n    {{{     9,     44,     16}, 0, {     0,      0}, {0xc6, 0x4b, 0x53, 0x00}}},\n    {{{    69,     45,     18}, 0, {     0,      0}, {0xff, 0x7f, 0x03, 0x00}}},\n    {{{     6,     -6,     30}, 0, {     0,      0}, {0xb4, 0xe4, 0x61, 0x00}}},\n    {{{    66,    -11,     34}, 0, {     0,      0}, {0xfb, 0x22, 0x7a, 0x00}}},\n    {{{    66,    -11,     34}, 0, {     0,      0}, {0xf2, 0x9b, 0x4a, 0x00}}},\n};\n\n// 0x0400F1D8 - 0x0400F290\nconst Gfx mario_right_leg_shared_dl[] = {\n    gsSPVertex(mario_right_leg_shared_dl_vertex_group1, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10,  8, 0x0),\n    gsSP2Triangles(11, 12,  2, 0x0, 13, 14,  2, 0x0),\n    gsSP2Triangles( 2, 14, 15, 0x0, 15, 14,  8, 0x0),\n    gsSP2Triangles( 8, 14,  5, 0x0,  5, 14, 13, 0x0),\n    gsSPVertex(mario_right_leg_shared_dl_vertex_group2, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 3,  1,  4, 0x0,  4,  1,  5, 0x0),\n    gsSP2Triangles( 5,  1,  0, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9,  7, 10, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0, 15, 13,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0400F290\nstatic const Vtx mario_right_foot_dl_vertex_group1[] = {\n    {{{    27,    -35,    -11}, 0, {     0,      0}, {0xdc, 0x87, 0x06, 0x00}}},\n    {{{   -36,     11,     19}, 0, {     0,      0}, {0xb5, 0xd3, 0x5b, 0x00}}},\n    {{{   -54,     14,    -10}, 0, {     0,      0}, {0x89, 0xd6, 0x03, 0x00}}},\n    {{{   -34,     11,    -46}, 0, {     0,      0}, {0xb4, 0xd0, 0xa8, 0x00}}},\n    {{{    43,    -18,    -55}, 0, {     0,      0}, {0x0a, 0xb2, 0x9d, 0x00}}},\n    {{{    80,    -29,     -7}, 0, {     0,      0}, {0x36, 0x8e, 0x08, 0x00}}},\n    {{{    44,    -11,     32}, 0, {     0,      0}, {0x01, 0xb8, 0x68, 0x00}}},\n    {{{   -42,     64,    -29}, 0, {     0,      0}, {0x90, 0x14, 0xc9, 0x00}}},\n    {{{   -40,     63,      5}, 0, {     0,      0}, {0x92, 0x15, 0x3b, 0x00}}},\n    {{{   -14,     54,     29}, 0, {     0,      0}, {0xd5, 0xfe, 0x77, 0x00}}},\n    {{{   -11,     53,    -56}, 0, {     0,      0}, {0xda, 0xfe, 0x87, 0x00}}},\n    {{{   110,     11,    -36}, 0, {     0,      0}, {0x4e, 0xb0, 0xc6, 0x00}}},\n    {{{    78,     22,    -61}, 0, {     0,      0}, {0x17, 0xd9, 0x8a, 0x00}}},\n    {{{   109,     11,     20}, 0, {     0,      0}, {0x45, 0xaf, 0x44, 0x00}}},\n    {{{    75,     23,     40}, 0, {     0,      0}, {0x0b, 0xda, 0x78, 0x00}}},\n};\n\n// 0x0400F380\nstatic const Vtx mario_right_foot_dl_vertex_group2[] = {\n    {{{   -42,     64,    -29}, 0, {     0,      0}, {0x29, 0x77, 0x00, 0x00}}},\n    {{{   -40,     63,      5}, 0, {     0,      0}, {0x29, 0x77, 0x00, 0x00}}},\n    {{{   -11,     53,    -56}, 0, {     0,      0}, {0x29, 0x77, 0x00, 0x00}}},\n    {{{   -14,     54,     29}, 0, {     0,      0}, {0x29, 0x77, 0x00, 0x00}}},\n    {{{    78,     22,    -61}, 0, {     0,      0}, {0x29, 0x77, 0x00, 0x00}}},\n    {{{    75,     23,     40}, 0, {     0,      0}, {0x29, 0x77, 0x00, 0x00}}},\n    {{{   110,     11,    -36}, 0, {     0,      0}, {0x29, 0x77, 0x00, 0x00}}},\n    {{{   109,     11,     20}, 0, {     0,      0}, {0x29, 0x77, 0x00, 0x00}}},\n};\n\n// 0x0400F400 - 0x0400F4E8\nconst Gfx mario_right_foot_dl[] = {\n    gsSPVertex(mario_right_foot_dl_vertex_group1, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 3,  4,  0, 0x0,  0,  4,  5, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  5,  6,  0, 0x0),\n    gsSP2Triangles( 3,  2,  7, 0x0,  8,  7,  2, 0x0),\n    gsSP2Triangles( 1,  9,  8, 0x0,  2,  1,  8, 0x0),\n    gsSP2Triangles( 7, 10,  3, 0x0, 11,  5,  4, 0x0),\n    gsSP2Triangles( 4, 12, 11, 0x0,  6,  5, 13, 0x0),\n    gsSP2Triangles(11, 13,  5, 0x0, 13, 14,  6, 0x0),\n    gsSP2Triangles(14,  9,  6, 0x0, 10,  4,  3, 0x0),\n    gsSP2Triangles( 9,  1,  6, 0x0, 10, 12,  4, 0x0),\n    gsSPVertex(mario_right_foot_dl_vertex_group2, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 3,  4,  2, 0x0,  3,  5,  4, 0x0),\n    gsSP2Triangles( 5,  6,  4, 0x0,  5,  7,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0400F4E8 - 0x0400F528\nconst Gfx mario_right_foot[] = {\n    gsSPLight(&mario_brown1_lights_group.l, 1),\n    gsSPLight(&mario_brown1_lights_group.a, 2),\n    gsSPDisplayList(mario_right_foot_dl),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsDPSetAlphaCompare(G_AC_NONE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0400F528 - 0x0400F568\nconst Gfx mario_metal_right_foot[] = {\n    gsSPDisplayList(mario_right_foot_dl),\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_TEXTURE_GEN),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsDPSetAlphaCompare(G_AC_NONE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0400F568\nstatic const Vtx mario_yellow_button_dl_vertex[] = {\n    {{{     9,     89,     41}, 0, {   180,    962}, {0x14, 0x78, 0x23, 0xff}}},\n    {{{     3,     77,     62}, 0, {   682,    966}, {0x04, 0x6a, 0x44, 0xff}}},\n    {{{    47,     75,     35}, 0, {    34,    106}, {0x39, 0x6a, 0x26, 0xff}}},\n    {{{    28,     85,     30}, 0, {   -60,    572}, {0x2c, 0x76, 0x08, 0xff}}},\n    {{{    17,     66,     76}, 0, {   966,    590}, {0x19, 0x58, 0x57, 0xff}}},\n    {{{    32,     62,     74}, 0, {   902,    252}, {0x29, 0x53, 0x56, 0xff}}},\n    {{{    48,     64,     59}, 0, {   548,      0}, {0x4d, 0x51, 0x3a, 0xff}}},\n    {{{     9,     89,    -40}, 0, {   776,    920}, {0x10, 0x7b, 0xe7, 0xff}}},\n    {{{    28,     85,    -29}, 0, {   990,    512}, {0x2d, 0x75, 0xf2, 0xff}}},\n    {{{    47,     75,    -34}, 0, {   850,     72}, {0x3e, 0x6a, 0xe2, 0xff}}},\n    {{{     3,     77,    -61}, 0, {   264,    972}, {0x03, 0x6a, 0xbb, 0xff}}},\n    {{{    48,     64,    -58}, 0, {   312,      0}, {0x4d, 0x50, 0xc5, 0xff}}},\n    {{{    32,     62,    -73}, 0, {   -24,    310}, {0x29, 0x52, 0xa9, 0xff}}},\n    {{{    17,     66,    -75}, 0, {   -58,    642}, {0x17, 0x58, 0xa8, 0xff}}},\n};\n\n// 0x0400F648\nstatic const Vtx mario_tshirt_shared_dl_vertex_group1[] = {\n    {{{    47,     75,    -34}, 0, {     0,      0}, {0x3e, 0x6a, 0xe2, 0xff}}},\n    {{{    47,     75,     35}, 0, {     0,      0}, {0x39, 0x6a, 0x26, 0xff}}},\n    {{{    82,     37,     27}, 0, {     0,      0}, {0x66, 0x48, 0x14, 0xff}}},\n    {{{    82,     37,    -26}, 0, {     0,      0}, {0x69, 0x43, 0xec, 0xff}}},\n    {{{   100,      1,     24}, 0, {     0,      0}, {0x7a, 0x17, 0x16, 0xff}}},\n    {{{   100,      1,    -23}, 0, {     0,      0}, {0x7c, 0x09, 0xea, 0xff}}},\n    {{{     6,    -10,    -92}, 0, {     0,      0}, {0x00, 0xeb, 0x83, 0xff}}},\n    {{{    47,      3,    -88}, 0, {     0,      0}, {0x30, 0x09, 0x8b, 0xff}}},\n    {{{    46,    -34,    -83}, 0, {     0,      0}, {0x24, 0xc8, 0x95, 0xff}}},\n    {{{    12,     33,    -90}, 0, {     0,      0}, {0x11, 0x20, 0x87, 0xff}}},\n    {{{    20,    -61,    -67}, 0, {     0,      0}, {0x0a, 0x9a, 0xb7, 0xff}}},\n    {{{    66,    -52,    -50}, 0, {     0,      0}, {0x3b, 0x9a, 0xd3, 0xff}}},\n    {{{    84,    -29,    -62}, 0, {     0,      0}, {0x5f, 0xde, 0xb4, 0xff}}},\n    {{{    20,    -61,     68}, 0, {     0,      0}, {0x0a, 0x99, 0x49, 0xff}}},\n    {{{    66,    -52,     51}, 0, {     0,      0}, {0x3b, 0x9a, 0x2d, 0xff}}},\n    {{{    46,    -34,     84}, 0, {     0,      0}, {0x24, 0xc8, 0x6b, 0xff}}},\n};\n\n// 0x0400F748\nstatic const Vtx mario_tshirt_shared_dl_vertex_group2[] = {\n    {{{    20,    -61,     68}, 0, {     0,      0}, {0x0a, 0x99, 0x49, 0xff}}},\n    {{{    46,    -34,     84}, 0, {     0,      0}, {0x24, 0xc8, 0x6b, 0xff}}},\n    {{{     6,    -11,     93}, 0, {     0,      0}, {0x00, 0xea, 0x7c, 0xff}}},\n    {{{    47,      3,     89}, 0, {     0,      0}, {0x30, 0x08, 0x75, 0xff}}},\n    {{{    84,    -29,     63}, 0, {     0,      0}, {0x5f, 0xde, 0x4c, 0xff}}},\n    {{{    66,    -52,     51}, 0, {     0,      0}, {0x3b, 0x9a, 0x2d, 0xff}}},\n    {{{    13,     33,     91}, 0, {     0,      0}, {0x12, 0x20, 0x79, 0xff}}},\n    {{{   100,      1,    -23}, 0, {     0,      0}, {0x7c, 0x09, 0xea, 0xff}}},\n    {{{   100,      1,     24}, 0, {     0,      0}, {0x7a, 0x17, 0x16, 0xff}}},\n    {{{    93,    -36,     26}, 0, {     0,      0}, {0x6b, 0xbf, 0x0d, 0xff}}},\n    {{{    93,    -36,    -25}, 0, {     0,      0}, {0x66, 0xb7, 0xf0, 0xff}}},\n    {{{    54,    -63,      0}, 0, {     0,      0}, {0x30, 0x8b, 0x00, 0xff}}},\n    {{{    80,     14,     62}, 0, {     0,      0}, {0x60, 0x28, 0x47, 0xff}}},\n    {{{    44,     51,     75}, 0, {     0,      0}, {0x3c, 0x34, 0x62, 0xff}}},\n};\n\n// 0x0400F828\nstatic const Vtx mario_tshirt_shared_dl_vertex_group3[] = {\n    {{{    80,     14,    -61}, 0, {     0,      0}, {0x60, 0x28, 0xb8, 0xff}}},\n    {{{    47,      3,    -88}, 0, {     0,      0}, {0x30, 0x09, 0x8b, 0xff}}},\n    {{{    43,     51,    -74}, 0, {     0,      0}, {0x3c, 0x32, 0x9d, 0xff}}},\n    {{{    84,    -29,    -62}, 0, {     0,      0}, {0x5f, 0xde, 0xb4, 0xff}}},\n    {{{    12,     33,    -90}, 0, {     0,      0}, {0x11, 0x20, 0x87, 0xff}}},\n};\n\n// 0x0400F878\nstatic const Vtx mario_pants_overalls_shared_dl_vertex_group1[] = {\n    {{{    47,     75,    -34}, 0, {     0,      0}, {0x3e, 0x6a, 0xe2, 0xff}}},\n    {{{    28,     85,     30}, 0, {     0,      0}, {0x2c, 0x76, 0x08, 0xff}}},\n    {{{    47,     75,     35}, 0, {     0,      0}, {0x39, 0x6a, 0x26, 0xff}}},\n    {{{    28,     85,    -29}, 0, {     0,      0}, {0x2d, 0x75, 0xf2, 0xff}}},\n    {{{     9,     89,     41}, 0, {     0,      0}, {0x14, 0x78, 0x23, 0xff}}},\n    {{{     9,     89,    -40}, 0, {     0,      0}, {0x10, 0x7b, 0xe7, 0xff}}},\n    {{{   -15,     88,     35}, 0, {     0,      0}, {0xec, 0x7a, 0x1c, 0xff}}},\n    {{{   -15,     87,    -35}, 0, {     0,      0}, {0xea, 0x76, 0xda, 0xff}}},\n    {{{     3,     77,    -61}, 0, {     0,      0}, {0x03, 0x6a, 0xbb, 0xff}}},\n    {{{   -43,     83,    -24}, 0, {     0,      0}, {0xcc, 0x72, 0xee, 0xff}}},\n    {{{   -28,     63,    -74}, 0, {     0,      0}, {0xd1, 0x4f, 0xaa, 0xff}}},\n    {{{   -40,     72,    -54}, 0, {     0,      0}, {0xc5, 0x5f, 0xc6, 0xff}}},\n    {{{   -40,     72,     55}, 0, {     0,      0}, {0xc4, 0x5e, 0x3a, 0xff}}},\n    {{{   -43,     83,     25}, 0, {     0,      0}, {0xbc, 0x69, 0x11, 0xff}}},\n    {{{   -28,     63,     75}, 0, {     0,      0}, {0xd0, 0x50, 0x55, 0xff}}},\n};\n\n// 0x0400F968\nstatic const Vtx mario_pants_overalls_shared_dl_vertex_group2[] = {\n    {{{    80,     14,    -61}, 0, {     0,      0}, {0x60, 0x28, 0xb8, 0xff}}},\n    {{{    43,     51,    -74}, 0, {     0,      0}, {0x3c, 0x32, 0x9d, 0xff}}},\n    {{{    48,     64,    -58}, 0, {     0,      0}, {0x4d, 0x50, 0xc5, 0xff}}},\n    {{{     3,     77,     62}, 0, {     0,      0}, {0x04, 0x6a, 0x44, 0xff}}},\n    {{{     9,     89,     41}, 0, {     0,      0}, {0x14, 0x78, 0x23, 0xff}}},\n    {{{   -15,     88,     35}, 0, {     0,      0}, {0xec, 0x7a, 0x1c, 0xff}}},\n    {{{    47,     75,     35}, 0, {     0,      0}, {0x39, 0x6a, 0x26, 0xff}}},\n    {{{    48,     64,     59}, 0, {     0,      0}, {0x4d, 0x51, 0x3a, 0xff}}},\n    {{{    82,     37,     27}, 0, {     0,      0}, {0x66, 0x48, 0x14, 0xff}}},\n    {{{    32,     62,     74}, 0, {     0,      0}, {0x29, 0x53, 0x56, 0xff}}},\n    {{{    44,     51,     75}, 0, {     0,      0}, {0x3c, 0x34, 0x62, 0xff}}},\n    {{{    80,     14,     62}, 0, {     0,      0}, {0x60, 0x28, 0x47, 0xff}}},\n    {{{   100,      1,     24}, 0, {     0,      0}, {0x7a, 0x17, 0x16, 0xff}}},\n    {{{    82,     37,    -26}, 0, {     0,      0}, {0x69, 0x43, 0xec, 0xff}}},\n    {{{    32,     62,    -73}, 0, {     0,      0}, {0x29, 0x52, 0xa9, 0xff}}},\n    {{{    47,     75,    -34}, 0, {     0,      0}, {0x3e, 0x6a, 0xe2, 0xff}}},\n};\n\n// 0x0400FA68\nstatic const Vtx mario_pants_overalls_shared_dl_vertex_group3[] = {\n    {{{    80,     14,    -61}, 0, {     0,      0}, {0x60, 0x28, 0xb8, 0xff}}},\n    {{{    82,     37,    -26}, 0, {     0,      0}, {0x69, 0x43, 0xec, 0xff}}},\n    {{{   100,      1,    -23}, 0, {     0,      0}, {0x7c, 0x09, 0xea, 0xff}}},\n    {{{    20,    -61,    -67}, 0, {     0,      0}, {0x0a, 0x9a, 0xb7, 0xff}}},\n    {{{    66,    -52,    -50}, 0, {     0,      0}, {0x3b, 0x9a, 0xd3, 0xff}}},\n    {{{    54,    -63,      0}, 0, {     0,      0}, {0x30, 0x8b, 0x00, 0xff}}},\n    {{{   -27,    -25,    -86}, 0, {     0,      0}, {0xcb, 0xd5, 0x96, 0xff}}},\n    {{{     6,    -10,    -92}, 0, {     0,      0}, {0x00, 0xeb, 0x83, 0xff}}},\n    {{{   -29,    -58,    -59}, 0, {     0,      0}, {0xc9, 0x9a, 0xcf, 0xff}}},\n    {{{     8,    -74,      0}, 0, {     0,      0}, {0xfd, 0x82, 0x00, 0xff}}},\n    {{{   -59,    -28,    -37}, 0, {     0,      0}, {0x90, 0xd5, 0xd9, 0xff}}},\n    {{{   -30,    -66,      0}, 0, {     0,      0}, {0xb8, 0x98, 0x00, 0xff}}},\n    {{{   -27,     26,    -89}, 0, {     0,      0}, {0xc7, 0x0f, 0x90, 0xff}}},\n    {{{    12,     33,    -90}, 0, {     0,      0}, {0x11, 0x20, 0x87, 0xff}}},\n    {{{    20,    -61,     68}, 0, {     0,      0}, {0x0a, 0x99, 0x49, 0xff}}},\n    {{{    66,    -52,     51}, 0, {     0,      0}, {0x3b, 0x9a, 0x2d, 0xff}}},\n};\n\n// 0x0400FB68\nstatic const Vtx mario_pants_overalls_shared_dl_vertex_group4[] = {\n    {{{     8,    -74,      0}, 0, {     0,      0}, {0xfd, 0x82, 0x00, 0xff}}},\n    {{{    20,    -61,     68}, 0, {     0,      0}, {0x0a, 0x99, 0x49, 0xff}}},\n    {{{   -29,    -58,     59}, 0, {     0,      0}, {0xc8, 0x99, 0x30, 0xff}}},\n    {{{   -27,    -25,     87}, 0, {     0,      0}, {0xcb, 0xd3, 0x69, 0xff}}},\n    {{{     6,    -11,     93}, 0, {     0,      0}, {0x00, 0xea, 0x7c, 0xff}}},\n    {{{   -27,     26,     91}, 0, {     0,      0}, {0xc8, 0x0e, 0x70, 0xff}}},\n    {{{    13,     33,     91}, 0, {     0,      0}, {0x12, 0x20, 0x79, 0xff}}},\n    {{{   -59,    -28,     38}, 0, {     0,      0}, {0x8d, 0xd8, 0x21, 0xff}}},\n    {{{   -30,    -66,      0}, 0, {     0,      0}, {0xb8, 0x98, 0x00, 0xff}}},\n    {{{   -28,     63,    -74}, 0, {     0,      0}, {0xd1, 0x4f, 0xaa, 0xff}}},\n    {{{   -27,     26,    -89}, 0, {     0,      0}, {0xc7, 0x0f, 0x90, 0xff}}},\n    {{{   -71,     54,    -29}, 0, {     0,      0}, {0x8f, 0x2a, 0xda, 0xff}}},\n    {{{   -59,    -28,    -37}, 0, {     0,      0}, {0x90, 0xd5, 0xd9, 0xff}}},\n    {{{   -71,     54,     30}, 0, {     0,      0}, {0x94, 0x2a, 0x31, 0xff}}},\n    {{{   -43,     83,     25}, 0, {     0,      0}, {0xbc, 0x69, 0x11, 0xff}}},\n    {{{   -43,     83,    -24}, 0, {     0,      0}, {0xcc, 0x72, 0xee, 0xff}}},\n};\n\n// 0x0400FC68\nstatic const Vtx mario_pants_overalls_shared_dl_vertex_group5[] = {\n    {{{   -71,     54,    -29}, 0, {     0,      0}, {0x8f, 0x2a, 0xda, 0xff}}},\n    {{{   -43,     83,    -24}, 0, {     0,      0}, {0xcc, 0x72, 0xee, 0xff}}},\n    {{{   -40,     72,    -54}, 0, {     0,      0}, {0xc5, 0x5f, 0xc6, 0xff}}},\n    {{{   -59,    -28,    -37}, 0, {     0,      0}, {0x90, 0xd5, 0xd9, 0xff}}},\n    {{{   -59,    -28,     38}, 0, {     0,      0}, {0x8d, 0xd8, 0x21, 0xff}}},\n    {{{   -28,     63,    -74}, 0, {     0,      0}, {0xd1, 0x4f, 0xaa, 0xff}}},\n    {{{   -43,     83,     25}, 0, {     0,      0}, {0xbc, 0x69, 0x11, 0xff}}},\n    {{{   -71,     54,     30}, 0, {     0,      0}, {0x94, 0x2a, 0x31, 0xff}}},\n    {{{   -30,    -66,      0}, 0, {     0,      0}, {0xb8, 0x98, 0x00, 0xff}}},\n    {{{   -27,     26,     91}, 0, {     0,      0}, {0xc8, 0x0e, 0x70, 0xff}}},\n    {{{   -28,     63,     75}, 0, {     0,      0}, {0xd0, 0x50, 0x55, 0xff}}},\n    {{{   -40,     72,     55}, 0, {     0,      0}, {0xc4, 0x5e, 0x3a, 0xff}}},\n    {{{    13,     33,     91}, 0, {     0,      0}, {0x12, 0x20, 0x79, 0xff}}},\n    {{{    -4,     58,     84}, 0, {     0,      0}, {0xfb, 0x43, 0x6b, 0xff}}},\n};\n\n// 0x0400FD48\nstatic const Vtx mario_pants_overalls_shared_dl_vertex_group6[] = {\n    {{{   -27,     26,    -89}, 0, {     0,      0}, {0xc7, 0x0f, 0x90, 0xff}}},\n    {{{    -4,     58,    -82}, 0, {     0,      0}, {0xf9, 0x42, 0x94, 0xff}}},\n    {{{    12,     33,    -90}, 0, {     0,      0}, {0x11, 0x20, 0x87, 0xff}}},\n    {{{   -28,     63,    -74}, 0, {     0,      0}, {0xd1, 0x4f, 0xaa, 0xff}}},\n    {{{    80,     14,    -61}, 0, {     0,      0}, {0x60, 0x28, 0xb8, 0xff}}},\n    {{{   100,      1,    -23}, 0, {     0,      0}, {0x7c, 0x09, 0xea, 0xff}}},\n    {{{    84,    -29,    -62}, 0, {     0,      0}, {0x5f, 0xde, 0xb4, 0xff}}},\n    {{{    93,    -36,    -25}, 0, {     0,      0}, {0x66, 0xb7, 0xf0, 0xff}}},\n    {{{    66,    -52,    -50}, 0, {     0,      0}, {0x3b, 0x9a, 0xd3, 0xff}}},\n    {{{    54,    -63,      0}, 0, {     0,      0}, {0x30, 0x8b, 0x00, 0xff}}},\n    {{{    66,    -52,     51}, 0, {     0,      0}, {0x3b, 0x9a, 0x2d, 0xff}}},\n    {{{    93,    -36,     26}, 0, {     0,      0}, {0x6b, 0xbf, 0x0d, 0xff}}},\n    {{{    84,    -29,     63}, 0, {     0,      0}, {0x5f, 0xde, 0x4c, 0xff}}},\n    {{{   100,      1,     24}, 0, {     0,      0}, {0x7a, 0x17, 0x16, 0xff}}},\n    {{{    80,     14,     62}, 0, {     0,      0}, {0x60, 0x28, 0x47, 0xff}}},\n};\n\n// 0x0400FE38\nstatic const Vtx mario_pants_overalls_shared_dl_vertex_group7[] = {\n    {{{    17,     66,    -75}, 0, {     0,      0}, {0x17, 0x58, 0xa8, 0xff}}},\n    {{{    -4,     58,    -82}, 0, {     0,      0}, {0xf9, 0x42, 0x94, 0xff}}},\n    {{{     3,     77,    -61}, 0, {     0,      0}, {0x03, 0x6a, 0xbb, 0xff}}},\n    {{{   -28,     63,    -74}, 0, {     0,      0}, {0xd1, 0x4f, 0xaa, 0xff}}},\n    {{{    32,     62,     74}, 0, {     0,      0}, {0x29, 0x53, 0x56, 0xff}}},\n    {{{    17,     66,     76}, 0, {     0,      0}, {0x19, 0x58, 0x57, 0xff}}},\n    {{{    13,     33,     91}, 0, {     0,      0}, {0x12, 0x20, 0x79, 0xff}}},\n    {{{   -28,     63,     75}, 0, {     0,      0}, {0xd0, 0x50, 0x55, 0xff}}},\n    {{{    -4,     58,     84}, 0, {     0,      0}, {0xfb, 0x43, 0x6b, 0xff}}},\n    {{{     3,     77,     62}, 0, {     0,      0}, {0x04, 0x6a, 0x44, 0xff}}},\n    {{{   -15,     88,     35}, 0, {     0,      0}, {0xec, 0x7a, 0x1c, 0xff}}},\n    {{{    12,     33,    -90}, 0, {     0,      0}, {0x11, 0x20, 0x87, 0xff}}},\n    {{{    32,     62,    -73}, 0, {     0,      0}, {0x29, 0x52, 0xa9, 0xff}}},\n    {{{    43,     51,    -74}, 0, {     0,      0}, {0x3c, 0x32, 0x9d, 0xff}}},\n    {{{    44,     51,     75}, 0, {     0,      0}, {0x3c, 0x34, 0x62, 0xff}}},\n};\n\n// 0x0400FF28 - 0x0400FF88\nconst Gfx mario_yellow_button_dl[] = {\n    gsSPVertex(mario_yellow_button_dl_vertex, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  5,  6,  2, 0x0),\n    gsSP2Triangles( 4,  5,  2, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0,  9, 11, 12, 0x0),\n    gsSP2Triangles(12, 13,  9, 0x0, 13, 10,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0400FF88 - 0x04010260\nconst Gfx mario_pants_overalls_shared_dl[] = {\n    gsSPVertex(mario_pants_overalls_shared_dl_vertex_group1, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  1,  5, 0x0,  1,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 7,  5,  8, 0x0,  9,  6,  7, 0x0),\n    gsSP2Triangles( 7,  8, 10, 0x0, 10, 11,  7, 0x0),\n    gsSP2Triangles( 9,  7, 11, 0x0, 12,  6, 13, 0x0),\n    gsSP2Triangles( 9, 13,  6, 0x0,  6, 12, 14, 0x0),\n    gsSPVertex(mario_pants_overalls_shared_dl_vertex_group2, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10,  7, 0x0),\n    gsSP2Triangles( 7, 10, 11, 0x0, 11,  8,  7, 0x0),\n    gsSP2Triangles(12,  8, 11, 0x0, 13,  0,  2, 0x0),\n    gsSP2Triangles( 2,  1, 14, 0x0,  2, 15, 13, 0x0),\n    gsSPVertex(mario_pants_overalls_shared_dl_vertex_group3, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  3,  8,  6, 0x0),\n    gsSP2Triangles( 5,  9,  3, 0x0,  8,  3,  9, 0x0),\n    gsSP2Triangles( 6,  8, 10, 0x0, 11, 10,  8, 0x0),\n    gsSP2Triangles( 9, 11,  8, 0x0,  6, 12,  7, 0x0),\n    gsSP2Triangles(12,  6, 10, 0x0,  7, 12, 13, 0x0),\n    gsSP2Triangles(14,  5, 15, 0x0, 14,  9,  5, 0x0),\n    gsSPVertex(mario_pants_overalls_shared_dl_vertex_group4, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  5,  4,  6, 0x0),\n    gsSP2Triangles( 4,  5,  3, 0x0,  2,  3,  7, 0x0),\n    gsSP2Triangles( 7,  3,  5, 0x0,  8,  2,  7, 0x0),\n    gsSP2Triangles( 2,  8,  0, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 11, 10, 0x0, 11,  7, 13, 0x0),\n    gsSP1Triangle(14, 15, 11, 0x0),\n    gsSPVertex(mario_pants_overalls_shared_dl_vertex_group5, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 2,  5,  0, 0x0,  6,  0,  7, 0x0),\n    gsSP2Triangles( 4,  3,  8, 0x0,  9,  7,  4, 0x0),\n    gsSP2Triangles( 7, 10, 11, 0x0, 11,  6,  7, 0x0),\n    gsSP2Triangles( 9, 12, 13, 0x0, 10,  9, 13, 0x0),\n    gsSP1Triangle( 7,  9, 10, 0x0),\n    gsSPVertex(mario_pants_overalls_shared_dl_vertex_group6, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  8,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(14, 12, 13, 0x0, 11, 10,  9, 0x0),\n    gsSPVertex(mario_pants_overalls_shared_dl_vertex_group7, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0,  9,  8,  5, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0, 11,  1,  0, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0,  6, 14,  4, 0x0),\n    gsSP1Triangle(11,  0, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x04010260 - 0x04010348\nconst Gfx mario_tshirt_shared_dl[] = {\n    gsSPVertex(mario_tshirt_shared_dl_vertex_group1, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  3,  2, 0x0,  4,  5,  3, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 6,  8, 10, 0x0, 11,  8, 12, 0x0),\n    gsSP2Triangles(12,  8,  7, 0x0,  8, 11, 10, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(mario_tshirt_shared_dl_vertex_group2, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 3,  1,  4, 0x0,  4,  1,  5, 0x0),\n    gsSP2Triangles( 6,  2,  3, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 10,  9, 0x0),\n    gsSP2Triangles(12,  3,  4, 0x0, 13,  3, 12, 0x0),\n    gsSP1Triangle( 6,  3, 13, 0x0),\n    gsSPVertex(mario_tshirt_shared_dl_vertex_group3, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP1Triangle( 1,  4,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x04010348 - 0x04010370\nconst Gfx mario_torso_dl[] = {\n    gsSPDisplayList(mario_pants_overalls_shared_dl),\n    gsSPLight(&mario_red_lights_group.l, 1),\n    gsSPLight(&mario_red_lights_group.a, 2),\n    gsSPDisplayList(mario_tshirt_shared_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04010370 - 0x040103F0\nconst Gfx mario_torso[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_yellow_button),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_yellow_button_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(mario_torso_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x040103F0 - 0x04010410\nconst Gfx mario_metal_torso_shared_dl[] = {\n    gsSPDisplayList(mario_yellow_button_dl),\n    gsSPDisplayList(mario_pants_overalls_shared_dl),\n    gsSPDisplayList(mario_tshirt_shared_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04010410\nstatic const Vtx mario_m_logo_dl_vertex[] = {\n    {{{   195,     93,     32}, 0, {   744,    732}, {0x51, 0x54, 0x30, 0xff}}},\n    {{{   153,     33,     95}, 0, {  1250,   1066}, {0x04, 0x46, 0x69, 0xff}}},\n    {{{   252,     62,     70}, 0, {  1032,    152}, {0x39, 0x4a, 0x55, 0xff}}},\n    {{{   272,     85,      0}, 0, {   472,    -16}, {0x5f, 0x54, 0x00, 0xff}}},\n    {{{   252,     62,    -69}, 0, {   -78,    158}, {0x39, 0x4a, 0xab, 0xff}}},\n    {{{   195,     93,    -31}, 0, {   232,    736}, {0x51, 0x54, 0xcf, 0xff}}},\n    {{{   153,     33,    -94}, 0, {  -258,   1076}, {0x03, 0x46, 0x97, 0xff}}},\n};\n\n// 0x04010480\nstatic const Vtx mario_eyes_cap_on_dl_vertex[] = {\n    {{{   145,    101,      0}, 0, {   480,    446}, {0x13, 0x7d, 0x00, 0xff}}},\n    {{{   108,    105,      0}, 0, {   488,    854}, {0x69, 0x46, 0x00, 0xff}}},\n    {{{    97,    103,     25}, 0, {   724,    958}, {0x40, 0x5a, 0x3d, 0xff}}},\n    {{{    97,    103,    -24}, 0, {   256,    970}, {0x40, 0x5a, 0xc3, 0xff}}},\n    {{{   175,     91,    -38}, 0, {   106,    130}, {0xc6, 0x6d, 0xe7, 0xff}}},\n    {{{   144,     83,    -66}, 0, {  -146,    460}, {0x19, 0x5b, 0xad, 0xff}}},\n    {{{   104,     87,    -69}, 0, {  -160,    898}, {0x30, 0x5c, 0xb7, 0xff}}},\n    {{{   175,     91,     39}, 0, {   842,    112}, {0xc6, 0x6d, 0x19, 0xff}}},\n    {{{   153,     33,    -94}, 0, {  -404,    342}, {0x03, 0x46, 0x97, 0xff}}},\n    {{{   104,     87,     70}, 0, {  1138,    864}, {0x30, 0x5c, 0x49, 0xff}}},\n    {{{   144,     83,     67}, 0, {  1108,    428}, {0x19, 0x5b, 0x53, 0xff}}},\n    {{{   153,     33,     95}, 0, {  1362,    296}, {0x04, 0x46, 0x69, 0xff}}},\n};\n\n// 0x04010540\nstatic const Vtx mario_hair_sideburn_cap_on_dl_vertex[] = {\n    {{{   120,    -12,   -109}, 0, {   916,    184}, {0xed, 0x24, 0x88, 0xff}}},\n    {{{    96,     49,    -93}, 0, {   -70,    700}, {0x11, 0x27, 0x89, 0xff}}},\n    {{{   153,     33,    -94}, 0, {    90,    -58}, {0x03, 0x46, 0x97, 0xff}}},\n    {{{    85,    -23,   -110}, 0, {  1150,    582}, {0x06, 0x59, 0xa6, 0xff}}},\n    {{{    42,      0,   -102}, 0, {   842,   1210}, {0xc3, 0x05, 0x92, 0xff}}},\n    {{{    44,     44,    -96}, 0, {   118,   1334}, {0xda, 0x21, 0x8c, 0xff}}},\n    {{{    96,     49,     94}, 0, {   -74,    726}, {0x10, 0x28, 0x77, 0xff}}},\n    {{{    44,     44,     97}, 0, {   196,   1366}, {0xda, 0x21, 0x74, 0xff}}},\n    {{{    42,      0,    103}, 0, {   968,   1192}, {0xc3, 0x05, 0x6e, 0xff}}},\n    {{{    85,    -23,    111}, 0, {  1238,    518}, {0x04, 0x58, 0x5a, 0xff}}},\n    {{{   120,    -11,    111}, 0, {   922,    122}, {0xed, 0x24, 0x78, 0xff}}},\n    {{{   153,     33,     95}, 0, {    22,    -68}, {0x04, 0x46, 0x69, 0xff}}},\n};\n\n// 0x04010600\nstatic const Vtx mario_mustache_cap_on_dl_vertex_group1[] = {\n    {{{    77,    108,     34}, 0, {   342,    368}, {0x0e, 0x16, 0x7c, 0xff}}},\n    {{{    92,     88,     84}, 0, {   898,    -18}, {0x23, 0x59, 0x53, 0xff}}},\n    {{{    97,    103,     25}, 0, {   224,    146}, {0x40, 0x5a, 0x3d, 0xff}}},\n    {{{    48,     94,     76}, 0, {   888,    564}, {0xd7, 0x60, 0x47, 0xff}}},\n    {{{    52,    111,     31}, 0, {   354,    690}, {0xa8, 0x33, 0x4b, 0xff}}},\n    {{{    27,    100,     30}, 0, {   442,    982}, {0xb1, 0x60, 0x16, 0xff}}},\n    {{{    41,    109,      0}, 0, {    70,    924}, {0x95, 0x44, 0x00, 0xff}}},\n    {{{    44,     44,     97}, 0, {  1296,    438}, {0xda, 0x21, 0x74, 0xff}}},\n    {{{     3,     54,     52}, 0, {   892,   1090}, {0x95, 0x1d, 0x3c, 0xff}}},\n    {{{    52,    111,    -30}, 0, {   340,    684}, {0xa8, 0x32, 0xb5, 0xff}}},\n    {{{    48,     94,    -75}, 0, {   856,    608}, {0xd7, 0x60, 0xb9, 0xff}}},\n    {{{    27,    100,    -29}, 0, {   394,    998}, {0xb1, 0x60, 0xea, 0xff}}},\n    {{{     3,     54,    -51}, 0, {   806,   1162}, {0x95, 0x1d, 0xc4, 0xff}}},\n    {{{    44,     44,    -96}, 0, {  1250,    518}, {0xda, 0x21, 0x8c, 0xff}}},\n    {{{    77,    108,    -33}, 0, {   362,    344}, {0x0e, 0x16, 0x84, 0xff}}},\n    {{{    41,    109,      0}, 0, {    50,    900}, {0x95, 0x44, 0x00, 0xff}}},\n};\n\n// 0x04010700\nstatic const Vtx mario_mustache_cap_on_dl_vertex_group2[] = {\n    {{{    48,     94,    -75}, 0, {   856,    608}, {0xd7, 0x60, 0xb9, 0xff}}},\n    {{{    77,    108,    -33}, 0, {   362,    344}, {0x0e, 0x16, 0x84, 0xff}}},\n    {{{    92,     88,    -83}, 0, {   922,     -4}, {0x23, 0x59, 0xad, 0xff}}},\n    {{{    97,    103,    -24}, 0, {   274,    100}, {0x40, 0x5a, 0xc3, 0xff}}},\n    {{{    44,     44,    -96}, 0, {  1250,    518}, {0xda, 0x21, 0x8c, 0xff}}},\n};\n\n// 0x04010750\nstatic const Vtx mario_face_cap_dl_vertex_group1[] = {\n    {{{   164,    -89,    -74}, 0, {     0,      0}, {0x51, 0xa9, 0xd5, 0xff}}},\n    {{{   122,   -139,    -48}, 0, {     0,      0}, {0x28, 0x94, 0xcd, 0xff}}},\n    {{{   131,    -56,   -123}, 0, {     0,      0}, {0xde, 0xd4, 0x8f, 0xff}}},\n    {{{   187,     -6,   -133}, 0, {     0,      0}, {0x1e, 0x04, 0x85, 0xff}}},\n    {{{   120,    -12,   -109}, 0, {     0,      0}, {0xed, 0x24, 0x88, 0xff}}},\n    {{{    91,    -54,    -85}, 0, {     0,      0}, {0xd9, 0xb0, 0xa7, 0xff}}},\n    {{{    77,   -138,    -50}, 0, {     0,      0}, {0xbc, 0x9e, 0xd8, 0xff}}},\n    {{{    64,   -103,    -51}, 0, {     0,      0}, {0xde, 0x94, 0xc7, 0xff}}},\n    {{{   122,   -139,     49}, 0, {     0,      0}, {0x2d, 0x8f, 0x22, 0xff}}},\n    {{{    77,   -138,     51}, 0, {     0,      0}, {0xc1, 0xa4, 0x3c, 0xff}}},\n    {{{    64,   -103,     52}, 0, {     0,      0}, {0xc9, 0x9a, 0x31, 0xff}}},\n    {{{   131,    -56,    124}, 0, {     0,      0}, {0xdf, 0xd3, 0x71, 0xff}}},\n    {{{   164,    -89,     75}, 0, {     0,      0}, {0x4e, 0xa6, 0x2b, 0xff}}},\n    {{{    91,    -54,     86}, 0, {     0,      0}, {0xd9, 0xaf, 0x59, 0xff}}},\n    {{{   187,     -6,    134}, 0, {     0,      0}, {0x1f, 0x04, 0x7a, 0xff}}},\n    {{{   120,    -11,    111}, 0, {     0,      0}, {0xed, 0x24, 0x78, 0xff}}},\n};\n\n// 0x04010850\nstatic const Vtx mario_face_cap_dl_vertex_group2[] = {\n    {{{   153,     33,    -94}, 0, {     0,      0}, {0x03, 0x46, 0x97, 0xff}}},\n    {{{   187,     -6,   -133}, 0, {     0,      0}, {0x1e, 0x04, 0x85, 0xff}}},\n    {{{   120,    -12,   -109}, 0, {     0,      0}, {0xed, 0x24, 0x88, 0xff}}},\n    {{{   175,     91,    -38}, 0, {     0,      0}, {0xc6, 0x6d, 0xe7, 0xff}}},\n    {{{   173,    132,    -65}, 0, {     0,      0}, {0xda, 0x5a, 0xb0, 0xff}}},\n    {{{   195,     93,    -31}, 0, {     0,      0}, {0x51, 0x54, 0xcf, 0xff}}},\n    {{{   252,     62,    -69}, 0, {     0,      0}, {0x39, 0x4a, 0xab, 0xff}}},\n    {{{   164,    -89,    -74}, 0, {     0,      0}, {0x51, 0xa9, 0xd5, 0xff}}},\n    {{{   271,      0,    -41}, 0, {     0,      0}, {0x6e, 0xcf, 0xdc, 0xff}}},\n    {{{   187,     -6,    134}, 0, {     0,      0}, {0x1f, 0x04, 0x7a, 0xff}}},\n    {{{   153,     33,     95}, 0, {     0,      0}, {0x04, 0x46, 0x69, 0xff}}},\n    {{{   120,    -11,    111}, 0, {     0,      0}, {0xed, 0x24, 0x78, 0xff}}},\n    {{{   252,     62,     70}, 0, {     0,      0}, {0x39, 0x4a, 0x55, 0xff}}},\n    {{{   271,      0,     42}, 0, {     0,      0}, {0x71, 0xdc, 0x2b, 0xff}}},\n    {{{   164,    -89,     75}, 0, {     0,      0}, {0x4e, 0xa6, 0x2b, 0xff}}},\n};\n\n// 0x04010940\nstatic const Vtx mario_face_cap_dl_vertex_group3[] = {\n    {{{   195,     93,     32}, 0, {     0,      0}, {0x51, 0x54, 0x30, 0xff}}},\n    {{{   173,    132,     66}, 0, {     0,      0}, {0xda, 0x5a, 0x50, 0xff}}},\n    {{{   153,     33,     95}, 0, {     0,      0}, {0x04, 0x46, 0x69, 0xff}}},\n    {{{   175,     91,     39}, 0, {     0,      0}, {0xc6, 0x6d, 0x19, 0xff}}},\n    {{{   164,    -89,    -74}, 0, {     0,      0}, {0x51, 0xa9, 0xd5, 0xff}}},\n    {{{   271,      0,    -41}, 0, {     0,      0}, {0x6e, 0xcf, 0xdc, 0xff}}},\n    {{{   164,    -89,     75}, 0, {     0,      0}, {0x4e, 0xa6, 0x2b, 0xff}}},\n    {{{   271,      0,     42}, 0, {     0,      0}, {0x71, 0xdc, 0x2b, 0xff}}},\n    {{{   252,     62,    -69}, 0, {     0,      0}, {0x39, 0x4a, 0xab, 0xff}}},\n    {{{   272,     85,      0}, 0, {     0,      0}, {0x5f, 0x54, 0x00, 0xff}}},\n    {{{   182,    155,      0}, 0, {     0,      0}, {0xed, 0x7d, 0x00, 0xff}}},\n    {{{   195,     93,    -31}, 0, {     0,      0}, {0x51, 0x54, 0xcf, 0xff}}},\n    {{{   175,     91,    -38}, 0, {     0,      0}, {0xc6, 0x6d, 0xe7, 0xff}}},\n    {{{   173,    132,    -65}, 0, {     0,      0}, {0xda, 0x5a, 0xb0, 0xff}}},\n    {{{   252,     62,     70}, 0, {     0,      0}, {0x39, 0x4a, 0x55, 0xff}}},\n};\n\n// 0x04010A30\nstatic const Vtx mario_face_part_cap_on_dl_vertex_group1[] = {\n    {{{    41,    109,      0}, 0, {     0,      0}, {0x95, 0x44, 0x00, 0xff}}},\n    {{{    27,    100,    -29}, 0, {     0,      0}, {0xb1, 0x60, 0xea, 0xff}}},\n    {{{    27,    100,     30}, 0, {     0,      0}, {0xb1, 0x60, 0x16, 0xff}}},\n    {{{    -7,     62,      0}, 0, {     0,      0}, {0x85, 0x1d, 0x00, 0xff}}},\n    {{{     3,     54,     52}, 0, {     0,      0}, {0x95, 0x1d, 0x3c, 0xff}}},\n    {{{     3,     54,    -51}, 0, {     0,      0}, {0x95, 0x1d, 0xc4, 0xff}}},\n    {{{    17,    -52,    -46}, 0, {     0,      0}, {0x89, 0xf8, 0xd7, 0xff}}},\n    {{{    17,    -52,     47}, 0, {     0,      0}, {0x89, 0xf8, 0x29, 0xff}}},\n    {{{    42,      0,    103}, 0, {     0,      0}, {0xc3, 0x05, 0x6e, 0xff}}},\n    {{{    44,     44,     97}, 0, {     0,      0}, {0xda, 0x21, 0x74, 0xff}}},\n    {{{    42,      0,   -102}, 0, {     0,      0}, {0xc3, 0x05, 0x92, 0xff}}},\n    {{{    44,     44,    -96}, 0, {     0,      0}, {0xda, 0x21, 0x8c, 0xff}}},\n    {{{    64,    -25,    135}, 0, {     0,      0}, {0xcc, 0xe5, 0x70, 0xff}}},\n    {{{    91,    -54,     86}, 0, {     0,      0}, {0xd9, 0xaf, 0x59, 0xff}}},\n    {{{   102,    -33,    135}, 0, {     0,      0}, {0x30, 0x18, 0x72, 0xff}}},\n};\n\n// 0x04010B20\nstatic const Vtx mario_face_part_cap_on_dl_vertex_group2[] = {\n    {{{   102,    -33,   -134}, 0, {     0,      0}, {0x32, 0x19, 0x8f, 0xff}}},\n    {{{   120,    -12,   -109}, 0, {     0,      0}, {0xed, 0x24, 0x88, 0xff}}},\n    {{{    91,    -54,    -85}, 0, {     0,      0}, {0xd9, 0xb0, 0xa7, 0xff}}},\n    {{{    64,    -25,    135}, 0, {     0,      0}, {0xcc, 0xe5, 0x70, 0xff}}},\n    {{{    56,    -45,     77}, 0, {     0,      0}, {0xe3, 0xca, 0x6e, 0xff}}},\n    {{{    91,    -54,     86}, 0, {     0,      0}, {0xd9, 0xaf, 0x59, 0xff}}},\n    {{{   120,    -11,    111}, 0, {     0,      0}, {0xed, 0x24, 0x78, 0xff}}},\n    {{{    85,    -23,    111}, 0, {     0,      0}, {0x04, 0x58, 0x5a, 0xff}}},\n    {{{   102,    -33,    135}, 0, {     0,      0}, {0x30, 0x18, 0x72, 0xff}}},\n    {{{    42,      0,    103}, 0, {     0,      0}, {0xc3, 0x05, 0x6e, 0xff}}},\n    {{{    85,    -23,   -110}, 0, {     0,      0}, {0x06, 0x59, 0xa6, 0xff}}},\n    {{{    64,    -25,   -134}, 0, {     0,      0}, {0xcc, 0xe5, 0x90, 0xff}}},\n    {{{    42,      0,   -102}, 0, {     0,      0}, {0xc3, 0x05, 0x92, 0xff}}},\n    {{{    33,    165,      0}, 0, {     0,      0}, {0x8f, 0x38, 0x09, 0xff}}},\n    {{{    52,    164,    -40}, 0, {     0,      0}, {0xb8, 0x34, 0xa6, 0xff}}},\n    {{{    32,    132,      0}, 0, {     0,      0}, {0x84, 0xe8, 0xf8, 0xff}}},\n};\n\n// 0x04010C20\nstatic const Vtx mario_face_part_cap_on_dl_vertex_group3[] = {\n    {{{    56,    -45,    -76}, 0, {     0,      0}, {0xe3, 0xca, 0x92, 0xff}}},\n    {{{    64,    -25,   -134}, 0, {     0,      0}, {0xcc, 0xe5, 0x90, 0xff}}},\n    {{{    91,    -54,    -85}, 0, {     0,      0}, {0xd9, 0xb0, 0xa7, 0xff}}},\n    {{{    42,      0,   -102}, 0, {     0,      0}, {0xc3, 0x05, 0x92, 0xff}}},\n    {{{    17,    -52,     47}, 0, {     0,      0}, {0x89, 0xf8, 0x29, 0xff}}},\n    {{{    56,    -45,     77}, 0, {     0,      0}, {0xe3, 0xca, 0x6e, 0xff}}},\n    {{{    42,      0,    103}, 0, {     0,      0}, {0xc3, 0x05, 0x6e, 0xff}}},\n    {{{    17,    -52,    -46}, 0, {     0,      0}, {0x89, 0xf8, 0xd7, 0xff}}},\n    {{{    32,    132,      0}, 0, {     0,      0}, {0x84, 0xe8, 0xf8, 0xff}}},\n    {{{    47,    131,     41}, 0, {     0,      0}, {0xb0, 0xe4, 0x5e, 0xff}}},\n    {{{    33,    165,      0}, 0, {     0,      0}, {0x8f, 0x38, 0x09, 0xff}}},\n    {{{    52,    111,     31}, 0, {     0,      0}, {0xa8, 0x33, 0x4b, 0xff}}},\n    {{{    52,    111,    -30}, 0, {     0,      0}, {0xa8, 0x32, 0xb5, 0xff}}},\n    {{{    41,    109,      0}, 0, {     0,      0}, {0x95, 0x44, 0x00, 0xff}}},\n    {{{    77,    108,     34}, 0, {     0,      0}, {0x0e, 0x16, 0x7c, 0xff}}},\n};\n\n// 0x04010D10\nstatic const Vtx mario_face_part_cap_on_dl_vertex_group4[] = {\n    {{{    92,     88,     84}, 0, {     0,      0}, {0x23, 0x59, 0x53, 0xff}}},\n    {{{   104,     87,     70}, 0, {     0,      0}, {0x30, 0x5c, 0x49, 0xff}}},\n    {{{    97,    103,     25}, 0, {     0,      0}, {0x40, 0x5a, 0x3d, 0xff}}},\n    {{{   117,    128,      0}, 0, {     0,      0}, {0x7a, 0xe1, 0x06, 0xff}}},\n    {{{   102,    129,     41}, 0, {     0,      0}, {0x45, 0xd6, 0x61, 0xff}}},\n    {{{    77,    108,     34}, 0, {     0,      0}, {0x0e, 0x16, 0x7c, 0xff}}},\n    {{{   108,    105,      0}, 0, {     0,      0}, {0x69, 0x46, 0x00, 0xff}}},\n    {{{    97,    103,    -24}, 0, {     0,      0}, {0x40, 0x5a, 0xc3, 0xff}}},\n    {{{   119,    161,      0}, 0, {     0,      0}, {0x79, 0x23, 0xf6, 0xff}}},\n    {{{   104,    162,     41}, 0, {     0,      0}, {0x52, 0x27, 0x58, 0xff}}},\n    {{{   102,    129,    -40}, 0, {     0,      0}, {0x50, 0xdc, 0xa6, 0xff}}},\n    {{{    75,    130,     46}, 0, {     0,      0}, {0x00, 0xec, 0x7d, 0xff}}},\n    {{{    78,    163,     46}, 0, {     0,      0}, {0x03, 0x55, 0x5d, 0xff}}},\n    {{{   101,    179,      0}, 0, {     0,      0}, {0x27, 0x78, 0x00, 0xff}}},\n    {{{    52,    164,     41}, 0, {     0,      0}, {0xc8, 0x3d, 0x5f, 0xff}}},\n    {{{    47,    131,     41}, 0, {     0,      0}, {0xb0, 0xe4, 0x5e, 0xff}}},\n};\n\n// 0x04010E10\nstatic const Vtx mario_face_part_cap_on_dl_vertex_group5[] = {\n    {{{    47,    131,     41}, 0, {     0,      0}, {0xb0, 0xe4, 0x5e, 0xff}}},\n    {{{    52,    164,     41}, 0, {     0,      0}, {0xc8, 0x3d, 0x5f, 0xff}}},\n    {{{    33,    165,      0}, 0, {     0,      0}, {0x8f, 0x38, 0x09, 0xff}}},\n    {{{    75,    130,     46}, 0, {     0,      0}, {0x00, 0xec, 0x7d, 0xff}}},\n    {{{    77,    108,     34}, 0, {     0,      0}, {0x0e, 0x16, 0x7c, 0xff}}},\n    {{{    78,    163,     46}, 0, {     0,      0}, {0x03, 0x55, 0x5d, 0xff}}},\n    {{{    60,    181,      0}, 0, {     0,      0}, {0xea, 0x7c, 0x00, 0xff}}},\n    {{{    52,    164,    -40}, 0, {     0,      0}, {0xb8, 0x34, 0xa6, 0xff}}},\n    {{{    96,     49,     94}, 0, {     0,      0}, {0x10, 0x28, 0x77, 0xff}}},\n    {{{   153,     33,     95}, 0, {     0,      0}, {0x04, 0x46, 0x69, 0xff}}},\n    {{{   144,     83,     67}, 0, {     0,      0}, {0x19, 0x5b, 0x53, 0xff}}},\n    {{{   101,    179,      0}, 0, {     0,      0}, {0x27, 0x78, 0x00, 0xff}}},\n    {{{   104,     87,     70}, 0, {     0,      0}, {0x30, 0x5c, 0x49, 0xff}}},\n    {{{    92,     88,     84}, 0, {     0,      0}, {0x23, 0x59, 0x53, 0xff}}},\n    {{{    44,     44,     97}, 0, {     0,      0}, {0xda, 0x21, 0x74, 0xff}}},\n};\n\n// 0x04010F00\nstatic const Vtx mario_face_part_cap_on_dl_vertex_group6[] = {\n    {{{    17,    -52,    -46}, 0, {     0,      0}, {0x89, 0xf8, 0xd7, 0xff}}},\n    {{{    31,    -84,      0}, 0, {     0,      0}, {0xa0, 0xae, 0x00, 0xff}}},\n    {{{    17,    -52,     47}, 0, {     0,      0}, {0x89, 0xf8, 0x29, 0xff}}},\n    {{{   144,     83,    -66}, 0, {     0,      0}, {0x19, 0x5b, 0xad, 0xff}}},\n    {{{   153,     33,    -94}, 0, {     0,      0}, {0x03, 0x46, 0x97, 0xff}}},\n    {{{    96,     49,    -93}, 0, {     0,      0}, {0x11, 0x27, 0x89, 0xff}}},\n    {{{    92,     88,    -83}, 0, {     0,      0}, {0x23, 0x59, 0xad, 0xff}}},\n    {{{   104,     87,    -69}, 0, {     0,      0}, {0x30, 0x5c, 0xb7, 0xff}}},\n    {{{    44,     44,    -96}, 0, {     0,      0}, {0xda, 0x21, 0x8c, 0xff}}},\n    {{{    75,    130,    -45}, 0, {     0,      0}, {0x00, 0xec, 0x83, 0xff}}},\n    {{{    78,    163,    -45}, 0, {     0,      0}, {0x03, 0x54, 0xa2, 0xff}}},\n    {{{   104,    162,    -40}, 0, {     0,      0}, {0x44, 0x31, 0xa1, 0xff}}},\n    {{{    97,    103,    -24}, 0, {     0,      0}, {0x40, 0x5a, 0xc3, 0xff}}},\n    {{{    52,    164,    -40}, 0, {     0,      0}, {0xb8, 0x34, 0xa6, 0xff}}},\n    {{{    47,    131,    -40}, 0, {     0,      0}, {0xbc, 0xde, 0x9c, 0xff}}},\n    {{{    60,    181,      0}, 0, {     0,      0}, {0xea, 0x7c, 0x00, 0xff}}},\n};\n\n// 0x04011000\nstatic const Vtx mario_face_part_cap_on_dl_vertex_group7[] = {\n    {{{    52,    164,    -40}, 0, {     0,      0}, {0xb8, 0x34, 0xa6, 0xff}}},\n    {{{    47,    131,    -40}, 0, {     0,      0}, {0xbc, 0xde, 0x9c, 0xff}}},\n    {{{    32,    132,      0}, 0, {     0,      0}, {0x84, 0xe8, 0xf8, 0xff}}},\n    {{{    77,    108,    -33}, 0, {     0,      0}, {0x0e, 0x16, 0x84, 0xff}}},\n    {{{    52,    111,    -30}, 0, {     0,      0}, {0xa8, 0x32, 0xb5, 0xff}}},\n    {{{    75,    130,    -45}, 0, {     0,      0}, {0x00, 0xec, 0x83, 0xff}}},\n    {{{   104,    162,    -40}, 0, {     0,      0}, {0x44, 0x31, 0xa1, 0xff}}},\n    {{{   102,    129,    -40}, 0, {     0,      0}, {0x50, 0xdc, 0xa6, 0xff}}},\n    {{{   119,    161,      0}, 0, {     0,      0}, {0x79, 0x23, 0xf6, 0xff}}},\n    {{{    97,    103,    -24}, 0, {     0,      0}, {0x40, 0x5a, 0xc3, 0xff}}},\n    {{{    78,    163,    -45}, 0, {     0,      0}, {0x03, 0x54, 0xa2, 0xff}}},\n    {{{    60,    181,      0}, 0, {     0,      0}, {0xea, 0x7c, 0x00, 0xff}}},\n    {{{   101,    179,      0}, 0, {     0,      0}, {0x27, 0x78, 0x00, 0xff}}},\n};\n\n// 0x040110D0\nstatic const Vtx mario_face_back_hair_cap_on_dl_vertex_group1[] = {\n    {{{    31,    -84,      0}, 0, {     0,      0}, {0xa0, 0xae, 0x00, 0xff}}},\n    {{{    36,   -116,    -35}, 0, {     0,      0}, {0xfb, 0x8e, 0x37, 0xff}}},\n    {{{    64,   -103,    -51}, 0, {     0,      0}, {0xde, 0x94, 0xc7, 0xff}}},\n    {{{    31,    -85,     87}, 0, {     0,      0}, {0xdb, 0xfd, 0x79, 0xff}}},\n    {{{    35,   -120,     68}, 0, {     0,      0}, {0xda, 0x94, 0x35, 0xff}}},\n    {{{    58,   -114,     60}, 0, {     0,      0}, {0x57, 0xb4, 0x32, 0xff}}},\n    {{{    64,   -103,     52}, 0, {     0,      0}, {0xc9, 0x9a, 0x31, 0xff}}},\n    {{{    56,    -45,     77}, 0, {     0,      0}, {0xe3, 0xca, 0x6e, 0xff}}},\n    {{{    36,   -116,     36}, 0, {     0,      0}, {0xfb, 0x8e, 0xc9, 0xff}}},\n    {{{    91,    -54,     86}, 0, {     0,      0}, {0xd9, 0xaf, 0x59, 0xff}}},\n    {{{    17,    -52,     47}, 0, {     0,      0}, {0x89, 0xf8, 0x29, 0xff}}},\n    {{{    35,   -120,    -67}, 0, {     0,      0}, {0xda, 0x94, 0xcb, 0xff}}},\n    {{{    58,   -114,    -59}, 0, {     0,      0}, {0x57, 0xb4, 0xce, 0xff}}},\n    {{{    31,    -85,    -86}, 0, {     0,      0}, {0xdb, 0xfd, 0x87, 0xff}}},\n    {{{    56,    -45,    -76}, 0, {     0,      0}, {0xe3, 0xca, 0x92, 0xff}}},\n    {{{    17,    -52,    -46}, 0, {     0,      0}, {0x89, 0xf8, 0xd7, 0xff}}},\n};\n\n// 0x040111D0\nstatic const Vtx mario_face_back_hair_cap_on_dl_vertex_group2[] = {\n    {{{    31,    -85,    -86}, 0, {     0,      0}, {0xdb, 0xfd, 0x87, 0xff}}},\n    {{{    35,   -120,    -67}, 0, {     0,      0}, {0xda, 0x94, 0xcb, 0xff}}},\n    {{{     9,    -88,    -58}, 0, {     0,      0}, {0x87, 0xdf, 0xf5, 0xff}}},\n    {{{    17,    -52,    -46}, 0, {     0,      0}, {0x89, 0xf8, 0xd7, 0xff}}},\n    {{{    56,    -45,    -76}, 0, {     0,      0}, {0xe3, 0xca, 0x92, 0xff}}},\n    {{{    91,    -54,    -85}, 0, {     0,      0}, {0xd9, 0xb0, 0xa7, 0xff}}},\n    {{{    64,   -103,    -51}, 0, {     0,      0}, {0xde, 0x94, 0xc7, 0xff}}},\n    {{{    31,    -84,      0}, 0, {     0,      0}, {0xa0, 0xae, 0x00, 0xff}}},\n    {{{    36,   -116,     36}, 0, {     0,      0}, {0xfb, 0x8e, 0xc9, 0xff}}},\n    {{{     9,    -88,     59}, 0, {     0,      0}, {0x87, 0xdf, 0x0b, 0xff}}},\n    {{{    17,    -52,     47}, 0, {     0,      0}, {0x89, 0xf8, 0x29, 0xff}}},\n    {{{    36,   -116,    -35}, 0, {     0,      0}, {0xfb, 0x8e, 0x37, 0xff}}},\n    {{{    35,   -120,     68}, 0, {     0,      0}, {0xda, 0x94, 0x35, 0xff}}},\n    {{{    31,    -85,     87}, 0, {     0,      0}, {0xdb, 0xfd, 0x79, 0xff}}},\n};\n\n// 0x040112B0 - 0x040112E8\nconst Gfx mario_m_logo_dl[] = {\n    gsSPVertex(mario_m_logo_dl_vertex, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 2,  3,  0, 0x0,  3,  5,  0, 0x0),\n    gsSP1Triangle( 4,  6,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x040112E8 - 0x04011350\nconst Gfx mario_eyes_cap_on_dl[] = {\n    gsSPVertex(mario_eyes_cap_on_dl_vertex, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  0,  4, 0x0,  6,  3,  5, 0x0),\n    gsSP2Triangles( 3,  1,  0, 0x0,  4,  0,  7, 0x0),\n    gsSP2Triangles( 5,  4,  8, 0x0,  2,  9, 10, 0x0),\n    gsSP2Triangles(10,  7,  2, 0x0, 11,  7, 10, 0x0),\n    gsSP1Triangle( 7,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x04011350 - 0x040113A0\nconst Gfx mario_hair_sideburn_cap_on_dl[] = {\n    gsSPVertex(mario_hair_sideburn_cap_on_dl_vertex, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 4,  5,  1, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  9,  6, 0x0),\n    gsSP2Triangles( 9, 10,  6, 0x0, 11,  6, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x040113A0 - 0x04011438\nconst Gfx mario_mustache_cap_on_dl[] = {\n    gsSPVertex(mario_mustache_cap_on_dl_vertex_group1, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  5,  3,  4, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  7,  3,  8, 0x0),\n    gsSP2Triangles( 8,  3,  5, 0x0,  3,  7,  1, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 12, 10, 13, 0x0),\n    gsSP2Triangles(11, 10, 12, 0x0, 10,  9, 14, 0x0),\n    gsSP1Triangle(15,  9, 11, 0x0),\n    gsSPVertex(mario_mustache_cap_on_dl_vertex_group2, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP1Triangle( 2,  4,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x04011438 - 0x040116F8\nconst Gfx mario_face_part_cap_on_dl[] = {\n    gsSPVertex(mario_face_part_cap_on_dl_vertex_group1, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 3,  4,  2, 0x0,  1,  5,  3, 0x0),\n    gsSP2Triangles( 6,  7,  3, 0x0,  7,  4,  3, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 9,  4,  8, 0x0, 10,  6,  5, 0x0),\n    gsSP2Triangles(10,  5, 11, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(mario_face_part_cap_on_dl_vertex_group2, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  5,  6,  8, 0x0),\n    gsSP2Triangles( 3,  8,  7, 0x0,  9,  3,  7, 0x0),\n    gsSP2Triangles( 3,  9,  4, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles( 0, 10,  1, 0x0, 10,  0, 11, 0x0),\n    gsSP2Triangles(11,  0,  2, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(mario_face_part_cap_on_dl_vertex_group3, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  3,  0,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  9,  8, 0x0),\n    gsSP2Triangles(12, 13,  8, 0x0,  8, 13, 11, 0x0),\n    gsSP1Triangle( 9, 11, 14, 0x0),\n    gsSPVertex(mario_face_part_cap_on_dl_vertex_group4, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 5,  2,  4, 0x0,  2,  6,  3, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  8,  9,  3, 0x0),\n    gsSP2Triangles( 9,  4,  3, 0x0,  7, 10,  3, 0x0),\n    gsSP2Triangles( 3, 10,  8, 0x0, 11,  4,  9, 0x0),\n    gsSP2Triangles(12, 11,  9, 0x0, 13,  9,  8, 0x0),\n    gsSP2Triangles( 9, 13, 12, 0x0,  4, 11,  5, 0x0),\n    gsSP1Triangle(14, 15, 11, 0x0),\n    gsSPVertex(mario_face_part_cap_on_dl_vertex_group5, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 1,  5,  6, 0x0,  1,  3,  5, 0x0),\n    gsSP2Triangles( 2,  1,  6, 0x0,  2,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  6,  5, 11, 0x0),\n    gsSP2Triangles(12, 13,  8, 0x0, 10, 12,  8, 0x0),\n    gsSP1Triangle(14,  8, 13, 0x0),\n    gsSPVertex(mario_face_part_cap_on_dl_vertex_group6, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  6,  5,  8, 0x0),\n    gsSP2Triangles( 5,  7,  3, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 6, 12,  7, 0x0, 13, 10,  9, 0x0),\n    gsSP2Triangles(14, 13,  9, 0x0, 15, 10, 13, 0x0),\n    gsSPVertex(mario_face_part_cap_on_dl_vertex_group7, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 1,  5,  3, 0x0,  2,  1,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  7,  6,  8, 0x0),\n    gsSP2Triangles( 7,  9,  3, 0x0,  5,  7,  3, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12,  6, 10, 0x0),\n    gsSP1Triangle(12,  8,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x040116F8 - 0x04011870\nconst Gfx mario_face_cap_dl[] = {\n    gsSPVertex(mario_face_cap_dl_vertex_group1, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 4,  2,  5, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 2,  1,  6, 0x0,  6,  7,  2, 0x0),\n    gsSP2Triangles( 5,  2,  7, 0x0,  6,  1,  8, 0x0),\n    gsSP2Triangles( 8,  1,  0, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  6, 0x0,  9, 10,  6, 0x0),\n    gsSP2Triangles(11, 10,  9, 0x0,  9,  8, 11, 0x0),\n    gsSP2Triangles(11,  8, 12, 0x0,  0, 12,  8, 0x0),\n    gsSP2Triangles(13, 10, 11, 0x0, 11, 12, 14, 0x0),\n    gsSP2Triangles(15, 11, 14, 0x0, 13, 11, 15, 0x0),\n    gsSPVertex(mario_face_cap_dl_vertex_group2, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 4,  5,  0, 0x0,  0,  6,  1, 0x0),\n    gsSP2Triangles( 7,  1,  8, 0x0,  8,  1,  6, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 12, 10, 0x0),\n    gsSP2Triangles(12,  9, 13, 0x0, 13,  9, 14, 0x0),\n    gsSPVertex(mario_face_cap_dl_vertex_group3, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9,  5, 0x0,  0, 10,  1, 0x0),\n    gsSP2Triangles( 1, 10,  3, 0x0, 11, 10,  0, 0x0),\n    gsSP2Triangles(12,  3, 10, 0x0, 12, 10, 13, 0x0),\n    gsSP2Triangles(13, 10, 11, 0x0,  5,  9,  7, 0x0),\n    gsSP1Triangle( 7,  9, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x04011870 - 0x04011960\nconst Gfx mario_face_back_hair_cap_on_dl[] = {\n    gsSPVertex(mario_face_back_hair_cap_on_dl_vertex_group1, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  8,  6, 0x0),\n    gsSP2Triangles( 5,  4,  8, 0x0,  7,  3,  5, 0x0),\n    gsSP2Triangles( 0,  2,  6, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 0,  6,  8, 0x0,  3,  7, 10, 0x0),\n    gsSP2Triangles( 1, 11, 12, 0x0, 12, 13, 14, 0x0),\n    gsSP2Triangles(11, 13, 12, 0x0,  1, 12,  2, 0x0),\n    gsSP2Triangles(14,  2, 12, 0x0, 15, 14, 13, 0x0),\n    gsSPVertex(mario_face_back_hair_cap_on_dl_vertex_group2, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  3,  2, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  9, 10,  7, 0x0),\n    gsSP2Triangles( 2,  1, 11, 0x0,  2, 11,  7, 0x0),\n    gsSP2Triangles( 9, 12, 13, 0x0, 10,  9, 13, 0x0),\n    gsSP1Triangle( 8, 12,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x04011960 - 0x040119A0\nconst Gfx mario_face_cap_on_dl[] = {\n    gsSPDisplayList(mario_face_part_cap_on_dl),\n    gsSPLight(&mario_red_lights_group.l, 1),\n    gsSPLight(&mario_red_lights_group.a, 2),\n    gsSPDisplayList(mario_face_cap_dl),\n    gsSPLight(&mario_brown2_lights_group.l, 1),\n    gsSPLight(&mario_brown2_lights_group.a, 2),\n    gsSPDisplayList(mario_face_back_hair_cap_on_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x040119A0 - 0x04011A90\nconst Gfx mario_cap_on_eyes_front[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_m_logo),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_m_logo_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_front),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mario_beige_lights_group.l, 1),\n    gsSPLight(&mario_beige_lights_group.a, 2),\n    gsSPDisplayList(mario_eyes_cap_on_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_hair_sideburn),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_hair_sideburn_cap_on_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_mustache_cap_on_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(mario_face_cap_on_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04011A90 - 0x04011B80\nconst Gfx mario_cap_on_eyes_half_closed[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_m_logo),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_m_logo_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_half_closed),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mario_beige_lights_group.l, 1),\n    gsSPLight(&mario_beige_lights_group.a, 2),\n    gsSPDisplayList(mario_eyes_cap_on_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_hair_sideburn),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_hair_sideburn_cap_on_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_mustache_cap_on_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(mario_face_cap_on_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04011B80 - 0x04011C70\nconst Gfx mario_cap_on_eyes_closed[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_m_logo),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_m_logo_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_closed),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mario_beige_lights_group.l, 1),\n    gsSPLight(&mario_beige_lights_group.a, 2),\n    gsSPDisplayList(mario_eyes_cap_on_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_hair_sideburn),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_hair_sideburn_cap_on_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_mustache_cap_on_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(mario_face_cap_on_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04011C70 - 0x04011D60\nconst Gfx mario_cap_on_eyes_right[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_m_logo),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_m_logo_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_right),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mario_beige_lights_group.l, 1),\n    gsSPLight(&mario_beige_lights_group.a, 2),\n    gsSPDisplayList(mario_eyes_cap_on_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_hair_sideburn),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_hair_sideburn_cap_on_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_mustache_cap_on_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(mario_face_cap_on_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04011D60 - 0x04011E50\nconst Gfx mario_cap_on_eyes_left[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_m_logo),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_m_logo_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_left),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mario_beige_lights_group.l, 1),\n    gsSPLight(&mario_beige_lights_group.a, 2),\n    gsSPDisplayList(mario_eyes_cap_on_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_hair_sideburn),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_hair_sideburn_cap_on_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_mustache_cap_on_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(mario_face_cap_on_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04011E50 - 0x04011F40\nconst Gfx mario_cap_on_eyes_up[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_m_logo),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_m_logo_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_up),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mario_beige_lights_group.l, 1),\n    gsSPLight(&mario_beige_lights_group.a, 2),\n    gsSPDisplayList(mario_eyes_cap_on_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_hair_sideburn),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_hair_sideburn_cap_on_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_mustache_cap_on_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(mario_face_cap_on_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04011F40 - 0x04012030\nconst Gfx mario_cap_on_eyes_down[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_m_logo),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_m_logo_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_down),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mario_beige_lights_group.l, 1),\n    gsSPLight(&mario_beige_lights_group.a, 2),\n    gsSPDisplayList(mario_eyes_cap_on_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_hair_sideburn),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_hair_sideburn_cap_on_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_mustache_cap_on_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(mario_face_cap_on_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04012030 - 0x04012120\nconst Gfx mario_cap_on_eyes_dead[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_m_logo),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_m_logo_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_dead),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mario_beige_lights_group.l, 1),\n    gsSPLight(&mario_beige_lights_group.a, 2),\n    gsSPDisplayList(mario_eyes_cap_on_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_hair_sideburn),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_hair_sideburn_cap_on_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_mustache_cap_on_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(mario_face_cap_on_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04012120 - 0x04012160\nconst Gfx mario_metal_cap_on_shared_dl[] = {\n    gsSPDisplayList(mario_m_logo_dl),\n    gsSPDisplayList(mario_eyes_cap_on_dl),\n    gsSPDisplayList(mario_hair_sideburn_cap_on_dl),\n    gsSPDisplayList(mario_mustache_cap_on_dl),\n    gsSPDisplayList(mario_face_part_cap_on_dl),\n    gsSPDisplayList(mario_face_cap_dl),\n    gsSPDisplayList(mario_face_back_hair_cap_on_dl),\n    gsSPEndDisplayList(),\n};\n\n// Unreferenced light group\nUNUSED static const Lights1 mario_lights_unused1 = gdSPDefLights1(\n    0x3f, 0x30, 0x1e,\n    0xfe, 0xc1, 0x79, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 mario_lights_unused2 = gdSPDefLights1(\n    0x1c, 0x01, 0x00,\n    0x73, 0x06, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x04012190\nstatic const Vtx mario_eyes_cap_off_dl_vertex[] = {\n    {{{   104,     87,    -69}, 0, {  -160,    898}, {0x30, 0x5c, 0xb7, 0xff}}},\n    {{{    97,    103,    -24}, 0, {   256,    970}, {0x40, 0x5a, 0xc3, 0xff}}},\n    {{{   144,     83,    -66}, 0, {  -146,    460}, {0x19, 0x5b, 0xad, 0xff}}},\n    {{{   153,     33,     95}, 0, {  1362,    296}, {0x05, 0x38, 0x71, 0xff}}},\n    {{{   175,     91,     39}, 0, {   842,    112}, {0x01, 0x75, 0x2f, 0xff}}},\n    {{{   144,     83,     67}, 0, {  1108,    428}, {0x19, 0x5b, 0x53, 0xff}}},\n    {{{   145,    101,      0}, 0, {   480,    446}, {0x13, 0x7d, 0x00, 0xff}}},\n    {{{    97,    103,     25}, 0, {   724,    958}, {0x40, 0x5a, 0x3d, 0xff}}},\n    {{{   175,     91,    -38}, 0, {   106,    130}, {0xf5, 0x73, 0xcc, 0xff}}},\n    {{{   104,     87,     70}, 0, {  1138,    864}, {0x30, 0x5c, 0x49, 0xff}}},\n    {{{   153,     33,    -94}, 0, {  -404,    342}, {0xfe, 0x36, 0x8e, 0xff}}},\n    {{{   108,    105,      0}, 0, {   488,    854}, {0x69, 0x46, 0x00, 0xff}}},\n};\n\n// 0x04012250\nstatic const Vtx mario_hair_sideburn_cap_off_dl_vertex[] = {\n    {{{    42,      0,    103}, 0, {   968,   1192}, {0xc3, 0x05, 0x6e, 0xff}}},\n    {{{    85,    -23,    111}, 0, {  1238,    518}, {0x04, 0x58, 0x5a, 0xff}}},\n    {{{    96,     49,     94}, 0, {   -74,    726}, {0x10, 0x28, 0x77, 0xff}}},\n    {{{    44,     44,     97}, 0, {   196,   1366}, {0xda, 0x21, 0x74, 0xff}}},\n    {{{   153,     33,     95}, 0, {    22,    -68}, {0x05, 0x38, 0x71, 0xff}}},\n    {{{   120,    -11,    111}, 0, {   922,    122}, {0xff, 0x13, 0x7d, 0xff}}},\n    {{{    42,      0,   -102}, 0, {   842,   1210}, {0xc3, 0x05, 0x92, 0xff}}},\n    {{{    44,     44,    -96}, 0, {   118,   1334}, {0xda, 0x21, 0x8c, 0xff}}},\n    {{{    96,     49,    -93}, 0, {   -70,    700}, {0x11, 0x27, 0x89, 0xff}}},\n    {{{    85,    -23,   -110}, 0, {  1150,    582}, {0x06, 0x59, 0xa6, 0xff}}},\n    {{{   120,    -12,   -109}, 0, {   916,    184}, {0xff, 0x13, 0x83, 0xff}}},\n    {{{   153,     33,    -94}, 0, {    90,    -58}, {0xfe, 0x36, 0x8e, 0xff}}},\n};\n\n// 0x04012310\nstatic const Vtx mario_mustache_cap_off_dl_vertex_group1[] = {\n    {{{    92,     88,    -83}, 0, {   992,    -10}, {0x23, 0x59, 0xad, 0xff}}},\n    {{{    77,    108,    -33}, 0, {   360,    296}, {0x0e, 0x16, 0x84, 0xff}}},\n    {{{    97,    103,    -24}, 0, {   298,     20}, {0x40, 0x5a, 0xc3, 0xff}}},\n    {{{    48,     94,    -75}, 0, {   844,    640}, {0xd7, 0x60, 0xb9, 0xff}}},\n    {{{    44,     44,    -96}, 0, {  1272,    592}, {0xda, 0x21, 0x8c, 0xff}}},\n    {{{    52,    111,    -30}, 0, {   294,    656}, {0xa8, 0x32, 0xb5, 0xff}}},\n    {{{    92,     88,     84}, 0, {   948,     -8}, {0x23, 0x59, 0x53, 0xff}}},\n    {{{    77,    108,     34}, 0, {   330,    316}, {0x0e, 0x16, 0x7c, 0xff}}},\n    {{{    48,     94,     76}, 0, {   848,    630}, {0xd7, 0x60, 0x47, 0xff}}},\n    {{{    97,    103,     25}, 0, {   248,     50}, {0x40, 0x5a, 0x3d, 0xff}}},\n    {{{    52,    111,     31}, 0, {   292,    670}, {0xa8, 0x33, 0x4b, 0xff}}},\n    {{{    44,     44,     97}, 0, {  1276,    566}, {0xda, 0x21, 0x74, 0xff}}},\n    {{{     3,     54,     52}, 0, {   768,   1210}, {0x95, 0x1d, 0x3c, 0xff}}},\n    {{{    27,    100,     30}, 0, {   336,   1006}, {0xb1, 0x60, 0x16, 0xff}}},\n    {{{     3,     54,    -51}, 0, {   720,   1228}, {0x95, 0x1d, 0xc4, 0xff}}},\n    {{{    41,    109,      0}, 0, {   -30,    876}, {0x95, 0x44, 0x00, 0xff}}},\n};\n\n// 0x04012410\nstatic const Vtx mario_mustache_cap_off_dl_vertex_group2[] = {\n    {{{    41,    109,      0}, 0, {   -38,    852}, {0x95, 0x44, 0x00, 0xff}}},\n    {{{    52,    111,    -30}, 0, {   294,    656}, {0xa8, 0x32, 0xb5, 0xff}}},\n    {{{    27,    100,    -29}, 0, {   310,   1002}, {0xb1, 0x60, 0xea, 0xff}}},\n    {{{    48,     94,    -75}, 0, {   844,    640}, {0xd7, 0x60, 0xb9, 0xff}}},\n    {{{     3,     54,    -51}, 0, {   720,   1228}, {0x95, 0x1d, 0xc4, 0xff}}},\n};\n\n// 0x04012460\nstatic const Vtx mario_face_part_cap_off_dl_vertex_group1[] = {\n    {{{    97,    103,     25}, 0, {     0,      0}, {0x40, 0x5a, 0x3d, 0xff}}},\n    {{{   108,    105,      0}, 0, {     0,      0}, {0x69, 0x46, 0x00, 0xff}}},\n    {{{   117,    128,      0}, 0, {     0,      0}, {0x7a, 0xe1, 0x06, 0xff}}},\n    {{{    92,     88,    -83}, 0, {     0,      0}, {0x23, 0x59, 0xad, 0xff}}},\n    {{{    97,    103,    -24}, 0, {     0,      0}, {0x40, 0x5a, 0xc3, 0xff}}},\n    {{{   104,     87,    -69}, 0, {     0,      0}, {0x30, 0x5c, 0xb7, 0xff}}},\n    {{{    96,     49,    -93}, 0, {     0,      0}, {0x11, 0x27, 0x89, 0xff}}},\n    {{{    44,     44,    -96}, 0, {     0,      0}, {0xda, 0x21, 0x8c, 0xff}}},\n    {{{   102,    129,    -40}, 0, {     0,      0}, {0x50, 0xdc, 0xa6, 0xff}}},\n    {{{    77,    108,    -33}, 0, {     0,      0}, {0x0e, 0x16, 0x84, 0xff}}},\n    {{{   144,     83,    -66}, 0, {     0,      0}, {0x19, 0x5b, 0xad, 0xff}}},\n    {{{    44,     44,     97}, 0, {     0,      0}, {0xda, 0x21, 0x74, 0xff}}},\n    {{{    96,     49,     94}, 0, {     0,      0}, {0x10, 0x28, 0x77, 0xff}}},\n    {{{    92,     88,     84}, 0, {     0,      0}, {0x23, 0x59, 0x53, 0xff}}},\n    {{{   104,     87,     70}, 0, {     0,      0}, {0x30, 0x5c, 0x49, 0xff}}},\n};\n\n// 0x04012550\nstatic const Vtx mario_face_part_cap_off_dl_vertex_group2[] = {\n    {{{    -7,     62,      0}, 0, {     0,      0}, {0x85, 0x1d, 0x00, 0xff}}},\n    {{{     3,     54,     52}, 0, {     0,      0}, {0x95, 0x1d, 0x3c, 0xff}}},\n    {{{    27,    100,     30}, 0, {     0,      0}, {0xb1, 0x60, 0x16, 0xff}}},\n    {{{   144,     83,     67}, 0, {     0,      0}, {0x19, 0x5b, 0x53, 0xff}}},\n    {{{   104,     87,     70}, 0, {     0,      0}, {0x30, 0x5c, 0x49, 0xff}}},\n    {{{    96,     49,     94}, 0, {     0,      0}, {0x10, 0x28, 0x77, 0xff}}},\n    {{{   117,    128,      0}, 0, {     0,      0}, {0x7a, 0xe1, 0x06, 0xff}}},\n    {{{   102,    129,     41}, 0, {     0,      0}, {0x45, 0xd6, 0x61, 0xff}}},\n    {{{    97,    103,     25}, 0, {     0,      0}, {0x40, 0x5a, 0x3d, 0xff}}},\n    {{{    77,    108,     34}, 0, {     0,      0}, {0x0e, 0x16, 0x7c, 0xff}}},\n    {{{    44,     44,     97}, 0, {     0,      0}, {0xda, 0x21, 0x74, 0xff}}},\n    {{{    42,      0,    103}, 0, {     0,      0}, {0xc3, 0x05, 0x6e, 0xff}}},\n    {{{    17,    -52,     47}, 0, {     0,      0}, {0x89, 0xf8, 0x29, 0xff}}},\n    {{{    64,    -25,    135}, 0, {     0,      0}, {0xcc, 0xe5, 0x70, 0xff}}},\n    {{{    56,    -45,     77}, 0, {     0,      0}, {0xe3, 0xca, 0x6e, 0xff}}},\n    {{{    85,    -23,    111}, 0, {     0,      0}, {0x04, 0x58, 0x5a, 0xff}}},\n};\n\n// 0x04012650\nstatic const Vtx mario_face_part_cap_off_dl_vertex_group3[] = {\n    {{{    96,     49,     94}, 0, {     0,      0}, {0x10, 0x28, 0x77, 0xff}}},\n    {{{   153,     33,     95}, 0, {     0,      0}, {0x05, 0x38, 0x71, 0xff}}},\n    {{{   144,     83,     67}, 0, {     0,      0}, {0x19, 0x5b, 0x53, 0xff}}},\n    {{{    64,    -25,    135}, 0, {     0,      0}, {0xcc, 0xe5, 0x70, 0xff}}},\n    {{{    91,    -54,     86}, 0, {     0,      0}, {0xe9, 0xa9, 0x59, 0xff}}},\n    {{{   102,    -33,    135}, 0, {     0,      0}, {0x30, 0x18, 0x72, 0xff}}},\n    {{{    56,    -45,     77}, 0, {     0,      0}, {0xe3, 0xca, 0x6e, 0xff}}},\n    {{{    85,    -23,    111}, 0, {     0,      0}, {0x04, 0x58, 0x5a, 0xff}}},\n    {{{   120,    -11,    111}, 0, {     0,      0}, {0xff, 0x13, 0x7d, 0xff}}},\n    {{{    52,    111,    -30}, 0, {     0,      0}, {0xa8, 0x32, 0xb5, 0xff}}},\n    {{{    41,    109,      0}, 0, {     0,      0}, {0x95, 0x44, 0x00, 0xff}}},\n    {{{    32,    132,      0}, 0, {     0,      0}, {0x84, 0xe8, 0xf8, 0xff}}},\n    {{{    85,    -23,   -110}, 0, {     0,      0}, {0x06, 0x59, 0xa6, 0xff}}},\n    {{{    64,    -25,   -134}, 0, {     0,      0}, {0xcc, 0xe5, 0x90, 0xff}}},\n    {{{    42,      0,   -102}, 0, {     0,      0}, {0xc3, 0x05, 0x92, 0xff}}},\n};\n\n// 0x04012740\nstatic const Vtx mario_face_part_cap_off_dl_vertex_group4[] = {\n    {{{    27,    100,     30}, 0, {     0,      0}, {0xb1, 0x60, 0x16, 0xff}}},\n    {{{    27,    100,    -29}, 0, {     0,      0}, {0xb1, 0x60, 0xea, 0xff}}},\n    {{{    -7,     62,      0}, 0, {     0,      0}, {0x85, 0x1d, 0x00, 0xff}}},\n    {{{     3,     54,    -51}, 0, {     0,      0}, {0x95, 0x1d, 0xc4, 0xff}}},\n    {{{    41,    109,      0}, 0, {     0,      0}, {0x95, 0x44, 0x00, 0xff}}},\n    {{{   144,     83,    -66}, 0, {     0,      0}, {0x19, 0x5b, 0xad, 0xff}}},\n    {{{   153,     33,    -94}, 0, {     0,      0}, {0xfe, 0x36, 0x8e, 0xff}}},\n    {{{    96,     49,    -93}, 0, {     0,      0}, {0x11, 0x27, 0x89, 0xff}}},\n    {{{    42,      0,   -102}, 0, {     0,      0}, {0xc3, 0x05, 0x92, 0xff}}},\n    {{{    44,     44,    -96}, 0, {     0,      0}, {0xda, 0x21, 0x8c, 0xff}}},\n    {{{    64,    -25,   -134}, 0, {     0,      0}, {0xcc, 0xe5, 0x90, 0xff}}},\n    {{{   102,    -33,   -134}, 0, {     0,      0}, {0x32, 0x19, 0x8f, 0xff}}},\n    {{{    91,    -54,    -85}, 0, {     0,      0}, {0xe8, 0xaa, 0xa7, 0xff}}},\n    {{{    85,    -23,   -110}, 0, {     0,      0}, {0x06, 0x59, 0xa6, 0xff}}},\n    {{{   120,    -12,   -109}, 0, {     0,      0}, {0xff, 0x13, 0x83, 0xff}}},\n};\n\n// 0x04012830\nstatic const Vtx mario_face_part_cap_off_dl_vertex_group5[] = {\n    {{{    33,    165,      0}, 0, {     0,      0}, {0x8f, 0x38, 0x09, 0xff}}},\n    {{{    60,    181,      0}, 0, {     0,      0}, {0xea, 0x7c, 0x00, 0xff}}},\n    {{{    52,    164,    -40}, 0, {     0,      0}, {0xb8, 0x34, 0xa6, 0xff}}},\n    {{{   102,    -33,   -134}, 0, {     0,      0}, {0x32, 0x19, 0x8f, 0xff}}},\n    {{{   120,    -12,   -109}, 0, {     0,      0}, {0xff, 0x13, 0x83, 0xff}}},\n    {{{    91,    -54,    -85}, 0, {     0,      0}, {0xe8, 0xaa, 0xa7, 0xff}}},\n    {{{    56,    -45,    -76}, 0, {     0,      0}, {0xe3, 0xca, 0x92, 0xff}}},\n    {{{    64,    -25,   -134}, 0, {     0,      0}, {0xcc, 0xe5, 0x90, 0xff}}},\n    {{{    42,      0,   -102}, 0, {     0,      0}, {0xc3, 0x05, 0x92, 0xff}}},\n    {{{    17,    -52,    -46}, 0, {     0,      0}, {0x89, 0xf8, 0xd7, 0xff}}},\n    {{{     3,     54,    -51}, 0, {     0,      0}, {0x95, 0x1d, 0xc4, 0xff}}},\n    {{{    -7,     62,      0}, 0, {     0,      0}, {0x85, 0x1d, 0x00, 0xff}}},\n    {{{    17,    -52,     47}, 0, {     0,      0}, {0x89, 0xf8, 0x29, 0xff}}},\n    {{{    52,    164,     41}, 0, {     0,      0}, {0xc8, 0x3d, 0x5f, 0xff}}},\n    {{{    78,    163,     46}, 0, {     0,      0}, {0x03, 0x55, 0x5d, 0xff}}},\n    {{{   101,    179,      0}, 0, {     0,      0}, {0x27, 0x78, 0x00, 0xff}}},\n};\n\n// 0x04012930\nstatic const Vtx mario_face_part_cap_off_dl_vertex_group6[] = {\n    {{{   104,    162,     41}, 0, {     0,      0}, {0x52, 0x27, 0x58, 0xff}}},\n    {{{   101,    179,      0}, 0, {     0,      0}, {0x27, 0x78, 0x00, 0xff}}},\n    {{{    78,    163,     46}, 0, {     0,      0}, {0x03, 0x55, 0x5d, 0xff}}},\n    {{{    52,    164,     41}, 0, {     0,      0}, {0xc8, 0x3d, 0x5f, 0xff}}},\n    {{{    75,    130,     46}, 0, {     0,      0}, {0x00, 0xec, 0x7d, 0xff}}},\n    {{{   119,    161,      0}, 0, {     0,      0}, {0x79, 0x23, 0xf6, 0xff}}},\n    {{{   104,    162,    -40}, 0, {     0,      0}, {0x44, 0x31, 0xa1, 0xff}}},\n    {{{    78,    163,    -45}, 0, {     0,      0}, {0x03, 0x54, 0xa2, 0xff}}},\n    {{{    60,    181,      0}, 0, {     0,      0}, {0xea, 0x7c, 0x00, 0xff}}},\n    {{{    47,    131,     41}, 0, {     0,      0}, {0xb0, 0xe4, 0x5e, 0xff}}},\n    {{{    33,    165,      0}, 0, {     0,      0}, {0x8f, 0x38, 0x09, 0xff}}},\n    {{{   102,    129,     41}, 0, {     0,      0}, {0x45, 0xd6, 0x61, 0xff}}},\n    {{{    77,    108,     34}, 0, {     0,      0}, {0x0e, 0x16, 0x7c, 0xff}}},\n    {{{    52,    164,    -40}, 0, {     0,      0}, {0xb8, 0x34, 0xa6, 0xff}}},\n    {{{    32,    132,      0}, 0, {     0,      0}, {0x84, 0xe8, 0xf8, 0xff}}},\n    {{{   117,    128,      0}, 0, {     0,      0}, {0x7a, 0xe1, 0x06, 0xff}}},\n};\n\n// 0x04012A30\nstatic const Vtx mario_face_part_cap_off_dl_vertex_group7[] = {\n    {{{    52,    111,     31}, 0, {     0,      0}, {0xa8, 0x33, 0x4b, 0xff}}},\n    {{{    47,    131,     41}, 0, {     0,      0}, {0xb0, 0xe4, 0x5e, 0xff}}},\n    {{{    32,    132,      0}, 0, {     0,      0}, {0x84, 0xe8, 0xf8, 0xff}}},\n    {{{    77,    108,     34}, 0, {     0,      0}, {0x0e, 0x16, 0x7c, 0xff}}},\n    {{{    52,    164,    -40}, 0, {     0,      0}, {0xb8, 0x34, 0xa6, 0xff}}},\n    {{{    78,    163,    -45}, 0, {     0,      0}, {0x03, 0x54, 0xa2, 0xff}}},\n    {{{    75,    130,    -45}, 0, {     0,      0}, {0x00, 0xec, 0x83, 0xff}}},\n    {{{   104,    162,    -40}, 0, {     0,      0}, {0x44, 0x31, 0xa1, 0xff}}},\n    {{{    60,    181,      0}, 0, {     0,      0}, {0xea, 0x7c, 0x00, 0xff}}},\n    {{{    17,    -52,    -46}, 0, {     0,      0}, {0x89, 0xf8, 0xd7, 0xff}}},\n    {{{    31,    -84,      0}, 0, {     0,      0}, {0xa0, 0xae, 0x00, 0xff}}},\n    {{{    17,    -52,     47}, 0, {     0,      0}, {0x89, 0xf8, 0x29, 0xff}}},\n    {{{    41,    109,      0}, 0, {     0,      0}, {0x95, 0x44, 0x00, 0xff}}},\n    {{{    47,    131,    -40}, 0, {     0,      0}, {0xbc, 0xde, 0x9c, 0xff}}},\n    {{{   102,    129,    -40}, 0, {     0,      0}, {0x50, 0xdc, 0xa6, 0xff}}},\n    {{{    77,    108,    -33}, 0, {     0,      0}, {0x0e, 0x16, 0x84, 0xff}}},\n};\n\n// 0x04012B30\nstatic const Vtx mario_face_part_cap_off_dl_vertex_group8[] = {\n    {{{   102,    129,    -40}, 0, {     0,      0}, {0x50, 0xdc, 0xa6, 0xff}}},\n    {{{   104,    162,    -40}, 0, {     0,      0}, {0x44, 0x31, 0xa1, 0xff}}},\n    {{{   119,    161,      0}, 0, {     0,      0}, {0x79, 0x23, 0xf6, 0xff}}},\n    {{{   117,    128,      0}, 0, {     0,      0}, {0x7a, 0xe1, 0x06, 0xff}}},\n    {{{    32,    132,      0}, 0, {     0,      0}, {0x84, 0xe8, 0xf8, 0xff}}},\n    {{{    47,    131,    -40}, 0, {     0,      0}, {0xbc, 0xde, 0x9c, 0xff}}},\n    {{{    52,    111,    -30}, 0, {     0,      0}, {0xa8, 0x32, 0xb5, 0xff}}},\n    {{{    77,    108,    -33}, 0, {     0,      0}, {0x0e, 0x16, 0x84, 0xff}}},\n    {{{    52,    164,    -40}, 0, {     0,      0}, {0xb8, 0x34, 0xa6, 0xff}}},\n};\n\n// 0x04012BC0\nstatic const Vtx mario_face_hair_cap_off_dl_vertex_group1[] = {\n    {{{   153,     33,    -94}, 0, {     0,      0}, {0xfe, 0x36, 0x8e, 0xff}}},\n    {{{   200,     70,    -97}, 0, {     0,      0}, {0x07, 0x48, 0x99, 0xff}}},\n    {{{   182,     -9,   -115}, 0, {     0,      0}, {0x2f, 0xfe, 0x8b, 0xff}}},\n    {{{   153,     33,     95}, 0, {     0,      0}, {0x05, 0x38, 0x71, 0xff}}},\n    {{{   200,     75,     84}, 0, {     0,      0}, {0x10, 0x52, 0x5f, 0xff}}},\n    {{{   151,     72,     70}, 0, {     0,      0}, {0xe4, 0x5c, 0x51, 0xff}}},\n    {{{   120,    -11,    111}, 0, {     0,      0}, {0xff, 0x13, 0x7d, 0xff}}},\n    {{{   181,     -9,    116}, 0, {     0,      0}, {0x2d, 0x01, 0x76, 0xff}}},\n    {{{   175,     91,     39}, 0, {     0,      0}, {0x01, 0x75, 0x2f, 0xff}}},\n    {{{   209,     86,     60}, 0, {     0,      0}, {0x38, 0x60, 0x3c, 0xff}}},\n    {{{   227,     35,     75}, 0, {     0,      0}, {0x6d, 0x12, 0x3d, 0xff}}},\n    {{{   175,     91,    -38}, 0, {     0,      0}, {0xf5, 0x73, 0xcc, 0xff}}},\n    {{{   151,     72,    -68}, 0, {     0,      0}, {0xd6, 0x5b, 0xb3, 0xff}}},\n    {{{   221,     35,    -73}, 0, {     0,      0}, {0x71, 0x03, 0xc8, 0xff}}},\n    {{{   211,     91,    -71}, 0, {     0,      0}, {0x31, 0x46, 0xa3, 0xff}}},\n    {{{   227,    -14,    -58}, 0, {     0,      0}, {0x72, 0xf1, 0xcc, 0xff}}},\n};\n\n// 0x04012CC0\nstatic const Vtx mario_face_hair_cap_off_dl_vertex_group2[] = {\n    {{{   120,    -12,   -109}, 0, {     0,      0}, {0xff, 0x13, 0x83, 0xff}}},\n    {{{   153,     33,    -94}, 0, {     0,      0}, {0xfe, 0x36, 0x8e, 0xff}}},\n    {{{   182,     -9,   -115}, 0, {     0,      0}, {0x2f, 0xfe, 0x8b, 0xff}}},\n    {{{   227,    -14,     59}, 0, {     0,      0}, {0x72, 0xec, 0x32, 0xff}}},\n    {{{   241,    -34,      0}, 0, {     0,      0}, {0x7a, 0xe0, 0x00, 0xff}}},\n    {{{   237,     64,      0}, 0, {     0,      0}, {0x7e, 0xf9, 0xff, 0xff}}},\n    {{{   189,   -102,     73}, 0, {     0,      0}, {0x50, 0xbb, 0x44, 0xff}}},\n    {{{   181,     -9,    116}, 0, {     0,      0}, {0x2d, 0x01, 0x76, 0xff}}},\n    {{{   227,     35,     75}, 0, {     0,      0}, {0x6d, 0x12, 0x3d, 0xff}}},\n    {{{   189,   -102,    -71}, 0, {     0,      0}, {0x50, 0xb9, 0xbd, 0xff}}},\n    {{{   227,    -14,    -58}, 0, {     0,      0}, {0x72, 0xf1, 0xcc, 0xff}}},\n    {{{   200,   -117,      0}, 0, {     0,      0}, {0x3f, 0x93, 0x00, 0xff}}},\n    {{{   221,     35,    -73}, 0, {     0,      0}, {0x71, 0x03, 0xc8, 0xff}}},\n    {{{   248,    104,    -43}, 0, {     0,      0}, {0x76, 0x2c, 0xf3, 0xff}}},\n    {{{   231,     81,     33}, 0, {     0,      0}, {0x71, 0x27, 0x2a, 0xff}}},\n};\n\n// 0x04012DB0\nstatic const Vtx mario_face_hair_cap_off_dl_vertex_group3[] = {\n    {{{   221,     35,    -73}, 0, {     0,      0}, {0x71, 0x03, 0xc8, 0xff}}},\n    {{{   211,     91,    -71}, 0, {     0,      0}, {0x31, 0x46, 0xa3, 0xff}}},\n    {{{   232,     69,    -34}, 0, {     0,      0}, {0x72, 0xe4, 0xd1, 0xff}}},\n    {{{   237,     64,      0}, 0, {     0,      0}, {0x7e, 0xf9, 0xff, 0xff}}},\n    {{{   175,     91,    -38}, 0, {     0,      0}, {0xf5, 0x73, 0xcc, 0xff}}},\n    {{{   201,    125,    -13}, 0, {     0,      0}, {0xe4, 0x7b, 0xfb, 0xff}}},\n    {{{   160,     96,      0}, 0, {     0,      0}, {0xb7, 0x67, 0xfe, 0xff}}},\n    {{{   189,   -102,    -71}, 0, {     0,      0}, {0x50, 0xb9, 0xbd, 0xff}}},\n    {{{   116,   -124,    -67}, 0, {     0,      0}, {0xfc, 0x8f, 0xc8, 0xff}}},\n    {{{   145,    -84,   -104}, 0, {     0,      0}, {0xef, 0xcf, 0x8d, 0xff}}},\n    {{{   182,     -9,   -115}, 0, {     0,      0}, {0x2f, 0xfe, 0x8b, 0xff}}},\n    {{{   200,   -117,      0}, 0, {     0,      0}, {0x3f, 0x93, 0x00, 0xff}}},\n    {{{   189,   -102,     73}, 0, {     0,      0}, {0x50, 0xbb, 0x44, 0xff}}},\n    {{{   116,   -126,     68}, 0, {     0,      0}, {0xfb, 0x8f, 0x38, 0xff}}},\n    {{{   119,   -134,      0}, 0, {     0,      0}, {0xe8, 0x84, 0xff, 0xff}}},\n    {{{   145,    -83,    105}, 0, {     0,      0}, {0xef, 0xd0, 0x73, 0xff}}},\n};\n\n// 0x04012EB0\nstatic const Vtx mario_face_hair_cap_off_dl_vertex_group4[] = {\n    {{{   145,    -83,    105}, 0, {     0,      0}, {0xef, 0xd0, 0x73, 0xff}}},\n    {{{   189,   -102,     73}, 0, {     0,      0}, {0x50, 0xbb, 0x44, 0xff}}},\n    {{{   181,     -9,    116}, 0, {     0,      0}, {0x2d, 0x01, 0x76, 0xff}}},\n    {{{   201,    125,    -13}, 0, {     0,      0}, {0xe4, 0x7b, 0xfb, 0xff}}},\n    {{{   209,     86,     60}, 0, {     0,      0}, {0x38, 0x60, 0x3c, 0xff}}},\n    {{{   248,    104,    -43}, 0, {     0,      0}, {0x76, 0x2c, 0xf3, 0xff}}},\n    {{{   231,     81,     33}, 0, {     0,      0}, {0x71, 0x27, 0x2a, 0xff}}},\n    {{{   232,     69,    -34}, 0, {     0,      0}, {0x72, 0xe4, 0xd1, 0xff}}},\n    {{{   211,     91,    -71}, 0, {     0,      0}, {0x31, 0x46, 0xa3, 0xff}}},\n    {{{   237,     64,      0}, 0, {     0,      0}, {0x7e, 0xf9, 0xff, 0xff}}},\n    {{{   227,     35,     75}, 0, {     0,      0}, {0x6d, 0x12, 0x3d, 0xff}}},\n    {{{   175,     91,     39}, 0, {     0,      0}, {0x01, 0x75, 0x2f, 0xff}}},\n    {{{   160,     96,      0}, 0, {     0,      0}, {0xb7, 0x67, 0xfe, 0xff}}},\n    {{{    64,   -103,     52}, 0, {     0,      0}, {0xf3, 0x8b, 0x2e, 0xff}}},\n    {{{    64,   -103,    -51}, 0, {     0,      0}, {0xf3, 0x8b, 0xd2, 0xff}}},\n    {{{   119,   -134,      0}, 0, {     0,      0}, {0xe8, 0x84, 0xff, 0xff}}},\n};\n\n// 0x04012FB0\nstatic const Vtx mario_face_hair_cap_off_dl_vertex_group5[] = {\n    {{{   145,    -83,    105}, 0, {     0,      0}, {0xef, 0xd0, 0x73, 0xff}}},\n    {{{   181,     -9,    116}, 0, {     0,      0}, {0x2d, 0x01, 0x76, 0xff}}},\n    {{{   120,    -11,    111}, 0, {     0,      0}, {0xff, 0x13, 0x7d, 0xff}}},\n    {{{    64,   -103,    -51}, 0, {     0,      0}, {0xf3, 0x8b, 0xd2, 0xff}}},\n    {{{   116,   -124,    -67}, 0, {     0,      0}, {0xfc, 0x8f, 0xc8, 0xff}}},\n    {{{   119,   -134,      0}, 0, {     0,      0}, {0xe8, 0x84, 0xff, 0xff}}},\n    {{{   145,    -84,   -104}, 0, {     0,      0}, {0xef, 0xcf, 0x8d, 0xff}}},\n    {{{   182,     -9,   -115}, 0, {     0,      0}, {0x2f, 0xfe, 0x8b, 0xff}}},\n    {{{   120,    -12,   -109}, 0, {     0,      0}, {0xff, 0x13, 0x83, 0xff}}},\n    {{{    91,    -54,    -85}, 0, {     0,      0}, {0xe8, 0xaa, 0xa7, 0xff}}},\n    {{{    64,   -103,     52}, 0, {     0,      0}, {0xf3, 0x8b, 0x2e, 0xff}}},\n    {{{   116,   -126,     68}, 0, {     0,      0}, {0xfb, 0x8f, 0x38, 0xff}}},\n    {{{    91,    -54,     86}, 0, {     0,      0}, {0xe9, 0xa9, 0x59, 0xff}}},\n    {{{    31,    -84,      0}, 0, {     0,      0}, {0xa0, 0xae, 0x00, 0xff}}},\n    {{{    36,   -116,     36}, 0, {     0,      0}, {0xfb, 0x8e, 0xc9, 0xff}}},\n    {{{     9,    -88,     59}, 0, {     0,      0}, {0x87, 0xdf, 0x0b, 0xff}}},\n};\n\n// 0x040130B0\nstatic const Vtx mario_face_hair_cap_off_dl_vertex_group6[] = {\n    {{{    64,   -103,     52}, 0, {     0,      0}, {0xf3, 0x8b, 0x2e, 0xff}}},\n    {{{    91,    -54,     86}, 0, {     0,      0}, {0xe9, 0xa9, 0x59, 0xff}}},\n    {{{    56,    -45,     77}, 0, {     0,      0}, {0xe3, 0xca, 0x6e, 0xff}}},\n    {{{    31,    -84,      0}, 0, {     0,      0}, {0xa0, 0xae, 0x00, 0xff}}},\n    {{{    36,   -116,     36}, 0, {     0,      0}, {0xfb, 0x8e, 0xc9, 0xff}}},\n    {{{    58,   -114,     60}, 0, {     0,      0}, {0x57, 0xb4, 0x32, 0xff}}},\n    {{{    36,   -116,    -35}, 0, {     0,      0}, {0xfb, 0x8e, 0x37, 0xff}}},\n    {{{    64,   -103,    -51}, 0, {     0,      0}, {0xf3, 0x8b, 0xd2, 0xff}}},\n    {{{    56,    -45,    -76}, 0, {     0,      0}, {0xe3, 0xca, 0x92, 0xff}}},\n    {{{    91,    -54,    -85}, 0, {     0,      0}, {0xe8, 0xaa, 0xa7, 0xff}}},\n    {{{    58,   -114,    -59}, 0, {     0,      0}, {0x57, 0xb4, 0xce, 0xff}}},\n    {{{    17,    -52,    -46}, 0, {     0,      0}, {0x89, 0xf8, 0xd7, 0xff}}},\n    {{{     9,    -88,    -58}, 0, {     0,      0}, {0x87, 0xdf, 0xf5, 0xff}}},\n    {{{     9,    -88,     59}, 0, {     0,      0}, {0x87, 0xdf, 0x0b, 0xff}}},\n    {{{    17,    -52,     47}, 0, {     0,      0}, {0x89, 0xf8, 0x29, 0xff}}},\n    {{{    35,   -120,    -67}, 0, {     0,      0}, {0xda, 0x94, 0xcb, 0xff}}},\n};\n\n// 0x040131B0\nstatic const Vtx mario_face_hair_cap_off_dl_vertex_group7[] = {\n    {{{    36,   -116,     36}, 0, {     0,      0}, {0xfb, 0x8e, 0xc9, 0xff}}},\n    {{{    35,   -120,     68}, 0, {     0,      0}, {0xda, 0x94, 0x35, 0xff}}},\n    {{{     9,    -88,     59}, 0, {     0,      0}, {0x87, 0xdf, 0x0b, 0xff}}},\n    {{{    58,   -114,     60}, 0, {     0,      0}, {0x57, 0xb4, 0x32, 0xff}}},\n    {{{    35,   -120,    -67}, 0, {     0,      0}, {0xda, 0x94, 0xcb, 0xff}}},\n    {{{    31,    -85,    -86}, 0, {     0,      0}, {0xdb, 0xfd, 0x87, 0xff}}},\n    {{{    58,   -114,    -59}, 0, {     0,      0}, {0x57, 0xb4, 0xce, 0xff}}},\n    {{{     9,    -88,    -58}, 0, {     0,      0}, {0x87, 0xdf, 0xf5, 0xff}}},\n    {{{    56,    -45,    -76}, 0, {     0,      0}, {0xe3, 0xca, 0x92, 0xff}}},\n    {{{    17,    -52,    -46}, 0, {     0,      0}, {0x89, 0xf8, 0xd7, 0xff}}},\n    {{{    31,    -85,     87}, 0, {     0,      0}, {0xdb, 0xfd, 0x79, 0xff}}},\n    {{{    56,    -45,     77}, 0, {     0,      0}, {0xe3, 0xca, 0x6e, 0xff}}},\n    {{{    17,    -52,     47}, 0, {     0,      0}, {0x89, 0xf8, 0x29, 0xff}}},\n};\n\n// 0x04013280\nstatic const Vtx mario_face_part_cap_off_dl_vertex_group9[] = {\n    {{{    44,     44,     97}, 0, {     0,      0}, {0xda, 0x21, 0x74, 0xff}}},\n    {{{    48,     94,     76}, 0, {     0,      0}, {0xd7, 0x60, 0x47, 0xff}}},\n    {{{     3,     54,     52}, 0, {     0,      0}, {0x95, 0x1d, 0x3c, 0xff}}},\n};\n\n// 0x040132B0 - 0x04013318\nconst Gfx mario_eyes_cap_off_dl[] = {\n    gsSPVertex(mario_eyes_cap_off_dl_vertex, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  8,  6,  4, 0x0),\n    gsSP2Triangles( 5,  4,  7, 0x0,  7,  9,  5, 0x0),\n    gsSP2Triangles( 2,  8, 10, 0x0,  1,  6,  8, 0x0),\n    gsSP2Triangles( 1,  8,  2, 0x0,  6, 11,  7, 0x0),\n    gsSP1Triangle( 1, 11,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x04013318 - 0x040133A8\nconst Gfx mario_mustache_cap_off_dl[] = {\n    gsSPVertex(mario_mustache_cap_off_dl_vertex_group1, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  3,  5,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  6,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  8, 11,  6, 0x0),\n    gsSP2Triangles(12,  8, 13, 0x0, 13,  8, 10, 0x0),\n    gsSP2Triangles(14,  3,  4, 0x0, 13, 10, 15, 0x0),\n    gsSPVertex(mario_mustache_cap_off_dl_vertex_group2, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP1Triangle( 2,  3,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x040133A8 - 0x040133F8\nconst Gfx mario_hair_sideburn_cap_off_dl[] = {\n    gsSPVertex(mario_hair_sideburn_cap_off_dl_vertex, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 4,  2,  5, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  9,  6, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0, 10,  8, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x040133F8 - 0x040136D0\nconst Gfx mario_face_part_cap_off_dl[] = {\n    gsSPVertex(mario_face_part_cap_off_dl_vertex_group1, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  3,  6,  7, 0x0),\n    gsSP2Triangles( 4,  8,  2, 0x0,  8,  4,  9, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  6,  5, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 14, 13, 12, 0x0),\n    gsSP1Triangle(13, 14,  0, 0x0),\n    gsSPVertex(mario_face_part_cap_off_dl_vertex_group2, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  8,  7, 0x0),\n    gsSP2Triangles(10,  1, 11, 0x0,  1, 12, 11, 0x0),\n    gsSP2Triangles(12,  1,  0, 0x0, 13, 11, 14, 0x0),\n    gsSP2Triangles(12, 14, 11, 0x0, 11, 13, 15, 0x0),\n    gsSPVertex(mario_face_part_cap_off_dl_vertex_group3, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  5,  7, 0x0),\n    gsSP2Triangles( 8,  7,  5, 0x0,  4,  8,  5, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(mario_face_part_cap_off_dl_vertex_group4, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  1,  0, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  3,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(13, 11, 10, 0x0, 11, 13, 14, 0x0),\n    gsSPVertex(mario_face_part_cap_off_dl_vertex_group5, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  5, 0x0,  8,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8,  6,  9, 0x0),\n    gsSP2Triangles( 9, 11, 10, 0x0,  9, 12, 11, 0x0),\n    gsSP2Triangles( 0, 13,  1, 0x0, 13, 14,  1, 0x0),\n    gsSP1Triangle( 1, 14, 15, 0x0),\n    gsSPVertex(mario_face_part_cap_off_dl_vertex_group6, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 2,  4,  0, 0x0,  1,  0,  5, 0x0),\n    gsSP2Triangles( 1,  6,  7, 0x0,  1,  5,  6, 0x0),\n    gsSP2Triangles( 7,  8,  1, 0x0,  3,  9,  4, 0x0),\n    gsSP2Triangles( 9,  3, 10, 0x0,  4, 11,  0, 0x0),\n    gsSP2Triangles(11,  4, 12, 0x0,  4,  9, 12, 0x0),\n    gsSP2Triangles(10, 13, 14, 0x0,  0, 11, 15, 0x0),\n    gsSP2Triangles( 5,  0, 15, 0x0, 14,  9, 10, 0x0),\n    gsSPVertex(mario_face_part_cap_off_dl_vertex_group7, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 8,  5,  4, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 2, 12,  0, 0x0, 13,  4,  6, 0x0),\n    gsSP2Triangles( 6, 14, 15, 0x0,  6,  7, 14, 0x0),\n    gsSP1Triangle(13,  6, 15, 0x0),\n    gsSPVertex(mario_face_part_cap_off_dl_vertex_group8, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  6,  5, 0x0),\n    gsSP1Triangle( 8,  5,  4, 0x0),\n    gsSPVertex(mario_face_part_cap_off_dl_vertex_group9, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x040136D0 - 0x040139C0\nconst Gfx mario_face_hair_cap_off_dl[] = {\n    gsSPVertex(mario_face_hair_cap_off_dl_vertex_group1, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  3,  7,  4, 0x0),\n    gsSP2Triangles( 8,  4,  9, 0x0,  7, 10,  4, 0x0),\n    gsSP2Triangles( 4, 10,  9, 0x0,  8,  5,  4, 0x0),\n    gsSP2Triangles(11,  1, 12, 0x0,  1,  0, 12, 0x0),\n    gsSP2Triangles( 1, 13,  2, 0x0,  1, 11, 14, 0x0),\n    gsSP2Triangles(13,  1, 14, 0x0, 15,  2, 13, 0x0),\n    gsSPVertex(mario_face_hair_cap_off_dl_vertex_group2, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0,  3,  7,  6, 0x0),\n    gsSP2Triangles( 8,  7,  3, 0x0,  5,  8,  3, 0x0),\n    gsSP2Triangles( 9, 10,  4, 0x0, 11,  4,  6, 0x0),\n    gsSP2Triangles(11,  9,  4, 0x0, 10,  5,  4, 0x0),\n    gsSP2Triangles(10, 12,  5, 0x0,  5, 13, 14, 0x0),\n    gsSP2Triangles( 8,  5, 14, 0x0,  9,  2, 10, 0x0),\n    gsSPVertex(mario_face_hair_cap_off_dl_vertex_group3, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  4,  6,  5, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0, 10,  7,  9, 0x0),\n    gsSP2Triangles( 8,  7, 11, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(14, 11, 13, 0x0, 14,  8, 11, 0x0),\n    gsSP1Triangle(15, 13, 12, 0x0),\n    gsSPVertex(mario_face_hair_cap_off_dl_vertex_group4, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  5, 0x0),\n    gsSP2Triangles( 8,  3,  5, 0x0,  9,  7,  5, 0x0),\n    gsSP2Triangles(10,  6,  4, 0x0,  4,  3, 11, 0x0),\n    gsSP2Triangles( 3, 12, 11, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(mario_face_hair_cap_off_dl_vertex_group5, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  4,  3, 0x0,  7,  6,  8, 0x0),\n    gsSP2Triangles( 9,  6,  3, 0x0,  6,  9,  8, 0x0),\n    gsSP2Triangles(10, 11,  0, 0x0, 12,  0,  2, 0x0),\n    gsSP2Triangles(10,  0, 12, 0x0, 10,  5, 11, 0x0),\n    gsSP2Triangles(13, 14, 15, 0x0, 13,  3, 10, 0x0),\n    gsSPVertex(mario_face_hair_cap_off_dl_vertex_group6, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 5,  0,  2, 0x0,  5,  4,  0, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  8,  9,  7, 0x0),\n    gsSP2Triangles( 6, 10,  7, 0x0,  8,  7, 10, 0x0),\n    gsSP2Triangles( 3, 11, 12, 0x0, 13, 14,  3, 0x0),\n    gsSP2Triangles(12,  6,  3, 0x0,  6, 15, 10, 0x0),\n    gsSP1Triangle(12, 15,  6, 0x0),\n    gsSPVertex(mario_face_hair_cap_off_dl_vertex_group7, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  4,  7, 0x0),\n    gsSP2Triangles( 6,  5,  8, 0x0,  9,  8,  5, 0x0),\n    gsSP2Triangles( 5,  7,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(11, 10,  3, 0x0, 12,  2, 10, 0x0),\n    gsSP2Triangles( 2,  1, 10, 0x0, 10,  1,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x040139C0 - 0x040139E8\nconst Gfx mario_face_cap_off_dl[] = {\n    gsSPDisplayList(mario_face_part_cap_off_dl),\n    gsSPLight(&mario_brown2_lights_group.l, 1),\n    gsSPLight(&mario_brown2_lights_group.a, 2),\n    gsSPDisplayList(mario_face_hair_cap_off_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x040139E8 - 0x04013AB8\nconst Gfx mario_cap_off_eyes_front[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_front),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mario_beige_lights_group.l, 1),\n    gsSPLight(&mario_beige_lights_group.a, 2),\n    gsSPDisplayList(mario_eyes_cap_off_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_mustache_cap_off_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_hair_sideburn),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_hair_sideburn_cap_off_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(mario_face_cap_off_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04013AB8 - 0x04013B88\nconst Gfx mario_cap_off_eyes_half_closed[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_half_closed),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mario_beige_lights_group.l, 1),\n    gsSPLight(&mario_beige_lights_group.a, 2),\n    gsSPDisplayList(mario_eyes_cap_off_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_mustache_cap_off_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_hair_sideburn),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_hair_sideburn_cap_off_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(mario_face_cap_off_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04013B88 - 0x04013C58\nconst Gfx mario_cap_off_eyes_closed[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_closed),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mario_beige_lights_group.l, 1),\n    gsSPLight(&mario_beige_lights_group.a, 2),\n    gsSPDisplayList(mario_eyes_cap_off_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_mustache_cap_off_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_hair_sideburn),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_hair_sideburn_cap_off_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(mario_face_cap_off_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04013C58 - 0x04013D28\nconst Gfx mario_cap_off_eyes_right[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_right),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mario_beige_lights_group.l, 1),\n    gsSPLight(&mario_beige_lights_group.a, 2),\n    gsSPDisplayList(mario_eyes_cap_off_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_mustache_cap_off_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_hair_sideburn),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_hair_sideburn_cap_off_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(mario_face_cap_off_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04013D28 - 0x04013DF8\nconst Gfx mario_cap_off_eyes_left[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_left),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mario_beige_lights_group.l, 1),\n    gsSPLight(&mario_beige_lights_group.a, 2),\n    gsSPDisplayList(mario_eyes_cap_off_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_mustache_cap_off_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_hair_sideburn),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_hair_sideburn_cap_off_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(mario_face_cap_off_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04013DF8 - 0x04013EC8\nconst Gfx mario_cap_off_eyes_up[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_up),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mario_beige_lights_group.l, 1),\n    gsSPLight(&mario_beige_lights_group.a, 2),\n    gsSPDisplayList(mario_eyes_cap_off_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_mustache_cap_off_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_hair_sideburn),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_hair_sideburn_cap_off_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(mario_face_cap_off_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04013EC8 - 0x04013F98\nconst Gfx mario_cap_off_eyes_down[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_down),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mario_beige_lights_group.l, 1),\n    gsSPLight(&mario_beige_lights_group.a, 2),\n    gsSPDisplayList(mario_eyes_cap_off_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_mustache_cap_off_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_hair_sideburn),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_hair_sideburn_cap_off_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(mario_face_cap_off_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04013F98 - 0x04014068\nconst Gfx mario_cap_off_eyes_dead[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_dead),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mario_beige_lights_group.l, 1),\n    gsSPLight(&mario_beige_lights_group.a, 2),\n    gsSPDisplayList(mario_eyes_cap_off_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_mustache_cap_off_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_hair_sideburn),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_hair_sideburn_cap_off_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(mario_face_cap_off_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04014068 - 0x04014098\nconst Gfx mario_metal_cap_off_shared_dl[] = {\n    gsSPDisplayList(mario_eyes_cap_off_dl),\n    gsSPDisplayList(mario_mustache_cap_off_dl),\n    gsSPDisplayList(mario_hair_sideburn_cap_off_dl),\n    gsSPDisplayList(mario_face_part_cap_off_dl),\n    gsSPDisplayList(mario_face_hair_cap_off_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04014098\nstatic const Vtx mario_medium_poly_butt_dl_vertex_group1[] = {\n    {{{     0,     78,     37}, 0, {     0,      0}, {0xc7, 0x6f, 0x14, 0x00}}},\n    {{{    44,     80,     46}, 0, {     0,      0}, {0x36, 0x68, 0x2e, 0x00}}},\n    {{{    43,     80,    -45}, 0, {     0,      0}, {0x2c, 0x70, 0xdb, 0x00}}},\n    {{{    -6,    -84,     50}, 0, {     0,      0}, {0xd5, 0x90, 0x26, 0x00}}},\n    {{{    41,    -86,    -45}, 0, {     0,      0}, {0x35, 0x90, 0xe7, 0x00}}},\n    {{{    41,    -86,     45}, 0, {     0,      0}, {0x44, 0x9b, 0x1f, 0x00}}},\n    {{{   -33,    -45,    -31}, 0, {     0,      0}, {0x87, 0xe9, 0xe3, 0x00}}},\n    {{{   -33,    -45,     31}, 0, {     0,      0}, {0x86, 0xe5, 0x15, 0x00}}},\n    {{{   -32,     43,    -22}, 0, {     0,      0}, {0x8b, 0x2d, 0xf0, 0x00}}},\n    {{{    -2,     41,     95}, 0, {     0,      0}, {0xba, 0x3b, 0x57, 0x00}}},\n    {{{    -5,    -45,     97}, 0, {     0,      0}, {0xc7, 0xde, 0x6b, 0x00}}},\n    {{{    44,     36,     95}, 0, {     0,      0}, {0x3d, 0x22, 0x69, 0x00}}},\n    {{{    -5,    -45,    -97}, 0, {     0,      0}, {0xc7, 0xdd, 0x95, 0x00}}},\n    {{{    -2,     41,    -95}, 0, {     0,      0}, {0xba, 0x3b, 0xaa, 0x00}}},\n    {{{    44,     35,    -96}, 0, {     0,      0}, {0x3c, 0x22, 0x96, 0x00}}},\n    {{{    -6,    -84,    -50}, 0, {     0,      0}, {0xc1, 0x9a, 0xd9, 0x00}}},\n};\n\n// 0x04014198\nstatic const Vtx mario_medium_poly_butt_dl_vertex_group2[] = {\n    {{{    -2,     41,     95}, 0, {     0,      0}, {0xba, 0x3b, 0x57, 0x00}}},\n    {{{     0,     78,     37}, 0, {     0,      0}, {0xc7, 0x6f, 0x14, 0x00}}},\n    {{{   -32,     43,     22}, 0, {     0,      0}, {0x8c, 0x2c, 0x18, 0x00}}},\n    {{{     0,     78,    -37}, 0, {     0,      0}, {0xc5, 0x6c, 0xe2, 0x00}}},\n    {{{    -2,     41,    -95}, 0, {     0,      0}, {0xba, 0x3b, 0xaa, 0x00}}},\n    {{{   -32,     43,    -22}, 0, {     0,      0}, {0x8b, 0x2d, 0xf0, 0x00}}},\n    {{{   -33,    -45,     31}, 0, {     0,      0}, {0x86, 0xe5, 0x15, 0x00}}},\n    {{{   -33,    -45,    -31}, 0, {     0,      0}, {0x87, 0xe9, 0xe3, 0x00}}},\n    {{{    -6,    -84,    -50}, 0, {     0,      0}, {0xc1, 0x9a, 0xd9, 0x00}}},\n    {{{    43,    -48,    -97}, 0, {     0,      0}, {0x3b, 0xc1, 0xa4, 0x00}}},\n    {{{    41,    -86,    -45}, 0, {     0,      0}, {0x35, 0x90, 0xe7, 0x00}}},\n    {{{    -6,    -84,     50}, 0, {     0,      0}, {0xd5, 0x90, 0x26, 0x00}}},\n    {{{    41,    -86,     45}, 0, {     0,      0}, {0x44, 0x9b, 0x1f, 0x00}}},\n    {{{    43,    -48,     97}, 0, {     0,      0}, {0x3b, 0xc2, 0x5c, 0x00}}},\n    {{{    44,     36,     95}, 0, {     0,      0}, {0x3d, 0x22, 0x69, 0x00}}},\n    {{{    44,     80,     46}, 0, {     0,      0}, {0x36, 0x68, 0x2e, 0x00}}},\n};\n\n// 0x04014298\nstatic const Vtx mario_medium_poly_butt_dl_vertex_group3[] = {\n    {{{    -2,     41,    -95}, 0, {     0,      0}, {0xba, 0x3b, 0xaa, 0x00}}},\n    {{{    43,     80,    -45}, 0, {     0,      0}, {0x2c, 0x70, 0xdb, 0x00}}},\n    {{{    44,     35,    -96}, 0, {     0,      0}, {0x3c, 0x22, 0x96, 0x00}}},\n    {{{     0,     78,    -37}, 0, {     0,      0}, {0xc5, 0x6c, 0xe2, 0x00}}},\n    {{{    44,     80,     46}, 0, {     0,      0}, {0x36, 0x68, 0x2e, 0x00}}},\n    {{{     0,     78,     37}, 0, {     0,      0}, {0xc7, 0x6f, 0x14, 0x00}}},\n    {{{    -2,     41,     95}, 0, {     0,      0}, {0xba, 0x3b, 0x57, 0x00}}},\n    {{{   -32,     43,    -22}, 0, {     0,      0}, {0x8b, 0x2d, 0xf0, 0x00}}},\n    {{{    43,    -48,     97}, 0, {     0,      0}, {0x3b, 0xc2, 0x5c, 0x00}}},\n    {{{    -5,    -45,     97}, 0, {     0,      0}, {0xc7, 0xde, 0x6b, 0x00}}},\n    {{{    -6,    -84,     50}, 0, {     0,      0}, {0xd5, 0x90, 0x26, 0x00}}},\n    {{{    -6,    -84,    -50}, 0, {     0,      0}, {0xc1, 0x9a, 0xd9, 0x00}}},\n    {{{    -5,    -45,    -97}, 0, {     0,      0}, {0xc7, 0xdd, 0x95, 0x00}}},\n    {{{    43,    -48,    -97}, 0, {     0,      0}, {0x3b, 0xc1, 0xa4, 0x00}}},\n    {{{   -33,    -45,     31}, 0, {     0,      0}, {0x86, 0xe5, 0x15, 0x00}}},\n    {{{   -33,    -45,    -31}, 0, {     0,      0}, {0x87, 0xe9, 0xe3, 0x00}}},\n};\n\n// 0x04014398\nstatic const Vtx mario_medium_poly_butt_dl_vertex_group4[] = {\n    {{{    -5,    -45,     97}, 0, {     0,      0}, {0xc7, 0xde, 0x6b, 0x00}}},\n    {{{    43,    -48,     97}, 0, {     0,      0}, {0x3b, 0xc2, 0x5c, 0x00}}},\n    {{{    44,     36,     95}, 0, {     0,      0}, {0x3d, 0x22, 0x69, 0x00}}},\n    {{{   -33,    -45,     31}, 0, {     0,      0}, {0x86, 0xe5, 0x15, 0x00}}},\n    {{{   -32,     43,     22}, 0, {     0,      0}, {0x8c, 0x2c, 0x18, 0x00}}},\n    {{{   -32,     43,    -22}, 0, {     0,      0}, {0x8b, 0x2d, 0xf0, 0x00}}},\n    {{{    -6,    -84,     50}, 0, {     0,      0}, {0xd5, 0x90, 0x26, 0x00}}},\n    {{{    -6,    -84,    -50}, 0, {     0,      0}, {0xc1, 0x9a, 0xd9, 0x00}}},\n    {{{    41,    -86,    -45}, 0, {     0,      0}, {0x35, 0x90, 0xe7, 0x00}}},\n    {{{    43,     80,    -45}, 0, {     0,      0}, {0x2c, 0x70, 0xdb, 0x00}}},\n    {{{     0,     78,    -37}, 0, {     0,      0}, {0xc5, 0x6c, 0xe2, 0x00}}},\n    {{{     0,     78,     37}, 0, {     0,      0}, {0xc7, 0x6f, 0x14, 0x00}}},\n    {{{    85,     -5,      0}, 0, {     0,      0}, {0x7f, 0xfe, 0x00, 0x00}}},\n    {{{    44,     35,    -96}, 0, {     0,      0}, {0x3c, 0x22, 0x96, 0x00}}},\n    {{{    43,    -48,    -97}, 0, {     0,      0}, {0x3b, 0xc1, 0xa4, 0x00}}},\n    {{{    41,    -86,     45}, 0, {     0,      0}, {0x44, 0x9b, 0x1f, 0x00}}},\n};\n\n// 0x04014498\nstatic const Vtx mario_medium_poly_butt_dl_vertex_group5[] = {\n    {{{    44,     36,     95}, 0, {     0,      0}, {0x3d, 0x22, 0x69, 0x00}}},\n    {{{    85,     -5,      0}, 0, {     0,      0}, {0x7f, 0xfe, 0x00, 0x00}}},\n    {{{    44,     80,     46}, 0, {     0,      0}, {0x36, 0x68, 0x2e, 0x00}}},\n    {{{    43,     80,    -45}, 0, {     0,      0}, {0x2c, 0x70, 0xdb, 0x00}}},\n};\n\n// 0x040144D8 - 0x04014638\nconst Gfx mario_medium_poly_butt_dl[] = {\n    gsSPVertex(mario_medium_poly_butt_dl_vertex_group1, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15,  6, 0x0),\n    gsSP1Triangle( 3, 10,  7, 0x0),\n    gsSPVertex(mario_medium_poly_butt_dl_vertex_group2, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  2,  6, 0x0,  7,  5,  4, 0x0),\n    gsSP2Triangles( 7,  8,  6, 0x0,  9, 10,  8, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0,  2,  1,  5, 0x0),\n    gsSP1Triangle(14, 15,  0, 0x0),\n    gsSPVertex(mario_medium_poly_butt_dl_vertex_group3, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  3,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 10, 14, 0x0,  0, 12, 15, 0x0),\n    gsSP2Triangles(14,  9,  6, 0x0,  2, 13, 12, 0x0),\n    gsSPVertex(mario_medium_poly_butt_dl_vertex_group4, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 13, 0x0, 13, 12, 14, 0x0),\n    gsSP2Triangles(14, 12,  8, 0x0,  8, 12, 15, 0x0),\n    gsSP2Triangles(15, 12,  1, 0x0,  1, 12,  2, 0x0),\n    gsSPVertex(mario_medium_poly_butt_dl_vertex_group5, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x04014638 - 0x04014668\nconst Gfx mario_medium_poly_butt[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPLight(&mario_blue_lights_group.l, 1),\n    gsSPLight(&mario_blue_lights_group.a, 2),\n    gsSPDisplayList(mario_medium_poly_butt_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04014668 - 0x040146E0\nconst Gfx mario_metal_medium_poly_butt[] = {\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_TEXTURE_GEN),\n    gsDPSetCombineMode(G_CC_DECALFADE, G_CC_DECALFADE),\n    gsDPLoadTextureBlock(mario_texture_metal, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_ON),\n    gsSPLight(&mario_white_lights_group.l, 1),\n    gsSPLight(&mario_white_lights_group.a, 2),\n    gsSPDisplayList(mario_medium_poly_butt_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x040146E0\nstatic const Vtx mario_medium_poly_left_arm_shared_dl_vertex[] = {\n    {{{    -6,    -32,    -22}, 0, {     0,      0}, {0x08, 0x84, 0x18, 0x00}}},\n    {{{    60,    -27,    -18}, 0, {     0,      0}, {0x3d, 0xc5, 0xa3, 0x00}}},\n    {{{    60,    -18,     26}, 0, {     0,      0}, {0x5c, 0xbe, 0x36, 0x00}}},\n    {{{    -6,    -32,    -22}, 0, {     0,      0}, {0x07, 0xf5, 0x82, 0x00}}},\n    {{{    -7,     21,    -27}, 0, {     0,      0}, {0x07, 0xf5, 0x82, 0x00}}},\n    {{{    59,     16,    -22}, 0, {     0,      0}, {0x5b, 0x4f, 0xda, 0x00}}},\n    {{{    -7,     20,     18}, 0, {     0,      0}, {0x0c, 0x73, 0x32, 0x00}}},\n    {{{    59,     14,     14}, 0, {     0,      0}, {0x38, 0x4b, 0x55, 0x00}}},\n    {{{    -6,    -21,     33}, 0, {     0,      0}, {0x0b, 0x2a, 0x77, 0x00}}},\n    {{{    -7,     21,    -27}, 0, {     0,      0}, {0x0a, 0x7e, 0x04, 0x00}}},\n    {{{    -6,    -21,     33}, 0, {     0,      0}, {0x08, 0x84, 0x18, 0x00}}},\n    {{{    -7,     21,    -27}, 0, {     0,      0}, {0x81, 0xff, 0x00, 0x00}}},\n    {{{    -6,    -32,    -22}, 0, {     0,      0}, {0x81, 0xff, 0x00, 0x00}}},\n    {{{    -6,    -21,     33}, 0, {     0,      0}, {0x81, 0xff, 0x00, 0x00}}},\n    {{{    -7,     20,     18}, 0, {     0,      0}, {0x81, 0xff, 0x00, 0x00}}},\n};\n\n// 0x040147D0 - 0x04014840\nconst Gfx mario_medium_poly_left_arm_shared_dl[] = {\n    gsSPVertex(mario_medium_poly_left_arm_shared_dl_vertex, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 4,  5,  1, 0x0,  6,  7,  5, 0x0),\n    gsSP2Triangles( 8,  2,  7, 0x0,  6,  8,  7, 0x0),\n    gsSP2Triangles( 9,  6,  5, 0x0, 10,  0,  2, 0x0),\n    gsSP2Triangles( 5,  2,  1, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(13, 14, 11, 0x0,  5,  7,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x04014840 - 0x04014860\nconst Gfx mario_medium_poly_left_arm[] = {\n    gsSPLight(&mario_red_lights_group.l, 1),\n    gsSPLight(&mario_red_lights_group.a, 2),\n    gsSPDisplayList(mario_medium_poly_left_arm_shared_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04014860\nstatic const Vtx mario_medium_poly_left_forearm_shared_dl_vertex[] = {\n    {{{    -9,    -29,    -18}, 0, {     0,      0}, {0x05, 0x84, 0x19, 0x00}}},\n    {{{    53,    -26,    -17}, 0, {     0,      0}, {0x59, 0xd0, 0xb5, 0x00}}},\n    {{{    53,    -17,     24}, 0, {     0,      0}, {0x3d, 0xab, 0x47, 0x00}}},\n    {{{    -9,    -29,    -18}, 0, {     0,      0}, {0x04, 0xf3, 0x82, 0x00}}},\n    {{{    -9,     16,    -24}, 0, {     0,      0}, {0x04, 0xf4, 0x82, 0x00}}},\n    {{{    53,     13,    -21}, 0, {     0,      0}, {0x3b, 0x64, 0xce, 0x00}}},\n    {{{    -9,     15,     15}, 0, {     0,      0}, {0x07, 0x75, 0x30, 0x00}}},\n    {{{    53,     13,     12}, 0, {     0,      0}, {0x52, 0x41, 0x47, 0x00}}},\n    {{{    -9,    -19,     28}, 0, {     0,      0}, {0x07, 0x2c, 0x76, 0x00}}},\n    {{{    -9,     16,    -24}, 0, {     0,      0}, {0x06, 0x7e, 0x02, 0x00}}},\n    {{{    -9,    -19,     28}, 0, {     0,      0}, {0x05, 0x84, 0x1a, 0x00}}},\n    {{{    -9,     16,    -24}, 0, {     0,      0}, {0x81, 0xff, 0x00, 0x00}}},\n    {{{    -9,    -29,    -18}, 0, {     0,      0}, {0x81, 0xff, 0x00, 0x00}}},\n    {{{    -9,    -19,     28}, 0, {     0,      0}, {0x81, 0xff, 0x00, 0x00}}},\n    {{{    -9,     15,     15}, 0, {     0,      0}, {0x81, 0xff, 0x00, 0x00}}},\n};\n\n// 0x04014950 - 0x040149C0\nconst Gfx mario_medium_poly_left_forearm_shared_dl[] = {\n    gsSPVertex(mario_medium_poly_left_forearm_shared_dl_vertex, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 4,  5,  1, 0x0,  6,  7,  5, 0x0),\n    gsSP2Triangles( 8,  2,  7, 0x0,  6,  8,  7, 0x0),\n    gsSP2Triangles( 9,  6,  5, 0x0, 10,  0,  2, 0x0),\n    gsSP2Triangles( 1,  7,  2, 0x0,  1,  5,  7, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 13, 14, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x040149C0\nstatic const Vtx mario_medium_poly_left_hand_closed_shared_dl_vertex_group1[] = {\n    {{{    31,     10,     40}, 0, {     0,      0}, {0xd8, 0xed, 0x76, 0x00}}},\n    {{{    12,      1,     26}, 0, {     0,      0}, {0xf1, 0xf7, 0x7d, 0x00}}},\n    {{{    27,    -32,     -3}, 0, {     0,      0}, {0x06, 0x82, 0x0b, 0x00}}},\n    {{{    11,      2,    -28}, 0, {     0,      0}, {0xca, 0xf6, 0x8e, 0x00}}},\n    {{{    44,    -22,    -46}, 0, {     0,      0}, {0xde, 0xb9, 0x9d, 0x00}}},\n    {{{    18,     37,    -31}, 0, {     0,      0}, {0xc7, 0x28, 0x97, 0x00}}},\n    {{{    -2,     36,     -2}, 0, {     0,      0}, {0xb0, 0x61, 0x03, 0x00}}},\n    {{{    -5,     -5,     34}, 0, {     0,      0}, {0x2f, 0x13, 0x74, 0x00}}},\n    {{{    -6,     -5,    -32}, 0, {     0,      0}, {0x1c, 0x0e, 0x86, 0x00}}},\n    {{{    81,     32,     40}, 0, {     0,      0}, {0x48, 0x1f, 0x63, 0x00}}},\n    {{{    55,     84,      9}, 0, {     0,      0}, {0x14, 0x74, 0x2c, 0x00}}},\n    {{{   102,    -23,      6}, 0, {     0,      0}, {0x64, 0xc4, 0x31, 0x00}}},\n    {{{    95,     43,    -12}, 0, {     0,      0}, {0x6e, 0x36, 0xe0, 0x00}}},\n    {{{    54,     58,    -32}, 0, {     0,      0}, {0x02, 0x4e, 0x9d, 0x00}}},\n    {{{    84,    -10,    -41}, 0, {     0,      0}, {0x39, 0xe2, 0x93, 0x00}}},\n    {{{    53,    -42,      9}, 0, {     0,      0}, {0x04, 0x83, 0x0f, 0x00}}},\n};\n\n// 0x04014AC0\nstatic const Vtx mario_medium_poly_left_hand_closed_shared_dl_vertex_group2[] = {\n    {{{    31,     10,     40}, 0, {     0,      0}, {0xd8, 0xed, 0x76, 0x00}}},\n    {{{    55,     84,      9}, 0, {     0,      0}, {0x14, 0x74, 0x2c, 0x00}}},\n    {{{     7,     62,     10}, 0, {     0,      0}, {0xa7, 0x5a, 0x00, 0x00}}},\n    {{{    27,    -32,     -3}, 0, {     0,      0}, {0x06, 0x82, 0x0b, 0x00}}},\n    {{{    14,    -51,     -2}, 0, {     0,      0}, {0x37, 0xd5, 0x97, 0x00}}},\n    {{{    -6,     -5,    -32}, 0, {     0,      0}, {0x1c, 0x0e, 0x86, 0x00}}},\n    {{{   -26,     40,     -1}, 0, {     0,      0}, {0x05, 0x48, 0x98, 0x00}}},\n    {{{    -2,     36,     -2}, 0, {     0,      0}, {0xb0, 0x61, 0x03, 0x00}}},\n    {{{   -26,     40,     -1}, 0, {     0,      0}, {0x11, 0x50, 0x60, 0x00}}},\n    {{{    -5,     -5,     34}, 0, {     0,      0}, {0x2f, 0x13, 0x74, 0x00}}},\n    {{{    14,    -51,     -2}, 0, {     0,      0}, {0x49, 0xd5, 0x5e, 0x00}}},\n    {{{    18,     37,    -31}, 0, {     0,      0}, {0xc7, 0x28, 0x97, 0x00}}},\n    {{{    44,    -22,    -46}, 0, {     0,      0}, {0xde, 0xb9, 0x9d, 0x00}}},\n    {{{    53,    -42,      9}, 0, {     0,      0}, {0x04, 0x83, 0x0f, 0x00}}},\n    {{{    54,     58,    -32}, 0, {     0,      0}, {0x02, 0x4e, 0x9d, 0x00}}},\n};\n\n// 0x04014BB0\nstatic const Vtx mario_medium_poly_left_hand_closed_shared_dl_vertex_group3[] = {\n    {{{    54,     58,    -32}, 0, {     0,      0}, {0x02, 0x4e, 0x9d, 0x00}}},\n    {{{    95,     43,    -12}, 0, {     0,      0}, {0x6e, 0x36, 0xe0, 0x00}}},\n    {{{    84,    -10,    -41}, 0, {     0,      0}, {0x39, 0xe2, 0x93, 0x00}}},\n    {{{     7,     62,     10}, 0, {     0,      0}, {0xa7, 0x5a, 0x00, 0x00}}},\n    {{{    55,     84,      9}, 0, {     0,      0}, {0x14, 0x74, 0x2c, 0x00}}},\n    {{{    53,    -42,      9}, 0, {     0,      0}, {0x04, 0x83, 0x0f, 0x00}}},\n    {{{   102,    -23,      6}, 0, {     0,      0}, {0x64, 0xc4, 0x31, 0x00}}},\n    {{{    18,     37,    -31}, 0, {     0,      0}, {0xc7, 0x28, 0x97, 0x00}}},\n    {{{    44,    -22,    -46}, 0, {     0,      0}, {0xde, 0xb9, 0x9d, 0x00}}},\n    {{{    11,      2,    -28}, 0, {     0,      0}, {0xca, 0xf6, 0x8e, 0x00}}},\n    {{{    -5,     -5,     34}, 0, {     0,      0}, {0x8c, 0xce, 0x01, 0x00}}},\n    {{{    -6,     -5,    -32}, 0, {     0,      0}, {0x8c, 0xce, 0x01, 0x00}}},\n    {{{    14,    -51,     -2}, 0, {     0,      0}, {0x8c, 0xce, 0x01, 0x00}}},\n    {{{   -26,     40,     -1}, 0, {     0,      0}, {0x8c, 0xce, 0x01, 0x00}}},\n};\n\n// 0x04014C90 - 0x04014DC0\nconst Gfx mario_medium_poly_left_hand_closed_shared_dl[] = {\n    gsSPVertex(mario_medium_poly_left_hand_closed_shared_dl_vertex_group1, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 5,  3,  6, 0x0,  6,  1,  0, 0x0),\n    gsSP2Triangles( 2,  1,  7, 0x0,  7,  1,  6, 0x0),\n    gsSP2Triangles( 6,  3,  8, 0x0,  3,  2,  8, 0x0),\n    gsSP2Triangles( 0,  9, 10, 0x0, 11,  9,  0, 0x0),\n    gsSP2Triangles(10, 12, 13, 0x0, 14, 12, 11, 0x0),\n    gsSP2Triangles(11, 12,  9, 0x0,  9, 12, 10, 0x0),\n    gsSP1Triangle(15, 11,  0, 0x0),\n    gsSPVertex(mario_medium_poly_left_hand_closed_shared_dl_vertex_group2, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9, 10,  3, 0x0,  7,  0,  2, 0x0),\n    gsSP2Triangles( 7,  2, 11, 0x0,  3, 12, 13, 0x0),\n    gsSP2Triangles( 3, 13,  0, 0x0, 11,  2, 14, 0x0),\n    gsSPVertex(mario_medium_poly_left_hand_closed_shared_dl_vertex_group3, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 5,  2,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  2,  8, 0x0,  7,  0,  2, 0x0),\n    gsSP2Triangles( 5,  8,  2, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(10, 13, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x04014DC0 - 0x04014DE0\nconst Gfx mario_medium_poly_left_hand_closed[] = {\n    gsSPLight(&mario_white_lights_group.l, 1),\n    gsSPLight(&mario_white_lights_group.a, 2),\n    gsSPDisplayList(mario_medium_poly_left_hand_closed_shared_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04014DE0\nstatic const Vtx mario_medium_poly_right_arm_shared_dl_vertex[] = {\n    {{{    60,    -28,     22}, 0, {     0,      0}, {0x3b, 0xc7, 0x60, 0x00}}},\n    {{{    60,    -19,    -19}, 0, {     0,      0}, {0x5a, 0xbc, 0xc7, 0x00}}},\n    {{{    60,     14,     24}, 0, {     0,      0}, {0x5b, 0x4f, 0x26, 0x00}}},\n    {{{    -7,    -31,     24}, 0, {     0,      0}, {0x04, 0x84, 0xe6, 0x00}}},\n    {{{    -7,    -20,    -27}, 0, {     0,      0}, {0x04, 0x84, 0xe6, 0x00}}},\n    {{{    -8,     21,    -15}, 0, {     0,      0}, {0x11, 0x73, 0xce, 0x00}}},\n    {{{    -8,     22,     27}, 0, {     0,      0}, {0x0e, 0x7e, 0xfd, 0x00}}},\n    {{{    60,     13,     -9}, 0, {     0,      0}, {0x3c, 0x46, 0xaa, 0x00}}},\n    {{{    -7,    -20,    -27}, 0, {     0,      0}, {0x0e, 0x23, 0x88, 0x00}}},\n    {{{    -8,     22,     27}, 0, {     0,      0}, {0x03, 0xfa, 0x7e, 0x00}}},\n    {{{    -7,    -31,     24}, 0, {     0,      0}, {0x03, 0xfa, 0x7e, 0x00}}},\n    {{{    -7,    -20,    -27}, 0, {     0,      0}, {0x81, 0xff, 0x00, 0x00}}},\n    {{{    -7,    -31,     24}, 0, {     0,      0}, {0x81, 0xff, 0x00, 0x00}}},\n    {{{    -8,     22,     27}, 0, {     0,      0}, {0x81, 0xff, 0x00, 0x00}}},\n    {{{    -8,     21,    -15}, 0, {     0,      0}, {0x81, 0xff, 0x00, 0x00}}},\n};\n\n// 0x04014ED0 - 0x04014F40\nconst Gfx mario_medium_poly_right_arm_shared_dl[] = {\n    gsSPVertex(mario_medium_poly_right_arm_shared_dl_vertex, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 2,  5,  6, 0x0,  7,  8,  5, 0x0),\n    gsSP2Triangles( 7,  1,  8, 0x0,  2,  7,  5, 0x0),\n    gsSP2Triangles( 0,  2,  9, 0x0,  0,  9, 10, 0x0),\n    gsSP2Triangles( 1,  0,  3, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(13, 14, 11, 0x0,  1,  7,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x04014F40 - 0x04014F60\nconst Gfx mario_medium_poly_right_arm[] = {\n    gsSPLight(&mario_red_lights_group.l, 1),\n    gsSPLight(&mario_red_lights_group.a, 2),\n    gsSPDisplayList(mario_medium_poly_right_arm_shared_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04014F60\nstatic const Vtx mario_medium_poly_right_forearm_shared_dl_vertex[] = {\n    {{{    -5,    -18,    -24}, 0, {     0,      0}, {0x81, 0xfe, 0x03, 0x00}}},\n    {{{    -3,    -29,     21}, 0, {     0,      0}, {0x81, 0xfe, 0x03, 0x00}}},\n    {{{    -4,     17,     26}, 0, {     0,      0}, {0x81, 0xfe, 0x03, 0x00}}},\n    {{{    52,     13,    -10}, 0, {     0,      0}, {0x51, 0x40, 0xb7, 0x00}}},\n    {{{    53,     13,     22}, 0, {     0,      0}, {0x3d, 0x63, 0x31, 0x00}}},\n    {{{    53,    -26,     19}, 0, {     0,      0}, {0x5b, 0xd0, 0x49, 0x00}}},\n    {{{    52,    -17,    -21}, 0, {     0,      0}, {0x3a, 0xac, 0xb6, 0x00}}},\n    {{{    -3,    -29,     21}, 0, {     0,      0}, {0x04, 0x85, 0xe4, 0x00}}},\n    {{{    -5,    -18,    -24}, 0, {     0,      0}, {0x03, 0x85, 0xe3, 0x00}}},\n    {{{    -5,     17,    -12}, 0, {     0,      0}, {0x09, 0x75, 0xd1, 0x00}}},\n    {{{    -4,     17,     26}, 0, {     0,      0}, {0x08, 0x7e, 0x00, 0x00}}},\n    {{{    -5,    -18,    -24}, 0, {     0,      0}, {0x06, 0x2a, 0x89, 0x00}}},\n    {{{    -4,     17,     26}, 0, {     0,      0}, {0x06, 0xf5, 0x7e, 0x00}}},\n    {{{    -3,    -29,     21}, 0, {     0,      0}, {0x06, 0xf4, 0x7e, 0x00}}},\n    {{{    -5,     17,    -12}, 0, {     0,      0}, {0x81, 0xfe, 0x03, 0x00}}},\n};\n\n// 0x04015050 - 0x040150C0\nconst Gfx mario_medium_poly_right_forearm_shared_dl[] = {\n    gsSPVertex(mario_medium_poly_right_forearm_shared_dl_vertex, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 4,  9, 10, 0x0,  3, 11,  9, 0x0),\n    gsSP2Triangles( 3,  6, 11, 0x0,  4,  3,  9, 0x0),\n    gsSP2Triangles( 5,  4, 12, 0x0,  5, 12, 13, 0x0),\n    gsSP2Triangles( 6,  5,  7, 0x0,  2, 14,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x040150C0\nstatic const Vtx mario_medium_poly_right_hand_closed_dl_vertex_group1[] = {\n    {{{    -7,     -4,     36}, 0, {     0,      0}, {0x8c, 0xcd, 0xfd, 0x00}}},\n    {{{   -26,     40,      0}, 0, {     0,      0}, {0x8c, 0xcd, 0xfd, 0x00}}},\n    {{{    -4,     -7,    -34}, 0, {     0,      0}, {0x8c, 0xcd, 0xfd, 0x00}}},\n    {{{    14,    -51,      7}, 0, {     0,      0}, {0x8c, 0xcd, 0xfd, 0x00}}},\n    {{{    81,     -8,     49}, 0, {     0,      0}, {0x36, 0xe6, 0x6f, 0x00}}},\n    {{{    42,    -20,     54}, 0, {     0,      0}, {0xd9, 0xbb, 0x62, 0x00}}},\n    {{{    54,    -42,     -4}, 0, {     0,      0}, {0x04, 0x82, 0xf6, 0x00}}},\n    {{{    52,     59,     37}, 0, {     0,      0}, {0xff, 0x55, 0x5e, 0x00}}},\n    {{{    16,     38,     35}, 0, {     0,      0}, {0xc1, 0x2d, 0x63, 0x00}}},\n    {{{    10,      3,     33}, 0, {     0,      0}, {0xc3, 0xfa, 0x6e, 0x00}}},\n    {{{   102,    -23,      0}, 0, {     0,      0}, {0x65, 0xc1, 0xd7, 0x00}}},\n    {{{    55,     84,     -8}, 0, {     0,      0}, {0x15, 0x73, 0xd1, 0x00}}},\n    {{{     7,     62,    -11}, 0, {     0,      0}, {0xa7, 0x5a, 0xf9, 0x00}}},\n    {{{    94,     43,     18}, 0, {     0,      0}, {0x6d, 0x38, 0x21, 0x00}}},\n    {{{    32,      8,    -40}, 0, {     0,      0}, {0xda, 0xe8, 0x8a, 0x00}}},\n    {{{    26,    -32,      8}, 0, {     0,      0}, {0x08, 0x82, 0xfa, 0x00}}},\n};\n\n// 0x040151C0\nstatic const Vtx mario_medium_poly_right_hand_closed_dl_vertex_group2[] = {\n    {{{    16,     38,     35}, 0, {     0,      0}, {0xc1, 0x2d, 0x63, 0x00}}},\n    {{{     7,     62,    -11}, 0, {     0,      0}, {0xa7, 0x5a, 0xf9, 0x00}}},\n    {{{    -3,     37,      3}, 0, {     0,      0}, {0xb0, 0x62, 0xf7, 0x00}}},\n    {{{    32,      8,    -40}, 0, {     0,      0}, {0xda, 0xe8, 0x8a, 0x00}}},\n    {{{    26,    -32,      8}, 0, {     0,      0}, {0x08, 0x82, 0xfa, 0x00}}},\n    {{{    14,    -51,      7}, 0, {     0,      0}, {0x4f, 0xd0, 0xaa, 0x00}}},\n    {{{    -4,     -7,    -34}, 0, {     0,      0}, {0x37, 0x10, 0x8f, 0x00}}},\n    {{{   -26,     40,      0}, 0, {     0,      0}, {0x15, 0x51, 0xa1, 0x00}}},\n    {{{   -26,     40,      0}, 0, {     0,      0}, {0x02, 0x4f, 0x62, 0x00}}},\n    {{{    -7,     -4,     36}, 0, {     0,      0}, {0x19, 0x13, 0x7a, 0x00}}},\n    {{{    14,    -51,      7}, 0, {     0,      0}, {0x36, 0xd7, 0x6b, 0x00}}},\n    {{{    55,     84,     -8}, 0, {     0,      0}, {0x15, 0x73, 0xd1, 0x00}}},\n    {{{   102,    -23,      0}, 0, {     0,      0}, {0x65, 0xc1, 0xd7, 0x00}}},\n    {{{    54,    -42,     -4}, 0, {     0,      0}, {0x04, 0x82, 0xf6, 0x00}}},\n    {{{    94,     43,     18}, 0, {     0,      0}, {0x6d, 0x38, 0x21, 0x00}}},\n    {{{    83,     30,    -39}, 0, {     0,      0}, {0x4e, 0x1c, 0xa1, 0x00}}},\n};\n\n// 0x040152C0\nstatic const Vtx mario_medium_poly_right_hand_closed_dl_vertex_group3[] = {\n    {{{   102,    -23,      0}, 0, {     0,      0}, {0x65, 0xc1, 0xd7, 0x00}}},\n    {{{    94,     43,     18}, 0, {     0,      0}, {0x6d, 0x38, 0x21, 0x00}}},\n    {{{    81,     -8,     49}, 0, {     0,      0}, {0x36, 0xe6, 0x6f, 0x00}}},\n    {{{    52,     59,     37}, 0, {     0,      0}, {0xff, 0x55, 0x5e, 0x00}}},\n    {{{    55,     84,     -8}, 0, {     0,      0}, {0x15, 0x73, 0xd1, 0x00}}},\n    {{{    32,      8,    -40}, 0, {     0,      0}, {0xda, 0xe8, 0x8a, 0x00}}},\n    {{{    83,     30,    -39}, 0, {     0,      0}, {0x4e, 0x1c, 0xa1, 0x00}}},\n    {{{    -7,     -4,     36}, 0, {     0,      0}, {0x19, 0x13, 0x7a, 0x00}}},\n    {{{    26,    -32,      8}, 0, {     0,      0}, {0x08, 0x82, 0xfa, 0x00}}},\n    {{{    10,      3,     33}, 0, {     0,      0}, {0xc3, 0xfa, 0x6e, 0x00}}},\n    {{{    -3,     37,      3}, 0, {     0,      0}, {0xb0, 0x62, 0xf7, 0x00}}},\n    {{{    13,      0,    -26}, 0, {     0,      0}, {0xf5, 0xf2, 0x83, 0x00}}},\n    {{{    -4,     -7,    -34}, 0, {     0,      0}, {0x37, 0x10, 0x8f, 0x00}}},\n    {{{    16,     38,     35}, 0, {     0,      0}, {0xc1, 0x2d, 0x63, 0x00}}},\n    {{{    42,    -20,     54}, 0, {     0,      0}, {0xd9, 0xbb, 0x62, 0x00}}},\n};\n\n// 0x040153B0 - 0x040154E0\nconst Gfx mario_medium_poly_right_hand_closed_dl[] = {\n    gsSPVertex(mario_medium_poly_right_hand_closed_dl_vertex_group1, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 5,  4,  8, 0x0,  9,  5,  8, 0x0),\n    gsSP2Triangles(10,  4,  6, 0x0,  7, 11, 12, 0x0),\n    gsSP2Triangles( 4, 13,  7, 0x0,  7, 12,  8, 0x0),\n    gsSP2Triangles(14,  6, 15, 0x0,  6,  5, 15, 0x0),\n    gsSPVertex(mario_medium_poly_right_hand_closed_dl_vertex_group2, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  7,  2, 0x0),\n    gsSP2Triangles( 2,  8,  9, 0x0,  9, 10,  4, 0x0),\n    gsSP2Triangles( 1, 11,  3, 0x0,  3, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 15, 0x0, 15, 14, 12, 0x0),\n    gsSPVertex(mario_medium_poly_right_hand_closed_dl_vertex_group3, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  4, 0x0),\n    gsSP2Triangles( 5,  6,  0, 0x0,  4,  6,  5, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11,  8, 0x0),\n    gsSP2Triangles( 5, 11, 10, 0x0, 10,  9, 13, 0x0),\n    gsSP2Triangles(14,  9,  8, 0x0,  8, 11,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x040154E0 - 0x04015500\nconst Gfx mario_medium_poly_right_hand_closed[] = {\n    gsSPLight(&mario_white_lights_group.l, 1),\n    gsSPLight(&mario_white_lights_group.a, 2),\n    gsSPDisplayList(mario_medium_poly_right_hand_closed_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04015500 - 0x04015530\nconst Gfx mario_metal_medium_poly_right_hand_closed[] = {\n    gsSPDisplayList(mario_medium_poly_right_hand_closed_dl),\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_TEXTURE_GEN),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_OFF),\n    gsSPEndDisplayList(),\n};\n\n// 0x04015530\nstatic const Vtx mario_medium_poly_left_thigh_dl_vertex[] = {\n    {{{    18,    -12,     58}, 0, {     0,      0}, {0x13, 0xdd, 0x78, 0x00}}},\n    {{{    22,    -52,      8}, 0, {     0,      0}, {0x1c, 0x85, 0x01, 0x00}}},\n    {{{    99,    -35,      8}, 0, {     0,      0}, {0x3e, 0x92, 0x01, 0x00}}},\n    {{{    14,     51,     38}, 0, {     0,      0}, {0x08, 0x75, 0x30, 0x00}}},\n    {{{    92,     47,     33}, 0, {     0,      0}, {0x36, 0x4b, 0x56, 0x00}}},\n    {{{    14,     50,    -23}, 0, {     0,      0}, {0x0a, 0x65, 0xb5, 0x00}}},\n    {{{    92,     47,    -16}, 0, {     0,      0}, {0x47, 0x55, 0xc5, 0x00}}},\n    {{{    19,    -13,    -42}, 0, {     0,      0}, {0x15, 0xdb, 0x89, 0x00}}},\n    {{{    96,     -3,    -31}, 0, {     0,      0}, {0x68, 0xf1, 0xba, 0x00}}},\n    {{{    96,     -3,     48}, 0, {     0,      0}, {0x71, 0xf8, 0x38, 0x00}}},\n    {{{    19,    -13,    -42}, 0, {     0,      0}, {0x82, 0xf7, 0xff, 0x00}}},\n    {{{    22,    -52,      8}, 0, {     0,      0}, {0x82, 0xf7, 0xff, 0x00}}},\n    {{{    18,    -12,     58}, 0, {     0,      0}, {0x82, 0xf7, 0xff, 0x00}}},\n    {{{    14,     51,     38}, 0, {     0,      0}, {0x82, 0xf7, 0xff, 0x00}}},\n    {{{    14,     50,    -23}, 0, {     0,      0}, {0x82, 0xf7, 0xff, 0x00}}},\n};\n\n// 0x04015620 - 0x040156B0\nconst Gfx mario_medium_poly_left_thigh_dl[] = {\n    gsSPVertex(mario_medium_poly_left_thigh_dl_vertex, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 5,  3,  6, 0x0,  7,  5,  6, 0x0),\n    gsSP2Triangles( 1,  7,  2, 0x0,  7,  8,  2, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  3,  4,  6, 0x0),\n    gsSP2Triangles( 0,  9,  4, 0x0,  2,  9,  0, 0x0),\n    gsSP2Triangles( 9,  2,  8, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(12, 13, 10, 0x0, 13, 14, 10, 0x0),\n    gsSP2Triangles( 8,  6,  9, 0x0,  6,  4,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x040156B0 - 0x040156E0\nconst Gfx mario_medium_poly_left_thigh[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPLight(&mario_blue_lights_group.l, 1),\n    gsSPLight(&mario_blue_lights_group.a, 2),\n    gsSPDisplayList(mario_medium_poly_left_thigh_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x040156E0 - 0x04015758\nconst Gfx mario_metal_medium_poly_left_thigh[] = {\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_TEXTURE_GEN),\n    gsDPSetCombineMode(G_CC_DECALFADE, G_CC_DECALFADE),\n    gsDPLoadTextureBlock(mario_texture_metal, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_ON),\n    gsSPLight(&mario_white_lights_group.l, 1),\n    gsSPLight(&mario_white_lights_group.a, 2),\n    gsSPDisplayList(mario_medium_poly_left_thigh_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04015758\nstatic const Vtx mario_medium_poly_left_leg_shared_dl_vertex[] = {\n    {{{     5,    -35,      9}, 0, {     0,      0}, {0xca, 0x8e, 0x00, 0x00}}},\n    {{{    65,    -44,     10}, 0, {     0,      0}, {0xee, 0x83, 0x01, 0x00}}},\n    {{{    66,     -9,     54}, 0, {     0,      0}, {0xf2, 0xdc, 0x78, 0x00}}},\n    {{{     9,     46,     33}, 0, {     0,      0}, {0xd5, 0x61, 0x45, 0x00}}},\n    {{{    69,     47,     37}, 0, {     0,      0}, {0xf9, 0x66, 0x4b, 0x00}}},\n    {{{    70,     47,    -18}, 0, {     0,      0}, {0xfb, 0x74, 0xcf, 0x00}}},\n    {{{    10,     46,    -16}, 0, {     0,      0}, {0xaf, 0x40, 0xb7, 0x00}}},\n    {{{    67,     -9,    -36}, 0, {     0,      0}, {0xf4, 0xda, 0x88, 0x00}}},\n    {{{     7,     -4,    -31}, 0, {     0,      0}, {0x9b, 0xee, 0xb6, 0x00}}},\n    {{{     7,     -4,     49}, 0, {     0,      0}, {0x8f, 0xf5, 0x37, 0x00}}},\n    {{{    66,     -9,     54}, 0, {     0,      0}, {0x7e, 0xfa, 0x01, 0x00}}},\n    {{{    65,    -44,     10}, 0, {     0,      0}, {0x7e, 0xfa, 0x01, 0x00}}},\n    {{{    67,     -9,    -36}, 0, {     0,      0}, {0x7e, 0xfa, 0x01, 0x00}}},\n    {{{    70,     47,    -18}, 0, {     0,      0}, {0x7e, 0xfa, 0x01, 0x00}}},\n    {{{    69,     47,     37}, 0, {     0,      0}, {0x7e, 0xfa, 0x01, 0x00}}},\n};\n\n// 0x04015848 - 0x040158D8\nconst Gfx mario_medium_poly_left_leg_shared_dl[] = {\n    gsSPVertex(mario_medium_poly_left_leg_shared_dl_vertex, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 0,  7,  1, 0x0,  0,  8,  7, 0x0),\n    gsSP2Triangles( 7,  8,  6, 0x0,  5,  6,  3, 0x0),\n    gsSP2Triangles( 3,  9,  2, 0x0,  2,  9,  0, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  8,  0,  9, 0x0),\n    gsSP2Triangles( 9,  6,  8, 0x0,  9,  3,  6, 0x0),\n    gsSP2Triangles(12, 13, 10, 0x0, 13, 14, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x040158D8\nstatic const Vtx mario_medium_poly_left_foot_shared_dl_vertex_group1[] = {\n    {{{   108,     10,     36}, 0, {     0,      0}, {0x2b, 0x77, 0xff, 0x00}}},\n    {{{   108,      9,    -20}, 0, {     0,      0}, {0x2b, 0x77, 0xff, 0x00}}},\n    {{{    75,     21,    -41}, 0, {     0,      0}, {0x2b, 0x77, 0xff, 0x00}}},\n    {{{    76,     22,     61}, 0, {     0,      0}, {0x2b, 0x77, 0xff, 0x00}}},\n    {{{   -14,     55,    -27}, 0, {     0,      0}, {0x2b, 0x77, 0xff, 0x00}}},\n    {{{   -13,     55,     49}, 0, {     0,      0}, {0x2b, 0x77, 0xff, 0x00}}},\n    {{{   -41,     65,      9}, 0, {     0,      0}, {0x2b, 0x77, 0xff, 0x00}}},\n    {{{    41,    -18,     54}, 0, {     0,      0}, {0x04, 0xb4, 0x65, 0x00}}},\n    {{{    76,     22,     61}, 0, {     0,      0}, {0x12, 0xdd, 0x78, 0x00}}},\n    {{{   -13,     55,     49}, 0, {     0,      0}, {0xce, 0x07, 0x74, 0x00}}},\n    {{{    42,    -11,    -33}, 0, {     0,      0}, {0xff, 0xb8, 0x98, 0x00}}},\n    {{{   -37,     12,    -16}, 0, {     0,      0}, {0xa1, 0xcf, 0xbd, 0x00}}},\n    {{{   -14,     55,    -27}, 0, {     0,      0}, {0xcc, 0x02, 0x8d, 0x00}}},\n    {{{   -36,     13,     39}, 0, {     0,      0}, {0xa0, 0xd0, 0x42, 0x00}}},\n    {{{    75,     21,    -41}, 0, {     0,      0}, {0x09, 0xda, 0x88, 0x00}}},\n    {{{   108,      9,    -20}, 0, {     0,      0}, {0x44, 0xad, 0xbe, 0x00}}},\n};\n\n// 0x040159D8\nstatic const Vtx mario_medium_poly_left_foot_shared_dl_vertex_group2[] = {\n    {{{    78,    -30,      7}, 0, {     0,      0}, {0x34, 0x8d, 0xfb, 0x00}}},\n    {{{   108,      9,    -20}, 0, {     0,      0}, {0x44, 0xad, 0xbe, 0x00}}},\n    {{{   108,     10,     36}, 0, {     0,      0}, {0x4c, 0xaf, 0x3c, 0x00}}},\n    {{{    42,    -11,    -33}, 0, {     0,      0}, {0xff, 0xb8, 0x98, 0x00}}},\n    {{{    76,     22,     61}, 0, {     0,      0}, {0x12, 0xdd, 0x78, 0x00}}},\n    {{{    41,    -18,     54}, 0, {     0,      0}, {0x04, 0xb4, 0x65, 0x00}}},\n    {{{   -36,     13,     39}, 0, {     0,      0}, {0xa0, 0xd0, 0x42, 0x00}}},\n    {{{   -13,     55,     49}, 0, {     0,      0}, {0xce, 0x07, 0x74, 0x00}}},\n    {{{   -41,     65,      9}, 0, {     0,      0}, {0x83, 0x15, 0x00, 0x00}}},\n    {{{   -14,     55,    -27}, 0, {     0,      0}, {0xcc, 0x02, 0x8d, 0x00}}},\n    {{{   -37,     12,    -16}, 0, {     0,      0}, {0xa1, 0xcf, 0xbd, 0x00}}},\n    {{{    25,    -34,     11}, 0, {     0,      0}, {0xdd, 0x87, 0xfb, 0x00}}},\n};\n\n// 0x04015A98 - 0x04015B60\nconst Gfx mario_medium_poly_left_foot_shared_dl[] = {\n    gsSPVertex(mario_medium_poly_left_foot_shared_dl_vertex_group1, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  5,  3,  4, 0x0),\n    gsSP2Triangles( 6,  5,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13,  7,  9, 0x0),\n    gsSP2Triangles(10, 12, 14, 0x0, 10, 14, 15, 0x0),\n    gsSPVertex(mario_medium_poly_left_foot_shared_dl_vertex_group2, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  5,  0,  2, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(11,  3,  0, 0x0, 10,  3, 11, 0x0),\n    gsSP2Triangles( 0,  5, 11, 0x0, 11,  5,  6, 0x0),\n    gsSP2Triangles(11,  6, 10, 0x0,  6,  8, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x04015B60 - 0x04015B80\nconst Gfx mario_medium_poly_left_foot[] = {\n    gsSPLight(&mario_brown1_lights_group.l, 1),\n    gsSPLight(&mario_brown1_lights_group.a, 2),\n    gsSPDisplayList(mario_medium_poly_left_foot_shared_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04015B80\nstatic const Vtx mario_medium_poly_right_thigh_shared_dl_vertex[] = {\n    {{{    18,    -11,    -58}, 0, {     0,      0}, {0x82, 0xf5, 0x02, 0x00}}},\n    {{{    23,    -52,     -9}, 0, {     0,      0}, {0x82, 0xf5, 0x02, 0x00}}},\n    {{{    20,    -14,     41}, 0, {     0,      0}, {0x82, 0xf5, 0x02, 0x00}}},\n    {{{    97,     -3,     30}, 0, {     0,      0}, {0x69, 0xf1, 0x45, 0x00}}},\n    {{{    99,    -33,    -10}, 0, {     0,      0}, {0x40, 0x93, 0xfc, 0x00}}},\n    {{{    95,     -1,    -49}, 0, {     0,      0}, {0x71, 0xfb, 0xc7, 0x00}}},\n    {{{    18,    -11,    -58}, 0, {     0,      0}, {0x12, 0xe0, 0x87, 0x00}}},\n    {{{    91,     49,    -33}, 0, {     0,      0}, {0x34, 0x4e, 0xab, 0x00}}},\n    {{{    92,     48,     16}, 0, {     0,      0}, {0x47, 0x55, 0x3d, 0x00}}},\n    {{{    13,     52,    -37}, 0, {     0,      0}, {0x06, 0x76, 0xd3, 0x00}}},\n    {{{    20,    -14,     41}, 0, {     0,      0}, {0x16, 0xd9, 0x76, 0x00}}},\n    {{{    23,    -52,     -9}, 0, {     0,      0}, {0x1d, 0x85, 0xfd, 0x00}}},\n    {{{    14,     50,     24}, 0, {     0,      0}, {0x0a, 0x63, 0x4d, 0x00}}},\n    {{{    13,     52,    -37}, 0, {     0,      0}, {0x82, 0xf5, 0x02, 0x00}}},\n    {{{    14,     50,     24}, 0, {     0,      0}, {0x82, 0xf5, 0x02, 0x00}}},\n};\n\n// 0x04015C70 - 0x04015D00\nconst Gfx mario_medium_poly_right_thigh_shared_dl[] = {\n    gsSPVertex(mario_medium_poly_right_thigh_shared_dl_vertex, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  5,  4, 0x0,  7,  5,  6, 0x0),\n    gsSP2Triangles( 8,  7,  9, 0x0, 10,  3,  8, 0x0),\n    gsSP2Triangles( 4,  3, 10, 0x0,  4, 10, 11, 0x0),\n    gsSP2Triangles( 8, 12, 10, 0x0,  8,  9, 12, 0x0),\n    gsSP2Triangles( 7,  6,  9, 0x0,  4, 11,  6, 0x0),\n    gsSP2Triangles( 5,  8,  3, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 2, 13,  0, 0x0,  2, 14, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x04015D00 - 0x04015D20\nconst Gfx mario_medium_poly_right_thigh[] = {\n    gsSPLight(&mario_blue_lights_group.l, 1),\n    gsSPLight(&mario_blue_lights_group.a, 2),\n    gsSPDisplayList(mario_medium_poly_right_thigh_shared_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04015D20\nstatic const Vtx mario_medium_poly_right_leg_shared_dl_vertex[] = {\n    {{{     6,     -1,    -50}, 0, {     0,      0}, {0x8e, 0xf7, 0xca, 0x00}}},\n    {{{     5,    -34,    -11}, 0, {     0,      0}, {0xc9, 0x8e, 0xfe, 0x00}}},\n    {{{     7,     -4,     30}, 0, {     0,      0}, {0x9b, 0xed, 0x4a, 0x00}}},\n    {{{    67,     -9,     34}, 0, {     0,      0}, {0x7e, 0xf9, 0xfe, 0x00}}},\n    {{{    64,    -43,    -12}, 0, {     0,      0}, {0x7e, 0xf9, 0xfe, 0x00}}},\n    {{{    66,     -7,    -56}, 0, {     0,      0}, {0x7e, 0xf9, 0xfe, 0x00}}},\n    {{{    66,     -7,    -56}, 0, {     0,      0}, {0xf1, 0xde, 0x87, 0x00}}},\n    {{{    10,     48,    -33}, 0, {     0,      0}, {0xd6, 0x63, 0xbe, 0x00}}},\n    {{{    10,     46,     16}, 0, {     0,      0}, {0xb1, 0x3f, 0x4b, 0x00}}},\n    {{{    71,     47,     18}, 0, {     0,      0}, {0xfd, 0x73, 0x33, 0x00}}},\n    {{{    67,     -9,     34}, 0, {     0,      0}, {0xf4, 0xd8, 0x77, 0x00}}},\n    {{{    64,    -43,    -12}, 0, {     0,      0}, {0xec, 0x83, 0xfd, 0x00}}},\n    {{{    70,     49,    -37}, 0, {     0,      0}, {0xfa, 0x67, 0xb8, 0x00}}},\n    {{{    71,     47,     18}, 0, {     0,      0}, {0x7e, 0xf9, 0xfe, 0x00}}},\n    {{{    70,     49,    -37}, 0, {     0,      0}, {0x7e, 0xf9, 0xfe, 0x00}}},\n};\n\n// 0x04015E10 - 0x04015EA0\nconst Gfx mario_medium_poly_right_leg_shared_dl[] = {\n    gsSPVertex(mario_medium_poly_right_leg_shared_dl_vertex, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 1,  0,  6, 0x0,  6,  0,  7, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  8,  2, 10, 0x0),\n    gsSP2Triangles(10,  2,  1, 0x0, 11, 10,  1, 0x0),\n    gsSP2Triangles(10,  9,  8, 0x0,  9, 12,  7, 0x0),\n    gsSP2Triangles(12,  6,  7, 0x0,  6, 11,  1, 0x0),\n    gsSP2Triangles( 5, 13,  3, 0x0,  5, 14, 13, 0x0),\n    gsSP2Triangles( 2,  8,  0, 0x0,  8,  7,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x04015EA0\nstatic const Vtx mario_medium_poly_right_foot_dl_vertex_group1[] = {\n    {{{   -38,     12,     14}, 0, {     0,      0}, {0xa1, 0xcf, 0x43, 0x00}}},\n    {{{   -43,     65,    -12}, 0, {     0,      0}, {0x83, 0x13, 0xff, 0x00}}},\n    {{{   -36,     12,    -41}, 0, {     0,      0}, {0xa1, 0xce, 0xbe, 0x00}}},\n    {{{    25,    -34,    -11}, 0, {     0,      0}, {0xdf, 0x86, 0x07, 0x00}}},\n    {{{    41,    -18,    -55}, 0, {     0,      0}, {0x07, 0xb3, 0x9c, 0x00}}},\n    {{{    79,    -29,     -7}, 0, {     0,      0}, {0x36, 0x8e, 0x08, 0x00}}},\n    {{{    42,    -10,     32}, 0, {     0,      0}, {0xff, 0xba, 0x69, 0x00}}},\n    {{{   -15,     55,     24}, 0, {     0,      0}, {0xcb, 0x04, 0x73, 0x00}}},\n    {{{   -14,     54,    -51}, 0, {     0,      0}, {0xcf, 0x04, 0x8c, 0x00}}},\n    {{{   108,     11,    -36}, 0, {     0,      0}, {0x4e, 0xb0, 0xc6, 0x00}}},\n    {{{    76,     23,    -62}, 0, {     0,      0}, {0x14, 0xdb, 0x89, 0x00}}},\n    {{{   107,     12,     20}, 0, {     0,      0}, {0x45, 0xaf, 0x44, 0x00}}},\n    {{{    74,     24,     40}, 0, {     0,      0}, {0x08, 0xdc, 0x79, 0x00}}},\n    {{{   -15,     55,     24}, 0, {     0,      0}, {0x29, 0x77, 0x00, 0x00}}},\n    {{{   -14,     54,    -51}, 0, {     0,      0}, {0x29, 0x77, 0x00, 0x00}}},\n    {{{   -43,     65,    -12}, 0, {     0,      0}, {0x29, 0x77, 0x00, 0x00}}},\n};\n\n// 0x04015FA0\nstatic const Vtx mario_medium_poly_right_foot_dl_vertex_group2[] = {\n    {{{   -15,     55,     24}, 0, {     0,      0}, {0x29, 0x77, 0x00, 0x00}}},\n    {{{    76,     23,    -62}, 0, {     0,      0}, {0x29, 0x77, 0x00, 0x00}}},\n    {{{   -14,     54,    -51}, 0, {     0,      0}, {0x29, 0x77, 0x00, 0x00}}},\n    {{{    74,     24,     40}, 0, {     0,      0}, {0x29, 0x77, 0x00, 0x00}}},\n    {{{   108,     11,    -36}, 0, {     0,      0}, {0x29, 0x77, 0x00, 0x00}}},\n    {{{   107,     12,     20}, 0, {     0,      0}, {0x29, 0x77, 0x00, 0x00}}},\n};\n\n// 0x04016000 - 0x040160C8\nconst Gfx mario_medium_poly_right_foot_dl[] = {\n    gsSPVertex(mario_medium_poly_right_foot_dl_vertex_group1, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 2,  4,  3, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  0, 0x0,  5,  6,  3, 0x0),\n    gsSP2Triangles( 0,  7,  1, 0x0,  1,  8,  2, 0x0),\n    gsSP2Triangles( 9,  5,  4, 0x0,  4, 10,  9, 0x0),\n    gsSP2Triangles( 6,  5, 11, 0x0,  9, 11,  5, 0x0),\n    gsSP2Triangles(11, 12,  6, 0x0, 12,  7,  6, 0x0),\n    gsSP2Triangles( 8,  4,  2, 0x0,  7,  0,  6, 0x0),\n    gsSP2Triangles( 8, 10,  4, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(mario_medium_poly_right_foot_dl_vertex_group2, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 3,  4,  1, 0x0,  3,  5,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x040160C8 - 0x04016108\nconst Gfx mario_medium_poly_right_foot[] = {\n    gsSPLight(&mario_brown1_lights_group.l, 1),\n    gsSPLight(&mario_brown1_lights_group.a, 2),\n    gsSPDisplayList(mario_medium_poly_right_foot_dl),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsDPSetAlphaCompare(G_AC_NONE),\n    gsSPEndDisplayList(),\n};\n\n// 0x04016108 - 0x04016148\nconst Gfx mario_metal_medium_poly_right_foot[] = {\n    gsSPDisplayList(mario_medium_poly_right_foot_dl),\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_TEXTURE_GEN),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsDPSetAlphaCompare(G_AC_NONE),\n    gsSPEndDisplayList(),\n};\n\n// 0x04016148\nstatic const Vtx mario_seg4_vertex_04016148[] = {\n    {{{    75,     24,    -60}, 0, {   -74,   -930}, {0x60, 0x27, 0xb8, 0xff}}},\n    {{{    36,     47,    -76}, 0, {  -174,    168}, {0x2e, 0x36, 0x98, 0xff}}},\n    {{{    44,     78,    -35}, 0, {   988,     92}, {0x45, 0x65, 0xe2, 0xff}}},\n    {{{   -26,     49,    -87}, 0, {  -538,   1590}, {0xc4, 0x29, 0x99, 0xff}}},\n    {{{     1,     87,    -53}, 0, {   638,   1164}, {0x0e, 0x74, 0xd1, 0xff}}},\n    {{{     1,     87,     54}, 0, {  2522,    702}, {0x11, 0x74, 0x2f, 0xff}}},\n    {{{     1,     87,     54}, 0, {   272,   1122}, {0x11, 0x74, 0x2f, 0xff}}},\n    {{{    44,     78,     37}, 0, {   -92,    108}, {0x47, 0x5f, 0x2a, 0xff}}},\n    {{{    44,     78,    -35}, 0, { -1398,   -128}, {0x45, 0x65, 0xe2, 0xff}}},\n    {{{   -26,     49,     88}, 0, {  1514,   1490}, {0xc4, 0x29, 0x67, 0xff}}},\n    {{{    36,     47,     77}, 0, {  1110,    130}, {0x2f, 0x37, 0x68, 0xff}}},\n    {{{    75,     24,     60}, 0, {   968,   -926}, {0x62, 0x27, 0x46, 0xff}}},\n};\n\n// 0x04016208\nstatic const Vtx mario_seg4_vertex_04016208[] = {\n    {{{    82,     37,     28}, 0, {     0,      0}, {0x71, 0x36, 0x0e, 0xff}}},\n    {{{    82,     37,    -28}, 0, {     0,      0}, {0x71, 0x35, 0xea, 0xff}}},\n    {{{    44,     78,    -35}, 0, {     0,      0}, {0x45, 0x65, 0xe2, 0xff}}},\n    {{{    44,     78,     37}, 0, {     0,      0}, {0x47, 0x5f, 0x2a, 0xff}}},\n    {{{    95,    -39,    -25}, 0, {     0,      0}, {0x79, 0xe6, 0xe8, 0xff}}},\n    {{{    95,    -39,     25}, 0, {     0,      0}, {0x75, 0xdb, 0x1d, 0xff}}},\n    {{{    54,    -68,      0}, 0, {     0,      0}, {0x2d, 0x8a, 0x00, 0xff}}},\n    {{{    56,     -4,     79}, 0, {     0,      0}, {0x39, 0x04, 0x71, 0xff}}},\n    {{{    75,     24,     60}, 0, {     0,      0}, {0x62, 0x27, 0x46, 0xff}}},\n    {{{    36,     47,     77}, 0, {     0,      0}, {0x2f, 0x37, 0x68, 0xff}}},\n    {{{     9,      0,     94}, 0, {     0,      0}, {0x0e, 0x03, 0x7e, 0xff}}},\n    {{{    22,    -41,     87}, 0, {     0,      0}, {0x1f, 0xc9, 0x6d, 0xff}}},\n    {{{    83,    -29,     58}, 0, {     0,      0}, {0x54, 0xc8, 0x4c, 0xff}}},\n    {{{    83,    -29,    -58}, 0, {     0,      0}, {0x52, 0xc9, 0xb2, 0xff}}},\n    {{{    40,    -66,    -47}, 0, {     0,      0}, {0x1d, 0x91, 0xcb, 0xff}}},\n    {{{    22,    -41,    -86}, 0, {     0,      0}, {0x1e, 0xca, 0x92, 0xff}}},\n};\n\n// 0x04016308\nstatic const Vtx mario_seg4_vertex_04016308[] = {\n    {{{    36,     47,    -76}, 0, {     0,      0}, {0x2e, 0x36, 0x98, 0xff}}},\n    {{{    75,     24,    -60}, 0, {     0,      0}, {0x60, 0x27, 0xb8, 0xff}}},\n    {{{    56,     -4,    -77}, 0, {     0,      0}, {0x38, 0x04, 0x8f, 0xff}}},\n    {{{     9,      0,    -93}, 0, {     0,      0}, {0x0e, 0x03, 0x82, 0xff}}},\n    {{{    83,    -29,    -58}, 0, {     0,      0}, {0x52, 0xc9, 0xb2, 0xff}}},\n    {{{    22,    -41,    -86}, 0, {     0,      0}, {0x1e, 0xca, 0x92, 0xff}}},\n    {{{    22,    -41,     87}, 0, {     0,      0}, {0x1f, 0xc9, 0x6d, 0xff}}},\n    {{{    40,    -66,     48}, 0, {     0,      0}, {0x1d, 0x91, 0x35, 0xff}}},\n    {{{    83,    -29,     58}, 0, {     0,      0}, {0x54, 0xc8, 0x4c, 0xff}}},\n};\n\n// 0x04016398\nstatic const Vtx mario_seg4_vertex_04016398[] = {\n    {{{    83,    -29,    -58}, 0, {     0,      0}, {0x52, 0xc9, 0xb2, 0xff}}},\n    {{{    95,    -39,    -25}, 0, {     0,      0}, {0x79, 0xe6, 0xe8, 0xff}}},\n    {{{    54,    -68,      0}, 0, {     0,      0}, {0x2d, 0x8a, 0x00, 0xff}}},\n    {{{    75,     24,    -60}, 0, {     0,      0}, {0x60, 0x27, 0xb8, 0xff}}},\n    {{{    82,     37,    -28}, 0, {     0,      0}, {0x71, 0x35, 0xea, 0xff}}},\n    {{{    40,    -66,    -47}, 0, {     0,      0}, {0x1d, 0x91, 0xcb, 0xff}}},\n    {{{    44,     78,    -35}, 0, {     0,      0}, {0x45, 0x65, 0xe2, 0xff}}},\n    {{{    75,     24,     60}, 0, {     0,      0}, {0x62, 0x27, 0x46, 0xff}}},\n    {{{    82,     37,     28}, 0, {     0,      0}, {0x71, 0x36, 0x0e, 0xff}}},\n    {{{    44,     78,     37}, 0, {     0,      0}, {0x47, 0x5f, 0x2a, 0xff}}},\n    {{{    83,    -29,     58}, 0, {     0,      0}, {0x54, 0xc8, 0x4c, 0xff}}},\n    {{{    95,    -39,     25}, 0, {     0,      0}, {0x75, 0xdb, 0x1d, 0xff}}},\n    {{{    40,    -66,     48}, 0, {     0,      0}, {0x1d, 0x91, 0x35, 0xff}}},\n    {{{     1,     87,    -53}, 0, {     0,      0}, {0x0e, 0x74, 0xd1, 0xff}}},\n    {{{   -30,     88,     42}, 0, {     0,      0}, {0xd3, 0x72, 0x1f, 0xff}}},\n    {{{     1,     87,     54}, 0, {     0,      0}, {0x11, 0x74, 0x2f, 0xff}}},\n};\n\n// 0x04016498\nstatic const Vtx mario_seg4_vertex_04016498[] = {\n    {{{     1,     87,    -53}, 0, {     0,      0}, {0x0e, 0x74, 0xd1, 0xff}}},\n    {{{   -30,     88,    -41}, 0, {     0,      0}, {0xc7, 0x6a, 0xda, 0xff}}},\n    {{{   -30,     88,     42}, 0, {     0,      0}, {0xd3, 0x72, 0x1f, 0xff}}},\n    {{{   -26,     49,    -87}, 0, {     0,      0}, {0xc4, 0x29, 0x99, 0xff}}},\n    {{{   -71,     56,      0}, 0, {     0,      0}, {0x89, 0x2b, 0x00, 0xff}}},\n    {{{   -26,     49,     88}, 0, {     0,      0}, {0xc4, 0x29, 0x67, 0xff}}},\n    {{{     1,     87,     54}, 0, {     0,      0}, {0x11, 0x74, 0x2f, 0xff}}},\n    {{{   -59,    -44,      0}, 0, {     0,      0}, {0x88, 0xd8, 0x00, 0xff}}},\n    {{{   -26,    -72,    -38}, 0, {     0,      0}, {0xda, 0x8b, 0xe5, 0xff}}},\n    {{{   -26,    -72,     39}, 0, {     0,      0}, {0xda, 0x8b, 0x1b, 0xff}}},\n    {{{   -26,    -41,     85}, 0, {     0,      0}, {0xcc, 0xc2, 0x61, 0xff}}},\n    {{{   -26,    -41,    -84}, 0, {     0,      0}, {0xcc, 0xc2, 0x9f, 0xff}}},\n    {{{    40,    -66,     48}, 0, {     0,      0}, {0x1d, 0x91, 0x35, 0xff}}},\n    {{{    22,    -41,     87}, 0, {     0,      0}, {0x1f, 0xc9, 0x6d, 0xff}}},\n    {{{     9,      0,     94}, 0, {     0,      0}, {0x0e, 0x03, 0x7e, 0xff}}},\n    {{{    54,    -68,      0}, 0, {     0,      0}, {0x2d, 0x8a, 0x00, 0xff}}},\n};\n\n// 0x04016598\nstatic const Vtx mario_seg4_vertex_04016598[] = {\n    {{{   -26,     49,     88}, 0, {     0,      0}, {0xc4, 0x29, 0x67, 0xff}}},\n    {{{     9,      0,     94}, 0, {     0,      0}, {0x0e, 0x03, 0x7e, 0xff}}},\n    {{{    36,     47,     77}, 0, {     0,      0}, {0x2f, 0x37, 0x68, 0xff}}},\n    {{{     9,      0,    -93}, 0, {     0,      0}, {0x0e, 0x03, 0x82, 0xff}}},\n    {{{   -26,     49,    -87}, 0, {     0,      0}, {0xc4, 0x29, 0x99, 0xff}}},\n    {{{    36,     47,    -76}, 0, {     0,      0}, {0x2e, 0x36, 0x98, 0xff}}},\n    {{{   -26,    -41,    -84}, 0, {     0,      0}, {0xcc, 0xc2, 0x9f, 0xff}}},\n    {{{    22,    -41,    -86}, 0, {     0,      0}, {0x1e, 0xca, 0x92, 0xff}}},\n    {{{    40,    -66,    -47}, 0, {     0,      0}, {0x1d, 0x91, 0xcb, 0xff}}},\n    {{{   -26,    -72,    -38}, 0, {     0,      0}, {0xda, 0x8b, 0xe5, 0xff}}},\n    {{{    54,    -68,      0}, 0, {     0,      0}, {0x2d, 0x8a, 0x00, 0xff}}},\n    {{{   -26,    -72,     39}, 0, {     0,      0}, {0xda, 0x8b, 0x1b, 0xff}}},\n    {{{    40,    -66,     48}, 0, {     0,      0}, {0x1d, 0x91, 0x35, 0xff}}},\n};\n\n// 0x04016668 - 0x040166B8\nconst Gfx mario_medium_poly_yellow_button_dl[] = {\n    gsSPVertex(mario_seg4_vertex_04016148, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  4,  5,  2, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10,  6, 0x0),\n    gsSP2Triangles( 6, 10,  7, 0x0,  7, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x040166B8 - 0x04016800\nconst Gfx mario_medium_poly_pants_overalls_shared_dl[] = {\n    gsSPVertex(mario_seg4_vertex_04016398, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 3,  4,  1, 0x0,  2,  5,  0, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10, 11, 0x0,  8,  7, 11, 0x0),\n    gsSP2Triangles(11, 10,  2, 0x0, 10, 12,  2, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(mario_seg4_vertex_04016498, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  2,  1, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 5,  2,  4, 0x0,  6,  2,  5, 0x0),\n    gsSP2Triangles( 4,  3,  7, 0x0,  8,  9,  7, 0x0),\n    gsSP2Triangles( 5,  4,  7, 0x0,  9, 10,  7, 0x0),\n    gsSP2Triangles(11,  8,  7, 0x0,  3, 11,  7, 0x0),\n    gsSP2Triangles( 7, 10,  5, 0x0, 10,  9, 12, 0x0),\n    gsSP2Triangles(10, 13, 14, 0x0, 12, 13, 10, 0x0),\n    gsSP2Triangles( 5, 10, 14, 0x0,  9,  8, 15, 0x0),\n    gsSPVertex(mario_seg4_vertex_04016598, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  4,  3, 0x0,  6,  3,  7, 0x0),\n    gsSP2Triangles( 8,  9,  6, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0, 11, 10, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x04016800 - 0x040168A0\nconst Gfx mario_medium_poly_tshirt_shared_dl[] = {\n    gsSPVertex(mario_seg4_vertex_04016208, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 1,  0,  4, 0x0,  0,  5,  4, 0x0),\n    gsSP2Triangles( 6,  4,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0,  7, 10, 11, 0x0),\n    gsSP2Triangles( 7, 12,  8, 0x0, 11, 12,  7, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(mario_seg4_vertex_04016308, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 5,  3,  2, 0x0,  6,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x040168A0 - 0x040168C8\nconst Gfx mario_medium_poly_torso_dl[] = {\n    gsSPDisplayList(mario_medium_poly_pants_overalls_shared_dl),\n    gsSPLight(&mario_red_lights_group.l, 1),\n    gsSPLight(&mario_red_lights_group.a, 2),\n    gsSPDisplayList(mario_medium_poly_tshirt_shared_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x040168C8 - 0x04016948\nconst Gfx mario_medium_poly_torso[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_yellow_button),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_medium_poly_yellow_button_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(mario_medium_poly_torso_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04016948 - 0x04016968\nconst Gfx mario_metal_medium_poly_torso[] = {\n    gsSPDisplayList(mario_medium_poly_yellow_button_dl),\n    gsSPDisplayList(mario_medium_poly_pants_overalls_shared_dl),\n    gsSPDisplayList(mario_medium_poly_tshirt_shared_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04016968\nstatic const Vtx mario_low_poly_butt_dl_vertex[] = {\n    {{{   -37,    -37,      0}, 0, {     0,      0}, {0x82, 0xf5, 0x00, 0x00}}},\n    {{{    -2,     52,     92}, 0, {     0,      0}, {0xb1, 0x3c, 0x4e, 0x00}}},\n    {{{   -35,     55,      0}, 0, {     0,      0}, {0x97, 0x45, 0x00, 0x00}}},\n    {{{    -7,    -86,     85}, 0, {     0,      0}, {0xbf, 0xc4, 0x5a, 0x00}}},\n    {{{    49,     46,     96}, 0, {     0,      0}, {0x4b, 0x1d, 0x61, 0x00}}},\n    {{{    -7,    -86,    -85}, 0, {     0,      0}, {0xcf, 0xaa, 0xb2, 0x00}}},\n    {{{    -2,     52,    -92}, 0, {     0,      0}, {0xb0, 0x3b, 0xb2, 0x00}}},\n    {{{    48,     44,    -98}, 0, {     0,      0}, {0x29, 0x22, 0x8e, 0x00}}},\n    {{{    46,    -71,    -89}, 0, {     0,      0}, {0x73, 0xd9, 0xdd, 0x00}}},\n    {{{    46,    -71,     89}, 0, {     0,      0}, {0x44, 0xa1, 0x2f, 0x00}}},\n    {{{    49,     96,      0}, 0, {     0,      0}, {0x2b, 0x77, 0x00, 0x00}}},\n};\n\n// 0x04016A18 - 0x04016AB8\nconst Gfx mario_low_poly_butt_dl[] = {\n    gsSPVertex(mario_low_poly_butt_dl_vertex, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  0,  2,  6, 0x0),\n    gsSP2Triangles( 6,  5,  0, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 7,  8,  5, 0x0,  3,  9,  4, 0x0),\n    gsSP2Triangles( 8,  7, 10, 0x0,  4,  9,  8, 0x0),\n    gsSP2Triangles( 5,  9,  3, 0x0,  3,  0,  5, 0x0),\n    gsSP2Triangles( 5,  8,  9, 0x0, 10,  7,  6, 0x0),\n    gsSP2Triangles(10,  4,  8, 0x0,  2,  1, 10, 0x0),\n    gsSP2Triangles( 6,  2, 10, 0x0,  1,  4, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x04016AB8 - 0x04016AE8\nconst Gfx mario_low_poly_butt[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPLight(&mario_blue_lights_group.l, 1),\n    gsSPLight(&mario_blue_lights_group.a, 2),\n    gsSPDisplayList(mario_low_poly_butt_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04016AE8 - 0x04016B60\nconst Gfx mario_metal_low_poly_butt[] = {\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_TEXTURE_GEN),\n    gsDPSetCombineMode(G_CC_DECALFADE, G_CC_DECALFADE),\n    gsDPLoadTextureBlock(mario_texture_metal, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_ON),\n    gsSPLight(&mario_white_lights_group.l, 1),\n    gsSPLight(&mario_white_lights_group.a, 2),\n    gsSPDisplayList(mario_low_poly_butt_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04016B60\nstatic const Vtx mario_low_poly_left_arm_shared_dl_vertex[] = {\n    {{{    -6,     28,     10}, 0, {     0,      0}, {0x09, 0x65, 0xb5, 0x00}}},\n    {{{    72,     21,      8}, 0, {     0,      0}, {0x44, 0x4d, 0x48, 0x00}}},\n    {{{    71,    -11,    -34}, 0, {     0,      0}, {0x3f, 0x57, 0xbe, 0x00}}},\n    {{{    -8,    -30,     31}, 0, {     0,      0}, {0x09, 0x26, 0x78, 0x00}}},\n    {{{    71,    -30,     23}, 0, {     0,      0}, {0x5e, 0x15, 0x51, 0x00}}},\n    {{{    -6,     28,     10}, 0, {     0,      0}, {0x07, 0x29, 0x77, 0x00}}},\n    {{{    -8,     -7,    -41}, 0, {     0,      0}, {0x0b, 0x67, 0xb8, 0x00}}},\n    {{{    -8,    -30,     31}, 0, {     0,      0}, {0xa4, 0xad, 0xe5, 0x00}}},\n    {{{    -6,     28,     10}, 0, {     0,      0}, {0x81, 0x02, 0x00, 0x00}}},\n    {{{    -8,     -7,    -41}, 0, {     0,      0}, {0xa4, 0xad, 0xe5, 0x00}}},\n    {{{    71,    -11,    -34}, 0, {     0,      0}, {0xfd, 0x88, 0xd9, 0x00}}},\n    {{{    71,    -30,     23}, 0, {     0,      0}, {0xfd, 0x88, 0xd9, 0x00}}},\n};\n\n// 0x04016C20 - 0x04016C70\nconst Gfx mario_low_poly_left_arm_shared_dl[] = {\n    gsSPVertex(mario_low_poly_left_arm_shared_dl_vertex, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 5,  3,  1, 0x0,  6,  0,  2, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  2,  1,  4, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  7, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x04016C70 - 0x04016C90\nconst Gfx mario_low_poly_left_arm[] = {\n    gsSPLight(&mario_red_lights_group.l, 1),\n    gsSPLight(&mario_red_lights_group.a, 2),\n    gsSPDisplayList(mario_low_poly_left_arm_shared_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04016C90\nstatic const Vtx mario_low_poly_left_forearm_shared_dl_vertex[] = {\n    {{{    -5,     20,      6}, 0, {     0,      0}, {0x05, 0x62, 0xb0, 0x00}}},\n    {{{    67,     16,      5}, 0, {     0,      0}, {0x43, 0x4b, 0x4c, 0x00}}},\n    {{{    67,    -14,    -31}, 0, {     0,      0}, {0x3c, 0x55, 0xba, 0x00}}},\n    {{{    -5,    -30,     21}, 0, {     0,      0}, {0x05, 0x20, 0x7a, 0x00}}},\n    {{{    67,    -30,     17}, 0, {     0,      0}, {0x5c, 0x14, 0x54, 0x00}}},\n    {{{    -5,     20,      6}, 0, {     0,      0}, {0x04, 0x22, 0x7a, 0x00}}},\n    {{{    -5,    -12,    -35}, 0, {     0,      0}, {0x07, 0x63, 0xb2, 0x00}}},\n    {{{    -5,    -30,     21}, 0, {     0,      0}, {0xa5, 0xad, 0xe5, 0x00}}},\n    {{{    -5,     20,      6}, 0, {     0,      0}, {0x81, 0x01, 0x00, 0x00}}},\n    {{{    -5,    -12,    -35}, 0, {     0,      0}, {0xa5, 0xad, 0xe5, 0x00}}},\n    {{{    67,    -30,     17}, 0, {     0,      0}, {0xfe, 0x88, 0xd9, 0x00}}},\n    {{{    67,    -14,    -31}, 0, {     0,      0}, {0xfe, 0x88, 0xd9, 0x00}}},\n};\n\n// 0x04016D50 - 0x04016DA0\nconst Gfx mario_low_poly_left_forearm_shared_dl[] = {\n    gsSPVertex(mario_low_poly_left_forearm_shared_dl_vertex, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 5,  3,  1, 0x0,  6,  0,  2, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  2,  1,  4, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0, 10,  9, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x04016DA0\nstatic const Vtx mario_low_poly_left_hand_closed_shared_dl_vertex[] = {\n    {{{    -6,     34,    -25}, 0, {     0,      0}, {0xa0, 0x13, 0xb0, 0x00}}},\n    {{{    -9,     39,     24}, 0, {     0,      0}, {0xb3, 0x43, 0x4a, 0x00}}},\n    {{{    91,     80,    -34}, 0, {     0,      0}, {0x13, 0x7c, 0xee, 0x00}}},\n    {{{    90,     35,     33}, 0, {     0,      0}, {0x41, 0x14, 0x6b, 0x00}}},\n    {{{    20,    -34,     21}, 0, {     0,      0}, {0xd4, 0x9a, 0x3c, 0x00}}},\n    {{{   122,      4,    -45}, 0, {     0,      0}, {0x63, 0xbb, 0x25, 0x00}}},\n    {{{   122,      4,    -45}, 0, {     0,      0}, {0xf2, 0x15, 0x84, 0x00}}},\n    {{{    20,    -31,    -44}, 0, {     0,      0}, {0xcb, 0xae, 0xb1, 0x00}}},\n};\n\n// 0x04016E20 - 0x04016E80\nconst Gfx mario_low_poly_left_hand_closed_shared_dl[] = {\n    gsSPVertex(mario_low_poly_left_hand_closed_shared_dl_vertex, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  3, 0x0,  0,  6,  7, 0x0),\n    gsSP2Triangles( 0,  2,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 3,  1,  4, 0x0,  2,  3,  5, 0x0),\n    gsSP2Triangles( 0,  7,  4, 0x0,  4,  1,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x04016E80 - 0x04016EA0\nconst Gfx mario_low_poly_left_hand_closed[] = {\n    gsSPLight(&mario_white_lights_group.l, 1),\n    gsSPLight(&mario_white_lights_group.a, 2),\n    gsSPDisplayList(mario_low_poly_left_hand_closed_shared_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04016EA0\nstatic const Vtx mario_low_poly_right_arm_shared_dl_vertex[] = {\n    {{{    65,     30,     23}, 0, {     0,      0}, {0x5e, 0xeb, 0x51, 0x00}}},\n    {{{    66,    -21,      8}, 0, {     0,      0}, {0x45, 0xb3, 0x49, 0x00}}},\n    {{{    65,     11,    -34}, 0, {     0,      0}, {0x40, 0xa9, 0xbf, 0x00}}},\n    {{{   -10,      7,    -41}, 0, {     0,      0}, {0xa4, 0x52, 0xe5, 0x00}}},\n    {{{    -9,    -28,     10}, 0, {     0,      0}, {0x81, 0xfe, 0x00, 0x00}}},\n    {{{   -10,     30,     30}, 0, {     0,      0}, {0xa4, 0x52, 0xe5, 0x00}}},\n    {{{    -9,    -28,     10}, 0, {     0,      0}, {0x09, 0x9a, 0xb6, 0x00}}},\n    {{{   -10,      7,    -41}, 0, {     0,      0}, {0x0c, 0x99, 0xb8, 0x00}}},\n    {{{   -10,     30,     30}, 0, {     0,      0}, {0x0a, 0xdb, 0x78, 0x00}}},\n    {{{    -9,    -28,     10}, 0, {     0,      0}, {0x07, 0xd8, 0x78, 0x00}}},\n    {{{    65,     30,     23}, 0, {     0,      0}, {0xfc, 0x78, 0xd9, 0x00}}},\n    {{{    65,     11,    -34}, 0, {     0,      0}, {0xfc, 0x78, 0xd9, 0x00}}},\n};\n\n// 0x04016F60 - 0x04016FB0\nconst Gfx mario_low_poly_right_arm_shared_dl[] = {\n    gsSPVertex(mario_low_poly_right_arm_shared_dl_vertex, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 2,  6,  7, 0x0,  1,  8,  9, 0x0),\n    gsSP2Triangles( 1,  0,  8, 0x0,  2,  1,  6, 0x0),\n    gsSP2Triangles( 5, 10, 11, 0x0,  5, 11,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x04016FB0 - 0x04016FD0\nconst Gfx mario_low_poly_right_arm[] = {\n    gsSPLight(&mario_red_lights_group.l, 1),\n    gsSPLight(&mario_red_lights_group.a, 2),\n    gsSPDisplayList(mario_low_poly_right_arm_shared_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04016FD0\nstatic const Vtx mario_low_poly_right_forearm_shared_dl_vertex[] = {\n    {{{   -13,     12,    -35}, 0, {     0,      0}, {0xa5, 0x53, 0xe5, 0x00}}},\n    {{{   -13,    -20,      6}, 0, {     0,      0}, {0x81, 0xff, 0x00, 0x00}}},\n    {{{   -13,     30,     21}, 0, {     0,      0}, {0xa5, 0x53, 0xe5, 0x00}}},\n    {{{    54,     14,    -31}, 0, {     0,      0}, {0x3d, 0xaa, 0xba, 0x00}}},\n    {{{   -13,    -20,      6}, 0, {     0,      0}, {0x05, 0x9e, 0xb1, 0x00}}},\n    {{{   -13,     12,    -35}, 0, {     0,      0}, {0x07, 0x9c, 0xb3, 0x00}}},\n    {{{    55,    -16,      5}, 0, {     0,      0}, {0x43, 0xb5, 0x4c, 0x00}}},\n    {{{   -13,     30,     21}, 0, {     0,      0}, {0x05, 0xe0, 0x7a, 0x00}}},\n    {{{   -13,    -20,      6}, 0, {     0,      0}, {0x04, 0xde, 0x7a, 0x00}}},\n    {{{    54,     30,     17}, 0, {     0,      0}, {0x5c, 0xed, 0x54, 0x00}}},\n    {{{    54,     30,     17}, 0, {     0,      0}, {0xfe, 0x78, 0xd8, 0x00}}},\n    {{{    54,     14,    -31}, 0, {     0,      0}, {0xfe, 0x78, 0xd8, 0x00}}},\n};\n\n// 0x04017090 - 0x040170E0\nconst Gfx mario_low_poly_right_forearm_shared_dl[] = {\n    gsSPVertex(mario_low_poly_right_forearm_shared_dl_vertex, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  2, 10, 11, 0x0),\n    gsSP2Triangles( 2, 11,  0, 0x0,  9,  6,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x040170E0\nstatic const Vtx mario_low_poly_right_hand_closed_dl_vertex[] = {\n    {{{    85,    -38,    -32}, 0, {     0,      0}, {0x3d, 0xe3, 0x96, 0x00}}},\n    {{{   -15,    -35,    -22}, 0, {     0,      0}, {0x99, 0xdc, 0xc1, 0x00}}},\n    {{{    17,     37,    -22}, 0, {     0,      0}, {0xfe, 0x69, 0xb9, 0x00}}},\n    {{{   116,    -10,     36}, 0, {     0,      0}, {0x66, 0x47, 0x16, 0x00}}},\n    {{{    82,    -85,     44}, 0, {     0,      0}, {0x13, 0x8a, 0xd8, 0x00}}},\n    {{{   -15,    -35,     43}, 0, {     0,      0}, {0x9d, 0xec, 0x4c, 0x00}}},\n    {{{    82,    -85,     44}, 0, {     0,      0}, {0x02, 0x15, 0x7d, 0x00}}},\n    {{{    14,     30,     26}, 0, {     0,      0}, {0xca, 0x50, 0x51, 0x00}}},\n};\n\n// 0x04017160 - 0x040171C0\nconst Gfx mario_low_poly_right_hand_closed_dl[] = {\n    gsSPVertex(mario_low_poly_right_hand_closed_dl_vertex, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  0,  3, 0x0,  4,  5,  1, 0x0),\n    gsSP2Triangles( 6,  3,  7, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  3,  2,  7, 0x0),\n    gsSP2Triangles( 1,  5,  7, 0x0,  7,  2,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x040171C0 - 0x040171E0\nconst Gfx mario_low_poly_right_hand_closed[] = {\n    gsSPLight(&mario_white_lights_group.l, 1),\n    gsSPLight(&mario_white_lights_group.a, 2),\n    gsSPDisplayList(mario_low_poly_right_hand_closed_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x040171E0 - 0x04017210\nconst Gfx mario_metal_low_poly_right_hand_closed[] = {\n    gsSPDisplayList(mario_low_poly_right_hand_closed_dl),\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_TEXTURE_GEN),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_OFF),\n    gsSPEndDisplayList(),\n};\n\n// 0x04017210\nstatic const Vtx mario_low_poly_left_thigh_dl_vertex[] = {\n    {{{    10,     51,     45}, 0, {     0,      0}, {0x08, 0x73, 0x34, 0x00}}},\n    {{{    17,    -44,     58}, 0, {     0,      0}, {0x0a, 0x11, 0x7d, 0x00}}},\n    {{{    94,     48,     38}, 0, {     0,      0}, {0x38, 0x40, 0x5d, 0x00}}},\n    {{{    11,     51,    -27}, 0, {     0,      0}, {0x0b, 0x5e, 0xad, 0x00}}},\n    {{{    95,     48,    -19}, 0, {     0,      0}, {0x4a, 0x4f, 0xbf, 0x00}}},\n    {{{    18,    -45,    -38}, 0, {     0,      0}, {0x0c, 0x0f, 0x83, 0x00}}},\n    {{{   101,    -28,    -28}, 0, {     0,      0}, {0x5b, 0xca, 0xbc, 0x00}}},\n    {{{   100,    -28,     48}, 0, {     0,      0}, {0x63, 0xbd, 0x29, 0x00}}},\n    {{{    17,    -44,     58}, 0, {     0,      0}, {0x82, 0xf7, 0xff, 0x00}}},\n    {{{    10,     51,     45}, 0, {     0,      0}, {0x82, 0xf7, 0xff, 0x00}}},\n    {{{    18,    -45,    -38}, 0, {     0,      0}, {0x82, 0xf7, 0xff, 0x00}}},\n    {{{    11,     51,    -27}, 0, {     0,      0}, {0x82, 0xf7, 0xff, 0x00}}},\n    {{{    18,    -45,    -38}, 0, {     0,      0}, {0x18, 0x84, 0x01, 0x00}}},\n    {{{    17,    -44,     58}, 0, {     0,      0}, {0x18, 0x84, 0x01, 0x00}}},\n};\n\n// 0x040172F0 - 0x04017360\nconst Gfx mario_low_poly_left_thigh_dl[] = {\n    gsSPVertex(mario_low_poly_left_thigh_dl_vertex, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 5,  3,  4, 0x0,  4,  6,  5, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  1,  7,  2, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles( 6,  4,  7, 0x0,  4,  2,  7, 0x0),\n    gsSP2Triangles(12,  7, 13, 0x0, 12,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x04017360 - 0x04017390\nconst Gfx mario_low_poly_left_thigh[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPLight(&mario_blue_lights_group.l, 1),\n    gsSPLight(&mario_blue_lights_group.a, 2),\n    gsSPDisplayList(mario_low_poly_left_thigh_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04017390 - 0x04017408\nconst Gfx mario_metal_low_poly_left_thigh[] = {\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_TEXTURE_GEN),\n    gsDPSetCombineMode(G_CC_DECALFADE, G_CC_DECALFADE),\n    gsDPLoadTextureBlock(mario_texture_metal, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_ON),\n    gsSPLight(&mario_white_lights_group.l, 1),\n    gsSPLight(&mario_white_lights_group.a, 2),\n    gsSPDisplayList(mario_low_poly_left_thigh_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04017408\nstatic const Vtx mario_low_poly_left_leg_shared_dl_vertex[] = {\n    {{{     7,     47,     38}, 0, {     0,      0}, {0xcf, 0x59, 0x4b, 0x00}}},\n    {{{    70,    -39,     53}, 0, {     0,      0}, {0xf8, 0x10, 0x7d, 0x00}}},\n    {{{    75,     52,     42}, 0, {     0,      0}, {0xf4, 0x5e, 0x53, 0x00}}},\n    {{{    75,     52,    -23}, 0, {     0,      0}, {0xf5, 0x72, 0xca, 0x00}}},\n    {{{     7,     47,    -20}, 0, {     0,      0}, {0xab, 0x34, 0xb2, 0x00}}},\n    {{{    71,    -39,    -34}, 0, {     0,      0}, {0xfa, 0x0f, 0x83, 0x00}}},\n    {{{     3,    -29,    -29}, 0, {     0,      0}, {0xbb, 0xa4, 0xcd, 0x00}}},\n    {{{     2,    -29,     48}, 0, {     0,      0}, {0x92, 0xdb, 0x31, 0x00}}},\n    {{{    71,    -39,    -34}, 0, {     0,      0}, {0x7e, 0xfa, 0x01, 0x00}}},\n    {{{    75,     52,    -23}, 0, {     0,      0}, {0x7e, 0xfa, 0x01, 0x00}}},\n    {{{    70,    -39,     53}, 0, {     0,      0}, {0x7e, 0xfa, 0x01, 0x00}}},\n    {{{    75,     52,     42}, 0, {     0,      0}, {0x7e, 0xfa, 0x01, 0x00}}},\n    {{{    71,    -39,    -34}, 0, {     0,      0}, {0xed, 0x83, 0x00, 0x00}}},\n    {{{    70,    -39,     53}, 0, {     0,      0}, {0xed, 0x83, 0x00, 0x00}}},\n};\n\n// 0x040174E8 - 0x04017558\nconst Gfx mario_low_poly_left_leg_shared_dl[] = {\n    gsSPVertex(mario_low_poly_left_leg_shared_dl_vertex, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  3,  5, 0x0,  5,  6,  4, 0x0),\n    gsSP2Triangles( 3,  4,  0, 0x0,  0,  7,  1, 0x0),\n    gsSP2Triangles( 7,  4,  6, 0x0,  7,  0,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles( 6, 12, 13, 0x0, 13,  7,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x04017558\nstatic const Vtx mario_low_poly_left_foot_shared_dl_vertex[] = {\n    {{{   110,     11,     56}, 0, {     0,      0}, {0x2b, 0x77, 0xff, 0x00}}},\n    {{{   109,     10,    -33}, 0, {     0,      0}, {0x2b, 0x77, 0xff, 0x00}}},\n    {{{   -50,     69,    -36}, 0, {     0,      0}, {0x2b, 0x77, 0xff, 0x00}}},\n    {{{   -49,     70,     63}, 0, {     0,      0}, {0x2b, 0x77, 0xff, 0x00}}},\n    {{{    74,    -39,     51}, 0, {     0,      0}, {0x13, 0xb0, 0x60, 0x00}}},\n    {{{   110,     11,     56}, 0, {     0,      0}, {0x5b, 0xbb, 0x36, 0x00}}},\n    {{{   -49,     70,     63}, 0, {     0,      0}, {0x00, 0xf4, 0x7e, 0x00}}},\n    {{{    73,    -40,    -25}, 0, {     0,      0}, {0x18, 0x96, 0xc0, 0x00}}},\n    {{{   -56,     20,    -30}, 0, {     0,      0}, {0xa4, 0xc5, 0xc2, 0x00}}},\n    {{{   -50,     69,    -36}, 0, {     0,      0}, {0xfe, 0xf0, 0x83, 0x00}}},\n    {{{   -54,     20,     58}, 0, {     0,      0}, {0x99, 0xc2, 0x26, 0x00}}},\n    {{{   109,     10,    -33}, 0, {     0,      0}, {0x44, 0xc2, 0xaa, 0x00}}},\n    {{{   -50,     69,    -36}, 0, {     0,      0}, {0x82, 0x0e, 0x01, 0x00}}},\n    {{{   -49,     70,     63}, 0, {     0,      0}, {0x82, 0x0e, 0x01, 0x00}}},\n};\n\n// 0x04017638 - 0x040176A8\nconst Gfx mario_low_poly_left_foot_shared_dl[] = {\n    gsSPVertex(mario_low_poly_left_foot_shared_dl_vertex, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  4,  6, 0x0,  7,  9, 11, 0x0),\n    gsSP2Triangles(12, 10, 13, 0x0,  7, 10,  8, 0x0),\n    gsSP2Triangles( 7, 11,  5, 0x0,  5,  4,  7, 0x0),\n    gsSP2Triangles( 7,  4, 10, 0x0, 12,  8, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x040176A8 - 0x040176C8\nconst Gfx mario_low_poly_left_foot[] = {\n    gsSPLight(&mario_brown1_lights_group.l, 1),\n    gsSPLight(&mario_brown1_lights_group.a, 2),\n    gsSPDisplayList(mario_low_poly_left_foot_shared_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x040176C8\nstatic const Vtx mario_low_poly_right_thigh_shared_dl_vertex[] = {\n    {{{   102,    -25,    -48}, 0, {     0,      0}, {0x64, 0xbf, 0xd5, 0x00}}},\n    {{{   103,    -27,     25}, 0, {     0,      0}, {0x5c, 0xc9, 0x42, 0x00}}},\n    {{{    25,    -45,     35}, 0, {     0,      0}, {0x1b, 0x85, 0xfd, 0x00}}},\n    {{{    24,    -42,    -56}, 0, {     0,      0}, {0x1b, 0x85, 0xfd, 0x00}}},\n    {{{    95,     50,    -36}, 0, {     0,      0}, {0x37, 0x42, 0xa3, 0x00}}},\n    {{{    96,     49,     18}, 0, {     0,      0}, {0x4a, 0x4e, 0x41, 0x00}}},\n    {{{    25,    -45,     35}, 0, {     0,      0}, {0x82, 0xf5, 0x02, 0x00}}},\n    {{{    17,     51,     27}, 0, {     0,      0}, {0x82, 0xf5, 0x02, 0x00}}},\n    {{{    15,     53,    -42}, 0, {     0,      0}, {0x82, 0xf5, 0x02, 0x00}}},\n    {{{    24,    -42,    -56}, 0, {     0,      0}, {0x82, 0xf5, 0x02, 0x00}}},\n    {{{    24,    -42,    -56}, 0, {     0,      0}, {0x09, 0x13, 0x83, 0x00}}},\n    {{{    15,     53,    -42}, 0, {     0,      0}, {0x07, 0x74, 0xce, 0x00}}},\n    {{{    25,    -45,     35}, 0, {     0,      0}, {0x0d, 0x0c, 0x7d, 0x00}}},\n    {{{    17,     51,     27}, 0, {     0,      0}, {0x0b, 0x5c, 0x55, 0x00}}},\n};\n\n// 0x040177A8 - 0x04017818\nconst Gfx mario_low_poly_right_thigh_shared_dl[] = {\n    gsSPVertex(mario_low_poly_right_thigh_shared_dl_vertex, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 4,  0, 10, 0x0,  5,  4, 11, 0x0),\n    gsSP2Triangles(12,  1,  5, 0x0,  5, 13, 12, 0x0),\n    gsSP2Triangles( 5, 11, 13, 0x0,  4, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x04017818 - 0x04017838\nconst Gfx mario_low_poly_right_thigh[] = {\n    gsSPLight(&mario_blue_lights_group.l, 1),\n    gsSPLight(&mario_blue_lights_group.a, 2),\n    gsSPDisplayList(mario_low_poly_right_thigh_shared_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04017838\nstatic const Vtx mario_low_poly_right_leg_shared_dl_vertex[] = {\n    {{{     2,    -29,     27}, 0, {     0,      0}, {0xba, 0xa3, 0x31, 0x00}}},\n    {{{     1,    -26,    -50}, 0, {     0,      0}, {0x91, 0xdd, 0xcf, 0x00}}},\n    {{{    68,    -37,    -56}, 0, {     0,      0}, {0xec, 0x83, 0xfd, 0x00}}},\n    {{{    70,    -40,     30}, 0, {     0,      0}, {0xec, 0x83, 0xfd, 0x00}}},\n    {{{    68,    -37,    -56}, 0, {     0,      0}, {0x7e, 0xf9, 0xfe, 0x00}}},\n    {{{    74,     54,    -43}, 0, {     0,      0}, {0x7e, 0xf9, 0xfe, 0x00}}},\n    {{{    75,     52,     21}, 0, {     0,      0}, {0x7e, 0xf9, 0xfe, 0x00}}},\n    {{{    70,    -40,     30}, 0, {     0,      0}, {0x7e, 0xf9, 0xfe, 0x00}}},\n    {{{     6,     47,     19}, 0, {     0,      0}, {0xad, 0x33, 0x50, 0x00}}},\n    {{{     6,     49,    -38}, 0, {     0,      0}, {0xcf, 0x5b, 0xb7, 0x00}}},\n    {{{    68,    -37,    -56}, 0, {     0,      0}, {0xf8, 0x13, 0x83, 0x00}}},\n    {{{    75,     52,     21}, 0, {     0,      0}, {0xf7, 0x71, 0x38, 0x00}}},\n    {{{    70,    -40,     30}, 0, {     0,      0}, {0xfb, 0x0c, 0x7e, 0x00}}},\n    {{{    74,     54,    -43}, 0, {     0,      0}, {0xf4, 0x60, 0xaf, 0x00}}},\n};\n\n// 0x04017918 - 0x04017988\nconst Gfx mario_low_poly_right_leg_shared_dl[] = {\n    gsSPVertex(mario_low_poly_right_leg_shared_dl_vertex, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9,  1, 0x0,  0,  8,  1, 0x0),\n    gsSP2Triangles(10,  1,  9, 0x0,  9,  8, 11, 0x0),\n    gsSP2Triangles( 8,  0, 12, 0x0, 12, 11,  8, 0x0),\n    gsSP2Triangles(11, 13,  9, 0x0, 13, 10,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x04017988\nstatic const Vtx mario_low_poly_right_foot_dl_vertex[] = {\n    {{{   -55,     19,    -59}, 0, {     0,      0}, {0x9a, 0xc0, 0xda, 0x00}}},\n    {{{   -57,     20,     28}, 0, {     0,      0}, {0xa4, 0xc5, 0x3e, 0x00}}},\n    {{{   -52,     69,     34}, 0, {     0,      0}, {0x82, 0x0c, 0xfd, 0x00}}},\n    {{{    73,    -38,    -50}, 0, {     0,      0}, {0x15, 0xae, 0xa2, 0x00}}},\n    {{{    71,    -37,     25}, 0, {     0,      0}, {0x19, 0x98, 0x42, 0x00}}},\n    {{{   108,     12,    -55}, 0, {     0,      0}, {0x5c, 0xbc, 0xcc, 0x00}}},\n    {{{   106,     13,     33}, 0, {     0,      0}, {0x44, 0xc5, 0x58, 0x00}}},\n    {{{   -50,     68,    -65}, 0, {     0,      0}, {0x82, 0x0c, 0xfd, 0x00}}},\n    {{{   -52,     69,     34}, 0, {     0,      0}, {0xfd, 0xf2, 0x7e, 0x00}}},\n    {{{   -50,     68,    -65}, 0, {     0,      0}, {0x02, 0xf2, 0x82, 0x00}}},\n    {{{   -52,     69,     34}, 0, {     0,      0}, {0x29, 0x77, 0x00, 0x00}}},\n    {{{   108,     12,    -55}, 0, {     0,      0}, {0x29, 0x77, 0x00, 0x00}}},\n    {{{   -50,     68,    -65}, 0, {     0,      0}, {0x29, 0x77, 0x00, 0x00}}},\n    {{{   106,     13,     33}, 0, {     0,      0}, {0x29, 0x77, 0x00, 0x00}}},\n};\n\n// 0x04017A68 - 0x04017AD8\nconst Gfx mario_low_poly_right_foot_dl[] = {\n    gsSPVertex(mario_low_poly_right_foot_dl_vertex, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 4,  3,  5, 0x0,  5,  6,  4, 0x0),\n    gsSP2Triangles( 1,  0,  4, 0x0,  7,  0,  2, 0x0),\n    gsSP2Triangles( 6,  8,  4, 0x0,  9,  3,  0, 0x0),\n    gsSP2Triangles( 8,  1,  4, 0x0,  9,  5,  3, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x04017AD8 - 0x04017B18\nconst Gfx mario_low_poly_right_foot[] = {\n    gsSPLight(&mario_brown1_lights_group.l, 1),\n    gsSPLight(&mario_brown1_lights_group.a, 2),\n    gsSPDisplayList(mario_low_poly_right_foot_dl),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsDPSetAlphaCompare(G_AC_NONE),\n    gsSPEndDisplayList(),\n};\n\n// 0x04017B18 - 0x04017B58\nconst Gfx mario_metal_low_poly_right_foot[] = {\n    gsSPDisplayList(mario_low_poly_right_foot_dl),\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_TEXTURE_GEN),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsDPSetAlphaCompare(G_AC_NONE),\n    gsSPEndDisplayList(),\n};\n\n// 0x04017B58\nstatic const Vtx mario_seg4_vertex_04017B58[] = {\n    {{{   -28,     41,    -88}, 0, {  -396,   1646}, {0xb7, 0x31, 0xa5, 0xff}}},\n    {{{     0,     98,      0}, 0, {  1968,    722}, {0xf0, 0x7d, 0x00, 0xff}}},\n    {{{    35,     64,    -82}, 0, {  -390,    132}, {0x29, 0x4b, 0xa3, 0xff}}},\n    {{{    39,     90,      0}, 0, {  1698,   -280}, {0x4a, 0x67, 0x00, 0xff}}},\n    {{{   -28,     41,     89}, 0, {  1610,   1512}, {0xd1, 0x37, 0x67, 0xff}}},\n    {{{    35,     64,     83}, 0, {  1070,    -68}, {0x29, 0x4b, 0x5d, 0xff}}},\n    {{{     0,     98,      0}, 0, { -1064,    968}, {0xf0, 0x7d, 0x00, 0xff}}},\n    {{{    39,     90,      0}, 0, { -1146,   -124}, {0x4a, 0x67, 0x00, 0xff}}},\n};\n\n// 0x04017BD8\nstatic const Vtx mario_seg4_vertex_04017BD8[] = {\n    {{{   -28,    -71,     81}, 0, {     0,      0}, {0x9a, 0xbd, 0x20, 0xff}}},\n    {{{   -28,     41,    -88}, 0, {     0,      0}, {0xb7, 0x31, 0xa5, 0xff}}},\n    {{{   -28,    -71,    -80}, 0, {     0,      0}, {0xb7, 0xb5, 0xba, 0xff}}},\n    {{{    39,    -79,    -73}, 0, {     0,      0}, {0x27, 0xb3, 0xa4, 0xff}}},\n    {{{   -28,     41,     89}, 0, {     0,      0}, {0xd1, 0x37, 0x67, 0xff}}},\n    {{{   -28,     89,      0}, 0, {     0,      0}, {0x97, 0x46, 0x00, 0xff}}},\n    {{{    39,    -79,     74}, 0, {     0,      0}, {0x37, 0xba, 0x59, 0xff}}},\n    {{{    35,     64,     83}, 0, {     0,      0}, {0x29, 0x4b, 0x5d, 0xff}}},\n    {{{     0,     98,      0}, 0, {     0,      0}, {0xf0, 0x7d, 0x00, 0xff}}},\n    {{{    35,     64,    -82}, 0, {     0,      0}, {0x29, 0x4b, 0xa3, 0xff}}},\n    {{{    89,    -45,    -42}, 0, {     0,      0}, {0x70, 0xd0, 0xdf, 0xff}}},\n    {{{    89,    -45,     43}, 0, {     0,      0}, {0x75, 0xe4, 0x28, 0xff}}},\n    {{{    74,     26,    -59}, 0, {     0,      0}, {0x61, 0x25, 0xb9, 0xff}}},\n    {{{    39,     90,      0}, 0, {     0,      0}, {0x4a, 0x67, 0x00, 0xff}}},\n    {{{    74,     26,     60}, 0, {     0,      0}, {0x61, 0x25, 0x47, 0xff}}},\n};\n\n// 0x04017CC8\nstatic const Vtx mario_seg4_vertex_04017CC8[] = {\n    {{{    74,     26,     60}, 0, {     0,      0}, {0x61, 0x25, 0x47, 0xff}}},\n    {{{    87,     42,      0}, 0, {     0,      0}, {0x76, 0x2d, 0x00, 0xff}}},\n    {{{    39,     90,      0}, 0, {     0,      0}, {0x4a, 0x67, 0x00, 0xff}}},\n    {{{    39,    -79,    -73}, 0, {     0,      0}, {0x27, 0xb3, 0xa4, 0xff}}},\n    {{{    35,     64,    -82}, 0, {     0,      0}, {0x29, 0x4b, 0xa3, 0xff}}},\n    {{{    74,     26,    -59}, 0, {     0,      0}, {0x61, 0x25, 0xb9, 0xff}}},\n    {{{    89,    -45,    -42}, 0, {     0,      0}, {0x70, 0xd0, 0xdf, 0xff}}},\n    {{{    39,    -79,     74}, 0, {     0,      0}, {0x37, 0xba, 0x59, 0xff}}},\n    {{{    89,    -45,     43}, 0, {     0,      0}, {0x75, 0xe4, 0x28, 0xff}}},\n    {{{    35,     64,     83}, 0, {     0,      0}, {0x29, 0x4b, 0x5d, 0xff}}},\n};\n\n// 0x04017D68 - 0x04017D98\nconst Gfx mario_low_poly_yellow_button_dl[] = {\n    gsSPVertex(mario_seg4_vertex_04017B58, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x04017D98 - 0x04017E20\nconst Gfx mario_low_poly_pants_overalls_shared_dl[] = {\n    gsSPVertex(mario_seg4_vertex_04017BD8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  3,  6,  0, 0x0),\n    gsSP2Triangles( 4,  0,  6, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 7,  4,  6, 0x0,  5,  4,  8, 0x0),\n    gsSP2Triangles( 8,  1,  5, 0x0,  3,  1,  9, 0x0),\n    gsSP2Triangles( 3,  2,  1, 0x0,  6,  3, 10, 0x0),\n    gsSP2Triangles(10, 11,  6, 0x0, 12,  9, 13, 0x0),\n    gsSP1Triangle(13,  7, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x04017E20 - 0x04017E78\nconst Gfx mario_low_poly_tshirt_shared_dl[] = {\n    gsSPVertex(mario_seg4_vertex_04017CC8, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  2,  1,  5, 0x0),\n    gsSP2Triangles( 6,  5,  1, 0x0,  7,  8,  0, 0x0),\n    gsSP2Triangles( 7,  0,  9, 0x0,  8,  6,  1, 0x0),\n    gsSP1Triangle( 1,  0,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x04017E78 - 0x04017EA0\nconst Gfx mario_low_poly_torso_dl[] = {\n    gsSPDisplayList(mario_low_poly_pants_overalls_shared_dl),\n    gsSPLight(&mario_red_lights_group.l, 1),\n    gsSPLight(&mario_red_lights_group.a, 2),\n    gsSPDisplayList(mario_low_poly_tshirt_shared_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04017EA0 - 0x04017F20\nconst Gfx mario_low_poly_torso[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_yellow_button),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_low_poly_yellow_button_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(mario_low_poly_torso_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04017F20 - 0x04017F40\nconst Gfx mario_metal_low_poly_torso[] = {\n    gsSPDisplayList(mario_low_poly_yellow_button_dl),\n    gsSPDisplayList(mario_low_poly_pants_overalls_shared_dl),\n    gsSPDisplayList(mario_low_poly_tshirt_shared_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04017F40\nstatic const Vtx mario_low_poly_mario_m_logo_dl_vertex[] = {\n    {{{   272,     48,     53}, 0, {   904,      0}, {0x42, 0x51, 0x47, 0xff}}},\n    {{{   174,     79,     -9}, 0, {   452,    816}, {0x51, 0x61, 0xfa, 0xff}}},\n    {{{   146,     27,     92}, 0, {  1238,    962}, {0x03, 0x3a, 0x70, 0xff}}},\n    {{{   272,     48,    -52}, 0, {    -2,      0}, {0x62, 0x27, 0xba, 0xff}}},\n    {{{   146,     27,    -91}, 0, {  -334,    962}, {0x03, 0x39, 0x8f, 0xff}}},\n};\n\n// 0x04017F90\nstatic const Vtx mario_low_poly_eyes_cap_on_dl_vertex[] = {\n    {{{   146,     27,     92}, 0, {  1316,    212}, {0x03, 0x3a, 0x70, 0xff}}},\n    {{{   168,     79,      0}, 0, {   458,     68}, {0xd9, 0x78, 0x00, 0xff}}},\n    {{{    88,    101,     33}, 0, {   762,    990}, {0x38, 0x55, 0x4b, 0xff}}},\n    {{{    88,    101,    -32}, 0, {   154,    990}, {0x1e, 0x5d, 0xb1, 0xff}}},\n    {{{   146,     27,    -91}, 0, {  -398,    212}, {0x03, 0x39, 0x8f, 0xff}}},\n};\n\n// 0x04017FE0\nstatic const Vtx mario_low_poly_mustache_cap_on_dl_vertex[] = {\n    {{{    88,    101,    -32}, 0, {   398,    214}, {0x1e, 0x5d, 0xb1, 0xff}}},\n    {{{   146,     27,    -91}, 0, {  1408,   -550}, {0x03, 0x39, 0x8f, 0xff}}},\n    {{{    34,     39,    -98}, 0, {  1306,    732}, {0xcd, 0x40, 0xa0, 0xff}}},\n    {{{    44,    113,      0}, 0, {    10,    800}, {0x9c, 0x4d, 0x00, 0xff}}},\n    {{{    -5,     58,      0}, 0, {   300,   1456}, {0x88, 0x28, 0x00, 0xff}}},\n    {{{    88,    101,     33}, 0, {   294,    258}, {0x38, 0x55, 0x4b, 0xff}}},\n    {{{    44,    113,      0}, 0, {    34,    840}, {0x9c, 0x4d, 0x00, 0xff}}},\n    {{{    34,     39,     99}, 0, {  1314,    634}, {0xcd, 0x40, 0x60, 0xff}}},\n    {{{   146,     27,     92}, 0, {  1132,   -556}, {0x03, 0x3a, 0x70, 0xff}}},\n    {{{    -5,     58,      0}, 0, {   470,   1412}, {0x88, 0x28, 0x00, 0xff}}},\n};\n\n// 0x04018080\nstatic const Vtx mario_low_poly_face_cap_dl_vertex[] = {\n    {{{   272,     48,    -52}, 0, {     0,      0}, {0x62, 0x27, 0xba, 0xff}}},\n    {{{   272,     48,     53}, 0, {     0,      0}, {0x42, 0x51, 0x47, 0xff}}},\n    {{{   149,    -87,    138}, 0, {     0,      0}, {0x43, 0xb6, 0x4d, 0xff}}},\n    {{{   146,     27,    -91}, 0, {     0,      0}, {0x03, 0x39, 0x8f, 0xff}}},\n    {{{   149,    -87,   -137}, 0, {     0,      0}, {0x33, 0xc2, 0x9f, 0xff}}},\n    {{{   146,     27,     92}, 0, {     0,      0}, {0x03, 0x3a, 0x70, 0xff}}},\n    {{{    58,   -114,     81}, 0, {     0,      0}, {0xba, 0xad, 0x40, 0xff}}},\n    {{{    98,   -165,      0}, 0, {     0,      0}, {0xfd, 0x82, 0x00, 0xff}}},\n    {{{    58,   -114,    -80}, 0, {     0,      0}, {0xbc, 0xb8, 0xb2, 0xff}}},\n    {{{   168,     79,      0}, 0, {     0,      0}, {0xd9, 0x78, 0x00, 0xff}}},\n    {{{   175,    154,      0}, 0, {     0,      0}, {0xe1, 0x6c, 0xc6, 0xff}}},\n    {{{   174,     79,     -9}, 0, {     0,      0}, {0x51, 0x61, 0xfa, 0xff}}},\n};\n\n// 0x04018140\nstatic const Vtx mario_low_poly_face_part_cap_on_dl_vertex[] = {\n    {{{    94,    146,     33}, 0, {     0,      0}, {0xff, 0x44, 0x6b, 0xff}}},\n    {{{    50,    153,      0}, 0, {     0,      0}, {0xad, 0x5f, 0x00, 0xff}}},\n    {{{    44,    113,      0}, 0, {     0,      0}, {0x9c, 0x4d, 0x00, 0xff}}},\n    {{{    88,    101,     33}, 0, {     0,      0}, {0x38, 0x55, 0x4b, 0xff}}},\n    {{{    94,    146,    -32}, 0, {     0,      0}, {0x3b, 0x35, 0x9e, 0xff}}},\n    {{{    88,    101,    -32}, 0, {     0,      0}, {0x1e, 0x5d, 0xb1, 0xff}}},\n    {{{    34,     39,     99}, 0, {     0,      0}, {0xcd, 0x40, 0x60, 0xff}}},\n    {{{    -5,     58,      0}, 0, {     0,      0}, {0x88, 0x28, 0x00, 0xff}}},\n    {{{     7,    -85,     79}, 0, {     0,      0}, {0xaa, 0xdc, 0x54, 0xff}}},\n    {{{   146,     27,     92}, 0, {     0,      0}, {0x03, 0x3a, 0x70, 0xff}}},\n    {{{     7,    -85,    -78}, 0, {     0,      0}, {0xa9, 0xc7, 0xb9, 0xff}}},\n    {{{    34,     39,    -98}, 0, {     0,      0}, {0xcd, 0x40, 0xa0, 0xff}}},\n    {{{   146,     27,    -91}, 0, {     0,      0}, {0x03, 0x39, 0x8f, 0xff}}},\n};\n\n// 0x04018210\nstatic const Vtx mario_low_poly_face_back_hair_cap_on_dl_vertex[] = {\n    {{{    58,   -114,     81}, 0, {     0,      0}, {0xba, 0xad, 0x40, 0xff}}},\n    {{{     7,    -85,     79}, 0, {     0,      0}, {0xaa, 0xdc, 0x54, 0xff}}},\n    {{{     7,    -85,    -78}, 0, {     0,      0}, {0xa9, 0xc7, 0xb9, 0xff}}},\n    {{{    58,   -114,    -80}, 0, {     0,      0}, {0xbc, 0xb8, 0xb2, 0xff}}},\n    {{{   146,     27,     92}, 0, {     0,      0}, {0x03, 0x3a, 0x70, 0xff}}},\n    {{{   146,     27,    -91}, 0, {     0,      0}, {0x03, 0x39, 0x8f, 0xff}}},\n};\n\n// 0x04018270 - 0x04018298\nconst Gfx mario_low_poly_mario_m_logo_dl[] = {\n    gsSPVertex(mario_low_poly_mario_m_logo_dl_vertex, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP1Triangle( 3,  1,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x04018298 - 0x040182C0\nconst Gfx mario_low_poly_eyes_cap_on_dl[] = {\n    gsSPVertex(mario_low_poly_eyes_cap_on_dl_vertex, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  4, 0x0),\n    gsSP1Triangle( 3,  2,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x040182C0 - 0x04018300\nconst Gfx mario_low_poly_mustache_cap_on_dl[] = {\n    gsSPVertex(mario_low_poly_mustache_cap_on_dl_vertex, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 2,  4,  3, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 7,  8,  5, 0x0,  6,  9,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x04018300 - 0x04018370\nconst Gfx mario_low_poly_face_part_cap_on_dl[] = {\n    gsSPVertex(mario_low_poly_face_part_cap_on_dl_vertex, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 4,  1,  0, 0x0,  4,  0,  3, 0x0),\n    gsSP2Triangles( 5,  4,  3, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9,  6,  8, 0x0,  8,  7, 10, 0x0),\n    gsSP2Triangles(10,  7, 11, 0x0, 10, 11, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x04018370 - 0x040183F0\nconst Gfx mario_low_poly_face_cap_dl[] = {\n    gsSPVertex(mario_low_poly_face_cap_dl_vertex, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 4,  0,  2, 0x0,  2,  1,  5, 0x0),\n    gsSP2Triangles( 6,  2,  5, 0x0,  6,  7,  2, 0x0),\n    gsSP2Triangles( 7,  4,  2, 0x0,  3,  4,  8, 0x0),\n    gsSP2Triangles( 4,  7,  8, 0x0,  9, 10,  3, 0x0),\n    gsSP2Triangles(10, 11,  3, 0x0,  8,  7,  6, 0x0),\n    gsSP2Triangles(10,  5, 11, 0x0, 10,  9,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x040183F0 - 0x04018420\nconst Gfx mario_low_poly_face_back_hair_cap_on_dl[] = {\n    gsSPVertex(mario_low_poly_face_back_hair_cap_on_dl_vertex, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  1,  0, 0x0,  3,  2,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x04018420 - 0x04018460\nconst Gfx mario_low_poly_face_cap_on_dl[] = {\n    gsSPDisplayList(mario_low_poly_face_part_cap_on_dl),\n    gsSPLight(&mario_red_lights_group.l, 1),\n    gsSPLight(&mario_red_lights_group.a, 2),\n    gsSPDisplayList(mario_low_poly_face_cap_dl),\n    gsSPLight(&mario_brown2_lights_group.l, 1),\n    gsSPLight(&mario_brown2_lights_group.a, 2),\n    gsSPDisplayList(mario_low_poly_face_back_hair_cap_on_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04018460 - 0x04018530\nconst Gfx mario_low_poly_cap_on_eyes_front[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_m_logo),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_low_poly_mario_m_logo_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_front),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mario_beige_lights_group.l, 1),\n    gsSPLight(&mario_beige_lights_group.a, 2),\n    gsSPDisplayList(mario_low_poly_eyes_cap_on_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_low_poly_mustache_cap_on_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(mario_low_poly_face_cap_on_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04018530 - 0x04018600\nconst Gfx mario_low_poly_cap_on_eyes_half_closed[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_m_logo),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_low_poly_mario_m_logo_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_half_closed),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mario_beige_lights_group.l, 1),\n    gsSPLight(&mario_beige_lights_group.a, 2),\n    gsSPDisplayList(mario_low_poly_eyes_cap_on_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_low_poly_mustache_cap_on_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(mario_low_poly_face_cap_on_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04018600 - 0x040186D0\nconst Gfx mario_low_poly_cap_on_eyes_closed[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_m_logo),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_low_poly_mario_m_logo_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_closed),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mario_beige_lights_group.l, 1),\n    gsSPLight(&mario_beige_lights_group.a, 2),\n    gsSPDisplayList(mario_low_poly_eyes_cap_on_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_low_poly_mustache_cap_on_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(mario_low_poly_face_cap_on_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x040186D0 - 0x040187A0\nconst Gfx mario_low_poly_cap_on_eyes_right[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_m_logo),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_low_poly_mario_m_logo_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_right),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mario_beige_lights_group.l, 1),\n    gsSPLight(&mario_beige_lights_group.a, 2),\n    gsSPDisplayList(mario_low_poly_eyes_cap_on_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_low_poly_mustache_cap_on_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(mario_low_poly_face_cap_on_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x040187A0 - 0x04018870\nconst Gfx mario_low_poly_cap_on_eyes_left[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_m_logo),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_low_poly_mario_m_logo_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_left),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mario_beige_lights_group.l, 1),\n    gsSPLight(&mario_beige_lights_group.a, 2),\n    gsSPDisplayList(mario_low_poly_eyes_cap_on_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_low_poly_mustache_cap_on_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(mario_low_poly_face_cap_on_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04018870 - 0x04018940\nconst Gfx mario_low_poly_cap_on_eyes_up[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_m_logo),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_low_poly_mario_m_logo_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_up),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mario_beige_lights_group.l, 1),\n    gsSPLight(&mario_beige_lights_group.a, 2),\n    gsSPDisplayList(mario_low_poly_eyes_cap_on_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_low_poly_mustache_cap_on_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(mario_low_poly_face_cap_on_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04018940 - 0x04018A10\nconst Gfx mario_low_poly_cap_on_eyes_down[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_m_logo),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_low_poly_mario_m_logo_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_down),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mario_beige_lights_group.l, 1),\n    gsSPLight(&mario_beige_lights_group.a, 2),\n    gsSPDisplayList(mario_low_poly_eyes_cap_on_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_low_poly_mustache_cap_on_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(mario_low_poly_face_cap_on_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04018A10 - 0x04018AE0\nconst Gfx mario_low_poly_cap_on_eyes_dead[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_m_logo),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_low_poly_mario_m_logo_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_dead),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mario_beige_lights_group.l, 1),\n    gsSPLight(&mario_beige_lights_group.a, 2),\n    gsSPDisplayList(mario_low_poly_eyes_cap_on_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_low_poly_mustache_cap_on_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(mario_low_poly_face_cap_on_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04018AE0 - 0x04018B18\nconst Gfx mario_metal_low_poly_cap_on[] = {\n    gsSPDisplayList(mario_low_poly_mario_m_logo_dl),\n    gsSPDisplayList(mario_low_poly_eyes_cap_on_dl),\n    gsSPDisplayList(mario_low_poly_mustache_cap_on_dl),\n    gsSPDisplayList(mario_low_poly_face_part_cap_on_dl),\n    gsSPDisplayList(mario_low_poly_face_cap_dl),\n    gsSPDisplayList(mario_low_poly_face_back_hair_cap_on_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04018B18\nstatic const Vtx mario_low_poly_mario_eyes_cap_off_dl_vertex[] = {\n    {{{   146,     27,     92}, 0, {  1316,    212}, {0x16, 0x25, 0x77, 0xff}}},\n    {{{   168,     79,      0}, 0, {   458,     68}, {0x27, 0x78, 0x00, 0xff}}},\n    {{{    88,    101,     33}, 0, {   762,    990}, {0x38, 0x55, 0x4b, 0xff}}},\n    {{{    88,    101,    -32}, 0, {   154,    990}, {0x1e, 0x5d, 0xb1, 0xff}}},\n    {{{   146,     27,    -91}, 0, {  -398,    212}, {0x14, 0x26, 0x89, 0xff}}},\n};\n\n// 0x04018B68\nstatic const Vtx mario_low_poly_mustache_cap_off_dl_vertex[] = {\n    {{{    34,     39,    -98}, 0, {  1306,    732}, {0xcd, 0x40, 0xa0, 0xff}}},\n    {{{    44,    113,      0}, 0, {    10,    800}, {0x9c, 0x4d, 0x00, 0xff}}},\n    {{{    88,    101,    -32}, 0, {   398,    214}, {0x1e, 0x5d, 0xb1, 0xff}}},\n    {{{    -5,     58,      0}, 0, {   300,   1456}, {0x88, 0x28, 0x00, 0xff}}},\n    {{{   146,     27,    -91}, 0, {  1408,   -550}, {0x14, 0x26, 0x89, 0xff}}},\n    {{{    88,    101,     33}, 0, {   294,    258}, {0x38, 0x55, 0x4b, 0xff}}},\n    {{{    44,    113,      0}, 0, {    34,    840}, {0x9c, 0x4d, 0x00, 0xff}}},\n    {{{    34,     39,     99}, 0, {  1314,    634}, {0xcd, 0x40, 0x60, 0xff}}},\n    {{{    -5,     58,      0}, 0, {   470,   1412}, {0x88, 0x28, 0x00, 0xff}}},\n    {{{   146,     27,     92}, 0, {  1132,   -556}, {0x16, 0x25, 0x77, 0xff}}},\n};\n\n// 0x04018C08\nstatic const Vtx mario_low_poly_face_part_cap_off_dl_vertex[] = {\n    {{{    44,    113,      0}, 0, {     0,      0}, {0x9c, 0x4d, 0x00, 0xff}}},\n    {{{    94,    146,    -32}, 0, {     0,      0}, {0x3b, 0x35, 0x9e, 0xff}}},\n    {{{    88,    101,    -32}, 0, {     0,      0}, {0x1e, 0x5d, 0xb1, 0xff}}},\n    {{{    50,    153,      0}, 0, {     0,      0}, {0xad, 0x5f, 0x00, 0xff}}},\n    {{{    88,    101,     33}, 0, {     0,      0}, {0x38, 0x55, 0x4b, 0xff}}},\n    {{{    94,    146,     33}, 0, {     0,      0}, {0xff, 0x44, 0x6b, 0xff}}},\n    {{{   146,     27,     92}, 0, {     0,      0}, {0x16, 0x25, 0x77, 0xff}}},\n    {{{    34,     39,     99}, 0, {     0,      0}, {0xcd, 0x40, 0x60, 0xff}}},\n    {{{     7,    -85,     79}, 0, {     0,      0}, {0xaa, 0xdc, 0x54, 0xff}}},\n    {{{    -5,     58,      0}, 0, {     0,      0}, {0x88, 0x28, 0x00, 0xff}}},\n    {{{     7,    -85,    -78}, 0, {     0,      0}, {0xa9, 0xc7, 0xb9, 0xff}}},\n    {{{    34,     39,    -98}, 0, {     0,      0}, {0xcd, 0x40, 0xa0, 0xff}}},\n    {{{   146,     27,    -91}, 0, {     0,      0}, {0x14, 0x26, 0x89, 0xff}}},\n};\n\n// 0x04018CD8\nstatic const Vtx mario_low_poly_face_hair_cap_off_dl_vertex[] = {\n    {{{    58,   -114,     81}, 0, {     0,      0}, {0xd3, 0x9b, 0x3d, 0xff}}},\n    {{{     7,    -85,     79}, 0, {     0,      0}, {0xaa, 0xdc, 0x54, 0xff}}},\n    {{{     7,    -85,    -78}, 0, {     0,      0}, {0xa9, 0xc7, 0xb9, 0xff}}},\n    {{{   146,     27,     92}, 0, {     0,      0}, {0x16, 0x25, 0x77, 0xff}}},\n    {{{   167,   -121,     77}, 0, {     0,      0}, {0x3c, 0xad, 0x4a, 0xff}}},\n    {{{    58,   -114,    -80}, 0, {     0,      0}, {0xd8, 0xa3, 0xb5, 0xff}}},\n    {{{    90,   -136,      0}, 0, {     0,      0}, {0xf0, 0x83, 0x00, 0xff}}},\n    {{{   146,     27,    -91}, 0, {     0,      0}, {0x14, 0x26, 0x89, 0xff}}},\n    {{{   167,   -121,    -81}, 0, {     0,      0}, {0x3a, 0xad, 0xb5, 0xff}}},\n    {{{   218,     48,    -52}, 0, {     0,      0}, {0x5f, 0x3b, 0xc6, 0xff}}},\n    {{{   168,     79,      0}, 0, {     0,      0}, {0x27, 0x78, 0x00, 0xff}}},\n    {{{   192,    -28,    -80}, 0, {     0,      0}, {0x55, 0xf7, 0xa3, 0xff}}},\n    {{{   223,    -38,     -1}, 0, {     0,      0}, {0x7b, 0xe2, 0x00, 0xff}}},\n    {{{   218,     48,     53}, 0, {     0,      0}, {0x60, 0x39, 0x3a, 0xff}}},\n    {{{   192,    -28,     78}, 0, {     0,      0}, {0x56, 0xf4, 0x5c, 0xff}}},\n};\n\n// 0x04018DC8 - 0x04018DF0\nconst Gfx mario_low_poly_mario_eyes_cap_off_dl[] = {\n    gsSPVertex(mario_low_poly_mario_eyes_cap_off_dl_vertex, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  4, 0x0),\n    gsSP1Triangle( 3,  2,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x04018DF0 - 0x04018E30\nconst Gfx mario_low_poly_mustache_cap_off_dl[] = {\n    gsSPVertex(mario_low_poly_mustache_cap_off_dl_vertex, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 2,  4,  0, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  7,  9,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x04018E30 - 0x04018EA0\nconst Gfx mario_low_poly_face_part_cap_off_dl[] = {\n    gsSPVertex(mario_low_poly_face_part_cap_off_dl_vertex, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  0, 0x0,  5,  3,  0, 0x0),\n    gsSP2Triangles( 1,  3,  5, 0x0,  2,  1,  4, 0x0),\n    gsSP2Triangles( 1,  5,  4, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 7,  9,  8, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(10,  9, 11, 0x0, 10, 11, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x04018EA0 - 0x04018F68\nconst Gfx mario_low_poly_face_hair_cap_off_dl[] = {\n    gsSPVertex(mario_low_poly_face_hair_cap_off_dl_vertex, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 5,  6,  0, 0x0,  0,  6,  4, 0x0),\n    gsSP2Triangles( 5,  2,  7, 0x0,  7,  8,  5, 0x0),\n    gsSP2Triangles( 8,  6,  5, 0x0,  9,  7, 10, 0x0),\n    gsSP2Triangles( 7,  9, 11, 0x0,  7, 11,  8, 0x0),\n    gsSP2Triangles( 6,  8,  4, 0x0,  8, 11, 12, 0x0),\n    gsSP2Triangles( 4,  8, 12, 0x0, 11,  9, 12, 0x0),\n    gsSP2Triangles(13, 14, 12, 0x0, 14,  4, 12, 0x0),\n    gsSP2Triangles( 4, 14,  3, 0x0, 13, 10,  3, 0x0),\n    gsSP2Triangles(14, 13,  3, 0x0,  9, 10, 13, 0x0),\n    gsSP1Triangle( 9, 13, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x04018F68 - 0x04018F90\nconst Gfx mario_low_poly_face_cap_off_dl[] = {\n    gsSPDisplayList(mario_low_poly_face_part_cap_off_dl),\n    gsSPLight(&mario_brown2_lights_group.l, 1),\n    gsSPLight(&mario_brown2_lights_group.a, 2),\n    gsSPDisplayList(mario_low_poly_face_hair_cap_off_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04018F90 - 0x04019040\nconst Gfx mario_low_poly_cap_off_eyes_front[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_front),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mario_beige_lights_group.l, 1),\n    gsSPLight(&mario_beige_lights_group.a, 2),\n    gsSPDisplayList(mario_low_poly_mario_eyes_cap_off_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_low_poly_mustache_cap_off_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(mario_low_poly_face_cap_off_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04019040 - 0x040190F0\nconst Gfx mario_low_poly_cap_off_eyes_half_closed[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_half_closed),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mario_beige_lights_group.l, 1),\n    gsSPLight(&mario_beige_lights_group.a, 2),\n    gsSPDisplayList(mario_low_poly_mario_eyes_cap_off_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_low_poly_mustache_cap_off_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(mario_low_poly_face_cap_off_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x040190F0 - 0x040191A0\nconst Gfx mario_low_poly_cap_off_eyes_closed[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_closed),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mario_beige_lights_group.l, 1),\n    gsSPLight(&mario_beige_lights_group.a, 2),\n    gsSPDisplayList(mario_low_poly_mario_eyes_cap_off_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_low_poly_mustache_cap_off_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(mario_low_poly_face_cap_off_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x040191A0 - 0x04019250\nconst Gfx mario_low_poly_cap_off_eyes_right[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_right),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mario_beige_lights_group.l, 1),\n    gsSPLight(&mario_beige_lights_group.a, 2),\n    gsSPDisplayList(mario_low_poly_mario_eyes_cap_off_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_low_poly_mustache_cap_off_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(mario_low_poly_face_cap_off_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04019250 - 0x04019300\nconst Gfx mario_low_poly_cap_off_eyes_left[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_left),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mario_beige_lights_group.l, 1),\n    gsSPLight(&mario_beige_lights_group.a, 2),\n    gsSPDisplayList(mario_low_poly_mario_eyes_cap_off_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_low_poly_mustache_cap_off_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(mario_low_poly_face_cap_off_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04019300 - 0x040193B0\nconst Gfx mario_low_poly_cap_off_eyes_up[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_up),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mario_beige_lights_group.l, 1),\n    gsSPLight(&mario_beige_lights_group.a, 2),\n    gsSPDisplayList(mario_low_poly_mario_eyes_cap_off_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_low_poly_mustache_cap_off_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(mario_low_poly_face_cap_off_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x040193B0 - 0x04019460\nconst Gfx mario_low_poly_cap_off_eyes_down[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_down),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mario_beige_lights_group.l, 1),\n    gsSPLight(&mario_beige_lights_group.a, 2),\n    gsSPDisplayList(mario_low_poly_mario_eyes_cap_off_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_low_poly_mustache_cap_off_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(mario_low_poly_face_cap_off_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04019460 - 0x04019510\nconst Gfx mario_low_poly_cap_off_eyes_dead[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_dead),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mario_beige_lights_group.l, 1),\n    gsSPLight(&mario_beige_lights_group.a, 2),\n    gsSPDisplayList(mario_low_poly_mario_eyes_cap_off_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_low_poly_mustache_cap_off_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(mario_low_poly_face_cap_off_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04019510 - 0x04019538\nconst Gfx mario_metal_low_poly_cap_off[] = {\n    gsSPDisplayList(mario_low_poly_mario_eyes_cap_off_dl),\n    gsSPDisplayList(mario_low_poly_mustache_cap_off_dl),\n    gsSPDisplayList(mario_low_poly_face_part_cap_off_dl),\n    gsSPDisplayList(mario_low_poly_face_hair_cap_off_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04019538\nstatic const Vtx mario_left_hand_open_shared_dl_vertex_group1[] = {\n    {{{   121,     73,    -21}, 0, {     0,      0}, {0x47, 0x60, 0x2b, 0x00}}},\n    {{{    70,     89,    -20}, 0, {     0,      0}, {0xec, 0x7c, 0xf6, 0x00}}},\n    {{{    77,     41,     21}, 0, {     0,      0}, {0x1d, 0x2a, 0x74, 0x00}}},\n    {{{   141,     34,     -7}, 0, {     0,      0}, {0x77, 0x0c, 0x29, 0x00}}},\n    {{{    78,     59,    -34}, 0, {     0,      0}, {0xfe, 0x0b, 0x82, 0x00}}},\n    {{{   119,     70,    -42}, 0, {     0,      0}, {0x3d, 0x44, 0xa9, 0x00}}},\n    {{{   133,     28,    -40}, 0, {     0,      0}, {0x45, 0xc9, 0xa6, 0x00}}},\n    {{{    83,    -17,     10}, 0, {     0,      0}, {0x4d, 0xbd, 0x4a, 0x00}}},\n    {{{    26,    -32,      6}, 0, {     0,      0}, {0x34, 0xa6, 0x47, 0x00}}},\n    {{{    45,    -34,     10}, 0, {     0,      0}, {0xfe, 0x9a, 0x4a, 0x00}}},\n    {{{    26,     16,     28}, 0, {     0,      0}, {0xda, 0x0c, 0x78, 0x00}}},\n    {{{    41,    -37,    -36}, 0, {     0,      0}, {0xd8, 0x9b, 0xbf, 0x00}}},\n    {{{    20,    -27,    -27}, 0, {     0,      0}, {0x09, 0xbf, 0x94, 0x00}}},\n    {{{    25,     -1,    -44}, 0, {     0,      0}, {0xe4, 0xe0, 0x89, 0x00}}},\n};\n\n// 0x04019618\nstatic const Vtx mario_left_hand_open_shared_dl_vertex_group2[] = {\n    {{{    -3,     35,     -9}, 0, {     0,      0}, {0xcd, 0x72, 0x13, 0x00}}},\n    {{{     6,     53,     -9}, 0, {     0,      0}, {0xaf, 0x61, 0x00, 0x00}}},\n    {{{    11,     29,    -52}, 0, {     0,      0}, {0xba, 0x2a, 0xa0, 0x00}}},\n    {{{    26,     16,     28}, 0, {     0,      0}, {0xda, 0x0c, 0x78, 0x00}}},\n    {{{     1,    -33,    -23}, 0, {     0,      0}, {0x9c, 0xbb, 0xe0, 0x00}}},\n    {{{     6,    -38,      7}, 0, {     0,      0}, {0xae, 0xab, 0x2b, 0x00}}},\n    {{{    -6,     -3,     17}, 0, {     0,      0}, {0x90, 0xda, 0x2d, 0x00}}},\n    {{{     2,      3,     26}, 0, {     0,      0}, {0xf5, 0x17, 0x7c, 0x00}}},\n    {{{    20,    -46,     12}, 0, {     0,      0}, {0x26, 0x9e, 0x45, 0x00}}},\n    {{{    26,    -32,      6}, 0, {     0,      0}, {0x34, 0xa6, 0x47, 0x00}}},\n    {{{   -17,     40,     -8}, 0, {     0,      0}, {0xbc, 0x68, 0x16, 0x00}}},\n    {{{   -10,     14,    -43}, 0, {     0,      0}, {0xd3, 0x19, 0x8d, 0x00}}},\n    {{{    20,    -27,    -27}, 0, {     0,      0}, {0x09, 0xbf, 0x94, 0x00}}},\n    {{{    13,    -39,    -31}, 0, {     0,      0}, {0x18, 0x9a, 0xba, 0x00}}},\n    {{{   -20,     22,     -7}, 0, {     0,      0}, {0x83, 0x06, 0x14, 0x00}}},\n    {{{    70,     89,    -20}, 0, {     0,      0}, {0xec, 0x7c, 0xf6, 0x00}}},\n};\n\n// 0x04019718\nstatic const Vtx mario_left_hand_open_shared_dl_vertex_group3[] = {\n    {{{    45,    -34,     10}, 0, {     0,      0}, {0xfe, 0x9a, 0x4a, 0x00}}},\n    {{{    83,    -17,     10}, 0, {     0,      0}, {0x4d, 0xbd, 0x4a, 0x00}}},\n    {{{    26,     16,     28}, 0, {     0,      0}, {0xda, 0x0c, 0x78, 0x00}}},\n    {{{    89,    -47,    -37}, 0, {     0,      0}, {0x56, 0xaa, 0xdf, 0x00}}},\n    {{{    76,    -18,    -48}, 0, {     0,      0}, {0x27, 0x0a, 0x88, 0x00}}},\n    {{{    89,     -6,    -27}, 0, {     0,      0}, {0x5c, 0xf5, 0xab, 0x00}}},\n    {{{     6,     53,     -9}, 0, {     0,      0}, {0xaf, 0x61, 0x00, 0x00}}},\n    {{{    26,     41,    -41}, 0, {     0,      0}, {0x05, 0x34, 0x8d, 0x00}}},\n    {{{    11,     29,    -52}, 0, {     0,      0}, {0xba, 0x2a, 0xa0, 0x00}}},\n    {{{   141,     34,     -7}, 0, {     0,      0}, {0x77, 0x0c, 0x29, 0x00}}},\n    {{{    77,     41,     21}, 0, {     0,      0}, {0x1d, 0x2a, 0x74, 0x00}}},\n    {{{   133,     28,    -40}, 0, {     0,      0}, {0x45, 0xc9, 0xa6, 0x00}}},\n    {{{    69,     10,    -36}, 0, {     0,      0}, {0x35, 0x1c, 0x91, 0x00}}},\n    {{{    78,     59,    -34}, 0, {     0,      0}, {0xfe, 0x0b, 0x82, 0x00}}},\n    {{{   121,     73,    -21}, 0, {     0,      0}, {0x47, 0x60, 0x2b, 0x00}}},\n    {{{   119,     70,    -42}, 0, {     0,      0}, {0x3d, 0x44, 0xa9, 0x00}}},\n};\n\n// 0x04019818\nstatic const Vtx mario_left_hand_open_shared_dl_vertex_group4[] = {\n    {{{    25,     -1,    -44}, 0, {     0,      0}, {0xe4, 0xe0, 0x89, 0x00}}},\n    {{{    11,     29,    -52}, 0, {     0,      0}, {0xba, 0x2a, 0xa0, 0x00}}},\n    {{{    26,     41,    -41}, 0, {     0,      0}, {0x05, 0x34, 0x8d, 0x00}}},\n    {{{    78,     59,    -34}, 0, {     0,      0}, {0xfe, 0x0b, 0x82, 0x00}}},\n    {{{    69,     10,    -36}, 0, {     0,      0}, {0x35, 0x1c, 0x91, 0x00}}},\n    {{{    89,    -47,    -37}, 0, {     0,      0}, {0x56, 0xaa, 0xdf, 0x00}}},\n    {{{    41,    -37,    -36}, 0, {     0,      0}, {0xd8, 0x9b, 0xbf, 0x00}}},\n    {{{    76,    -18,    -48}, 0, {     0,      0}, {0x27, 0x0a, 0x88, 0x00}}},\n    {{{    45,    -34,     10}, 0, {     0,      0}, {0xfe, 0x9a, 0x4a, 0x00}}},\n    {{{    89,     -6,    -27}, 0, {     0,      0}, {0x5c, 0xf5, 0xab, 0x00}}},\n    {{{    83,    -17,     10}, 0, {     0,      0}, {0x4d, 0xbd, 0x4a, 0x00}}},\n    {{{    70,     89,    -20}, 0, {     0,      0}, {0xec, 0x7c, 0xf6, 0x00}}},\n    {{{     6,     53,     -9}, 0, {     0,      0}, {0xaf, 0x61, 0x00, 0x00}}},\n    {{{   133,     28,    -40}, 0, {     0,      0}, {0x45, 0xc9, 0xa6, 0x00}}},\n    {{{    77,     41,     21}, 0, {     0,      0}, {0x1d, 0x2a, 0x74, 0x00}}},\n    {{{    26,     16,     28}, 0, {     0,      0}, {0xda, 0x0c, 0x78, 0x00}}},\n};\n\n// 0x04019918\nstatic const Vtx mario_left_hand_open_shared_dl_vertex_group5[] = {\n    {{{     6,    -38,      7}, 0, {     0,      0}, {0xae, 0xab, 0x2b, 0x00}}},\n    {{{     1,    -33,    -23}, 0, {     0,      0}, {0x9c, 0xbb, 0xe0, 0x00}}},\n    {{{    13,    -39,    -31}, 0, {     0,      0}, {0x18, 0x9a, 0xba, 0x00}}},\n    {{{   -15,      4,    -32}, 0, {     0,      0}, {0x89, 0xdd, 0xe7, 0x00}}},\n    {{{   -10,     14,    -43}, 0, {     0,      0}, {0xd3, 0x19, 0x8d, 0x00}}},\n    {{{   -20,     22,     -7}, 0, {     0,      0}, {0x83, 0x06, 0x14, 0x00}}},\n    {{{    -6,     -3,     17}, 0, {     0,      0}, {0x90, 0xda, 0x2d, 0x00}}},\n    {{{     2,      3,     26}, 0, {     0,      0}, {0xf5, 0x17, 0x7c, 0x00}}},\n    {{{    20,    -27,    -27}, 0, {     0,      0}, {0x09, 0xbf, 0x94, 0x00}}},\n    {{{    26,    -32,      6}, 0, {     0,      0}, {0x34, 0xa6, 0x47, 0x00}}},\n    {{{     1,     15,    -37}, 0, {     0,      0}, {0xd2, 0x09, 0x8b, 0x00}}},\n    {{{    -3,     35,     -9}, 0, {     0,      0}, {0xcd, 0x72, 0x13, 0x00}}},\n    {{{    11,      5,     17}, 0, {     0,      0}, {0xff, 0x1b, 0x7c, 0x00}}},\n    {{{    26,     16,     28}, 0, {     0,      0}, {0xda, 0x0c, 0x78, 0x00}}},\n    {{{    11,     29,    -52}, 0, {     0,      0}, {0xba, 0x2a, 0xa0, 0x00}}},\n    {{{    25,     -1,    -44}, 0, {     0,      0}, {0xe4, 0xe0, 0x89, 0x00}}},\n};\n\n// 0x04019A18\nstatic const Vtx mario_left_hand_open_shared_dl_vertex_group6[] = {\n    {{{    26,    -32,      6}, 0, {     0,      0}, {0x34, 0xa6, 0x47, 0x00}}},\n    {{{    20,    -27,    -27}, 0, {     0,      0}, {0x09, 0xbf, 0x94, 0x00}}},\n    {{{    41,    -37,    -36}, 0, {     0,      0}, {0xd8, 0x9b, 0xbf, 0x00}}},\n    {{{    26,     16,     28}, 0, {     0,      0}, {0xda, 0x0c, 0x78, 0x00}}},\n    {{{    11,      5,     17}, 0, {     0,      0}, {0xff, 0x1b, 0x7c, 0x00}}},\n};\n\n// 0x04019A68 - 0x04019CA0\nconst Gfx mario_left_hand_open_shared_dl[] = {\n    gsSPVertex(mario_left_hand_open_shared_dl_vertex_group1, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  3,  7, 0x0),\n    gsSP2Triangles( 1,  0,  5, 0x0,  5,  4,  1, 0x0),\n    gsSP2Triangles( 5,  3,  6, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 8, 11,  9, 0x0, 12, 13, 11, 0x0),\n    gsSPVertex(mario_left_hand_open_shared_dl_vertex_group2, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 0, 10,  7, 0x0, 11, 10,  0, 0x0),\n    gsSP2Triangles(12, 13, 11, 0x0,  9,  8, 13, 0x0),\n    gsSP2Triangles( 7,  5,  8, 0x0, 10, 14,  7, 0x0),\n    gsSP2Triangles(11, 14, 10, 0x0, 13,  4, 11, 0x0),\n    gsSP2Triangles( 8,  5, 13, 0x0,  3, 15,  1, 0x0),\n    gsSPVertex(mario_left_hand_open_shared_dl_vertex_group3, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  5,  3, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 1,  9, 10, 0x0,  5, 11,  1, 0x0),\n    gsSP2Triangles(12, 13,  5, 0x0, 14,  9, 15, 0x0),\n    gsSP1Triangle( 4,  7, 12, 0x0),\n    gsSPVertex(mario_left_hand_open_shared_dl_vertex_group4, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  7,  0,  2, 0x0),\n    gsSP2Triangles( 8,  6,  5, 0x0,  5,  9, 10, 0x0),\n    gsSP2Triangles(11,  3,  2, 0x0,  2, 12, 11, 0x0),\n    gsSP2Triangles( 3, 13,  9, 0x0,  6,  0,  7, 0x0),\n    gsSP2Triangles( 7,  4,  9, 0x0, 10, 14, 15, 0x0),\n    gsSP1Triangle(15, 14, 11, 0x0),\n    gsSPVertex(mario_left_hand_open_shared_dl_vertex_group5, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 4,  3,  5, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 7,  6,  0, 0x0,  2,  8,  9, 0x0),\n    gsSP2Triangles( 4, 10,  8, 0x0, 11, 10,  4, 0x0),\n    gsSP2Triangles( 7, 12, 11, 0x0,  9, 12,  7, 0x0),\n    gsSP2Triangles( 6,  3,  1, 0x0,  6,  5,  3, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 14, 10, 11, 0x0),\n    gsSP2Triangles( 8, 10, 15, 0x0, 10, 14, 15, 0x0),\n    gsSPVertex(mario_left_hand_open_shared_dl_vertex_group6, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x04019CA0 - 0x04019CC0\nconst Gfx mario_left_hand_open[] = {\n    gsSPLight(&mario_white_lights_group.l, 1),\n    gsSPLight(&mario_white_lights_group.a, 2),\n    gsSPDisplayList(mario_left_hand_open_shared_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x04019CC0\nstatic const Vtx mario_right_hand_open_dl_vertex_group1[] = {\n    {{{    81,     37,    -28}, 0, {     0,      0}, {0x18, 0x20, 0x88, 0x00}}},\n    {{{    76,     88,      9}, 0, {     0,      0}, {0xef, 0x7d, 0x00, 0x00}}},\n    {{{   125,     71,      9}, 0, {     0,      0}, {0x47, 0x5a, 0xcb, 0x00}}},\n    {{{   143,     31,     -1}, 0, {     0,      0}, {0x75, 0x06, 0xd2, 0x00}}},\n    {{{   136,     28,     31}, 0, {     0,      0}, {0x4a, 0xcf, 0x5a, 0x00}}},\n    {{{   124,     69,     30}, 0, {     0,      0}, {0x44, 0x49, 0x4d, 0x00}}},\n    {{{    84,     59,     25}, 0, {     0,      0}, {0x04, 0x15, 0x7c, 0x00}}},\n    {{{    86,    -19,    -13}, 0, {     0,      0}, {0x49, 0xb6, 0xb8, 0x00}}},\n    {{{    30,     13,    -30}, 0, {     0,      0}, {0xd3, 0x03, 0x8a, 0x00}}},\n    {{{    48,    -35,     -9}, 0, {     0,      0}, {0xf7, 0x94, 0xbe, 0x00}}},\n    {{{    30,    -32,     -4}, 0, {     0,      0}, {0x2f, 0x9f, 0xbe, 0x00}}},\n    {{{    46,    -35,     37}, 0, {     0,      0}, {0xd8, 0xa2, 0x4a, 0x00}}},\n    {{{    32,      2,     43}, 0, {     0,      0}, {0xe9, 0xeb, 0x7a, 0x00}}},\n    {{{    26,    -24,     28}, 0, {     0,      0}, {0x0d, 0xc8, 0x70, 0x00}}},\n};\n\n// 0x04019DA0\nstatic const Vtx mario_right_hand_open_dl_vertex_group2[] = {\n    {{{    20,     33,     48}, 0, {     0,      0}, {0xbf, 0x32, 0x60, 0x00}}},\n    {{{    13,     53,      5}, 0, {     0,      0}, {0xb0, 0x62, 0xfc, 0x00}}},\n    {{{     3,     36,      6}, 0, {     0,      0}, {0xce, 0x71, 0xe6, 0x00}}},\n    {{{    30,     13,    -30}, 0, {     0,      0}, {0xd3, 0x03, 0x8a, 0x00}}},\n    {{{     0,     -4,    -15}, 0, {     0,      0}, {0x8d, 0xda, 0xdc, 0x00}}},\n    {{{    11,    -38,     -3}, 0, {     0,      0}, {0xa9, 0xaa, 0xe0, 0x00}}},\n    {{{     7,    -30,     26}, 0, {     0,      0}, {0x9b, 0xc0, 0x29, 0x00}}},\n    {{{    30,    -32,     -4}, 0, {     0,      0}, {0x2f, 0x9f, 0xbe, 0x00}}},\n    {{{    25,    -46,     -9}, 0, {     0,      0}, {0x21, 0x97, 0xc1, 0x00}}},\n    {{{     7,      1,    -26}, 0, {     0,      0}, {0xee, 0x0d, 0x84, 0x00}}},\n    {{{    -9,     41,      5}, 0, {     0,      0}, {0xbc, 0x66, 0xe5, 0x00}}},\n    {{{    -1,     18,     42}, 0, {     0,      0}, {0xd9, 0x23, 0x73, 0x00}}},\n    {{{    19,    -36,     33}, 0, {     0,      0}, {0x1a, 0xa0, 0x4d, 0x00}}},\n    {{{    26,    -24,     28}, 0, {     0,      0}, {0x0d, 0xc8, 0x70, 0x00}}},\n    {{{   -12,     23,      6}, 0, {     0,      0}, {0x83, 0x07, 0xf1, 0x00}}},\n    {{{    76,     88,      9}, 0, {     0,      0}, {0xef, 0x7d, 0x00, 0x00}}},\n};\n\n// 0x04019EA0\nstatic const Vtx mario_right_hand_open_dl_vertex_group3[] = {\n    {{{    30,     13,    -30}, 0, {     0,      0}, {0xd3, 0x03, 0x8a, 0x00}}},\n    {{{    86,    -19,    -13}, 0, {     0,      0}, {0x49, 0xb6, 0xb8, 0x00}}},\n    {{{    48,    -35,     -9}, 0, {     0,      0}, {0xf7, 0x94, 0xbe, 0x00}}},\n    {{{    93,    -45,     36}, 0, {     0,      0}, {0x57, 0xac, 0x23, 0x00}}},\n    {{{    93,     -5,     22}, 0, {     0,      0}, {0x61, 0xfa, 0x50, 0x00}}},\n    {{{    81,    -15,     45}, 0, {     0,      0}, {0x2f, 0x13, 0x74, 0x00}}},\n    {{{    20,     33,     48}, 0, {     0,      0}, {0xbf, 0x32, 0x60, 0x00}}},\n    {{{    34,     43,     36}, 0, {     0,      0}, {0x0c, 0x3d, 0x6e, 0x00}}},\n    {{{    13,     53,      5}, 0, {     0,      0}, {0xb0, 0x62, 0xfc, 0x00}}},\n    {{{    81,     37,    -28}, 0, {     0,      0}, {0x18, 0x20, 0x88, 0x00}}},\n    {{{   143,     31,     -1}, 0, {     0,      0}, {0x75, 0x06, 0xd2, 0x00}}},\n    {{{   136,     28,     31}, 0, {     0,      0}, {0x4a, 0xcf, 0x5a, 0x00}}},\n    {{{    84,     59,     25}, 0, {     0,      0}, {0x04, 0x15, 0x7c, 0x00}}},\n    {{{    75,     11,     32}, 0, {     0,      0}, {0x3c, 0x23, 0x69, 0x00}}},\n    {{{   124,     69,     30}, 0, {     0,      0}, {0x44, 0x49, 0x4d, 0x00}}},\n    {{{   125,     71,      9}, 0, {     0,      0}, {0x47, 0x5a, 0xcb, 0x00}}},\n};\n\n// 0x04019FA0\nstatic const Vtx mario_right_hand_open_dl_vertex_group4[] = {\n    {{{    34,     43,     36}, 0, {     0,      0}, {0x0c, 0x3d, 0x6e, 0x00}}},\n    {{{    20,     33,     48}, 0, {     0,      0}, {0xbf, 0x32, 0x60, 0x00}}},\n    {{{    32,      2,     43}, 0, {     0,      0}, {0xe9, 0xeb, 0x7a, 0x00}}},\n    {{{    75,     11,     32}, 0, {     0,      0}, {0x3c, 0x23, 0x69, 0x00}}},\n    {{{    84,     59,     25}, 0, {     0,      0}, {0x04, 0x15, 0x7c, 0x00}}},\n    {{{    81,    -15,     45}, 0, {     0,      0}, {0x2f, 0x13, 0x74, 0x00}}},\n    {{{    46,    -35,     37}, 0, {     0,      0}, {0xd8, 0xa2, 0x4a, 0x00}}},\n    {{{    93,    -45,     36}, 0, {     0,      0}, {0x57, 0xac, 0x23, 0x00}}},\n    {{{    48,    -35,     -9}, 0, {     0,      0}, {0xf7, 0x94, 0xbe, 0x00}}},\n    {{{    86,    -19,    -13}, 0, {     0,      0}, {0x49, 0xb6, 0xb8, 0x00}}},\n    {{{    93,     -5,     22}, 0, {     0,      0}, {0x61, 0xfa, 0x50, 0x00}}},\n    {{{    76,     88,      9}, 0, {     0,      0}, {0xef, 0x7d, 0x00, 0x00}}},\n    {{{    13,     53,      5}, 0, {     0,      0}, {0xb0, 0x62, 0xfc, 0x00}}},\n    {{{   136,     28,     31}, 0, {     0,      0}, {0x4a, 0xcf, 0x5a, 0x00}}},\n    {{{    30,     13,    -30}, 0, {     0,      0}, {0xd3, 0x03, 0x8a, 0x00}}},\n    {{{    81,     37,    -28}, 0, {     0,      0}, {0x18, 0x20, 0x88, 0x00}}},\n};\n\n// 0x0401A0A0\nstatic const Vtx mario_right_hand_open_dl_vertex_group5[] = {\n    {{{    19,    -36,     33}, 0, {     0,      0}, {0x1a, 0xa0, 0x4d, 0x00}}},\n    {{{     7,    -30,     26}, 0, {     0,      0}, {0x9b, 0xc0, 0x29, 0x00}}},\n    {{{    11,    -38,     -3}, 0, {     0,      0}, {0xa9, 0xaa, 0xe0, 0x00}}},\n    {{{    -1,     18,     42}, 0, {     0,      0}, {0xd9, 0x23, 0x73, 0x00}}},\n    {{{    -7,      7,     32}, 0, {     0,      0}, {0x8a, 0xe2, 0x20, 0x00}}},\n    {{{   -12,     23,      6}, 0, {     0,      0}, {0x83, 0x07, 0xf1, 0x00}}},\n    {{{     7,      1,    -26}, 0, {     0,      0}, {0xee, 0x0d, 0x84, 0x00}}},\n    {{{     0,     -4,    -15}, 0, {     0,      0}, {0x8d, 0xda, 0xdc, 0x00}}},\n    {{{    30,    -32,     -4}, 0, {     0,      0}, {0x2f, 0x9f, 0xbe, 0x00}}},\n    {{{    26,    -24,     28}, 0, {     0,      0}, {0x0d, 0xc8, 0x70, 0x00}}},\n    {{{     9,     18,     35}, 0, {     0,      0}, {0xd8, 0x13, 0x76, 0x00}}},\n    {{{     3,     36,      6}, 0, {     0,      0}, {0xce, 0x71, 0xe6, 0x00}}},\n    {{{    16,      4,    -17}, 0, {     0,      0}, {0xf9, 0x11, 0x83, 0x00}}},\n    {{{    30,     13,    -30}, 0, {     0,      0}, {0xd3, 0x03, 0x8a, 0x00}}},\n    {{{    20,     33,     48}, 0, {     0,      0}, {0xbf, 0x32, 0x60, 0x00}}},\n    {{{    32,      2,     43}, 0, {     0,      0}, {0xe9, 0xeb, 0x7a, 0x00}}},\n};\n\n// 0x0401A1A0\nstatic const Vtx mario_right_hand_open_dl_vertex_group6[] = {\n    {{{    46,    -35,     37}, 0, {     0,      0}, {0xd8, 0xa2, 0x4a, 0x00}}},\n    {{{    26,    -24,     28}, 0, {     0,      0}, {0x0d, 0xc8, 0x70, 0x00}}},\n    {{{    30,    -32,     -4}, 0, {     0,      0}, {0x2f, 0x9f, 0xbe, 0x00}}},\n    {{{    16,      4,    -17}, 0, {     0,      0}, {0xf9, 0x11, 0x83, 0x00}}},\n    {{{    30,     13,    -30}, 0, {     0,      0}, {0xd3, 0x03, 0x8a, 0x00}}},\n};\n\n// 0x0401A1F0 - 0x0401A428\nconst Gfx mario_right_hand_open_dl[] = {\n    gsSPVertex(mario_right_hand_open_dl_vertex_group1, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  3,  4, 0x0),\n    gsSP2Triangles( 5,  2,  1, 0x0,  1,  6,  5, 0x0),\n    gsSP2Triangles( 4,  3,  5, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 9, 11, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(mario_right_hand_open_dl_vertex_group2, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9, 10,  2, 0x0,  2, 10, 11, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 12,  8,  7, 0x0),\n    gsSP2Triangles( 8,  5,  9, 0x0,  9, 14, 10, 0x0),\n    gsSP2Triangles(10, 14, 11, 0x0, 11,  6, 12, 0x0),\n    gsSP2Triangles(12,  5,  8, 0x0,  1, 15,  3, 0x0),\n    gsSPVertex(mario_right_hand_open_dl_vertex_group3, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10,  1, 0x0,  1, 11,  4, 0x0),\n    gsSP2Triangles( 4, 12, 13, 0x0, 14, 10, 15, 0x0),\n    gsSP1Triangle(13,  7,  5, 0x0),\n    gsSPVertex(mario_right_hand_open_dl_vertex_group4, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  9, 10,  7, 0x0),\n    gsSP2Triangles( 0,  4, 11, 0x0, 11, 12,  0, 0x0),\n    gsSP2Triangles(10, 13,  4, 0x0,  5,  2,  6, 0x0),\n    gsSP2Triangles(10,  3,  5, 0x0, 14, 15,  9, 0x0),\n    gsSP1Triangle(11, 15, 14, 0x0),\n    gsSPVertex(mario_right_hand_open_dl_vertex_group5, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 5,  4,  3, 0x0,  6,  7,  5, 0x0),\n    gsSP2Triangles( 2,  7,  6, 0x0,  8,  9,  0, 0x0),\n    gsSP2Triangles( 9, 10,  3, 0x0,  3, 10, 11, 0x0),\n    gsSP2Triangles(11, 12,  6, 0x0,  6, 12,  8, 0x0),\n    gsSP2Triangles( 1,  4,  7, 0x0,  4,  5,  7, 0x0),\n    gsSP2Triangles(13, 12, 11, 0x0, 11, 10, 14, 0x0),\n    gsSP2Triangles(15, 10,  9, 0x0, 15, 14, 10, 0x0),\n    gsSPVertex(mario_right_hand_open_dl_vertex_group6, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0401A428 - 0x0401A448\nconst Gfx mario_right_hand_open[] = {\n    gsSPLight(&mario_white_lights_group.l, 1),\n    gsSPLight(&mario_white_lights_group.a, 2),\n    gsSPDisplayList(mario_right_hand_open_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x0401A448 - 0x0401A478\nconst Gfx mario_metal_right_hand_open[] = {\n    gsSPDisplayList(mario_right_hand_open_dl),\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_TEXTURE_GEN),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_OFF),\n    gsSPEndDisplayList(),\n};\n\n// 0x0401A478\nstatic const Vtx mario_right_hand_cap_m_logo_dl_vertex[] = {\n    {{{   131,     47,     -1}, 0, {  1104,    228}, {0xd7, 0x60, 0xb8, 0xff}}},\n    {{{   107,    -19,    -33}, 0, {   474,     32}, {0xd1, 0x0e, 0x8c, 0xff}}},\n    {{{    78,     11,     40}, 0, {   772,    818}, {0xd0, 0x3e, 0x9d, 0xff}}},\n    {{{    70,    -52,     35}, 0, {   196,    800}, {0xc5, 0xde, 0x96, 0xff}}},\n    {{{   114,    -92,    -11}, 0, {  -148,    188}, {0xc4, 0xb8, 0xac, 0xff}}},\n};\n\n// 0x0401A4C8\nstatic const Vtx mario_right_hand_cap_hand_position_dl_vertex_group1[] = {\n    {{{     1,     24,     35}, 0, {     0,      0}, {0xd4, 0x3c, 0x66, 0xff}}},\n    {{{    29,      7,     48}, 0, {     0,      0}, {0xc3, 0xfa, 0x6e, 0xff}}},\n    {{{    29,     62,     34}, 0, {     0,      0}, {0xcd, 0x4c, 0x57, 0xff}}},\n    {{{    11,     60,     -3}, 0, {     0,      0}, {0xab, 0x59, 0xe6, 0xff}}},\n    {{{    56,     11,     65}, 0, {     0,      0}, {0xfc, 0x1b, 0x7b, 0xff}}},\n    {{{    54,     54,     44}, 0, {     0,      0}, {0x1f, 0x50, 0x5c, 0xff}}},\n    {{{    58,     81,      0}, 0, {     0,      0}, {0x13, 0x7a, 0xe8, 0xff}}},\n    {{{    -2,     41,      0}, 0, {     0,      0}, {0xee, 0x71, 0xca, 0xff}}},\n    {{{    35,      9,    -36}, 0, {     0,      0}, {0xe4, 0xf4, 0x85, 0xff}}},\n    {{{   -13,     26,     41}, 0, {     0,      0}, {0xee, 0x3c, 0x6e, 0xff}}},\n    {{{    23,    -25,     35}, 0, {     0,      0}, {0x04, 0xc2, 0x6e, 0xff}}},\n    {{{    75,    -32,     65}, 0, {     0,      0}, {0x08, 0xae, 0x60, 0xff}}},\n    {{{    16,      1,    -22}, 0, {     0,      0}, {0x04, 0x00, 0x82, 0xff}}},\n    {{{     4,     -3,    -32}, 0, {     0,      0}, {0x11, 0x06, 0x83, 0xff}}},\n    {{{   -19,     47,     -4}, 0, {     0,      0}, {0xad, 0x54, 0xd3, 0xff}}},\n};\n\n// 0x0401A5B8\nstatic const Vtx mario_right_hand_cap_hand_position_dl_vertex_group2[] = {\n    {{{   103,    -25,      1}, 0, {     0,      0}, {0x67, 0xc4, 0xd6, 0xff}}},\n    {{{    95,     -8,     52}, 0, {     0,      0}, {0x60, 0x06, 0x52, 0xff}}},\n    {{{    75,    -32,     65}, 0, {     0,      0}, {0x08, 0xae, 0x60, 0xff}}},\n    {{{    31,    -39,      0}, 0, {     0,      0}, {0x42, 0xa3, 0xca, 0xff}}},\n    {{{    23,    -25,     35}, 0, {     0,      0}, {0x04, 0xc2, 0x6e, 0xff}}},\n    {{{    13,    -37,     41}, 0, {     0,      0}, {0x12, 0xb1, 0x61, 0xff}}},\n    {{{    55,    -43,     -3}, 0, {     0,      0}, {0x00, 0x86, 0xe0, 0xff}}},\n    {{{   -13,     26,     41}, 0, {     0,      0}, {0xee, 0x3c, 0x6e, 0xff}}},\n    {{{     4,     -3,    -32}, 0, {     0,      0}, {0x11, 0x06, 0x83, 0xff}}},\n    {{{    16,      1,    -22}, 0, {     0,      0}, {0x04, 0x00, 0x82, 0xff}}},\n    {{{    35,      9,    -36}, 0, {     0,      0}, {0xe4, 0xf4, 0x85, 0xff}}},\n    {{{    24,    -55,     -4}, 0, {     0,      0}, {0x04, 0x8b, 0xd1, 0xff}}},\n    {{{    56,     11,     65}, 0, {     0,      0}, {0xfc, 0x1b, 0x7b, 0xff}}},\n    {{{   -15,    -12,      7}, 0, {     0,      0}, {0x8c, 0xcf, 0xf8, 0xff}}},\n    {{{    85,     15,     52}, 0, {     0,      0}, {0x40, 0x30, 0x62, 0xff}}},\n    {{{    54,     54,     44}, 0, {     0,      0}, {0x1f, 0x50, 0x5c, 0xff}}},\n};\n\n// 0x0401A6B8\nstatic const Vtx mario_right_hand_cap_hand_position_dl_vertex_group3[] = {\n    {{{    35,      9,    -36}, 0, {     0,      0}, {0xe4, 0xf4, 0x85, 0xff}}},\n    {{{    85,     30,    -32}, 0, {     0,      0}, {0x4f, 0x21, 0xa3, 0xff}}},\n    {{{   103,    -25,      1}, 0, {     0,      0}, {0x67, 0xc4, 0xd6, 0xff}}},\n    {{{    58,     81,      0}, 0, {     0,      0}, {0x13, 0x7a, 0xe8, 0xff}}},\n    {{{    24,    -55,     -4}, 0, {     0,      0}, {0x04, 0x8b, 0xd1, 0xff}}},\n    {{{   -15,    -12,      7}, 0, {     0,      0}, {0x8c, 0xcf, 0xf8, 0xff}}},\n    {{{     4,     -3,    -32}, 0, {     0,      0}, {0x11, 0x06, 0x83, 0xff}}},\n    {{{   -19,     47,     -4}, 0, {     0,      0}, {0xad, 0x54, 0xd3, 0xff}}},\n    {{{   -13,     26,     41}, 0, {     0,      0}, {0xee, 0x3c, 0x6e, 0xff}}},\n    {{{    13,    -37,     41}, 0, {     0,      0}, {0x12, 0xb1, 0x61, 0xff}}},\n    {{{    96,     39,     24}, 0, {     0,      0}, {0x6b, 0x39, 0x21, 0xff}}},\n    {{{    54,     54,     44}, 0, {     0,      0}, {0x1f, 0x50, 0x5c, 0xff}}},\n    {{{    95,     -8,     52}, 0, {     0,      0}, {0x60, 0x06, 0x52, 0xff}}},\n    {{{    85,     15,     52}, 0, {     0,      0}, {0x40, 0x30, 0x62, 0xff}}},\n};\n\n// 0x0401A798\nstatic const Vtx mario_right_hand_cap_top_dl_vertex_group1[] = {\n    {{{    29,    -82,     43}, 0, {     0,      0}, {0x95, 0xbd, 0x00, 0xff}}},\n    {{{    70,    -52,     35}, 0, {     0,      0}, {0xc5, 0xde, 0x96, 0xff}}},\n    {{{   106,   -124,     90}, 0, {     0,      0}, {0x9d, 0xb2, 0x09, 0xff}}},\n    {{{    65,    -53,     55}, 0, {     0,      0}, {0xb7, 0x01, 0x67, 0xff}}},\n    {{{   151,   -168,     67}, 0, {     0,      0}, {0xf4, 0x87, 0xdc, 0xff}}},\n    {{{   137,   -137,    134}, 0, {     0,      0}, {0x9f, 0xdf, 0x49, 0xff}}},\n    {{{   114,    -92,    -11}, 0, {     0,      0}, {0xc4, 0xb8, 0xac, 0xff}}},\n    {{{   228,   -121,    117}, 0, {     0,      0}, {0x66, 0xcd, 0xcb, 0xff}}},\n    {{{   182,    -72,     -8}, 0, {     0,      0}, {0x4d, 0xd9, 0xa4, 0xff}}},\n    {{{   181,   -167,    138}, 0, {     0,      0}, {0x06, 0x88, 0x26, 0xff}}},\n    {{{   171,   -129,    178}, 0, {     0,      0}, {0xb3, 0xd1, 0x58, 0xff}}},\n    {{{   160,     65,    148}, 0, {     0,      0}, {0xb3, 0x47, 0x47, 0xff}}},\n    {{{   211,     81,    156}, 0, {     0,      0}, {0x22, 0x6c, 0x37, 0xff}}},\n    {{{   183,    100,     86}, 0, {     0,      0}, {0x11, 0x7c, 0xed, 0xff}}},\n    {{{   129,     65,    103}, 0, {     0,      0}, {0xa7, 0x50, 0x27, 0xff}}},\n};\n\n// 0x0401A888\nstatic const Vtx mario_right_hand_cap_top_dl_vertex_group2[] = {\n    {{{    78,     11,     40}, 0, {     0,      0}, {0xd0, 0x3e, 0x9d, 0xff}}},\n    {{{   129,     65,    103}, 0, {     0,      0}, {0xa7, 0x50, 0x27, 0xff}}},\n    {{{   131,     47,     -1}, 0, {     0,      0}, {0xd7, 0x60, 0xb8, 0xff}}},\n    {{{    45,     49,     53}, 0, {     0,      0}, {0xa8, 0x5a, 0x0a, 0xff}}},\n    {{{    73,     11,     60}, 0, {     0,      0}, {0xbb, 0xfb, 0x6a, 0xff}}},\n    {{{   183,    100,     86}, 0, {     0,      0}, {0x11, 0x7c, 0xed, 0xff}}},\n    {{{   192,     42,    190}, 0, {     0,      0}, {0xb3, 0x23, 0x5d, 0xff}}},\n    {{{   211,     81,    156}, 0, {     0,      0}, {0x22, 0x6c, 0x37, 0xff}}},\n    {{{   160,     65,    148}, 0, {     0,      0}, {0xb3, 0x47, 0x47, 0xff}}},\n    {{{    18,    -13,     33}, 0, {     0,      0}, {0x84, 0x10, 0xed, 0xff}}},\n    {{{    70,    -52,     35}, 0, {     0,      0}, {0xc5, 0xde, 0x96, 0xff}}},\n    {{{   192,     11,     -2}, 0, {     0,      0}, {0x4b, 0x29, 0xa3, 0xff}}},\n    {{{   107,    -19,    -33}, 0, {     0,      0}, {0xd1, 0x0e, 0x8c, 0xff}}},\n    {{{   228,   -121,    117}, 0, {     0,      0}, {0x66, 0xcd, 0xcb, 0xff}}},\n    {{{   246,     29,    128}, 0, {     0,      0}, {0x72, 0x20, 0xd4, 0xff}}},\n    {{{   285,     -6,    196}, 0, {     0,      0}, {0x79, 0x23, 0x0b, 0xff}}},\n};\n\n// 0x0401A988\nstatic const Vtx mario_right_hand_cap_top_dl_vertex_group3[] = {\n    {{{    65,    -53,     55}, 0, {     0,      0}, {0xb7, 0x01, 0x67, 0xff}}},\n    {{{    18,    -13,     33}, 0, {     0,      0}, {0x84, 0x10, 0xed, 0xff}}},\n    {{{    29,    -82,     43}, 0, {     0,      0}, {0x95, 0xbd, 0x00, 0xff}}},\n    {{{    70,    -52,     35}, 0, {     0,      0}, {0xc5, 0xde, 0x96, 0xff}}},\n    {{{    73,     11,     60}, 0, {     0,      0}, {0xbb, 0xfb, 0x6a, 0xff}}},\n    {{{   114,    -92,    -11}, 0, {     0,      0}, {0xc4, 0xb8, 0xac, 0xff}}},\n    {{{   107,    -19,    -33}, 0, {     0,      0}, {0xd1, 0x0e, 0x8c, 0xff}}},\n    {{{   182,    -72,     -8}, 0, {     0,      0}, {0x4d, 0xd9, 0xa4, 0xff}}},\n    {{{   192,     11,     -2}, 0, {     0,      0}, {0x4b, 0x29, 0xa3, 0xff}}},\n    {{{   246,     29,    128}, 0, {     0,      0}, {0x72, 0x20, 0xd4, 0xff}}},\n    {{{   228,   -121,    117}, 0, {     0,      0}, {0x66, 0xcd, 0xcb, 0xff}}},\n    {{{   211,     81,    156}, 0, {     0,      0}, {0x22, 0x6c, 0x37, 0xff}}},\n    {{{   285,     -6,    196}, 0, {     0,      0}, {0x79, 0x23, 0x0b, 0xff}}},\n    {{{   273,   -105,    188}, 0, {     0,      0}, {0x5f, 0xbf, 0x34, 0xff}}},\n    {{{   181,   -167,    138}, 0, {     0,      0}, {0x06, 0x88, 0x26, 0xff}}},\n    {{{   228,      1,    228}, 0, {     0,      0}, {0x14, 0x22, 0x78, 0xff}}},\n};\n\n// 0x0401AA88\nstatic const Vtx mario_right_hand_cap_top_dl_vertex_group4[] = {\n    {{{   181,   -167,    138}, 0, {     0,      0}, {0x06, 0x88, 0x26, 0xff}}},\n    {{{   273,   -105,    188}, 0, {     0,      0}, {0x5f, 0xbf, 0x34, 0xff}}},\n    {{{   216,   -104,    220}, 0, {     0,      0}, {0xe5, 0xcc, 0x70, 0xff}}},\n    {{{   228,      1,    228}, 0, {     0,      0}, {0x14, 0x22, 0x78, 0xff}}},\n    {{{   285,     -6,    196}, 0, {     0,      0}, {0x79, 0x23, 0x0b, 0xff}}},\n    {{{   211,     81,    156}, 0, {     0,      0}, {0x22, 0x6c, 0x37, 0xff}}},\n    {{{   192,     42,    190}, 0, {     0,      0}, {0xb3, 0x23, 0x5d, 0xff}}},\n    {{{   171,   -129,    178}, 0, {     0,      0}, {0xb3, 0xd1, 0x58, 0xff}}},\n};\n\n// 0x0401AB08\nstatic const Vtx mario_right_hand_cap_bottom_dl_vertex[] = {\n    {{{    65,    -53,     55}, 0, {     0,      0}, {0xb7, 0x01, 0x67, 0xff}}},\n    {{{   106,   -124,     90}, 0, {     0,      0}, {0x9d, 0xb2, 0x09, 0xff}}},\n    {{{   137,   -137,    134}, 0, {     0,      0}, {0x9f, 0xdf, 0x49, 0xff}}},\n    {{{    73,     11,     60}, 0, {     0,      0}, {0xbb, 0xfb, 0x6a, 0xff}}},\n    {{{   129,     65,    103}, 0, {     0,      0}, {0xa7, 0x50, 0x27, 0xff}}},\n    {{{   160,     65,    148}, 0, {     0,      0}, {0xb3, 0x47, 0x47, 0xff}}},\n    {{{   192,     42,    190}, 0, {     0,      0}, {0xb3, 0x23, 0x5d, 0xff}}},\n    {{{   171,   -129,    178}, 0, {     0,      0}, {0xb3, 0xd1, 0x58, 0xff}}},\n    {{{   216,   -104,    220}, 0, {     0,      0}, {0xe5, 0xcc, 0x70, 0xff}}},\n    {{{   228,      1,    228}, 0, {     0,      0}, {0x14, 0x22, 0x78, 0xff}}},\n};\n\n// 0x0401ABA8 - 0x0401ABD0\nconst Gfx mario_right_hand_cap_m_logo_dl[] = {\n    gsSPVertex(mario_right_hand_cap_m_logo_dl_vertex, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP1Triangle( 1,  4,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0401ABD0 - 0x0401AD40\nconst Gfx mario_right_hand_cap_top_dl[] = {\n    gsSPVertex(mario_right_hand_cap_top_dl_vertex_group1, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  6,  2,  1, 0x0),\n    gsSP2Triangles( 2,  6,  4, 0x0,  7,  4,  8, 0x0),\n    gsSP2Triangles( 8,  4,  6, 0x0,  4,  9,  5, 0x0),\n    gsSP2Triangles( 4,  7,  9, 0x0,  5,  9, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 13, 14, 11, 0x0),\n    gsSPVertex(mario_right_hand_cap_top_dl_vertex_group2, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 0,  3,  1, 0x0,  5,  2,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  0,  9,  3, 0x0),\n    gsSP2Triangles(10,  9,  0, 0x0, 11, 12,  2, 0x0),\n    gsSP2Triangles( 2,  5, 11, 0x0,  3,  9,  4, 0x0),\n    gsSP2Triangles(13, 14, 15, 0x0, 11,  5, 14, 0x0),\n    gsSP1Triangle( 7, 14,  5, 0x0),\n    gsSPVertex(mario_right_hand_cap_top_dl_vertex_group3, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7,  6,  8, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0, 11, 12,  9, 0x0),\n    gsSP2Triangles(10, 13, 14, 0x0, 12, 13, 10, 0x0),\n    gsSP1Triangle(13, 12, 15, 0x0),\n    gsSPVertex(mario_right_hand_cap_top_dl_vertex_group4, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  3,  5,  6, 0x0),\n    gsSP1Triangle( 7,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0401AD40 - 0x0401AED0\nconst Gfx mario_right_hand_cap_hand_position_dl[] = {\n    gsSPVertex(mario_right_hand_cap_hand_position_dl_vertex_group1, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  2,  5,  6, 0x0),\n    gsSP2Triangles( 6,  3,  2, 0x0,  5,  2,  4, 0x0),\n    gsSP2Triangles( 3,  7,  0, 0x0,  3,  6,  8, 0x0),\n    gsSP2Triangles( 3,  8,  7, 0x0,  9,  0,  7, 0x0),\n    gsSP2Triangles(10,  0,  9, 0x0,  1,  0, 10, 0x0),\n    gsSP2Triangles(11,  1, 10, 0x0, 11,  4,  1, 0x0),\n    gsSP2Triangles( 7, 12, 13, 0x0,  8, 12,  7, 0x0),\n    gsSP2Triangles(13, 14,  7, 0x0,  7, 14,  9, 0x0),\n    gsSPVertex(mario_right_hand_cap_hand_position_dl_vertex_group2, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0,  6,  2,  4, 0x0),\n    gsSP2Triangles( 7,  5,  4, 0x0,  8,  9,  3, 0x0),\n    gsSP2Triangles( 3,  9, 10, 0x0, 10,  6,  3, 0x0),\n    gsSP2Triangles( 5, 11,  3, 0x0,  3, 11,  8, 0x0),\n    gsSP2Triangles(10,  0,  6, 0x0,  6,  0,  2, 0x0),\n    gsSP2Triangles( 2,  1, 12, 0x0,  5, 13, 11, 0x0),\n    gsSP2Triangles( 1, 14, 12, 0x0, 14, 15, 12, 0x0),\n    gsSPVertex(mario_right_hand_cap_hand_position_dl_vertex_group3, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 7,  5,  8, 0x0,  8,  5,  9, 0x0),\n    gsSP2Triangles( 3, 10,  1, 0x0, 11, 10,  3, 0x0),\n    gsSP2Triangles( 1, 10,  2, 0x0,  2, 10, 12, 0x0),\n    gsSP2Triangles(12, 10, 13, 0x0, 10, 11, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0401AED0 - 0x0401AF20\nconst Gfx mario_right_hand_cap_bottom_dl[] = {\n    gsSPVertex(mario_right_hand_cap_bottom_dl_vertex, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  3,  2, 0x0,  5,  4,  2, 0x0),\n    gsSP2Triangles( 6,  5,  2, 0x0,  6,  2,  7, 0x0),\n    gsSP2Triangles( 8,  9,  6, 0x0,  6,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0401AF20 - 0x0401AF60\nconst Gfx mario_right_hand_cap_dl[] = {\n    gsSPDisplayList(mario_right_hand_cap_top_dl),\n    gsSPLight(&mario_white_lights_group.l, 1),\n    gsSPLight(&mario_white_lights_group.a, 2),\n    gsSPDisplayList(mario_right_hand_cap_hand_position_dl),\n    gsSPLight(&mario_brown2_lights_group.l, 1),\n    gsSPLight(&mario_brown2_lights_group.a, 2),\n    gsSPDisplayList(mario_right_hand_cap_bottom_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x0401AF60\nstatic const Vtx mario_right_hand_cap_wings_half_1_dl_vertex[] = {\n    {{{   368,    146,      7}, 0, {   990,      0}, {0xbe, 0x65, 0xda, 0xff}}},\n    {{{   166,     37,     68}, 0, {     0,   2012}, {0xbe, 0x65, 0xda, 0xff}}},\n    {{{   212,     96,    143}, 0, {   990,   2012}, {0xbe, 0x65, 0xda, 0xff}}},\n    {{{   368,    146,      7}, 0, {   990,      0}, {0xbe, 0x64, 0xd9, 0xff}}},\n    {{{   322,     87,    -67}, 0, {     0,      0}, {0xbe, 0x64, 0xd9, 0xff}}},\n    {{{   166,     37,     68}, 0, {     0,   2012}, {0xbe, 0x64, 0xd9, 0xff}}},\n    {{{   178,   -177,    128}, 0, {   990,   2012}, {0xa8, 0xb4, 0xcf, 0xff}}},\n    {{{   149,   -100,     60}, 0, {     0,   2012}, {0xa8, 0xb4, 0xcf, 0xff}}},\n    {{{   319,   -248,    -14}, 0, {   990,      0}, {0xa8, 0xb4, 0xcf, 0xff}}},\n    {{{   290,   -171,    -81}, 0, {     0,      0}, {0xa8, 0xb4, 0xcf, 0xff}}},\n};\n\n// 0x0401B000\nstatic const Vtx mario_right_hand_cap_wings_half_2_dl_vertex[] = {\n    {{{   414,    206,     82}, 0, {   990,      0}, {0xbe, 0x64, 0xd9, 0xff}}},\n    {{{   212,     96,    143}, 0, {     0,   2012}, {0xbe, 0x64, 0xd9, 0xff}}},\n    {{{   258,    156,    218}, 0, {   990,   2012}, {0xbe, 0x64, 0xd9, 0xff}}},\n    {{{   368,    146,      7}, 0, {     0,      0}, {0xbe, 0x64, 0xd9, 0xff}}},\n    {{{   178,   -177,    128}, 0, {     0,   2012}, {0xa8, 0xb3, 0xcf, 0xff}}},\n    {{{   319,   -248,    -14}, 0, {     0,      0}, {0xa8, 0xb3, 0xcf, 0xff}}},\n    {{{   349,   -325,     53}, 0, {   990,      0}, {0xa8, 0xb3, 0xcf, 0xff}}},\n    {{{   207,   -253,    195}, 0, {   990,   2012}, {0xa8, 0xb3, 0xcf, 0xff}}},\n};\n\n// 0x0401B080 - 0x0401B0B0\nconst Gfx mario_right_hand_cap_wings_half_1_dl[] = {\n    gsSPVertex(mario_right_hand_cap_wings_half_1_dl_vertex, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0401B0B0 - 0x0401B0E0\nconst Gfx mario_right_hand_cap_wings_half_2_dl[] = {\n    gsSPVertex(mario_right_hand_cap_wings_half_2_dl_vertex, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0401B0E0 - 0x0401B138\nconst Gfx mario_right_hand_cap_wings_initial_dl[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADEA, G_CC_MODULATERGBFADEA),\n    gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsSPLight(&mario_white_lights_group.l, 1),\n    gsSPLight(&mario_white_lights_group.a, 2),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x0401B138 - 0x0401B158\nconst Gfx mario_right_hand_cap_wings_end_dl[] = {\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x0401B158 - 0x0401B1D8\nconst Gfx mario_right_hand_cap[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_m_logo),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_right_hand_cap_m_logo_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(mario_right_hand_cap_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x0401B1D8 - 0x0401B230\nconst Gfx mario_right_hand_cap_wings[] = {\n    gsSPDisplayList(mario_right_hand_cap_wings_initial_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_wings_half_1),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_right_hand_cap_wings_half_1_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_wings_half_2),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_right_hand_cap_wings_half_2_dl),\n    gsSPDisplayList(mario_right_hand_cap_wings_end_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x0401B230 - 0x0401B278\nconst Gfx mario_metal_right_hand_cap_shared_dl[] = {\n    gsSPDisplayList(mario_right_hand_cap_m_logo_dl),\n    gsSPDisplayList(mario_right_hand_cap_top_dl),\n    gsSPDisplayList(mario_right_hand_cap_hand_position_dl),\n    gsSPDisplayList(mario_right_hand_cap_bottom_dl),\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_TEXTURE_GEN),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_OFF),\n    gsSPEndDisplayList(),\n};\n\n// 0x0401B278 - 0x0401B2D0\nconst Gfx mario_metal_right_hand_cap_shared_dl_wings[] = {\n    gsSPDisplayList(mario_right_hand_cap_wings_initial_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_metal_wings_half_1),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_right_hand_cap_wings_half_1_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_metal_wings_half_2),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_right_hand_cap_wings_half_2_dl),\n    gsSPDisplayList(mario_right_hand_cap_wings_end_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x0401B2D0\nstatic const Vtx mario_right_hand_peace_shared_dl_vertex_group1[] = {\n    {{{   -21,      9,     33}, 0, {     0,      0}, {0x8a, 0xe1, 0x1f, 0x00}}},\n    {{{   -25,     24,      0}, 0, {     0,      0}, {0x84, 0xf8, 0xea, 0x00}}},\n    {{{    -8,    -12,    -20}, 0, {     0,      0}, {0x93, 0xcf, 0xd7, 0x00}}},\n    {{{     0,    -35,     32}, 0, {     0,      0}, {0x9d, 0xba, 0x22, 0xff}}},\n    {{{     6,    -49,      0}, 0, {     0,      0}, {0xa9, 0xa7, 0xec, 0xff}}},\n    {{{    88,    -34,     39}, 0, {     0,      0}, {0x38, 0xa1, 0x3d, 0xff}}},\n    {{{    90,     -3,     52}, 0, {     0,      0}, {0x50, 0x07, 0x61, 0xff}}},\n    {{{    45,    -29,     52}, 0, {     0,      0}, {0xeb, 0xb9, 0x66, 0xff}}},\n    {{{    23,    -29,     36}, 0, {     0,      0}, {0x12, 0xec, 0x7b, 0xff}}},\n    {{{    18,     30,     41}, 0, {     0,      0}, {0xc1, 0x2b, 0x64, 0xff}}},\n    {{{    46,     49,     45}, 0, {     0,      0}, {0xf8, 0x44, 0x6a, 0xff}}},\n    {{{     0,     21,     37}, 0, {     0,      0}, {0xfe, 0x44, 0x6a, 0xff}}},\n    {{{    56,    -47,     -5}, 0, {     0,      0}, {0x0c, 0x87, 0xde, 0xff}}},\n    {{{    56,     80,      1}, 0, {     0,      0}, {0x1a, 0x6a, 0x40, 0xff}}},\n    {{{     8,     58,     -2}, 0, {     0,      0}, {0xbc, 0x55, 0x40, 0xff}}},\n    {{{    84,     48,     24}, 0, {     0,      0}, {0x32, 0x3d, 0x62, 0xff}}},\n};\n\n// 0x0401B3D0\nstatic const Vtx mario_right_hand_peace_shared_dl_vertex_group2[] = {\n    {{{    33,      7,    -37}, 0, {     0,      0}, {0xde, 0xf5, 0x87, 0xff}}},\n    {{{    56,    -47,     -5}, 0, {     0,      0}, {0x0c, 0x87, 0xde, 0x00}}},\n    {{{    32,    -43,      0}, 0, {     0,      0}, {0xdd, 0xba, 0x9d, 0x00}}},\n    {{{    45,    -29,     52}, 0, {     0,      0}, {0xeb, 0xb9, 0x66, 0xff}}},\n    {{{    32,    -43,      0}, 0, {     0,      0}, {0xeb, 0x89, 0x24, 0xff}}},\n    {{{    18,     30,     41}, 0, {     0,      0}, {0xc1, 0x2b, 0x64, 0xff}}},\n    {{{     8,     58,     -2}, 0, {     0,      0}, {0xbc, 0x55, 0x40, 0xff}}},\n    {{{    -4,     38,      0}, 0, {     0,      0}, {0xd3, 0x66, 0x3c, 0xff}}},\n    {{{     8,     58,     -2}, 0, {     0,      0}, {0xd0, 0x30, 0x96, 0xff}}},\n    {{{    -4,     38,      0}, 0, {     0,      0}, {0xb3, 0x18, 0x9f, 0xff}}},\n    {{{    24,    -59,     -3}, 0, {     0,      0}, {0xc4, 0xb9, 0xab, 0xff}}},\n    {{{     6,    -49,      0}, 0, {     0,      0}, {0xa9, 0xa7, 0xec, 0xff}}},\n    {{{    -8,    -12,    -20}, 0, {     0,      0}, {0x93, 0xcf, 0xd7, 0xff}}},\n    {{{     2,     -5,    -33}, 0, {     0,      0}, {0xad, 0xda, 0xa9, 0xff}}},\n};\n\n// 0x0401B4B0\nstatic const Vtx mario_right_hand_peace_shared_dl_vertex_group3[] = {\n    {{{   -22,     43,     -3}, 0, {     0,      0}, {0x31, 0x4d, 0xa8, 0xff}}},\n    {{{    -4,     38,      0}, 0, {     0,      0}, {0x31, 0x4d, 0xa8, 0x00}}},\n    {{{    14,     -1,    -22}, 0, {     0,      0}, {0x47, 0x20, 0x9d, 0x00}}},\n    {{{     2,     -5,    -33}, 0, {     0,      0}, {0x47, 0x20, 0x9d, 0xff}}},\n    {{{   -22,     43,     -3}, 0, {     0,      0}, {0x86, 0x10, 0xe4, 0xff}}},\n    {{{   -25,     24,      0}, 0, {     0,      0}, {0x84, 0xf8, 0xea, 0xff}}},\n    {{{   -21,      9,     33}, 0, {     0,      0}, {0x8a, 0xe1, 0x1f, 0xff}}},\n    {{{   -15,     23,     43}, 0, {     0,      0}, {0xd6, 0x31, 0x6c, 0xff}}},\n    {{{     0,    -35,     32}, 0, {     0,      0}, {0x9d, 0xba, 0x22, 0xff}}},\n    {{{    15,    -39,     42}, 0, {     0,      0}, {0x0c, 0xbe, 0x6b, 0xff}}},\n    {{{     6,    -49,      0}, 0, {     0,      0}, {0xa9, 0xa7, 0xec, 0xff}}},\n    {{{    24,    -59,     -3}, 0, {     0,      0}, {0xce, 0x92, 0x24, 0xff}}},\n    {{{     8,     58,     -2}, 0, {     0,      0}, {0xd0, 0x30, 0x96, 0xff}}},\n    {{{    56,     80,      1}, 0, {     0,      0}, {0xfe, 0x41, 0x94, 0xff}}},\n    {{{    33,      7,    -37}, 0, {     0,      0}, {0xde, 0xf5, 0x87, 0xff}}},\n};\n\n// 0x0401B5A0\nstatic const Vtx mario_right_hand_peace_shared_dl_vertex_group4[] = {\n    {{{   101,    -29,     15}, 0, {     0,      0}, {0x53, 0xa3, 0x15, 0xff}}},\n    {{{    88,    -34,     39}, 0, {     0,      0}, {0x38, 0xa1, 0x3d, 0x00}}},\n    {{{    56,    -47,     -5}, 0, {     0,      0}, {0x0c, 0x87, 0xde, 0x00}}},\n    {{{    56,     80,      1}, 0, {     0,      0}, {0xfe, 0x41, 0x94, 0xff}}},\n    {{{    84,     60,     -7}, 0, {     0,      0}, {0xfb, 0x44, 0x96, 0xff}}},\n    {{{    89,     18,    -34}, 0, {     0,      0}, {0x0a, 0x1b, 0x85, 0xff}}},\n    {{{   105,     17,      3}, 0, {     0,      0}, {0x0a, 0x7c, 0x14, 0xff}}},\n    {{{    98,     10,     29}, 0, {     0,      0}, {0x0a, 0x7a, 0x21, 0xff}}},\n    {{{   153,      7,     24}, 0, {     0,      0}, {0x0c, 0x7a, 0x1e, 0xff}}},\n    {{{    46,     49,     45}, 0, {     0,      0}, {0xf8, 0x44, 0x6a, 0xff}}},\n    {{{    84,     48,     24}, 0, {     0,      0}, {0x32, 0x3d, 0x62, 0xff}}},\n    {{{    56,     80,      1}, 0, {     0,      0}, {0x1a, 0x6a, 0x40, 0xff}}},\n    {{{    33,      7,    -37}, 0, {     0,      0}, {0xde, 0xf5, 0x87, 0xff}}},\n    {{{    94,    -22,    -18}, 0, {     0,      0}, {0x07, 0xcd, 0x8d, 0xff}}},\n    {{{    14,     -1,    -22}, 0, {     0,      0}, {0xbe, 0xe5, 0x98, 0xff}}},\n    {{{    -4,     38,      0}, 0, {     0,      0}, {0xb3, 0x18, 0x9f, 0xff}}},\n};\n\n// 0x0401B6A0\nstatic const Vtx mario_right_hand_peace_shared_dl_vertex_group5[] = {\n    {{{    -4,     38,      0}, 0, {     0,      0}, {0xd3, 0x66, 0x3c, 0xff}}},\n    {{{     0,     21,     37}, 0, {     0,      0}, {0xfe, 0x44, 0x6a, 0x00}}},\n    {{{    18,     30,     41}, 0, {     0,      0}, {0xc1, 0x2b, 0x64, 0x00}}},\n    {{{    45,    -29,     52}, 0, {     0,      0}, {0xeb, 0xb9, 0x66, 0xff}}},\n    {{{    23,    -29,     36}, 0, {     0,      0}, {0xe3, 0x8b, 0x25, 0xff}}},\n    {{{    32,    -43,      0}, 0, {     0,      0}, {0xeb, 0x89, 0x24, 0xff}}},\n    {{{    32,    -43,      0}, 0, {     0,      0}, {0xdd, 0xba, 0x9d, 0xff}}},\n    {{{    14,     -1,    -22}, 0, {     0,      0}, {0xbe, 0xe5, 0x98, 0xff}}},\n    {{{    33,      7,    -37}, 0, {     0,      0}, {0xde, 0xf5, 0x87, 0xff}}},\n    {{{   166,    -13,    -17}, 0, {     0,      0}, {0x7a, 0x08, 0x21, 0xff}}},\n    {{{   162,     14,    -11}, 0, {     0,      0}, {0x79, 0x01, 0x25, 0xff}}},\n    {{{   153,      7,     24}, 0, {     0,      0}, {0x7a, 0x08, 0x21, 0xff}}},\n    {{{   155,    -15,     21}, 0, {     0,      0}, {0x79, 0x06, 0x23, 0xff}}},\n    {{{    84,     60,     -7}, 0, {     0,      0}, {0xc2, 0x66, 0x28, 0xff}}},\n    {{{    84,     48,     24}, 0, {     0,      0}, {0xc2, 0x66, 0x28, 0xff}}},\n    {{{   126,     84,     -3}, 0, {     0,      0}, {0xc2, 0x66, 0x28, 0xff}}},\n};\n\n// 0x0401B7A0\nstatic const Vtx mario_right_hand_peace_shared_dl_vertex_group6[] = {\n    {{{   146,     59,     -8}, 0, {     0,      0}, {0x5d, 0x4d, 0x26, 0xff}}},\n    {{{   126,     84,     -3}, 0, {     0,      0}, {0x5f, 0x47, 0x2a, 0x00}}},\n    {{{   123,     72,     21}, 0, {     0,      0}, {0x5d, 0x4d, 0x26, 0x00}}},\n    {{{   126,     84,     -3}, 0, {     0,      0}, {0xfd, 0x37, 0x8e, 0xff}}},\n    {{{    89,     18,    -34}, 0, {     0,      0}, {0x0a, 0x1b, 0x85, 0xff}}},\n    {{{    84,     60,     -7}, 0, {     0,      0}, {0xfb, 0x44, 0x96, 0xff}}},\n    {{{   146,     59,     -8}, 0, {     0,      0}, {0x15, 0x2a, 0x8b, 0xff}}},\n    {{{   162,     14,    -11}, 0, {     0,      0}, {0x0a, 0x7d, 0x0d, 0xff}}},\n    {{{    89,     18,    -34}, 0, {     0,      0}, {0x06, 0x7e, 0xff, 0xff}}},\n    {{{   105,     17,      3}, 0, {     0,      0}, {0x0a, 0x7c, 0x14, 0xff}}},\n    {{{   162,     14,    -11}, 0, {     0,      0}, {0x26, 0x1e, 0x8b, 0xff}}},\n    {{{   166,    -13,    -17}, 0, {     0,      0}, {0x18, 0xf9, 0x84, 0xff}}},\n    {{{    56,     80,      1}, 0, {     0,      0}, {0x1a, 0x6a, 0x40, 0xff}}},\n    {{{    84,     48,     24}, 0, {     0,      0}, {0x32, 0x3d, 0x62, 0xff}}},\n    {{{    84,     60,     -7}, 0, {     0,      0}, {0x4d, 0x5d, 0x24, 0xff}}},\n};\n\n// 0x0401B890\nstatic const Vtx mario_right_hand_peace_shared_dl_vertex_group7[] = {\n    {{{   139,     53,     25}, 0, {     0,      0}, {0x5b, 0xa8, 0x02, 0xff}}},\n    {{{   105,     17,      3}, 0, {     0,      0}, {0x59, 0xa6, 0xf7, 0x00}}},\n    {{{   146,     59,     -8}, 0, {     0,      0}, {0x57, 0xa6, 0xf0, 0x00}}},\n    {{{    33,      7,    -37}, 0, {     0,      0}, {0xde, 0xf5, 0x87, 0xff}}},\n    {{{    89,     18,    -34}, 0, {     0,      0}, {0x0a, 0x1b, 0x85, 0xff}}},\n    {{{    94,    -22,    -18}, 0, {     0,      0}, {0x07, 0xcd, 0x8d, 0xff}}},\n    {{{    88,    -34,     39}, 0, {     0,      0}, {0x38, 0xa1, 0x3d, 0xff}}},\n    {{{   101,    -29,     15}, 0, {     0,      0}, {0x53, 0xa3, 0x15, 0xff}}},\n    {{{    90,     -3,     52}, 0, {     0,      0}, {0x50, 0x07, 0x61, 0xff}}},\n    {{{    94,    -22,    -18}, 0, {     0,      0}, {0x1c, 0x85, 0x00, 0xff}}},\n    {{{   155,    -15,     21}, 0, {     0,      0}, {0x19, 0x85, 0xf1, 0xff}}},\n    {{{   166,    -13,    -17}, 0, {     0,      0}, {0x10, 0x83, 0x00, 0xff}}},\n    {{{   101,    -29,     15}, 0, {     0,      0}, {0xff, 0xe2, 0x7b, 0xff}}},\n    {{{   153,      7,     24}, 0, {     0,      0}, {0xff, 0xe2, 0x7b, 0xff}}},\n    {{{    98,     10,     29}, 0, {     0,      0}, {0x07, 0xd6, 0x77, 0xff}}},\n};\n\n// 0x0401B980\nstatic const Vtx mario_right_hand_peace_shared_dl_vertex_group8[] = {\n    {{{   139,     53,     25}, 0, {     0,      0}, {0xfc, 0x13, 0x7d, 0xff}}},\n    {{{   123,     72,     21}, 0, {     0,      0}, {0xfc, 0x15, 0x7d, 0x00}}},\n    {{{    84,     48,     24}, 0, {     0,      0}, {0x32, 0x3d, 0x62, 0x00}}},\n    {{{    98,     10,     29}, 0, {     0,      0}, {0x55, 0x16, 0x5b, 0xff}}},\n    {{{   101,    -29,     15}, 0, {     0,      0}, {0xff, 0xe2, 0x7b, 0xff}}},\n    {{{   155,    -15,     21}, 0, {     0,      0}, {0xf5, 0xef, 0x7d, 0xff}}},\n    {{{   153,      7,     24}, 0, {     0,      0}, {0xff, 0xe2, 0x7b, 0xff}}},\n    {{{    90,     -3,     52}, 0, {     0,      0}, {0x50, 0x07, 0x61, 0xff}}},\n    {{{   101,    -29,     15}, 0, {     0,      0}, {0x53, 0xa3, 0x15, 0xff}}},\n    {{{   146,     59,     -8}, 0, {     0,      0}, {0x57, 0xa6, 0xf0, 0xff}}},\n    {{{   105,     17,      3}, 0, {     0,      0}, {0x59, 0xa6, 0xf7, 0xff}}},\n    {{{    89,     18,    -34}, 0, {     0,      0}, {0x51, 0xa6, 0xdd, 0xff}}},\n    {{{   166,    -13,    -17}, 0, {     0,      0}, {0x18, 0xf9, 0x84, 0xff}}},\n    {{{    94,    -22,    -18}, 0, {     0,      0}, {0x07, 0xcd, 0x8d, 0xff}}},\n    {{{    89,     18,    -34}, 0, {     0,      0}, {0x0a, 0x1b, 0x85, 0xff}}},\n};\n\n// 0x0401BA70\nstatic const Vtx mario_right_hand_peace_shared_dl_vertex_group9[] = {\n    {{{    84,     48,     24}, 0, {     0,      0}, {0xc2, 0x66, 0x28, 0xff}}},\n    {{{   123,     72,     21}, 0, {     0,      0}, {0xc3, 0x66, 0x29, 0x00}}},\n    {{{   126,     84,     -3}, 0, {     0,      0}, {0xc2, 0x66, 0x28, 0x00}}},\n    {{{   139,     53,     25}, 0, {     0,      0}, {0x5b, 0xa8, 0x02, 0xff}}},\n    {{{    98,     10,     29}, 0, {     0,      0}, {0x5b, 0xa8, 0x02, 0xff}}},\n    {{{   105,     17,      3}, 0, {     0,      0}, {0x59, 0xa6, 0xf7, 0xff}}},\n    {{{   105,     17,      3}, 0, {     0,      0}, {0x0a, 0x7c, 0x14, 0xff}}},\n    {{{   153,      7,     24}, 0, {     0,      0}, {0x0c, 0x7a, 0x1e, 0xff}}},\n    {{{   162,     14,    -11}, 0, {     0,      0}, {0x0a, 0x7d, 0x0d, 0xff}}},\n    {{{   123,     72,     21}, 0, {     0,      0}, {0x5d, 0x4d, 0x26, 0xff}}},\n    {{{   139,     53,     25}, 0, {     0,      0}, {0x5a, 0x52, 0x21, 0xff}}},\n    {{{   146,     59,     -8}, 0, {     0,      0}, {0x5d, 0x4d, 0x26, 0xff}}},\n    {{{    24,    -59,     -3}, 0, {     0,      0}, {0x68, 0xc7, 0x2c, 0xff}}},\n    {{{    32,    -43,      0}, 0, {     0,      0}, {0x68, 0xc7, 0x2c, 0xff}}},\n    {{{    23,    -29,     36}, 0, {     0,      0}, {0x12, 0xec, 0x7b, 0xff}}},\n    {{{    15,    -39,     42}, 0, {     0,      0}, {0x0c, 0xbe, 0x6b, 0xff}}},\n};\n\n// 0x0401BB70\nstatic const Vtx mario_right_hand_peace_shared_dl_vertex_group10[] = {\n    {{{     2,     -5,    -33}, 0, {     0,      0}, {0x47, 0x20, 0x9d, 0xff}}},\n    {{{    14,     -1,    -22}, 0, {     0,      0}, {0x47, 0x20, 0x9d, 0x00}}},\n    {{{    32,    -43,      0}, 0, {     0,      0}, {0x52, 0xee, 0xa2, 0x00}}},\n    {{{    24,    -59,     -3}, 0, {     0,      0}, {0x52, 0xee, 0xa2, 0xff}}},\n    {{{     2,     -5,    -33}, 0, {     0,      0}, {0xad, 0xda, 0xa9, 0xff}}},\n    {{{    -8,    -12,    -20}, 0, {     0,      0}, {0x93, 0xcf, 0xd7, 0xff}}},\n    {{{   -25,     24,      0}, 0, {     0,      0}, {0x84, 0xf8, 0xea, 0xff}}},\n    {{{   -22,     43,     -3}, 0, {     0,      0}, {0x86, 0x10, 0xe4, 0xff}}},\n    {{{   -15,     23,     43}, 0, {     0,      0}, {0xd6, 0x31, 0x6c, 0xff}}},\n    {{{     0,     21,     37}, 0, {     0,      0}, {0xfe, 0x44, 0x6a, 0xff}}},\n    {{{    -4,     38,      0}, 0, {     0,      0}, {0xd3, 0x66, 0x3c, 0xff}}},\n    {{{   -22,     43,     -3}, 0, {     0,      0}, {0x1a, 0x72, 0x2f, 0xff}}},\n    {{{    15,    -39,     42}, 0, {     0,      0}, {0x0c, 0xbe, 0x6b, 0xff}}},\n    {{{    23,    -29,     36}, 0, {     0,      0}, {0x12, 0xec, 0x7b, 0xff}}},\n};\n\n// 0x0401BC50\nstatic const Vtx mario_right_hand_peace_shared_dl_vertex_group11[] = {\n    {{{   101,    -29,     15}, 0, {     0,      0}, {0x53, 0xa3, 0x15, 0xff}}},\n    {{{    56,    -47,     -5}, 0, {     0,      0}, {0x0c, 0x87, 0xde, 0x00}}},\n    {{{    94,    -22,    -18}, 0, {     0,      0}, {0x1c, 0x85, 0x00, 0x00}}},\n};\n\n// 0x0401BC80 - 0x0401BF30\nconst Gfx mario_right_hand_peace_shared_dl[] = {\n    gsSPVertex(mario_right_hand_peace_shared_dl_vertex_group1, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 2,  4,  3, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  7,  9, 0x0,  7,  6, 10, 0x0),\n    gsSP2Triangles( 7, 10,  9, 0x0, 11,  8,  9, 0x0),\n    gsSP2Triangles( 7, 12,  5, 0x0, 10, 13, 14, 0x0),\n    gsSP2Triangles( 6, 15, 10, 0x0, 10, 14,  9, 0x0),\n    gsSPVertex(mario_right_hand_peace_shared_dl_vertex_group2, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  0,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(mario_right_hand_peace_shared_dl_vertex_group3, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(mario_right_hand_peace_shared_dl_vertex_group4, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 2, 12, 13, 0x0,  3,  5, 12, 0x0),\n    gsSP1Triangle(12, 14, 15, 0x0),\n    gsSPVertex(mario_right_hand_peace_shared_dl_vertex_group5, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(mario_right_hand_peace_shared_dl_vertex_group6, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 4, 10, 11, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(mario_right_hand_peace_shared_dl_vertex_group7, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10,  7, 0x0),\n    gsSP2Triangles(10,  9, 11, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(mario_right_hand_peace_shared_dl_vertex_group8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  3,  2,  7, 0x0),\n    gsSP2Triangles( 8,  3,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(mario_right_hand_peace_shared_dl_vertex_group9, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(mario_right_hand_peace_shared_dl_vertex_group10, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13,  9, 0x0, 12,  9,  8, 0x0),\n    gsSPVertex(mario_right_hand_peace_shared_dl_vertex_group11, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0401BF30 - 0x0401BF50\nconst Gfx mario_right_hand_peace[] = {\n    gsSPLight(&mario_white_lights_group.l, 1),\n    gsSPLight(&mario_white_lights_group.a, 2),\n    gsSPDisplayList(mario_right_hand_peace_shared_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x0401BF50\nstatic const Vtx mario_cap_unused_m_logo_dl_vertex[] = {\n    {{{    33,     35,    118}, 0, {   728,    758}, {0x30, 0x26, 0x6e, 0xff}}},\n    {{{    96,     22,     45}, 0, {  1240,    876}, {0x48, 0xa4, 0x31, 0xff}}},\n    {{{    71,    101,    113}, 0, {  1028,    148}, {0x55, 0x16, 0x5b, 0xff}}},\n    {{{     0,    110,    143}, 0, {   460,     68}, {0x00, 0x34, 0x73, 0xff}}},\n    {{{   -31,     35,    118}, 0, {   206,    762}, {0xd0, 0x26, 0x6f, 0xff}}},\n    {{{   -70,    101,    113}, 0, {  -106,    158}, {0xab, 0x16, 0x5b, 0xff}}},\n    {{{   -95,     22,     46}, 0, {  -302,    890}, {0xa8, 0xb9, 0x38, 0xff}}},\n};\n\n// 0x0401BFC0\nstatic const Vtx mario_cap_unused_base_top_dl_vertex_group1[] = {\n    {{{   -66,      2,    139}, 0, {     0,      0}, {0xb0, 0xbb, 0x45, 0xff}}},\n    {{{     0,      0,    163}, 0, {     0,      0}, {0x00, 0xba, 0x69, 0xff}}},\n    {{{   -31,     35,    118}, 0, {     0,      0}, {0xd0, 0x26, 0x6f, 0xff}}},\n    {{{   -32,     17,    109}, 0, {     0,      0}, {0x00, 0x83, 0xf0, 0xff}}},\n    {{{    33,     17,    109}, 0, {     0,      0}, {0xfb, 0x84, 0xea, 0xff}}},\n    {{{   -95,     22,     46}, 0, {     0,      0}, {0xa8, 0xb9, 0x38, 0xff}}},\n    {{{  -101,     10,     -7}, 0, {     0,      0}, {0xd8, 0x89, 0x11, 0xff}}},\n    {{{   -70,    101,    113}, 0, {     0,      0}, {0xab, 0x16, 0x5b, 0xff}}},\n    {{{  -135,     70,     23}, 0, {     0,      0}, {0x84, 0x15, 0x10, 0xff}}},\n    {{{  -125,     38,    -45}, 0, {     0,      0}, {0x8d, 0xec, 0xd1, 0xff}}},\n    {{{   -86,      1,    -60}, 0, {     0,      0}, {0xce, 0x8c, 0xf6, 0xff}}},\n    {{{   -41,    144,     64}, 0, {     0,      0}, {0xdc, 0x79, 0x00, 0xff}}},\n    {{{   -76,     84,    -60}, 0, {     0,      0}, {0xd5, 0x6e, 0xd3, 0xff}}},\n    {{{   136,     70,     22}, 0, {     0,      0}, {0x7b, 0x16, 0x10, 0xff}}},\n    {{{    71,    101,    113}, 0, {     0,      0}, {0x55, 0x16, 0x5b, 0xff}}},\n    {{{    96,     22,     45}, 0, {     0,      0}, {0x48, 0xa4, 0x31, 0xff}}},\n};\n\n// 0x0401C0C0\nstatic const Vtx mario_cap_unused_base_top_dl_vertex_group2[] = {\n    {{{    42,    144,     64}, 0, {     0,      0}, {0x2b, 0x76, 0x0d, 0xff}}},\n    {{{   136,     70,     22}, 0, {     0,      0}, {0x7b, 0x16, 0x10, 0xff}}},\n    {{{    76,     84,    -60}, 0, {     0,      0}, {0x2a, 0x6c, 0xcf, 0xff}}},\n    {{{   103,     10,     -6}, 0, {     0,      0}, {0x42, 0x96, 0x12, 0xff}}},\n    {{{   126,     38,    -46}, 0, {     0,      0}, {0x73, 0xec, 0xd0, 0xff}}},\n    {{{    71,    101,    113}, 0, {     0,      0}, {0x55, 0x16, 0x5b, 0xff}}},\n    {{{    96,     22,     45}, 0, {     0,      0}, {0x48, 0xa4, 0x31, 0xff}}},\n    {{{    67,      2,    139}, 0, {     0,      0}, {0x50, 0xba, 0x44, 0xff}}},\n    {{{    33,     17,    109}, 0, {     0,      0}, {0xfb, 0x84, 0xea, 0xff}}},\n    {{{    33,     35,    118}, 0, {     0,      0}, {0x30, 0x26, 0x6e, 0xff}}},\n    {{{    86,      1,    -60}, 0, {     0,      0}, {0x20, 0x86, 0xfe, 0xff}}},\n    {{{     0,      0,    163}, 0, {     0,      0}, {0x00, 0xba, 0x69, 0xff}}},\n    {{{   -31,     35,    118}, 0, {     0,      0}, {0xd0, 0x26, 0x6f, 0xff}}},\n    {{{    53,      0,   -118}, 0, {     0,      0}, {0x2c, 0xb5, 0xa5, 0xff}}},\n    {{{    49,     62,   -139}, 0, {     0,      0}, {0x32, 0x49, 0xa6, 0xff}}},\n};\n\n// 0x0401C1B0\nstatic const Vtx mario_cap_unused_base_top_dl_vertex_group3[] = {\n    {{{   -76,     84,    -60}, 0, {     0,      0}, {0xd5, 0x6e, 0xd3, 0xff}}},\n    {{{   -41,    144,     64}, 0, {     0,      0}, {0xdc, 0x79, 0x00, 0xff}}},\n    {{{    76,     84,    -60}, 0, {     0,      0}, {0x2a, 0x6c, 0xcf, 0xff}}},\n    {{{     0,    110,    143}, 0, {     0,      0}, {0x00, 0x34, 0x73, 0xff}}},\n    {{{    42,    144,     64}, 0, {     0,      0}, {0x2b, 0x76, 0x0d, 0xff}}},\n    {{{   -70,    101,    113}, 0, {     0,      0}, {0xab, 0x16, 0x5b, 0xff}}},\n    {{{    71,    101,    113}, 0, {     0,      0}, {0x55, 0x16, 0x5b, 0xff}}},\n    {{{    49,     62,   -139}, 0, {     0,      0}, {0x32, 0x49, 0xa6, 0xff}}},\n    {{{   126,     38,    -46}, 0, {     0,      0}, {0x73, 0xec, 0xd0, 0xff}}},\n    {{{   -52,      0,   -118}, 0, {     0,      0}, {0xd2, 0x9d, 0xc1, 0xff}}},\n    {{{   -49,     62,   -138}, 0, {     0,      0}, {0xce, 0x1a, 0x8f, 0xff}}},\n    {{{    53,      0,   -118}, 0, {     0,      0}, {0x2c, 0xb5, 0xa5, 0xff}}},\n    {{{  -125,     38,    -45}, 0, {     0,      0}, {0x8d, 0xec, 0xd1, 0xff}}},\n    {{{    86,      1,    -60}, 0, {     0,      0}, {0x20, 0x86, 0xfe, 0xff}}},\n    {{{   -86,      1,    -60}, 0, {     0,      0}, {0xce, 0x8c, 0xf6, 0xff}}},\n};\n\n// 0x0401C2A0\nstatic const Vtx mario_cap_unused_base_bottom_dl_vertex[] = {\n    {{{    86,      1,    -60}, 0, {     0,      0}, {0x20, 0x86, 0xfe, 0xff}}},\n    {{{   -86,      1,    -60}, 0, {     0,      0}, {0xce, 0x8c, 0xf6, 0xff}}},\n    {{{   -52,      0,   -118}, 0, {     0,      0}, {0xd2, 0x9d, 0xc1, 0xff}}},\n    {{{    33,     17,    109}, 0, {     0,      0}, {0xfb, 0x84, 0xea, 0xff}}},\n    {{{   -32,     17,    109}, 0, {     0,      0}, {0x00, 0x83, 0xf0, 0xff}}},\n    {{{  -101,     10,     -7}, 0, {     0,      0}, {0xd8, 0x89, 0x11, 0xff}}},\n    {{{    96,     22,     45}, 0, {     0,      0}, {0x48, 0xa4, 0x31, 0xff}}},\n    {{{   103,     10,     -6}, 0, {     0,      0}, {0x42, 0x96, 0x12, 0xff}}},\n    {{{    53,      0,   -118}, 0, {     0,      0}, {0x2c, 0xb5, 0xa5, 0xff}}},\n};\n\n// 0x0401C330 - 0x0401C368\nconst Gfx mario_cap_unused_m_logo_dl[] = {\n    gsSPVertex(mario_cap_unused_m_logo_dl_vertex, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 3,  5,  4, 0x0,  2,  3,  0, 0x0),\n    gsSP1Triangle( 5,  6,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0401C368 - 0x0401C4C8\nconst Gfx mario_cap_unused_base_top_dl[] = {\n    gsSPVertex(mario_cap_unused_base_top_dl_vertex_group1, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 3,  1,  0, 0x0,  3,  5,  6, 0x0),\n    gsSP2Triangles( 3,  0,  5, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 6,  9, 10, 0x0,  8,  9,  6, 0x0),\n    gsSP2Triangles(11,  8,  7, 0x0,  8, 12,  9, 0x0),\n    gsSP2Triangles(12,  8, 11, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(mario_cap_unused_base_top_dl_vertex_group2, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 4,  2,  1, 0x0,  5,  1,  0, 0x0),\n    gsSP2Triangles( 1,  6,  3, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9,  7,  6, 0x0, 10,  4,  3, 0x0),\n    gsSP2Triangles( 9, 11,  7, 0x0,  7, 11,  8, 0x0),\n    gsSP2Triangles(12, 11,  9, 0x0, 13, 14,  4, 0x0),\n    gsSPVertex(mario_cap_unused_base_top_dl_vertex_group3, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 5,  3,  1, 0x0,  1,  4,  2, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0,  0,  2,  7, 0x0),\n    gsSP2Triangles( 8,  7,  2, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 10,  9, 0x0,  7, 10,  0, 0x0),\n    gsSP2Triangles(10,  7, 11, 0x0,  0, 10, 12, 0x0),\n    gsSP2Triangles(11,  8, 13, 0x0, 14, 12,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0401C4C8 - 0x0401C510\nconst Gfx mario_cap_unused_base_bottom_dl[] = {\n    gsSPVertex(mario_cap_unused_base_bottom_dl_vertex, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  6,  5, 0x0),\n    gsSP2Triangles( 0,  7,  5, 0x0,  0,  5,  1, 0x0),\n    gsSP1Triangle( 2,  8,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0401C510 - 0x0401C538\nconst Gfx mario_cap_unused_base_dl[] = {\n    gsSPDisplayList(mario_cap_unused_base_top_dl),\n    gsSPLight(&mario_brown2_lights_group.l, 1),\n    gsSPLight(&mario_brown2_lights_group.a, 2),\n    gsSPDisplayList(mario_cap_unused_base_bottom_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x0401C538\nstatic const Vtx mario_wings_half_1_unused_dl_vertex[] = {\n    {{{   199,    247,    -55}, 0, {   990,      0}, {0x59, 0xed, 0x58, 0xff}}},\n    {{{   131,    274,     20}, 0, {     0,      0}, {0x59, 0xed, 0x58, 0xff}}},\n    {{{    69,     71,     38}, 0, {     0,   2012}, {0x59, 0xed, 0x58, 0xff}}},\n    {{{   199,    247,    -55}, 0, {   990,      0}, {0x58, 0xee, 0x58, 0xff}}},\n    {{{    69,     71,     38}, 0, {     0,   2012}, {0x58, 0xee, 0x58, 0xff}}},\n    {{{   138,     44,    -37}, 0, {   990,   2012}, {0x58, 0xee, 0x58, 0xff}}},\n    {{{  -137,     44,    -37}, 0, {   990,   2012}, {0xa8, 0xee, 0x58, 0xff}}},\n    {{{   -68,     71,     38}, 0, {     0,   2012}, {0xa8, 0xee, 0x58, 0xff}}},\n    {{{  -198,    247,    -55}, 0, {   990,      0}, {0xa8, 0xee, 0x58, 0xff}}},\n    {{{   -68,     71,     38}, 0, {     0,   2012}, {0xa7, 0xed, 0x58, 0xff}}},\n    {{{  -130,    274,     20}, 0, {     0,      0}, {0xa7, 0xed, 0x58, 0xff}}},\n    {{{  -198,    247,    -55}, 0, {   990,      0}, {0xa7, 0xed, 0x58, 0xff}}},\n};\n\n// 0x0401C5F8\nstatic const Vtx mario_wings_half_2_unused_dl_vertex[] = {\n    {{{   268,    219,   -132}, 0, {   990,      0}, {0x59, 0xed, 0x57, 0xff}}},\n    {{{   199,    247,    -55}, 0, {     0,      0}, {0x59, 0xed, 0x57, 0xff}}},\n    {{{   138,     44,    -37}, 0, {     0,   2012}, {0x59, 0xed, 0x57, 0xff}}},\n    {{{   207,     16,   -114}, 0, {   990,   2012}, {0x59, 0xed, 0x57, 0xff}}},\n    {{{  -206,     16,   -114}, 0, {   990,   2012}, {0xa7, 0xed, 0x57, 0xff}}},\n    {{{  -137,     44,    -37}, 0, {     0,   2012}, {0xa7, 0xed, 0x57, 0xff}}},\n    {{{  -267,    219,   -132}, 0, {   990,      0}, {0xa7, 0xed, 0x57, 0xff}}},\n    {{{  -198,    247,    -55}, 0, {     0,      0}, {0xa7, 0xed, 0x57, 0xff}}},\n};\n\n// 0x0401C678 - 0x0401C6A8\nconst Gfx mario_wings_half_1_unused_dl[] = {\n    gsSPVertex(mario_wings_half_1_unused_dl_vertex, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0401C6A8 - 0x0401C6D8\nconst Gfx mario_wings_half_2_unused_dl[] = {\n    gsSPVertex(mario_wings_half_2_unused_dl_vertex, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0401C6D8 - 0x0401C730\nconst Gfx mario_cap_wings_unused_initial_dl[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPLight(&mario_white_lights_group.l, 1),\n    gsSPLight(&mario_white_lights_group.a, 2),\n    gsSPEndDisplayList(),\n};\n\n// 0x0401C730 - 0x0401C758\nconst Gfx mario_cap_wings_unused_end_dl[] = {\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x0401C758 - 0x0401C7E8 # Unreferenced, possibly a early duplicate of the cap object used in segment 03\nconst Gfx mario_cap_unused_dl[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBA, G_CC_BLENDRGBA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_m_logo),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mario_red_lights_group.l, 1),\n    gsSPLight(&mario_red_lights_group.a, 2),\n    gsSPDisplayList(mario_cap_unused_m_logo_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(mario_cap_unused_base_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x0401C7E8 - 0x0401C890 # Unreferenced, possibly an early duplicate of the cap object used in segment 03\nconst Gfx mario_metal_cap_unused_dl[] = {\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_TEXTURE_GEN),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPLoadTextureBlock(mario_texture_metal, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_ON),\n    gsSPLight(&mario_white_lights_group.l, 1),\n    gsSPLight(&mario_white_lights_group.a, 2),\n    gsSPDisplayList(mario_cap_unused_m_logo_dl),\n    gsSPDisplayList(mario_cap_unused_base_top_dl),\n    gsSPDisplayList(mario_cap_unused_base_bottom_dl),\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_TEXTURE_GEN),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_OFF),\n    gsSPEndDisplayList(),\n};\n\n// 0x0401C890 - 0x0401C8E8 # Unreferenced, unused like the duplicated cap, same case\nconst Gfx mario_cap_wings_unused[] = {\n    gsSPDisplayList(mario_cap_wings_unused_initial_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_wings_half_1),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_wings_half_1_unused_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_wings_half_2),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_wings_half_2_unused_dl),\n    gsSPDisplayList(mario_cap_wings_unused_end_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x0401C8E8 - 0x0401C940 # Unreferenced, unused like the duplicated cap, same case\nconst Gfx mario_metal_cap_wings_unused[] = {\n    gsSPDisplayList(mario_cap_wings_unused_initial_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_metal_wings_half_1),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_wings_half_1_unused_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_metal_wings_half_2),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_wings_half_2_unused_dl),\n    gsSPDisplayList(mario_cap_wings_unused_end_dl),\n    gsSPEndDisplayList(),\n};\n\n// 0x0401C940\nstatic const Vtx mario_wings_half_1_dl_vertex[] = {\n    {{{  -105,    212,      0}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -105,      0,      0}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,      0,      0}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,    212,      0}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0401C980\nstatic const Vtx mario_wings_half_2_dl_vertex[] = {\n    {{{     0,      0,      0}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   106,    212,      0}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,    212,      0}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   106,      0,      0}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0401C9C0 - 0x0401C9E0\nconst Gfx mario_wings_half_1_dl[] = {\n    gsSPVertex(mario_wings_half_1_dl_vertex, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0401C9E0 - 0x0401CA00\nconst Gfx mario_wings_half_2_dl[] = {\n    gsSPVertex(mario_wings_half_2_dl_vertex, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0401CA00 - 0x0401CAB8\nconst Gfx mario_cap_wings[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPLight(&mario_white_lights_group.l, 1),\n    gsSPLight(&mario_white_lights_group.a, 2),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_wings_half_1),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_wings_half_1_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_wings_half_2),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_wings_half_2_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x0401CAB8 - 0x0401CB70\nconst Gfx mario_cap_wings_transparent[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALFADEA, G_CC_DECALFADEA),\n    gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPLight(&mario_white_lights_group.l, 1),\n    gsSPLight(&mario_white_lights_group.a, 2),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_wings_half_1),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_wings_half_1_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_wings_half_2),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_wings_half_2_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPSetGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x0401CB70 - 0x0401CC28\nconst Gfx mario_metal_cap_wings[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPLight(&mario_white_lights_group.l, 1),\n    gsSPLight(&mario_white_lights_group.a, 2),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_metal_wings_half_1),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_wings_half_1_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_metal_wings_half_2),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_wings_half_2_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x0401CC28 - 0x0401CD20\nconst Gfx mario_metal_cap_wings_transparent[] = {\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_TEXTURE_GEN),\n    gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPSetCombineMode(G_CC_DECALFADEA, G_CC_DECALFADEA),\n    gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_metal_wings_half_1),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_wings_half_1_dl),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_metal_wings_half_2),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_wings_half_2_dl),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_TEXTURE_GEN | G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetCombineMode(G_CC_DECALFADE, G_CC_DECALFADE),\n    gsDPLoadTextureBlock(mario_texture_metal, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_ON),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/mario_cap/geo.inc.c",
    "content": "// 0x16000CA4\nconst GeoLayout marios_cap_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_9_VERTS, 0xB4, 75),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ASM(10, geo_update_layer_transparency),\n            GEO_SWITCH_CASE(2, geo_switch_anim_state),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_cap_seg3_dl_03022F48),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_seg3_dl_03022F48),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x16000CF0\nconst GeoLayout marios_metal_cap_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_9_VERTS, 0xB4, 75),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ASM(10, geo_update_layer_transparency),\n            GEO_SWITCH_CASE(2, geo_switch_anim_state),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_cap_seg3_dl_03022FF8),\n                GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_seg3_dl_03022FF8),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x16000D3C\nconst GeoLayout marios_wing_cap_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_9_VERTS, 0xB4, 75),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ASM(10, geo_update_layer_transparency),\n            GEO_SWITCH_CASE(2, geo_switch_anim_state),\n            GEO_OPEN_NODE(),\n                GEO_NODE_START(),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_cap_seg3_dl_03022F48),\n                    GEO_DISPLAY_LIST(LAYER_ALPHA, mario_cap_seg3_dl_030230B0),\n                GEO_CLOSE_NODE(),\n                GEO_NODE_START(),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_seg3_dl_03023160),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x16000DA8\nconst GeoLayout marios_winged_metal_cap_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_9_VERTS, 0xB4, 75),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ASM(10, geo_update_layer_transparency),\n            GEO_SWITCH_CASE(2, geo_switch_anim_state),\n            GEO_OPEN_NODE(),\n                GEO_NODE_START(),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, mario_cap_seg3_dl_03022FF8),\n                    GEO_DISPLAY_LIST(LAYER_ALPHA, mario_cap_seg3_dl_03023108),\n                GEO_CLOSE_NODE(),\n                GEO_NODE_START(),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mario_cap_seg3_dl_03023298),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/mario_cap/model.inc.c",
    "content": "// Mario Cap (Normal Cap, Metal, Winged, etc)\n\n// 0x0301CF08\nstatic const Lights1 mario_cap_seg3_lights_0301CF08 = gdSPDefLights1(\n    0x39, 0x03, 0x00,\n    0x73, 0x06, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x0301CF20\nstatic const Lights1 mario_cap_seg3_lights_0301CF20 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0301CF38\nstatic const Lights1 mario_cap_seg3_lights_0301CF38 = gdSPDefLights1(\n    0x7f, 0x00, 0x00,\n    0xff, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x0301CF50\nALIGNED8 static const Texture mario_cap_seg3_texture_0301CF50[] = {\n#include \"actors/mario_cap/mario_cap_metal.rgba16.inc.c\"\n};\n\n// 0x0301DF50\nALIGNED8 static const Texture mario_cap_seg3_texture_0301DF50[] = {\n#include \"actors/mario_cap/mario_cap_logo.rgba16.inc.c\"\n};\n\n// 0x0301E750\nALIGNED8 static const Texture mario_cap_seg3_texture_0301E750[] = {\n#include \"actors/mario_cap/mario_cap_wing.rgba16.inc.c\"\n};\n\n// 0x0301F750\nALIGNED8 static const Texture mario_cap_seg3_texture_0301F750[] = {\n#include \"actors/mario_cap/mario_cap_wing_tip.rgba16.inc.c\"\n};\n\n// 0x03020750\nALIGNED8 static const Texture mario_cap_seg3_texture_03020750[] = {\n#include \"actors/mario_cap/mario_cap_metal_wing_unused.rgba16.inc.c\"\n};\n\n// 0x03021750\nALIGNED8 static const Texture mario_cap_seg3_texture_03021750[] = {\n#include \"actors/mario_cap/mario_cap_metal_wing_tip_unused.rgba16.inc.c\"\n};\n\n// 0x03022750\nstatic const Vtx mario_cap_seg3_vertex_03022750[] = {\n    {{{    33,     35,    118}, 0, {   728,    758}, {0x30, 0x26, 0x6e, 0xff}}},\n    {{{    96,     22,     45}, 0, {  1240,    876}, {0x48, 0xa4, 0x31, 0xff}}},\n    {{{    71,    101,    113}, 0, {  1028,    148}, {0x55, 0x16, 0x5b, 0xff}}},\n    {{{     0,    110,    143}, 0, {   460,     68}, {0x00, 0x34, 0x73, 0xff}}},\n    {{{   -31,     35,    118}, 0, {   206,    762}, {0xd0, 0x26, 0x6f, 0xff}}},\n    {{{   -70,    101,    113}, 0, {  -106,    158}, {0xab, 0x16, 0x5b, 0xff}}},\n    {{{   -95,     22,     46}, 0, {  -302,    890}, {0xa8, 0xb9, 0x38, 0xff}}},\n};\n\n// 0x030227C0\nstatic const Vtx mario_cap_seg3_vertex_030227C0[] = {\n    {{{   -66,      2,    139}, 0, {     0,      0}, {0xb0, 0xbb, 0x45, 0xff}}},\n    {{{     0,      0,    163}, 0, {     0,      0}, {0x00, 0xba, 0x69, 0xff}}},\n    {{{   -31,     35,    118}, 0, {     0,      0}, {0xd0, 0x26, 0x6f, 0xff}}},\n    {{{   -32,     17,    109}, 0, {     0,      0}, {0x00, 0x83, 0xf0, 0xff}}},\n    {{{    33,     17,    109}, 0, {     0,      0}, {0xfb, 0x84, 0xea, 0xff}}},\n    {{{   -95,     22,     46}, 0, {     0,      0}, {0xa8, 0xb9, 0x38, 0xff}}},\n    {{{  -101,     10,     -7}, 0, {     0,      0}, {0xd8, 0x89, 0x11, 0xff}}},\n    {{{   -70,    101,    113}, 0, {     0,      0}, {0xab, 0x16, 0x5b, 0xff}}},\n    {{{  -135,     70,     23}, 0, {     0,      0}, {0x84, 0x15, 0x10, 0xff}}},\n    {{{  -125,     38,    -45}, 0, {     0,      0}, {0x8d, 0xec, 0xd1, 0xff}}},\n    {{{   -86,      1,    -60}, 0, {     0,      0}, {0xce, 0x8c, 0xf6, 0xff}}},\n    {{{   -41,    144,     64}, 0, {     0,      0}, {0xdc, 0x79, 0x00, 0xff}}},\n    {{{   -76,     84,    -60}, 0, {     0,      0}, {0xd5, 0x6e, 0xd3, 0xff}}},\n    {{{   136,     70,     22}, 0, {     0,      0}, {0x7b, 0x16, 0x10, 0xff}}},\n    {{{    71,    101,    113}, 0, {     0,      0}, {0x55, 0x16, 0x5b, 0xff}}},\n    {{{    96,     22,     45}, 0, {     0,      0}, {0x48, 0xa4, 0x31, 0xff}}},\n};\n\n// 0x030228C0\nstatic const Vtx mario_cap_seg3_vertex_030228C0[] = {\n    {{{    42,    144,     64}, 0, {     0,      0}, {0x2b, 0x76, 0x0d, 0xff}}},\n    {{{   136,     70,     22}, 0, {     0,      0}, {0x7b, 0x16, 0x10, 0xff}}},\n    {{{    76,     84,    -60}, 0, {     0,      0}, {0x2a, 0x6c, 0xcf, 0xff}}},\n    {{{   103,     10,     -6}, 0, {     0,      0}, {0x42, 0x96, 0x12, 0xff}}},\n    {{{   126,     38,    -46}, 0, {     0,      0}, {0x73, 0xec, 0xd0, 0xff}}},\n    {{{    71,    101,    113}, 0, {     0,      0}, {0x55, 0x16, 0x5b, 0xff}}},\n    {{{    96,     22,     45}, 0, {     0,      0}, {0x48, 0xa4, 0x31, 0xff}}},\n    {{{    67,      2,    139}, 0, {     0,      0}, {0x50, 0xba, 0x44, 0xff}}},\n    {{{    33,     17,    109}, 0, {     0,      0}, {0xfb, 0x84, 0xea, 0xff}}},\n    {{{    33,     35,    118}, 0, {     0,      0}, {0x30, 0x26, 0x6e, 0xff}}},\n    {{{    86,      1,    -60}, 0, {     0,      0}, {0x20, 0x86, 0xfe, 0xff}}},\n    {{{     0,      0,    163}, 0, {     0,      0}, {0x00, 0xba, 0x69, 0xff}}},\n    {{{   -31,     35,    118}, 0, {     0,      0}, {0xd0, 0x26, 0x6f, 0xff}}},\n    {{{    53,      0,   -118}, 0, {     0,      0}, {0x2c, 0xb5, 0xa5, 0xff}}},\n    {{{    49,     62,   -139}, 0, {     0,      0}, {0x32, 0x49, 0xa6, 0xff}}},\n};\n\n// 0x030229B0\nstatic const Vtx mario_cap_seg3_vertex_030229B0[] = {\n    {{{   -76,     84,    -60}, 0, {     0,      0}, {0xd5, 0x6e, 0xd3, 0xff}}},\n    {{{   -41,    144,     64}, 0, {     0,      0}, {0xdc, 0x79, 0x00, 0xff}}},\n    {{{    76,     84,    -60}, 0, {     0,      0}, {0x2a, 0x6c, 0xcf, 0xff}}},\n    {{{     0,    110,    143}, 0, {     0,      0}, {0x00, 0x34, 0x73, 0xff}}},\n    {{{    42,    144,     64}, 0, {     0,      0}, {0x2b, 0x76, 0x0d, 0xff}}},\n    {{{   -70,    101,    113}, 0, {     0,      0}, {0xab, 0x16, 0x5b, 0xff}}},\n    {{{    71,    101,    113}, 0, {     0,      0}, {0x55, 0x16, 0x5b, 0xff}}},\n    {{{    49,     62,   -139}, 0, {     0,      0}, {0x32, 0x49, 0xa6, 0xff}}},\n    {{{   126,     38,    -46}, 0, {     0,      0}, {0x73, 0xec, 0xd0, 0xff}}},\n    {{{   -52,      0,   -118}, 0, {     0,      0}, {0xd2, 0x9d, 0xc1, 0xff}}},\n    {{{   -49,     62,   -138}, 0, {     0,      0}, {0xce, 0x1a, 0x8f, 0xff}}},\n    {{{    53,      0,   -118}, 0, {     0,      0}, {0x2c, 0xb5, 0xa5, 0xff}}},\n    {{{  -125,     38,    -45}, 0, {     0,      0}, {0x8d, 0xec, 0xd1, 0xff}}},\n    {{{    86,      1,    -60}, 0, {     0,      0}, {0x20, 0x86, 0xfe, 0xff}}},\n    {{{   -86,      1,    -60}, 0, {     0,      0}, {0xce, 0x8c, 0xf6, 0xff}}},\n};\n\n// 0x03022AA0\nstatic const Vtx mario_cap_seg3_vertex_03022AA0[] = {\n    {{{    86,      1,    -60}, 0, {     0,      0}, {0x20, 0x86, 0xfe, 0xff}}},\n    {{{   -86,      1,    -60}, 0, {     0,      0}, {0xce, 0x8c, 0xf6, 0xff}}},\n    {{{   -52,      0,   -118}, 0, {     0,      0}, {0xd2, 0x9d, 0xc1, 0xff}}},\n    {{{    33,     17,    109}, 0, {     0,      0}, {0xfb, 0x84, 0xea, 0xff}}},\n    {{{   -32,     17,    109}, 0, {     0,      0}, {0x00, 0x83, 0xf0, 0xff}}},\n    {{{  -101,     10,     -7}, 0, {     0,      0}, {0xd8, 0x89, 0x11, 0xff}}},\n    {{{    96,     22,     45}, 0, {     0,      0}, {0x48, 0xa4, 0x31, 0xff}}},\n    {{{   103,     10,     -6}, 0, {     0,      0}, {0x42, 0x96, 0x12, 0xff}}},\n    {{{    53,      0,   -118}, 0, {     0,      0}, {0x2c, 0xb5, 0xa5, 0xff}}},\n};\n\n// 0x03022B30 - 0x03022B68\nconst Gfx mario_cap_seg3_dl_03022B30[] = {\n    gsSPVertex(mario_cap_seg3_vertex_03022750, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 3,  5,  4, 0x0,  2,  3,  0, 0x0),\n    gsSP1Triangle( 5,  6,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x03022B68 - 0x03022CC8\nconst Gfx mario_cap_seg3_dl_03022B68[] = {\n    gsSPVertex(mario_cap_seg3_vertex_030227C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 3,  1,  0, 0x0,  3,  5,  6, 0x0),\n    gsSP2Triangles( 3,  0,  5, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 6,  9, 10, 0x0,  8,  9,  6, 0x0),\n    gsSP2Triangles(11,  8,  7, 0x0,  8, 12,  9, 0x0),\n    gsSP2Triangles(12,  8, 11, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(mario_cap_seg3_vertex_030228C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 4,  2,  1, 0x0,  5,  1,  0, 0x0),\n    gsSP2Triangles( 1,  6,  3, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9,  7,  6, 0x0, 10,  4,  3, 0x0),\n    gsSP2Triangles( 9, 11,  7, 0x0,  7, 11,  8, 0x0),\n    gsSP2Triangles(12, 11,  9, 0x0, 13, 14,  4, 0x0),\n    gsSPVertex(mario_cap_seg3_vertex_030229B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 5,  3,  1, 0x0,  1,  4,  2, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0,  0,  2,  7, 0x0),\n    gsSP2Triangles( 8,  7,  2, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 10,  9, 0x0,  7, 10,  0, 0x0),\n    gsSP2Triangles(10,  7, 11, 0x0,  0, 10, 12, 0x0),\n    gsSP2Triangles(11,  8, 13, 0x0, 14, 12,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x03022CC8 - 0x03022D10\nconst Gfx mario_cap_seg3_dl_03022CC8[] = {\n    gsSPVertex(mario_cap_seg3_vertex_03022AA0, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  6,  5, 0x0),\n    gsSP2Triangles( 0,  7,  5, 0x0,  0,  5,  1, 0x0),\n    gsSP1Triangle( 2,  8,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x03022D10 - 0x03022D38\nconst Gfx mario_cap_seg3_dl_03022D10[] = {\n    gsSPDisplayList(mario_cap_seg3_dl_03022B68),\n    gsSPLight(&mario_cap_seg3_lights_0301CF08.l, 1),\n    gsSPLight(&mario_cap_seg3_lights_0301CF08.a, 2),\n    gsSPDisplayList(mario_cap_seg3_dl_03022CC8),\n    gsSPEndDisplayList(),\n};\n\n// 0x03022D38\nstatic const Vtx mario_cap_seg3_vertex_03022D38[] = {\n    {{{   199,    247,    -55}, 0, {   990,      0}, {0x59, 0xed, 0x58, 0xff}}},\n    {{{   131,    274,     20}, 0, {     0,      0}, {0x59, 0xed, 0x58, 0xff}}},\n    {{{    69,     71,     38}, 0, {     0,   2012}, {0x59, 0xed, 0x58, 0xff}}},\n    {{{   199,    247,    -55}, 0, {   990,      0}, {0x58, 0xee, 0x58, 0xff}}},\n    {{{    69,     71,     38}, 0, {     0,   2012}, {0x58, 0xee, 0x58, 0xff}}},\n    {{{   138,     44,    -37}, 0, {   990,   2012}, {0x58, 0xee, 0x58, 0xff}}},\n    {{{  -137,     44,    -37}, 0, {   990,   2012}, {0xa8, 0xee, 0x58, 0xff}}},\n    {{{   -68,     71,     38}, 0, {     0,   2012}, {0xa8, 0xee, 0x58, 0xff}}},\n    {{{  -198,    247,    -55}, 0, {   990,      0}, {0xa8, 0xee, 0x58, 0xff}}},\n    {{{   -68,     71,     38}, 0, {     0,   2012}, {0xa7, 0xed, 0x58, 0xff}}},\n    {{{  -130,    274,     20}, 0, {     0,      0}, {0xa7, 0xed, 0x58, 0xff}}},\n    {{{  -198,    247,    -55}, 0, {   990,      0}, {0xa7, 0xed, 0x58, 0xff}}},\n};\n\n// 0x03022DF8\nstatic const Vtx mario_cap_seg3_vertex_03022DF8[] = {\n    {{{   268,    219,   -132}, 0, {   990,      0}, {0x59, 0xed, 0x57, 0xff}}},\n    {{{   199,    247,    -55}, 0, {     0,      0}, {0x59, 0xed, 0x57, 0xff}}},\n    {{{   138,     44,    -37}, 0, {     0,   2012}, {0x59, 0xed, 0x57, 0xff}}},\n    {{{   207,     16,   -114}, 0, {   990,   2012}, {0x59, 0xed, 0x57, 0xff}}},\n    {{{  -206,     16,   -114}, 0, {   990,   2012}, {0xa7, 0xed, 0x57, 0xff}}},\n    {{{  -137,     44,    -37}, 0, {     0,   2012}, {0xa7, 0xed, 0x57, 0xff}}},\n    {{{  -267,    219,   -132}, 0, {   990,      0}, {0xa7, 0xed, 0x57, 0xff}}},\n    {{{  -198,    247,    -55}, 0, {     0,      0}, {0xa7, 0xed, 0x57, 0xff}}},\n};\n\n// 0x03022E78 - 0x03022EA8\nconst Gfx mario_cap_seg3_dl_03022E78[] = {\n    gsSPVertex(mario_cap_seg3_vertex_03022D38, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x03022EA8 - 0x03022ED8\nconst Gfx mario_cap_seg3_dl_03022EA8[] = {\n    gsSPVertex(mario_cap_seg3_vertex_03022DF8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x03022ED8 - 0x03022F20\nconst Gfx mario_cap_seg3_dl_03022ED8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x03022F20 - 0x03022F48\nconst Gfx mario_cap_seg3_dl_03022F20[] = {\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x03022F48 - 0x03022FF8\nconst Gfx mario_cap_seg3_dl_03022F48[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_cap_seg3_texture_0301DF50),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mario_cap_seg3_lights_0301CF38.l, 1),\n    gsSPLight(&mario_cap_seg3_lights_0301CF38.a, 2),\n    gsSPDisplayList(mario_cap_seg3_dl_03022B30),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(mario_cap_seg3_dl_03022D10),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPSetAlphaCompare(G_AC_NONE),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n\n// 0x03022FF8 - 0x030230B0\nconst Gfx mario_cap_seg3_dl_03022FF8[] = {\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_TEXTURE_GEN),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsDPLoadTextureBlock(mario_cap_seg3_texture_0301CF50, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_ON),\n    gsSPLight(&mario_cap_seg3_lights_0301CF20.l, 1),\n    gsSPLight(&mario_cap_seg3_lights_0301CF20.a, 2),\n    gsSPDisplayList(mario_cap_seg3_dl_03022B30),\n    gsSPDisplayList(mario_cap_seg3_dl_03022B68),\n    gsSPDisplayList(mario_cap_seg3_dl_03022CC8),\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_TEXTURE_GEN),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPSetAlphaCompare(G_AC_NONE),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n\n// 0x030230B0 - 0x03023108\nconst Gfx mario_cap_seg3_dl_030230B0[] = {\n    gsSPDisplayList(mario_cap_seg3_dl_03022ED8),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_cap_seg3_texture_0301E750),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_cap_seg3_dl_03022E78),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_cap_seg3_texture_0301F750),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_cap_seg3_dl_03022EA8),\n    gsSPDisplayList(mario_cap_seg3_dl_03022F20),\n    gsSPEndDisplayList(),\n};\n\n// 0x03023108 - 0x03023160\nconst Gfx mario_cap_seg3_dl_03023108[] = {\n    gsSPDisplayList(mario_cap_seg3_dl_03022ED8),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_cap_seg3_texture_03020750),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_cap_seg3_dl_03022E78),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_cap_seg3_texture_03021750),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_cap_seg3_dl_03022EA8),\n    gsSPDisplayList(mario_cap_seg3_dl_03022F20),\n    gsSPEndDisplayList(),\n};\n\n// 0x03023160 - 0x03023298\nconst Gfx mario_cap_seg3_dl_03023160[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_cap_seg3_texture_0301DF50),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mario_cap_seg3_lights_0301CF38.l, 1),\n    gsSPLight(&mario_cap_seg3_lights_0301CF38.a, 2),\n    gsSPDisplayList(mario_cap_seg3_dl_03022B30),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(mario_cap_seg3_dl_03022D10),\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetCombineMode(G_CC_DECALFADEA, G_CC_DECALFADEA),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_cap_seg3_texture_0301E750),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_cap_seg3_dl_03022E78),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_cap_seg3_texture_0301F750),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_cap_seg3_dl_03022EA8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetAlphaCompare(G_AC_NONE),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n\n// 0x03023298 - 0x030233D0\nconst Gfx mario_cap_seg3_dl_03023298[] = {\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_TEXTURE_GEN),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_cap_seg3_texture_0301CF50),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsDPPipeSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_ON),\n    gsSPLight(&mario_cap_seg3_lights_0301CF20.l, 1),\n    gsSPLight(&mario_cap_seg3_lights_0301CF20.a, 2),\n    gsSPDisplayList(mario_cap_seg3_dl_03022B30),\n    gsSPDisplayList(mario_cap_seg3_dl_03022B68),\n    gsSPDisplayList(mario_cap_seg3_dl_03022CC8),\n    gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_TEXTURE_GEN | G_LIGHTING | G_CULL_BACK),\n    gsDPSetCombineMode(G_CC_DECALFADEA, G_CC_DECALFADEA),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_cap_seg3_texture_03020750),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_cap_seg3_dl_03022E78),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_cap_seg3_texture_03021750),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(mario_cap_seg3_dl_03022EA8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetAlphaCompare(G_AC_NONE),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/metal_box/collision.inc.c",
    "content": "// Metal Box\n\n// 0x08024C28 - 0x08024CAC\nconst Collision metal_box_seg8_collision_08024C28[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(154, 307, -153),\n    COL_VERTEX(-153, 307, -153),\n    COL_VERTEX(-153, 307, 154),\n    COL_VERTEX(154, 307, 154),\n    COL_VERTEX(154, 0, 154),\n    COL_VERTEX(-153, 0, 154),\n    COL_VERTEX(-153, 0, -153),\n    COL_VERTEX(154, 0, -153),\n\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(4, 5, 6),\n    COL_TRI(4, 6, 7),\n    COL_TRI(6, 1, 0),\n    COL_TRI(6, 0, 7),\n    COL_TRI(5, 1, 6),\n    COL_TRI(5, 2, 1),\n    COL_TRI(7, 0, 3),\n    COL_TRI(7, 3, 4),\n    COL_TRI(4, 2, 5),\n    COL_TRI(4, 3, 2),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "actors/metal_box/geo.inc.c",
    "content": "// 0x0F000A30\nconst GeoLayout metal_box_geo[] = {\n    GEO_CULLING_RADIUS(500),\n    GEO_OPEN_NODE(),\n        GEO_SHADOW(SHADOW_SQUARE_PERMANENT, 0xB4, 70),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, metal_box_dl),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/metal_box/model.inc.c",
    "content": "// Metal Box\n\n// 0x08023980\nstatic const Lights1 metal_box_seg8_lights_08023980 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x08023998\nALIGNED8 static const Texture metal_box_seg8_texture_08023998[] = {\n#include \"actors/metal_box/metal_box_side.rgba16.inc.c\"\n};\n\n// 0x08024998\nstatic const Vtx metal_box_seg8_vertex_08024998[] = {\n    {{{   154,    307,   -153}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -153,    307,   -153}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -153,    307,    154}, 0, {     0,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   154,    307,    154}, 0, {   990,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -153,      0,   -153}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -153,    307,   -153}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   154,    307,   -153}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   154,      0,   -153}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -153,      0,    154}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -153,    307,    154}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -153,    307,   -153}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -153,      0,   -153}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   154,      0,    154}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -153,      0,    154}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -153,      0,   -153}, 0, {     0,   2012}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   154,      0,   -153}, 0, {   990,   2012}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x08024A98\nstatic const Vtx metal_box_seg8_vertex_08024A98[] = {\n    {{{   154,      0,    154}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -153,    307,    154}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -153,      0,    154}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   154,    307,    154}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   154,      0,   -153}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   154,    307,   -153}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   154,    307,    154}, 0, {   -24,    -36}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   154,      0,    154}, 0, {   -24,   2008}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x08024B18 - 0x08024BB8\nconst Gfx metal_box_seg8_dl_08024B18[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, metal_box_seg8_texture_08023998),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&metal_box_seg8_lights_08023980.l, 1),\n    gsSPLight(&metal_box_seg8_lights_08023980.a, 2),\n    gsSPVertex(metal_box_seg8_vertex_08024998, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(metal_box_seg8_vertex_08024A98, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x08024BB8 - 0x08024C28\nconst Gfx metal_box_dl[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(metal_box_seg8_dl_08024B18),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/mips/anims/anim_06013248.inc.c",
    "content": "// 0x06011FE0\nstatic const s16 mips_seg6_animvalue_06011FE0[] = {\n    0x0000, 0x0052, 0x0051, 0x004F, 0x004A, 0x0044, 0x003B, 0x002F,\n    0x0047, 0x0052, 0x0056, 0x0056, 0x0059, 0x005D, 0x005B, 0x004F,\n    0x0030, 0x003E, 0x0046, 0x004B, 0x004D, 0x004D, 0x004C, 0x0047,\n    0x0040, 0x0038, 0x0030, 0x0043, 0x0047, 0x0047, 0x0043, 0x003C,\n    0x0033, 0x002E, 0x002F, 0x0033, 0x0031, 0x002F, 0x002E, 0x002D,\n    0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002E, 0x002E, 0x002E,\n    0x002D, 0x002D, 0x002C, 0x002C, 0x002B, 0x002B, 0x002B, 0x002C,\n    0x002E, 0x0030, 0x0034, 0x0038, 0x003D, 0x0041, 0x0046, 0x004B,\n    0x004F, 0x0053, 0x0057, 0x005B, 0x0060, 0x0065, 0x006B, 0x0070,\n    0x0074, 0x0075, 0x0073, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072,\n    0x0072, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE,\n    0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE,\n    0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE,\n    0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE,\n    0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE,\n    0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE,\n    0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE,\n    0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE,\n    0xFFFC, 0xFFFA, 0xFFF7, 0xFFF3, 0xFFEF, 0xFFEB, 0xFFE5, 0xFFDF,\n    0xFFD8, 0xFFD1, 0xFFCA, 0xFFC4, 0xFFC0, 0xFFBF, 0xFFC1, 0xFFC3,\n    0xFFC4, 0x3FFF, 0xF8F5, 0xFA2A, 0xFD74, 0x024E, 0x0839, 0x0EAF,\n    0x152F, 0x1B37, 0x2042, 0x23D0, 0x255D, 0x1F75, 0x11FC, 0x046B,\n    0xFE41, 0xFFED, 0x0454, 0x0A9D, 0x11F0, 0x1972, 0x204A, 0x259F,\n    0x29EE, 0x2E0B, 0x31A3, 0x3464, 0x35FA, 0x3611, 0x3394, 0x2E87,\n    0x283C, 0x2206, 0x1D37, 0x1912, 0x1450, 0x0F6D, 0x0AE9, 0x0741,\n    0x04F5, 0x0481, 0x0666, 0x0D79, 0x1A57, 0x2A27, 0x3A0C, 0x472D,\n    0x472D, 0x473B, 0x475C, 0x4787, 0x47B2, 0x47D3, 0x47E1, 0x47D0,\n    0x4798, 0x472D, 0x46B3, 0x464A, 0x45EA, 0x458D, 0x4528, 0x44B4,\n    0x4429, 0x437E, 0x42AB, 0x41A9, 0x406E, 0x3EF2, 0x3D2E, 0x3B19,\n    0x36CE, 0x2FB2, 0x27A9, 0x2098, 0x1C66, 0x1C02, 0x1E29, 0x2172,\n    0x2474, 0x25C5, 0xDDF9, 0xDEA1, 0xE070, 0xE328, 0xE689, 0xEA54,\n    0xEE4B, 0xF22F, 0xF5C0, 0xF8C0, 0xFAF1, 0xFBC0, 0xFB30, 0xF9E1,\n    0xF871, 0xF781, 0xF70D, 0xF6B4, 0xF688, 0xF698, 0xF6E0, 0xF748,\n    0xF7C5, 0xF84D, 0xF8D3, 0xF94D, 0xF9B1, 0xF9F2, 0xF9D8, 0xF963,\n    0xF8E0, 0xF898, 0xF8D7, 0xF996, 0xFA90, 0xFBB6, 0xFCF7, 0xFE45,\n    0xFF90, 0x00C8, 0x01DF, 0x02D3, 0x03AF, 0x0478, 0x0532, 0x05E2,\n    0x05E2, 0x05E3, 0x05E8, 0x05EE, 0x05F3, 0x05F8, 0x05FA, 0x05F7,\n    0x05F0, 0x05E2, 0x05D2, 0x05C7, 0x05BF, 0x05B8, 0x05B1, 0x05A7,\n    0x059A, 0x0587, 0x056C, 0x0549, 0x051B, 0x04E1, 0x0499, 0x0442,\n    0x038D, 0x025D, 0x00FC, 0xFFB2, 0xFEC6, 0xFE43, 0xFDF9, 0xFDD8,\n    0xFDD0, 0xFDD1, 0x0F17, 0x0F07, 0x0ED9, 0x0E90, 0x0E2F, 0x0DB9,\n    0x0D30, 0x0C99, 0x0BF4, 0x0B47, 0x0A93, 0x09A3, 0x085E, 0x06F3,\n    0x0592, 0x046B, 0x0366, 0x0275, 0x01D4, 0x01BC, 0x0221, 0x02C5,\n    0x0394, 0x0479, 0x0562, 0x063B, 0x06F0, 0x076D, 0x0786, 0x073E,\n    0x06CF, 0x0671, 0x065F, 0x069B, 0x06FA, 0x0770, 0x07EF, 0x086D,\n    0x08DD, 0x0933, 0x0961, 0x094D, 0x08F4, 0x0877, 0x07F6, 0x0791,\n    0x0791, 0x0790, 0x078E, 0x078C, 0x078A, 0x0788, 0x0787, 0x0788,\n    0x078B, 0x0791, 0x0798, 0x079E, 0x07A4, 0x07AA, 0x07B1, 0x07B9,\n    0x07C1, 0x07CB, 0x07D6, 0x07E4, 0x07F4, 0x0806, 0x081B, 0x0833,\n    0x0861, 0x08AC, 0x0900, 0x094C, 0x097C, 0x098A, 0x0981, 0x096D,\n    0x0959, 0x0950, 0x09DD, 0x0B4C, 0x0F34, 0x14F9, 0x1C01, 0x23B1,\n    0x2B6F, 0x32A0, 0x38A9, 0x3CF1, 0x3EDC, 0x3B89, 0x3272, 0x2686,\n    0x1AB1, 0x11E1, 0x0C31, 0x080B, 0x05D2, 0x05EB, 0x0805, 0x0B4E,\n    0x0F63, 0x13E4, 0x186F, 0x1CA3, 0x201E, 0x227E, 0x2274, 0x2014,\n    0x1D12, 0x1B21, 0x1BF7, 0x1F6A, 0x23FE, 0x2969, 0x2F5E, 0x3592,\n    0x3BB9, 0x4189, 0x46B5, 0x4B3A, 0x4F52, 0x5310, 0x5686, 0x59C8,\n    0x59C8, 0x59D0, 0x59E4, 0x59FD, 0x5A17, 0x5A2B, 0x5A33, 0x5A29,\n    0x5A07, 0x59C8, 0x5985, 0x5957, 0x5937, 0x591C, 0x58FF, 0x58D8,\n    0x589F, 0x584D, 0x57DA, 0x573D, 0x5670, 0x556A, 0x5423, 0x5294,\n    0x4F54, 0x49DE, 0x4381, 0x3D8C, 0x394F, 0x36FD, 0x35B8, 0x3530,\n    0x3517, 0x3521, 0x3470, 0x33FF, 0x32C1, 0x30D2, 0x2E51, 0x2B5A,\n    0x280C, 0x2483, 0x20DC, 0x1D37, 0x184D, 0x11B5, 0x0AD9, 0x051D,\n    0x01EA, 0x0271, 0x05C0, 0x0A10, 0x0D9A, 0x0E94, 0x0B4A, 0x04EB,\n    0xFE09, 0xF931, 0xF8F5, 0x0525, 0x1964, 0x25F2, 0x21DB, 0x1613,\n    0x0DBB, 0x0AE9, 0x086B, 0x067B, 0x0554, 0x0530, 0x0648, 0x08D8,\n    0x0D21, 0x12FB, 0x19FE, 0x21C2, 0x29DF, 0x31EE, 0x3987, 0x4040,\n    0x4040, 0x404C, 0x4068, 0x408D, 0x40B3, 0x40CF, 0x40DA, 0x40CC,\n    0x409C, 0x4040, 0x3FD2, 0x3F6B, 0x3F06, 0x3E9F, 0x3E30, 0x3DB5,\n    0x3D29, 0x3C87, 0x3BCB, 0x3AEE, 0x39EE, 0x38C3, 0x376B, 0x35DF,\n    0x32DC, 0x2DF8, 0x287D, 0x23B3, 0x20E1, 0x20B3, 0x224E, 0x24B1,\n    0x26DC, 0x27CE, 0x21D4, 0x2171, 0x2063, 0x1ED4, 0x1CEE, 0x1AD9,\n    0x18C0, 0x16CC, 0x1526, 0x13F8, 0x1386, 0x13C2, 0x145A, 0x14FC,\n    0x1556, 0x156E, 0x157F, 0x158B, 0x1592, 0x1596, 0x1596, 0x1594,\n    0x1591, 0x158D, 0x1589, 0x15C6, 0x1650, 0x16D6, 0x1705, 0x168D,\n    0x151C, 0x127D, 0x0EED, 0x0AC5, 0x065C, 0x020D, 0xFE31, 0xFB1E,\n    0xF8C5, 0xF6CF, 0xF526, 0xF3B7, 0xF26D, 0xF136, 0xEFFC, 0xEEAC,\n    0xEEAC, 0xEEA7, 0xEE9D, 0xEE8E, 0xEE80, 0xEE75, 0xEE71, 0xEE76,\n    0xEE89, 0xEEAC, 0xEED4, 0xEEF4, 0xEF11, 0xEF2D, 0xEF4A, 0xEF6D,\n    0xEF98, 0xEFCE, 0xF012, 0xF068, 0xF0D2, 0xF154, 0xF1F1, 0xF2AB,\n    0xF414, 0xF664, 0xF91A, 0xFBB3, 0xFDAE, 0xFF10, 0x002E, 0x0103,\n    0x0188, 0x01B6, 0xEFB4, 0xEFE2, 0xF05F, 0xF11E, 0xF20F, 0xF322,\n    0xF449, 0xF573, 0xF692, 0xF797, 0xF8AA, 0xF9E4, 0xFB1E, 0xFC31,\n    0xFCF5, 0xFD82, 0xFE06, 0xFE81, 0xFEEF, 0xFF4F, 0xFF9E, 0xFFDA,\n    0x0000, 0x0010, 0x0007, 0xFFDC, 0xFF82, 0xFEEE, 0xFE1A, 0xFCFB,\n    0xFB89, 0xF980, 0xF6D7, 0xF3DC, 0xF0E0, 0xEE31, 0xEC20, 0xEAFA,\n    0xEAC6, 0xEB38, 0xEC29, 0xED70, 0xEEE6, 0xF063, 0xF1BD, 0xF2CE,\n    0xF2CE, 0xF2D1, 0xF2DA, 0xF2E4, 0xF2EF, 0xF2F7, 0xF2FA, 0xF2F6,\n    0xF2E8, 0xF2CE, 0xF2AE, 0xF28F, 0xF26F, 0xF24F, 0xF22C, 0xF205,\n    0xF1DB, 0xF1AA, 0xF173, 0xF135, 0xF0ED, 0xF09C, 0xF03F, 0xEFD7,\n    0xEF1A, 0xEDEE, 0xEC9B, 0xEB66, 0xEA94, 0xEA3C, 0xEA2E, 0xEA4B,\n    0xEA73, 0xEA87, 0x184C, 0x17EF, 0x16ED, 0x1567, 0x137D, 0x114F,\n    0x0EFD, 0x0CA8, 0x0A6F, 0x0872, 0x066E, 0x0432, 0x0200, 0x0019,\n    0xFEBF, 0xFDC6, 0xFCDE, 0xFC09, 0xFB4C, 0xFAA8, 0xFA23, 0xF9BE,\n    0xF97D, 0xF964, 0xF975, 0xF95A, 0xF916, 0xF934, 0xFA3D, 0xFCBC,\n    0x013A, 0x0847, 0x1184, 0x1C1C, 0x2737, 0x3200, 0x3BA1, 0x4342,\n    0x4907, 0x4DC4, 0x51AF, 0x5501, 0x57EF, 0x5AB1, 0x5D7E, 0x608C,\n    0x608C, 0x6096, 0x60B0, 0x60D2, 0x60F3, 0x610D, 0x6118, 0x610B,\n    0x60DF, 0x608C, 0x602E, 0x5FDF, 0x5F99, 0x5F54, 0x5F0B, 0x5EB6,\n    0x5E4E, 0x5DCC, 0x5D2A, 0x5C61, 0x5B69, 0x5A3C, 0x58D2, 0x5726,\n    0x53EA, 0x4E9E, 0x486F, 0x428B, 0x3E1D, 0x3B2A, 0x38E9, 0x3755,\n    0x3667, 0x3619, 0xDD86, 0xDD86, 0xDD86, 0xDD86, 0xDD86, 0xDD86,\n    0xDD86, 0xDD86, 0xDD86, 0xDD86, 0xDD86, 0xDD86, 0xDD86, 0xDD86,\n    0xDD86, 0xDD86, 0xDD86, 0xDD86, 0xDD86, 0xDD86, 0xDD86, 0xDD86,\n    0xDD86, 0xDD86, 0xDD86, 0xDD86, 0xDD86, 0xDD86, 0xDD86, 0xDD86,\n    0xDD86, 0xDD86, 0xDD86, 0xDD86, 0xDD86, 0xDD86, 0xDD86, 0xDD86,\n    0xDD86, 0xDD86, 0xDD86, 0xDD86, 0xDD86, 0xDD86, 0xDD86, 0xDD86,\n    0xDD86, 0xDD9A, 0xDDCC, 0xDE0E, 0xDE4F, 0xDE82, 0xDE96, 0xDE7D,\n    0xDE27, 0xDD86, 0xDADC, 0xD69A, 0xD3F7, 0xD409, 0xD544, 0xD6E9,\n    0xD83A, 0xD924, 0xDA12, 0xDB01, 0xDBF1, 0xDCDE, 0xDDC7, 0xDEA9,\n    0xDF82, 0xE051, 0xE114, 0xE1C7, 0xE26A, 0xE2CC, 0xE2D8, 0xE2B3,\n    0xE282, 0xE26A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xFFFB, 0xFFEE, 0xFFDE, 0xFFCD, 0xFFC0, 0xFFBB, 0xFFC1,\n    0xFFD7, 0x0000, 0x00B9, 0x01DB, 0x0271, 0x021E, 0x015F, 0x008D,\n    0x0000, 0xFFC8, 0xFFB1, 0xFFB0, 0xFFB8, 0xFFBD, 0xFFC0, 0xFFC8,\n    0xFFD3, 0xFFE0, 0xFFED, 0xFFF9, 0x0000, 0x0003, 0x0004, 0x0002,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0024, 0x0062, 0x006E,\n    0x0000, 0xFECA, 0xFD03, 0xFB25, 0xF9AC, 0xF913, 0xF964, 0xFA37,\n    0xFB61, 0xFCB6, 0xFE0A, 0xFF32, 0x0000, 0x005E, 0x006A, 0x0046,\n    0x0017, 0x0000, 0xD773, 0xD77E, 0xD79E, 0xD7D1, 0xD815, 0xD869,\n    0xD8CB, 0xD93A, 0xD9B3, 0xDA35, 0xDABE, 0xDB4E, 0xDBE1, 0xDC77,\n    0xDD0D, 0xDDA3, 0xDE35, 0xDEC4, 0xDF4C, 0xDFCD, 0xE044, 0xE0B1,\n    0xE110, 0xE162, 0xE1A3, 0xE1D7, 0xE201, 0xE222, 0xE23B, 0xE24C,\n    0xE257, 0xE25B, 0xE25B, 0xE255, 0xE24C, 0xE23F, 0xE22F, 0xE21E,\n    0xE20C, 0xE1F9, 0xE1E6, 0xE1D5, 0xE1C5, 0xE1B7, 0xE1AC, 0xE1A5,\n    0xE1A3, 0xE1A5, 0xE1A9, 0xE1AF, 0xE1B5, 0xE1B9, 0xE1BB, 0xE1B9,\n    0xE1B1, 0xE1A3, 0xE173, 0xE11F, 0xE0CA, 0xE077, 0xE01F, 0xDFCF,\n    0xDF99, 0xDF80, 0xDF78, 0xDF7B, 0xDF81, 0xDF84, 0xDF85, 0xDF88,\n    0xDF8B, 0xDF90, 0xDF94, 0xDF97, 0xDF99, 0xDF9B, 0xDF9B, 0xDF9A,\n    0xDF9A, 0xDF99, 0x14F9, 0x14C9, 0x1445, 0x137B, 0x127B, 0x1154,\n    0x1015, 0x0ECD, 0x0D8C, 0x0C60, 0x0B59, 0x0A87, 0x09F8, 0x09BB,\n    0x09E1, 0x0A77, 0x0BEB, 0x0E73, 0x11CD, 0x15B8, 0x19F2, 0x1E3A,\n    0x224F, 0x25EF, 0x28D9, 0x2B04, 0x2CAA, 0x2DF0, 0x2EF8, 0x2FE7,\n    0x30DF, 0x3204, 0x337F, 0x3536, 0x36E9, 0x385C, 0x394F, 0x3983,\n    0x38FD, 0x37FB, 0x369E, 0x3502, 0x3348, 0x318D, 0x2FF0, 0x2E90,\n    0x2E90, 0x2EAB, 0x2EEC, 0x2F41, 0x2F96, 0x2FD7, 0x2FF1, 0x2FD1,\n    0x2F62, 0x2E90, 0x2BD5, 0x2708, 0x2227, 0x1D3D, 0x17DC, 0x1346,\n    0x10BE, 0x0FD5, 0x0F3E, 0x0EED, 0x0ED5, 0x0EEC, 0x0F26, 0x0F77,\n    0x0FD4, 0x1030, 0x1081, 0x10BB, 0x10D1, 0x10D2, 0x10D2, 0x10D2,\n    0x10D1, 0x10D1, 0x15EB, 0x1600, 0x163E, 0x16A0, 0x1725, 0x17C8,\n    0x1887, 0x195F, 0x1A4D, 0x1B4D, 0x1C5C, 0x1D78, 0x1E9C, 0x1FC7,\n    0x20F5, 0x2223, 0x2384, 0x253C, 0x2730, 0x2947, 0x2B65, 0x2D70,\n    0x2F4F, 0x30E5, 0x321A, 0x32D3, 0x331B, 0x330E, 0x32CA, 0x326B,\n    0x320E, 0x31CF, 0x31A6, 0x3176, 0x313A, 0x30F1, 0x3098, 0x302B,\n    0x2FA9, 0x2F15, 0x2E74, 0x2DCC, 0x2D22, 0x2C7A, 0x2BD9, 0x2B46,\n    0x2B46, 0x2B62, 0x2BA7, 0x2C00, 0x2C5A, 0x2C9E, 0x2CBA, 0x2C98,\n    0x2C23, 0x2B46, 0x286E, 0x2369, 0x1E33, 0x18EC, 0x1326, 0x0E0E,\n    0x0AD3, 0x090E, 0x078A, 0x063E, 0x0523, 0x0433, 0x0364, 0x02B1,\n    0x0210, 0x017B, 0x00EA, 0x0056, 0xFFB8, 0xFF4D, 0xFF3F, 0xFF67,\n    0xFF9D, 0xFFB8, 0x9093, 0x9030, 0x8F1C, 0x8D78, 0x8B63, 0x88FE,\n    0x866A, 0x83C5, 0x8132, 0x7ECD, 0x7CBC, 0x7B1C, 0x7A0E, 0x79B2,\n    0x7A28, 0x7B91, 0x7EF4, 0x84DB, 0x8C9C, 0x9599, 0x9F2E, 0xA8BA,\n    0xB199, 0xB928, 0xBEC6, 0xC249, 0xC433, 0xC4E1, 0xC4B0, 0xC3FC,\n    0xC322, 0xC27F, 0xC1CD, 0xC09D, 0xBF0F, 0xBD44, 0xBB5E, 0xB97D,\n    0xB794, 0xB588, 0xB365, 0xB137, 0xAF08, 0xACE3, 0xAAD6, 0xA8E9,\n    0xA8E9, 0xA91E, 0xA9A1, 0xAA4B, 0xAAF5, 0xAB78, 0xABAD, 0xAB6B,\n    0xAA8D, 0xA8E9, 0xA332, 0x9955, 0x900C, 0x86F9, 0x7D00, 0x75C8,\n    0x74EE, 0x792C, 0x7EAC, 0x8537, 0x8C8D, 0x9475, 0x9CB6, 0xA513,\n    0xAD54, 0xB53E, 0xBC95, 0xC320, 0xC8A3, 0xCBCA, 0xCC2F, 0xCB00,\n    0xC96D, 0xC8A3, 0x8001, 0x8001, 0x55C6, 0x55CD, 0x55E0, 0x55FF,\n    0x5629, 0x565C, 0x5699, 0x56DD, 0x5729, 0x577A, 0x57D1, 0x582C,\n    0x588B, 0x58EC, 0x594F, 0x59B2, 0x5A16, 0x5A78, 0x5AD7, 0x5B34,\n    0x5B8D, 0x5BE1, 0x5C2F, 0x5C77, 0x5CB7, 0x5CEE, 0x5D1C, 0x5D41,\n    0x5D5E, 0x5D74, 0x5D84, 0x5D8E, 0x5D94, 0x5D94, 0x5D91, 0x5D8B,\n    0x5D82, 0x5D77, 0x5D6A, 0x5D5D, 0x5D4F, 0x5D42, 0x5D36, 0x5D2B,\n    0x5D23, 0x5D1E, 0x5D1C, 0x5D29, 0x5D4A, 0x5D75, 0x5DA0, 0x5DC2,\n    0x5DCF, 0x5DBE, 0x5D86, 0x5D1C, 0x5B52, 0x587B, 0x56CF, 0x5715,\n    0x5836, 0x599A, 0x5AAA, 0x5B5D, 0x5C0F, 0x5CBF, 0x5D6D, 0x5E16,\n    0x5EBB, 0x5F5B, 0x5FF3, 0x6084, 0x610D, 0x618B, 0x61FF, 0x6246,\n    0x624F, 0x6234, 0x6211, 0x61FF, 0xF085, 0xF081, 0xF076, 0xF064,\n    0xF04C, 0xF02D, 0xF008, 0xEFDD, 0xEFAD, 0xEF78, 0xEF3F, 0xEF01,\n    0xEEBF, 0xEE7A, 0xEE32, 0xEDE6, 0xED8B, 0xED18, 0xEC93, 0xEC02,\n    0xEB6B, 0xEAD4, 0xEA43, 0xE9BF, 0xE94C, 0xE8F2, 0xE8B6, 0xE88F,\n    0xE870, 0xE859, 0xE848, 0xE83D, 0xE838, 0xE837, 0xE83B, 0xE841,\n    0xE84B, 0xE856, 0xE864, 0xE872, 0xE880, 0xE88E, 0xE89A, 0xE8A6,\n    0xE8AE, 0xE8B4, 0xE8B6, 0xE8B6, 0xE8B6, 0xE8B7, 0xE8B7, 0xE8B8,\n    0xE8B8, 0xE8B7, 0xE8B7, 0xE8B6, 0xE8AB, 0xE895, 0xE87B, 0xE866,\n    0xE860, 0xE870, 0xE8A1, 0xE8EE, 0xE94A, 0xE9B4, 0xEA28, 0xEAA2,\n    0xEB20, 0xEB9F, 0xEC1C, 0xEC94, 0xED03, 0xED66, 0xEDBB, 0xEDEC,\n    0xEDF3, 0xEDE0, 0xEDC8, 0xEDBB, 0x0000, 0xFFC4, 0xFF19, 0xFE11,\n    0xFCBD, 0xFB2E, 0xF976, 0xF7A5, 0xF5CE, 0xF400, 0xF24E, 0xF0C8,\n    0xEF7F, 0xEE85, 0xEDEB, 0xEDC2, 0xEE3F, 0xEF74, 0xF139, 0xF36A,\n    0xF5E1, 0xF878, 0xFB0A, 0xFD71, 0xFF86, 0x0125, 0x0228, 0x02C0,\n    0x0339, 0x0395, 0x03D7, 0x0402, 0x0417, 0x041A, 0x040D, 0x03F2,\n    0x03CD, 0x039F, 0x036B, 0x0334, 0x02FC, 0x02C6, 0x0294, 0x0268,\n    0x0246, 0x0230, 0x0228, 0x022A, 0x0230, 0x0238, 0x0240, 0x0246,\n    0x0249, 0x0246, 0x023B, 0x0228, 0x0214, 0x0205, 0x01EF, 0x01CA,\n    0x018C, 0x012A, 0x009C, 0xFFE5, 0xFF12, 0xFE28, 0xFD2E, 0xFC2A,\n    0xFB20, 0xFA16, 0xF912, 0xF81A, 0xF732, 0xF662, 0xF5AD, 0xF544,\n    0xF536, 0xF55E, 0xF593, 0xF5AD, 0xD773, 0xD72E, 0xD66C, 0xD541,\n    0xD3C2, 0xD203, 0xD018, 0xCE17, 0xCC12, 0xCA20, 0xC853, 0xC6C1,\n    0xC57D, 0xC49D, 0xC434, 0xC457, 0xC555, 0xC74A, 0xCA03, 0xCD4C,\n    0xD0F0, 0xD4BB, 0xD878, 0xDBF4, 0xDEF9, 0xE154, 0xE2D1, 0xE3B4,\n    0xE469, 0xE4F2, 0xE555, 0xE595, 0xE5B5, 0xE5B9, 0xE5A6, 0xE57E,\n    0xE546, 0xE501, 0xE4B4, 0xE462, 0xE40E, 0xE3BD, 0xE372, 0xE331,\n    0xE2FE, 0xE2DD, 0xE2D1, 0xE2D5, 0xE2DE, 0xE2EA, 0xE2F7, 0xE300,\n    0xE304, 0xE2FF, 0xE2EF, 0xE2D1, 0xE296, 0xE23A, 0xE1CC, 0xE159,\n    0xE0EF, 0xE09B, 0xE06B, 0xE058, 0xE050, 0xE052, 0xE05B, 0xE06A,\n    0xE07E, 0xE095, 0xE0AC, 0xE0C3, 0xE0D8, 0xE0E9, 0xE0F5, 0xE0FA,\n    0xE0FA, 0xE0F8, 0xE0F6, 0xE0F5, 0xF180, 0xF1D2, 0xF2B8, 0xF416,\n    0xF5D1, 0xF7CF, 0xF9F3, 0xFC23, 0xFE44, 0x003A, 0x01EB, 0x033D,\n    0x0412, 0x0452, 0x03E0, 0x02A1, 0x001C, 0xFC1A, 0xF6E6, 0xF0CD,\n    0xEA1A, 0xE319, 0xDC15, 0xD55A, 0xCF35, 0xC9F0, 0xC5D8, 0xC447,\n    0xC57C, 0xC81A, 0xCAC1, 0xCC14, 0xCBC7, 0xCAC4, 0xC976, 0xC84A,\n    0xC7AE, 0xC80D, 0xC961, 0xCB43, 0xCD8C, 0xD01B, 0xD2C9, 0xD573,\n    0xD7F6, 0xDA2B, 0xDA2B, 0xD9F2, 0xD963, 0xD8A9, 0xD7EF, 0xD760,\n    0xD727, 0xD76E, 0xD861, 0xDA2B, 0xDD93, 0xE2C6, 0xE90D, 0xEFAD,\n    0xF5EC, 0xFB11, 0xFE64, 0x0048, 0x01AE, 0x02A6, 0x0342, 0x0393,\n    0x03AB, 0x039B, 0x0374, 0x0348, 0x0328, 0x0326, 0x0353, 0x0383,\n    0x0389, 0x0377, 0x035F, 0x0353, 0xE8BF, 0xE8B1, 0xE889, 0xE847,\n    0xE7EE, 0xE77D, 0xE6F7, 0xE65D, 0xE5B0, 0xE4F1, 0xE422, 0xE344,\n    0xE259, 0xE161, 0xE05D, 0xDF50, 0xDE1A, 0xDCA4, 0xDAFC, 0xD92F,\n    0xD74A, 0xD55C, 0xD371, 0xD196, 0xCFDB, 0xCE4B, 0xCCF4, 0xCC18,\n    0xCBCA, 0xCBD1, 0xCBF3, 0xCBF7, 0xCBD8, 0xCBBA, 0xCBA1, 0xCB94,\n    0xCB99, 0xCBB5, 0xCBE8, 0xCC2D, 0xCC7F, 0xCCDA, 0xCD38, 0xCD96,\n    0xCDEE, 0xCE3C, 0xCE3C, 0xCE0C, 0xCD95, 0xCCF9, 0xCC5D, 0xCBE6,\n    0xCBB6, 0xCBF2, 0xCCBD, 0xCE3C, 0xD105, 0xD539, 0xDA4D, 0xDFB7,\n    0xE4EC, 0xE960, 0xEC88, 0xEEB4, 0xF094, 0xF231, 0xF393, 0xF4C4,\n    0xF5CB, 0xF6B3, 0xF783, 0xF844, 0xF900, 0xF9BE, 0xFA88, 0xFB0F,\n    0xFB20, 0xFAEE, 0xFAAA, 0xFA88, 0x9442, 0x940D, 0x937D, 0x92A7,\n    0x91A0, 0x907D, 0x8F53, 0x8E37, 0x8D3E, 0x8C7D, 0x8C09, 0x8BF8,\n    0x8C5F, 0x8D52, 0x8EE6, 0x9131, 0x94C6, 0x99F2, 0xA061, 0xA7BF,\n    0xAFB8, 0xB7F8, 0xC02A, 0xC7FA, 0xCF15, 0xD527, 0xD9DA, 0xDB9B,\n    0xDA06, 0xD68C, 0xD2A1, 0xCFB5, 0xCDD9, 0xCC17, 0xCA5B, 0xC892,\n    0xC6A8, 0xC48A, 0xC231, 0xBFAF, 0xBD11, 0xBA65, 0xB7B9, 0xB51A,\n    0xB297, 0xB03C, 0xB03C, 0xB096, 0xB176, 0xB299, 0xB3BD, 0xB49D,\n    0xB4F7, 0xB487, 0xB309, 0xB03C, 0xAA50, 0xA0CB, 0x9566, 0x89D9,\n    0x7FDA, 0x7928, 0x777A, 0x79EC, 0x7E3C, 0x841F, 0x8B3B, 0x9345,\n    0x9BEA, 0xA4DA, 0xADC3, 0xB656, 0xBE40, 0xC531, 0xCAD8, 0xCDFC,\n    0xCE60, 0xCD33, 0xCBA1, 0xCAD8, 0xB4FF, 0xB49D, 0xB4FF, 0xB49D,\n    0x0000, 0xFFC9, 0xFF35, 0xFE5F, 0xFD61, 0xFC56, 0xFB58, 0xFA82,\n    0xF9EE, 0xF9B7, 0xF9D2, 0xFA1E, 0xFA92, 0xFB25, 0xFBCE, 0xFC85,\n    0xFD41, 0xFDF9, 0xFEA4, 0xFF39, 0xFFB1, 0x0000, 0x0032, 0x0058,\n    0x0071, 0x0081, 0x0087, 0x0086, 0x007F, 0x0072, 0x0063, 0x0050,\n    0x003D, 0x002B, 0x001A, 0x000C, 0x0003, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xFFAC, 0xFEC8, 0xFD7F, 0xFBF9, 0xFA5E, 0xF8D7, 0xF78E,\n    0xF6AB, 0xF656, 0xF680, 0xF6F5, 0xF7A7, 0xF889, 0xF98D, 0xFAA7,\n    0xFBC7, 0xFCE2, 0xFDE9, 0xFECE, 0xFF86, 0x0000, 0x004D, 0x0087,\n    0x00AF, 0x00C6, 0x00D0, 0x00CF, 0x00C3, 0x00B0, 0x0098, 0x007C,\n    0x005E, 0x0042, 0x0028, 0x0013, 0x0005, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x2581, 0x24E3, 0x2339, 0x20CC, 0x1DE5, 0x1ACC, 0x17CA, 0x1528,\n    0x132E, 0x1226, 0x121C, 0x12CF, 0x1411, 0x15B6, 0x1791, 0x1975,\n    0x1B36, 0x1CA5, 0x1D97, 0x1DDE, 0x1D4E, 0x1BBA, 0x1934, 0x15FC,\n    0x122C, 0x0DDC, 0x0924, 0x041D, 0xFEE1, 0xF987, 0xF427, 0xEEDB,\n    0xE9BB, 0xE4E0, 0xE063, 0xDC5B, 0xD8E2, 0xD610, 0xD481, 0xD482,\n    0xD5B3, 0xD7B8, 0xDA31, 0xDCC1, 0xDF07, 0xE0A8, 0xE0A8, 0xE0E1,\n    0xE172, 0xE22F, 0xE2EB, 0xE37C, 0xE3B6, 0xE36D, 0xE277, 0xE0A8,\n    0xDC79, 0xD57F, 0xCD30, 0xC503, 0xBE72, 0xBAF2, 0xBBFC, 0xC5F2,\n    0xD898, 0xEE7D, 0x022F, 0x0E3E, 0x0E53, 0x0600, 0xFBB3, 0xF5D4,\n    0xF82D, 0xFE9C, 0x03B0, 0x0613, 0x0800, 0x096D, 0x0A50, 0x0A9E,\n    0x2104, 0x28F1, 0x3805, 0x4134, 0x409A, 0x3C74, 0x36E5, 0x3210,\n    0x3017, 0x30ED, 0x32E6, 0x35B3, 0x3909, 0x3C9B, 0x401B, 0x433D,\n    0x4632, 0x4949, 0x4C67, 0x4F70, 0x5260, 0x5546, 0x5825, 0x5B00,\n    0x5DDB, 0x60B9, 0x639C, 0x6689, 0x6982, 0x6C8B, 0x6FA6, 0x7327,\n    0x772B, 0x7B61, 0x7F7D, 0x8331, 0x862A, 0x881B, 0x890F, 0x895C,\n    0x8926, 0x888F, 0x87BD, 0x86D1, 0x85EF, 0x853B, 0x84D9, 0x8488,\n    0x8405, 0x836F, 0x82E3, 0x8280, 0x8262, 0x82A8, 0x8371, 0x84D9,\n    0x8821, 0x8DAA, 0x943F, 0x9AAC, 0x9FBC, 0xA23B, 0xA0F5, 0x9C84,\n    0x967D, 0x8F29, 0x86D0, 0x7DB8, 0x742F, 0x6A79, 0x60E0, 0x57AA,\n    0x4F21, 0x478C, 0x4134, 0x3D99, 0x3D26, 0x3E80, 0x404D, 0x4134,\n};\n\n// 0x06013170\nstatic const u16 mips_seg6_animindex_06013170[] = {\n    0x0001, 0x0000, 0x0050, 0x0001, 0x0050, 0x0051, 0x0001, 0x0000, 0x0001, 0x00A1, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0050, 0x0878,\n    0x0050, 0x0788, 0x0050, 0x07D8, 0x0050, 0x0828,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0786,\n    0x0050, 0x00F2, 0x0050, 0x0142, 0x0050, 0x0192,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0050, 0x00A2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0784,\n    0x0050, 0x0232, 0x0050, 0x0282, 0x0050, 0x02D2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0050, 0x01E2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0787,\n    0x0050, 0x0462, 0x0050, 0x04B2, 0x0050, 0x0502,\n    0x0050, 0x0372, 0x0050, 0x03C2, 0x0050, 0x0412,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0050, 0x0322,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0785,\n    0x0050, 0x0694, 0x0050, 0x06E4, 0x0050, 0x0734,\n    0x0050, 0x05A4, 0x0050, 0x05F4, 0x0050, 0x0644,\n    0x0001, 0x0552, 0x0001, 0x0553, 0x0050, 0x0554,\n};\n\n// 0x06013248\nstatic const struct Animation mips_seg6_anim_06013248 = {\n    0,\n    0,\n    0,\n    0,\n    0x50,\n    ANIMINDEX_NUMPARTS(mips_seg6_animindex_06013170),\n    mips_seg6_animvalue_06011FE0,\n    mips_seg6_animindex_06013170,\n    0,\n};\n"
  },
  {
    "path": "actors/mips/anims/anim_0601369C.inc.c",
    "content": "// 0x06013260\nstatic const s16 mips_seg6_animvalue_06013260[] = {\n    0x0000, 0x0006, 0xFFFA, 0x3FFF, 0x40A9, 0x40B8, 0x40E2, 0x4124,\n    0x4177, 0x41D9, 0x4243, 0x42B2, 0x4321, 0x438C, 0x43ED, 0x4441,\n    0x4482, 0x44AD, 0x44BC, 0x44AE, 0x4489, 0x444F, 0x4405, 0x43AD,\n    0x434D, 0x42E6, 0x427E, 0x4218, 0x41B7, 0x4160, 0x4115, 0x40DB,\n    0x40B6, 0x40A9, 0x0000, 0x0005, 0x0014, 0x002C, 0x004A, 0x006D,\n    0x0093, 0x00BB, 0x00E3, 0x0109, 0x012C, 0x014A, 0x0161, 0x0171,\n    0x0176, 0x0171, 0x0164, 0x014F, 0x0134, 0x0115, 0x00F2, 0x00CE,\n    0x00A8, 0x0083, 0x0061, 0x0041, 0x0026, 0x0012, 0x0004, 0x0000,\n    0x1600, 0x1600, 0x15FF, 0x15FE, 0x15FE, 0x15FC, 0x15FB, 0x15FA,\n    0x15F9, 0x15F8, 0x15F7, 0x15F6, 0x15F5, 0x15F5, 0x15F4, 0x15F5,\n    0x15F5, 0x15F6, 0x15F6, 0x15F7, 0x15F8, 0x15FA, 0x15FB, 0x15FC,\n    0x15FD, 0x15FE, 0x15FF, 0x15FF, 0x1600, 0x1600, 0x5639, 0x5644,\n    0x5662, 0x568F, 0x56CA, 0x570E, 0x5758, 0x57A6, 0x57F4, 0x583E,\n    0x5882, 0x58BD, 0x58EA, 0x5908, 0x5913, 0x5909, 0x58EF, 0x58C7,\n    0x5893, 0x5856, 0x5812, 0x57CA, 0x5782, 0x573A, 0x56F6, 0x56B9,\n    0x5685, 0x565D, 0x5643, 0x5639, 0x458C, 0x4599, 0x45BB, 0x45EF,\n    0x4632, 0x4680, 0x46D5, 0x472E, 0x4786, 0x47DB, 0x4829, 0x486C,\n    0x48A1, 0x48C3, 0x48CF, 0x48C4, 0x48A6, 0x4878, 0x483C, 0x47F6,\n    0x47A9, 0x4757, 0x4704, 0x46B2, 0x4665, 0x461F, 0x45E3, 0x45B5,\n    0x4597, 0x458C, 0x0631, 0x062C, 0x061C, 0x0603, 0x05E4, 0x05C0,\n    0x0598, 0x056E, 0x0545, 0x051D, 0x04F8, 0x04D9, 0x04C1, 0x04B1,\n    0x04AB, 0x04B0, 0x04BE, 0x04D4, 0x04F0, 0x0510, 0x0534, 0x055B,\n    0x0582, 0x05A8, 0x05CC, 0x05ED, 0x0609, 0x061E, 0x062C, 0x0631,\n    0xF195, 0xF193, 0xF18D, 0xF185, 0xF17A, 0xF16D, 0xF15E, 0xF150,\n    0xF141, 0xF133, 0xF126, 0xF11B, 0xF112, 0xF10C, 0xF10A, 0xF10C,\n    0xF111, 0xF119, 0xF123, 0xF12E, 0xF13B, 0xF149, 0xF157, 0xF164,\n    0xF171, 0xF17D, 0xF187, 0xF18E, 0xF193, 0xF195, 0x510A, 0x511A,\n    0x5147, 0x518C, 0x51E5, 0x524C, 0x52BD, 0x5332, 0x53A8, 0x5419,\n    0x5480, 0x54D8, 0x551D, 0x554B, 0x555B, 0x554D, 0x5525, 0x54E8,\n    0x5499, 0x543C, 0x53D6, 0x5369, 0x52FB, 0x528F, 0x5228, 0x51CC,\n    0x517D, 0x513F, 0x5118, 0x510A, 0xEB60, 0xEB70, 0xEB9C, 0xEBDF,\n    0xEC34, 0xEC96, 0xED00, 0xED6C, 0xEDD5, 0xEE37, 0xEE8C, 0xEECF,\n    0xEEFB, 0xEF0B, 0xEF00, 0xEEE3, 0xEEB4, 0xEE78, 0xEE31, 0xEDE2,\n    0xED8D, 0xED36, 0xECDE, 0xEC89, 0xEC3A, 0xEBF3, 0xEBB7, 0xEB89,\n    0xEB6B, 0xEB60, 0xF531, 0xF53C, 0xF559, 0xF586, 0xF5BF, 0xF600,\n    0xF646, 0xF68E, 0xF6D5, 0xF716, 0xF74F, 0xF77B, 0xF799, 0xF7A3,\n    0xF79C, 0xF788, 0xF769, 0xF741, 0xF712, 0xF6DD, 0xF6A5, 0xF66A,\n    0xF630, 0xF5F7, 0xF5C3, 0xF593, 0xF56B, 0xF54C, 0xF538, 0xF531,\n    0x0E40, 0xFC80, 0xCC6E, 0x8001, 0x8001, 0x724B, 0x7260, 0x729B,\n    0x72F5, 0x7366, 0x73E8, 0x7475, 0x7505, 0x7592, 0x7614, 0x7686,\n    0x76DF, 0x771A, 0x772F, 0x7721, 0x76F9, 0x76BB, 0x766B, 0x760D,\n    0x75A3, 0x7532, 0x74BD, 0x7448, 0x73D7, 0x736E, 0x730F, 0x72BF,\n    0x7281, 0x7259, 0x724B, 0xE687, 0xE693, 0xE6B5, 0xE6E9, 0xE72B,\n    0xE778, 0xE7CA, 0xE81E, 0xE870, 0xE8BC, 0xE8FE, 0xE932, 0xE954,\n    0xE961, 0xE958, 0xE941, 0xE91D, 0xE8EF, 0xE8B7, 0xE87A, 0xE838,\n    0xE7F4, 0xE7B0, 0xE76E, 0xE730, 0xE6F9, 0xE6CA, 0xE6A6, 0xE68F,\n    0xE687, 0xD126, 0xB4FF, 0xB49D, 0xB4FF, 0xB49D, 0x1E2B, 0x1E39,\n    0x1E5F, 0x1E9A, 0x1EE5, 0x1F3D, 0x1F9D, 0x2001, 0x2065, 0x20C4,\n    0x211C, 0x2167, 0x21A2, 0x21C8, 0x21D6, 0x21CA, 0x21A8, 0x2174,\n    0x2131, 0x20E3, 0x208C, 0x2030, 0x1FD2, 0x1F76, 0x1F1F, 0x1ED0,\n    0x1E8D, 0x1E59, 0x1E37, 0x1E2B, 0x4B63, 0x4B6E, 0x4B8C, 0x4BBA,\n    0x4BF4, 0x4C38, 0x4C83, 0x4CD0, 0x4D1E, 0x4D69, 0x4DAD, 0x4DE7,\n    0x4E15, 0x4E33, 0x4E3D, 0x4E34, 0x4E1A, 0x4DF1, 0x4DBD, 0x4D80,\n    0x4D3C, 0x4CF5, 0x4CAC, 0x4C64, 0x4C21, 0x4BE3, 0x4BAF, 0x4B87,\n    0x4B6D, 0x4B63,\n};\n\n// 0x060135C4\nstatic const u16 mips_seg6_animindex_060135C4[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0000, 0x0001, 0x0003, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0194,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0176,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0174,\n    0x001E, 0x0022, 0x001E, 0x0040, 0x001E, 0x005E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0004,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0172,\n    0x001E, 0x009A, 0x001E, 0x00B8, 0x001E, 0x00D6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x007C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0175,\n    0x0001, 0x0130, 0x0001, 0x0131, 0x0001, 0x0132,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0112,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x00F4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0173,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0171,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0153,\n    0x0001, 0x0133, 0x0001, 0x0134, 0x001E, 0x0135,\n};\n\n// 0x0601369C\nstatic const struct Animation mips_seg6_anim_0601369C = {\n    0,\n    0,\n    0,\n    0,\n    0x1E,\n    ANIMINDEX_NUMPARTS(mips_seg6_animindex_060135C4),\n    mips_seg6_animvalue_06013260,\n    mips_seg6_animindex_060135C4,\n    0,\n};\n"
  },
  {
    "path": "actors/mips/anims/anim_060139F8.inc.c",
    "content": "// 0x060136B4\nstatic const s16 mips_seg6_animvalue_060136B4[] = {\n    0x0000, 0x006C, 0x0090, 0x00D4, 0x00FF, 0x0103, 0x00FB, 0x00EB,\n    0x00D8, 0x00C6, 0x00AF, 0x0092, 0x0078, 0xFFFE, 0x3FFF, 0x0A79,\n    0xFD4D, 0xF19F, 0xF80C, 0x032E, 0x0FD0, 0x1ABA, 0x20B4, 0x1FFC,\n    0x1ABC, 0x13A0, 0x0D51, 0xDECF, 0xE1FB, 0xE527, 0xE4FA, 0xE47F,\n    0xE3CA, 0xE2EF, 0xE1FF, 0xE110, 0xE033, 0xDF7C, 0xDEFF, 0x0A1E,\n    0x0716, 0x040E, 0x0439, 0x04AE, 0x055B, 0x062D, 0x0712, 0x07F7,\n    0x08CA, 0x0979, 0x09F0, 0x22B2, 0x1B3B, 0x13C4, 0x142E, 0x154F,\n    0x16F8, 0x18FE, 0x1B31, 0x1D65, 0x1F6C, 0x211A, 0x2240, 0x1649,\n    0x08AD, 0xFCA0, 0x0348, 0x0ED3, 0x1BEA, 0x2737, 0x2D66, 0x2CA4,\n    0x272F, 0x1FCC, 0x193E, 0x249D, 0x247F, 0x2460, 0x2462, 0x2466,\n    0x246D, 0x2475, 0x247E, 0x2487, 0x2490, 0x2497, 0x249B, 0xFC0F,\n    0xFB9E, 0xFB2D, 0xFB33, 0xFB44, 0xFB5E, 0xFB7C, 0xFB9D, 0xFBBF,\n    0xFBDD, 0xFBF7, 0xFC08, 0x1442, 0x136E, 0x1299, 0x12A5, 0x12C5,\n    0x12F5, 0x132E, 0x136D, 0x13AB, 0x13E5, 0x1415, 0x1435, 0xDB7C,\n    0xD21E, 0xDB7C, 0xDFB6, 0xE2AC, 0xE54A, 0xE5B4, 0xD9FB, 0xD04C,\n    0xD121, 0xD504, 0xD958, 0x0000, 0xFD7D, 0xFA29, 0xF8A2, 0xF771,\n    0xF6CE, 0xF6ED, 0xF7FD, 0xF9C4, 0xFBDB, 0xFDDC, 0xFF60, 0x0000,\n    0x0778, 0x0FB3, 0x0FB9, 0x0DA2, 0x0AC7, 0x0880, 0x06CF, 0x04F2,\n    0x031F, 0x018C, 0x0070, 0xD773, 0xE4EF, 0xF280, 0xEF04, 0xE6DE,\n    0xDE03, 0xD86A, 0xD680, 0xD5CC, 0xD5ED, 0xD680, 0xD723, 0x1587,\n    0x0E70, 0x05A3, 0x034D, 0x033E, 0x05A3, 0x1043, 0x1A1F, 0x1B06,\n    0x1A13, 0x1838, 0x1664, 0xF976, 0xF976, 0xF976, 0xF8D1, 0xF82C,\n    0xF976, 0x0242, 0x099C, 0x07F4, 0x03FD, 0xFF3F, 0xFB3B, 0xAD8F,\n    0xC8A4, 0xEA44, 0xF47C, 0xF5FD, 0xEA44, 0xB013, 0x7BB5, 0x7B93,\n    0x871E, 0x97B4, 0xA6B8, 0x8001, 0x8001, 0x60C6, 0x55C6, 0x60C6,\n    0x6530, 0x6808, 0x6A49, 0x6948, 0x5E32, 0x5549, 0x5650, 0x5A4A,\n    0x5EA2, 0x0000, 0x0318, 0x0709, 0x087E, 0x096F, 0x09C6, 0x0972,\n    0x0847, 0x0668, 0x043E, 0x022F, 0x00A3, 0x0000, 0xF8A5, 0xF08A,\n    0xF086, 0xF298, 0xF56A, 0xF7A8, 0xF953, 0xFB27, 0xFCF1, 0xFE7C,\n    0xFF92, 0xD3C9, 0xE1EB, 0xF066, 0xED71, 0xE5C2, 0xDD35, 0xD7A1,\n    0xD566, 0xD423, 0xD399, 0xD387, 0xD3AC, 0xEB45, 0xF1A2, 0xF988,\n    0xFBC5, 0xFBF7, 0xF988, 0xEE09, 0xE38E, 0xE31D, 0xE4D8, 0xE791,\n    0xEA1A, 0x0652, 0x0652, 0x0652, 0x070D, 0x07C8, 0x0652, 0xFC58,\n    0xF402, 0xF5E3, 0xFA61, 0xFFC4, 0x0451, 0xAD47, 0xC7A2, 0xE85A,\n    0xF25C, 0xF3E3, 0xE85A, 0xAEE1, 0x7B35, 0x7B3D, 0x86DB, 0x9773,\n    0xA673, 0xB4FF, 0xB49D, 0xB4FF, 0xB49D, 0xF022, 0xED28, 0xEBA7,\n    0xF016, 0xF675, 0xFD42, 0x02F9, 0x0618, 0x03BC, 0xFD12, 0xF6AE,\n    0xF245, 0x6A5A, 0x6049, 0x53F2, 0x5CB3, 0x5C3F, 0x5A3F, 0x5867,\n    0x586A, 0x5B3A, 0x5FC1, 0x64AB, 0x68A5, 0x0000,\n};\n\n// 0x06013920\nstatic const u16 mips_seg6_animindex_06013920[] = {\n    0x0001, 0x0000, 0x000C, 0x0001, 0x0001, 0x000D, 0x0001, 0x0000, 0x0001, 0x000E, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x0129,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x011D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x011B,\n    0x000C, 0x001B, 0x000C, 0x0027, 0x000C, 0x0033,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x000F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0119,\n    0x000C, 0x004B, 0x000C, 0x0057, 0x000C, 0x0063,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x003F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x011C,\n    0x000C, 0x009F, 0x000C, 0x00AB, 0x000C, 0x00B7,\n    0x000C, 0x007B, 0x000C, 0x0087, 0x000C, 0x0093,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x006F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x011A,\n    0x000C, 0x00F5, 0x000C, 0x0101, 0x000C, 0x010D,\n    0x000C, 0x00D1, 0x000C, 0x00DD, 0x000C, 0x00E9,\n    0x0001, 0x00C3, 0x0001, 0x00C4, 0x000C, 0x00C5,\n};\n\n// 0x060139F8\nstatic const struct Animation mips_seg6_anim_060139F8 = {\n    0,\n    0,\n    0,\n    0,\n    0x0C,\n    ANIMINDEX_NUMPARTS(mips_seg6_animindex_06013920),\n    mips_seg6_animvalue_060136B4,\n    mips_seg6_animindex_06013920,\n    0,\n};\n"
  },
  {
    "path": "actors/mips/anims/anim_06014B94.inc.c",
    "content": "// 0x06013A10\nstatic const s16 mips_seg6_animvalue_06013A10[] = {\n    0x0000, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072,\n    0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072,\n    0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072,\n    0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072,\n    0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0x0071,\n    0x0071, 0x0070, 0x006F, 0x006F, 0x006E, 0x006D, 0x006B, 0x006A,\n    0x0068, 0x0067, 0x0065, 0x0064, 0x0063, 0x0062, 0x0061, 0x0061,\n    0x0060, 0x0060, 0x0060, 0x0060, 0x0061, 0x0061, 0x0062, 0x0062,\n    0x0064, 0x0065, 0x0066, 0x0068, 0x0069, 0x006B, 0x006C, 0x006D,\n    0x006E, 0x006F, 0x006F, 0x0070, 0x0070, 0x0071, 0x0071, 0x0071,\n    0x0071, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, 0xFFC4, 0xFFC4,\n    0xFFC4, 0xFFC4, 0xFFC4, 0xFFC4, 0xFFC4, 0xFFC4, 0xFFC4, 0xFFC4,\n    0xFFC4, 0xFFC4, 0xFFC4, 0xFFC4, 0xFFC4, 0xFFC4, 0xFFC4, 0xFFC4,\n    0xFFC4, 0xFFC4, 0xFFC4, 0xFFC4, 0xFFC4, 0xFFC4, 0xFFC4, 0xFFC4,\n    0xFFC4, 0xFFC4, 0xFFC4, 0xFFC4, 0xFFC4, 0xFFC4, 0xFFC4, 0xFFC4,\n    0xFFC4, 0xFFC4, 0xFFC4, 0xFFC4, 0xFFC5, 0xFFC7, 0xFFCA, 0xFFCC,\n    0xFFCF, 0xFFD2, 0xFFD4, 0xFFD6, 0xFFD8, 0xFFDB, 0xFFDD, 0xFFDF,\n    0xFFE1, 0xFFE3, 0xFFE4, 0xFFE5, 0xFFE5, 0xFFE6, 0xFFE6, 0xFFE6,\n    0xFFE6, 0xFFE5, 0xFFE5, 0xFFE4, 0xFFE3, 0xFFE2, 0xFFE0, 0xFFDE,\n    0xFFDD, 0xFFDB, 0xFFD9, 0xFFD7, 0xFFD5, 0xFFD4, 0xFFD2, 0xFFD1,\n    0xFFCF, 0xFFCD, 0xFFCC, 0xFFCA, 0xFFC9, 0xFFC7, 0xFFC6, 0xFFC5,\n    0xFFC4, 0xFFC4, 0xFFC4, 0x3FFF, 0x25C5, 0x26AE, 0x292C, 0x2CE1,\n    0x3170, 0x367A, 0x3BA3, 0x408D, 0x44DA, 0x482D, 0x4A29, 0x4A70,\n    0x48ED, 0x45FA, 0x41DC, 0x3CDA, 0x373B, 0x3144, 0x2B3C, 0x2569,\n    0x2012, 0x1B7D, 0x17EF, 0x15B1, 0x1466, 0x1381, 0x12FA, 0x12C6,\n    0x12DE, 0x133A, 0x13D0, 0x1499, 0x158B, 0x169E, 0x17C9, 0x1905,\n    0x1A47, 0x1B89, 0x1CC0, 0x1DE5, 0x1EF0, 0x207D, 0x22EE, 0x25DD,\n    0x28E5, 0x2BA1, 0x2DAB, 0x2E9F, 0x2E16, 0x2AE1, 0x24ED, 0x1D82,\n    0x15E6, 0x0F60, 0x0B37, 0x091B, 0x07DB, 0x076A, 0x07BF, 0x08CC,\n    0x0A86, 0x0CE2, 0x1072, 0x1571, 0x1B55, 0x2193, 0x279D, 0x2CEA,\n    0x30ED, 0x331B, 0x33E1, 0x3415, 0x33CC, 0x3318, 0x320D, 0x30C0,\n    0x2F42, 0x2DA8, 0x2C05, 0x2A6E, 0x28F4, 0x27AD, 0x26AB, 0x2602,\n    0x25C5, 0xFDD1, 0xFDB1, 0xFD5A, 0xFCD9, 0xFC39, 0xFB88, 0xFAD3,\n    0xFA25, 0xF98C, 0xF913, 0xF8C8, 0xF8B8, 0xF8E5, 0xF946, 0xF9CF,\n    0xFA77, 0xFB34, 0xFBFB, 0xFCC3, 0xFD81, 0xFE2C, 0xFEB9, 0xFF1F,\n    0xFF52, 0xFF67, 0xFF75, 0xFF7D, 0xFF7F, 0xFF7B, 0xFF73, 0xFF67,\n    0xFF56, 0xFF41, 0xFF29, 0xFF0E, 0xFEF0, 0xFED0, 0xFEAD, 0xFE8A,\n    0xFE65, 0xFE3F, 0xFE1A, 0xFDF4, 0xFDCE, 0xFDA9, 0xFD85, 0xFD63,\n    0xFD43, 0xFD24, 0xFD09, 0xFCF0, 0xFCDB, 0xFCCA, 0xFCBD, 0xFCB4,\n    0xFCAF, 0xFCAC, 0xFCAC, 0xFCAF, 0xFCB3, 0xFCB9, 0xFCC1, 0xFCCB,\n    0xFCD6, 0xFCE2, 0xFCEF, 0xFCFD, 0xFD0C, 0xFD1B, 0xFD2B, 0xFD3B,\n    0xFD4B, 0xFD5A, 0xFD6A, 0xFD79, 0xFD87, 0xFD95, 0xFDA2, 0xFDAD,\n    0xFDB7, 0xFDC0, 0xFDC7, 0xFDCD, 0xFDD0, 0xFDD1, 0x0950, 0x093E,\n    0x090B, 0x08BF, 0x0861, 0x07F9, 0x078D, 0x0725, 0x06C8, 0x067D,\n    0x064C, 0x063B, 0x064C, 0x0677, 0x06B8, 0x0708, 0x0764, 0x07C7,\n    0x082A, 0x088A, 0x08E1, 0x092A, 0x0960, 0x097F, 0x098E, 0x099B,\n    0x09A5, 0x09AC, 0x09B2, 0x09B5, 0x09B6, 0x09B6, 0x09B4, 0x09B0,\n    0x09AB, 0x09A5, 0x099E, 0x0996, 0x098D, 0x0983, 0x0979, 0x096E,\n    0x0964, 0x0959, 0x094E, 0x0944, 0x093A, 0x0931, 0x0928, 0x0920,\n    0x0919, 0x0913, 0x090F, 0x090B, 0x090A, 0x0909, 0x0909, 0x090A,\n    0x090B, 0x090C, 0x090E, 0x0910, 0x0913, 0x0916, 0x0919, 0x091C,\n    0x091F, 0x0923, 0x0927, 0x092A, 0x092E, 0x0932, 0x0935, 0x0939,\n    0x093C, 0x0940, 0x0943, 0x0946, 0x0948, 0x094B, 0x094D, 0x094E,\n    0x094F, 0x0950, 0x0950, 0x3521, 0x3480, 0x32C7, 0x3037, 0x2D0F,\n    0x298D, 0x25F3, 0x227F, 0x1F71, 0x1D09, 0x1B85, 0x1B27, 0x1BFE,\n    0x1DD2, 0x2071, 0x23A8, 0x2747, 0x2B1C, 0x2EF5, 0x32A2, 0x35EF,\n    0x38AD, 0x3AA8, 0x3BB0, 0x3C1E, 0x3C6D, 0x3C9F, 0x3CB5, 0x3CB2,\n    0x3C98, 0x3C67, 0x3C22, 0x3BCB, 0x3B63, 0x3AED, 0x3A69, 0x39DB,\n    0x3943, 0x38A3, 0x37FD, 0x3753, 0x36A8, 0x35FB, 0x3550, 0x34A8,\n    0x3405, 0x3368, 0x32D5, 0x324B, 0x31CD, 0x315D, 0x30FD, 0x30AE,\n    0x3073, 0x304C, 0x3036, 0x302C, 0x302C, 0x3035, 0x3048, 0x3063,\n    0x3085, 0x30AF, 0x30DE, 0x3112, 0x314B, 0x3188, 0x31C9, 0x320B,\n    0x324F, 0x3294, 0x32D9, 0x331E, 0x3362, 0x33A3, 0x33E2, 0x341D,\n    0x3454, 0x3486, 0x34B2, 0x34D8, 0x34F7, 0x350E, 0x351C, 0x3521,\n    0x27CE, 0x2763, 0x2642, 0x249A, 0x229D, 0x207A, 0x1E63, 0x1C87,\n    0x1B16, 0x1A41, 0x1A39, 0x1B2D, 0x1D5D, 0x20BA, 0x2504, 0x29F7,\n    0x2F52, 0x34D4, 0x3A39, 0x3F40, 0x43A8, 0x472D, 0x498E, 0x4A89,\n    0x4A72, 0x49D1, 0x48B4, 0x4726, 0x4534, 0x42EA, 0x4054, 0x3D80,\n    0x3A78, 0x374A, 0x3402, 0x30AC, 0x2D55, 0x2A09, 0x26D5, 0x23C4,\n    0x20E4, 0x1D1C, 0x17E9, 0x122F, 0x0CD8, 0x08C9, 0x06EA, 0x0823,\n    0x0DCF, 0x178F, 0x23AE, 0x3077, 0x3C37, 0x4538, 0x49C6, 0x4AB5,\n    0x4A26, 0x485A, 0x4590, 0x4209, 0x3E04, 0x39C1, 0x3581, 0x3184,\n    0x2E0A, 0x2B52, 0x299C, 0x2899, 0x27C7, 0x2725, 0x26AC, 0x265A,\n    0x2628, 0x2614, 0x2618, 0x2630, 0x2659, 0x268D, 0x26C8, 0x2706,\n    0x2742, 0x2779, 0x27A6, 0x27C3, 0x27CE, 0x01B6, 0x0188, 0x0108,\n    0x004B, 0xFF63, 0xFE61, 0xFD5A, 0xFC60, 0xFB85, 0xFADD, 0xFA79,\n    0xFA6E, 0xFAC5, 0xFB6F, 0xFC5B, 0xFD78, 0xFEB6, 0x0001, 0x014A,\n    0x027F, 0x038F, 0x0469, 0x04FB, 0x0535, 0x0534, 0x0526, 0x0509,\n    0x04E1, 0x04AD, 0x046E, 0x0425, 0x03D4, 0x037C, 0x031C, 0x02B6,\n    0x024C, 0x01DD, 0x016C, 0x00F8, 0x0083, 0x000E, 0xFF9B, 0xFF28,\n    0xFEB8, 0xFE4C, 0xFDE3, 0xFD81, 0xFD24, 0xFCCF, 0xFC83, 0xFC3F,\n    0xFC06, 0xFBD7, 0xFBB5, 0xFB9F, 0xFB97, 0xFB9A, 0xFBA7, 0xFBBF,\n    0xFBE0, 0xFC09, 0xFC3A, 0xFC72, 0xFCB0, 0xFCF3, 0xFD3A, 0xFD85,\n    0xFDD3, 0xFE23, 0xFE74, 0xFEC6, 0xFF18, 0xFF68, 0xFFB6, 0x0001,\n    0x004A, 0x008E, 0x00CD, 0x0106, 0x0139, 0x0164, 0x0187, 0x01A1,\n    0x01B1, 0x01B6, 0xEA87, 0xEA8A, 0xEA92, 0xEA9E, 0xEAAD, 0xEABE,\n    0xEAD1, 0xEAE4, 0xEAF7, 0xEB08, 0xEB17, 0xEB22, 0xEB2B, 0xEB34,\n    0xEB3C, 0xEB44, 0xEB4B, 0xEB51, 0xEB57, 0xEB5B, 0xEB5E, 0xEB61,\n    0xEB62, 0xEB61, 0xEB61, 0xEB5F, 0xEB5E, 0xEB5C, 0xEB5A, 0xEB58,\n    0xEB56, 0xEB53, 0xEB51, 0xEB4E, 0xEB4B, 0xEB48, 0xEB44, 0xEB41,\n    0xEB3D, 0xEB3A, 0xEB36, 0xEB32, 0xEB2E, 0xEB2A, 0xEB26, 0xEB23,\n    0xEB1F, 0xEB1B, 0xEB17, 0xEB13, 0xEB0F, 0xEB0B, 0xEB07, 0xEB03,\n    0xEB00, 0xEAFC, 0xEAF8, 0xEAF4, 0xEAEF, 0xEAEB, 0xEAE6, 0xEAE0,\n    0xEADB, 0xEAD6, 0xEAD1, 0xEACB, 0xEAC6, 0xEAC1, 0xEABB, 0xEAB6,\n    0xEAB1, 0xEAAC, 0xEAA7, 0xEAA3, 0xEA9F, 0xEA9A, 0xEA97, 0xEA93,\n    0xEA90, 0xEA8E, 0xEA8B, 0xEA8A, 0xEA88, 0xEA87, 0xEA87, 0x3619,\n    0x367F, 0x3796, 0x3932, 0x3B27, 0x3D4D, 0x3F76, 0x4179, 0x432A,\n    0x445F, 0x44EC, 0x44A7, 0x436D, 0x4157, 0x3E94, 0x3B52, 0x37BF,\n    0x340A, 0x3062, 0x2CF4, 0x29EF, 0x2781, 0x25D9, 0x2525, 0x250E,\n    0x251C, 0x254E, 0x25A1, 0x2612, 0x269F, 0x2746, 0x2805, 0x28D9,\n    0x29BF, 0x2AB6, 0x2BBC, 0x2CCD, 0x2DE8, 0x2F09, 0x3030, 0x3159,\n    0x3282, 0x33AA, 0x34CC, 0x35E8, 0x36FB, 0x3802, 0x38FB, 0x39E4,\n    0x3ABB, 0x3B7D, 0x3C27, 0x3CB8, 0x3D2D, 0x3D84, 0x3DC1, 0x3DE8,\n    0x3DFC, 0x3DFE, 0x3DEF, 0x3DD0, 0x3DA3, 0x3D69, 0x3D24, 0x3CD4,\n    0x3C7C, 0x3C1B, 0x3BB5, 0x3B49, 0x3ADA, 0x3A68, 0x39F5, 0x3983,\n    0x3912, 0x38A4, 0x383A, 0x37D6, 0x3778, 0x3723, 0x36D7, 0x3696,\n    0x3661, 0x363A, 0x3622, 0x3619, 0xE26A, 0xE26A, 0xE26A, 0xE26B,\n    0xE26B, 0xE26C, 0xE26D, 0xE26F, 0xE270, 0xE272, 0xE273, 0xE275,\n    0xE277, 0xE279, 0xE27C, 0xE27E, 0xE280, 0xE283, 0xE286, 0xE288,\n    0xE28B, 0xE28E, 0xE291, 0xE293, 0xE296, 0xE299, 0xE29C, 0xE29F,\n    0xE2A2, 0xE2A5, 0xE2A8, 0xE2AB, 0xE2AE, 0xE2B1, 0xE2B3, 0xE2B6,\n    0xE2B9, 0xE2BB, 0xE2BE, 0xE2C0, 0xE2C2, 0xE2C4, 0xE2C6, 0xE2C8,\n    0xE2CA, 0xE2CB, 0xE2CD, 0xE2CE, 0xE2CF, 0xE2D0, 0xE2D1, 0xE2D1,\n    0xE2D2, 0xE2D2, 0xE2D2, 0xE2D1, 0xE2CF, 0xE2CD, 0xE2CB, 0xE2C8,\n    0xE2C4, 0xE2C1, 0xE2BD, 0xE2B8, 0xE2B4, 0xE2AF, 0xE2AA, 0xE2A5,\n    0xE2A0, 0xE29B, 0xE296, 0xE291, 0xE28C, 0xE288, 0xE283, 0xE27F,\n    0xE27B, 0xE277, 0xE274, 0xE271, 0xE26E, 0xE26C, 0xE26B, 0xE26A,\n    0xE26A, 0xDF99, 0xDF99, 0xDF98, 0xDF97, 0xDF95, 0xDF93, 0xDF90,\n    0xDF8D, 0xDF8A, 0xDF86, 0xDF82, 0xDF7D, 0xDF78, 0xDF73, 0xDF6E,\n    0xDF68, 0xDF63, 0xDF5D, 0xDF57, 0xDF50, 0xDF4A, 0xDF44, 0xDF3D,\n    0xDF36, 0xDF30, 0xDF29, 0xDF23, 0xDF1C, 0xDF16, 0xDF10, 0xDF09,\n    0xDF03, 0xDEFD, 0xDEF8, 0xDEF2, 0xDEED, 0xDEE8, 0xDEE3, 0xDEDF,\n    0xDEDB, 0xDED7, 0xDED4, 0xDED1, 0xDECE, 0xDECC, 0xDECB, 0xDECA,\n    0xDEC9, 0xDEC9, 0xDEDF, 0xDF14, 0xDF53, 0xDF8A, 0xDFA4, 0xDFAA,\n    0xDFAE, 0xDFB2, 0xDFB5, 0xDFB8, 0xDFBA, 0xDFBB, 0xDFBC, 0xDFBC,\n    0xDFBC, 0xDFBC, 0xDFBB, 0xDFBA, 0xDFB8, 0xDFB6, 0xDFB4, 0xDFB2,\n    0xDFB0, 0xDFAE, 0xDFAB, 0xDFA9, 0xDFA6, 0xDFA4, 0xDFA2, 0xDFA0,\n    0xDF9E, 0xDF9D, 0xDF9B, 0xDF9A, 0xDF9A, 0xDF99, 0x10D1, 0x10D0,\n    0x10CE, 0x10CA, 0x10C5, 0x10BE, 0x10B7, 0x10AE, 0x10A5, 0x109B,\n    0x1091, 0x1087, 0x107C, 0x1071, 0x1067, 0x105D, 0x1053, 0x104A,\n    0x1042, 0x103A, 0x1034, 0x102E, 0x102A, 0x1028, 0x1027, 0x1028,\n    0x102B, 0x1030, 0x1037, 0x1040, 0x104C, 0x105B, 0x106C, 0x1081,\n    0x1098, 0x10B3, 0x10D1, 0x1111, 0x1189, 0x122D, 0x12F1, 0x13C9,\n    0x14A8, 0x1583, 0x164D, 0x171F, 0x1809, 0x18EE, 0x19B6, 0x1A57,\n    0x1ADF, 0x1B58, 0x1BCB, 0x1BF4, 0x1BFC, 0x1C10, 0x1C27, 0x1C3B,\n    0x1C43, 0x1C39, 0x1C13, 0x1BCB, 0x1B67, 0x1AF5, 0x1A77, 0x19EE,\n    0x195C, 0x18C3, 0x1825, 0x1783, 0x16DE, 0x1639, 0x1596, 0x14F6,\n    0x145B, 0x13C6, 0x133A, 0x12B7, 0x1241, 0x11D7, 0x117E, 0x1135,\n    0x10FF, 0x10DD, 0x10D1, 0xFFB8, 0xFFB8, 0xFFB8, 0xFFB8, 0xFFB8,\n    0xFFB9, 0xFFB9, 0xFFBA, 0xFFBA, 0xFFBB, 0xFFBC, 0xFFBC, 0xFFBD,\n    0xFFBD, 0xFFBE, 0xFFBF, 0xFFBF, 0xFFC0, 0xFFC0, 0xFFC1, 0xFFC1,\n    0xFFC1, 0xFFC2, 0xFFC2, 0xFFC2, 0xFFC2, 0xFFC2, 0xFFC1, 0xFFC1,\n    0xFFC0, 0xFFC0, 0xFFBF, 0xFFBE, 0xFFBC, 0xFFBB, 0xFFB9, 0xFFB8,\n    0xFFB0, 0xFFA1, 0xFF8D, 0xFF77, 0xFF65, 0xFF59, 0xFF57, 0xFF63,\n    0xFF9B, 0xFFFF, 0x0065, 0x00A8, 0x00B6, 0x00A6, 0x008B, 0x0078,\n    0x0075, 0x0076, 0x0078, 0x007A, 0x007D, 0x007E, 0x007E, 0x007C,\n    0x0078, 0x0071, 0x0069, 0x0061, 0x0057, 0x004D, 0x0043, 0x0038,\n    0x002D, 0x0022, 0x0016, 0x000B, 0x0000, 0xFFF6, 0xFFEC, 0xFFE2,\n    0xFFD9, 0xFFD1, 0xFFCA, 0xFFC4, 0xFFBF, 0xFFBB, 0xFFB8, 0xFFB8,\n    0xC8A3, 0xC8A3, 0xC8A3, 0xC8A3, 0xC8A3, 0xC8A3, 0xC8A3, 0xC8A3,\n    0xC8A3, 0xC8A3, 0xC8A3, 0xC8A3, 0xC8A3, 0xC8A3, 0xC8A3, 0xC8A3,\n    0xC8A3, 0xC8A3, 0xC8A3, 0xC8A3, 0xC8A3, 0xC8A3, 0xC8A3, 0xC8A3,\n    0xC8A3, 0xC8A3, 0xC8A3, 0xC8A3, 0xC8A3, 0xC8A3, 0xC8A3, 0xC8A3,\n    0xC8A3, 0xC8A3, 0xC8A3, 0xC8A3, 0xC8A3, 0xC7EA, 0xC694, 0xC4BE,\n    0xC282, 0xBFFC, 0xBD49, 0xBA82, 0xB7C4, 0xB48D, 0xB09A, 0xAC63,\n    0xA861, 0xA495, 0xA0C8, 0x9D24, 0x99CF, 0x98C8, 0x98A8, 0x985D,\n    0x9805, 0x97C0, 0x97AD, 0x97E9, 0x9895, 0x99CF, 0x9B7B, 0x9D62,\n    0x9F7E, 0xA1C8, 0xA437, 0xA6C5, 0xA969, 0xAC1E, 0xAEDB, 0xB19A,\n    0xB452, 0xB6FD, 0xB993, 0xBC0C, 0xBE62, 0xC08E, 0xC287, 0xC446,\n    0xC5C5, 0xC6FB, 0xC7E2, 0xC872, 0xC8A3, 0x8001, 0x8001, 0x61FF,\n    0xEDBB, 0xEDBB, 0xEDBB, 0xEDBB, 0xEDBB, 0xEDBB, 0xEDBA, 0xEDBA,\n    0xEDB9, 0xEDB9, 0xEDB9, 0xEDB8, 0xEDB7, 0xEDB7, 0xEDB6, 0xEDB5,\n    0xEDB5, 0xEDB4, 0xEDB3, 0xEDB2, 0xEDB1, 0xEDB0, 0xEDAF, 0xEDAE,\n    0xEDAD, 0xEDAC, 0xEDAB, 0xEDAA, 0xEDA9, 0xEDA8, 0xEDA7, 0xEDA5,\n    0xEDA4, 0xEDA3, 0xEDA2, 0xEDA0, 0xED9F, 0xED9E, 0xED9C, 0xED9B,\n    0xED9A, 0xED98, 0xED97, 0xED96, 0xED94, 0xED93, 0xED91, 0xED90,\n    0xED8F, 0xED8B, 0xED83, 0xED74, 0xED59, 0xED35, 0xED17, 0xED0B,\n    0xED0E, 0xED11, 0xED15, 0xED1B, 0xED20, 0xED27, 0xED2E, 0xED35,\n    0xED3D, 0xED45, 0xED4D, 0xED55, 0xED5E, 0xED67, 0xED6F, 0xED78,\n    0xED80, 0xED88, 0xED90, 0xED97, 0xED9E, 0xEDA4, 0xEDAA, 0xEDAF,\n    0xEDB3, 0xEDB7, 0xEDB9, 0xEDBB, 0xEDBB, 0xF5AD, 0xF5AC, 0xF5AB,\n    0xF5A8, 0xF5A4, 0xF5A0, 0xF59A, 0xF593, 0xF58C, 0xF584, 0xF57B,\n    0xF571, 0xF566, 0xF55B, 0xF54F, 0xF543, 0xF536, 0xF528, 0xF51A,\n    0xF50C, 0xF4FD, 0xF4EE, 0xF4DE, 0xF4CE, 0xF4BE, 0xF4AE, 0xF49D,\n    0xF48C, 0xF47B, 0xF46A, 0xF45A, 0xF449, 0xF438, 0xF427, 0xF416,\n    0xF405, 0xF3F5, 0xF3E5, 0xF3D5, 0xF3C5, 0xF3B6, 0xF3A7, 0xF399,\n    0xF38B, 0xF37D, 0xF370, 0xF363, 0xF358, 0xF34C, 0xF34B, 0xF35E,\n    0xF382, 0xF3C0, 0xF412, 0xF45C, 0xF486, 0xF496, 0xF4A7, 0xF4B7,\n    0xF4C7, 0xF4D7, 0xF4E6, 0xF4F5, 0xF503, 0xF511, 0xF51F, 0xF52C,\n    0xF539, 0xF545, 0xF551, 0xF55C, 0xF566, 0xF570, 0xF579, 0xF582,\n    0xF58A, 0xF591, 0xF597, 0xF59D, 0xF5A2, 0xF5A6, 0xF5A9, 0xF5AB,\n    0xF5AD, 0xF5AD, 0xE0F5, 0xE0F8, 0xE0FC, 0xE100, 0xE104, 0xE108,\n    0xE10C, 0xE110, 0xE114, 0xE117, 0xE11B, 0xE11F, 0xE123, 0xE127,\n    0xE12B, 0xE12F, 0xE133, 0xE136, 0xE13A, 0xE13E, 0xE142, 0xE146,\n    0xE14A, 0xE14E, 0xE152, 0xE155, 0xE159, 0xE15D, 0xE161, 0xE165,\n    0xE169, 0xE16D, 0xE171, 0xE174, 0xE178, 0xE17C, 0xE180, 0xE184,\n    0xE188, 0xE18C, 0xE190, 0xE193, 0xE197, 0xE19B, 0xE19F, 0xE1A3,\n    0xE1A7, 0xE1AB, 0xE1AF, 0xE1B9, 0xE1D2, 0xE204, 0xE262, 0xE2DE,\n    0xE347, 0xE36F, 0xE365, 0xE358, 0xE348, 0xE336, 0xE321, 0xE30A,\n    0xE2F1, 0xE2D6, 0xE2BA, 0xE29D, 0xE280, 0xE261, 0xE242, 0xE223,\n    0xE205, 0xE1E6, 0xE1C9, 0xE1AC, 0xE190, 0xE176, 0xE15E, 0xE147,\n    0xE133, 0xE121, 0xE112, 0xE105, 0xE0FC, 0xE0F6, 0xE0F5, 0x0353,\n    0x0354, 0x0356, 0x035A, 0x035E, 0x0363, 0x036A, 0x0371, 0x0378,\n    0x0381, 0x0389, 0x0392, 0x039B, 0x03A4, 0x03AC, 0x03B5, 0x03BD,\n    0x03C5, 0x03CC, 0x03D2, 0x03D8, 0x03DC, 0x03DF, 0x03E1, 0x03E2,\n    0x03E1, 0x03DF, 0x03DB, 0x03D5, 0x03CD, 0x03C3, 0x03B7, 0x03A8,\n    0x0397, 0x0383, 0x036D, 0x0353, 0x0318, 0x02A5, 0x0209, 0x0155,\n    0x0097, 0xFFDF, 0xFF3B, 0xFEBB, 0xFE58, 0xFE01, 0xFDB4, 0xFD72,\n    0xFD3A, 0xFD0A, 0xFCE2, 0xFCC1, 0xFCA4, 0xFC8A, 0xFC76, 0xFC68,\n    0xFC62, 0xFC67, 0xFC77, 0xFC94, 0xFCC1, 0xFCFA, 0xFD3C, 0xFD86,\n    0xFDD7, 0xFE2E, 0xFE89, 0xFEE8, 0xFF49, 0xFFAC, 0x000E, 0x0070,\n    0x00D1, 0x012F, 0x0189, 0x01DD, 0x022C, 0x0274, 0x02B4, 0x02EB,\n    0x0317, 0x0338, 0x034C, 0x0353, 0xFA88, 0xFA88, 0xFA88, 0xFA88,\n    0xFA88, 0xFA88, 0xFA88, 0xFA87, 0xFA87, 0xFA87, 0xFA86, 0xFA86,\n    0xFA86, 0xFA85, 0xFA85, 0xFA85, 0xFA84, 0xFA84, 0xFA84, 0xFA84,\n    0xFA83, 0xFA83, 0xFA83, 0xFA83, 0xFA83, 0xFA83, 0xFA83, 0xFA83,\n    0xFA84, 0xFA84, 0xFA84, 0xFA85, 0xFA85, 0xFA86, 0xFA87, 0xFA87,\n    0xFA88, 0xFA8B, 0xFA90, 0xFA97, 0xFA9E, 0xFAA6, 0xFAAC, 0xFAB1,\n    0xFAB4, 0xFAB3, 0xFAB0, 0xFAAB, 0xFAA6, 0xFAA0, 0xFA9B, 0xFA96,\n    0xFA93, 0xFA92, 0xFA91, 0xFA91, 0xFA91, 0xFA92, 0xFA92, 0xFA93,\n    0xFA93, 0xFA93, 0xFA93, 0xFA92, 0xFA92, 0xFA91, 0xFA91, 0xFA90,\n    0xFA90, 0xFA8F, 0xFA8E, 0xFA8E, 0xFA8D, 0xFA8C, 0xFA8C, 0xFA8B,\n    0xFA8B, 0xFA8A, 0xFA8A, 0xFA89, 0xFA89, 0xFA89, 0xFA89, 0xFA88,\n    0xFA88, 0xCAD8, 0xCAD8, 0xCAD8, 0xCAD8, 0xCAD8, 0xCAD8, 0xCAD8,\n    0xCAD8, 0xCAD8, 0xCAD8, 0xCAD8, 0xCAD8, 0xCAD8, 0xCAD8, 0xCAD8,\n    0xCAD8, 0xCAD8, 0xCAD8, 0xCAD8, 0xCAD8, 0xCAD8, 0xCAD8, 0xCAD8,\n    0xCAD8, 0xCAD8, 0xCAD8, 0xCAD8, 0xCAD8, 0xCAD8, 0xCAD8, 0xCAD8,\n    0xCAD8, 0xCAD8, 0xCAD8, 0xCAD8, 0xCAD8, 0xCAD8, 0xCA2F, 0xC8FB,\n    0xC750, 0xC542, 0xC2E5, 0xC04C, 0xBD8B, 0xBAB5, 0xB774, 0xB38E,\n    0xAF47, 0xAAE0, 0xA69E, 0xA2C1, 0x9F8E, 0x9D47, 0x9BC5, 0x9AB1,\n    0x9A05, 0x99BC, 0x99CF, 0x9A39, 0x9AF5, 0x9BFB, 0x9D47, 0x9ED5,\n    0xA0A0, 0xA2A2, 0xA4D2, 0xA72A, 0xA9A1, 0xAC32, 0xAED4, 0xB17F,\n    0xB42E, 0xB6D7, 0xB974, 0xBBFE, 0xBE6D, 0xC0BA, 0xC2DD, 0xC4CF,\n    0xC688, 0xC802, 0xC935, 0xCA19, 0xCAA7, 0xCAD8, 0xB4FF, 0xB49D,\n    0xB4FF, 0xB49D, 0x0000, 0x006F, 0x019E, 0x035E, 0x057F, 0x07D4,\n    0x0A2D, 0x0C5B, 0x0E30, 0x0F7D, 0x1012, 0x0FC2, 0x0E84, 0x0C89,\n    0x09F2, 0x06E1, 0x0378, 0xFFDB, 0xFC2A, 0xF887, 0xF515, 0xF1F6,\n    0xEF4C, 0xED39, 0xEBE0, 0xEB61, 0xEBD7, 0xED2B, 0xEF3B, 0xF1E4,\n    0xF504, 0xF878, 0xFC1C, 0xFFCF, 0x036D, 0x06D4, 0x09E1, 0x0C72,\n    0x0E63, 0x0F92, 0x0FDD, 0x0F20, 0x0C17, 0x061D, 0xFDF8, 0xF46F,\n    0xEA48, 0xE04D, 0xD743, 0xCFF3, 0xCB23, 0xC99B, 0xCA8E, 0xCC98,\n    0xCF98, 0xD36C, 0xD7F5, 0xDD13, 0xE2A4, 0xE888, 0xEE9F, 0xF4C8,\n    0xFAE3, 0x00CE, 0x066B, 0x0B98, 0x1035, 0x1421, 0x173C, 0x1966,\n    0x1A83, 0x1AA4, 0x19EC, 0x187D, 0x167A, 0x1405, 0x1140, 0x0E4D,\n    0x0B50, 0x086A, 0x05BE, 0x036E, 0x019D, 0x006D, 0x0000, 0x0000,\n    0xFFD3, 0xFF56, 0xFE9D, 0xFDBB, 0xFCC2, 0xFBC6, 0xFAD9, 0xFA0E,\n    0xF978, 0xF92B, 0xF937, 0xF99D, 0xFA46, 0xFB25, 0xFC31, 0xFD5D,\n    0xFE9F, 0xFFEA, 0x0133, 0x026F, 0x0394, 0x0494, 0x0565, 0x05FC,\n    0x064D, 0x0654, 0x061C, 0x05AF, 0x0516, 0x045B, 0x0387, 0x02A4,\n    0x01BB, 0x00D6, 0xFFFF, 0xFF3E, 0xFE9E, 0xFE28, 0xFDE6, 0xFDE1,\n    0xFE22, 0xFEFE, 0x009C, 0x02CC, 0x0559, 0x080E, 0x0AB7, 0x0D22,\n    0x0F19, 0x106A, 0x10DF, 0x10B1, 0x103E, 0x0F8D, 0x0EA6, 0x0D92,\n    0x0C58, 0x0B00, 0x0991, 0x0814, 0x0690, 0x050D, 0x0392, 0x0229,\n    0x00D8, 0xFFA8, 0xFE9F, 0xFDC6, 0xFD25, 0xFCBC, 0xFC84, 0xFC75,\n    0xFC8B, 0xFCBF, 0xFD0B, 0xFD69, 0xFDD3, 0xFE42, 0xFEB1, 0xFF1A,\n    0xFF76, 0xFFBF, 0xFFEF, 0x0000, 0x0A9E, 0x0A73, 0x09FE, 0x094D,\n    0x086F, 0x0774, 0x066B, 0x0562, 0x0468, 0x038E, 0x02E1, 0x0271,\n    0x0235, 0x0215, 0x020D, 0x0219, 0x0235, 0x025C, 0x028A, 0x02BB,\n    0x02EB, 0x0315, 0x0334, 0x0345, 0x0344, 0x032B, 0x030F, 0x0304,\n    0x0303, 0x0308, 0x030E, 0x0310, 0x030A, 0x02F5, 0x02CE, 0x028F,\n    0x0234, 0x01B6, 0x0112, 0x0043, 0xFF43, 0xFE0E, 0xFC34, 0xF975,\n    0xF610, 0xF244, 0xEE50, 0xEA73, 0xE6EC, 0xE3FB, 0xE1DE, 0xE0D4,\n    0xE08B, 0xE084, 0xE0B9, 0xE125, 0xE1C4, 0xE28F, 0xE381, 0xE496,\n    0xE5C9, 0xE713, 0xE870, 0xE9DA, 0xEB4D, 0xECC3, 0xEE37, 0xEFA4,\n    0xF104, 0xF253, 0xF3BD, 0xF568, 0xF748, 0xF94F, 0xFB70, 0xFD9D,\n    0xFFC8, 0x01E3, 0x03E3, 0x05B9, 0x0758, 0x08B2, 0x09BA, 0x0A62,\n    0x0A9E, 0x4134, 0x4134, 0x4134, 0x4134, 0x4134, 0x4134, 0x4134,\n    0x4134, 0x4134, 0x4134, 0x4134, 0x4134, 0x4134, 0x4134, 0x4134,\n    0x4134, 0x4134, 0x4134, 0x4134, 0x4134, 0x4134, 0x4134, 0x4134,\n    0x4134, 0x4134, 0x4134, 0x4134, 0x4134, 0x4134, 0x4134, 0x4134,\n    0x4134, 0x4134, 0x4134, 0x4134, 0x4134, 0x4134, 0x41A0, 0x429C,\n    0x4414, 0x45F6, 0x484D, 0x4B1E, 0x4E4A, 0x51B4, 0x5585, 0x59BC,\n    0x5DFD, 0x61EA, 0x65CA, 0x69B0, 0x6CED, 0x6ED1, 0x6FBE, 0x7083,\n    0x7117, 0x7173, 0x718F, 0x7161, 0x70E3, 0x700B, 0x6ED1, 0x6D43,\n    0x6B77, 0x6975, 0x6744, 0x64EC, 0x6274, 0x5FE2, 0x5D40, 0x5A94,\n    0x57E5, 0x553A, 0x529C, 0x5012, 0x4DA2, 0x4B55, 0x4931, 0x473F,\n    0x4585, 0x440B, 0x42D8, 0x41F3, 0x4165, 0x4134,\n};\n\n// 0x06014ABC\nstatic const u16 mips_seg6_animindex_06014ABC[] = {\n    0x0001, 0x0000, 0x0055, 0x0001, 0x0055, 0x0056, 0x0001, 0x0000, 0x0001, 0x00AB, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0055, 0x0801,\n    0x0055, 0x0702, 0x0055, 0x0757, 0x0055, 0x07AC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0700,\n    0x0055, 0x0101, 0x0055, 0x0156, 0x0055, 0x01AB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0055, 0x00AC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x06FE,\n    0x0055, 0x0255, 0x0055, 0x02AA, 0x0055, 0x02FF,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0055, 0x0200,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0701,\n    0x0055, 0x03FE, 0x0055, 0x0453, 0x0055, 0x04A8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0055, 0x03A9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0055, 0x0354,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x06FF,\n    0x0055, 0x05FF, 0x0055, 0x0654, 0x0055, 0x06A9,\n    0x0055, 0x0500, 0x0055, 0x0555, 0x0055, 0x05AA,\n    0x0001, 0x04FD, 0x0001, 0x04FE, 0x0001, 0x04FF,\n};\n\n// 0x06014B94\nstatic const struct Animation mips_seg6_anim_06014B94 = {\n    0,\n    0,\n    0,\n    0,\n    0x55,\n    ANIMINDEX_NUMPARTS(mips_seg6_animindex_06014ABC),\n    mips_seg6_animvalue_06013A10,\n    mips_seg6_animindex_06014ABC,\n    0,\n};\n"
  },
  {
    "path": "actors/mips/anims/anim_0601561C.inc.c",
    "content": "// 0x06014BAC\nstatic const s16 mips_seg6_animvalue_06014BAC[] = {\n    0x0000, 0x0067, 0x0004, 0x16E1, 0x16DE, 0x16D6, 0x16C8, 0x16B7,\n    0x16A2, 0x168B, 0x1672, 0x1658, 0x163E, 0x1624, 0x160C, 0x15F5,\n    0x15E2, 0x15D1, 0x15C6, 0x15BF, 0x15BE, 0x15C3, 0x15D0, 0x15E5,\n    0x1603, 0x162A, 0x165C, 0x1699, 0x16E1, 0x1742, 0x17C4, 0x1864,\n    0x191C, 0x19E9, 0x1AC7, 0x1BB1, 0x1CA5, 0x1D9C, 0x1E93, 0x1F87,\n    0x2073, 0x2152, 0x2221, 0x22DB, 0x237D, 0x2402, 0x2466, 0x24A6,\n    0x24BB, 0x24B9, 0x24B1, 0x24A5, 0x2494, 0x247E, 0x2464, 0x2445,\n    0x2423, 0x23FD, 0x23D3, 0x23A5, 0x2374, 0x2340, 0x2309, 0x22CE,\n    0x2291, 0x2252, 0x2210, 0x21CB, 0x2185, 0x213D, 0x20F2, 0x20A7,\n    0x2059, 0x200B, 0x1FBB, 0x1F6B, 0x1F19, 0x1EC7, 0x1E74, 0x1E21,\n    0x1DCE, 0x1D7B, 0x1D28, 0x1CD6, 0x1C84, 0x1C32, 0x1BE2, 0x1B92,\n    0x1B43, 0x1AF6, 0x1AAA, 0x1A60, 0x1A18, 0x19D1, 0x198D, 0x194B,\n    0x190B, 0x18CE, 0x1894, 0x185D, 0x1829, 0x17F8, 0x17CA, 0x17A0,\n    0x177A, 0x1757, 0x1739, 0x171F, 0x1709, 0x16F8, 0x16EB, 0x16E4,\n    0x16E1, 0xF630, 0xF630, 0xF62F, 0xF62D, 0xF62B, 0xF629, 0xF626,\n    0xF624, 0xF621, 0xF61E, 0xF61B, 0xF618, 0xF616, 0xF614, 0xF612,\n    0xF611, 0xF610, 0xF610, 0xF610, 0xF612, 0xF614, 0xF617, 0xF61C,\n    0xF621, 0xF628, 0xF630, 0xF63B, 0xF649, 0xF65B, 0xF66F, 0xF686,\n    0xF69E, 0xF6B8, 0xF6D3, 0xF6EE, 0xF70A, 0xF725, 0xF73F, 0xF757,\n    0xF76E, 0xF783, 0xF795, 0xF7A3, 0xF7AE, 0xF7B5, 0xF7B8, 0xF7B8,\n    0xF7B7, 0xF7B5, 0xF7B4, 0xF7B1, 0xF7AE, 0xF7AB, 0xF7A7, 0xF7A3,\n    0xF79E, 0xF799, 0xF794, 0xF78E, 0xF788, 0xF781, 0xF77B, 0xF774,\n    0xF76C, 0xF765, 0xF75D, 0xF755, 0xF74D, 0xF744, 0xF73C, 0xF733,\n    0xF72A, 0xF721, 0xF718, 0xF70F, 0xF706, 0xF6FD, 0xF6F4, 0xF6EB,\n    0xF6E2, 0xF6D8, 0xF6CF, 0xF6C6, 0xF6BD, 0xF6B5, 0xF6AC, 0xF6A3,\n    0xF69B, 0xF693, 0xF68B, 0xF683, 0xF67B, 0xF674, 0xF66D, 0xF666,\n    0xF660, 0xF65A, 0xF654, 0xF64F, 0xF64A, 0xF645, 0xF641, 0xF63D,\n    0xF63A, 0xF637, 0xF634, 0xF632, 0xF631, 0xF630, 0xF630, 0xF7B5,\n    0xF7B6, 0xF7B7, 0xF7B8, 0xF7BA, 0xF7BC, 0xF7BF, 0xF7C2, 0xF7C4,\n    0xF7C7, 0xF7CA, 0xF7CD, 0xF7CF, 0xF7D2, 0xF7D3, 0xF7D5, 0xF7D5,\n    0xF7D5, 0xF7D5, 0xF7D3, 0xF7D1, 0xF7CE, 0xF7C9, 0xF7C4, 0xF7BD,\n    0xF7B5, 0xF7AB, 0xF79C, 0xF78B, 0xF776, 0xF760, 0xF747, 0xF72D,\n    0xF712, 0xF6F7, 0xF6DC, 0xF6C1, 0xF6A7, 0xF68E, 0xF677, 0xF663,\n    0xF651, 0xF642, 0xF637, 0xF630, 0xF62E, 0xF62E, 0xF62F, 0xF630,\n    0xF632, 0xF634, 0xF637, 0xF63B, 0xF63F, 0xF643, 0xF647, 0xF64C,\n    0xF652, 0xF658, 0xF65E, 0xF664, 0xF66B, 0xF672, 0xF679, 0xF681,\n    0xF689, 0xF691, 0xF699, 0xF6A1, 0xF6AA, 0xF6B2, 0xF6BB, 0xF6C4,\n    0xF6CD, 0xF6D6, 0xF6DF, 0xF6E8, 0xF6F1, 0xF6FB, 0xF704, 0xF70D,\n    0xF716, 0xF71F, 0xF728, 0xF731, 0xF739, 0xF742, 0xF74A, 0xF752,\n    0xF75A, 0xF762, 0xF76A, 0xF771, 0xF778, 0xF77F, 0xF785, 0xF78B,\n    0xF791, 0xF797, 0xF79C, 0xF7A0, 0xF7A4, 0xF7A8, 0xF7AC, 0xF7AE,\n    0xF7B1, 0xF7B3, 0xF7B4, 0xF7B5, 0xF7B5, 0xE82E, 0xE82F, 0xE833,\n    0xE83A, 0xE843, 0xE84D, 0xE859, 0xE865, 0xE872, 0xE87F, 0xE88C,\n    0xE898, 0xE8A4, 0xE8AD, 0xE8B5, 0xE8BB, 0xE8BF, 0xE8BF, 0xE8BD,\n    0xE8B6, 0xE8AC, 0xE89D, 0xE889, 0xE870, 0xE852, 0xE82E, 0xE7FD,\n    0xE7BC, 0xE76C, 0xE710, 0xE6AA, 0xE63B, 0xE5C5, 0xE54C, 0xE4D0,\n    0xE454, 0xE3DB, 0xE365, 0xE2F5, 0xE28E, 0xE230, 0xE1E0, 0xE19D,\n    0xE16B, 0xE14B, 0xE140, 0xE142, 0xE145, 0xE14C, 0xE154, 0xE15F,\n    0xE16C, 0xE17B, 0xE18D, 0xE1A0, 0xE1B5, 0xE1CB, 0xE1E4, 0xE1FE,\n    0xE21A, 0xE237, 0xE255, 0xE275, 0xE296, 0xE2B8, 0xE2DC, 0xE300,\n    0xE325, 0xE34B, 0xE371, 0xE399, 0xE3C0, 0xE3E9, 0xE412, 0xE43B,\n    0xE464, 0xE48D, 0xE4B7, 0xE4E0, 0xE50A, 0xE533, 0xE55C, 0xE585,\n    0xE5AD, 0xE5D5, 0xE5FC, 0xE623, 0xE649, 0xE66E, 0xE692, 0xE6B5,\n    0xE6D8, 0xE6F9, 0xE718, 0xE737, 0xE754, 0xE770, 0xE78A, 0xE7A2,\n    0xE7B9, 0xE7CE, 0xE7E1, 0xE7F3, 0xE802, 0xE80F, 0xE81A, 0xE822,\n    0xE828, 0xE82C, 0xE82E, 0x2051, 0x204A, 0x2036, 0x2018, 0x1FF1,\n    0x1FC4, 0x1F92, 0x1F5D, 0x1F28, 0x1EF4, 0x1EC3, 0x1E97, 0x1E73,\n    0x1E58, 0x1E49, 0x1E46, 0x1E53, 0x1E72, 0x1EA3, 0x1EEA, 0x1F47,\n    0x1FBE, 0x2051, 0x211D, 0x223A, 0x239B, 0x2534, 0x26FA, 0x28E0,\n    0x2ADB, 0x2CDE, 0x2EDD, 0x30CD, 0x32A2, 0x3450, 0x35CA, 0x3705,\n    0x37F5, 0x388D, 0x38C3, 0x38BF, 0x38B4, 0x38A1, 0x3888, 0x3867,\n    0x3841, 0x3813, 0x37E0, 0x37A7, 0x3768, 0x3724, 0x36DA, 0x368B,\n    0x3638, 0x35E0, 0x3583, 0x3523, 0x34BE, 0x3456, 0x33EA, 0x337B,\n    0x3309, 0x3294, 0x321C, 0x31A2, 0x3126, 0x30A8, 0x3028, 0x2FA6,\n    0x2F24, 0x2EA0, 0x2E1B, 0x2D96, 0x2D10, 0x2C8A, 0x2C04, 0x2B7E,\n    0x2AF8, 0x2A74, 0x29F0, 0x296D, 0x28EB, 0x286C, 0x27ED, 0x2771,\n    0x26F7, 0x2680, 0x260B, 0x2598, 0x2529, 0x24BE, 0x2455, 0x23F1,\n    0x2390, 0x2334, 0x22DC, 0x2288, 0x2239, 0x21F0, 0x21AB, 0x216C,\n    0x2133, 0x2100, 0x20D3, 0x20AC, 0x208C, 0x2072, 0x2060, 0x2054,\n    0x2051, 0xF5BA, 0xF5B7, 0xF5B0, 0xF5A5, 0xF596, 0xF585, 0xF572,\n    0xF55E, 0xF54A, 0xF537, 0xF524, 0xF514, 0xF506, 0xF4FC, 0xF4F6,\n    0xF4F6, 0xF4FA, 0xF506, 0xF518, 0xF533, 0xF556, 0xF583, 0xF5BA,\n    0xF607, 0xF672, 0xF6F7, 0xF791, 0xF83C, 0xF8F3, 0xF9B1, 0xFA73,\n    0xFB34, 0xFBEE, 0xFC9F, 0xFD40, 0xFDCF, 0xFE45, 0xFE9F, 0xFED9,\n    0xFEED, 0xFEEC, 0xFEE7, 0xFEE0, 0xFED7, 0xFECB, 0xFEBC, 0xFEAB,\n    0xFE98, 0xFE82, 0xFE6B, 0xFE51, 0xFE35, 0xFE18, 0xFDF8, 0xFDD7,\n    0xFDB4, 0xFD90, 0xFD6A, 0xFD43, 0xFD1A, 0xFCF0, 0xFCC5, 0xFC99,\n    0xFC6C, 0xFC3E, 0xFC10, 0xFBE0, 0xFBB0, 0xFB7F, 0xFB4E, 0xFB1D,\n    0xFAEB, 0xFAB8, 0xFA86, 0xFA54, 0xFA21, 0xF9EF, 0xF9BD, 0xF98B,\n    0xF959, 0xF928, 0xF8F7, 0xF8C7, 0xF897, 0xF869, 0xF83B, 0xF80E,\n    0xF7E2, 0xF7B7, 0xF78D, 0xF764, 0xF73D, 0xF717, 0xF6F3, 0xF6D0,\n    0xF6AF, 0xF690, 0xF672, 0xF656, 0xF63C, 0xF625, 0xF60F, 0xF5FC,\n    0xF5EB, 0xF5DC, 0xF5D0, 0xF5C7, 0xF5C0, 0xF5BB, 0xF5BA, 0x117D,\n    0x117C, 0x117A, 0x1177, 0x1173, 0x116E, 0x1169, 0x1163, 0x115D,\n    0x1158, 0x1153, 0x114E, 0x114A, 0x1147, 0x1146, 0x1145, 0x1147,\n    0x114A, 0x114F, 0x1157, 0x1161, 0x116D, 0x117D, 0x1193, 0x11B1,\n    0x11D7, 0x1202, 0x1233, 0x1267, 0x129D, 0x12D4, 0x130A, 0x133F,\n    0x1371, 0x139F, 0x13C7, 0x13E8, 0x1402, 0x1412, 0x1418, 0x1418,\n    0x1416, 0x1414, 0x1412, 0x140E, 0x140A, 0x1405, 0x1400, 0x13FA,\n    0x13F3, 0x13EC, 0x13E4, 0x13DC, 0x13D3, 0x13C9, 0x13BF, 0x13B5,\n    0x13AA, 0x139F, 0x1394, 0x1388, 0x137C, 0x136F, 0x1363, 0x1356,\n    0x1348, 0x133B, 0x132D, 0x131F, 0x1312, 0x1303, 0x12F5, 0x12E7,\n    0x12D9, 0x12CB, 0x12BC, 0x12AE, 0x12A0, 0x1292, 0x1284, 0x1276,\n    0x1268, 0x125A, 0x124D, 0x1240, 0x1233, 0x1226, 0x1219, 0x120D,\n    0x1201, 0x11F6, 0x11EB, 0x11E0, 0x11D6, 0x11CC, 0x11C2, 0x11BA,\n    0x11B1, 0x11A9, 0x11A2, 0x119B, 0x1195, 0x1190, 0x118B, 0x1187,\n    0x1183, 0x1181, 0x117F, 0x117D, 0x117D, 0xF77C, 0xF776, 0xF766,\n    0xF74D, 0xF72D, 0xF707, 0xF6DD, 0xF6B2, 0xF685, 0xF65A, 0xF631,\n    0xF60D, 0xF5EF, 0xF5D9, 0xF5CC, 0xF5CA, 0xF5D5, 0xF5EE, 0xF617,\n    0xF652, 0xF6A0, 0xF703, 0xF77C, 0xF826, 0xF913, 0xFA38, 0xFB8C,\n    0xFD05, 0xFE99, 0x003D, 0x01E9, 0x0392, 0x052F, 0x06B4, 0x0819,\n    0x0953, 0x0A59, 0x0B20, 0x0B9F, 0x0BCC, 0x0BC8, 0x0BBF, 0x0BB0,\n    0x0B9B, 0x0B80, 0x0B60, 0x0B3A, 0x0B0F, 0x0AE0, 0x0AAC, 0x0A73,\n    0x0A36, 0x09F4, 0x09AF, 0x0966, 0x0919, 0x08C8, 0x0875, 0x081E,\n    0x07C5, 0x0768, 0x0709, 0x06A8, 0x0645, 0x05DF, 0x0578, 0x050F,\n    0x04A5, 0x0439, 0x03CD, 0x035F, 0x02F1, 0x0282, 0x0213, 0x01A3,\n    0x0134, 0x00C5, 0x0056, 0xFFE9, 0xFF7B, 0xFF0E, 0xFEA3, 0xFE38,\n    0xFDCF, 0xFD68, 0xFD03, 0xFC9F, 0xFC3E, 0xFBDF, 0xFB83, 0xFB2A,\n    0xFAD3, 0xFA7F, 0xFA2F, 0xF9E2, 0xF999, 0xF954, 0xF912, 0xF8D5,\n    0xF89C, 0xF868, 0xF838, 0xF80E, 0xF7E8, 0xF7C8, 0xF7AD, 0xF798,\n    0xF789, 0xF77F, 0xF77C, 0xE2A4, 0xDDEC, 0xF190, 0xFF7D, 0x788D,\n    0xE1A9, 0xFE0E, 0xFC4C, 0xE0B0, 0x1C00, 0x02FD, 0x774F, 0x0000,\n    0x0088, 0x0211, 0x0483, 0x07C6, 0x0BC3, 0x1062, 0x158A, 0x1B24,\n    0x2118, 0x274F, 0x2DB0, 0x3424, 0x3A94, 0x40E6, 0x4704, 0x4CD5,\n    0x5242, 0x5733, 0x5B90, 0x5F42, 0x6230, 0x6470, 0x662E, 0x6776,\n    0x6854, 0x68D2, 0x68FE, 0x68E2, 0x688A, 0x6801, 0x6754, 0x668E,\n    0x65BA, 0x64E4, 0x6418, 0x6361, 0x62CB, 0x6261, 0x6230, 0x6218,\n    0x61F5, 0x61C9, 0x6197, 0x6160, 0x6127, 0x60EE, 0x60B8, 0x6086,\n    0x605C, 0x603C, 0x6027, 0x602A, 0x604E, 0x608D, 0x60E3, 0x614E,\n    0x61C7, 0x624B, 0x62D6, 0x6363, 0x63EF, 0x6475, 0x64F1, 0x655E,\n    0x65B9, 0x65FD, 0x6626, 0x6631, 0x6617, 0x65D6, 0x656A, 0x64CD,\n    0x63FD, 0x62F3, 0x61AE, 0x6027, 0x5E56, 0x5C36, 0x59CD, 0x5723,\n    0x543B, 0x511D, 0x4DCE, 0x4A54, 0x46B5, 0x42F6, 0x3F1E, 0x3B33,\n    0x373A, 0x3339, 0x2F37, 0x2B38, 0x2744, 0x235F, 0x1F90, 0x1BDD,\n    0x184B, 0x14E0, 0x11A2, 0x0E98, 0x0BC6, 0x0934, 0x06E6, 0x04E3,\n    0x0330, 0x01D4, 0x00D3, 0x0035, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xFFFB, 0xFFEA, 0xFFD2, 0xFFB3, 0xFF90,\n    0xFF6B, 0xFF46, 0xFF23, 0xFF04, 0xFEEC, 0xFEDB, 0xFED6, 0xFEDC,\n    0xFEF1, 0xFF17, 0xFF4F, 0xFF9C, 0x0000, 0x0099, 0x017B, 0x0297,\n    0x03DE, 0x0541, 0x06B1, 0x0820, 0x097D, 0x0ABB, 0x0BCB, 0x0C9D,\n    0x0D23, 0x0D79, 0x0DC6, 0x0E09, 0x0E43, 0x0E75, 0x0E9E, 0x0EBF,\n    0x0ED9, 0x0EEB, 0x0EF6, 0x0EFA, 0x0EF8, 0x0EF0, 0x0EE2, 0x0ECE,\n    0x0EB6, 0x0E98, 0x0E76, 0x0E50, 0x0E26, 0x0DF8, 0x0DC7, 0x0D93,\n    0x0D5C, 0x0D23, 0x0CE4, 0x0C99, 0x0C45, 0x0BE8, 0x0B82, 0x0B15,\n    0x0AA1, 0x0A28, 0x09A9, 0x0926, 0x08A0, 0x0817, 0x078C, 0x0700,\n    0x0673, 0x05E8, 0x055D, 0x04D5, 0x0450, 0x03CE, 0x0351, 0x02DA,\n    0x0268, 0x01FE, 0x019C, 0x0142, 0x00F1, 0x00AA, 0x006F, 0x003F,\n    0x001C, 0x0007, 0x0000, 0xF945, 0xF945, 0xF945, 0xF945, 0xF945,\n    0xF945, 0xF945, 0xF945, 0xF945, 0xF945, 0xF945, 0xF945, 0xF945,\n    0xF945, 0xF945, 0xF945, 0xF945, 0xF945, 0xF945, 0xF945, 0xF945,\n    0xF945, 0xF94A, 0xF95A, 0xF971, 0xF98E, 0xF9AF, 0xF9D2, 0xF9F5,\n    0xFA16, 0xFA33, 0xFA4A, 0xFA5A, 0xFA5F, 0xFA59, 0xFA45, 0xFA21,\n    0xF9EC, 0xF9A3, 0xF945, 0xF8B4, 0xF7DE, 0xF6D2, 0xF59D, 0xF44E,\n    0xF2F2, 0xF198, 0xF04D, 0xEF21, 0xEE20, 0xED5A, 0xECDB, 0xEC8A,\n    0xEC42, 0xEC02, 0xEBCB, 0xEB9C, 0xEB75, 0xEB56, 0xEB3E, 0xEB2D,\n    0xEB22, 0xEB1E, 0xEB20, 0xEB28, 0xEB35, 0xEB48, 0xEB5F, 0xEB7B,\n    0xEB9B, 0xEBBF, 0xEBE7, 0xEC12, 0xEC40, 0xEC72, 0xECA5, 0xECDB,\n    0xED17, 0xED5D, 0xEDAD, 0xEE05, 0xEE65, 0xEECC, 0xEF39, 0xEFAC,\n    0xF024, 0xF0A0, 0xF11F, 0xF1A0, 0xF224, 0xF2A8, 0xF32C, 0xF3B0,\n    0xF433, 0xF4B4, 0xF532, 0xF5AC, 0xF622, 0xF693, 0xF6FE, 0xF762,\n    0xF7C0, 0xF815, 0xF861, 0xF8A3, 0xF8DB, 0xF908, 0xF929, 0xF93E,\n    0xF945, 0x3FFF, 0xF913, 0x3FFF,\n};\n\n// 0x06015544\nstatic const u16 mips_seg6_animindex_06015544[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x04C9, 0x0001, 0x04CA, 0x0001, 0x04CB,\n    0x006E, 0x037F, 0x006E, 0x03ED, 0x006E, 0x045B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x006E, 0x0071, 0x006E, 0x00DF, 0x006E, 0x014D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x006E, 0x0003,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x006E, 0x0229, 0x006E, 0x0297, 0x006E, 0x0305,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x006E, 0x01BB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0375, 0x0001, 0x0376, 0x0001, 0x0377,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0374,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0373,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x037C, 0x0001, 0x037D, 0x0001, 0x037E,\n    0x0001, 0x0379, 0x0001, 0x037A, 0x0001, 0x037B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0378,\n};\n\n// 0x0601561C\nstatic const struct Animation mips_seg6_anim_0601561C = {\n    0,\n    0,\n    0,\n    0,\n    0x6E,\n    ANIMINDEX_NUMPARTS(mips_seg6_animindex_06015544),\n    mips_seg6_animvalue_06014BAC,\n    mips_seg6_animindex_06015544,\n    0,\n};\n"
  },
  {
    "path": "actors/mips/anims/data.inc.c",
    "content": "#include \"anim_06013248.inc.c\"\n#include \"anim_0601369C.inc.c\"\n#include \"anim_060139F8.inc.c\"\n#include \"anim_06014B94.inc.c\"\n#include \"anim_0601561C.inc.c\"\n"
  },
  {
    "path": "actors/mips/anims/table.inc.c",
    "content": "// 0x06015634\nconst struct Animation *const mips_seg6_anims_06015634[] = {\n    &mips_seg6_anim_06014B94,\n    &mips_seg6_anim_060139F8,\n    &mips_seg6_anim_06013248,\n    &mips_seg6_anim_0601561C,\n    &mips_seg6_anim_0601369C,\n    NULL,\n    NULL,\n};\n"
  },
  {
    "path": "actors/mips/geo.inc.c",
    "content": "// 0x0D000448\nconst GeoLayout mips_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 100),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mips_seg6_dl_06010C40),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 64, 0, 0, mips_seg6_dl_060107B8),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 52, -24, -32, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mips_seg6_dl_06011DB0),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 79, 0, 0, mips_seg6_dl_06011BB0),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 52, -24, 32, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mips_seg6_dl_060110B0),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 79, 0, 0, mips_seg6_dl_06010E60),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -31, 4, -39, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mips_seg6_dl_06011FC0),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 45, 0, 0, mips_seg6_dl_06011990),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 52, 0, 0, mips_seg6_dl_06011780),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -31, 4, 40, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, mips_seg6_dl_06011ED8),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 45, 0, 0, mips_seg6_dl_06011520),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 52, 0, 0, mips_seg6_dl_06011310),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(), //! more close than open nodes\n    GEO_END(),\n};\n\nUNUSED static const u64 mips_unused_1 = 0;\n"
  },
  {
    "path": "actors/mips/model.inc.c",
    "content": "// Mips\n\n// 0x0600FB80\nALIGNED8 static const Texture mips_seg6_texture_0600FB80[] = {\n#include \"actors/mips/mips_eyes.rgba16.inc.c\"\n};\n\n// 0x06010380\nstatic const Lights1 mips_seg6_lights_06010380 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x06010398\nstatic const Lights1 mips_seg6_lights_06010398 = gdSPDefLights1(\n    0x0f, 0x0d, 0x04,\n    0x27, 0x21, 0x0b, 0x28, 0x28, 0x28\n);\n\n// 0x060103B0\nstatic const Vtx mips_seg6_vertex_060103B0[] = {\n    {{{    60,     25,    -62}, 0, {  -146,  -1034}, {0x1d, 0x21, 0x8a, 0xff}}},\n    {{{   102,     15,    -32}, 0, {   144,  -1598}, {0x65, 0x0d, 0xb5, 0xff}}},\n    {{{    46,    -61,    -46}, 0, {     8,   -848}, {0x23, 0x9a, 0xbf, 0xff}}},\n    {{{     4,    -54,    -41}, 0, {    56,   -296}, {0xb2, 0xbf, 0xb5, 0xff}}},\n    {{{   100,    -30,      0}, 0, {   458,  -1572}, {0x6b, 0xbd, 0x00, 0xff}}},\n    {{{     4,    -54,     42}, 0, {   858,   -296}, {0xb9, 0xac, 0x3e, 0xff}}},\n    {{{    46,    -61,     48}, 0, {   906,   -848}, {0x2f, 0xa8, 0x4d, 0xff}}},\n    {{{    60,     25,     64}, 0, {  1062,  -1034}, {0x1c, 0x21, 0x77, 0xff}}},\n    {{{    -7,     16,      0}, 0, {   458,   -128}, {0x84, 0x17, 0x00, 0xff}}},\n    {{{     2,      8,     67}, 0, {  1094,   -262}, {0xae, 0x16, 0x5d, 0xff}}},\n    {{{     2,      8,    -66}, 0, {  -178,   -262}, {0xaf, 0x18, 0xa3, 0xff}}},\n    {{{   102,     15,     33}, 0, {   770,  -1598}, {0x66, 0x0d, 0x4a, 0xff}}},\n    {{{   115,     13,      0}, 0, {   458,  -1770}, {0x74, 0x31, 0x00, 0xff}}},\n    {{{    16,     44,     47}, 0, {   902,   -454}, {0xd0, 0x5d, 0x47, 0xff}}},\n    {{{    16,     44,    -45}, 0, {    14,   -454}, {0xd1, 0x5c, 0xb8, 0xff}}},\n    {{{     9,     60,      0}, 0, {   458,   -352}, {0xa2, 0x54, 0x00, 0xff}}},\n};\n\n// 0x060104B0\nstatic const Vtx mips_seg6_vertex_060104B0[] = {\n    {{{   115,     13,      0}, 0, {   468,      0}, {0x74, 0x31, 0x00, 0xff}}},\n    {{{    64,     56,    -13}, 0, {   308,    632}, {0x45, 0x59, 0xc6, 0xff}}},\n    {{{    64,     56,     15}, 0, {   632,    632}, {0x44, 0x5a, 0x38, 0xff}}},\n    {{{   102,     15,    -32}, 0, {   104,     80}, {0x65, 0x0d, 0xb5, 0xff}}},\n    {{{   102,     15,     33}, 0, {   834,     80}, {0x66, 0x0d, 0x4a, 0xff}}},\n    {{{    16,     44,    -45}, 0, {   -46,    922}, {0xd1, 0x5c, 0xb8, 0xff}}},\n    {{{    45,     77,      0}, 0, {   468,    910}, {0xfb, 0x7e, 0xfe, 0xff}}},\n    {{{    60,     25,    -62}, 0, {  -236,    468}, {0x1d, 0x21, 0x8a, 0xff}}},\n    {{{     9,     60,      0}, 0, {   468,   1082}, {0xa2, 0x54, 0x00, 0xff}}},\n    {{{    16,     44,     47}, 0, {   988,    922}, {0xd0, 0x5d, 0x47, 0xff}}},\n    {{{    60,     25,     64}, 0, {  1176,    468}, {0x1c, 0x21, 0x77, 0xff}}},\n    {{{     2,      8,    -66}, 0, {  -272,    800}, {0xaf, 0x18, 0xa3, 0xff}}},\n    {{{     2,      8,     67}, 0, {  1212,    800}, {0xae, 0x16, 0x5d, 0xff}}},\n};\n\n// 0x06010580\nstatic const Vtx mips_seg6_vertex_06010580[] = {\n    {{{    45,     77,      0}, 0, {     0,      0}, {0xfb, 0x7e, 0xfe, 0xff}}},\n    {{{    64,     56,     15}, 0, {     0,      0}, {0x44, 0x5a, 0x38, 0xff}}},\n    {{{    64,     76,      0}, 0, {     0,      0}, {0x56, 0x5d, 0xfd, 0xff}}},\n    {{{    64,     56,    -13}, 0, {     0,      0}, {0x45, 0x59, 0xc6, 0xff}}},\n};\n\n// 0x060105C0\nstatic const Vtx mips_seg6_vertex_060105C0[] = {\n    {{{    -9,     52,     -5}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    11,     50,    -12}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    11,     50,     13}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    -9,     52,      6}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x06010600 - 0x06010748\nconst Gfx mips_seg6_dl_06010600[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mips_seg6_texture_0600FB80),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mips_seg6_lights_06010380.l, 1),\n    gsSPLight(&mips_seg6_lights_06010380.a, 2),\n    gsSPVertex(mips_seg6_vertex_060103B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  2,  5,  3, 0x0),\n    gsSP2Triangles( 2,  6,  5, 0x0,  2,  4,  6, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  3,  5, 0x0),\n    gsSP2Triangles( 5,  9,  8, 0x0,  9,  5,  7, 0x0),\n    gsSP2Triangles( 3, 10,  0, 0x0,  8, 10,  3, 0x0),\n    gsSP2Triangles( 6, 11,  7, 0x0,  4, 11,  6, 0x0),\n    gsSP2Triangles(12, 11,  4, 0x0,  4,  1, 12, 0x0),\n    gsSP2Triangles( 8,  9, 13, 0x0, 14, 10,  8, 0x0),\n    gsSP2Triangles( 8, 15, 14, 0x0, 13, 15,  8, 0x0),\n    gsSPVertex(mips_seg6_vertex_060104B0, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 2,  4,  0, 0x0,  5,  6,  1, 0x0),\n    gsSP2Triangles( 5,  1,  7, 0x0,  7,  1,  3, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  6,  9,  2, 0x0),\n    gsSP2Triangles( 2,  9, 10, 0x0,  2, 10,  4, 0x0),\n    gsSP2Triangles(11,  5,  7, 0x0,  9, 12, 10, 0x0),\n    gsSP1Triangle( 6,  8,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06010748 - 0x060107B8\nconst Gfx mips_seg6_dl_06010748[] = {\n    gsSPLight(&mips_seg6_lights_06010398.l, 1),\n    gsSPLight(&mips_seg6_lights_06010398.a, 2),\n    gsSPVertex(mips_seg6_vertex_06010580, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP1Triangle( 3,  2,  1, 0x0),\n    gsSPLight(&mips_seg6_lights_06010380.l, 1),\n    gsSPLight(&mips_seg6_lights_06010380.a, 2),\n    gsSPVertex(mips_seg6_vertex_060105C0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  2,  0, 0x0,  2,  1,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x060107B8 - 0x06010820\nconst Gfx mips_seg6_dl_060107B8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(mips_seg6_dl_06010600),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(mips_seg6_dl_06010748),\n    gsSPEndDisplayList(),\n};\n\n// 0x06010820\nstatic const Lights1 mips_seg6_lights_06010820 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x06010838\nstatic const Vtx mips_seg6_vertex_06010838[] = {\n    {{{   -23,    -21,    -59}, 0, { -1764,    666}, {0xde, 0xd3, 0x8f, 0xff}}},\n    {{{   -48,    -27,    -16}, 0, { -2202,    640}, {0x94, 0x0a, 0xbf, 0xff}}},\n    {{{   -16,     41,    -55}, 0, { -1306,   -124}, {0xe5, 0x4b, 0x9e, 0xff}}},\n    {{{   -47,     37,     22}, 0, { -1840,   -188}, {0x90, 0x32, 0x1c, 0xff}}},\n    {{{   -47,     37,    -21}, 0, { -1840,   -188}, {0x98, 0x3e, 0xdc, 0xff}}},\n    {{{   -34,    -55,      0}, 0, { -2112,   1046}, {0x22, 0x86, 0x00, 0xff}}},\n    {{{   -48,    -27,     18}, 0, { -2202,    640}, {0x9f, 0x26, 0x47, 0xff}}},\n    {{{   -75,    -36,    -40}, 0, { -2688,    648}, {0xde, 0x30, 0x90, 0xff}}},\n    {{{   -16,     41,     56}, 0, { -1306,   -124}, {0xe4, 0x4a, 0x62, 0xff}}},\n    {{{   -23,    -21,     60}, 0, { -1764,    666}, {0xde, 0xd2, 0x70, 0xff}}},\n    {{{   -75,    -36,     42}, 0, { -2688,    648}, {0xed, 0xfb, 0x7d, 0xff}}},\n    {{{   -15,     60,      0}, 0, { -1198,   -360}, {0xfb, 0x7e, 0x00, 0xff}}},\n    {{{    12,    -27,     49}, 0, { -1206,    880}, {0x38, 0xb6, 0x55, 0xff}}},\n    {{{    17,     16,     52}, 0, {  -886,    330}, {0x39, 0x1e, 0x6c, 0xff}}},\n    {{{    65,     12,     15}, 0, {  -142,    578}, {0x6a, 0x1c, 0x3f, 0xff}}},\n};\n\n// 0x06010928\nstatic const Vtx mips_seg6_vertex_06010928[] = {\n    {{{    12,    -27,     49}, 0, { -1206,    880}, {0x38, 0xb6, 0x55, 0xff}}},\n    {{{    33,    -39,      0}, 0, {  -928,   1112}, {0x38, 0x8f, 0x00, 0xff}}},\n    {{{    64,    -13,      0}, 0, {  -292,    902}, {0x6b, 0xbd, 0x00, 0xff}}},\n    {{{   -34,    -55,      0}, 0, { -2112,   1046}, {0x22, 0x86, 0x00, 0xff}}},\n    {{{    65,     12,     15}, 0, {  -142,    578}, {0x6a, 0x1c, 0x3f, 0xff}}},\n    {{{    31,     35,     19}, 0, {  -564,    142}, {0x42, 0x67, 0x1f, 0xff}}},\n    {{{    17,     16,     52}, 0, {  -886,    330}, {0x39, 0x1e, 0x6c, 0xff}}},\n    {{{   -16,     41,     56}, 0, { -1306,   -124}, {0xe4, 0x4a, 0x62, 0xff}}},\n    {{{    18,     18,    -49}, 0, {  -870,    316}, {0x3a, 0x21, 0x95, 0xff}}},\n    {{{    31,     34,    -18}, 0, {  -570,    156}, {0x40, 0x66, 0xda, 0xff}}},\n    {{{    65,     12,    -14}, 0, {  -142,    578}, {0x68, 0x30, 0xcb, 0xff}}},\n    {{{   -23,    -21,    -59}, 0, { -1764,    666}, {0xde, 0xd3, 0x8f, 0xff}}},\n    {{{   -16,     41,    -55}, 0, { -1306,   -124}, {0xe5, 0x4b, 0x9e, 0xff}}},\n    {{{    12,    -27,    -48}, 0, { -1206,    882}, {0x38, 0xb8, 0xa9, 0xff}}},\n    {{{   -15,     60,      0}, 0, { -1198,   -360}, {0xfb, 0x7e, 0x00, 0xff}}},\n};\n\n// 0x06010A18\nstatic const Vtx mips_seg6_vertex_06010A18[] = {\n    {{{   -34,    -55,      0}, 0, { -2112,   1046}, {0x22, 0x86, 0x00, 0xff}}},\n    {{{   -53,    -82,      0}, 0, { -2566,   1322}, {0x1f, 0x86, 0xff, 0xff}}},\n    {{{   -75,    -36,    -40}, 0, { -2688,    648}, {0xde, 0x30, 0x90, 0xff}}},\n    {{{   -75,    -36,     42}, 0, { -2688,    648}, {0xed, 0xfb, 0x7d, 0xff}}},\n    {{{   -15,     60,      0}, 0, { -1198,   -360}, {0xfb, 0x7e, 0x00, 0xff}}},\n    {{{    31,     35,     19}, 0, {  -564,    142}, {0x42, 0x67, 0x1f, 0xff}}},\n    {{{    31,     34,    -18}, 0, {  -570,    156}, {0x40, 0x66, 0xda, 0xff}}},\n    {{{   -82,    -71,      0}, 0, { -2974,   1062}, {0x9e, 0xb1, 0xff, 0xff}}},\n};\n\n// 0x06010A98 - 0x06010C40\nconst Gfx mips_seg6_dl_06010A98[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mips_seg6_texture_0600FB80),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mips_seg6_lights_06010820.l, 1),\n    gsSPLight(&mips_seg6_lights_06010820.a, 2),\n    gsSPVertex(mips_seg6_vertex_06010838, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 0,  5,  1, 0x0,  1,  6,  3, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  7,  1,  5, 0x0),\n    gsSP2Triangles( 6,  1,  7, 0x0,  8,  6,  9, 0x0),\n    gsSP2Triangles( 5,  9,  6, 0x0,  8,  3,  6, 0x0),\n    gsSP2Triangles( 7, 10,  6, 0x0,  5,  6, 10, 0x0),\n    gsSP2Triangles( 8, 11,  3, 0x0, 11,  4,  3, 0x0),\n    gsSP2Triangles( 9,  5, 12, 0x0,  8,  9, 13, 0x0),\n    gsSP2Triangles( 9, 12, 13, 0x0, 11,  2,  4, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(mips_seg6_vertex_06010928, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  4,  5,  6, 0x0),\n    gsSP2Triangles( 7,  6,  5, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(11, 12,  8, 0x0,  9,  8, 12, 0x0),\n    gsSP2Triangles( 8, 13, 11, 0x0, 13,  8, 10, 0x0),\n    gsSP2Triangles(13,  1,  3, 0x0, 10,  2, 13, 0x0),\n    gsSP2Triangles( 3, 11, 13, 0x0,  2,  1, 13, 0x0),\n    gsSP2Triangles(10,  9,  5, 0x0,  5,  4, 10, 0x0),\n    gsSP2Triangles(10,  4,  2, 0x0,  5, 14,  7, 0x0),\n    gsSP1Triangle(12, 14,  9, 0x0),\n    gsSPVertex(mips_seg6_vertex_06010A18, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  2,  7,  3, 0x0),\n    gsSP2Triangles( 1,  7,  2, 0x0,  3,  7,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06010C40 - 0x06010CA0\nconst Gfx mips_seg6_dl_06010C40[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(mips_seg6_dl_06010A98),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x06010CA0\nstatic const Lights1 mips_seg6_lights_06010CA0 = gdSPDefLights1(\n    0x3c, 0x3c, 0x00,\n    0x96, 0x96, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x06010CB8\nstatic const Lights1 mips_seg6_lights_06010CB8 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x06010CD0\nstatic const Vtx mips_seg6_vertex_06010CD0[] = {\n    {{{     0,      0,    -26}, 0, { -1052,    990}, {0xc7, 0x5d, 0xc1, 0xff}}},\n    {{{    76,      0,     41}, 0, {  -290,    990}, {0x18, 0x42, 0x69, 0xff}}},\n    {{{    76,      0,    -39}, 0, {  -290,    990}, {0x1c, 0x12, 0x86, 0xff}}},\n    {{{   103,      1,      1}, 0, {   -24,   1000}, {0x7e, 0x0b, 0x00, 0xff}}},\n    {{{     0,      0,     28}, 0, { -1052,    990}, {0xb3, 0x3c, 0x51, 0xff}}},\n    {{{   -19,     -8,      0}, 0, { -1254,    902}, {0x84, 0x19, 0xff, 0xff}}},\n};\n\n// 0x06010D30\nstatic const Vtx mips_seg6_vertex_06010D30[] = {\n    {{{   -11,    -30,      0}, 0, { -1168,    680}, {0xbc, 0x96, 0xfe, 0xff}}},\n    {{{     0,      0,    -26}, 0, { -1052,    990}, {0xc7, 0x5d, 0xc1, 0xff}}},\n    {{{    76,      0,    -39}, 0, {  -290,    990}, {0x1c, 0x12, 0x86, 0xff}}},\n    {{{   -19,     -8,      0}, 0, { -1254,    902}, {0x84, 0x19, 0xff, 0xff}}},\n    {{{    76,    -46,      0}, 0, {  -290,    516}, {0x40, 0x93, 0xff, 0xff}}},\n    {{{    76,      0,     41}, 0, {  -290,    990}, {0x18, 0x42, 0x69, 0xff}}},\n    {{{     0,      0,     28}, 0, { -1052,    990}, {0xb3, 0x3c, 0x51, 0xff}}},\n    {{{   103,      1,      1}, 0, {   -24,   1000}, {0x7e, 0x0b, 0x00, 0xff}}},\n};\n\n// 0x06010DB0 - 0x06010E60\nconst Gfx mips_seg6_dl_06010DB0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mips_seg6_texture_0600FB80),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mips_seg6_lights_06010CA0.l, 1),\n    gsSPLight(&mips_seg6_lights_06010CA0.a, 2),\n    gsSPVertex(mips_seg6_vertex_06010CD0, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  4,  0,  5, 0x0),\n    gsSPLight(&mips_seg6_lights_06010CB8.l, 1),\n    gsSPLight(&mips_seg6_lights_06010CB8.a, 2),\n    gsSPVertex(mips_seg6_vertex_06010D30, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  5,  6,  0, 0x0),\n    gsSP2Triangles( 0,  6,  3, 0x0,  0,  4,  5, 0x0),\n    gsSP2Triangles( 2,  7,  4, 0x0,  7,  5,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06010E60 - 0x06010EC0\nconst Gfx mips_seg6_dl_06010E60[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(mips_seg6_dl_06010DB0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x06010EC0\nstatic const Lights1 mips_seg6_lights_06010EC0 = gdSPDefLights1(\n    0x3c, 0x3c, 0x00,\n    0x96, 0x96, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x06010ED8\nstatic const Lights1 mips_seg6_lights_06010ED8 = gdSPDefLights1(\n    0x35, 0x38, 0x00,\n    0x85, 0x8e, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x06010EF0\nstatic const Lights1 mips_seg6_lights_06010EF0 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x06010F08\nstatic const Vtx mips_seg6_vertex_06010F08[] = {\n    {{{     1,      0,    -13}, 0, {   -52,   2012}, {0xbe, 0x5f, 0xcf, 0xff}}},\n    {{{     1,      0,     15}, 0, {   -52,   2012}, {0xa0, 0x2f, 0x43, 0xff}}},\n    {{{    80,      0,     28}, 0, {   702,   2122}, {0x35, 0x2d, 0x69, 0xff}}},\n    {{{    80,      0,    -26}, 0, {   702,   2122}, {0x39, 0x02, 0x8f, 0xff}}},\n    {{{    94,    -14,      1}, 0, {   848,   1676}, {0x7d, 0xeb, 0x00, 0xff}}},\n};\n\n// 0x06010F58\nstatic const Vtx mips_seg6_vertex_06010F58[] = {\n    {{{    -2,    -19,      0}, 0, {   -72,   1382}, {0xbc, 0x96, 0xfe, 0xff}}},\n    {{{     1,      0,     15}, 0, {   -52,   2012}, {0xa0, 0x2f, 0x43, 0xff}}},\n    {{{     1,      0,    -13}, 0, {   -52,   2012}, {0xbe, 0x5f, 0xcf, 0xff}}},\n};\n\n// 0x06010F88\nstatic const Vtx mips_seg6_vertex_06010F88[] = {\n    {{{    -2,    -19,      0}, 0, {   -72,   1382}, {0xbc, 0x96, 0xfe, 0xff}}},\n    {{{    80,      0,    -26}, 0, {   702,   2122}, {0x39, 0x02, 0x8f, 0xff}}},\n    {{{    79,    -32,      0}, 0, {   714,   1108}, {0x33, 0x8d, 0xff, 0xff}}},\n    {{{    80,      0,     28}, 0, {   702,   2122}, {0x35, 0x2d, 0x69, 0xff}}},\n    {{{    94,    -14,      1}, 0, {   848,   1676}, {0x7d, 0xeb, 0x00, 0xff}}},\n    {{{     1,      0,    -13}, 0, {   -52,   2012}, {0xbe, 0x5f, 0xcf, 0xff}}},\n    {{{     1,      0,     15}, 0, {   -52,   2012}, {0xa0, 0x2f, 0x43, 0xff}}},\n};\n\n// 0x06010FF8 - 0x060110B0\nconst Gfx mips_seg6_dl_06010FF8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mips_seg6_texture_0600FB80),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mips_seg6_lights_06010EC0.l, 1),\n    gsSPLight(&mips_seg6_lights_06010EC0.a, 2),\n    gsSPVertex(mips_seg6_vertex_06010F08, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP1Triangle( 3,  2,  4, 0x0),\n    gsSPLight(&mips_seg6_lights_06010ED8.l, 1),\n    gsSPLight(&mips_seg6_lights_06010ED8.a, 2),\n    gsSPVertex(mips_seg6_vertex_06010F58, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPLight(&mips_seg6_lights_06010EF0.l, 1),\n    gsSPLight(&mips_seg6_lights_06010EF0.a, 2),\n    gsSPVertex(mips_seg6_vertex_06010F88, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  2,  1,  4, 0x0),\n    gsSP2Triangles( 0,  5,  1, 0x0,  3,  6,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x060110B0 - 0x06011110\nconst Gfx mips_seg6_dl_060110B0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(mips_seg6_dl_06010FF8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x06011110\nstatic const Lights1 mips_seg6_lights_06011110 = gdSPDefLights1(\n    0x3c, 0x3c, 0x00,\n    0x96, 0x96, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x06011128\nstatic const Lights1 mips_seg6_lights_06011128 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x06011140\nstatic const Vtx mips_seg6_vertex_06011140[] = {\n    {{{    87,      0,     55}, 0, {   732,   2272}, {0x2d, 0x46, 0x5f, 0xff}}},\n    {{{   126,      0,      1}, 0, {  1082,   2254}, {0x7c, 0xe7, 0x00, 0xff}}},\n    {{{    87,      0,    -52}, 0, {   732,   2272}, {0x1e, 0x66, 0xbc, 0xff}}},\n    {{{     0,      0,     41}, 0, {   -58,   2302}, {0xbd, 0x3f, 0x56, 0xff}}},\n    {{{     0,      0,    -35}, 0, {   -58,   2302}, {0xb8, 0x17, 0x9b, 0xff}}},\n    {{{   -19,    -20,     -3}, 0, {  -238,   1860}, {0x83, 0xf0, 0xfb, 0xff}}},\n};\n\n// 0x060111A0\nstatic const Vtx mips_seg6_vertex_060111A0[] = {\n    {{{   -19,    -20,     -3}, 0, {  -238,   1860}, {0x83, 0xf0, 0xfb, 0xff}}},\n    {{{     0,    -38,     28}, 0, {   -54,   1464}, {0xcc, 0x97, 0x2e, 0xff}}},\n    {{{     0,      0,     41}, 0, {   -58,   2302}, {0xbd, 0x3f, 0x56, 0xff}}},\n    {{{     0,    -38,    -22}, 0, {   -54,   1464}, {0xc4, 0xa4, 0xc2, 0xff}}},\n    {{{     0,      0,    -35}, 0, {   -58,   2302}, {0xb8, 0x17, 0x9b, 0xff}}},\n    {{{    89,    -42,    -18}, 0, {   750,   1340}, {0x21, 0x96, 0xc5, 0xff}}},\n    {{{    89,    -42,     21}, 0, {   750,   1340}, {0x2b, 0xa1, 0x47, 0xff}}},\n    {{{    87,      0,     55}, 0, {   732,   2272}, {0x2d, 0x46, 0x5f, 0xff}}},\n    {{{    87,      0,    -52}, 0, {   732,   2272}, {0x1e, 0x66, 0xbc, 0xff}}},\n    {{{   126,      0,      1}, 0, {  1082,   2254}, {0x7c, 0xe7, 0x00, 0xff}}},\n};\n\n// 0x06011240 - 0x06011310\nconst Gfx mips_seg6_dl_06011240[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mips_seg6_texture_0600FB80),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mips_seg6_lights_06011110.l, 1),\n    gsSPLight(&mips_seg6_lights_06011110.a, 2),\n    gsSPVertex(mips_seg6_vertex_06011140, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 2,  4,  3, 0x0,  3,  4,  5, 0x0),\n    gsSPLight(&mips_seg6_lights_06011128.l, 1),\n    gsSPLight(&mips_seg6_lights_06011128.a, 2),\n    gsSPVertex(mips_seg6_vertex_060111A0, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  5,  6,  1, 0x0),\n    gsSP2Triangles( 1,  3,  5, 0x0,  2,  1,  6, 0x0),\n    gsSP2Triangles( 6,  7,  2, 0x0,  5,  3,  4, 0x0),\n    gsSP2Triangles( 4,  8,  5, 0x0,  8,  9,  5, 0x0),\n    gsSP2Triangles( 9,  6,  5, 0x0,  9,  7,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06011310 - 0x06011370\nconst Gfx mips_seg6_dl_06011310[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(mips_seg6_dl_06011240),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x06011370\nstatic const Lights1 mips_seg6_lights_06011370 = gdSPDefLights1(\n    0x3c, 0x3c, 0x00,\n    0x96, 0x96, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x06011388\nstatic const Lights1 mips_seg6_lights_06011388 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x060113A0\nstatic const Vtx mips_seg6_vertex_060113A0[] = {\n    {{{    54,      0,    -35}, 0, {  -112,    464}, {0x5e, 0xf7, 0xac, 0xff}}},\n    {{{    54,      0,     41}, 0, {  -112,    464}, {0x68, 0x18, 0x43, 0xff}}},\n    {{{    49,    -37,      3}, 0, {  -288,     54}, {0x40, 0x93, 0x00, 0xff}}},\n    {{{    -2,     52,    -19}, 0, {  -756,   1148}, {0xe0, 0x50, 0xa4, 0xff}}},\n    {{{    -2,     52,     24}, 0, {  -756,   1148}, {0xb6, 0x2a, 0x5e, 0xff}}},\n};\n\n// 0x060113F0\nstatic const Vtx mips_seg6_vertex_060113F0[] = {\n    {{{    -2,     52,     24}, 0, {  -756,   1148}, {0xb6, 0x2a, 0x5e, 0xff}}},\n    {{{    -2,     52,    -19}, 0, {  -756,   1148}, {0xe0, 0x50, 0xa4, 0xff}}},\n    {{{   -14,     13,      2}, 0, { -1032,    740}, {0x86, 0xdf, 0x00, 0xff}}},\n    {{{    27,    -28,    -22}, 0, {  -560,    194}, {0xca, 0xaa, 0xb5, 0xff}}},\n    {{{    27,    -28,     28}, 0, {  -560,    194}, {0xc8, 0xaa, 0x4a, 0xff}}},\n    {{{    54,      0,    -35}, 0, {  -112,    464}, {0x5e, 0xf7, 0xac, 0xff}}},\n    {{{    49,    -37,      3}, 0, {  -288,     54}, {0x40, 0x93, 0x00, 0xff}}},\n    {{{    54,      0,     41}, 0, {  -112,    464}, {0x68, 0x18, 0x43, 0xff}}},\n};\n\n// 0x06011470 - 0x06011520\nconst Gfx mips_seg6_dl_06011470[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mips_seg6_texture_0600FB80),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mips_seg6_lights_06011370.l, 1),\n    gsSPLight(&mips_seg6_lights_06011370.a, 2),\n    gsSPVertex(mips_seg6_vertex_060113A0, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP1Triangle( 3,  4,  1, 0x0),\n    gsSPLight(&mips_seg6_lights_06011388.l, 1),\n    gsSPLight(&mips_seg6_lights_06011388.a, 2),\n    gsSPVertex(mips_seg6_vertex_060113F0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 3,  2,  1, 0x0,  3,  5,  6, 0x0),\n    gsSP2Triangles( 6,  4,  3, 0x0,  1,  5,  3, 0x0),\n    gsSP2Triangles( 6,  7,  4, 0x0,  4,  7,  0, 0x0),\n    gsSP1Triangle( 0,  2,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06011520 - 0x06011580\nconst Gfx mips_seg6_dl_06011520[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(mips_seg6_dl_06011470),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x06011580\nstatic const Lights1 mips_seg6_lights_06011580 = gdSPDefLights1(\n    0x3c, 0x3c, 0x00,\n    0x96, 0x96, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x06011598\nstatic const Lights1 mips_seg6_lights_06011598 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x060115B0\nstatic const Vtx mips_seg6_vertex_060115B0[] = {\n    {{{    87,      0,    -54}, 0, {  1972,    878}, {0x2d, 0x46, 0xa1, 0xff}}},\n    {{{     0,      0,    -40}, 0, {  3460,    788}, {0xbd, 0x3f, 0xaa, 0xff}}},\n    {{{    87,      0,     53}, 0, {  1972,    878}, {0x1e, 0x66, 0x44, 0xff}}},\n    {{{     0,      0,     36}, 0, {  3460,    788}, {0xb8, 0x17, 0x65, 0xff}}},\n    {{{   -19,    -20,      4}, 0, {  3784,    484}, {0x83, 0xf0, 0x05, 0xff}}},\n    {{{   126,      0,      0}, 0, {  1316,    914}, {0x7c, 0xe7, 0x00, 0xff}}},\n};\n\n// 0x06011610\nstatic const Vtx mips_seg6_vertex_06011610[] = {\n    {{{     0,      0,    -40}, 0, {  3460,    788}, {0xbd, 0x3f, 0xaa, 0xff}}},\n    {{{    87,      0,    -54}, 0, {  1972,    878}, {0x2d, 0x46, 0xa1, 0xff}}},\n    {{{    89,    -42,    -20}, 0, {  1906,    290}, {0x2b, 0xa1, 0xb9, 0xff}}},\n    {{{     0,    -38,    -27}, 0, {  3426,    260}, {0xcc, 0x97, 0xd2, 0xff}}},\n    {{{   -19,    -20,      4}, 0, {  3784,    484}, {0x83, 0xf0, 0x05, 0xff}}},\n    {{{    89,    -42,     19}, 0, {  1906,    290}, {0x21, 0x96, 0x3b, 0xff}}},\n    {{{     0,    -38,     23}, 0, {  3426,    260}, {0xc4, 0xa4, 0x3e, 0xff}}},\n    {{{     0,      0,     36}, 0, {  3460,    788}, {0xb8, 0x17, 0x65, 0xff}}},\n    {{{    87,      0,     53}, 0, {  1972,    878}, {0x1e, 0x66, 0x44, 0xff}}},\n    {{{   126,      0,      0}, 0, {  1316,    914}, {0x7c, 0xe7, 0x00, 0xff}}},\n};\n\n// 0x060116B0 - 0x06011780\nconst Gfx mips_seg6_dl_060116B0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mips_seg6_texture_0600FB80),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mips_seg6_lights_06011580.l, 1),\n    gsSPLight(&mips_seg6_lights_06011580.a, 2),\n    gsSPVertex(mips_seg6_vertex_060115B0, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  3,  1, 0x0,  2,  5,  0, 0x0),\n    gsSPLight(&mips_seg6_lights_06011598.l, 1),\n    gsSPLight(&mips_seg6_lights_06011598.a, 2),\n    gsSPVertex(mips_seg6_vertex_06011610, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 2,  3,  0, 0x0,  3,  2,  5, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0,  5,  6,  3, 0x0),\n    gsSP2Triangles( 6,  7,  4, 0x0,  7,  6,  5, 0x0),\n    gsSP2Triangles( 5,  8,  7, 0x0,  5,  9,  8, 0x0),\n    gsSP2Triangles( 5,  2,  9, 0x0,  2,  1,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06011780 - 0x060117E0\nconst Gfx mips_seg6_dl_06011780[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(mips_seg6_dl_060116B0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x060117E0\nstatic const Lights1 mips_seg6_lights_060117E0 = gdSPDefLights1(\n    0x3c, 0x3c, 0x00,\n    0x96, 0x96, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x060117F8\nstatic const Lights1 mips_seg6_lights_060117F8 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x06011810\nstatic const Vtx mips_seg6_vertex_06011810[] = {\n    {{{    49,    -37,     -2}, 0, {  -516,    -60}, {0x40, 0x93, 0x00, 0xff}}},\n    {{{    54,      0,    -40}, 0, {  -564,   -446}, {0x68, 0x18, 0xbd, 0xff}}},\n    {{{    54,      0,     36}, 0, {  -564,    330}, {0x5e, 0xf7, 0x54, 0xff}}},\n    {{{    -2,     52,     20}, 0, {     2,    164}, {0xe0, 0x50, 0x5c, 0xff}}},\n    {{{    -2,     52,    -23}, 0, {     2,   -268}, {0xb6, 0x2a, 0xa2, 0xff}}},\n};\n\n// 0x06011860\nstatic const Vtx mips_seg6_vertex_06011860[] = {\n    {{{   -14,     13,     -1}, 0, {   120,    -56}, {0x86, 0xdf, 0x00, 0xff}}},\n    {{{    -2,     52,     20}, 0, {     2,    164}, {0xe0, 0x50, 0x5c, 0xff}}},\n    {{{    -2,     52,    -23}, 0, {     2,   -268}, {0xb6, 0x2a, 0xa2, 0xff}}},\n    {{{    49,    -37,     -2}, 0, {  -516,    -60}, {0x40, 0x93, 0x00, 0xff}}},\n    {{{    54,      0,     36}, 0, {  -564,    330}, {0x5e, 0xf7, 0x54, 0xff}}},\n    {{{    27,    -28,     23}, 0, {  -302,    200}, {0xca, 0xaa, 0x4b, 0xff}}},\n    {{{    27,    -28,    -27}, 0, {  -302,   -312}, {0xc8, 0xaa, 0xb6, 0xff}}},\n    {{{    54,      0,    -40}, 0, {  -564,   -446}, {0x68, 0x18, 0xbd, 0xff}}},\n};\n\n// 0x060118E0 - 0x06011990\nconst Gfx mips_seg6_dl_060118E0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mips_seg6_texture_0600FB80),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mips_seg6_lights_060117E0.l, 1),\n    gsSPLight(&mips_seg6_lights_060117E0.a, 2),\n    gsSPVertex(mips_seg6_vertex_06011810, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP1Triangle( 1,  4,  3, 0x0),\n    gsSPLight(&mips_seg6_lights_060117F8.l, 1),\n    gsSPLight(&mips_seg6_lights_060117F8.a, 2),\n    gsSPVertex(mips_seg6_vertex_06011860, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  6,  7,  3, 0x0),\n    gsSP2Triangles( 5,  4,  1, 0x0,  6,  5,  0, 0x0),\n    gsSP2Triangles( 1,  0,  5, 0x0,  2,  7,  6, 0x0),\n    gsSP1Triangle( 6,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06011990 - 0x060119F0\nconst Gfx mips_seg6_dl_06011990[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(mips_seg6_dl_060118E0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x060119F0\nstatic const Lights1 mips_seg6_lights_060119F0 = gdSPDefLights1(\n    0x3c, 0x3c, 0x00,\n    0x96, 0x96, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x06011A08\nstatic const Lights1 mips_seg6_lights_06011A08 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x06011A20\nstatic const Vtx mips_seg6_vertex_06011A20[] = {\n    {{{    76,      0,     40}, 0, {  -628,    934}, {0x1c, 0x11, 0x7a, 0xff}}},\n    {{{    76,      0,    -40}, 0, {  -628,    934}, {0x18, 0x42, 0x97, 0xff}}},\n    {{{     0,      0,     27}, 0, { -1998,    894}, {0xc6, 0x5d, 0x3f, 0xff}}},\n    {{{   103,      1,      0}, 0, {  -142,    966}, {0x7e, 0x0b, 0x00, 0xff}}},\n    {{{     0,      0,    -27}, 0, { -1998,    894}, {0xb5, 0x3c, 0xaf, 0xff}}},\n    {{{   -19,     -8,      0}, 0, { -2378,    732}, {0x84, 0x19, 0x00, 0xff}}},\n};\n\n// 0x06011A80\nstatic const Vtx mips_seg6_vertex_06011A80[] = {\n    {{{   -19,     -8,      0}, 0, { -2378,    732}, {0x84, 0x19, 0x00, 0xff}}},\n    {{{   -11,    -30,      0}, 0, { -2264,    358}, {0xbc, 0x95, 0x00, 0xff}}},\n    {{{     0,      0,     27}, 0, { -1998,    894}, {0xc6, 0x5d, 0x3f, 0xff}}},\n    {{{     0,      0,    -27}, 0, { -1998,    894}, {0xb5, 0x3c, 0xaf, 0xff}}},\n    {{{    76,    -46,      0}, 0, {  -708,    126}, {0x40, 0x93, 0x00, 0xff}}},\n    {{{    76,      0,     40}, 0, {  -628,    934}, {0x1c, 0x11, 0x7a, 0xff}}},\n    {{{    76,      0,    -40}, 0, {  -628,    934}, {0x18, 0x42, 0x97, 0xff}}},\n    {{{   103,      1,      0}, 0, {  -142,    966}, {0x7e, 0x0b, 0x00, 0xff}}},\n};\n\n// 0x06011B00 - 0x06011BB0\nconst Gfx mips_seg6_dl_06011B00[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mips_seg6_texture_0600FB80),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mips_seg6_lights_060119F0.l, 1),\n    gsSPLight(&mips_seg6_lights_060119F0.a, 2),\n    gsSPVertex(mips_seg6_vertex_06011A20, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  5,  2,  4, 0x0),\n    gsSPLight(&mips_seg6_lights_06011A08.l, 1),\n    gsSPLight(&mips_seg6_lights_06011A08.a, 2),\n    gsSPVertex(mips_seg6_vertex_06011A80, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  1, 0x0,  1,  3,  6, 0x0),\n    gsSP2Triangles( 5,  2,  1, 0x0,  6,  4,  1, 0x0),\n    gsSP2Triangles( 4,  7,  5, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06011BB0 - 0x06011C10\nconst Gfx mips_seg6_dl_06011BB0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(mips_seg6_dl_06011B00),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x06011C10\nstatic const Lights1 mips_seg6_lights_06011C10 = gdSPDefLights1(\n    0x3c, 0x3c, 0x00,\n    0x96, 0x96, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x06011C28\nstatic const Lights1 mips_seg6_lights_06011C28 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x06011C40\nstatic const Vtx mips_seg6_vertex_06011C40[] = {\n    {{{    94,    -14,      0}, 0, {   -84,    658}, {0x7d, 0xeb, 0x00, 0xff}}},\n    {{{    80,      0,    -27}, 0, {  -338,    952}, {0x35, 0x2f, 0x97, 0xff}}},\n    {{{    80,      0,     27}, 0, {  -338,    952}, {0x39, 0xff, 0x71, 0xff}}},\n    {{{     1,      0,     14}, 0, { -1644,    926}, {0xbd, 0x5f, 0x30, 0xff}}},\n    {{{     1,      0,    -14}, 0, { -1644,    926}, {0xa2, 0x31, 0xbc, 0xff}}},\n    {{{    -2,    -19,      0}, 0, { -1674,    522}, {0xbc, 0x96, 0x00, 0xff}}},\n};\n\n// 0x06011CA0\nstatic const Vtx mips_seg6_vertex_06011CA0[] = {\n    {{{    94,    -14,      0}, 0, {   -84,    658}, {0x7d, 0xeb, 0x00, 0xff}}},\n    {{{    79,    -32,      0}, 0, {  -312,    302}, {0x33, 0x8d, 0x00, 0xff}}},\n    {{{    80,      0,    -27}, 0, {  -338,    952}, {0x35, 0x2f, 0x97, 0xff}}},\n    {{{    80,      0,     27}, 0, {  -338,    952}, {0x39, 0xff, 0x71, 0xff}}},\n    {{{     1,      0,     14}, 0, { -1644,    926}, {0xbd, 0x5f, 0x30, 0xff}}},\n    {{{    -2,    -19,      0}, 0, { -1674,    522}, {0xbc, 0x96, 0x00, 0xff}}},\n    {{{     1,      0,    -14}, 0, { -1644,    926}, {0xa2, 0x31, 0xbc, 0xff}}},\n};\n\n// 0x06011D10 - 0x06011DB0\nconst Gfx mips_seg6_dl_06011D10[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mips_seg6_texture_0600FB80),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&mips_seg6_lights_06011C10.l, 1),\n    gsSPLight(&mips_seg6_lights_06011C10.a, 2),\n    gsSPVertex(mips_seg6_vertex_06011C40, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  3,  4,  5, 0x0),\n    gsSPLight(&mips_seg6_lights_06011C28.l, 1),\n    gsSPLight(&mips_seg6_lights_06011C28.a, 2),\n    gsSPVertex(mips_seg6_vertex_06011CA0, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  1,  3,  5, 0x0),\n    gsSP2Triangles( 2,  1,  5, 0x0,  5,  6,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06011DB0 - 0x06011E10\nconst Gfx mips_seg6_dl_06011DB0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(mips_seg6_dl_06011D10),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x06011E10\nstatic const Lights1 mips_seg6_lights_06011E10 = gdSPDefLights1(\n    0x34, 0x2c, 0x0f,\n    0x82, 0x6e, 0x26, 0x28, 0x28, 0x28\n);\n\n// 0x06011E28\nstatic const Vtx mips_seg6_vertex_06011E28[] = {\n    {{{    51,    -16,    -11}, 0, {     0,      0}, {0xf1, 0xb5, 0x9b, 0xff}}},\n    {{{    51,    -16,     13}, 0, {     0,      0}, {0xf2, 0x93, 0x3e, 0xff}}},\n    {{{     0,    -12,     -6}, 0, {     0,      0}, {0xf2, 0xb5, 0x9c, 0xff}}},\n    {{{     0,    -12,      8}, 0, {     0,      0}, {0xf2, 0xeb, 0x7c, 0xff}}},\n    {{{    53,     21,      0}, 0, {     0,      0}, {0xe6, 0x7c, 0xfc, 0xff}}},\n    {{{     0,     10,      0}, 0, {     0,      0}, {0xe7, 0x7c, 0xfb, 0xff}}},\n};\n\n// 0x06011E88 - 0x06011ED8\nconst Gfx mips_seg6_dl_06011E88[] = {\n    gsSPLight(&mips_seg6_lights_06011E10.l, 1),\n    gsSPLight(&mips_seg6_lights_06011E10.a, 2),\n    gsSPVertex(mips_seg6_vertex_06011E28, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  0,  2, 0x0,  2,  5,  4, 0x0),\n    gsSP2Triangles( 4,  5,  3, 0x0,  1,  4,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06011ED8 - 0x06011EF8\nconst Gfx mips_seg6_dl_06011ED8[] = {\n    gsDPPipeSync(),\n    gsSPDisplayList(mips_seg6_dl_06011E88),\n    gsDPPipeSync(),\n    gsSPEndDisplayList(),\n};\n\n// 0x06011EF8\nstatic const Lights1 mips_seg6_lights_06011EF8 = gdSPDefLights1(\n    0x34, 0x2c, 0x0f,\n    0x82, 0x6e, 0x26, 0x28, 0x28, 0x28\n);\n\n// 0x06011F10\nstatic const Vtx mips_seg6_vertex_06011F10[] = {\n    {{{     0,    -12,     -7}, 0, {     0,      0}, {0xf3, 0xe8, 0x85, 0xff}}},\n    {{{     0,     10,      0}, 0, {     0,      0}, {0xe7, 0x7c, 0x00, 0xff}}},\n    {{{    53,     21,      0}, 0, {     0,      0}, {0xe6, 0x7c, 0x00, 0xff}}},\n    {{{    51,    -16,    -12}, 0, {     0,      0}, {0xf2, 0x93, 0xc3, 0xff}}},\n    {{{     0,    -12,      7}, 0, {     0,      0}, {0xf1, 0xb6, 0x65, 0xff}}},\n    {{{    51,    -16,     12}, 0, {     0,      0}, {0xf1, 0xb7, 0x66, 0xff}}},\n};\n\n// 0x06011F70 - 0x06011FC0\nconst Gfx mips_seg6_dl_06011F70[] = {\n    gsSPLight(&mips_seg6_lights_06011EF8.l, 1),\n    gsSPLight(&mips_seg6_lights_06011EF8.a, 2),\n    gsSPVertex(mips_seg6_vertex_06011F10, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  2, 0x0,  2,  1,  4, 0x0),\n    gsSP2Triangles( 4,  3,  5, 0x0,  4,  0,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06011FC0 - 0x06011FE0\nconst Gfx mips_seg6_dl_06011FC0[] = {\n    gsDPPipeSync(),\n    gsSPDisplayList(mips_seg6_dl_06011F70),\n    gsDPPipeSync(),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/mist/geo.inc.c",
    "content": "// 0x16000000\nconst GeoLayout mist_geo[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_ASM(0, geo_update_layer_transparency),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mist_seg3_dl_03000880),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x16000020\nconst GeoLayout white_puff_geo[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_ASM(0, geo_update_layer_transparency),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, mist_seg3_dl_03000920),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/mist/model.inc.c",
    "content": "// Mist\n\n// 0x03000000\nstatic const Vtx mist_seg3_vertex_03000000[] = {\n    {{{   -25,    -25,      0}, 0, {     0,    992}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    25,    -25,      0}, 0, {   992,    992}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    25,     25,      0}, 0, {   992,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -25,     25,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x03000040\nstatic const Vtx mist_seg3_vertex_03000040[] = {\n    {{{   -25,    -25,      0}, 0, {     0,    992}, {0x22, 0x1a, 0x1c, 0xff}}},\n    {{{    25,    -25,      0}, 0, {   992,    992}, {0x22, 0x1a, 0x1c, 0xff}}},\n    {{{    25,     25,      0}, 0, {   992,      0}, {0x22, 0x1a, 0x1c, 0xff}}},\n    {{{   -25,     25,      0}, 0, {     0,      0}, {0x22, 0x1a, 0x1c, 0xff}}},\n};\n\n// 0x03000080\nALIGNED8 static const Texture mist_seg3_texture_03000080[] = {\n#include \"actors/mist/mist.ia16.inc.c\"\n};\n\n// 0x03000880 - 0x03000920\nconst Gfx mist_seg3_dl_03000880[] = {\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetCombineMode(G_CC_MODULATEIFADEA, G_CC_MODULATEIFADEA),\n    gsDPLoadTextureBlock(mist_seg3_texture_03000080, G_IM_FMT_IA, G_IM_SIZ_16b, 32, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 5, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsSPVertex(mist_seg3_vertex_03000000, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n\n// 0x03000920 - 0x030009C0\nconst Gfx mist_seg3_dl_03000920[] = {\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetCombineMode(G_CC_MODULATEIFADEA, G_CC_MODULATEIFADEA),\n    gsDPLoadTextureBlock(mist_seg3_texture_03000080, G_IM_FMT_IA, G_IM_SIZ_16b, 32, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 5, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsSPVertex(mist_seg3_vertex_03000040, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/moneybag/anims/anim_06005AD8.inc.c",
    "content": "// 0x06005A60\nstatic const s16 moneybag_seg6_animvalue_06005A60[] = {\n    0x0000, 0x00B4, 0xFF1A, 0x1FFF, 0x3FFF, 0x1FFF, 0x8001, 0xC001,\n    0xC001, 0x8001, 0x8001, 0x8001,\n};\n\n// 0x06005A78\nstatic const u16 moneybag_seg6_animindex_06005A78[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0003, 0x0001, 0x0004, 0x0001, 0x0005,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x000B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x000A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0007,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0009,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0008,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0006,\n};\n\n// 0x06005AD8\nstatic const struct Animation moneybag_seg6_anim_06005AD8 = {\n    0,\n    0,\n    0,\n    0,\n    0x1E,\n    ANIMINDEX_NUMPARTS(moneybag_seg6_animindex_06005A78),\n    moneybag_seg6_animvalue_06005A60,\n    moneybag_seg6_animindex_06005A78,\n    0,\n};\n"
  },
  {
    "path": "actors/moneybag/anims/anim_06005BEC.inc.c",
    "content": "// 0x06005AF0\nstatic const s16 moneybag_seg6_animvalue_06005AF0[] = {\n    0x0000, 0x00B4, 0x00B4, 0x00B4, 0x00B4, 0x00B4, 0x00B4, 0x00D3,\n    0x00F0, 0x00F0, 0x00F0, 0xFF1A, 0x3FFF, 0x3B84, 0x3FFF, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFED, 0xFFCD, 0xFFC6,\n    0x0000, 0x5FCF, 0x629C, 0x6931, 0x70D4, 0x76C7, 0x7851, 0x72FB,\n    0x68D5, 0x5DA7, 0x5537, 0xDBB5, 0xD928, 0xD276, 0xCAAE, 0xC4D8,\n    0xC343, 0xD86B, 0xF157, 0x0A0A, 0x1E86, 0xDBB5, 0xD8F4, 0xD287,\n    0xCAAE, 0xC507, 0xC343, 0xDB90, 0xF887, 0x1452, 0x291E, 0x8001,\n    0x8001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFED,\n    0xFFCD, 0xFFC6, 0x0000, 0x5FCF, 0x629C, 0x6931, 0x70D4, 0x76C7,\n    0x7851, 0x72FB, 0x68D5, 0x5DA7, 0x5537, 0x0000,\n};\n\n// 0x06005B8C\nstatic const u16 moneybag_seg6_animindex_06005B8C[] = {\n    0x0001, 0x0000, 0x000A, 0x0001, 0x0001, 0x000B, 0x0001, 0x000C, 0x0001, 0x000D, 0x0001, 0x000E,\n    0x0001, 0x0000, 0x000A, 0x0039, 0x000A, 0x0043,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0038,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0023,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0037,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x002D,\n    0x0001, 0x0000, 0x000A, 0x000F, 0x000A, 0x0019,\n};\n\n// 0x06005BEC\nstatic const struct Animation moneybag_seg6_anim_06005BEC = {\n    0,\n    0,\n    0,\n    0,\n    0x0A,\n    ANIMINDEX_NUMPARTS(moneybag_seg6_animindex_06005B8C),\n    moneybag_seg6_animvalue_06005AF0,\n    moneybag_seg6_animindex_06005B8C,\n    0,\n};\n"
  },
  {
    "path": "actors/moneybag/anims/anim_06005C98.inc.c",
    "content": "// 0x06005C04\nstatic const s16 moneybag_seg6_animvalue_06005C04[] = {\n    0x0000, 0x00F0, 0xFF1A, 0x3FFF, 0x3B84, 0x3FFF, 0xFF99, 0x026A,\n    0xFF99, 0xFCC7, 0x5537, 0x2406, 0x2986, 0x2406, 0x1E86, 0x243A,\n    0x1F56, 0x243A, 0x291E, 0x8001, 0x8001, 0xFF99, 0x026A, 0xFF99,\n    0xFCC7, 0x5537,\n};\n\n// 0x06005C38\nstatic const u16 moneybag_seg6_animindex_06005C38[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0003, 0x0001, 0x0004, 0x0001, 0x0005,\n    0x0001, 0x0000, 0x0004, 0x0015, 0x0001, 0x0019,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0014,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0004, 0x000B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0013,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0004, 0x000F,\n    0x0001, 0x0000, 0x0004, 0x0006, 0x0001, 0x000A,\n};\n\n// 0x06005C98\nstatic const struct Animation moneybag_seg6_anim_06005C98 = {\n    0,\n    0,\n    0,\n    0,\n    0x04,\n    ANIMINDEX_NUMPARTS(moneybag_seg6_animindex_06005C38),\n    moneybag_seg6_animvalue_06005C04,\n    moneybag_seg6_animindex_06005C38,\n    0,\n};\n"
  },
  {
    "path": "actors/moneybag/anims/anim_06005D3C.inc.c",
    "content": "// 0x06005CB0\nstatic const s16 moneybag_seg6_animvalue_06005CB0[] = {\n    0x0000, 0x00E9, 0x00DE, 0x00D0, 0xFF1A, 0x3FFF, 0x3B84, 0x3FFF,\n    0x56CC, 0x58BF, 0x5AD8, 0x0F8B, 0xFC25, 0xE93B, 0x0E14, 0xFA02,\n    0xE77D, 0x8001, 0x8001, 0x56CC, 0x58BF, 0x5AD8,\n};\n\n// 0x06005CDC\nstatic const u16 moneybag_seg6_animindex_06005CDC[] = {\n    0x0001, 0x0000, 0x0003, 0x0001, 0x0001, 0x0004, 0x0001, 0x0005, 0x0001, 0x0006, 0x0001, 0x0007,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0003, 0x0013,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0012,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0003, 0x000B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0011,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0003, 0x000E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0003, 0x0008,\n};\n\n// 0x06005D3C\nstatic const struct Animation moneybag_seg6_anim_06005D3C = {\n    0,\n    0,\n    0,\n    0,\n    0x03,\n    ANIMINDEX_NUMPARTS(moneybag_seg6_animindex_06005CDC),\n    moneybag_seg6_animvalue_06005CB0,\n    moneybag_seg6_animindex_06005CDC,\n    0,\n};\n"
  },
  {
    "path": "actors/moneybag/anims/anim_06005E44.inc.c",
    "content": "// 0x06005D54\nstatic const s16 moneybag_seg6_animvalue_06005D54[] = {\n    0x0000, 0x00B4, 0xFF1A, 0x3FFF, 0x3B84, 0x3FFF, 0x5FCF, 0x62B8,\n    0x6758, 0x6BA0, 0x6D82, 0x6B5E, 0x66A8, 0x61F3, 0xF6B5, 0xFD63,\n    0x0000, 0xFBB1, 0xF323, 0xEAC2, 0xE6FC, 0xEAE5, 0x10B8, 0x0568,\n    0x0000, 0x0456, 0x0E78, 0x18B6, 0x1D63, 0x18CC, 0xCB51, 0xD1A7,\n    0xD3F8, 0xCF36, 0xC62D, 0xBDA4, 0xBA61, 0xC022, 0x0B33, 0x1144,\n    0x13E9, 0x10FC, 0x0A72, 0x03AA, 0x0000, 0x0154, 0xEDCE, 0xE3F3,\n    0xDFA7, 0xE4C7, 0xF004, 0xFB28, 0x0000, 0xFA46, 0xCBE1, 0xC320,\n    0xBECD, 0xC17F, 0xC8B2, 0xD070, 0xD4C8, 0xD3C1, 0x8001, 0x8001,\n    0x5FCF, 0x62B8, 0x6758, 0x6BA0, 0x6D82, 0x6B5E, 0x66A8, 0x61F3,\n};\n\n// 0x06005DE4\nstatic const u16 moneybag_seg6_animindex_06005DE4[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0003, 0x0001, 0x0004, 0x0001, 0x0005,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x0040,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x003F,\n    0x0008, 0x000E, 0x0008, 0x0016, 0x0008, 0x001E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x003E,\n    0x0008, 0x0026, 0x0008, 0x002E, 0x0008, 0x0036,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x0006,\n};\n\n// 0x06005E44\nstatic const struct Animation moneybag_seg6_anim_06005E44 = {\n    0,\n    0,\n    0,\n    0,\n    0x08,\n    ANIMINDEX_NUMPARTS(moneybag_seg6_animindex_06005DE4),\n    moneybag_seg6_animvalue_06005D54,\n    moneybag_seg6_animindex_06005DE4,\n    0,\n};\n"
  },
  {
    "path": "actors/moneybag/anims/data.inc.c",
    "content": "#include \"anim_06005AD8.inc.c\"\n#include \"anim_06005BEC.inc.c\"\n#include \"anim_06005C98.inc.c\"\n#include \"anim_06005D3C.inc.c\"\n#include \"anim_06005E44.inc.c\"\n"
  },
  {
    "path": "actors/moneybag/anims/table.inc.c",
    "content": "// 0x06005E5C\nconst struct Animation *const moneybag_seg6_anims_06005E5C[] = {\n    &moneybag_seg6_anim_06005AD8,\n    &moneybag_seg6_anim_06005BEC,\n    &moneybag_seg6_anim_06005C98,\n    &moneybag_seg6_anim_06005D3C,\n    &moneybag_seg6_anim_06005E44,\n};\n"
  },
  {
    "path": "actors/moneybag/geo.inc.c",
    "content": "// 0x0D000000\nconst GeoLayout moneybag_geo_000000[] = {\n    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, moneybag_seg6_dl_06005750),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, -120, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, moneybag_seg6_dl_06005980),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 120, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, moneybag_seg6_dl_060059F0),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, moneybag_seg6_dl_06005688),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0D000078\nconst GeoLayout moneybag_geo_000078[] = {\n    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, moneybag_seg6_dl_06005750),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, -120, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, moneybag_seg6_dl_06005980),\n            GEO_CLOSE_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 120, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, moneybag_seg6_dl_060059F0),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, moneybag_seg6_dl_06005688),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0D0000F0\nconst GeoLayout moneybag_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xC8, 100),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_update_layer_transparency),\n            GEO_SWITCH_CASE(2, geo_switch_anim_state),\n            GEO_OPEN_NODE(),\n                GEO_BRANCH(1, moneybag_geo_000000),\n                GEO_BRANCH(1, moneybag_geo_000078),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(), //! more close than open nodes\n    GEO_END(),\n};\n\nUNUSED static const u64 moneybag_unused_1 = 0;\n"
  },
  {
    "path": "actors/moneybag/model.inc.c",
    "content": "// Moneybag\n\n// 0x060039B0\nALIGNED8 static const Texture moneybag_seg6_texture_060039B0[] = {\n#include \"actors/moneybag/moneybag_mouth.rgba16.inc.c\"\n};\n\n// 0x060049B0\nALIGNED8 static const Texture moneybag_seg6_texture_060049B0[] = {\n#include \"actors/moneybag/moneybag_eyes.rgba16.inc.c\"\n};\n\n// 0x060051B0\nstatic const Lights1 moneybag_seg6_lights_060051B0 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x060051C8\nstatic const Lights1 moneybag_seg6_lights_060051C8 = gdSPDefLights1(\n    0x00, 0x3f, 0x23,\n    0x00, 0x7f, 0x47, 0x28, 0x28, 0x28\n);\n\n// 0x060051E0\nstatic const Vtx moneybag_seg6_vertex_060051E0[] = {\n    {{{   226,      1,    300}, 0, {  1988,      0}, {0xcd, 0xf8, 0x73, 0xff}}},\n    {{{     0,      0,    200}, 0, {  2656,    358}, {0xac, 0xfb, 0x5e, 0xff}}},\n    {{{   278,   -190,    140}, 0, {   988,    390}, {0xd2, 0x96, 0x33, 0xff}}},\n    {{{   261,    194,   -174}, 0, {   824,    392}, {0xcc, 0x64, 0xc8, 0xff}}},\n    {{{   226,      1,   -299}, 0, {    -8,      0}, {0xcd, 0xf8, 0x8d, 0xff}}},\n    {{{     0,      0,   -199}, 0, {  -672,    312}, {0xac, 0xfb, 0xa2, 0xff}}},\n    {{{   261,    194,    175}, 0, {  1156,    392}, {0xcc, 0x64, 0x38, 0xff}}},\n    {{{     0,      0,    200}, 0, {  2656,    312}, {0xac, 0xfb, 0x5e, 0xff}}},\n    {{{     0,      0,   -199}, 0, {  -672,    358}, {0xac, 0xfb, 0xa2, 0xff}}},\n    {{{   278,   -190,   -139}, 0, {   992,    390}, {0xd2, 0x96, 0xcd, 0xff}}},\n};\n\n// 0x06005280\nstatic const Vtx moneybag_seg6_vertex_06005280[] = {\n    {{{     0,      0,    200}, 0, {     0,      0}, {0xac, 0xfb, 0x5e, 0xff}}},\n    {{{   -88,    -68,      0}, 0, {     0,      0}, {0x9f, 0xaf, 0x00, 0xff}}},\n    {{{   278,   -190,    140}, 0, {     0,      0}, {0xd2, 0x96, 0x33, 0xff}}},\n    {{{   -88,     71,      0}, 0, {     0,      0}, {0x9b, 0x4c, 0x00, 0xff}}},\n    {{{   261,    194,    175}, 0, {     0,      0}, {0xcc, 0x64, 0x38, 0xff}}},\n    {{{     0,      0,   -199}, 0, {     0,      0}, {0xac, 0xfb, 0xa2, 0xff}}},\n    {{{   278,   -190,   -139}, 0, {     0,      0}, {0xd2, 0x96, 0xcd, 0xff}}},\n    {{{   261,    194,   -174}, 0, {     0,      0}, {0xcc, 0x64, 0xc8, 0xff}}},\n};\n\n// 0x06005300 - 0x06005358\nconst Gfx moneybag_seg6_dl_06005300[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, moneybag_seg6_texture_060039B0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&moneybag_seg6_lights_060051B0.l, 1),\n    gsSPLight(&moneybag_seg6_lights_060051B0.a, 2),\n    gsSPVertex(moneybag_seg6_vertex_060051E0, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  0, 0x0,  8,  4,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06005358 - 0x060053B8\nconst Gfx moneybag_seg6_dl_06005358[] = {\n    gsSPLight(&moneybag_seg6_lights_060051C8.l, 1),\n    gsSPLight(&moneybag_seg6_lights_060051C8.a, 2),\n    gsSPVertex(moneybag_seg6_vertex_06005280, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 3,  0,  4, 0x0,  3,  5,  1, 0x0),\n    gsSP2Triangles( 6,  2,  1, 0x0,  1,  5,  6, 0x0),\n    gsSP2Triangles( 5,  3,  7, 0x0,  4,  7,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x060053B8 - 0x06005428\nconst Gfx moneybag_seg6_dl_060053B8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(moneybag_seg6_dl_06005300),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(moneybag_seg6_dl_06005358),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x06005428\nstatic const Lights1 moneybag_seg6_lights_06005428 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x06005440\nstatic const Vtx moneybag_seg6_vertex_06005440[] = {\n    {{{   418,     89,   -157}, 0, {   388,      0}, {0x46, 0x62, 0xdb, 0xff}}},\n    {{{   261,    194,    175}, 0, {  1604,    408}, {0x46, 0x62, 0x25, 0xff}}},\n    {{{   418,     89,    157}, 0, {  1540,      0}, {0x43, 0x5b, 0x39, 0xff}}},\n    {{{   418,     89,    157}, 0, {   684,      0}, {0x43, 0x5b, 0x39, 0xff}}},\n    {{{   261,    194,    175}, 0, {  1156,    392}, {0x46, 0x62, 0x25, 0xff}}},\n    {{{   226,      1,    300}, 0, {  1988,      0}, {0x34, 0xf9, 0x73, 0xff}}},\n    {{{   418,     89,   -157}, 0, {  1296,      0}, {0x46, 0x62, 0xdb, 0xff}}},\n    {{{   226,      1,   -299}, 0, {    -8,      0}, {0x33, 0xf9, 0x8d, 0xff}}},\n    {{{   261,    194,   -174}, 0, {   824,    392}, {0x43, 0x5b, 0xc7, 0xff}}},\n    {{{   418,    -85,   -157}, 0, {  1296,      0}, {0x28, 0xba, 0x9f, 0xff}}},\n    {{{   278,   -190,   -139}, 0, {   992,    390}, {0x46, 0x9d, 0xdd, 0xff}}},\n    {{{   278,   -190,    140}, 0, {   988,    390}, {0x40, 0xa1, 0x35, 0xff}}},\n    {{{   418,    -85,    157}, 0, {   684,      0}, {0x28, 0xba, 0x61, 0xff}}},\n    {{{   261,    194,   -174}, 0, {   324,    408}, {0x43, 0x5b, 0xc7, 0xff}}},\n};\n\n// 0x06005520\nstatic const Vtx moneybag_seg6_vertex_06005520[] = {\n    {{{   278,   -190,   -139}, 0, {  1512,    416}, {0x46, 0x9d, 0xdd, 0xff}}},\n    {{{   418,    -85,   -156}, 0, {  1588,      0}, {0x4c, 0x9b, 0x00, 0xff}}},\n    {{{   418,    -85,    158}, 0, {   248,      0}, {0x4c, 0x9b, 0x00, 0xff}}},\n    {{{   278,   -190,    140}, 0, {   320,    416}, {0x40, 0xa1, 0x35, 0xff}}},\n    {{{   238,    -15,    286}, 0, {  2336,    754}, {0x3e, 0xce, 0x62, 0xff}}},\n    {{{   272,     77,    312}, 0, {   124,   1062}, {0x3e, 0xce, 0x62, 0xff}}},\n    {{{   229,     73,    337}, 0, {   124,    436}, {0x3e, 0xce, 0x62, 0xff}}},\n};\n\n// 0x06005590 - 0x06005618\nconst Gfx moneybag_seg6_dl_06005590[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, moneybag_seg6_texture_060039B0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&moneybag_seg6_lights_06005428.l, 1),\n    gsSPLight(&moneybag_seg6_lights_06005428.a, 2),\n    gsSPVertex(moneybag_seg6_vertex_06005440, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10,  7, 0x0),\n    gsSP2Triangles( 5, 11, 12, 0x0,  0, 13,  1, 0x0),\n    gsSPVertex(moneybag_seg6_vertex_06005520, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP1Triangle( 4,  5,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06005618 - 0x06005688\nconst Gfx moneybag_seg6_dl_06005618[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(moneybag_seg6_dl_06005590),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x06005688 - 0x060056A8\nconst Gfx moneybag_seg6_dl_06005688[] = {\n    gsSPDisplayList(moneybag_seg6_dl_060053B8),\n    gsSPDisplayList(moneybag_seg6_dl_06005618),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n\n// 0x060056A8\nstatic const Vtx moneybag_seg6_vertex_060056A8[] = {\n    {{{   356,    121,   -159}, 0, {   960,      4}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   356,   -128,    150}, 0, {    28,    918}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   356,   -128,   -149}, 0, {   930,    918}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   356,    121,    160}, 0, {    -2,      4}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   226,      1,    298}, 0, {  -414,    442}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   226,      1,   -297}, 0, {  1374,    442}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x06005708 - 0x06005750\nconst Gfx moneybag_seg6_dl_06005708[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, moneybag_seg6_texture_060049B0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(moneybag_seg6_vertex_060056A8, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  5,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06005750 - 0x060057C0\nconst Gfx moneybag_seg6_dl_06005750[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALFADE, G_CC_DECALFADE),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(moneybag_seg6_dl_06005708),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// Unreferenced light group\nUNUSED static const Lights1 moneybag_lights_unused1 = gdSPDefLights1(\n    0x0c, 0x20, 0x06,\n    0x30, 0x83, 0x1a, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 moneybag_lights_unused2 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x060057F0\nstatic const Lights1 moneybag_seg6_lights_060057F0 = gdSPDefLights1(\n    0x3f, 0x3f, 0x00,\n    0xff, 0xff, 0x00, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 moneybag_lights_unused3 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x06005820\nstatic const Vtx moneybag_seg6_vertex_06005820[] = {\n    {{{     0,      0,      0}, 0, {     0,      0}, {0x83, 0x11, 0x00, 0x00}}},\n    {{{   180,     90,      0}, 0, {     0,      0}, {0xc8, 0x71, 0x00, 0x00}}},\n    {{{   180,     40,    -80}, 0, {     0,      0}, {0xc8, 0x2a, 0x97, 0x00}}},\n    {{{   180,   -120,    -40}, 0, {     0,      0}, {0xbb, 0xb0, 0xbb, 0xff}}},\n    {{{   180,   -120,     40}, 0, {     0,      0}, {0xbb, 0xb0, 0x45, 0xff}}},\n    {{{   180,     90,      0}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   180,     40,     80}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   180,   -120,     40}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   180,   -120,    -40}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   180,     40,    -80}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   180,     40,     80}, 0, {     0,      0}, {0xc8, 0x2a, 0x69, 0xff}}},\n};\n\n// 0x060058D0\nstatic const Vtx moneybag_seg6_vertex_060058D0[] = {\n    {{{   180,     40,     80}, 0, {     0,      0}, {0xc8, 0x2a, 0x69, 0x00}}},\n    {{{   180,     90,      0}, 0, {     0,      0}, {0xc8, 0x71, 0x00, 0x00}}},\n    {{{     0,      0,      0}, 0, {     0,      0}, {0x83, 0x11, 0x00, 0x00}}},\n    {{{   180,   -120,    -40}, 0, {     0,      0}, {0xbb, 0xb0, 0xbb, 0xff}}},\n    {{{   180,   -120,     40}, 0, {     0,      0}, {0xbb, 0xb0, 0x45, 0xff}}},\n    {{{   180,   -120,    -40}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   180,     40,    -80}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   180,     90,      0}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   180,   -120,     40}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   180,     40,     80}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   180,     40,    -80}, 0, {     0,      0}, {0xc8, 0x2a, 0x97, 0xff}}},\n};\n\n// 0x06005980 - 0x060059F0\nconst Gfx moneybag_seg6_dl_06005980[] = {\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPLight(&moneybag_seg6_lights_060057F0.l, 1),\n    gsSPLight(&moneybag_seg6_lights_060057F0.a, 2),\n    gsSPVertex(moneybag_seg6_vertex_06005820, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 5,  8,  9, 0x0, 10,  1,  0, 0x0),\n    gsSP2Triangles( 0,  4, 10, 0x0,  2,  3,  0, 0x0),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x060059F0 - 0x06005A60\nconst Gfx moneybag_seg6_dl_060059F0[] = {\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPLight(&moneybag_seg6_lights_060057F0.l, 1),\n    gsSPLight(&moneybag_seg6_lights_060057F0.a, 2),\n    gsSPVertex(moneybag_seg6_vertex_060058D0, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  5,  7, 0x0),\n    gsSP2Triangles( 9,  8,  7, 0x0,  2,  1, 10, 0x0),\n    gsSP2Triangles(10,  3,  2, 0x0,  2,  4,  0, 0x0),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/monty_mole/anims/anim_05004FEC.inc.c",
    "content": "// 0x05004DA0\nstatic const s16 monty_mole_seg5_animvalue_05004DA0[] = {\n    0x0000, 0x3FFF, 0x8B56, 0x8C0E, 0x8BE3, 0x8BBD, 0x8BF1, 0x8C2D,\n    0x8C60, 0x8C75, 0x8C58, 0x8C19, 0x8BDA, 0x8BBD, 0x7A57, 0x7AFE,\n    0x7B31, 0x7B40, 0x7B42, 0x7B28, 0x7B08, 0x7AF9, 0x7B04, 0x7B1C,\n    0x7B35, 0x7B40, 0x2D9C, 0x30FE, 0x3104, 0x30C3, 0x3154, 0x31BD,\n    0x31FD, 0x3213, 0x31DE, 0x316B, 0x30F8, 0x30C3, 0xF577, 0xF4CA,\n    0xF4F2, 0xF51F, 0xF508, 0xF4F1, 0xF4DD, 0xF4CF, 0xF4C9, 0xF4E0,\n    0xF509, 0xF51F, 0xFA99, 0xFB2E, 0xFB54, 0xFB57, 0xFB51, 0xFB36,\n    0xFB12, 0xFAF3, 0xFAE5, 0xFB03, 0xFB39, 0xFB57, 0xAD86, 0xB0D5,\n    0xB0C3, 0xB04D, 0xB081, 0xB082, 0xB067, 0xB045, 0xB035, 0xB03B,\n    0xB047, 0xB04D, 0xFB59, 0xFAA8, 0xF8D6, 0xF68B, 0xF46C, 0xF25E,\n    0xEFFC, 0xED83, 0xEB2E, 0xE93A, 0xE7E2, 0xE762, 0x1022, 0x0F30,\n    0x0C46, 0x0740, 0x0000, 0xF596, 0xE844, 0xD9AF, 0xCB7B, 0xBF4D,\n    0xB6C9, 0xB395, 0xD76F, 0xDC8B, 0xE873, 0xF5FC, 0x0000, 0x068A,\n    0x0CE3, 0x12BE, 0x17D1, 0x1BCE, 0x1E6A, 0x1F5A, 0xE671, 0xEA09,\n    0xED32, 0xF092, 0xF4CF, 0xFA94, 0x0198, 0x0916, 0x1045, 0x165D,\n    0x1A98, 0x1C2D, 0xFA88, 0xF9F2, 0xF8B4, 0xF70D, 0xF53C, 0xF317,\n    0xF07A, 0xEDAF, 0xEB02, 0xE8BC, 0xE729, 0xE692, 0xF5FC, 0xF629,\n    0xF74B, 0xFA46, 0x0000, 0x0963, 0x15B3, 0x2357, 0x30B7, 0x3C3E,\n    0x4453, 0x475F, 0x1F53, 0x1B8C, 0x12A3, 0x083D, 0x0000, 0xF9BE,\n    0xF32C, 0xECC0, 0xE6F3, 0xE23A, 0xDF0E, 0xDDE5, 0xECBF, 0xEE98,\n    0xEE60, 0xEE71, 0xF124, 0xF75A, 0xFFA4, 0x08E6, 0x1207, 0x19EB,\n    0x1F77, 0x218F, 0x1FFF, 0x3FFF, 0xE001, 0xE001, 0xC001, 0xE001,\n    0xC001, 0xC001, 0x05B4, 0xFF41, 0xF4B1, 0xE992, 0xE172, 0xDC23,\n    0xD734, 0xD2D0, 0xCF1D, 0xCC47, 0xCA75, 0xC9D1, 0x05B4, 0xFF41,\n    0xF4B1, 0xE992, 0xE172, 0xDC23, 0xD734, 0xD2D0, 0xCF1D, 0xCC47,\n    0xCA75, 0xC9D1, 0x3E5E, 0x0000,\n};\n\n// 0x05004F38\nstatic const u16 monty_mole_seg5_animindex_05004F38[] = {\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00CA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x00BE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x00B2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00B1,\n    0x000C, 0x0002, 0x000C, 0x000E, 0x000C, 0x001A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00B0,\n    0x000C, 0x0026, 0x000C, 0x0032, 0x000C, 0x003E,\n    0x0001, 0x00AD, 0x0001, 0x00AE, 0x0001, 0x00AF,\n    0x000C, 0x0056, 0x000C, 0x0062, 0x000C, 0x006E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x004A,\n    0x0001, 0x00AA, 0x0001, 0x00AB, 0x0001, 0x00AC,\n    0x000C, 0x0086, 0x000C, 0x0092, 0x000C, 0x009E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x007A,\n};\n\n// 0x05004FEC\nstatic const struct Animation monty_mole_seg5_anim_05004FEC = {\n    0,\n    0,\n    0,\n    0,\n    0x0C,\n    ANIMINDEX_NUMPARTS(monty_mole_seg5_animindex_05004F38),\n    monty_mole_seg5_animvalue_05004DA0,\n    monty_mole_seg5_animindex_05004F38,\n    0,\n};\n"
  },
  {
    "path": "actors/monty_mole/anims/anim_0500527C.inc.c",
    "content": "// 0x05005004\nstatic const s16 monty_mole_seg5_animvalue_05005004[] = {\n    0x0000, 0x3FFF, 0x84F1, 0x8638, 0x87B9, 0x8929, 0x8A3C, 0x8AA9,\n    0x8A3C, 0x892D, 0x87CD, 0x866D, 0x855E, 0x84F1, 0x7457, 0x778B,\n    0x7C57, 0x816A, 0x856C, 0x870E, 0x85AB, 0x8235, 0x7DB1, 0x7930,\n    0x75BA, 0x7457, 0x1099, 0x1D8C, 0x2FC9, 0x42A1, 0x5160, 0x5755,\n    0x5218, 0x44FF, 0x33F7, 0x22F0, 0x15D7, 0x1099, 0xF49F, 0xF4F8,\n    0xF685, 0xF88A, 0xFA49, 0xFB08, 0xFA8F, 0xF95F, 0xF7D4, 0xF648,\n    0xF518, 0xF49F, 0x0336, 0x0191, 0xFDB8, 0xF923, 0xF54E, 0xF3B2,\n    0xF4D9, 0xF7B8, 0xFB75, 0xFF31, 0x0210, 0x0336, 0xCB55, 0xC6DE,\n    0xB95B, 0xA890, 0x9A42, 0x9435, 0x984B, 0xA280, 0xAFC5, 0xBD0B,\n    0xC740, 0xCB55, 0xF129, 0xE82F, 0xDB2F, 0xD2C4, 0xD083, 0xD018,\n    0xD13B, 0xD3A4, 0xD70A, 0xDF80, 0xEB3C, 0xF129, 0xB395, 0xBF59,\n    0xDBAD, 0x076D, 0x228E, 0x2C06, 0x1821, 0xF850, 0xDCBB, 0xC924,\n    0xB9CB, 0xB395, 0x1F5A, 0x02E8, 0xDCB1, 0xD59A, 0xE28E, 0xEE84,\n    0xED23, 0xE7FB, 0xE964, 0xFB00, 0x132B, 0x1F5A, 0x1C2D, 0x1E20,\n    0x140D, 0xF0F2, 0xE31B, 0xE1EE, 0xF2AC, 0x0A94, 0x1C0B, 0x2065,\n    0x1E4D, 0x1C2D, 0xE692, 0xE5BA, 0xE535, 0xE4F4, 0xE4EB, 0xE50E,\n    0xE54E, 0xE5A0, 0xE5F6, 0xE644, 0xE67C, 0xE692, 0xEA13, 0xF458,\n    0x07E2, 0x20E1, 0x38BB, 0x3BFC, 0x3794, 0x337B, 0x2A8B, 0x12F0,\n    0xF758, 0xEA13, 0x0943, 0x18E9, 0x23C7, 0x116A, 0xF76F, 0xE8AE,\n    0xF856, 0x11A4, 0x22EE, 0x1DC8, 0x10AB, 0x0943, 0xE20D, 0xF2A6,\n    0x0712, 0x13D8, 0x200B, 0x3222, 0x1BFD, 0x215C, 0x2364, 0x0D4D,\n    0xF06B, 0xE20D, 0x1FFF, 0x3FFF, 0xE001, 0xE001, 0xC001, 0xE001,\n    0xC001, 0xC001, 0xC9D1, 0xC71A, 0xC56B, 0xC49A, 0xC47E, 0xC4EE,\n    0xC5BE, 0xC6C6, 0xC7DC, 0xC8D6, 0xC98B, 0xC9D1, 0xC9D1, 0xC71A,\n    0xC56B, 0xC49A, 0xC47E, 0xC4EE, 0xC5BE, 0xC6C6, 0xC7DC, 0xC8D6,\n    0xC98B, 0xC9D1, 0xF156, 0xF72C, 0x0160, 0x0CB3, 0x15E2, 0x19AA,\n    0x16AE, 0x0F35, 0x0580, 0xFBCB, 0xF453, 0xF156, 0x45B3, 0x4627,\n    0x4656, 0x4658, 0x4646, 0x463B, 0x4631, 0x4618, 0x45F7, 0x45D6,\n    0x45BD, 0x45B3,\n};\n\n// 0x050051C8\nstatic const u16 monty_mole_seg5_animindex_050051C8[] = {\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000,\n    0x000C, 0x00CA, 0x0001, 0x0000, 0x000C, 0x00D6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x00BE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x00B2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00B1,\n    0x000C, 0x0002, 0x000C, 0x000E, 0x000C, 0x001A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00B0,\n    0x000C, 0x0026, 0x000C, 0x0032, 0x000C, 0x003E,\n    0x0001, 0x00AD, 0x0001, 0x00AE, 0x0001, 0x00AF,\n    0x000C, 0x0056, 0x000C, 0x0062, 0x000C, 0x006E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x004A,\n    0x0001, 0x00AA, 0x0001, 0x00AB, 0x0001, 0x00AC,\n    0x000C, 0x0086, 0x000C, 0x0092, 0x000C, 0x009E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x007A,\n};\n\n// 0x0500527C\nstatic const struct Animation monty_mole_seg5_anim_0500527C = {\n    0,\n    0,\n    0,\n    0,\n    0x0C,\n    ANIMINDEX_NUMPARTS(monty_mole_seg5_animindex_050051C8),\n    monty_mole_seg5_animvalue_05005004,\n    monty_mole_seg5_animindex_050051C8,\n    0,\n};\n"
  },
  {
    "path": "actors/monty_mole/anims/anim_050054B0.inc.c",
    "content": "// 0x05005294\nstatic const s16 monty_mole_seg5_animvalue_05005294[] = {\n    0x0000, 0x3FFF, 0x84F1, 0x85CD, 0x86BB, 0x87AE, 0x889C, 0x8978,\n    0x8A38, 0x8ACF, 0x8B32, 0x8B56, 0x7457, 0x74F1, 0x75B3, 0x768F,\n    0x7775, 0x7854, 0x791E, 0x79C1, 0x7A2F, 0x7A57, 0x1099, 0x142B,\n    0x1834, 0x1C77, 0x20B8, 0x24BA, 0x2842, 0x2B13, 0x2CEF, 0x2D9C,\n    0xF49F, 0xF40E, 0xF3D1, 0xF3D6, 0xF40B, 0xF45E, 0xF4BE, 0xF519,\n    0xF55C, 0xF577, 0x0336, 0x0347, 0x02AE, 0x0197, 0x002F, 0xFEA5,\n    0xFD23, 0xFBD8, 0xFAF0, 0xFA99, 0xCB55, 0xCCDB, 0xCB78, 0xC7E7,\n    0xC2E2, 0xBD23, 0xB767, 0xB267, 0xAEDE, 0xAD86, 0xF129, 0xF1F3,\n    0xF31E, 0xF48A, 0xF617, 0xF7A5, 0xF913, 0xFA41, 0xFB0D, 0xFB59,\n    0xB395, 0xB7AB, 0xC0A8, 0xCD1D, 0xDB9A, 0xEAAE, 0xF8E9, 0x04D9,\n    0x0D12, 0x1022, 0x1F5A, 0x1A98, 0x12C5, 0x08D7, 0xFDC9, 0xF290,\n    0xE826, 0xDF82, 0xD99D, 0xD76F, 0x1C2D, 0x1B92, 0x1749, 0x1054,\n    0x07B2, 0xFE65, 0xF56B, 0xEDC4, 0xE870, 0xE671, 0xE692, 0xE0AD,\n    0xD92E, 0xD3B8, 0xD3EC, 0xE91C, 0x0008, 0x020A, 0xFDAD, 0xFA88,\n    0xEA13, 0xF323, 0x0352, 0x1317, 0x1AE7, 0x17E9, 0x0EDC, 0x039D,\n    0xFA09, 0xF5FC, 0x0943, 0x0D1D, 0x1208, 0x16D4, 0x1A53, 0x1C6A,\n    0x1DD9, 0x1EBE, 0x1F32, 0x1F53, 0xE20D, 0xEDD4, 0xFE14, 0x0CBE,\n    0x13C6, 0x1079, 0x06E4, 0xFB0E, 0xF0FF, 0xECBF, 0x1FFF, 0x3FFF,\n    0xE001, 0xE001, 0xC001, 0xE001, 0xC001, 0xC001, 0xC9D1, 0xCC48,\n    0xD202, 0xDA0A, 0xE370, 0xED40, 0xF687, 0xFE54, 0x03B3, 0x05B4,\n    0xC9D1, 0xCC48, 0xD202, 0xDA0A, 0xE370, 0xED40, 0xF687, 0xFE54,\n    0x03B3, 0x05B4, 0x45B3, 0x455B, 0x44A2, 0x43A5, 0x4280, 0x414F,\n    0x4031, 0x3F40, 0x3E9B, 0x3E5E,\n};\n\n// 0x050053FC\nstatic const u16 monty_mole_seg5_animindex_050053FC[] = {\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x00AA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x00A0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0096,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0095,\n    0x000A, 0x0002, 0x000A, 0x000C, 0x000A, 0x0016,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0094,\n    0x000A, 0x0020, 0x000A, 0x002A, 0x000A, 0x0034,\n    0x0001, 0x0091, 0x0001, 0x0092, 0x0001, 0x0093,\n    0x000A, 0x0048, 0x000A, 0x0052, 0x000A, 0x005C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x003E,\n    0x0001, 0x008E, 0x0001, 0x008F, 0x0001, 0x0090,\n    0x000A, 0x0070, 0x000A, 0x007A, 0x000A, 0x0084,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0066,\n};\n\n// 0x050054B0\nstatic const struct Animation monty_mole_seg5_anim_050054B0 = {\n    0,\n    0,\n    0,\n    0,\n    0x0A,\n    ANIMINDEX_NUMPARTS(monty_mole_seg5_animindex_050053FC),\n    monty_mole_seg5_animvalue_05005294,\n    monty_mole_seg5_animindex_050053FC,\n    0,\n};\n"
  },
  {
    "path": "actors/monty_mole/anims/anim_050062B0.inc.c",
    "content": "// 0x050054C8\nstatic const s16 monty_mole_seg5_animvalue_050054C8[] = {\n    0x0000, 0x3FFF, 0x8B56, 0x8B78, 0x8B97, 0x8BB6, 0x8BD2, 0x8BED,\n    0x8C07, 0x8C1F, 0x8C35, 0x8C4A, 0x8C5D, 0x8C6F, 0x8C80, 0x8C8F,\n    0x8C9D, 0x8CAA, 0x8CB5, 0x8CBF, 0x8CC8, 0x8CD0, 0x8CD7, 0x8CDD,\n    0x8CE1, 0x8CE5, 0x8CE8, 0x8CE9, 0x8CEA, 0x8CEA, 0x8CE9, 0x8CE7,\n    0x8CE4, 0x8CE1, 0x8CDD, 0x8CD8, 0x8CD3, 0x8CCD, 0x8CC6, 0x8CBF,\n    0x8CB7, 0x8CAF, 0x8CA6, 0x8C9D, 0x8C94, 0x8C8A, 0x8C80, 0x8C76,\n    0x8C6B, 0x8C60, 0x8C55, 0x8C4A, 0x8C3F, 0x8C33, 0x8C28, 0x8C1C,\n    0x8C11, 0x8C05, 0x8BFA, 0x8BEF, 0x8BE3, 0x8BD8, 0x8BCE, 0x8BC3,\n    0x8BB9, 0x8BAF, 0x8BA6, 0x8B9C, 0x8B94, 0x8B8B, 0x8B83, 0x8B7C,\n    0x8B75, 0x8B6F, 0x8B69, 0x8B64, 0x8B60, 0x8B5D, 0x8B5A, 0x8B58,\n    0x8B56, 0x8B56, 0x7A57, 0x7A6B, 0x7A7F, 0x7A92, 0x7AA3, 0x7AB4,\n    0x7AC4, 0x7AD2, 0x7AE0, 0x7AED, 0x7AF9, 0x7B04, 0x7B0E, 0x7B17,\n    0x7B20, 0x7B28, 0x7B2F, 0x7B35, 0x7B3B, 0x7B40, 0x7B44, 0x7B47,\n    0x7B4A, 0x7B4C, 0x7B4E, 0x7B4F, 0x7B4F, 0x7B4F, 0x7B4F, 0x7B4E,\n    0x7B4C, 0x7B4A, 0x7B47, 0x7B44, 0x7B41, 0x7B3D, 0x7B39, 0x7B35,\n    0x7B30, 0x7B2B, 0x7B26, 0x7B20, 0x7B1A, 0x7B14, 0x7B0E, 0x7B08,\n    0x7B01, 0x7AFB, 0x7AF4, 0x7AED, 0x7AE6, 0x7ADF, 0x7AD8, 0x7AD1,\n    0x7ACA, 0x7AC3, 0x7ABC, 0x7AB5, 0x7AAE, 0x7AA7, 0x7AA0, 0x7A9A,\n    0x7A94, 0x7A8E, 0x7A88, 0x7A82, 0x7A7D, 0x7A77, 0x7A73, 0x7A6E,\n    0x7A6A, 0x7A66, 0x7A63, 0x7A60, 0x7A5D, 0x7A5B, 0x7A59, 0x7A58,\n    0x7A57, 0x7A57, 0x2D9C, 0x2E23, 0x2EA4, 0x2F1D, 0x2F91, 0x2FFD,\n    0x3064, 0x30C4, 0x311E, 0x3172, 0x31C0, 0x3208, 0x324B, 0x3289,\n    0x32C1, 0x32F4, 0x3322, 0x334B, 0x336F, 0x338F, 0x33AA, 0x33C1,\n    0x33D3, 0x33E2, 0x33EC, 0x33F3, 0x33F6, 0x33F6, 0x33F2, 0x33EA,\n    0x33E0, 0x33D2, 0x33C2, 0x33AF, 0x3399, 0x3381, 0x3366, 0x3349,\n    0x332A, 0x3309, 0x32E7, 0x32C2, 0x329C, 0x3275, 0x324C, 0x3222,\n    0x31F7, 0x31CB, 0x319F, 0x3172, 0x3144, 0x3116, 0x30E8, 0x30B9,\n    0x308B, 0x305D, 0x302F, 0x3002, 0x2FD5, 0x2FA9, 0x2F7E, 0x2F54,\n    0x2F2B, 0x2F03, 0x2EDC, 0x2EB7, 0x2E94, 0x2E72, 0x2E53, 0x2E35,\n    0x2E1A, 0x2E01, 0x2DEA, 0x2DD6, 0x2DC5, 0x2DB6, 0x2DAB, 0x2DA2,\n    0x2D9D, 0x2D9C, 0xF577, 0xF557, 0xF53A, 0xF51E, 0xF503, 0xF4EA,\n    0xF4D2, 0xF4BC, 0xF4A7, 0xF494, 0xF482, 0xF471, 0xF462, 0xF453,\n    0xF446, 0xF43B, 0xF430, 0xF427, 0xF41E, 0xF417, 0xF411, 0xF40B,\n    0xF407, 0xF404, 0xF401, 0xF400, 0xF3FF, 0xF3FF, 0xF400, 0xF402,\n    0xF404, 0xF407, 0xF40B, 0xF40F, 0xF414, 0xF41A, 0xF420, 0xF427,\n    0xF42E, 0xF436, 0xF43E, 0xF446, 0xF44F, 0xF458, 0xF461, 0xF46B,\n    0xF475, 0xF47F, 0xF489, 0xF494, 0xF49E, 0xF4A9, 0xF4B4, 0xF4BE,\n    0xF4C9, 0xF4D4, 0xF4DE, 0xF4E9, 0xF4F3, 0xF4FD, 0xF507, 0xF511,\n    0xF51B, 0xF524, 0xF52D, 0xF535, 0xF53D, 0xF545, 0xF54C, 0xF553,\n    0xF55A, 0xF55F, 0xF565, 0xF569, 0xF56D, 0xF571, 0xF573, 0xF575,\n    0xF576, 0xF577, 0xFA99, 0xFAAC, 0xFABE, 0xFACF, 0xFADF, 0xFAEF,\n    0xFAFD, 0xFB0B, 0xFB17, 0xFB23, 0xFB2E, 0xFB38, 0xFB42, 0xFB4A,\n    0xFB52, 0xFB59, 0xFB60, 0xFB66, 0xFB6B, 0xFB6F, 0xFB73, 0xFB76,\n    0xFB79, 0xFB7B, 0xFB7C, 0xFB7D, 0xFB7E, 0xFB7E, 0xFB7D, 0xFB7C,\n    0xFB7A, 0xFB79, 0xFB76, 0xFB74, 0xFB71, 0xFB6D, 0xFB69, 0xFB65,\n    0xFB61, 0xFB5C, 0xFB57, 0xFB52, 0xFB4D, 0xFB47, 0xFB42, 0xFB3C,\n    0xFB36, 0xFB30, 0xFB29, 0xFB23, 0xFB1D, 0xFB16, 0xFB10, 0xFB09,\n    0xFB03, 0xFAFC, 0xFAF6, 0xFAEF, 0xFAE9, 0xFAE3, 0xFADD, 0xFAD7,\n    0xFAD1, 0xFACB, 0xFAC6, 0xFAC1, 0xFABC, 0xFAB7, 0xFAB3, 0xFAAF,\n    0xFAAB, 0xFAA7, 0xFAA4, 0xFAA1, 0xFA9F, 0xFA9D, 0xFA9B, 0xFA9A,\n    0xFA99, 0xFA99, 0xAD86, 0xAE0C, 0xAE8C, 0xAF04, 0xAF76, 0xAFE2,\n    0xB047, 0xB0A6, 0xB0FF, 0xB152, 0xB19F, 0xB1E7, 0xB229, 0xB266,\n    0xB29D, 0xB2D0, 0xB2FD, 0xB326, 0xB34A, 0xB369, 0xB384, 0xB39B,\n    0xB3AD, 0xB3BB, 0xB3C6, 0xB3CC, 0xB3CF, 0xB3CF, 0xB3CB, 0xB3C4,\n    0xB3B9, 0xB3AC, 0xB39C, 0xB389, 0xB373, 0xB35B, 0xB341, 0xB324,\n    0xB306, 0xB2E5, 0xB2C3, 0xB29F, 0xB279, 0xB252, 0xB22A, 0xB200,\n    0xB1D6, 0xB1AB, 0xB17F, 0xB152, 0xB125, 0xB0F7, 0xB0C9, 0xB09C,\n    0xB06E, 0xB040, 0xB013, 0xAFE6, 0xAFBA, 0xAF8E, 0xAF64, 0xAF3A,\n    0xAF11, 0xAEEA, 0xAEC4, 0xAE9F, 0xAE7C, 0xAE5B, 0xAE3C, 0xAE1E,\n    0xAE03, 0xADEA, 0xADD4, 0xADC0, 0xADAF, 0xADA1, 0xAD95, 0xAD8D,\n    0xAD88, 0xAD86, 0xFB59, 0xFB70, 0xFB86, 0xFB9A, 0xFBAE, 0xFBC0,\n    0xFBD2, 0xFBE2, 0xFBF1, 0xFC00, 0xFC0D, 0xFC19, 0xFC24, 0xFC2F,\n    0xFC38, 0xFC41, 0xFC49, 0xFC50, 0xFC56, 0xFC5B, 0xFC60, 0xFC64,\n    0xFC67, 0xFC69, 0xFC6B, 0xFC6C, 0xFC6D, 0xFC6D, 0xFC6C, 0xFC6B,\n    0xFC69, 0xFC67, 0xFC64, 0xFC61, 0xFC5D, 0xFC59, 0xFC54, 0xFC50,\n    0xFC4A, 0xFC45, 0xFC3F, 0xFC39, 0xFC32, 0xFC2B, 0xFC25, 0xFC1D,\n    0xFC16, 0xFC0F, 0xFC07, 0xFC00, 0xFBF8, 0xFBF0, 0xFBE8, 0xFBE0,\n    0xFBD8, 0xFBD1, 0xFBC9, 0xFBC1, 0xFBBA, 0xFBB2, 0xFBAB, 0xFBA4,\n    0xFB9D, 0xFB96, 0xFB8F, 0xFB89, 0xFB83, 0xFB7D, 0xFB78, 0xFB73,\n    0xFB6E, 0xFB6A, 0xFB66, 0xFB63, 0xFB60, 0xFB5D, 0xFB5B, 0xFB5A,\n    0xFB59, 0xFB59, 0x1022, 0x1052, 0x107F, 0x10AA, 0x10D3, 0x10F9,\n    0x111D, 0x113F, 0x115F, 0x117D, 0x1199, 0x11B2, 0x11CA, 0x11E0,\n    0x11F4, 0x1206, 0x1216, 0x1224, 0x1231, 0x123C, 0x1246, 0x124E,\n    0x1255, 0x125A, 0x125E, 0x1260, 0x1261, 0x1261, 0x125F, 0x125D,\n    0x1259, 0x1254, 0x124E, 0x1248, 0x1240, 0x1237, 0x122E, 0x1224,\n    0x1219, 0x120D, 0x1201, 0x11F4, 0x11E7, 0x11D9, 0x11CA, 0x11BB,\n    0x11AC, 0x119D, 0x118D, 0x117D, 0x116D, 0x115D, 0x114C, 0x113C,\n    0x112B, 0x111B, 0x110B, 0x10FB, 0x10EB, 0x10DC, 0x10CC, 0x10BD,\n    0x10AF, 0x10A1, 0x1093, 0x1086, 0x1079, 0x106E, 0x1062, 0x1058,\n    0x104E, 0x1045, 0x103D, 0x1036, 0x1030, 0x102B, 0x1027, 0x1024,\n    0x1022, 0x1022, 0xD76F, 0xD6F6, 0xD684, 0xD617, 0xD5B1, 0xD550,\n    0xD4F5, 0xD4A0, 0xD450, 0xD405, 0xD3BF, 0xD37F, 0xD343, 0xD30D,\n    0xD2DB, 0xD2AD, 0xD284, 0xD260, 0xD240, 0xD223, 0xD20B, 0xD1F7,\n    0xD1E6, 0xD1DA, 0xD1D0, 0xD1CA, 0xD1C8, 0xD1C8, 0xD1CC, 0xD1D2,\n    0xD1DC, 0xD1E8, 0xD1F6, 0xD207, 0xD21B, 0xD230, 0xD248, 0xD261,\n    0xD27D, 0xD29A, 0xD2B9, 0xD2DA, 0xD2FB, 0xD31E, 0xD343, 0xD368,\n    0xD38E, 0xD3B5, 0xD3DD, 0xD405, 0xD42D, 0xD456, 0xD480, 0xD4A9,\n    0xD4D2, 0xD4FB, 0xD524, 0xD54C, 0xD574, 0xD59B, 0xD5C1, 0xD5E7,\n    0xD60C, 0xD62F, 0xD651, 0xD672, 0xD692, 0xD6AF, 0xD6CC, 0xD6E6,\n    0xD6FE, 0xD715, 0xD729, 0xD73A, 0xD74A, 0xD757, 0xD761, 0xD768,\n    0xD76D, 0xD76F, 0xE671, 0xE6B2, 0xE6F0, 0xE72A, 0xE762, 0xE796,\n    0xE7C7, 0xE7F5, 0xE820, 0xE849, 0xE86E, 0xE891, 0xE8B1, 0xE8CE,\n    0xE8E9, 0xE902, 0xE918, 0xE92C, 0xE93D, 0xE94C, 0xE959, 0xE964,\n    0xE96D, 0xE974, 0xE979, 0xE97C, 0xE97E, 0xE97E, 0xE97C, 0xE978,\n    0xE973, 0xE96D, 0xE965, 0xE95C, 0xE951, 0xE945, 0xE939, 0xE92B,\n    0xE91C, 0xE90C, 0xE8FB, 0xE8EA, 0xE8D8, 0xE8C5, 0xE8B1, 0xE89D,\n    0xE889, 0xE874, 0xE85E, 0xE849, 0xE833, 0xE81C, 0xE806, 0xE7F0,\n    0xE7DA, 0xE7C4, 0xE7AE, 0xE798, 0xE782, 0xE76D, 0xE759, 0xE744,\n    0xE731, 0xE71D, 0xE70B, 0xE6F9, 0xE6E8, 0xE6D8, 0xE6C9, 0xE6BB,\n    0xE6AE, 0xE6A2, 0xE697, 0xE68D, 0xE685, 0xE67E, 0xE678, 0xE674,\n    0xE672, 0xE671, 0xFA88, 0xFA93, 0xFA9E, 0xFAA7, 0xFAB1, 0xFAB9,\n    0xFAC2, 0xFAC9, 0xFAD1, 0xFAD7, 0xFADE, 0xFAE3, 0xFAE9, 0xFAEE,\n    0xFAF2, 0xFAF6, 0xFAFA, 0xFAFD, 0xFB00, 0xFB03, 0xFB05, 0xFB07,\n    0xFB08, 0xFB0A, 0xFB0A, 0xFB0B, 0xFB0B, 0xFB0B, 0xFB0B, 0xFB0A,\n    0xFB09, 0xFB08, 0xFB07, 0xFB05, 0xFB04, 0xFB02, 0xFB00, 0xFAFD,\n    0xFAFB, 0xFAF8, 0xFAF5, 0xFAF2, 0xFAEF, 0xFAEC, 0xFAE9, 0xFAE5,\n    0xFAE2, 0xFADF, 0xFADB, 0xFAD7, 0xFAD4, 0xFAD0, 0xFACC, 0xFAC9,\n    0xFAC5, 0xFAC1, 0xFABD, 0xFABA, 0xFAB6, 0xFAB3, 0xFAAF, 0xFAAC,\n    0xFAA8, 0xFAA5, 0xFAA2, 0xFA9F, 0xFA9C, 0xFA9A, 0xFA97, 0xFA95,\n    0xFA93, 0xFA90, 0xFA8F, 0xFA8D, 0xFA8C, 0xFA8A, 0xFA8A, 0xFA89,\n    0xFA88, 0xFA88, 0xF5FC, 0xF5DE, 0xF5C2, 0xF5A7, 0xF58E, 0xF576,\n    0xF55F, 0xF54A, 0xF537, 0xF524, 0xF513, 0xF503, 0xF4F4, 0xF4E7,\n    0xF4DB, 0xF4CF, 0xF4C5, 0xF4BC, 0xF4B4, 0xF4AD, 0xF4A7, 0xF4A2,\n    0xF49E, 0xF49B, 0xF499, 0xF497, 0xF497, 0xF497, 0xF498, 0xF499,\n    0xF49C, 0xF49E, 0xF4A2, 0xF4A6, 0xF4AB, 0xF4B0, 0xF4B6, 0xF4BD,\n    0xF4C3, 0xF4CB, 0xF4D2, 0xF4DA, 0xF4E3, 0xF4EB, 0xF4F4, 0xF4FD,\n    0xF507, 0xF510, 0xF51A, 0xF524, 0xF52E, 0xF538, 0xF542, 0xF54D,\n    0xF557, 0xF561, 0xF56B, 0xF575, 0xF57F, 0xF588, 0xF592, 0xF59B,\n    0xF5A4, 0xF5AD, 0xF5B5, 0xF5BE, 0xF5C5, 0xF5CD, 0xF5D4, 0xF5DA,\n    0xF5E0, 0xF5E6, 0xF5EB, 0xF5EF, 0xF5F3, 0xF5F6, 0xF5F9, 0xF5FA,\n    0xF5FC, 0xF5FC, 0x1F53, 0x1FB0, 0x2008, 0x205C, 0x20AB, 0x20F6,\n    0x213C, 0x217E, 0x21BC, 0x21F6, 0x222B, 0x225D, 0x228B, 0x22B5,\n    0x22DC, 0x22FF, 0x231F, 0x233B, 0x2354, 0x2369, 0x237C, 0x238C,\n    0x2398, 0x23A2, 0x23AA, 0x23AE, 0x23B0, 0x23B0, 0x23AD, 0x23A8,\n    0x23A1, 0x2398, 0x238C, 0x237F, 0x2370, 0x2360, 0x234D, 0x233A,\n    0x2324, 0x230E, 0x22F6, 0x22DD, 0x22C3, 0x22A8, 0x228C, 0x226F,\n    0x2251, 0x2233, 0x2215, 0x21F6, 0x21D6, 0x21B7, 0x2197, 0x2177,\n    0x2157, 0x2138, 0x2118, 0x20F9, 0x20DA, 0x20BC, 0x209E, 0x2081,\n    0x2065, 0x204A, 0x202F, 0x2016, 0x1FFE, 0x1FE7, 0x1FD1, 0x1FBD,\n    0x1FAA, 0x1F99, 0x1F89, 0x1F7B, 0x1F6F, 0x1F65, 0x1F5E, 0x1F58,\n    0x1F54, 0x1F53, 0xECBF, 0xED14, 0xED65, 0xEDB1, 0xEDF9, 0xEE3E,\n    0xEE7E, 0xEEBA, 0xEEF2, 0xEF27, 0xEF58, 0xEF86, 0xEFB0, 0xEFD6,\n    0xEFF9, 0xF019, 0xF036, 0xF050, 0xF067, 0xF07B, 0xF08C, 0xF09A,\n    0xF0A6, 0xF0AF, 0xF0B5, 0xF0B9, 0xF0BB, 0xF0BB, 0xF0B8, 0xF0B4,\n    0xF0AD, 0xF0A5, 0xF09B, 0xF08F, 0xF081, 0xF072, 0xF061, 0xF04F,\n    0xF03B, 0xF027, 0xF011, 0xEFFA, 0xEFE2, 0xEFCA, 0xEFB0, 0xEF96,\n    0xEF7B, 0xEF5F, 0xEF43, 0xEF27, 0xEF0A, 0xEEEE, 0xEED1, 0xEEB4,\n    0xEE97, 0xEE7A, 0xEE5D, 0xEE40, 0xEE24, 0xEE09, 0xEDEE, 0xEDD3,\n    0xEDB9, 0xEDA0, 0xED88, 0xED71, 0xED5B, 0xED46, 0xED32, 0xED1F,\n    0xED0E, 0xECFF, 0xECF0, 0xECE4, 0xECD9, 0xECD0, 0xECC9, 0xECC3,\n    0xECC0, 0xECBF, 0x1FFF, 0x3FFF, 0xE001, 0xE001, 0xC001, 0xE001,\n    0xC001, 0xC001, 0x0000, 0x00FB, 0x026C, 0x0421, 0x05ED, 0x079F,\n    0x0908, 0x09FA, 0x0A44, 0x09B8, 0x0864, 0x0686, 0x0436, 0x018C,\n    0xFEA1, 0xFB8C, 0xF865, 0xF545, 0xF245, 0xEF7B, 0xED01, 0xEAEE,\n    0xE95B, 0xE85F, 0xE7F6, 0xE806, 0xE889, 0xE976, 0xEAC7, 0xEC75,\n    0xEE79, 0xF0CD, 0xF369, 0xF646, 0xF95E, 0xFCD6, 0x00CB, 0x052C,\n    0x09E4, 0x0EE1, 0x140D, 0x1956, 0x1EA8, 0x23F0, 0x291A, 0x2E13,\n    0x32C7, 0x3722, 0x3B12, 0x3E82, 0x4160, 0x4397, 0x4514, 0x452E,\n    0x437E, 0x4059, 0x3C10, 0x36F5, 0x315D, 0x2B98, 0x25FA, 0x20D6,\n    0x1C7D, 0x1943, 0x16BB, 0x1443, 0x11DD, 0x0F8F, 0x0D5B, 0x0B46,\n    0x0952, 0x0784, 0x05DE, 0x0465, 0x031C, 0x0207, 0x0129, 0x0086,\n    0x0022, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0002, 0x0008, 0x0012, 0x001D,\n    0x0029, 0x0034, 0x003E, 0x0046, 0x004A, 0x0049, 0x0042, 0x0034,\n    0x001F, 0x0000, 0xFFCE, 0xFF82, 0xFF23, 0xFEB8, 0xFE46, 0xFDD5,\n    0xFD6A, 0xFD0B, 0xFCC0, 0xFC8F, 0xFC7D, 0xFC83, 0xFC96, 0xFCB4,\n    0xFCDC, 0xFD0C, 0xFD43, 0xFD80, 0xFDC0, 0xFE04, 0xFE49, 0xFE8E,\n    0xFED2, 0xFF13, 0xFF50, 0xFF88, 0xFFB8, 0xFFE1, 0x0000, 0x0012,\n    0x0016, 0x000F, 0x0000, 0xFFE9, 0xFFCF, 0xFFB4, 0xFF9A, 0xFF85,\n    0xFF76, 0xFF71, 0xFF72, 0xFF77, 0xFF7E, 0xFF87, 0xFF92, 0xFF9E,\n    0xFFAB, 0xFFB9, 0xFFC6, 0xFFD3, 0xFFDF, 0xFFEA, 0xFFF3, 0xFFFA,\n    0xFFFF, 0x0000, 0x05B4, 0x063B, 0x069A, 0x06D7, 0x06F8, 0x0707,\n    0x0708, 0x0703, 0x0700, 0x0705, 0x071B, 0x0744, 0x0779, 0x07B5,\n    0x07F2, 0x082C, 0x085B, 0x087B, 0x0885, 0x0875, 0x0844, 0x07ED,\n    0x076A, 0x06B6, 0x0595, 0x03E7, 0x01CF, 0xFF73, 0xFCF2, 0xFA72,\n    0xF817, 0xF602, 0xF459, 0xF33E, 0xF2D5, 0xF2F3, 0xF352, 0xF3EC,\n    0xF4B9, 0xF5B3, 0xF6D2, 0xF811, 0xF968, 0xFAD1, 0xFC44, 0xFDBC,\n    0xFF30, 0x0099, 0x01F3, 0x0336, 0x045B, 0x055A, 0x062E, 0x06D5,\n    0x0755, 0x07B4, 0x07F5, 0x081E, 0x0833, 0x0839, 0x0834, 0x082A,\n    0x081E, 0x0816, 0x080C, 0x07F5, 0x07D5, 0x07AD, 0x077E, 0x074B,\n    0x0714, 0x06DC, 0x06A4, 0x066F, 0x063C, 0x0610, 0x05EA, 0x05CD,\n    0x05BA, 0x05B4, 0x0000, 0x00FB, 0x026C, 0x0421, 0x05ED, 0x079F,\n    0x0908, 0x09FA, 0x0A44, 0x09B8, 0x0864, 0x0686, 0x0436, 0x018C,\n    0xFEA1, 0xFB8C, 0xF865, 0xF545, 0xF245, 0xEF7B, 0xED01, 0xEAEE,\n    0xE95B, 0xE85F, 0xE7F6, 0xE806, 0xE889, 0xE976, 0xEAC7, 0xEC75,\n    0xEE79, 0xF0CD, 0xF369, 0xF646, 0xF95E, 0xFCD6, 0x00CB, 0x052C,\n    0x09E4, 0x0EE1, 0x140D, 0x1956, 0x1EA8, 0x23F0, 0x291A, 0x2E13,\n    0x32C7, 0x3722, 0x3B12, 0x3E82, 0x4160, 0x4397, 0x4514, 0x452E,\n    0x437E, 0x4059, 0x3C10, 0x36F5, 0x315D, 0x2B98, 0x25FA, 0x20D6,\n    0x1C7D, 0x1943, 0x16BB, 0x1443, 0x11DD, 0x0F8F, 0x0D5B, 0x0B46,\n    0x0952, 0x0784, 0x05DE, 0x0465, 0x031C, 0x0207, 0x0129, 0x0086,\n    0x0022, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0002, 0x0008, 0x0012, 0x001D,\n    0x0029, 0x0034, 0x003E, 0x0046, 0x004A, 0x0049, 0x0042, 0x0034,\n    0x001F, 0x0000, 0xFFCE, 0xFF82, 0xFF23, 0xFEB8, 0xFE46, 0xFDD5,\n    0xFD6A, 0xFD0B, 0xFCC0, 0xFC8F, 0xFC7D, 0xFC83, 0xFC96, 0xFCB4,\n    0xFCDC, 0xFD0C, 0xFD43, 0xFD80, 0xFDC0, 0xFE04, 0xFE49, 0xFE8E,\n    0xFED2, 0xFF13, 0xFF50, 0xFF88, 0xFFB8, 0xFFE1, 0x0000, 0x0012,\n    0x0016, 0x000F, 0x0000, 0xFFE9, 0xFFCF, 0xFFB4, 0xFF9A, 0xFF85,\n    0xFF76, 0xFF71, 0xFF72, 0xFF77, 0xFF7E, 0xFF87, 0xFF92, 0xFF9E,\n    0xFFAB, 0xFFB9, 0xFFC6, 0xFFD3, 0xFFDF, 0xFFEA, 0xFFF3, 0xFFFA,\n    0xFFFF, 0x0000, 0x05B4, 0x063B, 0x069A, 0x06D7, 0x06F8, 0x0707,\n    0x0708, 0x0703, 0x0700, 0x0705, 0x071B, 0x0744, 0x0779, 0x07B5,\n    0x07F2, 0x082C, 0x085B, 0x087B, 0x0885, 0x0875, 0x0844, 0x07ED,\n    0x076A, 0x06B6, 0x0595, 0x03E7, 0x01CF, 0xFF73, 0xFCF2, 0xFA72,\n    0xF817, 0xF602, 0xF459, 0xF33E, 0xF2D5, 0xF2F3, 0xF352, 0xF3EC,\n    0xF4B9, 0xF5B3, 0xF6D2, 0xF811, 0xF968, 0xFAD1, 0xFC44, 0xFDBC,\n    0xFF30, 0x0099, 0x01F3, 0x0336, 0x045B, 0x055A, 0x062E, 0x06D5,\n    0x0755, 0x07B4, 0x07F5, 0x081E, 0x0833, 0x0839, 0x0834, 0x082A,\n    0x081E, 0x0816, 0x080C, 0x07F5, 0x07D5, 0x07AD, 0x077E, 0x074B,\n    0x0714, 0x06DC, 0x06A4, 0x066F, 0x063C, 0x0610, 0x05EA, 0x05CD,\n    0x05BA, 0x05B4, 0x3E5E, 0x3E59, 0x3E54, 0x3E50, 0x3E4C, 0x3E48,\n    0x3E44, 0x3E41, 0x3E3E, 0x3E3B, 0x3E38, 0x3E35, 0x3E33, 0x3E31,\n    0x3E2F, 0x3E2D, 0x3E2B, 0x3E2A, 0x3E29, 0x3E27, 0x3E26, 0x3E26,\n    0x3E25, 0x3E24, 0x3E24, 0x3E24, 0x3E24, 0x3E24, 0x3E24, 0x3E24,\n    0x3E24, 0x3E25, 0x3E26, 0x3E26, 0x3E27, 0x3E28, 0x3E29, 0x3E2A,\n    0x3E2B, 0x3E2C, 0x3E2D, 0x3E2F, 0x3E30, 0x3E31, 0x3E33, 0x3E34,\n    0x3E36, 0x3E38, 0x3E39, 0x3E3B, 0x3E3C, 0x3E3E, 0x3E40, 0x3E41,\n    0x3E43, 0x3E45, 0x3E46, 0x3E48, 0x3E49, 0x3E4B, 0x3E4D, 0x3E4E,\n    0x3E50, 0x3E51, 0x3E52, 0x3E54, 0x3E55, 0x3E56, 0x3E57, 0x3E58,\n    0x3E59, 0x3E5A, 0x3E5B, 0x3E5C, 0x3E5C, 0x3E5D, 0x3E5D, 0x3E5E,\n    0x3E5E, 0x3E5E,\n};\n\n// 0x050061FC\nstatic const u16 monty_mole_seg5_animindex_050061FC[] = {\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0050, 0x064A,\n    0x0050, 0x055A, 0x0050, 0x05AA, 0x0050, 0x05FA,\n    0x0050, 0x046A, 0x0050, 0x04BA, 0x0050, 0x050A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0469,\n    0x0050, 0x0002, 0x0050, 0x0052, 0x0050, 0x00A2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0468,\n    0x0050, 0x00F2, 0x0050, 0x0142, 0x0050, 0x0192,\n    0x0001, 0x0465, 0x0001, 0x0466, 0x0001, 0x0467,\n    0x0050, 0x0232, 0x0050, 0x0282, 0x0050, 0x02D2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0050, 0x01E2,\n    0x0001, 0x0462, 0x0001, 0x0463, 0x0001, 0x0464,\n    0x0050, 0x0372, 0x0050, 0x03C2, 0x0050, 0x0412,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0050, 0x0322,\n};\n\n// 0x050062B0\nstatic const struct Animation monty_mole_seg5_anim_050062B0 = {\n    0,\n    0,\n    0,\n    0,\n    0x50,\n    ANIMINDEX_NUMPARTS(monty_mole_seg5_animindex_050061FC),\n    monty_mole_seg5_animvalue_050054C8,\n    monty_mole_seg5_animindex_050061FC,\n    0,\n};\n"
  },
  {
    "path": "actors/monty_mole/anims/anim_050065C0.inc.c",
    "content": "// 0x050062C8\nstatic const s16 monty_mole_seg5_animvalue_050062C8[] = {\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x3FFF, 0x8001, 0x805B, 0x8148, 0x829B,\n    0x8425, 0x85B7, 0x8724, 0x883D, 0x8912, 0x89D1, 0x8A71, 0x8AEB,\n    0x8B3A, 0x8B56, 0x8001, 0x7FAD, 0x7ED7, 0x7DAC, 0x7C59, 0x7B0E,\n    0x79F9, 0x7948, 0x790E, 0x792B, 0x797C, 0x79DF, 0x7A33, 0x7A57,\n    0x2C68, 0x2CA3, 0x2D3B, 0x2E0D, 0x2EF4, 0x2FCD, 0x3073, 0x30C2,\n    0x3096, 0x3006, 0x2F40, 0x2E77, 0x2DDA, 0x2D9C, 0x0000, 0xFF96,\n    0xFE7E, 0xFCF1, 0xFB2A, 0xF962, 0xF7D4, 0xF6B7, 0xF610, 0xF5AC,\n    0xF57B, 0xF56E, 0xF572, 0xF577, 0x0000, 0xFF9C, 0xFE95, 0xFD27,\n    0xFB8C, 0xF9FF, 0xF8BC, 0xF7FC, 0xF7E4, 0xF84B, 0xF8FB, 0xF9BC,\n    0xFA59, 0xFA99, 0xACD3, 0xAD06, 0xAD8D, 0xAE45, 0xAF10, 0xAFCC,\n    0xB05A, 0xB09A, 0xB069, 0xAFDA, 0xAF1A, 0xAE59, 0xADC3, 0xAD86,\n    0xF39B, 0xF534, 0xF957, 0xFF09, 0x054D, 0x0B2B, 0x0FA5, 0x11C0,\n    0x1081, 0x0C79, 0x06FE, 0x016B, 0xFD17, 0xFB59, 0x0000, 0xFE4F,\n    0xF9FB, 0xF424, 0xEDEB, 0xE86F, 0xE4D0, 0xE42F, 0xE84D, 0xF0AF,\n    0xFB17, 0x054A, 0x0D0C, 0x1022, 0x0000, 0x00A6, 0x023C, 0x0433,\n    0x05FF, 0x0712, 0x06E0, 0x04D9, 0xFF52, 0xF64E, 0xEBCD, 0xE1D2,\n    0xDA5D, 0xD76F, 0xD08C, 0xD2C6, 0xD88F, 0xE094, 0xE981, 0xF202,\n    0xF8C2, 0xFC6C, 0xFBF7, 0xF839, 0xF2B2, 0xECE4, 0xE84E, 0xE671,\n    0xF6DE, 0xF807, 0xFB08, 0xFF28, 0x03AE, 0x07E3, 0x0B0D, 0x0C75,\n    0x0B53, 0x080F, 0x03B4, 0xFF4E, 0xFBE6, 0xFA88, 0x0000, 0x0193,\n    0x059C, 0x0B15, 0x10F5, 0x1636, 0x19CF, 0x1AB9, 0x1777, 0x1083,\n    0x07C6, 0xFF2B, 0xF899, 0xF5FC, 0x0000, 0xFF7F, 0xFE44, 0xFCBC,\n    0xFB56, 0xFA7F, 0xFAA4, 0xFC33, 0x0079, 0x0772, 0x0F91, 0x174A,\n    0x1D0F, 0x1F53, 0xD024, 0xD280, 0xD8A7, 0xE134, 0xEAC4, 0xF3F2,\n    0xFB5B, 0xFF9A, 0xFFBB, 0xFCAB, 0xF7D3, 0xF29D, 0xEE73, 0xECBF,\n    0x1FFF, 0x3FFF, 0xE001, 0xE001, 0xC001, 0xE001, 0xC001, 0xC001,\n    0xD672, 0xD870, 0xDDAF, 0xE518, 0xED91, 0xF603, 0xFD57, 0x0271,\n    0x0535, 0x0685, 0x06CD, 0x0679, 0x05F7, 0x05B4, 0xD672, 0xD870,\n    0xDDAF, 0xE518, 0xED91, 0xF603, 0xFD57, 0x0271, 0x0535, 0x0685,\n    0x06CD, 0x0679, 0x05F7, 0x05B4, 0x3FFF, 0x3FBE, 0x3F14, 0x3E2A,\n    0x3D27, 0x3C34, 0x3B78, 0x3B1B, 0x3B43, 0x3BD7, 0x3CA5, 0x3D77,\n    0x3E1C, 0x3E5E,\n};\n\n// 0x0500650C\nstatic const u16 monty_mole_seg5_animindex_0500650C[] = {\n    0x000E, 0x0001, 0x000E, 0x000F, 0x000E, 0x001D, 0x0001, 0x0000, 0x0001, 0x002B, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x0114,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x0106,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x00F8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00F7,\n    0x000E, 0x002C, 0x000E, 0x003A, 0x000E, 0x0048,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00F6,\n    0x000E, 0x0056, 0x000E, 0x0064, 0x000E, 0x0072,\n    0x0001, 0x00F3, 0x0001, 0x00F4, 0x0001, 0x00F5,\n    0x000E, 0x008E, 0x000E, 0x009C, 0x000E, 0x00AA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x0080,\n    0x0001, 0x00F0, 0x0001, 0x00F1, 0x0001, 0x00F2,\n    0x000E, 0x00C6, 0x000E, 0x00D4, 0x000E, 0x00E2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x00B8,\n};\n\n// 0x050065C0\nstatic const struct Animation monty_mole_seg5_anim_050065C0 = {\n    0,\n    0,\n    1,\n    1,\n    0x0E,\n    ANIMINDEX_NUMPARTS(monty_mole_seg5_animindex_0500650C),\n    monty_mole_seg5_animvalue_050062C8,\n    monty_mole_seg5_animindex_0500650C,\n    0,\n};\n"
  },
  {
    "path": "actors/monty_mole/anims/anim_050065D8.inc.c",
    "content": "// 0x050065D8\nstatic const struct Animation monty_mole_seg5_anim_050065D8 = {\n    0,\n    0,\n    0,\n    0,\n    0x01,\n    ANIMINDEX_NUMPARTS(monty_mole_seg5_animindex_0500650C),\n    monty_mole_seg5_animvalue_050062C8,\n    monty_mole_seg5_animindex_0500650C,\n    0,\n};\n"
  },
  {
    "path": "actors/monty_mole/anims/anim_05006880.inc.c",
    "content": "// 0x050065F0\nstatic const s16 monty_mole_seg5_animvalue_050065F0[] = {\n    0x0000, 0x0011, 0x0007, 0xFFFE, 0xFFFA, 0xFFF9, 0xFFFB, 0xFFFE,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0003, 0x0009, 0x000F,\n    0x0017, 0x001A, 0x0013, 0x0007, 0x0000, 0xFFFE, 0xFFFE, 0xFFFF,\n    0x0000, 0x3FFF, 0x802C, 0x806E, 0x8070, 0x7F98, 0x7ED5, 0x7F0F,\n    0x7F9A, 0x8001, 0x8019, 0x8017, 0x8009, 0x8001, 0x7567, 0x7626,\n    0x76C8, 0x770E, 0x76D8, 0x75C0, 0x7456, 0x735D, 0x7316, 0x731E,\n    0x7345, 0x735D, 0x063E, 0xFE12, 0xF6D9, 0xF169, 0xEFBE, 0xF441,\n    0xFB29, 0x0000, 0x014E, 0x0129, 0x006F, 0x0000, 0x0010, 0x002C,\n    0x0071, 0x014B, 0x01EA, 0x0170, 0x0099, 0x0000, 0xFFD9, 0xFFDD,\n    0xFFF3, 0x0000, 0xF3D8, 0xF4D0, 0xF5A4, 0xF5E6, 0xF5CE, 0xF54F,\n    0xF4A5, 0xF430, 0xF40E, 0xF412, 0xF425, 0xF430, 0x8691, 0x7D88,\n    0x75CA, 0x70DB, 0x6FE7, 0x7499, 0x7B8C, 0x8069, 0x81BD, 0x8197,\n    0x80DB, 0x8069, 0x15B6, 0x1ADF, 0x1F7A, 0x21C7, 0x2003, 0x12B2,\n    0xFD58, 0xEEB8, 0xEBEA, 0xEDFD, 0xF1A7, 0xF39B, 0xE503, 0xE826,\n    0xEC9B, 0xF166, 0xF588, 0xF975, 0xFD65, 0x0000, 0x00D7, 0x00BF,\n    0x0047, 0x0000, 0x02A0, 0xFE6C, 0xF995, 0xF574, 0xF35F, 0xF5FA,\n    0xFBCB, 0x0000, 0x0103, 0x00E6, 0x0056, 0x0000, 0xF839, 0xEE2B,\n    0xE18B, 0xD5A1, 0xCDB6, 0xCD96, 0xD27C, 0xD5D8, 0xD53F, 0xD366,\n    0xD174, 0xD08C, 0x0FCF, 0x146D, 0x18B6, 0x1B12, 0x19E6, 0x0ECE,\n    0xFCE1, 0xF0C1, 0xEEE5, 0xF14F, 0xF4F9, 0xF6DE, 0x19BD, 0x1666,\n    0x11C1, 0x0CDB, 0x08C4, 0x0549, 0x0216, 0x0000, 0xFF4C, 0xFF60,\n    0xFFC4, 0x0000, 0xFDD7, 0x00F2, 0x0488, 0x079A, 0x092A, 0x074A,\n    0x0310, 0x0000, 0xFF44, 0xFF59, 0xFFC2, 0x0000, 0xFB5C, 0xF100,\n    0xE3F4, 0xD7A5, 0xCF81, 0xCF94, 0xD4E1, 0xD84A, 0xD711, 0xD443,\n    0xD16E, 0xD024, 0x1FFF, 0x3FFF, 0xE001, 0xE001, 0xC001, 0xE001,\n    0xC001, 0xC001, 0x0368, 0x02FB, 0x018B, 0xFF79, 0xFD22, 0xFAE7,\n    0xF927, 0xF843, 0xF906, 0xFB26, 0xFD5B, 0xFE5F, 0x0368, 0x02FB,\n    0x018B, 0xFF79, 0xFD22, 0xFAE7, 0xF927, 0xF843, 0xF906, 0xFB26,\n    0xFD5B, 0xFE5F, 0x3E66, 0x448D, 0x4A2F, 0x4ECE, 0x504B, 0x4BAE,\n    0x44CE, 0x3FFF, 0x3EB0, 0x3ED5, 0x3F8F, 0x3FFF,\n};\n\n// 0x050067CC\nstatic const u16 monty_mole_seg5_animindex_050067CC[] = {\n    0x0001, 0x0000, 0x000C, 0x0001, 0x000C, 0x000D, 0x0001, 0x0000, 0x0001, 0x0019, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x00E2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x00D6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x00CA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00C9,\n    0x000C, 0x001A, 0x000C, 0x0026, 0x000C, 0x0032,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00C8,\n    0x000C, 0x003E, 0x000C, 0x004A, 0x000C, 0x0056,\n    0x0001, 0x00C5, 0x0001, 0x00C6, 0x0001, 0x00C7,\n    0x000C, 0x006E, 0x000C, 0x007A, 0x000C, 0x0086,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x0062,\n    0x0001, 0x00C2, 0x0001, 0x00C3, 0x0001, 0x00C4,\n    0x000C, 0x009E, 0x000C, 0x00AA, 0x000C, 0x00B6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x0092,\n};\n\n// 0x05006880\nstatic const struct Animation monty_mole_seg5_anim_05006880 = {\n    0,\n    0,\n    0,\n    0,\n    0x0C,\n    ANIMINDEX_NUMPARTS(monty_mole_seg5_animindex_050067CC),\n    monty_mole_seg5_animvalue_050065F0,\n    monty_mole_seg5_animindex_050067CC,\n    0,\n};\n"
  },
  {
    "path": "actors/monty_mole/anims/anim_05006B10.inc.c",
    "content": "// 0x05006898\nstatic const s16 monty_mole_seg5_animvalue_05006898[] = {\n    0x0000, 0xFFE9, 0xFFEA, 0xFFEB, 0xFFEE, 0xFFF0, 0xFFF4, 0xFFF7,\n    0xFFFA, 0xFFFD, 0xFFFF, 0x0000, 0x0000, 0x3FFF, 0x8001, 0x7FFE,\n    0x7FFC, 0x7FF9, 0x7FF7, 0x7FF4, 0x7FF1, 0x7FF0, 0x7FF0, 0x7FF1,\n    0x7FF5, 0x7FFB, 0x8001, 0x7FCC, 0x7F41, 0x7E6D, 0x7D61, 0x7C2E,\n    0x7AE4, 0x7994, 0x784F, 0x7726, 0x7628, 0x7567, 0x2C68, 0x2BF4,\n    0x2AAA, 0x28A8, 0x260A, 0x22EE, 0x1F70, 0x1BAD, 0x17C3, 0x13CE,\n    0x0FEB, 0x0C38, 0x0000, 0x0000, 0xFFFF, 0xFFFD, 0xFFFC, 0xFFFA,\n    0xFFF9, 0xFFF9, 0xFFFA, 0xFFFD, 0x0000, 0x0007, 0x0000, 0xFFC6,\n    0xFF24, 0xFE2E, 0xFCF8, 0xFB94, 0xFA16, 0xF892, 0xF71B, 0xF5C5,\n    0xF4A3, 0xF3C7, 0xACD3, 0xAC63, 0xAB25, 0xA934, 0xA6AB, 0xA3A4,\n    0xA03B, 0x9C89, 0x98AB, 0x94BA, 0x90D1, 0x8D0B, 0xF39B, 0xF418,\n    0xF575, 0xF78E, 0xFA40, 0xFD65, 0x00D7, 0x0476, 0x081A, 0x0BA0,\n    0x0EE4, 0x11C0, 0x0000, 0xFF68, 0xFDC3, 0xFB4A, 0xF836, 0xF4BF,\n    0xF11E, 0xED8B, 0xEA3D, 0xE76F, 0xE557, 0xE42F, 0x0000, 0x002C,\n    0x00A4, 0x0153, 0x0225, 0x0304, 0x03DC, 0x0498, 0x0525, 0x056C,\n    0x055A, 0x04D9, 0xD08C, 0xD195, 0xD46C, 0xD8A8, 0xDDE3, 0xE3B6,\n    0xE9B8, 0xEF82, 0xF4AE, 0xF8D3, 0xFB8A, 0xFC6C, 0xF6DE, 0xF733,\n    0xF822, 0xF995, 0xFB73, 0xFDA4, 0x0010, 0x02A1, 0x053E, 0x07D0,\n    0x0A40, 0x0C75, 0x0000, 0x0094, 0x022C, 0x0492, 0x078D, 0x0AE7,\n    0x0E69, 0x11DB, 0x1506, 0x17B4, 0x19AC, 0x1AB9, 0x0000, 0xFFDE,\n    0xFF83, 0xFEFD, 0xFE5C, 0xFDB1, 0xFD0A, 0xFC78, 0xFC0A, 0xFBCF,\n    0xFBD8, 0xFC33, 0xD024, 0xD140, 0xD44A, 0xD8D4, 0xDE70, 0xE4B1,\n    0xEB27, 0xF166, 0xF6FF, 0xFB84, 0xFE87, 0xFF9A, 0x1FFF, 0x3FFF,\n    0xE001, 0xE001, 0xC001, 0xE001, 0xC001, 0xC001, 0xD672, 0xD74E,\n    0xD9B0, 0xDD4A, 0xE1D2, 0xE6FB, 0xEC78, 0xF1FD, 0xF73F, 0xFBF0,\n    0xFFC6, 0x0271, 0xD672, 0xD74E, 0xD9B0, 0xDD4A, 0xE1D2, 0xE6FB,\n    0xEC78, 0xF1FD, 0xF73F, 0xFBF0, 0xFFC6, 0x0271, 0x3FFF, 0x3FD3,\n    0x3F5E, 0x3EB3, 0x3DE6, 0x3D0B, 0x3C35, 0x3B7A, 0x3AEC, 0x3AA0,\n    0x3AA9, 0x3B1B,\n};\n\n// 0x05006A5C\nstatic const u16 monty_mole_seg5_animindex_05006A5C[] = {\n    0x0001, 0x0000, 0x000C, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x000D, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x00D6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x00CA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x00BE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00BD,\n    0x000C, 0x000E, 0x000C, 0x001A, 0x000C, 0x0026,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00BC,\n    0x000C, 0x0032, 0x000C, 0x003E, 0x000C, 0x004A,\n    0x0001, 0x00B9, 0x0001, 0x00BA, 0x0001, 0x00BB,\n    0x000C, 0x0062, 0x000C, 0x006E, 0x000C, 0x007A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x0056,\n    0x0001, 0x00B6, 0x0001, 0x00B7, 0x0001, 0x00B8,\n    0x000C, 0x0092, 0x000C, 0x009E, 0x000C, 0x00AA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x0086,\n};\n\n// 0x05006B10\nstatic const struct Animation monty_mole_seg5_anim_05006B10 = {\n    0,\n    0,\n    0,\n    0,\n    0x0C,\n    ANIMINDEX_NUMPARTS(monty_mole_seg5_animindex_05006A5C),\n    monty_mole_seg5_animvalue_05006898,\n    monty_mole_seg5_animindex_05006A5C,\n    0,\n};\n"
  },
  {
    "path": "actors/monty_mole/anims/anim_05006DB8.inc.c",
    "content": "// 0x05006B28\nstatic const s16 monty_mole_seg5_animvalue_05006B28[] = {\n    0x0000, 0x0000, 0x0014, 0x0038, 0x0063, 0x008B, 0x00A8, 0x00B7,\n    0x00BC, 0x00B7, 0x00A9, 0x008F, 0x006B, 0x0042, 0x0018, 0xFFF3,\n    0xFFFD, 0x0003, 0x0005, 0xFFFB, 0xFFE9, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x3FFF, 0x8B56, 0x8B94, 0x8B94, 0x8B60, 0x8AFE, 0x8A78,\n    0x89D4, 0x891A, 0x8853, 0x8787, 0x86BD, 0x85FD, 0x851F, 0x8404,\n    0x82C9, 0x8187, 0x805A, 0x7F58, 0x7EF1, 0x7F01, 0x7A57, 0x7A52,\n    0x7A1B, 0x79BA, 0x7937, 0x789D, 0x77F2, 0x773F, 0x768D, 0x75E6,\n    0x7550, 0x74D5, 0x7471, 0x741D, 0x73D7, 0x73A1, 0x737A, 0x7361,\n    0x73C6, 0x744B, 0x2D9C, 0x2E4C, 0x2DF3, 0x2CB5, 0x2AB8, 0x2823,\n    0x251B, 0x21C5, 0x1E48, 0x1ACA, 0x1771, 0x1461, 0x115F, 0x0E13,\n    0x0A7B, 0x0695, 0x0261, 0xFDDD, 0xF5EB, 0xEF2B, 0xF577, 0xF539,\n    0xF532, 0xF55B, 0xF5AE, 0xF623, 0xF6B3, 0xF759, 0xF80C, 0xF8C7,\n    0xF982, 0xFA36, 0xFB14, 0xFC38, 0xFD80, 0xFEC9, 0xFFF3, 0x00D9,\n    0x00B4, 0x0011, 0xFA99, 0xFA97, 0xFA68, 0xFA12, 0xF99E, 0xF914,\n    0xF87B, 0xF7DB, 0xF73B, 0xF6A3, 0xF61B, 0xF5AB, 0xF54D, 0xF4F9,\n    0xF4B2, 0xF478, 0xF44F, 0xF437, 0xF4A7, 0xF539, 0xAD86, 0xAE49,\n    0xAE0A, 0xACEF, 0xAB19, 0xA8AD, 0xA5CD, 0xA29E, 0x9F43, 0x9BDE,\n    0x9893, 0x9586, 0x9269, 0x8EDF, 0x8AF6, 0x86B8, 0x8232, 0x7D6D,\n    0x7579, 0x6ED3, 0xFB59, 0x145C, 0x0748, 0xD7CB, 0xFA88, 0xF64D,\n    0xF8C7, 0xDAFE, 0x1FFF, 0x3FFF, 0xE001, 0xE001, 0xC001, 0xE001,\n    0xC001, 0xC001, 0xC9D1, 0xC1FC, 0xB9F9, 0xB2E8, 0xADE5, 0xAC0F,\n    0xAE84, 0xB6A4, 0xC3C6, 0xD3F9, 0xE551, 0xF5DC, 0x03AB, 0x0CD1,\n    0x0F7B, 0x0F7B, 0x0F7B, 0x0F7B, 0x0F7B, 0x0F7B, 0xC9D1, 0xC1FC,\n    0xB9F9, 0xB2E8, 0xADE5, 0xAC0F, 0xAE84, 0xB6A4, 0xC3C6, 0xD3F9,\n    0xE551, 0xF5DC, 0x03AB, 0x0CD1, 0x0F7B, 0x0F7B, 0x0F7B, 0x0F7B,\n    0x0F7B, 0x0F7B, 0x88F0, 0x9527, 0xA13B, 0xAD2C, 0xB8F8, 0xC4A2,\n    0xD027, 0xDB8A, 0xE6CA, 0xF1E6, 0xFCE0, 0x07B6, 0x126A, 0x1CFC,\n    0x276C, 0x3245, 0x3D35, 0x46E8, 0x4E0C, 0x5150,\n};\n\n// 0x05006D04\nstatic const u16 monty_mole_seg5_animindex_05006D04[] = {\n    0x0001, 0x0000, 0x0014, 0x0001, 0x0014, 0x0015, 0x0001, 0x0000, 0x0001, 0x0029, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x00DA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x00C6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x00B2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00B1,\n    0x0014, 0x002A, 0x0014, 0x003E, 0x0014, 0x0052,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00B0,\n    0x0014, 0x0066, 0x0014, 0x007A, 0x0014, 0x008E,\n    0x0001, 0x00AD, 0x0001, 0x00AE, 0x0001, 0x00AF,\n    0x0001, 0x00A3, 0x0001, 0x00A4, 0x0001, 0x00A5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00A2,\n    0x0001, 0x00AA, 0x0001, 0x00AB, 0x0001, 0x00AC,\n    0x0001, 0x00A7, 0x0001, 0x00A8, 0x0001, 0x00A9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00A6,\n};\n\n// 0x05006DB8\nstatic const struct Animation monty_mole_seg5_anim_05006DB8 = {\n    0,\n    0,\n    0,\n    0,\n    0x14,\n    ANIMINDEX_NUMPARTS(monty_mole_seg5_animindex_05006D04),\n    monty_mole_seg5_animvalue_05006B28,\n    monty_mole_seg5_animindex_05006D04,\n    0,\n};\n"
  },
  {
    "path": "actors/monty_mole/anims/anim_05007230.inc.c",
    "content": "// 0x05006DD0\nstatic const s16 monty_mole_seg5_animvalue_05006DD0[] = {\n    0x0000, 0x3FFF, 0x8B56, 0x8BC2, 0x8C17, 0x8C57, 0x8C83, 0x8C9E,\n    0x8CA9, 0x8CA7, 0x8C9A, 0x8C83, 0x8C65, 0x8C42, 0x8C1B, 0x8BF3,\n    0x8BCB, 0x8BA6, 0x8B86, 0x8B6D, 0x8B5C, 0x8B56, 0x7A57, 0x7A99,\n    0x7ACE, 0x7AF5, 0x7B10, 0x7B21, 0x7B28, 0x7B26, 0x7B1E, 0x7B10,\n    0x7AFE, 0x7AE8, 0x7AD0, 0x7AB7, 0x7A9F, 0x7A88, 0x7A74, 0x7A65,\n    0x7A5A, 0x7A57, 0x2D9C, 0x2F50, 0x30A6, 0x31A6, 0x3258, 0x32C4,\n    0x32F2, 0x32EA, 0x32B4, 0x3258, 0x31DF, 0x3150, 0x30B4, 0x3012,\n    0x2F73, 0x2EDF, 0x2E5E, 0x2DF7, 0x2DB4, 0x2D9C, 0xF577, 0xF512,\n    0xF4C3, 0xF488, 0xF45F, 0xF446, 0xF43B, 0xF43D, 0xF449, 0xF45F,\n    0xF47B, 0xF49C, 0xF4C0, 0xF4E5, 0xF50A, 0xF52C, 0xF54A, 0xF562,\n    0xF571, 0xF577, 0xFA99, 0xFAD6, 0xFB06, 0xFB2A, 0xFB43, 0xFB53,\n    0xFB59, 0xFB58, 0xFB50, 0xFB43, 0xFB32, 0xFB1E, 0xFB08, 0xFAF2,\n    0xFADB, 0xFAC6, 0xFAB4, 0xFAA6, 0xFA9C, 0xFA99, 0xAD86, 0xAF36,\n    0xB089, 0xB186, 0xB236, 0xB2A1, 0xB2CE, 0xB2C6, 0xB291, 0xB236,\n    0xB1BE, 0xB131, 0xB096, 0xAFF6, 0xAF59, 0xAEC6, 0xAE46, 0xADE1,\n    0xAD9E, 0xAD86, 0xFB59, 0xFBA3, 0xFBDD, 0xFC08, 0xFC27, 0xFC39,\n    0xFC41, 0xFC3F, 0xFC36, 0xFC27, 0xFC12, 0xFBFA, 0xFBDF, 0xFBC4,\n    0xFBA9, 0xFB90, 0xFB7A, 0xFB68, 0xFB5D, 0xFB59, 0x1022, 0x0F32,\n    0x0C98, 0x0925, 0x05AA, 0x02FA, 0x01E6, 0x0223, 0x02CE, 0x03D2,\n    0x051D, 0x0698, 0x0832, 0x09D6, 0x0B6F, 0x0CEB, 0x0E35, 0x0F39,\n    0x0FE4, 0x1022, 0xD76F, 0xD802, 0xDBEE, 0xE1A9, 0xE7A8, 0xEC62,\n    0xEE4D, 0xEDEA, 0xECD8, 0xEB35, 0xE923, 0xE6C1, 0xE42F, 0xE18D,\n    0xDEFA, 0xDC98, 0xDA86, 0xD8E4, 0xD7D1, 0xD76F, 0xE671, 0xE9DE,\n    0xED47, 0xF066, 0xF2F6, 0xF4B3, 0xF556, 0xF516, 0xF463, 0xF353,\n    0xF1FA, 0xF06C, 0xEEBF, 0xED08, 0xEB5B, 0xE9CE, 0xE875, 0xE764,\n    0xE6B1, 0xE671, 0xFA88, 0xF9DE, 0xF900, 0xF7F5, 0xF6C9, 0xF585,\n    0xF433, 0xF2DB, 0xF188, 0xF043, 0xEF16, 0xEE0A, 0xED29, 0xEC7C,\n    0xEC0E, 0xEBE7, 0xEE30, 0xF338, 0xF83F, 0xFA88, 0xF5FC, 0xF7B2,\n    0xFA47, 0xFD93, 0x016A, 0x05A5, 0x0A19, 0x0E9B, 0x15F1, 0x1EC8,\n    0x22D5, 0x20E1, 0x1C8C, 0x16D2, 0x10AD, 0x0B16, 0x04FC, 0xFE0C,\n    0xF859, 0xF5FC, 0x1F53, 0x1D5B, 0x1918, 0x1334, 0x0C5D, 0x053D,\n    0xFE7F, 0xF8CF, 0xF2BB, 0xED88, 0xEDF2, 0xF545, 0x001E, 0x0C3D,\n    0x175D, 0x1F3B, 0x2255, 0x2206, 0x2057, 0x1F53, 0xECBF, 0xEEE1,\n    0xEF7B, 0xEF4E, 0xEF1B, 0xEFA7, 0xF1B1, 0xF5FD, 0x043A, 0x193F,\n    0x2585, 0x2599, 0x2175, 0x1AB4, 0x12F2, 0x0BCC, 0x0365, 0xF91F,\n    0xF06A, 0xECBF, 0x1FFF, 0x3FFF, 0xE001, 0xE001, 0xC001, 0xE001,\n    0xC001, 0xC001, 0x0000, 0x05B0, 0x0E35, 0x1802, 0x218C, 0x2948,\n    0x2DAB, 0x2D2B, 0x1FA5, 0x05A2, 0xEA95, 0xD9EF, 0xD83A, 0xDEDC,\n    0xE897, 0xF02B, 0xF552, 0xFA77, 0xFE6C, 0x0000, 0x0000, 0x009C,\n    0x0181, 0x028A, 0x038E, 0x0467, 0x04EC, 0x04F8, 0x03BA, 0x0144,\n    0xFEBE, 0xFD4F, 0xFD87, 0xFEB4, 0x0016, 0x00F0, 0x00FB, 0x00A3,\n    0x0035, 0x0000, 0x05B4, 0x0561, 0x0488, 0x0353, 0x01EF, 0x0086,\n    0xFF44, 0xFE53, 0xFDE6, 0xFDDD, 0xFDE8, 0xFDB7, 0xFCE1, 0xFBAC,\n    0xFAD1, 0xFB0A, 0xFD44, 0x00DE, 0x0439, 0x05B4, 0x0000, 0x05B0,\n    0x0E35, 0x1802, 0x218C, 0x2948, 0x2DAB, 0x2D2B, 0x1FA5, 0x05A2,\n    0xEA95, 0xD9EF, 0xD83A, 0xDEDC, 0xE897, 0xF02B, 0xF552, 0xFA77,\n    0xFE6C, 0x0000, 0x0000, 0x009C, 0x0181, 0x028A, 0x038E, 0x0467,\n    0x04EC, 0x04F8, 0x03BA, 0x0144, 0xFEBE, 0xFD4F, 0xFD87, 0xFEB4,\n    0x0016, 0x00F0, 0x00FB, 0x00A3, 0x0035, 0x0000, 0x05B4, 0x0561,\n    0x0488, 0x0353, 0x01EF, 0x0086, 0xFF44, 0xFE53, 0xFDE6, 0xFDDD,\n    0xFDE8, 0xFDB7, 0xFCE1, 0xFBAC, 0xFAD1, 0xFB0A, 0xFD44, 0x00DE,\n    0x0439, 0x05B4, 0x0000, 0xF9AB, 0xF01E, 0xE521, 0xDA7C, 0xD1F7,\n    0xCD59, 0xCE6A, 0xDEE2, 0xFE18, 0x1E3C, 0x3183, 0x3221, 0x2826,\n    0x1A90, 0x105A, 0x0A51, 0x0515, 0x0165, 0x0000, 0x0000, 0x00B8,\n    0x01D8, 0x0322, 0x045C, 0x054A, 0x05B0, 0x0554, 0x02ED, 0xFE8C,\n    0xF9F9, 0xF702, 0xF630, 0xF68B, 0xF793, 0xF8C7, 0xFA8A, 0xFCF4,\n    0xFF15, 0x0000, 0x3E5E, 0x3DB0, 0x3CC6, 0x3BC6, 0x3AD4, 0x3A17,\n    0x39B4, 0x39CF, 0x3B25, 0x3DB8, 0x4094, 0x42C8, 0x444D, 0x4590,\n    0x464D, 0x463E, 0x44B3, 0x4207, 0x3F7E, 0x3E5E,\n};\n\n// 0x0500717C\nstatic const u16 monty_mole_seg5_animindex_0500717C[] = {\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000,\n    0x0014, 0x019A, 0x0014, 0x01AE, 0x0014, 0x01C2,\n    0x0014, 0x015E, 0x0014, 0x0172, 0x0014, 0x0186,\n    0x0014, 0x0122, 0x0014, 0x0136, 0x0014, 0x014A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0121,\n    0x0014, 0x0002, 0x0014, 0x0016, 0x0014, 0x002A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0120,\n    0x0014, 0x003E, 0x0014, 0x0052, 0x0014, 0x0066,\n    0x0001, 0x011D, 0x0001, 0x011E, 0x0001, 0x011F,\n    0x0014, 0x008E, 0x0014, 0x00A2, 0x0014, 0x00B6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x007A,\n    0x0001, 0x011A, 0x0001, 0x011B, 0x0001, 0x011C,\n    0x0014, 0x00DE, 0x0014, 0x00F2, 0x0014, 0x0106,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x00CA,\n};\n\n// 0x05007230\nstatic const struct Animation monty_mole_seg5_anim_05007230 = {\n    0,\n    0,\n    0,\n    0,\n    0x14,\n    ANIMINDEX_NUMPARTS(monty_mole_seg5_animindex_0500717C),\n    monty_mole_seg5_animvalue_05006DD0,\n    monty_mole_seg5_animindex_0500717C,\n    0,\n};\n"
  },
  {
    "path": "actors/monty_mole/anims/data.inc.c",
    "content": "#include \"anim_05004FEC.inc.c\"\n#include \"anim_0500527C.inc.c\"\n#include \"anim_050054B0.inc.c\"\n#include \"anim_050062B0.inc.c\"\n#include \"anim_050065C0.inc.c\"\n#include \"anim_050065D8.inc.c\"\n#include \"anim_05006880.inc.c\"\n#include \"anim_05006B10.inc.c\"\n#include \"anim_05006DB8.inc.c\"\n#include \"anim_05007230.inc.c\"\n"
  },
  {
    "path": "actors/monty_mole/anims/table.inc.c",
    "content": "// 0x05007248\nconst struct Animation *const monty_mole_seg5_anims_05007248[] = {\n    &monty_mole_seg5_anim_05004FEC,\n    &monty_mole_seg5_anim_0500527C,\n    &monty_mole_seg5_anim_050054B0,\n    &monty_mole_seg5_anim_050062B0,\n    &monty_mole_seg5_anim_050065C0,\n    &monty_mole_seg5_anim_05006880,\n    &monty_mole_seg5_anim_05006B10,\n    &monty_mole_seg5_anim_05006DB8,\n    &monty_mole_seg5_anim_05007230,\n    &monty_mole_seg5_anim_050065D8,\n    NULL,\n    NULL,\n};\n"
  },
  {
    "path": "actors/monty_mole/geo.inc.c",
    "content": "// 0x0C000000\nconst GeoLayout monty_mole_geo[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, monty_mole_seg5_dl_050044B0),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 116, 0, 0, monty_mole_seg5_dl_05004C00),\n                    GEO_ANIMATED_PART(LAYER_ALPHA, 116, 0, 0, monty_mole_seg5_dl_05004D30),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -68, -5, -40, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, monty_mole_seg5_dl_05003C48),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -68, -5, 40, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, monty_mole_seg5_dl_05003518),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 80, 1, 78, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, monty_mole_seg5_dl_050032A0),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 80, 0, 0, monty_mole_seg5_dl_05003820),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 80, 1, -78, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, monty_mole_seg5_dl_050039D0),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 80, 0, 0, monty_mole_seg5_dl_05003F50),\n                            GEO_ASM(0, geo_update_projectile_pos_from_parent),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/monty_mole/model.inc.c",
    "content": "// Monty Mole\n\n// Unreferenced light group\nUNUSED static const Lights1 monty_mole_lights_unused1 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 monty_mole_lights_unused2 = gdSPDefLights1(\n    0x30, 0x1f, 0x00,\n    0xc3, 0x7e, 0x00, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 monty_mole_lights_unused3 = gdSPDefLights1(\n    0x05, 0x04, 0x05,\n    0x16, 0x13, 0x14, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 monty_mole_lights_unused4 = gdSPDefLights1(\n    0x07, 0x08, 0x07,\n    0x1f, 0x20, 0x1f, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 monty_mole_lights_unused5 = gdSPDefLights1(\n    0x14, 0x0b, 0x0a,\n    0x53, 0x2e, 0x28, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 monty_mole_lights_unused6 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05000970\nALIGNED8 static const Texture monty_mole_seg5_texture_05000970[] = {\n#include \"actors/monty_mole/monty_mole_cheek.rgba16.inc.c\"\n};\n\n// 0x05001170\nALIGNED8 static const Texture monty_mole_seg5_texture_05001170[] = {\n#include \"actors/monty_mole/monty_mole_eye.rgba16.inc.c\"\n};\n\n// 0x05001970\nALIGNED8 static const Texture monty_mole_seg5_texture_05001970[] = {\n#include \"actors/monty_mole/monty_mole_nose.rgba16.inc.c\"\n};\n\n// 0x05002170\nALIGNED8 static const Texture monty_mole_seg5_texture_05002170[] = {\n#include \"actors/monty_mole/monty_mole_tooth.rgba16.inc.c\"\n};\n\n// 0x05002970\nALIGNED8 static const Texture monty_mole_seg5_texture_05002970[] = {\n#include \"actors/monty_mole/monty_mole_claw.rgba16.inc.c\"\n};\n\n// 0x05003170\nstatic const Lights1 monty_mole_seg5_lights_05003170 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05003188\nstatic const Vtx monty_mole_seg5_vertex_05003188[] = {\n    {{{    85,    -12,    -77}, 0, {    -6,    778}, {0x21, 0x97, 0xc2, 0xff}}},\n    {{{   -13,     -8,     32}, 0, {   348,    972}, {0xa0, 0xc2, 0x36, 0xff}}},\n    {{{   -13,     -8,    -24}, 0, {   150,    978}, {0x99, 0x28, 0xc3, 0xff}}},\n    {{{    -3,      7,     23}, 0, {   320,    950}, {0xbd, 0x63, 0x28, 0xff}}},\n    {{{    -3,      7,    -18}, 0, {   176,    956}, {0xcf, 0x72, 0xe9, 0xff}}},\n    {{{    78,     15,    -63}, 0, {    38,    790}, {0x23, 0x6b, 0xc7, 0xff}}},\n    {{{    85,    -12,     81}, 0, {   540,    758}, {0x44, 0x3f, 0x55, 0xff}}},\n    {{{    75,      7,     58}, 0, {   458,    782}, {0x12, 0x79, 0x1e, 0xff}}},\n};\n\n// 0x05003208 - 0x050032A0\nconst Gfx monty_mole_seg5_dl_05003208[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, monty_mole_seg5_texture_05001170),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&monty_mole_seg5_lights_05003170.l, 1),\n    gsSPLight(&monty_mole_seg5_lights_05003170.a, 2),\n    gsSPVertex(monty_mole_seg5_vertex_05003188, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 2,  1,  3, 0x0,  5,  2,  4, 0x0),\n    gsSP2Triangles( 5,  0,  2, 0x0,  6,  3,  1, 0x0),\n    gsSP2Triangles( 6,  7,  3, 0x0,  7,  4,  3, 0x0),\n    gsSP2Triangles( 7,  5,  4, 0x0,  0,  6,  1, 0x0),\n    gsSP2Triangles( 5,  6,  0, 0x0,  5,  7,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050032A0 - 0x05003300\nconst Gfx monty_mole_seg5_dl_050032A0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(monty_mole_seg5_dl_05003208),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003300\nstatic const Lights1 monty_mole_seg5_lights_05003300 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05003318\nstatic const Vtx monty_mole_seg5_vertex_05003318[] = {\n    {{{    80,     10,     54}, 0, {  3144,    202}, {0x17, 0x63, 0x4a, 0xff}}},\n    {{{   133,     10,     13}, 0, {  1908,    982}, {0x77, 0xf7, 0x29, 0xff}}},\n    {{{    79,     10,    -41}, 0, {  -148,    212}, {0x11, 0x61, 0xb1, 0xff}}},\n    {{{   133,     10,    -14}, 0, {   948,    982}, {0x5f, 0xe9, 0xb1, 0xff}}},\n    {{{    79,     10,    -41}, 0, {  2864,    188}, {0x11, 0x61, 0xb1, 0xff}}},\n    {{{   133,     10,    -14}, 0, {  2014,    954}, {0x5f, 0xe9, 0xb1, 0xff}}},\n    {{{    97,    -15,    -19}, 0, {  2068,    162}, {0x1f, 0x92, 0xcc, 0xff}}},\n    {{{   133,     10,     13}, 0, {  1096,    982}, {0x77, 0xf7, 0x29, 0xff}}},\n    {{{    98,    -18,     18}, 0, {   820,    170}, {0x16, 0x8c, 0x2d, 0xff}}},\n    {{{    80,     10,     54}, 0, {  -294,    274}, {0x17, 0x63, 0x4a, 0xff}}},\n};\n\n// 0x050033B8\nstatic const Vtx monty_mole_seg5_vertex_050033B8[] = {\n    {{{    -4,     10,     36}, 0, {  1044,    680}, {0xd0, 0xda, 0x6e, 0xff}}},\n    {{{    98,    -18,     18}, 0, {   780,    984}, {0x16, 0x8c, 0x2d, 0xff}}},\n    {{{    80,     10,     54}, 0, {   896,    934}, {0x17, 0x63, 0x4a, 0xff}}},\n    {{{    79,     10,    -41}, 0, {   694,    926}, {0x11, 0x61, 0xb1, 0xff}}},\n    {{{    -4,     10,    -34}, 0, {   896,    674}, {0xd9, 0x2b, 0x90, 0xff}}},\n    {{{    97,    -15,    -19}, 0, {   700,    980}, {0x1f, 0x92, 0xcc, 0xff}}},\n    {{{   -46,     10,      1}, 0, {  1064,    552}, {0xa0, 0xae, 0xfe, 0xff}}},\n    {{{    -4,     -9,      0}, 0, {   970,    678}, {0xe1, 0x85, 0xfd, 0xff}}},\n};\n\n// 0x05003438 - 0x050034A0\nconst Gfx monty_mole_seg5_dl_05003438[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, monty_mole_seg5_texture_05002970),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&monty_mole_seg5_lights_05003300.l, 1),\n    gsSPLight(&monty_mole_seg5_lights_05003300.a, 2),\n    gsSPVertex(monty_mole_seg5_vertex_05003318, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050034A0 - 0x05003518\nconst Gfx monty_mole_seg5_dl_050034A0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, monty_mole_seg5_texture_05001170),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(monty_mole_seg5_vertex_050033B8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 4,  0,  2, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  6,  0, 0x0,  7,  6,  4, 0x0),\n    gsSP2Triangles( 5,  7,  4, 0x0,  0,  6,  7, 0x0),\n    gsSP2Triangles( 0,  7,  1, 0x0,  5,  1,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003518 - 0x05003598\nconst Gfx monty_mole_seg5_dl_05003518[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(monty_mole_seg5_dl_05003438),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(monty_mole_seg5_dl_050034A0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003598\nstatic const Lights1 monty_mole_seg5_lights_05003598 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x050035B0\nstatic const Vtx monty_mole_seg5_vertex_050035B0[] = {\n    {{{    69,    -15,     58}, 0, {  -562,    834}, {0x64, 0x03, 0x4d, 0xff}}},\n    {{{    48,     21,      0}, 0, {  1416,    262}, {0x3b, 0x6e, 0xef, 0xff}}},\n    {{{    38,     13,     47}, 0, {   -42,    224}, {0x1e, 0x6b, 0x3c, 0xff}}},\n    {{{    83,    -16,      0}, 0, {  1140,   1008}, {0x7a, 0x1e, 0xf5, 0xff}}},\n    {{{    69,    -15,    -31}, 0, {  2066,    864}, {0x3a, 0x9d, 0xcc, 0xff}}},\n    {{{     4,    -12,    -76}, 0, {  3424,    196}, {0x06, 0xe0, 0x86, 0xff}}},\n    {{{    69,    -15,    -31}, 0, {  -174,    804}, {0x3a, 0x9d, 0xcc, 0xff}}},\n    {{{    69,    -15,     58}, 0, {  2602,    774}, {0x64, 0x03, 0x4d, 0xff}}},\n    {{{     4,    -12,     82}, 0, {  3316,     82}, {0xcd, 0xa8, 0x4b, 0xff}}},\n    {{{    83,    -16,      0}, 0, {   808,    950}, {0x7a, 0x1e, 0xf5, 0xff}}},\n    {{{     4,    -12,    -76}, 0, { -1640,    128}, {0x06, 0xe0, 0x86, 0xff}}},\n    {{{     4,    -12,     82}, 0, { -1266,    142}, {0xcd, 0xa8, 0x4b, 0xff}}},\n};\n\n// 0x05003670\nstatic const Vtx monty_mole_seg5_vertex_05003670[] = {\n    {{{   -21,     -2,    -55}, 0, {  1006,    906}, {0x93, 0xd0, 0xd6, 0xff}}},\n    {{{    -3,     15,    -63}, 0, {   986,    942}, {0xd3, 0x6e, 0xd5, 0xff}}},\n    {{{     4,    -12,    -76}, 0, {  1000,    962}, {0x06, 0xe0, 0x86, 0xff}}},\n    {{{    48,     21,      0}, 0, {   762,    994}, {0x3b, 0x6e, 0xef, 0xff}}},\n    {{{    -5,      8,     58}, 0, {   748,    864}, {0xd3, 0x6f, 0x28, 0xff}}},\n    {{{   -21,     -2,     39}, 0, {   816,    848}, {0x8c, 0x2b, 0x1b, 0xff}}},\n    {{{    38,     13,     47}, 0, {   686,    950}, {0x1e, 0x6b, 0x3c, 0xff}}},\n    {{{     4,    -12,     82}, 0, {   682,    868}, {0xcd, 0xa8, 0x4b, 0xff}}},\n    {{{   -21,     -2,     39}, 0, {   836,    598}, {0x8c, 0x2b, 0x1b, 0xff}}},\n    {{{   -21,     -2,    -55}, 0, {   584,    594}, {0x93, 0xd0, 0xd6, 0xff}}},\n    {{{     4,    -12,     82}, 0, {   946,    700}, {0xcd, 0xa8, 0x4b, 0xff}}},\n    {{{     4,    -12,    -76}, 0, {   524,    694}, {0x06, 0xe0, 0x86, 0xff}}},\n};\n\n// 0x05003730 - 0x050037A8\nconst Gfx monty_mole_seg5_dl_05003730[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, monty_mole_seg5_texture_05002970),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&monty_mole_seg5_lights_05003598.l, 1),\n    gsSPLight(&monty_mole_seg5_lights_05003598.a, 2),\n    gsSPVertex(monty_mole_seg5_vertex_050035B0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  1,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 8, 10,  6, 0x0,  2, 11,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050037A8 - 0x05003820\nconst Gfx monty_mole_seg5_dl_050037A8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, monty_mole_seg5_texture_05001170),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(monty_mole_seg5_vertex_05003670, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  3,  1, 0x0,  5,  4,  1, 0x0),\n    gsSP2Triangles( 5,  1,  0, 0x0,  4,  6,  3, 0x0),\n    gsSP2Triangles( 7,  4,  5, 0x0,  6,  4,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003820 - 0x050038A0\nconst Gfx monty_mole_seg5_dl_05003820[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(monty_mole_seg5_dl_05003730),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(monty_mole_seg5_dl_050037A8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x050038A0\nstatic const Lights1 monty_mole_seg5_lights_050038A0 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x050038B8\nstatic const Vtx monty_mole_seg5_vertex_050038B8[] = {\n    {{{    -3,      7,    -22}, 0, {   234,    806}, {0xd2, 0x73, 0xe5, 0xff}}},\n    {{{    -3,      7,     19}, 0, {    80,    810}, {0xb2, 0x58, 0x2e, 0xff}}},\n    {{{    78,     15,     64}, 0, {    34,    970}, {0x11, 0x79, 0x22, 0xff}}},\n    {{{   -13,     -8,    -31}, 0, {   250,    786}, {0xa0, 0x3a, 0xc7, 0xff}}},\n    {{{   -13,     -8,     25}, 0, {    40,    792}, {0xa2, 0xbf, 0x36, 0xff}}},\n    {{{    85,    -12,     78}, 0, {    -4,    984}, {0x40, 0x25, 0x67, 0xff}}},\n    {{{    75,      7,    -57}, 0, {   480,    952}, {0x2a, 0x6a, 0xcb, 0xff}}},\n    {{{    85,    -12,    -80}, 0, {   582,    968}, {0x33, 0xa5, 0xb9, 0xff}}},\n};\n\n// 0x05003938 - 0x050039D0\nconst Gfx monty_mole_seg5_dl_05003938[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, monty_mole_seg5_texture_05001170),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&monty_mole_seg5_lights_050038A0.l, 1),\n    gsSPLight(&monty_mole_seg5_lights_050038A0.a, 2),\n    gsSPVertex(monty_mole_seg5_vertex_050038B8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 1,  0,  3, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  3,  6,  7, 0x0),\n    gsSP2Triangles( 3,  0,  6, 0x0,  4,  3,  7, 0x0),\n    gsSP2Triangles( 4,  7,  5, 0x0,  0,  2,  6, 0x0),\n    gsSP2Triangles( 5,  6,  2, 0x0,  5,  7,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050039D0 - 0x05003A30\nconst Gfx monty_mole_seg5_dl_050039D0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(monty_mole_seg5_dl_05003938),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003A30\nstatic const Lights1 monty_mole_seg5_lights_05003A30 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05003A48\nstatic const Vtx monty_mole_seg5_vertex_05003A48[] = {\n    {{{    79,     10,     42}, 0, {  -148,    212}, {0x11, 0x61, 0x4f, 0xff}}},\n    {{{   133,     10,     15}, 0, {   948,    982}, {0x5f, 0xe9, 0x4f, 0xff}}},\n    {{{   133,     10,    -12}, 0, {  1908,    982}, {0x77, 0xf7, 0xd7, 0xff}}},\n    {{{    80,     10,    -53}, 0, {  3144,    202}, {0x17, 0x63, 0xb6, 0xff}}},\n    {{{    80,     10,    -53}, 0, {  -294,    274}, {0x17, 0x63, 0xb6, 0xff}}},\n    {{{   133,     10,    -12}, 0, {  1096,    982}, {0x77, 0xf7, 0xd7, 0xff}}},\n    {{{    98,    -18,    -17}, 0, {   820,    170}, {0x16, 0x8c, 0xd3, 0xff}}},\n    {{{    97,    -15,     20}, 0, {  2068,    162}, {0x1f, 0x91, 0x34, 0xff}}},\n    {{{   133,     10,     15}, 0, {  2014,    954}, {0x5f, 0xe9, 0x4f, 0xff}}},\n    {{{    79,     10,     42}, 0, {  2864,    188}, {0x11, 0x61, 0x4f, 0xff}}},\n};\n\n// 0x05003AE8\nstatic const Vtx monty_mole_seg5_vertex_05003AE8[] = {\n    {{{    -4,     10,    -35}, 0, {   838,    786}, {0xd0, 0xdb, 0x91, 0xff}}},\n    {{{   -46,     10,      0}, 0, {   948,    720}, {0xa0, 0xae, 0x00, 0xff}}},\n    {{{    -4,     10,     35}, 0, {   970,    808}, {0xd9, 0x2b, 0x70, 0xff}}},\n    {{{    -4,     -9,      0}, 0, {   904,    798}, {0xe1, 0x85, 0x02, 0xff}}},\n    {{{    79,     10,     42}, 0, {   894,    962}, {0x11, 0x61, 0x4f, 0xff}}},\n    {{{    80,     10,    -53}, 0, {   714,    930}, {0x17, 0x63, 0xb6, 0xff}}},\n    {{{    97,    -15,     20}, 0, {   834,    986}, {0x1f, 0x91, 0x34, 0xff}}},\n    {{{    98,    -18,    -17}, 0, {   764,    974}, {0x16, 0x8c, 0xd3, 0xff}}},\n};\n\n// 0x05003B68 - 0x05003BD0\nconst Gfx monty_mole_seg5_dl_05003B68[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, monty_mole_seg5_texture_05002970),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&monty_mole_seg5_lights_05003A30.l, 1),\n    gsSPLight(&monty_mole_seg5_lights_05003A30.a, 2),\n    gsSPVertex(monty_mole_seg5_vertex_05003A48, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 5,  8,  7, 0x0,  7,  8,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003BD0 - 0x05003C48\nconst Gfx monty_mole_seg5_dl_05003BD0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, monty_mole_seg5_texture_05001170),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(monty_mole_seg5_vertex_05003AE8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  5,  0,  2, 0x0),\n    gsSP2Triangles( 2,  3,  6, 0x0,  6,  4,  2, 0x0),\n    gsSP2Triangles( 5,  7,  0, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 7,  3,  0, 0x0,  3,  7,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003C48 - 0x05003CC8\nconst Gfx monty_mole_seg5_dl_05003C48[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(monty_mole_seg5_dl_05003B68),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(monty_mole_seg5_dl_05003BD0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003CC8\nstatic const Lights1 monty_mole_seg5_lights_05003CC8 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05003CE0\nstatic const Vtx monty_mole_seg5_vertex_05003CE0[] = {\n    {{{     4,    -12,     77}, 0, {  3424,    196}, {0x06, 0xe0, 0x7a, 0xff}}},\n    {{{    69,    -15,     32}, 0, {  2066,    864}, {0x3a, 0x9d, 0x33, 0xff}}},\n    {{{    48,     21,      0}, 0, {  1416,    262}, {0x3b, 0x6e, 0x10, 0xff}}},\n    {{{    83,    -16,      0}, 0, {  1140,   1008}, {0x7a, 0x1f, 0x0a, 0xff}}},\n    {{{    38,     13,    -46}, 0, {   -42,    224}, {0x1e, 0x6b, 0xc4, 0xff}}},\n    {{{    69,    -15,    -57}, 0, {  -562,    834}, {0x64, 0x03, 0xb3, 0xff}}},\n    {{{     4,    -12,    -81}, 0, {  3368,     64}, {0xcd, 0xa8, 0xb5, 0xff}}},\n    {{{    69,    -15,    -57}, 0, {  2592,    812}, {0x64, 0x03, 0xb3, 0xff}}},\n    {{{    69,    -15,     32}, 0, {  -302,    824}, {0x3a, 0x9d, 0x33, 0xff}}},\n    {{{     4,    -12,     77}, 0, { -1800,     78}, {0x06, 0xe0, 0x7a, 0xff}}},\n    {{{    83,    -16,      0}, 0, {   714,    990}, {0x7a, 0x1f, 0x0a, 0xff}}},\n    {{{     4,    -12,    -81}, 0, { -1266,    142}, {0xcd, 0xa8, 0xb5, 0xff}}},\n};\n\n// 0x05003DA0\nstatic const Vtx monty_mole_seg5_vertex_05003DA0[] = {\n    {{{    48,     21,      0}, 0, {   700,    872}, {0x3b, 0x6e, 0x10, 0xff}}},\n    {{{    38,     13,    -46}, 0, {   818,    856}, {0x1e, 0x6b, 0xc4, 0xff}}},\n    {{{    -5,      8,    -57}, 0, {   898,    758}, {0xd3, 0x6f, 0xd8, 0xff}}},\n    {{{    -3,     15,     64}, 0, {   620,    748}, {0xd3, 0x6e, 0x2b, 0xff}}},\n    {{{     4,    -12,     77}, 0, {   582,    764}, {0x06, 0xe0, 0x7a, 0xff}}},\n    {{{   -21,     -2,     56}, 0, {   660,    708}, {0x93, 0xd0, 0x2a, 0xff}}},\n    {{{   -21,     -2,    -38}, 0, {   872,    720}, {0x8c, 0x2b, 0xe5, 0xff}}},\n    {{{     4,    -12,    -81}, 0, {   938,    784}, {0xcd, 0xa8, 0xb5, 0xff}}},\n    {{{     4,    -12,    -81}, 0, {   382,    662}, {0xcd, 0xa8, 0xb5, 0xff}}},\n    {{{   -21,     -2,     56}, 0, {   660,    550}, {0x93, 0xd0, 0x2a, 0xff}}},\n    {{{   -21,     -2,    -38}, 0, {   482,    580}, {0x8c, 0x2b, 0xe5, 0xff}}},\n    {{{     4,    -12,     77}, 0, {   680,    608}, {0x06, 0xe0, 0x7a, 0xff}}},\n};\n\n// 0x05003E60 - 0x05003ED8\nconst Gfx monty_mole_seg5_dl_05003E60[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, monty_mole_seg5_texture_05002970),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&monty_mole_seg5_lights_05003CC8.l, 1),\n    gsSPLight(&monty_mole_seg5_lights_05003CC8.a, 2),\n    gsSPVertex(monty_mole_seg5_vertex_05003CE0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  2,  5, 0x0,  2,  3,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  9,  6, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  5, 11,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003ED8 - 0x05003F50\nconst Gfx monty_mole_seg5_dl_05003ED8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, monty_mole_seg5_texture_05001170),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(monty_mole_seg5_vertex_05003DA0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 3,  0,  2, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 3,  2,  6, 0x0,  5,  3,  6, 0x0),\n    gsSP2Triangles( 6,  2,  7, 0x0,  7,  2,  1, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  9,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003F50 - 0x05003FD0\nconst Gfx monty_mole_seg5_dl_05003F50[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(monty_mole_seg5_dl_05003E60),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(monty_mole_seg5_dl_05003ED8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x05003FD0\nstatic const Lights1 monty_mole_seg5_lights_05003FD0 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05003FE8\nstatic const Vtx monty_mole_seg5_vertex_05003FE8[] = {\n    {{{   -39,     52,     94}, 0, {  1068,    880}, {0xca, 0x25, 0x6c, 0xff}}},\n    {{{    -6,     97,     52}, 0, {   806,    668}, {0xf6, 0x72, 0x35, 0xff}}},\n    {{{   -59,     66,     46}, 0, {   756,   1006}, {0x96, 0x42, 0x13, 0xff}}},\n    {{{    -6,     97,    -51}, 0, {   132,    676}, {0xf3, 0x78, 0xda, 0xff}}},\n    {{{    58,     82,    -37}, 0, {   234,    258}, {0x42, 0x60, 0xd1, 0xff}}},\n    {{{    33,     47,    -88}, 0, {   -96,    426}, {0x23, 0x2a, 0x8e, 0xff}}},\n    {{{   -39,     52,    -93}, 0, {  -136,    894}, {0xce, 0x36, 0x99, 0xff}}},\n    {{{   109,     -4,    -55}, 0, {   122,    -68}, {0x63, 0xfe, 0xb2, 0xff}}},\n    {{{   -59,     66,    -45}, 0, {   170,   1012}, {0x93, 0x33, 0xda, 0xff}}},\n    {{{    58,     82,     38}, 0, {   718,    252}, {0x3d, 0x67, 0x28, 0xff}}},\n    {{{   109,     46,      0}, 0, {   482,    -72}, {0x73, 0x35, 0x00, 0xff}}},\n    {{{    33,     47,     89}, 0, {  1044,    414}, {0x28, 0x32, 0x6d, 0xff}}},\n    {{{   109,     -4,     56}, 0, {   840,    -76}, {0x63, 0xfe, 0x4e, 0xff}}},\n};\n\n// 0x050040B8\nstatic const Vtx monty_mole_seg5_vertex_050040B8[] = {\n    {{{     5,    -97,     36}, 0, {   564,    746}, {0x1d, 0x96, 0x3f, 0xff}}},\n    {{{    33,    -45,     89}, 0, {   514,    820}, {0x1f, 0xd1, 0x71, 0xff}}},\n    {{{   -38,    -44,     92}, 0, {   512,    824}, {0xcc, 0xca, 0x65, 0xff}}},\n    {{{   109,     -4,    -55}, 0, {   474,    710}, {0x63, 0xfe, 0xb2, 0xff}}},\n    {{{   109,    -51,      0}, 0, {   520,    736}, {0x71, 0xc7, 0x00, 0xff}}},\n    {{{    59,    -84,    -30}, 0, {   552,    692}, {0x34, 0x9b, 0xc8, 0xff}}},\n    {{{    59,    -84,     31}, 0, {   552,    748}, {0x39, 0x96, 0x27, 0xff}}},\n    {{{   109,     -4,     56}, 0, {   474,    812}, {0x63, 0xfe, 0x4e, 0xff}}},\n    {{{   109,     46,      0}, 0, {   426,    786}, {0x73, 0x35, 0x00, 0xff}}},\n    {{{    33,    -45,    -88}, 0, {   514,    660}, {0x24, 0xcf, 0x91, 0xff}}},\n    {{{    33,     47,    -88}, 0, {   424,    708}, {0x23, 0x2a, 0x8e, 0xff}}},\n    {{{    33,     47,     89}, 0, {   424,    868}, {0x28, 0x32, 0x6d, 0xff}}},\n    {{{   -39,     52,     94}, 0, {   418,    874}, {0xca, 0x25, 0x6c, 0xff}}},\n    {{{   -41,    -98,     39}, 0, {   564,    748}, {0x9b, 0xc6, 0x30, 0xff}}},\n    {{{   -46,   -140,      0}, 0, {   606,    692}, {0xf2, 0x82, 0x00, 0xff}}},\n    {{{     5,    -97,    -35}, 0, {   564,    680}, {0x22, 0x92, 0xcd, 0xff}}},\n};\n\n// 0x050041B8\nstatic const Vtx monty_mole_seg5_vertex_050041B8[] = {\n    {{{   -38,    -44,    -91}, 0, {   514,    658}, {0xd2, 0xcf, 0x95, 0xff}}},\n    {{{    59,    -84,    -30}, 0, {   552,    692}, {0x34, 0x9b, 0xc8, 0xff}}},\n    {{{     5,    -97,    -35}, 0, {   564,    680}, {0x22, 0x92, 0xcd, 0xff}}},\n    {{{    33,    -45,    -88}, 0, {   514,    660}, {0x24, 0xcf, 0x91, 0xff}}},\n    {{{    33,     47,    -88}, 0, {   424,    708}, {0x23, 0x2a, 0x8e, 0xff}}},\n    {{{   -39,     52,    -93}, 0, {   420,    706}, {0xce, 0x36, 0x99, 0xff}}},\n    {{{   -41,    -98,    -38}, 0, {   566,    678}, {0xa4, 0xc2, 0xc4, 0xff}}},\n    {{{   -67,    -12,    -40}, 0, {   482,    720}, {0x84, 0xf3, 0xee, 0xff}}},\n    {{{   -59,     66,    -45}, 0, {   406,    756}, {0x93, 0x33, 0xda, 0xff}}},\n    {{{     5,    -97,     36}, 0, {   564,    746}, {0x1d, 0x96, 0x3f, 0xff}}},\n    {{{   -46,   -140,      0}, 0, {   606,    692}, {0xf2, 0x82, 0x00, 0xff}}},\n    {{{   -41,    -98,     39}, 0, {   564,    748}, {0x9b, 0xc6, 0x30, 0xff}}},\n    {{{   -59,     66,     46}, 0, {   406,    838}, {0x96, 0x42, 0x13, 0xff}}},\n    {{{   -38,    -44,     92}, 0, {   512,    824}, {0xcc, 0xca, 0x65, 0xff}}},\n    {{{   -67,    -12,     41}, 0, {   482,    794}, {0x86, 0xf5, 0x20, 0xff}}},\n    {{{   -39,     52,     94}, 0, {   418,    874}, {0xca, 0x25, 0x6c, 0xff}}},\n};\n\n// 0x050042B8 - 0x05004368\nconst Gfx monty_mole_seg5_dl_050042B8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, monty_mole_seg5_texture_05000970),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&monty_mole_seg5_lights_05003FD0.l, 1),\n    gsSPLight(&monty_mole_seg5_lights_05003FD0.a, 2),\n    gsSPVertex(monty_mole_seg5_vertex_05003FE8, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  7,  5,  4, 0x0),\n    gsSP2Triangles( 3,  6,  8, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  8, 0x0,  3,  1,  9, 0x0),\n    gsSP2Triangles( 3,  9,  4, 0x0,  4, 10,  7, 0x0),\n    gsSP2Triangles(10,  4,  9, 0x0,  9, 11, 12, 0x0),\n    gsSP2Triangles(12, 10,  9, 0x0, 11,  9,  1, 0x0),\n    gsSP1Triangle(11,  1,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004368 - 0x050044B0\nconst Gfx monty_mole_seg5_dl_05004368[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, monty_mole_seg5_texture_05001170),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(monty_mole_seg5_vertex_050040B8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  4,  7, 0x0,  4,  3,  8, 0x0),\n    gsSP2Triangles( 8,  7,  4, 0x0,  4,  6,  5, 0x0),\n    gsSP2Triangles( 9, 10,  3, 0x0,  5,  9,  3, 0x0),\n    gsSP2Triangles( 7,  1,  6, 0x0,  7, 11,  1, 0x0),\n    gsSP2Triangles(12,  2,  1, 0x0, 12,  1, 11, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  0, 13, 14, 0x0),\n    gsSP2Triangles(15,  6,  0, 0x0, 15,  5,  6, 0x0),\n    gsSPVertex(monty_mole_seg5_vertex_050041B8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  0,  5,  4, 0x0),\n    gsSP2Triangles( 6,  7,  0, 0x0,  0,  7,  8, 0x0),\n    gsSP2Triangles( 0,  2,  6, 0x0,  0,  8,  5, 0x0),\n    gsSP2Triangles( 2,  9, 10, 0x0, 10,  6,  2, 0x0),\n    gsSP2Triangles( 6, 10, 11, 0x0, 11,  7,  6, 0x0),\n    gsSP2Triangles( 7, 12,  8, 0x0, 13, 14, 11, 0x0),\n    gsSP2Triangles(11,  9, 13, 0x0, 15, 14, 13, 0x0),\n    gsSP2Triangles( 7, 14, 12, 0x0, 11, 14,  7, 0x0),\n    gsSP1Triangle(15, 12, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050044B0 - 0x05004518\nconst Gfx monty_mole_seg5_dl_050044B0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(monty_mole_seg5_dl_050042B8),\n    gsSPDisplayList(monty_mole_seg5_dl_05004368),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004518\nstatic const Lights1 monty_mole_seg5_lights_05004518 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05004530\nstatic const Vtx monty_mole_seg5_vertex_05004530[] = {\n    {{{    48,    140,      0}, 0, {   474,    386}, {0x1b, 0x7c, 0x00, 0xff}}},\n    {{{    57,    101,      0}, 0, {   472,    156}, {0x5e, 0x54, 0x00, 0xff}}},\n    {{{    34,     99,    -34}, 0, {    96,    420}, {0x23, 0x56, 0xaa, 0xff}}},\n    {{{     2,    111,     11}, 0, {   600,    742}, {0xc9, 0x65, 0x34, 0xff}}},\n    {{{     2,    111,    -10}, 0, {   352,    764}, {0xbf, 0x63, 0xd4, 0xff}}},\n    {{{    34,     99,     35}, 0, {   852,    352}, {0x23, 0x56, 0x55, 0xff}}},\n};\n\n// 0x05004590\nstatic const Vtx monty_mole_seg5_vertex_05004590[] = {\n    {{{    34,     99,    -34}, 0, {   404,    956}, {0x23, 0x56, 0xaa, 0xff}}},\n    {{{    57,    101,      0}, 0, {  -182,    680}, {0x5e, 0x54, 0x00, 0xff}}},\n    {{{   100,     66,    -27}, 0, {   244,    -20}, {0x53, 0x52, 0xd0, 0xff}}},\n    {{{    63,     34,    -76}, 0, {  1210,    238}, {0x3c, 0x1f, 0x96, 0xff}}},\n    {{{    34,     99,     35}, 0, {   334,    944}, {0x23, 0x56, 0x55, 0xff}}},\n    {{{    63,     34,     77}, 0, {  1304,    266}, {0x3c, 0x2c, 0x66, 0xff}}},\n    {{{   100,     66,     28}, 0, {   306,     26}, {0x5a, 0x4e, 0x28, 0xff}}},\n    {{{    57,    101,      0}, 0, {  -212,    636}, {0x5e, 0x54, 0x00, 0xff}}},\n    {{{   100,     66,     28}, 0, {   288,    356}, {0x5a, 0x4e, 0x28, 0xff}}},\n    {{{   100,     66,    -27}, 0, {   176,    356}, {0x53, 0x52, 0xd0, 0xff}}},\n    {{{    57,    101,      0}, 0, {   206,    400}, {0x5e, 0x54, 0x00, 0xff}}},\n    {{{   118,     28,    -28}, 0, {   204,    308}, {0x77, 0x1b, 0xdf, 0xff}}},\n    {{{   118,     28,     29}, 0, {   318,    308}, {0x6d, 0x17, 0x3b, 0xff}}},\n    {{{    63,     34,     77}, 0, {   408,    316}, {0x3c, 0x2c, 0x66, 0xff}}},\n    {{{    63,     34,    -76}, 0, {   102,    316}, {0x3c, 0x1f, 0x96, 0xff}}},\n    {{{   118,    -22,     29}, 0, {   356,    246}, {0x71, 0xcf, 0x1b, 0xff}}},\n};\n\n// 0x05004690\nstatic const Vtx monty_mole_seg5_vertex_05004690[] = {\n    {{{   118,     28,    -28}, 0, {   204,    308}, {0x77, 0x1b, 0xdf, 0xff}}},\n    {{{   118,    -22,     29}, 0, {   356,    246}, {0x71, 0xcf, 0x1b, 0xff}}},\n    {{{   118,    -22,    -28}, 0, {   240,    246}, {0x6b, 0xdc, 0xc8, 0xff}}},\n    {{{    63,     34,    -76}, 0, {   102,    316}, {0x3c, 0x1f, 0x96, 0xff}}},\n    {{{    71,    -36,     77}, 0, {   462,    228}, {0x3e, 0xe2, 0x6a, 0xff}}},\n    {{{   118,     28,     29}, 0, {   318,    308}, {0x6d, 0x17, 0x3b, 0xff}}},\n    {{{    63,     34,     77}, 0, {   408,    316}, {0x3c, 0x2c, 0x66, 0xff}}},\n    {{{    -4,    -80,     47}, 0, {   434,    174}, {0xd6, 0x8d, 0x1e, 0xff}}},\n    {{{    -7,    -37,     94}, 0, {   496,    228}, {0xe5, 0xc1, 0x6a, 0xff}}},\n    {{{   -35,    -41,     55}, 0, {   422,    222}, {0x91, 0xdf, 0x32, 0xff}}},\n    {{{     0,     44,     94}, 0, {   436,    330}, {0xe7, 0x30, 0x72, 0xff}}},\n    {{{    69,    -67,     40}, 0, {   412,    190}, {0x33, 0x97, 0x30, 0xff}}},\n    {{{    -7,    -37,    -93}, 0, {   122,    228}, {0xd9, 0xdf, 0x8d, 0xff}}},\n    {{{     0,     44,    -93}, 0, {    60,    330}, {0xf0, 0x40, 0x94, 0xff}}},\n    {{{    69,    -67,    -39}, 0, {   252,    190}, {0x3a, 0x93, 0xe8, 0xff}}},\n    {{{    -4,    -80,    -46}, 0, {   248,    174}, {0xe6, 0x91, 0xca, 0xff}}},\n};\n\n// 0x05004790\nstatic const Vtx monty_mole_seg5_vertex_05004790[] = {\n    {{{   -35,    -41,    -54}, 0, {   202,    222}, {0x8c, 0xd5, 0xe7, 0xff}}},\n    {{{    -4,    -80,    -46}, 0, {   248,    174}, {0xe6, 0x91, 0xca, 0xff}}},\n    {{{    -4,    -80,     47}, 0, {   434,    174}, {0xd6, 0x8d, 0x1e, 0xff}}},\n    {{{   -35,    -41,     55}, 0, {   422,    222}, {0x91, 0xdf, 0x32, 0xff}}},\n    {{{   118,    -22,     29}, 0, {   356,    246}, {0x71, 0xcf, 0x1b, 0xff}}},\n    {{{    69,    -67,    -39}, 0, {   252,    190}, {0x3a, 0x93, 0xe8, 0xff}}},\n    {{{   118,    -22,    -28}, 0, {   240,    246}, {0x6b, 0xdc, 0xc8, 0xff}}},\n    {{{    71,    -36,    -76}, 0, {   156,    228}, {0x37, 0xc8, 0x9d, 0xff}}},\n    {{{    63,     34,    -76}, 0, {   102,    316}, {0x3c, 0x1f, 0x96, 0xff}}},\n    {{{    -7,    -37,    -93}, 0, {   122,    228}, {0xd9, 0xdf, 0x8d, 0xff}}},\n};\n\n// 0x05004830\nstatic const Vtx monty_mole_seg5_vertex_05004830[] = {\n    {{{     2,    111,    -10}, 0, {   898,    558}, {0xbf, 0x63, 0xd4, 0xff}}},\n    {{{     0,     44,    -93}, 0, {    -8,    556}, {0xf0, 0x40, 0x94, 0xff}}},\n    {{{   -36,     61,    -57}, 0, {   302,    130}, {0x97, 0x29, 0xc8, 0xff}}},\n    {{{    34,     99,    -34}, 0, {   696,    928}, {0x23, 0x56, 0xaa, 0xff}}},\n    {{{     0,     44,     94}, 0, {   940,    652}, {0xe7, 0x30, 0x72, 0xff}}},\n    {{{     2,    111,     11}, 0, {   110,    590}, {0xc9, 0x65, 0x34, 0xff}}},\n    {{{   -36,     61,     58}, 0, {   714,    246}, {0x8f, 0x2f, 0x20, 0xff}}},\n    {{{    34,     99,     35}, 0, {   244,    938}, {0x23, 0x56, 0x55, 0xff}}},\n    {{{    63,     34,     77}, 0, {   764,   1264}, {0x3c, 0x2c, 0x66, 0xff}}},\n    {{{    63,     34,    -76}, 0, {    82,   1240}, {0x3c, 0x1f, 0x96, 0xff}}},\n    {{{    -7,    -37,    -93}, 0, {    60,   1826}, {0xd9, 0xdf, 0x8d, 0xff}}},\n    {{{   -35,    -41,    -54}, 0, {   244,   1890}, {0x8c, 0xd5, 0xe7, 0xff}}},\n    {{{   -36,     61,    -57}, 0, {   186,    412}, {0x97, 0x29, 0xc8, 0xff}}},\n    {{{     0,     44,    -93}, 0, {    20,    646}, {0xf0, 0x40, 0x94, 0xff}}},\n    {{{   -36,     61,     58}, 0, {   742,    440}, {0x8f, 0x2f, 0x20, 0xff}}},\n    {{{   -35,    -41,     55}, 0, {   772,   1916}, {0x91, 0xdf, 0x32, 0xff}}},\n};\n\n// 0x05004930\nstatic const Vtx monty_mole_seg5_vertex_05004930[] = {\n    {{{     0,     44,     94}, 0, {   922,    692}, {0xe7, 0x30, 0x72, 0xff}}},\n    {{{   -35,    -41,     55}, 0, {   772,   1916}, {0x91, 0xdf, 0x32, 0xff}}},\n    {{{    -7,    -37,     94}, 0, {   952,   1870}, {0xe5, 0xc1, 0x6a, 0xff}}},\n    {{{   -36,     61,     58}, 0, {   742,    440}, {0x8f, 0x2f, 0x20, 0xff}}},\n};\n\n// 0x05004970\nstatic const Vtx monty_mole_seg5_vertex_05004970[] = {\n    {{{   -36,     61,     58}, 0, {     0,      0}, {0x8f, 0x2f, 0x20, 0xff}}},\n    {{{     2,    111,     11}, 0, {     0,      0}, {0xc9, 0x65, 0x34, 0xff}}},\n    {{{     2,    111,    -10}, 0, {     0,      0}, {0xbf, 0x63, 0xd4, 0xff}}},\n    {{{   -36,     61,    -57}, 0, {     0,      0}, {0x97, 0x29, 0xc8, 0xff}}},\n};\n\n// 0x050049B0 - 0x05004A10\nconst Gfx monty_mole_seg5_dl_050049B0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, monty_mole_seg5_texture_05001970),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&monty_mole_seg5_lights_05004518.l, 1),\n    gsSPLight(&monty_mole_seg5_lights_05004518.a, 2),\n    gsSPVertex(monty_mole_seg5_vertex_05004530, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 0,  3,  5, 0x0,  5,  1,  0, 0x0),\n    gsSP1Triangle( 2,  4,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004A10 - 0x05004B50\nconst Gfx monty_mole_seg5_dl_05004A10[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, monty_mole_seg5_texture_05001170),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(monty_mole_seg5_vertex_05004590, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  8, 12, 0x0),\n    gsSP2Triangles(12,  8, 13, 0x0, 11,  9,  8, 0x0),\n    gsSP2Triangles(14,  9, 11, 0x0, 11, 12, 15, 0x0),\n    gsSPVertex(monty_mole_seg5_vertex_05004690, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  1,  5, 0x0,  4,  5,  6, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0, 10,  8,  4, 0x0),\n    gsSP2Triangles( 8,  7, 11, 0x0,  8, 11,  4, 0x0),\n    gsSP2Triangles( 4, 11,  1, 0x0, 10,  4,  6, 0x0),\n    gsSP2Triangles(12, 13,  3, 0x0,  7, 14, 11, 0x0),\n    gsSP2Triangles( 1, 11, 14, 0x0,  7, 15, 14, 0x0),\n    gsSPVertex(monty_mole_seg5_vertex_05004790, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 7,  5,  1, 0x0,  8,  6,  7, 0x0),\n    gsSP2Triangles( 9,  8,  7, 0x0,  7,  1,  9, 0x0),\n    gsSP1Triangle( 9,  1,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004B50 - 0x05004BE0\nconst Gfx monty_mole_seg5_dl_05004B50[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, monty_mole_seg5_texture_05000970),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(monty_mole_seg5_vertex_05004830, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  5,  4, 0x0),\n    gsSP2Triangles( 4,  8,  7, 0x0,  3,  9,  1, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0, 11, 15, 14, 0x0),\n    gsSPVertex(monty_mole_seg5_vertex_05004930, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004BE0 - 0x05004C00\nconst Gfx monty_mole_seg5_dl_05004BE0[] = {\n    gsSPVertex(monty_mole_seg5_vertex_05004970, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004C00 - 0x05004C90\nconst Gfx monty_mole_seg5_dl_05004C00[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(monty_mole_seg5_dl_050049B0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(monty_mole_seg5_dl_05004A10),\n    gsSPDisplayList(monty_mole_seg5_dl_05004B50),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(monty_mole_seg5_dl_05004BE0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004C90\nstatic const Lights1 monty_mole_seg5_lights_05004C90 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05004CA8\nstatic const Vtx monty_mole_seg5_vertex_05004CA8[] = {\n    {{{     3,     99,    -25}, 0, {  -154,    -14}, {0xed, 0x7d, 0x00, 0xff}}},\n    {{{   -42,     92,    -12}, 0, {   160,    980}, {0xed, 0x7d, 0x00, 0xff}}},\n    {{{   -42,     92,     13}, 0, {   800,    978}, {0xed, 0x7d, 0x00, 0xff}}},\n    {{{     3,     99,     26}, 0, {  1092,    -18}, {0xed, 0x7d, 0x00, 0xff}}},\n};\n\n// 0x05004CE8 - 0x05004D30\nconst Gfx monty_mole_seg5_dl_05004CE8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, monty_mole_seg5_texture_05002170),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&monty_mole_seg5_lights_05004C90.l, 1),\n    gsSPLight(&monty_mole_seg5_lights_05004C90.a, 2),\n    gsSPVertex(monty_mole_seg5_vertex_05004CA8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05004D30 - 0x05004DA0\nconst Gfx monty_mole_seg5_dl_05004D30[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(monty_mole_seg5_dl_05004CE8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/monty_mole_hole/model.inc.c",
    "content": "// Monty Mole Hole\n\n// 0x05000000\nstatic const Vtx monty_mole_hole_seg5_vertex_05000000[] = {\n    {{{   -40,      0,    -40}, 0, {     0,    992}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -40,      0,     40}, 0, {   992,    992}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    40,      0,     40}, 0, {   992,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    40,      0,    -40}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x05000040\nALIGNED8 static const Texture monty_mole_hole_seg5_texture_05000040[] = {\n#include \"actors/monty_mole_hole/monty_mole_hole.ia16.inc.c\"\n};\n\n// 0x05000840 - 0x050008D8\nconst Gfx monty_mole_hole_seg5_dl_05000840[] = {\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsDPLoadTextureBlock(monty_mole_hole_seg5_texture_05000040, G_IM_FMT_IA, G_IM_SIZ_16b, 32, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 5, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsSPVertex(monty_mole_hole_seg5_vertex_05000000, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/mr_i_eyeball/geo.inc.c",
    "content": "// 0x0D000000\nconst GeoLayout mr_i_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x9B, 200),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, mr_i_eyeball_seg6_dl_06002080),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/mr_i_eyeball/model.inc.c",
    "content": "// Mr I (white eyeball)\n\n// 0x06000000\nstatic const Vtx mr_i_eyeball_seg6_vertex_06000000[] = {\n    {{{  -100,      0,      0}, 0, {     0,   2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,      0}, 0, {   992,   2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    200,      0}, 0, {   992,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -100,    200,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,      0}, 0, {     0,   2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   100,      0,      0}, 0, {   992,   2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   100,    200,      0}, 0, {   992,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    200,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x06000080\nALIGNED8 static const Texture mr_i_eyeball_seg6_texture_06000080[] = {\n#include \"actors/mr_i_eyeball/mr_i_eyeball_left_side.rgba16.inc.c\"\n};\n\n// 0x06001080\nALIGNED8 static const Texture mr_i_eyeball_seg6_texture_06001080[] = {\n#include \"actors/mr_i_eyeball/mr_i_eyeball_right_side.rgba16.inc.c\"\n};\n\n// 0x06002080 - 0x06002128\nconst Gfx mr_i_eyeball_seg6_dl_06002080[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsSPVertex(mr_i_eyeball_seg6_vertex_06000000, 8, 0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mr_i_eyeball_seg6_texture_06000080),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mr_i_eyeball_seg6_texture_06001080),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/mr_i_iris/geo.inc.c",
    "content": "// 0x0D00001C\nconst GeoLayout mr_i_iris_geo[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_SWITCH_CASE(20, geo_switch_anim_state),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, mr_i_iris_seg6_dl_060041D8),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, mr_i_iris_seg6_dl_060041F0),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, mr_i_iris_seg6_dl_06004208),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, mr_i_iris_seg6_dl_06004220),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, mr_i_iris_seg6_dl_06004208),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, mr_i_iris_seg6_dl_060041F0),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, mr_i_iris_seg6_dl_060041D8),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, mr_i_iris_seg6_dl_060041D8),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, mr_i_iris_seg6_dl_060041D8),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, mr_i_iris_seg6_dl_060041F0),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, mr_i_iris_seg6_dl_06004208),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, mr_i_iris_seg6_dl_06004220),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, mr_i_iris_seg6_dl_06004208),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, mr_i_iris_seg6_dl_060041F0),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, mr_i_iris_seg6_dl_060041D8),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, mr_i_iris_seg6_dl_060041D8),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, mr_i_iris_seg6_dl_060041D8),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, mr_i_iris_seg6_dl_060041D8),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, mr_i_iris_seg6_dl_060041D8),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, mr_i_iris_seg6_dl_060041D8),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/mr_i_iris/model.inc.c",
    "content": "// Mr I (Iris)\n\n// 0x06002130\nstatic const Vtx mr_i_iris_seg6_vertex_06002130[] = {\n    {{{   -50,    -50,      0}, 0, {     0,    992}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    50,    -50,      0}, 0, {   992,    992}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    50,     50,      0}, 0, {   992,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -50,     50,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x06002170\nALIGNED8 static const Texture mr_i_iris_seg6_texture_06002170[] = {\n#include \"actors/mr_i_iris/mr_i_iris_open.rgba16.inc.c\"\n};\n\n// 0x06002970\nALIGNED8 static const Texture mr_i_iris_seg6_texture_06002970[] = {\n#include \"actors/mr_i_iris/mr_i_iris_mostly_open.rgba16.inc.c\"\n};\n\n// 0x06003170\nALIGNED8 static const Texture mr_i_iris_seg6_texture_06003170[] = {\n#include \"actors/mr_i_iris/mr_i_iris_mostly_closed.rgba16.inc.c\"\n};\n\n// 0x06003970\nALIGNED8 static const Texture mr_i_iris_seg6_texture_06003970[] = {\n#include \"actors/mr_i_iris/mr_i_iris_closed.rgba16.inc.c\"\n};\n\n// 0x06004170 - 0x060041D8\nconst Gfx mr_i_iris_seg6_dl_06004170[] = {\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPVertex(mr_i_iris_seg6_vertex_06002130, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x060041D8 - 0x060041F0\nconst Gfx mr_i_iris_seg6_dl_060041D8[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mr_i_iris_seg6_texture_06002170),\n    gsSPBranchList(mr_i_iris_seg6_dl_06004170),\n};\n\n// 0x060041F0 - 0x06004208\nconst Gfx mr_i_iris_seg6_dl_060041F0[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mr_i_iris_seg6_texture_06002970),\n    gsSPBranchList(mr_i_iris_seg6_dl_06004170),\n};\n\n// 0x06004208 - 0x06004220\nconst Gfx mr_i_iris_seg6_dl_06004208[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mr_i_iris_seg6_texture_06003170),\n    gsSPBranchList(mr_i_iris_seg6_dl_06004170),\n};\n\n// 0x06004220 - 0x06004238\nconst Gfx mr_i_iris_seg6_dl_06004220[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mr_i_iris_seg6_texture_06003970),\n    gsSPBranchList(mr_i_iris_seg6_dl_06004170),\n};\n"
  },
  {
    "path": "actors/mushroom_1up/geo.inc.c",
    "content": "// 0x16000E84\nconst GeoLayout mushroom_1up_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xB4, 80),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, mushroom_1up_seg3_dl_0302A660),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/mushroom_1up/model.inc.c",
    "content": "// Mushroom 1-Up\n\n// 0x030295E8\nstatic const Vtx mushroom_1up_seg3_vertex_030295E8[] = {\n    {{{    31,     31,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -30,     31,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -30,    -30,      0}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    31,    -30,      0}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x03029628\nALIGNED8 static const Texture mushroom_1up_seg3_texture_03029628[] = {\n#include \"actors/mushroom_1up/1-up_mushroom.rgba16.inc.c\"\n};\n\n// 0x0302A628 - 0x0302A660\nconst Gfx mushroom_1up_seg3_dl_0302A628[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mushroom_1up_seg3_texture_03029628),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(mushroom_1up_seg3_vertex_030295E8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0302A660 - 0x0302A6D0\nconst Gfx mushroom_1up_seg3_dl_0302A660[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(mushroom_1up_seg3_dl_0302A628),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/number/geo.inc.c",
    "content": "// 0x16000E14\nconst GeoLayout number_geo[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_SWITCH_CASE(10, geo_switch_anim_state),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, dl_billboard_num_0),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, dl_billboard_num_1),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, dl_billboard_num_2),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, dl_billboard_num_3),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, dl_billboard_num_4),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, dl_billboard_num_5),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, dl_billboard_num_6),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, dl_billboard_num_7),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, dl_billboard_num_8),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, dl_billboard_num_9),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/peach/anims/anim_0500C638.inc.c",
    "content": "// 0x0500A128\nstatic const s16 peach_seg5_animvalue_0500A128[] = {\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0002, 0x0002,\n    0x0002, 0x0003, 0x0003, 0x0004, 0x0004, 0x0004, 0x0005, 0x0005,\n    0x0006, 0x0006, 0x0007, 0x0007, 0x0008, 0x0008, 0x0009, 0x0009,\n    0x0009, 0x000A, 0x000A, 0x000B, 0x000B, 0x000C, 0x000C, 0x000D,\n    0x000D, 0x000E, 0x000E, 0x000E, 0x000F, 0x000F, 0x0010, 0x0010,\n    0x0010, 0x0011, 0x0011, 0x0011, 0x0011, 0x0012, 0x0012, 0x0012,\n    0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012,\n    0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0011, 0x0011, 0x0011,\n    0x0010, 0x0010, 0x000F, 0x000F, 0x000E, 0x000E, 0x000D, 0x000C,\n    0x000A, 0x0008, 0x0006, 0x0003, 0x0000, 0xFFFD, 0xFFF9, 0xFFF5,\n    0xFFF0, 0xFFEB, 0xFFE6, 0xFFE1, 0xFFDC, 0xFFD6, 0xFFD0, 0xFFCA,\n    0xFFC4, 0xFFBE, 0xFFB7, 0xFFB1, 0xFFAA, 0x015E, 0x015E, 0x015E,\n    0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E,\n    0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E,\n    0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E,\n    0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E,\n    0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E,\n    0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015D, 0x015D,\n    0x015D, 0x015D, 0x015D, 0x015D, 0x015D, 0x015D, 0x015E, 0x015E,\n    0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E,\n    0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E,\n    0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015F, 0x015F, 0x015F,\n    0x0160, 0x0161, 0x0162, 0x0163, 0x0163, 0x0164, 0x0164, 0x0165,\n    0x0165, 0x0165, 0x0164, 0x0163, 0x0162, 0x0161, 0x0160, 0x015F,\n    0x015F, 0xFFD9, 0xFFD9, 0xFFD9, 0xFFDA, 0xFFDA, 0xFFDA, 0xFFDA,\n    0xFFDA, 0xFFDA, 0xFFDA, 0xFFDA, 0xFFDA, 0xFFDA, 0xFFDA, 0xFFDA,\n    0xFFDA, 0xFFDA, 0xFFDA, 0xFFDA, 0xFFDA, 0xFFDA, 0xFFDB, 0xFFDB,\n    0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB,\n    0xFFDB, 0xFFDC, 0xFFDC, 0xFFDC, 0xFFDC, 0xFFDC, 0xFFDC, 0xFFDC,\n    0xFFDC, 0xFFDC, 0xFFDC, 0xFFDC, 0xFFDC, 0xFFDC, 0xFFDC, 0xFFDC,\n    0xFFDC, 0xFFDC, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFDD,\n    0xFFDD, 0xFFDD, 0xFFDC, 0xFFDC, 0xFFDC, 0xFFDC, 0xFFDC, 0xFFDC,\n    0xFFDC, 0xFFDC, 0xFFDC, 0xFFDC, 0xFFDC, 0xFFDC, 0xFFDB, 0xFFDB,\n    0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDA, 0xFFDA, 0xFFDA, 0xFFDA,\n    0xFFD9, 0xFFD9, 0xFFD9, 0xFFDA, 0xFFDA, 0xFFDB, 0xFFDB, 0xFFDC,\n    0xFFDD, 0xFFDE, 0xFFDF, 0xFFDF, 0xFFE0, 0xFFE1, 0xFFE2, 0xFFE2,\n    0xFFE2, 0xFFE2, 0xFFE2, 0xFFE2, 0xFFE1, 0xC50F, 0x3FFA, 0xC50F,\n    0xFEB4, 0xFE94, 0xFE3B, 0xFDB0, 0xFCFA, 0xFC22, 0xFB2F, 0xFA2A,\n    0xF919, 0xF804, 0xF6F4, 0xF5EF, 0xF4FF, 0xF42A, 0xF378, 0xF2F1,\n    0xF29C, 0xF283, 0xF2AB, 0xF30B, 0xF390, 0xF437, 0xF4FD, 0xF5DF,\n    0xF6DB, 0xF7EC, 0xF910, 0xFA44, 0xFB84, 0xFCCE, 0xFE1F, 0xFF74,\n    0x00C8, 0x021A, 0x0367, 0x04AB, 0x05E3, 0x070D, 0x0824, 0x0927,\n    0x0A12, 0x0AE2, 0x0B9F, 0x0C56, 0x0D04, 0x0DAB, 0x0E4A, 0x0EE1,\n    0x0F6F, 0x0FF4, 0x1070, 0x10E2, 0x114B, 0x11AA, 0x11FF, 0x1249,\n    0x1288, 0x12BD, 0x12E6, 0x1304, 0x1317, 0x131D, 0x130D, 0x12E2,\n    0x129C, 0x1241, 0x11D2, 0x1153, 0x10C7, 0x1032, 0x0F95, 0x0EF5,\n    0x0E54, 0x0DB6, 0x0D1D, 0x0C8D, 0x0C09, 0x0B93, 0x0B30, 0x0AE2,\n    0x0AA9, 0x0A85, 0x0A70, 0x0A69, 0x0A6D, 0x0A79, 0x0A8A, 0x0A9D,\n    0x0AB1, 0x0AC1, 0x0ACB, 0x0ACC, 0x0AC2, 0x0AAA, 0x0A80, 0x0A43,\n    0x09F7, 0x09A6, 0x094F, 0x08F4, 0xFFF7, 0x0017, 0x0074, 0x0105,\n    0x01C3, 0x02A6, 0x03A7, 0x04BC, 0x05DF, 0x0707, 0x082D, 0x0949,\n    0x0A54, 0x0B44, 0x0C14, 0x0CBA, 0x0D2F, 0x0D6B, 0x0D66, 0x0D2C,\n    0x0CCF, 0x0C52, 0x0BB7, 0x0B02, 0x0A35, 0x0954, 0x0861, 0x075F,\n    0x0651, 0x053B, 0x041F, 0x0300, 0x01E0, 0x00C4, 0xFFAE, 0xFEA0,\n    0xFD9E, 0xFCAA, 0xFBC8, 0xFAFB, 0xFA44, 0xF9A8, 0xF91F, 0xF89D,\n    0xF825, 0xF7B4, 0xF74C, 0xF6ED, 0xF696, 0xF648, 0xF603, 0xF5C6,\n    0xF592, 0xF567, 0xF545, 0xF52B, 0xF51A, 0xF512, 0xF513, 0xF51D,\n    0xF530, 0xF54C, 0xF575, 0xF5BA, 0xF61A, 0xF691, 0xF71C, 0xF7B7,\n    0xF85F, 0xF911, 0xF9C8, 0xFA82, 0xFB3B, 0xFBEF, 0xFC9C, 0xFD3D,\n    0xFDD0, 0xFE50, 0xFEBB, 0xFF0D, 0xFF55, 0xFF9B, 0xFFDE, 0x001E,\n    0x005C, 0x0098, 0x00D2, 0x010A, 0x0140, 0x0174, 0x01A6, 0x01D6,\n    0x0204, 0x0231, 0x025D, 0x0286, 0x02AF, 0x02D6, 0x02FC, 0x0320,\n    0xC917, 0xC912, 0xC901, 0xC8E7, 0xC8C5, 0xC89C, 0xC86D, 0xC83A,\n    0xC803, 0xC7CB, 0xC792, 0xC759, 0xC722, 0xC6EF, 0xC6C0, 0xC696,\n    0xC673, 0xC659, 0xC648, 0xC63E, 0xC639, 0xC637, 0xC63A, 0xC640,\n    0xC649, 0xC654, 0xC661, 0xC671, 0xC681, 0xC693, 0xC6A5, 0xC6B8,\n    0xC6CA, 0xC6DC, 0xC6ED, 0xC6FD, 0xC70B, 0xC716, 0xC720, 0xC726,\n    0xC72A, 0xC72A, 0xC725, 0xC71D, 0xC712, 0xC703, 0xC6F2, 0xC6DE,\n    0xC6C9, 0xC6B3, 0xC69C, 0xC685, 0xC66D, 0xC657, 0xC641, 0xC62D,\n    0xC61A, 0xC60A, 0xC5FD, 0xC5F3, 0xC5ED, 0xC5EB, 0xC5EC, 0xC5F0,\n    0xC5F8, 0xC601, 0xC60D, 0xC61B, 0xC62B, 0xC63D, 0xC651, 0xC665,\n    0xC67C, 0xC693, 0xC6AB, 0xC6C3, 0xC6DD, 0xC6F6, 0xC710, 0xC72A,\n    0xC741, 0xC755, 0xC767, 0xC777, 0xC787, 0xC798, 0xC7AA, 0xC7C0,\n    0xC7D9, 0xC7F7, 0xC81B, 0xC847, 0xC87A, 0xC8B7, 0xC8FE, 0xC950,\n    0xC9AE, 0xCA17, 0xCA8A, 0xCB06, 0x141D, 0x141D, 0x141D, 0x141D,\n    0x141D, 0x141D, 0x141D, 0x141D, 0x141D, 0x141D, 0x141D, 0x141D,\n    0x141D, 0x141D, 0x141D, 0x141D, 0x141D, 0x141D, 0x141D, 0x1419,\n    0x1411, 0x1407, 0x13FC, 0x13F4, 0x13F1, 0x13F5, 0x1403, 0x141D,\n    0x1470, 0x14FD, 0x1582, 0x15BD, 0x1559, 0x1499, 0x141D, 0x13F8,\n    0x13D6, 0x13BB, 0x13AA, 0x13A8, 0x13B8, 0x13DD, 0x141D, 0x147C,\n    0x14FD, 0x1596, 0x1641, 0x16F6, 0x17AD, 0x185F, 0x1904, 0x1995,\n    0x1A0A, 0x1A5B, 0x1A81, 0x1A75, 0x1A4C, 0x1A1F, 0x19F0, 0x19BE,\n    0x1989, 0x1951, 0x1917, 0x18DB, 0x189C, 0x185C, 0x1819, 0x17D3,\n    0x178C, 0x1743, 0x16F9, 0x16AC, 0x165E, 0x160F, 0x15BE, 0x156C,\n    0x1518, 0x14C4, 0x146E, 0x1417, 0x13C0, 0x1367, 0x130E, 0x12B5,\n    0x125B, 0x1200, 0x11A5, 0x114A, 0x10EF, 0x1093, 0x1038, 0x0FDC,\n    0x0F81, 0x0F27, 0x0ECC, 0x0E72, 0x0E19, 0x0DC0, 0x0D68, 0x0D11,\n    0xEEA9, 0xEEA9, 0xEEA9, 0xEEA9, 0xEEA9, 0xEEA9, 0xEEA9, 0xEEA9,\n    0xEEA9, 0xEEA9, 0xEEA9, 0xEEA9, 0xEEA9, 0xEEA9, 0xEEA9, 0xEEA9,\n    0xEEA9, 0xEEA9, 0xEEA9, 0xEEC0, 0xEEF8, 0xEF41, 0xEF8A, 0xEFC2,\n    0xEFD8, 0xEFBC, 0xEF5D, 0xEEA9, 0xEC68, 0xE89B, 0xE506, 0xE370,\n    0xE620, 0xEB4F, 0xEEA9, 0xEF7F, 0xF005, 0xF046, 0xF04A, 0xF019,\n    0xEFBE, 0xEF40, 0xEEA9, 0xEDE3, 0xECDD, 0xEBA6, 0xEA4B, 0xE8DC,\n    0xE768, 0xE5FC, 0xE4A9, 0xE37D, 0xE285, 0xE1D2, 0xE172, 0xE173,\n    0xE1AD, 0xE1EC, 0xE230, 0xE27A, 0xE2C9, 0xE31C, 0xE375, 0xE3D1,\n    0xE433, 0xE498, 0xE501, 0xE56F, 0xE5E0, 0xE654, 0xE6CC, 0xE747,\n    0xE7C5, 0xE847, 0xE8CA, 0xE951, 0xE9D9, 0xEA64, 0xEAF1, 0xEB80,\n    0xEC10, 0xECA2, 0xED36, 0xEDCB, 0xEE60, 0xEEF7, 0xEF8E, 0xF026,\n    0xF0BF, 0xF157, 0xF1F0, 0xF288, 0xF321, 0xF3B8, 0xF450, 0xF4E6,\n    0xF57C, 0xF610, 0xF6A3, 0xF735, 0xD9FF, 0xD9FF, 0xD9FF, 0xD9FF,\n    0xD9FF, 0xD9FF, 0xD9FF, 0xD9FF, 0xD9FF, 0xD9FF, 0xD9FF, 0xD9FF,\n    0xD9FF, 0xD9FF, 0xD9FF, 0xD9FF, 0xD9FF, 0xD9FF, 0xD9FF, 0xDA1B,\n    0xDA62, 0xDABF, 0xDB1C, 0xDB63, 0xDB7F, 0xDB5C, 0xDAE3, 0xD9FF,\n    0xD723, 0xD251, 0xCDC7, 0xCBC4, 0xCF2D, 0xD5BE, 0xD9FF, 0xDB05,\n    0xDB9B, 0xDBD3, 0xDBC0, 0xDB75, 0xDB05, 0xDA82, 0xD9FF, 0xD962,\n    0xD88D, 0xD78D, 0xD66F, 0xD542, 0xD411, 0xD2EB, 0xD1DB, 0xD0F1,\n    0xD038, 0xCFBD, 0xCF8F, 0xCFBB, 0xD01A, 0xD081, 0xD0ED, 0xD160,\n    0xD1D9, 0xD257, 0xD2DB, 0xD363, 0xD3F1, 0xD484, 0xD51B, 0xD5B6,\n    0xD655, 0xD6F8, 0xD79E, 0xD848, 0xD8F5, 0xD9A4, 0xDA57, 0xDB0B,\n    0xDBC2, 0xDC7A, 0xDD34, 0xDDF0, 0xDEAD, 0xDF6A, 0xE029, 0xE0E7,\n    0xE1A6, 0xE265, 0xE324, 0xE3E3, 0xE4A0, 0xE55D, 0xE618, 0xE6D2,\n    0xE78B, 0xE841, 0xE8F6, 0xE9A8, 0xEA57, 0xEB04, 0xEBAD, 0xEC53,\n    0xB6A1, 0xB6A1, 0xB6A1, 0xB6A1, 0xB6A1, 0xB6A1, 0xB6A1, 0xB6A1,\n    0xB6A1, 0xB6A1, 0xB6A1, 0xB6A1, 0xB6A1, 0xB6A1, 0xB6A1, 0xB6A1,\n    0xB6A1, 0xB6A1, 0xB6A1, 0xB6A1, 0xB6A1, 0xB6A1, 0xB6A1, 0xB6A1,\n    0xB6A1, 0xB6A1, 0xB6A1, 0xB6A1, 0xB6A1, 0xB6A1, 0xB6A1, 0xB6A1,\n    0xB6A1, 0xB6A1, 0xB6A1, 0xB660, 0xB5C2, 0xB4FE, 0xB44D, 0xB3E6,\n    0xB402, 0xB4D9, 0xB6A1, 0xB968, 0xBCF8, 0xC126, 0xC5C5, 0xCAAC,\n    0xCFAF, 0xD4A3, 0xD95D, 0xDDB1, 0xE175, 0xE47D, 0xE69E, 0xE7AD,\n    0xE81C, 0xE879, 0xE8C5, 0xE900, 0xE92B, 0xE947, 0xE954, 0xE954,\n    0xE945, 0xE929, 0xE902, 0xE8CE, 0xE88F, 0xE845, 0xE7F2, 0xE795,\n    0xE72F, 0xE6C1, 0xE64B, 0xE5CE, 0xE54B, 0xE4C1, 0xE433, 0xE3A0,\n    0xE308, 0xE26E, 0xE1D0, 0xE130, 0xE08E, 0xDFEB, 0xDF47, 0xDEA4,\n    0xDE01, 0xDD5F, 0xDCBF, 0xDC22, 0xDB88, 0xDAF1, 0xDA5E, 0xD9D0,\n    0xD947, 0xD8C5, 0xD849, 0xD7D4, 0x2697, 0x26A7, 0x26D2, 0x2714,\n    0x2766, 0x27C3, 0x2825, 0x2888, 0x28E4, 0x2936, 0x2977, 0x29A1,\n    0x29AF, 0x299C, 0x2962, 0x28FB, 0x2863, 0x2792, 0x2684, 0x247E,\n    0x2113, 0x1CB2, 0x17CB, 0x12CE, 0x0E2A, 0x0A50, 0x07AF, 0x06B7,\n    0x084A, 0x0C66, 0x121C, 0x1882, 0x1EAC, 0x23AC, 0x2697, 0x27F4,\n    0x28E7, 0x2974, 0x299D, 0x2966, 0x28D0, 0x27E0, 0x2697, 0x2468,\n    0x20EB, 0x1C62, 0x170E, 0x1130, 0x0B08, 0x04D8, 0xFEE0, 0xF961,\n    0xF49B, 0xF0D0, 0xEE40, 0xED2D, 0xECF7, 0xECD3, 0xECC2, 0xECC2,\n    0xECD3, 0xECF4, 0xED26, 0xED66, 0xEDB5, 0xEE13, 0xEE7E, 0xEEF6,\n    0xEF7B, 0xF00C, 0xF0A8, 0xF14F, 0xF200, 0xF2BC, 0xF380, 0xF44D,\n    0xF522, 0xF5FF, 0xF6E2, 0xF7CD, 0xF8BD, 0xF9B2, 0xFAAC, 0xFBAB,\n    0xFCAD, 0xFDB2, 0xFEBA, 0xFFC4, 0x00CE, 0x01DA, 0x02E7, 0x03F3,\n    0x04FF, 0x0609, 0x0712, 0x0818, 0x091B, 0x0A1B, 0x0B16, 0x0C0D,\n    0xFEDD, 0xFEDB, 0xFED6, 0xFECE, 0xFEC3, 0xFEB4, 0xFEA2, 0xFE8D,\n    0xFE75, 0xFE59, 0xFE3B, 0xFE1A, 0xFDF6, 0xFDCF, 0xFDA5, 0xFD78,\n    0xFD49, 0xFD16, 0xFCE1, 0xFC93, 0xFC1C, 0xFB8C, 0xFAF0, 0xFA57,\n    0xF9CE, 0xF964, 0xF927, 0xF925, 0xF989, 0xFA5A, 0xFB6D, 0xFC95,\n    0xFDA7, 0xFE78, 0xFEDD, 0xFF01, 0xFF28, 0xFF4B, 0xFF64, 0xFF6C,\n    0xFF5C, 0xFF2F, 0xFEDD, 0xFDA4, 0xFB22, 0xF7E6, 0xF47D, 0xF174,\n    0xEF59, 0xEE10, 0xED1B, 0xEC70, 0xEC06, 0xEBD2, 0xEBCD, 0xEBEC,\n    0xEC1B, 0xEC4D, 0xEC80, 0xECB6, 0xECED, 0xED27, 0xED62, 0xED9F,\n    0xEDDD, 0xEE1E, 0xEE5F, 0xEEA2, 0xEEE6, 0xEF2C, 0xEF72, 0xEFBA,\n    0xF002, 0xF04C, 0xF096, 0xF0E1, 0xF12D, 0xF179, 0xF1C6, 0xF213,\n    0xF261, 0xF2AF, 0xF2FD, 0xF34B, 0xF399, 0xF3E7, 0xF435, 0xF482,\n    0xF4D0, 0xF51D, 0xF569, 0xF5B5, 0xF600, 0xF64B, 0xF695, 0xF6DE,\n    0xF726, 0xF76D, 0xF7B3, 0xF7F7, 0xB61E, 0xB623, 0xB631, 0xB646,\n    0xB661, 0xB681, 0xB6A5, 0xB6CB, 0xB6F2, 0xB718, 0xB73D, 0xB75F,\n    0xB77D, 0xB795, 0xB7A6, 0xB7B0, 0xB7AF, 0xB7A4, 0xB78D, 0xB74F,\n    0xB6DD, 0xB644, 0xB596, 0xB4E1, 0xB434, 0xB39F, 0xB331, 0xB2F9,\n    0xB30F, 0xB36C, 0xB3F8, 0xB49C, 0xB53F, 0xB5C7, 0xB61E, 0xB629,\n    0xB5F4, 0xB59D, 0xB542, 0xB503, 0xB4FF, 0xB553, 0xB61E, 0xB766,\n    0xB90E, 0xBB00, 0xBD28, 0xBF71, 0xC1C5, 0xC411, 0xC63F, 0xC83B,\n    0xC9EF, 0xCB46, 0xCC2D, 0xCC8D, 0xCCA0, 0xCCAC, 0xCCB0, 0xCCAD,\n    0xCCA4, 0xCC94, 0xCC7D, 0xCC61, 0xCC3F, 0xCC17, 0xCBE9, 0xCBB7,\n    0xCB80, 0xCB43, 0xCB03, 0xCABE, 0xCA75, 0xCA28, 0xC9D8, 0xC984,\n    0xC92D, 0xC8D3, 0xC876, 0xC817, 0xC7B5, 0xC751, 0xC6EC, 0xC685,\n    0xC61C, 0xC5B3, 0xC548, 0xC4DD, 0xC471, 0xC405, 0xC398, 0xC32C,\n    0xC2C1, 0xC256, 0xC1EB, 0xC182, 0xC11A, 0xC0B4, 0xC04F, 0xBFED,\n    0xE817, 0xE817, 0xE817, 0xE817, 0xE817, 0xE817, 0xE817, 0xE817,\n    0xE817, 0xE817, 0xE817, 0xE817, 0xE817, 0xE817, 0xE817, 0xE817,\n    0xE817, 0xE817, 0xE817, 0xE824, 0xE846, 0xE872, 0xE89E, 0xE8C0,\n    0xE8CE, 0xE8BD, 0xE883, 0xE817, 0xE6BB, 0xE46F, 0xE246, 0xE151,\n    0xE30A, 0xE645, 0xE817, 0xE839, 0xE858, 0xE873, 0xE88A, 0xE89E,\n    0xE8AF, 0xE8BD, 0xE8C9, 0xE8D1, 0xE8D7, 0xE8DA, 0xE8DC, 0xE8DB,\n    0xE8D8, 0xE8D3, 0xE8CD, 0xE8C6, 0xE8BD, 0xE8B3, 0xE8A8, 0xE89C,\n    0xE88F, 0xE882, 0xE874, 0xE867, 0xE859, 0xE84B, 0xE83E, 0xE831,\n    0xE824, 0xE819, 0xE80E, 0xE804, 0xE7FB, 0xE7F4, 0xE7EE, 0xE7EA,\n    0xE7E8, 0xE7E7, 0xE7E9, 0xE7ED, 0xE7F4, 0xE7FD, 0xE808, 0xE817,\n    0xE825, 0xE831, 0xE840, 0xE855, 0xE874, 0xE8A1, 0xE8E0, 0xE934,\n    0xE9A3, 0xEA2F, 0xEADD, 0xEBB0, 0xECB1, 0xEDE0, 0xEF36, 0xF0AE,\n    0xF241, 0xF3E9, 0xF59E, 0xF75A, 0x0922, 0x0922, 0x0922, 0x0922,\n    0x0922, 0x0922, 0x0922, 0x0922, 0x0922, 0x0922, 0x0922, 0x0922,\n    0x0922, 0x0922, 0x0922, 0x0922, 0x0922, 0x0922, 0x0922, 0x08FE,\n    0x08A5, 0x0832, 0x07BE, 0x0765, 0x0741, 0x076E, 0x0805, 0x0922,\n    0x0CB5, 0x12BC, 0x1869, 0x1AED, 0x1666, 0x0DE9, 0x0922, 0x08C9,\n    0x087C, 0x083B, 0x0805, 0x07DA, 0x07B9, 0x07A1, 0x0792, 0x078B,\n    0x078C, 0x0794, 0x07A3, 0x07B8, 0x07D2, 0x07F1, 0x0814, 0x083B,\n    0x0865, 0x0891, 0x08BF, 0x08EF, 0x0920, 0x0950, 0x0981, 0x09B0,\n    0x09DE, 0x0A0A, 0x0A33, 0x0A58, 0x0A7A, 0x0A98, 0x0AB0, 0x0AC3,\n    0x0AD0, 0x0AD6, 0x0AD5, 0x0ACC, 0x0ABA, 0x0AA0, 0x0A7B, 0x0A4D,\n    0x0A14, 0x09CF, 0x097F, 0x0922, 0x0869, 0x0718, 0x054D, 0x0325,\n    0x00C0, 0xFE3B, 0xFBB3, 0xF946, 0xF712, 0xF535, 0xF3CD, 0xF2F8,\n    0xF28F, 0xF254, 0xF242, 0xF256, 0xF28A, 0xF2DA, 0xF342, 0xF3BC,\n    0xE19A, 0xE19A, 0xE19A, 0xE19A, 0xE19A, 0xE19A, 0xE19A, 0xE19A,\n    0xE19A, 0xE19A, 0xE19A, 0xE19A, 0xE19A, 0xE19A, 0xE19A, 0xE19A,\n    0xE19A, 0xE19A, 0xE19A, 0xE1B9, 0xE205, 0xE269, 0xE2CC, 0xE319,\n    0xE337, 0xE311, 0xE28F, 0xE19A, 0xDE88, 0xD959, 0xD478, 0xD24E,\n    0xD633, 0xDD7E, 0xE19A, 0xE1E8, 0xE22D, 0xE26A, 0xE29F, 0xE2CD,\n    0xE2F4, 0xE314, 0xE32D, 0xE340, 0xE34E, 0xE356, 0xE35A, 0xE358,\n    0xE353, 0xE349, 0xE33B, 0xE32B, 0xE317, 0xE301, 0xE2E8, 0xE2CE,\n    0xE2B2, 0xE295, 0xE276, 0xE258, 0xE239, 0xE21A, 0xE1FC, 0xE1DF,\n    0xE1C3, 0xE1A8, 0xE190, 0xE179, 0xE166, 0xE155, 0xE147, 0xE13D,\n    0xE137, 0xE136, 0xE139, 0xE141, 0xE14E, 0xE161, 0xE17A, 0xE19A,\n    0xE1D4, 0xE237, 0xE2BC, 0xE35E, 0xE416, 0xE4DD, 0xE5AD, 0xE680,\n    0xE74F, 0xE813, 0xE8C6, 0xE962, 0xE9F2, 0xEA85, 0xEB19, 0xEBAF,\n    0xEC46, 0xECDC, 0xED72, 0xEE06, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0xB646, 0xB646, 0xB646, 0xB646, 0xB646, 0xB646, 0xB646, 0xB646,\n    0xB646, 0xB646, 0xB646, 0xB646, 0xB646, 0xB646, 0xB646, 0xB646,\n    0xB646, 0xB646, 0xB646, 0xB646, 0xB646, 0xB646, 0xB646, 0xB646,\n    0xB646, 0xB646, 0xB646, 0xB646, 0xB646, 0xB646, 0xB646, 0xB646,\n    0xB646, 0xB646, 0xB646, 0xB643, 0xB63B, 0xB62E, 0xB61D, 0xB607,\n    0xB5EE, 0xB5D1, 0xB5B1, 0xB58F, 0xB56A, 0xB543, 0xB51B, 0xB4F2,\n    0xB4C8, 0xB49E, 0xB474, 0xB44A, 0xB421, 0xB3F9, 0xB3D2, 0xB3AD,\n    0xB38B, 0xB36B, 0xB34E, 0xB335, 0xB31F, 0xB30E, 0xB301, 0xB2F9,\n    0xB2F6, 0xB2F9, 0xB302, 0xB311, 0xB327, 0xB345, 0xB36A, 0xB396,\n    0xB3CB, 0xB409, 0xB450, 0xB4A0, 0xB4FA, 0xB55E, 0xB5CC, 0xB646,\n    0xB6D5, 0xB785, 0xB853, 0xB93C, 0xBA3E, 0xBB58, 0xBC87, 0xBDCA,\n    0xBF1D, 0xC07F, 0xC1ED, 0xC366, 0xC4E7, 0xC66F, 0xC7FB, 0xC988,\n    0xCB15, 0xCCA0, 0xCE27, 0xCFA6, 0xD864, 0xD872, 0xD898, 0xD8D0,\n    0xD914, 0xD95E, 0xD9A8, 0xD9EC, 0xDA25, 0xDA4B, 0xDA59, 0xDA03,\n    0xD92E, 0xD81B, 0xD710, 0xD64F, 0xD61C, 0xD6BA, 0xD86C, 0xDBAB,\n    0xE06B, 0xE62C, 0xEC6C, 0xF2AB, 0xF866, 0xFD1E, 0x0051, 0x017E,\n    0xFF2E, 0xF937, 0xF115, 0xE841, 0xE037, 0xDA6F, 0xD864, 0xD8E5,\n    0xD9B5, 0xDABF, 0xDBEC, 0xDD27, 0xDE5A, 0xDF6F, 0xE050, 0xE0E7,\n    0xE11E, 0xE11A, 0xE10C, 0xE0F7, 0xE0DA, 0xE0B5, 0xE08A, 0xE058,\n    0xE021, 0xDFE4, 0xDFA2, 0xDF5C, 0xDF11, 0xDEC4, 0xDE73, 0xDE20,\n    0xDDCA, 0xDD73, 0xDD1B, 0xDCC3, 0xDC6A, 0xDC11, 0xDBB9, 0xDB63,\n    0xDB0E, 0xDABC, 0xDA6C, 0xDA1F, 0xD9D6, 0xD991, 0xD951, 0xD915,\n    0xD8E0, 0xD8B0, 0xD886, 0xD864, 0xD847, 0xD82F, 0xD81A, 0xD808,\n    0xD7FA, 0xD7F0, 0xD7E8, 0xD7E3, 0xD7E1, 0xD7E1, 0xD7E4, 0xD7E9,\n    0xD7F0, 0xD7F9, 0xD803, 0xD80F, 0xD81D, 0xD82B, 0xD83B, 0xD84B,\n    0xFF58, 0xFF56, 0xFF51, 0xFF4C, 0xFF47, 0xFF44, 0xFF44, 0xFF4A,\n    0xFF58, 0xFF6D, 0xFF8E, 0xFFAF, 0xFFCC, 0xFFEE, 0x001D, 0x0062,\n    0x00C5, 0x014F, 0x0208, 0x0318, 0x0488, 0x0635, 0x07FC, 0x09B8,\n    0x0B46, 0x0C81, 0x0D47, 0x0D73, 0x0C94, 0x0A9C, 0x07F7, 0x0516,\n    0x0266, 0x0057, 0xFF58, 0xFF1D, 0xFF0D, 0xFF1F, 0xFF4C, 0xFF89,\n    0xFFCF, 0x0014, 0x0050, 0x007B, 0x008B, 0x008A, 0x0086, 0x0080,\n    0x0077, 0x006C, 0x0060, 0x0052, 0x0042, 0x0031, 0x0020, 0x000D,\n    0xFFFB, 0xFFE7, 0xFFD3, 0xFFBF, 0xFFAB, 0xFF98, 0xFF85, 0xFF73,\n    0xFF62, 0xFF52, 0xFF43, 0xFF36, 0xFF2A, 0xFF21, 0xFF19, 0xFF14,\n    0xFF12, 0xFF12, 0xFF15, 0xFF1C, 0xFF25, 0xFF32, 0xFF43, 0xFF58,\n    0xFF72, 0xFF93, 0xFFBA, 0xFFE7, 0x0018, 0x004F, 0x008A, 0x00C9,\n    0x010C, 0x0151, 0x0199, 0x01E3, 0x022F, 0x027B, 0x02C8, 0x0316,\n    0x0363, 0x03AF, 0x03FA, 0x0444, 0xB74B, 0xB74F, 0xB757, 0xB765,\n    0xB777, 0xB78C, 0xB7A4, 0xB7BE, 0xB7D8, 0xB7F3, 0xB80E, 0xB82A,\n    0xB84A, 0xB86C, 0xB891, 0xB8B6, 0xB8DC, 0xB900, 0xB922, 0xB948,\n    0xB976, 0xB9A9, 0xB9DA, 0xBA07, 0xBA2B, 0xBA41, 0xBA45, 0xBA33,\n    0xBA01, 0xB9AB, 0xB93D, 0xB8C0, 0xB83D, 0xB7BD, 0xB74B, 0xB6DB,\n    0xB65D, 0xB5D8, 0xB552, 0xB4D1, 0xB459, 0xB3F2, 0xB3A2, 0xB36D,\n    0xB35A, 0xB35C, 0xB363, 0xB36E, 0xB37C, 0xB38F, 0xB3A5, 0xB3BD,\n    0xB3D9, 0xB3F7, 0xB418, 0xB43B, 0xB45F, 0xB485, 0xB4AC, 0xB4D5,\n    0xB4FE, 0xB528, 0xB552, 0xB57C, 0xB5A6, 0xB5CF, 0xB5F7, 0xB61F,\n    0xB645, 0xB66A, 0xB68D, 0xB6AD, 0xB6CC, 0xB6E8, 0xB701, 0xB717,\n    0xB72A, 0xB739, 0xB744, 0xB74B, 0xB74E, 0xB74D, 0xB748, 0xB73F,\n    0xB733, 0xB724, 0xB711, 0xB6FD, 0xB6E6, 0xB6CD, 0xB6B2, 0xB695,\n    0xB678, 0xB659, 0xB639, 0xB619, 0xB5F9, 0xB5D9, 0xB5B9, 0xB59A,\n    0xFBC7, 0xFBC7, 0xFBC8, 0xFBCA, 0xFBCC, 0xFBCE, 0xFBD1, 0xFBD5,\n    0xFBD8, 0xFBDD, 0xFBE1, 0xFBE7, 0xFBEC, 0xFBF2, 0xFBF8, 0xFBFE,\n    0xFC05, 0xFC0C, 0xFC13, 0xFC1A, 0xFC21, 0xFC29, 0xFC30, 0xFC38,\n    0xFC40, 0xFC48, 0xFC50, 0xFC58, 0xFC60, 0xFC68, 0xFC6F, 0xFC77,\n    0xFC7F, 0xFC86, 0xFC8E, 0xFC95, 0xFC9C, 0xFCA3, 0xFCA9, 0xFCAF,\n    0xFCB5, 0xFCBB, 0xFCC0, 0xFCC5, 0xFCCA, 0xFCCE, 0xFCD2, 0xFCD5,\n    0xFCD8, 0xFCDA, 0xFCDC, 0xFCDD, 0xFCDE, 0xFCDE, 0xFCDD, 0xFCDC,\n    0xFCDB, 0xFCD8, 0xFCD5, 0xFCD1, 0xFCCC, 0xFCC7, 0xFCC1, 0xFCBA,\n    0xFCB2, 0xFCA9, 0xFC9F, 0xFC95, 0xFC89, 0xFC7D, 0xFC6F, 0xFC61,\n    0xFC52, 0xFC41, 0xFC30, 0xFC1D, 0xFC09, 0xFBF4, 0xFBDE, 0xFBC7,\n    0xFB9F, 0xFB5A, 0xFAFA, 0xFA84, 0xF9FB, 0xF963, 0xF8BE, 0xF812,\n    0xF761, 0xF6AF, 0xF5FF, 0xF556, 0xF4B6, 0xF423, 0xF3A1, 0xF333,\n    0xF2DE, 0xF29C, 0xF261, 0xF22F, 0xFFBF, 0xFFBF, 0xFFBF, 0xFFBF,\n    0xFFBE, 0xFFBE, 0xFFBE, 0xFFBE, 0xFFBE, 0xFFBE, 0xFFBD, 0xFFBD,\n    0xFFBD, 0xFFBD, 0xFFBC, 0xFFBC, 0xFFBC, 0xFFBC, 0xFFBB, 0xFFBB,\n    0xFFBB, 0xFFBA, 0xFFBA, 0xFFBA, 0xFFB9, 0xFFB9, 0xFFB8, 0xFFB8,\n    0xFFB8, 0xFFB7, 0xFFB7, 0xFFB7, 0xFFB6, 0xFFB6, 0xFFB6, 0xFFB5,\n    0xFFB5, 0xFFB5, 0xFFB4, 0xFFB4, 0xFFB4, 0xFFB4, 0xFFB3, 0xFFB3,\n    0xFFB3, 0xFFB3, 0xFFB3, 0xFFB2, 0xFFB2, 0xFFB2, 0xFFB2, 0xFFB2,\n    0xFFB2, 0xFFB2, 0xFFB2, 0xFFB2, 0xFFB2, 0xFFB2, 0xFFB2, 0xFFB3,\n    0xFFB3, 0xFFB3, 0xFFB3, 0xFFB4, 0xFFB4, 0xFFB4, 0xFFB5, 0xFFB5,\n    0xFFB6, 0xFFB6, 0xFFB7, 0xFFB8, 0xFFB8, 0xFFB9, 0xFFBA, 0xFFBB,\n    0xFFBC, 0xFFBD, 0xFFBE, 0xFFBF, 0xFFC1, 0xFFC7, 0xFFD0, 0xFFDB,\n    0xFFE7, 0xFFF4, 0x0000, 0x000E, 0x001A, 0x0026, 0x0030, 0x0037,\n    0x003B, 0x003C, 0x0039, 0x0032, 0x0025, 0x0012, 0xFFF8, 0xFFD7,\n    0xBF3E, 0xBF3E, 0xBF3E, 0xBF3E, 0xBF3E, 0xBF3E, 0xBF3E, 0xBF3E,\n    0xBF3E, 0xBF3E, 0xBF3E, 0xBF3E, 0xBF3E, 0xBF3E, 0xBF3E, 0xBF3E,\n    0xBF3E, 0xBF3E, 0xBF3E, 0xBF3E, 0xBF3E, 0xBF3E, 0xBF3E, 0xBF3E,\n    0xBF3E, 0xBF3E, 0xBF3E, 0xBF3E, 0xBF3E, 0xBF3E, 0xBF3E, 0xBF3F,\n    0xBF3F, 0xBF3F, 0xBF3F, 0xBF3F, 0xBF3F, 0xBF3F, 0xBF3F, 0xBF3F,\n    0xBF3F, 0xBF3F, 0xBF3F, 0xBF3F, 0xBF3F, 0xBF3F, 0xBF3F, 0xBF3F,\n    0xBF3F, 0xBF3F, 0xBF3F, 0xBF3F, 0xBF3F, 0xBF3F, 0xBF3F, 0xBF3F,\n    0xBF3F, 0xBF3F, 0xBF3F, 0xBF3F, 0xBF3F, 0xBF3F, 0xBF3F, 0xBF3F,\n    0xBF3F, 0xBF3F, 0xBF3F, 0xBF3F, 0xBF3F, 0xBF3F, 0xBF3E, 0xBF3E,\n    0xBF3E, 0xBF3E, 0xBF3E, 0xBF3E, 0xBF3E, 0xBF3E, 0xBF3E, 0xBF3E,\n    0xBF3D, 0xBF3D, 0xBF3C, 0xBF3B, 0xBF3A, 0xBF38, 0xBF37, 0xBF35,\n    0xBF34, 0xBF33, 0xBF32, 0xBF31, 0xBF31, 0xBF31, 0xBF31, 0xBF32,\n    0xBF33, 0xBF35, 0xBF38, 0xBF3B, 0xC066, 0x2697, 0x26A7, 0x26D2,\n    0x2714, 0x2766, 0x27C3, 0x2825, 0x2888, 0x28E4, 0x2936, 0x2977,\n    0x29A1, 0x29AF, 0x299C, 0x2962, 0x28FB, 0x2863, 0x2792, 0x2684,\n    0x247E, 0x2113, 0x1CB2, 0x17CB, 0x12CE, 0x0E2A, 0x0A50, 0x07AF,\n    0x06B7, 0x084A, 0x0C66, 0x121C, 0x1882, 0x1EAC, 0x23AC, 0x2697,\n    0x27F4, 0x28E7, 0x2974, 0x299D, 0x2966, 0x28D0, 0x27E0, 0x2697,\n    0x2468, 0x20EB, 0x1C62, 0x170E, 0x1130, 0x0B08, 0x04D8, 0xFEE0,\n    0xF961, 0xF49B, 0xF0D0, 0xEE40, 0xED2D, 0xECF7, 0xECD3, 0xECC2,\n    0xECC2, 0xECD3, 0xECF4, 0xED26, 0xED66, 0xEDB5, 0xEE13, 0xEE7E,\n    0xEEF6, 0xEF7B, 0xF00C, 0xF0A8, 0xF14F, 0xF200, 0xF2BC, 0xF380,\n    0xF44D, 0xF522, 0xF5FF, 0xF6E2, 0xF7CD, 0xF8BD, 0xF9B2, 0xFAAC,\n    0xFBAB, 0xFCAD, 0xFDB2, 0xFEBA, 0xFFC4, 0x00CE, 0x01DA, 0x02E7,\n    0x03F3, 0x04FF, 0x0609, 0x0712, 0x0818, 0x091B, 0x0A1B, 0x0B16,\n    0x0C0D, 0xFEDD, 0xFEDB, 0xFED6, 0xFECE, 0xFEC3, 0xFEB4, 0xFEA2,\n    0xFE8D, 0xFE75, 0xFE59, 0xFE3B, 0xFE1A, 0xFDF6, 0xFDCF, 0xFDA5,\n    0xFD78, 0xFD49, 0xFD16, 0xFCE1, 0xFC93, 0xFC1C, 0xFB8C, 0xFAF0,\n    0xFA57, 0xF9CE, 0xF964, 0xF927, 0xF925, 0xF989, 0xFA5A, 0xFB6D,\n    0xFC95, 0xFDA7, 0xFE78, 0xFEDD, 0xFF01, 0xFF28, 0xFF4B, 0xFF64,\n    0xFF6C, 0xFF5C, 0xFF2F, 0xFEDD, 0xFDA4, 0xFB22, 0xF7E6, 0xF47D,\n    0xF174, 0xEF59, 0xEE10, 0xED1B, 0xEC70, 0xEC06, 0xEBD2, 0xEBCD,\n    0xEBEC, 0xEC1B, 0xEC4D, 0xEC80, 0xECB6, 0xECED, 0xED27, 0xED62,\n    0xED9F, 0xEDDD, 0xEE1E, 0xEE5F, 0xEEA2, 0xEEE6, 0xEF2C, 0xEF72,\n    0xEFBA, 0xF002, 0xF04C, 0xF096, 0xF0E1, 0xF12D, 0xF179, 0xF1C6,\n    0xF213, 0xF261, 0xF2AF, 0xF2FD, 0xF34B, 0xF399, 0xF3E7, 0xF435,\n    0xF482, 0xF4D0, 0xF51D, 0xF569, 0xF5B5, 0xF600, 0xF64B, 0xF695,\n    0xF6DE, 0xF726, 0xF76D, 0xF7B3, 0xF7F7, 0xB61E, 0xB623, 0xB631,\n    0xB646, 0xB661, 0xB681, 0xB6A5, 0xB6CB, 0xB6F2, 0xB718, 0xB73D,\n    0xB75F, 0xB77D, 0xB795, 0xB7A6, 0xB7B0, 0xB7AF, 0xB7A4, 0xB78D,\n    0xB74F, 0xB6DD, 0xB644, 0xB596, 0xB4E1, 0xB434, 0xB39F, 0xB331,\n    0xB2F9, 0xB30F, 0xB36C, 0xB3F8, 0xB49C, 0xB53F, 0xB5C7, 0xB61E,\n    0xB629, 0xB5F4, 0xB59D, 0xB542, 0xB503, 0xB4FF, 0xB553, 0xB61E,\n    0xB766, 0xB90E, 0xBB00, 0xBD28, 0xBF71, 0xC1C5, 0xC411, 0xC63F,\n    0xC83B, 0xC9EF, 0xCB46, 0xCC2D, 0xCC8D, 0xCCA0, 0xCCAC, 0xCCB0,\n    0xCCAD, 0xCCA4, 0xCC94, 0xCC7D, 0xCC61, 0xCC3F, 0xCC17, 0xCBE9,\n    0xCBB7, 0xCB80, 0xCB43, 0xCB03, 0xCABE, 0xCA75, 0xCA28, 0xC9D8,\n    0xC984, 0xC92D, 0xC8D3, 0xC876, 0xC817, 0xC7B5, 0xC751, 0xC6EC,\n    0xC685, 0xC61C, 0xC5B3, 0xC548, 0xC4DD, 0xC471, 0xC405, 0xC398,\n    0xC32C, 0xC2C1, 0xC256, 0xC1EB, 0xC182, 0xC11A, 0xC0B4, 0xC04F,\n    0xBFED, 0xD864, 0xD872, 0xD898, 0xD8D0, 0xD914, 0xD95E, 0xD9A8,\n    0xD9EC, 0xDA25, 0xDA4B, 0xDA59, 0xDA03, 0xD92E, 0xD81B, 0xD710,\n    0xD64F, 0xD61C, 0xD6BA, 0xD86C, 0xDBAB, 0xE06B, 0xE62C, 0xEC6C,\n    0xF2AB, 0xF866, 0xFD1E, 0x0051, 0x017E, 0xFF2E, 0xF937, 0xF115,\n    0xE841, 0xE037, 0xDA6F, 0xD864, 0xD8E5, 0xD9B5, 0xDABF, 0xDBEC,\n    0xDD27, 0xDE5A, 0xDF6F, 0xE050, 0xE0E7, 0xE11E, 0xE11A, 0xE10C,\n    0xE0F7, 0xE0DA, 0xE0B5, 0xE08A, 0xE058, 0xE021, 0xDFE4, 0xDFA2,\n    0xDF5C, 0xDF11, 0xDEC4, 0xDE73, 0xDE20, 0xDDCA, 0xDD73, 0xDD1B,\n    0xDCC3, 0xDC6A, 0xDC11, 0xDBB9, 0xDB63, 0xDB0E, 0xDABC, 0xDA6C,\n    0xDA1F, 0xD9D6, 0xD991, 0xD951, 0xD915, 0xD8E0, 0xD8B0, 0xD886,\n    0xD864, 0xD847, 0xD82F, 0xD81A, 0xD808, 0xD7FA, 0xD7F0, 0xD7E8,\n    0xD7E3, 0xD7E1, 0xD7E1, 0xD7E4, 0xD7E9, 0xD7F0, 0xD7F9, 0xD803,\n    0xD80F, 0xD81D, 0xD82B, 0xD83B, 0xD84B, 0xFF58, 0xFF56, 0xFF51,\n    0xFF4C, 0xFF47, 0xFF44, 0xFF44, 0xFF4A, 0xFF58, 0xFF6D, 0xFF8E,\n    0xFFAF, 0xFFCC, 0xFFEE, 0x001D, 0x0062, 0x00C5, 0x014F, 0x0208,\n    0x0318, 0x0488, 0x0635, 0x07FC, 0x09B8, 0x0B46, 0x0C81, 0x0D47,\n    0x0D73, 0x0C94, 0x0A9C, 0x07F7, 0x0516, 0x0266, 0x0057, 0xFF58,\n    0xFF1D, 0xFF0D, 0xFF1F, 0xFF4C, 0xFF89, 0xFFCF, 0x0014, 0x0050,\n    0x007B, 0x008B, 0x008A, 0x0086, 0x0080, 0x0077, 0x006C, 0x0060,\n    0x0052, 0x0042, 0x0031, 0x0020, 0x000D, 0xFFFB, 0xFFE7, 0xFFD3,\n    0xFFBF, 0xFFAB, 0xFF98, 0xFF85, 0xFF73, 0xFF62, 0xFF52, 0xFF43,\n    0xFF36, 0xFF2A, 0xFF21, 0xFF19, 0xFF14, 0xFF12, 0xFF12, 0xFF15,\n    0xFF1C, 0xFF25, 0xFF32, 0xFF43, 0xFF58, 0xFF72, 0xFF93, 0xFFBA,\n    0xFFE7, 0x0018, 0x004F, 0x008A, 0x00C9, 0x010C, 0x0151, 0x0199,\n    0x01E3, 0x022F, 0x027B, 0x02C8, 0x0316, 0x0363, 0x03AF, 0x03FA,\n    0x0444, 0xB74B, 0xB74F, 0xB757, 0xB765, 0xB777, 0xB78C, 0xB7A4,\n    0xB7BE, 0xB7D8, 0xB7F3, 0xB80E, 0xB82A, 0xB84A, 0xB86C, 0xB891,\n    0xB8B6, 0xB8DC, 0xB900, 0xB922, 0xB948, 0xB976, 0xB9A9, 0xB9DA,\n    0xBA07, 0xBA2B, 0xBA41, 0xBA45, 0xBA33, 0xBA01, 0xB9AB, 0xB93D,\n    0xB8C0, 0xB83D, 0xB7BD, 0xB74B, 0xB6DB, 0xB65D, 0xB5D8, 0xB552,\n    0xB4D1, 0xB459, 0xB3F2, 0xB3A2, 0xB36D, 0xB35A, 0xB35C, 0xB363,\n    0xB36E, 0xB37C, 0xB38F, 0xB3A5, 0xB3BD, 0xB3D9, 0xB3F7, 0xB418,\n    0xB43B, 0xB45F, 0xB485, 0xB4AC, 0xB4D5, 0xB4FE, 0xB528, 0xB552,\n    0xB57C, 0xB5A6, 0xB5CF, 0xB5F7, 0xB61F, 0xB645, 0xB66A, 0xB68D,\n    0xB6AD, 0xB6CC, 0xB6E8, 0xB701, 0xB717, 0xB72A, 0xB739, 0xB744,\n    0xB74B, 0xB74E, 0xB74D, 0xB748, 0xB73F, 0xB733, 0xB724, 0xB711,\n    0xB6FD, 0xB6E6, 0xB6CD, 0xB6B2, 0xB695, 0xB678, 0xB659, 0xB639,\n    0xB619, 0xB5F9, 0xB5D9, 0xB5B9, 0xB59A, 0xE0FF, 0xC001, 0xE0FB,\n    0xBF7F, 0x0000, 0xFFF8, 0xFFDF, 0xFFB7, 0xFF84, 0xFF46, 0xFF00,\n    0xFEB4, 0xFE64, 0xFE11, 0xFDBF, 0xFD6F, 0xFD23, 0xFCDD, 0xFC9F,\n    0xFC6C, 0xFC44, 0xFC2B, 0xFC22, 0xFC3D, 0xFC86, 0xFCF1, 0xFD74,\n    0xFE03, 0xFE93, 0xFF1A, 0xFF8B, 0xFFDC, 0x0000, 0x0008, 0x000C,\n    0x000C, 0x0007, 0x0000, 0xFFF4, 0xFFE5, 0xFFD3, 0xFFBE, 0xFFA7,\n    0xFF8E, 0xFF73, 0xFF57, 0xFF3A, 0xFF1D, 0xFEFE, 0xFEE0, 0xFEC2,\n    0xFEA5, 0xFE89, 0xFE6E, 0xFE54, 0xFE3C, 0xFE26, 0xFE13, 0xFE03,\n    0xFDF5, 0xFDEB, 0xFDE5, 0xFDE3, 0xFDE7, 0xFDF1, 0xFE01, 0xFE16,\n    0xFE30, 0xFE4E, 0xFE6F, 0xFE93, 0xFEB8, 0xFEDE, 0xFF05, 0xFF2B,\n    0xFF51, 0xFF74, 0xFF95, 0xFFB3, 0xFFCD, 0xFFE2, 0xFFF3, 0xFFFD,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0017,\n    0x0032, 0x0056, 0x0081, 0x00B1, 0x00E6, 0x011D, 0x0156, 0x018F,\n    0x01C6, 0x01FB, 0x022B, 0x0256, 0x027A, 0x0295, 0x02A6, 0x02AC,\n    0x029F, 0x027B, 0x0243, 0x01FC, 0x01AA, 0x0152, 0x00F7, 0x009D,\n    0x0049, 0x0000, 0xFFBB, 0xFF72, 0xFF26, 0xFED6, 0xFE85, 0xFE31,\n    0xFDDC, 0xFD86, 0xFD2F, 0xFCD7, 0xFC80, 0xFC29, 0xFBD4, 0xFB7F,\n    0xFB2D, 0xFADD, 0xFA8F, 0xFA45, 0xF9FE, 0xF9BB, 0xF97C, 0xF942,\n    0xF90E, 0xF8DF, 0xF8B6, 0xF894, 0xF878, 0xF864, 0xF857, 0xF853,\n    0xF860, 0xF885, 0xF8C0, 0xF90E, 0xF96C, 0xF9D9, 0xFA51, 0xFAD2,\n    0xFB59, 0xFBE4, 0xFC70, 0xFCFB, 0xFD82, 0xFE03, 0xFE7B, 0xFEE7,\n    0xFF46, 0xFF94, 0xFFCE, 0xFFF4, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xFB85, 0xFB9B, 0xFBD8, 0xFC39, 0xFCB7, 0xFD4E, 0xFDF9,\n    0xFEB2, 0xFF76, 0x003D, 0x0105, 0x01C8, 0x0280, 0x032A, 0x03BF,\n    0x043B, 0x0498, 0x04D3, 0x04E5, 0x0497, 0x03CA, 0x02A0, 0x0139,\n    0xFFB8, 0xFE3C, 0xFCE7, 0xFBDA, 0xFB36, 0xFB1D, 0xFB5F, 0xFBB8,\n    0xFC24, 0xFCA3, 0xFD34, 0xFDD3, 0xFE80, 0xFF39, 0xFFFC, 0x00C6,\n    0x0198, 0x026F, 0x0349, 0x0425, 0x0501, 0x05DA, 0x06B1, 0x0782,\n    0x084C, 0x090E, 0x09C5, 0x0A70, 0x0B0D, 0x0B9B, 0x0C18, 0x0C82,\n    0x0CD7, 0x0D16, 0x0D3E, 0x0D4B, 0x0D2C, 0x0CD4, 0x0C49, 0x0B91,\n    0x0AB1, 0x09B0, 0x0894, 0x0763, 0x0623, 0x04DA, 0x038D, 0x0244,\n    0x0104, 0xFFD4, 0xFEB8, 0xFDB7, 0xFCD7, 0xFC1F, 0xFB94, 0xFB3C,\n    0xFB1D, 0xFB1D, 0xFB1D, 0xFB1D, 0xFB1D, 0xFB1D, 0xFB1D, 0xFB1D,\n    0xFB1D, 0xFB1D, 0xFB1D, 0xFB1D, 0xFB1D, 0xFB1D, 0xFB1D, 0xFB1D,\n    0xFB1D, 0xFB1D, 0xFB1D, 0xFB1D, 0xFB1D, 0xBF84, 0x002C, 0xFFE1,\n    0xFF0C, 0xFDBE, 0xFC0B, 0xFA06, 0xF7C0, 0xF54C, 0xF2BD, 0xF026,\n    0xED98, 0xEB27, 0xE8E4, 0xE6E3, 0xE536, 0xE3F0, 0xE322, 0xE2E0,\n    0xE33C, 0xE425, 0xE577, 0xE727, 0xE92D, 0xEB7F, 0xEE12, 0xF0DE,\n    0xF3D8, 0xF6F7, 0xFA31, 0xFD7D, 0x00CF, 0x0420, 0x0766, 0x0A96,\n    0x0DA7, 0x1090, 0x1346, 0x15BF, 0x17F3, 0x19D7, 0x1B62, 0x1C8A,\n    0x1D70, 0x1E3C, 0x1EEF, 0x1F8B, 0x2011, 0x2081, 0x20DD, 0x2126,\n    0x215D, 0x2183, 0x2199, 0x21A1, 0x219B, 0x2189, 0x216B, 0x2143,\n    0x2112, 0x20D9, 0x209A, 0x2054, 0x200A, 0x1FBC, 0x1F6C, 0x1F1B,\n    0x1EC9, 0x1E78, 0x1E2A, 0x1DDE, 0x1D97, 0x1D54, 0x1D19, 0x1CE5,\n    0x1CBA, 0x1C98, 0x1C81, 0x1C77, 0x1C79, 0x1C8A, 0x1CAE, 0x1CE7,\n    0x1D33, 0x1D8E, 0x1DF5, 0x1E65, 0x1EDA, 0x1F52, 0x1FC9, 0x203D,\n    0x20A9, 0x210B, 0x2160, 0x21A4, 0x21D4, 0x21ED, 0x21EC, 0x21CE,\n    0x21A1, 0x2174, 0xFFF1, 0x0008, 0x004E, 0x00BA, 0x0147, 0x01EF,\n    0x02AD, 0x037A, 0x0450, 0x052A, 0x0602, 0x06D2, 0x0794, 0x0842,\n    0x08D6, 0x094A, 0x0999, 0x09BC, 0x09AE, 0x0975, 0x091C, 0x08A7,\n    0x0819, 0x0774, 0x06BB, 0x05F1, 0x0519, 0x0436, 0x034A, 0x0259,\n    0x0165, 0x0071, 0xFF82, 0xFE97, 0xFDB5, 0xFCDF, 0xFC18, 0xFB61,\n    0xFABF, 0xFA34, 0xF9C3, 0xF96F, 0xF92D, 0xF8F0, 0xF8B8, 0xF885,\n    0xF857, 0xF82E, 0xF80A, 0xF7E9, 0xF7CE, 0xF7B6, 0xF7A2, 0xF793,\n    0xF787, 0xF77E, 0xF779, 0xF777, 0xF779, 0xF77D, 0xF785, 0xF78F,\n    0xF79B, 0xF7AA, 0xF7BB, 0xF7CF, 0xF7E4, 0xF7FC, 0xF815, 0xF82F,\n    0xF84B, 0xF868, 0xF887, 0xF8A6, 0xF8C6, 0xF8E7, 0xF909, 0xF92A,\n    0xF94D, 0xF96F, 0xF99B, 0xF9DB, 0xFA2C, 0xFA8B, 0xFAF7, 0xFB6D,\n    0xFBEC, 0xFC70, 0xFCF7, 0xFD80, 0xFE07, 0xFE8C, 0xFF0B, 0xFF83,\n    0xFFF0, 0x0051, 0x00A4, 0x00E6, 0x011B, 0x0146, 0x097D, 0x098B,\n    0x09B3, 0x09F3, 0x0A46, 0x0AAA, 0x0B1C, 0x0B99, 0x0C1D, 0x0CA6,\n    0x0D30, 0x0DB8, 0x0E3B, 0x0EB7, 0x0F27, 0x0F8A, 0x0FDB, 0x1018,\n    0x103D, 0x1050, 0x1058, 0x1057, 0x104D, 0x103B, 0x1021, 0x1002,\n    0x0FDD, 0x0FB3, 0x0F86, 0x0F56, 0x0F23, 0x0EF0, 0x0EBC, 0x0E89,\n    0x0E57, 0x0E28, 0x0DFC, 0x0DD3, 0x0DB0, 0x0D92, 0x0D7A, 0x0D6A,\n    0x0D5F, 0x0D56, 0x0D4F, 0x0D49, 0x0D45, 0x0D42, 0x0D40, 0x0D40,\n    0x0D41, 0x0D43, 0x0D45, 0x0D49, 0x0D4D, 0x0D52, 0x0D57, 0x0D5D,\n    0x0D63, 0x0D69, 0x0D6F, 0x0D76, 0x0D7C, 0x0D82, 0x0D87, 0x0D8C,\n    0x0D91, 0x0D94, 0x0D98, 0x0D9A, 0x0D9B, 0x0D9B, 0x0D9A, 0x0D98,\n    0x0D95, 0x0D90, 0x0D89, 0x0D81, 0x0D76, 0x0D6A, 0x0D5B, 0x0D46,\n    0x0D2B, 0x0D0D, 0x0CEB, 0x0CC5, 0x0C9C, 0x0C70, 0x0C43, 0x0C13,\n    0x0BE3, 0x0BB2, 0x0B80, 0x0B4F, 0x0B1E, 0x0AEF, 0x0AC1, 0x0A95,\n    0x0A6A, 0x0A3E, 0x002C, 0xFFE1, 0xFF0C, 0xFDBE, 0xFC0B, 0xFA06,\n    0xF7C0, 0xF54C, 0xF2BD, 0xF026, 0xED98, 0xEB27, 0xE8E4, 0xE6E3,\n    0xE536, 0xE3F0, 0xE322, 0xE2E0, 0xE33C, 0xE425, 0xE577, 0xE727,\n    0xE92D, 0xEB7F, 0xEE12, 0xF0DE, 0xF3D8, 0xF6F7, 0xFA31, 0xFD7D,\n    0x00CF, 0x0420, 0x0766, 0x0A96, 0x0DA7, 0x1090, 0x1346, 0x15BF,\n    0x17F3, 0x19D7, 0x1B62, 0x1C8A, 0x1D70, 0x1E3C, 0x1EEF, 0x1F8B,\n    0x2011, 0x2081, 0x20DD, 0x2126, 0x215D, 0x2183, 0x2199, 0x21A1,\n    0x219B, 0x2189, 0x216B, 0x2143, 0x2112, 0x20D9, 0x209A, 0x2054,\n    0x200A, 0x1FBC, 0x1F6C, 0x1F1B, 0x1EC9, 0x1E78, 0x1E2A, 0x1DDE,\n    0x1D97, 0x1D54, 0x1D19, 0x1CE5, 0x1CBA, 0x1C98, 0x1C81, 0x1C77,\n    0x1C79, 0x1C8A, 0x1CAE, 0x1CE7, 0x1D33, 0x1D8E, 0x1DF5, 0x1E65,\n    0x1EDA, 0x1F52, 0x1FC9, 0x203D, 0x20A9, 0x210B, 0x2160, 0x21A4,\n    0x21D4, 0x21ED, 0x21EC, 0x21CE, 0x21A1, 0x2174, 0xFFF1, 0x0008,\n    0x004E, 0x00BA, 0x0147, 0x01EF, 0x02AD, 0x037A, 0x0450, 0x052A,\n    0x0602, 0x06D2, 0x0794, 0x0842, 0x08D6, 0x094A, 0x0999, 0x09BC,\n    0x09AE, 0x0975, 0x091C, 0x08A7, 0x0819, 0x0774, 0x06BB, 0x05F1,\n    0x0519, 0x0436, 0x034A, 0x0259, 0x0165, 0x0071, 0xFF82, 0xFE97,\n    0xFDB5, 0xFCDF, 0xFC18, 0xFB61, 0xFABF, 0xFA34, 0xF9C3, 0xF96F,\n    0xF92D, 0xF8F0, 0xF8B8, 0xF885, 0xF857, 0xF82E, 0xF80A, 0xF7E9,\n    0xF7CE, 0xF7B6, 0xF7A2, 0xF793, 0xF787, 0xF77E, 0xF779, 0xF777,\n    0xF779, 0xF77D, 0xF785, 0xF78F, 0xF79B, 0xF7AA, 0xF7BB, 0xF7CF,\n    0xF7E4, 0xF7FC, 0xF815, 0xF82F, 0xF84B, 0xF868, 0xF887, 0xF8A6,\n    0xF8C6, 0xF8E7, 0xF909, 0xF92A, 0xF94D, 0xF96F, 0xF99B, 0xF9DB,\n    0xFA2C, 0xFA8B, 0xFAF7, 0xFB6D, 0xFBEC, 0xFC70, 0xFCF7, 0xFD80,\n    0xFE07, 0xFE8C, 0xFF0B, 0xFF83, 0xFFF0, 0x0051, 0x00A4, 0x00E6,\n    0x011B, 0x0146, 0x097D, 0x098B, 0x09B3, 0x09F3, 0x0A46, 0x0AAA,\n    0x0B1C, 0x0B99, 0x0C1D, 0x0CA6, 0x0D30, 0x0DB8, 0x0E3B, 0x0EB7,\n    0x0F27, 0x0F8A, 0x0FDB, 0x1018, 0x103D, 0x1050, 0x1058, 0x1057,\n    0x104D, 0x103B, 0x1021, 0x1002, 0x0FDD, 0x0FB3, 0x0F86, 0x0F56,\n    0x0F23, 0x0EF0, 0x0EBC, 0x0E89, 0x0E57, 0x0E28, 0x0DFC, 0x0DD3,\n    0x0DB0, 0x0D92, 0x0D7A, 0x0D6A, 0x0D5F, 0x0D56, 0x0D4F, 0x0D49,\n    0x0D45, 0x0D42, 0x0D40, 0x0D40, 0x0D41, 0x0D43, 0x0D45, 0x0D49,\n    0x0D4D, 0x0D52, 0x0D57, 0x0D5D, 0x0D63, 0x0D69, 0x0D6F, 0x0D76,\n    0x0D7C, 0x0D82, 0x0D87, 0x0D8C, 0x0D91, 0x0D94, 0x0D98, 0x0D9A,\n    0x0D9B, 0x0D9B, 0x0D9A, 0x0D98, 0x0D95, 0x0D90, 0x0D89, 0x0D81,\n    0x0D76, 0x0D6A, 0x0D5B, 0x0D46, 0x0D2B, 0x0D0D, 0x0CEB, 0x0CC5,\n    0x0C9C, 0x0C70, 0x0C43, 0x0C13, 0x0BE3, 0x0BB2, 0x0B80, 0x0B4F,\n    0x0B1E, 0x0AEF, 0x0AC1, 0x0A95, 0x0A6A, 0x0A3E, 0x002C, 0xFFE1,\n    0xFF0C, 0xFDBE, 0xFC0B, 0xFA06, 0xF7C0, 0xF54C, 0xF2BD, 0xF026,\n    0xED98, 0xEB27, 0xE8E4, 0xE6E3, 0xE536, 0xE3F0, 0xE322, 0xE2E0,\n    0xE33C, 0xE425, 0xE577, 0xE727, 0xE92D, 0xEB7F, 0xEE12, 0xF0DE,\n    0xF3D8, 0xF6F7, 0xFA31, 0xFD7D, 0x00CF, 0x0420, 0x0766, 0x0A96,\n    0x0DA7, 0x1090, 0x1346, 0x15BF, 0x17F3, 0x19D7, 0x1B62, 0x1C8A,\n    0x1D70, 0x1E3C, 0x1EEF, 0x1F8B, 0x2011, 0x2081, 0x20DD, 0x2126,\n    0x215D, 0x2183, 0x2199, 0x21A1, 0x219B, 0x2189, 0x216B, 0x2143,\n    0x2112, 0x20D9, 0x209A, 0x2054, 0x200A, 0x1FBC, 0x1F6C, 0x1F1B,\n    0x1EC9, 0x1E78, 0x1E2A, 0x1DDE, 0x1D97, 0x1D54, 0x1D19, 0x1CE5,\n    0x1CBA, 0x1C98, 0x1C81, 0x1C77, 0x1C79, 0x1C8A, 0x1CAE, 0x1CE7,\n    0x1D33, 0x1D8E, 0x1DF5, 0x1E65, 0x1EDA, 0x1F52, 0x1FC9, 0x203D,\n    0x20A9, 0x210B, 0x2160, 0x21A4, 0x21D4, 0x21ED, 0x21EC, 0x21CE,\n    0x21A1, 0x2174, 0xFFF1, 0x0008, 0x004E, 0x00BA, 0x0147, 0x01EF,\n    0x02AD, 0x037A, 0x0450, 0x052A, 0x0602, 0x06D2, 0x0794, 0x0842,\n    0x08D6, 0x094A, 0x0999, 0x09BC, 0x09AE, 0x0975, 0x091C, 0x08A7,\n    0x0819, 0x0774, 0x06BB, 0x05F1, 0x0519, 0x0436, 0x034A, 0x0259,\n    0x0165, 0x0071, 0xFF82, 0xFE97, 0xFDB5, 0xFCDF, 0xFC18, 0xFB61,\n    0xFABF, 0xFA34, 0xF9C3, 0xF96F, 0xF92D, 0xF8F0, 0xF8B8, 0xF885,\n    0xF857, 0xF82E, 0xF80A, 0xF7E9, 0xF7CE, 0xF7B6, 0xF7A2, 0xF793,\n    0xF787, 0xF77E, 0xF779, 0xF777, 0xF779, 0xF77D, 0xF785, 0xF78F,\n    0xF79B, 0xF7AA, 0xF7BB, 0xF7CF, 0xF7E4, 0xF7FC, 0xF815, 0xF82F,\n    0xF84B, 0xF868, 0xF887, 0xF8A6, 0xF8C6, 0xF8E7, 0xF909, 0xF92A,\n    0xF94D, 0xF96F, 0xF99B, 0xF9DB, 0xFA2C, 0xFA8B, 0xFAF7, 0xFB6D,\n    0xFBEC, 0xFC70, 0xFCF7, 0xFD80, 0xFE07, 0xFE8C, 0xFF0B, 0xFF83,\n    0xFFF0, 0x0051, 0x00A4, 0x00E6, 0x011B, 0x0146, 0x097D, 0x098B,\n    0x09B3, 0x09F3, 0x0A46, 0x0AAA, 0x0B1C, 0x0B99, 0x0C1D, 0x0CA6,\n    0x0D30, 0x0DB8, 0x0E3B, 0x0EB7, 0x0F27, 0x0F8A, 0x0FDB, 0x1018,\n    0x103D, 0x1050, 0x1058, 0x1057, 0x104D, 0x103B, 0x1021, 0x1002,\n    0x0FDD, 0x0FB3, 0x0F86, 0x0F56, 0x0F23, 0x0EF0, 0x0EBC, 0x0E89,\n    0x0E57, 0x0E28, 0x0DFC, 0x0DD3, 0x0DB0, 0x0D92, 0x0D7A, 0x0D6A,\n    0x0D5F, 0x0D56, 0x0D4F, 0x0D49, 0x0D45, 0x0D42, 0x0D40, 0x0D40,\n    0x0D41, 0x0D43, 0x0D45, 0x0D49, 0x0D4D, 0x0D52, 0x0D57, 0x0D5D,\n    0x0D63, 0x0D69, 0x0D6F, 0x0D76, 0x0D7C, 0x0D82, 0x0D87, 0x0D8C,\n    0x0D91, 0x0D94, 0x0D98, 0x0D9A, 0x0D9B, 0x0D9B, 0x0D9A, 0x0D98,\n    0x0D95, 0x0D90, 0x0D89, 0x0D81, 0x0D76, 0x0D6A, 0x0D5B, 0x0D46,\n    0x0D2B, 0x0D0D, 0x0CEB, 0x0CC5, 0x0C9C, 0x0C70, 0x0C43, 0x0C13,\n    0x0BE3, 0x0BB2, 0x0B80, 0x0B4F, 0x0B1E, 0x0AEF, 0x0AC1, 0x0A95,\n    0x0A6A, 0x0A3E, 0x0000, 0xFFF8, 0xFFDF, 0xFFB7, 0xFF84, 0xFF46,\n    0xFF00, 0xFEB4, 0xFE64, 0xFE11, 0xFDBF, 0xFD6F, 0xFD23, 0xFCDD,\n    0xFC9F, 0xFC6C, 0xFC44, 0xFC2B, 0xFC22, 0xFC3D, 0xFC86, 0xFCF1,\n    0xFD74, 0xFE03, 0xFE93, 0xFF1A, 0xFF8B, 0xFFDC, 0x0000, 0x0008,\n    0x000C, 0x000C, 0x0007, 0x0000, 0xFFF4, 0xFFE5, 0xFFD3, 0xFFBE,\n    0xFFA7, 0xFF8E, 0xFF73, 0xFF57, 0xFF3A, 0xFF1D, 0xFEFE, 0xFEE0,\n    0xFEC2, 0xFEA5, 0xFE89, 0xFE6E, 0xFE54, 0xFE3C, 0xFE26, 0xFE13,\n    0xFE03, 0xFDF5, 0xFDEB, 0xFDE5, 0xFDE3, 0xFDE7, 0xFDF1, 0xFE01,\n    0xFE16, 0xFE30, 0xFE4E, 0xFE6F, 0xFE93, 0xFEB8, 0xFEDE, 0xFF05,\n    0xFF2B, 0xFF51, 0xFF74, 0xFF95, 0xFFB3, 0xFFCD, 0xFFE2, 0xFFF3,\n    0xFFFD, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006,\n    0x0017, 0x0032, 0x0056, 0x0081, 0x00B1, 0x00E6, 0x011D, 0x0156,\n    0x018F, 0x01C6, 0x01FB, 0x022B, 0x0256, 0x027A, 0x0295, 0x02A6,\n    0x02AC, 0x029F, 0x027B, 0x0243, 0x01FC, 0x01AA, 0x0152, 0x00F7,\n    0x009D, 0x0049, 0x0000, 0xFFBB, 0xFF72, 0xFF26, 0xFED6, 0xFE85,\n    0xFE31, 0xFDDC, 0xFD86, 0xFD2F, 0xFCD7, 0xFC80, 0xFC29, 0xFBD4,\n    0xFB7F, 0xFB2D, 0xFADD, 0xFA8F, 0xFA45, 0xF9FE, 0xF9BB, 0xF97C,\n    0xF942, 0xF90E, 0xF8DF, 0xF8B6, 0xF894, 0xF878, 0xF864, 0xF857,\n    0xF853, 0xF860, 0xF885, 0xF8C0, 0xF90E, 0xF96C, 0xF9D9, 0xFA51,\n    0xFAD2, 0xFB59, 0xFBE4, 0xFC70, 0xFCFB, 0xFD82, 0xFE03, 0xFE7B,\n    0xFEE7, 0xFF46, 0xFF94, 0xFFCE, 0xFFF4, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xFB85, 0xFB9B, 0xFBD8, 0xFC39, 0xFCB7, 0xFD4E,\n    0xFDF9, 0xFEB2, 0xFF76, 0x003D, 0x0105, 0x01C8, 0x0280, 0x032A,\n    0x03BF, 0x043B, 0x0498, 0x04D3, 0x04E5, 0x0497, 0x03CA, 0x02A0,\n    0x0139, 0xFFB8, 0xFE3C, 0xFCE7, 0xFBDA, 0xFB36, 0xFB1D, 0xFB5F,\n    0xFBB8, 0xFC24, 0xFCA3, 0xFD34, 0xFDD3, 0xFE80, 0xFF39, 0xFFFC,\n    0x00C6, 0x0198, 0x026F, 0x0349, 0x0425, 0x0501, 0x05DA, 0x06B1,\n    0x0782, 0x084C, 0x090E, 0x09C5, 0x0A70, 0x0B0D, 0x0B9B, 0x0C18,\n    0x0C82, 0x0CD7, 0x0D16, 0x0D3E, 0x0D4B, 0x0D2C, 0x0CD4, 0x0C49,\n    0x0B91, 0x0AB1, 0x09B0, 0x0894, 0x0763, 0x0623, 0x04DA, 0x038D,\n    0x0244, 0x0104, 0xFFD4, 0xFEB8, 0xFDB7, 0xFCD7, 0xFC1F, 0xFB94,\n    0xFB3C, 0xFB1D, 0xFB1D, 0xFB1D, 0xFB1D, 0xFB1D, 0xFB1D, 0xFB1D,\n    0xFB1D, 0xFB1D, 0xFB1D, 0xFB1D, 0xFB1D, 0xFB1D, 0xFB1D, 0xFB1D,\n    0xFB1D, 0xFB1D, 0xFB1D, 0xFB1D, 0xFB1D, 0xFB1D, 0x0000, 0x0000,\n    0x0003, 0x0007, 0x000D, 0x0014, 0x001D, 0x0027, 0x0033, 0x003F,\n    0x004D, 0x005C, 0x006C, 0x007D, 0x008F, 0x00A2, 0x00B5, 0x00C9,\n    0x00DE, 0x00F3, 0x0109, 0x011F, 0x0136, 0x014D, 0x0164, 0x017B,\n    0x0193, 0x01AA, 0x01C1, 0x01D9, 0x01F0, 0x0207, 0x021D, 0x0233,\n    0x0249, 0x025E, 0x0273, 0x0286, 0x029A, 0x02AC, 0x02BE, 0x02CE,\n    0x02DE, 0x02EC, 0x02FA, 0x0306, 0x0311, 0x031B, 0x0323, 0x032A,\n    0x032F, 0x0333, 0x0335, 0x0335, 0x0334, 0x0330, 0x032B, 0x0324,\n    0x031A, 0x030F, 0x0301, 0x02F1, 0x02DF, 0x02CA, 0x02B3, 0x0299,\n    0x027D, 0x025E, 0x023C, 0x0217, 0x01F0, 0x01C5, 0x0198, 0x0167,\n    0x0134, 0x00FD, 0x00C2, 0x0085, 0x0044, 0x0000, 0xFFA3, 0xFF1A,\n    0xFE68, 0xFD92, 0xFC99, 0xFB81, 0xFA4E, 0xF904, 0xF7A4, 0xF633,\n    0xF4B4, 0xF32A, 0xF199, 0xF003, 0xEE6D, 0xECD8, 0xEB4A, 0xE9C5,\n    0xE84C, 0xE6E3, 0x3FFF, 0x0000,\n};\n\n// 0x0500C530\nstatic const u16 peach_seg5_animindex_500C530[] = {\n    0x0064, 0x0001, 0x0064, 0x0065, 0x0064, 0x00C9, 0x0001, 0x012D, 0x0001, 0x012E, 0x0001, 0x012F,\n    0x0064, 0x119E, 0x0001, 0x0000, 0x0001, 0x1202,\n    0x0064, 0x1072, 0x0064, 0x10D6, 0x0064, 0x113A,\n    0x0064, 0x0F46, 0x0064, 0x0FAA, 0x0064, 0x100E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0964,\n    0x0064, 0x0130, 0x0064, 0x0194, 0x0064, 0x01F8,\n    0x0064, 0x0E1A, 0x0064, 0x0E7E, 0x0064, 0x0EE2,\n    0x0064, 0x0CEE, 0x0064, 0x0D52, 0x0064, 0x0DB6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0CED,\n    0x0064, 0x0965, 0x0064, 0x09C9, 0x0064, 0x0A2D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0064, 0x0388,\n    0x0064, 0x025C, 0x0064, 0x02C0, 0x0064, 0x0324,\n    0x0064, 0x03EC, 0x0064, 0x0450, 0x0064, 0x04B4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0BC0,\n    0x0064, 0x0A91, 0x0064, 0x0AF5, 0x0064, 0x0B59,\n    0x0001, 0x0000, 0x0064, 0x0644, 0x0064, 0x06A8,\n    0x0064, 0x0518, 0x0064, 0x057C, 0x0064, 0x05E0,\n    0x0064, 0x070C, 0x0064, 0x0770, 0x0064, 0x07D4,\n    0x0064, 0x0BC1, 0x0064, 0x0C25, 0x0064, 0x0C89,\n    0x0001, 0x0BBD, 0x0001, 0x0BBE, 0x0001, 0x0BBF,\n    0x0064, 0x0838, 0x0064, 0x089C, 0x0064, 0x0900,\n};\n\n// 0x0500C638\nstatic const struct Animation peach_seg5_anim_0500C638 = {\n    1,\n    0,\n    0,\n    0,\n    0x64,\n    ANIMINDEX_NUMPARTS(peach_seg5_animindex_500C530),\n    peach_seg5_animvalue_0500A128,\n    peach_seg5_animindex_500C530,\n    0,\n};\n"
  },
  {
    "path": "actors/peach/anims/anim_0500E6B4.inc.c",
    "content": "// 0x0500C650\nstatic const s16 peach_seg5_animvalue_0500C650[] = {\n    0x0000, 0xFFA4, 0xFF9D, 0xFF97, 0xFF90, 0xFF8A, 0xFF83, 0xFF7D,\n    0xFF77, 0xFF71, 0xFF6B, 0xFF65, 0xFF60, 0xFF5A, 0xFF55, 0xFF50,\n    0xFF4C, 0xFF47, 0xFF43, 0xFF40, 0xFF3C, 0xFF39, 0xFF37, 0xFF34,\n    0xFF33, 0xFF31, 0xFF31, 0xFF30, 0xFF30, 0xFF32, 0xFF33, 0xFF36,\n    0xFF3A, 0xFF3E, 0xFF42, 0xFF48, 0xFF4D, 0xFF53, 0xFF5A, 0xFF61,\n    0xFF68, 0xFF70, 0xFF78, 0xFF7F, 0xFF87, 0xFF8F, 0xFF98, 0xFFA0,\n    0xFFA7, 0xFFAF, 0xFFB7, 0xFFBE, 0xFFC5, 0xFFCC, 0xFFD2, 0xFFD8,\n    0xFFDD, 0xFFE1, 0xFFE6, 0xFFE9, 0xFFEC, 0xFFEE, 0xFFEF, 0xFFEF,\n    0xFFEF, 0xFFEF, 0xFFEF, 0xFFEF, 0xFFEF, 0xFFEF, 0xFFEF, 0xFFF0,\n    0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0,\n    0xFFF0, 0xFFF0, 0xFFF0, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1,\n    0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF2, 0xFFF2, 0xFFF2,\n    0xFFF2, 0xFFF2, 0xFFF2, 0xFFF2, 0xFFF2, 0x015F, 0x0160, 0x0160,\n    0x0161, 0x0162, 0x0163, 0x0164, 0x0165, 0x0165, 0x0165, 0x0164,\n    0x0163, 0x0163, 0x0162, 0x0161, 0x0160, 0x015F, 0x015E, 0x015E,\n    0x015E, 0x015E, 0x015F, 0x0160, 0x0161, 0x0161, 0x0162, 0x0163,\n    0x0164, 0x0164, 0x0163, 0x0163, 0x0162, 0x0161, 0x0160, 0x015F,\n    0x015E, 0x015E, 0x015E, 0x015E, 0x015F, 0x0160, 0x0161, 0x0163,\n    0x0164, 0x0165, 0x0166, 0x0167, 0x0167, 0x0167, 0x0167, 0x0166,\n    0x0165, 0x0163, 0x0162, 0x0161, 0x0160, 0x015F, 0x015E, 0x015E,\n    0x015F, 0x015F, 0x0160, 0x0160, 0x0161, 0x0162, 0x0163, 0x0164,\n    0x0165, 0x0165, 0x0166, 0x0167, 0x0167, 0x0167, 0x0168, 0x0167,\n    0x0167, 0x0167, 0x0166, 0x0165, 0x0164, 0x0163, 0x0163, 0x0162,\n    0x0161, 0x0160, 0x015F, 0x015F, 0x015E, 0x015E, 0x015E, 0x015E,\n    0x015E, 0x015F, 0x0160, 0x0161, 0x0161, 0x0162, 0x0163, 0x0164,\n    0x0165, 0xFFE1, 0xFFDF, 0xFFDE, 0xFFDC, 0xFFDA, 0xFFD7, 0xFFD4,\n    0xFFD0, 0xFFCC, 0xFFC7, 0xFFC2, 0xFFBC, 0xFFB5, 0xFFAC, 0xFFA2,\n    0xFF97, 0xFF8B, 0xFF7E, 0xFF70, 0xFF61, 0xFF51, 0xFF41, 0xFF31,\n    0xFF20, 0xFF0F, 0xFEFE, 0xFEED, 0xFEDC, 0xFECB, 0xFEBB, 0xFEAB,\n    0xFE9C, 0xFE8D, 0xFE7F, 0xFE71, 0xFE63, 0xFE55, 0xFE47, 0xFE39,\n    0xFE2B, 0xFE1D, 0xFE0F, 0xFE01, 0xFDF3, 0xFDE5, 0xFDD7, 0xFDC8,\n    0xFDB9, 0xFDAA, 0xFD9B, 0xFD8C, 0xFD7C, 0xFD6C, 0xFD5B, 0xFD4A,\n    0xFD39, 0xFD28, 0xFD16, 0xFD05, 0xFCF4, 0xFCE3, 0xFCD1, 0xFCC0,\n    0xFCAF, 0xFC9E, 0xFC8D, 0xFC7C, 0xFC6A, 0xFC59, 0xFC48, 0xFC37,\n    0xFC26, 0xFC15, 0xFC04, 0xFBF3, 0xFBE2, 0xFBD1, 0xFBC0, 0xFBAF,\n    0xFB9E, 0xFB8D, 0xFB7C, 0xFB6B, 0xFB5B, 0xFB4A, 0xFB39, 0xFB28,\n    0xFB17, 0xFB06, 0xFAF5, 0xFAE5, 0xFAD4, 0xFAC3, 0xFAB2, 0xFAA2,\n    0xFA91, 0xFA80, 0xFA6F, 0xFA5F, 0xFA4E, 0xC50F, 0x3FFA, 0xC50F,\n    0x0893, 0x082F, 0x07C7, 0x075B, 0x06EC, 0x067B, 0x0607, 0x0592,\n    0x051B, 0x04A3, 0x042B, 0x03B2, 0x033A, 0x02C2, 0x024B, 0x01D5,\n    0x0162, 0x00F0, 0x0081, 0x0015, 0xFFAE, 0xFF49, 0xFEE9, 0xFE8D,\n    0xFE36, 0xFDE4, 0xFD98, 0xFD53, 0xFD17, 0xFCE7, 0xFCC2, 0xFCA8,\n    0xFC97, 0xFC8E, 0xFC8D, 0xFC92, 0xFC9D, 0xFCAB, 0xFCBE, 0xFCD3,\n    0xFCE9, 0xFD00, 0xFD16, 0xFD2C, 0xFD3E, 0xFD4E, 0xFD68, 0xFD97,\n    0xFDD4, 0xFE18, 0xFE5B, 0xFE97, 0xFED0, 0xFF0E, 0xFF4D, 0xFF89,\n    0xFFBE, 0xFFE7, 0x0000, 0x000E, 0x0018, 0x001F, 0x0023, 0x0024,\n    0x0023, 0x0020, 0x001C, 0x0017, 0x0012, 0x000C, 0x0007, 0x0003,\n    0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0344, 0x0366, 0x0388, 0x03A9,\n    0x03C9, 0x03E8, 0x0407, 0x0425, 0x0443, 0x0460, 0x047D, 0x049A,\n    0x04B7, 0x04D4, 0x04F0, 0x050D, 0x052B, 0x05BA, 0x06F6, 0x08AF,\n    0x0AB8, 0x0CE1, 0x0EFB, 0x10D7, 0x1247, 0x131C, 0x1321, 0x1210,\n    0x100D, 0x0D4C, 0x0A02, 0x0664, 0x02A8, 0xFF04, 0xFBAA, 0xF8D1,\n    0xF6AE, 0xF575, 0xF535, 0xF5A7, 0xF6AC, 0xF827, 0xF9FC, 0xFC0E,\n    0xFE40, 0x0073, 0x028F, 0x0473, 0x0604, 0x0725, 0x07B3, 0x073F,\n    0x05E9, 0x0409, 0x01F7, 0x000A, 0xFE9B, 0xFDFF, 0xFDFC, 0xFE24,\n    0xFE72, 0xFEDF, 0xFF67, 0x0001, 0x00AA, 0x015B, 0x020E, 0x02BD,\n    0x0363, 0x03FA, 0x047B, 0x04E1, 0x0526, 0x054C, 0x055F, 0x0563,\n    0x0559, 0x0543, 0x0524, 0x04FC, 0x04CF, 0x049E, 0x046A, 0x0437,\n    0x0406, 0x03D9, 0x03B2, 0x0392, 0x037D, 0x0374, 0x0375, 0x037C,\n    0x0388, 0x0399, 0x03AE, 0x03C7, 0x03E2, 0x03FF, 0x041D, 0x043C,\n    0xCB8A, 0xCC14, 0xCCA4, 0xCD39, 0xCDD1, 0xCE6C, 0xCF08, 0xCFA4,\n    0xD040, 0xD0DA, 0xD172, 0xD205, 0xD293, 0xD31C, 0xD39D, 0xD416,\n    0xD486, 0xD4EC, 0xD547, 0xD595, 0xD5D6, 0xD608, 0xD62A, 0xD63D,\n    0xD641, 0xD639, 0xD626, 0xD608, 0xD5E1, 0xD5B2, 0xD57B, 0xD53E,\n    0xD4FB, 0xD4B3, 0xD468, 0xD41A, 0xD3CA, 0xD379, 0xD329, 0xD2D9,\n    0xD28C, 0xD241, 0xD1FA, 0xD1B8, 0xD17C, 0xD146, 0xD119, 0xD0F5,\n    0xD0D9, 0xD0C5, 0xD0B8, 0xD0B2, 0xD0B3, 0xD0BF, 0xD0D0, 0xD0E5,\n    0xD0F9, 0xD109, 0xD112, 0xD116, 0xD119, 0xD11A, 0xD11B, 0xD11C,\n    0xD11B, 0xD11B, 0xD11A, 0xD118, 0xD117, 0xD115, 0xD114, 0xD113,\n    0xD112, 0xD112, 0xD112, 0xD112, 0xD112, 0xD112, 0xD112, 0xD112,\n    0xD112, 0xD112, 0xD112, 0xD112, 0xD112, 0xD112, 0xD112, 0xD112,\n    0xD112, 0xD112, 0xD112, 0xD112, 0xD112, 0xD112, 0xD112, 0xD112,\n    0xD112, 0xD112, 0xD112, 0xD112, 0x0CBB, 0x0C66, 0x0C12, 0x0BBF,\n    0x0B6E, 0x0B1D, 0x0ACF, 0x0A82, 0x0A36, 0x09EC, 0x09A4, 0x095E,\n    0x0919, 0x08D1, 0x0889, 0x083F, 0x07F4, 0x07A9, 0x075C, 0x070F,\n    0x06C1, 0x0673, 0x0625, 0x05D7, 0x0588, 0x053A, 0x04EC, 0x049E,\n    0x0450, 0x0404, 0x03B8, 0x036D, 0x0323, 0x02DA, 0x0293, 0x024C,\n    0x0208, 0x01C5, 0x0184, 0x0144, 0x0107, 0x00CC, 0x0094, 0x005D,\n    0x002A, 0xFFFA, 0xFFCB, 0xFFA0, 0xFF78, 0xFF53, 0xFF31, 0xFF13,\n    0xFEF9, 0xFEE2, 0xFECF, 0xFEC0, 0xFEB5, 0xFEAF, 0xFEAC, 0xFEAC,\n    0xFEAC, 0xFEAC, 0xFEAC, 0xFEAC, 0xFEAC, 0xFEAC, 0xFEAC, 0xFEAC,\n    0xFEAC, 0xFEAC, 0xFEAC, 0xFEAC, 0xFEAC, 0xFEAC, 0xFEAC, 0xFEAC,\n    0xFEAC, 0xFEAC, 0xFEAC, 0xFEAC, 0xFEAC, 0xFEAC, 0xFEAC, 0xFEAC,\n    0xFEAC, 0xFEAC, 0xFEAC, 0xFEAC, 0xFEAC, 0xFEAC, 0xFEAC, 0xFEAC,\n    0xFEAC, 0xFEAC, 0xFEAC, 0xFEAC, 0xFEAC, 0xFEAC, 0xFEAC, 0xFEAC,\n    0xF7C5, 0xF853, 0xF8E0, 0xF96A, 0xF9F2, 0xFA78, 0xFAFB, 0xFB7C,\n    0xFBF9, 0xFC73, 0xFCEA, 0xFD5E, 0xFDD1, 0xFE47, 0xFEC0, 0xFF3A,\n    0xFFB6, 0x0033, 0x00B2, 0x0133, 0x01B5, 0x0237, 0x02BA, 0x033D,\n    0x03C1, 0x0444, 0x04C7, 0x054A, 0x05CB, 0x064C, 0x06CC, 0x074A,\n    0x07C6, 0x0841, 0x08B9, 0x092F, 0x09A3, 0x0A14, 0x0A82, 0x0AED,\n    0x0B54, 0x0BB8, 0x0C17, 0x0C73, 0x0CCA, 0x0D1D, 0x0D6B, 0x0DB5,\n    0x0DF8, 0x0E37, 0x0E70, 0x0EA3, 0x0ED0, 0x0EF6, 0x0F17, 0x0F30,\n    0x0F42, 0x0F4D, 0x0F51, 0x0F51, 0x0F51, 0x0F51, 0x0F51, 0x0F51,\n    0x0F51, 0x0F51, 0x0F51, 0x0F51, 0x0F51, 0x0F51, 0x0F51, 0x0F51,\n    0x0F51, 0x0F51, 0x0F51, 0x0F51, 0x0F51, 0x0F51, 0x0F51, 0x0F51,\n    0x0F51, 0x0F51, 0x0F51, 0x0F51, 0x0F51, 0x0F51, 0x0F51, 0x0F51,\n    0x0F51, 0x0F51, 0x0F51, 0x0F51, 0x0F51, 0x0F51, 0x0F51, 0x0F51,\n    0x0F51, 0x0F51, 0x0F51, 0x0F51, 0xECF6, 0xED95, 0xEE30, 0xEEC6,\n    0xEF59, 0xEFE6, 0xF06F, 0xF0F2, 0xF170, 0xF1E8, 0xF25B, 0xF2C7,\n    0xF32E, 0xF391, 0xF3F1, 0xF44D, 0xF4A5, 0xF4FA, 0xF54B, 0xF599,\n    0xF5E4, 0xF62B, 0xF66F, 0xF6B0, 0xF6EE, 0xF729, 0xF761, 0xF796,\n    0xF7C9, 0xF7F9, 0xF826, 0xF850, 0xF879, 0xF89E, 0xF8C2, 0xF8E3,\n    0xF902, 0xF91E, 0xF939, 0xF952, 0xF969, 0xF97E, 0xF991, 0xF9A2,\n    0xF9B2, 0xF9C0, 0xF9CD, 0xF9D8, 0xF9E2, 0xF9EB, 0xF9F3, 0xF9F9,\n    0xF9FE, 0xFA02, 0xFA06, 0xFA08, 0xFA0A, 0xFA0B, 0xFA0B, 0xFA0B,\n    0xFA0B, 0xFA0B, 0xFA0B, 0xFA0B, 0xFA0B, 0xFA0B, 0xFA0B, 0xFA0B,\n    0xFA0B, 0xFA0B, 0xFA0B, 0xFA0B, 0xFA0B, 0xFA0B, 0xFA0B, 0xFA0B,\n    0xFA0B, 0xFA0B, 0xFA0B, 0xFA0B, 0xFA0B, 0xFA0B, 0xFA0B, 0xFA0B,\n    0xFA0B, 0xFA0B, 0xFA0B, 0xFA0B, 0xFA0B, 0xFA0B, 0xFA0B, 0xFA0B,\n    0xFA0B, 0xFA0B, 0xFA0B, 0xFA0B, 0xFA0B, 0xFA0B, 0xFA0B, 0xFA0B,\n    0xD767, 0xD702, 0xD6A6, 0xD653, 0xD60B, 0xD5CD, 0xD59B, 0xD575,\n    0xD55A, 0xD54B, 0xD543, 0xD542, 0xD549, 0xD556, 0xD569, 0xD583,\n    0xD5A3, 0xD5C8, 0xD5F3, 0xD622, 0xD656, 0xD68E, 0xD6CB, 0xD70B,\n    0xD74E, 0xD795, 0xD7DF, 0xD82B, 0xD879, 0xD8C9, 0xD91B, 0xD96E,\n    0xD9C2, 0xDA16, 0xDA6C, 0xDAC1, 0xDB16, 0xDB6A, 0xDBBE, 0xDC11,\n    0xDC62, 0xDCB1, 0xDCFE, 0xDD49, 0xDD92, 0xDDD7, 0xDE19, 0xDE58,\n    0xDE93, 0xDEC9, 0xDEFB, 0xDF29, 0xDF51, 0xDF74, 0xDF91, 0xDFA9,\n    0xDFBA, 0xDFC4, 0xDFC8, 0xDFC8, 0xDFC8, 0xDFC8, 0xDFC8, 0xDFC8,\n    0xDFC8, 0xDFC8, 0xDFC8, 0xDFC8, 0xDFC8, 0xDFC8, 0xDFC8, 0xDFC8,\n    0xDFC8, 0xDFC8, 0xDFC8, 0xDFC8, 0xDFC8, 0xDFC8, 0xDFC8, 0xDFC8,\n    0xDFC8, 0xDFC8, 0xDFC8, 0xDFC8, 0xDFC8, 0xDFC8, 0xDFC8, 0xDFC8,\n    0xDFC8, 0xDFC8, 0xDFC8, 0xDFC8, 0xDFC8, 0xDFC8, 0xDFC8, 0xDFC8,\n    0xDFC8, 0xDFC8, 0xDFC8, 0xDFC8, 0x0CFF, 0x0DEB, 0x0ED1, 0x0FB0,\n    0x1088, 0x1157, 0x121F, 0x12DD, 0x1392, 0x143C, 0x14DC, 0x1570,\n    0x15FF, 0x168D, 0x171B, 0x17A8, 0x1835, 0x18C0, 0x194B, 0x19D5,\n    0x1A5D, 0x1AE4, 0x1B6A, 0x1BEF, 0x1C71, 0x1CF2, 0x1D71, 0x1DEE,\n    0x1E69, 0x1EE1, 0x1F57, 0x1FCB, 0x203C, 0x20AA, 0x2116, 0x217E,\n    0x21E3, 0x2246, 0x22A4, 0x2300, 0x2358, 0x23AC, 0x23FC, 0x2448,\n    0x2491, 0x24D5, 0x2514, 0x2550, 0x2587, 0x25B9, 0x25E6, 0x260F,\n    0x2632, 0x2651, 0x266A, 0x267E, 0x268C, 0x2695, 0x2697, 0x2697,\n    0x2697, 0x2697, 0x2697, 0x2697, 0x2697, 0x2697, 0x2697, 0x2697,\n    0x2697, 0x2697, 0x2697, 0x2697, 0x2697, 0x2697, 0x2697, 0x2697,\n    0x2697, 0x2697, 0x2697, 0x2697, 0x2697, 0x2697, 0x2697, 0x2697,\n    0x2697, 0x2697, 0x2697, 0x2697, 0x2697, 0x2697, 0x2697, 0x2697,\n    0x2697, 0x2697, 0x2697, 0x2697, 0x2697, 0x2697, 0x2697, 0x2697,\n    0xF83B, 0xF87D, 0xF8BE, 0xF8FD, 0xF93A, 0xF976, 0xF9B0, 0xF9E9,\n    0xFA1F, 0xFA53, 0xFA86, 0xFAB6, 0xFAE4, 0xFB12, 0xFB3E, 0xFB69,\n    0xFB93, 0xFBBC, 0xFBE4, 0xFC0B, 0xFC31, 0xFC56, 0xFC79, 0xFC9C,\n    0xFCBD, 0xFCDE, 0xFCFD, 0xFD1B, 0xFD39, 0xFD55, 0xFD70, 0xFD8A,\n    0xFDA4, 0xFDBC, 0xFDD3, 0xFDE9, 0xFDFE, 0xFE12, 0xFE26, 0xFE38,\n    0xFE49, 0xFE59, 0xFE69, 0xFE77, 0xFE84, 0xFE91, 0xFE9C, 0xFEA7,\n    0xFEB0, 0xFEB9, 0xFEC0, 0xFEC7, 0xFECD, 0xFED2, 0xFED6, 0xFED9,\n    0xFEDB, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD,\n    0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD,\n    0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD,\n    0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD,\n    0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD,\n    0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xBF8C, 0xBF2E, 0xBED2, 0xBE79,\n    0xBE24, 0xBDD1, 0xBD82, 0xBD37, 0xBCF0, 0xBCAC, 0xBC6E, 0xBC34,\n    0xBBFC, 0xBBC5, 0xBB8F, 0xBB59, 0xBB24, 0xBAEF, 0xBABC, 0xBA88,\n    0xBA56, 0xBA25, 0xB9F4, 0xB9C4, 0xB995, 0xB967, 0xB939, 0xB90D,\n    0xB8E2, 0xB8B7, 0xB88E, 0xB866, 0xB83E, 0xB818, 0xB7F3, 0xB7D0,\n    0xB7AD, 0xB78C, 0xB76C, 0xB74D, 0xB72F, 0xB713, 0xB6F8, 0xB6DF,\n    0xB6C7, 0xB6B1, 0xB69C, 0xB688, 0xB676, 0xB666, 0xB657, 0xB64A,\n    0xB63F, 0xB635, 0xB62D, 0xB626, 0xB622, 0xB61F, 0xB61E, 0xB61E,\n    0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E,\n    0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E,\n    0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E,\n    0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E,\n    0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E,\n    0xF917, 0xFACF, 0xFC7A, 0xFE13, 0xFF93, 0x00F2, 0x022C, 0x0339,\n    0x0413, 0x04B3, 0x0513, 0x052C, 0x0517, 0x04EF, 0x04B7, 0x046D,\n    0x0414, 0x03AD, 0x0337, 0x02B4, 0x0225, 0x018A, 0x00E5, 0x0035,\n    0xFF7E, 0xFEBD, 0xFDF4, 0xFD25, 0xFC50, 0xFB76, 0xFA98, 0xF9B7,\n    0xF8D2, 0xF7EC, 0xF706, 0xF61E, 0xF538, 0xF453, 0xF370, 0xF291,\n    0xF1B5, 0xF0DE, 0xF00D, 0xEF42, 0xEE7E, 0xEDC3, 0xED10, 0xEC66,\n    0xEBC8, 0xEB34, 0xEAAD, 0xEA32, 0xE9C5, 0xE967, 0xE917, 0xE8D9,\n    0xE8AB, 0xE88E, 0xE885, 0xE885, 0xE885, 0xE885, 0xE885, 0xE885,\n    0xE885, 0xE885, 0xE885, 0xE885, 0xE885, 0xE885, 0xE885, 0xE885,\n    0xE885, 0xE885, 0xE885, 0xE885, 0xE885, 0xE885, 0xE885, 0xE885,\n    0xE885, 0xE885, 0xE885, 0xE885, 0xE885, 0xE885, 0xE885, 0xE885,\n    0xE885, 0xE885, 0xE885, 0xE885, 0xE885, 0xE885, 0xE885, 0xE885,\n    0xE885, 0xE885, 0xE885, 0xE885, 0xF445, 0xF4D8, 0xF570, 0xF609,\n    0xF69F, 0xF72C, 0xF7AC, 0xF81C, 0xF875, 0xF8B5, 0xF8D5, 0xF8D3,\n    0xF8BA, 0xF89B, 0xF876, 0xF84D, 0xF81E, 0xF7EA, 0xF7B2, 0xF776,\n    0xF735, 0xF6F2, 0xF6AA, 0xF660, 0xF613, 0xF5C3, 0xF571, 0xF51E,\n    0xF4C8, 0xF471, 0xF419, 0xF3C1, 0xF367, 0xF30E, 0xF2B4, 0xF25B,\n    0xF203, 0xF1AB, 0xF155, 0xF100, 0xF0AC, 0xF05B, 0xF00C, 0xEFC0,\n    0xEF76, 0xEF30, 0xEEED, 0xEEAE, 0xEE73, 0xEE3C, 0xEE0A, 0xEDDC,\n    0xEDB4, 0xED91, 0xED74, 0xED5D, 0xED4C, 0xED42, 0xED3E, 0xED3E,\n    0xED3E, 0xED3E, 0xED3E, 0xED3E, 0xED3E, 0xED3E, 0xED3E, 0xED3E,\n    0xED3E, 0xED3E, 0xED3E, 0xED3E, 0xED3E, 0xED3E, 0xED3E, 0xED3E,\n    0xED3E, 0xED3E, 0xED3E, 0xED3E, 0xED3E, 0xED3E, 0xED3E, 0xED3E,\n    0xED3E, 0xED3E, 0xED3E, 0xED3E, 0xED3E, 0xED3E, 0xED3E, 0xED3E,\n    0xED3E, 0xED3E, 0xED3E, 0xED3E, 0xED3E, 0xED3E, 0xED3E, 0xED3E,\n    0xEE97, 0xEF26, 0xEFB2, 0xF038, 0xF0BA, 0xF136, 0xF1AC, 0xF21B,\n    0xF281, 0xF2DF, 0xF334, 0xF37F, 0xF3C4, 0xF40A, 0xF44E, 0xF493,\n    0xF4D6, 0xF51A, 0xF55C, 0xF59E, 0xF5E0, 0xF620, 0xF660, 0xF69F,\n    0xF6DD, 0xF71A, 0xF756, 0xF791, 0xF7CB, 0xF804, 0xF83C, 0xF872,\n    0xF8A7, 0xF8DB, 0xF90D, 0xF93E, 0xF96E, 0xF99B, 0xF9C7, 0xF9F2,\n    0xFA1B, 0xFA42, 0xFA67, 0xFA8A, 0xFAAC, 0xFACB, 0xFAE9, 0xFB04,\n    0xFB1E, 0xFB35, 0xFB4A, 0xFB5C, 0xFB6D, 0xFB7B, 0xFB86, 0xFB8F,\n    0xFB96, 0xFB9A, 0xFB9B, 0xFB9B, 0xFB9B, 0xFB9B, 0xFB9B, 0xFB9B,\n    0xFB9B, 0xFB9B, 0xFB9B, 0xFB9B, 0xFB9B, 0xFB9B, 0xFB9B, 0xFB9B,\n    0xFB9B, 0xFB9B, 0xFB9B, 0xFB9B, 0xFB9B, 0xFB9B, 0xFB9B, 0xFB9B,\n    0xFB9B, 0xFB9B, 0xFB9B, 0xFB9B, 0xFB9B, 0xFB9B, 0xFB9B, 0xFB9B,\n    0xFB9B, 0xFB9B, 0xFB9B, 0xFB9B, 0xFB9B, 0xFB9B, 0xFB9B, 0xFB9B,\n    0xFB9B, 0xFB9B, 0xFB9B, 0xFB9B, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0xD11D, 0xD289, 0xD3E8, 0xD538, 0xD676, 0xD7A1, 0xD8B6, 0xD9B4,\n    0xDA97, 0xDB5E, 0xDC07, 0xDC90, 0xDD03, 0xDD6A, 0xDDC8, 0xDE1B,\n    0xDE65, 0xDEA5, 0xDEDD, 0xDF0C, 0xDF33, 0xDF53, 0xDF6A, 0xDF7B,\n    0xDF85, 0xDF89, 0xDF87, 0xDF7F, 0xDF72, 0xDF5F, 0xDF49, 0xDF2E,\n    0xDF0F, 0xDEED, 0xDEC8, 0xDEA0, 0xDE76, 0xDE4A, 0xDE1C, 0xDDED,\n    0xDDBD, 0xDD8C, 0xDD5B, 0xDD2A, 0xDCFA, 0xDCCB, 0xDC9D, 0xDC71,\n    0xDC46, 0xDC1E, 0xDBF8, 0xDBD6, 0xDBB7, 0xDB9C, 0xDB85, 0xDB72,\n    0xDB64, 0xDB5C, 0xDB59, 0xDB59, 0xDB59, 0xDB59, 0xDB59, 0xDB59,\n    0xDB59, 0xDB59, 0xDB59, 0xDB59, 0xDB59, 0xDB59, 0xDB59, 0xDB59,\n    0xDB59, 0xDB59, 0xDB59, 0xDB59, 0xDB59, 0xDB59, 0xDB59, 0xDB59,\n    0xDB59, 0xDB59, 0xDB59, 0xDB59, 0xDB59, 0xDB59, 0xDB59, 0xDB59,\n    0xDB59, 0xDB59, 0xDB59, 0xDB59, 0xDB59, 0xDB59, 0xDB59, 0xDB59,\n    0xDB59, 0xDB59, 0xDB59, 0xDB59, 0xD85C, 0xD86D, 0xD87F, 0xD890,\n    0xD8A2, 0xD8B3, 0xD8C4, 0xD8D5, 0xD8E4, 0xD8F3, 0xD900, 0xD90D,\n    0xD919, 0xD926, 0xD934, 0xD943, 0xD953, 0xD963, 0xD974, 0xD986,\n    0xD999, 0xD9AC, 0xD9BF, 0xD9D3, 0xD9E8, 0xD9FC, 0xDA11, 0xDA26,\n    0xDA3C, 0xDA51, 0xDA67, 0xDA7C, 0xDA92, 0xDAA7, 0xDABC, 0xDAD1,\n    0xDAE6, 0xDAFB, 0xDB0F, 0xDB22, 0xDB35, 0xDB48, 0xDB5A, 0xDB6B,\n    0xDB7B, 0xDB8B, 0xDB9A, 0xDBA8, 0xDBB5, 0xDBC2, 0xDBCD, 0xDBD7,\n    0xDBDF, 0xDBE7, 0xDBED, 0xDBF3, 0xDBF6, 0xDBF8, 0xDBF9, 0xDBF9,\n    0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9,\n    0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9,\n    0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9,\n    0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9,\n    0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9,\n    0x048B, 0x04D0, 0x0512, 0x0550, 0x058A, 0x05BF, 0x05F0, 0x061C,\n    0x0641, 0x0660, 0x0679, 0x068A, 0x0696, 0x069E, 0x06A4, 0x06A7,\n    0x06A7, 0x06A4, 0x069F, 0x0698, 0x068E, 0x0682, 0x0675, 0x0665,\n    0x0653, 0x0640, 0x062C, 0x0616, 0x05FF, 0x05E7, 0x05CE, 0x05B3,\n    0x0599, 0x057D, 0x0561, 0x0545, 0x0529, 0x050C, 0x04F0, 0x04D3,\n    0x04B7, 0x049C, 0x0481, 0x0466, 0x044C, 0x0434, 0x041C, 0x0405,\n    0x03F0, 0x03DC, 0x03CA, 0x03BA, 0x03AB, 0x039E, 0x0393, 0x038A,\n    0x0384, 0x0380, 0x037F, 0x037F, 0x037F, 0x037F, 0x037F, 0x037F,\n    0x037F, 0x037F, 0x037F, 0x037F, 0x037F, 0x037F, 0x037F, 0x037F,\n    0x037F, 0x037F, 0x037F, 0x037F, 0x037F, 0x037F, 0x037F, 0x037F,\n    0x037F, 0x037F, 0x037F, 0x037F, 0x037F, 0x037F, 0x037F, 0x037F,\n    0x037F, 0x037F, 0x037F, 0x037F, 0x037F, 0x037F, 0x037F, 0x037F,\n    0x037F, 0x037F, 0x037F, 0x037F, 0xB57B, 0xB55E, 0xB542, 0xB527,\n    0xB50E, 0xB4F8, 0xB4E3, 0xB4D2, 0xB4C3, 0xB4B8, 0xB4AF, 0xB4AB,\n    0xB4A9, 0xB4A9, 0xB4AA, 0xB4AC, 0xB4B0, 0xB4B4, 0xB4BA, 0xB4C1,\n    0xB4C9, 0xB4D2, 0xB4DC, 0xB4E6, 0xB4F2, 0xB4FE, 0xB50B, 0xB518,\n    0xB526, 0xB534, 0xB543, 0xB551, 0xB561, 0xB570, 0xB580, 0xB58F,\n    0xB59F, 0xB5AF, 0xB5BE, 0xB5CE, 0xB5DD, 0xB5EC, 0xB5FA, 0xB608,\n    0xB616, 0xB623, 0xB630, 0xB63C, 0xB647, 0xB651, 0xB65B, 0xB664,\n    0xB66B, 0xB672, 0xB678, 0xB67C, 0xB67F, 0xB681, 0xB682, 0xB682,\n    0xB682, 0xB682, 0xB682, 0xB682, 0xB682, 0xB682, 0xB682, 0xB682,\n    0xB682, 0xB682, 0xB682, 0xB682, 0xB682, 0xB682, 0xB682, 0xB682,\n    0xB682, 0xB682, 0xB682, 0xB682, 0xB682, 0xB682, 0xB682, 0xB682,\n    0xB682, 0xB682, 0xB682, 0xB682, 0xB682, 0xB682, 0xB682, 0xB682,\n    0xB682, 0xB682, 0xB682, 0xB682, 0xB682, 0xB682, 0xB682, 0xB682,\n    0xF203, 0xF1E0, 0xF1C4, 0xF1B0, 0xF1A4, 0xF19F, 0xF1A3, 0xF1AE,\n    0xF1C1, 0xF1DC, 0xF1FF, 0xF22A, 0xF25D, 0xF298, 0xF2E2, 0xF343,\n    0xF3B8, 0xF43E, 0xF4D4, 0xF574, 0xF61E, 0xF6CE, 0xF781, 0xF833,\n    0xF8E4, 0xF98E, 0xFA30, 0xFAC7, 0xFB50, 0xFBC7, 0xFC28, 0xFC73,\n    0xFCAC, 0xFCD7, 0xFCF9, 0xFD17, 0xFD35, 0xFD58, 0xFD83, 0xFDBD,\n    0xFDFD, 0xFE3D, 0xFE7D, 0xFEC1, 0xFF0A, 0xFF59, 0xFFB2, 0x0015,\n    0x0087, 0x0106, 0x0187, 0x0205, 0x027D, 0x02EC, 0x0351, 0x03A8,\n    0x03F5, 0x0439, 0x0472, 0x049C, 0x04B5, 0x04BA, 0x04A6, 0x047C,\n    0x0440, 0x03F7, 0x03A6, 0x0353, 0x02FE, 0x02A5, 0x0247, 0x01E4,\n    0x017A, 0x010A, 0x0091, 0x0014, 0xFFA0, 0xFF34, 0xFECF, 0xFE71,\n    0xFE1A, 0xFDC9, 0xFD7D, 0xFD3F, 0xFD48, 0xFD74, 0xFDA0, 0xFDD2,\n    0xFE09, 0xFE42, 0xFE7C, 0xFEB7, 0xFEF1, 0xFF29, 0xFF5D, 0xFF8D,\n    0xFFB6, 0xFFD8, 0xFFF1, 0x0000, 0xFFB0, 0xFF85, 0xFF57, 0xFF26,\n    0xFEF5, 0xFEC3, 0xFE93, 0xFE65, 0xFE3A, 0xFE13, 0xFDF1, 0xFDD6,\n    0xFDC3, 0xFDB8, 0xFDB7, 0xFDC0, 0xFDD2, 0xFDEB, 0xFE09, 0xFE2C,\n    0xFE53, 0xFE7B, 0xFEA3, 0xFECA, 0xFEF0, 0xFF11, 0xFF2D, 0xFF43,\n    0xFF52, 0xFF57, 0xFF55, 0xFF4F, 0xFF46, 0xFF3A, 0xFF2B, 0xFF1A,\n    0xFF07, 0xFEF1, 0xFEDB, 0xFEC3, 0xFEAB, 0xFE92, 0xFE78, 0xFE60,\n    0xFE47, 0xFE30, 0xFE1A, 0xFE05, 0xFDF2, 0xFDE1, 0xFDD3, 0xFDC8,\n    0xFDC0, 0xFDBB, 0xFDBB, 0xFDBE, 0xFDCD, 0xFDEC, 0xFE19, 0xFE50,\n    0xFE8E, 0xFED2, 0xFF17, 0xFF5A, 0xFF9A, 0xFFD3, 0x0001, 0x0023,\n    0x0036, 0x0037, 0x0027, 0x000A, 0xFFE3, 0xFFB2, 0xFF7B, 0xFF41,\n    0xFF05, 0xFECB, 0xFE94, 0xFE63, 0xFE3B, 0xFE1E, 0xFE0E, 0xFE0F,\n    0xFE1A, 0xFE30, 0xFE4E, 0xFE72, 0xFE9D, 0xFECC, 0xFEFD, 0xFF31,\n    0xFF66, 0xFF99, 0xFFCB, 0xFFF9, 0x0022, 0x0046, 0x0062, 0x0076,\n    0xBF3F, 0xBF44, 0xBF49, 0xBF4E, 0xBF53, 0xBF58, 0xBF5D, 0xBF62,\n    0xBF66, 0xBF6A, 0xBF6E, 0xBF71, 0xBF73, 0xBF74, 0xBF74, 0xBF73,\n    0xBF71, 0xBF6F, 0xBF6C, 0xBF68, 0xBF64, 0xBF60, 0xBF5C, 0xBF58,\n    0xBF54, 0xBF51, 0xBF4E, 0xBF4B, 0xBF49, 0xBF49, 0xBF48, 0xBF48,\n    0xBF47, 0xBF47, 0xBF47, 0xBF47, 0xBF47, 0xBF47, 0xBF47, 0xBF48,\n    0xBF48, 0xBF49, 0xBF4A, 0xBF4A, 0xBF4B, 0xBF4C, 0xBF4E, 0xBF4F,\n    0xBF50, 0xBF52, 0xBF54, 0xBF56, 0xBF58, 0xBF5A, 0xBF5C, 0xBF5F,\n    0xBF62, 0xBF67, 0xBF6D, 0xBF73, 0xBF7A, 0xBF82, 0xBF8A, 0xBF92,\n    0xBF99, 0xBFA1, 0xBFA7, 0xBFAD, 0xBFB3, 0xBFB8, 0xBFBE, 0xBFC4,\n    0xBFC9, 0xBFCF, 0xBFD4, 0xBFDA, 0xBFDF, 0xBFE4, 0xBFE9, 0xBFEE,\n    0xBFF2, 0xBFF6, 0xBFFA, 0xBFFE, 0xC001, 0xC004, 0xC006, 0xC008,\n    0xC009, 0xC00A, 0xC00A, 0xC00A, 0xC00A, 0xC009, 0xC008, 0xC007,\n    0xC006, 0xC004, 0xC003, 0xC001, 0xC066, 0x0CFF, 0x0DEB, 0x0ED1,\n    0x0FB0, 0x1088, 0x1157, 0x121F, 0x12DD, 0x1392, 0x143C, 0x14DC,\n    0x1570, 0x15FF, 0x168D, 0x171B, 0x17A8, 0x1835, 0x18C0, 0x194B,\n    0x19D5, 0x1A5D, 0x1AE4, 0x1B6A, 0x1BEF, 0x1C71, 0x1CF2, 0x1D71,\n    0x1DEE, 0x1E69, 0x1EE1, 0x1F57, 0x1FCB, 0x203C, 0x20AA, 0x2116,\n    0x217E, 0x21E3, 0x2246, 0x22A4, 0x2300, 0x2358, 0x23AC, 0x23FC,\n    0x2448, 0x2491, 0x24D5, 0x2514, 0x2550, 0x2587, 0x25B9, 0x25E6,\n    0x260F, 0x2632, 0x2651, 0x266A, 0x267E, 0x268C, 0x2695, 0x2697,\n    0x2697, 0x2697, 0x2697, 0x2697, 0x2697, 0x2697, 0x2697, 0x2697,\n    0x2697, 0x2697, 0x2697, 0x2697, 0x2697, 0x2697, 0x2697, 0x2697,\n    0x2697, 0x2697, 0x2697, 0x2697, 0x2697, 0x2697, 0x2697, 0x2697,\n    0x2697, 0x2697, 0x2697, 0x2697, 0x2697, 0x2697, 0x2697, 0x2697,\n    0x2697, 0x2697, 0x2697, 0x2697, 0x2697, 0x2697, 0x2697, 0x2697,\n    0x2697, 0xF83B, 0xF87D, 0xF8BE, 0xF8FD, 0xF93A, 0xF976, 0xF9B0,\n    0xF9E9, 0xFA1F, 0xFA53, 0xFA86, 0xFAB6, 0xFAE4, 0xFB12, 0xFB3E,\n    0xFB69, 0xFB93, 0xFBBC, 0xFBE4, 0xFC0B, 0xFC31, 0xFC56, 0xFC79,\n    0xFC9C, 0xFCBD, 0xFCDE, 0xFCFD, 0xFD1B, 0xFD39, 0xFD55, 0xFD70,\n    0xFD8A, 0xFDA4, 0xFDBC, 0xFDD3, 0xFDE9, 0xFDFE, 0xFE12, 0xFE26,\n    0xFE38, 0xFE49, 0xFE59, 0xFE69, 0xFE77, 0xFE84, 0xFE91, 0xFE9C,\n    0xFEA7, 0xFEB0, 0xFEB9, 0xFEC0, 0xFEC7, 0xFECD, 0xFED2, 0xFED6,\n    0xFED9, 0xFEDB, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD,\n    0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD,\n    0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD,\n    0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD,\n    0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD,\n    0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xBF8C, 0xBF2E, 0xBED2,\n    0xBE79, 0xBE24, 0xBDD1, 0xBD82, 0xBD37, 0xBCF0, 0xBCAC, 0xBC6E,\n    0xBC34, 0xBBFC, 0xBBC5, 0xBB8F, 0xBB59, 0xBB24, 0xBAEF, 0xBABC,\n    0xBA88, 0xBA56, 0xBA25, 0xB9F4, 0xB9C4, 0xB995, 0xB967, 0xB939,\n    0xB90D, 0xB8E2, 0xB8B7, 0xB88E, 0xB866, 0xB83E, 0xB818, 0xB7F3,\n    0xB7D0, 0xB7AD, 0xB78C, 0xB76C, 0xB74D, 0xB72F, 0xB713, 0xB6F8,\n    0xB6DF, 0xB6C7, 0xB6B1, 0xB69C, 0xB688, 0xB676, 0xB666, 0xB657,\n    0xB64A, 0xB63F, 0xB635, 0xB62D, 0xB626, 0xB622, 0xB61F, 0xB61E,\n    0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E,\n    0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E,\n    0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E,\n    0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E,\n    0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E, 0xB61E,\n    0xB61E, 0xD85C, 0xD86D, 0xD87F, 0xD890, 0xD8A2, 0xD8B3, 0xD8C4,\n    0xD8D5, 0xD8E4, 0xD8F3, 0xD900, 0xD90D, 0xD919, 0xD926, 0xD934,\n    0xD943, 0xD953, 0xD963, 0xD974, 0xD986, 0xD999, 0xD9AC, 0xD9BF,\n    0xD9D3, 0xD9E8, 0xD9FC, 0xDA11, 0xDA26, 0xDA3C, 0xDA51, 0xDA67,\n    0xDA7C, 0xDA92, 0xDAA7, 0xDABC, 0xDAD1, 0xDAE6, 0xDAFB, 0xDB0F,\n    0xDB22, 0xDB35, 0xDB48, 0xDB5A, 0xDB6B, 0xDB7B, 0xDB8B, 0xDB9A,\n    0xDBA8, 0xDBB5, 0xDBC2, 0xDBCD, 0xDBD7, 0xDBDF, 0xDBE7, 0xDBED,\n    0xDBF3, 0xDBF6, 0xDBF8, 0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9,\n    0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9,\n    0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9,\n    0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9,\n    0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9,\n    0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9, 0xDBF9, 0x048B, 0x04D0, 0x0512,\n    0x0550, 0x058A, 0x05BF, 0x05F0, 0x061C, 0x0641, 0x0660, 0x0679,\n    0x068A, 0x0696, 0x069E, 0x06A4, 0x06A7, 0x06A7, 0x06A4, 0x069F,\n    0x0698, 0x068E, 0x0682, 0x0675, 0x0665, 0x0653, 0x0640, 0x062C,\n    0x0616, 0x05FF, 0x05E7, 0x05CE, 0x05B3, 0x0599, 0x057D, 0x0561,\n    0x0545, 0x0529, 0x050C, 0x04F0, 0x04D3, 0x04B7, 0x049C, 0x0481,\n    0x0466, 0x044C, 0x0434, 0x041C, 0x0405, 0x03F0, 0x03DC, 0x03CA,\n    0x03BA, 0x03AB, 0x039E, 0x0393, 0x038A, 0x0384, 0x0380, 0x037F,\n    0x037F, 0x037F, 0x037F, 0x037F, 0x037F, 0x037F, 0x037F, 0x037F,\n    0x037F, 0x037F, 0x037F, 0x037F, 0x037F, 0x037F, 0x037F, 0x037F,\n    0x037F, 0x037F, 0x037F, 0x037F, 0x037F, 0x037F, 0x037F, 0x037F,\n    0x037F, 0x037F, 0x037F, 0x037F, 0x037F, 0x037F, 0x037F, 0x037F,\n    0x037F, 0x037F, 0x037F, 0x037F, 0x037F, 0x037F, 0x037F, 0x037F,\n    0x037F, 0xB57B, 0xB55E, 0xB542, 0xB527, 0xB50E, 0xB4F8, 0xB4E3,\n    0xB4D2, 0xB4C3, 0xB4B8, 0xB4AF, 0xB4AB, 0xB4A9, 0xB4A9, 0xB4AA,\n    0xB4AC, 0xB4B0, 0xB4B4, 0xB4BA, 0xB4C1, 0xB4C9, 0xB4D2, 0xB4DC,\n    0xB4E6, 0xB4F2, 0xB4FE, 0xB50B, 0xB518, 0xB526, 0xB534, 0xB543,\n    0xB551, 0xB561, 0xB570, 0xB580, 0xB58F, 0xB59F, 0xB5AF, 0xB5BE,\n    0xB5CE, 0xB5DD, 0xB5EC, 0xB5FA, 0xB608, 0xB616, 0xB623, 0xB630,\n    0xB63C, 0xB647, 0xB651, 0xB65B, 0xB664, 0xB66B, 0xB672, 0xB678,\n    0xB67C, 0xB67F, 0xB681, 0xB682, 0xB682, 0xB682, 0xB682, 0xB682,\n    0xB682, 0xB682, 0xB682, 0xB682, 0xB682, 0xB682, 0xB682, 0xB682,\n    0xB682, 0xB682, 0xB682, 0xB682, 0xB682, 0xB682, 0xB682, 0xB682,\n    0xB682, 0xB682, 0xB682, 0xB682, 0xB682, 0xB682, 0xB682, 0xB682,\n    0xB682, 0xB682, 0xB682, 0xB682, 0xB682, 0xB682, 0xB682, 0xB682,\n    0xB682, 0xB682, 0xB682, 0xB682, 0xB682, 0xE0FF, 0xC001, 0xE0FB,\n    0xBF7F, 0xFB1D, 0xBF84, 0x2143, 0x210D, 0x20CF, 0x2086, 0x2030,\n    0x1FC9, 0x1F50, 0x1EC2, 0x1E1C, 0x1D5B, 0x1C7D, 0x1B7F, 0x1A5F,\n    0x191A, 0x17AE, 0x1616, 0x1392, 0x0FAF, 0x0AE8, 0x05B6, 0x0092,\n    0xFBF7, 0xF85C, 0xF63D, 0xF52C, 0xF468, 0xF3E9, 0xF3A8, 0xF39D,\n    0xF3C1, 0xF40B, 0xF475, 0xF4F8, 0xF58B, 0xF626, 0xF6C4, 0xF75B,\n    0xF7E5, 0xF85A, 0xF8B2, 0xF901, 0xF95E, 0xF9C7, 0xFA3A, 0xFAB4,\n    0xFB34, 0xFBB8, 0xFC3D, 0xFCC2, 0xFD43, 0xFDC0, 0xFE36, 0xFEA3,\n    0xFF05, 0xFF5A, 0xFFA0, 0xFFD4, 0xFFF5, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0168,\n    0x0182, 0x0196, 0x01A3, 0x01AB, 0x01AE, 0x01AD, 0x01A9, 0x01A3,\n    0x019C, 0x0194, 0x018D, 0x0186, 0x0182, 0x0180, 0x0181, 0x0182,\n    0x017F, 0x0178, 0x016E, 0x0163, 0x0158, 0x014C, 0x0142, 0x0139,\n    0x012F, 0x0125, 0x011B, 0x0111, 0x0107, 0x00FD, 0x00F3, 0x00E9,\n    0x00DE, 0x00D4, 0x00CA, 0x00C0, 0x00B7, 0x00AD, 0x00A4, 0x009A,\n    0x0090, 0x0085, 0x007A, 0x006E, 0x0063, 0x0057, 0x004C, 0x0041,\n    0x0036, 0x002C, 0x0023, 0x001A, 0x0013, 0x000C, 0x0007, 0x0003,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0A12, 0x09E5, 0x09B8, 0x098B, 0x095E,\n    0x0930, 0x0902, 0x08D4, 0x08A6, 0x0878, 0x0849, 0x081B, 0x07EE,\n    0x07C0, 0x0793, 0x0765, 0x0738, 0x070B, 0x06DD, 0x06B0, 0x0684,\n    0x0658, 0x062D, 0x0604, 0x05DD, 0x05B6, 0x0590, 0x056B, 0x0546,\n    0x0522, 0x04FD, 0x04D9, 0x04B5, 0x0490, 0x046A, 0x0444, 0x041C,\n    0x03F4, 0x03CA, 0x039F, 0x0370, 0x033C, 0x0303, 0x02C7, 0x0289,\n    0x0248, 0x0207, 0x01C6, 0x0186, 0x0148, 0x010C, 0x00D5, 0x00A1,\n    0x0074, 0x004C, 0x002C, 0x0014, 0x0005, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2143,\n    0x210D, 0x20CF, 0x2086, 0x2030, 0x1FC9, 0x1F50, 0x1EC2, 0x1E1C,\n    0x1D5B, 0x1C7D, 0x1B7F, 0x1A5F, 0x191A, 0x17AE, 0x1616, 0x1392,\n    0x0FAF, 0x0AE8, 0x05B6, 0x0092, 0xFBF7, 0xF85C, 0xF63D, 0xF52C,\n    0xF468, 0xF3E9, 0xF3A8, 0xF39D, 0xF3C1, 0xF40B, 0xF475, 0xF4F8,\n    0xF58B, 0xF626, 0xF6C4, 0xF75B, 0xF7E5, 0xF85A, 0xF8B2, 0xF901,\n    0xF95E, 0xF9C7, 0xFA3A, 0xFAB4, 0xFB34, 0xFBB8, 0xFC3D, 0xFCC2,\n    0xFD43, 0xFDC0, 0xFE36, 0xFEA3, 0xFF05, 0xFF5A, 0xFFA0, 0xFFD4,\n    0xFFF5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0168, 0x0182, 0x0196, 0x01A3, 0x01AB,\n    0x01AE, 0x01AD, 0x01A9, 0x01A3, 0x019C, 0x0194, 0x018D, 0x0186,\n    0x0182, 0x0180, 0x0181, 0x0182, 0x017F, 0x0178, 0x016E, 0x0163,\n    0x0158, 0x014C, 0x0142, 0x0139, 0x012F, 0x0125, 0x011B, 0x0111,\n    0x0107, 0x00FD, 0x00F3, 0x00E9, 0x00DE, 0x00D4, 0x00CA, 0x00C0,\n    0x00B7, 0x00AD, 0x00A4, 0x009A, 0x0090, 0x0085, 0x007A, 0x006E,\n    0x0063, 0x0057, 0x004C, 0x0041, 0x0036, 0x002C, 0x0023, 0x001A,\n    0x0013, 0x000C, 0x0007, 0x0003, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0A12,\n    0x09E5, 0x09B8, 0x098B, 0x095E, 0x0930, 0x0902, 0x08D4, 0x08A6,\n    0x0878, 0x0849, 0x081B, 0x07EE, 0x07C0, 0x0793, 0x0765, 0x0738,\n    0x070B, 0x06DD, 0x06B0, 0x0684, 0x0658, 0x062D, 0x0604, 0x05DD,\n    0x05B6, 0x0590, 0x056B, 0x0546, 0x0522, 0x04FD, 0x04D9, 0x04B5,\n    0x0490, 0x046A, 0x0444, 0x041C, 0x03F4, 0x03CA, 0x039F, 0x0370,\n    0x033C, 0x0303, 0x02C7, 0x0289, 0x0248, 0x0207, 0x01C6, 0x0186,\n    0x0148, 0x010C, 0x00D5, 0x00A1, 0x0074, 0x004C, 0x002C, 0x0014,\n    0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x2143, 0x210D, 0x20CF, 0x2086, 0x2030,\n    0x1FC9, 0x1F50, 0x1EC2, 0x1E1C, 0x1D5B, 0x1C7D, 0x1B7F, 0x1A5F,\n    0x191A, 0x17AE, 0x1616, 0x1392, 0x0FAF, 0x0AE8, 0x05B6, 0x0092,\n    0xFBF7, 0xF85C, 0xF63D, 0xF52C, 0xF468, 0xF3E9, 0xF3A8, 0xF39D,\n    0xF3C1, 0xF40B, 0xF475, 0xF4F8, 0xF58B, 0xF626, 0xF6C4, 0xF75B,\n    0xF7E5, 0xF85A, 0xF8B2, 0xF901, 0xF95E, 0xF9C7, 0xFA3A, 0xFAB4,\n    0xFB34, 0xFBB8, 0xFC3D, 0xFCC2, 0xFD43, 0xFDC0, 0xFE36, 0xFEA3,\n    0xFF05, 0xFF5A, 0xFFA0, 0xFFD4, 0xFFF5, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0168,\n    0x0182, 0x0196, 0x01A3, 0x01AB, 0x01AE, 0x01AD, 0x01A9, 0x01A3,\n    0x019C, 0x0194, 0x018D, 0x0186, 0x0182, 0x0180, 0x0181, 0x0182,\n    0x017F, 0x0178, 0x016E, 0x0163, 0x0158, 0x014C, 0x0142, 0x0139,\n    0x012F, 0x0125, 0x011B, 0x0111, 0x0107, 0x00FD, 0x00F3, 0x00E9,\n    0x00DE, 0x00D4, 0x00CA, 0x00C0, 0x00B7, 0x00AD, 0x00A4, 0x009A,\n    0x0090, 0x0085, 0x007A, 0x006E, 0x0063, 0x0057, 0x004C, 0x0041,\n    0x0036, 0x002C, 0x0023, 0x001A, 0x0013, 0x000C, 0x0007, 0x0003,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0A12, 0x09E5, 0x09B8, 0x098B, 0x095E,\n    0x0930, 0x0902, 0x08D4, 0x08A6, 0x0878, 0x0849, 0x081B, 0x07EE,\n    0x07C0, 0x0793, 0x0765, 0x0738, 0x070B, 0x06DD, 0x06B0, 0x0684,\n    0x0658, 0x062D, 0x0604, 0x05DD, 0x05B6, 0x0590, 0x056B, 0x0546,\n    0x0522, 0x04FD, 0x04D9, 0x04B5, 0x0490, 0x046A, 0x0444, 0x041C,\n    0x03F4, 0x03CA, 0x039F, 0x0370, 0x033C, 0x0303, 0x02C7, 0x0289,\n    0x0248, 0x0207, 0x01C6, 0x0186, 0x0148, 0x010C, 0x00D5, 0x00A1,\n    0x0074, 0x004C, 0x002C, 0x0014, 0x0005, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFB1D,\n    0xE58C, 0xE44C, 0xE324, 0xE211, 0xE10D, 0xE013, 0xDF20, 0xDE2D,\n    0xDD2D, 0xDBD0, 0xDA06, 0xD7DB, 0xD558, 0xD287, 0xCF72, 0xCC23,\n    0xC8A4, 0xC4FF, 0xC13D, 0xBD69, 0xB98D, 0xB5B2, 0xB1E2, 0xAE27,\n    0xAA8C, 0xA71A, 0xA3DA, 0xA0CF, 0x9DF1, 0x9B3E, 0x98B6, 0x9658,\n    0x9421, 0x9211, 0x9025, 0x8E5E, 0x8CB9, 0x8B35, 0x89D1, 0x888C,\n    0x8763, 0x8656, 0x8564, 0x848B, 0x83C9, 0x831E, 0x8288, 0x8206,\n    0x8196, 0x8137, 0x80E8, 0x80A7, 0x8073, 0x804B, 0x802D, 0x8018,\n    0x800B, 0x8004, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x3FFF, 0x0000,\n};\n\n// 0x0500E5AC\nstatic const u16 peach_seg5_animindex_500E5AC[] = {\n    0x0064, 0x0001, 0x0064, 0x0065, 0x0064, 0x00C9, 0x0001, 0x012D, 0x0001, 0x012E, 0x0001, 0x012F,\n    0x0064, 0x0F48, 0x0001, 0x0000, 0x0001, 0x0FAC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0F47,\n    0x0064, 0x0E1B, 0x0064, 0x0E7F, 0x0064, 0x0EE3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0964,\n    0x0064, 0x0130, 0x0064, 0x0194, 0x0064, 0x01F8,\n    0x0064, 0x0CEF, 0x0064, 0x0D53, 0x0064, 0x0DB7,\n    0x0064, 0x0BC3, 0x0064, 0x0C27, 0x0064, 0x0C8B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0BC2,\n    0x0064, 0x0965, 0x0064, 0x09C9, 0x0064, 0x0A2D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0064, 0x0388,\n    0x0064, 0x025C, 0x0064, 0x02C0, 0x0064, 0x0324,\n    0x0064, 0x03EC, 0x0064, 0x0450, 0x0064, 0x04B4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0BC0,\n    0x0064, 0x0A91, 0x0064, 0x0AF5, 0x0064, 0x0B59,\n    0x0001, 0x0000, 0x0064, 0x0644, 0x0064, 0x06A8,\n    0x0064, 0x0518, 0x0064, 0x057C, 0x0064, 0x05E0,\n    0x0064, 0x070C, 0x0064, 0x0770, 0x0064, 0x07D4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0BC1,\n    0x0001, 0x0BBD, 0x0001, 0x0BBE, 0x0001, 0x0BBF,\n    0x0064, 0x0838, 0x0064, 0x089C, 0x0064, 0x0900,\n};\n\n// 0x0500E6B4\nstatic const struct Animation peach_seg5_anim_0500E6B4 = {\n    1,\n    0,\n    0,\n    0,\n    0x64,\n    ANIMINDEX_NUMPARTS(peach_seg5_animindex_500E5AC),\n    peach_seg5_animvalue_0500C650,\n    peach_seg5_animindex_500E5AC,\n    0,\n};\n"
  },
  {
    "path": "actors/peach/anims/anim_0500ED94.inc.c",
    "content": "// 0x0500E6CC\nstatic const s16 peach_seg5_animvalue_0500E6CC[] = {\n    0x0000, 0xFFF3, 0xFFF3, 0xFFF3, 0xFFF3, 0xFFF3, 0xFFF3, 0xFFF3,\n    0xFFF3, 0xFFF4, 0xFFF4, 0xFFF4, 0xFFF4, 0xFFF4, 0xFFF4, 0xFFF4,\n    0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF6, 0xFFF6,\n    0xFFF6, 0xFFF6, 0xFFF6, 0xFFF6, 0xFFF6, 0xFFF7, 0xFFF7, 0xFFF7,\n    0xFFF7, 0xFFF7, 0xFFF7, 0xFFF8, 0xFFF8, 0xFFF8, 0xFFF8, 0xFFF8,\n    0xFFF8, 0xFFF8, 0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9,\n    0xFFFA, 0xFFFA, 0xFFFA, 0xFFFA, 0xFFFA, 0xFFFA, 0xFFFB, 0xFFFB,\n    0xFFFB, 0xFFFB, 0xFFFB, 0xFFFB, 0xFFFB, 0xFFFC, 0xFFFC, 0xFFFC,\n    0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,\n    0xFFFD, 0xFFFD, 0xFFFD, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE,\n    0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n    0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0166, 0x0166, 0x0167,\n    0x0167, 0x0167, 0x0167, 0x0167, 0x0166, 0x0166, 0x0165, 0x0164,\n    0x0163, 0x0162, 0x0161, 0x0160, 0x0160, 0x015F, 0x015E, 0x015E,\n    0x015E, 0x015E, 0x015E, 0x015F, 0x0160, 0x0160, 0x0161, 0x0163,\n    0x0164, 0x0165, 0x0165, 0x0166, 0x0167, 0x0167, 0x0167, 0x0167,\n    0x0167, 0x0166, 0x0166, 0x0165, 0x0164, 0x0163, 0x0162, 0x0162,\n    0x0161, 0x0160, 0x015F, 0x015F, 0x015E, 0x015E, 0x015E, 0x015E,\n    0x015F, 0x0160, 0x0161, 0x0163, 0x0164, 0x0165, 0x0167, 0x0167,\n    0x0167, 0x0167, 0x0167, 0x0167, 0x0166, 0x0166, 0x0165, 0x0165,\n    0x0164, 0x0163, 0x0163, 0x0162, 0x0161, 0x0161, 0x0160, 0x015F,\n    0x015F, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x0160, 0x0163,\n    0x0165, 0x0167, 0x0167, 0x0167, 0x0166, 0x0166, 0x0165, 0x0164,\n    0x0163, 0x0162, 0x0161, 0x0160, 0x015F, 0x015E, 0x015E, 0x015E,\n    0x015E, 0xFA3D, 0xFA2D, 0xFA1C, 0xFA0B, 0xF9FB, 0xF9EA, 0xF9D9,\n    0xF9C9, 0xF9B8, 0xF9A7, 0xF997, 0xF986, 0xF976, 0xF965, 0xF955,\n    0xF944, 0xF933, 0xF923, 0xF912, 0xF902, 0xF8F1, 0xF8E1, 0xF8D0,\n    0xF8C0, 0xF8AF, 0xF89F, 0xF88E, 0xF87E, 0xF86D, 0xF85D, 0xF84D,\n    0xF83C, 0xF82C, 0xF81B, 0xF80B, 0xF7FA, 0xF7EA, 0xF7DA, 0xF7C9,\n    0xF7B9, 0xF7A8, 0xF798, 0xF788, 0xF777, 0xF767, 0xF756, 0xF746,\n    0xF736, 0xF725, 0xF715, 0xF704, 0xF6F4, 0xF6E4, 0xF6D3, 0xF6C3,\n    0xF6B3, 0xF6A2, 0xF692, 0xF682, 0xF671, 0xF661, 0xF651, 0xF640,\n    0xF630, 0xF61F, 0xF60F, 0xF5FF, 0xF5EE, 0xF5DE, 0xF5CE, 0xF5BD,\n    0xF5AD, 0xF59D, 0xF58C, 0xF57C, 0xF56C, 0xF55B, 0xF54B, 0xF53A,\n    0xF52A, 0xF51A, 0xF509, 0xF4F9, 0xF4E9, 0xF4D8, 0xF4C8, 0xF4B7,\n    0xF4A7, 0xF497, 0xF486, 0xF476, 0xF465, 0xF455, 0xF445, 0xF434,\n    0xF424, 0xF413, 0xF403, 0xF3F3, 0xF3E2, 0xC50F, 0x3FFA, 0xC50F,\n    0x045A, 0x0478, 0x0494, 0x04AD, 0x04C4, 0x04D7, 0x04E6, 0x04EF,\n    0x04F3, 0x04F1, 0x04EA, 0x04DE, 0x04CD, 0x04BA, 0x04A3, 0x048A,\n    0x046F, 0x0453, 0x0436, 0x0419, 0x03FD, 0x03E1, 0x03C7, 0x03B0,\n    0x039F, 0x0397, 0x0397, 0x039E, 0x03AA, 0x03BC, 0x03D2, 0x03EA,\n    0x0405, 0x0420, 0x043C, 0x0457, 0x0470, 0x0486, 0x0499, 0x04A7,\n    0x04AF, 0x04B0, 0x04AA, 0x049D, 0x0489, 0x046F, 0x0452, 0x0432,\n    0x040F, 0x03EC, 0x03C9, 0x03A7, 0x0387, 0x036B, 0x0354, 0x0342,\n    0x0337, 0x0334, 0x0338, 0x0342, 0x0352, 0x0367, 0x037E, 0x0399,\n    0x03B5, 0x03D3, 0x03F0, 0x040C, 0x0427, 0x043F, 0x0453, 0x0462,\n    0x046D, 0x0470, 0x046E, 0x0468, 0x045E, 0x0451, 0x0441, 0x042F,\n    0x041B, 0x0405, 0x03EE, 0x03D7, 0x03C0, 0x03A9, 0x0392, 0x037D,\n    0x036A, 0x0359, 0x034B, 0x0340, 0x0338, 0x0334, 0x0335, 0x033A,\n    0x0342, 0x034C, 0x035A, 0x036A, 0xD112, 0xFEAC, 0x0F51, 0xFA0B,\n    0xDFC8, 0x2697, 0xFEDD, 0xB61E, 0xE885, 0xED3E, 0xFB9B, 0x0002,\n    0xDB59, 0xDBF9, 0x037F, 0xB682, 0x0009, 0x0012, 0x001A, 0x0021,\n    0x0028, 0x002E, 0x0033, 0x0037, 0x003B, 0x003F, 0x0042, 0x0044,\n    0x0045, 0x0047, 0x0047, 0x0048, 0x0047, 0x0047, 0x0046, 0x0045,\n    0x0043, 0x0041, 0x003F, 0x003C, 0x003A, 0x0037, 0x0034, 0x0030,\n    0x002D, 0x002A, 0x0026, 0x0022, 0x001F, 0x001B, 0x0018, 0x0014,\n    0x0010, 0x000D, 0x000A, 0x0007, 0x0004, 0x0001, 0xFFFF, 0xFFFD,\n    0xFFFB, 0xFFF9, 0xFFF7, 0xFFF6, 0xFFF6, 0xFFF5, 0xFFF5, 0xFFF5,\n    0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF4, 0xFFF4, 0xFFF4, 0xFFF4,\n    0xFFF4, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5,\n    0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF6, 0xFFF6,\n    0xFFF6, 0xFFF6, 0xFFF6, 0xFFF6, 0xFFF6, 0xFFF7, 0xFFF7, 0xFFF7,\n    0xFFF7, 0xFFF7, 0xFFF7, 0xFFF8, 0xFFF8, 0xFFF8, 0xFFF8, 0xFFF8,\n    0xFFF8, 0xFFF8, 0xFFF8, 0xFFF8, 0xFFF8, 0xFFF8, 0xFFF8, 0xFFF8,\n    0x0081, 0x007D, 0x0066, 0x003F, 0x000C, 0xFFD2, 0xFF92, 0xFF51,\n    0xFF12, 0xFED9, 0xFEA9, 0xFE87, 0xFE75, 0xFE76, 0xFE83, 0xFE9B,\n    0xFEBB, 0xFEE3, 0xFF0F, 0xFF40, 0xFF73, 0xFFA6, 0xFFD9, 0x0008,\n    0x0034, 0x005A, 0x0078, 0x008E, 0x0099, 0x0098, 0x008F, 0x007C,\n    0x0063, 0x0043, 0x001F, 0xFFF8, 0xFFCD, 0xFFA1, 0xFF74, 0xFF48,\n    0xFF1E, 0xFEF7, 0xFED4, 0xFEB6, 0xFE9F, 0xFE8F, 0xFE87, 0xFE8A,\n    0xFE96, 0xFEAA, 0xFEC5, 0xFEE6, 0xFF0D, 0xFF37, 0xFF64, 0xFF93,\n    0xFFC3, 0xFFF2, 0x001F, 0x004A, 0x0072, 0x0094, 0x00B1, 0x00C7,\n    0x00D5, 0x00DA, 0x00C9, 0x009C, 0x005A, 0x000B, 0xFFB7, 0xFF61,\n    0xFF13, 0xFED2, 0xFEA7, 0xFE97, 0xFE9E, 0xFEB2, 0xFED1, 0xFEFA,\n    0xFF2A, 0xFF5F, 0xFF98, 0xFFD2, 0x000C, 0x0044, 0x0078, 0x00A6,\n    0x00CB, 0x00E8, 0x00F8, 0x00FB, 0x00F1, 0x00DB, 0x00BC, 0x0095,\n    0x0067, 0x0034, 0xFFFF, 0xFFC8, 0xBFFF, 0xBFFD, 0xBFFC, 0xBFFA,\n    0xBFF8, 0xBFF6, 0xBFF4, 0xBFF2, 0xBFEF, 0xBFED, 0xBFEB, 0xBFE9,\n    0xBFE7, 0xBFE4, 0xBFE2, 0xBFE0, 0xBFDD, 0xBFDB, 0xBFD9, 0xBFD6,\n    0xBFD4, 0xBFD1, 0xBFCF, 0xBFCC, 0xBFCA, 0xBFC8, 0xBFC5, 0xBFC3,\n    0xBFC0, 0xBFBE, 0xBFBC, 0xBFB9, 0xBFB7, 0xBFB5, 0xBFB2, 0xBFB0,\n    0xBFAE, 0xBFAC, 0xBFAA, 0xBFA7, 0xBFA5, 0xBFA3, 0xBFA1, 0xBF9F,\n    0xBF9D, 0xBF9C, 0xBF9A, 0xBF98, 0xBF96, 0xBF95, 0xBF93, 0xBF92,\n    0xBF92, 0xBF92, 0xBF92, 0xBF92, 0xBF93, 0xBF94, 0xBF95, 0xBF96,\n    0xBF97, 0xBF98, 0xBF99, 0xBF9A, 0xBF9B, 0xBF9C, 0xBF9D, 0xBF9E,\n    0xBFA0, 0xBFA1, 0xBFA2, 0xBFA4, 0xBFA5, 0xBFA7, 0xBFA8, 0xBFAA,\n    0xBFAB, 0xBFAC, 0xBFAD, 0xBFAF, 0xBFB0, 0xBFB1, 0xBFB3, 0xBFB4,\n    0xBFB5, 0xBFB7, 0xBFB8, 0xBFB9, 0xBFBB, 0xBFBC, 0xBFBE, 0xBFBF,\n    0xBFC0, 0xBFC2, 0xBFC3, 0xBFC5, 0xBFC6, 0xBFC8, 0xBFC9, 0xBFCA,\n    0xC066, 0x2697, 0xFEDD, 0xB61E, 0xDBF9, 0x037F, 0xB682, 0xE0FF,\n    0xC001, 0xE0FB, 0xBF7F, 0xFB1D, 0xBF84, 0xFB1D, 0x8001, 0x3FFF,\n};\n\n// 0x0500EC8C\nstatic const u16 peach_seg5_animindex_500EC8C[] = {\n    0x0064, 0x0001, 0x0064, 0x0065, 0x0064, 0x00C9, 0x0001, 0x012D, 0x0001, 0x012E, 0x0001, 0x012F,\n    0x0001, 0x02DE, 0x0001, 0x0000, 0x0001, 0x02DF,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02DD,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02D0,\n    0x0001, 0x0000, 0x0064, 0x0130, 0x0001, 0x0194,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02DC,\n    0x0001, 0x02D1, 0x0001, 0x02D2, 0x0001, 0x02D3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0198,\n    0x0001, 0x0195, 0x0001, 0x0196, 0x0001, 0x0197,\n    0x0001, 0x0199, 0x0001, 0x019A, 0x0001, 0x019B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02DA,\n    0x0001, 0x02D4, 0x0001, 0x02D5, 0x0001, 0x02D6,\n    0x0001, 0x0000, 0x0001, 0x019F, 0x0001, 0x01A0,\n    0x0001, 0x019C, 0x0001, 0x019D, 0x0001, 0x019E,\n    0x0001, 0x01A1, 0x0001, 0x01A2, 0x0001, 0x01A3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02DB,\n    0x0001, 0x02D7, 0x0001, 0x02D8, 0x0001, 0x02D9,\n    0x0064, 0x01A4, 0x0064, 0x0208, 0x0064, 0x026C,\n};\n\n// 0x0500ED94\nstatic const struct Animation peach_seg5_anim_0500ED94 = {\n    1,\n    0,\n    0,\n    0,\n    0x64,\n    ANIMINDEX_NUMPARTS(peach_seg5_animindex_500EC8C),\n    peach_seg5_animvalue_0500E6CC,\n    peach_seg5_animindex_500EC8C,\n    0,\n};\n"
  },
  {
    "path": "actors/peach/anims/anim_0500F474.inc.c",
    "content": "// 0x0500EDAC\nstatic const s16 peach_seg5_animvalue_0500EDAC[] = {\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x015F, 0x0160, 0x0162,\n    0x0164, 0x0165, 0x0166, 0x0167, 0x0167, 0x0167, 0x0167, 0x0166,\n    0x0166, 0x0165, 0x0164, 0x0164, 0x0163, 0x0162, 0x0161, 0x0161,\n    0x0160, 0x015F, 0x015F, 0x015E, 0x015E, 0x015E, 0x015E, 0x015F,\n    0x0160, 0x0161, 0x0163, 0x0164, 0x0165, 0x0167, 0x0167, 0x0167,\n    0x0167, 0x0167, 0x0167, 0x0166, 0x0165, 0x0165, 0x0164, 0x0163,\n    0x0162, 0x0162, 0x0161, 0x0160, 0x015F, 0x015F, 0x015E, 0x015E,\n    0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E,\n    0x015E, 0x015F, 0x0160, 0x0161, 0x0161, 0x0163, 0x0164, 0x0164,\n    0x0165, 0x0166, 0x0167, 0x0167, 0x0167, 0x0162, 0x015E, 0x015E,\n    0x015F, 0x0160, 0x0161, 0x0163, 0x0164, 0x0165, 0x0166, 0x0167,\n    0x0167, 0x0167, 0x0166, 0x0164, 0x0163, 0x0161, 0x015F, 0x015E,\n    0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E,\n    0x015E, 0xF3D2, 0xF3C1, 0xF3B1, 0xF3A0, 0xF390, 0xF37F, 0xF36F,\n    0xF35E, 0xF34E, 0xF33D, 0xF32D, 0xF31C, 0xF30C, 0xF2FB, 0xF2EB,\n    0xF2DA, 0xF2CA, 0xF2B9, 0xF2A9, 0xF298, 0xF287, 0xF277, 0xF266,\n    0xF256, 0xF245, 0xF234, 0xF224, 0xF213, 0xF202, 0xF1F2, 0xF1E1,\n    0xF1D0, 0xF1C0, 0xF1AF, 0xF19E, 0xF18D, 0xF17D, 0xF16C, 0xF15B,\n    0xF14A, 0xF13A, 0xF129, 0xF118, 0xF107, 0xF0F6, 0xF0E5, 0xF0D5,\n    0xF0C4, 0xF0B3, 0xF0A2, 0xF091, 0xF080, 0xF06F, 0xF05E, 0xF04D,\n    0xF03C, 0xF02B, 0xF01A, 0xF009, 0xEFF8, 0xEFE7, 0xEFD6, 0xEFC5,\n    0xEFB4, 0xEFA3, 0xEF92, 0xEF80, 0xEF6F, 0xEF5E, 0xEF4D, 0xEF3C,\n    0xEF2A, 0xEF19, 0xEF08, 0xEEF7, 0xEEE5, 0xEED4, 0xEEC3, 0xEEB1,\n    0xEEA0, 0xEE8F, 0xEE7D, 0xEE6C, 0xEE5A, 0xEE49, 0xEE37, 0xEE26,\n    0xEE14, 0xEE03, 0xEDF1, 0xEDE0, 0xEDCE, 0xEDBC, 0xEDAB, 0xED99,\n    0xED87, 0xED76, 0xED64, 0xED52, 0xED40, 0xC50F, 0x3FFA, 0xC50F,\n    0x037C, 0x038F, 0x03A4, 0x03B9, 0x03CF, 0x03E5, 0x03FB, 0x0410,\n    0x0424, 0x0436, 0x0447, 0x0455, 0x0461, 0x0469, 0x046F, 0x0471,\n    0x046F, 0x046A, 0x0463, 0x0459, 0x044D, 0x043F, 0x042F, 0x041F,\n    0x040D, 0x03FB, 0x03E9, 0x03D7, 0x03C5, 0x03B4, 0x03A4, 0x0396,\n    0x0389, 0x037E, 0x0376, 0x0370, 0x036D, 0x036D, 0x036F, 0x0374,\n    0x037A, 0x0381, 0x038A, 0x0393, 0x039D, 0x03A8, 0x03B3, 0x03BF,\n    0x03CD, 0x03DD, 0x03EF, 0x0402, 0x0416, 0x042A, 0x043E, 0x0451,\n    0x0464, 0x0476, 0x0486, 0x0494, 0x04A0, 0x04A9, 0x04AF, 0x04B1,\n    0x04B0, 0x04A9, 0x049C, 0x048A, 0x0473, 0x0459, 0x043D, 0x041E,\n    0x03FE, 0x03DE, 0x03BF, 0x03A0, 0x0384, 0x036B, 0x0356, 0x0345,\n    0x033A, 0x0334, 0x0336, 0x033F, 0x034E, 0x0361, 0x0379, 0x0394,\n    0x03B1, 0x03CF, 0x03ED, 0x040A, 0x0425, 0x043E, 0x0452, 0x0462,\n    0x046D, 0x0470, 0x0470, 0x0470, 0xD112, 0xFEAC, 0x0F51, 0xFA0B,\n    0xDFC8, 0x2697, 0xFEDD, 0xB61E, 0xE885, 0xED3E, 0xFB9B, 0x0002,\n    0xDB59, 0xDBF9, 0x037F, 0xB682, 0xFFF8, 0xFFF9, 0xFFF9, 0xFFF9,\n    0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9,\n    0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9,\n    0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9, 0xFFF8, 0xFFF8,\n    0xFFF8, 0xFFF8, 0xFFF8, 0xFFF8, 0xFFF8, 0xFFF8, 0xFFF8, 0xFFF8,\n    0xFFF8, 0xFFF8, 0xFFF8, 0xFFF8, 0xFFF7, 0xFFF7, 0xFFF7, 0xFFF7,\n    0xFFF7, 0xFFF7, 0xFFF7, 0xFFF7, 0xFFF7, 0xFFF7, 0xFFF7, 0xFFF7,\n    0xFFF7, 0xFFF7, 0xFFF6, 0xFFF6, 0xFFF6, 0xFFF6, 0xFFF6, 0xFFF6,\n    0xFFF6, 0xFFF6, 0xFFF6, 0xFFF6, 0xFFF6, 0xFFF6, 0xFFF6, 0xFFF6,\n    0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5,\n    0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5,\n    0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5,\n    0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF6, 0xFFF6, 0xFFF6, 0xFFF6,\n    0xFF91, 0xFF5B, 0xFF29, 0xFEFC, 0xFED5, 0xFEB7, 0xFEA3, 0xFE9A,\n    0xFE9E, 0xFEAD, 0xFEC6, 0xFEE9, 0xFF12, 0xFF40, 0xFF73, 0xFFA9,\n    0xFFE0, 0x0015, 0x0049, 0x007B, 0x00A7, 0x00CD, 0x00EB, 0x0100,\n    0x010A, 0x010A, 0x0109, 0x0107, 0x0106, 0x0106, 0x0105, 0x0104,\n    0x0104, 0x0103, 0x0102, 0x0101, 0x0100, 0x00FE, 0x00FC, 0x00F9,\n    0x00F6, 0x00F2, 0x00ED, 0x00E8, 0x00E2, 0x00DB, 0x00D3, 0x00CA,\n    0x00C0, 0x00B4, 0x00A8, 0x009A, 0x0088, 0x0070, 0x0054, 0x0033,\n    0x000E, 0xFFE8, 0xFFC0, 0xFF96, 0xFF6D, 0xFF44, 0xFF1D, 0xFEF9,\n    0xFED9, 0xFEBC, 0xFEA5, 0xFE94, 0xFE8A, 0xFE87, 0xFE8D, 0xFE9B,\n    0xFEAF, 0xFEC9, 0xFEE9, 0xFF0C, 0xFF33, 0xFF5D, 0xFF88, 0xFFB4,\n    0xFFE0, 0x000A, 0x0033, 0x005A, 0x007D, 0x009C, 0x00B5, 0x00C9,\n    0x00D5, 0x00DA, 0x00CA, 0x009E, 0x005D, 0x000E, 0xFFB9, 0xFF63,\n    0xFF14, 0xFED3, 0xFEA7, 0xFE97, 0xBFCC, 0xBFCD, 0xBFCF, 0xBFD1,\n    0xBFD3, 0xBFD5, 0xBFD7, 0xBFD8, 0xBFD9, 0xBFDA, 0xBFDA, 0xBFDA,\n    0xBFD9, 0xBFD8, 0xBFD7, 0xBFD7, 0xBFD6, 0xBFD5, 0xBFD4, 0xBFD3,\n    0xBFD2, 0xBFD1, 0xBFD0, 0xBFCF, 0xBFCE, 0xBFCD, 0xBFCB, 0xBFCA,\n    0xBFC9, 0xBFC8, 0xBFC7, 0xBFC6, 0xBFC4, 0xBFC3, 0xBFC2, 0xBFC1,\n    0xBFC0, 0xBFBE, 0xBFBD, 0xBFBC, 0xBFBA, 0xBFB9, 0xBFB8, 0xBFB7,\n    0xBFB5, 0xBFB4, 0xBFB3, 0xBFB2, 0xBFB0, 0xBFAF, 0xBFAE, 0xBFAD,\n    0xBFAB, 0xBFAA, 0xBFA9, 0xBFA8, 0xBFA6, 0xBFA5, 0xBFA4, 0xBFA3,\n    0xBFA2, 0xBFA1, 0xBF9F, 0xBF9E, 0xBF9D, 0xBF9C, 0xBF9B, 0xBF9A,\n    0xBF99, 0xBF98, 0xBF97, 0xBF96, 0xBF96, 0xBF95, 0xBF94, 0xBF94,\n    0xBF93, 0xBF93, 0xBF94, 0xBF94, 0xBF94, 0xBF95, 0xBF96, 0xBF97,\n    0xBF97, 0xBF98, 0xBF99, 0xBF9A, 0xBF9B, 0xBF9C, 0xBF9E, 0xBF9F,\n    0xBFA1, 0xBFA3, 0xBFA5, 0xBFA6, 0xBFA8, 0xBFA9, 0xBFA9, 0xBFAA,\n    0xC066, 0x2697, 0xFEDD, 0xB61E, 0xDBF9, 0x037F, 0xB682, 0xE0FF,\n    0xC001, 0xE0FB, 0xBF7F, 0xFB1D, 0xBF84, 0xFB1D, 0x8001, 0x3FFF,\n};\n\n// 0x0500F36C\nstatic const u16 peach_seg5_animindex_500F36C[] = {\n    0x0064, 0x0001, 0x0064, 0x0065, 0x0064, 0x00C9, 0x0001, 0x012D, 0x0001, 0x012E, 0x0001, 0x012F,\n    0x0001, 0x02DE, 0x0001, 0x0000, 0x0001, 0x02DF,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02DD,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02D0,\n    0x0001, 0x0000, 0x0064, 0x0130, 0x0001, 0x0194,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02DC,\n    0x0001, 0x02D1, 0x0001, 0x02D2, 0x0001, 0x02D3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0198,\n    0x0001, 0x0195, 0x0001, 0x0196, 0x0001, 0x0197,\n    0x0001, 0x0199, 0x0001, 0x019A, 0x0001, 0x019B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02DA,\n    0x0001, 0x02D4, 0x0001, 0x02D5, 0x0001, 0x02D6,\n    0x0001, 0x0000, 0x0001, 0x019F, 0x0001, 0x01A0,\n    0x0001, 0x019C, 0x0001, 0x019D, 0x0001, 0x019E,\n    0x0001, 0x01A1, 0x0001, 0x01A2, 0x0001, 0x01A3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02DB,\n    0x0001, 0x02D7, 0x0001, 0x02D8, 0x0001, 0x02D9,\n    0x0064, 0x01A4, 0x0064, 0x0208, 0x0064, 0x026C,\n};\n\n// 0x0500F474\nstatic const struct Animation peach_seg5_anim_0500F474 = {\n    1,\n    0,\n    0,\n    0,\n    0x64,\n    ANIMINDEX_NUMPARTS(peach_seg5_animindex_500F36C),\n    peach_seg5_animvalue_0500EDAC,\n    peach_seg5_animindex_500F36C,\n    0,\n};\n"
  },
  {
    "path": "actors/peach/anims/anim_0500FE84.inc.c",
    "content": "// 0x0500F48C\nstatic const s16 peach_seg5_animvalue_0500F48C[] = {\n    0x0000, 0x015E, 0xFFDB, 0xC50F, 0x3FFA, 0xC50F, 0xFE24, 0xFE24,\n    0xFE24, 0xFE24, 0xFE24, 0xFE24, 0xFE24, 0xFE24, 0xFE24, 0xFE24,\n    0xFE24, 0xFE24, 0xFE24, 0xFE24, 0xFE24, 0xFE24, 0xFE24, 0xFE24,\n    0xFE24, 0xFE24, 0xFE24, 0xFE24, 0xFE24, 0xFE24, 0xFE24, 0xFE24,\n    0xFE24, 0xFE24, 0xFE24, 0xFE24, 0xFE24, 0xFE30, 0xFE4C, 0xFE6A,\n    0xFE89, 0xFEAA, 0xFECB, 0xFEED, 0xFF0F, 0xFF33, 0xFF56, 0xFF7B,\n    0xFF9F, 0xFFC4, 0xFFE9, 0x000C, 0x0031, 0x0055, 0x0079, 0x009D,\n    0x00BF, 0x00E2, 0x0103, 0x0123, 0x0143, 0x0161, 0x017E, 0x019A,\n    0x01B4, 0x01CC, 0x01E3, 0x01F8, 0x020C, 0x021D, 0x022C, 0x0238,\n    0x0243, 0x024B, 0x0250, 0x0253, 0x0253, 0x024E, 0x0246, 0x0239,\n    0x0228, 0x0214, 0x01FC, 0x01E1, 0x01C2, 0x01A1, 0x017E, 0x0157,\n    0x012F, 0x0105, 0x00D9, 0x00AC, 0x007D, 0x004E, 0x001E, 0xFFEE,\n    0xFFBC, 0xFF8B, 0xFF5A, 0xFF29, 0xFEF9, 0xFEC9, 0xFE9B, 0xFE6E,\n    0xFE42, 0xFE18, 0xFE66, 0xFE58, 0xFE49, 0xFE39, 0xFE27, 0xFE14,\n    0xFE00, 0xFDEC, 0xFDD8, 0xFDC4, 0xFDB1, 0xFD9E, 0xFD8D, 0xFD7C,\n    0xFD6E, 0xFD61, 0xFD57, 0xFD4F, 0xFD49, 0xFD47, 0xFD48, 0xFD4D,\n    0xFD56, 0xFD62, 0xFD6F, 0xFD7D, 0xFD8D, 0xFD9E, 0xFDB0, 0xFDC2,\n    0xFDD6, 0xFDEB, 0xFE00, 0xFE17, 0xFE2E, 0xFE45, 0xFE5E, 0xFE77,\n    0xFE90, 0xFEAA, 0xFEC5, 0xFEDF, 0xFEFA, 0xFF16, 0xFF31, 0xFF4D,\n    0xFF69, 0xFF85, 0xFFA0, 0xFFBC, 0xFFD8, 0xFFF3, 0x000D, 0x0028,\n    0x0043, 0x005D, 0x0077, 0x0090, 0x00A9, 0x00C1, 0x00D9, 0x00EF,\n    0x0105, 0x011A, 0x012F, 0x0142, 0x0154, 0x0166, 0x0176, 0x0185,\n    0x0193, 0x019F, 0x01AB, 0x01B5, 0x01BD, 0x01C4, 0x01CA, 0x01CD,\n    0x01CB, 0x01C2, 0x01B3, 0x019D, 0x0182, 0x0162, 0x013D, 0x0115,\n    0x00E9, 0x00BA, 0x0089, 0x0056, 0x0022, 0xFFEE, 0xFFB9, 0xFF83,\n    0xFF4F, 0xFF1C, 0xFEEA, 0xFEBB, 0xFE8F, 0xFE66, 0xE197, 0xE199,\n    0xE19D, 0xE1A4, 0xE1AD, 0xE1B9, 0xE1C6, 0xE1D5, 0xE1E5, 0xE1F7,\n    0xE20A, 0xE21E, 0xE233, 0xE248, 0xE25D, 0xE272, 0xE287, 0xE29C,\n    0xE2B0, 0xE2C4, 0xE2D6, 0xE2E7, 0xE2F7, 0xE305, 0xE311, 0xE31B,\n    0xE323, 0xE328, 0xE32A, 0xE32A, 0xE326, 0xE320, 0xE317, 0xE30B,\n    0xE2FE, 0xE2EE, 0xE2DD, 0xE2C9, 0xE2B5, 0xE29E, 0xE287, 0xE26E,\n    0xE254, 0xE239, 0xE21E, 0xE201, 0xE1E5, 0xE1C8, 0xE1AA, 0xE18D,\n    0xE170, 0xE152, 0xE136, 0xE119, 0xE0FD, 0xE0E2, 0xE0C8, 0xE0AF,\n    0xE097, 0xE081, 0xE06B, 0xE058, 0xE046, 0xE036, 0xE027, 0xE01B,\n    0xE012, 0xE00A, 0xE006, 0xE004, 0xE005, 0xE008, 0xE00E, 0xE016,\n    0xE021, 0xE02D, 0xE03A, 0xE049, 0xE05A, 0xE06B, 0xE07D, 0xE090,\n    0xE0A4, 0xE0B8, 0xE0CC, 0xE0E1, 0xE0F5, 0xE108, 0xE11C, 0xE12E,\n    0xE140, 0xE150, 0xE15F, 0xE16D, 0xE179, 0xE184, 0xE18C, 0xE192,\n    0xE196, 0xE197, 0xDA7F, 0x0814, 0xDD80, 0xADB4, 0x1FEE, 0xFE9E,\n    0xB0AD, 0x1B23, 0x047F, 0xE858, 0x0002, 0xAE20, 0xD958, 0x01CB,\n    0xAE9C, 0x04F6, 0x0515, 0x053F, 0x0574, 0x05B2, 0x05F6, 0x0640,\n    0x068D, 0x06DB, 0x072A, 0x0776, 0x07C0, 0x0804, 0x0841, 0x0875,\n    0x089F, 0x08BD, 0x08CC, 0x08CD, 0x08BC, 0x089D, 0x086F, 0x0833,\n    0x07EC, 0x0799, 0x073C, 0x06D7, 0x0669, 0x05F5, 0x057B, 0x04FD,\n    0x047C, 0x03F8, 0x0372, 0x02ED, 0x0269, 0x01E6, 0x0167, 0x00EC,\n    0x0077, 0x0007, 0xFFA1, 0xFF42, 0xFEED, 0xFEA2, 0xFE64, 0xFE32,\n    0xFE0F, 0xFDFB, 0xFDF7, 0xFE02, 0xFE1A, 0xFE3E, 0xFE6F, 0xFEAA,\n    0xFEEF, 0xFF3D, 0xFF93, 0xFFF1, 0x0055, 0x00BF, 0x012E, 0x01A1,\n    0x0218, 0x0291, 0x030C, 0x0387, 0x0402, 0x047C, 0x04F5, 0x056B,\n    0x05DE, 0x064C, 0x06B5, 0x0718, 0x0775, 0x07C9, 0x0816, 0x0859,\n    0x0891, 0x08BF, 0x08E0, 0x08ED, 0x08E9, 0x08D4, 0x08B1, 0x0882,\n    0x0848, 0x0805, 0x07BC, 0x076D, 0x071C, 0x06C9, 0x0676, 0x0626,\n    0x05D9, 0x0593, 0x0555, 0x0520, 0x04F6, 0xFF9F, 0xFF83, 0xFF64,\n    0xFF41, 0xFF1B, 0xFEF2, 0xFEC6, 0xFE98, 0xFE67, 0xFE34, 0xFDFF,\n    0xFDC9, 0xFD92, 0xFD59, 0xFD1F, 0xFCE2, 0xFC9F, 0xFC59, 0xFC12,\n    0xFBCB, 0xFB87, 0xFB49, 0xFB11, 0xFAE3, 0xFAC1, 0xFAAC, 0xFAA6,\n    0xFAB1, 0xFAC6, 0xFAE5, 0xFB0D, 0xFB41, 0xFB80, 0xFBCC, 0xFC25,\n    0xFC8B, 0xFD01, 0xFD85, 0xFE0E, 0xFE92, 0xFF0D, 0xFF81, 0xFFEB,\n    0x004A, 0x009E, 0x00E6, 0x0121, 0x014D, 0x0169, 0x0175, 0x0170,\n    0x015A, 0x0135, 0x0102, 0x00C3, 0x0078, 0x0024, 0xFFC7, 0xFF61,\n    0xFEF6, 0xFE85, 0xFE10, 0xFD98, 0xFD1F, 0xFCAC, 0xFC43, 0xFBE6,\n    0xFB95, 0xFB4F, 0xFB15, 0xFAE7, 0xFAC6, 0xFAB1, 0xFAA9, 0xFAAD,\n    0xFAB9, 0xFACD, 0xFAE9, 0xFB0E, 0xFB3B, 0xFB71, 0xFBB0, 0xFBFA,\n    0xFC4D, 0xFCAA, 0xFD12, 0xFD85, 0xFDF3, 0xFE4E, 0xFE98, 0xFED3,\n    0xFF01, 0xFF24, 0xFF3F, 0xFF53, 0xFF63, 0xFF70, 0xFF7D, 0xFF8C,\n    0xFF9F, 0xC001, 0xBFF9, 0xBFE4, 0xBFC4, 0xBF9A, 0xBF6A, 0xBF35,\n    0xBEFE, 0xBEC7, 0xBE93, 0xBE63, 0xBE3B, 0xBE1C, 0xBE08, 0xBE03,\n    0xBE0B, 0xBE1F, 0xBE3C, 0xBE62, 0xBE8F, 0xBEC1, 0xBEF6, 0xBF2E,\n    0xBF66, 0xBF9D, 0xBFD1, 0xC001, 0xC033, 0xC06C, 0xC0AB, 0xC0EB,\n    0xC12C, 0xC16B, 0xC1A5, 0xC1D7, 0xC201, 0xC21E, 0xC22C, 0xC22A,\n    0xC21A, 0xC1FD, 0xC1D5, 0xC1A5, 0xC16F, 0xC134, 0xC0F6, 0xC0B8,\n    0xC07B, 0xC041, 0xC00D, 0xBFDC, 0xBFA6, 0xBF6B, 0xBF2E, 0xBEEF,\n    0xBEB1, 0xBE76, 0xBE3D, 0xBE0B, 0xBDDF, 0xBDBB, 0xBDA2, 0xBD94,\n    0xBD94, 0xBDA2, 0xBDBB, 0xBDE0, 0xBE0E, 0xBE43, 0xBE7E, 0xBEBD,\n    0xBEFF, 0xBF42, 0xBF84, 0xBFC5, 0xC001, 0xC042, 0xC090, 0xC0E5,\n    0xC13E, 0xC198, 0xC1ED, 0xC23B, 0xC27D, 0xC2B0, 0xC2CE, 0xC2D5,\n    0xC2C7, 0xC2A8, 0xC27A, 0xC241, 0xC200, 0xC1B8, 0xC16D, 0xC121,\n    0xC0D8, 0xC094, 0xC057, 0xC025, 0xC001, 0xC066, 0x1FEE, 0xFE9E,\n    0xB0AD, 0xD958, 0x01CB, 0xAE9C, 0xE0FF, 0xC001, 0xE0FB, 0xBF7F,\n    0x0003, 0xFDD4, 0xFDD4, 0xFDD3, 0xFDD2, 0xFDD1, 0xFDCF, 0xFDCD,\n    0xFDCA, 0xFDC7, 0xFDC4, 0xFDC1, 0xFDBD, 0xFDBA, 0xFDB6, 0xFDB2,\n    0xFDAE, 0xFDAA, 0xFDA5, 0xFDA1, 0xFD9D, 0xFD98, 0xFD94, 0xFD90,\n    0xFD8C, 0xFD88, 0xFD84, 0xFD80, 0xFD7D, 0xFD7A, 0xFD77, 0xFD74,\n    0xFD71, 0xFD6F, 0xFD6D, 0xFD6C, 0xFD6B, 0xFD6A, 0xFD6A, 0xFD6A,\n    0xFD6B, 0xFD6C, 0xFD6D, 0xFD6F, 0xFD70, 0xFD73, 0xFD75, 0xFD78,\n    0xFD7A, 0xFD7D, 0xFD81, 0xFD84, 0xFD87, 0xFD8B, 0xFD8F, 0xFD93,\n    0xFD97, 0xFD9B, 0xFD9F, 0xFDA3, 0xFDA7, 0xFDAB, 0xFDAF, 0xFDB2,\n    0xFDB6, 0xFDBA, 0xFDBE, 0xFDC1, 0xFDC4, 0xFDC8, 0xFDCB, 0xFDCD,\n    0xFDD0, 0xFDD2, 0xFDD4, 0xFDD6, 0xFDD7, 0xFDD9, 0xFDDA, 0xFDDA,\n    0xFDDB, 0xFDDB, 0xFDDB, 0xFDDB, 0xFDDB, 0xFDDB, 0xFDDB, 0xFDDA,\n    0xFDDA, 0xFDD9, 0xFDD9, 0xFDD8, 0xFDD7, 0xFDD7, 0xFDD6, 0xFDD6,\n    0xFDD5, 0xFDD5, 0xFDD4, 0xFDD4, 0xFDD4, 0xBF84, 0x002D, 0x0009,\n    0xF320, 0xF320, 0xF321, 0xF321, 0xF322, 0xF323, 0xF324, 0xF326,\n    0xF327, 0xF329, 0xF32B, 0xF32C, 0xF32E, 0xF330, 0xF332, 0xF334,\n    0xF336, 0xF337, 0xF339, 0xF33B, 0xF33C, 0xF33E, 0xF33F, 0xF340,\n    0xF341, 0xF341, 0xF342, 0xF342, 0xF341, 0xF341, 0xF340, 0xF33F,\n    0xF33E, 0xF33D, 0xF33C, 0xF33A, 0xF339, 0xF337, 0xF335, 0xF333,\n    0xF331, 0xF32F, 0xF32D, 0xF32B, 0xF328, 0xF326, 0xF323, 0xF321,\n    0xF31F, 0xF31C, 0xF31A, 0xF317, 0xF315, 0xF312, 0xF310, 0xF30E,\n    0xF30B, 0xF309, 0xF307, 0xF305, 0xF303, 0xF301, 0xF300, 0xF2FE,\n    0xF2FC, 0xF2FB, 0xF2FA, 0xF2F9, 0xF2F8, 0xF2F7, 0xF2F7, 0xF2F7,\n    0xF2F7, 0xF2F7, 0xF2F8, 0xF2F9, 0xF2FA, 0xF2FB, 0xF2FD, 0xF2FF,\n    0xF301, 0xF303, 0xF305, 0xF307, 0xF309, 0xF30B, 0xF30D, 0xF310,\n    0xF312, 0xF314, 0xF316, 0xF318, 0xF31A, 0xF31B, 0xF31D, 0xF31E,\n    0xF31F, 0xF320, 0xF320, 0xF320, 0x002D, 0x0009, 0xF320, 0xF320,\n    0xF321, 0xF321, 0xF322, 0xF323, 0xF324, 0xF326, 0xF327, 0xF329,\n    0xF32B, 0xF32C, 0xF32E, 0xF330, 0xF332, 0xF334, 0xF336, 0xF337,\n    0xF339, 0xF33B, 0xF33C, 0xF33E, 0xF33F, 0xF340, 0xF341, 0xF341,\n    0xF342, 0xF342, 0xF341, 0xF341, 0xF340, 0xF33F, 0xF33E, 0xF33D,\n    0xF33C, 0xF33A, 0xF339, 0xF337, 0xF335, 0xF333, 0xF331, 0xF32F,\n    0xF32D, 0xF32B, 0xF328, 0xF326, 0xF323, 0xF321, 0xF31F, 0xF31C,\n    0xF31A, 0xF317, 0xF315, 0xF312, 0xF310, 0xF30E, 0xF30B, 0xF309,\n    0xF307, 0xF305, 0xF303, 0xF301, 0xF300, 0xF2FE, 0xF2FC, 0xF2FB,\n    0xF2FA, 0xF2F9, 0xF2F8, 0xF2F7, 0xF2F7, 0xF2F7, 0xF2F7, 0xF2F7,\n    0xF2F8, 0xF2F9, 0xF2FA, 0xF2FB, 0xF2FD, 0xF2FF, 0xF301, 0xF303,\n    0xF305, 0xF307, 0xF309, 0xF30B, 0xF30D, 0xF310, 0xF312, 0xF314,\n    0xF316, 0xF318, 0xF31A, 0xF31B, 0xF31D, 0xF31E, 0xF31F, 0xF320,\n    0xF320, 0xF320, 0x002D, 0x0009, 0xF320, 0xF320, 0xF321, 0xF321,\n    0xF322, 0xF323, 0xF324, 0xF326, 0xF327, 0xF329, 0xF32B, 0xF32C,\n    0xF32E, 0xF330, 0xF332, 0xF334, 0xF336, 0xF337, 0xF339, 0xF33B,\n    0xF33C, 0xF33E, 0xF33F, 0xF340, 0xF341, 0xF341, 0xF342, 0xF342,\n    0xF341, 0xF341, 0xF340, 0xF33F, 0xF33E, 0xF33D, 0xF33C, 0xF33A,\n    0xF339, 0xF337, 0xF335, 0xF333, 0xF331, 0xF32F, 0xF32D, 0xF32B,\n    0xF328, 0xF326, 0xF323, 0xF321, 0xF31F, 0xF31C, 0xF31A, 0xF317,\n    0xF315, 0xF312, 0xF310, 0xF30E, 0xF30B, 0xF309, 0xF307, 0xF305,\n    0xF303, 0xF301, 0xF300, 0xF2FE, 0xF2FC, 0xF2FB, 0xF2FA, 0xF2F9,\n    0xF2F8, 0xF2F7, 0xF2F7, 0xF2F7, 0xF2F7, 0xF2F7, 0xF2F8, 0xF2F9,\n    0xF2FA, 0xF2FB, 0xF2FD, 0xF2FF, 0xF301, 0xF303, 0xF305, 0xF307,\n    0xF309, 0xF30B, 0xF30D, 0xF310, 0xF312, 0xF314, 0xF316, 0xF318,\n    0xF31A, 0xF31B, 0xF31D, 0xF31E, 0xF31F, 0xF320, 0xF320, 0xF320,\n    0x0003, 0xFDD4, 0xFDD4, 0xFDD3, 0xFDD2, 0xFDD1, 0xFDCF, 0xFDCD,\n    0xFDCA, 0xFDC7, 0xFDC4, 0xFDC1, 0xFDBD, 0xFDBA, 0xFDB6, 0xFDB2,\n    0xFDAE, 0xFDAA, 0xFDA5, 0xFDA1, 0xFD9D, 0xFD98, 0xFD94, 0xFD90,\n    0xFD8C, 0xFD88, 0xFD84, 0xFD80, 0xFD7D, 0xFD7A, 0xFD77, 0xFD74,\n    0xFD71, 0xFD6F, 0xFD6D, 0xFD6C, 0xFD6B, 0xFD6A, 0xFD6A, 0xFD6A,\n    0xFD6B, 0xFD6C, 0xFD6D, 0xFD6F, 0xFD70, 0xFD73, 0xFD75, 0xFD78,\n    0xFD7A, 0xFD7D, 0xFD81, 0xFD84, 0xFD87, 0xFD8B, 0xFD8F, 0xFD93,\n    0xFD97, 0xFD9B, 0xFD9F, 0xFDA3, 0xFDA7, 0xFDAB, 0xFDAF, 0xFDB2,\n    0xFDB6, 0xFDBA, 0xFDBE, 0xFDC1, 0xFDC4, 0xFDC8, 0xFDCB, 0xFDCD,\n    0xFDD0, 0xFDD2, 0xFDD4, 0xFDD6, 0xFDD7, 0xFDD9, 0xFDDA, 0xFDDA,\n    0xFDDB, 0xFDDB, 0xFDDB, 0xFDDB, 0xFDDB, 0xFDDB, 0xFDDB, 0xFDDA,\n    0xFDDA, 0xFDD9, 0xFDD9, 0xFDD8, 0xFDD7, 0xFDD7, 0xFDD6, 0xFDD6,\n    0xFDD5, 0xFDD5, 0xFDD4, 0xFDD4, 0xFDD4, 0xFFFE, 0x428B, 0x0000,\n};\n\n// 0x0500FD7C\nstatic const u16 peach_seg5_animindex_500FD7C[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0003, 0x0001, 0x0004, 0x0001, 0x0005,\n    0x0001, 0x0000, 0x0001, 0x0475, 0x0001, 0x0476,\n    0x0001, 0x0000, 0x0001, 0x0410, 0x0064, 0x0411,\n    0x0001, 0x03AA, 0x0001, 0x03AB, 0x0064, 0x03AC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x026D,\n    0x0064, 0x0006, 0x0064, 0x006A, 0x0064, 0x00CE,\n    0x0001, 0x0344, 0x0001, 0x0345, 0x0064, 0x0346,\n    0x0001, 0x02DE, 0x0001, 0x02DF, 0x0064, 0x02E0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02DD,\n    0x0001, 0x026E, 0x0001, 0x026F, 0x0001, 0x0270,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0135,\n    0x0001, 0x0132, 0x0001, 0x0133, 0x0001, 0x0134,\n    0x0001, 0x0136, 0x0001, 0x0137, 0x0001, 0x0138,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0277,\n    0x0001, 0x0271, 0x0001, 0x0272, 0x0001, 0x0273,\n    0x0001, 0x0000, 0x0001, 0x013C, 0x0001, 0x013D,\n    0x0001, 0x0139, 0x0001, 0x013A, 0x0001, 0x013B,\n    0x0001, 0x013E, 0x0001, 0x013F, 0x0001, 0x0140,\n    0x0001, 0x0000, 0x0001, 0x0278, 0x0064, 0x0279,\n    0x0001, 0x0274, 0x0001, 0x0275, 0x0001, 0x0276,\n    0x0064, 0x0141, 0x0064, 0x01A5, 0x0064, 0x0209,\n};\n\n// 0x0500FE84\nstatic const struct Animation peach_seg5_anim_0500FE84 = {\n    0,\n    0,\n    0,\n    0,\n    0x64,\n    ANIMINDEX_NUMPARTS(peach_seg5_animindex_500FD7C),\n    peach_seg5_animvalue_0500F48C,\n    peach_seg5_animindex_500FD7C,\n    0,\n};\n"
  },
  {
    "path": "actors/peach/anims/anim_05011050.inc.c",
    "content": "// 0x0500FE9C\nstatic const s16 peach_seg5_animvalue_0500FE9C[] = {\n    0x0000, 0x015E, 0xFFDB, 0xC50F, 0x3FFA, 0xC50F, 0xFE24, 0xFE24,\n    0xFE24, 0xFE24, 0xFE24, 0xFE24, 0xFE24, 0xFE24, 0xFE24, 0xFE24,\n    0xFE24, 0xFE24, 0xFE24, 0xFE24, 0xFE24, 0xFE24, 0xFE24, 0xFE24,\n    0xFE24, 0xFE24, 0xFE24, 0xFE24, 0xFE24, 0xFE24, 0xFE24, 0xFE24,\n    0xFE24, 0xFE24, 0xFE24, 0xFE24, 0xFE24, 0xFE24, 0xFE26, 0xFE2A,\n    0xFE31, 0xFE3A, 0xFE44, 0xFE50, 0xFE5E, 0xFE6E, 0xFE7F, 0xFE91,\n    0xFEA5, 0xFEB9, 0xFECF, 0xFEE6, 0xFEFD, 0xFF16, 0xFF2F, 0xFF48,\n    0xFF62, 0xFF7C, 0xFF96, 0xFFB0, 0xFFCB, 0xFFE5, 0xFFFF, 0x0017,\n    0x0031, 0x0049, 0x0061, 0x0078, 0x008E, 0x00A4, 0x00B8, 0x00CB,\n    0x00DC, 0x00EC, 0x00FB, 0x0108, 0x0113, 0x011D, 0x0124, 0x012A,\n    0x012D, 0x012F, 0x012F, 0x012D, 0x012A, 0x0125, 0x011F, 0x0116,\n    0x010D, 0x0102, 0x00F5, 0x00E7, 0x00D8, 0x00C7, 0x00B5, 0x00A2,\n    0x008E, 0x0078, 0x0061, 0x0049, 0x0031, 0x0017, 0xFFFD, 0xFFE1,\n    0xFFC4, 0xFFA7, 0xFE66, 0xFE64, 0xFE5F, 0xFE57, 0xFE4C, 0xFE3E,\n    0xFE2F, 0xFE1F, 0xFE0D, 0xFDFA, 0xFDE6, 0xFDD3, 0xFDC0, 0xFDAD,\n    0xFD9B, 0xFD8A, 0xFD7B, 0xFD6E, 0xFD63, 0xFD5B, 0xFD56, 0xFD55,\n    0xFD57, 0xFD5C, 0xFD62, 0xFD68, 0xFD70, 0xFD78, 0xFD81, 0xFD8A,\n    0xFD94, 0xFD9F, 0xFDAB, 0xFDB6, 0xFDC3, 0xFDD0, 0xFDDD, 0xFDEB,\n    0xFDF9, 0xFE08, 0xFE16, 0xFE25, 0xFE35, 0xFE44, 0xFE54, 0xFE63,\n    0xFE73, 0xFE83, 0xFE93, 0xFEA2, 0xFEB2, 0xFEC2, 0xFED1, 0xFEE1,\n    0xFEF0, 0xFEFF, 0xFF0E, 0xFF1C, 0xFF2A, 0xFF38, 0xFF45, 0xFF52,\n    0xFF5E, 0xFF6A, 0xFF75, 0xFF80, 0xFF8A, 0xFF93, 0xFF9C, 0xFFA4,\n    0xFFAB, 0xFFB1, 0xFFB7, 0xFFBC, 0xFFC0, 0xFFC2, 0xFFC4, 0xFFC5,\n    0xFFC0, 0xFFB5, 0xFFA5, 0xFF8F, 0xFF76, 0xFF58, 0xFF38, 0xFF15,\n    0xFEF0, 0xFECA, 0xFEA3, 0xFE7D, 0xFE57, 0xFE32, 0xFE10, 0xFDF0,\n    0xFDD3, 0xFDBA, 0xFDA5, 0xFD96, 0xFD8C, 0xFD89, 0xE197, 0xE199,\n    0xE19E, 0xE1A6, 0xE1B1, 0xE1BF, 0xE1CF, 0xE1E1, 0xE1F4, 0xE209,\n    0xE21F, 0xE236, 0xE24E, 0xE266, 0xE27E, 0xE296, 0xE2AD, 0xE2C4,\n    0xE2DA, 0xE2EE, 0xE301, 0xE311, 0xE320, 0xE32C, 0xE336, 0xE33D,\n    0xE340, 0xE340, 0xE33C, 0xE334, 0xE328, 0xE319, 0xE30C, 0xE300,\n    0xE2F5, 0xE2EA, 0xE2E0, 0xE2D7, 0xE2CD, 0xE2C3, 0xE2B9, 0xE2AE,\n    0xE2A2, 0xE296, 0xE287, 0xE277, 0xE266, 0xE252, 0xE23B, 0xE223,\n    0xE207, 0xE1E8, 0xE1C6, 0xE1A1, 0xE177, 0xE14A, 0xE118, 0xE0E2,\n    0xE0A7, 0xE067, 0xE022, 0xDFD8, 0xDF88, 0xDF31, 0xDED5, 0xDE72,\n    0xDE09, 0xDD99, 0xDD1B, 0xDC86, 0xDBDC, 0xDB20, 0xDA51, 0xD974,\n    0xD888, 0xD790, 0xD68E, 0xD583, 0xD471, 0xD35A, 0xD240, 0xD123,\n    0xD007, 0xCEED, 0xCDD6, 0xCCC5, 0xCBBB, 0xCAB9, 0xC9C2, 0xC8D8,\n    0xC7FB, 0xC72E, 0xC673, 0xC5CB, 0xC538, 0xC4BC, 0xC458, 0xC40F,\n    0xC3E2, 0xC3D2, 0xDA7F, 0x0814, 0xDD80, 0xADB4, 0x1FEE, 0xFE9E,\n    0xB0AD, 0x1B23, 0x047F, 0xE858, 0x0002, 0xAE20, 0xD958, 0x01CB,\n    0xAE9C, 0x04F6, 0x0512, 0x0535, 0x055E, 0x058C, 0x05BE, 0x05F2,\n    0x0628, 0x065E, 0x0693, 0x06C7, 0x06F8, 0x0724, 0x074C, 0x076C,\n    0x0786, 0x0797, 0x079E, 0x079B, 0x078D, 0x0775, 0x0755, 0x072C,\n    0x06FC, 0x06C4, 0x0686, 0x0642, 0x05F9, 0x05AB, 0x0559, 0x0503,\n    0x04AB, 0x0450, 0x03F4, 0x0397, 0x033A, 0x02DC, 0x0280, 0x0225,\n    0x01CC, 0x0176, 0x0123, 0x00D3, 0x0089, 0x0043, 0x0003, 0xFFCB,\n    0xFF98, 0xFF6D, 0xFF4A, 0xFF2E, 0xFF19, 0xFF08, 0xFEFD, 0xFEF6,\n    0xFEF4, 0xFEF6, 0xFEFB, 0xFF04, 0xFF10, 0xFF1F, 0xFF30, 0xFF43,\n    0xFF58, 0xFF6E, 0xFF85, 0xFF9D, 0xFFB5, 0xFFCD, 0xFFE6, 0xFFFD,\n    0x0012, 0x0027, 0x003B, 0x004C, 0x005B, 0x0068, 0x0071, 0x0078,\n    0x007B, 0x007C, 0x007B, 0x0078, 0x0074, 0x006F, 0x0068, 0x0061,\n    0x0059, 0x0050, 0x0047, 0x003E, 0x0035, 0x002D, 0x0025, 0x001D,\n    0x0017, 0x0011, 0x000D, 0x000B, 0x000A, 0xFF9F, 0xFF8C, 0xFF79,\n    0xFF64, 0xFF4E, 0xFF36, 0xFF1B, 0xFEFC, 0xFEDB, 0xFEB5, 0xFE8B,\n    0xFE5B, 0xFE27, 0xFDEC, 0xFDAC, 0xFD6D, 0xFD2F, 0xFCF3, 0xFCB7,\n    0xFC7E, 0xFC47, 0xFC12, 0xFBE0, 0xFBB1, 0xFB84, 0xFB5B, 0xFB36,\n    0xFB16, 0xFAFB, 0xFAE8, 0xFADF, 0xFAE1, 0xFAF1, 0xFB10, 0xFB40,\n    0xFB82, 0xFBDA, 0xFC47, 0xFCCC, 0xFD4B, 0xFDBA, 0xFE1A, 0xFE6D,\n    0xFEB6, 0xFEF6, 0xFF2E, 0xFF62, 0xFF92, 0xFFC0, 0xFFEE, 0x0019,\n    0x0035, 0x0042, 0x0040, 0x0032, 0x001A, 0xFFFA, 0xFFD1, 0xFFA3,\n    0xFF72, 0xFF3E, 0xFF0A, 0xFED8, 0xFEA8, 0xFE7C, 0xFE4C, 0xFE17,\n    0xFDE0, 0xFDAA, 0xFD76, 0xFD47, 0xFD1F, 0xFD00, 0xFCEC, 0xFCE5,\n    0xFCE7, 0xFCF1, 0xFD01, 0xFD16, 0xFD30, 0xFD4F, 0xFD71, 0xFD96,\n    0xFDBC, 0xFDE4, 0xFE0C, 0xFE30, 0xFE47, 0xFE53, 0xFE55, 0xFE4F,\n    0xFE44, 0xFE34, 0xFE22, 0xFE10, 0xFE00, 0xFDF4, 0xFDED, 0xFDED,\n    0xFDF7, 0xC001, 0xBFF9, 0xBFE4, 0xBFC4, 0xBF9A, 0xBF6A, 0xBF35,\n    0xBEFE, 0xBEC7, 0xBE93, 0xBE63, 0xBE3B, 0xBE1C, 0xBE08, 0xBE03,\n    0xBE0C, 0xBE22, 0xBE43, 0xBE6D, 0xBE9D, 0xBED3, 0xBF0A, 0xBF43,\n    0xBF7A, 0xBFAD, 0xBFDB, 0xC001, 0xC023, 0xC046, 0xC069, 0xC08B,\n    0xC0AC, 0xC0CA, 0xC0E5, 0xC0FC, 0xC10F, 0xC11C, 0xC123, 0xC124,\n    0xC11C, 0xC10D, 0xC0F8, 0xC0DE, 0xC0C0, 0xC0A0, 0xC07F, 0xC05D,\n    0xC03D, 0xC020, 0xC007, 0xBFF0, 0xBFD8, 0xBFBF, 0xBFA6, 0xBF8C,\n    0xBF73, 0xBF5C, 0xBF45, 0xBF31, 0xBF20, 0xBF12, 0xBF07, 0xBF02,\n    0xBF00, 0xBF06, 0xBF13, 0xBF25, 0xBF3B, 0xBF55, 0xBF70, 0xBF8D,\n    0xBFA9, 0xBFC4, 0xBFDC, 0xBFF1, 0xC001, 0xC00E, 0xC01A, 0xC024,\n    0xC02D, 0xC034, 0xC039, 0xC03C, 0xC03D, 0xC03A, 0xC036, 0xC02D,\n    0xC020, 0xC00E, 0xBFF8, 0xBFE0, 0xBFC6, 0xBFAC, 0xBF92, 0xBF7A,\n    0xBF65, 0xBF53, 0xBF46, 0xBF3E, 0xBF3E, 0xC066, 0x1FEE, 0xFE9E,\n    0xB0AD, 0xD958, 0x01CB, 0xAE9C, 0xE0FF, 0xC001, 0xE0FB, 0xBF7F,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0001, 0x0001, 0x0001, 0x0001,\n    0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0xFDD4, 0xFDD4, 0xFDD3, 0xFDD2,\n    0xFDD1, 0xFDCF, 0xFDCD, 0xFDCA, 0xFDC7, 0xFDC4, 0xFDC1, 0xFDBD,\n    0xFDBA, 0xFDB6, 0xFDB2, 0xFDAE, 0xFDAA, 0xFDA5, 0xFDA1, 0xFD9D,\n    0xFD98, 0xFD94, 0xFD90, 0xFD8C, 0xFD88, 0xFD84, 0xFD80, 0xFD7D,\n    0xFD7A, 0xFD77, 0xFD74, 0xFD71, 0xFD6F, 0xFD6D, 0xFD6C, 0xFD6B,\n    0xFD6A, 0xFD6A, 0xFD6A, 0xFD6A, 0xFD6A, 0xFD69, 0xFD69, 0xFD69,\n    0xFD69, 0xFD69, 0xFD69, 0xFD69, 0xFD69, 0xFD69, 0xFD69, 0xFD6A,\n    0xFD6B, 0xFD6C, 0xFD6D, 0xFD6E, 0xFD70, 0xFD72, 0xFD75, 0xFD77,\n    0xFD7A, 0xFD7E, 0xFD82, 0xFD86, 0xFD8B, 0xFD90, 0xFD96, 0xFD9C,\n    0xFDA3, 0xFDAB, 0xFDB3, 0xFDBB, 0xFDC5, 0xFDCE, 0xFDD9, 0xFDE7,\n    0xFDF7, 0xFE0B, 0xFE20, 0xFE38, 0xFE52, 0xFE6E, 0xFE8A, 0xFEA8,\n    0xFEC6, 0xFEE4, 0xFF03, 0xFF21, 0xFF3E, 0xFF5B, 0xFF76, 0xFF90,\n    0xFFA8, 0xFFBD, 0xFFD1, 0xFFE1, 0xFFEE, 0xFFF8, 0xFFFE, 0x0000,\n    0xBF84, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D,\n    0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D,\n    0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D,\n    0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D,\n    0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D,\n    0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D,\n    0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D,\n    0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D,\n    0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B,\n    0x002B, 0x002B, 0x002B, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A,\n    0x002A, 0x002A, 0x002A, 0x002A, 0x002A, 0x0009, 0x0009, 0x0009,\n    0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009,\n    0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009,\n    0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009,\n    0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x000A, 0x000A, 0x000A,\n    0x000A, 0x000A, 0x000A, 0x000A, 0x000A, 0x000A, 0x000B, 0x000B,\n    0x000B, 0x000B, 0x000B, 0x000B, 0x000B, 0x000B, 0x000B, 0x000B,\n    0x000B, 0x000B, 0x000B, 0x000B, 0x000B, 0x000B, 0x000A, 0x000A,\n    0x000A, 0x0009, 0x0009, 0x0008, 0x0008, 0x0007, 0x0007, 0x0006,\n    0x0005, 0x0004, 0x0003, 0x0002, 0x0001, 0x0000, 0x0000, 0xFFFF,\n    0xFFFE, 0xFFFD, 0xFFFC, 0xFFFB, 0xFFFA, 0xFFF9, 0xFFF8, 0xFFF7,\n    0xFFF6, 0xFFF5, 0xFFF4, 0xFFF4, 0xFFF3, 0xFFF2, 0xFFF1, 0xFFF0,\n    0xFFF0, 0xFFEF, 0xFFEF, 0xFFEE, 0xFFEE, 0xFFEE, 0xFFED, 0xFFED,\n    0xFFED, 0xF320, 0xF320, 0xF321, 0xF321, 0xF322, 0xF323, 0xF324,\n    0xF326, 0xF327, 0xF329, 0xF32B, 0xF32D, 0xF32E, 0xF330, 0xF332,\n    0xF334, 0xF336, 0xF338, 0xF339, 0xF33B, 0xF33D, 0xF33E, 0xF33F,\n    0xF340, 0xF341, 0xF341, 0xF342, 0xF342, 0xF342, 0xF341, 0xF33C,\n    0xF332, 0xF322, 0xF30E, 0xF2F6, 0xF2DB, 0xF2BD, 0xF29C, 0xF27B,\n    0xF258, 0xF236, 0xF213, 0xF1F2, 0xF1D2, 0xF1B4, 0xF19A, 0xF182,\n    0xF16F, 0xF160, 0xF157, 0xF153, 0xF156, 0xF160, 0xF171, 0xF18B,\n    0xF1AE, 0xF1DA, 0xF211, 0xF252, 0xF29E, 0xF2F7, 0xF35E, 0xF3D5,\n    0xF45A, 0xF4ED, 0xF58E, 0xF63A, 0xF6F1, 0xF7B1, 0xF87B, 0xF94D,\n    0xFA25, 0xFB04, 0xFBE7, 0xFCCF, 0xFDB9, 0xFEA6, 0xFF93, 0x0080,\n    0x016C, 0x0257, 0x033E, 0x0422, 0x0501, 0x05DA, 0x06AC, 0x0777,\n    0x0838, 0x08F0, 0x099D, 0x0A3E, 0x0AD2, 0x0B59, 0x0BD0, 0x0C38,\n    0x0C90, 0x0CD5, 0x0D08, 0x0D28, 0x0D32, 0x002D, 0x002D, 0x002D,\n    0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D,\n    0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D,\n    0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D,\n    0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D,\n    0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D,\n    0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D,\n    0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D,\n    0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D,\n    0x002D, 0x002D, 0x002D, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002B, 0x002B, 0x002B, 0x002B,\n    0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002A,\n    0x002A, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A,\n    0x002A, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009,\n    0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009,\n    0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009,\n    0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009,\n    0x0009, 0x000A, 0x000A, 0x000A, 0x000A, 0x000A, 0x000A, 0x000A,\n    0x000A, 0x000A, 0x000B, 0x000B, 0x000B, 0x000B, 0x000B, 0x000B,\n    0x000B, 0x000B, 0x000B, 0x000B, 0x000B, 0x000B, 0x000B, 0x000B,\n    0x000B, 0x000B, 0x000A, 0x000A, 0x000A, 0x0009, 0x0009, 0x0008,\n    0x0008, 0x0007, 0x0007, 0x0006, 0x0005, 0x0004, 0x0003, 0x0002,\n    0x0001, 0x0000, 0x0000, 0xFFFF, 0xFFFE, 0xFFFD, 0xFFFC, 0xFFFB,\n    0xFFFA, 0xFFF9, 0xFFF8, 0xFFF7, 0xFFF6, 0xFFF5, 0xFFF4, 0xFFF4,\n    0xFFF3, 0xFFF2, 0xFFF1, 0xFFF0, 0xFFF0, 0xFFEF, 0xFFEF, 0xFFEE,\n    0xFFEE, 0xFFEE, 0xFFED, 0xFFED, 0xFFED, 0xF320, 0xF320, 0xF321,\n    0xF321, 0xF322, 0xF323, 0xF324, 0xF326, 0xF327, 0xF329, 0xF32B,\n    0xF32D, 0xF32E, 0xF330, 0xF332, 0xF334, 0xF336, 0xF338, 0xF339,\n    0xF33B, 0xF33D, 0xF33E, 0xF33F, 0xF340, 0xF341, 0xF341, 0xF342,\n    0xF342, 0xF342, 0xF341, 0xF33C, 0xF332, 0xF322, 0xF30E, 0xF2F6,\n    0xF2DB, 0xF2BD, 0xF29C, 0xF27B, 0xF258, 0xF236, 0xF213, 0xF1F2,\n    0xF1D2, 0xF1B4, 0xF19A, 0xF182, 0xF16F, 0xF160, 0xF157, 0xF153,\n    0xF156, 0xF160, 0xF171, 0xF18B, 0xF1AE, 0xF1DA, 0xF211, 0xF252,\n    0xF29E, 0xF2F7, 0xF35E, 0xF3D5, 0xF45A, 0xF4ED, 0xF58E, 0xF63A,\n    0xF6F1, 0xF7B1, 0xF87B, 0xF94D, 0xFA25, 0xFB04, 0xFBE7, 0xFCCF,\n    0xFDB9, 0xFEA6, 0xFF93, 0x0080, 0x016C, 0x0257, 0x033E, 0x0422,\n    0x0501, 0x05DA, 0x06AC, 0x0777, 0x0838, 0x08F0, 0x099D, 0x0A3E,\n    0x0AD2, 0x0B59, 0x0BD0, 0x0C38, 0x0C90, 0x0CD5, 0x0D08, 0x0D28,\n    0x0D32, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D,\n    0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D,\n    0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D,\n    0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D,\n    0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D,\n    0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D,\n    0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D,\n    0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D,\n    0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B,\n    0x002B, 0x002B, 0x002B, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A,\n    0x002A, 0x002A, 0x002A, 0x002A, 0x002A, 0x0009, 0x0009, 0x0009,\n    0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009,\n    0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009,\n    0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009,\n    0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x000A, 0x000A, 0x000A,\n    0x000A, 0x000A, 0x000A, 0x000A, 0x000A, 0x000A, 0x000B, 0x000B,\n    0x000B, 0x000B, 0x000B, 0x000B, 0x000B, 0x000B, 0x000B, 0x000B,\n    0x000B, 0x000B, 0x000B, 0x000B, 0x000B, 0x000B, 0x000A, 0x000A,\n    0x000A, 0x0009, 0x0009, 0x0008, 0x0008, 0x0007, 0x0007, 0x0006,\n    0x0005, 0x0004, 0x0003, 0x0002, 0x0001, 0x0000, 0x0000, 0xFFFF,\n    0xFFFE, 0xFFFD, 0xFFFC, 0xFFFB, 0xFFFA, 0xFFF9, 0xFFF8, 0xFFF7,\n    0xFFF6, 0xFFF5, 0xFFF4, 0xFFF4, 0xFFF3, 0xFFF2, 0xFFF1, 0xFFF0,\n    0xFFF0, 0xFFEF, 0xFFEF, 0xFFEE, 0xFFEE, 0xFFEE, 0xFFED, 0xFFED,\n    0xFFED, 0xF320, 0xF320, 0xF321, 0xF321, 0xF322, 0xF323, 0xF324,\n    0xF326, 0xF327, 0xF329, 0xF32B, 0xF32D, 0xF32E, 0xF330, 0xF332,\n    0xF334, 0xF336, 0xF338, 0xF339, 0xF33B, 0xF33D, 0xF33E, 0xF33F,\n    0xF340, 0xF341, 0xF341, 0xF342, 0xF342, 0xF342, 0xF341, 0xF33C,\n    0xF332, 0xF322, 0xF30E, 0xF2F6, 0xF2DB, 0xF2BD, 0xF29C, 0xF27B,\n    0xF258, 0xF236, 0xF213, 0xF1F2, 0xF1D2, 0xF1B4, 0xF19A, 0xF182,\n    0xF16F, 0xF160, 0xF157, 0xF153, 0xF156, 0xF160, 0xF171, 0xF18B,\n    0xF1AE, 0xF1DA, 0xF211, 0xF252, 0xF29E, 0xF2F7, 0xF35E, 0xF3D5,\n    0xF45A, 0xF4ED, 0xF58E, 0xF63A, 0xF6F1, 0xF7B1, 0xF87B, 0xF94D,\n    0xFA25, 0xFB04, 0xFBE7, 0xFCCF, 0xFDB9, 0xFEA6, 0xFF93, 0x0080,\n    0x016C, 0x0257, 0x033E, 0x0422, 0x0501, 0x05DA, 0x06AC, 0x0777,\n    0x0838, 0x08F0, 0x099D, 0x0A3E, 0x0AD2, 0x0B59, 0x0BD0, 0x0C38,\n    0x0C90, 0x0CD5, 0x0D08, 0x0D28, 0x0D32, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xFDD4, 0xFDD4, 0xFDD3, 0xFDD2, 0xFDD1, 0xFDCF, 0xFDCD,\n    0xFDCA, 0xFDC7, 0xFDC4, 0xFDC1, 0xFDBD, 0xFDBA, 0xFDB6, 0xFDB2,\n    0xFDAE, 0xFDAA, 0xFDA5, 0xFDA1, 0xFD9D, 0xFD98, 0xFD94, 0xFD90,\n    0xFD8C, 0xFD88, 0xFD84, 0xFD80, 0xFD7D, 0xFD7A, 0xFD77, 0xFD74,\n    0xFD71, 0xFD6F, 0xFD6D, 0xFD6C, 0xFD6B, 0xFD6A, 0xFD6A, 0xFD6A,\n    0xFD6A, 0xFD6A, 0xFD69, 0xFD69, 0xFD69, 0xFD69, 0xFD69, 0xFD69,\n    0xFD69, 0xFD69, 0xFD69, 0xFD69, 0xFD6A, 0xFD6B, 0xFD6C, 0xFD6D,\n    0xFD6E, 0xFD70, 0xFD72, 0xFD75, 0xFD77, 0xFD7A, 0xFD7E, 0xFD82,\n    0xFD86, 0xFD8B, 0xFD90, 0xFD96, 0xFD9C, 0xFDA3, 0xFDAB, 0xFDB3,\n    0xFDBB, 0xFDC5, 0xFDCE, 0xFDD9, 0xFDE7, 0xFDF7, 0xFE0B, 0xFE20,\n    0xFE38, 0xFE52, 0xFE6E, 0xFE8A, 0xFEA8, 0xFEC6, 0xFEE4, 0xFF03,\n    0xFF21, 0xFF3E, 0xFF5B, 0xFF76, 0xFF90, 0xFFA8, 0xFFBD, 0xFFD1,\n    0xFFE1, 0xFFEE, 0xFFF8, 0xFFFE, 0x0000, 0xFFFE, 0xFFFE, 0xFFFE,\n    0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE,\n    0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n    0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n    0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n    0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n    0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n    0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x428B, 0x428B, 0x428A, 0x4289, 0x4288, 0x4286, 0x4284,\n    0x4282, 0x427F, 0x427C, 0x4278, 0x4274, 0x4270, 0x426C, 0x4267,\n    0x4262, 0x425D, 0x4258, 0x4252, 0x424C, 0x4246, 0x423F, 0x4239,\n    0x4232, 0x422A, 0x4223, 0x421C, 0x4214, 0x420C, 0x4204, 0x41FC,\n    0x41F3, 0x41EB, 0x41E2, 0x41D9, 0x41D0, 0x41C7, 0x41BE, 0x41B4,\n    0x41AB, 0x41A2, 0x4198, 0x418E, 0x4185, 0x417B, 0x4171, 0x4167,\n    0x415E, 0x4154, 0x414A, 0x4140, 0x4136, 0x412C, 0x4122, 0x4119,\n    0x410F, 0x4105, 0x40FB, 0x40F2, 0x40E8, 0x40DF, 0x40D5, 0x40CC,\n    0x40C3, 0x40BA, 0x40B1, 0x40A8, 0x409F, 0x4097, 0x408E, 0x4086,\n    0x407E, 0x4076, 0x406E, 0x4067, 0x405F, 0x4058, 0x4051, 0x404B,\n    0x4044, 0x403E, 0x4038, 0x4032, 0x402D, 0x4027, 0x4022, 0x401E,\n    0x4019, 0x4015, 0x4012, 0x400E, 0x400B, 0x4008, 0x4006, 0x4004,\n    0x4002, 0x4001, 0x4000, 0x3FFF, 0x3FFF, 0x0000,\n};\n\n// 0x05010F48\nstatic const u16 peach_seg5_animindex_5010F48[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0003, 0x0001, 0x0004, 0x0001, 0x0005,\n    0x0001, 0x0000, 0x0064, 0x078D, 0x0064, 0x07F1,\n    0x0001, 0x0000, 0x0064, 0x06C5, 0x0064, 0x0729,\n    0x0064, 0x0599, 0x0064, 0x05FD, 0x0064, 0x0661,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x026D,\n    0x0064, 0x0006, 0x0064, 0x006A, 0x0064, 0x00CE,\n    0x0064, 0x046D, 0x0064, 0x04D1, 0x0064, 0x0535,\n    0x0064, 0x0341, 0x0064, 0x03A5, 0x0064, 0x0409,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0340,\n    0x0001, 0x026E, 0x0001, 0x026F, 0x0001, 0x0270,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0135,\n    0x0001, 0x0132, 0x0001, 0x0133, 0x0001, 0x0134,\n    0x0001, 0x0136, 0x0001, 0x0137, 0x0001, 0x0138,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0277,\n    0x0001, 0x0271, 0x0001, 0x0272, 0x0001, 0x0273,\n    0x0001, 0x0000, 0x0001, 0x013C, 0x0001, 0x013D,\n    0x0001, 0x0139, 0x0001, 0x013A, 0x0001, 0x013B,\n    0x0001, 0x013E, 0x0001, 0x013F, 0x0001, 0x0140,\n    0x0001, 0x0000, 0x0064, 0x0278, 0x0064, 0x02DC,\n    0x0001, 0x0274, 0x0001, 0x0275, 0x0001, 0x0276,\n    0x0064, 0x0141, 0x0064, 0x01A5, 0x0064, 0x0209,\n};\n\n// 0x05011050\nstatic const struct Animation peach_seg5_anim_05011050 = {\n    1,\n    0,\n    0,\n    0,\n    0x64,\n    ANIMINDEX_NUMPARTS(peach_seg5_animindex_5010F48),\n    peach_seg5_animvalue_0500FE9C,\n    peach_seg5_animindex_5010F48,\n    0,\n};\n"
  },
  {
    "path": "actors/peach/anims/anim_05012F40.inc.c",
    "content": "// 0x05011068\nstatic const s16 peach_seg5_animvalue_05011068[] = {\n    0x0000, 0x015E, 0xFFDB, 0xC50F, 0x3FFA, 0xC50F, 0xFFA7, 0xFFA7,\n    0xFFA8, 0xFFAA, 0xFFAC, 0xFFAF, 0xFFB3, 0xFFB6, 0xFFBB, 0xFFC0,\n    0xFFC5, 0xFFCA, 0xFFD0, 0xFFD5, 0xFFDB, 0xFFE2, 0xFFE8, 0xFFEE,\n    0xFFF4, 0xFFFA, 0x0000, 0x0005, 0x000B, 0x0010, 0x0015, 0x001A,\n    0x001E, 0x0022, 0x0026, 0x0028, 0x002B, 0x002D, 0x002E, 0x002E,\n    0x002E, 0x002D, 0x002B, 0x0028, 0x0024, 0x001F, 0x0019, 0x0012,\n    0x000A, 0x0001, 0xFFF8, 0xFFEC, 0xFFDF, 0xFFD1, 0xFFC1, 0xFFB0,\n    0xFF9E, 0xFF8A, 0xFF74, 0xFF5D, 0xFF44, 0xFF29, 0xFF0D, 0xFEE9,\n    0xFEBA, 0xFE7F, 0xFE3A, 0xFDEC, 0xFD96, 0xFD38, 0xFCD4, 0xFC6B,\n    0xFBFD, 0xFB8C, 0xFB18, 0xFAA2, 0xFA2C, 0xF9B6, 0xF941, 0xF8CE,\n    0xF85F, 0xF7F3, 0xF78D, 0xF72C, 0xF6D2, 0xF680, 0xF637, 0xF5F7,\n    0xF5C2, 0xF599, 0xF57C, 0xF56D, 0xF56C, 0xF57A, 0xF599, 0xF5D6,\n    0xF63D, 0xF6C9, 0xF775, 0xF83F, 0xF922, 0xFA1A, 0xFB22, 0xFC37,\n    0xFD54, 0xFE76, 0xFD89, 0xFD88, 0xFD88, 0xFD86, 0xFD85, 0xFD83,\n    0xFD80, 0xFD7D, 0xFD7A, 0xFD76, 0xFD73, 0xFD6F, 0xFD6A, 0xFD66,\n    0xFD61, 0xFD5D, 0xFD58, 0xFD53, 0xFD4E, 0xFD49, 0xFD45, 0xFD40,\n    0xFD3B, 0xFD37, 0xFD32, 0xFD2E, 0xFD2A, 0xFD27, 0xFD23, 0xFD20,\n    0xFD1D, 0xFD1B, 0xFD19, 0xFD18, 0xFD17, 0xFD16, 0xFD16, 0xFD16,\n    0xFD18, 0xFD19, 0xFD1C, 0xFD1F, 0xFD22, 0xFD27, 0xFD2C, 0xFD32,\n    0xFD39, 0xFD41, 0xFD4A, 0xFD53, 0xFD5E, 0xFD69, 0xFD76, 0xFD83,\n    0xFD92, 0xFDA2, 0xFDB3, 0xFDC7, 0xFDE3, 0xFE04, 0xFE2B, 0xFE56,\n    0xFE87, 0xFEBB, 0xFEF3, 0xFF2E, 0xFF6B, 0xFFAB, 0xFFEC, 0x002E,\n    0x0071, 0x00B5, 0x00F8, 0x013A, 0x017C, 0x01BC, 0x01F9, 0x0234,\n    0x026C, 0x02A1, 0x02D1, 0x02FD, 0x0324, 0x0345, 0x0361, 0x0376,\n    0x0384, 0x038B, 0x038A, 0x037C, 0x035F, 0x0333, 0x02F9, 0x02B4,\n    0x0264, 0x020C, 0x01AC, 0x0146, 0x00DB, 0x006D, 0xC3D2, 0xC3D5,\n    0xC3DB, 0xC3E5, 0xC3F3, 0xC405, 0xC41A, 0xC433, 0xC44F, 0xC46E,\n    0xC490, 0xC4B5, 0xC4DC, 0xC507, 0xC533, 0xC562, 0xC594, 0xC5C7,\n    0xC5FC, 0xC633, 0xC66B, 0xC6A5, 0xC6E1, 0xC71D, 0xC75B, 0xC799,\n    0xC7D9, 0xC819, 0xC859, 0xC89A, 0xC8DB, 0xC91C, 0xC95D, 0xC99E,\n    0xC9DF, 0xCA1F, 0xCA5F, 0xCA9E, 0xCADC, 0xCB19, 0xCB55, 0xCB8F,\n    0xCBC8, 0xCC00, 0xCC36, 0xCC6A, 0xCC9C, 0xCCCC, 0xCCFA, 0xCD25,\n    0xCD4E, 0xCD74, 0xCD98, 0xCDB8, 0xCDD5, 0xCDEF, 0xCE06, 0xCE18,\n    0xCE22, 0xCE26, 0xCE23, 0xCE1B, 0xCE0D, 0xCDFB, 0xCDE4, 0xCDC9,\n    0xCDAB, 0xCD8A, 0xCD66, 0xCD3F, 0xCD17, 0xCCEE, 0xCCC4, 0xCC99,\n    0xCC6E, 0xCC44, 0xCC1B, 0xCBF3, 0xCBCC, 0xCBA8, 0xCB87, 0xCB68,\n    0xCB4D, 0xCB36, 0xCB24, 0xCB16, 0xCB0D, 0xCB0B, 0xCB0E, 0xCB1C,\n    0xCB37, 0xCB5E, 0xCB90, 0xCBCB, 0xCC0E, 0xCC58, 0xCCA7, 0xCCFA,\n    0xCD4F, 0xCDA6, 0xDA7F, 0xDA7F, 0xDA7E, 0xDA7D, 0xDA7C, 0xDA7A,\n    0xDA78, 0xDA76, 0xDA74, 0xDA71, 0xDA6E, 0xDA6B, 0xDA67, 0xDA64,\n    0xDA60, 0xDA5C, 0xDA57, 0xDA53, 0xDA4E, 0xDA4A, 0xDA45, 0xDA40,\n    0xDA3B, 0xDA36, 0xDA31, 0xDA2B, 0xDA26, 0xDA21, 0xDA1B, 0xDA16,\n    0xDA11, 0xDA0B, 0xDA06, 0xDA01, 0xD9FB, 0xD9F6, 0xD9F1, 0xD9EC,\n    0xD9E8, 0xD9E3, 0xD9DE, 0xD9DA, 0xD9D6, 0xD9D2, 0xD9CE, 0xD9CA,\n    0xD9C7, 0xD9C4, 0xD9C1, 0xD9BE, 0xD9BC, 0xD9BA, 0xD9B8, 0xD9B7,\n    0xD9B5, 0xD9B5, 0xD9B4, 0xD9B4, 0xD9B4, 0xD9B5, 0xD9B6, 0xD9B8,\n    0xD9BA, 0xD9BC, 0xD9BF, 0xD9C3, 0xD9C6, 0xD9CB, 0xD9D0, 0xD9D5,\n    0xD9DB, 0xD9E2, 0xD9E9, 0xD9F0, 0xD9F9, 0xDA01, 0xDA0B, 0xDA15,\n    0xDA20, 0xDA2B, 0xDA38, 0xDA44, 0xDA52, 0xDA60, 0xDA6F, 0xDA7F,\n    0xDA94, 0xDAB1, 0xDAD7, 0xDB05, 0xDB3A, 0xDB75, 0xDBB6, 0xDBFC,\n    0xDC46, 0xDC94, 0xDCE5, 0xDD38, 0xDD8D, 0xDDE3, 0x0814, 0x0814,\n    0x0815, 0x0816, 0x0817, 0x0819, 0x081C, 0x081F, 0x0822, 0x0825,\n    0x0829, 0x082D, 0x0832, 0x0836, 0x083B, 0x0841, 0x0846, 0x084C,\n    0x0852, 0x0858, 0x085E, 0x0864, 0x086B, 0x0872, 0x0878, 0x087F,\n    0x0886, 0x088D, 0x0894, 0x089A, 0x08A1, 0x08A8, 0x08AF, 0x08B6,\n    0x08BC, 0x08C3, 0x08C9, 0x08D0, 0x08D6, 0x08DC, 0x08E2, 0x08E7,\n    0x08ED, 0x08F2, 0x08F7, 0x08FC, 0x0900, 0x0904, 0x0908, 0x090B,\n    0x090E, 0x0911, 0x0913, 0x0915, 0x0916, 0x0917, 0x0918, 0x0918,\n    0x0918, 0x0917, 0x0915, 0x0913, 0x0911, 0x090E, 0x090A, 0x0906,\n    0x0901, 0x08FB, 0x08F5, 0x08EE, 0x08E6, 0x08DE, 0x08D5, 0x08CB,\n    0x08C0, 0x08B5, 0x08A8, 0x089B, 0x088E, 0x087F, 0x086F, 0x085F,\n    0x084D, 0x083B, 0x0828, 0x0814, 0x07F8, 0x07CF, 0x079A, 0x075A,\n    0x0710, 0x06BD, 0x0663, 0x0601, 0x0599, 0x052C, 0x04BC, 0x0449,\n    0x03D4, 0x035E, 0xDD80, 0xDD80, 0xDD81, 0xDD81, 0xDD82, 0xDD82,\n    0xDD83, 0xDD84, 0xDD85, 0xDD86, 0xDD87, 0xDD88, 0xDD8A, 0xDD8B,\n    0xDD8D, 0xDD8E, 0xDD90, 0xDD92, 0xDD94, 0xDD95, 0xDD97, 0xDD99,\n    0xDD9B, 0xDD9D, 0xDDA0, 0xDDA2, 0xDDA4, 0xDDA6, 0xDDA8, 0xDDAA,\n    0xDDAC, 0xDDAE, 0xDDB0, 0xDDB3, 0xDDB5, 0xDDB7, 0xDDB9, 0xDDBB,\n    0xDDBD, 0xDDBE, 0xDDC0, 0xDDC2, 0xDDC4, 0xDDC5, 0xDDC7, 0xDDC8,\n    0xDDC9, 0xDDCB, 0xDDCC, 0xDDCD, 0xDDCE, 0xDDCF, 0xDDCF, 0xDDD0,\n    0xDDD0, 0xDDD1, 0xDDD1, 0xDDD1, 0xDDD1, 0xDDD1, 0xDDD0, 0xDDCF,\n    0xDDCF, 0xDDCE, 0xDDCD, 0xDDCB, 0xDDCA, 0xDDC8, 0xDDC6, 0xDDC4,\n    0xDDC1, 0xDDBF, 0xDDBC, 0xDDB9, 0xDDB6, 0xDDB2, 0xDDAE, 0xDDAA,\n    0xDDA6, 0xDDA2, 0xDD9D, 0xDD98, 0xDD92, 0xDD8D, 0xDD87, 0xDD80,\n    0xDD78, 0xDD6C, 0xDD5D, 0xDD4B, 0xDD36, 0xDD1E, 0xDD05, 0xDCE9,\n    0xDCCB, 0xDCAC, 0xDC8C, 0xDC6B, 0xDC49, 0xDC27, 0xADB4, 0xADB4,\n    0xADB4, 0xADB4, 0xADB5, 0xADB5, 0xADB6, 0xADB7, 0xADB8, 0xADB9,\n    0xADBA, 0xADBB, 0xADBD, 0xADBE, 0xADC0, 0xADC1, 0xADC3, 0xADC4,\n    0xADC6, 0xADC8, 0xADCA, 0xADCC, 0xADCE, 0xADD0, 0xADD2, 0xADD4,\n    0xADD6, 0xADD8, 0xADDA, 0xADDC, 0xADDE, 0xADE0, 0xADE2, 0xADE4,\n    0xADE6, 0xADE8, 0xADEA, 0xADEB, 0xADED, 0xADEF, 0xADF1, 0xADF2,\n    0xADF4, 0xADF5, 0xADF7, 0xADF8, 0xADFA, 0xADFB, 0xADFC, 0xADFD,\n    0xADFE, 0xADFF, 0xADFF, 0xAE00, 0xAE00, 0xAE01, 0xAE01, 0xAE01,\n    0xAE01, 0xAE00, 0xAE00, 0xADFF, 0xADFF, 0xADFE, 0xADFD, 0xADFB,\n    0xADFA, 0xADF8, 0xADF6, 0xADF4, 0xADF2, 0xADF0, 0xADED, 0xADEA,\n    0xADE7, 0xADE3, 0xADE0, 0xADDC, 0xADD8, 0xADD3, 0xADCF, 0xADCA,\n    0xADC5, 0xADBF, 0xADBA, 0xADB4, 0xADAD, 0xADA6, 0xAD9E, 0xAD95,\n    0xAD8C, 0xAD81, 0xAD77, 0xAD6B, 0xAD5F, 0xAD52, 0xAD45, 0xAD37,\n    0xAD29, 0xAD1A, 0x1FEE, 0x1FEE, 0x1FEC, 0x1FE9, 0x1FE5, 0x1FE0,\n    0x1FDA, 0x1FD3, 0x1FCC, 0x1FC3, 0x1FBA, 0x1FB0, 0x1FA6, 0x1F9B,\n    0x1F8F, 0x1F83, 0x1F77, 0x1F6A, 0x1F5E, 0x1F50, 0x1F43, 0x1F36,\n    0x1F28, 0x1F1B, 0x1F0E, 0x1F01, 0x1EF4, 0x1EE7, 0x1EDB, 0x1ECF,\n    0x1EC3, 0x1EB8, 0x1EAD, 0x1EA3, 0x1E9A, 0x1E91, 0x1E89, 0x1E82,\n    0x1E7C, 0x1E76, 0x1E72, 0x1E6F, 0x1E6D, 0x1E6C, 0x1E6D, 0x1E6E,\n    0x1E70, 0x1E73, 0x1E76, 0x1E7A, 0x1E7F, 0x1E84, 0x1E8A, 0x1E90,\n    0x1E96, 0x1E9C, 0x1EA3, 0x1EAA, 0x1EB0, 0x1EB7, 0x1EBD, 0x1EC3,\n    0x1EC9, 0x1ECE, 0x1ED3, 0x1ED8, 0x1EDC, 0x1EDF, 0x1EE1, 0x1EE3,\n    0x1EE4, 0x1EE3, 0x1EE2, 0x1EE0, 0x1EDC, 0x1ED7, 0x1ED1, 0x1ECA,\n    0x1EC1, 0x1EB6, 0x1EAA, 0x1E9C, 0x1E8D, 0x1E7B, 0x1E68, 0x1E52,\n    0x1E39, 0x1E19, 0x1DF4, 0x1DC9, 0x1D9A, 0x1D66, 0x1D2E, 0x1CF3,\n    0x1CB4, 0x1C73, 0x1C30, 0x1BEB, 0x1BA4, 0x1B5D, 0xFE9E, 0xFE9E,\n    0xFE9B, 0xFE98, 0xFE93, 0xFE8E, 0xFE87, 0xFE7F, 0xFE76, 0xFE6C,\n    0xFE61, 0xFE56, 0xFE4A, 0xFE3D, 0xFE2F, 0xFE22, 0xFE13, 0xFE04,\n    0xFDF5, 0xFDE6, 0xFDD7, 0xFDC7, 0xFDB7, 0xFDA8, 0xFD98, 0xFD89,\n    0xFD7A, 0xFD6B, 0xFD5D, 0xFD4E, 0xFD41, 0xFD34, 0xFD27, 0xFD1C,\n    0xFD11, 0xFD07, 0xFCFD, 0xFCF5, 0xFCEE, 0xFCE7, 0xFCE2, 0xFCDC,\n    0xFCD5, 0xFCCE, 0xFCC8, 0xFCC1, 0xFCB9, 0xFCB2, 0xFCAB, 0xFCA4,\n    0xFC9C, 0xFC95, 0xFC8E, 0xFC87, 0xFC80, 0xFC79, 0xFC73, 0xFC6D,\n    0xFC67, 0xFC61, 0xFC5C, 0xFC57, 0xFC53, 0xFC4F, 0xFC4C, 0xFC49,\n    0xFC47, 0xFC45, 0xFC44, 0xFC44, 0xFC45, 0xFC46, 0xFC48, 0xFC4B,\n    0xFC4F, 0xFC54, 0xFC59, 0xFC60, 0xFC68, 0xFC71, 0xFC7A, 0xFC85,\n    0xFC92, 0xFC9F, 0xFCAE, 0xFCBE, 0xFCD1, 0xFCEA, 0xFD08, 0xFD2B,\n    0xFD52, 0xFD7D, 0xFDAB, 0xFDDC, 0xFE10, 0xFE47, 0xFE7F, 0xFEB8,\n    0xFEF2, 0xFF2D, 0xB0AD, 0xB0AE, 0xB0B2, 0xB0B9, 0xB0C3, 0xB0CE,\n    0xB0DC, 0xB0ED, 0xB0FF, 0xB113, 0xB128, 0xB13F, 0xB158, 0xB172,\n    0xB18D, 0xB1A9, 0xB1C6, 0xB1E4, 0xB203, 0xB221, 0xB241, 0xB260,\n    0xB280, 0xB29F, 0xB2BF, 0xB2DE, 0xB2FD, 0xB31B, 0xB338, 0xB354,\n    0xB370, 0xB38A, 0xB3A3, 0xB3BB, 0xB3D1, 0xB3E6, 0xB3F9, 0xB40A,\n    0xB418, 0xB425, 0xB430, 0xB43C, 0xB448, 0xB454, 0xB460, 0xB46C,\n    0xB478, 0xB484, 0xB48F, 0xB49B, 0xB4A6, 0xB4B1, 0xB4BC, 0xB4C7,\n    0xB4D1, 0xB4DB, 0xB4E4, 0xB4ED, 0xB4F5, 0xB4FD, 0xB504, 0xB50B,\n    0xB510, 0xB515, 0xB51A, 0xB51D, 0xB520, 0xB522, 0xB522, 0xB522,\n    0xB521, 0xB51F, 0xB51B, 0xB517, 0xB511, 0xB50A, 0xB502, 0xB4F9,\n    0xB4EE, 0xB4E2, 0xB4D4, 0xB4C5, 0xB4B5, 0xB4A3, 0xB48F, 0xB47A,\n    0xB460, 0xB43E, 0xB415, 0xB3E5, 0xB3AF, 0xB374, 0xB335, 0xB2F1,\n    0xB2A9, 0xB25F, 0xB212, 0xB1C3, 0xB173, 0xB122, 0x1B23, 0x1B22,\n    0x1B1F, 0x1B1A, 0x1B13, 0x1B0B, 0x1B01, 0x1AF5, 0x1AE7, 0x1AD8,\n    0x1AC7, 0x1AB5, 0x1AA1, 0x1A8C, 0x1A75, 0x1A5D, 0x1A44, 0x1A29,\n    0x1A0E, 0x19F1, 0x19D3, 0x19B4, 0x1994, 0x1973, 0x1951, 0x192E,\n    0x190B, 0x18E6, 0x18C1, 0x189B, 0x1875, 0x184E, 0x1827, 0x17FF,\n    0x17D6, 0x17AD, 0x1784, 0x175B, 0x1731, 0x1707, 0x16DD, 0x16B3,\n    0x1688, 0x165E, 0x1634, 0x160A, 0x15DF, 0x15B5, 0x158C, 0x1562,\n    0x1539, 0x1510, 0x14E8, 0x14C0, 0x1499, 0x1472, 0x144B, 0x1426,\n    0x1401, 0x13DC, 0x13B9, 0x1396, 0x1375, 0x1354, 0x1334, 0x1315,\n    0x12F7, 0x12DA, 0x12BF, 0x12A4, 0x128B, 0x1273, 0x125D, 0x1248,\n    0x1234, 0x1222, 0x1211, 0x1202, 0x11F5, 0x11E9, 0x11DF, 0x11D6,\n    0x11D0, 0x11CB, 0x11C9, 0x11C8, 0x11CF, 0x11E2, 0x1202, 0x122D,\n    0x1262, 0x12A0, 0x12E8, 0x1337, 0x138E, 0x13EB, 0x144E, 0x14B6,\n    0x1521, 0x1590, 0x047F, 0x047F, 0x047F, 0x0480, 0x0480, 0x0481,\n    0x0482, 0x0482, 0x0483, 0x0485, 0x0486, 0x0487, 0x0489, 0x048A,\n    0x048C, 0x048D, 0x048F, 0x0491, 0x0493, 0x0495, 0x0497, 0x0499,\n    0x049B, 0x049D, 0x049F, 0x04A1, 0x04A3, 0x04A5, 0x04A7, 0x04A9,\n    0x04AB, 0x04AD, 0x04AF, 0x04B0, 0x04B2, 0x04B4, 0x04B5, 0x04B7,\n    0x04B9, 0x04BA, 0x04BB, 0x04BC, 0x04BE, 0x04BF, 0x04BF, 0x04C0,\n    0x04C1, 0x04C1, 0x04C2, 0x04C2, 0x04C2, 0x04C2, 0x04C1, 0x04C1,\n    0x04C0, 0x04BF, 0x04BE, 0x04BD, 0x04BB, 0x04BA, 0x04B8, 0x04B5,\n    0x04B3, 0x04B0, 0x04AD, 0x04AA, 0x04A7, 0x04A3, 0x049F, 0x049B,\n    0x0496, 0x0491, 0x048C, 0x0487, 0x0481, 0x047B, 0x0474, 0x046D,\n    0x0466, 0x045F, 0x0457, 0x044F, 0x0446, 0x043D, 0x0434, 0x042A,\n    0x041E, 0x040D, 0x03F8, 0x03DF, 0x03C2, 0x03A2, 0x037F, 0x035A,\n    0x0332, 0x0308, 0x02DC, 0x02AF, 0x0281, 0x0252, 0xE858, 0xE858,\n    0xE85B, 0xE85F, 0xE865, 0xE86C, 0xE875, 0xE880, 0xE88B, 0xE899,\n    0xE8A7, 0xE8B7, 0xE8C8, 0xE8DA, 0xE8EE, 0xE903, 0xE919, 0xE930,\n    0xE947, 0xE960, 0xE97A, 0xE995, 0xE9B1, 0xE9CD, 0xE9EB, 0xEA09,\n    0xEA27, 0xEA47, 0xEA67, 0xEA87, 0xEAA8, 0xEACA, 0xEAEC, 0xEB0F,\n    0xEB32, 0xEB55, 0xEB78, 0xEB9C, 0xEBC0, 0xEBE4, 0xEC09, 0xEC2D,\n    0xEC52, 0xEC76, 0xEC9A, 0xECBF, 0xECE3, 0xED07, 0xED2B, 0xED4F,\n    0xED72, 0xED95, 0xEDB8, 0xEDDA, 0xEDFC, 0xEE1E, 0xEE3F, 0xEE5F,\n    0xEE7F, 0xEE9E, 0xEEBC, 0xEEDA, 0xEEF7, 0xEF13, 0xEF2E, 0xEF49,\n    0xEF62, 0xEF7A, 0xEF92, 0xEFA8, 0xEFBE, 0xEFD2, 0xEFE5, 0xEFF7,\n    0xF007, 0xF017, 0xF025, 0xF031, 0xF03C, 0xF046, 0xF04E, 0xF055,\n    0xF05A, 0xF05D, 0xF05F, 0xF05F, 0xF058, 0xF047, 0xF02A, 0xF004,\n    0xEFD4, 0xEF9C, 0xEF5D, 0xEF16, 0xEEC9, 0xEE76, 0xEE1E, 0xEDC2,\n    0xED63, 0xED01, 0x0002, 0xAE20, 0xD958, 0xD959, 0xD95A, 0xD95C,\n    0xD95F, 0xD963, 0xD968, 0xD96E, 0xD974, 0xD97A, 0xD982, 0xD989,\n    0xD992, 0xD99A, 0xD9A4, 0xD9AD, 0xD9B7, 0xD9C1, 0xD9CB, 0xD9D5,\n    0xD9E0, 0xD9EA, 0xD9F5, 0xDA00, 0xDA0A, 0xDA15, 0xDA1F, 0xDA29,\n    0xDA33, 0xDA3C, 0xDA46, 0xDA4F, 0xDA57, 0xDA5F, 0xDA66, 0xDA6D,\n    0xDA74, 0xDA79, 0xDA7E, 0xDA83, 0xDA86, 0xDA89, 0xDA8C, 0xDA8F,\n    0xDA91, 0xDA93, 0xDA95, 0xDA96, 0xDA97, 0xDA98, 0xDA98, 0xDA99,\n    0xDA99, 0xDA99, 0xDA99, 0xDA98, 0xDA98, 0xDA97, 0xDA97, 0xDA96,\n    0xDA95, 0xDA94, 0xDA93, 0xDA92, 0xDA92, 0xDA91, 0xDA90, 0xDA8F,\n    0xDA8E, 0xDA8E, 0xDA8D, 0xDA8D, 0xDA8D, 0xDA8D, 0xDA8D, 0xDA8D,\n    0xDA8E, 0xDA8F, 0xDA90, 0xDA91, 0xDA92, 0xDA94, 0xDA96, 0xDA99,\n    0xDA9C, 0xDA9F, 0xDAA3, 0xDAA8, 0xDAAD, 0xDAB3, 0xDABA, 0xDAC1,\n    0xDAC9, 0xDAD1, 0xDADA, 0xDAE3, 0xDAEC, 0xDAF6, 0xDB00, 0xDB09,\n    0x01CB, 0x01CB, 0x01CD, 0x01CF, 0x01D1, 0x01D4, 0x01D8, 0x01DD,\n    0x01E2, 0x01E7, 0x01EE, 0x01F4, 0x01FB, 0x0202, 0x020A, 0x0212,\n    0x021A, 0x0222, 0x022B, 0x0233, 0x023C, 0x0245, 0x024E, 0x0256,\n    0x025F, 0x0268, 0x0270, 0x0279, 0x0281, 0x0289, 0x0291, 0x0298,\n    0x029F, 0x02A6, 0x02AC, 0x02B2, 0x02B7, 0x02BC, 0x02C0, 0x02C3,\n    0x02C6, 0x02C7, 0x02C7, 0x02C6, 0x02C4, 0x02C1, 0x02BE, 0x02B9,\n    0x02B4, 0x02AE, 0x02A8, 0x02A1, 0x0299, 0x0292, 0x028A, 0x0282,\n    0x027A, 0x0272, 0x026B, 0x0263, 0x025B, 0x0254, 0x024E, 0x0247,\n    0x0242, 0x023D, 0x0238, 0x0235, 0x0232, 0x0231, 0x0230, 0x0231,\n    0x0233, 0x0236, 0x023A, 0x0240, 0x0247, 0x0250, 0x025B, 0x0267,\n    0x0276, 0x0286, 0x0298, 0x02AC, 0x02C2, 0x02DB, 0x02F8, 0x031D,\n    0x0348, 0x037A, 0x03B1, 0x03ED, 0x042D, 0x0472, 0x04BB, 0x0506,\n    0x0555, 0x05A5, 0x05F7, 0x064A, 0xAE9C, 0xAE9E, 0xAEA3, 0xAEAC,\n    0xAEB7, 0xAEC5, 0xAED6, 0xAEEA, 0xAF00, 0xAF18, 0xAF33, 0xAF4F,\n    0xAF6D, 0xAF8C, 0xAFAE, 0xAFD0, 0xAFF3, 0xB017, 0xB03D, 0xB062,\n    0xB088, 0xB0AF, 0xB0D5, 0xB0FC, 0xB122, 0xB148, 0xB16D, 0xB192,\n    0xB1B5, 0xB1D8, 0xB1FA, 0xB21A, 0xB238, 0xB255, 0xB270, 0xB289,\n    0xB2A0, 0xB2B5, 0xB2C7, 0xB2D6, 0xB2E3, 0xB2EE, 0xB2F8, 0xB300,\n    0xB307, 0xB30C, 0xB310, 0xB313, 0xB314, 0xB315, 0xB314, 0xB313,\n    0xB311, 0xB30E, 0xB30A, 0xB306, 0xB302, 0xB2FD, 0xB2F8, 0xB2F2,\n    0xB2ED, 0xB2E8, 0xB2E2, 0xB2DD, 0xB2D8, 0xB2D3, 0xB2CF, 0xB2CB,\n    0xB2C8, 0xB2C5, 0xB2C4, 0xB2C3, 0xB2C3, 0xB2C4, 0xB2C6, 0xB2C9,\n    0xB2CE, 0xB2D3, 0xB2DB, 0xB2E4, 0xB2EE, 0xB2FA, 0xB308, 0xB318,\n    0xB32A, 0xB33D, 0xB355, 0xB372, 0xB394, 0xB3BA, 0xB3E5, 0xB414,\n    0xB446, 0xB47B, 0xB4B2, 0xB4EC, 0xB528, 0xB566, 0xB5A4, 0xB5E4,\n    0x000A, 0x000A, 0x000C, 0x000E, 0x0011, 0x0015, 0x0019, 0x001E,\n    0x0024, 0x002A, 0x0030, 0x0036, 0x003C, 0x0043, 0x0049, 0x0050,\n    0x0056, 0x005C, 0x0061, 0x0066, 0x006B, 0x006F, 0x0072, 0x0075,\n    0x0076, 0x0077, 0x0077, 0x0075, 0x0072, 0x006D, 0x0067, 0x0060,\n    0x0058, 0x004F, 0x0045, 0x003B, 0x0031, 0x0027, 0x001C, 0x0012,\n    0x0008, 0x0000, 0xFFF7, 0xFFEF, 0xFFE8, 0xFFE2, 0xFFDE, 0xFFDB,\n    0xFFDA, 0xFFDA, 0xFFDC, 0xFFDF, 0xFFE4, 0xFFE9, 0xFFF0, 0xFFF7,\n    0xFFFE, 0x0006, 0x000F, 0x0018, 0x0021, 0x002A, 0x0034, 0x003D,\n    0x0046, 0x004F, 0x0057, 0x005E, 0x0065, 0x006A, 0x006F, 0x0073,\n    0x0075, 0x0076, 0x0076, 0x0074, 0x0071, 0x006C, 0x0066, 0x0060,\n    0x0058, 0x0050, 0x0047, 0x003E, 0x0034, 0x002A, 0x0021, 0x0017,\n    0x000D, 0x0004, 0xFFFC, 0xFFF4, 0xFFED, 0xFFE6, 0xFFE1, 0xFFDD,\n    0xFFDA, 0xFFD8, 0xFFD7, 0xFFD6, 0xFDF7, 0xFDF4, 0xFDF1, 0xFDEE,\n    0xFDEB, 0xFDE8, 0xFDE6, 0xFDE3, 0xFDE1, 0xFDDE, 0xFDDC, 0xFDDA,\n    0xFDD8, 0xFDD6, 0xFDD4, 0xFDD2, 0xFDD0, 0xFDCF, 0xFDCD, 0xFDCC,\n    0xFDCA, 0xFDC9, 0xFDC8, 0xFDC6, 0xFDC5, 0xFDC4, 0xFDC3, 0xFDC3,\n    0xFDC2, 0xFDC1, 0xFDC1, 0xFDC0, 0xFDBF, 0xFDBF, 0xFDBF, 0xFDBE,\n    0xFDBE, 0xFDBE, 0xFDBE, 0xFDBE, 0xFDBE, 0xFDBE, 0xFDBE, 0xFDBE,\n    0xFDBE, 0xFDBE, 0xFDBF, 0xFDBF, 0xFDBF, 0xFDC0, 0xFDC0, 0xFDC1,\n    0xFDC1, 0xFDC2, 0xFDC2, 0xFDC3, 0xFDC4, 0xFDC4, 0xFDC5, 0xFDC6,\n    0xFDC7, 0xFDC7, 0xFDC8, 0xFDC9, 0xFDCA, 0xFDCB, 0xFDCC, 0xFDCD,\n    0xFDCE, 0xFDCF, 0xFDD0, 0xFDD1, 0xFDD2, 0xFDD3, 0xFDD4, 0xFDD5,\n    0xFDD6, 0xFDD7, 0xFDD8, 0xFDD9, 0xFDDA, 0xFDDB, 0xFDDC, 0xFDDE,\n    0xFDDF, 0xFDE0, 0xFDE1, 0xFDE2, 0xFDE3, 0xFDE4, 0xFDE5, 0xFDE6,\n    0xFDE7, 0xFDE8, 0xFDE9, 0xFDEA, 0xFDEB, 0xFDEC, 0xFDEC, 0xFDED,\n    0xBF3E, 0xBF3E, 0xBF40, 0xBF44, 0xBF48, 0xBF4E, 0xBF54, 0xBF5C,\n    0xBF64, 0xBF6D, 0xBF76, 0xBF80, 0xBF89, 0xBF93, 0xBF9E, 0xBFA8,\n    0xBFB2, 0xBFBB, 0xBFC5, 0xBFCD, 0xBFD6, 0xBFDD, 0xBFE4, 0xBFEA,\n    0xBFEE, 0xBFF2, 0xBFF4, 0xBFF5, 0xBFF5, 0xBFF3, 0xBFEF, 0xBFE9,\n    0xBFE2, 0xBFD8, 0xBFCD, 0xBFBF, 0xBFAF, 0xBF9C, 0xBF87, 0xBF6F,\n    0xBF54, 0xBF37, 0xBF1B, 0xBF04, 0xBEF1, 0xBEE2, 0xBED6, 0xBECD,\n    0xBEC8, 0xBEC5, 0xBEC5, 0xBEC7, 0xBECC, 0xBED3, 0xBEDB, 0xBEE5,\n    0xBEF1, 0xBEFD, 0xBF0B, 0xBF1A, 0xBF29, 0xBF38, 0xBF47, 0xBF57,\n    0xBF66, 0xBF74, 0xBF82, 0xBF8F, 0xBF9B, 0xBFA5, 0xBFAE, 0xBFB5,\n    0xBFBA, 0xBFBD, 0xBFBD, 0xBFBB, 0xBFB6, 0xBFAE, 0xBFA3, 0xBF94,\n    0xBF82, 0xBF6B, 0xBF51, 0xBF32, 0xBF17, 0xBEFF, 0xBEEA, 0xBEDA,\n    0xBECC, 0xBEC2, 0xBEBA, 0xBEB5, 0xBEB3, 0xBEB3, 0xBEB5, 0xBEB9,\n    0xBEBF, 0xBEC7, 0xBECF, 0xBED9, 0xC066, 0x1FEE, 0x1FEE, 0x1FEC,\n    0x1FE9, 0x1FE5, 0x1FE0, 0x1FDA, 0x1FD3, 0x1FCC, 0x1FC3, 0x1FBA,\n    0x1FB0, 0x1FA6, 0x1F9B, 0x1F8F, 0x1F83, 0x1F77, 0x1F6A, 0x1F5E,\n    0x1F50, 0x1F43, 0x1F36, 0x1F28, 0x1F1B, 0x1F0E, 0x1F01, 0x1EF4,\n    0x1EE7, 0x1EDB, 0x1ECF, 0x1EC3, 0x1EB8, 0x1EAD, 0x1EA3, 0x1E9A,\n    0x1E91, 0x1E89, 0x1E82, 0x1E7C, 0x1E76, 0x1E72, 0x1E6F, 0x1E6D,\n    0x1E6C, 0x1E6D, 0x1E6E, 0x1E70, 0x1E73, 0x1E76, 0x1E7A, 0x1E7F,\n    0x1E84, 0x1E8A, 0x1E90, 0x1E96, 0x1E9C, 0x1EA3, 0x1EAA, 0x1EB0,\n    0x1EB7, 0x1EBD, 0x1EC3, 0x1EC9, 0x1ECE, 0x1ED3, 0x1ED8, 0x1EDC,\n    0x1EDF, 0x1EE1, 0x1EE3, 0x1EE4, 0x1EE3, 0x1EE2, 0x1EE0, 0x1EDC,\n    0x1ED7, 0x1ED1, 0x1ECA, 0x1EC1, 0x1EB6, 0x1EAA, 0x1E9C, 0x1E8D,\n    0x1E7B, 0x1E68, 0x1E52, 0x1E39, 0x1E19, 0x1DF4, 0x1DC9, 0x1D9A,\n    0x1D66, 0x1D2E, 0x1CF3, 0x1CB4, 0x1C73, 0x1C30, 0x1BEB, 0x1BA4,\n    0x1B5D, 0xFE9E, 0xFE9E, 0xFE9B, 0xFE98, 0xFE93, 0xFE8E, 0xFE87,\n    0xFE7F, 0xFE76, 0xFE6C, 0xFE61, 0xFE56, 0xFE4A, 0xFE3D, 0xFE2F,\n    0xFE22, 0xFE13, 0xFE04, 0xFDF5, 0xFDE6, 0xFDD7, 0xFDC7, 0xFDB7,\n    0xFDA8, 0xFD98, 0xFD89, 0xFD7A, 0xFD6B, 0xFD5D, 0xFD4E, 0xFD41,\n    0xFD34, 0xFD27, 0xFD1C, 0xFD11, 0xFD07, 0xFCFD, 0xFCF5, 0xFCEE,\n    0xFCE7, 0xFCE2, 0xFCDC, 0xFCD5, 0xFCCE, 0xFCC8, 0xFCC1, 0xFCB9,\n    0xFCB2, 0xFCAB, 0xFCA4, 0xFC9C, 0xFC95, 0xFC8E, 0xFC87, 0xFC80,\n    0xFC79, 0xFC73, 0xFC6D, 0xFC67, 0xFC61, 0xFC5C, 0xFC57, 0xFC53,\n    0xFC4F, 0xFC4C, 0xFC49, 0xFC47, 0xFC45, 0xFC44, 0xFC44, 0xFC45,\n    0xFC46, 0xFC48, 0xFC4B, 0xFC4F, 0xFC54, 0xFC59, 0xFC60, 0xFC68,\n    0xFC71, 0xFC7A, 0xFC85, 0xFC92, 0xFC9F, 0xFCAE, 0xFCBE, 0xFCD1,\n    0xFCEA, 0xFD08, 0xFD2B, 0xFD52, 0xFD7D, 0xFDAB, 0xFDDC, 0xFE10,\n    0xFE47, 0xFE7F, 0xFEB8, 0xFEF2, 0xFF2D, 0xB0AD, 0xB0AE, 0xB0B2,\n    0xB0B9, 0xB0C3, 0xB0CE, 0xB0DC, 0xB0ED, 0xB0FF, 0xB113, 0xB128,\n    0xB13F, 0xB158, 0xB172, 0xB18D, 0xB1A9, 0xB1C6, 0xB1E4, 0xB203,\n    0xB221, 0xB241, 0xB260, 0xB280, 0xB29F, 0xB2BF, 0xB2DE, 0xB2FD,\n    0xB31B, 0xB338, 0xB354, 0xB370, 0xB38A, 0xB3A3, 0xB3BB, 0xB3D1,\n    0xB3E6, 0xB3F9, 0xB40A, 0xB418, 0xB425, 0xB430, 0xB43C, 0xB448,\n    0xB454, 0xB460, 0xB46C, 0xB478, 0xB484, 0xB48F, 0xB49B, 0xB4A6,\n    0xB4B1, 0xB4BC, 0xB4C7, 0xB4D1, 0xB4DB, 0xB4E4, 0xB4ED, 0xB4F5,\n    0xB4FD, 0xB504, 0xB50B, 0xB510, 0xB515, 0xB51A, 0xB51D, 0xB520,\n    0xB522, 0xB522, 0xB522, 0xB521, 0xB51F, 0xB51B, 0xB517, 0xB511,\n    0xB50A, 0xB502, 0xB4F9, 0xB4EE, 0xB4E2, 0xB4D4, 0xB4C5, 0xB4B5,\n    0xB4A3, 0xB48F, 0xB47A, 0xB460, 0xB43E, 0xB415, 0xB3E5, 0xB3AF,\n    0xB374, 0xB335, 0xB2F1, 0xB2A9, 0xB25F, 0xB212, 0xB1C3, 0xB173,\n    0xB122, 0xD958, 0xD959, 0xD95A, 0xD95C, 0xD95F, 0xD963, 0xD968,\n    0xD96E, 0xD974, 0xD97A, 0xD982, 0xD989, 0xD992, 0xD99A, 0xD9A4,\n    0xD9AD, 0xD9B7, 0xD9C1, 0xD9CB, 0xD9D5, 0xD9E0, 0xD9EA, 0xD9F5,\n    0xDA00, 0xDA0A, 0xDA15, 0xDA1F, 0xDA29, 0xDA33, 0xDA3C, 0xDA46,\n    0xDA4F, 0xDA57, 0xDA5F, 0xDA66, 0xDA6D, 0xDA74, 0xDA79, 0xDA7E,\n    0xDA83, 0xDA86, 0xDA89, 0xDA8C, 0xDA8F, 0xDA91, 0xDA93, 0xDA95,\n    0xDA96, 0xDA97, 0xDA98, 0xDA98, 0xDA99, 0xDA99, 0xDA99, 0xDA99,\n    0xDA98, 0xDA98, 0xDA97, 0xDA97, 0xDA96, 0xDA95, 0xDA94, 0xDA93,\n    0xDA92, 0xDA92, 0xDA91, 0xDA90, 0xDA8F, 0xDA8E, 0xDA8E, 0xDA8D,\n    0xDA8D, 0xDA8D, 0xDA8D, 0xDA8D, 0xDA8D, 0xDA8E, 0xDA8F, 0xDA90,\n    0xDA91, 0xDA92, 0xDA94, 0xDA96, 0xDA99, 0xDA9C, 0xDA9F, 0xDAA3,\n    0xDAA8, 0xDAAD, 0xDAB3, 0xDABA, 0xDAC1, 0xDAC9, 0xDAD1, 0xDADA,\n    0xDAE3, 0xDAEC, 0xDAF6, 0xDB00, 0xDB09, 0x01CB, 0x01CB, 0x01CD,\n    0x01CF, 0x01D1, 0x01D4, 0x01D8, 0x01DD, 0x01E2, 0x01E7, 0x01EE,\n    0x01F4, 0x01FB, 0x0202, 0x020A, 0x0212, 0x021A, 0x0222, 0x022B,\n    0x0233, 0x023C, 0x0245, 0x024E, 0x0256, 0x025F, 0x0268, 0x0270,\n    0x0279, 0x0281, 0x0289, 0x0291, 0x0298, 0x029F, 0x02A6, 0x02AC,\n    0x02B2, 0x02B7, 0x02BC, 0x02C0, 0x02C3, 0x02C6, 0x02C7, 0x02C7,\n    0x02C6, 0x02C4, 0x02C1, 0x02BE, 0x02B9, 0x02B4, 0x02AE, 0x02A8,\n    0x02A1, 0x0299, 0x0292, 0x028A, 0x0282, 0x027A, 0x0272, 0x026B,\n    0x0263, 0x025B, 0x0254, 0x024E, 0x0247, 0x0242, 0x023D, 0x0238,\n    0x0235, 0x0232, 0x0231, 0x0230, 0x0231, 0x0233, 0x0236, 0x023A,\n    0x0240, 0x0247, 0x0250, 0x025B, 0x0267, 0x0276, 0x0286, 0x0298,\n    0x02AC, 0x02C2, 0x02DB, 0x02F8, 0x031D, 0x0348, 0x037A, 0x03B1,\n    0x03ED, 0x042D, 0x0472, 0x04BB, 0x0506, 0x0555, 0x05A5, 0x05F7,\n    0x064A, 0xAE9C, 0xAE9E, 0xAEA3, 0xAEAC, 0xAEB7, 0xAEC5, 0xAED6,\n    0xAEEA, 0xAF00, 0xAF18, 0xAF33, 0xAF4F, 0xAF6D, 0xAF8C, 0xAFAE,\n    0xAFD0, 0xAFF3, 0xB017, 0xB03D, 0xB062, 0xB088, 0xB0AF, 0xB0D5,\n    0xB0FC, 0xB122, 0xB148, 0xB16D, 0xB192, 0xB1B5, 0xB1D8, 0xB1FA,\n    0xB21A, 0xB238, 0xB255, 0xB270, 0xB289, 0xB2A0, 0xB2B5, 0xB2C7,\n    0xB2D6, 0xB2E3, 0xB2EE, 0xB2F8, 0xB300, 0xB307, 0xB30C, 0xB310,\n    0xB313, 0xB314, 0xB315, 0xB314, 0xB313, 0xB311, 0xB30E, 0xB30A,\n    0xB306, 0xB302, 0xB2FD, 0xB2F8, 0xB2F2, 0xB2ED, 0xB2E8, 0xB2E2,\n    0xB2DD, 0xB2D8, 0xB2D3, 0xB2CF, 0xB2CB, 0xB2C8, 0xB2C5, 0xB2C4,\n    0xB2C3, 0xB2C3, 0xB2C4, 0xB2C6, 0xB2C9, 0xB2CE, 0xB2D3, 0xB2DB,\n    0xB2E4, 0xB2EE, 0xB2FA, 0xB308, 0xB318, 0xB32A, 0xB33D, 0xB355,\n    0xB372, 0xB394, 0xB3BA, 0xB3E5, 0xB414, 0xB446, 0xB47B, 0xB4B2,\n    0xB4EC, 0xB528, 0xB566, 0xB5A4, 0xB5E4, 0xE0FF, 0xC001, 0xE0FB,\n    0xBF7F, 0x0000, 0x0000, 0x0001, 0x0002, 0x0004, 0x0006, 0x0008,\n    0x000B, 0x000E, 0x0011, 0x0014, 0x0017, 0x001B, 0x001E, 0x0021,\n    0x0024, 0x0027, 0x002A, 0x002D, 0x002F, 0x0031, 0x0032, 0x0033,\n    0x0034, 0x0033, 0x0033, 0x0031, 0x002F, 0x002D, 0x0029, 0x0024,\n    0x001F, 0x0019, 0x0011, 0x0009, 0x0000, 0xFFF6, 0xFFEA, 0xFFDC,\n    0xFFCD, 0xFFBD, 0xFFAC, 0xFF9A, 0xFF87, 0xFF73, 0xFF5E, 0xFF48,\n    0xFF32, 0xFF1B, 0xFF04, 0xFEEC, 0xFED4, 0xFEBB, 0xFEA2, 0xFE89,\n    0xFE70, 0xFE57, 0xFE3E, 0xFE26, 0xFE0D, 0xFDF5, 0xFDDD, 0xFDC5,\n    0xFDAE, 0xFD98, 0xFD82, 0xFD6D, 0xFD58, 0xFD45, 0xFD33, 0xFD21,\n    0xFD11, 0xFD02, 0xFCF4, 0xFCE7, 0xFCDC, 0xFCD3, 0xFCCA, 0xFCC4,\n    0xFCBF, 0xFCBC, 0xFCBB, 0xFCBB, 0xFCBE, 0xFCC3, 0xFCCC, 0xFCD7,\n    0xFCE5, 0xFCF6, 0xFD0A, 0xFD1F, 0xFD37, 0xFD51, 0xFD6E, 0xFD8B,\n    0xFDAB, 0xFDCC, 0xFDEF, 0xFE12, 0xFE37, 0x0000, 0xFFFF, 0xFFFB,\n    0xFFF3, 0xFFEA, 0xFFDD, 0xFFCF, 0xFFBE, 0xFFAC, 0xFF98, 0xFF82,\n    0xFF6A, 0xFF52, 0xFF38, 0xFF1D, 0xFF01, 0xFEE5, 0xFEC8, 0xFEAB,\n    0xFE8E, 0xFE71, 0xFE54, 0xFE37, 0xFE1B, 0xFDFF, 0xFDE4, 0xFDCA,\n    0xFDB1, 0xFD9A, 0xFD84, 0xFD6F, 0xFD5C, 0xFD4C, 0xFD3D, 0xFD30,\n    0xFD26, 0xFD1E, 0xFD16, 0xFD0F, 0xFD09, 0xFD03, 0xFCFE, 0xFCFA,\n    0xFCF6, 0xFCF2, 0xFCEF, 0xFCED, 0xFCEB, 0xFCEA, 0xFCE9, 0xFCE8,\n    0xFCE8, 0xFCE8, 0xFCE9, 0xFCE9, 0xFCEB, 0xFCEC, 0xFCEE, 0xFCF0,\n    0xFCF2, 0xFCF4, 0xFCF6, 0xFCF9, 0xFCFC, 0xFCFE, 0xFD01, 0xFD04,\n    0xFD07, 0xFD0A, 0xFD0D, 0xFD10, 0xFD13, 0xFD15, 0xFD18, 0xFD1A,\n    0xFD1D, 0xFD1F, 0xFD21, 0xFD22, 0xFD24, 0xFD25, 0xFD26, 0xFD26,\n    0xFD26, 0xFD26, 0xFD26, 0xFD26, 0xFD26, 0xFD26, 0xFD26, 0xFD26,\n    0xFD26, 0xFD26, 0xFD26, 0xFD26, 0xFD26, 0xFD26, 0xFD26, 0xFD26,\n    0xFD26, 0xBF84, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A,\n    0x002A, 0x002A, 0x002A, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B,\n    0x002B, 0x002B, 0x002B, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D,\n    0x002D, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E,\n    0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E,\n    0x0035, 0x0049, 0x0068, 0x0090, 0x00BF, 0x00F3, 0x012B, 0x0164,\n    0x019C, 0x01D1, 0x0202, 0x022D, 0x024F, 0x0267, 0x0272, 0x0270,\n    0x025D, 0x0238, 0x0200, 0x01B1, 0x014A, 0x00CA, 0x002E, 0xFEFF,\n    0xFCED, 0xFA3A, 0xF726, 0xF3F1, 0xF0DA, 0xEE22, 0xEC08, 0xEAC1,\n    0xE9D8, 0xE91F, 0xE896, 0xE83C, 0xE811, 0xE817, 0xE84C, 0xE8B1,\n    0xE946, 0xEA0A, 0xEB00, 0xEC18, 0xED44, 0xEE84, 0xEFD6, 0xF138,\n    0xF2A9, 0xF427, 0xF5B1, 0xF746, 0xF8E3, 0xFA87, 0xFFED, 0xFFED,\n    0xFFED, 0xFFED, 0xFFEE, 0xFFEE, 0xFFEE, 0xFFEE, 0xFFEF, 0xFFEF,\n    0xFFEF, 0xFFF0, 0xFFF0, 0xFFF1, 0xFFF1, 0xFFF2, 0xFFF2, 0xFFF3,\n    0xFFF3, 0xFFF4, 0xFFF4, 0xFFF5, 0xFFF6, 0xFFF6, 0xFFF7, 0xFFF7,\n    0xFFF8, 0xFFF8, 0xFFF9, 0xFFF9, 0xFFFA, 0xFFFA, 0xFFFB, 0xFFFB,\n    0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,\n    0xFFFD, 0xFFFD, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,\n    0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFC,\n    0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,\n    0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,\n    0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFA, 0xFFF8, 0xFFF6,\n    0xFFF4, 0xFFF2, 0xFFF1, 0xFFF1, 0xFFF3, 0xFFF7, 0xFFFC, 0x0003,\n    0x000B, 0x0014, 0x001D, 0x0026, 0x0030, 0x003A, 0x0045, 0x0050,\n    0x005B, 0x0066, 0x0D32, 0x0D2C, 0x0D1A, 0x0CFD, 0x0CD6, 0x0CA4,\n    0x0C69, 0x0C25, 0x0BD8, 0x0B84, 0x0B29, 0x0AC7, 0x0A5F, 0x09F2,\n    0x0980, 0x0909, 0x088F, 0x0812, 0x0792, 0x0710, 0x068D, 0x0609,\n    0x0585, 0x0501, 0x047E, 0x03FD, 0x037E, 0x0301, 0x0287, 0x0212,\n    0x01A1, 0x0134, 0x00CE, 0x006D, 0x0013, 0xFFC1, 0xFF7F, 0xFF53,\n    0xFF39, 0xFF2E, 0xFF2F, 0xFF37, 0xFF43, 0xFF4F, 0xFF58, 0xFF59,\n    0xFF56, 0xFF54, 0xFF52, 0xFF51, 0xFF4F, 0xFF4F, 0xFF4E, 0xFF4E,\n    0xFF4F, 0xFF4F, 0xFF50, 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54,\n    0xFF55, 0xFF56, 0xFF57, 0xFF58, 0xFF59, 0xFF59, 0xFF59, 0xFF59,\n    0xFF59, 0xFF59, 0xFF59, 0xFF59, 0xFF59, 0xFF59, 0xFF59, 0xFF59,\n    0xFF5A, 0xFF5E, 0xFF63, 0xFF68, 0xFF6D, 0xFF71, 0xFF73, 0xFF72,\n    0xFF6E, 0xFF66, 0xFF59, 0xFF49, 0xFF38, 0xFF26, 0xFF14, 0xFF00,\n    0xFEED, 0xFED8, 0xFEC3, 0xFEAD, 0xFE97, 0xFE81, 0x002A, 0x002A,\n    0x002A, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A, 0x002B,\n    0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002D, 0x002D, 0x002D,\n    0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002E, 0x002E, 0x002E,\n    0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E,\n    0x002E, 0x002E, 0x002E, 0x002E, 0x0035, 0x0049, 0x0068, 0x0090,\n    0x00BF, 0x00F3, 0x012B, 0x0164, 0x019C, 0x01D1, 0x0202, 0x022D,\n    0x024F, 0x0267, 0x0272, 0x0270, 0x025D, 0x0238, 0x0200, 0x01B1,\n    0x014A, 0x00CA, 0x002E, 0xFEFF, 0xFCED, 0xFA3A, 0xF726, 0xF3F1,\n    0xF0DA, 0xEE22, 0xEC08, 0xEAC1, 0xE9D8, 0xE91F, 0xE896, 0xE83C,\n    0xE811, 0xE817, 0xE84C, 0xE8B1, 0xE946, 0xEA0A, 0xEB00, 0xEC18,\n    0xED44, 0xEE84, 0xEFD6, 0xF138, 0xF2A9, 0xF427, 0xF5B1, 0xF746,\n    0xF8E3, 0xFA87, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFEE, 0xFFEE,\n    0xFFEE, 0xFFEE, 0xFFEF, 0xFFEF, 0xFFEF, 0xFFF0, 0xFFF0, 0xFFF1,\n    0xFFF1, 0xFFF2, 0xFFF2, 0xFFF3, 0xFFF3, 0xFFF4, 0xFFF4, 0xFFF5,\n    0xFFF6, 0xFFF6, 0xFFF7, 0xFFF7, 0xFFF8, 0xFFF8, 0xFFF9, 0xFFF9,\n    0xFFFA, 0xFFFA, 0xFFFB, 0xFFFB, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,\n    0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFC, 0xFFFC,\n    0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,\n    0xFFFD, 0xFFFD, 0xFFFD, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,\n    0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,\n    0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,\n    0xFFFC, 0xFFFA, 0xFFF8, 0xFFF6, 0xFFF4, 0xFFF2, 0xFFF1, 0xFFF1,\n    0xFFF3, 0xFFF7, 0xFFFC, 0x0003, 0x000B, 0x0014, 0x001D, 0x0026,\n    0x0030, 0x003A, 0x0045, 0x0050, 0x005B, 0x0066, 0x0D32, 0x0D2C,\n    0x0D1A, 0x0CFD, 0x0CD6, 0x0CA4, 0x0C69, 0x0C25, 0x0BD8, 0x0B84,\n    0x0B29, 0x0AC7, 0x0A5F, 0x09F2, 0x0980, 0x0909, 0x088F, 0x0812,\n    0x0792, 0x0710, 0x068D, 0x0609, 0x0585, 0x0501, 0x047E, 0x03FD,\n    0x037E, 0x0301, 0x0287, 0x0212, 0x01A1, 0x0134, 0x00CE, 0x006D,\n    0x0013, 0xFFC1, 0xFF7F, 0xFF53, 0xFF39, 0xFF2E, 0xFF2F, 0xFF37,\n    0xFF43, 0xFF4F, 0xFF58, 0xFF59, 0xFF56, 0xFF54, 0xFF52, 0xFF51,\n    0xFF4F, 0xFF4F, 0xFF4E, 0xFF4E, 0xFF4F, 0xFF4F, 0xFF50, 0xFF50,\n    0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57, 0xFF58,\n    0xFF59, 0xFF59, 0xFF59, 0xFF59, 0xFF59, 0xFF59, 0xFF59, 0xFF59,\n    0xFF59, 0xFF59, 0xFF59, 0xFF59, 0xFF5A, 0xFF5E, 0xFF63, 0xFF68,\n    0xFF6D, 0xFF71, 0xFF73, 0xFF72, 0xFF6E, 0xFF66, 0xFF59, 0xFF49,\n    0xFF38, 0xFF26, 0xFF14, 0xFF00, 0xFEED, 0xFED8, 0xFEC3, 0xFEAD,\n    0xFE97, 0xFE81, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A, 0x002A,\n    0x002A, 0x002A, 0x002A, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B,\n    0x002B, 0x002B, 0x002B, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D,\n    0x002D, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E,\n    0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E,\n    0x0035, 0x0049, 0x0068, 0x0090, 0x00BF, 0x00F3, 0x012B, 0x0164,\n    0x019C, 0x01D1, 0x0202, 0x022D, 0x024F, 0x0267, 0x0272, 0x0270,\n    0x025D, 0x0238, 0x0200, 0x01B1, 0x014A, 0x00CA, 0x002E, 0xFEFF,\n    0xFCED, 0xFA3A, 0xF726, 0xF3F1, 0xF0DA, 0xEE22, 0xEC08, 0xEAC1,\n    0xE9D8, 0xE91F, 0xE896, 0xE83C, 0xE811, 0xE817, 0xE84C, 0xE8B1,\n    0xE946, 0xEA0A, 0xEB00, 0xEC18, 0xED44, 0xEE84, 0xEFD6, 0xF138,\n    0xF2A9, 0xF427, 0xF5B1, 0xF746, 0xF8E3, 0xFA87, 0xFFED, 0xFFED,\n    0xFFED, 0xFFED, 0xFFEE, 0xFFEE, 0xFFEE, 0xFFEE, 0xFFEF, 0xFFEF,\n    0xFFEF, 0xFFF0, 0xFFF0, 0xFFF1, 0xFFF1, 0xFFF2, 0xFFF2, 0xFFF3,\n    0xFFF3, 0xFFF4, 0xFFF4, 0xFFF5, 0xFFF6, 0xFFF6, 0xFFF7, 0xFFF7,\n    0xFFF8, 0xFFF8, 0xFFF9, 0xFFF9, 0xFFFA, 0xFFFA, 0xFFFB, 0xFFFB,\n    0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,\n    0xFFFD, 0xFFFD, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,\n    0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFC,\n    0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,\n    0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC,\n    0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFA, 0xFFF8, 0xFFF6,\n    0xFFF4, 0xFFF2, 0xFFF1, 0xFFF1, 0xFFF3, 0xFFF7, 0xFFFC, 0x0003,\n    0x000B, 0x0014, 0x001D, 0x0026, 0x0030, 0x003A, 0x0045, 0x0050,\n    0x005B, 0x0066, 0x0D32, 0x0D2C, 0x0D1A, 0x0CFD, 0x0CD6, 0x0CA4,\n    0x0C69, 0x0C25, 0x0BD8, 0x0B84, 0x0B29, 0x0AC7, 0x0A5F, 0x09F2,\n    0x0980, 0x0909, 0x088F, 0x0812, 0x0792, 0x0710, 0x068D, 0x0609,\n    0x0585, 0x0501, 0x047E, 0x03FD, 0x037E, 0x0301, 0x0287, 0x0212,\n    0x01A1, 0x0134, 0x00CE, 0x006D, 0x0013, 0xFFC1, 0xFF7F, 0xFF53,\n    0xFF39, 0xFF2E, 0xFF2F, 0xFF37, 0xFF43, 0xFF4F, 0xFF58, 0xFF59,\n    0xFF56, 0xFF54, 0xFF52, 0xFF51, 0xFF4F, 0xFF4F, 0xFF4E, 0xFF4E,\n    0xFF4F, 0xFF4F, 0xFF50, 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54,\n    0xFF55, 0xFF56, 0xFF57, 0xFF58, 0xFF59, 0xFF59, 0xFF59, 0xFF59,\n    0xFF59, 0xFF59, 0xFF59, 0xFF59, 0xFF59, 0xFF59, 0xFF59, 0xFF59,\n    0xFF5A, 0xFF5E, 0xFF63, 0xFF68, 0xFF6D, 0xFF71, 0xFF73, 0xFF72,\n    0xFF6E, 0xFF66, 0xFF59, 0xFF49, 0xFF38, 0xFF26, 0xFF14, 0xFF00,\n    0xFEED, 0xFED8, 0xFEC3, 0xFEAD, 0xFE97, 0xFE81, 0x0000, 0x0000,\n    0x0001, 0x0002, 0x0004, 0x0006, 0x0008, 0x000B, 0x000E, 0x0011,\n    0x0014, 0x0017, 0x001B, 0x001E, 0x0021, 0x0024, 0x0027, 0x002A,\n    0x002D, 0x002F, 0x0031, 0x0032, 0x0033, 0x0034, 0x0033, 0x0033,\n    0x0031, 0x002F, 0x002D, 0x0029, 0x0024, 0x001F, 0x0019, 0x0011,\n    0x0009, 0x0000, 0xFFF6, 0xFFEA, 0xFFDC, 0xFFCD, 0xFFBD, 0xFFAC,\n    0xFF9A, 0xFF87, 0xFF73, 0xFF5E, 0xFF48, 0xFF32, 0xFF1B, 0xFF04,\n    0xFEEC, 0xFED4, 0xFEBB, 0xFEA2, 0xFE89, 0xFE70, 0xFE57, 0xFE3E,\n    0xFE26, 0xFE0D, 0xFDF5, 0xFDDD, 0xFDC5, 0xFDAE, 0xFD98, 0xFD82,\n    0xFD6D, 0xFD58, 0xFD45, 0xFD33, 0xFD21, 0xFD11, 0xFD02, 0xFCF4,\n    0xFCE7, 0xFCDC, 0xFCD3, 0xFCCA, 0xFCC4, 0xFCBF, 0xFCBC, 0xFCBB,\n    0xFCBB, 0xFCBE, 0xFCC3, 0xFCCC, 0xFCD7, 0xFCE5, 0xFCF6, 0xFD0A,\n    0xFD1F, 0xFD37, 0xFD51, 0xFD6E, 0xFD8B, 0xFDAB, 0xFDCC, 0xFDEF,\n    0xFE12, 0xFE37, 0x0000, 0xFFFF, 0xFFFB, 0xFFF3, 0xFFEA, 0xFFDD,\n    0xFFCF, 0xFFBE, 0xFFAC, 0xFF98, 0xFF82, 0xFF6A, 0xFF52, 0xFF38,\n    0xFF1D, 0xFF01, 0xFEE5, 0xFEC8, 0xFEAB, 0xFE8E, 0xFE71, 0xFE54,\n    0xFE37, 0xFE1B, 0xFDFF, 0xFDE4, 0xFDCA, 0xFDB1, 0xFD9A, 0xFD84,\n    0xFD6F, 0xFD5C, 0xFD4C, 0xFD3D, 0xFD30, 0xFD26, 0xFD1E, 0xFD16,\n    0xFD0F, 0xFD09, 0xFD03, 0xFCFE, 0xFCFA, 0xFCF6, 0xFCF2, 0xFCEF,\n    0xFCED, 0xFCEB, 0xFCEA, 0xFCE9, 0xFCE8, 0xFCE8, 0xFCE8, 0xFCE9,\n    0xFCE9, 0xFCEB, 0xFCEC, 0xFCEE, 0xFCF0, 0xFCF2, 0xFCF4, 0xFCF6,\n    0xFCF9, 0xFCFC, 0xFCFE, 0xFD01, 0xFD04, 0xFD07, 0xFD0A, 0xFD0D,\n    0xFD10, 0xFD13, 0xFD15, 0xFD18, 0xFD1A, 0xFD1D, 0xFD1F, 0xFD21,\n    0xFD22, 0xFD24, 0xFD25, 0xFD26, 0xFD26, 0xFD26, 0xFD26, 0xFD26,\n    0xFD26, 0xFD26, 0xFD26, 0xFD26, 0xFD26, 0xFD26, 0xFD26, 0xFD26,\n    0xFD26, 0xFD26, 0xFD26, 0xFD26, 0xFD26, 0xFD26, 0x3FFF, 0x0000,\n};\n\n// 0x05012E38\nstatic const u16 peach_seg5_animindex_5012E38[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0003, 0x0001, 0x0004, 0x0001, 0x0005,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0EE6,\n    0x0064, 0x0E1E, 0x0001, 0x0000, 0x0064, 0x0E82,\n    0x0064, 0x0CF2, 0x0064, 0x0D56, 0x0064, 0x0DBA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0774,\n    0x0064, 0x0006, 0x0064, 0x006A, 0x0064, 0x00CE,\n    0x0064, 0x0BC6, 0x0064, 0x0C2A, 0x0064, 0x0C8E,\n    0x0064, 0x0A9A, 0x0064, 0x0AFE, 0x0064, 0x0B62,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0A99,\n    0x0064, 0x0775, 0x0064, 0x07D9, 0x0064, 0x083D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0064, 0x025E,\n    0x0064, 0x0132, 0x0064, 0x0196, 0x0064, 0x01FA,\n    0x0064, 0x02C2, 0x0064, 0x0326, 0x0064, 0x038A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x09D0,\n    0x0064, 0x08A1, 0x0064, 0x0905, 0x0064, 0x0969,\n    0x0001, 0x0000, 0x0001, 0x051A, 0x0001, 0x051B,\n    0x0064, 0x03EE, 0x0064, 0x0452, 0x0064, 0x04B6,\n    0x0064, 0x051C, 0x0064, 0x0580, 0x0064, 0x05E4,\n    0x0064, 0x09D1, 0x0001, 0x0000, 0x0064, 0x0A35,\n    0x0001, 0x09CD, 0x0001, 0x09CE, 0x0001, 0x09CF,\n    0x0064, 0x0648, 0x0064, 0x06AC, 0x0064, 0x0710,\n};\n\n// 0x05012F40\nstatic const struct Animation peach_seg5_anim_05012F40 = {\n    1,\n    0,\n    0,\n    0,\n    0x64,\n    ANIMINDEX_NUMPARTS(peach_seg5_animindex_5012E38),\n    peach_seg5_animvalue_05011068,\n    peach_seg5_animindex_5012E38,\n    0,\n};\n"
  },
  {
    "path": "actors/peach/anims/anim_05015468.inc.c",
    "content": "// 0x05012F58\nstatic const s16 peach_seg5_animvalue_05012F58[] = {\n    0x0000, 0x015E, 0xFFDB, 0xC50F, 0x3FFA, 0xC50F, 0xFF97, 0x00B4,\n    0x01CA, 0x02D4, 0x03CD, 0x04B2, 0x057F, 0x062F, 0x06BF, 0x0729,\n    0x0773, 0x07A4, 0x07BF, 0x07C4, 0x07B7, 0x0798, 0x0769, 0x072D,\n    0x06E5, 0x0694, 0x063A, 0x05DA, 0x0576, 0x0510, 0x04A9, 0x0443,\n    0x03E0, 0x0382, 0x032B, 0x02C4, 0x023E, 0x01A1, 0x00F6, 0x0044,\n    0xFF96, 0xFEF3, 0xFE64, 0xFDE9, 0xFD7B, 0xFD1D, 0xFCD0, 0xFC95,\n    0xFC79, 0xFC7E, 0xFC93, 0xFCA8, 0xFCBB, 0xFCD3, 0xFCEE, 0xFD07,\n    0xFD1E, 0xFD31, 0xFD45, 0xFD58, 0xFD6B, 0xFD7D, 0xFD8F, 0xFD9E,\n    0xFDAC, 0xFDB8, 0xFDC3, 0xFDCE, 0xFDD9, 0xFDE3, 0xFDED, 0xFDF7,\n    0xFE00, 0xFE0A, 0xFE13, 0xFE1B, 0xFE24, 0xFE2C, 0xFE33, 0xFE3A,\n    0xFE41, 0xFE48, 0xFE4D, 0xFE53, 0xFE58, 0xFE5C, 0xFE65, 0xFE76,\n    0xFE8E, 0xFEAC, 0xFECD, 0xFEF0, 0xFF14, 0xFF37, 0xFF58, 0xFF74,\n    0xFF8B, 0xFF9B, 0xFFA2, 0xFF9F, 0xFF90, 0xFF73, 0xFF48, 0xFF0C,\n    0xFEBE, 0xFE5C, 0xFFFE, 0xFF8E, 0xFF1E, 0xFEB2, 0xFE49, 0xFDE5,\n    0xFD88, 0xFD34, 0xFCE9, 0xFCA9, 0xFC88, 0xFC92, 0xFCBA, 0xFCF3,\n    0xFD32, 0xFD6A, 0xFDA8, 0xFDF7, 0xFE4A, 0xFE90, 0xFEBC, 0xFECB,\n    0xFEC8, 0xFEBA, 0xFEA8, 0xFE99, 0xFE92, 0xFE9C, 0xFEBC, 0xFEF6,\n    0xFF45, 0xFFA4, 0x000B, 0x0077, 0x00E0, 0x0141, 0x0195, 0x01D8,\n    0x0210, 0x023E, 0x0263, 0x0283, 0x0294, 0x0296, 0x0295, 0x029D,\n    0x02B2, 0x02CE, 0x02EB, 0x0307, 0x031D, 0x032E, 0x033E, 0x034E,\n    0x035D, 0x036B, 0x0377, 0x0382, 0x038C, 0x0394, 0x039B, 0x03A1,\n    0x03A8, 0x03AD, 0x03B3, 0x03B8, 0x03BD, 0x03C2, 0x03C7, 0x03CB,\n    0x03CF, 0x03D3, 0x03D6, 0x03DA, 0x03DD, 0x03E0, 0x03E2, 0x03E5,\n    0x03E7, 0x03E9, 0x03E5, 0x03D5, 0x03BA, 0x0398, 0x0371, 0x0346,\n    0x0319, 0x02EC, 0x02C2, 0x029D, 0x027E, 0x0269, 0x025D, 0x025F,\n    0x0270, 0x0291, 0x02C6, 0x030F, 0x0370, 0x03E9, 0xCDFD, 0xCE52,\n    0xCEA5, 0xCEF3, 0xCF3C, 0xCF81, 0xCFC6, 0xD00D, 0xD053, 0xD09B,\n    0xD0E2, 0xD12A, 0xD171, 0xD1B9, 0xD200, 0xD248, 0xD28F, 0xD2D6,\n    0xD31C, 0xD362, 0xD3A7, 0xD3EC, 0xD43A, 0xD48D, 0xD4DB, 0xD51A,\n    0xD542, 0xD54A, 0xD528, 0xD4D3, 0xD442, 0xD34A, 0xD15A, 0xCEBE,\n    0xCBE4, 0xC938, 0xC727, 0xC5B7, 0xC49D, 0xC3CC, 0xC334, 0xC2CA,\n    0xC29F, 0xC2CB, 0xC345, 0xC402, 0xC529, 0xC6B1, 0xC84C, 0xC9AD,\n    0xCA86, 0xCAEB, 0xCB29, 0xCB45, 0xCB48, 0xCB38, 0xCB1B, 0xCAF7,\n    0xCAD5, 0xCAB9, 0xCAA2, 0xCA86, 0xCA67, 0xCA46, 0xCA22, 0xC9FC,\n    0xC9D5, 0xC9AC, 0xC983, 0xC95A, 0xC931, 0xC908, 0xC8E1, 0xC8BB,\n    0xC897, 0xC876, 0xC858, 0xC83D, 0xC825, 0xC812, 0xC7FB, 0xC7DB,\n    0xC7B3, 0xC784, 0xC753, 0xC71F, 0xC6EC, 0xC6BB, 0xC68F, 0xC669,\n    0xC64B, 0xC638, 0xC632, 0xC63A, 0xC653, 0xC67F, 0xC6C0, 0xC717,\n    0xC787, 0xC812, 0xDE3A, 0xDE90, 0xDEE6, 0xDF3A, 0xDF8B, 0xDFDA,\n    0xE025, 0xE06C, 0xE0AF, 0xE0EB, 0xE122, 0xE151, 0xE17A, 0xE19A,\n    0xE1AA, 0xE1A7, 0xE191, 0xE16C, 0xE139, 0xE0FB, 0xE0B5, 0xE068,\n    0xE017, 0xDFC4, 0xDF72, 0xDF22, 0xDED8, 0xDE95, 0xDE5C, 0xDE2F,\n    0xDE11, 0xDE04, 0xDE09, 0xDE24, 0xDE57, 0xDEA4, 0xDF0D, 0xDF95,\n    0xE03E, 0xE220, 0xE5D2, 0xEA90, 0xEF9A, 0xF42C, 0xF785, 0xF8E2,\n    0xF8FB, 0xF909, 0xF90F, 0xF90E, 0xF908, 0xF8FF, 0xF8F5, 0xF8EC,\n    0xF8E5, 0xF8E2, 0xF8E2, 0xF8E2, 0xF8E2, 0xF8E2, 0xF8E2, 0xF8E2,\n    0xF8E2, 0xF8E2, 0xF8E2, 0xF8E2, 0xF8E2, 0xF8E2, 0xF8E2, 0xF8E2,\n    0xF8E2, 0xF8E2, 0xF8E2, 0xF8E2, 0xF8E2, 0xF8E2, 0xF8E2, 0xF8E2,\n    0xF8E2, 0xF8E2, 0xF8E2, 0xF8E1, 0xF8E1, 0xF8E0, 0xF8E0, 0xF8DF,\n    0xF8DE, 0xF8DE, 0xF8DD, 0xF8DC, 0xF8DC, 0xF8DC, 0xF8DB, 0xF8DB,\n    0xF8DC, 0xF8DC, 0xF8DD, 0xF8DE, 0xF8E0, 0xF8E2, 0x02E9, 0x0275,\n    0x0204, 0x0196, 0x012D, 0x00C9, 0x006C, 0x0016, 0xFFCA, 0xFF87,\n    0xFF4F, 0xFF22, 0xFF02, 0xFEF0, 0xFEED, 0xFEFA, 0xFF14, 0xFF39,\n    0xFF68, 0xFF9F, 0xFFDC, 0x001C, 0x005E, 0x00A1, 0x00E2, 0x011F,\n    0x0157, 0x0187, 0x01AD, 0x01C9, 0x01D7, 0x01D5, 0x01C3, 0x019D,\n    0x0163, 0x0112, 0x00A8, 0x0023, 0xFF83, 0xFDC8, 0xFA6D, 0xF61F,\n    0xF18E, 0xED68, 0xEA5D, 0xE91A, 0xE8FC, 0xE8EB, 0xE8E4, 0xE8E5,\n    0xE8EC, 0xE8F7, 0xE903, 0xE90E, 0xE916, 0xE91A, 0xE91A, 0xE91A,\n    0xE91A, 0xE91A, 0xE91A, 0xE91A, 0xE91A, 0xE91A, 0xE91A, 0xE91A,\n    0xE91A, 0xE91A, 0xE91A, 0xE91A, 0xE91A, 0xE91A, 0xE91A, 0xE91A,\n    0xE91A, 0xE91A, 0xE91A, 0xE91A, 0xE91A, 0xE91A, 0xE918, 0xE915,\n    0xE910, 0xE90A, 0xE902, 0xE8FA, 0xE8F2, 0xE8EA, 0xE8E2, 0xE8DB,\n    0xE8D6, 0xE8D2, 0xE8D0, 0xE8D0, 0xE8D3, 0xE8DA, 0xE8E3, 0xE8F1,\n    0xE903, 0xE91A, 0xDC05, 0xDBE2, 0xDBC0, 0xDB9F, 0xDB7F, 0xDB5F,\n    0xDB41, 0xDB25, 0xDB0B, 0xDAF3, 0xDADD, 0xDACA, 0xDABA, 0xDAAD,\n    0xDAA4, 0xDA9E, 0xDA9C, 0xDA9C, 0xDA9E, 0xDAA3, 0xDAAA, 0xDAB3,\n    0xDABD, 0xDAC8, 0xDAD4, 0xDAE1, 0xDAEE, 0xDAFA, 0xDB07, 0xDB13,\n    0xDB1E, 0xDB28, 0xDB31, 0xDB38, 0xDB3D, 0xDB40, 0xDB40, 0xDB3D,\n    0xDB38, 0xDB20, 0xDAEF, 0xDAAD, 0xDA65, 0xDA1F, 0xD9E5, 0xD9C1,\n    0xD9AF, 0xD9A5, 0xD9A1, 0xD9A1, 0xD9A6, 0xD9AC, 0xD9B3, 0xD9BA,\n    0xD9BF, 0xD9C1, 0xD9C1, 0xD9C1, 0xD9C1, 0xD9C1, 0xD9C1, 0xD9C1,\n    0xD9C1, 0xD9C1, 0xD9C1, 0xD9C1, 0xD9C1, 0xD9C1, 0xD9C1, 0xD9C1,\n    0xD9C1, 0xD9C1, 0xD9C1, 0xD9C1, 0xD9C1, 0xD9C1, 0xD9C1, 0xD9C1,\n    0xD9C1, 0xD9C1, 0xD9C1, 0xD9C2, 0xD9C3, 0xD9C4, 0xD9C6, 0xD9C7,\n    0xD9C9, 0xD9CA, 0xD9CC, 0xD9CD, 0xD9CE, 0xD9CF, 0xD9CF, 0xD9CF,\n    0xD9CF, 0xD9CD, 0xD9CB, 0xD9C9, 0xD9C5, 0xD9C1, 0xAD0B, 0xACFB,\n    0xACEB, 0xACDB, 0xACCA, 0xACB9, 0xACA7, 0xAC96, 0xAC83, 0xAC71,\n    0xAC5F, 0xAC4C, 0xAC39, 0xAC26, 0xAC13, 0xAC00, 0xABED, 0xABDA,\n    0xABC6, 0xABB3, 0xABA0, 0xAB8D, 0xAB7A, 0xAB67, 0xAB54, 0xAB41,\n    0xAB2F, 0xAB1C, 0xAB0A, 0xAAF8, 0xAAE7, 0xAAD6, 0xAAC5, 0xAAB4,\n    0xAAA4, 0xAA95, 0xAA85, 0xAA77, 0xAA68, 0xAA17, 0xA96F, 0xA8B3,\n    0xA829, 0xA816, 0xA8BF, 0xAA68, 0xAD31, 0xB0DE, 0xB531, 0xB9EA,\n    0xBEC9, 0xC38F, 0xC7FC, 0xCBD1, 0xCECF, 0xD0B5, 0xD1E4, 0xD2EB,\n    0xD3CC, 0xD489, 0xD524, 0xD5A2, 0xD603, 0xD64B, 0xD67C, 0xD699,\n    0xD6A4, 0xD6A1, 0xD691, 0xD677, 0xD656, 0xD631, 0xD609, 0xD5E2,\n    0xD5BF, 0xD5A1, 0xD58C, 0xD581, 0xD585, 0xD598, 0xD5B6, 0xD5D4,\n    0xD5F4, 0xD614, 0xD632, 0xD64F, 0xD66A, 0xD682, 0xD696, 0xD6A5,\n    0xD6AF, 0xD6B2, 0xD6AF, 0xD6A4, 0xD691, 0xD675, 0xD64E, 0xD61D,\n    0xD5E1, 0xD598, 0x1B15, 0x1ACD, 0x1A85, 0x1A3E, 0x19F8, 0x19B4,\n    0x1972, 0x1932, 0x18F5, 0x18BC, 0x1886, 0x1854, 0x1828, 0x1800,\n    0x17F3, 0x1810, 0x1849, 0x1891, 0x18DB, 0x1919, 0x193F, 0x194F,\n    0x1957, 0x1958, 0x1954, 0x194E, 0x1947, 0x1941, 0x193F, 0x193F,\n    0x193F, 0x193F, 0x193F, 0x193F, 0x193F, 0x193F, 0x193F, 0x193F,\n    0x193F, 0x194F, 0x1975, 0x19A0, 0x19C1, 0x19C6, 0x19A0, 0x193F,\n    0x189A, 0x17C0, 0x16BE, 0x15A6, 0x1484, 0x136A, 0x1265, 0x1185,\n    0x10D9, 0x1070, 0x1033, 0x1000, 0x0FD7, 0x0FB7, 0x0FA0, 0x0F90,\n    0x0F87, 0x0F84, 0x0F87, 0x0F8E, 0x0F9A, 0x0FA9, 0x0FBB, 0x0FCF,\n    0x0FE4, 0x0FFA, 0x1010, 0x1025, 0x1039, 0x104B, 0x105A, 0x1066,\n    0x106D, 0x1070, 0x106C, 0x1063, 0x1055, 0x1044, 0x102F, 0x1019,\n    0x1002, 0x0FEB, 0x0FD6, 0x0FC4, 0x0FB4, 0x0FA9, 0x0FA4, 0x0FA5,\n    0x0FAE, 0x0FBF, 0x0FDA, 0x1000, 0x1032, 0x1070, 0xFF68, 0xFFA2,\n    0xFFDC, 0x0014, 0x004B, 0x0080, 0x00B3, 0x00E2, 0x010F, 0x0138,\n    0x015D, 0x017E, 0x0199, 0x01B0, 0x01C1, 0x01CE, 0x01D6, 0x01DB,\n    0x01DC, 0x01DA, 0x01D5, 0x01CD, 0x01C2, 0x01B6, 0x01A8, 0x0198,\n    0x0187, 0x0175, 0x0163, 0x0150, 0x013D, 0x012A, 0x0118, 0x0107,\n    0x00F7, 0x00E8, 0x00DC, 0x00D1, 0x00C8, 0x00D1, 0x00F0, 0x0116,\n    0x0134, 0x013B, 0x011C, 0x00C8, 0x0039, 0xFF7C, 0xFE9C, 0xFDA7,\n    0xFCAC, 0xFBB6, 0xFAD2, 0xFA0F, 0xF97A, 0xF91E, 0xF8E9, 0xF8BD,\n    0xF89A, 0xF87E, 0xF869, 0xF85C, 0xF854, 0xF851, 0xF853, 0xF85A,\n    0xF864, 0xF871, 0xF881, 0xF892, 0xF8A5, 0xF8B8, 0xF8CB, 0xF8DD,\n    0xF8EF, 0xF8FE, 0xF90B, 0xF916, 0xF91C, 0xF91E, 0xF91D, 0xF91A,\n    0xF916, 0xF910, 0xF909, 0xF902, 0xF8FA, 0xF8F3, 0xF8EC, 0xF8E6,\n    0xF8E1, 0xF8DD, 0xF8DC, 0xF8DC, 0xF8DF, 0xF8E5, 0xF8ED, 0xF8FA,\n    0xF90A, 0xF91E, 0xB0D1, 0xB081, 0xB032, 0xAFE5, 0xAF9A, 0xAF52,\n    0xAF0D, 0xAECD, 0xAE91, 0xAE5A, 0xAE29, 0xADFF, 0xADDC, 0xADC0,\n    0xADAA, 0xAD97, 0xAD87, 0xAD7A, 0xAD70, 0xAD68, 0xAD63, 0xAD60,\n    0xAD5F, 0xAD61, 0xAD65, 0xAD6B, 0xAD72, 0xAD7C, 0xAD88, 0xAD95,\n    0xADA3, 0xADB3, 0xADC5, 0xADD7, 0xADEB, 0xAE00, 0xAE16, 0xAE2C,\n    0xAE44, 0xAE5C, 0xAE74, 0xAE8D, 0xAEA7, 0xAEC0, 0xAEDA, 0xAEF4,\n    0xAF1C, 0xAF5E, 0xAFB2, 0xB013, 0xB07B, 0xB0E1, 0xB142, 0xB195,\n    0xB1D4, 0xB1FA, 0xB20F, 0xB220, 0xB22F, 0xB239, 0xB242, 0xB247,\n    0xB24A, 0xB24B, 0xB24A, 0xB248, 0xB244, 0xB23F, 0xB238, 0xB232,\n    0xB22A, 0xB223, 0xB21B, 0xB214, 0xB20D, 0xB207, 0xB202, 0xB1FE,\n    0xB1FB, 0xB1FA, 0xB1FB, 0xB1FE, 0xB202, 0xB207, 0xB20C, 0xB213,\n    0xB219, 0xB220, 0xB226, 0xB22B, 0xB22F, 0xB232, 0xB234, 0xB234,\n    0xB231, 0xB22C, 0xB224, 0xB21A, 0xB20C, 0xB1FA, 0x1602, 0x1675,\n    0x16E9, 0x175C, 0x17D0, 0x1841, 0x18B1, 0x191D, 0x1986, 0x19E9,\n    0x1A48, 0x1AA0, 0x1AF1, 0x1B3A, 0x1B6C, 0x1B80, 0x1B7C, 0x1B6A,\n    0x1B53, 0x1B3E, 0x1B36, 0x1B35, 0x1B35, 0x1B35, 0x1B35, 0x1B35,\n    0x1B35, 0x1B36, 0x1B36, 0x1B4C, 0x1B84, 0x1BD0, 0x1C21, 0x1C68,\n    0x1C96, 0x1C9D, 0x1C6F, 0x1BFC, 0x1B36, 0x19AE, 0x1743, 0x1453,\n    0x1140, 0x0E69, 0x0C30, 0x0AF5, 0x0A9C, 0x0ABB, 0x0B38, 0x0BFB,\n    0x0CEA, 0x0DED, 0x0EEC, 0x0FCD, 0x1079, 0x10D5, 0x10FD, 0x111F,\n    0x113A, 0x114F, 0x115F, 0x116A, 0x1170, 0x1172, 0x1170, 0x116B,\n    0x1163, 0x1159, 0x114D, 0x1140, 0x1132, 0x1123, 0x1114, 0x1106,\n    0x10F9, 0x10ED, 0x10E3, 0x10DB, 0x10D6, 0x10D5, 0x10D4, 0x10D4,\n    0x10D4, 0x10D4, 0x10D3, 0x10D3, 0x10D3, 0x10D2, 0x10D2, 0x10D2,\n    0x10D1, 0x10D1, 0x10D1, 0x10D1, 0x10D1, 0x10D1, 0x10D2, 0x10D3,\n    0x10D3, 0x10D5, 0x0222, 0x01F3, 0x01C3, 0x0194, 0x0166, 0x0139,\n    0x010D, 0x00E3, 0x00BA, 0x0095, 0x0071, 0x0051, 0x0034, 0x001B,\n    0x0013, 0x0027, 0x004E, 0x007E, 0x00AF, 0x00D8, 0x00F2, 0x00FD,\n    0x0102, 0x0102, 0x0100, 0x00FC, 0x00F7, 0x00F3, 0x00F2, 0x00DC,\n    0x00A4, 0x0058, 0x0008, 0xFFC2, 0xFF94, 0xFF8C, 0xFFBB, 0x002C,\n    0x00F2, 0x0262, 0x049B, 0x074F, 0x0A36, 0x0D02, 0x0F6A, 0x1122,\n    0x124F, 0x134A, 0x141A, 0x14C2, 0x1549, 0x15B4, 0x1607, 0x1648,\n    0x167C, 0x16A8, 0x16CE, 0x16ED, 0x1707, 0x171B, 0x172A, 0x1734,\n    0x173A, 0x173B, 0x173A, 0x1735, 0x172E, 0x1724, 0x1719, 0x170D,\n    0x16FF, 0x16F2, 0x16E4, 0x16D6, 0x16CA, 0x16BF, 0x16B5, 0x16AE,\n    0x16A9, 0x16A8, 0x16AB, 0x16B4, 0x16C2, 0x16D3, 0x16E8, 0x16FE,\n    0x1714, 0x172B, 0x1740, 0x1752, 0x1761, 0x176C, 0x1771, 0x1770,\n    0x1768, 0x1756, 0x173B, 0x1716, 0x16E5, 0x16A8, 0xEC9C, 0xEC36,\n    0xEBD0, 0xEB69, 0xEB03, 0xEA9E, 0xEA3C, 0xE9DC, 0xE97F, 0xE927,\n    0xE8D4, 0xE886, 0xE83F, 0xE7FE, 0xE7D2, 0xE7C3, 0xE7C8, 0xE7DB,\n    0xE7F2, 0xE806, 0xE80F, 0xE810, 0xE810, 0xE811, 0xE810, 0xE810,\n    0xE810, 0xE80F, 0xE80F, 0xE801, 0xE7DC, 0xE7A9, 0xE774, 0xE745,\n    0xE727, 0xE722, 0xE741, 0xE78C, 0xE80F, 0xE905, 0xEA80, 0xEC4D,\n    0xEE3B, 0xF016, 0xF1AC, 0xF2C8, 0xF384, 0xF41B, 0xF493, 0xF4EF,\n    0xF535, 0xF568, 0xF58D, 0xF5A8, 0xF5BF, 0xF5D4, 0xF5EA, 0xF5FB,\n    0xF609, 0xF614, 0xF61C, 0xF622, 0xF625, 0xF626, 0xF625, 0xF623,\n    0xF61F, 0xF619, 0xF613, 0xF60C, 0xF605, 0xF5FD, 0xF5F6, 0xF5EE,\n    0xF5E7, 0xF5E1, 0xF5DC, 0xF5D8, 0xF5D5, 0xF5D4, 0xF5D5, 0xF5D7,\n    0xF5D9, 0xF5DD, 0xF5E0, 0xF5E4, 0xF5E9, 0xF5ED, 0xF5F1, 0xF5F4,\n    0xF5F7, 0xF5F9, 0xF5FA, 0xF5FA, 0xF5F8, 0xF5F5, 0xF5F0, 0xF5E9,\n    0xF5E0, 0xF5D4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0002, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0xFFFC, 0xFFE7, 0xFFC9, 0xFFA4,\n    0xFF7D, 0xFF55, 0xFF30, 0xFF12, 0xFEFE, 0xFEF6, 0xFEFF, 0xFF1B,\n    0xFF4D, 0xFF9A, 0x0002, 0x00B9, 0x01D8, 0x0341, 0x04D9, 0x0682,\n    0x081E, 0x0992, 0x0ABF, 0x0B89, 0x0BD3, 0x0B41, 0x09C4, 0x07AF,\n    0x0557, 0x030F, 0x012C, 0x0002, 0xFF73, 0xFF1F, 0xFEFD, 0xFF02,\n    0xFF24, 0xFF57, 0xFF91, 0xFFC8, 0xFFF1, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xAE20, 0xAE20, 0xAE20, 0xAE20, 0xAE20, 0xAE20,\n    0xAE20, 0xAE20, 0xAE20, 0xAE20, 0xAE20, 0xAE20, 0xAE20, 0xAE20,\n    0xAE23, 0xAE2C, 0xAE3A, 0xAE4A, 0xAE5C, 0xAE6E, 0xAE7E, 0xAE8C,\n    0xAE95, 0xAE98, 0xAE94, 0xAE88, 0xAE71, 0xAE4F, 0xAE20, 0xADCE,\n    0xAD4D, 0xACAB, 0xABF4, 0xAB36, 0xAA7D, 0xA9D7, 0xA950, 0xA8F5,\n    0xA8D4, 0xA8D3, 0xA8E4, 0xA922, 0xA9AB, 0xAA9B, 0xAC0D, 0xAE20,\n    0xB0FB, 0xB491, 0xB8AC, 0xBD14, 0xC194, 0xC5F4, 0xC9FF, 0xCD7D,\n    0xD038, 0xD1FA, 0xD319, 0xD412, 0xD4E7, 0xD59B, 0xD630, 0xD6A9,\n    0xD708, 0xD74F, 0xD781, 0xD7A0, 0xD7AE, 0xD7AF, 0xD7A4, 0xD790,\n    0xD775, 0xD755, 0xD734, 0xD713, 0xD6F5, 0xD6DC, 0xD6CB, 0xD6C4,\n    0xD6CA, 0xD6DE, 0xD6FE, 0xD724, 0xD74F, 0xD77C, 0xD7AB, 0xD7DA,\n    0xD807, 0xD831, 0xD856, 0xD874, 0xD88A, 0xD897, 0xD898, 0xD88C,\n    0xD872, 0xD847, 0xD80B, 0xD7BC, 0xD758, 0xD6DE, 0xDB13, 0xDB1D,\n    0xDB27, 0xDB31, 0xDB3A, 0xDB44, 0xDB4D, 0xDB55, 0xDB5D, 0xDB65,\n    0xDB6C, 0xDB73, 0xDB79, 0xDB7E, 0xDB80, 0xDB7B, 0xDB72, 0xDB67,\n    0xDB5C, 0xDB52, 0xDB4C, 0xDB4A, 0xDB49, 0xDB48, 0xDB49, 0xDB4A,\n    0xDB4B, 0xDB4C, 0xDB4C, 0xDB24, 0xDABC, 0xDA30, 0xD99B, 0xD918,\n    0xD8C3, 0xD8B5, 0xD90B, 0xD9DF, 0xDB4C, 0xDE0C, 0xE258, 0xE793,\n    0xED1A, 0xF250, 0xF692, 0xF943, 0xFA9B, 0xFB52, 0xFB86, 0xFB53,\n    0xFAD7, 0xFA2F, 0xF978, 0xF8CE, 0xF850, 0xF819, 0xF811, 0xF80B,\n    0xF805, 0xF801, 0xF7FE, 0xF7FC, 0xF7FB, 0xF7FA, 0xF7FB, 0xF7FC,\n    0xF7FD, 0xF7FF, 0xF801, 0xF804, 0xF807, 0xF80A, 0xF80D, 0xF80F,\n    0xF812, 0xF814, 0xF816, 0xF818, 0xF819, 0xF819, 0xF81E, 0xF82B,\n    0xF83F, 0xF858, 0xF875, 0xF894, 0xF8B5, 0xF8D5, 0xF8F3, 0xF90D,\n    0xF923, 0xF932, 0xF93A, 0xF938, 0xF92C, 0xF913, 0xF8ED, 0xF8B7,\n    0xF871, 0xF819, 0x069E, 0x06F2, 0x0745, 0x0798, 0x07E9, 0x0838,\n    0x0885, 0x08CF, 0x0916, 0x0959, 0x0997, 0x09D1, 0x0A05, 0x0A34,\n    0x0A42, 0x0A21, 0x09E0, 0x098E, 0x0939, 0x08F1, 0x08C6, 0x08B3,\n    0x08AA, 0x08A9, 0x08AD, 0x08B5, 0x08BD, 0x08C3, 0x08C6, 0x08C8,\n    0x08CD, 0x08D4, 0x08DC, 0x08E3, 0x08E7, 0x08E8, 0x08E3, 0x08D8,\n    0x08C6, 0x089A, 0x0850, 0x07F8, 0x07A0, 0x075A, 0x0734, 0x073F,\n    0x077A, 0x07D8, 0x084E, 0x08D4, 0x0962, 0x09F0, 0x0A73, 0x0AE5,\n    0x0B3C, 0x0B70, 0x0B8D, 0x0BA6, 0x0BB9, 0x0BC8, 0x0BD3, 0x0BDB,\n    0x0BDF, 0x0BE1, 0x0BDF, 0x0BDC, 0x0BD6, 0x0BCF, 0x0BC7, 0x0BBD,\n    0x0BB3, 0x0BA9, 0x0B9E, 0x0B94, 0x0B8B, 0x0B82, 0x0B7B, 0x0B75,\n    0x0B72, 0x0B70, 0x0B72, 0x0B78, 0x0B80, 0x0B8A, 0x0B95, 0x0BA2,\n    0x0BAF, 0x0BBC, 0x0BC8, 0x0BD3, 0x0BDB, 0x0BE2, 0x0BE5, 0x0BE4,\n    0x0BDF, 0x0BD5, 0x0BC6, 0x0BB0, 0x0B94, 0x0B70, 0xB624, 0xB663,\n    0xB6A3, 0xB6E2, 0xB720, 0xB75C, 0xB796, 0xB7CE, 0xB804, 0xB837,\n    0xB866, 0xB891, 0xB8B9, 0xB8DB, 0xB8E5, 0xB8C9, 0xB893, 0xB850,\n    0xB80B, 0xB7D1, 0xB7AD, 0xB79E, 0xB797, 0xB796, 0xB799, 0xB79F,\n    0xB7A6, 0xB7AB, 0xB7AD, 0xB7A5, 0xB78E, 0xB76F, 0xB74E, 0xB731,\n    0xB71E, 0xB71B, 0xB72E, 0xB75D, 0xB7AD, 0xB855, 0xB964, 0xBAAC,\n    0xBBFC, 0xBD27, 0xBDFC, 0xBE4D, 0xBE20, 0xBDA8, 0xBCF7, 0xBC1E,\n    0xBB2E, 0xBA39, 0xB951, 0xB887, 0xB7ED, 0xB794, 0xB765, 0xB73F,\n    0xB720, 0xB707, 0xB6F5, 0xB6E9, 0xB6E2, 0xB6E0, 0xB6E2, 0xB6E8,\n    0xB6F1, 0xB6FC, 0xB70A, 0xB719, 0xB729, 0xB73A, 0xB74B, 0xB75B,\n    0xB76A, 0xB778, 0xB783, 0xB78C, 0xB792, 0xB794, 0xB795, 0xB797,\n    0xB79B, 0xB7A0, 0xB7A6, 0xB7AC, 0xB7B2, 0xB7B8, 0xB7BE, 0xB7C3,\n    0xB7C8, 0xB7CB, 0xB7CC, 0xB7CC, 0xB7C9, 0xB7C4, 0xB7BD, 0xB7B3,\n    0xB7A5, 0xB794, 0xFFD6, 0xFFD7, 0xFFD8, 0xFFDA, 0xFFDC, 0xFFDE,\n    0xFFE1, 0xFFE4, 0xFFE7, 0xFFEA, 0xFFEE, 0xFFF1, 0xFFF5, 0xFFF8,\n    0xFFFB, 0xFFFF, 0x0001, 0x0003, 0x0006, 0x0008, 0x000A, 0x000B,\n    0x000B, 0x000B, 0x000B, 0x000B, 0x000A, 0x000A, 0x000A, 0x000A,\n    0x000A, 0x000A, 0x000A, 0x000A, 0x000A, 0x000A, 0x000A, 0x000A,\n    0x000A, 0x000A, 0x000A, 0x000A, 0x000A, 0x000A, 0x000A, 0x000A,\n    0x000A, 0x0009, 0x0009, 0x0009, 0x0009, 0x000A, 0x000A, 0x000A,\n    0x000B, 0x000B, 0x000C, 0x000C, 0x000D, 0x000D, 0x000D, 0x000D,\n    0x000D, 0x000D, 0x000C, 0x000C, 0x000B, 0x000B, 0x000B, 0x000B,\n    0x000B, 0x000B, 0x000B, 0x000B, 0x000B, 0x000B, 0x000C, 0x000D,\n    0x000E, 0x000B, 0x0005, 0xFFFC, 0xFFF1, 0xFFE3, 0xFFD3, 0xFFC1,\n    0xFFAF, 0xFF9C, 0xFF88, 0xFF74, 0xFF60, 0xFF4D, 0xFF3B, 0xFF2B,\n    0xFF1B, 0xFF0E, 0xFF04, 0xFEFC, 0xFEF7, 0xFEF6, 0xFDEE, 0xFDEF,\n    0xFDF0, 0xFDF0, 0xFDF1, 0xFDF2, 0xFDF2, 0xFDF3, 0xFDF4, 0xFDF4,\n    0xFDF5, 0xFDF5, 0xFDF5, 0xFDF6, 0xFDF6, 0xFDF6, 0xFDF7, 0xFDF7,\n    0xFDF7, 0xFDF7, 0xFDF7, 0xFDF7, 0xFDF7, 0xFDF7, 0xFDF7, 0xFDF7,\n    0xFDF7, 0xFDF7, 0xFDF7, 0xFDF7, 0xFDF6, 0xFDF5, 0xFDF3, 0xFDF2,\n    0xFDF0, 0xFDEE, 0xFDED, 0xFDEB, 0xFDEA, 0xFDEA, 0xFDEA, 0xFDEB,\n    0xFDEC, 0xFDEF, 0xFDF2, 0xFDF7, 0xFE1A, 0xFE56, 0xFE7D, 0xFE5D,\n    0xFDF0, 0xFD57, 0xFCAB, 0xFC07, 0xFB85, 0xFB1C, 0xFAB9, 0xFA68,\n    0xFA35, 0xFA2B, 0xFA55, 0xFAAD, 0xFB24, 0xFBA7, 0xFC27, 0xFC93,\n    0xFCDB, 0xFCEE, 0xFCCB, 0xFC7F, 0xFC18, 0xFBA4, 0xFB31, 0xFACD,\n    0xFA85, 0xFA6A, 0xFA8F, 0xFAE3, 0xFB47, 0xFB9F, 0xFBCF, 0xFBC4,\n    0xFB90, 0xFB4D, 0xFB12, 0xFAF7, 0xFAF7, 0xFB05, 0xFB1A, 0xFB31,\n    0xFB42, 0xFB4A, 0xFB49, 0xFB43, 0xFB3A, 0xFB2F, 0xFB24, 0xFB19,\n    0xFB0B, 0xFAFB, 0xBEE4, 0xBEEF, 0xBEFC, 0xBF08, 0xBF15, 0xBF21,\n    0xBF2E, 0xBF3A, 0xBF45, 0xBF4F, 0xBF59, 0xBF61, 0xBF68, 0xBF6E,\n    0xBF71, 0xBF73, 0xBF72, 0xBF6F, 0xBF6A, 0xBF61, 0xBF56, 0xBF48,\n    0xBF36, 0xBF27, 0xBF1B, 0xBF11, 0xBF09, 0xBF04, 0xBF01, 0xBEFF,\n    0xBEFF, 0xBF01, 0xBF04, 0xBF07, 0xBF0C, 0xBF11, 0xBF17, 0xBF1D,\n    0xBF23, 0xBF29, 0xBF2E, 0xBF33, 0xBF37, 0xBF3B, 0xBF3D, 0xBF3E,\n    0xBF3E, 0xBF3E, 0xBF3E, 0xBF3E, 0xBF3E, 0xBF3D, 0xBF3D, 0xBF3D,\n    0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D, 0xBF3C, 0xBF3C, 0xBF3C, 0xBF3C,\n    0xBF3C, 0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D,\n    0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D,\n    0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D,\n    0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D,\n    0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D, 0xC066, 0x1B15,\n    0x1ACD, 0x1A85, 0x1A3E, 0x19F8, 0x19B4, 0x1972, 0x1932, 0x18F5,\n    0x18BC, 0x1886, 0x1854, 0x1828, 0x1800, 0x17F3, 0x1810, 0x1849,\n    0x1891, 0x18DB, 0x1919, 0x193F, 0x194F, 0x1957, 0x1958, 0x1954,\n    0x194E, 0x1947, 0x1941, 0x193F, 0x193F, 0x193F, 0x193F, 0x193F,\n    0x193F, 0x193F, 0x193F, 0x193F, 0x193F, 0x193F, 0x194F, 0x1975,\n    0x19A0, 0x19C1, 0x19C6, 0x19A0, 0x193F, 0x189A, 0x17C0, 0x16BE,\n    0x15A6, 0x1484, 0x136A, 0x1265, 0x1185, 0x10D9, 0x1070, 0x1033,\n    0x1000, 0x0FD7, 0x0FB7, 0x0FA0, 0x0F90, 0x0F87, 0x0F84, 0x0F87,\n    0x0F8E, 0x0F9A, 0x0FA9, 0x0FBB, 0x0FCF, 0x0FE4, 0x0FFA, 0x1010,\n    0x1025, 0x1039, 0x104B, 0x105A, 0x1066, 0x106D, 0x1070, 0x106C,\n    0x1063, 0x1055, 0x1044, 0x102F, 0x1019, 0x1002, 0x0FEB, 0x0FD6,\n    0x0FC4, 0x0FB4, 0x0FA9, 0x0FA4, 0x0FA5, 0x0FAE, 0x0FBF, 0x0FDA,\n    0x1000, 0x1032, 0x1070, 0xFF68, 0xFFA2, 0xFFDC, 0x0014, 0x004B,\n    0x0080, 0x00B3, 0x00E2, 0x010F, 0x0138, 0x015D, 0x017E, 0x0199,\n    0x01B0, 0x01C1, 0x01CE, 0x01D6, 0x01DB, 0x01DC, 0x01DA, 0x01D5,\n    0x01CD, 0x01C2, 0x01B6, 0x01A8, 0x0198, 0x0187, 0x0175, 0x0163,\n    0x0150, 0x013D, 0x012A, 0x0118, 0x0107, 0x00F7, 0x00E8, 0x00DC,\n    0x00D1, 0x00C8, 0x00D1, 0x00F0, 0x0116, 0x0134, 0x013B, 0x011C,\n    0x00C8, 0x0039, 0xFF7C, 0xFE9C, 0xFDA7, 0xFCAC, 0xFBB6, 0xFAD2,\n    0xFA0F, 0xF97A, 0xF91E, 0xF8E9, 0xF8BD, 0xF89A, 0xF87E, 0xF869,\n    0xF85C, 0xF854, 0xF851, 0xF853, 0xF85A, 0xF864, 0xF871, 0xF881,\n    0xF892, 0xF8A5, 0xF8B8, 0xF8CB, 0xF8DD, 0xF8EF, 0xF8FE, 0xF90B,\n    0xF916, 0xF91C, 0xF91E, 0xF91D, 0xF91A, 0xF916, 0xF910, 0xF909,\n    0xF902, 0xF8FA, 0xF8F3, 0xF8EC, 0xF8E6, 0xF8E1, 0xF8DD, 0xF8DC,\n    0xF8DC, 0xF8DF, 0xF8E5, 0xF8ED, 0xF8FA, 0xF90A, 0xF91E, 0xB0D1,\n    0xB081, 0xB032, 0xAFE5, 0xAF9A, 0xAF52, 0xAF0D, 0xAECD, 0xAE91,\n    0xAE5A, 0xAE29, 0xADFF, 0xADDC, 0xADC0, 0xADAA, 0xAD97, 0xAD87,\n    0xAD7A, 0xAD70, 0xAD68, 0xAD63, 0xAD60, 0xAD5F, 0xAD61, 0xAD65,\n    0xAD6B, 0xAD72, 0xAD7C, 0xAD88, 0xAD95, 0xADA3, 0xADB3, 0xADC5,\n    0xADD7, 0xADEB, 0xAE00, 0xAE16, 0xAE2C, 0xAE44, 0xAE5C, 0xAE74,\n    0xAE8D, 0xAEA7, 0xAEC0, 0xAEDA, 0xAEF4, 0xAF1C, 0xAF5E, 0xAFB2,\n    0xB013, 0xB07B, 0xB0E1, 0xB142, 0xB195, 0xB1D4, 0xB1FA, 0xB20F,\n    0xB220, 0xB22F, 0xB239, 0xB242, 0xB247, 0xB24A, 0xB24B, 0xB24A,\n    0xB248, 0xB244, 0xB23F, 0xB238, 0xB232, 0xB22A, 0xB223, 0xB21B,\n    0xB214, 0xB20D, 0xB207, 0xB202, 0xB1FE, 0xB1FB, 0xB1FA, 0xB1FB,\n    0xB1FE, 0xB202, 0xB207, 0xB20C, 0xB213, 0xB219, 0xB220, 0xB226,\n    0xB22B, 0xB22F, 0xB232, 0xB234, 0xB234, 0xB231, 0xB22C, 0xB224,\n    0xB21A, 0xB20C, 0xB1FA, 0xDB13, 0xDB1D, 0xDB27, 0xDB31, 0xDB3A,\n    0xDB44, 0xDB4D, 0xDB55, 0xDB5D, 0xDB65, 0xDB6C, 0xDB73, 0xDB79,\n    0xDB7E, 0xDB80, 0xDB7B, 0xDB72, 0xDB67, 0xDB5C, 0xDB52, 0xDB4C,\n    0xDB4A, 0xDB49, 0xDB48, 0xDB49, 0xDB4A, 0xDB4B, 0xDB4C, 0xDB4C,\n    0xDB24, 0xDABC, 0xDA30, 0xD99B, 0xD918, 0xD8C3, 0xD8B5, 0xD90B,\n    0xD9DF, 0xDB4C, 0xDE0C, 0xE258, 0xE793, 0xED1A, 0xF250, 0xF692,\n    0xF943, 0xFA9B, 0xFB52, 0xFB86, 0xFB53, 0xFAD7, 0xFA2F, 0xF978,\n    0xF8CE, 0xF850, 0xF819, 0xF811, 0xF80B, 0xF805, 0xF801, 0xF7FE,\n    0xF7FC, 0xF7FB, 0xF7FA, 0xF7FB, 0xF7FC, 0xF7FD, 0xF7FF, 0xF801,\n    0xF804, 0xF807, 0xF80A, 0xF80D, 0xF80F, 0xF812, 0xF814, 0xF816,\n    0xF818, 0xF819, 0xF819, 0xF81E, 0xF82B, 0xF83F, 0xF858, 0xF875,\n    0xF894, 0xF8B5, 0xF8D5, 0xF8F3, 0xF90D, 0xF923, 0xF932, 0xF93A,\n    0xF938, 0xF92C, 0xF913, 0xF8ED, 0xF8B7, 0xF871, 0xF819, 0x069E,\n    0x06F2, 0x0745, 0x0798, 0x07E9, 0x0838, 0x0885, 0x08CF, 0x0916,\n    0x0959, 0x0997, 0x09D1, 0x0A05, 0x0A34, 0x0A42, 0x0A21, 0x09E0,\n    0x098E, 0x0939, 0x08F1, 0x08C6, 0x08B3, 0x08AA, 0x08A9, 0x08AD,\n    0x08B5, 0x08BD, 0x08C3, 0x08C6, 0x08C8, 0x08CD, 0x08D4, 0x08DC,\n    0x08E3, 0x08E7, 0x08E8, 0x08E3, 0x08D8, 0x08C6, 0x089A, 0x0850,\n    0x07F8, 0x07A0, 0x075A, 0x0734, 0x073F, 0x077A, 0x07D8, 0x084E,\n    0x08D4, 0x0962, 0x09F0, 0x0A73, 0x0AE5, 0x0B3C, 0x0B70, 0x0B8D,\n    0x0BA6, 0x0BB9, 0x0BC8, 0x0BD3, 0x0BDB, 0x0BDF, 0x0BE1, 0x0BDF,\n    0x0BDC, 0x0BD6, 0x0BCF, 0x0BC7, 0x0BBD, 0x0BB3, 0x0BA9, 0x0B9E,\n    0x0B94, 0x0B8B, 0x0B82, 0x0B7B, 0x0B75, 0x0B72, 0x0B70, 0x0B72,\n    0x0B78, 0x0B80, 0x0B8A, 0x0B95, 0x0BA2, 0x0BAF, 0x0BBC, 0x0BC8,\n    0x0BD3, 0x0BDB, 0x0BE2, 0x0BE5, 0x0BE4, 0x0BDF, 0x0BD5, 0x0BC6,\n    0x0BB0, 0x0B94, 0x0B70, 0xB624, 0xB663, 0xB6A3, 0xB6E2, 0xB720,\n    0xB75C, 0xB796, 0xB7CE, 0xB804, 0xB837, 0xB866, 0xB891, 0xB8B9,\n    0xB8DB, 0xB8E5, 0xB8C9, 0xB893, 0xB850, 0xB80B, 0xB7D1, 0xB7AD,\n    0xB79E, 0xB797, 0xB796, 0xB799, 0xB79F, 0xB7A6, 0xB7AB, 0xB7AD,\n    0xB7A5, 0xB78E, 0xB76F, 0xB74E, 0xB731, 0xB71E, 0xB71B, 0xB72E,\n    0xB75D, 0xB7AD, 0xB855, 0xB964, 0xBAAC, 0xBBFC, 0xBD27, 0xBDFC,\n    0xBE4D, 0xBE20, 0xBDA8, 0xBCF7, 0xBC1E, 0xBB2E, 0xBA39, 0xB951,\n    0xB887, 0xB7ED, 0xB794, 0xB765, 0xB73F, 0xB720, 0xB707, 0xB6F5,\n    0xB6E9, 0xB6E2, 0xB6E0, 0xB6E2, 0xB6E8, 0xB6F1, 0xB6FC, 0xB70A,\n    0xB719, 0xB729, 0xB73A, 0xB74B, 0xB75B, 0xB76A, 0xB778, 0xB783,\n    0xB78C, 0xB792, 0xB794, 0xB795, 0xB797, 0xB79B, 0xB7A0, 0xB7A6,\n    0xB7AC, 0xB7B2, 0xB7B8, 0xB7BE, 0xB7C3, 0xB7C8, 0xB7CB, 0xB7CC,\n    0xB7CC, 0xB7C9, 0xB7C4, 0xB7BD, 0xB7B3, 0xB7A5, 0xB794, 0xE0FF,\n    0xC001, 0xE0FB, 0xBF7F, 0xFE5D, 0xFE83, 0xFEAB, 0xFED2, 0xFEFA,\n    0xFF23, 0xFF4B, 0xFF73, 0xFF9C, 0xFFC3, 0xFFEB, 0x0010, 0x0036,\n    0x005B, 0x007F, 0x00A2, 0x00C3, 0x00E3, 0x0101, 0x011E, 0x0138,\n    0x014C, 0x0155, 0x0156, 0x0152, 0x014A, 0x0142, 0x013B, 0x0138,\n    0x0138, 0x0139, 0x0139, 0x0139, 0x0139, 0x0139, 0x0139, 0x013A,\n    0x013A, 0x013A, 0x013A, 0x013A, 0x013A, 0x013A, 0x0139, 0x0139,\n    0x0138, 0x0137, 0x0135, 0x0132, 0x012F, 0x012D, 0x012B, 0x012A,\n    0x0129, 0x0129, 0x0128, 0x0128, 0x0127, 0x0127, 0x0127, 0x0127,\n    0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126,\n    0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126,\n    0x0126, 0x0126, 0x0125, 0x012A, 0x0138, 0x014C, 0x0167, 0x0185,\n    0x01A6, 0x01C8, 0x01E9, 0x0208, 0x0224, 0x023B, 0x024B, 0x0253,\n    0x0251, 0x0244, 0x022B, 0x0203, 0x01CB, 0x0182, 0x0125, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0003, 0x0005,\n    0x0007, 0x0009, 0x000B, 0x000D, 0x000E, 0x0010, 0x0011, 0x0011,\n    0x0011, 0x0010, 0x000F, 0x000C, 0x0009, 0x0001, 0xFFF2, 0xFFDF,\n    0xFFCB, 0xFFB8, 0xFFA9, 0xFFA1, 0xFF9E, 0xFF9B, 0xFF99, 0xFF97,\n    0xFF95, 0xFF93, 0xFF92, 0xFF91, 0xFF91, 0xFF90, 0xFF90, 0xFF90,\n    0xFF90, 0xFF91, 0xFF91, 0xFF91, 0xFF92, 0xFF92, 0xFF93, 0xFF94,\n    0xFF94, 0xFF95, 0xFF95, 0xFF95, 0xFF95, 0xFF95, 0xFF95, 0xFF96,\n    0xFF97, 0xFF99, 0xFF9C, 0xFFA0, 0xFFA4, 0xFFA8, 0xFFAC, 0xFFB0,\n    0xFFB3, 0xFFB6, 0xFFB8, 0xFFB9, 0xFFB9, 0xFFB8, 0xFFB5, 0xFFB0,\n    0xFFA9, 0xFFA0, 0xFF95, 0xFD26, 0xFD26, 0xFD26, 0xFD26, 0xFD26,\n    0xFD26, 0xFD26, 0xFD26, 0xFD26, 0xFD26, 0xFD26, 0xFD26, 0xFD26,\n    0xFD26, 0xFD26, 0xFD26, 0xFD26, 0xFD26, 0xFD26, 0xFD26, 0xFD26,\n    0xFD28, 0xFD2B, 0xFD2F, 0xFD33, 0xFD35, 0xFD35, 0xFD30, 0xFD26,\n    0xFD11, 0xFCEB, 0xFCB8, 0xFC7C, 0xFC3A, 0xFBF5, 0xFBB0, 0xFB6F,\n    0xFB35, 0xFB06, 0xFAE4, 0xFAD2, 0xFAD5, 0xFAF0, 0xFB25, 0xFB79,\n    0xFBEE, 0xFD0E, 0xFF1E, 0x01B8, 0x047B, 0x0701, 0x08E6, 0x09C5,\n    0x09FE, 0x0A31, 0x0A5F, 0x0A89, 0x0AAE, 0x0AD0, 0x0AED, 0x0B06,\n    0x0B1D, 0x0B2F, 0x0B3F, 0x0B4C, 0x0B57, 0x0B5F, 0x0B66, 0x0B6A,\n    0x0B6D, 0x0B6F, 0x0B6F, 0x0B6F, 0x0B6D, 0x0B6C, 0x0B6A, 0x0B69,\n    0x0B67, 0x0B66, 0x0B66, 0x0B67, 0x0B68, 0x0B68, 0x0B68, 0x0B66,\n    0x0B63, 0x0B5F, 0x0B58, 0x0B4F, 0x0B43, 0x0B34, 0x0B22, 0x0B0B,\n    0x0AF1, 0x0AD1, 0x0AAD, 0x0A83, 0x0A54, 0x0A1F, 0x09E3, 0xBF84,\n    0xFC31, 0xFDE0, 0xFF91, 0x0143, 0x02F6, 0x04A7, 0x0655, 0x07FF,\n    0x09A2, 0x0B3E, 0x0CD1, 0x0E59, 0x0FD5, 0x1144, 0x1274, 0x1342,\n    0x13C4, 0x140D, 0x1438, 0x145A, 0x1474, 0x1487, 0x1492, 0x1496,\n    0x1492, 0x1487, 0x1474, 0x1459, 0x1437, 0x1406, 0x136E, 0x1274,\n    0x1144, 0x0FFA, 0x0E98, 0x0D24, 0x0BA4, 0x0A1F, 0x089A, 0x071B,\n    0x05A9, 0x0449, 0x0302, 0x01DA, 0x00D7, 0x0000, 0xFF65, 0xFF0A,\n    0xFEE6, 0xFEEC, 0xFF10, 0xFF48, 0xFF87, 0xFFC3, 0xFFEF, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0009, 0x0025, 0x004F, 0x0084, 0x00C1, 0x0104, 0x0149, 0x018D,\n    0x01CC, 0x0205, 0x0233, 0x0253, 0x0263, 0x0260, 0x0245, 0x0211,\n    0x01C0, 0x014F, 0x00BA, 0x0000, 0x0071, 0x007D, 0x0088, 0x0094,\n    0x009F, 0x00AA, 0x00B6, 0x00C1, 0x00CC, 0x00D6, 0x00E0, 0x00EA,\n    0x00F4, 0x00FD, 0x0105, 0x010B, 0x010F, 0x0112, 0x0115, 0x0116,\n    0x0118, 0x011A, 0x011B, 0x011C, 0x011C, 0x011C, 0x011B, 0x011A,\n    0x0118, 0x0116, 0x0112, 0x010A, 0x00FD, 0x00EC, 0x00D8, 0x00C3,\n    0x00AE, 0x0097, 0x0081, 0x006A, 0x0055, 0x0040, 0x002D, 0x001B,\n    0x000C, 0x0000, 0xFFF8, 0xFFF2, 0xFFF0, 0xFFF1, 0xFFF3, 0xFFF6,\n    0xFFFA, 0xFFFD, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0007, 0x000F, 0x001A,\n    0x0027, 0x0034, 0x0042, 0x0050, 0x005D, 0x0068, 0x0071, 0x0078,\n    0x007B, 0x007A, 0x0075, 0x006B, 0x005A, 0x0043, 0x0025, 0x0000,\n    0xFE69, 0xFE52, 0xFE3A, 0xFE21, 0xFE09, 0xFDEF, 0xFDD6, 0xFDBC,\n    0xFDA3, 0xFD88, 0xFD6E, 0xFD54, 0xFD39, 0xFD1F, 0xFCFE, 0xFCD4,\n    0xFCA4, 0xFC73, 0xFC46, 0xFC20, 0xFC06, 0xFBF5, 0xFBE8, 0xFBDF,\n    0xFBDC, 0xFBDD, 0xFBE4, 0xFBF2, 0xFC06, 0xFC11, 0xFC24, 0xFC6E,\n    0xFD1F, 0xFE31, 0xFF75, 0x00DF, 0x0263, 0x03F4, 0x0585, 0x0708,\n    0x0871, 0x09B4, 0x0AC2, 0x0B91, 0x0C12, 0x0C39, 0x0B58, 0x0923,\n    0x061E, 0x02CE, 0xFFB7, 0xFD5C, 0xFC3E, 0xFBC8, 0xFB61, 0xFB0A,\n    0xFAC0, 0xFA84, 0xFA54, 0xFA2F, 0xFA15, 0xFA05, 0xF9FD, 0xF9FC,\n    0xFA03, 0xFA0F, 0xFA20, 0xFA35, 0xFA4E, 0xFA68, 0xFA84, 0xFAA0,\n    0xFABB, 0xFAD5, 0xFAED, 0xFB01, 0xFB10, 0xFB1B, 0xFB1F, 0xFB1D,\n    0xFB1B, 0xFB20, 0xFB2D, 0xFB3E, 0xFB54, 0xFB6C, 0xFB85, 0xFB9F,\n    0xFBB8, 0xFBCF, 0xFBE2, 0xFBF0, 0xFBF8, 0xFBF9, 0xFBF1, 0xFBE0,\n    0xFBC3, 0xFB9A, 0xFB63, 0xFB1D, 0xFC31, 0xFDE0, 0xFF91, 0x0143,\n    0x02F6, 0x04A7, 0x0655, 0x07FF, 0x09A2, 0x0B3E, 0x0CD1, 0x0E59,\n    0x0FD5, 0x1144, 0x1274, 0x1342, 0x13C4, 0x140D, 0x1438, 0x145A,\n    0x1474, 0x1487, 0x1492, 0x1496, 0x1492, 0x1487, 0x1474, 0x1459,\n    0x1437, 0x1406, 0x136E, 0x1274, 0x1144, 0x0FFA, 0x0E98, 0x0D24,\n    0x0BA4, 0x0A1F, 0x089A, 0x071B, 0x05A9, 0x0449, 0x0302, 0x01DA,\n    0x00D7, 0x0000, 0xFF65, 0xFF0A, 0xFEE6, 0xFEEC, 0xFF10, 0xFF48,\n    0xFF87, 0xFFC3, 0xFFEF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0025, 0x004F, 0x0084,\n    0x00C1, 0x0104, 0x0149, 0x018D, 0x01CC, 0x0205, 0x0233, 0x0253,\n    0x0263, 0x0260, 0x0245, 0x0211, 0x01C0, 0x014F, 0x00BA, 0x0000,\n    0x0071, 0x007D, 0x0088, 0x0094, 0x009F, 0x00AA, 0x00B6, 0x00C1,\n    0x00CC, 0x00D6, 0x00E0, 0x00EA, 0x00F4, 0x00FD, 0x0105, 0x010B,\n    0x010F, 0x0112, 0x0115, 0x0116, 0x0118, 0x011A, 0x011B, 0x011C,\n    0x011C, 0x011C, 0x011B, 0x011A, 0x0118, 0x0116, 0x0112, 0x010A,\n    0x00FD, 0x00EC, 0x00D8, 0x00C3, 0x00AE, 0x0097, 0x0081, 0x006A,\n    0x0055, 0x0040, 0x002D, 0x001B, 0x000C, 0x0000, 0xFFF8, 0xFFF2,\n    0xFFF0, 0xFFF1, 0xFFF3, 0xFFF6, 0xFFFA, 0xFFFD, 0xFFFF, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0001, 0x0007, 0x000F, 0x001A, 0x0027, 0x0034, 0x0042, 0x0050,\n    0x005D, 0x0068, 0x0071, 0x0078, 0x007B, 0x007A, 0x0075, 0x006B,\n    0x005A, 0x0043, 0x0025, 0x0000, 0xFE69, 0xFE52, 0xFE3A, 0xFE21,\n    0xFE09, 0xFDEF, 0xFDD6, 0xFDBC, 0xFDA3, 0xFD88, 0xFD6E, 0xFD54,\n    0xFD39, 0xFD1F, 0xFCFE, 0xFCD4, 0xFCA4, 0xFC73, 0xFC46, 0xFC20,\n    0xFC06, 0xFBF5, 0xFBE8, 0xFBDF, 0xFBDC, 0xFBDD, 0xFBE4, 0xFBF2,\n    0xFC06, 0xFC11, 0xFC24, 0xFC6E, 0xFD1F, 0xFE31, 0xFF75, 0x00DF,\n    0x0263, 0x03F4, 0x0585, 0x0708, 0x0871, 0x09B4, 0x0AC2, 0x0B91,\n    0x0C12, 0x0C39, 0x0B58, 0x0923, 0x061E, 0x02CE, 0xFFB7, 0xFD5C,\n    0xFC3E, 0xFBC8, 0xFB61, 0xFB0A, 0xFAC0, 0xFA84, 0xFA54, 0xFA2F,\n    0xFA15, 0xFA05, 0xF9FD, 0xF9FC, 0xFA03, 0xFA0F, 0xFA20, 0xFA35,\n    0xFA4E, 0xFA68, 0xFA84, 0xFAA0, 0xFABB, 0xFAD5, 0xFAED, 0xFB01,\n    0xFB10, 0xFB1B, 0xFB1F, 0xFB1D, 0xFB1B, 0xFB20, 0xFB2D, 0xFB3E,\n    0xFB54, 0xFB6C, 0xFB85, 0xFB9F, 0xFBB8, 0xFBCF, 0xFBE2, 0xFBF0,\n    0xFBF8, 0xFBF9, 0xFBF1, 0xFBE0, 0xFBC3, 0xFB9A, 0xFB63, 0xFB1D,\n    0xFC31, 0xFDE0, 0xFF91, 0x0143, 0x02F6, 0x04A7, 0x0655, 0x07FF,\n    0x09A2, 0x0B3E, 0x0CD1, 0x0E59, 0x0FD5, 0x1144, 0x1274, 0x1342,\n    0x13C4, 0x140D, 0x1438, 0x145A, 0x1474, 0x1487, 0x1492, 0x1496,\n    0x1492, 0x1487, 0x1474, 0x1459, 0x1437, 0x1406, 0x136E, 0x1274,\n    0x1144, 0x0FFA, 0x0E98, 0x0D24, 0x0BA4, 0x0A1F, 0x089A, 0x071B,\n    0x05A9, 0x0449, 0x0302, 0x01DA, 0x00D7, 0x0000, 0xFF65, 0xFF0A,\n    0xFEE6, 0xFEEC, 0xFF10, 0xFF48, 0xFF87, 0xFFC3, 0xFFEF, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0009, 0x0025, 0x004F, 0x0084, 0x00C1, 0x0104, 0x0149, 0x018D,\n    0x01CC, 0x0205, 0x0233, 0x0253, 0x0263, 0x0260, 0x0245, 0x0211,\n    0x01C0, 0x014F, 0x00BA, 0x0000, 0x0071, 0x007D, 0x0088, 0x0094,\n    0x009F, 0x00AA, 0x00B6, 0x00C1, 0x00CC, 0x00D6, 0x00E0, 0x00EA,\n    0x00F4, 0x00FD, 0x0105, 0x010B, 0x010F, 0x0112, 0x0115, 0x0116,\n    0x0118, 0x011A, 0x011B, 0x011C, 0x011C, 0x011C, 0x011B, 0x011A,\n    0x0118, 0x0116, 0x0112, 0x010A, 0x00FD, 0x00EC, 0x00D8, 0x00C3,\n    0x00AE, 0x0097, 0x0081, 0x006A, 0x0055, 0x0040, 0x002D, 0x001B,\n    0x000C, 0x0000, 0xFFF8, 0xFFF2, 0xFFF0, 0xFFF1, 0xFFF3, 0xFFF6,\n    0xFFFA, 0xFFFD, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0007, 0x000F, 0x001A,\n    0x0027, 0x0034, 0x0042, 0x0050, 0x005D, 0x0068, 0x0071, 0x0078,\n    0x007B, 0x007A, 0x0075, 0x006B, 0x005A, 0x0043, 0x0025, 0x0000,\n    0xFE69, 0xFE52, 0xFE3A, 0xFE21, 0xFE09, 0xFDEF, 0xFDD6, 0xFDBC,\n    0xFDA3, 0xFD88, 0xFD6E, 0xFD54, 0xFD39, 0xFD1F, 0xFCFE, 0xFCD4,\n    0xFCA4, 0xFC73, 0xFC46, 0xFC20, 0xFC06, 0xFBF5, 0xFBE8, 0xFBDF,\n    0xFBDC, 0xFBDD, 0xFBE4, 0xFBF2, 0xFC06, 0xFC11, 0xFC24, 0xFC6E,\n    0xFD1F, 0xFE31, 0xFF75, 0x00DF, 0x0263, 0x03F4, 0x0585, 0x0708,\n    0x0871, 0x09B4, 0x0AC2, 0x0B91, 0x0C12, 0x0C39, 0x0B58, 0x0923,\n    0x061E, 0x02CE, 0xFFB7, 0xFD5C, 0xFC3E, 0xFBC8, 0xFB61, 0xFB0A,\n    0xFAC0, 0xFA84, 0xFA54, 0xFA2F, 0xFA15, 0xFA05, 0xF9FD, 0xF9FC,\n    0xFA03, 0xFA0F, 0xFA20, 0xFA35, 0xFA4E, 0xFA68, 0xFA84, 0xFAA0,\n    0xFABB, 0xFAD5, 0xFAED, 0xFB01, 0xFB10, 0xFB1B, 0xFB1F, 0xFB1D,\n    0xFB1B, 0xFB20, 0xFB2D, 0xFB3E, 0xFB54, 0xFB6C, 0xFB85, 0xFB9F,\n    0xFBB8, 0xFBCF, 0xFBE2, 0xFBF0, 0xFBF8, 0xFBF9, 0xFBF1, 0xFBE0,\n    0xFBC3, 0xFB9A, 0xFB63, 0xFB1D, 0xFE5D, 0xFE83, 0xFEAB, 0xFED2,\n    0xFEFA, 0xFF23, 0xFF4B, 0xFF73, 0xFF9C, 0xFFC3, 0xFFEB, 0x0010,\n    0x0036, 0x005B, 0x007F, 0x00A2, 0x00C3, 0x00E3, 0x0101, 0x011E,\n    0x0138, 0x014C, 0x0155, 0x0156, 0x0152, 0x014A, 0x0142, 0x013B,\n    0x0138, 0x0138, 0x0139, 0x0139, 0x0139, 0x0139, 0x0139, 0x0139,\n    0x013A, 0x013A, 0x013A, 0x013A, 0x013A, 0x013A, 0x013A, 0x0139,\n    0x0139, 0x0138, 0x0137, 0x0135, 0x0132, 0x012F, 0x012D, 0x012B,\n    0x012A, 0x0129, 0x0129, 0x0128, 0x0128, 0x0127, 0x0127, 0x0127,\n    0x0127, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126,\n    0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126, 0x0126,\n    0x0126, 0x0126, 0x0126, 0x0125, 0x012A, 0x0138, 0x014C, 0x0167,\n    0x0185, 0x01A6, 0x01C8, 0x01E9, 0x0208, 0x0224, 0x023B, 0x024B,\n    0x0253, 0x0251, 0x0244, 0x022B, 0x0203, 0x01CB, 0x0182, 0x0125,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0003,\n    0x0005, 0x0007, 0x0009, 0x000B, 0x000D, 0x000E, 0x0010, 0x0011,\n    0x0011, 0x0011, 0x0010, 0x000F, 0x000C, 0x0009, 0x0001, 0xFFF2,\n    0xFFDF, 0xFFCB, 0xFFB8, 0xFFA9, 0xFFA1, 0xFF9E, 0xFF9B, 0xFF99,\n    0xFF97, 0xFF95, 0xFF93, 0xFF92, 0xFF91, 0xFF91, 0xFF90, 0xFF90,\n    0xFF90, 0xFF90, 0xFF91, 0xFF91, 0xFF91, 0xFF92, 0xFF92, 0xFF93,\n    0xFF94, 0xFF94, 0xFF95, 0xFF95, 0xFF95, 0xFF95, 0xFF95, 0xFF95,\n    0xFF96, 0xFF97, 0xFF99, 0xFF9C, 0xFFA0, 0xFFA4, 0xFFA8, 0xFFAC,\n    0xFFB0, 0xFFB3, 0xFFB6, 0xFFB8, 0xFFB9, 0xFFB9, 0xFFB8, 0xFFB5,\n    0xFFB0, 0xFFA9, 0xFFA0, 0xFF95, 0xFD26, 0xFD26, 0xFD26, 0xFD26,\n    0xFD26, 0xFD26, 0xFD26, 0xFD26, 0xFD26, 0xFD26, 0xFD26, 0xFD26,\n    0xFD26, 0xFD26, 0xFD26, 0xFD26, 0xFD26, 0xFD26, 0xFD26, 0xFD26,\n    0xFD26, 0xFD28, 0xFD2B, 0xFD2F, 0xFD33, 0xFD35, 0xFD35, 0xFD30,\n    0xFD26, 0xFD11, 0xFCEB, 0xFCB8, 0xFC7C, 0xFC3A, 0xFBF5, 0xFBB0,\n    0xFB6F, 0xFB35, 0xFB06, 0xFAE4, 0xFAD2, 0xFAD5, 0xFAF0, 0xFB25,\n    0xFB79, 0xFBEE, 0xFD0E, 0xFF1E, 0x01B8, 0x047B, 0x0701, 0x08E6,\n    0x09C5, 0x09FE, 0x0A31, 0x0A5F, 0x0A89, 0x0AAE, 0x0AD0, 0x0AED,\n    0x0B06, 0x0B1D, 0x0B2F, 0x0B3F, 0x0B4C, 0x0B57, 0x0B5F, 0x0B66,\n    0x0B6A, 0x0B6D, 0x0B6F, 0x0B6F, 0x0B6F, 0x0B6D, 0x0B6C, 0x0B6A,\n    0x0B69, 0x0B67, 0x0B66, 0x0B66, 0x0B67, 0x0B68, 0x0B68, 0x0B68,\n    0x0B66, 0x0B63, 0x0B5F, 0x0B58, 0x0B4F, 0x0B43, 0x0B34, 0x0B22,\n    0x0B0B, 0x0AF1, 0x0AD1, 0x0AAD, 0x0A83, 0x0A54, 0x0A1F, 0x09E3,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0002, 0x0005, 0x0009, 0x000D, 0x0012, 0x0017, 0x001C,\n    0x0021, 0x0025, 0x0028, 0x002A, 0x002C, 0x002B, 0x0029, 0x0026,\n    0x0020, 0x0018, 0x000D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,\n    0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFD, 0x3FF6, 0x3FEC,\n    0x3FE0, 0x3FD2, 0x3FC3, 0x3FB5, 0x3FA8, 0x3F9E, 0x3F96, 0x3F92,\n    0x3F93, 0x3F99, 0x3FA7, 0x3FBB, 0x3FD8, 0x3FFF, 0x4055, 0x40EE,\n    0x41AE, 0x4279, 0x4336, 0x43C7, 0x4412, 0x442E, 0x4447, 0x445B,\n    0x446B, 0x4478, 0x4481, 0x4488, 0x448C, 0x448D, 0x448C, 0x4488,\n    0x4484, 0x447D, 0x4476, 0x446D, 0x4463, 0x445A, 0x444F, 0x4445,\n    0x443B, 0x4432, 0x4429, 0x4421, 0x441B, 0x4416, 0x4413, 0x4412,\n    0x4413, 0x4414, 0x4417, 0x441A, 0x441D, 0x4421, 0x4425, 0x4429,\n    0x442C, 0x4430, 0x4432, 0x4434, 0x4435, 0x4435, 0x4433, 0x4430,\n    0x442C, 0x4425, 0x441D, 0x4412,\n};\n\n// 0x05015360\nstatic const u16 peach_seg5_animindex_5015360[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0003, 0x0001, 0x0004, 0x0001, 0x0005,\n    0x0064, 0x10D8, 0x0064, 0x113C, 0x0064, 0x11A0,\n    0x0064, 0x0FAC, 0x0064, 0x1010, 0x0064, 0x1074,\n    0x0064, 0x0E80, 0x0064, 0x0EE4, 0x0064, 0x0F48,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x089E,\n    0x0064, 0x0006, 0x0064, 0x006A, 0x0064, 0x00CE,\n    0x0064, 0x0D54, 0x0064, 0x0DB8, 0x0064, 0x0E1C,\n    0x0064, 0x0C28, 0x0064, 0x0C8C, 0x0064, 0x0CF0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0C27,\n    0x0064, 0x089F, 0x0064, 0x0903, 0x0064, 0x0967,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0064, 0x025E,\n    0x0064, 0x0132, 0x0064, 0x0196, 0x0064, 0x01FA,\n    0x0064, 0x02C2, 0x0064, 0x0326, 0x0064, 0x038A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0AFA,\n    0x0064, 0x09CB, 0x0064, 0x0A2F, 0x0064, 0x0A93,\n    0x0064, 0x051A, 0x0064, 0x057E, 0x0064, 0x05E2,\n    0x0064, 0x03EE, 0x0064, 0x0452, 0x0064, 0x04B6,\n    0x0064, 0x0646, 0x0064, 0x06AA, 0x0064, 0x070E,\n    0x0064, 0x0AFB, 0x0064, 0x0B5F, 0x0064, 0x0BC3,\n    0x0001, 0x0AF7, 0x0001, 0x0AF8, 0x0001, 0x0AF9,\n    0x0064, 0x0772, 0x0064, 0x07D6, 0x0064, 0x083A,\n};\n\n// 0x05015468\nstatic const struct Animation peach_seg5_anim_05015468 = {\n    1,\n    0,\n    0,\n    0,\n    0x64,\n    ANIMINDEX_NUMPARTS(peach_seg5_animindex_5015360),\n    peach_seg5_animvalue_05012F58,\n    peach_seg5_animindex_5015360,\n    0,\n};\n"
  },
  {
    "path": "actors/peach/anims/anim_05016798.inc.c",
    "content": "// 0x05015480\nstatic const s16 peach_seg5_animvalue_05015480[] = {\n    0x0000, 0x015E, 0xFFDB, 0xC50F, 0x3FFA, 0xC50F, 0xFDCE, 0xFD04,\n    0xFC07, 0xFAE3, 0xF9A0, 0xF849, 0xF6E9, 0xF589, 0xF434, 0xF2F4,\n    0xF1D3, 0xF0DB, 0xEFFF, 0xEF2C, 0xEE60, 0xED9A, 0xECDB, 0xEC20,\n    0xEB6A, 0xEAB8, 0xEA08, 0xE95B, 0xE8AF, 0xE803, 0xE757, 0xE6AB,\n    0xE5FD, 0xE54C, 0xE498, 0xE3E1, 0xE325, 0xE263, 0xE18D, 0xE09C,\n    0xDF9A, 0xDE93, 0xDD91, 0xDC9F, 0xDBC8, 0xDB17, 0xDA97, 0xDA42,\n    0xDA08, 0xD9E4, 0xD9D2, 0xD9CD, 0xD9D2, 0xD9DA, 0xD9E2, 0xD9E6,\n    0x049C, 0x059B, 0x06DA, 0x084A, 0x09E0, 0x0B8C, 0x0D42, 0x0EF3,\n    0x1093, 0x1213, 0x1367, 0x1481, 0x1552, 0x15EE, 0x1672, 0x16DF,\n    0x1738, 0x177F, 0x17B7, 0x17E2, 0x1801, 0x1818, 0x1828, 0x1834,\n    0x183F, 0x1849, 0x1856, 0x1868, 0x1880, 0x18A2, 0x18D0, 0x190C,\n    0x195A, 0x19BB, 0x1A2A, 0x1AA0, 0x1B19, 0x1B90, 0x1BFD, 0x1C5E,\n    0x1CAA, 0x1CE8, 0x1D1C, 0x1D47, 0x1D6A, 0x1D86, 0x1D9B, 0x1DA9,\n    0x1DB1, 0x1DB3, 0xC8E3, 0xCA17, 0xCB9B, 0xCD5D, 0xCF49, 0xD14C,\n    0xD355, 0xD550, 0xD729, 0xD8CF, 0xDA2F, 0xDB35, 0xDC02, 0xDCC4,\n    0xDD7A, 0xDE24, 0xDEC3, 0xDF56, 0xDFDD, 0xE058, 0xE0C8, 0xE12B,\n    0xE183, 0xE1CE, 0xE20E, 0xE241, 0xE268, 0xE283, 0xE292, 0xE294,\n    0xE28B, 0xE275, 0xE248, 0xE201, 0xE1A7, 0xE142, 0xE0DB, 0xE07A,\n    0xE028, 0xDFEC, 0xDFCE, 0xDFCA, 0xDFDC, 0xDFFC, 0xE026, 0xE054,\n    0xE081, 0xE0A7, 0xE0C3, 0xE0CD, 0xF8E4, 0xF8E7, 0xF8E9, 0xF8EC,\n    0xF8EF, 0xF8F2, 0xF8F5, 0xF8F9, 0xF8FC, 0xF900, 0xF904, 0xF907,\n    0xF90B, 0xF90F, 0xF913, 0xF917, 0xF91B, 0xF91F, 0xF924, 0xF928,\n    0xF92C, 0xF930, 0xF934, 0xF938, 0xF93C, 0xF940, 0xF944, 0xF948,\n    0xF94C, 0xF950, 0xF954, 0xF957, 0xF95B, 0xF95E, 0xF961, 0xF964,\n    0xF967, 0xF96A, 0xF96D, 0xF96F, 0xF971, 0xF973, 0xF975, 0xF977,\n    0xF978, 0xF979, 0xF97A, 0xF97B, 0xF97B, 0xF97B, 0xE934, 0xE950,\n    0xE96E, 0xE98E, 0xE9B0, 0xE9D3, 0xE9F8, 0xEA1F, 0xEA46, 0xEA6F,\n    0xEA99, 0xEAC5, 0xEAF1, 0xEB1D, 0xEB4B, 0xEB79, 0xEBA7, 0xEBD6,\n    0xEC06, 0xEC35, 0xEC64, 0xEC94, 0xECC3, 0xECF2, 0xED20, 0xED4E,\n    0xED7B, 0xEDA8, 0xEDD4, 0xEDFF, 0xEE28, 0xEE51, 0xEE78, 0xEE9F,\n    0xEEC3, 0xEEE6, 0xEF07, 0xEF27, 0xEF45, 0xEF60, 0xEF7A, 0xEF91,\n    0xEFA6, 0xEFB8, 0xEFC8, 0xEFD6, 0xEFE0, 0xEFE8, 0xEFED, 0xEFEE,\n    0xD9BC, 0xD9B7, 0xD9B1, 0xD9AB, 0xD9A5, 0xD99E, 0xD997, 0xD990,\n    0xD988, 0xD980, 0xD978, 0xD970, 0xD968, 0xD95F, 0xD957, 0xD94E,\n    0xD945, 0xD93C, 0xD933, 0xD92A, 0xD921, 0xD918, 0xD90F, 0xD906,\n    0xD8FD, 0xD8F5, 0xD8EC, 0xD8E4, 0xD8DB, 0xD8D3, 0xD8CB, 0xD8C3,\n    0xD8BC, 0xD8B5, 0xD8AE, 0xD8A7, 0xD8A1, 0xD89B, 0xD895, 0xD890,\n    0xD88B, 0xD887, 0xD883, 0xD87F, 0xD87C, 0xD879, 0xD877, 0xD876,\n    0xD875, 0xD875, 0xD546, 0xD4ED, 0xD48E, 0xD428, 0xD3BE, 0xD34E,\n    0xD2D9, 0xD25F, 0xD1E1, 0xD160, 0xD0DB, 0xD052, 0xCFC7, 0xCF3A,\n    0xCEAA, 0xCE18, 0xCD85, 0xCCF0, 0xCC5B, 0xCBC6, 0xCB30, 0xCA9A,\n    0xCA06, 0xC971, 0xC8DF, 0xC84D, 0xC7BE, 0xC731, 0xC6A7, 0xC61F,\n    0xC59B, 0xC51A, 0xC49E, 0xC425, 0xC3B2, 0xC343, 0xC2D9, 0xC276,\n    0xC218, 0xC1C1, 0xC170, 0xC127, 0xC0E4, 0xC0AA, 0xC077, 0xC04D,\n    0xC02C, 0xC014, 0xC005, 0xC000, 0x10B8, 0x1105, 0x1158, 0x11B1,\n    0x120E, 0x126F, 0x12D5, 0x133F, 0x13AD, 0x141E, 0x1492, 0x1509,\n    0x1582, 0x15FE, 0x167B, 0x16FA, 0x177B, 0x17FC, 0x187E, 0x1901,\n    0x1983, 0x1A06, 0x1A88, 0x1B09, 0x1B89, 0x1C07, 0x1C84, 0x1CFF,\n    0x1D78, 0x1DEE, 0x1E62, 0x1ED2, 0x1F3F, 0x1FA7, 0x200C, 0x206D,\n    0x20C9, 0x2120, 0x2171, 0x21BE, 0x2204, 0x2244, 0x227E, 0x22B1,\n    0x22DD, 0x2301, 0x231E, 0x2334, 0x2340, 0x2345, 0xF936, 0xF94F,\n    0xF96B, 0xF988, 0xF9A6, 0xF9C6, 0xF9E8, 0xFA0B, 0xFA2F, 0xFA54,\n    0xFA7A, 0xFAA1, 0xFAC9, 0xFAF1, 0xFB1A, 0xFB44, 0xFB6E, 0xFB99,\n    0xFBC3, 0xFBEE, 0xFC19, 0xFC44, 0xFC6F, 0xFC99, 0xFCC3, 0xFCED,\n    0xFD16, 0xFD3E, 0xFD66, 0xFD8C, 0xFDB2, 0xFDD7, 0xFDFB, 0xFE1D,\n    0xFE3E, 0xFE5E, 0xFE7C, 0xFE99, 0xFEB4, 0xFECD, 0xFEE4, 0xFEF9,\n    0xFF0C, 0xFF1C, 0xFF2B, 0xFF37, 0xFF40, 0xFF47, 0xFF4C, 0xFF4D,\n    0xB1E6, 0xB1D0, 0xB1B8, 0xB19F, 0xB185, 0xB169, 0xB14C, 0xB12E,\n    0xB10F, 0xB0EF, 0xB0CE, 0xB0AD, 0xB08A, 0xB067, 0xB044, 0xB020,\n    0xAFFB, 0xAFD7, 0xAFB2, 0xAF8D, 0xAF68, 0xAF43, 0xAF1E, 0xAEF9,\n    0xAED5, 0xAEB1, 0xAE8E, 0xAE6B, 0xAE49, 0xAE27, 0xAE06, 0xADE7,\n    0xADC8, 0xADAA, 0xAD8E, 0xAD72, 0xAD58, 0xAD40, 0xAD28, 0xAD13,\n    0xACFF, 0xACED, 0xACDC, 0xACCE, 0xACC1, 0xACB7, 0xACAF, 0xACA9,\n    0xACA5, 0xACA4, 0x10D6, 0x10D7, 0x10D9, 0x10DA, 0x10DC, 0x10DD,\n    0x10DF, 0x10E1, 0x10E3, 0x10E5, 0x10E7, 0x10E9, 0x10EB, 0x10ED,\n    0x10F0, 0x10F2, 0x10F4, 0x10F6, 0x10F9, 0x10FB, 0x10FD, 0x10FF,\n    0x1102, 0x1104, 0x1106, 0x1108, 0x110B, 0x110D, 0x110F, 0x1111,\n    0x1113, 0x1115, 0x1117, 0x1119, 0x111A, 0x111C, 0x111E, 0x111F,\n    0x1121, 0x1122, 0x1123, 0x1124, 0x1125, 0x1126, 0x1127, 0x1128,\n    0x1128, 0x1128, 0x1129, 0x1129, 0x1660, 0x1614, 0x15C1, 0x156A,\n    0x150E, 0x14AD, 0x1448, 0x13DF, 0x1372, 0x1302, 0x128F, 0x1219,\n    0x11A1, 0x1127, 0x10AA, 0x102D, 0x0FAD, 0x0F2D, 0x0EAC, 0x0E2B,\n    0x0DAA, 0x0D29, 0x0CA8, 0x0C28, 0x0BA9, 0x0B2C, 0x0AB0, 0x0A36,\n    0x09BE, 0x0949, 0x08D7, 0x0868, 0x07FC, 0x0794, 0x0730, 0x06D0,\n    0x0675, 0x061F, 0x05CE, 0x0583, 0x053D, 0x04FE, 0x04C4, 0x0492,\n    0x0466, 0x0442, 0x0425, 0x0410, 0x0404, 0x03FF, 0xF5C7, 0xF5B9,\n    0xF5AA, 0xF59A, 0xF588, 0xF577, 0xF564, 0xF550, 0xF53C, 0xF527,\n    0xF512, 0xF4FC, 0xF4E6, 0xF4CF, 0xF4B8, 0xF4A1, 0xF489, 0xF472,\n    0xF45A, 0xF442, 0xF42A, 0xF412, 0xF3FA, 0xF3E2, 0xF3CB, 0xF3B4,\n    0xF39D, 0xF386, 0xF370, 0xF35A, 0xF345, 0xF330, 0xF31C, 0xF309,\n    0xF2F7, 0xF2E5, 0xF2D4, 0xF2C4, 0xF2B5, 0xF2A7, 0xF29A, 0xF28E,\n    0xF284, 0xF27A, 0xF272, 0xF26C, 0xF266, 0xF262, 0xF260, 0xF25F,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,\n    0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,\n    0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,\n    0x0001, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0xD652, 0xD5BB, 0xD519, 0xD46D,\n    0xD3B8, 0xD2FA, 0xD233, 0xD165, 0xD08F, 0xCFB3, 0xCED1, 0xCDEA,\n    0xCCFD, 0xCC0D, 0xCB18, 0xCA21, 0xC927, 0xC82B, 0xC72E, 0xC630,\n    0xC532, 0xC434, 0xC337, 0xC23B, 0xC142, 0xC04B, 0xBF58, 0xBE69,\n    0xBD7D, 0xBC97, 0xBBB7, 0xBADC, 0xBA09, 0xB93C, 0xB878, 0xB7BC,\n    0xB709, 0xB660, 0xB5C1, 0xB52C, 0xB4A3, 0xB427, 0xB3B6, 0xB353,\n    0xB2FD, 0xB2B6, 0xB27D, 0xB254, 0xB23B, 0xB233, 0xF7B4, 0xF746,\n    0xF6D0, 0xF653, 0xF5CF, 0xF545, 0xF4B5, 0xF41F, 0xF384, 0xF2E4,\n    0xF23F, 0xF197, 0xF0EB, 0xF03C, 0xEF8A, 0xEED7, 0xEE21, 0xED6A,\n    0xECB2, 0xEBF9, 0xEB40, 0xEA87, 0xE9D0, 0xE919, 0xE863, 0xE7B0,\n    0xE6FF, 0xE651, 0xE5A6, 0xE4FF, 0xE45B, 0xE3BD, 0xE323, 0xE28E,\n    0xE1FF, 0xE177, 0xE0F5, 0xE07A, 0xE006, 0xDF9A, 0xDF37, 0xDEDC,\n    0xDE8A, 0xDE42, 0xDE03, 0xDDD0, 0xDDA7, 0xDD89, 0xDD76, 0xDD70,\n    0x0B47, 0x0B1B, 0x0AEC, 0x0AB9, 0x0A84, 0x0A4C, 0x0A12, 0x09D6,\n    0x0997, 0x0957, 0x0914, 0x08D1, 0x088B, 0x0845, 0x07FD, 0x07B5,\n    0x076B, 0x0722, 0x06D7, 0x068D, 0x0642, 0x05F8, 0x05AE, 0x0564,\n    0x051B, 0x04D3, 0x048B, 0x0445, 0x0400, 0x03BD, 0x037B, 0x033B,\n    0x02FD, 0x02C1, 0x0287, 0x0250, 0x021C, 0x01EA, 0x01BC, 0x0190,\n    0x0168, 0x0143, 0x0123, 0x0105, 0x00EC, 0x00D7, 0x00C7, 0x00BB,\n    0x00B3, 0x00B1, 0xB780, 0xB76B, 0xB754, 0xB73B, 0xB722, 0xB707,\n    0xB6EB, 0xB6CE, 0xB6AF, 0xB690, 0xB670, 0xB64F, 0xB62E, 0xB60C,\n    0xB5E9, 0xB5C6, 0xB5A3, 0xB57F, 0xB55B, 0xB537, 0xB513, 0xB4EF,\n    0xB4CC, 0xB4A8, 0xB485, 0xB462, 0xB43F, 0xB41D, 0xB3FC, 0xB3DB,\n    0xB3BC, 0xB39D, 0xB37F, 0xB362, 0xB346, 0xB32B, 0xB312, 0xB2FA,\n    0xB2E4, 0xB2CF, 0xB2BB, 0xB2A9, 0xB29A, 0xB28C, 0xB27F, 0xB275,\n    0xB26D, 0xB267, 0xB264, 0xB263, 0xFEF8, 0xFEFF, 0xFF0A, 0xFF1A,\n    0xFF2F, 0xFF49, 0xFF6A, 0xFF8F, 0xFFB2, 0xFFD2, 0xFFEF, 0x0008,\n    0x0020, 0x0035, 0x0048, 0x0059, 0x0067, 0x0073, 0x007D, 0x0085,\n    0x008C, 0x0091, 0x0094, 0x0095, 0x0096, 0x0095, 0x0093, 0x008F,\n    0x008B, 0x0086, 0x0080, 0x007A, 0x0073, 0x006B, 0x0063, 0x005B,\n    0x0053, 0x004B, 0x0043, 0x003A, 0x0033, 0x002B, 0x0024, 0x001E,\n    0x0019, 0x0014, 0x0010, 0x000D, 0x000B, 0x000A, 0xFAEB, 0xFADE,\n    0xFAD4, 0xFAD1, 0xFAD8, 0xFAEB, 0xFB01, 0xFB16, 0xFB24, 0xFB2E,\n    0xFB38, 0xFB40, 0xFB48, 0xFB4F, 0xFB56, 0xFB5C, 0xFB63, 0xFB69,\n    0xFB70, 0xFB77, 0xFB7E, 0xFB86, 0xFB8E, 0xFB97, 0xFBA2, 0xFBAD,\n    0xFBBA, 0xFBC8, 0xFBD8, 0xFBE9, 0xFBFC, 0xFC13, 0xFC2F, 0xFC50,\n    0xFC74, 0xFC9C, 0xFCC5, 0xFCF0, 0xFD1C, 0xFD48, 0xFD73, 0xFD9D,\n    0xFDC4, 0xFDE9, 0xFE0A, 0xFE27, 0xFE3F, 0xFE50, 0xFE5B, 0xFE5F,\n    0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D,\n    0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D,\n    0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D,\n    0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D, 0xBF3D, 0xBF3E, 0xBF3E,\n    0xBF3E, 0xBF3E, 0xBF3E, 0xBF3E, 0xBF3E, 0xBF3E, 0xBF3E, 0xBF3E,\n    0xBF3E, 0xBF3E, 0xBF3E, 0xBF3E, 0xBF3E, 0xBF3E, 0xBF3E, 0xBF3E,\n    0xBF3E, 0xBF3E, 0xC066, 0x10B8, 0x1105, 0x1158, 0x11B1, 0x120E,\n    0x126F, 0x12D5, 0x133F, 0x13AD, 0x141E, 0x1492, 0x1509, 0x1582,\n    0x15FE, 0x167B, 0x16FA, 0x177B, 0x17FC, 0x187E, 0x1901, 0x1983,\n    0x1A06, 0x1A88, 0x1B09, 0x1B89, 0x1C07, 0x1C84, 0x1CFF, 0x1D78,\n    0x1DEE, 0x1E62, 0x1ED2, 0x1F3F, 0x1FA7, 0x200C, 0x206D, 0x20C9,\n    0x2120, 0x2171, 0x21BE, 0x2204, 0x2244, 0x227E, 0x22B1, 0x22DD,\n    0x2301, 0x231E, 0x2334, 0x2340, 0x2345, 0xF936, 0xF94F, 0xF96B,\n    0xF988, 0xF9A6, 0xF9C6, 0xF9E8, 0xFA0B, 0xFA2F, 0xFA54, 0xFA7A,\n    0xFAA1, 0xFAC9, 0xFAF1, 0xFB1A, 0xFB44, 0xFB6E, 0xFB99, 0xFBC3,\n    0xFBEE, 0xFC19, 0xFC44, 0xFC6F, 0xFC99, 0xFCC3, 0xFCED, 0xFD16,\n    0xFD3E, 0xFD66, 0xFD8C, 0xFDB2, 0xFDD7, 0xFDFB, 0xFE1D, 0xFE3E,\n    0xFE5E, 0xFE7C, 0xFE99, 0xFEB4, 0xFECD, 0xFEE4, 0xFEF9, 0xFF0C,\n    0xFF1C, 0xFF2B, 0xFF37, 0xFF40, 0xFF47, 0xFF4C, 0xFF4D, 0xB1E6,\n    0xB1D0, 0xB1B8, 0xB19F, 0xB185, 0xB169, 0xB14C, 0xB12E, 0xB10F,\n    0xB0EF, 0xB0CE, 0xB0AD, 0xB08A, 0xB067, 0xB044, 0xB020, 0xAFFB,\n    0xAFD7, 0xAFB2, 0xAF8D, 0xAF68, 0xAF43, 0xAF1E, 0xAEF9, 0xAED5,\n    0xAEB1, 0xAE8E, 0xAE6B, 0xAE49, 0xAE27, 0xAE06, 0xADE7, 0xADC8,\n    0xADAA, 0xAD8E, 0xAD72, 0xAD58, 0xAD40, 0xAD28, 0xAD13, 0xACFF,\n    0xACED, 0xACDC, 0xACCE, 0xACC1, 0xACB7, 0xACAF, 0xACA9, 0xACA5,\n    0xACA4, 0xF7B4, 0xF746, 0xF6D0, 0xF653, 0xF5CF, 0xF545, 0xF4B5,\n    0xF41F, 0xF384, 0xF2E4, 0xF23F, 0xF197, 0xF0EB, 0xF03C, 0xEF8A,\n    0xEED7, 0xEE21, 0xED6A, 0xECB2, 0xEBF9, 0xEB40, 0xEA87, 0xE9D0,\n    0xE919, 0xE863, 0xE7B0, 0xE6FF, 0xE651, 0xE5A6, 0xE4FF, 0xE45B,\n    0xE3BD, 0xE323, 0xE28E, 0xE1FF, 0xE177, 0xE0F5, 0xE07A, 0xE006,\n    0xDF9A, 0xDF37, 0xDEDC, 0xDE8A, 0xDE42, 0xDE03, 0xDDD0, 0xDDA7,\n    0xDD89, 0xDD76, 0xDD70, 0x0B47, 0x0B1B, 0x0AEC, 0x0AB9, 0x0A84,\n    0x0A4C, 0x0A12, 0x09D6, 0x0997, 0x0957, 0x0914, 0x08D1, 0x088B,\n    0x0845, 0x07FD, 0x07B5, 0x076B, 0x0722, 0x06D7, 0x068D, 0x0642,\n    0x05F8, 0x05AE, 0x0564, 0x051B, 0x04D3, 0x048B, 0x0445, 0x0400,\n    0x03BD, 0x037B, 0x033B, 0x02FD, 0x02C1, 0x0287, 0x0250, 0x021C,\n    0x01EA, 0x01BC, 0x0190, 0x0168, 0x0143, 0x0123, 0x0105, 0x00EC,\n    0x00D7, 0x00C7, 0x00BB, 0x00B3, 0x00B1, 0xB780, 0xB76B, 0xB754,\n    0xB73B, 0xB722, 0xB707, 0xB6EB, 0xB6CE, 0xB6AF, 0xB690, 0xB670,\n    0xB64F, 0xB62E, 0xB60C, 0xB5E9, 0xB5C6, 0xB5A3, 0xB57F, 0xB55B,\n    0xB537, 0xB513, 0xB4EF, 0xB4CC, 0xB4A8, 0xB485, 0xB462, 0xB43F,\n    0xB41D, 0xB3FC, 0xB3DB, 0xB3BC, 0xB39D, 0xB37F, 0xB362, 0xB346,\n    0xB32B, 0xB312, 0xB2FA, 0xB2E4, 0xB2CF, 0xB2BB, 0xB2A9, 0xB29A,\n    0xB28C, 0xB27F, 0xB275, 0xB26D, 0xB267, 0xB264, 0xB263, 0xE0FF,\n    0xC001, 0xE0FB, 0xBF7F, 0x0096, 0xFFBF, 0xFEAD, 0xFD70, 0xFC16,\n    0xFAAF, 0xF949, 0xF7F4, 0xF6BD, 0xF5B4, 0xF4E7, 0xF465, 0xF411,\n    0xF3C1, 0xF375, 0xF32E, 0xF2EB, 0xF2AC, 0xF270, 0xF239, 0xF205,\n    0xF1D5, 0xF1A8, 0xF17F, 0xF158, 0xF135, 0xF115, 0xF0F7, 0xF0DC,\n    0xF0C4, 0xF0AE, 0xF09A, 0xF088, 0xF079, 0xF06B, 0xF05F, 0xF055,\n    0xF04C, 0xF045, 0xF03F, 0xF03A, 0xF037, 0xF034, 0xF032, 0xF030,\n    0xF030, 0xF02F, 0xF02F, 0xF02F, 0xF02F, 0xFF83, 0xFF68, 0xFF45,\n    0xFF1C, 0xFEF0, 0xFEC2, 0xFE96, 0xFE6C, 0xFE47, 0xFE29, 0xFE14,\n    0xFE0B, 0xFE08, 0xFE07, 0xFE06, 0xFE07, 0xFE09, 0xFE0C, 0xFE10,\n    0xFE15, 0xFE1B, 0xFE21, 0xFE28, 0xFE2F, 0xFE37, 0xFE40, 0xFE49,\n    0xFE52, 0xFE5C, 0xFE66, 0xFE70, 0xFE7A, 0xFE84, 0xFE8E, 0xFE98,\n    0xFEA1, 0xFEAB, 0xFEB4, 0xFEBD, 0xFEC5, 0xFECD, 0xFED5, 0xFEDB,\n    0xFEE1, 0xFEE7, 0xFEEB, 0xFEEF, 0xFEF1, 0xFEF3, 0xFEF4, 0x0981,\n    0x08CD, 0x07D6, 0x06AD, 0x0562, 0x0406, 0x02AA, 0x015E, 0x0032,\n    0xFF39, 0xFE81, 0xFE1C, 0xFDE9, 0xFDBC, 0xFD96, 0xFD76, 0xFD5C,\n    0xFD47, 0xFD37, 0xFD2D, 0xFD27, 0xFD25, 0xFD27, 0xFD2D, 0xFD37,\n    0xFD44, 0xFD53, 0xFD65, 0xFD7A, 0xFD90, 0xFDA8, 0xFDC2, 0xFDDD,\n    0xFDF9, 0xFE15, 0xFE31, 0xFE4E, 0xFE6A, 0xFE86, 0xFEA0, 0xFEBA,\n    0xFED2, 0xFEE8, 0xFEFD, 0xFF0F, 0xFF1E, 0xFF2A, 0xFF34, 0xFF39,\n    0xFF3B, 0xBF84, 0xFEE3, 0xFD3A, 0xFB20, 0xF8B2, 0xF60A, 0xF344,\n    0xF07C, 0xEDCC, 0xEB50, 0xE923, 0xE761, 0xE625, 0xE537, 0xE44C,\n    0xE364, 0xE27F, 0xE19E, 0xE0C1, 0xDFE8, 0xDF13, 0xDE42, 0xDD76,\n    0xDCAE, 0xDBEC, 0xDB2E, 0xDA76, 0xD9C3, 0xD916, 0xD86F, 0xD7CD,\n    0xD732, 0xD69D, 0xD60E, 0xD586, 0xD505, 0xD48B, 0xD419, 0xD3AD,\n    0xD349, 0xD2ED, 0xD299, 0xD24D, 0xD209, 0xD1CE, 0xD19B, 0xD171,\n    0xD150, 0xD139, 0xD12A, 0xD126, 0xFFC7, 0xFF72, 0xFF06, 0xFE89,\n    0xFE00, 0xFD72, 0xFCE2, 0xFC58, 0xFBD7, 0xFB66, 0xFB09, 0xFAC7,\n    0xFA94, 0xFA62, 0xFA2F, 0xF9FE, 0xF9CC, 0xF99C, 0xF96C, 0xF93D,\n    0xF90E, 0xF8E1, 0xF8B4, 0xF888, 0xF85D, 0xF833, 0xF80A, 0xF7E2,\n    0xF7BC, 0xF797, 0xF773, 0xF750, 0xF72F, 0xF70F, 0xF6F1, 0xF6D4,\n    0xF6B9, 0xF69F, 0xF687, 0xF672, 0xF65D, 0xF64B, 0xF63B, 0xF62D,\n    0xF620, 0xF616, 0xF60E, 0xF608, 0xF605, 0xF604, 0xFAB0, 0xFA0B,\n    0xF93B, 0xF849, 0xF742, 0xF631, 0xF521, 0xF41C, 0xF330, 0xF266,\n    0xF1CA, 0xF168, 0xF127, 0xF0EB, 0xF0B1, 0xF07B, 0xF048, 0xF018,\n    0xEFEB, 0xEFC1, 0xEF99, 0xEF75, 0xEF53, 0xEF33, 0xEF16, 0xEEFB,\n    0xEEE3, 0xEECC, 0xEEB8, 0xEEA5, 0xEE95, 0xEE86, 0xEE79, 0xEE6D,\n    0xEE63, 0xEE5A, 0xEE52, 0xEE4B, 0xEE46, 0xEE42, 0xEE3E, 0xEE3B,\n    0xEE39, 0xEE38, 0xEE37, 0xEE36, 0xEE36, 0xEE36, 0xEE36, 0xEE36,\n    0xFEE3, 0xFD3A, 0xFB20, 0xF8B2, 0xF60A, 0xF344, 0xF07C, 0xEDCC,\n    0xEB50, 0xE923, 0xE761, 0xE625, 0xE537, 0xE44C, 0xE364, 0xE27F,\n    0xE19E, 0xE0C1, 0xDFE8, 0xDF13, 0xDE42, 0xDD76, 0xDCAE, 0xDBEC,\n    0xDB2E, 0xDA76, 0xD9C3, 0xD916, 0xD86F, 0xD7CD, 0xD732, 0xD69D,\n    0xD60E, 0xD586, 0xD505, 0xD48B, 0xD419, 0xD3AD, 0xD349, 0xD2ED,\n    0xD299, 0xD24D, 0xD209, 0xD1CE, 0xD19B, 0xD171, 0xD150, 0xD139,\n    0xD12A, 0xD126, 0xFFC7, 0xFF72, 0xFF06, 0xFE89, 0xFE00, 0xFD72,\n    0xFCE2, 0xFC58, 0xFBD7, 0xFB66, 0xFB09, 0xFAC7, 0xFA94, 0xFA62,\n    0xFA2F, 0xF9FE, 0xF9CC, 0xF99C, 0xF96C, 0xF93D, 0xF90E, 0xF8E1,\n    0xF8B4, 0xF888, 0xF85D, 0xF833, 0xF80A, 0xF7E2, 0xF7BC, 0xF797,\n    0xF773, 0xF750, 0xF72F, 0xF70F, 0xF6F1, 0xF6D4, 0xF6B9, 0xF69F,\n    0xF687, 0xF672, 0xF65D, 0xF64B, 0xF63B, 0xF62D, 0xF620, 0xF616,\n    0xF60E, 0xF608, 0xF605, 0xF604, 0xFAB0, 0xFA0B, 0xF93B, 0xF849,\n    0xF742, 0xF631, 0xF521, 0xF41C, 0xF330, 0xF266, 0xF1CA, 0xF168,\n    0xF127, 0xF0EB, 0xF0B1, 0xF07B, 0xF048, 0xF018, 0xEFEB, 0xEFC1,\n    0xEF99, 0xEF75, 0xEF53, 0xEF33, 0xEF16, 0xEEFB, 0xEEE3, 0xEECC,\n    0xEEB8, 0xEEA5, 0xEE95, 0xEE86, 0xEE79, 0xEE6D, 0xEE63, 0xEE5A,\n    0xEE52, 0xEE4B, 0xEE46, 0xEE42, 0xEE3E, 0xEE3B, 0xEE39, 0xEE38,\n    0xEE37, 0xEE36, 0xEE36, 0xEE36, 0xEE36, 0xEE36, 0xFEE3, 0xFD3A,\n    0xFB20, 0xF8B2, 0xF60A, 0xF344, 0xF07C, 0xEDCC, 0xEB50, 0xE923,\n    0xE761, 0xE625, 0xE537, 0xE44C, 0xE364, 0xE27F, 0xE19E, 0xE0C1,\n    0xDFE8, 0xDF13, 0xDE42, 0xDD76, 0xDCAE, 0xDBEC, 0xDB2E, 0xDA76,\n    0xD9C3, 0xD916, 0xD86F, 0xD7CD, 0xD732, 0xD69D, 0xD60E, 0xD586,\n    0xD505, 0xD48B, 0xD419, 0xD3AD, 0xD349, 0xD2ED, 0xD299, 0xD24D,\n    0xD209, 0xD1CE, 0xD19B, 0xD171, 0xD150, 0xD139, 0xD12A, 0xD126,\n    0xFFC7, 0xFF72, 0xFF06, 0xFE89, 0xFE00, 0xFD72, 0xFCE2, 0xFC58,\n    0xFBD7, 0xFB66, 0xFB09, 0xFAC7, 0xFA94, 0xFA62, 0xFA2F, 0xF9FE,\n    0xF9CC, 0xF99C, 0xF96C, 0xF93D, 0xF90E, 0xF8E1, 0xF8B4, 0xF888,\n    0xF85D, 0xF833, 0xF80A, 0xF7E2, 0xF7BC, 0xF797, 0xF773, 0xF750,\n    0xF72F, 0xF70F, 0xF6F1, 0xF6D4, 0xF6B9, 0xF69F, 0xF687, 0xF672,\n    0xF65D, 0xF64B, 0xF63B, 0xF62D, 0xF620, 0xF616, 0xF60E, 0xF608,\n    0xF605, 0xF604, 0xFAB0, 0xFA0B, 0xF93B, 0xF849, 0xF742, 0xF631,\n    0xF521, 0xF41C, 0xF330, 0xF266, 0xF1CA, 0xF168, 0xF127, 0xF0EB,\n    0xF0B1, 0xF07B, 0xF048, 0xF018, 0xEFEB, 0xEFC1, 0xEF99, 0xEF75,\n    0xEF53, 0xEF33, 0xEF16, 0xEEFB, 0xEEE3, 0xEECC, 0xEEB8, 0xEEA5,\n    0xEE95, 0xEE86, 0xEE79, 0xEE6D, 0xEE63, 0xEE5A, 0xEE52, 0xEE4B,\n    0xEE46, 0xEE42, 0xEE3E, 0xEE3B, 0xEE39, 0xEE38, 0xEE37, 0xEE36,\n    0xEE36, 0xEE36, 0xEE36, 0xEE36, 0x0096, 0xFFBF, 0xFEAD, 0xFD70,\n    0xFC16, 0xFAAF, 0xF949, 0xF7F4, 0xF6BD, 0xF5B4, 0xF4E7, 0xF465,\n    0xF411, 0xF3C1, 0xF375, 0xF32E, 0xF2EB, 0xF2AC, 0xF270, 0xF239,\n    0xF205, 0xF1D5, 0xF1A8, 0xF17F, 0xF158, 0xF135, 0xF115, 0xF0F7,\n    0xF0DC, 0xF0C4, 0xF0AE, 0xF09A, 0xF088, 0xF079, 0xF06B, 0xF05F,\n    0xF055, 0xF04C, 0xF045, 0xF03F, 0xF03A, 0xF037, 0xF034, 0xF032,\n    0xF030, 0xF030, 0xF02F, 0xF02F, 0xF02F, 0xF02F, 0xFF83, 0xFF68,\n    0xFF45, 0xFF1C, 0xFEF0, 0xFEC2, 0xFE96, 0xFE6C, 0xFE47, 0xFE29,\n    0xFE14, 0xFE0B, 0xFE08, 0xFE07, 0xFE06, 0xFE07, 0xFE09, 0xFE0C,\n    0xFE10, 0xFE15, 0xFE1B, 0xFE21, 0xFE28, 0xFE2F, 0xFE37, 0xFE40,\n    0xFE49, 0xFE52, 0xFE5C, 0xFE66, 0xFE70, 0xFE7A, 0xFE84, 0xFE8E,\n    0xFE98, 0xFEA1, 0xFEAB, 0xFEB4, 0xFEBD, 0xFEC5, 0xFECD, 0xFED5,\n    0xFEDB, 0xFEE1, 0xFEE7, 0xFEEB, 0xFEEF, 0xFEF1, 0xFEF3, 0xFEF4,\n    0x0981, 0x08CD, 0x07D6, 0x06AD, 0x0562, 0x0406, 0x02AA, 0x015E,\n    0x0032, 0xFF39, 0xFE81, 0xFE1C, 0xFDE9, 0xFDBC, 0xFD96, 0xFD76,\n    0xFD5C, 0xFD47, 0xFD37, 0xFD2D, 0xFD27, 0xFD25, 0xFD27, 0xFD2D,\n    0xFD37, 0xFD44, 0xFD53, 0xFD65, 0xFD7A, 0xFD90, 0xFDA8, 0xFDC2,\n    0xFDDD, 0xFDF9, 0xFE15, 0xFE31, 0xFE4E, 0xFE6A, 0xFE86, 0xFEA0,\n    0xFEBA, 0xFED2, 0xFEE8, 0xFEFD, 0xFF0F, 0xFF1E, 0xFF2A, 0xFF34,\n    0xFF39, 0xFF3B, 0xFFF1, 0xFFE0, 0xFFCE, 0xFFBB, 0xFFA7, 0xFF92,\n    0xFF7C, 0xFF65, 0xFF4D, 0xFF35, 0xFF1C, 0xFF02, 0xFEE8, 0xFECD,\n    0xFEB2, 0xFE96, 0xFE7B, 0xFE5F, 0xFE43, 0xFE26, 0xFE0A, 0xFDEE,\n    0xFDD2, 0xFDB6, 0xFD9A, 0xFD7F, 0xFD64, 0xFD49, 0xFD2F, 0xFD16,\n    0xFCFD, 0xFCE4, 0xFCCD, 0xFCB6, 0xFCA0, 0xFC8C, 0xFC78, 0xFC65,\n    0xFC53, 0xFC43, 0xFC34, 0xFC26, 0xFC19, 0xFC0E, 0xFC05, 0xFBFD,\n    0xFBF7, 0xFBF2, 0xFBEF, 0xFBEE, 0x0000, 0xFFFF, 0xFFFF, 0xFFFE,\n    0xFFFD, 0xFFFD, 0xFFFC, 0xFFFB, 0xFFFA, 0xFFF9, 0xFFF8, 0xFFF7,\n    0xFFF6, 0xFFF5, 0xFFF4, 0xFFF3, 0xFFF2, 0xFFF1, 0xFFF0, 0xFFEF,\n    0xFFEE, 0xFFED, 0xFFEC, 0xFFEB, 0xFFEA, 0xFFE9, 0xFFE8, 0xFFE7,\n    0xFFE7, 0xFFE6, 0xFFE5, 0xFFE4, 0xFFE3, 0xFFE2, 0xFFE1, 0xFFE1,\n    0xFFE0, 0xFFDF, 0xFFDF, 0xFFDE, 0xFFDE, 0xFFDD, 0xFFDD, 0xFFDC,\n    0xFFDC, 0xFFDC, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0x4406, 0x43F8,\n    0x43EA, 0x43DB, 0x43CB, 0x43BA, 0x43A8, 0x4396, 0x4383, 0x436F,\n    0x435B, 0x4347, 0x4332, 0x431C, 0x4307, 0x42F1, 0x42DB, 0x42C4,\n    0x42AE, 0x4297, 0x4281, 0x426A, 0x4254, 0x423D, 0x4227, 0x4211,\n    0x41FC, 0x41E7, 0x41D2, 0x41BD, 0x41A9, 0x4196, 0x4183, 0x4171,\n    0x4160, 0x414F, 0x413F, 0x4130, 0x4122, 0x4115, 0x4109, 0x40FE,\n    0x40F4, 0x40EB, 0x40E3, 0x40DD, 0x40D8, 0x40D4, 0x40D2, 0x40D1,\n};\n\n// 0x05016690\nstatic const u16 peach_seg5_animindex_5016690[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0003, 0x0001, 0x0004, 0x0001, 0x0005,\n    0x0032, 0x0872, 0x0032, 0x08A4, 0x0032, 0x08D6,\n    0x0032, 0x07DC, 0x0032, 0x080E, 0x0032, 0x0840,\n    0x0032, 0x0746, 0x0032, 0x0778, 0x0032, 0x07AA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0452,\n    0x0032, 0x0006, 0x0032, 0x0038, 0x0032, 0x006A,\n    0x0032, 0x06B0, 0x0032, 0x06E2, 0x0032, 0x0714,\n    0x0032, 0x061A, 0x0032, 0x064C, 0x0032, 0x067E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0619,\n    0x0032, 0x0453, 0x0032, 0x0485, 0x0032, 0x04B7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x0132,\n    0x0032, 0x009C, 0x0032, 0x00CE, 0x0032, 0x0100,\n    0x0032, 0x0164, 0x0032, 0x0196, 0x0032, 0x01C8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0582,\n    0x0032, 0x04E9, 0x0032, 0x051B, 0x0032, 0x054D,\n    0x0032, 0x0290, 0x0032, 0x02C2, 0x0032, 0x02F4,\n    0x0032, 0x01FA, 0x0032, 0x022C, 0x0032, 0x025E,\n    0x0032, 0x0326, 0x0032, 0x0358, 0x0032, 0x038A,\n    0x0032, 0x0583, 0x0032, 0x05B5, 0x0032, 0x05E7,\n    0x0001, 0x057F, 0x0001, 0x0580, 0x0001, 0x0581,\n    0x0032, 0x03BC, 0x0032, 0x03EE, 0x0032, 0x0420,\n};\n\n// 0x05016798\nstatic const struct Animation peach_seg5_anim_05016798 = {\n    1,\n    0,\n    0,\n    0,\n    0x32,\n    ANIMINDEX_NUMPARTS(peach_seg5_animindex_5016690),\n    peach_seg5_animvalue_05015480,\n    peach_seg5_animindex_5016690,\n    0,\n};\n"
  },
  {
    "path": "actors/peach/anims/anim_05018664.inc.c",
    "content": "// 0x050167B0\nstatic const s16 peach_seg5_animvalue_050167B0[] = {\n    0x0000, 0x015E, 0xFFDB, 0xC50F, 0x3FFA, 0xC50F, 0xD9E6, 0xDA18,\n    0xDAA9, 0xDB90, 0xDCC4, 0xDE3D, 0xDFF2, 0xE1DB, 0xE3EF, 0xE626,\n    0xE877, 0xEAD9, 0xED44, 0xEFAF, 0xF212, 0xF464, 0xF69C, 0xF8B3,\n    0xFA9F, 0xFC57, 0xFDD4, 0xFF0D, 0xFFF7, 0x0092, 0x00EB, 0x010B,\n    0x00FC, 0x00C8, 0x007A, 0x001C, 0xFFB8, 0xFF58, 0xFF05, 0xFECB,\n    0xFEB3, 0xFEB0, 0xFEAE, 0xFEAD, 0xFEAC, 0xFEAC, 0xFEAD, 0xFEAD,\n    0xFEAE, 0xFEB0, 0xFEB1, 0xFEB2, 0xFEB3, 0xFEB3, 0xFEB4, 0xFEB4,\n    0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4,\n    0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4,\n    0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4,\n    0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4,\n    0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4, 0x1DB3, 0x1D8B, 0x1D17, 0x1C5D,\n    0x1B66, 0x1A37, 0x18D8, 0x174F, 0x15A4, 0x13DD, 0x1201, 0x1018,\n    0x0E27, 0x0C37, 0x0A4E, 0x0872, 0x06AB, 0x0500, 0x0378, 0x0219,\n    0x00EA, 0xFFF3, 0xFF44, 0xFEDF, 0xFEBB, 0xFECC, 0xFF05, 0xFF5C,\n    0xFFC5, 0x0033, 0x009E, 0x00F7, 0x0134, 0x0149, 0x0142, 0x0133,\n    0x011C, 0x00FF, 0x00DD, 0x00B8, 0x0091, 0x006A, 0x0043, 0x001E,\n    0xFFFE, 0xFFE1, 0xFFCA, 0xFFBA, 0xFFB2, 0xFFB8, 0xFFCC, 0xFFEB,\n    0x0011, 0x003E, 0x006C, 0x009A, 0x00C3, 0x00E5, 0x00FE, 0x0109,\n    0x0102, 0x00EA, 0x00C6, 0x009A, 0x006C, 0x003F, 0x001A, 0x0000,\n    0xFFF7, 0xFFF7, 0xFFF7, 0xFFF7, 0xFFF7, 0xFFF7, 0xFFF7, 0xFFF7,\n    0xFFF7, 0xFFF7, 0xFFF7, 0xFFF7, 0xFFF7, 0xFFF7, 0xFFF7, 0xFFF7,\n    0xFFF7, 0xFFF7, 0xE0CD, 0xE0B5, 0xE071, 0xE004, 0xDF72, 0xDEBF,\n    0xDDEE, 0xDD04, 0xDC04, 0xDAF2, 0xD9D2, 0xD8A7, 0xD776, 0xD642,\n    0xD50F, 0xD3E1, 0xD2BB, 0xD1A2, 0xD099, 0xCFA4, 0xCEC7, 0xCE06,\n    0xCD5C, 0xCCC1, 0xCC35, 0xCBB6, 0xCB44, 0xCADD, 0xCA81, 0xCA2E,\n    0xC9E4, 0xC9A2, 0xC967, 0xC931, 0xC900, 0xC8D8, 0xC8BD, 0xC8AC,\n    0xC8A5, 0xC8A6, 0xC8AE, 0xC8BA, 0xC8CA, 0xC8DB, 0xC8ED, 0xC8FD,\n    0xC90B, 0xC914, 0xC917, 0xC917, 0xC917, 0xC917, 0xC917, 0xC917,\n    0xC917, 0xC917, 0xC917, 0xC917, 0xC917, 0xC917, 0xC917, 0xC917,\n    0xC917, 0xC917, 0xC917, 0xC917, 0xC917, 0xC917, 0xC917, 0xC917,\n    0xC917, 0xC917, 0xC917, 0xC917, 0xC917, 0xC917, 0xC917, 0xC917,\n    0xC917, 0xC917, 0xC917, 0xC917, 0xC917, 0xC917, 0xC917, 0xC917,\n    0xF97B, 0xF96C, 0xF943, 0xF90A, 0xF8C9, 0xF888, 0xF851, 0xF82C,\n    0xF822, 0xF83B, 0xF880, 0xF8F9, 0xF9B0, 0xFAAC, 0xFBF7, 0xFDE1,\n    0x0094, 0x03E2, 0x079B, 0x0B90, 0x0F93, 0x1373, 0x1701, 0x1A0F,\n    0x1C6D, 0x1DEC, 0x1ED0, 0x1F7D, 0x1FF8, 0x2046, 0x206B, 0x206B,\n    0x204B, 0x200F, 0x1FBB, 0x1F54, 0x1EDE, 0x1E5E, 0x1DD8, 0x1D50,\n    0x1CCA, 0x1C4C, 0x1BD8, 0x1B75, 0x1B25, 0x1AEE, 0x1AC4, 0x1A97,\n    0x1A69, 0x1A38, 0x1A07, 0x19D3, 0x199F, 0x1969, 0x1932, 0x18FB,\n    0x18C2, 0x188A, 0x1851, 0x1817, 0x17DE, 0x17A5, 0x176D, 0x1734,\n    0x16FD, 0x16C6, 0x1690, 0x165B, 0x1628, 0x15F6, 0x15C6, 0x1597,\n    0x156A, 0x1540, 0x1517, 0x14F1, 0x14CE, 0x14AD, 0x148F, 0x1474,\n    0x145D, 0x1449, 0x1438, 0x142B, 0x1422, 0x141D, 0xEFEE, 0xF053,\n    0xF16E, 0xF31E, 0xF543, 0xF7BD, 0xFA6E, 0xFD33, 0xFFEE, 0x027E,\n    0x04C4, 0x06A0, 0x07F1, 0x0898, 0x0876, 0x0737, 0x04C9, 0x016A,\n    0xFD59, 0xF8D2, 0xF414, 0xEF5C, 0xEAEA, 0xE6FA, 0xE3CB, 0xE19B,\n    0xE118, 0xE258, 0xE4B4, 0xE783, 0xEA20, 0xEBE2, 0xEC58, 0xEC8D,\n    0xECBF, 0xECEF, 0xED1C, 0xED46, 0xED6E, 0xED93, 0xEDB6, 0xEDD7,\n    0xEDF5, 0xEE12, 0xEE2C, 0xEE44, 0xEE5B, 0xEE6F, 0xEE82, 0xEE93,\n    0xEEA2, 0xEEAF, 0xEEBB, 0xEEC6, 0xEECF, 0xEED7, 0xEEDD, 0xEEE3,\n    0xEEE7, 0xEEEA, 0xEEEC, 0xEEEE, 0xEEEE, 0xEEEE, 0xEEED, 0xEEEB,\n    0xEEE8, 0xEEE6, 0xEEE2, 0xEEDF, 0xEEDB, 0xEED7, 0xEED2, 0xEECE,\n    0xEEC9, 0xEEC5, 0xEEC0, 0xEEBC, 0xEEB8, 0xEEB5, 0xEEB1, 0xEEAF,\n    0xEEAC, 0xEEAB, 0xEEA9, 0xEEA9, 0xD875, 0xD8B9, 0xD978, 0xDA9F,\n    0xDC18, 0xDDD1, 0xDFB4, 0xE1AF, 0xE3AD, 0xE599, 0xE760, 0xE8EF,\n    0xEA30, 0xEB10, 0xEB7B, 0xEB49, 0xEA78, 0xE928, 0xE77C, 0xE593,\n    0xE390, 0xE194, 0xDFC0, 0xDE36, 0xDD16, 0xDC82, 0xDC54, 0xDC4A,\n    0xDC62, 0xDC97, 0xDCE5, 0xDD4A, 0xDDC1, 0xDE46, 0xDED5, 0xDF6B,\n    0xE004, 0xE09B, 0xE12E, 0xE1B8, 0xE236, 0xE2A4, 0xE2FD, 0xE33F,\n    0xE365, 0xE36B, 0xE35C, 0xE346, 0xE329, 0xE306, 0xE2DC, 0xE2AC,\n    0xE277, 0xE23C, 0xE1FD, 0xE1BA, 0xE173, 0xE129, 0xE0DB, 0xE08B,\n    0xE039, 0xDFE5, 0xDF8F, 0xDF39, 0xDEE2, 0xDE8B, 0xDE34, 0xDDDD,\n    0xDD88, 0xDD34, 0xDCE2, 0xDC92, 0xDC44, 0xDBFA, 0xDBB3, 0xDB70,\n    0xDB32, 0xDAF8, 0xDAC3, 0xDA93, 0xDA69, 0xDA46, 0xDA29, 0xDA14,\n    0xDA05, 0xD9FF, 0xC000, 0xC01B, 0xC065, 0xC0D4, 0xC160, 0xC1FF,\n    0xC2A7, 0xC34F, 0xC3EF, 0xC47B, 0xC4EC, 0xC537, 0xC554, 0xC539,\n    0xC4DC, 0xC403, 0xC293, 0xC0B3, 0xBE87, 0xBC37, 0xB9E7, 0xB7BF,\n    0xB5E4, 0xB47D, 0xB3AE, 0xB348, 0xB2FF, 0xB2D1, 0xB2BB, 0xB2BB,\n    0xB2CE, 0xB2F2, 0xB325, 0xB364, 0xB3AC, 0xB3FC, 0xB451, 0xB4A9,\n    0xB501, 0xB556, 0xB5A7, 0xB5F1, 0xB631, 0xB666, 0xB68C, 0xB6A1,\n    0xB6AD, 0xB6B8, 0xB6C1, 0xB6CA, 0xB6D1, 0xB6D7, 0xB6DC, 0xB6E1,\n    0xB6E4, 0xB6E7, 0xB6E9, 0xB6EA, 0xB6EB, 0xB6EB, 0xB6EA, 0xB6E9,\n    0xB6E7, 0xB6E5, 0xB6E2, 0xB6DF, 0xB6DC, 0xB6D9, 0xB6D5, 0xB6D1,\n    0xB6CD, 0xB6C9, 0xB6C5, 0xB6C1, 0xB6BD, 0xB6B9, 0xB6B5, 0xB6B1,\n    0xB6AE, 0xB6AB, 0xB6A8, 0xB6A6, 0xB6A4, 0xB6A3, 0xB6A2, 0xB6A1,\n    0x2345, 0x2333, 0x2300, 0x22B3, 0x2250, 0x21DD, 0x215F, 0x20DC,\n    0x2059, 0x1FDC, 0x1F69, 0x1F06, 0x1EB9, 0x1E88, 0x1E76, 0x1E7A,\n    0x1E83, 0x1E92, 0x1EA5, 0x1EBD, 0x1ED9, 0x1EFA, 0x1F1E, 0x1F45,\n    0x1F6F, 0x1F9C, 0x1FCC, 0x1FFD, 0x2030, 0x2065, 0x209A, 0x20D1,\n    0x2108, 0x213E, 0x2175, 0x21AB, 0x21E1, 0x2215, 0x2248, 0x2279,\n    0x22A7, 0x22D4, 0x22FD, 0x2324, 0x2347, 0x2366, 0x2383, 0x23A1,\n    0x23BE, 0x23DC, 0x23F9, 0x2417, 0x2434, 0x2451, 0x246E, 0x248B,\n    0x24A7, 0x24C3, 0x24DF, 0x24FA, 0x2514, 0x252F, 0x2548, 0x2561,\n    0x257A, 0x2591, 0x25A8, 0x25BE, 0x25D4, 0x25E8, 0x25FC, 0x260E,\n    0x2620, 0x2631, 0x2640, 0x264F, 0x265C, 0x2668, 0x2673, 0x267C,\n    0x2684, 0x268B, 0x2690, 0x2694, 0x2697, 0x2697, 0xFF4D, 0xFF43,\n    0xFF27, 0xFEFB, 0xFEC5, 0xFE85, 0xFE41, 0xFDFB, 0xFDB6, 0xFD75,\n    0xFD3C, 0xFD0F, 0xFCEF, 0xFCE1, 0xFCE7, 0xFCFC, 0xFD17, 0xFD37,\n    0xFD5C, 0xFD85, 0xFDB2, 0xFDE3, 0xFE17, 0xFE4E, 0xFE87, 0xFEC2,\n    0xFEFF, 0xFF3C, 0xFF7B, 0xFFB9, 0xFFF8, 0x0035, 0x0072, 0x00AD,\n    0x00E7, 0x011F, 0x0154, 0x0186, 0x01B4, 0x01DE, 0x0205, 0x0226,\n    0x0242, 0x0259, 0x026A, 0x0274, 0x0279, 0x027A, 0x0278, 0x0271,\n    0x0268, 0x025B, 0x024B, 0x0239, 0x0224, 0x020C, 0x01F3, 0x01D7,\n    0x01BA, 0x019B, 0x017B, 0x0159, 0x0137, 0x0114, 0x00F0, 0x00CC,\n    0x00A7, 0x0083, 0x005F, 0x003B, 0x0018, 0xFFF7, 0xFFD6, 0xFFB6,\n    0xFF97, 0xFF7A, 0xFF5F, 0xFF46, 0xFF2F, 0xFF1A, 0xFF09, 0xFEF9,\n    0xFEED, 0xFEE5, 0xFEDF, 0xFEDD, 0xACA4, 0xACBF, 0xAD0C, 0xAD82,\n    0xAE1A, 0xAECA, 0xAF8B, 0xB055, 0xB120, 0xB1E3, 0xB296, 0xB332,\n    0xB3AE, 0xB401, 0xB425, 0xB428, 0xB421, 0xB410, 0xB3F7, 0xB3D4,\n    0xB3AB, 0xB37A, 0xB344, 0xB308, 0xB2C7, 0xB283, 0xB23B, 0xB1F0,\n    0xB1A4, 0xB156, 0xB109, 0xB0BB, 0xB06E, 0xB024, 0xAFDB, 0xAF96,\n    0xAF55, 0xAF18, 0xAEE1, 0xAEAF, 0xAE85, 0xAE61, 0xAE46, 0xAE34,\n    0xAE2C, 0xAE2D, 0xAE38, 0xAE49, 0xAE60, 0xAE7D, 0xAEA0, 0xAEC8,\n    0xAEF4, 0xAF25, 0xAF5A, 0xAF93, 0xAFCF, 0xB00E, 0xB050, 0xB094,\n    0xB0DA, 0xB122, 0xB16B, 0xB1B5, 0xB1FF, 0xB249, 0xB294, 0xB2DD,\n    0xB326, 0xB36E, 0xB3B4, 0xB3F8, 0xB43A, 0xB479, 0xB4B5, 0xB4EE,\n    0xB523, 0xB554, 0xB580, 0xB5A8, 0xB5CB, 0xB5E8, 0xB5FF, 0xB610,\n    0xB61B, 0xB61E, 0x1129, 0x1136, 0x1158, 0x1185, 0x11B2, 0x11D6,\n    0x11E6, 0x11DA, 0x11A6, 0x1141, 0x10A2, 0x0FBE, 0x0E8A, 0x0CFF,\n    0x0B10, 0x0668, 0xFE46, 0xF505, 0xED00, 0xE890, 0xE84D, 0xEA82,\n    0xEE1E, 0xF20F, 0xF541, 0xF6A3, 0xF6AD, 0xF690, 0xF651, 0xF5F3,\n    0xF57A, 0xF4EA, 0xF446, 0xF392, 0xF2D2, 0xF20A, 0xF13D, 0xF070,\n    0xEFA5, 0xEEE0, 0xEE27, 0xED7B, 0xECE1, 0xEC5D, 0xEBF2, 0xEBA4,\n    0xEB68, 0xEB2E, 0xEAF7, 0xEAC2, 0xEA90, 0xEA61, 0xEA34, 0xEA09,\n    0xE9E0, 0xE9BA, 0xE996, 0xE974, 0xE954, 0xE936, 0xE91A, 0xE900,\n    0xE8E7, 0xE8D1, 0xE8BC, 0xE8A8, 0xE896, 0xE886, 0xE877, 0xE86A,\n    0xE85D, 0xE852, 0xE848, 0xE840, 0xE838, 0xE831, 0xE82B, 0xE826,\n    0xE822, 0xE81F, 0xE81C, 0xE81A, 0xE819, 0xE818, 0xE817, 0xE817,\n    0x03FF, 0x03C6, 0x0328, 0x0238, 0x0108, 0xFFAC, 0xFE36, 0xFCB8,\n    0xFB47, 0xF9F5, 0xF8D5, 0xF7F9, 0xF775, 0xF75C, 0xF7C0, 0xFA27,\n    0xFF28, 0x056F, 0x0BAB, 0x1088, 0x145C, 0x1827, 0x1B9C, 0x1E6B,\n    0x2045, 0x20DB, 0x202D, 0x1E9A, 0x1C5F, 0x19B7, 0x16E1, 0x1418,\n    0x119B, 0x0FA5, 0x0E74, 0x0E2F, 0x0E22, 0x0E13, 0x0E02, 0x0DEF,\n    0x0DDB, 0x0DC4, 0x0DAC, 0x0D93, 0x0D78, 0x0D5C, 0x0D3E, 0x0D20,\n    0x0D00, 0x0CE0, 0x0CBF, 0x0C9D, 0x0C7A, 0x0C57, 0x0C34, 0x0C10,\n    0x0BEC, 0x0BC8, 0x0BA3, 0x0B7F, 0x0B5B, 0x0B37, 0x0B14, 0x0AF1,\n    0x0ACE, 0x0AAD, 0x0A8B, 0x0A6B, 0x0A4C, 0x0A2E, 0x0A10, 0x09F4,\n    0x09DA, 0x09C0, 0x09A9, 0x0992, 0x097E, 0x096B, 0x095B, 0x094C,\n    0x093F, 0x0934, 0x092C, 0x0926, 0x0923, 0x0922, 0xF25F, 0xF243,\n    0xF1F2, 0xF172, 0xF0CA, 0xEFFF, 0xEF17, 0xEE18, 0xED08, 0xEBED,\n    0xEACD, 0xE9AE, 0xE896, 0xE78B, 0xE693, 0xE569, 0xE3F6, 0xE284,\n    0xE15D, 0xE0CA, 0xE0E9, 0xE181, 0xE25E, 0xE34B, 0xE415, 0xE486,\n    0xE4B9, 0xE4E7, 0xE513, 0xE53C, 0xE561, 0xE583, 0xE5A1, 0xE5BD,\n    0xE5D5, 0xE5EA, 0xE5FC, 0xE60B, 0xE616, 0xE61E, 0xE623, 0xE625,\n    0xE624, 0xE61F, 0xE618, 0xE60D, 0xE5FF, 0xE5EE, 0xE5DA, 0xE5C4,\n    0xE5AC, 0xE591, 0xE575, 0xE556, 0xE536, 0xE514, 0xE4F1, 0xE4CD,\n    0xE4A7, 0xE481, 0xE45A, 0xE433, 0xE40B, 0xE3E3, 0xE3BC, 0xE394,\n    0xE36C, 0xE345, 0xE31F, 0xE2F9, 0xE2D5, 0xE2B2, 0xE290, 0xE26F,\n    0xE250, 0xE233, 0xE218, 0xE1FF, 0xE1E9, 0xE1D5, 0xE1C3, 0xE1B5,\n    0xE1A9, 0xE1A1, 0xE19C, 0xE19A, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0xB233, 0xB247, 0xB282, 0xB2DB, 0xB34F, 0xB3D6,\n    0xB46A, 0xB506, 0xB5A4, 0xB63D, 0xB6CC, 0xB74B, 0xB7B3, 0xB800,\n    0xB82A, 0xB83E, 0xB84D, 0xB857, 0xB85D, 0xB85E, 0xB85B, 0xB854,\n    0xB84A, 0xB83C, 0xB82C, 0xB819, 0xB804, 0xB7EC, 0xB7D3, 0xB7B9,\n    0xB79E, 0xB781, 0xB764, 0xB747, 0xB72A, 0xB70E, 0xB6F2, 0xB6D7,\n    0xB6BD, 0xB6A5, 0xB68F, 0xB67B, 0xB669, 0xB65A, 0xB64E, 0xB646,\n    0xB63F, 0xB639, 0xB634, 0xB630, 0xB62C, 0xB628, 0xB625, 0xB623,\n    0xB621, 0xB61F, 0xB61E, 0xB61E, 0xB61D, 0xB61D, 0xB61E, 0xB61E,\n    0xB61F, 0xB621, 0xB622, 0xB624, 0xB625, 0xB627, 0xB629, 0xB62C,\n    0xB62E, 0xB630, 0xB632, 0xB635, 0xB637, 0xB639, 0xB63B, 0xB63D,\n    0xB63F, 0xB640, 0xB642, 0xB643, 0xB644, 0xB645, 0xB646, 0xB646,\n    0xDD70, 0xDD69, 0xDD54, 0xDD33, 0xDD07, 0xDCD3, 0xDC98, 0xDC57,\n    0xDC13, 0xDBCC, 0xDB85, 0xDB3E, 0xDAFB, 0xDABC, 0xDA83, 0xDA9B,\n    0xDAB8, 0xDAD7, 0xDAF7, 0xDB18, 0xDB3A, 0xDB5E, 0xDB82, 0xDBA6,\n    0xDBCB, 0xDBF0, 0xDC15, 0xDC39, 0xDC5D, 0xDC80, 0xDCA2, 0xDCC3,\n    0xDCE3, 0xDD01, 0xDD1D, 0xDD37, 0xDD4F, 0xDD65, 0xDD78, 0xDD88,\n    0xDD95, 0xDD9F, 0xDDA5, 0xDDA8, 0xDDA7, 0xDDA1, 0xDD98, 0xDD8A,\n    0xDD79, 0xDD64, 0xDD4B, 0xDD30, 0xDD11, 0xDCF0, 0xDCCC, 0xDCA6,\n    0xDC7E, 0xDC54, 0xDC29, 0xDBFC, 0xDBCE, 0xDB9F, 0xDB6F, 0xDB3F,\n    0xDB0E, 0xDADE, 0xDAAD, 0xDA7D, 0xDA4E, 0xDA20, 0xD9F2, 0xD9C6,\n    0xD99C, 0xD973, 0xD94C, 0xD928, 0xD906, 0xD8E6, 0xD8C9, 0xD8B0,\n    0xD89A, 0xD887, 0xD878, 0xD86D, 0xD866, 0xD864, 0x00B1, 0x00B6,\n    0x00C5, 0x00DD, 0x00FC, 0x0121, 0x014C, 0x017A, 0x01AB, 0x01DD,\n    0x020F, 0x0241, 0x0270, 0x029C, 0x02C3, 0x0272, 0x022F, 0x01E9,\n    0x01A1, 0x0158, 0x010C, 0x00C0, 0x0072, 0x0024, 0xFFD6, 0xFF87,\n    0xFF39, 0xFEEB, 0xFE9D, 0xFE51, 0xFE07, 0xFDBE, 0xFD77, 0xFD33,\n    0xFCF1, 0xFCB2, 0xFC76, 0xFC3E, 0xFC0A, 0xFBDB, 0xFBAF, 0xFB89,\n    0xFB67, 0xFB4B, 0xFB35, 0xFB25, 0xFB1A, 0xFB15, 0xFB15, 0xFB19,\n    0xFB21, 0xFB2E, 0xFB3E, 0xFB52, 0xFB6A, 0xFB84, 0xFBA1, 0xFBC1,\n    0xFBE3, 0xFC07, 0xFC2D, 0xFC55, 0xFC7E, 0xFCA7, 0xFCD2, 0xFCFE,\n    0xFD29, 0xFD55, 0xFD81, 0xFDAC, 0xFDD6, 0xFE00, 0xFE28, 0xFE4F,\n    0xFE74, 0xFE98, 0xFEB9, 0xFED8, 0xFEF4, 0xFF0D, 0xFF23, 0xFF35,\n    0xFF44, 0xFF4F, 0xFF56, 0xFF58, 0xB263, 0xB264, 0xB267, 0xB26C,\n    0xB273, 0xB27B, 0xB284, 0xB28E, 0xB298, 0xB2A3, 0xB2AE, 0xB2B9,\n    0xB2C3, 0xB2CD, 0xB2D6, 0xB2C3, 0xB2AC, 0xB292, 0xB277, 0xB25B,\n    0xB23D, 0xB21F, 0xB1FF, 0xB1E0, 0xB1BF, 0xB19F, 0xB17F, 0xB15F,\n    0xB13F, 0xB121, 0xB103, 0xB0E7, 0xB0CC, 0xB0B2, 0xB09B, 0xB085,\n    0xB072, 0xB062, 0xB054, 0xB049, 0xB041, 0xB03D, 0xB03C, 0xB040,\n    0xB047, 0xB052, 0xB063, 0xB078, 0xB092, 0xB0B0, 0xB0D3, 0xB0F9,\n    0xB123, 0xB151, 0xB182, 0xB1B5, 0xB1EB, 0xB223, 0xB25D, 0xB299,\n    0xB2D6, 0xB314, 0xB353, 0xB393, 0xB3D3, 0xB412, 0xB452, 0xB490,\n    0xB4CE, 0xB50B, 0xB546, 0xB57F, 0xB5B7, 0xB5EC, 0xB61E, 0xB64E,\n    0xB67A, 0xB6A3, 0xB6C8, 0xB6E9, 0xB706, 0xB71E, 0xB732, 0xB740,\n    0xB748, 0xB74B, 0x000A, 0x000C, 0x0011, 0x0018, 0x0021, 0x002B,\n    0x0036, 0x0040, 0x0049, 0x0051, 0x005A, 0x0064, 0x006B, 0x006C,\n    0x0061, 0x0048, 0x001C, 0xFFDA, 0xFF62, 0xFEAE, 0xFDDC, 0xFD0A,\n    0xFC57, 0xFBE2, 0xFBC7, 0xFBC7, 0xFBC7, 0xFBC7, 0xFBC7, 0xFBC7,\n    0xFBC7, 0xFBC7, 0xFBC7, 0xFBC7, 0xFBC7, 0xFBC7, 0xFBC7, 0xFBC7,\n    0xFBC7, 0xFBC7, 0xFBC7, 0xFBC7, 0xFBC7, 0xFBC7, 0xFBC7, 0xFBC7,\n    0xFBC7, 0xFBC7, 0xFBC7, 0xFBC7, 0xFBC7, 0xFBC7, 0xFBC7, 0xFBC7,\n    0xFBC7, 0xFBC7, 0xFBC7, 0xFBC7, 0xFBC7, 0xFBC7, 0xFBC7, 0xFBC7,\n    0xFBC7, 0xFBC7, 0xFBC7, 0xFBC7, 0xFBC7, 0xFBC7, 0xFBC7, 0xFBC7,\n    0xFBC7, 0xFBC7, 0xFBC7, 0xFBC7, 0xFBC7, 0xFBC7, 0xFBC7, 0xFBC7,\n    0xFBC7, 0xFBC7, 0xFBC7, 0xFBC7, 0xFBC7, 0xFBC7, 0xFBC7, 0xFBC7,\n    0xFE5F, 0xFE60, 0xFE62, 0xFE64, 0xFE67, 0xFE6B, 0xFE6E, 0xFE71,\n    0xFE74, 0xFE76, 0xFE76, 0xFE76, 0xFE73, 0xFE6F, 0xFE69, 0xFE60,\n    0xFE55, 0xFE46, 0xFE09, 0xFD9B, 0xFD35, 0xFD14, 0xFD57, 0xFDD9,\n    0xFE69, 0xFED8, 0xFF1B, 0xFF48, 0xFF5B, 0xFF51, 0xFF26, 0xFEE5,\n    0xFE97, 0xFE46, 0xFDFC, 0xFDC4, 0xFDA6, 0xFDC0, 0xFE35, 0xFECB,\n    0xFF43, 0xFF6B, 0xFF6F, 0xFF61, 0xFF47, 0xFF28, 0xFF0A, 0xFEF4,\n    0xFEEB, 0xFEF2, 0xFF04, 0xFF1C, 0xFF36, 0xFF4E, 0xFF60, 0xFF68,\n    0xFF5E, 0xFF4A, 0xFF32, 0xFF21, 0xFF20, 0xFF3E, 0xFF74, 0xFFA8,\n    0xFFBF, 0xFFBF, 0xFFBF, 0xFFBF, 0xFFBF, 0xFFBF, 0xFFBF, 0xFFBF,\n    0xFFBF, 0xFFBF, 0xFFBF, 0xFFBF, 0xFFBF, 0xFFBF, 0xFFBF, 0xFFBF,\n    0xFFBF, 0xFFBF, 0xFFBF, 0xFFBF, 0xFFBF, 0xFFBF, 0xBF3E, 0xC066,\n    0x2345, 0x2333, 0x2300, 0x22B3, 0x2250, 0x21DD, 0x215F, 0x20DC,\n    0x2059, 0x1FDC, 0x1F69, 0x1F06, 0x1EB9, 0x1E88, 0x1E76, 0x1E7A,\n    0x1E83, 0x1E92, 0x1EA5, 0x1EBD, 0x1ED9, 0x1EFA, 0x1F1E, 0x1F45,\n    0x1F6F, 0x1F9C, 0x1FCC, 0x1FFD, 0x2030, 0x2065, 0x209A, 0x20D1,\n    0x2108, 0x213E, 0x2175, 0x21AB, 0x21E1, 0x2215, 0x2248, 0x2279,\n    0x22A7, 0x22D4, 0x22FD, 0x2324, 0x2347, 0x2366, 0x2383, 0x23A1,\n    0x23BE, 0x23DC, 0x23F9, 0x2417, 0x2434, 0x2451, 0x246E, 0x248B,\n    0x24A7, 0x24C3, 0x24DF, 0x24FA, 0x2514, 0x252F, 0x2548, 0x2561,\n    0x257A, 0x2591, 0x25A8, 0x25BE, 0x25D4, 0x25E8, 0x25FC, 0x260E,\n    0x2620, 0x2631, 0x2640, 0x264F, 0x265C, 0x2668, 0x2673, 0x267C,\n    0x2684, 0x268B, 0x2690, 0x2694, 0x2697, 0x2697, 0xFF4D, 0xFF43,\n    0xFF27, 0xFEFB, 0xFEC5, 0xFE85, 0xFE41, 0xFDFB, 0xFDB6, 0xFD75,\n    0xFD3C, 0xFD0F, 0xFCEF, 0xFCE1, 0xFCE7, 0xFCFC, 0xFD17, 0xFD37,\n    0xFD5C, 0xFD85, 0xFDB2, 0xFDE3, 0xFE17, 0xFE4E, 0xFE87, 0xFEC2,\n    0xFEFF, 0xFF3C, 0xFF7B, 0xFFB9, 0xFFF8, 0x0035, 0x0072, 0x00AD,\n    0x00E7, 0x011F, 0x0154, 0x0186, 0x01B4, 0x01DE, 0x0205, 0x0226,\n    0x0242, 0x0259, 0x026A, 0x0274, 0x0279, 0x027A, 0x0278, 0x0271,\n    0x0268, 0x025B, 0x024B, 0x0239, 0x0224, 0x020C, 0x01F3, 0x01D7,\n    0x01BA, 0x019B, 0x017B, 0x0159, 0x0137, 0x0114, 0x00F0, 0x00CC,\n    0x00A7, 0x0083, 0x005F, 0x003B, 0x0018, 0xFFF7, 0xFFD6, 0xFFB6,\n    0xFF97, 0xFF7A, 0xFF5F, 0xFF46, 0xFF2F, 0xFF1A, 0xFF09, 0xFEF9,\n    0xFEED, 0xFEE5, 0xFEDF, 0xFEDD, 0xACA4, 0xACBF, 0xAD0C, 0xAD82,\n    0xAE1A, 0xAECA, 0xAF8B, 0xB055, 0xB120, 0xB1E3, 0xB296, 0xB332,\n    0xB3AE, 0xB401, 0xB425, 0xB428, 0xB421, 0xB410, 0xB3F7, 0xB3D4,\n    0xB3AB, 0xB37A, 0xB344, 0xB308, 0xB2C7, 0xB283, 0xB23B, 0xB1F0,\n    0xB1A4, 0xB156, 0xB109, 0xB0BB, 0xB06E, 0xB024, 0xAFDB, 0xAF96,\n    0xAF55, 0xAF18, 0xAEE1, 0xAEAF, 0xAE85, 0xAE61, 0xAE46, 0xAE34,\n    0xAE2C, 0xAE2D, 0xAE38, 0xAE49, 0xAE60, 0xAE7D, 0xAEA0, 0xAEC8,\n    0xAEF4, 0xAF25, 0xAF5A, 0xAF93, 0xAFCF, 0xB00E, 0xB050, 0xB094,\n    0xB0DA, 0xB122, 0xB16B, 0xB1B5, 0xB1FF, 0xB249, 0xB294, 0xB2DD,\n    0xB326, 0xB36E, 0xB3B4, 0xB3F8, 0xB43A, 0xB479, 0xB4B5, 0xB4EE,\n    0xB523, 0xB554, 0xB580, 0xB5A8, 0xB5CB, 0xB5E8, 0xB5FF, 0xB610,\n    0xB61B, 0xB61E, 0xDD70, 0xDD69, 0xDD54, 0xDD33, 0xDD07, 0xDCD3,\n    0xDC98, 0xDC57, 0xDC13, 0xDBCC, 0xDB85, 0xDB3E, 0xDAFB, 0xDABC,\n    0xDA83, 0xDA9B, 0xDAB8, 0xDAD7, 0xDAF7, 0xDB18, 0xDB3A, 0xDB5E,\n    0xDB82, 0xDBA6, 0xDBCB, 0xDBF0, 0xDC15, 0xDC39, 0xDC5D, 0xDC80,\n    0xDCA2, 0xDCC3, 0xDCE3, 0xDD01, 0xDD1D, 0xDD37, 0xDD4F, 0xDD65,\n    0xDD78, 0xDD88, 0xDD95, 0xDD9F, 0xDDA5, 0xDDA8, 0xDDA7, 0xDDA1,\n    0xDD98, 0xDD8A, 0xDD79, 0xDD64, 0xDD4B, 0xDD30, 0xDD11, 0xDCF0,\n    0xDCCC, 0xDCA6, 0xDC7E, 0xDC54, 0xDC29, 0xDBFC, 0xDBCE, 0xDB9F,\n    0xDB6F, 0xDB3F, 0xDB0E, 0xDADE, 0xDAAD, 0xDA7D, 0xDA4E, 0xDA20,\n    0xD9F2, 0xD9C6, 0xD99C, 0xD973, 0xD94C, 0xD928, 0xD906, 0xD8E6,\n    0xD8C9, 0xD8B0, 0xD89A, 0xD887, 0xD878, 0xD86D, 0xD866, 0xD864,\n    0x00B1, 0x00B6, 0x00C5, 0x00DD, 0x00FC, 0x0121, 0x014C, 0x017A,\n    0x01AB, 0x01DD, 0x020F, 0x0241, 0x0270, 0x029C, 0x02C3, 0x0272,\n    0x022F, 0x01E9, 0x01A1, 0x0158, 0x010C, 0x00C0, 0x0072, 0x0024,\n    0xFFD6, 0xFF87, 0xFF39, 0xFEEB, 0xFE9D, 0xFE51, 0xFE07, 0xFDBE,\n    0xFD77, 0xFD33, 0xFCF1, 0xFCB2, 0xFC76, 0xFC3E, 0xFC0A, 0xFBDB,\n    0xFBAF, 0xFB89, 0xFB67, 0xFB4B, 0xFB35, 0xFB25, 0xFB1A, 0xFB15,\n    0xFB15, 0xFB19, 0xFB21, 0xFB2E, 0xFB3E, 0xFB52, 0xFB6A, 0xFB84,\n    0xFBA1, 0xFBC1, 0xFBE3, 0xFC07, 0xFC2D, 0xFC55, 0xFC7E, 0xFCA7,\n    0xFCD2, 0xFCFE, 0xFD29, 0xFD55, 0xFD81, 0xFDAC, 0xFDD6, 0xFE00,\n    0xFE28, 0xFE4F, 0xFE74, 0xFE98, 0xFEB9, 0xFED8, 0xFEF4, 0xFF0D,\n    0xFF23, 0xFF35, 0xFF44, 0xFF4F, 0xFF56, 0xFF58, 0xB263, 0xB264,\n    0xB267, 0xB26C, 0xB273, 0xB27B, 0xB284, 0xB28E, 0xB298, 0xB2A3,\n    0xB2AE, 0xB2B9, 0xB2C3, 0xB2CD, 0xB2D6, 0xB2C3, 0xB2AC, 0xB292,\n    0xB277, 0xB25B, 0xB23D, 0xB21F, 0xB1FF, 0xB1E0, 0xB1BF, 0xB19F,\n    0xB17F, 0xB15F, 0xB13F, 0xB121, 0xB103, 0xB0E7, 0xB0CC, 0xB0B2,\n    0xB09B, 0xB085, 0xB072, 0xB062, 0xB054, 0xB049, 0xB041, 0xB03D,\n    0xB03C, 0xB040, 0xB047, 0xB052, 0xB063, 0xB078, 0xB092, 0xB0B0,\n    0xB0D3, 0xB0F9, 0xB123, 0xB151, 0xB182, 0xB1B5, 0xB1EB, 0xB223,\n    0xB25D, 0xB299, 0xB2D6, 0xB314, 0xB353, 0xB393, 0xB3D3, 0xB412,\n    0xB452, 0xB490, 0xB4CE, 0xB50B, 0xB546, 0xB57F, 0xB5B7, 0xB5EC,\n    0xB61E, 0xB64E, 0xB67A, 0xB6A3, 0xB6C8, 0xB6E9, 0xB706, 0xB71E,\n    0xB732, 0xB740, 0xB748, 0xB74B, 0xE0FF, 0xC001, 0xE0FB, 0xBF7F,\n    0xF02F, 0xF04A, 0xF096, 0xF110, 0xF1B1, 0xF274, 0xF353, 0xF44B,\n    0xF555, 0xF66C, 0xF78B, 0xF8AC, 0xF9CB, 0xFAE2, 0xFBEB, 0xFCE2,\n    0xFDC1, 0xFE83, 0xFF23, 0xFF9C, 0xFFE7, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFEF4, 0xFEF5,\n    0xFEFA, 0xFF02, 0xFF0D, 0xFF1A, 0xFF29, 0xFF39, 0xFF4B, 0xFF5E,\n    0xFF71, 0xFF84, 0xFF97, 0xFFA9, 0xFFBB, 0xFFCB, 0xFFDA, 0xFFE7,\n    0xFFF2, 0xFFFA, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0xFF3B, 0xFF35, 0xFF23, 0xFF07,\n    0xFEE1, 0xFEB3, 0xFE7F, 0xFE44, 0xFE06, 0xFDC5, 0xFD81, 0xFD3D,\n    0xFCFA, 0xFCB9, 0xFC7A, 0xFC41, 0xFC0C, 0xFBDF, 0xFBB9, 0xFB9D,\n    0xFB8B, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85,\n    0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85,\n    0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85,\n    0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85,\n    0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85,\n    0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85,\n    0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85,\n    0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85,\n    0xFB85, 0xFB85, 0xBF84, 0xD126, 0xD169, 0xD22B, 0xD35F, 0xD4FA,\n    0xD6F0, 0xD934, 0xDBBB, 0xDE78, 0xE160, 0xE466, 0xE77F, 0xEA9E,\n    0xEDB8, 0xF0C0, 0xF3AA, 0xF66B, 0xF8F6, 0xFB40, 0xFD3C, 0xFEDE,\n    0x0019, 0x010B, 0x01D5, 0x027A, 0x02FD, 0x0361, 0x03A7, 0x03D2,\n    0x03E5, 0x03E3, 0x03CD, 0x03A7, 0x0372, 0x0332, 0x02E8, 0x0298,\n    0x0244, 0x01EE, 0x0198, 0x0146, 0x00FA, 0x00B6, 0x007D, 0x0051,\n    0x0035, 0x002B, 0x002C, 0x002C, 0x002C, 0x002C, 0x002D, 0x002D,\n    0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D,\n    0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D,\n    0x002D, 0x002D, 0x002D, 0x002D, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0xF604, 0xF612, 0xF63B, 0xF67C, 0xF6D3, 0xF73D, 0xF7B7,\n    0xF840, 0xF8D4, 0xF971, 0xFA14, 0xFABB, 0xFB64, 0xFC0C, 0xFCAF,\n    0xFD4D, 0xFDE2, 0xFE6B, 0xFEE7, 0xFF52, 0xFFAA, 0xFFED, 0x001F,\n    0x004A, 0x006C, 0x0088, 0x009D, 0x00AC, 0x00B5, 0x00B9, 0x00B8,\n    0x00B4, 0x00AC, 0x00A1, 0x0093, 0x0083, 0x0072, 0x0061, 0x004E,\n    0x003C, 0x002B, 0x001B, 0x000C, 0x0000, 0xFFF8, 0xFFF2, 0xFFF0,\n    0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF1, 0xFFF1, 0xFFF1,\n    0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1,\n    0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1,\n    0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1,\n    0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xEE36,\n    0xEE60, 0xEEDA, 0xEF9B, 0xF09D, 0xF1D8, 0xF344, 0xF4DA, 0xF692,\n    0xF864, 0xFA48, 0xFC38, 0xFE2C, 0x001B, 0x01FF, 0x03D0, 0x0587,\n    0x071B, 0x0885, 0x09BE, 0x0ABE, 0x0B7D, 0x0C0D, 0x0C84, 0x0CE4,\n    0x0D2F, 0x0D65, 0x0D89, 0x0D9C, 0x0DA0, 0x0D96, 0x0D7F, 0x0D5D,\n    0x0D32, 0x0CFE, 0x0CC5, 0x0C86, 0x0C44, 0x0C00, 0x0BBB, 0x0B78,\n    0x0B37, 0x0AFA, 0x0AC3, 0x0A92, 0x0A6B, 0x0A4D, 0x0A32, 0x0A10,\n    0x09E8, 0x09BC, 0x098C, 0x095A, 0x0925, 0x08F0, 0x08BA, 0x0886,\n    0x0854, 0x0824, 0x07F8, 0x07D1, 0x07B0, 0x0795, 0x0781, 0x0777,\n    0x0774, 0x077A, 0x0786, 0x0797, 0x07AF, 0x07CA, 0x07EA, 0x080C,\n    0x0830, 0x0856, 0x087D, 0x08A3, 0x08C9, 0x08ED, 0x090E, 0x092D,\n    0x0948, 0x095E, 0x096F, 0x0979, 0x097D, 0xD126, 0xD169, 0xD22B,\n    0xD35F, 0xD4FA, 0xD6F0, 0xD934, 0xDBBB, 0xDE78, 0xE160, 0xE466,\n    0xE77F, 0xEA9E, 0xEDB8, 0xF0C0, 0xF3AA, 0xF66B, 0xF8F6, 0xFB40,\n    0xFD3C, 0xFEDE, 0x0019, 0x010B, 0x01D5, 0x027A, 0x02FD, 0x0361,\n    0x03A7, 0x03D2, 0x03E5, 0x03E3, 0x03CD, 0x03A7, 0x0372, 0x0332,\n    0x02E8, 0x0298, 0x0244, 0x01EE, 0x0198, 0x0146, 0x00FA, 0x00B6,\n    0x007D, 0x0051, 0x0035, 0x002B, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D,\n    0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D,\n    0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002C, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0x002C, 0xF604, 0xF612, 0xF63B, 0xF67C, 0xF6D3,\n    0xF73D, 0xF7B7, 0xF840, 0xF8D4, 0xF971, 0xFA14, 0xFABB, 0xFB64,\n    0xFC0C, 0xFCAF, 0xFD4D, 0xFDE2, 0xFE6B, 0xFEE7, 0xFF52, 0xFFAA,\n    0xFFED, 0x001F, 0x004A, 0x006C, 0x0088, 0x009D, 0x00AC, 0x00B5,\n    0x00B9, 0x00B8, 0x00B4, 0x00AC, 0x00A1, 0x0093, 0x0083, 0x0072,\n    0x0061, 0x004E, 0x003C, 0x002B, 0x001B, 0x000C, 0x0000, 0xFFF8,\n    0xFFF2, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF1,\n    0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1,\n    0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1,\n    0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1,\n    0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1,\n    0xFFF1, 0xEE36, 0xEE60, 0xEEDA, 0xEF9B, 0xF09D, 0xF1D8, 0xF344,\n    0xF4DA, 0xF692, 0xF864, 0xFA48, 0xFC38, 0xFE2C, 0x001B, 0x01FF,\n    0x03D0, 0x0587, 0x071B, 0x0885, 0x09BE, 0x0ABE, 0x0B7D, 0x0C0D,\n    0x0C84, 0x0CE4, 0x0D2F, 0x0D65, 0x0D89, 0x0D9C, 0x0DA0, 0x0D96,\n    0x0D7F, 0x0D5D, 0x0D32, 0x0CFE, 0x0CC5, 0x0C86, 0x0C44, 0x0C00,\n    0x0BBB, 0x0B78, 0x0B37, 0x0AFA, 0x0AC3, 0x0A92, 0x0A6B, 0x0A4D,\n    0x0A32, 0x0A10, 0x09E8, 0x09BC, 0x098C, 0x095A, 0x0925, 0x08F0,\n    0x08BA, 0x0886, 0x0854, 0x0824, 0x07F8, 0x07D1, 0x07B0, 0x0795,\n    0x0781, 0x0777, 0x0774, 0x077A, 0x0786, 0x0797, 0x07AF, 0x07CA,\n    0x07EA, 0x080C, 0x0830, 0x0856, 0x087D, 0x08A3, 0x08C9, 0x08ED,\n    0x090E, 0x092D, 0x0948, 0x095E, 0x096F, 0x0979, 0x097D, 0xD126,\n    0xD169, 0xD22B, 0xD35F, 0xD4FA, 0xD6F0, 0xD934, 0xDBBB, 0xDE78,\n    0xE160, 0xE466, 0xE77F, 0xEA9E, 0xEDB8, 0xF0C0, 0xF3AA, 0xF66B,\n    0xF8F6, 0xFB40, 0xFD3C, 0xFEDE, 0x0019, 0x010B, 0x01D5, 0x027A,\n    0x02FD, 0x0361, 0x03A7, 0x03D2, 0x03E5, 0x03E3, 0x03CD, 0x03A7,\n    0x0372, 0x0332, 0x02E8, 0x0298, 0x0244, 0x01EE, 0x0198, 0x0146,\n    0x00FA, 0x00B6, 0x007D, 0x0051, 0x0035, 0x002B, 0x002C, 0x002C,\n    0x002C, 0x002C, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D,\n    0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D,\n    0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D, 0x002D,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0xF604, 0xF612, 0xF63B,\n    0xF67C, 0xF6D3, 0xF73D, 0xF7B7, 0xF840, 0xF8D4, 0xF971, 0xFA14,\n    0xFABB, 0xFB64, 0xFC0C, 0xFCAF, 0xFD4D, 0xFDE2, 0xFE6B, 0xFEE7,\n    0xFF52, 0xFFAA, 0xFFED, 0x001F, 0x004A, 0x006C, 0x0088, 0x009D,\n    0x00AC, 0x00B5, 0x00B9, 0x00B8, 0x00B4, 0x00AC, 0x00A1, 0x0093,\n    0x0083, 0x0072, 0x0061, 0x004E, 0x003C, 0x002B, 0x001B, 0x000C,\n    0x0000, 0xFFF8, 0xFFF2, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0,\n    0xFFF0, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1,\n    0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1,\n    0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1,\n    0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1,\n    0xFFF1, 0xFFF1, 0xFFF1, 0xEE36, 0xEE60, 0xEEDA, 0xEF9B, 0xF09D,\n    0xF1D8, 0xF344, 0xF4DA, 0xF692, 0xF864, 0xFA48, 0xFC38, 0xFE2C,\n    0x001B, 0x01FF, 0x03D0, 0x0587, 0x071B, 0x0885, 0x09BE, 0x0ABE,\n    0x0B7D, 0x0C0D, 0x0C84, 0x0CE4, 0x0D2F, 0x0D65, 0x0D89, 0x0D9C,\n    0x0DA0, 0x0D96, 0x0D7F, 0x0D5D, 0x0D32, 0x0CFE, 0x0CC5, 0x0C86,\n    0x0C44, 0x0C00, 0x0BBB, 0x0B78, 0x0B37, 0x0AFA, 0x0AC3, 0x0A92,\n    0x0A6B, 0x0A4D, 0x0A32, 0x0A10, 0x09E8, 0x09BC, 0x098C, 0x095A,\n    0x0925, 0x08F0, 0x08BA, 0x0886, 0x0854, 0x0824, 0x07F8, 0x07D1,\n    0x07B0, 0x0795, 0x0781, 0x0777, 0x0774, 0x077A, 0x0786, 0x0797,\n    0x07AF, 0x07CA, 0x07EA, 0x080C, 0x0830, 0x0856, 0x087D, 0x08A3,\n    0x08C9, 0x08ED, 0x090E, 0x092D, 0x0948, 0x095E, 0x096F, 0x0979,\n    0x097D, 0xF02F, 0xF04A, 0xF096, 0xF110, 0xF1B1, 0xF274, 0xF353,\n    0xF44B, 0xF555, 0xF66C, 0xF78B, 0xF8AC, 0xF9CB, 0xFAE2, 0xFBEB,\n    0xFCE2, 0xFDC1, 0xFE83, 0xFF23, 0xFF9C, 0xFFE7, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFEF4,\n    0xFEF5, 0xFEFA, 0xFF02, 0xFF0D, 0xFF1A, 0xFF29, 0xFF39, 0xFF4B,\n    0xFF5E, 0xFF71, 0xFF84, 0xFF97, 0xFFA9, 0xFFBB, 0xFFCB, 0xFFDA,\n    0xFFE7, 0xFFF2, 0xFFFA, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFF3B, 0xFF35, 0xFF23,\n    0xFF07, 0xFEE1, 0xFEB3, 0xFE7F, 0xFE44, 0xFE06, 0xFDC5, 0xFD81,\n    0xFD3D, 0xFCFA, 0xFCB9, 0xFC7A, 0xFC41, 0xFC0C, 0xFBDF, 0xFBB9,\n    0xFB9D, 0xFB8B, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85,\n    0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85,\n    0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85,\n    0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85,\n    0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85,\n    0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85,\n    0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85,\n    0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85, 0xFB85,\n    0xFB85, 0xFB85, 0xFB85, 0xFBEF, 0xFBF5, 0xFC04, 0xFC19, 0xFC34,\n    0xFC55, 0xFC7C, 0xFCA7, 0xFCD5, 0xFD07, 0xFD3C, 0xFD73, 0xFDAB,\n    0xFDE4, 0xFE1D, 0xFE56, 0xFE8E, 0xFEC4, 0xFEF8, 0xFF29, 0xFF56,\n    0xFF80, 0xFFA5, 0xFFC4, 0xFFDE, 0xFFF1, 0xFFFC, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xFFDB, 0xFFDB, 0xFFDC, 0xFFDD, 0xFFDE, 0xFFDF, 0xFFE0,\n    0xFFE2, 0xFFE3, 0xFFE5, 0xFFE7, 0xFFE9, 0xFFEB, 0xFFED, 0xFFEF,\n    0xFFF1, 0xFFF3, 0xFFF5, 0xFFF7, 0xFFF9, 0xFFFA, 0xFFFC, 0xFFFD,\n    0xFFFE, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x40D1,\n    0x40D0, 0x40CD, 0x40C9, 0x40C3, 0x40BC, 0x40B5, 0x40AC, 0x40A3,\n    0x4099, 0x408E, 0x4083, 0x4078, 0x406C, 0x4061, 0x4055, 0x404A,\n    0x403F, 0x4034, 0x402B, 0x4021, 0x4019, 0x4012, 0x400B, 0x4006,\n    0x4002, 0x4000, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x0000,\n};\n\n// 0x0501855C\nstatic const u16 peach_seg5_animindex_501855C[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0003, 0x0001, 0x0004, 0x0001, 0x0005,\n    0x0056, 0x0DD3, 0x0056, 0x0E29, 0x0056, 0x0E7F,\n    0x0056, 0x0CD1, 0x0056, 0x0D27, 0x0056, 0x0D7D,\n    0x0056, 0x0BCF, 0x0056, 0x0C25, 0x0056, 0x0C7B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x06BF,\n    0x0056, 0x0006, 0x0056, 0x005C, 0x0056, 0x00B2,\n    0x0056, 0x0ACD, 0x0056, 0x0B23, 0x0056, 0x0B79,\n    0x0056, 0x09CB, 0x0056, 0x0A21, 0x0056, 0x0A77,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x09CA,\n    0x0056, 0x06C0, 0x0056, 0x0716, 0x0056, 0x076C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0056, 0x020A,\n    0x0056, 0x0108, 0x0056, 0x015E, 0x0056, 0x01B4,\n    0x0056, 0x0260, 0x0056, 0x02B6, 0x0056, 0x030C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x08C7,\n    0x0056, 0x07C2, 0x0056, 0x0818, 0x0056, 0x086E,\n    0x0001, 0x0000, 0x0056, 0x0464, 0x0056, 0x04BA,\n    0x0056, 0x0362, 0x0056, 0x03B8, 0x0056, 0x040E,\n    0x0056, 0x0510, 0x0056, 0x0566, 0x0056, 0x05BC,\n    0x0056, 0x08C8, 0x0056, 0x091E, 0x0056, 0x0974,\n    0x0001, 0x08C4, 0x0001, 0x08C5, 0x0001, 0x08C6,\n    0x0056, 0x0612, 0x0056, 0x0668, 0x0001, 0x06BE,\n};\n\n// 0x05018664\nstatic const struct Animation peach_seg5_anim_05018664 = {\n    1,\n    0,\n    0,\n    0,\n    0x56,\n    ANIMINDEX_NUMPARTS(peach_seg5_animindex_501855C),\n    peach_seg5_animvalue_050167B0,\n    peach_seg5_animindex_501855C,\n    0,\n};\n"
  },
  {
    "path": "actors/peach/anims/anim_0501B328.inc.c",
    "content": "// 0x0501867C\nstatic const s16 peach_seg5_animvalue_0501867C[] = {\n    0x0000, 0x015E, 0x015F, 0x0160, 0x0161, 0x0163, 0x0163, 0x0163,\n    0x0161, 0x0160, 0x015F, 0x015E, 0x015F, 0x015F, 0x0160, 0x0161,\n    0x0162, 0x0161, 0x0161, 0x0160, 0x015F, 0x015E, 0x015E, 0x015F,\n    0x015F, 0x0160, 0x0160, 0x015F, 0x015F, 0x015F, 0x015E, 0x015E,\n    0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E,\n    0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E,\n    0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E,\n    0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E,\n    0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E,\n    0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E,\n    0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E,\n    0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E,\n    0x015F, 0x015F, 0x015F, 0x015F, 0x015F, 0x015F, 0x015F, 0x0160,\n    0x0160, 0x0160, 0x0161, 0x0161, 0x0162, 0x0164, 0x0165, 0x0167,\n    0x0168, 0x0169, 0x0169, 0x0168, 0x0166, 0x0164, 0x0162, 0x0160,\n    0x015F, 0x015F, 0x0160, 0x0162, 0x0163, 0x0165, 0x0165, 0x0164,\n    0x0163, 0x0161, 0x0160, 0x015E, 0x015E, 0x015E, 0x015E, 0x015E,\n    0x015E, 0xFFDB, 0xFFDB, 0xFFDC, 0xFFDD, 0xFFE0, 0xFFE4, 0xFFEB,\n    0xFFF3, 0xFFFC, 0x0002, 0x0006, 0x0008, 0x0011, 0x001D, 0x0027,\n    0x002B, 0x002E, 0x0034, 0x003D, 0x0047, 0x004F, 0x0056, 0x005C,\n    0x0062, 0x0067, 0x006B, 0x006F, 0x0073, 0x0076, 0x0077, 0x0078,\n    0x0079, 0x007A, 0x007A, 0x007B, 0x007B, 0x007B, 0x007C, 0x007C,\n    0x007C, 0x007C, 0x007C, 0x007C, 0x007D, 0x007D, 0x007D, 0x007D,\n    0x007D, 0x007E, 0x007E, 0x007F, 0x007F, 0x0080, 0x0080, 0x0081,\n    0x0081, 0x0082, 0x0083, 0x0083, 0x0084, 0x0084, 0x0085, 0x0086,\n    0x0086, 0x0087, 0x0088, 0x0088, 0x0089, 0x0089, 0x008A, 0x008B,\n    0x008C, 0x008D, 0x008E, 0x008E, 0x008E, 0x008D, 0x008B, 0x0089,\n    0x0088, 0x0087, 0x0087, 0x0086, 0x0086, 0x0086, 0x0086, 0x0086,\n    0x0086, 0x0085, 0x0085, 0x0085, 0x0085, 0x0085, 0x0085, 0x0084,\n    0x0084, 0x0083, 0x0083, 0x0082, 0x0081, 0x007F, 0x007E, 0x007C,\n    0x007A, 0x0078, 0x0076, 0x0074, 0x0073, 0x0071, 0x006E, 0x0069,\n    0x0063, 0x005B, 0x0050, 0x0043, 0x0036, 0x002D, 0x0027, 0x0022,\n    0x001E, 0x001B, 0x0018, 0x0014, 0x000E, 0x0006, 0xFFFF, 0xFFF8,\n    0xFFF1, 0xFFEC, 0xFFE7, 0xFFE3, 0xFFE0, 0xFFDE, 0xFFDC, 0xFFDB,\n    0xFFDB, 0xC50F, 0x3FFA, 0xC50F, 0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4,\n    0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4,\n    0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4,\n    0xFEB4, 0xFEB4, 0xFEB4, 0xFEB5, 0xFEB5, 0xFEB5, 0xFEB5, 0xFEB5,\n    0xFEB5, 0xFEB5, 0xFEB6, 0xFEB6, 0xFEB6, 0xFEB6, 0xFEB6, 0xFEB6,\n    0xFEB7, 0xFEB7, 0xFEB7, 0xFEB7, 0xFEB7, 0xFEB8, 0xFEB8, 0xFEB8,\n    0xFEB8, 0xFEB9, 0xFEB9, 0xFEB9, 0xFEBA, 0xFEBA, 0xFEBB, 0xFEBB,\n    0xFEBC, 0xFEBC, 0xFEBD, 0xFEBE, 0xFEBE, 0xFEBF, 0xFEC0, 0xFEC0,\n    0xFEC1, 0xFEC2, 0xFEC3, 0xFEC3, 0xFEC4, 0xFEC5, 0xFEC6, 0xFEC6,\n    0xFEC7, 0xFEC8, 0xFEC8, 0xFEC9, 0xFEC9, 0xFECA, 0xFECA, 0xFECB,\n    0xFECA, 0xFECA, 0xFEC9, 0xFEC8, 0xFEC7, 0xFEC5, 0xFEC4, 0xFEC2,\n    0xFEC0, 0xFEBF, 0xFEBD, 0xFEBC, 0xFEBB, 0xFEBA, 0xFEB9, 0xFEB9,\n    0xFEB8, 0xFEB8, 0xFEB7, 0xFEB7, 0xFEB7, 0xFEB6, 0xFEB6, 0xFEB6,\n    0xFEB6, 0xFEB6, 0xFEB5, 0xFEB5, 0xFEB5, 0xFEB5, 0xFEB5, 0xFEB5,\n    0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4,\n    0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4,\n    0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4,\n    0xFEB4, 0xFEB4, 0xFEB4, 0xFEB4, 0xFFF7, 0xFFF7, 0xFFF8, 0xFFFA,\n    0xFFFB, 0xFFFD, 0xFFFF, 0x0000, 0x0002, 0x0004, 0x0006, 0x0007,\n    0x0008, 0x0008, 0x0008, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009,\n    0x0009, 0x000A, 0x000B, 0x000C, 0x000E, 0x000F, 0x0011, 0x0013,\n    0x0015, 0x0017, 0x0019, 0x001B, 0x001D, 0x001F, 0x0021, 0x0023,\n    0x0025, 0x0028, 0x002A, 0x002C, 0x002E, 0x0030, 0x0033, 0x0035,\n    0x0037, 0x0039, 0x003C, 0x003E, 0x0040, 0x0042, 0x0044, 0x0047,\n    0x0049, 0x004B, 0x004D, 0x0050, 0x0052, 0x0055, 0x0057, 0x0059,\n    0x005C, 0x005E, 0x0061, 0x0063, 0x0065, 0x0068, 0x006A, 0x006C,\n    0x006E, 0x0070, 0x0072, 0x0074, 0x0076, 0x0078, 0x0079, 0x007A,\n    0x007A, 0x0078, 0x0076, 0x0072, 0x006E, 0x006A, 0x0065, 0x005F,\n    0x005A, 0x0054, 0x004F, 0x004A, 0x0046, 0x0042, 0x003F, 0x003C,\n    0x0039, 0x0036, 0x0033, 0x0031, 0x002E, 0x002C, 0x002A, 0x0027,\n    0x0025, 0x0023, 0x0021, 0x001F, 0x001D, 0x001B, 0x0019, 0x0017,\n    0x0016, 0x0014, 0x0012, 0x0011, 0x000F, 0x000E, 0x000D, 0x000B,\n    0x000A, 0x0009, 0x0008, 0x0007, 0x0005, 0x0004, 0x0003, 0x0001,\n    0x0000, 0xFFFF, 0xFFFE, 0xFFFD, 0xFFFC, 0xFFFB, 0xFFFA, 0xFFF9,\n    0xFFF8, 0xFFF7, 0xFFF7, 0xFFF7, 0xC917, 0xC921, 0xC93C, 0xC965,\n    0xC999, 0xC9D5, 0xCA15, 0xCA56, 0xCA95, 0xCACE, 0xCAFF, 0xCB24,\n    0xCB3D, 0xCB4D, 0xCB56, 0xCB5A, 0xCB5C, 0xCB5C, 0xCB5F, 0xCB65,\n    0xCB71, 0xCB85, 0xCBA3, 0xCBCE, 0xCC00, 0xCC35, 0xCC6B, 0xCCA4,\n    0xCCDE, 0xCD1A, 0xCD57, 0xCD96, 0xCDD6, 0xCE18, 0xCE5A, 0xCE9E,\n    0xCEE2, 0xCF27, 0xCF6D, 0xCFB3, 0xCFFA, 0xD041, 0xD088, 0xD0CF,\n    0xD117, 0xD15D, 0xD1A4, 0xD1EA, 0xD230, 0xD275, 0xD2BB, 0xD303,\n    0xD34C, 0xD397, 0xD3E3, 0xD430, 0xD47E, 0xD4CC, 0xD51B, 0xD56A,\n    0xD5B8, 0xD607, 0xD655, 0xD6A2, 0xD6EE, 0xD739, 0xD782, 0xD7CA,\n    0xD810, 0xD853, 0xD895, 0xD8D4, 0xD910, 0xD949, 0xD97F, 0xD99A,\n    0xD98A, 0xD954, 0xD8FF, 0xD891, 0xD80E, 0xD777, 0xD6D3, 0xD625,\n    0xD574, 0xD4C4, 0xD41A, 0xD37C, 0xD2EE, 0xD275, 0xD20C, 0xD1A8,\n    0xD14A, 0xD0F0, 0xD09A, 0xD048, 0xCFFA, 0xCFAE, 0xCF66, 0xCF20,\n    0xCEDC, 0xCE9A, 0xCE5A, 0xCE1A, 0xCDDB, 0xCD9C, 0xCD5F, 0xCD26,\n    0xCCF0, 0xCCBD, 0xCC8C, 0xCC5E, 0xCC32, 0xCC07, 0xCBDE, 0xCBB6,\n    0xCB8F, 0xCB68, 0xCB42, 0xCB1B, 0xCAF4, 0xCACA, 0xCA9F, 0xCA74,\n    0xCA49, 0xCA1E, 0xC9F4, 0xC9CC, 0xC9A7, 0xC985, 0xC966, 0xC94B,\n    0xC935, 0xC925, 0xC91B, 0xC917, 0x141D, 0x141B, 0x1417, 0x140F,\n    0x1406, 0x13F9, 0x13EA, 0x13D9, 0x13C6, 0x13B0, 0x1399, 0x1380,\n    0x1365, 0x1348, 0x132A, 0x130A, 0x12E9, 0x12C7, 0x12A4, 0x1280,\n    0x125B, 0x1236, 0x1210, 0x11E9, 0x11C2, 0x119B, 0x1174, 0x114D,\n    0x1126, 0x10FF, 0x10D8, 0x10B2, 0x108D, 0x1068, 0x1044, 0x1021,\n    0x0FFF, 0x0FDE, 0x0FBE, 0x0FA0, 0x0F83, 0x0F68, 0x0F4F, 0x0F37,\n    0x0F22, 0x0F0E, 0x0EFD, 0x0EEE, 0x0EE2, 0x0ED8, 0x0ED4, 0x0EDB,\n    0x0EE9, 0x0F00, 0x0F1E, 0x0F42, 0x0F6B, 0x0F99, 0x0FCA, 0x0FFD,\n    0x1032, 0x1068, 0x109E, 0x10D3, 0x1106, 0x1137, 0x1164, 0x118C,\n    0x11AF, 0x11CB, 0x11E3, 0x11F8, 0x1208, 0x1214, 0x121A, 0x121A,\n    0x1213, 0x1204, 0x11EC, 0x11CB, 0x1197, 0x1149, 0x10EA, 0x1081,\n    0x1015, 0x0FAE, 0x0F54, 0x0F0D, 0x0EE1, 0x0ED8, 0x0EE4, 0x0EF3,\n    0x0F04, 0x0F18, 0x0F2E, 0x0F47, 0x0F61, 0x0F7E, 0x0F9C, 0x0FBC,\n    0x0FDE, 0x1001, 0x1025, 0x104A, 0x1071, 0x1098, 0x10C0, 0x10E8,\n    0x1111, 0x113B, 0x1164, 0x118E, 0x11B7, 0x11E0, 0x1209, 0x1231,\n    0x1259, 0x1280, 0x12A6, 0x12CB, 0x12EF, 0x1311, 0x1332, 0x1352,\n    0x136F, 0x138B, 0x13A5, 0x13BD, 0x13D2, 0x13E5, 0x13F5, 0x1403,\n    0x140E, 0x1416, 0x141B, 0x141D, 0xEEA9, 0xEEB3, 0xEED2, 0xEF03,\n    0xEF47, 0xEF9D, 0xF004, 0xF07C, 0xF103, 0xF199, 0xF23E, 0xF2F0,\n    0xF3AF, 0xF47A, 0xF551, 0xF632, 0xF71D, 0xF812, 0xF90F, 0xFA14,\n    0xFB20, 0xFC32, 0xFD4B, 0xFE68, 0xFF89, 0x00AE, 0x01D5, 0x0300,\n    0x042B, 0x0557, 0x0684, 0x07AF, 0x08D9, 0x0A01, 0x0B26, 0x0C48,\n    0x0D65, 0x0E7D, 0x0F90, 0x109C, 0x11A1, 0x129E, 0x1392, 0x147D,\n    0x155E, 0x1635, 0x1700, 0x17BF, 0x1871, 0x1915, 0x19A3, 0x1A14,\n    0x1A6A, 0x1AA8, 0x1AD0, 0x1AE4, 0x1AE7, 0x1ADB, 0x1AC2, 0x1A9F,\n    0x1A74, 0x1A43, 0x1A10, 0x19DC, 0x19A9, 0x197A, 0x1951, 0x1932,\n    0x191D, 0x1915, 0x1915, 0x1915, 0x1915, 0x1915, 0x1915, 0x1915,\n    0x1915, 0x1915, 0x1915, 0x1915, 0x1927, 0x1953, 0x198F, 0x19CF,\n    0x1A08, 0x1A2D, 0x1A32, 0x1A0D, 0x19B2, 0x1915, 0x184C, 0x1777,\n    0x1694, 0x15A6, 0x14AE, 0x13AB, 0x129F, 0x118B, 0x106F, 0x0F4D,\n    0x0E24, 0x0CF6, 0x0BC4, 0x0A8E, 0x0955, 0x0819, 0x06DD, 0x05A0,\n    0x0464, 0x0328, 0x01EE, 0x00B7, 0xFF84, 0xFE55, 0xFD2B, 0xFC06,\n    0xFAE8, 0xF9D1, 0xF8C3, 0xF7BD, 0xF6C1, 0xF5D0, 0xF4EA, 0xF410,\n    0xF343, 0xF284, 0xF1D3, 0xF131, 0xF0A0, 0xF01F, 0xEFB0, 0xEF54,\n    0xEF0A, 0xEED5, 0xEEB4, 0xEEA9, 0xD9FF, 0xDA6B, 0xDAD8, 0xDB46,\n    0xDBB5, 0xDC25, 0xDC97, 0xDD08, 0xDD7B, 0xDDEE, 0xDE62, 0xDED7,\n    0xDF4B, 0xDFC0, 0xE036, 0xE0AB, 0xE121, 0xE196, 0xE20C, 0xE282,\n    0xE2F7, 0xE36C, 0xE3E0, 0xE455, 0xE4C8, 0xE53B, 0xE5AE, 0xE61F,\n    0xE690, 0xE700, 0xE76F, 0xE7DD, 0xE84A, 0xE8B5, 0xE91F, 0xE988,\n    0xE9EF, 0xEA55, 0xEABA, 0xEB1C, 0xEB7D, 0xEBDC, 0xEC39, 0xEC94,\n    0xECED, 0xED44, 0xED98, 0xEDEB, 0xEE3B, 0xEE88, 0xEECD, 0xEF03,\n    0xEF2D, 0xEF4B, 0xEF5E, 0xEF68, 0xEF69, 0xEF64, 0xEF57, 0xEF47,\n    0xEF32, 0xEF1A, 0xEF01, 0xEEE8, 0xEECF, 0xEEB9, 0xEEA5, 0xEE96,\n    0xEE8C, 0xEE88, 0xEE88, 0xEE88, 0xEE88, 0xEE88, 0xEE88, 0xEE88,\n    0xEE88, 0xEE88, 0xEE88, 0xEE88, 0xEE91, 0xEEA6, 0xEEC3, 0xEEE2,\n    0xEEFD, 0xEF0F, 0xEF12, 0xEF00, 0xEED4, 0xEE88, 0xEE27, 0xEDBF,\n    0xED52, 0xECDF, 0xEC66, 0xEBE9, 0xEB68, 0xEAE2, 0xEA58, 0xE9CC,\n    0xE93C, 0xE8AA, 0xE816, 0xE780, 0xE6E8, 0xE650, 0xE5B6, 0xE51D,\n    0xE484, 0xE3EB, 0xE353, 0xE2BD, 0xE228, 0xE195, 0xE104, 0xE077,\n    0xDFEC, 0xDF65, 0xDEE2, 0xDE64, 0xDDEA, 0xDD75, 0xDD06, 0xDC9C,\n    0xDC39, 0xDBDC, 0xDB87, 0xDB39, 0xDAF2, 0xDAB4, 0xDA7E, 0xDA51,\n    0xDA2E, 0xDA14, 0xDA04, 0xD9FF, 0xB6A1, 0xB6A0, 0xB69D, 0xB697,\n    0xB68F, 0xB685, 0xB679, 0xB66C, 0xB65C, 0xB64B, 0xB638, 0xB623,\n    0xB60D, 0xB5F6, 0xB5DD, 0xB5C3, 0xB5A8, 0xB58C, 0xB56F, 0xB551,\n    0xB532, 0xB512, 0xB4F2, 0xB4D1, 0xB4AF, 0xB48E, 0xB46C, 0xB449,\n    0xB427, 0xB404, 0xB3E2, 0xB3BF, 0xB39D, 0xB37B, 0xB359, 0xB337,\n    0xB317, 0xB2F6, 0xB2D7, 0xB2B8, 0xB29A, 0xB27D, 0xB260, 0xB245,\n    0xB22B, 0xB213, 0xB1FB, 0xB1E5, 0xB1D1, 0xB1BE, 0xB1AD, 0xB1A0,\n    0xB196, 0xB18F, 0xB18B, 0xB188, 0xB188, 0xB189, 0xB18C, 0xB190,\n    0xB195, 0xB19B, 0xB1A1, 0xB1A7, 0xB1AD, 0xB1B2, 0xB1B7, 0xB1BA,\n    0xB1BD, 0xB1BE, 0xB1BE, 0xB1BE, 0xB1BE, 0xB1BE, 0xB1BE, 0xB1BE,\n    0xB1BE, 0xB1BE, 0xB1BE, 0xB1BE, 0xB1BC, 0xB1B7, 0xB1B0, 0xB1A8,\n    0xB1A2, 0xB19E, 0xB19D, 0xB1A1, 0xB1AC, 0xB1BE, 0xB1D5, 0xB1EE,\n    0xB208, 0xB223, 0xB240, 0xB25D, 0xB27C, 0xB29C, 0xB2BD, 0xB2DE,\n    0xB301, 0xB323, 0xB347, 0xB36A, 0xB38E, 0xB3B3, 0xB3D7, 0xB3FC,\n    0xB420, 0xB445, 0xB469, 0xB48D, 0xB4B0, 0xB4D3, 0xB4F5, 0xB517,\n    0xB538, 0xB558, 0xB577, 0xB596, 0xB5B3, 0xB5CE, 0xB5E9, 0xB602,\n    0xB61A, 0xB630, 0xB644, 0xB657, 0xB667, 0xB676, 0xB683, 0xB68E,\n    0xB696, 0xB69C, 0xB6A0, 0xB6A1, 0x2697, 0x2695, 0x268E, 0x2683,\n    0x2674, 0x2661, 0x264A, 0x2630, 0x2612, 0x25F0, 0x25CC, 0x25A4,\n    0x257A, 0x254D, 0x251D, 0x24EB, 0x24B7, 0x2480, 0x2448, 0x240E,\n    0x23D3, 0x2396, 0x2357, 0x2318, 0x22D8, 0x2297, 0x2255, 0x2213,\n    0x21D0, 0x218D, 0x214B, 0x2108, 0x20C6, 0x2084, 0x2043, 0x2003,\n    0x1FC3, 0x1F85, 0x1F48, 0x1F0D, 0x1ED3, 0x1E9A, 0x1E64, 0x1E30,\n    0x1DFE, 0x1DCE, 0x1DA1, 0x1D77, 0x1D4F, 0x1D2B, 0x1D0B, 0x1CF2,\n    0x1CDF, 0x1CD1, 0x1CC8, 0x1CC4, 0x1CC3, 0x1CC6, 0x1CCB, 0x1CD3,\n    0x1CDD, 0x1CE7, 0x1CF3, 0x1CFE, 0x1D0A, 0x1D14, 0x1D1D, 0x1D24,\n    0x1D29, 0x1D2B, 0x1D2B, 0x1D2B, 0x1D2B, 0x1D2B, 0x1D2B, 0x1D2B,\n    0x1D2B, 0x1D2B, 0x1D2B, 0x1D2B, 0x1D27, 0x1D1D, 0x1D0F, 0x1D01,\n    0x1CF5, 0x1CEC, 0x1CEB, 0x1CF3, 0x1D08, 0x1D2B, 0x1D57, 0x1D87,\n    0x1DB9, 0x1DEE, 0x1E25, 0x1E5E, 0x1E9A, 0x1ED7, 0x1F16, 0x1F57,\n    0x1F99, 0x1FDC, 0x2020, 0x2065, 0x20AA, 0x20F0, 0x2137, 0x217D,\n    0x21C3, 0x220A, 0x224F, 0x2294, 0x22D9, 0x231C, 0x235E, 0x239F,\n    0x23DF, 0x241D, 0x2459, 0x2493, 0x24CB, 0x2501, 0x2534, 0x2564,\n    0x2592, 0x25BC, 0x25E3, 0x2607, 0x2628, 0x2644, 0x265D, 0x2672,\n    0x2682, 0x268E, 0x2695, 0x2697, 0xFEDD, 0xFEDB, 0xFED3, 0xFEC6,\n    0xFEB4, 0xFE9E, 0xFE83, 0xFE64, 0xFE41, 0xFE1A, 0xFDF0, 0xFDC2,\n    0xFD90, 0xFD5C, 0xFD24, 0xFCEA, 0xFCAD, 0xFC6D, 0xFC2C, 0xFBE8,\n    0xFBA3, 0xFB5C, 0xFB13, 0xFAC9, 0xFA7E, 0xFA33, 0xF9E6, 0xF999,\n    0xF94B, 0xF8FD, 0xF8B0, 0xF862, 0xF815, 0xF7C8, 0xF77C, 0xF731,\n    0xF6E8, 0xF69F, 0xF658, 0xF612, 0xF5CF, 0xF58D, 0xF54E, 0xF511,\n    0xF4D7, 0xF49F, 0xF46B, 0xF439, 0xF40B, 0xF3E1, 0xF3BC, 0xF39F,\n    0xF388, 0xF378, 0xF36E, 0xF369, 0xF368, 0xF36B, 0xF372, 0xF37B,\n    0xF386, 0xF392, 0xF3A0, 0xF3AD, 0xF3BA, 0xF3C7, 0xF3D1, 0xF3D9,\n    0xF3DF, 0xF3E1, 0xF3E1, 0xF3E1, 0xF3E1, 0xF3E1, 0xF3E1, 0xF3E1,\n    0xF3E1, 0xF3E1, 0xF3E1, 0xF3E1, 0xF3DC, 0xF3D1, 0xF3C1, 0xF3B0,\n    0xF3A2, 0xF398, 0xF397, 0xF3A0, 0xF3B8, 0xF3E1, 0xF415, 0xF44C,\n    0xF487, 0xF4C4, 0xF505, 0xF548, 0xF58D, 0xF5D4, 0xF61E, 0xF669,\n    0xF6B6, 0xF704, 0xF754, 0xF7A4, 0xF7F5, 0xF847, 0xF898, 0xF8EB,\n    0xF93D, 0xF98E, 0xF9DF, 0xFA30, 0xFA80, 0xFACE, 0xFB1C, 0xFB67,\n    0xFBB1, 0xFBFA, 0xFC40, 0xFC83, 0xFCC5, 0xFD03, 0xFD3F, 0xFD77,\n    0xFDAC, 0xFDDE, 0xFE0B, 0xFE35, 0xFE5B, 0xFE7C, 0xFE99, 0xFEB1,\n    0xFEC4, 0xFED2, 0xFEDA, 0xFEDD, 0xB61E, 0xB61B, 0xB612, 0xB602,\n    0xB5ED, 0xB5D2, 0xB5B2, 0xB58D, 0xB563, 0xB534, 0xB501, 0xB4CA,\n    0xB48F, 0xB44F, 0xB40D, 0xB3C7, 0xB37D, 0xB331, 0xB2E3, 0xB292,\n    0xB23E, 0xB1E9, 0xB192, 0xB139, 0xB0DF, 0xB084, 0xB028, 0xAFCB,\n    0xAF6E, 0xAF11, 0xAEB4, 0xAE56, 0xADFA, 0xAD9E, 0xAD43, 0xACE9,\n    0xAC90, 0xAC39, 0xABE4, 0xAB90, 0xAB3F, 0xAAF0, 0xAAA4, 0xAA5B,\n    0xAA15, 0xA9D3, 0xA993, 0xA958, 0xA921, 0xA8EE, 0xA8C2, 0xA89E,\n    0xA884, 0xA870, 0xA864, 0xA85E, 0xA85D, 0xA861, 0xA868, 0xA873,\n    0xA881, 0xA890, 0xA8A0, 0xA8B0, 0xA8C0, 0xA8CE, 0xA8DB, 0xA8E5,\n    0xA8EB, 0xA8EE, 0xA8EE, 0xA8EE, 0xA8EE, 0xA8EE, 0xA8EE, 0xA8EE,\n    0xA8EE, 0xA8EE, 0xA8EE, 0xA8EE, 0xA8E8, 0xA8DA, 0xA8C8, 0xA8B4,\n    0xA8A2, 0xA897, 0xA895, 0xA8A1, 0xA8BD, 0xA8EE, 0xA92C, 0xA96F,\n    0xA9B5, 0xA9FF, 0xAA4C, 0xAA9D, 0xAAF0, 0xAB46, 0xAB9E, 0xABF8,\n    0xAC55, 0xACB2, 0xAD12, 0xAD72, 0xADD3, 0xAE35, 0xAE98, 0xAEFA,\n    0xAF5D, 0xAFBF, 0xB020, 0xB081, 0xB0E1, 0xB13F, 0xB19C, 0xB1F7,\n    0xB250, 0xB2A6, 0xB2FA, 0xB34C, 0xB39A, 0xB3E5, 0xB42D, 0xB470,\n    0xB4B0, 0xB4EB, 0xB522, 0xB555, 0xB582, 0xB5AA, 0xB5CC, 0xB5E9,\n    0xB600, 0xB611, 0xB61B, 0xB61E, 0xE817, 0xE878, 0xE8D9, 0xE93C,\n    0xE9A0, 0xEA04, 0xEA6A, 0xEAD0, 0xEB36, 0xEB9E, 0xEC06, 0xEC6E,\n    0xECD6, 0xED3F, 0xEDA8, 0xEE12, 0xEE7B, 0xEEE5, 0xEF4E, 0xEFB7,\n    0xF020, 0xF089, 0xF0F2, 0xF15A, 0xF1C1, 0xF228, 0xF28F, 0xF2F5,\n    0xF35A, 0xF3BE, 0xF422, 0xF484, 0xF4E5, 0xF546, 0xF5A5, 0xF603,\n    0xF65F, 0xF6BB, 0xF714, 0xF76D, 0xF7C4, 0xF819, 0xF86C, 0xF8BE,\n    0xF90D, 0xF95B, 0xF9A7, 0xF9F1, 0xFA38, 0xFA7E, 0xFABB, 0xFAEC,\n    0xFB12, 0xFB2C, 0xFB3E, 0xFB46, 0xFB48, 0xFB42, 0xFB38, 0xFB28,\n    0xFB16, 0xFB01, 0xFAEA, 0xFAD4, 0xFABE, 0xFAA9, 0xFA98, 0xFA8A,\n    0xFA81, 0xFA7E, 0xFA7E, 0xFA7E, 0xFA7E, 0xFA7E, 0xFA7E, 0xFA7E,\n    0xFA7E, 0xFA7E, 0xFA7E, 0xFA7E, 0xFA85, 0xFA99, 0xFAB3, 0xFACE,\n    0xFAE7, 0xFAF7, 0xFAF9, 0xFAE9, 0xFAC2, 0xFA7E, 0xFA27, 0xF9CA,\n    0xF968, 0xF900, 0xF895, 0xF824, 0xF7B0, 0xF739, 0xF6BD, 0xF63F,\n    0xF5BF, 0xF53C, 0xF4B7, 0xF430, 0xF3A9, 0xF320, 0xF297, 0xF20D,\n    0xF184, 0xF0FB, 0xF073, 0xEFEC, 0xEF67, 0xEEE3, 0xEE62, 0xEDE3,\n    0xED67, 0xECEE, 0xEC78, 0xEC07, 0xEB9A, 0xEB31, 0xEACD, 0xEA6F,\n    0xEA16, 0xE9C3, 0xE976, 0xE930, 0xE8F1, 0xE8B9, 0xE889, 0xE861,\n    0xE841, 0xE82A, 0xE81C, 0xE817, 0x0922, 0x089B, 0x0812, 0x0788,\n    0x06FC, 0x066F, 0x05E1, 0x0552, 0x04C3, 0x0432, 0x03A1, 0x030F,\n    0x027C, 0x01E9, 0x0156, 0x00C3, 0x002F, 0xFF9D, 0xFF09, 0xFE76,\n    0xFDE3, 0xFD50, 0xFCBE, 0xFC2C, 0xFB9B, 0xFB0B, 0xFA7B, 0xF9EC,\n    0xF95F, 0xF8D3, 0xF847, 0xF7BE, 0xF735, 0xF6AE, 0xF629, 0xF5A6,\n    0xF524, 0xF4A4, 0xF426, 0xF3AB, 0xF331, 0xF2BA, 0xF246, 0xF1D3,\n    0xF164, 0xF0F7, 0xF08D, 0xF025, 0xEFC1, 0xEF60, 0xEF0A, 0xEEC5,\n    0xEE91, 0xEE6B, 0xEE53, 0xEE47, 0xEE45, 0xEE4D, 0xEE5C, 0xEE71,\n    0xEE8B, 0xEEA9, 0xEEC8, 0xEEE8, 0xEF06, 0xEF23, 0xEF3B, 0xEF4F,\n    0xEF5B, 0xEF60, 0xEF60, 0xEF60, 0xEF60, 0xEF60, 0xEF60, 0xEF60,\n    0xEF60, 0xEF60, 0xEF60, 0xEF60, 0xEF55, 0xEF3A, 0xEF16, 0xEEEF,\n    0xEECD, 0xEEB6, 0xEEB3, 0xEEC9, 0xEF01, 0xEF60, 0xEFDA, 0xF05C,\n    0xF0E5, 0xF176, 0xF20D, 0xF2AA, 0xF34C, 0xF3F4, 0xF4A0, 0xF551,\n    0xF605, 0xF6BC, 0xF776, 0xF833, 0xF8F1, 0xF9B0, 0xFA70, 0xFB31,\n    0xFBF1, 0xFCB1, 0xFD6F, 0xFE2C, 0xFEE7, 0xFF9F, 0x0053, 0x0105,\n    0x01B3, 0x025C, 0x0300, 0x039F, 0x0438, 0x04CA, 0x0556, 0x05DA,\n    0x0657, 0x06CB, 0x0736, 0x0798, 0x07F1, 0x083F, 0x0882, 0x08BB,\n    0x08E7, 0x0908, 0x091B, 0x0922, 0xE19A, 0xE19C, 0xE1A4, 0xE1B0,\n    0xE1C1, 0xE1D6, 0xE1EF, 0xE20C, 0xE22E, 0xE253, 0xE27B, 0xE2A7,\n    0xE2D5, 0xE307, 0xE33C, 0xE373, 0xE3AD, 0xE3E9, 0xE427, 0xE467,\n    0xE4A9, 0xE4EC, 0xE531, 0xE577, 0xE5BE, 0xE606, 0xE64E, 0xE698,\n    0xE6E1, 0xE72B, 0xE774, 0xE7BE, 0xE807, 0xE850, 0xE897, 0xE8DE,\n    0xE924, 0xE969, 0xE9AD, 0xE9EE, 0xEA2E, 0xEA6C, 0xEAA8, 0xEAE2,\n    0xEB19, 0xEB4E, 0xEB80, 0xEBAF, 0xEBDA, 0xEC03, 0xEC25, 0xEC41,\n    0xEC56, 0xEC65, 0xEC6F, 0xEC74, 0xEC75, 0xEC72, 0xEC6C, 0xEC63,\n    0xEC59, 0xEC4D, 0xEC40, 0xEC33, 0xEC27, 0xEC1B, 0xEC11, 0xEC0A,\n    0xEC04, 0xEC03, 0xEC03, 0xEC03, 0xEC03, 0xEC03, 0xEC03, 0xEC03,\n    0xEC03, 0xEC03, 0xEC03, 0xEC03, 0xEC07, 0xEC12, 0xEC21, 0xEC30,\n    0xEC3E, 0xEC47, 0xEC49, 0xEC3F, 0xEC29, 0xEC03, 0xEBD1, 0xEB9D,\n    0xEB65, 0xEB2B, 0xEAEE, 0xEAAF, 0xEA6D, 0xEA29, 0xE9E3, 0xE99C,\n    0xE953, 0xE909, 0xE8BE, 0xE872, 0xE825, 0xE7D8, 0xE78A, 0xE73D,\n    0xE6EF, 0xE6A1, 0xE654, 0xE608, 0xE5BD, 0xE572, 0xE529, 0xE4E1,\n    0xE49B, 0xE457, 0xE414, 0xE3D4, 0xE396, 0xE35B, 0xE323, 0xE2ED,\n    0xE2BB, 0xE28C, 0xE261, 0xE239, 0xE215, 0xE1F6, 0xE1DB, 0xE1C4,\n    0xE1B2, 0xE1A5, 0xE19D, 0xE19A, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0xB646, 0xB645, 0xB644, 0xB642,\n    0xB640, 0xB63C, 0xB638, 0xB634, 0xB62F, 0xB629, 0xB622, 0xB61C,\n    0xB614, 0xB60D, 0xB604, 0xB5FC, 0xB5F3, 0xB5E9, 0xB5DF, 0xB5D5,\n    0xB5CB, 0xB5C1, 0xB5B6, 0xB5AB, 0xB5A0, 0xB594, 0xB589, 0xB57E,\n    0xB572, 0xB567, 0xB55B, 0xB550, 0xB544, 0xB539, 0xB52E, 0xB522,\n    0xB517, 0xB50D, 0xB502, 0xB4F8, 0xB4EE, 0xB4E4, 0xB4DB, 0xB4D2,\n    0xB4C9, 0xB4C1, 0xB4B9, 0xB4B2, 0xB4AB, 0xB4A5, 0xB49F, 0xB49B,\n    0xB497, 0xB495, 0xB493, 0xB493, 0xB493, 0xB493, 0xB494, 0xB495,\n    0xB497, 0xB499, 0xB49B, 0xB49D, 0xB49F, 0xB4A1, 0xB4A2, 0xB4A3,\n    0xB4A4, 0xB4A5, 0xB4A5, 0xB4A5, 0xB4A5, 0xB4A5, 0xB4A5, 0xB4A5,\n    0xB4A5, 0xB4A5, 0xB4A5, 0xB4A5, 0xB4A4, 0xB4A2, 0xB4A0, 0xB49D,\n    0xB49B, 0xB49A, 0xB49A, 0xB49B, 0xB49E, 0xB4A5, 0xB4AC, 0xB4B4,\n    0xB4BD, 0xB4C6, 0xB4D0, 0xB4DA, 0xB4E4, 0xB4EF, 0xB4FA, 0xB505,\n    0xB510, 0xB51C, 0xB527, 0xB533, 0xB53F, 0xB54C, 0xB558, 0xB564,\n    0xB570, 0xB57C, 0xB588, 0xB594, 0xB5A0, 0xB5AC, 0xB5B7, 0xB5C2,\n    0xB5CD, 0xB5D8, 0xB5E2, 0xB5EC, 0xB5F6, 0xB5FF, 0xB608, 0xB611,\n    0xB618, 0xB620, 0xB627, 0xB62D, 0xB632, 0xB637, 0xB63C, 0xB63F,\n    0xB642, 0xB644, 0xB645, 0xB646, 0xD864, 0xD866, 0xD86B, 0xD873,\n    0xD87E, 0xD88C, 0xD89D, 0xD8B1, 0xD8C7, 0xD8E0, 0xD8FB, 0xD918,\n    0xD937, 0xD959, 0xD97C, 0xD9A1, 0xD9C8, 0xD9F0, 0xDA19, 0xDA44,\n    0xDA70, 0xDA9E, 0xDACC, 0xDAFA, 0xDB2A, 0xDB5A, 0xDB8B, 0xDBBC,\n    0xDBED, 0xDC1E, 0xDC50, 0xDC81, 0xDCB2, 0xDCE3, 0xDD13, 0xDD42,\n    0xDD71, 0xDD9F, 0xDDCC, 0xDDF8, 0xDE23, 0xDE4D, 0xDE75, 0xDE9C,\n    0xDEC1, 0xDEE4, 0xDF05, 0xDF25, 0xDF42, 0xDF5D, 0xDF74, 0xDF87,\n    0xDF95, 0xDF9F, 0xDFA6, 0xDFA9, 0xDFA9, 0xDFA7, 0xDFA3, 0xDF9E,\n    0xDF96, 0xDF8F, 0xDF86, 0xDF7D, 0xDF75, 0xDF6D, 0xDF67, 0xDF62,\n    0xDF5E, 0xDF5D, 0xDF5D, 0xDF5D, 0xDF5D, 0xDF5D, 0xDF5D, 0xDF5D,\n    0xDF5D, 0xDF5D, 0xDF5D, 0xDF5D, 0xDF60, 0xDF67, 0xDF71, 0xDF7B,\n    0xDF85, 0xDF8B, 0xDF8C, 0xDF86, 0xDF77, 0xDF5D, 0xDF3C, 0xDF19,\n    0xDEF4, 0xDECC, 0xDEA4, 0xDE79, 0xDE4D, 0xDE20, 0xDDF1, 0xDDC1,\n    0xDD91, 0xDD5F, 0xDD2D, 0xDCFA, 0xDCC6, 0xDC92, 0xDC5E, 0xDC2A,\n    0xDBF6, 0xDBC2, 0xDB8F, 0xDB5C, 0xDB29, 0xDAF7, 0xDAC6, 0xDA96,\n    0xDA67, 0xDA39, 0xDA0D, 0xD9E2, 0xD9B9, 0xD991, 0xD96B, 0xD947,\n    0xD926, 0xD906, 0xD8E9, 0xD8CF, 0xD8B7, 0xD8A2, 0xD88F, 0xD880,\n    0xD874, 0xD86B, 0xD866, 0xD864, 0xFF58, 0xFF5C, 0xFF67, 0xFF7A,\n    0xFF94, 0xFFB5, 0xFFDD, 0x0009, 0x003D, 0x0076, 0x00B5, 0x00F9,\n    0x0142, 0x0190, 0x01E2, 0x0238, 0x0292, 0x02EF, 0x0350, 0x03B3,\n    0x041A, 0x0483, 0x04EE, 0x055B, 0x05C9, 0x0639, 0x06AA, 0x071C,\n    0x078F, 0x0801, 0x0874, 0x08E6, 0x0958, 0x09C9, 0x0A39, 0x0AA8,\n    0x0B15, 0x0B80, 0x0BE9, 0x0C4F, 0x0CB3, 0x0D14, 0x0D71, 0x0DCB,\n    0x0E21, 0x0E73, 0x0EC0, 0x0F09, 0x0F4D, 0x0F8C, 0x0FC2, 0x0FED,\n    0x100E, 0x1026, 0x1035, 0x103D, 0x103E, 0x1039, 0x1030, 0x1022,\n    0x1012, 0x0FFF, 0x0FEC, 0x0FD8, 0x0FC4, 0x0FB2, 0x0FA3, 0x0F97,\n    0x0F8F, 0x0F8C, 0x0F8C, 0x0F8C, 0x0F8C, 0x0F8C, 0x0F8C, 0x0F8C,\n    0x0F8C, 0x0F8C, 0x0F8C, 0x0F8C, 0x0F93, 0x0FA4, 0x0FBB, 0x0FD3,\n    0x0FE9, 0x0FF7, 0x0FF9, 0x0FEB, 0x0FC8, 0x0F8C, 0x0F3F, 0x0EEE,\n    0x0E97, 0x0E3C, 0x0DDD, 0x0D7B, 0x0D14, 0x0CAB, 0x0C3E, 0x0BCF,\n    0x0B5E, 0x0AEB, 0x0A75, 0x09FF, 0x0987, 0x090F, 0x0896, 0x081D,\n    0x07A4, 0x072C, 0x06B4, 0x063D, 0x05C7, 0x0554, 0x04E2, 0x0472,\n    0x0404, 0x039A, 0x0333, 0x02CF, 0x026F, 0x0212, 0x01BA, 0x0167,\n    0x0119, 0x00D0, 0x008C, 0x004F, 0x0017, 0xFFE7, 0xFFBC, 0xFF99,\n    0xFF7D, 0xFF69, 0xFF5C, 0xFF58, 0xB74B, 0xB748, 0xB73E, 0xB72D,\n    0xB715, 0xB6F8, 0xB6D5, 0xB6AC, 0xB67D, 0xB64A, 0xB612, 0xB5D5,\n    0xB593, 0xB54E, 0xB504, 0xB4B7, 0xB467, 0xB413, 0xB3BC, 0xB363,\n    0xB307, 0xB2A9, 0xB249, 0xB1E7, 0xB184, 0xB120, 0xB0BB, 0xB055,\n    0xAFEE, 0xAF87, 0xAF21, 0xAEBA, 0xAE54, 0xADEF, 0xAD8A, 0xAD27,\n    0xACC6, 0xAC66, 0xAC08, 0xABAC, 0xAB53, 0xAAFC, 0xAAA8, 0xAA58,\n    0xAA0B, 0xA9C1, 0xA97C, 0xA93A, 0xA8FD, 0xA8C5, 0xA894, 0xA86E,\n    0xA850, 0xA83B, 0xA82E, 0xA827, 0xA826, 0xA82A, 0xA832, 0xA83E,\n    0xA84D, 0xA85E, 0xA86F, 0xA881, 0xA893, 0xA8A3, 0xA8B0, 0xA8BB,\n    0xA8C3, 0xA8C5, 0xA8C5, 0xA8C5, 0xA8C5, 0xA8C5, 0xA8C5, 0xA8C5,\n    0xA8C5, 0xA8C5, 0xA8C5, 0xA8C5, 0xA8BF, 0xA8B0, 0xA89B, 0xA885,\n    0xA872, 0xA865, 0xA864, 0xA870, 0xA88F, 0xA8C5, 0xA90A, 0xA953,\n    0xA9A1, 0xA9F2, 0xAA47, 0xAAA0, 0xAAFB, 0xAB5A, 0xABBB, 0xAC1F,\n    0xAC84, 0xACEC, 0xAD54, 0xADBF, 0xAE2A, 0xAE96, 0xAF02, 0xAF6E,\n    0xAFDB, 0xB047, 0xB0B2, 0xB11D, 0xB186, 0xB1EE, 0xB254, 0xB2B8,\n    0xB31A, 0xB37A, 0xB3D6, 0xB430, 0xB486, 0xB4D9, 0xB527, 0xB572,\n    0xB5B8, 0xB5FA, 0xB636, 0xB66D, 0xB69F, 0xB6CB, 0xB6F1, 0xB711,\n    0xB72A, 0xB73C, 0xB748, 0xB74B, 0xFBC7, 0xFBC8, 0xFBCC, 0xFBD1,\n    0xFBD8, 0xFBE1, 0xFBEC, 0xFBF8, 0xFC06, 0xFC14, 0xFC25, 0xFC36,\n    0xFC48, 0xFC5A, 0xFC6E, 0xFC82, 0xFC96, 0xFCAB, 0xFCC0, 0xFCD5,\n    0xFCE9, 0xFCFE, 0xFD12, 0xFD26, 0xFD39, 0xFD4B, 0xFD5D, 0xFD6D,\n    0xFD7D, 0xFD8B, 0xFD98, 0xFDA3, 0xFDAD, 0xFDB5, 0xFDBB, 0xFDC0,\n    0xFDC2, 0xFDC2, 0xFDBF, 0xFDBB, 0xFDB3, 0xFDA9, 0xFD9D, 0xFD8F,\n    0xFD80, 0xFD6E, 0xFD5B, 0xFD46, 0xFD30, 0xFD18, 0xFCFF, 0xFCE4,\n    0xFCC9, 0xFCAC, 0xFC8E, 0xFC70, 0xFC51, 0xFC31, 0xFC10, 0xFBEF,\n    0xFBCD, 0xFBAB, 0xFB89, 0xFB67, 0xFB44, 0xFB22, 0xFAFF, 0xFADD,\n    0xFABB, 0xFA99, 0xFA78, 0xFA58, 0xFA38, 0xFA19, 0xF9FA, 0xF9DD,\n    0xF9C0, 0xF9A5, 0xF98A, 0xF971, 0xF95A, 0xF944, 0xF92F, 0xF91C,\n    0xF90B, 0xF8FB, 0xF8ED, 0xF8E2, 0xF8D8, 0xF8D1, 0xF8CC, 0xF8C9,\n    0xF8C9, 0xF8CB, 0xF8D0, 0xF8D7, 0xF8DF, 0xF8EA, 0xF8F7, 0xF905,\n    0xF915, 0xF926, 0xF939, 0xF94D, 0xF962, 0xF978, 0xF98F, 0xF9A7,\n    0xF9BF, 0xF9D9, 0xF9F2, 0xFA0C, 0xFA27, 0xFA41, 0xFA5B, 0xFA76,\n    0xFA90, 0xFAAA, 0xFAC3, 0xFADC, 0xFAF4, 0xFB0C, 0xFB22, 0xFB38,\n    0xFB4D, 0xFB60, 0xFB72, 0xFB83, 0xFB92, 0xFB9F, 0xFBAB, 0xFBB5,\n    0xFBBD, 0xFBC2, 0xFBC6, 0xFBC7, 0xFFBF, 0xFFBD, 0xFFB9, 0xFFB2,\n    0xFFA8, 0xFF9C, 0xFF8D, 0xFF7C, 0xFF68, 0xFF53, 0xFF3B, 0xFF22,\n    0xFF06, 0xFEE9, 0xFECB, 0xFEAA, 0xFE89, 0xFE66, 0xFE41, 0xFE1C,\n    0xFDF6, 0xFDCE, 0xFDA6, 0xFD7D, 0xFD54, 0xFD2A, 0xFCFF, 0xFCD5,\n    0xFCAA, 0xFC7F, 0xFC54, 0xFC29, 0xFBFE, 0xFBD4, 0xFBAA, 0xFB80,\n    0xFB57, 0xFB2F, 0xFB08, 0xFAE1, 0xFABC, 0xFA98, 0xFA75, 0xFA53,\n    0xFA33, 0xFA14, 0xF9F7, 0xF9DC, 0xF9C2, 0xF9AB, 0xF996, 0xF986,\n    0xF97A, 0xF971, 0xF96B, 0xF968, 0xF968, 0xF96A, 0xF96D, 0xF972,\n    0xF978, 0xF97F, 0xF987, 0xF98E, 0xF995, 0xF99C, 0xF9A2, 0xF9A7,\n    0xF9AA, 0xF9AB, 0xF9AB, 0xF9AB, 0xF9AB, 0xF9AB, 0xF9AB, 0xF9AB,\n    0xF9AB, 0xF9AB, 0xF9AB, 0xF9AB, 0xF9A8, 0xF9A2, 0xF999, 0xF990,\n    0xF988, 0xF983, 0xF982, 0xF987, 0xF994, 0xF9AB, 0xF9C7, 0xF9E6,\n    0xFA06, 0xFA29, 0xFA4C, 0xFA71, 0xFA98, 0xFABF, 0xFAE8, 0xFB11,\n    0xFB3C, 0xFB67, 0xFB93, 0xFBC0, 0xFBEC, 0xFC1A, 0xFC47, 0xFC74,\n    0xFCA2, 0xFCCF, 0xFCFC, 0xFD28, 0xFD54, 0xFD80, 0xFDAB, 0xFDD5,\n    0xFDFE, 0xFE25, 0xFE4C, 0xFE72, 0xFE96, 0xFEB8, 0xFED9, 0xFEF9,\n    0xFF16, 0xFF31, 0xFF4B, 0xFF62, 0xFF77, 0xFF89, 0xFF99, 0xFFA6,\n    0xFFB1, 0xFFB8, 0xFFBD, 0xFFBF, 0xBF3E, 0xBF3E, 0xBF3E, 0xBF3F,\n    0xBF40, 0xBF41, 0xBF43, 0xBF45, 0xBF47, 0xBF49, 0xBF4B, 0xBF4E,\n    0xBF51, 0xBF54, 0xBF57, 0xBF5B, 0xBF5E, 0xBF62, 0xBF66, 0xBF6A,\n    0xBF6E, 0xBF72, 0xBF76, 0xBF7A, 0xBF7F, 0xBF83, 0xBF88, 0xBF8C,\n    0xBF90, 0xBF95, 0xBF9A, 0xBF9E, 0xBFA3, 0xBFA7, 0xBFAB, 0xBFB0,\n    0xBFB4, 0xBFB8, 0xBFBC, 0xBFC0, 0xBFC4, 0xBFC8, 0xBFCC, 0xBFCF,\n    0xBFD3, 0xBFD6, 0xBFD9, 0xBFDC, 0xBFDF, 0xBFE1, 0xBFE3, 0xBFE5,\n    0xBFE6, 0xBFE7, 0xBFE8, 0xBFE8, 0xBFE8, 0xBFE8, 0xBFE7, 0xBFE7,\n    0xBFE6, 0xBFE6, 0xBFE5, 0xBFE4, 0xBFE3, 0xBFE3, 0xBFE2, 0xBFE1,\n    0xBFE1, 0xBFE1, 0xBFE1, 0xBFE1, 0xBFE1, 0xBFE1, 0xBFE1, 0xBFE1,\n    0xBFE1, 0xBFE1, 0xBFE1, 0xBFE1, 0xBFE1, 0xBFE2, 0xBFE3, 0xBFE4,\n    0xBFE5, 0xBFE5, 0xBFE5, 0xBFE5, 0xBFE3, 0xBFE1, 0xBFDE, 0xBFDB,\n    0xBFD7, 0xBFD4, 0xBFD0, 0xBFCC, 0xBFC8, 0xBFC4, 0xBFC0, 0xBFBB,\n    0xBFB7, 0xBFB2, 0xBFAE, 0xBFA9, 0xBFA4, 0xBFA0, 0xBF9B, 0xBF96,\n    0xBF91, 0xBF8D, 0xBF88, 0xBF83, 0xBF7F, 0xBF7A, 0xBF76, 0xBF71,\n    0xBF6D, 0xBF69, 0xBF65, 0xBF61, 0xBF5D, 0xBF59, 0xBF56, 0xBF52,\n    0xBF4F, 0xBF4D, 0xBF4A, 0xBF47, 0xBF45, 0xBF43, 0xBF42, 0xBF40,\n    0xBF3F, 0xBF3E, 0xBF3E, 0xBF3E, 0xC066, 0x2697, 0x2695, 0x268E,\n    0x2683, 0x2674, 0x2661, 0x264A, 0x2630, 0x2612, 0x25F0, 0x25CC,\n    0x25A4, 0x257A, 0x254D, 0x251D, 0x24EB, 0x24B7, 0x2480, 0x2448,\n    0x240E, 0x23D3, 0x2396, 0x2357, 0x2318, 0x22D8, 0x2297, 0x2255,\n    0x2213, 0x21D0, 0x218D, 0x214B, 0x2108, 0x20C6, 0x2084, 0x2043,\n    0x2003, 0x1FC3, 0x1F85, 0x1F48, 0x1F0D, 0x1ED3, 0x1E9A, 0x1E64,\n    0x1E30, 0x1DFE, 0x1DCE, 0x1DA1, 0x1D77, 0x1D4F, 0x1D2B, 0x1D0B,\n    0x1CF2, 0x1CDF, 0x1CD1, 0x1CC8, 0x1CC4, 0x1CC3, 0x1CC6, 0x1CCB,\n    0x1CD3, 0x1CDD, 0x1CE7, 0x1CF3, 0x1CFE, 0x1D0A, 0x1D14, 0x1D1D,\n    0x1D24, 0x1D29, 0x1D2B, 0x1D2B, 0x1D2B, 0x1D2B, 0x1D2B, 0x1D2B,\n    0x1D2B, 0x1D2B, 0x1D2B, 0x1D2B, 0x1D2B, 0x1D27, 0x1D1D, 0x1D0F,\n    0x1D01, 0x1CF5, 0x1CEC, 0x1CEB, 0x1CF3, 0x1D08, 0x1D2B, 0x1D57,\n    0x1D87, 0x1DB9, 0x1DEE, 0x1E25, 0x1E5E, 0x1E9A, 0x1ED7, 0x1F16,\n    0x1F57, 0x1F99, 0x1FDC, 0x2020, 0x2065, 0x20AA, 0x20F0, 0x2137,\n    0x217D, 0x21C3, 0x220A, 0x224F, 0x2294, 0x22D9, 0x231C, 0x235E,\n    0x239F, 0x23DF, 0x241D, 0x2459, 0x2493, 0x24CB, 0x2501, 0x2534,\n    0x2564, 0x2592, 0x25BC, 0x25E3, 0x2607, 0x2628, 0x2644, 0x265D,\n    0x2672, 0x2682, 0x268E, 0x2695, 0x2697, 0xFEDD, 0xFEDB, 0xFED3,\n    0xFEC6, 0xFEB4, 0xFE9E, 0xFE83, 0xFE64, 0xFE41, 0xFE1A, 0xFDF0,\n    0xFDC2, 0xFD90, 0xFD5C, 0xFD24, 0xFCEA, 0xFCAD, 0xFC6D, 0xFC2C,\n    0xFBE8, 0xFBA3, 0xFB5C, 0xFB13, 0xFAC9, 0xFA7E, 0xFA33, 0xF9E6,\n    0xF999, 0xF94B, 0xF8FD, 0xF8B0, 0xF862, 0xF815, 0xF7C8, 0xF77C,\n    0xF731, 0xF6E8, 0xF69F, 0xF658, 0xF612, 0xF5CF, 0xF58D, 0xF54E,\n    0xF511, 0xF4D7, 0xF49F, 0xF46B, 0xF439, 0xF40B, 0xF3E1, 0xF3BC,\n    0xF39F, 0xF388, 0xF378, 0xF36E, 0xF369, 0xF368, 0xF36B, 0xF372,\n    0xF37B, 0xF386, 0xF392, 0xF3A0, 0xF3AD, 0xF3BA, 0xF3C7, 0xF3D1,\n    0xF3D9, 0xF3DF, 0xF3E1, 0xF3E1, 0xF3E1, 0xF3E1, 0xF3E1, 0xF3E1,\n    0xF3E1, 0xF3E1, 0xF3E1, 0xF3E1, 0xF3E1, 0xF3DC, 0xF3D1, 0xF3C1,\n    0xF3B0, 0xF3A2, 0xF398, 0xF397, 0xF3A0, 0xF3B8, 0xF3E1, 0xF415,\n    0xF44C, 0xF487, 0xF4C4, 0xF505, 0xF548, 0xF58D, 0xF5D4, 0xF61E,\n    0xF669, 0xF6B6, 0xF704, 0xF754, 0xF7A4, 0xF7F5, 0xF847, 0xF898,\n    0xF8EB, 0xF93D, 0xF98E, 0xF9DF, 0xFA30, 0xFA80, 0xFACE, 0xFB1C,\n    0xFB67, 0xFBB1, 0xFBFA, 0xFC40, 0xFC83, 0xFCC5, 0xFD03, 0xFD3F,\n    0xFD77, 0xFDAC, 0xFDDE, 0xFE0B, 0xFE35, 0xFE5B, 0xFE7C, 0xFE99,\n    0xFEB1, 0xFEC4, 0xFED2, 0xFEDA, 0xFEDD, 0xB61E, 0xB61B, 0xB612,\n    0xB602, 0xB5ED, 0xB5D2, 0xB5B2, 0xB58D, 0xB563, 0xB534, 0xB501,\n    0xB4CA, 0xB48F, 0xB44F, 0xB40D, 0xB3C7, 0xB37D, 0xB331, 0xB2E3,\n    0xB292, 0xB23E, 0xB1E9, 0xB192, 0xB139, 0xB0DF, 0xB084, 0xB028,\n    0xAFCB, 0xAF6E, 0xAF11, 0xAEB4, 0xAE56, 0xADFA, 0xAD9E, 0xAD43,\n    0xACE9, 0xAC90, 0xAC39, 0xABE4, 0xAB90, 0xAB3F, 0xAAF0, 0xAAA4,\n    0xAA5B, 0xAA15, 0xA9D3, 0xA993, 0xA958, 0xA921, 0xA8EE, 0xA8C2,\n    0xA89E, 0xA884, 0xA870, 0xA864, 0xA85E, 0xA85D, 0xA861, 0xA868,\n    0xA873, 0xA881, 0xA890, 0xA8A0, 0xA8B0, 0xA8C0, 0xA8CE, 0xA8DB,\n    0xA8E5, 0xA8EB, 0xA8EE, 0xA8EE, 0xA8EE, 0xA8EE, 0xA8EE, 0xA8EE,\n    0xA8EE, 0xA8EE, 0xA8EE, 0xA8EE, 0xA8EE, 0xA8E8, 0xA8DA, 0xA8C8,\n    0xA8B4, 0xA8A2, 0xA897, 0xA895, 0xA8A1, 0xA8BD, 0xA8EE, 0xA92C,\n    0xA96F, 0xA9B5, 0xA9FF, 0xAA4C, 0xAA9D, 0xAAF0, 0xAB46, 0xAB9E,\n    0xABF8, 0xAC55, 0xACB2, 0xAD12, 0xAD72, 0xADD3, 0xAE35, 0xAE98,\n    0xAEFA, 0xAF5D, 0xAFBF, 0xB020, 0xB081, 0xB0E1, 0xB13F, 0xB19C,\n    0xB1F7, 0xB250, 0xB2A6, 0xB2FA, 0xB34C, 0xB39A, 0xB3E5, 0xB42D,\n    0xB470, 0xB4B0, 0xB4EB, 0xB522, 0xB555, 0xB582, 0xB5AA, 0xB5CC,\n    0xB5E9, 0xB600, 0xB611, 0xB61B, 0xB61E, 0xD864, 0xD866, 0xD86B,\n    0xD873, 0xD87E, 0xD88C, 0xD89D, 0xD8B1, 0xD8C7, 0xD8E0, 0xD8FB,\n    0xD918, 0xD937, 0xD959, 0xD97C, 0xD9A1, 0xD9C8, 0xD9F0, 0xDA19,\n    0xDA44, 0xDA70, 0xDA9E, 0xDACC, 0xDAFA, 0xDB2A, 0xDB5A, 0xDB8B,\n    0xDBBC, 0xDBED, 0xDC1E, 0xDC50, 0xDC81, 0xDCB2, 0xDCE3, 0xDD13,\n    0xDD42, 0xDD71, 0xDD9F, 0xDDCC, 0xDDF8, 0xDE23, 0xDE4D, 0xDE75,\n    0xDE9C, 0xDEC1, 0xDEE4, 0xDF05, 0xDF25, 0xDF42, 0xDF5D, 0xDF74,\n    0xDF87, 0xDF95, 0xDF9F, 0xDFA6, 0xDFA9, 0xDFA9, 0xDFA7, 0xDFA3,\n    0xDF9E, 0xDF96, 0xDF8F, 0xDF86, 0xDF7D, 0xDF75, 0xDF6D, 0xDF67,\n    0xDF62, 0xDF5E, 0xDF5D, 0xDF5D, 0xDF5D, 0xDF5D, 0xDF5D, 0xDF5D,\n    0xDF5D, 0xDF5D, 0xDF5D, 0xDF5D, 0xDF5D, 0xDF60, 0xDF67, 0xDF71,\n    0xDF7B, 0xDF85, 0xDF8B, 0xDF8C, 0xDF86, 0xDF77, 0xDF5D, 0xDF3C,\n    0xDF19, 0xDEF4, 0xDECC, 0xDEA4, 0xDE79, 0xDE4D, 0xDE20, 0xDDF1,\n    0xDDC1, 0xDD91, 0xDD5F, 0xDD2D, 0xDCFA, 0xDCC6, 0xDC92, 0xDC5E,\n    0xDC2A, 0xDBF6, 0xDBC2, 0xDB8F, 0xDB5C, 0xDB29, 0xDAF7, 0xDAC6,\n    0xDA96, 0xDA67, 0xDA39, 0xDA0D, 0xD9E2, 0xD9B9, 0xD991, 0xD96B,\n    0xD947, 0xD926, 0xD906, 0xD8E9, 0xD8CF, 0xD8B7, 0xD8A2, 0xD88F,\n    0xD880, 0xD874, 0xD86B, 0xD866, 0xD864, 0xFF58, 0xFF5C, 0xFF67,\n    0xFF7A, 0xFF94, 0xFFB5, 0xFFDD, 0x0009, 0x003D, 0x0076, 0x00B5,\n    0x00F9, 0x0142, 0x0190, 0x01E2, 0x0238, 0x0292, 0x02EF, 0x0350,\n    0x03B3, 0x041A, 0x0483, 0x04EE, 0x055B, 0x05C9, 0x0639, 0x06AA,\n    0x071C, 0x078F, 0x0801, 0x0874, 0x08E6, 0x0958, 0x09C9, 0x0A39,\n    0x0AA8, 0x0B15, 0x0B80, 0x0BE9, 0x0C4F, 0x0CB3, 0x0D14, 0x0D71,\n    0x0DCB, 0x0E21, 0x0E73, 0x0EC0, 0x0F09, 0x0F4D, 0x0F8C, 0x0FC2,\n    0x0FED, 0x100E, 0x1026, 0x1035, 0x103D, 0x103E, 0x1039, 0x1030,\n    0x1022, 0x1012, 0x0FFF, 0x0FEC, 0x0FD8, 0x0FC4, 0x0FB2, 0x0FA3,\n    0x0F97, 0x0F8F, 0x0F8C, 0x0F8C, 0x0F8C, 0x0F8C, 0x0F8C, 0x0F8C,\n    0x0F8C, 0x0F8C, 0x0F8C, 0x0F8C, 0x0F8C, 0x0F93, 0x0FA4, 0x0FBB,\n    0x0FD3, 0x0FE9, 0x0FF7, 0x0FF9, 0x0FEB, 0x0FC8, 0x0F8C, 0x0F3F,\n    0x0EEE, 0x0E97, 0x0E3C, 0x0DDD, 0x0D7B, 0x0D14, 0x0CAB, 0x0C3E,\n    0x0BCF, 0x0B5E, 0x0AEB, 0x0A75, 0x09FF, 0x0987, 0x090F, 0x0896,\n    0x081D, 0x07A4, 0x072C, 0x06B4, 0x063D, 0x05C7, 0x0554, 0x04E2,\n    0x0472, 0x0404, 0x039A, 0x0333, 0x02CF, 0x026F, 0x0212, 0x01BA,\n    0x0167, 0x0119, 0x00D0, 0x008C, 0x004F, 0x0017, 0xFFE7, 0xFFBC,\n    0xFF99, 0xFF7D, 0xFF69, 0xFF5C, 0xFF58, 0xB74B, 0xB748, 0xB73E,\n    0xB72D, 0xB715, 0xB6F8, 0xB6D5, 0xB6AC, 0xB67D, 0xB64A, 0xB612,\n    0xB5D5, 0xB593, 0xB54E, 0xB504, 0xB4B7, 0xB467, 0xB413, 0xB3BC,\n    0xB363, 0xB307, 0xB2A9, 0xB249, 0xB1E7, 0xB184, 0xB120, 0xB0BB,\n    0xB055, 0xAFEE, 0xAF87, 0xAF21, 0xAEBA, 0xAE54, 0xADEF, 0xAD8A,\n    0xAD27, 0xACC6, 0xAC66, 0xAC08, 0xABAC, 0xAB53, 0xAAFC, 0xAAA8,\n    0xAA58, 0xAA0B, 0xA9C1, 0xA97C, 0xA93A, 0xA8FD, 0xA8C5, 0xA894,\n    0xA86E, 0xA850, 0xA83B, 0xA82E, 0xA827, 0xA826, 0xA82A, 0xA832,\n    0xA83E, 0xA84D, 0xA85E, 0xA86F, 0xA881, 0xA893, 0xA8A3, 0xA8B0,\n    0xA8BB, 0xA8C3, 0xA8C5, 0xA8C5, 0xA8C5, 0xA8C5, 0xA8C5, 0xA8C5,\n    0xA8C5, 0xA8C5, 0xA8C5, 0xA8C5, 0xA8C5, 0xA8BF, 0xA8B0, 0xA89B,\n    0xA885, 0xA872, 0xA865, 0xA864, 0xA870, 0xA88F, 0xA8C5, 0xA90A,\n    0xA953, 0xA9A1, 0xA9F2, 0xAA47, 0xAAA0, 0xAAFB, 0xAB5A, 0xABBB,\n    0xAC1F, 0xAC84, 0xACEC, 0xAD54, 0xADBF, 0xAE2A, 0xAE96, 0xAF02,\n    0xAF6E, 0xAFDB, 0xB047, 0xB0B2, 0xB11D, 0xB186, 0xB1EE, 0xB254,\n    0xB2B8, 0xB31A, 0xB37A, 0xB3D6, 0xB430, 0xB486, 0xB4D9, 0xB527,\n    0xB572, 0xB5B8, 0xB5FA, 0xB636, 0xB66D, 0xB69F, 0xB6CB, 0xB6F1,\n    0xB711, 0xB72A, 0xB73C, 0xB748, 0xB74B, 0xE0FF, 0xC001, 0xE0FB,\n    0xBF7F, 0xFB85, 0xFB8E, 0xFBA7, 0xFBCF, 0xFC08, 0xFC4F, 0xFCA4,\n    0xFD06, 0xFD76, 0xFDF2, 0xFE7A, 0xFF0D, 0xFFAB, 0x0052, 0x0104,\n    0x01BE, 0x0281, 0x034B, 0x041D, 0x04F5, 0x05D4, 0x06B7, 0x07A0,\n    0x088D, 0x097D, 0x0A70, 0x0B66, 0x0C5E, 0x0D58, 0x0E52, 0x0F4C,\n    0x1046, 0x113F, 0x1236, 0x132B, 0x141D, 0x150C, 0x15F7, 0x16DE,\n    0x17BF, 0x189B, 0x1971, 0x1A3F, 0x1B07, 0x1BC6, 0x1C7D, 0x1D2A,\n    0x1DCE, 0x1E68, 0x1EF6, 0x1F74, 0x1FDC, 0x202F, 0x2071, 0x20A1,\n    0x20C3, 0x20D8, 0x20E2, 0x20E2, 0x20DA, 0x20CC, 0x20BA, 0x20A5,\n    0x2090, 0x207B, 0x2069, 0x205B, 0x2053, 0x2053, 0x205D, 0x206B,\n    0x2079, 0x2086, 0x2092, 0x209B, 0x20A2, 0x20A5, 0x20A3, 0x209B,\n    0x208E, 0x2082, 0x2080, 0x2084, 0x2085, 0x207D, 0x2067, 0x203B,\n    0x1FF4, 0x1F89, 0x1EF6, 0x1E47, 0x1D8E, 0x1CCB, 0x1BFF, 0x1B2A,\n    0x1A4E, 0x196A, 0x1880, 0x1790, 0x169B, 0x15A1, 0x14A3, 0x13A2,\n    0x129F, 0x1199, 0x1092, 0x0F8A, 0x0E82, 0x0D7A, 0x0C74, 0x0B6F,\n    0x0A6D, 0x096D, 0x0872, 0x077B, 0x0689, 0x059C, 0x04B6, 0x03D6,\n    0x02FE, 0x022E, 0x0167, 0x00A9, 0xFFF7, 0xFF4E, 0xFEB1, 0xFE1F,\n    0xFD9A, 0xFD22, 0xFCB9, 0xFC5D, 0xFC11, 0xFBD5, 0xFBA9, 0xFB8E,\n    0xFB85, 0xBF84, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002A, 0x002A, 0x002A,\n    0x002A, 0x002A, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029,\n    0x0029, 0x0029, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028,\n    0x0029, 0x0029, 0x0029, 0x0029, 0x002A, 0x002A, 0x002A, 0x002B,\n    0x002B, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF2,\n    0xFFF2, 0xFFF2, 0xFFF3, 0xFFF3, 0xFFF3, 0xFFF4, 0xFFF4, 0xFFF5,\n    0xFFF6, 0xFFF6, 0xFFF7, 0xFFF7, 0xFFF8, 0xFFF9, 0xFFFA, 0xFFFA,\n    0xFFFB, 0xFFFC, 0xFFFD, 0xFFFD, 0xFFFE, 0xFFFF, 0x0000, 0x0000,\n    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0005, 0x0006,\n    0x0007, 0x0008, 0x0008, 0x0009, 0x000A, 0x000B, 0x000B, 0x000C,\n    0x000D, 0x000D, 0x000E, 0x000E, 0x000F, 0x000F, 0x0010, 0x0010,\n    0x0011, 0x0011, 0x0012, 0x0012, 0x0012, 0x0013, 0x0013, 0x0014,\n    0x0014, 0x0014, 0x0014, 0x0015, 0x0015, 0x0015, 0x0015, 0x0016,\n    0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016,\n    0x0016, 0x0016, 0x0015, 0x0015, 0x0014, 0x0013, 0x0012, 0x0012,\n    0x0011, 0x0010, 0x000F, 0x000E, 0x000E, 0x000D, 0x000C, 0x000C,\n    0x000B, 0x000A, 0x0009, 0x0008, 0x0007, 0x0007, 0x0006, 0x0005,\n    0x0004, 0x0003, 0x0002, 0x0001, 0x0001, 0x0000, 0x0000, 0xFFFF,\n    0xFFFE, 0xFFFD, 0xFFFC, 0xFFFC, 0xFFFB, 0xFFFA, 0xFFF9, 0xFFF9,\n    0xFFF8, 0xFFF7, 0xFFF6, 0xFFF6, 0xFFF5, 0xFFF5, 0xFFF4, 0xFFF4,\n    0xFFF3, 0xFFF3, 0xFFF2, 0xFFF2, 0xFFF2, 0xFFF2, 0xFFF1, 0xFFF1,\n    0xFFF1, 0xFFF1, 0x097D, 0x0977, 0x0965, 0x0948, 0x0920, 0x08EE,\n    0x08B1, 0x086B, 0x081B, 0x07C3, 0x0762, 0x06F8, 0x0687, 0x060E,\n    0x058F, 0x0508, 0x047C, 0x03E9, 0x0351, 0x02B4, 0x0213, 0x016D,\n    0x00C3, 0x0015, 0xFF66, 0xFEB2, 0xFDFD, 0xFD45, 0xFC8C, 0xFBD1,\n    0xFB16, 0xFA5A, 0xF99E, 0xF8E3, 0xF828, 0xF76F, 0xF6B7, 0xF601,\n    0xF54D, 0xF49C, 0xF3EE, 0xF343, 0xF29D, 0xF1FA, 0xF15C, 0xF0C3,\n    0xF030, 0xEFA2, 0xEF1B, 0xEE9A, 0xEE26, 0xEDC2, 0xED6C, 0xED23,\n    0xECE3, 0xECAB, 0xEC78, 0xEC48, 0xEC18, 0xEBE7, 0xEBB2, 0xEB77,\n    0xEB33, 0xEAE5, 0xEA89, 0xEA1F, 0xE9A2, 0xE912, 0xE86C, 0xE7AD,\n    0xE6FD, 0xE682, 0xE637, 0xE616, 0xE61A, 0xE63F, 0xE67F, 0xE6D4,\n    0xE73B, 0xE7AD, 0xE830, 0xE8CB, 0xE978, 0xEA33, 0xEAF6, 0xEBBD,\n    0xEC82, 0xED42, 0xEDF6, 0xEE9A, 0xEF38, 0xEFDB, 0xF083, 0xF131,\n    0xF1E2, 0xF298, 0xF352, 0xF40E, 0xF4CE, 0xF58F, 0xF653, 0xF718,\n    0xF7DF, 0xF8A6, 0xF96E, 0xFA35, 0xFAFC, 0xFBC2, 0xFC87, 0xFD4A,\n    0xFE0B, 0xFEC9, 0xFF85, 0x003C, 0x00F0, 0x01A0, 0x024C, 0x02F2,\n    0x0393, 0x042F, 0x04C4, 0x0552, 0x05DA, 0x065A, 0x06D2, 0x0741,\n    0x07A8, 0x0806, 0x085B, 0x08A5, 0x08E5, 0x091B, 0x0945, 0x0964,\n    0x0976, 0x097D, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002A, 0x002A, 0x002A,\n    0x002A, 0x002A, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029,\n    0x0029, 0x0029, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028,\n    0x0029, 0x0029, 0x0029, 0x0029, 0x002A, 0x002A, 0x002A, 0x002B,\n    0x002B, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF2,\n    0xFFF2, 0xFFF2, 0xFFF3, 0xFFF3, 0xFFF3, 0xFFF4, 0xFFF4, 0xFFF5,\n    0xFFF6, 0xFFF6, 0xFFF7, 0xFFF7, 0xFFF8, 0xFFF9, 0xFFFA, 0xFFFA,\n    0xFFFB, 0xFFFC, 0xFFFD, 0xFFFD, 0xFFFE, 0xFFFF, 0x0000, 0x0000,\n    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0005, 0x0006,\n    0x0007, 0x0008, 0x0008, 0x0009, 0x000A, 0x000B, 0x000B, 0x000C,\n    0x000D, 0x000D, 0x000E, 0x000E, 0x000F, 0x000F, 0x0010, 0x0010,\n    0x0011, 0x0011, 0x0012, 0x0012, 0x0012, 0x0013, 0x0013, 0x0014,\n    0x0014, 0x0014, 0x0014, 0x0015, 0x0015, 0x0015, 0x0015, 0x0016,\n    0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016,\n    0x0016, 0x0016, 0x0015, 0x0015, 0x0014, 0x0013, 0x0012, 0x0012,\n    0x0011, 0x0010, 0x000F, 0x000E, 0x000E, 0x000D, 0x000C, 0x000C,\n    0x000B, 0x000A, 0x0009, 0x0008, 0x0007, 0x0007, 0x0006, 0x0005,\n    0x0004, 0x0003, 0x0002, 0x0001, 0x0001, 0x0000, 0x0000, 0xFFFF,\n    0xFFFE, 0xFFFD, 0xFFFC, 0xFFFC, 0xFFFB, 0xFFFA, 0xFFF9, 0xFFF9,\n    0xFFF8, 0xFFF7, 0xFFF6, 0xFFF6, 0xFFF5, 0xFFF5, 0xFFF4, 0xFFF4,\n    0xFFF3, 0xFFF3, 0xFFF2, 0xFFF2, 0xFFF2, 0xFFF2, 0xFFF1, 0xFFF1,\n    0xFFF1, 0xFFF1, 0x097D, 0x0977, 0x0965, 0x0948, 0x0920, 0x08EE,\n    0x08B1, 0x086B, 0x081B, 0x07C3, 0x0762, 0x06F8, 0x0687, 0x060E,\n    0x058F, 0x0508, 0x047C, 0x03E9, 0x0351, 0x02B4, 0x0213, 0x016D,\n    0x00C3, 0x0015, 0xFF66, 0xFEB2, 0xFDFD, 0xFD45, 0xFC8C, 0xFBD1,\n    0xFB16, 0xFA5A, 0xF99E, 0xF8E3, 0xF828, 0xF76F, 0xF6B7, 0xF601,\n    0xF54D, 0xF49C, 0xF3EE, 0xF343, 0xF29D, 0xF1FA, 0xF15C, 0xF0C3,\n    0xF030, 0xEFA2, 0xEF1B, 0xEE9A, 0xEE26, 0xEDC2, 0xED6C, 0xED23,\n    0xECE3, 0xECAB, 0xEC78, 0xEC48, 0xEC18, 0xEBE7, 0xEBB2, 0xEB77,\n    0xEB33, 0xEAE5, 0xEA89, 0xEA1F, 0xE9A2, 0xE912, 0xE86C, 0xE7AD,\n    0xE6FD, 0xE682, 0xE637, 0xE616, 0xE61A, 0xE63F, 0xE67F, 0xE6D4,\n    0xE73B, 0xE7AD, 0xE830, 0xE8CB, 0xE978, 0xEA33, 0xEAF6, 0xEBBD,\n    0xEC82, 0xED42, 0xEDF6, 0xEE9A, 0xEF38, 0xEFDB, 0xF083, 0xF131,\n    0xF1E2, 0xF298, 0xF352, 0xF40E, 0xF4CE, 0xF58F, 0xF653, 0xF718,\n    0xF7DF, 0xF8A6, 0xF96E, 0xFA35, 0xFAFC, 0xFBC2, 0xFC87, 0xFD4A,\n    0xFE0B, 0xFEC9, 0xFF85, 0x003C, 0x00F0, 0x01A0, 0x024C, 0x02F2,\n    0x0393, 0x042F, 0x04C4, 0x0552, 0x05DA, 0x065A, 0x06D2, 0x0741,\n    0x07A8, 0x0806, 0x085B, 0x08A5, 0x08E5, 0x091B, 0x0945, 0x0964,\n    0x0976, 0x097D, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002A, 0x002A, 0x002A,\n    0x002A, 0x002A, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029,\n    0x0029, 0x0029, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028,\n    0x0029, 0x0029, 0x0029, 0x0029, 0x002A, 0x002A, 0x002A, 0x002B,\n    0x002B, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C, 0x002C,\n    0x002C, 0x002C, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF1, 0xFFF2,\n    0xFFF2, 0xFFF2, 0xFFF3, 0xFFF3, 0xFFF3, 0xFFF4, 0xFFF4, 0xFFF5,\n    0xFFF6, 0xFFF6, 0xFFF7, 0xFFF7, 0xFFF8, 0xFFF9, 0xFFFA, 0xFFFA,\n    0xFFFB, 0xFFFC, 0xFFFD, 0xFFFD, 0xFFFE, 0xFFFF, 0x0000, 0x0000,\n    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0005, 0x0006,\n    0x0007, 0x0008, 0x0008, 0x0009, 0x000A, 0x000B, 0x000B, 0x000C,\n    0x000D, 0x000D, 0x000E, 0x000E, 0x000F, 0x000F, 0x0010, 0x0010,\n    0x0011, 0x0011, 0x0012, 0x0012, 0x0012, 0x0013, 0x0013, 0x0014,\n    0x0014, 0x0014, 0x0014, 0x0015, 0x0015, 0x0015, 0x0015, 0x0016,\n    0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016,\n    0x0016, 0x0016, 0x0015, 0x0015, 0x0014, 0x0013, 0x0012, 0x0012,\n    0x0011, 0x0010, 0x000F, 0x000E, 0x000E, 0x000D, 0x000C, 0x000C,\n    0x000B, 0x000A, 0x0009, 0x0008, 0x0007, 0x0007, 0x0006, 0x0005,\n    0x0004, 0x0003, 0x0002, 0x0001, 0x0001, 0x0000, 0x0000, 0xFFFF,\n    0xFFFE, 0xFFFD, 0xFFFC, 0xFFFC, 0xFFFB, 0xFFFA, 0xFFF9, 0xFFF9,\n    0xFFF8, 0xFFF7, 0xFFF6, 0xFFF6, 0xFFF5, 0xFFF5, 0xFFF4, 0xFFF4,\n    0xFFF3, 0xFFF3, 0xFFF2, 0xFFF2, 0xFFF2, 0xFFF2, 0xFFF1, 0xFFF1,\n    0xFFF1, 0xFFF1, 0x097D, 0x0977, 0x0965, 0x0948, 0x0920, 0x08EE,\n    0x08B1, 0x086B, 0x081B, 0x07C3, 0x0762, 0x06F8, 0x0687, 0x060E,\n    0x058F, 0x0508, 0x047C, 0x03E9, 0x0351, 0x02B4, 0x0213, 0x016D,\n    0x00C3, 0x0015, 0xFF66, 0xFEB2, 0xFDFD, 0xFD45, 0xFC8C, 0xFBD1,\n    0xFB16, 0xFA5A, 0xF99E, 0xF8E3, 0xF828, 0xF76F, 0xF6B7, 0xF601,\n    0xF54D, 0xF49C, 0xF3EE, 0xF343, 0xF29D, 0xF1FA, 0xF15C, 0xF0C3,\n    0xF030, 0xEFA2, 0xEF1B, 0xEE9A, 0xEE26, 0xEDC2, 0xED6C, 0xED23,\n    0xECE3, 0xECAB, 0xEC78, 0xEC48, 0xEC18, 0xEBE7, 0xEBB2, 0xEB77,\n    0xEB33, 0xEAE5, 0xEA89, 0xEA1F, 0xE9A2, 0xE912, 0xE86C, 0xE7AD,\n    0xE6FD, 0xE682, 0xE637, 0xE616, 0xE61A, 0xE63F, 0xE67F, 0xE6D4,\n    0xE73B, 0xE7AD, 0xE830, 0xE8CB, 0xE978, 0xEA33, 0xEAF6, 0xEBBD,\n    0xEC82, 0xED42, 0xEDF6, 0xEE9A, 0xEF38, 0xEFDB, 0xF083, 0xF131,\n    0xF1E2, 0xF298, 0xF352, 0xF40E, 0xF4CE, 0xF58F, 0xF653, 0xF718,\n    0xF7DF, 0xF8A6, 0xF96E, 0xFA35, 0xFAFC, 0xFBC2, 0xFC87, 0xFD4A,\n    0xFE0B, 0xFEC9, 0xFF85, 0x003C, 0x00F0, 0x01A0, 0x024C, 0x02F2,\n    0x0393, 0x042F, 0x04C4, 0x0552, 0x05DA, 0x065A, 0x06D2, 0x0741,\n    0x07A8, 0x0806, 0x085B, 0x08A5, 0x08E5, 0x091B, 0x0945, 0x0964,\n    0x0976, 0x097D, 0xFB85, 0xFB8E, 0xFBA7, 0xFBCF, 0xFC08, 0xFC4F,\n    0xFCA4, 0xFD06, 0xFD76, 0xFDF2, 0xFE7A, 0xFF0D, 0xFFAB, 0x0052,\n    0x0104, 0x01BE, 0x0281, 0x034B, 0x041D, 0x04F5, 0x05D4, 0x06B7,\n    0x07A0, 0x088D, 0x097D, 0x0A70, 0x0B66, 0x0C5E, 0x0D58, 0x0E52,\n    0x0F4C, 0x1046, 0x113F, 0x1236, 0x132B, 0x141D, 0x150C, 0x15F7,\n    0x16DE, 0x17BF, 0x189B, 0x1971, 0x1A3F, 0x1B07, 0x1BC6, 0x1C7D,\n    0x1D2A, 0x1DCE, 0x1E68, 0x1EF6, 0x1F74, 0x1FDC, 0x202F, 0x2071,\n    0x20A1, 0x20C3, 0x20D8, 0x20E2, 0x20E2, 0x20DA, 0x20CC, 0x20BA,\n    0x20A5, 0x2090, 0x207B, 0x2069, 0x205B, 0x2053, 0x2053, 0x205D,\n    0x206B, 0x2079, 0x2086, 0x2092, 0x209B, 0x20A2, 0x20A5, 0x20A3,\n    0x209B, 0x208E, 0x2082, 0x2080, 0x2084, 0x2085, 0x207D, 0x2067,\n    0x203B, 0x1FF4, 0x1F89, 0x1EF6, 0x1E47, 0x1D8E, 0x1CCB, 0x1BFF,\n    0x1B2A, 0x1A4E, 0x196A, 0x1880, 0x1790, 0x169B, 0x15A1, 0x14A3,\n    0x13A2, 0x129F, 0x1199, 0x1092, 0x0F8A, 0x0E82, 0x0D7A, 0x0C74,\n    0x0B6F, 0x0A6D, 0x096D, 0x0872, 0x077B, 0x0689, 0x059C, 0x04B6,\n    0x03D6, 0x02FE, 0x022E, 0x0167, 0x00A9, 0xFFF7, 0xFF4E, 0xFEB1,\n    0xFE1F, 0xFD9A, 0xFD22, 0xFCB9, 0xFC5D, 0xFC11, 0xFBD5, 0xFBA9,\n    0xFB8E, 0xFB85, 0x3FFF, 0x4000, 0x4002, 0x4007, 0x400C, 0x4014,\n    0x401C, 0x4027, 0x4032, 0x403F, 0x404D, 0x405D, 0x406D, 0x407F,\n    0x4091, 0x40A5, 0x40BA, 0x40CF, 0x40E5, 0x40FC, 0x4114, 0x412D,\n    0x4146, 0x415F, 0x417A, 0x4194, 0x41AF, 0x41CB, 0x41E6, 0x4202,\n    0x421E, 0x423B, 0x4257, 0x4273, 0x4290, 0x42AC, 0x42C8, 0x42E4,\n    0x4300, 0x431B, 0x4336, 0x4351, 0x436B, 0x4385, 0x439E, 0x43B7,\n    0x43CF, 0x43E6, 0x43FC, 0x4412, 0x4427, 0x443D, 0x4454, 0x446B,\n    0x4482, 0x4499, 0x44B0, 0x44C7, 0x44DE, 0x44F5, 0x450B, 0x4521,\n    0x4536, 0x454B, 0x455F, 0x4572, 0x4584, 0x4595, 0x45A5, 0x45B3,\n    0x45C0, 0x45CC, 0x45D5, 0x45DB, 0x45DF, 0x45DF, 0x45DB, 0x45D2,\n    0x45C5, 0x45B3, 0x4599, 0x4575, 0x454B, 0x451B, 0x44E9, 0x44B6,\n    0x4485, 0x4458, 0x4431, 0x4412, 0x43F8, 0x43DD, 0x43C1, 0x43A5,\n    0x4388, 0x436B, 0x434E, 0x4330, 0x4312, 0x42F4, 0x42D6, 0x42B7,\n    0x4299, 0x427A, 0x425C, 0x423E, 0x4220, 0x4202, 0x41E4, 0x41C7,\n    0x41AB, 0x418E, 0x4173, 0x4157, 0x413D, 0x4123, 0x410A, 0x40F1,\n    0x40DA, 0x40C3, 0x40AD, 0x4099, 0x4085, 0x4073, 0x4061, 0x4051,\n    0x4042, 0x4035, 0x4029, 0x401E, 0x4015, 0x400D, 0x4007, 0x4003,\n    0x4000, 0x3FFF,\n};\n\n// 0x0501B220\nstatic const u16 peach_seg5_animindex_501B220[] = {\n    0x0001, 0x0000, 0x0088, 0x0001, 0x0088, 0x0089, 0x0001, 0x0111, 0x0001, 0x0112, 0x0001, 0x0113,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0088, 0x154A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0088, 0x14C2,\n    0x0088, 0x132A, 0x0088, 0x13B2, 0x0088, 0x143A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0C3C,\n    0x0088, 0x0114, 0x0088, 0x019C, 0x0088, 0x0224,\n    0x0088, 0x1192, 0x0088, 0x121A, 0x0088, 0x12A2,\n    0x0088, 0x0FFA, 0x0088, 0x1082, 0x0088, 0x110A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0FF9,\n    0x0088, 0x0C3D, 0x0088, 0x0CC5, 0x0088, 0x0D4D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0088, 0x0444,\n    0x0088, 0x02AC, 0x0088, 0x0334, 0x0088, 0x03BC,\n    0x0088, 0x04CC, 0x0088, 0x0554, 0x0088, 0x05DC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0F70,\n    0x0088, 0x0DD5, 0x0088, 0x0E5D, 0x0088, 0x0EE5,\n    0x0001, 0x0000, 0x0088, 0x07FC, 0x0088, 0x0884,\n    0x0088, 0x0664, 0x0088, 0x06EC, 0x0088, 0x0774,\n    0x0088, 0x090C, 0x0088, 0x0994, 0x0088, 0x0A1C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0088, 0x0F71,\n    0x0001, 0x0F6D, 0x0001, 0x0F6E, 0x0001, 0x0F6F,\n    0x0088, 0x0AA4, 0x0088, 0x0B2C, 0x0088, 0x0BB4,\n};\n\n// 0x0501B328\nstatic const struct Animation peach_seg5_anim_0501B328 = {\n    1,\n    0,\n    0,\n    0,\n    0x88,\n    ANIMINDEX_NUMPARTS(peach_seg5_animindex_501B220),\n    peach_seg5_animvalue_0501867C,\n    peach_seg5_animindex_501B220,\n    0,\n};\n"
  },
  {
    "path": "actors/peach/anims/anim_0501C404.inc.c",
    "content": "// 0x0501B340\nstatic const s16 peach_seg5_animvalue_0501B340[] = {\n    0x0000, 0x015E, 0xFFD9, 0xC50F, 0x3FFA, 0xC50F, 0xFEA9, 0xFEA9,\n    0xFEA9, 0xFEA9, 0xFEAA, 0xFEAA, 0xFEAA, 0xFEAB, 0xFEAB, 0xFEAC,\n    0xFEAD, 0xFEAD, 0xFEAE, 0xFEAE, 0xFEAF, 0xFEAF, 0xFEB0, 0xFEB1,\n    0xFEB1, 0xFEB1, 0xFEB2, 0xFEB2, 0xFEB2, 0xFEB2, 0xFEB3, 0xFEB2,\n    0xFEB2, 0xFEB2, 0xFEB2, 0xFEB2, 0xFEB1, 0xFEB1, 0xFEB0, 0xFEB0,\n    0xFEAF, 0xFEAF, 0xFEAE, 0xFEAD, 0xFEAD, 0xFEAC, 0xFEAC, 0xFEAB,\n    0xFEAB, 0xFEAA, 0xFEAA, 0xFEAA, 0xFEA9, 0xFEA9, 0xFEA9, 0xFEA9,\n    0xF650, 0xF625, 0xF60E, 0xF600, 0xF5F7, 0xF5F6, 0xF601, 0xF619,\n    0xF642, 0xF67A, 0xF6BC, 0xF704, 0xF754, 0xF7A8, 0xF801, 0xF85E,\n    0xF8BC, 0xF91B, 0xF97B, 0xF9D9, 0xFA35, 0xFA8D, 0xFAE1, 0xFB30,\n    0xFB78, 0xFBB8, 0xFBEF, 0xFC1C, 0xFC3C, 0xFC4F, 0xFC56, 0xFC51,\n    0xFC40, 0xFC23, 0xFBF8, 0xFBB5, 0xFB5A, 0xFAEB, 0xFA6E, 0xF9E5,\n    0xF956, 0xF8C4, 0xF833, 0xF7A8, 0xF727, 0xF6B4, 0xF653, 0xF609,\n    0xF5DA, 0xF5C9, 0xD1BE, 0xD1BD, 0xD1BD, 0xD1BB, 0xD1B9, 0xD1B7,\n    0xD1B5, 0xD1B2, 0xD1AF, 0xD1AB, 0xD1A8, 0xD1A4, 0xD1A1, 0xD19D,\n    0xD199, 0xD196, 0xD192, 0xD18F, 0xD18C, 0xD18A, 0xD188, 0xD186,\n    0xD185, 0xD184, 0xD183, 0xD184, 0xD184, 0xD186, 0xD187, 0xD189,\n    0xD18C, 0xD18F, 0xD191, 0xD195, 0xD198, 0xD19B, 0xD19F, 0xD1A2,\n    0xD1A6, 0xD1A9, 0xD1AC, 0xD1B0, 0xD1B3, 0xD1B5, 0xD1B8, 0xD1BA,\n    0xD1BB, 0xD1BD, 0xD1BD, 0xD1BE, 0x0F4A, 0x0F3A, 0x0F0C, 0x0EC3,\n    0x0E61, 0x0DEA, 0x0D5F, 0x0CC3, 0x0C1B, 0x0B67, 0x0AAB, 0x09E9,\n    0x0925, 0x0861, 0x079F, 0x06E3, 0x0630, 0x0587, 0x04EC, 0x0461,\n    0x03E9, 0x0387, 0x033E, 0x0310, 0x0300, 0x030F, 0x0339, 0x037D,\n    0x03D8, 0x0447, 0x04C9, 0x055A, 0x05F8, 0x06A2, 0x0753, 0x080B,\n    0x08C7, 0x0983, 0x0A3F, 0x0AF7, 0x0BA9, 0x0C52, 0x0CF0, 0x0D82,\n    0x0E03, 0x0E72, 0x0ECD, 0x0F11, 0x0F3C, 0x0F4A, 0xEA59, 0xEA4D,\n    0xEA2B, 0xE9F6, 0xE9AE, 0xE956, 0xE8F1, 0xE87F, 0xE803, 0xE77F,\n    0xE6F6, 0xE668, 0xE5D8, 0xE548, 0xE4BB, 0xE431, 0xE3AD, 0xE332,\n    0xE2C0, 0xE25A, 0xE202, 0xE1BB, 0xE185, 0xE163, 0xE158, 0xE162,\n    0xE181, 0xE1B3, 0xE1F6, 0xE247, 0xE2A6, 0xE311, 0xE385, 0xE401,\n    0xE483, 0xE50A, 0xE593, 0xE61D, 0xE6A7, 0xE72D, 0xE7B0, 0xE82C,\n    0xE8A0, 0xE90A, 0xE969, 0xE9BB, 0xE9FD, 0xEA2F, 0xEA4E, 0xEA59,\n    0xE468, 0xE47C, 0xE4B7, 0xE514, 0xE591, 0xE629, 0xE6DA, 0xE7A0,\n    0xE877, 0xE95C, 0xEA4C, 0xEB43, 0xEC3D, 0xED37, 0xEE2D, 0xEF1D,\n    0xF002, 0xF0D9, 0xF19F, 0xF250, 0xF2E9, 0xF365, 0xF3C3, 0xF3FD,\n    0xF412, 0xF3FF, 0xF3C9, 0xF372, 0xF2FF, 0xF271, 0xF1CC, 0xF113,\n    0xF049, 0xEF71, 0xEE8E, 0xEDA4, 0xECB5, 0xEBC4, 0xEAD6, 0xE9EB,\n    0xE909, 0xE831, 0xE767, 0xE6AE, 0xE609, 0xE57B, 0xE507, 0xE4B1,\n    0xE47A, 0xE468, 0xDB4C, 0xDB66, 0xDBB1, 0xDC28, 0xDCC6, 0xDD87,\n    0xDE66, 0xDF5F, 0xE06E, 0xE18C, 0xE2B6, 0xE3E8, 0xE51C, 0xE64E,\n    0xE77A, 0xE89A, 0xE9AA, 0xEAA6, 0xEB89, 0xEC4E, 0xECF1, 0xED6D,\n    0xEDBD, 0xEDEA, 0xEE09, 0xEE19, 0xEE1A, 0xEE0D, 0xEDF2, 0xEDC9,\n    0xED7F, 0xECFE, 0xEC4B, 0xEB6D, 0xEA6B, 0xE94B, 0xE813, 0xE6CA,\n    0xE576, 0xE41E, 0xE2C8, 0xE17B, 0xE03C, 0xDF14, 0xDE07, 0xDD1D,\n    0xDC5B, 0xDBC9, 0xDB6D, 0xDB4C, 0x3C83, 0x3C6F, 0x3C35, 0x3BD9,\n    0x3B5E, 0x3AC8, 0x3A1A, 0x3957, 0x3882, 0x37A1, 0x36B4, 0x35C1,\n    0x34CB, 0x33D4, 0x32E1, 0x31F5, 0x3113, 0x303F, 0x2F7C, 0x2ECE,\n    0x2E37, 0x2DBC, 0x2D60, 0x2D26, 0x2D12, 0x2D25, 0x2D5A, 0x2DB0,\n    0x2E22, 0x2EAE, 0x2F50, 0x3007, 0x30CE, 0x31A2, 0x3282, 0x3369,\n    0x3454, 0x3541, 0x362D, 0x3714, 0x37F3, 0x38C8, 0x398F, 0x3A45,\n    0x3AE8, 0x3B74, 0x3BE6, 0x3C3B, 0x3C71, 0x3C83, 0xD655, 0xD64C,\n    0xD635, 0xD60F, 0xD5DD, 0xD59F, 0xD558, 0xD508, 0xD4B1, 0xD455,\n    0xD3F5, 0xD391, 0xD32C, 0xD2C7, 0xD264, 0xD203, 0xD1A7, 0xD150,\n    0xD100, 0xD0B9, 0xD07C, 0xD049, 0xD024, 0xD00C, 0xD004, 0xD00B,\n    0xD021, 0xD044, 0xD073, 0xD0AC, 0xD0EF, 0xD139, 0xD18B, 0xD1E2,\n    0xD23D, 0xD29B, 0xD2FC, 0xD35D, 0xD3BD, 0xD41C, 0xD477, 0xD4CE,\n    0xD51F, 0xD56A, 0xD5AD, 0xD5E6, 0xD614, 0xD637, 0xD64D, 0xD655,\n    0x573D, 0x574C, 0x5777, 0x57BB, 0x5815, 0x5883, 0x5900, 0x598B,\n    0x5A21, 0x5ABE, 0x5B5F, 0x5C03, 0x5CA5, 0x5D43, 0x5DDA, 0x5E67,\n    0x5EE7, 0x5F59, 0x5FCF, 0x604A, 0x60BD, 0x611D, 0x6160, 0x617B,\n    0x6162, 0x6123, 0x60CE, 0x6068, 0x5FF1, 0x5F6B, 0x5EDB, 0x5E40,\n    0x5D9F, 0x5CF9, 0x5C50, 0x5BA7, 0x5B01, 0x5A5F, 0x59C4, 0x5932,\n    0x58AB, 0x5833, 0x57CC, 0x5783, 0x5755, 0x573D, 0x5734, 0x5735,\n    0x573A, 0x573D, 0xE6BA, 0xE6C4, 0xE6DE, 0xE709, 0xE742, 0xE788,\n    0xE7D9, 0xE833, 0xE894, 0xE8FB, 0xE967, 0xE9D5, 0xEA43, 0xEAB1,\n    0xEB1D, 0xEB84, 0xEBE5, 0xEC3F, 0xEC90, 0xECD6, 0xED0F, 0xED3A,\n    0xED55, 0xED5E, 0xED57, 0xED41, 0xED1F, 0xECF2, 0xECBA, 0xEC78,\n    0xEC2F, 0xEBDE, 0xEB88, 0xEB2D, 0xEACF, 0xEA6E, 0xEA0C, 0xE9AA,\n    0xE949, 0xE8EB, 0xE890, 0xE83A, 0xE7E9, 0xE7A0, 0xE75F, 0xE726,\n    0xE6F9, 0xE6D7, 0xE6C1, 0xE6BA, 0x052D, 0x0520, 0x04FE, 0x04C6,\n    0x047C, 0x0422, 0x03BA, 0x0345, 0x02C7, 0x0242, 0x01B7, 0x0129,\n    0x0099, 0x000B, 0xFF81, 0xFEFC, 0xFE7E, 0xFE09, 0xFDA1, 0xFD47,\n    0xFCFD, 0xFCC5, 0xFCA3, 0xFC96, 0xFCA0, 0xFCBC, 0xFCE8, 0xFD23,\n    0xFD6B, 0xFDC0, 0xFE1F, 0xFE87, 0xFEF7, 0xFF6C, 0xFFE6, 0x0062,\n    0x00E1, 0x0160, 0x01DD, 0x0257, 0x02CC, 0x033C, 0x03A4, 0x0403,\n    0x0458, 0x04A0, 0x04DB, 0x0507, 0x0523, 0x052D, 0xFFDB, 0xFFDA,\n    0xFFD6, 0xFFD1, 0xFFCA, 0xFFC1, 0xFFB7, 0xFFAC, 0xFF9F, 0xFF92,\n    0xFF85, 0xFF77, 0xFF69, 0xFF5B, 0xFF4D, 0xFF40, 0xFF34, 0xFF29,\n    0xFF1E, 0xFF16, 0xFF0E, 0xFF09, 0xFF06, 0xFF04, 0xFF05, 0xFF08,\n    0xFF0C, 0xFF12, 0xFF19, 0xFF21, 0xFF2B, 0xFF35, 0xFF40, 0xFF4B,\n    0xFF57, 0xFF63, 0xFF70, 0xFF7C, 0xFF88, 0xFF94, 0xFFA0, 0xFFAB,\n    0xFFB5, 0xFFBE, 0xFFC6, 0xFFCD, 0xFFD3, 0xFFD7, 0xFFDA, 0xFFDB,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0xEEE8, 0xEEDF, 0xEEC8, 0xEEA4, 0xEE73, 0xEE37,\n    0xEDF2, 0xEDA5, 0xED52, 0xECFA, 0xEC9E, 0xEC40, 0xEBE1, 0xEB83,\n    0xEB27, 0xEACF, 0xEA7B, 0xEA2E, 0xE9E9, 0xE9AE, 0xE97D, 0xE958,\n    0xE941, 0xE939, 0xE93F, 0xE952, 0xE96F, 0xE996, 0xE9C6, 0xE9FE,\n    0xEA3D, 0xEA81, 0xEACB, 0xEB19, 0xEB6A, 0xEBBD, 0xEC10, 0xEC64,\n    0xECB7, 0xED08, 0xED55, 0xED9F, 0xEDE4, 0xEE23, 0xEE5B, 0xEE8B,\n    0xEEB2, 0xEECF, 0xEEE1, 0xEEE8, 0x023F, 0x0251, 0x0282, 0x02D2,\n    0x033B, 0x03BC, 0x0450, 0x04F6, 0x05AA, 0x0669, 0x072F, 0x07FA,\n    0x08C6, 0x0991, 0x0A57, 0x0B16, 0x0BCA, 0x0C70, 0x0D04, 0x0D85,\n    0x0DEE, 0x0E3E, 0x0E6F, 0x0E81, 0x0E73, 0x0E4C, 0x0E0D, 0x0DB9,\n    0x0D51, 0x0CD9, 0x0C51, 0x0BBC, 0x0B1D, 0x0A75, 0x09C7, 0x0915,\n    0x0860, 0x07AB, 0x06F9, 0x064B, 0x05A3, 0x0504, 0x046F, 0x03E7,\n    0x036F, 0x0307, 0x02B3, 0x0274, 0x024D, 0x023F, 0x097D, 0x097F,\n    0x0987, 0x0992, 0x09A2, 0x09B6, 0x09CC, 0x09E5, 0x0A00, 0x0A1C,\n    0x0A3A, 0x0A58, 0x0A77, 0x0A96, 0x0AB3, 0x0AD0, 0x0AEB, 0x0B04,\n    0x0B1A, 0x0B2D, 0x0B3D, 0x0B49, 0x0B50, 0x0B53, 0x0B51, 0x0B4B,\n    0x0B42, 0x0B35, 0x0B26, 0x0B13, 0x0AFF, 0x0AE9, 0x0AD1, 0x0AB8,\n    0x0A9E, 0x0A83, 0x0A68, 0x0A4D, 0x0A32, 0x0A18, 0x09FF, 0x09E7,\n    0x09D1, 0x09BC, 0x09AA, 0x099B, 0x098E, 0x0984, 0x097F, 0x097D,\n    0xD324, 0xD324, 0xD325, 0xD327, 0xD329, 0xD32C, 0xD32E, 0xD332,\n    0xD335, 0xD339, 0xD33D, 0xD341, 0xD345, 0xD349, 0xD34D, 0xD351,\n    0xD355, 0xD358, 0xD35B, 0xD35D, 0xD35F, 0xD361, 0xD362, 0xD362,\n    0xD362, 0xD361, 0xD360, 0xD35E, 0xD35C, 0xD35A, 0xD357, 0xD354,\n    0xD351, 0xD34E, 0xD34A, 0xD347, 0xD343, 0xD340, 0xD33C, 0xD339,\n    0xD335, 0xD332, 0xD32F, 0xD32C, 0xD32A, 0xD328, 0xD326, 0xD325,\n    0xD324, 0xD324, 0x0003, 0x0003, 0x0003, 0x0004, 0x0004, 0x0005,\n    0x0005, 0x0006, 0x0006, 0x0007, 0x0008, 0x0008, 0x0009, 0x000A,\n    0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000E, 0x000F, 0x0010,\n    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x000F, 0x000E,\n    0x000E, 0x000D, 0x000C, 0x000B, 0x000A, 0x000A, 0x0009, 0x0008,\n    0x0008, 0x0007, 0x0007, 0x0006, 0x0005, 0x0005, 0x0004, 0x0004,\n    0x0004, 0x0003, 0x0003, 0x0003, 0xFE5F, 0xFE5F, 0xFE5F, 0xFE5E,\n    0xFE5D, 0xFE5B, 0xFE59, 0xFE56, 0xFE53, 0xFE4F, 0xFE4A, 0xFE44,\n    0xFE3D, 0xFE33, 0xFE28, 0xFE1D, 0xFE10, 0xFE04, 0xFDF7, 0xFDEC,\n    0xFDE1, 0xFDD8, 0xFDD0, 0xFDCB, 0xFDC9, 0xFDCA, 0xFDCE, 0xFDD5,\n    0xFDDE, 0xFDE8, 0xFDF4, 0xFE00, 0xFE0B, 0xFE16, 0xFE20, 0xFE27,\n    0xFE2E, 0xFE33, 0xFE39, 0xFE3F, 0xFE44, 0xFE49, 0xFE4E, 0xFE52,\n    0xFE56, 0xFE59, 0xFE5C, 0xFE5E, 0xFE5F, 0xFE5F, 0xBF99, 0xBF96,\n    0xBF90, 0xBF87, 0xBF7B, 0xBF6E, 0xBF5E, 0xBF4E, 0xBF3D, 0xBF2D,\n    0xBF1E, 0xBF10, 0xBF02, 0xBEF2, 0xBEE1, 0xBED0, 0xBEBE, 0xBEAC,\n    0xBE9B, 0xBE8C, 0xBE7E, 0xBE72, 0xBE68, 0xBE62, 0xBE5F, 0xBE5F,\n    0xBE60, 0xBE62, 0xBE66, 0xBE6B, 0xBE73, 0xBE7D, 0xBE8A, 0xBE9A,\n    0xBEAD, 0xBEC3, 0xBEDD, 0xBEFB, 0xBF18, 0xBF32, 0xBF48, 0xBF5B,\n    0xBF6B, 0xBF78, 0xBF83, 0xBF8B, 0xBF91, 0xBF96, 0xBF98, 0xBF99,\n    0xC066, 0x3C83, 0x3C6F, 0x3C35, 0x3BD9, 0x3B5E, 0x3AC8, 0x3A1A,\n    0x3957, 0x3882, 0x37A1, 0x36B4, 0x35C1, 0x34CB, 0x33D4, 0x32E1,\n    0x31F5, 0x3113, 0x303F, 0x2F7C, 0x2ECE, 0x2E37, 0x2DBC, 0x2D60,\n    0x2D26, 0x2D12, 0x2D25, 0x2D5A, 0x2DB0, 0x2E22, 0x2EAE, 0x2F50,\n    0x3007, 0x30CE, 0x31A2, 0x3282, 0x3369, 0x3454, 0x3541, 0x362D,\n    0x3714, 0x37F3, 0x38C8, 0x398F, 0x3A45, 0x3AE8, 0x3B74, 0x3BE6,\n    0x3C3B, 0x3C71, 0x3C83, 0xD655, 0xD64C, 0xD635, 0xD60F, 0xD5DD,\n    0xD59F, 0xD558, 0xD508, 0xD4B1, 0xD455, 0xD3F5, 0xD391, 0xD32C,\n    0xD2C7, 0xD264, 0xD203, 0xD1A7, 0xD150, 0xD100, 0xD0B9, 0xD07C,\n    0xD049, 0xD024, 0xD00C, 0xD004, 0xD00B, 0xD021, 0xD044, 0xD073,\n    0xD0AC, 0xD0EF, 0xD139, 0xD18B, 0xD1E2, 0xD23D, 0xD29B, 0xD2FC,\n    0xD35D, 0xD3BD, 0xD41C, 0xD477, 0xD4CE, 0xD51F, 0xD56A, 0xD5AD,\n    0xD5E6, 0xD614, 0xD637, 0xD64D, 0xD655, 0x573D, 0x574C, 0x5777,\n    0x57BB, 0x5815, 0x5883, 0x5900, 0x598B, 0x5A21, 0x5ABE, 0x5B5F,\n    0x5C03, 0x5CA5, 0x5D43, 0x5DDA, 0x5E67, 0x5EE7, 0x5F59, 0x5FCF,\n    0x604A, 0x60BD, 0x611D, 0x6160, 0x617B, 0x6162, 0x6123, 0x60CE,\n    0x6068, 0x5FF1, 0x5F6B, 0x5EDB, 0x5E40, 0x5D9F, 0x5CF9, 0x5C50,\n    0x5BA7, 0x5B01, 0x5A5F, 0x59C4, 0x5932, 0x58AB, 0x5833, 0x57CC,\n    0x5783, 0x5755, 0x573D, 0x5734, 0x5735, 0x573A, 0x573D, 0x023F,\n    0x0251, 0x0282, 0x02D2, 0x033B, 0x03BC, 0x0450, 0x04F6, 0x05AA,\n    0x0669, 0x072F, 0x07FA, 0x08C6, 0x0991, 0x0A57, 0x0B16, 0x0BCA,\n    0x0C70, 0x0D04, 0x0D85, 0x0DEE, 0x0E3E, 0x0E6F, 0x0E81, 0x0E73,\n    0x0E4C, 0x0E0D, 0x0DB9, 0x0D51, 0x0CD9, 0x0C51, 0x0BBC, 0x0B1D,\n    0x0A75, 0x09C7, 0x0915, 0x0860, 0x07AB, 0x06F9, 0x064B, 0x05A3,\n    0x0504, 0x046F, 0x03E7, 0x036F, 0x0307, 0x02B3, 0x0274, 0x024D,\n    0x023F, 0x097D, 0x097F, 0x0987, 0x0992, 0x09A2, 0x09B6, 0x09CC,\n    0x09E5, 0x0A00, 0x0A1C, 0x0A3A, 0x0A58, 0x0A77, 0x0A96, 0x0AB3,\n    0x0AD0, 0x0AEB, 0x0B04, 0x0B1A, 0x0B2D, 0x0B3D, 0x0B49, 0x0B50,\n    0x0B53, 0x0B51, 0x0B4B, 0x0B42, 0x0B35, 0x0B26, 0x0B13, 0x0AFF,\n    0x0AE9, 0x0AD1, 0x0AB8, 0x0A9E, 0x0A83, 0x0A68, 0x0A4D, 0x0A32,\n    0x0A18, 0x09FF, 0x09E7, 0x09D1, 0x09BC, 0x09AA, 0x099B, 0x098E,\n    0x0984, 0x097F, 0x097D, 0xD324, 0xD324, 0xD325, 0xD327, 0xD329,\n    0xD32C, 0xD32E, 0xD332, 0xD335, 0xD339, 0xD33D, 0xD341, 0xD345,\n    0xD349, 0xD34D, 0xD351, 0xD355, 0xD358, 0xD35B, 0xD35D, 0xD35F,\n    0xD361, 0xD362, 0xD362, 0xD362, 0xD361, 0xD360, 0xD35E, 0xD35C,\n    0xD35A, 0xD357, 0xD354, 0xD351, 0xD34E, 0xD34A, 0xD347, 0xD343,\n    0xD340, 0xD33C, 0xD339, 0xD335, 0xD332, 0xD32F, 0xD32C, 0xD32A,\n    0xD328, 0xD326, 0xD325, 0xD324, 0xD324, 0xE0FF, 0xC001, 0xE0FB,\n    0xBF7F, 0xFE5F, 0xFE66, 0xFE7A, 0xFE99, 0xFEC2, 0xFEF4, 0xFF2F,\n    0xFF6F, 0xFFB6, 0x0000, 0x004D, 0x009D, 0x00ED, 0x013D, 0x018B,\n    0x01D6, 0x021D, 0x025E, 0x0299, 0x02CC, 0x02F6, 0x0315, 0x032A,\n    0x0331, 0x032C, 0x031E, 0x0305, 0x02E4, 0x02BC, 0x028D, 0x0257,\n    0x021D, 0x01DE, 0x019C, 0x0158, 0x0111, 0x00CA, 0x0083, 0x003C,\n    0xFFF8, 0xFFB6, 0xFF77, 0xFF3D, 0xFF07, 0xFED7, 0xFEAE, 0xFE8D,\n    0xFE74, 0xFE65, 0xFE5F, 0xF843, 0xF843, 0xF843, 0xF843, 0xF843,\n    0xF843, 0xF843, 0xF843, 0xF843, 0xF843, 0xF844, 0xF844, 0xF844,\n    0xF844, 0xF844, 0xF844, 0xF844, 0xF844, 0xF844, 0xF844, 0xF844,\n    0xF844, 0xF844, 0xF844, 0xF844, 0xF844, 0xF844, 0xF844, 0xF844,\n    0xF844, 0xF844, 0xF844, 0xF844, 0xF844, 0xF844, 0xF844, 0xF844,\n    0xF844, 0xF844, 0xF843, 0xF843, 0xF843, 0xF843, 0xF843, 0xF843,\n    0xF843, 0xF843, 0xF843, 0xF843, 0xF843, 0xBF84, 0x00D2, 0x00D2,\n    0x00D2, 0x00D2, 0x00D2, 0x00D2, 0x00D2, 0x00D2, 0x00D2, 0x00D2,\n    0x00D2, 0x00D3, 0x00D3, 0x00D3, 0x00D3, 0x00D3, 0x00D3, 0x00D3,\n    0x00D3, 0x00D3, 0x00D3, 0x00D3, 0x00D4, 0x00D4, 0x00D4, 0x00D4,\n    0x00D4, 0x00D3, 0x00D3, 0x00D3, 0x00D3, 0x00D3, 0x00D3, 0x00D3,\n    0x00D3, 0x00D3, 0x00D3, 0x00D3, 0x00D3, 0x00D2, 0x00D2, 0x00D2,\n    0x00D2, 0x00D2, 0x00D2, 0x00D2, 0x00D2, 0x00D2, 0x00D2, 0x00D2,\n    0xF913, 0xF911, 0xF90B, 0xF901, 0xF8F4, 0xF8E5, 0xF8D2, 0xF8BE,\n    0xF8A7, 0xF88F, 0xF876, 0xF85D, 0xF843, 0xF829, 0xF80F, 0xF7F6,\n    0xF7DE, 0xF7C8, 0xF7B3, 0xF7A1, 0xF791, 0xF784, 0xF77A, 0xF774,\n    0xF772, 0xF774, 0xF77A, 0xF783, 0xF78F, 0xF79E, 0xF7AF, 0xF7C2,\n    0xF7D7, 0xF7ED, 0xF805, 0xF81D, 0xF836, 0xF84F, 0xF868, 0xF880,\n    0xF898, 0xF8AF, 0xF8C4, 0xF8D7, 0xF8E8, 0xF8F7, 0xF903, 0xF90C,\n    0xF911, 0xF913, 0x038C, 0x038C, 0x038C, 0x038C, 0x038C, 0x038B,\n    0x038B, 0x038B, 0x038A, 0x038A, 0x0389, 0x0389, 0x0388, 0x0387,\n    0x0387, 0x0386, 0x0386, 0x0385, 0x0385, 0x0385, 0x0384, 0x0384,\n    0x0384, 0x0384, 0x0384, 0x0384, 0x0384, 0x0384, 0x0384, 0x0385,\n    0x0385, 0x0385, 0x0386, 0x0386, 0x0387, 0x0387, 0x0388, 0x0388,\n    0x0389, 0x0389, 0x038A, 0x038A, 0x038B, 0x038B, 0x038B, 0x038C,\n    0x038C, 0x038C, 0x038C, 0x038C, 0x00D2, 0x00D2, 0x00D2, 0x00D2,\n    0x00D2, 0x00D2, 0x00D2, 0x00D2, 0x00D2, 0x00D2, 0x00D2, 0x00D3,\n    0x00D3, 0x00D3, 0x00D3, 0x00D3, 0x00D3, 0x00D3, 0x00D3, 0x00D3,\n    0x00D3, 0x00D3, 0x00D4, 0x00D4, 0x00D4, 0x00D4, 0x00D4, 0x00D3,\n    0x00D3, 0x00D3, 0x00D3, 0x00D3, 0x00D3, 0x00D3, 0x00D3, 0x00D3,\n    0x00D3, 0x00D3, 0x00D3, 0x00D2, 0x00D2, 0x00D2, 0x00D2, 0x00D2,\n    0x00D2, 0x00D2, 0x00D2, 0x00D2, 0x00D2, 0x00D2, 0xF913, 0xF911,\n    0xF90B, 0xF901, 0xF8F4, 0xF8E5, 0xF8D2, 0xF8BE, 0xF8A7, 0xF88F,\n    0xF876, 0xF85D, 0xF843, 0xF829, 0xF80F, 0xF7F6, 0xF7DE, 0xF7C8,\n    0xF7B3, 0xF7A1, 0xF791, 0xF784, 0xF77A, 0xF774, 0xF772, 0xF774,\n    0xF77A, 0xF783, 0xF78F, 0xF79E, 0xF7AF, 0xF7C2, 0xF7D7, 0xF7ED,\n    0xF805, 0xF81D, 0xF836, 0xF84F, 0xF868, 0xF880, 0xF898, 0xF8AF,\n    0xF8C4, 0xF8D7, 0xF8E8, 0xF8F7, 0xF903, 0xF90C, 0xF911, 0xF913,\n    0x038C, 0x038C, 0x038C, 0x038C, 0x038C, 0x038B, 0x038B, 0x038B,\n    0x038A, 0x038A, 0x0389, 0x0389, 0x0388, 0x0387, 0x0387, 0x0386,\n    0x0386, 0x0385, 0x0385, 0x0385, 0x0384, 0x0384, 0x0384, 0x0384,\n    0x0384, 0x0384, 0x0384, 0x0384, 0x0384, 0x0385, 0x0385, 0x0385,\n    0x0386, 0x0386, 0x0387, 0x0387, 0x0388, 0x0388, 0x0389, 0x0389,\n    0x038A, 0x038A, 0x038B, 0x038B, 0x038B, 0x038C, 0x038C, 0x038C,\n    0x038C, 0x038C, 0x00D2, 0x00D2, 0x00D2, 0x00D2, 0x00D2, 0x00D2,\n    0x00D2, 0x00D2, 0x00D2, 0x00D2, 0x00D2, 0x00D3, 0x00D3, 0x00D3,\n    0x00D3, 0x00D3, 0x00D3, 0x00D3, 0x00D3, 0x00D3, 0x00D3, 0x00D3,\n    0x00D4, 0x00D4, 0x00D4, 0x00D4, 0x00D4, 0x00D3, 0x00D3, 0x00D3,\n    0x00D3, 0x00D3, 0x00D3, 0x00D3, 0x00D3, 0x00D3, 0x00D3, 0x00D3,\n    0x00D3, 0x00D2, 0x00D2, 0x00D2, 0x00D2, 0x00D2, 0x00D2, 0x00D2,\n    0x00D2, 0x00D2, 0x00D2, 0x00D2, 0xF913, 0xF911, 0xF90B, 0xF901,\n    0xF8F4, 0xF8E5, 0xF8D2, 0xF8BE, 0xF8A7, 0xF88F, 0xF876, 0xF85D,\n    0xF843, 0xF829, 0xF80F, 0xF7F6, 0xF7DE, 0xF7C8, 0xF7B3, 0xF7A1,\n    0xF791, 0xF784, 0xF77A, 0xF774, 0xF772, 0xF774, 0xF77A, 0xF783,\n    0xF78F, 0xF79E, 0xF7AF, 0xF7C2, 0xF7D7, 0xF7ED, 0xF805, 0xF81D,\n    0xF836, 0xF84F, 0xF868, 0xF880, 0xF898, 0xF8AF, 0xF8C4, 0xF8D7,\n    0xF8E8, 0xF8F7, 0xF903, 0xF90C, 0xF911, 0xF913, 0x038C, 0x038C,\n    0x038C, 0x038C, 0x038C, 0x038B, 0x038B, 0x038B, 0x038A, 0x038A,\n    0x0389, 0x0389, 0x0388, 0x0387, 0x0387, 0x0386, 0x0386, 0x0385,\n    0x0385, 0x0385, 0x0384, 0x0384, 0x0384, 0x0384, 0x0384, 0x0384,\n    0x0384, 0x0384, 0x0384, 0x0385, 0x0385, 0x0385, 0x0386, 0x0386,\n    0x0387, 0x0387, 0x0388, 0x0388, 0x0389, 0x0389, 0x038A, 0x038A,\n    0x038B, 0x038B, 0x038B, 0x038C, 0x038C, 0x038C, 0x038C, 0x038C,\n    0xFE5F, 0xFE66, 0xFE7A, 0xFE99, 0xFEC2, 0xFEF4, 0xFF2F, 0xFF6F,\n    0xFFB6, 0x0000, 0x004D, 0x009D, 0x00ED, 0x013D, 0x018B, 0x01D6,\n    0x021D, 0x025E, 0x0299, 0x02CC, 0x02F6, 0x0315, 0x032A, 0x0331,\n    0x032C, 0x031E, 0x0305, 0x02E4, 0x02BC, 0x028D, 0x0257, 0x021D,\n    0x01DE, 0x019C, 0x0158, 0x0111, 0x00CA, 0x0083, 0x003C, 0xFFF8,\n    0xFFB6, 0xFF77, 0xFF3D, 0xFF07, 0xFED7, 0xFEAE, 0xFE8D, 0xFE74,\n    0xFE65, 0xFE5F, 0xF843, 0xF843, 0xF843, 0xF843, 0xF843, 0xF843,\n    0xF843, 0xF843, 0xF843, 0xF843, 0xF844, 0xF844, 0xF844, 0xF844,\n    0xF844, 0xF844, 0xF844, 0xF844, 0xF844, 0xF844, 0xF844, 0xF844,\n    0xF844, 0xF844, 0xF844, 0xF844, 0xF844, 0xF844, 0xF844, 0xF844,\n    0xF844, 0xF844, 0xF844, 0xF844, 0xF844, 0xF844, 0xF844, 0xF844,\n    0xF844, 0xF843, 0xF843, 0xF843, 0xF843, 0xF843, 0xF843, 0xF843,\n    0xF843, 0xF843, 0xF843, 0xF843, 0x3FFF, 0x0000,\n};\n\n// 0x0501C2FC\nstatic const u16 peach_seg5_animindex_501C2FC[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0003, 0x0001, 0x0004, 0x0001, 0x0005,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x07DC,\n    0x0001, 0x0000, 0x0032, 0x0778, 0x0032, 0x07AA,\n    0x0032, 0x06E2, 0x0032, 0x0714, 0x0032, 0x0746,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0420,\n    0x0032, 0x0006, 0x0032, 0x0038, 0x0032, 0x006A,\n    0x0032, 0x064C, 0x0032, 0x067E, 0x0032, 0x06B0,\n    0x0032, 0x05B6, 0x0032, 0x05E8, 0x0032, 0x061A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x05B5,\n    0x0032, 0x0421, 0x0032, 0x0453, 0x0032, 0x0485,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x0132,\n    0x0032, 0x009C, 0x0032, 0x00CE, 0x0032, 0x0100,\n    0x0032, 0x0164, 0x0032, 0x0196, 0x0032, 0x01C8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0550,\n    0x0032, 0x04B7, 0x0032, 0x04E9, 0x0032, 0x051B,\n    0x0001, 0x0000, 0x0032, 0x0290, 0x0032, 0x02C2,\n    0x0032, 0x01FA, 0x0032, 0x022C, 0x0032, 0x025E,\n    0x0032, 0x02F4, 0x0032, 0x0326, 0x0032, 0x0358,\n    0x0001, 0x0000, 0x0032, 0x0551, 0x0032, 0x0583,\n    0x0001, 0x054D, 0x0001, 0x054E, 0x0001, 0x054F,\n    0x0032, 0x038A, 0x0032, 0x03BC, 0x0032, 0x03EE,\n};\n\n// 0x0501C404\nstatic const struct Animation peach_seg5_anim_0501C404 = {\n    0,\n    0,\n    0,\n    0,\n    0x32,\n    ANIMINDEX_NUMPARTS(peach_seg5_animindex_501C2FC),\n    peach_seg5_animvalue_0501B340,\n    peach_seg5_animindex_501C2FC,\n    0,\n};\n"
  },
  {
    "path": "actors/peach/anims/data.inc.c",
    "content": "#include \"anim_0500C638.inc.c\"\n#include \"anim_0500E6B4.inc.c\"\n#include \"anim_0500ED94.inc.c\"\n#include \"anim_0500F474.inc.c\"\n#include \"anim_0500FE84.inc.c\"\n#include \"anim_05011050.inc.c\"\n#include \"anim_05012F40.inc.c\"\n#include \"anim_05015468.inc.c\"\n#include \"anim_05016798.inc.c\"\n#include \"anim_05018664.inc.c\"\n#include \"anim_0501B328.inc.c\"\n#include \"anim_0501C404.inc.c\"\n"
  },
  {
    "path": "actors/peach/anims/table.inc.c",
    "content": "// 0x0501C41C\nconst struct Animation *const peach_seg5_anims_0501C41C[] = {\n    &peach_seg5_anim_0500C638,\n    &peach_seg5_anim_0500E6B4,\n    &peach_seg5_anim_0500ED94,\n    &peach_seg5_anim_0500F474,\n    &peach_seg5_anim_0500FE84,\n    &peach_seg5_anim_05011050,\n    &peach_seg5_anim_05012F40,\n    &peach_seg5_anim_05015468,\n    &peach_seg5_anim_05016798,\n    &peach_seg5_anim_05018664,\n    &peach_seg5_anim_0501B328,\n    &peach_seg5_anim_0501C404,\n    NULL,\n};\n"
  },
  {
    "path": "actors/peach/geo.inc.c",
    "content": "// 0x0C000098\nconst GeoLayout peach_geo_000098[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, peach_seg5_dl_05007230),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 78, 0, 0, peach_seg5_dl_05006A18),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 132, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_SWITCH_CASE(8, geo_switch_peach_eyes),\n                        GEO_OPEN_NODE(),\n                            GEO_DISPLAY_LIST(LAYER_OPAQUE, peach_seg5_dl_05005CE0),\n                            GEO_DISPLAY_LIST(LAYER_OPAQUE, peach_seg5_dl_05005D38),\n                            GEO_DISPLAY_LIST(LAYER_OPAQUE, peach_seg5_dl_05005D90),\n                            GEO_DISPLAY_LIST(LAYER_OPAQUE, peach_seg5_dl_05005DE8),\n                            GEO_DISPLAY_LIST(LAYER_OPAQUE, peach_seg5_dl_05005E40),\n                            GEO_DISPLAY_LIST(LAYER_OPAQUE, peach_seg5_dl_05005E98),\n                            GEO_DISPLAY_LIST(LAYER_OPAQUE, peach_seg5_dl_05005EF0),\n                            GEO_DISPLAY_LIST(LAYER_OPAQUE, peach_seg5_dl_05005F48),\n                        GEO_CLOSE_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 38, -78, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, peach_seg5_dl_05007AB8),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 132, 0, 0, peach_seg5_dl_05009148),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 132, 0, 0, peach_seg5_dl_05008F20),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 63, 0, 84, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, peach_seg5_dl_05007E58),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 104, 0, 0, peach_seg5_dl_050087A8),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 87, 0, 0, peach_seg5_dl_05009500),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, peach_seg5_dl_05008560),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 63, 0, -84, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, peach_seg5_dl_05008228),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 104, 0, 0, peach_seg5_dl_05008CF8),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 87, 0, 0, peach_seg5_dl_05009940),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, peach_seg5_dl_05008AB0),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 78, 0, 0, peach_seg5_dl_050060E0),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, -23, -1, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, peach_seg5_dl_0500A0A8),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0C000254\nconst GeoLayout peach_geo_000254[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n        GEO_OPEN_NODE(),\n#ifdef VERSION_JP\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, peach_seg5_dl_05007230),\n#else\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, peach_seg5_us_dl_05007288),\n#endif\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 78, 0, 0, peach_seg5_dl_05006A18),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 132, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_SWITCH_CASE(8, geo_switch_peach_eyes),\n                        GEO_OPEN_NODE(),\n                            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, peach_seg5_dl_05005CE0),\n                            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, peach_seg5_dl_05005D38),\n                            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, peach_seg5_dl_05005D90),\n                            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, peach_seg5_dl_05005DE8),\n                            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, peach_seg5_dl_05005E40),\n                            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, peach_seg5_dl_05005E98),\n                            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, peach_seg5_dl_05005EF0),\n                            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, peach_seg5_dl_05005F48),\n                        GEO_CLOSE_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 38, -78, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, peach_seg5_dl_05007AB8),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 132, 0, 0, peach_seg5_dl_05009148),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 132, 0, 0, peach_seg5_dl_05008F20),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 63, 0, 84, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, peach_seg5_dl_05007E58),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 104, 0, 0, peach_seg5_dl_050087A8),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 87, 0, 0, peach_seg5_dl_05009500),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, peach_seg5_dl_05008560),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 63, 0, -84, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, peach_seg5_dl_05008228),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 104, 0, 0, peach_seg5_dl_05008CF8),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 87, 0, 0, peach_seg5_dl_05009940),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, peach_seg5_dl_05008AB0),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 78, 0, 0, peach_seg5_dl_050060E0),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, -23, -1, 0, NULL),\n                GEO_OPEN_NODE(),\n#ifdef VERSION_JP\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, peach_seg5_dl_0500A0A8),\n#else\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, peach_seg5_us_dl_0500A188),\n#endif\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0C000410\nconst GeoLayout peach_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_9_VERTS, 0x96, 100),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ASM(10, geo_update_layer_transparency),\n            GEO_SWITCH_CASE(2, geo_switch_anim_state),\n            GEO_OPEN_NODE(),\n                GEO_BRANCH(1, peach_geo_000098),\n                GEO_BRANCH(1, peach_geo_000254),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\nUNUSED static const u64 peach_unused_1 = 0;\n"
  },
  {
    "path": "actors/peach/model.inc.c",
    "content": "// Peach\n\n// 0x050009F8\nstatic const Lights1 peach_seg5_lights_050009F8 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05000A10\nstatic const Lights1 peach_seg5_lights_05000A10 = gdSPDefLights1(\n    0x7f, 0x5f, 0x0c,\n    0xff, 0xbf, 0x18, 0x28, 0x28, 0x28\n);\n\n// 0x05000A28\nALIGNED8 static const Texture peach_seg5_texture_05000A28[] = {\n#include \"actors/peach/peach_eye_open.rgba16.inc.c\"\n};\n\n// 0x05001228\nALIGNED8 static const Texture peach_seg5_texture_05001228[] = {\n#include \"actors/peach/peach_eye_mostly_open.rgba16.inc.c\"\n};\n\n// 0x05001A28\nALIGNED8 static const Texture peach_seg5_texture_05001A28[] = {\n#include \"actors/peach/peach_eye_mostly_closed.rgba16.inc.c\"\n};\n\n// 0x05002228\nALIGNED8 static const Texture peach_seg5_texture_05002228[] = {\n#include \"actors/peach/peach_eye_closed.rgba16.inc.c\"\n};\n\n// 0x05002A28\nALIGNED8 static const Texture peach_seg5_texture_05002A28[] = {\n#include \"actors/peach/peach_crown_jewel.rgba16.inc.c\"\n};\n\n// 0x05002C28\nALIGNED8 static const Texture peach_seg5_texture_05002C28[] = {\n#include \"actors/peach/peach_chest_jewel.rgba16.inc.c\"\n};\n\n// 0x05002E28\nALIGNED8 static const Texture peach_seg5_texture_05002E28[] = {\n#include \"actors/peach/peach_lips_scrunched.rgba16.inc.c\"\n};\n\n// 0x05003628\nALIGNED8 static const Texture peach_seg5_texture_05003628[] = {\n#include \"actors/peach/peach_lips.rgba16.inc.c\"\n};\n\n// 0x05003E28\nALIGNED8 static const Texture peach_seg5_texture_05003E28[] = {\n#include \"actors/peach/peach_nostril.rgba16.inc.c\"\n};\n\n// 0x05004028\nALIGNED8 static const Texture peach_seg5_texture_05004028[] = {\n#include \"actors/peach/peach_dress.rgba16.inc.c\"\n};\n\n// 0x05004828\nstatic const Vtx peach_seg5_vertex_05004828[] = {\n    {{{   205,     -4,    -48}, 0, {   265,   1338}, {0x7a, 0xf9, 0xe1, 0xff}}},\n    {{{   163,      0,      0}, 0, {   244,   1052}, {0x7e, 0x03, 0x00, 0xff}}},\n    {{{   187,    -34,    -19}, 0, {   375,   1162}, {0x2d, 0xac, 0xad, 0xff}}},\n    {{{   187,     35,    -23}, 0, {   110,   1197}, {0x2d, 0x54, 0xad, 0xff}}},\n    {{{   205,     -4,     49}, 0, {   254,    765}, {0x7a, 0xf9, 0x20, 0xff}}},\n    {{{   187,     35,     24}, 0, {   105,    919}, {0x2e, 0x55, 0x52, 0xff}}},\n    {{{   214,     46,      0}, 0, {    67,   1060}, {0x71, 0x37, 0xfe, 0xff}}},\n    {{{   214,    -40,      0}, 0, {   395,   1046}, {0x74, 0xcd, 0xfd, 0xff}}},\n    {{{   187,    -34,     20}, 0, {   371,    931}, {0x2d, 0xab, 0x52, 0xff}}},\n    {{{   187,    -34,    -19}, 0, {  -103,    145}, {0x2d, 0xac, 0xad, 0xff}}},\n    {{{   214,    -40,      0}, 0, {   223,   -306}, {0x74, 0xcd, 0xfd, 0xff}}},\n    {{{   165,    -43,      0}, 0, {   224,    496}, {0x4b, 0x9a, 0x00, 0xff}}},\n    {{{   167,    -34,    -19}, 0, {  -103,    463}, {0x4d, 0xad, 0xc8, 0xff}}},\n    {{{   214,     46,      0}, 0, {   223,   -304}, {0x71, 0x37, 0xfe, 0xff}}},\n    {{{   156,     40,      0}, 0, {   224,    648}, {0x4e, 0x64, 0x00, 0xff}}},\n    {{{   187,     35,     24}, 0, {   618,    141}, {0x2e, 0x55, 0x52, 0xff}}},\n};\n\n// 0x05004928\nstatic const Vtx peach_seg5_vertex_05004928[] = {\n    {{{   165,    -43,      0}, 0, {   224,    496}, {0x4b, 0x9a, 0x00, 0xff}}},\n    {{{   214,    -40,      0}, 0, {   223,   -306}, {0x74, 0xcd, 0xfd, 0xff}}},\n    {{{   187,    -34,     20}, 0, {   551,    145}, {0x2d, 0xab, 0x52, 0xff}}},\n    {{{   167,    -34,     20}, 0, {   551,    463}, {0x4c, 0xac, 0x38, 0xff}}},\n    {{{   169,     -4,    -42}, 0, {   224,    511}, {0x4a, 0xf1, 0x9b, 0xff}}},\n    {{{   187,     35,    -23}, 0, {  -581,    154}, {0x2d, 0x54, 0xad, 0xff}}},\n    {{{   205,     -4,    -48}, 0, {   225,   -213}, {0x7a, 0xf9, 0xe1, 0xff}}},\n    {{{   187,    -34,    -19}, 0, {   829,    159}, {0x2d, 0xac, 0xad, 0xff}}},\n    {{{   168,     35,    -23}, 0, {  -586,    534}, {0x6c, 0x3d, 0xe9, 0xff}}},\n    {{{   167,    -34,    -19}, 0, {   824,    539}, {0x4d, 0xad, 0xc8, 0xff}}},\n    {{{   156,     40,      0}, 0, {   224,    648}, {0x4e, 0x64, 0x00, 0xff}}},\n    {{{   214,     46,      0}, 0, {   223,   -304}, {0x71, 0x37, 0xfe, 0xff}}},\n    {{{   187,     35,    -23}, 0, {  -170,    141}, {0x2d, 0x54, 0xad, 0xff}}},\n    {{{   168,     35,     24}, 0, {   618,    459}, {0x6c, 0x3d, 0x17, 0xff}}},\n    {{{   187,     35,     24}, 0, {   618,    141}, {0x2e, 0x55, 0x52, 0xff}}},\n};\n\n// 0x05004A18\nstatic const Vtx peach_seg5_vertex_05004A18[] = {\n    {{{   169,     -4,     43}, 0, {   224,    511}, {0x4a, 0xf1, 0x65, 0xff}}},\n    {{{   167,    -34,     20}, 0, {   824,    539}, {0x4c, 0xac, 0x38, 0xff}}},\n    {{{   187,    -34,     20}, 0, {   829,    159}, {0x2d, 0xab, 0x52, 0xff}}},\n    {{{   168,     35,    -23}, 0, {  -170,    459}, {0x6c, 0x3d, 0xe9, 0xff}}},\n    {{{   156,     40,      0}, 0, {   224,    648}, {0x4e, 0x64, 0x00, 0xff}}},\n    {{{   187,     35,    -23}, 0, {  -170,    141}, {0x2d, 0x54, 0xad, 0xff}}},\n    {{{   168,     35,     24}, 0, {  -586,    534}, {0x6c, 0x3d, 0x17, 0xff}}},\n    {{{   187,     35,     24}, 0, {  -581,    154}, {0x2e, 0x55, 0x52, 0xff}}},\n    {{{   205,     -4,     49}, 0, {   225,   -213}, {0x7a, 0xf9, 0x20, 0xff}}},\n};\n\n// 0x05004AA8\nstatic const Vtx peach_seg5_vertex_05004AA8[] = {\n    {{{    16,     89,     -9}, 0, {  -141,    397}, {0xe1, 0x72, 0xd4, 0xff}}},\n    {{{    16,     89,     10}, 0, {   547,    428}, {0xe2, 0x73, 0x2b, 0xff}}},\n    {{{    26,    102,      0}, 0, {   230,   -159}, {0xf4, 0x7e, 0xfe, 0xff}}},\n};\n\n// 0x05004AD8\nstatic const Vtx peach_seg5_vertex_05004AD8[] = {\n    {{{    59,     -8,     86}, 0, {  1146,  -1042}, {0xcd, 0x1d, 0x6f, 0xff}}},\n    {{{    20,     28,     56}, 0, {   774,   -582}, {0xa7, 0x05, 0x59, 0xff}}},\n    {{{    17,     11,     58}, 0, {   740,   -552}, {0xa5, 0x15, 0x55, 0xff}}},\n    {{{    32,    -11,     82}, 0, {  1028,   -674}, {0xc8, 0x17, 0x6f, 0xff}}},\n    {{{     1,     38,     35}, 0, {   536,   -374}, {0x9a, 0x03, 0x4a, 0xff}}},\n    {{{    16,     69,     48}, 0, {   606,   -580}, {0xbd, 0x39, 0x5a, 0xff}}},\n    {{{   -10,     -6,      0}, 0, {    40,   -324}, {0x82, 0xf1, 0x00, 0xff}}},\n    {{{    59,     -8,    -85}, 0, {  -676,  -1632}, {0xcd, 0x1d, 0x91, 0xff}}},\n    {{{    32,    -11,    -81}, 0, {  -706,  -1234}, {0xc8, 0x17, 0x91, 0xff}}},\n    {{{    17,     11,    -57}, 0, {  -494,   -950}, {0xa5, 0x15, 0xab, 0xff}}},\n    {{{    20,     28,    -55}, 0, {  -514,   -998}, {0xa7, 0x05, 0xa7, 0xff}}},\n    {{{     1,     38,    -34}, 0, {  -380,   -670}, {0x9a, 0x03, 0xb6, 0xff}}},\n    {{{    16,     69,    -47}, 0, {  -366,   -894}, {0xbe, 0x39, 0xa5, 0xff}}},\n    {{{    44,     56,    -57}, 0, {  1116,    782}, {0xf0, 0x5b, 0xaa, 0xff}}},\n    {{{    17,     81,    -32}, 0, {   618,   1170}, {0xe7, 0x68, 0xbd, 0xff}}},\n    {{{    45,     79,    -36}, 0, {   714,    746}, {0xf0, 0x6f, 0xc6, 0xff}}},\n};\n\n// 0x05004BD8\nstatic const Vtx peach_seg5_vertex_05004BD8[] = {\n    {{{     1,     38,    -34}, 0, {  -380,   -670}, {0x9a, 0x03, 0xb6, 0xff}}},\n    {{{   -10,     -6,      0}, 0, {    40,   -324}, {0x82, 0xf1, 0x00, 0xff}}},\n    {{{   -20,     72,      0}, 0, {    18,   -210}, {0x96, 0x45, 0x00, 0xff}}},\n    {{{    17,     81,     33}, 0, {   464,   -628}, {0xe6, 0x68, 0x43, 0xff}}},\n    {{{    16,     69,     48}, 0, {   606,   -580}, {0xbd, 0x39, 0x5a, 0xff}}},\n    {{{     1,     38,     35}, 0, {   536,   -374}, {0x9a, 0x03, 0x4a, 0xff}}},\n    {{{    16,     69,    -47}, 0, {  -366,   -894}, {0xbe, 0x39, 0xa5, 0xff}}},\n    {{{    17,     81,    -32}, 0, {  -224,   -850}, {0xe7, 0x68, 0xbd, 0xff}}},\n    {{{   102,     92,    -30}, 0, {   588,   -144}, {0xcf, 0x63, 0xc4, 0xff}}},\n    {{{    73,     65,    -65}, 0, {  1286,    354}, {0xd5, 0x50, 0xa9, 0xff}}},\n    {{{    45,     79,    -36}, 0, {   714,    746}, {0xf0, 0x6f, 0xc6, 0xff}}},\n    {{{    85,     99,      0}, 0, {     0,     64}, {0xcd, 0x74, 0x00, 0xff}}},\n    {{{    17,     81,    -32}, 0, {   618,   1170}, {0xe7, 0x68, 0xbd, 0xff}}},\n    {{{    16,     89,     -9}, 0, {   160,   1136}, {0xe1, 0x72, 0xd4, 0xff}}},\n    {{{    44,     56,    -57}, 0, {  1116,    782}, {0xf0, 0x5b, 0xaa, 0xff}}},\n};\n\n// 0x05004CC8\nstatic const Vtx peach_seg5_vertex_05004CC8[] = {\n    {{{    45,     79,     37}, 0, {   714,    746}, {0xf1, 0x6f, 0x3a, 0xff}}},\n    {{{   102,     92,     31}, 0, {   588,   -144}, {0xce, 0x64, 0x3b, 0xff}}},\n    {{{    85,     99,      0}, 0, {     0,     64}, {0xcd, 0x74, 0x00, 0xff}}},\n    {{{    45,     79,    -36}, 0, {   714,    746}, {0xf0, 0x6f, 0xc6, 0xff}}},\n    {{{    41,     89,      0}, 0, {     0,    738}, {0x0b, 0x7e, 0xff, 0xff}}},\n    {{{    16,     89,     -9}, 0, {    16,   -772}, {0xe1, 0x72, 0xd4, 0xff}}},\n    {{{    26,    102,      0}, 0, {   144,   -870}, {0xf4, 0x7e, 0xfe, 0xff}}},\n    {{{    41,     89,      0}, 0, {   188,  -1094}, {0x0b, 0x7e, 0xff, 0xff}}},\n    {{{    16,     89,     10}, 0, {   222,   -704}, {0xe2, 0x73, 0x2b, 0xff}}},\n    {{{    16,     89,     -9}, 0, {   160,   1136}, {0xe1, 0x72, 0xd4, 0xff}}},\n    {{{    16,     69,    -47}, 0, {   882,   1192}, {0xbe, 0x39, 0xa5, 0xff}}},\n    {{{    17,     81,    -32}, 0, {   618,   1170}, {0xe7, 0x68, 0xbd, 0xff}}},\n    {{{    44,     56,    -57}, 0, {  1116,    782}, {0xf0, 0x5b, 0xaa, 0xff}}},\n    {{{    16,     89,     10}, 0, {   160,   1136}, {0xe2, 0x73, 0x2b, 0xff}}},\n    {{{    17,     81,     33}, 0, {   618,   1170}, {0xe6, 0x68, 0x43, 0xff}}},\n};\n\n// 0x05004DB8\nstatic const Vtx peach_seg5_vertex_05004DB8[] = {\n    {{{    45,     79,     37}, 0, {   714,    746}, {0xf1, 0x6f, 0x3a, 0xff}}},\n    {{{    44,     56,     58}, 0, {  1116,    782}, {0xf0, 0x5b, 0x56, 0xff}}},\n    {{{    73,     65,     66}, 0, {  1286,    354}, {0xd5, 0x50, 0x57, 0xff}}},\n    {{{    17,     81,     33}, 0, {   618,   1170}, {0xe6, 0x68, 0x43, 0xff}}},\n    {{{   102,     92,     31}, 0, {   588,   -144}, {0xce, 0x64, 0x3b, 0xff}}},\n    {{{    17,     81,     33}, 0, {   608,   1114}, {0xe6, 0x68, 0x43, 0xff}}},\n    {{{    16,     69,     48}, 0, {   960,   1118}, {0xbd, 0x39, 0x5a, 0xff}}},\n    {{{    44,     56,     58}, 0, {  1290,    720}, {0xf0, 0x5b, 0x56, 0xff}}},\n};\n\n// 0x05004E38\nstatic const Vtx peach_seg5_vertex_05004E38[] = {\n    {{{   -20,     72,      0}, 0, {   480,   2010}, {0x96, 0x45, 0x00, 0xff}}},\n    {{{    17,     81,     33}, 0, {  2102,    128}, {0xe6, 0x68, 0x43, 0xff}}},\n    {{{    16,     89,     10}, 0, {   962,    -24}, {0xe2, 0x73, 0x2b, 0xff}}},\n    {{{    17,     81,    -32}, 0, { -1142,    128}, {0xe7, 0x68, 0xbd, 0xff}}},\n    {{{    16,     89,     -9}, 0, {    -4,    -24}, {0xe1, 0x72, 0xd4, 0xff}}},\n};\n\n// 0x05004E88\nstatic const Vtx peach_seg5_vertex_05004E88[] = {\n    {{{    18,    -87,    -62}, 0, {     0,      0}, {0xa9, 0xc8, 0xb7, 0xff}}},\n    {{{    17,     11,    -57}, 0, {     0,      0}, {0xa5, 0x15, 0xab, 0xff}}},\n    {{{    32,    -11,    -81}, 0, {     0,      0}, {0xc8, 0x17, 0x91, 0xff}}},\n    {{{    98,    -89,    -74}, 0, {     0,      0}, {0x31, 0x98, 0xcc, 0xff}}},\n    {{{    61,    -56,   -115}, 0, {     0,      0}, {0xc4, 0xd9, 0x98, 0xff}}},\n    {{{    39,   -109,      0}, 0, {     0,      0}, {0xf0, 0x83, 0x00, 0xff}}},\n    {{{    59,     -8,    -85}, 0, {     0,      0}, {0xcd, 0x1d, 0x91, 0xff}}},\n    {{{   -10,     -6,      0}, 0, {     0,      0}, {0x82, 0xf1, 0x00, 0xff}}},\n    {{{    10,    -93,      0}, 0, {     0,      0}, {0x9b, 0xb4, 0x00, 0xff}}},\n    {{{    18,    -87,     63}, 0, {     0,      0}, {0xa9, 0xc8, 0x48, 0xff}}},\n    {{{    98,    -89,     75}, 0, {     0,      0}, {0x31, 0x97, 0x33, 0xff}}},\n    {{{    61,    -56,    116}, 0, {     0,      0}, {0xc4, 0xd9, 0x68, 0xff}}},\n    {{{    59,     -8,     86}, 0, {     0,      0}, {0xcd, 0x1d, 0x6f, 0xff}}},\n    {{{    17,     11,     58}, 0, {     0,      0}, {0xa5, 0x15, 0x55, 0xff}}},\n    {{{    32,    -11,     82}, 0, {     0,      0}, {0xc8, 0x17, 0x6f, 0xff}}},\n};\n\n// 0x05004F78\nstatic const Vtx peach_seg5_vertex_05004F78[] = {\n    {{{    59,     -8,     86}, 0, {     0,      0}, {0xcd, 0x1d, 0x6f, 0xff}}},\n    {{{   100,    -62,    128}, 0, {     0,      0}, {0x1b, 0x17, 0x79, 0xff}}},\n    {{{    92,    -29,    104}, 0, {     0,      0}, {0x36, 0x08, 0x72, 0xff}}},\n    {{{    61,    -56,    116}, 0, {     0,      0}, {0xc4, 0xd9, 0x68, 0xff}}},\n    {{{    20,     28,     56}, 0, {     0,      0}, {0xa7, 0x05, 0x59, 0xff}}},\n    {{{    35,     37,     77}, 0, {     0,      0}, {0xd0, 0x29, 0x6e, 0xff}}},\n    {{{    66,     12,     84}, 0, {     0,      0}, {0xdd, 0x22, 0x74, 0xff}}},\n    {{{    97,      3,    107}, 0, {     0,      0}, {0xe4, 0x06, 0x7b, 0xff}}},\n    {{{    97,      3,   -106}, 0, {     0,      0}, {0xe4, 0x06, 0x85, 0xff}}},\n    {{{    59,     -8,    -85}, 0, {     0,      0}, {0xcd, 0x1d, 0x91, 0xff}}},\n    {{{    66,     12,    -83}, 0, {     0,      0}, {0xdd, 0x22, 0x8c, 0xff}}},\n    {{{    35,     37,    -76}, 0, {     0,      0}, {0xd0, 0x29, 0x92, 0xff}}},\n    {{{    73,     65,    -65}, 0, {     0,      0}, {0xd5, 0x50, 0xa9, 0xff}}},\n    {{{   100,    -62,   -127}, 0, {     0,      0}, {0x1b, 0x17, 0x87, 0xff}}},\n    {{{    61,    -56,   -115}, 0, {     0,      0}, {0xc4, 0xd9, 0x98, 0xff}}},\n    {{{    92,    -29,   -103}, 0, {     0,      0}, {0x36, 0x08, 0x8e, 0xff}}},\n};\n\n// 0x05005078\nstatic const Vtx peach_seg5_vertex_05005078[] = {\n    {{{    35,     37,    -76}, 0, {     0,      0}, {0xd0, 0x29, 0x92, 0xff}}},\n    {{{    59,     -8,    -85}, 0, {     0,      0}, {0xcd, 0x1d, 0x91, 0xff}}},\n    {{{    20,     28,    -55}, 0, {     0,      0}, {0xa7, 0x05, 0xa7, 0xff}}},\n    {{{    97,      3,   -106}, 0, {     0,      0}, {0xe4, 0x06, 0x85, 0xff}}},\n    {{{    92,    -29,   -103}, 0, {     0,      0}, {0x36, 0x08, 0x8e, 0xff}}},\n    {{{    16,     69,    -47}, 0, {     0,      0}, {0xbe, 0x39, 0xa5, 0xff}}},\n    {{{    44,     56,    -57}, 0, {     0,      0}, {0xf0, 0x5b, 0xaa, 0xff}}},\n    {{{    73,     65,    -65}, 0, {     0,      0}, {0xd5, 0x50, 0xa9, 0xff}}},\n    {{{   137,     48,   -115}, 0, {     0,      0}, {0x39, 0x1c, 0x93, 0xff}}},\n    {{{   102,     92,    -30}, 0, {     0,      0}, {0xcf, 0x63, 0xc4, 0xff}}},\n    {{{   138,    104,    -46}, 0, {     0,      0}, {0x0b, 0x6f, 0xc5, 0xff}}},\n    {{{   134,    -13,    -79}, 0, {     0,      0}, {0x4d, 0xd6, 0xa5, 0xff}}},\n    {{{    20,     28,     56}, 0, {     0,      0}, {0xa7, 0x05, 0x59, 0xff}}},\n    {{{    35,     37,     77}, 0, {     0,      0}, {0xd0, 0x29, 0x6e, 0xff}}},\n    {{{    16,     69,     48}, 0, {     0,      0}, {0xbd, 0x39, 0x5a, 0xff}}},\n};\n\n// 0x05005168\nstatic const Vtx peach_seg5_vertex_05005168[] = {\n    {{{    44,     56,     58}, 0, {     0,      0}, {0xf0, 0x5b, 0x56, 0xff}}},\n    {{{    35,     37,     77}, 0, {     0,      0}, {0xd0, 0x29, 0x6e, 0xff}}},\n    {{{    73,     65,     66}, 0, {     0,      0}, {0xd5, 0x50, 0x57, 0xff}}},\n    {{{    66,     12,     84}, 0, {     0,      0}, {0xdd, 0x22, 0x74, 0xff}}},\n    {{{    16,     69,     48}, 0, {     0,      0}, {0xbd, 0x39, 0x5a, 0xff}}},\n    {{{    97,      3,    107}, 0, {     0,      0}, {0xe4, 0x06, 0x7b, 0xff}}},\n    {{{   134,    -13,     80}, 0, {     0,      0}, {0x4d, 0xd6, 0x5b, 0xff}}},\n    {{{   137,     48,    116}, 0, {     0,      0}, {0x39, 0x1c, 0x6d, 0xff}}},\n    {{{    92,    -29,    104}, 0, {     0,      0}, {0x36, 0x08, 0x72, 0xff}}},\n    {{{   138,    104,     47}, 0, {     0,      0}, {0x0b, 0x6f, 0x3b, 0xff}}},\n    {{{   102,     92,     31}, 0, {     0,      0}, {0xce, 0x64, 0x3b, 0xff}}},\n    {{{   134,    -13,    -79}, 0, {     0,      0}, {0x4d, 0xd6, 0xa5, 0xff}}},\n    {{{   165,    -32,    -46}, 0, {     0,      0}, {0x6e, 0xd7, 0xd1, 0xff}}},\n    {{{   131,    -79,    -38}, 0, {     0,      0}, {0x57, 0xb2, 0xd1, 0xff}}},\n    {{{   165,    -43,      0}, 0, {     0,      0}, {0x4b, 0x9a, 0x00, 0xff}}},\n    {{{   131,    -87,      0}, 0, {     0,      0}, {0x44, 0x96, 0x00, 0xff}}},\n};\n\n// 0x05005268\nstatic const Vtx peach_seg5_vertex_05005268[] = {\n    {{{   131,    -87,      0}, 0, {     0,      0}, {0x44, 0x96, 0x00, 0xff}}},\n    {{{    98,    -89,    -74}, 0, {     0,      0}, {0x31, 0x98, 0xcc, 0xff}}},\n    {{{   131,    -79,    -38}, 0, {     0,      0}, {0x57, 0xb2, 0xd1, 0xff}}},\n    {{{   134,    -13,    -79}, 0, {     0,      0}, {0x4d, 0xd6, 0xa5, 0xff}}},\n    {{{    61,    -56,   -115}, 0, {     0,      0}, {0xc4, 0xd9, 0x98, 0xff}}},\n    {{{   100,    -62,   -127}, 0, {     0,      0}, {0x1b, 0x17, 0x87, 0xff}}},\n    {{{    98,    -98,      0}, 0, {     0,      0}, {0x1f, 0x86, 0x00, 0xff}}},\n    {{{    39,   -109,      0}, 0, {     0,      0}, {0xf0, 0x83, 0x00, 0xff}}},\n    {{{    92,    -29,   -103}, 0, {     0,      0}, {0x36, 0x08, 0x8e, 0xff}}},\n    {{{   169,     -4,    -42}, 0, {     0,      0}, {0x4a, 0xf1, 0x9b, 0xff}}},\n    {{{   169,     23,    -51}, 0, {     0,      0}, {0x77, 0xf8, 0xd6, 0xff}}},\n    {{{   168,     35,    -23}, 0, {     0,      0}, {0x6c, 0x3d, 0xe9, 0xff}}},\n    {{{   165,    -32,    -46}, 0, {     0,      0}, {0x6e, 0xd7, 0xd1, 0xff}}},\n    {{{   137,     48,   -115}, 0, {     0,      0}, {0x39, 0x1c, 0x93, 0xff}}},\n    {{{   138,    104,    -46}, 0, {     0,      0}, {0x0b, 0x6f, 0xc5, 0xff}}},\n    {{{   167,     79,    -39}, 0, {     0,      0}, {0x77, 0x29, 0xfa, 0xff}}},\n};\n\n// 0x05005368\nstatic const Vtx peach_seg5_vertex_05005368[] = {\n    {{{   148,    108,      0}, 0, {     0,      0}, {0x5e, 0x55, 0x00, 0xff}}},\n    {{{   138,    104,    -46}, 0, {     0,      0}, {0x0b, 0x6f, 0xc5, 0xff}}},\n    {{{   105,    124,      0}, 0, {     0,      0}, {0xd3, 0x76, 0x00, 0xff}}},\n    {{{   102,     92,    -30}, 0, {     0,      0}, {0xcf, 0x63, 0xc4, 0xff}}},\n    {{{   167,     79,    -39}, 0, {     0,      0}, {0x77, 0x29, 0xfa, 0xff}}},\n    {{{   169,     23,    -51}, 0, {     0,      0}, {0x77, 0xf8, 0xd6, 0xff}}},\n    {{{   137,     48,   -115}, 0, {     0,      0}, {0x39, 0x1c, 0x93, 0xff}}},\n    {{{    85,     99,      0}, 0, {     0,      0}, {0xcd, 0x74, 0x00, 0xff}}},\n    {{{   168,     35,    -23}, 0, {     0,      0}, {0x6c, 0x3d, 0xe9, 0xff}}},\n    {{{   156,     40,      0}, 0, {     0,      0}, {0x4e, 0x64, 0x00, 0xff}}},\n    {{{   169,     -4,    -42}, 0, {     0,      0}, {0x4a, 0xf1, 0x9b, 0xff}}},\n    {{{   165,    -32,    -46}, 0, {     0,      0}, {0x6e, 0xd7, 0xd1, 0xff}}},\n    {{{   138,    104,     47}, 0, {     0,      0}, {0x0b, 0x6f, 0x3b, 0xff}}},\n    {{{   167,     79,     40}, 0, {     0,      0}, {0x77, 0x29, 0x07, 0xff}}},\n    {{{   167,    -34,    -19}, 0, {     0,      0}, {0x4d, 0xad, 0xc8, 0xff}}},\n    {{{   165,    -43,      0}, 0, {     0,      0}, {0x4b, 0x9a, 0x00, 0xff}}},\n};\n\n// 0x05005468\nstatic const Vtx peach_seg5_vertex_05005468[] = {\n    {{{    98,    -89,     75}, 0, {     0,      0}, {0x31, 0x97, 0x33, 0xff}}},\n    {{{    98,    -98,      0}, 0, {     0,      0}, {0x1f, 0x86, 0x00, 0xff}}},\n    {{{   131,    -87,      0}, 0, {     0,      0}, {0x44, 0x96, 0x00, 0xff}}},\n    {{{   165,    -43,      0}, 0, {     0,      0}, {0x4b, 0x9a, 0x00, 0xff}}},\n    {{{   131,    -79,     39}, 0, {     0,      0}, {0x57, 0xb1, 0x2e, 0xff}}},\n    {{{   168,     35,     24}, 0, {     0,      0}, {0x6c, 0x3d, 0x17, 0xff}}},\n    {{{   156,     40,      0}, 0, {     0,      0}, {0x4e, 0x64, 0x00, 0xff}}},\n    {{{   167,     79,     40}, 0, {     0,      0}, {0x77, 0x29, 0x07, 0xff}}},\n    {{{   148,    108,      0}, 0, {     0,      0}, {0x5e, 0x55, 0x00, 0xff}}},\n    {{{   138,    104,     47}, 0, {     0,      0}, {0x0b, 0x6f, 0x3b, 0xff}}},\n    {{{   105,    124,      0}, 0, {     0,      0}, {0xd3, 0x76, 0x00, 0xff}}},\n    {{{   102,     92,     31}, 0, {     0,      0}, {0xce, 0x64, 0x3b, 0xff}}},\n    {{{    85,     99,      0}, 0, {     0,      0}, {0xcd, 0x74, 0x00, 0xff}}},\n    {{{    39,   -109,      0}, 0, {     0,      0}, {0xf0, 0x83, 0x00, 0xff}}},\n    {{{   165,    -32,     47}, 0, {     0,      0}, {0x6e, 0xd7, 0x2f, 0xff}}},\n    {{{   167,    -34,     20}, 0, {     0,      0}, {0x4c, 0xac, 0x38, 0xff}}},\n};\n\n// 0x05005568\nstatic const Vtx peach_seg5_vertex_05005568[] = {\n    {{{    98,    -89,     75}, 0, {     0,      0}, {0x31, 0x97, 0x33, 0xff}}},\n    {{{   134,    -13,     80}, 0, {     0,      0}, {0x4d, 0xd6, 0x5b, 0xff}}},\n    {{{    92,    -29,    104}, 0, {     0,      0}, {0x36, 0x08, 0x72, 0xff}}},\n    {{{   169,     23,     52}, 0, {     0,      0}, {0x77, 0xf8, 0x2a, 0xff}}},\n    {{{   137,     48,    116}, 0, {     0,      0}, {0x39, 0x1c, 0x6d, 0xff}}},\n    {{{   165,    -32,     47}, 0, {     0,      0}, {0x6e, 0xd7, 0x2f, 0xff}}},\n    {{{   131,    -79,     39}, 0, {     0,      0}, {0x57, 0xb1, 0x2e, 0xff}}},\n    {{{   100,    -62,    128}, 0, {     0,      0}, {0x1b, 0x17, 0x79, 0xff}}},\n    {{{   169,     -4,     43}, 0, {     0,      0}, {0x4a, 0xf1, 0x65, 0xff}}},\n    {{{   168,     35,     24}, 0, {     0,      0}, {0x6c, 0x3d, 0x17, 0xff}}},\n    {{{   167,     79,     40}, 0, {     0,      0}, {0x77, 0x29, 0x07, 0xff}}},\n    {{{   138,    104,     47}, 0, {     0,      0}, {0x0b, 0x6f, 0x3b, 0xff}}},\n    {{{    61,    -56,    116}, 0, {     0,      0}, {0xc4, 0xd9, 0x68, 0xff}}},\n    {{{   167,    -34,     20}, 0, {     0,      0}, {0x4c, 0xac, 0x38, 0xff}}},\n};\n\n// 0x05005648 - 0x05005750\nconst Gfx peach_seg5_dl_05005648[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, peach_seg5_texture_05002A28),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 16 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&peach_seg5_lights_050009F8.l, 1),\n    gsSPLight(&peach_seg5_lights_050009F8.a, 2),\n    gsSPVertex(peach_seg5_vertex_05004828, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  1,  5, 0x0,  5,  1,  6, 0x0),\n    gsSP2Triangles( 7,  1,  8, 0x0,  6,  1,  3, 0x0),\n    gsSP2Triangles( 2,  1,  7, 0x0,  8,  1,  4, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 11, 12,  9, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(peach_seg5_vertex_05004928, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 8,  5,  4, 0x0,  9,  4,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 10, 0x0),\n    gsSPVertex(peach_seg5_vertex_05004A18, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  0,  7, 0x0,  7,  0,  8, 0x0),\n    gsSP1Triangle( 2,  8,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005750 - 0x05005780\nconst Gfx peach_seg5_dl_05005750[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, peach_seg5_texture_05003E28),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 16 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(peach_seg5_vertex_05004AA8, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005780 - 0x050058B8\nconst Gfx peach_seg5_dl_05005780[] = {\n    gsSPVertex(peach_seg5_vertex_05004AD8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  5,  4,  1, 0x0),\n    gsSP2Triangles( 6,  2,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles( 9,  6, 11, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(peach_seg5_vertex_05004BD8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 4,  2,  5, 0x0,  2,  1,  5, 0x0),\n    gsSP2Triangles( 0,  2,  6, 0x0,  2,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(10, 12, 13, 0x0, 14, 10,  9, 0x0),\n    gsSPVertex(peach_seg5_vertex_05004CC8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  6,  8,  7, 0x0),\n    gsSP2Triangles( 3,  9,  4, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles( 2,  4,  0, 0x0,  0,  4, 13, 0x0),\n    gsSP1Triangle(14,  0, 13, 0x0),\n    gsSPVertex(peach_seg5_vertex_05004DB8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 2,  4,  0, 0x0,  5,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050058B8 - 0x050058E0\nconst Gfx peach_seg5_dl_050058B8[] = {\n    gsSPVertex(peach_seg5_vertex_05004E38, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP1Triangle( 0,  2,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050058E0 - 0x05005C48\nconst Gfx peach_seg5_dl_050058E0[] = {\n    gsSPLight(&peach_seg5_lights_05000A10.l, 1),\n    gsSPLight(&peach_seg5_lights_05000A10.a, 2),\n    gsSPVertex(peach_seg5_vertex_05004E88, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 3,  5,  0, 0x0,  6,  4,  0, 0x0),\n    gsSP2Triangles( 7,  1,  0, 0x0,  2,  6,  0, 0x0),\n    gsSP2Triangles( 7,  0,  8, 0x0,  8,  0,  5, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  5, 10,  9, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9,  7, 0x0,  9, 12, 14, 0x0),\n    gsSP2Triangles( 5,  9,  8, 0x0, 14, 13,  9, 0x0),\n    gsSPVertex(peach_seg5_vertex_05004F78, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  0,  5, 0x0,  5,  0,  6, 0x0),\n    gsSP2Triangles( 2,  7,  0, 0x0,  6,  0,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 12,  8, 0x0, 11, 12, 10, 0x0),\n    gsSP2Triangles( 9, 13, 14, 0x0, 15, 13,  9, 0x0),\n    gsSPVertex(peach_seg5_vertex_05005078, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 5,  0,  2, 0x0,  0,  5,  6, 0x0),\n    gsSP2Triangles( 6,  7,  0, 0x0,  8,  3,  7, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 10,  8,  7, 0x0),\n    gsSP2Triangles( 8, 11,  3, 0x0,  3, 11,  4, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(peach_seg5_vertex_05005168, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 4,  1,  0, 0x0,  5,  2,  3, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  2,  5,  7, 0x0),\n    gsSP2Triangles( 6,  5,  8, 0x0,  7,  9,  2, 0x0),\n    gsSP2Triangles(10,  2,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(peach_seg5_vertex_05005268, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  1,  6,  7, 0x0),\n    gsSP2Triangles( 3,  1,  8, 0x0,  8,  1,  5, 0x0),\n    gsSP2Triangles( 6,  1,  0, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(10, 12,  3, 0x0, 13, 10,  3, 0x0),\n    gsSP1Triangle(14, 15, 13, 0x0),\n    gsSPVertex(peach_seg5_vertex_05005368, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  1,  0, 0x0,  5,  6,  4, 0x0),\n    gsSP2Triangles( 7,  2,  3, 0x0,  5,  4,  8, 0x0),\n    gsSP2Triangles( 9,  4,  0, 0x0,  8,  4,  9, 0x0),\n    gsSP2Triangles(10, 11,  5, 0x0, 12, 13,  0, 0x0),\n    gsSP2Triangles(14, 15, 11, 0x0, 14, 11, 10, 0x0),\n    gsSPVertex(peach_seg5_vertex_05005468, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 4,  0,  2, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  9,  8, 10, 0x0),\n    gsSP2Triangles(11,  9, 10, 0x0, 10, 12, 11, 0x0),\n    gsSP2Triangles(13,  1,  0, 0x0, 14,  4,  3, 0x0),\n    gsSP1Triangle( 3, 15, 14, 0x0),\n    gsSPVertex(peach_seg5_vertex_05005568, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 5,  1,  6, 0x0,  0,  6,  1, 0x0),\n    gsSP2Triangles( 1,  5,  3, 0x0,  2,  7,  0, 0x0),\n    gsSP2Triangles( 3,  8,  9, 0x0,  5,  8,  3, 0x0),\n    gsSP2Triangles( 3,  9, 10, 0x0,  3, 10,  4, 0x0),\n    gsSP2Triangles(11,  4, 10, 0x0, 12,  0,  7, 0x0),\n    gsSP1Triangle( 5, 13,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005C48 - 0x05005CB0\nconst Gfx peach_seg5_dl_05005C48[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 4, G_TX_NOLOD, G_TX_CLAMP, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (16 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(peach_seg5_dl_05005648),\n    gsSPDisplayList(peach_seg5_dl_05005750),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005CB0 - 0x05005CE0\nconst Gfx peach_seg5_dl_05005CB0[] = {\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(peach_seg5_dl_050058E0),\n    gsDPPipeSync(),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005CE0 - 0x05005D38\nconst Gfx peach_seg5_dl_05005CE0[] = {\n    gsSPDisplayList(peach_seg5_dl_05005C48),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, peach_seg5_texture_05000A28),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(peach_seg5_dl_05005780),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, peach_seg5_texture_05002E28),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(peach_seg5_dl_050058B8),\n    gsSPDisplayList(peach_seg5_dl_05005CB0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005D38 - 0x05005D90\nconst Gfx peach_seg5_dl_05005D38[] = {\n    gsSPDisplayList(peach_seg5_dl_05005C48),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, peach_seg5_texture_05001228),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(peach_seg5_dl_05005780),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, peach_seg5_texture_05002E28),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(peach_seg5_dl_050058B8),\n    gsSPDisplayList(peach_seg5_dl_05005CB0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005D90 - 0x05005DE8\nconst Gfx peach_seg5_dl_05005D90[] = {\n    gsSPDisplayList(peach_seg5_dl_05005C48),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, peach_seg5_texture_05001A28),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(peach_seg5_dl_05005780),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, peach_seg5_texture_05002E28),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(peach_seg5_dl_050058B8),\n    gsSPDisplayList(peach_seg5_dl_05005CB0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005DE8 - 0x05005E40\nconst Gfx peach_seg5_dl_05005DE8[] = {\n    gsSPDisplayList(peach_seg5_dl_05005C48),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, peach_seg5_texture_05002228),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(peach_seg5_dl_05005780),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, peach_seg5_texture_05002E28),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(peach_seg5_dl_050058B8),\n    gsSPDisplayList(peach_seg5_dl_05005CB0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005E40 - 0x05005E98\nconst Gfx peach_seg5_dl_05005E40[] = {\n    gsSPDisplayList(peach_seg5_dl_05005C48),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, peach_seg5_texture_05000A28),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(peach_seg5_dl_05005780),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, peach_seg5_texture_05003628),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(peach_seg5_dl_050058B8),\n    gsSPDisplayList(peach_seg5_dl_05005CB0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005E98 - 0x05005EF0\nconst Gfx peach_seg5_dl_05005E98[] = {\n    gsSPDisplayList(peach_seg5_dl_05005C48),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, peach_seg5_texture_05001228),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(peach_seg5_dl_05005780),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, peach_seg5_texture_05003628),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(peach_seg5_dl_050058B8),\n    gsSPDisplayList(peach_seg5_dl_05005CB0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005EF0 - 0x05005F48\nconst Gfx peach_seg5_dl_05005EF0[] = {\n    gsSPDisplayList(peach_seg5_dl_05005C48),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, peach_seg5_texture_05001A28),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(peach_seg5_dl_05005780),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, peach_seg5_texture_05003628),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(peach_seg5_dl_050058B8),\n    gsSPDisplayList(peach_seg5_dl_05005CB0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005F48 - 0x05005FA0\nconst Gfx peach_seg5_dl_05005F48[] = {\n    gsSPDisplayList(peach_seg5_dl_05005C48),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, peach_seg5_texture_05002228),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(peach_seg5_dl_05005780),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, peach_seg5_texture_05003628),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(peach_seg5_dl_050058B8),\n    gsSPDisplayList(peach_seg5_dl_05005CB0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05005FA0\nstatic const Lights1 peach_seg5_lights_05005FA0 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05005FB8\nstatic const Vtx peach_seg5_vertex_05005FB8[] = {\n    {{{    96,     28,      1}, 0, {   246,   2076}, {0x0a, 0x7b, 0x1c, 0xff}}},\n    {{{    96,      9,     27}, 0, {    58,   2076}, {0x0b, 0x08, 0x7e, 0xff}}},\n    {{{   152,      8,     22}, 0, {    44,   1520}, {0x0b, 0x42, 0x6b, 0xff}}},\n    {{{   152,    -16,     14}, 0, {  -202,   1518}, {0x0b, 0xae, 0x5f, 0xff}}},\n    {{{    96,    -20,     17}, 0, {  -244,   2074}, {0x0b, 0x8c, 0x31, 0xff}}},\n    {{{   152,    -16,    -11}, 0, {  -202,   1518}, {0x0c, 0x8b, 0xd2, 0xff}}},\n    {{{   152,     23,      1}, 0, {   196,   1520}, {0x0a, 0x7a, 0xe1, 0xff}}},\n    {{{    96,    -21,    -14}, 0, {  -246,   2074}, {0x0c, 0xad, 0xa1, 0xff}}},\n    {{{   152,      8,    -19}, 0, {    42,   1520}, {0x0b, 0x08, 0x82, 0xff}}},\n    {{{    96,      9,    -24}, 0, {    58,   2076}, {0x0b, 0x40, 0x94, 0xff}}},\n};\n\n// 0x05006058 - 0x050060E0\nconst Gfx peach_seg5_dl_05006058[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, peach_seg5_texture_05000A28),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&peach_seg5_lights_05005FA0.l, 1),\n    gsSPLight(&peach_seg5_lights_05005FA0.a, 2),\n    gsSPVertex(peach_seg5_vertex_05005FB8, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  4,  5,  3, 0x0),\n    gsSP2Triangles( 0,  2,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 7,  8,  5, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles( 9,  0,  6, 0x0,  9,  6,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050060E0 - 0x05006138\nconst Gfx peach_seg5_dl_050060E0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(peach_seg5_dl_05006058),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsSPEndDisplayList(),\n};\n\n// 0x05006138\nstatic const Lights1 peach_seg5_lights_05006138 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05006150\nstatic const Lights1 peach_seg5_lights_05006150 = gdSPDefLights1(\n    0x6c, 0x54, 0x5f,\n    0xd9, 0xa9, 0xbe, 0x28, 0x28, 0x28\n);\n\n// 0x05006168\nstatic const Vtx peach_seg5_vertex_05006168[] = {\n    {{{    54,     70,    -23}, 0, {  -179,    143}, {0x23, 0x6c, 0xca, 0xff}}},\n    {{{    52,     85,      0}, 0, {   224,    223}, {0x17, 0x7c, 0x00, 0xff}}},\n    {{{    70,     67,     -7}, 0, {    96,   -135}, {0x55, 0x5b, 0xeb, 0xff}}},\n    {{{    36,     73,     19}, 0, {   542,    450}, {0xf5, 0x78, 0x26, 0xff}}},\n    {{{    28,     75,      0}, 0, {   224,    584}, {0xd9, 0x78, 0x00, 0xff}}},\n    {{{    36,     73,    -18}, 0, {   -94,    450}, {0xf5, 0x78, 0xd9, 0xff}}},\n    {{{    54,     70,     24}, 0, {   627,    143}, {0x23, 0x6d, 0x36, 0xff}}},\n    {{{    70,     67,      8}, 0, {   351,   -135}, {0x51, 0x5d, 0x19, 0xff}}},\n};\n\n// 0x050061E8\nstatic const Vtx peach_seg5_vertex_050061E8[] = {\n    {{{   116,     24,     43}, 0, {   692,   -612}, {0x36, 0x3d, 0x60, 0xff}}},\n    {{{   119,    -30,     36}, 0, {   658,   -626}, {0x30, 0xac, 0x51, 0xff}}},\n    {{{   119,    -30,    -35}, 0, {   300,   -626}, {0x40, 0x9f, 0xce, 0xff}}},\n    {{{   116,     24,    -42}, 0, {   266,   -612}, {0x2f, 0x2b, 0x93, 0xff}}},\n    {{{   111,     45,      0}, 0, {   478,   -586}, {0xef, 0x7b, 0xea, 0xff}}},\n};\n\n// 0x05006238\nstatic const Vtx peach_seg5_vertex_05006238[] = {\n    {{{    85,     34,    -65}, 0, {   150,   -458}, {0x4b, 0x3c, 0xae, 0xff}}},\n    {{{    98,     18,    -34}, 0, {   302,   -522}, {0x2e, 0x52, 0xac, 0xff}}},\n    {{{    98,    -23,    -34}, 0, {   302,   -520}, {0x59, 0xcd, 0xb7, 0xff}}},\n    {{{    84,     50,    -21}, 0, {   368,   -452}, {0x66, 0x4a, 0xf2, 0xff}}},\n    {{{    23,    -22,    -70}, 0, {   126,   -146}, {0xdf, 0xd1, 0x90, 0xff}}},\n    {{{    24,     37,    -70}, 0, {   126,   -150}, {0xc5, 0x23, 0x96, 0xff}}},\n    {{{    54,     70,    -23}, 0, {   358,   -300}, {0x23, 0x6c, 0xca, 0xff}}},\n    {{{    70,     67,     -7}, 0, {   440,   -382}, {0x55, 0x5b, 0xeb, 0xff}}},\n    {{{    20,     69,    -39}, 0, {   278,   -132}, {0xdd, 0x70, 0xd2, 0xff}}},\n    {{{    85,    -21,    -65}, 0, {   150,   -456}, {0x3a, 0xc5, 0xa1, 0xff}}},\n    {{{    36,     73,    -18}, 0, {   384,   -210}, {0xf5, 0x78, 0xd9, 0xff}}},\n    {{{    84,     50,     22}, 0, {   590,   -452}, {0x65, 0x4b, 0x0b, 0xff}}},\n    {{{    70,     67,      8}, 0, {   518,   -382}, {0x51, 0x5d, 0x19, 0xff}}},\n    {{{    -7,     37,    -34}, 0, {   302,      8}, {0x8c, 0x2a, 0xe4, 0xff}}},\n};\n\n// 0x05006318\nstatic const Vtx peach_seg5_vertex_05006318[] = {\n    {{{    54,     70,     24}, 0, {   600,   -300}, {0x23, 0x6d, 0x36, 0xff}}},\n    {{{    20,     69,     40}, 0, {   680,   -132}, {0xd3, 0x6f, 0x28, 0xff}}},\n    {{{    85,     34,     66}, 0, {   808,   -458}, {0x4b, 0x3c, 0x52, 0xff}}},\n    {{{    24,     37,     71}, 0, {   832,   -150}, {0xd2, 0x2c, 0x6d, 0xff}}},\n    {{{    23,    -22,     71}, 0, {   832,   -146}, {0xd1, 0xd9, 0x6f, 0xff}}},\n    {{{    98,    -23,     35}, 0, {   656,   -520}, {0x42, 0xb8, 0x50, 0xff}}},\n    {{{    98,     18,     35}, 0, {   656,   -522}, {0x48, 0x42, 0x50, 0xff}}},\n    {{{    84,     50,     22}, 0, {   590,   -452}, {0x65, 0x4b, 0x0b, 0xff}}},\n    {{{    70,     67,      8}, 0, {   518,   -382}, {0x51, 0x5d, 0x19, 0xff}}},\n    {{{    85,    -21,     66}, 0, {   808,   -454}, {0x3a, 0xc5, 0x5f, 0xff}}},\n    {{{    95,     36,      0}, 0, {   478,   -506}, {0x25, 0x78, 0x0d, 0xff}}},\n    {{{    84,     50,    -21}, 0, {   368,   -452}, {0x66, 0x4a, 0xf2, 0xff}}},\n    {{{    20,     69,    -39}, 0, {   278,   -132}, {0xdd, 0x70, 0xd2, 0xff}}},\n    {{{    -7,     37,    -34}, 0, {   302,      8}, {0x8c, 0x2a, 0xe4, 0xff}}},\n    {{{    28,     75,      0}, 0, {   478,   -170}, {0xd9, 0x78, 0x00, 0xff}}},\n};\n\n// 0x05006408\nstatic const Vtx peach_seg5_vertex_05006408[] = {\n    {{{   111,     45,      0}, 0, {   478,   -586}, {0xef, 0x7b, 0xea, 0xff}}},\n    {{{    98,     18,    -34}, 0, {   302,   -522}, {0x2e, 0x52, 0xac, 0xff}}},\n    {{{    95,     36,      0}, 0, {   478,   -506}, {0x25, 0x78, 0x0d, 0xff}}},\n    {{{    84,     50,    -21}, 0, {   368,   -452}, {0x66, 0x4a, 0xf2, 0xff}}},\n    {{{   116,     24,     43}, 0, {   692,   -612}, {0x36, 0x3d, 0x60, 0xff}}},\n    {{{    98,     18,     35}, 0, {   656,   -522}, {0x48, 0x42, 0x50, 0xff}}},\n    {{{    98,    -23,     35}, 0, {   656,   -520}, {0x42, 0xb8, 0x50, 0xff}}},\n    {{{   119,    -30,     36}, 0, {   658,   -626}, {0x30, 0xac, 0x51, 0xff}}},\n    {{{   116,     24,    -42}, 0, {   266,   -612}, {0x2f, 0x2b, 0x93, 0xff}}},\n    {{{    24,     37,     71}, 0, {   832,   -150}, {0xd2, 0x2c, 0x6d, 0xff}}},\n    {{{    20,     69,     40}, 0, {   680,   -132}, {0xd3, 0x6f, 0x28, 0xff}}},\n    {{{    -7,     37,     35}, 0, {   656,      8}, {0x92, 0x20, 0x34, 0xff}}},\n    {{{    36,     73,     19}, 0, {   574,   -210}, {0xf5, 0x78, 0x26, 0xff}}},\n    {{{    28,     75,      0}, 0, {   478,   -170}, {0xd9, 0x78, 0x00, 0xff}}},\n};\n\n// 0x050064E8\nstatic const Vtx peach_seg5_vertex_050064E8[] = {\n    {{{    23,    -45,    -34}, 0, {   302,   -146}, {0xd9, 0x8d, 0xdf, 0xff}}},\n    {{{    86,    -53,    -34}, 0, {   302,   -460}, {0x40, 0x9d, 0xd3, 0xff}}},\n    {{{    86,    -53,     35}, 0, {   656,   -460}, {0x41, 0x98, 0x1e, 0xff}}},\n    {{{    54,     70,     24}, 0, {   600,   -300}, {0x23, 0x6d, 0x36, 0xff}}},\n    {{{    36,     73,     19}, 0, {   574,   -210}, {0xf5, 0x78, 0x26, 0xff}}},\n    {{{    20,     69,     40}, 0, {   680,   -132}, {0xd3, 0x6f, 0x28, 0xff}}},\n    {{{    28,     75,      0}, 0, {   478,   -170}, {0xd9, 0x78, 0x00, 0xff}}},\n    {{{    36,     73,    -18}, 0, {   384,   -210}, {0xf5, 0x78, 0xd9, 0xff}}},\n    {{{    20,     69,    -39}, 0, {   278,   -132}, {0xdd, 0x70, 0xd2, 0xff}}},\n    {{{    85,    -21,    -65}, 0, {   150,   -456}, {0x3a, 0xc5, 0xa1, 0xff}}},\n    {{{    -8,    -22,    -34}, 0, {   302,     10}, {0x95, 0xd5, 0xcd, 0xff}}},\n    {{{    -8,    -22,     35}, 0, {   656,     10}, {0x92, 0xc8, 0x1b, 0xff}}},\n    {{{    23,    -22,    -70}, 0, {   126,   -146}, {0xdf, 0xd1, 0x90, 0xff}}},\n    {{{    23,    -45,     35}, 0, {   656,   -146}, {0xdd, 0x90, 0x2f, 0xff}}},\n    {{{    98,    -23,    -34}, 0, {   302,   -520}, {0x59, 0xcd, 0xb7, 0xff}}},\n    {{{    85,    -21,     66}, 0, {   808,   -454}, {0x3a, 0xc5, 0x5f, 0xff}}},\n};\n\n// 0x050065E8\nstatic const Vtx peach_seg5_vertex_050065E8[] = {\n    {{{    98,    -23,     35}, 0, {   656,   -520}, {0x42, 0xb8, 0x50, 0xff}}},\n    {{{    86,    -53,     35}, 0, {   656,   -460}, {0x41, 0x98, 0x1e, 0xff}}},\n    {{{    98,    -23,    -34}, 0, {   302,   -520}, {0x59, 0xcd, 0xb7, 0xff}}},\n    {{{    85,    -21,     66}, 0, {   808,   -454}, {0x3a, 0xc5, 0x5f, 0xff}}},\n    {{{    -8,    -22,    -34}, 0, {   302,     10}, {0x95, 0xd5, 0xcd, 0xff}}},\n    {{{    -8,    -22,     35}, 0, {   656,     10}, {0x92, 0xc8, 0x1b, 0xff}}},\n    {{{    -7,     37,    -34}, 0, {   302,      8}, {0x8c, 0x2a, 0xe4, 0xff}}},\n    {{{    23,    -45,     35}, 0, {   656,   -146}, {0xdd, 0x90, 0x2f, 0xff}}},\n    {{{    23,    -22,     71}, 0, {   832,   -146}, {0xd1, 0xd9, 0x6f, 0xff}}},\n    {{{    -7,     37,     35}, 0, {   656,      8}, {0x92, 0x20, 0x34, 0xff}}},\n    {{{    24,     37,     71}, 0, {   832,   -150}, {0xd2, 0x2c, 0x6d, 0xff}}},\n    {{{    20,     69,     40}, 0, {   680,   -132}, {0xd3, 0x6f, 0x28, 0xff}}},\n    {{{    24,     37,    -70}, 0, {   126,   -150}, {0xc5, 0x23, 0x96, 0xff}}},\n    {{{    23,    -22,    -70}, 0, {   126,   -146}, {0xdf, 0xd1, 0x90, 0xff}}},\n    {{{   119,    -30,    -35}, 0, {   300,   -626}, {0x40, 0x9f, 0xce, 0xff}}},\n    {{{   119,    -30,     36}, 0, {   658,   -626}, {0x30, 0xac, 0x51, 0xff}}},\n};\n\n// 0x050066E8\nstatic const Vtx peach_seg5_vertex_050066E8[] = {\n    {{{   116,     24,    -42}, 0, {   266,   -612}, {0x2f, 0x2b, 0x93, 0xff}}},\n    {{{   119,    -30,    -35}, 0, {   300,   -626}, {0x40, 0x9f, 0xce, 0xff}}},\n    {{{    98,    -23,    -34}, 0, {   302,   -520}, {0x59, 0xcd, 0xb7, 0xff}}},\n    {{{    98,     18,    -34}, 0, {   302,   -522}, {0x2e, 0x52, 0xac, 0xff}}},\n};\n\n// 0x05006728 - 0x05006798\nconst Gfx peach_seg5_dl_05006728[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, peach_seg5_texture_05002C28),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 16 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&peach_seg5_lights_05006138.l, 1),\n    gsSPLight(&peach_seg5_lights_05006138.a, 2),\n    gsSPVertex(peach_seg5_vertex_05006168, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  4, 0x0),\n    gsSP2Triangles( 4,  1,  5, 0x0,  6,  1,  3, 0x0),\n    gsSP2Triangles( 7,  1,  6, 0x0,  2,  1,  7, 0x0),\n    gsSP1Triangle( 5,  1,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05006798 - 0x05006A18\nconst Gfx peach_seg5_dl_05006798[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, peach_seg5_texture_05004028),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&peach_seg5_lights_05006150.l, 1),\n    gsSPLight(&peach_seg5_lights_05006150.a, 2),\n    gsSPVertex(peach_seg5_vertex_050061E8, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP1Triangle( 3,  0,  2, 0x0),\n    gsSPLight(&peach_seg5_lights_05006138.l, 1),\n    gsSPLight(&peach_seg5_lights_05006138.a, 2),\n    gsSPVertex(peach_seg5_vertex_05006238, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  0, 0x0,  0,  6,  7, 0x0),\n    gsSP2Triangles( 7,  3,  0, 0x0,  0,  8,  6, 0x0),\n    gsSP2Triangles( 0,  5,  8, 0x0,  0,  9,  4, 0x0),\n    gsSP2Triangles( 2,  9,  0, 0x0,  8, 10,  6, 0x0),\n    gsSP2Triangles( 3,  7, 11, 0x0,  7, 12, 11, 0x0),\n    gsSP1Triangle( 8,  5, 13, 0x0),\n    gsSPVertex(peach_seg5_vertex_05006318, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 5,  6,  2, 0x0,  6,  7,  2, 0x0),\n    gsSP2Triangles( 8,  0,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 2,  7,  8, 0x0,  4,  9,  2, 0x0),\n    gsSP2Triangles( 2,  9,  5, 0x0, 10, 11,  7, 0x0),\n    gsSP2Triangles( 7,  6, 10, 0x0,  1, 12, 13, 0x0),\n    gsSP1Triangle(12,  1, 14, 0x0),\n    gsSPVertex(peach_seg5_vertex_05006408, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  4,  0, 0x0,  2,  5,  4, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 0,  8,  1, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(10, 12, 13, 0x0),\n    gsSPVertex(peach_seg5_vertex_050064E8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  1,  0, 0x0),\n    gsSP2Triangles(10,  0, 11, 0x0, 12,  0, 10, 0x0),\n    gsSP2Triangles(13,  0,  2, 0x0,  0, 12,  9, 0x0),\n    gsSP2Triangles( 0, 13, 11, 0x0, 14,  1,  9, 0x0),\n    gsSP2Triangles( 2,  1, 14, 0x0, 13,  2, 15, 0x0),\n    gsSPVertex(peach_seg5_vertex_050065E8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  5, 0x0),\n    gsSP2Triangles( 5,  9,  6, 0x0,  9,  5,  8, 0x0),\n    gsSP2Triangles(10,  9,  8, 0x0,  6,  9, 11, 0x0),\n    gsSP2Triangles( 3,  8,  7, 0x0,  4,  6, 12, 0x0),\n    gsSP2Triangles(13,  4, 12, 0x0, 14, 15,  0, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(peach_seg5_vertex_050066E8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05006A18 - 0x05006A90\nconst Gfx peach_seg5_dl_05006A18[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 4, G_TX_NOLOD, G_TX_CLAMP, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (16 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(peach_seg5_dl_05006728),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(peach_seg5_dl_05006798),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsSPEndDisplayList(),\n};\n\n// 0x05006A90\nstatic const Lights1 peach_seg5_lights_05006A90 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05006AA8\nstatic const Vtx peach_seg5_vertex_05006AA8[] = {\n    {{{    93,     12,     39}, 0, {   676,   1080}, {0x2c, 0x13, 0x75, 0xff}}},\n    {{{    92,     36,     28}, 0, {   618,   1092}, {0x46, 0x58, 0x38, 0xff}}},\n    {{{    54,     35,     28}, 0, {   618,   1468}, {0x3e, 0x53, 0x48, 0xff}}},\n    {{{    33,     62,    -56}, 0, {   196,  -1380}, {0x5a, 0x4a, 0xd0, 0xff}}},\n    {{{    32,     71,      0}, 0, {   478,  -1376}, {0x5a, 0x59, 0x00, 0xff}}},\n    {{{    54,     35,    -27}, 0, {   340,  -1596}, {0x3c, 0x5f, 0xc7, 0xff}}},\n    {{{    35,     12,    -80}, 0, {    76,  -1404}, {0x5f, 0x0a, 0xae, 0xff}}},\n    {{{    55,     11,    -39}, 0, {   280,  -1606}, {0x46, 0x13, 0x99, 0xff}}},\n    {{{   -18,     76,    -80}, 0, {    72,   -868}, {0x21, 0x52, 0xa6, 0xff}}},\n    {{{   -19,     99,      0}, 0, {   480,   -856}, {0x1c, 0x7b, 0x00, 0xff}}},\n    {{{    54,     44,      0}, 0, {   480,  -1590}, {0x28, 0x77, 0x09, 0xff}}},\n    {{{    57,    -12,    -27}, 0, {   338,  -1618}, {0x48, 0xc0, 0xaf, 0xff}}},\n    {{{    33,     62,     57}, 0, {   766,  -1380}, {0x5a, 0x4a, 0x30, 0xff}}},\n    {{{    54,     35,     28}, 0, {   618,  -1596}, {0x3e, 0x53, 0x48, 0xff}}},\n    {{{    54,     44,      0}, 0, {   480,   1474}, {0x28, 0x77, 0x09, 0xff}}},\n    {{{    94,    -10,     28}, 0, {   618,   1070}, {0x5f, 0xcc, 0x40, 0xff}}},\n};\n\n// 0x05006BA8\nstatic const Vtx peach_seg5_vertex_05006BA8[] = {\n    {{{    91,     46,      0}, 0, {   480,   1096}, {0x63, 0x4e, 0xf8, 0xff}}},\n    {{{    92,     36,     28}, 0, {   618,   1092}, {0x46, 0x58, 0x38, 0xff}}},\n    {{{    94,    -10,     28}, 0, {   618,   1070}, {0x5f, 0xcc, 0x40, 0xff}}},\n    {{{    55,     10,     40}, 0, {   678,   1458}, {0x47, 0xfc, 0x68, 0xff}}},\n    {{{    93,     12,     39}, 0, {   676,   1080}, {0x2c, 0x13, 0x75, 0xff}}},\n    {{{    54,     35,     28}, 0, {   618,   1468}, {0x3e, 0x53, 0x48, 0xff}}},\n    {{{    57,    -12,     28}, 0, {   620,   1446}, {0x49, 0xb1, 0x42, 0xff}}},\n    {{{    95,    -20,      0}, 0, {   480,   1064}, {0x4e, 0x9e, 0x0b, 0xff}}},\n    {{{    54,     44,      0}, 0, {   480,   1474}, {0x28, 0x77, 0x09, 0xff}}},\n    {{{    54,     35,    -27}, 0, {   340,   1468}, {0x3c, 0x5f, 0xc7, 0xff}}},\n    {{{    92,     36,    -27}, 0, {   340,   1092}, {0x48, 0x45, 0xb2, 0xff}}},\n    {{{    94,    -10,    -27}, 0, {   340,   1070}, {0x60, 0xbe, 0xd0, 0xff}}},\n    {{{    57,    -22,      0}, 0, {   478,   1440}, {0x54, 0xa2, 0xf8, 0xff}}},\n    {{{    57,    -12,    -27}, 0, {   338,   1446}, {0x48, 0xc0, 0xaf, 0xff}}},\n    {{{    93,     12,    -38}, 0, {   284,   1080}, {0x2e, 0xed, 0x8c, 0xff}}},\n    {{{    55,     11,    -39}, 0, {   280,   1458}, {0x46, 0x13, 0x99, 0xff}}},\n};\n\n// 0x05006CA8\nstatic const Vtx peach_seg5_vertex_05006CA8[] = {\n    {{{    35,     12,    -80}, 0, {    76,  -1404}, {0x5f, 0x0a, 0xae, 0xff}}},\n    {{{   -14,      8,   -114}, 0, {   -94,   -900}, {0x2c, 0xfd, 0x89, 0xff}}},\n    {{{   -18,     76,    -80}, 0, {    72,   -868}, {0x21, 0x52, 0xa6, 0xff}}},\n    {{{    38,    -47,    -56}, 0, {   194,  -1434}, {0x60, 0xc5, 0xc7, 0xff}}},\n    {{{    57,    -12,    -27}, 0, {   338,  -1618}, {0x48, 0xc0, 0xaf, 0xff}}},\n    {{{    57,    -22,      0}, 0, {   478,  -1624}, {0x54, 0xa2, 0xf8, 0xff}}},\n    {{{    55,     11,    -39}, 0, {   280,   1458}, {0x46, 0x13, 0x99, 0xff}}},\n    {{{    93,     12,    -38}, 0, {   284,   1080}, {0x2e, 0xed, 0x8c, 0xff}}},\n    {{{    57,    -12,    -27}, 0, {   338,   1446}, {0x48, 0xc0, 0xaf, 0xff}}},\n    {{{    55,     10,     40}, 0, {   678,  -1606}, {0x47, 0xfc, 0x68, 0xff}}},\n    {{{    54,     35,     28}, 0, {   618,  -1596}, {0x3e, 0x53, 0x48, 0xff}}},\n    {{{    33,     62,     57}, 0, {   766,  -1380}, {0x5a, 0x4a, 0x30, 0xff}}},\n    {{{    39,    -70,      0}, 0, {   478,  -1444}, {0x64, 0xb2, 0x00, 0xff}}},\n    {{{   -11,    -72,    -80}, 0, {    72,   -938}, {0x21, 0xb1, 0xa3, 0xff}}},\n    {{{    -9,   -102,      0}, 0, {   480,   -954}, {0x29, 0x89, 0x01, 0xff}}},\n    {{{    38,    -47,     57}, 0, {   764,  -1434}, {0x62, 0xc2, 0x32, 0xff}}},\n};\n\n// 0x05006DA8\nstatic const Vtx peach_seg5_vertex_05006DA8[] = {\n    {{{    57,    -22,      0}, 0, {   478,  -1624}, {0x54, 0xa2, 0xf8, 0xff}}},\n    {{{    57,    -12,     28}, 0, {   620,  -1618}, {0x49, 0xb1, 0x42, 0xff}}},\n    {{{    38,    -47,     57}, 0, {   764,  -1434}, {0x62, 0xc2, 0x32, 0xff}}},\n    {{{    35,     12,     81}, 0, {   882,  -1404}, {0x5c, 0x02, 0x56, 0xff}}},\n    {{{    55,     10,     40}, 0, {   678,  -1606}, {0x47, 0xfc, 0x68, 0xff}}},\n    {{{   -11,    -68,     81}, 0, {   886,   -938}, {0x27, 0xb8, 0x60, 0xff}}},\n    {{{    -9,   -102,      0}, 0, {   480,   -954}, {0x29, 0x89, 0x01, 0xff}}},\n    {{{    39,    -70,      0}, 0, {   478,  -1444}, {0x64, 0xb2, 0x00, 0xff}}},\n    {{{    33,     62,     57}, 0, {   766,  -1380}, {0x5a, 0x4a, 0x30, 0xff}}},\n    {{{   -43,      6,    114}, 0, {  1050,   -610}, {0x00, 0x01, 0x7e, 0xff}}},\n    {{{   -40,    -71,     81}, 0, {   882,   -648}, {0x09, 0x9b, 0x4c, 0xff}}},\n    {{{   -14,      8,    115}, 0, {  1054,   -900}, {0x24, 0x04, 0x79, 0xff}}},\n    {{{   -18,     76,     81}, 0, {   886,   -868}, {0x21, 0x52, 0x5a, 0xff}}},\n    {{{   -19,     99,      0}, 0, {   480,   -856}, {0x1c, 0x7b, 0x00, 0xff}}},\n    {{{   -18,     76,    -80}, 0, {    72,   -868}, {0x21, 0x52, 0xa6, 0xff}}},\n    {{{   -47,     79,    -80}, 0, {    76,   -574}, {0x01, 0x6d, 0xc0, 0xff}}},\n};\n\n// 0x05006EA8\nstatic const Vtx peach_seg5_vertex_05006EA8[] = {\n    {{{   -19,     99,      0}, 0, {   480,   -856}, {0x1c, 0x7b, 0x00, 0xff}}},\n    {{{   -47,     79,     81}, 0, {   882,   -574}, {0x01, 0x6d, 0x40, 0xff}}},\n    {{{   -18,     76,     81}, 0, {   886,   -868}, {0x21, 0x52, 0x5a, 0xff}}},\n    {{{   -47,     79,    -80}, 0, {    76,   -574}, {0x01, 0x6d, 0xc0, 0xff}}},\n    {{{   -48,     96,      0}, 0, {   480,   -566}, {0xf3, 0x7e, 0x00, 0xff}}},\n    {{{   -43,      6,    114}, 0, {  1050,   -610}, {0x00, 0x01, 0x7e, 0xff}}},\n    {{{   -14,      8,    115}, 0, {  1054,   -900}, {0x24, 0x04, 0x79, 0xff}}},\n    {{{   -11,    -68,     81}, 0, {   886,   -938}, {0x27, 0xb8, 0x60, 0xff}}},\n    {{{   -40,    -71,     81}, 0, {   882,   -648}, {0x09, 0x9b, 0x4c, 0xff}}},\n    {{{    -9,   -102,      0}, 0, {   480,   -954}, {0x29, 0x89, 0x01, 0xff}}},\n    {{{   -11,    -72,    -80}, 0, {    72,   -938}, {0x21, 0xb1, 0xa3, 0xff}}},\n    {{{   -40,    -74,    -80}, 0, {    76,   -650}, {0x07, 0x9a, 0xb6, 0xff}}},\n    {{{   -43,      6,   -113}, 0, {   -90,   -610}, {0x00, 0x02, 0x82, 0xff}}},\n    {{{   -38,   -104,      0}, 0, {   480,   -664}, {0x08, 0x82, 0x01, 0xff}}},\n    {{{   -14,      8,   -114}, 0, {   -94,   -900}, {0x2c, 0xfd, 0x89, 0xff}}},\n    {{{   -18,     76,    -80}, 0, {    72,   -868}, {0x21, 0x52, 0xa6, 0xff}}},\n};\n\n// 0x05006FA8 - 0x05007230\nconst Gfx peach_seg5_dl_05006FA8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, peach_seg5_texture_05004028),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&peach_seg5_lights_05006A90.l, 1),\n    gsSPLight(&peach_seg5_lights_05006A90.a, 2),\n    gsSPVertex(peach_seg5_vertex_05006AA8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  7, 0x0,  3,  8,  9, 0x0),\n    gsSP2Triangles( 9,  4,  3, 0x0,  3,  5,  7, 0x0),\n    gsSP2Triangles( 8,  3,  6, 0x0,  4, 10,  5, 0x0),\n    gsSP2Triangles( 6,  7, 11, 0x0,  4, 12, 13, 0x0),\n    gsSP2Triangles(13, 10,  4, 0x0, 12,  4,  9, 0x0),\n    gsSP2Triangles( 2,  1, 14, 0x0,  1,  0, 15, 0x0),\n    gsSPVertex(peach_seg5_vertex_05006BA8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 2,  4,  3, 0x0,  6,  2,  3, 0x0),\n    gsSP2Triangles( 0,  2,  7, 0x0,  7,  2,  6, 0x0),\n    gsSP2Triangles( 8,  0,  9, 0x0, 10,  0, 11, 0x0),\n    gsSP2Triangles( 0,  7, 11, 0x0,  1,  0,  8, 0x0),\n    gsSP2Triangles( 0, 10,  9, 0x0, 12,  7,  6, 0x0),\n    gsSP2Triangles(11,  7, 12, 0x0, 13, 11, 12, 0x0),\n    gsSP2Triangles(11, 14, 10, 0x0, 14, 11, 13, 0x0),\n    gsSP2Triangles( 9, 10, 15, 0x0, 10, 14, 15, 0x0),\n    gsSPVertex(peach_seg5_vertex_05006CA8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 1,  0,  3, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12,  3,  5, 0x0,  3, 13,  1, 0x0),\n    gsSP2Triangles(14, 13,  3, 0x0,  3, 12, 14, 0x0),\n    gsSP1Triangle(15, 12,  5, 0x0),\n    gsSPVertex(peach_seg5_vertex_05006DA8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  2,  5,  6, 0x0),\n    gsSP2Triangles( 6,  7,  2, 0x0,  5,  2,  3, 0x0),\n    gsSP2Triangles( 8,  3,  4, 0x0,  9, 10,  5, 0x0),\n    gsSP2Triangles( 3, 11,  5, 0x0, 12, 11,  3, 0x0),\n    gsSP2Triangles( 3,  8, 12, 0x0, 13, 12,  8, 0x0),\n    gsSP1Triangle(14, 15, 13, 0x0),\n    gsSPVertex(peach_seg5_vertex_05006EA8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  2,  5,  6, 0x0),\n    gsSP2Triangles( 2,  1,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 6,  5,  7, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles( 9, 11, 10, 0x0,  9, 13, 11, 0x0),\n    gsSP2Triangles( 8, 13,  9, 0x0, 14, 12, 15, 0x0),\n    gsSP2Triangles(10, 12, 14, 0x0, 12,  3, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05007230 - 0x05007288\nconst Gfx peach_seg5_dl_05007230[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(peach_seg5_dl_05006FA8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsSPEndDisplayList(),\n};\n\n#ifndef VERSION_JP\n// 0x05007288 - 0x050072E8\nconst Gfx peach_seg5_us_dl_05007288[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPSetRenderMode(G_RM_CUSTOM_AA_ZB_XLU_SURF, G_RM_NOOP2),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(peach_seg5_dl_05006FA8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsSPEndDisplayList(),\n};\n#endif\n\n// 0x05007288\nstatic const Lights1 peach_seg5_lights_05007288 = gdSPDefLights1(\n    0x7f, 0x5f, 0x0c,\n    0xff, 0xbf, 0x18, 0x28, 0x28, 0x28\n);\n\n// 0x050072A0\nstatic const Vtx peach_seg5_vertex_050072A0[] = {\n    {{{    89,    -13,     96}, 0, {     0,      0}, {0x12, 0x64, 0x4b, 0xff}}},\n    {{{    77,     -2,    169}, 0, {     0,      0}, {0xbc, 0x59, 0x3a, 0xff}}},\n    {{{   113,    -57,    148}, 0, {     0,      0}, {0x3c, 0xde, 0x69, 0xff}}},\n    {{{   134,    -77,    114}, 0, {     0,      0}, {0x04, 0xc7, 0x71, 0xff}}},\n    {{{    64,    -31,    124}, 0, {     0,      0}, {0x9d, 0xf3, 0x4d, 0xff}}},\n    {{{   136,   -112,     40}, 0, {     0,      0}, {0xf1, 0x84, 0x16, 0xff}}},\n    {{{   182,   -105,     94}, 0, {     0,      0}, {0x24, 0xb7, 0x60, 0xff}}},\n    {{{    10,    -41,    110}, 0, {     0,      0}, {0xd0, 0xee, 0x74, 0xff}}},\n    {{{   188,    -40,     85}, 0, {     0,      0}, {0x39, 0x28, 0x6a, 0xff}}},\n    {{{    72,     37,     49}, 0, {     0,      0}, {0x09, 0x6d, 0x40, 0xff}}},\n    {{{   -37,     23,     46}, 0, {     0,      0}, {0xd9, 0x6c, 0x33, 0xff}}},\n    {{{   184,      6,     56}, 0, {     0,      0}, {0x35, 0x56, 0x4b, 0xff}}},\n    {{{   -27,    -67,     43}, 0, {     0,      0}, {0xbd, 0x98, 0x1b, 0xff}}},\n    {{{   -72,    -14,     66}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x05007380\nstatic const Vtx peach_seg5_vertex_05007380[] = {\n    {{{    64,    -31,   -123}, 0, {     0,      0}, {0x9d, 0xf3, 0xb3, 0xff}}},\n    {{{    77,     -2,   -168}, 0, {     0,      0}, {0xbc, 0x59, 0xc6, 0xff}}},\n    {{{   113,    -57,   -147}, 0, {     0,      0}, {0x3d, 0xdd, 0x97, 0xff}}},\n    {{{   134,    -76,   -113}, 0, {     0,      0}, {0x04, 0xc8, 0x8f, 0xff}}},\n    {{{    89,    -13,    -95}, 0, {     0,      0}, {0x12, 0x64, 0xb6, 0xff}}},\n    {{{   182,   -105,    -93}, 0, {     0,      0}, {0x24, 0xb7, 0xa0, 0xff}}},\n    {{{   136,   -112,    -39}, 0, {     0,      0}, {0xfb, 0x84, 0xea, 0xff}}},\n    {{{   188,    -40,    -84}, 0, {     0,      0}, {0x39, 0x28, 0x97, 0xff}}},\n    {{{    10,    -41,   -109}, 0, {     0,      0}, {0xd1, 0xee, 0x8c, 0xff}}},\n    {{{   -27,    -67,    -43}, 0, {     0,      0}, {0xc6, 0x93, 0xe4, 0xff}}},\n    {{{   -72,    -14,    -65}, 0, {     0,      0}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{   -37,     23,    -45}, 0, {     0,      0}, {0xdc, 0x6a, 0xc6, 0xff}}},\n    {{{    72,     37,    -47}, 0, {     0,      0}, {0x08, 0x6d, 0xc0, 0xff}}},\n    {{{   184,      6,    -55}, 0, {     0,      0}, {0x35, 0x56, 0xb5, 0xff}}},\n    {{{   -27,    -67,     43}, 0, {     0,      0}, {0xbd, 0x98, 0x1b, 0xff}}},\n    {{{   -95,     -7,    -21}, 0, {     0,      0}, {0x84, 0x0b, 0xe9, 0xff}}},\n};\n\n// 0x05007480\nstatic const Vtx peach_seg5_vertex_05007480[] = {\n    {{{   136,   -112,     40}, 0, {     0,      0}, {0xf1, 0x84, 0x16, 0xff}}},\n    {{{   -27,    -67,     43}, 0, {     0,      0}, {0xbd, 0x98, 0x1b, 0xff}}},\n    {{{   -27,    -67,    -43}, 0, {     0,      0}, {0xc6, 0x93, 0xe4, 0xff}}},\n    {{{   136,   -112,    -39}, 0, {     0,      0}, {0xfb, 0x84, 0xea, 0xff}}},\n    {{{   239,    -84,     59}, 0, {     0,      0}, {0x51, 0xa0, 0x0c, 0xff}}},\n    {{{   239,    -84,    -58}, 0, {     0,      0}, {0x5a, 0xa9, 0xf1, 0xff}}},\n    {{{   182,   -105,    -93}, 0, {     0,      0}, {0x24, 0xb7, 0xa0, 0xff}}},\n    {{{   182,   -105,     94}, 0, {     0,      0}, {0x24, 0xb7, 0x60, 0xff}}},\n    {{{   229,    -45,    -47}, 0, {     0,      0}, {0x43, 0x4f, 0xb8, 0xff}}},\n    {{{   189,     27,      0}, 0, {     0,      0}, {0x3e, 0x6e, 0x00, 0xff}}},\n    {{{   243,    -24,      0}, 0, {     0,      0}, {0x20, 0x7a, 0xff, 0xff}}},\n    {{{   229,    -45,     49}, 0, {     0,      0}, {0x43, 0x4f, 0x47, 0xff}}},\n    {{{   255,    -74,    120}, 0, {     0,      0}, {0x79, 0xfe, 0x24, 0xff}}},\n    {{{    72,     37,    -47}, 0, {     0,      0}, {0x08, 0x6d, 0xc0, 0xff}}},\n    {{{    59,     54,      0}, 0, {     0,      0}, {0xfc, 0x7e, 0x00, 0xff}}},\n    {{{   184,      6,    -55}, 0, {     0,      0}, {0x35, 0x56, 0xb5, 0xff}}},\n};\n\n// 0x05007580\nstatic const Vtx peach_seg5_vertex_05007580[] = {\n    {{{   229,    -45,    -47}, 0, {     0,      0}, {0x43, 0x4f, 0xb8, 0xff}}},\n    {{{   188,    -40,    -84}, 0, {     0,      0}, {0x39, 0x28, 0x97, 0xff}}},\n    {{{   184,      6,    -55}, 0, {     0,      0}, {0x35, 0x56, 0xb5, 0xff}}},\n    {{{   189,     27,      0}, 0, {     0,      0}, {0x3e, 0x6e, 0x00, 0xff}}},\n    {{{    59,     54,      0}, 0, {     0,      0}, {0xfc, 0x7e, 0x00, 0xff}}},\n    {{{    72,     37,    -47}, 0, {     0,      0}, {0x08, 0x6d, 0xc0, 0xff}}},\n    {{{   -37,     23,    -45}, 0, {     0,      0}, {0xdc, 0x6a, 0xc6, 0xff}}},\n    {{{   182,   -105,    -93}, 0, {     0,      0}, {0x24, 0xb7, 0xa0, 0xff}}},\n    {{{   -72,    -14,    -65}, 0, {     0,      0}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{   -95,     -7,    -21}, 0, {     0,      0}, {0x84, 0x0b, 0xe9, 0xff}}},\n    {{{   -37,     23,     46}, 0, {     0,      0}, {0xd9, 0x6c, 0x33, 0xff}}},\n    {{{   229,    -45,     49}, 0, {     0,      0}, {0x43, 0x4f, 0x47, 0xff}}},\n    {{{   239,    -84,     59}, 0, {     0,      0}, {0x51, 0xa0, 0x0c, 0xff}}},\n    {{{   298,    -12,      0}, 0, {     0,      0}, {0x45, 0x6a, 0xff, 0xff}}},\n    {{{   -95,     -7,     22}, 0, {     0,      0}, {0x86, 0x09, 0x21, 0xff}}},\n    {{{   -27,    -67,     43}, 0, {     0,      0}, {0xbd, 0x98, 0x1b, 0xff}}},\n};\n\n// 0x05007680\nstatic const Vtx peach_seg5_vertex_05007680[] = {\n    {{{   -95,     -7,     22}, 0, {     0,      0}, {0x86, 0x09, 0x21, 0xff}}},\n    {{{   -72,    -14,     66}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   -37,     23,     46}, 0, {     0,      0}, {0xd9, 0x6c, 0x33, 0xff}}},\n    {{{   -27,    -67,     43}, 0, {     0,      0}, {0xbd, 0x98, 0x1b, 0xff}}},\n    {{{    72,     37,     49}, 0, {     0,      0}, {0x09, 0x6d, 0x40, 0xff}}},\n    {{{    59,     54,      0}, 0, {     0,      0}, {0xfc, 0x7e, 0x00, 0xff}}},\n    {{{   229,    -45,    -47}, 0, {     0,      0}, {0x43, 0x4f, 0xb8, 0xff}}},\n    {{{   255,    -74,   -119}, 0, {     0,      0}, {0x79, 0xfd, 0xdc, 0xff}}},\n    {{{   182,   -105,    -93}, 0, {     0,      0}, {0x24, 0xb7, 0xa0, 0xff}}},\n    {{{   298,    -12,      0}, 0, {     0,      0}, {0x45, 0x6a, 0xff, 0xff}}},\n    {{{   239,    -84,    -58}, 0, {     0,      0}, {0x5a, 0xa9, 0xf1, 0xff}}},\n    {{{   243,    -24,      0}, 0, {     0,      0}, {0x20, 0x7a, 0xff, 0xff}}},\n    {{{   189,     27,      0}, 0, {     0,      0}, {0x3e, 0x6e, 0x00, 0xff}}},\n    {{{   239,    -84,     59}, 0, {     0,      0}, {0x51, 0xa0, 0x0c, 0xff}}},\n    {{{   255,    -74,    120}, 0, {     0,      0}, {0x79, 0xfe, 0x24, 0xff}}},\n    {{{   182,   -105,     94}, 0, {     0,      0}, {0x24, 0xb7, 0x60, 0xff}}},\n};\n\n// 0x05007780\nstatic const Vtx peach_seg5_vertex_05007780[] = {\n    {{{   184,      6,     56}, 0, {     0,      0}, {0x35, 0x56, 0x4b, 0xff}}},\n    {{{   188,    -40,     85}, 0, {     0,      0}, {0x39, 0x28, 0x6a, 0xff}}},\n    {{{   229,    -45,     49}, 0, {     0,      0}, {0x43, 0x4f, 0x47, 0xff}}},\n    {{{   189,     27,      0}, 0, {     0,      0}, {0x3e, 0x6e, 0x00, 0xff}}},\n    {{{    72,     37,     49}, 0, {     0,      0}, {0x09, 0x6d, 0x40, 0xff}}},\n    {{{   182,   -105,     94}, 0, {     0,      0}, {0x24, 0xb7, 0x60, 0xff}}},\n    {{{   243,    -24,      0}, 0, {     0,      0}, {0x20, 0x7a, 0xff, 0xff}}},\n    {{{   298,    -12,      0}, 0, {     0,      0}, {0x45, 0x6a, 0xff, 0xff}}},\n    {{{   255,    -74,    120}, 0, {     0,      0}, {0x79, 0xfe, 0x24, 0xff}}},\n};\n\n// 0x05007810 - 0x05007AB8\nconst Gfx peach_seg5_dl_05007810[] = {\n    gsSPLight(&peach_seg5_lights_05007288.l, 1),\n    gsSPLight(&peach_seg5_lights_05007288.a, 2),\n    gsSPVertex(peach_seg5_vertex_050072A0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  3,  4,  7, 0x0),\n    gsSP2Triangles( 3,  6,  8, 0x0,  3,  8,  0, 0x0),\n    gsSP2Triangles( 5,  3,  7, 0x0,  0,  9, 10, 0x0),\n    gsSP2Triangles( 0,  7,  4, 0x0,  4,  1,  0, 0x0),\n    gsSP2Triangles( 0, 10,  7, 0x0, 11,  9,  0, 0x0),\n    gsSP2Triangles( 0,  8, 11, 0x0,  7, 12,  5, 0x0),\n    gsSP2Triangles(13, 12,  7, 0x0, 10, 13,  7, 0x0),\n    gsSPVertex(peach_seg5_vertex_05007380, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  2,  1,  4, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  4,  7,  3, 0x0),\n    gsSP2Triangles( 7,  5,  3, 0x0,  8,  3,  6, 0x0),\n    gsSP2Triangles( 3,  8,  0, 0x0,  4,  1,  0, 0x0),\n    gsSP2Triangles( 0,  8,  4, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 8, 11,  4, 0x0,  6,  9,  8, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0, 11, 12,  4, 0x0),\n    gsSP2Triangles( 4, 12, 13, 0x0, 13,  7,  4, 0x0),\n    gsSP2Triangles( 9, 14, 15, 0x0, 15, 10,  9, 0x0),\n    gsSPVertex(peach_seg5_vertex_05007480, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 4,  3,  5, 0x0,  5,  3,  6, 0x0),\n    gsSP2Triangles( 4,  0,  3, 0x0,  7,  0,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(12,  4, 11, 0x0,  9, 13, 14, 0x0),\n    gsSP1Triangle( 9, 15, 13, 0x0),\n    gsSPVertex(peach_seg5_vertex_05007580, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  1,  0, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0,  9, 10,  6, 0x0),\n    gsSP2Triangles(10,  4,  6, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles( 9, 14, 10, 0x0, 15, 14,  9, 0x0),\n    gsSPVertex(peach_seg5_vertex_05007680, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10,  6, 0x0,  9,  6, 11, 0x0),\n    gsSP2Triangles( 6, 10,  7, 0x0,  8,  7, 10, 0x0),\n    gsSP2Triangles( 5,  4, 12, 0x0, 13, 14, 15, 0x0),\n    gsSP1Triangle( 9, 13, 10, 0x0),\n    gsSPVertex(peach_seg5_vertex_05007780, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  0,  3, 0x0,  2,  1,  5, 0x0),\n    gsSP2Triangles( 6,  2,  7, 0x0,  5,  8,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05007AB8 - 0x05007AE0\nconst Gfx peach_seg5_dl_05007AB8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(peach_seg5_dl_05007810),\n    gsDPPipeSync(),\n    gsSPEndDisplayList(),\n};\n\n// 0x05007AE0\nstatic const Lights1 peach_seg5_lights_05007AE0 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05007AF8\nstatic const Vtx peach_seg5_vertex_05007AF8[] = {\n    {{{   -32,     28,     30}, 0, {   312,  -1330}, {0x96, 0x36, 0x2a, 0xff}}},\n    {{{   -12,     51,    -18}, 0, {   412,  -1562}, {0xea, 0x75, 0xd7, 0xff}}},\n    {{{   -35,     28,    -17}, 0, {   300,  -1330}, {0x91, 0x27, 0xd2, 0xff}}},\n    {{{   -33,    -19,     30}, 0, {   308,   -856}, {0x95, 0xd6, 0x33, 0xff}}},\n    {{{    -9,     27,     52}, 0, {   428,  -1324}, {0xe6, 0x20, 0x77, 0xff}}},\n    {{{   -42,      4,      6}, 0, {   264,  -1096}, {0x82, 0x02, 0x07, 0xff}}},\n    {{{   -10,     51,     28}, 0, {   426,  -1560}, {0xf5, 0x6f, 0x3c, 0xff}}},\n    {{{   -15,    -19,    -42}, 0, {   398,   -852}, {0xc9, 0xdb, 0x94, 0xff}}},\n    {{{   -36,    -19,    -17}, 0, {   294,   -858}, {0x8e, 0xd7, 0xdb, 0xff}}},\n    {{{   -14,     27,    -42}, 0, {   402,  -1326}, {0xe9, 0x27, 0x8a, 0xff}}},\n    {{{   -15,    -43,    -18}, 0, {   400,   -616}, {0xe4, 0x8c, 0xd7, 0xff}}},\n    {{{   -10,    -19,     52}, 0, {   424,   -850}, {0xe5, 0xd0, 0x72, 0xff}}},\n    {{{   -12,    -43,     28}, 0, {   414,   -614}, {0xef, 0x92, 0x3c, 0xff}}},\n    {{{    31,    -32,    -15}, 0, {   636,   -720}, {0x4c, 0xa4, 0xd8, 0xff}}},\n    {{{    33,    -33,     20}, 0, {   646,   -720}, {0x6d, 0xc0, 0x09, 0xff}}},\n};\n\n// 0x05007BE8\nstatic const Vtx peach_seg5_vertex_05007BE8[] = {\n    {{{    33,     38,    -15}, 0, {   644,  -1434}, {0x75, 0x28, 0xe8, 0xff}}},\n    {{{    35,    -15,     38}, 0, {   652,   -898}, {0x55, 0xd8, 0x54, 0xff}}},\n    {{{    33,    -33,     20}, 0, {   646,   -720}, {0x6d, 0xc0, 0x09, 0xff}}},\n    {{{    31,    -32,    -15}, 0, {   636,   -720}, {0x4c, 0xa4, 0xd8, 0xff}}},\n    {{{    31,    -15,    -33}, 0, {   632,   -900}, {0x4b, 0xd8, 0xa3, 0xff}}},\n    {{{    32,     20,    -33}, 0, {   638,  -1256}, {0x57, 0x2a, 0xb0, 0xff}}},\n    {{{   -12,    -43,     28}, 0, {   414,   -614}, {0xef, 0x92, 0x3c, 0xff}}},\n    {{{   -14,     27,    -42}, 0, {   402,  -1326}, {0xe9, 0x27, 0x8a, 0xff}}},\n    {{{   -12,     51,    -18}, 0, {   412,  -1562}, {0xea, 0x75, 0xd7, 0xff}}},\n    {{{    35,     38,     20}, 0, {   654,  -1434}, {0x48, 0x65, 0x16, 0xff}}},\n    {{{    36,     20,     38}, 0, {   656,  -1254}, {0x5f, 0x2b, 0x47, 0xff}}},\n    {{{   -15,    -43,    -18}, 0, {   400,   -616}, {0xe4, 0x8c, 0xd7, 0xff}}},\n    {{{   -15,    -19,    -42}, 0, {   398,   -852}, {0xc9, 0xdb, 0x94, 0xff}}},\n    {{{   -10,    -19,     52}, 0, {   424,   -850}, {0xe5, 0xd0, 0x72, 0xff}}},\n    {{{    -9,     27,     52}, 0, {   428,  -1324}, {0xe6, 0x20, 0x77, 0xff}}},\n    {{{   -10,     51,     28}, 0, {   426,  -1560}, {0xf5, 0x6f, 0x3c, 0xff}}},\n};\n\n// 0x05007CE8 - 0x05007E58\nconst Gfx peach_seg5_dl_05007CE8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, peach_seg5_texture_05004028),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&peach_seg5_lights_05007AE0.l, 1),\n    gsSPLight(&peach_seg5_lights_05007AE0.a, 2),\n    gsSPVertex(peach_seg5_vertex_05007AF8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 5,  3,  0, 0x0,  4,  6,  0, 0x0),\n    gsSP2Triangles( 0,  2,  5, 0x0,  0,  6,  1, 0x0),\n    gsSP2Triangles( 2,  7,  8, 0x0,  2,  1,  9, 0x0),\n    gsSP2Triangles( 2,  9,  7, 0x0,  5,  2,  8, 0x0),\n    gsSP2Triangles( 8,  3,  5, 0x0,  8, 10,  3, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11,  3, 12, 0x0),\n    gsSP2Triangles( 3, 11,  4, 0x0, 10, 12,  3, 0x0),\n    gsSP2Triangles(10, 13, 14, 0x0, 10, 14, 12, 0x0),\n    gsSPVertex(peach_seg5_vertex_05007BE8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 2,  5,  0, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 6,  2,  1, 0x0,  7,  8,  5, 0x0),\n    gsSP2Triangles( 7,  5,  4, 0x0,  8,  0,  5, 0x0),\n    gsSP2Triangles( 9,  0,  8, 0x0,  0, 10,  1, 0x0),\n    gsSP2Triangles( 0,  9, 10, 0x0,  4, 11, 12, 0x0),\n    gsSP2Triangles( 7,  4, 12, 0x0,  4,  3, 11, 0x0),\n    gsSP2Triangles(13,  6,  1, 0x0, 13,  1, 14, 0x0),\n    gsSP2Triangles( 1, 10, 14, 0x0, 10, 15, 14, 0x0),\n    gsSP2Triangles(10,  9, 15, 0x0,  8, 15,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05007E58 - 0x05007EB0\nconst Gfx peach_seg5_dl_05007E58[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(peach_seg5_dl_05007CE8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsSPEndDisplayList(),\n};\n\n// 0x05007EB0\nstatic const Lights1 peach_seg5_lights_05007EB0 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05007EC8\nstatic const Vtx peach_seg5_vertex_05007EC8[] = {\n    {{{   -32,     28,    -29}, 0, {   312,  -1330}, {0x96, 0x36, 0xd6, 0xff}}},\n    {{{   -33,    -19,    -29}, 0, {   308,   -856}, {0x95, 0xd6, 0xcd, 0xff}}},\n    {{{   -42,      4,     -5}, 0, {   264,  -1096}, {0x82, 0x02, 0xf9, 0xff}}},\n    {{{   -35,     28,     18}, 0, {   300,  -1330}, {0x91, 0x27, 0x2e, 0xff}}},\n    {{{   -36,    -19,     18}, 0, {   294,   -858}, {0x8e, 0xd7, 0x25, 0xff}}},\n    {{{   -15,    -19,     43}, 0, {   398,   -852}, {0xc9, 0xdb, 0x6c, 0xff}}},\n    {{{   -12,     51,     19}, 0, {   412,  -1562}, {0xea, 0x75, 0x29, 0xff}}},\n    {{{   -14,     27,     43}, 0, {   402,  -1326}, {0xe9, 0x27, 0x76, 0xff}}},\n    {{{    -9,     27,    -51}, 0, {   428,  -1324}, {0xe6, 0x20, 0x89, 0xff}}},\n    {{{   -10,     51,    -27}, 0, {   426,  -1562}, {0xf5, 0x6f, 0xc4, 0xff}}},\n    {{{   -15,    -43,     19}, 0, {   400,   -616}, {0xe4, 0x8c, 0x29, 0xff}}},\n    {{{   -12,    -43,    -27}, 0, {   414,   -614}, {0xef, 0x92, 0xc4, 0xff}}},\n    {{{   -10,    -19,    -51}, 0, {   424,   -852}, {0xe5, 0xd0, 0x8e, 0xff}}},\n    {{{    33,     38,     16}, 0, {   644,  -1434}, {0x75, 0x28, 0x18, 0xff}}},\n    {{{    35,     38,    -19}, 0, {   654,  -1434}, {0x48, 0x65, 0xea, 0xff}}},\n};\n\n// 0x05007FB8\nstatic const Vtx peach_seg5_vertex_05007FB8[] = {\n    {{{    33,    -33,    -19}, 0, {   646,   -720}, {0x6d, 0xc0, 0xf7, 0xff}}},\n    {{{    35,    -15,    -37}, 0, {   652,   -898}, {0x55, 0xd8, 0xac, 0xff}}},\n    {{{    33,     38,     16}, 0, {   644,  -1434}, {0x75, 0x28, 0x18, 0xff}}},\n    {{{    36,     20,    -37}, 0, {   656,  -1256}, {0x5f, 0x2b, 0xb9, 0xff}}},\n    {{{    35,     38,    -19}, 0, {   654,  -1434}, {0x48, 0x65, 0xea, 0xff}}},\n    {{{    32,     20,     34}, 0, {   638,  -1256}, {0x57, 0x2a, 0x50, 0xff}}},\n    {{{   -12,     51,     19}, 0, {   412,  -1562}, {0xea, 0x75, 0x29, 0xff}}},\n    {{{   -14,     27,     43}, 0, {   402,  -1326}, {0xe9, 0x27, 0x76, 0xff}}},\n    {{{    31,    -15,     34}, 0, {   634,   -898}, {0x4b, 0xd8, 0x5d, 0xff}}},\n    {{{    31,    -32,     16}, 0, {   636,   -720}, {0x4c, 0xa4, 0x28, 0xff}}},\n    {{{   -15,    -43,     19}, 0, {   400,   -616}, {0xe4, 0x8c, 0x29, 0xff}}},\n    {{{   -12,    -43,    -27}, 0, {   414,   -614}, {0xef, 0x92, 0xc4, 0xff}}},\n    {{{   -15,    -19,     43}, 0, {   398,   -852}, {0xc9, 0xdb, 0x6c, 0xff}}},\n    {{{   -10,    -19,    -51}, 0, {   424,   -852}, {0xe5, 0xd0, 0x8e, 0xff}}},\n    {{{    -9,     27,    -51}, 0, {   428,  -1324}, {0xe6, 0x20, 0x89, 0xff}}},\n    {{{   -10,     51,    -27}, 0, {   426,  -1562}, {0xf5, 0x6f, 0xc4, 0xff}}},\n};\n\n// 0x050080B8 - 0x05008228\nconst Gfx peach_seg5_dl_050080B8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, peach_seg5_texture_05004028),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&peach_seg5_lights_05007EB0.l, 1),\n    gsSPLight(&peach_seg5_lights_05007EB0.a, 2),\n    gsSPVertex(peach_seg5_vertex_05007EC8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  4,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  3, 0x0,  3,  6,  0, 0x0),\n    gsSP2Triangles( 7,  6,  3, 0x0,  5,  7,  3, 0x0),\n    gsSP2Triangles( 0,  8,  1, 0x0,  0,  9,  8, 0x0),\n    gsSP2Triangles( 6,  9,  0, 0x0,  1, 10,  4, 0x0),\n    gsSP2Triangles(11,  1, 12, 0x0,  8, 12,  1, 0x0),\n    gsSP2Triangles( 1, 11, 10, 0x0,  4, 10,  5, 0x0),\n    gsSP1Triangle( 6, 13, 14, 0x0),\n    gsSPVertex(peach_seg5_vertex_05007FB8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 3,  4,  2, 0x0,  2,  5,  0, 0x0),\n    gsSP2Triangles( 5,  2,  6, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  0, 0x0,  8,  5,  7, 0x0),\n    gsSP2Triangles( 0,  9, 10, 0x0, 11,  0, 10, 0x0),\n    gsSP2Triangles( 8,  9,  0, 0x0,  1,  0, 11, 0x0),\n    gsSP2Triangles(12, 10,  8, 0x0, 12,  8,  7, 0x0),\n    gsSP2Triangles(10,  9,  8, 0x0,  1, 11, 13, 0x0),\n    gsSP2Triangles(14,  1, 13, 0x0, 14,  3,  1, 0x0),\n    gsSP2Triangles(14, 15,  3, 0x0, 15,  4,  3, 0x0),\n    gsSP1Triangle( 4, 15,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05008228 - 0x05008280\nconst Gfx peach_seg5_dl_05008228[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(peach_seg5_dl_050080B8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsSPEndDisplayList(),\n};\n\n// 0x05008280\nstatic const Lights1 peach_seg5_lights_05008280 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05008298\nstatic const Vtx peach_seg5_vertex_05008298[] = {\n    {{{    52,     26,      0}, 0, {  1068,  -1682}, {0x07, 0x7e, 0x00, 0xff}}},\n    {{{    23,     13,     18}, 0, {   380,  -1426}, {0x00, 0x3e, 0x6e, 0xff}}},\n    {{{    52,     12,     18}, 0, {  1050,  -1376}, {0x07, 0x40, 0x6d, 0xff}}},\n    {{{    23,     27,      0}, 0, {   394,  -1730}, {0x05, 0x7a, 0xdf, 0xff}}},\n    {{{    52,     12,    -17}, 0, {  1046,  -1380}, {0x06, 0x3b, 0x91, 0xff}}},\n    {{{    23,    -10,     20}, 0, {   350,   -878}, {0xff, 0xc5, 0x6f, 0xff}}},\n    {{{    51,     -9,     21}, 0, {  1022,   -876}, {0x04, 0xc6, 0x70, 0xff}}},\n    {{{    23,     13,    -18}, 0, {   376,  -1430}, {0x05, 0x2c, 0x8a, 0xff}}},\n    {{{    51,     -9,    -19}, 0, {  1018,   -880}, {0x06, 0xc6, 0x90, 0xff}}},\n    {{{    23,    -10,    -20}, 0, {   348,   -882}, {0x05, 0xaf, 0x9f, 0xff}}},\n    {{{    22,    -21,      0}, 0, {   336,   -634}, {0x03, 0x83, 0x16, 0xff}}},\n    {{{    51,    -20,      0}, 0, {  1012,   -624}, {0x05, 0x82, 0xff, 0xff}}},\n};\n\n// 0x05008358\nstatic const Vtx peach_seg5_vertex_05008358[] = {\n    {{{   115,     -2,      0}, 0, {     0,      0}, {0x7e, 0xfa, 0x00, 0xff}}},\n    {{{   101,     -9,     16}, 0, {     0,      0}, {0x2d, 0xc8, 0x68, 0xff}}},\n    {{{   101,    -18,      0}, 0, {     0,      0}, {0x2e, 0x8b, 0xf1, 0xff}}},\n    {{{    51,     -9,    -19}, 0, {     0,      0}, {0x06, 0xc6, 0x90, 0xff}}},\n    {{{    51,    -20,      0}, 0, {     0,      0}, {0x05, 0x82, 0xff, 0xff}}},\n    {{{   101,     -9,    -16}, 0, {     0,      0}, {0x32, 0xd8, 0x93, 0xff}}},\n    {{{    52,     12,    -17}, 0, {     0,      0}, {0x06, 0x3b, 0x91, 0xff}}},\n    {{{   102,     12,    -14}, 0, {     0,      0}, {0x34, 0x42, 0xa2, 0xff}}},\n    {{{   102,     21,      0}, 0, {     0,      0}, {0x3c, 0x6e, 0x13, 0xff}}},\n    {{{   102,     12,     14}, 0, {     0,      0}, {0x40, 0x36, 0x5e, 0xff}}},\n    {{{    51,     -9,     21}, 0, {     0,      0}, {0x04, 0xc6, 0x70, 0xff}}},\n    {{{    52,     12,     18}, 0, {     0,      0}, {0x07, 0x40, 0x6d, 0xff}}},\n    {{{    52,     26,      0}, 0, {     0,      0}, {0x07, 0x7e, 0x00, 0xff}}},\n};\n\n// 0x05008428 - 0x050084C0\nconst Gfx peach_seg5_dl_05008428[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, peach_seg5_texture_05000A28),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&peach_seg5_lights_05008280.l, 1),\n    gsSPLight(&peach_seg5_lights_05008280.a, 2),\n    gsSPVertex(peach_seg5_vertex_05008298, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  3,  0, 0x0,  1,  5,  6, 0x0),\n    gsSP2Triangles( 6,  2,  1, 0x0,  4,  7,  3, 0x0),\n    gsSP2Triangles( 7,  4,  8, 0x0,  8,  9,  7, 0x0),\n    gsSP2Triangles( 6, 10, 11, 0x0, 11, 10,  9, 0x0),\n    gsSP2Triangles(11,  9,  8, 0x0,  6,  5, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050084C0 - 0x05008560\nconst Gfx peach_seg5_dl_050084C0[] = {\n    gsSPVertex(peach_seg5_vertex_05008358, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 3,  5,  2, 0x0,  2,  5,  0, 0x0),\n    gsSP2Triangles( 4,  2,  1, 0x0,  6,  7,  5, 0x0),\n    gsSP2Triangles( 7,  0,  5, 0x0,  3,  6,  5, 0x0),\n    gsSP2Triangles( 8,  9,  0, 0x0,  1,  0,  9, 0x0),\n    gsSP2Triangles( 0,  7,  8, 0x0,  4,  1, 10, 0x0),\n    gsSP2Triangles( 1,  9, 11, 0x0, 11, 10,  1, 0x0),\n    gsSP2Triangles(12,  8,  7, 0x0, 12,  7,  6, 0x0),\n    gsSP2Triangles(11,  8, 12, 0x0, 11,  9,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05008560 - 0x050085D0\nconst Gfx peach_seg5_dl_05008560[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(peach_seg5_dl_05008428),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(peach_seg5_dl_050084C0),\n    gsDPPipeSync(),\n    gsSPEndDisplayList(),\n};\n\n// 0x050085D0\nstatic const Lights1 peach_seg5_lights_050085D0 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x050085E8\nstatic const Vtx peach_seg5_vertex_050085E8[] = {\n    {{{   -18,      2,      0}, 0, {     0,      0}, {0x82, 0x01, 0x03, 0xff}}},\n    {{{     0,     -9,    -19}, 0, {     0,      0}, {0xcb, 0xcd, 0x99, 0xff}}},\n    {{{    -5,    -20,      0}, 0, {     0,      0}, {0xd6, 0x89, 0xf5, 0xff}}},\n    {{{    77,    -12,      0}, 0, {     0,      0}, {0x25, 0x88, 0x11, 0xff}}},\n    {{{     1,     -9,     18}, 0, {     0,      0}, {0xe3, 0xc5, 0x6c, 0xff}}},\n    {{{    77,     -6,    -14}, 0, {     0,      0}, {0x25, 0xbf, 0x9a, 0xff}}},\n    {{{    77,     -6,     12}, 0, {     0,      0}, {0x2f, 0xc2, 0x63, 0xff}}},\n    {{{    77,      7,     12}, 0, {     0,      0}, {0x26, 0x39, 0x6a, 0xff}}},\n    {{{     1,     13,     19}, 0, {     0,      0}, {0xcf, 0x32, 0x69, 0xff}}},\n    {{{    -4,     24,      0}, 0, {     0,      0}, {0xd8, 0x76, 0x13, 0xff}}},\n    {{{     0,     13,    -19}, 0, {     0,      0}, {0xe2, 0x3a, 0x94, 0xff}}},\n    {{{    77,     15,      0}, 0, {     0,      0}, {0x2c, 0x76, 0xf5, 0xff}}},\n    {{{    77,      7,    -14}, 0, {     0,      0}, {0x34, 0x3a, 0x9d, 0xff}}},\n    {{{    94,      0,      0}, 0, {     0,      0}, {0x7e, 0xfa, 0x05, 0xff}}},\n};\n\n// 0x050086C8 - 0x050087A8\nconst Gfx peach_seg5_dl_050086C8[] = {\n    gsSPLight(&peach_seg5_lights_050085D0.l, 1),\n    gsSPLight(&peach_seg5_lights_050085D0.a, 2),\n    gsSPVertex(peach_seg5_vertex_050085E8, 14, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSP2Triangles( 3,  4,  2, 0x0,  2,  5,  3, 0x0),\n    gsSP2Triangles( 2,  4,  0, 0x0,  2,  1,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 4,  7,  8, 0x0,  8,  0,  4, 0x0),\n    gsSP2Triangles( 9, 10,  0, 0x0,  0,  8,  9, 0x0),\n    gsSP2Triangles( 1,  0, 10, 0x0, 11, 10,  9, 0x0),\n    gsSP2Triangles( 9,  8,  7, 0x0,  9,  7, 11, 0x0),\n    gsSP2Triangles(11, 12, 10, 0x0, 10, 12,  5, 0x0),\n    gsSP2Triangles(10,  5,  1, 0x0,  6, 13,  7, 0x0),\n    gsSP2Triangles( 7, 13, 11, 0x0, 11, 13, 12, 0x0),\n    gsSP2Triangles(13,  3,  5, 0x0, 12, 13,  5, 0x0),\n    gsSP1Triangle( 6,  3, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050087A8 - 0x050087D0\nconst Gfx peach_seg5_dl_050087A8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(peach_seg5_dl_050086C8),\n    gsDPPipeSync(),\n    gsSPEndDisplayList(),\n};\n\n// 0x050087D0\nstatic const Lights1 peach_seg5_lights_050087D0 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x050087E8\nstatic const Vtx peach_seg5_vertex_050087E8[] = {\n    {{{    23,     13,    -17}, 0, {   568,   -670}, {0x00, 0x3c, 0x91, 0xff}}},\n    {{{    52,     12,    -17}, 0, {   990,   -670}, {0x07, 0x3f, 0x93, 0xff}}},\n    {{{    51,     -9,    -20}, 0, {   982,   -348}, {0x03, 0xc7, 0x8f, 0xff}}},\n    {{{    52,     26,      0}, 0, {   996,   -866}, {0x07, 0x7e, 0xfd, 0xff}}},\n    {{{    23,    -10,    -19}, 0, {   560,   -318}, {0xff, 0xc6, 0x90, 0xff}}},\n    {{{    23,     27,      0}, 0, {   572,   -864}, {0x05, 0x7b, 0x1d, 0xff}}},\n    {{{    52,     12,     18}, 0, {   988,   -670}, {0x06, 0x3d, 0x6e, 0xff}}},\n    {{{    23,     13,     19}, 0, {   566,   -670}, {0x05, 0x2d, 0x76, 0xff}}},\n    {{{    51,     -9,     20}, 0, {   978,   -350}, {0x05, 0xc5, 0x70, 0xff}}},\n    {{{    23,    -10,     21}, 0, {   558,   -320}, {0x05, 0xae, 0x60, 0xff}}},\n    {{{    51,    -20,      0}, 0, {   980,   -186}, {0x05, 0x82, 0x00, 0xff}}},\n    {{{    22,    -21,      0}, 0, {   556,   -160}, {0x03, 0x84, 0xe8, 0xff}}},\n};\n\n// 0x050088A8\nstatic const Vtx peach_seg5_vertex_050088A8[] = {\n    {{{   101,    -18,      1}, 0, {     0,      0}, {0x2e, 0x8b, 0x0e, 0xff}}},\n    {{{   101,     -9,    -15}, 0, {     0,      0}, {0x2d, 0xc9, 0x98, 0xff}}},\n    {{{   115,     -2,      1}, 0, {     0,      0}, {0x7e, 0xfa, 0x00, 0xff}}},\n    {{{   101,     -9,     17}, 0, {     0,      0}, {0x32, 0xd8, 0x6d, 0xff}}},\n    {{{   102,     12,     15}, 0, {     0,      0}, {0x34, 0x42, 0x5e, 0xff}}},\n    {{{   102,     12,    -13}, 0, {     0,      0}, {0x40, 0x36, 0xa2, 0xff}}},\n    {{{   102,     21,      1}, 0, {     0,      0}, {0x3c, 0x6d, 0xec, 0xff}}},\n    {{{    52,     12,     18}, 0, {     0,      0}, {0x06, 0x3d, 0x6e, 0xff}}},\n    {{{    51,     -9,     20}, 0, {     0,      0}, {0x05, 0xc5, 0x70, 0xff}}},\n    {{{    51,    -20,      0}, 0, {     0,      0}, {0x05, 0x82, 0x00, 0xff}}},\n    {{{    51,     -9,    -20}, 0, {     0,      0}, {0x03, 0xc7, 0x8f, 0xff}}},\n    {{{    52,     12,    -17}, 0, {     0,      0}, {0x07, 0x3f, 0x93, 0xff}}},\n    {{{    52,     26,      0}, 0, {     0,      0}, {0x07, 0x7e, 0xfd, 0xff}}},\n};\n\n// 0x05008978 - 0x05008A10\nconst Gfx peach_seg5_dl_05008978[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, peach_seg5_texture_05000A28),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&peach_seg5_lights_050087D0.l, 1),\n    gsSPLight(&peach_seg5_lights_050087D0.a, 2),\n    gsSPVertex(peach_seg5_vertex_050087E8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 2,  4,  0, 0x0,  0,  5,  3, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  6,  7, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(10, 11,  2, 0x0, 11,  4,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05008A10 - 0x05008AB0\nconst Gfx peach_seg5_dl_05008A10[] = {\n    gsSPVertex(peach_seg5_vertex_050088A8, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 2,  5,  6, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 5,  2,  1, 0x0,  6,  4,  2, 0x0),\n    gsSP2Triangles( 3,  4,  7, 0x0,  3,  7,  8, 0x0),\n    gsSP2Triangles( 0,  3,  8, 0x0,  9,  0,  8, 0x0),\n    gsSP2Triangles( 1,  0,  9, 0x0,  1, 10, 11, 0x0),\n    gsSP2Triangles(10,  1,  9, 0x0, 11,  5,  1, 0x0),\n    gsSP2Triangles( 7,  4, 12, 0x0,  4,  6, 12, 0x0),\n    gsSP2Triangles(12,  6, 11, 0x0,  6,  5, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05008AB0 - 0x05008B20\nconst Gfx peach_seg5_dl_05008AB0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(peach_seg5_dl_05008978),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(peach_seg5_dl_05008A10),\n    gsDPPipeSync(),\n    gsSPEndDisplayList(),\n};\n\n// 0x05008B20\nstatic const Lights1 peach_seg5_lights_05008B20 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05008B38\nstatic const Vtx peach_seg5_vertex_05008B38[] = {\n    {{{    -5,    -20,      1}, 0, {     0,      0}, {0xd6, 0x89, 0x0a, 0xff}}},\n    {{{     0,     -9,     20}, 0, {     0,      0}, {0xcb, 0xcd, 0x67, 0xff}}},\n    {{{   -18,      2,      1}, 0, {     0,      0}, {0x82, 0x01, 0xfd, 0xff}}},\n    {{{     0,     13,     20}, 0, {     0,      0}, {0xe2, 0x3b, 0x6c, 0xff}}},\n    {{{    -4,     24,      1}, 0, {     0,      0}, {0xd8, 0x76, 0xec, 0xff}}},\n    {{{     1,     -9,    -17}, 0, {     0,      0}, {0xe3, 0xc6, 0x94, 0xff}}},\n    {{{     1,     13,    -18}, 0, {     0,      0}, {0xcf, 0x32, 0x97, 0xff}}},\n    {{{    77,    -12,      0}, 0, {     0,      0}, {0x25, 0x89, 0xec, 0xff}}},\n    {{{    77,     -6,    -11}, 0, {     0,      0}, {0x2d, 0xc4, 0x9b, 0xff}}},\n    {{{    77,      7,    -11}, 0, {     0,      0}, {0x24, 0x38, 0x95, 0xff}}},\n    {{{    77,     -6,     15}, 0, {     0,      0}, {0x26, 0xbe, 0x65, 0xff}}},\n    {{{    77,      7,     15}, 0, {     0,      0}, {0x36, 0x3b, 0x61, 0xff}}},\n    {{{    77,     15,      0}, 0, {     0,      0}, {0x2c, 0x76, 0x07, 0xff}}},\n    {{{    94,      0,      0}, 0, {     0,      0}, {0x7e, 0xfa, 0xf6, 0xff}}},\n};\n\n// 0x05008C18 - 0x05008CF8\nconst Gfx peach_seg5_dl_05008C18[] = {\n    gsSPLight(&peach_seg5_lights_05008B20.l, 1),\n    gsSPLight(&peach_seg5_lights_05008B20.a, 2),\n    gsSPVertex(peach_seg5_vertex_05008B38, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 2,  5,  0, 0x0,  5,  2,  6, 0x0),\n    gsSP2Triangles( 4,  6,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 0,  5,  7, 0x0,  5,  8,  7, 0x0),\n    gsSP2Triangles( 9,  8,  5, 0x0,  6,  9,  5, 0x0),\n    gsSP2Triangles( 7, 10,  0, 0x0, 10,  1,  0, 0x0),\n    gsSP2Triangles( 3, 11, 12, 0x0,  4,  3, 12, 0x0),\n    gsSP2Triangles(10, 11,  3, 0x0,  1, 10,  3, 0x0),\n    gsSP2Triangles( 9,  6,  4, 0x0, 12,  9,  4, 0x0),\n    gsSP2Triangles(13,  9, 12, 0x0, 11, 13, 12, 0x0),\n    gsSP2Triangles( 9, 13,  8, 0x0, 10,  7, 13, 0x0),\n    gsSP2Triangles( 7,  8, 13, 0x0, 10, 13, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05008CF8 - 0x05008D20\nconst Gfx peach_seg5_dl_05008CF8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(peach_seg5_dl_05008C18),\n    gsDPPipeSync(),\n    gsSPEndDisplayList(),\n};\n\n// 0x05008D20\nstatic const Lights1 peach_seg5_lights_05008D20 = gdSPDefLights1(\n    0x0b, 0x1a, 0x67,\n    0x16, 0x35, 0xce, 0x28, 0x28, 0x28\n);\n\n// 0x05008D38\nstatic const Vtx peach_seg5_vertex_05008D38[] = {\n    {{{     6,     -2,     75}, 0, {     0,      0}, {0xa8, 0xae, 0x26, 0xff}}},\n    {{{    -1,      8,     67}, 0, {     0,      0}, {0x82, 0xf9, 0x02, 0xff}}},\n    {{{     1,      8,     52}, 0, {     0,      0}, {0x93, 0xec, 0xc3, 0xff}}},\n    {{{     3,     10,     80}, 0, {     0,      0}, {0x9f, 0xf6, 0x50, 0xff}}},\n    {{{    15,      4,     86}, 0, {     0,      0}, {0xe0, 0xc7, 0x6c, 0xff}}},\n    {{{    13,     20,     85}, 0, {     0,      0}, {0xe1, 0x25, 0x75, 0xff}}},\n    {{{     2,     23,     73}, 0, {     0,      0}, {0xa2, 0x45, 0x30, 0xff}}},\n    {{{    25,     27,     82}, 0, {     0,      0}, {0x16, 0x51, 0x5e, 0xff}}},\n    {{{    29,      1,     84}, 0, {     0,      0}, {0x28, 0xc4, 0x67, 0xff}}},\n    {{{     8,     31,     62}, 0, {     0,      0}, {0xb9, 0x68, 0xf8, 0xff}}},\n    {{{    36,     28,     72}, 0, {     0,      0}, {0x25, 0x6c, 0x35, 0xff}}},\n    {{{    40,      2,     75}, 0, {     0,      0}, {0x51, 0xe3, 0x5c, 0xff}}},\n    {{{    19,     32,     53}, 0, {     0,      0}, {0xc8, 0x61, 0xc6, 0xff}}},\n    {{{    12,      9,     43}, 0, {     0,      0}, {0xb8, 0xcd, 0xa6, 0xff}}},\n    {{{    26,     -9,     56}, 0, {     0,      0}, {0x0b, 0x82, 0x01, 0xff}}},\n    {{{    15,    -10,     66}, 0, {     0,      0}, {0xdb, 0x87, 0x04, 0xff}}},\n};\n\n// 0x05008E38 - 0x05008F20\nconst Gfx peach_seg5_dl_05008E38[] = {\n    gsSPLight(&peach_seg5_lights_05008D20.l, 1),\n    gsSPLight(&peach_seg5_lights_05008D20.a, 2),\n    gsSPVertex(peach_seg5_vertex_05008D38, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  3,  6,  1, 0x0),\n    gsSP2Triangles( 6,  5,  7, 0x0,  5,  4,  8, 0x0),\n    gsSP2Triangles( 5,  8,  7, 0x0,  6,  7,  9, 0x0),\n    gsSP2Triangles( 1,  6,  9, 0x0,  9,  7, 10, 0x0),\n    gsSP2Triangles( 7, 11, 10, 0x0,  7,  8, 11, 0x0),\n    gsSP2Triangles( 2,  9, 12, 0x0,  9, 10, 12, 0x0),\n    gsSP2Triangles( 1,  9,  2, 0x0,  2, 12, 13, 0x0),\n    gsSP2Triangles( 8, 14, 11, 0x0,  8, 15, 14, 0x0),\n    gsSP2Triangles( 4, 15,  8, 0x0,  4,  0, 15, 0x0),\n    gsSP2Triangles( 0,  2, 15, 0x0, 15,  2, 13, 0x0),\n    gsSP1Triangle(15, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05008F20 - 0x05008F48\nconst Gfx peach_seg5_dl_05008F20[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(peach_seg5_dl_05008E38),\n    gsDPPipeSync(),\n    gsSPEndDisplayList(),\n};\n\n// 0x05008F48\nstatic const Lights1 peach_seg5_lights_05008F48 = gdSPDefLights1(\n    0x0b, 0x1a, 0x67,\n    0x16, 0x35, 0xce, 0x28, 0x28, 0x28\n);\n\n// 0x05008F60\nstatic const Vtx peach_seg5_vertex_05008F60[] = {\n    {{{    29,      1,    -83}, 0, {     0,      0}, {0x29, 0xca, 0x96, 0xff}}},\n    {{{     6,     -3,    -74}, 0, {     0,      0}, {0xbb, 0xa8, 0xc5, 0xff}}},\n    {{{    15,      4,    -85}, 0, {     0,      0}, {0xeb, 0xe2, 0x87, 0xff}}},\n    {{{     8,     31,    -62}, 0, {     0,      0}, {0xb5, 0x65, 0x0a, 0xff}}},\n    {{{    13,     20,    -84}, 0, {     0,      0}, {0xd0, 0x39, 0x9a, 0xff}}},\n    {{{     2,     22,    -72}, 0, {     0,      0}, {0x91, 0x34, 0xe2, 0xff}}},\n    {{{     3,      9,    -79}, 0, {     0,      0}, {0x9f, 0xf6, 0xb0, 0xff}}},\n    {{{     1,      7,    -52}, 0, {     0,      0}, {0x93, 0xe5, 0x3a, 0xff}}},\n    {{{    -1,      8,    -66}, 0, {     0,      0}, {0x87, 0xdd, 0xfc, 0xff}}},\n    {{{    25,     27,    -81}, 0, {     0,      0}, {0x13, 0x53, 0xa2, 0xff}}},\n    {{{    12,      8,    -42}, 0, {     0,      0}, {0xab, 0x07, 0x5d, 0xff}}},\n    {{{    19,     32,    -52}, 0, {     0,      0}, {0xe6, 0x7b, 0x10, 0xff}}},\n    {{{    36,     28,    -72}, 0, {     0,      0}, {0x41, 0x41, 0xaa, 0xff}}},\n    {{{    40,      2,    -74}, 0, {     0,      0}, {0x44, 0xae, 0xbd, 0xff}}},\n    {{{    15,    -11,    -65}, 0, {     0,      0}, {0xde, 0x87, 0xf8, 0xff}}},\n    {{{    26,     -9,    -55}, 0, {     0,      0}, {0xeb, 0x8b, 0x2b, 0xff}}},\n};\n\n// 0x05009060 - 0x05009148\nconst Gfx peach_seg5_dl_05009060[] = {\n    gsSPLight(&peach_seg5_lights_05008F48.l, 1),\n    gsSPLight(&peach_seg5_lights_05008F48.a, 2),\n    gsSPVertex(peach_seg5_vertex_05008F60, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  7,  3,  5, 0x0),\n    gsSP2Triangles( 7,  5,  8, 0x0,  8,  5,  6, 0x0),\n    gsSP2Triangles( 4,  2,  6, 0x0,  3,  9,  4, 0x0),\n    gsSP2Triangles( 9,  2,  4, 0x0,  1,  8,  6, 0x0),\n    gsSP2Triangles( 2,  1,  6, 0x0, 10, 11,  3, 0x0),\n    gsSP2Triangles(10,  3,  7, 0x0, 11,  9,  3, 0x0),\n    gsSP2Triangles(11, 12,  9, 0x0, 12,  0,  9, 0x0),\n    gsSP2Triangles( 9,  0,  2, 0x0, 12, 13,  0, 0x0),\n    gsSP2Triangles(13, 14,  0, 0x0,  0, 14,  1, 0x0),\n    gsSP2Triangles(13, 15, 14, 0x0, 14,  8,  1, 0x0),\n    gsSP2Triangles(14,  7,  8, 0x0, 15, 10,  7, 0x0),\n    gsSP1Triangle(15,  7, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05009148 - 0x05009170\nconst Gfx peach_seg5_dl_05009148[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(peach_seg5_dl_05009060),\n    gsDPPipeSync(),\n    gsSPEndDisplayList(),\n};\n\n// 0x05009170\nstatic const Lights1 peach_seg5_lights_05009170 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05009188\nstatic const Vtx peach_seg5_vertex_05009188[] = {\n    {{{     7,    -19,    -19}, 0, {     0,      0}, {0xbe, 0xb1, 0xb8, 0xff}}},\n    {{{    44,    -29,    -34}, 0, {     0,      0}, {0xf6, 0xb3, 0x9c, 0xff}}},\n    {{{    30,    -23,    -10}, 0, {     0,      0}, {0x32, 0x8c, 0x08, 0xff}}},\n    {{{     7,    -15,     16}, 0, {     0,      0}, {0xdd, 0xb2, 0x5d, 0xff}}},\n    {{{   -10,     -7,      9}, 0, {     0,      0}, {0x99, 0xce, 0x34, 0xff}}},\n    {{{   -10,     -7,    -11}, 0, {     0,      0}, {0x95, 0xd1, 0xd1, 0xff}}},\n    {{{   -11,     12,    -11}, 0, {     0,      0}, {0x9e, 0x31, 0xc2, 0xff}}},\n    {{{    17,     -3,    -23}, 0, {     0,      0}, {0xee, 0x30, 0x8d, 0xff}}},\n    {{{    43,    -15,    -34}, 0, {     0,      0}, {0xfe, 0x2a, 0x89, 0xff}}},\n    {{{    45,     21,     19}, 0, {     0,      0}, {0x14, 0x4a, 0x64, 0xff}}},\n    {{{    47,    -17,     19}, 0, {     0,      0}, {0x1f, 0xab, 0x58, 0xff}}},\n    {{{     5,     21,     16}, 0, {     0,      0}, {0xcf, 0x54, 0x50, 0xff}}},\n    {{{   -11,     12,      9}, 0, {     0,      0}, {0x96, 0x2d, 0x34, 0xff}}},\n    {{{    26,      9,    -12}, 0, {     0,      0}, {0x3b, 0x4c, 0xaf, 0xff}}},\n    {{{     5,     24,     -6}, 0, {     0,      0}, {0xf2, 0x69, 0xbb, 0xff}}},\n    {{{    87,     10,      6}, 0, {     0,      0}, {0x6a, 0x36, 0x2a, 0xff}}},\n};\n\n// 0x05009288\nstatic const Vtx peach_seg5_vertex_05009288[] = {\n    {{{    51,    -16,      0}, 0, {     0,      0}, {0x27, 0xaf, 0xa8, 0xff}}},\n    {{{    87,    -10,      0}, 0, {     0,      0}, {0x48, 0xd3, 0xa2, 0xff}}},\n    {{{    47,    -17,     19}, 0, {     0,      0}, {0x1f, 0xab, 0x58, 0xff}}},\n    {{{    90,     -4,      5}, 0, {     0,      0}, {0x67, 0xdc, 0x3f, 0xff}}},\n    {{{    30,    -23,    -10}, 0, {     0,      0}, {0x32, 0x8c, 0x08, 0xff}}},\n    {{{    87,     10,      6}, 0, {     0,      0}, {0x6a, 0x36, 0x2a, 0xff}}},\n    {{{    52,    -19,    -32}, 0, {     0,      0}, {0x70, 0x22, 0xd1, 0xff}}},\n    {{{    26,      9,    -12}, 0, {     0,      0}, {0x3b, 0x4c, 0xaf, 0xff}}},\n    {{{    42,     26,      2}, 0, {     0,      0}, {0x1e, 0x54, 0xa6, 0xff}}},\n    {{{    50,    -30,    -32}, 0, {     0,      0}, {0x48, 0x99, 0xf4, 0xff}}},\n    {{{    44,    -29,    -34}, 0, {     0,      0}, {0xf6, 0xb3, 0x9c, 0xff}}},\n    {{{    45,     21,     19}, 0, {     0,      0}, {0x14, 0x4a, 0x64, 0xff}}},\n    {{{    82,     14,      0}, 0, {     0,      0}, {0x42, 0x5f, 0xcf, 0xff}}},\n    {{{     5,     24,     -6}, 0, {     0,      0}, {0xf2, 0x69, 0xbb, 0xff}}},\n    {{{     5,     21,     16}, 0, {     0,      0}, {0xcf, 0x54, 0x50, 0xff}}},\n    {{{    43,    -15,    -34}, 0, {     0,      0}, {0xfe, 0x2a, 0x89, 0xff}}},\n};\n\n// 0x05009388 - 0x05009500\nconst Gfx peach_seg5_dl_05009388[] = {\n    gsSPLight(&peach_seg5_lights_05009170.l, 1),\n    gsSPLight(&peach_seg5_lights_05009170.a, 2),\n    gsSPVertex(peach_seg5_vertex_05009188, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  0, 0x0,  0,  5,  6, 0x0),\n    gsSP2Triangles( 7,  8,  0, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 7,  0,  6, 0x0,  8,  1,  0, 0x0),\n    gsSP2Triangles( 9,  3, 10, 0x0, 10,  3,  2, 0x0),\n    gsSP2Triangles(11,  4,  3, 0x0,  9, 11,  3, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  4, 12,  6, 0x0),\n    gsSP2Triangles(11, 12,  4, 0x0,  6, 12, 11, 0x0),\n    gsSP2Triangles(13,  8,  7, 0x0,  6, 14,  7, 0x0),\n    gsSP2Triangles( 7, 14, 13, 0x0, 14,  6, 11, 0x0),\n    gsSP1Triangle(15,  9, 10, 0x0),\n    gsSPVertex(peach_seg5_vertex_05009288, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 2,  4,  0, 0x0,  2,  3,  5, 0x0),\n    gsSP2Triangles( 5,  3,  1, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 0,  4,  8, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 4,  9,  6, 0x0, 10,  9,  4, 0x0),\n    gsSP2Triangles( 8,  1,  0, 0x0, 11, 12,  8, 0x0),\n    gsSP2Triangles( 7, 13,  8, 0x0, 14,  8, 13, 0x0),\n    gsSP2Triangles(14, 11,  8, 0x0,  8, 12,  1, 0x0),\n    gsSP2Triangles( 5,  1, 12, 0x0, 11,  5, 12, 0x0),\n    gsSP2Triangles( 6,  9, 10, 0x0,  7,  6, 15, 0x0),\n    gsSP1Triangle( 6, 10, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05009500 - 0x05009528\nconst Gfx peach_seg5_dl_05009500[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(peach_seg5_dl_05009388),\n    gsDPPipeSync(),\n    gsSPEndDisplayList(),\n};\n\n// 0x05009528\nstatic const Lights1 peach_seg5_lights_05009528 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05009540\nstatic const Vtx peach_seg5_vertex_05009540[] = {\n    {{{   -10,     -7,     12}, 0, {     0,      0}, {0x95, 0xd1, 0x2f, 0xff}}},\n    {{{   -11,     12,     12}, 0, {     0,      0}, {0x9e, 0x31, 0x3e, 0xff}}},\n    {{{   -10,     -7,     -8}, 0, {     0,      0}, {0x99, 0xce, 0xcc, 0xff}}},\n    {{{     7,    -15,    -15}, 0, {     0,      0}, {0xdd, 0xb2, 0xa3, 0xff}}},\n    {{{     5,     21,    -15}, 0, {     0,      0}, {0xcf, 0x54, 0xb0, 0xff}}},\n    {{{     7,    -19,     20}, 0, {     0,      0}, {0xbe, 0xb1, 0x48, 0xff}}},\n    {{{   -11,     12,     -8}, 0, {     0,      0}, {0x96, 0x2d, 0xcc, 0xff}}},\n    {{{    47,    -17,    -18}, 0, {     0,      0}, {0x1f, 0xab, 0xa8, 0xff}}},\n    {{{    45,     21,    -18}, 0, {     0,      0}, {0x14, 0x4a, 0x9c, 0xff}}},\n    {{{    30,    -23,     11}, 0, {     0,      0}, {0x32, 0x8c, 0xf8, 0xff}}},\n    {{{    44,    -29,     35}, 0, {     0,      0}, {0xf6, 0xb3, 0x64, 0xff}}},\n    {{{    43,    -15,     35}, 0, {     0,      0}, {0xfe, 0x2a, 0x77, 0xff}}},\n    {{{    17,     -3,     24}, 0, {     0,      0}, {0xee, 0x30, 0x73, 0xff}}},\n    {{{    50,    -30,     33}, 0, {     0,      0}, {0x48, 0x99, 0x0c, 0xff}}},\n    {{{    52,    -19,     33}, 0, {     0,      0}, {0x70, 0x22, 0x2f, 0xff}}},\n    {{{     5,     24,      7}, 0, {     0,      0}, {0xf2, 0x69, 0x45, 0xff}}},\n};\n\n// 0x05009640\nstatic const Vtx peach_seg5_vertex_05009640[] = {\n    {{{    17,     -3,     24}, 0, {     0,      0}, {0xee, 0x30, 0x73, 0xff}}},\n    {{{    43,    -15,     35}, 0, {     0,      0}, {0xfe, 0x2a, 0x77, 0xff}}},\n    {{{    26,      9,     13}, 0, {     0,      0}, {0x3b, 0x4c, 0x51, 0xff}}},\n    {{{     5,     24,      7}, 0, {     0,      0}, {0xf2, 0x69, 0x45, 0xff}}},\n    {{{    42,     26,     -1}, 0, {     0,      0}, {0x1e, 0x54, 0x5a, 0xff}}},\n    {{{    30,    -23,     11}, 0, {     0,      0}, {0x32, 0x8c, 0xf8, 0xff}}},\n    {{{    51,    -16,      1}, 0, {     0,      0}, {0x27, 0xaf, 0x58, 0xff}}},\n    {{{    47,    -17,    -18}, 0, {     0,      0}, {0x1f, 0xab, 0xa8, 0xff}}},\n    {{{    87,    -10,      1}, 0, {     0,      0}, {0x48, 0xd3, 0x5e, 0xff}}},\n    {{{    52,    -19,     33}, 0, {     0,      0}, {0x70, 0x22, 0x2f, 0xff}}},\n    {{{    50,    -30,     33}, 0, {     0,      0}, {0x48, 0x99, 0x0c, 0xff}}},\n    {{{    44,    -29,     35}, 0, {     0,      0}, {0xf6, 0xb3, 0x64, 0xff}}},\n    {{{     5,     21,    -15}, 0, {     0,      0}, {0xcf, 0x54, 0xb0, 0xff}}},\n    {{{    82,     14,      1}, 0, {     0,      0}, {0x42, 0x5f, 0x31, 0xff}}},\n    {{{    87,     10,     -5}, 0, {     0,      0}, {0x6a, 0x36, 0xd6, 0xff}}},\n    {{{    45,     21,    -18}, 0, {     0,      0}, {0x14, 0x4a, 0x9c, 0xff}}},\n};\n\n// 0x05009740\nstatic const Vtx peach_seg5_vertex_05009740[] = {\n    {{{    47,    -17,    -18}, 0, {     0,      0}, {0x1f, 0xab, 0xa8, 0xff}}},\n    {{{    90,     -4,     -4}, 0, {     0,      0}, {0x67, 0xdc, 0xc1, 0xff}}},\n    {{{    87,    -10,      1}, 0, {     0,      0}, {0x48, 0xd3, 0x5e, 0xff}}},\n    {{{    87,     10,     -5}, 0, {     0,      0}, {0x6a, 0x36, 0xd6, 0xff}}},\n    {{{    82,     14,      1}, 0, {     0,      0}, {0x42, 0x5f, 0x31, 0xff}}},\n    {{{    42,     26,     -1}, 0, {     0,      0}, {0x1e, 0x54, 0x5a, 0xff}}},\n    {{{    45,     21,    -18}, 0, {     0,      0}, {0x14, 0x4a, 0x9c, 0xff}}},\n    {{{     5,     21,    -15}, 0, {     0,      0}, {0xcf, 0x54, 0xb0, 0xff}}},\n};\n\n// 0x050097C0 - 0x05009940\nconst Gfx peach_seg5_dl_050097C0[] = {\n    gsSPLight(&peach_seg5_lights_05009528.l, 1),\n    gsSPLight(&peach_seg5_lights_05009528.a, 2),\n    gsSPVertex(peach_seg5_vertex_05009540, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 5,  0,  2, 0x0,  2,  3,  5, 0x0),\n    gsSP2Triangles( 1,  6,  2, 0x0,  2,  6,  4, 0x0),\n    gsSP2Triangles( 7,  3,  8, 0x0,  9,  5,  3, 0x0),\n    gsSP2Triangles( 9,  3,  7, 0x0,  3,  4,  8, 0x0),\n    gsSP2Triangles( 9, 10,  5, 0x0,  1,  0,  5, 0x0),\n    gsSP2Triangles( 5, 11, 12, 0x0,  1,  5, 12, 0x0),\n    gsSP2Triangles( 5, 10, 11, 0x0,  4,  6,  1, 0x0),\n    gsSP2Triangles(10, 13, 14, 0x0,  4,  1, 15, 0x0),\n    gsSP1Triangle(12, 15,  1, 0x0),\n    gsSPVertex(peach_seg5_vertex_05009640, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  6, 0x0),\n    gsSP2Triangles( 6,  5,  7, 0x0,  6,  8,  4, 0x0),\n    gsSP2Triangles( 2,  9,  5, 0x0,  4,  2,  5, 0x0),\n    gsSP2Triangles( 9, 10,  5, 0x0,  5, 10, 11, 0x0),\n    gsSP2Triangles( 4,  3,  2, 0x0,  3,  4, 12, 0x0),\n    gsSP2Triangles( 1,  9,  2, 0x0,  1, 11,  9, 0x0),\n    gsSP2Triangles(13, 14, 15, 0x0,  7, 15, 14, 0x0),\n    gsSPVertex(peach_seg5_vertex_05009740, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  2,  3, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 2,  1,  3, 0x0,  5,  4,  6, 0x0),\n    gsSP1Triangle( 5,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05009940 - 0x05009968\nconst Gfx peach_seg5_dl_05009940[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(peach_seg5_dl_050097C0),\n    gsDPPipeSync(),\n    gsSPEndDisplayList(),\n};\n\n// 0x05009968\nstatic const Lights1 peach_seg5_lights_05009968 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05009980\nstatic const Vtx peach_seg5_vertex_05009980[] = {\n    {{{   324,    171,    145}, 0, {  1954,   1582}, {0xe1, 0x5d, 0x4f, 0xff}}},\n    {{{   322,    239,     -3}, 0, {  2536,   1574}, {0xe1, 0x79, 0xef, 0xff}}},\n    {{{   184,    205,     -3}, 0, {  2538,    886}, {0xde, 0x79, 0x0d, 0xff}}},\n    {{{   179,    141,    121}, 0, {  1948,    862}, {0xde, 0x4a, 0x60, 0xff}}},\n    {{{   179,    141,   -140}, 0, {  3160,    860}, {0xdb, 0x56, 0xab, 0xff}}},\n    {{{   110,    182,     -1}, 0, {  2534,    516}, {0xd0, 0x75, 0x03, 0xff}}},\n    {{{    52,    106,     99}, 0, {  1914,    230}, {0xcd, 0x4a, 0x59, 0xff}}},\n    {{{   328,      9,    204}, 0, {  1280,   1604}, {0xe5, 0x00, 0x7b, 0xff}}},\n    {{{   189,      5,    173}, 0, {  1268,    912}, {0xe1, 0x00, 0x7a, 0xff}}},\n    {{{   124,      3,    154}, 0, {  1262,    586}, {0xda, 0x00, 0x79, 0xff}}},\n    {{{   324,    171,   -166}, 0, {  3150,   1582}, {0xdf, 0x58, 0xac, 0xff}}},\n    {{{   328,      9,   -245}, 0, {  3772,   1604}, {0xdf, 0x00, 0x86, 0xff}}},\n    {{{    52,    106,   -109}, 0, {  3178,    228}, {0xc2, 0x4c, 0xb1, 0xff}}},\n    {{{   124,      3,   -182}, 0, {  3788,    584}, {0xcd, 0xff, 0x8d, 0xff}}},\n    {{{   189,      5,   -207}, 0, {  3782,    912}, {0xd9, 0xff, 0x88, 0xff}}},\n};\n\n// 0x05009A70\nstatic const Vtx peach_seg5_vertex_05009A70[] = {\n    {{{   333,   -153,    145}, 0, {   580,   1626}, {0xe7, 0xa1, 0x4f, 0xff}}},\n    {{{   328,      9,    204}, 0, {  1280,   1604}, {0xe5, 0x00, 0x7b, 0xff}}},\n    {{{   186,   -131,    121}, 0, {   570,    898}, {0xe3, 0xb4, 0x60, 0xff}}},\n    {{{   328,      9,   -245}, 0, {  3772,   1604}, {0xdf, 0x00, 0x86, 0xff}}},\n    {{{   332,   -153,   -166}, 0, {  4408,   1624}, {0xe4, 0xa6, 0xac, 0xff}}},\n    {{{   186,   -131,   -140}, 0, {  4414,    896}, {0xe0, 0xa8, 0xab, 0xff}}},\n    {{{   189,      5,   -207}, 0, {  3782,    912}, {0xd9, 0xff, 0x88, 0xff}}},\n    {{{   124,      3,   -182}, 0, {  3788,    584}, {0xcd, 0xff, 0x8d, 0xff}}},\n    {{{   334,   -220,     -3}, 0, {  5064,   1634}, {0xe9, 0x85, 0xef, 0xff}}},\n    {{{    59,   -104,   -109}, 0, {  4420,    262}, {0xc6, 0xb1, 0xb1, 0xff}}},\n    {{{   119,   -176,     -1}, 0, {  5066,    564}, {0xd6, 0x89, 0x02, 0xff}}},\n    {{{   194,   -195,     -3}, 0, {  5062,    938}, {0xe6, 0x85, 0x0d, 0xff}}},\n    {{{   333,   -153,    145}, 0, {  5690,   1626}, {0xe7, 0xa1, 0x4f, 0xff}}},\n    {{{   186,   -131,    121}, 0, {  5680,    898}, {0xe3, 0xb4, 0x60, 0xff}}},\n    {{{    59,   -104,    100}, 0, {  5698,    262}, {0xd1, 0xb4, 0x59, 0xff}}},\n};\n\n// 0x05009B60\nstatic const Vtx peach_seg5_vertex_05009B60[] = {\n    {{{   -10,      0,   -101}, 0, {  3806,    -88}, {0xaf, 0xfe, 0x9f, 0xff}}},\n    {{{   -44,      0,    -67}, 0, {  3818,   -254}, {0x8b, 0xfd, 0xd1, 0xff}}},\n    {{{   -45,     44,    -48}, 0, {  3206,   -260}, {0x8d, 0x1d, 0xd5, 0xff}}},\n    {{{   186,   -131,    121}, 0, {   570,    898}, {0xe3, 0xb4, 0x60, 0xff}}},\n    {{{   189,      5,    173}, 0, {  1268,    912}, {0xe1, 0x00, 0x7a, 0xff}}},\n    {{{   124,      3,    154}, 0, {  1262,    586}, {0xda, 0x00, 0x79, 0xff}}},\n    {{{   328,      9,    204}, 0, {  1280,   1604}, {0xe5, 0x00, 0x7b, 0xff}}},\n    {{{    59,   -104,    100}, 0, {   588,    262}, {0xd1, 0xb4, 0x59, 0xff}}},\n    {{{    -8,    -81,    -67}, 0, {  4516,    -78}, {0xa9, 0xbb, 0xc4, 0xff}}},\n    {{{   -42,    -46,    -48}, 0, {  4422,   -248}, {0x8f, 0xde, 0xd4, 0xff}}},\n    {{{   -42,    -46,     42}, 0, {  5672,   -248}, {0x87, 0xe7, 0x19, 0xff}}},\n    {{{   -42,    -65,     -2}, 0, {  5034,   -246}, {0x90, 0xc6, 0xf7, 0xff}}},\n    {{{    -7,   -114,      7}, 0, {  5124,    -74}, {0xb0, 0x9f, 0x06, 0xff}}},\n    {{{   -45,     63,     -2}, 0, {  2568,   -264}, {0x86, 0x22, 0xfa, 0xff}}},\n    {{{   -12,     81,    -67}, 0, {  3092,    -98}, {0xa6, 0x41, 0xc4, 0xff}}},\n    {{{   -13,    114,      7}, 0, {  2476,   -104}, {0xab, 0x5d, 0x06, 0xff}}},\n};\n\n// 0x05009C60\nstatic const Vtx peach_seg5_vertex_05009C60[] = {\n    {{{   -44,      0,     61}, 0, {  1226,   -254}, {0x89, 0xfd, 0x2a, 0xff}}},\n    {{{   -45,     44,     42}, 0, {  1904,   -260}, {0x90, 0x25, 0x2d, 0xff}}},\n    {{{   -45,     63,     -2}, 0, {  2568,   -264}, {0x86, 0x22, 0xfa, 0xff}}},\n    {{{   -13,    114,      7}, 0, {  2476,   -104}, {0xab, 0x5d, 0x06, 0xff}}},\n    {{{   -42,    -46,     42}, 0, {   562,   -248}, {0x87, 0xe7, 0x19, 0xff}}},\n    {{{   -10,      0,    100}, 0, {  1240,    -88}, {0xb3, 0xff, 0x64, 0xff}}},\n    {{{    -8,    -81,     75}, 0, {   572,    -78}, {0xad, 0xc1, 0x48, 0xff}}},\n    {{{    -7,   -114,      7}, 0, {    14,    -74}, {0xb0, 0x9f, 0x06, 0xff}}},\n    {{{   124,      3,    154}, 0, {  1262,    586}, {0xda, 0x00, 0x79, 0xff}}},\n    {{{    59,   -104,    100}, 0, {   588,    262}, {0xd1, 0xb4, 0x59, 0xff}}},\n    {{{    52,    106,     99}, 0, {  1914,    230}, {0xcd, 0x4a, 0x59, 0xff}}},\n    {{{   119,   -176,     -1}, 0, {  5066,    564}, {0xd6, 0x89, 0x02, 0xff}}},\n    {{{    -7,   -114,      7}, 0, {  5124,    -74}, {0xb0, 0x9f, 0x06, 0xff}}},\n    {{{    59,   -104,   -109}, 0, {  4420,    262}, {0xc6, 0xb1, 0xb1, 0xff}}},\n    {{{    59,   -104,    100}, 0, {  5698,    262}, {0xd1, 0xb4, 0x59, 0xff}}},\n};\n\n// 0x05009D50\nstatic const Vtx peach_seg5_vertex_05009D50[] = {\n    {{{   124,      3,   -182}, 0, {  3788,    584}, {0xcd, 0xff, 0x8d, 0xff}}},\n    {{{   -10,      0,   -101}, 0, {  3806,    -88}, {0xaf, 0xfe, 0x9f, 0xff}}},\n    {{{    52,    106,   -109}, 0, {  3178,    228}, {0xc2, 0x4c, 0xb1, 0xff}}},\n    {{{    59,   -104,   -109}, 0, {  4420,    262}, {0xc6, 0xb1, 0xb1, 0xff}}},\n    {{{   -13,    114,      7}, 0, {  2476,   -104}, {0xab, 0x5d, 0x06, 0xff}}},\n    {{{   110,    182,     -1}, 0, {  2534,    516}, {0xd0, 0x75, 0x03, 0xff}}},\n    {{{    52,    106,     99}, 0, {  1914,    230}, {0xcd, 0x4a, 0x59, 0xff}}},\n    {{{   -12,     81,     75}, 0, {  1914,    -98}, {0xab, 0x3b, 0x48, 0xff}}},\n    {{{   -10,      0,    100}, 0, {  1240,    -88}, {0xb3, 0xff, 0x64, 0xff}}},\n    {{{   -45,     44,     42}, 0, {  1904,   -260}, {0x90, 0x25, 0x2d, 0xff}}},\n    {{{    -7,   -114,      7}, 0, {  5124,    -74}, {0xb0, 0x9f, 0x06, 0xff}}},\n    {{{    -8,    -81,    -67}, 0, {  4516,    -78}, {0xa9, 0xbb, 0xc4, 0xff}}},\n    {{{   -12,     81,    -67}, 0, {  3092,    -98}, {0xa6, 0x41, 0xc4, 0xff}}},\n};\n\n// 0x05009E20 - 0x0500A0A8\nconst Gfx peach_seg5_dl_05009E20[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, peach_seg5_texture_05004028),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&peach_seg5_lights_05009968.l, 1),\n    gsSPLight(&peach_seg5_lights_05009968.a, 2),\n    gsSPVertex(peach_seg5_vertex_05009980, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 4,  2,  1, 0x0,  5,  2,  4, 0x0),\n    gsSP2Triangles( 3,  2,  5, 0x0,  5,  6,  3, 0x0),\n    gsSP2Triangles( 7,  0,  3, 0x0,  3,  8,  7, 0x0),\n    gsSP2Triangles( 3,  6,  9, 0x0,  9,  8,  3, 0x0),\n    gsSP2Triangles( 1, 10,  4, 0x0, 10, 11,  4, 0x0),\n    gsSP2Triangles( 4, 12,  5, 0x0, 13, 12,  4, 0x0),\n    gsSP2Triangles(11, 14,  4, 0x0,  4, 14, 13, 0x0),\n    gsSPVertex(peach_seg5_vertex_05009A70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  7,  6,  5, 0x0),\n    gsSP2Triangles( 4,  8,  5, 0x0,  5,  9,  7, 0x0),\n    gsSP2Triangles(10,  9,  5, 0x0,  5, 11, 10, 0x0),\n    gsSP2Triangles( 8, 11,  5, 0x0,  8, 12, 11, 0x0),\n    gsSP2Triangles(10, 11, 13, 0x0, 12, 13, 11, 0x0),\n    gsSP1Triangle(13, 14, 10, 0x0),\n    gsSPVertex(peach_seg5_vertex_05009B60, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  4,  3, 0x0,  5,  7,  3, 0x0),\n    gsSP2Triangles( 8,  9,  0, 0x0,  1,  9, 10, 0x0),\n    gsSP2Triangles( 9, 11, 10, 0x0,  9,  1,  0, 0x0),\n    gsSP2Triangles(11,  9,  8, 0x0, 12, 11,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  2,  1, 10, 0x0),\n    gsSP2Triangles(13,  2, 10, 0x0,  0,  2, 14, 0x0),\n    gsSP2Triangles(14,  2, 13, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(peach_seg5_vertex_05009C60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 2,  4,  0, 0x0,  5,  4,  6, 0x0),\n    gsSP2Triangles( 6,  4,  7, 0x0,  5,  0,  4, 0x0),\n    gsSP2Triangles( 1,  0,  5, 0x0,  8,  5,  9, 0x0),\n    gsSP2Triangles(10,  5,  8, 0x0,  5,  6,  9, 0x0),\n    gsSP2Triangles( 9,  6,  7, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 12, 11, 0x0),\n    gsSPVertex(peach_seg5_vertex_05009D50, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  5,  4,  6, 0x0),\n    gsSP2Triangles( 4,  7,  6, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 4,  9,  7, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles(10, 11,  3, 0x0,  3, 11,  1, 0x0),\n    gsSP2Triangles( 1, 12,  2, 0x0,  2, 12,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500A0A8 - 0x0500A128\nconst Gfx peach_seg5_dl_0500A0A8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(peach_seg5_dl_05009E20),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsDPSetAlphaCompare(G_AC_NONE),\n    gsSPEndDisplayList(),\n};\n\n#ifndef VERSION_JP\n// 0x0500A188 - 0x0500A210\nconst Gfx peach_seg5_us_dl_0500A188[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(peach_seg5_dl_05009E20),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsDPSetRenderMode(G_RM_AA_ZB_XLU_SURF, G_RM_NOOP2),\n    gsDPSetAlphaCompare(G_AC_NONE),\n    gsSPEndDisplayList(),\n};\n#endif\n"
  },
  {
    "path": "actors/pebble/model.inc.c",
    "content": "// Pebble\n\n// 0x0301C2C0\nstatic const Vtx pebble_seg3_vertex_0301C2C0[] = {\n    {{{   -15,    -15,      0}, 0, {     0,    992}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    15,    -15,      0}, 0, {   992,    992}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    15,     15,      0}, 0, {   992,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -15,     15,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0301C300\nALIGNED8 static const Texture pebble_seg3_texture_0301C300[] = {\n#include \"actors/pebble/pebble.rgba16.inc.c\"\n};\n\n// 0x0301CB00 - 0x0301CB98\nconst Gfx pebble_seg3_dl_0301CB00[] = {\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsDPLoadTextureBlock(pebble_seg3_texture_0301C300, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 5, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsSPVertex(pebble_seg3_vertex_0301C2C0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/penguin/anims/anim_050079E4.inc.c",
    "content": "// 0x05007708\nstatic const s16 penguin_seg5_animvalue_05007708[] = {\n    0x0000, 0x007B, 0x008E, 0x00B8, 0x00E2, 0x00F5, 0x00F0, 0x00E5,\n    0x00D4, 0x00C0, 0x00AA, 0x0092, 0x007C, 0x0067, 0x004C, 0x0038,\n    0x003A, 0x0045, 0x004B, 0x0047, 0x003E, 0x0038, 0x003B, 0x003E,\n    0x003B, 0x0037, 0x1326, 0x13F0, 0x161B, 0x195E, 0x1D6C, 0x21FA,\n    0x26BD, 0x2B6B, 0x3038, 0x362C, 0x3CA4, 0x42E3, 0x47CC, 0x4798,\n    0x440A, 0x4206, 0x405C, 0x3F8E, 0x3FB9, 0x406A, 0x414E, 0x4214,\n    0x4268, 0x4268, 0x4268, 0x0000, 0x00AC, 0x0290, 0x057D, 0x0944,\n    0x0DB4, 0x129D, 0x17D1, 0x1D20, 0x2259, 0x274E, 0x2BCE, 0x2FAB,\n    0x31ED, 0x32DE, 0x342C, 0x373C, 0x3A2A, 0x3A2D, 0x383C, 0x36FF,\n    0x36FF, 0x36FF, 0x36FF, 0x36FF, 0x29F6, 0x2A05, 0x2A2A, 0x2A5F,\n    0x2A9B, 0x2AD8, 0x2B0D, 0x2B32, 0x2B40, 0x2B2F, 0x2AF8, 0x2A92,\n    0x29F6, 0x277B, 0x2311, 0x1F18, 0x1C7C, 0x1AA5, 0x19AB, 0x1961,\n    0x1961, 0x1961, 0x1961, 0x1961, 0x1961, 0xBDF6, 0xBDF9, 0xBE02,\n    0xBE0F, 0xBE1D, 0xBE2C, 0xBE39, 0xBE42, 0xBE45, 0xBE41, 0xBE34,\n    0xBE1B, 0xBDF6, 0xBD03, 0xBB9A, 0xBB5B, 0xBE7B, 0xC23D, 0xC1C1,\n    0xBE95, 0xBCA8, 0xBCA8, 0xBCA8, 0xBCA8, 0xBCA8, 0x0003, 0xFF3A,\n    0xFD02, 0xF996, 0xF531, 0xF00D, 0xEA64, 0xE470, 0xDE6B, 0xD890,\n    0xD318, 0xCE3E, 0xCA3C, 0xC922, 0xCA9F, 0xCB5E, 0xC925, 0xC694,\n    0xC70B, 0xC974, 0xCAE7, 0xCAE7, 0xCAE7, 0xCAE7, 0xCAE7, 0xD4D1,\n    0xD4C2, 0xD49C, 0xD465, 0xD427, 0xD3E9, 0xD3B2, 0xD38C, 0xD37D,\n    0xD38F, 0xD3C8, 0xD430, 0xD4D1, 0xD760, 0xDBED, 0xDFFF, 0xE296,\n    0xE463, 0xE57A, 0xE5F9, 0xE617, 0xE617, 0xE617, 0xE617, 0xE617,\n    0xBDED, 0xBDF2, 0xBE01, 0xBE16, 0xBE2E, 0xBE45, 0xBE5A, 0xBE69,\n    0xBE6E, 0xBE68, 0xBE52, 0xBE2A, 0xBDED, 0xBC7C, 0xBA48, 0xB9A9,\n    0xBD97, 0xC272, 0xC1DF, 0xBDDF, 0xBB70, 0xBB70, 0xBB70, 0xBB70,\n    0xBB70, 0x8001, 0x8001, 0x0BD0, 0x1193, 0x1E99, 0x2C81, 0x34E7,\n    0x3792, 0x38C5, 0x38DA, 0x382D, 0x3719, 0x35F9, 0x3529, 0x34F7,\n    0x34F7, 0x34F7, 0x34F7, 0x34F7, 0x34F7, 0x34F7, 0x34F7, 0x34F7,\n    0x34F7, 0x34F7, 0x34F7, 0x34F7, 0x8BD2, 0x916A, 0x9E16, 0xABAA,\n    0xB3FA, 0xB6D3, 0xB852, 0xB8C5, 0xB87D, 0xB7C9, 0xB6F8, 0xB659,\n    0xB632, 0xB632, 0xB632, 0xB632, 0xB632, 0xB632, 0xB632, 0xB632,\n    0xB632, 0xB632, 0xB632, 0xB632, 0xB632, 0x27AC, 0x2736, 0x25F0,\n    0x23FF, 0x218B, 0x1EBB, 0x1BB5, 0x18A2, 0x15A7, 0x12EC, 0x1099,\n    0x0ED3, 0x0E0E, 0x118A, 0x16DC, 0x19D2, 0x17C3, 0x135C, 0x1063,\n    0x1046, 0x1148, 0x1275, 0x12D8, 0x108B, 0x0E69, 0xC003, 0x4004,\n    0xC003, 0xC001, 0x4004, 0xC001, 0x3FFD, 0x3FFA, 0x3FFD, 0x4000,\n    0x3FFB, 0x4000, 0x3FFA, 0x3FFF, 0x3FFA, 0x0000,\n};\n\n// 0x05007954\nstatic const u16 penguin_seg5_animindex_05007954[] = {\n    0x0001, 0x0000, 0x0019, 0x0001, 0x0001, 0x0000, 0x0019, 0x001A, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0122, 0x0001, 0x0123, 0x0001, 0x0124,\n    0x0019, 0x0033, 0x0019, 0x004C, 0x0019, 0x0065,\n    0x0001, 0x011F, 0x0001, 0x0120, 0x0001, 0x0121,\n    0x0019, 0x007E, 0x0019, 0x0097, 0x0019, 0x00B0,\n    0x0001, 0x011C, 0x0001, 0x011D, 0x0001, 0x011E,\n    0x0001, 0x00C9, 0x0001, 0x00CA, 0x0019, 0x00CB,\n    0x0001, 0x0119, 0x0001, 0x011A, 0x0001, 0x011B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0019, 0x00E4,\n    0x0001, 0x0116, 0x0001, 0x0117, 0x0001, 0x0118,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0019, 0x00FD,\n};\n\n// 0x050079E4\nstatic const struct Animation penguin_seg5_anim_050079E4 = {\n    1,\n    0,\n    0,\n    0,\n    0x19,\n    ANIMINDEX_NUMPARTS(penguin_seg5_animindex_05007954),\n    penguin_seg5_animvalue_05007708,\n    penguin_seg5_animindex_05007954,\n    0,\n};\n"
  },
  {
    "path": "actors/penguin/anims/anim_05007DCC.inc.c",
    "content": "// 0x050079FC\nstatic const s16 penguin_seg5_animvalue_050079FC[] = {\n    0x0000, 0x0037, 0x0046, 0x0057, 0x0068, 0x0078, 0x0087, 0x0091,\n    0x0098, 0x0096, 0x008C, 0x007E, 0x006F, 0x0062, 0x0056, 0x0049,\n    0x0041, 0x0040, 0x0043, 0x0045, 0x0046, 0x0047, 0x0047, 0x0047,\n    0x0046, 0x0046, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0004,\n    0x000C, 0x0011, 0x0010, 0x000B, 0x0006, 0x0000, 0xFFFC, 0xFFFC,\n    0xFFFD, 0xFFFF, 0x0000, 0x4268, 0x4041, 0x3A62, 0x31B2, 0x2713,\n    0x1B6C, 0x0FA1, 0x0496, 0xFB32, 0xF456, 0xF1D7, 0xF39D, 0xF7B4,\n    0xFC25, 0x040B, 0x0A01, 0x08D9, 0x05E8, 0x0238, 0xFED2, 0xFCBE,\n    0xFC9E, 0xFDBF, 0xFF2F, 0xFFFE, 0x36FF, 0x2C2E, 0x1695, 0x067A,\n    0xFEF3, 0xF8DD, 0xF533, 0xF4EF, 0xF90C, 0x07AF, 0x1F54, 0x356D,\n    0x3F6A, 0x3E8C, 0x3B63, 0x3663, 0x2FFD, 0x28A4, 0x20C9, 0x18DF,\n    0x1158, 0x0AA5, 0x053B, 0x0189, 0x0004, 0x1961, 0x1812, 0x153E,\n    0x128C, 0x0FBF, 0x0C45, 0x0940, 0x07CF, 0x0914, 0x1026, 0x1BDD,\n    0x2701, 0x2C56, 0x2C74, 0x2B8D, 0x29D2, 0x2774, 0x24A4, 0x2191,\n    0x1E6D, 0x1B69, 0x18B5, 0x1682, 0x1500, 0x1460, 0xBCA8, 0xB8C3,\n    0xB038, 0xA7BB, 0x9EA8, 0x9376, 0x8982, 0x842A, 0x86CC, 0x9A0D,\n    0xBAB2, 0xDA3E, 0xEA38, 0xEC31, 0xEBAD, 0xE91E, 0xE4F1, 0xDF98,\n    0xD982, 0xD31F, 0xCCDF, 0xC731, 0xC285, 0xBF4B, 0xBDF3, 0xCAE7,\n    0xD562, 0xEA5D, 0xFA29, 0x0219, 0x0901, 0x0D73, 0x0DFF, 0x0938,\n    0xF7E4, 0xDC00, 0xC1F1, 0xB620, 0xB715, 0xBAB9, 0xC087, 0xC7FA,\n    0xD08B, 0xD9B5, 0xE2F2, 0xEBBC, 0xF38F, 0xF9E3, 0xFE34, 0xFFFC,\n    0xE617, 0xE87D, 0xED4C, 0xF0EC, 0xF304, 0xF525, 0xF694, 0xF695,\n    0xF46C, 0xED5B, 0xE246, 0xD7E9, 0xD2FF, 0xD2F0, 0xD3DA, 0xD58F,\n    0xD7E1, 0xDAA0, 0xDD9D, 0xE0A9, 0xE397, 0xE635, 0xE857, 0xE9CC,\n    0xEA67, 0xBB70, 0xB68F, 0xAC17, 0xA249, 0x9896, 0x8CC0, 0x8282,\n    0x7D94, 0x81BC, 0x9908, 0xBFC1, 0xE4EA, 0xF785, 0xF97F, 0xF871,\n    0xF4E6, 0xEF67, 0xE87F, 0xE0B8, 0xD89C, 0xD0B5, 0xC98D, 0xC3AE,\n    0xBFA2, 0xBDF3, 0x8001, 0x7FF4, 0x7FD7, 0x7FAC, 0x7F74, 0x7F34,\n    0x7EEF, 0x7EA8, 0x7E63, 0x7E23, 0x7DEB, 0x7DBE, 0x7DA1, 0x7DA1,\n    0x7DC6, 0x7E02, 0x7E4C, 0x7E97, 0x7F0C, 0x7FA3, 0x800D, 0x8029,\n    0x8023, 0x800F, 0x8002, 0x8001, 0x7FC1, 0x7F15, 0x7E0F, 0x7CC3,\n    0x7B45, 0x79A9, 0x7803, 0x7667, 0x74E9, 0x739D, 0x7298, 0x71ED,\n    0x720E, 0x731E, 0x74B9, 0x7679, 0x77FB, 0x7981, 0x7B3D, 0x7CAF,\n    0x7DD5, 0x7EE0, 0x7FA6, 0x7FFE, 0x34F7, 0x33F6, 0x3127, 0x2CD9,\n    0x2757, 0x20F0, 0x19F1, 0x12A8, 0x0B62, 0x046D, 0xFE17, 0xF8AB,\n    0xF479, 0xF275, 0xF2C9, 0xF496, 0xF6FA, 0xF916, 0xFC24, 0x0040,\n    0x02D9, 0x02FC, 0x01FF, 0x00B9, 0x0002, 0x0000, 0x0003, 0x000C,\n    0x001A, 0x002C, 0x0041, 0x0057, 0x006E, 0x0084, 0x0098, 0x00AA,\n    0x00B8, 0x00C1, 0x00AD, 0x007E, 0x005C, 0x006E, 0x0073, 0x0029,\n    0xFFC5, 0xFF89, 0xFF91, 0xFFBA, 0xFFE8, 0x0000, 0x0000, 0xFFD0,\n    0xFF4A, 0xFE7B, 0xFD73, 0xFC3F, 0xFAEE, 0xF98F, 0xF82F, 0xF6DE,\n    0xF5A9, 0xF49E, 0xF3CD, 0xF3CF, 0xF4B9, 0xF5D1, 0xF748, 0xF8F4,\n    0xFA6F, 0xFBF5, 0xFD35, 0xFE32, 0xFF14, 0xFFB8, 0x0000, 0xB632,\n    0xB512, 0xB1EC, 0xAD14, 0xA6E1, 0x9FA6, 0x97B8, 0x8F6E, 0x871B,\n    0x7F13, 0x77AF, 0x7143, 0x6C22, 0x6C0E, 0x70F1, 0x755D, 0x773F,\n    0x792C, 0x7C94, 0x8083, 0x82EA, 0x8309, 0x8207, 0x80BD, 0x8004,\n    0x0E69, 0x101E, 0x14BA, 0x1B78, 0x2396, 0x2C4E, 0x34DE, 0x3C80,\n    0x4272, 0x45EE, 0x4796, 0x489B, 0x4911, 0x490A, 0x489C, 0x47D9,\n    0x46D6, 0x45A6, 0x445C, 0x430E, 0x41CD, 0x40AF, 0x3FC7, 0x3F28,\n    0x3EE6, 0xC003, 0x4004, 0xC003, 0xC001, 0x4004, 0xC001, 0x3FFD,\n    0x3FFA, 0x3FFD, 0x4000, 0x3FFB, 0x4000, 0x3FFA, 0x3FFF, 0x3FFA,\n};\n\n// 0x05007D3C\nstatic const u16 penguin_seg5_animindex_05007D3C[] = {\n    0x0001, 0x0000, 0x0019, 0x0001, 0x0019, 0x001A, 0x0019, 0x0033, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x019D, 0x0001, 0x019E, 0x0001, 0x019F,\n    0x0019, 0x004C, 0x0019, 0x0065, 0x0019, 0x007E,\n    0x0001, 0x019A, 0x0001, 0x019B, 0x0001, 0x019C,\n    0x0019, 0x0097, 0x0019, 0x00B0, 0x0019, 0x00C9,\n    0x0001, 0x0197, 0x0001, 0x0198, 0x0001, 0x0199,\n    0x0019, 0x00E2, 0x0019, 0x00FB, 0x0019, 0x0114,\n    0x0001, 0x0194, 0x0001, 0x0195, 0x0001, 0x0196,\n    0x0019, 0x012D, 0x0019, 0x0146, 0x0019, 0x015F,\n    0x0001, 0x0191, 0x0001, 0x0192, 0x0001, 0x0193,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0019, 0x0178,\n};\n\n// 0x05007DCC\nstatic const struct Animation penguin_seg5_anim_05007DCC = {\n    1,\n    0,\n    0,\n    0,\n    0x19,\n    ANIMINDEX_NUMPARTS(penguin_seg5_animindex_05007D3C),\n    penguin_seg5_animvalue_050079FC,\n    penguin_seg5_animindex_05007D3C,\n    0,\n};\n"
  },
  {
    "path": "actors/penguin/anims/anim_050087C0.inc.c",
    "content": "// 0x05007DE4\nstatic const s16 penguin_seg5_animvalue_05007DE4[] = {\n    0x0000, 0x0046, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF,\n    0xFFFE, 0xFFFE, 0xFFFD, 0xFFFC, 0xFFFC, 0xFFFB, 0xFFFB, 0xFFFB,\n    0xFFFB, 0xFFFC, 0xFFFE, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000,\n    0xFFFF, 0xFFFD, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFD, 0xFFFD,\n    0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0002, 0x0005,\n    0x0008, 0x000D, 0x0011, 0x0017, 0x001C, 0x0022, 0x0027, 0x002D,\n    0x0032, 0x0036, 0x003A, 0x003D, 0x003F, 0x0040, 0x0040, 0x003E,\n    0x003B, 0x0036, 0x0030, 0x0027, 0x001C, 0x000F, 0x0000, 0xFFCF,\n    0xFF6A, 0xFEEB, 0xFE67, 0xFDF7, 0xFD88, 0xFD08, 0xFC8A, 0xFC23,\n    0xFBE8, 0xFBEE, 0xFC5A, 0xFD26, 0xFE1D, 0xFF0C, 0xFFC2, 0x0008,\n    0xFFBB, 0xFEF9, 0xFDFC, 0xFCFF, 0xFC3C, 0xFBEE, 0xFC02, 0xFC3A,\n    0xFC90, 0xFCFB, 0xFD75, 0xFDF6, 0xFE78, 0xFEF2, 0xFF5D, 0xFFB3,\n    0xFFEC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xFFFE, 0xFFFA, 0xFFF6, 0xFFF1, 0xFFEB, 0xFFE5, 0xFFDE,\n    0xFFD8, 0xFFD2, 0xFFCC, 0xFFC7, 0xFFC2, 0xFFBE, 0xFFBC, 0xFFBA,\n    0xFFBB, 0xFFBD, 0xFFC0, 0xFFC6, 0xFFCF, 0xFFD9, 0xFFE7, 0xFFF7,\n    0x0009, 0x0080, 0x016F, 0x025F, 0x02DC, 0x0271, 0x0081, 0xFD5B,\n    0xF9E8, 0xF715, 0xF5CD, 0xF64A, 0xF7DB, 0xFA0D, 0xFC6A, 0xFE7F,\n    0xFFD8, 0x0000, 0xFE4B, 0xFAEC, 0xF6C2, 0xF2AA, 0xEF82, 0xEE28,\n    0xEE19, 0xEE3B, 0xEE88, 0xEEFC, 0xEF93, 0xF047, 0xF113, 0xF1F4,\n    0xF2E4, 0xF3DF, 0xF4DF, 0xF5E1, 0xF6DF, 0xF7D5, 0xF8BD, 0xF994,\n    0xFA55, 0xFAFA, 0xFB7F, 0xFBE0, 0xFC12, 0xFC12, 0xFBE9, 0xFB9F,\n    0xFB3C, 0xFAC6, 0xFA48, 0xF9C7, 0xF94D, 0xF8E1, 0xF88B, 0xF852,\n    0xF840, 0xF85B, 0xF911, 0xFA86, 0xFC56, 0xFE1D, 0xFF77, 0x0000,\n    0x145F, 0x145F, 0x147C, 0x14D1, 0x1558, 0x160E, 0x16EC, 0x17EF,\n    0x1911, 0x1A4D, 0x1B9F, 0x1D02, 0x1E70, 0x1FE6, 0x215E, 0x22D4,\n    0x2442, 0x25A4, 0x26F5, 0x2830, 0x2950, 0x2A51, 0x2B2D, 0x2BE0,\n    0x2C65, 0x2CB7, 0x2CD1, 0x2A54, 0x2460, 0x1D2E, 0x16F8, 0x13F6,\n    0x1572, 0x19EF, 0x1F80, 0x243A, 0x262F, 0x2503, 0x221C, 0x1E35,\n    0x1A08, 0x1650, 0x13C6, 0x1326, 0x1571, 0x1A52, 0x207B, 0x269D,\n    0x2B6A, 0x2D95, 0x2DE0, 0x2DF1, 0x2DCB, 0x2D74, 0x2CF1, 0x2C47,\n    0x2B7B, 0x2A92, 0x2992, 0x287E, 0x275C, 0x2631, 0x2503, 0x23D5,\n    0x22AE, 0x2191, 0x2085, 0x1F8E, 0x1EB0, 0x1DF2, 0x1D4A, 0x1CAB,\n    0x1C13, 0x1B82, 0x1AF7, 0x1A72, 0x19F1, 0x1974, 0x18F9, 0x1881,\n    0x1809, 0x1791, 0x1719, 0x16A0, 0x1620, 0x159D, 0x1523, 0x14BE,\n    0x1478, 0x145F, 0xBDF0, 0xBDF0, 0xBDF0, 0xBDF0, 0xBDF0, 0xBDF0,\n    0xBDF0, 0xBDF0, 0xBDF0, 0xBDF0, 0xBDF1, 0xBDF1, 0xBDF1, 0xBDF1,\n    0xBDF2, 0xBDF2, 0xBDF2, 0xBDF2, 0xBDF2, 0xBDF3, 0xBDF3, 0xBDF3,\n    0xBDF3, 0xBDF3, 0xBDF3, 0xBDF3, 0xBDF3, 0xBE26, 0xBE8B, 0xBED7,\n    0xBEBC, 0xBDEE, 0xBBD4, 0xB8A0, 0xB538, 0xB285, 0xB16B, 0xB229,\n    0xB410, 0xB6A3, 0xB966, 0xBBDB, 0xBD87, 0xBDEC, 0xBC58, 0xB904,\n    0xB4D6, 0xB0B3, 0xAD81, 0xAC26, 0xAC1C, 0xAC44, 0xAC97, 0xAD12,\n    0xADAF, 0xAE6A, 0xAF3E, 0xB025, 0xB11D, 0xB21E, 0xB325, 0xB42E,\n    0xB532, 0xB62D, 0xB71B, 0xB7F6, 0xB8BB, 0xB963, 0xB9EA, 0xBA4C,\n    0xBA7D, 0xBA7B, 0xBA4F, 0xB9FF, 0xB995, 0xB919, 0xB892, 0xB809,\n    0xB786, 0xB711, 0xB6B2, 0xB672, 0xB658, 0xB66D, 0xB71B, 0xB888,\n    0xBA51, 0xBC12, 0xBD68, 0xBDF0, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0001, 0x0001, 0x0002, 0x0002, 0x0003, 0x0003,\n    0x0004, 0x0005, 0x0005, 0x0006, 0x0007, 0x0007, 0x0008, 0x0008,\n    0x0009, 0x0009, 0x000A, 0x000A, 0x000A, 0x000A, 0x000A, 0xFF9C,\n    0xFEBE, 0xFE16, 0xFE4A, 0x0000, 0x0483, 0x0B64, 0x12B3, 0x1882,\n    0x1ADF, 0x195B, 0x1574, 0x1022, 0x0A5C, 0x051A, 0x0153, 0x0000,\n    0x025B, 0x07E7, 0x0F08, 0x1620, 0x1B90, 0x1DBC, 0x1D26, 0x1B88,\n    0x1917, 0x1607, 0x128D, 0x0EDE, 0x0B2F, 0x07B5, 0x04A5, 0x0233,\n    0x0095, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0001, 0x0001, 0x0001, 0x0001, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0002, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0xEA69, 0xEA69,\n    0xEA4C, 0xE9FB, 0xE979, 0xE8CB, 0xE7F6, 0xE6FE, 0xE5E9, 0xE4BA,\n    0xE376, 0xE223, 0xE0C4, 0xDF5F, 0xDDF8, 0xDC94, 0xDB37, 0xD9E6,\n    0xD8A6, 0xD77B, 0xD66A, 0xD578, 0xD4AA, 0xD403, 0xD38A, 0xD342,\n    0xD32F, 0xD5DA, 0xDC1E, 0xE37D, 0xE97D, 0xEBA1, 0xE80D, 0xE069,\n    0xD780, 0xD01B, 0xCD05, 0xCE98, 0xD2AE, 0xD855, 0xDE9A, 0xE48A,\n    0xE933, 0xEBA1, 0xEB0C, 0xE80A, 0xE3B9, 0xDF35, 0xDB9D, 0xDA0D,\n    0xD9E9, 0xD9D4, 0xD9CC, 0xD9D3, 0xD9E6, 0xDA05, 0xDA30, 0xDA65,\n    0xDAA5, 0xDAED, 0xDB3F, 0xDB99, 0xDBFA, 0xDC62, 0xDCCF, 0xDD43,\n    0xDDBA, 0xDE36, 0xDEB5, 0xDF37, 0xDFBA, 0xE03F, 0xE0C4, 0xE149,\n    0xE1CE, 0xE251, 0xE2D1, 0xE34F, 0xE3CA, 0xE440, 0xE4B1, 0xE51D,\n    0xE5A7, 0xE666, 0xE744, 0xE82B, 0xE905, 0xE9BC, 0xEA3A, 0xEA69,\n    0xBDEF, 0xBDEF, 0xBDEF, 0xBDEF, 0xBDEF, 0xBDEF, 0xBDEE, 0xBDEE,\n    0xBDEE, 0xBDEE, 0xBDED, 0xBDED, 0xBDED, 0xBDEC, 0xBDEC, 0xBDEC,\n    0xBDEB, 0xBDEB, 0xBDEB, 0xBDEA, 0xBDEA, 0xBDEA, 0xBDEA, 0xBDEA,\n    0xBDE9, 0xBDE9, 0xBDE9, 0xBE5C, 0xBF42, 0xBFEE, 0xBFB7, 0xBDEE,\n    0xB93E, 0xB219, 0xAA82, 0xA47A, 0xA206, 0xA3A0, 0xA7C0, 0xAD5C,\n    0xB36B, 0xB8E4, 0xBCBD, 0xBDEE, 0xBB10, 0xB4A3, 0xAC79, 0xA464,\n    0x9E35, 0x9BBE, 0x9BD1, 0x9C07, 0x9C5F, 0x9CD7, 0x9D6D, 0x9E1F,\n    0x9EEB, 0x9FD0, 0xA0CA, 0xA1D9, 0xA2FA, 0xA42C, 0xA56C, 0xA6B8,\n    0xA810, 0xA970, 0xAAD7, 0xAC43, 0xADB2, 0xAF22, 0xB091, 0xB1FD,\n    0xB365, 0xB4C5, 0xB61E, 0xB76C, 0xB8AD, 0xB9E0, 0xBB03, 0xBC14,\n    0xBD10, 0xBDF7, 0xBE9E, 0xBEEC, 0xBEF5, 0xBECE, 0xBE8B, 0xBE42,\n    0xBE07, 0xBDEF, 0x8001, 0x8001, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0025,\n    0x0085, 0x0106, 0x0190, 0x0209, 0x0289, 0x0321, 0x03AC, 0x0409,\n    0x0413, 0x03B9, 0x0317, 0x024D, 0x017A, 0x00BD, 0x0034, 0x0000,\n    0x004D, 0x010E, 0x0209, 0x0304, 0x03C5, 0x0413, 0x03FE, 0x03C5,\n    0x0370, 0x0304, 0x028A, 0x0209, 0x0188, 0x010E, 0x00A2, 0x004D,\n    0x0014, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8029, 0x808C, 0x8110, 0x8199, 0x820B, 0x8279, 0x82F6,\n    0x8366, 0x83AC, 0x83AC, 0x8357, 0x82C2, 0x820A, 0x814B, 0x80A2,\n    0x802A, 0x8001, 0x8054, 0x8117, 0x8211, 0x830A, 0x83C8, 0x8415,\n    0x8400, 0x83C7, 0x8372, 0x8306, 0x828C, 0x820B, 0x818A, 0x8110,\n    0x80A4, 0x804F, 0x8016, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x0000, 0x0033, 0x00C4, 0x01A2, 0x02BF, 0x040A, 0x0574, 0x06EE,\n    0x0868, 0x09D3, 0x0B20, 0x0C3E, 0x0D1F, 0x0DB3, 0x0E05, 0x0E2D,\n    0x0E2F, 0x0E12, 0x0DD9, 0x0D8A, 0x0D2A, 0x0CBE, 0x0C4B, 0x0BD5,\n    0x0B62, 0x0AF6, 0x0A97, 0x0A47, 0x09FF, 0x09BC, 0x0977, 0x092A,\n    0x08D0, 0x0864, 0x07DF, 0x073D, 0x0678, 0x0589, 0x046B, 0x0320,\n    0x01AD, 0x001B, 0xFE72, 0xFCB7, 0xFAF3, 0xF92C, 0xF769, 0xF5B3,\n    0xF410, 0xF287, 0xF120, 0xEFE2, 0xEED5, 0xEDFE, 0xED67, 0xED15,\n    0xECFB, 0xED04, 0xED2E, 0xED76, 0xEDDA, 0xEE58, 0xEEEC, 0xEF96,\n    0xF051, 0xF11D, 0xF1F6, 0xF2DA, 0xF3C6, 0xF4B9, 0xF5B0, 0xF6A8,\n    0xF7A0, 0xF894, 0xF982, 0xFA68, 0xFB44, 0xFC12, 0xFCD2, 0xFD7F,\n    0xFE19, 0xFE9A, 0xFF02, 0xFF55, 0xFF94, 0xFFC2, 0xFFE1, 0xFFF4,\n    0xFFFE, 0x0000, 0x0000, 0xFFF4, 0xFFD0, 0xFF99, 0xFF54, 0xFF04,\n    0xFEAE, 0xFE55, 0xFDFF, 0xFDAF, 0xFD6A, 0xFD33, 0xFD0F, 0xFD02,\n    0xFD0A, 0xFD22, 0xFD46, 0xFD76, 0xFDB0, 0xFDF1, 0xFE38, 0xFE84,\n    0xFED2, 0xFF21, 0xFF6F, 0xFFBA, 0x0000, 0x004B, 0x00A3, 0x0104,\n    0x016A, 0x01D0, 0x0232, 0x028D, 0x02DB, 0x0318, 0x0341, 0x0351,\n    0x034F, 0x0344, 0x0332, 0x0318, 0x02F8, 0x02D3, 0x02A8, 0x0279,\n    0x0246, 0x0210, 0x01D7, 0x019D, 0x0161, 0x0126, 0x00EA, 0x00AF,\n    0x0076, 0x003F, 0x0007, 0xFFCB, 0xFF89, 0xFF43, 0xFEF9, 0xFEAD,\n    0xFE5F, 0xFE10, 0xFDC0, 0xFD6F, 0xFD1F, 0xFCD1, 0xFC84, 0xFC39,\n    0xFBF1, 0xFBAE, 0xFB6E, 0xFB33, 0xFAFE, 0xFACF, 0xFAA6, 0xFA86,\n    0xFA6D, 0xFA5D, 0xFA56, 0xFA86, 0xFB0B, 0xFBCC, 0xFCB1, 0xFDA2,\n    0xFE87, 0xFF49, 0xFFCF, 0x0000, 0x3EE5, 0x3F0D, 0x3F7B, 0x4024,\n    0x40F9, 0x41EF, 0x42F7, 0x4407, 0x450F, 0x4605, 0x46DA, 0x4783,\n    0x47F1, 0x4819, 0x47FF, 0x47B4, 0x4740, 0x46A7, 0x45F0, 0x4522,\n    0x4442, 0x4356, 0x4265, 0x4175, 0x408B, 0x3FAF, 0x3EE5, 0x3E19,\n    0x3D35, 0x3C41, 0x3B47, 0x3A4D, 0x395C, 0x387C, 0x37B6, 0x3711,\n    0x3695, 0x364C, 0x362A, 0x361E, 0x3627, 0x3641, 0x366B, 0x36A2,\n    0x36E3, 0x372C, 0x377A, 0x37CC, 0x381F, 0x3871, 0x38BE, 0x3905,\n    0x3943, 0x3976, 0x399B, 0x39B1, 0x39B9, 0x39BA, 0x39B5, 0x39A9,\n    0x3998, 0x3982, 0x3969, 0x394C, 0x392D, 0x390D, 0x38EC, 0x38CA,\n    0x38AA, 0x388B, 0x386E, 0x3854, 0x383E, 0x382C, 0x381F, 0x3818,\n    0x3818, 0x3820, 0x382F, 0x3847, 0x386A, 0x38C1, 0x396A, 0x3A4C,\n    0x3B4E, 0x3C58, 0x3D51, 0x3E21, 0x3EB0, 0x3EE5, 0xC003, 0x4004,\n    0xC003, 0xC001, 0x4004, 0xC001, 0x3FFD, 0x3FFA, 0x3FFD, 0x4000,\n    0x3FFB, 0x4000, 0x3FFA, 0x3FFF, 0x3FFA, 0x0000,\n};\n\n// 0x05008730\nstatic const u16 penguin_seg5_animindex_05008730[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x005A, 0x0002, 0x005A, 0x005C, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x04A2, 0x0001, 0x04A3, 0x0001, 0x04A4,\n    0x005A, 0x00B6, 0x005A, 0x0110, 0x005A, 0x016A,\n    0x0001, 0x049F, 0x0001, 0x04A0, 0x0001, 0x04A1,\n    0x005A, 0x01C4, 0x005A, 0x021E, 0x005A, 0x0278,\n    0x0001, 0x049C, 0x0001, 0x049D, 0x0001, 0x049E,\n    0x0001, 0x02D2, 0x0001, 0x02D3, 0x005A, 0x02D4,\n    0x0001, 0x0499, 0x0001, 0x049A, 0x0001, 0x049B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005A, 0x032E,\n    0x0001, 0x0496, 0x0001, 0x0497, 0x0001, 0x0498,\n    0x005A, 0x0388, 0x005A, 0x03E2, 0x005A, 0x043C,\n};\n\n// 0x050087C0\nstatic const struct Animation penguin_seg5_anim_050087C0 = {\n    0,\n    0,\n    0,\n    0,\n    0x5A,\n    ANIMINDEX_NUMPARTS(penguin_seg5_animindex_05008730),\n    penguin_seg5_animvalue_05007DE4,\n    penguin_seg5_animindex_05008730,\n    0,\n};\n"
  },
  {
    "path": "actors/penguin/anims/anim_05008B5C.inc.c",
    "content": "// 0x050087D8\nstatic const s16 penguin_seg5_animvalue_050087D8[] = {\n    0x0000, 0x0046, 0x0005, 0x000C, 0x001B, 0x002B, 0x0031, 0x002D,\n    0x0023, 0x0016, 0x0009, 0x0000, 0xFFF9, 0xFFF2, 0xFFEC, 0xFFE8,\n    0xFFE7, 0xFFEA, 0xFFF2, 0xFFFB, 0x0001, 0x0005, 0xF156, 0xF29E,\n    0xF5C2, 0xF9B3, 0xFD64, 0x012B, 0x058E, 0x09BC, 0x0CE5, 0x0E38,\n    0x0D2A, 0x0A45, 0x065C, 0x0241, 0xFEC7, 0xFB88, 0xF7F7, 0xF4AE,\n    0xF245, 0xF156, 0x0005, 0xFF93, 0xFE97, 0xFD9B, 0xFD28, 0xFD59,\n    0xFDDA, 0xFE8B, 0xFF4C, 0x0000, 0x00C5, 0x01B1, 0x0293, 0x033E,\n    0x0382, 0x0325, 0x0248, 0x013F, 0x0062, 0x0005, 0x0005, 0x0005,\n    0x0006, 0x0006, 0x0007, 0x0007, 0x0006, 0x0006, 0x0005, 0x0005,\n    0x0004, 0x0004, 0x0003, 0x0003, 0x0003, 0x0003, 0x0004, 0x0004,\n    0x0004, 0x0005, 0x14C7, 0x16B0, 0x1AE3, 0x1F17, 0x2100, 0x1FC7,\n    0x1CD8, 0x194D, 0x163E, 0x14C7, 0x1589, 0x17C9, 0x1A92, 0x1CF1,\n    0x1DF2, 0x1CFE, 0x1AB8, 0x1801, 0x15BB, 0x14C7, 0xBDEE, 0xBDEE,\n    0xBDEE, 0xBDEF, 0xBDEF, 0xBDEF, 0xBDEF, 0xBDEE, 0xBDEE, 0xBDEE,\n    0xBDEE, 0xBDEE, 0xBDEE, 0xBDEE, 0xBDEE, 0xBDEE, 0xBDEE, 0xBDEE,\n    0xBDEE, 0xBDEE, 0x0003, 0x0003, 0x0001, 0x0000, 0x0000, 0x0000,\n    0x0001, 0x0002, 0x0003, 0x0003, 0x0003, 0x0002, 0x0001, 0x0000,\n    0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0003, 0xEE13, 0xEBD9,\n    0xE6F2, 0xE20B, 0xDFD1, 0xE146, 0xE4C2, 0xE8F1, 0xEC7D, 0xEE13,\n    0xECDC, 0xE9BB, 0xE5F2, 0xE2C1, 0xE169, 0xE2BA, 0xE5DE, 0xE99E,\n    0xECC2, 0xEE13, 0xBDEF, 0xBDEF, 0xBDEF, 0xBDEF, 0xBDEF, 0xBDEF,\n    0xBDEF, 0xBDEF, 0xBDEF, 0xBDEF, 0xBDEF, 0xBDEF, 0xBDEE, 0xBDEE,\n    0xBDEE, 0xBDEE, 0xBDEE, 0xBDEF, 0xBDEF, 0xBDEF, 0x8001, 0x7FE2,\n    0x7F9D, 0x7F4C, 0x7F07, 0x7EEB, 0x7F16, 0x7F75, 0x7FD3, 0x8001,\n    0x7F9C, 0x7EB1, 0x7D98, 0x7CAD, 0x7C4A, 0x7CAD, 0x7D98, 0x7EB1,\n    0x7F9C, 0x8001, 0x86EF, 0x8604, 0x83B0, 0x8092, 0x7D45, 0x7A6F,\n    0x77A9, 0x74AE, 0x724D, 0x7154, 0x721C, 0x741B, 0x76CB, 0x79A7,\n    0x7C29, 0x7EA9, 0x8184, 0x842E, 0x8629, 0x86EF, 0x0000, 0xFF30,\n    0xFD40, 0xFAF0, 0xF900, 0xF830, 0xF969, 0xFC18, 0xFEC8, 0x0000,\n    0xFFF6, 0xFFDC, 0xFFBD, 0xFFA3, 0xFF98, 0xFFA3, 0xFFBD, 0xFFDC,\n    0xFFF6, 0x0000, 0x0000, 0x0079, 0x0185, 0x0291, 0x030B, 0x02C2,\n    0x0212, 0x0137, 0x0073, 0x0003, 0x0002, 0x0046, 0x00A8, 0x00FF,\n    0x0125, 0x0106, 0x00BD, 0x0067, 0x001E, 0x0000, 0xEEE4, 0xEFBE,\n    0xF1DA, 0xF490, 0xF737, 0xFA16, 0xFD7D, 0x00C6, 0x0352, 0x047B,\n    0x03E1, 0x01F0, 0xFF3C, 0xFC54, 0xF9CA, 0xF746, 0xF466, 0xF1B1,\n    0xEFAE, 0xEEE4, 0x8001, 0x7FE3, 0x7FA7, 0x7F6B, 0x7F53, 0x7F86,\n    0x7FF1, 0x805A, 0x807E, 0x8026, 0x7EEF, 0x7D07, 0x7AF9, 0x7954,\n    0x78A5, 0x7966, 0x7B39, 0x7D66, 0x7F3A, 0x8001, 0x06E9, 0x0627,\n    0x044F, 0x0209, 0xFFFD, 0xFDFF, 0xFBBD, 0xF99E, 0xF80C, 0xF76F,\n    0xF813, 0xF9B3, 0xFBDD, 0xFE1B, 0xFFFD, 0x01B2, 0x0389, 0x0537,\n    0x0670, 0x06E9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3EE5, 0x3DF1,\n    0x3BD7, 0x39BD, 0x38C9, 0x3968, 0x3AE4, 0x3CAE, 0x3E33, 0x3EE5,\n    0x3E6A, 0x3D22, 0x3B93, 0x3A41, 0x39B3, 0x3A3E, 0x3B87, 0x3D11,\n    0x3E5B, 0x3EE5, 0xC003, 0x4004, 0xC003, 0xC001, 0x4004, 0xC001,\n    0x3FFD, 0x3FFA, 0x3FFD, 0x4000, 0x3FFB, 0x4000, 0x3FFA, 0x3FFF,\n    0x3FFA, 0x0000,\n};\n\n// 0x05008ACC\nstatic const u16 penguin_seg5_animindex_05008ACC[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0014, 0x0002, 0x0014, 0x0016, 0x0014, 0x002A,\n    0x0001, 0x0176, 0x0001, 0x0177, 0x0001, 0x0178,\n    0x0014, 0x003E, 0x0014, 0x0052, 0x0014, 0x0066,\n    0x0001, 0x0173, 0x0001, 0x0174, 0x0001, 0x0175,\n    0x0014, 0x007A, 0x0014, 0x008E, 0x0014, 0x00A2,\n    0x0001, 0x0170, 0x0001, 0x0171, 0x0001, 0x0172,\n    0x0014, 0x00B6, 0x0014, 0x00CA, 0x0014, 0x00DE,\n    0x0001, 0x016D, 0x0001, 0x016E, 0x0001, 0x016F,\n    0x0014, 0x00F2, 0x0014, 0x0106, 0x0014, 0x011A,\n    0x0001, 0x016A, 0x0001, 0x016B, 0x0001, 0x016C,\n    0x0014, 0x012E, 0x0014, 0x0142, 0x0014, 0x0156,\n};\n\n// 0x05008B5C\nstatic const struct Animation penguin_seg5_anim_05008B5C = {\n    0,\n    0,\n    5,\n    0,\n    0x14,\n    ANIMINDEX_NUMPARTS(penguin_seg5_animindex_05008ACC),\n    penguin_seg5_animvalue_050087D8,\n    penguin_seg5_animindex_05008ACC,\n    0,\n};\n"
  },
  {
    "path": "actors/penguin/anims/data.inc.c",
    "content": "#include \"anim_050079E4.inc.c\"\n#include \"anim_05007DCC.inc.c\"\n#include \"anim_050087C0.inc.c\"\n#include \"anim_05008B5C.inc.c\"\n"
  },
  {
    "path": "actors/penguin/anims/table.inc.c",
    "content": "// 0x05008B74\nconst struct Animation *const penguin_seg5_anims_05008B74[] = {\n    &penguin_seg5_anim_05008B5C,\n    &penguin_seg5_anim_050079E4,\n    &penguin_seg5_anim_05007DCC,\n    &penguin_seg5_anim_050087C0,\n    &penguin_seg5_anim_05008B5C, // duplicate pointer?\n};\n"
  },
  {
    "path": "actors/penguin/collision.inc.c",
    "content": "// Penguin\n\n// 0x05008B88 - 0x05008C00\nconst Collision penguin_seg5_collision_05008B88[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(12, 66, -12),\n    COL_VERTEX(12, 0, -12),\n    COL_VERTEX(12, 0, 12),\n    COL_VERTEX(12, 66, 12),\n    COL_VERTEX(-12, 0, -12),\n    COL_VERTEX(-12, 66, -12),\n    COL_VERTEX(-12, 0, 12),\n    COL_VERTEX(-12, 66, 12),\n\n    COL_TRI_INIT(SURFACE_NO_CAM_COLLISION, 10),\n    COL_TRI(2, 1, 0),\n    COL_TRI(3, 2, 0),\n    COL_TRI(0, 1, 4),\n    COL_TRI(5, 0, 4),\n    COL_TRI(4, 6, 5),\n    COL_TRI(6, 7, 5),\n    COL_TRI(3, 0, 5),\n    COL_TRI(7, 3, 5),\n    COL_TRI(2, 3, 6),\n    COL_TRI(3, 7, 6),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "actors/penguin/geo.inc.c",
    "content": "// 0x0C000104\nconst GeoLayout penguin_geo[] = {\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    GEO_SHADOW(SHADOW_CIRCLE_9_VERTS, 0x96, 60),\n#else\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 100),\n#endif\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 40, penguin_seg5_dl_05007540),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, -51, 84, -13, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, penguin_seg5_dl_05007198),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 51, 84, -13, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, penguin_seg5_dl_050071E8),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, -38, -54, -13, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, penguin_seg5_dl_05007238),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 38, -54, -13, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, penguin_seg5_dl_050072C8),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 111, -19, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_SWITCH_CASE(5, geo_switch_tuxie_mother_eyes),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, penguin_seg5_dl_05006428),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, penguin_seg5_dl_05006458),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, penguin_seg5_dl_05006488),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, penguin_seg5_dl_050064B8),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, penguin_seg5_dl_050064E8), // unused, seen in Shoshinkai 1995 footage\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/penguin/model.inc.c",
    "content": "// Penguin\n\n// 0x05002D80\nstatic const Lights1 penguin_seg5_lights_05002D80 = gdSPDefLights1(\n    0x06, 0x06, 0x39,\n    0x0f, 0x0f, 0x90, 0x28, 0x28, 0x28\n);\n\n// 0x05002D98\nstatic const Lights1 penguin_seg5_lights_05002D98 = gdSPDefLights1(\n    0x52, 0x34, 0x0a,\n    0xce, 0x84, 0x1a, 0x28, 0x28, 0x28\n);\n\n// 0x05002DB0\nstatic const Lights1 penguin_seg5_lights_05002DB0 = gdSPDefLights1(\n    0x59, 0x42, 0x14,\n    0xdf, 0xa7, 0x34, 0x28, 0x28, 0x28\n);\n\n// 0x05002DC8\nstatic const Lights1 penguin_seg5_lights_05002DC8 = gdSPDefLights1(\n    0x66, 0x66, 0x65,\n    0xff, 0xff, 0xfd, 0x28, 0x28, 0x28\n);\n\n// 0x05002DE0\nALIGNED8 static const Texture penguin_seg5_texture_05002DE0[] = {\n#include \"actors/penguin/penguin_eye_open.rgba16.inc.c\"\n};\n\n// 0x050035E0\nALIGNED8 static const Texture penguin_seg5_texture_050035E0[] = {\n#include \"actors/penguin/penguin_eye_half_closed.rgba16.inc.c\"\n};\n\n// 0x05003DE0\nALIGNED8 static const Texture penguin_seg5_texture_05003DE0[] = {\n#include \"actors/penguin/penguin_eye_closed.rgba16.inc.c\"\n};\n\n// 0x050045E0\nALIGNED8 static const Texture penguin_seg5_texture_050045E0[] = {\n#include \"actors/penguin/penguin_eye_angry.rgba16.inc.c\"\n};\n\n// 0x05004DE0\nALIGNED8 static const Texture penguin_seg5_texture_05004DE0[] = {\n#include \"actors/penguin/penguin_eye_angry_unused.rgba16.inc.c\"\n};\n\n// 0x050055E0\nALIGNED8 static const Texture penguin_seg5_texture_050055E0[] = {\n#include \"actors/penguin/penguin_beak.rgba16.inc.c\"\n};\n\n// 0x05005DE0\nstatic const Lights1 penguin_seg5_lights_05005DE0 = gdSPDefLights1(\n    0x04, 0x0f, 0x41,\n    0x0b, 0x26, 0xa4, 0x28, 0x28, 0x28\n);\n\n// 0x05005DF8\nstatic const Lights1 penguin_seg5_lights_05005DF8 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05005E10\nstatic const Lights1 penguin_seg5_lights_05005E10 = gdSPDefLights1(\n    0x60, 0x55, 0x0b,\n    0xf2, 0xd5, 0x1c, 0x28, 0x28, 0x28\n);\n\n// 0x05005E28\nstatic const Vtx penguin_seg5_vertex_05005E28[] = {\n    {{{    27,     97,     36}, 0, {   484,   1164}, {0xac, 0x4a, 0x3a, 0xff}}},\n    {{{    79,     90,     42}, 0, {   696,   -154}, {0x32, 0x64, 0x3b, 0xff}}},\n    {{{    57,    105,      0}, 0, {  -440,    404}, {0x31, 0x75, 0x00, 0xff}}},\n    {{{    41,     76,     60}, 0, {  1270,    804}, {0xcc, 0x25, 0x6d, 0xff}}},\n    {{{    41,     76,    -59}, 0, {  1262,    804}, {0xcc, 0x25, 0x93, 0xff}}},\n    {{{    27,     97,    -35}, 0, {   476,   1164}, {0xbc, 0x50, 0xba, 0xff}}},\n    {{{    79,     90,    -41}, 0, {   688,   -154}, {0x32, 0x64, 0xc5, 0xff}}},\n    {{{    57,    105,      0}, 0, {  -448,    404}, {0x31, 0x75, 0x00, 0xff}}},\n};\n\n// 0x05005EA8\nstatic const Vtx penguin_seg5_vertex_05005EA8[] = {\n    {{{    26,    154,      0}, 0, {  -468,   1134}, {0x2c, 0x77, 0xff, 0xff}}},\n    {{{    27,     97,     36}, 0, {  1974,   1130}, {0xac, 0x4a, 0x3a, 0xff}}},\n    {{{    57,    105,      0}, 0, {  1030,   -328}, {0x31, 0x75, 0x00, 0xff}}},\n    {{{    27,     97,    -35}, 0, {  1974,   1130}, {0xbc, 0x50, 0xba, 0xff}}},\n};\n\n// 0x05005EE8\nstatic const Vtx penguin_seg5_vertex_05005EE8[] = {\n    {{{    93,     17,     53}, 0, {     0,      0}, {0x5a, 0xea, 0x56, 0xff}}},\n    {{{   110,     55,     26}, 0, {     0,      0}, {0x76, 0x20, 0x1f, 0xff}}},\n    {{{    92,     64,     53}, 0, {     0,      0}, {0x3d, 0x1e, 0x6a, 0xff}}},\n    {{{    79,     90,     42}, 0, {     0,      0}, {0x32, 0x64, 0x3b, 0xff}}},\n    {{{   110,     55,    -25}, 0, {     0,      0}, {0x76, 0x20, 0xe1, 0xff}}},\n    {{{   105,     -5,      0}, 0, {     0,      0}, {0x7b, 0xe5, 0x00, 0xff}}},\n    {{{    82,     99,      0}, 0, {     0,      0}, {0x4e, 0x63, 0x00, 0xff}}},\n    {{{    92,     64,    -52}, 0, {     0,      0}, {0x3d, 0x1e, 0x96, 0xff}}},\n    {{{    79,     90,    -41}, 0, {     0,      0}, {0x32, 0x64, 0xc5, 0xff}}},\n    {{{    93,     17,    -52}, 0, {     0,      0}, {0x5a, 0xeb, 0xaa, 0xff}}},\n    {{{    57,    105,      0}, 0, {     0,      0}, {0x31, 0x75, 0x00, 0xff}}},\n    {{{    41,     76,    -59}, 0, {     0,      0}, {0xcc, 0x25, 0x93, 0xff}}},\n    {{{    41,     76,     60}, 0, {     0,      0}, {0xcc, 0x25, 0x6d, 0xff}}},\n    {{{    43,      4,    -61}, 0, {     0,      0}, {0xf0, 0xe3, 0x86, 0xff}}},\n    {{{    18,     10,     37}, 0, {     0,      0}, {0x89, 0xf9, 0x29, 0xff}}},\n    {{{    43,      4,     62}, 0, {     0,      0}, {0xf0, 0xe3, 0x7a, 0xff}}},\n};\n\n// 0x05005FE8\nstatic const Vtx penguin_seg5_vertex_05005FE8[] = {\n    {{{    18,     10,    -36}, 0, {     0,      0}, {0x8c, 0xf9, 0xcf, 0xff}}},\n    {{{    28,    -96,      0}, 0, {     0,      0}, {0xc0, 0x93, 0x00, 0xff}}},\n    {{{    18,     10,     37}, 0, {     0,      0}, {0x89, 0xf9, 0x29, 0xff}}},\n    {{{    16,     58,    -19}, 0, {     0,      0}, {0x84, 0x0d, 0xea, 0xff}}},\n    {{{    43,      4,     62}, 0, {     0,      0}, {0xf0, 0xe3, 0x7a, 0xff}}},\n    {{{    41,     76,     60}, 0, {     0,      0}, {0xcc, 0x25, 0x6d, 0xff}}},\n    {{{    16,     58,     20}, 0, {     0,      0}, {0x87, 0x0c, 0x21, 0xff}}},\n    {{{    27,     97,     36}, 0, {     0,      0}, {0xac, 0x4a, 0x3a, 0xff}}},\n    {{{    27,     97,    -35}, 0, {     0,      0}, {0xbc, 0x50, 0xba, 0xff}}},\n    {{{    41,     76,    -59}, 0, {     0,      0}, {0xcc, 0x25, 0x93, 0xff}}},\n    {{{    92,     64,     53}, 0, {     0,      0}, {0x3d, 0x1e, 0x6a, 0xff}}},\n    {{{    43,      4,    -61}, 0, {     0,      0}, {0xf0, 0xe3, 0x86, 0xff}}},\n    {{{    91,    -35,    -28}, 0, {     0,      0}, {0x58, 0xbd, 0xc4, 0xff}}},\n    {{{    92,     64,    -52}, 0, {     0,      0}, {0x3d, 0x1e, 0x96, 0xff}}},\n    {{{    93,     17,    -52}, 0, {     0,      0}, {0x5a, 0xeb, 0xaa, 0xff}}},\n    {{{   105,     -5,      0}, 0, {     0,      0}, {0x7b, 0xe5, 0x00, 0xff}}},\n};\n\n// 0x050060E8\nstatic const Vtx penguin_seg5_vertex_050060E8[] = {\n    {{{    28,    -96,      0}, 0, {     0,      0}, {0xc0, 0x93, 0x00, 0xff}}},\n    {{{    91,    -35,    -28}, 0, {     0,      0}, {0x58, 0xbd, 0xc4, 0xff}}},\n    {{{    91,    -35,     29}, 0, {     0,      0}, {0x58, 0xbc, 0x3b, 0xff}}},\n    {{{   105,     -5,      0}, 0, {     0,      0}, {0x7b, 0xe5, 0x00, 0xff}}},\n    {{{    43,      4,     62}, 0, {     0,      0}, {0xf0, 0xe3, 0x7a, 0xff}}},\n    {{{    93,     17,     53}, 0, {     0,      0}, {0x5a, 0xea, 0x56, 0xff}}},\n    {{{    92,     64,     53}, 0, {     0,      0}, {0x3d, 0x1e, 0x6a, 0xff}}},\n};\n\n// 0x05006158\nstatic const Vtx penguin_seg5_vertex_05006158[] = {\n    {{{    27,     97,     36}, 0, {     0,      0}, {0xac, 0x4a, 0x3a, 0xff}}},\n    {{{    26,    154,      0}, 0, {     0,      0}, {0x2c, 0x77, 0xff, 0xff}}},\n    {{{    27,     97,    -35}, 0, {     0,      0}, {0xbc, 0x50, 0xba, 0xff}}},\n};\n\n// 0x05006188 - 0x050061C8\nconst Gfx penguin_seg5_dl_05006188[] = {\n    gsSPLight(&penguin_seg5_lights_05005DE0.l, 1),\n    gsSPLight(&penguin_seg5_lights_05005DE0.a, 2),\n    gsSPVertex(penguin_seg5_vertex_05005E28, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  6,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050061C8 - 0x050061F8\nconst Gfx penguin_seg5_dl_050061C8[] = {\n    gsSPLight(&penguin_seg5_lights_05005DF8.l, 1),\n    gsSPLight(&penguin_seg5_lights_05005DF8.a, 2),\n    gsSPVertex(penguin_seg5_vertex_05005EA8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050061F8 - 0x05006380\nconst Gfx penguin_seg5_dl_050061F8[] = {\n    gsSPLight(&penguin_seg5_lights_05005DE0.l, 1),\n    gsSPLight(&penguin_seg5_lights_05005DE0.a, 2),\n    gsSPVertex(penguin_seg5_vertex_05005EE8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  1,  5, 0x0,  1,  4,  6, 0x0),\n    gsSP2Triangles( 6,  3,  1, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 7,  8,  4, 0x0,  4,  5,  9, 0x0),\n    gsSP2Triangles( 4,  8,  6, 0x0,  9,  7,  4, 0x0),\n    gsSP2Triangles( 6,  8, 10, 0x0, 10,  3,  6, 0x0),\n    gsSP2Triangles(11,  8,  7, 0x0, 12,  2,  3, 0x0),\n    gsSP2Triangles(13, 11,  7, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(penguin_seg5_vertex_05005FE8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  5,  6,  2, 0x0),\n    gsSP2Triangles( 2,  6,  3, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  8,  9,  3, 0x0),\n    gsSP2Triangles( 7,  8,  3, 0x0,  0,  3,  9, 0x0),\n    gsSP2Triangles( 5,  4, 10, 0x0, 11,  0,  9, 0x0),\n    gsSP2Triangles(11,  1,  0, 0x0, 12,  1, 11, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0, 11, 14, 12, 0x0),\n    gsSP1Triangle(15, 12, 14, 0x0),\n    gsSPVertex(penguin_seg5_vertex_050060E8, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  0,  2, 0x0,  5,  2,  3, 0x0),\n    gsSP2Triangles( 2,  5,  4, 0x0,  4,  5,  6, 0x0),\n    gsSPLight(&penguin_seg5_lights_05005E10.l, 1),\n    gsSPLight(&penguin_seg5_lights_05005E10.a, 2),\n    gsSPVertex(penguin_seg5_vertex_05006158, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05006380 - 0x050063C8\nconst Gfx penguin_seg5_dl_05006380[] = {\n    gsDPPipeSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBA, G_CC_BLENDRGBA),\n    gsSPEndDisplayList(),\n};\n\n// 0x050063C8 - 0x05006428\nconst Gfx penguin_seg5_dl_050063C8[] = {\n    gsSPDisplayList(penguin_seg5_dl_05006188),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, penguin_seg5_texture_050055E0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(penguin_seg5_dl_050061C8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(penguin_seg5_dl_050061F8),\n    gsSPEndDisplayList(),\n};\n\n// 0x05006428 - 0x05006458\nconst Gfx penguin_seg5_dl_05006428[] = {\n    gsSPDisplayList(penguin_seg5_dl_05006380),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, penguin_seg5_texture_05002DE0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(penguin_seg5_dl_050063C8),\n    gsSPEndDisplayList(),\n};\n\n// 0x05006458 - 0x05006488\nconst Gfx penguin_seg5_dl_05006458[] = {\n    gsSPDisplayList(penguin_seg5_dl_05006380),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, penguin_seg5_texture_050035E0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(penguin_seg5_dl_050063C8),\n    gsSPEndDisplayList(),\n};\n\n// 0x05006488 - 0x050064B8\nconst Gfx penguin_seg5_dl_05006488[] = {\n    gsSPDisplayList(penguin_seg5_dl_05006380),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, penguin_seg5_texture_05003DE0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(penguin_seg5_dl_050063C8),\n    gsSPEndDisplayList(),\n};\n\n// 0x050064B8 - 0x050064E8\nconst Gfx penguin_seg5_dl_050064B8[] = {\n    gsSPDisplayList(penguin_seg5_dl_05006380),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, penguin_seg5_texture_050045E0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(penguin_seg5_dl_050063C8),\n    gsSPEndDisplayList(),\n};\n\n// 0x050064E8 - 0x05006518\nconst Gfx penguin_seg5_dl_050064E8[] = {\n    gsSPDisplayList(penguin_seg5_dl_05006380),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, penguin_seg5_texture_05004DE0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(penguin_seg5_dl_050063C8),\n    gsSPEndDisplayList(),\n};\n\n// 0x05006518\nstatic const Vtx penguin_seg5_vertex_05006518[] = {\n    {{{   -13,     -3,     -4}, 0, {     0,      0}, {0x01, 0x00, 0x7f, 0x00}}},\n    {{{   110,    -22,     -9}, 0, {     0,      0}, {0x02, 0xef, 0x7d, 0x00}}},\n    {{{   136,     16,     -8}, 0, {     0,      0}, {0x01, 0x0d, 0x7e, 0x00}}},\n    {{{     8,     25,    -12}, 0, {     0,      0}, {0xf0, 0x04, 0x83, 0xff}}},\n    {{{   136,     16,     -8}, 0, {     0,      0}, {0x04, 0x01, 0x82, 0xff}}},\n    {{{   110,    -22,     -9}, 0, {     0,      0}, {0x03, 0x00, 0x81, 0xff}}},\n    {{{    -7,    -33,    -11}, 0, {     0,      0}, {0xe5, 0x05, 0x85, 0xff}}},\n    {{{   -13,     -3,     -4}, 0, {     0,      0}, {0xc9, 0x0d, 0x8f, 0xff}}},\n    {{{     8,     25,    -12}, 0, {     0,      0}, {0xff, 0x21, 0x7a, 0xff}}},\n    {{{    -7,    -33,    -11}, 0, {     0,      0}, {0x00, 0xe4, 0x7b, 0xff}}},\n};\n\n// 0x050065B8\nstatic const Vtx penguin_seg5_vertex_050065B8[] = {\n    {{{   110,    -22,      9}, 0, {     0,      0}, {0x02, 0xef, 0x83, 0x00}}},\n    {{{    -7,    -33,     11}, 0, {     0,      0}, {0x00, 0xe4, 0x85, 0x00}}},\n    {{{   -14,     -3,      4}, 0, {     0,      0}, {0x01, 0x00, 0x81, 0x00}}},\n    {{{   136,     16,      8}, 0, {     0,      0}, {0x01, 0x0d, 0x82, 0xff}}},\n    {{{     8,     25,     12}, 0, {     0,      0}, {0xff, 0x21, 0x86, 0xff}}},\n    {{{   -14,     -3,      4}, 0, {     0,      0}, {0xc9, 0x0d, 0x71, 0xff}}},\n    {{{    -7,    -33,     11}, 0, {     0,      0}, {0xe5, 0x05, 0x7b, 0xff}}},\n    {{{     8,     25,     12}, 0, {     0,      0}, {0xf0, 0x04, 0x7d, 0xff}}},\n    {{{   110,    -22,      9}, 0, {     0,      0}, {0x03, 0x00, 0x7f, 0xff}}},\n    {{{   136,     16,      8}, 0, {     0,      0}, {0x04, 0x01, 0x7e, 0xff}}},\n};\n\n// 0x05006658\nstatic const Vtx penguin_seg5_vertex_05006658[] = {\n    {{{   -16,     -2,     -1}, 0, {     0,      0}, {0xca, 0x8e, 0x00, 0x00}}},\n    {{{    46,     -8,     -1}, 0, {     0,      0}, {0x02, 0x81, 0x00, 0x00}}},\n    {{{    46,     16,     37}, 0, {     0,      0}, {0x04, 0x9e, 0x50, 0x00}}},\n    {{{   -21,     16,    -19}, 0, {     0,      0}, {0xa6, 0xb9, 0xcc, 0xff}}},\n    {{{    46,     16,    -41}, 0, {     0,      0}, {0x04, 0x9e, 0xb0, 0xff}}},\n    {{{    99,     16,    -16}, 0, {     0,      0}, {0x5f, 0xbf, 0xcd, 0xff}}},\n    {{{    94,     -1,     -1}, 0, {     0,      0}, {0x40, 0x93, 0x00, 0xff}}},\n    {{{    99,     16,     12}, 0, {     0,      0}, {0x5f, 0xbf, 0x33, 0xff}}},\n    {{{    46,     16,     37}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    99,     16,     12}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    46,     16,    -41}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -21,     16,     15}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -21,     16,     15}, 0, {     0,      0}, {0xa6, 0xb9, 0x34, 0xff}}},\n    {{{   -21,     16,    -19}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    99,     16,    -16}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x05006748\nstatic const Vtx penguin_seg5_vertex_05006748[] = {\n    {{{    99,     16,    -12}, 0, {     0,      0}, {0x5f, 0xbf, 0xcd, 0x00}}},\n    {{{    99,     16,     16}, 0, {     0,      0}, {0x5f, 0xbf, 0x33, 0x00}}},\n    {{{    94,     -1,      1}, 0, {     0,      0}, {0x40, 0x93, 0x00, 0x00}}},\n    {{{   -21,     16,     19}, 0, {     0,      0}, {0xa6, 0xb9, 0x34, 0xff}}},\n    {{{   -21,     16,    -15}, 0, {     0,      0}, {0xa6, 0xb9, 0xcc, 0xff}}},\n    {{{   -16,     -2,      1}, 0, {     0,      0}, {0xca, 0x8e, 0x00, 0xff}}},\n    {{{    46,     16,    -37}, 0, {     0,      0}, {0x04, 0x9e, 0xb0, 0xff}}},\n    {{{   -21,     16,    -15}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    46,     16,     41}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    46,     16,    -37}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    46,     16,     41}, 0, {     0,      0}, {0x04, 0x9e, 0x50, 0xff}}},\n    {{{    46,     -8,      1}, 0, {     0,      0}, {0x02, 0x81, 0x00, 0xff}}},\n    {{{    99,     16,    -12}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    99,     16,     16}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -21,     16,     19}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x05006838\nstatic const Vtx penguin_seg5_vertex_05006838[] = {\n    {{{    15,    153,      0}, 0, {     0,      0}, {0x6a, 0x45, 0x00, 0x00}}},\n    {{{    16,     96,     36}, 0, {     0,      0}, {0xab, 0x4a, 0x39, 0x00}}},\n    {{{    46,    105,      0}, 0, {     0,      0}, {0x29, 0x77, 0x00, 0x00}}},\n    {{{    16,     96,    -36}, 0, {     0,      0}, {0xbb, 0x50, 0xbb, 0xff}}},\n    {{{    15,    153,      0}, 0, {     0,      0}, {0x81, 0xfd, 0x00, 0xff}}},\n};\n\n// 0x05006888\nstatic const Vtx penguin_seg5_vertex_05006888[] = {\n    {{{     7,      9,    -37}, 0, {     0,      0}, {0x8c, 0xf9, 0xcf, 0x00}}},\n    {{{     7,      9,     37}, 0, {     0,      0}, {0x89, 0xfa, 0x29, 0x00}}},\n    {{{     6,     57,    -20}, 0, {     0,      0}, {0x84, 0x0d, 0xeb, 0x00}}},\n    {{{    30,     76,     60}, 0, {     0,      0}, {0xca, 0x22, 0x6d, 0xff}}},\n    {{{    32,      3,     62}, 0, {     0,      0}, {0xed, 0xe4, 0x7a, 0xff}}},\n    {{{    94,     64,     53}, 0, {     0,      0}, {0x3b, 0x14, 0x6e, 0xff}}},\n    {{{    32,      3,    -62}, 0, {     0,      0}, {0xed, 0xe4, 0x86, 0xff}}},\n    {{{    94,     64,    -53}, 0, {     0,      0}, {0x3b, 0x14, 0x92, 0xff}}},\n    {{{    95,     17,    -53}, 0, {     0,      0}, {0x58, 0xeb, 0xa8, 0xff}}},\n    {{{    17,    -97,      0}, 0, {     0,      0}, {0xbd, 0x95, 0x00, 0xff}}},\n    {{{   107,     -5,      0}, 0, {     0,      0}, {0x7b, 0xe5, 0x00, 0xff}}},\n    {{{    92,    -35,    -29}, 0, {     0,      0}, {0x55, 0xba, 0xc3, 0xff}}},\n    {{{    95,     17,     53}, 0, {     0,      0}, {0x58, 0xeb, 0x58, 0xff}}},\n    {{{    92,    -35,     29}, 0, {     0,      0}, {0x55, 0xba, 0x3d, 0xff}}},\n    {{{    16,     96,     36}, 0, {     0,      0}, {0xab, 0x4a, 0x39, 0xff}}},\n    {{{     6,     57,     20}, 0, {     0,      0}, {0x86, 0x0c, 0x20, 0xff}}},\n};\n\n// 0x05006988\nstatic const Vtx penguin_seg5_vertex_05006988[] = {\n    {{{   112,     55,     26}, 0, {     0,      0}, {0x79, 0x11, 0x22, 0xff}}},\n    {{{    92,     90,     41}, 0, {     0,      0}, {0x34, 0x5e, 0x43, 0x00}}},\n    {{{    94,     64,     53}, 0, {     0,      0}, {0x3b, 0x14, 0x6e, 0x00}}},\n    {{{    94,     64,    -53}, 0, {     0,      0}, {0x3b, 0x14, 0x92, 0xff}}},\n    {{{    92,     90,    -41}, 0, {     0,      0}, {0x33, 0x5e, 0xbd, 0xff}}},\n    {{{   112,     55,    -26}, 0, {     0,      0}, {0x79, 0x11, 0xde, 0xff}}},\n    {{{    16,     96,    -36}, 0, {     0,      0}, {0xbb, 0x50, 0xbb, 0xff}}},\n    {{{    30,     76,    -60}, 0, {     0,      0}, {0xca, 0x22, 0x93, 0xff}}},\n    {{{     6,     57,    -20}, 0, {     0,      0}, {0x84, 0x0d, 0xeb, 0xff}}},\n    {{{    30,     76,     60}, 0, {     0,      0}, {0xca, 0x22, 0x6d, 0xff}}},\n    {{{     7,      9,     37}, 0, {     0,      0}, {0x89, 0xfa, 0x29, 0xff}}},\n    {{{    32,      3,     62}, 0, {     0,      0}, {0xed, 0xe4, 0x7a, 0xff}}},\n    {{{    32,      3,    -62}, 0, {     0,      0}, {0xed, 0xe4, 0x86, 0xff}}},\n    {{{     7,      9,    -37}, 0, {     0,      0}, {0x8c, 0xf9, 0xcf, 0xff}}},\n    {{{    95,     17,     53}, 0, {     0,      0}, {0x58, 0xeb, 0x58, 0xff}}},\n};\n\n// 0x05006A78\nstatic const Vtx penguin_seg5_vertex_05006A78[] = {\n    {{{   112,     55,    -26}, 0, {     0,      0}, {0x79, 0x11, 0xde, 0xff}}},\n    {{{   107,     -5,      0}, 0, {     0,      0}, {0x7b, 0xe5, 0x00, 0x00}}},\n    {{{    95,     17,    -53}, 0, {     0,      0}, {0x58, 0xeb, 0xa8, 0x00}}},\n    {{{     7,      9,    -37}, 0, {     0,      0}, {0x8c, 0xf9, 0xcf, 0xff}}},\n    {{{    17,    -97,      0}, 0, {     0,      0}, {0xbd, 0x95, 0x00, 0xff}}},\n    {{{     7,      9,     37}, 0, {     0,      0}, {0x89, 0xfa, 0x29, 0xff}}},\n    {{{    92,    -35,    -29}, 0, {     0,      0}, {0x55, 0xba, 0xc3, 0xff}}},\n    {{{    32,      3,    -62}, 0, {     0,      0}, {0xed, 0xe4, 0x86, 0xff}}},\n    {{{    32,      3,     62}, 0, {     0,      0}, {0xed, 0xe4, 0x7a, 0xff}}},\n    {{{    92,    -35,     29}, 0, {     0,      0}, {0x55, 0xba, 0x3d, 0xff}}},\n    {{{    16,     96,     36}, 0, {     0,      0}, {0xab, 0x4a, 0x39, 0xff}}},\n    {{{    16,     96,    -36}, 0, {     0,      0}, {0xbb, 0x50, 0xbb, 0xff}}},\n    {{{     6,     57,    -20}, 0, {     0,      0}, {0x84, 0x0d, 0xeb, 0xff}}},\n    {{{    92,     90,     41}, 0, {     0,      0}, {0x34, 0x5e, 0x43, 0xff}}},\n    {{{    30,     76,     60}, 0, {     0,      0}, {0xca, 0x22, 0x6d, 0xff}}},\n};\n\n// 0x05006B68\nstatic const Vtx penguin_seg5_vertex_05006B68[] = {\n    {{{    95,     99,      0}, 0, {     0,      0}, {0x56, 0x5d, 0x00, 0xff}}},\n    {{{    92,     90,     41}, 0, {     0,      0}, {0x34, 0x5e, 0x43, 0x00}}},\n    {{{   112,     55,     26}, 0, {     0,      0}, {0x79, 0x11, 0x22, 0x00}}},\n    {{{    30,     76,    -60}, 0, {     0,      0}, {0xca, 0x22, 0x93, 0xff}}},\n    {{{    92,     90,    -41}, 0, {     0,      0}, {0x33, 0x5e, 0xbd, 0xff}}},\n    {{{    94,     64,    -53}, 0, {     0,      0}, {0x3b, 0x14, 0x92, 0xff}}},\n    {{{    46,    105,      0}, 0, {     0,      0}, {0x29, 0x77, 0x00, 0xff}}},\n    {{{    16,     96,    -36}, 0, {     0,      0}, {0xbb, 0x50, 0xbb, 0xff}}},\n    {{{    17,    -97,      0}, 0, {     0,      0}, {0xbd, 0x95, 0x00, 0xff}}},\n    {{{    92,    -35,    -29}, 0, {     0,      0}, {0x55, 0xba, 0xc3, 0xff}}},\n    {{{    92,    -35,     29}, 0, {     0,      0}, {0x55, 0xba, 0x3d, 0xff}}},\n    {{{    16,     96,     36}, 0, {     0,      0}, {0xab, 0x4a, 0x39, 0xff}}},\n    {{{   112,     55,    -26}, 0, {     0,      0}, {0x79, 0x11, 0xde, 0xff}}},\n    {{{   107,     -5,      0}, 0, {     0,      0}, {0x7b, 0xe5, 0x00, 0xff}}},\n    {{{    30,     76,     60}, 0, {     0,      0}, {0xca, 0x22, 0x6d, 0xff}}},\n    {{{    94,     64,     53}, 0, {     0,      0}, {0x3b, 0x14, 0x6e, 0xff}}},\n};\n\n// 0x05006C68\nstatic const Vtx penguin_seg5_vertex_05006C68[] = {\n    {{{    32,      3,    -62}, 0, {     0,      0}, {0xed, 0xe4, 0x86, 0xff}}},\n    {{{    30,     76,    -60}, 0, {     0,      0}, {0xca, 0x22, 0x93, 0x00}}},\n    {{{    94,     64,    -53}, 0, {     0,      0}, {0x3b, 0x14, 0x92, 0x00}}},\n    {{{    32,      3,     62}, 0, {     0,      0}, {0xed, 0xe4, 0x7a, 0xff}}},\n    {{{    95,     17,     53}, 0, {     0,      0}, {0x58, 0xeb, 0x58, 0xff}}},\n    {{{    94,     64,     53}, 0, {     0,      0}, {0x3b, 0x14, 0x6e, 0xff}}},\n    {{{    92,    -35,    -29}, 0, {     0,      0}, {0x55, 0xba, 0xc3, 0xff}}},\n    {{{   107,     -5,      0}, 0, {     0,      0}, {0x7b, 0xe5, 0x00, 0xff}}},\n    {{{    92,    -35,     29}, 0, {     0,      0}, {0x55, 0xba, 0x3d, 0xff}}},\n    {{{    95,     17,    -53}, 0, {     0,      0}, {0x58, 0xeb, 0xa8, 0xff}}},\n    {{{   112,     55,    -26}, 0, {     0,      0}, {0x79, 0x11, 0xde, 0xff}}},\n    {{{   112,     55,     26}, 0, {     0,      0}, {0x79, 0x11, 0x22, 0xff}}},\n    {{{     6,     57,    -20}, 0, {     0,      0}, {0x84, 0x0d, 0xeb, 0xff}}},\n    {{{     6,     57,     20}, 0, {     0,      0}, {0x86, 0x0c, 0x20, 0xff}}},\n    {{{    16,     96,     36}, 0, {     0,      0}, {0xab, 0x4a, 0x39, 0xff}}},\n    {{{     7,      9,    -37}, 0, {     0,      0}, {0x8c, 0xf9, 0xcf, 0xff}}},\n};\n\n// 0x05006D68\nstatic const Vtx penguin_seg5_vertex_05006D68[] = {\n    {{{    30,     76,     60}, 0, {     0,      0}, {0xca, 0x22, 0x6d, 0xff}}},\n    {{{     6,     57,     20}, 0, {     0,      0}, {0x86, 0x0c, 0x20, 0x00}}},\n    {{{     7,      9,     37}, 0, {     0,      0}, {0x89, 0xfa, 0x29, 0x00}}},\n    {{{     6,     57,    -20}, 0, {     0,      0}, {0x84, 0x0d, 0xeb, 0xff}}},\n    {{{    46,    105,      0}, 0, {     0,      0}, {0x29, 0x77, 0x00, 0xff}}},\n    {{{    92,     90,     41}, 0, {     0,      0}, {0x34, 0x5e, 0x43, 0xff}}},\n    {{{    95,     99,      0}, 0, {     0,      0}, {0x56, 0x5d, 0x00, 0xff}}},\n    {{{    92,     90,    -41}, 0, {     0,      0}, {0x33, 0x5e, 0xbd, 0xff}}},\n};\n\n// 0x05006DE8\nstatic const Vtx penguin_seg5_vertex_05006DE8[] = {\n    {{{   112,     55,    -26}, 0, {     0,      0}, {0x79, 0x11, 0xde, 0x00}}},\n    {{{    92,     90,    -41}, 0, {     0,      0}, {0x33, 0x5e, 0xbd, 0x00}}},\n    {{{    95,     99,      0}, 0, {     0,      0}, {0x56, 0x5d, 0x00, 0x00}}},\n    {{{   112,     55,     26}, 0, {     0,      0}, {0x79, 0x11, 0x22, 0xff}}},\n};\n\n// 0x05006E28\nstatic const Vtx penguin_seg5_vertex_05006E28[] = {\n    {{{   -35,    162,     36}, 0, {     0,      0}, {0xc6, 0x5c, 0x3f, 0x00}}},\n    {{{    35,    162,     36}, 0, {     0,      0}, {0x3a, 0x6b, 0x22, 0x00}}},\n    {{{   -32,    159,    -28}, 0, {     0,      0}, {0xd3, 0x6f, 0xd8, 0x00}}},\n    {{{    90,     -8,    -61}, 0, {     0,      0}, {0x70, 0xff, 0xc6, 0xff}}},\n    {{{    52,     36,    -53}, 0, {     0,      0}, {0x60, 0x3a, 0xc5, 0xff}}},\n    {{{    70,     82,     19}, 0, {     0,      0}, {0x76, 0x2b, 0xf1, 0xff}}},\n    {{{   -70,     82,     19}, 0, {     0,      0}, {0x8a, 0x2b, 0xf1, 0xff}}},\n    {{{   -52,     36,    -53}, 0, {     0,      0}, {0xa0, 0x3a, 0xc5, 0xff}}},\n    {{{   -90,     -8,    -61}, 0, {     0,      0}, {0x90, 0xff, 0xc6, 0xff}}},\n    {{{   -17,    148,    -50}, 0, {     0,      0}, {0xb2, 0x38, 0xaf, 0xff}}},\n    {{{    17,    148,    -50}, 0, {     0,      0}, {0x39, 0x45, 0xa7, 0xff}}},\n    {{{    32,    159,    -28}, 0, {     0,      0}, {0x46, 0x60, 0xd5, 0xff}}},\n    {{{   -55,    -39,    -33}, 0, {     0,      0}, {0xb5, 0x9d, 0xeb, 0xff}}},\n    {{{   -90,     -2,     44}, 0, {     0,      0}, {0x89, 0xe4, 0x1f, 0xff}}},\n    {{{    40,      5,   -103}, 0, {     0,      0}, {0x3d, 0x38, 0xa1, 0xff}}},\n};\n\n// 0x05006F18\nstatic const Vtx penguin_seg5_vertex_05006F18[] = {\n    {{{    40,      5,   -103}, 0, {     0,      0}, {0x3d, 0x38, 0xa1, 0xff}}},\n    {{{     0,    -33,   -140}, 0, {     0,      0}, {0x00, 0xb6, 0x9a, 0x00}}},\n    {{{   -40,      5,   -103}, 0, {     0,      0}, {0xcd, 0x37, 0x9a, 0x00}}},\n    {{{    70,     82,     19}, 0, {     0,      0}, {0x76, 0x2b, 0xf1, 0xff}}},\n    {{{    90,     -2,     44}, 0, {     0,      0}, {0x77, 0xe4, 0x1f, 0xff}}},\n    {{{    90,     -8,    -61}, 0, {     0,      0}, {0x70, 0xff, 0xc6, 0xff}}},\n    {{{   -90,     -8,    -61}, 0, {     0,      0}, {0x90, 0xff, 0xc6, 0xff}}},\n    {{{   -90,     -2,     44}, 0, {     0,      0}, {0x89, 0xe4, 0x1f, 0xff}}},\n    {{{   -70,     82,     19}, 0, {     0,      0}, {0x8a, 0x2b, 0xf1, 0xff}}},\n    {{{     0,    -56,    -79}, 0, {     0,      0}, {0xf9, 0x84, 0xe8, 0xff}}},\n    {{{   -55,    -39,    -33}, 0, {     0,      0}, {0xb5, 0x9d, 0xeb, 0xff}}},\n    {{{   -52,     36,    -53}, 0, {     0,      0}, {0xa0, 0x3a, 0xc5, 0xff}}},\n    {{{   -17,    148,    -50}, 0, {     0,      0}, {0xb2, 0x38, 0xaf, 0xff}}},\n    {{{    55,    -39,    -33}, 0, {     0,      0}, {0x3c, 0x92, 0xef, 0xff}}},\n    {{{    17,    148,    -50}, 0, {     0,      0}, {0x39, 0x45, 0xa7, 0xff}}},\n    {{{    52,     36,    -53}, 0, {     0,      0}, {0x60, 0x3a, 0xc5, 0xff}}},\n};\n\n// 0x05007018\nstatic const Vtx penguin_seg5_vertex_05007018[] = {\n    {{{   -32,    159,    -28}, 0, {     0,      0}, {0xd3, 0x6f, 0xd8, 0xff}}},\n    {{{    32,    159,    -28}, 0, {     0,      0}, {0x46, 0x60, 0xd5, 0x00}}},\n    {{{    17,    148,    -50}, 0, {     0,      0}, {0x39, 0x45, 0xa7, 0x00}}},\n    {{{    35,    162,     36}, 0, {     0,      0}, {0x3a, 0x6b, 0x22, 0xff}}},\n    {{{     0,    -33,   -140}, 0, {     0,      0}, {0x00, 0xb6, 0x9a, 0xff}}},\n    {{{    55,    -39,    -33}, 0, {     0,      0}, {0x3c, 0x92, 0xef, 0xff}}},\n    {{{     0,    -56,    -79}, 0, {     0,      0}, {0xf9, 0x84, 0xe8, 0xff}}},\n    {{{   -40,      5,   -103}, 0, {     0,      0}, {0xcd, 0x37, 0x9a, 0xff}}},\n    {{{    40,      5,   -103}, 0, {     0,      0}, {0x3d, 0x38, 0xa1, 0xff}}},\n};\n\n// 0x050070A8\nstatic const Vtx penguin_seg5_vertex_050070A8[] = {\n    {{{   -35,    162,     36}, 0, {     0,      0}, {0xc6, 0x5c, 0x3f, 0x00}}},\n    {{{   -37,     87,     87}, 0, {     0,      0}, {0xb6, 0x2e, 0x5c, 0x00}}},\n    {{{    37,     87,     87}, 0, {     0,      0}, {0x35, 0x31, 0x68, 0x00}}},\n    {{{   -90,     -2,     44}, 0, {     0,      0}, {0x89, 0xe4, 0x1f, 0xff}}},\n    {{{   -70,     82,     19}, 0, {     0,      0}, {0x8a, 0x2b, 0xf1, 0xff}}},\n    {{{    35,    162,     36}, 0, {     0,      0}, {0x3a, 0x6b, 0x22, 0xff}}},\n    {{{    70,     82,     19}, 0, {     0,      0}, {0x76, 0x2b, 0xf1, 0xff}}},\n    {{{   -47,    -11,    108}, 0, {     0,      0}, {0xcf, 0xe5, 0x71, 0xff}}},\n    {{{   -50,    -56,     36}, 0, {     0,      0}, {0xdc, 0x89, 0x15, 0xff}}},\n    {{{    47,    -11,    108}, 0, {     0,      0}, {0x31, 0xc3, 0x63, 0xff}}},\n    {{{    50,    -56,     36}, 0, {     0,      0}, {0x38, 0x91, 0x16, 0xff}}},\n    {{{   -55,    -39,    -33}, 0, {     0,      0}, {0xb5, 0x9d, 0xeb, 0xff}}},\n    {{{     0,    -56,    -79}, 0, {     0,      0}, {0xf9, 0x84, 0xe8, 0xff}}},\n    {{{    90,     -2,     44}, 0, {     0,      0}, {0x77, 0xe4, 0x1f, 0xff}}},\n    {{{    55,    -39,    -33}, 0, {     0,      0}, {0x3c, 0x92, 0xef, 0xff}}},\n};\n\n// 0x05007198 - 0x050071E8\nconst Gfx penguin_seg5_dl_05007198[] = {\n    gsSPLight(&penguin_seg5_lights_05002D80.l, 1),\n    gsSPLight(&penguin_seg5_lights_05002D80.a, 2),\n    gsSPVertex(penguin_seg5_vertex_05006518, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  3,  6,  7, 0x0),\n    gsSP2Triangles( 8,  0,  2, 0x0,  0,  9,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050071E8 - 0x05007238\nconst Gfx penguin_seg5_dl_050071E8[] = {\n    gsSPLight(&penguin_seg5_lights_05002D80.l, 1),\n    gsSPLight(&penguin_seg5_lights_05002D80.a, 2),\n    gsSPVertex(penguin_seg5_vertex_050065B8, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  7,  6,  8, 0x0),\n    gsSP2Triangles( 8,  9,  7, 0x0,  3,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05007238 - 0x050072C8\nconst Gfx penguin_seg5_dl_05007238[] = {\n    gsSPLight(&penguin_seg5_lights_05002D98.l, 1),\n    gsSPLight(&penguin_seg5_lights_05002D98.a, 2),\n    gsSPVertex(penguin_seg5_vertex_05006658, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  7,  2, 0x0),\n    gsSP2Triangles( 1,  4,  6, 0x0,  1,  6,  2, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  1,  0,  4, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0,  2, 12,  0, 0x0),\n    gsSP2Triangles( 0, 12,  3, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles(10, 13, 11, 0x0,  9, 14, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050072C8 - 0x05007358\nconst Gfx penguin_seg5_dl_050072C8[] = {\n    gsSPLight(&penguin_seg5_lights_05002D98.l, 1),\n    gsSPLight(&penguin_seg5_lights_05002D98.a, 2),\n    gsSPVertex(penguin_seg5_vertex_05006748, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  5, 11, 0x0,  8, 12,  9, 0x0),\n    gsSP2Triangles( 6,  2, 11, 0x0,  2, 10, 11, 0x0),\n    gsSP2Triangles( 6,  0,  2, 0x0,  2,  1, 10, 0x0),\n    gsSP2Triangles(10,  3,  5, 0x0,  6, 11,  5, 0x0),\n    gsSP2Triangles( 8, 13, 12, 0x0,  7, 14,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05007358 - 0x05007540\nconst Gfx penguin_seg5_dl_05007358[] = {\n    gsSPLight(&penguin_seg5_lights_05002DB0.l, 1),\n    gsSPLight(&penguin_seg5_lights_05002DB0.a, 2),\n    gsSPVertex(penguin_seg5_vertex_05006838, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP1Triangle( 1,  4,  3, 0x0),\n    gsSPLight(&penguin_seg5_lights_05002D80.l, 1),\n    gsSPLight(&penguin_seg5_lights_05002D80.a, 2),\n    gsSPVertex(penguin_seg5_vertex_05006888, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  0, 0x0),\n    gsSP2Triangles(10, 11,  8, 0x0, 12, 13, 10, 0x0),\n    gsSP2Triangles( 9,  4,  1, 0x0,  3, 14, 15, 0x0),\n    gsSPVertex(penguin_seg5_vertex_05006988, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13,  7, 0x0, 14,  0,  2, 0x0),\n    gsSPVertex(penguin_seg5_vertex_05006A78, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  4,  7, 0x0,  8,  4,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 10, 14, 0x0),\n    gsSPVertex(penguin_seg5_vertex_05006B68, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  4,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(11,  1,  6, 0x0, 12,  2, 13, 0x0),\n    gsSP2Triangles( 3,  7,  4, 0x0, 14, 15,  1, 0x0),\n    gsSPVertex(penguin_seg5_vertex_05006C68, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  2, 10, 0x0),\n    gsSP2Triangles( 4,  7, 11, 0x0,  8,  4,  3, 0x0),\n    gsSP2Triangles( 0,  9,  6, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(15, 12,  1, 0x0),\n    gsSPVertex(penguin_seg5_vertex_05006D68, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  7,  4, 0x0),\n    gsSPLight(&penguin_seg5_lights_05002D80.l, 1),\n    gsSPLight(&penguin_seg5_lights_05002D80.a, 2),\n    gsSPVertex(penguin_seg5_vertex_05006DE8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05007540 - 0x05007708\nconst Gfx penguin_seg5_dl_05007540[] = {\n    gsSPLight(&penguin_seg5_lights_05002D80.l, 1),\n    gsSPLight(&penguin_seg5_lights_05002D80.a, 2),\n    gsSPVertex(penguin_seg5_vertex_05006E28, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  2,  9,  6, 0x0),\n    gsSP2Triangles( 5, 10, 11, 0x0,  4, 10,  5, 0x0),\n    gsSP2Triangles( 8, 12, 13, 0x0,  5, 11,  1, 0x0),\n    gsSP2Triangles( 6,  0,  2, 0x0, 10,  9,  2, 0x0),\n    gsSP1Triangle( 3, 14,  4, 0x0),\n    gsSPVertex(penguin_seg5_vertex_05006F18, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10,  1, 0x0),\n    gsSP2Triangles(11,  8, 12, 0x0, 13,  5,  4, 0x0),\n    gsSP2Triangles( 0, 14, 15, 0x0,  2, 11, 12, 0x0),\n    gsSP2Triangles( 6, 11,  2, 0x0,  1,  0,  5, 0x0),\n    gsSP2Triangles( 1, 10,  6, 0x0,  6,  2,  1, 0x0),\n    gsSP2Triangles( 5, 13,  1, 0x0,  2, 12, 14, 0x0),\n    gsSPVertex(penguin_seg5_vertex_05007018, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  2,  8, 0x0),\n    gsSPLight(&penguin_seg5_lights_05002DC8.l, 1),\n    gsSPLight(&penguin_seg5_lights_05002DC8.a, 2),\n    gsSPVertex(penguin_seg5_vertex_050070A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  4, 0x0),\n    gsSP2Triangles( 5,  2,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0,  9,  2,  7, 0x0),\n    gsSP2Triangles( 4,  1,  0, 0x0,  7,  3,  8, 0x0),\n    gsSP2Triangles( 8, 11, 12, 0x0, 13,  9, 10, 0x0),\n    gsSP2Triangles( 2,  1,  7, 0x0, 13, 10, 14, 0x0),\n    gsSP2Triangles(14, 10,  8, 0x0,  2,  5,  0, 0x0),\n    gsSP2Triangles(13,  6,  2, 0x0,  3,  7,  1, 0x0),\n    gsSP2Triangles(11,  8,  3, 0x0, 12, 14,  8, 0x0),\n    gsSP1Triangle( 2,  9, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/piranha_plant/anims/anim_06017C38.inc.c",
    "content": "// 0x06016F80\nstatic const s16 piranha_plant_seg6_animvalue_06016F80[] = {\n    0x0000, 0x000E, 0x0003, 0x3FFF, 0x6B9F, 0x6B39, 0x6A17, 0x6854,\n    0x660D, 0x635B, 0x6059, 0x5D24, 0x59D5, 0x5687, 0x5357, 0x505E,\n    0x4DB7, 0x4B7F, 0x49CF, 0x4A72, 0x4DA2, 0x5120, 0x52AF, 0x5218,\n    0x50CD, 0x4F09, 0x4D09, 0x4B09, 0x4945, 0x47FB, 0x4767, 0x47C4,\n    0x4B9B, 0x52FF, 0x5A79, 0x5E95, 0x5FBA, 0x60A4, 0x6157, 0x61D5,\n    0x6223, 0x6243, 0x623A, 0x620A, 0x61B8, 0x6147, 0x60BB, 0x6017,\n    0x5F5E, 0x5E95, 0x5C03, 0x5752, 0x5298, 0x4FEA, 0x4F32, 0x4EE8,\n    0x4EF4, 0x4F3F, 0x4FB3, 0x5037, 0x50B5, 0x5115, 0x5142, 0x5123,\n    0x505C, 0x4EF1, 0x4D57, 0x4C04, 0x4B6E, 0x4B74, 0x4BA4, 0x4C00,\n    0x4C87, 0x4D38, 0x4E16, 0x4F1E, 0x5052, 0x51BC, 0x535F, 0x5531,\n    0x5728, 0x593A, 0x5B5C, 0x5D84, 0x5FA8, 0x61BE, 0x63BB, 0x6596,\n    0x6743, 0x68BA, 0x69EF, 0x6AD8, 0x6B6C, 0x6B9F, 0x74CF, 0x74CF,\n    0x74CB, 0x74C1, 0x74AB, 0x7487, 0x7451, 0x7405, 0x739E, 0x731B,\n    0x7276, 0x71AC, 0x70B9, 0x6F9A, 0x6E4B, 0x6AA4, 0x6466, 0x5E63,\n    0x5B6F, 0x5B64, 0x5C1F, 0x5D72, 0x5F30, 0x612B, 0x6337, 0x6526,\n    0x66CB, 0x67F8, 0x6840, 0x67C0, 0x6719, 0x66ED, 0x6758, 0x67FA,\n    0x68B9, 0x6980, 0x6A36, 0x6AC3, 0x6B10, 0x6B13, 0x6ADC, 0x6A7E,\n    0x6A0C, 0x6999, 0x6936, 0x68F7, 0x690E, 0x6965, 0x699F, 0x695F,\n    0x689A, 0x6794, 0x6662, 0x651A, 0x63D2, 0x62A0, 0x619A, 0x60D5,\n    0x6068, 0x6068, 0x61EF, 0x6532, 0x68F5, 0x6BFC, 0x6D0A, 0x6C01,\n    0x69DC, 0x6700, 0x63D4, 0x60BC, 0x5E1F, 0x5C63, 0x5BED, 0x5C73,\n    0x5D5D, 0x5E9C, 0x6023, 0x61E4, 0x63D1, 0x65DD, 0x67F8, 0x6A16,\n    0x6C28, 0x6E20, 0x6FF1, 0x718D, 0x72E5, 0x73EC, 0x7494, 0x74CF,\n    0xE0AE, 0xE0C4, 0xE101, 0xE15A, 0xE1C4, 0xE236, 0xE2A5, 0xE306,\n    0xE34F, 0xE380, 0xE3A2, 0xE3B8, 0xE3C6, 0xE3D0, 0xE3DB, 0xE3D1,\n    0xE3B1, 0xE3A2, 0xE3CC, 0xE454, 0xE51B, 0xE5E5, 0xE674, 0xE6AE,\n    0xE6B9, 0xE6B7, 0xE6C8, 0xE710, 0xE783, 0xE7FF, 0xE882, 0xE90B,\n    0xE99A, 0xEA2C, 0xEAC0, 0xEB56, 0xEBEB, 0xEC7F, 0xED11, 0xED9E,\n    0xEE27, 0xEEA9, 0xEF23, 0xEF95, 0xEFFC, 0xF058, 0xF09C, 0xF08E,\n    0xEFEB, 0xEE6E, 0xEC0E, 0xE914, 0xE5B5, 0xE224, 0xDE98, 0xDB44,\n    0xD85E, 0xD61A, 0xD4AD, 0xD44C, 0xD740, 0xDE12, 0xE659, 0xEDAC,\n    0xF1A0, 0xF261, 0xF1EC, 0xF090, 0xEEA0, 0xEC6B, 0xEA43, 0xE877,\n    0xE758, 0xE6AD, 0xE608, 0xE56A, 0xE4D3, 0xE443, 0xE3BC, 0xE33E,\n    0xE2C9, 0xE25E, 0xE1FD, 0xE1A7, 0xE15D, 0xE120, 0xE0EF, 0xE0CB,\n    0xE0B5, 0xE0AE, 0x023E, 0x0297, 0x0387, 0x04E2, 0x067D, 0x082F,\n    0x09CD, 0x0B2A, 0x0C1E, 0x0CC3, 0x0D3F, 0x0D7D, 0x0D67, 0x0CE8,\n    0x0BE8, 0x0955, 0x0548, 0x0165, 0xFF57, 0x0027, 0x02C2, 0x059A,\n    0x071F, 0x06D4, 0x05A7, 0x0425, 0x02DF, 0x0262, 0x0286, 0x02C0,\n    0x030D, 0x036A, 0x03D6, 0x044C, 0x04CA, 0x054E, 0x05D5, 0x065C,\n    0x06E0, 0x075E, 0x07D4, 0x083F, 0x089C, 0x08E9, 0x0923, 0x0946,\n    0x08AB, 0x072A, 0x057E, 0x0465, 0x03CC, 0x032C, 0x028E, 0x01FA,\n    0x017A, 0x0115, 0x00D5, 0x00C2, 0x00E6, 0x0148, 0x02C3, 0x0587,\n    0x08A6, 0x0B2E, 0x0C2F, 0x0BAA, 0x0A67, 0x08A2, 0x0697, 0x0481,\n    0x029D, 0x0126, 0x0058, 0x0003, 0xFFCD, 0xFFB2, 0xFFAF, 0xFFC1,\n    0xFFE4, 0x0015, 0x0051, 0x0095, 0x00DE, 0x0127, 0x016F, 0x01B0,\n    0x01E9, 0x0216, 0x0233, 0x023E, 0x70B4, 0x70B6, 0x70B8, 0x70B4,\n    0x70A4, 0x7081, 0x7046, 0x6FED, 0x6F70, 0x6EB6, 0x6DB9, 0x6C8D,\n    0x6B47, 0x69FB, 0x68BD, 0x66D3, 0x6464, 0x62D8, 0x6398, 0x6815,\n    0x6F32, 0x7689, 0x7BB1, 0x7E6F, 0x803B, 0x812A, 0x8160, 0x80F8,\n    0x8042, 0x7F78, 0x7EA0, 0x7DB8, 0x7CC1, 0x7BBB, 0x7AA7, 0x7987,\n    0x785A, 0x7723, 0x75E1, 0x7496, 0x7341, 0x71E5, 0x7082, 0x6F18,\n    0x6DA9, 0x6C36, 0x69DA, 0x6670, 0x6310, 0x60D6, 0x5FA2, 0x5E98,\n    0x5DB3, 0x5CEF, 0x5C48, 0x5BBA, 0x5B42, 0x5ADA, 0x5A7F, 0x5A2D,\n    0x5A23, 0x5A81, 0x5B19, 0x5BBA, 0x5C35, 0x5C7D, 0x5CAD, 0x5CD1,\n    0x5CF7, 0x5D2C, 0x5D7E, 0x5DF9, 0x5EAB, 0x5F93, 0x60A3, 0x61D3,\n    0x631D, 0x6479, 0x65E2, 0x674F, 0x68BB, 0x6A1D, 0x6B70, 0x6CAC,\n    0x6DCB, 0x6EC4, 0x6F93, 0x702F, 0x7091, 0x70B4, 0x1DC6, 0x1DCA,\n    0x1DD4, 0x1DE1, 0x1DEC, 0x1DF3, 0x1DF2, 0x1DE6, 0x1DCC, 0x1D9F,\n    0x1D5D, 0x1D01, 0x1C8A, 0x1BF2, 0x1B38, 0x1A3E, 0x18F8, 0x1774,\n    0x15C1, 0x13EF, 0x120C, 0x1029, 0x0E54, 0x0C9D, 0x0B13, 0x09C5,\n    0x08C3, 0x081C, 0x0884, 0x0A42, 0x0CBC, 0x0F57, 0x1179, 0x128A,\n    0x12BF, 0x12BB, 0x1288, 0x122D, 0x11B4, 0x1126, 0x108C, 0x0FEF,\n    0x0F58, 0x0ED0, 0x0E5F, 0x0E10, 0x0DB4, 0x0D67, 0x0D9D, 0x0EC8,\n    0x10FD, 0x13DB, 0x1728, 0x1AA9, 0x1E25, 0x2161, 0x2423, 0x2632,\n    0x2752, 0x274A, 0x2367, 0x1B10, 0x112F, 0x08B0, 0x047E, 0x0476,\n    0x062B, 0x0921, 0x0CD8, 0x10D1, 0x148F, 0x1792, 0x195B, 0x1A4C,\n    0x1B1A, 0x1BC7, 0x1C57, 0x1CCC, 0x1D29, 0x1D70, 0x1DA3, 0x1DC6,\n    0x1DDC, 0x1DE6, 0x1DE7, 0x1DE2, 0x1DDA, 0x1DD1, 0x1DC9, 0x1DC6,\n    0x068D, 0x06A3, 0x06DE, 0x0738, 0x07AA, 0x082B, 0x08B6, 0x0941,\n    0x09C7, 0x0A40, 0x0AA5, 0x0AEE, 0x0B13, 0x0B0F, 0x0AD9, 0x0A6B,\n    0x09CA, 0x08FE, 0x080D, 0x06FE, 0x05DB, 0x04A9, 0x0371, 0x023A,\n    0x010A, 0xFFEC, 0xFEE4, 0xFDFB, 0xFD1B, 0xFC3D, 0xFB7B, 0xFAED,\n    0xFAB0, 0xFADB, 0xFB5F, 0xFC12, 0xFCEA, 0xFDE0, 0xFEEA, 0xFFFE,\n    0x0113, 0x0222, 0x0320, 0x0405, 0x04C7, 0x055D, 0x0549, 0x0471,\n    0x0363, 0x02AC, 0x023B, 0x01AB, 0x010B, 0x006D, 0xFFE1, 0xFF75,\n    0xFF3B, 0xFF42, 0xFF9B, 0x0054, 0x0279, 0x064A, 0x0AAE, 0x0E89,\n    0x10C3, 0x117C, 0x11A4, 0x115D, 0x10C8, 0x1003, 0x0F31, 0x0E71,\n    0x0DE5, 0x0D75, 0x0CFA, 0x0C75, 0x0BE9, 0x0B58, 0x0AC5, 0x0A32,\n    0x09A1, 0x0916, 0x0892, 0x0817, 0x07A9, 0x0749, 0x06FB, 0x06C0,\n    0x069A, 0x068D, 0x12B0, 0x1283, 0x1205, 0x1144, 0x104E, 0x0F33,\n    0x0DFF, 0x0CC1, 0x0B88, 0x0A62, 0x095C, 0x0885, 0x07EC, 0x079E,\n    0x07AA, 0x080E, 0x08BA, 0x09A4, 0x0AC6, 0x0C16, 0x0D8B, 0x0F1F,\n    0x10C8, 0x127D, 0x1437, 0x15EE, 0x1798, 0x192E, 0x1B43, 0x1E0E,\n    0x20FC, 0x2379, 0x24F1, 0x24D0, 0x235D, 0x2155, 0x1ED2, 0x1BF3,\n    0x18D2, 0x158C, 0x123D, 0x0F02, 0x0BF7, 0x0937, 0x06E0, 0x050D,\n    0x0536, 0x079E, 0x0A91, 0x0C5A, 0x0D05, 0x0DB4, 0x0E5C, 0x0EEF,\n    0x0F62, 0x0FA8, 0x0FB3, 0x0F78, 0x0EEA, 0x0DFB, 0x0B8E, 0x0751,\n    0x026D, 0xFE0C, 0xFB54, 0xFA0C, 0xF92B, 0xF8AA, 0xF87F, 0xF8A2,\n    0xF90A, 0xF9AE, 0xFA87, 0xFB98, 0xFCE8, 0xFE6B, 0x0018, 0x01E4,\n    0x03C6, 0x05B4, 0x07A3, 0x0988, 0x0B5B, 0x0D10, 0x0E9E, 0x0FFA,\n    0x111A, 0x11F5, 0x127F, 0x12B0, 0xC05D, 0xE128, 0xC001, 0xE128,\n    0xC05D, 0x0006, 0x000F, 0x002A, 0x0056, 0x0091, 0x00D9, 0x012E,\n    0x018E, 0x01F7, 0x0269, 0x02E1, 0x035F, 0x03E1, 0x0465, 0x04EB,\n    0x0585, 0x0641, 0x0717, 0x0800, 0x08F2, 0x09E7, 0x0AD5, 0x0BB5,\n    0x0C80, 0x0D2C, 0x0DB2, 0x0E0A, 0x0E2C, 0x0E23, 0x0E04, 0x0DCF,\n    0x0D87, 0x0D2D, 0x0CC3, 0x0C4A, 0x0BC5, 0x0B36, 0x0A9D, 0x09FD,\n    0x0957, 0x08AE, 0x0803, 0x0757, 0x06AE, 0x0607, 0x0566, 0x0468,\n    0x02F7, 0x018A, 0x0094, 0xFFEA, 0xFF1A, 0xFE3C, 0xFD63, 0xFCA6,\n    0xFC18, 0xFBD0, 0xFBE2, 0xFC62, 0xFD67, 0x0097, 0x0650, 0x0CB7,\n    0x11F2, 0x1426, 0x135A, 0x111D, 0x0DE2, 0x0A1A, 0x0635, 0x02A6,\n    0xFFDF, 0xFE4F, 0xFD9D, 0xFD1F, 0xFCD0, 0xFCAA, 0xFCA9, 0xFCC7,\n    0xFCFE, 0xFD49, 0xFDA3, 0xFE07, 0xFE6F, 0xFED5, 0xFF35, 0xFF89,\n    0xFFCB, 0xFFF7, 0x0006, 0x095E, 0x08FD, 0x07ED, 0x064B, 0x0437,\n    0x01CD, 0xFF2E, 0xFC74, 0xF9BE, 0xF72C, 0xF4DA, 0xF2E6, 0xF16F,\n    0xF092, 0xF06D, 0xF128, 0xF2BC, 0xF501, 0xF7D1, 0xFB05, 0xFE75,\n    0x01F9, 0x056C, 0x08A6, 0x0B81, 0x0DD4, 0x0F79, 0x1049, 0x1075,\n    0x1050, 0x0FE0, 0x0F2E, 0x0E42, 0x0D22, 0x0BD7, 0x0A69, 0x08DE,\n    0x0740, 0x0595, 0x03E5, 0x0239, 0x0097, 0xFF09, 0xFD94, 0xFC41,\n    0xFB17, 0xFA25, 0xF972, 0xF8FB, 0xF8BC, 0xF8B0, 0xF8C7, 0xF8F8,\n    0xF935, 0xF975, 0xF9AA, 0xF9C9, 0xF9C7, 0xF998, 0xF930, 0xF821,\n    0xF652, 0xF431, 0xF232, 0xF0C6, 0xEFB7, 0xEE97, 0xED81, 0xEC90,\n    0xEBDE, 0xEB85, 0xEBA2, 0xEC4D, 0xED77, 0xEEF2, 0xF0B3, 0xF2AD,\n    0xF4D2, 0xF715, 0xF96A, 0xFBC3, 0xFE14, 0x004F, 0x0269, 0x0453,\n    0x0602, 0x0767, 0x0876, 0x0922, 0x095E, 0x19C6, 0x1996, 0x190F,\n    0x1840, 0x1737, 0x1603, 0x14B3, 0x1354, 0x11F6, 0x10A8, 0x0F77,\n    0x0E72, 0x0DA8, 0x0D28, 0x0CFF, 0x0D4E, 0x0E1A, 0x0F48, 0x10C1,\n    0x1269, 0x142A, 0x15E8, 0x178A, 0x18F9, 0x1A19, 0x1AD2, 0x1B0A,\n    0x1AA9, 0x19B7, 0x1859, 0x169D, 0x1492, 0x1246, 0x0FC7, 0x0D24,\n    0x0A6B, 0x07AA, 0x04F1, 0x024D, 0xFFCD, 0xFD7F, 0xFB71, 0xF9B3,\n    0xF851, 0xF75B, 0xF6E0, 0xFAE9, 0x046C, 0x0EDF, 0x15B4, 0x1934,\n    0x1CA0, 0x1FDB, 0x22CB, 0x2551, 0x2751, 0x28B0, 0x2951, 0x2917,\n    0x27E6, 0x227B, 0x17F3, 0x0BBD, 0x014B, 0xFC0D, 0xFBD3, 0xFDBC,\n    0x012E, 0x0591, 0x0A49, 0x0EBE, 0x1255, 0x1474, 0x158F, 0x1682,\n    0x1750, 0x17FB, 0x1887, 0x18F6, 0x194C, 0x198C, 0x19B8, 0x19D4,\n    0x19E2, 0x19E6, 0x19E3, 0x19DB, 0x19D2, 0x19CA, 0x19C6, 0xE128,\n    0xC001, 0xE128, 0x0003, 0xFFE8, 0xFF98, 0xFF1E, 0xFE82, 0xFDCB,\n    0xFD03, 0xFC32, 0xFB60, 0xFA96, 0xF9DC, 0xF93B, 0xF8BA, 0xF863,\n    0xF83D, 0xF854, 0xF8A5, 0xF927, 0xF9CD, 0xFA8D, 0xFB5B, 0xFC2D,\n    0xFCF7, 0xFDAE, 0xFE47, 0xFEB8, 0xFEF4, 0xFEF1, 0xFEBE, 0xFE71,\n    0xFE0C, 0xFD93, 0xFD07, 0xFC6B, 0xFBC1, 0xFB0C, 0xFA4F, 0xF98B,\n    0xF8C3, 0xF7F9, 0xF730, 0xF66A, 0xF5AA, 0xF4F1, 0xF443, 0xF3A2,\n    0xF305, 0xF270, 0xF1F9, 0xF1B5, 0xF190, 0xF16C, 0xF14B, 0xF130,\n    0xF11E, 0xF118, 0xF120, 0xF13A, 0xF169, 0xF1AF, 0xF25F, 0xF38E,\n    0xF4E1, 0xF5FE, 0xF68A, 0xF67D, 0xF61C, 0xF585, 0xF4D8, 0xF433,\n    0xF3B3, 0xF376, 0xF39C, 0xF412, 0xF4AD, 0xF567, 0xF63C, 0xF725,\n    0xF81C, 0xF91B, 0xFA1E, 0xFB1E, 0xFC15, 0xFCFD, 0xFDD2, 0xFE8D,\n    0xFF29, 0xFF9F, 0xFFEA, 0x0003, 0x09C7, 0x0969, 0x0863, 0x06D3,\n    0x04D6, 0x028A, 0x000D, 0xFD7E, 0xFAF8, 0xF899, 0xF681, 0xF4CB,\n    0xF397, 0xF302, 0xF329, 0xF443, 0xF652, 0xF92A, 0xFC9C, 0x0078,\n    0x0492, 0x08BC, 0x0CC8, 0x1086, 0x13C9, 0x1662, 0x1825, 0x18E1,\n    0x18CA, 0x1839, 0x173C, 0x15DE, 0x142F, 0x123A, 0x100C, 0x0DB4,\n    0x0B3D, 0x08B6, 0x062C, 0x03AA, 0x0140, 0xFEFA, 0xFCE4, 0xFB0C,\n    0xF97F, 0xF84B, 0xF930, 0xFC8D, 0x0059, 0x028C, 0x0346, 0x03F9,\n    0x0498, 0x0516, 0x0566, 0x057A, 0x0544, 0x04B8, 0x03C8, 0x0268,\n    0xFF0D, 0xF94F, 0xF2D6, 0xED49, 0xEA50, 0xE9B7, 0xEA0A, 0xEB14,\n    0xEC9F, 0xEE78, 0xF067, 0xF238, 0xF3B6, 0xF50C, 0xF684, 0xF817,\n    0xF9BF, 0xFB73, 0xFD2E, 0xFEE7, 0x0097, 0x0239, 0x03C4, 0x0532,\n    0x067A, 0x0797, 0x0881, 0x0931, 0x09A0, 0x09C7, 0x0FD4, 0x0FE1,\n    0x1007, 0x1040, 0x1089, 0x10DD, 0x1139, 0x1197, 0x11F5, 0x124D,\n    0x129C, 0x12DC, 0x130B, 0x1324, 0x1322, 0x130A, 0x12E2, 0x12AC,\n    0x1268, 0x1217, 0x11BA, 0x1151, 0x10DE, 0x1061, 0x0FDB, 0x0F4D,\n    0x0EB7, 0x0E1B, 0x0D64, 0x0C81, 0x0B7B, 0x0A58, 0x0921, 0x07DE,\n    0x0696, 0x0551, 0x0416, 0x02EE, 0x01E0, 0x00F3, 0x0030, 0xFF9F,\n    0xFF46, 0xFF2E, 0xFF5E, 0xFFDF, 0x0461, 0x0DA4, 0x173F, 0x1CCA,\n    0x1E77, 0x1F7D, 0x1FF5, 0x1FFB, 0x1FA7, 0x1F15, 0x1E5F, 0x1D9E,\n    0x1CEE, 0x1C67, 0x1B8D, 0x1A1B, 0x1883, 0x1739, 0x16AE, 0x16EE,\n    0x179D, 0x1894, 0x19AA, 0x1AB8, 0x1B97, 0x1C1D, 0x1C24, 0x1BC7,\n    0x1B3E, 0x1A92, 0x19C7, 0x18E4, 0x17EF, 0x16EF, 0x15EA, 0x14E5,\n    0x13E8, 0x12F8, 0x121D, 0x115B, 0x10B9, 0x103E, 0x0FEF, 0x0FD4,\n    0x0003, 0x0013, 0x003F, 0x0082, 0x00D7, 0x0138, 0x01A0, 0x020A,\n    0x0271, 0x02CE, 0x031E, 0x0359, 0x037C, 0x0381, 0x0363, 0x0314,\n    0x0294, 0x01EB, 0x0123, 0x0046, 0xFF5D, 0xFE71, 0xFD8B, 0xFCB5,\n    0xFBF9, 0xFB60, 0xFAF3, 0xFABD, 0xFAB0, 0xFABB, 0xFADA, 0xFB0B,\n    0xFB4D, 0xFB9C, 0xFBF7, 0xFC5C, 0xFCC8, 0xFD38, 0xFDAC, 0xFE21,\n    0xFE93, 0xFF02, 0xFF6B, 0xFFCB, 0x0020, 0x0069, 0x009B, 0x00AA,\n    0x009A, 0x0069, 0x0017, 0xFFA9, 0xFF26, 0xFE9B, 0xFE11, 0xFD94,\n    0xFD2E, 0xFCE8, 0xFCCE, 0xFCEA, 0xFDBF, 0xFF6A, 0x015A, 0x0301,\n    0x03CF, 0x03C9, 0x0366, 0x02C2, 0x01F6, 0x0120, 0x005A, 0xFFC1,\n    0xFF6E, 0xFF4D, 0xFF37, 0xFF2B, 0xFF28, 0xFF2C, 0xFF37, 0xFF47,\n    0xFF5B, 0xFF72, 0xFF8B, 0xFFA4, 0xFFBC, 0xFFD3, 0xFFE7, 0xFFF6,\n    0x0000, 0x0003, 0xF843, 0xF883, 0xF935, 0xFA46, 0xFBA1, 0xFD33,\n    0xFEE6, 0x00A6, 0x0261, 0x0402, 0x0575, 0x06A5, 0x077E, 0x07ED,\n    0x07DD, 0x072A, 0x05D0, 0x03F0, 0x01A9, 0xFF1B, 0xFC63, 0xF9A2,\n    0xF6F6, 0xF480, 0xF25E, 0xF0B0, 0xEF95, 0xEF2D, 0xEF51, 0xEFC1,\n    0xF077, 0xF16A, 0xF292, 0xF3E9, 0xF567, 0xF703, 0xF8B7, 0xFA7B,\n    0xFC47, 0xFE14, 0xFFDA, 0x0190, 0x0332, 0x04B5, 0x0614, 0x0745,\n    0x07E5, 0x07D7, 0x0780, 0x0745, 0x0738, 0x0729, 0x0719, 0x0708,\n    0x06F6, 0x06E4, 0x06D1, 0x06BE, 0x06AC, 0x0699, 0x0669, 0x061A,\n    0x05D9, 0x05D4, 0x0636, 0x0725, 0x0886, 0x0A25, 0x0BD0, 0x0D54,\n    0x0E80, 0x0F1F, 0x0F00, 0x0E48, 0x0D43, 0x0BFE, 0x0A83, 0x08DD,\n    0x0719, 0x0541, 0x0361, 0x0184, 0xFFB5, 0xFDFF, 0xFC6D, 0xFB0B,\n    0xF9E4, 0xF904, 0xF875, 0xF843, 0xF0C9, 0xF0F8, 0xF17D, 0xF24D,\n    0xF35B, 0xF49C, 0xF605, 0xF78A, 0xF920, 0xFABA, 0xFC4D, 0xFDCD,\n    0xFF2F, 0x0067, 0x0169, 0x024F, 0x0337, 0x041B, 0x04F8, 0x05CA,\n    0x068D, 0x073C, 0x07D3, 0x0850, 0x08AC, 0x08E5, 0x08F5, 0x08DA,\n    0x0896, 0x0832, 0x07B1, 0x0716, 0x0665, 0x05A1, 0x04CD, 0x03EC,\n    0x0302, 0x0212, 0x0120, 0x002E, 0xFF41, 0xFE5A, 0xFD7E, 0xFCAF,\n    0xFBF2, 0xFB49, 0xFB35, 0xFBB3, 0xFBFB, 0xFB49, 0xF96D, 0xF6E5,\n    0xF3EF, 0xF0C7, 0xEDAA, 0xEAD5, 0xE884, 0xE6F3, 0xE661, 0xE708,\n    0xEBEC, 0xF5B4, 0x0115, 0x0AC7, 0x0F80, 0x0F66, 0x0D38, 0x098F,\n    0x0502, 0x0029, 0xFB9E, 0xF7F6, 0xF5CB, 0xF4A7, 0xF3B0, 0xF2E1,\n    0xF238, 0xF1B0, 0xF146, 0xF0F8, 0xF0C1, 0xF09F, 0xF08D, 0xF089,\n    0xF08E, 0xF09A, 0xF0AA, 0xF0B9, 0xF0C5, 0xF0C9, 0x3DB1, 0x0000,\n};\n\n// 0x06017B90\nstatic const u16 piranha_plant_seg6_animindex_06017B90[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0000, 0x0001, 0x0003, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0606,\n    0x005A, 0x04F8, 0x005A, 0x0552, 0x005A, 0x05AC,\n    0x005A, 0x03EA, 0x005A, 0x0444, 0x005A, 0x049E,\n    0x005A, 0x02D9, 0x005A, 0x0333, 0x005A, 0x038D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02D8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005A, 0x0004,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02D4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005A, 0x005E,\n    0x0001, 0x03E7, 0x0001, 0x03E8, 0x0001, 0x03E9,\n    0x005A, 0x00B8, 0x005A, 0x0112, 0x005A, 0x016C,\n    0x0001, 0x02D5, 0x0001, 0x02D6, 0x0001, 0x02D7,\n    0x005A, 0x01C6, 0x005A, 0x0220, 0x005A, 0x027A,\n};\n\n// 0x06017C38\nstatic const struct Animation piranha_plant_seg6_anim_06017C38 = {\n    0,\n    0,\n    0,\n    0,\n    0x5A,\n    ANIMINDEX_NUMPARTS(piranha_plant_seg6_animindex_06017B90),\n    piranha_plant_seg6_animvalue_06016F80,\n    piranha_plant_seg6_animindex_06017B90,\n    0,\n};\n"
  },
  {
    "path": "actors/piranha_plant/anims/anim_06017D88.inc.c",
    "content": "// 0x06017C50\nstatic const s16 piranha_plant_seg6_animvalue_06017C50[] = {\n    0x0000, 0x000E, 0x0003, 0x3FFF, 0x84A3, 0x8207, 0x7C46, 0x7688,\n    0xF5DD, 0xF773, 0xFAEF, 0xFE6B, 0xFEFF, 0xFF27, 0xFF80, 0xFFD8,\n    0x81B5, 0x7F83, 0x7AB5, 0x75E7, 0xDEB2, 0xFB9A, 0x6705, 0x1B6D,\n    0xF78F, 0x2B07, 0xC05D, 0xE128, 0xC001, 0xE128, 0xC05D, 0x0234,\n    0x023F, 0x0257, 0x026F, 0x0919, 0x0917, 0x0910, 0x090A, 0x2370,\n    0x23A2, 0x2410, 0x247E, 0xE128, 0xC001, 0xE128, 0x00E8, 0x00D0,\n    0x009C, 0x0068, 0x09BA, 0x09BB, 0x09BE, 0x09C2, 0x139B, 0x1336,\n    0x1259, 0x117B, 0x01DD, 0x019A, 0x0104, 0x006F, 0xF885, 0xF87C,\n    0xF868, 0xF855, 0xE6C8, 0xE835, 0xEB58, 0xEE7A, 0x3DB1, 0x0000,\n};\n\n// 0x06017CE0\nstatic const u16 piranha_plant_seg6_animindex_06017CE0[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0000, 0x0001, 0x0003, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0046,\n    0x0004, 0x003A, 0x0004, 0x003E, 0x0004, 0x0042,\n    0x0004, 0x002E, 0x0004, 0x0032, 0x0004, 0x0036,\n    0x0004, 0x001F, 0x0004, 0x0023, 0x0004, 0x0027,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x001E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0004, 0x0004,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x001A,\n    0x0004, 0x0008, 0x0004, 0x000C, 0x0004, 0x0010,\n    0x0001, 0x002B, 0x0001, 0x002C, 0x0001, 0x002D,\n    0x0001, 0x0014, 0x0001, 0x0015, 0x0001, 0x0016,\n    0x0001, 0x001B, 0x0001, 0x001C, 0x0001, 0x001D,\n    0x0001, 0x0017, 0x0001, 0x0018, 0x0001, 0x0019,\n};\n\n// 0x06017D88\nstatic const struct Animation piranha_plant_seg6_anim_06017D88 = {\n    0,\n    0,\n    0,\n    0,\n    0x04,\n    ANIMINDEX_NUMPARTS(piranha_plant_seg6_animindex_06017CE0),\n    piranha_plant_seg6_animvalue_06017C50,\n    piranha_plant_seg6_animindex_06017CE0,\n    0,\n};\n"
  },
  {
    "path": "actors/piranha_plant/anims/anim_060187B0.inc.c",
    "content": "// 0x06017DA0\nstatic const s16 piranha_plant_seg6_animvalue_06017DA0[] = {\n    0x0000, 0x000E, 0x0003, 0x3FFF, 0x73EC, 0x73B0, 0x7302, 0x71EE,\n    0x707D, 0x6EB9, 0x6CAE, 0x6A64, 0x67E7, 0x6541, 0x627C, 0x5FA2,\n    0x5CBE, 0x59DA, 0x5701, 0x543C, 0x5196, 0x4F19, 0x4CCF, 0x4BD6,\n    0x4B08, 0x4A50, 0x4998, 0x48CA, 0x47D1, 0x4696, 0x4505, 0x4308,\n    0x408B, 0x3D9A, 0x3A51, 0x36CB, 0x3321, 0x2F70, 0x2BD1, 0x285F,\n    0x2536, 0x2270, 0x1FF9, 0x1DC5, 0x1BF6, 0x1AB0, 0x1A16, 0x1A4A,\n    0x1DDB, 0x241C, 0x2854, 0x261F, 0x2270, 0x2151, 0x20EB, 0x21B2,\n    0x2632, 0x2A0F, 0x292E, 0x26E2, 0x2479, 0x2340, 0x2329, 0x2340,\n    0x237E, 0x23DB, 0x244C, 0x24CA, 0x254D, 0x25CB, 0x263C, 0x2698,\n    0x26D5, 0x26EB, 0x7B0D, 0x7AEC, 0x7A8C, 0x79F3, 0x7928, 0x782E,\n    0x770D, 0x75CA, 0x746A, 0x72F4, 0x716D, 0x6FDA, 0x6E41, 0x6CA9,\n    0x6B16, 0x698E, 0x6818, 0x66B8, 0x6575, 0x6450, 0x6348, 0x624E,\n    0x6155, 0x604D, 0x5F27, 0x5DD6, 0x5C4A, 0x5A75, 0x584A, 0x55D1,\n    0x531D, 0x503F, 0x4D4A, 0x4A4F, 0x4760, 0x4490, 0x41EF, 0x3F91,\n    0x3D89, 0x3BD4, 0x3A63, 0x3925, 0x380A, 0x3703, 0x3617, 0x35B9,\n    0x3674, 0x3A89, 0x3E58, 0x3E3F, 0x3CCF, 0x3B17, 0x3963, 0x376F,\n    0x3575, 0x33AE, 0x3253, 0x3191, 0x314B, 0x3155, 0x3180, 0x31BE,\n    0x3219, 0x3286, 0x32FE, 0x3375, 0x33E3, 0x343D, 0x347A, 0x3491,\n    0xDEB2, 0xDECA, 0xDF0D, 0xDF78, 0xE007, 0xE0B6, 0xE181, 0xE264,\n    0xE35B, 0xE462, 0xE574, 0xE68F, 0xE7AE, 0xE8CD, 0xE9E8, 0xEAFA,\n    0xEC01, 0xECF8, 0xEDDB, 0xEEA4, 0xEF1D, 0xEF6D, 0xEFBD, 0xF036,\n    0xF0FF, 0xF241, 0xF424, 0xF6D2, 0xFA33, 0xFE0D, 0x024B, 0x06DC,\n    0x0BAB, 0x10A6, 0x15BA, 0x1AD3, 0x1FDE, 0x24C9, 0x297F, 0x2DEF,\n    0x3204, 0x35AC, 0x36D2, 0x34A3, 0x30E8, 0x2B09, 0x239F, 0x1E3D,\n    0x1E37, 0x210C, 0x2413, 0x279C, 0x2AF6, 0x2E17, 0x3033, 0x3137,\n    0x3243, 0x3353, 0x3464, 0x3571, 0x3676, 0x3771, 0x385C, 0x3934,\n    0x39F6, 0x3A9D, 0x3B25, 0x3B8C, 0x3BCC, 0x3BE2, 0xFB9A, 0xFBB5,\n    0xFC03, 0xFC7F, 0xFD25, 0xFDF0, 0xFEDB, 0xFFE2, 0x0100, 0x0231,\n    0x036F, 0x04B7, 0x0604, 0x0751, 0x0899, 0x09D7, 0x0B08, 0x0C27,\n    0x0D2E, 0x0D35, 0x0D48, 0x0D5F, 0x0D77, 0x0D8A, 0x0D91, 0x0D88,\n    0x0D69, 0x0D2E, 0x0CDC, 0x0C7D, 0x0C14, 0x0BA0, 0x0B25, 0x0AA3,\n    0x0A1D, 0x0993, 0x0908, 0x087E, 0x07F5, 0x0770, 0x06F1, 0x0678,\n    0x062F, 0x05F8, 0x056B, 0x0451, 0x02E2, 0x015C, 0xFF4E, 0xFDFD,\n    0xFED5, 0x006C, 0x0167, 0x005A, 0xFF11, 0xFED0, 0xFE92, 0xFE59,\n    0xFE23, 0xFDF1, 0xFDC4, 0xFD9A, 0xFD75, 0xFD55, 0xFD39, 0xFD22,\n    0xFD10, 0xFD03, 0xFCFB, 0xFCF8, 0x6705, 0x672C, 0x679C, 0x684E,\n    0x693C, 0x6A5F, 0x6BB1, 0x6D2B, 0x6EC6, 0x707B, 0x7244, 0x741B,\n    0x75F8, 0x77D6, 0x79AC, 0x7B76, 0x7D2B, 0x7EC6, 0x8043, 0x8042,\n    0x8040, 0x803E, 0x803B, 0x8039, 0x8038, 0x8039, 0x803D, 0x8043,\n    0x804B, 0x8054, 0x805E, 0x8068, 0x8073, 0x807F, 0x808C, 0x8099,\n    0x80A7, 0x80B6, 0x80C5, 0x80D5, 0x80E5, 0x80F6, 0x8108, 0x8127,\n    0x8166, 0x81C9, 0x824C, 0x82F6, 0x844F, 0x8528, 0x8449, 0x82D0,\n    0x81B6, 0x81CE, 0x8232, 0x8235, 0x8235, 0x8233, 0x822F, 0x822A,\n    0x8224, 0x821D, 0x8216, 0x820F, 0x8208, 0x8201, 0x81FC, 0x81F8,\n    0x81F5, 0x81F4, 0x1B6D, 0x1B65, 0x1B4F, 0x1B2B, 0x1AFC, 0x1AC2,\n    0x1A7F, 0x1A33, 0x19E2, 0x198B, 0x1930, 0x18D2, 0x1873, 0x1814,\n    0x17B6, 0x175B, 0x1704, 0x16B3, 0x1668, 0x14B0, 0x132D, 0x11C4,\n    0x105B, 0x0ED8, 0x0D21, 0x0B19, 0x08A8, 0x05B3, 0x0248, 0xFE90,\n    0xFA96, 0xF666, 0xF20E, 0xED98, 0xE913, 0xE489, 0xE007, 0xDB9A,\n    0xD74E, 0xD32E, 0xCF48, 0xCBA8, 0xC91C, 0xC8A7, 0xCAA4, 0xD163,\n    0xDA94, 0xDF97, 0xDE12, 0xD97E, 0xD3FB, 0xCFA7, 0xCD30, 0xCB92,\n    0xCA68, 0xC94C, 0xC81E, 0xC6E4, 0xC5A4, 0xC463, 0xC327, 0xC1F5,\n    0xC0D2, 0xBFC4, 0xBED1, 0xBDFE, 0xBD50, 0xBCCD, 0xBC7B, 0xBC5E,\n    0xF78F, 0xF79F, 0xF7CC, 0xF815, 0xF876, 0xF8ED, 0xF976, 0xFA10,\n    0xFAB7, 0xFB69, 0xFC24, 0xFCE3, 0xFDA6, 0xFE68, 0xFF28, 0xFFE2,\n    0x0093, 0x013A, 0x01D4, 0x01D6, 0x01DA, 0x01DF, 0x01E5, 0x01E9,\n    0x01EA, 0x01E8, 0x01E1, 0x01D4, 0x01BF, 0x01A2, 0x017F, 0x0158,\n    0x012E, 0x0103, 0x00D8, 0x00B1, 0x008D, 0x006F, 0x0058, 0x004A,\n    0x0047, 0x0051, 0x013F, 0x02B7, 0x02EA, 0x0068, 0xFCA3, 0xFA1F,\n    0xF9AA, 0xFA13, 0xFADF, 0xFB90, 0xFC40, 0xFD0B, 0xFD81, 0xFDA3,\n    0xFDC1, 0xFDDA, 0xFDEF, 0xFE00, 0xFE0E, 0xFE19, 0xFE21, 0xFE27,\n    0xFE2A, 0xFE2D, 0xFE2E, 0xFE2E, 0xFE2E, 0xFE2E, 0x2B07, 0x2ADE,\n    0x2A68, 0x29AC, 0x28B0, 0x277C, 0x2617, 0x2488, 0x22D6, 0x2108,\n    0x1F25, 0x1D34, 0x1B3B, 0x1943, 0x1752, 0x156F, 0x13A1, 0x11EE,\n    0x105F, 0x105F, 0x105F, 0x105E, 0x105E, 0x105E, 0x105D, 0x105E,\n    0x105E, 0x105F, 0x1062, 0x1067, 0x106C, 0x1073, 0x107A, 0x1082,\n    0x1088, 0x108E, 0x1093, 0x1095, 0x1095, 0x1092, 0x108C, 0x1082,\n    0x1072, 0x1034, 0x0F94, 0x0E24, 0x0C51, 0x0B2A, 0x0B05, 0x0B56,\n    0x0BDD, 0x0C59, 0x0CD7, 0x0D67, 0x0DCD, 0x0E0D, 0x0E4E, 0x0E91,\n    0x0ED4, 0x0F17, 0x0F58, 0x0F96, 0x0FD1, 0x1007, 0x1038, 0x1061,\n    0x1084, 0x109D, 0x10AE, 0x10B3, 0xC05D, 0xE128, 0xC001, 0xE128,\n    0xC05D, 0x027A, 0x026E, 0x0249, 0x020F, 0x01C1, 0x0162, 0x00F4,\n    0x0079, 0xFFF4, 0xFF65, 0xFED0, 0xFE36, 0xFD9B, 0xFCFF, 0xFC65,\n    0xFBD0, 0xFB41, 0xFABB, 0xFA40, 0xFA4D, 0xFA5B, 0xFA69, 0xFA77,\n    0xFA84, 0xFA91, 0xFA9C, 0xFAA6, 0xFAAD, 0xFAB2, 0xFAB7, 0xFABA,\n    0xFABC, 0xFABE, 0xFABE, 0xFABC, 0xFAB9, 0xFAB4, 0xFAAD, 0xFA9F,\n    0xFA8A, 0xFA70, 0xFA55, 0xFA3E, 0xFA2F, 0xFA28, 0xFA27, 0xFA2B,\n    0xFA31, 0xFA37, 0xFA20, 0xFA0D, 0xFA5A, 0xFB87, 0xFD13, 0xFDD4,\n    0xFCED, 0xFB3C, 0xFA32, 0xFA02, 0xF9E5, 0xF9D8, 0xF9D8, 0xF9E2,\n    0xF9F5, 0xFA0C, 0xFA25, 0xFA3E, 0xFA53, 0xFA61, 0xFA67, 0x0907,\n    0x08F7, 0x08CA, 0x0880, 0x081F, 0x07A7, 0x071C, 0x0681, 0x05D9,\n    0x0525, 0x046A, 0x03A8, 0x02E5, 0x0221, 0x015F, 0x00A4, 0xFFF1,\n    0xFF49, 0xFEAE, 0xFE89, 0xFE62, 0xFE39, 0xFE11, 0xFDEA, 0xFDC5,\n    0xFDA5, 0xFD8A, 0xFD75, 0xFD66, 0xFD58, 0xFD4D, 0xFD46, 0xFD41,\n    0xFD41, 0xFD46, 0xFD50, 0xFD60, 0xFD75, 0xFDAA, 0xFE06, 0xFE70,\n    0xFECF, 0xFF09, 0xFF06, 0xFE9E, 0xFDDD, 0xFCFB, 0xFC2C, 0xFBA8,\n    0xFBD0, 0xFC63, 0xFC9C, 0xFC0C, 0xFB23, 0xFA71, 0xFA33, 0xFA2D,\n    0xFA3E, 0xFA53, 0xFA6F, 0xFA8F, 0xFAB3, 0xFAD7, 0xFAFC, 0xFB1F,\n    0xFB3F, 0xFB5B, 0xFB70, 0xFB7E, 0xFB83, 0x24B0, 0x2468, 0x2396,\n    0x2247, 0x2089, 0x1E67, 0x1BED, 0x1929, 0x1626, 0x12F2, 0x0F98,\n    0x0C25, 0x08A6, 0x0527, 0x01B4, 0xFE5B, 0xFB27, 0xF824, 0xF560,\n    0xF456, 0xF338, 0xF211, 0xF0E9, 0xEFCB, 0xEEC1, 0xEDD5, 0xED10,\n    0xEC7C, 0xEC0B, 0xEBA9, 0xEB5A, 0xEB22, 0xEB04, 0xEB04, 0xEB27,\n    0xEB6E, 0xEBDF, 0xEC7C, 0xED76, 0xEEEC, 0xF0C6, 0xF2ED, 0xF54C,\n    0xF7CC, 0xFB05, 0xFF16, 0x0331, 0x068A, 0x0853, 0x064F, 0x0170,\n    0xFDAF, 0xFCF9, 0xFD60, 0xFD11, 0xFAC5, 0xF7C2, 0xF603, 0xF5A2,\n    0xF565, 0xF547, 0xF542, 0xF552, 0xF570, 0xF599, 0xF5C5, 0xF5F1,\n    0xF617, 0xF632, 0xF63C, 0xE128, 0xC001, 0xE128, 0x0050, 0x004C,\n    0x0041, 0x002F, 0x0017, 0xFFFB, 0xFFD9, 0xFFB3, 0xFF8A, 0xFF5F,\n    0xFF31, 0xFF02, 0xFED2, 0xFEA3, 0xFE74, 0xFE46, 0xFE1A, 0xFDF1,\n    0xFDCB, 0xFDBB, 0xFDA9, 0xFD96, 0xFD84, 0xFD72, 0xFD61, 0xFD52,\n    0xFD46, 0xFD3C, 0xFD36, 0xFD31, 0xFD2E, 0xFD2C, 0xFD2C, 0xFD2D,\n    0xFD2F, 0xFD32, 0xFD36, 0xFD3A, 0xFD40, 0xFD49, 0xFD55, 0xFD63,\n    0xFD74, 0xFD87, 0xFDA2, 0xFDC6, 0xFDEB, 0xFE08, 0xFE17, 0xFDFE,\n    0xFDCA, 0xFDAB, 0xFDAB, 0xFDB5, 0xFDC5, 0xFDD5, 0xFDE1, 0xFDE5,\n    0xFDE2, 0xFDDD, 0xFDD6, 0xFDCE, 0xFDC4, 0xFDBA, 0xFDB1, 0xFDA8,\n    0xFDA0, 0xFD99, 0xFD95, 0xFD93, 0x09C3, 0x09B7, 0x0994, 0x095D,\n    0x0914, 0x08B9, 0x0851, 0x07DC, 0x075D, 0x06D6, 0x0648, 0x05B7,\n    0x0523, 0x048F, 0x03FE, 0x0370, 0x02E9, 0x026A, 0x01F5, 0x01D9,\n    0x01BB, 0x019D, 0x017E, 0x0160, 0x0144, 0x012B, 0x0117, 0x0107,\n    0x00FB, 0x00F3, 0x00ED, 0x00E9, 0x00E8, 0x00E9, 0x00EC, 0x00F1,\n    0x00F7, 0x0100, 0x010E, 0x0123, 0x013F, 0x015D, 0x017D, 0x019B,\n    0x01BD, 0x01E6, 0x020E, 0x022E, 0x023F, 0x0227, 0x01F2, 0x01D2,\n    0x01D3, 0x01DE, 0x01EF, 0x0200, 0x020D, 0x0211, 0x020D, 0x0206,\n    0x01FE, 0x01F3, 0x01E8, 0x01DC, 0x01D1, 0x01C6, 0x01BC, 0x01B5,\n    0x01B0, 0x01AE, 0x1117, 0x1100, 0x10BD, 0x1053, 0x0FC6, 0x0F19,\n    0x0E50, 0x0D6F, 0x0C7B, 0x0B77, 0x0A68, 0x0950, 0x0834, 0x0719,\n    0x0601, 0x04F1, 0x03ED, 0x02F9, 0x0219, 0x0057, 0xFE75, 0xFC82,\n    0xFA8F, 0xF8AD, 0xF6EB, 0xF559, 0xF40A, 0xF30B, 0xF252, 0xF1C8,\n    0xF168, 0xF131, 0xF120, 0xF131, 0xF164, 0xF1B4, 0xF21F, 0xF2A3,\n    0xF373, 0xF4B4, 0xF64A, 0xF81B, 0xFA0A, 0xFBFE, 0xFE62, 0x0152,\n    0x0440, 0x0699, 0x07CD, 0x05F1, 0x01F3, 0xFF87, 0xFF9A, 0x0069,\n    0x019E, 0x02DF, 0x03D3, 0x0422, 0x03E3, 0x0371, 0x02D6, 0x021C,\n    0x014F, 0x007B, 0xFFAA, 0xFEE5, 0xFE39, 0xFDB1, 0xFD57, 0xFD37,\n    0x002B, 0x002A, 0x0027, 0x0023, 0x001C, 0x0015, 0x000C, 0x0002,\n    0xFFF8, 0xFFED, 0xFFE1, 0xFFD4, 0xFFC8, 0xFFBC, 0xFFAF, 0xFFA3,\n    0xFF98, 0xFF8D, 0xFF83, 0xFF74, 0xFF66, 0xFF57, 0xFF48, 0xFF39,\n    0xFF2B, 0xFF1C, 0xFF0D, 0xFEFE, 0xFEEF, 0xFEDE, 0xFECE, 0xFEBC,\n    0xFEAC, 0xFE9C, 0xFE8D, 0xFE7F, 0xFE74, 0xFE6B, 0xFE67, 0xFE69,\n    0xFE6F, 0xFE77, 0xFE7E, 0xFE82, 0xFE81, 0xFE7F, 0xFE7C, 0xFE78,\n    0xFE76, 0xFE74, 0xFE73, 0xFE73, 0xFE73, 0xFE73, 0xFE74, 0xFE74,\n    0xFE75, 0xFE76, 0xFE77, 0xFE78, 0xFE7A, 0xFE7C, 0xFE7E, 0xFE80,\n    0xFE81, 0xFE83, 0xFE84, 0xFE85, 0xFE86, 0xFE86, 0xF84C, 0xF855,\n    0xF871, 0xF89C, 0xF8D7, 0xF91E, 0xF971, 0xF9CD, 0xFA32, 0xFA9D,\n    0xFB0D, 0xFB80, 0xFBF5, 0xFC6A, 0xFCDD, 0xFD4D, 0xFDB8, 0xFE1D,\n    0xFE7A, 0xFE81, 0xFE86, 0xFE8B, 0xFE90, 0xFE96, 0xFE9D, 0xFEA6,\n    0xFEB2, 0xFEC1, 0xFED4, 0xFEE9, 0xFF00, 0xFF19, 0xFF33, 0xFF4F,\n    0xFF6B, 0xFF88, 0xFFA6, 0xFFC3, 0xFFE7, 0x0014, 0x0044, 0x006E,\n    0x008B, 0x0094, 0x0078, 0x003B, 0xFFF3, 0xFFB2, 0xFF8F, 0xFFAA,\n    0xFFEF, 0x0023, 0x0039, 0x004B, 0x0058, 0x0062, 0x006A, 0x0071,\n    0x0077, 0x007E, 0x0084, 0x0089, 0x008E, 0x0092, 0x0096, 0x0099,\n    0x009C, 0x009E, 0x009F, 0x009F, 0xEFE7, 0xF000, 0xF04B, 0xF0C1,\n    0xF15F, 0xF220, 0xF300, 0xF3FB, 0xF50C, 0xF62E, 0xF75D, 0xF896,\n    0xF9D3, 0xFB0F, 0xFC48, 0xFD77, 0xFE99, 0xFFAA, 0x00A4, 0x023F,\n    0x03BF, 0x0532, 0x06A5, 0x0826, 0x09C1, 0x0B84, 0x0D7D, 0x0FB8,\n    0x1234, 0x14E0, 0x17B5, 0x1AAE, 0x1DC2, 0x20EB, 0x2422, 0x2762,\n    0x2AA2, 0x2DDC, 0x31B9, 0x3669, 0x3B36, 0x3F65, 0x423E, 0x4308,\n    0x4032, 0x3A0C, 0x32AC, 0x2C26, 0x2891, 0x2B4B, 0x3254, 0x37B0,\n    0x39EB, 0x3B9F, 0x3CE7, 0x3DE1, 0x3EAA, 0x3F5D, 0x400C, 0x40B2,\n    0x414E, 0x41DF, 0x4264, 0x42DB, 0x4343, 0x439B, 0x43E1, 0x4415,\n    0x4435, 0x4440, 0x3DB1, 0x0000,\n};\n\n// 0x06018708\nstatic const u16 piranha_plant_seg6_animindex_06018708[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0000, 0x0001, 0x0003, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x04B2,\n    0x0046, 0x03E0, 0x0046, 0x0426, 0x0046, 0x046C,\n    0x0046, 0x030E, 0x0046, 0x0354, 0x0046, 0x039A,\n    0x0046, 0x0239, 0x0046, 0x027F, 0x0046, 0x02C5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0238,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0046, 0x0004,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0234,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0046, 0x004A,\n    0x0001, 0x030B, 0x0001, 0x030C, 0x0001, 0x030D,\n    0x0046, 0x0090, 0x0046, 0x00D6, 0x0046, 0x011C,\n    0x0001, 0x0235, 0x0001, 0x0236, 0x0001, 0x0237,\n    0x0046, 0x0162, 0x0046, 0x01A8, 0x0046, 0x01EE,\n};\n\n// 0x060187B0\nstatic const struct Animation piranha_plant_seg6_anim_060187B0 = {\n    1,\n    0,\n    0,\n    0,\n    0x46,\n    ANIMINDEX_NUMPARTS(piranha_plant_seg6_animindex_06018708),\n    piranha_plant_seg6_animvalue_06017DA0,\n    piranha_plant_seg6_animindex_06018708,\n    0,\n};\n"
  },
  {
    "path": "actors/piranha_plant/anims/anim_06018BA8.inc.c",
    "content": "// 0x060187C8\nstatic const s16 piranha_plant_seg6_animvalue_060187C8[] = {\n    0x0000, 0x000E, 0x0003, 0x3FFF, 0x0000, 0x0000, 0x0013, 0x0042,\n    0x007E, 0x00B9, 0x00E4, 0x00F0, 0x00CF, 0x008C, 0x0039, 0xFFE8,\n    0xFFAC, 0xFF97, 0xFFB7, 0x0000, 0x0061, 0x00C9, 0x0124, 0x0000,\n    0x0000, 0xFFEF, 0xFFC1, 0xFF82, 0xFF3F, 0xFF01, 0xFED6, 0xFEBB,\n    0xFEA6, 0xFE99, 0xFE90, 0xFE8E, 0xFE90, 0xFE9C, 0xFEB3, 0xFECF,\n    0xFEEE, 0xFF09, 0x73EC, 0x73EC, 0x722D, 0x6DDE, 0x6868, 0x6332,\n    0x5FA3, 0x5F23, 0x6325, 0x6AD5, 0x742D, 0x7D25, 0x83BA, 0x85DF,\n    0x8206, 0x7954, 0x6DE1, 0x61BE, 0x56FC, 0x0000, 0x0000, 0xFFEA,\n    0xFFB2, 0xFF67, 0xFF17, 0xFED2, 0xFEA6, 0xFE94, 0xFE90, 0xFE96,\n    0xFEA3, 0xFEB5, 0xFEC9, 0xFEE1, 0xFF03, 0xFF2A, 0xFF51, 0xFF77,\n    0x0000, 0x0000, 0xFFF5, 0xFFDA, 0xFFB8, 0xFF99, 0xFF85, 0xFF88,\n    0xFFAD, 0xFFF0, 0x003F, 0x0088, 0x00B9, 0x00C0, 0x008D, 0x002A,\n    0xFFAB, 0xFF25, 0xFEAD, 0x73B8, 0x73B8, 0x7454, 0x7609, 0x78A8,\n    0x7C03, 0x7FEA, 0x8432, 0x8A5E, 0x92E5, 0x9BF9, 0xA3CB, 0xA88D,\n    0xA870, 0xA152, 0x9407, 0x8335, 0x717E, 0x618E, 0xDEB2, 0xDEB2,\n    0xDED9, 0xDF3D, 0xDFC3, 0xE052, 0xE0D0, 0xE122, 0xE0D0, 0xDFD5,\n    0xDECA, 0xDE43, 0xDED9, 0xE122, 0xE5E7, 0xECE9, 0xF532, 0xFDCE,\n    0x05C4, 0xFB9A, 0xFB9A, 0xFC65, 0xFE6C, 0x0127, 0x0411, 0x069F,\n    0x084D, 0x090F, 0x0951, 0x0939, 0x08EC, 0x0891, 0x084D, 0x080D,\n    0x07B1, 0x0743, 0x06D2, 0x0668, 0x6705, 0x6705, 0x67ED, 0x6A3C,\n    0x6D5A, 0x70AB, 0x7396, 0x757E, 0x768B, 0x773F, 0x778C, 0x7764,\n    0x76B9, 0x757E, 0x734E, 0x7017, 0x6C49, 0x6856, 0x64AF, 0x1B6D,\n    0x1B6D, 0x1B42, 0x1AD4, 0x1A40, 0x19A3, 0x1919, 0x18BF, 0x18F5,\n    0x19B9, 0x1A91, 0x1B01, 0x1A8E, 0x18BF, 0x14F3, 0x0F5E, 0x08C6,\n    0x01EC, 0xFB95, 0xF78F, 0xF78F, 0xF882, 0xFAEF, 0xFE33, 0x01AD,\n    0x04BB, 0x06BC, 0x0792, 0x07BA, 0x0776, 0x0709, 0x06B4, 0x06BC,\n    0x0729, 0x07C8, 0x0885, 0x0949, 0x09FF, 0x2B07, 0x2B07, 0x2900,\n    0x23D0, 0x1CD3, 0x1563, 0x0ED9, 0x0A90, 0x0877, 0x0774, 0x0758,\n    0x07F3, 0x0916, 0x0A90, 0x0CD6, 0x102D, 0x1420, 0x183A, 0x1C05,\n    0xC05D, 0xE128, 0xC001, 0xE128, 0xC05D, 0x027A, 0x027A, 0x0244,\n    0x01BA, 0x00FF, 0x0037, 0xFF88, 0xFF11, 0xFED9, 0xFEC2, 0xFEC2,\n    0xFECE, 0xFEDB, 0xFEDF, 0xFEDC, 0xFEDB, 0xFEDC, 0xFEDE, 0xFEDE,\n    0x0907, 0x0907, 0x0883, 0x0730, 0x0566, 0x037C, 0x01CA, 0x00A8,\n    0x001E, 0xFFE8, 0xFFEA, 0x0007, 0x0025, 0x0029, 0x0018, 0x0008,\n    0xFFFB, 0xFFED, 0xFFDE, 0x24B0, 0x24B0, 0x246E, 0x23B2, 0x2288,\n    0x20FE, 0x1F24, 0x1D05, 0x1A6D, 0x1745, 0x13CC, 0x103F, 0x0CDC,\n    0x09E0, 0x0762, 0x0538, 0x033E, 0x014F, 0xFF4A, 0xE128, 0xC001,\n    0xE128, 0x0050, 0x0050, 0x007A, 0x00E6, 0x0177, 0x0210, 0x0296,\n    0x02EC, 0x030D, 0x030F, 0x02FE, 0x02E3, 0x02CB, 0x02BF, 0x02BF,\n    0x02C2, 0x02C8, 0x02CE, 0x02D3, 0x09C3, 0x09C3, 0x091E, 0x077B,\n    0x0548, 0x02F7, 0x00F6, 0xFFB7, 0xFF51, 0xFF6F, 0xFFDE, 0x006A,\n    0x00DF, 0x010A, 0x00E0, 0x0088, 0x0016, 0xFF9E, 0xFF33, 0x1117,\n    0x1117, 0x10D0, 0x1009, 0x0ED3, 0x0D3E, 0x0B5C, 0x093D, 0x063A,\n    0x0222, 0xFDBD, 0xF9D2, 0xF72A, 0xF68C, 0xF8D9, 0xFDB0, 0x03F9,\n    0x0AA1, 0x108E, 0x002B, 0x002B, 0xFFF8, 0xFF74, 0xFEC2, 0xFE05,\n    0xFD5F, 0xFCF5, 0xFCC8, 0xFCBC, 0xFCC8, 0xFCE2, 0xFD01, 0xFD1A,\n    0xFD32, 0xFD53, 0xFD79, 0xFD9F, 0xFDC4, 0xF84C, 0xF84C, 0xF8B6,\n    0xF9C7, 0xFB3B, 0xFCCF, 0xFE3F, 0xFF47, 0xFFE5, 0x004E, 0x0094,\n    0x00C6, 0x00F4, 0x012D, 0x016B, 0x01A0, 0x01D0, 0x01FF, 0x0230,\n    0xEFE7, 0xEFE7, 0xEFE7, 0xF001, 0xF05D, 0xF123, 0xF27C, 0xF48E,\n    0xF7A1, 0xFBA3, 0x0036, 0x0500, 0x09A1, 0x0DBE, 0x1146, 0x147E,\n    0x1789, 0x1A87, 0x1D9D, 0x3DB1,\n};\n\n// 0x06018B00\nstatic const u16 piranha_plant_seg6_animindex_06018B00[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0000, 0x0001, 0x0003, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x019B,\n    0x0013, 0x0162, 0x0013, 0x0175, 0x0013, 0x0188,\n    0x0013, 0x0129, 0x0013, 0x013C, 0x0013, 0x014F,\n    0x0013, 0x00ED, 0x0013, 0x0100, 0x0013, 0x0113,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00EC,\n    0x0013, 0x0004, 0x0013, 0x0017, 0x0013, 0x002A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00E8,\n    0x0013, 0x003D, 0x0013, 0x0050, 0x0013, 0x0063,\n    0x0001, 0x0126, 0x0001, 0x0127, 0x0001, 0x0128,\n    0x0013, 0x0076, 0x0013, 0x0089, 0x0013, 0x009C,\n    0x0001, 0x00E9, 0x0001, 0x00EA, 0x0001, 0x00EB,\n    0x0013, 0x00AF, 0x0013, 0x00C2, 0x0013, 0x00D5,\n};\n\n// 0x06018BA8\nstatic const struct Animation piranha_plant_seg6_anim_06018BA8 = {\n    0,\n    0,\n    0,\n    0,\n    0x13,\n    ANIMINDEX_NUMPARTS(piranha_plant_seg6_animindex_06018B00),\n    piranha_plant_seg6_animvalue_060187C8,\n    piranha_plant_seg6_animindex_06018B00,\n    0,\n};\n"
  },
  {
    "path": "actors/piranha_plant/anims/anim_06019854.inc.c",
    "content": "// 0x06018BC0\nstatic const s16 piranha_plant_seg6_animvalue_06018BC0[] = {\n    0x0000, 0x000E, 0x0003, 0x3FFF, 0x0124, 0x0124, 0x0124, 0x0124,\n    0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0124, 0x0125,\n    0x0125, 0x0125, 0x0125, 0x0125, 0x0125, 0x0124, 0x0124, 0x0124,\n    0x0124, 0x0125, 0x0128, 0x012D, 0x0131, 0x0133, 0x0131, 0x012C,\n    0x0127, 0x0124, 0x0123, 0x0121, 0x0120, 0x0120, 0x0121, 0x0124,\n    0x012A, 0x0131, 0x013B, 0x0145, 0x0151, 0x015D, 0x0169, 0x0174,\n    0x017E, 0x0186, 0x018D, 0x0191, 0x0192, 0x018F, 0x0189, 0x017E,\n    0x015B, 0x0117, 0x00C3, 0x006E, 0x0027, 0x0000, 0xFFF0, 0xFFE4,\n    0xFFDD, 0xFFDA, 0xFFD9, 0xFFDB, 0xFFDF, 0xFFE4, 0xFFEB, 0xFFF1,\n    0xFFF7, 0xFFFC, 0xFFFF, 0x0000, 0xFF09, 0xFF09, 0xFF09, 0xFF09,\n    0xFF09, 0xFF09, 0xFF09, 0xFF09, 0xFF09, 0xFF09, 0xFF0A, 0xFF0A,\n    0xFF0A, 0xFF0A, 0xFF0A, 0xFF0A, 0xFF0A, 0xFF09, 0xFF09, 0xFF08,\n    0xFF09, 0xFF0A, 0xFF0E, 0xFF14, 0xFF19, 0xFF1C, 0xFF19, 0xFF13,\n    0xFF0D, 0xFF09, 0xFF07, 0xFF03, 0xFF00, 0xFF00, 0xFF02, 0xFF09,\n    0xFF14, 0xFF20, 0xFF2C, 0xFF3A, 0xFF48, 0xFF56, 0xFF65, 0xFF75,\n    0xFF84, 0xFF93, 0xFFA2, 0xFFB1, 0xFFBF, 0xFFCD, 0xFFD9, 0xFFE5,\n    0xFFEF, 0xFFF6, 0xFFFA, 0xFFFD, 0xFFFF, 0x0000, 0x0001, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0001, 0x0001,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x56FC, 0x56FD, 0x56FD, 0x56FE,\n    0x56FF, 0x56FF, 0x56FF, 0x56FE, 0x56FC, 0x56F9, 0x56F4, 0x56EE,\n    0x56E8, 0x56E2, 0x56DE, 0x56DB, 0x56E3, 0x56F7, 0x570C, 0x5717,\n    0x570E, 0x56E5, 0x5663, 0x5593, 0x54D3, 0x5480, 0x54D9, 0x55A0,\n    0x5676, 0x56FC, 0x5752, 0x57BA, 0x580C, 0x5822, 0x57D4, 0x56FC,\n    0x55C1, 0x5467, 0x52F2, 0x5166, 0x4FC7, 0x4E19, 0x4C5F, 0x4A9E,\n    0x48D9, 0x4714, 0x4553, 0x439A, 0x41ED, 0x4050, 0x3EC7, 0x3D54,\n    0x3BAA, 0x39C1, 0x3807, 0x36EB, 0x36DC, 0x384A, 0x3B08, 0x3E88,\n    0x42A3, 0x4730, 0x4C09, 0x5107, 0x5601, 0x5AD2, 0x5F50, 0x6356,\n    0x66BB, 0x6959, 0x6B07, 0x6B9F, 0xFF77, 0xFF76, 0xFF73, 0xFF6F,\n    0xFF69, 0xFF63, 0xFF5C, 0xFF54, 0xFF4C, 0xFF40, 0xFF31, 0xFF22,\n    0xFF18, 0xFF18, 0xFF1F, 0xFF23, 0xFF1C, 0xFF13, 0xFF0F, 0xFF16,\n    0xFF22, 0xFF2C, 0xFF30, 0xFF32, 0xFF33, 0xFF33, 0xFF32, 0xFF2F,\n    0xFF2D, 0xFF2D, 0xFF2E, 0xFF2F, 0xFF31, 0xFF34, 0xFF3A, 0xFF42,\n    0xFF4D, 0xFF59, 0xFF64, 0xFF70, 0xFF7D, 0xFF8A, 0xFF97, 0xFFA4,\n    0xFFB2, 0xFFC0, 0xFFCE, 0xFFDC, 0xFFEB, 0xFFF9, 0x0007, 0x0016,\n    0x002F, 0x004F, 0x005C, 0x0043, 0x0019, 0x0000, 0xFFFC, 0xFFF9,\n    0xFFF6, 0xFFF5, 0xFFF5, 0xFFF6, 0xFFF7, 0xFFF9, 0xFFFA, 0xFFFC,\n    0xFFFE, 0xFFFF, 0x0000, 0x0000, 0xFEAD, 0xFEAD, 0xFEAE, 0xFEB0,\n    0xFEB2, 0xFEB5, 0xFEB9, 0xFEBD, 0xFEC1, 0xFEC9, 0xFED4, 0xFEDF,\n    0xFEE6, 0xFEE5, 0xFEDF, 0xFEDD, 0xFEE2, 0xFEEA, 0xFEED, 0xFEE7,\n    0xFEDD, 0xFED6, 0xFED3, 0xFED1, 0xFED1, 0xFED1, 0xFED2, 0xFED4,\n    0xFED5, 0xFED5, 0xFED4, 0xFED2, 0xFED0, 0xFECD, 0xFECA, 0xFEC7,\n    0xFEC3, 0xFEBE, 0xFEB9, 0xFEB2, 0xFEAB, 0xFEA4, 0xFE9E, 0xFE97,\n    0xFE91, 0xFE8D, 0xFE89, 0xFE87, 0xFE87, 0xFE88, 0xFE8C, 0xFE93,\n    0xFEBD, 0xFF0E, 0xFF5B, 0xFF9F, 0xFFDF, 0x0000, 0x0008, 0x000E,\n    0x0012, 0x0013, 0x0014, 0x0013, 0x0011, 0x000E, 0x000B, 0x0007,\n    0x0004, 0x0002, 0x0000, 0x0000, 0x618E, 0x61AB, 0x61FF, 0x6282,\n    0x632C, 0x63F8, 0x64DD, 0x65D6, 0x66DA, 0x6864, 0x6A82, 0x6C91,\n    0x6DEC, 0x6DD3, 0x6CDA, 0x6C5F, 0x6D3F, 0x6E9C, 0x6F33, 0x6E32,\n    0x6C6B, 0x6B14, 0x6A87, 0x6A42, 0x6A2A, 0x6A25, 0x6A4B, 0x6AA1,\n    0x6AEB, 0x6AEE, 0x6ABF, 0x6A8E, 0x6A47, 0x69D4, 0x691F, 0x6813,\n    0x66CC, 0x6572, 0x6408, 0x6290, 0x610C, 0x5F7F, 0x5DE9, 0x5C4E,\n    0x5AAF, 0x590E, 0x576E, 0x55D1, 0x5438, 0x52A6, 0x511D, 0x4F9E,\n    0x4CF9, 0x4A88, 0x4C23, 0x5653, 0x648F, 0x6D12, 0x6F3F, 0x7103,\n    0x726A, 0x737C, 0x7445, 0x74CE, 0x7520, 0x7547, 0x754D, 0x753A,\n    0x751B, 0x74F8, 0x74DB, 0x74CF, 0x05C4, 0x0515, 0x033F, 0x0095,\n    0xFD6B, 0xFA12, 0xF6DE, 0xF420, 0xF22D, 0xF118, 0xF099, 0xF07F,\n    0xF098, 0xF0B0, 0xF094, 0xF013, 0xEF0D, 0xEDA5, 0xEC0F, 0xEA7C,\n    0xE922, 0xE831, 0xE78B, 0xE6F4, 0xE676, 0xE61A, 0xE5EB, 0xE5F1,\n    0xE636, 0xE6C5, 0xE80A, 0xEA21, 0xEC9F, 0xEF13, 0xF112, 0xF22D,\n    0xF2AD, 0xF320, 0xF386, 0xF3DF, 0xF428, 0xF461, 0xF489, 0xF49E,\n    0xF4A0, 0xF48D, 0xF465, 0xF425, 0xF3CE, 0xF35E, 0xF2D3, 0xF22D,\n    0xF0AB, 0xEDF0, 0xEA96, 0xE734, 0xE463, 0xE2BC, 0xE1F3, 0xE155,\n    0xE0DF, 0xE08A, 0xE053, 0xE036, 0xE02D, 0xE034, 0xE046, 0xE05F,\n    0xE07B, 0xE094, 0xE0A7, 0xE0AE, 0x0668, 0x0663, 0x0655, 0x0641,\n    0x0629, 0x0610, 0x05F8, 0x05E3, 0x05D5, 0x05CC, 0x05C7, 0x05C5,\n    0x05C4, 0x05C5, 0x05C5, 0x05C5, 0x05C5, 0x05C5, 0x05C6, 0x05C7,\n    0x05C9, 0x05CA, 0x05CB, 0x05CD, 0x05CE, 0x05D0, 0x05D1, 0x05D3,\n    0x05D4, 0x05D5, 0x05D5, 0x05D5, 0x05D5, 0x05D5, 0x05D5, 0x05D5,\n    0x05E5, 0x0610, 0x0650, 0x069E, 0x06F6, 0x074F, 0x07A4, 0x07EF,\n    0x0828, 0x084B, 0x0850, 0x0832, 0x07E9, 0x0771, 0x06C1, 0x05D5,\n    0x036A, 0xFEFD, 0xF9A1, 0xF469, 0xF06B, 0xEEBA, 0xEEDB, 0xEF8B,\n    0xF0B3, 0xF23B, 0xF40C, 0xF60F, 0xF82C, 0xFA4D, 0xFC59, 0xFE3B,\n    0xFFDA, 0x011E, 0x01F2, 0x023E, 0x64AF, 0x6502, 0x65E3, 0x6728,\n    0x68AC, 0x6A46, 0x6BCE, 0x6D1D, 0x6E0B, 0x6E9A, 0x6EED, 0x6F14,\n    0x6F1C, 0x6F14, 0x6F0A, 0x6F0C, 0x6F12, 0x6F0B, 0x6EFB, 0x6EE6,\n    0x6ECF, 0x6EBA, 0x6EA6, 0x6E8F, 0x6E76, 0x6E5D, 0x6E44, 0x6E2E,\n    0x6E1A, 0x6E0B, 0x6E02, 0x6E00, 0x6E02, 0x6E06, 0x6E09, 0x6E0B,\n    0x6E13, 0x6E28, 0x6E47, 0x6E6D, 0x6E97, 0x6EC2, 0x6EEB, 0x6F10,\n    0x6F2B, 0x6F3C, 0x6F3F, 0x6F30, 0x6F0D, 0x6ED3, 0x6E7E, 0x6E0B,\n    0x6CD8, 0x6AA2, 0x67F8, 0x6569, 0x6385, 0x62DB, 0x632C, 0x63D1,\n    0x64BD, 0x65DF, 0x672B, 0x6891, 0x6A03, 0x6B73, 0x6CD1, 0x6E11,\n    0x6F22, 0x6FF8, 0x7082, 0x70B4, 0xFB95, 0xFC11, 0xFD5D, 0xFF40,\n    0x017D, 0x03DC, 0x0621, 0x0812, 0x0973, 0x0A1B, 0x0A30, 0x09F5,\n    0x09AA, 0x0990, 0x09E7, 0x0AF0, 0x0D47, 0x10DB, 0x14ED, 0x18BB,\n    0x1B86, 0x1C8D, 0x1BCC, 0x19F5, 0x1757, 0x1442, 0x1104, 0x0DEE,\n    0x0B4E, 0x0973, 0x0880, 0x083D, 0x086D, 0x08D8, 0x0942, 0x0973,\n    0x0965, 0x093E, 0x0904, 0x08BE, 0x086F, 0x081F, 0x07D2, 0x078F,\n    0x075B, 0x073C, 0x0737, 0x0753, 0x0794, 0x0800, 0x089E, 0x0973,\n    0x0B81, 0x0F3B, 0x13CB, 0x185E, 0x1C21, 0x1E3E, 0x1F1D, 0x1FB6,\n    0x2012, 0x2039, 0x2035, 0x200D, 0x1FC9, 0x1F74, 0x1F14, 0x1EB2,\n    0x1E58, 0x1E0D, 0x1DD9, 0x1DC6, 0x09FF, 0x09D4, 0x0962, 0x08BB,\n    0x07F6, 0x0725, 0x065D, 0x05B2, 0x0539, 0x04FB, 0x04E9, 0x04F1,\n    0x0502, 0x0509, 0x04F6, 0x04B6, 0x0425, 0x0349, 0x0251, 0x016A,\n    0x00C2, 0x0086, 0x00B7, 0x012C, 0x01D1, 0x0293, 0x035E, 0x0420,\n    0x04C4, 0x0539, 0x0574, 0x0585, 0x0579, 0x055F, 0x0545, 0x0539,\n    0x0545, 0x0567, 0x0599, 0x05D6, 0x061B, 0x0660, 0x06A3, 0x06DD,\n    0x070A, 0x0725, 0x072A, 0x0712, 0x06D9, 0x067B, 0x05F2, 0x0539,\n    0x034E, 0xFFC8, 0xFB87, 0xF76C, 0xF457, 0xF329, 0xF381, 0xF456,\n    0xF593, 0xF725, 0xF8F4, 0xFAED, 0xFCFA, 0xFF05, 0x00F9, 0x02C3,\n    0x044C, 0x057F, 0x0646, 0x068D, 0x1C05, 0x1BA7, 0x1AA8, 0x1936,\n    0x177E, 0x15AD, 0x13F0, 0x1274, 0x1166, 0x10CD, 0x1083, 0x106F,\n    0x1077, 0x1084, 0x107A, 0x1042, 0x0FC3, 0x0F0D, 0x0E46, 0x0D90,\n    0x0D11, 0x0CED, 0x0D25, 0x0D98, 0x0E36, 0x0EEC, 0x0FAA, 0x105F,\n    0x10F8, 0x1166, 0x119E, 0x11AE, 0x11A3, 0x118A, 0x1171, 0x1166,\n    0x115D, 0x1147, 0x1125, 0x10FB, 0x10CD, 0x109E, 0x1071, 0x1049,\n    0x102B, 0x1018, 0x1016, 0x1026, 0x104C, 0x108C, 0x10E9, 0x1166,\n    0x12AE, 0x1508, 0x17E0, 0x1AA4, 0x1CBF, 0x1D9E, 0x1D84, 0x1D1B,\n    0x1C72, 0x1B95, 0x1A90, 0x1971, 0x1844, 0x1716, 0x15F3, 0x14E8,\n    0x1403, 0x134F, 0x12DA, 0x12B0, 0xC05D, 0xE128, 0xC001, 0xE128,\n    0xC05D, 0xFEDE, 0xFEE0, 0xFEE4, 0xFEEB, 0xFEF2, 0xFEFA, 0xFF01,\n    0xFF07, 0xFF0A, 0xFF0B, 0xFF0A, 0xFF09, 0xFF06, 0xFF02, 0xFEFE,\n    0xFEFA, 0xFEF5, 0xFEEE, 0xFEE6, 0xFEDE, 0xFED8, 0xFED4, 0xFED3,\n    0xFED2, 0xFED3, 0xFED4, 0xFED6, 0xFED8, 0xFEDB, 0xFEDD, 0xFEE0,\n    0xFEE5, 0xFEEA, 0xFEEF, 0xFEF2, 0xFEF4, 0xFEF2, 0xFEEC, 0xFEE3,\n    0xFED6, 0xFEC9, 0xFEBB, 0xFEAD, 0xFEA1, 0xFE97, 0xFE91, 0xFE90,\n    0xFE94, 0xFE9E, 0xFEB0, 0xFECA, 0xFEEE, 0xFF4B, 0xFFF6, 0x00C4,\n    0x018F, 0x022C, 0x0273, 0x0276, 0x0265, 0x0244, 0x0215, 0x01DB,\n    0x019A, 0x0155, 0x010F, 0x00CB, 0x008C, 0x0056, 0x002C, 0x0010,\n    0x0006, 0xFFDE, 0xFF25, 0xFD42, 0xFAA4, 0xF7B6, 0xF4E7, 0xF2A4,\n    0xF159, 0xF174, 0xF3C7, 0xF83D, 0xFDE8, 0x03D9, 0x0925, 0x0CDC,\n    0x0E11, 0x0B7E, 0x0590, 0xFDEA, 0xF626, 0xEFE7, 0xECCC, 0xECB5,\n    0xEE29, 0xF0BF, 0xF40B, 0xF7A4, 0xFB20, 0xFE15, 0x0017, 0x0118,\n    0x0171, 0x0158, 0x0101, 0x00A3, 0x0074, 0x006F, 0x006C, 0x0069,\n    0x0066, 0x0063, 0x005F, 0x005A, 0x0053, 0x004A, 0x003D, 0x002E,\n    0x001A, 0x0002, 0xFFE7, 0xFFC4, 0xFF9C, 0xFF37, 0xFE80, 0xFDAF,\n    0xFCFA, 0xFC97, 0xFCBE, 0xFD58, 0xFE28, 0xFF23, 0x003D, 0x016E,\n    0x02AA, 0x03E8, 0x051D, 0x063F, 0x0743, 0x0820, 0x08CA, 0x0938,\n    0x095E, 0xFF4A, 0xFE7A, 0xFC4F, 0xF931, 0xF588, 0xF1BD, 0xEE38,\n    0xEB60, 0xE99E, 0xE8FA, 0xE91A, 0xE9D2, 0xEAF4, 0xEC53, 0xEDC4,\n    0xEF1A, 0xF07A, 0xF21C, 0xF3EA, 0xF5CE, 0xF7B2, 0xF981, 0xFB38,\n    0xFCE7, 0xFE93, 0x0040, 0x01F4, 0x03B5, 0x0587, 0x076E, 0x09E5,\n    0x0D02, 0x1037, 0x12F7, 0x14B3, 0x14DF, 0x13D0, 0x1246, 0x1056,\n    0x0E13, 0x0B92, 0x08E5, 0x0621, 0x035A, 0x00A3, 0xFE11, 0xFBB7,\n    0xF9A7, 0xF7F8, 0xF6BC, 0xF606, 0xF5EC, 0xF87E, 0xFEA4, 0x06B4,\n    0x0F09, 0x15F7, 0x19D7, 0x1B63, 0x1C79, 0x1D27, 0x1D7D, 0x1D87,\n    0x1D54, 0x1CF2, 0x1C6F, 0x1BDA, 0x1B40, 0x1AB0, 0x1A38, 0x19E5,\n    0x19C6, 0xE128, 0xC001, 0xE128, 0x02D3, 0x02CC, 0x02BB, 0x02A3,\n    0x0287, 0x026A, 0x024F, 0x0239, 0x022C, 0x0229, 0x022D, 0x0235,\n    0x0241, 0x024E, 0x025B, 0x0266, 0x026F, 0x0278, 0x0282, 0x028C,\n    0x0296, 0x029F, 0x02A9, 0x02B3, 0x02BE, 0x02C8, 0x02D2, 0x02DB,\n    0x02E2, 0x02E7, 0x02E9, 0x02E8, 0x02E4, 0x02DF, 0x02DB, 0x02D8,\n    0x02D9, 0x02DD, 0x02E3, 0x02EB, 0x02F5, 0x02FE, 0x0307, 0x030F,\n    0x0315, 0x0319, 0x0318, 0x0314, 0x030A, 0x02FB, 0x02E6, 0x02C9,\n    0x0282, 0x0204, 0x0169, 0x00CE, 0x004E, 0x0006, 0xFFE8, 0xFFD2,\n    0xFFC5, 0xFFBE, 0xFFBD, 0xFFC0, 0xFFC7, 0xFFD1, 0xFFDC, 0xFFE8,\n    0xFFF3, 0xFFFC, 0x0001, 0x0003, 0xFF33, 0xFFA9, 0x00DC, 0x0287,\n    0x0461, 0x0626, 0x078C, 0x084F, 0x0827, 0x068D, 0x038E, 0xFFC5,\n    0xFBC8, 0xF830, 0xF597, 0xF496, 0xF5E7, 0xF941, 0xFDB1, 0x0241,\n    0x0601, 0x07FD, 0x084B, 0x07CA, 0x06AE, 0x052F, 0x0383, 0x01E0,\n    0x007E, 0xFF92, 0xFF1C, 0xFEEA, 0xFEEA, 0xFF07, 0xFF2D, 0xFF48,\n    0xFF5A, 0xFF70, 0xFF89, 0xFFA4, 0xFFC2, 0xFFE1, 0x0000, 0x0020,\n    0x0040, 0x005F, 0x007E, 0x009A, 0x00B4, 0x00CB, 0x00DE, 0x00ED,\n    0x00DD, 0x00A4, 0x0060, 0x002C, 0x0025, 0x0068, 0x00EC, 0x0193,\n    0x0255, 0x032B, 0x040D, 0x04F6, 0x05DD, 0x06BD, 0x078D, 0x0848,\n    0x08E5, 0x095E, 0x09AB, 0x09C7, 0x108E, 0x1153, 0x135D, 0x164B,\n    0x19B7, 0x1D40, 0x2081, 0x2318, 0x24A0, 0x2505, 0x2498, 0x2390,\n    0x2225, 0x208C, 0x1EFC, 0x1DAE, 0x1C89, 0x1B56, 0x1A17, 0x18CF,\n    0x1781, 0x1631, 0x14C5, 0x1331, 0x118A, 0x0FE8, 0x0E60, 0x0D09,\n    0x0BF9, 0x0B46, 0x0B5A, 0x0C47, 0x0D97, 0x0ED6, 0x0F92, 0x0F56,\n    0x0E50, 0x0D02, 0x0B78, 0x09BF, 0x07E3, 0x05F1, 0x03F4, 0x01F9,\n    0x000C, 0xFE3B, 0xFC90, 0xFB18, 0xF9DF, 0xF8F2, 0xF85D, 0xF82C,\n    0xF9C7, 0xFDCD, 0x0320, 0x08A6, 0x0D41, 0x0FD3, 0x10D8, 0x1190,\n    0x1204, 0x123D, 0x1245, 0x1224, 0x11E5, 0x1190, 0x112F, 0x10CB,\n    0x106C, 0x101E, 0x0FE8, 0x0FD4, 0xFDC4, 0xFDC0, 0xFDB5, 0xFDA5,\n    0xFD93, 0xFD7E, 0xFD6B, 0xFD5A, 0xFD4D, 0xFD44, 0xFD3D, 0xFD38,\n    0xFD34, 0xFD31, 0xFD2E, 0xFD2A, 0xFD27, 0xFD24, 0xFD22, 0xFD1F,\n    0xFD1D, 0xFD1B, 0xFD18, 0xFD15, 0xFD13, 0xFD10, 0xFD0D, 0xFD0B,\n    0xFD07, 0xFD04, 0xFCFF, 0xFCFA, 0xFCF3, 0xFCEE, 0xFCE9, 0xFCE7,\n    0xFCE6, 0xFCE7, 0xFCE9, 0xFCEC, 0xFCEF, 0xFCF3, 0xFCF7, 0xFCFA,\n    0xFCFD, 0xFCFF, 0xFCFF, 0xFCFE, 0xFCFB, 0xFCF6, 0xFCEE, 0xFCE3,\n    0xFCC2, 0xFC82, 0xFC38, 0xFBF6, 0xFBD0, 0xFBDA, 0xFC0C, 0xFC50,\n    0xFCA2, 0xFCFF, 0xFD64, 0xFDCC, 0xFE35, 0xFE9B, 0xFEFB, 0xFF51,\n    0xFF9A, 0xFFD3, 0xFFF7, 0x0003, 0x0230, 0x0246, 0x027C, 0x02C6,\n    0x0313, 0x0355, 0x037E, 0x037E, 0x0349, 0x02B7, 0x01C9, 0x00A6,\n    0xFF76, 0xFE61, 0xFD8E, 0xFD25, 0xFD55, 0xFE09, 0xFF05, 0x000D,\n    0x00E6, 0x0153, 0x0157, 0x0126, 0x00D1, 0x0065, 0xFFF4, 0xFF8B,\n    0xFF3A, 0xFF11, 0xFF1E, 0xFF59, 0xFFAD, 0x0004, 0x004B, 0x006C,\n    0x0071, 0x0073, 0x0071, 0x006C, 0x0065, 0x005B, 0x004F, 0x0041,\n    0x0031, 0x0020, 0x000E, 0xFFFC, 0xFFE8, 0xFFD5, 0xFFC1, 0xFFAD,\n    0xFF9B, 0xFF89, 0xFF70, 0xFF4B, 0xFF13, 0xFEC2, 0xFE58, 0xFDDA,\n    0xFD4E, 0xFCB7, 0xFC19, 0xFB79, 0xFADC, 0xFA46, 0xF9BB, 0xF93F,\n    0xF8D7, 0xF888, 0xF855, 0xF843, 0x1D9D, 0x1BBA, 0x16AB, 0x0F55,\n    0x06A0, 0xFD72, 0xF4AF, 0xED3F, 0xE809, 0xE50D, 0xE378, 0xE2F3,\n    0xE325, 0xE3B6, 0xE44F, 0xE496, 0xE4B8, 0xE514, 0xE5A3, 0xE659,\n    0xE72D, 0xE816, 0xE901, 0xE9E8, 0xEAD9, 0xEBDF, 0xED06, 0xEE59,\n    0xEFE5, 0xF1B6, 0xF459, 0xF7ED, 0xFBD8, 0xFF7F, 0x0246, 0x0395,\n    0x03C9, 0x03B0, 0x0354, 0x02BF, 0x01FD, 0x0118, 0x001B, 0xFF11,\n    0xFE04, 0xFCFE, 0xFC0B, 0xFB35, 0xFA86, 0xFA0B, 0xF9CD, 0xF9D6,\n    0xFB11, 0xFDD4, 0x014D, 0x04AB, 0x071B, 0x07CD, 0x0713, 0x05DC,\n    0x043F, 0x0250, 0x0028, 0xFDDC, 0xFB81, 0xF92E, 0xF6FA, 0xF4FB,\n    0xF347, 0xF1F3, 0xF118, 0xF0C9, 0x3DB1, 0x0000,\n};\n\n// 0x060197AC\nstatic const u16 piranha_plant_seg6_animindex_060197AC[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0000, 0x0001, 0x0003, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x05F4,\n    0x0048, 0x051C, 0x0048, 0x0564, 0x0048, 0x05AC,\n    0x0048, 0x0444, 0x0048, 0x048C, 0x0048, 0x04D4,\n    0x0048, 0x0369, 0x0048, 0x03B1, 0x0048, 0x03F9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0368,\n    0x0048, 0x0004, 0x0048, 0x004C, 0x0048, 0x0094,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0364,\n    0x0048, 0x00DC, 0x0048, 0x0124, 0x0048, 0x016C,\n    0x0001, 0x0441, 0x0001, 0x0442, 0x0001, 0x0443,\n    0x0048, 0x01B4, 0x0048, 0x01FC, 0x0048, 0x0244,\n    0x0001, 0x0365, 0x0001, 0x0366, 0x0001, 0x0367,\n    0x0048, 0x028C, 0x0048, 0x02D4, 0x0048, 0x031C,\n};\n\n// 0x06019854\nstatic const struct Animation piranha_plant_seg6_anim_06019854 = {\n    0,\n    0,\n    0,\n    0,\n    0x48,\n    ANIMINDEX_NUMPARTS(piranha_plant_seg6_animindex_060197AC),\n    piranha_plant_seg6_animvalue_06018BC0,\n    piranha_plant_seg6_animindex_060197AC,\n    0,\n};\n"
  },
  {
    "path": "actors/piranha_plant/anims/anim_0601A014.inc.c",
    "content": "// 0x0601986C\nstatic const s16 piranha_plant_seg6_animvalue_0601986C[] = {\n    0x0000, 0x000E, 0x0003, 0x3FFF, 0x0124, 0x0126, 0x012C, 0x0134,\n    0x013C, 0x0143, 0x0147, 0x0147, 0x0142, 0x0134, 0x011D, 0x0100,\n    0x00E1, 0x00C2, 0x00A6, 0x008C, 0x0071, 0x0056, 0x003C, 0x0025,\n    0x0012, 0x0006, 0x0001, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF,\n    0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFF09, 0xFF0A,\n    0xFF0C, 0xFF0F, 0xFF13, 0xFF19, 0xFF20, 0xFF28, 0xFF31, 0xFF3D,\n    0xFF4D, 0xFF5E, 0xFF71, 0xFF84, 0xFF95, 0xFFA6, 0xFFB8, 0xFFCA,\n    0xFFDB, 0xFFEB, 0xFFF7, 0x0000, 0x0003, 0x0004, 0x0004, 0x0004,\n    0x0005, 0x0005, 0x0004, 0x0004, 0x0004, 0x0003, 0x0003, 0x0002,\n    0x0002, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x56FC, 0x56B4, 0x55F7, 0x54F3, 0x53D2, 0x52C3, 0x51F0, 0x5186,\n    0x51B1, 0x52BE, 0x54A7, 0x5715, 0x59B5, 0x5C31, 0x5E35, 0x5FA4,\n    0x60BD, 0x61B3, 0x62B8, 0x6400, 0x65BD, 0x68D6, 0x6D08, 0x70C9,\n    0x7290, 0x72BE, 0x72BC, 0x7290, 0x723F, 0x71D0, 0x7149, 0x70AE,\n    0x7007, 0x6F59, 0x6EA9, 0x6DFE, 0x6D5D, 0x6CCC, 0x6C51, 0x6BF2,\n    0x6BB5, 0x6B9F, 0xFF77, 0xFF76, 0xFF73, 0xFF70, 0xFF6C, 0xFF69,\n    0xFF67, 0xFF67, 0xFF69, 0xFF71, 0xFF7E, 0xFF8E, 0xFF9E, 0xFFAB,\n    0xFFB2, 0xFFCE, 0x0003, 0x0037, 0x0049, 0x001D, 0xFF95, 0xFE4F,\n    0xFC53, 0xFA17, 0xF815, 0xF6C4, 0xF69B, 0xF81A, 0xFAF9, 0xFE89,\n    0x021A, 0x04FF, 0x0688, 0x06CD, 0x0677, 0x05AC, 0x0495, 0x0357,\n    0x021C, 0x010A, 0x0049, 0x0000, 0xFEAD, 0xFEAC, 0xFEA9, 0xFEA6,\n    0xFEA4, 0xFEA3, 0xFEA4, 0xFEA9, 0xFEB3, 0xFEC5, 0xFEE1, 0xFF02,\n    0xFF23, 0xFF40, 0xFF54, 0xFF5B, 0xFF5A, 0xFF55, 0xFF4F, 0xFF4F,\n    0xFF58, 0xFF6D, 0xFF8C, 0xFFB0, 0xFFD4, 0xFFF3, 0x0006, 0x000F,\n    0x0010, 0x000C, 0x0006, 0x0000, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE,\n    0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x618E, 0x618C,\n    0x618A, 0x6190, 0x61A5, 0x61D2, 0x621D, 0x628F, 0x632F, 0x63D6,\n    0x647F, 0x6562, 0x66BB, 0x68C2, 0x6BB1, 0x705D, 0x76C2, 0x7DD5,\n    0x8490, 0x89E1, 0x8CC0, 0x8C96, 0x8A1A, 0x8636, 0x81D9, 0x7DEA,\n    0x7B5C, 0x7A3B, 0x79CE, 0x79D2, 0x7A07, 0x7A2A, 0x79FA, 0x7974,\n    0x78CC, 0x780E, 0x7748, 0x7688, 0x75DC, 0x7550, 0x74F2, 0x74CF,\n    0x05C4, 0x05E0, 0x0624, 0x0678, 0x06C4, 0x06F0, 0x06E4, 0x0688,\n    0x05C4, 0x049A, 0x030F, 0x0112, 0xFE93, 0xFB7F, 0xF7C4, 0xF2DD,\n    0xECBF, 0xE60B, 0xDF66, 0xD974, 0xD4D8, 0xD36B, 0xD4C8, 0xD637,\n    0xD6CF, 0xD777, 0xD82A, 0xD8E6, 0xD9A8, 0xDA6E, 0xDB34, 0xDBF8,\n    0xDCB7, 0xDD6E, 0xDE19, 0xDEB8, 0xDF45, 0xDFBF, 0xE023, 0xE06E,\n    0xE09D, 0xE0AE, 0x0668, 0x0661, 0x0650, 0x063B, 0x0627, 0x061C,\n    0x061F, 0x0636, 0x0668, 0x0707, 0x0820, 0x0956, 0x0A4B, 0x0AA1,\n    0x09F9, 0x07A1, 0x03C0, 0xFF40, 0xFB09, 0xF806, 0xF720, 0xFD2D,\n    0x0806, 0x0E1F, 0x0E7D, 0x0E8D, 0x0E58, 0x0DE7, 0x0D43, 0x0C74,\n    0x0B83, 0x0A79, 0x095F, 0x083E, 0x071D, 0x0607, 0x0503, 0x041B,\n    0x0357, 0x02C1, 0x0260, 0x023E, 0x64AF, 0x6478, 0x63F2, 0x634E,\n    0x62B9, 0x6262, 0x627A, 0x632E, 0x64AF, 0x67F2, 0x6D1E, 0x7329,\n    0x7909, 0x7DB5, 0x8024, 0x7FAE, 0x7D11, 0x793F, 0x752D, 0x71D1,\n    0x701F, 0x72C3, 0x783C, 0x7B41, 0x7B2F, 0x7AF0, 0x7A88, 0x79FD,\n    0x7956, 0x7898, 0x77C8, 0x76EC, 0x760A, 0x7528, 0x744B, 0x737A,\n    0x72B8, 0x720E, 0x717F, 0x7112, 0x70CC, 0x70B4, 0xFB95, 0xFB70,\n    0xFB17, 0xFAA8, 0xFA44, 0xFA0A, 0xFA1A, 0xFA93, 0xFB95, 0xFD7D,\n    0x0055, 0x03C4, 0x076E, 0x0AF6, 0x0E02, 0x10A1, 0x131F, 0x157C,\n    0x17B8, 0x19D3, 0x1BCC, 0x1D80, 0x1EB0, 0x1F2F, 0x1F41, 0x1F48,\n    0x1F46, 0x1F3B, 0x1F29, 0x1F11, 0x1EF4, 0x1ED4, 0x1EB1, 0x1E8C,\n    0x1E67, 0x1E44, 0x1E22, 0x1E04, 0x1DEB, 0x1DD7, 0x1DCB, 0x1DC6,\n    0x09FF, 0x0A06, 0x0A17, 0x0A2D, 0x0A40, 0x0A4B, 0x0A48, 0x0A31,\n    0x09FF, 0x09B2, 0x094C, 0x08CA, 0x0826, 0x075D, 0x066B, 0x050F,\n    0x033F, 0x0149, 0xFF7F, 0xFE2C, 0xFDA2, 0xFFB0, 0x03A0, 0x05FE,\n    0x0661, 0x06AF, 0x06EC, 0x0718, 0x0735, 0x0746, 0x074B, 0x0747,\n    0x073B, 0x0729, 0x0712, 0x06F9, 0x06E0, 0x06C7, 0x06B0, 0x069E,\n    0x0692, 0x068D, 0x1C05, 0x1C25, 0x1C72, 0x1CD1, 0x1D27, 0x1D58,\n    0x1D4B, 0x1CE3, 0x1C05, 0x19ED, 0x1678, 0x1283, 0x0EE9, 0x0C86,\n    0x0C36, 0x0EF1, 0x1438, 0x1AB6, 0x2116, 0x2602, 0x2826, 0x21F8,\n    0x15FC, 0x0EEC, 0x0E0B, 0x0D70, 0x0D12, 0x0CED, 0x0CF7, 0x0D2C,\n    0x0D84, 0x0DF8, 0x0E81, 0x0F19, 0x0FB9, 0x1059, 0x10F4, 0x1181,\n    0x11FC, 0x125B, 0x129A, 0x12B0, 0xC05D, 0xE128, 0xC001, 0xE128,\n    0xC05D, 0xFEDE, 0xFF00, 0xFF52, 0xFFB8, 0x0013, 0x0049, 0x003A,\n    0xFFCC, 0xFEDE, 0xFA61, 0xF3BD, 0xF188, 0xF981, 0x05E9, 0x0C1F,\n    0x04DD, 0xF76A, 0xEEF6, 0xF193, 0xF92F, 0xFECC, 0x00D7, 0x0277,\n    0x03B5, 0x049D, 0x0539, 0x0594, 0x05BA, 0x05B2, 0x057F, 0x0529,\n    0x04B7, 0x042F, 0x0399, 0x02FA, 0x025B, 0x01C1, 0x0133, 0x00BA,\n    0x005A, 0x001C, 0x0006, 0xFFDE, 0xFFD9, 0xFFCD, 0xFFBE, 0xFFB1,\n    0xFFA9, 0xFFAB, 0xFFBC, 0xFFDE, 0x0045, 0x00FD, 0x01C7, 0x0299,\n    0x037C, 0x0458, 0x0523, 0x05E5, 0x06A3, 0x077F, 0x0856, 0x08C3,\n    0x08BE, 0x0891, 0x084B, 0x07FC, 0x07B3, 0x077F, 0x076F, 0x077D,\n    0x0795, 0x07B7, 0x07E0, 0x080F, 0x0840, 0x0874, 0x08A6, 0x08D6,\n    0x0902, 0x0928, 0x0945, 0x0958, 0x095E, 0xFF4A, 0xFF28, 0xFED4,\n    0xFE6D, 0xFE0F, 0xFDD9, 0xFDE8, 0xFE59, 0xFF4A, 0x024A, 0x077A,\n    0x0CD0, 0x124B, 0x17EC, 0x1BA5, 0x1C42, 0x1AF8, 0x195A, 0x170B,\n    0x1469, 0x141A, 0x169B, 0x1A44, 0x1E8A, 0x22DF, 0x26B9, 0x298A,\n    0x2AC8, 0x2AC4, 0x2A3C, 0x2946, 0x27F6, 0x2662, 0x249E, 0x22C0,\n    0x20DE, 0x1F0B, 0x1D5E, 0x1BEB, 0x1AC9, 0x1A0A, 0x19C6, 0xE128,\n    0xC001, 0xE128, 0x02D3, 0x02D3, 0x02D5, 0x02D8, 0x02DA, 0x02DB,\n    0x02DB, 0x02D8, 0x02D3, 0x02D7, 0x02E7, 0x02F5, 0x02EF, 0x02C6,\n    0x0269, 0x01B4, 0x00AD, 0xFF83, 0xFE64, 0xFD80, 0xFD07, 0xFCEE,\n    0xFD06, 0xFD43, 0xFD9A, 0xFE01, 0xFE6C, 0xFED0, 0xFF23, 0xFF59,\n    0xFF7B, 0xFF98, 0xFFB1, 0xFFC6, 0xFFD7, 0xFFE5, 0xFFF0, 0xFFF8,\n    0xFFFE, 0x0001, 0x0003, 0x0003, 0xFF33, 0xFF29, 0xFF13, 0xFEF7,\n    0xFEDD, 0xFECF, 0xFED3, 0xFEF1, 0xFF33, 0xFFAA, 0x0059, 0x012F,\n    0x0218, 0x0302, 0x03DA, 0x04B3, 0x059E, 0x068A, 0x0765, 0x081F,\n    0x08A6, 0x0902, 0x0948, 0x097C, 0x09A1, 0x09BB, 0x09CC, 0x09D7,\n    0x09E2, 0x09EE, 0x09F8, 0x09FE, 0x09FF, 0x09FC, 0x09F6, 0x09EF,\n    0x09E6, 0x09DD, 0x09D5, 0x09CD, 0x09C9, 0x09C7, 0x108E, 0x107C,\n    0x1050, 0x101A, 0x0FE9, 0x0FCC, 0x0FD4, 0x1010, 0x108E, 0x11D7,\n    0x1402, 0x1675, 0x189B, 0x19DB, 0x199D, 0x172F, 0x12E8, 0x0DBB,\n    0x089C, 0x047D, 0x0251, 0x01E8, 0x024F, 0x0357, 0x04D2, 0x068F,\n    0x085F, 0x0A15, 0x0B7F, 0x0C71, 0x0D0C, 0x0D96, 0x0E0E, 0x0E76,\n    0x0ECF, 0x0F19, 0x0F56, 0x0F85, 0x0FA9, 0x0FC1, 0x0FCF, 0x0FD4,\n    0xFDC4, 0xFDC0, 0xFDB6, 0xFDAB, 0xFDA0, 0xFD9A, 0xFD9B, 0xFDA8,\n    0xFDC4, 0xFDF8, 0xFE47, 0xFEA6, 0xFF0A, 0xFF6A, 0xFFBB, 0x0003,\n    0x004F, 0x0096, 0x00D1, 0x00FB, 0x010C, 0x010D, 0x010A, 0x0104,\n    0x00FA, 0x00EE, 0x00E0, 0x00D0, 0x00BE, 0x00AC, 0x0099, 0x0085,\n    0x0071, 0x005E, 0x004C, 0x003B, 0x002B, 0x001E, 0x0013, 0x000A,\n    0x0005, 0x0003, 0x0230, 0x023A, 0x0253, 0x0271, 0x028C, 0x029C,\n    0x0298, 0x0277, 0x0230, 0x01AD, 0x00EA, 0xFFFF, 0xFF01, 0xFE08,\n    0xFD2B, 0xFC55, 0xFB6F, 0xFA8E, 0xF9C7, 0xF92D, 0xF8D6, 0xF8AB,\n    0xF886, 0xF868, 0xF84E, 0xF83A, 0xF82B, 0xF81F, 0xF818, 0xF814,\n    0xF812, 0xF813, 0xF816, 0xF81B, 0xF821, 0xF827, 0xF82E, 0xF834,\n    0xF83A, 0xF83F, 0xF842, 0xF843, 0x1D9D, 0x1DE2, 0x1E8B, 0x1F5B,\n    0x2018, 0x2085, 0x2067, 0x1F83, 0x1D9D, 0x19E7, 0x1446, 0x0D8B,\n    0x0687, 0x000B, 0xFAEA, 0xF6E8, 0xF355, 0xF049, 0xEDE0, 0xEC34,\n    0xEB60, 0xEB12, 0xEAE6, 0xEAD9, 0xEAE8, 0xEB0F, 0xEB4C, 0xEB9C,\n    0xEBFB, 0xEC67, 0xECDC, 0xED56, 0xEDD4, 0xEE52, 0xEECD, 0xEF41,\n    0xEFAC, 0xF00A, 0xF059, 0xF095, 0xF0BC, 0xF0C9, 0x3DB1, 0x0000,\n};\n\n// 0x06019F6C\nstatic const u16 piranha_plant_seg6_animindex_06019F6C[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0000, 0x0001, 0x0003, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x037E,\n    0x002A, 0x0300, 0x002A, 0x032A, 0x002A, 0x0354,\n    0x002A, 0x0282, 0x002A, 0x02AC, 0x002A, 0x02D6,\n    0x002A, 0x0201, 0x002A, 0x022B, 0x002A, 0x0255,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0200,\n    0x002A, 0x0004, 0x002A, 0x002E, 0x002A, 0x0058,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01FC,\n    0x002A, 0x0082, 0x002A, 0x00AC, 0x002A, 0x00D6,\n    0x0001, 0x027F, 0x0001, 0x0280, 0x0001, 0x0281,\n    0x002A, 0x0100, 0x002A, 0x012A, 0x002A, 0x0154,\n    0x0001, 0x01FD, 0x0001, 0x01FE, 0x0001, 0x01FF,\n    0x002A, 0x017E, 0x002A, 0x01A8, 0x002A, 0x01D2,\n};\n\n// 0x0601A014\nstatic const struct Animation piranha_plant_seg6_anim_0601A014 = {\n    0,\n    0,\n    0,\n    0,\n    0x2A,\n    ANIMINDEX_NUMPARTS(piranha_plant_seg6_animindex_06019F6C),\n    piranha_plant_seg6_animvalue_0601986C,\n    piranha_plant_seg6_animindex_06019F6C,\n    0,\n};\n"
  },
  {
    "path": "actors/piranha_plant/anims/anim_0601AAE4.inc.c",
    "content": "// 0x0601A02C\nstatic const s16 piranha_plant_seg6_animvalue_0601A02C[] = {\n    0x0000, 0x000E, 0x0003, 0x3FFF, 0x6B9F, 0x6A6B, 0x6792, 0x6439,\n    0x6186, 0x609F, 0x6121, 0x61DE, 0x62D0, 0x63ED, 0x652F, 0x668D,\n    0x6800, 0x697E, 0x6B01, 0x6C7F, 0x6DF2, 0x6F51, 0x7095, 0x71B4,\n    0x72A8, 0x7368, 0x73EC, 0x743A, 0x7462, 0x7465, 0x7449, 0x7412,\n    0x73C3, 0x7362, 0x72F0, 0x7274, 0x71F0, 0x7169, 0x70E3, 0x7061,\n    0x6FE9, 0x6F7D, 0x6F23, 0x6EDD, 0x6EB0, 0x6EA0, 0x6EAA, 0x6EC6,\n    0x6EF2, 0x6F2C, 0x6F72, 0x6FC3, 0x701C, 0x707B, 0x70DE, 0x7144,\n    0x71AA, 0x720E, 0x726F, 0x72CA, 0x731D, 0x7367, 0x73A6, 0x73D7,\n    0x73F8, 0x7408, 0x7405, 0x73EC, 0x7301, 0x70F9, 0x6E7D, 0x6C36,\n    0x6ACE, 0x6A57, 0x6A58, 0x6AA6, 0x6B13, 0x6B75, 0x6B9F, 0x74CF,\n    0x73B7, 0x711B, 0x6DFB, 0x6B5A, 0x6A37, 0x6A42, 0x6A76, 0x6ACF,\n    0x6B48, 0x6BDC, 0x6C86, 0x6D40, 0x6E06, 0x6ED2, 0x6FA0, 0x706A,\n    0x712B, 0x71DE, 0x727E, 0x7305, 0x7370, 0x73B8, 0x73E3, 0x73FD,\n    0x7406, 0x7400, 0x73EE, 0x73D2, 0x73AC, 0x737E, 0x734C, 0x7315,\n    0x72DD, 0x72A5, 0x726E, 0x723B, 0x720D, 0x71E6, 0x71C8, 0x71B5,\n    0x71AE, 0x71AF, 0x71B2, 0x71B7, 0x71BF, 0x71C8, 0x71D4, 0x71E1,\n    0x71F1, 0x7203, 0x7217, 0x722E, 0x7246, 0x7261, 0x727E, 0x729D,\n    0x72BF, 0x72E2, 0x7308, 0x7331, 0x735B, 0x7388, 0x73B8, 0x7424,\n    0x74E3, 0x75BB, 0x7670, 0x76CB, 0x76B7, 0x765E, 0x75E0, 0x755E,\n    0x74F8, 0x74CF, 0xE0AE, 0xE0B1, 0xE0B9, 0xE0BE, 0xE0BD, 0xE0AE,\n    0xE092, 0xE06F, 0xE045, 0xE017, 0xDFE6, 0xDFB2, 0xDF7E, 0xDF4C,\n    0xDF1C, 0xDEF0, 0xDECA, 0xDEAC, 0xDE96, 0xDE8A, 0xDE8A, 0xDE97,\n    0xDEB2, 0xDEE1, 0xDF23, 0xDF76, 0xDFD7, 0xE045, 0xE0BD, 0xE13B,\n    0xE1BE, 0xE242, 0xE2C7, 0xE348, 0xE3C3, 0xE436, 0xE49E, 0xE4F9,\n    0xE545, 0xE57D, 0xE5A1, 0xE5AE, 0xE5A5, 0xE58A, 0xE560, 0xE528,\n    0xE4E3, 0xE493, 0xE43A, 0xE3D8, 0xE370, 0xE304, 0xE294, 0xE223,\n    0xE1B2, 0xE142, 0xE0D5, 0xE06C, 0xE00A, 0xDFB0, 0xDF5E, 0xDF18,\n    0xDEDE, 0xDEB2, 0xDEE7, 0xDF9D, 0xE089, 0xE160, 0xE1D7, 0xE1E1,\n    0xE1B3, 0xE165, 0xE10F, 0xE0CA, 0xE0AE, 0x023E, 0x024A, 0x0263,\n    0x0275, 0x026F, 0x023E, 0x01F0, 0x01A3, 0x0154, 0x0105, 0x00B3,\n    0x005F, 0x0009, 0xFFB0, 0xFF52, 0xFEEF, 0xFE88, 0xFE1C, 0xFDA9,\n    0xFD30, 0xFCB0, 0xFC29, 0xFB9A, 0xFAF9, 0xFA3E, 0xF96F, 0xF88E,\n    0xF7A0, 0xF6A8, 0xF5AA, 0xF4AB, 0xF3AD, 0xF2B6, 0xF1C8, 0xF0E7,\n    0xF018, 0xEF5E, 0xEEBE, 0xEE3A, 0xEDD7, 0xED99, 0xED83, 0xED94,\n    0xEDC3, 0xEE0E, 0xEE73, 0xEEEF, 0xEF81, 0xF024, 0xF0D7, 0xF198,\n    0xF263, 0xF336, 0xF40F, 0xF4EB, 0xF5C8, 0xF6A3, 0xF77A, 0xF849,\n    0xF910, 0xF9CA, 0xFA77, 0xFB12, 0xFB9A, 0xFBBA, 0xFB5C, 0xFAD7,\n    0xFA84, 0xFABB, 0xFBB5, 0xFD38, 0xFEF1, 0x0090, 0x01C5, 0x023E,\n    0x70B4, 0x70C6, 0x70EA, 0x7105, 0x70FC, 0x70B4, 0x7041, 0x6FC9,\n    0x6F4C, 0x6ECB, 0x6E45, 0x6DBC, 0x6D2F, 0x6C9E, 0x6C0A, 0x6B72,\n    0x6AD8, 0x6A3A, 0x699A, 0x68F8, 0x6854, 0x67AD, 0x6705, 0x6650,\n    0x6587, 0x64AC, 0x63C3, 0x62D0, 0x61D6, 0x60D9, 0x5FDC, 0x5EE2,\n    0x5DF0, 0x5D08, 0x5C2F, 0x5B67, 0x5AB4, 0x5A1A, 0x599C, 0x593E,\n    0x5903, 0x58EE, 0x58FE, 0x592A, 0x5971, 0x59D0, 0x5A46, 0x5AD0,\n    0x5B6C, 0x5C18, 0x5CD1, 0x5D95, 0x5E62, 0x5F36, 0x600E, 0x60E9,\n    0x61C4, 0x629C, 0x6370, 0x643E, 0x6503, 0x65BC, 0x6668, 0x6705,\n    0x6769, 0x678E, 0x67A9, 0x67ED, 0x688E, 0x69C5, 0x6B73, 0x6D4A,\n    0x6EFB, 0x7039, 0x70B4, 0x1DC6, 0x1DCB, 0x1DD3, 0x1DDA, 0x1DD8,\n    0x1DC6, 0x1DA9, 0x1D89, 0x1D66, 0x1D42, 0x1D1B, 0x1CF3, 0x1CCB,\n    0x1CA2, 0x1C79, 0x1C51, 0x1C29, 0x1C04, 0x1BE0, 0x1BBE, 0x1BA0,\n    0x1B84, 0x1B6D, 0x1B58, 0x1B44, 0x1B33, 0x1B22, 0x1B13, 0x1B06,\n    0x1AFA, 0x1AEF, 0x1AE5, 0x1ADC, 0x1AD5, 0x1ACF, 0x1AC9, 0x1AC5,\n    0x1AC1, 0x1ABF, 0x1ABD, 0x1ABC, 0x1ABB, 0x1ABC, 0x1ABD, 0x1ABE,\n    0x1AC0, 0x1AC3, 0x1AC6, 0x1ACA, 0x1ACE, 0x1AD4, 0x1ADA, 0x1AE1,\n    0x1AE9, 0x1AF2, 0x1AFB, 0x1B06, 0x1B12, 0x1B1E, 0x1B2C, 0x1B3A,\n    0x1B4A, 0x1B5B, 0x1B6D, 0x1B91, 0x1BD1, 0x1C1E, 0x1C6D, 0x1CAE,\n    0x1CE9, 0x1D27, 0x1D63, 0x1D96, 0x1DB9, 0x1DC6, 0x068D, 0x06A9,\n    0x06E1, 0x070B, 0x06FD, 0x068D, 0x05D3, 0x0504, 0x0423, 0x0334,\n    0x0239, 0x0136, 0x002E, 0xFF25, 0xFE1D, 0xFD19, 0xFC1E, 0xFB2D,\n    0xFA4A, 0xF979, 0xF8BD, 0xF819, 0xF78F, 0xF71C, 0xF6B9, 0xF663,\n    0xF61B, 0xF5DF, 0xF5AE, 0xF587, 0xF568, 0xF552, 0xF543, 0xF53A,\n    0xF536, 0xF536, 0xF538, 0xF53D, 0xF542, 0xF547, 0xF54A, 0xF54C,\n    0xF54B, 0xF549, 0xF547, 0xF545, 0xF543, 0xF542, 0xF543, 0xF547,\n    0xF54D, 0xF556, 0xF563, 0xF575, 0xF58B, 0xF5A7, 0xF5C9, 0xF5F2,\n    0xF622, 0xF659, 0xF699, 0xF6E1, 0xF733, 0xF78F, 0xF869, 0xF9FB,\n    0xFBEB, 0xFDE1, 0xFF85, 0x00FC, 0x028D, 0x040F, 0x0556, 0x0638,\n    0x068D, 0x12B0, 0x1283, 0x1228, 0x11E4, 0x11FB, 0x12B0, 0x13DE,\n    0x152F, 0x169D, 0x1823, 0x19BC, 0x1B62, 0x1D10, 0x1EC1, 0x206F,\n    0x2215, 0x23AF, 0x2535, 0x26A4, 0x27F6, 0x2925, 0x2A2D, 0x2B07,\n    0x2BBB, 0x2C55, 0x2CD7, 0x2D42, 0x2D98, 0x2DDC, 0x2E0F, 0x2E32,\n    0x2E49, 0x2E55, 0x2E57, 0x2E52, 0x2E47, 0x2E39, 0x2E29, 0x2E19,\n    0x2E0C, 0x2E02, 0x2DFF, 0x2E01, 0x2E06, 0x2E0D, 0x2E16, 0x2E1F,\n    0x2E27, 0x2E2D, 0x2E31, 0x2E31, 0x2E2C, 0x2E21, 0x2E0F, 0x2DF5,\n    0x2DD3, 0x2DA6, 0x2D6F, 0x2D2C, 0x2CDC, 0x2C7E, 0x2C11, 0x2B95,\n    0x2B07, 0x29AA, 0x2720, 0x23FA, 0x20CA, 0x1E20, 0x1BBE, 0x1932,\n    0x16BF, 0x14AB, 0x133A, 0x12B0, 0xC05D, 0xE128, 0xC001, 0xE128,\n    0xC05D, 0x0006, 0xFFCB, 0xFF3D, 0xFE99, 0xFE17, 0xFDF2, 0xFE15,\n    0xFE45, 0xFE7F, 0xFEC3, 0xFF0D, 0xFF5E, 0xFFB3, 0x0009, 0x0061,\n    0x00B8, 0x010D, 0x015D, 0x01A8, 0x01EC, 0x0227, 0x0257, 0x027A,\n    0x0293, 0x02A5, 0x02B0, 0x02B5, 0x02B5, 0x02B0, 0x02A7, 0x029B,\n    0x028C, 0x027C, 0x026A, 0x0258, 0x0246, 0x0235, 0x0225, 0x0218,\n    0x020D, 0x0207, 0x0204, 0x0206, 0x020C, 0x0215, 0x0221, 0x022F,\n    0x023F, 0x0250, 0x0261, 0x0273, 0x0284, 0x0294, 0x02A3, 0x02B1,\n    0x02BB, 0x02C3, 0x02C7, 0x02C7, 0x02C3, 0x02BA, 0x02AB, 0x0296,\n    0x027A, 0x020C, 0x012F, 0x002A, 0xFF44, 0xFEC1, 0xFEB1, 0xFEE3,\n    0xFF39, 0xFF99, 0xFFE7, 0x0006, 0x095E, 0x0959, 0x094C, 0x093C,\n    0x092D, 0x0925, 0x0921, 0x091E, 0x091A, 0x0918, 0x0915, 0x0913,\n    0x0910, 0x090F, 0x090D, 0x090C, 0x090A, 0x090A, 0x0909, 0x0908,\n    0x0908, 0x0907, 0x0907, 0x0908, 0x0908, 0x0909, 0x090B, 0x090C,\n    0x090E, 0x0910, 0x0912, 0x0915, 0x0917, 0x0919, 0x091B, 0x091D,\n    0x091F, 0x0921, 0x0922, 0x0923, 0x0924, 0x0924, 0x0924, 0x0923,\n    0x0923, 0x0921, 0x0920, 0x091E, 0x091C, 0x091B, 0x0918, 0x0916,\n    0x0914, 0x0912, 0x0910, 0x090E, 0x090D, 0x090B, 0x090A, 0x0908,\n    0x0908, 0x0907, 0x0907, 0x0907, 0x090B, 0x0913, 0x091E, 0x0929,\n    0x0933, 0x093C, 0x0945, 0x094F, 0x0957, 0x095C, 0x095E, 0x19C6,\n    0x18BD, 0x164D, 0x1375, 0x1137, 0x1094, 0x1131, 0x1204, 0x1307,\n    0x1432, 0x157D, 0x16E2, 0x185A, 0x19DC, 0x1B63, 0x1CE5, 0x1E5D,\n    0x1FC3, 0x210F, 0x223A, 0x233E, 0x2412, 0x24B0, 0x251F, 0x256D,\n    0x259D, 0x25B3, 0x25B1, 0x259A, 0x2572, 0x253C, 0x24FA, 0x24B0,\n    0x2461, 0x240F, 0x23BF, 0x2372, 0x232D, 0x22F1, 0x22C3, 0x22A5,\n    0x229A, 0x22A4, 0x22BE, 0x22E6, 0x231B, 0x2359, 0x239F, 0x23EB,\n    0x2439, 0x2488, 0x24D5, 0x251F, 0x2562, 0x259D, 0x25CD, 0x25EF,\n    0x2603, 0x2604, 0x25F1, 0x25C8, 0x2587, 0x252A, 0x24B0, 0x22C8,\n    0x1EF3, 0x1A6A, 0x1666, 0x1420, 0x13DB, 0x14B5, 0x1635, 0x17DF,\n    0x1938, 0x19C6, 0xE128, 0xC001, 0xE128, 0x0003, 0xFFCF, 0xFF50,\n    0xFEB9, 0xFE3C, 0xFE09, 0xFE11, 0xFE22, 0xFE3B, 0xFE5A, 0xFE7E,\n    0xFEA6, 0xFED2, 0xFF00, 0xFF30, 0xFF5F, 0xFF8D, 0xFFB9, 0xFFE2,\n    0x0006, 0x0025, 0x003E, 0x0050, 0x005B, 0x0062, 0x0065, 0x0065,\n    0x0063, 0x005D, 0x0056, 0x004C, 0x0042, 0x0037, 0x002B, 0x001F,\n    0x0013, 0x0008, 0xFFFF, 0xFFF7, 0xFFF0, 0xFFEC, 0xFFEB, 0xFFEB,\n    0xFFED, 0xFFEF, 0xFFF2, 0xFFF6, 0xFFFA, 0xFFFF, 0x0004, 0x000A,\n    0x0010, 0x0016, 0x001C, 0x0023, 0x0029, 0x0030, 0x0035, 0x003B,\n    0x0040, 0x0045, 0x0049, 0x004D, 0x0050, 0x004E, 0x0048, 0x003D,\n    0x0033, 0x002A, 0x0022, 0x001A, 0x0011, 0x000A, 0x0005, 0x0003,\n    0x09C7, 0x09C2, 0x09B5, 0x09A6, 0x099A, 0x0995, 0x0995, 0x0996,\n    0x0997, 0x099A, 0x099C, 0x09A0, 0x09A3, 0x09A7, 0x09AB, 0x09AE,\n    0x09B2, 0x09B6, 0x09B9, 0x09BC, 0x09BF, 0x09C1, 0x09C3, 0x09C4,\n    0x09C5, 0x09C6, 0x09C6, 0x09C7, 0x09C7, 0x09C7, 0x09C7, 0x09C7,\n    0x09C7, 0x09C6, 0x09C6, 0x09C6, 0x09C5, 0x09C5, 0x09C5, 0x09C4,\n    0x09C4, 0x09C4, 0x09C4, 0x09C4, 0x09C4, 0x09C4, 0x09C4, 0x09C4,\n    0x09C4, 0x09C4, 0x09C4, 0x09C4, 0x09C4, 0x09C3, 0x09C3, 0x09C3,\n    0x09C3, 0x09C3, 0x09C3, 0x09C3, 0x09C3, 0x09C3, 0x09C3, 0x09C3,\n    0x09C3, 0x09C4, 0x09C4, 0x09C5, 0x09C5, 0x09C5, 0x09C6, 0x09C6,\n    0x09C6, 0x09C7, 0x09C7, 0x0FD4, 0x0EF2, 0x0CD9, 0x0A5A, 0x0847,\n    0x0771, 0x0794, 0x07DB, 0x0842, 0x08C4, 0x095E, 0x0A0A, 0x0AC4,\n    0x0B87, 0x0C4F, 0x0D17, 0x0DDB, 0x0E95, 0x0F43, 0x0FDE, 0x1063,\n    0x10CD, 0x1117, 0x1146, 0x1164, 0x1172, 0x1173, 0x1167, 0x1150,\n    0x1131, 0x110A, 0x10DE, 0x10AE, 0x107C, 0x1049, 0x1018, 0x0FEA,\n    0x0FC0, 0x0F9D, 0x0F81, 0x0F6F, 0x0F69, 0x0F6B, 0x0F72, 0x0F7B,\n    0x0F89, 0x0F99, 0x0FAC, 0x0FC1, 0x0FD8, 0x0FF0, 0x100A, 0x1024,\n    0x103F, 0x105A, 0x1075, 0x108F, 0x10A8, 0x10C0, 0x10D6, 0x10EA,\n    0x10FC, 0x110B, 0x1117, 0x1111, 0x10F4, 0x10CA, 0x109D, 0x1078,\n    0x1057, 0x1033, 0x1010, 0x0FF1, 0x0FDC, 0x0FD4, 0x0003, 0xFFAF,\n    0xFEE4, 0xFDF2, 0xFD27, 0xFCD4, 0xFCDC, 0xFCF2, 0xFD14, 0xFD3F,\n    0xFD72, 0xFDAC, 0xFDEC, 0xFE2F, 0xFE74, 0xFEBA, 0xFEFE, 0xFF40,\n    0xFF7E, 0xFFB6, 0xFFE7, 0x000E, 0x002B, 0x0041, 0x0051, 0x005E,\n    0x0066, 0x006C, 0x006E, 0x006E, 0x006B, 0x0066, 0x0061, 0x005A,\n    0x0052, 0x004A, 0x0042, 0x003B, 0x0035, 0x0030, 0x002C, 0x002B,\n    0x002B, 0x002B, 0x002A, 0x002A, 0x0029, 0x0029, 0x0028, 0x0027,\n    0x0027, 0x0026, 0x0025, 0x0025, 0x0025, 0x0024, 0x0024, 0x0025,\n    0x0025, 0x0026, 0x0026, 0x0028, 0x0029, 0x002B, 0x0033, 0x0042,\n    0x0053, 0x0061, 0x0064, 0x005A, 0x0047, 0x0031, 0x001B, 0x000A,\n    0x0003, 0xF843, 0xF855, 0xF87F, 0xF8B2, 0xF8DD, 0xF8EF, 0xF8EE,\n    0xF8EB, 0xF8E5, 0xF8DD, 0xF8D3, 0xF8C8, 0xF8BC, 0xF8AF, 0xF8A1,\n    0xF894, 0xF886, 0xF87A, 0xF86E, 0xF863, 0xF859, 0xF851, 0xF84C,\n    0xF848, 0xF844, 0xF842, 0xF840, 0xF83F, 0xF83F, 0xF83F, 0xF83F,\n    0xF840, 0xF841, 0xF843, 0xF844, 0xF846, 0xF847, 0xF849, 0xF84A,\n    0xF84B, 0xF84B, 0xF84C, 0xF84C, 0xF84C, 0xF84C, 0xF84C, 0xF84C,\n    0xF84C, 0xF84C, 0xF84C, 0xF84C, 0xF84C, 0xF84C, 0xF84C, 0xF84C,\n    0xF84C, 0xF84C, 0xF84C, 0xF84C, 0xF84C, 0xF84C, 0xF84C, 0xF84C,\n    0xF84C, 0xF84C, 0xF84B, 0xF84B, 0xF84A, 0xF849, 0xF848, 0xF847,\n    0xF845, 0xF844, 0xF843, 0xF843, 0xF0C9, 0xF29A, 0xF6ED, 0xFC15,\n    0x0064, 0x022C, 0x01FB, 0x0184, 0x00CE, 0xFFE3, 0xFECA, 0xFD8C,\n    0xFC32, 0xFAC4, 0xF94B, 0xF7CE, 0xF658, 0xF4F0, 0xF39E, 0xF26C,\n    0xF162, 0xF088, 0xEFE7, 0xEF72, 0xEF17, 0xEED2, 0xEEA3, 0xEE86,\n    0xEE7A, 0xEE7C, 0xEE8A, 0xEEA3, 0xEEC3, 0xEEE9, 0xEF13, 0xEF3E,\n    0xEF69, 0xEF90, 0xEFB3, 0xEFCE, 0xEFE0, 0xEFE7, 0xEFE7, 0xEFE9,\n    0xEFEB, 0xEFED, 0xEFF1, 0xEFF4, 0xEFF8, 0xEFFC, 0xEFFF, 0xF003,\n    0xF006, 0xF008, 0xF00A, 0xF00B, 0xF00C, 0xF00B, 0xF009, 0xF005,\n    0xF000, 0xEFF9, 0xEFF1, 0xEFE7, 0xEFBC, 0xEF69, 0xEF0D, 0xEEC6,\n    0xEEB5, 0xEEEB, 0xEF52, 0xEFCF, 0xF049, 0xF0A5, 0xF0C9, 0x3DB1,\n};\n\n// 0x0601AA3C\nstatic const u16 piranha_plant_seg6_animindex_0601AA3C[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0000, 0x0001, 0x0003, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0507,\n    0x004B, 0x0426, 0x004B, 0x0471, 0x004B, 0x04BC,\n    0x004B, 0x0345, 0x004B, 0x0390, 0x004B, 0x03DB,\n    0x004B, 0x0261, 0x004B, 0x02AC, 0x004B, 0x02F7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0260,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x004B, 0x0004,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x025C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x004B, 0x004F,\n    0x0001, 0x0342, 0x0001, 0x0343, 0x0001, 0x0344,\n    0x004B, 0x009A, 0x004B, 0x00E5, 0x004B, 0x0130,\n    0x0001, 0x025D, 0x0001, 0x025E, 0x0001, 0x025F,\n    0x004B, 0x017B, 0x004B, 0x01C6, 0x004B, 0x0211,\n};\n\n// 0x0601AAE4\nstatic const struct Animation piranha_plant_seg6_anim_0601AAE4 = {\n    0,\n    0,\n    0,\n    0,\n    0x4B,\n    ANIMINDEX_NUMPARTS(piranha_plant_seg6_animindex_0601AA3C),\n    piranha_plant_seg6_animvalue_0601A02C,\n    piranha_plant_seg6_animindex_0601AA3C,\n    0,\n};\n"
  },
  {
    "path": "actors/piranha_plant/anims/anim_0601AF34.inc.c",
    "content": "// 0x0601AAFC\nstatic const s16 piranha_plant_seg6_animvalue_0601AAFC[] = {\n    0x0000, 0x000E, 0x0003, 0x3FFF, 0x6B9F, 0x6A6D, 0x6797, 0x6441,\n    0x618E, 0x609F, 0x6104, 0x6187, 0x6225, 0x62DD, 0x63AB, 0x648D,\n    0x6581, 0x6685, 0x6795, 0x68B1, 0x69D4, 0x6AFD, 0x6C29, 0x6D56,\n    0x6E81, 0x6FA8, 0x70C9, 0x71E1, 0x72ED, 0x73EC, 0x74CF, 0x73AA,\n    0x70F4, 0x6DC1, 0x6B26, 0x6A37, 0x6A95, 0x6B21, 0x6BD7, 0x6CB1,\n    0x6DA9, 0x6EB9, 0x6FDC, 0x710D, 0x7246, 0x7381, 0x74B8, 0x75E6,\n    0x7706, 0x7812, 0x7904, 0x79D6, 0x7A83, 0x7B06, 0x7B59, 0x7B75,\n    0xE0AE, 0xE0B1, 0xE0B7, 0xE0BC, 0xE0BB, 0xE0AE, 0xE099, 0xE083,\n    0xE06D, 0xE055, 0xE03D, 0xE024, 0xE00B, 0xDFF1, 0xDFD7, 0xDFBD,\n    0xDFA2, 0xDF87, 0xDF6C, 0xDF51, 0xDF36, 0xDF1B, 0xDF00, 0xDEE6,\n    0xDECC, 0xDEB2, 0x023E, 0x0249, 0x025E, 0x026F, 0x0269, 0x023E,\n    0x01F8, 0x01AF, 0x0163, 0x0115, 0x00C4, 0x0071, 0x001D, 0xFFC7,\n    0xFF70, 0xFF17, 0xFEBD, 0xFE63, 0xFE08, 0xFDAD, 0xFD53, 0xFCF9,\n    0xFC9F, 0xFC47, 0xFBF0, 0xFB9A, 0x70B4, 0x70C4, 0x70E3, 0x70FB,\n    0x70F3, 0x70B4, 0x704E, 0x6FE4, 0x6F76, 0x6F03, 0x6E8E, 0x6E15,\n    0x6D9A, 0x6D1C, 0x6C9C, 0x6C1A, 0x6B98, 0x6B14, 0x6A90, 0x6A0C,\n    0x6988, 0x6905, 0x6882, 0x6801, 0x6782, 0x6705, 0x1DC6, 0x1DCA,\n    0x1DD2, 0x1DD8, 0x1DD6, 0x1DC6, 0x1DAE, 0x1D94, 0x1D79, 0x1D5D,\n    0x1D41, 0x1D23, 0x1D05, 0x1CE7, 0x1CC8, 0x1CA8, 0x1C89, 0x1C69,\n    0x1C49, 0x1C29, 0x1C09, 0x1BE9, 0x1BC9, 0x1BAA, 0x1B8B, 0x1B6D,\n    0x068D, 0x06A6, 0x06D7, 0x06FC, 0x06F0, 0x068D, 0x05F0, 0x054C,\n    0x04A1, 0x03F0, 0x033A, 0x027F, 0x01BF, 0x00FC, 0x0036, 0xFF6F,\n    0xFEA4, 0xFDD9, 0xFD0C, 0xFC3F, 0xFB73, 0xFAA8, 0xF9DE, 0xF916,\n    0xF851, 0xF78F, 0x12B0, 0x1288, 0x1238, 0x11FC, 0x1210, 0x12B0,\n    0x13AF, 0x14BA, 0x15D0, 0x16EF, 0x1816, 0x1946, 0x1A7D, 0x1BB9,\n    0x1CFA, 0x1E40, 0x1F88, 0x20D3, 0x221F, 0x236B, 0x24B7, 0x2601,\n    0x2749, 0x288D, 0x29CD, 0x2B07, 0xC05D, 0xE128, 0xC001, 0xE128,\n    0xC05D, 0x0006, 0xFFCB, 0xFF3F, 0xFE9B, 0xFE19, 0xFDF2, 0xFE0E,\n    0xFE31, 0xFE59, 0xFE86, 0xFEB8, 0xFEEE, 0xFF27, 0xFF64, 0xFFA3,\n    0xFFE4, 0x0026, 0x006B, 0x00AF, 0x00F4, 0x0139, 0x017D, 0x01C0,\n    0x0200, 0x023F, 0x027A, 0x095E, 0x0959, 0x094C, 0x093C, 0x092D,\n    0x0925, 0x0922, 0x091F, 0x091C, 0x091A, 0x0918, 0x0916, 0x0915,\n    0x0913, 0x0912, 0x0911, 0x0910, 0x090F, 0x090F, 0x090E, 0x090D,\n    0x090C, 0x090B, 0x090A, 0x0909, 0x0907, 0x19C6, 0x18C0, 0x1654,\n    0x1380, 0x1141, 0x1094, 0x1112, 0x11AB, 0x125C, 0x1325, 0x1401,\n    0x14F0, 0x15EF, 0x16FC, 0x1814, 0x1936, 0x1A5F, 0x1B8D, 0x1CBE,\n    0x1DF0, 0x1F21, 0x204D, 0x2174, 0x2293, 0x23A8, 0x24B0, 0xE128,\n    0xC001, 0xE128, 0x0003, 0xFFCF, 0xFF50, 0xFEB9, 0xFE3C, 0xFE09,\n    0xFE0F, 0xFE19, 0xFE28, 0xFE3B, 0xFE52, 0xFE6C, 0xFE88, 0xFEA7,\n    0xFEC9, 0xFEEC, 0xFF10, 0xFF35, 0xFF5B, 0xFF81, 0xFFA6, 0xFFCB,\n    0xFFEF, 0x0011, 0x0031, 0x0050, 0x09C7, 0x09C2, 0x09B5, 0x09A6,\n    0x099A, 0x0995, 0x0995, 0x0995, 0x0996, 0x0998, 0x0999, 0x099B,\n    0x099E, 0x09A0, 0x09A3, 0x09A6, 0x09A9, 0x09AC, 0x09AF, 0x09B2,\n    0x09B5, 0x09B8, 0x09BB, 0x09BE, 0x09C1, 0x09C3, 0x0FD4, 0x0EF2,\n    0x0CDA, 0x0A5B, 0x0848, 0x0771, 0x0789, 0x07B5, 0x07F4, 0x0844,\n    0x08A3, 0x0911, 0x098A, 0x0A0E, 0x0A9B, 0x0B2F, 0x0BC9, 0x0C67,\n    0x0D06, 0x0DA6, 0x0E46, 0x0EE2, 0x0F7A, 0x100C, 0x1096, 0x1117,\n    0x0003, 0xFFAF, 0xFEE4, 0xFDF2, 0xFD27, 0xFCD4, 0xFCD9, 0xFCE6,\n    0xFCFB, 0xFD15, 0xFD36, 0xFD5B, 0xFD85, 0xFDB3, 0xFDE5, 0xFE19,\n    0xFE4F, 0xFE86, 0xFEBF, 0xFEF7, 0xFF2F, 0xFF66, 0xFF9C, 0xFFCF,\n    0xFFFF, 0x002B, 0xF843, 0xF855, 0xF87F, 0xF8B2, 0xF8DD, 0xF8EF,\n    0xF8EF, 0xF8ED, 0xF8E9, 0xF8E4, 0xF8DE, 0xF8D7, 0xF8CF, 0xF8C6,\n    0xF8BD, 0xF8B3, 0xF8A8, 0xF89E, 0xF893, 0xF888, 0xF87D, 0xF872,\n    0xF867, 0xF85E, 0xF854, 0xF84C, 0xF0C9, 0xF29A, 0xF6ED, 0xFC14,\n    0x0063, 0x022C, 0x020D, 0x01C4, 0x0156, 0x00C4, 0x0013, 0xFF46,\n    0xFE61, 0xFD65, 0xFC58, 0xFB3C, 0xFA15, 0xF8E6, 0xF7B2, 0xF67E,\n    0xF54B, 0xF41E, 0xF2FA, 0xF1E3, 0xF0DB, 0xEFE7, 0x3DB1, 0x0000,\n};\n\n// 0x0601AE8C\nstatic const u16 piranha_plant_seg6_animindex_0601AE8C[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0000, 0x0001, 0x0003, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01C6,\n    0x001A, 0x0178, 0x001A, 0x0192, 0x001A, 0x01AC,\n    0x001A, 0x012A, 0x001A, 0x0144, 0x001A, 0x015E,\n    0x001A, 0x00D9, 0x001A, 0x00F3, 0x001A, 0x010D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00D8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001A, 0x0004,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00D4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001A, 0x001E,\n    0x0001, 0x0127, 0x0001, 0x0128, 0x0001, 0x0129,\n    0x001A, 0x0038, 0x001A, 0x0052, 0x001A, 0x006C,\n    0x0001, 0x00D5, 0x0001, 0x00D6, 0x0001, 0x00D7,\n    0x001A, 0x0086, 0x001A, 0x00A0, 0x001A, 0x00BA,\n};\n\n// 0x0601AF34\nstatic const struct Animation piranha_plant_seg6_anim_0601AF34 = {\n    0,\n    0,\n    0,\n    0,\n    0x1A,\n    ANIMINDEX_NUMPARTS(piranha_plant_seg6_animindex_0601AE8C),\n    piranha_plant_seg6_animvalue_0601AAFC,\n    piranha_plant_seg6_animindex_0601AE8C,\n    0,\n};\n"
  },
  {
    "path": "actors/piranha_plant/anims/anim_0601B634.inc.c",
    "content": "// 0x0601AF4C\nstatic const s16 piranha_plant_seg6_animvalue_0601AF4C[] = {\n    0x0000, 0x000E, 0x0003, 0x3FFF, 0x73EC, 0x73E6, 0x73D5, 0x73BA,\n    0x7396, 0x7369, 0x7335, 0x72FA, 0x72BA, 0x7275, 0x722D, 0x71E1,\n    0x7194, 0x7146, 0x70F8, 0x70AB, 0x7060, 0x7017, 0x6FD2, 0x6F92,\n    0x6F57, 0x6F23, 0x6EF6, 0x6ED2, 0x6EB7, 0x6EA6, 0x6EA0, 0x6EA3,\n    0x6EAD, 0x6EBC, 0x6ED0, 0x6EEA, 0x6F08, 0x6F2B, 0x6F52, 0x6F7D,\n    0x6FAB, 0x6FDC, 0x7011, 0x7047, 0x7080, 0x70BA, 0x70F6, 0x7133,\n    0x7171, 0x71AF, 0x71ED, 0x722B, 0x7269, 0x72A6, 0x72E1, 0x731B,\n    0x7353, 0x7389, 0x73BC, 0x73EC, 0x7B75, 0x7B6D, 0x7B56, 0x7B30,\n    0x7AFE, 0x7AC0, 0x7A78, 0x7A26, 0x79CE, 0x796E, 0x790A, 0x78A2,\n    0x7837, 0x77CB, 0x775F, 0x76F4, 0x768C, 0x7627, 0x75C8, 0x756F,\n    0x751E, 0x74D6, 0x7498, 0x7465, 0x7440, 0x7428, 0x7420, 0x7427,\n    0x743A, 0x7458, 0x7481, 0x74B4, 0x74F0, 0x7533, 0x757E, 0x75CE,\n    0x7624, 0x767D, 0x76DA, 0x773A, 0x779A, 0x77FB, 0x785C, 0x78BB,\n    0x7918, 0x7972, 0x79C7, 0x7A18, 0x7A62, 0x7AA6, 0x7AE1, 0x7B14,\n    0x7B3D, 0x7B5C, 0x7B6F, 0x7B75, 0xDEB2, 0xDEBA, 0xDED1, 0xDEF4,\n    0xDF24, 0xDF5F, 0xDFA4, 0xDFF1, 0xE046, 0xE0A1, 0xE100, 0xE164,\n    0xE1C9, 0xE230, 0xE297, 0xE2FD, 0xE360, 0xE3C0, 0xE41A, 0xE46F,\n    0xE4BC, 0xE501, 0xE53C, 0xE56C, 0xE590, 0xE5A6, 0xE5AE, 0xE5AA,\n    0xE59E, 0xE58A, 0xE56F, 0xE54D, 0xE525, 0xE4F7, 0xE4C3, 0xE48B,\n    0xE44E, 0xE40D, 0xE3C8, 0xE380, 0xE336, 0xE2E9, 0xE29A, 0xE249,\n    0xE1F8, 0xE1A6, 0xE154, 0xE102, 0xE0B1, 0xE061, 0xE012, 0xDFC6,\n    0xDF7C, 0xDF35, 0xDEF2, 0xDEB2, 0xFB9A, 0xFB8A, 0xFB5D, 0xFB15,\n    0xFAB4, 0xFA3D, 0xF9B2, 0xF916, 0xF86C, 0xF7B5, 0xF6F4, 0xF62B,\n    0xF55E, 0xF48F, 0xF3BF, 0xF2F2, 0xF229, 0xF169, 0xF0B2, 0xF007,\n    0xEF6B, 0xEEE0, 0xEE69, 0xEE08, 0xEDC0, 0xED93, 0xED83, 0xED8C,\n    0xEDA4, 0xEDCD, 0xEE03, 0xEE47, 0xEE98, 0xEEF5, 0xEF5D, 0xEFCF,\n    0xF049, 0xF0CD, 0xF157, 0xF1E8, 0xF27F, 0xF31B, 0xF3BA, 0xF45C,\n    0xF500, 0xF5A6, 0xF64C, 0xF6F1, 0xF794, 0xF836, 0xF8D4, 0xF96E,\n    0xFA02, 0xFA91, 0xFB19, 0xFB9A, 0x6705, 0x66F5, 0x66C8, 0x6680,\n    0x661F, 0x65A8, 0x651D, 0x6481, 0x63D7, 0x6320, 0x625F, 0x6197,\n    0x60C9, 0x5FFA, 0x5F2A, 0x5E5D, 0x5D94, 0x5CD4, 0x5C1D, 0x5B72,\n    0x5AD6, 0x5A4B, 0x59D4, 0x5973, 0x592B, 0x58FE, 0x58EE, 0x58F7,\n    0x590F, 0x5938, 0x596E, 0x59B2, 0x5A03, 0x5A60, 0x5AC8, 0x5B3A,\n    0x5BB4, 0x5C38, 0x5CC2, 0x5D53, 0x5DEA, 0x5E86, 0x5F25, 0x5FC7,\n    0x606C, 0x6111, 0x61B7, 0x625C, 0x6300, 0x63A1, 0x643F, 0x64D9,\n    0x656E, 0x65FD, 0x6685, 0x6705, 0x1B6D, 0x1B6C, 0x1B6A, 0x1B66,\n    0x1B61, 0x1B5B, 0x1B55, 0x1B4D, 0x1B45, 0x1B3C, 0x1B32, 0x1B28,\n    0x1B1E, 0x1B14, 0x1B0A, 0x1B00, 0x1AF6, 0x1AEC, 0x1AE3, 0x1ADB,\n    0x1AD3, 0x1ACD, 0x1AC7, 0x1AC2, 0x1ABE, 0x1ABC, 0x1ABB, 0x1ABC,\n    0x1ABD, 0x1ABF, 0x1AC2, 0x1AC5, 0x1AC9, 0x1ACE, 0x1AD3, 0x1AD8,\n    0x1ADE, 0x1AE5, 0x1AEC, 0x1AF3, 0x1AFA, 0x1B02, 0x1B0A, 0x1B12,\n    0x1B1A, 0x1B22, 0x1B2A, 0x1B32, 0x1B3A, 0x1B42, 0x1B4A, 0x1B51,\n    0x1B59, 0x1B60, 0x1B66, 0x1B6D, 0xF78F, 0xF78D, 0xF785, 0xF77A,\n    0xF76A, 0xF757, 0xF741, 0xF728, 0xF70C, 0xF6EF, 0xF6D0, 0xF6B0,\n    0xF68F, 0xF66E, 0xF64C, 0xF62B, 0xF60B, 0xF5EC, 0xF5CF, 0xF5B3,\n    0xF59A, 0xF584, 0xF571, 0xF561, 0xF556, 0xF54E, 0xF54C, 0xF54D,\n    0xF551, 0xF558, 0xF560, 0xF56B, 0xF578, 0xF587, 0xF598, 0xF5AA,\n    0xF5BE, 0xF5D3, 0xF5E9, 0xF601, 0xF619, 0xF632, 0xF64B, 0xF665,\n    0xF680, 0xF69A, 0xF6B5, 0xF6D0, 0xF6EA, 0xF704, 0xF71D, 0xF736,\n    0xF74E, 0xF765, 0xF77B, 0xF78F, 0x2B07, 0x2B0A, 0x2B14, 0x2B23,\n    0x2B37, 0x2B51, 0x2B6E, 0x2B8F, 0x2BB3, 0x2BD9, 0x2C02, 0x2C2C,\n    0x2C57, 0x2C83, 0x2CAF, 0x2CDA, 0x2D04, 0x2D2D, 0x2D53, 0x2D77,\n    0x2D98, 0x2DB5, 0x2DCE, 0x2DE3, 0x2DF2, 0x2DFB, 0x2DFF, 0x2DFD,\n    0x2DF8, 0x2DEF, 0x2DE4, 0x2DD5, 0x2DC4, 0x2DB1, 0x2D9B, 0x2D83,\n    0x2D69, 0x2D4D, 0x2D30, 0x2D12, 0x2CF2, 0x2CD1, 0x2CB0, 0x2C8D,\n    0x2C6B, 0x2C48, 0x2C25, 0x2C02, 0x2BE0, 0x2BBE, 0x2B9D, 0x2B7C,\n    0x2B5D, 0x2B3F, 0x2B22, 0x2B07, 0xC05D, 0xE128, 0xC001, 0xE128,\n    0xC05D, 0x027A, 0x027A, 0x0278, 0x0276, 0x0273, 0x026F, 0x026A,\n    0x0265, 0x0260, 0x025A, 0x0253, 0x024D, 0x0246, 0x023F, 0x0238,\n    0x0232, 0x022B, 0x0225, 0x021F, 0x0219, 0x0214, 0x0210, 0x020C,\n    0x0209, 0x0206, 0x0205, 0x0204, 0x0204, 0x0205, 0x0207, 0x0208,\n    0x020B, 0x020D, 0x0210, 0x0214, 0x0217, 0x021B, 0x0220, 0x0224,\n    0x0229, 0x022E, 0x0233, 0x0238, 0x023E, 0x0243, 0x0248, 0x024E,\n    0x0253, 0x0259, 0x025E, 0x0263, 0x0268, 0x026D, 0x0272, 0x0276,\n    0x027A, 0x0907, 0x0908, 0x0908, 0x0908, 0x0909, 0x090A, 0x090B,\n    0x090D, 0x090E, 0x090F, 0x0911, 0x0912, 0x0914, 0x0916, 0x0917,\n    0x0919, 0x091B, 0x091C, 0x091E, 0x091F, 0x0920, 0x0921, 0x0922,\n    0x0923, 0x0924, 0x0924, 0x0924, 0x0924, 0x0924, 0x0924, 0x0923,\n    0x0923, 0x0922, 0x0921, 0x0920, 0x091F, 0x091F, 0x091D, 0x091C,\n    0x091B, 0x091A, 0x0919, 0x0917, 0x0916, 0x0915, 0x0914, 0x0912,\n    0x0911, 0x0910, 0x090E, 0x090D, 0x090C, 0x090B, 0x090A, 0x0908,\n    0x0907, 0x24B0, 0x24AE, 0x24A7, 0x249D, 0x248E, 0x247D, 0x2468,\n    0x2451, 0x2438, 0x241D, 0x2400, 0x23E3, 0x23C4, 0x23A5, 0x2387,\n    0x2368, 0x234B, 0x232E, 0x2313, 0x22FA, 0x22E3, 0x22CE, 0x22BC,\n    0x22AE, 0x22A3, 0x229D, 0x229A, 0x229C, 0x229F, 0x22A5, 0x22AD,\n    0x22B7, 0x22C3, 0x22D1, 0x22E1, 0x22F1, 0x2304, 0x2317, 0x232B,\n    0x2341, 0x2357, 0x236E, 0x2386, 0x239E, 0x23B6, 0x23CF, 0x23E7,\n    0x2400, 0x2418, 0x2430, 0x2447, 0x245E, 0x2474, 0x2489, 0x249D,\n    0x24B0, 0xE128, 0xC001, 0xE128, 0x0050, 0x004F, 0x004E, 0x004C,\n    0x0049, 0x0046, 0x0042, 0x003D, 0x0039, 0x0033, 0x002E, 0x0028,\n    0x0023, 0x001D, 0x0017, 0x0011, 0x000B, 0x0006, 0x0001, 0xFFFD,\n    0xFFF8, 0xFFF4, 0xFFF1, 0xFFEE, 0xFFEC, 0xFFEB, 0xFFEB, 0xFFEB,\n    0xFFEC, 0xFFED, 0xFFEE, 0xFFF0, 0xFFF2, 0xFFF5, 0xFFF8, 0xFFFB,\n    0xFFFF, 0x0001, 0x0005, 0x0009, 0x000E, 0x0012, 0x0017, 0x001B,\n    0x0020, 0x0025, 0x0029, 0x002E, 0x0033, 0x0037, 0x003C, 0x0040,\n    0x0044, 0x0048, 0x004C, 0x0050, 0x09C3, 0x09C3, 0x09C3, 0x09C3,\n    0x09C3, 0x09C3, 0x09C3, 0x09C3, 0x09C3, 0x09C3, 0x09C3, 0x09C3,\n    0x09C4, 0x09C4, 0x09C4, 0x09C4, 0x09C4, 0x09C4, 0x09C4, 0x09C4,\n    0x09C4, 0x09C4, 0x09C4, 0x09C4, 0x09C4, 0x09C4, 0x09C4, 0x09C4,\n    0x09C4, 0x09C4, 0x09C4, 0x09C4, 0x09C4, 0x09C4, 0x09C4, 0x09C4,\n    0x09C4, 0x09C4, 0x09C4, 0x09C4, 0x09C4, 0x09C4, 0x09C4, 0x09C4,\n    0x09C4, 0x09C3, 0x09C3, 0x09C3, 0x09C3, 0x09C3, 0x09C3, 0x09C3,\n    0x09C3, 0x09C3, 0x09C3, 0x09C3, 0x1117, 0x1115, 0x110F, 0x1107,\n    0x10FB, 0x10ED, 0x10DD, 0x10CA, 0x10B6, 0x10A0, 0x1089, 0x1071,\n    0x1059, 0x1040, 0x1027, 0x100F, 0x0FF7, 0x0FE0, 0x0FCA, 0x0FB6,\n    0x0FA3, 0x0F93, 0x0F85, 0x0F79, 0x0F70, 0x0F6B, 0x0F69, 0x0F6A,\n    0x0F6D, 0x0F72, 0x0F78, 0x0F81, 0x0F8A, 0x0F95, 0x0FA2, 0x0FAF,\n    0x0FBE, 0x0FCD, 0x0FDE, 0x0FEF, 0x1001, 0x1014, 0x1027, 0x103A,\n    0x104D, 0x1061, 0x1075, 0x1089, 0x109C, 0x10AF, 0x10C2, 0x10D4,\n    0x10E6, 0x10F7, 0x1107, 0x1117, 0x002B, 0xF84C, 0xEFE7, 0x3DB1,\n};\n\n// 0x0601B58C\nstatic const u16 piranha_plant_seg6_animindex_0601B58C[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0000, 0x0001, 0x0003, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x031F,\n    0x0001, 0x031C, 0x0001, 0x031D, 0x0001, 0x031E,\n    0x0038, 0x0274, 0x0038, 0x02AC, 0x0038, 0x02E4,\n    0x0038, 0x01C9, 0x0038, 0x0201, 0x0038, 0x0239,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01C8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0038, 0x0004,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01C4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0038, 0x003C,\n    0x0001, 0x0271, 0x0001, 0x0272, 0x0001, 0x0273,\n    0x0038, 0x0074, 0x0038, 0x00AC, 0x0038, 0x00E4,\n    0x0001, 0x01C5, 0x0001, 0x01C6, 0x0001, 0x01C7,\n    0x0038, 0x011C, 0x0038, 0x0154, 0x0038, 0x018C,\n};\n\n// 0x0601B634\nstatic const struct Animation piranha_plant_seg6_anim_0601B634 = {\n    0,\n    0,\n    0,\n    0,\n    0x38,\n    ANIMINDEX_NUMPARTS(piranha_plant_seg6_animindex_0601B58C),\n    piranha_plant_seg6_animvalue_0601AF4C,\n    piranha_plant_seg6_animindex_0601B58C,\n    0,\n};\n"
  },
  {
    "path": "actors/piranha_plant/anims/anim_0601C304.inc.c",
    "content": "// 0x0601B64C\nstatic const s16 piranha_plant_seg6_animvalue_0601B64C[] = {\n    0x0000, 0x000E, 0x0003, 0x3FFF, 0x6B9F, 0x6B39, 0x6A17, 0x6854,\n    0x660D, 0x635B, 0x6059, 0x5D24, 0x59D5, 0x5687, 0x5357, 0x505E,\n    0x4DB7, 0x4B7F, 0x49CF, 0x4A72, 0x4DA2, 0x5120, 0x52AF, 0x5218,\n    0x50CD, 0x4F09, 0x4D09, 0x4B09, 0x4945, 0x47FB, 0x4767, 0x47C4,\n    0x4B9B, 0x52FF, 0x5A79, 0x5E95, 0x5FBA, 0x60A4, 0x6157, 0x61D5,\n    0x6223, 0x6243, 0x623A, 0x620A, 0x61B8, 0x6147, 0x60BB, 0x6017,\n    0x5F5E, 0x5E95, 0x5C03, 0x5752, 0x5298, 0x4FEA, 0x4F32, 0x4EE8,\n    0x4EF4, 0x4F3F, 0x4FB3, 0x5037, 0x50B5, 0x5115, 0x5142, 0x5123,\n    0x505C, 0x4EF1, 0x4D57, 0x4C04, 0x4B6E, 0x4B74, 0x4BA4, 0x4C00,\n    0x4C87, 0x4D38, 0x4E16, 0x4F1E, 0x5052, 0x51BC, 0x535F, 0x5531,\n    0x5728, 0x593A, 0x5B5C, 0x5D84, 0x5FA8, 0x61BE, 0x63BB, 0x6596,\n    0x6743, 0x68BA, 0x69EF, 0x6AD8, 0x6B6C, 0x6B9F, 0x74CF, 0x74CF,\n    0x74CB, 0x74C1, 0x74AB, 0x7487, 0x7451, 0x7405, 0x739E, 0x731B,\n    0x7276, 0x71AC, 0x70B9, 0x6F9A, 0x6E4B, 0x6AA4, 0x6466, 0x5E63,\n    0x5B6F, 0x5B65, 0x5C22, 0x5D77, 0x5F38, 0x6135, 0x6342, 0x6530,\n    0x66D1, 0x67F8, 0x683C, 0x67B6, 0x66F3, 0x6685, 0x6671, 0x665D,\n    0x664A, 0x663A, 0x662C, 0x6621, 0x661A, 0x6617, 0x661A, 0x6621,\n    0x662F, 0x6644, 0x6661, 0x6685, 0x6723, 0x683E, 0x6933, 0x695F,\n    0x68BF, 0x67CD, 0x66A4, 0x655A, 0x640A, 0x62CB, 0x61B6, 0x60E3,\n    0x606C, 0x6068, 0x61EF, 0x6532, 0x68F5, 0x6BFC, 0x6D0A, 0x6C01,\n    0x69DC, 0x6700, 0x63D4, 0x60BC, 0x5E1F, 0x5C63, 0x5BED, 0x5C73,\n    0x5D5D, 0x5E9C, 0x6023, 0x61E4, 0x63D1, 0x65DD, 0x67F8, 0x6A16,\n    0x6C28, 0x6E20, 0x6FF1, 0x718D, 0x72E5, 0x73EC, 0x7494, 0x74CF,\n    0xE0AE, 0xE0C4, 0xE101, 0xE15A, 0xE1C4, 0xE236, 0xE2A5, 0xE306,\n    0xE34F, 0xE380, 0xE3A2, 0xE3B8, 0xE3C6, 0xE3D0, 0xE3DB, 0xE3D1,\n    0xE3B1, 0xE3A2, 0xE3CC, 0xE454, 0xE51B, 0xE5E5, 0xE674, 0xE6AE,\n    0xE6B9, 0xE6B7, 0xE6C8, 0xE710, 0xE783, 0xE7FF, 0xE882, 0xE90B,\n    0xE99A, 0xEA2C, 0xEAC0, 0xEB56, 0xEBEB, 0xEC7F, 0xED11, 0xED9E,\n    0xEE27, 0xEEA9, 0xEF23, 0xEF95, 0xEFFC, 0xF058, 0xF09C, 0xF08E,\n    0xEFEB, 0xEE6E, 0xEC0E, 0xE914, 0xE5B5, 0xE224, 0xDE98, 0xDB44,\n    0xD85E, 0xD61A, 0xD4AD, 0xD44C, 0xD740, 0xDE12, 0xE659, 0xEDAC,\n    0xF1A0, 0xF261, 0xF1EC, 0xF090, 0xEEA0, 0xEC6B, 0xEA43, 0xE877,\n    0xE758, 0xE6AD, 0xE608, 0xE56A, 0xE4D3, 0xE443, 0xE3BC, 0xE33E,\n    0xE2C9, 0xE25E, 0xE1FD, 0xE1A7, 0xE15D, 0xE120, 0xE0EF, 0xE0CB,\n    0xE0B5, 0xE0AE, 0x023E, 0x0297, 0x0387, 0x04E2, 0x067D, 0x082F,\n    0x09CD, 0x0B2A, 0x0C1E, 0x0CC3, 0x0D3F, 0x0D7D, 0x0D67, 0x0CE8,\n    0x0BE8, 0x0955, 0x0548, 0x0165, 0xFF57, 0x0027, 0x02C2, 0x059A,\n    0x071F, 0x06D4, 0x05A7, 0x0425, 0x02DF, 0x0262, 0x0286, 0x02C0,\n    0x030D, 0x036A, 0x03D6, 0x044C, 0x04CA, 0x054E, 0x05D5, 0x065C,\n    0x06E0, 0x075E, 0x07D4, 0x083F, 0x089C, 0x08E9, 0x0923, 0x0946,\n    0x08AB, 0x072A, 0x057E, 0x0465, 0x03CC, 0x032C, 0x028E, 0x01FA,\n    0x017A, 0x0115, 0x00D5, 0x00C2, 0x00E6, 0x0148, 0x02C3, 0x0587,\n    0x08A6, 0x0B2E, 0x0C2F, 0x0BAA, 0x0A67, 0x08A2, 0x0697, 0x0481,\n    0x029D, 0x0126, 0x0058, 0x0003, 0xFFCD, 0xFFB2, 0xFFAF, 0xFFC1,\n    0xFFE4, 0x0015, 0x0051, 0x0095, 0x00DE, 0x0127, 0x016F, 0x01B0,\n    0x01E9, 0x0216, 0x0233, 0x023E, 0x70B4, 0x70B6, 0x70B8, 0x70B4,\n    0x70A4, 0x7081, 0x7046, 0x6FED, 0x6F70, 0x6EB6, 0x6DB9, 0x6C8D,\n    0x6B47, 0x69FB, 0x68BD, 0x66D3, 0x6464, 0x62D8, 0x6398, 0x6815,\n    0x6F32, 0x7689, 0x7BB1, 0x7E6F, 0x803B, 0x812A, 0x8160, 0x80F8,\n    0x8042, 0x7F78, 0x7EA0, 0x7DB8, 0x7CC1, 0x7BBB, 0x7AA7, 0x7987,\n    0x785A, 0x7723, 0x75E1, 0x7496, 0x7341, 0x71E5, 0x7082, 0x6F18,\n    0x6DA9, 0x6C36, 0x69DA, 0x6670, 0x6310, 0x60D6, 0x5FA2, 0x5E98,\n    0x5DB3, 0x5CEF, 0x5C48, 0x5BBA, 0x5B42, 0x5ADA, 0x5A7F, 0x5A2D,\n    0x5A23, 0x5A81, 0x5B19, 0x5BBA, 0x5C35, 0x5C7D, 0x5CAD, 0x5CD1,\n    0x5CF7, 0x5D2C, 0x5D7E, 0x5DF9, 0x5EAB, 0x5F93, 0x60A3, 0x61D3,\n    0x631D, 0x6479, 0x65E2, 0x674F, 0x68BB, 0x6A1D, 0x6B70, 0x6CAC,\n    0x6DCB, 0x6EC4, 0x6F93, 0x702F, 0x7091, 0x70B4, 0x1DC6, 0x1DCA,\n    0x1DD4, 0x1DE1, 0x1DEC, 0x1DF3, 0x1DF2, 0x1DE6, 0x1DCC, 0x1D9F,\n    0x1D5D, 0x1D01, 0x1C8A, 0x1BF2, 0x1B38, 0x1A3E, 0x18F8, 0x1774,\n    0x15C1, 0x13EF, 0x120C, 0x1029, 0x0E54, 0x0C9D, 0x0B13, 0x09C5,\n    0x08C3, 0x081C, 0x0884, 0x0A42, 0x0CBC, 0x0F57, 0x1179, 0x128A,\n    0x12BF, 0x12BB, 0x1288, 0x122D, 0x11B4, 0x1126, 0x108C, 0x0FEF,\n    0x0F58, 0x0ED0, 0x0E5F, 0x0E10, 0x0DB4, 0x0D67, 0x0D9D, 0x0EC8,\n    0x10FD, 0x13DB, 0x1728, 0x1AA9, 0x1E25, 0x2161, 0x2423, 0x2632,\n    0x2752, 0x274A, 0x2367, 0x1B10, 0x112F, 0x08B0, 0x047E, 0x0476,\n    0x062B, 0x0921, 0x0CD8, 0x10D1, 0x148F, 0x1792, 0x195B, 0x1A4C,\n    0x1B1A, 0x1BC7, 0x1C57, 0x1CCC, 0x1D29, 0x1D70, 0x1DA3, 0x1DC6,\n    0x1DDC, 0x1DE6, 0x1DE7, 0x1DE2, 0x1DDA, 0x1DD1, 0x1DC9, 0x1DC6,\n    0x068D, 0x06A3, 0x06DE, 0x0738, 0x07AA, 0x082B, 0x08B6, 0x0941,\n    0x09C7, 0x0A40, 0x0AA5, 0x0AEE, 0x0B13, 0x0B0F, 0x0AD9, 0x0A6B,\n    0x09CA, 0x08FE, 0x080D, 0x06FE, 0x05DB, 0x04A9, 0x0371, 0x023A,\n    0x010A, 0xFFEC, 0xFEE4, 0xFDFB, 0xFD1B, 0xFC3D, 0xFB7B, 0xFAED,\n    0xFAB0, 0xFADB, 0xFB5F, 0xFC12, 0xFCEA, 0xFDE0, 0xFEEA, 0xFFFE,\n    0x0113, 0x0222, 0x0320, 0x0405, 0x04C7, 0x055D, 0x0549, 0x0471,\n    0x0363, 0x02AC, 0x023B, 0x01AB, 0x010B, 0x006D, 0xFFE1, 0xFF75,\n    0xFF3B, 0xFF42, 0xFF9B, 0x0054, 0x0279, 0x064A, 0x0AAE, 0x0E89,\n    0x10C3, 0x117C, 0x11A4, 0x115D, 0x10C8, 0x1003, 0x0F31, 0x0E71,\n    0x0DE5, 0x0D75, 0x0CFA, 0x0C75, 0x0BE9, 0x0B58, 0x0AC5, 0x0A32,\n    0x09A1, 0x0916, 0x0892, 0x0817, 0x07A9, 0x0749, 0x06FB, 0x06C0,\n    0x069A, 0x068D, 0x12B0, 0x1283, 0x1205, 0x1144, 0x104E, 0x0F33,\n    0x0DFF, 0x0CC1, 0x0B88, 0x0A62, 0x095C, 0x0885, 0x07EC, 0x079E,\n    0x07AA, 0x080E, 0x08BA, 0x09A4, 0x0AC6, 0x0C16, 0x0D8B, 0x0F1F,\n    0x10C8, 0x127D, 0x1437, 0x15EE, 0x1798, 0x192E, 0x1B43, 0x1E0E,\n    0x20FC, 0x2379, 0x24F1, 0x24D0, 0x235D, 0x2155, 0x1ED2, 0x1BF3,\n    0x18D2, 0x158C, 0x123D, 0x0F02, 0x0BF7, 0x0937, 0x06E0, 0x050D,\n    0x0536, 0x079E, 0x0A91, 0x0C5A, 0x0D05, 0x0DB4, 0x0E5C, 0x0EEF,\n    0x0F62, 0x0FA8, 0x0FB3, 0x0F78, 0x0EEA, 0x0DFB, 0x0B8E, 0x0751,\n    0x026D, 0xFE0C, 0xFB54, 0xFA0C, 0xF92B, 0xF8AA, 0xF87F, 0xF8A2,\n    0xF90A, 0xF9AE, 0xFA87, 0xFB98, 0xFCE8, 0xFE6B, 0x0018, 0x01E4,\n    0x03C6, 0x05B4, 0x07A3, 0x0988, 0x0B5B, 0x0D10, 0x0E9E, 0x0FFA,\n    0x111A, 0x11F5, 0x127F, 0x12B0, 0xC05D, 0xE128, 0xC001, 0xE128,\n    0xC05D, 0x0006, 0x000F, 0x002A, 0x0056, 0x0091, 0x00D9, 0x012E,\n    0x018E, 0x01F7, 0x0269, 0x02E1, 0x035F, 0x03E1, 0x0465, 0x04EB,\n    0x0585, 0x0641, 0x0717, 0x0800, 0x08F2, 0x09E7, 0x0AD5, 0x0BB5,\n    0x0C80, 0x0D2C, 0x0DB2, 0x0E0A, 0x0E2C, 0x0E23, 0x0E04, 0x0DCF,\n    0x0D87, 0x0D2D, 0x0CC3, 0x0C4A, 0x0BC5, 0x0B36, 0x0A9D, 0x09FD,\n    0x0957, 0x08AE, 0x0803, 0x0757, 0x06AE, 0x0607, 0x0566, 0x0468,\n    0x02F7, 0x018A, 0x0094, 0xFFEA, 0xFF1A, 0xFE3C, 0xFD63, 0xFCA6,\n    0xFC18, 0xFBD0, 0xFBE2, 0xFC62, 0xFD67, 0x0097, 0x0650, 0x0CB7,\n    0x11F2, 0x1426, 0x135A, 0x111D, 0x0DE2, 0x0A1A, 0x0635, 0x02A6,\n    0xFFDF, 0xFE4F, 0xFD9D, 0xFD1F, 0xFCD0, 0xFCAA, 0xFCA9, 0xFCC7,\n    0xFCFE, 0xFD49, 0xFDA3, 0xFE07, 0xFE6F, 0xFED5, 0xFF35, 0xFF89,\n    0xFFCB, 0xFFF7, 0x0006, 0x095E, 0x08FD, 0x07ED, 0x064B, 0x0437,\n    0x01CD, 0xFF2E, 0xFC74, 0xF9BE, 0xF72C, 0xF4DA, 0xF2E6, 0xF16F,\n    0xF092, 0xF06D, 0xF128, 0xF2BC, 0xF501, 0xF7D1, 0xFB05, 0xFE75,\n    0x01F9, 0x056C, 0x08A6, 0x0B81, 0x0DD4, 0x0F79, 0x1049, 0x1075,\n    0x1050, 0x0FE0, 0x0F2E, 0x0E42, 0x0D22, 0x0BD7, 0x0A69, 0x08DE,\n    0x0740, 0x0595, 0x03E5, 0x0239, 0x0097, 0xFF09, 0xFD94, 0xFC41,\n    0xFB17, 0xFA25, 0xF972, 0xF8FB, 0xF8BC, 0xF8B0, 0xF8C7, 0xF8F8,\n    0xF935, 0xF975, 0xF9AA, 0xF9C9, 0xF9C7, 0xF998, 0xF930, 0xF821,\n    0xF652, 0xF431, 0xF232, 0xF0C6, 0xEFB7, 0xEE97, 0xED81, 0xEC90,\n    0xEBDE, 0xEB85, 0xEBA2, 0xEC4D, 0xED77, 0xEEF2, 0xF0B3, 0xF2AD,\n    0xF4D2, 0xF715, 0xF96A, 0xFBC3, 0xFE14, 0x004F, 0x0269, 0x0453,\n    0x0602, 0x0767, 0x0876, 0x0922, 0x095E, 0x19C6, 0x1996, 0x190F,\n    0x1840, 0x1737, 0x1603, 0x14B3, 0x1354, 0x11F6, 0x10A8, 0x0F77,\n    0x0E72, 0x0DA8, 0x0D28, 0x0CFF, 0x0D4E, 0x0E1A, 0x0F48, 0x10C1,\n    0x1269, 0x142A, 0x15E8, 0x178A, 0x18F9, 0x1A19, 0x1AD2, 0x1B0A,\n    0x1AA9, 0x19B7, 0x1859, 0x169D, 0x1492, 0x1246, 0x0FC7, 0x0D24,\n    0x0A6B, 0x07AA, 0x04F1, 0x024D, 0xFFCD, 0xFD7F, 0xFB71, 0xF9B3,\n    0xF851, 0xF75B, 0xF6E0, 0xFAE9, 0x046C, 0x0EDF, 0x15B4, 0x1934,\n    0x1CA0, 0x1FDB, 0x22CB, 0x2551, 0x2751, 0x28B0, 0x2951, 0x2917,\n    0x27E6, 0x227B, 0x17F3, 0x0BBD, 0x014B, 0xFC0D, 0xFBD3, 0xFDBC,\n    0x012E, 0x0591, 0x0A49, 0x0EBE, 0x1255, 0x1474, 0x158F, 0x1682,\n    0x1750, 0x17FB, 0x1887, 0x18F6, 0x194C, 0x198C, 0x19B8, 0x19D4,\n    0x19E2, 0x19E6, 0x19E3, 0x19DB, 0x19D2, 0x19CA, 0x19C6, 0xE128,\n    0xC001, 0xE128, 0x0003, 0xFFE8, 0xFF98, 0xFF1E, 0xFE82, 0xFDCB,\n    0xFD03, 0xFC32, 0xFB60, 0xFA96, 0xF9DC, 0xF93B, 0xF8BA, 0xF863,\n    0xF83D, 0xF854, 0xF8A5, 0xF927, 0xF9CD, 0xFA8D, 0xFB5B, 0xFC2D,\n    0xFCF7, 0xFDAE, 0xFE47, 0xFEB8, 0xFEF4, 0xFEF1, 0xFEBE, 0xFE71,\n    0xFE0C, 0xFD93, 0xFD07, 0xFC6B, 0xFBC1, 0xFB0C, 0xFA4F, 0xF98B,\n    0xF8C3, 0xF7F9, 0xF730, 0xF66A, 0xF5AA, 0xF4F1, 0xF443, 0xF3A2,\n    0xF305, 0xF270, 0xF1F9, 0xF1B5, 0xF190, 0xF16C, 0xF14B, 0xF130,\n    0xF11E, 0xF118, 0xF120, 0xF13A, 0xF169, 0xF1AF, 0xF25F, 0xF38E,\n    0xF4E1, 0xF5FE, 0xF68A, 0xF67D, 0xF61C, 0xF585, 0xF4D8, 0xF433,\n    0xF3B3, 0xF376, 0xF39C, 0xF412, 0xF4AD, 0xF567, 0xF63C, 0xF725,\n    0xF81C, 0xF91B, 0xFA1E, 0xFB1E, 0xFC15, 0xFCFD, 0xFDD2, 0xFE8D,\n    0xFF29, 0xFF9F, 0xFFEA, 0x0003, 0x09C7, 0x0969, 0x0863, 0x06D3,\n    0x04D6, 0x028A, 0x000D, 0xFD7E, 0xFAF8, 0xF899, 0xF681, 0xF4CB,\n    0xF397, 0xF302, 0xF329, 0xF443, 0xF652, 0xF92A, 0xFC9C, 0x0078,\n    0x0492, 0x08BC, 0x0CC8, 0x1086, 0x13C9, 0x1662, 0x1825, 0x18E1,\n    0x18CA, 0x1839, 0x173C, 0x15DE, 0x142F, 0x123A, 0x100C, 0x0DB4,\n    0x0B3D, 0x08B6, 0x062C, 0x03AA, 0x0140, 0xFEFA, 0xFCE4, 0xFB0C,\n    0xF97F, 0xF84B, 0xF930, 0xFC8D, 0x0059, 0x028C, 0x0346, 0x03F9,\n    0x0498, 0x0516, 0x0566, 0x057A, 0x0544, 0x04B8, 0x03C8, 0x0268,\n    0xFF0D, 0xF94F, 0xF2D6, 0xED49, 0xEA50, 0xE9B7, 0xEA0A, 0xEB14,\n    0xEC9F, 0xEE78, 0xF067, 0xF238, 0xF3B6, 0xF50C, 0xF684, 0xF817,\n    0xF9BF, 0xFB73, 0xFD2E, 0xFEE7, 0x0097, 0x0239, 0x03C4, 0x0532,\n    0x067A, 0x0797, 0x0881, 0x0931, 0x09A0, 0x09C7, 0x0FD4, 0x0FE1,\n    0x1007, 0x1040, 0x1089, 0x10DD, 0x1139, 0x1197, 0x11F5, 0x124D,\n    0x129C, 0x12DC, 0x130B, 0x1324, 0x1322, 0x130A, 0x12E2, 0x12AC,\n    0x1268, 0x1217, 0x11BA, 0x1151, 0x10DE, 0x1061, 0x0FDB, 0x0F4D,\n    0x0EB7, 0x0E1B, 0x0D64, 0x0C81, 0x0B7B, 0x0A58, 0x0921, 0x07DE,\n    0x0696, 0x0551, 0x0416, 0x02EE, 0x01E0, 0x00F3, 0x0030, 0xFF9F,\n    0xFF46, 0xFF2E, 0xFF5E, 0xFFDF, 0x0461, 0x0DA4, 0x173F, 0x1CCA,\n    0x1E77, 0x1F7D, 0x1FF5, 0x1FFB, 0x1FA7, 0x1F15, 0x1E5F, 0x1D9E,\n    0x1CEE, 0x1C67, 0x1B8D, 0x1A1B, 0x1883, 0x1739, 0x16AE, 0x16EE,\n    0x179D, 0x1894, 0x19AA, 0x1AB8, 0x1B97, 0x1C1D, 0x1C24, 0x1BC7,\n    0x1B3E, 0x1A92, 0x19C7, 0x18E4, 0x17EF, 0x16EF, 0x15EA, 0x14E5,\n    0x13E8, 0x12F8, 0x121D, 0x115B, 0x10B9, 0x103E, 0x0FEF, 0x0FD4,\n    0x0003, 0x0013, 0x003F, 0x0082, 0x00D7, 0x0138, 0x01A0, 0x020A,\n    0x0271, 0x02CE, 0x031E, 0x0359, 0x037C, 0x0381, 0x0363, 0x0314,\n    0x0294, 0x01EB, 0x0123, 0x0046, 0xFF5D, 0xFE71, 0xFD8B, 0xFCB5,\n    0xFBF9, 0xFB60, 0xFAF3, 0xFABD, 0xFAB0, 0xFABB, 0xFADA, 0xFB0B,\n    0xFB4D, 0xFB9C, 0xFBF7, 0xFC5C, 0xFCC8, 0xFD38, 0xFDAC, 0xFE21,\n    0xFE93, 0xFF02, 0xFF6B, 0xFFCB, 0x0020, 0x0069, 0x009B, 0x00AA,\n    0x009A, 0x0069, 0x0017, 0xFFA9, 0xFF26, 0xFE9B, 0xFE11, 0xFD94,\n    0xFD2E, 0xFCE8, 0xFCCE, 0xFCEA, 0xFDBF, 0xFF6A, 0x015A, 0x0301,\n    0x03CF, 0x03C9, 0x0366, 0x02C2, 0x01F6, 0x0120, 0x005A, 0xFFC1,\n    0xFF6E, 0xFF4D, 0xFF37, 0xFF2B, 0xFF28, 0xFF2C, 0xFF37, 0xFF47,\n    0xFF5B, 0xFF72, 0xFF8B, 0xFFA4, 0xFFBC, 0xFFD3, 0xFFE7, 0xFFF6,\n    0x0000, 0x0003, 0xF843, 0xF883, 0xF935, 0xFA46, 0xFBA1, 0xFD33,\n    0xFEE6, 0x00A6, 0x0261, 0x0402, 0x0575, 0x06A5, 0x077E, 0x07ED,\n    0x07DD, 0x072A, 0x05D0, 0x03F0, 0x01A9, 0xFF1B, 0xFC63, 0xF9A2,\n    0xF6F6, 0xF480, 0xF25E, 0xF0B0, 0xEF95, 0xEF2D, 0xEF51, 0xEFC1,\n    0xF077, 0xF16A, 0xF292, 0xF3E9, 0xF567, 0xF703, 0xF8B7, 0xFA7B,\n    0xFC47, 0xFE14, 0xFFDA, 0x0190, 0x0332, 0x04B5, 0x0614, 0x0745,\n    0x07E5, 0x07D7, 0x0780, 0x0745, 0x0738, 0x0729, 0x0719, 0x0708,\n    0x06F6, 0x06E4, 0x06D1, 0x06BE, 0x06AC, 0x0699, 0x0669, 0x061A,\n    0x05D9, 0x05D4, 0x0636, 0x0725, 0x0886, 0x0A25, 0x0BD0, 0x0D54,\n    0x0E80, 0x0F1F, 0x0F00, 0x0E48, 0x0D43, 0x0BFE, 0x0A83, 0x08DD,\n    0x0719, 0x0541, 0x0361, 0x0184, 0xFFB5, 0xFDFF, 0xFC6D, 0xFB0B,\n    0xF9E4, 0xF904, 0xF875, 0xF843, 0xF0C9, 0xF0F8, 0xF17D, 0xF24D,\n    0xF35B, 0xF49C, 0xF605, 0xF78A, 0xF920, 0xFABA, 0xFC4D, 0xFDCD,\n    0xFF2F, 0x0067, 0x0169, 0x024F, 0x0337, 0x041B, 0x04F8, 0x05CA,\n    0x068D, 0x073C, 0x07D3, 0x0850, 0x08AC, 0x08E5, 0x08F5, 0x08DA,\n    0x0896, 0x0832, 0x07B1, 0x0716, 0x0665, 0x05A1, 0x04CD, 0x03EC,\n    0x0302, 0x0212, 0x0120, 0x002E, 0xFF41, 0xFE5A, 0xFD7E, 0xFCAF,\n    0xFBF2, 0xFB49, 0xFB35, 0xFBB3, 0xFBFB, 0xFB49, 0xF96D, 0xF6E5,\n    0xF3EF, 0xF0C7, 0xEDAA, 0xEAD5, 0xE884, 0xE6F3, 0xE661, 0xE708,\n    0xEBEC, 0xF5B4, 0x0115, 0x0AC7, 0x0F80, 0x0F66, 0x0D38, 0x098F,\n    0x0502, 0x0029, 0xFB9E, 0xF7F6, 0xF5CB, 0xF4A7, 0xF3B0, 0xF2E1,\n    0xF238, 0xF1B0, 0xF146, 0xF0F8, 0xF0C1, 0xF09F, 0xF08D, 0xF089,\n    0xF08E, 0xF09A, 0xF0AA, 0xF0B9, 0xF0C5, 0xF0C9, 0x3DB1, 0x0000,\n};\n\n// 0x0601C25C\nstatic const u16 piranha_plant_seg6_animindex_0601C25C[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0000, 0x0001, 0x0003, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0606,\n    0x005A, 0x04F8, 0x005A, 0x0552, 0x005A, 0x05AC,\n    0x005A, 0x03EA, 0x005A, 0x0444, 0x005A, 0x049E,\n    0x005A, 0x02D9, 0x005A, 0x0333, 0x005A, 0x038D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02D8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005A, 0x0004,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02D4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005A, 0x005E,\n    0x0001, 0x03E7, 0x0001, 0x03E8, 0x0001, 0x03E9,\n    0x005A, 0x00B8, 0x005A, 0x0112, 0x005A, 0x016C,\n    0x0001, 0x02D5, 0x0001, 0x02D6, 0x0001, 0x02D7,\n    0x005A, 0x01C6, 0x005A, 0x0220, 0x005A, 0x027A,\n};\n\n// 0x0601C304\nstatic const struct Animation piranha_plant_seg6_anim_0601C304 = {\n    0,\n    0,\n    0,\n    0,\n    0x5A,\n    ANIMINDEX_NUMPARTS(piranha_plant_seg6_animindex_0601C25C),\n    piranha_plant_seg6_animvalue_0601B64C,\n    piranha_plant_seg6_animindex_0601C25C,\n    0,\n};\n"
  },
  {
    "path": "actors/piranha_plant/anims/data.inc.c",
    "content": "#include \"anim_06017C38.inc.c\"\n#include \"anim_06017D88.inc.c\"\n#include \"anim_060187B0.inc.c\"\n#include \"anim_06018BA8.inc.c\"\n#include \"anim_06019854.inc.c\"\n#include \"anim_0601A014.inc.c\"\n#include \"anim_0601AAE4.inc.c\"\n#include \"anim_0601AF34.inc.c\"\n#include \"anim_0601B634.inc.c\"\n#include \"anim_0601C304.inc.c\"\n"
  },
  {
    "path": "actors/piranha_plant/anims/table.inc.c",
    "content": "// 0x0601C31C\nconst struct Animation *const piranha_plant_seg6_anims_0601C31C[] = {\n    &piranha_plant_seg6_anim_06017C38,\n    &piranha_plant_seg6_anim_06017D88,\n    &piranha_plant_seg6_anim_060187B0,\n    &piranha_plant_seg6_anim_06018BA8,\n    &piranha_plant_seg6_anim_06019854,\n    &piranha_plant_seg6_anim_0601A014,\n    &piranha_plant_seg6_anim_0601AF34,\n    &piranha_plant_seg6_anim_0601AAE4,\n    &piranha_plant_seg6_anim_0601B634,\n    &piranha_plant_seg6_anim_0601C304,\n    NULL,\n};\n\n// huh? this isnt following the Bin ID format?\nUNUSED static const u64 piranha_plant_unused_1 = 1;\n"
  },
  {
    "path": "actors/piranha_plant/geo.inc.c",
    "content": "// 0x0D000358\nconst GeoLayout piranha_plant_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x9B, 200),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 14, 3, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, piranha_plant_seg6_dl_06015850),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 46, 0, 0, piranha_plant_seg6_dl_06016F20),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 154, 0, 0, piranha_plant_seg6_dl_06016D98),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 153, 0, 0, piranha_plant_seg6_dl_06016C10),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 236, 42, 0, NULL),\n                                GEO_OPEN_NODE(),\n                                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, piranha_plant_seg6_dl_060160B0),\n                                    GEO_OPEN_NODE(),\n                                        GEO_DISPLAY_LIST(LAYER_ALPHA, piranha_plant_seg6_dl_06016120),\n                                    GEO_CLOSE_NODE(),\n                                GEO_CLOSE_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 217, -2, 0, NULL),\n                                GEO_OPEN_NODE(),\n                                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, piranha_plant_seg6_dl_060169E8),\n                                    GEO_OPEN_NODE(),\n                                        GEO_DISPLAY_LIST(LAYER_ALPHA, piranha_plant_seg6_dl_06016A78),\n                                    GEO_CLOSE_NODE(),\n                                GEO_CLOSE_NODE(),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 49, 0, -34, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, piranha_plant_seg6_dl_06015480),\n                        GEO_CLOSE_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 49, 0, 37, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, piranha_plant_seg6_dl_06015578),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/piranha_plant/model.inc.c",
    "content": "// Piranha Plant\n\n// 0x060113B0\nstatic const Lights1 piranha_plant_seg6_lights_060113B0 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x060113C8\nstatic const Lights1 piranha_plant_seg6_lights_060113C8 = gdSPDefLights1(\n    0x0a, 0x2b, 0x02,\n    0x2b, 0xae, 0x0a, 0x28, 0x28, 0x28\n);\n\n// 0x060113E0\nstatic const Lights1 piranha_plant_seg6_lights_060113E0 = gdSPDefLights1(\n    0x3f, 0x00, 0x00,\n    0xff, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x060113F8\nALIGNED8 static const Texture piranha_plant_seg6_texture_060113F8[] = {\n#include \"actors/piranha_plant/piranha_plant_tongue.rgba16.inc.c\"\n};\n\n// 0x060123F8\nALIGNED8 static const Texture piranha_plant_seg6_texture_060123F8[] = {\n#include \"actors/piranha_plant/piranha_plant_skin.rgba16.inc.c\"\n};\n\n// 0x06012BF8\nALIGNED8 static const Texture piranha_plant_seg6_texture_06012BF8[] = {\n#include \"actors/piranha_plant/piranha_plant_stem.rgba16.inc.c\"\n};\n\n// 0x060133F8\nALIGNED8 static const Texture piranha_plant_seg6_texture_060133F8[] = {\n#include \"actors/piranha_plant/piranha_plant_bottom_lip.rgba16.inc.c\"\n};\n\n// 0x06013BF8\nALIGNED8 static const Texture piranha_plant_seg6_texture_06013BF8[] = {\n#include \"actors/piranha_plant/piranha_plant_tooth.rgba16.inc.c\"\n};\n\n// 0x060143F8\nALIGNED8 static const Texture piranha_plant_seg6_texture_060143F8[] = {\n#include \"actors/piranha_plant/piranha_plant_leaf.rgba16.inc.c\"\n};\n\n// 0x060153F8\nstatic const Vtx piranha_plant_seg6_vertex_060153F8[] = {\n    {{{     0,      1,   -223}, 0, {     0,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   519,      1,    211}, 0, {   990,     28}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   519,      1,   -223}, 0, {     0,     28}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,      1,    211}, 0, {   990,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x06015438 - 0x06015480\nconst Gfx piranha_plant_seg6_dl_06015438[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, piranha_plant_seg6_texture_060143F8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&piranha_plant_seg6_lights_060113B0.l, 1),\n    gsSPLight(&piranha_plant_seg6_lights_060113B0.a, 2),\n    gsSPVertex(piranha_plant_seg6_vertex_060153F8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06015480 - 0x060154F0\nconst Gfx piranha_plant_seg6_dl_06015480[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(piranha_plant_seg6_dl_06015438),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x060154F0\nstatic const Vtx piranha_plant_seg6_vertex_060154F0[] = {\n    {{{   518,      2,   -223}, 0, {   990,      8}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{   518,      1,    211}, 0, {     0,      8}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{     0,     -1,    211}, 0, {     0,   2012}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{     0,      0,   -223}, 0, {   990,   2012}, {0x00, 0x82, 0x00, 0xff}}},\n};\n\n// 0x06015530 - 0x06015578\nconst Gfx piranha_plant_seg6_dl_06015530[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, piranha_plant_seg6_texture_060143F8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&piranha_plant_seg6_lights_060113B0.l, 1),\n    gsSPLight(&piranha_plant_seg6_lights_060113B0.a, 2),\n    gsSPVertex(piranha_plant_seg6_vertex_060154F0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06015578 - 0x060155E8\nconst Gfx piranha_plant_seg6_dl_06015578[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(piranha_plant_seg6_dl_06015530),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x060155E8\nstatic const Vtx piranha_plant_seg6_vertex_060155E8[] = {\n    {{{    49,    -71,      0}, 0, {   800,    384}, {0x6e, 0xc3, 0x0d, 0xff}}},\n    {{{    46,     -7,    -87}, 0, {   168,    384}, {0x6c, 0xe5, 0xc4, 0xff}}},\n    {{{    67,     22,      0}, 0, {   488,   -128}, {0x7e, 0x07, 0x00, 0xff}}},\n    {{{    -6,   -131,      0}, 0, {   990,    990}, {0x5c, 0xac, 0xeb, 0xff}}},\n    {{{   -12,    -28,   -141}, 0, {     0,    990}, {0x57, 0xff, 0xa4, 0xff}}},\n    {{{   -22,    138,    -87}, 0, {  1016,    990}, {0x51, 0x5a, 0xdd, 0xff}}},\n    {{{    40,     95,     54}, 0, {   166,    368}, {0x66, 0x44, 0x1c, 0xff}}},\n    {{{    40,     95,    -53}, 0, {   814,    370}, {0x67, 0x35, 0xce, 0xff}}},\n    {{{   -22,    138,     88}, 0, {     0,    990}, {0x53, 0x41, 0x46, 0xff}}},\n    {{{    67,     22,      0}, 0, {   490,   -156}, {0x7e, 0x07, 0x00, 0xff}}},\n    {{{   -12,    -28,   -141}, 0, {   990,    990}, {0x57, 0xff, 0xa4, 0xff}}},\n    {{{   -22,    138,    -87}, 0, {     0,    990}, {0x51, 0x5a, 0xdd, 0xff}}},\n    {{{    40,     95,    -53}, 0, {   124,    380}, {0x67, 0x35, 0xce, 0xff}}},\n    {{{    46,     -7,    -87}, 0, {   756,    380}, {0x6c, 0xe5, 0xc4, 0xff}}},\n};\n\n// 0x060156C8\nstatic const Vtx piranha_plant_seg6_vertex_060156C8[] = {\n    {{{    40,     95,     54}, 0, {   796,    370}, {0x66, 0x44, 0x1c, 0xff}}},\n    {{{    46,     -7,     88}, 0, {   164,    370}, {0x6b, 0xfe, 0x44, 0xff}}},\n    {{{    67,     22,      0}, 0, {   482,   -152}, {0x7e, 0x07, 0x00, 0xff}}},\n    {{{    46,     -7,    -87}, 0, {   756,    380}, {0x6c, 0xe5, 0xc4, 0xff}}},\n    {{{    40,     95,    -53}, 0, {   124,    380}, {0x67, 0x35, 0xce, 0xff}}},\n    {{{    67,     22,      0}, 0, {   406,   -134}, {0x7e, 0x07, 0x00, 0xff}}},\n    {{{    46,     -7,     88}, 0, {   822,    370}, {0x6b, 0xfe, 0x44, 0xff}}},\n    {{{    49,    -71,      0}, 0, {   190,    370}, {0x6e, 0xc3, 0x0d, 0xff}}},\n    {{{    67,     22,      0}, 0, {   530,   -154}, {0x7e, 0x07, 0x00, 0xff}}},\n    {{{   -12,    -28,    142}, 0, {   990,    990}, {0x59, 0xd5, 0x4e, 0xff}}},\n    {{{    -6,   -131,      0}, 0, {     0,    990}, {0x5c, 0xac, 0xeb, 0xff}}},\n    {{{   -22,    138,     88}, 0, {   990,    990}, {0x53, 0x41, 0x46, 0xff}}},\n    {{{   -12,    -28,    142}, 0, {     0,    990}, {0x59, 0xd5, 0x4e, 0xff}}},\n};\n\n// 0x06015798 - 0x06015850\nconst Gfx piranha_plant_seg6_dl_06015798[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, piranha_plant_seg6_texture_06012BF8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&piranha_plant_seg6_lights_060113B0.l, 1),\n    gsSPLight(&piranha_plant_seg6_lights_060113B0.a, 2),\n    gsSPVertex(piranha_plant_seg6_vertex_060155E8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 3,  4,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  7,  6,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(piranha_plant_seg6_vertex_060156C8, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  7,  6, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0, 11,  1,  0, 0x0),\n    gsSP1Triangle(11, 12,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06015850 - 0x060158B0\nconst Gfx piranha_plant_seg6_dl_06015850[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(piranha_plant_seg6_dl_06015798),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x060158B0\nstatic const Vtx piranha_plant_seg6_vertex_060158B0[] = {\n    {{{   519,     74,      0}, 0, {     0,     84}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{   387,    136,    249}, 0, {  4082,    990}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{   387,     66,    249}, 0, {  4074,      0}, {0x70, 0x00, 0x3b, 0xff}}},\n    {{{   519,    136,      0}, 0, {     0,    990}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{   387,     66,   -248}, 0, { -3114,      0}, {0x4b, 0x00, 0x9a, 0xff}}},\n    {{{   387,    136,   -248}, 0, { -3122,    990}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{   519,     74,      0}, 0, {   990,     84}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{   519,    136,      0}, 0, {   990,    990}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{   387,     68,    249}, 0, {   -54,    -20}, {0x16, 0x00, 0x7c, 0xff}}},\n    {{{   387,    136,    249}, 0, {   -36,    988}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{   186,     56,    286}, 0, {  3382,    996}, {0x16, 0x00, 0x7c, 0xff}}},\n    {{{   186,     56,   -285}, 0, { -2756,    990}, {0x16, 0x00, 0x84, 0xff}}},\n    {{{   387,    136,   -248}, 0, {   982,    990}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{   387,     66,   -248}, 0, {   990,      0}, {0x4b, 0x00, 0x9a, 0xff}}},\n};\n\n// 0x06015990\nstatic const Vtx piranha_plant_seg6_vertex_06015990[] = {\n    {{{   597,     13,      0}, 0, {  -166,    532}, {0x7c, 0x17, 0xfe, 0xff}}},\n    {{{   385,     72,    255}, 0, {   872,    938}, {0x2c, 0x6c, 0x2f, 0xff}}},\n    {{{   391,     10,    335}, 0, {  1064,    610}, {0x30, 0xfe, 0x75, 0xff}}},\n    {{{   391,     10,   -334}, 0, {  1090,    606}, {0x2d, 0x18, 0x8c, 0xff}}},\n    {{{   381,    -93,   -260}, 0, {  1028,    -16}, {0x48, 0xbf, 0xb0, 0xff}}},\n    {{{   101,    -60,   -288}, 0, {    -4,    150}, {0xd8, 0xc9, 0x96, 0xff}}},\n    {{{   108,     56,   -294}, 0, {     2,    850}, {0xda, 0x65, 0xbf, 0xff}}},\n    {{{   385,     72,   -253}, 0, {  1004,    972}, {0x16, 0x77, 0xdd, 0xff}}},\n    {{{    56,      2,   -271}, 0, {  -192,    522}, {0xaf, 0xfb, 0x9f, 0xff}}},\n    {{{   391,     10,    335}, 0, {   -70,    596}, {0x30, 0xfe, 0x75, 0xff}}},\n    {{{   385,     72,    255}, 0, {   -12,    966}, {0x2c, 0x6c, 0x2f, 0xff}}},\n    {{{   108,     56,    296}, 0, {   910,    840}, {0xe4, 0x73, 0x2c, 0xff}}},\n    {{{    58,      2,    277}, 0, {  1100,    562}, {0xaf, 0xfc, 0x61, 0xff}}},\n    {{{   100,    -62,    291}, 0, {   952,    216}, {0xc6, 0xc8, 0x61, 0xff}}},\n    {{{   381,    -93,    261}, 0, {    14,     86}, {0x2c, 0xbe, 0x62, 0xff}}},\n};\n\n// 0x06015A80\nstatic const Vtx piranha_plant_seg6_vertex_06015A80[] = {\n    {{{   391,     10,   -334}, 0, {   -64,    582}, {0x2d, 0x18, 0x8c, 0xff}}},\n    {{{   385,     72,   -253}, 0, {   130,    944}, {0x16, 0x77, 0xdd, 0xff}}},\n    {{{   519,     79,      0}, 0, {   978,    956}, {0x33, 0x73, 0xf4, 0xff}}},\n    {{{   391,     10,    335}, 0, {  1064,    610}, {0x30, 0xfe, 0x75, 0xff}}},\n    {{{   381,    -93,    261}, 0, {   866,     20}, {0x2c, 0xbe, 0x62, 0xff}}},\n    {{{   545,    -83,      0}, 0, {   -96,      0}, {0x6b, 0xbf, 0x14, 0xff}}},\n    {{{   597,     13,      0}, 0, {  -166,    532}, {0x7c, 0x17, 0xfe, 0xff}}},\n    {{{   519,     79,      0}, 0, {   -26,    904}, {0x33, 0x73, 0xf4, 0xff}}},\n    {{{   385,     72,    255}, 0, {   872,    938}, {0x2c, 0x6c, 0x2f, 0xff}}},\n    {{{   597,     13,      0}, 0, {  1100,    560}, {0x7c, 0x17, 0xfe, 0xff}}},\n    {{{   381,    -93,   -260}, 0, {    88,    -48}, {0x48, 0xbf, 0xb0, 0xff}}},\n    {{{   545,    -83,      0}, 0, {  1000,    -20}, {0x6b, 0xbf, 0x14, 0xff}}},\n};\n\n// 0x06015B40\nstatic const Vtx piranha_plant_seg6_vertex_06015B40[] = {\n    {{{   545,    -83,      0}, 0, {  -118,    908}, {0x6b, 0xbf, 0x14, 0xff}}},\n    {{{   381,    -93,    261}, 0, {  1050,    888}, {0x2c, 0xbe, 0x62, 0xff}}},\n    {{{   343,   -231,    195}, 0, {   880,     40}, {0x34, 0xa0, 0x3f, 0xff}}},\n    {{{   -76,    -53,      0}, 0, {   858,    140}, {0x8d, 0xcc, 0xf6, 0xff}}},\n    {{{   -89,     12,      0}, 0, {   742,   -130}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{    56,      2,   -271}, 0, {  -398,    542}, {0xaf, 0xfb, 0x9f, 0xff}}},\n    {{{   101,    -60,   -288}, 0, {  -382,    902}, {0xd8, 0xc9, 0x96, 0xff}}},\n    {{{   148,   -221,   -195}, 0, {   230,   1518}, {0xca, 0xa3, 0xbf, 0xff}}},\n    {{{    11,   -205,      0}, 0, {  1066,    914}, {0xab, 0xa3, 0x0c, 0xff}}},\n    {{{    58,      2,    277}, 0, {  1510,    656}, {0xaf, 0xfc, 0x61, 0xff}}},\n    {{{   -89,     12,      0}, 0, {    64,   1326}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{   -76,    -53,      0}, 0, {   -16,   1022}, {0x8d, 0xcc, 0xf6, 0xff}}},\n    {{{   100,    -62,    291}, 0, {  1546,    266}, {0xc6, 0xc8, 0x61, 0xff}}},\n    {{{    11,   -205,      0}, 0, {  -100,    168}, {0xab, 0xa3, 0x0c, 0xff}}},\n    {{{   440,   -225,      0}, 0, {    48,    -18}, {0x53, 0xa2, 0xf3, 0xff}}},\n    {{{   148,   -222,    196}, 0, {   962,   -438}, {0xe1, 0xa2, 0x4e, 0xff}}},\n};\n\n// 0x06015C40\nstatic const Vtx piranha_plant_seg6_vertex_06015C40[] = {\n    {{{   440,   -225,      0}, 0, {   -64,   1068}, {0x53, 0xa2, 0xf3, 0xff}}},\n    {{{   343,   -231,    195}, 0, {   342,    310}, {0x34, 0xa0, 0x3f, 0xff}}},\n    {{{   249,   -293,      0}, 0, {   640,    920}, {0xfe, 0x82, 0x00, 0xff}}},\n    {{{   381,    -93,    261}, 0, {     0,    766}, {0x2c, 0xbe, 0x62, 0xff}}},\n    {{{   148,   -222,    196}, 0, {   800,    -16}, {0xe1, 0xa2, 0x4e, 0xff}}},\n    {{{   343,   -231,    195}, 0, {   -22,     -8}, {0x34, 0xa0, 0x3f, 0xff}}},\n    {{{   100,    -62,    291}, 0, {  1186,    906}, {0xc6, 0xc8, 0x61, 0xff}}},\n    {{{   343,   -231,    195}, 0, {  1280,   -514}, {0x34, 0xa0, 0x3f, 0xff}}},\n    {{{   148,   -222,    196}, 0, {   738,   -860}, {0xe1, 0xa2, 0x4e, 0xff}}},\n    {{{   249,   -293,      0}, 0, {   682,     56}, {0xfe, 0x82, 0x00, 0xff}}},\n    {{{   148,   -222,    196}, 0, {   740,   -860}, {0xe1, 0xa2, 0x4e, 0xff}}},\n    {{{    11,   -205,      0}, 0, {   -28,   -436}, {0xab, 0xa3, 0x0c, 0xff}}},\n    {{{   249,   -293,      0}, 0, {   592,     44}, {0xfe, 0x82, 0x00, 0xff}}},\n    {{{   148,   -221,   -195}, 0, {   -80,    542}, {0xca, 0xa3, 0xbf, 0xff}}},\n    {{{   343,   -231,   -194}, 0, {   430,    930}, {0x21, 0xa1, 0xb3, 0xff}}},\n    {{{   440,   -225,      0}, 0, {  1090,    430}, {0x53, 0xa2, 0xf3, 0xff}}},\n};\n\n// 0x06015D40\nstatic const Vtx piranha_plant_seg6_vertex_06015D40[] = {\n    {{{   101,    -60,   -288}, 0, {   -78,    848}, {0xd8, 0xc9, 0x96, 0xff}}},\n    {{{   343,   -231,   -194}, 0, {   878,    562}, {0x21, 0xa1, 0xb3, 0xff}}},\n    {{{   148,   -221,   -195}, 0, {   264,    390}, {0xca, 0xa3, 0xbf, 0xff}}},\n    {{{   381,    -93,   -260}, 0, {   838,   1014}, {0x48, 0xbf, 0xb0, 0xff}}},\n    {{{   381,    -93,   -260}, 0, {  -186,    708}, {0x48, 0xbf, 0xb0, 0xff}}},\n    {{{   440,   -225,      0}, 0, {   862,    -86}, {0x53, 0xa2, 0xf3, 0xff}}},\n    {{{   343,   -231,   -194}, 0, {   -84,     -2}, {0x21, 0xa1, 0xb3, 0xff}}},\n    {{{   545,    -83,      0}, 0, {  1162,    670}, {0x6b, 0xbf, 0x14, 0xff}}},\n};\n\n// 0x06015DC0\nstatic const Vtx piranha_plant_seg6_vertex_06015DC0[] = {\n    {{{   108,     56,    296}, 0, {     0,      0}, {0xe4, 0x73, 0x2c, 0xff}}},\n    {{{   108,     56,   -294}, 0, {     0,      0}, {0xda, 0x65, 0xbf, 0xff}}},\n    {{{   -89,     12,      0}, 0, {     0,      0}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{   519,     79,      0}, 0, {     0,      0}, {0x33, 0x73, 0xf4, 0xff}}},\n    {{{   385,     72,   -253}, 0, {     0,      0}, {0x16, 0x77, 0xdd, 0xff}}},\n    {{{   385,     72,    255}, 0, {     0,      0}, {0x2c, 0x6c, 0x2f, 0xff}}},\n    {{{    58,      2,    277}, 0, {     0,      0}, {0xaf, 0xfc, 0x61, 0xff}}},\n    {{{    56,      2,   -271}, 0, {     0,      0}, {0xaf, 0xfb, 0x9f, 0xff}}},\n};\n\n// 0x06015E40 - 0x06015EA8\nconst Gfx piranha_plant_seg6_dl_06015E40[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, piranha_plant_seg6_texture_06013BF8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&piranha_plant_seg6_lights_060113B0.l, 1),\n    gsSPLight(&piranha_plant_seg6_lights_060113B0.a, 2),\n    gsSPVertex(piranha_plant_seg6_vertex_060158B0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06015EA8 - 0x06015F68\nconst Gfx piranha_plant_seg6_dl_06015EA8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, piranha_plant_seg6_texture_060133F8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&piranha_plant_seg6_lights_060113C8.l, 1),\n    gsSPLight(&piranha_plant_seg6_lights_060113C8.a, 2),\n    gsSPVertex(piranha_plant_seg6_vertex_06015990, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  3, 0x0,  3,  5,  8, 0x0),\n    gsSP2Triangles( 3,  8,  6, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14,  9, 0x0),\n    gsSP1Triangle( 9, 12, 13, 0x0),\n    gsSPVertex(piranha_plant_seg6_vertex_06015A80, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 0,  2,  9, 0x0,  9, 10,  0, 0x0),\n    gsSP1Triangle( 9, 11, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06015F68 - 0x06016060\nconst Gfx piranha_plant_seg6_dl_06015F68[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, piranha_plant_seg6_texture_060123F8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&piranha_plant_seg6_lights_060113B0.l, 1),\n    gsSPLight(&piranha_plant_seg6_lights_060113B0.a, 2),\n    gsSPVertex(piranha_plant_seg6_vertex_06015B40, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  3,  7,  8, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(11, 12,  9, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles( 0,  2, 14, 0x0, 12, 13, 15, 0x0),\n    gsSPVertex(piranha_plant_seg6_vertex_06015C40, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSP2Triangles(14, 15, 12, 0x0, 13, 14, 12, 0x0),\n    gsSPVertex(piranha_plant_seg6_vertex_06015D40, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06016060 - 0x060160B0\nconst Gfx piranha_plant_seg6_dl_06016060[] = {\n    gsSPLight(&piranha_plant_seg6_lights_060113E0.l, 1),\n    gsSPLight(&piranha_plant_seg6_lights_060113E0.a, 2),\n    gsSPVertex(piranha_plant_seg6_vertex_06015DC0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  5,  3, 0x0,  0,  4,  1, 0x0),\n    gsSP2Triangles( 6,  0,  2, 0x0,  2,  1,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x060160B0 - 0x06016120\nconst Gfx piranha_plant_seg6_dl_060160B0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(piranha_plant_seg6_dl_06015EA8),\n    gsSPDisplayList(piranha_plant_seg6_dl_06015F68),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(piranha_plant_seg6_dl_06016060),\n    gsSPEndDisplayList(),\n};\n\n// 0x06016120 - 0x06016190\nconst Gfx piranha_plant_seg6_dl_06016120[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(piranha_plant_seg6_dl_06015E40),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x06016190\nstatic const Vtx piranha_plant_seg6_vertex_06016190[] = {\n    {{{   228,      3,    232}, 0, { -2174,   1002}, {0xf5, 0x00, 0x7e, 0xff}}},\n    {{{   412,   -109,    249}, 0, {   988,    986}, {0x51, 0x00, 0x61, 0xff}}},\n    {{{   412,    -41,    249}, 0, {   982,    -34}, {0xf5, 0x00, 0x7e, 0xff}}},\n    {{{   412,    -39,   -248}, 0, {   984,     58}, {0x39, 0x00, 0x8f, 0xff}}},\n    {{{   412,   -109,   -248}, 0, {   990,    990}, {0x50, 0x00, 0x9e, 0xff}}},\n    {{{   229,      3,   -229}, 0, { -2282,    990}, {0xf3, 0x00, 0x82, 0xff}}},\n    {{{   554,    -39,      0}, 0, {   -36,    -44}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{   412,   -109,   -248}, 0, {  4004,    996}, {0x50, 0x00, 0x9e, 0xff}}},\n    {{{   412,    -39,   -248}, 0, {  4006,    -36}, {0x39, 0x00, 0x8f, 0xff}}},\n    {{{   554,   -109,      0}, 0, {   -38,    990}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{   412,    -39,    249}, 0, { -3106,    -70}, {0x6e, 0x00, 0x3e, 0xff}}},\n    {{{   412,   -109,    249}, 0, { -3106,    952}, {0x51, 0x00, 0x61, 0xff}}},\n    {{{   554,    -39,      0}, 0, {   990,      0}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{   554,   -109,      0}, 0, {   990,    990}, {0x7e, 0x00, 0x00, 0xff}}},\n};\n\n// 0x06016270\nstatic const Vtx piranha_plant_seg6_vertex_06016270[] = {\n    {{{   109,     -3,   -277}, 0, {  -290,    482}, {0xc4, 0xb1, 0xb2, 0xff}}},\n    {{{   432,     43,   -319}, 0, {  2054,    520}, {0x2b, 0xfb, 0x89, 0xff}}},\n    {{{   410,    -50,   -253}, 0, {  1758,    -58}, {0x1b, 0x89, 0xe1, 0xff}}},\n    {{{   410,    -50,    254}, 0, {  1096,     -6}, {0x12, 0x86, 0x1a, 0xff}}},\n    {{{   554,    -47,      0}, 0, { -1736,    -12}, {0x1c, 0x85, 0x02, 0xff}}},\n    {{{   645,     27,      0}, 0, { -2250,    462}, {0x7e, 0x04, 0x00, 0xff}}},\n    {{{   432,     43,    320}, 0, {  1488,    596}, {0x2b, 0xfb, 0x77, 0xff}}},\n    {{{   417,     98,    263}, 0, {  1116,    942}, {0x3d, 0x56, 0x45, 0xff}}},\n    {{{   551,    106,      0}, 0, { -1734,    970}, {0x5b, 0x57, 0xf7, 0xff}}},\n    {{{   645,     27,      0}, 0, {  1558,    510}, {0x7e, 0x04, 0x00, 0xff}}},\n    {{{   432,     43,   -319}, 0, { -1512,    534}, {0x2b, 0xfb, 0x89, 0xff}}},\n    {{{   417,     98,   -262}, 0, { -1202,    890}, {0x2b, 0x57, 0xaf, 0xff}}},\n    {{{   410,    -50,   -253}, 0, { -1164,    -52}, {0x1b, 0x89, 0xe1, 0xff}}},\n    {{{   554,    -47,      0}, 0, {  1168,     24}, {0x1c, 0x85, 0x02, 0xff}}},\n    {{{   551,    106,      0}, 0, {  1146,    998}, {0x5b, 0x57, 0xf7, 0xff}}},\n};\n\n// 0x06016360\nstatic const Vtx piranha_plant_seg6_vertex_06016360[] = {\n    {{{   109,     -3,    278}, 0, {  -848,    398}, {0xc4, 0xb1, 0x4e, 0xff}}},\n    {{{   153,     41,    300}, 0, { -1332,    812}, {0xd6, 0x3d, 0x66, 0xff}}},\n    {{{   -39,     22,      0}, 0, {  2340,    726}, {0x91, 0x3b, 0x0a, 0xff}}},\n    {{{   153,     41,   -299}, 0, {    80,    732}, {0xc5, 0x3b, 0xa1, 0xff}}},\n    {{{   417,     98,   -262}, 0, {  1982,    884}, {0x2b, 0x57, 0xaf, 0xff}}},\n    {{{   432,     43,   -319}, 0, {  2054,    520}, {0x2b, 0xfb, 0x89, 0xff}}},\n    {{{   109,     -3,   -277}, 0, {  -290,    482}, {0xc4, 0xb1, 0xb2, 0xff}}},\n    {{{   153,     41,    300}, 0, {  1252,    774}, {0xd6, 0x3d, 0x66, 0xff}}},\n    {{{   109,     -3,    278}, 0, {  1494,    500}, {0xc4, 0xb1, 0x4e, 0xff}}},\n    {{{   432,     43,    320}, 0, {  -100,    618}, {0x2b, 0xfb, 0x77, 0xff}}},\n    {{{   417,     98,    263}, 0, {   -30,    998}, {0x3d, 0x56, 0x45, 0xff}}},\n    {{{   410,    -50,    254}, 0, {    74,      2}, {0x12, 0x86, 0x1a, 0xff}}},\n    {{{   -48,     -7,      0}, 0, {  2426,    480}, {0xd6, 0x89, 0x00, 0xff}}},\n    {{{   109,     -3,   -277}, 0, {   920,    274}, {0xc4, 0xb1, 0xb2, 0xff}}},\n    {{{   -48,     -7,      0}, 0, {   -36,    506}, {0xd6, 0x89, 0x00, 0xff}}},\n    {{{   -39,     22,      0}, 0, {   -30,    756}, {0x91, 0x3b, 0x0a, 0xff}}},\n};\n\n// 0x06016460\nstatic const Vtx piranha_plant_seg6_vertex_06016460[] = {\n    {{{   -39,     22,      0}, 0, {   -30,    756}, {0x91, 0x3b, 0x0a, 0xff}}},\n    {{{   153,     41,   -299}, 0, {  1032,    676}, {0xc5, 0x3b, 0xa1, 0xff}}},\n    {{{   109,     -3,   -277}, 0, {   920,    274}, {0xc4, 0xb1, 0xb2, 0xff}}},\n};\n\n// 0x06016490\nstatic const Vtx piranha_plant_seg6_vertex_06016490[] = {\n    {{{   276,    254,      0}, 0, {   514,    234}, {0xf8, 0x7e, 0x00, 0xff}}},\n    {{{   177,    186,    185}, 0, {  -146,     84}, {0xc7, 0x5f, 0x3d, 0xff}}},\n    {{{   373,    203,    195}, 0, {     8,    832}, {0x17, 0x68, 0x44, 0xff}}},\n    {{{   470,    201,      0}, 0, {   750,   1032}, {0x4a, 0x66, 0x0a, 0xff}}},\n    {{{   373,    203,   -194}, 0, {  1288,    480}, {0x2b, 0x67, 0xc6, 0xff}}},\n    {{{   177,    186,   -184}, 0, {  1068,   -250}, {0xdc, 0x62, 0xb9, 0xff}}},\n    {{{    37,    161,      0}, 0, {   334,   -600}, {0xaa, 0x5c, 0xf4, 0xff}}},\n    {{{   373,    203,   -194}, 0, {   906,     12}, {0x2b, 0x67, 0xc6, 0xff}}},\n    {{{   470,    201,      0}, 0, {    12,     40}, {0x4a, 0x66, 0x0a, 0xff}}},\n    {{{   551,    106,      0}, 0, {   -58,    818}, {0x5b, 0x57, 0xf7, 0xff}}},\n    {{{   417,     98,   -262}, 0, {  1162,    832}, {0x2b, 0x57, 0xaf, 0xff}}},\n    {{{   177,    186,   -184}, 0, {   654,     76}, {0xdc, 0x62, 0xb9, 0xff}}},\n    {{{   417,     98,   -262}, 0, {   -30,    742}, {0x2b, 0x57, 0xaf, 0xff}}},\n    {{{   153,     41,   -299}, 0, {  1006,    786}, {0xc5, 0x3b, 0xa1, 0xff}}},\n    {{{   373,    203,   -194}, 0, {   -52,    210}, {0x2b, 0x67, 0xc6, 0xff}}},\n};\n\n// 0x06016580\nstatic const Vtx piranha_plant_seg6_vertex_06016580[] = {\n    {{{   470,    201,      0}, 0, {  1006,    194}, {0x4a, 0x66, 0x0a, 0xff}}},\n    {{{   417,     98,    263}, 0, {   -92,    386}, {0x3d, 0x56, 0x45, 0xff}}},\n    {{{   551,    106,      0}, 0, {   920,    662}, {0x5b, 0x57, 0xf7, 0xff}}},\n    {{{    37,    161,      0}, 0, {  1384,     18}, {0xaa, 0x5c, 0xf4, 0xff}}},\n    {{{   177,    186,   -184}, 0, {   406,    -90}, {0xdc, 0x62, 0xb9, 0xff}}},\n    {{{   153,     41,   -299}, 0, {    84,    726}, {0xc5, 0x3b, 0xa1, 0xff}}},\n    {{{   -39,     22,      0}, 0, {  1582,    740}, {0x91, 0x3b, 0x0a, 0xff}}},\n    {{{   177,    186,    185}, 0, {  1240,   -122}, {0xc7, 0x5f, 0x3d, 0xff}}},\n    {{{    37,    161,      0}, 0, {    50,      0}, {0xaa, 0x5c, 0xf4, 0xff}}},\n    {{{   -39,     22,      0}, 0, {  -102,    668}, {0x91, 0x3b, 0x0a, 0xff}}},\n    {{{   153,     41,    300}, 0, {  1742,    618}, {0xd6, 0x3d, 0x66, 0xff}}},\n    {{{   373,    203,    195}, 0, {  1746,    660}, {0x17, 0x68, 0x44, 0xff}}},\n    {{{   177,    186,    185}, 0, {   848,   1242}, {0xc7, 0x5f, 0x3d, 0xff}}},\n    {{{   153,     41,    300}, 0, {   134,    728}, {0xd6, 0x3d, 0x66, 0xff}}},\n    {{{   417,     98,    263}, 0, {  1526,    116}, {0x3d, 0x56, 0x45, 0xff}}},\n    {{{   373,    203,    195}, 0, {   272,    -30}, {0x17, 0x68, 0x44, 0xff}}},\n};\n\n// 0x06016680\nstatic const Vtx piranha_plant_seg6_vertex_06016680[] = {\n    {{{   153,     26,    221}, 0, {   808,    604}, {0x02, 0x84, 0xe8, 0xff}}},\n    {{{   -48,     -7,      0}, 0, {   486,    -60}, {0xd6, 0x89, 0x00, 0xff}}},\n    {{{   153,     26,   -220}, 0, {   162,    604}, {0xf9, 0x83, 0x12, 0xff}}},\n    {{{   410,    -50,    254}, 0, {   858,   1440}, {0x12, 0x86, 0x1a, 0xff}}},\n    {{{   554,    -47,      0}, 0, {   486,   1912}, {0x1c, 0x85, 0x02, 0xff}}},\n    {{{   410,    -50,   -253}, 0, {   114,   1440}, {0x1b, 0x89, 0xe1, 0xff}}},\n};\n\n// 0x060166E0\nstatic const Vtx piranha_plant_seg6_vertex_060166E0[] = {\n    {{{   410,    -50,   -253}, 0, {     0,      0}, {0x1b, 0x89, 0xe1, 0xff}}},\n    {{{   153,     26,   -220}, 0, {     0,      0}, {0xf9, 0x83, 0x12, 0xff}}},\n    {{{   109,     -3,   -277}, 0, {     0,      0}, {0xc4, 0xb1, 0xb2, 0xff}}},\n    {{{   -48,     -7,      0}, 0, {     0,      0}, {0xd6, 0x89, 0x00, 0xff}}},\n    {{{   153,     26,    221}, 0, {     0,      0}, {0x02, 0x84, 0xe8, 0xff}}},\n    {{{   109,     -3,    278}, 0, {     0,      0}, {0xc4, 0xb1, 0x4e, 0xff}}},\n    {{{   410,    -50,    254}, 0, {     0,      0}, {0x12, 0x86, 0x1a, 0xff}}},\n};\n\n// 0x06016750 - 0x060167B8\nconst Gfx piranha_plant_seg6_dl_06016750[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, piranha_plant_seg6_texture_06013BF8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&piranha_plant_seg6_lights_060113B0.l, 1),\n    gsSPLight(&piranha_plant_seg6_lights_060113B0.a, 2),\n    gsSPVertex(piranha_plant_seg6_vertex_06016190, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x060167B8 - 0x06016890\nconst Gfx piranha_plant_seg6_dl_060167B8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, piranha_plant_seg6_texture_060133F8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&piranha_plant_seg6_lights_060113C8.l, 1),\n    gsSPLight(&piranha_plant_seg6_lights_060113C8.a, 2),\n    gsSPVertex(piranha_plant_seg6_vertex_06016270, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  7,  6,  5, 0x0),\n    gsSP2Triangles( 5,  8,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 10,  9, 0x0,  9, 13, 12, 0x0),\n    gsSP1Triangle(11, 14,  9, 0x0),\n    gsSPVertex(piranha_plant_seg6_vertex_06016360, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0, 11,  9,  8, 0x0),\n    gsSP2Triangles( 2, 12,  0, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(piranha_plant_seg6_vertex_06016460, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06016890 - 0x06016960\nconst Gfx piranha_plant_seg6_dl_06016890[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, piranha_plant_seg6_texture_060123F8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&piranha_plant_seg6_lights_060113B0.l, 1),\n    gsSPLight(&piranha_plant_seg6_lights_060113B0.a, 2),\n    gsSPVertex(piranha_plant_seg6_vertex_06016490, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  0,  5,  6, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 14, 12, 0x0),\n    gsSPVertex(piranha_plant_seg6_vertex_06016580, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06016960 - 0x060169A8\nconst Gfx piranha_plant_seg6_dl_06016960[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, piranha_plant_seg6_texture_060113F8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(piranha_plant_seg6_vertex_06016680, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 2,  4,  3, 0x0,  2,  5,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x060169A8 - 0x060169E8\nconst Gfx piranha_plant_seg6_dl_060169A8[] = {\n    gsSPLight(&piranha_plant_seg6_lights_060113C8.l, 1),\n    gsSPLight(&piranha_plant_seg6_lights_060113C8.a, 2),\n    gsSPVertex(piranha_plant_seg6_vertex_060166E0, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  5,  4,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x060169E8 - 0x06016A78\nconst Gfx piranha_plant_seg6_dl_060169E8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(piranha_plant_seg6_dl_060167B8),\n    gsSPDisplayList(piranha_plant_seg6_dl_06016890),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(piranha_plant_seg6_dl_06016960),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(piranha_plant_seg6_dl_060169A8),\n    gsSPEndDisplayList(),\n};\n\n// 0x06016A78 - 0x06016AE8\nconst Gfx piranha_plant_seg6_dl_06016A78[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(piranha_plant_seg6_dl_06016750),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x06016AE8\nstatic const Vtx piranha_plant_seg6_vertex_06016AE8[] = {\n    {{{    10,     34,      0}, 0, {     0,    990}, {0x05, 0x6f, 0x3c, 0xff}}},\n    {{{    11,    -23,     35}, 0, {   990,    990}, {0x07, 0x94, 0x42, 0xff}}},\n    {{{   191,    -17,     26}, 0, {   918,      0}, {0x06, 0x03, 0x7e, 0xff}}},\n    {{{   191,     26,      0}, 0, {   142,      0}, {0x04, 0x6d, 0xc0, 0xff}}},\n    {{{    11,    -25,    -33}, 0, {     0,    990}, {0x05, 0xff, 0x82, 0xff}}},\n    {{{    10,     34,      0}, 0, {   950,    990}, {0x05, 0x6f, 0x3c, 0xff}}},\n    {{{   191,     26,      0}, 0, {   864,    -26}, {0x04, 0x6d, 0xc0, 0xff}}},\n    {{{   191,    -18,    -25}, 0, {   118,    -28}, {0x06, 0x91, 0xc4, 0xff}}},\n    {{{    11,    -23,     35}, 0, {     0,    990}, {0x07, 0x94, 0x42, 0xff}}},\n    {{{    11,    -25,    -33}, 0, {   990,    990}, {0x05, 0xff, 0x82, 0xff}}},\n    {{{   191,    -18,    -25}, 0, {   860,    -30}, {0x06, 0x91, 0xc4, 0xff}}},\n    {{{   191,    -17,     26}, 0, {    84,    -30}, {0x06, 0x03, 0x7e, 0xff}}},\n};\n\n// 0x06016BA8 - 0x06016C10\nconst Gfx piranha_plant_seg6_dl_06016BA8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, piranha_plant_seg6_texture_06012BF8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&piranha_plant_seg6_lights_060113B0.l, 1),\n    gsSPLight(&piranha_plant_seg6_lights_060113B0.a, 2),\n    gsSPVertex(piranha_plant_seg6_vertex_06016AE8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06016C10 - 0x06016C70\nconst Gfx piranha_plant_seg6_dl_06016C10[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(piranha_plant_seg6_dl_06016BA8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x06016C70\nstatic const Vtx piranha_plant_seg6_vertex_06016C70[] = {\n    {{{    -1,     34,      0}, 0, {     0,    990}, {0x01, 0x6f, 0x3c, 0xff}}},\n    {{{     0,    -26,     37}, 0, {   990,    990}, {0x03, 0x94, 0x42, 0xff}}},\n    {{{   172,    -22,     33}, 0, {   938,    -26}, {0x02, 0x03, 0x7e, 0xff}}},\n    {{{   172,     32,      0}, 0, {    22,    -26}, {0x01, 0x6d, 0xbf, 0xff}}},\n    {{{     0,    -28,    -35}, 0, {   -46,    984}, {0x02, 0xff, 0x82, 0xff}}},\n    {{{    -1,     34,      0}, 0, {   974,    986}, {0x01, 0x6f, 0x3c, 0xff}}},\n    {{{   172,     32,      0}, 0, {   942,      0}, {0x01, 0x6d, 0xbf, 0xff}}},\n    {{{   172,    -24,    -31}, 0, {    26,    -34}, {0x04, 0x91, 0xc4, 0xff}}},\n    {{{     0,    -26,     37}, 0, {     0,    990}, {0x03, 0x94, 0x42, 0xff}}},\n    {{{     0,    -28,    -35}, 0, {   990,    990}, {0x02, 0xff, 0x82, 0xff}}},\n    {{{   172,    -24,    -31}, 0, {   954,    -30}, {0x04, 0x91, 0xc4, 0xff}}},\n    {{{   172,    -22,     33}, 0, {    38,    -30}, {0x02, 0x03, 0x7e, 0xff}}},\n};\n\n// 0x06016D30 - 0x06016D98\nconst Gfx piranha_plant_seg6_dl_06016D30[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, piranha_plant_seg6_texture_06012BF8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&piranha_plant_seg6_lights_060113B0.l, 1),\n    gsSPLight(&piranha_plant_seg6_lights_060113B0.a, 2),\n    gsSPVertex(piranha_plant_seg6_vertex_06016C70, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06016D98 - 0x06016DF8\nconst Gfx piranha_plant_seg6_dl_06016D98[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(piranha_plant_seg6_dl_06016D30),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x06016DF8\nstatic const Vtx piranha_plant_seg6_vertex_06016DF8[] = {\n    {{{   -18,     36,      0}, 0, {     0,    990}, {0x02, 0x6f, 0x3d, 0xff}}},\n    {{{   -18,    -27,     38}, 0, {   990,    990}, {0x02, 0x94, 0x41, 0xff}}},\n    {{{   174,    -25,     34}, 0, {   946,    -12}, {0x02, 0x02, 0x7e, 0xff}}},\n    {{{   174,     32,      0}, 0, {     6,    -12}, {0x02, 0x6d, 0xc0, 0xff}}},\n    {{{   -18,    -28,    -36}, 0, {   -48,    990}, {0x01, 0xff, 0x82, 0xff}}},\n    {{{   -18,     36,      0}, 0, {   994,    990}, {0x02, 0x6f, 0x3d, 0xff}}},\n    {{{   174,     32,      0}, 0, {   986,    -30}, {0x02, 0x6d, 0xc0, 0xff}}},\n    {{{   174,    -27,    -33}, 0, {    26,      0}, {0x01, 0x91, 0xc3, 0xff}}},\n    {{{   -18,    -27,     38}, 0, {   -36,    992}, {0x02, 0x94, 0x41, 0xff}}},\n    {{{   -18,    -28,    -36}, 0, {   990,    990}, {0x01, 0xff, 0x82, 0xff}}},\n    {{{   174,    -27,    -33}, 0, {   958,      0}, {0x01, 0x91, 0xc3, 0xff}}},\n    {{{   174,    -25,     34}, 0, {    12,    -28}, {0x02, 0x02, 0x7e, 0xff}}},\n};\n\n// 0x06016EB8 - 0x06016F20\nconst Gfx piranha_plant_seg6_dl_06016EB8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, piranha_plant_seg6_texture_06012BF8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&piranha_plant_seg6_lights_060113B0.l, 1),\n    gsSPLight(&piranha_plant_seg6_lights_060113B0.a, 2),\n    gsSPVertex(piranha_plant_seg6_vertex_06016DF8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06016F20 - 0x06016F80\nconst Gfx piranha_plant_seg6_dl_06016F20[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(piranha_plant_seg6_dl_06016EB8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/pokey/geo.inc.c",
    "content": "// 0x0C000610\nconst GeoLayout pokey_head_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 50),\n    GEO_OPEN_NODE(),\n        GEO_SWITCH_CASE(2, geo_switch_anim_state),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, pokey_seg5_dl_050127D8),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, pokey_seg5_dl_05012808),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0C000644\nconst GeoLayout pokey_body_part_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 50),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, pokey_seg5_dl_050130B0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/pokey/model.inc.c",
    "content": "// Pokey\n\n// 0x05011710\nstatic const Vtx pokey_seg5_vertex_05011710[] = {\n    {{{    26,     26,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -25,     26,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -25,    -25,      0}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    26,    -25,      0}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x05011750\nALIGNED8 static const Texture pokey_seg5_texture_05011750[] = {\n#include \"actors/pokey/pokey_face.rgba16.inc.c\"\n};\n\n// 0x05011F50\nALIGNED8 static const Texture pokey_seg5_texture_05011F50[] = {\n#include \"actors/pokey/pokey_face_blink.rgba16.inc.c\"\n};\n\n// 0x05012750 - 0x05012798\nconst Gfx pokey_seg5_dl_05012750[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x05012798 - 0x050127D8\nconst Gfx pokey_seg5_dl_05012798[] = {\n    gsSPVertex(pokey_seg5_vertex_05011710, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x050127D8 - 0x05012808\nconst Gfx pokey_seg5_dl_050127D8[] = {\n    gsSPDisplayList(pokey_seg5_dl_05012750),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, pokey_seg5_texture_05011750),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(pokey_seg5_dl_05012798),\n    gsSPEndDisplayList(),\n};\n\n// 0x05012808 - 0x05012838\nconst Gfx pokey_seg5_dl_05012808[] = {\n    gsSPDisplayList(pokey_seg5_dl_05012750),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, pokey_seg5_texture_05011F50),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(pokey_seg5_dl_05012798),\n    gsSPEndDisplayList(),\n};\n\n// 0x05012838\nstatic const Vtx pokey_seg5_vertex_05012838[] = {\n    {{{    26,     26,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -25,     26,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -25,    -25,      0}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    26,    -25,      0}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x05012878\nALIGNED8 static const Texture pokey_seg5_texture_05012878[] = {\n#include \"actors/pokey/pokey_body.rgba16.inc.c\"\n};\n\n// 0x05013078 - 0x050130B0\nconst Gfx pokey_seg5_dl_05013078[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, pokey_seg5_texture_05012878),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(pokey_seg5_vertex_05012838, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050130B0 - 0x05013120\nconst Gfx pokey_seg5_dl_050130B0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(pokey_seg5_dl_05013078),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/poundable_pole/collision.inc.c",
    "content": "// Poundable Pole\n\n// 0x06002490 - 0x06002580\nconst Collision poundable_pole_collision_06002490[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x10),\n    COL_VERTEX(-39, -19, -96),\n    COL_VERTEX(-39, 410, -96),\n    COL_VERTEX(40, 410, -96),\n    COL_VERTEX(-96, -19, -39),\n    COL_VERTEX(-96, 410, -39),\n    COL_VERTEX(97, 410, -39),\n    COL_VERTEX(97, 410, 40),\n    COL_VERTEX(97, -19, -39),\n    COL_VERTEX(97, -19, 40),\n    COL_VERTEX(40, -19, -96),\n    COL_VERTEX(-96, 410, 40),\n    COL_VERTEX(-39, 410, 97),\n    COL_VERTEX(40, 410, 97),\n    COL_VERTEX(-96, -19, 40),\n    COL_VERTEX(-39, -19, 97),\n    COL_VERTEX(40, -19, 97),\n\n    COL_TRI_INIT(SURFACE_NO_CAM_COLLISION, 22),\n    COL_TRI(8, 6, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(3, 1, 0),\n    COL_TRI(3, 4, 1),\n    COL_TRI(1, 5, 2),\n    COL_TRI(1, 6, 5),\n    COL_TRI(1, 4, 6),\n    COL_TRI(7, 6, 8),\n    COL_TRI(7, 5, 6),\n    COL_TRI(9, 5, 7),\n    COL_TRI(9, 2, 5),\n    COL_TRI(0, 2, 9),\n    COL_TRI(6, 10, 11),\n    COL_TRI(6, 4, 10),\n    COL_TRI(6, 11, 12),\n    COL_TRI(8, 12, 15),\n    COL_TRI(13, 4, 3),\n    COL_TRI(13, 10, 4),\n    COL_TRI(14, 10, 13),\n    COL_TRI(14, 11, 10),\n    COL_TRI(15, 11, 14),\n    COL_TRI(15, 12, 11),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "actors/poundable_pole/geo.inc.c",
    "content": "// 0x0D0000B8\nconst GeoLayout wooden_post_geo[] = {\n    GEO_CULLING_RADIUS(450),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, poundable_pole_seg6_dl_06002410),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/poundable_pole/model.inc.c",
    "content": "// Poundable Pole\n\n// 0x06001038\nstatic const Lights1 poundable_pole_seg6_lights_06001038 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x06001050\nALIGNED8 static const Texture poundable_pole_seg6_texture_06001050[] = {\n#include \"actors/poundable_pole/poundable_pole_top.rgba16.inc.c\"\n};\n\n// 0x06001850\nALIGNED8 static const Texture poundable_pole_seg6_texture_06001850[] = {\n#include \"actors/poundable_pole/poundable_pole_side.rgba16.inc.c\"\n};\n\n// 0x06002050\nstatic const Vtx poundable_pole_seg6_vertex_06002050[] = {\n    {{{   -38,    410,    -94}, 0, {    78,     78}, {0xdf, 0x5c, 0xb0, 0xff}}},\n    {{{   -94,    410,    -38}, 0, {   -86,    478}, {0xa1, 0x49, 0xd9, 0xff}}},\n    {{{    95,    410,     39}, 0, {  1046,    478}, {0x39, 0x6e, 0x18, 0xff}}},\n    {{{    95,    410,    -38}, 0, {   880,     78}, {0x5f, 0x49, 0xd9, 0xff}}},\n    {{{    39,    410,    -94}, 0, {   478,    -88}, {0x2d, 0x2a, 0x92, 0xff}}},\n    {{{   -94,    410,     39}, 0, {    78,    880}, {0xa1, 0x49, 0x27, 0xff}}},\n    {{{   -38,    410,     95}, 0, {   480,   1044}, {0xd9, 0x49, 0x5f, 0xff}}},\n    {{{    39,    410,     95}, 0, {   880,    880}, {0x2d, 0x2a, 0x6e, 0xff}}},\n};\n\n// 0x060020D0\nstatic const Vtx poundable_pole_seg6_vertex_060020D0[] = {\n    {{{   -71,    -19,     72}, 0, {     0,    990}, {0xa7, 0xff, 0x59, 0xff}}},\n    {{{   -38,    410,     95}, 0, {   990,  -1012}, {0xd9, 0x49, 0x5f, 0xff}}},\n    {{{   -94,    410,     39}, 0, {     0,  -1012}, {0xa1, 0x49, 0x27, 0xff}}},\n    {{{   -71,    -19,    -71}, 0, {   -26,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -101,    -19,      0}, 0, {   990,    990}, {0x82, 0xff, 0x00, 0xff}}},\n    {{{   -94,    410,    -38}, 0, {   990,  -1054}, {0xa1, 0x49, 0xd9, 0xff}}},\n    {{{   -38,    410,    -94}, 0, {   -26,  -1054}, {0xdf, 0x5c, 0xb0, 0xff}}},\n    {{{     0,    -19,   -101}, 0, {   -26,    990}, {0x00, 0xff, 0x82, 0xff}}},\n    {{{   -71,    -19,    -71}, 0, {   990,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   -38,    410,    -94}, 0, {   990,  -1054}, {0xdf, 0x5c, 0xb0, 0xff}}},\n    {{{    39,    410,    -94}, 0, {   -26,  -1054}, {0x2d, 0x2a, 0x92, 0xff}}},\n    {{{   -94,    410,     39}, 0, {   990,  -1054}, {0xa1, 0x49, 0x27, 0xff}}},\n    {{{  -101,    -19,      0}, 0, {     0,    990}, {0x82, 0xff, 0x00, 0xff}}},\n    {{{   -71,    -19,     72}, 0, {   990,    990}, {0xa7, 0xff, 0x59, 0xff}}},\n    {{{   -94,    410,    -38}, 0, {     0,  -1054}, {0xa1, 0x49, 0xd9, 0xff}}},\n};\n\n// 0x060021C0\nstatic const Vtx poundable_pole_seg6_vertex_060021C0[] = {\n    {{{   102,    -19,      0}, 0, {   -26,    990}, {0x7e, 0xff, 0x00, 0xff}}},\n    {{{    95,    410,    -38}, 0, {   990,  -1054}, {0x5f, 0x49, 0xd9, 0xff}}},\n    {{{    95,    410,     39}, 0, {   -26,  -1054}, {0x39, 0x6e, 0x18, 0xff}}},\n    {{{   -71,    -19,     72}, 0, {     0,    990}, {0xa7, 0xff, 0x59, 0xff}}},\n    {{{     0,    -19,    102}, 0, {   990,    990}, {0x00, 0xff, 0x7e, 0xff}}},\n    {{{   -38,    410,     95}, 0, {   990,  -1012}, {0xd9, 0x49, 0x5f, 0xff}}},\n    {{{     0,    -19,    102}, 0, {   -26,    990}, {0x00, 0xff, 0x7e, 0xff}}},\n    {{{    39,    410,     95}, 0, {   990,  -1054}, {0x2d, 0x2a, 0x6e, 0xff}}},\n    {{{   -38,    410,     95}, 0, {   -26,  -1054}, {0xd9, 0x49, 0x5f, 0xff}}},\n    {{{    72,    -19,     72}, 0, {   990,    990}, {0x59, 0xff, 0x59, 0xff}}},\n    {{{    95,    410,     39}, 0, {   990,  -1054}, {0x39, 0x6e, 0x18, 0xff}}},\n    {{{    72,    -19,     72}, 0, {     0,    990}, {0x59, 0xff, 0x59, 0xff}}},\n    {{{   102,    -19,      0}, 0, {   990,    990}, {0x7e, 0xff, 0x00, 0xff}}},\n    {{{    39,    410,     95}, 0, {     0,  -1054}, {0x2d, 0x2a, 0x6e, 0xff}}},\n    {{{    72,    -19,    -71}, 0, {   990,    990}, {0x59, 0xff, 0xa7, 0xff}}},\n};\n\n// 0x060022B0\nstatic const Vtx poundable_pole_seg6_vertex_060022B0[] = {\n    {{{    39,    410,    -94}, 0, {   990,  -1054}, {0x2d, 0x2a, 0x92, 0xff}}},\n    {{{    95,    410,    -38}, 0, {   -26,  -1054}, {0x5f, 0x49, 0xd9, 0xff}}},\n    {{{    72,    -19,    -71}, 0, {   -26,    990}, {0x59, 0xff, 0xa7, 0xff}}},\n    {{{     0,    -19,   -101}, 0, {   990,    990}, {0x00, 0xff, 0x82, 0xff}}},\n};\n\n// 0x060022F0 - 0x06002358\nconst Gfx poundable_pole_seg6_dl_060022F0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, poundable_pole_seg6_texture_06001050),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&poundable_pole_seg6_lights_06001038.l, 1),\n    gsSPLight(&poundable_pole_seg6_lights_06001038.a, 2),\n    gsSPVertex(poundable_pole_seg6_vertex_06002050, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  2,  3, 0x0,  2,  1,  5, 0x0),\n    gsSP2Triangles( 2,  5,  6, 0x0,  2,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06002358 - 0x06002410\nconst Gfx poundable_pole_seg6_dl_06002358[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, poundable_pole_seg6_texture_06001850),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(poundable_pole_seg6_vertex_060020D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 11, 14, 0x0),\n    gsSPVertex(poundable_pole_seg6_vertex_060021C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 10, 13, 0x0),\n    gsSP1Triangle( 1,  0, 14, 0x0),\n    gsSPVertex(poundable_pole_seg6_vertex_060022B0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06002410 - 0x06002490\nconst Gfx poundable_pole_seg6_dl_06002410[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(poundable_pole_seg6_dl_060022F0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(poundable_pole_seg6_dl_06002358),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/power_meter/model.inc.c",
    "content": "// Power Meter HUD\n\nUNUSED static const u64 power_meter_unused_1 = 0;\n\n#if defined(VERSION_CN)\nALIGNED8 static const Texture texture_power_meter_left_side[] = {\n#include \"actors/power_meter/power_meter_left_side_cn.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_power_meter_right_side[] = {\n#include \"actors/power_meter/power_meter_right_side_cn.rgba16.inc.c\"\n};\n#else\n// 0x030233E0\nALIGNED8 static const Texture texture_power_meter_left_side[] = {\n#include \"actors/power_meter/power_meter_left_side.rgba16.inc.c\"\n};\n\n// 0x030243E0\nALIGNED8 static const Texture texture_power_meter_right_side[] = {\n#include \"actors/power_meter/power_meter_right_side.rgba16.inc.c\"\n};\n#endif\n\n// 0x030253E0\nALIGNED8 static const Texture texture_power_meter_full[] = {\n#include \"actors/power_meter/power_meter_full.rgba16.inc.c\"\n};\n\n// 0x03025BE0\nALIGNED8 static const Texture texture_power_meter_seven_segments[] = {\n#include \"actors/power_meter/power_meter_seven_segments.rgba16.inc.c\"\n};\n\n// 0x030263E0\nALIGNED8 static const Texture texture_power_meter_six_segments[] = {\n#include \"actors/power_meter/power_meter_six_segments.rgba16.inc.c\"\n};\n\n// 0x03026BE0\nALIGNED8 static const Texture texture_power_meter_five_segments[] = {\n#include \"actors/power_meter/power_meter_five_segments.rgba16.inc.c\"\n};\n\n// 0x030273E0\nALIGNED8 static const Texture texture_power_meter_four_segments[] = {\n#include \"actors/power_meter/power_meter_four_segments.rgba16.inc.c\"\n};\n\n// 0x03027BE0\nALIGNED8 static const Texture texture_power_meter_three_segments[] = {\n#include \"actors/power_meter/power_meter_three_segments.rgba16.inc.c\"\n};\n\n// 0x030283E0\nALIGNED8 static const Texture texture_power_meter_two_segments[] = {\n#include \"actors/power_meter/power_meter_two_segments.rgba16.inc.c\"\n};\n\n// 0x03028BE0\nALIGNED8 static const Texture texture_power_meter_one_segments[] = {\n#include \"actors/power_meter/power_meter_one_segment.rgba16.inc.c\"\n};\n\n// 0x030293E0\nconst Texture *const power_meter_health_segments_lut[] = {\n    texture_power_meter_one_segments,\n    texture_power_meter_two_segments,\n    texture_power_meter_three_segments,\n    texture_power_meter_four_segments,\n    texture_power_meter_five_segments,\n    texture_power_meter_six_segments,\n    texture_power_meter_seven_segments,\n    texture_power_meter_full,\n};\n\n// 0x03029400\nstatic const Vtx vertex_power_meter_base[] = {\n    {{{   -32,    -32,      0}, 0, {     0,   2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    -32,      0}, 0, {   992,   2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,     32,      0}, 0, {   992,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -32,     32,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    -32,      0}, 0, {     1,   2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    32,    -32,      0}, 0, {  1024,   2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    32,     32,      0}, 0, {  1024,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,     32,      0}, 0, {     1,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x03029480 - 0x03029530\nconst Gfx dl_power_meter_base[] = {\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsDPSetRenderMode(G_RM_TEX_EDGE, G_RM_TEX_EDGE2),\n    gsDPSetTextureFilter(G_TF_POINT),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsSPVertex(vertex_power_meter_base, 8, 0),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_power_meter_left_side),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_power_meter_right_side),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x03029530\nstatic const Vtx vertex_power_meter_health_segments[] = {\n#if defined(VERSION_CN)\n    {{{   -16,    -20,      0}, 0, {     0,    992}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    15,    -20,      0}, 0, {   992,    992}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    15,     12,      0}, 0, {   992,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -16,     12,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n#else\n    {{{   -16,    -16,      0}, 0, {     0,    992}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    15,    -16,      0}, 0, {   992,    992}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    15,     16,      0}, 0, {   992,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -16,     16,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n#endif\n};\n\n// 0x03029570 - 0x030295A0\nconst Gfx dl_power_meter_health_segments_begin[] = {\n    gsDPPipeSync(),\n    gsSPVertex(vertex_power_meter_health_segments, 4, 0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x030295A0 - 0x030295D8\nconst Gfx dl_power_meter_health_segments_end[] = {\n    gsDPPipeSync(),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsDPSetRenderMode(G_RM_OPA_SURF, G_RM_OPA_SURF2),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPSetTextureFilter(G_TF_BILERP),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/purple_switch/collision.inc.c",
    "content": "// Purple Switch\n\n// 0x0800C7A8 - 0x0800C820\nconst Collision purple_switch_seg8_collision_0800C7A8[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(61, 36, -60),\n    COL_VERTEX(-60, 36, -60),\n    COL_VERTEX(-60, 36, 61),\n    COL_VERTEX(61, 36, 61),\n    COL_VERTEX(-101, 0, -101),\n    COL_VERTEX(102, 0, -101),\n    COL_VERTEX(-101, 0, 102),\n    COL_VERTEX(102, 0, 102),\n\n    COL_TRI_INIT(SURFACE_SWITCH, 10),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(4, 1, 0),\n    COL_TRI(4, 0, 5),\n    COL_TRI(6, 1, 4),\n    COL_TRI(6, 2, 1),\n    COL_TRI(7, 3, 2),\n    COL_TRI(7, 2, 6),\n    COL_TRI(5, 0, 3),\n    COL_TRI(5, 3, 7),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "actors/purple_switch/geo.inc.c",
    "content": "// 0x0F0004CC\nconst GeoLayout purple_switch_geo[] = {\n    GEO_CULLING_RADIUS(300),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, purple_switch_seg8_dl_0800C718),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/purple_switch/model.inc.c",
    "content": "// Purple Switch\n\n// 0x0800C090\nstatic const Lights1 purple_switch_seg8_lights_0800C090 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0800C0A8\nALIGNED8 static const Texture purple_switch_seg8_texture_0800C0A8[] = {\n#include \"actors/purple_switch/purple_switch_base.rgba16.inc.c\"\n};\n\n// 0x0800C128\nALIGNED8 static const Texture purple_switch_seg8_texture_0800C128[] = {\n#include \"actors/purple_switch/purple_switch_exclamation_point.rgba16.inc.c\"\n};\n\n// 0x0800C528\nstatic const Vtx purple_switch_seg8_vertex_0800C528[] = {\n    {{{   102,      0,   -101}, 0, {     0,   -543}, {0x53, 0x5f, 0x00, 0xff}}},\n    {{{    61,     36,    -60}, 0, {  1326,   -287}, {0x53, 0x5f, 0x00, 0xff}}},\n    {{{    61,     36,     61}, 0, {  1326,    478}, {0x53, 0x5f, 0x00, 0xff}}},\n    {{{  -101,      0,   -101}, 0, {     0,    734}, {0x00, 0x5f, 0xad, 0xff}}},\n    {{{    61,     36,    -60}, 0, {  1326,   -287}, {0x00, 0x5f, 0xad, 0xff}}},\n    {{{   102,      0,   -101}, 0, {     0,   -543}, {0x00, 0x5f, 0xad, 0xff}}},\n    {{{   -60,     36,    -60}, 0, {  1326,    478}, {0x00, 0x5f, 0xad, 0xff}}},\n    {{{  -101,      0,    102}, 0, {     0,    734}, {0xad, 0x5f, 0x00, 0xff}}},\n    {{{   -60,     36,    -60}, 0, {  1326,   -287}, {0xad, 0x5f, 0x00, 0xff}}},\n    {{{  -101,      0,   -101}, 0, {     0,   -543}, {0xad, 0x5f, 0x00, 0xff}}},\n    {{{   -60,     36,     61}, 0, {  1326,    478}, {0xad, 0x5f, 0x00, 0xff}}},\n    {{{   102,      0,    102}, 0, {     0,   -543}, {0x00, 0x5f, 0x53, 0xff}}},\n    {{{    61,     36,     61}, 0, {  1326,   -287}, {0x00, 0x5f, 0x53, 0xff}}},\n    {{{   -60,     36,     61}, 0, {  1326,    478}, {0x00, 0x5f, 0x53, 0xff}}},\n    {{{  -101,      0,    102}, 0, {     0,    734}, {0x00, 0x5f, 0x53, 0xff}}},\n    {{{   102,      0,    102}, 0, {     0,    734}, {0x53, 0x5f, 0x00, 0xff}}},\n};\n\n// 0x0800C628\nstatic const Vtx purple_switch_seg8_vertex_0800C628[] = {\n    {{{    61,     36,    -60}, 0, {   607,   -134}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -60,     36,     61}, 0, {  -159,   1090}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    61,     36,     61}, 0, {   607,   1090}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -60,     36,    -60}, 0, {  -159,   -134}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0800C668 - 0x0800C6E0\nconst Gfx purple_switch_seg8_dl_0800C668[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, purple_switch_seg8_texture_0800C0A8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 4 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&purple_switch_seg8_lights_0800C090.l, 1),\n    gsSPLight(&purple_switch_seg8_lights_0800C090.a, 2),\n    gsSPVertex(purple_switch_seg8_vertex_0800C528, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0800C6E0 - 0x0800C718\nconst Gfx purple_switch_seg8_dl_0800C6E0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, purple_switch_seg8_texture_0800C128),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(purple_switch_seg8_vertex_0800C628, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0800C718 - 0x0800C7A8\nconst Gfx purple_switch_seg8_dl_0800C718[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 2, G_TX_NOLOD, G_TX_CLAMP, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (4 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(purple_switch_seg8_dl_0800C668),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(purple_switch_seg8_dl_0800C6E0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/sand/model.inc.c",
    "content": "// Sand\n\n// 0x0302BA90\nstatic const Vtx sand_seg3_vertex_0302BA90[] = {\n    {{{    -8,     -8,      0}, 0, {     0,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     8,     -8,      0}, 0, {   480,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     8,      8,      0}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    -8,      8,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0302BAD0\nALIGNED8 static const Texture sand_seg3_texture_0302BAD0[] = {\n#include \"actors/sand/sand_particle.rgba16.inc.c\"\n};\n\n// 0x0302BCD0 - 0x0302BD60\nconst Gfx sand_seg3_dl_0302BCD0[] = {\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsDPLoadTextureBlock(sand_seg3_texture_0302BAD0, G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 16, 0, G_TX_CLAMP, G_TX_CLAMP, 4, 4, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsSPVertex(sand_seg3_vertex_0302BA90, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/scuttlebug/anims/anim_0601504C.inc.c",
    "content": "// 0x06014398\nstatic const s16 scuttlebug_seg6_animvalue_06014398[] = {\n    0x0000, 0x0101, 0x0101, 0x00FF, 0x00FC, 0x00F9, 0x00F5, 0x00F1,\n    0x00EC, 0x00E8, 0x00E5, 0x00E2, 0x00E0, 0x00E0, 0x00E0, 0x00E2,\n    0x00E5, 0x00E9, 0x00ED, 0x00F1, 0x00F5, 0x00F9, 0x00FC, 0x00FF,\n    0x0101, 0x0101, 0x0101, 0x00FF, 0x00FC, 0x00F9, 0x00F5, 0x00F1,\n    0x00ED, 0x00E9, 0x00E5, 0x00E2, 0x00DF, 0x00DD, 0x00DD, 0x00DD,\n    0x00DF, 0x00E2, 0x00E6, 0x00EB, 0x00EF, 0x00F4, 0x00F8, 0x00FC,\n    0x00FF, 0x0101, 0x0101, 0xF81C, 0xF857, 0xF8F9, 0xF9EB, 0xFB16,\n    0xFC62, 0xFDB7, 0xFEFF, 0x0027, 0x0125, 0x01F7, 0x02C4, 0x03A7,\n    0x0495, 0x057E, 0x0655, 0x070A, 0x0794, 0x07F2, 0x082B, 0x084D,\n    0x0865, 0x087B, 0x088D, 0x0898, 0x0897, 0x0887, 0x0864, 0x0827,\n    0x07CE, 0x0756, 0x06BE, 0x0607, 0x0536, 0x044D, 0x0353, 0x024B,\n    0x013A, 0x0026, 0xFF13, 0xFE02, 0xFCFA, 0xFBFE, 0xFB14, 0xFA40,\n    0xF988, 0xF8F0, 0xF87D, 0xF835, 0xF81C, 0xECA1, 0xECD8, 0xED82,\n    0xEEB0, 0xF074, 0xF2D2, 0xF5B1, 0xF8DC, 0xFC04, 0xFED1, 0x00EB,\n    0x0277, 0x03C8, 0x04EF, 0x060B, 0x0735, 0x0879, 0x09D2, 0x0B29,\n    0x0C5E, 0x0D47, 0x0DB7, 0x0D7F, 0x0CC6, 0x0BD1, 0x0AA6, 0x094F,\n    0x07D5, 0x0642, 0x04A0, 0x02F9, 0x0153, 0xFFB6, 0xFE21, 0xFC97,\n    0xFB16, 0xF999, 0xF81E, 0xF6A1, 0xF523, 0xF3AE, 0xF24B, 0xF103,\n    0xEFDE, 0xEEE1, 0xEE11, 0xED70, 0xECFD, 0xECB8, 0xECA1, 0x0011,\n    0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0013, 0x0013,\n    0x0013, 0x0013, 0x0014, 0x0014, 0x0014, 0x0015, 0x0015, 0x0015,\n    0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015,\n    0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015,\n    0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0014, 0x0014, 0x0014,\n    0x0013, 0x0013, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012,\n    0x0011, 0x0A2A, 0x0A07, 0x09A3, 0x0905, 0x0837, 0x0740, 0x0627,\n    0x04F5, 0x03B0, 0x025E, 0x0107, 0xFFB1, 0xFE61, 0xFD1D, 0xFBEB,\n    0xFAD2, 0xF9D6, 0xF8FC, 0xF847, 0xF7B6, 0xF749, 0xF6FC, 0xF6CD,\n    0xF6C0, 0xF6D9, 0xF717, 0xF77C, 0xF80B, 0xF8C1, 0xF999, 0xFA8A,\n    0xFB88, 0xFC85, 0xFD76, 0xFE50, 0xFF0B, 0xFFBE, 0x0084, 0x0160,\n    0x0250, 0x0350, 0x0459, 0x0565, 0x066C, 0x0766, 0x084A, 0x090D,\n    0x09A5, 0x0A07, 0x0A2A, 0xE713, 0xE72F, 0xE781, 0xE80A, 0xE8CA,\n    0xE9C2, 0xEAEF, 0xEC4D, 0xEDD4, 0xEF7A, 0xF135, 0xF2FA, 0xF4BE,\n    0xF67A, 0xF82B, 0xF9D2, 0xFB6E, 0xFCFA, 0xFE71, 0xFFC7, 0x00F1,\n    0x01E2, 0x028D, 0x02CE, 0x029A, 0x020A, 0x013C, 0x0050, 0xFF63,\n    0xFE89, 0xFDD4, 0xFD47, 0xFCDC, 0xFC85, 0xFC28, 0xFBA7, 0xFAC0,\n    0xF943, 0xF73B, 0xF4CD, 0xF232, 0xEFA0, 0xED4A, 0xEB50, 0xE9C1,\n    0xE89E, 0xE7DA, 0xE763, 0xE726, 0xE713, 0xFED2, 0xFED2, 0xFED3,\n    0xFED3, 0xFED5, 0xFED6, 0xFED8, 0xFED9, 0xFEDA, 0xFEDB, 0xFEDB,\n    0xFEDB, 0xFEDC, 0xFEDD, 0xFEDE, 0xFEDF, 0xFEE0, 0xFEE0, 0xFEDE,\n    0xFEDB, 0xFED8, 0xFED5, 0xFED5, 0xFED6, 0xFED9, 0xFEDB, 0xFEDF,\n    0xFEE1, 0xFEE4, 0xFEE6, 0xFEE7, 0xFEE7, 0xFEE7, 0xFEE6, 0xFEE5,\n    0xFEE3, 0xFEE1, 0xFEDF, 0xFEDD, 0xFEDB, 0xFED9, 0xFED8, 0xFED6,\n    0xFED5, 0xFED4, 0xFED3, 0xFED3, 0xFED2, 0xFED2, 0xFED2, 0x0A1F,\n    0x09FC, 0x0994, 0x08E3, 0x07E8, 0x06AC, 0x0543, 0x03C4, 0x0249,\n    0x00E6, 0xFFAA, 0xFE62, 0xFCDA, 0xFB14, 0xF919, 0xF6F7, 0xF4C3,\n    0xF297, 0xF091, 0xEED8, 0xED94, 0xECE7, 0xECED, 0xED76, 0xEE3C,\n    0xEF37, 0xF060, 0xF1AF, 0xF31E, 0xF4A4, 0xF63B, 0xF7DC, 0xF981,\n    0xFB25, 0xFCC3, 0xFE56, 0xFFDC, 0x014F, 0x02B0, 0x03FA, 0x052A,\n    0x063C, 0x072F, 0x07FF, 0x08AC, 0x0935, 0x099D, 0x09E5, 0x0A10,\n    0x0A1F, 0x034C, 0x0300, 0x0239, 0x012F, 0x001E, 0xFF36, 0xFE94,\n    0xFE3B, 0xFE14, 0xFDEE, 0xFD8B, 0xFCA1, 0xFB20, 0xF923, 0xF6DF,\n    0xF491, 0xF27A, 0xF0CE, 0xEFAB, 0xEF13, 0xEEE8, 0xEEFA, 0xEF18,\n    0xEF2F, 0xEF41, 0xEF53, 0xEF6E, 0xEF9C, 0xEFE7, 0xF054, 0xF0E9,\n    0xF1A4, 0xF285, 0xF388, 0xF4A5, 0xF5D6, 0xF712, 0xF851, 0xF98C,\n    0xFAC1, 0xFBF0, 0xFD1B, 0xFE3F, 0xFF5A, 0x0064, 0x0155, 0x0223,\n    0x02C2, 0x0328, 0x034C, 0xF781, 0xF784, 0xF78F, 0xF7A8, 0xF7D8,\n    0xF828, 0xF8A5, 0xF953, 0xFA38, 0xFB51, 0xFC9B, 0xFE0E, 0xFFA1,\n    0x014C, 0x0306, 0x04C5, 0x067E, 0x0825, 0x09AF, 0x0B0F, 0x0C39,\n    0x0D21, 0x0DBB, 0x0DDF, 0x0D78, 0x0C99, 0x0B59, 0x09D1, 0x0819,\n    0x064B, 0x047E, 0x02C9, 0x013F, 0xFFEE, 0xFEDC, 0xFE0A, 0xFD55,\n    0xFC9C, 0xFBE0, 0xFB24, 0xFA6D, 0xF9C1, 0xF927, 0xF8A5, 0xF83D,\n    0xF7F0, 0xF7BB, 0xF79A, 0xF787, 0xF781, 0x0F3C, 0x0EFF, 0x0E52,\n    0x0D45, 0x0BEE, 0x0A5F, 0x08AF, 0x06EE, 0x052D, 0x0377, 0x01D1,\n    0x003E, 0xFEBD, 0xFD4B, 0xFBED, 0xFAAB, 0xF98C, 0xF896, 0xF7CE,\n    0xF735, 0xF6C8, 0xF681, 0xF65A, 0xF655, 0xF679, 0xF6D3, 0xF778,\n    0xF877, 0xF9D9, 0xFB98, 0xFDA1, 0xFFD6, 0x0214, 0x0435, 0x060E,\n    0x0779, 0x087B, 0x0939, 0x09BB, 0x0A18, 0x0A6D, 0x0ACE, 0x0B48,\n    0x0BE1, 0x0C93, 0x0D51, 0x0E0A, 0x0EA8, 0x0F15, 0x0F3C, 0x07FE,\n    0x07CF, 0x0745, 0x0665, 0x0531, 0x03B7, 0x020A, 0x0041, 0xFE7B,\n    0xFCD0, 0xFB5B, 0xF9F2, 0xF870, 0xF6F6, 0xF5A5, 0xF499, 0xF3E7,\n    0xF398, 0xF3A8, 0xF402, 0xF481, 0xF4FD, 0xF551, 0xF57E, 0xF594,\n    0xF59B, 0xF59E, 0xF5AA, 0xF5CB, 0xF60A, 0xF66F, 0xF6FC, 0xF7B5,\n    0xF898, 0xF9A1, 0xFACB, 0xFC0E, 0xFD64, 0xFEC2, 0x001F, 0x0173,\n    0x02B6, 0x03E1, 0x04EE, 0x05D7, 0x069A, 0x0734, 0x07A3, 0x07E7,\n    0x07FE, 0x5388, 0x53F8, 0x551B, 0x56A5, 0x5845, 0x59B5, 0x5ABD,\n    0x5B3B, 0x5B27, 0x5A8E, 0x598A, 0x5802, 0x55D1, 0x5301, 0x4FA3,\n    0x4BCC, 0x47A0, 0x434D, 0x3F0E, 0x3B2A, 0x37F3, 0x35C0, 0x34EC,\n    0x352D, 0x3605, 0x376A, 0x3943, 0x3B77, 0x3DEE, 0x408F, 0x4344,\n    0x45FB, 0x48A1, 0x4B27, 0x4D7F, 0x4F9E, 0x5179, 0x5306, 0x5439,\n    0x5511, 0x5597, 0x55D3, 0x55D0, 0x5599, 0x553D, 0x54CC, 0x5457,\n    0x53EE, 0x53A4, 0x5388, 0xF46E, 0xF48E, 0xF4EC, 0xF585, 0xF657,\n    0xF75D, 0xF893, 0xF9F3, 0xFB76, 0xFD11, 0xFEBA, 0x0066, 0x020B,\n    0x039B, 0x050C, 0x0655, 0x076F, 0x0857, 0x090D, 0x0996, 0x09F6,\n    0x0A36, 0x0A60, 0x0A7B, 0x0A8A, 0x0A88, 0x0A66, 0x0A17, 0x098E,\n    0x08C9, 0x07CC, 0x06A1, 0x0558, 0x0405, 0x02BC, 0x0194, 0x0071,\n    0xFF2E, 0xFDD5, 0xFC70, 0xFB0D, 0xF9B6, 0xF879, 0xF75E, 0xF66E,\n    0xF5AE, 0xF51D, 0xF4BA, 0xF481, 0xF46E, 0x550C, 0x552C, 0x5582,\n    0x55FD, 0x5687, 0x570D, 0x5779, 0x57BC, 0x57C6, 0x578A, 0x5700,\n    0x5621, 0x54E8, 0x5355, 0x5176, 0x4F5D, 0x4D20, 0x4AD5, 0x4894,\n    0x467A, 0x44A3, 0x432F, 0x423B, 0x421E, 0x430C, 0x44E0, 0x4760,\n    0x4A54, 0x4D87, 0x50CB, 0x53F7, 0x56EC, 0x5993, 0x5BD8, 0x5DAF,\n    0x5F0B, 0x6007, 0x60BF, 0x6121, 0x611E, 0x60B0, 0x5FD6, 0x5E99,\n    0x5D0B, 0x5B4B, 0x597C, 0x57C9, 0x565E, 0x5566, 0x550C, 0xBFC4,\n    0xC001, 0xF4B6, 0xF4B9, 0xF4D2, 0xF524, 0xF5CE, 0xF6E2, 0xF85F,\n    0xFA31, 0xFC38, 0xFE4B, 0x0041, 0x024F, 0x04B3, 0x074E, 0x09FD,\n    0x0C9B, 0x0F00, 0x1109, 0x1298, 0x139D, 0x1417, 0x1412, 0x139C,\n    0x12E4, 0x1215, 0x1131, 0x1032, 0x0F15, 0x0DD6, 0x0C72, 0x0AEA,\n    0x0942, 0x077F, 0x05A7, 0x03C1, 0x01D8, 0xFFF5, 0xFE20, 0xFC65,\n    0xFACE, 0xF962, 0xF828, 0xF722, 0xF652, 0xF5B4, 0xF544, 0xF4FB,\n    0xF4D1, 0xF4BC, 0xF4B6, 0x403B, 0x4111, 0x4351, 0x468D, 0x4A56,\n    0x4E48, 0x5212, 0x5576, 0x584E, 0x5A82, 0x5C05, 0x5D04, 0x5DA5,\n    0x5DCB, 0x5D5D, 0x5C4C, 0x5A96, 0x584F, 0x55A3, 0x52D7, 0x5041,\n    0x4E3D, 0x4D1A, 0x4CB3, 0x4CB9, 0x4D25, 0x4DDE, 0x4ECA, 0x4FD0,\n    0x50DA, 0x51D3, 0x52AA, 0x5351, 0x53BA, 0x53DF, 0x53B7, 0x533F,\n    0x5272, 0x514D, 0x4FD6, 0x4E1D, 0x4C35, 0x4A2E, 0x481F, 0x461C,\n    0x443F, 0x42A0, 0x415A, 0x4086, 0x403B, 0x0A1A, 0x0A22, 0x0A31,\n    0x0A38, 0x0A23, 0x09DF, 0x095C, 0x088F, 0x0774, 0x060E, 0x0463,\n    0x0281, 0x0075, 0xFE54, 0xFC2E, 0xFA15, 0xF81A, 0xF64A, 0xF4B0,\n    0xF356, 0xF23E, 0xF16D, 0xF0E2, 0xF0B3, 0xF0EC, 0xF185, 0xF280,\n    0xF3DB, 0xF58B, 0xF781, 0xF9A6, 0xFBDE, 0xFE0D, 0x0017, 0x01E6,\n    0x0362, 0x04B4, 0x0607, 0x074C, 0x0875, 0x0973, 0x0A3B, 0x0AC6,\n    0x0B10, 0x0B1F, 0x0AFC, 0x0AB9, 0x0A6E, 0x0A32, 0x0A1A, 0x33E9,\n    0x345A, 0x3598, 0x377E, 0x39E2, 0x3C9B, 0x3F82, 0x4273, 0x454C,\n    0x47F3, 0x4A51, 0x4C53, 0x4DEC, 0x4F10, 0x4FC4, 0x500F, 0x5000,\n    0x4FA5, 0x4F12, 0x4E60, 0x4DAA, 0x4D10, 0x4CAF, 0x4CC8, 0x4D85,\n    0x4EC6, 0x5052, 0x51EF, 0x5369, 0x549B, 0x5569, 0x55CB, 0x55C2,\n    0x555D, 0x54B3, 0x53E0, 0x52CD, 0x5156, 0x4F79, 0x4D3B, 0x4AA2,\n    0x47BD, 0x449C, 0x415A, 0x3E16, 0x3AF9, 0x3832, 0x35F3, 0x3473,\n    0x33E9, 0x059B, 0x0572, 0x0501, 0x0452, 0x0373, 0x026F, 0x0152,\n    0x002A, 0xFF05, 0xFDEE, 0xFCF5, 0xFBF8, 0xFAD8, 0xF9A1, 0xF85E,\n    0xF71A, 0xF5E1, 0xF4BE, 0xF3BE, 0xF2EE, 0xF25A, 0xF210, 0xF21C,\n    0xF268, 0xF2D2, 0xF358, 0xF3F7, 0xF4AB, 0xF572, 0xF649, 0xF72E,\n    0xF81E, 0xF917, 0xFA16, 0xFB19, 0xFC1E, 0xFD23, 0xFE25, 0xFF22,\n    0x0015, 0x00FF, 0x01DC, 0x02A8, 0x0361, 0x0405, 0x0490, 0x0501,\n    0x0555, 0x0589, 0x059B, 0x7F25, 0x7E83, 0x7CC2, 0x7A1B, 0x76C7,\n    0x7307, 0x6F28, 0x6B7F, 0x6866, 0x6628, 0x6504, 0x64F2, 0x65BE,\n    0x674E, 0x6978, 0x6C0D, 0x6EE6, 0x71DF, 0x74D4, 0x779B, 0x7A09,\n    0x7BE9, 0x7D07, 0x7D86, 0x7DA4, 0x7D64, 0x7CD9, 0x7C15, 0x7B28,\n    0x7A21, 0x790F, 0x77FF, 0x76FC, 0x7613, 0x7550, 0x74BF, 0x746D,\n    0x7465, 0x74B8, 0x7562, 0x7651, 0x7775, 0x78BA, 0x7A0C, 0x7B59,\n    0x7C8E, 0x7D99, 0x7E6B, 0x7EF4, 0x7F25, 0xF81A, 0xF832, 0xF879,\n    0xF8E9, 0xF97F, 0xFA36, 0xFB09, 0xFBF6, 0xFCF7, 0xFE08, 0xFF24,\n    0x0046, 0x016B, 0x028D, 0x03A9, 0x04BA, 0x05BD, 0x06AE, 0x0788,\n    0x0848, 0x08E9, 0x0967, 0x09BD, 0x09DA, 0x09B6, 0x095A, 0x08CE,\n    0x081C, 0x074B, 0x0664, 0x0570, 0x0477, 0x0380, 0x0293, 0x01BA,\n    0x00FC, 0x0046, 0xFF7F, 0xFEAA, 0xFDCF, 0xFCF3, 0xFC1C, 0xFB4E,\n    0xFA8E, 0xF9E0, 0xF948, 0xF8CB, 0xF86B, 0xF82F, 0xF81A, 0x8329,\n    0x82F3, 0x825A, 0x816F, 0x8041, 0x7EE1, 0x7D65, 0x7BDF, 0x7A64,\n    0x7908, 0x77DF, 0x76FB, 0x766C, 0x763C, 0x7661, 0x76CA, 0x7765,\n    0x7820, 0x78EB, 0x79B2, 0x7A64, 0x7AED, 0x7B3A, 0x7B15, 0x7A55,\n    0x7908, 0x774C, 0x753E, 0x72F7, 0x7091, 0x6E23, 0x6BC5, 0x6993,\n    0x67AE, 0x663A, 0x6562, 0x654F, 0x6613, 0x67B7, 0x6A20, 0x6D1E,\n    0x7079, 0x73F6, 0x7762, 0x7A94, 0x7D69, 0x7FC6, 0x8198, 0x82C0,\n    0x8329, 0xF4FF, 0xF535, 0xF5CA, 0xF6AE, 0xF7CF, 0xF91E, 0xFA8A,\n    0xFC04, 0xFD7C, 0xFEE4, 0x0029, 0x0177, 0x02F6, 0x0496, 0x0645,\n    0x07F3, 0x098F, 0x0B0B, 0x0C58, 0x0D67, 0x0E27, 0x0E86, 0x0E74,\n    0x0E0E, 0x0D81, 0x0CD1, 0x0C01, 0x0B15, 0x0A10, 0x08F5, 0x07C9,\n    0x068E, 0x0547, 0x03F7, 0x02A3, 0x014C, 0xFFF8, 0xFEA8, 0xFD60,\n    0xFC24, 0xFAF7, 0xF9DB, 0xF8D4, 0xF7E5, 0xF711, 0xF65B, 0xF5C8,\n    0xF55B, 0xF517, 0xF4FF, 0x7C70, 0x7BDF, 0x7A57, 0x7817, 0x755A,\n    0x7255, 0x6F3B, 0x6C40, 0x699E, 0x6798, 0x667C, 0x6664, 0x6739,\n    0x68F9, 0x6B85, 0x6EAA, 0x722C, 0x75CB, 0x7949, 0x7C72, 0x7F14,\n    0x8109, 0x8225, 0x8297, 0x82A2, 0x8249, 0x819D, 0x80AD, 0x7F85,\n    0x7E39, 0x7CD5, 0x7B69, 0x7A01, 0x78AE, 0x777D, 0x767D, 0x75BB,\n    0x7544, 0x7527, 0x755F, 0x75DE, 0x7693, 0x776E, 0x7861, 0x795A,\n    0x7A4B, 0x7B23, 0x7BD2, 0x7C46, 0x7C70, 0x0D41, 0x0D1E, 0x0CB7,\n    0x0C15, 0x0B3D, 0x0A39, 0x090E, 0x07C3, 0x0660, 0x04EA, 0x0368,\n    0x01DF, 0x0055, 0xFECF, 0xFD51, 0xFBE0, 0xFA81, 0xF93A, 0xF810,\n    0xF70A, 0xF62F, 0xF586, 0xF516, 0xF4FB, 0xF544, 0xF5E2, 0xF6C6,\n    0xF7E2, 0xF927, 0xFA86, 0xFBF2, 0xFD60, 0xFEC3, 0x000F, 0x013A,\n    0x0237, 0x0322, 0x041D, 0x0521, 0x062C, 0x0737, 0x083E, 0x093B,\n    0x0A29, 0x0B03, 0x0BC2, 0x0C61, 0x0CDA, 0x0D27, 0x0D41, 0x7CFB,\n    0x7CC3, 0x7C28, 0x7B41, 0x7A26, 0x78EE, 0x77AF, 0x767B, 0x7564,\n    0x7477, 0x73C5, 0x735B, 0x7347, 0x7393, 0x7436, 0x751F, 0x763A,\n    0x7773, 0x78B3, 0x79E4, 0x7AEF, 0x7BBD, 0x7C38, 0x7C1F, 0x7B43,\n    0x79B6, 0x779E, 0x7520, 0x7263, 0x6F90, 0x6CCE, 0x6A45, 0x6817,\n    0x665D, 0x652C, 0x6490, 0x649B, 0x654B, 0x669B, 0x6870, 0x6AA9,\n    0x6D26, 0x6FCB, 0x727B, 0x751B, 0x778F, 0x79B6, 0x7B6E, 0x7C92,\n    0x7CFB, 0x5FFF, 0xC001, 0xA001, 0xC001, 0xC001, 0xC001, 0xC001,\n    0xC001, 0xE001, 0xC001, 0x0003, 0x1FFF, 0xC001, 0x3FFF, 0x0000,\n};\n\n\n// 0x06014E48\nstatic const u16 scuttlebug_seg6_animindex_06014E48[] = {\n    0x0001, 0x0000, 0x0032, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0556,\n    0x0001, 0x0553, 0x0001, 0x0554, 0x0001, 0x0555,\n    0x0001, 0x0000, 0x0032, 0x03B9, 0x0032, 0x03EB,\n    0x0001, 0x0000, 0x0032, 0x0227, 0x0032, 0x0259,\n    0x0001, 0x0000, 0x0032, 0x0033, 0x0032, 0x0065,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0551, 0x0001, 0x0552,\n    0x0001, 0x0000, 0x0032, 0x041D, 0x0032, 0x044F,\n    0x0001, 0x0000, 0x0032, 0x028B, 0x0032, 0x02BD,\n    0x0032, 0x0097, 0x0032, 0x00C9, 0x0032, 0x00FB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x054F, 0x0001, 0x0000, 0x0001, 0x0550,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02EF,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x054D, 0x0001, 0x0000, 0x0001, 0x054E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02F0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x054B, 0x0001, 0x054C,\n    0x0001, 0x0000, 0x0032, 0x0481, 0x0032, 0x04B3,\n    0x0001, 0x0000, 0x0032, 0x02F1, 0x0032, 0x0323,\n    0x0032, 0x012D, 0x0032, 0x015F, 0x0032, 0x0191,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0549, 0x0001, 0x054A,\n    0x0001, 0x0000, 0x0032, 0x04E5, 0x0032, 0x0517,\n    0x0001, 0x0000, 0x0032, 0x0355, 0x0032, 0x0387,\n    0x0001, 0x0000, 0x0032, 0x01C3, 0x0032, 0x01F5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x0601504C\nstatic const struct Animation scuttlebug_seg6_anim_0601504C = {\n    0,\n    0,\n    0,\n    0,\n    0x32,\n    ANIMINDEX_NUMPARTS(scuttlebug_seg6_animindex_06014E48),\n    scuttlebug_seg6_animvalue_06014398,\n    scuttlebug_seg6_animindex_06014E48,\n    0,\n};\n"
  },
  {
    "path": "actors/scuttlebug/anims/data.inc.c",
    "content": "#include \"anim_0601504C.inc.c\"\n"
  },
  {
    "path": "actors/scuttlebug/anims/table.inc.c",
    "content": "// 0x06015064\nconst struct Animation *const scuttlebug_seg6_anims_06015064[] = {\n    &scuttlebug_seg6_anim_0601504C,\n};\n"
  },
  {
    "path": "actors/scuttlebug/geo.inc.c",
    "content": "// 0x0D000394\nconst GeoLayout scuttlebug_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 100),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, -29, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -1, 113, 112, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 198, 0, 0, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 195, 0, 0, NULL),\n                                GEO_OPEN_NODE(),\n                                    GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, scuttlebug_seg6_dl_06014378),\n                                GEO_CLOSE_NODE(),\n                                GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, scuttlebug_seg6_dl_06014270),\n                            GEO_CLOSE_NODE(),\n                            GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, scuttlebug_seg6_dl_06014188),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -1, 109, -116, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 198, 0, 0, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 195, 0, 0, NULL),\n                                GEO_OPEN_NODE(),\n                                    GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, scuttlebug_seg6_dl_06014378),\n                                GEO_CLOSE_NODE(),\n                                GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, scuttlebug_seg6_dl_06014270),\n                            GEO_CLOSE_NODE(),\n                            GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, scuttlebug_seg6_dl_06014188),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_BILLBOARD(),\n                        GEO_OPEN_NODE(),\n                            GEO_DISPLAY_LIST(LAYER_ALPHA, scuttlebug_seg6_dl_060139F8),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -29, -57, 28, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 158, 0, 0, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                                GEO_OPEN_NODE(),\n                                    GEO_BILLBOARD(),\n                                    GEO_OPEN_NODE(),\n                                        GEO_DISPLAY_LIST(LAYER_ALPHA, scuttlebug_seg6_dl_06013AE8),\n                                    GEO_CLOSE_NODE(),\n                                GEO_CLOSE_NODE(),\n                                GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, scuttlebug_seg6_dl_06013CB8),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -29, 55, 28, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 157, 0, 0, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                                GEO_OPEN_NODE(),\n                                    GEO_BILLBOARD(),\n                                    GEO_OPEN_NODE(),\n                                        GEO_DISPLAY_LIST(LAYER_ALPHA, scuttlebug_seg6_dl_06013BD0),\n                                    GEO_CLOSE_NODE(),\n                                GEO_CLOSE_NODE(),\n                                GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, scuttlebug_seg6_dl_06013DA0),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -1, -116, -111, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 198, 0, 0, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 195, 0, 0, NULL),\n                                GEO_OPEN_NODE(),\n                                    GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, scuttlebug_seg6_dl_06014378),\n                                GEO_CLOSE_NODE(),\n                                GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, scuttlebug_seg6_dl_06014270),\n                            GEO_CLOSE_NODE(),\n                            GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, scuttlebug_seg6_dl_06014188),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -1, -116, 112, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 195, 0, 0, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 199, 0, 0, NULL),\n                                GEO_OPEN_NODE(),\n                                    GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, scuttlebug_seg6_dl_06014378),\n                                GEO_CLOSE_NODE(),\n                                GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, scuttlebug_seg6_dl_06014270),\n                            GEO_CLOSE_NODE(),\n                            GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, scuttlebug_seg6_dl_06014188),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, scuttlebug_seg6_dl_060140F0),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/scuttlebug/model.inc.c",
    "content": "// Scuttlebug\n\n// Unreferenced light group\nUNUSED static const Lights1 scuttlebug_lights_unused1 = gdSPDefLights1(\n    0x2c, 0x00, 0x00,\n    0xb2, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 scuttlebug_lights_unused2 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x06010108\nALIGNED8 static const Texture scuttlebug_seg6_texture_06010108[] = {\n#include \"actors/scuttlebug/scuttlebug_eye.rgba16.inc.c\"\n};\n\n// 0x06010908\nALIGNED8 static const Texture scuttlebug_seg6_texture_06010908[] = {\n#include \"actors/scuttlebug/scuttlebug_left_side.rgba16.inc.c\"\n};\n\n// 0x06011908\nALIGNED8 static const Texture scuttlebug_seg6_texture_06011908[] = {\n#include \"actors/scuttlebug/scuttlebug_right_side.rgba16.inc.c\"\n};\n\n// 0x06012908\nALIGNED8 static const Texture scuttlebug_seg6_texture_06012908[] = {\n#include \"actors/scuttlebug/scuttlebug_iris.rgba16.inc.c\"\n};\n\n// 0x06013108\nALIGNED8 static const Texture scuttlebug_seg6_texture_06013108[] = {\n#include \"actors/scuttlebug/scuttlebug_leg.rgba16.inc.c\"\n};\n\n// 0x06013908\nstatic const Vtx scuttlebug_seg6_vertex_06013908[] = {\n    {{{   -44,    -44,      0}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    -44,      0}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,     44,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -44,     44,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x06013948\nstatic const Vtx scuttlebug_seg6_vertex_06013948[] = {\n    {{{     0,    -44,      0}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    44,     44,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,     44,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    44,    -44,      0}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x06013988 - 0x060139C0\nconst Gfx scuttlebug_seg6_dl_06013988[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, scuttlebug_seg6_texture_06010908),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(scuttlebug_seg6_vertex_06013908, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x060139C0 - 0x060139F8\nconst Gfx scuttlebug_seg6_dl_060139C0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, scuttlebug_seg6_texture_06011908),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(scuttlebug_seg6_vertex_06013948, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x060139F8 - 0x06013A70\nconst Gfx scuttlebug_seg6_dl_060139F8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(scuttlebug_seg6_dl_06013988),\n    gsSPDisplayList(scuttlebug_seg6_dl_060139C0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x06013A70\nstatic const Vtx scuttlebug_seg6_vertex_06013A70[] = {\n    {{{    15,     15,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -15,     15,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -15,    -15,      0}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    15,    -15,      0}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x06013AB0 - 0x06013AE8\nconst Gfx scuttlebug_seg6_dl_06013AB0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, scuttlebug_seg6_texture_06010108),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(scuttlebug_seg6_vertex_06013A70, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06013AE8 - 0x06013B58\nconst Gfx scuttlebug_seg6_dl_06013AE8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(scuttlebug_seg6_dl_06013AB0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x06013B58\nstatic const Vtx scuttlebug_seg6_vertex_06013B58[] = {\n    {{{    15,     15,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -15,     15,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -15,    -15,      0}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    15,    -15,      0}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x06013B98 - 0x06013BD0\nconst Gfx scuttlebug_seg6_dl_06013B98[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, scuttlebug_seg6_texture_06010108),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(scuttlebug_seg6_vertex_06013B58, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06013BD0 - 0x06013C40\nconst Gfx scuttlebug_seg6_dl_06013BD0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(scuttlebug_seg6_dl_06013B98),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x06013C40\nstatic const Vtx scuttlebug_seg6_vertex_06013C40[] = {\n    {{{    60,    -30,     31}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    60,    -30,    -30}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    60,     32,    -30}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    60,     32,     31}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x06013C80 - 0x06013CB8\nconst Gfx scuttlebug_seg6_dl_06013C80[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, scuttlebug_seg6_texture_06012908),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(scuttlebug_seg6_vertex_06013C40, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06013CB8 - 0x06013D28\nconst Gfx scuttlebug_seg6_dl_06013CB8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(scuttlebug_seg6_dl_06013C80),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x06013D28\nstatic const Vtx scuttlebug_seg6_vertex_06013D28[] = {\n    {{{    60,    -30,     31}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    60,    -30,    -30}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    59,     31,    -30}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    59,     31,     31}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x06013D68 - 0x06013DA0\nconst Gfx scuttlebug_seg6_dl_06013D68[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, scuttlebug_seg6_texture_06012908),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(scuttlebug_seg6_vertex_06013D28, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06013DA0 - 0x06013E10\nconst Gfx scuttlebug_seg6_dl_06013DA0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(scuttlebug_seg6_dl_06013D68),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x06013E10\nstatic const Lights1 scuttlebug_seg6_lights_06013E10 = gdSPDefLights1(\n    0x33, 0x22, 0x01,\n    0xcf, 0x89, 0x06, 0x28, 0x28, 0x28\n);\n\n// 0x06013E28\nstatic const Vtx scuttlebug_seg6_vertex_06013E28[] = {\n    {{{  -111,     85,    293}, 0, {     0,      0}, {0x7e, 0x06, 0x0b, 0xff}}},\n    {{{  -120,    127,    192}, 0, {     0,      0}, {0x34, 0x64, 0xc8, 0xff}}},\n    {{{  -120,    103,    301}, 0, {     0,      0}, {0xc9, 0x62, 0x3a, 0xff}}},\n    {{{  -128,    -84,    293}, 0, {     0,      0}, {0x82, 0xfa, 0x0b, 0xff}}},\n    {{{  -120,   -126,    192}, 0, {     0,      0}, {0xc7, 0x9e, 0xc8, 0xff}}},\n    {{{  -120,   -102,    301}, 0, {     0,      0}, {0x32, 0x9c, 0x3b, 0xff}}},\n    {{{  -103,    -88,    199}, 0, {     0,      0}, {0x7e, 0xf9, 0xf3, 0xff}}},\n    {{{  -111,    -84,    293}, 0, {     0,      0}, {0x7d, 0x10, 0x0c, 0xff}}},\n    {{{  -120,    -29,    351}, 0, {     0,      0}, {0xf4, 0x3d, 0x6e, 0xff}}},\n    {{{  -136,    -88,    199}, 0, {     0,      0}, {0x83, 0x10, 0xf4, 0xff}}},\n    {{{  -120,    -58,    167}, 0, {     0,      0}, {0xfe, 0x1f, 0x85, 0xff}}},\n    {{{  -120,    -49,    205}, 0, {     0,      0}, {0x2f, 0x75, 0x04, 0xff}}},\n    {{{  -120,    -67,    284}, 0, {     0,      0}, {0xc9, 0x72, 0xf9, 0xff}}},\n    {{{  -120,     68,    284}, 0, {     0,      0}, {0x32, 0x8c, 0xf8, 0xff}}},\n    {{{  -103,     89,    199}, 0, {     0,      0}, {0x7c, 0xee, 0xf3, 0xff}}},\n    {{{  -120,     30,    351}, 0, {     0,      0}, {0xf4, 0xc3, 0x6e, 0xff}}},\n};\n\n// 0x06013F28\nstatic const Vtx scuttlebug_seg6_vertex_06013F28[] = {\n    {{{  -103,     89,    199}, 0, {     0,      0}, {0x7c, 0xee, 0xf3, 0xff}}},\n    {{{  -120,     59,    167}, 0, {     0,      0}, {0xfe, 0xe1, 0x85, 0xff}}},\n    {{{  -120,    127,    192}, 0, {     0,      0}, {0x34, 0x64, 0xc8, 0xff}}},\n    {{{  -136,     89,    199}, 0, {     0,      0}, {0x82, 0x06, 0xf4, 0xff}}},\n    {{{  -120,    103,    301}, 0, {     0,      0}, {0xc9, 0x62, 0x3a, 0xff}}},\n    {{{  -111,     85,    293}, 0, {     0,      0}, {0x7e, 0x06, 0x0b, 0xff}}},\n    {{{  -120,     30,    351}, 0, {     0,      0}, {0xf4, 0xc3, 0x6e, 0xff}}},\n    {{{  -128,     85,    293}, 0, {     0,      0}, {0x83, 0xf1, 0x0b, 0xff}}},\n    {{{  -120,     50,    205}, 0, {     0,      0}, {0xcd, 0x8c, 0x03, 0xff}}},\n    {{{  -120,     68,    284}, 0, {     0,      0}, {0x32, 0x8c, 0xf8, 0xff}}},\n};\n\n// 0x06013FC8 - 0x060140F0\nconst Gfx scuttlebug_seg6_dl_06013FC8[] = {\n    gsSPLight(&scuttlebug_seg6_lights_06013E10.l, 1),\n    gsSPLight(&scuttlebug_seg6_lights_06013E10.a, 2),\n    gsSPVertex(scuttlebug_seg6_vertex_06013E28, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  4,  6, 0x0),\n    gsSP2Triangles( 8,  5,  7, 0x0,  3,  5,  8, 0x0),\n    gsSP2Triangles( 9, 10,  4, 0x0,  3,  9,  4, 0x0),\n    gsSP2Triangles(10,  6,  4, 0x0, 10, 11,  6, 0x0),\n    gsSP2Triangles(11,  7,  6, 0x0, 12,  7, 11, 0x0),\n    gsSP2Triangles(12,  8,  7, 0x0, 12,  9,  3, 0x0),\n    gsSP2Triangles( 3,  8, 12, 0x0, 11, 10,  9, 0x0),\n    gsSP2Triangles(11,  9, 12, 0x0, 13, 14,  0, 0x0),\n    gsSP2Triangles( 0, 14,  1, 0x0, 15, 13,  0, 0x0),\n    gsSPVertex(scuttlebug_seg6_vertex_06013F28, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 4,  2,  3, 0x0,  5,  4,  6, 0x0),\n    gsSP2Triangles( 6,  4,  7, 0x0,  4,  3,  7, 0x0),\n    gsSP2Triangles( 1,  8,  3, 0x0,  8,  7,  3, 0x0),\n    gsSP2Triangles( 8,  1,  0, 0x0,  8,  0,  9, 0x0),\n    gsSP2Triangles( 9,  7,  8, 0x0,  7,  9,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x060140F0 - 0x06014110\nconst Gfx scuttlebug_seg6_dl_060140F0[] = {\n    gsDPPipeSync(),\n    gsSPDisplayList(scuttlebug_seg6_dl_06013FC8),\n    gsDPPipeSync(),\n    gsSPEndDisplayList(),\n};\n\n// 0x06014110\nstatic const Vtx scuttlebug_seg6_vertex_06014110[] = {\n    {{{   -21,     37,      0}, 0, {  -584,  -4238}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   191,     18,      0}, 0, {    28,    892}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   193,    -19,      0}, 0, {   988,    958}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -16,    -25,      0}, 0, {   982,  -4136}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x06014150 - 0x06014188\nconst Gfx scuttlebug_seg6_dl_06014150[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, scuttlebug_seg6_texture_06013108),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(scuttlebug_seg6_vertex_06014110, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06014188 - 0x060141F8\nconst Gfx scuttlebug_seg6_dl_06014188[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(scuttlebug_seg6_dl_06014150),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x060141F8\nstatic const Vtx scuttlebug_seg6_vertex_060141F8[] = {\n    {{{    -9,     39,      4}, 0, {  -560,  -4258}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   199,     20,      2}, 0, {    38,    948}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   201,    -17,     -2}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    -5,    -22,     -3}, 0, {   990,  -4192}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x06014238 - 0x06014270\nconst Gfx scuttlebug_seg6_dl_06014238[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, scuttlebug_seg6_texture_06013108),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(scuttlebug_seg6_vertex_060141F8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06014270 - 0x060142E0\nconst Gfx scuttlebug_seg6_dl_06014270[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(scuttlebug_seg6_dl_06014238),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x060142E0\nstatic const Lights1 scuttlebug_seg6_lights_060142E0 = gdSPDefLights1(\n    0x26, 0x05, 0x05,\n    0x99, 0x16, 0x16, 0x28, 0x28, 0x28\n);\n\n// 0x060142F8\nstatic const Vtx scuttlebug_seg6_vertex_060142F8[] = {\n    {{{     0,     -1,      0}, 0, {     0,      0}, {0x82, 0x02, 0x00, 0xff}}},\n    {{{    57,   -106,     -3}, 0, {     0,      0}, {0xcf, 0x8c, 0xfd, 0xff}}},\n    {{{    57,     48,     83}, 0, {     0,      0}, {0xd0, 0x37, 0x67, 0xff}}},\n    {{{    57,     54,    -81}, 0, {     0,      0}, {0xcf, 0x3d, 0x9d, 0xff}}},\n};\n\n// 0x06014338 - 0x06014378\nconst Gfx scuttlebug_seg6_dl_06014338[] = {\n    gsSPLight(&scuttlebug_seg6_lights_060142E0.l, 1),\n    gsSPLight(&scuttlebug_seg6_lights_060142E0.a, 2),\n    gsSPVertex(scuttlebug_seg6_vertex_060142F8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 2,  3,  0, 0x0,  1,  0,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06014378 - 0x06014398\nconst Gfx scuttlebug_seg6_dl_06014378[] = {\n    gsDPPipeSync(),\n    gsSPDisplayList(scuttlebug_seg6_dl_06014338),\n    gsDPPipeSync(),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/seaweed/anims/anim_0600A4BC.inc.c",
    "content": "// 0x0600A1F0\nstatic const s16 seaweed_seg6_animvalue_0600A1F0[] = {\n    0x0000, 0x3FFF, 0x0E42, 0x0DE6, 0x0CE5, 0x0B5D, 0x096E, 0x0734,\n    0x04CF, 0x025D, 0xFFFC, 0xFDCA, 0xFBE5, 0xFA6B, 0xF97C, 0xF8DF,\n    0xF849, 0xF7BB, 0xF735, 0xF6B7, 0xF641, 0xF5D3, 0xF56F, 0xF513,\n    0xF4C1, 0xF479, 0xF43A, 0xF405, 0xF3DB, 0xF3BB, 0xF3A6, 0xF39C,\n    0xF39D, 0xF3AA, 0xF3C3, 0xF3E8, 0xF419, 0xF457, 0xF4A2, 0xF4F9,\n    0xF55E, 0xF5D1, 0xF6AA, 0xF829, 0xFA2B, 0xFC8B, 0xFF24, 0x01D2,\n    0x0471, 0x06DE, 0x08F2, 0x0A8B, 0x0B84, 0x0C18, 0x0C9D, 0x0D12,\n    0x0D79, 0x0DD3, 0x0E20, 0x0E61, 0x0E97, 0x0EC2, 0x0EE4, 0x0EFD,\n    0x0F0E, 0x0F18, 0x0F1B, 0x0F18, 0x0F10, 0x0F04, 0x0EF5, 0x0EE3,\n    0x0ECE, 0x0EB9, 0x0EA4, 0x0E8E, 0x0E7A, 0x0E68, 0x0E59, 0x0E4D,\n    0x0E45, 0x0E42, 0xEE13, 0xEE26, 0xEE5D, 0xEEB7, 0xEF30, 0xEFC9,\n    0xF07D, 0xF14D, 0xF234, 0xF333, 0xF445, 0xF56B, 0xF6A1, 0xF7E6,\n    0xF938, 0xFA94, 0xFBF9, 0xFD66, 0xFED7, 0x004A, 0x01BF, 0x0333,\n    0x04A4, 0x0610, 0x0775, 0x08D2, 0x0A23, 0x0B68, 0x0C9F, 0x0DC4,\n    0x0ED7, 0x0FD5, 0x10BD, 0x118C, 0x1241, 0x12D9, 0x1353, 0x13AC,\n    0x13E3, 0x13F6, 0x13E4, 0x13B0, 0x135B, 0x12E7, 0x1255, 0x11A9,\n    0x10E3, 0x1005, 0x0F12, 0x0E0B, 0x0CF1, 0x0BC7, 0x0A8F, 0x0949,\n    0x07F9, 0x06A0, 0x053F, 0x03D9, 0x0270, 0x0104, 0xFF9A, 0xFE30,\n    0xFCCA, 0xFB6A, 0xFA10, 0xF8C0, 0xF77B, 0xF642, 0xF518, 0xF3FF,\n    0xF2F7, 0xF204, 0xF126, 0xF061, 0xEFB4, 0xEF23, 0xEEAF, 0xEE5A,\n    0xEE25, 0xEE13, 0xEA00, 0xEA16, 0xEA55, 0xEABB, 0xEB45, 0xEBF3,\n    0xECC1, 0xEDAD, 0xEEB5, 0xEFD7, 0xF110, 0xF25F, 0xF3C0, 0xF533,\n    0xF6B4, 0xF841, 0xF9D8, 0xFB77, 0xFD1C, 0xFEC4, 0x006C, 0x0214,\n    0x03B9, 0x0558, 0x06EF, 0x087C, 0x09FD, 0x0B6F, 0x0CD1, 0x0E1F,\n    0x0F59, 0x107A, 0x1183, 0x126F, 0x133D, 0x13EA, 0x1475, 0x14DB,\n    0x151A, 0x152F, 0x151B, 0x14DF, 0x147E, 0x13FA, 0x1354, 0x1290,\n    0x11AE, 0x10B1, 0x0F9C, 0x0E70, 0x0D2F, 0x0BDB, 0x0A77, 0x0904,\n    0x0785, 0x05FC, 0x046A, 0x02D2, 0x0136, 0xFF98, 0xFDFA, 0xFC5E,\n    0xFAC6, 0xF934, 0xF7AA, 0xF62B, 0xF4B9, 0xF354, 0xF201, 0xF0C0,\n    0xEF94, 0xEE7E, 0xED82, 0xECA0, 0xEBDB, 0xEB36, 0xEAB2, 0xEA50,\n    0xEA15, 0xEA00, 0x4CA0, 0x4C93, 0x4C6A, 0x4C29, 0x4BD0, 0x4B60,\n    0x4ADC, 0x4A45, 0x499B, 0x48E2, 0x4819, 0x4742, 0x465F, 0x4572,\n    0x447B, 0x437C, 0x4277, 0x416C, 0x405E, 0x3F4E, 0x3E3E, 0x3D2E,\n    0x3C20, 0x3B16, 0x3A10, 0x3912, 0x381B, 0x372D, 0x364A, 0x3574,\n    0x34AB, 0x33F1, 0x3347, 0x32B0, 0x322C, 0x31BC, 0x3163, 0x3122,\n    0x30FA, 0x30EC, 0x30F9, 0x311F, 0x315E, 0x31B2, 0x321D, 0x329B,\n    0x332B, 0x33CE, 0x347F, 0x3540, 0x360E, 0x36E8, 0x37CC, 0x38BA,\n    0x39B0, 0x3AAC, 0x3BAE, 0x3CB4, 0x3DBC, 0x3EC6, 0x3FD0, 0x40D8,\n    0x41DE, 0x42E0, 0x43DC, 0x44D2, 0x45C0, 0x46A4, 0x477E, 0x484C,\n    0x490D, 0x49BF, 0x4A61, 0x4AF1, 0x4B70, 0x4BDA, 0x4C2F, 0x4C6D,\n    0x4C93, 0x4CA0,\n};\n\n// 0x0600A474\nstatic const u16 seaweed_seg6_animindex_0600A474[] = {\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0050, 0x00F2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0050, 0x00A2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0050, 0x0052,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0050, 0x0002,\n};\n\n// 0x0600A4BC\nstatic const struct Animation seaweed_seg6_anim_0600A4BC = {\n    0,\n    0,\n    0,\n    0,\n    0x50,\n    ANIMINDEX_NUMPARTS(seaweed_seg6_animindex_0600A474),\n    seaweed_seg6_animvalue_0600A1F0,\n    seaweed_seg6_animindex_0600A474,\n    0,\n};\n"
  },
  {
    "path": "actors/seaweed/anims/data.inc.c",
    "content": "#include \"anim_0600A4BC.inc.c\"\n"
  },
  {
    "path": "actors/seaweed/anims/table.inc.c",
    "content": "// 0x0600A4D4\nconst struct Animation *const seaweed_seg6_anims_0600A4D4[] = {\n    &seaweed_seg6_anim_0600A4BC,\n};\n"
  },
  {
    "path": "actors/seaweed/geo.inc.c",
    "content": "// 0x0D000284\nconst GeoLayout seaweed_geo[] = {\n    GEO_SCALE(0x00, 16384),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, seaweed_seg6_dl_0600A180),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_ALPHA, 238, 0, 0, seaweed_seg6_dl_0600A088),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_ALPHA, 317, 0, 0, seaweed_seg6_dl_06009F90),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_ALPHA, 314, 0, 0, seaweed_seg6_dl_06009E98),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/seaweed/model.inc.c",
    "content": "// Seaweed\n\n// 0x06007DF8\nstatic const Lights1 seaweed_seg6_lights_06007DF8 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x06007E10\nALIGNED8 static const Texture seaweed_seg6_texture_06007E10[] = {\n#include \"actors/seaweed/seaweed_tip.rgba16.inc.c\"\n};\n\n// 0x06008610\nALIGNED8 static const Texture seaweed_seg6_texture_06008610[] = {\n#include \"actors/seaweed/seaweed_upper_center.rgba16.inc.c\"\n};\n\n// 0x06008E10\nALIGNED8 static const Texture seaweed_seg6_texture_06008E10[] = {\n#include \"actors/seaweed/seaweed_lower_center.rgba16.inc.c\"\n};\n\n// 0x06009610\nALIGNED8 static const Texture seaweed_seg6_texture_06009610[] = {\n#include \"actors/seaweed/seaweed_base.rgba16.inc.c\"\n};\n\n// 0x06009E10\nstatic const Vtx seaweed_seg6_vertex_06009E10[] = {\n    {{{   232,      2,    -76}, 0, {   -30,    -12}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    -1,      2,     77}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   232,      2,     77}, 0, {   992,    -12}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    -1,      2,    -76}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x06009E50 - 0x06009E98\nconst Gfx seaweed_seg6_dl_06009E50[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, seaweed_seg6_texture_06007E10),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&seaweed_seg6_lights_06007DF8.l, 1),\n    gsSPLight(&seaweed_seg6_lights_06007DF8.a, 2),\n    gsSPVertex(seaweed_seg6_vertex_06009E10, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06009E98 - 0x06009F08\nconst Gfx seaweed_seg6_dl_06009E98[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(seaweed_seg6_dl_06009E50),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x06009F08\nstatic const Vtx seaweed_seg6_vertex_06009F08[] = {\n    {{{   311,      2,    -76}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    -1,      2,    -76}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    -1,      2,     77}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   311,      2,     77}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x06009F48 - 0x06009F90\nconst Gfx seaweed_seg6_dl_06009F48[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, seaweed_seg6_texture_06008610),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&seaweed_seg6_lights_06007DF8.l, 1),\n    gsSPLight(&seaweed_seg6_lights_06007DF8.a, 2),\n    gsSPVertex(seaweed_seg6_vertex_06009F08, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06009F90 - 0x0600A000\nconst Gfx seaweed_seg6_dl_06009F90[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(seaweed_seg6_dl_06009F48),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600A000\nstatic const Vtx seaweed_seg6_vertex_0600A000[] = {\n    {{{   314,      2,    -76}, 0, {     0,    -20}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    -1,      2,     77}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   314,      2,     77}, 0, {   990,    -20}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    -1,      2,    -76}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0600A040 - 0x0600A088\nconst Gfx seaweed_seg6_dl_0600A040[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, seaweed_seg6_texture_06008E10),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&seaweed_seg6_lights_06007DF8.l, 1),\n    gsSPLight(&seaweed_seg6_lights_06007DF8.a, 2),\n    gsSPVertex(seaweed_seg6_vertex_0600A000, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600A088 - 0x0600A0F8\nconst Gfx seaweed_seg6_dl_0600A088[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(seaweed_seg6_dl_0600A040),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600A0F8\nstatic const Vtx seaweed_seg6_vertex_0600A0F8[] = {\n    {{{   236,      2,    -76}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,      2,     77}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   236,      2,     77}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,      2,    -76}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0600A138 - 0x0600A180\nconst Gfx seaweed_seg6_dl_0600A138[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, seaweed_seg6_texture_06009610),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&seaweed_seg6_lights_06007DF8.l, 1),\n    gsSPLight(&seaweed_seg6_lights_06007DF8.a, 2),\n    gsSPVertex(seaweed_seg6_vertex_0600A0F8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600A180 - 0x0600A1F0\nconst Gfx seaweed_seg6_dl_0600A180[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(seaweed_seg6_dl_0600A138),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/skeeter/anims/anim_06005D44.inc.c",
    "content": "// 0x06005720\nstatic const s16 skeeter_seg6_animvalue_06005720[] = {\n    0x0000, 0x0000, 0xFFF8, 0xFFF0, 0xFFE7, 0xFFDF, 0xFFEF, 0x0000,\n    0x000F, 0x001F, 0x0020, 0x0020, 0x001E, 0x001B, 0x0017, 0x0012,\n    0x000E, 0x000A, 0x0006, 0x0002, 0x0000, 0x014A, 0x0130, 0x0117,\n    0x00FE, 0x00E4, 0x00F7, 0x010A, 0x011E, 0x0131, 0x0144, 0x0157,\n    0x016A, 0x016E, 0x016D, 0x016A, 0x0164, 0x015D, 0x0156, 0x0150,\n    0x014B, 0x0000, 0x0026, 0x004D, 0x0074, 0x009A, 0x00A2, 0x009B,\n    0x008E, 0x0082, 0x0077, 0x006B, 0x005D, 0x004F, 0x0041, 0x0032,\n    0x0025, 0x0019, 0x000E, 0x0006, 0x0001, 0x3FFF, 0x1296, 0x11D0,\n    0x10B3, 0x0F3F, 0x0D74, 0x0E83, 0x0F5A, 0x1002, 0x1086, 0x1199,\n    0x12A3, 0x13A2, 0x13DA, 0x13E5, 0x13CE, 0x139F, 0x1360, 0x131B,\n    0x12DA, 0x12A9, 0xE34B, 0xDFF0, 0xDC70, 0xD8C3, 0xD4D1, 0xD43D,\n    0xD4CF, 0xD5F0, 0xD6EC, 0xD887, 0xDA5B, 0xDC57, 0xDDE2, 0xDF41,\n    0xE06D, 0xE163, 0xE221, 0xE2AC, 0xE307, 0xE33A, 0xCC16, 0xCF70,\n    0xD35C, 0xD7FC, 0xDD89, 0xE118, 0xE217, 0xE1DF, 0xE1FD, 0xE0FB,\n    0xDF9D, 0xDE0F, 0xDB7B, 0xD8BA, 0xD5F9, 0xD35B, 0xD0FF, 0xCEFF,\n    0xCD73, 0xCC72, 0xDFC6, 0xDEBE, 0xDE1D, 0xDE0A, 0xDED5, 0xE1FE,\n    0xE3F7, 0xE546, 0xE6B4, 0xE6CE, 0xE6BA, 0xE697, 0xE5A2, 0xE493,\n    0xE383, 0xE283, 0xE19F, 0xE0DF, 0xE04A, 0xDFE9, 0xE524, 0xE2A4,\n    0xDFEE, 0xDCF5, 0xD9A8, 0xD8B8, 0xD913, 0xDA04, 0xDADC, 0xDBAE,\n    0xDCA1, 0xDDA6, 0xDECC, 0xDFF6, 0xE119, 0xE22B, 0xE321, 0xE3F3,\n    0xE495, 0xE4FF, 0x130D, 0x1455, 0x157D, 0x1660, 0x16AD, 0x11EB,\n    0x0EE0, 0x0CD4, 0x0AB7, 0x0971, 0x0869, 0x077C, 0x0895, 0x0A11,\n    0x0BC1, 0x0D80, 0x0F2E, 0x10B0, 0x11EA, 0x12BE, 0xF5FA, 0xF770,\n    0xF8F2, 0xFA79, 0xFBFA, 0xFAE2, 0xF929, 0xF79D, 0xF6B1, 0xF5E3,\n    0xF526, 0xF479, 0xF45A, 0xF465, 0xF48F, 0xF4D0, 0xF51E, 0xF56D,\n    0xF5B4, 0xF5E7, 0xE59C, 0xE707, 0xE7F7, 0xE86F, 0xE86C, 0xE7D0,\n    0xE552, 0xE1B3, 0xDF2D, 0xDF4D, 0xDFD4, 0xE0B6, 0xE16A, 0xE233,\n    0xE2FF, 0xE3BF, 0xE465, 0xE4EB, 0xE54C, 0xE587, 0xC584, 0xBF73,\n    0xBA15, 0xB555, 0xB12E, 0xB5AA, 0xBDC1, 0xC7CE, 0xCF59, 0xD159,\n    0xD287, 0xD2FF, 0xD212, 0xD080, 0xCE88, 0xCC66, 0xCA4E, 0xC86C,\n    0xC6E7, 0xC5E3, 0x1563, 0x14ED, 0x13CA, 0x1203, 0x0F96, 0x1184,\n    0x14B0, 0x15FA, 0x150F, 0x1486, 0x140B, 0x13A4, 0x13BE, 0x1400,\n    0x1452, 0x14A5, 0x14EC, 0x1522, 0x1547, 0x155C, 0x1125, 0x0E25,\n    0x0B55, 0x08B9, 0x065C, 0x089F, 0x0D4B, 0x12A1, 0x15D6, 0x1681,\n    0x16C4, 0x16AF, 0x1643, 0x159E, 0x14D4, 0x13FA, 0x1321, 0x125C,\n    0x11BA, 0x114D, 0x1654, 0x1AB9, 0x1EDE, 0x22E1, 0x26D2, 0x2337,\n    0x1E62, 0x18D3, 0x1400, 0x119E, 0x0F9F, 0x0DF8, 0x0E1E, 0x0EDF,\n    0x1007, 0x1166, 0x12D3, 0x1429, 0x1547, 0x160B, 0xF80C, 0xF84D,\n    0xF88F, 0xF8D3, 0xF916, 0xF8C7, 0xF86F, 0xF815, 0xF7B2, 0xF77A,\n    0xF74B, 0xF727, 0xF71F, 0xF71F, 0xF725, 0xF72E, 0xF739, 0xF743,\n    0xF74A, 0xF74B, 0x1B5D, 0x19E9, 0x187B, 0x171D, 0x15DB, 0x1719,\n    0x1984, 0x1C26, 0x1DE2, 0x1E57, 0x1E91, 0x1E98, 0x1E7C, 0x1E49,\n    0x1E07, 0x1DBE, 0x1D75, 0x1D33, 0x1D00, 0x1CE5, 0xE69B, 0xE6A3,\n    0xE659, 0xE5C5, 0xE4EB, 0xE633, 0xE604, 0xE50A, 0xE542, 0xE638,\n    0xE753, 0xE88D, 0xE920, 0xE999, 0xE9FA, 0xEA46, 0xEA80, 0xEAB0,\n    0xEADD, 0xEB10, 0xC9D6, 0xC574, 0xC1C5, 0xBEBF, 0xBC5B, 0xBD5D,\n    0xC1E0, 0xC82E, 0xCBE9, 0xCD92, 0xCEDE, 0xCFD8, 0xCFC1, 0xCF36,\n    0xCE5D, 0xCD5A, 0xCC50, 0xCB5A, 0xCA90, 0xCA08, 0xE0D2, 0xE209,\n    0xE3B2, 0xE5C1, 0xE82A, 0xE5DF, 0xE1E2, 0xDED0, 0xDDA0, 0xDDF5,\n    0xDE80, 0xDF32, 0xDF81, 0xDFC2, 0xDFF8, 0xE02A, 0xE05A, 0xE086,\n    0xE0AD, 0xE0C8, 0xF87E, 0xFC1F, 0xFF81, 0x02A2, 0x0583, 0x0346,\n    0xFE36, 0xF864, 0xF4F4, 0xF3E9, 0xF344, 0xF2F4, 0xF33C, 0xF3CF,\n    0xF495, 0xF576, 0xF65A, 0xF72D, 0xF7DC, 0xF852, 0x0C47, 0x0FE0,\n    0x135D, 0x16C9, 0x1A22, 0x17C6, 0x139C, 0x0F2A, 0x0C29, 0x0A5C,\n    0x08C3, 0x0755, 0x0737, 0x0789, 0x082C, 0x0900, 0x09E9, 0x0ACC,\n    0x0B8E, 0x0C14, 0x8001, 0x8001, 0x8001, 0x0F51, 0x0E07, 0x0CAC,\n    0x0B44, 0x09D2, 0x0B02, 0x0C87, 0x0E1B, 0x0F92, 0x1080, 0x1118,\n    0x118E, 0x118F, 0x116A, 0x1128, 0x10D1, 0x106C, 0x1006, 0x0FAB,\n    0x0F6A, 0xEE85, 0xF034, 0xF207, 0xF3F7, 0xF5FA, 0xF419, 0xF239,\n    0xF060, 0xEE8C, 0xED9A, 0xECB2, 0xEBEC, 0xEBE7, 0xEC10, 0xEC5D,\n    0xECC4, 0xED39, 0xEDB1, 0xEE1B, 0xEE67, 0xE134, 0xDE56, 0xDB79,\n    0xD898, 0xD5A6, 0xD7F5, 0xDB2D, 0xDEBC, 0xE237, 0xE4F8, 0xE676,\n    0xE78F, 0xE789, 0xE70C, 0xE63A, 0xE532, 0xE415, 0xE301, 0xE215,\n    0xE171, 0xCFD6, 0xD231, 0xD4DC, 0xD7E2, 0xDB56, 0xD88F, 0xD406,\n    0xCF1E, 0xCACD, 0xC812, 0xC7F3, 0xC89C, 0xC923, 0xC9EA, 0xCADE,\n    0xCBEE, 0xCD07, 0xCE14, 0xCEF9, 0xCF9A, 0x1E64, 0x1E5A, 0x1E08,\n    0x1D5F, 0x1C48, 0x1DCA, 0x1F7D, 0x20CE, 0x219A, 0x2112, 0x204A,\n    0x1F63, 0x1F0B, 0x1ED3, 0x1EB1, 0x1E9D, 0x1E8E, 0x1E80, 0x1E73,\n    0x1E68, 0x1C2C, 0x1D97, 0x1F15, 0x20A7, 0x224F, 0x2153, 0x1F54,\n    0x1CF3, 0x1ABB, 0x18E5, 0x1878, 0x186D, 0x1890, 0x18E7, 0x1963,\n    0x19F7, 0x1A95, 0x1B2D, 0x1BAF, 0x1C0A, 0x11D7, 0x136F, 0x14CF,\n    0x15E0, 0x1684, 0x1645, 0x1694, 0x16A1, 0x1615, 0x1502, 0x1315,\n    0x10F7, 0x1074, 0x1047, 0x1058, 0x1094, 0x10E6, 0x113D, 0x118A,\n    0x11C2, 0x8001, 0x8001, 0x8001, 0x2108, 0x1DEB, 0x1622, 0x0C03,\n    0x01E4, 0xFA1C, 0xF6FF, 0xF79C, 0xF953, 0xFBF5, 0xFF54, 0x033F,\n    0x078A, 0x0C03, 0x107C, 0x14C6, 0x18B2, 0x1C11, 0x1EB4, 0x206B,\n    0xC001, 0xC001, 0x3FFF, 0x3FFF,\n};\n\n// 0x06005BE8\nstatic const u16 skeeter_seg6_animindex_06005BE8[] = {\n    0x0014, 0x0001, 0x0014, 0x0015, 0x0014, 0x0029, 0x0001, 0x0000, 0x0001, 0x003D, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0263, 0x0001, 0x0000,\n    0x0014, 0x007A, 0x0014, 0x008E, 0x0014, 0x00A2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x0066,\n    0x0001, 0x0000, 0x0014, 0x003E, 0x0014, 0x0052,\n    0x0001, 0x0000, 0x0001, 0x0262, 0x0001, 0x0000,\n    0x0014, 0x00F2, 0x0014, 0x0106, 0x0014, 0x011A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x00DE,\n    0x0001, 0x0000, 0x0014, 0x00B6, 0x0014, 0x00CA,\n    0x0001, 0x0000, 0x0001, 0x0261, 0x0001, 0x0000,\n    0x0014, 0x017E, 0x0014, 0x0192, 0x0014, 0x01A6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x016A,\n    0x0014, 0x012E, 0x0014, 0x0142, 0x0014, 0x0156,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0249,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01BA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x024A, 0x0001, 0x024B, 0x0001, 0x0000,\n    0x0001, 0x01BB, 0x0001, 0x01BC, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0260, 0x0001, 0x0000,\n    0x0014, 0x020D, 0x0014, 0x0221, 0x0014, 0x0235,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x01F9,\n    0x0014, 0x01BD, 0x0014, 0x01D1, 0x0014, 0x01E5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x024C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x06005D44\nstatic const struct Animation skeeter_seg6_anim_06005D44 = {\n    1,\n    0,\n    0,\n    0,\n    0x14,\n    ANIMINDEX_NUMPARTS(skeeter_seg6_animindex_06005BE8),\n    skeeter_seg6_animvalue_06005720,\n    skeeter_seg6_animindex_06005BE8,\n    0,\n};\n"
  },
  {
    "path": "actors/skeeter/anims/anim_06006B70.inc.c",
    "content": "// 0x06005D5C\nstatic const s16 skeeter_seg6_animvalue_06005D5C[] = {\n    0x0000, 0x014A, 0x014A, 0x014A, 0x014B, 0x014B, 0x014C, 0x014D,\n    0x014E, 0x014F, 0x0151, 0x0152, 0x0153, 0x0154, 0x0155, 0x0157,\n    0x0158, 0x0158, 0x0159, 0x015A, 0x015A, 0x015A, 0x015A, 0x015A,\n    0x0159, 0x0159, 0x0158, 0x0158, 0x0157, 0x0156, 0x0155, 0x0155,\n    0x0154, 0x0153, 0x0152, 0x0151, 0x0151, 0x0150, 0x014F, 0x014E,\n    0x014D, 0x014D, 0x014C, 0x014C, 0x014B, 0x014B, 0x014A, 0x014A,\n    0x014A, 0x014A, 0x3FFF, 0x1296, 0x1292, 0x1286, 0x1273, 0x125A,\n    0x123C, 0x1219, 0x11F3, 0x11CB, 0x11A0, 0x1175, 0x114A, 0x111E,\n    0x10F3, 0x10CA, 0x10A2, 0x107B, 0x1056, 0x1033, 0x1012, 0x0FF4,\n    0x0FD7, 0x0FBE, 0x0FAA, 0x0F9A, 0x0F90, 0x0F8C, 0x0F8F, 0x0F98,\n    0x0FA6, 0x0FBA, 0x0FD2, 0x0FF0, 0x1012, 0x1037, 0x1061, 0x108E,\n    0x10BE, 0x10F0, 0x1124, 0x1158, 0x118D, 0x11C0, 0x11F0, 0x121D,\n    0x1245, 0x1267, 0x1280, 0x1291, 0xE34B, 0xE356, 0xE375, 0xE3A8,\n    0xE3E9, 0xE438, 0xE491, 0xE4F2, 0xE558, 0xE5C1, 0xE62A, 0xE694,\n    0xE6FA, 0xE75D, 0xE7BB, 0xE813, 0xE864, 0xE8AE, 0xE8F0, 0xE928,\n    0xE957, 0xE97C, 0xE997, 0xE9A8, 0xE9B0, 0xE9AE, 0xE9A1, 0xE98A,\n    0xE969, 0xE93F, 0xE90C, 0xE8D1, 0xE88F, 0xE845, 0xE7F5, 0xE79F,\n    0xE743, 0xE6E3, 0xE680, 0xE61A, 0xE5B4, 0xE54E, 0xE4EA, 0xE48C,\n    0xE435, 0xE3E7, 0xE3A7, 0xE375, 0xE356, 0xCC16, 0xCC18, 0xCC1D,\n    0xCC25, 0xCC30, 0xCC3D, 0xCC4C, 0xCC5D, 0xCC6F, 0xCC83, 0xCC97,\n    0xCCAB, 0xCCBF, 0xCCD3, 0xCCE6, 0xCCF8, 0xCD08, 0xCD17, 0xCD22,\n    0xCD2B, 0xCD31, 0xCD33, 0xCD32, 0xCD2F, 0xCD29, 0xCD22, 0xCD1A,\n    0xCD10, 0xCD04, 0xCCF8, 0xCCEB, 0xCCDD, 0xCCCE, 0xCCBF, 0xCCB0,\n    0xCCA1, 0xCC92, 0xCC83, 0xCC74, 0xCC66, 0xCC59, 0xCC4C, 0xCC41,\n    0xCC36, 0xCC2D, 0xCC25, 0xCC1F, 0xCC1A, 0xCC17, 0xDFC6, 0xDFC8,\n    0xDFCD, 0xDFD4, 0xDFDE, 0xDFEA, 0xDFF7, 0xE007, 0xE017, 0xE028,\n    0xE03A, 0xE04D, 0xE05F, 0xE071, 0xE082, 0xE092, 0xE0A0, 0xE0AD,\n    0xE0B7, 0xE0BF, 0xE0C4, 0xE0C6, 0xE0C5, 0xE0C2, 0xE0BD, 0xE0B7,\n    0xE0B0, 0xE0A7, 0xE09D, 0xE092, 0xE086, 0xE079, 0xE06C, 0xE05F,\n    0xE051, 0xE044, 0xE036, 0xE028, 0xE01B, 0xE00F, 0xE003, 0xDFF7,\n    0xDFED, 0xDFE3, 0xDFDB, 0xDFD4, 0xDFCE, 0xDFCA, 0xDFC7, 0xE524,\n    0xE524, 0xE523, 0xE522, 0xE520, 0xE51E, 0xE51C, 0xE519, 0xE517,\n    0xE514, 0xE511, 0xE50D, 0xE50A, 0xE507, 0xE505, 0xE502, 0xE4FF,\n    0xE4FD, 0xE4FB, 0xE4FA, 0xE4F9, 0xE4F9, 0xE4F9, 0xE4FA, 0xE4FA,\n    0xE4FB, 0xE4FD, 0xE4FE, 0xE500, 0xE502, 0xE504, 0xE506, 0xE508,\n    0xE50A, 0xE50D, 0xE50F, 0xE511, 0xE514, 0xE516, 0xE518, 0xE51A,\n    0xE51C, 0xE51E, 0xE51F, 0xE521, 0xE522, 0xE523, 0xE524, 0xE524,\n    0x130D, 0x1308, 0x12FA, 0x12E3, 0x12C6, 0x12A2, 0x127A, 0x124C,\n    0x121C, 0x11E9, 0x11B5, 0x1180, 0x114C, 0x1119, 0x10E8, 0x10BB,\n    0x1093, 0x106F, 0x1052, 0x103C, 0x102E, 0x1029, 0x102C, 0x1034,\n    0x1041, 0x1052, 0x1067, 0x1080, 0x109C, 0x10BB, 0x10DD, 0x1100,\n    0x1125, 0x114C, 0x1173, 0x119A, 0x11C2, 0x11E9, 0x120F, 0x1235,\n    0x1258, 0x127A, 0x1299, 0x12B5, 0x12CE, 0x12E3, 0x12F5, 0x1302,\n    0x130A, 0xF5FA, 0xF5F4, 0xF5E0, 0xF5C2, 0xF59A, 0xF56A, 0xF533,\n    0xF4F6, 0xF4B5, 0xF472, 0xF42D, 0xF3E8, 0xF3A4, 0xF363, 0xF325,\n    0xF2EC, 0xF2B9, 0xF28D, 0xF269, 0xF24D, 0xF23C, 0xF236, 0xF23A,\n    0xF244, 0xF253, 0xF269, 0xF283, 0xF2A2, 0xF2C5, 0xF2EC, 0xF317,\n    0xF344, 0xF373, 0xF3A4, 0xF3D7, 0xF40A, 0xF43E, 0xF472, 0xF4A5,\n    0xF4D6, 0xF506, 0xF533, 0xF55D, 0xF583, 0xF5A5, 0xF5C2, 0xF5DA,\n    0xF5EB, 0xF5F6, 0xE59C, 0xE5A5, 0xE5C0, 0xE5EB, 0xE624, 0xE669,\n    0xE6B9, 0xE711, 0xE770, 0xE7D4, 0xE83B, 0xE8A3, 0xE90B, 0xE970,\n    0xE9D1, 0xEA2B, 0xEA7D, 0xEAC4, 0xEAFF, 0xEB2C, 0xEB48, 0xEB51,\n    0xEB4C, 0xEB3C, 0xEB22, 0xEAFF, 0xEAD4, 0xEAA2, 0xEA69, 0xEA2B,\n    0xE9E8, 0xE9A1, 0xE957, 0xE90B, 0xE8BD, 0xE86F, 0xE821, 0xE7D4,\n    0xE788, 0xE73F, 0xE6FA, 0xE6B9, 0xE67C, 0xE645, 0xE614, 0xE5EB,\n    0xE5C9, 0xE5B0, 0xE5A1, 0xC584, 0xC586, 0xC58B, 0xC593, 0xC59D,\n    0xC5AA, 0xC5B8, 0xC5C9, 0xC5DA, 0xC5ED, 0xC600, 0xC614, 0xC627,\n    0xC63A, 0xC64D, 0xC65E, 0xC66D, 0xC67B, 0xC687, 0xC68F, 0xC695,\n    0xC696, 0xC695, 0xC692, 0xC68D, 0xC687, 0xC67E, 0xC675, 0xC66A,\n    0xC65E, 0xC651, 0xC644, 0xC635, 0xC627, 0xC618, 0xC60A, 0xC5FB,\n    0xC5ED, 0xC5DF, 0xC5D1, 0xC5C4, 0xC5B8, 0xC5AD, 0xC5A3, 0xC59A,\n    0xC593, 0xC58D, 0xC588, 0xC585, 0x1563, 0x1562, 0x1560, 0x155C,\n    0x1556, 0x154F, 0x1548, 0x153F, 0x1536, 0x152C, 0x1521, 0x1517,\n    0x150D, 0x1503, 0x14F9, 0x14F0, 0x14E8, 0x14E1, 0x14DB, 0x14D6,\n    0x14D3, 0x14D2, 0x14D3, 0x14D5, 0x14D7, 0x14DB, 0x14DF, 0x14E4,\n    0x14EA, 0x14F0, 0x14F7, 0x14FE, 0x1505, 0x150D, 0x1515, 0x151C,\n    0x1524, 0x152C, 0x1533, 0x153A, 0x1541, 0x1548, 0x154D, 0x1553,\n    0x1558, 0x155C, 0x155F, 0x1561, 0x1563, 0x1125, 0x1125, 0x1126,\n    0x1127, 0x1128, 0x112A, 0x112C, 0x112E, 0x1130, 0x1132, 0x1134,\n    0x1137, 0x1139, 0x113B, 0x113E, 0x1140, 0x1142, 0x1143, 0x1145,\n    0x1146, 0x1146, 0x1146, 0x1146, 0x1146, 0x1145, 0x1145, 0x1144,\n    0x1142, 0x1141, 0x1140, 0x113E, 0x113D, 0x113B, 0x1139, 0x1137,\n    0x1136, 0x1134, 0x1132, 0x1130, 0x112F, 0x112D, 0x112C, 0x112A,\n    0x1129, 0x1128, 0x1127, 0x1126, 0x1126, 0x1125, 0x1654, 0x1651,\n    0x1645, 0x1634, 0x161C, 0x1600, 0x15DF, 0x15BB, 0x1594, 0x156C,\n    0x1542, 0x1517, 0x14ED, 0x14C5, 0x149E, 0x1479, 0x1458, 0x143C,\n    0x1424, 0x1412, 0x1407, 0x1403, 0x1405, 0x140C, 0x1416, 0x1424,\n    0x1435, 0x144A, 0x1460, 0x1479, 0x1494, 0x14B1, 0x14CF, 0x14ED,\n    0x150D, 0x152D, 0x154C, 0x156C, 0x158A, 0x15A8, 0x15C5, 0x15DF,\n    0x15F8, 0x160F, 0x1623, 0x1634, 0x1642, 0x164C, 0x1652, 0xF80C,\n    0xF80B, 0xF808, 0xF803, 0xF7FC, 0xF7F4, 0xF7EB, 0xF7E0, 0xF7D4,\n    0xF7C7, 0xF7B9, 0xF7AB, 0xF79D, 0xF78E, 0xF77E, 0xF76F, 0xF761,\n    0xF752, 0xF745, 0xF738, 0xF72D, 0xF722, 0xF71A, 0xF713, 0xF70E,\n    0xF70B, 0xF70A, 0xF70C, 0xF711, 0xF719, 0xF723, 0xF72F, 0xF73D,\n    0xF74C, 0xF75C, 0xF76D, 0xF77E, 0xF78F, 0xF79F, 0xF7B0, 0xF7BF,\n    0xF7CE, 0xF7DB, 0xF7E7, 0xF7F2, 0xF7FB, 0xF802, 0xF807, 0xF80B,\n    0x1B5D, 0x1B5F, 0x1B64, 0x1B6C, 0x1B77, 0x1B85, 0x1B94, 0x1BA6,\n    0x1BBA, 0x1BCF, 0x1BE6, 0x1BFD, 0x1C16, 0x1C2F, 0x1C49, 0x1C63,\n    0x1C7C, 0x1C95, 0x1CAE, 0x1CC5, 0x1CDA, 0x1CEE, 0x1D00, 0x1D0E,\n    0x1D19, 0x1D21, 0x1D24, 0x1D22, 0x1D1A, 0x1D0D, 0x1CFC, 0x1CE8,\n    0x1CD0, 0x1CB5, 0x1C99, 0x1C7B, 0x1C5D, 0x1C3F, 0x1C21, 0x1C04,\n    0x1BE8, 0x1BCE, 0x1BB6, 0x1BA0, 0x1B8D, 0x1B7D, 0x1B70, 0x1B66,\n    0x1B60, 0xE69B, 0xE6A1, 0xE6B4, 0xE6D3, 0xE6FC, 0xE72E, 0xE76A,\n    0xE7AF, 0xE7FB, 0xE84E, 0xE8A8, 0xE907, 0xE96A, 0xE9D2, 0xEA3C,\n    0xEAA7, 0xEB12, 0xEB7C, 0xEBE2, 0xEC42, 0xEC9A, 0xECE8, 0xED2A,\n    0xED5F, 0xED84, 0xED98, 0xED98, 0xED81, 0xED52, 0xED10, 0xECBC,\n    0xEC5A, 0xEBEF, 0xEB7D, 0xEB07, 0xEA90, 0xEA1A, 0xE9A7, 0xE938,\n    0xE8CF, 0xE86D, 0xE812, 0xE7BF, 0xE776, 0xE736, 0xE700, 0xE6D5,\n    0xE6B5, 0xE6A2, 0xC9D6, 0xC9D8, 0xC9DD, 0xC9E5, 0xC9EF, 0xC9FC,\n    0xCA0B, 0xCA1C, 0xCA2E, 0xCA41, 0xCA54, 0xCA68, 0xCA7C, 0xCA90,\n    0xCAA3, 0xCAB4, 0xCAC4, 0xCAD2, 0xCADE, 0xCAE7, 0xCAEC, 0xCAEE,\n    0xCAED, 0xCAEA, 0xCAE5, 0xCADE, 0xCAD5, 0xCACB, 0xCAC0, 0xCAB4,\n    0xCAA7, 0xCA99, 0xCA8B, 0xCA7C, 0xCA6D, 0xCA5E, 0xCA4F, 0xCA41,\n    0xCA32, 0xCA24, 0xCA17, 0xCA0B, 0xCA00, 0xC9F5, 0xC9EC, 0xC9E5,\n    0xC9DE, 0xC9DA, 0xC9D7, 0xE0D2, 0xE0D3, 0xE0D6, 0xE0DA, 0xE0E0,\n    0xE0E8, 0xE0F0, 0xE0F9, 0xE103, 0xE10E, 0xE119, 0xE124, 0xE12F,\n    0xE13A, 0xE144, 0xE14E, 0xE156, 0xE15E, 0xE164, 0xE169, 0xE16C,\n    0xE16D, 0xE16D, 0xE16B, 0xE168, 0xE164, 0xE160, 0xE15A, 0xE154,\n    0xE14E, 0xE147, 0xE13F, 0xE137, 0xE12F, 0xE127, 0xE11E, 0xE116,\n    0xE10E, 0xE106, 0xE0FE, 0xE0F7, 0xE0F0, 0xE0EA, 0xE0E4, 0xE0DF,\n    0xE0DA, 0xE0D7, 0xE0D4, 0xE0D2, 0xF87E, 0xF87D, 0xF87B, 0xF877,\n    0xF873, 0xF86D, 0xF866, 0xF85F, 0xF857, 0xF84F, 0xF847, 0xF83E,\n    0xF835, 0xF82D, 0xF825, 0xF81E, 0xF817, 0xF811, 0xF80C, 0xF808,\n    0xF806, 0xF805, 0xF806, 0xF807, 0xF809, 0xF80C, 0xF810, 0xF814,\n    0xF818, 0xF81E, 0xF823, 0xF829, 0xF82F, 0xF835, 0xF83C, 0xF842,\n    0xF849, 0xF84F, 0xF855, 0xF85B, 0xF861, 0xF866, 0xF86B, 0xF870,\n    0xF874, 0xF877, 0xF87A, 0xF87C, 0xF87D, 0x0C47, 0x0C44, 0x0C3C,\n    0x0C2E, 0x0C1C, 0x0C06, 0x0BED, 0x0BD1, 0x0BB3, 0x0B93, 0x0B73,\n    0x0B52, 0x0B32, 0x0B12, 0x0AF4, 0x0AD8, 0x0ABF, 0x0AA8, 0x0A96,\n    0x0A88, 0x0A80, 0x0A7D, 0x0A7E, 0x0A83, 0x0A8B, 0x0A96, 0x0AA3,\n    0x0AB3, 0x0AC5, 0x0AD8, 0x0AED, 0x0B03, 0x0B1A, 0x0B32, 0x0B4A,\n    0x0B63, 0x0B7B, 0x0B93, 0x0BAB, 0x0BC2, 0x0BD8, 0x0BED, 0x0C00,\n    0x0C11, 0x0C21, 0x0C2E, 0x0C39, 0x0C41, 0x0C45, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0446, 0x088C, 0x0CD2,\n    0x1118, 0x155E, 0x1118, 0x0CD2, 0x088C, 0x0446, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xFC75, 0xF8E9, 0xF55E, 0xF1D2, 0xEE47,\n    0xF1D2, 0xF55E, 0xF8E9, 0xFC75, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x7C66, 0x78CD, 0x7534, 0x719C, 0x6E03, 0x719C, 0x7534, 0x78CD,\n    0x7C66, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8459, 0x88B1,\n    0x8D09, 0x9161, 0x95B9, 0x9161, 0x8D09, 0x88B1, 0x8459, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x0F51, 0x0F52, 0x0F56, 0x0F5C, 0x0F64, 0x0F6E,\n    0x0F79, 0x0F84, 0x0F91, 0x0F9D, 0x0FAA, 0x0FB6, 0x0FC2, 0x0FCC,\n    0x0FD6, 0x0FDF, 0x0FE6, 0x0FED, 0x0FF1, 0x0FF4, 0x0FF6, 0x0FF6,\n    0x0FF5, 0x0FF3, 0x0FF0, 0x0FEC, 0x0FE8, 0x0FE4, 0x0FDF, 0x0FDB,\n    0x0FD5, 0x0FD0, 0x0FCB, 0x0FC5, 0x0FBF, 0x0FB9, 0x0FB3, 0x0FAD,\n    0x0FA6, 0x0F9F, 0x0F97, 0x0F8E, 0x0F85, 0x0F7B, 0x0F71, 0x0F67,\n    0x0F5E, 0x0F57, 0x0F52, 0xEE85, 0xEE86, 0xEE88, 0xEE8D, 0xEE93,\n    0xEE9C, 0xEEA7, 0xEEB5, 0xEEC5, 0xEED8, 0xEEEE, 0xEF07, 0xEF23,\n    0xEF43, 0xEF65, 0xEF8A, 0xEFB2, 0xEFDC, 0xF00A, 0xF03A, 0xF06C,\n    0xF0A1, 0xF0D7, 0xF10D, 0xF143, 0xF177, 0xF1A9, 0xF1DA, 0xF207,\n    0xF231, 0xF257, 0xF279, 0xF296, 0xF2AE, 0xF2C0, 0xF2BE, 0xF2A0,\n    0xF268, 0xF21D, 0xF1C1, 0xF15B, 0xF0ED, 0xF07D, 0xF00F, 0xEFA6,\n    0xEF48, 0xEEF9, 0xEEBB, 0xEE93, 0xE134, 0xE13A, 0xE14B, 0xE168,\n    0xE18E, 0xE1BD, 0xE1F4, 0xE232, 0xE276, 0xE2BF, 0xE30C, 0xE35D,\n    0xE3B0, 0xE404, 0xE459, 0xE4AE, 0xE502, 0xE553, 0xE5A2, 0xE5EE,\n    0xE635, 0xE677, 0xE6B4, 0xE6ED, 0xE721, 0xE750, 0xE77A, 0xE79F,\n    0xE7BD, 0xE7D6, 0xE7E8, 0xE7F4, 0xE7F9, 0xE7F7, 0xE7ED, 0xE7CD,\n    0xE78B, 0xE72B, 0xE6B3, 0xE626, 0xE58B, 0xE4E7, 0xE43E, 0xE397,\n    0xE2F7, 0xE266, 0xE1EA, 0xE189, 0xE14A, 0xCFD6, 0xCFD8, 0xCFDD,\n    0xCFE6, 0xCFF1, 0xCFFE, 0xD00E, 0xD01F, 0xD032, 0xD046, 0xD05B,\n    0xD070, 0xD085, 0xD099, 0xD0AD, 0xD0C0, 0xD0D1, 0xD0DF, 0xD0EC,\n    0xD0F5, 0xD0FB, 0xD0FD, 0xD0FC, 0xD0F8, 0xD0F3, 0xD0EC, 0xD0E3,\n    0xD0D8, 0xD0CD, 0xD0C0, 0xD0B2, 0xD0A3, 0xD094, 0xD085, 0xD075,\n    0xD065, 0xD056, 0xD046, 0xD037, 0xD029, 0xD01B, 0xD00E, 0xD002,\n    0xCFF7, 0xCFEE, 0xCFE6, 0xCFDF, 0xCFDA, 0xCFD7, 0x1E64, 0x1E63,\n    0x1E5E, 0x1E57, 0x1E4D, 0x1E41, 0x1E33, 0x1E24, 0x1E14, 0x1E03,\n    0x1DF1, 0x1DDF, 0x1DCD, 0x1DBB, 0x1DAA, 0x1D9A, 0x1D8C, 0x1D7F,\n    0x1D75, 0x1D6D, 0x1D68, 0x1D66, 0x1D67, 0x1D6A, 0x1D6F, 0x1D75,\n    0x1D7D, 0x1D85, 0x1D8F, 0x1D9A, 0x1DA6, 0x1DB2, 0x1DBF, 0x1DCD,\n    0x1DDA, 0x1DE8, 0x1DF5, 0x1E03, 0x1E10, 0x1E1C, 0x1E28, 0x1E33,\n    0x1E3E, 0x1E47, 0x1E50, 0x1E57, 0x1E5C, 0x1E61, 0x1E63, 0x1C2C,\n    0x1C2C, 0x1C2D, 0x1C2E, 0x1C30, 0x1C32, 0x1C34, 0x1C36, 0x1C39,\n    0x1C3C, 0x1C3E, 0x1C41, 0x1C44, 0x1C47, 0x1C4A, 0x1C4C, 0x1C4E,\n    0x1C50, 0x1C52, 0x1C53, 0x1C54, 0x1C54, 0x1C54, 0x1C54, 0x1C53,\n    0x1C52, 0x1C51, 0x1C4F, 0x1C4E, 0x1C4C, 0x1C4A, 0x1C48, 0x1C46,\n    0x1C44, 0x1C42, 0x1C40, 0x1C3E, 0x1C3C, 0x1C39, 0x1C37, 0x1C36,\n    0x1C34, 0x1C32, 0x1C31, 0x1C2F, 0x1C2E, 0x1C2D, 0x1C2D, 0x1C2C,\n    0x11D7, 0x11D2, 0x11C4, 0x11AE, 0x1191, 0x116E, 0x1145, 0x1118,\n    0x10E8, 0x10B5, 0x1081, 0x104D, 0x1019, 0x0FE6, 0x0FB6, 0x0F89,\n    0x0F61, 0x0F3D, 0x0F20, 0x0F0A, 0x0EFC, 0x0EF8, 0x0EFA, 0x0F02,\n    0x0F0F, 0x0F20, 0x0F36, 0x0F4E, 0x0F6A, 0x0F89, 0x0FAB, 0x0FCE,\n    0x0FF3, 0x1019, 0x1040, 0x1067, 0x108F, 0x10B5, 0x10DC, 0x1100,\n    0x1124, 0x1145, 0x1164, 0x1180, 0x1199, 0x11AE, 0x11BF, 0x11CC,\n    0x11D4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0446, 0x088C, 0x0CD2, 0x1118, 0x155E, 0x1118, 0x0CD2, 0x088C,\n    0x0446, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFC75, 0xF8E9,\n    0xF55E, 0xF1D2, 0xEE47, 0xF1D2, 0xF55E, 0xF8E9, 0xFC75, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x7C66, 0x78CD, 0x7534, 0x719C, 0x6E03,\n    0x719C, 0x7534, 0x78CD, 0x7C66, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8459, 0x88B1, 0x8D09, 0x9161, 0x95B9, 0x9161, 0x8D09,\n    0x88B1, 0x8459, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x0000, 0x0019, 0x0043,\n    0x007D, 0x00C2, 0x0110, 0x0164, 0x01BA, 0x0212, 0x0266, 0x02B5,\n    0x02FC, 0x0338, 0x0365, 0x0382, 0x038A, 0x037C, 0x0353, 0x030F,\n    0x02B3, 0x0245, 0x01C7, 0x013E, 0x00AC, 0x0017, 0xFF83, 0xFEF2,\n    0xFE68, 0xFDEA, 0xFD7B, 0xFD20, 0xFCDB, 0xFCB1, 0xFCA1, 0xFCA4,\n    0xFCB9, 0xFCDE, 0xFD0F, 0xFD4A, 0xFD8E, 0xFDD8, 0xFE26, 0xFE74,\n    0xFEC2, 0xFF0D, 0xFF52, 0xFF8F, 0xFFC2, 0xFFE9, 0x2108, 0x222C,\n    0x2497, 0x26FD, 0x2812, 0x255F, 0x1F72, 0x1982, 0x16CB, 0x17DD,\n    0x1A98, 0x1E27, 0x21B6, 0x2471, 0x2583, 0x2578, 0x2567, 0x2552,\n    0x2538, 0x251A, 0x24F8, 0x24D3, 0x24AA, 0x247F, 0x2452, 0x2422,\n    0x23F1, 0x23BF, 0x238C, 0x2358, 0x2324, 0x22F0, 0x22BD, 0x228B,\n    0x225A, 0x222A, 0x21FD, 0x21D2, 0x21AA, 0x2184, 0x2163, 0x2144,\n    0x212B, 0x2115, 0x2105, 0x20F9, 0x20F4, 0x20F4, 0x20FB, 0xC001,\n    0xC001, 0x3FFF, 0x3FFF, 0x0000,\n};\n\n// 0x06006A14\nstatic const u16 skeeter_seg6_animindex_06006A14[] = {\n    0x0001, 0x0000, 0x0031, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0032, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x065A, 0x0001, 0x0000,\n    0x0031, 0x00C6, 0x0031, 0x00F7, 0x0031, 0x0128,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0031, 0x0095,\n    0x0001, 0x0000, 0x0031, 0x0033, 0x0031, 0x0064,\n    0x0001, 0x0000, 0x0001, 0x0659, 0x0001, 0x0000,\n    0x0031, 0x01EC, 0x0031, 0x021D, 0x0031, 0x024E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0031, 0x01BB,\n    0x0001, 0x0000, 0x0031, 0x0159, 0x0031, 0x018A,\n    0x0001, 0x0000, 0x0001, 0x0658, 0x0001, 0x0000,\n    0x0031, 0x0343, 0x0031, 0x0374, 0x0031, 0x03A5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0031, 0x0312,\n    0x0031, 0x027F, 0x0031, 0x02B0, 0x0031, 0x02E1,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0031, 0x0591, 0x0001, 0x05C2,\n    0x0001, 0x0000, 0x0031, 0x03D6, 0x0001, 0x0407,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x05C3, 0x0031, 0x05C4, 0x0001, 0x0000,\n    0x0001, 0x0408, 0x0031, 0x0409, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0657, 0x0001, 0x0000,\n    0x0031, 0x04FE, 0x0031, 0x052F, 0x0031, 0x0560,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0031, 0x04CD,\n    0x0031, 0x043A, 0x0031, 0x046B, 0x0031, 0x049C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0031, 0x05F5, 0x0031, 0x0626,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x06006B70\nstatic const struct Animation skeeter_seg6_anim_06006B70 = {\n    0,\n    0,\n    0,\n    0,\n    0x31,\n    ANIMINDEX_NUMPARTS(skeeter_seg6_animindex_06006A14),\n    skeeter_seg6_animvalue_06005D5C,\n    skeeter_seg6_animindex_06006A14,\n    0,\n};\n"
  },
  {
    "path": "actors/skeeter/anims/anim_060071E0.inc.c",
    "content": "// 0x06006B88\nstatic const s16 skeeter_seg6_animvalue_06006B88[] = {\n    0x0000, 0x014A, 0x0155, 0x0160, 0x016B, 0x0176, 0x0171, 0x0166,\n    0x0159, 0x014E, 0x014A, 0x0152, 0x015B, 0x0164, 0x016D, 0x0176,\n    0x0171, 0x0166, 0x0159, 0x014E, 0x3FFF, 0x0AB1, 0x0C66, 0x0E3A,\n    0x1017, 0x11E4, 0x1304, 0x139E, 0x13C2, 0x1397, 0x10A2, 0x0B96,\n    0x06D0, 0x04F3, 0x063A, 0x07F4, 0x0855, 0x0882, 0x08EA, 0x09A0,\n    0xF1F0, 0xF23C, 0xF257, 0xF246, 0xF215, 0xF0D6, 0xEF30, 0xED81,\n    0xEC2C, 0xE9C6, 0xE767, 0xE547, 0xE4F2, 0xE840, 0xEDEC, 0xF25D,\n    0xF41E, 0xF354, 0xF283, 0xADD3, 0xAF5A, 0xB141, 0xB37A, 0xB5EF,\n    0xB7B7, 0xB922, 0xBA36, 0xBAEF, 0xB91D, 0xB591, 0xB229, 0xAFED,\n    0xAE39, 0xAD7B, 0xADC5, 0xAE15, 0xAD87, 0xAD5D, 0xEA25, 0xE81E,\n    0xE625, 0xE45F, 0xE2E9, 0xE131, 0xDF90, 0xDE35, 0xDD51, 0xDCC1,\n    0xDDE2, 0xE07E, 0xE375, 0xE6C8, 0xEB28, 0xEEC8, 0xEFCF, 0xEE5F,\n    0xEC64, 0xF8BA, 0xF778, 0xF5FC, 0xF456, 0xF29A, 0xF111, 0xEFBB,\n    0xEEAA, 0xEDF4, 0xEECD, 0xF128, 0xF3CD, 0xF5D2, 0xF796, 0xF92A,\n    0xFA29, 0xFA63, 0xFA1D, 0xF993, 0x1F7B, 0x1D80, 0x1B5C, 0x191C,\n    0x16D0, 0x1651, 0x16AD, 0x1780, 0x185E, 0x1D55, 0x245A, 0x2AA9,\n    0x2CFC, 0x2A30, 0x2459, 0x1F71, 0x1D5A, 0x1E9F, 0x1F7F, 0xEE15,\n    0xF00E, 0xF38E, 0xF6D4, 0xF797, 0xF50A, 0xEF1A, 0xE855, 0xE4DD,\n    0xE4C4, 0xE470, 0xE48A, 0xE503, 0xE5CD, 0xE6D5, 0xE838, 0xE9C7,\n    0xEB68, 0xECEC, 0xF81B, 0xF4EA, 0xEEF0, 0xE9C8, 0xE7D3, 0xE908,\n    0xEC83, 0xF0FB, 0xF405, 0xF457, 0xF614, 0xF7CD, 0xF96F, 0xFAEC,\n    0xFC39, 0xFC1D, 0xFB44, 0xFA0C, 0xF8DC, 0xA67F, 0xA76F, 0xA9CE,\n    0xAD0F, 0xAF83, 0xB034, 0xB0CA, 0xB1B6, 0xB1E9, 0xB0C2, 0xAFEA,\n    0xAEEA, 0xADDB, 0xACD6, 0xABF2, 0xAA82, 0xA8F7, 0xA79C, 0xA6B5,\n    0x1D6A, 0x1D57, 0x1DFF, 0x1E92, 0x1F5C, 0x21B8, 0x24C9, 0x26CF,\n    0x276D, 0x27B1, 0x26F0, 0x25E9, 0x24A3, 0x2327, 0x2181, 0x2077,\n    0x1FAD, 0x1EF8, 0x1E3D, 0x056B, 0x05EC, 0x0755, 0x0936, 0x0ABB,\n    0x0BB7, 0x0CCB, 0x0DCF, 0x0E11, 0x0D6A, 0x0CBC, 0x0BE8, 0x0B01,\n    0x0A17, 0x093B, 0x0833, 0x072C, 0x0648, 0x05A8, 0x1DC5, 0x2094,\n    0x2585, 0x292E, 0x298D, 0x2712, 0x20FD, 0x196B, 0x1549, 0x15BE,\n    0x14C9, 0x1425, 0x13C5, 0x139A, 0x1391, 0x152F, 0x1796, 0x1A3B,\n    0x1C81, 0xF5B3, 0xF5D3, 0xF609, 0xF64E, 0xF69C, 0xF6DC, 0xF712,\n    0xF740, 0xF766, 0xF782, 0xF794, 0xF7EE, 0xF899, 0xF8E3, 0xF833,\n    0xF708, 0xF5F6, 0xF588, 0xF597, 0x213A, 0x209A, 0x1FB3, 0x1E8C,\n    0x1D33, 0x1BEC, 0x1AB5, 0x1996, 0x189B, 0x17DC, 0x17BB, 0x1760,\n    0x164E, 0x164B, 0x1954, 0x1D7B, 0x20AC, 0x21D4, 0x21A6, 0xF3EE,\n    0xF60A, 0xF827, 0xFA2F, 0xFC0D, 0xFC79, 0xFC29, 0xFB69, 0xFA97,\n    0xFA1D, 0xF6A5, 0xEF8F, 0xE8F5, 0xE62B, 0xE87A, 0xECB1, 0xF122,\n    0xF389, 0xF35E, 0xB600, 0xB44F, 0xB27B, 0xB0AE, 0xAF09, 0xACD2,\n    0xAA96, 0xA8A0, 0xA737, 0xA699, 0xA6F1, 0xA8E3, 0xAC46, 0xAF7B,\n    0xB24B, 0xB5B1, 0xB8E4, 0xB9CB, 0xB803, 0xD28F, 0xD3CF, 0xD555,\n    0xD71B, 0xD913, 0xDA94, 0xDBF1, 0xDD3B, 0xDE6D, 0xDF6C, 0xDEA6,\n    0xDC22, 0xD999, 0xD798, 0xD55C, 0xD357, 0xD287, 0xD275, 0xD23B,\n    0xF99E, 0xFAD6, 0xFC3F, 0xFDBA, 0xFF2B, 0x0126, 0x033B, 0x0528,\n    0x06A8, 0x0778, 0x07F1, 0x07AF, 0x062F, 0x0404, 0x00B6, 0xFC4D,\n    0xF850, 0xF6E9, 0xF826, 0x1023, 0x0FD9, 0x0FB7, 0x0FB5, 0x0FC7,\n    0x1137, 0x1342, 0x1581, 0x1778, 0x1896, 0x1AEF, 0x1EBD, 0x219D,\n    0x2189, 0x1CBF, 0x1643, 0x109E, 0x0E4D, 0x0F5C, 0x0000, 0x0376,\n    0x06ED, 0x0A63, 0x0DDA, 0x0B14, 0x084F, 0x058A, 0x02C5, 0x0000,\n    0xFC94, 0xF928, 0xF5BC, 0xF250, 0xEEE4, 0xF250, 0xF5BC, 0xF928,\n    0xFC94, 0x8001, 0x8001, 0x8001, 0x7C88, 0x7911, 0x759B, 0x7224,\n    0x74EA, 0x77AF, 0x7A74, 0x7D39, 0x8001, 0x8468, 0x88CE, 0x8D35,\n    0x919B, 0x9602, 0x919B, 0x8D35, 0x88CE, 0x8468, 0x15AB, 0x16A5,\n    0x1846, 0x19A5, 0x18F9, 0x1728, 0x1537, 0x145C, 0x149B, 0x14A2,\n    0x1451, 0x1426, 0x1417, 0x1419, 0x1421, 0x145D, 0x14A7, 0x14EB,\n    0x151C, 0xE7BC, 0xE588, 0xE29F, 0xE0BF, 0xE1EA, 0xE517, 0xE9B2,\n    0xEC72, 0xEB9E, 0xEB8F, 0xECAD, 0xED49, 0xED7B, 0xED69, 0xED34,\n    0xEC3A, 0xEB18, 0xEA12, 0xE956, 0xEBAA, 0xEA3B, 0xE8B0, 0xE8F2,\n    0xED6B, 0xF2D0, 0xF6B7, 0xF7FF, 0xF758, 0xF6AE, 0xF66D, 0xF5FE,\n    0xF55B, 0xF488, 0xF392, 0xF203, 0xF041, 0xEE94, 0xED4A, 0xB878,\n    0xB52A, 0xB1E7, 0xAF9A, 0xAD62, 0xAB31, 0xAA12, 0xA9B2, 0xA93D,\n    0xA976, 0xAABC, 0xAC74, 0xAE99, 0xB118, 0xB3D4, 0xB5FB, 0xB7BD,\n    0xB91D, 0xBA12, 0xF95B, 0xF0B5, 0xE5D0, 0xDD4F, 0xD675, 0xCFE9,\n    0xCC92, 0xCD49, 0xCF5D, 0xD362, 0xD982, 0xE00C, 0xE69C, 0xECDF,\n    0xF292, 0xF69D, 0xF993, 0xFB9D, 0xFCC9, 0xDB61, 0xDA1D, 0xDA13,\n    0xDAE6, 0xDB55, 0xDBB3, 0xDB63, 0xDB19, 0xDB92, 0xDB7A, 0xDAC9,\n    0xDA5C, 0xDA37, 0xDA5C, 0xDAC1, 0xDB41, 0xDBB7, 0xDC11, 0xDC3D,\n    0x28AA, 0x33D6, 0x4140, 0x4A70, 0x4DFE, 0x4F3F, 0x4CCE, 0x4963,\n    0x48CD, 0x45D5, 0x3FA4, 0x3964, 0x3348, 0x2D7A, 0x281D, 0x254E,\n    0x23CE, 0x231E, 0x22EB, 0x0000, 0x0376, 0x06ED, 0x0A63, 0x0DDA,\n    0x0B14, 0x084F, 0x058A, 0x02C5, 0x0000, 0xFC94, 0xF928, 0xF5BC,\n    0xF250, 0xEEE4, 0xF250, 0xF5BC, 0xF928, 0xFC94, 0x8001, 0x8001,\n    0x8001, 0x7C88, 0x7911, 0x759B, 0x7224, 0x74EA, 0x77AF, 0x7A74,\n    0x7D39, 0x8001, 0x8468, 0x88CE, 0x8D35, 0x919B, 0x9602, 0x919B,\n    0x8D35, 0x88CE, 0x8468, 0x0000, 0xFDD1, 0xFB7C, 0xF960, 0xF7D8,\n    0xF741, 0xF7E0, 0xF979, 0xFBA1, 0xFDF1, 0x0000, 0x021B, 0x0488,\n    0x06D3, 0x0888, 0x0934, 0x0823, 0x0599, 0x028F, 0x2108, 0x2240,\n    0x2528, 0x28A0, 0x2B88, 0x2CC0, 0x2B88, 0x28A0, 0x2528, 0x2240,\n    0x2108, 0x2240, 0x2528, 0x28A0, 0x2B88, 0x2CC0, 0x2AEB, 0x26E4,\n    0x22DD, 0x030E, 0xC001, 0x030E, 0x3FFF, 0x3FFF,\n};\n\n// 0x06007084\nstatic const u16 skeeter_seg6_animindex_06007084[] = {\n    0x0001, 0x0000, 0x0013, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0014, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x027D, 0x0001, 0x0000,\n    0x0013, 0x004E, 0x0013, 0x0061, 0x0013, 0x0074,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0013, 0x003B,\n    0x0001, 0x0000, 0x0013, 0x0015, 0x0013, 0x0028,\n    0x0001, 0x0000, 0x0001, 0x027C, 0x0001, 0x0000,\n    0x0013, 0x00C0, 0x0013, 0x00D3, 0x0013, 0x00E6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0013, 0x00AD,\n    0x0001, 0x0000, 0x0013, 0x0087, 0x0013, 0x009A,\n    0x0001, 0x0279, 0x0001, 0x027A, 0x0001, 0x027B,\n    0x0013, 0x0145, 0x0013, 0x0158, 0x0013, 0x016B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0013, 0x0132,\n    0x0013, 0x00F9, 0x0013, 0x010C, 0x0013, 0x011F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0013, 0x022B, 0x0001, 0x023E,\n    0x0001, 0x0000, 0x0013, 0x017E, 0x0001, 0x0191,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x023F, 0x0013, 0x0240, 0x0001, 0x0000,\n    0x0001, 0x0192, 0x0013, 0x0193, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0013, 0x01F2, 0x0013, 0x0205, 0x0013, 0x0218,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0013, 0x01DF,\n    0x0013, 0x01A6, 0x0013, 0x01B9, 0x0013, 0x01CC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0013, 0x0253, 0x0013, 0x0266,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x060071E0\nstatic const struct Animation skeeter_seg6_anim_060071E0 = {\n    0,\n    0,\n    0,\n    0,\n    0x13,\n    ANIMINDEX_NUMPARTS(skeeter_seg6_animindex_06007084),\n    skeeter_seg6_animvalue_06006B88,\n    skeeter_seg6_animindex_06007084,\n    0,\n};\n"
  },
  {
    "path": "actors/skeeter/anims/anim_06007DC8.inc.c",
    "content": "// 0x060071F8\nstatic const s16 skeeter_seg6_animvalue_060071F8[] = {\n    0x0000, 0x014A, 0x014C, 0x014F, 0x0152, 0x0154, 0x0157, 0x015A,\n    0x015D, 0x015F, 0x0162, 0x0165, 0x0168, 0x016A, 0x016D, 0x0170,\n    0x0173, 0x0175, 0x0178, 0x017B, 0x017E, 0x017D, 0x017C, 0x017A,\n    0x0178, 0x0175, 0x0172, 0x016F, 0x016B, 0x0167, 0x0164, 0x0160,\n    0x015C, 0x0158, 0x0155, 0x0152, 0x014F, 0x014D, 0x014B, 0x014A,\n    0x0000, 0x0005, 0x000A, 0x000F, 0x0014, 0x0019, 0x001E, 0x0023,\n    0x0028, 0x002D, 0x0032, 0x0038, 0x003D, 0x0042, 0x0047, 0x004C,\n    0x0051, 0x0056, 0x005B, 0x0060, 0x0060, 0x005E, 0x005A, 0x0056,\n    0x0051, 0x004B, 0x0045, 0x003E, 0x0037, 0x0030, 0x0029, 0x0022,\n    0x001B, 0x0014, 0x000F, 0x000A, 0x0005, 0x0002, 0x0000, 0x3FFF,\n    0x0AB1, 0x0AEB, 0x0B25, 0x0B5F, 0x0B99, 0x0BD2, 0x0C0B, 0x0C44,\n    0x0C7D, 0x0CB5, 0x0CED, 0x0D25, 0x0D5C, 0x0D93, 0x0DCA, 0x0E00,\n    0x0E36, 0x0E6C, 0x0EA1, 0x0ED6, 0x0ECF, 0x0EBA, 0x0E99, 0x0E6D,\n    0x0E38, 0x0DFB, 0x0DB7, 0x0D6D, 0x0D20, 0x0CD1, 0x0C81, 0x0C33,\n    0x0BE6, 0x0B9F, 0x0B5D, 0x0B24, 0x0AF4, 0x0AD0, 0x0AB9, 0xF1F0,\n    0xF1F6, 0xF1FB, 0xF1FF, 0xF202, 0xF203, 0xF204, 0xF203, 0xF201,\n    0xF1FF, 0xF1FB, 0xF1F6, 0xF1F0, 0xF1E9, 0xF1E1, 0xF1D8, 0xF1CE,\n    0xF1C3, 0xF1B7, 0xF1A9, 0xF1AB, 0xF1B1, 0xF1B8, 0xF1C2, 0xF1CD,\n    0xF1D9, 0xF1E4, 0xF1EE, 0xF1F6, 0xF1FD, 0xF201, 0xF203, 0xF203,\n    0xF202, 0xF1FF, 0xF1FB, 0xF1F7, 0xF1F3, 0xF1F1, 0xADD3, 0xAE3D,\n    0xAEA8, 0xAF14, 0xAF81, 0xAFF0, 0xB060, 0xB0D1, 0xB143, 0xB1B7,\n    0xB22B, 0xB2A1, 0xB319, 0xB391, 0xB40B, 0xB485, 0xB502, 0xB57F,\n    0xB5FE, 0xB67D, 0xB66C, 0xB639, 0xB5EA, 0xB582, 0xB505, 0xB479,\n    0xB3DF, 0xB33E, 0xB298, 0xB1F1, 0xB14C, 0xB0AD, 0xB017, 0xAF8D,\n    0xAF11, 0xAEA5, 0xAE4D, 0xAE0C, 0xADE2, 0xEA25, 0xE9EB, 0xE9B3,\n    0xE97C, 0xE947, 0xE914, 0xE8E2, 0xE8B2, 0xE884, 0xE857, 0xE82B,\n    0xE802, 0xE7D9, 0xE7B3, 0xE78E, 0xE76A, 0xE748, 0xE727, 0xE708,\n    0xE6EB, 0xE6EF, 0xE6FA, 0xE70D, 0xE727, 0xE747, 0xE76E, 0xE79B,\n    0xE7CD, 0xE805, 0xE841, 0xE880, 0xE8C1, 0xE902, 0xE942, 0xE97E,\n    0xE9B4, 0xE9E2, 0xEA06, 0xEA1D, 0xF8BA, 0xF87E, 0xF840, 0xF802,\n    0xF7C3, 0xF784, 0xF744, 0xF704, 0xF6C3, 0xF681, 0xF63F, 0xF5FC,\n    0xF5B9, 0xF575, 0xF531, 0xF4ED, 0xF4A7, 0xF462, 0xF41C, 0xF3D6,\n    0xF3DF, 0xF3FB, 0xF427, 0xF460, 0xF4A5, 0xF4F4, 0xF549, 0xF5A4,\n    0xF602, 0xF660, 0xF6BD, 0xF718, 0xF76E, 0xF7BD, 0xF804, 0xF842,\n    0xF874, 0xF89A, 0xF8B2, 0x1F7B, 0x1F0B, 0x1E9B, 0x1E2B, 0x1DBB,\n    0x1D4C, 0x1CDD, 0x1C6E, 0x1BFF, 0x1B90, 0x1B21, 0x1AB3, 0x1A44,\n    0x19D6, 0x1968, 0x18F9, 0x188B, 0x181D, 0x17AF, 0x1741, 0x1750,\n    0x177B, 0x17C0, 0x181A, 0x1888, 0x1905, 0x198E, 0x1A22, 0x1ABB,\n    0x1B58, 0x1BF6, 0x1C90, 0x1D25, 0x1DB0, 0x1E2E, 0x1E9D, 0x1EF9,\n    0x1F3F, 0x1F6B, 0xEE15, 0xEE2E, 0xEE49, 0xEE67, 0xEE87, 0xEEAA,\n    0xEED0, 0xEEF9, 0xEF25, 0xEF53, 0xEF83, 0xEFB6, 0xEFEC, 0xF024,\n    0xF05F, 0xF09C, 0xF0DB, 0xF11C, 0xF160, 0xF1A6, 0xF19C, 0xF181,\n    0xF156, 0xF11E, 0xF0DD, 0xF095, 0xF04A, 0xEFFD, 0xEFB2, 0xEF6B,\n    0xEF28, 0xEEEC, 0xEEB8, 0xEE8B, 0xEE66, 0xEE48, 0xEE32, 0xEE22,\n    0xEE19, 0xF81B, 0xF88F, 0xF903, 0xF975, 0xF9E7, 0xFA58, 0xFAC8,\n    0xFB37, 0xFBA4, 0xFC11, 0xFC7C, 0xFCE6, 0xFD4F, 0xFDB6, 0xFE1C,\n    0xFE80, 0xFEE3, 0xFF44, 0xFFA4, 0x0001, 0xFFF5, 0xFFD0, 0xFF95,\n    0xFF47, 0xFEE6, 0xFE76, 0xFDF8, 0xFD6F, 0xFCDE, 0xFC47, 0xFBAD,\n    0xFB14, 0xFA80, 0xF9F3, 0xF972, 0xF900, 0xF8A1, 0xF859, 0xF82B,\n    0xA67F, 0xA649, 0xA614, 0xA5E1, 0xA5B0, 0xA581, 0xA553, 0xA528,\n    0xA4FE, 0xA4D6, 0xA4B0, 0xA48C, 0xA46A, 0xA44A, 0xA42C, 0xA410,\n    0xA3F6, 0xA3DE, 0xA3C8, 0xA3B4, 0xA3B7, 0xA3BE, 0xA3CB, 0xA3DD,\n    0xA3F5, 0xA413, 0xA437, 0xA460, 0xA48F, 0xA4C3, 0xA4FB, 0xA535,\n    0xA570, 0xA5AB, 0xA5E3, 0xA615, 0xA641, 0xA662, 0xA678, 0x1D6A,\n    0x1CFB, 0x1C89, 0x1C17, 0x1BA3, 0x1B2D, 0x1AB7, 0x1A3E, 0x19C5,\n    0x194A, 0x18CF, 0x1852, 0x17D3, 0x1754, 0x16D4, 0x1653, 0x15D1,\n    0x154E, 0x14CA, 0x1445, 0x1458, 0x148C, 0x14DE, 0x154A, 0x15CD,\n    0x1660, 0x1701, 0x17AC, 0x185C, 0x190D, 0x19BB, 0x1A64, 0x1B04,\n    0x1B97, 0x1C1A, 0x1C8C, 0x1CE9, 0x1D2F, 0x1D5B, 0x056B, 0x053C,\n    0x050F, 0x04E3, 0x04B8, 0x048E, 0x0466, 0x043E, 0x0418, 0x03F4,\n    0x03D0, 0x03AE, 0x038D, 0x036D, 0x034F, 0x0331, 0x0315, 0x02FA,\n    0x02E0, 0x02C6, 0x02CA, 0x02D4, 0x02E4, 0x02F9, 0x0314, 0x0334,\n    0x0359, 0x0383, 0x03B1, 0x03E2, 0x0415, 0x044A, 0x0480, 0x04B3,\n    0x04E4, 0x0510, 0x0535, 0x0552, 0x0564, 0x1DC5, 0x1D96, 0x1D67,\n    0x1D39, 0x1D0A, 0x1CDD, 0x1CAF, 0x1C81, 0x1C54, 0x1C26, 0x1BF8,\n    0x1BCB, 0x1B9D, 0x1B6F, 0x1B40, 0x1B12, 0x1AE2, 0x1AB3, 0x1A83,\n    0x1A52, 0x1A59, 0x1A6C, 0x1A8A, 0x1AB2, 0x1AE1, 0x1B16, 0x1B51,\n    0x1B8E, 0x1BCE, 0x1C0F, 0x1C50, 0x1C8F, 0x1CCC, 0x1D06, 0x1D3A,\n    0x1D68, 0x1D8E, 0x1DAC, 0x1DBE, 0xF5B3, 0xF5B9, 0xF5C1, 0xF5C9,\n    0xF5D2, 0xF5DB, 0xF5E4, 0xF5EE, 0xF5F9, 0xF604, 0xF60F, 0xF61B,\n    0xF627, 0xF634, 0xF641, 0xF64E, 0xF65B, 0xF669, 0xF677, 0xF685,\n    0xF683, 0xF67D, 0xF675, 0xF669, 0xF65C, 0xF64D, 0xF63C, 0xF62B,\n    0xF61A, 0xF60A, 0xF5FA, 0xF5EB, 0xF5DE, 0xF5D2, 0xF5C9, 0xF5C1,\n    0xF5BB, 0xF5B6, 0xF5B3, 0x213A, 0x2116, 0x20F0, 0x20CA, 0x20A2,\n    0x2079, 0x204E, 0x2023, 0x1FF5, 0x1FC7, 0x1F97, 0x1F66, 0x1F33,\n    0x1EFF, 0x1EC9, 0x1E93, 0x1E5B, 0x1E21, 0x1DE6, 0x1DAA, 0x1DB2,\n    0x1DCA, 0x1DEF, 0x1E20, 0x1E59, 0x1E98, 0x1EDD, 0x1F23, 0x1F6A,\n    0x1FAF, 0x1FF2, 0x2030, 0x206A, 0x209E, 0x20CB, 0x20F1, 0x2110,\n    0x2127, 0x2135, 0xF3EE, 0xF468, 0xF4E2, 0xF55B, 0xF5D4, 0xF64B,\n    0xF6C2, 0xF737, 0xF7AC, 0xF820, 0xF892, 0xF904, 0xF974, 0xF9E3,\n    0xFA52, 0xFABF, 0xFB2A, 0xFB95, 0xFBFE, 0xFC66, 0xFC58, 0xFC2F,\n    0xFBEE, 0xFB97, 0xFB2E, 0xFAB3, 0xFA2B, 0xF997, 0xF8FB, 0xF859,\n    0xF7B5, 0xF713, 0xF675, 0xF5E0, 0xF558, 0xF4DF, 0xF47B, 0xF42F,\n    0xF3FF, 0xB600, 0xB5A4, 0xB54A, 0xB4F2, 0xB49B, 0xB445, 0xB3F1,\n    0xB39E, 0xB34D, 0xB2FD, 0xB2AF, 0xB262, 0xB217, 0xB1CD, 0xB184,\n    0xB13E, 0xB0F8, 0xB0B5, 0xB072, 0xB032, 0xB03B, 0xB054, 0xB07D,\n    0xB0B3, 0xB0F6, 0xB145, 0xB19E, 0xB1FF, 0xB268, 0xB2D6, 0xB346,\n    0xB3B8, 0xB427, 0xB492, 0xB4F5, 0xB54D, 0xB597, 0xB5CF, 0xB5F3,\n    0xD28F, 0xD2D9, 0xD324, 0xD370, 0xD3BD, 0xD40B, 0xD45A, 0xD4AA,\n    0xD4FB, 0xD54D, 0xD5A0, 0xD5F4, 0xD64A, 0xD6A0, 0xD6F7, 0xD74F,\n    0xD7A8, 0xD803, 0xD85E, 0xD8BA, 0xD8AD, 0xD889, 0xD850, 0xD805,\n    0xD7AB, 0xD746, 0xD6D8, 0xD664, 0xD5EE, 0xD577, 0xD502, 0xD491,\n    0xD427, 0xD3C5, 0xD36E, 0xD322, 0xD2E5, 0xD2B6, 0xD299, 0xF99E,\n    0xF9E1, 0xFA23, 0xFA65, 0xFAA6, 0xFAE6, 0xFB26, 0xFB65, 0xFBA4,\n    0xFBE1, 0xFC1E, 0xFC5A, 0xFC95, 0xFCD0, 0xFD0A, 0xFD43, 0xFD7B,\n    0xFDB3, 0xFDEA, 0xFE1F, 0xFE18, 0xFE03, 0xFDE1, 0xFDB4, 0xFD7D,\n    0xFD3D, 0xFCF6, 0xFCA8, 0xFC55, 0xFC00, 0xFBA8, 0xFB52, 0xFAFD,\n    0xFAAD, 0xFA63, 0xFA22, 0xF9EB, 0xF9C1, 0xF9A7, 0x1023, 0x100F,\n    0x0FFA, 0x0FE6, 0x0FD2, 0x0FBE, 0x0FAA, 0x0F96, 0x0F83, 0x0F70,\n    0x0F5D, 0x0F4A, 0x0F38, 0x0F25, 0x0F13, 0x0F01, 0x0EEF, 0x0EDD,\n    0x0ECB, 0x0EB9, 0x0EBB, 0x0EC2, 0x0ECD, 0x0EDC, 0x0EEE, 0x0F02,\n    0x0F19, 0x0F32, 0x0F4C, 0x0F66, 0x0F81, 0x0F9C, 0x0FB7, 0x0FCF,\n    0x0FE6, 0x0FFB, 0x100B, 0x1018, 0x1021, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x03D4, 0x07A8, 0x0B7D, 0x0F51, 0x1326, 0x0E5C, 0x0993, 0x04C9,\n    0x0000, 0x0000, 0x0000, 0x0000, 0xFCFD, 0xF9F9, 0xF6F5, 0xF3F1,\n    0xF0ED, 0xF4B2, 0xF877, 0xFC3C, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x7CA7, 0x7950, 0x75F9, 0x72A1, 0x6F4A, 0x7377, 0x77A4,\n    0x7BD1, 0x8001, 0x8001, 0x8001, 0x8001, 0x831A, 0x8633, 0x894C,\n    0x8C64, 0x8F7D, 0x8B9E, 0x87BF, 0x83E0, 0x15AB, 0x1579, 0x154B,\n    0x151D, 0x1513, 0x1508, 0x1521, 0x1539, 0x1551, 0x1524, 0x14F7,\n    0x14CA, 0x14BF, 0x14B4, 0x14CB, 0x14E2, 0x14F6, 0x14CA, 0x149D,\n    0x1470, 0x1471, 0x1475, 0x147C, 0x1486, 0x1491, 0x149E, 0x14AD,\n    0x14BB, 0x14CB, 0x14DA, 0x14E9, 0x14F8, 0x1506, 0x1513, 0x151E,\n    0x1528, 0x1530, 0x155C, 0x1584, 0xE7BC, 0xE839, 0xE8A7, 0xE919,\n    0xE929, 0xE938, 0xE8E7, 0xE89B, 0xE846, 0xE8B8, 0xE920, 0xE989,\n    0xE995, 0xE9A0, 0xE951, 0xE906, 0xE8B4, 0xE91B, 0xE97A, 0xE9DF,\n    0xE9DC, 0xE9D7, 0xE9CF, 0xE9C6, 0xE9BB, 0xE9AE, 0xE99F, 0xE98F,\n    0xE97E, 0xE96C, 0xE959, 0xE947, 0xE934, 0xE923, 0xE913, 0xE906,\n    0xE8FB, 0xE888, 0xE826, 0xEBAA, 0xEBFB, 0xEC1B, 0xEC35, 0xEC0F,\n    0xEBE9, 0xEB8B, 0xEB30, 0xEAAE, 0xEAE2, 0xEAE7, 0xEAE7, 0xEAB8,\n    0xEA87, 0xEA31, 0xE9DE, 0xE964, 0xE976, 0xE958, 0xE94B, 0xE94B,\n    0xE95A, 0xE976, 0xE99E, 0xE9CF, 0xEA08, 0xEA45, 0xEA85, 0xEAC7,\n    0xEB09, 0xEB49, 0xEB87, 0xEBC1, 0xEBF7, 0xEC28, 0xEC53, 0xEC78,\n    0xEC3D, 0xEC0D, 0xB878, 0xB9A6, 0xBB21, 0xBC96, 0xBD32, 0xBDD1,\n    0xBD93, 0xBD4B, 0xBD4B, 0xBE8D, 0xC01B, 0xC1A5, 0xC24F, 0xC2FA,\n    0xC2BE, 0xC278, 0xC27B, 0xC3E2, 0xC598, 0xC723, 0xC719, 0xC6DE,\n    0xC678, 0xC5ED, 0xC543, 0xC480, 0xC3AA, 0xC2C6, 0xC1DA, 0xC0EB,\n    0xBFFE, 0xBF16, 0xBE39, 0xBD69, 0xBCAC, 0xBC05, 0xBB78, 0xBA5C,\n    0xB932, 0xF95B, 0xFA6B, 0xFB62, 0xFC72, 0xFD30, 0xFDEC, 0xFE4D,\n    0xFEBC, 0xFF15, 0x001D, 0x0118, 0x0226, 0x02D3, 0x037E, 0x03C3,\n    0x0412, 0x0458, 0x0551, 0x064B, 0x0754, 0x073E, 0x0700, 0x069C,\n    0x0618, 0x0575, 0x04B8, 0x03E5, 0x0300, 0x020D, 0x0111, 0x0012,\n    0xFF15, 0xFE1F, 0xFD36, 0xFC62, 0xFBA8, 0xFB0F, 0xFA3A, 0xF9BF,\n    0xDB61, 0xDB40, 0xDAF3, 0xDABA, 0xDAD4, 0xDAF0, 0xDB55, 0xDBC8,\n    0xDC06, 0xDC04, 0xDBD7, 0xDBBE, 0xDBE7, 0xDC12, 0xDC75, 0xDCE5,\n    0xDD24, 0xDD34, 0xDD1C, 0xDD36, 0xDD25, 0xDD07, 0xDCDE, 0xDCAD,\n    0xDC76, 0xDC3C, 0xDBFF, 0xDBC3, 0xDB8A, 0xDB54, 0xDB24, 0xDAF9,\n    0xDAD5, 0xDAB9, 0xDAA4, 0xDA96, 0xDA90, 0xDAC1, 0xDB28, 0x28AA,\n    0x2696, 0x248C, 0x2273, 0x218A, 0x20A2, 0x20EC, 0x212F, 0x2173,\n    0x1F6F, 0x1D69, 0x1B59, 0x1A7E, 0x19A4, 0x1A01, 0x1A58, 0x1AA5,\n    0x18B1, 0x16AE, 0x14AD, 0x14C6, 0x1515, 0x1595, 0x1640, 0x1711,\n    0x1803, 0x1910, 0x1A33, 0x1B66, 0x1CA3, 0x1DE4, 0x1F21, 0x2054,\n    0x2176, 0x227F, 0x2367, 0x2427, 0x25EE, 0x2765, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x03D4, 0x07A8, 0x0B7D, 0x0F51, 0x1326, 0x0E5C, 0x0993,\n    0x04C9, 0x0000, 0x0000, 0x0000, 0x0000, 0xFCFD, 0xF9F9, 0xF6F5,\n    0xF3F1, 0xF0ED, 0xF4B2, 0xF877, 0xFC3C, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x7CA7, 0x7950, 0x75F9, 0x72A1, 0x6F4A, 0x7377,\n    0x77A4, 0x7BD1, 0x8001, 0x8001, 0x8001, 0x8001, 0x831A, 0x8633,\n    0x894C, 0x8C64, 0x8F7D, 0x8B9E, 0x87BF, 0x83E0, 0x0000, 0xFFF2,\n    0xFFD2, 0xFFAC, 0xFF90, 0xFF8C, 0xFFAC, 0x0000, 0x00B6, 0x01D3,\n    0x0321, 0x046E, 0x0585, 0x0632, 0x0641, 0x057C, 0x03FD, 0x020E,\n    0xFFF8, 0xFE01, 0xFC74, 0xFB98, 0xFB70, 0xFBB9, 0xFC54, 0xFD23,\n    0xFE07, 0xFEE2, 0xFF94, 0x0000, 0x0032, 0x0050, 0x005C, 0x005A,\n    0x004E, 0x003C, 0x0027, 0x0014, 0x0005, 0x2108, 0x211A, 0x2144,\n    0x2173, 0x2197, 0x219D, 0x2173, 0x2108, 0x1F4F, 0x1CB3, 0x1B58,\n    0x1EA5, 0x24C2, 0x27EE, 0x242A, 0x1D77, 0x1A10, 0x1E5F, 0x25FC,\n    0x29EC, 0x255C, 0x1D1F, 0x18B6, 0x191D, 0x1A2A, 0x1BA1, 0x1D48,\n    0x1EE2, 0x2036, 0x2108, 0x216E, 0x21A9, 0x21C0, 0x21BD, 0x21A5,\n    0x2180, 0x2157, 0x2130, 0x2113, 0x030E, 0xC001, 0x030E, 0x3FFF,\n    0x3FFF, 0x0000,\n};\n\n// 0x06007C6C\nstatic const u16 skeeter_seg6_animindex_06007C6C[] = {\n    0x0001, 0x0000, 0x0027, 0x0001, 0x0027, 0x0028, 0x0001, 0x0000, 0x0001, 0x004F, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0538, 0x0001, 0x0000,\n    0x0027, 0x00C5, 0x0027, 0x00EC, 0x0027, 0x0113,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0027, 0x009E,\n    0x0001, 0x0000, 0x0027, 0x0050, 0x0027, 0x0077,\n    0x0001, 0x0000, 0x0001, 0x0537, 0x0001, 0x0000,\n    0x0027, 0x01AF, 0x0027, 0x01D6, 0x0027, 0x01FD,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0027, 0x0188,\n    0x0001, 0x0000, 0x0027, 0x013A, 0x0027, 0x0161,\n    0x0001, 0x0534, 0x0001, 0x0535, 0x0001, 0x0536,\n    0x0027, 0x02C0, 0x0027, 0x02E7, 0x0027, 0x030E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0027, 0x0299,\n    0x0027, 0x0224, 0x0027, 0x024B, 0x0027, 0x0272,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0027, 0x0496, 0x0001, 0x04BD,\n    0x0001, 0x0000, 0x0027, 0x0335, 0x0001, 0x035C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x04BE, 0x0027, 0x04BF, 0x0001, 0x0000,\n    0x0001, 0x035D, 0x0027, 0x035E, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0027, 0x0421, 0x0027, 0x0448, 0x0027, 0x046F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0027, 0x03FA,\n    0x0027, 0x0385, 0x0027, 0x03AC, 0x0027, 0x03D3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0027, 0x04E6, 0x0027, 0x050D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x06007DC8\nstatic const struct Animation skeeter_seg6_anim_06007DC8 = {\n    0,\n    0,\n    0,\n    0,\n    0x27,\n    ANIMINDEX_NUMPARTS(skeeter_seg6_animindex_06007C6C),\n    skeeter_seg6_animvalue_060071F8,\n    skeeter_seg6_animindex_06007C6C,\n    0,\n};\n"
  },
  {
    "path": "actors/skeeter/anims/data.inc.c",
    "content": "#include \"anim_06005D44.inc.c\"\n#include \"anim_06006B70.inc.c\"\n#include \"anim_060071E0.inc.c\"\n#include \"anim_06007DC8.inc.c\"\n"
  },
  {
    "path": "actors/skeeter/anims/table.inc.c",
    "content": "// 0x06007DE0\nconst struct Animation *const skeeter_seg6_anims_06007DE0[] = {\n    &skeeter_seg6_anim_06005D44,\n    &skeeter_seg6_anim_06006B70,\n    &skeeter_seg6_anim_060071E0,\n    &skeeter_seg6_anim_06007DC8,\n};\n"
  },
  {
    "path": "actors/skeeter/geo.inc.c",
    "content": "// 0x0D000000\nconst GeoLayout skeeter_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 100),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_BILLBOARD(),\n                    GEO_OPEN_NODE(),\n                        GEO_DISPLAY_LIST(LAYER_ALPHA, skeeter_seg6_dl_06000A08),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 100, -75, -105, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, skeeter_seg6_dl_06004070),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 405, 0, 0, skeeter_seg6_dl_06004040),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 540, 0, 0, skeeter_seg6_dl_06000EC0),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -40, -75, -125, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, skeeter_seg6_dl_06004120),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 405, 0, 0, skeeter_seg6_dl_060040F0),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 540, 0, 0, skeeter_seg6_dl_06000EC0),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -40, -75, 125, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, skeeter_seg6_dl_060041D0),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 405, 0, 0, skeeter_seg6_dl_060041A0),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 540, 0, 0, skeeter_seg6_dl_06000EC0),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -150, -87, 111, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_BILLBOARD(),\n                            GEO_OPEN_NODE(),\n                                GEO_DISPLAY_LIST(LAYER_ALPHA, skeeter_seg6_dl_06000BD8),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                        GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, skeeter_seg6_dl_06000CA8),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -150, -87, -111, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, skeeter_seg6_dl_06000D78),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_BILLBOARD(),\n                            GEO_OPEN_NODE(),\n                                GEO_DISPLAY_LIST(LAYER_ALPHA, skeeter_seg6_dl_06000BD8),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 100, -75, 95, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, skeeter_seg6_dl_06004648),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 405, 0, 0, skeeter_seg6_dl_06004618),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 540, 0, 0, skeeter_seg6_dl_06000EC0),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 147, 84, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, skeeter_seg6_dl_06005328),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 216, 0, 0, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_BILLBOARD(),\n                                GEO_OPEN_NODE(),\n                                    GEO_DISPLAY_LIST(LAYER_ALPHA, skeeter_seg6_dl_06000AF0),\n                                GEO_CLOSE_NODE(),\n                            GEO_CLOSE_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 216, 0, 0, NULL),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/skeeter/model.inc.c",
    "content": "// Skeeter\n\n// Unreferenced light group\nUNUSED static const Lights1 skeeter_lights_unused1 = gdSPDefLights1(\n    0x3f, 0x20, 0x02,\n    0xfc, 0x80, 0x08, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 skeeter_lights_unused2 = gdSPDefLights1(\n    0x05, 0x05, 0x02,\n    0x15, 0x15, 0x08, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 skeeter_lights_unused3 = gdSPDefLights1(\n    0x03, 0x10, 0x29,\n    0x0e, 0x40, 0xa4, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 skeeter_lights_unused4 = gdSPDefLights1(\n    0x3b, 0x3a, 0x36,\n    0xef, 0xea, 0xd9, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 skeeter_lights_unused5 = gdSPDefLights1(\n    0x33, 0x0c, 0x00,\n    0xcf, 0x32, 0x00, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 skeeter_lights_unused6 = gdSPDefLights1(\n    0x10, 0x29, 0x20,\n    0x42, 0xa5, 0x81, 0x28, 0x28, 0x28\n);\n\n// 0x06000090\nALIGNED8 static const Texture skeeter_seg6_texture_06000090[] = {\n#include \"actors/skeeter/skeeter_eye.rgba16.inc.c\"\n};\n\n// 0x06000890\nALIGNED8 static const Texture skeeter_seg6_texture_06000890[] = {\n#include \"actors/skeeter/skeeter_iris.rgba16.inc.c\"\n};\n\n// 0x06000990\nstatic const Vtx skeeter_seg6_vertex_06000990[] = {\n    {{{   -44,     45,      0}, 0, {     0,      0}, {0x00, 0xff, 0xd4, 0xff}}},\n    {{{   -44,    -44,      0}, 0, {     0,    990}, {0x00, 0xff, 0xd4, 0xff}}},\n    {{{    45,    -44,      0}, 0, {   990,    990}, {0x00, 0xff, 0xd4, 0xff}}},\n    {{{    45,     45,      0}, 0, {   990,      0}, {0x00, 0xff, 0xd4, 0xff}}},\n};\n\n// 0x060009D0 - 0x06000A08\nconst Gfx skeeter_seg6_dl_060009D0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, skeeter_seg6_texture_06000090),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(skeeter_seg6_vertex_06000990, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06000A08 - 0x06000A78\nconst Gfx skeeter_seg6_dl_06000A08[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(skeeter_seg6_dl_060009D0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x06000A78\nstatic const Vtx skeeter_seg6_vertex_06000A78[] = {\n    {{{   -14,     15,      0}, 0, {     0,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{   -14,    -14,      0}, 0, {     0,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{    15,    -14,      0}, 0, {   990,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{    15,     15,      0}, 0, {   990,      0}, {0xff, 0x55, 0x00, 0xff}}},\n};\n\n// 0x06000AB8 - 0x06000AF0\nconst Gfx skeeter_seg6_dl_06000AB8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, skeeter_seg6_texture_06000090),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(skeeter_seg6_vertex_06000A78, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06000AF0 - 0x06000B60\nconst Gfx skeeter_seg6_dl_06000AF0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(skeeter_seg6_dl_06000AB8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x06000B60\nstatic const Vtx skeeter_seg6_vertex_06000B60[] = {\n    {{{   -17,     18,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -17,    -17,      0}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    18,    -17,      0}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    18,     18,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x06000BA0 - 0x06000BD8\nconst Gfx skeeter_seg6_dl_06000BA0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, skeeter_seg6_texture_06000090),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(skeeter_seg6_vertex_06000B60, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06000BD8 - 0x06000C48\nconst Gfx skeeter_seg6_dl_06000BD8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(skeeter_seg6_dl_06000BA0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x06000C48\nstatic const Vtx skeeter_seg6_vertex_06000C48[] = {\n    {{{    66,      8,     69}, 0, {   536,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    85,    -24,    -35}, 0, {   -99,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    63,     75,    -10}, 0, {   218,    421}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x06000C78 - 0x06000CA8\nconst Gfx skeeter_seg6_dl_06000C78[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, skeeter_seg6_texture_06000890),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 8 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(skeeter_seg6_vertex_06000C48, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06000CA8 - 0x06000D18\nconst Gfx skeeter_seg6_dl_06000CA8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 3, G_TX_NOLOD, G_TX_CLAMP, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (8 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(skeeter_seg6_dl_06000C78),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x06000D18\nstatic const Vtx skeeter_seg6_vertex_06000D18[] = {\n    {{{    63,     75,     11}, 0, {   218,    421}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    85,    -24,     36}, 0, {   536,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    66,      8,    -68}, 0, {   -99,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x06000D48 - 0x06000D78\nconst Gfx skeeter_seg6_dl_06000D48[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, skeeter_seg6_texture_06000890),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 8 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(skeeter_seg6_vertex_06000D18, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06000D78 - 0x06000DE8\nconst Gfx skeeter_seg6_dl_06000D78[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 3, G_TX_NOLOD, G_TX_CLAMP, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (8 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(skeeter_seg6_dl_06000D48),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x06000DE8\nstatic const Lights1 skeeter_seg6_lights_06000DE8 = gdSPDefLights1(\n    0x7f, 0x55, 0x00,\n    0xff, 0xaa, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x06000E00\nstatic const Vtx skeeter_seg6_vertex_06000E00[] = {\n    {{{    45,    -24,   -122}, 0, {     0,      0}, {0x6a, 0xe9, 0xc0, 0xff}}},\n    {{{    45,    120,     76}, 0, {     0,      0}, {0x24, 0x60, 0x4a, 0xff}}},\n    {{{    45,    -24,    123}, 0, {     0,      0}, {0x28, 0xd6, 0x70, 0xff}}},\n    {{{    45,    120,    -75}, 0, {     0,      0}, {0xa5, 0x45, 0xcb, 0xff}}},\n    {{{   -14,      0,      0}, 0, {     0,      0}, {0x82, 0xfd, 0x00, 0xff}}},\n    {{{    45,   -114,      0}, 0, {     0,      0}, {0xb2, 0x9d, 0x00, 0xff}}},\n};\n\n// 0x06000E60 - 0x06000EC0\nconst Gfx skeeter_seg6_dl_06000E60[] = {\n    gsSPLight(&skeeter_seg6_lights_06000DE8.l, 1),\n    gsSPLight(&skeeter_seg6_lights_06000DE8.a, 2),\n    gsSPVertex(skeeter_seg6_vertex_06000E00, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 3,  0,  4, 0x0,  5,  2,  4, 0x0),\n    gsSP2Triangles( 0,  5,  4, 0x0,  5,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06000EC0 - 0x06000EF0\nconst Gfx skeeter_seg6_dl_06000EC0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(skeeter_seg6_dl_06000E60),\n    gsSPEndDisplayList(),\n};\n\n// 0x06000EF0\nstatic const Vtx skeeter_seg6_vertex_06000EF0[] = {\n    {{{   -15,      0,      0}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{    45,    119,     76}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{    45,    119,    -76}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{    45,    -25,   -123}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{    45,   -114,      0}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{    45,    -25,    123}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{    45,    -25,   -123}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{    45,    -25,    123}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{    45,   -114,      0}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{    45,    119,    -76}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{    45,    119,     76}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n};\n\n// 0x06000FA0\nstatic const Vtx skeeter_seg6_vertex_06000FA0[] = {\n    {{{   555,      0,    -15}, 0, {     0,      0}, {0x15, 0x15, 0x08, 0x00}}},\n    {{{     0,      0,    -15}, 0, {     0,      0}, {0x15, 0x15, 0x08, 0x00}}},\n    {{{     0,      0,     15}, 0, {     0,      0}, {0x15, 0x15, 0x08, 0x00}}},\n    {{{   555,      0,     15}, 0, {     0,      0}, {0x15, 0x15, 0x08, 0x00}}},\n};\n\n// 0x06000FE0\nstatic const Vtx skeeter_seg6_vertex_06000FE0[] = {\n    {{{   405,      0,    -15}, 0, {     0,      0}, {0x15, 0x15, 0x08, 0x00}}},\n    {{{     0,      0,    -15}, 0, {     0,      0}, {0x15, 0x15, 0x08, 0x00}}},\n    {{{     0,      0,     15}, 0, {     0,      0}, {0x15, 0x15, 0x08, 0x00}}},\n    {{{   405,      0,     15}, 0, {     0,      0}, {0x15, 0x15, 0x08, 0x00}}},\n};\n\n// 0x06001020\nstatic const Vtx skeeter_seg6_vertex_06001020[] = {\n    {{{   -15,      0,      0}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{    45,    119,     76}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{    45,    119,    -76}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{    45,    -25,   -123}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{    45,   -114,      0}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{    45,    -25,    123}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{    45,    -25,   -123}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{    45,    -25,    123}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{    45,   -114,      0}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{    45,    119,    -76}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{    45,    119,     76}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n};\n\n// 0x060010D0\nstatic const Vtx skeeter_seg6_vertex_060010D0[] = {\n    {{{   555,      0,    -15}, 0, {     0,      0}, {0x15, 0x15, 0x08, 0x00}}},\n    {{{     0,      0,    -15}, 0, {     0,      0}, {0x15, 0x15, 0x08, 0x00}}},\n    {{{     0,      0,     15}, 0, {     0,      0}, {0x15, 0x15, 0x08, 0x00}}},\n    {{{   555,      0,     15}, 0, {     0,      0}, {0x15, 0x15, 0x08, 0x00}}},\n};\n\n// 0x06001110\nstatic const Vtx skeeter_seg6_vertex_06001110[] = {\n    {{{   405,      0,    -15}, 0, {     0,      0}, {0x15, 0x15, 0x08, 0x00}}},\n    {{{     0,      0,    -15}, 0, {     0,      0}, {0x15, 0x15, 0x08, 0x00}}},\n    {{{     0,      0,     15}, 0, {     0,      0}, {0x15, 0x15, 0x08, 0x00}}},\n    {{{   405,      0,     15}, 0, {     0,      0}, {0x15, 0x15, 0x08, 0x00}}},\n};\n\n// 0x06001150\nstatic const Vtx skeeter_seg6_vertex_06001150[] = {\n    {{{    45,    119,     76}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{    45,    119,    -76}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{   -15,      0,      0}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{    45,   -114,      0}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{    45,    -25,    123}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{    45,    -25,   -123}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{    45,   -114,      0}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{    45,    -25,   -123}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{    45,    -25,    123}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{    45,    119,    -76}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{    45,    119,     76}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n};\n\n// 0x06001200\nstatic const Vtx skeeter_seg6_vertex_06001200[] = {\n    {{{     0,      0,    -15}, 0, {     0,      0}, {0x15, 0x15, 0x08, 0x00}}},\n    {{{     0,      0,     15}, 0, {     0,      0}, {0x15, 0x15, 0x08, 0x00}}},\n    {{{   555,      0,     15}, 0, {     0,      0}, {0x15, 0x15, 0x08, 0x00}}},\n    {{{   555,      0,    -15}, 0, {     0,      0}, {0x15, 0x15, 0x08, 0x00}}},\n};\n\n// 0x06001240\nstatic const Vtx skeeter_seg6_vertex_06001240[] = {\n    {{{     0,      0,    -15}, 0, {     0,      0}, {0x15, 0x15, 0x08, 0x00}}},\n    {{{     0,      0,     15}, 0, {     0,      0}, {0x15, 0x15, 0x08, 0x00}}},\n    {{{   405,      0,     15}, 0, {     0,      0}, {0x15, 0x15, 0x08, 0x00}}},\n    {{{   405,      0,    -15}, 0, {     0,      0}, {0x15, 0x15, 0x08, 0x00}}},\n};\n\n// 0x06001280\nstatic const Vtx skeeter_seg6_vertex_06001280[] = {\n    {{{   -62,    -30,     17}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -60,    -18,     34}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -70,     -4,     12}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -45,    -52,     19}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -40,    -30,     51}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -20,    -66,     18}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -14,    -37,     59}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{     6,    -70,     14}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    13,    -38,     59}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    33,    -63,      8}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    39,    -34,     49}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    54,    -46,      1}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    59,    -24,     32}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    67,    -23,     -6}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    70,    -10,     10}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    70,      4,    -12}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n};\n\n// 0x06001380\nstatic const Vtx skeeter_seg6_vertex_06001380[] = {\n    {{{   -66,    -27,     -2}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -62,    -30,     17}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -70,     -4,     12}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -52,    -45,    -18}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -45,    -52,     19}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -30,    -57,    -31}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -20,    -66,     18}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    -3,    -60,    -38}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{     6,    -70,     14}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    23,    -54,    -40}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    33,    -63,      8}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    47,    -39,    -36}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    54,    -46,      1}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    63,    -19,    -26}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    67,    -23,     -6}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    70,      4,    -12}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n};\n\n// 0x06001480\nstatic const Vtx skeeter_seg6_vertex_06001480[] = {\n    {{{   -69,     -9,    -14}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -66,    -27,     -2}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -70,     -4,     12}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -58,    -13,    -39}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -52,    -45,    -18}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -37,    -15,    -59}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -30,    -57,    -31}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -11,    -15,    -69}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    -3,    -60,    -38}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    16,    -12,    -69}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    23,    -54,    -40}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    41,     -7,    -58}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    47,    -39,    -36}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    60,     -1,    -38}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    63,    -19,    -26}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    70,      4,    -12}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n};\n\n// 0x06001580\nstatic const Vtx skeeter_seg6_vertex_06001580[] = {\n    {{{   -70,     10,    -10}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -69,     -9,    -14}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -70,     -4,     12}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -59,     24,    -32}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -58,    -13,    -39}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -39,     34,    -49}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -37,    -15,    -59}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -13,     38,    -59}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -11,    -15,    -69}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    14,     37,    -59}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    16,    -12,    -69}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    40,     30,    -51}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    41,     -7,    -58}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    60,     18,    -34}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    60,     -1,    -38}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    70,      4,    -12}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n};\n\n// 0x06001680\nstatic const Vtx skeeter_seg6_vertex_06001680[] = {\n    {{{   -67,     23,      6}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -70,     10,    -10}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -70,     -4,     12}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -54,     46,     -1}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -59,     24,    -32}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -33,     63,     -8}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -39,     34,    -49}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    -6,     70,    -14}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -13,     38,    -59}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    20,     66,    -18}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    14,     37,    -59}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    45,     52,    -19}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    40,     30,    -51}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    62,     30,    -17}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    60,     18,    -34}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    70,      4,    -12}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n};\n\n// 0x06001780\nstatic const Vtx skeeter_seg6_vertex_06001780[] = {\n    {{{   -63,     19,     26}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -67,     23,      6}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -70,     -4,     12}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -47,     39,     36}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -54,     46,     -1}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -23,     54,     40}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -33,     63,     -8}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{     3,     60,     38}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    -6,     70,    -14}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    30,     57,     31}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    20,     66,    -18}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    52,     45,     18}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    45,     52,    -19}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    66,     27,      2}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    62,     30,    -17}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    70,      4,    -12}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n};\n\n// 0x06001880\nstatic const Vtx skeeter_seg6_vertex_06001880[] = {\n    {{{   -60,      1,     38}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -63,     19,     26}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -70,     -4,     12}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -41,      7,     58}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -47,     39,     36}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -16,     12,     69}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -23,     54,     40}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    11,     15,     69}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{     3,     60,     38}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    37,     15,     59}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    30,     57,     31}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    58,     13,     39}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    52,     45,     18}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    69,      9,     14}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    66,     27,      2}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    70,      4,    -12}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n};\n\n// 0x06001980\nstatic const Vtx skeeter_seg6_vertex_06001980[] = {\n    {{{   -60,    -18,     34}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -60,      1,     38}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -70,     -4,     12}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -40,    -30,     51}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -41,      7,     58}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -14,    -37,     59}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -16,     12,     69}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    13,    -38,     59}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    11,     15,     69}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    39,    -34,     49}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    37,     15,     59}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    59,    -24,     32}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    58,     13,     39}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    70,    -10,     10}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    69,      9,     14}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    70,      4,    -12}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n};\n\n// 0x06001A80\nstatic const Vtx skeeter_seg6_vertex_06001A80[] = {\n    {{{    45,    119,     76}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{    45,    119,    -76}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{   -15,      0,      0}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{    45,   -114,      0}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{    45,    -25,    123}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{    45,    -25,   -123}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{    45,   -114,      0}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{    45,    -25,   -123}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{    45,    -25,    123}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{    45,    119,    -76}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n    {{{    45,    119,     76}, 0, {     0,      0}, {0xfc, 0x80, 0x08, 0x00}}},\n};\n\n// 0x06001B30\nstatic const Vtx skeeter_seg6_vertex_06001B30[] = {\n    {{{     0,      0,    -15}, 0, {     0,      0}, {0x15, 0x15, 0x08, 0x00}}},\n    {{{     0,      0,     15}, 0, {     0,      0}, {0x15, 0x15, 0x08, 0x00}}},\n    {{{   555,      0,     15}, 0, {     0,      0}, {0x15, 0x15, 0x08, 0x00}}},\n    {{{   555,      0,    -15}, 0, {     0,      0}, {0x15, 0x15, 0x08, 0x00}}},\n};\n\n// 0x06001B70\nstatic const Vtx skeeter_seg6_vertex_06001B70[] = {\n    {{{     0,      0,    -15}, 0, {     0,      0}, {0x15, 0x15, 0x08, 0x00}}},\n    {{{     0,      0,     15}, 0, {     0,      0}, {0x15, 0x15, 0x08, 0x00}}},\n    {{{   405,      0,     15}, 0, {     0,      0}, {0x15, 0x15, 0x08, 0x00}}},\n    {{{   405,      0,    -15}, 0, {     0,      0}, {0x15, 0x15, 0x08, 0x00}}},\n};\n\n// 0x06001BB0\nstatic const Vtx skeeter_seg6_vertex_06001BB0[] = {\n    {{{   -70,     -4,    -14}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -59,    -19,    -35}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -62,    -31,    -18}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -39,    -30,    -51}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -44,    -52,    -20}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -13,    -37,    -59}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -20,    -66,    -18}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    14,    -38,    -58}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{     7,    -70,    -14}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    40,    -34,    -49}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    33,    -63,     -7}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    60,    -24,    -31}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    55,    -46,      0}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    70,    -10,     -9}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    67,    -22,      7}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    70,      4,     14}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n};\n\n// 0x06001CB0\nstatic const Vtx skeeter_seg6_vertex_06001CB0[] = {\n    {{{   -70,     -4,    -14}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -62,    -31,    -18}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -66,    -27,      1}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -44,    -52,    -20}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -52,    -46,     17}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -20,    -66,    -18}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -30,    -57,     30}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{     7,    -70,    -14}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    -3,    -60,     38}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    33,    -63,     -7}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    23,    -54,     41}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    55,    -46,      0}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    47,    -39,     37}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    67,    -22,      7}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    63,    -18,     28}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    70,      4,     14}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n};\n\n// 0x06001DB0\nstatic const Vtx skeeter_seg6_vertex_06001DB0[] = {\n    {{{   -70,     -4,    -14}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -66,    -27,      1}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -70,    -10,     13}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -52,    -46,     17}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -59,    -14,     38}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -30,    -57,     30}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -38,    -16,     58}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    -3,    -60,     38}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -13,    -15,     69}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    23,    -54,     41}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    14,    -12,     69}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    47,    -39,     37}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    40,     -7,     58}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    63,    -18,     28}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    60,     -1,     39}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    70,      4,     14}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n};\n\n// 0x06001EB0\nstatic const Vtx skeeter_seg6_vertex_06001EB0[] = {\n    {{{   -70,     -4,    -14}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -70,    -10,     13}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -70,     10,      9}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -59,    -14,     38}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -60,     24,     31}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -38,    -16,     58}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -40,     34,     49}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -13,    -15,     69}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -14,     38,     58}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    14,    -12,     69}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    13,     37,     59}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    40,     -7,     58}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    39,     30,     51}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    60,     -1,     39}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    59,     19,     35}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    70,      4,     14}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n};\n\n// 0x06001FB0\nstatic const Vtx skeeter_seg6_vertex_06001FB0[] = {\n    {{{   -70,     -4,    -14}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -70,     10,      9}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -67,     22,     -7}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -60,     24,     31}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -55,     46,      0}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -40,     34,     49}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -33,     63,      7}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -14,     38,     58}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    -7,     70,     14}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    13,     37,     59}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    20,     66,     18}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    39,     30,     51}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    44,     52,     20}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    59,     19,     35}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    62,     31,     18}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    70,      4,     14}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n};\n\n// 0x060020B0\nstatic const Vtx skeeter_seg6_vertex_060020B0[] = {\n    {{{   -70,     -4,    -14}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -67,     22,     -7}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -63,     18,    -28}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -55,     46,      0}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -47,     39,    -37}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -33,     63,      7}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -23,     54,    -41}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    -7,     70,     14}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{     3,     60,    -38}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    20,     66,     18}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    30,     57,    -30}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    44,     52,     20}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    52,     46,    -17}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    62,     31,     18}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    66,     27,     -1}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    70,      4,     14}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n};\n\n// 0x060021B0\nstatic const Vtx skeeter_seg6_vertex_060021B0[] = {\n    {{{   -70,     -4,    -14}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -63,     18,    -28}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -60,      1,    -39}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -47,     39,    -37}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -40,      7,    -58}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -23,     54,    -41}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -14,     12,    -69}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{     3,     60,    -38}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    13,     15,    -69}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    30,     57,    -30}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    38,     16,    -58}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    52,     46,    -17}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    59,     14,    -38}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    66,     27,     -1}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    70,     10,    -13}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    70,      4,     14}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n};\n\n// 0x060022B0\nstatic const Vtx skeeter_seg6_vertex_060022B0[] = {\n    {{{   -70,     -4,    -14}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -60,      1,    -39}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -59,    -19,    -35}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -40,      7,    -58}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -39,    -30,    -51}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -14,     12,    -69}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{   -13,    -37,    -59}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    13,     15,    -69}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    14,    -38,    -58}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    38,     16,    -58}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    40,    -34,    -49}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    59,     14,    -38}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    60,    -24,    -31}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    70,     10,    -13}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    70,    -10,     -9}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n    {{{    70,      4,     14}, 0, {     0,      0}, {0xef, 0xea, 0xd9, 0x00}}},\n};\n\n// 0x060023B0\nstatic const Vtx skeeter_seg6_vertex_060023B0[] = {\n    {{{   -57,     -7,     13}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -57,      0,     15}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -60,      0,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -51,    -15,     26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -51,      0,     30}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -42,    -21,     36}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -42,      0,     42}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -30,    -26,     45}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -30,      0,     51}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -15,    -28,     50}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -15,      0,     57}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{     0,    -30,     51}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{     0,      0,     60}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    15,    -28,     50}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    15,      0,     57}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    30,    -26,     45}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n};\n\n// 0x060024B0\nstatic const Vtx skeeter_seg6_vertex_060024B0[] = {\n    {{{    15,      0,     57}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    30,    -26,     45}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    30,      0,     51}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    42,    -21,     36}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    42,      0,     42}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    51,    -15,     26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    51,      0,     30}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    57,     -7,     13}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    57,      0,     15}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    60,      0,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -57,    -13,      7}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -57,     -7,     13}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -60,      0,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -51,    -26,     15}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -51,    -15,     26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -42,    -36,     21}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n};\n\n// 0x060025B0\nstatic const Vtx skeeter_seg6_vertex_060025B0[] = {\n    {{{   -51,    -15,     26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -42,    -36,     21}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -42,    -21,     36}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -30,    -45,     26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -30,    -26,     45}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -15,    -50,     28}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -15,    -28,     50}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{     0,    -51,     30}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{     0,    -30,     51}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    15,    -50,     28}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    15,    -28,     50}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    30,    -45,     26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    30,    -26,     45}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    42,    -36,     21}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    42,    -21,     36}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    51,    -26,     15}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n};\n\n// 0x060026B0\nstatic const Vtx skeeter_seg6_vertex_060026B0[] = {\n    {{{    42,    -21,     36}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    51,    -26,     15}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    51,    -15,     26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    57,    -13,      7}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    57,     -7,     13}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    60,      0,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -57,    -15,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -57,    -13,      7}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -60,      0,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -51,    -30,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -51,    -26,     15}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -42,    -42,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -42,    -36,     21}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -30,    -51,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -30,    -45,     26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -15,    -57,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n};\n\n// 0x060027B0\nstatic const Vtx skeeter_seg6_vertex_060027B0[] = {\n    {{{   -30,    -45,     26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -15,    -57,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -15,    -50,     28}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{     0,    -60,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{     0,    -51,     30}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    15,    -57,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    15,    -50,     28}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    30,    -51,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    30,    -45,     26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    42,    -42,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    42,    -36,     21}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    51,    -30,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    51,    -26,     15}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    57,    -15,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    57,    -13,      7}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    60,      0,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n};\n\n// 0x060028B0\nstatic const Vtx skeeter_seg6_vertex_060028B0[] = {\n    {{{   -57,    -13,     -7}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -57,    -15,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -60,      0,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -51,    -26,    -15}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -51,    -30,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -42,    -36,    -21}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -42,    -42,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -30,    -45,    -26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -30,    -51,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -15,    -50,    -28}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -15,    -57,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{     0,    -51,    -30}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{     0,    -60,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    15,    -50,    -28}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    15,    -57,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    30,    -45,    -26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n};\n\n// 0x060029B0\nstatic const Vtx skeeter_seg6_vertex_060029B0[] = {\n    {{{    15,    -57,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    30,    -45,    -26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    30,    -51,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    42,    -36,    -21}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    42,    -42,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    51,    -26,    -15}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    51,    -30,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    57,    -13,     -7}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    57,    -15,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    60,      0,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -57,     -7,    -13}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -57,    -13,     -7}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -60,      0,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -51,    -15,    -26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -51,    -26,    -15}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -42,    -21,    -36}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n};\n\n// 0x06002AB0\nstatic const Vtx skeeter_seg6_vertex_06002AB0[] = {\n    {{{   -51,    -26,    -15}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -42,    -21,    -36}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -42,    -36,    -21}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -30,    -26,    -45}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -30,    -45,    -26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -15,    -28,    -50}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -15,    -50,    -28}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{     0,    -30,    -51}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{     0,    -51,    -30}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    15,    -28,    -50}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    15,    -50,    -28}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    30,    -26,    -45}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    30,    -45,    -26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    42,    -21,    -36}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    42,    -36,    -21}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    51,    -15,    -26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n};\n\n// 0x06002BB0\nstatic const Vtx skeeter_seg6_vertex_06002BB0[] = {\n    {{{    42,    -36,    -21}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    51,    -15,    -26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    51,    -26,    -15}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    57,     -7,    -13}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    57,    -13,     -7}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    60,      0,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -57,      0,    -15}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -57,     -7,    -13}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -60,      0,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -51,      0,    -30}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -51,    -15,    -26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -42,      0,    -42}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -42,    -21,    -36}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -30,      0,    -51}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -30,    -26,    -45}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -15,      0,    -57}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n};\n\n// 0x06002CB0\nstatic const Vtx skeeter_seg6_vertex_06002CB0[] = {\n    {{{   -30,    -26,    -45}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -15,      0,    -57}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -15,    -28,    -50}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{     0,      0,    -60}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{     0,    -30,    -51}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    15,      0,    -57}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    15,    -28,    -50}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    30,      0,    -51}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    30,    -26,    -45}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    42,      0,    -42}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    42,    -21,    -36}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    51,      0,    -30}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    51,    -15,    -26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    57,      0,    -15}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    57,     -7,    -13}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    60,      0,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n};\n\n// 0x06002DB0\nstatic const Vtx skeeter_seg6_vertex_06002DB0[] = {\n    {{{   -57,      7,    -13}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -57,      0,    -15}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -60,      0,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -51,     15,    -26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -51,      0,    -30}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -42,     21,    -36}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -42,      0,    -42}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -30,     26,    -45}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -30,      0,    -51}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -15,     28,    -50}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -15,      0,    -57}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{     0,     30,    -51}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{     0,      0,    -60}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    15,     28,    -50}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    15,      0,    -57}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    30,     26,    -45}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n};\n\n// 0x06002EB0\nstatic const Vtx skeeter_seg6_vertex_06002EB0[] = {\n    {{{    15,      0,    -57}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    30,     26,    -45}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    30,      0,    -51}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    42,     21,    -36}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    42,      0,    -42}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    51,     15,    -26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    51,      0,    -30}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    57,      7,    -13}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    57,      0,    -15}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    60,      0,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -57,     13,     -7}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -57,      7,    -13}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -60,      0,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -51,     26,    -15}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -51,     15,    -26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -42,     36,    -21}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n};\n\n// 0x06002FB0\nstatic const Vtx skeeter_seg6_vertex_06002FB0[] = {\n    {{{   -51,     15,    -26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -42,     36,    -21}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -42,     21,    -36}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -30,     45,    -26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -30,     26,    -45}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -15,     50,    -28}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -15,     28,    -50}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{     0,     51,    -30}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{     0,     30,    -51}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    15,     50,    -28}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    15,     28,    -50}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    30,     45,    -26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    30,     26,    -45}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    42,     36,    -21}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    42,     21,    -36}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    51,     26,    -15}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n};\n\n// 0x060030B0\nstatic const Vtx skeeter_seg6_vertex_060030B0[] = {\n    {{{    42,     21,    -36}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    51,     26,    -15}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    51,     15,    -26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    57,     13,     -7}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    57,      7,    -13}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    60,      0,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -57,     15,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -57,     13,     -7}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -60,      0,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -51,     30,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -51,     26,    -15}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -42,     42,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -42,     36,    -21}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -30,     51,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -30,     45,    -26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -15,     57,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n};\n\n// 0x060031B0\nstatic const Vtx skeeter_seg6_vertex_060031B0[] = {\n    {{{   -30,     45,    -26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -15,     57,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -15,     50,    -28}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{     0,     60,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{     0,     51,    -30}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    15,     57,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    15,     50,    -28}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    30,     51,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    30,     45,    -26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    42,     42,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    42,     36,    -21}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    51,     30,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    51,     26,    -15}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    57,     15,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    57,     13,     -7}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    60,      0,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n};\n\n// 0x060032B0\nstatic const Vtx skeeter_seg6_vertex_060032B0[] = {\n    {{{   -57,     13,      7}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -57,     15,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -60,      0,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -51,     26,     15}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -51,     30,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -42,     36,     21}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -42,     42,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -30,     45,     26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -30,     51,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -15,     50,     28}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -15,     57,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{     0,     51,     30}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{     0,     60,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    15,     50,     28}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    15,     57,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    30,     45,     26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n};\n\n// 0x060033B0\nstatic const Vtx skeeter_seg6_vertex_060033B0[] = {\n    {{{    15,     57,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    30,     45,     26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    30,     51,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    42,     36,     21}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    42,     42,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    51,     26,     15}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    51,     30,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    57,     13,      7}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    57,     15,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    60,      0,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -57,      7,     13}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -57,     13,      7}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -60,      0,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -51,     15,     26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -51,     26,     15}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -42,     21,     36}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n};\n\n// 0x060034B0\nstatic const Vtx skeeter_seg6_vertex_060034B0[] = {\n    {{{   -51,     26,     15}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -42,     21,     36}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -42,     36,     21}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -30,     26,     45}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -30,     45,     26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -15,     28,     50}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -15,     50,     28}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{     0,     30,     51}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{     0,     51,     30}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    15,     28,     50}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    15,     50,     28}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    30,     26,     45}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    30,     45,     26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    42,     21,     36}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    42,     36,     21}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    51,     15,     26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n};\n\n// 0x060035B0\nstatic const Vtx skeeter_seg6_vertex_060035B0[] = {\n    {{{    42,     36,     21}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    51,     15,     26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    51,     26,     15}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    57,      7,     13}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    57,     13,      7}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    60,      0,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -57,      0,     15}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -57,      7,     13}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -60,      0,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -51,      0,     30}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -51,     15,     26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -42,      0,     42}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -42,     21,     36}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -30,      0,     51}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -30,     26,     45}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -15,      0,     57}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n};\n\n// 0x060036B0\nstatic const Vtx skeeter_seg6_vertex_060036B0[] = {\n    {{{   -30,     26,     45}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -15,      0,     57}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{   -15,     28,     50}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{     0,      0,     60}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{     0,     30,     51}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    15,      0,     57}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    15,     28,     50}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    30,      0,     51}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    30,     26,     45}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    42,      0,     42}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    42,     21,     36}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    51,      0,     30}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    51,     15,     26}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    57,      0,     15}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    57,      7,     13}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n    {{{    60,      0,      0}, 0, {     0,      0}, {0xcf, 0x32, 0x00, 0x00}}},\n};\n\n// 0x060037B0\nstatic const Vtx skeeter_seg6_vertex_060037B0[] = {\n    {{{   162,      7,     -7}, 0, {     0,      0}, {0x15, 0x15, 0x08, 0x00}}},\n    {{{     0,      7,     -7}, 0, {     0,      0}, {0x15, 0x15, 0x08, 0x00}}},\n    {{{     0,     -7,      7}, 0, {     0,      0}, {0x15, 0x15, 0x08, 0x00}}},\n    {{{   162,     -7,      7}, 0, {     0,      0}, {0x15, 0x15, 0x08, 0x00}}},\n};\n\n// 0x060037F0\nstatic const Vtx skeeter_seg6_vertex_060037F0[] = {\n    {{{    48,   -166,     48}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,   -166,     68}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,   -180,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{    90,   -127,     90}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,   -127,    127}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{   117,    -68,    117}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,    -68,    166}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{   127,      0,    127}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,      0,    180}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{   117,     68,    117}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,     68,    166}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{    90,    127,     90}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,    127,    127}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{    48,    166,     48}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,    166,     68}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,    180,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n};\n\n// 0x060038F0\nstatic const Vtx skeeter_seg6_vertex_060038F0[] = {\n    {{{    68,   -166,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{    48,   -166,     48}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,   -180,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{   127,   -127,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{    90,   -127,     90}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{   166,    -68,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{   117,    -68,    117}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{   180,      0,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{   127,      0,    127}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{   166,     68,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{   117,     68,    117}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{   127,    127,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{    90,    127,     90}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{    68,    166,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{    48,    166,     48}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,    180,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n};\n\n// 0x060039F0\nstatic const Vtx skeeter_seg6_vertex_060039F0[] = {\n    {{{    48,   -166,    -48}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{    68,   -166,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,   -180,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{    90,   -127,    -90}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{   127,   -127,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{   117,    -68,   -117}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{   166,    -68,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{   127,      0,   -127}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{   180,      0,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{   117,     68,   -117}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{   166,     68,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{    90,    127,    -90}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{   127,    127,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{    48,    166,    -48}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{    68,    166,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,    180,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n};\n\n// 0x06003AF0\nstatic const Vtx skeeter_seg6_vertex_06003AF0[] = {\n    {{{     0,   -166,    -68}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{    48,   -166,    -48}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,   -180,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,   -127,   -127}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{    90,   -127,    -90}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,    -68,   -166}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{   117,    -68,   -117}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,      0,   -180}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{   127,      0,   -127}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,     68,   -166}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{   117,     68,   -117}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,    127,   -127}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{    90,    127,    -90}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,    166,    -68}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{    48,    166,    -48}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,    180,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n};\n\n// 0x06003BF0\nstatic const Vtx skeeter_seg6_vertex_06003BF0[] = {\n    {{{   -48,   -166,    -48}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,   -166,    -68}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,   -180,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{   -90,   -127,    -90}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,   -127,   -127}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{  -117,    -68,   -117}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,    -68,   -166}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{  -127,      0,   -127}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,      0,   -180}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{  -117,     68,   -117}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,     68,   -166}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{   -90,    127,    -90}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,    127,   -127}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{   -48,    166,    -48}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,    166,    -68}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,    180,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n};\n\n// 0x06003CF0\nstatic const Vtx skeeter_seg6_vertex_06003CF0[] = {\n    {{{   -68,   -166,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{   -48,   -166,    -48}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,   -180,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{  -127,   -127,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{   -90,   -127,    -90}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{  -166,    -68,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{  -117,    -68,   -117}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{  -180,      0,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{  -127,      0,   -127}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{  -166,     68,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{  -117,     68,   -117}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{  -127,    127,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{   -90,    127,    -90}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{   -68,    166,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{   -48,    166,    -48}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,    180,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n};\n\n// 0x06003DF0\nstatic const Vtx skeeter_seg6_vertex_06003DF0[] = {\n    {{{   -48,   -166,     48}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{   -68,   -166,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,   -180,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{   -90,   -127,     90}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{  -127,   -127,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{  -117,    -68,    117}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{  -166,    -68,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{  -127,      0,    127}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{  -180,      0,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{  -117,     68,    117}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{  -166,     68,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{   -90,    127,     90}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{  -127,    127,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{   -48,    166,     48}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{   -68,    166,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,    180,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n};\n\n// 0x06003EF0\nstatic const Vtx skeeter_seg6_vertex_06003EF0[] = {\n    {{{     0,   -166,     68}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{   -48,   -166,     48}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,   -180,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,   -127,    127}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{   -90,   -127,     90}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,    -68,    166}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{  -117,    -68,    117}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,      0,    180}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{  -127,      0,    127}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,     68,    166}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{  -117,     68,    117}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,    127,    127}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{   -90,    127,     90}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,    166,     68}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{   -48,    166,     48}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n    {{{     0,    180,      0}, 0, {     0,      0}, {0x42, 0xa5, 0x81, 0x00}}},\n};\n\n// 0x06003FF0 - 0x06004040\nconst Gfx skeeter_seg6_dl_06003FF0[] = {\n    gsSPVertex(skeeter_seg6_vertex_06000EF0, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 0,  2,  3, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0,  6,  9,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06004040 - 0x06004070\nconst Gfx skeeter_seg6_dl_06004040[] = {\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPVertex(skeeter_seg6_vertex_06000FA0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x06004070 - 0x060040A0\nconst Gfx skeeter_seg6_dl_06004070[] = {\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPVertex(skeeter_seg6_vertex_06000FE0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x060040A0 - 0x060040F0\nconst Gfx skeeter_seg6_dl_060040A0[] = {\n    gsSPVertex(skeeter_seg6_vertex_06001020, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 0,  2,  3, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0,  6,  9,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x060040F0 - 0x06004120\nconst Gfx skeeter_seg6_dl_060040F0[] = {\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPVertex(skeeter_seg6_vertex_060010D0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x06004120 - 0x06004150\nconst Gfx skeeter_seg6_dl_06004120[] = {\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPVertex(skeeter_seg6_vertex_06001110, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x06004150 - 0x060041A0\nconst Gfx skeeter_seg6_dl_06004150[] = {\n    gsSPVertex(skeeter_seg6_vertex_06001150, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 5,  3,  2, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles( 4,  0,  2, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  7, 10,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x060041A0 - 0x060041D0\nconst Gfx skeeter_seg6_dl_060041A0[] = {\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPVertex(skeeter_seg6_vertex_06001200, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x060041D0 - 0x06004200\nconst Gfx skeeter_seg6_dl_060041D0[] = {\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPVertex(skeeter_seg6_vertex_06001240, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x06004200 - 0x060045C8\nconst Gfx skeeter_seg6_dl_06004200[] = {\n    gsSPVertex(skeeter_seg6_vertex_06001280, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_06001380, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_06001480, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_06001580, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_06001680, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_06001780, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_06001880, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_06001980, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x060045C8 - 0x06004618\nconst Gfx skeeter_seg6_dl_060045C8[] = {\n    gsSPVertex(skeeter_seg6_vertex_06001A80, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 5,  3,  2, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles( 4,  0,  2, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  7, 10,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06004618 - 0x06004648\nconst Gfx skeeter_seg6_dl_06004618[] = {\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPVertex(skeeter_seg6_vertex_06001B30, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x06004648 - 0x06004678\nconst Gfx skeeter_seg6_dl_06004648[] = {\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPVertex(skeeter_seg6_vertex_06001B70, 4, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSP1Triangle( 0,  2,  3, 0x0),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x06004678 - 0x06004A40\nconst Gfx skeeter_seg6_dl_06004678[] = {\n    gsSPVertex(skeeter_seg6_vertex_06001BB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 3,  2,  1, 0x0,  5,  6,  4, 0x0),\n    gsSP2Triangles( 5,  4,  3, 0x0,  7,  8,  6, 0x0),\n    gsSP2Triangles( 7,  6,  5, 0x0,  9, 10,  8, 0x0),\n    gsSP2Triangles( 9,  8,  7, 0x0, 11, 12, 10, 0x0),\n    gsSP2Triangles(11, 10,  9, 0x0, 13, 14, 12, 0x0),\n    gsSP2Triangles(13, 12, 11, 0x0, 15, 14, 13, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_06001CB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 3,  2,  1, 0x0,  5,  6,  4, 0x0),\n    gsSP2Triangles( 5,  4,  3, 0x0,  7,  8,  6, 0x0),\n    gsSP2Triangles( 7,  6,  5, 0x0,  9, 10,  8, 0x0),\n    gsSP2Triangles( 9,  8,  7, 0x0, 11, 12, 10, 0x0),\n    gsSP2Triangles(11, 10,  9, 0x0, 13, 14, 12, 0x0),\n    gsSP2Triangles(13, 12, 11, 0x0, 15, 14, 13, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_06001DB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 3,  2,  1, 0x0,  5,  6,  4, 0x0),\n    gsSP2Triangles( 5,  4,  3, 0x0,  7,  8,  6, 0x0),\n    gsSP2Triangles( 7,  6,  5, 0x0,  9, 10,  8, 0x0),\n    gsSP2Triangles( 9,  8,  7, 0x0, 11, 12, 10, 0x0),\n    gsSP2Triangles(11, 10,  9, 0x0, 13, 14, 12, 0x0),\n    gsSP2Triangles(13, 12, 11, 0x0, 15, 14, 13, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_06001EB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 3,  2,  1, 0x0,  5,  6,  4, 0x0),\n    gsSP2Triangles( 5,  4,  3, 0x0,  7,  8,  6, 0x0),\n    gsSP2Triangles( 7,  6,  5, 0x0,  9, 10,  8, 0x0),\n    gsSP2Triangles( 9,  8,  7, 0x0, 11, 12, 10, 0x0),\n    gsSP2Triangles(11, 10,  9, 0x0, 13, 14, 12, 0x0),\n    gsSP2Triangles(13, 12, 11, 0x0, 15, 14, 13, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_06001FB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 3,  2,  1, 0x0,  5,  6,  4, 0x0),\n    gsSP2Triangles( 5,  4,  3, 0x0,  7,  8,  6, 0x0),\n    gsSP2Triangles( 7,  6,  5, 0x0,  9, 10,  8, 0x0),\n    gsSP2Triangles( 9,  8,  7, 0x0, 11, 12, 10, 0x0),\n    gsSP2Triangles(11, 10,  9, 0x0, 13, 14, 12, 0x0),\n    gsSP2Triangles(13, 12, 11, 0x0, 15, 14, 13, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_060020B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 3,  2,  1, 0x0,  5,  6,  4, 0x0),\n    gsSP2Triangles( 5,  4,  3, 0x0,  7,  8,  6, 0x0),\n    gsSP2Triangles( 7,  6,  5, 0x0,  9, 10,  8, 0x0),\n    gsSP2Triangles( 9,  8,  7, 0x0, 11, 12, 10, 0x0),\n    gsSP2Triangles(11, 10,  9, 0x0, 13, 14, 12, 0x0),\n    gsSP2Triangles(13, 12, 11, 0x0, 15, 14, 13, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_060021B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 3,  2,  1, 0x0,  5,  6,  4, 0x0),\n    gsSP2Triangles( 5,  4,  3, 0x0,  7,  8,  6, 0x0),\n    gsSP2Triangles( 7,  6,  5, 0x0,  9, 10,  8, 0x0),\n    gsSP2Triangles( 9,  8,  7, 0x0, 11, 12, 10, 0x0),\n    gsSP2Triangles(11, 10,  9, 0x0, 13, 14, 12, 0x0),\n    gsSP2Triangles(13, 12, 11, 0x0, 15, 14, 13, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_060022B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 3,  2,  1, 0x0,  5,  6,  4, 0x0),\n    gsSP2Triangles( 5,  4,  3, 0x0,  7,  8,  6, 0x0),\n    gsSP2Triangles( 7,  6,  5, 0x0,  9, 10,  8, 0x0),\n    gsSP2Triangles( 9,  8,  7, 0x0, 11, 12, 10, 0x0),\n    gsSP2Triangles(11, 10,  9, 0x0, 13, 14, 12, 0x0),\n    gsSP2Triangles(13, 12, 11, 0x0, 15, 14, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06004A40 - 0x06005328\nconst Gfx skeeter_seg6_dl_06004A40[] = {\n    gsSPVertex(skeeter_seg6_vertex_060023B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_060024B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 10, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_060025B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_060026B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  6,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_060027B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_060028B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_060029B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 10, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_06002AB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_06002BB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  6,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_06002CB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_06002DB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_06002EB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 10, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_06002FB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_060030B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  6,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_060031B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_060032B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_060033B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 10, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_060034B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_060035B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  6,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_060036B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06005328 - 0x06005358\nconst Gfx skeeter_seg6_dl_06005328[] = {\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPVertex(skeeter_seg6_vertex_060037B0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x06005358 - 0x06005720\nconst Gfx skeeter_seg6_dl_06005358[] = {\n    gsSPVertex(skeeter_seg6_vertex_060037F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_060038F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_060039F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_06003AF0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_06003BF0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_06003CF0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_06003DF0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(skeeter_seg6_vertex_06003EF0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/small_key/geo.inc.c",
    "content": "// 0x0C000188\nconst GeoLayout small_key_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 80),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, small_key_seg5_dl_05006A68),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/small_key/model.inc.c",
    "content": "// Small Key (unused)\n\n// ???\nUNUSED static const u64 small_key_unused_1 = 0;\n\n// 0x05005798\nstatic const Lights1 small_key_seg5_lights_05005798 = gdSPDefLights1(\n    0x3f, 0x19, 0x0c,\n    0xff, 0x64, 0x32, 0x28, 0x28, 0x28\n);\n\n// 0x050057B0\nstatic const Lights1 small_key_seg5_lights_050057B0 = gdSPDefLights1(\n    0x0c, 0x3f, 0x19,\n    0x32, 0xff, 0x64, 0x28, 0x28, 0x28\n);\n\n// 0x050057C8\nstatic const Lights1 small_key_seg5_lights_050057C8 = gdSPDefLights1(\n    0x0c, 0x19, 0x3f,\n    0x32, 0x64, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x050057E0\nstatic const Lights1 small_key_seg5_lights_050057E0 = gdSPDefLights1(\n    0x33, 0x3f, 0x00,\n    0xcc, 0xff, 0x00, 0x28, 0x28, 0x28\n);\n\n// align\nUNUSED static const u64 small_key_unused_2 = 0;\n// 0x05005800\nstatic const Vtx small_key_seg5_vertex_05005800[] = {\n    {{{   -14,   -109,     14}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    14,   -109,     14}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -14,     57,     14}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    14,    -50,    -14}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x00}}},\n    {{{    14,    -73,    -14}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x00}}},\n    {{{   -14,    -50,    -14}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x00}}},\n    {{{   -19,    180,     67}, 0, {     0,      0}, {0x00, 0x77, 0x2d, 0x00}}},\n    {{{    19,    180,     67}, 0, {     0,      0}, {0x00, 0x77, 0x2d, 0x00}}},\n    {{{    14,    195,     28}, 0, {     0,      0}, {0x00, 0x77, 0x2d, 0x00}}},\n    {{{   -14,   -109,    -14}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{    14,   -109,    -14}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{   -14,   -109,     14}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{    14,   -109,     14}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    14,   -109,    -14}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    14,     57,     14}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n};\n\n// 0x050058F0\nstatic const Vtx small_key_seg5_vertex_050058F0[] = {\n    {{{   -14,    -14,    -14}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{   -14,     57,     14}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{   -14,     57,    -14}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{   -14,    195,    -28}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{   -14,     57,    -48}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{   -14,     57,    -14}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{    14,    195,     28}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    14,     57,     48}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    14,     57,     14}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{   -14,     57,    -14}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{   -14,     57,    -48}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{    14,     57,    -14}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{   -14,    -14,    -14}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x00}}},\n    {{{   -14,     57,    -14}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x00}}},\n    {{{    14,    -14,    -14}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x00}}},\n};\n\n// 0x050059E0\nstatic const Vtx small_key_seg5_vertex_050059E0[] = {\n    {{{    14,    -73,    -58}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x00}}},\n    {{{    14,   -109,    -58}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x00}}},\n    {{{   -14,    -73,    -58}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x00}}},\n    {{{    14,    -14,    -58}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x00}}},\n    {{{    14,    -50,    -58}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x00}}},\n    {{{   -14,    -14,    -58}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x00}}},\n    {{{    14,   -109,    -14}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    14,   -109,    -58}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    14,    -73,    -14}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    14,    -73,    -14}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{    14,    -73,    -58}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   -14,    -73,    -14}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   -14,    -73,    -14}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{   -14,    -73,    -58}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{   -14,   -109,    -14}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n};\n\n// 0x05005AD0\nstatic const Vtx small_key_seg5_vertex_05005AD0[] = {\n    {{{   -14,   -109,    -14}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{   -14,   -109,    -58}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{    14,   -109,    -14}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{    14,    -50,    -14}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    14,    -50,    -58}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    14,    -14,    -14}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    14,    -14,    -14}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{    14,    -14,    -58}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   -14,    -14,    -14}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   -14,    -14,    -14}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{   -14,    -14,    -58}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{   -14,    -50,    -14}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{   -14,    -50,    -14}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{   -14,    -50,    -58}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{    14,    -50,    -14}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n};\n\n// 0x05005BC0\nstatic const Vtx small_key_seg5_vertex_05005BC0[] = {\n    {{{   -14,     57,     48}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{   -14,     57,     14}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{    14,     57,     48}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{    23,    103,     83}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    23,    149,     83}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -23,    103,     83}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -23,    103,    -83}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x00}}},\n    {{{   -23,    149,    -83}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x00}}},\n    {{{    23,    103,    -83}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x00}}},\n    {{{   -14,     57,     48}, 0, {     0,      0}, {0x00, 0xb5, 0x66, 0x00}}},\n    {{{    23,    103,     83}, 0, {     0,      0}, {0x00, 0xb5, 0x66, 0x00}}},\n    {{{   -23,    103,     83}, 0, {     0,      0}, {0x00, 0xb5, 0x66, 0x00}}},\n    {{{   -23,    103,    -83}, 0, {     0,      0}, {0x00, 0xb5, 0x9a, 0x00}}},\n    {{{    23,    103,    -83}, 0, {     0,      0}, {0x00, 0xb5, 0x9a, 0x00}}},\n    {{{   -14,     57,    -48}, 0, {     0,      0}, {0x00, 0xb5, 0x9a, 0x00}}},\n};\n\n// 0x05005CB0\nstatic const Vtx small_key_seg5_vertex_05005CB0[] = {\n    {{{    14,     57,     14}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    14,    195,    -28}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    14,    195,     28}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    14,     57,    -14}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    14,     57,    -48}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    14,    195,    -28}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{   -14,     57,     14}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{   -14,     57,     48}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{   -14,    195,     28}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{   -14,     57,    -14}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{   -14,    195,     28}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{   -14,    195,    -28}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{    14,    195,     28}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{    14,    195,    -28}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   -14,    195,     28}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n};\n\n// 0x05005DA0\nstatic const Vtx small_key_seg5_vertex_05005DA0[] = {\n    {{{    19,    180,    -67}, 0, {     0,      0}, {0x00, 0x77, 0xd3, 0x00}}},\n    {{{   -19,    180,    -67}, 0, {     0,      0}, {0x00, 0x77, 0xd3, 0x00}}},\n    {{{   -14,    195,    -28}, 0, {     0,      0}, {0x00, 0x77, 0xd3, 0x00}}},\n    {{{   -14,    195,    -28}, 0, {     0,      0}, {0x00, 0x77, 0xd3, 0x00}}},\n    {{{    14,    195,    -28}, 0, {     0,      0}, {0x00, 0x77, 0xd3, 0x00}}},\n    {{{    19,    180,    -67}, 0, {     0,      0}, {0x00, 0x77, 0xd3, 0x00}}},\n    {{{    14,    195,    -28}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   -14,    195,    -28}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   -14,    195,     28}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   -14,     57,    -14}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{   -14,     57,     14}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{   -14,    195,     28}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{   -14,     57,     48}, 0, {     0,      0}, {0x84, 0xfc, 0xe6, 0x00}}},\n    {{{   -23,    103,     83}, 0, {     0,      0}, {0x84, 0xfc, 0xe6, 0x00}}},\n    {{{   -14,    195,     28}, 0, {     0,      0}, {0x84, 0xfc, 0xe6, 0x00}}},\n};\n\n// 0x05005E90\nstatic const Vtx small_key_seg5_vertex_05005E90[] = {\n    {{{   -23,    103,     83}, 0, {     0,      0}, {0x83, 0x00, 0xec, 0x00}}},\n    {{{   -23,    149,     83}, 0, {     0,      0}, {0x83, 0x00, 0xec, 0x00}}},\n    {{{   -14,    195,     28}, 0, {     0,      0}, {0x83, 0x00, 0xec, 0x00}}},\n    {{{   -23,    149,     83}, 0, {     0,      0}, {0x82, 0x0a, 0xf4, 0x00}}},\n    {{{   -19,    180,     67}, 0, {     0,      0}, {0x82, 0x0a, 0xf4, 0x00}}},\n    {{{   -14,    195,     28}, 0, {     0,      0}, {0x82, 0x0a, 0xf4, 0x00}}},\n    {{{    14,     57,    -48}, 0, {     0,      0}, {0x7c, 0xfc, 0x1a, 0x00}}},\n    {{{    23,    103,    -83}, 0, {     0,      0}, {0x7c, 0xfc, 0x1a, 0x00}}},\n    {{{    14,    195,    -28}, 0, {     0,      0}, {0x7c, 0xfc, 0x1a, 0x00}}},\n    {{{    23,    103,    -83}, 0, {     0,      0}, {0x7d, 0x00, 0x14, 0x00}}},\n    {{{    23,    149,    -83}, 0, {     0,      0}, {0x7d, 0x00, 0x14, 0x00}}},\n    {{{    14,    195,    -28}, 0, {     0,      0}, {0x7d, 0x00, 0x14, 0x00}}},\n    {{{    23,    149,    -83}, 0, {     0,      0}, {0x7e, 0x0a, 0x0c, 0x00}}},\n    {{{    19,    180,    -67}, 0, {     0,      0}, {0x7e, 0x0a, 0x0c, 0x00}}},\n    {{{    14,    195,    -28}, 0, {     0,      0}, {0x7e, 0x0a, 0x0c, 0x00}}},\n};\n\n// 0x05005F80\nstatic const Vtx small_key_seg5_vertex_05005F80[] = {\n    {{{    14,     57,     14}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    14,     57,    -14}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    14,    195,    -28}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    23,    103,    -83}, 0, {     0,      0}, {0x00, 0xb5, 0x9a, 0x00}}},\n    {{{    14,     57,    -48}, 0, {     0,      0}, {0x00, 0xb5, 0x9a, 0x00}}},\n    {{{   -14,     57,    -48}, 0, {     0,      0}, {0x00, 0xb5, 0x9a, 0x00}}},\n    {{{   -14,     57,     48}, 0, {     0,      0}, {0x00, 0xb5, 0x66, 0x00}}},\n    {{{    14,     57,     48}, 0, {     0,      0}, {0x00, 0xb5, 0x66, 0x00}}},\n    {{{    23,    103,     83}, 0, {     0,      0}, {0x00, 0xb5, 0x66, 0x00}}},\n    {{{   -23,    149,    -83}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x00}}},\n    {{{    23,    149,    -83}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x00}}},\n    {{{    23,    103,    -83}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x00}}},\n    {{{   -23,    149,    -83}, 0, {     0,      0}, {0x00, 0x38, 0x8e, 0x00}}},\n    {{{   -19,    180,    -67}, 0, {     0,      0}, {0x00, 0x38, 0x8e, 0x00}}},\n    {{{    23,    149,    -83}, 0, {     0,      0}, {0x00, 0x38, 0x8e, 0x00}}},\n};\n\n// 0x05006070\nstatic const Vtx small_key_seg5_vertex_05006070[] = {\n    {{{   -19,    180,    -67}, 0, {     0,      0}, {0x00, 0x38, 0x8e, 0x00}}},\n    {{{    19,    180,    -67}, 0, {     0,      0}, {0x00, 0x38, 0x8e, 0x00}}},\n    {{{    23,    149,    -83}, 0, {     0,      0}, {0x00, 0x38, 0x8e, 0x00}}},\n    {{{    23,    149,     83}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -23,    149,     83}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -23,    103,     83}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    23,    149,     83}, 0, {     0,      0}, {0x00, 0x38, 0x72, 0x00}}},\n    {{{    19,    180,     67}, 0, {     0,      0}, {0x00, 0x38, 0x72, 0x00}}},\n    {{{   -23,    149,     83}, 0, {     0,      0}, {0x00, 0x38, 0x72, 0x00}}},\n    {{{    19,    180,     67}, 0, {     0,      0}, {0x00, 0x38, 0x72, 0x00}}},\n    {{{   -19,    180,     67}, 0, {     0,      0}, {0x00, 0x38, 0x72, 0x00}}},\n    {{{   -23,    149,     83}, 0, {     0,      0}, {0x00, 0x38, 0x72, 0x00}}},\n    {{{   -14,     57,     14}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{    14,     57,     14}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{    14,     57,     48}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n};\n\n// 0x05006160\nstatic const Vtx small_key_seg5_vertex_05006160[] = {\n    {{{   -14,    -50,    -58}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{    14,    -50,    -58}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{    14,    -50,    -14}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{   -14,    -14,    -58}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{   -14,    -50,    -58}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{   -14,    -50,    -14}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{    14,    -14,    -58}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   -14,    -14,    -58}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   -14,    -14,    -14}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{    14,    -50,    -58}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    14,    -14,    -58}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    14,    -14,    -14}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{   -14,   -109,    -58}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{    14,   -109,    -58}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{    14,   -109,    -14}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n};\n\n// 0x05006250\nstatic const Vtx small_key_seg5_vertex_05006250[] = {\n    {{{   -14,    -73,    -58}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{   -14,   -109,    -58}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{   -14,   -109,    -14}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{    14,    -73,    -58}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   -14,    -73,    -58}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   -14,    -73,    -14}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{    14,   -109,    -58}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    14,    -73,    -58}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    14,    -73,    -14}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    14,    -50,    -58}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x00}}},\n    {{{   -14,    -50,    -58}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x00}}},\n    {{{   -14,    -14,    -58}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x00}}},\n    {{{    14,   -109,    -58}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x00}}},\n    {{{   -14,   -109,    -58}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x00}}},\n    {{{   -14,    -73,    -58}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x00}}},\n};\n\n// 0x05006340\nstatic const Vtx small_key_seg5_vertex_05006340[] = {\n    {{{   -14,     57,    -14}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x00}}},\n    {{{    14,     57,    -14}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x00}}},\n    {{{    14,    -14,    -14}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x00}}},\n    {{{   -14,     57,    -48}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{    14,     57,    -48}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{    14,     57,    -14}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{    14,    195,     28}, 0, {     0,      0}, {0x7c, 0xfc, 0xe6, 0x00}}},\n    {{{    23,    103,     83}, 0, {     0,      0}, {0x7c, 0xfc, 0xe6, 0x00}}},\n    {{{    14,     57,     48}, 0, {     0,      0}, {0x7c, 0xfc, 0xe6, 0x00}}},\n    {{{    14,    195,     28}, 0, {     0,      0}, {0x7d, 0x00, 0xec, 0x00}}},\n    {{{    23,    149,     83}, 0, {     0,      0}, {0x7d, 0x00, 0xec, 0x00}}},\n    {{{    23,    103,     83}, 0, {     0,      0}, {0x7d, 0x00, 0xec, 0x00}}},\n    {{{    14,    195,     28}, 0, {     0,      0}, {0x7e, 0x0a, 0xf4, 0x00}}},\n    {{{    19,    180,     67}, 0, {     0,      0}, {0x7e, 0x0a, 0xf4, 0x00}}},\n    {{{    23,    149,     83}, 0, {     0,      0}, {0x7e, 0x0a, 0xf4, 0x00}}},\n};\n\n// 0x05006430\nstatic const Vtx small_key_seg5_vertex_05006430[] = {\n    {{{   -14,    195,    -28}, 0, {     0,      0}, {0x84, 0xfc, 0x1a, 0x00}}},\n    {{{   -23,    103,    -83}, 0, {     0,      0}, {0x84, 0xfc, 0x1a, 0x00}}},\n    {{{   -14,     57,    -48}, 0, {     0,      0}, {0x84, 0xfc, 0x1a, 0x00}}},\n    {{{   -14,    195,    -28}, 0, {     0,      0}, {0x83, 0x00, 0x14, 0x00}}},\n    {{{   -23,    149,    -83}, 0, {     0,      0}, {0x83, 0x00, 0x14, 0x00}}},\n    {{{   -23,    103,    -83}, 0, {     0,      0}, {0x83, 0x00, 0x14, 0x00}}},\n    {{{   -14,    195,    -28}, 0, {     0,      0}, {0x82, 0x0a, 0x0c, 0x00}}},\n    {{{   -19,    180,    -67}, 0, {     0,      0}, {0x82, 0x0a, 0x0c, 0x00}}},\n    {{{   -23,    149,    -83}, 0, {     0,      0}, {0x82, 0x0a, 0x0c, 0x00}}},\n    {{{   -14,    -14,    -14}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{   -14,   -109,     14}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{   -14,     57,     14}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{   -14,    -14,    -14}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{   -14,    -50,    -14}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{   -14,   -109,     14}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n};\n\n// 0x05006520\nstatic const Vtx small_key_seg5_vertex_05006520[] = {\n    {{{   -14,    -50,    -14}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{   -14,    -73,    -14}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{   -14,   -109,     14}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{   -14,    -73,    -14}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{   -14,   -109,    -14}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{   -14,   -109,     14}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{    14,   -109,    -14}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    14,    -73,    -14}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    14,     57,     14}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    14,    -73,    -14}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    14,    -50,    -14}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    14,     57,     14}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    14,    -50,    -14}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    14,    -14,    -14}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    14,     57,     14}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n};\n\n// 0x05006610\nstatic const Vtx small_key_seg5_vertex_05006610[] = {\n    {{{    14,    -14,    -14}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    14,     57,    -14}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    14,     57,     14}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    14,   -109,    -14}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{    14,   -109,     14}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{   -14,   -109,     14}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{    14,    195,     28}, 0, {     0,      0}, {0x00, 0x77, 0x2d, 0x00}}},\n    {{{   -14,    195,     28}, 0, {     0,      0}, {0x00, 0x77, 0x2d, 0x00}}},\n    {{{   -19,    180,     67}, 0, {     0,      0}, {0x00, 0x77, 0x2d, 0x00}}},\n    {{{    14,    -73,    -14}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x00}}},\n    {{{   -14,    -73,    -14}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x00}}},\n    {{{   -14,    -50,    -14}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x00}}},\n    {{{    14,   -109,     14}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    14,     57,     14}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -14,     57,     14}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n};\n\n// 0x05006700 - 0x05006A08\nconst Gfx small_key_seg5_dl_05006700[] = {\n    gsSPVertex(small_key_seg5_vertex_05005800, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(small_key_seg5_vertex_050058F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(small_key_seg5_vertex_050059E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(small_key_seg5_vertex_05005AD0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(small_key_seg5_vertex_05005BC0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(small_key_seg5_vertex_05005CB0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(small_key_seg5_vertex_05005DA0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(small_key_seg5_vertex_05005E90, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(small_key_seg5_vertex_05005F80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(small_key_seg5_vertex_05006070, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(small_key_seg5_vertex_05006160, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(small_key_seg5_vertex_05006250, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(small_key_seg5_vertex_05006340, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(small_key_seg5_vertex_05006430, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(small_key_seg5_vertex_05006520, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(small_key_seg5_vertex_05006610, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05006A08 - 0x05006A28\nconst Gfx small_key_seg5_dl_05006A08[] = {\n    gsSPSetLights1(small_key_seg5_lights_050057C8),\n    gsSPBranchList(small_key_seg5_dl_05006700),\n};\n\n// 0x05006A28 - 0x05006A48\nconst Gfx small_key_seg5_dl_05006A28[] = {\n    gsSPSetLights1(small_key_seg5_lights_050057B0),\n    gsSPBranchList(small_key_seg5_dl_05006700),\n};\n\n// 0x05006A48 - 0x05006A68\nconst Gfx small_key_seg5_dl_05006A48[] = {\n    gsSPSetLights1(small_key_seg5_lights_05005798),\n    gsSPBranchList(small_key_seg5_dl_05006700),\n};\n\n// 0x05006A68 - 0x05006A88\nconst Gfx small_key_seg5_dl_05006A68[] = {\n    gsSPSetLights1(small_key_seg5_lights_050057E0),\n    gsSPBranchList(small_key_seg5_dl_05006700),\n};\n"
  },
  {
    "path": "actors/smoke/model.inc.c",
    "content": "// Smoke\n\n// 0x05007280\nstatic const Vtx smoke_seg5_vertex_05007280[] = {\n    {{{    26,     26,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{   -25,     26,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{   -25,    -25,      0}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{    26,    -25,      0}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n};\n\n// 0x050072C0\nALIGNED8 static const Texture smoke_seg5_texture_050072C0[] = {\n#include \"actors/smoke/smoke.ia16.inc.c\"\n};\n\n// 0x05007AC0 - 0x05007AF8\nconst Gfx smoke_seg5_dl_05007AC0[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, smoke_seg5_texture_050072C0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(smoke_seg5_vertex_05007280, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05007AF8 - 0x05007B68\nconst Gfx smoke_seg5_dl_05007AF8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(smoke_seg5_dl_05007AC0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/snowman/anims/anim_0500CED8.inc.c",
    "content": "// 0x0500CD58\nstatic const s16 snowman_seg5_animvalue_0500CD58[] = {\n    0x0000, 0x00B9, 0x3FFF, 0xFA95, 0xFA9D, 0xFAAF, 0xFAC1, 0xFAC9,\n    0xFABE, 0xFA95, 0xF8FC, 0xF91A, 0xF966, 0xF9C8, 0xFA2B, 0xFA77,\n    0xFA95, 0x2242, 0x221B, 0x21C6, 0x2170, 0x214A, 0x2180, 0x2242,\n    0x29E9, 0x2958, 0x27EE, 0x2616, 0x243E, 0x22D3, 0x2242, 0xF646,\n    0xF650, 0xF666, 0xF67C, 0xF686, 0xF678, 0xF646, 0xF44B, 0xF471,\n    0xF4CE, 0xF548, 0xF5C2, 0xF620, 0xF646, 0x0659, 0x04FB, 0x02AF,\n    0x022D, 0x062B, 0x1BA0, 0x313C, 0x346C, 0x315B, 0x2B7C, 0x223C,\n    0x15DA, 0x0B01, 0x0659, 0x0107, 0x00AA, 0xFFD3, 0xFEDF, 0xFE2E,\n    0xFDF1, 0xFE6C, 0x0000, 0x01F7, 0x0322, 0x0303, 0x0244, 0x016D,\n    0x0107, 0x6136, 0x6531, 0x6D55, 0x73F1, 0x7354, 0x5807, 0x3C79,\n    0x3DFA, 0x48BA, 0x5228, 0x5776, 0x5C4F, 0x5FD8, 0x6136, 0xE001,\n    0xC001, 0xE001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0002,\n    0x0005, 0x0004, 0x0004, 0x0003, 0x0002, 0x0001, 0x0000, 0x0000,\n    0x0000, 0xFDB9, 0xF8F1, 0xF4BC, 0xF430, 0x0144, 0x0DDA, 0x0E0C,\n    0x0C72, 0x09AF, 0x066A, 0x0348, 0x00ED, 0x0000, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x4002, 0x4004, 0x4003, 0x4003, 0x4002,\n    0x4001, 0x4000, 0x3FFF, 0x3FFF,\n};\n\n// 0x0500CE60\nstatic const u16 snowman_seg5_animindex_0500CE60[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x000E, 0x005A, 0x000E, 0x0068, 0x000E, 0x0076,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0057, 0x0001, 0x0058, 0x0001, 0x0059,\n    0x000E, 0x002D, 0x000E, 0x003B, 0x000E, 0x0049,\n    0x000E, 0x0003, 0x000E, 0x0011, 0x000E, 0x001F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x0500CED8\nstatic const struct Animation snowman_seg5_anim_0500CED8 = {\n    1,\n    0,\n    0,\n    0,\n    0x0E,\n    ANIMINDEX_NUMPARTS(snowman_seg5_animindex_0500CE60),\n    snowman_seg5_animvalue_0500CD58,\n    snowman_seg5_animindex_0500CE60,\n    0,\n};\n"
  },
  {
    "path": "actors/snowman/anims/anim_0500D100.inc.c",
    "content": "// 0x0500CEF0\nstatic const s16 snowman_seg5_animvalue_0500CEF0[] = {\n    0x0000, 0x00B9, 0x3FFF, 0xFA95, 0xFAD8, 0xFB7D, 0xFC4F, 0xFD19,\n    0xFDA7, 0xFE0D, 0xFE5E, 0xFE63, 0xFDE7, 0xFC11, 0xF974, 0xF7FE,\n    0xF937, 0xFB96, 0xFC65, 0xF7D6, 0xF39A, 0xF70A, 0xFB77, 0xFB76,\n    0xFA95, 0x2242, 0x2280, 0x22B2, 0x2212, 0x1FD7, 0x1B39, 0x11F7,\n    0x04A5, 0xF6B6, 0xEB9D, 0xE3F2, 0xDF47, 0xDF8A, 0xE5A8, 0xF0B4,\n    0xFFD0, 0x1C59, 0x33CD, 0x29F0, 0x1A8A, 0x1D4E, 0x2242, 0xF646,\n    0xF6A5, 0xF796, 0xF8D3, 0xFA17, 0xFB1C, 0xFB8F, 0xFBB4, 0xFC2A,\n    0xFD93, 0x01C8, 0x074E, 0x09C2, 0x06C0, 0x00AE, 0xFA57, 0xF2FF,\n    0xEE08, 0xF1E1, 0xF727, 0xF73A, 0xF646, 0x0659, 0x064F, 0x063C,\n    0x062E, 0x0634, 0x065F, 0x06DF, 0x07A3, 0x0858, 0x08A6, 0x087A,\n    0x080D, 0x077F, 0x06F2, 0x0685, 0x0659, 0x0659, 0x0659, 0x0659,\n    0x0659, 0x0659, 0x0659, 0x0107, 0x01D6, 0x038C, 0x0519, 0x056B,\n    0x0372, 0xFC45, 0xF0F8, 0xE67B, 0xE1BA, 0xE3E1, 0xE9A1, 0xF133,\n    0xF8CF, 0xFEAE, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107,\n    0x0107, 0x6136, 0x615C, 0x61AB, 0x61F1, 0x61FC, 0x6198, 0x6037,\n    0x5E0D, 0x5C0D, 0x5B26, 0x5B92, 0x5CB0, 0x5E27, 0x5F9F, 0x60C2,\n    0x6136, 0x6136, 0x6136, 0x6136, 0x6136, 0x6136, 0x6136, 0xE001,\n    0xC001, 0xE001, 0x0000, 0xF883, 0xE899, 0xDA19, 0xD6DA, 0xE383,\n    0xF9B6, 0x12CB, 0x281A, 0x32F9, 0x3330, 0x2E19, 0x2564, 0x1ABE,\n    0x0FD6, 0x065D, 0x0000, 0xFD49, 0xFCF2, 0xFDF7, 0xFF53, 0x0000,\n    0x0000, 0x0180, 0x04B7, 0x07B2, 0x0883, 0x064D, 0x0251, 0xFDC2,\n    0xF9D5, 0xF7BD, 0xF7A6, 0xF8AB, 0xFA67, 0xFC77, 0xFE76, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FFF, 0x3DDB,\n    0x395E, 0x356F, 0x34F5, 0x3973, 0x4102, 0x496D, 0x507F, 0x5403,\n    0x539F, 0x50FC, 0x4CE6, 0x482C, 0x439B, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n};\n\n// 0x0500D088\nstatic const u16 snowman_seg5_animindex_0500D088[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x0016, 0x008A, 0x0016, 0x00A0, 0x0016, 0x00B6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0087, 0x0001, 0x0088, 0x0001, 0x0089,\n    0x0016, 0x0045, 0x0016, 0x005B, 0x0016, 0x0071,\n    0x0016, 0x0003, 0x0016, 0x0019, 0x0016, 0x002F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x0500D100\nstatic const struct Animation snowman_seg5_anim_0500D100 = {\n    0,\n    0,\n    0,\n    0,\n    0x16,\n    ANIMINDEX_NUMPARTS(snowman_seg5_animindex_0500D088),\n    snowman_seg5_animvalue_0500CEF0,\n    snowman_seg5_animindex_0500D088,\n    0,\n};\n"
  },
  {
    "path": "actors/snowman/anims/data.inc.c",
    "content": "#include \"anim_0500CED8.inc.c\"\n#include \"anim_0500D100.inc.c\"\n"
  },
  {
    "path": "actors/snowman/anims/table.inc.c",
    "content": "// 0x0500D118\nconst struct Animation *const snowman_seg5_anims_0500D118[] = {\n    &snowman_seg5_anim_0500CED8,\n    &snowman_seg5_anim_0500D100,\n    NULL,\n    NULL,\n};\n"
  },
  {
    "path": "actors/snowman/geo.inc.c",
    "content": "// 0x0C00021C\nconst GeoLayout mr_blizzard_hidden_geo[] = {\n    GEO_SCALE(0x00, 16384),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_BILLBOARD(),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_ALPHA, snowman_seg5_dl_0500C620),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 356, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_BILLBOARD(),\n                    GEO_OPEN_NODE(),\n                        GEO_DISPLAY_LIST(LAYER_ALPHA, snowman_seg5_dl_0500CBF8),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_ALPHA, 356, 0, 0, snowman_seg5_dl_0500CCE8),\n                GEO_ANIMATED_PART(LAYER_ALPHA, 356, 0, 0, snowman_seg5_dl_0500C760),\n                GEO_SWITCH_CASE(2, geo_switch_anim_state),\n                GEO_OPEN_NODE(),\n                    GEO_NODE_START(),\n                    GEO_NODE_START(),\n                    GEO_OPEN_NODE(),\n                        GEO_SCALE(0x00, 65536),\n                        GEO_OPEN_NODE(),\n                            GEO_TRANSLATE_ROTATE_WITH_DL(LAYER_OPAQUE, 490, 14, 43, 305, 0, 248, mario_cap_seg3_dl_03022F48),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 89, 0, -229, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, snowman_seg5_dl_0500C500),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 68, 0, 0, snowman_seg5_dl_0500CAA8),\n                        GEO_ASM(0, geo_update_projectile_pos_from_parent),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 356, 0, 0, NULL),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0C000348\nconst GeoLayout mr_blizzard_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xB4, 160),\n    GEO_OPEN_NODE(),\n        GEO_BRANCH_AND_LINK(mr_blizzard_hidden_geo),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/snowman/model.inc.c",
    "content": "// Snowman\n\n// ???\nUNUSED static const u64 snowman_unused_1 = 1;\n\n// Unreferenced light group\nUNUSED static const Lights1 snowman_lights_unused1 = gdSPDefLights1(\n    0x0d, 0x0c, 0x28,\n    0x35, 0x32, 0xa2, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 snowman_lights_unused2 = gdSPDefLights1(\n    0x3f, 0x00, 0x00,\n    0xff, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 snowman_lights_unused3 = gdSPDefLights1(\n    0x08, 0x07, 0x04,\n    0x23, 0x1c, 0x12, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 snowman_lights_unused4 = gdSPDefLights1(\n    0x03, 0x03, 0x02,\n    0x0e, 0x0d, 0x0b, 0x28, 0x28, 0x28\n);\n\n// 0x05008C70\nALIGNED8 static const Texture snowman_seg5_texture_05008C70[] = {\n#include \"actors/snowman/mr_blizzard_mitten.rgba16.inc.c\"\n};\n\n// 0x05009470\nALIGNED8 static const Texture snowman_seg5_texture_05009470[] = {\n#include \"actors/snowman/mr_blizzard_left_side.rgba16.inc.c\"\n};\n\n// 0x0500A470\nALIGNED8 static const Texture snowman_seg5_texture_0500A470[] = {\n#include \"actors/snowman/mr_blizzard_right_side.rgba16.inc.c\"\n};\n\n// 0x0500B470\nALIGNED8 static const Texture snowman_seg5_texture_0500B470[] = {\n#include \"actors/snowman/mr_blizzard_eye.rgba16.inc.c\"\n};\n\n// 0x0500BC70\nALIGNED8 static const Texture snowman_seg5_texture_0500BC70[] = {\n#include \"actors/snowman/mr_blizzard_mouth.rgba16.inc.c\"\n};\n\n// 0x0500C470\nstatic const Lights1 snowman_seg5_lights_0500C470 = gdSPDefLights1(\n    0x1c, 0x0f, 0x07,\n    0x38, 0x1e, 0x0e, 0x28, 0x28, 0x28\n);\n\n// 0x0500C488\nstatic const Vtx snowman_seg5_vertex_0500C488[] = {\n    {{{   -23,      1,     -6}, 0, {     0,      0}, {0x82, 0xfd, 0xfd, 0xff}}},\n    {{{    76,    -17,     -6}, 0, {     0,      0}, {0xea, 0x84, 0xf9, 0xff}}},\n    {{{    75,     15,     15}, 0, {     0,      0}, {0xe1, 0x36, 0x6e, 0xff}}},\n    {{{    75,     17,    -23}, 0, {     0,      0}, {0xe4, 0x42, 0x99, 0xff}}},\n};\n\n// 0x0500C4C8 - 0x0500C500\nconst Gfx snowman_seg5_dl_0500C4C8[] = {\n    gsSPLight(&snowman_seg5_lights_0500C470.l, 1),\n    gsSPLight(&snowman_seg5_lights_0500C470.a, 2),\n    gsSPVertex(snowman_seg5_vertex_0500C488, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP1Triangle( 0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500C500 - 0x0500C530\nconst Gfx snowman_seg5_dl_0500C500[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(snowman_seg5_dl_0500C4C8),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500C530\nstatic const Vtx snowman_seg5_vertex_0500C530[] = {\n    {{{     0,     76,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -76,    -76,      0}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    -76,      0}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -76,     76,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500C570\nstatic const Vtx snowman_seg5_vertex_0500C570[] = {\n    {{{    76,     76,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    -76,      0}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    76,    -76,      0}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,     76,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500C5B0 - 0x0500C5E8\nconst Gfx snowman_seg5_dl_0500C5B0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snowman_seg5_texture_05009470),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(snowman_seg5_vertex_0500C530, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500C5E8 - 0x0500C620\nconst Gfx snowman_seg5_dl_0500C5E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snowman_seg5_texture_0500A470),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(snowman_seg5_vertex_0500C570, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500C620 - 0x0500C698\nconst Gfx snowman_seg5_dl_0500C620[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(snowman_seg5_dl_0500C5B0),\n    gsSPDisplayList(snowman_seg5_dl_0500C5E8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500C698\nstatic const Vtx snowman_seg5_vertex_0500C698[] = {\n    {{{    69,    191,   -132}, 0, {  -370,   -440}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -63,    230,      0}, 0, {  1472,   1328}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    69,    230,      0}, 0, {  1472,   -440}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -63,    191,   -132}, 0, {  -370,   1328}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    69,    230,      0}, 0, {  -370,   -440}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -63,    191,    133}, 0, {  1472,   1328}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    69,    191,    133}, 0, {  1472,   -440}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -63,    230,      0}, 0, {  -370,   1328}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500C718 - 0x0500C760\nconst Gfx snowman_seg5_dl_0500C718[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snowman_seg5_texture_0500B470),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(snowman_seg5_vertex_0500C698, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500C760 - 0x0500C7D0\nconst Gfx snowman_seg5_dl_0500C760[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(snowman_seg5_dl_0500C718),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500C7D0\nstatic const Lights1 snowman_seg5_lights_0500C7D0 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0500C7E8\nstatic const Vtx snowman_seg5_vertex_0500C7E8[] = {\n    {{{     3,    -44,    -24}, 0, {   672,   1148}, {0xc1, 0xb9, 0xad, 0xff}}},\n    {{{   105,    -63,    -17}, 0, {   720,    626}, {0x31, 0xca, 0x99, 0xff}}},\n    {{{   116,   -101,     11}, 0, {   888,    570}, {0x2d, 0x8c, 0xeb, 0xff}}},\n    {{{    -4,      4,    -29}, 0, {   458,   1184}, {0xad, 0x03, 0xa1, 0xff}}},\n    {{{    96,    -30,    -36}, 0, {   578,    662}, {0x1e, 0xde, 0x8a, 0xff}}},\n    {{{    97,     16,    -36}, 0, {   364,    654}, {0x13, 0x2a, 0x8a, 0xff}}},\n    {{{   208,    -42,     25}, 0, {   588,     84}, {0x57, 0xa8, 0x19, 0xff}}},\n    {{{   128,    -61,      9}, 0, {   704,    502}, {0x69, 0xbf, 0x1b, 0xff}}},\n    {{{    57,    -20,     36}, 0, {   546,    864}, {0x02, 0xf8, 0x7e, 0xff}}},\n    {{{   132,     90,     32}, 0, {    20,    460}, {0x13, 0x52, 0x5e, 0xff}}},\n    {{{   215,     42,     28}, 0, {   206,     34}, {0x45, 0x40, 0xac, 0xff}}},\n    {{{    69,    -56,     36}, 0, {   704,    810}, {0x04, 0xe8, 0x7c, 0xff}}},\n    {{{    -2,     45,    -14}, 0, {   270,   1168}, {0xa1, 0x42, 0xce, 0xff}}},\n    {{{    33,     83,     26}, 0, {    88,    974}, {0xcd, 0x72, 0x0f, 0xff}}},\n    {{{   107,     63,     -2}, 0, {   148,    596}, {0x0f, 0x52, 0xa1, 0xff}}},\n    {{{    36,    -86,     11}, 0, {   850,    988}, {0xbd, 0xa8, 0x3d, 0xff}}},\n};\n\n// 0x0500C8E8\nstatic const Vtx snowman_seg5_vertex_0500C8E8[] = {\n    {{{    69,    -56,     36}, 0, {   704,    810}, {0x04, 0xe8, 0x7c, 0xff}}},\n    {{{    57,    -20,     36}, 0, {   546,    864}, {0x02, 0xf8, 0x7e, 0xff}}},\n    {{{     6,      0,     28}, 0, {   472,   1124}, {0xa3, 0xf5, 0x55, 0xff}}},\n    {{{    33,     83,     26}, 0, {    88,    974}, {0xcd, 0x72, 0x0f, 0xff}}},\n    {{{    -4,      4,    -29}, 0, {   458,   1184}, {0xad, 0x03, 0xa1, 0xff}}},\n    {{{     3,    -44,    -24}, 0, {   672,   1148}, {0xc1, 0xb9, 0xad, 0xff}}},\n    {{{    -2,     45,    -14}, 0, {   270,   1168}, {0xa1, 0x42, 0xce, 0xff}}},\n    {{{    36,    -86,     11}, 0, {   850,    988}, {0xbd, 0xa8, 0x3d, 0xff}}},\n    {{{   116,   -101,     11}, 0, {   888,    570}, {0x2d, 0x8c, 0xeb, 0xff}}},\n};\n\n// 0x0500C978 - 0x0500CAA8\nconst Gfx snowman_seg5_dl_0500C978[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snowman_seg5_texture_05008C70),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&snowman_seg5_lights_0500C7D0.l, 1),\n    gsSPLight(&snowman_seg5_lights_0500C7D0.a, 2),\n    gsSPVertex(snowman_seg5_vertex_0500C7E8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 4,  1,  0, 0x0,  5,  4,  3, 0x0),\n    gsSP2Triangles( 5,  6,  4, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 7,  1,  4, 0x0,  7,  6,  8, 0x0),\n    gsSP2Triangles( 9,  8,  6, 0x0,  9,  6, 10, 0x0),\n    gsSP2Triangles( 5, 10,  6, 0x0,  7,  2,  1, 0x0),\n    gsSP2Triangles( 8, 11,  7, 0x0, 11,  2,  7, 0x0),\n    gsSP2Triangles( 5, 12, 13, 0x0, 13, 14,  5, 0x0),\n    gsSP2Triangles( 5,  3, 12, 0x0,  5, 14, 10, 0x0),\n    gsSP2Triangles(10, 14,  9, 0x0, 13,  9, 14, 0x0),\n    gsSP2Triangles( 8,  9, 13, 0x0,  2, 15,  0, 0x0),\n    gsSPVertex(snowman_seg5_vertex_0500C8E8, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 4,  5,  2, 0x0,  2,  6,  4, 0x0),\n    gsSP2Triangles( 2,  5,  7, 0x0,  0,  2,  7, 0x0),\n    gsSP2Triangles( 3,  6,  2, 0x0,  7,  8,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500CAA8 - 0x0500CB08\nconst Gfx snowman_seg5_dl_0500CAA8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(snowman_seg5_dl_0500C978),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500CB08\nstatic const Vtx snowman_seg5_vertex_0500CB08[] = {\n    {{{     0,     57,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -57,    -57,      0}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    -57,      0}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -57,     57,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500CB48\nstatic const Vtx snowman_seg5_vertex_0500CB48[] = {\n    {{{    57,     57,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    -57,      0}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    57,    -57,      0}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,     57,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500CB88 - 0x0500CBC0\nconst Gfx snowman_seg5_dl_0500CB88[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snowman_seg5_texture_05009470),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(snowman_seg5_vertex_0500CB08, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500CBC0 - 0x0500CBF8\nconst Gfx snowman_seg5_dl_0500CBC0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snowman_seg5_texture_0500A470),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(snowman_seg5_vertex_0500CB48, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500CBF8 - 0x0500CC70\nconst Gfx snowman_seg5_dl_0500CBF8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(snowman_seg5_dl_0500CB88),\n    gsSPDisplayList(snowman_seg5_dl_0500CBC0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500CC70\nstatic const Vtx snowman_seg5_vertex_0500CC70[] = {\n    {{{   -90,    210,    -56}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -134,    182,    -56}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -134,    182,     57}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -90,    210,     57}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500CCB0 - 0x0500CCE8\nconst Gfx snowman_seg5_dl_0500CCB0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snowman_seg5_texture_0500BC70),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(snowman_seg5_vertex_0500CC70, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500CCE8 - 0x0500CD58\nconst Gfx snowman_seg5_dl_0500CCE8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(snowman_seg5_dl_0500CCB0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/snufit/geo.inc.c",
    "content": "// 0x0D0001A0\nconst GeoLayout snufit_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 100),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_snufit_move_mask),\n            GEO_TRANSLATE_NODE(0x00, 0, 0, 0),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_OPAQUE, snufit_seg6_dl_06009748),\n            GEO_CLOSE_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, snufit_seg6_dl_06009498),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, snufit_seg6_dl_06009938),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, snufit_seg6_dl_06009B68),\n            GEO_BILLBOARD(),\n            GEO_OPEN_NODE(),\n                GEO_ASM(0, geo_snufit_scale_body),\n                GEO_SCALE(0x00, 0),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_ALPHA, snufit_seg6_dl_06009A10),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(), //! more close than open nodes\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/snufit/model.inc.c",
    "content": "// Snufit\n\n// 0x060070E0\nALIGNED8 static const Texture snufit_seg6_texture_060070E0[] = {\n#include \"actors/snufit/snufit_body.rgba16.inc.c\"\n};\n\n// 0x060078E0\nALIGNED8 static const Texture snufit_seg6_texture_060078E0[] = {\n#include \"actors/snufit/snufit_eye.rgba16.inc.c\"\n};\n\n// 0x060080E0\nALIGNED8 static const Texture snufit_seg6_texture_060080E0[] = {\n#include \"actors/snufit/snufit_mask_strap.rgba16.inc.c\"\n};\n\n// 0x060084E0\nALIGNED8 static const Texture snufit_seg6_texture_060084E0[] = {\n#include \"actors/snufit/snufit_mouth.rgba16.inc.c\"\n};\n\n// 0x06008CE0\nstatic const Lights1 snufit_seg6_lights_06008CE0 = gdSPDefLights1(\n    0x47, 0x47, 0x47,\n    0xb2, 0xb2, 0xb2, 0x28, 0x28, 0x28\n);\n\n// 0x06008CF8\nstatic const Lights1 snufit_seg6_lights_06008CF8 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x06008D10\nstatic const Vtx snufit_seg6_vertex_06008D10[] = {\n    {{{  -105,    -30,   -106}, 0, {   451,    640}, {0x9b, 0x00, 0xb4, 0xff}}},\n    {{{  -149,     33,      0}, 0, {   547,    320}, {0x83, 0x00, 0xf0, 0xff}}},\n    {{{  -105,     34,   -105}, 0, {   451,    316}, {0xb4, 0x01, 0x9b, 0xff}}},\n    {{{  -149,    -31,      0}, 0, {   547,    646}, {0x83, 0x00, 0x13, 0xff}}},\n    {{{     0,    -30,   -150}, 0, {   220,    638}, {0xef, 0x01, 0x83, 0xff}}},\n    {{{  -127,     32,     50}, 0, {   498,    324}, {0x8c, 0x00, 0x33, 0xff}}},\n    {{{     0,     34,   -149}, 0, {   220,    314}, {0x11, 0x01, 0x83, 0xff}}},\n    {{{  -127,    -32,     49}, 0, {   498,    648}, {0x8d, 0x00, 0x34, 0xff}}},\n    {{{   106,    -30,   -106}, 0, {   -10,    642}, {0x4c, 0x01, 0x9b, 0xff}}},\n    {{{   106,     34,   -105}, 0, {   -10,    318}, {0x65, 0x00, 0xb4, 0xff}}},\n    {{{   150,    -31,      0}, 0, {  -105,    648}, {0x7d, 0x00, 0xf0, 0xff}}},\n    {{{   150,     33,      0}, 0, {  -105,    322}, {0x7d, 0x00, 0x13, 0xff}}},\n    {{{   128,    -32,     49}, 0, {   -56,    650}, {0x74, 0x00, 0x33, 0xff}}},\n    {{{   128,     32,     50}, 0, {   -56,    326}, {0x74, 0x00, 0x33, 0xff}}},\n};\n\n// 0x06008DF0\nstatic const Vtx snufit_seg6_vertex_06008DF0[] = {\n    {{{   -91,    -56,    111}, 0, {   -16,   1362}, {0xb5, 0xd5, 0x5c, 0xff}}},\n    {{{     0,      0,    149}, 0, {   986,    824}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{   -99,      0,    117}, 0, {   -66,    820}, {0xaf, 0xff, 0x61, 0xff}}},\n    {{{     0,     55,    141}, 0, {   962,    260}, {0x00, 0x24, 0x79, 0xff}}},\n    {{{   -91,     56,    112}, 0, {   -12,    254}, {0xb4, 0x28, 0x5c, 0xff}}},\n    {{{     0,    103,    118}, 0, {   890,   -242}, {0xff, 0x4b, 0x66, 0xff}}},\n    {{{     0,    -57,    140}, 0, {    -8,   1364}, {0x00, 0xd9, 0x78, 0xff}}},\n    {{{   100,      0,    117}, 0, {  1010,    820}, {0x51, 0x00, 0x61, 0xff}}},\n    {{{     0,      0,    149}, 0, {     0,    820}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{    92,     56,    112}, 0, {   956,    252}, {0x4b, 0x29, 0x5d, 0xff}}},\n    {{{     0,     55,    141}, 0, {    -8,    252}, {0x00, 0x24, 0x79, 0xff}}},\n    {{{    70,    104,     96}, 0, {   802,   -252}, {0x3a, 0x51, 0x4d, 0xff}}},\n};\n\n// 0x06008EB0\nstatic const Vtx snufit_seg6_vertex_06008EB0[] = {\n    {{{   -37,   -136,     68}, 0, {     0,      0}, {0xde, 0x92, 0x33, 0xff}}},\n    {{{   -53,   -135,     39}, 0, {     0,      0}, {0xc7, 0x93, 0x1c, 0xff}}},\n    {{{     0,   -147,     39}, 0, {     0,      0}, {0x00, 0x83, 0x16, 0xff}}},\n    {{{     0,   -136,     80}, 0, {     0,      0}, {0x05, 0x94, 0x41, 0xff}}},\n    {{{     0,   -104,    116}, 0, {     0,      0}, {0x01, 0xb3, 0x64, 0xff}}},\n    {{{   -69,   -104,     93}, 0, {     0,      0}, {0xc5, 0xae, 0x4b, 0xff}}},\n    {{{   -99,   -103,     39}, 0, {     0,      0}, {0xa7, 0xb4, 0x2f, 0xff}}},\n    {{{    54,   -135,     39}, 0, {     0,      0}, {0x31, 0x8e, 0x17, 0xff}}},\n    {{{    38,   -136,     68}, 0, {     0,      0}, {0x2a, 0x90, 0x29, 0xff}}},\n    {{{   -91,    -56,    111}, 0, {     0,      0}, {0xb5, 0xd5, 0x5c, 0xff}}},\n    {{{     0,    -57,    140}, 0, {     0,      0}, {0x00, 0xd9, 0x78, 0xff}}},\n    {{{  -129,    -56,     40}, 0, {     0,      0}, {0x95, 0xdc, 0x39, 0xff}}},\n    {{{   -99,      0,    117}, 0, {     0,      0}, {0xaf, 0xff, 0x61, 0xff}}},\n    {{{     0,      0,    149}, 0, {     0,      0}, {0x00, 0x00, 0x7e, 0xff}}},\n};\n\n// 0x06008F90\nstatic const Vtx snufit_seg6_vertex_06008F90[] = {\n    {{{     0,    103,    118}, 0, {     0,      0}, {0xff, 0x4b, 0x66, 0xff}}},\n    {{{    38,    136,     71}, 0, {     0,      0}, {0x20, 0x6e, 0x35, 0xff}}},\n    {{{     0,    136,     83}, 0, {     0,      0}, {0xfb, 0x6b, 0x42, 0xff}}},\n    {{{  -129,    -56,     40}, 0, {     0,      0}, {0x95, 0xdc, 0x39, 0xff}}},\n    {{{   -99,      0,    117}, 0, {     0,      0}, {0xaf, 0xff, 0x61, 0xff}}},\n    {{{  -140,      0,     40}, 0, {     0,      0}, {0x91, 0x06, 0x3b, 0xff}}},\n    {{{   -91,     56,    112}, 0, {     0,      0}, {0xb4, 0x28, 0x5c, 0xff}}},\n    {{{  -129,     56,     41}, 0, {     0,      0}, {0x99, 0x30, 0x37, 0xff}}},\n    {{{   -69,    104,     96}, 0, {     0,      0}, {0xc2, 0x51, 0x4a, 0xff}}},\n    {{{   -99,    104,     41}, 0, {     0,      0}, {0xb0, 0x57, 0x2b, 0xff}}},\n    {{{   -37,    136,     71}, 0, {     0,      0}, {0xd6, 0x6f, 0x2b, 0xff}}},\n    {{{   -53,    136,     42}, 0, {     0,      0}, {0xd0, 0x72, 0x1a, 0xff}}},\n    {{{     0,    147,     42}, 0, {     0,      0}, {0x00, 0x7c, 0x17, 0xff}}},\n    {{{    54,    136,     42}, 0, {     0,      0}, {0x38, 0x6d, 0x1e, 0xff}}},\n};\n\n// 0x06009070\nstatic const Vtx snufit_seg6_vertex_06009070[] = {\n    {{{    38,   -136,     68}, 0, {     0,      0}, {0x2a, 0x90, 0x29, 0xff}}},\n    {{{    54,   -135,     39}, 0, {     0,      0}, {0x31, 0x8e, 0x17, 0xff}}},\n    {{{   100,   -103,     39}, 0, {     0,      0}, {0x50, 0xa8, 0x2a, 0xff}}},\n    {{{     0,   -136,     80}, 0, {     0,      0}, {0x05, 0x94, 0x41, 0xff}}},\n    {{{    70,   -104,     93}, 0, {     0,      0}, {0x3e, 0xae, 0x49, 0xff}}},\n    {{{     0,   -104,    116}, 0, {     0,      0}, {0x01, 0xb3, 0x64, 0xff}}},\n    {{{    92,    -56,    111}, 0, {     0,      0}, {0x4c, 0xd5, 0x5b, 0xff}}},\n    {{{     0,    -57,    140}, 0, {     0,      0}, {0x00, 0xd9, 0x78, 0xff}}},\n    {{{   100,      0,    117}, 0, {     0,      0}, {0x51, 0x00, 0x61, 0xff}}},\n    {{{     0,     55,    141}, 0, {     0,      0}, {0x00, 0x24, 0x79, 0xff}}},\n    {{{    70,    104,     96}, 0, {     0,      0}, {0x3a, 0x51, 0x4d, 0xff}}},\n    {{{     0,    103,    118}, 0, {     0,      0}, {0xff, 0x4b, 0x66, 0xff}}},\n    {{{    38,    136,     71}, 0, {     0,      0}, {0x20, 0x6e, 0x35, 0xff}}},\n    {{{   130,    -56,     40}, 0, {     0,      0}, {0x66, 0xce, 0x37, 0xff}}},\n    {{{   141,      0,     40}, 0, {     0,      0}, {0x6f, 0xf9, 0x3b, 0xff}}},\n    {{{   130,     56,     41}, 0, {     0,      0}, {0x6b, 0x22, 0x39, 0xff}}},\n};\n\n// 0x06009170\nstatic const Vtx snufit_seg6_vertex_06009170[] = {\n    {{{   100,      0,    117}, 0, {     0,      0}, {0x51, 0x00, 0x61, 0xff}}},\n    {{{   130,     56,     41}, 0, {     0,      0}, {0x6b, 0x22, 0x39, 0xff}}},\n    {{{    92,     56,    112}, 0, {     0,      0}, {0x4b, 0x29, 0x5d, 0xff}}},\n    {{{   100,    104,     41}, 0, {     0,      0}, {0x59, 0x4b, 0x30, 0xff}}},\n    {{{    70,    104,     96}, 0, {     0,      0}, {0x3a, 0x51, 0x4d, 0xff}}},\n    {{{    54,    136,     42}, 0, {     0,      0}, {0x38, 0x6d, 0x1e, 0xff}}},\n    {{{    38,    136,     71}, 0, {     0,      0}, {0x20, 0x6e, 0x35, 0xff}}},\n};\n\n// 0x060091E0 - 0x06009278\nconst Gfx snufit_seg6_dl_060091E0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snufit_seg6_texture_060080E0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&snufit_seg6_lights_06008CE0.l, 1),\n    gsSPLight(&snufit_seg6_lights_06008CE0.a, 2),\n    gsSPVertex(snufit_seg6_vertex_06008D10, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  0,  2, 0x0,  3,  5,  1, 0x0),\n    gsSP2Triangles( 4,  2,  6, 0x0,  3,  7,  5, 0x0),\n    gsSP2Triangles( 8,  4,  6, 0x0,  8,  6,  9, 0x0),\n    gsSP2Triangles(10,  8,  9, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(12, 10, 11, 0x0, 12, 11, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06009278 - 0x060092F0\nconst Gfx snufit_seg6_dl_06009278[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snufit_seg6_texture_060078E0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&snufit_seg6_lights_06008CF8.l, 1),\n    gsSPLight(&snufit_seg6_lights_06008CF8.a, 2),\n    gsSPVertex(snufit_seg6_vertex_06008DF0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x060092F0 - 0x06009498\nconst Gfx snufit_seg6_dl_060092F0[] = {\n    gsSPVertex(snufit_seg6_vertex_06008EB0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 1,  0,  5, 0x0,  1,  5,  6, 0x0),\n    gsSP2Triangles( 7,  8,  2, 0x0,  8,  3,  2, 0x0),\n    gsSP2Triangles( 6,  5,  9, 0x0,  5, 10,  9, 0x0),\n    gsSP2Triangles( 5,  4, 10, 0x0,  6,  9, 11, 0x0),\n    gsSP2Triangles(11,  9, 12, 0x0,  9, 10, 13, 0x0),\n    gsSPVertex(snufit_seg6_vertex_06008F90, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  6,  0,  8, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  9,  8, 10, 0x0),\n    gsSP2Triangles( 8,  2, 10, 0x0,  8,  0,  2, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 11, 10, 12, 0x0),\n    gsSP2Triangles(10,  2, 12, 0x0,  2,  1, 12, 0x0),\n    gsSP1Triangle( 1, 13, 12, 0x0),\n    gsSPVertex(snufit_seg6_vertex_06009070, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  0,  4, 0x0,  5,  4,  6, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  7,  6,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 11, 10, 12, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  4, 13,  6, 0x0),\n    gsSP2Triangles( 4,  2, 13, 0x0,  6, 14,  8, 0x0),\n    gsSP2Triangles( 6, 13, 14, 0x0,  8, 14, 15, 0x0),\n    gsSPVertex(snufit_seg6_vertex_06009170, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  3,  5, 0x0),\n    gsSP1Triangle( 2,  1,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06009498 - 0x06009530\nconst Gfx snufit_seg6_dl_06009498[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_BLENDRGBA, G_CC_BLENDRGBA),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(snufit_seg6_dl_060091E0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(snufit_seg6_dl_06009278),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(snufit_seg6_dl_060092F0),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x06009530\nstatic const Lights1 snufit_seg6_lights_06009530 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x06009548\nstatic const Vtx snufit_seg6_vertex_06009548[] = {\n    {{{   -33,     59,     -6}, 0, {   474,     68}, {0xae, 0x60, 0x00, 0xff}}},\n    {{{   -68,      0,     -6}, 0, {   475,    340}, {0x84, 0xe8, 0x00, 0xff}}},\n    {{{   -68,      0,     62}, 0, {    21,    332}, {0x8c, 0x17, 0x2d, 0xff}}},\n    {{{   -33,     59,     62}, 0, {    20,     62}, {0xe0, 0x5f, 0x4c, 0xff}}},\n    {{{    34,     59,     -6}, 0, {   474,     68}, {0x29, 0x78, 0x00, 0xff}}},\n    {{{   -33,    -59,     62}, 0, {    22,    604}, {0xd3, 0xcb, 0x69, 0xff}}},\n    {{{    34,     59,     62}, 0, {    20,     62}, {0x41, 0x4d, 0x4c, 0xff}}},\n    {{{   -33,    -59,     -6}, 0, {   476,    610}, {0xd7, 0x88, 0x00, 0xff}}},\n    {{{    69,      0,     -6}, 0, {   475,    340}, {0x7c, 0x18, 0x00, 0xff}}},\n    {{{    69,      0,     62}, 0, {    21,    332}, {0x63, 0xed, 0x4c, 0xff}}},\n    {{{    34,    -59,     -6}, 0, {   476,    610}, {0x52, 0xa0, 0x00, 0xff}}},\n    {{{    34,    -59,     62}, 0, {    22,    604}, {0x26, 0x90, 0x2c, 0xff}}},\n};\n\n// 0x06009608\nstatic const Vtx snufit_seg6_vertex_06009608[] = {\n    {{{   -33,    -59,     62}, 0, {   248,    960}, {0xd3, 0xcb, 0x69, 0xff}}},\n    {{{    34,     59,     62}, 0, {   744,     32}, {0x41, 0x4d, 0x4c, 0xff}}},\n    {{{   -33,     59,     62}, 0, {   248,     32}, {0xe0, 0x5f, 0x4c, 0xff}}},\n    {{{   -68,      0,     62}, 0, {     0,    496}, {0x8c, 0x17, 0x2d, 0xff}}},\n    {{{    34,    -59,     62}, 0, {   744,    960}, {0x26, 0x90, 0x2c, 0xff}}},\n    {{{    69,      0,     62}, 0, {   992,    496}, {0x63, 0xed, 0x4c, 0xff}}},\n};\n\n// 0x06009668 - 0x06009700\nconst Gfx snufit_seg6_dl_06009668[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snufit_seg6_texture_060080E0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&snufit_seg6_lights_06009530.l, 1),\n    gsSPLight(&snufit_seg6_lights_06009530.a, 2),\n    gsSPVertex(snufit_seg6_vertex_06009548, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  0,  3, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0,  1,  7,  5, 0x0),\n    gsSP2Triangles( 8,  4,  6, 0x0,  8,  6,  9, 0x0),\n    gsSP2Triangles(10,  8,  9, 0x0,  7, 10, 11, 0x0),\n    gsSP2Triangles(10,  9, 11, 0x0,  7, 11,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06009700 - 0x06009748\nconst Gfx snufit_seg6_dl_06009700[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snufit_seg6_texture_060084E0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(snufit_seg6_vertex_06009608, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  0,  5,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06009748 - 0x060097C8\nconst Gfx snufit_seg6_dl_06009748[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(snufit_seg6_dl_06009668),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(snufit_seg6_dl_06009700),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x060097C8\nstatic const Lights1 snufit_seg6_lights_060097C8 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x060097E0\nstatic const Vtx snufit_seg6_vertex_060097E0[] = {\n    {{{   -23,      7,    119}, 0, {   -47,    152}, {0xad, 0x5f, 0x00, 0xff}}},\n    {{{   -46,    -33,    118}, 0, {   -42,    360}, {0x84, 0xea, 0x00, 0xff}}},\n    {{{   -46,    -33,    174}, 0, {   392,    364}, {0x84, 0x18, 0x00, 0xff}}},\n    {{{   -23,    -74,    118}, 0, {   -36,    570}, {0xd7, 0x89, 0x00, 0xff}}},\n    {{{   -23,    -74,    174}, 0, {   397,    574}, {0xad, 0xa1, 0x00, 0xff}}},\n    {{{    24,    -74,    118}, 0, {   -36,    570}, {0x53, 0xa1, 0x00, 0xff}}},\n    {{{    24,    -74,    174}, 0, {   397,    574}, {0x29, 0x89, 0x00, 0xff}}},\n    {{{   -23,      7,    175}, 0, {   386,    156}, {0xd7, 0x77, 0x00, 0xff}}},\n    {{{    47,    -33,    118}, 0, {   -42,    360}, {0x7c, 0x18, 0x00, 0xff}}},\n    {{{    47,    -33,    174}, 0, {   392,    364}, {0x7c, 0xea, 0x00, 0xff}}},\n    {{{    24,      7,    119}, 0, {   -47,    152}, {0x29, 0x77, 0x00, 0xff}}},\n    {{{    24,      7,    175}, 0, {   386,    156}, {0x53, 0x5f, 0x00, 0xff}}},\n};\n\n// 0x060098A0 - 0x06009938\nconst Gfx snufit_seg6_dl_060098A0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snufit_seg6_texture_060080E0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&snufit_seg6_lights_060097C8.l, 1),\n    gsSPLight(&snufit_seg6_lights_060097C8.a, 2),\n    gsSPVertex(snufit_seg6_vertex_060097E0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  3,  5,  6, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  0,  2,  7, 0x0),\n    gsSP2Triangles( 5,  8,  9, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 8, 11,  9, 0x0, 10,  0,  7, 0x0),\n    gsSP2Triangles(10,  7, 11, 0x0,  5,  9,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06009938 - 0x06009998\nconst Gfx snufit_seg6_dl_06009938[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(snufit_seg6_dl_060098A0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x06009998\nstatic const Vtx snufit_seg6_vertex_06009998[] = {\n    {{{    38,     38,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -37,     38,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -37,    -37,      0}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    38,    -37,      0}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x060099D8 - 0x06009A10\nconst Gfx snufit_seg6_dl_060099D8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snufit_seg6_texture_060070E0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(snufit_seg6_vertex_06009998, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06009A10 - 0x06009A80\nconst Gfx snufit_seg6_dl_06009A10[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(snufit_seg6_dl_060099D8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x06009A80\nstatic const Lights1 snufit_seg6_lights_06009A80 = gdSPDefLights1(\n    0x65, 0x08, 0x08,\n    0xfe, 0x14, 0x14, 0x28, 0x28, 0x28\n);\n\n// 0x06009A98\nstatic const Vtx snufit_seg6_vertex_06009A98[] = {\n    {{{  -177,   -140,    -68}, 0, {     0,      0}, {0xb9, 0x9c, 0xe2, 0xff}}},\n    {{{  -124,    -35,    -44}, 0, {     0,      0}, {0x99, 0x3d, 0xd8, 0xff}}},\n    {{{   -71,   -112,    -60}, 0, {     0,      0}, {0x1c, 0xb1, 0xa2, 0xff}}},\n    {{{   -72,   -105,     22}, 0, {     0,      0}, {0xd4, 0xad, 0x54, 0xff}}},\n    {{{    72,   -112,    -60}, 0, {     0,      0}, {0xe4, 0xb1, 0xa2, 0xff}}},\n    {{{   125,    -35,    -44}, 0, {     0,      0}, {0x67, 0x3d, 0xd8, 0xff}}},\n    {{{   178,   -140,    -68}, 0, {     0,      0}, {0x47, 0x9c, 0xe2, 0xff}}},\n    {{{    73,   -105,     22}, 0, {     0,      0}, {0x2c, 0xad, 0x54, 0xff}}},\n};\n\n// 0x06009B18 - 0x06009B68\nconst Gfx snufit_seg6_dl_06009B18[] = {\n    gsSPLight(&snufit_seg6_lights_06009A80.l, 1),\n    gsSPLight(&snufit_seg6_lights_06009A80.a, 2),\n    gsSPVertex(snufit_seg6_vertex_06009A98, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 1,  0,  3, 0x0,  4,  5,  6, 0x0),\n    gsSP2Triangles( 7,  6,  5, 0x0,  6,  7,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06009B68 - 0x06009B98\nconst Gfx snufit_seg6_dl_06009B68[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(snufit_seg6_dl_06009B18),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/sparkle/geo.inc.c",
    "content": "// 0x170001BC\nconst GeoLayout sparkles_geo[] = {\n    GEO_SWITCH_CASE(12, geo_switch_anim_state),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, sparkles_seg4_dl_0402A570),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, sparkles_seg4_dl_0402A570),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, sparkles_seg4_dl_0402A558),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, sparkles_seg4_dl_0402A558),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, sparkles_seg4_dl_0402A540),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, sparkles_seg4_dl_0402A540),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, sparkles_seg4_dl_0402A528),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, sparkles_seg4_dl_0402A528),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, sparkles_seg4_dl_0402A510),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, sparkles_seg4_dl_0402A510),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, sparkles_seg4_dl_0402A4F8),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, sparkles_seg4_dl_0402A4F8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/sparkle/model.inc.c",
    "content": "// Sparkles\n\n// 0x04027450\nstatic const Vtx sparkles_seg4_vertex_04027450[] = {\n    {{{   -32,      0,      0}, 0, {     0,   1984}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    32,      0,      0}, 0, {  1984,   1984}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    32,     64,      0}, 0, {  1984,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -32,     64,      0}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n};\n\n// 0x04027490\nALIGNED8 static const Texture sparkles_seg4_texture_04027490[] = {\n#include \"actors/sparkle/sparkle_0.rgba16.inc.c\"\n};\n\n// 0x04027C90\nALIGNED8 static const Texture sparkles_seg4_texture_04027C90[] = {\n#include \"actors/sparkle/sparkle_1.rgba16.inc.c\"\n};\n\n// 0x04028490\nALIGNED8 static const Texture sparkles_seg4_texture_04028490[] = {\n#include \"actors/sparkle/sparkle_2.rgba16.inc.c\"\n};\n\n// 0x04028C90\nALIGNED8 static const Texture sparkles_seg4_texture_04028C90[] = {\n#include \"actors/sparkle/sparkle_3.rgba16.inc.c\"\n};\n\n// 0x04029490\nALIGNED8 static const Texture sparkles_seg4_texture_04029490[] = {\n#include \"actors/sparkle/sparkle_4.rgba16.inc.c\"\n};\n\n// 0x04029C90\nALIGNED8 static const Texture sparkles_seg4_texture_04029C90[] = {\n#include \"actors/sparkle/sparkle_5.rgba16.inc.c\"\n};\n\n// 0x0402A490 - 0x0402A4F8\nconst Gfx sparkles_seg4_dl_0402A490[] = {\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPVertex(sparkles_seg4_vertex_04027450, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPTexture(0x0001, 0x0001, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0402A4F8 - 0x0402A510\nconst Gfx sparkles_seg4_dl_0402A4F8[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sparkles_seg4_texture_04027490),\n    gsSPBranchList(sparkles_seg4_dl_0402A490),\n};\n\n// 0x0402A510 - 0x0402A528\nconst Gfx sparkles_seg4_dl_0402A510[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sparkles_seg4_texture_04027C90),\n    gsSPBranchList(sparkles_seg4_dl_0402A490),\n};\n\n// 0x0402A528 - 0x0402A540\nconst Gfx sparkles_seg4_dl_0402A528[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sparkles_seg4_texture_04028490),\n    gsSPBranchList(sparkles_seg4_dl_0402A490),\n};\n\n// 0x0402A540 - 0x0402A558\nconst Gfx sparkles_seg4_dl_0402A540[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sparkles_seg4_texture_04028C90),\n    gsSPBranchList(sparkles_seg4_dl_0402A490),\n};\n\n// 0x0402A558 - 0x0402A570\nconst Gfx sparkles_seg4_dl_0402A558[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sparkles_seg4_texture_04029490),\n    gsSPBranchList(sparkles_seg4_dl_0402A490),\n};\n\n// 0x0402A570 - 0x0402A588\nconst Gfx sparkles_seg4_dl_0402A570[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sparkles_seg4_texture_04029C90),\n    gsSPBranchList(sparkles_seg4_dl_0402A490),\n};\n"
  },
  {
    "path": "actors/sparkle_animation/geo.inc.c",
    "content": "// 0x17000284\nconst GeoLayout sparkles_animation_geo[] = {\n    GEO_SWITCH_CASE(9, geo_switch_anim_state),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, sparkles_animation_seg4_dl_04035300),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, sparkles_animation_seg4_dl_04035318),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, sparkles_animation_seg4_dl_04035330),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, sparkles_animation_seg4_dl_04035348),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, sparkles_animation_seg4_dl_04035360),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, sparkles_animation_seg4_dl_04035348),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, sparkles_animation_seg4_dl_04035330),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, sparkles_animation_seg4_dl_04035318),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, sparkles_animation_seg4_dl_04035300),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/sparkle_animation/model.inc.c",
    "content": "// Sparkles Animation\n\n// 0x04032A48\nstatic const Vtx sparkles_animation_seg4_vertex_04032A48[] = {\n    {{{   -32,      0,      0}, 0, {     0,    992}, {0xff, 0xff, 0x64, 0xff}}},\n    {{{    32,      0,      0}, 0, {   992,    992}, {0xff, 0xff, 0x64, 0xff}}},\n    {{{    32,     64,      0}, 0, {   992,      0}, {0xff, 0xff, 0x64, 0xff}}},\n    {{{   -32,     64,      0}, 0, {     0,      0}, {0xff, 0xff, 0x64, 0xff}}},\n};\n\n// 0x04032A88\nALIGNED8 static const Texture sparkles_animation_seg4_texture_04032A88[] = {\n#include \"actors/sparkle_animation/sparkle_animation_0.ia16.inc.c\"\n};\n\n// 0x04033288\nALIGNED8 static const Texture sparkles_animation_seg4_texture_04033288[] = {\n#include \"actors/sparkle_animation/sparkle_animation_1.ia16.inc.c\"\n};\n\n// 0x04033A88\nALIGNED8 static const Texture sparkles_animation_seg4_texture_04033A88[] = {\n#include \"actors/sparkle_animation/sparkle_animation_2.ia16.inc.c\"\n};\n\n// 0x04034288\nALIGNED8 static const Texture sparkles_animation_seg4_texture_04034288[] = {\n#include \"actors/sparkle_animation/sparkle_animation_3.ia16.inc.c\"\n};\n\n// 0x04034A88\nALIGNED8 static const Texture sparkles_animation_seg4_texture_04034A88[] = {\n#include \"actors/sparkle_animation/sparkle_animation_4.ia16.inc.c\"\n};\n\n// 0x04035288 - 0x04035300\nconst Gfx sparkles_animation_seg4_dl_04035288[] = {\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPVertex(sparkles_animation_seg4_vertex_04032A48, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x04035300 - 0x04035318\nconst Gfx sparkles_animation_seg4_dl_04035300[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, sparkles_animation_seg4_texture_04032A88),\n    gsSPBranchList(sparkles_animation_seg4_dl_04035288),\n};\n\n// 0x04035318 - 0x04035330\nconst Gfx sparkles_animation_seg4_dl_04035318[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, sparkles_animation_seg4_texture_04033288),\n    gsSPBranchList(sparkles_animation_seg4_dl_04035288),\n};\n\n// 0x04035330 - 0x04035348\nconst Gfx sparkles_animation_seg4_dl_04035330[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, sparkles_animation_seg4_texture_04033A88),\n    gsSPBranchList(sparkles_animation_seg4_dl_04035288),\n};\n\n// 0x04035348 - 0x04035360\nconst Gfx sparkles_animation_seg4_dl_04035348[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, sparkles_animation_seg4_texture_04034288),\n    gsSPBranchList(sparkles_animation_seg4_dl_04035288),\n};\n\n// 0x04035360 - 0x04035378\nconst Gfx sparkles_animation_seg4_dl_04035360[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, sparkles_animation_seg4_texture_04034A88),\n    gsSPBranchList(sparkles_animation_seg4_dl_04035288),\n};\n"
  },
  {
    "path": "actors/spindrift/anims/anim_050006AC.inc.c",
    "content": "// 0x050003D8\nstatic const s16 spindrift_seg5_animvalue_050003D8[] = {\n    0x0000, 0x00EC, 0x00EC, 0x00EE, 0x00F1, 0x00F5, 0x00F8, 0x00FC,\n    0x00FF, 0x0101, 0x0101, 0x0101, 0x00FF, 0x00FD, 0x00FA, 0x00F6,\n    0x00F3, 0x00F0, 0x00EE, 0x00EC, 0x00EC, 0x3FFF, 0x0000, 0x0D79,\n    0x1AF2, 0x286B, 0x35E4, 0x435D, 0x50D6, 0x5E50, 0x6BC9, 0x7942,\n    0x86BE, 0x9437, 0xA1B0, 0xAF2A, 0xBCA3, 0xCA1C, 0xD795, 0xE50E,\n    0xF287, 0x0000, 0x4BD0, 0xC001, 0x0000, 0x0D79, 0x1AF2, 0x286B,\n    0x35E4, 0x435D, 0x50D6, 0x5E50, 0x6BC9, 0x7942, 0x86BE, 0x9437,\n    0xA1B0, 0xAF2A, 0xBCA3, 0xCA1C, 0xD795, 0xE50E, 0xF287, 0x0000,\n    0x4BD0, 0xC001, 0x0000, 0x0D79, 0x1AF2, 0x286B, 0x35E4, 0x435D,\n    0x50D6, 0x5E50, 0x6BC9, 0x7942, 0x86BE, 0x9437, 0xA1B0, 0xAF2A,\n    0xBCA3, 0xCA1C, 0xD795, 0xE50E, 0xF287, 0x0000, 0x4BD0, 0x0000,\n    0x0D79, 0x1AF2, 0x286B, 0x35E4, 0x435D, 0x50D6, 0x5E50, 0x6BC9,\n    0x7942, 0x86BE, 0x9437, 0xA1B0, 0xAF2A, 0xBCA3, 0xCA1C, 0xD795,\n    0xE50E, 0xF287, 0x0000, 0x4BD0, 0x0000, 0x0D79, 0x1AF2, 0x286B,\n    0x35E4, 0x435D, 0x50D6, 0x5E50, 0x6BC9, 0x7942, 0x86BE, 0x9437,\n    0xA1B0, 0xAF2A, 0xBCA3, 0xCA1C, 0xD795, 0xE50E, 0xF287, 0x0000,\n    0x4BD0, 0x0000, 0x0D79, 0x1AF2, 0x286B, 0x35E4, 0x435D, 0x50D6,\n    0x5E50, 0x6BC9, 0x7942, 0x86BE, 0x9437, 0xA1B0, 0xAF2A, 0xBCA3,\n    0xCA1C, 0xD795, 0xE50E, 0xF287, 0x0000, 0x4BD0, 0x3FFF, 0xFA42,\n    0xFCCB, 0xFFCC, 0x02F5, 0x05F6, 0x087F, 0x0A3F, 0x0AE6, 0x0A5E,\n    0x08EB, 0x06C9, 0x0432, 0x0160, 0xFE8F, 0xFBF8, 0xF9D6, 0xF863,\n    0xF7DA, 0xF863, 0xF9D6, 0x24E7, 0x23FC, 0x22E4, 0x21BE, 0x20A6,\n    0x1FBA, 0x1F17, 0x1EDA, 0x1F0C, 0x1F93, 0x2059, 0x214A, 0x2251,\n    0x2357, 0x2448, 0x250F, 0x2596, 0x25C7, 0x2596, 0x250F, 0xFA42,\n    0xFCCB, 0xFFCC, 0x02F5, 0x05F6, 0x087F, 0x0A3F, 0x0AE6, 0x0A5E,\n    0x08EB, 0x06C9, 0x0432, 0x0160, 0xFE8F, 0xFBF8, 0xF9D6, 0xF863,\n    0xF7DA, 0xF863, 0xF9D6, 0x24E7, 0x23FC, 0x22E4, 0x21BE, 0x20A6,\n    0x1FBA, 0x1F17, 0x1EDA, 0x1F0C, 0x1F93, 0x2059, 0x214A, 0x2251,\n    0x2357, 0x2448, 0x250F, 0x2596, 0x25C7, 0x2596, 0x250F, 0xFA42,\n    0xFCCB, 0xFFCC, 0x02F5, 0x05F6, 0x087F, 0x0A3F, 0x0AE6, 0x0A5E,\n    0x08EB, 0x06C9, 0x0432, 0x0160, 0xFE8F, 0xFBF8, 0xF9D6, 0xF863,\n    0xF7DA, 0xF863, 0xF9D6, 0x24E7, 0x23FC, 0x22E4, 0x21BE, 0x20A6,\n    0x1FBA, 0x1F17, 0x1EDA, 0x1F0C, 0x1F93, 0x2059, 0x214A, 0x2251,\n    0x2357, 0x2448, 0x250F, 0x2596, 0x25C7, 0x2596, 0x250F, 0xC001,\n};\n\n// 0x050005F8\nstatic const u16 spindrift_seg5_animindex_050005F8[] = {\n    0x0001, 0x0000, 0x0014, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0015, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x010F,\n    0x0001, 0x0000, 0x0014, 0x00E7, 0x0014, 0x00FB,\n    0x0001, 0x0000, 0x0014, 0x00BF, 0x0014, 0x00D3,\n    0x0001, 0x0000, 0x0014, 0x0097, 0x0014, 0x00AB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0096,\n    0x0014, 0x0081, 0x0001, 0x0000, 0x0001, 0x0095,\n    0x0014, 0x006C, 0x0001, 0x0000, 0x0001, 0x0080,\n    0x0014, 0x0057, 0x0001, 0x0000, 0x0001, 0x006B,\n    0x0014, 0x0042, 0x0001, 0x0000, 0x0001, 0x0056,\n    0x0014, 0x002C, 0x0001, 0x0000, 0x0001, 0x0040,\n    0x0014, 0x0016, 0x0001, 0x0000, 0x0001, 0x002A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0041,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x002B,\n};\n\n// 0x050006AC\nstatic const struct Animation spindrift_seg5_anim_050006AC = {\n    0,\n    0,\n    0,\n    0,\n    0x13,\n    ANIMINDEX_NUMPARTS(spindrift_seg5_animindex_050005F8),\n    spindrift_seg5_animvalue_050003D8,\n    spindrift_seg5_animindex_050005F8,\n    0,\n};\n\n\n// False Bin ID?\nUNUSED static const u64 spindrift_unused_1 = 1;\n\n// 0x050006D0\nALIGNED8 static const Texture spindrift_seg5_texture_050006D0[] = {\n#include \"actors/spindrift/spindrift_face.rgba16.inc.c\"\n};\n\n// 0x05000ED0\nALIGNED8 static const Texture spindrift_seg5_texture_05000ED0[] = {\n#include \"actors/spindrift/spindrift_petal.rgba16.inc.c\"\n};\n\n// 0x050016D0\nALIGNED8 static const Texture spindrift_seg5_texture_050016D0[] = {\n#include \"actors/spindrift/spindrift_leaf.rgba16.inc.c\"\n};\n\n// 0x05001ED0\nALIGNED8 static const Texture spindrift_seg5_texture_05001ED0[] = {\n#include \"actors/spindrift/spindrift_head.rgba16.inc.c\"\n};\n\n// 0x050026D0\nstatic const Vtx spindrift_seg5_vertex_050026D0[] = {\n    {{{   -54,    -54,      0}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    56,     56,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -54,     56,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    56,    -54,      0}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x05002710 - 0x05002748\nconst Gfx spindrift_seg5_dl_05002710[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spindrift_seg5_texture_05001ED0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(spindrift_seg5_vertex_050026D0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05002748 - 0x050027B8\nconst Gfx spindrift_seg5_dl_05002748[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(spindrift_seg5_dl_05002710),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x050027B8\nstatic const Vtx spindrift_seg5_vertex_050027B8[] = {\n    {{{    27,   -112,    -47}, 0, {   -36,    520}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    27,   -112,     48}, 0, {   990,    520}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -32,   -112,    -47}, 0, {   -36,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -32,   -112,     48}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x050027F8 - 0x05002830\nconst Gfx spindrift_seg5_dl_050027F8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spindrift_seg5_texture_050006D0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(spindrift_seg5_vertex_050027B8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05002830 - 0x050028A0\nconst Gfx spindrift_seg5_dl_05002830[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(spindrift_seg5_dl_050027F8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x050028A0\nstatic const Vtx spindrift_seg5_vertex_050028A0[] = {\n    {{{    36,   -109,    -44}, 0, {   -30,    572}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    83,    -79,      0}, 0, {   480,   1092}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    36,   -109,     45}, 0, {   990,    572}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x050028D0 - 0x05002900\nconst Gfx spindrift_seg5_dl_050028D0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spindrift_seg5_texture_050006D0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(spindrift_seg5_vertex_050028A0, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05002900 - 0x05002970\nconst Gfx spindrift_seg5_dl_05002900[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(spindrift_seg5_dl_050028D0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x05002970\nstatic const Lights1 spindrift_seg5_lights_05002970 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05002988\nstatic const Vtx spindrift_seg5_vertex_05002988[] = {\n    {{{    19,     22,    102}, 0, {   196,   1200}, {0x90, 0x25, 0x2e, 0xff}}},\n    {{{    13,     -6,      4}, 0, {  1032,    456}, {0x92, 0x3e, 0xf5, 0xff}}},\n    {{{   -20,    -53,     69}, 0, {   250,   -194}, {0x90, 0x25, 0x2e, 0xff}}},\n    {{{    34,    -56,    120}, 0, {   -62,    330}, {0xa9, 0x04, 0x5c, 0xff}}},\n};\n\n// 0x050029C8 - 0x05002A20\nconst Gfx spindrift_seg5_dl_050029C8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spindrift_seg5_texture_050016D0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsSPLight(&spindrift_seg5_lights_05002970.l, 1),\n    gsSPLight(&spindrift_seg5_lights_05002970.a, 2),\n    gsSPVertex(spindrift_seg5_vertex_05002988, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x05002A20 - 0x05002A80\nconst Gfx spindrift_seg5_dl_05002A20[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(spindrift_seg5_dl_050029C8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x05002A80\nstatic const Lights1 spindrift_seg5_lights_05002A80 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05002A98\nstatic const Vtx spindrift_seg5_vertex_05002A98[] = {\n    {{{     0,    -33,    -69}, 0, {   514,   1102}, {0xa0, 0x40, 0xcd, 0xff}}},\n    {{{    13,     -2,      0}, 0, {  1070,    398}, {0x9c, 0x4c, 0xf1, 0xff}}},\n    {{{    53,     33,    -86}, 0, {   138,   -146}, {0xa0, 0x40, 0xcd, 0xff}}},\n    {{{    62,    -15,   -122}, 0, {  -146,    482}, {0xac, 0x2e, 0xae, 0xff}}},\n};\n\n// 0x05002AD8 - 0x05002B30\nconst Gfx spindrift_seg5_dl_05002AD8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spindrift_seg5_texture_050016D0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsSPLight(&spindrift_seg5_lights_05002A80.l, 1),\n    gsSPLight(&spindrift_seg5_lights_05002A80.a, 2),\n    gsSPVertex(spindrift_seg5_vertex_05002A98, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x05002B30 - 0x05002B90\nconst Gfx spindrift_seg5_dl_05002B30[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(spindrift_seg5_dl_05002AD8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x05002B90\nstatic const Lights1 spindrift_seg5_lights_05002B90 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05002BA8\nstatic const Vtx spindrift_seg5_vertex_05002BA8[] = {\n    {{{    28,     -6,     21}, 0, {   474,   1104}, {0x7e, 0xfd, 0x0b, 0xff}}},\n    {{{    42,    -20,   -134}, 0, {  -192,      0}, {0x7e, 0xfd, 0x0b, 0xff}}},\n    {{{    42,     98,    -96}, 0, {  1152,      0}, {0x7e, 0xfd, 0x0b, 0xff}}},\n    {{{    28,    -21,      0}, 0, {   474,   1104}, {0x7e, 0xf4, 0x00, 0xff}}},\n    {{{    42,    122,    -61}, 0, {  -192,      0}, {0x7e, 0xf4, 0x00, 0xff}}},\n    {{{    42,    122,     63}, 0, {  1152,      0}, {0x7e, 0xf4, 0x00, 0xff}}},\n    {{{    28,     -6,    -20}, 0, {   474,   1104}, {0x7e, 0xfd, 0xf5, 0xff}}},\n    {{{    42,     97,     97}, 0, {  -192,      0}, {0x7e, 0xfd, 0xf5, 0xff}}},\n    {{{    42,    -21,    135}, 0, {  1152,      0}, {0x7e, 0xfd, 0xf5, 0xff}}},\n    {{{    28,     18,    -12}, 0, {   474,   1104}, {0x7e, 0x09, 0xf9, 0xff}}},\n    {{{    42,    -61,    122}, 0, {  -192,      0}, {0x7e, 0x09, 0xf9, 0xff}}},\n    {{{    42,   -135,     21}, 0, {  1152,      0}, {0x7e, 0x09, 0xf9, 0xff}}},\n    {{{    28,     18,     13}, 0, {   474,   1104}, {0x7e, 0x0a, 0x07, 0xff}}},\n    {{{    42,   -134,    -21}, 0, {  -192,      0}, {0x7e, 0x0a, 0x07, 0xff}}},\n    {{{    42,    -61,   -122}, 0, {  1152,      0}, {0x7e, 0x0a, 0x07, 0xff}}},\n};\n\n// 0x05002C98 - 0x05002D08\nconst Gfx spindrift_seg5_dl_05002C98[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spindrift_seg5_texture_05000ED0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsSPLight(&spindrift_seg5_lights_05002B90.l, 1),\n    gsSPLight(&spindrift_seg5_lights_05002B90.a, 2),\n    gsSPVertex(spindrift_seg5_vertex_05002BA8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x05002D08 - 0x05002D68\nconst Gfx spindrift_seg5_dl_05002D08[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(spindrift_seg5_dl_05002C98),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// unlike the other anim lists, this one is way after the actual anim entry. why?\n"
  },
  {
    "path": "actors/spindrift/anims/data.inc.c",
    "content": "#include \"anim_050006AC.inc.c\"\n"
  },
  {
    "path": "actors/spindrift/anims/table.inc.c",
    "content": "// 0x05002D68\nconst struct Animation *const spindrift_seg5_anims_05002D68[] = {\n    &spindrift_seg5_anim_050006AC,\n    NULL,\n    NULL,\n    NULL,\n};\n"
  },
  {
    "path": "actors/spindrift/geo.inc.c",
    "content": "// 0x0C000000\nconst GeoLayout spindrift_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 100),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 32768),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, spindrift_seg5_dl_05002900),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 100, 0, 0, spindrift_seg5_dl_05000328),\n                    GEO_ANIMATED_PART(LAYER_ALPHA, 100, 0, 0, spindrift_seg5_dl_05002A20),\n                    GEO_ANIMATED_PART(LAYER_ALPHA, 100, 0, 0, spindrift_seg5_dl_05002B30),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -88, -32, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, spindrift_seg5_dl_050002A0),\n                        GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, spindrift_seg5_dl_05002D08),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_BILLBOARD(),\n                    GEO_OPEN_NODE(),\n                        GEO_DISPLAY_LIST(LAYER_ALPHA, spindrift_seg5_dl_05002748),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, spindrift_seg5_dl_05002830),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/spindrift/model.inc.c",
    "content": "// Spindrift\n\n// Unreferenced light group\nUNUSED static const Lights1 spindrift_lights_unused1 = gdSPDefLights1(\n    0x3f, 0x08, 0x1b,\n    0xff, 0x22, 0x6d, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 spindrift_lights_unused2 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xfd, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05000030\nstatic const Lights1 spindrift_seg5_lights_05000030 = gdSPDefLights1(\n    0x12, 0x2c, 0x00,\n    0x49, 0xb2, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x05000048\nstatic const Lights1 spindrift_seg5_lights_05000048 = gdSPDefLights1(\n    0x37, 0x3f, 0x00,\n    0xdd, 0xff, 0x01, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 spindrift_lights_unused3 = gdSPDefLights1(\n    0x00, 0x15, 0x00,\n    0x00, 0x56, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x05000078\nstatic const Lights1 spindrift_seg5_lights_05000078 = gdSPDefLights1(\n    0x3f, 0x38, 0x00,\n    0xff, 0xe2, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x05000090\nstatic const Lights1 spindrift_seg5_lights_05000090 = gdSPDefLights1(\n    0x00, 0x0f, 0x00,\n    0x00, 0x3f, 0x00, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 spindrift_lights_unused4 = gdSPDefLights1(\n    0x3f, 0x00, 0x00,\n    0xff, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x050000C0\nstatic const Vtx spindrift_seg5_vertex_050000C0[] = {\n    {{{    34,     40,     30}, 0, {     0,      0}, {0x7b, 0x17, 0x11, 0x00}}},\n    {{{    34,    -16,     46}, 0, {     0,      0}, {0x7b, 0xf7, 0x1c, 0x00}}},\n    {{{    46,      0,      0}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    34,    -50,      0}, 0, {     0,      0}, {0x7b, 0xe3, 0x00, 0xff}}},\n    {{{    34,    -16,    -46}, 0, {     0,      0}, {0x7b, 0xf7, 0xe3, 0xff}}},\n    {{{    34,     40,    -28}, 0, {     0,      0}, {0x7b, 0x18, 0xee, 0xff}}},\n};\n\n// 0x05000120\nstatic const Vtx spindrift_seg5_vertex_05000120[] = {\n    {{{     6,      0,      0}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{    34,    -16,    -46}, 0, {     0,      0}, {0x92, 0xee, 0xc4, 0x00}}},\n    {{{    34,    -50,      0}, 0, {     0,      0}, {0x92, 0xc2, 0x00, 0x00}}},\n    {{{    34,    -16,     46}, 0, {     0,      0}, {0x92, 0xec, 0x3b, 0xff}}},\n    {{{    34,     40,    -28}, 0, {     0,      0}, {0x92, 0x32, 0xdb, 0xff}}},\n    {{{    34,     40,     30}, 0, {     0,      0}, {0x92, 0x31, 0x25, 0xff}}},\n};\n\n// 0x05000180\nstatic const Vtx spindrift_seg5_vertex_05000180[] = {\n    {{{    70,     50,      0}, 0, {     0,      0}, {0xcb, 0x73, 0x00, 0x00}}},\n    {{{    24,    -12,     56}, 0, {     0,      0}, {0xa9, 0x22, 0x54, 0x00}}},\n    {{{   128,     -2,     94}, 0, {     0,      0}, {0xda, 0x45, 0x63, 0x00}}},\n    {{{     0,     -5,      0}, 0, {     0,      0}, {0x8e, 0x37, 0x00, 0xff}}},\n    {{{    24,    -12,    -56}, 0, {     0,      0}, {0xa8, 0x22, 0xac, 0xff}}},\n    {{{     0,    -57,      0}, 0, {     0,      0}, {0x87, 0xdd, 0x00, 0xff}}},\n    {{{    55,   -113,     57}, 0, {     0,      0}, {0xa5, 0xce, 0x48, 0xff}}},\n    {{{   128,     -2,    -94}, 0, {     0,      0}, {0xda, 0x45, 0x9d, 0xff}}},\n    {{{    55,   -113,    -57}, 0, {     0,      0}, {0xa5, 0xce, 0xb8, 0xff}}},\n};\n\n// 0x05000210\nstatic const Vtx spindrift_seg5_vertex_05000210[] = {\n    {{{    55,   -113,    -57}, 0, {     0,      0}, {0xa5, 0xce, 0xb8, 0x00}}},\n    {{{    55,   -113,     57}, 0, {     0,      0}, {0xa5, 0xce, 0x48, 0x00}}},\n    {{{     0,    -57,      0}, 0, {     0,      0}, {0x87, 0xdd, 0x00, 0x00}}},\n    {{{   128,     -2,    -94}, 0, {     0,      0}, {0xda, 0x45, 0x9d, 0xff}}},\n    {{{    24,    -12,    -56}, 0, {     0,      0}, {0xa8, 0x22, 0xac, 0xff}}},\n    {{{   128,     -2,     94}, 0, {     0,      0}, {0xda, 0x45, 0x63, 0xff}}},\n    {{{    24,    -12,     56}, 0, {     0,      0}, {0xa9, 0x22, 0x54, 0xff}}},\n    {{{   138,     66,      0}, 0, {     0,      0}, {0xe3, 0x7b, 0x00, 0xff}}},\n    {{{    70,     50,      0}, 0, {     0,      0}, {0xcb, 0x73, 0x00, 0xff}}},\n};\n\n// 0x050002A0 - 0x05000328\nconst Gfx spindrift_seg5_dl_050002A0[] = {\n    gsSPLight(&spindrift_seg5_lights_05000048.l, 1),\n    gsSPLight(&spindrift_seg5_lights_05000048.a, 2),\n    gsSPVertex(spindrift_seg5_vertex_050000C0, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 1,  3,  2, 0x0,  4,  5,  2, 0x0),\n    gsSP1Triangle( 5,  0,  2, 0x0),\n    gsSPLight(&spindrift_seg5_lights_05000030.l, 1),\n    gsSPLight(&spindrift_seg5_lights_05000030.a, 2),\n    gsSPVertex(spindrift_seg5_vertex_05000120, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 1,  0,  4, 0x0,  4,  0,  5, 0x0),\n    gsSP1Triangle( 5,  0,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05000328 - 0x050003D8\nconst Gfx spindrift_seg5_dl_05000328[] = {\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsSPLight(&spindrift_seg5_lights_05000090.l, 1),\n    gsSPLight(&spindrift_seg5_lights_05000090.a, 2),\n    gsSPVertex(spindrift_seg5_vertex_05000180, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  1,  5,  6, 0x0),\n    gsSP2Triangles( 7,  4,  0, 0x0,  5,  4,  8, 0x0),\n    gsSP2Triangles( 5,  1,  3, 0x0,  4,  5,  3, 0x0),\n    gsSPLight(&spindrift_seg5_lights_05000078.l, 1),\n    gsSPLight(&spindrift_seg5_lights_05000078.a, 2),\n    gsSPVertex(spindrift_seg5_vertex_05000210, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 1,  5,  6, 0x0,  5,  7,  8, 0x0),\n    gsSP1Triangle( 8,  7,  3, 0x0),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/spiny/anims/anim_05016E94.inc.c",
    "content": "// 0x05016A58\nstatic const s16 spiny_seg5_animvalue_05016A58[] = {\n    0x0000, 0x0048, 0x0048, 0x0049, 0x004A, 0x004B, 0x004B, 0x004B,\n    0x004B, 0x004A, 0x0049, 0x0048, 0x0048, 0x0048, 0x0049, 0x0049,\n    0x004A, 0x004B, 0x004C, 0x004C, 0x004C, 0x004B, 0x004A, 0x0049,\n    0x0048, 0x0048, 0xFFF9, 0x0001, 0x3FFF, 0xFFFF, 0x8001, 0x8001,\n    0x49CB, 0xC7C9, 0xC7C3, 0xC81A, 0xC8E4, 0xC9CE, 0xCA81, 0xCAA9,\n    0xCA5D, 0xC9EF, 0xC966, 0xC8C8, 0xC81D, 0xC769, 0xC6B3, 0xC603,\n    0xC55D, 0xC4C8, 0xC44B, 0xC3EB, 0xC3B0, 0xC3E2, 0xC49C, 0xC59C,\n    0xC6A3, 0xC771, 0xC7C3, 0xC5BF, 0xC5C5, 0xC5D5, 0xC5EE, 0xC60E,\n    0xC635, 0xC662, 0xC692, 0xC6C4, 0xC6F8, 0xC72C, 0xC75F, 0xC78F,\n    0xC7BB, 0xC7E2, 0xC803, 0xC81C, 0xC82C, 0xC831, 0xC831, 0xC831,\n    0xC831, 0xC831, 0xC831, 0xC831, 0x0005, 0x00E1, 0x0308, 0x05D4,\n    0x08A0, 0x0AC7, 0x0BA3, 0x0A98, 0x080B, 0x04DA, 0x01E4, 0x0007,\n    0xFF3D, 0xFED9, 0xFEC1, 0xFEDB, 0xFF0E, 0xFF40, 0xFF56, 0xFF63,\n    0xFF84, 0xFFAE, 0xFFD8, 0xFFF9, 0x0005, 0xF843, 0xF88D, 0xF94F,\n    0xFA60, 0xFB97, 0xFCCB, 0xFDD2, 0xFEDA, 0x0003, 0x0115, 0x01D5,\n    0x0209, 0x01B0, 0x0103, 0x0018, 0xFF0D, 0xFDF6, 0xFCEF, 0xFC12,\n    0xFB44, 0xFA6A, 0xF99A, 0xF8EA, 0xF870, 0xF843, 0xF83E, 0xF884,\n    0xF932, 0xFA14, 0xFAF7, 0xFBA5, 0xFBEB, 0xFBA0, 0xFAE6, 0xF9F3,\n    0xF8FE, 0xF83F, 0xF7A7, 0xF709, 0xF671, 0xF5E8, 0xF579, 0xF52E,\n    0xF513, 0xF54F, 0xF5E5, 0xF6A8, 0xF76C, 0xF802, 0xF83E, 0x0005,\n    0x0003, 0x0000, 0xFFFD, 0xFFFA, 0xFFF6, 0xFFF5, 0xFFF5, 0xFFF7,\n    0xFFF9, 0xFFFE, 0x0003, 0x000D, 0x0019, 0x0027, 0x0035, 0x0041,\n    0x0049, 0x004C, 0x0047, 0x003A, 0x0029, 0x0017, 0x000A, 0x0005,\n    0x0755, 0x070F, 0x0657, 0x0552, 0x0425, 0x02F7, 0x01EB, 0x00D2,\n    0xFF8A, 0xFE55, 0xFD73, 0xFD26, 0xFD6C, 0xFE07, 0xFEE0, 0xFFDF,\n    0x00EB, 0x01EE, 0x02CF, 0x03B0, 0x04AE, 0x05A8, 0x0682, 0x071B,\n    0x0755, 0xF99F, 0xF98A, 0xF953, 0xF90C, 0xF8C4, 0xF88E, 0xF878,\n    0xF884, 0xF8AA, 0xF8E6, 0xF938, 0xF99E, 0xFA2A, 0xFAE0, 0xFBA7,\n    0xFC6B, 0xFD13, 0xFD88, 0xFDB4, 0xFD67, 0xFCA6, 0xFBAA, 0xFAAE,\n    0xF9ED, 0xF99F, 0x0000, 0x0016, 0x004A, 0x0089, 0x00BE, 0x00D4,\n    0x00E4, 0x0101, 0x0113, 0x00FF, 0x00AE, 0x0005, 0xFECF, 0xFD12,\n    0xFB11, 0xF90F, 0xF74D, 0xF60F, 0xF596, 0xF65B, 0xF849, 0xFACB,\n    0xFD4D, 0xFF3B, 0x0000, 0xF97C, 0xF9C9, 0xFA92, 0xFBA6, 0xFCD6,\n    0xFDF0, 0xFF1D, 0x0081, 0x01EF, 0x0333, 0x041C, 0x047B, 0x0445,\n    0x03A5, 0x02BA, 0x01A0, 0x0074, 0xFF55, 0xFE5E, 0xFD6B, 0xFC59,\n    0xFB4A, 0xFA5F, 0xF9BA, 0xF97C, 0xF83E, 0xF7FE, 0xF763, 0xF6AB,\n    0xF610, 0xF5D0, 0xF5E8, 0xF62A, 0xF68F, 0xF70F, 0xF7A1, 0xF83F,\n    0xF906, 0xFA04, 0xFB1B, 0xFC2B, 0xFD14, 0xFDB7, 0xFDF4, 0xFD88,\n    0xFC79, 0xFB19, 0xF9B9, 0xF8AB, 0xF83E, 0x0000, 0x0003, 0x000D,\n    0x0018, 0x0021, 0x0025, 0x0023, 0x001D, 0x0016, 0x000D, 0x0005,\n    0x0000, 0xFFFC, 0xFFF8, 0xFFF4, 0xFFF1, 0xFFEF, 0xFFED, 0xFFED,\n    0xFFEE, 0xFFF2, 0xFFF7, 0xFFFB, 0xFFFF, 0x0000, 0x061C, 0x05C6,\n    0x04EA, 0x03BF, 0x027C, 0x0159, 0x0031, 0xFED6, 0xFD78, 0xFC45,\n    0xFB6C, 0xFB1D, 0xFB62, 0xFC14, 0xFD12, 0xFE3E, 0xFF79, 0x00A3,\n    0x019D, 0x0289, 0x0388, 0x047F, 0x0552, 0x05E5, 0x061C, 0xF99F,\n    0xFA17, 0xFB33, 0xFC87, 0xFDA4, 0xFE1B, 0xFDD8, 0xFD2A, 0xFC3D,\n    0xFB3A, 0xFA4D, 0xF99F, 0xF925, 0xF8B9, 0xF85B, 0xF80E, 0xF7D4,\n    0xF7B0, 0xF7A4, 0xF7C9, 0xF827, 0xF8A1, 0xF91C, 0xF97A, 0xF99F,\n    0xE04F, 0xC001, 0xE04F, 0xE04F, 0xC001, 0xE04F, 0x1FB1, 0x3FFF,\n    0xE04F, 0x1FB1, 0x3FFF, 0xE04F, 0xFD8F, 0xFDB1, 0xFE0E, 0xFE99,\n    0xFF46, 0x0005, 0x00CB, 0x018B, 0x0237, 0x02C3, 0x0320, 0x0342,\n    0x0329, 0x02E5, 0x027D, 0x01F8, 0x0160, 0x00BC, 0x0014, 0xFF71,\n    0xFED8, 0xFE54, 0xFDEC, 0xFDA7, 0xFD8F, 0x3F63,\n};\n\n// 0x05016DA4\nstatic const u16 spiny_seg5_animindex_05016DA4[] = {\n    0x0001, 0x0000, 0x0019, 0x0001, 0x0001, 0x001A, 0x0001, 0x001B, 0x0001, 0x001C, 0x0001, 0x001D,\n    0x0019, 0x018C, 0x0001, 0x0000, 0x0001, 0x01A5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0189, 0x0001, 0x018A, 0x0001, 0x018B,\n    0x0019, 0x0054, 0x0019, 0x006D, 0x0019, 0x0086,\n    0x0001, 0x001E, 0x0001, 0x001F, 0x0001, 0x0020,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0186, 0x0001, 0x0187, 0x0001, 0x0188,\n    0x0019, 0x009F, 0x0019, 0x00B8, 0x0019, 0x00D1,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0021,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0183, 0x0001, 0x0184, 0x0001, 0x0185,\n    0x0019, 0x00EA, 0x0019, 0x0103, 0x0019, 0x011C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0019, 0x0022,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0180, 0x0001, 0x0181, 0x0001, 0x0182,\n    0x0019, 0x0135, 0x0019, 0x014E, 0x0019, 0x0167,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0019, 0x003B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x05016E94\nstatic const struct Animation spiny_seg5_anim_05016E94 = {\n    0,\n    0,\n    0,\n    0,\n    0x19,\n    ANIMINDEX_NUMPARTS(spiny_seg5_animindex_05016DA4),\n    spiny_seg5_animvalue_05016A58,\n    spiny_seg5_animindex_05016DA4,\n    0,\n};\n"
  },
  {
    "path": "actors/spiny/anims/data.inc.c",
    "content": "#include \"anim_05016E94.inc.c\"\n"
  },
  {
    "path": "actors/spiny/anims/table.inc.c",
    "content": "// 0x05016EAC\nconst struct Animation *const spiny_seg5_anims_05016EAC[] = {\n    &spiny_seg5_anim_05016E94,\n    NULL,\n    NULL,\n};\n"
  },
  {
    "path": "actors/spiny/geo.inc.c",
    "content": "// 0x0C000328\nconst GeoLayout spiny_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 100),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 72, -7, spiny_seg5_dl_05016A48),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, spiny_seg5_dl_05016738),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -1, 55, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 77, 0, 0, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, spiny_seg5_dl_05016418),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, -48, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 88, 0, 0, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, spiny_seg5_dl_050164E0),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -1, 55, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 77, 0, 0, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, spiny_seg5_dl_050165A8),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, -48, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 88, 0, 0, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, spiny_seg5_dl_05016670),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/spiny/model.inc.c",
    "content": "// Spiny\n\n// 0x050157F8\nstatic const Lights1 spiny_seg5_lights_050157F8 = gdSPDefLights1(\n    0x32, 0x23, 0x0a,\n    0xca, 0x8d, 0x29, 0x28, 0x28, 0x28\n);\n\n// 0x05015810\nstatic const Lights1 spiny_seg5_lights_05015810 = gdSPDefLights1(\n    0x3a, 0x2c, 0x1f,\n    0xeb, 0xb0, 0x7f, 0x28, 0x28, 0x28\n);\n\n// 0x05015828\nstatic const Lights1 spiny_seg5_lights_05015828 = gdSPDefLights1(\n    0x2c, 0x2c, 0x2c,\n    0xb2, 0xb2, 0xb2, 0x28, 0x28, 0x28\n);\n\n// 0x05015840\nstatic const Lights1 spiny_seg5_lights_05015840 = gdSPDefLights1(\n    0x3f, 0x00, 0x00,\n    0xff, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x05015858\nstatic const Lights1 spiny_seg5_lights_05015858 = gdSPDefLights1(\n    0x3d, 0x25, 0x01,\n    0xf4, 0x96, 0x07, 0x28, 0x28, 0x28\n);\n\n// 0x05015870\nstatic const Lights1 spiny_seg5_lights_05015870 = gdSPDefLights1(\n    0x3c, 0x2c, 0x09,\n    0xf1, 0xb2, 0x25, 0x28, 0x28, 0x28\n);\n\n// 0x05015888\nstatic const Vtx spiny_seg5_vertex_05015888[] = {\n    {{{    57,    -31,    -27}, 0, {     0,      0}, {0xd2, 0xa3, 0xb9, 0x00}}},\n    {{{    57,    -31,     13}, 0, {     0,      0}, {0xe2, 0x9e, 0x4a, 0x00}}},\n    {{{     0,    -17,      6}, 0, {     0,      0}, {0xdd, 0x8b, 0x1f, 0x00}}},\n    {{{    57,     27,    -27}, 0, {     0,      0}, {0xd2, 0x5d, 0xb9, 0xff}}},\n    {{{    57,     -1,    -50}, 0, {     0,      0}, {0xbb, 0x00, 0x96, 0xff}}},\n    {{{    29,     -1,    -31}, 0, {     0,      0}, {0xc4, 0x00, 0x91, 0xff}}},\n    {{{     0,     11,    -14}, 0, {     0,      0}, {0xd6, 0x5e, 0xb7, 0xff}}},\n    {{{     0,     13,      6}, 0, {     0,      0}, {0xdd, 0x75, 0x1f, 0xff}}},\n    {{{    57,     27,     13}, 0, {     0,      0}, {0xe2, 0x62, 0x4a, 0xff}}},\n    {{{     0,     -1,     19}, 0, {     0,      0}, {0xe0, 0x00, 0x7a, 0xff}}},\n    {{{     0,    -15,    -14}, 0, {     0,      0}, {0xd6, 0xa2, 0xb7, 0xff}}},\n    {{{     0,     -1,    -19}, 0, {     0,      0}, {0xd4, 0x00, 0x89, 0xff}}},\n    {{{    57,     -1,     31}, 0, {     0,      0}, {0xe6, 0x00, 0x7c, 0xff}}},\n};\n\n// 0x05015958\nstatic const Vtx spiny_seg5_vertex_05015958[] = {\n    {{{    57,    -31,     13}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    57,    -31,    -27}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    57,     27,    -27}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    57,     27,     13}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    57,     -1,     31}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    57,     -1,    -50}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x050159B8\nstatic const Vtx spiny_seg5_vertex_050159B8[] = {\n    {{{    59,    -29,    -23}, 0, {     0,      0}, {0xd4, 0xa2, 0xb8, 0x00}}},\n    {{{    59,    -29,     19}, 0, {     0,      0}, {0xe4, 0x9e, 0x4a, 0x00}}},\n    {{{    -2,    -15,     12}, 0, {     0,      0}, {0xe0, 0x8a, 0x1f, 0x00}}},\n    {{{    58,     32,    -23}, 0, {     0,      0}, {0xd1, 0x5d, 0xb8, 0xff}}},\n    {{{    58,      1,    -47}, 0, {     0,      0}, {0xbb, 0xff, 0x96, 0xff}}},\n    {{{    29,      1,    -28}, 0, {     0,      0}, {0xc5, 0x00, 0x90, 0xff}}},\n    {{{    -2,     15,     -9}, 0, {     0,      0}, {0xd6, 0x5e, 0xb7, 0xff}}},\n    {{{    -2,     17,     12}, 0, {     0,      0}, {0xdc, 0x75, 0x1f, 0xff}}},\n    {{{    58,     32,     19}, 0, {     0,      0}, {0xe1, 0x61, 0x4a, 0xff}}},\n    {{{    -2,      0,     25}, 0, {     0,      0}, {0xe1, 0x00, 0x7a, 0xff}}},\n    {{{    -2,    -13,     -9}, 0, {     0,      0}, {0xd8, 0xa1, 0xb7, 0xff}}},\n    {{{    -2,      0,    -14}, 0, {     0,      0}, {0xd6, 0x00, 0x89, 0xff}}},\n    {{{    58,      1,     38}, 0, {     0,      0}, {0xe6, 0x00, 0x7c, 0xff}}},\n};\n\n// 0x05015A88\nstatic const Vtx spiny_seg5_vertex_05015A88[] = {\n    {{{    59,    -29,     19}, 0, {     0,      0}, {0x7f, 0x02, 0x00, 0x00}}},\n    {{{    59,    -29,    -23}, 0, {     0,      0}, {0x7f, 0x02, 0x00, 0x00}}},\n    {{{    58,     32,    -23}, 0, {     0,      0}, {0x7f, 0x02, 0x00, 0x00}}},\n    {{{    58,     32,     19}, 0, {     0,      0}, {0x7f, 0x02, 0x00, 0xff}}},\n    {{{    58,      1,     38}, 0, {     0,      0}, {0x7f, 0x02, 0x00, 0xff}}},\n    {{{    58,      1,    -47}, 0, {     0,      0}, {0x7f, 0x02, 0x00, 0xff}}},\n};\n\n// 0x05015AE8\nstatic const Vtx spiny_seg5_vertex_05015AE8[] = {\n    {{{     0,    -17,     -6}, 0, {     0,      0}, {0xdd, 0x8b, 0xe1, 0x00}}},\n    {{{    57,    -31,    -13}, 0, {     0,      0}, {0xe2, 0x9e, 0xb6, 0x00}}},\n    {{{    57,    -31,     27}, 0, {     0,      0}, {0xd2, 0xa3, 0x47, 0x00}}},\n    {{{    29,     -1,     31}, 0, {     0,      0}, {0xc4, 0x00, 0x6f, 0xff}}},\n    {{{    57,     -1,     50}, 0, {     0,      0}, {0xbb, 0x00, 0x6a, 0xff}}},\n    {{{    57,     27,     27}, 0, {     0,      0}, {0xd2, 0x5d, 0x47, 0xff}}},\n    {{{     0,     13,     -6}, 0, {     0,      0}, {0xdd, 0x75, 0xe1, 0xff}}},\n    {{{     0,     11,     14}, 0, {     0,      0}, {0xd6, 0x5e, 0x49, 0xff}}},\n    {{{     0,     -1,    -19}, 0, {     0,      0}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{    57,     27,    -13}, 0, {     0,      0}, {0xe2, 0x62, 0xb6, 0xff}}},\n    {{{     0,     -1,     19}, 0, {     0,      0}, {0xd4, 0x00, 0x77, 0xff}}},\n    {{{     0,    -15,     14}, 0, {     0,      0}, {0xd6, 0xa2, 0x49, 0xff}}},\n    {{{    57,     -1,    -31}, 0, {     0,      0}, {0xe6, 0x00, 0x84, 0xff}}},\n};\n\n// 0x05015BB8\nstatic const Vtx spiny_seg5_vertex_05015BB8[] = {\n    {{{    57,     27,     27}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    57,    -31,     27}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    57,    -31,    -13}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    57,     27,    -13}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    57,     -1,    -31}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    57,     -1,     50}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x05015C18\nstatic const Vtx spiny_seg5_vertex_05015C18[] = {\n    {{{    -2,    -15,    -12}, 0, {     0,      0}, {0xe0, 0x8a, 0xe1, 0x00}}},\n    {{{    59,    -29,    -19}, 0, {     0,      0}, {0xe4, 0x9e, 0xb6, 0x00}}},\n    {{{    59,    -29,     23}, 0, {     0,      0}, {0xd4, 0xa2, 0x48, 0x00}}},\n    {{{    29,      1,     28}, 0, {     0,      0}, {0xc5, 0x00, 0x70, 0xff}}},\n    {{{    58,      1,     47}, 0, {     0,      0}, {0xbb, 0xff, 0x6a, 0xff}}},\n    {{{    58,     32,     23}, 0, {     0,      0}, {0xd1, 0x5d, 0x48, 0xff}}},\n    {{{    -2,     17,    -12}, 0, {     0,      0}, {0xdc, 0x75, 0xe1, 0xff}}},\n    {{{    -2,     15,      9}, 0, {     0,      0}, {0xd6, 0x5e, 0x49, 0xff}}},\n    {{{    -2,      0,    -25}, 0, {     0,      0}, {0xe1, 0x00, 0x86, 0xff}}},\n    {{{    58,     32,    -19}, 0, {     0,      0}, {0xe1, 0x61, 0xb6, 0xff}}},\n    {{{    -2,      0,     14}, 0, {     0,      0}, {0xd6, 0x00, 0x77, 0xff}}},\n    {{{    -2,    -13,      9}, 0, {     0,      0}, {0xd8, 0xa1, 0x49, 0xff}}},\n    {{{    58,      1,    -38}, 0, {     0,      0}, {0xe6, 0x00, 0x84, 0xff}}},\n};\n\n// 0x05015CE8\nstatic const Vtx spiny_seg5_vertex_05015CE8[] = {\n    {{{    58,     32,     23}, 0, {     0,      0}, {0x7f, 0x02, 0x00, 0x00}}},\n    {{{    59,    -29,     23}, 0, {     0,      0}, {0x7f, 0x02, 0x00, 0x00}}},\n    {{{    59,    -29,    -19}, 0, {     0,      0}, {0x7f, 0x02, 0x00, 0x00}}},\n    {{{    58,     32,    -19}, 0, {     0,      0}, {0x7f, 0x02, 0x00, 0xff}}},\n    {{{    58,      1,    -38}, 0, {     0,      0}, {0x7f, 0x02, 0x00, 0xff}}},\n    {{{    58,      1,     47}, 0, {     0,      0}, {0x7f, 0x02, 0x00, 0xff}}},\n};\n\n// 0x05015D48\nstatic const Vtx spiny_seg5_vertex_05015D48[] = {\n    {{{   -23,    -40,   -118}, 0, {     0,      0}, {0x98, 0xed, 0xbb, 0x00}}},\n    {{{     0,     -4,   -145}, 0, {     0,      0}, {0xeb, 0xf2, 0x84, 0x00}}},\n    {{{   -12,   -119,    -85}, 0, {     0,      0}, {0xa5, 0xbc, 0xcb, 0x00}}},\n    {{{    10,   -116,   -121}, 0, {     0,      0}, {0x00, 0x9f, 0xaf, 0xff}}},\n    {{{     3,   -146,      0}, 0, {     0,      0}, {0xca, 0x8e, 0x00, 0xff}}},\n    {{{   -18,     49,   -118}, 0, {     0,      0}, {0x95, 0x14, 0xc0, 0xff}}},\n    {{{    10,   -116,    121}, 0, {     0,      0}, {0x00, 0x9f, 0x51, 0xff}}},\n    {{{   -12,   -119,     85}, 0, {     0,      0}, {0xa4, 0xbc, 0x35, 0xff}}},\n    {{{    47,   -129,      0}, 0, {     0,      0}, {0x4c, 0x9b, 0x00, 0xff}}},\n    {{{    38,    -61,    110}, 0, {     0,      0}, {0x52, 0xd9, 0x58, 0xff}}},\n    {{{    29,   -156,      0}, 0, {     0,      0}, {0x4b, 0x9a, 0x00, 0xff}}},\n    {{{    42,     77,   -122}, 0, {     0,      0}, {0x5a, 0x12, 0xaa, 0xff}}},\n    {{{    38,    -61,   -110}, 0, {     0,      0}, {0x52, 0xd9, 0xa8, 0xff}}},\n    {{{    62,    160,    -48}, 0, {     0,      0}, {0x43, 0x62, 0xd5, 0xff}}},\n    {{{    22,    107,   -136}, 0, {     0,      0}, {0xf8, 0x3b, 0x91, 0xff}}},\n    {{{    -1,    119,    -95}, 0, {     0,      0}, {0xb4, 0x55, 0xca, 0xff}}},\n};\n\n// 0x05015E48\nstatic const Vtx spiny_seg5_vertex_05015E48[] = {\n    {{{    72,    142,      0}, 0, {     0,      0}, {0x6b, 0x42, 0x00, 0xff}}},\n    {{{    42,     77,   -122}, 0, {     0,      0}, {0x5a, 0x12, 0xaa, 0x00}}},\n    {{{    62,    160,    -48}, 0, {     0,      0}, {0x43, 0x62, 0xd5, 0x00}}},\n    {{{    22,    107,   -136}, 0, {     0,      0}, {0xf8, 0x3b, 0x91, 0xff}}},\n    {{{     0,     -4,   -145}, 0, {     0,      0}, {0xeb, 0xf2, 0x84, 0xff}}},\n    {{{   -18,     49,   -118}, 0, {     0,      0}, {0x95, 0x14, 0xc0, 0xff}}},\n    {{{     0,     -4,    145}, 0, {     0,      0}, {0xeb, 0xf2, 0x7c, 0xff}}},\n    {{{   -18,     49,    118}, 0, {     0,      0}, {0x95, 0x15, 0x40, 0xff}}},\n    {{{   -23,    -40,    118}, 0, {     0,      0}, {0x98, 0xed, 0x45, 0xff}}},\n    {{{   -12,   -119,     85}, 0, {     0,      0}, {0xa4, 0xbc, 0x35, 0xff}}},\n    {{{    10,   -116,    121}, 0, {     0,      0}, {0x00, 0x9f, 0x51, 0xff}}},\n    {{{    38,    -61,    110}, 0, {     0,      0}, {0x52, 0xd9, 0x58, 0xff}}},\n    {{{    42,     77,    122}, 0, {     0,      0}, {0x5a, 0x13, 0x56, 0xff}}},\n    {{{    62,    160,     46}, 0, {     0,      0}, {0x43, 0x62, 0x2b, 0xff}}},\n    {{{    22,    107,    136}, 0, {     0,      0}, {0xf8, 0x3c, 0x6f, 0xff}}},\n    {{{    -1,    119,     95}, 0, {     0,      0}, {0xb5, 0x55, 0x36, 0xff}}},\n};\n\n// 0x05015F48\nstatic const Vtx spiny_seg5_vertex_05015F48[] = {\n    {{{    -1,    119,    -95}, 0, {     0,      0}, {0xb4, 0x55, 0xca, 0xff}}},\n    {{{    29,    168,      0}, 0, {     0,      0}, {0xe3, 0x7b, 0x00, 0x00}}},\n    {{{    62,    160,    -48}, 0, {     0,      0}, {0x43, 0x62, 0xd5, 0x00}}},\n    {{{    -1,    119,     95}, 0, {     0,      0}, {0xb5, 0x55, 0x36, 0xff}}},\n    {{{    62,    160,     46}, 0, {     0,      0}, {0x43, 0x62, 0x2b, 0xff}}},\n    {{{    72,    142,      0}, 0, {     0,      0}, {0x6b, 0x42, 0x00, 0xff}}},\n};\n\n// 0x05015FA8\nstatic const Vtx spiny_seg5_vertex_05015FA8[] = {\n    {{{   -44,    -66,    -39}, 0, {     0,      0}, {0x84, 0xf0, 0xec, 0x00}}},\n    {{{   -46,     72,    -40}, 0, {     0,      0}, {0x87, 0x19, 0xe4, 0x00}}},\n    {{{   -18,     49,   -118}, 0, {     0,      0}, {0x95, 0x14, 0xc0, 0x00}}},\n    {{{    -1,    119,    -95}, 0, {     0,      0}, {0xb4, 0x55, 0xca, 0xff}}},\n    {{{   -23,    -40,   -118}, 0, {     0,      0}, {0x98, 0xed, 0xbb, 0xff}}},\n    {{{   -31,   -119,      0}, 0, {     0,      0}, {0x95, 0xbc, 0x00, 0xff}}},\n    {{{   -12,   -119,    -85}, 0, {     0,      0}, {0xa5, 0xbc, 0xcb, 0xff}}},\n    {{{     3,   -146,      0}, 0, {     0,      0}, {0xca, 0x8e, 0x00, 0xff}}},\n    {{{   -12,   -119,     85}, 0, {     0,      0}, {0xa4, 0xbc, 0x35, 0xff}}},\n    {{{   -44,    -65,     41}, 0, {     0,      0}, {0x85, 0xee, 0x18, 0xff}}},\n    {{{   -46,     73,     40}, 0, {     0,      0}, {0x85, 0x14, 0x17, 0xff}}},\n    {{{   -18,     49,    118}, 0, {     0,      0}, {0x95, 0x15, 0x40, 0xff}}},\n    {{{   -23,    -40,    118}, 0, {     0,      0}, {0x98, 0xed, 0x45, 0xff}}},\n    {{{    -1,    119,     95}, 0, {     0,      0}, {0xb5, 0x55, 0x36, 0xff}}},\n    {{{    29,    168,      0}, 0, {     0,      0}, {0xe3, 0x7b, 0x00, 0xff}}},\n    {{{   -28,    143,      0}, 0, {     0,      0}, {0x9e, 0x50, 0x00, 0xff}}},\n};\n\n// 0x050160A8\nstatic const Vtx spiny_seg5_vertex_050160A8[] = {\n    {{{    42,     77,    122}, 0, {     0,      0}, {0x5a, 0x13, 0x56, 0x00}}},\n    {{{   140,     73,     51}, 0, {     0,      0}, {0x62, 0x2b, 0x43, 0x00}}},\n    {{{    72,    142,      0}, 0, {     0,      0}, {0x6b, 0x42, 0x00, 0x00}}},\n    {{{   140,     73,    -51}, 0, {     0,      0}, {0x6b, 0x24, 0xc8, 0xff}}},\n    {{{   142,    -67,    -51}, 0, {     0,      0}, {0x5c, 0xbe, 0xc8, 0xff}}},\n    {{{    38,    -61,   -110}, 0, {     0,      0}, {0x52, 0xd9, 0xa8, 0xff}}},\n    {{{    47,   -129,      0}, 0, {     0,      0}, {0x4c, 0x9b, 0x00, 0xff}}},\n    {{{   142,    -67,     51}, 0, {     0,      0}, {0x6a, 0xcc, 0x2c, 0xff}}},\n    {{{    38,    -61,    110}, 0, {     0,      0}, {0x52, 0xd9, 0x58, 0xff}}},\n    {{{    42,     77,   -122}, 0, {     0,      0}, {0x5a, 0x12, 0xaa, 0xff}}},\n};\n\n// 0x05016148\nstatic const Vtx spiny_seg5_vertex_05016148[] = {\n    {{{   135,     -2,   -132}, 0, {     0,      0}, {0x68, 0x3e, 0x24, 0x00}}},\n    {{{    92,     33,    -72}, 0, {     0,      0}, {0x68, 0x3e, 0x24, 0x00}}},\n    {{{   119,    -20,    -55}, 0, {     0,      0}, {0x68, 0x3e, 0x24, 0x00}}},\n    {{{   119,    -20,     55}, 0, {     0,      0}, {0x10, 0x85, 0x19, 0xff}}},\n    {{{   135,     -2,    135}, 0, {     0,      0}, {0x10, 0x85, 0x19, 0xff}}},\n    {{{    67,    -20,     89}, 0, {     0,      0}, {0x10, 0x85, 0x19, 0xff}}},\n    {{{   135,     -2,   -132}, 0, {     0,      0}, {0x11, 0x85, 0xe6, 0xff}}},\n    {{{   119,    -20,    -55}, 0, {     0,      0}, {0x11, 0x85, 0xe6, 0xff}}},\n    {{{    67,    -20,    -89}, 0, {     0,      0}, {0x11, 0x85, 0xe6, 0xff}}},\n    {{{   139,    -22,     29}, 0, {     0,      0}, {0x2d, 0x8a, 0x01, 0xff}}},\n    {{{   139,    -23,    -29}, 0, {     0,      0}, {0x2d, 0x8a, 0x01, 0xff}}},\n    {{{   216,      6,      0}, 0, {     0,      0}, {0x2d, 0x8a, 0x01, 0xff}}},\n    {{{   139,    -22,     29}, 0, {     0,      0}, {0x11, 0x3d, 0x6d, 0xff}}},\n    {{{   216,      6,      0}, 0, {     0,      0}, {0x11, 0x3d, 0x6d, 0xff}}},\n    {{{   139,     30,      0}, 0, {     0,      0}, {0x11, 0x3d, 0x6d, 0xff}}},\n};\n\n// 0x05016238\nstatic const Vtx spiny_seg5_vertex_05016238[] = {\n    {{{   139,     30,      0}, 0, {     0,      0}, {0x14, 0x3a, 0x92, 0xff}}},\n    {{{   216,      6,      0}, 0, {     0,      0}, {0x14, 0x3a, 0x92, 0x00}}},\n    {{{   139,    -23,    -29}, 0, {     0,      0}, {0x14, 0x3a, 0x92, 0x00}}},\n    {{{   120,     85,     29}, 0, {     0,      0}, {0x60, 0xae, 0x01, 0xff}}},\n    {{{   120,     84,    -29}, 0, {     0,      0}, {0x60, 0xae, 0x01, 0xff}}},\n    {{{   172,    146,      0}, 0, {     0,      0}, {0x60, 0xae, 0x01, 0xff}}},\n    {{{   172,    146,      0}, 0, {     0,      0}, {0xf1, 0x3f, 0x94, 0xff}}},\n    {{{   120,     84,    -29}, 0, {     0,      0}, {0xf1, 0x3f, 0x94, 0xff}}},\n    {{{    85,    125,      0}, 0, {     0,      0}, {0xf1, 0x3f, 0x94, 0xff}}},\n    {{{   172,    146,      0}, 0, {     0,      0}, {0xef, 0x42, 0x6b, 0xff}}},\n    {{{    85,    125,      0}, 0, {     0,      0}, {0xef, 0x42, 0x6b, 0xff}}},\n    {{{   120,     85,     29}, 0, {     0,      0}, {0xef, 0x42, 0x6b, 0xff}}},\n    {{{    92,     33,     72}, 0, {     0,      0}, {0xb8, 0x3e, 0x53, 0xff}}},\n    {{{    67,    -20,     89}, 0, {     0,      0}, {0xb8, 0x3e, 0x53, 0xff}}},\n    {{{   135,     -2,    135}, 0, {     0,      0}, {0xb8, 0x3e, 0x53, 0xff}}},\n};\n\n// 0x05016328\nstatic const Vtx spiny_seg5_vertex_05016328[] = {\n    {{{    92,     33,     72}, 0, {     0,      0}, {0x69, 0x3d, 0xdd, 0xff}}},\n    {{{   135,     -2,    135}, 0, {     0,      0}, {0x69, 0x3d, 0xdd, 0x00}}},\n    {{{   119,    -20,     55}, 0, {     0,      0}, {0x69, 0x3d, 0xdd, 0x00}}},\n    {{{    67,    -20,    -89}, 0, {     0,      0}, {0xba, 0x3d, 0xab, 0xff}}},\n    {{{    92,     33,    -72}, 0, {     0,      0}, {0xba, 0x3d, 0xab, 0xff}}},\n    {{{   135,     -2,   -132}, 0, {     0,      0}, {0xba, 0x3d, 0xab, 0xff}}},\n    {{{   112,    -74,    -29}, 0, {     0,      0}, {0x74, 0x33, 0x01, 0xff}}},\n    {{{   112,    -75,     29}, 0, {     0,      0}, {0x74, 0x33, 0x01, 0xff}}},\n    {{{   145,   -148,      0}, 0, {     0,      0}, {0x74, 0x33, 0x01, 0xff}}},\n    {{{   145,   -148,      0}, 0, {     0,      0}, {0xdd, 0xc5, 0x6a, 0xff}}},\n    {{{   112,    -75,     29}, 0, {     0,      0}, {0xdd, 0xc5, 0x6a, 0xff}}},\n    {{{    74,   -106,      0}, 0, {     0,      0}, {0xdd, 0xc5, 0x6a, 0xff}}},\n    {{{   145,   -148,      0}, 0, {     0,      0}, {0xdf, 0xc7, 0x94, 0xff}}},\n    {{{    74,   -106,      0}, 0, {     0,      0}, {0xdf, 0xc7, 0x94, 0xff}}},\n    {{{   112,    -74,    -29}, 0, {     0,      0}, {0xdf, 0xc7, 0x94, 0xff}}},\n};\n\n// 0x05016418 - 0x050164E0\nconst Gfx spiny_seg5_dl_05016418[] = {\n    gsSPLight(&spiny_seg5_lights_050157F8.l, 1),\n    gsSPLight(&spiny_seg5_lights_050157F8.a, 2),\n    gsSPVertex(spiny_seg5_vertex_05015888, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 5,  4,  0, 0x0,  0, 10, 11, 0x0),\n    gsSP2Triangles(11,  6,  3, 0x0,  1, 12,  9, 0x0),\n    gsSP2Triangles( 3,  5, 11, 0x0, 11,  5,  0, 0x0),\n    gsSP2Triangles( 7,  8,  3, 0x0,  9, 12,  8, 0x0),\n    gsSP2Triangles( 9,  2,  1, 0x0,  2, 10,  0, 0x0),\n    gsSPLight(&spiny_seg5_lights_05015810.l, 1),\n    gsSPLight(&spiny_seg5_lights_05015810.a, 2),\n    gsSPVertex(spiny_seg5_vertex_05015958, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 3,  4,  0, 0x0,  1,  5,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050164E0 - 0x050165A8\nconst Gfx spiny_seg5_dl_050164E0[] = {\n    gsSPLight(&spiny_seg5_lights_050157F8.l, 1),\n    gsSPLight(&spiny_seg5_lights_050157F8.a, 2),\n    gsSPVertex(spiny_seg5_vertex_050159B8, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 5,  4,  0, 0x0,  0, 10, 11, 0x0),\n    gsSP2Triangles(11,  6,  3, 0x0,  1, 12,  9, 0x0),\n    gsSP2Triangles( 3,  5, 11, 0x0, 11,  5,  0, 0x0),\n    gsSP2Triangles( 7,  8,  3, 0x0,  9, 12,  8, 0x0),\n    gsSP2Triangles( 9,  2,  1, 0x0,  2, 10,  0, 0x0),\n    gsSPLight(&spiny_seg5_lights_05015810.l, 1),\n    gsSPLight(&spiny_seg5_lights_05015810.a, 2),\n    gsSPVertex(spiny_seg5_vertex_05015A88, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 3,  4,  0, 0x0,  1,  5,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050165A8 - 0x05016670\nconst Gfx spiny_seg5_dl_050165A8[] = {\n    gsSPLight(&spiny_seg5_lights_050157F8.l, 1),\n    gsSPLight(&spiny_seg5_lights_050157F8.a, 2),\n    gsSPVertex(spiny_seg5_vertex_05015AE8, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  5, 0x0,  8,  6,  9, 0x0),\n    gsSP2Triangles( 2,  4,  3, 0x0, 10, 11,  2, 0x0),\n    gsSP2Triangles( 5,  7, 10, 0x0,  8, 12,  1, 0x0),\n    gsSP2Triangles(10,  3,  5, 0x0,  2,  3, 10, 0x0),\n    gsSP2Triangles( 5,  9,  6, 0x0,  9, 12,  8, 0x0),\n    gsSP2Triangles( 1,  0,  8, 0x0,  2, 11,  0, 0x0),\n    gsSPLight(&spiny_seg5_lights_05015810.l, 1),\n    gsSPLight(&spiny_seg5_lights_05015810.a, 2),\n    gsSPVertex(spiny_seg5_vertex_05015BB8, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 2,  4,  3, 0x0,  0,  5,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05016670 - 0x05016738\nconst Gfx spiny_seg5_dl_05016670[] = {\n    gsSPLight(&spiny_seg5_lights_050157F8.l, 1),\n    gsSPLight(&spiny_seg5_lights_050157F8.a, 2),\n    gsSPVertex(spiny_seg5_vertex_05015C18, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  5, 0x0,  8,  6,  9, 0x0),\n    gsSP2Triangles( 2,  4,  3, 0x0, 10, 11,  2, 0x0),\n    gsSP2Triangles( 5,  7, 10, 0x0,  8, 12,  1, 0x0),\n    gsSP2Triangles(10,  3,  5, 0x0,  2,  3, 10, 0x0),\n    gsSP2Triangles( 5,  9,  6, 0x0,  9, 12,  8, 0x0),\n    gsSP2Triangles( 1,  0,  8, 0x0,  2, 11,  0, 0x0),\n    gsSPLight(&spiny_seg5_lights_05015810.l, 1),\n    gsSPLight(&spiny_seg5_lights_05015810.a, 2),\n    gsSPVertex(spiny_seg5_vertex_05015CE8, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 2,  4,  3, 0x0,  0,  5,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05016738 - 0x05016A48\nconst Gfx spiny_seg5_dl_05016738[] = {\n    gsSPLight(&spiny_seg5_lights_05015828.l, 1),\n    gsSPLight(&spiny_seg5_lights_05015828.a, 2),\n    gsSPVertex(spiny_seg5_vertex_05015D48, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 3,  4,  2, 0x0,  1,  0,  5, 0x0),\n    gsSP2Triangles( 6,  7,  4, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(10,  9,  6, 0x0, 10,  6,  4, 0x0),\n    gsSP2Triangles(11, 12,  1, 0x0,  1, 12,  3, 0x0),\n    gsSP2Triangles(10, 12,  8, 0x0, 10,  3, 12, 0x0),\n    gsSP2Triangles( 4,  3, 10, 0x0, 13, 11, 14, 0x0),\n    gsSP2Triangles(13, 14, 15, 0x0, 15, 14,  5, 0x0),\n    gsSPVertex(spiny_seg5_vertex_05015E48, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  4, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0, 10, 11,  6, 0x0),\n    gsSP2Triangles( 6, 11, 12, 0x0, 10,  6,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSP2Triangles(14, 15,  7, 0x0, 12,  0, 13, 0x0),\n    gsSP2Triangles( 7,  6, 14, 0x0, 14,  6, 12, 0x0),\n    gsSPVertex(spiny_seg5_vertex_05015F48, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 5,  2,  4, 0x0,  4,  2,  1, 0x0),\n    gsSPLight(&spiny_seg5_lights_05015858.l, 1),\n    gsSPLight(&spiny_seg5_lights_05015858.a, 2),\n    gsSPVertex(spiny_seg5_vertex_05015FA8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 7,  8,  5, 0x0,  6,  0,  4, 0x0),\n    gsSP2Triangles( 5,  8,  9, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(11,  9, 12, 0x0,  9,  8, 12, 0x0),\n    gsSP2Triangles(11, 13, 10, 0x0,  0,  5,  9, 0x0),\n    gsSP2Triangles(14,  3, 15, 0x0, 14, 15, 13, 0x0),\n    gsSP2Triangles( 0,  9, 10, 0x0,  0, 10,  1, 0x0),\n    gsSP2Triangles( 6,  5,  0, 0x0, 15, 10, 13, 0x0),\n    gsSP2Triangles( 3,  1, 15, 0x0, 10, 15,  1, 0x0),\n    gsSPLight(&spiny_seg5_lights_05015840.l, 1),\n    gsSPLight(&spiny_seg5_lights_05015840.a, 2),\n    gsSPVertex(spiny_seg5_vertex_050160A8, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  0,  8,  1, 0x0),\n    gsSP2Triangles( 2,  1,  3, 0x0,  3,  1,  7, 0x0),\n    gsSP2Triangles( 3,  5,  9, 0x0,  1,  8,  7, 0x0),\n    gsSP2Triangles( 3,  9,  2, 0x0,  3,  7,  4, 0x0),\n    gsSP2Triangles( 4,  7,  6, 0x0,  4,  6,  5, 0x0),\n    gsSPLight(&spiny_seg5_lights_05015870.l, 1),\n    gsSPLight(&spiny_seg5_lights_05015870.a, 2),\n    gsSPVertex(spiny_seg5_vertex_05016148, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(spiny_seg5_vertex_05016238, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(spiny_seg5_vertex_05016328, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05016A48 - 0x05016A58\nconst Gfx spiny_seg5_dl_05016A48[] = {\n    gsSPNumLights(NUMLIGHTS_1),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/spiny_egg/anims/anim_050157CC.inc.c",
    "content": "// 0x05015750\nstatic const s16 spiny_egg_seg5_animvalue_05015750[] = {\n    0x0000, 0x0000,\n};\n\n// 0x05015754\nstatic const u16 spiny_egg_seg5_animindex_05015754[] = {\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x050157CC\nstatic const struct Animation spiny_egg_seg5_anim_050157CC = {\n    0,\n    0,\n    0,\n    0,\n    0x64,\n    ANIMINDEX_NUMPARTS(spiny_egg_seg5_animindex_05015754),\n    spiny_egg_seg5_animvalue_05015750,\n    spiny_egg_seg5_animindex_05015754,\n    0,\n};\n"
  },
  {
    "path": "actors/spiny_egg/anims/data.inc.c",
    "content": "#include \"anim_050157CC.inc.c\"\n"
  },
  {
    "path": "actors/spiny_egg/anims/table.inc.c",
    "content": "// 0x050157E4\nconst struct Animation *const spiny_egg_seg5_anims_050157E4[] = {\n    &spiny_egg_seg5_anim_050157CC,\n    NULL,\n    NULL,\n};\n"
  },
  {
    "path": "actors/spiny_egg/geo.inc.c",
    "content": "// 0x0C000290\nconst GeoLayout spiny_ball_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 100),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, -18, -34, 10, spiny_egg_seg5_dl_05015368),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, spiny_egg_seg5_dl_05015330),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, spiny_egg_seg5_dl_050152F8),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, spiny_egg_seg5_dl_050152C0),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, spiny_egg_seg5_dl_05015288),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, spiny_egg_seg5_dl_05015250),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, spiny_egg_seg5_dl_05015218),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, spiny_egg_seg5_dl_050151E0),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, spiny_egg_seg5_dl_050151A8),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/spiny_egg/model.inc.c",
    "content": "// Spiny Egg\n\n// 0x050144F8\nstatic const Lights1 spiny_egg_seg5_lights_050144F8 = gdSPDefLights1(\n    0x3f, 0x3f, 0x00,\n    0xff, 0xff, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x05014510\nstatic const Lights1 spiny_egg_seg5_lights_05014510 = gdSPDefLights1(\n    0x3f, 0x00, 0x00,\n    0xff, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x05014528\nstatic const Vtx spiny_egg_seg5_vertex_05014528[] = {\n    {{{  -165,      0,      0}, 0, {     0,      0}, {0xe7, 0x3e, 0x95, 0x00}}},\n    {{{  -100,     28,      0}, 0, {     0,      0}, {0xe7, 0x3e, 0x95, 0x00}}},\n    {{{  -100,    -18,    -27}, 0, {     0,      0}, {0xe7, 0x3e, 0x95, 0x00}}},\n    {{{  -165,      0,      0}, 0, {     0,      0}, {0xe7, 0x3e, 0x6b, 0xff}}},\n    {{{  -100,    -18,     26}, 0, {     0,      0}, {0xe7, 0x3e, 0x6b, 0xff}}},\n    {{{  -100,     28,      0}, 0, {     0,      0}, {0xe7, 0x3e, 0x6b, 0xff}}},\n    {{{  -165,      0,      0}, 0, {     0,      0}, {0xdc, 0x87, 0x00, 0xff}}},\n    {{{  -100,    -18,    -27}, 0, {     0,      0}, {0xdc, 0x87, 0x00, 0xff}}},\n    {{{  -100,    -18,     26}, 0, {     0,      0}, {0xdc, 0x87, 0x00, 0xff}}},\n};\n\n// 0x050145B8\nstatic const Vtx spiny_egg_seg5_vertex_050145B8[] = {\n    {{{   100,    -18,    -27}, 0, {     0,      0}, {0x19, 0x3e, 0x95, 0x00}}},\n    {{{   100,     28,      0}, 0, {     0,      0}, {0x19, 0x3e, 0x95, 0x00}}},\n    {{{   165,      0,      0}, 0, {     0,      0}, {0x19, 0x3e, 0x95, 0x00}}},\n    {{{   100,     28,      0}, 0, {     0,      0}, {0x19, 0x3e, 0x6b, 0xff}}},\n    {{{   100,    -18,     26}, 0, {     0,      0}, {0x19, 0x3e, 0x6b, 0xff}}},\n    {{{   165,      0,      0}, 0, {     0,      0}, {0x19, 0x3e, 0x6b, 0xff}}},\n    {{{   100,    -18,     26}, 0, {     0,      0}, {0x24, 0x87, 0x00, 0xff}}},\n    {{{   100,    -18,    -27}, 0, {     0,      0}, {0x24, 0x87, 0x00, 0xff}}},\n    {{{   165,      0,      0}, 0, {     0,      0}, {0x24, 0x87, 0x00, 0xff}}},\n};\n\n// 0x05014648\nstatic const Vtx spiny_egg_seg5_vertex_05014648[] = {\n    {{{     0,    -32,    -87}, 0, {     0,      0}, {0x69, 0x24, 0xc5, 0x00}}},\n    {{{    27,    -69,    -61}, 0, {     0,      0}, {0x69, 0x24, 0xc5, 0x00}}},\n    {{{     0,    -94,   -124}, 0, {     0,      0}, {0x69, 0x24, 0xc5, 0x00}}},\n    {{{    27,    -69,    -61}, 0, {     0,      0}, {0x02, 0x8a, 0x2d, 0xff}}},\n    {{{   -26,    -70,    -60}, 0, {     0,      0}, {0x02, 0x8a, 0x2d, 0xff}}},\n    {{{     0,    -94,   -124}, 0, {     0,      0}, {0x02, 0x8a, 0x2d, 0xff}}},\n    {{{   -26,    -70,    -60}, 0, {     0,      0}, {0x94, 0x20, 0xc7, 0xff}}},\n    {{{     0,    -32,    -87}, 0, {     0,      0}, {0x94, 0x20, 0xc7, 0xff}}},\n    {{{     0,    -94,   -124}, 0, {     0,      0}, {0x94, 0x20, 0xc7, 0xff}}},\n};\n\n// 0x050146D8\nstatic const Vtx spiny_egg_seg5_vertex_050146D8[] = {\n    {{{     0,   -160,      0}, 0, {     0,      0}, {0x6a, 0xe9, 0x40, 0x00}}},\n    {{{    27,    -95,    -20}, 0, {     0,      0}, {0x6a, 0xe9, 0x40, 0x00}}},\n    {{{     0,    -95,     25}, 0, {     0,      0}, {0x6a, 0xe9, 0x40, 0x00}}},\n    {{{     0,   -160,      0}, 0, {     0,      0}, {0x02, 0xd9, 0x88, 0xff}}},\n    {{{   -26,    -95,    -22}, 0, {     0,      0}, {0x02, 0xd9, 0x88, 0xff}}},\n    {{{    27,    -95,    -20}, 0, {     0,      0}, {0x02, 0xd9, 0x88, 0xff}}},\n    {{{     0,   -160,      0}, 0, {     0,      0}, {0x93, 0xe9, 0x3c, 0xff}}},\n    {{{     0,    -95,     25}, 0, {     0,      0}, {0x93, 0xe9, 0x3c, 0xff}}},\n    {{{   -26,    -95,    -22}, 0, {     0,      0}, {0x93, 0xe9, 0x3c, 0xff}}},\n};\n\n// 0x05014768\nstatic const Vtx spiny_egg_seg5_vertex_05014768[] = {\n    {{{     0,    -94,    124}, 0, {     0,      0}, {0x69, 0x24, 0x3b, 0x00}}},\n    {{{    27,    -69,     61}, 0, {     0,      0}, {0x69, 0x24, 0x3b, 0x00}}},\n    {{{     0,    -32,     87}, 0, {     0,      0}, {0x69, 0x24, 0x3b, 0x00}}},\n    {{{     0,    -94,    124}, 0, {     0,      0}, {0x02, 0x8a, 0xd3, 0xff}}},\n    {{{   -26,    -70,     60}, 0, {     0,      0}, {0x02, 0x8a, 0xd3, 0xff}}},\n    {{{    27,    -69,     61}, 0, {     0,      0}, {0x02, 0x8a, 0xd3, 0xff}}},\n    {{{     0,    -94,    124}, 0, {     0,      0}, {0x94, 0x20, 0x39, 0xff}}},\n    {{{     0,    -32,     87}, 0, {     0,      0}, {0x94, 0x20, 0x39, 0xff}}},\n    {{{   -26,    -70,     60}, 0, {     0,      0}, {0x94, 0x20, 0x39, 0xff}}},\n};\n\n// 0x050147F8\nstatic const Vtx spiny_egg_seg5_vertex_050147F8[] = {\n    {{{     0,     32,     87}, 0, {     0,      0}, {0x69, 0xdc, 0x3b, 0x00}}},\n    {{{    27,     69,     61}, 0, {     0,      0}, {0x69, 0xdc, 0x3b, 0x00}}},\n    {{{     0,     94,    124}, 0, {     0,      0}, {0x69, 0xdc, 0x3b, 0x00}}},\n    {{{    27,     69,     61}, 0, {     0,      0}, {0x02, 0x76, 0xd3, 0xff}}},\n    {{{   -26,     70,     60}, 0, {     0,      0}, {0x02, 0x76, 0xd3, 0xff}}},\n    {{{     0,     94,    124}, 0, {     0,      0}, {0x02, 0x76, 0xd3, 0xff}}},\n    {{{   -26,     70,     60}, 0, {     0,      0}, {0x94, 0xe0, 0x39, 0xff}}},\n    {{{     0,     32,     87}, 0, {     0,      0}, {0x94, 0xe0, 0x39, 0xff}}},\n    {{{     0,     94,    124}, 0, {     0,      0}, {0x94, 0xe0, 0x39, 0xff}}},\n};\n\n// 0x05014888\nstatic const Vtx spiny_egg_seg5_vertex_05014888[] = {\n    {{{     0,     95,     25}, 0, {     0,      0}, {0x6a, 0x17, 0x40, 0x00}}},\n    {{{    27,     95,    -20}, 0, {     0,      0}, {0x6a, 0x17, 0x40, 0x00}}},\n    {{{     0,    160,      0}, 0, {     0,      0}, {0x6a, 0x17, 0x40, 0x00}}},\n    {{{    27,     95,    -20}, 0, {     0,      0}, {0x02, 0x27, 0x88, 0xff}}},\n    {{{   -26,     95,    -22}, 0, {     0,      0}, {0x02, 0x27, 0x88, 0xff}}},\n    {{{     0,    160,      0}, 0, {     0,      0}, {0x02, 0x27, 0x88, 0xff}}},\n    {{{   -26,     95,    -22}, 0, {     0,      0}, {0x93, 0x17, 0x3c, 0xff}}},\n    {{{     0,     95,     25}, 0, {     0,      0}, {0x93, 0x17, 0x3c, 0xff}}},\n    {{{     0,    160,      0}, 0, {     0,      0}, {0x93, 0x17, 0x3c, 0xff}}},\n};\n\n// 0x05014918\nstatic const Vtx spiny_egg_seg5_vertex_05014918[] = {\n    {{{     0,     94,   -124}, 0, {     0,      0}, {0x69, 0xdc, 0xc5, 0x00}}},\n    {{{    27,     69,    -61}, 0, {     0,      0}, {0x69, 0xdc, 0xc5, 0x00}}},\n    {{{     0,     32,    -87}, 0, {     0,      0}, {0x69, 0xdc, 0xc5, 0x00}}},\n    {{{     0,     94,   -124}, 0, {     0,      0}, {0x02, 0x76, 0x2d, 0xff}}},\n    {{{   -26,     70,    -60}, 0, {     0,      0}, {0x02, 0x76, 0x2d, 0xff}}},\n    {{{    27,     69,    -61}, 0, {     0,      0}, {0x02, 0x76, 0x2d, 0xff}}},\n    {{{     0,     94,   -124}, 0, {     0,      0}, {0x94, 0xe0, 0xc7, 0xff}}},\n    {{{     0,     32,    -87}, 0, {     0,      0}, {0x94, 0xe0, 0xc7, 0xff}}},\n    {{{   -26,     70,    -60}, 0, {     0,      0}, {0x94, 0xe0, 0xc7, 0xff}}},\n};\n\n// 0x050149A8\nstatic const Vtx spiny_egg_seg5_vertex_050149A8[] = {\n    {{{    28,    -96,    -28}, 0, {     0,      0}, {0x22, 0x8b, 0xde, 0x00}}},\n    {{{    39,    -96,      0}, 0, {     0,      0}, {0x30, 0x8b, 0x00, 0x00}}},\n    {{{     0,   -104,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{    52,    -73,    -52}, 0, {     0,      0}, {0x3f, 0xa6, 0xc1, 0xff}}},\n    {{{    73,    -73,      0}, 0, {     0,      0}, {0x59, 0xa6, 0x00, 0xff}}},\n    {{{    68,    -39,    -68}, 0, {     0,      0}, {0x52, 0xd0, 0xae, 0xff}}},\n    {{{    96,    -39,      0}, 0, {     0,      0}, {0x75, 0xd0, 0x00, 0xff}}},\n    {{{    73,      0,    -73}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   104,      0,      0}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    68,     39,    -68}, 0, {     0,      0}, {0x52, 0x30, 0xae, 0xff}}},\n    {{{    96,     39,      0}, 0, {     0,      0}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{    52,     73,    -52}, 0, {     0,      0}, {0x3f, 0x5a, 0xc1, 0xff}}},\n    {{{    73,     73,      0}, 0, {     0,      0}, {0x59, 0x5a, 0x00, 0xff}}},\n    {{{    28,     96,    -28}, 0, {     0,      0}, {0x22, 0x75, 0xde, 0xff}}},\n    {{{    39,     96,      0}, 0, {     0,      0}, {0x30, 0x75, 0x00, 0xff}}},\n    {{{     0,    104,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x05014AA8\nstatic const Vtx spiny_egg_seg5_vertex_05014AA8[] = {\n    {{{     0,    -96,    -39}, 0, {     0,      0}, {0x00, 0x8b, 0xd0, 0xff}}},\n    {{{    28,    -96,    -28}, 0, {     0,      0}, {0x22, 0x8b, 0xde, 0x00}}},\n    {{{     0,   -104,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{     0,    -73,    -73}, 0, {     0,      0}, {0x00, 0xa6, 0xa7, 0xff}}},\n    {{{    52,    -73,    -52}, 0, {     0,      0}, {0x3f, 0xa6, 0xc1, 0xff}}},\n    {{{     0,    -39,    -96}, 0, {     0,      0}, {0x00, 0xd0, 0x8b, 0xff}}},\n    {{{    68,    -39,    -68}, 0, {     0,      0}, {0x52, 0xd0, 0xae, 0xff}}},\n    {{{     0,      0,   -104}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    73,      0,    -73}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{     0,     39,    -96}, 0, {     0,      0}, {0x00, 0x30, 0x8b, 0xff}}},\n    {{{    68,     39,    -68}, 0, {     0,      0}, {0x52, 0x30, 0xae, 0xff}}},\n    {{{     0,     73,    -73}, 0, {     0,      0}, {0x00, 0x5a, 0xa7, 0xff}}},\n    {{{    52,     73,    -52}, 0, {     0,      0}, {0x3f, 0x5a, 0xc1, 0xff}}},\n    {{{     0,     96,    -39}, 0, {     0,      0}, {0x00, 0x75, 0xd0, 0xff}}},\n    {{{    28,     96,    -28}, 0, {     0,      0}, {0x22, 0x75, 0xde, 0xff}}},\n    {{{     0,    104,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x05014BA8\nstatic const Vtx spiny_egg_seg5_vertex_05014BA8[] = {\n    {{{   -28,    -96,    -28}, 0, {     0,      0}, {0xde, 0x8b, 0xde, 0xff}}},\n    {{{     0,    -96,    -39}, 0, {     0,      0}, {0x00, 0x8b, 0xd0, 0x00}}},\n    {{{     0,   -104,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{   -52,    -73,    -52}, 0, {     0,      0}, {0xc1, 0xa6, 0xc1, 0xff}}},\n    {{{     0,    -73,    -73}, 0, {     0,      0}, {0x00, 0xa6, 0xa7, 0xff}}},\n    {{{   -68,    -39,    -68}, 0, {     0,      0}, {0xae, 0xd0, 0xae, 0xff}}},\n    {{{     0,    -39,    -96}, 0, {     0,      0}, {0x00, 0xd0, 0x8b, 0xff}}},\n    {{{   -73,      0,    -73}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{     0,      0,   -104}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -68,     39,    -68}, 0, {     0,      0}, {0xae, 0x30, 0xae, 0xff}}},\n    {{{     0,     39,    -96}, 0, {     0,      0}, {0x00, 0x30, 0x8b, 0xff}}},\n    {{{   -52,     73,    -52}, 0, {     0,      0}, {0xc1, 0x5a, 0xc1, 0xff}}},\n    {{{     0,     73,    -73}, 0, {     0,      0}, {0x00, 0x5a, 0xa7, 0xff}}},\n    {{{   -28,     96,    -28}, 0, {     0,      0}, {0xde, 0x75, 0xde, 0xff}}},\n    {{{     0,     96,    -39}, 0, {     0,      0}, {0x00, 0x75, 0xd0, 0xff}}},\n    {{{     0,    104,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x05014CA8\nstatic const Vtx spiny_egg_seg5_vertex_05014CA8[] = {\n    {{{   -39,    -96,      0}, 0, {     0,      0}, {0xd0, 0x8b, 0x00, 0xff}}},\n    {{{   -28,    -96,    -28}, 0, {     0,      0}, {0xde, 0x8b, 0xde, 0x00}}},\n    {{{     0,   -104,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{   -73,    -73,      0}, 0, {     0,      0}, {0xa7, 0xa6, 0x00, 0xff}}},\n    {{{   -52,    -73,    -52}, 0, {     0,      0}, {0xc1, 0xa6, 0xc1, 0xff}}},\n    {{{   -96,    -39,      0}, 0, {     0,      0}, {0x8b, 0xd0, 0x00, 0xff}}},\n    {{{   -68,    -39,    -68}, 0, {     0,      0}, {0xae, 0xd0, 0xae, 0xff}}},\n    {{{  -104,      0,      0}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -73,      0,    -73}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   -96,     39,      0}, 0, {     0,      0}, {0x8b, 0x30, 0x00, 0xff}}},\n    {{{   -68,     39,    -68}, 0, {     0,      0}, {0xae, 0x30, 0xae, 0xff}}},\n    {{{   -73,     73,      0}, 0, {     0,      0}, {0xa7, 0x5a, 0x00, 0xff}}},\n    {{{   -52,     73,    -52}, 0, {     0,      0}, {0xc1, 0x5a, 0xc1, 0xff}}},\n    {{{   -39,     96,      0}, 0, {     0,      0}, {0xd0, 0x75, 0x00, 0xff}}},\n    {{{   -28,     96,    -28}, 0, {     0,      0}, {0xde, 0x75, 0xde, 0xff}}},\n    {{{     0,    104,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x05014DA8\nstatic const Vtx spiny_egg_seg5_vertex_05014DA8[] = {\n    {{{   -28,    -96,     28}, 0, {     0,      0}, {0xde, 0x8b, 0x22, 0xff}}},\n    {{{   -39,    -96,      0}, 0, {     0,      0}, {0xd0, 0x8b, 0x00, 0x00}}},\n    {{{     0,   -104,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{   -52,    -73,     52}, 0, {     0,      0}, {0xc1, 0xa6, 0x3f, 0xff}}},\n    {{{   -73,    -73,      0}, 0, {     0,      0}, {0xa7, 0xa6, 0x00, 0xff}}},\n    {{{   -68,    -39,     68}, 0, {     0,      0}, {0xae, 0xd0, 0x52, 0xff}}},\n    {{{   -96,    -39,      0}, 0, {     0,      0}, {0x8b, 0xd0, 0x00, 0xff}}},\n    {{{   -73,      0,     73}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -104,      0,      0}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -68,     39,     68}, 0, {     0,      0}, {0xae, 0x30, 0x52, 0xff}}},\n    {{{   -96,     39,      0}, 0, {     0,      0}, {0x8b, 0x30, 0x00, 0xff}}},\n    {{{   -52,     73,     52}, 0, {     0,      0}, {0xc1, 0x5a, 0x3f, 0xff}}},\n    {{{   -73,     73,      0}, 0, {     0,      0}, {0xa7, 0x5a, 0x00, 0xff}}},\n    {{{   -28,     96,     28}, 0, {     0,      0}, {0xde, 0x75, 0x22, 0xff}}},\n    {{{   -39,     96,      0}, 0, {     0,      0}, {0xd0, 0x75, 0x00, 0xff}}},\n    {{{     0,    104,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x05014EA8\nstatic const Vtx spiny_egg_seg5_vertex_05014EA8[] = {\n    {{{     0,    -96,     39}, 0, {     0,      0}, {0x00, 0x8b, 0x30, 0xff}}},\n    {{{   -28,    -96,     28}, 0, {     0,      0}, {0xde, 0x8b, 0x22, 0x00}}},\n    {{{     0,   -104,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{     0,    -73,     73}, 0, {     0,      0}, {0x00, 0xa6, 0x59, 0xff}}},\n    {{{   -52,    -73,     52}, 0, {     0,      0}, {0xc1, 0xa6, 0x3f, 0xff}}},\n    {{{     0,    -39,     96}, 0, {     0,      0}, {0x00, 0xd0, 0x75, 0xff}}},\n    {{{   -68,    -39,     68}, 0, {     0,      0}, {0xae, 0xd0, 0x52, 0xff}}},\n    {{{     0,      0,    104}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -73,      0,     73}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{     0,     39,     96}, 0, {     0,      0}, {0x00, 0x30, 0x75, 0xff}}},\n    {{{   -68,     39,     68}, 0, {     0,      0}, {0xae, 0x30, 0x52, 0xff}}},\n    {{{     0,     73,     73}, 0, {     0,      0}, {0x00, 0x5a, 0x59, 0xff}}},\n    {{{   -52,     73,     52}, 0, {     0,      0}, {0xc1, 0x5a, 0x3f, 0xff}}},\n    {{{     0,     96,     39}, 0, {     0,      0}, {0x00, 0x75, 0x30, 0xff}}},\n    {{{   -28,     96,     28}, 0, {     0,      0}, {0xde, 0x75, 0x22, 0xff}}},\n    {{{     0,    104,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x05014FA8\nstatic const Vtx spiny_egg_seg5_vertex_05014FA8[] = {\n    {{{    28,    -96,     28}, 0, {     0,      0}, {0x22, 0x8b, 0x22, 0xff}}},\n    {{{     0,    -96,     39}, 0, {     0,      0}, {0x00, 0x8b, 0x30, 0x00}}},\n    {{{     0,   -104,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{    52,    -73,     52}, 0, {     0,      0}, {0x3f, 0xa6, 0x3f, 0xff}}},\n    {{{     0,    -73,     73}, 0, {     0,      0}, {0x00, 0xa6, 0x59, 0xff}}},\n    {{{    68,    -39,     68}, 0, {     0,      0}, {0x52, 0xd0, 0x52, 0xff}}},\n    {{{     0,    -39,     96}, 0, {     0,      0}, {0x00, 0xd0, 0x75, 0xff}}},\n    {{{    73,      0,     73}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{     0,      0,    104}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    68,     39,     68}, 0, {     0,      0}, {0x52, 0x30, 0x52, 0xff}}},\n    {{{     0,     39,     96}, 0, {     0,      0}, {0x00, 0x30, 0x75, 0xff}}},\n    {{{    52,     73,     52}, 0, {     0,      0}, {0x3f, 0x5a, 0x3f, 0xff}}},\n    {{{     0,     73,     73}, 0, {     0,      0}, {0x00, 0x5a, 0x59, 0xff}}},\n    {{{    28,     96,     28}, 0, {     0,      0}, {0x22, 0x75, 0x22, 0xff}}},\n    {{{     0,     96,     39}, 0, {     0,      0}, {0x00, 0x75, 0x30, 0xff}}},\n    {{{     0,    104,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x050150A8\nstatic const Vtx spiny_egg_seg5_vertex_050150A8[] = {\n    {{{    39,    -96,      0}, 0, {     0,      0}, {0x30, 0x8b, 0x00, 0xff}}},\n    {{{    28,    -96,     28}, 0, {     0,      0}, {0x22, 0x8b, 0x22, 0x00}}},\n    {{{     0,   -104,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{    73,    -73,      0}, 0, {     0,      0}, {0x59, 0xa6, 0x00, 0xff}}},\n    {{{    52,    -73,     52}, 0, {     0,      0}, {0x3f, 0xa6, 0x3f, 0xff}}},\n    {{{    96,    -39,      0}, 0, {     0,      0}, {0x75, 0xd0, 0x00, 0xff}}},\n    {{{    68,    -39,     68}, 0, {     0,      0}, {0x52, 0xd0, 0x52, 0xff}}},\n    {{{   104,      0,      0}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    73,      0,     73}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{    96,     39,      0}, 0, {     0,      0}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{    68,     39,     68}, 0, {     0,      0}, {0x52, 0x30, 0x52, 0xff}}},\n    {{{    73,     73,      0}, 0, {     0,      0}, {0x59, 0x5a, 0x00, 0xff}}},\n    {{{    52,     73,     52}, 0, {     0,      0}, {0x3f, 0x5a, 0x3f, 0xff}}},\n    {{{    39,     96,      0}, 0, {     0,      0}, {0x30, 0x75, 0x00, 0xff}}},\n    {{{    28,     96,     28}, 0, {     0,      0}, {0x22, 0x75, 0x22, 0xff}}},\n    {{{     0,    104,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x050151A8 - 0x050151E0\nconst Gfx spiny_egg_seg5_dl_050151A8[] = {\n    gsSPLight(&spiny_egg_seg5_lights_050144F8.l, 1),\n    gsSPLight(&spiny_egg_seg5_lights_050144F8.a, 2),\n    gsSPVertex(spiny_egg_seg5_vertex_05014528, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050151E0 - 0x05015218\nconst Gfx spiny_egg_seg5_dl_050151E0[] = {\n    gsSPLight(&spiny_egg_seg5_lights_050144F8.l, 1),\n    gsSPLight(&spiny_egg_seg5_lights_050144F8.a, 2),\n    gsSPVertex(spiny_egg_seg5_vertex_050145B8, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05015218 - 0x05015250\nconst Gfx spiny_egg_seg5_dl_05015218[] = {\n    gsSPLight(&spiny_egg_seg5_lights_050144F8.l, 1),\n    gsSPLight(&spiny_egg_seg5_lights_050144F8.a, 2),\n    gsSPVertex(spiny_egg_seg5_vertex_05014648, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05015250 - 0x05015288\nconst Gfx spiny_egg_seg5_dl_05015250[] = {\n    gsSPLight(&spiny_egg_seg5_lights_050144F8.l, 1),\n    gsSPLight(&spiny_egg_seg5_lights_050144F8.a, 2),\n    gsSPVertex(spiny_egg_seg5_vertex_050146D8, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05015288 - 0x050152C0\nconst Gfx spiny_egg_seg5_dl_05015288[] = {\n    gsSPLight(&spiny_egg_seg5_lights_050144F8.l, 1),\n    gsSPLight(&spiny_egg_seg5_lights_050144F8.a, 2),\n    gsSPVertex(spiny_egg_seg5_vertex_05014768, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050152C0 - 0x050152F8\nconst Gfx spiny_egg_seg5_dl_050152C0[] = {\n    gsSPLight(&spiny_egg_seg5_lights_050144F8.l, 1),\n    gsSPLight(&spiny_egg_seg5_lights_050144F8.a, 2),\n    gsSPVertex(spiny_egg_seg5_vertex_050147F8, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050152F8 - 0x05015330\nconst Gfx spiny_egg_seg5_dl_050152F8[] = {\n    gsSPLight(&spiny_egg_seg5_lights_050144F8.l, 1),\n    gsSPLight(&spiny_egg_seg5_lights_050144F8.a, 2),\n    gsSPVertex(spiny_egg_seg5_vertex_05014888, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05015330 - 0x05015368\nconst Gfx spiny_egg_seg5_dl_05015330[] = {\n    gsSPLight(&spiny_egg_seg5_lights_050144F8.l, 1),\n    gsSPLight(&spiny_egg_seg5_lights_050144F8.a, 2),\n    gsSPVertex(spiny_egg_seg5_vertex_05014918, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05015368 - 0x05015740\nconst Gfx spiny_egg_seg5_dl_05015368[] = {\n    gsSPLight(&spiny_egg_seg5_lights_05014510.l, 1),\n    gsSPLight(&spiny_egg_seg5_lights_05014510.a, 2),\n    gsSPVertex(spiny_egg_seg5_vertex_050149A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(spiny_egg_seg5_vertex_05014AA8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(spiny_egg_seg5_vertex_05014BA8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(spiny_egg_seg5_vertex_05014CA8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(spiny_egg_seg5_vertex_05014DA8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(spiny_egg_seg5_vertex_05014EA8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(spiny_egg_seg5_vertex_05014FA8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(spiny_egg_seg5_vertex_050150A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05015740 - 0x05015750\nconst Gfx spiny_egg_seg5_dl_05015740[] = {\n    gsSPNumLights(NUMLIGHTS_1),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/springboard/collision.inc.c",
    "content": "// Springboard\n\n// 0x05001A28 - 0x05001B48\nconst Collision springboard_collision_05001A28[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0xC),\n    COL_VERTEX(205, 0, 0),\n    COL_VERTEX(102, 0, -176),\n    COL_VERTEX(-101, 0, -176),\n    COL_VERTEX(102, -19, -176),\n    COL_VERTEX(-101, -19, -176),\n    COL_VERTEX(-204, -19, 0),\n    COL_VERTEX(102, -19, 177),\n    COL_VERTEX(205, -19, 0),\n    COL_VERTEX(-101, 0, 177),\n    COL_VERTEX(-204, 0, 0),\n    COL_VERTEX(-101, -19, 177),\n    COL_VERTEX(102, 0, 177),\n\n    COL_TRI_INIT(SURFACE_DEFAULT, 20),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI(1, 4, 2),\n    COL_TRI(1, 3, 4),\n    COL_TRI(5, 4, 3),\n    COL_TRI(6, 5, 3),\n    COL_TRI(6, 3, 7),\n    COL_TRI(0, 7, 3),\n    COL_TRI(2, 4, 5),\n    COL_TRI(0, 2, 8),\n    COL_TRI(2, 9, 8),\n    COL_TRI(2, 5, 9),\n    COL_TRI(6, 10, 5),\n    COL_TRI(9, 5, 10),\n    COL_TRI(9, 10, 8),\n    COL_TRI(8, 10, 6),\n    COL_TRI(0, 8, 11),\n    COL_TRI(8, 6, 11),\n    COL_TRI(11, 6, 7),\n    COL_TRI(11, 7, 0),\n    COL_TRI_STOP(),\n    COL_END(),\n\n    COL_INIT(),\n    COL_VERTEX_INIT(0xC),\n    COL_VERTEX(102, 20, -176),\n    COL_VERTEX(102, 0, -176),\n    COL_VERTEX(-101, 0, -176),\n    COL_VERTEX(-101, 20, -176),\n    COL_VERTEX(205, 20, 0),\n    COL_VERTEX(102, 20, 177),\n    COL_VERTEX(-204, 20, 0),\n    COL_VERTEX(205, 0, 0),\n    COL_VERTEX(-204, 0, 0),\n    COL_VERTEX(-101, 20, 177),\n    COL_VERTEX(102, 0, 177),\n    COL_VERTEX(-101, 0, 177),\n\n    COL_TRI_INIT(SURFACE_DEFAULT, 16),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(4, 0, 5),\n    COL_TRI(0, 6, 5),\n    COL_TRI(4, 1, 0),\n    COL_TRI(0, 3, 6),\n    COL_TRI(4, 7, 1),\n    COL_TRI(3, 2, 8),\n    COL_TRI(3, 8, 6),\n    COL_TRI(5, 7, 4),\n    COL_TRI(9, 10, 5),\n    COL_TRI(5, 10, 7),\n    COL_TRI(6, 9, 5),\n    COL_TRI(6, 8, 11),\n    COL_TRI(6, 11, 9),\n    COL_TRI(9, 11, 10),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n\nUNUSED static const u32 springboard_unused_1 = 0;\n"
  },
  {
    "path": "actors/springboard/geo.inc.c",
    "content": "// top of beta trampoline - unused\n// 0x0C000000\nconst GeoLayout springboard_top_geo[] = {\n    GEO_CULLING_RADIUS(500),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, springboard_checkerboard_seg5_dl_050016B8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// middle of beta trampoline - unused\n// 0x0C000018\nconst GeoLayout springboard_spring_geo[] = {\n    GEO_CULLING_RADIUS(500),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, springboard_spring_seg5_dl_05001800),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// bottom of beta trampoline - unused\n// 0x0C000030\nconst GeoLayout springboard_bottom_geo[] = {\n    GEO_CULLING_RADIUS(500),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, springboard_checkerboard_seg5_dl_05001900),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/springboard/model.inc.c",
    "content": "// Springboard (unused)\n\n// 0x05000000\nstatic const Lights1 springboard_seg5_lights_05000000 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05000018\nALIGNED8 static const Texture springboard_seg5_texture_05000018[] = {\n#include \"actors/springboard/springboard_top_unused.rgba16.inc.c\"\n};\n\n// 0x05000818\nALIGNED8 static const Texture springboard_seg5_texture_05000818[] = {\n#include \"actors/springboard/springboard_base_unused.rgba16.inc.c\"\n};\n\n// 0x05001018\nstatic const Vtx springboard_seg5_vertex_05001018[] = {\n    {{{   205,      0,      0}, 0, {  2524,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,      0,   -176}, 0, {  1502,  -1292}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -101,      0,   -176}, 0, {  -542,  -1292}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   205,      0,      0}, 0, {  2524,    478}, {0x6d, 0x00, 0xc0, 0xff}}},\n    {{{   102,    -19,   -176}, 0, {  1502,  -1292}, {0x6d, 0x00, 0xc0, 0xff}}},\n    {{{   102,      0,   -176}, 0, {  1502,  -1292}, {0x6d, 0x00, 0xc0, 0xff}}},\n    {{{   102,      0,   -176}, 0, {  1502,  -1292}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -101,    -19,   -176}, 0, {  -542,  -1292}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -101,      0,   -176}, 0, {  -542,  -1292}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   102,    -19,   -176}, 0, {  1502,  -1292}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -204,    -19,      0}, 0, { -1564,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -101,    -19,   -176}, 0, {  -542,  -1292}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   102,    -19,   -176}, 0, {  1502,  -1292}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   102,    -19,    177}, 0, {  1502,   2248}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   205,    -19,      0}, 0, {  2524,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   205,    -19,      0}, 0, {  2524,    478}, {0x6d, 0x00, 0xc0, 0xff}}},\n};\n\n// 0x05001118\nstatic const Vtx springboard_seg5_vertex_05001118[] = {\n    {{{  -101,      0,   -176}, 0, {  -542,  -1292}, {0x93, 0x00, 0xc0, 0xff}}},\n    {{{  -101,    -19,   -176}, 0, {  -542,  -1292}, {0x93, 0x00, 0xc0, 0xff}}},\n    {{{  -204,    -19,      0}, 0, { -1564,    478}, {0x93, 0x00, 0xc0, 0xff}}},\n    {{{   205,      0,      0}, 0, {  2524,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -101,      0,   -176}, 0, {  -542,  -1292}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -101,      0,    177}, 0, {  -542,   2248}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -204,      0,      0}, 0, { -1564,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -204,      0,      0}, 0, { -1564,    478}, {0x93, 0x00, 0xc0, 0xff}}},\n    {{{   102,    -19,    177}, 0, {  1502,   2248}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -101,    -19,    177}, 0, {  -542,   2248}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -204,    -19,      0}, 0, { -1564,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -204,      0,      0}, 0, { -1564,    478}, {0x93, 0x00, 0x3f, 0xff}}},\n    {{{  -204,    -19,      0}, 0, { -1564,    478}, {0x93, 0x00, 0x3f, 0xff}}},\n    {{{  -101,    -19,    177}, 0, {  -542,   2248}, {0x93, 0x00, 0x3f, 0xff}}},\n    {{{  -101,      0,    177}, 0, {  -542,   2248}, {0x93, 0x00, 0x3f, 0xff}}},\n};\n\n// 0x05001208\nstatic const Vtx springboard_seg5_vertex_05001208[] = {\n    {{{  -101,      0,    177}, 0, {  -542,   2248}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -101,    -19,    177}, 0, {  -542,   2248}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,    -19,    177}, 0, {  1502,   2248}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   205,      0,      0}, 0, {  2524,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -101,      0,    177}, 0, {  -542,   2248}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,      0,    177}, 0, {  1502,   2248}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,      0,    177}, 0, {  1502,   2248}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,      0,    177}, 0, {  1502,   2248}, {0x6d, 0x00, 0x3f, 0xff}}},\n    {{{   102,    -19,    177}, 0, {  1502,   2248}, {0x6d, 0x00, 0x3f, 0xff}}},\n    {{{   205,    -19,      0}, 0, {  2524,    478}, {0x6d, 0x00, 0x3f, 0xff}}},\n    {{{   205,      0,      0}, 0, {  2524,    478}, {0x6d, 0x00, 0x3f, 0xff}}},\n};\n\n// 0x050012B8\nstatic const Vtx springboard_seg5_vertex_050012B8[] = {\n    {{{   -76,    -55,   -132}, 0, {     0,    990}, {0x93, 0x00, 0xc1, 0xff}}},\n    {{{  -153,     56,      0}, 0, {   990,      0}, {0x93, 0x00, 0xc1, 0xff}}},\n    {{{   -76,     56,   -132}, 0, {     0,      0}, {0x93, 0x00, 0xc1, 0xff}}},\n    {{{   -76,     56,    133}, 0, {   990,      0}, {0x93, 0x00, 0x3f, 0xff}}},\n    {{{  -153,     56,      0}, 0, {     0,      0}, {0x93, 0x00, 0x3f, 0xff}}},\n    {{{  -153,    -55,      0}, 0, {     0,    990}, {0x93, 0x00, 0x3f, 0xff}}},\n    {{{   -76,    -55,    133}, 0, {   990,    990}, {0x93, 0x00, 0x3f, 0xff}}},\n    {{{    77,     56,    133}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -76,     56,    133}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -76,    -55,    133}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    77,    -55,    133}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   154,     56,      0}, 0, {   990,      0}, {0x6d, 0x00, 0x3f, 0xff}}},\n    {{{    77,     56,    133}, 0, {     0,      0}, {0x6d, 0x00, 0x3f, 0xff}}},\n    {{{    77,    -55,    133}, 0, {     0,    990}, {0x6d, 0x00, 0x3f, 0xff}}},\n    {{{   154,    -55,      0}, 0, {   990,    990}, {0x6d, 0x00, 0x3f, 0xff}}},\n};\n\n// 0x050013A8\nstatic const Vtx springboard_seg5_vertex_050013A8[] = {\n    {{{    77,     56,   -132}, 0, {   990,      0}, {0x6d, 0x00, 0xc1, 0xff}}},\n    {{{   154,    -55,      0}, 0, {     0,    990}, {0x6d, 0x00, 0xc1, 0xff}}},\n    {{{    77,    -55,   -132}, 0, {   990,    990}, {0x6d, 0x00, 0xc1, 0xff}}},\n    {{{   -76,    -55,   -132}, 0, {     0,    990}, {0x93, 0x00, 0xc1, 0xff}}},\n    {{{  -153,    -55,      0}, 0, {   990,    990}, {0x93, 0x00, 0xc1, 0xff}}},\n    {{{  -153,     56,      0}, 0, {   990,      0}, {0x93, 0x00, 0xc1, 0xff}}},\n    {{{   -76,     56,   -132}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    77,     56,   -132}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    77,    -55,   -132}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -76,    -55,   -132}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   154,     56,      0}, 0, {     0,      0}, {0x6d, 0x00, 0xc1, 0xff}}},\n};\n\n// 0x05001458\nstatic const Vtx springboard_seg5_vertex_05001458[] = {\n    {{{   102,     20,   -176}, 0, {  1502,  -1292}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   102,      0,   -176}, 0, {  1502,  -1292}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -101,      0,   -176}, 0, {  -542,  -1292}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -101,     20,   -176}, 0, {  -542,  -1292}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   205,     20,      0}, 0, {  2524,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,     20,   -176}, 0, {  1502,  -1292}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,     20,    177}, 0, {  1502,   2248}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -204,     20,      0}, 0, { -1564,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   205,     20,      0}, 0, {  2524,    480}, {0x6d, 0x00, 0xc0, 0xff}}},\n    {{{   102,      0,   -176}, 0, {  1502,  -1292}, {0x6d, 0x00, 0xc0, 0xff}}},\n    {{{   102,     20,   -176}, 0, {  1502,  -1292}, {0x6d, 0x00, 0xc0, 0xff}}},\n    {{{  -101,     20,   -176}, 0, {  -542,  -1292}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   205,      0,      0}, 0, {  2524,    480}, {0x6d, 0x00, 0xc0, 0xff}}},\n    {{{  -101,     20,   -176}, 0, {  -542,  -1292}, {0x93, 0x00, 0xc0, 0xff}}},\n    {{{  -101,      0,   -176}, 0, {  -542,  -1292}, {0x93, 0x00, 0xc0, 0xff}}},\n    {{{  -204,      0,      0}, 0, { -1564,    480}, {0x93, 0x00, 0xc0, 0xff}}},\n};\n\n// 0x05001558\nstatic const Vtx springboard_seg5_vertex_05001558[] = {\n    {{{  -101,     20,   -176}, 0, {  -542,  -1292}, {0x93, 0x00, 0xc0, 0xff}}},\n    {{{  -204,      0,      0}, 0, { -1564,    480}, {0x93, 0x00, 0xc0, 0xff}}},\n    {{{  -204,     20,      0}, 0, { -1564,    480}, {0x93, 0x00, 0xc0, 0xff}}},\n    {{{   102,     20,    177}, 0, {  1502,   2248}, {0x6d, 0x00, 0x3f, 0xff}}},\n    {{{   205,      0,      0}, 0, {  2524,    480}, {0x6d, 0x00, 0x3f, 0xff}}},\n    {{{   205,     20,      0}, 0, {  2524,    480}, {0x6d, 0x00, 0x3f, 0xff}}},\n    {{{  -101,     20,    177}, 0, {  -542,   2248}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,      0,    177}, 0, {  1502,   2248}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,     20,    177}, 0, {  1502,   2248}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,      0,    177}, 0, {  1502,   2248}, {0x6d, 0x00, 0x3f, 0xff}}},\n    {{{  -204,     20,      0}, 0, { -1564,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -101,     20,    177}, 0, {  -542,   2248}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,     20,    177}, 0, {  1502,   2248}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -204,     20,      0}, 0, { -1564,    480}, {0x93, 0x00, 0x3f, 0xff}}},\n    {{{  -204,      0,      0}, 0, { -1564,    480}, {0x93, 0x00, 0x3f, 0xff}}},\n    {{{  -101,      0,    177}, 0, {  -542,   2248}, {0x93, 0x00, 0x3f, 0xff}}},\n};\n\n// 0x05001658\nstatic const Vtx springboard_seg5_vertex_05001658[] = {\n    {{{  -204,     20,      0}, 0, { -1564,    480}, {0x93, 0x00, 0x3f, 0xff}}},\n    {{{  -101,      0,    177}, 0, {  -542,   2248}, {0x93, 0x00, 0x3f, 0xff}}},\n    {{{  -101,     20,    177}, 0, {  -542,   2248}, {0x93, 0x00, 0x3f, 0xff}}},\n    {{{  -101,     20,    177}, 0, {  -542,   2248}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -101,      0,    177}, 0, {  -542,   2248}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,      0,    177}, 0, {  1502,   2248}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x050016B8 - 0x05001800\nconst Gfx springboard_checkerboard_seg5_dl_050016B8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, springboard_seg5_texture_05000018),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&springboard_seg5_lights_05000000.l, 1),\n    gsSPLight(&springboard_seg5_lights_05000000.a, 2),\n    gsSPVertex(springboard_seg5_vertex_05001018, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 10, 12, 0x0),\n    gsSP2Triangles(13, 12, 14, 0x0,  3, 15,  4, 0x0),\n    gsSPVertex(springboard_seg5_vertex_05001118, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  0,  2,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(springboard_seg5_vertex_05001208, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  2,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle( 7,  9, 10, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x05001800 - 0x05001900\nconst Gfx springboard_spring_seg5_dl_05001800[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, springboard_seg5_texture_05000818),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&springboard_seg5_lights_05000000.l, 1),\n    gsSPLight(&springboard_seg5_lights_05000000.a, 2),\n    gsSPVertex(springboard_seg5_vertex_050012B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(springboard_seg5_vertex_050013A8, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP1Triangle( 0, 10,  1, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x05001900 - 0x05001A28\nconst Gfx springboard_checkerboard_seg5_dl_05001900[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, springboard_seg5_texture_05000018),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&springboard_seg5_lights_05000000.l, 1),\n    gsSPLight(&springboard_seg5_lights_05000000.a, 2),\n    gsSPVertex(springboard_seg5_vertex_05001458, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  5, 11,  7, 0x0),\n    gsSP2Triangles( 8, 12,  9, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(springboard_seg5_vertex_05001558, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  3,  9,  4, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(springboard_seg5_vertex_05001658, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/star/geo.inc.c",
    "content": "// 0x16000EA0\nconst GeoLayout star_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x9B, 100),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, star_seg3_dl_0302B870),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, star_seg3_dl_0302BA18),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/star/model.inc.c",
    "content": "// Star\n\n// 0x0302A6D8\nstatic const Lights1 star_seg3_lights_0302A6D8 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0302A6F0\nALIGNED8 static const Texture star_seg3_texture_0302A6F0[] = {\n#include \"actors/star/star_surface.rgba16.inc.c\"\n};\n\n// 0x0302AEF0\nALIGNED8 static const Texture star_seg3_texture_0302AEF0[] = {\n#include \"actors/star/star_eye.rgba16.inc.c\"\n};\n\n// 0x0302B6F0\nstatic const Vtx star_seg3_vertex_0302B6F0[] = {\n    {{{     0,      8,    -89}, 0, {     0,      0}, {0x00, 0x07, 0x82, 0xff}}},\n    {{{   190,   -201,      0}, 0, {     0,      0}, {0x55, 0xa3, 0x00, 0xff}}},\n    {{{     0,   -129,      0}, 0, {     0,      0}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{   146,    -42,      0}, 0, {     0,      0}, {0x7c, 0xe7, 0x00, 0xff}}},\n    {{{     0,      8,     90}, 0, {     0,      0}, {0x00, 0x07, 0x7e, 0xff}}},\n    {{{   257,     84,      0}, 0, {     0,      0}, {0x68, 0x47, 0x00, 0xff}}},\n    {{{  -145,    -42,      0}, 0, {     0,      0}, {0x84, 0xe7, 0x00, 0xff}}},\n    {{{  -189,   -201,      0}, 0, {     0,      0}, {0xaa, 0xa3, 0x00, 0xff}}},\n    {{{  -256,     84,      0}, 0, {     0,      0}, {0x97, 0x47, 0x00, 0xff}}},\n    {{{     0,    246,      0}, 0, {     0,      0}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{    96,     99,      0}, 0, {     0,      0}, {0x3d, 0x6f, 0x00, 0xff}}},\n    {{{   -95,     99,      0}, 0, {     0,      0}, {0xc3, 0x6f, 0x00, 0xff}}},\n};\n\n// 0x0302B7B0 - 0x0302B870\nconst Gfx star_seg3_dl_0302B7B0[] = {\n    gsSPLight(&star_seg3_lights_0302A6D8.l, 1),\n    gsSPLight(&star_seg3_lights_0302A6D8.a, 2),\n    gsSPVertex(star_seg3_vertex_0302B6F0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 5,  3,  0, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 6,  7,  4, 0x0,  7,  2,  4, 0x0),\n    gsSP2Triangles( 8,  6,  4, 0x0,  9,  4, 10, 0x0),\n    gsSP2Triangles( 9, 11,  4, 0x0,  4,  5, 10, 0x0),\n    gsSP2Triangles(11,  8,  4, 0x0,  0,  2,  7, 0x0),\n    gsSP2Triangles( 0,  7,  6, 0x0,  0,  6,  8, 0x0),\n    gsSP2Triangles( 0,  8, 11, 0x0,  0, 11,  9, 0x0),\n    gsSP2Triangles(10,  5,  0, 0x0, 10,  0,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0302B870 - 0x0302B908\nconst Gfx star_seg3_dl_0302B870[] = {\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_TEXTURE_GEN),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsDPSetCombineMode(G_CC_DECALFADE, G_CC_DECALFADE),\n    gsDPLoadTextureBlock(star_seg3_texture_0302A6F0, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 64, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 5, 6, G_TX_NOLOD, G_TX_NOLOD), //! Dimensions loaded as 32x64 despite this texture having only 32x32 dimensions, harmless due to environment mapping (G_TEXTURE_GEN & gsSPTexture values)\n    gsSPTexture(0x07C0, 0x07C0, 0, G_TX_RENDERTILE, G_ON),\n    gsSPDisplayList(star_seg3_dl_0302B7B0),\n    gsDPPipeSync(),\n    gsSPTexture(0x07C0, 0x07C0, 0, G_TX_RENDERTILE, G_OFF),\n    gsSPClearGeometryMode(G_TEXTURE_GEN),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0302B908\nstatic const Lights1 star_seg3_lights_0302B908 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0302B920\nstatic const Vtx star_seg3_vertex_0302B920[] = {\n    {{{    67,     86,     63}, 0, {   990,      0}, {0x18, 0x15, 0x7a, 0xff}}},\n    {{{     0,    -27,     96}, 0, {     0,    990}, {0x18, 0x15, 0x7a, 0xff}}},\n    {{{    67,    -29,     83}, 0, {   990,    990}, {0x18, 0x15, 0x7a, 0xff}}},\n    {{{     0,     89,     76}, 0, {     0,      0}, {0x18, 0x15, 0x7a, 0xff}}},\n    {{{     0,     89,     76}, 0, {   990,      0}, {0xe8, 0x15, 0x7a, 0xff}}},\n    {{{   -66,    -29,     83}, 0, {     0,    990}, {0xe8, 0x15, 0x7a, 0xff}}},\n    {{{     0,    -27,     96}, 0, {   990,    990}, {0xe8, 0x15, 0x7a, 0xff}}},\n    {{{     0,     89,     76}, 0, {   990,      0}, {0xe7, 0x15, 0x7a, 0xff}}},\n    {{{   -66,     86,     63}, 0, {     0,      0}, {0xe7, 0x15, 0x7a, 0xff}}},\n    {{{   -66,    -29,     83}, 0, {     0,    990}, {0xe7, 0x15, 0x7a, 0xff}}},\n};\n\n// 0x0302B9C0 - 0x0302BA18\nconst Gfx star_seg3_dl_0302B9C0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, star_seg3_texture_0302AEF0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&star_seg3_lights_0302B908.l, 1),\n    gsSPLight(&star_seg3_lights_0302B908.a, 2),\n    gsSPVertex(star_seg3_vertex_0302B920, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0302BA18 - 0x0302BA88\nconst Gfx star_seg3_dl_0302BA18[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(star_seg3_dl_0302B9C0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/stomp_smoke/geo.inc.c",
    "content": "// 0x1700009C\nconst GeoLayout small_water_splash_geo[] = {\n    GEO_SWITCH_CASE(6, geo_switch_anim_state),\n    GEO_OPEN_NODE(),\n        // TODO: Rename these display lists\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, stomp_smoke_seg4_dl_040251F8),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, stomp_smoke_seg4_dl_04025210),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, stomp_smoke_seg4_dl_04025228),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, stomp_smoke_seg4_dl_04025240),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, stomp_smoke_seg4_dl_04025258),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, stomp_smoke_seg4_dl_04025270),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x170000E0\nconst GeoLayout mario_TODO_geo_0000E0[] = {\n    GEO_SWITCH_CASE(6, geo_switch_anim_state),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, stomp_smoke_seg4_dl_04025288),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, stomp_smoke_seg4_dl_040252A0),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, stomp_smoke_seg4_dl_040252B8),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, stomp_smoke_seg4_dl_040252D0),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, stomp_smoke_seg4_dl_040252E8),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, stomp_smoke_seg4_dl_04025300),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/stomp_smoke/model.inc.c",
    "content": "// Stomp Smoke\n\n// 0x040220C8\nstatic const Vtx stomp_smoke_seg4_vertex_040220C8[] = {\n    {{{   -32,      0,     32}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xc8}}},\n    {{{    32,      0,     32}, 0, {  1984,      0}, {0xff, 0xff, 0xff, 0xc8}}},\n    {{{    32,      0,    -32}, 0, {  1984,   1984}, {0xff, 0xff, 0xff, 0xc8}}},\n    {{{   -32,      0,    -32}, 0, {     0,   1984}, {0xff, 0xff, 0xff, 0xc8}}},\n};\n\n// 0x04022108\nstatic const Vtx stomp_smoke_seg4_vertex_04022108[] = {\n    {{{   -32,      0,     32}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0xc8}}},\n    {{{    32,      0,     32}, 0, {  1984,      0}, {0xff, 0x00, 0x00, 0xc8}}},\n    {{{    32,      0,    -32}, 0, {  1984,   1984}, {0xff, 0x00, 0x00, 0xc8}}},\n    {{{   -32,      0,    -32}, 0, {     0,   1984}, {0xff, 0x00, 0x00, 0xc8}}},\n};\n\n// 0x04022148\nALIGNED8 static const Texture stomp_smoke_seg4_texture_04022148[] = {\n#include \"actors/stomp_smoke/stomp_smoke_0.ia16.inc.c\"\n};\n\n// 0x04022948\nALIGNED8 static const Texture stomp_smoke_seg4_texture_04022948[] = {\n#include \"actors/stomp_smoke/stomp_smoke_1.ia16.inc.c\"\n};\n\n// 0x04023148\nALIGNED8 static const Texture stomp_smoke_seg4_texture_04023148[] = {\n#include \"actors/stomp_smoke/stomp_smoke_2.ia16.inc.c\"\n};\n\n// 0x04023948\nALIGNED8 static const Texture stomp_smoke_seg4_texture_04023948[] = {\n#include \"actors/stomp_smoke/stomp_smoke_3.ia16.inc.c\"\n};\n\n// 0x04024148\nALIGNED8 static const Texture stomp_smoke_seg4_texture_04024148[] = {\n#include \"actors/stomp_smoke/stomp_smoke_4.ia16.inc.c\"\n};\n\n// 0x04024948\nALIGNED8 static const Texture stomp_smoke_seg4_texture_04024948[] = {\n#include \"actors/stomp_smoke/stomp_smoke_5.ia16.inc.c\"\n};\n\n// 0x04025148 - 0x04025190\nconst Gfx stomp_smoke_seg4_dl_04025148[] = {\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x04025190 - 0x040251C8\nconst Gfx stomp_smoke_seg4_dl_04025190[] = {\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsDPPipeSync(),\n    gsSPTexture(0x0001, 0x0001, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x040251C8 - 0x040251E0\nconst Gfx stomp_smoke_seg4_dl_040251C8[] = {\n    gsSPDisplayList(stomp_smoke_seg4_dl_04025148),\n    gsSPVertex(stomp_smoke_seg4_vertex_040220C8, 4, 0),\n    gsSPBranchList(stomp_smoke_seg4_dl_04025190),\n};\n\n// 0x040251E0 - 0x040251F8\nconst Gfx stomp_smoke_seg4_dl_040251E0[] = {\n    gsSPDisplayList(stomp_smoke_seg4_dl_04025148),\n    gsSPVertex(stomp_smoke_seg4_vertex_04022108, 4, 0),\n    gsSPBranchList(stomp_smoke_seg4_dl_04025190),\n};\n\n// 0x040251F8 - 0x04025210\nconst Gfx stomp_smoke_seg4_dl_040251F8[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, stomp_smoke_seg4_texture_04022148),\n    gsSPBranchList(stomp_smoke_seg4_dl_040251C8),\n};\n\n// 0x04025210 - 0x04025228\nconst Gfx stomp_smoke_seg4_dl_04025210[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, stomp_smoke_seg4_texture_04022948),\n    gsSPBranchList(stomp_smoke_seg4_dl_040251C8),\n};\n\n// 0x04025228 - 0x04025240\nconst Gfx stomp_smoke_seg4_dl_04025228[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, stomp_smoke_seg4_texture_04023148),\n    gsSPBranchList(stomp_smoke_seg4_dl_040251C8),\n};\n\n// 0x04025240 - 0x04025258\nconst Gfx stomp_smoke_seg4_dl_04025240[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, stomp_smoke_seg4_texture_04023948),\n    gsSPBranchList(stomp_smoke_seg4_dl_040251C8),\n};\n\n// 0x04025258 - 0x04025270\nconst Gfx stomp_smoke_seg4_dl_04025258[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, stomp_smoke_seg4_texture_04024148),\n    gsSPBranchList(stomp_smoke_seg4_dl_040251C8),\n};\n\n// 0x04025270 - 0x04025288\nconst Gfx stomp_smoke_seg4_dl_04025270[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, stomp_smoke_seg4_texture_04024948),\n    gsSPBranchList(stomp_smoke_seg4_dl_040251C8),\n};\n\n// 0x04025288 - 0x040252A0\nconst Gfx stomp_smoke_seg4_dl_04025288[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, stomp_smoke_seg4_texture_04022148),\n    gsSPBranchList(stomp_smoke_seg4_dl_040251E0),\n};\n\n// 0x040252A0 - 0x040252B8\nconst Gfx stomp_smoke_seg4_dl_040252A0[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, stomp_smoke_seg4_texture_04022948),\n    gsSPBranchList(stomp_smoke_seg4_dl_040251E0),\n};\n\n// 0x040252B8 - 0x040252D0\nconst Gfx stomp_smoke_seg4_dl_040252B8[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, stomp_smoke_seg4_texture_04023148),\n    gsSPBranchList(stomp_smoke_seg4_dl_040251E0),\n};\n\n// 0x040252D0 - 0x040252E8\nconst Gfx stomp_smoke_seg4_dl_040252D0[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, stomp_smoke_seg4_texture_04023948),\n    gsSPBranchList(stomp_smoke_seg4_dl_040251E0),\n};\n\n// 0x040252E8 - 0x04025300\nconst Gfx stomp_smoke_seg4_dl_040252E8[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, stomp_smoke_seg4_texture_04024148),\n    gsSPBranchList(stomp_smoke_seg4_dl_040251E0),\n};\n\n// 0x04025300 - 0x04025318\nconst Gfx stomp_smoke_seg4_dl_04025300[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, stomp_smoke_seg4_texture_04024948),\n    gsSPBranchList(stomp_smoke_seg4_dl_040251E0),\n};\n"
  },
  {
    "path": "actors/sushi/anims/anim_0500AE3C.inc.c",
    "content": "// 0x0500AA00\nstatic const s16 sushi_seg5_animvalue_0500AA00[] = {\n    0x0000, 0x0192, 0x0190, 0x018A, 0x0180, 0x0173, 0x0162, 0x014F,\n    0x0139, 0x0120, 0x0106, 0x00E9, 0x00CB, 0x00AB, 0x0089, 0x0067,\n    0x0044, 0x0021, 0xFFFE, 0xFFDB, 0xFFB8, 0xFF95, 0xFF73, 0xFF51,\n    0xFF31, 0xFF13, 0xFEF6, 0xFEDC, 0xFEC3, 0xFEAD, 0xFE9A, 0xFE89,\n    0xFE7C, 0xFE72, 0xFE6C, 0xFE6A, 0xFE6C, 0xFE72, 0xFE7A, 0xFE86,\n    0xFE95, 0xFEA6, 0xFEBA, 0xFED0, 0xFEE9, 0xFF03, 0xFF1F, 0xFF3C,\n    0xFF5A, 0xFF7A, 0xFF9A, 0xFFBB, 0xFFDD, 0xFFFE, 0x001F, 0x0041,\n    0x0062, 0x0082, 0x00A2, 0x00C0, 0x00DD, 0x00F9, 0x0113, 0x012C,\n    0x0142, 0x0156, 0x0167, 0x0176, 0x0182, 0x018A, 0x0190, 0x0054,\n    0xFFDE, 0xC001, 0x14C7, 0x1587, 0x1627, 0x16A5, 0x1701, 0x173A,\n    0x174F, 0x1740, 0x170B, 0x16B0, 0x162E, 0x1584, 0x14B1, 0x13B5,\n    0x128F, 0x113E, 0x0FB0, 0x0DDB, 0x0BC8, 0x097F, 0x0708, 0x046D,\n    0x01B6, 0xFEEE, 0xFC1A, 0xF944, 0xF676, 0xF3B7, 0xF111, 0xEE8D,\n    0xEC33, 0xEA0B, 0xE81F, 0xE677, 0xE51D, 0xE3FB, 0xE2F9, 0xE217,\n    0xE156, 0xE0B6, 0xE037, 0xDFDA, 0xDF9F, 0xDF88, 0xDF93, 0xDFC3,\n    0xE016, 0xE08F, 0xE12C, 0xE1EF, 0xE2D8, 0xE3E7, 0xE51D, 0xE69C,\n    0xE87F, 0xEAB8, 0xED3C, 0xEFFD, 0xF2EF, 0xF607, 0xF937, 0xFC74,\n    0xFFB0, 0x02DF, 0x05F6, 0x08E7, 0x0BA6, 0x0E28, 0x105E, 0x123E,\n    0x0E68, 0x0ECB, 0x0F1C, 0x0F5B, 0x0F87, 0x0F9F, 0x0FA3, 0x0F92,\n    0x0F6B, 0x0F2E, 0x0ED9, 0x0E6E, 0x0DEA, 0x0D4E, 0x0C98, 0x0BC8,\n    0x0AD4, 0x09B3, 0x086B, 0x0702, 0x057D, 0x03E3, 0x0238, 0x0082,\n    0xFEC8, 0xFD0D, 0xFB57, 0xF9AD, 0xF814, 0xF690, 0xF529, 0xF3E4,\n    0xF2C5, 0xF1D3, 0xF113, 0xF07B, 0xEFFE, 0xEF9A, 0xEF4F, 0xEF1D,\n    0xEF01, 0xEEFD, 0xEF0F, 0xEF37, 0xEF73, 0xEFC3, 0xF027, 0xF09D,\n    0xF125, 0xF1BF, 0xF269, 0xF323, 0xF3EC, 0xF4DD, 0xF609, 0xF768,\n    0xF8F2, 0xFA9F, 0xFC66, 0xFE40, 0x0024, 0x020B, 0x03ED, 0x05C1,\n    0x077F, 0x0920, 0x0A9A, 0x0BE7, 0x0CFD, 0x0DD6, 0x0BD0, 0x0BC0,\n    0x0B91, 0x0B44, 0x0ADD, 0x0A5C, 0x09C4, 0x0916, 0x0855, 0x0783,\n    0x06A1, 0x05B1, 0x04B6, 0x03B1, 0x02A4, 0x0192, 0x007B, 0xFF64,\n    0xFE4C, 0xFD35, 0xFC23, 0xFB16, 0xFA11, 0xF916, 0xF826, 0xF744,\n    0xF672, 0xF5B1, 0xF503, 0xF46B, 0xF3EA, 0xF383, 0xF336, 0xF307,\n    0xF2F7, 0xF305, 0xF330, 0xF374, 0xF3D1, 0xF445, 0xF4CE, 0xF56B,\n    0xF61A, 0xF6D9, 0xF7A7, 0xF882, 0xF968, 0xFA59, 0xFB51, 0xFC50,\n    0xFD54, 0xFE5B, 0xFF64, 0x006C, 0x0173, 0x0277, 0x0376, 0x046E,\n    0x055F, 0x0645, 0x0720, 0x07EE, 0x08AD, 0x095C, 0x09F9, 0x0A82,\n    0x0AF6, 0x0B53, 0x0B97, 0x0BC2, 0x3B39, 0x3A67, 0x399B, 0x38D8,\n    0x381E, 0x3770, 0x36D1, 0x3643, 0x35C7, 0x3560, 0x3510, 0x34D9,\n    0x34BE, 0x34C0, 0x34E2, 0x3525, 0x358B, 0x3611, 0x36B3, 0x376F,\n    0x3842, 0x3929, 0x3A20, 0x3B25, 0x3C35, 0x3D4C, 0x3E68, 0x3F86,\n    0x40A2, 0x41BA, 0x42CA, 0x43D0, 0x44C8, 0x45B0, 0x4684, 0x4757,\n    0x4839, 0x4928, 0x4A1D, 0x4B16, 0x4C0D, 0x4CFF, 0x4DE6, 0x4EBF,\n    0x4F85, 0x5034, 0x50C8, 0x513C, 0x518C, 0x51B4, 0x51AE, 0x5178,\n    0x510D, 0x506F, 0x4FA5, 0x4EB2, 0x4D9C, 0x4C68, 0x4B1C, 0x49BC,\n    0x484D, 0x46D4, 0x4558, 0x43DC, 0x4266, 0x40FA, 0x3F9F, 0x3E59,\n    0x3D2E, 0x3C21, 0x3B39, 0x3A67, 0x399B, 0x38D8, 0x381E, 0x3770,\n    0x36D1, 0x3643, 0x35C7, 0x3560, 0x3510, 0x34D9, 0x34BE, 0x34C0,\n    0x34E2, 0x3525, 0x358B, 0x3611, 0x36B3, 0x376F, 0x3842, 0x3929,\n    0x3A20, 0x3B25, 0x3C35, 0x3D4C, 0x3E68, 0x3F86, 0x40A2, 0x41BA,\n    0x42CA, 0x43D0, 0x44C8, 0x45B0, 0x4684, 0x4757, 0x4839, 0x4928,\n    0x4A1D, 0x4B16, 0x4C0D, 0x4CFF, 0x4DE6, 0x4EBF, 0x4F85, 0x5034,\n    0x50C8, 0x513C, 0x518C, 0x51B4, 0x51AE, 0x5178, 0x510D, 0x506F,\n    0x4FA5, 0x4EB2, 0x4D9C, 0x4C68, 0x4B1C, 0x49BC, 0x484D, 0x46D4,\n    0x4558, 0x43DC, 0x4266, 0x40FA, 0x3F9F, 0x3E59, 0x3D2E, 0x3C21,\n    0x3B39, 0x3A67, 0x399B, 0x38D8, 0x381E, 0x3770, 0x36D1, 0x3643,\n    0x35C7, 0x3560, 0x3510, 0x34D9, 0x34BE, 0x34C0, 0x34E2, 0x3525,\n    0x358B, 0x3611, 0x36B3, 0x376F, 0x3842, 0x3929, 0x3A20, 0x3B25,\n    0x3C35, 0x3D4C, 0x3E68, 0x3F86, 0x40A2, 0x41BA, 0x42CA, 0x43D0,\n    0x44C8, 0x45B0, 0x4684, 0x4757, 0x4839, 0x4928, 0x4A1D, 0x4B16,\n    0x4C0D, 0x4CFF, 0x4DE6, 0x4EBF, 0x4F85, 0x5034, 0x50C8, 0x513C,\n    0x518C, 0x51B4, 0x51AE, 0x5178, 0x510D, 0x506F, 0x4FA5, 0x4EB2,\n    0x4D9C, 0x4C68, 0x4B1C, 0x49BC, 0x484D, 0x46D4, 0x4558, 0x43DC,\n    0x4266, 0x40FA, 0x3F9F, 0x3E59, 0x3D2E, 0x3C21,\n};\n\n// 0x0500ADDC\nstatic const u16 sushi_seg5_animindex_0500ADDC[] = {\n    0x0046, 0x0001, 0x0001, 0x0047, 0x0001, 0x0048, 0x0001, 0x0049, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0046, 0x01A8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0046, 0x00D6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0046, 0x0090,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0046, 0x004A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0046, 0x0162,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0046, 0x011C,\n};\n\n// 0x0500AE3C\nstatic const struct Animation sushi_seg5_anim_0500AE3C = {\n    0,\n    0,\n    0,\n    0,\n    0x46,\n    ANIMINDEX_NUMPARTS(sushi_seg5_animindex_0500ADDC),\n    sushi_seg5_animvalue_0500AA00,\n    sushi_seg5_animindex_0500ADDC,\n    0,\n};\n"
  },
  {
    "path": "actors/sushi/anims/data.inc.c",
    "content": "#include \"anim_0500AE3C.inc.c\"\n"
  },
  {
    "path": "actors/sushi/anims/table.inc.c",
    "content": "// 0x0500AE54\nconst struct Animation *const sushi_seg5_anims_0500AE54[] = {\n    &sushi_seg5_anim_0500AE3C,\n};\n"
  },
  {
    "path": "actors/sushi/geo.inc.c",
    "content": "// 0x0C000068\nconst GeoLayout sushi_geo[] = {\n    GEO_CULLING_RADIUS(800),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, sushi_seg5_dl_0500A768),\n                GEO_OPEN_NODE(),\n                    GEO_ASM(0, geo_update_body_rot_from_parent),\n                GEO_CLOSE_NODE(),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 201, 0, 0, sushi_seg5_dl_05009DD0),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 415, 0, 0, sushi_seg5_dl_0500A008),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 486, 0, 0, sushi_seg5_dl_0500A160),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, sushi_seg5_dl_0500A990),\n                GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, sushi_seg5_dl_0500A8A8),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/sushi/model.inc.c",
    "content": "// Sushi (Shark)\n\n// Could be a duplicate binid of the previous actor, but i'm putting it here for\n// macro reasons so I don't have to clutter the macros.inc with a new macro for this\n// case.\nUNUSED static const u64 sushi_unused_1 = 1;\n\n// 0x05008ED0\nALIGNED8 static const Texture sushi_seg5_texture_05008ED0[] = {\n#include \"actors/sushi/sushi_snout.rgba16.inc.c\"\n};\n\n// 0x050096D0\nALIGNED8 static const Texture sushi_seg5_texture_050096D0[] = {\n#include \"actors/sushi/sushi_eye.rgba16.inc.c\"\n};\n\n// 0x05009AD0\nALIGNED8 static const Texture sushi_seg5_texture_05009AD0[] = {\n#include \"actors/sushi/sushi_tooth.rgba16.inc.c\"\n};\n\n// 0x05009B50\nstatic const Vtx sushi_seg5_vertex_05009B50[] = {\n    {{{     0,      4,   -257}, 0, {   528,    804}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   416,      3,   -203}, 0, {   694,    704}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   416,   -104,   -154}, 0, {   694,    616}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   416,    144,     67}, 0, {   694,    210}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   416,      3,    120}, 0, {   694,    114}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   416,    112,   -154}, 0, {   694,    616}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    197,   -187}, 0, {   528,    676}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      4,    161}, 0, {   528,     40}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    208,     90}, 0, {   528,    170}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -188,   -187}, 0, {   528,    676}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   416,   -136,     67}, 0, {   694,    210}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -199,     90}, 0, {   528,    170}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -82,    188,     76}, 0, {   494,    194}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -82,      4,    140}, 0, {   494,     78}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -82,   -178,     76}, 0, {   494,    194}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x05009C40\nstatic const Vtx sushi_seg5_vertex_05009C40[] = {\n    {{{     0,      4,   -257}, 0, {   528,    804}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -82,      4,   -237}, 0, {   494,    768}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -82,    178,   -172}, 0, {   494,    650}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -82,   -169,   -172}, 0, {   494,    650}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -188,   -187}, 0, {   528,    676}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    197,   -187}, 0, {   528,    676}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -82,    188,     76}, 0, {   494,    194}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -82,   -178,     76}, 0, {   494,    194}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x05009CC0 - 0x05009DD0\nconst Gfx sushi_seg5_dl_05009CC0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sushi_seg5_texture_05008ED0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(sushi_seg5_vertex_05009B50, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  5,  1,  0, 0x0),\n    gsSP2Triangles( 1,  5,  3, 0x0,  3,  5,  6, 0x0),\n    gsSP2Triangles( 5,  0,  6, 0x0,  7,  4,  3, 0x0),\n    gsSP2Triangles( 6,  8,  3, 0x0,  3,  8,  7, 0x0),\n    gsSP2Triangles( 9,  2, 10, 0x0,  2,  4, 10, 0x0),\n    gsSP2Triangles( 2,  9,  0, 0x0, 10,  4,  7, 0x0),\n    gsSP2Triangles(10, 11,  9, 0x0,  7, 11, 10, 0x0),\n    gsSP2Triangles(12, 13,  7, 0x0,  7, 13, 14, 0x0),\n    gsSP2Triangles( 7, 14, 11, 0x0,  8, 12,  7, 0x0),\n    gsSP2Triangles(11, 14,  9, 0x0,  6, 12,  8, 0x0),\n    gsSPVertex(sushi_seg5_vertex_05009C40, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  3,  0, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 5,  2,  6, 0x0,  7,  3,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05009DD0 - 0x05009E40\nconst Gfx sushi_seg5_dl_05009DD0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGB, G_CC_DECALRGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(sushi_seg5_dl_05009CC0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x05009E40\nstatic const Vtx sushi_seg5_vertex_05009E40[] = {\n    {{{     0,    112,   -154}, 0, {   694,    616}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -82,    122,     52}, 0, {   660,    238}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    144,     67}, 0, {   694,    210}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -104,   -154}, 0, {   694,    616}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -84,    -86,   -138}, 0, {   660,    586}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      3,   -203}, 0, {   694,    704}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -83,      4,   -181}, 0, {   660,    664}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -82,     95,   -138}, 0, {   660,    586}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   494,      0,    -79}, 0, {   890,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   495,     45,     66}, 0, {   890,    212}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   494,    -44,     66}, 0, {   890,    212}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      3,    120}, 0, {   694,    114}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -136,     67}, 0, {   694,    210}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -84,   -113,     52}, 0, {   660,    238}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -83,      4,     97}, 0, {   660,    156}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x05009F30 - 0x0500A008\nconst Gfx sushi_seg5_dl_05009F30[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sushi_seg5_texture_05008ED0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(sushi_seg5_vertex_05009E40, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  5,  7,  0, 0x0),\n    gsSP2Triangles( 8,  3,  5, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  5,  0, 0x0,  0,  7,  1, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8,  0,  9, 0x0),\n    gsSP2Triangles( 3,  8, 10, 0x0,  0,  2,  9, 0x0),\n    gsSP2Triangles( 9,  2, 11, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles( 3, 10, 12, 0x0, 11, 12, 10, 0x0),\n    gsSP2Triangles( 2,  1, 11, 0x0, 13,  4,  3, 0x0),\n    gsSP2Triangles(11, 13, 12, 0x0,  1, 14, 11, 0x0),\n    gsSP2Triangles(11, 14, 13, 0x0, 12, 13,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500A008 - 0x0500A078\nconst Gfx sushi_seg5_dl_0500A008[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGB, G_CC_DECALRGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(sushi_seg5_dl_05009F30),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500A078\nstatic const Vtx sushi_seg5_vertex_0500A078[] = {\n    {{{     6,    -34,     71}, 0, {   890,    204}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     5,      0,    -89}, 0, {   890,    498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   241,    -41,      7}, 0, {   984,    320}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     5,     35,     71}, 0, {   890,    204}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   239,     54,      7}, 0, {   984,    320}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   423,     11,   -362}, 0, {  1056,    994}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   462,     12,    649}, 0, {  1072,   -852}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500A0E8 - 0x0500A160\nconst Gfx sushi_seg5_dl_0500A0E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sushi_seg5_texture_05008ED0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(sushi_seg5_vertex_0500A078, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 1,  0,  3, 0x0,  1,  4,  5, 0x0),\n    gsSP2Triangles( 1,  5,  2, 0x0,  2,  6,  0, 0x0),\n    gsSP2Triangles( 6,  3,  0, 0x0,  6,  4,  3, 0x0),\n    gsSP2Triangles( 5,  4,  2, 0x0,  4,  6,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500A160 - 0x0500A1D0\nconst Gfx sushi_seg5_dl_0500A160[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGB, G_CC_DECALRGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(sushi_seg5_dl_0500A0E8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500A1D0\nstatic const Vtx sushi_seg5_vertex_0500A1D0[] = {\n    {{{   201,   -199,     90}, 0, {   528,    170}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   201,   -188,   -187}, 0, {   528,    676}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   201,      4,   -257}, 0, {   528,    804}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   226,   -558,   -378}, 0, {   538,   1024}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -206,   -223,   -158}, 0, {   364,    624}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    30,   -123,   -199}, 0, {   460,    698}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   100,   -175,   -123}, 0, {   486,    558}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -477,     -3,   -355}, 0, {   256,    982}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -221,     -3,   -300}, 0, {   358,    882}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -221,   -239,   -200}, 0, {   358,    700}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -221,    231,   -200}, 0, {   358,    700}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -221,   -239,    121}, 0, {   358,    112}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -645,   -214,    120}, 0, {   188,    114}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -645,   -166,   -144}, 0, {   188,    598}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -547,     -3,   -300}, 0, {   228,    882}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500A2C0\nstatic const Vtx sushi_seg5_vertex_0500A2C0[] = {\n    {{{  -221,    231,   -200}, 0, {   358,    700}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -645,    159,   -144}, 0, {   190,    598}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -645,    207,    120}, 0, {   190,    114}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -547,     -3,   -300}, 0, {   228,    882}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -863,     -3,   -194}, 0, {   102,    688}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1181,     -3,     26}, 0, {   -24,    286}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1174,     57,     95}, 0, {   -22,    160}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -645,   -166,   -144}, 0, {   188,    598}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1174,    -64,     95}, 0, {   -22,    160}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -645,   -214,    120}, 0, {   188,    114}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -191,     -4,    172}, 0, {   370,     18}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   266,      4,    552}, 0, {   554,   -674}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   181,     73,    120}, 0, {   520,    114}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   183,    -67,    120}, 0, {   520,    114}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -645,     -3,    185}, 0, {   190,     -4}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -221,   -239,    121}, 0, {   358,    112}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500A3C0\nstatic const Vtx sushi_seg5_vertex_0500A3C0[] = {\n    {{{  -645,     -3,    185}, 0, {   190,     -4}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -221,    231,    121}, 0, {   358,    112}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -645,    207,    120}, 0, {   190,    114}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -221,   -239,    121}, 0, {   358,    112}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -221,     -4,    184}, 0, {   358,     -4}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -221,    231,   -200}, 0, {   358,    700}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   201,    208,     90}, 0, {   528,    170}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   201,      4,   -257}, 0, {   528,    804}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   201,    197,   -187}, 0, {   528,    676}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   201,      4,    161}, 0, {   528,     40}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   106,    176,   -124}, 0, {   490,    562}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    32,    124,   -201}, 0, {   460,    700}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   212,    569,   -380}, 0, {   532,   1026}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -208,    212,   -160}, 0, {   364,    626}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500A4A0\nstatic const Vtx sushi_seg5_vertex_0500A4A0[] = {\n    {{{   212,    569,   -380}, 0, {   452,    396}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -208,    212,   -160}, 0, {   340,    640}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   106,    176,   -124}, 0, {   460,    652}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -221,   -239,    121}, 0, {   358,    112}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   201,   -199,     90}, 0, {   528,    170}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   201,      4,    161}, 0, {   528,     40}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   201,      4,   -257}, 0, {   528,    804}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   226,   -558,   -378}, 0, {   728,    330}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   100,   -175,   -123}, 0, {   524,    612}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -206,   -223,   -158}, 0, {   728,    548}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500A540\nstatic const Vtx sushi_seg5_vertex_0500A540[] = {\n    {{{  -221,    231,   -200}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0xff}}},\n    {{{  -477,     -3,   -355}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0xff}}},\n    {{{  -221,   -239,   -200}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0xff}}},\n    {{{  -547,     -3,   -300}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0500A580 - 0x0500A748\nconst Gfx sushi_seg5_dl_0500A580[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sushi_seg5_texture_05008ED0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(sushi_seg5_vertex_0500A1D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  8,  7, 0x0,  8,  2,  9, 0x0),\n    gsSP2Triangles( 2,  8, 10, 0x0,  1,  9,  2, 0x0),\n    gsSP2Triangles( 1,  0,  9, 0x0,  9, 11, 12, 0x0),\n    gsSP2Triangles(12, 13,  9, 0x0, 11,  9,  0, 0x0),\n    gsSP1Triangle(13, 14,  9, 0x0),\n    gsSPVertex(sushi_seg5_vertex_0500A2C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  4,  5,  1, 0x0),\n    gsSP2Triangles( 2,  1,  6, 0x0,  5,  6,  1, 0x0),\n    gsSP2Triangles( 7,  4,  3, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(10, 13, 11, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles( 9, 14,  8, 0x0,  8, 14,  6, 0x0),\n    gsSP2Triangles( 6, 14,  2, 0x0, 15, 14,  9, 0x0),\n    gsSPVertex(sushi_seg5_vertex_0500A3C0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 4,  1,  0, 0x0,  2,  1,  5, 0x0),\n    gsSP2Triangles( 6,  5,  1, 0x0,  7,  5,  8, 0x0),\n    gsSP2Triangles( 5,  6,  8, 0x0,  7,  8,  6, 0x0),\n    gsSP2Triangles( 6,  9,  7, 0x0,  9,  6,  1, 0x0),\n    gsSP2Triangles( 1,  4,  9, 0x0,  3,  9,  4, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSPVertex(sushi_seg5_vertex_0500A4A0, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  5,  4, 0x0,  7,  8,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500A748 - 0x0500A768\nconst Gfx sushi_seg5_dl_0500A748[] = {\n    gsSPVertex(sushi_seg5_vertex_0500A540, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500A768 - 0x0500A7E0\nconst Gfx sushi_seg5_dl_0500A768[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGB, G_CC_DECALRGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(sushi_seg5_dl_0500A580),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(sushi_seg5_dl_0500A748),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500A7E0\nstatic const Vtx sushi_seg5_vertex_0500A7E0[] = {\n    {{{  -645,    221,    120}, 0, {   -24,  -2137}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -221,    246,    121}, 0, {  1672,   -830}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -221,    246,   -200}, 0, {   678,    847}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -645,    173,   -144}, 0, {  -906,   -738}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -645,   -220,    120}, 0, {   -24,  -2137}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -645,   -172,   -144}, 0, {  -906,   -738}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -221,   -245,   -200}, 0, {   678,    847}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -221,   -245,    121}, 0, {  1672,   -830}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500A860 - 0x0500A8A8\nconst Gfx sushi_seg5_dl_0500A860[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sushi_seg5_texture_050096D0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(sushi_seg5_vertex_0500A7E0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  7,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500A8A8 - 0x0500A918\nconst Gfx sushi_seg5_dl_0500A8A8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 4, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (16 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(sushi_seg5_dl_0500A860),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500A918\nstatic const Vtx sushi_seg5_vertex_0500A918[] = {\n    {{{  -505,      0,   -304}, 0, {   -32,      2}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -221,    231,   -200}, 0, {  1592,    -14}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -477,     -3,   -355}, 0, {     0,    166}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -221,   -239,   -200}, 0, {  1592,    -14}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500A958 - 0x0500A990\nconst Gfx sushi_seg5_dl_0500A958[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sushi_seg5_texture_05009AD0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 8 * 8 - 1, CALC_DXT(8, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(sushi_seg5_vertex_0500A918, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500A990 - 0x0500AA00\nconst Gfx sushi_seg5_dl_0500A990[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 2, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 3, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 3, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (8 - 1) << G_TEXTURE_IMAGE_FRAC, (8 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(sushi_seg5_dl_0500A958),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/swoop/anims/anim_06006E88.inc.c",
    "content": "// 0x06006DB8\nstatic const s16 swoop_seg6_animvalue_06006DB8[] = {\n    0x0000, 0x0030, 0x0005, 0x3FFF, 0x1FFF, 0x151E, 0x00EA, 0xF609,\n    0xFC4F, 0x0A3F, 0x188E, 0x1FEC, 0x1FFF, 0x1611, 0x03A1, 0xF9B4,\n    0xFF6D, 0x0C26, 0x1935, 0x1FEE, 0x5FA3, 0x3FFF, 0xE05C, 0xA05D,\n    0xC001, 0xE05C, 0xF698, 0xF7A7, 0xF99D, 0xFAAC, 0xFA10, 0xF8B5,\n    0xF751, 0xF69A, 0xF698, 0xF7A7, 0xF99D, 0xFAAC, 0xFA10, 0xF8B5,\n    0xF751, 0xF69A, 0x4F2C, 0x4D96, 0x4AA5, 0x490F, 0x49F9, 0x4C01,\n    0x4E16, 0x4F29,\n};\n\n// 0x06006E1C\nstatic const u16 swoop_seg6_animindex_06006E1C[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0000, 0x0001, 0x0003, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x002A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x0022,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x001A,\n    0x0001, 0x0017, 0x0001, 0x0018, 0x0001, 0x0019,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x0004,\n    0x0001, 0x0014, 0x0001, 0x0015, 0x0001, 0x0016,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x000C,\n};\n\n// 0x06006E88\nstatic const struct Animation swoop_seg6_anim_06006E88 = {\n    0,\n    0,\n    0,\n    0,\n    0x08,\n    ANIMINDEX_NUMPARTS(swoop_seg6_animindex_06006E1C),\n    swoop_seg6_animvalue_06006DB8,\n    swoop_seg6_animindex_06006E1C,\n    0,\n};\n"
  },
  {
    "path": "actors/swoop/anims/anim_060070B8.inc.c",
    "content": "// 0x06006EA0\nstatic const s16 swoop_seg6_animvalue_06006EA0[] = {\n    0x0000, 0x0030, 0x0005, 0x3FFF, 0x13F6, 0x13CD, 0x1356, 0x1298,\n    0x119C, 0x1068, 0x0F04, 0x0D77, 0x0BC9, 0x0A01, 0x0826, 0x0640,\n    0x0457, 0x0271, 0x0096, 0xFECF, 0xFD21, 0xFB94, 0xFA30, 0xF8FC,\n    0xF800, 0xF742, 0xF6CB, 0xF6A2, 0xF6C5, 0xF72A, 0xF7CC, 0xF8A5,\n    0xF9AF, 0xFAE4, 0xFC3E, 0xFDB8, 0xFF4D, 0x00F4, 0x02AB, 0x046A,\n    0x062D, 0x07EC, 0x09A3, 0x0B4B, 0x0CDF, 0x0E5A, 0x0FB4, 0x10E9,\n    0x11F3, 0x12CC, 0x136E, 0x13D3, 0x13F6, 0x13F6, 0x7FFB, 0x7FFB,\n    0x7FFB, 0x7FFB, 0x7FFB, 0x7FFB, 0x7FFB, 0x7FFC, 0x7FFC, 0x7FFC,\n    0x7FFC, 0x7FFD, 0x7FFD, 0x7FFD, 0x7FFD, 0x7FFE, 0x7FFE, 0x7FFE,\n    0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x8001, 0x7FFE, 0x7FFE,\n    0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFD, 0x7FFD,\n    0x7FFD, 0x7FFD, 0x7FFD, 0x7FFC, 0x7FFC, 0x7FFC, 0x7FFC, 0x7FFC,\n    0x7FFB, 0x7FFB, 0x7FFB, 0x7FFB, 0x7FFB, 0x7FFB, 0x7FFB, 0x7FFB,\n    0x7FFD, 0x7FFD, 0x7FFD, 0x7FFD, 0x7FFD, 0x7FFD, 0x7FFD, 0x7FFD,\n    0x7FFD, 0x7FFC, 0x7FFC, 0x7FFC, 0x7FFC, 0x7FFC, 0x7FFC, 0x7FFC,\n    0x7FFC, 0x7FFC, 0x7FFC, 0x7FFC, 0x7FFC, 0x7FFC, 0x7FFC, 0x7FFC,\n    0x7FFC, 0x7FFC, 0x7FFC, 0x7FFC, 0x7FFC, 0x7FFC, 0x7FFC, 0x7FFC,\n    0x7FFC, 0x7FFC, 0x7FFC, 0x7FFC, 0x7FFC, 0x7FFC, 0x7FFC, 0x7FFD,\n    0x7FFD, 0x7FFD, 0x7FFD, 0x7FFD, 0x7FFD, 0x7FFD, 0x7FFD, 0x7FFD,\n    0x7FFD, 0x7FFD, 0x9328, 0x92FE, 0x9287, 0x91CA, 0x90CD, 0x8F99,\n    0x8E35, 0x8CA8, 0x8AFA, 0x8932, 0x8757, 0x8572, 0x8388, 0x81A2,\n    0x7FC5, 0x7DFD, 0x7C4E, 0x7AC2, 0x795D, 0x7829, 0x772D, 0x766F,\n    0x75F8, 0x75CF, 0x75F2, 0x7657, 0x76F9, 0x77D2, 0x78DC, 0x7A11,\n    0x7B6C, 0x7CE6, 0x7E7A, 0x8025, 0x81DC, 0x839C, 0x855E, 0x871D,\n    0x88D4, 0x8A7D, 0x8C11, 0x8D8B, 0x8EE6, 0x901B, 0x9124, 0x91FD,\n    0x929F, 0x9305, 0x9328, 0x9328, 0x5FA3, 0x3FFF, 0xE05C, 0xA05D,\n    0xC001, 0xE05C, 0xFF27, 0xFF27, 0x3F48, 0x0000,\n};\n\n// 0x0600704C\nstatic const u16 swoop_seg6_animindex_0600704C[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0000, 0x0001, 0x0003, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00D4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00D3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00D2,\n    0x0001, 0x00CF, 0x0001, 0x00D0, 0x0001, 0x00D1,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x0004,\n    0x0001, 0x00CC, 0x0001, 0x00CD, 0x0001, 0x00CE,\n    0x0032, 0x0036, 0x0032, 0x0068, 0x0032, 0x009A,\n};\n\n// 0x060070B8\nstatic const struct Animation swoop_seg6_anim_060070B8 = {\n    0,\n    0,\n    0,\n    0,\n    0x32,\n    ANIMINDEX_NUMPARTS(swoop_seg6_animindex_0600704C),\n    swoop_seg6_animvalue_06006EA0,\n    swoop_seg6_animindex_0600704C,\n    0,\n};\n"
  },
  {
    "path": "actors/swoop/anims/data.inc.c",
    "content": "#include \"anim_06006E88.inc.c\"\n#include \"anim_060070B8.inc.c\"\n"
  },
  {
    "path": "actors/swoop/anims/table.inc.c",
    "content": "// 0x060070D0\nconst struct Animation *const swoop_seg6_anims_060070D0[] = {\n    &swoop_seg6_anim_06006E88,\n    &swoop_seg6_anim_060070B8,\n};\n"
  },
  {
    "path": "actors/swoop/geo.inc.c",
    "content": "// 0x0D0000DC\nconst GeoLayout swoop_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 100),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_BILLBOARD(),\n                    GEO_OPEN_NODE(),\n                        GEO_DISPLAY_LIST(LAYER_ALPHA, swoop_seg6_dl_06006880),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 54, 0, 0, swoop_seg6_dl_06006758),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 54, 0, 0, swoop_seg6_dl_06006A88),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 57, -48, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, swoop_seg6_dl_06006BD0),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 57, -48, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, swoop_seg6_dl_06006D00),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/swoop/model.inc.c",
    "content": "// Swoop\n\n// Unreferenced light group\nUNUSED static const Lights1 swoop_lights_unused1 = gdSPDefLights1(\n    0x0a, 0x00, 0x25,\n    0x2a, 0x00, 0x95, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 swoop_lights_unused2 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x06004270\nALIGNED8 static const Texture swoop_seg6_texture_06004270[] = {\n#include \"actors/swoop/swoop_body.rgba16.inc.c\"\n};\n\n// 0x06004A70\nALIGNED8 static const Texture swoop_seg6_texture_06004A70[] = {\n#include \"actors/swoop/swoop_eye.rgba16.inc.c\"\n};\n\n// 0x06005270\nALIGNED8 static const Texture swoop_seg6_texture_06005270[] = {\n#include \"actors/swoop/swoop_nose.rgba16.inc.c\"\n};\n\n// 0x06005A70\nALIGNED8 static const Texture swoop_seg6_texture_06005A70[] = {\n#include \"actors/swoop/swoop_wing.rgba16.inc.c\"\n};\n\n// 0x06006270\nstatic const Lights1 swoop_seg6_lights_06006270 = gdSPDefLights1(\n    0x79, 0x79, 0x79,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x06006288\nstatic const Vtx swoop_seg6_vertex_06006288[] = {\n    {{{    80,     38,    -44}, 0, {    40,     86}, {0x3f, 0x30, 0x9e, 0xff}}},\n    {{{    65,     77,    -24}, 0, {  1108,    796}, {0x44, 0x59, 0xc6, 0xff}}},\n    {{{   112,     54,      0}, 0, {   768,   -454}, {0x69, 0x46, 0x00, 0xff}}},\n    {{{   -14,     57,     28}, 0, {   622,    254}, {0x96, 0x31, 0x30, 0xff}}},\n    {{{   -11,    -13,      0}, 0, {   536,    234}, {0x8d, 0xcc, 0x00, 0xff}}},\n    {{{    17,    -18,     89}, 0, {   804,     76}, {0xcc, 0xed, 0x72, 0xff}}},\n    {{{    29,     71,     45}, 0, {   668,     -2}, {0x05, 0x44, 0x6a, 0xff}}},\n    {{{   -14,     57,    -27}, 0, {   450,    246}, {0x96, 0x31, 0xd0, 0xff}}},\n    {{{    17,    -18,    -88}, 0, {   254,     54}, {0xe5, 0xdf, 0x89, 0xff}}},\n    {{{    29,     71,    -44}, 0, {   386,    -14}, {0x05, 0x44, 0x95, 0xff}}},\n    {{{    82,      4,    -52}, 0, {  -728,   -328}, {0x3f, 0xfe, 0x93, 0xff}}},\n    {{{    17,    -18,    -88}, 0, { -1332,    810}, {0xe5, 0xdf, 0x89, 0xff}}},\n    {{{    29,     71,    -44}, 0, {   878,   1484}, {0x05, 0x44, 0x95, 0xff}}},\n    {{{   114,      5,    -24}, 0, {  -496,  -1006}, {0x71, 0xe7, 0xce, 0xff}}},\n};\n\n// 0x06006368\nstatic const Vtx swoop_seg6_vertex_06006368[] = {\n    {{{    82,      4,     53}, 0, {   758,   1078}, {0x40, 0xf1, 0x6c, 0xff}}},\n    {{{    83,    -37,     25}, 0, {   628,   1076}, {0x54, 0xab, 0x27, 0xff}}},\n    {{{   114,      5,     25}, 0, {   626,    928}, {0x6f, 0xf4, 0x3c, 0xff}}},\n    {{{    29,     71,     45}, 0, {   386,   1344}, {0x05, 0x44, 0x6a, 0xff}}},\n    {{{    80,     38,     45}, 0, {   184,    100}, {0x40, 0x31, 0x62, 0xff}}},\n    {{{    65,     77,     25}, 0, {  1194,    792}, {0x44, 0x59, 0x3a, 0xff}}},\n    {{{   112,     54,      0}, 0, {  1590,   -282}, {0x69, 0x46, 0x00, 0xff}}},\n    {{{    17,    -18,     89}, 0, { -2258,    574}, {0xcc, 0xed, 0x72, 0xff}}},\n    {{{    82,      4,     53}, 0, {  -608,   -318}, {0x40, 0xf1, 0x6c, 0xff}}},\n    {{{   112,     54,      0}, 0, {   514,    940}, {0x69, 0x46, 0x00, 0xff}}},\n    {{{    80,     38,     45}, 0, {   722,   1090}, {0x40, 0x31, 0x62, 0xff}}},\n    {{{    34,    -55,     44}, 0, {   722,   1312}, {0x06, 0x8a, 0x2c, 0xff}}},\n    {{{    17,    -18,     89}, 0, {   928,   1394}, {0xcc, 0xed, 0x72, 0xff}}},\n    {{{    83,    -37,    -24}, 0, {   402,   1080}, {0x48, 0xa4, 0xd1, 0xff}}},\n    {{{    82,      4,    -52}, 0, {   272,   1086}, {0x3f, 0xfe, 0x93, 0xff}}},\n    {{{   114,      5,    -24}, 0, {   400,    932}, {0x71, 0xe7, 0xce, 0xff}}},\n};\n\n// 0x06006468\nstatic const Vtx swoop_seg6_vertex_06006468[] = {\n    {{{    34,    -55,     44}, 0, {   722,   1312}, {0x06, 0x8a, 0x2c, 0xff}}},\n    {{{    34,    -55,    -43}, 0, {   314,   1318}, {0xe6, 0x8a, 0xdc, 0xff}}},\n    {{{    83,    -37,    -24}, 0, {   402,   1080}, {0x48, 0xa4, 0xd1, 0xff}}},\n    {{{    83,    -37,     25}, 0, {   628,   1076}, {0x54, 0xab, 0x27, 0xff}}},\n    {{{   114,      5,    -24}, 0, {   400,    932}, {0x71, 0xe7, 0xce, 0xff}}},\n    {{{   114,      5,     25}, 0, {   626,    928}, {0x6f, 0xf4, 0x3c, 0xff}}},\n    {{{   112,     54,      0}, 0, {   514,    940}, {0x69, 0x46, 0x00, 0xff}}},\n    {{{   -11,    -13,      0}, 0, {   522,   1540}, {0x8d, 0xcc, 0x00, 0xff}}},\n    {{{    17,    -18,     89}, 0, {   928,   1394}, {0xcc, 0xed, 0x72, 0xff}}},\n    {{{    17,    -18,    -88}, 0, {   112,   1406}, {0xe5, 0xdf, 0x89, 0xff}}},\n    {{{    82,      4,    -52}, 0, {   272,   1086}, {0x3f, 0xfe, 0x93, 0xff}}},\n};\n\n// 0x06006518\nstatic const Vtx swoop_seg6_vertex_06006518[] = {\n    {{{   112,     54,      0}, 0, {   702,      6}, {0x69, 0x46, 0x00, 0xff}}},\n    {{{    65,     77,    -24}, 0, {   382,    266}, {0x44, 0x59, 0xc6, 0xff}}},\n    {{{    65,     77,     25}, 0, {   878,    288}, {0x44, 0x59, 0x3a, 0xff}}},\n    {{{    40,    113,      0}, 0, {   478,    480}, {0xf9, 0x7e, 0x00, 0xff}}},\n    {{{    65,     77,     25}, 0, {   726,    230}, {0x44, 0x59, 0x3a, 0xff}}},\n    {{{    65,     77,    -24}, 0, {   232,    230}, {0x44, 0x59, 0xc6, 0xff}}},\n    {{{    29,     71,     45}, 0, {   932,    586}, {0x05, 0x44, 0x6a, 0xff}}},\n    {{{    29,     71,    -44}, 0, {    26,    586}, {0x05, 0x44, 0x95, 0xff}}},\n    {{{   -14,     57,     28}, 0, {   756,   1022}, {0x96, 0x31, 0x30, 0xff}}},\n    {{{   -14,     57,    -27}, 0, {   202,   1022}, {0x96, 0x31, 0xd0, 0xff}}},\n};\n\n// 0x060065B8 - 0x060066F8\nconst Gfx swoop_seg6_dl_060065B8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, swoop_seg6_texture_06004A70),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&swoop_seg6_lights_06006270.l, 1),\n    gsSPLight(&swoop_seg6_lights_06006270.a, 2),\n    gsSPVertex(swoop_seg6_vertex_06006288, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  3,  7,  4, 0x0),\n    gsSP2Triangles( 8,  4,  7, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12,  0, 0x0),\n    gsSP2Triangles( 0,  2, 13, 0x0,  0, 13, 10, 0x0),\n    gsSP1Triangle( 1,  0, 12, 0x0),\n    gsSPVertex(swoop_seg6_vertex_06006368, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  3,  7,  8, 0x0),\n    gsSP2Triangles( 3,  8,  4, 0x0,  2,  9, 10, 0x0),\n    gsSP2Triangles( 2, 10,  0, 0x0, 11,  1,  0, 0x0),\n    gsSP2Triangles(11,  0, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(swoop_seg6_vertex_06006468, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  3, 0x0,  4,  3,  2, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  1,  0, 0x0),\n    gsSP2Triangles( 0,  8,  7, 0x0,  9,  1,  7, 0x0),\n    gsSP2Triangles( 2,  1,  9, 0x0,  2,  9, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x060066F8 - 0x06006758\nconst Gfx swoop_seg6_dl_060066F8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, swoop_seg6_texture_06005270),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(swoop_seg6_vertex_06006518, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0,  7,  3,  5, 0x0),\n    gsSP2Triangles( 6,  3,  8, 0x0,  3,  9,  8, 0x0),\n    gsSP1Triangle( 7,  9,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06006758 - 0x06006808\nconst Gfx swoop_seg6_dl_06006758[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(swoop_seg6_dl_060065B8),\n    gsSPDisplayList(swoop_seg6_dl_060066F8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x06006808\nstatic const Vtx swoop_seg6_vertex_06006808[] = {\n    {{{    15,     15,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -14,     15,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -14,    -14,      0}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    15,    -14,      0}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x06006848 - 0x06006880\nconst Gfx swoop_seg6_dl_06006848[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, swoop_seg6_texture_06004270),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(swoop_seg6_vertex_06006808, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06006880 - 0x06006938\nconst Gfx swoop_seg6_dl_06006880[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(swoop_seg6_dl_06006848),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x06006938\nstatic const Lights1 swoop_seg6_lights_06006938 = gdSPDefLights1(\n    0x79, 0x79, 0x79,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x06006950\nstatic const Vtx swoop_seg6_vertex_06006950[] = {\n    {{{   187,     48,    -55}, 0, {   426,    722}, {0xc6, 0x6b, 0xdf, 0xff}}},\n    {{{   194,     32,   -119}, 0, {   334,    706}, {0xdf, 0x7a, 0x05, 0xff}}},\n    {{{    80,     -3,    -32}, 0, {   458,    990}, {0xdf, 0x7a, 0x05, 0xff}}},\n    {{{   116,     34,   -130}, 0, {   318,    900}, {0xfd, 0x77, 0x2b, 0xff}}},\n    {{{    80,     -3,     33}, 0, {   552,    990}, {0xdf, 0x7a, 0xfb, 0xff}}},\n    {{{   194,     32,    120}, 0, {   676,    706}, {0xdf, 0x7a, 0xfb, 0xff}}},\n    {{{   187,     48,     56}, 0, {   584,    722}, {0xc6, 0x6b, 0x21, 0xff}}},\n    {{{   116,     34,    131}, 0, {   692,    900}, {0xfd, 0x77, 0xd5, 0xff}}},\n};\n\n// 0x060069D0\nstatic const Vtx swoop_seg6_vertex_060069D0[] = {\n    {{{    13,     79,    -15}, 0, {     0,      0}, {0xec, 0x7d, 0x00, 0xff}}},\n    {{{   -17,     74,     -8}, 0, {     0,      0}, {0xec, 0x7d, 0x00, 0xff}}},\n    {{{   -17,     74,      9}, 0, {     0,      0}, {0xec, 0x7d, 0x00, 0xff}}},\n    {{{    13,     79,     16}, 0, {     0,      0}, {0xec, 0x7d, 0x00, 0xff}}},\n};\n\n// 0x06006A10 - 0x06006A68\nconst Gfx swoop_seg6_dl_06006A10[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, swoop_seg6_texture_06005270),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&swoop_seg6_lights_06006938.l, 1),\n    gsSPLight(&swoop_seg6_lights_06006938.a, 2),\n    gsSPVertex(swoop_seg6_vertex_06006950, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06006A68 - 0x06006A88\nconst Gfx swoop_seg6_dl_06006A68[] = {\n    gsSPVertex(swoop_seg6_vertex_060069D0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06006A88 - 0x06006B58\nconst Gfx swoop_seg6_dl_06006A88[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(swoop_seg6_dl_06006A10),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_PASS2),\n    gsSPDisplayList(swoop_seg6_dl_06006A68),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x06006B58\nstatic const Vtx swoop_seg6_vertex_06006B58[] = {\n    {{{     0,      1,    133}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      1,   -133}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   265,      1,   -133}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   265,      1,    133}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x06006B98 - 0x06006BD0\nconst Gfx swoop_seg6_dl_06006B98[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, swoop_seg6_texture_06005A70),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(swoop_seg6_vertex_06006B58, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06006BD0 - 0x06006C88\nconst Gfx swoop_seg6_dl_06006BD0[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(swoop_seg6_dl_06006B98),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x06006C88\nstatic const Vtx swoop_seg6_vertex_06006C88[] = {\n    {{{   265,      1,   -132}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   265,      1,    134}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      1,    134}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      1,   -132}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x06006CC8 - 0x06006D00\nconst Gfx swoop_seg6_dl_06006CC8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, swoop_seg6_texture_06005A70),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(swoop_seg6_vertex_06006C88, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06006D00 - 0x06006DB8\nconst Gfx swoop_seg6_dl_06006D00[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(swoop_seg6_dl_06006CC8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/test_platform/collision.inc.c",
    "content": "// Test Platform (small tiny platform 1/4th the size of a box. Probably used in early modeling tests?)\n\n// 0x080262F8 - 0x0802637C\nconst Collision unknown_seg8_collision_080262F8[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(200, 0, -200),\n    COL_VERTEX(200, -100, -200),\n    COL_VERTEX(200, -100, 200),\n    COL_VERTEX(200, 0, 200),\n    COL_VERTEX(-200, -100, -200),\n    COL_VERTEX(-200, -100, 200),\n    COL_VERTEX(-200, 0, -200),\n    COL_VERTEX(-200, 0, 200),\n\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(2, 1, 0),\n    COL_TRI(3, 2, 0),\n    COL_TRI(1, 2, 4),\n    COL_TRI(2, 5, 4),\n    COL_TRI(0, 1, 4),\n    COL_TRI(6, 0, 4),\n    COL_TRI(4, 5, 6),\n    COL_TRI(5, 7, 6),\n    COL_TRI(3, 0, 6),\n    COL_TRI(7, 3, 6),\n    COL_TRI(2, 3, 5),\n    COL_TRI(3, 7, 5),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "actors/test_platform/geo.inc.c",
    "content": "// Empty geo script\nconst GeoLayout test_platform_geo[] = {\n    GEO_BRANCH_AND_LINK(NULL),\n};\n"
  },
  {
    "path": "actors/test_platform/model.inc.c",
    "content": "// Test Platform (small tiny platform 1/4th the size of a box. Probably used in early modeling tests?)\n\n// 0x08026008\nstatic const Lights1 unknown_seg8_lights_08026008 = gdSPDefLights1(\n    0x32, 0x32, 0x07,\n    0xc8, 0xc8, 0x1e, 0x28, 0x28, 0x28\n);\n\n// 0x08026020\nstatic const Vtx unknown_seg8_vertex_08026020[] = {\n    {{{   200,   -100,    200}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{   200,   -100,   -200}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{   200,      0,   -200}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{   200,      0,    200}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{   200,   -100,    200}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{   200,      0,   -200}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{   200,   -100,   -200}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{   200,   -100,    200}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{  -200,   -100,   -200}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{   200,   -100,    200}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{  -200,   -100,    200}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{  -200,   -100,   -200}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{   200,      0,   -200}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x00}}},\n    {{{   200,   -100,   -200}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x00}}},\n    {{{  -200,   -100,   -200}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x00}}},\n};\n\n// 0x08026110\nstatic const Vtx unknown_seg8_vertex_08026110[] = {\n    {{{  -200,      0,   -200}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x00}}},\n    {{{   200,      0,   -200}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x00}}},\n    {{{  -200,   -100,   -200}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x00}}},\n    {{{  -200,   -100,   -200}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{  -200,   -100,    200}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{  -200,      0,   -200}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{  -200,   -100,    200}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{  -200,      0,    200}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{  -200,      0,   -200}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{   200,      0,    200}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   200,      0,   -200}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{  -200,      0,   -200}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{  -200,      0,    200}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   200,      0,    200}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{  -200,      0,   -200}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n};\n\n// 0x08026200\nstatic const Vtx unknown_seg8_vertex_08026200[] = {\n    {{{   200,   -100,    200}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   200,      0,    200}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{  -200,   -100,    200}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   200,      0,    200}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{  -200,      0,    200}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{  -200,   -100,    200}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n};\n\n// 0x08026260 - 0x080262F8\nconst Gfx unknown_seg8_dl_08026260[] = {\n    gsSPSetLights1(unknown_seg8_lights_08026008),\n    gsSPVertex(unknown_seg8_vertex_08026020, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(unknown_seg8_vertex_08026110, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(unknown_seg8_vertex_08026200, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/thwomp/collision.inc.c",
    "content": "// Thwomp\n\n// 0x0500B7D0 - 0x0500B92C\nconst Collision thwomp_seg5_collision_0500B7D0[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x14),\n    COL_VERTEX(-156, 3, 73),\n    COL_VERTEX(98, 3, 157),\n    COL_VERTEX(-97, 3, 157),\n    COL_VERTEX(157, 3, 73),\n    COL_VERTEX(106, 252, 157),\n    COL_VERTEX(-105, 252, 157),\n    COL_VERTEX(157, 252, 79),\n    COL_VERTEX(0, 302, 102),\n    COL_VERTEX(93, 330, 0),\n    COL_VERTEX(-156, 252, 79),\n    COL_VERTEX(-92, 330, 0),\n    COL_VERTEX(-156, 3, -72),\n    COL_VERTEX(-97, 3, -156),\n    COL_VERTEX(98, 3, -156),\n    COL_VERTEX(-105, 252, -156),\n    COL_VERTEX(106, 252, -156),\n    COL_VERTEX(-156, 252, -78),\n    COL_VERTEX(0, 302, -101),\n    COL_VERTEX(157, 3, -72),\n    COL_VERTEX(157, 252, -78),\n\n    COL_TRI_INIT(SURFACE_NO_CAM_COLLISION, 36),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI(1, 4, 5),\n    COL_TRI(1, 5, 2),\n    COL_TRI(1, 3, 6),\n    COL_TRI(4, 1, 6),\n    COL_TRI(7, 4, 8),\n    COL_TRI(6, 8, 4),\n    COL_TRI(5, 4, 7),\n    COL_TRI(9, 5, 10),\n    COL_TRI(2, 5, 9),\n    COL_TRI(10, 5, 7),\n    COL_TRI(2, 9, 0),\n    COL_TRI(0, 11, 12),\n    COL_TRI(0, 12, 13),\n    COL_TRI(8, 10, 7),\n    COL_TRI(12, 14, 15),\n    COL_TRI(12, 15, 13),\n    COL_TRI(17, 14, 10),\n    COL_TRI(16, 10, 14),\n    COL_TRI(14, 12, 16),\n    COL_TRI(15, 14, 17),\n    COL_TRI(17, 8, 15),\n    COL_TRI(15, 8, 19),\n    COL_TRI(13, 15, 19),\n    COL_TRI(0, 13, 18),\n    COL_TRI(13, 19, 18),\n    COL_TRI(19, 8, 6),\n    COL_TRI(17, 10, 8),\n    COL_TRI(9, 10, 16),\n    COL_TRI(18, 19, 6),\n    COL_TRI(0, 9, 16),\n    COL_TRI(0, 18, 3),\n    COL_TRI(18, 6, 3),\n    COL_TRI(0, 16, 11),\n    COL_TRI(12, 11, 16),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n\n// 0x0500B92C - 0x0500BA88\nconst Collision thwomp_seg5_collision_0500B92C[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x14),\n    COL_VERTEX(-156, 3, 73),\n    COL_VERTEX(98, 3, 157),\n    COL_VERTEX(-97, 3, 157),\n    COL_VERTEX(157, 3, 73),\n    COL_VERTEX(106, 252, 157),\n    COL_VERTEX(-105, 252, 157),\n    COL_VERTEX(157, 252, 79),\n    COL_VERTEX(0, 302, 102),\n    COL_VERTEX(93, 330, 0),\n    COL_VERTEX(-156, 252, 79),\n    COL_VERTEX(-92, 330, 0),\n    COL_VERTEX(-156, 3, -72),\n    COL_VERTEX(-97, 3, -156),\n    COL_VERTEX(98, 3, -156),\n    COL_VERTEX(-105, 252, -156),\n    COL_VERTEX(106, 252, -156),\n    COL_VERTEX(-156, 252, -78),\n    COL_VERTEX(0, 302, -101),\n    COL_VERTEX(157, 3, -72),\n    COL_VERTEX(157, 252, -78),\n\n    COL_TRI_INIT(SURFACE_NO_CAM_COLLISION, 36),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI(1, 4, 5),\n    COL_TRI(1, 5, 2),\n    COL_TRI(1, 3, 6),\n    COL_TRI(4, 1, 6),\n    COL_TRI(7, 4, 8),\n    COL_TRI(6, 8, 4),\n    COL_TRI(5, 4, 7),\n    COL_TRI(9, 5, 10),\n    COL_TRI(2, 5, 9),\n    COL_TRI(10, 5, 7),\n    COL_TRI(2, 9, 0),\n    COL_TRI(0, 11, 12),\n    COL_TRI(0, 12, 13),\n    COL_TRI(8, 10, 7),\n    COL_TRI(12, 14, 15),\n    COL_TRI(12, 15, 13),\n    COL_TRI(17, 14, 10),\n    COL_TRI(16, 10, 14),\n    COL_TRI(14, 12, 16),\n    COL_TRI(15, 14, 17),\n    COL_TRI(17, 8, 15),\n    COL_TRI(15, 8, 19),\n    COL_TRI(13, 15, 19),\n    COL_TRI(0, 13, 18),\n    COL_TRI(13, 19, 18),\n    COL_TRI(19, 8, 6),\n    COL_TRI(17, 10, 8),\n    COL_TRI(9, 10, 16),\n    COL_TRI(18, 19, 6),\n    COL_TRI(0, 9, 16),\n    COL_TRI(0, 18, 3),\n    COL_TRI(18, 6, 3),\n    COL_TRI(0, 16, 11),\n    COL_TRI(12, 11, 16),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "actors/thwomp/geo.inc.c",
    "content": "// 0x0C000248\nconst GeoLayout thwomp_geo[] = {\n    GEO_SHADOW(SHADOW_SQUARE_SCALABLE, 0xB4, 300),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, thwomp_seg5_dl_0500B750),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/thwomp/model.inc.c",
    "content": "// Thwomp\n\n// 0x050098E8\nstatic const Lights1 thwomp_seg5_lights_050098E8 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x05009900\nALIGNED8 static const Texture thwomp_seg5_texture_05009900[] = {\n#include \"actors/thwomp/thwomp_face.rgba16.inc.c\"\n};\n\n// 0x0500A900\nALIGNED8 static const Texture thwomp_seg5_texture_0500A900[] = {\n#include \"actors/thwomp/thwomp_surface.rgba16.inc.c\"\n};\n\n// 0x0500B100\nstatic const Vtx thwomp_seg5_vertex_0500B100[] = {\n    {{{   -97,     52,   -141}, 0, {  3308,    418}, {0xce, 0xcb, 0x99, 0xff}}},\n    {{{  -141,     52,    -72}, 0, {  2910,    418}, {0x93, 0xca, 0xdf, 0xff}}},\n    {{{  -156,    252,    -78}, 0, {  2904,   1584}, {0x89, 0x1a, 0xde, 0xff}}},\n    {{{  -105,    252,   -156}, 0, {  3316,   1584}, {0xd0, 0x46, 0xa3, 0xff}}},\n    {{{   106,    252,   -156}, 0, {  4286,   1584}, {0x29, 0x39, 0x97, 0xff}}},\n    {{{    98,     52,   -141}, 0, {  4292,    418}, {0x45, 0xd0, 0xa2, 0xff}}},\n    {{{   157,    252,    -78}, 0, {  4698,   1584}, {0x73, 0x22, 0xd7, 0xff}}},\n    {{{   142,     52,    -72}, 0, {  4692,    418}, {0x70, 0xc9, 0xea, 0xff}}},\n    {{{     0,    302,   -101}, 0, {   460,    -56}, {0x00, 0x70, 0xc6, 0xff}}},\n    {{{    93,    330,      0}, 0, {  1000,    540}, {0x2c, 0x76, 0x00, 0xff}}},\n    {{{   106,    252,   -156}, 0, {  1080,   -374}, {0x29, 0x39, 0x97, 0xff}}},\n    {{{   -92,    330,      0}, 0, {   -80,    540}, {0xd4, 0x76, 0x00, 0xff}}},\n    {{{     0,    302,    102}, 0, {   460,   1134}, {0x00, 0x70, 0x3a, 0xff}}},\n    {{{   106,    252,    157}, 0, {  1080,   1452}, {0x30, 0x46, 0x5d, 0xff}}},\n    {{{  -105,    252,   -156}, 0, {  -160,   -374}, {0xd0, 0x46, 0xa3, 0xff}}},\n};\n\n// 0x0500B1F0\nstatic const Vtx thwomp_seg5_vertex_0500B1F0[] = {\n    {{{  -156,    252,     79}, 0, {  -452,   1000}, {0x8d, 0x22, 0x29, 0xff}}},\n    {{{  -105,    252,    157}, 0, {  -160,   1452}, {0xd7, 0x39, 0x69, 0xff}}},\n    {{{   -92,    330,      0}, 0, {   -80,    540}, {0xd4, 0x76, 0x00, 0xff}}},\n    {{{  -156,    252,    -78}, 0, {  -452,     78}, {0x89, 0x1a, 0xde, 0xff}}},\n    {{{  -105,    252,   -156}, 0, {  -160,   -374}, {0xd0, 0x46, 0xa3, 0xff}}},\n    {{{     0,    302,    102}, 0, {   460,   1134}, {0x00, 0x70, 0x3a, 0xff}}},\n    {{{   106,    252,    157}, 0, {  1080,   1452}, {0x30, 0x46, 0x5d, 0xff}}},\n    {{{   -97,     52,   -141}, 0, {  -188,   1444}, {0xce, 0xcb, 0x99, 0xff}}},\n    {{{    83,      0,    -82}, 0, {  1042,   1040}, {0x1e, 0x8c, 0xd7, 0xff}}},\n    {{{   -82,      0,    -82}, 0, {   -82,   1040}, {0xc9, 0x92, 0xe2, 0xff}}},\n    {{{    98,     52,   -141}, 0, {  1148,   1444}, {0x45, 0xd0, 0xa2, 0xff}}},\n    {{{    83,      0,     83}, 0, {  1042,    -84}, {0x37, 0x92, 0x1e, 0xff}}},\n    {{{   -82,      0,     83}, 0, {   -82,    -84}, {0xe2, 0x8c, 0x29, 0xff}}},\n    {{{   142,     52,    -72}, 0, {  1446,    976}, {0x70, 0xc9, 0xea, 0xff}}},\n    {{{    98,     52,    142}, 0, {  1148,   -488}, {0x32, 0xcb, 0x67, 0xff}}},\n    {{{   -97,     52,    142}, 0, {  -188,   -488}, {0xbb, 0xd0, 0x5e, 0xff}}},\n};\n\n// 0x0500B2F0\nstatic const Vtx thwomp_seg5_vertex_0500B2F0[] = {\n    {{{   -82,      0,    -82}, 0, {   -82,   1040}, {0xc9, 0x92, 0xe2, 0xff}}},\n    {{{   -82,      0,     83}, 0, {   -82,    -84}, {0xe2, 0x8c, 0x29, 0xff}}},\n    {{{  -141,     52,     73}, 0, {  -486,    -18}, {0x90, 0xc9, 0x16, 0xff}}},\n    {{{   -97,     52,    142}, 0, {  -188,   -488}, {0xbb, 0xd0, 0x5e, 0xff}}},\n    {{{   -97,     52,   -141}, 0, {  -188,   1444}, {0xce, 0xcb, 0x99, 0xff}}},\n    {{{  -141,     52,    -72}, 0, {  -486,    976}, {0x93, 0xca, 0xdf, 0xff}}},\n    {{{    83,      0,     83}, 0, {  1042,    -84}, {0x37, 0x92, 0x1e, 0xff}}},\n    {{{   142,     52,    -72}, 0, {  1446,    976}, {0x70, 0xc9, 0xea, 0xff}}},\n    {{{   142,     52,     73}, 0, {  1446,    -18}, {0x6d, 0xca, 0x21, 0xff}}},\n    {{{    98,     52,    142}, 0, {  1148,   -488}, {0x32, 0xcb, 0x67, 0xff}}},\n    {{{   142,     52,    -72}, 0, {  4692,    418}, {0x70, 0xc9, 0xea, 0xff}}},\n    {{{   157,    252,    -78}, 0, {  4698,   1584}, {0x73, 0x22, 0xd7, 0xff}}},\n    {{{   157,    252,     79}, 0, {  5458,   1584}, {0x77, 0x1a, 0x22, 0xff}}},\n    {{{   142,     52,     73}, 0, {  5464,    418}, {0x6d, 0xca, 0x21, 0xff}}},\n};\n\n// 0x0500B3D0\nstatic const Vtx thwomp_seg5_vertex_0500B3D0[] = {\n    {{{   106,    252,    157}, 0, {   760,   1584}, {0x30, 0x46, 0x5d, 0xff}}},\n    {{{    98,     52,    142}, 0, {   754,    418}, {0x32, 0xcb, 0x67, 0xff}}},\n    {{{   157,    252,     79}, 0, {   348,   1584}, {0x77, 0x1a, 0x22, 0xff}}},\n    {{{   -97,     52,    142}, 0, {  1738,    418}, {0xbb, 0xd0, 0x5e, 0xff}}},\n    {{{  -156,    252,     79}, 0, {  2142,   1584}, {0x8d, 0x22, 0x29, 0xff}}},\n    {{{  -141,     52,     73}, 0, {  2136,    418}, {0x90, 0xc9, 0x16, 0xff}}},\n    {{{  -156,    252,    -78}, 0, {  2904,   1584}, {0x89, 0x1a, 0xde, 0xff}}},\n    {{{  -141,     52,    -72}, 0, {  2910,    418}, {0x93, 0xca, 0xdf, 0xff}}},\n    {{{  -105,    252,    157}, 0, {  1730,   1584}, {0xd7, 0x39, 0x69, 0xff}}},\n    {{{   106,    252,   -156}, 0, {   -24,    628}, {0x29, 0x39, 0x97, 0xff}}},\n    {{{  -105,    252,   -156}, 0, {   984,    628}, {0xd0, 0x46, 0xa3, 0xff}}},\n    {{{     0,    302,   -101}, 0, {   480,    370}, {0x00, 0x70, 0xc6, 0xff}}},\n    {{{   157,    252,     79}, 0, {  1374,   1000}, {0x77, 0x1a, 0x22, 0xff}}},\n    {{{    93,    330,      0}, 0, {  1000,    540}, {0x2c, 0x76, 0x00, 0xff}}},\n    {{{   106,    252,    157}, 0, {  1080,   1452}, {0x30, 0x46, 0x5d, 0xff}}},\n    {{{   157,    252,    -78}, 0, {  1374,     78}, {0x73, 0x22, 0xd7, 0xff}}},\n};\n\n// 0x0500B4D0\nstatic const Vtx thwomp_seg5_vertex_0500B4D0[] = {\n    {{{    98,     52,    142}, 0, {   754,    418}, {0x32, 0xcb, 0x67, 0xff}}},\n    {{{   142,     52,     73}, 0, {   354,    418}, {0x6d, 0xca, 0x21, 0xff}}},\n    {{{   157,    252,     79}, 0, {   348,   1584}, {0x77, 0x1a, 0x22, 0xff}}},\n    {{{   106,    252,   -156}, 0, {  1414,    324}, {0x29, 0x39, 0x97, 0xff}}},\n    {{{    93,    330,      0}, 0, {   472,    -20}, {0x2c, 0x76, 0x00, 0xff}}},\n    {{{   157,    252,    -78}, 0, {   946,    494}, {0x73, 0x22, 0xd7, 0xff}}},\n};\n\n// 0x0500B530\nstatic const Vtx thwomp_seg5_vertex_0500B530[] = {\n    {{{    98,     52,    142}, 0, {   968,   1976}, {0x32, 0xcb, 0x67, 0xff}}},\n    {{{   106,    252,    157}, 0, {  1010,      0}, {0x30, 0x46, 0x5d, 0xff}}},\n    {{{  -105,    252,    157}, 0, {   -54,    -12}, {0xd7, 0x39, 0x69, 0xff}}},\n    {{{   -97,     52,    142}, 0, {   -16,   1964}, {0xbb, 0xd0, 0x5e, 0xff}}},\n};\n\n// 0x0500B570 - 0x0500B718\nconst Gfx thwomp_seg5_dl_0500B570[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, thwomp_seg5_texture_0500A900),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&thwomp_seg5_lights_050098E8.l, 1),\n    gsSPLight(&thwomp_seg5_lights_050098E8.a, 2),\n    gsSPVertex(thwomp_seg5_vertex_0500B100, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  0,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13,  9, 0x0,  9, 11, 12, 0x0),\n    gsSP1Triangle( 8, 14, 11, 0x0),\n    gsSPVertex(thwomp_seg5_vertex_0500B1F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 0,  2,  3, 0x0,  2,  1,  5, 0x0),\n    gsSP2Triangles( 1,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  8, 11, 12, 0x0),\n    gsSP2Triangles( 8, 12,  9, 0x0, 11,  8, 13, 0x0),\n    gsSP2Triangles(13,  8, 10, 0x0, 14, 12, 11, 0x0),\n    gsSP1Triangle(14, 15, 12, 0x0),\n    gsSPVertex(thwomp_seg5_vertex_0500B2F0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  0,  5, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(thwomp_seg5_vertex_0500B3D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 3,  8,  4, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 15, 13, 12, 0x0),\n    gsSPVertex(thwomp_seg5_vertex_0500B4D0, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500B718 - 0x0500B750\nconst Gfx thwomp_seg5_dl_0500B718[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, thwomp_seg5_texture_05009900),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(thwomp_seg5_vertex_0500B530, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500B750 - 0x0500B7D0\nconst Gfx thwomp_seg5_dl_0500B750[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(thwomp_seg5_dl_0500B570),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(thwomp_seg5_dl_0500B718),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/toad/anims/anim_06008F7C.inc.c",
    "content": "// 0x06008C00\nstatic const s16 toad_seg6_animvalue_06008C00[] = {\n    0x0000, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B,\n    0x003B, 0x003B, 0x0050, 0x005D, 0x0062, 0x0062, 0x0062, 0x0060,\n    0x0059, 0x004E, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B,\n    0x003B, 0x003B, 0x003B, 0xFFF8, 0x3FFF, 0xE004, 0xC001, 0xE001,\n    0xDFFD, 0x3FFF, 0x1FFF, 0x1FFF, 0xC001, 0x1FFF, 0xDFFD, 0x3FFF,\n    0x1FFF, 0x2003, 0xC001, 0x1FFF, 0x0000, 0xFFC0, 0xFF23, 0xFE60,\n    0xFDB1, 0xFD4B, 0xFD67, 0xFE3B, 0x0000, 0x0C50, 0x1809, 0x16B8,\n    0x11F6, 0x0BEF, 0x06D1, 0x0326, 0x0020, 0xFDAA, 0xFDC0, 0xFE02,\n    0xFE60, 0xFECE, 0xFF3C, 0xFF9D, 0xFFE3, 0x0000, 0x0000, 0xFFC6,\n    0xFF39, 0xFE8B, 0xFDED, 0xFD92, 0xFDAB, 0xFE6A, 0x0000, 0x0B09,\n    0x1597, 0x1492, 0x1084, 0x0B4A, 0x06C1, 0x0315, 0xFFEC, 0xFDDF,\n    0xFDF8, 0xFE36, 0xFE8C, 0xFEEF, 0xFF52, 0xFFA8, 0xFFE7, 0x0000,\n    0x34C7, 0x3494, 0x3404, 0x332C, 0x321D, 0x30E9, 0x2FA3, 0x2E5D,\n    0x2D29, 0x2C1A, 0x2B41, 0x2AB2, 0x2A7E, 0x2A9C, 0x2AF0, 0x2B73,\n    0x2C1F, 0x2CED, 0x2DD4, 0x2ECF, 0x2FD6, 0x30E2, 0x31ED, 0x32EE,\n    0x33DF, 0x34BA, 0xDEBC, 0xDE57, 0xDD40, 0xDB9B, 0xD98C, 0xD735,\n    0xD4BA, 0xD240, 0xCFE9, 0xCDDA, 0xCC35, 0xCB1E, 0xCAB9, 0xCAF3,\n    0xCB96, 0xCC96, 0xCDE5, 0xCF74, 0xD136, 0xD31E, 0xD51E, 0xD728,\n    0xD92E, 0xDB23, 0xDCF8, 0xDEA1, 0x4F3D, 0x4F66, 0x4FD6, 0x5081,\n    0x5156, 0x5248, 0x5349, 0x5449, 0x553B, 0x5610, 0x56BB, 0x572B,\n    0x5754, 0x573D, 0x56FB, 0x5693, 0x560C, 0x556B, 0x54B4, 0x53EF,\n    0x5320, 0x524D, 0x517C, 0x50B1, 0x4FF4, 0x4F48, 0xB8A3, 0xB8FB,\n    0xB9EE, 0xBB5E, 0xBD2C, 0xBF37, 0xC161, 0xC38C, 0xC597, 0xC765,\n    0xC8D5, 0xC9C8, 0xCA20, 0xC9EE, 0xC95F, 0xC87F, 0xC75B, 0xC5FE,\n    0xC474, 0xC2CA, 0xC10A, 0xBF42, 0xBD7D, 0xBBC8, 0xBA2D, 0xB8BA,\n    0x2A6A, 0x2ABC, 0x2BA0, 0x2CF7, 0x2EA6, 0x308F, 0x3295, 0x349C,\n    0x3685, 0x3834, 0x398B, 0x3A6F, 0x3AC1, 0x3A92, 0x3A0D, 0x393C,\n    0x382B, 0x36E4, 0x3575, 0x33E6, 0x3244, 0x309A, 0x2EF3, 0x2D5A,\n    0x2BDA, 0x2A7F, 0x3FF3, 0x4041, 0x4119, 0x425F, 0x43F8, 0x45C8,\n    0x47B4, 0x49A0, 0x4B70, 0x4D09, 0x4E4F, 0x4F27, 0x4F75, 0x4F49,\n    0x4ECA, 0x4E03, 0x4D00, 0x4BCB, 0x4A6E, 0x48F3, 0x4767, 0x45D2,\n    0x4441, 0x42BD, 0x4150, 0x4007, 0xEAAB, 0xC001, 0x1555, 0xC001,\n    0xBFB5, 0xBFB5, 0xBFB5, 0xBFB5, 0xDFDE, 0xC001, 0xDFDB, 0xDFDE,\n    0xC001, 0xDFDB, 0x0000, 0x0014, 0x0049, 0x0093, 0x00E6, 0x0137,\n    0x0179, 0x01A0, 0x01A1, 0x00FA, 0xFFCE, 0xFF05, 0xFEC5, 0xFEA1,\n    0xFE9F, 0xFEC8, 0xFF23, 0x003D, 0x01D0, 0x02AC, 0x028C, 0x0215,\n    0x016F, 0x00C3, 0x003B, 0x0000, 0x1555, 0x404B, 0x4052, 0x4062,\n    0x4076, 0x4088, 0x4092, 0x4090, 0x407A, 0x404B, 0x3FAE, 0x3EA7,\n    0x3DBC, 0x3D71, 0x3E04, 0x3F1E, 0x4067, 0x4184, 0x421D, 0x4234,\n    0x4215, 0x41CE, 0x4170, 0x410A, 0x40AD, 0x4068, 0x404B, 0x0000,\n};\n\n// 0x06008E80\nstatic const u16 toad_seg6_animindex_06008E80[] = {\n    0x0001, 0x0000, 0x001A, 0x0001, 0x0001, 0x001B, 0x0001, 0x0000, 0x0001, 0x001C, 0x0001, 0x0000,\n    0x0001, 0x0124, 0x0001, 0x0000, 0x001A, 0x0125,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001A, 0x010A,\n    0x0001, 0x001D, 0x0001, 0x001E, 0x0001, 0x001F,\n    0x0001, 0x0107, 0x0001, 0x0108, 0x0001, 0x0109,\n    0x0001, 0x0104, 0x0001, 0x0105, 0x0001, 0x0106,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0103,\n    0x0001, 0x00FC, 0x0001, 0x0000, 0x0001, 0x00FD,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001A, 0x002C,\n    0x0001, 0x0020, 0x0001, 0x0021, 0x0001, 0x0022,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0102,\n    0x0001, 0x00FE, 0x0001, 0x0000, 0x0001, 0x00FF,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001A, 0x0046,\n    0x0001, 0x0023, 0x0001, 0x0024, 0x0001, 0x0025,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0101,\n    0x001A, 0x0060, 0x001A, 0x007A, 0x001A, 0x0094,\n    0x0001, 0x0026, 0x0001, 0x0027, 0x0001, 0x0028,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0100,\n    0x001A, 0x00AE, 0x001A, 0x00C8, 0x001A, 0x00E2,\n    0x0001, 0x0029, 0x0001, 0x002A, 0x0001, 0x002B,\n};\n\n// 0x06008F7C\nstatic const struct Animation toad_seg6_anim_06008F7C = {\n    0,\n    0,\n    10,\n    0,\n    0x1A,\n    ANIMINDEX_NUMPARTS(toad_seg6_animindex_06008E80),\n    toad_seg6_animvalue_06008C00,\n    toad_seg6_animindex_06008E80,\n    0,\n};\n"
  },
  {
    "path": "actors/toad/anims/anim_06009310.inc.c",
    "content": "// 0x06008F94\nstatic const s16 toad_seg6_animvalue_06008F94[] = {\n    0x0000, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B,\n    0x003B, 0x003B, 0x0050, 0x005D, 0x0062, 0x0062, 0x0062, 0x0060,\n    0x0059, 0x004E, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B,\n    0x003B, 0x003B, 0x003B, 0xFFF8, 0x3FFF, 0xE004, 0xC001, 0xE001,\n    0xDFFD, 0x3FFF, 0x1FFF, 0x1FFF, 0xC001, 0x1FFF, 0xDFFD, 0x3FFF,\n    0x1FFF, 0x2003, 0xC001, 0x1FFF, 0x0000, 0xFFC0, 0xFF23, 0xFE60,\n    0xFDB1, 0xFD4B, 0xFD67, 0xFE3B, 0x0000, 0x0C50, 0x1809, 0x16B8,\n    0x11F6, 0x0BEF, 0x06D1, 0x0326, 0x0020, 0xFDAA, 0xFDC0, 0xFE02,\n    0xFE60, 0xFECE, 0xFF3C, 0xFF9D, 0xFFE3, 0x0000, 0x0000, 0xFFC6,\n    0xFF39, 0xFE8B, 0xFDED, 0xFD92, 0xFDAB, 0xFE6A, 0x0000, 0x0B09,\n    0x1597, 0x1492, 0x1084, 0x0B4A, 0x06C1, 0x0315, 0xFFEC, 0xFDDF,\n    0xFDF8, 0xFE36, 0xFE8C, 0xFEEF, 0xFF52, 0xFFA8, 0xFFE7, 0x0000,\n    0x34C7, 0x3494, 0x3404, 0x332C, 0x321D, 0x30E9, 0x2FA3, 0x2E5D,\n    0x2D29, 0x2C1A, 0x2B41, 0x2AB2, 0x2A7E, 0x2A9C, 0x2AF0, 0x2B74,\n    0x2C20, 0x2CEE, 0x2DD6, 0x2ED1, 0x2FD8, 0x30E4, 0x31EE, 0x32EF,\n    0x33E0, 0x34BA, 0xE6BE, 0xE659, 0xE543, 0xE39E, 0xE18E, 0xDF37,\n    0xDCBD, 0xDA43, 0xD7EC, 0xD5DC, 0xD437, 0xD321, 0xD2BC, 0xD2F6,\n    0xD39A, 0xD49A, 0xD5E9, 0xD779, 0xD93C, 0xDB24, 0xDD24, 0xDF2E,\n    0xE134, 0xE328, 0xE4FD, 0xE6A4, 0x4F3D, 0x4F66, 0x4FD6, 0x5081,\n    0x5156, 0x5248, 0x5349, 0x5449, 0x553B, 0x5610, 0x56BB, 0x572B,\n    0x5754, 0x573D, 0x56FA, 0x5693, 0x560B, 0x556A, 0x54B3, 0x53EE,\n    0x531F, 0x524C, 0x517A, 0x50B0, 0x4FF3, 0x4F48, 0x85F8, 0x8650,\n    0x8744, 0x88B4, 0x8A81, 0x8C8C, 0x8EB7, 0x90E1, 0x92ED, 0x94BA,\n    0x962A, 0x971D, 0x9775, 0x9743, 0x96B4, 0x95D4, 0x94AF, 0x9351,\n    0x91C7, 0x901C, 0x8E5C, 0x8C94, 0x8AD0, 0x891B, 0x8781, 0x860F,\n    0x6736, 0x6762, 0x67D9, 0x688D, 0x696F, 0x6A6F, 0x6B7E, 0x6C8C,\n    0x6D89, 0x6E68, 0x6F18, 0x6F89, 0x6FAD, 0x6F91, 0x6F49, 0x6EDB,\n    0x6E4C, 0x6DA3, 0x6CE4, 0x6C16, 0x6B3F, 0x6A63, 0x698A, 0x68B8,\n    0x67F3, 0x6741, 0x2D33, 0x2D82, 0x2E5A, 0x2FA0, 0x3139, 0x3309,\n    0x34F5, 0x36E0, 0x38B1, 0x3A4A, 0x3B90, 0x3C68, 0x3CB6, 0x3C89,\n    0x3C0A, 0x3B44, 0x3A40, 0x390A, 0x37AC, 0x3631, 0x34A5, 0x3310,\n    0x317F, 0x2FFB, 0x2E90, 0x2D48, 0xEAAB, 0xC001, 0x1555, 0xC001,\n    0xBFB5, 0xBFB5, 0xBFB5, 0xBFB5, 0xDFDE, 0xC001, 0xDFDB, 0xDFDE,\n    0xC001, 0xDFDB, 0x0000, 0x0014, 0x0049, 0x0093, 0x00E6, 0x0137,\n    0x0179, 0x01A0, 0x01A1, 0x00FA, 0xFFCE, 0xFF05, 0xFEC5, 0xFEA1,\n    0xFE9F, 0xFEC8, 0xFF23, 0x003D, 0x01D0, 0x02AC, 0x028C, 0x0215,\n    0x016F, 0x00C3, 0x003B, 0x0000, 0xEAAB, 0x404B, 0x4052, 0x4062,\n    0x4076, 0x4088, 0x4092, 0x4090, 0x407A, 0x404B, 0x3FAE, 0x3EA7,\n    0x3DBC, 0x3D71, 0x3E04, 0x3F1E, 0x4067, 0x4184, 0x421D, 0x4234,\n    0x4215, 0x41CE, 0x4170, 0x410A, 0x40AD, 0x4068, 0x404B, 0x0000,\n};\n\n// 0x06009214\nstatic const u16 toad_seg6_animindex_06009214[] = {\n    0x0001, 0x0000, 0x001A, 0x0001, 0x0001, 0x001B, 0x0001, 0x0000, 0x0001, 0x001C, 0x0001, 0x0000,\n    0x0001, 0x0124, 0x0001, 0x0000, 0x001A, 0x0125,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001A, 0x010A,\n    0x0001, 0x001D, 0x0001, 0x001E, 0x0001, 0x001F,\n    0x0001, 0x0107, 0x0001, 0x0108, 0x0001, 0x0109,\n    0x0001, 0x0104, 0x0001, 0x0105, 0x0001, 0x0106,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0103,\n    0x0001, 0x00FC, 0x0001, 0x0000, 0x0001, 0x00FD,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001A, 0x002C,\n    0x0001, 0x0020, 0x0001, 0x0021, 0x0001, 0x0022,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0102,\n    0x0001, 0x00FE, 0x0001, 0x0000, 0x0001, 0x00FF,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001A, 0x0046,\n    0x0001, 0x0023, 0x0001, 0x0024, 0x0001, 0x0025,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0101,\n    0x001A, 0x0060, 0x001A, 0x007A, 0x001A, 0x0094,\n    0x0001, 0x0026, 0x0001, 0x0027, 0x0001, 0x0028,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0100,\n    0x001A, 0x00AE, 0x001A, 0x00C8, 0x001A, 0x00E2,\n    0x0001, 0x0029, 0x0001, 0x002A, 0x0001, 0x002B,\n};\n\n// 0x06009310\nstatic const struct Animation toad_seg6_anim_06009310 = {\n    0,\n    0,\n    0,\n    0,\n    0x1A,\n    ANIMINDEX_NUMPARTS(toad_seg6_animindex_06009214),\n    toad_seg6_animvalue_06008F94,\n    toad_seg6_animindex_06009214,\n    0,\n};\n"
  },
  {
    "path": "actors/toad/anims/anim_060099F0.inc.c",
    "content": "// 0x06009328\nstatic const s16 toad_seg6_animvalue_06009328[] = {\n    0x0000, 0x003B, 0xFFF8, 0x3FFF, 0xE004, 0xC001, 0xE001, 0xDFFD,\n    0x3FFF, 0x1FFF, 0x1FFF, 0xC001, 0x1FFF, 0xDFFD, 0x3FFF, 0x1FFF,\n    0x2003, 0xC001, 0x1FFF, 0x0000, 0xFFFF, 0xFFFC, 0xFFF7, 0xFFF0,\n    0xFFE8, 0xFFDE, 0xFFD3, 0xFFC6, 0xFFB9, 0xFFAB, 0xFF9C, 0xFF8C,\n    0xFF7C, 0xFF6C, 0xFF5C, 0xFF4C, 0xFF3C, 0xFF2C, 0xFF1E, 0xFF0F,\n    0xFF02, 0xFEF5, 0xFEEA, 0xFEE0, 0xFED8, 0xFED1, 0xFECC, 0xFEC9,\n    0xFEC8, 0xFEC9, 0xFECC, 0xFED0, 0xFED7, 0xFEDE, 0xFEE8, 0xFEF2,\n    0xFEFE, 0xFF0A, 0xFF18, 0xFF26, 0xFF35, 0xFF44, 0xFF53, 0xFF62,\n    0xFF72, 0xFF81, 0xFF91, 0xFF9F, 0xFFAE, 0xFFBB, 0xFFC8, 0xFFD4,\n    0xFFDE, 0xFFE8, 0xFFF0, 0xFFF7, 0xFFFC, 0xFFFF, 0x0000, 0xFFFF,\n    0xFFFC, 0xFFF7, 0xFFF0, 0xFFE8, 0xFFDE, 0xFFD3, 0xFFC6, 0xFFB9,\n    0xFFAB, 0xFF9C, 0xFF8C, 0xFF7C, 0xFF6C, 0xFF5C, 0xFF4C, 0xFF3C,\n    0xFF2C, 0xFF1E, 0xFF0F, 0xFF02, 0xFEF5, 0xFEEA, 0xFEE0, 0xFED8,\n    0xFED1, 0xFECC, 0xFEC9, 0xFEC8, 0xFEC9, 0xFECC, 0xFED0, 0xFED7,\n    0xFEDE, 0xFEE8, 0xFEF2, 0xFEFE, 0xFF0A, 0xFF18, 0xFF26, 0xFF35,\n    0xFF44, 0xFF53, 0xFF62, 0xFF72, 0xFF81, 0xFF91, 0xFF9F, 0xFFAE,\n    0xFFBB, 0xFFC8, 0xFFD4, 0xFFDE, 0xFFE8, 0xFFF0, 0xFFF7, 0xFFFC,\n    0xFFFF, 0xFF7B, 0xFF7E, 0xFF87, 0xFF95, 0xFFA9, 0xFFC1, 0xFFDE,\n    0xFFFE, 0x0021, 0x0047, 0x0071, 0x009C, 0x00CA, 0x00F8, 0x0128,\n    0x0159, 0x0189, 0x01B9, 0x01E9, 0x0217, 0x0245, 0x0270, 0x0299,\n    0x02BF, 0x02E2, 0x0301, 0x031D, 0x0334, 0x0347, 0x0354, 0x035C,\n    0x0357, 0x0340, 0x031A, 0x02E7, 0x02AA, 0x0265, 0x021A, 0x01CD,\n    0x017F, 0x0134, 0x00EE, 0x00AF, 0x0079, 0x0050, 0x0030, 0x0013,\n    0xFFFA, 0xFFE3, 0xFFCF, 0xFFBD, 0xFFAE, 0xFFA1, 0xFF96, 0xFF8D,\n    0xFF87, 0xFF81, 0xFF7E, 0xFF7C, 0xF087, 0xF086, 0xF082, 0xF07D,\n    0xF075, 0xF06C, 0xF061, 0xF054, 0xF046, 0xF036, 0xF026, 0xF014,\n    0xF002, 0xEFEF, 0xEFDB, 0xEFC7, 0xEFB3, 0xEF9F, 0xEF8A, 0xEF76,\n    0xEF62, 0xEF4E, 0xEF3C, 0xEF29, 0xEF18, 0xEF08, 0xEEF8, 0xEEEA,\n    0xEEDE, 0xEED3, 0xEECA, 0xEEC3, 0xEEBF, 0xEEBD, 0xEEBD, 0xEEC0,\n    0xEEC4, 0xEECB, 0xEED3, 0xEEDC, 0xEEE7, 0xEEF3, 0xEF00, 0xEF0E,\n    0xEF1D, 0xEF2F, 0xEF45, 0xEF5F, 0xEF7C, 0xEF9B, 0xEFBB, 0xEFDC,\n    0xEFFC, 0xF01A, 0xF037, 0xF050, 0xF066, 0xF077, 0xF082, 0xC150,\n    0xC149, 0xC133, 0xC111, 0xC0E2, 0xC0A8, 0xC064, 0xC017, 0xBFC2,\n    0xBF65, 0xBF02, 0xBE9A, 0xBE2E, 0xBDBE, 0xBD4B, 0xBCD7, 0xBC63,\n    0xBBEF, 0xBB7D, 0xBB0D, 0xBAA0, 0xBA38, 0xB9D5, 0xB978, 0xB923,\n    0xB8D6, 0xB892, 0xB859, 0xB82A, 0xB808, 0xB7F2, 0xB7FA, 0xB82B,\n    0xB87F, 0xB8F0, 0xB979, 0xBA15, 0xBABD, 0xBB6C, 0xBC1C, 0xBCC7,\n    0xBD68, 0xBDFA, 0xBE76, 0xBED7, 0xBF26, 0xBF70, 0xBFB5, 0xBFF5,\n    0xC02F, 0xC064, 0xC094, 0xC0BF, 0xC0E4, 0xC104, 0xC11E, 0xC133,\n    0xC142, 0xC14C, 0x0D31, 0x0D2F, 0x0D28, 0x0D1C, 0x0D0D, 0x0CF9,\n    0x0CE3, 0x0CC9, 0x0CAD, 0x0C8E, 0x0C6D, 0x0C4A, 0x0C26, 0x0C01,\n    0x0BDC, 0x0BB5, 0x0B8F, 0x0B69, 0x0B44, 0x0B1F, 0x0AFC, 0x0ADA,\n    0x0ABA, 0x0A9C, 0x0A81, 0x0A69, 0x0A54, 0x0A43, 0x0A35, 0x0A2C,\n    0x0A27, 0x0A2D, 0x0A42, 0x0A65, 0x0A92, 0x0AC8, 0x0B04, 0x0B45,\n    0x0B87, 0x0BCA, 0x0C0A, 0x0C45, 0x0C7A, 0x0CA6, 0x0CC7, 0x0CDF,\n    0x0CF4, 0x0D05, 0x0D13, 0x0D1E, 0x0D26, 0x0D2C, 0x0D30, 0x0D32,\n    0x0D33, 0x0D34, 0x0D33, 0x0D32, 0x0D32, 0x0C00, 0x0C03, 0x0C0C,\n    0x0C1B, 0x0C2F, 0x0C48, 0x0C66, 0x0C87, 0x0CAD, 0x0CD6, 0x0D02,\n    0x0D31, 0x0D62, 0x0D95, 0x0DCA, 0x0E00, 0x0E37, 0x0E6E, 0x0EA6,\n    0x0EDD, 0x0F14, 0x0F49, 0x0F7E, 0x0FB1, 0x0FE1, 0x100F, 0x103B,\n    0x1063, 0x1088, 0x10A9, 0x10C5, 0x10DD, 0x10F2, 0x1102, 0x110E,\n    0x1116, 0x111A, 0x1118, 0x1112, 0x1107, 0x10F6, 0x10E1, 0x10C6,\n    0x10A5, 0x107E, 0x104C, 0x1009, 0x0FB9, 0x0F5F, 0x0EFD, 0x0E97,\n    0x0E2E, 0x0DC7, 0x0D64, 0x0D07, 0x0CB4, 0x0C6D, 0x0C36, 0x0C11,\n    0xBA11, 0xBA0B, 0xB9F8, 0xB9D9, 0xB9AF, 0xB97C, 0xB93F, 0xB8FB,\n    0xB8AF, 0xB85C, 0xB805, 0xB7A9, 0xB749, 0xB6E6, 0xB682, 0xB61C,\n    0xB5B7, 0xB552, 0xB4EF, 0xB48E, 0xB431, 0xB3D8, 0xB385, 0xB337,\n    0xB2F1, 0xB2B2, 0xB27C, 0xB250, 0xB22F, 0xB219, 0xB20F, 0xB224,\n    0xB264, 0xB2C8, 0xB34B, 0xB3E7, 0xB494, 0xB54C, 0xB60A, 0xB6C7,\n    0xB77C, 0xB824, 0xB8B7, 0xB930, 0xB988, 0xB9C7, 0xB9F8, 0xBA1D,\n    0xBA37, 0xBA48, 0xBA51, 0xBA53, 0xBA4F, 0xBA48, 0xBA3E, 0xBA32,\n    0xBA27, 0xBA1D, 0xBA15, 0xEAAB, 0xC001, 0x1555, 0xC001, 0xBFB5,\n    0xBFB5, 0xBFB5, 0xBFB5, 0xDFDE, 0xC001, 0xDFDB, 0xDFDE, 0xC001,\n    0xDFDB, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0002,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0002, 0x0002, 0x0002, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0002, 0x0008, 0x0011,\n    0x001D, 0x002C, 0x003C, 0x004E, 0x0060, 0x0072, 0x0084, 0x0095,\n    0x00A4, 0x00B2, 0x00BD, 0x00C5, 0x00C9, 0x00C9, 0x00C5, 0x00BE,\n    0x00B5, 0x00A9, 0x009C, 0x008D, 0x007D, 0x006B, 0x0058, 0x0045,\n    0x0030, 0x001C, 0x0007, 0xFFF3, 0xFFDE, 0xFFCA, 0xFFB6, 0xFFA3,\n    0xFF91, 0xFF80, 0xFF71, 0xFF64, 0xFF58, 0xFF4E, 0xFF47, 0xFF43,\n    0xFF43, 0xFF47, 0xFF4F, 0xFF5A, 0xFF68, 0xFF78, 0xFF89, 0xFF9B,\n    0xFFAD, 0xFFBF, 0xFFD0, 0xFFDF, 0xFFEC, 0xFFF6, 0xFFFD, 0x0000,\n    0xFFFF, 0xFFFB, 0xFFF5, 0xFFED, 0xFFE2, 0xFFD6, 0xFFC9, 0xFFB9,\n    0xFFA9, 0xFF97, 0xFF85, 0xFF71, 0xFF5D, 0xFF49, 0xFF35, 0xFF20,\n    0xFF0C, 0xFEF8, 0xFEE4, 0xFED1, 0xFEBF, 0xFEAE, 0xFE9F, 0xFE90,\n    0xFE83, 0xFE78, 0xFE6F, 0xFE68, 0xFE63, 0xFE61, 0xFE61, 0xFE63,\n    0xFE66, 0xFE6A, 0xFE70, 0xFE77, 0xFE7F, 0xFE89, 0xFE94, 0xFEA1,\n    0xFEAF, 0xFEBF, 0xFED1, 0xFEE5, 0xFEFC, 0xFF13, 0xFF2C, 0xFF45,\n    0xFF5E, 0xFF76, 0xFF8E, 0xFFA5, 0xFFBA, 0xFFCD, 0xFFDE, 0xFFEC,\n    0xFFF6, 0xFFFD, 0x1555, 0x404B, 0x404D, 0x4051, 0x4058, 0x4061,\n    0x406C, 0x4079, 0x4087, 0x4097, 0x40A8, 0x40B9, 0x40CC, 0x40DE,\n    0x40F1, 0x4104, 0x4116, 0x4128, 0x4138, 0x4148, 0x4157, 0x4163,\n    0x416F, 0x4178, 0x417E, 0x4183, 0x4184, 0x4183, 0x4181, 0x417D,\n    0x4178, 0x4172, 0x416B, 0x4162, 0x4159, 0x414E, 0x4143, 0x4138,\n    0x412B, 0x411F, 0x4112, 0x4104, 0x40F7, 0x40E9, 0x40DB, 0x40CE,\n    0x40C0, 0x40B3, 0x40A6, 0x409A, 0x408E, 0x4083, 0x4078, 0x406F,\n    0x4066, 0x405F, 0x4058, 0x4053, 0x404F, 0x404C,\n};\n\n// 0x060098F4\nstatic const u16 toad_seg6_animindex_060098F4[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0000, 0x0001, 0x0003, 0x0001, 0x0000,\n    0x0001, 0x02AA, 0x0001, 0x0000, 0x003B, 0x02AB,\n    0x003B, 0x01F9, 0x003B, 0x0234, 0x003B, 0x026F,\n    0x0001, 0x0004, 0x0001, 0x0005, 0x0001, 0x0006,\n    0x0001, 0x01F6, 0x0001, 0x01F7, 0x0001, 0x01F8,\n    0x0001, 0x01F3, 0x0001, 0x01F4, 0x0001, 0x01F5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01F2,\n    0x0001, 0x01EB, 0x0001, 0x0000, 0x0001, 0x01EC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x003B, 0x0013,\n    0x0001, 0x0007, 0x0001, 0x0008, 0x0001, 0x0009,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01F1,\n    0x0001, 0x01ED, 0x0001, 0x0000, 0x0001, 0x01EE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x003B, 0x004E,\n    0x0001, 0x000A, 0x0001, 0x000B, 0x0001, 0x000C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01F0,\n    0x003B, 0x0089, 0x003B, 0x00C4, 0x003B, 0x00FF,\n    0x0001, 0x000D, 0x0001, 0x000E, 0x0001, 0x000F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01EF,\n    0x003B, 0x013A, 0x003B, 0x0175, 0x003B, 0x01B0,\n    0x0001, 0x0010, 0x0001, 0x0011, 0x0001, 0x0012,\n};\n\n// 0x060099F0\nstatic const struct Animation toad_seg6_anim_060099F0 = {\n    0,\n    0,\n    0,\n    0,\n    0x3B,\n    ANIMINDEX_NUMPARTS(toad_seg6_animindex_060098F4),\n    toad_seg6_animvalue_06009328,\n    toad_seg6_animindex_060098F4,\n    0,\n};\n"
  },
  {
    "path": "actors/toad/anims/anim_0600A0D0.inc.c",
    "content": "// 0x06009A08\nstatic const s16 toad_seg6_animvalue_06009A08[] = {\n    0x0000, 0x003B, 0xFFF8, 0x3FFF, 0xE004, 0xC001, 0xE001, 0xDFFD,\n    0x3FFF, 0x1FFF, 0x1FFF, 0xC001, 0x1FFF, 0xDFFD, 0x3FFF, 0x1FFF,\n    0x2003, 0xC001, 0x1FFF, 0x0000, 0xFFFF, 0xFFFC, 0xFFF7, 0xFFF0,\n    0xFFE8, 0xFFDE, 0xFFD3, 0xFFC6, 0xFFB9, 0xFFAB, 0xFF9C, 0xFF8C,\n    0xFF7C, 0xFF6C, 0xFF5C, 0xFF4C, 0xFF3C, 0xFF2C, 0xFF1E, 0xFF0F,\n    0xFF02, 0xFEF5, 0xFEEA, 0xFEE0, 0xFED8, 0xFED1, 0xFECC, 0xFEC9,\n    0xFEC8, 0xFEC9, 0xFECC, 0xFED0, 0xFED7, 0xFEDE, 0xFEE8, 0xFEF2,\n    0xFEFE, 0xFF0A, 0xFF18, 0xFF26, 0xFF35, 0xFF44, 0xFF53, 0xFF62,\n    0xFF72, 0xFF81, 0xFF91, 0xFF9F, 0xFFAE, 0xFFBB, 0xFFC8, 0xFFD4,\n    0xFFDE, 0xFFE8, 0xFFF0, 0xFFF7, 0xFFFC, 0xFFFF, 0x0000, 0xFFFF,\n    0xFFFC, 0xFFF7, 0xFFF0, 0xFFE8, 0xFFDE, 0xFFD3, 0xFFC6, 0xFFB9,\n    0xFFAB, 0xFF9C, 0xFF8C, 0xFF7C, 0xFF6C, 0xFF5C, 0xFF4C, 0xFF3C,\n    0xFF2C, 0xFF1E, 0xFF0F, 0xFF02, 0xFEF5, 0xFEEA, 0xFEE0, 0xFED8,\n    0xFED1, 0xFECC, 0xFEC9, 0xFEC8, 0xFEC9, 0xFECC, 0xFED0, 0xFED7,\n    0xFEDE, 0xFEE8, 0xFEF2, 0xFEFE, 0xFF0A, 0xFF18, 0xFF26, 0xFF35,\n    0xFF44, 0xFF53, 0xFF62, 0xFF72, 0xFF81, 0xFF91, 0xFF9F, 0xFFAE,\n    0xFFBB, 0xFFC8, 0xFFD4, 0xFFDE, 0xFFE8, 0xFFF0, 0xFFF7, 0xFFFC,\n    0xFFFF, 0xFF7B, 0xFF7E, 0xFF87, 0xFF95, 0xFFA9, 0xFFC1, 0xFFDE,\n    0xFFFE, 0x0021, 0x0047, 0x0071, 0x009C, 0x00CA, 0x00F8, 0x0128,\n    0x0159, 0x0189, 0x01B9, 0x01E9, 0x0217, 0x0245, 0x0270, 0x0299,\n    0x02BF, 0x02E2, 0x0301, 0x031D, 0x0334, 0x0347, 0x0354, 0x035C,\n    0x0357, 0x0340, 0x031A, 0x02E7, 0x02AA, 0x0265, 0x021A, 0x01CD,\n    0x017F, 0x0134, 0x00EE, 0x00AF, 0x0079, 0x0050, 0x0030, 0x0013,\n    0xFFFA, 0xFFE3, 0xFFCF, 0xFFBD, 0xFFAE, 0xFFA1, 0xFF96, 0xFF8D,\n    0xFF87, 0xFF81, 0xFF7E, 0xFF7C, 0xF087, 0xF086, 0xF082, 0xF07D,\n    0xF075, 0xF06C, 0xF061, 0xF054, 0xF046, 0xF036, 0xF026, 0xF014,\n    0xF002, 0xEFEF, 0xEFDB, 0xEFC7, 0xEFB3, 0xEF9F, 0xEF8A, 0xEF76,\n    0xEF62, 0xEF4E, 0xEF3C, 0xEF29, 0xEF18, 0xEF08, 0xEEF8, 0xEEEA,\n    0xEEDE, 0xEED3, 0xEECA, 0xEEC3, 0xEEBF, 0xEEBD, 0xEEBD, 0xEEC0,\n    0xEEC4, 0xEECB, 0xEED3, 0xEEDC, 0xEEE7, 0xEEF3, 0xEF00, 0xEF0E,\n    0xEF1D, 0xEF2F, 0xEF45, 0xEF5F, 0xEF7C, 0xEF9B, 0xEFBB, 0xEFDC,\n    0xEFFC, 0xF01A, 0xF037, 0xF050, 0xF066, 0xF077, 0xF082, 0xC150,\n    0xC149, 0xC133, 0xC111, 0xC0E2, 0xC0A8, 0xC064, 0xC017, 0xBFC2,\n    0xBF65, 0xBF02, 0xBE9A, 0xBE2E, 0xBDBE, 0xBD4B, 0xBCD7, 0xBC63,\n    0xBBEF, 0xBB7D, 0xBB0D, 0xBAA0, 0xBA38, 0xB9D5, 0xB978, 0xB923,\n    0xB8D6, 0xB892, 0xB859, 0xB82A, 0xB808, 0xB7F2, 0xB7FA, 0xB82B,\n    0xB87F, 0xB8F0, 0xB979, 0xBA15, 0xBABD, 0xBB6C, 0xBC1C, 0xBCC7,\n    0xBD68, 0xBDFA, 0xBE76, 0xBED7, 0xBF26, 0xBF70, 0xBFB5, 0xBFF5,\n    0xC02F, 0xC064, 0xC094, 0xC0BF, 0xC0E4, 0xC104, 0xC11E, 0xC133,\n    0xC142, 0xC14C, 0x0D31, 0x0D2F, 0x0D28, 0x0D1C, 0x0D0D, 0x0CF9,\n    0x0CE3, 0x0CC9, 0x0CAD, 0x0C8E, 0x0C6D, 0x0C4A, 0x0C26, 0x0C01,\n    0x0BDC, 0x0BB5, 0x0B8F, 0x0B69, 0x0B44, 0x0B1F, 0x0AFC, 0x0ADA,\n    0x0ABA, 0x0A9C, 0x0A81, 0x0A69, 0x0A54, 0x0A43, 0x0A35, 0x0A2C,\n    0x0A27, 0x0A2D, 0x0A42, 0x0A65, 0x0A92, 0x0AC8, 0x0B04, 0x0B45,\n    0x0B87, 0x0BCA, 0x0C0A, 0x0C45, 0x0C7A, 0x0CA6, 0x0CC7, 0x0CDF,\n    0x0CF4, 0x0D05, 0x0D13, 0x0D1E, 0x0D26, 0x0D2C, 0x0D30, 0x0D32,\n    0x0D33, 0x0D34, 0x0D33, 0x0D32, 0x0D32, 0x0C00, 0x0C03, 0x0C0C,\n    0x0C1B, 0x0C2F, 0x0C48, 0x0C66, 0x0C87, 0x0CAD, 0x0CD6, 0x0D02,\n    0x0D31, 0x0D62, 0x0D95, 0x0DCA, 0x0E00, 0x0E37, 0x0E6E, 0x0EA6,\n    0x0EDD, 0x0F14, 0x0F49, 0x0F7E, 0x0FB1, 0x0FE1, 0x100F, 0x103B,\n    0x1063, 0x1088, 0x10A9, 0x10C5, 0x10DD, 0x10F2, 0x1102, 0x110E,\n    0x1116, 0x111A, 0x1118, 0x1112, 0x1107, 0x10F6, 0x10E1, 0x10C6,\n    0x10A5, 0x107E, 0x104C, 0x1009, 0x0FB9, 0x0F5F, 0x0EFD, 0x0E97,\n    0x0E2E, 0x0DC7, 0x0D64, 0x0D07, 0x0CB4, 0x0C6D, 0x0C36, 0x0C11,\n    0xBA11, 0xBA0B, 0xB9F8, 0xB9D9, 0xB9AF, 0xB97C, 0xB93F, 0xB8FB,\n    0xB8AF, 0xB85C, 0xB805, 0xB7A9, 0xB749, 0xB6E6, 0xB682, 0xB61C,\n    0xB5B7, 0xB552, 0xB4EF, 0xB48E, 0xB431, 0xB3D8, 0xB385, 0xB337,\n    0xB2F1, 0xB2B2, 0xB27C, 0xB250, 0xB22F, 0xB219, 0xB20F, 0xB224,\n    0xB264, 0xB2C8, 0xB34B, 0xB3E7, 0xB494, 0xB54C, 0xB60A, 0xB6C7,\n    0xB77C, 0xB824, 0xB8B7, 0xB930, 0xB988, 0xB9C7, 0xB9F8, 0xBA1D,\n    0xBA37, 0xBA48, 0xBA51, 0xBA53, 0xBA4F, 0xBA48, 0xBA3E, 0xBA32,\n    0xBA27, 0xBA1D, 0xBA15, 0xEAAB, 0xC001, 0x1555, 0xC001, 0xBFB5,\n    0xBFB5, 0xBFB5, 0xBFB5, 0xDFDE, 0xC001, 0xDFDB, 0xDFDE, 0xC001,\n    0xDFDB, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0002,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0002, 0x0002, 0x0002, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0002, 0x0008, 0x0011,\n    0x001D, 0x002C, 0x003C, 0x004E, 0x0060, 0x0072, 0x0084, 0x0095,\n    0x00A4, 0x00B2, 0x00BD, 0x00C5, 0x00C9, 0x00C9, 0x00C5, 0x00BE,\n    0x00B5, 0x00A9, 0x009C, 0x008D, 0x007D, 0x006B, 0x0058, 0x0045,\n    0x0030, 0x001C, 0x0007, 0xFFF3, 0xFFDE, 0xFFCA, 0xFFB6, 0xFFA3,\n    0xFF91, 0xFF80, 0xFF71, 0xFF64, 0xFF58, 0xFF4E, 0xFF47, 0xFF43,\n    0xFF43, 0xFF47, 0xFF4F, 0xFF5A, 0xFF68, 0xFF78, 0xFF89, 0xFF9B,\n    0xFFAD, 0xFFBF, 0xFFD0, 0xFFDF, 0xFFEC, 0xFFF6, 0xFFFD, 0x0000,\n    0xFFFF, 0xFFFB, 0xFFF5, 0xFFED, 0xFFE2, 0xFFD6, 0xFFC9, 0xFFB9,\n    0xFFA9, 0xFF97, 0xFF85, 0xFF71, 0xFF5D, 0xFF49, 0xFF35, 0xFF20,\n    0xFF0C, 0xFEF8, 0xFEE4, 0xFED1, 0xFEBF, 0xFEAE, 0xFE9F, 0xFE90,\n    0xFE83, 0xFE78, 0xFE6F, 0xFE68, 0xFE63, 0xFE61, 0xFE61, 0xFE63,\n    0xFE66, 0xFE6A, 0xFE70, 0xFE77, 0xFE7F, 0xFE89, 0xFE94, 0xFEA1,\n    0xFEAF, 0xFEBF, 0xFED1, 0xFEE5, 0xFEFC, 0xFF13, 0xFF2C, 0xFF45,\n    0xFF5E, 0xFF76, 0xFF8E, 0xFFA5, 0xFFBA, 0xFFCD, 0xFFDE, 0xFFEC,\n    0xFFF6, 0xFFFD, 0xEAAB, 0x404B, 0x404D, 0x4051, 0x4058, 0x4061,\n    0x406C, 0x4079, 0x4087, 0x4097, 0x40A8, 0x40B9, 0x40CC, 0x40DE,\n    0x40F1, 0x4104, 0x4116, 0x4128, 0x4138, 0x4148, 0x4157, 0x4163,\n    0x416F, 0x4178, 0x417E, 0x4183, 0x4184, 0x4183, 0x417E, 0x4177,\n    0x416E, 0x4163, 0x4156, 0x4147, 0x4137, 0x4126, 0x4114, 0x4101,\n    0x40EE, 0x40DA, 0x40C7, 0x40B4, 0x40A1, 0x4090, 0x407F, 0x406F,\n    0x4062, 0x4055, 0x404B, 0x4043, 0x403E, 0x403C, 0x403B, 0x403B,\n    0x403D, 0x403F, 0x4042, 0x4045, 0x4048, 0x404A,\n};\n\n// 0x06009FD4\nstatic const u16 toad_seg6_animindex_06009FD4[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0000, 0x0001, 0x0003, 0x0001, 0x0000,\n    0x0001, 0x02AA, 0x0001, 0x0000, 0x003B, 0x02AB,\n    0x003B, 0x01F9, 0x003B, 0x0234, 0x003B, 0x026F,\n    0x0001, 0x0004, 0x0001, 0x0005, 0x0001, 0x0006,\n    0x0001, 0x01F6, 0x0001, 0x01F7, 0x0001, 0x01F8,\n    0x0001, 0x01F3, 0x0001, 0x01F4, 0x0001, 0x01F5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01F2,\n    0x0001, 0x01EB, 0x0001, 0x0000, 0x0001, 0x01EC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x003B, 0x0013,\n    0x0001, 0x0007, 0x0001, 0x0008, 0x0001, 0x0009,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01F1,\n    0x0001, 0x01ED, 0x0001, 0x0000, 0x0001, 0x01EE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x003B, 0x004E,\n    0x0001, 0x000A, 0x0001, 0x000B, 0x0001, 0x000C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01F0,\n    0x003B, 0x0089, 0x003B, 0x00C4, 0x003B, 0x00FF,\n    0x0001, 0x000D, 0x0001, 0x000E, 0x0001, 0x000F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01EF,\n    0x003B, 0x013A, 0x003B, 0x0175, 0x003B, 0x01B0,\n    0x0001, 0x0010, 0x0001, 0x0011, 0x0001, 0x0012,\n};\n\n// 0x0600A0D0\nstatic const struct Animation toad_seg6_anim_0600A0D0 = {\n    0,\n    0,\n    0,\n    0,\n    0x3B,\n    ANIMINDEX_NUMPARTS(toad_seg6_animindex_06009FD4),\n    toad_seg6_animvalue_06009A08,\n    toad_seg6_animindex_06009FD4,\n    0,\n};\n"
  },
  {
    "path": "actors/toad/anims/anim_0600B66C.inc.c",
    "content": "// 0x0600A0E8\nstatic const s16 toad_seg6_animvalue_0600A0E8[] = {\n    0x0000, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B,\n    0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003C,\n    0x003C, 0x003C, 0x003C, 0x003C, 0x003D, 0x003D, 0x0053, 0x0067,\n    0x0078, 0x0084, 0x0088, 0x0085, 0x007C, 0x0070, 0x0060, 0x004D,\n    0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A, 0x003A,\n    0x003A, 0x003A, 0x003A, 0x003B, 0x003A, 0x003A, 0x003A, 0x003A,\n    0x003B, 0x003C, 0x003E, 0x0040, 0x0041, 0x0043, 0x0044, 0x0044,\n    0x0044, 0x0042, 0x0040, 0x003E, 0x003C, 0x003C, 0x003D, 0x003F,\n    0x0042, 0x0044, 0x0045, 0x0044, 0x0044, 0x0042, 0x0041, 0x003F,\n    0x003D, 0x003C, 0x003B, 0x003A, 0x0039, 0x0039, 0x0039, 0x0039,\n    0x003B, 0x003F, 0x0044, 0x0049, 0x004F, 0x0055, 0x0059, 0x005B,\n    0x0057, 0x004D, 0x0045, 0x0043, 0x0048, 0x004F, 0x0057, 0x005A,\n    0x0056, 0x004D, 0x0044, 0x0041, 0x0046, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFF7,\n    0xFFF1, 0xFFEC, 0xFFE8, 0xFFE5, 0xFFE2, 0xFFDE, 0xFFD8, 0xFFD0,\n    0xFFC5, 0xFFB7, 0xFFA5, 0xFF8F, 0xFF72, 0xFF50, 0xFF2D, 0xFF0A,\n    0xFEE6, 0xFEC2, 0xFE9F, 0xFE7B, 0xFE56, 0xFE32, 0xFE0D, 0xFDE9,\n    0xFDC4, 0x3FFF, 0xE004, 0xC001, 0xE001, 0xDFFD, 0x3FFF, 0x1FFF,\n    0x1FFF, 0xC001, 0x1FFF, 0xDFFD, 0x3FFF, 0x1FFF, 0x2003, 0xC001,\n    0x1FFF, 0x0000, 0xFFFF, 0xFFFC, 0xFFF7, 0xFFF0, 0xFFE9, 0xFFE1,\n    0xFFDA, 0xFFD2, 0xFFCC, 0xFFC6, 0xFFC3, 0xFFC1, 0xFFC2, 0xFFC6,\n    0xFFCD, 0xFFD8, 0xFFE7, 0xFFFB, 0x0013, 0x0055, 0x00D0, 0x0167,\n    0x01FD, 0x0274, 0x02B0, 0x029D, 0x024D, 0x01DA, 0x015F, 0x00F6,\n    0x008D, 0x0026, 0x0000, 0xFFE0, 0xFF65, 0xFE99, 0xFD85, 0xFC32,\n    0xFAA8, 0xF8EF, 0xF712, 0xF518, 0xF30A, 0xF0F1, 0xEED6, 0xECC1,\n    0xEABC, 0xE8CE, 0xE701, 0xE55E, 0xE3ED, 0xE2B7, 0xE1FC, 0xE1D7,\n    0xE218, 0xE28E, 0xE309, 0xE359, 0xE34D, 0xE2B6, 0xDF70, 0xDA85,\n    0xD883, 0xD9D7, 0xDBC9, 0xDE33, 0xE0ED, 0xE3D0, 0xE6B4, 0xE974,\n    0xEBE6, 0xEDE6, 0xEF4A, 0xF030, 0xF0D6, 0xF142, 0xF17E, 0xF192,\n    0xF186, 0xF162, 0xF12E, 0xF0F3, 0xF0B9, 0xF088, 0xF068, 0xF062,\n    0xF051, 0xF021, 0xEFF4, 0xEFE8, 0xEFEB, 0xEFF1, 0xEFF9, 0xF003,\n    0xF00E, 0xF01B, 0xF027, 0xF034, 0xF040, 0x0000, 0x0000, 0x0002,\n    0x0005, 0x0009, 0x000E, 0x0013, 0x0019, 0x0020, 0x0027, 0x002F,\n    0x0037, 0x003F, 0x0047, 0x004F, 0x0056, 0x005E, 0x0065, 0x006B,\n    0x0071, 0x0079, 0x007F, 0x0079, 0x0068, 0x0052, 0x003A, 0x0020,\n    0x0007, 0xFFF1, 0xFFDE, 0xFFCF, 0xFFCD, 0xFFDC, 0x0000, 0x0033,\n    0x006B, 0x00A9, 0x00EA, 0x012E, 0x0173, 0x01BA, 0x0200, 0x0245,\n    0x0289, 0x02C9, 0x0305, 0x033D, 0x036E, 0x0399, 0x03BC, 0x03D6,\n    0x03E7, 0x03ED, 0x03D0, 0x0382, 0x030D, 0x027C, 0x01DB, 0x0135,\n    0x0095, 0x0006, 0xFF5C, 0xFEA7, 0xFE51, 0xFE5C, 0xFE7F, 0xFEB3,\n    0xFEF3, 0xFF36, 0xFF77, 0xFFAF, 0xFFD7, 0xFFE9, 0xFFDE, 0xFFBA,\n    0xFF88, 0xFF48, 0xFEFD, 0xFEAA, 0xFE50, 0xFDF2, 0xFD91, 0xFD31,\n    0xFCD3, 0xFC7A, 0xFC27, 0xFBDD, 0xFBA1, 0xFB79, 0xFB63, 0xFB5F,\n    0xFB62, 0xFB68, 0xFB70, 0xFB7B, 0xFB86, 0xFB93, 0xFBA0, 0xFBAD,\n    0xFBB9, 0x0000, 0x0007, 0x001B, 0x003A, 0x0060, 0x008C, 0x00BB,\n    0x00E9, 0x0115, 0x013C, 0x015C, 0x0171, 0x0179, 0x0172, 0x0159,\n    0x012C, 0x00E8, 0x008A, 0x000F, 0xFF77, 0xFB84, 0xF4E3, 0xF174,\n    0xF20F, 0xF381, 0xF58E, 0xF7F9, 0xFA88, 0xFCFE, 0xFF20, 0x00B1,\n    0x00B8, 0xFF84, 0xFEC8, 0xFEDF, 0xFEFF, 0xFF26, 0xFF55, 0xFF89,\n    0xFFC1, 0xFFFD, 0x003A, 0x007A, 0x00B9, 0x00F8, 0x0134, 0x016D,\n    0x01A2, 0x01D1, 0x01FA, 0x021B, 0x0234, 0x0242, 0x024C, 0x0252,\n    0x0248, 0x0224, 0x01DC, 0x0165, 0x00B5, 0xFFC2, 0xFCC4, 0xF861,\n    0xF62D, 0xF688, 0xF75E, 0xF88E, 0xF9FA, 0xFB85, 0xFD0F, 0xFE7A,\n    0xFFA8, 0x0079, 0x00D1, 0x00C2, 0x007C, 0x0005, 0xFF66, 0xFEA6,\n    0xFDCC, 0xFCE1, 0xFBEC, 0xFAF6, 0xFA04, 0xF920, 0xF851, 0xF79F,\n    0xF70D, 0xF69E, 0xF65D, 0xF650, 0xF657, 0xF667, 0xF67D, 0xF699,\n    0xF6B8, 0xF6DA, 0xF6FD, 0xF720, 0xF741, 0x0000, 0xFFFD, 0xFFF3,\n    0xFFE4, 0xFFCF, 0xFFB5, 0xFF98, 0xFF77, 0xFF52, 0xFF2C, 0xFF03,\n    0xFED9, 0xFEAF, 0xFE84, 0xFE59, 0xFE30, 0xFE08, 0xFDE2, 0xFDBE,\n    0xFD9E, 0xFD80, 0xFD80, 0xFDF9, 0xFE06, 0xFE08, 0xFE03, 0xFDFD,\n    0xFDFB, 0xFE00, 0xFE13, 0xFE38, 0xFE9C, 0xFF46, 0x0000, 0x00C6,\n    0x01B2, 0x02B8, 0x03CA, 0x04DD, 0x05E5, 0x06D6, 0x07A4, 0x0843,\n    0x08A6, 0x08C2, 0x088A, 0x077B, 0x055B, 0x028F, 0xFF7C, 0xFC84,\n    0xFA0C, 0xF878, 0xF95C, 0xFC43, 0xFE89, 0xFF6D, 0x0007, 0x006F,\n    0x00BC, 0x0106, 0x012A, 0x011A, 0x0109, 0x010A, 0x010A, 0x010A,\n    0x010B, 0x010B, 0x010B, 0x010A, 0x010A, 0x0108, 0x0106, 0x0103,\n    0x00FF, 0x00FB, 0x00F6, 0x00F1, 0x00EB, 0x00E6, 0x00E1, 0x00DC,\n    0x00D8, 0x00D5, 0x00D2, 0x00D1, 0x00D9, 0x00E9, 0x00F8, 0x00FC,\n    0x00FB, 0x00F9, 0x00F6, 0x00F2, 0x00EE, 0x00EA, 0x00E6, 0x00E1,\n    0x00DD, 0x0000, 0x0000, 0x0001, 0x0004, 0x0007, 0x000B, 0x000F,\n    0x0015, 0x001B, 0x0021, 0x0028, 0x002F, 0x0037, 0x003F, 0x0048,\n    0x0050, 0x0059, 0x0062, 0x006A, 0x0073, 0x007F, 0x00B7, 0x0199,\n    0x018A, 0x0170, 0x014C, 0x0123, 0x00F5, 0x00C7, 0x009A, 0x0071,\n    0x0044, 0x0016, 0x0000, 0x0002, 0x000F, 0x0022, 0x0039, 0x0052,\n    0x0069, 0x007D, 0x008A, 0x008E, 0x0086, 0x006F, 0x0047, 0xFFE3,\n    0xFF2F, 0xFE52, 0xFD75, 0xFCBC, 0xFC4F, 0xFC55, 0xFE25, 0x014A,\n    0x033A, 0x0349, 0x02B3, 0x01C8, 0x00D9, 0x0035, 0x0002, 0x000D,\n    0x001D, 0x001D, 0x001D, 0x001D, 0x001E, 0x0020, 0x0022, 0x0025,\n    0x0028, 0x002D, 0x0032, 0x0039, 0x0041, 0x004B, 0x0055, 0x0061,\n    0x006C, 0x0077, 0x0082, 0x008C, 0x0095, 0x009C, 0x00A2, 0x00A6,\n    0x0099, 0x007B, 0x0060, 0x0059, 0x005B, 0x005E, 0x0063, 0x0069,\n    0x0071, 0x0078, 0x0080, 0x0088, 0x0090, 0x0000, 0xFFFE, 0xFFF8,\n    0xFFEF, 0xFFE3, 0xFFD6, 0xFFC9, 0xFFBC, 0xFFB1, 0xFFA8, 0xFFA2,\n    0xFFA0, 0xFFA3, 0xFFAC, 0xFFBC, 0xFFD4, 0xFFF3, 0x001C, 0x004F,\n    0x008E, 0x0170, 0x05A4, 0x154B, 0x1457, 0x1283, 0x1007, 0x0D1D,\n    0x0A00, 0x06EA, 0x0413, 0x01B7, 0x0018, 0xFF2F, 0xFEC8, 0xFE94,\n    0xFE68, 0xFE45, 0xFE2A, 0xFE16, 0xFE0B, 0xFE08, 0xFE0D, 0xFE1A,\n    0xFE2E, 0xFE4B, 0xFE6E, 0xFECF, 0xFF82, 0x005A, 0x012D, 0x01CB,\n    0x0208, 0x01B6, 0xFEED, 0xFA63, 0xF7E1, 0xF853, 0xF9D0, 0xFBE0,\n    0xFE0A, 0xFFD5, 0x016B, 0x02DA, 0x037F, 0x0385, 0x0384, 0x0376,\n    0x0358, 0x0325, 0x02D8, 0x026B, 0x01DB, 0x0122, 0x003D, 0xFF18,\n    0xFDAC, 0xFC08, 0xFA3D, 0xF858, 0xF669, 0xF47F, 0xF2A9, 0xF0F6,\n    0xEF74, 0xEE33, 0xED42, 0xECB0, 0xEEEF, 0xF423, 0xF8E4, 0xFA1C,\n    0xF9CF, 0xF930, 0xF84C, 0xF733, 0xF5F1, 0xF496, 0xF32F, 0xF1CA,\n    0xF076, 0xFF7B, 0xFF7B, 0xFF7B, 0xFF7B, 0xFF7B, 0xFF7B, 0xFF7B,\n    0xFF7B, 0xFF7B, 0xFF7B, 0xFF7B, 0xFF7B, 0xFF7B, 0xFF7B, 0xFF7B,\n    0xFF7B, 0x005C, 0x02CA, 0x0671, 0x0AFF, 0x1021, 0x1583, 0x1AD4,\n    0x1FC0, 0x23F3, 0x271D, 0x2998, 0x2BEE, 0x2E0F, 0x2FED, 0x3176,\n    0x329D, 0x3351, 0x3382, 0x3322, 0x3221, 0x305D, 0x2DD6, 0x2AB2,\n    0x2713, 0x231D, 0x1EF4, 0x1ABC, 0x1698, 0x12AB, 0x0F1B, 0x0C09,\n    0x099B, 0x07A3, 0x05DB, 0x043F, 0x02CD, 0x0181, 0x005A, 0xFF54,\n    0xFE6B, 0xFD9D, 0xFCE8, 0xFC47, 0xFBB8, 0xFB39, 0xFAC6, 0xFA5C,\n    0xF9FD, 0xF9AB, 0xF967, 0xF92F, 0xF903, 0xF8E0, 0xF8C8, 0xF8B8,\n    0xF8B0, 0xF8AF, 0xF8B4, 0xF8BE, 0xF8CD, 0xF8E0, 0xF8F5, 0xF90C,\n    0xF924, 0xF93C, 0xF954, 0xF96A, 0xF97D, 0xF98E, 0xF99A, 0xF9A1,\n    0xF9A2, 0xF9A1, 0xF99F, 0xF99D, 0xF99C, 0xF99A, 0xF999, 0xF997,\n    0xF996, 0xF995, 0xF994, 0xF993, 0xF992, 0xF087, 0xF087, 0xF087,\n    0xF087, 0xF087, 0xF087, 0xF087, 0xF087, 0xF087, 0xF087, 0xF087,\n    0xF087, 0xF087, 0xF087, 0xF087, 0xF087, 0xF0B2, 0xF127, 0xF1D4,\n    0xF2A6, 0xF38C, 0xF473, 0xF54A, 0xF5FD, 0xF67C, 0xF6B4, 0xF6A1,\n    0xF652, 0xF5D4, 0xF536, 0xF484, 0xF3CA, 0xF317, 0xF277, 0xF1F8,\n    0xF1A6, 0xF17A, 0xF164, 0xF15F, 0xF167, 0xF17B, 0xF195, 0xF1B2,\n    0xF1CF, 0xF1E8, 0xF1FA, 0xF201, 0xF1FA, 0xF1EB, 0xF1DB, 0xF1CA,\n    0xF1B8, 0xF1A4, 0xF18D, 0xF174, 0xF157, 0xF137, 0xF112, 0xF0E8,\n    0xF0B9, 0xF084, 0xF049, 0xF008, 0xEFBE, 0xEF6D, 0xEF14, 0xEEB5,\n    0xEE51, 0xEDE8, 0xED7B, 0xED0C, 0xEC9A, 0xEC28, 0xEBB5, 0xEB42,\n    0xEAD1, 0xEA63, 0xE9F7, 0xE98F, 0xE92C, 0xE8CF, 0xE879, 0xE829,\n    0xE7E2, 0xE7A4, 0xE770, 0xE747, 0xE72A, 0xE713, 0xE6FD, 0xE6E9,\n    0xE6D6, 0xE6C4, 0xE6B4, 0xE6A4, 0xE696, 0xE688, 0xE67C, 0xE671,\n    0xE667, 0xC150, 0xC150, 0xC150, 0xC150, 0xC150, 0xC150, 0xC150,\n    0xC150, 0xC150, 0xC150, 0xC150, 0xC150, 0xC150, 0xC150, 0xC150,\n    0xC150, 0xBDCF, 0xB436, 0xA5E3, 0x9433, 0x8084, 0x6C31, 0x589D,\n    0x4724, 0x3924, 0x2FF9, 0x2AF0, 0x2838, 0x2789, 0x2898, 0x2B1C,\n    0x2ECA, 0x335A, 0x3882, 0x3DF7, 0x436F, 0x4984, 0x50D1, 0x5919,\n    0x621B, 0x6B97, 0x754D, 0x7EFE, 0x886D, 0x9153, 0x9975, 0xA092,\n    0xA66A, 0xAB52, 0xAFCC, 0xB3DF, 0xB791, 0xBAE7, 0xBDE8, 0xC09A,\n    0xC303, 0xC529, 0xC712, 0xC8C4, 0xCA46, 0xCB9C, 0xCCCE, 0xCDE2,\n    0xCED5, 0xCFA4, 0xD051, 0xD0DE, 0xD14D, 0xD1A2, 0xD1DD, 0xD201,\n    0xD211, 0xD20F, 0xD1FD, 0xD1DD, 0xD1B1, 0xD17D, 0xD141, 0xD101,\n    0xD0BE, 0xD07C, 0xD03B, 0xCFFE, 0xCFC9, 0xCF9C, 0xCF7A, 0xCF66,\n    0xCF61, 0xCF65, 0xCF69, 0xCF6C, 0xCF6F, 0xCF72, 0xCF75, 0xCF78,\n    0xCF7A, 0xCF7D, 0xCF7F, 0xCF80, 0xCF82, 0x0D31, 0x0D2F, 0x0D2A,\n    0x0D22, 0x0D16, 0x0D08, 0x0CF7, 0x0CE3, 0x0CCD, 0x0CB6, 0x0C9C,\n    0x0C81, 0x0C64, 0x0C46, 0x0C27, 0x0C08, 0x0BE8, 0x0BC7, 0x0BA6,\n    0x0B86, 0x0B65, 0x0B45, 0x0B26, 0x0B07, 0x0AEA, 0x0ACE, 0x0AB3,\n    0x0A9A, 0x0A83, 0x0A6E, 0x0A5B, 0x0A4B, 0x0A3D, 0x0A33, 0x0A2B,\n    0x0A27, 0x0A38, 0x0A69, 0x0AB4, 0x0B0F, 0x0B74, 0x0BDB, 0x0C3A,\n    0x0C8C, 0x0CC7, 0x0CF5, 0x0D24, 0x0D54, 0x0D85, 0x0DB7, 0x0DEA,\n    0x0E1D, 0x0E50, 0x0E84, 0x0EB8, 0x0EEC, 0x0F21, 0x0F55, 0x0F89,\n    0x0FBD, 0x0FF0, 0x1023, 0x1055, 0x1086, 0x10B7, 0x10E7, 0x1115,\n    0x1143, 0x116F, 0x1199, 0x11C3, 0x11EA, 0x1210, 0x1235, 0x1257,\n    0x1277, 0x1295, 0x12B1, 0x12CA, 0x12E1, 0x12F6, 0x1307, 0x1316,\n    0x1322, 0x132B, 0x1331, 0x1334, 0x0CF4, 0x0CF4, 0x0CF7, 0x0CFC,\n    0x0D02, 0x0D0A, 0x0D14, 0x0D1F, 0x0D2C, 0x0D3A, 0x0D4A, 0x0D5B,\n    0x0D6D, 0x0C00, 0x0C02, 0x0C09, 0x0C13, 0x0C22, 0x0C34, 0x0C49,\n    0x0C62, 0x0C7D, 0x0C9C, 0x0CBD, 0x0CE0, 0x0D05, 0x0D2D, 0x0D56,\n    0x0D80, 0x0DAC, 0x0DD9, 0x0E07, 0x0E35, 0x0E64, 0x0E93, 0x0EC2,\n    0x0EF1, 0x0F20, 0x0F4E, 0x0F7A, 0x0FA6, 0x0FD1, 0x0FFA, 0x1021,\n    0x1047, 0x106A, 0x108B, 0x10A9, 0x10C5, 0x10CA, 0x10AE, 0x107D,\n    0x1045, 0x1012, 0x0FF1, 0x0FEF, 0x101A, 0x107E, 0x1106, 0x1194,\n    0x1227, 0x12C0, 0x135D, 0x13FF, 0x14A6, 0x1550, 0x15FD, 0x16AE,\n    0x1762, 0x1818, 0x18D0, 0x198A, 0x1A45, 0x1B02, 0x1BBF, 0x1C7D,\n    0x1D3A, 0x1DF8, 0x1EB4, 0x1F70, 0x202B, 0x20E3, 0x219A, 0x224F,\n    0x2300, 0x23AF, 0x245A, 0x2502, 0x25A5, 0x2644, 0x26DE, 0x2774,\n    0x2803, 0x288D, 0x2911, 0x298E, 0x2A04, 0x2A74, 0x2ADB, 0x2B3B,\n    0x1FE7, 0x1FE9, 0x1FEE, 0x1FF6, 0x2002, 0x2010, 0x2022, 0x2036,\n    0x204D, 0x2067, 0x2083, 0x20A2, 0x20C4, 0xBA11, 0xBA0D, 0xB9FE,\n    0xB9E7, 0xB9C8, 0xB9A2, 0xB974, 0xB940, 0xB905, 0xB8C6, 0xB881,\n    0xB839, 0xB7EC, 0xB79D, 0xB74A, 0xB6F6, 0xB6A0, 0xB64A, 0xB5F3,\n    0xB59C, 0xB546, 0xB4F1, 0xB49E, 0xB44D, 0xB400, 0xB3B6, 0xB370,\n    0xB32F, 0xB2F3, 0xB2BC, 0xB28C, 0xB263, 0xB242, 0xB228, 0xB217,\n    0xB20F, 0xB248, 0xB2E5, 0xB3CE, 0xB4E6, 0xB613, 0xB73B, 0xB843,\n    0xB910, 0xB988, 0xB9CC, 0xBA0F, 0xBA52, 0xBA94, 0xBAD4, 0xBB14,\n    0xBB53, 0xBB91, 0xBBCD, 0xBC09, 0xBC43, 0xBC7B, 0xBCB3, 0xBCE9,\n    0xBD1D, 0xBD50, 0xBD82, 0xBDB2, 0xBDE0, 0xBE0C, 0xBE37, 0xBE5F,\n    0xBE86, 0xBEAB, 0xBECE, 0xBEEF, 0xBF0D, 0xBF2A, 0xBF44, 0xBF5C,\n    0xBF71, 0xBF84, 0xBF95, 0xBFA3, 0xBFAF, 0xBFB7, 0xBFBE, 0xBFC1,\n    0xBFC2, 0xBFC0, 0xBFBB, 0xBFB3, 0xB7F0, 0xB7F1, 0xB7F5, 0xB7FA,\n    0xB802, 0xB80C, 0xB818, 0xB826, 0xB836, 0xB848, 0xB85B, 0xB870,\n    0xB887, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB,\n    0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB,\n    0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB,\n    0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB,\n    0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB,\n    0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB,\n    0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB,\n    0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB,\n    0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB,\n    0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB,\n    0xEAAB, 0xEACF, 0xEB2C, 0xEBAE, 0xEC40, 0xECCF, 0xED46, 0xED91,\n    0xED95, 0xED58, 0xECFD, 0xECA7, 0xEC26, 0xEB79, 0xEB00, 0xEB1C,\n    0xEC2E, 0xEE14, 0xF04D, 0xF258, 0xF491, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0091, 0x020A, 0x0415,\n    0x065A, 0x0883, 0x0A37, 0x0B21, 0x0AC5, 0x0935, 0x06EF, 0x0471,\n    0x011F, 0xFCF9, 0xF962, 0xF7BF, 0xF8A4, 0xFB2E, 0xFE73, 0x0186,\n    0x0491, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001,\n    0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001,\n    0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001,\n    0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001,\n    0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001,\n    0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001,\n    0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001,\n    0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001,\n    0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001,\n    0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001,\n    0xC001, 0xC10D, 0xC3C8, 0xC78F, 0xCBC4, 0xCFC4, 0xD2F0, 0xD4A6,\n    0xD3DE, 0xD0C8, 0xCC99, 0xC887, 0xC404, 0xBEA9, 0xB9ED, 0xB747,\n    0xB7C7, 0xBACE, 0xBF75, 0xC4D3, 0xCC01, 0x1555, 0x1555, 0x1555,\n    0x1555, 0x1555, 0x1555, 0x1555, 0x1555, 0x1555, 0x1555, 0x1555,\n    0x1555, 0x1555, 0x1555, 0x1555, 0x1555, 0x1555, 0x1555, 0x1555,\n    0x1555, 0x1555, 0x1555, 0x1555, 0x1555, 0x1555, 0x1555, 0x1555,\n    0x1555, 0x1555, 0x1555, 0x1555, 0x1555, 0x1555, 0x1555, 0x1555,\n    0x1555, 0x1555, 0x1555, 0x1555, 0x1555, 0x1555, 0x1555, 0x1555,\n    0x1555, 0x1555, 0x1555, 0x1555, 0x1555, 0x1555, 0x1555, 0x1555,\n    0x1555, 0x1555, 0x1555, 0x1555, 0x1555, 0x1555, 0x1555, 0x1555,\n    0x1555, 0x1555, 0x1555, 0x1555, 0x1555, 0x1555, 0x1555, 0x1555,\n    0x1555, 0x1555, 0x1555, 0x1555, 0x1555, 0x1555, 0x1555, 0x1555,\n    0x1555, 0x1555, 0x1555, 0x1555, 0x1555, 0x1531, 0x14D1, 0x1441,\n    0x1390, 0x12CB, 0x1201, 0x113E, 0x106D, 0x0F77, 0x0E6A, 0x0D55,\n    0x0C1B, 0x0ABD, 0x0978, 0x0886, 0x081E, 0x082A, 0x0864, 0x0885,\n    0x0838, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0093, 0x020F, 0x0419, 0x0652, 0x085F, 0x09E3, 0x0A82,\n    0x09A5, 0x0753, 0x041D, 0x0091, 0xFBED, 0xF626, 0xF0E9, 0xEDE0,\n    0xEE88, 0xF23C, 0xF71F, 0xFB52, 0xFE7A, 0xC001, 0xC001, 0xC001,\n    0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001,\n    0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001,\n    0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001,\n    0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001,\n    0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001,\n    0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001,\n    0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001,\n    0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001,\n    0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001,\n    0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xBEB3, 0xBB53, 0xB6B1,\n    0xB19C, 0xACE4, 0xA95A, 0xA7CB, 0xA961, 0xAE10, 0xB4DC, 0xBCC7,\n    0xC81B, 0xD69F, 0xE399, 0xEA4F, 0xE66D, 0xD9BC, 0xC9DD, 0xBC7B,\n    0xB207, 0xBFB5, 0xBFB5, 0xBFB5, 0xBFB5, 0xDFDE, 0xC001, 0xDFDB,\n    0xDFDE, 0xC001, 0xDFDB, 0x0000, 0xFFE7, 0xFFA5, 0xFF4A, 0xFEE5,\n    0xFE85, 0xFE39, 0xFE11, 0xFE1B, 0xFE67, 0xFF03, 0x0000, 0x01B7,\n    0x0449, 0x0770, 0x0AE4, 0x0E5E, 0x1197, 0x1448, 0x1629, 0x174D,\n    0x1801, 0x1859, 0x186C, 0x184D, 0x1812, 0x17CE, 0x1798, 0x1782,\n    0x177A, 0x175F, 0x1738, 0x1707, 0x16D3, 0x16A0, 0x1672, 0x164F,\n    0x1638, 0x162D, 0x1628, 0x1627, 0x1626, 0x1626, 0x1625, 0x1624,\n    0x1624, 0x1623, 0x1623, 0x1622, 0x1622, 0x1621, 0x1621, 0x1621,\n    0x1620, 0x1620, 0x1620, 0x1620, 0x1620, 0x161F, 0x161F, 0x161F,\n    0x161F, 0x161F, 0x161F, 0x161F, 0x161F, 0x161F, 0x1620, 0x1620,\n    0x1620, 0x1620, 0x1620, 0x1621, 0x1621, 0x1621, 0x1622, 0x1622,\n    0x1623, 0x1623, 0x1623, 0x1624, 0x1624, 0x1625, 0x1626, 0x1626,\n    0x1627, 0x1627, 0x162B, 0x1632, 0x163A, 0x1642, 0x1647, 0x1644,\n    0x163E, 0x1639, 0x1639, 0x163A, 0x163A, 0x1638, 0x1634, 0x0000,\n    0xFFFA, 0xFFEA, 0xFFD5, 0xFFBF, 0xFFAD, 0xFFA3, 0xFFA7, 0xFFBD,\n    0xFFE9, 0x002E, 0x0095, 0x013F, 0x023A, 0x036B, 0x04B5, 0x05FD,\n    0x0726, 0x0815, 0x08AD, 0x08FB, 0x0922, 0x0926, 0x090B, 0x08D4,\n    0x0885, 0x0821, 0x07AD, 0x072D, 0x067F, 0x0592, 0x047C, 0x0355,\n    0x0232, 0x012B, 0x0056, 0xFFCD, 0x000A, 0x0110, 0x0232, 0x02C2,\n    0x02D1, 0x02E0, 0x02EE, 0x02FB, 0x0308, 0x0315, 0x0321, 0x032C,\n    0x0337, 0x0342, 0x034B, 0x0355, 0x035D, 0x0365, 0x036C, 0x0373,\n    0x0379, 0x037E, 0x0383, 0x0387, 0x038A, 0x038C, 0x038E, 0x038F,\n    0x038F, 0x038E, 0x038C, 0x038A, 0x0387, 0x0383, 0x037E, 0x0378,\n    0x0371, 0x036A, 0x0361, 0x0358, 0x034D, 0x0342, 0x0336, 0x0328,\n    0x031A, 0x030B, 0x02FA, 0x02E9, 0x02D6, 0x02C2, 0x0250, 0x015A,\n    0x0036, 0xFF3B, 0xFEBD, 0xFF62, 0x00C3, 0x01AC, 0x016A, 0x00AF,\n    0x0052, 0x008E, 0x00FA, 0x0000, 0x000C, 0x002C, 0x0057, 0x0085,\n    0x00AF, 0x00CC, 0x00D4, 0x00BF, 0x0085, 0x001F, 0xFF85, 0xFE7D,\n    0xFCF4, 0xFB15, 0xF90B, 0xF702, 0xF526, 0xF3A2, 0xF2A1, 0xF20F,\n    0xF1B6, 0xF190, 0xF19A, 0xF1CC, 0xF223, 0xF298, 0xF327, 0xF3CA,\n    0xF4B1, 0xF5F9, 0xF77F, 0xF920, 0xFAB9, 0xFC2A, 0xFD4D, 0xFE02,\n    0xFD84, 0xFBD8, 0xFA08, 0xF922, 0xF909, 0xF8F1, 0xF8DA, 0xF8C4,\n    0xF8AF, 0xF89A, 0xF886, 0xF873, 0xF861, 0xF850, 0xF840, 0xF831,\n    0xF823, 0xF816, 0xF80A, 0xF7FF, 0xF7F6, 0xF7ED, 0xF7E5, 0xF7DF,\n    0xF7DA, 0xF7D6, 0xF7D3, 0xF7D2, 0xF7D2, 0xF7D3, 0xF7D5, 0xF7D9,\n    0xF7DF, 0xF7E5, 0xF7ED, 0xF7F7, 0xF802, 0xF80E, 0xF81C, 0xF82C,\n    0xF83D, 0xF850, 0xF864, 0xF87A, 0xF892, 0xF8AB, 0xF8C6, 0xF8E3,\n    0xF902, 0xF922, 0xF9DE, 0xFB72, 0xFD52, 0xFEF0, 0xFFC0, 0xFEB1,\n    0xFC6A, 0xFAEC, 0xFB58, 0xFC8C, 0xFD24, 0xFCC2, 0xFC10, 0x1555,\n    0x1553, 0x154F, 0x1548, 0x1540, 0x1536, 0x152C, 0x1521, 0x1517,\n    0x150D, 0x1504, 0x14FD, 0x14F8, 0x14F5, 0x14F6, 0x14FA, 0x1502,\n    0x150F, 0x1521, 0x1538, 0x1555, 0x1591, 0x15FA, 0x1682, 0x1719,\n    0x17B0, 0x1837, 0x18A0, 0x18DA, 0x18F0, 0x18F8, 0x18F3, 0x18E3,\n    0x18CB, 0x18AB, 0x1887, 0x185F, 0x1835, 0x180C, 0x17E5, 0x17C2,\n    0x17A5, 0x178F, 0x1784, 0x1783, 0x1790, 0x17AD, 0x17DA, 0x181A,\n    0x186F, 0x18DA, 0x1949, 0x19AC, 0x1A07, 0x1A5E, 0x1AB6, 0x1B14,\n    0x1B7B, 0x1BF2, 0x1C7B, 0x1D1C, 0x1DDA, 0x1EB8, 0x1FBC, 0x20E9,\n    0x2245, 0x23D4, 0x259B, 0x279D, 0x29E0, 0x2C68, 0x2F58, 0x32C6,\n    0x36A5, 0x3AE7, 0x3F7E, 0x445E, 0x4979, 0x4EC1, 0x5429, 0x59A3,\n    0x5F23, 0x6499, 0x69FA, 0x6F38, 0x7444, 0x7912, 0x7937, 0x7937,\n    0x7935, 0x7933, 0x7931, 0x792F, 0x792C, 0x7929, 0x7925, 0x7922,\n    0x791F, 0x791C, 0x7919, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0002,\n    0x0004, 0x0007, 0x000B, 0x000F, 0x0013, 0x0017, 0x001B, 0x001E,\n    0x0021, 0x0023, 0x0024, 0x0023, 0x0022, 0x001F, 0x001A, 0x0013,\n    0x000B, 0x0000, 0xFFF2, 0xFFE1, 0xFFCC, 0xFFB4, 0xFF9A, 0xFF7E,\n    0xFF61, 0xFF42, 0xFF22, 0xFF01, 0xFEE1, 0xFEC0, 0xFEA1, 0xFE82,\n    0xFE64, 0xFE49, 0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE48,\n    0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE48, 0x404B,\n    0x404B, 0x4049, 0x4047, 0x4044, 0x4041, 0x403D, 0x4039, 0x4036,\n    0x4032, 0x402F, 0x402D, 0x402B, 0x402A, 0x402A, 0x402C, 0x402F,\n    0x4033, 0x4039, 0x4041, 0x404B, 0x4060, 0x4085, 0x40B4, 0x40E8,\n    0x411D, 0x414C, 0x4170, 0x4184, 0x418E, 0x4196, 0x419E, 0x41A4,\n    0x41AA, 0x41AE, 0x41B1, 0x41B4, 0x41B5, 0x41B5, 0x41B5, 0x41B4,\n    0x41B2, 0x41AF, 0x41AC, 0x41A8, 0x41A3, 0x419E, 0x4198, 0x4192,\n    0x418B, 0x4184, 0x417F, 0x417E, 0x4180, 0x4184, 0x4189, 0x4190,\n    0x4196, 0x419B, 0x419D, 0x419E, 0x419A, 0x4192, 0x4185, 0x4172,\n    0x4157, 0x4135, 0x410A, 0x40D5, 0x4097, 0x404D, 0x3FF3, 0x3F86,\n    0x3F09, 0x3E7D, 0x3DE4, 0x3D41, 0x3C95, 0x3BE2, 0x3B2B, 0x3A70,\n    0x39B5, 0x38FB, 0x3844, 0x3793, 0x36E8, 0x3647, 0x3642, 0x3642,\n    0x3642, 0x3642, 0x3643, 0x3643, 0x3643, 0x3644, 0x3644, 0x3645,\n    0x3645, 0x3646, 0x3646, 0x0000,\n};\n\n// 0x0600B570\nstatic const u16 toad_seg6_animindex_0600B570[] = {\n    0x0001, 0x0000, 0x0064, 0x0001, 0x0064, 0x0065, 0x0001, 0x0000, 0x0001, 0x00C9, 0x0001, 0x0000,\n    0x0064, 0x0917, 0x0064, 0x097B, 0x0064, 0x09DF,\n    0x0064, 0x07EB, 0x0064, 0x084F, 0x0064, 0x08B3,\n    0x0001, 0x00CA, 0x0001, 0x00CB, 0x0001, 0x00CC,\n    0x0001, 0x07E8, 0x0001, 0x07E9, 0x0001, 0x07EA,\n    0x0001, 0x07E5, 0x0001, 0x07E6, 0x0001, 0x07E7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x07E4,\n    0x0064, 0x0589, 0x0064, 0x05ED, 0x0064, 0x0651,\n    0x0064, 0x00D9, 0x0064, 0x013D, 0x0064, 0x01A1,\n    0x0001, 0x00CD, 0x0001, 0x00CE, 0x0001, 0x00CF,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x07E3,\n    0x0064, 0x06B5, 0x0064, 0x0719, 0x0064, 0x077D,\n    0x0064, 0x0205, 0x0064, 0x0269, 0x0064, 0x02CD,\n    0x0001, 0x00D0, 0x0001, 0x00D1, 0x0001, 0x00D2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x07E2,\n    0x0064, 0x0331, 0x0064, 0x0395, 0x0064, 0x03F9,\n    0x0001, 0x00D3, 0x0001, 0x00D4, 0x0001, 0x00D5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x07E1,\n    0x0064, 0x045D, 0x0064, 0x04C1, 0x0064, 0x0525,\n    0x0001, 0x00D6, 0x0001, 0x00D7, 0x0001, 0x00D8,\n};\n\n// 0x0600B66C\nstatic const struct Animation toad_seg6_anim_0600B66C = {\n    1,\n    0,\n    0,\n    0,\n    0x64,\n    ANIMINDEX_NUMPARTS(toad_seg6_animindex_0600B570),\n    toad_seg6_animvalue_0600A0E8,\n    toad_seg6_animindex_0600B570,\n    0,\n};\n"
  },
  {
    "path": "actors/toad/anims/anim_0600CE78.inc.c",
    "content": "// 0x0600B684\nstatic const s16 toad_seg6_animvalue_0600B684[] = {\n    0x0000, 0x0050, 0x005B, 0x0062, 0x0061, 0x005B, 0x0054, 0x004C,\n    0x0045, 0x0042, 0x0046, 0x004E, 0x0056, 0x005A, 0x0056, 0x004D,\n    0x0044, 0x0041, 0x0046, 0x0050, 0x005B, 0x0062, 0x0061, 0x005B,\n    0x0054, 0x004C, 0x0045, 0x0042, 0x0046, 0x004E, 0x0056, 0x005A,\n    0x0056, 0x004D, 0x0044, 0x0041, 0x0046, 0x0050, 0x005B, 0x0062,\n    0x0061, 0x005B, 0x0054, 0x004C, 0x0045, 0x0042, 0x0046, 0x004E,\n    0x0056, 0x005A, 0x0056, 0x004D, 0x0044, 0x0041, 0x0046, 0x0050,\n    0x005B, 0x0062, 0x0061, 0x005B, 0x0054, 0x004C, 0x0045, 0x0042,\n    0x0046, 0x004E, 0x0056, 0x005A, 0x0056, 0x004D, 0x0044, 0x0041,\n    0x0046, 0x0050, 0x005B, 0x0062, 0x0061, 0x005B, 0x0054, 0x004C,\n    0x0045, 0x0042, 0x0046, 0x004E, 0x0056, 0x005A, 0x0056, 0x004D,\n    0x0044, 0x0041, 0x0046, 0x0050, 0x005B, 0x0062, 0x0063, 0x005F,\n    0x005B, 0x0054, 0x004C, 0x0045, 0x0042, 0x0046, 0x004E, 0x0056,\n    0x005A, 0x0056, 0x004D, 0x0044, 0x0041, 0x0047, 0x0052, 0x005D,\n    0x0062, 0xFD9F, 0xFD7A, 0xFD55, 0xFD2F, 0xFD0A, 0xFCE4, 0xFCBE,\n    0xFC98, 0xFC72, 0xFC4C, 0xFC26, 0xFC00, 0xFBD9, 0xFBB3, 0xFB8C,\n    0xFB66, 0xFB3F, 0xFB18, 0xFAF1, 0xFACA, 0xFAA3, 0xFA7B, 0xFA54,\n    0xFA2D, 0xFA05, 0xF9DE, 0xF9B6, 0xF98F, 0xF967, 0xF93F, 0xF918,\n    0xF8F0, 0xF8C8, 0xF8A0, 0xF878, 0xF851, 0xF829, 0xF801, 0xF7D9,\n    0xF7B1, 0xF789, 0xF761, 0xF739, 0xF711, 0xF6E9, 0xF6C1, 0xF699,\n    0xF671, 0xF649, 0xF621, 0xF5F9, 0xF5D1, 0xF5A9, 0xF581, 0xF559,\n    0xF531, 0xF509, 0xF4E2, 0xF4BA, 0xF492, 0xF46B, 0xF443, 0xF41C,\n    0xF3F4, 0xF3CD, 0xF3A6, 0xF37F, 0xF357, 0xF330, 0xF309, 0xF2E3,\n    0xF2BC, 0xF295, 0xF26E, 0xF248, 0xF222, 0xF1FB, 0xF1D5, 0xF1AF,\n    0xF189, 0xF163, 0xF13D, 0xF118, 0xF0F2, 0xF0CD, 0xF0A8, 0xF083,\n    0xF05E, 0xF039, 0xF014, 0xEFF0, 0xEFCB, 0xEFA7, 0xEF83, 0xEF5F,\n    0xEF3B, 0xEF18, 0xEEF4, 0xEED1, 0xEEAE, 0xEE8B, 0xEE69, 0xEE46,\n    0xEE24, 0xEE02, 0xEDE0, 0xEDBE, 0xED9D, 0xED7B, 0xED5A, 0xED39,\n    0xED19, 0x3FFF, 0xE004, 0xC001, 0xE001, 0xDFFD, 0x3FFF, 0x1FFF,\n    0x1FFF, 0xC001, 0x1FFF, 0xDFFD, 0x3FFF, 0x1FFF, 0x2003, 0xC001,\n    0x1FFF, 0xF04B, 0xF055, 0xF05C, 0xF061, 0xF062, 0xF04F, 0xF025,\n    0xEFFB, 0xEFE8, 0xEFEA, 0xEFEF, 0xEFF7, 0xF000, 0xF00C, 0xF018,\n    0xF025, 0xF032, 0xF03F, 0xF04A, 0xF054, 0xF05C, 0xF061, 0xF062,\n    0xF04F, 0xF025, 0xEFFB, 0xEFE8, 0xEFEA, 0xEFEF, 0xEFF7, 0xF000,\n    0xF00C, 0xF018, 0xF025, 0xF032, 0xF03F, 0xF04A, 0xF054, 0xF05C,\n    0xF061, 0xF062, 0xF04F, 0xF025, 0xEFFB, 0xEFE8, 0xEFEA, 0xEFEF,\n    0xEFF7, 0xF000, 0xF00C, 0xF018, 0xF025, 0xF032, 0xF03F, 0xF04A,\n    0xF054, 0xF05C, 0xF061, 0xF062, 0xF04F, 0xF025, 0xEFFB, 0xEFE8,\n    0xEFEA, 0xEFEF, 0xEFF7, 0xF000, 0xF00C, 0xF018, 0xF025, 0xF032,\n    0xF03F, 0xF04A, 0xF054, 0xF05C, 0xF061, 0xF062, 0xF04F, 0xF025,\n    0xEFFB, 0xEFE8, 0xEFEA, 0xEFEE, 0xEFF5, 0xEFFE, 0xF008, 0xF013,\n    0xF01F, 0xF02B, 0xF037, 0xF043, 0xF04D, 0xF056, 0xF05C, 0xF061,\n    0xF062, 0xF04F, 0xF025, 0xEFFB, 0xEFE8, 0xEFE8, 0xEFE8, 0xEFE8,\n    0xEFE8, 0xEFE8, 0xEFE8, 0xEFE8, 0xEFE8, 0xEFE8, 0xEFE8, 0xEFE8,\n    0xEFE8, 0xFBC5, 0xFBCE, 0xFBD6, 0xFBDB, 0xFBDD, 0xFBC9, 0xFB9E,\n    0xFB73, 0xFB5F, 0xFB61, 0xFB66, 0xFB6E, 0xFB78, 0xFB84, 0xFB91,\n    0xFB9E, 0xFBAB, 0xFBB8, 0xFBC4, 0xFBCE, 0xFBD6, 0xFBDB, 0xFBDD,\n    0xFBC9, 0xFB9E, 0xFB73, 0xFB5F, 0xFB61, 0xFB66, 0xFB6E, 0xFB78,\n    0xFB84, 0xFB91, 0xFB9E, 0xFBAB, 0xFBB8, 0xFBC4, 0xFBCE, 0xFBD6,\n    0xFBDB, 0xFBDD, 0xFBC9, 0xFB9E, 0xFB73, 0xFB5F, 0xFB61, 0xFB66,\n    0xFB6E, 0xFB78, 0xFB84, 0xFB91, 0xFB9E, 0xFBAB, 0xFBB8, 0xFBC4,\n    0xFBCE, 0xFBD6, 0xFBDB, 0xFBDD, 0xFBC9, 0xFB9E, 0xFB73, 0xFB5F,\n    0xFB61, 0xFB66, 0xFB6E, 0xFB78, 0xFB84, 0xFB91, 0xFB9E, 0xFBAB,\n    0xFBB8, 0xFBC4, 0xFBCE, 0xFBD6, 0xFBDB, 0xFBDD, 0xFBC9, 0xFB9E,\n    0xFB73, 0xFB5F, 0xFB61, 0xFB65, 0xFB6C, 0xFB75, 0xFB80, 0xFB8B,\n    0xFB98, 0xFBA4, 0xFBB1, 0xFBBC, 0xFBC7, 0xFBD0, 0xFBD7, 0xFBDB,\n    0xFBDD, 0xFBC9, 0xFB9E, 0xFB73, 0xFB5F, 0xFB5F, 0xFB5F, 0xFB5F,\n    0xFB5F, 0xFB5F, 0xFB5F, 0xFB5F, 0xFB5F, 0xFB5F, 0xFB5F, 0xFB5F,\n    0xFB5F, 0xF75F, 0xF779, 0xF78D, 0xF79A, 0xF79F, 0xF76B, 0xF6F7,\n    0xF684, 0xF64F, 0xF654, 0xF662, 0xF677, 0xF692, 0xF6B1, 0xF6D3,\n    0xF6F7, 0xF71B, 0xF73D, 0xF75C, 0xF777, 0xF78C, 0xF79A, 0xF79F,\n    0xF76B, 0xF6F7, 0xF684, 0xF64F, 0xF654, 0xF662, 0xF677, 0xF692,\n    0xF6B1, 0xF6D3, 0xF6F7, 0xF71B, 0xF73D, 0xF75C, 0xF777, 0xF78C,\n    0xF79A, 0xF79F, 0xF76B, 0xF6F7, 0xF684, 0xF64F, 0xF654, 0xF662,\n    0xF677, 0xF692, 0xF6B1, 0xF6D3, 0xF6F7, 0xF71B, 0xF73D, 0xF75C,\n    0xF777, 0xF78C, 0xF79A, 0xF79F, 0xF76B, 0xF6F7, 0xF684, 0xF64F,\n    0xF654, 0xF662, 0xF677, 0xF692, 0xF6B1, 0xF6D3, 0xF6F7, 0xF71B,\n    0xF73D, 0xF75C, 0xF777, 0xF78C, 0xF79A, 0xF79F, 0xF76B, 0xF6F7,\n    0xF684, 0xF64F, 0xF654, 0xF660, 0xF672, 0xF68A, 0xF6A6, 0xF6C5,\n    0xF6E6, 0xF708, 0xF729, 0xF748, 0xF764, 0xF77C, 0xF78F, 0xF79B,\n    0xF79F, 0xF76B, 0xF6F7, 0xF684, 0xF64F, 0xF64F, 0xF64F, 0xF64F,\n    0xF64F, 0xF64F, 0xF64F, 0xF64F, 0xF64F, 0xF64F, 0xF64F, 0xF64F,\n    0xF64F, 0x00D9, 0x00D6, 0x00D3, 0x00D2, 0x00D1, 0x00D8, 0x00E6,\n    0x00F5, 0x00FC, 0x00FB, 0x00F9, 0x00F7, 0x00F3, 0x00EF, 0x00EB,\n    0x00E6, 0x00E2, 0x00DE, 0x00DA, 0x00D6, 0x00D4, 0x00D2, 0x00D1,\n    0x00D8, 0x00E6, 0x00F5, 0x00FC, 0x00FB, 0x00F9, 0x00F7, 0x00F3,\n    0x00EF, 0x00EB, 0x00E6, 0x00E2, 0x00DE, 0x00DA, 0x00D6, 0x00D4,\n    0x00D2, 0x00D1, 0x00D8, 0x00E6, 0x00F5, 0x00FC, 0x00FB, 0x00F9,\n    0x00F7, 0x00F3, 0x00EF, 0x00EB, 0x00E6, 0x00E2, 0x00DE, 0x00DA,\n    0x00D6, 0x00D4, 0x00D2, 0x00D1, 0x00D8, 0x00E6, 0x00F5, 0x00FC,\n    0x00FB, 0x00F9, 0x00F7, 0x00F3, 0x00EF, 0x00EB, 0x00E6, 0x00E2,\n    0x00DE, 0x00DA, 0x00D6, 0x00D4, 0x00D2, 0x00D1, 0x00D8, 0x00E6,\n    0x00F5, 0x00FC, 0x00FB, 0x00FA, 0x00F7, 0x00F4, 0x00F1, 0x00ED,\n    0x00E9, 0x00E4, 0x00E0, 0x00DC, 0x00D9, 0x00D6, 0x00D3, 0x00D2,\n    0x00D1, 0x00D8, 0x00E6, 0x00F5, 0x00FC, 0x00FC, 0x00FC, 0x00FC,\n    0x00FC, 0x00FC, 0x00FC, 0x00FC, 0x00FC, 0x00FC, 0x00FC, 0x00FC,\n    0x00FC, 0x0097, 0x009D, 0x00A1, 0x00A4, 0x00A6, 0x009A, 0x007F,\n    0x0065, 0x0059, 0x005A, 0x005D, 0x0062, 0x0068, 0x006F, 0x0077,\n    0x007F, 0x0087, 0x008F, 0x0096, 0x009C, 0x00A1, 0x00A4, 0x00A6,\n    0x009A, 0x007F, 0x0065, 0x0059, 0x005A, 0x005D, 0x0062, 0x0068,\n    0x006F, 0x0077, 0x007F, 0x0087, 0x008F, 0x0096, 0x009C, 0x00A1,\n    0x00A4, 0x00A6, 0x009A, 0x007F, 0x0065, 0x0059, 0x005A, 0x005D,\n    0x0062, 0x0068, 0x006F, 0x0077, 0x007F, 0x0087, 0x008F, 0x0096,\n    0x009C, 0x00A1, 0x00A4, 0x00A6, 0x009A, 0x007F, 0x0065, 0x0059,\n    0x005A, 0x005D, 0x0062, 0x0068, 0x006F, 0x0077, 0x007F, 0x0087,\n    0x008F, 0x0096, 0x009C, 0x00A1, 0x00A4, 0x00A6, 0x009A, 0x007F,\n    0x0065, 0x0059, 0x005A, 0x005C, 0x0061, 0x0066, 0x006D, 0x0074,\n    0x007B, 0x0083, 0x008A, 0x0092, 0x0098, 0x009E, 0x00A2, 0x00A5,\n    0x00A6, 0x009A, 0x007F, 0x0065, 0x0059, 0x0059, 0x0059, 0x0059,\n    0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059, 0x0059,\n    0x0059, 0xEF40, 0xEE36, 0xED67, 0xECE0, 0xECB0, 0xEECA, 0xF369,\n    0xF808, 0xFA22, 0xF9EF, 0xF963, 0xF88B, 0xF777, 0xF636, 0xF4D7,\n    0xF369, 0xF1FB, 0xF09C, 0xEF5B, 0xEE47, 0xED6F, 0xECE2, 0xECB0,\n    0xEECA, 0xF369, 0xF808, 0xFA22, 0xF9EF, 0xF963, 0xF88B, 0xF777,\n    0xF636, 0xF4D7, 0xF369, 0xF1FB, 0xF09C, 0xEF5B, 0xEE47, 0xED6F,\n    0xECE2, 0xECB0, 0xEECA, 0xF369, 0xF808, 0xFA22, 0xF9EF, 0xF963,\n    0xF88B, 0xF777, 0xF636, 0xF4D7, 0xF369, 0xF1FB, 0xF09C, 0xEF5B,\n    0xEE47, 0xED6F, 0xECE2, 0xECB0, 0xEECA, 0xF369, 0xF808, 0xFA22,\n    0xF9EF, 0xF963, 0xF88B, 0xF777, 0xF636, 0xF4D7, 0xF369, 0xF1FB,\n    0xF09C, 0xEF5B, 0xEE47, 0xED6F, 0xECE2, 0xECB0, 0xEECA, 0xF369,\n    0xF808, 0xFA22, 0xF9F6, 0xF97A, 0xF8BC, 0xF7C6, 0xF6A5, 0xF566,\n    0xF415, 0xF2BD, 0xF16C, 0xF02C, 0xEF0C, 0xEE16, 0xED58, 0xECDC,\n    0xECB0, 0xEECA, 0xF369, 0xF808, 0xFA22, 0xFA22, 0xFA22, 0xFA22,\n    0xFA22, 0xFA22, 0xFA22, 0xFA22, 0xFA22, 0xFA22, 0xFA22, 0xFA22,\n    0xFA22, 0xF992, 0xF991, 0xF990, 0xF990, 0xF98F, 0xF98F, 0xF98F,\n    0xF98E, 0xF98E, 0xF98E, 0xF98E, 0xF98E, 0xF98E, 0xF98E, 0xF98E,\n    0xF98E, 0xF98F, 0xF98F, 0xF98F, 0xF990, 0xF990, 0xF990, 0xF991,\n    0xF991, 0xF992, 0xF992, 0xF993, 0xF993, 0xF994, 0xF994, 0xF995,\n    0xF996, 0xF996, 0xF997, 0xF998, 0xF998, 0xF999, 0xF999, 0xF99A,\n    0xF99B, 0xF99B, 0xF99C, 0xF99D, 0xF99D, 0xF99E, 0xF99E, 0xF99F,\n    0xF99F, 0xF9A0, 0xF9A0, 0xF9A0, 0xF9A1, 0xF9A1, 0xF9A1, 0xF9A2,\n    0xF9A2, 0xF9A2, 0xF9A2, 0xF9A2, 0xF9A2, 0xF9A2, 0xF9A2, 0xF9A2,\n    0xF9A2, 0xF9A2, 0xF9A2, 0xF9A2, 0xF9A2, 0xF9A2, 0xF9A2, 0xF9A2,\n    0xF9A2, 0xF9A2, 0xF9A2, 0xF9A2, 0xF9A2, 0xF9A2, 0xF9A2, 0xF9A2,\n    0xF9A2, 0xF9A2, 0xF9A2, 0xF9A2, 0xF9A2, 0xF9A2, 0xF9A2, 0xF9A2,\n    0xF9A2, 0xF9A2, 0xF9A2, 0xF9A2, 0xF9A2, 0xF9A2, 0xF9A2, 0xF9A2,\n    0xF9A2, 0xF9A2, 0xF9A2, 0xF9A2, 0xF9A2, 0xF9A2, 0xF9A2, 0xF9A2,\n    0xF9A2, 0xF9A2, 0xF9A2, 0xF9A2, 0xF9A2, 0xF9A2, 0xF9A2, 0xF9A2,\n    0xF9A2, 0xE65D, 0xE655, 0xE64E, 0xE647, 0xE642, 0xE63D, 0xE639,\n    0xE636, 0xE633, 0xE631, 0xE630, 0xE630, 0xE630, 0xE631, 0xE633,\n    0xE635, 0xE638, 0xE63B, 0xE63E, 0xE643, 0xE647, 0xE64C, 0xE651,\n    0xE657, 0xE65D, 0xE663, 0xE66A, 0xE671, 0xE678, 0xE67F, 0xE686,\n    0xE68E, 0xE696, 0xE69D, 0xE6A5, 0xE6AD, 0xE6B5, 0xE6BC, 0xE6C4,\n    0xE6CC, 0xE6D3, 0xE6DB, 0xE6E2, 0xE6E9, 0xE6F0, 0xE6F6, 0xE6FD,\n    0xE703, 0xE708, 0xE70E, 0xE713, 0xE717, 0xE71B, 0xE71F, 0xE722,\n    0xE725, 0xE727, 0xE728, 0xE729, 0xE72A, 0xE72A, 0xE72A, 0xE72A,\n    0xE72A, 0xE72A, 0xE72A, 0xE72A, 0xE72A, 0xE72A, 0xE72A, 0xE72A,\n    0xE72A, 0xE72A, 0xE72A, 0xE72A, 0xE72A, 0xE72A, 0xE72A, 0xE72A,\n    0xE72A, 0xE72A, 0xE72A, 0xE72A, 0xE72A, 0xE72A, 0xE72A, 0xE72A,\n    0xE72A, 0xE72A, 0xE72A, 0xE72A, 0xE72A, 0xE72A, 0xE72A, 0xE72A,\n    0xE72A, 0xE72A, 0xE72A, 0xE72A, 0xE72A, 0xE72A, 0xE72A, 0xE72A,\n    0xE72A, 0xE72A, 0xE72A, 0xE72A, 0xE72A, 0xE72A, 0xE72A, 0xE72A,\n    0xE72A, 0xCF84, 0xCF85, 0xCF86, 0xCF88, 0xCF88, 0xCF89, 0xCF8A,\n    0xCF8B, 0xCF8B, 0xCF8B, 0xCF8B, 0xCF8B, 0xCF8B, 0xCF8B, 0xCF8B,\n    0xCF8B, 0xCF8A, 0xCF8A, 0xCF89, 0xCF88, 0xCF88, 0xCF87, 0xCF86,\n    0xCF85, 0xCF84, 0xCF83, 0xCF82, 0xCF81, 0xCF7F, 0xCF7E, 0xCF7D,\n    0xCF7C, 0xCF7A, 0xCF79, 0xCF78, 0xCF76, 0xCF75, 0xCF74, 0xCF72,\n    0xCF71, 0xCF70, 0xCF6F, 0xCF6D, 0xCF6C, 0xCF6B, 0xCF6A, 0xCF69,\n    0xCF68, 0xCF67, 0xCF66, 0xCF65, 0xCF64, 0xCF64, 0xCF63, 0xCF63,\n    0xCF62, 0xCF62, 0xCF61, 0xCF61, 0xCF61, 0xCF61, 0xCF61, 0xCF61,\n    0xCF61, 0xCF61, 0xCF61, 0xCF61, 0xCF61, 0xCF61, 0xCF61, 0xCF61,\n    0xCF61, 0xCF61, 0xCF61, 0xCF61, 0xCF61, 0xCF61, 0xCF61, 0xCF61,\n    0xCF61, 0xCF61, 0xCF61, 0xCF61, 0xCF61, 0xCF61, 0xCF61, 0xCF61,\n    0xCF61, 0xCF61, 0xCF61, 0xCF61, 0xCF61, 0xCF61, 0xCF61, 0xCF61,\n    0xCF61, 0xCF61, 0xCF61, 0xCF61, 0xCF61, 0xCF61, 0xCF61, 0xCF61,\n    0xCF61, 0xCF61, 0xCF61, 0xCF61, 0xCF61, 0xCF61, 0xCF61, 0xCF61,\n    0xCF61, 0x0D81, 0x0D96, 0x0DAC, 0x0DC3, 0x0DDB, 0x0DF4, 0x0E0E,\n    0x0E29, 0x0E45, 0x0E61, 0x0E7F, 0x0E9D, 0x0EBB, 0x0EDA, 0x0EFA,\n    0x0F1A, 0x0F3A, 0x0F5B, 0x0F7C, 0x0F9E, 0x0FBF, 0x0FE1, 0x1003,\n    0x1025, 0x1046, 0x1068, 0x108A, 0x10AB, 0x10CC, 0x10ED, 0x110E,\n    0x112E, 0x114D, 0x116C, 0x118B, 0x11A9, 0x11C6, 0x11E3, 0x11FF,\n    0x1219, 0x1234, 0x124D, 0x1265, 0x127C, 0x1292, 0x12A7, 0x12BA,\n    0x12CD, 0x12DE, 0x12ED, 0x12FC, 0x1308, 0x1314, 0x131D, 0x1325,\n    0x132C, 0x1330, 0x1333, 0x1334, 0x0CF4, 0x0D04, 0x0D31, 0x0D77,\n    0x0DD4, 0x0E41, 0x0EBD, 0x0F42, 0x0FCD, 0x105A, 0x10E5, 0x116B,\n    0x11E6, 0x1254, 0x12B0, 0x12F7, 0x1324, 0x1334, 0x0CF4, 0x0D02,\n    0x0D2A, 0x0D6A, 0x0DBE, 0x0E21, 0x0E92, 0x0F0D, 0x0F8F, 0x1014,\n    0x1099, 0x111A, 0x1195, 0x1206, 0x126A, 0x12BD, 0x12FD, 0x1326,\n    0x1334, 0x0CF4, 0x0CF4, 0x0CF4, 0x0CF4, 0x0CF4, 0x0CF4, 0x0CF4,\n    0x0CF4, 0x0CF4, 0x0CF4, 0x0CF4, 0x0CF4, 0x0CF4, 0x0CF4, 0x0CF4,\n    0x0CF4, 0x20E7, 0x210D, 0x2135, 0x215E, 0x218A, 0x21B8, 0x21E7,\n    0x2218, 0x224A, 0x227E, 0x22B3, 0x22E9, 0x2320, 0x2359, 0x2392,\n    0x23CC, 0x2407, 0x2443, 0x247F, 0x24BB, 0x24F8, 0x2535, 0x2572,\n    0x25B0, 0x25ED, 0x262A, 0x2667, 0x26A3, 0x26DF, 0x271B, 0x2756,\n    0x2790, 0x27C9, 0x2802, 0x2839, 0x286F, 0x28A4, 0x28D8, 0x290A,\n    0x293B, 0x296A, 0x2998, 0x29C4, 0x29ED, 0x2A15, 0x2A3B, 0x2A5F,\n    0x2A80, 0x2A9F, 0x2ABB, 0x2AD5, 0x2AEC, 0x2B00, 0x2B12, 0x2B21,\n    0x2B2C, 0x2B34, 0x2B39, 0x2B3B, 0x1FE7, 0x2004, 0x2056, 0x20D6,\n    0x217D, 0x2244, 0x2324, 0x2415, 0x2511, 0x2611, 0x270D, 0x27FE,\n    0x28DE, 0x29A5, 0x2A4C, 0x2ACC, 0x2B1E, 0x2B3B, 0x1FE7, 0x2001,\n    0x204A, 0x20BE, 0x2155, 0x220A, 0x22D7, 0x23B6, 0x24A0, 0x2591,\n    0x2682, 0x276C, 0x284B, 0x2918, 0x29CD, 0x2A64, 0x2AD8, 0x2B21,\n    0x2B3B, 0x1FE7, 0x1FE7, 0x1FE7, 0x1FE7, 0x1FE7, 0x1FE7, 0x1FE7,\n    0x1FE7, 0x1FE7, 0x1FE7, 0x1FE7, 0x1FE7, 0x1FE7, 0x1FE7, 0x1FE7,\n    0x1FE7, 0xB89F, 0xB8B9, 0xB8D4, 0xB8F1, 0xB90F, 0xB92E, 0xB94F,\n    0xB970, 0xB993, 0xB9B6, 0xB9DA, 0xB9FF, 0xBA25, 0xBA4C, 0xBA73,\n    0xBA9B, 0xBAC4, 0xBAEC, 0xBB15, 0xBB3F, 0xBB69, 0xBB92, 0xBBBC,\n    0xBBE6, 0xBC10, 0xBC3A, 0xBC64, 0xBC8D, 0xBCB6, 0xBCDF, 0xBD07,\n    0xBD2F, 0xBD57, 0xBD7D, 0xBDA3, 0xBDC8, 0xBDED, 0xBE10, 0xBE33,\n    0xBE54, 0xBE74, 0xBE94, 0xBEB2, 0xBECE, 0xBEE9, 0xBF03, 0xBF1C,\n    0xBF32, 0xBF48, 0xBF5B, 0xBF6D, 0xBF7D, 0xBF8B, 0xBF97, 0xBFA1,\n    0xBFA8, 0xBFAE, 0xBFB2, 0xBFB3, 0xB7F0, 0xB804, 0xB83C, 0xB894,\n    0xB906, 0xB98E, 0xBA28, 0xBACD, 0xBB7A, 0xBC29, 0xBCD6, 0xBD7B,\n    0xBE14, 0xBE9D, 0xBF0F, 0xBF67, 0xBF9F, 0xBFB3, 0xB7F0, 0xB802,\n    0xB834, 0xB883, 0xB8EB, 0xB967, 0xB9F3, 0xBA8C, 0xBB2C, 0xBBD1,\n    0xBC76, 0xBD17, 0xBDB0, 0xBE3C, 0xBEB8, 0xBF20, 0xBF6F, 0xBFA1,\n    0xBFB3, 0xB7F0, 0xB7F0, 0xB7F0, 0xB7F0, 0xB7F0, 0xB7F0, 0xB7F0,\n    0xB7F0, 0xB7F0, 0xB7F0, 0xB7F0, 0xB7F0, 0xB7F0, 0xB7F0, 0xB7F0,\n    0xB7F0, 0xF70E, 0xF8E6, 0xF92F, 0xF3B3, 0xED91, 0xEC4E, 0xEC36,\n    0xEC91, 0xECA7, 0xEC21, 0xEB6F, 0xEAFD, 0xEB39, 0xEC68, 0xEE44,\n    0xF062, 0xF258, 0xF48B, 0xF709, 0xF8E4, 0xF92F, 0xF3B3, 0xED91,\n    0xEC4E, 0xEC36, 0xEC91, 0xECA7, 0xEC21, 0xEB6F, 0xEAFD, 0xEB39,\n    0xEC68, 0xEE44, 0xF062, 0xF258, 0xF48B, 0xF709, 0xF8E4, 0xF92F,\n    0xF3B3, 0xED91, 0xEC4E, 0xEC36, 0xEC91, 0xECA7, 0xEC21, 0xEB6F,\n    0xEAFD, 0xEB39, 0xEC68, 0xEE44, 0xF062, 0xF258, 0xF48B, 0xF709,\n    0xF8E4, 0xF92F, 0xF3B3, 0xED91, 0xEC4E, 0xEC36, 0xEC91, 0xECA7,\n    0xEC21, 0xEB6F, 0xEAFD, 0xEB39, 0xEC68, 0xEE44, 0xF062, 0xF258,\n    0xF48B, 0xF709, 0xF8E4, 0xF92F, 0xF3B3, 0xED91, 0xEC4E, 0xEC36,\n    0xEC91, 0xECA7, 0xEC21, 0xEB6F, 0xEAFD, 0xEB39, 0xEC68, 0xEE44,\n    0xF062, 0xF258, 0xF486, 0xF6FA, 0xF8D4, 0xF92F, 0xF645, 0xF139,\n    0xED91, 0xEC79, 0xEC5C, 0xECA0, 0xECA7, 0xEC21, 0xEB6F, 0xEAFD,\n    0xEB39, 0xEC68, 0xEE44, 0xF062, 0xF258, 0xF465, 0xF6A3, 0xF871,\n    0xF92F, 0x07F2, 0x0B0F, 0x0D4C, 0x0CFC, 0x0B21, 0x09D8, 0x089E,\n    0x06F9, 0x0471, 0xFFC8, 0xF9A8, 0xF477, 0xF293, 0xF477, 0xF891,\n    0xFD68, 0x0186, 0x04E6, 0x083E, 0x0B2B, 0x0D4C, 0x0CFC, 0x0B21,\n    0x09CD, 0x0880, 0x06D8, 0x0471, 0x0062, 0xFB1B, 0xF638, 0xF357,\n    0xF40A, 0xF7F3, 0xFD1C, 0x0186, 0x04F6, 0x084C, 0x0B31, 0x0D4C,\n    0x0CFC, 0x0B21, 0x09C9, 0x0876, 0x06CD, 0x0471, 0x00A7, 0xFBC4,\n    0xF6FD, 0xF38B, 0xF2C6, 0xF676, 0xFC6B, 0x0186, 0x051D, 0x086F,\n    0x0B3E, 0x0D4C, 0x0CFC, 0x0B21, 0x09CF, 0x0887, 0x06E0, 0x0471,\n    0x004C, 0xFAE3, 0xF5DA, 0xF2D7, 0xF37B, 0xF78C, 0xFCF1, 0x0186,\n    0x0502, 0x0857, 0x0B35, 0x0D4C, 0x0CFC, 0x0B21, 0x09D5, 0x0896,\n    0x06F1, 0x0471, 0xFFEB, 0xF9FC, 0xF4E1, 0xF2D6, 0xF492, 0xF899,\n    0xFD6A, 0x0186, 0x04F0, 0x085A, 0x0B4C, 0x0D4C, 0x0DA0, 0x0C8F,\n    0x0B21, 0x09EB, 0x089D, 0x06E4, 0x0471, 0x006B, 0xFB31, 0xF63B,\n    0xF309, 0xF339, 0xF738, 0xFCCA, 0x0186, 0x0558, 0x092B, 0x0C1E,\n    0x0D4C, 0xD4F1, 0xDD02, 0xE196, 0xE1CC, 0xDF44, 0xDB23, 0xD689,\n    0xD09C, 0xC887, 0xC1E7, 0xBAEA, 0xB4EF, 0xB154, 0xB1AC, 0xB681,\n    0xBDAA, 0xC4D3, 0xCC78, 0xD537, 0xDCF5, 0xE196, 0xE0AC, 0xDBA1,\n    0xD61E, 0xD1FE, 0xCDAE, 0xC887, 0xC0EA, 0xB827, 0xB205, 0xB16E,\n    0xB434, 0xB904, 0xBEE2, 0xC4D3, 0xCC22, 0xD50E, 0xDD0E, 0xE196,\n    0xE182, 0xDE60, 0xD9AE, 0xD4EB, 0xCF2A, 0xC887, 0xC241, 0xBB79,\n    0xB591, 0xB1ED, 0xB21F, 0xB6C3, 0xBDC2, 0xC4D3, 0xCC8A, 0xD574,\n    0xDD3E, 0xE196, 0xE128, 0xDD69, 0xD82E, 0xD34E, 0xCE42, 0xC887,\n    0xC1D7, 0xBA67, 0xB43F, 0xB16A, 0xB30B, 0xB7DC, 0xBE4F, 0xC4D3,\n    0xCC58, 0xD53F, 0xDD21, 0xE196, 0xE188, 0xDE73, 0xD9CD, 0xD50A,\n    0xCF49, 0xC887, 0xC227, 0xBB40, 0xB538, 0xB172, 0xB18C, 0xB653,\n    0xBD92, 0xC4D3, 0xCC98, 0xD581, 0xDD43, 0xE196, 0xE16B, 0xDE40,\n    0xD99C, 0xD507, 0xD152, 0xCD47, 0xC887, 0xC1F4, 0xBA4C, 0xB40B,\n    0xB1A9, 0xB3A0, 0xB85E, 0xBE8C, 0xC4D3, 0xCCA1, 0xD626, 0xDE32,\n    0xE196, 0x07B5, 0x078F, 0x085A, 0x0CF4, 0x113E, 0x114D, 0x103E,\n    0x0EB5, 0x0D55, 0x0C11, 0x0AA1, 0x0950, 0x0868, 0x0816, 0x082B,\n    0x0865, 0x0885, 0x0838, 0x07B5, 0x078F, 0x085A, 0x0CF4, 0x113E,\n    0x114D, 0x103E, 0x0EB5, 0x0D55, 0x0C11, 0x0AA1, 0x0950, 0x0868,\n    0x0816, 0x082B, 0x0865, 0x0885, 0x0838, 0x07B5, 0x078F, 0x085A,\n    0x0CF4, 0x113E, 0x114D, 0x103E, 0x0EB5, 0x0D55, 0x0C11, 0x0AA1,\n    0x0950, 0x0868, 0x0816, 0x082B, 0x0865, 0x0885, 0x0838, 0x07B5,\n    0x078F, 0x085A, 0x0CF4, 0x113E, 0x114D, 0x103E, 0x0EB5, 0x0D55,\n    0x0C11, 0x0AA1, 0x0950, 0x0868, 0x0816, 0x082B, 0x0865, 0x0885,\n    0x0838, 0x07B5, 0x078F, 0x085A, 0x0CF4, 0x113E, 0x114D, 0x103E,\n    0x0EB5, 0x0D55, 0x0C11, 0x0AA1, 0x0950, 0x0868, 0x0816, 0x082B,\n    0x0865, 0x0885, 0x0842, 0x07CF, 0x07AD, 0x085A, 0x0B0D, 0x0EE6,\n    0x113E, 0x113C, 0x102F, 0x0EAF, 0x0D55, 0x0C11, 0x0AA1, 0x0950,\n    0x0868, 0x0816, 0x082B, 0x0865, 0x0885, 0x087E, 0x086F, 0x0860,\n    0x085A, 0x017A, 0x044E, 0x06F1, 0x099F, 0x0A82, 0x0904, 0x06C4,\n    0x03E7, 0x0091, 0xFBC3, 0xF5B3, 0xF05A, 0xEDB1, 0xEED9, 0xF290,\n    0xF740, 0xFB52, 0xFE7A, 0x017A, 0x044E, 0x06F1, 0x099F, 0x0A82,\n    0x0904, 0x06C4, 0x03E7, 0x0091, 0xFBC3, 0xF5B3, 0xF05A, 0xEDB1,\n    0xEED9, 0xF290, 0xF740, 0xFB52, 0xFE7A, 0x017A, 0x044E, 0x06F1,\n    0x099F, 0x0A82, 0x0904, 0x06C4, 0x03E7, 0x0091, 0xFBC3, 0xF5B3,\n    0xF05A, 0xEDB1, 0xEED9, 0xF290, 0xF740, 0xFB52, 0xFE7A, 0x017A,\n    0x044E, 0x06F1, 0x099F, 0x0A82, 0x0904, 0x06C4, 0x03E7, 0x0091,\n    0xFBC3, 0xF5B3, 0xF05A, 0xEDB1, 0xEED9, 0xF290, 0xF740, 0xFB52,\n    0xFE7A, 0x017A, 0x044E, 0x06F1, 0x099F, 0x0A82, 0x0904, 0x06C4,\n    0x03E7, 0x0091, 0xFBC3, 0xF5B3, 0xF05A, 0xEDB1, 0xEED9, 0xF290,\n    0xF740, 0xFB52, 0xFE8C, 0x01A8, 0x0482, 0x06F1, 0x0908, 0x0A78,\n    0x0A82, 0x091A, 0x06D8, 0x03EE, 0x0091, 0xFBC3, 0xF5B3, 0xF05A,\n    0xEDB1, 0xEED9, 0xF290, 0xF740, 0xFB52, 0xFEF4, 0x02BE, 0x05BB,\n    0x06F1, 0xA800, 0x9FAD, 0x9A53, 0x9EC3, 0xA7CB, 0xACC6, 0xB114,\n    0xB5FD, 0xBCC7, 0xC884, 0xD7BB, 0xE4E5, 0xEA7D, 0xE533, 0xD897,\n    0xC96E, 0xBC7B, 0xB207, 0xA800, 0x9FAD, 0x9A53, 0x9EC3, 0xA7CB,\n    0xACC6, 0xB114, 0xB5FD, 0xBCC7, 0xC884, 0xD7BB, 0xE4E5, 0xEA7D,\n    0xE533, 0xD897, 0xC96E, 0xBC7B, 0xB207, 0xA800, 0x9FAD, 0x9A53,\n    0x9EC3, 0xA7CB, 0xACC6, 0xB114, 0xB5FD, 0xBCC7, 0xC884, 0xD7BB,\n    0xE4E5, 0xEA7D, 0xE533, 0xD897, 0xC96E, 0xBC7B, 0xB207, 0xA800,\n    0x9FAD, 0x9A53, 0x9EC3, 0xA7CB, 0xACC6, 0xB114, 0xB5FD, 0xBCC7,\n    0xC884, 0xD7BB, 0xE4E5, 0xEA7D, 0xE533, 0xD897, 0xC96E, 0xBC7B,\n    0xB207, 0xA800, 0x9FAD, 0x9A53, 0x9EC3, 0xA7CB, 0xACC6, 0xB114,\n    0xB5FD, 0xBCC7, 0xC884, 0xD7BB, 0xE4E5, 0xEA7D, 0xE533, 0xD897,\n    0xC96E, 0xBC7B, 0xB1EF, 0xA7C1, 0x9F67, 0x9A53, 0x9B68, 0xA175,\n    0xA7CB, 0xAC50, 0xB0AB, 0xB5D6, 0xBCC7, 0xC884, 0xD7BB, 0xE4E5,\n    0xEA7D, 0xE533, 0xD897, 0xC96E, 0xBC7B, 0xB161, 0xA647, 0x9DBD,\n    0x9A53, 0xBFB5, 0xBFB5, 0xBFB5, 0xBFB5, 0xDFDE, 0xC001, 0xDFDB,\n    0xDFDE, 0xC001, 0xDFDB, 0x1630, 0x162C, 0x1629, 0x1627, 0x1627,\n    0x162C, 0x1634, 0x163E, 0x1646, 0x164A, 0x1646, 0x163B, 0x1631,\n    0x162D, 0x1632, 0x163D, 0x1648, 0x164C, 0x1648, 0x163F, 0x1635,\n    0x162C, 0x1627, 0x162B, 0x1635, 0x163F, 0x1643, 0x163B, 0x162D,\n    0x161F, 0x161A, 0x1625, 0x1639, 0x164C, 0x1653, 0x163F, 0x161B,\n    0x1605, 0x160A, 0x161C, 0x1627, 0x1629, 0x162A, 0x162A, 0x162A,\n    0x162A, 0x162A, 0x1629, 0x1629, 0x1628, 0x1627, 0x1626, 0x1626,\n    0x1625, 0x1625, 0x1625, 0x1625, 0x1626, 0x1627, 0x162B, 0x1632,\n    0x163B, 0x1642, 0x1647, 0x1644, 0x163E, 0x1639, 0x1639, 0x163A,\n    0x163A, 0x1638, 0x1634, 0x1630, 0x162C, 0x1629, 0x1627, 0x1627,\n    0x162B, 0x1632, 0x163A, 0x1642, 0x1647, 0x1644, 0x163E, 0x1639,\n    0x1639, 0x163A, 0x163A, 0x1638, 0x1635, 0x1632, 0x162E, 0x162B,\n    0x1629, 0x1627, 0x1627, 0x162B, 0x1632, 0x163A, 0x1642, 0x1647,\n    0x1644, 0x163E, 0x1639, 0x1638, 0x1639, 0x163A, 0x163A, 0x163A,\n    0x163A, 0x163A, 0x163A, 0x017F, 0x0206, 0x0278, 0x02BF, 0x02C2,\n    0x023D, 0x0136, 0x0005, 0xFF06, 0xFE91, 0xFF13, 0x0048, 0x0188,\n    0x0225, 0x01B6, 0x00AA, 0xFF9F, 0xFF2E, 0xFF9E, 0x008C, 0x019F,\n    0x027A, 0x02C2, 0x01F4, 0x0057, 0xFEC4, 0xFE0E, 0xFEC2, 0x0052,\n    0x01EF, 0x02CA, 0x0265, 0x0146, 0x0021, 0xFFAB, 0x0099, 0x0252,\n    0x0387, 0x0391, 0x0317, 0x02C2, 0x02BC, 0x02BC, 0x02C2, 0x02CB,\n    0x02D7, 0x02E5, 0x02F4, 0x0304, 0x0312, 0x031E, 0x0328, 0x032D,\n    0x032E, 0x0328, 0x031C, 0x0307, 0x02EA, 0x02C2, 0x0240, 0x0148,\n    0x002A, 0xFF38, 0xFEBD, 0xFF62, 0x00C3, 0x01AC, 0x016A, 0x00AF,\n    0x0052, 0x008E, 0x00F8, 0x017C, 0x0202, 0x0275, 0x02BC, 0x02C2,\n    0x0247, 0x0150, 0x0030, 0xFF39, 0xFEBD, 0xFF62, 0x00C3, 0x01AC,\n    0x016B, 0x00B0, 0x0052, 0x0084, 0x00DC, 0x014C, 0x01C3, 0x0233,\n    0x028E, 0x02C2, 0x02C2, 0x0249, 0x0152, 0x0031, 0xFF3A, 0xFEBD,\n    0xFF62, 0x00C3, 0x01AC, 0x0170, 0x00BB, 0x0052, 0x0052, 0x0052,\n    0x0052, 0x0052, 0x0052, 0xFB36, 0xFA58, 0xF99C, 0xF928, 0xF922,\n    0xF9FC, 0xFBAE, 0xFDA3, 0xFF48, 0x0007, 0xFF32, 0xFD34, 0xFB26,\n    0xFA22, 0xFAD9, 0xFC92, 0xFE4B, 0xFF05, 0xFE4D, 0xFCC5, 0xFB01,\n    0xF998, 0xF922, 0xFA75, 0xFD1C, 0xFFB4, 0x00DE, 0xFFB5, 0xFD21,\n    0xFA78, 0xF910, 0xF9B7, 0xFB90, 0xFD72, 0xFE37, 0xFCAC, 0xF9D4,\n    0xF7D6, 0xF7C8, 0xF895, 0xF922, 0xF92C, 0xF92C, 0xF924, 0xF915,\n    0xF901, 0xF8EA, 0xF8D1, 0xF8B7, 0xF8A0, 0xF88B, 0xF87C, 0xF873,\n    0xF872, 0xF87B, 0xF88F, 0xF8B1, 0xF8E1, 0xF922, 0xF9F8, 0xFB90,\n    0xFD66, 0xFEF7, 0xFFC0, 0xFEB1, 0xFC6A, 0xFAEC, 0xFB58, 0xFC8C,\n    0xFD24, 0xFCC2, 0xFC13, 0xFB3A, 0xFA5D, 0xF9A2, 0xF92C, 0xF922,\n    0xF9EC, 0xFB83, 0xFD5D, 0xFEF4, 0xFFC0, 0xFEB1, 0xFC6A, 0xFAEC,\n    0xFB57, 0xFC8A, 0xFD24, 0xFCD2, 0xFC41, 0xFB8A, 0xFAC6, 0xFA0D,\n    0xF979, 0xF922, 0xF922, 0xF9EA, 0xFB80, 0xFD5B, 0xFEF3, 0xFFC0,\n    0xFEB1, 0xFC6A, 0xFAEC, 0xFB4E, 0xFC78, 0xFD24, 0xFD24, 0xFD24,\n    0xFD24, 0xFD24, 0xFD24, 0x7917, 0x7915, 0x7913, 0x7912, 0x7912,\n    0x7937, 0x7936, 0x7935, 0x7933, 0x7930, 0x792E, 0x792B, 0x7928,\n    0x7925, 0x7922, 0x791F, 0x791C, 0x7919, 0x7917, 0x7915, 0x7913,\n    0x7912, 0x7912, 0x7937, 0x7936, 0x7935, 0x7933, 0x7930, 0x792E,\n    0x792B, 0x7928, 0x7925, 0x7922, 0x791F, 0x791C, 0x7919, 0x7917,\n    0x7915, 0x7913, 0x7912, 0x7912, 0x7937, 0x7936, 0x7935, 0x7933,\n    0x7930, 0x792E, 0x792B, 0x7928, 0x7925, 0x7922, 0x791F, 0x791C,\n    0x7919, 0x7917, 0x7915, 0x7913, 0x7912, 0x7912, 0x7937, 0x7936,\n    0x7935, 0x7933, 0x7930, 0x792E, 0x792B, 0x7928, 0x7925, 0x7922,\n    0x791F, 0x791C, 0x7919, 0x7917, 0x7915, 0x7913, 0x7912, 0x7912,\n    0x7937, 0x7936, 0x7935, 0x7933, 0x7931, 0x792F, 0x792C, 0x7929,\n    0x7926, 0x7923, 0x7920, 0x791D, 0x791B, 0x7918, 0x7916, 0x7914,\n    0x7913, 0x7912, 0x7937, 0x7937, 0x7937, 0x7937, 0x7937, 0x7937,\n    0x7937, 0x7937, 0x7937, 0x7937, 0x7937, 0x7937, 0x7937, 0x7937,\n    0x7937, 0x7937, 0x7937, 0xFE49, 0xFE49, 0xFE49, 0xFE49, 0xFE49,\n    0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE48,\n    0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE49, 0xFE49, 0xFE49,\n    0xFE49, 0xFE49, 0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE48,\n    0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE49,\n    0xFE49, 0xFE49, 0xFE49, 0xFE49, 0xFE48, 0xFE48, 0xFE48, 0xFE48,\n    0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE48,\n    0xFE48, 0xFE49, 0xFE49, 0xFE49, 0xFE49, 0xFE49, 0xFE48, 0xFE48,\n    0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE48,\n    0xFE48, 0xFE48, 0xFE48, 0xFE49, 0xFE49, 0xFE49, 0xFE49, 0xFE49,\n    0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE48,\n    0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE49, 0xFE49,\n    0xFE49, 0xFE49, 0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE48,\n    0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE48,\n    0xFE48, 0xFE48, 0xFE48, 0x3646, 0x3646, 0x3647, 0x3647, 0x3647,\n    0x3642, 0x3642, 0x3642, 0x3642, 0x3643, 0x3643, 0x3644, 0x3644,\n    0x3644, 0x3645, 0x3645, 0x3646, 0x3646, 0x3646, 0x3647, 0x3647,\n    0x3647, 0x3647, 0x3642, 0x3642, 0x3642, 0x3642, 0x3643, 0x3643,\n    0x3644, 0x3644, 0x3644, 0x3645, 0x3645, 0x3646, 0x3646, 0x3646,\n    0x3647, 0x3647, 0x3647, 0x3647, 0x3642, 0x3642, 0x3642, 0x3642,\n    0x3643, 0x3643, 0x3644, 0x3644, 0x3644, 0x3645, 0x3645, 0x3646,\n    0x3646, 0x3646, 0x3647, 0x3647, 0x3647, 0x3647, 0x3642, 0x3642,\n    0x3642, 0x3642, 0x3643, 0x3643, 0x3644, 0x3644, 0x3644, 0x3645,\n    0x3645, 0x3646, 0x3646, 0x3646, 0x3647, 0x3647, 0x3647, 0x3647,\n    0x3642, 0x3642, 0x3642, 0x3642, 0x3643, 0x3643, 0x3643, 0x3644,\n    0x3644, 0x3645, 0x3645, 0x3645, 0x3646, 0x3646, 0x3646, 0x3647,\n    0x3647, 0x3647, 0x3642, 0x3642, 0x3642, 0x3642, 0x3642, 0x3642,\n    0x3642, 0x3642, 0x3642, 0x3642, 0x3642, 0x3642, 0x3642, 0x3642,\n    0x3642, 0x3642, 0x3642, 0x0000,\n};\n\n// 0x0600CD7C\nstatic const u16 toad_seg6_animindex_0600CD7C[] = {\n    0x0001, 0x0000, 0x0070, 0x0001, 0x0070, 0x0071, 0x0001, 0x0000, 0x0001, 0x00E1, 0x0001, 0x0000,\n    0x0070, 0x0A2B, 0x0070, 0x0A9B, 0x0070, 0x0B0B,\n    0x0070, 0x08DB, 0x0070, 0x094B, 0x0070, 0x09BB,\n    0x0001, 0x00E2, 0x0001, 0x00E3, 0x0001, 0x00E4,\n    0x0001, 0x08D8, 0x0001, 0x08D9, 0x0001, 0x08DA,\n    0x0001, 0x08D5, 0x0001, 0x08D6, 0x0001, 0x08D7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x08D4,\n    0x0070, 0x0631, 0x0070, 0x06A1, 0x0070, 0x0711,\n    0x0070, 0x00F1, 0x0070, 0x0161, 0x0070, 0x01D1,\n    0x0001, 0x00E5, 0x0001, 0x00E6, 0x0001, 0x00E7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x08D3,\n    0x0070, 0x0781, 0x0070, 0x07F1, 0x0070, 0x0861,\n    0x0070, 0x0241, 0x0070, 0x02B1, 0x0070, 0x0321,\n    0x0001, 0x00E8, 0x0001, 0x00E9, 0x0001, 0x00EA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x08D2,\n    0x0070, 0x0391, 0x0070, 0x0401, 0x0070, 0x0471,\n    0x0001, 0x00EB, 0x0001, 0x00EC, 0x0001, 0x00ED,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x08D1,\n    0x0070, 0x04E1, 0x0070, 0x0551, 0x0070, 0x05C1,\n    0x0001, 0x00EE, 0x0001, 0x00EF, 0x0001, 0x00F0,\n};\n\n// 0x0600CE78\nstatic const struct Animation toad_seg6_anim_0600CE78 = {\n    1,\n    0,\n    0,\n    0,\n    0x70,\n    ANIMINDEX_NUMPARTS(toad_seg6_animindex_0600CD7C),\n    toad_seg6_animvalue_0600B684,\n    toad_seg6_animindex_0600CD7C,\n    0,\n};\n"
  },
  {
    "path": "actors/toad/anims/anim_0600E414.inc.c",
    "content": "// 0x0600CE90\nstatic const s16 toad_seg6_animvalue_0600CE90[] = {\n    0x0000, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B,\n    0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B,\n    0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003C, 0x003C,\n    0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C, 0x003C,\n    0x003C, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003D, 0x003E,\n    0x003E, 0x003E, 0x003F, 0x003F, 0x0040, 0x0040, 0x0040, 0x0040,\n    0x0040, 0x0040, 0x0040, 0x003F, 0x003E, 0x003E, 0x003D, 0x003D,\n    0x003C, 0x003C, 0x003C, 0x003D, 0x003D, 0x003E, 0x003F, 0x003F,\n    0x0040, 0x0040, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041,\n    0x0040, 0x0040, 0x0040, 0x003F, 0x003F, 0x003E, 0x003E, 0x003D,\n    0x003D, 0x003C, 0x003C, 0x003B, 0x003B, 0x003A, 0x003A, 0x003A,\n    0x0039, 0x0039, 0x0039, 0x0038, 0x0038, 0x0038, 0x0038, 0x0039,\n    0x0039, 0x0039, 0x003A, 0x003A, 0x003B, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001,\n    0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,\n    0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,\n    0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,\n    0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0xFFFD, 0xFFF9,\n    0xFFF3, 0x3FFF, 0xE004, 0xC001, 0xE001, 0xDFFD, 0x3FFF, 0x1FFF,\n    0x1FFF, 0xC001, 0x1FFF, 0xDFFD, 0x3FFF, 0x1FFF, 0x2003, 0xC001,\n    0x1FFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFF2,\n    0xFFCC, 0xFF92, 0xFF4A, 0xFEFA, 0xFEA5, 0xFE53, 0xFE08, 0xFDC8,\n    0xFD9B, 0xFD84, 0xFD89, 0xFDB0, 0xFDFD, 0xFE76, 0xFF20, 0x0000,\n    0x0250, 0x0697, 0x0BCE, 0x10EC, 0x14EB, 0x16C2, 0x1649, 0x1458,\n    0x116F, 0x0E0F, 0x0AB6, 0x07E6, 0x061C, 0x05AE, 0x0589, 0x0568,\n    0x0549, 0x052D, 0x0513, 0x04FB, 0x04E5, 0x04D0, 0x04BC, 0x04AA,\n    0x0498, 0x0487, 0x0476, 0x0465, 0x0454, 0x0443, 0x0430, 0x041D,\n    0x0409, 0x03F3, 0x03DB, 0x03C2, 0x03A6, 0x0388, 0x0368, 0x0344,\n    0x031E, 0x02F3, 0x02C6, 0x0294, 0x025F, 0x0224, 0x01E6, 0x01A2,\n    0x015A, 0x010C, 0x00B8, 0x005F, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xFFFE, 0xFFF7, 0xFFED, 0xFFE0, 0xFFD2,\n    0xFFC3, 0xFFB5, 0xFFA7, 0xFF9C, 0xFF94, 0xFF90, 0xFF91, 0xFF98,\n    0xFFA5, 0xFFBB, 0xFFD9, 0x0000, 0x006B, 0x0132, 0x0224, 0x030F,\n    0x03C0, 0x0406, 0x03CF, 0x0342, 0x0280, 0x01AA, 0x00E2, 0x0049,\n    0x0000, 0xFFEC, 0xFFD9, 0xFFC8, 0xFFB9, 0xFFAD, 0xFFA1, 0xFF98,\n    0xFF90, 0xFF8A, 0xFF85, 0xFF82, 0xFF80, 0xFF7F, 0xFF7F, 0xFF80,\n    0xFF82, 0xFF85, 0xFF89, 0xFF8E, 0xFF93, 0xFF99, 0xFF9F, 0xFFA5,\n    0xFFAC, 0xFFB3, 0xFFBB, 0xFFC2, 0xFFC9, 0xFFD0, 0xFFD7, 0xFFDE,\n    0xFFE4, 0xFFEA, 0xFFF0, 0xFFF5, 0xFFF9, 0xFFFC, 0xFFFE, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xFFFD, 0xFFF9, 0xFFF4, 0xFFED, 0xFFE5,\n    0xFFDB, 0xFFD1, 0xFFC6, 0xFFBA, 0xFFAD, 0xFFA0, 0xFF92, 0xFF84,\n    0xFF75, 0xFF67, 0xFF58, 0xFF49, 0xFF3B, 0xFF2C, 0xFF1E, 0xFF11,\n    0xFF04, 0xFEF8, 0xFEEC, 0xFEE1, 0xFED8, 0xFECF, 0xFEC8, 0xFECA,\n    0xFEDE, 0xFEFE, 0xFF29, 0xFF5A, 0xFF8E, 0xFFC2, 0xFFF2, 0x001A,\n    0x0039, 0x0049, 0x0048, 0x0032, 0x0004, 0xFFBB, 0xFF53, 0xFEC8,\n    0xFD4E, 0xFA91, 0xF740, 0xF408, 0xF199, 0xF0A0, 0xF15C, 0xF347,\n    0xF5EB, 0xF8D5, 0xFB91, 0xFDA9, 0xFEA9, 0xFEF2, 0xFF34, 0xFF6F,\n    0xFFA3, 0xFFD1, 0xFFF8, 0x0019, 0x0035, 0x004B, 0x005D, 0x006A,\n    0x0072, 0x0076, 0x0076, 0x0073, 0x006C, 0x0062, 0x0056, 0x0046,\n    0x0035, 0x0022, 0x000D, 0xFFF8, 0xFFE1, 0xFFC9, 0xFFB0, 0xFF98,\n    0xFF7F, 0xFF67, 0xFF4F, 0xFF39, 0xFF24, 0xFF10, 0xFEFE, 0xFEEE,\n    0xFEE0, 0xFED5, 0xFECD, 0xFEC9, 0xFEC8, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xFFE5, 0xFF9C, 0xFF34, 0xFEBD, 0xFE47,\n    0xFDDF, 0xFD96, 0xFD7A, 0xFD9B, 0xFE08, 0xFECF, 0x0000, 0x0309,\n    0x085F, 0x0E9B, 0x1454, 0x1823, 0x19BC, 0x1A0F, 0x198E, 0x18A9,\n    0x17D3, 0x1725, 0x166D, 0x15AC, 0x14E3, 0x1414, 0x133E, 0x1264,\n    0x1186, 0x10A6, 0x0FC3, 0x0EE0, 0x0DFD, 0x0D1C, 0x0C3C, 0x0B60,\n    0x0A89, 0x09B6, 0x08EA, 0x0826, 0x076A, 0x06B7, 0x060E, 0x0571,\n    0x04E1, 0x045D, 0x03E5, 0x0375, 0x030E, 0x02B0, 0x0259, 0x020A,\n    0x01C3, 0x0182, 0x0148, 0x0113, 0x00E5, 0x00BC, 0x0099, 0x007A,\n    0x005F, 0x0049, 0x0036, 0x0027, 0x001A, 0x0011, 0x0009, 0x0003,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFC,\n    0xFFEF, 0xFFDE, 0xFFC9, 0xFFB5, 0xFFA3, 0xFF97, 0xFF92, 0xFF98,\n    0xFFAA, 0xFFCC, 0x0000, 0x00A2, 0x01C7, 0x0304, 0x03F0, 0x0420,\n    0x032D, 0x015D, 0xFF4D, 0xFD96, 0xFCD4, 0xFCC2, 0xFCB3, 0xFCA6,\n    0xFC9D, 0xFC96, 0xFC92, 0xFC90, 0xFC91, 0xFC94, 0xFC9A, 0xFCA1,\n    0xFCAB, 0xFCB6, 0xFCC4, 0xFCD3, 0xFCE4, 0xFCF6, 0xFD0A, 0xFD1F,\n    0xFD35, 0xFD4C, 0xFD65, 0xFD7E, 0xFD98, 0xFDB3, 0xFDCF, 0xFDEB,\n    0xFE07, 0xFE24, 0xFE41, 0xFE5F, 0xFE7C, 0xFE99, 0xFEB6, 0xFED3,\n    0xFEEF, 0xFF0B, 0xFF26, 0xFF41, 0xFF5A, 0xFF73, 0xFF8B, 0xFFA2,\n    0xFFB8, 0xFFCC, 0xFFDF, 0xFFF1, 0x0000, 0x0000, 0x0000, 0xFFFD,\n    0xFFF9, 0xFFF4, 0xFFED, 0xFFE5, 0xFFDC, 0xFFD2, 0xFFC7, 0xFFBC,\n    0xFFAF, 0xFFA2, 0xFF95, 0xFF87, 0xFF79, 0xFF6A, 0xFF5B, 0xFF4D,\n    0xFF3E, 0xFF30, 0xFF22, 0xFF14, 0xFF07, 0xFEFA, 0xFEEE, 0xFEE3,\n    0xFED9, 0xFED0, 0xFEC8, 0xFEC8, 0xFED7, 0xFEEF, 0xFF0D, 0xFF2C,\n    0xFF48, 0xFF5D, 0xFF67, 0xFF61, 0xFF47, 0xFF15, 0xFEC8, 0xFDD3,\n    0xFC1C, 0xFA3F, 0xF8DE, 0xF896, 0xFA04, 0xFCBD, 0xFFD8, 0x026B,\n    0x038F, 0x03AB, 0x03C2, 0x03D4, 0x03E3, 0x03ED, 0x03F3, 0x03F5,\n    0x03F4, 0x03EF, 0x03E7, 0x03DC, 0x03CD, 0x03BC, 0x03A7, 0x0391,\n    0x0377, 0x035C, 0x033E, 0x031E, 0x02FD, 0x02D9, 0x02B5, 0x028E,\n    0x0267, 0x023E, 0x0215, 0x01EA, 0x01C0, 0x0194, 0x0168, 0x013C,\n    0x0110, 0x00E4, 0x00B9, 0x008D, 0x0063, 0x0039, 0x0010, 0xFFE9,\n    0xFFC2, 0xFF9C, 0xFF78, 0xFF56, 0xFF35, 0xFF17, 0xFEFA, 0xFEE0,\n    0xFEC8, 0xFF7B, 0xFF7E, 0xFF87, 0xFF95, 0xFFA9, 0xFFC1, 0xFFDE,\n    0xFFFE, 0x0021, 0x0047, 0x0071, 0x009C, 0x00CA, 0x00F9, 0x0128,\n    0x0159, 0x0189, 0x01B9, 0x01E9, 0x0218, 0x0245, 0x0270, 0x0299,\n    0x02BF, 0x02E2, 0x0302, 0x031D, 0x0334, 0x0347, 0x0354, 0x035C,\n    0x0356, 0x033B, 0x030F, 0x02D5, 0x0290, 0x0243, 0x01F3, 0x01A1,\n    0x0151, 0x0106, 0x00C4, 0x008D, 0x0066, 0x0050, 0x0046, 0x003B,\n    0x0032, 0x0029, 0x0022, 0x001A, 0x0014, 0x000E, 0x0009, 0x0004,\n    0x0000, 0xFFFE, 0xFFFB, 0xFFF8, 0xFFF6, 0xFFF5, 0xFFF4, 0xFFF4,\n    0xFFF3, 0xFFF4, 0xFFF4, 0xFFF5, 0xFFF7, 0xFFF9, 0xFFFA, 0xFFFD,\n    0xFFFF, 0x0001, 0x0004, 0x0007, 0x000A, 0x000E, 0x0011, 0x0015,\n    0x0018, 0x001C, 0x0020, 0x0024, 0x0027, 0x002B, 0x002F, 0x0032,\n    0x0036, 0x0039, 0x003C, 0x0040, 0x0042, 0x0045, 0x0048, 0x004A,\n    0x004C, 0x004D, 0x004F, 0x0050, 0x0050, 0xF087, 0xF086, 0xF082,\n    0xF07D, 0xF075, 0xF06C, 0xF061, 0xF054, 0xF046, 0xF036, 0xF026,\n    0xF014, 0xF002, 0xEFEF, 0xEFDB, 0xEFC7, 0xEFB3, 0xEF9F, 0xEF8A,\n    0xEF76, 0xEF62, 0xEF4E, 0xEF3B, 0xEF29, 0xEF18, 0xEF07, 0xEEF8,\n    0xEEEA, 0xEEDE, 0xEED3, 0xEECA, 0xEEC4, 0xEEC2, 0xEEC4, 0xEEC9,\n    0xEED0, 0xEED9, 0xEEE3, 0xEEEE, 0xEEF9, 0xEF03, 0xEF0D, 0xEF15,\n    0xEF1A, 0xEF1D, 0xEF20, 0xEF24, 0xEF2B, 0xEF34, 0xEF3F, 0xEF4C,\n    0xEF5A, 0xEF6A, 0xEF7B, 0xEF8E, 0xEFA1, 0xEFB6, 0xEFCB, 0xEFE1,\n    0xEFF8, 0xF00F, 0xF026, 0xF03E, 0xF055, 0xF06C, 0xF083, 0xF09A,\n    0xF0B0, 0xF0C5, 0xF0DA, 0xF0ED, 0xF100, 0xF111, 0xF121, 0xF130,\n    0xF13C, 0xF147, 0xF150, 0xF157, 0xF15C, 0xF15F, 0xF15F, 0xF15C,\n    0xF157, 0xF14F, 0xF143, 0xF135, 0xF123, 0xF10E, 0xF0F6, 0xF0D9,\n    0xF0B9, 0xF095, 0xF06D, 0xF040, 0xF00F, 0xEFDA, 0xEFA0, 0xEF61,\n    0xEF1D, 0xC150, 0xC149, 0xC133, 0xC111, 0xC0E2, 0xC0A8, 0xC064,\n    0xC017, 0xBFC2, 0xBF65, 0xBF02, 0xBE9A, 0xBE2D, 0xBDBD, 0xBD4B,\n    0xBCD7, 0xBC63, 0xBBEF, 0xBB7C, 0xBB0C, 0xBAA0, 0xBA38, 0xB9D5,\n    0xB978, 0xB923, 0xB8D6, 0xB892, 0xB858, 0xB82A, 0xB808, 0xB7F2,\n    0xB7FE, 0xB839, 0xB89B, 0xB91E, 0xB9BA, 0xBA67, 0xBB1F, 0xBBD9,\n    0xBC8F, 0xBD39, 0xBDD0, 0xBE4C, 0xBEA6, 0xBED7, 0xBEF0, 0xBF07,\n    0xBF1C, 0xBF2F, 0xBF41, 0xBF51, 0xBF60, 0xBF6D, 0xBF79, 0xBF84,\n    0xBF8D, 0xBF94, 0xBF9B, 0xBFA0, 0xBFA4, 0xBFA8, 0xBFAA, 0xBFAB,\n    0xBFAB, 0xBFAA, 0xBFA8, 0xBFA6, 0xBFA3, 0xBF9F, 0xBF9A, 0xBF95,\n    0xBF8F, 0xBF89, 0xBF83, 0xBF7C, 0xBF74, 0xBF6C, 0xBF64, 0xBF5C,\n    0xBF54, 0xBF4B, 0xBF43, 0xBF3A, 0xBF32, 0xBF2A, 0xBF21, 0xBF19,\n    0xBF11, 0xBF0A, 0xBF03, 0xBEFC, 0xBEF5, 0xBEEF, 0xBEEA, 0xBEE5,\n    0xBEE1, 0xBEDD, 0xBEDA, 0xBED8, 0xBED7, 0x0D31, 0x0D2F, 0x0D28,\n    0x0D1C, 0x0D0D, 0x0CF9, 0x0CE3, 0x0CC9, 0x0CAD, 0x0C8E, 0x0C6D,\n    0x0C4A, 0x0C26, 0x0C01, 0x0BDB, 0x0BB5, 0x0B8F, 0x0B69, 0x0B44,\n    0x0B1F, 0x0AFC, 0x0ADA, 0x0ABA, 0x0A9C, 0x0A81, 0x0A69, 0x0A54,\n    0x0A43, 0x0A35, 0x0A2C, 0x0A27, 0x0A2E, 0x0A46, 0x0A6D, 0x0A9F,\n    0x0ADB, 0x0B1D, 0x0B62, 0x0BA8, 0x0BEC, 0x0C2C, 0x0C64, 0x0C93,\n    0x0CB5, 0x0CC7, 0x0CD0, 0x0CD8, 0x0CE0, 0x0CE6, 0x0CEB, 0x0CEF,\n    0x0CF3, 0x0CF6, 0x0CF8, 0x0CF9, 0x0CFA, 0x0CFA, 0x0CF9, 0x0CF8,\n    0x0CF6, 0x0CF4, 0x0CF1, 0x0CEE, 0x0CEB, 0x0CE7, 0x0CE3, 0x0CDF,\n    0x0CDA, 0x0CD5, 0x0CD1, 0x0CCC, 0x0CC7, 0x0CC2, 0x0CBD, 0x0CB8,\n    0x0CB3, 0x0CAF, 0x0CAA, 0x0CA6, 0x0CA2, 0x0C9E, 0x0C9B, 0x0C98,\n    0x0C96, 0x0C94, 0x0C92, 0x0C91, 0x0C91, 0x0C91, 0x0C92, 0x0C93,\n    0x0C95, 0x0C99, 0x0C9C, 0x0CA1, 0x0CA7, 0x0CAD, 0x0CB5, 0x0CBD,\n    0x0CC7, 0x0C00, 0x0C03, 0x0C0C, 0x0C1B, 0x0C2F, 0x0C48, 0x0C66,\n    0x0C88, 0x0CAD, 0x0CD6, 0x0D02, 0x0D31, 0x0D62, 0x0D96, 0x0DCA,\n    0x0E00, 0x0E37, 0x0E6F, 0x0EA6, 0x0EDE, 0x0F14, 0x0F4A, 0x0F7E,\n    0x0FB1, 0x0FE2, 0x1010, 0x103B, 0x1063, 0x1088, 0x10A9, 0x10C5,\n    0x10DB, 0x10E8, 0x10EE, 0x10ED, 0x10E8, 0x10DE, 0x10D1, 0x10C2,\n    0x10B3, 0x10A4, 0x1096, 0x108A, 0x1082, 0x107E, 0x107C, 0x1079,\n    0x1074, 0x106E, 0x1067, 0x105E, 0x1054, 0x104A, 0x103E, 0x1032,\n    0x1024, 0x1017, 0x1008, 0x0FFA, 0x0FEB, 0x0FDB, 0x0FCC, 0x0FBC,\n    0x0FAC, 0x0F9D, 0x0F8E, 0x0F7E, 0x0F70, 0x0F62, 0x0F54, 0x0F47,\n    0x0F3B, 0x0F2F, 0x0F25, 0x0F1B, 0x0F13, 0x0F0B, 0x0F05, 0x0F01,\n    0x0EFE, 0x0EFC, 0x0EFC, 0x0EFE, 0x0F02, 0x0F07, 0x0F0F, 0x0F18,\n    0x0F24, 0x0F32, 0x0F43, 0x0F56, 0x0F6B, 0x0F83, 0x0F9E, 0x0FBC,\n    0x0FDD, 0x1000, 0x1027, 0x1051, 0x107E, 0xBA11, 0xBA0B, 0xB9F8,\n    0xB9D9, 0xB9AF, 0xB97C, 0xB93F, 0xB8FB, 0xB8AF, 0xB85C, 0xB805,\n    0xB7A9, 0xB749, 0xB6E6, 0xB682, 0xB61C, 0xB5B6, 0xB552, 0xB4EF,\n    0xB48E, 0xB431, 0xB3D8, 0xB384, 0xB337, 0xB2F1, 0xB2B2, 0xB27C,\n    0xB250, 0xB22F, 0xB219, 0xB20F, 0xB227, 0xB26E, 0xB2DE, 0xB36E,\n    0xB417, 0xB4D1, 0xB596, 0xB65C, 0xB71E, 0xB7D2, 0xB871, 0xB8F5,\n    0xB954, 0xB988, 0xB9A2, 0xB9BA, 0xB9CF, 0xB9E2, 0xB9F3, 0xBA01,\n    0xBA0D, 0xBA17, 0xBA1F, 0xBA25, 0xBA29, 0xBA2C, 0xBA2C, 0xBA2C,\n    0xBA2A, 0xBA27, 0xBA22, 0xBA1D, 0xBA16, 0xBA0E, 0xBA06, 0xB9FD,\n    0xB9F3, 0xB9E8, 0xB9DE, 0xB9D2, 0xB9C7, 0xB9BB, 0xB9AF, 0xB9A3,\n    0xB997, 0xB98C, 0xB980, 0xB975, 0xB96B, 0xB961, 0xB957, 0xB94F,\n    0xB947, 0xB940, 0xB93A, 0xB935, 0xB932, 0xB930, 0xB92F, 0xB930,\n    0xB932, 0xB936, 0xB93B, 0xB943, 0xB94D, 0xB958, 0xB966, 0xB976,\n    0xB988, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAA, 0xEAAA, 0xEAA9, 0xEAA8,\n    0xEAA6, 0xEAA5, 0xEAA3, 0xEAA1, 0xEA9F, 0xEA9D, 0xEA9B, 0xEA99,\n    0xEA96, 0xEA93, 0xEA91, 0xEA8E, 0xEA8B, 0xEA88, 0xEA84, 0xEA81,\n    0xEA7E, 0xEA7B, 0xEA77, 0xEA74, 0xEA70, 0xEA6C, 0xEA69, 0xEA65,\n    0xEA61, 0xEA5E, 0xEA5A, 0xEA56, 0xEA53, 0xEA4F, 0xEA4B, 0xEA48,\n    0xEA44, 0xEA41, 0xEA3D, 0xEA3A, 0xEA36, 0xEA33, 0xEA30, 0xEA2D,\n    0xEA2A, 0xEA27, 0xEA24, 0xEA21, 0xEA1E, 0xEA1C, 0xEA19, 0xEA17,\n    0xEA15, 0xEA13, 0xEA11, 0xEA0F, 0xEA0E, 0xEA0D, 0xEA0C, 0xEA0B,\n    0xEA0A, 0xEA09, 0xEA09, 0xEA09, 0xEA09, 0xEA09, 0xEA0A, 0xEA0B,\n    0xEA0C, 0xEA0D, 0xEA0F, 0xEA11, 0xEA13, 0xEA15, 0xEA18, 0xEA1B,\n    0xEA1E, 0xEA22, 0xEA26, 0xEA2A, 0xEA2F, 0xEA34, 0xEA39, 0xEA3F,\n    0xEA45, 0xEA4B, 0xEA52, 0xEA59, 0xEA60, 0xEA68, 0xEA71, 0xEA79,\n    0xEA83, 0xEA8C, 0xEA96, 0xEAA0, 0xEAAB, 0x0000, 0x0000, 0x0001,\n    0x0003, 0x0006, 0x0009, 0x000D, 0x0012, 0x0017, 0x001D, 0x0024,\n    0x002B, 0x0032, 0x003A, 0x0043, 0x004C, 0x0056, 0x005F, 0x006A,\n    0x0074, 0x007F, 0x008B, 0x0096, 0x00A2, 0x00AE, 0x00BB, 0x00C7,\n    0x00D4, 0x00E1, 0x00EE, 0x00FB, 0x0108, 0x0115, 0x0123, 0x0130,\n    0x013D, 0x014A, 0x0157, 0x0164, 0x0171, 0x017E, 0x018A, 0x0197,\n    0x01A3, 0x01AF, 0x01BA, 0x01C6, 0x01D1, 0x01DB, 0x01E6, 0x01F0,\n    0x01F9, 0x0202, 0x020B, 0x0213, 0x021B, 0x0222, 0x0228, 0x022E,\n    0x0233, 0x0238, 0x023C, 0x0240, 0x0242, 0x0244, 0x0245, 0x0246,\n    0x0245, 0x0244, 0x0242, 0x023F, 0x023B, 0x0236, 0x0231, 0x022A,\n    0x0222, 0x021A, 0x0210, 0x0205, 0x01F9, 0x01EC, 0x01DE, 0x01CE,\n    0x01BE, 0x01AC, 0x0199, 0x0185, 0x016F, 0x0159, 0x0140, 0x0127,\n    0x010C, 0x00EF, 0x00D2, 0x00B2, 0x0092, 0x006F, 0x004C, 0x0026,\n    0x0000, 0xC001, 0xC002, 0xC004, 0xC007, 0xC00B, 0xC010, 0xC017,\n    0xC01E, 0xC027, 0xC031, 0xC03B, 0xC047, 0xC053, 0xC060, 0xC06E,\n    0xC07C, 0xC08C, 0xC09C, 0xC0AC, 0xC0BE, 0xC0CF, 0xC0E2, 0xC0F4,\n    0xC108, 0xC11B, 0xC12F, 0xC143, 0xC158, 0xC16D, 0xC182, 0xC197,\n    0xC1AC, 0xC1C1, 0xC1D7, 0xC1EC, 0xC201, 0xC216, 0xC22C, 0xC240,\n    0xC255, 0xC26A, 0xC27E, 0xC292, 0xC2A6, 0xC2B9, 0xC2CB, 0xC2DE,\n    0xC2EF, 0xC301, 0xC311, 0xC321, 0xC331, 0xC33F, 0xC34D, 0xC35A,\n    0xC367, 0xC372, 0xC37D, 0xC386, 0xC38F, 0xC396, 0xC39D, 0xC3A2,\n    0xC3A7, 0xC3AA, 0xC3AC, 0xC3AC, 0xC3AC, 0xC3AA, 0xC3A6, 0xC3A1,\n    0xC39B, 0xC393, 0xC38A, 0xC37F, 0xC373, 0xC365, 0xC355, 0xC344,\n    0xC331, 0xC31B, 0xC305, 0xC2EC, 0xC2D1, 0xC2B5, 0xC296, 0xC275,\n    0xC252, 0xC22E, 0xC207, 0xC1DD, 0xC1B2, 0xC184, 0xC154, 0xC122,\n    0xC0ED, 0xC0B6, 0xC07C, 0xC040, 0xC001, 0x1555, 0x1555, 0x1555,\n    0x1556, 0x1557, 0x1558, 0x155A, 0x155B, 0x155D, 0x155F, 0x1562,\n    0x1564, 0x1567, 0x156A, 0x156D, 0x1570, 0x1574, 0x1577, 0x157B,\n    0x157F, 0x1583, 0x1587, 0x158B, 0x1590, 0x1594, 0x1599, 0x159D,\n    0x15A2, 0x15A6, 0x15AB, 0x15B0, 0x15B5, 0x15B9, 0x15BE, 0x15C3,\n    0x15C8, 0x15CD, 0x15D1, 0x15D6, 0x15DB, 0x15DF, 0x15E4, 0x15E8,\n    0x15ED, 0x15F1, 0x15F5, 0x15F9, 0x15FD, 0x1601, 0x1605, 0x1609,\n    0x160C, 0x160F, 0x1613, 0x1616, 0x1618, 0x161B, 0x161D, 0x161F,\n    0x1621, 0x1623, 0x1624, 0x1626, 0x1627, 0x1627, 0x1628, 0x1628,\n    0x1628, 0x1627, 0x1627, 0x1625, 0x1624, 0x1622, 0x1620, 0x161E,\n    0x161B, 0x1618, 0x1614, 0x1610, 0x160C, 0x1607, 0x1602, 0x15FD,\n    0x15F7, 0x15F0, 0x15E9, 0x15E2, 0x15DA, 0x15D2, 0x15C9, 0x15C0,\n    0x15B6, 0x15AC, 0x15A1, 0x1596, 0x158A, 0x157D, 0x1570, 0x1563,\n    0x1555, 0x0000, 0x0000, 0x0001, 0x0003, 0x0005, 0x0008, 0x000C,\n    0x0010, 0x0015, 0x001B, 0x0021, 0x0028, 0x002F, 0x0036, 0x003E,\n    0x0047, 0x004F, 0x0059, 0x0062, 0x006C, 0x0076, 0x0081, 0x008C,\n    0x0097, 0x00A2, 0x00AD, 0x00B9, 0x00C5, 0x00D1, 0x00DD, 0x00E9,\n    0x00F5, 0x0102, 0x010E, 0x011A, 0x0126, 0x0133, 0x013F, 0x014B,\n    0x0157, 0x0163, 0x016E, 0x017A, 0x0185, 0x0190, 0x019B, 0x01A5,\n    0x01B0, 0x01BA, 0x01C3, 0x01CC, 0x01D5, 0x01DE, 0x01E6, 0x01ED,\n    0x01F4, 0x01FB, 0x0201, 0x0206, 0x020B, 0x0210, 0x0213, 0x0217,\n    0x0219, 0x021B, 0x021C, 0x021C, 0x021C, 0x021B, 0x0219, 0x0216,\n    0x0213, 0x020E, 0x0209, 0x0203, 0x01FB, 0x01F3, 0x01EA, 0x01E0,\n    0x01D5, 0x01C9, 0x01BC, 0x01AE, 0x019E, 0x018E, 0x017C, 0x0169,\n    0x0155, 0x0140, 0x0129, 0x0112, 0x00F9, 0x00DE, 0x00C3, 0x00A6,\n    0x0087, 0x0068, 0x0046, 0x0024, 0x0000, 0xC001, 0xC000, 0xBFFE,\n    0xBFFB, 0xBFF6, 0xBFEF, 0xBFE8, 0xBFDF, 0xBFD5, 0xBFCA, 0xBFBE,\n    0xBFB1, 0xBFA3, 0xBF94, 0xBF84, 0xBF73, 0xBF62, 0xBF4F, 0xBF3C,\n    0xBF29, 0xBF14, 0xBEFF, 0xBEEA, 0xBED4, 0xBEBD, 0xBEA6, 0xBE8F,\n    0xBE78, 0xBE60, 0xBE48, 0xBE30, 0xBE17, 0xBDFF, 0xBDE6, 0xBDCE,\n    0xBDB5, 0xBD9D, 0xBD85, 0xBD6D, 0xBD55, 0xBD3E, 0xBD26, 0xBD0F,\n    0xBCF9, 0xBCE3, 0xBCCE, 0xBCB9, 0xBCA4, 0xBC90, 0xBC7D, 0xBC6B,\n    0xBC59, 0xBC49, 0xBC39, 0xBC2A, 0xBC1C, 0xBC0E, 0xBC02, 0xBBF7,\n    0xBBEE, 0xBBE5, 0xBBDD, 0xBBD7, 0xBBD2, 0xBBCF, 0xBBCC, 0xBBCC,\n    0xBBCC, 0xBBCF, 0xBBD3, 0xBBD8, 0xBBDF, 0xBBE8, 0xBBF3, 0xBBFF,\n    0xBC0D, 0xBC1D, 0xBC2F, 0xBC44, 0xBC5A, 0xBC72, 0xBC8C, 0xBCA8,\n    0xBCC7, 0xBCE8, 0xBD0B, 0xBD30, 0xBD58, 0xBD83, 0xBDAF, 0xBDDF,\n    0xBE11, 0xBE45, 0xBE7C, 0xBEB6, 0xBEF2, 0xBF32, 0xBF74, 0xBFB9,\n    0xC001, 0xBFB5, 0xBFB5, 0xBFB5, 0xBFB5, 0xDFDE, 0xC001, 0xDFDB,\n    0xDFDE, 0xC001, 0xDFDB, 0x0000, 0xFFC8, 0xFF29, 0xFE31, 0xFCF0,\n    0xFB74, 0xF9CB, 0xF805, 0xF631, 0xF45B, 0xF295, 0xF0EB, 0xEF6E,\n    0xEE2A, 0xED30, 0xEC6D, 0xEBC2, 0xEB2E, 0xEAAE, 0xEA40, 0xE9E1,\n    0xE990, 0xE94A, 0xE90C, 0xE8D5, 0xE8A2, 0xE870, 0xE83F, 0xE80A,\n    0xE7D0, 0xE78E, 0xE751, 0xE721, 0xE6FD, 0xE6DF, 0xE6C7, 0xE6AF,\n    0xE695, 0xE675, 0xE64C, 0xE617, 0xE5D2, 0xE580, 0xE524, 0xE4C1,\n    0xE457, 0xE3E8, 0xE376, 0xE301, 0xE28B, 0xE216, 0xE1A2, 0xE130,\n    0xE0C4, 0xE05D, 0xDFFC, 0xDFA3, 0xDF51, 0xDF07, 0xDEC6, 0xDE8E,\n    0xDE61, 0xDE3F, 0xDE32, 0xDE3B, 0xDE52, 0xDE6F, 0xDE87, 0xDE93,\n    0xDE8E, 0xDE7B, 0xDE5B, 0xDE31, 0xDDFE, 0xDDC2, 0xDD80, 0xDD39,\n    0xDCEE, 0xDCA1, 0xDC54, 0xDC07, 0xDBBD, 0xDB76, 0xDB35, 0xDAFB,\n    0xDAC8, 0xDA9F, 0xDA82, 0xDA70, 0xDA6D, 0xDA79, 0xDA97, 0xDAC6,\n    0xDB0A, 0xDB63, 0xDBD3, 0xDC5B, 0xDCFC, 0xDDB9, 0xDE93, 0x0000,\n    0x0008, 0x0021, 0x0047, 0x0078, 0x00B1, 0x00F0, 0x0132, 0x0174,\n    0x01B5, 0x01F1, 0x0227, 0x0253, 0x0273, 0x0284, 0x028A, 0x0288,\n    0x0281, 0x0273, 0x0261, 0x024B, 0x0231, 0x0214, 0x01F5, 0x01D4,\n    0x01B3, 0x0191, 0x0170, 0x014F, 0x0131, 0x0115, 0x0102, 0x00FC,\n    0x00FD, 0x0100, 0x0100, 0x00F9, 0x00E6, 0x00C1, 0x0085, 0x002F,\n    0xFFB8, 0xFF14, 0xFE3D, 0xFD40, 0xFC26, 0xFAFA, 0xF9C5, 0xF892,\n    0xF76B, 0xF65A, 0xF569, 0xF4A3, 0xF412, 0xF3C0, 0xF3B7, 0xF48D,\n    0xF686, 0xF934, 0xFC26, 0xFEEF, 0x011E, 0x0246, 0x020D, 0x00B7,\n    0xFEC4, 0xFCB2, 0xFB00, 0xFA2E, 0xF9F8, 0xF9C7, 0xF99A, 0xF972,\n    0xF94D, 0xF92D, 0xF911, 0xF8F9, 0xF8E5, 0xF8D4, 0xF8C7, 0xF8BE,\n    0xF8B8, 0xF8B6, 0xF8B6, 0xF8BA, 0xF8C1, 0xF8CB, 0xF8D8, 0xF8E8,\n    0xF8FA, 0xF90F, 0xF926, 0xF940, 0xF95C, 0xF97A, 0xF99A, 0xF9BC,\n    0xF9E0, 0xFA06, 0xFA2E, 0x0000, 0x000D, 0x0034, 0x006F, 0x00BB,\n    0x0112, 0x0171, 0x01D3, 0x0234, 0x0290, 0x02E3, 0x0327, 0x035A,\n    0x0375, 0x0376, 0x0360, 0x033A, 0x0306, 0x02C6, 0x027B, 0x0228,\n    0x01CD, 0x016C, 0x0107, 0x00A0, 0x0038, 0xFFD2, 0xFF6D, 0xFF0D,\n    0xFEB3, 0xFE61, 0xFE64, 0xFE95, 0xFEF2, 0xFF6C, 0xFFF6, 0x0081,\n    0x0100, 0x0163, 0x019E, 0x01A0, 0x015D, 0x00D0, 0x0004, 0xFF07,\n    0xFDE3, 0xFCA3, 0xFB55, 0xFA03, 0xF8B9, 0xF783, 0xF66D, 0xF582,\n    0xF4CE, 0xF45D, 0xF43B, 0xF4F6, 0xF6CE, 0xF959, 0xFC2A, 0xFED6,\n    0x00F1, 0x0210, 0x01E1, 0x00A8, 0xFEDB, 0xFCF0, 0xFB5E, 0xFA9B,\n    0xFA69, 0xFA3C, 0xFA12, 0xF9ED, 0xF9CC, 0xF9AE, 0xF994, 0xF97E,\n    0xF96B, 0xF95C, 0xF950, 0xF947, 0xF942, 0xF93F, 0xF940, 0xF943,\n    0xF94A, 0xF953, 0xF95F, 0xF96D, 0xF97E, 0xF991, 0xF9A6, 0xF9BE,\n    0xF9D8, 0xF9F4, 0xFA12, 0xFA31, 0xFA53, 0xFA76, 0xFA9B, 0xEAAB,\n    0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB,\n    0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB,\n    0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB,\n    0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB,\n    0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB, 0xEAAB,\n    0xEAAB, 0xEAAB, 0xEA82, 0xEA0F, 0xE95E, 0xE87D, 0xE778, 0xE65C,\n    0xE535, 0xE411, 0xE2FC, 0xE202, 0xE130, 0xE094, 0xE039, 0xE004,\n    0xDFCF, 0xDF9B, 0xDF68, 0xDF37, 0xDF07, 0xDED8, 0xDEAC, 0xDE81,\n    0xDE59, 0xDE34, 0xDE11, 0xDDF1, 0xDDD5, 0xDDBC, 0xDDA6, 0xDD94,\n    0xDD87, 0xDD7D, 0xDD79, 0xDD78, 0xDD7D, 0xDD87, 0xDD96, 0xDDAB,\n    0xDDC5, 0xDDE5, 0xDE0C, 0xDE39, 0xDE6D, 0xDEA7, 0xDEE8, 0xDF31,\n    0xDF81, 0xDFD9, 0xE039, 0xDF1A, 0xDB56, 0xD584, 0xCE36, 0xC602,\n    0xBD7C, 0xB539, 0xADCC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0004, 0x0006,\n    0x0009, 0x000C, 0x000F, 0x0013, 0x0016, 0x001A, 0x001E, 0x0021,\n    0x0025, 0x0029, 0x002C, 0x002F, 0x0032, 0x0035, 0x0037, 0x0039,\n    0x003B, 0x003B, 0x003C, 0x003B, 0x003A, 0x0039, 0x0036, 0x0033,\n    0x002F, 0x0029, 0x0023, 0x001C, 0x0014, 0x000A, 0x0000, 0xFFE2,\n    0xFFA4, 0xFF52, 0xFEF6, 0xFE9D, 0xFE52, 0xFE1E, 0xFE0F, 0x404B,\n    0x404B, 0x404B, 0x404B, 0x404B, 0x404B, 0x404B, 0x404B, 0x404B,\n    0x404B, 0x404B, 0x404B, 0x404B, 0x404B, 0x404B, 0x404B, 0x404B,\n    0x404B, 0x404B, 0x404B, 0x404B, 0x404B, 0x404B, 0x404B, 0x404B,\n    0x404B, 0x404B, 0x404B, 0x404B, 0x404B, 0x404B, 0x404B, 0x404B,\n    0x404B, 0x404B, 0x404B, 0x404B, 0x404B, 0x404B, 0x404B, 0x404B,\n    0x404B, 0x404B, 0x404B, 0x404C, 0x404D, 0x404E, 0x404F, 0x4050,\n    0x4052, 0x4053, 0x4055, 0x4056, 0x4057, 0x4058, 0x4058, 0x4059,\n    0x405B, 0x405E, 0x4062, 0x4067, 0x406D, 0x4073, 0x407A, 0x4081,\n    0x4089, 0x4090, 0x4098, 0x40A0, 0x40A8, 0x40AF, 0x40B6, 0x40BD,\n    0x40C3, 0x40C9, 0x40CD, 0x40D1, 0x40D4, 0x40D6, 0x40D6, 0x40D5,\n    0x40D3, 0x40D0, 0x40CA, 0x40C3, 0x40BA, 0x40AF, 0x40A3, 0x4093,\n    0x4082, 0x406E, 0x4058, 0x4027, 0x3FC9, 0x3F4A, 0x3EB4, 0x3E12,\n    0x3D6E, 0x3CD4, 0x3C4E, 0x0000,\n};\n\n// 0x0600E318\nstatic const u16 toad_seg6_animindex_0600E318[] = {\n    0x0001, 0x0000, 0x0064, 0x0001, 0x0064, 0x0065, 0x0001, 0x0000, 0x0001, 0x00C9, 0x0001, 0x0000,\n    0x0064, 0x0917, 0x0064, 0x097B, 0x0064, 0x09DF,\n    0x0064, 0x07EB, 0x0064, 0x084F, 0x0064, 0x08B3,\n    0x0001, 0x00CA, 0x0001, 0x00CB, 0x0001, 0x00CC,\n    0x0001, 0x07E8, 0x0001, 0x07E9, 0x0001, 0x07EA,\n    0x0001, 0x07E5, 0x0001, 0x07E6, 0x0001, 0x07E7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x07E4,\n    0x0064, 0x0589, 0x0064, 0x05ED, 0x0064, 0x0651,\n    0x0064, 0x00D9, 0x0064, 0x013D, 0x0064, 0x01A1,\n    0x0001, 0x00CD, 0x0001, 0x00CE, 0x0001, 0x00CF,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x07E3,\n    0x0064, 0x06B5, 0x0064, 0x0719, 0x0064, 0x077D,\n    0x0064, 0x0205, 0x0064, 0x0269, 0x0064, 0x02CD,\n    0x0001, 0x00D0, 0x0001, 0x00D1, 0x0001, 0x00D2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x07E2,\n    0x0064, 0x0331, 0x0064, 0x0395, 0x0064, 0x03F9,\n    0x0001, 0x00D3, 0x0001, 0x00D4, 0x0001, 0x00D5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x07E1,\n    0x0064, 0x045D, 0x0064, 0x04C1, 0x0064, 0x0525,\n    0x0001, 0x00D6, 0x0001, 0x00D7, 0x0001, 0x00D8,\n};\n\n// 0x0600E414\nstatic const struct Animation toad_seg6_anim_0600E414 = {\n    1,\n    0,\n    0,\n    0,\n    0x64,\n    ANIMINDEX_NUMPARTS(toad_seg6_animindex_0600E318),\n    toad_seg6_animvalue_0600CE90,\n    toad_seg6_animindex_0600E318,\n    0,\n};\n"
  },
  {
    "path": "actors/toad/anims/anim_0600FB40.inc.c",
    "content": "// 0x0600E42C\nstatic const s16 toad_seg6_animvalue_0600E42C[] = {\n    0x0000, 0x003E, 0x0046, 0x004F, 0x0058, 0x005F, 0x0062, 0x005D,\n    0x0052, 0x0046, 0x0040, 0x0045, 0x0050, 0x005A, 0x005F, 0x005A,\n    0x0050, 0x0045, 0x0040, 0x0042, 0x0048, 0x0050, 0x0059, 0x005F,\n    0x0064, 0x0062, 0x0057, 0x0048, 0x0040, 0x0045, 0x004F, 0x005A,\n    0x005F, 0x005A, 0x0050, 0x0045, 0x0040, 0x0044, 0x004D, 0x0057,\n    0x005F, 0x0064, 0x0065, 0x0062, 0x0057, 0x0048, 0x0040, 0x0045,\n    0x004F, 0x005A, 0x005F, 0x005A, 0x0050, 0x0045, 0x0040, 0x0044,\n    0x004D, 0x0057, 0x005F, 0x0062, 0x0062, 0x005E, 0x0053, 0x0046,\n    0x0040, 0x0042, 0x0048, 0x0050, 0x0057, 0x005D, 0x005F, 0x005C,\n    0x0053, 0x0049, 0x0041, 0x0040, 0x0046, 0x004D, 0x0054, 0x005B,\n    0x0060, 0x0063, 0x0065, 0x0062, 0x005B, 0x004F, 0x0045, 0x0040,\n    0x0045, 0x004F, 0x005A, 0x005F, 0x005A, 0x0050, 0x0045, 0x0040,\n    0x0042, 0x0049, 0x0051, 0x0059, 0x005F, 0x0064, 0x0062, 0x0057,\n    0x0048, 0x0040, 0x0044, 0x004F, 0x005A, 0x005F, 0x005B, 0x0050,\n    0x0045, 0xFFE1, 0xFFD7, 0xFFCB, 0xFFBE, 0xFFB0, 0xFFA0, 0xFF90,\n    0xFF7E, 0xFF6B, 0xFF58, 0xFF43, 0xFF2D, 0xFF16, 0xFEFE, 0xFEE5,\n    0xFECB, 0xFEB0, 0xFE94, 0xFE77, 0xFE59, 0xFE3A, 0xFE1B, 0xFDFA,\n    0xFDD9, 0xFDB7, 0xFD94, 0xFD70, 0xFD4B, 0xFD26, 0xFD00, 0xFCD9,\n    0xFCB1, 0xFC89, 0xFC60, 0xFC37, 0xFC0C, 0xFBE2, 0xFBB6, 0xFB8A,\n    0xFB5D, 0xFB30, 0xFB02, 0xFAD4, 0xFAA5, 0xFA76, 0xFA46, 0xFA16,\n    0xF9E5, 0xF9B4, 0xF983, 0xF951, 0xF91F, 0xF8EC, 0xF8B9, 0xF886,\n    0xF852, 0xF81F, 0xF7EA, 0xF7B6, 0xF781, 0xF74D, 0xF718, 0xF6E2,\n    0xF6AD, 0xF677, 0xF642, 0xF60C, 0xF5D6, 0xF5A0, 0xF56A, 0xF534,\n    0xF4FE, 0xF4C8, 0xF492, 0xF45C, 0xF425, 0xF3EF, 0xF3BA, 0xF384,\n    0xF34E, 0xF318, 0xF2E3, 0xF2AE, 0xF278, 0xF243, 0xF20F, 0xF1DA,\n    0xF1A6, 0xF172, 0xF13E, 0xF10B, 0xF0D8, 0xF0A5, 0xF072, 0xF040,\n    0xF00E, 0xEFDD, 0xEFAC, 0xEF7C, 0xEF4C, 0xEF1C, 0xEEED, 0xEEBF,\n    0xEE91, 0xEE63, 0xEE36, 0xEE0A, 0xEDDE, 0xEDB3, 0xED88, 0xED5E,\n    0xED35, 0x3FFF, 0xE004, 0xC001, 0xE001, 0xDFFD, 0x3FFF, 0x1FFF,\n    0x1FFF, 0xC001, 0x1FFF, 0xDFFD, 0x3FFF, 0x1FFF, 0x2003, 0xC001,\n    0x1FFF, 0xFFBC, 0xFFA9, 0xFFB7, 0xFFD5, 0xFFF3, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFF, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x000A, 0x000D, 0x000B, 0x0006, 0x0002, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xFEB8, 0xFEB3, 0xFEB7, 0xFEBD, 0xFEC4, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0x0053, 0x0058, 0x005E, 0x0065, 0x006A, 0x006D, 0x006E,\n    0x006F, 0x006F, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070,\n    0x006F, 0x006F, 0x006F, 0x006E, 0x006E, 0x006E, 0x006D, 0x006D,\n    0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D,\n    0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D,\n    0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D,\n    0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D,\n    0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D,\n    0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D,\n    0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D,\n    0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D,\n    0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D,\n    0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D,\n    0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D,\n    0x006D, 0xEDC8, 0xEAD8, 0xE711, 0xE33A, 0xE015, 0xDE69, 0xDDCC,\n    0xDD52, 0xDCF6, 0xDCB6, 0xDC8F, 0xDC7F, 0xDC82, 0xDC95, 0xDCB6,\n    0xDCE1, 0xDD15, 0xDD4D, 0xDD87, 0xDDC0, 0xDDF5, 0xDE23, 0xDE48,\n    0xDE60, 0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69,\n    0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69,\n    0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69,\n    0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69,\n    0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69,\n    0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69,\n    0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69,\n    0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69,\n    0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69,\n    0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69,\n    0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69, 0xDE69,\n    0xDE69, 0xBED3, 0xBECB, 0xBEC0, 0xBEB5, 0xBEAC, 0xBEA8, 0xBEA6,\n    0xBEA5, 0xBEA4, 0xBEA3, 0xBEA2, 0xBEA2, 0xBEA2, 0xBEA2, 0xBEA3,\n    0xBEA3, 0xBEA4, 0xBEA5, 0xBEA5, 0xBEA6, 0xBEA6, 0xBEA7, 0xBEA7,\n    0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8,\n    0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8,\n    0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8,\n    0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8,\n    0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8,\n    0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8,\n    0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8,\n    0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8,\n    0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8,\n    0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8,\n    0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8, 0xBEA8,\n    0xBEA8, 0x0CF8, 0x0D65, 0x0DF0, 0x0E7E, 0x0EF2, 0x0F30, 0x0F46,\n    0x0F58, 0x0F65, 0x0F6F, 0x0F74, 0x0F76, 0x0F76, 0x0F73, 0x0F6F,\n    0x0F68, 0x0F61, 0x0F59, 0x0F50, 0x0F48, 0x0F41, 0x0F3A, 0x0F35,\n    0x0F31, 0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30,\n    0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30,\n    0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30,\n    0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30,\n    0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30,\n    0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30,\n    0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30,\n    0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30,\n    0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30,\n    0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30,\n    0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30, 0x0F30,\n    0x0F30, 0x1162, 0x1357, 0x15DC, 0x186C, 0x1A84, 0x1BA2, 0x1C0A,\n    0x1C5C, 0x1C9A, 0x1CC4, 0x1CDE, 0x1CE9, 0x1CE7, 0x1CDA, 0x1CC4,\n    0x1CA7, 0x1C85, 0x1C60, 0x1C39, 0x1C13, 0x1BEF, 0x1BD0, 0x1BB8,\n    0x1BA8, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2,\n    0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2,\n    0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2,\n    0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2,\n    0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2,\n    0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2,\n    0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2,\n    0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2,\n    0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2,\n    0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2,\n    0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2, 0x1BA2,\n    0x1BA2, 0xB9E7, 0xBAB7, 0xBBC3, 0xBCD3, 0xBDB2, 0xBE28, 0xBE54,\n    0xBE76, 0xBE8F, 0xBEA1, 0xBEAC, 0xBEB0, 0xBEAF, 0xBEAA, 0xBEA1,\n    0xBE95, 0xBE87, 0xBE77, 0xBE67, 0xBE57, 0xBE49, 0xBE3C, 0xBE32,\n    0xBE2B, 0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28,\n    0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28,\n    0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28,\n    0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28,\n    0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28,\n    0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28,\n    0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28,\n    0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28,\n    0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28,\n    0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28,\n    0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28, 0xBE28,\n    0xBE28, 0xEB0D, 0xEBEF, 0xED0E, 0xEE26, 0xEEF4, 0xEF34, 0xEE32,\n    0xEC27, 0xEA36, 0xE97E, 0xEAA4, 0xECF1, 0xEF86, 0xF182, 0xF2AB,\n    0xF371, 0xF3EE, 0xF43D, 0xF474, 0xF490, 0xF480, 0xF432, 0xF397,\n    0xF1B1, 0xEF34, 0xECC9, 0xEA68, 0xE97E, 0xEAAC, 0xED02, 0xEF97,\n    0xF182, 0xF29B, 0xF361, 0xF3E6, 0xF43D, 0xF46F, 0xF470, 0xF42E,\n    0xF397, 0xF27E, 0xF0F1, 0xEF34, 0xECE1, 0xEA71, 0xE97E, 0xEAB0,\n    0xED05, 0xEF98, 0xF182, 0xF29C, 0xF364, 0xF3E9, 0xF43D, 0xF470,\n    0xF479, 0xF43A, 0xF397, 0xF192, 0xEF34, 0xED63, 0xEB72, 0xE9F5,\n    0xE97E, 0xEA1A, 0xEB4C, 0xECDB, 0xEE8F, 0xF02F, 0xF182, 0xF26E,\n    0xF316, 0xF399, 0xF418, 0xF43D, 0xF437, 0xF43E, 0xF436, 0xF402,\n    0xF383, 0xF262, 0xF0CA, 0xEF34, 0xED76, 0xEB7F, 0xE9F5, 0xE97E,\n    0xEAA8, 0xECF9, 0xEF8E, 0xF182, 0xF2A5, 0xF36E, 0xF3EF, 0xF43D,\n    0xF46F, 0xF485, 0xF472, 0xF427, 0xF397, 0xF1B9, 0xEF34, 0xECC1,\n    0xEA61, 0xE97E, 0xEAA7, 0xECEC, 0xEF7B, 0xF182, 0xF29D, 0xF344,\n    0xF3EB, 0xFEC3, 0xFBE0, 0xF823, 0xF457, 0xF148, 0xEFBF, 0xF08E,\n    0xF354, 0xF712, 0xFAC8, 0xFF59, 0x0505, 0x09DD, 0x0BEE, 0x09E5,\n    0x050F, 0xFF70, 0xFB0C, 0xF863, 0xF66F, 0xF4E6, 0xF37D, 0xF1EA,\n    0xEFF6, 0xEFBF, 0xF290, 0xF6AF, 0xFAC8, 0xFF82, 0x0529, 0x09EA,\n    0x0BEE, 0x09F1, 0x052F, 0xFF96, 0xFB0C, 0xF80E, 0xF5AC, 0xF3B2,\n    0xF1EA, 0xF03B, 0xEF3D, 0xEFBF, 0xF267, 0xF67E, 0xFAC8, 0xFFB1,\n    0x0554, 0x09FA, 0x0BEE, 0x09E4, 0x050E, 0xFF70, 0xFB0C, 0xF83C,\n    0xF5E6, 0xF3DB, 0xF1EA, 0xF000, 0xEFBF, 0xF1B3, 0xF47E, 0xF7AC,\n    0xFAC8, 0xFE0C, 0x01B7, 0x055E, 0x0893, 0x0AE7, 0x0BEE, 0x0A58,\n    0x063A, 0x013B, 0xFD05, 0xFB0C, 0xF913, 0xF70E, 0xF519, 0xF34C,\n    0xF1C1, 0xF051, 0xEF64, 0xEFBF, 0xF183, 0xF420, 0xF74F, 0xFAC8,\n    0xFF70, 0x0519, 0x09E4, 0x0BEE, 0x09DA, 0x04F3, 0xFF51, 0xFB0C,\n    0xF881, 0xF686, 0xF4E7, 0xF36F, 0xF1EA, 0xEFFC, 0xEFBF, 0xF280,\n    0xF686, 0xFAC8, 0xFF99, 0x0507, 0x09A0, 0x0BEE, 0x09EF, 0x04B9,\n    0xFF85, 0xBDF4, 0xB932, 0xB311, 0xACE6, 0xA806, 0xA5C9, 0xA761,\n    0xAC49, 0xB342, 0xBB0C, 0xC63B, 0xD4BF, 0xE162, 0xE6F0, 0xE1ED,\n    0xD5D0, 0xC7D3, 0xBD30, 0xB735, 0xB328, 0xB03B, 0xAD9E, 0xAA81,\n    0xA66F, 0xA5C9, 0xAADA, 0xB280, 0xBB0C, 0xC699, 0xD514, 0xE184,\n    0xE6F0, 0xE206, 0xD61A, 0xC828, 0xBD30, 0xB68D, 0xB1C1, 0xAE00,\n    0xAA81, 0xA708, 0xA4EE, 0xA5C9, 0xAA85, 0xB215, 0xBB0C, 0xC708,\n    0xD577, 0xE1A9, 0xE6F0, 0xE1EA, 0xD5CD, 0xC7D2, 0xBD30, 0xB6F7,\n    0xB241, 0xAE57, 0xAA81, 0xA67E, 0xA5C9, 0xA949, 0xAE54, 0xB469,\n    0xBB0C, 0xC2E2, 0xCC1B, 0xD585, 0xDDED, 0xE422, 0xE6F0, 0xE311,\n    0xD8D2, 0xCC5E, 0xC1E3, 0xBD30, 0xB916, 0xB4F7, 0xB0FE, 0xAD57,\n    0xAA2D, 0xA731, 0xA539, 0xA5C9, 0xA8E3, 0xAD82, 0xB394, 0xBB0C,\n    0xC670, 0xD4EE, 0xE175, 0xE6F0, 0xE1D3, 0xD58E, 0xC78A, 0xBD30,\n    0xB77B, 0xB361, 0xB044, 0xAD83, 0xAA81, 0xA67B, 0xA5C9, 0xAAB3,\n    0xB222, 0xBB0C, 0xC6CB, 0xD4B8, 0xE0C9, 0xE6F0, 0xE209, 0xD506,\n    0xC803, 0x14DB, 0x13C1, 0x1258, 0x10F2, 0x0FDE, 0x0F6F, 0x104C,\n    0x123B, 0x1439, 0x1542, 0x14C4, 0x1365, 0x11F7, 0x1150, 0x1202,\n    0x137E, 0x14E4, 0x1554, 0x148E, 0x1322, 0x116A, 0x0FC2, 0x0E85,\n    0x0E6C, 0x0F6F, 0x1179, 0x13EE, 0x1542, 0x14C7, 0x1367, 0x11F8,\n    0x1150, 0x1203, 0x1382, 0x14E8, 0x1554, 0x143C, 0x1233, 0x1008,\n    0x0E85, 0x0E17, 0x0E7A, 0x0F6F, 0x1167, 0x13E4, 0x1542, 0x14CA,\n    0x136A, 0x11F9, 0x1150, 0x1202, 0x137E, 0x14E4, 0x1554, 0x1445,\n    0x1244, 0x1018, 0x0E85, 0x0E76, 0x0F6F, 0x10E5, 0x12C6, 0x1470,\n    0x1542, 0x151A, 0x1468, 0x136E, 0x126B, 0x11A1, 0x1150, 0x11CA,\n    0x12EA, 0x143B, 0x154B, 0x1554, 0x13F9, 0x1262, 0x10C9, 0x0F66,\n    0x0E71, 0x0E34, 0x0E9D, 0x0F6F, 0x10D5, 0x12B4, 0x1465, 0x1542,\n    0x14C6, 0x1366, 0x11F8, 0x1150, 0x1201, 0x137B, 0x14E1, 0x1554,\n    0x148F, 0x131D, 0x1160, 0x0FB7, 0x0E85, 0x0E6E, 0x0F6F, 0x117C,\n    0x13EE, 0x1542, 0x14CE, 0x1372, 0x1202, 0x1150, 0x11F4, 0x136D,\n    0x14E6, 0xFEC2, 0xFBE2, 0xF836, 0xF499, 0xF1E1, 0xF0E7, 0xF306,\n    0xF7CA, 0xFD58, 0x01D4, 0x0579, 0x091F, 0x0BE2, 0x0CDC, 0x0B69,\n    0x0826, 0x0414, 0x0034, 0xFCB3, 0xF92C, 0xF5C7, 0xF2AD, 0xF006,\n    0xEF02, 0xF0E7, 0xF606, 0xFC9B, 0x01D4, 0x05A0, 0x0940, 0x0BED,\n    0x0CDC, 0x0B79, 0x084D, 0x043E, 0x0034, 0xFC06, 0xF770, 0xF331,\n    0xF006, 0xEE84, 0xEEC8, 0xF0E7, 0xF5C8, 0xFC60, 0x01D4, 0x05CF,\n    0x096A, 0x0BFD, 0x0CDC, 0x0B6B, 0x0828, 0x0415, 0x0034, 0xFC3C,\n    0xF7B7, 0xF364, 0xF006, 0xEF1D, 0xF0E7, 0xF490, 0xF94E, 0xFE14,\n    0x01D4, 0x04A7, 0x0740, 0x097E, 0x0B43, 0x0C6D, 0x0CDC, 0x0BA9,\n    0x08BB, 0x052E, 0x021D, 0x0034, 0xFCCA, 0xF90B, 0xF55F, 0xF22A,\n    0xEFD3, 0xEEC4, 0xEF1F, 0xF0E7, 0xF44E, 0xF8E0, 0xFDB1, 0x01D4,\n    0x058F, 0x0932, 0x0BE8, 0x0CDC, 0x0B5F, 0x0808, 0x03F2, 0x0034,\n    0xFCD2, 0xF941, 0xF5C2, 0xF298, 0xF006, 0xEF07, 0xF0E7, 0xF5FD,\n    0xFC76, 0x01D4, 0x05BD, 0x092D, 0x0BB3, 0x0CDC, 0x0B66, 0x07C9,\n    0x042B, 0xC279, 0xC831, 0xCF7D, 0xD6AF, 0xDC1B, 0xDE14, 0xD9EF,\n    0xD08F, 0xC5A1, 0xBCD4, 0xB5C2, 0xAEB9, 0xA968, 0xA781, 0xAA35,\n    0xB05B, 0xB81D, 0xBFA7, 0xC6AD, 0xCDDD, 0xD4D4, 0xDB2F, 0xE089,\n    0xE239, 0xDE14, 0xD3F2, 0xC70C, 0xBCD4, 0xB576, 0xAE77, 0xA952,\n    0xA781, 0xAA15, 0xB00E, 0xB7CA, 0xBFA7, 0xC80E, 0xD16C, 0xDA20,\n    0xE089, 0xE35E, 0xE281, 0xDE14, 0xD46E, 0xC780, 0xBCD4, 0xB519,\n    0xAE25, 0xA934, 0xA781, 0xAA30, 0xB057, 0xB81C, 0xBFA7, 0xC7A3,\n    0xD0E0, 0xD9B9, 0xE089, 0xE201, 0xDE14, 0xD6D3, 0xCD81, 0xC429,\n    0xBCD4, 0xB756, 0xB252, 0xAE00, 0xAA9B, 0xA85D, 0xA781, 0xA9C2,\n    0xAF50, 0xB610, 0xBBE7, 0xBFA7, 0xC698, 0xCE3B, 0xD5B9, 0xDC3D,\n    0xE0F0, 0xE2D9, 0xE1D2, 0xDE14, 0xD756, 0xCE5A, 0xC4EB, 0xBCD4,\n    0xB597, 0xAE94, 0xA95C, 0xA781, 0xAA4A, 0xB096, 0xB861, 0xBFA7,\n    0xC66E, 0xCDB4, 0xD4DF, 0xDB59, 0xE089, 0xE22E, 0xDE14, 0xD404,\n    0xC753, 0xBCD4, 0xB53D, 0xAE9E, 0xA9C4, 0xA781, 0xAA3C, 0xB116,\n    0xB7EF, 0xBFB5, 0xBFB5, 0xBFB5, 0xBFB5, 0xDFDE, 0xC001, 0xDFDB,\n    0xDFDE, 0xC001, 0xDFDB, 0xE13B, 0xE69C, 0xED8B, 0xF4DD, 0xFB68,\n    0x0000, 0x01D1, 0x019E, 0x009B, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xFAA4, 0xFB94, 0xFCC9, 0xFE10, 0xFF34,\n    0x0000, 0x0051, 0x0048, 0x001B, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xFAEC, 0xFB8D, 0xFC6E, 0xFD81, 0xFEB6,\n    0x0000, 0x01F2, 0x048F, 0x06ED, 0x0826, 0x076E, 0x0575, 0x0381,\n    0x02DA, 0x047C, 0x077F, 0x0A53, 0x0B68, 0x0A4D, 0x0803, 0x0523,\n    0x0244, 0x0000, 0xFF2A, 0x0000, 0x02BB, 0x0639, 0x0826, 0x0773,\n    0x0579, 0x0382, 0x02DA, 0x047C, 0x077F, 0x0A53, 0x0B68, 0x0A4D,\n    0x0803, 0x0523, 0x0244, 0x0000, 0xFF2A, 0x0000, 0x02B9, 0x0635,\n    0x0826, 0x0777, 0x057D, 0x0384, 0x02DA, 0x047B, 0x077D, 0x0A50,\n    0x0B68, 0x0A58, 0x081F, 0x054A, 0x0266, 0x0000, 0x0000, 0x01B3,\n    0x03BD, 0x05BE, 0x0756, 0x0826, 0x07BB, 0x0655, 0x049D, 0x033C,\n    0x02DA, 0x0408, 0x065B, 0x0903, 0x0B2F, 0x0B68, 0x09B1, 0x07C6,\n    0x05C4, 0x03C5, 0x01E6, 0x0042, 0xFF5D, 0x0000, 0x01FE, 0x0498,\n    0x06EF, 0x0826, 0x0771, 0x0579, 0x0384, 0x02DA, 0x047A, 0x077D,\n    0x0A53, 0x0B68, 0x0A47, 0x07F2, 0x0509, 0x022D, 0x0000, 0xFF30,\n    0x0000, 0x02BF, 0x0637, 0x0826, 0x077D, 0x058C, 0x0394, 0x02DA,\n    0x045F, 0x0759, 0x0A53, 0xA614, 0x9D34, 0x942B, 0x8BF9, 0x859D,\n    0x8215, 0x807B, 0x7F36, 0x7E46, 0x7D9F, 0x7D3A, 0x7D0F, 0x7D16,\n    0x7D49, 0x7D9F, 0x7E11, 0x7E97, 0x7F2A, 0x7FC2, 0x805A, 0x80E5,\n    0x815F, 0x81BF, 0x81FE, 0x8215, 0x8215, 0x8215, 0x8215, 0x8215,\n    0x8215, 0x8215, 0x8215, 0x8215, 0x8215, 0x8215, 0x8215, 0x8215,\n    0x8215, 0x8215, 0x8215, 0x8215, 0x8215, 0x8215, 0x8215, 0x8215,\n    0x8215, 0x8215, 0x8215, 0x8215, 0x8215, 0x8215, 0x8215, 0x8215,\n    0x8215, 0x8215, 0x8215, 0x8215, 0x8215, 0x8215, 0x8215, 0x8215,\n    0x8215, 0x8215, 0x8215, 0x8215, 0x8215, 0x8215, 0x8215, 0x8215,\n    0x8215, 0x8215, 0x8215, 0x8215, 0x8215, 0x8215, 0x8215, 0x8215,\n    0x8215, 0x8215, 0x8215, 0x8215, 0x8215, 0x8215, 0x8215, 0x8215,\n    0x8215, 0x8215, 0x8215, 0x8215, 0x8215, 0x8215, 0x8215, 0x8215,\n    0x8215, 0x8215, 0x8215, 0x8215, 0x8215, 0x8215, 0x8215, 0x8215,\n    0x8215, 0x8215, 0x8215, 0x8215, 0x8215, 0x8215, 0x8215, 0x8215,\n    0x8215, 0x8215, 0x8215, 0xFE3B, 0xFEA1, 0xFF25, 0xFFAD, 0x001A,\n    0x0055, 0x006B, 0x007B, 0x0088, 0x0091, 0x0096, 0x0098, 0x0098,\n    0x0095, 0x0091, 0x008B, 0x0084, 0x007C, 0x0074, 0x006C, 0x0065,\n    0x005F, 0x005A, 0x0056, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055,\n    0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055,\n    0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055,\n    0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055,\n    0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055,\n    0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055,\n    0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055,\n    0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055,\n    0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055,\n    0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055,\n    0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055,\n    0x0055, 0x0055, 0x0055, 0x3BCF, 0x3B4A, 0x3ACB, 0x3A5B, 0x3A06,\n    0x39D6, 0x39BE, 0x39AC, 0x399F, 0x3995, 0x398F, 0x398D, 0x398D,\n    0x3990, 0x3995, 0x399C, 0x39A3, 0x39AB, 0x39B4, 0x39BC, 0x39C4,\n    0x39CB, 0x39D1, 0x39D4, 0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6,\n    0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6,\n    0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6,\n    0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6,\n    0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6,\n    0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6,\n    0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6,\n    0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6,\n    0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6,\n    0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6,\n    0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6, 0x39D6,\n    0x39D6, 0x39D6, 0x39D6, 0x0000,\n};\n\n// 0x0600FA44\nstatic const u16 toad_seg6_animindex_0600FA44[] = {\n    0x0001, 0x0000, 0x0070, 0x0001, 0x0070, 0x0071, 0x0001, 0x0000, 0x0001, 0x00E1, 0x0001, 0x0000,\n    0x0070, 0x09BB, 0x0070, 0x0A2B, 0x0070, 0x0A9B,\n    0x0070, 0x086B, 0x0070, 0x08DB, 0x0070, 0x094B,\n    0x0001, 0x00E2, 0x0001, 0x00E3, 0x0001, 0x00E4,\n    0x0001, 0x0868, 0x0001, 0x0869, 0x0001, 0x086A,\n    0x0001, 0x0865, 0x0001, 0x0866, 0x0001, 0x0867,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0864,\n    0x0070, 0x05C1, 0x0070, 0x0631, 0x0070, 0x06A1,\n    0x0070, 0x00F1, 0x0001, 0x0000, 0x0070, 0x0161,\n    0x0001, 0x00E5, 0x0001, 0x00E6, 0x0001, 0x00E7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0863,\n    0x0070, 0x0711, 0x0070, 0x0781, 0x0070, 0x07F1,\n    0x0070, 0x01D1, 0x0070, 0x0241, 0x0070, 0x02B1,\n    0x0001, 0x00E8, 0x0001, 0x00E9, 0x0001, 0x00EA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0862,\n    0x0070, 0x0321, 0x0070, 0x0391, 0x0070, 0x0401,\n    0x0001, 0x00EB, 0x0001, 0x00EC, 0x0001, 0x00ED,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0861,\n    0x0070, 0x0471, 0x0070, 0x04E1, 0x0070, 0x0551,\n    0x0001, 0x00EE, 0x0001, 0x00EF, 0x0001, 0x00F0,\n};\n\n// 0x0600FB40\nstatic const struct Animation toad_seg6_anim_0600FB40 = {\n    1,\n    0,\n    0,\n    0,\n    0x70,\n    ANIMINDEX_NUMPARTS(toad_seg6_animindex_0600FA44),\n    toad_seg6_animvalue_0600E42C,\n    toad_seg6_animindex_0600FA44,\n    0,\n};\n"
  },
  {
    "path": "actors/toad/anims/data.inc.c",
    "content": "#include \"anim_06008F7C.inc.c\"\n#include \"anim_06009310.inc.c\"\n#include \"anim_060099F0.inc.c\"\n#include \"anim_0600A0D0.inc.c\"\n#include \"anim_0600B66C.inc.c\"\n#include \"anim_0600CE78.inc.c\"\n#include \"anim_0600E414.inc.c\"\n#include \"anim_0600FB40.inc.c\"\n"
  },
  {
    "path": "actors/toad/anims/table.inc.c",
    "content": "// 0x0600FB58\nconst struct Animation *const toad_seg6_anims_0600FB58[] = {\n    &toad_seg6_anim_0600B66C,\n    &toad_seg6_anim_0600CE78,\n    &toad_seg6_anim_0600E414,\n    &toad_seg6_anim_0600FB40,\n    &toad_seg6_anim_060099F0,\n    &toad_seg6_anim_0600A0D0,\n    &toad_seg6_anim_06008F7C,\n    &toad_seg6_anim_06009310,\n};\n"
  },
  {
    "path": "actors/toad/geo.inc.c",
    "content": "// 0x0D000114\nconst GeoLayout toad_geo_000114[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 83, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 126, -37, 0, toad_seg6_dl_06007710),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 25, 8, 0, toad_seg6_dl_06007A48),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 34, 8, 0, toad_seg6_dl_06007EB0),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 4, 7, 38, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 37, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 9, -25, 3, toad_seg6_dl_06008890),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 4, 7, -38, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 37, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 9, -25, -3, toad_seg6_dl_06008BD8),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 61, -3, 52, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 17, 0, 4, toad_seg6_dl_060081F8),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 61, -3, -52, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 17, 0, -4, toad_seg6_dl_06008520),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0D00027C\nconst GeoLayout toad_geo_00027C[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 83, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n#ifdef VERSION_JP\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 126, -37, 0, toad_seg6_dl_06007710),\n#else\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 126, -37, 0, toad_seg6_us_dl_06007788),\n#endif\n                GEO_CLOSE_NODE(),\n#ifdef VERSION_JP\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 25, 8, 0, toad_seg6_dl_06007A48),\n#else\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 25, 8, 0, toad_seg6_us_dl_06007B00),\n#endif\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 34, 8, 0, toad_seg6_dl_06007EB0),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 4, 7, 38, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 37, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 9, -25, 3, toad_seg6_dl_06008890),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 4, 7, -38, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 37, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 9, -25, -3, toad_seg6_dl_06008BD8),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 61, -3, 52, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 17, 0, 4, toad_seg6_dl_060081F8),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_TRANSPARENT, 61, -3, -52, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n#ifdef VERSION_JP\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 17, 0, -4, toad_seg6_dl_06008520),\n#else\n                        GEO_ANIMATED_PART(LAYER_TRANSPARENT, 17, 0, -4, toad_seg6_us_dl_06008608),\n#endif\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0D0003E4\nconst GeoLayout toad_geo[] = {\n    GEO_CULLING_RADIUS(1000),\n    GEO_OPEN_NODE(),\n        GEO_SHADOW(SHADOW_CIRCLE_9_VERTS, 0x96, 100),\n        GEO_OPEN_NODE(),\n            GEO_SCALE(0x00, 16384),\n            GEO_OPEN_NODE(),\n                GEO_ASM(10, geo_update_layer_transparency),\n                GEO_SWITCH_CASE(2, geo_switch_anim_state),\n                GEO_OPEN_NODE(),\n                    GEO_BRANCH(1, toad_geo_000114),\n                    GEO_BRANCH(1, toad_geo_00027C),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\nUNUSED static const u64 toad_unused_1 = 0;\n"
  },
  {
    "path": "actors/toad/model.inc.c",
    "content": "// Toad\n\n// 0x06005908\nstatic const Lights1 toad_seg6_lights_06005908 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x06005920\nALIGNED8 static const Texture toad_seg6_texture_06005920[] = {\n#include \"actors/toad/toad_face.rgba16.inc.c\"\n};\n\n// 0x06006120\nALIGNED8 static const Texture toad_seg6_texture_06006120[] = {\n#include \"actors/toad/toad_head.rgba16.inc.c\"\n};\n\n// 0x06006920\nstatic const Vtx toad_seg6_vertex_06006920[] = {\n    {{{   -43,   -102,    106}, 0, {    36,    848}, {0xba, 0xcc, 0x5b, 0xff}}},\n    {{{   -56,    -68,    103}, 0, {  -108,    448}, {0xa9, 0xfb, 0x5b, 0xff}}},\n    {{{   -77,    -96,     50}, 0, {  -314,    702}, {0x94, 0xc1, 0x13, 0xff}}},\n    {{{     0,   -135,     97}, 0, {   486,   1044}, {0x00, 0x8d, 0x34, 0xff}}},\n    {{{   -42,   -128,     69}, 0, {    46,    990}, {0xbb, 0x9b, 0x1e, 0xff}}},\n    {{{     0,    -99,    124}, 0, {   480,    722}, {0x00, 0xd4, 0x76, 0xff}}},\n    {{{     0,    -55,    127}, 0, {   472,    332}, {0x00, 0xfe, 0x7e, 0xff}}},\n    {{{    44,   -102,    106}, 0, {   930,    840}, {0x46, 0xcc, 0x5b, 0xff}}},\n    {{{     0,    -29,    125}, 0, {   466,     92}, {0x00, 0x13, 0x7d, 0xff}}},\n    {{{    57,    -68,    103}, 0, {  1058,    436}, {0x57, 0xfb, 0x5b, 0xff}}},\n    {{{    78,    -96,     50}, 0, {  1274,    688}, {0x72, 0xcc, 0x0e, 0xff}}},\n    {{{    43,   -128,     69}, 0, {   926,    980}, {0x47, 0x9a, 0x18, 0xff}}},\n    {{{   -56,    -20,    101}, 0, {  -118,     16}, {0xb5, 0x11, 0x64, 0xff}}},\n    {{{    57,    -20,    101}, 0, {  1052,      4}, {0x4a, 0x11, 0x65, 0xff}}},\n    {{{     0,      4,    113}, 0, {   460,   -208}, {0x00, 0x2b, 0x77, 0xff}}},\n};\n\n// 0x06006A10\nstatic const Vtx toad_seg6_vertex_06006A10[] = {\n    {{{     0,   -143,      8}, 0, {  -546,    672}, {0xf8, 0x85, 0xe4, 0xff}}},\n    {{{   -29,   -135,     34}, 0, {  -802,    592}, {0xc8, 0x8f, 0xfd, 0xff}}},\n    {{{   -56,   -113,      7}, 0, {  -560,    370}, {0xab, 0xae, 0xd4, 0xff}}},\n    {{{   -56,    -68,    103}, 0, {  -108,    448}, {0xa9, 0xfb, 0x5b, 0xff}}},\n    {{{   -56,    -20,    101}, 0, {  -118,     16}, {0xb5, 0x11, 0x64, 0xff}}},\n    {{{   -86,    -52,     32}, 0, {  -420,    314}, {0x84, 0xea, 0x06, 0xff}}},\n    {{{   -77,    -96,     50}, 0, {  -314,    702}, {0x94, 0xc1, 0x13, 0xff}}},\n    {{{    87,    -52,     32}, 0, {  1364,    296}, {0x7c, 0xf2, 0x16, 0xff}}},\n    {{{    57,    -20,    101}, 0, {  1052,      4}, {0x4a, 0x11, 0x65, 0xff}}},\n    {{{    57,    -68,    103}, 0, {  1058,    436}, {0x57, 0xfb, 0x5b, 0xff}}},\n    {{{    78,    -96,     50}, 0, {  1274,    688}, {0x72, 0xcc, 0x0e, 0xff}}},\n    {{{   -42,   -128,     69}, 0, { -1146,    510}, {0xbb, 0x9b, 0x1e, 0xff}}},\n    {{{   -77,    -96,     50}, 0, {  -998,    182}, {0x94, 0xc1, 0x13, 0xff}}},\n    {{{     0,   -135,     97}, 0, { -1412,    574}, {0x00, 0x8d, 0x34, 0xff}}},\n    {{{   -86,    -52,     32}, 0, {  -858,   -260}, {0x84, 0xea, 0x06, 0xff}}},\n    {{{   -61,    -80,    -18}, 0, {  -338,     40}, {0xb0, 0xc1, 0xb5, 0xff}}},\n};\n\n// 0x06006B10\nstatic const Vtx toad_seg6_vertex_06006B10[] = {\n    {{{     0,   -143,      8}, 0, {  -546,    672}, {0xf8, 0x85, 0xe4, 0xff}}},\n    {{{   -56,   -113,      7}, 0, {  -560,    370}, {0xab, 0xae, 0xd4, 0xff}}},\n    {{{     0,   -124,    -23}, 0, {  -254,    492}, {0x02, 0xa1, 0xad, 0xff}}},\n    {{{   -61,    -80,    -18}, 0, {  -338,     40}, {0xb0, 0xc1, 0xb5, 0xff}}},\n    {{{     0,   -135,     97}, 0, { -1412,    574}, {0x00, 0x8d, 0x34, 0xff}}},\n    {{{    30,   -135,     34}, 0, {  -802,    592}, {0x33, 0x8e, 0xef, 0xff}}},\n    {{{    43,   -128,     69}, 0, { -1146,    510}, {0x47, 0x9a, 0x18, 0xff}}},\n    {{{     0,    -94,    -43}, 0, {   -92,    182}, {0x15, 0xb7, 0x9b, 0xff}}},\n    {{{    57,   -113,      7}, 0, {  -560,    370}, {0x4d, 0xa9, 0xcf, 0xff}}},\n    {{{    62,    -80,    -18}, 0, {  -338,     40}, {0x62, 0xc9, 0xc8, 0xff}}},\n    {{{    78,    -96,     50}, 0, {  -998,    182}, {0x72, 0xcc, 0x0e, 0xff}}},\n    {{{    87,    -52,     32}, 0, {  -858,   -260}, {0x7c, 0xf2, 0x16, 0xff}}},\n};\n\n// 0x06006BD0\nstatic const Vtx toad_seg6_vertex_06006BD0[] = {\n    {{{    34,    -28,     97}, 0, {   -26,    942}, {0x12, 0x9f, 0x4e, 0xff}}},\n    {{{   142,    -44,     36}, 0, {  1040,   1000}, {0x45, 0xa0, 0x2c, 0xff}}},\n    {{{    71,     13,    144}, 0, {    98,    396}, {0x28, 0xbb, 0x62, 0xff}}},\n    {{{   -33,    -28,     97}, 0, {  -532,   1064}, {0xfb, 0x9e, 0x50, 0xff}}},\n    {{{   176,      0,     13}, 0, {  1482,    566}, {0x78, 0xdd, 0x10, 0xff}}},\n    {{{    89,     71,    148}, 0, {   306,   -192}, {0x3e, 0x0d, 0x6d, 0xff}}},\n    {{{   -70,     13,    145}, 0, {  -966,    654}, {0xe6, 0xc0, 0x69, 0xff}}},\n    {{{    34,    -28,     97}, 0, {   734,   1682}, {0x12, 0x9f, 0x4e, 0xff}}},\n    {{{    76,    -57,     47}, 0, {   622,   1826}, {0x1f, 0x93, 0x38, 0xff}}},\n    {{{   142,    -44,     36}, 0, {   640,   1996}, {0x45, 0xa0, 0x2c, 0xff}}},\n    {{{    71,   -102,    -71}, 0, {   322,   1896}, {0x1d, 0x85, 0xfa, 0xff}}},\n    {{{    34,    -88,     -5}, 0, {   458,   1758}, {0x0a, 0x86, 0x20, 0xff}}},\n    {{{  -175,     48,    -12}, 0, {  -402,    498}, {0x88, 0x21, 0xed, 0xff}}},\n    {{{   -70,    149,     72}, 0, {   194,     88}, {0xd3, 0x75, 0x12, 0xff}}},\n    {{{  -141,     91,    -35}, 0, {  -264,    168}, {0xad, 0x52, 0xd1, 0xff}}},\n};\n\n// 0x06006CC0\nstatic const Vtx toad_seg6_vertex_06006CC0[] = {\n    {{{   -78,    122,    -51}, 0, {   490,    500}, {0xd3, 0x65, 0xc3, 0xff}}},\n    {{{   -38,    154,      8}, 0, {  1016,    282}, {0xe4, 0x79, 0xe8, 0xff}}},\n    {{{     0,    133,    -57}, 0, {   506,    -88}, {0x00, 0x70, 0xc5, 0xff}}},\n    {{{   -70,    149,     72}, 0, {   194,     88}, {0xd3, 0x75, 0x12, 0xff}}},\n    {{{    71,    149,     72}, 0, {  1052,    -96}, {0x26, 0x77, 0x15, 0xff}}},\n    {{{    39,    154,      7}, 0, {   796,   -256}, {0x10, 0x7c, 0xee, 0xff}}},\n    {{{   -38,    154,      8}, 0, {   320,   -154}, {0xe4, 0x79, 0xe8, 0xff}}},\n    {{{   -87,    119,    122}, 0, {    22,    468}, {0xc3, 0x53, 0x49, 0xff}}},\n    {{{    71,    149,     72}, 0, {  1066,     -2}, {0x26, 0x77, 0x15, 0xff}}},\n    {{{   -70,    149,     72}, 0, {   120,     78}, {0xd3, 0x75, 0x12, 0xff}}},\n    {{{    89,    119,    122}, 0, {  1202,    368}, {0x3a, 0x54, 0x4a, 0xff}}},\n    {{{   -87,     71,    148}, 0, {    50,    828}, {0xc5, 0x10, 0x6f, 0xff}}},\n    {{{    89,     71,    148}, 0, {  1230,    728}, {0x3e, 0x0d, 0x6d, 0xff}}},\n    {{{   -70,     13,    145}, 0, {   200,   1082}, {0xe6, 0xc0, 0x69, 0xff}}},\n    {{{  -141,     91,    -35}, 0, {   472,   1082}, {0xad, 0x52, 0xd1, 0xff}}},\n    {{{   -70,     34,   -143}, 0, {  -446,    512}, {0xda, 0x31, 0x92, 0xff}}},\n};\n\n// 0x06006DC0\nstatic const Vtx toad_seg6_vertex_06006DC0[] = {\n    {{{  -141,     91,    -35}, 0, {   472,   1082}, {0xad, 0x52, 0xd1, 0xff}}},\n    {{{   -70,    149,     72}, 0, {  1420,    692}, {0xd3, 0x75, 0x12, 0xff}}},\n    {{{   -38,    154,      8}, 0, {  1016,    282}, {0xe4, 0x79, 0xe8, 0xff}}},\n    {{{   -38,     90,   -112}, 0, {   -22,    184}, {0xf0, 0x54, 0xa3, 0xff}}},\n    {{{   -78,    122,    -51}, 0, {   490,    500}, {0xd3, 0x65, 0xc3, 0xff}}},\n    {{{     0,    133,    -57}, 0, {   506,    -88}, {0x00, 0x70, 0xc5, 0xff}}},\n    {{{  -175,     48,    -12}, 0, {  -354,    -42}, {0x88, 0x21, 0xed, 0xff}}},\n    {{{   -87,    119,    122}, 0, {  1274,     12}, {0xc3, 0x53, 0x49, 0xff}}},\n    {{{   -70,    149,     72}, 0, {  1116,   -304}, {0xd3, 0x75, 0x12, 0xff}}},\n    {{{  -175,      0,     13}, 0, {  -346,    408}, {0x87, 0xe0, 0x13, 0xff}}},\n    {{{   -87,     71,    148}, 0, {  1280,    464}, {0xc5, 0x10, 0x6f, 0xff}}},\n    {{{  -141,    -44,     37}, 0, {  -168,    914}, {0xba, 0xa7, 0x37, 0xff}}},\n    {{{   -70,     34,   -143}, 0, {  -446,    512}, {0xda, 0x31, 0x92, 0xff}}},\n    {{{    89,     71,    148}, 0, {   -76,    968}, {0x3e, 0x0d, 0x6d, 0xff}}},\n    {{{   176,      0,     13}, 0, {  1032,    922}, {0x78, 0xdd, 0x10, 0xff}}},\n    {{{   176,     47,    -12}, 0, {  1026,    610}, {0x79, 0x22, 0xf0, 0xff}}},\n};\n\n// 0x06006EC0\nstatic const Vtx toad_seg6_vertex_06006EC0[] = {\n    {{{  -141,    -44,     37}, 0, {  -168,    914}, {0xba, 0xa7, 0x37, 0xff}}},\n    {{{   -70,     13,    145}, 0, {  1136,    958}, {0xe6, 0xc0, 0x69, 0xff}}},\n    {{{   -87,     71,    148}, 0, {  1280,    464}, {0xc5, 0x10, 0x6f, 0xff}}},\n    {{{   -66,    -61,     45}, 0, {   554,   1460}, {0xe7, 0x96, 0x3f, 0xff}}},\n    {{{   -33,    -28,     97}, 0, {   706,   1508}, {0xfb, 0x9e, 0x50, 0xff}}},\n    {{{   -70,     13,    145}, 0, {   842,   1372}, {0xe6, 0xc0, 0x69, 0xff}}},\n    {{{  -141,    -44,     37}, 0, {   524,   1270}, {0xba, 0xa7, 0x37, 0xff}}},\n    {{{   -33,    -88,     -5}, 0, {   432,   1586}, {0xec, 0x89, 0x25, 0xff}}},\n    {{{   -70,   -102,    -71}, 0, {   266,   1534}, {0xd7, 0x88, 0x00, 0xff}}},\n    {{{    89,     71,    148}, 0, {   -76,    968}, {0x3e, 0x0d, 0x6d, 0xff}}},\n    {{{   176,     47,    -12}, 0, {  1026,    610}, {0x79, 0x22, 0xf0, 0xff}}},\n    {{{    89,    119,    122}, 0, {   -82,    656}, {0x3a, 0x54, 0x4a, 0xff}}},\n    {{{    34,    -88,     -5}, 0, {   458,   1758}, {0x0a, 0x86, 0x20, 0xff}}},\n    {{{   142,     91,    -36}, 0, {   908,    228}, {0x54, 0x55, 0xd7, 0xff}}},\n    {{{    71,    149,     72}, 0, {    18,    266}, {0x26, 0x77, 0x15, 0xff}}},\n};\n\n// 0x06006FB0\nstatic const Vtx toad_seg6_vertex_06006FB0[] = {\n    {{{   -88,    -72,   -121}, 0, {  -182,    430}, {0xc2, 0xae, 0xb7, 0xff}}},\n    {{{  -175,     48,    -12}, 0, {  1388,    114}, {0x88, 0x21, 0xed, 0xff}}},\n    {{{   -88,    -23,   -147}, 0, {  -130,    -66}, {0xc6, 0xf2, 0x91, 0xff}}},\n    {{{  -175,      0,     13}, 0, {  1336,    612}, {0x87, 0xe0, 0x13, 0xff}}},\n    {{{   -70,   -102,    -71}, 0, {   -80,    898}, {0xd7, 0x88, 0x00, 0xff}}},\n    {{{  -141,    -44,     37}, 0, {  1138,   1040}, {0xba, 0xa7, 0x37, 0xff}}},\n    {{{    34,    -88,     -5}, 0, {   458,   1758}, {0x0a, 0x86, 0x20, 0xff}}},\n    {{{   -70,   -102,    -71}, 0, {   266,   1534}, {0xd7, 0x88, 0x00, 0xff}}},\n    {{{    71,   -102,    -71}, 0, {   322,   1896}, {0x1d, 0x85, 0xfa, 0xff}}},\n    {{{    71,    149,     72}, 0, {    18,    266}, {0x26, 0x77, 0x15, 0xff}}},\n    {{{   142,     91,    -36}, 0, {   908,    228}, {0x54, 0x55, 0xd7, 0xff}}},\n    {{{    79,    122,    -52}, 0, {   704,   -146}, {0x2c, 0x6b, 0xcf, 0xff}}},\n    {{{    39,    154,      7}, 0, {   210,   -124}, {0x10, 0x7c, 0xee, 0xff}}},\n    {{{    79,    122,    -52}, 0, {   -82,    342}, {0x2c, 0x6b, 0xcf, 0xff}}},\n    {{{    39,     90,   -112}, 0, {   670,    514}, {0x1c, 0x58, 0xaa, 0xff}}},\n    {{{     0,    133,    -57}, 0, {   430,   -262}, {0x00, 0x70, 0xc5, 0xff}}},\n};\n\n// 0x060070B0\nstatic const Vtx toad_seg6_vertex_060070B0[] = {\n    {{{    71,     34,   -144}, 0, {   848,   1202}, {0x2d, 0x32, 0x95, 0xff}}},\n    {{{   -38,     90,   -112}, 0, {  1178,    -54}, {0xf0, 0x54, 0xa3, 0xff}}},\n    {{{    39,     90,   -112}, 0, {   670,    514}, {0x1c, 0x58, 0xaa, 0xff}}},\n    {{{   142,     91,    -36}, 0, {  -508,    890}, {0x54, 0x55, 0xd7, 0xff}}},\n    {{{    79,    122,    -52}, 0, {   -82,    342}, {0x2c, 0x6b, 0xcf, 0xff}}},\n    {{{     0,    133,    -57}, 0, {   430,   -262}, {0x00, 0x70, 0xc5, 0xff}}},\n    {{{   142,    -44,     36}, 0, {   -38,    932}, {0x45, 0xa0, 0x2c, 0xff}}},\n    {{{    71,   -102,    -71}, 0, {  1100,    968}, {0x1d, 0x85, 0xfa, 0xff}}},\n    {{{    88,    -72,   -121}, 0, {  1238,    498}, {0x3a, 0xad, 0xb5, 0xff}}},\n    {{{    88,    -24,   -147}, 0, {   -90,    608}, {0x3d, 0xf2, 0x93, 0xff}}},\n    {{{   -70,     34,   -143}, 0, {   904,    182}, {0xda, 0x31, 0x92, 0xff}}},\n    {{{    71,     34,   -144}, 0, {   -10,    212}, {0x2d, 0x32, 0x95, 0xff}}},\n    {{{   -38,     90,   -112}, 0, {   662,   -172}, {0xf0, 0x54, 0xa3, 0xff}}},\n    {{{   -88,    -23,   -147}, 0, {  1048,    572}, {0xc6, 0xf2, 0x91, 0xff}}},\n    {{{    88,    -72,   -121}, 0, {   -72,    958}, {0x3a, 0xad, 0xb5, 0xff}}},\n    {{{   -88,    -72,   -121}, 0, {  1066,    922}, {0xc2, 0xae, 0xb7, 0xff}}},\n};\n\n// 0x060071B0\nstatic const Vtx toad_seg6_vertex_060071B0[] = {\n    {{{   176,      0,     13}, 0, {  -180,    454}, {0x78, 0xdd, 0x10, 0xff}}},\n    {{{    88,    -24,   -147}, 0, {  1236,     52}, {0x3d, 0xf2, 0x93, 0xff}}},\n    {{{   176,     47,    -12}, 0, {  -182,      6}, {0x79, 0x22, 0xf0, 0xff}}},\n    {{{    88,    -72,   -121}, 0, {  1238,    498}, {0x3a, 0xad, 0xb5, 0xff}}},\n    {{{   142,    -44,     36}, 0, {   -38,    932}, {0x45, 0xa0, 0x2c, 0xff}}},\n};\n\n// 0x06007200\nstatic const Vtx toad_seg6_vertex_06007200[] = {\n    {{{   176,     47,    -12}, 0, {     0,      0}, {0x79, 0x22, 0xf0, 0xff}}},\n    {{{    71,     34,   -144}, 0, {     0,      0}, {0x2d, 0x32, 0x95, 0xff}}},\n    {{{   142,     91,    -36}, 0, {     0,      0}, {0x54, 0x55, 0xd7, 0xff}}},\n    {{{   -38,    154,      8}, 0, {     0,      0}, {0xe4, 0x79, 0xe8, 0xff}}},\n    {{{    39,    154,      7}, 0, {     0,      0}, {0x10, 0x7c, 0xee, 0xff}}},\n    {{{     0,    133,    -57}, 0, {     0,      0}, {0x00, 0x70, 0xc5, 0xff}}},\n    {{{    79,    122,    -52}, 0, {     0,      0}, {0x2c, 0x6b, 0xcf, 0xff}}},\n    {{{   -88,    -23,   -147}, 0, {     0,      0}, {0xc6, 0xf2, 0x91, 0xff}}},\n    {{{  -141,     91,    -35}, 0, {     0,      0}, {0xad, 0x52, 0xd1, 0xff}}},\n    {{{   -70,     34,   -143}, 0, {     0,      0}, {0xda, 0x31, 0x92, 0xff}}},\n    {{{  -175,     48,    -12}, 0, {     0,      0}, {0x88, 0x21, 0xed, 0xff}}},\n    {{{    71,   -102,    -71}, 0, {     0,      0}, {0x1d, 0x85, 0xfa, 0xff}}},\n    {{{   -88,    -72,   -121}, 0, {     0,      0}, {0xc2, 0xae, 0xb7, 0xff}}},\n    {{{    88,    -72,   -121}, 0, {     0,      0}, {0x3a, 0xad, 0xb5, 0xff}}},\n    {{{   -70,   -102,    -71}, 0, {     0,      0}, {0xd7, 0x88, 0x00, 0xff}}},\n    {{{    88,    -24,   -147}, 0, {     0,      0}, {0x3d, 0xf2, 0x93, 0xff}}},\n};\n\n// 0x06007300 - 0x06007498\nconst Gfx toad_seg6_dl_06007300[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, toad_seg6_texture_06005920),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&toad_seg6_lights_06005908.l, 1),\n    gsSPLight(&toad_seg6_lights_06005908.a, 2),\n    gsSPVertex(toad_seg6_vertex_06006920, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 2,  4,  0, 0x0,  0,  5,  6, 0x0),\n    gsSP2Triangles( 3,  5,  0, 0x0,  6,  1,  0, 0x0),\n    gsSP2Triangles( 6,  5,  7, 0x0,  3,  7,  5, 0x0),\n    gsSP2Triangles( 1,  6,  8, 0x0,  8,  6,  9, 0x0),\n    gsSP2Triangles( 7,  9,  6, 0x0, 10,  9,  7, 0x0),\n    gsSP2Triangles( 3, 11,  7, 0x0,  7, 11, 10, 0x0),\n    gsSP2Triangles( 8, 12,  1, 0x0, 13, 14,  8, 0x0),\n    gsSP2Triangles( 9, 13,  8, 0x0, 12,  8, 14, 0x0),\n    gsSPVertex(toad_seg6_vertex_06006A10, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0,  1, 11, 12, 0x0),\n    gsSP2Triangles(13, 11,  1, 0x0,  1, 12,  2, 0x0),\n    gsSP2Triangles(13,  1,  0, 0x0,  2, 12, 14, 0x0),\n    gsSP1Triangle( 2, 14, 15, 0x0),\n    gsSPVertex(toad_seg6_vertex_06006B10, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  0,  5, 0x0,  4,  5,  6, 0x0),\n    gsSP2Triangles( 2,  3,  7, 0x0,  5,  0,  2, 0x0),\n    gsSP2Triangles( 5,  2,  8, 0x0,  8,  2,  7, 0x0),\n    gsSP2Triangles( 8,  7,  9, 0x0,  6,  5,  8, 0x0),\n    gsSP2Triangles( 6,  8, 10, 0x0, 10,  8,  9, 0x0),\n    gsSP1Triangle(10,  9, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06007498 - 0x060076C0\nconst Gfx toad_seg6_dl_06007498[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, toad_seg6_texture_06006120),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(toad_seg6_vertex_06006BD0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 3,  2,  6, 0x0,  6,  2,  5, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  8, 10,  9, 0x0),\n    gsSP2Triangles( 8, 11, 10, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(toad_seg6_vertex_06006CC0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 10,  7, 0x0),\n    gsSP2Triangles(11, 12, 10, 0x0, 13, 12, 11, 0x0),\n    gsSP2Triangles(14,  1,  0, 0x0, 15, 14,  0, 0x0),\n    gsSPVertex(toad_seg6_vertex_06006DC0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  7,  6, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0, 11, 10,  9, 0x0),\n    gsSP2Triangles(12,  4,  3, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(toad_seg6_vertex_06006EC0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  3,  6, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12,  7,  8, 0x0, 11, 10, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(toad_seg6_vertex_06006FB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  3,  0, 0x0,  4,  5,  3, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(toad_seg6_vertex_060070B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  2,  1,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(11, 10, 12, 0x0,  9, 13, 10, 0x0),\n    gsSP2Triangles(14, 13,  9, 0x0, 14, 15, 13, 0x0),\n    gsSPVertex(toad_seg6_vertex_060071B0, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP1Triangle( 4,  3,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x060076C0 - 0x06007710\nconst Gfx toad_seg6_dl_060076C0[] = {\n    gsSPVertex(toad_seg6_vertex_06007200, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06007710 - 0x06007788\nconst Gfx toad_seg6_dl_06007710[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(toad_seg6_dl_06007300),\n    gsSPDisplayList(toad_seg6_dl_06007498),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(toad_seg6_dl_060076C0),\n    gsDPPipeSync(),\n    gsSPEndDisplayList(),\n};\n\n#ifndef VERSION_JP\n// 0x06007788 - 0x06007808\nconst Gfx toad_seg6_us_dl_06007788[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPSetRenderMode(G_RM_CUSTOM_AA_ZB_XLU_SURF, G_RM_NOOP2),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(toad_seg6_dl_06007300),\n    gsSPDisplayList(toad_seg6_dl_06007498),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(toad_seg6_dl_060076C0),\n    gsDPPipeSync(),\n    gsSPEndDisplayList(),\n};\n#endif\n\n// 0x06007788\nstatic const Lights1 toad_seg6_lights_06007788 = gdSPDefLights1(\n    0x21, 0x13, 0x5a,\n    0x42, 0x27, 0xb5, 0x28, 0x28, 0x28\n);\n\n// 0x060077A0\nstatic const Vtx toad_seg6_vertex_060077A0[] = {\n    {{{   -80,    -27,    -24}, 0, {     0,      0}, {0x90, 0x28, 0xd5, 0xff}}},\n    {{{   -61,     26,     28}, 0, {     0,      0}, {0x9c, 0x3a, 0x32, 0xff}}},\n    {{{   -61,     26,    -27}, 0, {     0,      0}, {0x93, 0x37, 0xdf, 0xff}}},\n    {{{   -35,     68,    -34}, 0, {     0,      0}, {0xc6, 0x48, 0xaa, 0xff}}},\n    {{{    36,     68,    -34}, 0, {     0,      0}, {0x57, 0x4b, 0xcb, 0xff}}},\n    {{{    31,     26,    -60}, 0, {     0,      0}, {0x26, 0x35, 0x94, 0xff}}},\n    {{{    36,     60,     20}, 0, {     0,      0}, {0x54, 0x4d, 0x35, 0xff}}},\n    {{{    62,     26,     28}, 0, {     0,      0}, {0x63, 0x3f, 0x2d, 0xff}}},\n    {{{    62,     26,    -27}, 0, {     0,      0}, {0x6d, 0x2e, 0xd5, 0xff}}},\n    {{{    26,     29,     50}, 0, {     0,      0}, {0x45, 0x31, 0x5e, 0xff}}},\n    {{{    81,    -23,     30}, 0, {     0,      0}, {0x6a, 0x2e, 0x33, 0xff}}},\n    {{{    81,    -27,    -24}, 0, {     0,      0}, {0x71, 0x26, 0xd6, 0xff}}},\n    {{{    40,    -30,    -76}, 0, {     0,      0}, {0x32, 0x25, 0x92, 0xff}}},\n    {{{    40,    -18,     65}, 0, {     0,      0}, {0x4f, 0x32, 0x55, 0xff}}},\n    {{{   -80,    -23,     30}, 0, {     0,      0}, {0x93, 0x2c, 0x2f, 0xff}}},\n    {{{   -30,     26,    -60}, 0, {     0,      0}, {0xcf, 0x2b, 0x94, 0xff}}},\n};\n\n// 0x060078A0\nstatic const Vtx toad_seg6_vertex_060078A0[] = {\n    {{{   -35,     60,     20}, 0, {     0,      0}, {0xa1, 0x4b, 0x23, 0xff}}},\n    {{{   -61,     26,    -27}, 0, {     0,      0}, {0x93, 0x37, 0xdf, 0xff}}},\n    {{{   -61,     26,     28}, 0, {     0,      0}, {0x9c, 0x3a, 0x32, 0xff}}},\n    {{{   -25,     29,     50}, 0, {     0,      0}, {0xc2, 0x3a, 0x5d, 0xff}}},\n    {{{   -39,    -18,     65}, 0, {     0,      0}, {0xb7, 0x2a, 0x5e, 0xff}}},\n    {{{   -35,     68,    -34}, 0, {     0,      0}, {0xc6, 0x48, 0xaa, 0xff}}},\n    {{{    40,    -30,    -76}, 0, {     0,      0}, {0x32, 0x25, 0x92, 0xff}}},\n    {{{   -39,    -30,    -76}, 0, {     0,      0}, {0xcd, 0x27, 0x93, 0xff}}},\n    {{{   -30,     26,    -60}, 0, {     0,      0}, {0xcf, 0x2b, 0x94, 0xff}}},\n    {{{    31,     26,    -60}, 0, {     0,      0}, {0x26, 0x35, 0x94, 0xff}}},\n    {{{   -80,    -23,     30}, 0, {     0,      0}, {0x93, 0x2c, 0x2f, 0xff}}},\n    {{{   -80,    -27,    -24}, 0, {     0,      0}, {0x90, 0x28, 0xd5, 0xff}}},\n};\n\n// 0x06007960 - 0x06007A48\nconst Gfx toad_seg6_dl_06007960[] = {\n    gsSPLight(&toad_seg6_lights_06007788.l, 1),\n    gsSPLight(&toad_seg6_lights_06007788.a, 2),\n    gsSPVertex(toad_seg6_vertex_060077A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 8,  5,  4, 0x0,  9,  7,  6, 0x0),\n    gsSP2Triangles(10,  8,  7, 0x0, 10,  7,  9, 0x0),\n    gsSP2Triangles(10, 11,  8, 0x0, 12,  8, 11, 0x0),\n    gsSP2Triangles(12,  5,  8, 0x0, 10,  9, 13, 0x0),\n    gsSP2Triangles( 0, 14,  1, 0x0, 15,  0,  2, 0x0),\n    gsSPVertex(toad_seg6_vertex_060078A0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 4,  3,  2, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 5,  9,  8, 0x0,  4,  2, 10, 0x0),\n    gsSP2Triangles( 8,  1,  5, 0x0,  8,  7, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06007A48 - 0x06007A80\nconst Gfx toad_seg6_dl_06007A48[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsSPDisplayList(toad_seg6_dl_06007960),\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n#ifndef VERSION_JP\n// 0x06007B00 - 0x06007B28\nconst Gfx toad_seg6_us_dl_06007B00[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(toad_seg6_dl_06007960),\n    gsDPPipeSync(),\n    gsSPEndDisplayList(),\n};\n#endif\n\n// 0x06007A80\nstatic const Lights1 toad_seg6_lights_06007A80 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x06007A98\nstatic const Lights1 toad_seg6_lights_06007A98 = gdSPDefLights1(\n    0x7f, 0x6a, 0x50,\n    0xfe, 0xd5, 0xa1, 0x28, 0x28, 0x28\n);\n\n// 0x06007AB0\nstatic const Vtx toad_seg6_vertex_06007AB0[] = {\n    {{{    44,    -69,    -33}, 0, {     0,      0}, {0x21, 0x90, 0xd1, 0xff}}},\n    {{{   -34,    -45,    -60}, 0, {     0,      0}, {0xdb, 0xd0, 0x91, 0xff}}},\n    {{{    35,    -45,    -60}, 0, {     0,      0}, {0x2e, 0xf5, 0x8b, 0xff}}},\n    {{{    71,    -33,     25}, 0, {     0,      0}, {0x74, 0x05, 0x32, 0xff}}},\n    {{{    57,      9,     22}, 0, {     0,      0}, {0x67, 0x41, 0x23, 0xff}}},\n    {{{    29,      9,     49}, 0, {     0,      0}, {0x2b, 0x33, 0x6b, 0xff}}},\n    {{{    35,    -33,     61}, 0, {     0,      0}, {0x28, 0xe3, 0x74, 0xff}}},\n    {{{    44,    -69,     34}, 0, {     0,      0}, {0x43, 0xa0, 0x2e, 0xff}}},\n    {{{    71,    -38,    -29}, 0, {     0,      0}, {0x72, 0xdc, 0xd7, 0xff}}},\n    {{{    57,      9,    -26}, 0, {     0,      0}, {0x69, 0x30, 0xce, 0xff}}},\n    {{{   -43,    -69,     34}, 0, {     0,      0}, {0xdb, 0x96, 0x3a, 0xff}}},\n    {{{   -34,    -33,     61}, 0, {     0,      0}, {0xcf, 0x04, 0x74, 0xff}}},\n    {{{   -28,      9,    -51}, 0, {     0,      0}, {0xd6, 0x25, 0x8f, 0xff}}},\n    {{{    29,      9,    -51}, 0, {     0,      0}, {0x21, 0x2d, 0x8f, 0xff}}},\n};\n\n// 0x06007B90\nstatic const Vtx toad_seg6_vertex_06007B90[] = {\n    {{{   -70,    -38,    -29}, 0, {     0,      0}, {0x8d, 0xfe, 0xcc, 0xff}}},\n    {{{   -56,      9,     22}, 0, {     0,      0}, {0x96, 0x35, 0x2c, 0xff}}},\n    {{{   -56,      9,    -26}, 0, {     0,      0}, {0x98, 0x3c, 0xda, 0xff}}},\n    {{{    44,    -69,    -33}, 0, {     0,      0}, {0x21, 0x90, 0xd1, 0xff}}},\n    {{{   -43,    -69,     34}, 0, {     0,      0}, {0xdb, 0x96, 0x3a, 0xff}}},\n    {{{   -43,    -69,    -33}, 0, {     0,      0}, {0xc0, 0x99, 0xdc, 0xff}}},\n    {{{   -34,    -45,    -60}, 0, {     0,      0}, {0xdb, 0xd0, 0x91, 0xff}}},\n    {{{   -34,    -33,     61}, 0, {     0,      0}, {0xcf, 0x04, 0x74, 0xff}}},\n    {{{   -28,      9,     49}, 0, {     0,      0}, {0xdf, 0x3f, 0x68, 0xff}}},\n    {{{   -70,    -33,     25}, 0, {     0,      0}, {0x8c, 0xe2, 0x29, 0xff}}},\n    {{{    29,      9,     49}, 0, {     0,      0}, {0x2b, 0x33, 0x6b, 0xff}}},\n    {{{   -28,      9,    -51}, 0, {     0,      0}, {0xd6, 0x25, 0x8f, 0xff}}},\n};\n\n// 0x06007C50\nstatic const Vtx toad_seg6_vertex_06007C50[] = {\n    {{{    29,      9,     49}, 0, {     0,      0}, {0x2b, 0x33, 0x6b, 0xff}}},\n    {{{    57,      9,     22}, 0, {     0,      0}, {0x67, 0x41, 0x23, 0xff}}},\n    {{{    21,     55,     14}, 0, {     0,      0}, {0x22, 0x6d, 0x36, 0xff}}},\n    {{{   -28,      9,     49}, 0, {     0,      0}, {0xdf, 0x3f, 0x68, 0xff}}},\n    {{{    21,     55,    -28}, 0, {     0,      0}, {0x43, 0x60, 0xd0, 0xff}}},\n    {{{    57,      9,    -26}, 0, {     0,      0}, {0x69, 0x30, 0xce, 0xff}}},\n    {{{   -20,     55,    -28}, 0, {     0,      0}, {0xdc, 0x67, 0xc0, 0xff}}},\n    {{{   -20,     55,     14}, 0, {     0,      0}, {0xc0, 0x65, 0x29, 0xff}}},\n    {{{    29,      9,    -51}, 0, {     0,      0}, {0x21, 0x2d, 0x8f, 0xff}}},\n    {{{   -28,      9,    -51}, 0, {     0,      0}, {0xd6, 0x25, 0x8f, 0xff}}},\n    {{{   -56,      9,     22}, 0, {     0,      0}, {0x96, 0x35, 0x2c, 0xff}}},\n    {{{   -56,      9,    -26}, 0, {     0,      0}, {0x98, 0x3c, 0xda, 0xff}}},\n};\n\n// 0x06007D10 - 0x06007EB0\nconst Gfx toad_seg6_dl_06007D10[] = {\n    gsSPLight(&toad_seg6_lights_06007A80.l, 1),\n    gsSPLight(&toad_seg6_lights_06007A80.a, 2),\n    gsSPVertex(toad_seg6_vertex_06007AB0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  3,  6,  7, 0x0),\n    gsSP2Triangles( 7,  8,  3, 0x0,  3,  9,  4, 0x0),\n    gsSP2Triangles( 3,  8,  9, 0x0, 10,  7,  6, 0x0),\n    gsSP2Triangles(10,  6, 11, 0x0, 11,  6,  5, 0x0),\n    gsSP2Triangles( 7,  0,  8, 0x0,  0,  7, 10, 0x0),\n    gsSP2Triangles( 2, 12, 13, 0x0,  2,  1, 12, 0x0),\n    gsSP2Triangles( 2,  8,  0, 0x0,  2, 13,  9, 0x0),\n    gsSP1Triangle( 2,  9,  8, 0x0),\n    gsSPVertex(toad_seg6_vertex_06007B90, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  1, 0x0),\n    gsSP2Triangles( 7,  1,  9, 0x0,  7, 10,  8, 0x0),\n    gsSP2Triangles( 7,  9,  4, 0x0,  5,  4,  9, 0x0),\n    gsSP2Triangles( 5,  9,  0, 0x0,  0,  9,  1, 0x0),\n    gsSP2Triangles(11,  6,  0, 0x0, 11,  0,  2, 0x0),\n    gsSP1Triangle( 0,  6,  5, 0x0),\n    gsSPLight(&toad_seg6_lights_06007A98.l, 1),\n    gsSPLight(&toad_seg6_lights_06007A98.a, 2),\n    gsSPVertex(toad_seg6_vertex_06007C50, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 4,  2,  1, 0x0,  4,  1,  5, 0x0),\n    gsSP2Triangles( 6,  7,  2, 0x0,  6,  2,  4, 0x0),\n    gsSP2Triangles( 2,  7,  3, 0x0,  5,  8,  4, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0,  6,  4,  8, 0x0),\n    gsSP2Triangles(10,  3,  7, 0x0,  7, 11, 10, 0x0),\n    gsSP2Triangles( 7,  6, 11, 0x0,  9, 11,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06007EB0 - 0x06007ED8\nconst Gfx toad_seg6_dl_06007EB0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(toad_seg6_dl_06007D10),\n    gsDPPipeSync(),\n    gsSPEndDisplayList(),\n};\n\n// 0x06007ED8\nstatic const Lights1 toad_seg6_lights_06007ED8 = gdSPDefLights1(\n    0x7f, 0x6a, 0x50,\n    0xfe, 0xd5, 0xa1, 0x28, 0x28, 0x28\n);\n\n// 0x06007EF0\nstatic const Vtx toad_seg6_vertex_06007EF0[] = {\n    {{{     7,     14,    -12}, 0, {     0,      0}, {0x4b, 0x1f, 0x9f, 0xff}}},\n    {{{    -1,     14,    -12}, 0, {     0,      0}, {0xcf, 0x36, 0x99, 0xff}}},\n    {{{    11,     34,      0}, 0, {     0,      0}, {0x24, 0x79, 0xfc, 0xff}}},\n    {{{     3,    -43,    -27}, 0, {     0,      0}, {0x35, 0x1e, 0x91, 0xff}}},\n    {{{    11,    -43,     -2}, 0, {     0,      0}, {0x7e, 0xf5, 0x0a, 0xff}}},\n    {{{   -11,     14,      0}, 0, {     0,      0}, {0x97, 0x46, 0x0d, 0xff}}},\n    {{{    -1,     14,     13}, 0, {     0,      0}, {0xd2, 0x3f, 0x63, 0xff}}},\n    {{{     7,     14,     13}, 0, {     0,      0}, {0x3d, 0x21, 0x69, 0xff}}},\n    {{{     3,    -43,     28}, 0, {     0,      0}, {0x50, 0xee, 0x60, 0xff}}},\n    {{{    20,    -51,    -15}, 0, {     0,      0}, {0x73, 0xf7, 0xcd, 0xff}}},\n    {{{     4,    -57,     18}, 0, {     0,      0}, {0x62, 0xd9, 0x45, 0xff}}},\n    {{{     4,    -57,    -25}, 0, {     0,      0}, {0x40, 0xbe, 0xa9, 0xff}}},\n    {{{   -17,    -43,    -27}, 0, {     0,      0}, {0xcb, 0xf8, 0x8d, 0xff}}},\n    {{{   -17,    -43,     28}, 0, {     0,      0}, {0xcd, 0xf9, 0x73, 0xff}}},\n    {{{    12,    -76,      3}, 0, {     0,      0}, {0x42, 0xa7, 0x3b, 0xff}}},\n    {{{    12,    -76,     -9}, 0, {     0,      0}, {0x50, 0xa6, 0xdb, 0xff}}},\n};\n\n// 0x06007FF0\nstatic const Vtx toad_seg6_vertex_06007FF0[] = {\n    {{{     4,    -57,     18}, 0, {     0,      0}, {0x62, 0xd9, 0x45, 0xff}}},\n    {{{   -17,    -43,     28}, 0, {     0,      0}, {0xcd, 0xf9, 0x73, 0xff}}},\n    {{{   -15,    -73,      8}, 0, {     0,      0}, {0xd4, 0x97, 0x37, 0xff}}},\n    {{{     3,    -43,     28}, 0, {     0,      0}, {0x50, 0xee, 0x60, 0xff}}},\n    {{{    12,    -76,      3}, 0, {     0,      0}, {0x42, 0xa7, 0x3b, 0xff}}},\n    {{{   -15,    -73,    -12}, 0, {     0,      0}, {0xc5, 0xa6, 0xbe, 0xff}}},\n    {{{   -17,    -43,    -27}, 0, {     0,      0}, {0xcb, 0xf8, 0x8d, 0xff}}},\n    {{{     4,    -57,    -25}, 0, {     0,      0}, {0x40, 0xbe, 0xa9, 0xff}}},\n    {{{    12,    -76,     -9}, 0, {     0,      0}, {0x50, 0xa6, 0xdb, 0xff}}},\n    {{{   -35,    -43,      0}, 0, {     0,      0}, {0x83, 0xfa, 0xef, 0xff}}},\n    {{{   -11,     14,      0}, 0, {     0,      0}, {0x97, 0x46, 0x0d, 0xff}}},\n    {{{    -1,     14,     13}, 0, {     0,      0}, {0xd2, 0x3f, 0x63, 0xff}}},\n    {{{    -1,     14,    -12}, 0, {     0,      0}, {0xcf, 0x36, 0x99, 0xff}}},\n};\n\n// 0x060080C0 - 0x060081F8\nconst Gfx toad_seg6_dl_060080C0[] = {\n    gsSPLight(&toad_seg6_lights_06007ED8.l, 1),\n    gsSPLight(&toad_seg6_lights_06007ED8.a, 2),\n    gsSPVertex(toad_seg6_vertex_06007EF0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  4,  3,  0, 0x0),\n    gsSP2Triangles( 2,  5,  6, 0x0,  6,  7,  2, 0x0),\n    gsSP2Triangles( 4,  2,  7, 0x0,  5,  2,  1, 0x0),\n    gsSP2Triangles( 7,  8,  4, 0x0,  4,  9,  3, 0x0),\n    gsSP2Triangles( 4,  8, 10, 0x0, 11,  9,  4, 0x0),\n    gsSP2Triangles( 4, 10, 11, 0x0,  1,  3, 12, 0x0),\n    gsSP2Triangles(11,  3,  9, 0x0, 12,  3, 11, 0x0),\n    gsSP2Triangles( 7, 13,  8, 0x0,  7,  6, 13, 0x0),\n    gsSP2Triangles(10, 14, 15, 0x0, 10, 15, 11, 0x0),\n    gsSPVertex(toad_seg6_vertex_06007FF0, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 2,  4,  0, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 7,  8,  5, 0x0,  2,  8,  4, 0x0),\n    gsSP2Triangles( 2,  5,  8, 0x0,  5,  2,  9, 0x0),\n    gsSP2Triangles( 5,  9,  6, 0x0,  9,  2,  1, 0x0),\n    gsSP2Triangles(10,  9,  1, 0x0, 10,  1, 11, 0x0),\n    gsSP2Triangles( 9, 12,  6, 0x0,  9, 10, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x060081F8 - 0x06008220\nconst Gfx toad_seg6_dl_060081F8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(toad_seg6_dl_060080C0),\n    gsDPPipeSync(),\n    gsSPEndDisplayList(),\n};\n\n// 0x06008220\nstatic const Lights1 toad_seg6_lights_06008220 = gdSPDefLights1(\n    0x7f, 0x6a, 0x50,\n    0xfe, 0xd5, 0xa1, 0x28, 0x28, 0x28\n);\n\n// 0x06008238\nstatic const Vtx toad_seg6_vertex_06008238[] = {\n    {{{    11,    -43,      3}, 0, {     0,      0}, {0x7d, 0xf5, 0xf5, 0xff}}},\n    {{{     3,    -43,    -27}, 0, {     0,      0}, {0x40, 0xfa, 0x93, 0xff}}},\n    {{{     7,     15,    -12}, 0, {     0,      0}, {0x4d, 0x1f, 0xa1, 0xff}}},\n    {{{     3,    -43,     28}, 0, {     0,      0}, {0x41, 0x1c, 0x69, 0xff}}},\n    {{{    20,    -51,     16}, 0, {     0,      0}, {0x73, 0xf7, 0x33, 0xff}}},\n    {{{     4,    -57,    -17}, 0, {     0,      0}, {0x53, 0xc9, 0xb2, 0xff}}},\n    {{{     4,    -57,     26}, 0, {     0,      0}, {0x54, 0xce, 0x50, 0xff}}},\n    {{{    11,     34,      0}, 0, {     0,      0}, {0x25, 0x79, 0xff, 0xff}}},\n    {{{     7,     15,     13}, 0, {     0,      0}, {0x3c, 0x22, 0x6a, 0xff}}},\n    {{{    -1,     15,    -12}, 0, {     0,      0}, {0xcf, 0x37, 0x99, 0xff}}},\n    {{{   -11,     15,      0}, 0, {     0,      0}, {0x98, 0x46, 0x0d, 0xff}}},\n    {{{    -1,     15,     13}, 0, {     0,      0}, {0xd2, 0x40, 0x62, 0xff}}},\n    {{{   -17,    -43,     28}, 0, {     0,      0}, {0xca, 0x05, 0x72, 0xff}}},\n    {{{   -15,    -73,     13}, 0, {     0,      0}, {0xcc, 0x9b, 0x37, 0xff}}},\n    {{{    12,    -76,     10}, 0, {     0,      0}, {0x3e, 0xa2, 0x3a, 0xff}}},\n    {{{    12,    -76,     -2}, 0, {     0,      0}, {0x52, 0xa9, 0xda, 0xff}}},\n};\n\n// 0x06008338\nstatic const Vtx toad_seg6_vertex_06008338[] = {\n    {{{   -15,    -73,     -7}, 0, {     0,      0}, {0xcf, 0xa0, 0xbe, 0xff}}},\n    {{{   -17,    -43,    -27}, 0, {     0,      0}, {0xd1, 0xe4, 0x8e, 0xff}}},\n    {{{     4,    -57,    -17}, 0, {     0,      0}, {0x53, 0xc9, 0xb2, 0xff}}},\n    {{{     3,    -43,    -27}, 0, {     0,      0}, {0x40, 0xfa, 0x93, 0xff}}},\n    {{{    12,    -76,     -2}, 0, {     0,      0}, {0x52, 0xa9, 0xda, 0xff}}},\n    {{{   -15,    -73,     13}, 0, {     0,      0}, {0xcc, 0x9b, 0x37, 0xff}}},\n    {{{    12,    -76,     10}, 0, {     0,      0}, {0x3e, 0xa2, 0x3a, 0xff}}},\n    {{{   -35,    -43,      0}, 0, {     0,      0}, {0x83, 0xf9, 0xf0, 0xff}}},\n    {{{   -17,    -43,     28}, 0, {     0,      0}, {0xca, 0x05, 0x72, 0xff}}},\n    {{{    -1,     15,    -12}, 0, {     0,      0}, {0xcf, 0x37, 0x99, 0xff}}},\n    {{{   -11,     15,      0}, 0, {     0,      0}, {0x98, 0x46, 0x0d, 0xff}}},\n};\n\n// 0x060083E8 - 0x06008520\nconst Gfx toad_seg6_dl_060083E8[] = {\n    gsSPLight(&toad_seg6_lights_06008220.l, 1),\n    gsSPLight(&toad_seg6_lights_06008220.a, 2),\n    gsSPVertex(toad_seg6_vertex_06008238, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 5,  1,  0, 0x0,  0,  4,  6, 0x0),\n    gsSP2Triangles( 0,  7,  8, 0x0,  8,  3,  0, 0x0),\n    gsSP2Triangles( 2,  7,  0, 0x0,  6,  5,  0, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0,  7, 11,  8, 0x0),\n    gsSP2Triangles( 7,  2,  9, 0x0, 11,  7, 10, 0x0),\n    gsSP2Triangles(12,  3,  8, 0x0, 12,  8, 11, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0,  6,  3, 12, 0x0),\n    gsSP2Triangles( 1,  9,  2, 0x0, 12, 11, 10, 0x0),\n    gsSP2Triangles( 6, 12, 13, 0x0,  6, 14, 15, 0x0),\n    gsSP2Triangles( 6, 15,  5, 0x0, 13, 14,  6, 0x0),\n    gsSPVertex(toad_seg6_vertex_06008338, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 2,  4,  0, 0x0,  4,  5,  0, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  0,  5, 0x0),\n    gsSP2Triangles( 8,  7,  5, 0x0,  3,  1,  9, 0x0),\n    gsSP2Triangles( 1,  0,  7, 0x0,  9,  1,  7, 0x0),\n    gsSP2Triangles( 8, 10,  7, 0x0,  9,  7, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06008520 - 0x06008560\nconst Gfx toad_seg6_dl_06008520[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(toad_seg6_dl_060083E8),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPSetAlphaCompare(G_AC_NONE),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n\n// US: 8608\n#ifndef VERSION_JP\n// 0x06008608 - 0x06008650\nconst Gfx toad_seg6_us_dl_06008608[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(toad_seg6_dl_060083E8),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPSetAlphaCompare(G_AC_NONE),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsDPSetRenderMode(G_RM_AA_ZB_XLU_SURF, G_RM_NOOP2),\n    gsSPEndDisplayList(),\n};\n#endif\n\n// 0x06008560\nstatic const Lights1 toad_seg6_lights_06008560 = gdSPDefLights1(\n    0x34, 0x20, 0x0d,\n    0x68, 0x40, 0x1b, 0x28, 0x28, 0x28\n);\n\n// 0x06008578\nstatic const Vtx toad_seg6_vertex_06008578[] = {\n    {{{   -17,     17,    -45}, 0, {     0,      0}, {0xce, 0x3b, 0x9d, 0xff}}},\n    {{{    18,     17,    -45}, 0, {     0,      0}, {0x28, 0x51, 0xa8, 0xff}}},\n    {{{    23,    -15,    -51}, 0, {     0,      0}, {0x1e, 0x98, 0xbf, 0xff}}},\n    {{{   -22,    -15,    -51}, 0, {     0,      0}, {0xcf, 0xd9, 0x92, 0xff}}},\n    {{{    46,    -15,    -25}, 0, {     0,      0}, {0x77, 0xe2, 0xe3, 0xff}}},\n    {{{    34,    -15,     26}, 0, {     0,      0}, {0x70, 0xdf, 0x30, 0xff}}},\n    {{{    17,    -15,     52}, 0, {     0,      0}, {0x2c, 0xab, 0x52, 0xff}}},\n    {{{   -45,    -15,    -25}, 0, {     0,      0}, {0x89, 0xe0, 0xe6, 0xff}}},\n    {{{   -33,    -15,     26}, 0, {     0,      0}, {0xa5, 0xb1, 0x27, 0xff}}},\n    {{{   -16,    -15,     52}, 0, {     0,      0}, {0xc7, 0xda, 0x6a, 0xff}}},\n    {{{    36,     17,    -20}, 0, {     0,      0}, {0x6f, 0x39, 0xea, 0xff}}},\n    {{{   -35,     17,    -20}, 0, {     0,      0}, {0x9b, 0x4b, 0xf9, 0xff}}},\n    {{{   -26,     11,     26}, 0, {     0,      0}, {0x99, 0x36, 0x31, 0xff}}},\n    {{{   -13,      7,     47}, 0, {     0,      0}, {0xda, 0x51, 0x59, 0xff}}},\n    {{{    14,      7,     47}, 0, {     0,      0}, {0x34, 0x3b, 0x63, 0xff}}},\n    {{{    27,     11,     26}, 0, {     0,      0}, {0x5f, 0x45, 0x2e, 0xff}}},\n};\n\n// 0x06008678\nstatic const Vtx toad_seg6_vertex_06008678[] = {\n    {{{   -13,      7,     47}, 0, {     0,      0}, {0xda, 0x51, 0x59, 0xff}}},\n    {{{    14,      7,     47}, 0, {     0,      0}, {0x34, 0x3b, 0x63, 0xff}}},\n    {{{    14,     21,     26}, 0, {     0,      0}, {0x18, 0x6f, 0x37, 0xff}}},\n    {{{   -13,     21,     26}, 0, {     0,      0}, {0xcf, 0x69, 0x31, 0xff}}},\n    {{{   -26,     11,     26}, 0, {     0,      0}, {0x99, 0x36, 0x31, 0xff}}},\n    {{{    18,     35,    -16}, 0, {     0,      0}, {0x37, 0x72, 0xfd, 0xff}}},\n    {{{   -17,     35,    -16}, 0, {     0,      0}, {0xe0, 0x7a, 0xf3, 0xff}}},\n    {{{    27,     11,     26}, 0, {     0,      0}, {0x5f, 0x45, 0x2e, 0xff}}},\n    {{{   -35,     17,    -20}, 0, {     0,      0}, {0x9b, 0x4b, 0xf9, 0xff}}},\n    {{{    34,    -15,     26}, 0, {     0,      0}, {0x70, 0xdf, 0x30, 0xff}}},\n    {{{    36,     17,    -20}, 0, {     0,      0}, {0x6f, 0x39, 0xea, 0xff}}},\n    {{{    18,     17,    -45}, 0, {     0,      0}, {0x28, 0x51, 0xa8, 0xff}}},\n    {{{   -17,     17,    -45}, 0, {     0,      0}, {0xce, 0x3b, 0x9d, 0xff}}},\n};\n\n// 0x06008748 - 0x06008890\nconst Gfx toad_seg6_dl_06008748[] = {\n    gsSPLight(&toad_seg6_lights_06008560.l, 1),\n    gsSPLight(&toad_seg6_lights_06008560.a, 2),\n    gsSPVertex(toad_seg6_vertex_06008578, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  2,  5,  6, 0x0),\n    gsSP2Triangles( 2,  7,  3, 0x0,  2,  8,  7, 0x0),\n    gsSP2Triangles( 2,  9,  8, 0x0,  2,  6,  9, 0x0),\n    gsSP2Triangles( 2,  1, 10, 0x0,  2, 10,  4, 0x0),\n    gsSP2Triangles( 7, 11,  0, 0x0, 12, 11,  7, 0x0),\n    gsSP2Triangles(12,  7,  8, 0x0,  7,  0,  3, 0x0),\n    gsSP2Triangles(12,  8,  9, 0x0, 10,  5,  4, 0x0),\n    gsSP2Triangles(12,  9, 13, 0x0, 14,  9,  6, 0x0),\n    gsSP2Triangles(14, 13,  9, 0x0,  5, 14,  6, 0x0),\n    gsSP1Triangle(10, 15,  5, 0x0),\n    gsSPVertex(toad_seg6_vertex_06008678, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  4,  0, 0x0,  2,  5,  6, 0x0),\n    gsSP2Triangles( 2,  6,  3, 0x0,  2,  1,  7, 0x0),\n    gsSP2Triangles( 7,  5,  2, 0x0,  8,  4,  3, 0x0),\n    gsSP2Triangles( 8,  3,  6, 0x0,  9,  7,  1, 0x0),\n    gsSP2Triangles( 7, 10,  5, 0x0,  5, 10, 11, 0x0),\n    gsSP2Triangles(11,  6,  5, 0x0, 11, 12,  6, 0x0),\n    gsSP1Triangle( 6, 12,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06008890 - 0x060088B8\nconst Gfx toad_seg6_dl_06008890[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(toad_seg6_dl_06008748),\n    gsDPPipeSync(),\n    gsSPEndDisplayList(),\n};\n\n// 0x060088B8\nstatic const Lights1 toad_seg6_lights_060088B8 = gdSPDefLights1(\n    0x34, 0x20, 0x0d,\n    0x68, 0x40, 0x1b, 0x28, 0x28, 0x28\n);\n\n// 0x060088D0\nstatic const Vtx toad_seg6_vertex_060088D0[] = {\n    {{{   -22,    -15,     52}, 0, {     0,      0}, {0xe2, 0x98, 0x41, 0xff}}},\n    {{{   -17,     17,     46}, 0, {     0,      0}, {0xd8, 0x51, 0x58, 0xff}}},\n    {{{   -35,     17,     21}, 0, {     0,      0}, {0x91, 0x39, 0x16, 0xff}}},\n    {{{    23,    -15,     52}, 0, {     0,      0}, {0x31, 0xd9, 0x6e, 0xff}}},\n    {{{    18,     17,     46}, 0, {     0,      0}, {0x32, 0x3b, 0x63, 0xff}}},\n    {{{   -45,    -15,     26}, 0, {     0,      0}, {0x89, 0xe2, 0x1d, 0xff}}},\n    {{{   -33,    -15,    -25}, 0, {     0,      0}, {0x90, 0xdf, 0xd0, 0xff}}},\n    {{{   -16,    -15,    -51}, 0, {     0,      0}, {0xd4, 0xab, 0xae, 0xff}}},\n    {{{    46,    -15,     26}, 0, {     0,      0}, {0x77, 0xe0, 0x1a, 0xff}}},\n    {{{    34,    -15,    -25}, 0, {     0,      0}, {0x5b, 0xb1, 0xd9, 0xff}}},\n    {{{    17,    -15,    -51}, 0, {     0,      0}, {0x39, 0xda, 0x96, 0xff}}},\n    {{{    27,     11,    -25}, 0, {     0,      0}, {0x67, 0x36, 0xcf, 0xff}}},\n    {{{    36,     17,     21}, 0, {     0,      0}, {0x65, 0x4b, 0x07, 0xff}}},\n    {{{   -13,      7,    -46}, 0, {     0,      0}, {0xcc, 0x3b, 0x9d, 0xff}}},\n    {{{    14,      7,    -46}, 0, {     0,      0}, {0x26, 0x51, 0xa7, 0xff}}},\n    {{{   -26,     11,    -25}, 0, {     0,      0}, {0xa1, 0x45, 0xd2, 0xff}}},\n};\n\n// 0x060089D0\nstatic const Vtx toad_seg6_vertex_060089D0[] = {\n    {{{   -13,     21,    -25}, 0, {     0,      0}, {0xe8, 0x6f, 0xc9, 0xff}}},\n    {{{   -17,     35,     17}, 0, {     0,      0}, {0xc9, 0x72, 0x03, 0xff}}},\n    {{{    18,     35,     17}, 0, {     0,      0}, {0x20, 0x7a, 0x0d, 0xff}}},\n    {{{    14,     21,    -25}, 0, {     0,      0}, {0x31, 0x69, 0xcf, 0xff}}},\n    {{{   -26,     11,    -25}, 0, {     0,      0}, {0xa1, 0x45, 0xd2, 0xff}}},\n    {{{    14,      7,    -46}, 0, {     0,      0}, {0x26, 0x51, 0xa7, 0xff}}},\n    {{{   -13,      7,    -46}, 0, {     0,      0}, {0xcc, 0x3b, 0x9d, 0xff}}},\n    {{{    27,     11,    -25}, 0, {     0,      0}, {0x67, 0x36, 0xcf, 0xff}}},\n    {{{    36,     17,     21}, 0, {     0,      0}, {0x65, 0x4b, 0x07, 0xff}}},\n    {{{   -35,     17,     21}, 0, {     0,      0}, {0x91, 0x39, 0x16, 0xff}}},\n    {{{    18,     17,     46}, 0, {     0,      0}, {0x32, 0x3b, 0x63, 0xff}}},\n    {{{   -17,     17,     46}, 0, {     0,      0}, {0xd8, 0x51, 0x58, 0xff}}},\n};\n\n// 0x06008A90 - 0x06008BD8\nconst Gfx toad_seg6_dl_06008A90[] = {\n    gsSPLight(&toad_seg6_lights_060088B8.l, 1),\n    gsSPLight(&toad_seg6_lights_060088B8.a, 2),\n    gsSPVertex(toad_seg6_vertex_060088D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 0,  5,  6, 0x0,  0,  6,  7, 0x0),\n    gsSP2Triangles( 0,  8,  3, 0x0,  0,  9,  8, 0x0),\n    gsSP2Triangles( 0, 10,  9, 0x0,  0,  7, 10, 0x0),\n    gsSP2Triangles( 8, 11, 12, 0x0,  8,  9, 11, 0x0),\n    gsSP2Triangles( 8, 12,  4, 0x0,  8,  4,  3, 0x0),\n    gsSP2Triangles(10, 11,  9, 0x0,  6,  5,  2, 0x0),\n    gsSP2Triangles(10, 13, 14, 0x0, 10,  7, 13, 0x0),\n    gsSP2Triangles(10, 14, 11, 0x0, 13,  7,  6, 0x0),\n    gsSP2Triangles(13,  6, 15, 0x0,  6,  2, 15, 0x0),\n    gsSPVertex(toad_seg6_vertex_060089D0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 1,  0,  4, 0x0,  0,  3,  5, 0x0),\n    gsSP2Triangles( 0,  5,  6, 0x0,  6,  4,  0, 0x0),\n    gsSP2Triangles( 7,  5,  3, 0x0,  3,  8,  7, 0x0),\n    gsSP2Triangles( 3,  2,  8, 0x0,  1,  4,  9, 0x0),\n    gsSP2Triangles(10,  8,  2, 0x0,  2, 11, 10, 0x0),\n    gsSP2Triangles( 2,  1, 11, 0x0,  9, 11,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06008BD8 - 0x06008C00\nconst Gfx toad_seg6_dl_06008BD8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(toad_seg6_dl_06008A90),\n    gsDPPipeSync(),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/tornado/geo.inc.c",
    "content": "// 0x05014630\nconst GeoLayout tweester_geo[] = {\n    GEO_CULLING_RADIUS(5000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, tornado_seg5_dl_050145C0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/tornado/model.inc.c",
    "content": "// Tornado\n\n// 0x05013128\nALIGNED8 static const Texture tornado_seg5_texture_05013128[] = {\n#include \"actors/tornado/tornado.ia16.inc.c\"\n};\n\n// 0x05014128\nstatic const Lights1 tornado_seg5_lights_05014128 = gdSPDefLights1(\n    0x3b, 0x34, 0x23,\n    0xee, 0xd0, 0x8d, 0x28, 0x28, 0x28\n);\n\n// 0x05014140\nstatic const Vtx tornado_seg5_vertex_05014140[] = {\n    {{{   474,    661,    822}, 0, {   650,   1708}, {0x30, 0xbe, 0x60, 0x64}}},\n    {{{     0,    661,    949}, 0, {   480,   1708}, {0x00, 0xb6, 0x67, 0x64}}},\n    {{{     0,      0,      0}, 0, {   564,   2012}, {0x00, 0x82, 0x00, 0x64}}},\n    {{{   822,    661,    474}, 0, {   820,   1708}, {0x60, 0xc3, 0x37, 0x64}}},\n    {{{     0,      0,      0}, 0, {   734,   2012}, {0x00, 0x82, 0x00, 0x64}}},\n    {{{   969,   4107,   1679}, 0, {   650,    128}, {0x46, 0xde, 0x63, 0x64}}},\n    {{{     0,   4107,   1938}, 0, {   480,    128}, {0x00, 0xdd, 0x7a, 0x64}}},\n    {{{  1679,   4107,    969}, 0, {   820,    128}, {0x69, 0xdd, 0x3d, 0x64}}},\n    {{{  -474,    661,    822}, 0, {   308,   1708}, {0xc9, 0xc3, 0x60, 0x64}}},\n    {{{  -969,   4107,   1679}, 0, {   308,    128}, {0xc3, 0xdd, 0x69, 0x64}}},\n    {{{     0,      0,      0}, 0, {   394,   2012}, {0x00, 0x82, 0x00, 0x64}}},\n    {{{   949,    661,      0}, 0, {   990,   1708}, {0x67, 0xb6, 0x00, 0x64}}},\n    {{{     0,      0,      0}, 0, {   904,   2012}, {0x00, 0x82, 0x00, 0x64}}},\n    {{{  1938,   4107,      0}, 0, {   990,    128}, {0x7a, 0xdd, 0x00, 0x64}}},\n};\n\n// 0x05014220\nstatic const Vtx tornado_seg5_vertex_05014220[] = {\n    {{{  -474,    661,   -822}, 0, {  1672,   1708}, {0xd0, 0xbe, 0xa0, 0x64}}},\n    {{{  -969,   4107,  -1678}, 0, {  1672,    128}, {0xba, 0xde, 0x9d, 0x64}}},\n    {{{     0,   4107,  -1938}, 0, {  1502,    128}, {0x00, 0xdd, 0x86, 0x64}}},\n    {{{   822,    661,   -474}, 0, {  1160,   1708}, {0x60, 0xbe, 0xd0, 0x64}}},\n    {{{  1938,   4107,      0}, 0, {   990,    128}, {0x7a, 0xdd, 0x00, 0x64}}},\n    {{{   949,    661,      0}, 0, {   990,   1708}, {0x67, 0xb6, 0x00, 0x64}}},\n    {{{  1679,   4107,   -969}, 0, {  1160,    128}, {0x63, 0xde, 0xba, 0x64}}},\n    {{{     0,      0,      0}, 0, {  1076,   2012}, {0x00, 0x82, 0x00, 0x64}}},\n    {{{   474,    661,   -822}, 0, {  1330,   1708}, {0x37, 0xc3, 0xa0, 0x64}}},\n    {{{     0,      0,      0}, 0, {  1246,   2012}, {0x00, 0x82, 0x00, 0x64}}},\n    {{{   969,   4107,  -1678}, 0, {  1330,    128}, {0x3d, 0xdd, 0x97, 0x64}}},\n    {{{     0,    661,   -949}, 0, {  1502,   1708}, {0x00, 0xb6, 0x99, 0x64}}},\n    {{{     0,      0,      0}, 0, {  1416,   2012}, {0x00, 0x82, 0x00, 0x64}}},\n    {{{  -474,    661,    822}, 0, {   308,   1708}, {0xc9, 0xc3, 0x60, 0x64}}},\n    {{{  -822,    661,    474}, 0, {   138,   1708}, {0xa0, 0xbe, 0x30, 0x64}}},\n    {{{     0,      0,      0}, 0, {   224,   2012}, {0x00, 0x82, 0x00, 0x64}}},\n};\n\n// 0x05014320\nstatic const Vtx tornado_seg5_vertex_05014320[] = {\n    {{{  -474,    661,   -822}, 0, {  1672,   1708}, {0xd0, 0xbe, 0xa0, 0x64}}},\n    {{{     0,    661,   -949}, 0, {  1502,   1708}, {0x00, 0xb6, 0x99, 0x64}}},\n    {{{     0,      0,      0}, 0, {  1586,   2012}, {0x00, 0x82, 0x00, 0x64}}},\n    {{{  -822,    661,   -474}, 0, {  1842,   1708}, {0xa0, 0xc3, 0xc9, 0x64}}},\n    {{{     0,      0,      0}, 0, {  1756,   2012}, {0x00, 0x82, 0x00, 0x64}}},\n    {{{  -969,   4107,  -1678}, 0, {  1672,    128}, {0xba, 0xde, 0x9d, 0x64}}},\n    {{{ -1678,   4107,   -969}, 0, {  1842,    128}, {0x97, 0xdd, 0xc3, 0x64}}},\n    {{{  -949,    661,      0}, 0, {  2012,   1708}, {0x99, 0xb6, 0x00, 0x64}}},\n    {{{     0,      0,      0}, 0, {  1926,   2012}, {0x00, 0x82, 0x00, 0x64}}},\n    {{{ -1938,   4107,      0}, 0, {  2012,    128}, {0x86, 0xdd, 0x00, 0x64}}},\n    {{{  -822,    661,    474}, 0, {   138,   1708}, {0xa0, 0xbe, 0x30, 0x64}}},\n    {{{  -949,    661,      0}, 0, {     0,   1708}, {0x99, 0xb6, 0x00, 0x64}}},\n    {{{     0,      0,      0}, 0, {    54,   2012}, {0x00, 0x82, 0x00, 0x64}}},\n    {{{ -1938,   4107,      0}, 0, {     0,    128}, {0x86, 0xdd, 0x00, 0x64}}},\n};\n\n// 0x05014400\nstatic const Vtx tornado_seg5_vertex_05014400[] = {\n    {{{  -474,    661,    822}, 0, {   308,   1708}, {0xc9, 0xc3, 0x60, 0x64}}},\n    {{{  -969,   4107,   1679}, 0, {   308,    128}, {0xc3, 0xdd, 0x69, 0x64}}},\n    {{{ -1678,   4107,    969}, 0, {   138,    128}, {0x9d, 0xde, 0x46, 0x64}}},\n    {{{  -822,    661,    474}, 0, {   138,   1708}, {0xa0, 0xbe, 0x30, 0x64}}},\n    {{{ -1938,   4107,      0}, 0, {     0,    128}, {0x86, 0xdd, 0x00, 0x64}}},\n};\n\n// 0x05014450 - 0x050145C0\nconst Gfx tornado_seg5_dl_05014450[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, tornado_seg5_texture_05013128),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&tornado_seg5_lights_05014128.l, 1),\n    gsSPLight(&tornado_seg5_lights_05014128.a, 2),\n    gsSPVertex(tornado_seg5_vertex_05014140, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 0,  5,  6, 0x0,  0,  6,  1, 0x0),\n    gsSP2Triangles( 3,  5,  0, 0x0,  3,  7,  5, 0x0),\n    gsSP2Triangles( 1,  6,  8, 0x0,  6,  9,  8, 0x0),\n    gsSP2Triangles( 1,  8, 10, 0x0, 11,  3, 12, 0x0),\n    gsSP2Triangles(11, 13,  3, 0x0, 13,  7,  3, 0x0),\n    gsSPVertex(tornado_seg5_vertex_05014220, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  5,  7, 0x0),\n    gsSP2Triangles( 8,  3,  9, 0x0,  8,  6,  3, 0x0),\n    gsSP2Triangles( 8, 10,  6, 0x0, 11,  8, 12, 0x0),\n    gsSP2Triangles( 2, 10,  8, 0x0, 11,  2,  8, 0x0),\n    gsSP2Triangles( 0,  2, 11, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(tornado_seg5_vertex_05014320, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 3,  5,  0, 0x0,  3,  6,  5, 0x0),\n    gsSP2Triangles( 7,  3,  8, 0x0,  9,  6,  3, 0x0),\n    gsSP2Triangles( 7,  9,  3, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(10, 13, 11, 0x0),\n    gsSPVertex(tornado_seg5_vertex_05014400, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP1Triangle( 3,  2,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050145C0 - 0x05014630\nconst Gfx tornado_seg5_dl_050145C0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(tornado_seg5_dl_05014450),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/transparent_star/geo.inc.c",
    "content": "// 0x16000F6C\nconst GeoLayout transparent_star_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x9B, 100),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, transparent_star_seg3_dl_0302C620),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/transparent_star/model.inc.c",
    "content": "// Transparent Star\n\n// 0x0302C488\nstatic const Lights1 transparent_star_seg3_lights_0302C488 = gdSPDefLights1(\n    0x03, 0x05, 0x17,\n    0x1e, 0x32, 0xe6, 0x28, 0x28, 0x28\n);\n\n// 0x0302C4A0\nstatic const Vtx transparent_star_seg3_vertex_0302C4A0[] = {\n    {{{     0,      8,    -89}, 0, {     0,      0}, {0x00, 0x07, 0x82, 0xff}}},\n    {{{   190,   -201,      0}, 0, {     0,      0}, {0x55, 0xa3, 0x00, 0xff}}},\n    {{{     0,   -129,      0}, 0, {     0,      0}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{   146,    -42,      0}, 0, {     0,      0}, {0x7c, 0xe7, 0x00, 0xff}}},\n    {{{     0,      8,     90}, 0, {     0,      0}, {0x00, 0x07, 0x7e, 0xff}}},\n    {{{   257,     84,      0}, 0, {     0,      0}, {0x68, 0x47, 0x00, 0xff}}},\n    {{{  -145,    -42,      0}, 0, {     0,      0}, {0x84, 0xe7, 0x00, 0xff}}},\n    {{{  -189,   -201,      0}, 0, {     0,      0}, {0xaa, 0xa3, 0x00, 0xff}}},\n    {{{  -256,     84,      0}, 0, {     0,      0}, {0x97, 0x47, 0x00, 0xff}}},\n    {{{     0,    246,      0}, 0, {     0,      0}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{    96,     99,      0}, 0, {     0,      0}, {0x3d, 0x6f, 0x00, 0xff}}},\n    {{{   -95,     99,      0}, 0, {     0,      0}, {0xc3, 0x6f, 0x00, 0xff}}},\n};\n\n// 0x0302C560 - 0x0302C620\nconst Gfx transparent_star_seg3_dl_0302C560[] = {\n    gsSPLight(&transparent_star_seg3_lights_0302C488.l, 1),\n    gsSPLight(&transparent_star_seg3_lights_0302C488.a, 2),\n    gsSPVertex(transparent_star_seg3_vertex_0302C4A0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 5,  3,  0, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 6,  7,  4, 0x0,  7,  2,  4, 0x0),\n    gsSP2Triangles( 8,  6,  4, 0x0,  9,  4, 10, 0x0),\n    gsSP2Triangles( 9, 11,  4, 0x0,  4,  5, 10, 0x0),\n    gsSP2Triangles(11,  8,  4, 0x0,  0,  2,  7, 0x0),\n    gsSP2Triangles( 0,  7,  6, 0x0,  0,  6,  8, 0x0),\n    gsSP2Triangles( 0,  8, 11, 0x0,  0, 11,  9, 0x0),\n    gsSP2Triangles(10,  5,  0, 0x0, 10,  0,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0302C620 - 0x0302C658\nconst Gfx transparent_star_seg3_dl_0302C620[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsDPSetEnvColor(255, 255, 255, 120),\n    gsSPDisplayList(transparent_star_seg3_dl_0302C560),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/treasure_chest/geo.inc.c",
    "content": "// 0x0D000450\nconst GeoLayout treasure_chest_base_geo[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, treasure_chest_seg6_dl_06016F90),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0D000468\nconst GeoLayout treasure_chest_lid_geo[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, treasure_chest_seg6_dl_060178C0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/treasure_chest/model.inc.c",
    "content": "// Treasure Chest\n\n// 0x06013F90\nstatic const Lights1 treasure_chest_seg6_lights_06013F90 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x06013FA8\nALIGNED8 static const Texture treasure_chest_seg6_texture_06013FA8[] = {\n#include \"actors/treasure_chest/treasure_chest_lock.rgba16.inc.c\"\n};\n\n// 0x060147A8\nALIGNED8 static const Texture treasure_chest_seg6_texture_060147A8[] = {\n#include \"actors/treasure_chest/treasure_chest_side.rgba16.inc.c\"\n};\n\n// 0x06014FA8\nALIGNED8 static const Texture treasure_chest_seg6_texture_06014FA8[] = {\n#include \"actors/treasure_chest/treasure_chest_lock_top.rgba16.inc.c\"\n};\n\n// 0x060157A8\nALIGNED8 static const Texture treasure_chest_seg6_texture_060157A8[] = {\n#include \"actors/treasure_chest/treasure_chest_front.rgba16.inc.c\"\n};\n\n// 0x060167A8\nstatic const Vtx treasure_chest_seg6_vertex_060167A8[] = {\n    {{{    20,    102,     87}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -19,     72,     87}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    20,     72,     87}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -19,    102,     87}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x060167E8\nstatic const Vtx treasure_chest_seg6_vertex_060167E8[] = {\n    {{{    20,     72,     77}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -19,     72,     87}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -19,     72,     77}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     0,    102,     77}, 0, {   478,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    20,    102,     87}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    20,    102,     77}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -19,    102,     87}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -19,    102,     77}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -19,     72,     77}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -19,    102,     87}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -19,    102,     77}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -19,     72,     87}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    20,     72,     87}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    20,    102,     77}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    20,     72,     87}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    20,     72,     77}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x060168E8\nstatic const Vtx treasure_chest_seg6_vertex_060168E8[] = {\n    {{{    20,    102,     77}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    20,    102,     87}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    20,     72,     87}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x06016918\nstatic const Vtx treasure_chest_seg6_vertex_06016918[] = {\n    {{{    77,    102,    -50}, 0, {     0,  -1736}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    77,     20,    -50}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    77,     20,     51}, 0, {  3374,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -76,     20,    -50}, 0, {     0,  -2416}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    77,     20,     51}, 0, {  5078,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    77,     20,    -50}, 0, {  5078,  -2416}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -76,     20,     51}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -76,    102,     51}, 0, {     0,  -1736}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -76,     20,    -50}, 0, {  3374,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -76,    102,    -50}, 0, {  3374,  -1736}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -76,     20,     51}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    77,    102,     51}, 0, {     0,  -1736}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -76,     20,     51}, 0, {  5078,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -76,    102,     51}, 0, {  5078,  -1736}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    77,     20,     51}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x06016A08\nstatic const Vtx treasure_chest_seg6_vertex_06016A08[] = {\n    {{{   -91,    102,    -76}, 0, {  5244,    962}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -76,    102,    -50}, 0, {  4734,     46}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    77,    102,    -50}, 0, {  -368,      2}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    77,    102,    -50}, 0, {     0,  -1736}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    77,     20,     51}, 0, {  3374,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    77,    102,     51}, 0, {  3374,  -1736}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -76,    102,    -50}, 0, {     0,  -1736}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -76,     20,    -50}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    77,     20,    -50}, 0, {  5078,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    77,    102,    -50}, 0, {  5078,  -1736}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -76,    102,    -50}, 0, {  -542,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -91,    102,    -76}, 0, { -1818,     66}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -91,    102,     77}, 0, {  5844,     66}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -76,    102,     51}, 0, {  4568,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    92,    102,    -76}, 0, {  -880,    908}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x06016AF8\nstatic const Vtx treasure_chest_seg6_vertex_06016AF8[] = {\n    {{{    92,    102,    -76}, 0, {  6356,    964}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    77,    102,    -50}, 0, {  5078,     86}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    77,    102,     51}, 0, {     0,     34}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    92,    102,     77}, 0, { -1308,    886}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    77,    102,     51}, 0, {  -540,     34}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -91,    102,     77}, 0, {  7888,    946}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    92,    102,     77}, 0, { -1308,    942}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -76,    102,     51}, 0, {  7122,     38}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x06016B78\nstatic const Vtx treasure_chest_seg6_vertex_06016B78[] = {\n    {{{    92,      0,    -68}, 0, {  2012,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    92,    102,      0}, 0, {   152,  -2392}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    92,      0,      0}, 0, {   340,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    92,    102,    -76}, 0, {  2012,  -2392}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    92,    102,      0}, 0, {    60,  -2358}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    92,    102,     77}, 0, {  1976,  -2358}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    92,      0,     69}, 0, {  2012,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    92,      0,      0}, 0, {   288,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -91,    102,      0}, 0, {    96,  -2410}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -91,    102,    -76}, 0, {  2012,  -2410}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -91,      0,    -68}, 0, {  2012,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -91,      0,      0}, 0, {   288,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -91,      0,    -68}, 0, {  2012,    990}, {0x00, 0xf7, 0x82, 0xff}}},\n    {{{   -91,    102,    -76}, 0, {  2012,  -2416}, {0x00, 0xf7, 0x82, 0xff}}},\n    {{{     0,    102,    -76}, 0, { -1664,  -2416}, {0x00, 0xf7, 0x82, 0xff}}},\n    {{{     0,      0,    -68}, 0, { -1664,    990}, {0x00, 0xf7, 0x82, 0xff}}},\n};\n\n// 0x06016C78\nstatic const Vtx treasure_chest_seg6_vertex_06016C78[] = {\n    {{{    92,      0,     69}, 0, {  2012,    990}, {0x00, 0xf7, 0x7e, 0xff}}},\n    {{{     0,    102,     77}, 0, { -1664,  -2416}, {0x00, 0xf7, 0x7e, 0xff}}},\n    {{{     0,      0,     69}, 0, { -1664,    990}, {0x00, 0xf7, 0x7e, 0xff}}},\n    {{{   -91,      0,     69}, 0, {  2012,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -91,    102,     77}, 0, {  2040,  -2428}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -91,    102,      0}, 0, {   236,  -2428}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -91,      0,      0}, 0, {   388,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,    102,    -76}, 0, { -1664,  -2416}, {0x00, 0xf7, 0x82, 0xff}}},\n    {{{    92,    102,    -76}, 0, {  2012,  -2416}, {0x00, 0xf7, 0x82, 0xff}}},\n    {{{    92,      0,    -68}, 0, {  2012,    990}, {0x00, 0xf7, 0x82, 0xff}}},\n    {{{     0,      0,    -68}, 0, { -1664,    990}, {0x00, 0xf7, 0x82, 0xff}}},\n    {{{   -91,      0,     69}, 0, {  2012,    990}, {0x00, 0xf7, 0x7e, 0xff}}},\n    {{{   -91,    102,     77}, 0, {  2012,  -2416}, {0x00, 0xf7, 0x7e, 0xff}}},\n    {{{    92,    102,     77}, 0, {  2012,  -2416}, {0x00, 0xf7, 0x7e, 0xff}}},\n};\n\n// 0x06016D58 - 0x06016DA0\nconst Gfx treasure_chest_seg6_dl_06016D58[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, treasure_chest_seg6_texture_06013FA8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&treasure_chest_seg6_lights_06013F90.l, 1),\n    gsSPLight(&treasure_chest_seg6_lights_06013F90.a, 2),\n    gsSPVertex(treasure_chest_seg6_vertex_060167A8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06016DA0 - 0x06016E18\nconst Gfx treasure_chest_seg6_dl_06016DA0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, treasure_chest_seg6_texture_06014FA8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(treasure_chest_seg6_vertex_060167E8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(treasure_chest_seg6_vertex_060168E8, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06016E18 - 0x06016EE0\nconst Gfx treasure_chest_seg6_dl_06016E18[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, treasure_chest_seg6_texture_060147A8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(treasure_chest_seg6_vertex_06016918, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(treasure_chest_seg6_vertex_06016A08, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(treasure_chest_seg6_vertex_06016AF8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06016EE0 - 0x06016F90\nconst Gfx treasure_chest_seg6_dl_06016EE0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, treasure_chest_seg6_texture_060157A8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(treasure_chest_seg6_vertex_06016B78, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(treasure_chest_seg6_vertex_06016C78, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  1, 11,  2, 0x0),\n    gsSP2Triangles( 1, 12, 11, 0x0,  0, 13,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06016F90 - 0x06017030\nconst Gfx treasure_chest_seg6_dl_06016F90[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(treasure_chest_seg6_dl_06016D58),\n    gsSPDisplayList(treasure_chest_seg6_dl_06016DA0),\n    gsSPDisplayList(treasure_chest_seg6_dl_06016E18),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(treasure_chest_seg6_dl_06016EE0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x06017030\nstatic const Vtx treasure_chest_seg6_vertex_06017030[] = {\n    {{{    92,      0,    154}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    92,      0,      0}, 0, {  5078,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    92,     30,     27}, 0, {  4184,  -1022}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    92,     46,     77}, 0, {  2524,  -2028}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    92,     30,    127}, 0, {   862,  -1022}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -91,     30,     27}, 0, {  1310,   -988}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -91,     30,    127}, 0, {  6292,   -988}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -91,     46,     77}, 0, {  3800,  -1978}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -91,      0,      0}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -91,      0,    154}, 0, {  7632,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -73,     20,    127}, 0, {  6100,  -2332}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -73,     20,     27}, 0, {  6100,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    74,     20,     27}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    74,     20,    127}, 0, {     0,  -2332}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x06017110\nstatic const Vtx treasure_chest_seg6_vertex_06017110[] = {\n    {{{   -91,      0,      0}, 0, { -1564,     36}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    74,      0,     15}, 0, {  6714,    752}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -73,      0,     15}, 0, {  -644,    752}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -91,      0,      0}, 0, {  6180,     34}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -73,      0,     15}, 0, {  5466,    902}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -73,      0,    138}, 0, {  -274,    894}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -91,      0,    154}, 0, {  -994,     24}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -91,      0,    154}, 0, { -2176,    946}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -73,      0,    138}, 0, { -1256,     82}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    74,      0,    138}, 0, {  6100,    -14}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    92,      0,    154}, 0, {  7020,    828}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    74,      0,     15}, 0, {  5590,     32}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    92,      0,      0}, 0, {  6356,    894}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    92,      0,    154}, 0, { -1308,    894}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    74,      0,    138}, 0, {  -542,     32}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x06017200\nstatic const Vtx treasure_chest_seg6_vertex_06017200[] = {\n    {{{    74,      0,    138}, 0, { -3720,     10}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    74,     20,     27}, 0, {  1206,    974}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    74,      0,     15}, 0, {  1730,     30}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -91,      0,      0}, 0, { -1564,     36}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    92,      0,      0}, 0, {  7632,     36}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    74,      0,     15}, 0, {  6714,    752}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -73,      0,     15}, 0, { -4772,     20}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -73,     20,     27}, 0, { -4174,    962}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -73,     20,    127}, 0, {   948,    986}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -73,      0,    138}, 0, {  1532,     50}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    74,      0,     15}, 0, { -3914,     60}, {0x00, 0xbf, 0x6c, 0xff}}},\n    {{{   -73,     20,     27}, 0, {   990,    990}, {0x00, 0xbf, 0x6c, 0xff}}},\n    {{{   -73,      0,     15}, 0, {   990,     60}, {0x00, 0xbf, 0x6c, 0xff}}},\n    {{{    74,     20,     27}, 0, { -3914,    990}, {0x00, 0xbf, 0x6c, 0xff}}},\n    {{{    74,     20,    127}, 0, { -3222,    958}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x060172F0\nstatic const Vtx treasure_chest_seg6_vertex_060172F0[] = {\n    {{{   -73,      0,    138}, 0, { -6024,    156}, {0x00, 0xc3, 0x91, 0xff}}},\n    {{{    74,     20,    127}, 0, {  1162,    896}, {0x00, 0xc3, 0x91, 0xff}}},\n    {{{    74,      0,    138}, 0, {  1212,    112}, {0x00, 0xc3, 0x91, 0xff}}},\n    {{{   -73,     20,    127}, 0, { -6072,    940}, {0x00, 0xc3, 0x91, 0xff}}},\n};\n\n// 0x06017330\nstatic const Vtx treasure_chest_seg6_vertex_06017330[] = {\n    {{{   -19,     20,    136}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    20,     20,    154}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    20,     20,    136}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    20,     20,    154}, 0, {   990,      0}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{   -19,     20,    154}, 0, {     0,      0}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{   -19,      0,    164}, 0, {     0,    990}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{    20,      0,    164}, 0, {   990,    990}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{    20,      0,    154}, 0, {   -28,    -80}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    20,      0,    164}, 0, {     0,    984}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -19,      0,    164}, 0, {   968,    998}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -19,      0,    154}, 0, {   974,    -64}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    20,     20,    136}, 0, {   996,    -44}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    20,      0,    164}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    20,      0,    154}, 0, {   524,    980}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    20,     20,    154}, 0, {    10,    -24}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x06017420\nstatic const Vtx treasure_chest_seg6_vertex_06017420[] = {\n    {{{   -19,      0,    154}, 0, {   480,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -19,      0,    164}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -19,     20,    154}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -19,     20,    136}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -19,     20,    154}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    20,     20,    154}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -19,     20,    136}, 0, {    86,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x06017490\nstatic const Vtx treasure_chest_seg6_vertex_06017490[] = {\n    {{{   -91,     46,     77}, 0, {  2012,  -1036}, {0x00, 0x78, 0x26, 0xff}}},\n    {{{     0,     30,    127}, 0, { -1664,    990}, {0x00, 0x78, 0x26, 0xff}}},\n    {{{     0,     46,     77}, 0, { -1664,  -1036}, {0x00, 0x78, 0x26, 0xff}}},\n    {{{     0,      0,    154}, 0, { -1664,   1992}, {0x00, 0x54, 0x5e, 0xff}}},\n    {{{    92,     30,    127}, 0, {  2012,      0}, {0x00, 0x54, 0x5e, 0xff}}},\n    {{{     0,     30,    127}, 0, { -1664,      0}, {0x00, 0x54, 0x5e, 0xff}}},\n    {{{    92,      0,    154}, 0, {  2012,   1992}, {0x00, 0x54, 0x5e, 0xff}}},\n    {{{   -91,     30,    127}, 0, {  2012,      0}, {0x00, 0x54, 0x5e, 0xff}}},\n    {{{   -91,      0,    154}, 0, {  2012,   1992}, {0x00, 0x54, 0x5e, 0xff}}},\n    {{{     0,     30,    127}, 0, { -1664,   1028}, {0x00, 0x78, 0x26, 0xff}}},\n    {{{    92,     30,    127}, 0, {  2012,   1028}, {0x00, 0x78, 0x26, 0xff}}},\n    {{{    92,     46,     77}, 0, {  2012,  -1066}, {0x00, 0x78, 0x26, 0xff}}},\n    {{{     0,     46,     77}, 0, { -1664,  -1066}, {0x00, 0x78, 0x26, 0xff}}},\n    {{{     0,     30,     27}, 0, { -1664,      0}, {0x00, 0x54, 0xa2, 0xff}}},\n    {{{    92,     30,     27}, 0, {  2012,      0}, {0x00, 0x54, 0xa2, 0xff}}},\n    {{{    92,      0,      0}, 0, {  2012,   1992}, {0x00, 0x54, 0xa2, 0xff}}},\n};\n\n// 0x06017590\nstatic const Vtx treasure_chest_seg6_vertex_06017590[] = {\n    {{{   -91,     46,     77}, 0, {  2012,  -1036}, {0x00, 0x78, 0x26, 0xff}}},\n    {{{   -91,     30,    127}, 0, {  2012,    990}, {0x00, 0x78, 0x26, 0xff}}},\n    {{{     0,     30,    127}, 0, { -1664,    990}, {0x00, 0x78, 0x26, 0xff}}},\n    {{{     0,     46,     77}, 0, { -1664,  -1022}, {0x00, 0x78, 0xda, 0xff}}},\n    {{{    92,     30,     27}, 0, {  2012,    990}, {0x00, 0x78, 0xda, 0xff}}},\n    {{{     0,     30,     27}, 0, { -1664,    990}, {0x00, 0x78, 0xda, 0xff}}},\n    {{{    92,     46,     77}, 0, {  2012,  -1022}, {0x00, 0x78, 0xda, 0xff}}},\n    {{{   -91,     30,     27}, 0, {  2012,    990}, {0x00, 0x78, 0xda, 0xff}}},\n    {{{   -91,     46,     77}, 0, {  2012,  -1052}, {0x00, 0x78, 0xda, 0xff}}},\n    {{{     0,     46,     77}, 0, { -1664,  -1052}, {0x00, 0x78, 0xda, 0xff}}},\n    {{{     0,     30,     27}, 0, { -1664,      0}, {0x00, 0x54, 0xa2, 0xff}}},\n    {{{    92,      0,      0}, 0, {  2012,   1992}, {0x00, 0x54, 0xa2, 0xff}}},\n    {{{     0,      0,      0}, 0, { -1664,   1992}, {0x00, 0x54, 0xa2, 0xff}}},\n    {{{   -91,      0,      0}, 0, {  2012,   1992}, {0x00, 0x54, 0xa2, 0xff}}},\n    {{{   -91,     30,     27}, 0, {  2012,      0}, {0x00, 0x54, 0xa2, 0xff}}},\n};\n\n// 0x06017680 - 0x06017790\nconst Gfx treasure_chest_seg6_dl_06017680[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, treasure_chest_seg6_texture_060147A8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&treasure_chest_seg6_lights_06013F90.l, 1),\n    gsSPLight(&treasure_chest_seg6_lights_06013F90.a, 2),\n    gsSPVertex(treasure_chest_seg6_vertex_06017030, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  9, 0x0,  5,  9,  6, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(treasure_chest_seg6_vertex_06017110, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 11, 13, 0x0),\n    gsSPVertex(treasure_chest_seg6_vertex_06017200, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(treasure_chest_seg6_vertex_060172F0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06017790 - 0x06017810\nconst Gfx treasure_chest_seg6_dl_06017790[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, treasure_chest_seg6_texture_06014FA8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(treasure_chest_seg6_vertex_06017330, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(treasure_chest_seg6_vertex_06017420, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  2,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06017810 - 0x060178C0\nconst Gfx treasure_chest_seg6_dl_06017810[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, treasure_chest_seg6_texture_060157A8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(treasure_chest_seg6_vertex_06017490, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  3,  5, 0x0),\n    gsSP2Triangles( 7,  8,  3, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(treasure_chest_seg6_vertex_06017590, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9,  5, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(13, 10, 12, 0x0, 13, 14, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x060178C0 - 0x06017958\nconst Gfx treasure_chest_seg6_dl_060178C0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(treasure_chest_seg6_dl_06017680),\n    gsSPDisplayList(treasure_chest_seg6_dl_06017790),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(treasure_chest_seg6_dl_06017810),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/tree/geo.inc.c",
    "content": "// 0x16000FE8\nconst GeoLayout bubbly_tree_geo[] = {\n    GEO_CULLING_RADIUS(800),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, tree_seg3_dl_0302FEE8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x16001000\nconst GeoLayout spiky_tree_geo[] = {\n    GEO_CULLING_RADIUS(800),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, tree_seg3_dl_03030FA0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x16001018\nconst GeoLayout snow_tree_geo[] = {\n    GEO_CULLING_RADIUS(800),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, tree_seg3_dl_03032088),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x16001030\nconst GeoLayout spiky_tree1_geo[] = {\n    GEO_CULLING_RADIUS(800),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, tree_seg3_dl_03032170),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x16001048\nconst GeoLayout palm_tree_geo[] = {\n    GEO_CULLING_RADIUS(800),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, tree_seg3_dl_03033258),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/tree/model.inc.c",
    "content": "// Tree\n\n// 0x0302DE10\nstatic const Lights1 tree_seg3_lights_0302DE10 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0302DE28\nALIGNED8 static const Texture tree_seg3_texture_0302DE28[] = {\n#include \"actors/tree/tree_left_side.rgba16.inc.c\"\n};\n\n// 0x0302EE28\nALIGNED8 static const Texture tree_seg3_texture_0302EE28[] = {\n#include \"actors/tree/tree_right_side.rgba16.inc.c\"\n};\n\n// 0x0302FE28\nstatic const Vtx tree_seg3_vertex_0302FE28[] = {\n    {{{  -356,     -9,      0}, 0, {  -796,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,     -9,      0}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    800,      0}, 0, {   990,   -712}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0302FE58\nstatic const Vtx tree_seg3_vertex_0302FE58[] = {\n    {{{     0,     -9,      0}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   358,     -9,      0}, 0, {  1756,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    800,      0}, 0, {     0,   -712}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0302FE88 - 0x0302FEB8\nconst Gfx tree_seg3_dl_0302FE88[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, tree_seg3_texture_0302DE28),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(tree_seg3_vertex_0302FE28, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0302FEB8 - 0x0302FEE8\nconst Gfx tree_seg3_dl_0302FEB8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, tree_seg3_texture_0302EE28),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(tree_seg3_vertex_0302FE58, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0302FEE8 - 0x0302FF60\nconst Gfx tree_seg3_dl_0302FEE8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(tree_seg3_dl_0302FE88),\n    gsSPDisplayList(tree_seg3_dl_0302FEB8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x0302FF60\nALIGNED8 static const Texture tree_seg3_texture_0302FF60[] = {\n#include \"actors/tree/pine_tree.rgba16.inc.c\"\n};\n\n// 0x03030F60\nstatic const Vtx tree_seg3_vertex_03030F60[] = {\n    {{{   128,    512,      0}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -127,    512,      0}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -127,      0,      0}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   128,      0,      0}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x03030FA0 - 0x03031048\nconst Gfx tree_seg3_dl_03030FA0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, tree_seg3_texture_0302FF60),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&tree_seg3_lights_0302DE10.l, 1),\n    gsSPLight(&tree_seg3_lights_0302DE10.a, 2),\n    gsSPVertex(tree_seg3_vertex_03030F60, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x03031048\nALIGNED8 static const Texture tree_seg3_texture_03031048[] = {\n#include \"actors/tree/snowy_pine_tree.rgba16.inc.c\"\n};\n\n// 0x03032048\nstatic const Vtx tree_seg3_vertex_03032048[] = {\n    {{{   128,    512,      0}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -127,    512,      0}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -127,      0,      0}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   128,      0,      0}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x03032088 - 0x03032130\nconst Gfx tree_seg3_dl_03032088[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, tree_seg3_texture_03031048),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&tree_seg3_lights_0302DE10.l, 1),\n    gsSPLight(&tree_seg3_lights_0302DE10.a, 2),\n    gsSPVertex(tree_seg3_vertex_03032048, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x03032130\nstatic const Vtx tree_seg3_vertex_03032130[] = {\n    {{{   128,    512,      0}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -127,    512,      0}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -127,      0,      0}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   128,      0,      0}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x03032170 - 0x03032218\nconst Gfx tree_seg3_dl_03032170[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, tree_seg3_texture_0302FF60),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&tree_seg3_lights_0302DE10.l, 1),\n    gsSPLight(&tree_seg3_lights_0302DE10.a, 2),\n    gsSPVertex(tree_seg3_vertex_03032130, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x03032218\nALIGNED8 static const Texture tree_seg3_texture_03032218[] = {\n#include \"actors/tree/palm_tree.rgba16.inc.c\"\n};\n\n// 0x03033218\nstatic const Vtx tree_seg3_vertex_03033218[] = {\n    {{{   170,    512,      0}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -169,    512,      0}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -169,      0,      0}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   170,      0,      0}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x03033258 - 0x03033300\nconst Gfx tree_seg3_dl_03033258[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, tree_seg3_texture_03032218),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&tree_seg3_lights_0302DE10.l, 1),\n    gsSPLight(&tree_seg3_lights_0302DE10.a, 2),\n    gsSPVertex(tree_seg3_vertex_03033218, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/ukiki/anims/anim_0500D658.inc.c",
    "content": "// 0x0500D198\nstatic const s16 ukiki_seg5_animvalue_0500D198[] = {\n    0x0000, 0x0098, 0x0097, 0x0097, 0x0095, 0x0090, 0x0081, 0x0073,\n    0x0078, 0x0082, 0x008A, 0x0093, 0x0097, 0x3A3A, 0x3805, 0x32B7,\n    0x2C44, 0x26A4, 0x23CD, 0x24F6, 0x28E8, 0x2E50, 0x33DF, 0x3847,\n    0x3A37, 0xFD8F, 0x1436, 0x1535, 0x1778, 0x19EB, 0x1D75, 0x1F17,\n    0x1946, 0x1361, 0x127C, 0x12DB, 0x13B2, 0x1436, 0x0000, 0x02D9,\n    0x05B2, 0x0000, 0xFF5E, 0xFF9E, 0xFFCB, 0x0000, 0x0009, 0x0008,\n    0x0003, 0x0000, 0x0000, 0xFFDC, 0xFFB8, 0x0000, 0x0043, 0x006B,\n    0x003A, 0x0000, 0xFFF6, 0xFFF7, 0xFFFD, 0x0000, 0xDFB5, 0xDC28,\n    0xD5A7, 0xCB7D, 0xF91E, 0x21F8, 0x1277, 0xF715, 0xED43, 0xE5FC,\n    0xE16B, 0xDFB7, 0xE3CE, 0xECCC, 0xFDD9, 0x0810, 0x064A, 0xFF86,\n    0xF71E, 0xF070, 0xEBDA, 0xE7DB, 0xE4FE, 0xE3D0, 0xFD30, 0xFBD2,\n    0xF956, 0xF826, 0xF9D7, 0xFCD4, 0xFED4, 0xFEA5, 0xFD79, 0xFC95,\n    0xFCC8, 0xFD2F, 0x01F6, 0x0341, 0x05DC, 0x07DF, 0x08C7, 0x0916,\n    0x086D, 0x0609, 0x02AD, 0x0047, 0x00BC, 0x01F4, 0x7544, 0x7D15,\n    0x8C43, 0x965B, 0x969F, 0x91CF, 0x89BE, 0x7BB9, 0x6A75, 0x5FD0,\n    0x68E8, 0x752E, 0x0000, 0x0154, 0x03E5, 0x0591, 0x05D9, 0x05BA,\n    0x054F, 0x04B2, 0x03FC, 0x02AA, 0x00F1, 0x0001, 0x05B4, 0x0498,\n    0x027D, 0x013D, 0x014F, 0x01D0, 0x0291, 0x0362, 0x0415, 0x04C0,\n    0x0564, 0x05B3, 0xDCFF, 0xEA5F, 0x03FD, 0x1417, 0x1568, 0x1230,\n    0x0BF6, 0x043F, 0xFC94, 0xF178, 0xE41B, 0xDD09, 0xF553, 0xF957,\n    0x00CA, 0x04CE, 0x0384, 0x0051, 0xFC38, 0xF838, 0xF553, 0xF46A,\n    0xF4D6, 0xF553, 0x07E5, 0x07D4, 0x079F, 0x0742, 0x06A8, 0x05DF,\n    0x0518, 0x0484, 0x0456, 0x054B, 0x06FD, 0x07E5, 0xF31B, 0xF17F,\n    0xEEFB, 0xEF03, 0xF2FB, 0xF8EB, 0xFF3F, 0x0465, 0x06CE, 0x01EC,\n    0xF853, 0xF31B, 0x8CF5, 0x90CD, 0x96AA, 0x960C, 0x8B6E, 0x7BB6,\n    0x6B0C, 0x5D90, 0x5765, 0x64C6, 0x7ECF, 0x8CF5, 0xF5BC, 0xF629,\n    0xF67A, 0xF57B, 0xF4D8, 0xF5D7, 0xF761, 0xF8D3, 0xF989, 0xF8A6,\n    0xF6D5, 0xF5BE, 0x0145, 0x043F, 0x025A, 0xEB5E, 0xD78F, 0xD80A,\n    0xDE18, 0xE684, 0xEE18, 0xF5A3, 0xFD62, 0x0140, 0xCA87, 0xCDED,\n    0xCF47, 0xC411, 0xB902, 0xB652, 0xB597, 0xB673, 0xB886, 0xBE2B,\n    0xC61B, 0xCA81, 0x2C4D, 0x3605, 0x3ED6, 0x31C7, 0x248F, 0x2544,\n    0x29B3, 0x2EF2, 0x3218, 0x312A, 0x2E33, 0x2C4F, 0xFB5D, 0xFAF7,\n    0xFBF1, 0x01D9, 0x0723, 0x07F9, 0x07AD, 0x0692, 0x04FD, 0x01CF,\n    0xFDA5, 0xFB60, 0xF757, 0xF838, 0xF952, 0xF960, 0xF93E, 0xF96A,\n    0xF9AC, 0xF9D7, 0xF9C0, 0xF906, 0xF7F3, 0xF758, 0xA4FC, 0xA930,\n    0xA722, 0x8A37, 0x6F53, 0x69EB, 0x69C7, 0x6DB4, 0x747E, 0x8422,\n    0x994E, 0xA4EB, 0x00B7, 0x0148, 0x027B, 0x038D, 0x03BA, 0x0269,\n    0x0027, 0xFDEB, 0xFCAA, 0xFD79, 0xFF7A, 0x00B5, 0xFCD2, 0x0063,\n    0x085C, 0x10A3, 0x151E, 0x1421, 0x1006, 0x0ABB, 0x062D, 0x023C,\n    0xFE95, 0xFCD5, 0xD793, 0xD3AF, 0xCA8B, 0xBFF4, 0xB7B5, 0xB18D,\n    0xAC04, 0xA918, 0xAAC6, 0xB80B, 0xCC27, 0xD782, 0x32D1, 0x322E,\n    0x30C8, 0x2F61, 0x2EBE, 0x2EF7, 0x2F89, 0x3052, 0x312E, 0x31F9,\n    0x3291, 0x32D1, 0x04E5, 0x0482, 0x03AA, 0x02D1, 0x026F, 0x0291,\n    0x02E9, 0x0363, 0x03E7, 0x0462, 0x04BE, 0x04E5, 0xFD3E, 0xFE77,\n    0x0127, 0x03D7, 0x0510, 0x04A3, 0x038A, 0x0208, 0x0062, 0xFEDD,\n    0xFDBA, 0xFD3F, 0xAD20, 0xA2BC, 0x8BE0, 0x7501, 0x6A9D, 0x6E3A,\n    0x7790, 0x8460, 0x9263, 0x9F59, 0xA902, 0xAD1A, 0xF90C, 0xFAFA,\n    0xFE8B, 0x006E, 0xFEC9, 0xFB74, 0xF8AF, 0xF730, 0xF63F, 0xF5F6,\n    0xF772, 0xF90A, 0x12E1, 0x1240, 0x1008, 0x0BBD, 0x02C5, 0xF7BB,\n    0xF1E7, 0xF59A, 0xFE83, 0x0702, 0x0E5A, 0x12DB, 0xF32C, 0xF9B5,\n    0x05E7, 0x0CAC, 0x0849, 0xFE79, 0xF54D, 0xEDCD, 0xE6F2, 0xE3B8,\n    0xEAF0, 0xF31E, 0xFFFD, 0x0068, 0x012D, 0x018E, 0x011C, 0x0045,\n    0xFF93, 0xFF2B, 0xFEE7, 0xFEDA, 0xFF6A, 0xFFFC, 0x0684, 0x0635,\n    0x052B, 0x0339, 0xFF28, 0xFA2F, 0xF7C7, 0xFA32, 0xFF2E, 0x037A,\n    0x05AF, 0x0683, 0xF2F5, 0xF7E7, 0x00F0, 0x0564, 0x004C, 0xF69F,\n    0xEE8A, 0xE9D8, 0xE6C1, 0xE61B, 0xEC6E, 0xF2EA, 0xE25A, 0xE131,\n    0xDF08, 0xDDDF, 0xDEDE, 0xE0DC, 0xE25A, 0xE2AF, 0xE285, 0xE25A,\n    0xE25A, 0xE25A, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n};\n\n// 0x0500D538\nstatic const u16 ukiki_seg5_animindex_0500D538[] = {\n    0x0001, 0x0000, 0x000C, 0x0001, 0x0001, 0x0000, 0x000C, 0x000D, 0x0001, 0x0000, 0x0001, 0x0019,\n    0x0001, 0x0000, 0x0001, 0x01CF, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x001A,\n    0x0001, 0x0000, 0x0001, 0x01CE, 0x0001, 0x0000,\n    0x000C, 0x0056, 0x000C, 0x0062, 0x000C, 0x006E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x004A,\n    0x000C, 0x0026, 0x000C, 0x0032, 0x000C, 0x003E,\n    0x0001, 0x0000, 0x0001, 0x01CD, 0x0001, 0x0000,\n    0x000C, 0x00AA, 0x000C, 0x00B6, 0x000C, 0x00C2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x009E,\n    0x000C, 0x007A, 0x000C, 0x0086, 0x000C, 0x0092,\n    0x0001, 0x0000, 0x0001, 0x01CC, 0x0001, 0x0000,\n    0x000C, 0x00FE, 0x000C, 0x010A, 0x000C, 0x0116,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x00F2,\n    0x000C, 0x00CE, 0x000C, 0x00DA, 0x000C, 0x00E6,\n    0x0001, 0x0000, 0x0001, 0x01CB, 0x0001, 0x0000,\n    0x000C, 0x0152, 0x000C, 0x015E, 0x000C, 0x016A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x0146,\n    0x000C, 0x0122, 0x000C, 0x012E, 0x000C, 0x013A,\n    0x0001, 0x0000, 0x0001, 0x01CA, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x01BE,\n    0x000C, 0x019A, 0x000C, 0x01A6, 0x000C, 0x01B2,\n    0x000C, 0x0176, 0x000C, 0x0182, 0x000C, 0x018E,\n};\n\n// 0x0500D658\nstatic const struct Animation ukiki_seg5_anim_0500D658 = {\n    0,\n    0,\n    0,\n    0,\n    0x0C,\n    ANIMINDEX_NUMPARTS(ukiki_seg5_animindex_0500D538),\n    ukiki_seg5_animvalue_0500D198,\n    ukiki_seg5_animindex_0500D538,\n    0,\n};\n"
  },
  {
    "path": "actors/ukiki/anims/anim_0500DC80.inc.c",
    "content": "// 0x0500D670\nstatic const s16 ukiki_seg5_animvalue_0500D670[] = {\n    0x0000, 0x0090, 0x008D, 0x0086, 0x0080, 0x007D, 0x0080, 0x0088,\n    0x008E, 0x008E, 0x0086, 0x007D, 0x007B, 0x0080, 0x0087, 0x008D,\n    0x0090, 0x22C6, 0x24FE, 0x2918, 0x2B41, 0x2A44, 0x2807, 0x255E,\n    0x231A, 0x220D, 0x2333, 0x2626, 0x295A, 0x2B42, 0x29FB, 0x2607,\n    0x22F9, 0xFD8F, 0xFD8E, 0xFD8E, 0xFD8E, 0xFD8E, 0xFD8E, 0xFD8E,\n    0xFD8E, 0xFD8E, 0xFD8E, 0xFD8E, 0xFD8E, 0xFD8E, 0xFD8E, 0xFD8E,\n    0xFD8F, 0x20D8, 0x1F12, 0x1BBC, 0x19CB, 0x19FF, 0x1AE2, 0x1C1F,\n    0x1D5F, 0x1E4D, 0x1E90, 0x1D99, 0x1BD0, 0x1A13, 0x1941, 0x1C57,\n    0x2089, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0xFF43, 0xFE85, 0x0000, 0x0D58,\n    0x0198, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0xFFF3, 0xFFE6, 0x0000, 0x00EE,\n    0x001C, 0x32F8, 0x3369, 0x348A, 0x3610, 0x37AE, 0x391B, 0x3A09,\n    0x3A2F, 0x3940, 0x36F2, 0x32F8, 0x24EA, 0x0C2C, 0xF42A, 0xE39E,\n    0x2AAB, 0xF070, 0xF011, 0xEF36, 0xEE41, 0xED96, 0xED96, 0xEEA4,\n    0xF2C9, 0xF98E, 0xFF99, 0x018B, 0xFAB1, 0xEE9C, 0xE666, 0xE97E,\n    0xEFF0, 0x0202, 0x01AB, 0x00DD, 0xFFEC, 0xFE5D, 0xFF05, 0xFFE8,\n    0x00E8, 0x01E7, 0x02C8, 0x036B, 0x0378, 0x0302, 0x0290, 0x0240,\n    0x0206, 0x09BF, 0x09C5, 0x09B7, 0x0964, 0x07AA, 0x0649, 0x04C8,\n    0x034E, 0x0200, 0x0105, 0x0082, 0x015D, 0x0385, 0x05B1, 0x07E7,\n    0x09A2, 0xA41C, 0xA21B, 0x9CDD, 0x958A, 0x8432, 0x7F50, 0x7AD3,\n    0x7705, 0x7436, 0x72B5, 0x72CF, 0x77FF, 0x825B, 0x8D19, 0x9976,\n    0xA375, 0x05B3, 0x0568, 0x04CC, 0x0445, 0x0443, 0x0452, 0x0469,\n    0x0487, 0x04A9, 0x04C7, 0x04DE, 0x04F0, 0x0504, 0x0522, 0x0569,\n    0x05AE, 0xFFC6, 0x0072, 0x01E1, 0x032C, 0x037E, 0x039D, 0x039F,\n    0x03A3, 0x0397, 0x031E, 0x01FB, 0x007C, 0xFF0F, 0xFE21, 0xFEA3,\n    0xFFB1, 0x1E95, 0x1917, 0x0D7C, 0x0313, 0x0116, 0x00AE, 0x010D,\n    0x013B, 0x01D0, 0x0586, 0x0E1F, 0x1967, 0x2422, 0x2B18, 0x2738,\n    0x1F34, 0x059E, 0xFDCD, 0xED5D, 0xDEDD, 0xDD90, 0xD7A8, 0xD65D,\n    0xE235, 0xF27D, 0xFD79, 0x01A0, 0x0428, 0x0571, 0x05DD, 0x05CC,\n    0x05A2, 0x07CC, 0x070F, 0x052B, 0x029D, 0xFFE5, 0xFD7D, 0xFBE5,\n    0xFBD6, 0xFD0F, 0xFE8B, 0x0014, 0x01F4, 0x03EA, 0x05B4, 0x0712,\n    0x07C2, 0x020C, 0x015C, 0xFF97, 0xFD29, 0xFA80, 0xF80B, 0xF637,\n    0xF532, 0xF4FB, 0xF5B9, 0xF777, 0xF9DE, 0xFC86, 0xFF09, 0x00FD,\n    0x01FE, 0x75C8, 0x77F7, 0x7DA1, 0x8575, 0x8E1C, 0x9646, 0x9C9F,\n    0xA15F, 0xA429, 0xA2CA, 0x9CC4, 0x941A, 0x8A59, 0x810C, 0x79BD,\n    0x75FD, 0xFABA, 0xFA52, 0xF96D, 0xF889, 0xF7C3, 0xF6FD, 0xF663,\n    0xF605, 0xF5D1, 0xF5B9, 0xF593, 0xF55C, 0xF53C, 0xF55D, 0xF5E7,\n    0xFA30, 0xF714, 0xF8A4, 0xFBB0, 0xFDC6, 0xFD91, 0xFC66, 0xFBC9,\n    0xFC93, 0xFDED, 0xFED3, 0xFF35, 0xFF8C, 0xFFAB, 0xFF61, 0xFE80,\n    0xF7E8, 0x9B9A, 0xA21B, 0xAF00, 0xB85C, 0xB925, 0xB666, 0xB54C,\n    0xB8B4, 0xBDC1, 0xC110, 0xC2B6, 0xC463, 0xC51C, 0xC3E1, 0xBFB6,\n    0x9FA4, 0x2CB5, 0x24EE, 0x16E5, 0x108A, 0x14DB, 0x1C93, 0x2635,\n    0x3049, 0x3954, 0x3FDB, 0x43F2, 0x469B, 0x47BE, 0x4744, 0x4518,\n    0x2F7B, 0xE3A0, 0xE89A, 0xF226, 0xF831, 0xF8C3, 0xF7C0, 0xF5DD,\n    0xF3CE, 0xF246, 0xF1FB, 0xF3FE, 0xF7D7, 0xFBEA, 0xFE9D, 0xFE53,\n    0xE58A, 0xF3F1, 0xF3E8, 0xF409, 0xF4A8, 0xF5F6, 0xF7B6, 0xF995,\n    0xFB42, 0xFC6A, 0xFCBC, 0xFBC1, 0xF99F, 0xF6F3, 0xF455, 0xF262,\n    0xF3C9, 0x916C, 0x8EF6, 0x8AE0, 0x8A1D, 0x8E61, 0x9509, 0x9C85,\n    0xA347, 0xA7C0, 0xA861, 0xA296, 0x972B, 0x89A0, 0x7D71, 0x7624,\n    0x8F4D, 0x01D1, 0x01D6, 0x01EB, 0x0219, 0x0256, 0x02AB, 0x0339,\n    0x0425, 0x0554, 0x067F, 0x0763, 0x07B8, 0x0302, 0x0214, 0x01CD,\n    0x01D0, 0xFD4C, 0xFD64, 0xFDA4, 0xFDFB, 0xFE31, 0xFE80, 0xFF84,\n    0x016F, 0x03D4, 0x065E, 0x08BD, 0x0A9C, 0x08A0, 0x0499, 0x002A,\n    0xFD75, 0xC877, 0xC268, 0xB615, 0xAC45, 0xA7B6, 0xA5AB, 0xA6B1,\n    0xAB0C, 0xB191, 0xB8A8, 0xBEBB, 0xC22F, 0xB061, 0xB674, 0xC0CD,\n    0xC804, 0x3FDB, 0x422B, 0x46CB, 0x4A48, 0x4CD6, 0x4E40, 0x4A73,\n    0x3FDA, 0x317D, 0x2231, 0x14CA, 0x0C1D, 0x2A3E, 0x34E6, 0x3C3F,\n    0x3FAE, 0x0DCA, 0x0D7F, 0x0CA3, 0x0B44, 0x08AB, 0x058E, 0x041E,\n    0x04D6, 0x0670, 0x0881, 0x0A9D, 0x0C57, 0x0C83, 0x0CF6, 0x0D76,\n    0x0DC6, 0x0040, 0x013B, 0x0377, 0x05E3, 0x08BA, 0x0BC0, 0x0D30,\n    0x0CB6, 0x0B6E, 0x09B2, 0x07DA, 0x0641, 0x0508, 0x034A, 0x016F,\n    0x0050, 0xA8D5, 0xA5F7, 0x9F07, 0x9686, 0x8A5B, 0x7C9C, 0x761E,\n    0x7898, 0x7ECB, 0x870D, 0x8FAD, 0x9701, 0x9ADF, 0x9FFE, 0xA566,\n    0xA8A5, 0x0060, 0x0088, 0x00CD, 0x00E1, 0x004C, 0xFFCE, 0x0019,\n    0x00A7, 0x0124, 0x0142, 0xFFF2, 0xFEB8, 0xFFE4, 0x0142, 0x00FE,\n    0x0067, 0x0C37, 0x0C35, 0x0C32, 0x0C31, 0x0C35, 0x0C38, 0x0C34,\n    0x0C2E, 0x0C29, 0x0C28, 0x0C38, 0x0C47, 0x0C38, 0x0C28, 0x0C2E,\n    0x0C37, 0x0CC5, 0x0D4D, 0x0E35, 0x0E7A, 0x0C80, 0x0AD4, 0x0BD4,\n    0x0DB2, 0x0F5C, 0x0FC1, 0x0B5C, 0x0743, 0x0B2E, 0x0FC1, 0x0EDB,\n    0x0CDD, 0x023D, 0x0236, 0x0224, 0x0207, 0x01C6, 0x0197, 0x01AF,\n    0x01DF, 0x020D, 0x021E, 0x01C6, 0x0176, 0x01D7, 0x024B, 0x0253,\n    0x023E, 0x02E7, 0x02ED, 0x02FB, 0x030E, 0x0333, 0x034E, 0x0346,\n    0x0334, 0x031C, 0x02FE, 0x02BF, 0x028D, 0x02AD, 0x02DC, 0x02E7,\n    0x02E7, 0x0DED, 0x0D90, 0x0C90, 0x0B12, 0x07CA, 0x0575, 0x06B0,\n    0x091C, 0x0B6A, 0x0C4B, 0x07D9, 0x03D8, 0x08D8, 0x0EBE, 0x0F1A,\n    0x0DFC, 0xF993, 0xF7F6, 0xF4B8, 0xF23E, 0xF1CD, 0xF319, 0xF62C,\n    0xFA23, 0xFDA1, 0xFF48, 0xFAC4, 0xF4BD, 0xF388, 0xF447, 0xF6E9,\n    0xF979, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x0000,\n};\n\n// 0x0500DB60\nstatic const u16 ukiki_seg5_animindex_0500DB60[] = {\n    0x0001, 0x0000, 0x0010, 0x0001, 0x0001, 0x0000, 0x0010, 0x0011, 0x0001, 0x0000, 0x0010, 0x0021,\n    0x0001, 0x0000, 0x0001, 0x0276, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x0031,\n    0x0001, 0x0000, 0x0001, 0x0275, 0x0001, 0x0000,\n    0x0010, 0x0081, 0x0010, 0x0091, 0x0010, 0x00A1,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x0071,\n    0x0010, 0x0041, 0x0010, 0x0051, 0x0010, 0x0061,\n    0x0001, 0x0000, 0x0001, 0x0274, 0x0001, 0x0000,\n    0x0010, 0x00F1, 0x0010, 0x0101, 0x0010, 0x0111,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x00E1,\n    0x0010, 0x00B1, 0x0010, 0x00C1, 0x0010, 0x00D1,\n    0x0001, 0x0000, 0x0001, 0x0273, 0x0001, 0x0000,\n    0x0010, 0x0161, 0x0010, 0x0171, 0x0010, 0x0181,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x0151,\n    0x0010, 0x0121, 0x0010, 0x0131, 0x0010, 0x0141,\n    0x0001, 0x0000, 0x0001, 0x0272, 0x0001, 0x0000,\n    0x0010, 0x01D1, 0x0010, 0x01E1, 0x0010, 0x01F1,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x01C1,\n    0x0010, 0x0191, 0x0010, 0x01A1, 0x0010, 0x01B1,\n    0x0001, 0x0000, 0x0001, 0x0271, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x0261,\n    0x0010, 0x0231, 0x0010, 0x0241, 0x0010, 0x0251,\n    0x0010, 0x0201, 0x0010, 0x0211, 0x0010, 0x0221,\n};\n\n// 0x0500DC80\nstatic const struct Animation ukiki_seg5_anim_0500DC80 = {\n    0,\n    0,\n    0,\n    0,\n    0x10,\n    ANIMINDEX_NUMPARTS(ukiki_seg5_animindex_0500DB60),\n    ukiki_seg5_animvalue_0500D670,\n    ukiki_seg5_animindex_0500DB60,\n    0,\n};\n"
  },
  {
    "path": "actors/ukiki/anims/anim_0500DDEC.inc.c",
    "content": "// 0x0500DC98\nstatic const s16 ukiki_seg5_animvalue_0500DC98[] = {\n    0x0000, 0x0079, 0x000B, 0x3FFF, 0x1CF8, 0xFD11, 0xBE42, 0x1CF8,\n    0xFD11, 0xBE42, 0xB631, 0x1372, 0xBA88, 0xB631, 0x1372, 0xBA88,\n    0xFEDD, 0xFCBD, 0xC3CC, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x0000,\n};\n\n// 0x0500DCCC\nstatic const u16 ukiki_seg5_animindex_0500DCCC[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0018, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0003,\n    0x0001, 0x0000, 0x0001, 0x0017, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0006,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0005,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0004,\n    0x0001, 0x0000, 0x0001, 0x0016, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0009,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0008,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0007,\n    0x0001, 0x0000, 0x0001, 0x0015, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x000C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x000B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x000A,\n    0x0001, 0x0000, 0x0001, 0x0014, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x000F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x000E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x000D,\n    0x0001, 0x0000, 0x0001, 0x0013, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0012,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0011,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0010,\n};\n\n// 0x0500DDEC\nstatic const struct Animation ukiki_seg5_anim_0500DDEC = {\n    0,\n    0,\n    0,\n    0,\n    0x64,\n    ANIMINDEX_NUMPARTS(ukiki_seg5_animindex_0500DCCC),\n    ukiki_seg5_animvalue_0500DC98,\n    ukiki_seg5_animindex_0500DCCC,\n    0,\n};\n"
  },
  {
    "path": "actors/ukiki/anims/anim_0500EACC.inc.c",
    "content": "// 0x0500DE04\nstatic const s16 ukiki_seg5_animvalue_0500DE04[] = {\n    0x0000, 0x0082, 0x0084, 0x0086, 0x0085, 0x0080, 0x0074, 0x0062,\n    0x0051, 0x0049, 0x004E, 0x005C, 0x006A, 0x0072, 0x006B, 0x005B,\n    0x0064, 0x0066, 0x0059, 0x004A, 0x004B, 0x0051, 0x0044, 0x003F,\n    0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F,\n    0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x003F, 0x271C,\n    0x29F3, 0x3118, 0x3A7D, 0x4411, 0x4BC7, 0x4F92, 0x51BD, 0x544C,\n    0x567F, 0x58C2, 0x5AB6, 0x5BFD, 0x5C93, 0x5CA5, 0x5C18, 0x5AD3,\n    0x586C, 0x5510, 0x5187, 0x4E95, 0x4D00, 0x4C72, 0x4C0B, 0x4BC7,\n    0x4BA3, 0x4B99, 0x4BA5, 0x4BC4, 0x4BF2, 0x4C29, 0x4C67, 0x4CA7,\n    0x4CE4, 0x4D1B, 0x4D47, 0x4D65, 0x4D70, 0x068D, 0x081C, 0x0BD0,\n    0x1034, 0x13D3, 0x1537, 0x11D5, 0x0B0F, 0x0555, 0x03A9, 0x0411,\n    0x041B, 0x02AB, 0x00C6, 0xFF24, 0xFDC4, 0xFD60, 0xFE43, 0xFFC5,\n    0x01AE, 0x03F3, 0x062F, 0x07FE, 0x08FE, 0x0963, 0x09A7, 0x09CD,\n    0x09DB, 0x09D5, 0x09BD, 0x099A, 0x096D, 0x093C, 0x090B, 0x08DE,\n    0x08B9, 0x089F, 0x0896, 0x0000, 0xF587, 0xE0DA, 0xD217, 0xCE7A,\n    0xCEE1, 0xD0E3, 0xD217, 0xD217, 0xD217, 0xD217, 0xD217, 0xD217,\n    0xD217, 0xD217, 0xD217, 0xD217, 0xD217, 0xD217, 0xD217, 0xD217,\n    0xD217, 0xD217, 0xD217, 0xD217, 0xD217, 0xD217, 0xD217, 0xD217,\n    0xD217, 0xD217, 0xD217, 0xD217, 0xD217, 0xD217, 0xD217, 0xD217,\n    0xD217, 0x0000, 0x01C5, 0x0544, 0x07C3, 0x0860, 0x084F, 0x07F8,\n    0x07C3, 0x07C3, 0x07C3, 0x07C3, 0x07C3, 0x07C3, 0x07C3, 0x07C3,\n    0x07C3, 0x07C3, 0x07C3, 0x07C3, 0x07C3, 0x07C3, 0x07C3, 0x07C3,\n    0x07C3, 0x07C3, 0x07C3, 0x07C3, 0x07C3, 0x07C3, 0x07C3, 0x07C3,\n    0x07C3, 0x07C3, 0x07C3, 0x07C3, 0x07C3, 0x07C3, 0x07C3, 0x32F8,\n    0x270C, 0x0F81, 0xFEB5, 0xFA97, 0xFB0C, 0xFD56, 0xFEB5, 0xFEB5,\n    0xFEB5, 0xFEB5, 0xFEB5, 0xFEB5, 0xFEB5, 0xFEB5, 0xFEB5, 0xFEB5,\n    0xFEB5, 0xFEB5, 0xFEB5, 0xFEB5, 0xFEB5, 0xFEB5, 0xFEB5, 0xFEB5,\n    0xFEB5, 0xFEB5, 0xFEB5, 0xFEB5, 0xFEB5, 0xFEB5, 0xFEB5, 0xFEB5,\n    0xFEB5, 0xFEB5, 0xFEB5, 0xFEB5, 0xFEB5, 0xCDCE, 0xD35F, 0xDD7E,\n    0xE250, 0xDD60, 0xD3E5, 0xCA7E, 0xC5CB, 0xC898, 0xCFDF, 0xD782,\n    0xDB63, 0xD7D9, 0xD026, 0xCA8A, 0xCD39, 0xD421, 0xD63A, 0xD5D2,\n    0xD5AF, 0xD5AF, 0xD5AF, 0xD5AF, 0xD5AF, 0xD5AF, 0xD5AF, 0xD5AF,\n    0xD5AF, 0xD5AF, 0xD5AF, 0xD5AF, 0xD5AF, 0xD5AF, 0xD5AF, 0xD5AF,\n    0xD5AF, 0xD5AF, 0xD5AF, 0x346B, 0x2F23, 0x23F1, 0x19C8, 0x12AC,\n    0x0C01, 0x05D0, 0x0022, 0xFA73, 0xF6FB, 0xF81C, 0xFBEF, 0x0112,\n    0x0711, 0x0CFA, 0x1379, 0x17AE, 0x1546, 0x1159, 0x130F, 0x1952,\n    0x1E42, 0x1E99, 0x1E99, 0x1E99, 0x1E99, 0x1E99, 0x1E99, 0x1E99,\n    0x1E99, 0x1E99, 0x1E99, 0x1E99, 0x1E99, 0x1E99, 0x1E99, 0x1E99,\n    0x1E99, 0xCB8F, 0xCCD9, 0xCF51, 0xD0E0, 0xD0FD, 0xD093, 0xCFB3,\n    0xCE6E, 0xCAA8, 0xC79B, 0xCACB, 0xCE78, 0xCEA3, 0xCDB6, 0xCC85,\n    0xCAB0, 0xC934, 0xC9A5, 0xCAB4, 0xCB1A, 0xCB16, 0xCAFC, 0xCAF9,\n    0xCAF9, 0xCAF9, 0xCAF9, 0xCAF9, 0xCAF9, 0xCAF9, 0xCAF9, 0xCAF9,\n    0xCAF9, 0xCAF9, 0xCAF9, 0xCAF9, 0xCAF9, 0xCAF9, 0xCAF9, 0x5ECC,\n    0x60B0, 0x646A, 0x6713, 0x678D, 0x672E, 0x66C1, 0x670E, 0x6A4D,\n    0x6D0B, 0x6B60, 0x66C4, 0x5F39, 0x566F, 0x4F50, 0x4C4C, 0x4C32,\n    0x4E19, 0x50D6, 0x51F3, 0x51E6, 0x5196, 0x518F, 0x518F, 0x518F,\n    0x518F, 0x518F, 0x518F, 0x518F, 0x518F, 0x518F, 0x518F, 0x518F,\n    0x518F, 0x518F, 0x518F, 0x518F, 0x518F, 0x057F, 0xFE7C, 0x27DE,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000C, 0x0000, 0xFFC8,\n    0xFF7C, 0xFF56, 0xFFA3, 0x0000, 0x000F, 0x0007, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xFFFC, 0xFFF8, 0x0000, 0x0028, 0x005D, 0x0078,\n    0x0042, 0x0000, 0xFFF6, 0xFFFB, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0xB766, 0xB866, 0xBAF4, 0xBE65,\n    0xC20C, 0xC540, 0xC8B8, 0xCC2B, 0xCD66, 0xCA52, 0xC506, 0xC195,\n    0xC1F9, 0xC439, 0xC679, 0xC8B9, 0xCAFA, 0xCB61, 0xC5D4, 0xC0C5,\n    0xC330, 0xC7E5, 0xCA8C, 0xCA9F, 0xCA80, 0xCA37, 0xC9CB, 0xC942,\n    0xC8A5, 0xC7F9, 0xC747, 0xC695, 0xC5EB, 0xC550, 0xC4CB, 0xC463,\n    0xC41F, 0xC407, 0x1477, 0x1524, 0x1705, 0x19DE, 0x1D76, 0x2192,\n    0x28D4, 0x31F1, 0x36C6, 0x32B9, 0x2A65, 0x2574, 0x285B, 0x2EA6,\n    0x32A6, 0x32F5, 0x3240, 0x30F9, 0x2F90, 0x2E75, 0x2E19, 0x3103,\n    0x33F1, 0x3416, 0x3420, 0x3413, 0x33F2, 0x33C1, 0x3384, 0x333E,\n    0x32F2, 0x32A6, 0x325B, 0x3215, 0x31D9, 0x31AA, 0x318B, 0x3180,\n    0x1ED6, 0x1EFC, 0x1F55, 0x1FBF, 0x2016, 0x2035, 0x1FE9, 0x1F46,\n    0x1E95, 0x1DE7, 0x1D2A, 0x1C71, 0x1BAF, 0x1AF0, 0x1A6E, 0x1A05,\n    0x1981, 0x190C, 0x18D1, 0x18F7, 0x19AA, 0x1E43, 0x229E, 0x2313,\n    0x2368, 0x23A1, 0x23C0, 0x23C9, 0x23C1, 0x23AA, 0x2389, 0x2360,\n    0x2333, 0x2307, 0x22DE, 0x22BD, 0x22A6, 0x229E, 0xAC65, 0xAF48,\n    0xB627, 0xBE56, 0xC528, 0xC7EF, 0xC1C8, 0xB55C, 0xAB55, 0xA6C6,\n    0xA49C, 0xA444, 0xA6CE, 0xAB2A, 0xAD9B, 0xAD3F, 0xABFC, 0xAA3F,\n    0xA872, 0xA701, 0xA659, 0xA957, 0xAC94, 0xACE6, 0xAD21, 0xAD48,\n    0xAD5E, 0xAD65, 0xAD5F, 0xAD4F, 0xAD38, 0xAD1B, 0xACFC, 0xACDE,\n    0xACC1, 0xACAA, 0xAC9A, 0xAC94, 0xF766, 0xF74B, 0xF703, 0xF69C,\n    0xF621, 0xF5A0, 0xF527, 0xF4C1, 0xF47D, 0xF48F, 0xF4EE, 0xF548,\n    0xF588, 0xF5CE, 0xF618, 0xF662, 0xF6AB, 0xF6EF, 0xF72D, 0xF761,\n    0xF78A, 0xF7A4, 0xF7AD, 0xF7AD, 0xF7AD, 0xF7AD, 0xF7AD, 0xF7AD,\n    0xF7AD, 0xF7AD, 0xF7AD, 0xF7AD, 0xF7AD, 0xF7AD, 0xF7AD, 0xF7AD,\n    0xF7AD, 0xF7AD, 0x0936, 0x090F, 0x08A6, 0x0810, 0x075E, 0x06A6,\n    0x05F9, 0x056C, 0x0512, 0x054C, 0x0604, 0x069C, 0x06F2, 0x074B,\n    0x07A5, 0x07FE, 0x0853, 0x08A2, 0x08E8, 0x0922, 0x094F, 0x096C,\n    0x0976, 0x0976, 0x0976, 0x0976, 0x0976, 0x0976, 0x0976, 0x0976,\n    0x0976, 0x0976, 0x0976, 0x0976, 0x0976, 0x0976, 0x0976, 0x0976,\n    0xC04F, 0xBFB5, 0xBE19, 0xBBC7, 0xB90A, 0xB62F, 0xB381, 0xB14D,\n    0xAFDD, 0xB097, 0xB32F, 0xB56A, 0xB6C5, 0xB836, 0xB9B1, 0xBB2A,\n    0xBC96, 0xBDEA, 0xBF19, 0xC019, 0xC0DE, 0xC15D, 0xC18A, 0xC18A,\n    0xC18A, 0xC18A, 0xC18A, 0xC18A, 0xC18A, 0xC18A, 0xC18A, 0xC18A,\n    0xC18A, 0xC18A, 0xC18A, 0xC18A, 0xC18A, 0xC18A, 0x2D1D, 0x2DC2,\n    0x2F74, 0x31DD, 0x34A4, 0x3772, 0x39F0, 0x3BC4, 0x3C99, 0x3964,\n    0x3325, 0x2F8F, 0x2F73, 0x2FC9, 0x3079, 0x316C, 0x328B, 0x33BE,\n    0x34ED, 0x3601, 0x36E4, 0x377D, 0x37B5, 0x37B5, 0x37B5, 0x37B5,\n    0x37B5, 0x37B5, 0x37B5, 0x37B5, 0x37B5, 0x37B5, 0x37B5, 0x37B5,\n    0x37B5, 0x37B5, 0x37B5, 0x37B5, 0xE969, 0xE842, 0xE52C, 0xE0B1,\n    0xDB5E, 0xD5BD, 0xD05B, 0xCBC3, 0xC881, 0xC84C, 0xCB1F, 0xCEE6,\n    0xD3AD, 0xD968, 0xDDE0, 0xDEF7, 0xDE5F, 0xDDB9, 0xDCCE, 0xDC7C,\n    0xDACE, 0xD539, 0xD18B, 0xD18B, 0xD18B, 0xD18B, 0xD18B, 0xD18B,\n    0xD18B, 0xD18B, 0xD18B, 0xD18B, 0xD18B, 0xD18B, 0xD18B, 0xD18B,\n    0xD18B, 0xD18B, 0xEB3A, 0xEA9C, 0xE900, 0xE6C6, 0xE44A, 0xE1EA,\n    0xE005, 0xDEF9, 0xDF24, 0xE491, 0xEE45, 0xF517, 0xF57D, 0xF300,\n    0xF10E, 0xF1BF, 0xF26F, 0xF0EF, 0xEEEA, 0xEDD8, 0xEBDA, 0xE6B9,\n    0xE371, 0xE371, 0xE371, 0xE371, 0xE371, 0xE371, 0xE371, 0xE371,\n    0xE371, 0xE371, 0xE371, 0xE371, 0xE371, 0xE371, 0xE371, 0xE371,\n    0x9744, 0x97CB, 0x9929, 0x9B0C, 0x9D22, 0x9F17, 0xA09A, 0xA158,\n    0xA0FF, 0x9BF3, 0x92F6, 0x8C3E, 0x8A61, 0x8ACA, 0x8BED, 0x8E33,\n    0x912C, 0x9364, 0x956E, 0x9686, 0x99C9, 0xA3A7, 0xAA18, 0xAA18,\n    0xAA18, 0xAA18, 0xAA18, 0xAA18, 0xAA18, 0xAA18, 0xAA18, 0xAA18,\n    0xAA18, 0xAA18, 0xAA18, 0xAA18, 0xAA18, 0xAA18, 0x02B1, 0x02AC,\n    0x02A1, 0x0290, 0x027B, 0x0264, 0x024D, 0x0238, 0x0227, 0x021C,\n    0x021D, 0x0220, 0x0221, 0x0221, 0x0221, 0x0221, 0x0221, 0x0221,\n    0x0221, 0x0221, 0x0221, 0x0221, 0x0221, 0x0221, 0x0221, 0x0221,\n    0x0221, 0x0221, 0x0221, 0x0221, 0x0221, 0x0221, 0x0221, 0x0221,\n    0x0221, 0x0221, 0x0221, 0x0221, 0xFE2A, 0xFE25, 0xFE18, 0xFE05,\n    0xFDED, 0xFDD4, 0xFDBA, 0xFDA3, 0xFD8F, 0xFD83, 0xFD84, 0xFD88,\n    0xFD88, 0xFD88, 0xFD88, 0xFD88, 0xFD88, 0xFD88, 0xFD88, 0xFD88,\n    0xFD88, 0xFD88, 0xFD88, 0xFD88, 0xFD88, 0xFD88, 0xFD88, 0xFD88,\n    0xFD88, 0xFD88, 0xFD88, 0xFD88, 0xFD88, 0xFD88, 0xFD88, 0xFD88,\n    0xFD88, 0xFD88, 0xB8FC, 0xB94C, 0xBA27, 0xBB6A, 0xBCF3, 0xBEA0,\n    0xC04D, 0xC1DA, 0xC323, 0xC3E9, 0xC3DE, 0xC399, 0xC393, 0xC393,\n    0xC393, 0xC393, 0xC393, 0xC393, 0xC393, 0xC393, 0xC393, 0xC393,\n    0xC393, 0xC393, 0xC393, 0xC393, 0xC393, 0xC393, 0xC393, 0xC393,\n    0xC393, 0xC393, 0xC393, 0xC393, 0xC393, 0xC393, 0xC393, 0xC393,\n    0x3BC8, 0x3BD0, 0x3BE2, 0x3BFA, 0x3C11, 0x3C20, 0x3C22, 0x3C10,\n    0x3BE4, 0x3B57, 0x39D1, 0x389B, 0x3886, 0x3886, 0x3886, 0x3886,\n    0x3886, 0x3886, 0x3886, 0x3886, 0x3886, 0x3886, 0x3886, 0x3886,\n    0x3886, 0x3886, 0x3886, 0x3886, 0x3886, 0x3886, 0x3886, 0x3886,\n    0x3886, 0x3886, 0x3886, 0x3886, 0x3886, 0x3886, 0x227C, 0x233D,\n    0x2537, 0x27FF, 0x2B29, 0x2E48, 0x30F0, 0x32B6, 0x332E, 0x2EBA,\n    0x25FB, 0x1EE0, 0x1BDA, 0x1A78, 0x1950, 0x17CB, 0x1751, 0x195F,\n    0x1B9B, 0x1AAF, 0x1AFF, 0x22ED, 0x2928, 0x2928, 0x2928, 0x2928,\n    0x2928, 0x2928, 0x2928, 0x2928, 0x2928, 0x2928, 0x2928, 0x2928,\n    0x2928, 0x2928, 0x2928, 0x2928, 0x1F35, 0x1F7F, 0x2038, 0x212D,\n    0x222D, 0x2302, 0x237B, 0x2363, 0x2289, 0x1DA7, 0x15B7, 0x10DF,\n    0x1287, 0x1747, 0x1B0E, 0x1AA9, 0x1A89, 0x1F58, 0x24E9, 0x2859,\n    0x2A78, 0x2AB3, 0x2A43, 0x2A43, 0x2A43, 0x2A43, 0x2A43, 0x2A43,\n    0x2A43, 0x2A43, 0x2A43, 0x2A43, 0x2A43, 0x2A43, 0x2A43, 0x2A43,\n    0x2A43, 0x2A43, 0xAED7, 0xAED4, 0xAEB6, 0xAE5C, 0xADA7, 0xAC75,\n    0xAAA8, 0xA81E, 0xA4B7, 0x9B56, 0x8D51, 0x843A, 0x8598, 0x8BE4,\n    0x9019, 0x8C72, 0x8850, 0x8B8E, 0x8F8C, 0x8E07, 0x8DCF, 0x97A3,\n    0x9F7A, 0x9F7A, 0x9F7A, 0x9F7A, 0x9F7A, 0x9F7A, 0x9F7A, 0x9F7A,\n    0x9F7A, 0x9F7A, 0x9F7A, 0x9F7A, 0x9F7A, 0x9F7A, 0x9F7A, 0x9F7A,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0001, 0x0002, 0x0003, 0x0001, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0001, 0x0003, 0x0005, 0xFFCC, 0xFF4D, 0xFECE, 0xFE94,\n    0xFEE3, 0x0000, 0x02DE, 0x0762, 0x0C3D, 0x101D, 0x11B2, 0x10B7,\n    0x0E30, 0x0ABB, 0x06F7, 0x0382, 0x00FA, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x00A6, 0x014C, 0x0000, 0xFAA7,\n    0xF35B, 0xEE7C, 0xF0C9, 0xF500, 0xF632, 0xF6A9, 0xF6A2, 0xF4DE,\n    0xF29A, 0xF3C7, 0xF98F, 0x018F, 0x0A6C, 0x12C8, 0x1945, 0x1C85,\n    0x1A9C, 0x1446, 0x0C1B, 0x04B7, 0x00B3, 0x0032, 0x0140, 0x0352,\n    0x05DF, 0x085C, 0x0A40, 0x0B00, 0x0000, 0xFE9D, 0xFB3C, 0xF70A,\n    0xF336, 0xF0ED, 0xF079, 0xF221, 0xF70A, 0x03C3, 0x13BE, 0x1A7A,\n    0x05BC, 0xECB8, 0xE496, 0xE1E8, 0xE562, 0xF4D6, 0x0A71, 0x1575,\n    0x1208, 0x0945, 0xFDDD, 0xF27E, 0xE9D9, 0xE69C, 0xEC4D, 0xF948,\n    0x0880, 0x14EA, 0x1979, 0x152F, 0x0BCF, 0xFF74, 0xF232, 0xE623,\n    0xDD5D, 0xD9FA, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0003,\n    0x0002, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFD9, 0xFF84,\n    0xFF2E, 0xFF07, 0xFF3D, 0x0000, 0x01F5, 0x0509, 0x0858, 0x0AFC,\n    0x0C11, 0x0B66, 0x09AC, 0x0751, 0x04BF, 0x0264, 0x00AB, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0096, 0x012D,\n    0x0000, 0xFB1F, 0xF47A, 0xF01D, 0xF294, 0xF6A2, 0xF736, 0xF6EC,\n    0xF6A2, 0xF617, 0xF58B, 0xF6A2, 0xF9CD, 0xFE02, 0x029E, 0x0702,\n    0x0A8E, 0x0CA1, 0x0C60, 0x0A21, 0x070D, 0x044C, 0x0308, 0x0360,\n    0x0479, 0x0609, 0x07C3, 0x095D, 0x0A8A, 0x0B00, 0x0000, 0xFDDA,\n    0xF8A7, 0xF24A, 0xECA4, 0xE998, 0xEB2E, 0xF07F, 0xF70A, 0x00E3,\n    0x0BF6, 0x0F7B, 0xFC12, 0xE71C, 0xE4C2, 0xE896, 0xF014, 0xFEEA,\n    0x1169, 0x1A0A, 0x15FD, 0x0D11, 0x01AD, 0xF63A, 0xED1D, 0xE8BF,\n    0xEBFF, 0xF561, 0x00C0, 0x09F6, 0x0CDE, 0x0896, 0x002A, 0xF55C,\n    0xE9E8, 0xDF90, 0xD813, 0xD531, 0x0000, 0xFFF0, 0xFFC6, 0xFF92,\n    0xFF60, 0xFF3F, 0xFF4D, 0xFF70, 0xFF5C, 0xFEE2, 0xFE32, 0xFD93,\n    0xFD28, 0xFCE3, 0xFCB7, 0xFC9B, 0xFC8F, 0xFC98, 0xFCB2, 0xFCCB,\n    0xFCDD, 0xFCEF, 0xFD01, 0xFD13, 0xFD27, 0xFD3D, 0xFD57, 0xFD76,\n    0xFD96, 0xFDB2, 0xFDC6, 0xFDD3, 0xFDDE, 0xFDE5, 0xFDEB, 0xFDEE,\n    0xFDF0, 0xFDF0, 0x0000, 0xFFD8, 0xFF74, 0xFEF3, 0xFE76, 0xFE1C,\n    0xFDFF, 0xFE08, 0xFE12, 0xFDEC, 0xFDC6, 0xFE02, 0xFEB1, 0x00D5,\n    0x064F, 0x0CB5, 0x0F73, 0x0AC5, 0x026F, 0xFD25, 0xFC65, 0xFCE3,\n    0xFE24, 0xFFAD, 0x0102, 0x01A9, 0x0186, 0x00F3, 0x0029, 0xFF64,\n    0xFEDA, 0xFE86, 0xFE3C, 0xFDFD, 0xFDCA, 0xFDA5, 0xFD8D, 0xFD85,\n    0xCC9B, 0xCD9E, 0xD017, 0xD334, 0xD620, 0xD808, 0xD8CA, 0xD840,\n    0xD596, 0xCD8F, 0xC367, 0xBFF7, 0xD135, 0xE3F6, 0xE517, 0xE0D6,\n    0xDD6F, 0xDCE0, 0xDD29, 0xDE87, 0xE178, 0xE5A7, 0xEA1D, 0xEDDD,\n    0xEFEF, 0xEF57, 0xEA5B, 0xE16B, 0xD6D2, 0xCCDB, 0xC5D2, 0xC163,\n    0xBDB2, 0xBABA, 0xB874, 0xB6DB, 0xB5EA, 0xB59B, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n};\n\n// 0x0500E9AC\nstatic const u16 ukiki_seg5_animindex_0500E9AC[] = {\n    0x0001, 0x0000, 0x0026, 0x0001, 0x0001, 0x0000, 0x0026, 0x0027, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x05D3, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0026, 0x004D,\n    0x0001, 0x0000, 0x0001, 0x05D2, 0x0001, 0x0000,\n    0x0026, 0x010B, 0x0026, 0x0131, 0x0026, 0x0157,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0026, 0x00E5,\n    0x0026, 0x0073, 0x0026, 0x0099, 0x0026, 0x00BF,\n    0x0001, 0x0000, 0x0001, 0x05D1, 0x0001, 0x0000,\n    0x0026, 0x01F2, 0x0026, 0x0218, 0x0026, 0x023E,\n    0x0026, 0x0180, 0x0026, 0x01A6, 0x0026, 0x01CC,\n    0x0001, 0x017D, 0x0001, 0x017E, 0x0001, 0x017F,\n    0x0001, 0x0000, 0x0001, 0x05D0, 0x0001, 0x0000,\n    0x0026, 0x02FC, 0x0026, 0x0322, 0x0026, 0x0348,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0026, 0x02D6,\n    0x0026, 0x0264, 0x0026, 0x028A, 0x0026, 0x02B0,\n    0x0001, 0x0000, 0x0001, 0x05CF, 0x0001, 0x0000,\n    0x0026, 0x0406, 0x0026, 0x042C, 0x0026, 0x0452,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0026, 0x03E0,\n    0x0026, 0x036E, 0x0026, 0x0394, 0x0026, 0x03BA,\n    0x0001, 0x0000, 0x0001, 0x05CE, 0x0001, 0x0000,\n    0x0026, 0x055C, 0x0026, 0x0582, 0x0026, 0x05A8,\n    0x0026, 0x04EA, 0x0026, 0x0510, 0x0026, 0x0536,\n    0x0026, 0x0478, 0x0026, 0x049E, 0x0026, 0x04C4,\n};\n\n// 0x0500EACC\nstatic const struct Animation ukiki_seg5_anim_0500EACC = {\n    0,\n    0,\n    0,\n    0,\n    0x26,\n    ANIMINDEX_NUMPARTS(ukiki_seg5_animindex_0500E9AC),\n    ukiki_seg5_animvalue_0500DE04,\n    ukiki_seg5_animindex_0500E9AC,\n    0,\n};\n"
  },
  {
    "path": "actors/ukiki/anims/anim_0500EEA8.inc.c",
    "content": "// 0x0500EAE4\nstatic const s16 ukiki_seg5_animvalue_0500EAE4[] = {\n    0x0000, 0x0067, 0x0065, 0x005F, 0x005A, 0x0057, 0x0059, 0x005D,\n    0x0061, 0x0065, 0x0067, 0x0000, 0x0000, 0x0002, 0x0003, 0x0004,\n    0x0004, 0x0003, 0x0001, 0x0000, 0x0000, 0x1EF6, 0x1FCA, 0x219C,\n    0x236E, 0x2442, 0x23B9, 0x2272, 0x20E7, 0x1F95, 0x1EF7, 0x292E,\n    0x2801, 0x2624, 0x2617, 0x2946, 0x2E22, 0x32B3, 0x34FF, 0x2F94,\n    0x293D, 0x32F8, 0x340D, 0x366F, 0x38D0, 0x39E5, 0x3933, 0x3786,\n    0x3582, 0x33C8, 0x32FA, 0xE437, 0xDF50, 0xD487, 0xC9BE, 0xC4D8,\n    0xC802, 0xCF97, 0xD8BA, 0xE08C, 0xE430, 0x2555, 0x24F7, 0x2427,\n    0x2358, 0x22FA, 0x2337, 0x23C8, 0x2478, 0x250E, 0x2554, 0xF666,\n    0xF51C, 0xF248, 0xEF73, 0xEE29, 0xEEFE, 0xF0FC, 0xF362, 0xF56F,\n    0xF664, 0x908B, 0x91A6, 0x9415, 0x9683, 0x979E, 0x96E8, 0x9532,\n    0x9322, 0x915F, 0x908C, 0x057F, 0x0557, 0x04FD, 0x04A4, 0x047B,\n    0x0495, 0x04D4, 0x0520, 0x0561, 0x057F, 0xFE7C, 0xFE2B, 0xFD7A,\n    0xFCC8, 0xFC78, 0xFCAC, 0xFD29, 0xFDBF, 0xFE40, 0xFE7C, 0x27DE,\n    0x2A66, 0x2FF8, 0x358A, 0x3812, 0x3670, 0x3285, 0x2DCD, 0x29C3,\n    0x27E1, 0xDCE1, 0xD82B, 0xCDCE, 0xC371, 0xBEBB, 0xC1C6, 0xC90F,\n    0xD1D7, 0xD95B, 0xDCDB, 0xE468, 0xE4E7, 0xE5FD, 0xE713, 0xE791,\n    0xE740, 0xE67C, 0xE590, 0xE4C7, 0xE469, 0x0B3F, 0x0C3C, 0x0E6B,\n    0x1099, 0x1196, 0x10F2, 0x0F6A, 0x0D91, 0x0BFD, 0x0B40, 0x9426,\n    0x9590, 0x98AE, 0x9BCB, 0x9D36, 0x9C4C, 0x9A1B, 0x9778, 0x9535,\n    0x9428, 0xF3F2, 0xF3DF, 0xF3B4, 0xF389, 0xF376, 0xF383, 0xF3A1,\n    0xF3C5, 0xF3E4, 0xF3F2, 0x038F, 0x02E9, 0x017B, 0x000E, 0xFF68,\n    0xFFD4, 0x00D4, 0x0209, 0x0313, 0x038E, 0xAAC2, 0xA8B1, 0xA425,\n    0x9F98, 0x9D87, 0x9EDD, 0xA210, 0xA5EA, 0xA936, 0xAABF, 0x2D1D,\n    0x2F47, 0x340A, 0x38CD, 0x3AF7, 0x3992, 0x3639, 0x3230, 0x2EBC,\n    0x2D20, 0xE969, 0xE9CE, 0xEAAE, 0xEB8E, 0xEBF3, 0xEBB2, 0xEB14,\n    0xEA57, 0xE9B5, 0xE969, 0xEB3A, 0xEAD8, 0xEA01, 0xE929, 0xE8C8,\n    0xE907, 0xE99E, 0xEA55, 0xEAF1, 0xEB39, 0x9744, 0x967E, 0x94CC,\n    0x9319, 0x9254, 0x92D3, 0x9405, 0x9575, 0x96B0, 0x9743, 0x0341,\n    0x033C, 0x0332, 0x0328, 0x0324, 0x0327, 0x032E, 0x0336, 0x033D,\n    0x0341, 0xFFD7, 0x0000, 0x005A, 0x00B5, 0x00DE, 0x00C3, 0x0083,\n    0x0037, 0xFFF6, 0xFFD7, 0xA2A1, 0xA099, 0x9C21, 0x97AA, 0x95A2,\n    0x96F1, 0x9A16, 0x9DDF, 0xA11C, 0xA29F, 0x2FF7, 0x3293, 0x3851,\n    0x3E0F, 0x40AC, 0x3EFC, 0x3AF3, 0x3615, 0x31EB, 0x2FFB, 0x143B,\n    0x13D1, 0x12E9, 0x1201, 0x1197, 0x11DC, 0x127F, 0x1343, 0x13EC,\n    0x143A, 0x0AE3, 0x0B84, 0x0CE6, 0x0E49, 0x0EEA, 0x0E82, 0x0D89,\n    0x0C5C, 0x0B5B, 0x0AE4, 0x96C2, 0x9571, 0x928B, 0x8FA5, 0x8E54,\n    0x8F2D, 0x9137, 0x93AC, 0x95C6, 0x96C1, 0x0B7E, 0x084F, 0x014E,\n    0xFA4E, 0xF71F, 0xF92E, 0xFE1A, 0x0408, 0x091C, 0x0B7A, 0xF35E,\n    0xF29B, 0xF0ED, 0xEF3E, 0xEE7B, 0xEEF9, 0xF028, 0xF194, 0xF2CC,\n    0xF35D, 0xB247, 0xB39D, 0xB68E, 0xB97F, 0xBAD5, 0xB9F8, 0xB7E7,\n    0xB569, 0xB347, 0xB248, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x0000,\n};\n\n// 0x0500ED88\nstatic const u16 ukiki_seg5_animindex_0500ED88[] = {\n    0x0001, 0x0000, 0x000A, 0x0001, 0x000A, 0x000B, 0x000A, 0x0015, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0150, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x001F,\n    0x0001, 0x0000, 0x0001, 0x014F, 0x0001, 0x0000,\n    0x000A, 0x003D, 0x000A, 0x0047, 0x000A, 0x0051,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0033,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0029,\n    0x0001, 0x0000, 0x0001, 0x014E, 0x0001, 0x0000,\n    0x000A, 0x0083, 0x000A, 0x008D, 0x000A, 0x0097,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0079,\n    0x000A, 0x005B, 0x000A, 0x0065, 0x000A, 0x006F,\n    0x0001, 0x0000, 0x0001, 0x014D, 0x0001, 0x0000,\n    0x000A, 0x00C9, 0x000A, 0x00D3, 0x000A, 0x00DD,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x00BF,\n    0x000A, 0x00A1, 0x000A, 0x00AB, 0x000A, 0x00B5,\n    0x0001, 0x0000, 0x0001, 0x014C, 0x0001, 0x0000,\n    0x000A, 0x010F, 0x000A, 0x0119, 0x000A, 0x0123,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0105,\n    0x000A, 0x00E7, 0x000A, 0x00F1, 0x000A, 0x00FB,\n    0x0001, 0x0000, 0x0001, 0x014B, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0141,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0137,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x012D,\n};\n\n// 0x0500EEA8\nstatic const struct Animation ukiki_seg5_anim_0500EEA8 = {\n    0,\n    0,\n    0,\n    0,\n    0x0A,\n    ANIMINDEX_NUMPARTS(ukiki_seg5_animindex_0500ED88),\n    ukiki_seg5_animvalue_0500EAE4,\n    ukiki_seg5_animindex_0500ED88,\n    0,\n};\n"
  },
  {
    "path": "actors/ukiki/anims/anim_0500F530.inc.c",
    "content": "// 0x0500EEC0\nstatic const s16 ukiki_seg5_animvalue_0500EEC0[] = {\n    0x0000, 0x0055, 0x0066, 0x0093, 0x00CD, 0x0107, 0x0134, 0x0146,\n    0x013B, 0x011D, 0x00F2, 0x00C0, 0x008C, 0x005D, 0x005C, 0x0059,\n    0x0055, 0x000B, 0x23D8, 0x2256, 0x1E82, 0x1967, 0x1410, 0x0F87,\n    0x0CD6, 0x0CAD, 0x0E83, 0x1193, 0x151A, 0x1AE3, 0x2070, 0x22A9,\n    0x239F, 0x23D7, 0x0000, 0xFFF6, 0xFFDB, 0xFFB8, 0xFF96, 0xFF7B,\n    0xFF70, 0xFF79, 0xFF8F, 0xFFAC, 0xFFCD, 0xFFEB, 0x0000, 0x0007,\n    0x0004, 0x0000, 0x0000, 0x0035, 0x00BA, 0x0167, 0x0214, 0x0299,\n    0x02CE, 0x02A4, 0x0238, 0x01A4, 0x0102, 0x006D, 0x0000, 0xFFDB,\n    0xFFEA, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFF6, 0xFFEB,\n    0x0000, 0x0046, 0x00A9, 0x010F, 0x015F, 0x017F, 0x0146, 0x00C6,\n    0x0043, 0x0000, 0x0000, 0x0039, 0x0073, 0x0000, 0xFDED, 0xFB14,\n    0xF97C, 0xF99B, 0xFA5E, 0xFB7C, 0xFCAA, 0xFD9E, 0xFE65, 0xFF27,\n    0xFFBD, 0x0000, 0x3CBD, 0x3965, 0x3343, 0x302C, 0x3476, 0x3BD5,\n    0x3F2E, 0x3C28, 0x3668, 0x2FD9, 0x2A66, 0x27F9, 0x2AEA, 0x31D4,\n    0x38FF, 0x3CB3, 0xDEB4, 0xD169, 0xB1A0, 0x8B7E, 0x6B23, 0x5CBB,\n    0x6274, 0x7372, 0x8B49, 0xA582, 0xBDB1, 0xCF67, 0xD91B, 0xDD8D,\n    0xDEC0, 0xDEB4, 0x0007, 0xFB78, 0xF086, 0xE350, 0xD7F3, 0xD28C,\n    0xD3B3, 0xD862, 0xDF4E, 0xE729, 0xEEA6, 0xF477, 0xF8D5, 0xFC86,\n    0xFF14, 0x0007, 0xD662, 0xDED2, 0xF2F9, 0x0B16, 0x1F6D, 0x283C,\n    0x2402, 0x1863, 0x0858, 0xF6DE, 0xE6EB, 0xDB7C, 0xD615, 0xD4D7,\n    0xD5A5, 0xD662, 0xBDEA, 0xCC55, 0xE046, 0xEB23, 0xF347, 0xF523,\n    0xF104, 0xEA43, 0xE1F1, 0xD91C, 0xD0D4, 0xCA26, 0xC522, 0xC146,\n    0xBECB, 0xBDEA, 0x2227, 0x2662, 0x307D, 0x3C96, 0x46CA, 0x4B37,\n    0x491A, 0x4349, 0x3B41, 0x3280, 0x2A82, 0x24C7, 0x220F, 0x2169,\n    0x21CA, 0x2227, 0xFE7E, 0xFC6C, 0xF774, 0xF16E, 0xEC33, 0xE99D,\n    0xE9E4, 0xEBAC, 0xEE6F, 0xF1A6, 0xF4CD, 0xF75C, 0xF9A6, 0xFBF8,\n    0xFDC5, 0xFE7E, 0x95AA, 0x92D2, 0x8BFC, 0x83B7, 0x7C8C, 0x790F,\n    0x7991, 0x7C32, 0x8034, 0x84CF, 0x8945, 0x8CD5, 0x8FD2, 0x92AE,\n    0x94D2, 0x95AA, 0x27BC, 0x2C7A, 0x37C6, 0x453D, 0x507A, 0x551B,\n    0x5229, 0x4AD3, 0x40EE, 0x364E, 0x2CC6, 0x262A, 0x23DC, 0x24AF,\n    0x26A4, 0x27BC, 0xEF4C, 0xF473, 0x00DC, 0x0FFA, 0x1D3D, 0x2416,\n    0x241B, 0x20AC, 0x1AE5, 0x13E2, 0x0CC0, 0x069B, 0xFFFF, 0xF850,\n    0xF1F3, 0xEF4C, 0xD351, 0xD861, 0xE480, 0xF313, 0xFF81, 0x052F,\n    0x035C, 0xFD64, 0xF4DC, 0xEB5F, 0xE284, 0xDBE2, 0xD7BE, 0xD51C,\n    0xD3B9, 0xD351, 0xC266, 0xD234, 0xE6F2, 0xEF1C, 0xF38B, 0xF3C4,\n    0xF0BA, 0xEC11, 0xE65B, 0xE029, 0xDA0D, 0xD498, 0xCEFA, 0xC907,\n    0xC451, 0xC266, 0xE538, 0xE539, 0xE529, 0xE4E9, 0xE45A, 0xE35E,\n    0xE19D, 0xDF24, 0xDC6D, 0xD9F3, 0xD830, 0xD79E, 0xD9D8, 0xDE82,\n    0xE320, 0xE538, 0xFA18, 0xFBE5, 0x0035, 0x0562, 0x09C9, 0x0BC2,\n    0x0B04, 0x08C3, 0x0596, 0x0214, 0xFED6, 0xFC72, 0xFB15, 0xFA62,\n    0xFA21, 0xFA18, 0x9876, 0x950D, 0x8CD3, 0x82C4, 0x79DD, 0x7523,\n    0x74C6, 0x768E, 0x79D6, 0x7DFC, 0x825E, 0x8652, 0x8B24, 0x9128,\n    0x964A, 0x9876, 0xF3D7, 0xF5DC, 0xF9FA, 0xFD44, 0xFEF1, 0xFFF6,\n    0x0000, 0xFF60, 0xFE7F, 0xFD38, 0xFB64, 0xF8DD, 0xEFA2, 0xF1E7,\n    0xF31B, 0xF3D5, 0x013B, 0x01DD, 0x0301, 0x0382, 0x028B, 0x00ED,\n    0x0000, 0x0026, 0x00B6, 0x0170, 0x0215, 0x0265, 0x005C, 0x0239,\n    0x01C3, 0x013D, 0x97E5, 0xA39C, 0xBAAC, 0xCAF2, 0xCCC8, 0xC86F,\n    0xC3A3, 0xC114, 0xBEFD, 0xBC6C, 0xB86F, 0xB214, 0x97A9, 0x98E0,\n    0x989A, 0x97E7, 0x3DCD, 0x3890, 0x2E70, 0x27CD, 0x28E1, 0x2D43,\n    0x3060, 0x30A4, 0x2FFE, 0x2F1E, 0x2EB3, 0x2F6C, 0x3272, 0x3727,\n    0x3B95, 0x3DC8, 0xF108, 0xF08F, 0xEF78, 0xEE43, 0xECB2, 0xEAEA,\n    0xE9FE, 0xEA1C, 0xEAA3, 0xEB6D, 0xEC53, 0xED31, 0xEE39, 0xEF76,\n    0xF086, 0xF107, 0xECAE, 0xED1E, 0xEE1F, 0xEF3C, 0xF0AE, 0xF253,\n    0xF32C, 0xF310, 0xF294, 0xF1DA, 0xF105, 0xF039, 0xEF45, 0xEE21,\n    0xED26, 0xECAF, 0x9196, 0x93AC, 0x9879, 0x9DCC, 0xA4B4, 0xAC90,\n    0xB0A1, 0xB01A, 0xADC7, 0xAA4F, 0xA656, 0xA284, 0x9DF8, 0x9882,\n    0x93D3, 0x919B, 0x1481, 0x113E, 0x0AC1, 0x05FB, 0x04B6, 0x04F5,\n    0x05FE, 0x077B, 0x0968, 0x0B8B, 0x0DA8, 0x0F85, 0x0F4B, 0x120F,\n    0x133E, 0x147D, 0x047A, 0x0095, 0xF8E2, 0xF35B, 0xF27F, 0xF398,\n    0xF4D5, 0xF561, 0xF5CD, 0xF65C, 0xF755, 0xF8FB, 0x007B, 0x0004,\n    0x0225, 0x0473, 0x96D1, 0xA512, 0xC161, 0xD613, 0xDADE, 0xD8E8,\n    0xD4AA, 0xD086, 0xCBB9, 0xC606, 0xBF2B, 0xB6E9, 0xA20D, 0x9F12,\n    0x9B14, 0x96DF, 0x3881, 0x3191, 0x2450, 0x1C19, 0x1F18, 0x26F5,\n    0x2C4D, 0x2CC4, 0x2BA1, 0x29EE, 0x28B5, 0x28FE, 0x2C1A, 0x3131,\n    0x360E, 0x387B, 0xFCA5, 0x00BF, 0x08BB, 0x0E18, 0x0D85, 0x0A7D,\n    0x08B5, 0x0999, 0x0B87, 0x0D9C, 0x0EF5, 0x0EB1, 0x0B36, 0x0547,\n    0xFF8D, 0xFCAC, 0x135A, 0x1188, 0x0E5E, 0x0D50, 0x1125, 0x1730,\n    0x1AAD, 0x1A57, 0x1895, 0x1628, 0x13D1, 0x1250, 0x11FE, 0x1260,\n    0x12FD, 0x1359, 0x933E, 0x93F7, 0x95F0, 0x98E2, 0x9E46, 0xA4ED,\n    0xA88E, 0xA853, 0xA6A2, 0xA40A, 0xA11A, 0x9E62, 0x9B55, 0x97BF,\n    0x94B2, 0x9341, 0x0000, 0x0000, 0x0002, 0x0003, 0x0005, 0x0006,\n    0x0000, 0xFFF1, 0xFFDB, 0xFFC4, 0xFFAF, 0xFFA0, 0xFF9A, 0xFFB2,\n    0xFFE1, 0x0000, 0x0000, 0x01C4, 0x04E5, 0x061C, 0x02FD, 0xFDE3,\n    0xFAB5, 0xFA3B, 0xFA7C, 0xFB3B, 0xFC3B, 0xFD3E, 0xFE08, 0xFEC7,\n    0xFF8F, 0xFFFE, 0x24C0, 0x191A, 0x01DF, 0xF0A0, 0xEB46, 0xEB29,\n    0xEEFA, 0xF574, 0xFDA9, 0x06C9, 0x1008, 0x1899, 0x1FAC, 0x23B6,\n    0x24D7, 0x24C3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0003, 0x0007,\n    0x0003, 0xFFF6, 0xFFE1, 0xFFCC, 0xFFB7, 0xFFA8, 0xFFA2, 0xFFB8,\n    0xFFE4, 0x0000, 0x0000, 0x017A, 0x040B, 0x04E3, 0x01CA, 0xFCE3,\n    0xF9E4, 0xF988, 0xF9E6, 0xFAC0, 0xFBDA, 0xFCF7, 0xFDD9, 0xFEAE,\n    0xFF87, 0xFFFE, 0x1667, 0x0F17, 0x0049, 0xF4B0, 0xEF24, 0xEC39,\n    0xED3F, 0xF1C3, 0xF7F8, 0xFF1F, 0x0679, 0x0D4A, 0x12D2, 0x15D7,\n    0x1690, 0x166A, 0xB99C, 0xB94F, 0xB902, 0xB99C, 0xBB3E, 0xBD4F,\n    0xBFA5, 0xC215, 0xC474, 0xC696, 0xC852, 0xC97B, 0xC9E8, 0xC60F,\n    0xBE9E, 0xB9BE, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n};\n\n// 0x0500F410\nstatic const u16 ukiki_seg5_animindex_0500F410[] = {\n    0x0001, 0x0000, 0x0010, 0x0001, 0x0001, 0x0011, 0x0010, 0x0012, 0x0010, 0x0022, 0x0010, 0x0032,\n    0x0001, 0x0000, 0x0001, 0x02A7, 0x0001, 0x0000,\n    0x0010, 0x0042, 0x0010, 0x0052, 0x0010, 0x0062,\n    0x0001, 0x0000, 0x0001, 0x02A6, 0x0001, 0x0000,\n    0x0010, 0x00B2, 0x0010, 0x00C2, 0x0010, 0x00D2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x00A2,\n    0x0010, 0x0072, 0x0010, 0x0082, 0x0010, 0x0092,\n    0x0001, 0x0000, 0x0001, 0x02A5, 0x0001, 0x0000,\n    0x0010, 0x0122, 0x0010, 0x0132, 0x0010, 0x0142,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x0112,\n    0x0010, 0x00E2, 0x0010, 0x00F2, 0x0010, 0x0102,\n    0x0001, 0x0000, 0x0001, 0x02A4, 0x0001, 0x0000,\n    0x0010, 0x0192, 0x0010, 0x01A2, 0x0010, 0x01B2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x0182,\n    0x0010, 0x0152, 0x0010, 0x0162, 0x0010, 0x0172,\n    0x0001, 0x0000, 0x0001, 0x02A3, 0x0001, 0x0000,\n    0x0010, 0x0202, 0x0010, 0x0212, 0x0010, 0x0222,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x01F2,\n    0x0010, 0x01C2, 0x0010, 0x01D2, 0x0010, 0x01E2,\n    0x0001, 0x0000, 0x0001, 0x02A2, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x0292,\n    0x0010, 0x0262, 0x0010, 0x0272, 0x0010, 0x0282,\n    0x0010, 0x0232, 0x0010, 0x0242, 0x0010, 0x0252,\n};\n\n// 0x0500F530\nstatic const struct Animation ukiki_seg5_anim_0500F530 = {\n    0,\n    0,\n    0,\n    0,\n    0x10,\n    ANIMINDEX_NUMPARTS(ukiki_seg5_animindex_0500F410),\n    ukiki_seg5_animvalue_0500EEC0,\n    ukiki_seg5_animindex_0500F410,\n    0,\n};\n"
  },
  {
    "path": "actors/ukiki/anims/anim_0500FC84.inc.c",
    "content": "// 0x0500F548\nstatic const s16 ukiki_seg5_animvalue_0500F548[] = {\n    0x0000, 0x0067, 0x00B2, 0x0158, 0x0200, 0x0250, 0x0238, 0x01F5,\n    0x0197, 0x012A, 0x00BD, 0x005D, 0x005C, 0x0058, 0x0055, 0x0058,\n    0x005F, 0x0064, 0x0067, 0x0000, 0x0001, 0x0005, 0x0008, 0x000B,\n    0x000B, 0x000C, 0x000C, 0x000B, 0x000B, 0x000B, 0x000B, 0x000B,\n    0x000B, 0x0008, 0x0004, 0x0001, 0x0000, 0x1EF6, 0x1B81, 0x13C5,\n    0x0BBA, 0x0757, 0x0804, 0x0B84, 0x105E, 0x151A, 0x1B14, 0x2070,\n    0x22AE, 0x23B6, 0x23D8, 0x22F6, 0x214C, 0x1FAF, 0x1EF6, 0x0000,\n    0xFFE8, 0xFFB1, 0xFF7B, 0xFF62, 0xFF6C, 0xFF83, 0xFFA4, 0xFFC8,\n    0xFFE9, 0x0000, 0x0007, 0x0003, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0029, 0x008D, 0x0105, 0x0169, 0x0193, 0x0171,\n    0x011D, 0x00B2, 0x004A, 0x0000, 0xFFEA, 0xFFF5, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFF7, 0xFFEE, 0x0003,\n    0x0049, 0x00AB, 0x0110, 0x015F, 0x017F, 0x014C, 0x00D7, 0x0056,\n    0x0000, 0xFFE6, 0xFFE9, 0xFFF8, 0x0000, 0x0000, 0x0000, 0xFDA7,\n    0xFAF2, 0xF97C, 0xF99B, 0xFA60, 0xFB7F, 0xFCAD, 0xFD9E, 0xFE57,\n    0xFF06, 0xFF99, 0x0000, 0x002A, 0x0026, 0x000E, 0x0000, 0x292E,\n    0x302C, 0x36BD, 0x3CF8, 0x3F2E, 0x3C28, 0x3667, 0x2FD8, 0x2A65,\n    0x27F9, 0x2B09, 0x3225, 0x395B, 0x3CBD, 0x39C4, 0x3309, 0x2C44,\n    0x292E, 0x0000, 0xE499, 0xAD70, 0x8318, 0x76FF, 0x77BB, 0x7987,\n    0x731F, 0x6DC7, 0x7987, 0xB408, 0xF9C1, 0x09DD, 0x0981, 0x06E8,\n    0x03C4, 0x011D, 0x0000, 0x0000, 0xFB78, 0xF259, 0xEB5F, 0xE970,\n    0xE9A6, 0xEA03, 0xE813, 0xE64B, 0xEA03, 0xFD6E, 0x1343, 0x1140,\n    0x0D67, 0x095E, 0x04F9, 0x0172, 0x0000, 0x32F8, 0x2331, 0x0475,\n    0xEFB1, 0xF155, 0xFCEF, 0x060C, 0x07C9, 0x070B, 0x060C, 0x02E2,\n    0x042D, 0x1FAD, 0x26AC, 0x2AC4, 0x2EC0, 0x31C6, 0x32F8, 0xE437,\n    0xE1CC, 0xDE12, 0xDE53, 0xE6C1, 0xF32A, 0xFC40, 0xFFFE, 0x0068,\n    0xFC40, 0xED68, 0xD9F5, 0xCC11, 0xCB58, 0xCEE1, 0xD72C, 0xE010,\n    0xE437, 0x2555, 0x2AB4, 0x34E7, 0x3B0B, 0x3844, 0x316F, 0x2C3E,\n    0x2CA3, 0x2EAD, 0x2C3E, 0x1BF6, 0x0AB5, 0x07C2, 0x09A4, 0x0DC2,\n    0x16F2, 0x20C2, 0x2555, 0xF666, 0xF0AC, 0xE57B, 0xDDD0, 0xDE1A,\n    0xE1EA, 0xE4F0, 0xE48E, 0xE363, 0xE4F0, 0xEEBF, 0xF95B, 0xFBCF,\n    0xFBAC, 0xFADF, 0xF920, 0xF744, 0xF666, 0x908B, 0x8399, 0x6A43,\n    0x58D1, 0x5931, 0x6173, 0x6804, 0x672A, 0x649F, 0x6804, 0x7D67,\n    0x9495, 0x9A0D, 0x99EF, 0x987F, 0x9564, 0x9215, 0x908B, 0x057F,\n    0x1A01, 0x443E, 0x674B, 0x7859, 0x823A, 0x886A, 0x906A, 0x94BD,\n    0x886A, 0x4F17, 0x0B88, 0x0006, 0xFFF4, 0x016E, 0x0345, 0x04D6,\n    0x057F, 0xFE7C, 0x00EE, 0x061B, 0x0ABE, 0x0DDA, 0x106B, 0x122A,\n    0x13D7, 0x14B1, 0x122A, 0x06F1, 0xF8DA, 0xF1BD, 0xF3AA, 0xF6CA,\n    0xFA5A, 0xFD46, 0xFE7C, 0x27DE, 0x1A9D, 0x0115, 0xF09F, 0xF457,\n    0x011F, 0x0AFB, 0x0DCA, 0x0DAC, 0x0AFB, 0xFE89, 0xF7AD, 0x20EA,\n    0x26C7, 0x27BB, 0x2804, 0x27F5, 0x27DE, 0xDCE1, 0xDE48, 0xE224,\n    0xE7F4, 0xF142, 0xFC84, 0x0496, 0x0888, 0x094C, 0x0496, 0xF367,\n    0xDB86, 0xC3D3, 0xC3B7, 0xC92B, 0xD113, 0xD92B, 0xDCE1, 0xE468,\n    0xDCCF, 0xCDE6, 0xC37F, 0xC354, 0xC7AA, 0xCB27, 0xCA9A, 0xC932,\n    0xCB27, 0xD6BC, 0xE45A, 0xE681, 0xE725, 0xE71C, 0xE61B, 0xE4F5,\n    0xE468, 0x0B3F, 0x0D62, 0x11A2, 0x14BE, 0x1539, 0x148F, 0x13FC,\n    0x141E, 0x1456, 0x13FC, 0x1206, 0x0FAE, 0x0F16, 0x0EA4, 0x0E14,\n    0x0CF7, 0x0BCB, 0x0B3F, 0x9426, 0x839C, 0x6324, 0x4C81, 0x4C2B,\n    0x55A7, 0x5D46, 0x5C11, 0x5900, 0x5D46, 0x7694, 0x9459, 0x990A,\n    0x9A68, 0x9A4B, 0x9802, 0x9565, 0x9426, 0xF3F2, 0xFD44, 0xFF44,\n    0xFFDC, 0x0000, 0xFF9E, 0xFE67, 0xFD27, 0xFBA0, 0xF8DD, 0xEFA2,\n    0xF1E7, 0xF315, 0xF3D7, 0xF40C, 0xF410, 0xF3FE, 0xF3F2, 0x038F,\n    0x0382, 0x0253, 0x00F5, 0x0000, 0x0019, 0x00B6, 0x0162, 0x021B,\n    0x0265, 0x005C, 0x0239, 0x01AC, 0x013B, 0x01B8, 0x0281, 0x033D,\n    0x038F, 0xAAC2, 0xCAF2, 0xCC5C, 0xC800, 0xC3A3, 0xC174, 0xBEBD,\n    0xBC11, 0xB8EC, 0xB214, 0x97A9, 0x98E0, 0x97D1, 0x97E5, 0x9C84,\n    0xA2D1, 0xA85E, 0xAAC2, 0x2D1D, 0x27CD, 0x2C2D, 0x31E9, 0x3060,\n    0x15FC, 0xFF88, 0x09E2, 0x1F02, 0x2F6C, 0x36BB, 0x3B35, 0x3D63,\n    0x3DCD, 0x3B08, 0x3550, 0x2FAB, 0x2D1D, 0xE969, 0xEE43, 0xEC33,\n    0xE918, 0xE9FE, 0x009A, 0xD858, 0xC8E7, 0x0408, 0xED31, 0xEBBE,\n    0xED73, 0xEFFC, 0xF108, 0xEF93, 0xECFC, 0xEA83, 0xE969, 0xEB3A,\n    0xEF3C, 0xF2DC, 0xF609, 0xF32C, 0xD03E, 0xCAF9, 0xCBE7, 0xD9E6,\n    0xF039, 0xF1E6, 0xF0A4, 0xEE4A, 0xECAE, 0xEC1A, 0xEBA4, 0xEB56,\n    0xEB3A, 0x9744, 0x9DCC, 0xA673, 0xAF10, 0xB0A1, 0x8CA4, 0x9E71,\n    0xAD4D, 0x8180, 0xA284, 0xA1F2, 0x9C5D, 0x95A0, 0x9196, 0x91AE,\n    0x93B9, 0x961D, 0x9744, 0x0341, 0x05FB, 0x066E, 0x066D, 0x05FE,\n    0x03C1, 0x02C9, 0x063D, 0x0B40, 0x0F85, 0x0F4B, 0x120F, 0x13F2,\n    0x1481, 0x106C, 0x0AA5, 0x057C, 0x0341, 0xFFD7, 0xF35B, 0xF264,\n    0xF397, 0xF4D5, 0xF567, 0xF61E, 0xF6A7, 0xF745, 0xF8FB, 0x007B,\n    0x0004, 0x024F, 0x047A, 0x03BC, 0x0224, 0x008E, 0xFFD7, 0xA2A1,\n    0xD613, 0xDC4C, 0xD9DE, 0xD4AA, 0xCA1F, 0xBEEB, 0xBBCD, 0xBADF,\n    0xB6E9, 0xA20D, 0x9F12, 0x9AA4, 0x96D1, 0x98FF, 0x9D05, 0xA0E5,\n    0xA2A1, 0x2FF7, 0x1C19, 0x20C2, 0x29A1, 0x2C4D, 0x19A5, 0x089B,\n    0x0F30, 0x1D68, 0x28FE, 0x2F1A, 0x33BC, 0x36E0, 0x3881, 0x37A9,\n    0x34AC, 0x3177, 0x2FF7, 0x143B, 0x0E18, 0x0CF3, 0x0C86, 0x08B5,\n    0xF82B, 0xEBAB, 0xF4BE, 0x04CC, 0x0EB1, 0x0D1B, 0x0688, 0xFF88,\n    0xFCA5, 0x00B7, 0x08C8, 0x10AC, 0x143B, 0x0AE3, 0x0D50, 0x0FA8,\n    0x1256, 0x1AAD, 0x3800, 0x4E04, 0x3FA8, 0x2525, 0x1250, 0x0DEF,\n    0x0F1B, 0x1224, 0x135A, 0x1182, 0x0EA7, 0x0C09, 0x0AE3, 0x96C2,\n    0x98E2, 0xA1D2, 0xAB46, 0xA88E, 0x7D61, 0x57B6, 0x673D, 0x87D5,\n    0x9E62, 0xA19A, 0x9D8A, 0x971D, 0x933E, 0x9341, 0x9486, 0x9608,\n    0x96C2, 0x0000, 0x0003, 0x0005, 0x0006, 0x0000, 0xFFF1, 0xFFDC,\n    0xFFC5, 0xFFAF, 0xFFA0, 0xFF9A, 0xFFB1, 0xFFDF, 0x0000, 0x0008,\n    0x0007, 0x0002, 0x0000, 0x0000, 0x061C, 0x02C3, 0xFDC5, 0xFAB5,\n    0xFA3F, 0xFA82, 0xFB41, 0xFC3F, 0xFD40, 0xFE08, 0xFEBE, 0xFF7F,\n    0x0000, 0x0028, 0x0024, 0x000D, 0x0000, 0x0B7E, 0xF0A0, 0xEBDE,\n    0xEB7F, 0xEEFA, 0xF59B, 0xFE4C, 0x07F3, 0x1178, 0x19BE, 0x1FAC,\n    0x1FE3, 0x1B21, 0x167E, 0x1327, 0x0F8D, 0x0CAB, 0x0B7E, 0x0000,\n    0x0000, 0x0003, 0x0007, 0x0003, 0xFFF6, 0xFFE2, 0xFFCC, 0xFFB7,\n    0xFFA9, 0xFFA2, 0xFFB8, 0xFFE2, 0x0000, 0x0007, 0x0006, 0x0002,\n    0x0000, 0x0000, 0x04E3, 0x0188, 0xFCC0, 0xF9E4, 0xF98C, 0xF9EB,\n    0xFAC6, 0xFBDF, 0xFCF9, 0xFDD9, 0xFEA4, 0xFF75, 0x0000, 0x002C,\n    0x0027, 0x000E, 0x0000, 0xF35E, 0xF4B0, 0xF156, 0xED59, 0xED3F,\n    0xF207, 0xF8EB, 0x00C7, 0x0879, 0x0EDD, 0x12D2, 0x109E, 0x0935,\n    0x0270, 0xFD8F, 0xF8A9, 0xF4E2, 0xF35E, 0xB247, 0xB99C, 0xBC17,\n    0xBEB7, 0xC159, 0xC3DC, 0xC61E, 0xC7FB, 0xC953, 0xCA03, 0xC9E8,\n    0xC480, 0xBA63, 0xB317, 0xB111, 0xB0FF, 0xB1C5, 0xB247, 0x3FFF,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x0000,\n};\n\n// 0x0500FB64\nstatic const u16 ukiki_seg5_animindex_0500FB64[] = {\n    0x0001, 0x0000, 0x0012, 0x0001, 0x0012, 0x0013, 0x0012, 0x0025, 0x0012, 0x0037, 0x0012, 0x0049,\n    0x0001, 0x0000, 0x0001, 0x030C, 0x0001, 0x0000,\n    0x0012, 0x005B, 0x0012, 0x006D, 0x0012, 0x007F,\n    0x0001, 0x0000, 0x0001, 0x030B, 0x0001, 0x0000,\n    0x0012, 0x00D9, 0x0012, 0x00EB, 0x0012, 0x00FD,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x00C7,\n    0x0012, 0x0091, 0x0012, 0x00A3, 0x0012, 0x00B5,\n    0x0001, 0x0000, 0x0001, 0x030A, 0x0001, 0x0000,\n    0x0012, 0x0157, 0x0012, 0x0169, 0x0012, 0x017B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x0145,\n    0x0012, 0x010F, 0x0012, 0x0121, 0x0012, 0x0133,\n    0x0001, 0x0000, 0x0001, 0x0309, 0x0001, 0x0000,\n    0x0012, 0x01D5, 0x0012, 0x01E7, 0x0012, 0x01F9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x01C3,\n    0x0012, 0x018D, 0x0012, 0x019F, 0x0012, 0x01B1,\n    0x0001, 0x0000, 0x0001, 0x0308, 0x0001, 0x0000,\n    0x0012, 0x0253, 0x0012, 0x0265, 0x0012, 0x0277,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x0241,\n    0x0012, 0x020B, 0x0012, 0x021D, 0x0012, 0x022F,\n    0x0001, 0x0000, 0x0001, 0x0307, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x02F5,\n    0x0012, 0x02BF, 0x0012, 0x02D1, 0x0012, 0x02E3,\n    0x0012, 0x0289, 0x0012, 0x029B, 0x0012, 0x02AD,\n};\n\n// 0x0500FC84\nstatic const struct Animation ukiki_seg5_anim_0500FC84 = {\n    1,\n    0,\n    0,\n    0,\n    0x12,\n    ANIMINDEX_NUMPARTS(ukiki_seg5_animindex_0500FB64),\n    ukiki_seg5_animvalue_0500F548,\n    ukiki_seg5_animindex_0500FB64,\n    0,\n};\n"
  },
  {
    "path": "actors/ukiki/anims/anim_0501006C.inc.c",
    "content": "// 0x0500FC9C\nstatic const s16 ukiki_seg5_animvalue_0500FC9C[] = {\n    0x0000, 0x0065, 0x0063, 0x005C, 0x0057, 0x005A, 0x005F, 0x0065,\n    0x0067, 0x2070, 0x22AE, 0x23B6, 0x23D8, 0x22F6, 0x214C, 0x1FAF,\n    0x1EF6, 0x0000, 0x0007, 0x0003, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xFFEA, 0xFFF5, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x014C, 0x00D7, 0x0056, 0x0000, 0xFFE6, 0xFFE9, 0xFFF8,\n    0x0000, 0xFE57, 0xFF06, 0xFF99, 0x0000, 0x002A, 0x0026, 0x000E,\n    0x0000, 0x2B09, 0x3225, 0x395B, 0x3CBD, 0x39C4, 0x3309, 0x2C44,\n    0x292E, 0xB408, 0xF9C1, 0x09DD, 0x0981, 0x06E8, 0x03C4, 0x011D,\n    0x0000, 0xFD6E, 0x1343, 0x1140, 0x0D67, 0x095E, 0x04F9, 0x0172,\n    0x0000, 0x02E2, 0x042D, 0x1FAD, 0x26AC, 0x2AC4, 0x2EC0, 0x31C6,\n    0x32F8, 0xED68, 0xD9F5, 0xCC11, 0xCB58, 0xCEE1, 0xD72C, 0xE010,\n    0xE437, 0x1BF6, 0x0AB5, 0x07C2, 0x09A4, 0x0DC2, 0x16F2, 0x20C2,\n    0x2555, 0xEEBF, 0xF95B, 0xFBCF, 0xFBAC, 0xFADF, 0xF920, 0xF744,\n    0xF666, 0x7D67, 0x9495, 0x9A0D, 0x99EF, 0x987F, 0x9564, 0x9215,\n    0x908B, 0x4F17, 0x0B88, 0x0006, 0xFFF4, 0x016E, 0x0345, 0x04D6,\n    0x057F, 0x06F1, 0xF8DA, 0xF1BD, 0xF3AA, 0xF6CA, 0xFA5A, 0xFD46,\n    0xFE7C, 0xFE89, 0xF7AD, 0x20EA, 0x26C7, 0x27BB, 0x2804, 0x27F5,\n    0x27DE, 0xF367, 0xDB86, 0xC3D3, 0xC3B7, 0xC92B, 0xD113, 0xD92B,\n    0xDCE1, 0xD6BC, 0xE45A, 0xE681, 0xE725, 0xE71C, 0xE61B, 0xE4F5,\n    0xE468, 0x1206, 0x0FAE, 0x0F16, 0x0EA4, 0x0E14, 0x0CF7, 0x0BCB,\n    0x0B3F, 0x7694, 0x9459, 0x990A, 0x9A68, 0x9A4B, 0x9802, 0x9565,\n    0x9426, 0xEFA2, 0xF1E7, 0xF315, 0xF3D7, 0xF40C, 0xF410, 0xF3FE,\n    0xF3F2, 0x005C, 0x0239, 0x01AC, 0x013B, 0x01B8, 0x0281, 0x033D,\n    0x038F, 0x97A9, 0x98E0, 0x97D1, 0x97E5, 0x9C84, 0xA2D1, 0xA85E,\n    0xAAC2, 0x36BB, 0x3B35, 0x3D63, 0x3DCD, 0x3B08, 0x3550, 0x2FAB,\n    0x2D1D, 0xEBBE, 0xED73, 0xEFFC, 0xF108, 0xEF93, 0xECFC, 0xEA83,\n    0xE969, 0xF1E6, 0xF0A4, 0xEE4A, 0xECAE, 0xEC1A, 0xEBA4, 0xEB56,\n    0xEB3A, 0xA1F2, 0x9C5D, 0x95A0, 0x9196, 0x91AE, 0x93B9, 0x961D,\n    0x9744, 0x0F4B, 0x120F, 0x13F2, 0x1481, 0x106C, 0x0AA5, 0x057C,\n    0x0341, 0x007B, 0x0004, 0x024F, 0x047A, 0x03BC, 0x0224, 0x008E,\n    0xFFD7, 0xA20D, 0x9F12, 0x9AA4, 0x96D1, 0x98FF, 0x9D05, 0xA0E5,\n    0xA2A1, 0x2F1A, 0x33BC, 0x36E0, 0x3881, 0x37A9, 0x34AC, 0x3177,\n    0x2FF7, 0x0D1B, 0x0688, 0xFF88, 0xFCA5, 0x00B7, 0x08C8, 0x10AC,\n    0x143B, 0x0DEF, 0x0F1B, 0x1224, 0x135A, 0x1182, 0x0EA7, 0x0C09,\n    0x0AE3, 0xA19A, 0x9D8A, 0x971D, 0x933E, 0x9341, 0x9486, 0x9608,\n    0x96C2, 0xFF9A, 0xFFB1, 0xFFDF, 0x0000, 0x0008, 0x0007, 0x0002,\n    0x0000, 0xFE08, 0xFEBE, 0xFF7F, 0x0000, 0x0028, 0x0024, 0x000D,\n    0x0000, 0x1FAC, 0x1FE3, 0x1B21, 0x167E, 0x1327, 0x0F8D, 0x0CAB,\n    0x0B7E, 0xFFA2, 0xFFB8, 0xFFE2, 0x0000, 0x0007, 0x0006, 0x0002,\n    0x0000, 0xFDD9, 0xFEA4, 0xFF75, 0x0000, 0x002C, 0x0027, 0x000E,\n    0x0000, 0x12D2, 0x109E, 0x0935, 0x0270, 0xFD8F, 0xF8A9, 0xF4E2,\n    0xF35E, 0xC9E8, 0xC480, 0xBA63, 0xB317, 0xB111, 0xB0FF, 0xB1C5,\n    0xB247, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x0000,\n};\n\n// 0x0500FF4C\nstatic const u16 ukiki_seg5_animindex_0500FF4C[] = {\n    0x0001, 0x0000, 0x0008, 0x0001, 0x0001, 0x0000, 0x0008, 0x0009, 0x0008, 0x0011, 0x0008, 0x0019,\n    0x0001, 0x0000, 0x0001, 0x0156, 0x0001, 0x0000,\n    0x0008, 0x0021, 0x0008, 0x0029, 0x0008, 0x0031,\n    0x0001, 0x0000, 0x0001, 0x0155, 0x0001, 0x0000,\n    0x0008, 0x0059, 0x0008, 0x0061, 0x0008, 0x0069,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x0051,\n    0x0008, 0x0039, 0x0008, 0x0041, 0x0008, 0x0049,\n    0x0001, 0x0000, 0x0001, 0x0154, 0x0001, 0x0000,\n    0x0008, 0x0091, 0x0008, 0x0099, 0x0008, 0x00A1,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x0089,\n    0x0008, 0x0071, 0x0008, 0x0079, 0x0008, 0x0081,\n    0x0001, 0x0000, 0x0001, 0x0153, 0x0001, 0x0000,\n    0x0008, 0x00C9, 0x0008, 0x00D1, 0x0008, 0x00D9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x00C1,\n    0x0008, 0x00A9, 0x0008, 0x00B1, 0x0008, 0x00B9,\n    0x0001, 0x0000, 0x0001, 0x0152, 0x0001, 0x0000,\n    0x0008, 0x0101, 0x0008, 0x0109, 0x0008, 0x0111,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x00F9,\n    0x0008, 0x00E1, 0x0008, 0x00E9, 0x0008, 0x00F1,\n    0x0001, 0x0000, 0x0001, 0x0151, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x0149,\n    0x0008, 0x0131, 0x0008, 0x0139, 0x0008, 0x0141,\n    0x0008, 0x0119, 0x0008, 0x0121, 0x0008, 0x0129,\n};\n\n// 0x0501006C\nstatic const struct Animation ukiki_seg5_anim_0501006C = {\n    0,\n    0,\n    0,\n    0,\n    0x08,\n    ANIMINDEX_NUMPARTS(ukiki_seg5_animindex_0500FF4C),\n    ukiki_seg5_animvalue_0500FC9C,\n    ukiki_seg5_animindex_0500FF4C,\n    0,\n};\n"
  },
  {
    "path": "actors/ukiki/anims/anim_050103F4.inc.c",
    "content": "// 0x05010084\nstatic const s16 ukiki_seg5_animvalue_05010084[] = {\n    0x0000, 0x0067, 0x1EF6, 0x1B81, 0x13C5, 0x0BBA, 0x0757, 0x0804,\n    0x0B84, 0x0000, 0xFFE8, 0xFFB1, 0xFF7B, 0xFF62, 0xFF6C, 0xFF83,\n    0x0000, 0x0029, 0x008D, 0x0105, 0x0169, 0x0193, 0x0171, 0x0000,\n    0x0000, 0xFFF7, 0xFFEE, 0x0003, 0x0049, 0x00AB, 0x0000, 0x0000,\n    0xFDA7, 0xFAF2, 0xF97C, 0xF99B, 0xFA60, 0x292E, 0x302C, 0x36BD,\n    0x3CF8, 0x3F2E, 0x3C28, 0x3667, 0x0000, 0xE499, 0xAD70, 0x8318,\n    0x76FF, 0x77BB, 0x7987, 0x0000, 0xFB78, 0xF259, 0xEB5F, 0xE970,\n    0xE9A6, 0xEA03, 0x32F8, 0x2331, 0x0475, 0xEFB1, 0xF155, 0xFCEF,\n    0x060C, 0xE437, 0xE1CC, 0xDE12, 0xDE53, 0xE6C1, 0xF32A, 0xFC40,\n    0x2555, 0x2AB4, 0x34E7, 0x3B0B, 0x3844, 0x316F, 0x2C3E, 0xF666,\n    0xF0AC, 0xE57B, 0xDDD0, 0xDE1A, 0xE1EA, 0xE4F0, 0x908B, 0x8399,\n    0x6A43, 0x58D1, 0x5931, 0x6173, 0x6804, 0x057F, 0x1A01, 0x443E,\n    0x674B, 0x7859, 0x823A, 0x886A, 0xFE7C, 0x00EE, 0x061B, 0x0ABE,\n    0x0DDA, 0x106B, 0x122A, 0x27DE, 0x1A9D, 0x0115, 0xF09F, 0xF457,\n    0x011F, 0x0AFB, 0xDCE1, 0xDE48, 0xE224, 0xE7F4, 0xF142, 0xFC84,\n    0x0496, 0xE468, 0xDCCF, 0xCDE6, 0xC37F, 0xC354, 0xC7AA, 0xCB27,\n    0x0B3F, 0x0D62, 0x11A2, 0x14BE, 0x1539, 0x148F, 0x13FC, 0x9426,\n    0x839C, 0x6324, 0x4C81, 0x4C2B, 0x55A7, 0x5D46, 0xF3F2, 0xFD44,\n    0xFF44, 0xFFDC, 0x0000, 0xFF9E, 0xFE67, 0x038F, 0x0382, 0x0253,\n    0x00F5, 0x0000, 0x0019, 0x00B6, 0xAAC2, 0xCAF2, 0xCC5C, 0xC800,\n    0xC3A3, 0xC174, 0xBEBD, 0x2D1D, 0x27CD, 0x2C2D, 0x31E9, 0x3060,\n    0x15FC, 0xFF88, 0xE969, 0xEE43, 0xEC33, 0xE918, 0xE9FE, 0x009A,\n    0xD858, 0xEB3A, 0xEF3C, 0xF2DC, 0xF609, 0xF32C, 0xD03E, 0xCAF9,\n    0x9744, 0x9DCC, 0xA673, 0xAF10, 0xB0A1, 0x8CA4, 0x9E71, 0x0341,\n    0x05FB, 0x066E, 0x066D, 0x05FE, 0x03C1, 0x02C9, 0xFFD7, 0xF35B,\n    0xF264, 0xF397, 0xF4D5, 0xF567, 0xF61E, 0xA2A1, 0xD613, 0xDC4C,\n    0xD9DE, 0xD4AA, 0xCA1F, 0xBEEB, 0x2FF7, 0x1C19, 0x20C2, 0x29A1,\n    0x2C4D, 0x19A5, 0x089B, 0x143B, 0x0E18, 0x0CF3, 0x0C86, 0x08B5,\n    0xF82B, 0xEBAB, 0x0AE3, 0x0D50, 0x0FA8, 0x1256, 0x1AAD, 0x3800,\n    0x4E04, 0x96C2, 0x98E2, 0xA1D2, 0xAB46, 0xA88E, 0x7D61, 0x57B6,\n    0x0000, 0x0003, 0x0005, 0x0006, 0x0000, 0xFFF1, 0xFFDC, 0x0000,\n    0x061C, 0x02C3, 0xFDC5, 0xFAB5, 0xFA3F, 0xFA82, 0x0B7E, 0xF0A0,\n    0xEBDE, 0xEB7F, 0xEEFA, 0xF59B, 0xFE4C, 0x0000, 0x0000, 0x0003,\n    0x0007, 0x0003, 0xFFF6, 0xFFE2, 0x0000, 0x04E3, 0x0188, 0xFCC0,\n    0xF9E4, 0xF98C, 0xF9EB, 0xF35E, 0xF4B0, 0xF156, 0xED59, 0xED3F,\n    0xF207, 0xF8EB, 0xB247, 0xB99C, 0xBC17, 0xBEB7, 0xC159, 0xC3DC,\n    0xC61E, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x0000,\n};\n\n// 0x050102D4\nstatic const u16 ukiki_seg5_animindex_050102D4[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0007, 0x0002, 0x0007, 0x0009, 0x0007, 0x0010,\n    0x0001, 0x0000, 0x0001, 0x0126, 0x0001, 0x0000,\n    0x0007, 0x0017, 0x0007, 0x001E, 0x0007, 0x0025,\n    0x0001, 0x0000, 0x0001, 0x0125, 0x0001, 0x0000,\n    0x0007, 0x0048, 0x0007, 0x004F, 0x0007, 0x0056,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0007, 0x0041,\n    0x0007, 0x002C, 0x0007, 0x0033, 0x0007, 0x003A,\n    0x0001, 0x0000, 0x0001, 0x0124, 0x0001, 0x0000,\n    0x0007, 0x0079, 0x0007, 0x0080, 0x0007, 0x0087,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0007, 0x0072,\n    0x0007, 0x005D, 0x0007, 0x0064, 0x0007, 0x006B,\n    0x0001, 0x0000, 0x0001, 0x0123, 0x0001, 0x0000,\n    0x0007, 0x00AA, 0x0007, 0x00B1, 0x0007, 0x00B8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0007, 0x00A3,\n    0x0007, 0x008E, 0x0007, 0x0095, 0x0007, 0x009C,\n    0x0001, 0x0000, 0x0001, 0x0122, 0x0001, 0x0000,\n    0x0007, 0x00DB, 0x0007, 0x00E2, 0x0007, 0x00E9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0007, 0x00D4,\n    0x0007, 0x00BF, 0x0007, 0x00C6, 0x0007, 0x00CD,\n    0x0001, 0x0000, 0x0001, 0x0121, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0007, 0x011A,\n    0x0007, 0x0105, 0x0007, 0x010C, 0x0007, 0x0113,\n    0x0007, 0x00F0, 0x0007, 0x00F7, 0x0007, 0x00FE,\n};\n\n// 0x050103F4\nstatic const struct Animation ukiki_seg5_anim_050103F4 = {\n    1,\n    0,\n    0,\n    0,\n    0x07,\n    ANIMINDEX_NUMPARTS(ukiki_seg5_animindex_050102D4),\n    ukiki_seg5_animvalue_05010084,\n    ukiki_seg5_animindex_050102D4,\n    0,\n};\n"
  },
  {
    "path": "actors/ukiki/anims/anim_05012ABC.inc.c",
    "content": "// 0x0501040C\nstatic const s16 ukiki_seg5_animvalue_0501040C[] = {\n    0x0000, 0x0067, 0x0067, 0x0068, 0x0068, 0x0069, 0x006A, 0x006B,\n    0x006C, 0x006C, 0x006C, 0x006C, 0x006C, 0x006C, 0x006C, 0x006C,\n    0x006C, 0x006C, 0x006C, 0x006C, 0x006C, 0x006C, 0x006C, 0x006C,\n    0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D,\n    0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D,\n    0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D,\n    0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D,\n    0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D, 0x006D,\n    0x006D, 0x006C, 0x006C, 0x006C, 0x006C, 0x006C, 0x006C, 0x006C,\n    0x006C, 0x006C, 0x006C, 0x006C, 0x006C, 0x006C, 0x006C, 0x006C,\n    0x006C, 0x006C, 0x006C, 0x006C, 0x006B, 0x006B, 0x006B, 0x006B,\n    0x006A, 0x006A, 0x0069, 0x0069, 0x0069, 0x0068, 0x0068, 0x0068,\n    0x0068, 0x0067, 0x0067, 0x0067, 0x0067, 0x0000, 0x0000, 0xFFFF,\n    0xFFFE, 0xFFFC, 0xFFFA, 0xFFF9, 0xFFF7, 0xFFF7, 0xFFF7, 0xFFF7,\n    0xFFF7, 0xFFF6, 0xFFF6, 0xFFF6, 0xFFF6, 0xFFF6, 0xFFF6, 0xFFF6,\n    0xFFF6, 0xFFF6, 0xFFF6, 0xFFF6, 0xFFF6, 0xFFF5, 0xFFF5, 0xFFF5,\n    0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5,\n    0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5,\n    0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5,\n    0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5,\n    0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF6, 0xFFF6, 0xFFF6,\n    0xFFF6, 0xFFF6, 0xFFF6, 0xFFF6, 0xFFF6, 0xFFF6, 0xFFF6, 0xFFF6,\n    0xFFF6, 0xFFF6, 0xFFF7, 0xFFF7, 0xFFF7, 0xFFF7, 0xFFF7, 0xFFF7,\n    0xFFF8, 0xFFF8, 0xFFF9, 0xFFF9, 0xFFFA, 0xFFFB, 0xFFFC, 0xFFFC,\n    0xFFFD, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x1EF6, 0x1E5F, 0x1CCD, 0x1A94, 0x1803, 0x156D, 0x1322,\n    0x1174, 0x10B4, 0x10B4, 0x10B4, 0x10B4, 0x10B5, 0x10B5, 0x10B5,\n    0x10B5, 0x10B5, 0x10B5, 0x10B6, 0x10B6, 0x10B6, 0x10B6, 0x10B6,\n    0x10B7, 0x10B7, 0x10B7, 0x10B7, 0x10B7, 0x10B8, 0x10B8, 0x10B8,\n    0x10B8, 0x10B8, 0x10B8, 0x10B9, 0x10B9, 0x10B9, 0x10B9, 0x10B9,\n    0x10BA, 0x10BA, 0x10BA, 0x10BA, 0x10BA, 0x10BB, 0x10BB, 0x10BB,\n    0x10BB, 0x10BB, 0x10BB, 0x10BC, 0x10BC, 0x10BC, 0x10BC, 0x10BC,\n    0x10BD, 0x10BD, 0x10BD, 0x10BD, 0x10BD, 0x10BD, 0x10BE, 0x10BE,\n    0x10BE, 0x10BE, 0x10BE, 0x10BF, 0x10BF, 0x10BF, 0x10BF, 0x10BF,\n    0x10C0, 0x10C0, 0x10C0, 0x10C0, 0x10C0, 0x10C0, 0x10C1, 0x10C1,\n    0x10C1, 0x10C1, 0x1180, 0x1251, 0x1333, 0x1420, 0x1517, 0x1613,\n    0x1712, 0x1810, 0x1909, 0x19FA, 0x1AE1, 0x1BB9, 0x1C7F, 0x1D30,\n    0x1DC9, 0x1E46, 0x1EA5, 0x1EE0, 0x1EF6, 0x0000, 0x02AB, 0x0921,\n    0x1110, 0x1829, 0x1C18, 0x1D89, 0x1E99, 0x1F25, 0x1F0B, 0x1E27,\n    0x1C58, 0x1979, 0x1569, 0x0FDD, 0x08DF, 0x00C8, 0xF7F5, 0xEEBE,\n    0xE57E, 0xDC8F, 0xD44C, 0xCD10, 0xC735, 0xC315, 0xC103, 0xC0DA,\n    0xC23D, 0xC4D1, 0xC83C, 0xCC22, 0xD028, 0xD3F3, 0xD728, 0xD9FE,\n    0xDCED, 0xDFF9, 0xE325, 0xE675, 0xE9ED, 0xED8F, 0xF160, 0xF563,\n    0xF9BC, 0xFE78, 0x037B, 0x08AB, 0x0DEB, 0x1321, 0x182E, 0x1CF9,\n    0x2166, 0x2558, 0x28B3, 0x2B91, 0x2E1A, 0x3048, 0x3217, 0x3383,\n    0x3486, 0x351C, 0x3541, 0x34F0, 0x3424, 0x32FD, 0x31A0, 0x3011,\n    0x2E56, 0x2C74, 0x2A6E, 0x2849, 0x260A, 0x23B5, 0x2150, 0x1EDF,\n    0x1C66, 0x19E9, 0x176F, 0x14FA, 0x1291, 0x1037, 0x0DF1, 0x0BC3,\n    0x09B3, 0x07A9, 0x0595, 0x0389, 0x0198, 0xFFD6, 0xFE51, 0xFD1D,\n    0xFC4C, 0xFBFF, 0xFC31, 0xFCC0, 0xFD87, 0xFE61, 0xFF2C, 0xFFC2,\n    0x0000, 0x0000, 0x002C, 0x0090, 0x00F8, 0x0132, 0x0109, 0x0076,\n    0xFFA1, 0xFEA2, 0xFD8F, 0xFC82, 0xFB90, 0xFAD3, 0xFA62, 0xFA25,\n    0xF9F6, 0xF9D8, 0xF9CB, 0xF9D3, 0xF9F0, 0xFA25, 0xFA74, 0xFADE,\n    0xFB65, 0xFC0B, 0xFCFD, 0xFE4F, 0xFFE6, 0x01A2, 0x0367, 0x0517,\n    0x0695, 0x07C2, 0x0882, 0x08D1, 0x08CE, 0x0887, 0x080E, 0x0773,\n    0x06C5, 0x0615, 0x0574, 0x04F0, 0x047B, 0x03F8, 0x036E, 0x02E1,\n    0x0253, 0x01CA, 0x014A, 0x00D7, 0x0075, 0x0028, 0xFFF6, 0xFFE0,\n    0xFFE6, 0x0002, 0x0032, 0x0071, 0x00BA, 0x0109, 0x0159, 0x01A7,\n    0x01ED, 0x0232, 0x027C, 0x02CC, 0x031F, 0x0375, 0x03CE, 0x0428,\n    0x0482, 0x04DB, 0x0534, 0x0589, 0x05DC, 0x062A, 0x0673, 0x06B7,\n    0x06F3, 0x0728, 0x0753, 0x0776, 0x078D, 0x0780, 0x073D, 0x06D0,\n    0x0645, 0x05A9, 0x0508, 0x046E, 0x03E9, 0x0363, 0x02C7, 0x0223,\n    0x0180, 0x00EC, 0x0073, 0x0020, 0x0000, 0x292E, 0x2A76, 0x2D80,\n    0x3115, 0x33FF, 0x3505, 0x3427, 0x3262, 0x2FFF, 0x2D47, 0x2A85,\n    0x2801, 0x2606, 0x24DD, 0x245F, 0x242F, 0x2441, 0x2488, 0x24FA,\n    0x258C, 0x2630, 0x26DC, 0x2785, 0x281E, 0x289C, 0x2922, 0x29CF,\n    0x2A92, 0x2B5B, 0x2C18, 0x2CB9, 0x2D2D, 0x2D62, 0x2D49, 0x2CA7,\n    0x2B70, 0x29D7, 0x2812, 0x2653, 0x24CF, 0x23B8, 0x2344, 0x23A5,\n    0x24E1, 0x26C5, 0x292C, 0x2BF4, 0x2EF9, 0x3218, 0x352E, 0x3818,\n    0x3AB1, 0x3CD8, 0x3E68, 0x3F68, 0x4000, 0x403E, 0x4032, 0x3FEA,\n    0x3F74, 0x3EE0, 0x3E3C, 0x3D97, 0x3D00, 0x3C6D, 0x3BCE, 0x3B23,\n    0x3A6E, 0x39B0, 0x38EB, 0x3820, 0x3751, 0x367E, 0x35AA, 0x34D5,\n    0x3402, 0x3331, 0x3264, 0x319D, 0x30DC, 0x3024, 0x2F75, 0x2ED1,\n    0x2E3A, 0x2DCA, 0x2D8F, 0x2D7A, 0x2D7C, 0x2D87, 0x2D8A, 0x2D78,\n    0x2D40, 0x2CD6, 0x2C45, 0x2B9B, 0x2AEB, 0x2A44, 0x29B7, 0x2955,\n    0x292E, 0x0000, 0xFEE8, 0xFBDE, 0xF73C, 0xF160, 0xEAA6, 0xE36A,\n    0xDC07, 0xD4DB, 0xCE41, 0xC896, 0xC436, 0xC17C, 0xBFEE, 0xBECA,\n    0xBE08, 0xBD9D, 0xBD7E, 0xBDA3, 0xBDFF, 0xBE8A, 0xBF3A, 0xC003,\n    0xC0DC, 0xC1BB, 0xC296, 0xC363, 0xC416, 0xC4A7, 0xC50B, 0xC538,\n    0xC524, 0xC4C4, 0xC40F, 0xC2FB, 0xC17C, 0xBE79, 0xB93E, 0xB25F,\n    0xAA6E, 0xA1FE, 0x99A3, 0x91EE, 0x8B73, 0x8674, 0x82C5, 0x8050,\n    0x7EFC, 0x8070, 0x83EB, 0x85E0, 0x84CD, 0x826F, 0x8012, 0x7EFC,\n    0x8012, 0x826F, 0x84CD, 0x85E0, 0x8417, 0x80C8, 0x7EFC, 0x8012,\n    0x826F, 0x84CD, 0x85E0, 0x8417, 0x80C8, 0x7EFC, 0x80C8, 0x8417,\n    0x85E0, 0x84CD, 0x826F, 0x8012, 0x7EFC, 0x826F, 0x85E0, 0x8663,\n    0x8823, 0x8B73, 0x8F94, 0x9399, 0x978F, 0x9B82, 0x9F7D, 0xA38D,\n    0xA7BD, 0xAC1A, 0xB0B0, 0xB58A, 0xBAB5, 0xC03D, 0xC62E, 0xCEB0,\n    0xDA7B, 0xE76E, 0xF36B, 0xFC50, 0xFFFE, 0x0000, 0xFFD7, 0xFF63,\n    0xFEB2, 0xFDD2, 0xFCD1, 0xFBBD, 0xFAA3, 0xF991, 0xF895, 0xF7BC,\n    0xF715, 0xF6AD, 0xF664, 0xF613, 0xF5BC, 0xF562, 0xF505, 0xF4A9,\n    0xF44F, 0xF3FA, 0xF3AB, 0xF365, 0xF32A, 0xF2FC, 0xF2DD, 0xF2CF,\n    0xF2D4, 0xF2EE, 0xF320, 0xF36C, 0xF3D3, 0xF457, 0xF4FC, 0xF5C2,\n    0xF6AD, 0xF872, 0xFB8B, 0xFF9B, 0x0446, 0x0931, 0x0E00, 0x1257,\n    0x15DB, 0x1807, 0x18FA, 0x194B, 0x198E, 0x1999, 0x1939, 0x18FA,\n    0x1911, 0x1944, 0x1977, 0x198E, 0x1977, 0x1944, 0x1911, 0x18FA,\n    0x1920, 0x1968, 0x198E, 0x1977, 0x1944, 0x1911, 0x18FA, 0x1920,\n    0x1968, 0x198E, 0x1968, 0x1920, 0x18FA, 0x1911, 0x1944, 0x1977,\n    0x198E, 0x1944, 0x18FA, 0x185F, 0x1713, 0x15DB, 0x14F7, 0x1422,\n    0x1358, 0x1295, 0x11D7, 0x1119, 0x1059, 0x0F92, 0x0EC1, 0x0DE4,\n    0x0CF5, 0x0BF2, 0x0AD7, 0x093F, 0x0709, 0x049B, 0x025C, 0x00B1,\n    0x0000, 0x32F8, 0x3172, 0x2D33, 0x26BE, 0x1E91, 0x152F, 0x0B17,\n    0x00CA, 0xF6CA, 0xED95, 0xE5AD, 0xDF92, 0xDBC5, 0xD97D, 0xD797,\n    0xD60D, 0xD4D8, 0xD3F2, 0xD354, 0xD2F9, 0xD2D9, 0xD2EE, 0xD331,\n    0xD39D, 0xD42B, 0xD4D4, 0xD592, 0xD65F, 0xD733, 0xD809, 0xD8DA,\n    0xD9A0, 0xDA54, 0xDAF0, 0xDB6D, 0xDBC5, 0xDC59, 0xDD6D, 0xDED3,\n    0xE05B, 0xE1D4, 0xE310, 0xE3DF, 0xE410, 0xE24E, 0xDEB1, 0xDB2D,\n    0xD9B8, 0xDCEC, 0xE2A2, 0xE5AF, 0xE3D1, 0xDFB4, 0xDB97, 0xD9B8,\n    0xDB97, 0xDFB4, 0xE3D1, 0xE5AF, 0xE295, 0xDCD2, 0xD9B8, 0xDB97,\n    0xDFB4, 0xE3D1, 0xE5AF, 0xE295, 0xDCD2, 0xD9B8, 0xDCD2, 0xE295,\n    0xE5AF, 0xE3D1, 0xDFB4, 0xDB97, 0xD9B8, 0xDFB4, 0xE5AF, 0xE4B6,\n    0xE360, 0xE410, 0xE68F, 0xE914, 0xEBA3, 0xEE43, 0xF0F7, 0xF3C4,\n    0xF6B1, 0xF9C1, 0xFCF9, 0x005E, 0x03F7, 0x07C6, 0x0BD2, 0x1195,\n    0x1991, 0x2256, 0x2A73, 0x3079, 0x32F7, 0xE437, 0xE3E5, 0xE302,\n    0xE1A6, 0xDFEA, 0xDDE7, 0xDBB6, 0xD970, 0xD72E, 0xD508, 0xD319,\n    0xD179, 0xD040, 0xCF4C, 0xCE68, 0xCD93, 0xCCCC, 0xCC11, 0xCB61,\n    0xCABB, 0xCA1D, 0xC987, 0xC8F7, 0xC86C, 0xC7E4, 0xC75F, 0xC6DA,\n    0xC656, 0xC5D0, 0xC547, 0xC4BB, 0xC429, 0xC391, 0xC2F1, 0xC248,\n    0xC195, 0xC082, 0xBEFA, 0xBD60, 0xBC14, 0xBB79, 0xBB59, 0xBB3F,\n    0xBB2B, 0xBB1C, 0xBB12, 0xBB0C, 0xBB0B, 0xBB0D, 0xBB13, 0xBB1D,\n    0xBB29, 0xBB37, 0xBB48, 0xBB5B, 0xBB6F, 0xBB84, 0xBB9A, 0xBBB1,\n    0xBBC8, 0xBBDF, 0xBBF5, 0xBC0A, 0xBC1E, 0xBC31, 0xBC42, 0xBC50,\n    0xBC5C, 0xBC65, 0xBC6B, 0xBC6E, 0xBC6C, 0xBC66, 0xBC5C, 0xBC4D,\n    0xBC39, 0xBC1F, 0xBBFF, 0xBBD9, 0xBBAC, 0xBB79, 0xBAF2, 0xB9E3,\n    0xB86C, 0xB6AF, 0xB4CE, 0xB2E9, 0xB122, 0xAF9A, 0xAE73, 0xADCE,\n    0xADCD, 0xAE90, 0xB039, 0xB584, 0xBF71, 0xCB8A, 0xD758, 0xE063,\n    0xE434, 0x2555, 0x243F, 0x2181, 0x1DE1, 0x1A25, 0x1713, 0x1571,\n    0x1605, 0x1995, 0x25F2, 0x3B67, 0x5270, 0x6388, 0x6616, 0x62D5,\n    0x62F1, 0x632E, 0x636C, 0x6388, 0x636C, 0x632E, 0x62F1, 0x62D5,\n    0x6303, 0x6359, 0x6388, 0x648D, 0x668F, 0x67FD, 0x6745, 0x62D5,\n    0x586C, 0x491E, 0x3853, 0x2974, 0x1FEA, 0x1CA9, 0x1D3C, 0x1FED,\n    0x2306, 0x24D2, 0x2506, 0x24CB, 0x249C, 0x24A5, 0x24B7, 0x24CA,\n    0x24D2, 0x24C4, 0x24AA, 0x249C, 0x24A5, 0x24B7, 0x24CA, 0x24D2,\n    0x24CA, 0x24B7, 0x24A5, 0x249C, 0x24AA, 0x24C4, 0x24D2, 0x24CA,\n    0x24B7, 0x24A5, 0x249C, 0x24AA, 0x24C4, 0x24D2, 0x24C4, 0x24AA,\n    0x249C, 0x24A5, 0x24B7, 0x24CA, 0x24D2, 0x257D, 0x26D2, 0x27D1,\n    0x277C, 0x24D2, 0x2002, 0x1A13, 0x1347, 0x0BE2, 0x0427, 0xFC5B,\n    0xF4BF, 0xED97, 0xE726, 0xE1B0, 0xDD79, 0xDAC2, 0xD9D0, 0xDF57,\n    0xED25, 0xFF22, 0x1136, 0x1F4E, 0x2551, 0xF666, 0xF657, 0xF63A,\n    0xF624, 0xF62B, 0xF663, 0xF6E3, 0xF7C0, 0xF911, 0xFC07, 0x00B5,\n    0x057B, 0x08B9, 0x077C, 0x0547, 0x05D1, 0x0700, 0x082F, 0x08B9,\n    0x082F, 0x0700, 0x05D1, 0x0547, 0x062C, 0x07D4, 0x08B9, 0x0928,\n    0x09E4, 0x0A10, 0x08D0, 0x0547, 0xFD84, 0xF21B, 0xE602, 0xDC2C,\n    0xD78C, 0xD9D4, 0xE104, 0xEA84, 0xF3BE, 0xFA1B, 0xFB7F, 0xF9D3,\n    0xF882, 0xF8C2, 0xF94E, 0xF9DB, 0xFA1B, 0xF9B1, 0xF8EC, 0xF882,\n    0xF8C2, 0xF94E, 0xF9DB, 0xFA1B, 0xF9DB, 0xF94E, 0xF8C2, 0xF882,\n    0xF8EC, 0xF9B1, 0xFA1B, 0xF9DB, 0xF94E, 0xF8C2, 0xF882, 0xF8EC,\n    0xF9B1, 0xFA1B, 0xF9B1, 0xF8EC, 0xF882, 0xF8C2, 0xF94E, 0xF9DB,\n    0xFA1B, 0xFA78, 0xFB33, 0xFBC0, 0xFB91, 0xFA1B, 0xF77A, 0xF442,\n    0xF096, 0xEC98, 0xE86C, 0xE435, 0xE015, 0xDC2F, 0xD8A8, 0xD5A1,\n    0xD33E, 0xD1A1, 0xD0EF, 0xD387, 0xDA55, 0xE349, 0xEC52, 0xF360,\n    0xF664, 0x908B, 0x91F8, 0x95BA, 0x9B05, 0xA111, 0xA714, 0xAC43,\n    0xAFD5, 0xB100, 0xAC6A, 0xA211, 0x9636, 0x8D16, 0x8975, 0x8900,\n    0x89A4, 0x8B0B, 0x8C73, 0x8D16, 0x8C73, 0x8B0B, 0x89A4, 0x8900,\n    0x8A0F, 0x8C07, 0x8D16, 0x8D75, 0x8E0A, 0x8E07, 0x8C9D, 0x8900,\n    0x82E0, 0x7AC8, 0x713B, 0x66B3, 0x5BAF, 0x4E43, 0x3DC1, 0x2C7D,\n    0x1CCC, 0x1104, 0x0D53, 0x0FF4, 0x124C, 0x1219, 0x11A8, 0x1137,\n    0x1104, 0x1159, 0x11F7, 0x124C, 0x1219, 0x11A8, 0x1137, 0x1104,\n    0x1137, 0x11A8, 0x1219, 0x124C, 0x11F7, 0x1159, 0x1104, 0x1137,\n    0x11A8, 0x1219, 0x124C, 0x11F7, 0x1159, 0x1104, 0x1159, 0x11F7,\n    0x124C, 0x1219, 0x11A8, 0x1137, 0x1104, 0x0FED, 0x0DBF, 0x0C1D,\n    0x0CA8, 0x1104, 0x1868, 0x20D5, 0x2A1A, 0x3408, 0x3E6D, 0x4919,\n    0x53DC, 0x5E86, 0x68E6, 0x72CB, 0x7C05, 0x8467, 0x8BBB, 0x90C7,\n    0x9300, 0x933F, 0x925B, 0x912C, 0x908B, 0x057F, 0x056E, 0x053F,\n    0x04FE, 0x04B2, 0x0467, 0x0425, 0x03F7, 0x03E5, 0x03FA, 0x043F,\n    0x04BE, 0x057F, 0x0923, 0x0F3E, 0x134E, 0x14D3, 0x1654, 0x17D1,\n    0x1949, 0x1ABD, 0x1C2D, 0x1D99, 0x1F01, 0x2066, 0x21C7, 0x2325,\n    0x247F, 0x25D6, 0x272A, 0x287C, 0x29CA, 0x2B16, 0x2C5F, 0x2DA5,\n    0x2EEA, 0x302C, 0x316C, 0x32AA, 0x33E7, 0x3522, 0x365B, 0x3793,\n    0x38C9, 0x39FE, 0x3B33, 0x3C66, 0x3D98, 0x3ECA, 0x3FFB, 0x412C,\n    0x425D, 0x438D, 0x4469, 0x44BF, 0x44C0, 0x449F, 0x448F, 0x44A8,\n    0x44DB, 0x4526, 0x4584, 0x45F0, 0x4667, 0x46E4, 0x4763, 0x47DF,\n    0x4856, 0x48C1, 0x491E, 0x4968, 0x499A, 0x49B1, 0x49A9, 0x497C,\n    0x4927, 0x48A5, 0x47F3, 0x470C, 0x45EC, 0x448F, 0x42B8, 0x403C,\n    0x3D30, 0x39AB, 0x35C2, 0x318A, 0x2D1A, 0x2887, 0x23E7, 0x1F4F,\n    0x1AD6, 0x1691, 0x1296, 0x0EFA, 0x0BD3, 0x0938, 0x073D, 0x05F8,\n    0x0580, 0xFE7C, 0xFE74, 0xFE5E, 0xFE3E, 0xFE1A, 0xFDF6, 0xFDD7,\n    0xFDC1, 0xFDB8, 0xFDC2, 0xFDE3, 0xFE20, 0xFE7C, 0x0064, 0x037A,\n    0x0514, 0x050B, 0x04FC, 0x04E9, 0x04D1, 0x04B5, 0x0495, 0x0471,\n    0x0449, 0x041E, 0x03EF, 0x03BE, 0x0389, 0x0353, 0x0319, 0x02DE,\n    0x02A1, 0x0262, 0x0221, 0x01E0, 0x019D, 0x0159, 0x0115, 0x00D1,\n    0x008C, 0x0047, 0x0003, 0xFFC0, 0xFF7E, 0xFF3B, 0xFEFB, 0xFEBB,\n    0xFE7D, 0xFE41, 0xFE07, 0xFDD0, 0xFD9B, 0xFD68, 0xFD43, 0xFD30,\n    0xFD29, 0xFD29, 0xFD29, 0xFD27, 0xFD24, 0xFD21, 0xFD1E, 0xFD1B,\n    0xFD18, 0xFD15, 0xFD13, 0xFD10, 0xFD0E, 0xFD0C, 0xFD0B, 0xFD0A,\n    0xFD09, 0xFD0A, 0xFD0B, 0xFD0C, 0xFD0F, 0xFD12, 0xFD16, 0xFD1B,\n    0xFD22, 0xFD29, 0xFD33, 0xFD40, 0xFD51, 0xFD64, 0xFD79, 0xFD8F,\n    0xFDA7, 0xFDC0, 0xFDD9, 0xFDF1, 0xFE09, 0xFE20, 0xFE36, 0xFE49,\n    0xFE5A, 0xFE68, 0xFE73, 0xFE7A, 0xFE7C, 0x27DE, 0x2825, 0x28E0,\n    0x29E8, 0x2B17, 0x2C46, 0x2D4F, 0x2E0A, 0x2E51, 0x2DFD, 0x2CE8,\n    0x2AEA, 0x27DE, 0x181B, 0xFE6D, 0xF052, 0xEF3F, 0xEE52, 0xED88,\n    0xECE0, 0xEC58, 0xEBEF, 0xEBA3, 0xEB73, 0xEB5D, 0xEB60, 0xEB79,\n    0xEBA8, 0xEBEA, 0xEC3F, 0xECA5, 0xED19, 0xED9B, 0xEE29, 0xEEC1,\n    0xEF62, 0xF00A, 0xF0B8, 0xF16A, 0xF21F, 0xF2D4, 0xF389, 0xF43C,\n    0xF4EA, 0xF594, 0xF637, 0xF6D1, 0xF761, 0xF7E5, 0xF85C, 0xF8C5,\n    0xF91D, 0xF963, 0xF99D, 0xF9D1, 0xF9FA, 0xFA18, 0xFA27, 0xFA22,\n    0xFA07, 0xF9D9, 0xF99C, 0xF952, 0xF8FF, 0xF8A5, 0xF84A, 0xF7EE,\n    0xF796, 0xF746, 0xF6FF, 0xF6C6, 0xF69D, 0xF688, 0xF689, 0xF6A5,\n    0xF6DF, 0xF739, 0xF7B7, 0xF85C, 0xF92B, 0xFA27, 0xFB7D, 0xFD4A,\n    0xFF7F, 0x020C, 0x04E2, 0x07F0, 0x0B28, 0x0E79, 0x11D3, 0x1527,\n    0x1866, 0x1B7E, 0x1E61, 0x20FF, 0x2348, 0x252C, 0x269B, 0x2786,\n    0x27DE, 0xDCE1, 0xDD11, 0xDD8D, 0xDE3E, 0xDF08, 0xDFD2, 0xE083,\n    0xE100, 0xE12F, 0xE0F7, 0xE03E, 0xDEEA, 0xDCE1, 0xD250, 0xC120,\n    0xB7CE, 0xB74E, 0xB6E8, 0xB69A, 0xB664, 0xB644, 0xB639, 0xB642,\n    0xB65E, 0xB68B, 0xB6CA, 0xB718, 0xB775, 0xB7E0, 0xB857, 0xB8D9,\n    0xB965, 0xB9FB, 0xBA98, 0xBB3D, 0xBBE7, 0xBC96, 0xBD49, 0xBDFE,\n    0xBEB5, 0xBF6C, 0xC023, 0xC0D7, 0xC189, 0xC237, 0xC2DF, 0xC382,\n    0xC41D, 0xC4B0, 0xC539, 0xC5B8, 0xC62B, 0xC692, 0xC6E1, 0xC714,\n    0xC732, 0xC741, 0xC749, 0xC74A, 0xC740, 0xC72C, 0xC710, 0xC6EE,\n    0xC6C8, 0xC69E, 0xC673, 0xC647, 0xC61E, 0xC5F7, 0xC5D5, 0xC5B8,\n    0xC5A4, 0xC599, 0xC599, 0xC5A5, 0xC5BF, 0xC5E9, 0xC623, 0xC671,\n    0xC6D2, 0xC749, 0xC7EB, 0xC8C5, 0xC9CF, 0xCB04, 0xCC5B, 0xCDCD,\n    0xCF52, 0xD0E3, 0xD278, 0xD40B, 0xD593, 0xD709, 0xD866, 0xD9A2,\n    0xDAB7, 0xDB9B, 0xDC49, 0xDCB8, 0xDCE1, 0xE468, 0xE48A, 0xE4E8,\n    0xE577, 0xE62F, 0xE703, 0xE7EA, 0xE8D9, 0xE9C5, 0xEB7B, 0xEDDC,\n    0xEF82, 0xEF06, 0xE99F, 0xE12A, 0xDB38, 0xDA74, 0xDC01, 0xDD21,\n    0xDCA2, 0xDBB7, 0xDB38, 0xDC2C, 0xDD21, 0xDCA2, 0xDBB7, 0xDB38,\n    0xDB77, 0xDC0A, 0xDCAE, 0xDD21, 0xDD50, 0xDD52, 0xDD21, 0xDC80,\n    0xDBA5, 0xDB38, 0xDB84, 0xDC2C, 0xDCD4, 0xDD21, 0xDC2C, 0xDB38,\n    0xDB84, 0xDC2C, 0xDCD4, 0xDD21, 0xDD53, 0xDD18, 0xDB38, 0xD62B,\n    0xCF43, 0xC984, 0xC585, 0xC1DF, 0xBE9F, 0xBBD4, 0xB98C, 0xB891,\n    0xB8DA, 0xB93C, 0xB963, 0xB9A3, 0xB9C5, 0xB9A2, 0xB95F, 0xB93C,\n    0xB980, 0xB9C5, 0xB9B0, 0xB980, 0xB951, 0xB93C, 0xB95F, 0xB9A2,\n    0xB9C5, 0xB980, 0xB93C, 0xB8EE, 0xB8BE, 0xB9C5, 0xBBE7, 0xBE48,\n    0xC0DD, 0xC39B, 0xC678, 0xC96B, 0xCC67, 0xCF63, 0xD254, 0xD530,\n    0xD7EC, 0xDA7E, 0xDCDB, 0xDEF9, 0xE0CD, 0xE24C, 0xE36D, 0xE424,\n    0xE468, 0x0B3F, 0x0ACB, 0x099E, 0x07FD, 0x062F, 0x0479, 0x0321,\n    0x026E, 0x02A5, 0x055A, 0x0A8F, 0x1031, 0x142F, 0x1538, 0x14AC,\n    0x147D, 0x15C1, 0x176C, 0x1842, 0x1748, 0x1577, 0x147D, 0x165F,\n    0x1842, 0x1748, 0x1577, 0x147D, 0x14FB, 0x161C, 0x1760, 0x1842,\n    0x189F, 0x18A4, 0x1842, 0x1704, 0x1555, 0x147D, 0x1514, 0x165F,\n    0x17AB, 0x1842, 0x165F, 0x147D, 0x1514, 0x165F, 0x17AB, 0x1842,\n    0x182D, 0x1741, 0x147D, 0x0E37, 0x05D3, 0xFEE2, 0xFA1B, 0xF5D3,\n    0xF202, 0xEEA2, 0xEBAC, 0xE982, 0xE87A, 0xE874, 0xEA38, 0xED06,\n    0xEE7D, 0xECED, 0xEA05, 0xE874, 0xEB79, 0xEE7D, 0xED8C, 0xEB79,\n    0xE966, 0xE874, 0xEA05, 0xECED, 0xEE7D, 0xEB79, 0xE874, 0xE9A9,\n    0xEC36, 0xEE7D, 0xF02A, 0xF1F4, 0xF3D5, 0xF5C7, 0xF7C5, 0xF9C8,\n    0xFBCB, 0xFDC7, 0xFFB6, 0x0192, 0x0357, 0x04FD, 0x067F, 0x07D6,\n    0x08FD, 0x09EE, 0x0AA3, 0x0B15, 0x0B3F, 0x9426, 0x94DD, 0x96CF,\n    0x99AC, 0x9D26, 0xA0ED, 0xA4B3, 0xA82A, 0xAB02, 0xAC34, 0xAC3C,\n    0xAD0E, 0xB09C, 0xBAB6, 0xC8C8, 0xD334, 0xD6D9, 0xD742, 0xD6DC,\n    0xD5E9, 0xD427, 0xD334, 0xD508, 0xD6DC, 0xD5E9, 0xD427, 0xD334,\n    0xD3AE, 0xD4C7, 0xD601, 0xD6DC, 0xD736, 0xD73B, 0xD6DC, 0xD5A7,\n    0xD406, 0xD334, 0xD3C7, 0xD508, 0xD64A, 0xD6DC, 0xD508, 0xD334,\n    0xD3C7, 0xD508, 0xD64A, 0xD6DC, 0xD768, 0xD725, 0xD334, 0xC82E,\n    0xB906, 0xAC68, 0xA39B, 0x9B88, 0x9459, 0x8E38, 0x894E, 0x8797,\n    0x88D9, 0x89EB, 0x8998, 0x8914, 0x88CF, 0x8918, 0x89A1, 0x89EB,\n    0x895D, 0x88CF, 0x88FB, 0x895D, 0x89BE, 0x89EB, 0x89A1, 0x8918,\n    0x88CF, 0x895D, 0x89EB, 0x8986, 0x88E3, 0x88CF, 0x8953, 0x89EA,\n    0x8A92, 0x8B48, 0x8C07, 0x8CCF, 0x8D9A, 0x8E67, 0x8F32, 0x8FF8,\n    0x90B7, 0x916B, 0x9210, 0x92A5, 0x9326, 0x9390, 0x93E0, 0x9413,\n    0x9426, 0xF3F2, 0xF3C7, 0xF35F, 0xF2E0, 0xF271, 0xF23A, 0xF285,\n    0xF322, 0xF37A, 0xF37E, 0xF382, 0xF385, 0xF389, 0xF38C, 0xF38F,\n    0xF391, 0xF394, 0xF396, 0xF398, 0xF39A, 0xF39B, 0xF39C, 0xF39E,\n    0xF39F, 0xF39F, 0xF3A0, 0xF3A0, 0xF3A1, 0xF3A1, 0xF3A1, 0xF3A1,\n    0xF3A1, 0xF3A0, 0xF3A0, 0xF39F, 0xF39E, 0xF39E, 0xF39D, 0xF39C,\n    0xF39B, 0xF399, 0xF398, 0xF397, 0xF396, 0xF394, 0xF393, 0xF391,\n    0xF390, 0xF38E, 0xF38D, 0xF38B, 0xF38A, 0xF388, 0xF387, 0xF385,\n    0xF384, 0xF382, 0xF381, 0xF380, 0xF37E, 0xF37D, 0xF37C, 0xF37B,\n    0xF37A, 0xF379, 0xF378, 0xF377, 0xF376, 0xF376, 0xF375, 0xF375,\n    0xF375, 0xF375, 0xF375, 0xF375, 0xF375, 0xF376, 0xF377, 0xF377,\n    0xF378, 0xF37A, 0xF37C, 0xF380, 0xF385, 0xF38B, 0xF392, 0xF39A,\n    0xF3A2, 0xF3AB, 0xF3B4, 0xF3BE, 0xF3C7, 0xF3CF, 0xF3D7, 0xF3DF,\n    0xF3E5, 0xF3EB, 0xF3EF, 0xF3F1, 0xF3F2, 0x038F, 0x037C, 0x034E,\n    0x0316, 0x02E5, 0x02CD, 0x02F0, 0x0336, 0x035E, 0x0360, 0x0361,\n    0x0363, 0x0365, 0x0366, 0x0367, 0x0369, 0x036A, 0x036B, 0x036C,\n    0x036C, 0x036D, 0x036E, 0x036E, 0x036F, 0x036F, 0x036F, 0x0370,\n    0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x0370, 0x036F, 0x036F,\n    0x036F, 0x036E, 0x036E, 0x036E, 0x036D, 0x036D, 0x036C, 0x036C,\n    0x036B, 0x036A, 0x036A, 0x0369, 0x0368, 0x0368, 0x0367, 0x0366,\n    0x0366, 0x0365, 0x0364, 0x0364, 0x0363, 0x0362, 0x0362, 0x0361,\n    0x0361, 0x0360, 0x035F, 0x035F, 0x035E, 0x035E, 0x035E, 0x035D,\n    0x035D, 0x035D, 0x035C, 0x035C, 0x035C, 0x035C, 0x035C, 0x035C,\n    0x035C, 0x035C, 0x035D, 0x035D, 0x035D, 0x035E, 0x035F, 0x0360,\n    0x0362, 0x0365, 0x0368, 0x036B, 0x036E, 0x0372, 0x0376, 0x0379,\n    0x037D, 0x0381, 0x0384, 0x0387, 0x038A, 0x038C, 0x038D, 0x038F,\n    0x038F, 0xAAC2, 0xAA82, 0xA9E9, 0xA92F, 0xA88C, 0xA838, 0xA89F,\n    0xA97A, 0xA9F6, 0xA9FC, 0xAA01, 0xAA06, 0xAA0B, 0xAA0F, 0xAA13,\n    0xAA17, 0xAA1A, 0xAA1D, 0xAA20, 0xAA22, 0xAA24, 0xAA26, 0xAA27,\n    0xAA29, 0xAA2A, 0xAA2A, 0xAA2B, 0xAA2B, 0xAA2B, 0xAA2B, 0xAA2B,\n    0xAA2A, 0xAA2A, 0xAA29, 0xAA28, 0xAA27, 0xAA25, 0xAA24, 0xAA23,\n    0xAA21, 0xAA1F, 0xAA1D, 0xAA1C, 0xAA1A, 0xAA18, 0xAA15, 0xAA13,\n    0xAA11, 0xAA0F, 0xAA0D, 0xAA0B, 0xAA08, 0xAA06, 0xAA04, 0xAA02,\n    0xAA00, 0xA9FE, 0xA9FC, 0xA9FA, 0xA9F8, 0xA9F7, 0xA9F5, 0xA9F3,\n    0xA9F2, 0xA9F1, 0xA9F0, 0xA9EF, 0xA9EE, 0xA9ED, 0xA9ED, 0xA9ED,\n    0xA9EC, 0xA9ED, 0xA9ED, 0xA9ED, 0xA9EE, 0xA9EF, 0xA9F1, 0xA9F2,\n    0xA9F4, 0xA9F6, 0xA9FA, 0xAA00, 0xAA08, 0xAA13, 0xAA1F, 0xAA2C,\n    0xAA3B, 0xAA4A, 0xAA59, 0xAA69, 0xAA78, 0xAA87, 0xAA94, 0xAAA1,\n    0xAAAC, 0xAAB5, 0xAABC, 0xAAC0, 0xAAC2, 0x2D1D, 0x2CF2, 0x2C7F,\n    0x2BDC, 0x2B21, 0x2A63, 0x29BC, 0x2941, 0x290A, 0x28FD, 0x28F1,\n    0x28E5, 0x28D9, 0x28CE, 0x28C3, 0x28B9, 0x28AF, 0x28A5, 0x289C,\n    0x2893, 0x288B, 0x2883, 0x287B, 0x2874, 0x286D, 0x2866, 0x2860,\n    0x285A, 0x2854, 0x284F, 0x284B, 0x2846, 0x2842, 0x283F, 0x283B,\n    0x2838, 0x2836, 0x2834, 0x2832, 0x2830, 0x282F, 0x282E, 0x282E,\n    0x282E, 0x282E, 0x282E, 0x282F, 0x2831, 0x2832, 0x2834, 0x2836,\n    0x2839, 0x283C, 0x283F, 0x2842, 0x2846, 0x284B, 0x284F, 0x2854,\n    0x2859, 0x285E, 0x2864, 0x286A, 0x2871, 0x2877, 0x287E, 0x2886,\n    0x288D, 0x2895, 0x289D, 0x28A6, 0x28AE, 0x28B7, 0x28C1, 0x28CA,\n    0x28D4, 0x28DF, 0x28E9, 0x28F4, 0x28FF, 0x290A, 0x291D, 0x293D,\n    0x2968, 0x299D, 0x29DB, 0x2A20, 0x2A69, 0x2AB6, 0x2B05, 0x2B55,\n    0x2BA2, 0x2BED, 0x2C33, 0x2C73, 0x2CAC, 0x2CDA, 0x2CFE, 0x2D15,\n    0x2D1D, 0xE969, 0xEA2F, 0xEC3A, 0xEF21, 0xF279, 0xF5D9, 0xF8D6,\n    0xFB06, 0xFC00, 0xFC3B, 0xFC73, 0xFCAA, 0xFCDF, 0xFD12, 0xFD43,\n    0xFD73, 0xFDA1, 0xFDCD, 0xFDF7, 0xFE1F, 0xFE46, 0xFE6B, 0xFE8E,\n    0xFEB0, 0xFECF, 0xFEED, 0xFF0A, 0xFF24, 0xFF3D, 0xFF54, 0xFF6A,\n    0xFF7E, 0xFF90, 0xFFA1, 0xFFB0, 0xFFBD, 0xFFC9, 0xFFD3, 0xFFDB,\n    0xFFE2, 0xFFE8, 0xFFEB, 0xFFEE, 0xFFEE, 0xFFED, 0xFFEB, 0xFFE7,\n    0xFFE1, 0xFFDA, 0xFFD1, 0xFFC7, 0xFFBB, 0xFFAE, 0xFF9F, 0xFF8F,\n    0xFF7E, 0xFF6B, 0xFF56, 0xFF40, 0xFF29, 0xFF10, 0xFEF6, 0xFEDA,\n    0xFEBD, 0xFE9F, 0xFE7F, 0xFE5E, 0xFE3B, 0xFE17, 0xFDF2, 0xFDCB,\n    0xFDA3, 0xFD7A, 0xFD4F, 0xFD23, 0xFCF6, 0xFCC7, 0xFC97, 0xFC66,\n    0xFC34, 0xFC00, 0xFBAB, 0xFB1A, 0xFA54, 0xF960, 0xF846, 0xF70E,\n    0xF5BE, 0xF45E, 0xF2F6, 0xF18C, 0xF029, 0xEED4, 0xED93, 0xEC6F,\n    0xEB6F, 0xEA9A, 0xE9F8, 0xE990, 0xE969, 0xEB3A, 0xEB6D, 0xEBF3,\n    0xECB1, 0xED8C, 0xEE69, 0xEF2D, 0xEFBC, 0xEFFC, 0xF00B, 0xF01A,\n    0xF028, 0xF035, 0xF042, 0xF04F, 0xF05B, 0xF067, 0xF072, 0xF07D,\n    0xF087, 0xF091, 0xF09B, 0xF0A4, 0xF0AC, 0xF0B4, 0xF0BC, 0xF0C3,\n    0xF0CA, 0xF0D0, 0xF0D6, 0xF0DC, 0xF0E1, 0xF0E6, 0xF0EA, 0xF0EE,\n    0xF0F1, 0xF0F4, 0xF0F7, 0xF0F9, 0xF0FB, 0xF0FC, 0xF0FD, 0xF0FE,\n    0xF0FE, 0xF0FD, 0xF0FD, 0xF0FC, 0xF0FA, 0xF0F8, 0xF0F6, 0xF0F4,\n    0xF0F1, 0xF0ED, 0xF0EA, 0xF0E5, 0xF0E1, 0xF0DC, 0xF0D7, 0xF0D1,\n    0xF0CB, 0xF0C5, 0xF0BE, 0xF0B7, 0xF0B0, 0xF0A8, 0xF0A0, 0xF097,\n    0xF08E, 0xF085, 0xF07C, 0xF072, 0xF067, 0xF05D, 0xF052, 0xF047,\n    0xF03B, 0xF02F, 0xF023, 0xF016, 0xF009, 0xEFFC, 0xEFE6, 0xEFC1,\n    0xEF8F, 0xEF50, 0xEF08, 0xEEB8, 0xEE62, 0xEE08, 0xEDAC, 0xED4F,\n    0xECF4, 0xEC9D, 0xEC4B, 0xEC00, 0xEBBF, 0xEB88, 0xEB5F, 0xEB44,\n    0xEB3A, 0x9744, 0x97BC, 0x98FB, 0x9ABF, 0x9CC8, 0x9ED6, 0xA0A8,\n    0xA1FD, 0xA296, 0xA2B9, 0xA2DC, 0xA2FD, 0xA31D, 0xA33C, 0xA35A,\n    0xA377, 0xA393, 0xA3AE, 0xA3C8, 0xA3E0, 0xA3F8, 0xA40E, 0xA424,\n    0xA438, 0xA44B, 0xA45E, 0xA46F, 0xA47F, 0xA48E, 0xA49C, 0xA4AA,\n    0xA4B6, 0xA4C1, 0xA4CB, 0xA4D4, 0xA4DC, 0xA4E3, 0xA4EA, 0xA4EF,\n    0xA4F3, 0xA4F6, 0xA4F8, 0xA4FA, 0xA4FA, 0xA4F9, 0xA4F8, 0xA4F5,\n    0xA4F2, 0xA4EE, 0xA4E8, 0xA4E2, 0xA4DB, 0xA4D3, 0xA4CA, 0xA4C0,\n    0xA4B6, 0xA4AA, 0xA49D, 0xA490, 0xA482, 0xA473, 0xA463, 0xA452,\n    0xA440, 0xA42E, 0xA41A, 0xA406, 0xA3F1, 0xA3DB, 0xA3C4, 0xA3AD,\n    0xA395, 0xA37B, 0xA361, 0xA347, 0xA32B, 0xA30F, 0xA2F2, 0xA2D4,\n    0xA2B5, 0xA296, 0xA262, 0xA209, 0xA191, 0xA0FC, 0xA051, 0x9F92,\n    0x9EC6, 0x9DF0, 0x9D14, 0x9C38, 0x9B60, 0x9A90, 0x99CD, 0x991B,\n    0x987F, 0x97FE, 0x979B, 0x975B, 0x9744, 0x0341, 0x03AD, 0x04B5,\n    0x0601, 0x0737, 0x07FF, 0x07E9, 0x0748, 0x06E3, 0x06E0, 0x06DD,\n    0x06DA, 0x06D8, 0x06D6, 0x06D5, 0x06D4, 0x06D3, 0x06D3, 0x06D3,\n    0x06D4, 0x06D5, 0x06D6, 0x06D7, 0x06D9, 0x06DB, 0x06DD, 0x06DF,\n    0x06E2, 0x06E5, 0x06E8, 0x06EB, 0x06EE, 0x06F1, 0x06F5, 0x06F8,\n    0x06FC, 0x0700, 0x0703, 0x0707, 0x070B, 0x070E, 0x0712, 0x0716,\n    0x071A, 0x071D, 0x0721, 0x0724, 0x0727, 0x072A, 0x072D, 0x0730,\n    0x0732, 0x0735, 0x0737, 0x0739, 0x073B, 0x073C, 0x073D, 0x073E,\n    0x073E, 0x073F, 0x073E, 0x073E, 0x073D, 0x073C, 0x073A, 0x0738,\n    0x0735, 0x0732, 0x072E, 0x072A, 0x0726, 0x0721, 0x071B, 0x0715,\n    0x070E, 0x0707, 0x06FF, 0x06F6, 0x06ED, 0x06E3, 0x06D3, 0x06B6,\n    0x068F, 0x0660, 0x0629, 0x05EC, 0x05AA, 0x0565, 0x051F, 0x04D8,\n    0x0493, 0x0450, 0x0411, 0x03D8, 0x03A6, 0x037D, 0x035D, 0x0348,\n    0x0341, 0xFFD7, 0xFFDE, 0xFFED, 0xFFFE, 0x0009, 0x0008, 0xFFE5,\n    0xFFAA, 0xFF8B, 0xFF89, 0xFF88, 0xFF86, 0xFF85, 0xFF83, 0xFF82,\n    0xFF81, 0xFF80, 0xFF7F, 0xFF7E, 0xFF7D, 0xFF7C, 0xFF7B, 0xFF7A,\n    0xFF79, 0xFF78, 0xFF78, 0xFF77, 0xFF77, 0xFF76, 0xFF76, 0xFF75,\n    0xFF75, 0xFF75, 0xFF74, 0xFF74, 0xFF74, 0xFF74, 0xFF74, 0xFF74,\n    0xFF74, 0xFF74, 0xFF74, 0xFF74, 0xFF74, 0xFF74, 0xFF75, 0xFF75,\n    0xFF75, 0xFF75, 0xFF76, 0xFF76, 0xFF77, 0xFF77, 0xFF78, 0xFF78,\n    0xFF79, 0xFF79, 0xFF7A, 0xFF7A, 0xFF7B, 0xFF7C, 0xFF7C, 0xFF7D,\n    0xFF7E, 0xFF7E, 0xFF7F, 0xFF80, 0xFF80, 0xFF81, 0xFF82, 0xFF83,\n    0xFF84, 0xFF84, 0xFF85, 0xFF86, 0xFF87, 0xFF88, 0xFF88, 0xFF89,\n    0xFF8A, 0xFF8B, 0xFF8C, 0xFF8F, 0xFF92, 0xFF96, 0xFF9A, 0xFF9F,\n    0xFFA5, 0xFFAA, 0xFFB0, 0xFFB6, 0xFFBB, 0xFFC1, 0xFFC6, 0xFFCA,\n    0xFFCF, 0xFFD2, 0xFFD5, 0xFFD6, 0xFFD7, 0xA2A1, 0xA298, 0xA28A,\n    0xA28D, 0xA2B8, 0xA320, 0xA464, 0xA62C, 0xA71B, 0xA729, 0xA736,\n    0xA742, 0xA74F, 0xA75A, 0xA766, 0xA771, 0xA77B, 0xA786, 0xA78F,\n    0xA799, 0xA7A2, 0xA7AB, 0xA7B3, 0xA7BB, 0xA7C2, 0xA7C9, 0xA7D0,\n    0xA7D6, 0xA7DC, 0xA7E2, 0xA7E7, 0xA7EC, 0xA7F0, 0xA7F4, 0xA7F8,\n    0xA7FB, 0xA7FE, 0xA800, 0xA802, 0xA804, 0xA805, 0xA807, 0xA807,\n    0xA807, 0xA807, 0xA807, 0xA806, 0xA805, 0xA803, 0xA802, 0xA7FF,\n    0xA7FD, 0xA7FA, 0xA7F6, 0xA7F3, 0xA7EF, 0xA7EA, 0xA7E6, 0xA7E1,\n    0xA7DB, 0xA7D5, 0xA7CF, 0xA7C9, 0xA7C2, 0xA7BB, 0xA7B3, 0xA7AC,\n    0xA7A3, 0xA79B, 0xA792, 0xA789, 0xA780, 0xA776, 0xA76C, 0xA761,\n    0xA756, 0xA74B, 0xA740, 0xA734, 0xA728, 0xA71B, 0xA707, 0xA6E4,\n    0xA6B4, 0xA679, 0xA636, 0xA5EA, 0xA599, 0xA545, 0xA4EE, 0xA497,\n    0xA441, 0xA3EF, 0xA3A2, 0xA35C, 0xA31E, 0xA2EB, 0xA2C4, 0xA2AB,\n    0xA2A1, 0x2FF7, 0x2FD5, 0x2F79, 0x2EF7, 0x2E60, 0x2DC9, 0x2D43,\n    0x2CE1, 0x2CB5, 0x2CAB, 0x2CA1, 0x2C97, 0x2C8E, 0x2C85, 0x2C7C,\n    0x2C74, 0x2C6C, 0x2C64, 0x2C5D, 0x2C56, 0x2C4F, 0x2C48, 0x2C42,\n    0x2C3C, 0x2C37, 0x2C32, 0x2C2D, 0x2C28, 0x2C24, 0x2C1F, 0x2C1C,\n    0x2C18, 0x2C15, 0x2C12, 0x2C0F, 0x2C0D, 0x2C0B, 0x2C09, 0x2C08,\n    0x2C07, 0x2C06, 0x2C05, 0x2C05, 0x2C05, 0x2C05, 0x2C05, 0x2C06,\n    0x2C07, 0x2C08, 0x2C0A, 0x2C0B, 0x2C0D, 0x2C10, 0x2C12, 0x2C15,\n    0x2C18, 0x2C1C, 0x2C1F, 0x2C23, 0x2C27, 0x2C2B, 0x2C30, 0x2C35,\n    0x2C3A, 0x2C3F, 0x2C45, 0x2C4B, 0x2C51, 0x2C57, 0x2C5E, 0x2C64,\n    0x2C6B, 0x2C73, 0x2C7A, 0x2C82, 0x2C8A, 0x2C92, 0x2C9A, 0x2CA3,\n    0x2CAC, 0x2CB5, 0x2CC4, 0x2CDD, 0x2D00, 0x2D2B, 0x2D5C, 0x2D93,\n    0x2DCE, 0x2E0B, 0x2E4B, 0x2E8A, 0x2EC8, 0x2F04, 0x2F3C, 0x2F6F,\n    0x2F9C, 0x2FC2, 0x2FDE, 0x2FF0, 0x2FF7, 0x143B, 0x1406, 0x137D,\n    0x12B9, 0x11D7, 0x10F4, 0x102A, 0x0F97, 0x0F55, 0x0F45, 0x0F37,\n    0x0F28, 0x0F1A, 0x0F0D, 0x0F00, 0x0EF3, 0x0EE7, 0x0EDC, 0x0ED0,\n    0x0EC6, 0x0EBC, 0x0EB2, 0x0EA9, 0x0EA0, 0x0E97, 0x0E8F, 0x0E88,\n    0x0E81, 0x0E7A, 0x0E74, 0x0E6F, 0x0E69, 0x0E65, 0x0E60, 0x0E5C,\n    0x0E59, 0x0E56, 0x0E53, 0x0E51, 0x0E4F, 0x0E4E, 0x0E4D, 0x0E4C,\n    0x0E4C, 0x0E4C, 0x0E4D, 0x0E4E, 0x0E4F, 0x0E51, 0x0E53, 0x0E56,\n    0x0E59, 0x0E5D, 0x0E61, 0x0E65, 0x0E69, 0x0E6E, 0x0E74, 0x0E7A,\n    0x0E80, 0x0E86, 0x0E8D, 0x0E95, 0x0E9C, 0x0EA4, 0x0EAD, 0x0EB5,\n    0x0EBE, 0x0EC8, 0x0ED2, 0x0EDC, 0x0EE6, 0x0EF1, 0x0EFD, 0x0F08,\n    0x0F14, 0x0F20, 0x0F2D, 0x0F3A, 0x0F47, 0x0F55, 0x0F6B, 0x0F91,\n    0x0FC6, 0x1006, 0x1050, 0x10A2, 0x10FB, 0x1158, 0x11B6, 0x1216,\n    0x1273, 0x12CD, 0x1322, 0x136F, 0x13B2, 0x13EA, 0x1415, 0x1430,\n    0x143B, 0x0AE3, 0x0AF6, 0x0B29, 0x0B72, 0x0BC6, 0x0C1B, 0x0C66,\n    0x0C9D, 0x0CB6, 0x0CBB, 0x0CC1, 0x0CC6, 0x0CCB, 0x0CD0, 0x0CD5,\n    0x0CDA, 0x0CDE, 0x0CE3, 0x0CE7, 0x0CEB, 0x0CEF, 0x0CF2, 0x0CF6,\n    0x0CF9, 0x0CFC, 0x0CFF, 0x0D02, 0x0D04, 0x0D07, 0x0D09, 0x0D0B,\n    0x0D0D, 0x0D0F, 0x0D11, 0x0D12, 0x0D13, 0x0D15, 0x0D16, 0x0D16,\n    0x0D17, 0x0D18, 0x0D18, 0x0D18, 0x0D18, 0x0D18, 0x0D18, 0x0D18,\n    0x0D17, 0x0D16, 0x0D15, 0x0D14, 0x0D13, 0x0D12, 0x0D11, 0x0D0F,\n    0x0D0D, 0x0D0B, 0x0D09, 0x0D07, 0x0D05, 0x0D03, 0x0D00, 0x0CFD,\n    0x0CFA, 0x0CF7, 0x0CF4, 0x0CF1, 0x0CEE, 0x0CEA, 0x0CE6, 0x0CE3,\n    0x0CDF, 0x0CDB, 0x0CD6, 0x0CD2, 0x0CCE, 0x0CC9, 0x0CC4, 0x0CC0,\n    0x0CBB, 0x0CB6, 0x0CAD, 0x0C9F, 0x0C8C, 0x0C74, 0x0C58, 0x0C39,\n    0x0C18, 0x0BF6, 0x0BD3, 0x0BAF, 0x0B8C, 0x0B6B, 0x0B4B, 0x0B2F,\n    0x0B16, 0x0B01, 0x0AF1, 0x0AE7, 0x0AE3, 0x96C2, 0x974C, 0x98B9,\n    0x9ABE, 0x9D12, 0x9F6B, 0xA180, 0xA306, 0xA3B4, 0xA3DD, 0xA404,\n    0xA42A, 0xA44F, 0xA473, 0xA495, 0xA4B6, 0xA4D6, 0xA4F5, 0xA512,\n    0xA52E, 0xA549, 0xA563, 0xA57C, 0xA593, 0xA5A9, 0xA5BE, 0xA5D2,\n    0xA5E4, 0xA5F6, 0xA606, 0xA615, 0xA623, 0xA62F, 0xA63B, 0xA645,\n    0xA64F, 0xA657, 0xA65E, 0xA664, 0xA669, 0xA66C, 0xA66F, 0xA670,\n    0xA671, 0xA670, 0xA66E, 0xA66B, 0xA667, 0xA663, 0xA65C, 0xA655,\n    0xA64D, 0xA644, 0xA63A, 0xA62F, 0xA622, 0xA615, 0xA607, 0xA5F8,\n    0xA5E7, 0xA5D6, 0xA5C4, 0xA5B0, 0xA59C, 0xA587, 0xA571, 0xA55A,\n    0xA542, 0xA529, 0xA50F, 0xA4F4, 0xA4D8, 0xA4BB, 0xA49D, 0xA47F,\n    0xA45F, 0xA43F, 0xA41E, 0xA3FB, 0xA3D8, 0xA3B4, 0xA379, 0xA314,\n    0xA28A, 0xA1E0, 0xA11C, 0xA043, 0x9F59, 0x9E64, 0x9D69, 0x9C6D,\n    0x9B76, 0x9A88, 0x99A9, 0x98DE, 0x982B, 0x9797, 0x9726, 0x96DD,\n    0x96C2, 0x0000, 0x0009, 0x001F, 0x003B, 0x0055, 0x0063, 0x005F,\n    0x0041, 0x0000, 0xFF68, 0xFE72, 0xFD5C, 0xFC61, 0xFBBF, 0xFBC2,\n    0xFC46, 0xFCDF, 0xFD78, 0xFE38, 0xFF07, 0xFFCC, 0x0070, 0x00DC,\n    0x00F8, 0x00A3, 0xFFE6, 0xFEEA, 0xFDD9, 0xFCDC, 0xFC1C, 0xFBC2,\n    0xFBC5, 0xFBF8, 0xFC52, 0xFCC9, 0xFD54, 0xFDE8, 0xFE7C, 0xFF07,\n    0xFF7E, 0xFFF0, 0x006D, 0x00EF, 0x016C, 0x01DD, 0x023A, 0x027A,\n    0x0296, 0x0289, 0x0258, 0x020D, 0x01B0, 0x0149, 0x00E2, 0x0083,\n    0x0034, 0x0000, 0xFFE3, 0xFFD5, 0xFFD1, 0xFFD6, 0xFFE0, 0xFFED,\n    0xFFFA, 0x0003, 0x0008, 0xFFD1, 0xFF55, 0xFED9, 0xFEA1, 0xFEEF,\n    0x0008, 0x02C8, 0x0723, 0x0BFA, 0x1031, 0x12AC, 0x124A, 0x0FD7,\n    0x0D11, 0x0BB8, 0x0C60, 0x0E00, 0x0FF4, 0x1199, 0x124A, 0x116A,\n    0x0F67, 0x0D32, 0x0BB8, 0x0B80, 0x0BEE, 0x0C41, 0x0BB8, 0x0A03,\n    0x079B, 0x04F3, 0x0280, 0x00B3, 0x0000, 0x0000, 0x0004, 0x000D,\n    0x001A, 0x0025, 0x002B, 0x0029, 0x001C, 0x0000, 0xFFC8, 0xFF71,\n    0xFF07, 0xFE95, 0xFE25, 0xFD9C, 0xFD00, 0xFC92, 0xFC19, 0xFB57,\n    0xFA88, 0xF9E8, 0xF9B2, 0xFA23, 0xFB76, 0xFE53, 0x02BB, 0x07F7,\n    0x0D4C, 0x1201, 0x155C, 0x16A3, 0x15C7, 0x1379, 0x101B, 0x0C12,\n    0x07C0, 0x0388, 0xFFCF, 0xFCF7, 0xFB63, 0xFB54, 0xFC89, 0xFEA0,\n    0x0139, 0x03F5, 0x0673, 0x0854, 0x0936, 0x095E, 0x094D, 0x08FA,\n    0x085E, 0x0772, 0x062D, 0x0488, 0x027B, 0x0000, 0xFCCD, 0xF8C8,\n    0xF42D, 0xEF38, 0xEA24, 0xE52D, 0xE08E, 0xDC85, 0xD94C, 0xD77C,\n    0xD727, 0xD7BB, 0xD8A8, 0xD95E, 0xD94C, 0xD806, 0xD5F4, 0xD3C1,\n    0xD21A, 0xD1AB, 0xD3AD, 0xD791, 0xDB5E, 0xDD1B, 0xDBFB, 0xD93D,\n    0xD5F4, 0xD332, 0xD209, 0xD383, 0xD6E6, 0xDA9F, 0xDD1B, 0xDD2F,\n    0xDBF9, 0xDB54, 0xDD1B, 0xE232, 0xE95C, 0xF142, 0xF88F, 0xFDEB,\n    0x0000, 0x0B7E, 0x0C1D, 0x0DC9, 0x1038, 0x1322, 0x163C, 0x193E,\n    0x1BDE, 0x1DD3, 0x1F3C, 0x2045, 0x20B8, 0x2060, 0x1F06, 0x1AEA,\n    0x144B, 0x0DF2, 0x07E2, 0x00BF, 0xF949, 0xF23D, 0xEC5B, 0xE861,\n    0xE70F, 0xE97F, 0xEF65, 0xF768, 0x002C, 0x085B, 0x0E99, 0x118D,\n    0x113C, 0x0EEE, 0x0B2D, 0x0681, 0x0174, 0xFC90, 0xF85C, 0xF563,\n    0xF42E, 0xF510, 0xF7AB, 0xFB7D, 0x0004, 0x04C1, 0x0931, 0x0CD3,\n    0x0F25, 0x1071, 0x1159, 0x11E2, 0x1213, 0x11F2, 0x1184, 0x10D0,\n    0x0FDA, 0x0EAA, 0x0D08, 0x0AD1, 0x082F, 0x0549, 0x0247, 0xFF51,\n    0xFC8E, 0xFA27, 0xF842, 0xF76C, 0xF7B4, 0xF883, 0xF943, 0xF95F,\n    0xF842, 0xF4EB, 0xEFA4, 0xE9C5, 0xE4A5, 0xE19E, 0xE206, 0xE4EB,\n    0xE836, 0xE9CE, 0xE908, 0xE71C, 0xE4CC, 0xE2DB, 0xE20A, 0xE313,\n    0xE573, 0xE810, 0xE9CE, 0xE9AF, 0xE889, 0xE806, 0xE9CE, 0xEEB8,\n    0xF5A3, 0xFD43, 0x044E, 0x097B, 0x0B7E, 0x0000, 0x001E, 0x0067,\n    0x00C1, 0x0113, 0x0142, 0x0136, 0x00D3, 0x0000, 0xFE1D, 0xFB15,\n    0xF79D, 0xF46C, 0xF238, 0xF18D, 0xF23B, 0xF3DD, 0xF642, 0xF947,\n    0xFCA0, 0xFFFF, 0x0314, 0x0595, 0x0733, 0x07D4, 0x07B3, 0x0706,\n    0x0603, 0x04DE, 0x03CE, 0x0308, 0x027C, 0x01F5, 0x0173, 0x00F5,\n    0x007A, 0x0002, 0xFF8C, 0xFF16, 0xFEA0, 0xFE1F, 0xFD92, 0xFD01,\n    0xFC78, 0xFC00, 0xFBA3, 0xFB6C, 0xFB65, 0xFB97, 0xFBFB, 0xFC85,\n    0xFD28, 0xFDD6, 0xFE83, 0xFF22, 0xFFA5, 0x0000, 0x0016, 0xFFE8,\n    0xFF8F, 0xFF27, 0xFECB, 0xFE98, 0xFEA8, 0xFF17, 0x0000, 0x01FC,\n    0x0524, 0x08D6, 0x0C6E, 0x0F4A, 0x10C8, 0x1159, 0x11DC, 0x1251,\n    0x12B8, 0x1312, 0x135D, 0x139B, 0x13CB, 0x13ED, 0x1401, 0x1408,\n    0x1401, 0x13EC, 0x13C9, 0x1399, 0x135B, 0x130F, 0x12B6, 0x124F,\n    0x11DA, 0x1158, 0x10C8, 0x0F21, 0x0BE8, 0x07F3, 0x0416, 0x0129,\n    0x0000, 0x0000, 0x0013, 0x0042, 0x007C, 0x00B1, 0x00CF, 0x00C7,\n    0x0087, 0x0000, 0xFEDA, 0xFD07, 0xFAE5, 0xF8D0, 0xF725, 0xF61C,\n    0xF57C, 0xF4F9, 0xF42F, 0xF314, 0xF1E7, 0xF0E4, 0xF04C, 0xF05B,\n    0xF150, 0xF3C5, 0xF7B5, 0xFC74, 0x0153, 0x05AA, 0x08C8, 0x0A03,\n    0x0925, 0x06BE, 0x0346, 0xFF35, 0xFB01, 0xF722, 0xF410, 0xF242,\n    0xF230, 0xF489, 0xF927, 0xFF48, 0x0625, 0x0CFE, 0x130E, 0x1790,\n    0x19C2, 0x19D1, 0x1894, 0x164B, 0x1332, 0x0F88, 0x0B8A, 0x0775,\n    0x0388, 0x0000, 0xFCA4, 0xF91D, 0xF577, 0xF1C2, 0xEE0B, 0xEA61,\n    0xE6D1, 0xE36A, 0xE039, 0xDD4B, 0xDAAE, 0xD872, 0xD6A7, 0xD55F,\n    0xD4A7, 0xD437, 0xD3BA, 0xD334, 0xD2A7, 0xD219, 0xD18C, 0xD104,\n    0xD084, 0xD010, 0xCFAB, 0xCF59, 0xCF1E, 0xCEFD, 0xCEF9, 0xCF16,\n    0xCF58, 0xCFC2, 0xD057, 0xD11C, 0xD213, 0xD340, 0xD4A7, 0xD8EC,\n    0xE13E, 0xEB78, 0xF570, 0xFD01, 0x0000, 0xF35E, 0xF40A, 0xF5E3,\n    0xF8AF, 0xFC31, 0x002C, 0x0466, 0x08A0, 0x0CA0, 0x112D, 0x16A7,\n    0x1C32, 0x20F5, 0x2415, 0x247F, 0x220E, 0x1D4D, 0x1677, 0x0DF6,\n    0x049D, 0xFB42, 0xF2B7, 0xEBD1, 0xE766, 0xE603, 0xE71A, 0xE9D3,\n    0xED57, 0xF0CF, 0xF362, 0xF43A, 0xF334, 0xF103, 0xEE0F, 0xEABD,\n    0xE774, 0xE49C, 0xE29B, 0xE1D7, 0xE2B8, 0xE5EF, 0xEB69, 0xF26B,\n    0xFA37, 0x020D, 0x0933, 0x0EEA, 0x1275, 0x1411, 0x1497, 0x1438,\n    0x1325, 0x118E, 0x0FA2, 0x0D92, 0x0B8E, 0x09C7, 0x0824, 0x066B,\n    0x0496, 0x02A1, 0x0085, 0xFE40, 0xFBCA, 0xF91F, 0xF639, 0xF288,\n    0xEDEC, 0xE908, 0xE483, 0xE100, 0xDF24, 0xDE5E, 0xDDAD, 0xDD10,\n    0xDC89, 0xDC15, 0xDBB5, 0xDB68, 0xDB2F, 0xDB08, 0xDAF4, 0xDAF2,\n    0xDB02, 0xDB23, 0xDB55, 0xDB98, 0xDBEB, 0xDC4F, 0xDCC2, 0xDD44,\n    0xDDD6, 0xDE76, 0xDF24, 0xE122, 0xE504, 0xE9C9, 0xEE71, 0xF1F8,\n    0xF35E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xFFF8, 0xFFE7, 0xFFDB, 0xFFE1, 0x0005, 0x00B1,\n    0x019E, 0x01D3, 0x0133, 0x0053, 0xFF48, 0xFE26, 0xFD00, 0xFBED,\n    0xFB00, 0xFA21, 0xF936, 0xF84F, 0xF77D, 0xF6D0, 0xF65B, 0xF62E,\n    0xF653, 0xF6BE, 0xF75B, 0xF816, 0xF8DB, 0xF995, 0xFA32, 0xFA9B,\n    0xFABF, 0xFA7B, 0xF9D5, 0xF8F1, 0xF7F3, 0xF6FE, 0xF637, 0xF5C1,\n    0xF5C1, 0xF635, 0xF6F9, 0xF7FC, 0xF92E, 0xFA7E, 0xFBDB, 0xFD34,\n    0xFE7A, 0xFF9B, 0x00D7, 0x0262, 0x0412, 0x05BC, 0x0737, 0x0858,\n    0x08F7, 0x08E9, 0x0805, 0x0527, 0x000E, 0xF9E0, 0xF3C2, 0xEEDA,\n    0xEC4F, 0xEB63, 0xEA93, 0xE9DF, 0xE946, 0xE8C7, 0xE860, 0xE812,\n    0xE7DB, 0xE7BA, 0xE7AE, 0xE7B7, 0xE7D3, 0xE802, 0xE842, 0xE893,\n    0xE8F3, 0xE963, 0xE9E0, 0xEA6B, 0xEB01, 0xEBA3, 0xEC4F, 0xEE3F,\n    0xF207, 0xF6AC, 0xFB34, 0xFEA4, 0x0000, 0x0000, 0x001D, 0x0064,\n    0x00BD, 0x010C, 0x013B, 0x012E, 0x00CD, 0x0000, 0xFE31, 0xFB4A,\n    0xF7F3, 0xF4D2, 0xF28F, 0xF1DA, 0xF23F, 0xF2AD, 0xF288, 0xF215,\n    0xF18F, 0xF133, 0xF13F, 0xF1EE, 0xF37E, 0xF699, 0xFB44, 0x00C1,\n    0x0651, 0x0B37, 0x0EB4, 0x1009, 0x0F37, 0x0CF9, 0x09AC, 0x05AB,\n    0x0151, 0xFCFB, 0xF902, 0xF5C2, 0xF398, 0xF29A, 0xF27C, 0xF303,\n    0xF3F4, 0xF513, 0xF624, 0xF6EE, 0xF735, 0xF703, 0xF697, 0xF601,\n    0xF550, 0xF496, 0xF3E2, 0xF345, 0xF2CF, 0xF290, 0xF296, 0xF2D9,\n    0xF345, 0xF3C9, 0xF450, 0xF4C9, 0xF521, 0xF546, 0xF524, 0xF478,\n    0xF33D, 0xF1BB, 0xF03C, 0xEF08, 0xEE68, 0xEE2A, 0xEDE9, 0xEDA8,\n    0xED67, 0xED27, 0xECEB, 0xECB2, 0xEC7E, 0xEC51, 0xEC2B, 0xEC0E,\n    0xEBFB, 0xEBF3, 0xEBF8, 0xEC0A, 0xEC2A, 0xEC5B, 0xEC9D, 0xECF1,\n    0xED59, 0xEDD6, 0xEE68, 0xF023, 0xF384, 0xF7AB, 0xFBB7, 0xFEC9,\n    0x0000, 0xB247, 0xB224, 0xB1DD, 0xB1A0, 0xB19D, 0xB205, 0xB306,\n    0xB4D0, 0xB793, 0xBCF0, 0xC52C, 0xCE70, 0xD6E0, 0xDCA5, 0xDC8F,\n    0xD8AF, 0xD70D, 0xD911, 0xDBEE, 0xDF56, 0xE2FE, 0xE69B, 0xE9DF,\n    0xEC80, 0xEEA7, 0xF0A9, 0xF275, 0xF3FB, 0xF529, 0xF5F0, 0xF640,\n    0xF5ED, 0xF4FB, 0xF39B, 0xF1FF, 0xF05B, 0xEEDF, 0xEDBF, 0xED2C,\n    0xED59, 0xEEBB, 0xF158, 0xF4B5, 0xF85C, 0xFBD3, 0xFEA2, 0x004F,\n    0x0065, 0xFEE0, 0xFC35, 0xF8A5, 0xF46C, 0xEFC9, 0xEAFA, 0xE63C,\n    0xE1CF, 0xDDF0, 0xDA42, 0xD65A, 0xD262, 0xCE83, 0xCAE7, 0xC7B7,\n    0xC51D, 0xC342, 0xC24F, 0xC37C, 0xC723, 0xCC1F, 0xD14E, 0xD58E,\n    0xD7BA, 0xD879, 0xD932, 0xD9E3, 0xDA89, 0xDB24, 0xDBB1, 0xDC2F,\n    0xDC9C, 0xDCF7, 0xDD3C, 0xDD6C, 0xDD83, 0xDD80, 0xDD62, 0xDD26,\n    0xDCCB, 0xDC50, 0xDBB1, 0xDAEF, 0xDA06, 0xD8F5, 0xD7BA, 0xD40A,\n    0xCCDA, 0xC404, 0xBB67, 0xB4DE, 0xB247, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0031, 0x0062, 0x0000,\n    0xFF1C, 0xFE29, 0xFD29, 0xFC1D, 0xFB06, 0xF9E6, 0xF8BD, 0xF78D,\n    0xF657, 0xF51C, 0xF3DD, 0xF29B, 0xF158, 0xF014, 0xEED1, 0xED90,\n    0xEC52, 0xEB19, 0xE9E4, 0xE8B7, 0xE791, 0xE674, 0xE561, 0xE459,\n    0xE35D, 0xE26F, 0xE190, 0xE0C0, 0xE002, 0xDF55, 0xDEBC, 0xDE37,\n    0xDDC8, 0xDD6F, 0xDD2E, 0xDD07, 0xDCF9, 0xE06A, 0xE8B4, 0xF2C5,\n    0xFB8E, 0x0000, 0x0125, 0x0217, 0x02D8, 0x036C, 0x03D7, 0x041C,\n    0x043F, 0x0444, 0x042E, 0x0401, 0x03C1, 0x0371, 0x0315, 0x02B0,\n    0x0246, 0x01DB, 0x0173, 0x0111, 0x00B8, 0x006D, 0x0032, 0x000D,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x4033, 0x4067, 0x3FFF, 0x3F0E, 0x3E0D, 0x3CFF, 0x3BE4,\n    0x3ABE, 0x398E, 0x3855, 0x3714, 0x35CD, 0x3480, 0x332F, 0x31DC,\n    0x3087, 0x2F31, 0x2DDD, 0x2C8A, 0x2B3B, 0x29F0, 0x28AA, 0x276C,\n    0x2636, 0x2509, 0x23E7, 0x22D1, 0x21C7, 0x20CC, 0x1FE0, 0x1F05,\n    0x1E3C, 0x1D86, 0x1CE4, 0x1C58, 0x1BE2, 0x1B85, 0x1B41, 0x1B17,\n    0x1B09, 0x1EAA, 0x2769, 0x3208, 0x3B4E, 0x3FFF, 0x4135, 0x4234,\n    0x4300, 0x439C, 0x440D, 0x4456, 0x447B, 0x4480, 0x4469, 0x4439,\n    0x43F6, 0x43A1, 0x4340, 0x42D5, 0x4266, 0x41F5, 0x4187, 0x411F,\n    0x40C2, 0x4072, 0x4035, 0x400D, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x003D, 0x007B, 0x0000,\n    0xFEE0, 0xFDAE, 0xFC6C, 0xFB1A, 0xF9BB, 0xF850, 0xF6DA, 0xF55B,\n    0xF3D4, 0xF247, 0xF0B5, 0xEF20, 0xED89, 0xEBF1, 0xEA5A, 0xE8C6,\n    0xE735, 0xE5AA, 0xE426, 0xE2AA, 0xE138, 0xDFD1, 0xDE76, 0xDD2A,\n    0xDBED, 0xDAC1, 0xD9A8, 0xD8A2, 0xD7B2, 0xD6D8, 0xD617, 0xD570,\n    0xD4E4, 0xD474, 0xD423, 0xD3F1, 0xD3E0, 0xD836, 0xE2A6, 0xEF55,\n    0xFA67, 0x0000, 0x0172, 0x02A2, 0x0395, 0x0450, 0x04D6, 0x052D,\n    0x055A, 0x0560, 0x0544, 0x050C, 0x04BB, 0x0456, 0x03E2, 0x0363,\n    0x02DE, 0x0257, 0x01D3, 0x0158, 0x00E8, 0x0089, 0x0040, 0x0010,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x011E, 0x043C, 0x08F9,\n    0x0EF9, 0x15DC, 0x1D44, 0x24D3, 0x2C2A, 0x32EC, 0x38BA, 0x3D35,\n    0x3FFF, 0x41AA, 0x4308, 0x4421, 0x44F8, 0x4593, 0x45F7, 0x462B,\n    0x4632, 0x4612, 0x45D1, 0x4573, 0x44FF, 0x4479, 0x43E7, 0x434D,\n    0x42B2, 0x421A, 0x418C, 0x410B, 0x409E, 0x4049, 0x4012, 0x3FFF,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x4003, 0x400E, 0x4020,\n    0x4038, 0x4055, 0x4078, 0x409F, 0x40C9, 0x40F7, 0x4127, 0x4159,\n    0x418D, 0x41C2, 0x41F6, 0x422A, 0x425E, 0x428F, 0x42BF, 0x42EC,\n    0x4315, 0x433A, 0x435B, 0x4377, 0x438D, 0x439D, 0x43A6, 0x43A7,\n    0x43A0, 0x4390, 0x4378, 0x4355, 0x4328, 0x42F0, 0x42AC, 0x425C,\n    0x41FF, 0x4195, 0x411C, 0x4095, 0x3FFF, 0x3F2B, 0x3DF0, 0x3C58,\n    0x3A6A, 0x3830, 0x35B3, 0x32FB, 0x3011, 0x2CFD, 0x29C9, 0x267D,\n    0x2321, 0x1FC0, 0x1B13, 0x149A, 0x0D7D, 0x06E9, 0x0206, 0x0001,\n    0x3FFF, 0x0000, 0x011E, 0x043C, 0x08F9, 0x0EF9, 0x15DC, 0x1D44,\n    0x24D3, 0x2C2A, 0x32EC, 0x38BA, 0x3D35, 0x3FFF, 0x41AA, 0x4308,\n    0x4421, 0x44F8, 0x4593, 0x45F7, 0x462B, 0x4632, 0x4612, 0x45D1,\n    0x4573, 0x44FF, 0x4479, 0x43E7, 0x434D, 0x42B2, 0x421A, 0x418C,\n    0x410B, 0x409E, 0x4049, 0x4012, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x3FFF, 0x4003, 0x400E, 0x4020, 0x4038, 0x4055, 0x4078,\n    0x409F, 0x40C9, 0x40F7, 0x4127, 0x4159, 0x418D, 0x41C2, 0x41F6,\n    0x422A, 0x425E, 0x428F, 0x42BF, 0x42EC, 0x4315, 0x433A, 0x435B,\n    0x4377, 0x438D, 0x439D, 0x43A6, 0x43A7, 0x43A0, 0x4390, 0x4378,\n    0x4355, 0x4328, 0x42F0, 0x42AC, 0x425C, 0x41FF, 0x4195, 0x411C,\n    0x4095, 0x3FFF, 0x3F2B, 0x3DF0, 0x3C58, 0x3A6A, 0x3830, 0x35B3,\n    0x32FB, 0x3011, 0x2CFD, 0x29C9, 0x267D, 0x2321, 0x1FC0, 0x1B13,\n    0x149A, 0x0D7D, 0x06E9, 0x0206, 0x0001, 0x3FFF, 0x3FFF, 0x3FFF,\n};\n\n// 0x0501299C\nstatic const u16 ukiki_seg5_animindex_0501299C[] = {\n    0x0001, 0x0000, 0x0064, 0x0001, 0x0064, 0x0065, 0x0064, 0x00C9, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x12C5, 0x0001, 0x12C6, 0x0001, 0x12C7,\n    0x0064, 0x012D, 0x0064, 0x0191, 0x0064, 0x01F5,\n    0x0064, 0x11FC, 0x0001, 0x1260, 0x0064, 0x1261,\n    0x0064, 0x03E9, 0x0064, 0x044D, 0x0064, 0x04B1,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0064, 0x0385,\n    0x0064, 0x0259, 0x0064, 0x02BD, 0x0064, 0x0321,\n    0x0064, 0x10D0, 0x0064, 0x1134, 0x0064, 0x1198,\n    0x0064, 0x06A5, 0x0064, 0x0709, 0x0064, 0x076D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0064, 0x0641,\n    0x0064, 0x0515, 0x0064, 0x0579, 0x0064, 0x05DD,\n    0x0001, 0x0000, 0x0001, 0x10CF, 0x0001, 0x0000,\n    0x0064, 0x0961, 0x0064, 0x09C5, 0x0064, 0x0A29,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0064, 0x08FD,\n    0x0064, 0x07D1, 0x0064, 0x0835, 0x0064, 0x0899,\n    0x0001, 0x0000, 0x0001, 0x10CE, 0x0001, 0x0000,\n    0x0064, 0x0C1D, 0x0064, 0x0C81, 0x0064, 0x0CE5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0064, 0x0BB9,\n    0x0064, 0x0A8D, 0x0064, 0x0AF1, 0x0064, 0x0B55,\n    0x0001, 0x0000, 0x0001, 0x10CD, 0x0001, 0x0000,\n    0x0064, 0x0FA1, 0x0064, 0x1005, 0x0064, 0x1069,\n    0x0064, 0x0E75, 0x0064, 0x0ED9, 0x0064, 0x0F3D,\n    0x0064, 0x0D49, 0x0064, 0x0DAD, 0x0064, 0x0E11,\n};\n\n// 0x05012ABC\nstatic const struct Animation ukiki_seg5_anim_05012ABC = {\n    0,\n    0,\n    0,\n    0,\n    0x64,\n    ANIMINDEX_NUMPARTS(ukiki_seg5_animindex_0501299C),\n    ukiki_seg5_animvalue_0501040C,\n    ukiki_seg5_animindex_0501299C,\n    0,\n};\n"
  },
  {
    "path": "actors/ukiki/anims/anim_05014BE4.inc.c",
    "content": "// 0x05012AD4\nstatic const s16 ukiki_seg5_animvalue_05012AD4[] = {\n    0x0000, 0x0000, 0x0003, 0x000C, 0x0016, 0x001D, 0x001D, 0x0013,\n    0x0000, 0xFFEC, 0xFFDC, 0xFFCF, 0xFFC3, 0xFFBE, 0xFFBE, 0xFFBF,\n    0xFFC2, 0xFFC5, 0xFFC9, 0xFFCC, 0xFFD0, 0xFFD3, 0xFFD8, 0xFFDC,\n    0xFFE0, 0xFFE3, 0xFFE4, 0xFFE1, 0xFFDA, 0xFFD3, 0xFFD0, 0xFFD1,\n    0xFFD5, 0xFFDB, 0xFFE0, 0xFFE4, 0xFFE5, 0xFFE2, 0xFFDA, 0xFFD3,\n    0xFFD0, 0xFFD2, 0xFFD6, 0xFFDB, 0xFFE1, 0xFFE5, 0xFFE6, 0xFFE3,\n    0xFFDB, 0xFFD3, 0xFFD0, 0xFFD1, 0xFFD4, 0xFFD8, 0xFFDD, 0xFFE1,\n    0xFFE4, 0xFFE5, 0xFFE2, 0xFFDA, 0xFFD3, 0xFFD0, 0xFFD3, 0xFFD9,\n    0xFFE0, 0xFFE5, 0xFFE6, 0xFFE4, 0xFFE3, 0xFFE4, 0xFFE8, 0xFFEF,\n    0xFFF5, 0xFFFB, 0xFFFF, 0x0001, 0x0003, 0x0005, 0x0007, 0x0008,\n    0x0009, 0x0009, 0x0008, 0x0005, 0x0001, 0x0000, 0x0067, 0x0071,\n    0x0089, 0x00A9, 0x00C9, 0x00E2, 0x00F4, 0x0102, 0x010E, 0x0115,\n    0x0117, 0x0113, 0x0110, 0x0110, 0x0111, 0x0112, 0x0113, 0x0114,\n    0x0114, 0x0114, 0x0113, 0x0112, 0x0110, 0x010E, 0x010C, 0x010C,\n    0x010D, 0x0110, 0x0113, 0x0114, 0x0114, 0x0112, 0x0110, 0x010F,\n    0x010D, 0x010D, 0x010E, 0x0111, 0x0114, 0x0115, 0x0115, 0x0114,\n    0x0112, 0x0110, 0x010F, 0x010E, 0x010F, 0x0112, 0x0114, 0x0115,\n    0x0115, 0x0114, 0x0113, 0x0111, 0x0110, 0x010F, 0x010E, 0x010F,\n    0x0112, 0x0114, 0x0115, 0x0115, 0x0113, 0x0111, 0x010E, 0x010C,\n    0x010A, 0x0107, 0x0103, 0x00FE, 0x00F7, 0x00F0, 0x00E7, 0x00DC,\n    0x00D0, 0x00C3, 0x00B6, 0x00AB, 0x00A2, 0x009A, 0x0092, 0x0089,\n    0x007C, 0x006E, 0x0067, 0x0000, 0x0000, 0xFFFF, 0x0000, 0x0001,\n    0x0007, 0x0012, 0x0022, 0x0034, 0x0044, 0x0056, 0x0068, 0x0072,\n    0x0073, 0x0071, 0x006D, 0x0068, 0x0063, 0x0060, 0x0060, 0x0063,\n    0x006A, 0x0072, 0x007A, 0x0080, 0x0082, 0x007D, 0x0071, 0x0065,\n    0x0060, 0x0062, 0x0067, 0x006E, 0x0075, 0x007B, 0x007D, 0x0078,\n    0x006E, 0x0064, 0x0060, 0x0062, 0x0068, 0x0070, 0x0077, 0x007D,\n    0x007F, 0x007B, 0x0070, 0x0065, 0x0060, 0x0061, 0x0066, 0x006C,\n    0x0072, 0x0078, 0x007C, 0x007E, 0x0079, 0x006F, 0x0065, 0x0060,\n    0x0064, 0x006D, 0x0076, 0x007A, 0x007A, 0x0077, 0x0071, 0x0068,\n    0x0058, 0x0044, 0x002F, 0x001E, 0x0010, 0x0003, 0xFFF9, 0xFFF0,\n    0xFFEB, 0xFFEE, 0xFFF7, 0x0001, 0x0008, 0x0007, 0x0002, 0x0000,\n    0x1EF6, 0x2105, 0x269D, 0x2EE4, 0x38FD, 0x440F, 0x4F3C, 0x59AA,\n    0x627C, 0x68D8, 0x6D32, 0x70A5, 0x7353, 0x755A, 0x76DC, 0x77FA,\n    0x78D3, 0x7988, 0x7A39, 0x7B08, 0x7BC3, 0x7C30, 0x7C5B, 0x7C55,\n    0x7C29, 0x7BE6, 0x7B99, 0x7B52, 0x7B1C, 0x7B08, 0x7B08, 0x7B08,\n    0x7B08, 0x7B08, 0x7B08, 0x7B08, 0x7B08, 0x7B08, 0x7B08, 0x7B08,\n    0x7B08, 0x7B08, 0x7B08, 0x7B08, 0x7B08, 0x7B08, 0x7B08, 0x7B08,\n    0x7B08, 0x7B08, 0x7B08, 0x7B08, 0x7B08, 0x7B08, 0x7B08, 0x7B08,\n    0x7B08, 0x7B08, 0x7B08, 0x7B08, 0x7B08, 0x7B08, 0x7B08, 0x7B08,\n    0x7B08, 0x7A5D, 0x7874, 0x7570, 0x7174, 0x6CA5, 0x6725, 0x6117,\n    0x5A9F, 0x53E1, 0x4CFF, 0x461D, 0x3F5F, 0x38E7, 0x32D9, 0x2D59,\n    0x288A, 0x248E, 0x218A, 0x1FA1, 0x1EF6, 0x0000, 0xFF70, 0xFDE9,\n    0xFBA7, 0xF8EA, 0xF5EF, 0xF2F4, 0xF036, 0xEDF3, 0xEC6A, 0xEB7F,\n    0xEAE7, 0xEA92, 0xEA75, 0xEA7F, 0xEAA5, 0xEAD6, 0xEB07, 0xEB27,\n    0xEB2B, 0xEB1E, 0xEB17, 0xEB14, 0xEB14, 0xEB17, 0xEB1C, 0xEB21,\n    0xEB26, 0xEB29, 0xEB2B, 0xEB2B, 0xEB2B, 0xEB2B, 0xEB2B, 0xEB2B,\n    0xEB2B, 0xEB2B, 0xEB2B, 0xEB2B, 0xEB2B, 0xEB2B, 0xEB2B, 0xEB2B,\n    0xEB2B, 0xEB2B, 0xEB2B, 0xEB2B, 0xEB2B, 0xEB2B, 0xEB2B, 0xEB2B,\n    0xEB2B, 0xEB2B, 0xEB2B, 0xEB2B, 0xEB2B, 0xEB2B, 0xEB2B, 0xEB2B,\n    0xEB2B, 0xEB2B, 0xEB2B, 0xEB2B, 0xEB2B, 0xEB2B, 0xEB52, 0xEBC0,\n    0xEC6F, 0xED56, 0xEE6C, 0xEFAB, 0xF10A, 0xF280, 0xF407, 0xF596,\n    0xF724, 0xF8AB, 0xFA22, 0xFB80, 0xFCBF, 0xFDD6, 0xFEBC, 0xFF6B,\n    0xFFDA, 0x0000, 0x0000, 0x00FD, 0x03AB, 0x0797, 0x0C52, 0x1169,\n    0x166D, 0x1AEB, 0x1E73, 0x2095, 0x216D, 0x217F, 0x20F2, 0x1FED,\n    0x1E95, 0x1D12, 0x1B8B, 0x1A26, 0x1909, 0x185C, 0x1807, 0x17D6,\n    0x17C2, 0x17C5, 0x17D9, 0x17F8, 0x181A, 0x183B, 0x1853, 0x185C,\n    0x185C, 0x185C, 0x185C, 0x185C, 0x185C, 0x185C, 0x185C, 0x185C,\n    0x185C, 0x185C, 0x185C, 0x185C, 0x185C, 0x185C, 0x185C, 0x185C,\n    0x185C, 0x185C, 0x185C, 0x185C, 0x185C, 0x185C, 0x185C, 0x185C,\n    0x185C, 0x185C, 0x185C, 0x185C, 0x185C, 0x185C, 0x185C, 0x185C,\n    0x185C, 0x185C, 0x185C, 0x182F, 0x17AD, 0x16E1, 0x15D3, 0x148E,\n    0x1319, 0x117F, 0x0FC9, 0x0E00, 0x0C2E, 0x0A5C, 0x0893, 0x06DD,\n    0x0543, 0x03CE, 0x0288, 0x017A, 0x00AE, 0x002D, 0x0000, 0x0000,\n    0x0036, 0x00C3, 0x0188, 0x0263, 0x0335, 0x03DE, 0x043D, 0x0433,\n    0x03A0, 0x0180, 0xFDAE, 0xF950, 0xF58E, 0xF392, 0xF401, 0xF615,\n    0xF8D7, 0xFB4C, 0xFC7B, 0xFC83, 0xFC33, 0xFBA1, 0xFAE0, 0xFA04,\n    0xF923, 0xF850, 0xF7A1, 0xF728, 0xF6FC, 0xF715, 0xF75B, 0xF7C8,\n    0xF853, 0xF8F6, 0xF9A8, 0xFA63, 0xFB1F, 0xFBD4, 0xFC7B, 0xFD2E,\n    0xFDFD, 0xFED2, 0xFF99, 0x003A, 0x00A4, 0x0087, 0xFFF3, 0xFF5D,\n    0xFF3A, 0xFFA7, 0x0058, 0x0130, 0x020A, 0x02C7, 0x0344, 0x0361,\n    0x029F, 0x0104, 0xFF3A, 0xFDE5, 0xFD2E, 0xFCBF, 0xFC8A, 0xFC7B,\n    0xFC82, 0xFC95, 0xFCB2, 0xFCD9, 0xFD08, 0xFD3E, 0xFD79, 0xFDB9,\n    0xFDFB, 0xFE3E, 0xFE81, 0xFEC3, 0xFF03, 0xFF3E, 0xFF74, 0xFFA3,\n    0xFFCA, 0xFFE7, 0xFFFA, 0x0000, 0x0000, 0xFFA7, 0xFEB5, 0xFD4C,\n    0xFB94, 0xF9AF, 0xF7C2, 0xF5F3, 0xF465, 0xF33E, 0xF2A5, 0xF28B,\n    0xF2BE, 0xF310, 0xF34E, 0xF38E, 0xF3F0, 0xF456, 0xF49F, 0xF4AD,\n    0xF483, 0xF43F, 0xF3E7, 0xF384, 0xF31B, 0xF2B5, 0xF259, 0xF20E,\n    0xF1DC, 0xF1CA, 0xF1DF, 0xF21A, 0xF270, 0xF2D8, 0xF349, 0xF3B9,\n    0xF41D, 0xF46E, 0xF4A1, 0xF4AD, 0xF464, 0xF3BD, 0xF2E8, 0xF212,\n    0xF16A, 0xF11F, 0xF1DC, 0xF364, 0xF48E, 0xF42E, 0xF20E, 0xEF04,\n    0xEB74, 0xE7C5, 0xE45E, 0xE1A5, 0xE000, 0xE06A, 0xE2D9, 0xE630,\n    0xE950, 0xEC93, 0xF050, 0xF365, 0xF4AD, 0xF4C2, 0xF4FE, 0xF55D,\n    0xF5DB, 0xF672, 0xF71F, 0xF7DE, 0xF8AA, 0xF97E, 0xFA57, 0xFB30,\n    0xFC04, 0xFCD0, 0xFD8E, 0xFE3B, 0xFED3, 0xFF50, 0xFFAF, 0xFFEB,\n    0x0000, 0x292E, 0x270D, 0x213E, 0x189F, 0x0E0F, 0x026C, 0xF697,\n    0xEB6C, 0xE1C9, 0xDA8E, 0xD69F, 0xD590, 0xD64F, 0xD7C4, 0xD8DD,\n    0xDA02, 0xDBED, 0xDDFF, 0xDF96, 0xE015, 0xDF8E, 0xDE95, 0xDD48,\n    0xDBC6, 0xDA2C, 0xD898, 0xD72A, 0xD5FE, 0xD535, 0xD4EB, 0xD53F,\n    0xD624, 0xD773, 0xD908, 0xDABE, 0xDC6E, 0xDDF4, 0xDF2B, 0xDFED,\n    0xE015, 0xDF08, 0xDCA9, 0xD991, 0xD658, 0xD396, 0xD1E3, 0xD1EC,\n    0xD351, 0xD51C, 0xD655, 0xD6DF, 0xD748, 0xD79B, 0xD7E1, 0xD824,\n    0xD86D, 0xD8C6, 0xD921, 0xD97D, 0xD9FB, 0xDABD, 0xDC19, 0xDDE1,\n    0xDF6C, 0xE015, 0xE09C, 0xE221, 0xE486, 0xE7AF, 0xEB81, 0xEFDF,\n    0xF4AE, 0xF9D0, 0xFF2B, 0x04A1, 0x0A18, 0x0F73, 0x1495, 0x1964,\n    0x1DC2, 0x2194, 0x24BD, 0x2722, 0x28A6, 0x292E, 0x0000, 0xFC1B,\n    0xF188, 0xE1F8, 0xCF1A, 0xBA9C, 0xA62D, 0x937C, 0x8438, 0x7A0D,\n    0x745A, 0x710D, 0x6FB9, 0x6FF2, 0x714C, 0x735A, 0x75B1, 0x77E2,\n    0x7983, 0x7A27, 0x7A28, 0x7A29, 0x7A29, 0x7A29, 0x7A29, 0x7A29,\n    0x7A28, 0x7A28, 0x7A28, 0x7A27, 0x7A27, 0x7A27, 0x7A27, 0x7A27,\n    0x7A27, 0x7A27, 0x7A27, 0x7A27, 0x7A27, 0x7A27, 0x7A27, 0x7A27,\n    0x7A27, 0x7A27, 0x7A27, 0x7A27, 0x7A27, 0x7A27, 0x7A27, 0x7A27,\n    0x7A27, 0x7A27, 0x7A27, 0x7A27, 0x7A27, 0x7A27, 0x7A27, 0x7A27,\n    0x7A27, 0x7A27, 0x7A27, 0x7A27, 0x7A27, 0x7A27, 0x7A27, 0x7B20,\n    0x7DE7, 0x824C, 0x8816, 0x8F14, 0x9713, 0x9FE0, 0xA947, 0xB314,\n    0xBD15, 0xC717, 0xD0E4, 0xDA4B, 0xE318, 0xEB17, 0xF215, 0xF7DF,\n    0xFC41, 0xFF08, 0x0000, 0x0000, 0xFFFA, 0xFFE9, 0xFFD1, 0xFFB6,\n    0xFF9B, 0xFF83, 0xFF72, 0xFF6C, 0xFF75, 0xFF8D, 0xFFB2, 0xFFE1,\n    0x0016, 0x004F, 0x0089, 0x00C1, 0x00F3, 0x011C, 0x013A, 0x014C,\n    0x0157, 0x015B, 0x015A, 0x0156, 0x0150, 0x0148, 0x0141, 0x013C,\n    0x013A, 0x013A, 0x013A, 0x013A, 0x013A, 0x013A, 0x013A, 0x013A,\n    0x013A, 0x013A, 0x013A, 0x013A, 0x013A, 0x013A, 0x013A, 0x013A,\n    0x013A, 0x013A, 0x013A, 0x013A, 0x013A, 0x013A, 0x013A, 0x013A,\n    0x013A, 0x013A, 0x013A, 0x013A, 0x013A, 0x013A, 0x013A, 0x013A,\n    0x013A, 0x013A, 0x013A, 0x013A, 0x0138, 0x0131, 0x0127, 0x0119,\n    0x0109, 0x00F6, 0x00E1, 0x00CB, 0x00B4, 0x009D, 0x0085, 0x006E,\n    0x0058, 0x0043, 0x0031, 0x0020, 0x0013, 0x0008, 0x0002, 0x0000,\n    0x32F8, 0x31AB, 0x2E27, 0x2901, 0x22CD, 0x1C22, 0x1593, 0x0FB7,\n    0x0B21, 0x0867, 0x0763, 0x076B, 0x0848, 0x09C6, 0x0BB2, 0x0DD6,\n    0x0FFE, 0x11F5, 0x1387, 0x147F, 0x14FC, 0x1544, 0x1561, 0x155D,\n    0x153F, 0x1513, 0x14E0, 0x14B0, 0x148D, 0x147F, 0x147F, 0x147F,\n    0x147F, 0x147F, 0x147F, 0x147F, 0x147F, 0x147F, 0x147F, 0x147F,\n    0x147F, 0x147F, 0x147F, 0x147F, 0x147F, 0x147F, 0x147F, 0x147F,\n    0x147F, 0x147F, 0x147F, 0x147F, 0x147F, 0x147F, 0x147F, 0x147F,\n    0x147F, 0x147F, 0x147F, 0x147F, 0x147F, 0x147F, 0x147F, 0x147F,\n    0x147F, 0x14B8, 0x155A, 0x1659, 0x17AB, 0x1942, 0x1B14, 0x1D15,\n    0x1F39, 0x2175, 0x23BC, 0x2603, 0x283E, 0x2A62, 0x2C63, 0x2E35,\n    0x2FCD, 0x311E, 0x321E, 0x32C0, 0x32F8, 0xE437, 0xE42B, 0xE40D,\n    0xE3E6, 0xE3BF, 0xE3A2, 0xE396, 0xE3A5, 0xE3D7, 0xE437, 0xE4CE,\n    0xE59B, 0xE690, 0xE79F, 0xE8BA, 0xE9D5, 0xEAE2, 0xEBD3, 0xEC9C,\n    0xED2D, 0xED7D, 0xED91, 0xED79, 0xED46, 0xED06, 0xECCA, 0xECA0,\n    0xEC98, 0xECC2, 0xED2D, 0xEDF5, 0xEF17, 0xF079, 0xF202, 0xF397,\n    0xF51D, 0xF67A, 0xF794, 0xF851, 0xF896, 0xF7E6, 0xF622, 0xF3BB,\n    0xF124, 0xEECF, 0xED2D, 0xEC8A, 0xEC9C, 0xECF7, 0xED2D, 0xEC63,\n    0xEA5A, 0xE791, 0xE488, 0xE1BE, 0xDFB5, 0xDEEB, 0xE125, 0xE60C,\n    0xEAF3, 0xED2D, 0xED2D, 0xED2D, 0xED2D, 0xED2D, 0xED1D, 0xECED,\n    0xECA2, 0xEC3F, 0xEBC7, 0xEB3E, 0xEAA7, 0xEA06, 0xE95E, 0xE8B2,\n    0xE806, 0xE75E, 0xE6BD, 0xE626, 0xE59D, 0xE525, 0xE4C2, 0xE477,\n    0xE447, 0xE437, 0x2555, 0x230B, 0x1CF6, 0x1442, 0x0A1B, 0xFFAF,\n    0xF627, 0xEEB2, 0xEA7B, 0xEAAF, 0xEF71, 0xF79E, 0x0276, 0x0F3C,\n    0x1D30, 0x2B94, 0x39A8, 0x46AE, 0x51E7, 0x5A94, 0x60E1, 0x65AC,\n    0x6942, 0x6BF0, 0x6E03, 0x6FC7, 0x7189, 0x7395, 0x763A, 0x79C2,\n    0x7EAB, 0x84ED, 0x8C06, 0x937C, 0x9AD4, 0xA190, 0xA734, 0xAB44,\n    0xAD43, 0xACB5, 0xA660, 0x9946, 0x8846, 0x763C, 0x660C, 0x5A94,\n    0x55FD, 0x567F, 0x590C, 0x5A94, 0x5A94, 0x5A94, 0x5A94, 0x5A94,\n    0x5A94, 0x5A94, 0x5A94, 0x5A94, 0x5A94, 0x5A94, 0x5A94, 0x5A94,\n    0x5A94, 0x5A94, 0x5A94, 0x5A31, 0x5916, 0x5758, 0x550A, 0x5242,\n    0x4F13, 0x4B93, 0x47D6, 0x43EF, 0x3FF4, 0x3BF9, 0x3813, 0x3455,\n    0x30D5, 0x2DA7, 0x2ADF, 0x2891, 0x26D3, 0x25B8, 0x2555, 0xF666,\n    0xF4EF, 0xF0F0, 0xEB06, 0xE3CC, 0xDBDE, 0xD3D6, 0xCC52, 0xC5EB,\n    0xC13E, 0xBE01, 0xBB71, 0xB970, 0xB7E3, 0xB6AC, 0xB5B0, 0xB4D1,\n    0xB3F4, 0xB2FB, 0xB1CA, 0xB060, 0xAED8, 0xAD44, 0xABB5, 0xAA3C,\n    0xA8EA, 0xA7D1, 0xA702, 0xA68E, 0xA685, 0xA70C, 0xA824, 0xA9AC,\n    0xAB82, 0xAD87, 0xAF9A, 0xB198, 0xB362, 0xB4D7, 0xB5D5, 0xB617,\n    0xB59B, 0xB4A7, 0xB384, 0xB278, 0xB1CA, 0xB190, 0xB197, 0xB1B7,\n    0xB1CA, 0xB1CA, 0xB1CA, 0xB1CA, 0xB1CA, 0xB1CA, 0xB1CA, 0xB1CA,\n    0xB1CA, 0xB1CA, 0xB1CA, 0xB1CA, 0xB1CA, 0xB1CA, 0xB1CA, 0xB1CA,\n    0xB24A, 0xB3B6, 0xB5F5, 0xB8ED, 0xBC83, 0xC09C, 0xC51F, 0xC9F1,\n    0xCEF7, 0xD418, 0xD939, 0xDE40, 0xE311, 0xE794, 0xEBAE, 0xEF43,\n    0xF23B, 0xF47A, 0xF5E7, 0xF666, 0x908B, 0x9211, 0x9614, 0x9BBA,\n    0xA22C, 0xA892, 0xAE13, 0xB1D7, 0xB305, 0xB0C6, 0xAAD5, 0xA1F0,\n    0x96C0, 0x89EF, 0x7C24, 0x6E0E, 0x6053, 0x539E, 0x4899, 0x3FEC,\n    0x397A, 0x3482, 0x30BA, 0x2DD7, 0x2B90, 0x299A, 0x27AC, 0x257A,\n    0x22BA, 0x1F23, 0x1A39, 0x1404, 0x0CFE, 0x05A3, 0xFE6D, 0xF7D4,\n    0xF255, 0xEE69, 0xEC8C, 0xED37, 0xF3A7, 0x00DD, 0x11F9, 0x241B,\n    0x3461, 0x3FEC, 0x448B, 0x4408, 0x4176, 0x3FEC, 0x3FEC, 0x3FEC,\n    0x3FEC, 0x3FEC, 0x3FEC, 0x3FEC, 0x3FEC, 0x3FEC, 0x3FEC, 0x3FEC,\n    0x3FEC, 0x3FEC, 0x3FEC, 0x3FEC, 0x3FEC, 0x4081, 0x422E, 0x44D1,\n    0x484E, 0x4C84, 0x5155, 0x56A2, 0x5C4C, 0x6233, 0x683A, 0x6E40,\n    0x7428, 0x79D2, 0x7F1F, 0x83F3, 0x8829, 0x8BA5, 0x8E49, 0x8FF5,\n    0x908B, 0x057F, 0x07CE, 0x0DAF, 0x1596, 0x1DF3, 0x2539, 0x2A50,\n    0x30F6, 0x3E5F, 0x4A87, 0x4FC4, 0x5259, 0x530B, 0x5292, 0x515B,\n    0x4FB1, 0x4DE1, 0x4C37, 0x4B00, 0x4A87, 0x4B29, 0x4CBC, 0x4EC9,\n    0x50D6, 0x5269, 0x530B, 0x51B6, 0x4EC9, 0x4BDC, 0x4A87, 0x4B29,\n    0x4CBC, 0x4EC9, 0x50D6, 0x5269, 0x530B, 0x51B6, 0x4EC9, 0x4BDC,\n    0x4A87, 0x4B29, 0x4CBC, 0x4EC9, 0x50D6, 0x5269, 0x530B, 0x51B6,\n    0x4EC9, 0x4BDC, 0x4A87, 0x4B00, 0x4C37, 0x4DE1, 0x4FB1, 0x515B,\n    0x5292, 0x530B, 0x51B6, 0x4EC9, 0x4BDC, 0x4A87, 0x4BDC, 0x4EC9,\n    0x51B6, 0x530B, 0x52CC, 0x5214, 0x50E5, 0x4F43, 0x4D33, 0x4AB8,\n    0x47D6, 0x4491, 0x4005, 0x39DD, 0x32ED, 0x2C0D, 0x2611, 0x2067,\n    0x1A40, 0x141A, 0x0E75, 0x09CF, 0x06A9, 0x057F, 0xFE7C, 0xFDFA,\n    0xFD13, 0xFCB5, 0xFDCF, 0x014F, 0x1086, 0x2196, 0x24B1, 0x2421,\n    0x25D7, 0x2797, 0x2864, 0x2828, 0x278C, 0x26B7, 0x25CF, 0x24F9,\n    0x245E, 0x2421, 0x2472, 0x253C, 0x2643, 0x2749, 0x2813, 0x2864,\n    0x27BA, 0x2643, 0x24CC, 0x2421, 0x2472, 0x253C, 0x2643, 0x2749,\n    0x2813, 0x2864, 0x27BA, 0x2643, 0x24CC, 0x2421, 0x2472, 0x253C,\n    0x2643, 0x2749, 0x2813, 0x2864, 0x27BA, 0x2643, 0x24CC, 0x2421,\n    0x245E, 0x24F9, 0x25CF, 0x26B7, 0x278C, 0x2828, 0x2864, 0x27BA,\n    0x2643, 0x24CC, 0x2421, 0x24CC, 0x2643, 0x27BA, 0x2864, 0x2850,\n    0x280D, 0x2794, 0x26DB, 0x25D9, 0x2486, 0x22D9, 0x20CA, 0x1D87,\n    0x18D9, 0x139E, 0x0EB4, 0x0AF7, 0x082C, 0x0593, 0x0340, 0x014B,\n    0xFFCB, 0xFED4, 0xFE7C, 0x27DE, 0x2577, 0x1F57, 0x171F, 0x0E6E,\n    0x06E6, 0xFECD, 0xFAF7, 0x03DB, 0x0F62, 0x16F1, 0x1D3F, 0x1FE1,\n    0x1EF8, 0x1C9C, 0x1963, 0x15E0, 0x12A7, 0x104C, 0x0F62, 0x109B,\n    0x13A9, 0x17A2, 0x1B9A, 0x1EA9, 0x1FE1, 0x1D4E, 0x17A2, 0x11F6,\n    0x0F62, 0x109B, 0x13A9, 0x17A2, 0x1B9A, 0x1EA9, 0x1FE1, 0x1D4E,\n    0x17A2, 0x11F6, 0x0F62, 0x109B, 0x13A9, 0x17A2, 0x1B9A, 0x1EA9,\n    0x1FE1, 0x1D4E, 0x17A2, 0x11F6, 0x0F62, 0x104C, 0x12A7, 0x15E0,\n    0x1963, 0x1C9C, 0x1EF8, 0x1FE1, 0x1D4E, 0x17A2, 0x11F6, 0x0F62,\n    0x11F6, 0x17A2, 0x1D4E, 0x1FE1, 0x203D, 0x2122, 0x2248, 0x2369,\n    0x243E, 0x2480, 0x23E8, 0x222F, 0x1D22, 0x148D, 0x0B2C, 0x03BB,\n    0x00F6, 0x0376, 0x0928, 0x10BD, 0x18E7, 0x2059, 0x25C5, 0x27DE,\n    0x0000, 0x0001, 0x0007, 0x000F, 0x0018, 0x0022, 0x0030, 0x0040,\n    0x0051, 0x005D, 0x0064, 0x0065, 0x0065, 0x0065, 0x0064, 0x0062,\n    0x0060, 0x005F, 0x005E, 0x005D, 0x005E, 0x005F, 0x0061, 0x0063,\n    0x0064, 0x0065, 0x0064, 0x0061, 0x005F, 0x005D, 0x005E, 0x005F,\n    0x0061, 0x0063, 0x0064, 0x0065, 0x0064, 0x0061, 0x005F, 0x005D,\n    0x005E, 0x005F, 0x0061, 0x0063, 0x0064, 0x0065, 0x0064, 0x0061,\n    0x005F, 0x005D, 0x005E, 0x005F, 0x0060, 0x0062, 0x0064, 0x0065,\n    0x0065, 0x0064, 0x0061, 0x005F, 0x005D, 0x005F, 0x0061, 0x0064,\n    0x0065, 0x0064, 0x0062, 0x005E, 0x0059, 0x0054, 0x004E, 0x0048,\n    0x0042, 0x003B, 0x0032, 0x002A, 0x0021, 0x001B, 0x0015, 0x0010,\n    0x000B, 0x0006, 0x0003, 0x0000, 0x0000, 0x0000, 0xFFFE, 0xFFF6,\n    0xFFED, 0xFFE5, 0xFFE0, 0xFFDD, 0xFFDD, 0xFFDF, 0xFFE4, 0xFFF2,\n    0x0003, 0x000C, 0x000A, 0x0004, 0xFFFD, 0xFFF4, 0xFFEC, 0xFFE7,\n    0xFFE4, 0xFFE7, 0xFFEF, 0xFFF9, 0x0001, 0x0009, 0x000C, 0x0005,\n    0xFFF9, 0xFFEB, 0xFFE4, 0xFFE7, 0xFFEF, 0xFFF9, 0x0001, 0x0009,\n    0x000C, 0x0005, 0xFFF9, 0xFFEB, 0xFFE4, 0xFFE7, 0xFFEF, 0xFFF9,\n    0x0001, 0x0009, 0x000C, 0x0005, 0xFFF9, 0xFFEB, 0xFFE4, 0xFFE7,\n    0xFFEC, 0xFFF4, 0xFFFD, 0x0004, 0x000A, 0x000C, 0x0005, 0xFFF9,\n    0xFFEB, 0xFFE4, 0xFFEB, 0xFFF9, 0x0005, 0x000C, 0x000C, 0x000E,\n    0x0010, 0x0012, 0x0014, 0x0016, 0x0017, 0x0016, 0x0013, 0x000C,\n    0x0005, 0xFFFF, 0xFFFB, 0xFFFA, 0xFFFA, 0xFFFB, 0xFFFD, 0xFFFF,\n    0x0000, 0x0000, 0xDCE1, 0xDF7C, 0xE5DD, 0xEDDF, 0xF55D, 0xFA31,\n    0xFBAA, 0xFAFD, 0xF8D6, 0xF5E3, 0xEFF4, 0xE833, 0xE459, 0xE552,\n    0xE7D3, 0xEB40, 0xEEFC, 0xF269, 0xF4EA, 0xF5E3, 0xF496, 0xF157,\n    0xED1E, 0xE8E5, 0xE5A5, 0xE459, 0xE716, 0xED1E, 0xF325, 0xF5E3,\n    0xF496, 0xF157, 0xED1E, 0xE8E5, 0xE5A5, 0xE459, 0xE716, 0xED1E,\n    0xF325, 0xF5E3, 0xF496, 0xF157, 0xED1E, 0xE8E5, 0xE5A5, 0xE459,\n    0xE716, 0xED1E, 0xF325, 0xF5E3, 0xF4EA, 0xF269, 0xEEFC, 0xEB40,\n    0xE7D3, 0xE552, 0xE459, 0xE716, 0xED1E, 0xF325, 0xF5E3, 0xF325,\n    0xED1E, 0xE716, 0xE459, 0xE3B8, 0xE217, 0xDFDB, 0xDD6A, 0xDB28,\n    0xD97A, 0xD8C5, 0xD96E, 0xDD74, 0xE4F0, 0xED6A, 0xF46C, 0xF780,\n    0xF63C, 0xF284, 0xED4E, 0xE791, 0xE246, 0xDE64, 0xDCE1, 0xE468,\n    0xE261, 0xDD21, 0xD5E4, 0xCDE9, 0xC66D, 0xBDE4, 0xB4A1, 0xAC09,\n    0xA556, 0xA19D, 0x9F4B, 0x9E33, 0x9DE3, 0x9DF7, 0x9E4E, 0x9ECA,\n    0x9F49, 0x9FAD, 0x9FD5, 0x9FB6, 0x9F69, 0x9F04, 0x9E9F, 0x9E52,\n    0x9E33, 0x9E74, 0x9F04, 0x9F94, 0x9FD5, 0x9FB6, 0x9F69, 0x9F04,\n    0x9E9F, 0x9E52, 0x9E33, 0x9E74, 0x9F04, 0x9F94, 0x9FD5, 0x9FB6,\n    0x9F69, 0x9F04, 0x9E9F, 0x9E52, 0x9E33, 0x9E74, 0x9F04, 0x9F94,\n    0x9FD5, 0x9FBE, 0x9F82, 0x9F31, 0x9ED7, 0x9E86, 0x9E4A, 0x9E33,\n    0x9E74, 0x9F04, 0x9F94, 0x9FD5, 0x9F94, 0x9F04, 0x9E74, 0x9E33,\n    0x9EE9, 0xA0E1, 0xA3DA, 0xA794, 0xABD0, 0xB04C, 0xB4C8, 0xB904,\n    0xBDAB, 0xC32B, 0xC8E4, 0xCE39, 0xD28C, 0xD631, 0xD9C7, 0xDD1E,\n    0xE009, 0xE258, 0xE3DC, 0xE468, 0x0B3F, 0x0B57, 0x0BAE, 0x0C5B,\n    0x0D76, 0x0F16, 0x1389, 0x18A6, 0x1AAB, 0x1C10, 0x1ECD, 0x21AA,\n    0x229C, 0x2158, 0x1F34, 0x1C94, 0x19DB, 0x176E, 0x15B1, 0x1506,\n    0x1608, 0x188C, 0x1BD1, 0x1F16, 0x219A, 0x229C, 0x207C, 0x1BD1,\n    0x1725, 0x1506, 0x1608, 0x188C, 0x1BD1, 0x1F16, 0x219A, 0x229C,\n    0x207C, 0x1BD1, 0x1725, 0x1506, 0x1608, 0x188C, 0x1BD1, 0x1F16,\n    0x219A, 0x229C, 0x207C, 0x1BD1, 0x1725, 0x1506, 0x15C7, 0x17B7,\n    0x1A5F, 0x1D43, 0x1FEA, 0x21DB, 0x229C, 0x207C, 0x1BD1, 0x1725,\n    0x1506, 0x1725, 0x1BD1, 0x207C, 0x229C, 0x2269, 0x21D5, 0x20EA,\n    0x1FAF, 0x1E2F, 0x1C71, 0x1A7E, 0x185F, 0x153D, 0x10E1, 0x0C41,\n    0x0855, 0x0615, 0x0590, 0x05FD, 0x070B, 0x0869, 0x09C6, 0x0AD3,\n    0x0B3F, 0x9426, 0x915D, 0x8A23, 0x802F, 0x7530, 0x6AE0, 0x5F14,\n    0x5250, 0x46B8, 0x3D8D, 0x37DB, 0x33E4, 0x31E1, 0x314A, 0x314E,\n    0x31BD, 0x3268, 0x331D, 0x33AD, 0x33E8, 0x33C2, 0x3362, 0x32E5,\n    0x3268, 0x3208, 0x31E1, 0x3232, 0x32E5, 0x3397, 0x33E8, 0x33C2,\n    0x3362, 0x32E5, 0x3268, 0x3208, 0x31E1, 0x3232, 0x32E5, 0x3397,\n    0x33E8, 0x33C2, 0x3362, 0x32E5, 0x3268, 0x3208, 0x31E1, 0x3232,\n    0x32E5, 0x3397, 0x33E8, 0x33CC, 0x3381, 0x331C, 0x32AD, 0x3248,\n    0x31FE, 0x31E1, 0x3232, 0x32E5, 0x3397, 0x33E8, 0x3397, 0x32E5,\n    0x3232, 0x31E1, 0x32F7, 0x35F7, 0x3A7B, 0x401F, 0x4680, 0x4D37,\n    0x53E1, 0x5A18, 0x60D2, 0x68AC, 0x70C4, 0x7836, 0x7E1D, 0x82E6,\n    0x876D, 0x8B88, 0x8F09, 0x91C2, 0x9385, 0x9426, 0xF3F2, 0xF4C7,\n    0xF6CE, 0xF957, 0xFBB1, 0xFD2C, 0xFD59, 0xFCAA, 0xFBBF, 0xFB39,\n    0xFB23, 0xFB1B, 0xFB1D, 0xFB27, 0xFB37, 0xFB4A, 0xFB5D, 0xFB6E,\n    0xFB7A, 0xFB7E, 0xFB7B, 0xFB74, 0xFB6B, 0xFB5F, 0xFB53, 0xFB47,\n    0xFB3C, 0xFB33, 0xFB2D, 0xFB2A, 0xFB2D, 0xFB32, 0xFB3B, 0xFB45,\n    0xFB50, 0xFB5C, 0xFB67, 0xFB71, 0xFB79, 0xFB7E, 0xFB81, 0xFB83,\n    0xFB84, 0xFB85, 0xFB86, 0xFB86, 0xFB85, 0xFB85, 0xFB84, 0xFB83,\n    0xFB82, 0xFB81, 0xFB80, 0xFB7F, 0xFB7F, 0xFB7E, 0xFB7E, 0xFB7E,\n    0xFB7C, 0xFB78, 0xFB72, 0xFB69, 0xFB5B, 0xFB48, 0xFB30, 0xFB10,\n    0xFAE6, 0xFAB5, 0xFA82, 0xFA4D, 0xFA1B, 0xF9EF, 0xF9CA, 0xF9B1,\n    0xF9B4, 0xF9D8, 0xFA0D, 0xFA43, 0xFA6C, 0xFA77, 0xFA54, 0xF9F4,\n    0xF82B, 0xF564, 0xF3F2, 0x038F, 0x041A, 0x055D, 0x06CE, 0x07DE,\n    0x0804, 0x0679, 0x03A8, 0x00CB, 0xFF1F, 0xFE8B, 0xFE23, 0xFDE2,\n    0xFDC1, 0xFDBA, 0xFDC6, 0xFDDE, 0xFDFC, 0xFE1A, 0xFE31, 0xFE4F,\n    0xFE84, 0xFEC8, 0xFF17, 0xFF6A, 0xFFBC, 0x0005, 0x0041, 0x0069,\n    0x0078, 0x006A, 0x0042, 0x0007, 0xFFC0, 0xFF70, 0xFF1E, 0xFECF,\n    0xFE89, 0xFE53, 0xFE31, 0xFE1E, 0xFE0F, 0xFE05, 0xFDFE, 0xFDFB,\n    0xFDFA, 0xFDFC, 0xFE00, 0xFE06, 0xFE0C, 0xFE13, 0xFE1A, 0xFE21,\n    0xFE27, 0xFE2C, 0xFE30, 0xFE31, 0xFE49, 0xFE88, 0xFEE4, 0xFF4F,\n    0xFFBE, 0x0024, 0x0076, 0x00A9, 0x00B6, 0x00A4, 0x0080, 0x0051,\n    0x0023, 0x0000, 0xFFF2, 0x0002, 0x003B, 0x00B0, 0x0160, 0x0237,\n    0x0321, 0x040A, 0x04DF, 0x058C, 0x05FC, 0x057D, 0x0441, 0x038F,\n    0xAAC2, 0xB077, 0xBE4B, 0xCF4D, 0xDE8A, 0xE713, 0xE50C, 0xDBBE,\n    0xD0ED, 0xCA5A, 0xC805, 0xC616, 0xC486, 0xC350, 0xC26E, 0xC1DC,\n    0xC194, 0xC190, 0xC1CB, 0xC240, 0xC340, 0xC4FE, 0xC746, 0xC9E6,\n    0xCCAB, 0xCF61, 0xD1D6, 0xD3D7, 0xD52F, 0xD5AE, 0xD533, 0xD3E3,\n    0xD1EF, 0xCF88, 0xCCDD, 0xCA20, 0xC781, 0xC531, 0xC361, 0xC240,\n    0xC19D, 0xC121, 0xC0C9, 0xC091, 0xC075, 0xC071, 0xC082, 0xC0A3,\n    0xC0D1, 0xC108, 0xC144, 0xC181, 0xC1BB, 0xC1F0, 0xC21A, 0xC236,\n    0xC240, 0xC329, 0xC58D, 0xC8EF, 0xCCCF, 0xD0AE, 0xD40C, 0xD66B,\n    0xD74C, 0xD68B, 0xD495, 0xD1C0, 0xCE64, 0xCADA, 0xC777, 0xC494,\n    0xC287, 0xC1A9, 0xC293, 0xC534, 0xC8E5, 0xCD01, 0xD0E0, 0xD3DC,\n    0xD54F, 0xD493, 0xC8D2, 0xB525, 0xAAC2, 0x2D1D, 0x2A52, 0x2399,\n    0x1B70, 0x1455, 0x10C6, 0x134B, 0x1A18, 0x212F, 0x248F, 0x244E,\n    0x2349, 0x21AB, 0x1F9E, 0x1D4B, 0x1ADF, 0x1882, 0x165F, 0x14A1,\n    0x1372, 0x12C2, 0x125C, 0x1232, 0x1239, 0x1262, 0x12A1, 0x12E9,\n    0x132D, 0x135F, 0x1372, 0x1372, 0x1372, 0x1372, 0x1372, 0x1372,\n    0x1372, 0x1372, 0x1372, 0x1372, 0x1372, 0x1372, 0x1372, 0x1372,\n    0x1372, 0x1372, 0x1372, 0x1372, 0x1372, 0x1372, 0x1372, 0x1372,\n    0x1372, 0x1372, 0x1372, 0x1372, 0x1372, 0x1372, 0x1372, 0x1372,\n    0x1372, 0x1372, 0x1372, 0x1372, 0x1372, 0x1372, 0x144F, 0x169D,\n    0x19F1, 0x1DE2, 0x2203, 0x25EA, 0x292D, 0x2B5F, 0x2C17, 0x2AC9,\n    0x279C, 0x2332, 0x1E2E, 0x1932, 0x14E1, 0x11DC, 0x10C6, 0x1829,\n    0x25C9, 0x2D1D, 0xE969, 0xE9B6, 0xEA49, 0xEAA3, 0xEA47, 0xE8B5,\n    0xE4D4, 0xDF04, 0xD8FE, 0xD477, 0xD13A, 0xCDF9, 0xCAC0, 0xC7A0,\n    0xC4A7, 0xC1E4, 0xBF65, 0xBD3A, 0xBB72, 0xBA1A, 0xB90E, 0xB82A,\n    0xB77D, 0xB718, 0xB70C, 0xB769, 0xB841, 0xB9A4, 0xBBA2, 0xBE4C,\n    0xC2C1, 0xC993, 0xD1F6, 0xDB24, 0xE454, 0xECBC, 0xF395, 0xF816,\n    0xF976, 0xF6ED, 0xF0FC, 0xE8E2, 0xDEEC, 0xD36C, 0xC6B0, 0xB907,\n    0xAAC2, 0x9C30, 0x8DA0, 0x7F5F, 0x71C2, 0x6516, 0x59AA, 0x4FCE,\n    0x47D1, 0x4203, 0x3EB3, 0x3DBB, 0x3EA2, 0x413B, 0x455A, 0x4AD0,\n    0x5170, 0x590F, 0x617E, 0x6A92, 0x741B, 0x7DEF, 0x87E2, 0x91C2,\n    0x9B64, 0xA49C, 0xAD3C, 0xB518, 0xBD04, 0xC5B2, 0xCEC6, 0xD7E1,\n    0xE0A3, 0xE8B0, 0xEFA9, 0xF52F, 0xF436, 0xED80, 0xE969, 0xEB3A,\n    0xEEA5, 0xF6BA, 0x0035, 0x07D7, 0x0A5C, 0x042C, 0xF78D, 0xEA09,\n    0xE12D, 0xDCAC, 0xD88B, 0xD4CD, 0xD174, 0xCE82, 0xCBFB, 0xC9E1,\n    0xC837, 0xC6FF, 0xC63B, 0xC626, 0xC6DB, 0xC833, 0xCA07, 0xCC2E,\n    0xCE82, 0xD0DC, 0xD313, 0xD500, 0xD67B, 0xD7DE, 0xD982, 0xDB43,\n    0xDCFC, 0xDE87, 0xDFC1, 0xE084, 0xE0AB, 0xE011, 0xDE92, 0xDC35,\n    0xD92B, 0xD590, 0xD17D, 0xCD0C, 0xC85A, 0xC37E, 0xBE95, 0xB9B9,\n    0xB503, 0xB08F, 0xAC77, 0xA8D5, 0xA5C3, 0xA35D, 0xA1BB, 0xA0FA,\n    0xA10C, 0xA1CA, 0xA323, 0xA50A, 0xA76E, 0xAA42, 0xAD75, 0xB0F9,\n    0xB4BF, 0xB8B7, 0xBCD2, 0xC102, 0xC537, 0xC962, 0xCD74, 0xD15F,\n    0xD512, 0xD920, 0xDDF0, 0xE331, 0xE890, 0xEDBC, 0xF263, 0xF635,\n    0xF8DF, 0xF637, 0xEF34, 0xEB3A, 0x9744, 0x94B4, 0x8E8C, 0x8714,\n    0x8094, 0x7D55, 0x7F0B, 0x844A, 0x8AA2, 0x8FB0, 0x936D, 0x975F,\n    0x9B6A, 0x9F73, 0xA361, 0xA718, 0xAA7E, 0xAD79, 0xAFEC, 0xB1BF,\n    0xB31A, 0xB42F, 0xB4F3, 0xB559, 0xB555, 0xB4DA, 0xB3DD, 0xB252,\n    0xB02C, 0xAD5F, 0xA8BF, 0xA1B4, 0x990A, 0x8F8E, 0x860F, 0x7D57,\n    0x763A, 0x7182, 0x6FFC, 0x7277, 0x7864, 0x807C, 0x8A69, 0x95E1,\n    0xA296, 0xB03A, 0xBE80, 0xCD18, 0xDBB6, 0xEA0C, 0xF7CA, 0x04A3,\n    0x104B, 0x1A72, 0x22CA, 0x2906, 0x2CD8, 0x2E69, 0x2E32, 0x2C5F,\n    0x291A, 0x248D, 0x1EE3, 0x1847, 0x10E3, 0x08E2, 0x006E, 0xF7B3,\n    0xEEDA, 0xE60E, 0xDD79, 0xD547, 0xCDA2, 0xC6B5, 0xBFAF, 0xB7E2,\n    0xAFA8, 0xA75C, 0x9F59, 0x97FA, 0x9198, 0x8C90, 0x8D73, 0x938C,\n    0x9744, 0x0341, 0x02F0, 0x022C, 0x0137, 0x0055, 0xFFCA, 0xFFC2,\n    0x0011, 0x0074, 0x00A6, 0x00A4, 0x0097, 0x0084, 0x006B, 0x0050,\n    0x0034, 0x001B, 0x0007, 0xFFFB, 0xFFF8, 0xFFFC, 0x0004, 0x0010,\n    0x001F, 0x0031, 0x0044, 0x0059, 0x006E, 0x0083, 0x0097, 0x00AA,\n    0x00BB, 0x00C9, 0x00D3, 0x00DA, 0x00DD, 0x00BD, 0x0075, 0x0028,\n    0xFFF8, 0xFFE8, 0xFFE3, 0xFFE7, 0xFFEE, 0xFFF5, 0xFFF8, 0xFFF8,\n    0xFFF8, 0xFFF8, 0xFFF8, 0xFFF8, 0xFFF8, 0xFFF8, 0xFFF8, 0xFFF8,\n    0xFFF8, 0xFFF8, 0xFFF8, 0xFFF8, 0xFFF8, 0xFFF8, 0xFFF9, 0xFFFD,\n    0x0003, 0x000D, 0x0019, 0x0027, 0x0038, 0x004A, 0x005F, 0x0075,\n    0x008E, 0x00A7, 0x00C3, 0x00DF, 0x00FD, 0x011C, 0x013C, 0x015D,\n    0x017F, 0x01A1, 0x01C4, 0x0236, 0x02E6, 0x0341, 0xFFD7, 0xFFA3,\n    0xFF24, 0xFE7F, 0xFDDC, 0xFD64, 0xFD1E, 0xFCF4, 0xFCDC, 0xFCCF,\n    0xFCC5, 0xFCBF, 0xFCBB, 0xFCB9, 0xFCB8, 0xFCB9, 0xFCBB, 0xFCBC,\n    0xFCBE, 0xFCBE, 0xFCBE, 0xFCBF, 0xFCC0, 0xFCC1, 0xFCC2, 0xFCC3,\n    0xFCC5, 0xFCC7, 0xFCC8, 0xFCCA, 0xFCCB, 0xFCCC, 0xFCCD, 0xFCCE,\n    0xFCCF, 0xFCCF, 0xFCCD, 0xFCC7, 0xFCC2, 0xFCBE, 0xFCBD, 0xFCBD,\n    0xFCBD, 0xFCBD, 0xFCBE, 0xFCBE, 0xFCBE, 0xFCBE, 0xFCBE, 0xFCBE,\n    0xFCBE, 0xFCBE, 0xFCBE, 0xFCBE, 0xFCBE, 0xFCBE, 0xFCBE, 0xFCBE,\n    0xFCBE, 0xFCBE, 0xFCBE, 0xFCBF, 0xFCC1, 0xFCC5, 0xFCCA, 0xFCD1,\n    0xFCD9, 0xFCE3, 0xFCEE, 0xFCFB, 0xFD09, 0xFD19, 0xFD2A, 0xFD3D,\n    0xFD52, 0xFD68, 0xFD80, 0xFD9A, 0xFDB5, 0xFDD2, 0xFDF1, 0xFE11,\n    0xFE95, 0xFF68, 0xFFD7, 0xA2A1, 0xA874, 0xB6B6, 0xC896, 0xD93F,\n    0xE3E1, 0xE580, 0xE13D, 0xDB6D, 0xD864, 0xD87A, 0xD90F, 0xDA03,\n    0xDB37, 0xDC8D, 0xDDE6, 0xDF22, 0xE024, 0xE0CB, 0xE0F9, 0xE0C4,\n    0xE05A, 0xDFC3, 0xDF07, 0xDE2D, 0xDD3E, 0xDC41, 0xDB3E, 0xDA3C,\n    0xD944, 0xD85C, 0xD78E, 0xD6E0, 0xD65A, 0xD604, 0xD5E5, 0xD76B,\n    0xDAE2, 0xDEA0, 0xE0F9, 0xE1BD, 0xE1F4, 0xE1CC, 0xE176, 0xE120,\n    0xE0F9, 0xE0F9, 0xE0F9, 0xE0F9, 0xE0F9, 0xE0F9, 0xE0F9, 0xE0F9,\n    0xE0F9, 0xE0F9, 0xE0F9, 0xE0F9, 0xE0F9, 0xE0F9, 0xE0F9, 0xE0F9,\n    0xE0E4, 0xE0A4, 0xE03C, 0xDFAC, 0xDEF5, 0xDE19, 0xDD18, 0xDBF3,\n    0xDAAC, 0xD944, 0xD7BC, 0xD614, 0xD44F, 0xD26C, 0xD06E, 0xCE55,\n    0xCC22, 0xC9D7, 0xC774, 0xC4FA, 0xC26C, 0xB906, 0xAA4B, 0xA2A1,\n    0x2FF7, 0x2D2A, 0x2657, 0x1DE2, 0x162B, 0x1194, 0x11FF, 0x15CB,\n    0x1A16, 0x1C01, 0x1B6F, 0x1A4D, 0x18BE, 0x16E9, 0x14F1, 0x12FC,\n    0x112E, 0x0FAE, 0x0E9F, 0x0E26, 0x0E28, 0x0E68, 0x0EDE, 0x0F82,\n    0x104A, 0x112E, 0x1226, 0x1328, 0x142C, 0x152A, 0x1618, 0x16EF,\n    0x17A5, 0x1832, 0x188C, 0x18AD, 0x173A, 0x13EF, 0x1062, 0x0E26,\n    0x0D6C, 0x0D38, 0x0D5E, 0x0DAF, 0x0E01, 0x0E26, 0x0E26, 0x0E26,\n    0x0E26, 0x0E26, 0x0E26, 0x0E26, 0x0E26, 0x0E26, 0x0E26, 0x0E26,\n    0x0E26, 0x11D6, 0x1A0D, 0x2287, 0x2701, 0x27F2, 0x28B1, 0x2942,\n    0x29A8, 0x29E9, 0x2A09, 0x2A0C, 0x29F8, 0x29D0, 0x2999, 0x2958,\n    0x2910, 0x28C7, 0x2881, 0x2843, 0x2810, 0x27EE, 0x27E1, 0x27EE,\n    0x2818, 0x2865, 0x2A86, 0x2E16, 0x2FF7, 0x143B, 0x1320, 0x1094,\n    0x0DBB, 0x0BBD, 0x0BBE, 0x0F65, 0x15D6, 0x1C74, 0x209F, 0x2284,\n    0x2417, 0x2562, 0x266E, 0x2747, 0x27F5, 0x2884, 0x28FD, 0x296B,\n    0x29D7, 0x2A42, 0x2AA6, 0x2B02, 0x2B55, 0x2B9F, 0x2BDF, 0x2C15,\n    0x2C41, 0x2C62, 0x2C76, 0x2C7F, 0x2C7B, 0x2C69, 0x2C4A, 0x2C1D,\n    0x2BE0, 0x2A9E, 0x282D, 0x25BF, 0x2489, 0x24C2, 0x25A3, 0x26E0,\n    0x282F, 0x2945, 0x29D7, 0x2978, 0x2860, 0x2739, 0x26B1, 0x26DE,\n    0x2751, 0x27EE, 0x289A, 0x2937, 0x29AA, 0x29D7, 0x29D7, 0x29D7,\n    0x29D7, 0x29D7, 0x299C, 0x28F3, 0x27E5, 0x267E, 0x24C8, 0x22CD,\n    0x2098, 0x1E33, 0x1BA9, 0x1904, 0x164F, 0x1394, 0x10DF, 0x0E38,\n    0x0BAB, 0x0942, 0x0708, 0x0507, 0x034A, 0x01DB, 0x00C5, 0x056A,\n    0x0EFC, 0x143B, 0x0AE3, 0x0C73, 0x103F, 0x14EC, 0x1924, 0x1B8D,\n    0x1B23, 0x18CB, 0x1605, 0x1455, 0x13AC, 0x1304, 0x1266, 0x11DB,\n    0x116C, 0x1122, 0x1105, 0x1121, 0x117C, 0x1221, 0x130E, 0x1436,\n    0x1591, 0x1716, 0x18BB, 0x1A77, 0x1C41, 0x1E11, 0x1FDD, 0x219D,\n    0x2347, 0x24D2, 0x2636, 0x2769, 0x2862, 0x2918, 0x280A, 0x24C0,\n    0x20BF, 0x1D8D, 0x1B6A, 0x1981, 0x17B8, 0x15F6, 0x1421, 0x1221,\n    0x0F62, 0x0C1B, 0x095B, 0x0833, 0x08C0, 0x0A2B, 0x0C1C, 0x0E38,\n    0x1029, 0x1194, 0x1221, 0x1221, 0x1221, 0x1221, 0x1221, 0x121E,\n    0x1218, 0x120D, 0x11FD, 0x11EA, 0x11D2, 0x11B6, 0x1197, 0x1173,\n    0x114C, 0x1121, 0x10F2, 0x10C0, 0x108A, 0x1051, 0x1014, 0x0FD5,\n    0x0F92, 0x0F4C, 0x0F03, 0x0EB7, 0x0D97, 0x0BD0, 0x0AE3, 0x96C2,\n    0x940E, 0x8DAA, 0x8630, 0x8037, 0x7E54, 0x8363, 0x8D92, 0x9891,\n    0xA00E, 0xA434, 0xA810, 0xABA3, 0xAEEE, 0xB1EF, 0xB4A8, 0xB718,\n    0xB940, 0xBB20, 0xBCB7, 0xBE1E, 0xBF6D, 0xC0A3, 0xC1BF, 0xC2BF,\n    0xC3A4, 0xC46C, 0xC515, 0xC5A0, 0xC60C, 0xC656, 0xC67F, 0xC686,\n    0xC669, 0xC628, 0xC5C2, 0xC2C4, 0xBCB5, 0xB68C, 0xB33C, 0xB356,\n    0xB4F7, 0xB76C, 0xBA01, 0xBC00, 0xBCB7, 0xBAE2, 0xB712, 0xB34C,\n    0xB196, 0xB234, 0xB3CB, 0xB5F8, 0xB856, 0xBA82, 0xBC19, 0xBCB7,\n    0xBCB7, 0xBCB7, 0xBCB7, 0xBCB7, 0xBC6B, 0xBB90, 0xBA32, 0xB860,\n    0xB625, 0xB390, 0xB0AC, 0xAD88, 0xAA2F, 0xA6B0, 0xA317, 0x9F71,\n    0x9BCB, 0x9833, 0x94B5, 0x915F, 0x8E3D, 0x8B5C, 0x88CB, 0x8694,\n    0x84C7, 0x88BC, 0x91BF, 0x96C2, 0x0000, 0xFFFD, 0xFFF4, 0xFFE7,\n    0xFFDB, 0xFFD2, 0xFFCE, 0xFFD3, 0xFFE3, 0x0000, 0x0038, 0x0091,\n    0x00FF, 0x0177, 0x01EE, 0x025B, 0x02B2, 0x02E8, 0x02F4, 0x02CA,\n    0x0256, 0x0197, 0x00A1, 0xFF88, 0xFE5F, 0xFD39, 0xFC2B, 0xFB47,\n    0xFAA2, 0xFA4F, 0xFA53, 0xFA9B, 0xFB1B, 0xFBC3, 0xFC87, 0xFD57,\n    0xFE26, 0xFEE6, 0xFF89, 0x0000, 0x0040, 0x0052, 0x0045, 0x0029,\n    0x000C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x001A, 0x005B, 0x00B1, 0x0106, 0x0148, 0x0162,\n    0x0141, 0x00D2, 0x0000, 0xFE8A, 0xFC60, 0xF9BB, 0xF6D4, 0xF3E2,\n    0xF11E, 0xEEC1, 0xED02, 0xEC1B, 0xEC43, 0xEDC5, 0xF091, 0xF456,\n    0xF8C2, 0xFD84, 0x024C, 0x06C8, 0x0AA9, 0x0D9C, 0x0F52, 0x0FC6,\n    0x0F4B, 0x0E11, 0x0C47, 0x0A1B, 0x07BE, 0x055D, 0x0328, 0x014F,\n    0x0000, 0xFF53, 0xFF22, 0xFF45, 0xFF91, 0xFFDE, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0B7E, 0x0B7C,\n    0x0B78, 0x0B73, 0x0B6E, 0x0B69, 0x0B68, 0x0B6A, 0x0B71, 0x0B7E,\n    0x0B9B, 0x0BCD, 0x0C0C, 0x0C51, 0x0C93, 0x0CCC, 0x0CF3, 0x0D02,\n    0x0CF0, 0x0CB5, 0x0C40, 0x0B8E, 0x0AAF, 0x09B4, 0x08AD, 0x07AB,\n    0x06BF, 0x05F8, 0x0568, 0x051F, 0x0513, 0x052F, 0x056E, 0x05CF,\n    0x064E, 0x06E9, 0x079C, 0x0866, 0x0942, 0x0A2F, 0x0B71, 0x0D27,\n    0x0F18, 0x110B, 0x12C5, 0x140C, 0x1499, 0x1489, 0x143B, 0x140C,\n    0x1414, 0x142D, 0x1453, 0x1488, 0x14C9, 0x1514, 0x156A, 0x15C9,\n    0x162F, 0x169B, 0x170D, 0x1783, 0x17FB, 0x1875, 0x18EF, 0x199B,\n    0x1A93, 0x1BB9, 0x1CED, 0x1E10, 0x1F03, 0x1FA7, 0x1FDB, 0x1F82,\n    0x1E7D, 0x1CDE, 0x1ACB, 0x1869, 0x15DE, 0x134F, 0x10E3, 0x0EBF,\n    0x0D09, 0x0BE7, 0x0B7E, 0x0000, 0xFFFE, 0xFFF8, 0xFFF1, 0xFFEA,\n    0xFFE4, 0xFFE2, 0xFFE4, 0xFFEE, 0x0000, 0x001F, 0x004B, 0x0081,\n    0x00BD, 0x00F9, 0x0134, 0x0169, 0x0193, 0x01AF, 0x01B9, 0x01AF,\n    0x0192, 0x0168, 0x0133, 0x00F8, 0x00BB, 0x007F, 0x004A, 0x001E,\n    0x0000, 0xFFEF, 0xFFE4, 0xFFE0, 0xFFE1, 0xFFE5, 0xFFEB, 0xFFF3,\n    0xFFF9, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0015, 0x004B, 0x0090, 0x00D6, 0x010C, 0x0121, 0x0106,\n    0x00AB, 0x0000, 0xFECD, 0xFD04, 0xFAD5, 0xF870, 0xF602, 0xF3BC,\n    0xF1CD, 0xF063, 0xEFAD, 0xEFDC, 0xF12F, 0xF39A, 0xF6D8, 0xFAA3,\n    0xFEB7, 0x02CC, 0x06A0, 0x09ED, 0x0C6C, 0x0DDA, 0x0E31, 0x0DB8,\n    0x0C98, 0x0AFA, 0x0908, 0x06EB, 0x04CC, 0x02D4, 0x012D, 0x0000,\n    0xFF63, 0xFF37, 0xFF57, 0xFF9C, 0xFFE1, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xF35E, 0xF333, 0xF2C5,\n    0xF237, 0xF1A9, 0xF13B, 0xF10F, 0xF146, 0xF200, 0xF35E, 0xF583,\n    0xF85C, 0xFBBF, 0xFF81, 0x0375, 0x0771, 0x0B49, 0x0ED2, 0x11E0,\n    0x1447, 0x162A, 0x17C9, 0x1925, 0x1A41, 0x1B1F, 0x1BC1, 0x1C29,\n    0x1C59, 0x1C54, 0x1C1B, 0x1B73, 0x1A37, 0x188F, 0x16A1, 0x1494,\n    0x1290, 0x10BB, 0x0F3B, 0x0E39, 0x0DDA, 0x0EB6, 0x10EB, 0x13EB,\n    0x1727, 0x1A11, 0x1C1B, 0x1CE7, 0x1CD1, 0x1C5F, 0x1C1B, 0x1C23,\n    0x1C3A, 0x1C5C, 0x1C88, 0x1CBD, 0x1CF6, 0x1D33, 0x1D72, 0x1DAF,\n    0x1DE9, 0x1E1D, 0x1E4A, 0x1E6D, 0x1E84, 0x1E8D, 0x1EB0, 0x1F00,\n    0x1F61, 0x1FB2, 0x1FD5, 0x1FAC, 0x1F18, 0x1DFA, 0x1C33, 0x197A,\n    0x15C5, 0x1157, 0x0C74, 0x075E, 0x0259, 0xFDA8, 0xF98C, 0xF64A,\n    0xF424, 0xF35E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002,\n    0x0002, 0x0003, 0x0003, 0x0004, 0x0004, 0x0005, 0x0005, 0x0005,\n    0x0005, 0x0005, 0x0004, 0x0004, 0x0004, 0x0004, 0x0003, 0x0003,\n    0x0003, 0x0002, 0x0002, 0x0002, 0x0001, 0x0001, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0xFFF4, 0xFFD2, 0xFF9E, 0xFF5A,\n    0xFF0A, 0xFEB2, 0xFE55, 0xFDF6, 0xFD99, 0xFD41, 0xFCF1, 0xFCAD,\n    0xFC78, 0xFC56, 0xFC4A, 0xFC66, 0xFCB2, 0xFD21, 0xFDA8, 0xFE3A,\n    0xFECB, 0xFF4F, 0xFFBA, 0x0000, 0x0027, 0x003F, 0x004B, 0x004C,\n    0x0046, 0x003A, 0x002B, 0x001C, 0x000E, 0x0003, 0x0000, 0x0000,\n    0x000D, 0x002F, 0x005B, 0x0087, 0x00A9, 0x00B6, 0x00A5, 0x006C,\n    0x0000, 0xFF3E, 0xFE1C, 0xFCB9, 0xFB33, 0xF9A8, 0xF838, 0xF6FF,\n    0xF61C, 0xF5AD, 0xF5D1, 0xF6CE, 0xF8AC, 0xFB2B, 0xFE0C, 0x010E,\n    0x03F3, 0x067A, 0x0863, 0x096F, 0x095E, 0x07E8, 0x0525, 0x0169,\n    0xFD0A, 0xF859, 0xF3AB, 0xEF53, 0xEBA5, 0xE8F5, 0xE797, 0xE8A6,\n    0xEC4F, 0xF187, 0xF740, 0xFC6D, 0x0000, 0x015D, 0x0136, 0x0074,\n    0x0000, 0x0042, 0x00FC, 0x021C, 0x038F, 0x0543, 0x0725, 0x0922,\n    0x0B29, 0x0D27, 0x0F09, 0x10BD, 0x1230, 0x1350, 0x140A, 0x144C,\n    0x13B4, 0x1216, 0x0FB6, 0x0CD6, 0x09B7, 0x069D, 0x03CA, 0x017F,\n    0x0000, 0xFF2A, 0xFEA5, 0xFE64, 0xFE5C, 0xFE7E, 0xFEBE, 0xFF10,\n    0xFF66, 0xFFB3, 0xFFEB, 0x0000, 0xB247, 0xB249, 0xB24E, 0xB255,\n    0xB25C, 0xB262, 0xB264, 0xB261, 0xB258, 0xB247, 0xB229, 0xB1FF,\n    0xB1CC, 0xB194, 0xB15B, 0xB123, 0xB0F2, 0xB0CA, 0xB0AF, 0xB0A5,\n    0xB0B9, 0xB0EF, 0xB13B, 0xB193, 0xB1EC, 0xB23C, 0xB277, 0xB294,\n    0xB287, 0xB247, 0xB1BA, 0xB0DE, 0xAFC8, 0xAE90, 0xAD4C, 0xAC11,\n    0xAAF5, 0xAA0F, 0xA975, 0xA93C, 0xA9C8, 0xAB2E, 0xAD15, 0xAF22,\n    0xB0FC, 0xB247, 0xB2C8, 0xB2BA, 0xB272, 0xB247, 0xB258, 0xB28A,\n    0xB2D8, 0xB33C, 0xB3B4, 0xB43B, 0xB4CB, 0xB561, 0xB5F8, 0xB68C,\n    0xB719, 0xB799, 0xB809, 0xB864, 0xB8A6, 0xB8C9, 0xB8CF, 0xB8BB,\n    0xB892, 0xB858, 0xB811, 0xB7C2, 0xB76F, 0xB71C, 0xB6BC, 0xB643,\n    0xB5B9, 0xB524, 0xB48C, 0xB3F8, 0xB36F, 0xB2F8, 0xB29A, 0xB25D,\n    0xB247, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x0000,\n};\n\n// 0x05014AC4\nstatic const u16 ukiki_seg5_animindex_05014AC4[] = {\n    0x0055, 0x0001, 0x0055, 0x0056, 0x0055, 0x00AB, 0x0055, 0x0100, 0x0055, 0x0155, 0x0055, 0x01AA,\n    0x0001, 0x0000, 0x0001, 0x0FF6, 0x0001, 0x0000,\n    0x0055, 0x01FF, 0x0055, 0x0254, 0x0055, 0x02A9,\n    0x0001, 0x0000, 0x0001, 0x0FF5, 0x0001, 0x0000,\n    0x0055, 0x0452, 0x0055, 0x04A7, 0x0055, 0x04FC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0055, 0x03FD,\n    0x0055, 0x02FE, 0x0055, 0x0353, 0x0055, 0x03A8,\n    0x0001, 0x0000, 0x0001, 0x0FF4, 0x0001, 0x0000,\n    0x0055, 0x074F, 0x0055, 0x07A4, 0x0055, 0x07F9,\n    0x0055, 0x0650, 0x0055, 0x06A5, 0x0055, 0x06FA,\n    0x0055, 0x0551, 0x0055, 0x05A6, 0x0055, 0x05FB,\n    0x0001, 0x0000, 0x0001, 0x0FF3, 0x0001, 0x0000,\n    0x0055, 0x09A2, 0x0055, 0x09F7, 0x0055, 0x0A4C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0055, 0x094D,\n    0x0055, 0x084E, 0x0055, 0x08A3, 0x0055, 0x08F8,\n    0x0001, 0x0000, 0x0001, 0x0FF2, 0x0001, 0x0000,\n    0x0055, 0x0BF5, 0x0055, 0x0C4A, 0x0055, 0x0C9F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0055, 0x0BA0,\n    0x0055, 0x0AA1, 0x0055, 0x0AF6, 0x0055, 0x0B4B,\n    0x0001, 0x0000, 0x0001, 0x0FF1, 0x0001, 0x0000,\n    0x0055, 0x0EF2, 0x0055, 0x0F47, 0x0055, 0x0F9C,\n    0x0055, 0x0DF3, 0x0055, 0x0E48, 0x0055, 0x0E9D,\n    0x0055, 0x0CF4, 0x0055, 0x0D49, 0x0055, 0x0D9E,\n};\n\n// 0x05014BE4\nstatic const struct Animation ukiki_seg5_anim_05014BE4 = {\n    0,\n    0,\n    0,\n    0,\n    0x55,\n    ANIMINDEX_NUMPARTS(ukiki_seg5_animindex_05014AC4),\n    ukiki_seg5_animvalue_05012AD4,\n    ukiki_seg5_animindex_05014AC4,\n    0,\n};\n"
  },
  {
    "path": "actors/ukiki/anims/anim_050153C4.inc.c",
    "content": "// 0x05014BFC\nstatic const s16 ukiki_seg5_animvalue_05014BFC[] = {\n    0x0000, 0x006C, 0x006D, 0x0071, 0x0076, 0x007A, 0x007D, 0x007D,\n    0x007B, 0x0078, 0x0076, 0x0074, 0x0074, 0x0074, 0x0075, 0x0075,\n    0x0074, 0x0072, 0x006F, 0x006D, 0x006C, 0x20E4, 0x2123, 0x21CE,\n    0x22C8, 0x23F8, 0x2542, 0x268B, 0x27B7, 0x28AB, 0x294C, 0x297F,\n    0x2929, 0x2859, 0x2733, 0x25D8, 0x246E, 0x2317, 0x21F6, 0x212F,\n    0x20E4, 0xF4B4, 0x0409, 0x135E, 0x1363, 0x136E, 0x137F, 0x1394,\n    0x13AB, 0x13C1, 0x13D6, 0x13E7, 0x13F3, 0x13F7, 0x13F2, 0x13E4,\n    0x13CF, 0x13B7, 0x139E, 0x1386, 0x1372, 0x1363, 0x135E, 0xF874,\n    0xF88E, 0xF8D7, 0xF941, 0xF9C2, 0xFA4F, 0xFADB, 0xFB5C, 0xFBC7,\n    0xFC0F, 0xFC2A, 0xFC09, 0xFBB2, 0xFB33, 0xFA9E, 0xFA00, 0xF96A,\n    0xF8EC, 0xF894, 0xF874, 0x2A0C, 0x29CA, 0x2919, 0x2814, 0x26D7,\n    0x257E, 0x2426, 0x22E9, 0x21E4, 0x2133, 0x20F1, 0x2141, 0x2217,\n    0x234D, 0x24BD, 0x2640, 0x27AF, 0x28E6, 0x29BC, 0x2A0C, 0xFC50,\n    0xFCA3, 0xFD6F, 0xFE70, 0xFF62, 0x0000, 0x0047, 0x0064, 0x005D,\n    0x003A, 0x0000, 0xFFAB, 0xFF38, 0xFEB2, 0xFE23, 0xFD97, 0xFD18,\n    0xFCAF, 0xFC69, 0xFC50, 0x04E8, 0x0479, 0x036A, 0x0214, 0x00D3,\n    0x0000, 0xFFA2, 0xFF7B, 0xFF84, 0xFFB3, 0x0000, 0x0071, 0x010B,\n    0x01BD, 0x027A, 0x0335, 0x03DE, 0x0468, 0x04C6, 0x04E8, 0x0438,\n    0x06E9, 0x0D32, 0x1469, 0x19E1, 0x1AEF, 0x1564, 0x0B09, 0xFF23,\n    0xF4F4, 0xEFC0, 0xEF2B, 0xF05F, 0xF2E5, 0xF649, 0xFA15, 0xFDD5,\n    0x0113, 0x035B, 0x0438, 0xEE66, 0xEC3F, 0xE721, 0xE10D, 0xDC04,\n    0xDA07, 0xDC42, 0xE15D, 0xE799, 0xED35, 0xF070, 0xF184, 0xF1F1,\n    0xF1D9, 0xF162, 0xF0B0, 0xEFE6, 0xEF29, 0xEE9D, 0xEE66, 0xF1CF,\n    0xF2C9, 0xF53B, 0xF866, 0xFB8D, 0xFDF3, 0xFFCE, 0x019B, 0x030B,\n    0x03CA, 0x0388, 0x023D, 0x003F, 0xFDC9, 0xFB12, 0xF858, 0xF5D3,\n    0xF3BF, 0xF254, 0xF1CF, 0xF6A8, 0xF6B1, 0xF6CB, 0xF6F0, 0xF71B,\n    0xF749, 0xF787, 0xF7D8, 0xF828, 0xF861, 0xF871, 0xF859, 0xF82A,\n    0xF7EC, 0xF7A4, 0xF75B, 0xF717, 0xF6DE, 0xF6B7, 0xF6A8, 0xB2E6,\n    0xB008, 0xA901, 0xA031, 0x97F3, 0x92A5, 0x9085, 0x8FFE, 0x90B5,\n    0x9251, 0x9478, 0x9755, 0x9B19, 0x9F6E, 0xA400, 0xA87C, 0xAC8B,\n    0xAFDB, 0xB215, 0xB2E6, 0x04A7, 0x04E1, 0x0580, 0x066C, 0x078D,\n    0x08CC, 0x0A11, 0x0B44, 0x0C4E, 0x0D16, 0x0D86, 0x0D44, 0x0C42,\n    0x0AD6, 0x0958, 0x081D, 0x0705, 0x05E4, 0x0502, 0x04A7, 0x034E,\n    0x034D, 0x034A, 0x0347, 0x0345, 0x0346, 0x034A, 0x0354, 0x0365,\n    0x037D, 0x03A0, 0x03EF, 0x0472, 0x0501, 0x0571, 0x059A, 0x0539,\n    0x0470, 0x03A8, 0x034E, 0x03E6, 0x0313, 0x00D2, 0xFD75, 0xF94C,\n    0xF4AA, 0xEFE0, 0xEB41, 0xE71E, 0xE3CA, 0xE195, 0xE12A, 0xE29E,\n    0xE568, 0xE900, 0xECDC, 0xF29B, 0xFA49, 0x0103, 0x03E6, 0xEE66,\n    0xEE23, 0xED69, 0xEC4C, 0xEAE1, 0xE93C, 0xE774, 0xE59D, 0xE3CB,\n    0xE214, 0xE08C, 0xDEB8, 0xDC7D, 0xDA86, 0xD97C, 0xDA07, 0xDE17,\n    0xE4FE, 0xEB82, 0xEE66, 0xEC74, 0xECD7, 0xEDE5, 0xEF73, 0xF159,\n    0xF36D, 0xF586, 0xF77B, 0xF922, 0xFA52, 0xFAE1, 0xFA10, 0xF7BB,\n    0xF4A8, 0xF19B, 0xEF5A, 0xEDFF, 0xED1A, 0xEC9B, 0xEC74, 0x08A6,\n    0x092D, 0x0A9E, 0x0CC3, 0x0F64, 0x124C, 0x1543, 0x1814, 0x1A87,\n    0x1C66, 0x1D7A, 0x1D07, 0x1AEE, 0x17E4, 0x149F, 0x11D5, 0x0F19,\n    0x0C15, 0x09A6, 0x08A6, 0x87EA, 0x88F0, 0x8BB9, 0x8FDA, 0x94E9,\n    0x9A78, 0xA01E, 0xA56F, 0xA9FE, 0xAD62, 0xAF2E, 0xADB0, 0xA89F,\n    0xA1A9, 0x9A81, 0x94D5, 0x905C, 0x8C31, 0x891D, 0x87EA, 0x004E,\n    0x0034, 0xFFF5, 0xFFA6, 0xFF5C, 0xFF2E, 0xFF31, 0xFF9B, 0x005C,\n    0x0126, 0x01A5, 0x01CC, 0x01CC, 0x01B3, 0x018B, 0x0161, 0x0121,\n    0x00C5, 0x0072, 0x004E, 0xFFEC, 0x001A, 0x0091, 0x012E, 0x01D1,\n    0x0258, 0x02A2, 0x0280, 0x0208, 0x0181, 0x0133, 0x0134, 0x015D,\n    0x0191, 0x01B6, 0x01B0, 0x0154, 0x00BB, 0x002B, 0xFFEC, 0xB6ED,\n    0xB6EF, 0xB6E8, 0xB6C5, 0xB673, 0xB5DF, 0xB4F7, 0xB365, 0xB11E,\n    0xAE83, 0xABF1, 0xA8DC, 0xA517, 0xA195, 0x9F46, 0x9F1C, 0xA384,\n    0xABA1, 0xB36F, 0xB6ED, 0x188C, 0x1956, 0x1B65, 0x1E42, 0x2178,\n    0x2491, 0x2716, 0x28E9, 0x2A64, 0x2BC8, 0x2D54, 0x2FBC, 0x32DE,\n    0x35B5, 0x373C, 0x366F, 0x3077, 0x2656, 0x1CC9, 0x188C, 0xE2D4,\n    0xE2E3, 0xE30A, 0xE341, 0xE37E, 0xE3BB, 0xE3ED, 0xE410, 0xE42A,\n    0xE44A, 0xE47D, 0xE4DA, 0xE558, 0xE5D4, 0xE626, 0xE62A, 0xE58A,\n    0xE467, 0xE350, 0xE2D4, 0xFDC6, 0xFDAE, 0xFD7E, 0xFD59, 0xFD64,\n    0xFDC3, 0xFE9A, 0x00D9, 0x0459, 0x0790, 0x08F7, 0x080E, 0x05D7,\n    0x0307, 0x0052, 0xFE70, 0xFDA2, 0xFD7C, 0xFDA5, 0xFDC6, 0x95F7,\n    0x95B1, 0x9512, 0x9465, 0x93F4, 0x940B, 0x94F3, 0x9801, 0x9CF2,\n    0xA1AE, 0xA41E, 0xA3BB, 0xA1D9, 0x9F2D, 0x9C6D, 0x9A4E, 0x98BE,\n    0x9759, 0x9659, 0x95F7, 0x1A1C, 0x193B, 0x16FF, 0x1400, 0x10D8,\n    0x0E1E, 0x0BED, 0x09F2, 0x0823, 0x0582, 0x0479, 0x066A, 0x0914,\n    0x0C1D, 0x0F2A, 0x11E2, 0x148A, 0x1736, 0x1948, 0x1A1C, 0xFC3C,\n    0xFCD0, 0xFE2C, 0xFFC1, 0x0101, 0x015E, 0xFFE5, 0xFCFE, 0xFA29,\n    0xF6C6, 0xF49A, 0xF536, 0xF688, 0xF831, 0xF9CF, 0xFB01, 0xFBAE,\n    0xFC0C, 0xFC34, 0xFC3C, 0x9D1B, 0x9D4A, 0x9DF3, 0x9F42, 0xA164,\n    0xA484, 0xAA02, 0xB1C2, 0xB9B8, 0xC5F0, 0xCD87, 0xC9D6, 0xC36A,\n    0xBB9B, 0xB3C2, 0xAD36, 0xA7A1, 0xA26F, 0x9E9A, 0x9D1B, 0x2F27,\n    0x32F1, 0x3BC5, 0x45D1, 0x4D42, 0x4E48, 0x4595, 0x35B5, 0x239B,\n    0x143A, 0x0C85, 0x0BF3, 0x0E33, 0x1289, 0x1837, 0x1E83, 0x24B1,\n    0x2A03, 0x2DBE, 0x2F27, 0x05E6, 0x044D, 0x0081, 0xFC03, 0xF851,\n    0xF6EC, 0xF8BE, 0xFCC8, 0x01A8, 0x0602, 0x0874, 0x092F, 0x0963,\n    0x092D, 0x08AB, 0x07FD, 0x0741, 0x0695, 0x0617, 0x05E6, 0x1EC4,\n    0x1D7F, 0x1A5D, 0x165F, 0x1287, 0x0FD6, 0x0E3D, 0x0D10, 0x0C67,\n    0x0C59, 0x0D00, 0x0E6D, 0x107E, 0x12FC, 0x15AF, 0x1861, 0x1AD9,\n    0x1CE2, 0x1E42, 0x1EC4, 0xA663, 0xA364, 0x9C05, 0x92B2, 0x89DA,\n    0x83EA, 0x80EF, 0x7F49, 0x7EE9, 0x7FB3, 0x8196, 0x84BC, 0x891E,\n    0x8E4F, 0x93E1, 0x9966, 0x9E70, 0xA291, 0xA55C, 0xA663, 0x0000,\n    0xFFC6, 0xFF5A, 0xFF20, 0xFF57, 0xFFCE, 0x003E, 0x0066, 0x0000,\n    0xFE5A, 0xFBB7, 0xF946, 0xF833, 0xF8A1, 0xF9BF, 0xFB45, 0xFCEE,\n    0xFE74, 0xFF92, 0x0000, 0x0000, 0xFA85, 0xF055, 0xEAD9, 0xEC79,\n    0xF092, 0xF5F9, 0xFB81, 0x0000, 0x03C3, 0x075F, 0x0A16, 0x0B28,\n    0x0A8A, 0x08F2, 0x06C4, 0x0464, 0x0236, 0x009E, 0x0000, 0x2C5E,\n    0x27A5, 0x1DA9, 0x14AF, 0x0DEB, 0x0703, 0x00E5, 0xFC7C, 0xFAB5,\n    0xFD9E, 0x04AA, 0x0CE3, 0x134C, 0x1801, 0x1CE0, 0x2196, 0x25D1,\n    0x293D, 0x2B88, 0x2C5E, 0x0000, 0x0000, 0x0002, 0x0003, 0x0003,\n    0x0002, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0xFD5C, 0xF875, 0xF5D1, 0xF66E, 0xF810, 0xFA69, 0xFD29, 0x0000,\n    0x03E5, 0x08D7, 0x0D18, 0x0EE6, 0x0E13, 0x0BF2, 0x0909, 0x05DD,\n    0x02F4, 0x00D3, 0x0000, 0x1853, 0x15E9, 0x109E, 0x0B62, 0x06BA,\n    0x01B2, 0xFCFF, 0xF958, 0xF772, 0xF876, 0xFC04, 0x0081, 0x0459,\n    0x07A7, 0x0B5C, 0x0F24, 0x12A9, 0x1596, 0x1796, 0x1853, 0x0535,\n    0x051B, 0x04E1, 0x04A4, 0x0468, 0x0425, 0x03E5, 0x03B3, 0x0399,\n    0x03A7, 0x03D7, 0x0412, 0x0444, 0x046D, 0x049A, 0x04C8, 0x04F2,\n    0x0515, 0x052C, 0x0535, 0xF9D8, 0xF942, 0xF85D, 0xF872, 0xFA02,\n    0xFC4D, 0xFEBA, 0x00B1, 0x019B, 0x00AE, 0xFE54, 0xFBC1, 0xFA28,\n    0xF99F, 0xF960, 0xF957, 0xF973, 0xF99E, 0xF9C6, 0xF9D8, 0xDFF4,\n    0xE016, 0xE06D, 0xE0DE, 0xE16F, 0xE21C, 0xE2C7, 0xE34E, 0xE392,\n    0xE364, 0xE2D8, 0xE230, 0xE1B2, 0xE15B, 0xE103, 0xE0B0, 0xE066,\n    0xE02A, 0xE003, 0xDFF4, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x3284, 0x4819, 0x346B, 0x0000,\n};\n\n// 0x050152A4\nstatic const u16 ukiki_seg5_animindex_050152A4[] = {\n    0x0001, 0x0000, 0x0014, 0x0001, 0x0001, 0x0000, 0x0014, 0x0015, 0x0001, 0x0029, 0x0001, 0x002A,\n    0x0001, 0x0350, 0x0001, 0x0351, 0x0001, 0x0352,\n    0x0014, 0x002B, 0x0014, 0x003F, 0x0014, 0x0053,\n    0x0001, 0x0000, 0x0001, 0x034F, 0x0001, 0x0000,\n    0x0014, 0x00B7, 0x0014, 0x00CB, 0x0014, 0x00DF,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x00A3,\n    0x0014, 0x0067, 0x0014, 0x007B, 0x0014, 0x008F,\n    0x0001, 0x0000, 0x0001, 0x034E, 0x0001, 0x0000,\n    0x0014, 0x0143, 0x0014, 0x0157, 0x0014, 0x016B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x012F,\n    0x0014, 0x00F3, 0x0014, 0x0107, 0x0014, 0x011B,\n    0x0001, 0x0000, 0x0001, 0x034D, 0x0001, 0x0000,\n    0x0014, 0x01CF, 0x0014, 0x01E3, 0x0014, 0x01F7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x01BB,\n    0x0014, 0x017F, 0x0014, 0x0193, 0x0014, 0x01A7,\n    0x0001, 0x0000, 0x0001, 0x034C, 0x0001, 0x0000,\n    0x0014, 0x025B, 0x0014, 0x026F, 0x0014, 0x0283,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x0247,\n    0x0014, 0x020B, 0x0014, 0x021F, 0x0014, 0x0233,\n    0x0001, 0x0000, 0x0001, 0x034B, 0x0001, 0x0000,\n    0x0014, 0x030F, 0x0014, 0x0323, 0x0014, 0x0337,\n    0x0014, 0x02D3, 0x0014, 0x02E7, 0x0014, 0x02FB,\n    0x0014, 0x0297, 0x0014, 0x02AB, 0x0014, 0x02BF,\n};\n\n// 0x050153C4\nstatic const struct Animation ukiki_seg5_anim_050153C4 = {\n    0,\n    0,\n    0,\n    0,\n    0x14,\n    ANIMINDEX_NUMPARTS(ukiki_seg5_animindex_050152A4),\n    ukiki_seg5_animvalue_05014BFC,\n    ukiki_seg5_animindex_050152A4,\n    0,\n};\n"
  },
  {
    "path": "actors/ukiki/anims/anim_0501576C.inc.c",
    "content": "// 0x050153DC\nstatic const s16 ukiki_seg5_animvalue_050153DC[] = {\n    0x0000, 0xFFEF, 0x0048, 0xFCB7, 0xFCCF, 0xFCFB, 0xFD14, 0xFCF2,\n    0xFC3B, 0xFB3E, 0xFABA, 0xFAF9, 0xFB95, 0xFC44, 0xFCBE, 0xFCDE,\n    0xFCCE, 0x0000, 0x002B, 0x008C, 0x00F1, 0x0129, 0x0113, 0x00C9,\n    0x007B, 0x002D, 0xFFD6, 0xFF89, 0xFF5F, 0xFF7C, 0xFFC6, 0x0000,\n    0x0091, 0x01D6, 0x032A, 0x03E7, 0x039B, 0x02A5, 0x019F, 0x0098,\n    0xFF71, 0xFE70, 0xFDE4, 0xFE43, 0xFF3D, 0x0065, 0xFFC7, 0xFE5D,\n    0xFCD3, 0xFBD2, 0xFBC6, 0xFC0E, 0xFC89, 0xFD25, 0xFDD6, 0xFE8B,\n    0xFF36, 0xFFC7, 0x0030, 0x0000, 0xFF35, 0xFD68, 0xFB79, 0xFA46,\n    0xF9ED, 0xF9EB, 0xFA2B, 0xFA9A, 0xFB23, 0xFBF7, 0xFD25, 0xFE65,\n    0xFF6F, 0x4AB9, 0x49D8, 0x47EF, 0x4614, 0x455F, 0x464E, 0x4833,\n    0x4A6F, 0x4C62, 0x4D70, 0x4D78, 0x4CE5, 0x4C09, 0x4B36, 0x2FB6,\n    0xE437, 0xE32D, 0xE080, 0xDCD6, 0xD8D9, 0xD530, 0xD283, 0xD179,\n    0xD283, 0xD530, 0xD8D9, 0xDCD6, 0xE080, 0xE32D, 0x38BB, 0xD525,\n    0xAA7B, 0x2EE5, 0xE024, 0xDEE6, 0xDBB2, 0xD752, 0xD28D, 0xCE2C,\n    0xCAF9, 0xC9BB, 0xCAF9, 0xCE2C, 0xD28D, 0xD752, 0xDBB2, 0xDEE6,\n    0xA100, 0x2D20, 0x878D, 0xC957, 0xC88D, 0xC684, 0xC3BB, 0xC0B2,\n    0xBDE9, 0xBBDF, 0xBB15, 0xBBD2, 0xBDBD, 0xC063, 0xC350, 0xC613,\n    0xC837, 0x2A43, 0x29CA, 0x2891, 0x26E5, 0x2513, 0x2367, 0x222E,\n    0x21B5, 0x2226, 0x234D, 0x24E3, 0x26A5, 0x284D, 0x2996, 0xEE5F,\n    0xEEF3, 0xF070, 0xF278, 0xF4AF, 0xF6B7, 0xF834, 0xF8C8, 0xF83E,\n    0xF6D7, 0xF4E9, 0xF2C5, 0xF0C2, 0xEF32, 0xF643, 0xF622, 0xF5CC,\n    0xF557, 0xF4D7, 0xF462, 0xF40C, 0xF3EB, 0xF40A, 0xF45A, 0xF4CA,\n    0xF545, 0xF5BA, 0xF614, 0xD077, 0xCE8B, 0xC997, 0xC2D0, 0xBB6F,\n    0xB4A8, 0xAFB4, 0xADC8, 0xAF94, 0xB43E, 0xBAAF, 0xC1CE, 0xC884,\n    0xCDBA, 0xB490, 0xB4ED, 0xB5DB, 0xB721, 0xB884, 0xB9CA, 0xBAB8,\n    0xBB15, 0xBABE, 0xB9DE, 0xB8A8, 0xB751, 0xB60E, 0xB514, 0x1D39,\n    0x1EF1, 0x235D, 0x2969, 0x3000, 0x360D, 0x3A79, 0x3C30, 0x3A95,\n    0x366B, 0x30AC, 0x2A50, 0x2452, 0x1FAB, 0x01AE, 0x01D8, 0x0244,\n    0x02D9, 0x037B, 0x0410, 0x047C, 0x04A7, 0x047F, 0x0419, 0x038C,\n    0x02EF, 0x025C, 0x01EA, 0x04F3, 0x04CF, 0x0471, 0x03F0, 0x0365,\n    0x02E5, 0x0287, 0x0262, 0x0284, 0x02DD, 0x0357, 0x03DD, 0x045C,\n    0x04BF, 0xAC37, 0xADF4, 0xB271, 0xB893, 0xBF42, 0xC565, 0xC9E1,\n    0xCB9F, 0xC9FE, 0xC5C5, 0xBFF0, 0xB97D, 0xB369, 0xAEB1, 0xED58,\n    0xEF8C, 0xF50E, 0xFC37, 0x035F, 0x08E1, 0x0B15, 0x09E1, 0x06B0,\n    0x0225, 0xFCE4, 0xF78E, 0xF2C6, 0xEF30, 0xF42F, 0xF4E8, 0xF6B8,\n    0xF913, 0xFB6D, 0xFD3D, 0xFDF6, 0xFD91, 0xFC84, 0xFB06, 0xF94B,\n    0xF78A, 0xF5F8, 0xF4CA, 0xD9CC, 0xD986, 0xD8D9, 0xD7F7, 0xD715,\n    0xD667, 0xD621, 0xD647, 0xD6AC, 0xD73B, 0xD7E1, 0xD88A, 0xD921,\n    0xD992, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x0000,\n};\n\n// 0x0501564C\nstatic const u16 ukiki_seg5_animindex_0501564C[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x000E, 0x0003, 0x000E, 0x0011, 0x000E, 0x001F,\n    0x0001, 0x0000, 0x0001, 0x0136, 0x0001, 0x0000,\n    0x000E, 0x002D, 0x000E, 0x003B, 0x000E, 0x0049,\n    0x0001, 0x0000, 0x0001, 0x0135, 0x0001, 0x0000,\n    0x0001, 0x0066, 0x0001, 0x0067, 0x0001, 0x0068,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x0058,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0057,\n    0x0001, 0x0000, 0x0001, 0x0134, 0x0001, 0x0000,\n    0x0001, 0x0078, 0x0001, 0x0079, 0x0001, 0x007A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x006A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0069,\n    0x0001, 0x0000, 0x0001, 0x0133, 0x0001, 0x0000,\n    0x000E, 0x0097, 0x000E, 0x00A5, 0x000E, 0x00B3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x0089,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x007B,\n    0x0001, 0x0000, 0x0001, 0x0132, 0x0001, 0x0000,\n    0x000E, 0x00DD, 0x000E, 0x00EB, 0x000E, 0x00F9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x00CF,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x00C1,\n    0x0001, 0x0000, 0x0001, 0x0131, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x0123,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x0115,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x0107,\n};\n\n// 0x0501576C\nstatic const struct Animation ukiki_seg5_anim_0501576C = {\n    0,\n    0,\n    0,\n    0,\n    0x0E,\n    ANIMINDEX_NUMPARTS(ukiki_seg5_animindex_0501564C),\n    ukiki_seg5_animvalue_050153DC,\n    ukiki_seg5_animindex_0501564C,\n    0,\n};\n"
  },
  {
    "path": "actors/ukiki/anims/data.inc.c",
    "content": "#include \"anim_0500D658.inc.c\"\n#include \"anim_0500DC80.inc.c\"\n#include \"anim_0500DDEC.inc.c\"\n#include \"anim_0500EACC.inc.c\"\n#include \"anim_0500EEA8.inc.c\"\n#include \"anim_0500F530.inc.c\"\n#include \"anim_0500FC84.inc.c\"\n#include \"anim_0501006C.inc.c\"\n#include \"anim_050103F4.inc.c\"\n#include \"anim_05012ABC.inc.c\"\n#include \"anim_05014BE4.inc.c\"\n#include \"anim_050153C4.inc.c\"\n#include \"anim_0501576C.inc.c\"\n"
  },
  {
    "path": "actors/ukiki/anims/table.inc.c",
    "content": "// 0x05015784\nconst struct Animation *const ukiki_seg5_anims_05015784[] = {\n    &ukiki_seg5_anim_0500D658,\n    &ukiki_seg5_anim_0500DC80,\n    &ukiki_seg5_anim_0500DDEC,\n    &ukiki_seg5_anim_0500EACC,\n    &ukiki_seg5_anim_0500EEA8,\n    &ukiki_seg5_anim_0500F530,\n    &ukiki_seg5_anim_0500FC84,\n    &ukiki_seg5_anim_0501006C,\n    &ukiki_seg5_anim_050103F4,\n    &ukiki_seg5_anim_05012ABC,\n    &ukiki_seg5_anim_05014BE4,\n    &ukiki_seg5_anim_050153C4,\n    &ukiki_seg5_anim_0501576C,\n    NULL,\n    NULL,\n};\n"
  },
  {
    "path": "actors/ukiki/geo.inc.c",
    "content": "// 0x0C000110\nconst GeoLayout ukiki_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 80),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, ukiki_seg5_dl_0500B820),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 99, -11, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_SWITCH_CASE(4, geo_switch_anim_state),\n                    GEO_OPEN_NODE(),\n                        GEO_NODE_START(),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, ukiki_seg5_dl_0500B2E8),\n                        GEO_CLOSE_NODE(),\n                        GEO_NODE_START(),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, ukiki_seg5_dl_0500B310),\n                        GEO_CLOSE_NODE(),\n                        GEO_NODE_START(),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, ukiki_seg5_dl_0500B2E8),\n                            GEO_OPEN_NODE(),\n                                GEO_TRANSLATE_ROTATE_WITH_DL(LAYER_OPAQUE, 100, 0, 0, -90, -90, 0, mario_cap_seg3_dl_03022F48),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                        GEO_NODE_START(),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, ukiki_seg5_dl_0500B310),\n                            GEO_OPEN_NODE(),\n                                GEO_TRANSLATE_ROTATE_WITH_DL(LAYER_OPAQUE, 100, 0, 0, -90, -90, 0, mario_cap_seg3_dl_03022F48),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 71, 69, -9, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, ukiki_seg5_dl_0500B988),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 86, 0, 0, ukiki_seg5_dl_0500BB28),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 64, 0, 0, ukiki_seg5_dl_0500CF68),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, -71, 68, -9, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, ukiki_seg5_dl_0500BC78),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 86, 0, 0, ukiki_seg5_dl_0500BE38),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 64, 0, 0, ukiki_seg5_dl_0500CFF0),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 43, -22, -1, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, ukiki_seg5_dl_0500BFF8),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 46, 0, 0, ukiki_seg5_dl_0500C1B8),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 36, 0, 0, ukiki_seg5_dl_0500D078),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, -43, -22, -1, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, ukiki_seg5_dl_0500C368),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 46, 0, 0, ukiki_seg5_dl_0500C528),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 36, 0, 0, ukiki_seg5_dl_0500D108),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, -15, -57, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, ukiki_seg5_dl_0500C6E8),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 45, 0, 0, ukiki_seg5_dl_0500C898),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 46, 0, 0, ukiki_seg5_dl_0500CA48),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/ukiki/model.inc.c",
    "content": "// Ukiki\n\n// Unreferenced light group\nUNUSED static const Lights1 ukiki_lights_unused1 = gdSPDefLights1(\n    0x1d, 0x12, 0x07,\n    0x77, 0x48, 0x1f, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 ukiki_lights_unused2 = gdSPDefLights1(\n    0x39, 0x24, 0x18,\n    0xe7, 0x93, 0x61, 0x28, 0x28, 0x28\n);\n\n// 0x05007BA0\nstatic const Lights1 ukiki_seg5_lights_05007BA0 = gdSPDefLights1(\n    0x39, 0x24, 0x18,\n    0xe7, 0x93, 0x61, 0x28, 0x28, 0x28\n);\n\n// The hell?\nUNUSED static const u64 ukiki_unused_1 = 1;\n\n// 0x05007BC0\nALIGNED8 static const Texture ukiki_seg5_texture_05007BC0[] = {\n#include \"actors/ukiki/ukiki_face.rgba16.inc.c\"\n};\n\n// 0x05008BC0\nALIGNED8 static const Texture ukiki_seg5_texture_05008BC0[] = {\n#include \"actors/ukiki/ukiki_face_blink.rgba16.inc.c\"\n};\n\n// 0x05009BC0\nALIGNED8 static const Texture ukiki_seg5_texture_05009BC0[] = {\n#include \"actors/ukiki/ukiki_butt.rgba16.inc.c\"\n};\n\n// 0x0500A3C0\nALIGNED8 static const Texture ukiki_seg5_texture_0500A3C0[] = {\n#include \"actors/ukiki/ukiki_fur.rgba16.inc.c\"\n};\n\n// 0x0500ABC0\nstatic const Lights1 ukiki_seg5_lights_0500ABC0 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0500ABD8\nstatic const Lights1 ukiki_seg5_lights_0500ABD8 = gdSPDefLights1(\n    0x77, 0x66, 0x45,\n    0xee, 0xcd, 0x8a, 0x28, 0x28, 0x28\n);\n\n// 0x0500ABF0\nstatic const Vtx ukiki_seg5_vertex_0500ABF0[] = {\n    {{{   188,    -23,     43}, 0, { -1000,    918}, {0x6f, 0xdd, 0x32, 0xff}}},\n    {{{   178,     68,     52}, 0, {  -832,   1062}, {0x5c, 0x2c, 0x4a, 0xff}}},\n    {{{   137,     14,     87}, 0, {  -124,   1652}, {0x45, 0x2e, 0x5f, 0xff}}},\n    {{{   178,     68,    -51}, 0, { -2900,   1062}, {0x68, 0x30, 0xcb, 0xff}}},\n    {{{   116,     50,     83}, 0, {  -200,   1954}, {0x16, 0x2b, 0x75, 0xff}}},\n    {{{    39,     19,     92}, 0, {     0,   3042}, {0xbc, 0x38, 0x5b, 0xff}}},\n    {{{   104,    -40,     87}, 0, {  -124,   2114}, {0x2c, 0xa8, 0x4f, 0xff}}},\n    {{{   116,     50,    -82}, 0, { -3532,   1954}, {0x16, 0x2b, 0x8b, 0xff}}},\n    {{{   137,     14,    -86}, 0, { -3612,   1652}, {0x3e, 0x42, 0xa8, 0xff}}},\n    {{{   188,    -23,    -42}, 0, { -2732,    918}, {0x64, 0xde, 0xbb, 0xff}}},\n    {{{   144,    -81,    -42}, 0, { -2732,   1554}, {0x2a, 0x93, 0xd0, 0xff}}},\n    {{{   104,    -40,    -86}, 0, { -3612,   2114}, {0x2c, 0xa8, 0xb1, 0xff}}},\n    {{{    39,     19,    -91}, 0, { -3704,   3042}, {0xb6, 0x29, 0xa2, 0xff}}},\n    {{{     0,    -40,    -52}, 0, { -2928,   3600}, {0x91, 0xd3, 0xd8, 0xff}}},\n    {{{    39,    -79,      0}, 0, { -1868,   3042}, {0xde, 0x86, 0x00, 0xff}}},\n    {{{     0,    -40,     53}, 0, {  -808,   3600}, {0x9c, 0xd0, 0x3c, 0xff}}},\n};\n\n// 0x0500ACF0\nstatic const Vtx ukiki_seg5_vertex_0500ACF0[] = {\n    {{{    46,    -22,    -91}, 0, { -3704,   2950}, {0xbc, 0xb1, 0xba, 0xff}}},\n    {{{   104,    -40,    -86}, 0, { -3612,   2114}, {0x2c, 0xa8, 0xb1, 0xff}}},\n    {{{   144,    -81,    -42}, 0, { -2732,   1554}, {0x2a, 0x93, 0xd0, 0xff}}},\n    {{{   104,    -40,     87}, 0, {  -124,   2114}, {0x2c, 0xa8, 0x4f, 0xff}}},\n    {{{   144,    -81,     43}, 0, { -1000,   1554}, {0x19, 0x92, 0x39, 0xff}}},\n    {{{   188,    -23,     43}, 0, { -1000,    918}, {0x6f, 0xdd, 0x32, 0xff}}},\n    {{{    46,    -22,     92}, 0, {     0,   2950}, {0xc8, 0xa7, 0x45, 0xff}}},\n    {{{    39,    -79,      0}, 0, { -1868,   3042}, {0xde, 0x86, 0x00, 0xff}}},\n    {{{     0,     79,    -32}, 0, { -2536,   3600}, {0x93, 0x25, 0xcd, 0xff}}},\n    {{{    39,     19,    -91}, 0, { -3704,   3042}, {0xb6, 0x29, 0xa2, 0xff}}},\n    {{{     0,    -40,    -52}, 0, { -2928,   3600}, {0x91, 0xd3, 0xd8, 0xff}}},\n    {{{    39,     19,     92}, 0, {     0,   3042}, {0xbc, 0x38, 0x5b, 0xff}}},\n    {{{     0,    -40,     53}, 0, {  -808,   3600}, {0x9c, 0xd0, 0x3c, 0xff}}},\n    {{{     0,    -40,    -52}, 0, { -2852,   3826}, {0x91, 0xd3, 0xd8, 0xff}}},\n    {{{     0,    -40,     53}, 0, {  -920,   3826}, {0x9c, 0xd0, 0x3c, 0xff}}},\n    {{{     0,     79,     33}, 0, { -1280,   3826}, {0x8e, 0x28, 0x26, 0xff}}},\n};\n\n// 0x0500ADF0\nstatic const Vtx ukiki_seg5_vertex_0500ADF0[] = {\n    {{{   116,     50,    -82}, 0, {    64,    174}, {0x16, 0x2b, 0x8b, 0xff}}},\n    {{{   139,    115,    -40}, 0, {   540,     -8}, {0x26, 0x68, 0xc3, 0xff}}},\n    {{{   178,     68,    -51}, 0, {   416,   -306}, {0x68, 0x30, 0xcb, 0xff}}},\n    {{{   139,    115,     41}, 0, {  1440,     -8}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{   178,     68,     52}, 0, {  1564,   -306}, {0x5c, 0x2c, 0x4a, 0xff}}},\n    {{{   116,     50,     83}, 0, {  1916,    174}, {0x16, 0x2b, 0x75, 0xff}}},\n    {{{    39,     19,     92}, 0, {  -220,   3044}, {0xbc, 0x38, 0x5b, 0xff}}},\n    {{{     0,     79,     33}, 0, { -1280,   3826}, {0x8e, 0x28, 0x26, 0xff}}},\n    {{{     0,    -40,     53}, 0, {  -920,   3826}, {0x9c, 0xd0, 0x3c, 0xff}}},\n    {{{     0,    -40,    -52}, 0, { -2852,   3826}, {0x91, 0xd3, 0xd8, 0xff}}},\n    {{{     0,     79,    -32}, 0, { -2492,   3826}, {0x93, 0x25, 0xcd, 0xff}}},\n    {{{     0,     79,     33}, 0, {  1360,   1058}, {0x8e, 0x28, 0x26, 0xff}}},\n    {{{    43,    100,     68}, 0, {  1744,    734}, {0xde, 0x4e, 0x5d, 0xff}}},\n    {{{    40,    126,      0}, 0, {   992,    754}, {0xd2, 0x76, 0x00, 0xff}}},\n    {{{     0,     79,    -32}, 0, {   620,   1058}, {0x93, 0x25, 0xcd, 0xff}}},\n    {{{    39,     19,     92}, 0, {  2008,    760}, {0xbc, 0x38, 0x5b, 0xff}}},\n};\n\n// 0x0500AEF0\nstatic const Vtx ukiki_seg5_vertex_0500AEF0[] = {\n    {{{    43,    100,    -67}, 0, {   236,    734}, {0xde, 0x4e, 0xa3, 0xff}}},\n    {{{    40,    126,      0}, 0, {   992,    754}, {0xd2, 0x76, 0x00, 0xff}}},\n    {{{   139,    115,    -40}, 0, {   540,     -8}, {0x26, 0x68, 0xc3, 0xff}}},\n    {{{     0,     79,    -32}, 0, {   620,   1058}, {0x93, 0x25, 0xcd, 0xff}}},\n    {{{   139,    115,     41}, 0, {  1440,     -8}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{    39,     19,    -91}, 0, {   -28,    760}, {0xb6, 0x29, 0xa2, 0xff}}},\n    {{{   116,     50,    -82}, 0, {    64,    174}, {0x16, 0x2b, 0x8b, 0xff}}},\n};\n\n// 0x0500AF60\nstatic const Vtx ukiki_seg5_vertex_0500AF60[] = {\n    {{{    89,     14,   -164}, 0, {     0,      0}, {0xf3, 0xea, 0x84, 0xff}}},\n    {{{   143,     14,   -129}, 0, {     0,      0}, {0x74, 0xe9, 0xd5, 0xff}}},\n    {{{   104,    -40,    -86}, 0, {     0,      0}, {0x2c, 0xa8, 0xb1, 0xff}}},\n    {{{   137,     14,    -86}, 0, {     0,      0}, {0x3e, 0x42, 0xa8, 0xff}}},\n    {{{    46,    -22,    -91}, 0, {     0,      0}, {0xbc, 0xb1, 0xba, 0xff}}},\n    {{{    39,     19,    -91}, 0, {     0,      0}, {0xb6, 0x29, 0xa2, 0xff}}},\n    {{{    34,     14,   -131}, 0, {     0,      0}, {0xa5, 0x4e, 0xd8, 0xff}}},\n    {{{    46,    -22,     92}, 0, {     0,      0}, {0xc8, 0xa7, 0x45, 0xff}}},\n    {{{    34,     14,    132}, 0, {     0,      0}, {0x8a, 0x06, 0x2e, 0xff}}},\n    {{{    39,     19,     92}, 0, {     0,      0}, {0xbc, 0x38, 0x5b, 0xff}}},\n    {{{    89,     14,    165}, 0, {     0,      0}, {0xf4, 0x2c, 0x76, 0xff}}},\n    {{{   104,    -40,     87}, 0, {     0,      0}, {0x2c, 0xa8, 0x4f, 0xff}}},\n    {{{   137,     14,     87}, 0, {     0,      0}, {0x45, 0x2e, 0x5f, 0xff}}},\n    {{{   143,     14,    130}, 0, {     0,      0}, {0x74, 0xe9, 0x2b, 0xff}}},\n};\n\n// 0x0500B040 - 0x0500B1D8\nconst Gfx ukiki_seg5_dl_0500B040[] = {\n    gsSPLight(&ukiki_seg5_lights_0500ABC0.l, 1),\n    gsSPLight(&ukiki_seg5_lights_0500ABC0.a, 2),\n    gsSPVertex(ukiki_seg5_vertex_0500ABF0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  5,  2,  4, 0x0),\n    gsSP2Triangles( 2,  6,  0, 0x0,  7,  3,  8, 0x0),\n    gsSP2Triangles( 3,  0,  9, 0x0,  3,  9,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 11,  8, 0x0),\n    gsSP2Triangles( 0, 10,  9, 0x0, 12,  7,  8, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(ukiki_seg5_vertex_0500ACF0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  4,  3, 0x0,  5,  4,  2, 0x0),\n    gsSP2Triangles( 2,  7,  0, 0x0,  0,  8,  9, 0x0),\n    gsSP2Triangles( 0, 10,  8, 0x0,  0,  7, 10, 0x0),\n    gsSP2Triangles( 7,  2,  4, 0x0, 11, 12,  6, 0x0),\n    gsSP2Triangles( 7,  6, 12, 0x0,  6,  7,  4, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(ukiki_seg5_vertex_0500ADF0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  7, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 14, 11, 13, 0x0),\n    gsSP2Triangles(15, 12, 11, 0x0, 13, 12,  3, 0x0),\n    gsSP2Triangles( 5,  3, 12, 0x0, 12, 15,  5, 0x0),\n    gsSPVertex(ukiki_seg5_vertex_0500AEF0, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  0,  5,  3, 0x0),\n    gsSP2Triangles( 5,  0,  6, 0x0,  0,  2,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500B1D8 - 0x0500B278\nconst Gfx ukiki_seg5_dl_0500B1D8[] = {\n    gsSPLight(&ukiki_seg5_lights_0500ABD8.l, 1),\n    gsSPLight(&ukiki_seg5_lights_0500ABD8.a, 2),\n    gsSPVertex(ukiki_seg5_vertex_0500AF60, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  4,  0, 0x0,  5,  6,  4, 0x0),\n    gsSP2Triangles( 0,  4,  6, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 3,  0,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  8,  7, 0x0,  7, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 11, 0x0, 11, 13, 10, 0x0),\n    gsSP2Triangles(10, 12,  9, 0x0, 10, 13, 12, 0x0),\n    gsSP2Triangles(10,  9,  8, 0x0,  3,  6,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500B278 - 0x0500B2B8\nconst Gfx ukiki_seg5_dl_0500B278[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500B2B8 - 0x0500B2E8\nconst Gfx ukiki_seg5_dl_0500B2B8[] = {\n    gsSPDisplayList(ukiki_seg5_dl_0500B040),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(ukiki_seg5_dl_0500B1D8),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500B2E8 - 0x0500B310\nconst Gfx ukiki_seg5_dl_0500B2E8[] = {\n    gsSPDisplayList(ukiki_seg5_dl_0500B278),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ukiki_seg5_texture_05007BC0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPBranchList(ukiki_seg5_dl_0500B2B8),\n};\n\n// 0x0500B310 - 0x0500B338\nconst Gfx ukiki_seg5_dl_0500B310[] = {\n    gsSPDisplayList(ukiki_seg5_dl_0500B278),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ukiki_seg5_texture_05008BC0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPBranchList(ukiki_seg5_dl_0500B2B8),\n};\n\n// 0x0500B338\nstatic const Lights1 ukiki_seg5_lights_0500B338 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0500B350\nstatic const Vtx ukiki_seg5_vertex_0500B350[] = {\n    {{{    45,    -43,     43}, 0, {   350,   -182}, {0x26, 0x9e, 0x45, 0xff}}},\n    {{{    42,      5,     63}, 0, {   386,    460}, {0x30, 0x02, 0x75, 0xff}}},\n    {{{   -39,      5,     63}, 0, {   572,    496}, {0xe1, 0x01, 0x7a, 0xff}}},\n    {{{    82,      2,     24}, 0, {   270,    412}, {0x78, 0xfc, 0x27, 0xff}}},\n    {{{    45,    -44,    -47}, 0, {    88,   -194}, {0x3f, 0xa0, 0xcb, 0xff}}},\n    {{{    59,     67,    -36}, 0, {   134,   1270}, {0x60, 0x40, 0xcd, 0xff}}},\n    {{{    64,     67,      0}, 0, {   224,   1268}, {0x6d, 0x39, 0x1e, 0xff}}},\n    {{{    82,      2,    -44}, 0, {   142,    412}, {0x63, 0xfe, 0xb2, 0xff}}},\n    {{{    35,     61,     41}, 0, {   362,   1212}, {0x29, 0x3e, 0x66, 0xff}}},\n    {{{    35,    107,      4}, 0, {   242,   1812}, {0x3f, 0x6b, 0x18, 0xff}}},\n    {{{   -34,     61,     41}, 0, {   592,   1242}, {0xc7, 0x3b, 0x60, 0xff}}},\n    {{{   -34,    107,      4}, 0, {   712,   1842}, {0xcb, 0x6a, 0x2a, 0xff}}},\n    {{{     0,    107,    -36}, 0, {  1002,   1826}, {0x00, 0x66, 0xb5, 0xff}}},\n    {{{   -14,     68,    -61}, 0, {   954,   1320}, {0xe8, 0x2e, 0x8d, 0xff}}},\n    {{{   -59,     66,    -35}, 0, {   824,   1314}, {0xab, 0x41, 0xbd, 0xff}}},\n};\n\n// 0x0500B440\nstatic const Vtx ukiki_seg5_vertex_0500B440[] = {\n    {{{   -80,      2,    -44}, 0, {   816,    484}, {0x8b, 0xee, 0xd5, 0xff}}},\n    {{{   -44,    -43,     43}, 0, {   616,   -142}, {0xb9, 0xa5, 0x34, 0xff}}},\n    {{{   -80,      2,     24}, 0, {   688,    484}, {0x90, 0x03, 0x3a, 0xff}}},\n    {{{   -63,     66,      1}, 0, {   730,   1316}, {0x91, 0x36, 0x19, 0xff}}},\n    {{{   -59,     66,    -35}, 0, {   824,   1314}, {0xab, 0x41, 0xbd, 0xff}}},\n    {{{   -34,    107,      4}, 0, {   712,   1842}, {0xcb, 0x6a, 0x2a, 0xff}}},\n    {{{   -34,     61,     41}, 0, {   592,   1242}, {0xc7, 0x3b, 0x60, 0xff}}},\n    {{{    59,     67,    -36}, 0, {   134,   1270}, {0x60, 0x40, 0xcd, 0xff}}},\n    {{{    15,     68,    -61}, 0, {    12,   1306}, {0x24, 0x30, 0x91, 0xff}}},\n    {{{     0,    107,    -36}, 0, {   -20,   1826}, {0x00, 0x66, 0xb5, 0xff}}},\n    {{{    35,    107,      4}, 0, {   242,   1812}, {0x3f, 0x6b, 0x18, 0xff}}},\n    {{{    82,      2,    -44}, 0, {   142,    412}, {0x63, 0xfe, 0xb2, 0xff}}},\n    {{{   -39,      5,     63}, 0, {   572,    496}, {0xe1, 0x01, 0x7a, 0xff}}},\n    {{{    45,    -43,     43}, 0, {   350,   -182}, {0x26, 0x9e, 0x45, 0xff}}},\n    {{{   -44,    -44,    -47}, 0, {   862,   -154}, {0xde, 0x9a, 0xbe, 0xff}}},\n    {{{    45,    -43,     43}, 0, {  1372,   -182}, {0x26, 0x9e, 0x45, 0xff}}},\n};\n\n// 0x0500B540\nstatic const Vtx ukiki_seg5_vertex_0500B540[] = {\n    {{{    35,      2,    -71}, 0, {    40,    434}, {0x15, 0xf1, 0x84, 0xff}}},\n    {{{    82,      2,    -44}, 0, {   142,    412}, {0x63, 0xfe, 0xb2, 0xff}}},\n    {{{    45,    -44,    -47}, 0, {    88,   -194}, {0x3f, 0xa0, 0xcb, 0xff}}},\n    {{{    15,     68,    -61}, 0, {    12,   1306}, {0x24, 0x30, 0x91, 0xff}}},\n    {{{     0,    107,    -36}, 0, {  1002,   1826}, {0x00, 0x66, 0xb5, 0xff}}},\n    {{{    15,     68,    -61}, 0, {  1034,   1306}, {0x24, 0x30, 0x91, 0xff}}},\n    {{{   -14,     68,    -61}, 0, {   954,   1320}, {0xe8, 0x2e, 0x8d, 0xff}}},\n    {{{    35,      2,    -71}, 0, {  1062,    434}, {0x15, 0xf1, 0x84, 0xff}}},\n    {{{   -39,      2,    -71}, 0, {   906,    466}, {0xd6, 0xff, 0x89, 0xff}}},\n    {{{   -59,     66,    -35}, 0, {   824,   1314}, {0xab, 0x41, 0xbd, 0xff}}},\n    {{{   -80,      2,    -44}, 0, {   816,    484}, {0x8b, 0xee, 0xd5, 0xff}}},\n    {{{   -44,    -44,    -47}, 0, {   862,   -154}, {0xde, 0x9a, 0xbe, 0xff}}},\n    {{{    45,    -44,    -47}, 0, {  1110,   -194}, {0x3f, 0xa0, 0xcb, 0xff}}},\n    {{{    45,    -43,     43}, 0, {  1372,   -182}, {0x26, 0x9e, 0x45, 0xff}}},\n};\n\n// 0x0500B620\nstatic const Vtx ukiki_seg5_vertex_0500B620[] = {\n    {{{   -44,    -44,    -47}, 0, {   976,    850}, {0xde, 0x9a, 0xbe, 0xff}}},\n    {{{    35,      2,    -71}, 0, {    56,    194}, {0x15, 0xf1, 0x84, 0xff}}},\n    {{{    45,    -44,    -47}, 0, {   -88,    842}, {0x3f, 0xa0, 0xcb, 0xff}}},\n    {{{   -39,      2,    -71}, 0, {   932,    200}, {0xd6, 0xff, 0x89, 0xff}}},\n};\n\n// 0x0500B660 - 0x0500B7E8\nconst Gfx ukiki_seg5_dl_0500B660[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ukiki_seg5_texture_0500A3C0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ukiki_seg5_lights_0500B338.l, 1),\n    gsSPLight(&ukiki_seg5_lights_0500B338.a, 2),\n    gsSPVertex(ukiki_seg5_vertex_0500B350, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 3,  0,  4, 0x0,  3,  5,  6, 0x0),\n    gsSP2Triangles( 3,  7,  5, 0x0,  3,  4,  7, 0x0),\n    gsSP2Triangles( 8,  1,  3, 0x0,  3,  6,  8, 0x0),\n    gsSP2Triangles( 9,  8,  6, 0x0,  5,  9,  6, 0x0),\n    gsSP2Triangles( 2,  8, 10, 0x0,  2,  1,  8, 0x0),\n    gsSP2Triangles(11, 10,  8, 0x0, 11,  8,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 11, 12, 14, 0x0),\n    gsSP1Triangle(11,  9, 12, 0x0),\n    gsSPVertex(ukiki_seg5_vertex_0500B440, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 4,  3,  5, 0x0,  3,  6,  5, 0x0),\n    gsSP2Triangles( 0,  2,  3, 0x0,  2,  6,  3, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles(11,  8,  7, 0x0, 12,  2,  1, 0x0),\n    gsSP2Triangles( 2, 12,  6, 0x0, 13, 12,  1, 0x0),\n    gsSP2Triangles(14, 15,  1, 0x0,  0, 14,  1, 0x0),\n    gsSPVertex(ukiki_seg5_vertex_0500B540, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  6,  5, 0x0),\n    gsSP2Triangles( 7,  8,  6, 0x0,  9,  6,  8, 0x0),\n    gsSP2Triangles(10,  8, 11, 0x0,  9,  8, 10, 0x0),\n    gsSP1Triangle(11, 12, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500B7E8 - 0x0500B820\nconst Gfx ukiki_seg5_dl_0500B7E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ukiki_seg5_texture_05009BC0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ukiki_seg5_vertex_0500B620, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500B820 - 0x0500B888\nconst Gfx ukiki_seg5_dl_0500B820[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ukiki_seg5_dl_0500B660),\n    gsSPDisplayList(ukiki_seg5_dl_0500B7E8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500B888\nstatic const Lights1 ukiki_seg5_lights_0500B888 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0500B8A0\nstatic const Vtx ukiki_seg5_vertex_0500B8A0[] = {\n    {{{    88,     19,    -15}, 0, {  1848,   -114}, {0x5f, 0x3d, 0xc6, 0xff}}},\n    {{{    89,    -13,    -15}, 0, {  1310,   -140}, {0x38, 0xb1, 0xaf, 0xff}}},\n    {{{     0,      0,      1}, 0, {  2896,   1502}, {0x82, 0xfc, 0x00, 0xff}}},\n    {{{    89,    -13,     17}, 0, {  2828,   -140}, {0x62, 0xca, 0x39, 0xff}}},\n    {{{    89,    -13,     17}, 0, {   718,   -140}, {0x62, 0xca, 0x39, 0xff}}},\n    {{{     0,      0,      1}, 0, {   788,   1502}, {0x82, 0xfc, 0x00, 0xff}}},\n    {{{    88,     19,     17}, 0, {   214,   -114}, {0x32, 0x53, 0x51, 0xff}}},\n    {{{    88,     19,     17}, 0, {  2322,   -114}, {0x32, 0x53, 0x51, 0xff}}},\n};\n\n// 0x0500B920 - 0x0500B988\nconst Gfx ukiki_seg5_dl_0500B920[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ukiki_seg5_texture_0500A3C0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ukiki_seg5_lights_0500B888.l, 1),\n    gsSPLight(&ukiki_seg5_lights_0500B888.a, 2),\n    gsSPVertex(ukiki_seg5_vertex_0500B8A0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  4,  6,  5, 0x0),\n    gsSP2Triangles( 0,  7,  3, 0x0,  7,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500B988 - 0x0500B9E8\nconst Gfx ukiki_seg5_dl_0500B988[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ukiki_seg5_dl_0500B920),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500B9E8\nstatic const Lights1 ukiki_seg5_lights_0500B9E8 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0500BA00\nstatic const Vtx ukiki_seg5_vertex_0500BA00[] = {\n    {{{    73,    -12,    -23}, 0, {   248,    740}, {0x2f, 0x98, 0xca, 0xff}}},\n    {{{    73,    -12,     25}, 0, {   950,    740}, {0x50, 0xdb, 0x5b, 0xff}}},\n    {{{    -1,    -12,     16}, 0, {  1256,   -602}, {0xca, 0x99, 0x30, 0xff}}},\n    {{{    68,     35,    -23}, 0, {  2128,    900}, {0x45, 0x35, 0xa5, 0xff}}},\n    {{{    73,    -12,    -23}, 0, {  2752,    740}, {0x2f, 0x98, 0xca, 0xff}}},\n    {{{    68,     35,     25}, 0, {  1554,    900}, {0x16, 0x70, 0x36, 0xff}}},\n    {{{    -4,     18,     16}, 0, {  1660,   -498}, {0xa0, 0x1d, 0x4d, 0xff}}},\n    {{{    -1,    -12,    -14}, 0, {  2434,   -602}, {0xa9, 0xd0, 0xb2, 0xff}}},\n    {{{    -4,     18,    -14}, 0, {  2020,   -498}, {0xb4, 0x59, 0xd0, 0xff}}},\n};\n\n// 0x0500BA90 - 0x0500BB28\nconst Gfx ukiki_seg5_dl_0500BA90[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ukiki_seg5_texture_0500A3C0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ukiki_seg5_lights_0500B9E8.l, 1),\n    gsSPLight(&ukiki_seg5_lights_0500B9E8.a, 2),\n    gsSPVertex(ukiki_seg5_vertex_0500BA00, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  4, 0x0),\n    gsSP2Triangles( 1,  5,  6, 0x0,  1,  6,  2, 0x0),\n    gsSP2Triangles( 3,  5,  1, 0x0,  4,  2,  7, 0x0),\n    gsSP2Triangles( 7,  2,  6, 0x0,  3,  4,  7, 0x0),\n    gsSP2Triangles( 3,  7,  8, 0x0,  7,  6,  8, 0x0),\n    gsSP2Triangles( 5,  3,  8, 0x0,  5,  8,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500BB28 - 0x0500BB88\nconst Gfx ukiki_seg5_dl_0500BB28[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ukiki_seg5_dl_0500BA90),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500BB88\nstatic const Lights1 ukiki_seg5_lights_0500BB88 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0500BBA0\nstatic const Vtx ukiki_seg5_vertex_0500BBA0[] = {\n    {{{     0,      0,      0}, 0, {   498,   -748}, {0x82, 0xfc, 0x00, 0xff}}},\n    {{{    89,    -13,    -16}, 0, {   290,   1200}, {0x38, 0xb1, 0xaf, 0xff}}},\n    {{{    89,    -13,     16}, 0, {  1014,   1200}, {0x62, 0xca, 0x39, 0xff}}},\n    {{{    88,     19,     16}, 0, {  1728,   1174}, {0x32, 0x53, 0x51, 0xff}}},\n    {{{    88,     19,    -16}, 0, {  2394,   1174}, {0x5f, 0x3d, 0xc6, 0xff}}},\n    {{{    89,    -13,    -16}, 0, {  3066,   1200}, {0x38, 0xb1, 0xaf, 0xff}}},\n    {{{     0,      0,      0}, 0, {  3274,   -748}, {0x82, 0xfc, 0x00, 0xff}}},\n};\n\n// 0x0500BC10 - 0x0500BC78\nconst Gfx ukiki_seg5_dl_0500BC10[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ukiki_seg5_texture_0500A3C0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ukiki_seg5_lights_0500BB88.l, 1),\n    gsSPLight(&ukiki_seg5_lights_0500BB88.a, 2),\n    gsSPVertex(ukiki_seg5_vertex_0500BBA0, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 2,  4,  3, 0x0,  2,  5,  4, 0x0),\n    gsSP2Triangles( 6,  3,  4, 0x0,  6,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500BC78 - 0x0500BCD8\nconst Gfx ukiki_seg5_dl_0500BC78[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ukiki_seg5_dl_0500BC10),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500BCD8\nstatic const Lights1 ukiki_seg5_lights_0500BCD8 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0500BCF0\nstatic const Vtx ukiki_seg5_vertex_0500BCF0[] = {\n    {{{    -4,     18,     15}, 0, {  1770,   -134}, {0xa0, 0x1d, 0x4d, 0xff}}},\n    {{{    -1,    -12,    -15}, 0, {   356,   -128}, {0xa9, 0xd0, 0xb2, 0xff}}},\n    {{{    -1,    -12,     15}, 0, {  1024,   -128}, {0xca, 0x99, 0x30, 0xff}}},\n    {{{    -4,     18,    -15}, 0, {  2572,   -134}, {0xb4, 0x59, 0xd0, 0xff}}},\n    {{{    68,     35,     24}, 0, {  1792,    948}, {0x16, 0x70, 0x36, 0xff}}},\n    {{{    -1,    -12,    -15}, 0, {  3280,   -128}, {0xa9, 0xd0, 0xb2, 0xff}}},\n    {{{    73,    -12,     24}, 0, {  1048,    958}, {0x50, 0xdb, 0x5b, 0xff}}},\n    {{{    73,    -12,    -24}, 0, {   338,    958}, {0x2f, 0x98, 0xca, 0xff}}},\n    {{{    68,     35,    -24}, 0, {  2544,    948}, {0x45, 0x35, 0xa5, 0xff}}},\n    {{{    73,    -12,     24}, 0, {  3974,    958}, {0x50, 0xdb, 0x5b, 0xff}}},\n    {{{    73,    -12,    -24}, 0, {  3262,    958}, {0x2f, 0x98, 0xca, 0xff}}},\n};\n\n// 0x0500BDA0 - 0x0500BE38\nconst Gfx ukiki_seg5_dl_0500BDA0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ukiki_seg5_texture_0500A3C0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ukiki_seg5_lights_0500BCD8.l, 1),\n    gsSPLight(&ukiki_seg5_lights_0500BCD8.a, 2),\n    gsSPVertex(ukiki_seg5_vertex_0500BCF0, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 0,  3,  5, 0x0,  0,  2,  6, 0x0),\n    gsSP2Triangles( 0,  6,  4, 0x0,  2,  1,  7, 0x0),\n    gsSP2Triangles( 2,  7,  6, 0x0,  3,  4,  8, 0x0),\n    gsSP2Triangles( 9,  8,  4, 0x0,  5,  3,  8, 0x0),\n    gsSP2Triangles( 5,  8, 10, 0x0,  9, 10,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500BE38 - 0x0500BE98\nconst Gfx ukiki_seg5_dl_0500BE38[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ukiki_seg5_dl_0500BDA0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500BE98\nstatic const Lights1 ukiki_seg5_lights_0500BE98 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0500BEB0\nstatic const Vtx ukiki_seg5_vertex_0500BEB0[] = {\n    {{{    47,     29,      0}, 0, {  1588,     60}, {0x4e, 0x5b, 0xd9, 0xff}}},\n    {{{    53,    -18,      1}, 0, {  2668,    104}, {0x63, 0xbb, 0x26, 0xff}}},\n    {{{    50,      4,    -23}, 0, {   980,     84}, {0x33, 0xea, 0x8f, 0xff}}},\n    {{{    -1,     -2,    -18}, 0, {  1002,   1040}, {0xae, 0x0e, 0xa1, 0xff}}},\n    {{{    53,    -18,      1}, 0, {   496,    104}, {0x63, 0xbb, 0x26, 0xff}}},\n    {{{     2,    -33,      1}, 0, {   500,   1068}, {0xd7, 0x90, 0xd7, 0xff}}},\n    {{{    50,      6,     25}, 0, {    18,     82}, {0x2b, 0x23, 0x72, 0xff}}},\n    {{{    -2,      0,     19}, 0, {   -20,   1038}, {0xb2, 0xdd, 0x5d, 0xff}}},\n    {{{    -6,     29,      0}, 0, {  1592,   1010}, {0xba, 0x62, 0x26, 0xff}}},\n    {{{    -2,      0,     19}, 0, {  2150,   1038}, {0xb2, 0xdd, 0x5d, 0xff}}},\n    {{{    50,      6,     25}, 0, {  2190,     82}, {0x2b, 0x23, 0x72, 0xff}}},\n};\n\n// 0x0500BF60 - 0x0500BFF8\nconst Gfx ukiki_seg5_dl_0500BF60[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ukiki_seg5_texture_0500A3C0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ukiki_seg5_lights_0500BE98.l, 1),\n    gsSPLight(&ukiki_seg5_lights_0500BE98.a, 2),\n    gsSPVertex(ukiki_seg5_vertex_0500BEB0, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  2,  5,  3, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 3,  5,  7, 0x0,  0,  3,  8, 0x0),\n    gsSP2Triangles( 3,  9,  8, 0x0,  0, 10,  1, 0x0),\n    gsSP2Triangles(10,  0,  8, 0x0, 10,  8,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500BFF8 - 0x0500C058\nconst Gfx ukiki_seg5_dl_0500BFF8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ukiki_seg5_dl_0500BF60),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500C058\nstatic const Lights1 ukiki_seg5_lights_0500C058 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0500C070\nstatic const Vtx ukiki_seg5_vertex_0500C070[] = {\n    {{{    45,     19,      0}, 0, {  2822,    894}, {0x69, 0x3d, 0xde, 0xff}}},\n    {{{    26,    -34,      1}, 0, {  1692,    926}, {0x2a, 0x8d, 0x1f, 0xff}}},\n    {{{    35,     -8,    -27}, 0, {  1100,    910}, {0x19, 0xcc, 0x8f, 0xff}}},\n    {{{    45,     19,      0}, 0, {   546,    894}, {0x69, 0x3d, 0xde, 0xff}}},\n    {{{    -4,      6,    -23}, 0, {  1112,   -128}, {0xb5, 0x35, 0xaa, 0xff}}},\n    {{{   -12,    -15,      1}, 0, {  1694,   -116}, {0xa3, 0xb1, 0xde, 0xff}}},\n    {{{    36,     -6,     29}, 0, {  2274,    908}, {0x35, 0x19, 0x70, 0xff}}},\n    {{{    -4,      7,     25}, 0, {  2264,   -130}, {0xa2, 0x03, 0x54, 0xff}}},\n    {{{     3,     29,      0}, 0, {   544,   -142}, {0xe9, 0x78, 0x1f, 0xff}}},\n    {{{    -4,      7,     25}, 0, {   -14,   -130}, {0xa2, 0x03, 0x54, 0xff}}},\n    {{{    36,     -6,     29}, 0, {    -2,    908}, {0x35, 0x19, 0x70, 0xff}}},\n};\n\n// 0x0500C120 - 0x0500C1B8\nconst Gfx ukiki_seg5_dl_0500C120[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ukiki_seg5_texture_0500A3C0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ukiki_seg5_lights_0500C058.l, 1),\n    gsSPLight(&ukiki_seg5_lights_0500C058.a, 2),\n    gsSPVertex(ukiki_seg5_vertex_0500C070, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 2,  1,  5, 0x0,  2,  5,  4, 0x0),\n    gsSP2Triangles( 1,  6,  7, 0x0,  1,  7,  5, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  4,  5,  7, 0x0),\n    gsSP2Triangles( 3,  4,  8, 0x0,  4,  9,  8, 0x0),\n    gsSP2Triangles(10,  3,  8, 0x0, 10,  8,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500C1B8 - 0x0500C218\nconst Gfx ukiki_seg5_dl_0500C1B8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ukiki_seg5_dl_0500C120),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500C218\nstatic const Lights1 ukiki_seg5_lights_0500C218 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0500C230\nstatic const Vtx ukiki_seg5_vertex_0500C230[] = {\n    {{{    -6,     29,      1}, 0, {  1878,     52}, {0x9c, 0x44, 0x25, 0xff}}},\n    {{{     2,    -33,      0}, 0, {  3150,    -22}, {0xb0, 0xa4, 0xde, 0xff}}},\n    {{{    -1,     -2,     19}, 0, {  1244,     14}, {0xd4, 0xd8, 0x6f, 0xff}}},\n    {{{    -2,      0,    -18}, 0, {  2480,     16}, {0xcb, 0x1d, 0x91, 0xff}}},\n    {{{    47,     29,      1}, 0, {  1872,   1100}, {0x2d, 0x6e, 0xd6, 0xff}}},\n    {{{    50,      4,     24}, 0, {  1194,   1070}, {0x4e, 0x1c, 0x60, 0xff}}},\n    {{{     2,    -33,      0}, 0, {   596,    -22}, {0xb0, 0xa4, 0xde, 0xff}}},\n    {{{    53,    -18,      0}, 0, {   592,   1042}, {0x48, 0xa2, 0x2b, 0xff}}},\n    {{{    50,      6,    -23}, 0, {   -10,   1072}, {0x53, 0xf9, 0xa1, 0xff}}},\n    {{{    50,      6,    -23}, 0, {  2546,   1072}, {0x53, 0xf9, 0xa1, 0xff}}},\n};\n\n// 0x0500C2D0 - 0x0500C368\nconst Gfx ukiki_seg5_dl_0500C2D0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ukiki_seg5_texture_0500A3C0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ukiki_seg5_lights_0500C218.l, 1),\n    gsSPLight(&ukiki_seg5_lights_0500C218.a, 2),\n    gsSPVertex(ukiki_seg5_vertex_0500C230, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 0,  3,  1, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 0,  5,  4, 0x0,  2,  6,  7, 0x0),\n    gsSP2Triangles( 2,  7,  5, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 5,  9,  4, 0x0,  3,  4,  9, 0x0),\n    gsSP2Triangles( 1,  3,  9, 0x0,  6,  8,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500C368 - 0x0500C3C8\nconst Gfx ukiki_seg5_dl_0500C368[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ukiki_seg5_dl_0500C2D0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500C3C8\nstatic const Lights1 ukiki_seg5_lights_0500C3C8 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0500C3E0\nstatic const Vtx ukiki_seg5_vertex_0500C3E0[] = {\n    {{{     3,     29,      1}, 0, {  3150,     -2}, {0xc8, 0x6d, 0x1f, 0xff}}},\n    {{{   -12,    -15,      0}, 0, {  1868,     42}, {0x90, 0xce, 0xe2, 0xff}}},\n    {{{    -4,      6,     24}, 0, {  2484,     20}, {0xbb, 0xf1, 0x69, 0xff}}},\n    {{{    35,     -8,     28}, 0, {  2514,    966}, {0x54, 0x00, 0x5f, 0xff}}},\n    {{{    45,     19,      1}, 0, {  3150,    938}, {0x4d, 0x5e, 0xdd, 0xff}}},\n    {{{    26,    -34,      0}, 0, {  1868,    990}, {0x00, 0x87, 0x23, 0xff}}},\n    {{{    36,     -6,    -27}, 0, {  3782,    964}, {0x41, 0xca, 0xa2, 0xff}}},\n    {{{     3,     29,      1}, 0, {   594,     -2}, {0xc8, 0x6d, 0x1f, 0xff}}},\n    {{{    -4,      7,    -23}, 0, {  1256,     20}, {0xd4, 0x36, 0x97, 0xff}}},\n    {{{    36,     -6,    -27}, 0, {  1226,    964}, {0x41, 0xca, 0xa2, 0xff}}},\n    {{{    45,     19,      1}, 0, {   596,    938}, {0x4d, 0x5e, 0xdd, 0xff}}},\n};\n\n// 0x0500C490 - 0x0500C528\nconst Gfx ukiki_seg5_dl_0500C490[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ukiki_seg5_texture_0500A3C0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ukiki_seg5_lights_0500C3C8.l, 1),\n    gsSPLight(&ukiki_seg5_lights_0500C3C8.a, 2),\n    gsSPVertex(ukiki_seg5_vertex_0500C3E0, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  2,  1,  5, 0x0),\n    gsSP2Triangles( 2,  5,  3, 0x0,  3,  5,  6, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  1, 0x0),\n    gsSP2Triangles( 1,  8,  9, 0x0,  1,  9,  5, 0x0),\n    gsSP2Triangles( 8,  7, 10, 0x0,  8, 10,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500C528 - 0x0500C588\nconst Gfx ukiki_seg5_dl_0500C528[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ukiki_seg5_dl_0500C490),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500C588\nstatic const Lights1 ukiki_seg5_lights_0500C588 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0500C5A0\nstatic const Vtx ukiki_seg5_vertex_0500C5A0[] = {\n    {{{    48,     11,     12}, 0, {  1362,     20}, {0x55, 0x52, 0x2c, 0xff}}},\n    {{{    46,    -11,    -10}, 0, {   876,    -10}, {0x46, 0xa0, 0xd4, 0xff}}},\n    {{{    48,     11,    -10}, 0, {  1132,     20}, {0x2d, 0x31, 0x95, 0xff}}},\n    {{{     7,     -4,     -7}, 0, {   862,   1056}, {0xbf, 0xd4, 0x9e, 0xff}}},\n    {{{     8,     11,     -7}, 0, {  1120,   1078}, {0xad, 0x56, 0xd8, 0xff}}},\n    {{{    46,    -11,     12}, 0, {   590,    -10}, {0x21, 0xc7, 0x6c, 0xff}}},\n    {{{     7,     -4,      8}, 0, {   604,   1056}, {0xa0, 0xb8, 0x27, 0xff}}},\n    {{{    48,     11,     12}, 0, {   340,     20}, {0x55, 0x52, 0x2c, 0xff}}},\n    {{{     8,     11,      8}, 0, {   352,   1078}, {0xc5, 0x35, 0x62, 0xff}}},\n    {{{     8,     11,     -7}, 0, {    98,   1078}, {0xad, 0x56, 0xd8, 0xff}}},\n    {{{    48,     11,    -10}, 0, {   110,     20}, {0x2d, 0x31, 0x95, 0xff}}},\n};\n\n// 0x0500C650 - 0x0500C6E8\nconst Gfx ukiki_seg5_dl_0500C650[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ukiki_seg5_texture_0500A3C0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ukiki_seg5_lights_0500C588.l, 1),\n    gsSPLight(&ukiki_seg5_lights_0500C588.a, 2),\n    gsSPVertex(ukiki_seg5_vertex_0500C5A0, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 1,  5,  6, 0x0,  1,  6,  3, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  9,  6,  8, 0x0),\n    gsSP2Triangles( 7,  9,  8, 0x0,  7, 10,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500C6E8 - 0x0500C748\nconst Gfx ukiki_seg5_dl_0500C6E8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ukiki_seg5_dl_0500C650),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500C748\nstatic const Lights1 ukiki_seg5_lights_0500C748 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0500C760\nstatic const Vtx ukiki_seg5_vertex_0500C760[] = {\n    {{{    47,     12,     14}, 0, {   160,    998}, {0x54, 0x54, 0x2b, 0xff}}},\n    {{{    46,    -14,    -13}, 0, {   924,   1008}, {0x4e, 0xa7, 0xd5, 0xff}}},\n    {{{    47,     12,    -13}, 0, {   538,    998}, {0x2d, 0x33, 0x96, 0xff}}},\n    {{{    -2,     11,    -10}, 0, {   546,    -98}, {0xa9, 0x52, 0xd7, 0xff}}},\n    {{{    -2,    -11,    -10}, 0, {   932,    -90}, {0xc5, 0xce, 0x9c, 0xff}}},\n    {{{    47,     12,     14}, 0, {  1694,    998}, {0x54, 0x54, 0x2b, 0xff}}},\n    {{{    46,    -14,     14}, 0, {  1314,   1008}, {0x2d, 0xca, 0x69, 0xff}}},\n    {{{    -2,    -11,     12}, 0, {  1306,    -90}, {0xa8, 0xaf, 0x28, 0xff}}},\n    {{{    -2,     11,     12}, 0, {   152,    -98}, {0xc8, 0x33, 0x65, 0xff}}},\n    {{{    -2,     11,     12}, 0, {  1686,    -98}, {0xc8, 0x33, 0x65, 0xff}}},\n};\n\n// 0x0500C800 - 0x0500C898\nconst Gfx ukiki_seg5_dl_0500C800[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ukiki_seg5_texture_0500A3C0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ukiki_seg5_lights_0500C748.l, 1),\n    gsSPLight(&ukiki_seg5_lights_0500C748.a, 2),\n    gsSPVertex(ukiki_seg5_vertex_0500C760, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  2,  4,  3, 0x0),\n    gsSP2Triangles( 5,  6,  1, 0x0,  1,  6,  7, 0x0),\n    gsSP2Triangles( 1,  7,  4, 0x0,  3,  4,  7, 0x0),\n    gsSP2Triangles( 0,  3,  8, 0x0,  3,  7,  9, 0x0),\n    gsSP2Triangles( 6,  5,  9, 0x0,  6,  9,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500C898 - 0x0500C8F8\nconst Gfx ukiki_seg5_dl_0500C898[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ukiki_seg5_dl_0500C800),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500C8F8\nstatic const Lights1 ukiki_seg5_lights_0500C8F8 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0500C910\nstatic const Vtx ukiki_seg5_vertex_0500C910[] = {\n    {{{    49,     16,     14}, 0, {   612,    -26}, {0x50, 0x57, 0x2b, 0xff}}},\n    {{{    49,    -15,    -13}, 0, {  1114,    -26}, {0x50, 0xa9, 0xd5, 0xff}}},\n    {{{    49,     16,    -13}, 0, {   370,    -16}, {0x2b, 0x35, 0x96, 0xff}}},\n    {{{    -2,     13,    -10}, 0, {   372,    996}, {0xa8, 0x51, 0xd8, 0xff}}},\n    {{{    49,    -15,    -13}, 0, {    92,    -26}, {0x50, 0xa9, 0xd5, 0xff}}},\n    {{{    -2,    -12,    -10}, 0, {    80,    990}, {0xc5, 0xce, 0x9c, 0xff}}},\n    {{{    -2,     13,     12}, 0, {   622,    990}, {0xc7, 0x32, 0x65, 0xff}}},\n    {{{    -2,    -12,    -10}, 0, {  1102,    990}, {0xc5, 0xce, 0x9c, 0xff}}},\n    {{{    -2,    -12,     12}, 0, {   884,    980}, {0xa8, 0xaf, 0x28, 0xff}}},\n    {{{    49,    -15,     14}, 0, {   886,    -36}, {0x2d, 0xcc, 0x69, 0xff}}},\n};\n\n// 0x0500C9B0 - 0x0500CA48\nconst Gfx ukiki_seg5_dl_0500C9B0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ukiki_seg5_texture_0500A3C0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ukiki_seg5_lights_0500C8F8.l, 1),\n    gsSPLight(&ukiki_seg5_lights_0500C8F8.a, 2),\n    gsSPVertex(ukiki_seg5_vertex_0500C910, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  2,  5,  3, 0x0),\n    gsSP2Triangles( 0,  3,  6, 0x0,  3,  7,  8, 0x0),\n    gsSP2Triangles( 3,  8,  6, 0x0,  0,  9,  1, 0x0),\n    gsSP2Triangles( 1,  9,  8, 0x0,  1,  8,  7, 0x0),\n    gsSP2Triangles( 9,  0,  6, 0x0,  9,  6,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500CA48 - 0x0500CAA8\nconst Gfx ukiki_seg5_dl_0500CA48[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ukiki_seg5_dl_0500C9B0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500CAA8\nstatic const Vtx ukiki_seg5_vertex_0500CAA8[] = {\n    {{{    22,    -23,    -14}, 0, {     0,      0}, {0xc6, 0x90, 0x00, 0x00}}},\n    {{{    22,    -23,     14}, 0, {     0,      0}, {0xc6, 0x90, 0x00, 0x00}}},\n    {{{   -11,     -5,     15}, 0, {     0,      0}, {0xc6, 0x90, 0x00, 0x00}}},\n    {{{   -11,     -5,    -15}, 0, {     0,      0}, {0xc6, 0x90, 0x00, 0xff}}},\n    {{{    50,      4,     22}, 0, {     0,      0}, {0x47, 0x69, 0x00, 0xff}}},\n    {{{    50,      4,    -21}, 0, {     0,      0}, {0x47, 0x69, 0x00, 0xff}}},\n    {{{    12,     30,    -21}, 0, {     0,      0}, {0x47, 0x69, 0x00, 0xff}}},\n    {{{    12,     30,     22}, 0, {     0,      0}, {0x47, 0x69, 0x00, 0xff}}},\n    {{{   -11,     -5,    -15}, 0, {     0,      0}, {0x97, 0x47, 0x00, 0xff}}},\n    {{{   -11,     -5,     15}, 0, {     0,      0}, {0x97, 0x47, 0x00, 0xff}}},\n    {{{    12,     30,     22}, 0, {     0,      0}, {0x97, 0x47, 0x00, 0xff}}},\n    {{{    12,     30,    -21}, 0, {     0,      0}, {0x97, 0x47, 0x00, 0xff}}},\n    {{{    50,      4,    -21}, 0, {     0,      0}, {0x59, 0xa6, 0x00, 0xff}}},\n    {{{    50,      4,     22}, 0, {     0,      0}, {0x59, 0xa6, 0x00, 0xff}}},\n    {{{    22,    -23,     14}, 0, {     0,      0}, {0x59, 0xa6, 0x00, 0xff}}},\n    {{{    22,    -23,    -14}, 0, {     0,      0}, {0x59, 0xa6, 0x00, 0xff}}},\n};\n\n// 0x0500CBA8\nstatic const Vtx ukiki_seg5_vertex_0500CBA8[] = {\n    {{{    22,    -23,     14}, 0, {     0,      0}, {0xf7, 0xee, 0x7d, 0xff}}},\n    {{{    50,      4,     22}, 0, {     0,      0}, {0xf7, 0xee, 0x7d, 0x00}}},\n    {{{    12,     30,     22}, 0, {     0,      0}, {0xf7, 0xee, 0x7d, 0x00}}},\n    {{{   -11,     -5,     15}, 0, {     0,      0}, {0xf7, 0xee, 0x7d, 0xff}}},\n    {{{    50,      4,    -21}, 0, {     0,      0}, {0xf7, 0xee, 0x83, 0xff}}},\n    {{{    22,    -23,    -14}, 0, {     0,      0}, {0xf7, 0xee, 0x83, 0xff}}},\n    {{{   -11,     -5,    -15}, 0, {     0,      0}, {0xf7, 0xee, 0x83, 0xff}}},\n    {{{    12,     30,    -21}, 0, {     0,      0}, {0xf7, 0xee, 0x83, 0xff}}},\n};\n\n// 0x0500CC28\nstatic const Vtx ukiki_seg5_vertex_0500CC28[] = {\n    {{{    12,     30,     21}, 0, {     0,      0}, {0xf7, 0xee, 0x7d, 0x00}}},\n    {{{   -11,     -5,     15}, 0, {     0,      0}, {0xf7, 0xee, 0x7d, 0x00}}},\n    {{{    22,    -23,     14}, 0, {     0,      0}, {0xf7, 0xee, 0x7d, 0x00}}},\n    {{{    50,      4,     21}, 0, {     0,      0}, {0xf7, 0xee, 0x7d, 0xff}}},\n    {{{   -11,     -5,    -15}, 0, {     0,      0}, {0xf7, 0xee, 0x83, 0xff}}},\n    {{{    12,     30,    -22}, 0, {     0,      0}, {0xf7, 0xee, 0x83, 0xff}}},\n    {{{    50,      4,    -22}, 0, {     0,      0}, {0xf7, 0xee, 0x83, 0xff}}},\n    {{{    22,    -23,    -14}, 0, {     0,      0}, {0xf7, 0xee, 0x83, 0xff}}},\n    {{{    22,    -23,     14}, 0, {     0,      0}, {0x59, 0xa6, 0x00, 0xff}}},\n    {{{    22,    -23,    -14}, 0, {     0,      0}, {0x59, 0xa6, 0x00, 0xff}}},\n    {{{    50,      4,    -22}, 0, {     0,      0}, {0x59, 0xa6, 0x00, 0xff}}},\n    {{{    50,      4,     21}, 0, {     0,      0}, {0x59, 0xa6, 0x00, 0xff}}},\n    {{{    12,     30,     21}, 0, {     0,      0}, {0x97, 0x47, 0x00, 0xff}}},\n    {{{    12,     30,    -22}, 0, {     0,      0}, {0x97, 0x47, 0x00, 0xff}}},\n    {{{   -11,     -5,    -15}, 0, {     0,      0}, {0x97, 0x47, 0x00, 0xff}}},\n    {{{   -11,     -5,     15}, 0, {     0,      0}, {0x97, 0x47, 0x00, 0xff}}},\n};\n\n// 0x0500CD28\nstatic const Vtx ukiki_seg5_vertex_0500CD28[] = {\n    {{{    12,     30,    -22}, 0, {     0,      0}, {0x47, 0x69, 0x00, 0xff}}},\n    {{{    12,     30,     21}, 0, {     0,      0}, {0x47, 0x69, 0x00, 0x00}}},\n    {{{    50,      4,     21}, 0, {     0,      0}, {0x47, 0x69, 0x00, 0x00}}},\n    {{{    50,      4,    -22}, 0, {     0,      0}, {0x47, 0x69, 0x00, 0xff}}},\n    {{{   -11,     -5,     15}, 0, {     0,      0}, {0xc6, 0x90, 0x00, 0xff}}},\n    {{{   -11,     -5,    -15}, 0, {     0,      0}, {0xc6, 0x90, 0x00, 0xff}}},\n    {{{    22,    -23,    -14}, 0, {     0,      0}, {0xc6, 0x90, 0x00, 0xff}}},\n    {{{    22,    -23,     14}, 0, {     0,      0}, {0xc6, 0x90, 0x00, 0xff}}},\n};\n\n// 0x0500CDA8\nstatic const Vtx ukiki_seg5_vertex_0500CDA8[] = {\n    {{{    81,     10,    -39}, 0, {     0,      0}, {0x68, 0xb9, 0x00, 0x00}}},\n    {{{    81,     10,      5}, 0, {     0,      0}, {0x58, 0xa8, 0x17, 0x00}}},\n    {{{    62,    -17,    -36}, 0, {     0,      0}, {0x18, 0x93, 0xc5, 0x00}}},\n    {{{   -26,     21,     23}, 0, {     0,      0}, {0x8f, 0xec, 0x34, 0xff}}},\n    {{{   -26,     21,    -25}, 0, {     0,      0}, {0xbd, 0xf5, 0x95, 0xff}}},\n    {{{   -22,      0,    -25}, 0, {     0,      0}, {0x9a, 0xc4, 0xd4, 0xff}}},\n    {{{   -22,      0,     23}, 0, {     0,      0}, {0xbb, 0xb5, 0x4a, 0xff}}},\n    {{{    36,    -14,     39}, 0, {     0,      0}, {0x24, 0x9b, 0x42, 0xff}}},\n    {{{   -26,     21,    -25}, 0, {     0,      0}, {0x0c, 0x7e, 0x00, 0xff}}},\n    {{{   -26,     21,     23}, 0, {     0,      0}, {0x0c, 0x7e, 0x00, 0xff}}},\n    {{{    66,     11,     39}, 0, {     0,      0}, {0x0c, 0x7e, 0x00, 0xff}}},\n    {{{    81,     10,      5}, 0, {     0,      0}, {0x0c, 0x7e, 0x00, 0xff}}},\n    {{{    81,     10,    -39}, 0, {     0,      0}, {0x0c, 0x7e, 0x00, 0xff}}},\n    {{{    66,     11,     39}, 0, {     0,      0}, {0x0e, 0xe4, 0x7a, 0xff}}},\n    {{{    81,     10,    -39}, 0, {     0,      0}, {0xf0, 0x00, 0x83, 0xff}}},\n};\n\n// 0x0500CE98\nstatic const Vtx ukiki_seg5_vertex_0500CE98[] = {\n    {{{    62,    -17,     41}, 0, {     0,      0}, {0x3b, 0x92, 0x12, 0x00}}},\n    {{{    36,    -14,    -34}, 0, {     0,      0}, {0xfc, 0x9f, 0xaf, 0x00}}},\n    {{{    66,     11,    -34}, 0, {     0,      0}, {0x4e, 0x24, 0xa4, 0x00}}},\n    {{{    81,     10,      0}, 0, {     0,      0}, {0x59, 0xa8, 0xee, 0xff}}},\n    {{{   -22,      0,     25}, 0, {     0,      0}, {0xbe, 0xb2, 0x4a, 0xff}}},\n    {{{    81,     10,     43}, 0, {     0,      0}, {0xeb, 0x00, 0x7d, 0xff}}},\n    {{{   -26,     21,     25}, 0, {     0,      0}, {0x8f, 0xec, 0x34, 0xff}}},\n    {{{   -22,      0,    -23}, 0, {     0,      0}, {0x98, 0xc6, 0xd6, 0xff}}},\n    {{{   -26,     21,    -23}, 0, {     0,      0}, {0xd2, 0x52, 0xac, 0xff}}},\n    {{{    81,     10,     43}, 0, {     0,      0}, {0x0c, 0x7e, 0x00, 0xff}}},\n    {{{    81,     10,      0}, 0, {     0,      0}, {0x0c, 0x7e, 0x00, 0xff}}},\n    {{{   -26,     21,     25}, 0, {     0,      0}, {0x0c, 0x7e, 0x00, 0xff}}},\n    {{{    81,     10,     43}, 0, {     0,      0}, {0x68, 0xb9, 0x00, 0xff}}},\n};\n\n// 0x0500CF68 - 0x0500CFF0\nconst Gfx ukiki_seg5_dl_0500CF68[] = {\n    gsSPLight(&ukiki_seg5_lights_05007BA0.l, 1),\n    gsSPLight(&ukiki_seg5_lights_05007BA0.a, 2),\n    gsSPVertex(ukiki_seg5_vertex_0500CAA8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(ukiki_seg5_vertex_0500CBA8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500CFF0 - 0x0500D078\nconst Gfx ukiki_seg5_dl_0500CFF0[] = {\n    gsSPLight(&ukiki_seg5_lights_05007BA0.l, 1),\n    gsSPLight(&ukiki_seg5_lights_05007BA0.a, 2),\n    gsSPVertex(ukiki_seg5_vertex_0500CC28, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(ukiki_seg5_vertex_0500CD28, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500D078 - 0x0500D108\nconst Gfx ukiki_seg5_dl_0500D078[] = {\n    gsSPLight(&ukiki_seg5_lights_05007BA0.l, 1),\n    gsSPLight(&ukiki_seg5_lights_05007BA0.a, 2),\n    gsSPVertex(ukiki_seg5_vertex_0500CDA8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  2,  7,  6, 0x0),\n    gsSP2Triangles( 2,  6,  5, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0,  8, 11, 12, 0x0),\n    gsSP2Triangles(13,  3,  6, 0x0, 13,  6,  7, 0x0),\n    gsSP2Triangles( 4, 14,  2, 0x0,  4,  2,  5, 0x0),\n    gsSP2Triangles( 1, 13,  7, 0x0,  1,  7,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500D108 - 0x0500D198\nconst Gfx ukiki_seg5_dl_0500D108[] = {\n    gsSPLight(&ukiki_seg5_lights_05007BA0.l, 1),\n    gsSPLight(&ukiki_seg5_lights_05007BA0.a, 2),\n    gsSPVertex(ukiki_seg5_vertex_0500CE98, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  0,  5, 0x0,  4,  5,  6, 0x0),\n    gsSP2Triangles( 1,  7,  8, 0x0,  1,  8,  2, 0x0),\n    gsSP2Triangles( 9, 10,  2, 0x0,  9,  2,  8, 0x0),\n    gsSP2Triangles( 9,  8, 11, 0x0,  4,  7,  1, 0x0),\n    gsSP2Triangles( 4,  1,  0, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  0,  3, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/unagi/anims/anim_0500FBF4.inc.c",
    "content": "// 0x0500E310\nstatic const s16 unagi_seg5_animvalue_0500E310[] = {\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0004, 0x0005,\n    0x0007, 0x0009, 0x000A, 0x000C, 0x000E, 0x000F, 0x0011, 0x0012,\n    0x0013, 0x0013, 0x0014, 0x0013, 0x0013, 0x0012, 0x0011, 0x0010,\n    0x000E, 0x000D, 0x000B, 0x000A, 0x0008, 0x0006, 0x0005, 0x0003,\n    0x0002, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001,\n    0x0002, 0x0003, 0x0005, 0x0006, 0x0008, 0x000A, 0x000B, 0x000D,\n    0x000E, 0x0010, 0x0011, 0x0012, 0x0013, 0x0013, 0x0014, 0x0013,\n    0x0013, 0x0012, 0x0011, 0x000F, 0x000E, 0x000C, 0x000A, 0x0009,\n    0x0007, 0x0005, 0x0004, 0x0002, 0x0001, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0001, 0x0002, 0x0004, 0x0005, 0x0007, 0x0009,\n    0x000A, 0x000C, 0x000E, 0x000F, 0x0011, 0x0012, 0x0013, 0x0013,\n    0x0014, 0x0013, 0x0013, 0x0012, 0x0011, 0x0010, 0x000E, 0x000D,\n    0x000B, 0x000A, 0x0008, 0x0006, 0x0005, 0x0003, 0x0002, 0x0001,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003,\n    0x0005, 0x0006, 0x0008, 0x000A, 0x000B, 0x000D, 0x000E, 0x0010,\n    0x0011, 0x0012, 0x0013, 0x0013, 0x0014, 0x0013, 0x0013, 0x0012,\n    0x0011, 0x000F, 0x000E, 0x000C, 0x000A, 0x0009, 0x0007, 0x0005,\n    0x0004, 0x0002, 0x0001, 0x0000, 0x0000, 0x3FFF, 0xFE8D, 0xFE67,\n    0xFE44, 0xFE25, 0xFE0A, 0xFDF3, 0xFDE1, 0xFDD3, 0xFDCB, 0xFDC8,\n    0xFDCB, 0xFDD3, 0xFDE1, 0xFDF3, 0xFE0A, 0xFE25, 0xFE44, 0xFE67,\n    0xFE8D, 0xFEB5, 0xFEE0, 0xFF0D, 0xFF3C, 0xFF6D, 0xFF9E, 0xFFD1,\n    0x0003, 0x0036, 0x0069, 0x009C, 0x00CD, 0x00FE, 0x012D, 0x015A,\n    0x0185, 0x01AE, 0x01D3, 0x01F6, 0x0215, 0x0230, 0x0247, 0x0259,\n    0x0267, 0x026F, 0x0272, 0x026F, 0x0267, 0x0259, 0x0247, 0x0230,\n    0x0215, 0x01F6, 0x01D3, 0x01AE, 0x0185, 0x015A, 0x012D, 0x00FE,\n    0x00CD, 0x009C, 0x0069, 0x0036, 0x0003, 0xFFD1, 0xFF9E, 0xFF6D,\n    0xFF3C, 0xFF0D, 0xFEE0, 0xFEB5, 0xFE8D, 0xFE67, 0xFE44, 0xFE25,\n    0xFE0A, 0xFDF3, 0xFDE1, 0xFDD3, 0xFDCB, 0xFDC8, 0xFDCA, 0xFDD1,\n    0xFDDC, 0xFDEB, 0xFDFE, 0xFE14, 0xFE2E, 0xFE4A, 0xFE6A, 0xFE8C,\n    0xFEB0, 0xFED6, 0xFEFE, 0xFF28, 0xFF52, 0xFF7E, 0xFFAB, 0xFFD9,\n    0x0006, 0x0034, 0x0061, 0x008F, 0x00BC, 0x00E8, 0x0113, 0x013C,\n    0x0164, 0x018B, 0x01AF, 0x01D1, 0x01F0, 0x020D, 0x0226, 0x023C,\n    0x024F, 0x025E, 0x0269, 0x0270, 0x0272, 0x026F, 0x0267, 0x0259,\n    0x0247, 0x0230, 0x0215, 0x01F6, 0x01D3, 0x01AE, 0x0185, 0x015A,\n    0x012D, 0x00FE, 0x00CD, 0x009C, 0x0069, 0x0036, 0x0003, 0xFFD1,\n    0xFF9E, 0xFF6D, 0x054B, 0x004E, 0x003E, 0x002D, 0x001C, 0x000B,\n    0xFFFA, 0xFFE9, 0xFFD8, 0xFFC7, 0xFFB7, 0xFFA7, 0xFF98, 0xFF8A,\n    0xFF7C, 0xFF6F, 0xFF64, 0xFF59, 0xFF50, 0xFF48, 0xFF42, 0xFF3E,\n    0xFF3B, 0xFF3A, 0xFF3B, 0xFF3E, 0xFF42, 0xFF48, 0xFF50, 0xFF59,\n    0xFF64, 0xFF6F, 0xFF7C, 0xFF8A, 0xFF98, 0xFFA7, 0xFFB7, 0xFFC7,\n    0xFFD8, 0xFFE9, 0xFFFA, 0x000B, 0x001C, 0x002D, 0x003E, 0x004E,\n    0x005E, 0x006D, 0x007B, 0x0089, 0x0096, 0x00A1, 0x00AC, 0x00B5,\n    0x00BD, 0x00C3, 0x00C7, 0x00CA, 0x00CB, 0x00CA, 0x00C7, 0x00C3,\n    0x00BD, 0x00B5, 0x00AC, 0x00A1, 0x0096, 0x0089, 0x007B, 0x006D,\n    0x005E, 0x004E, 0x003E, 0x002D, 0x001C, 0x000B, 0xFFFA, 0xFFE9,\n    0xFFD8, 0xFFC7, 0xFFB7, 0xFFA7, 0xFF98, 0xFF8A, 0xFF7C, 0xFF6F,\n    0xFF64, 0xFF59, 0xFF50, 0xFF48, 0xFF42, 0xFF3E, 0xFF3B, 0xFF3A,\n    0xFF3A, 0xFF3D, 0xFF40, 0xFF45, 0xFF4B, 0xFF52, 0xFF5A, 0xFF64,\n    0xFF6E, 0xFF79, 0xFF84, 0xFF91, 0xFF9E, 0xFFAB, 0xFFB9, 0xFFC7,\n    0xFFD6, 0xFFE5, 0xFFF4, 0x0002, 0x0011, 0x0020, 0x002F, 0x003E,\n    0x004C, 0x005A, 0x0067, 0x0074, 0x0081, 0x008C, 0x0097, 0x00A1,\n    0x00AB, 0x00B3, 0x00BA, 0x00C0, 0x00C5, 0x00C8, 0x00CA, 0x00CB,\n    0x00CA, 0x00C7, 0x00C3, 0x00BD, 0x00B5, 0x00AC, 0x00A1, 0x00D0,\n    0xAC84, 0xADD6, 0xAF28, 0xADD6, 0xAC84, 0xAB32, 0xA9E1, 0xAAEF,\n    0xABFD, 0xAD0B, 0xAE1A, 0xAF28, 0xADD6, 0xAC84, 0xAB32, 0xA9E1,\n    0xAAEF, 0xABFD, 0xAD0B, 0xAE1A, 0xAF28, 0xADD6, 0xAC84, 0xAB32,\n    0xA9E1, 0xAAEF, 0xABFD, 0xAD0B, 0xAE1A, 0xAF28, 0xADD6, 0xAC84,\n    0xAB32, 0xA9E1, 0xAAEF, 0xABFD, 0xAD0B, 0xAE1A, 0xAF28, 0xADD6,\n    0xAC84, 0xAB32, 0xA9E1, 0xAB32, 0xAC84, 0xADD6, 0xAF28, 0xAE1A,\n    0xAD0B, 0xABFD, 0xAAEF, 0xA9E1, 0xAB32, 0xAC84, 0xADD6, 0xAF28,\n    0xAE1A, 0xAD0B, 0xABFD, 0xAAEF, 0xA9E1, 0xAB32, 0xAC84, 0xADD6,\n    0xAF28, 0xADD6, 0xAC84, 0xAB32, 0xA9E1, 0xAB32, 0xAC84, 0xADD6,\n    0xAF28, 0xAC85, 0xA946, 0xA58C, 0xA177, 0x9D28, 0x98C0, 0x945E,\n    0x9025, 0x8C34, 0x88AD, 0x85AF, 0x835C, 0x81D5, 0x814D, 0x815C,\n    0x816B, 0x817B, 0x818A, 0x819A, 0x81A9, 0x81B8, 0x81C8, 0x81D7,\n    0x81E7, 0x81F6, 0x8205, 0x8215, 0x8224, 0x8234, 0x8243, 0x8252,\n    0x8262, 0x8271, 0x8281, 0x8290, 0x82A0, 0x82AF, 0x82BE, 0x82CE,\n    0x82DD, 0x82ED, 0x82FC, 0x830B, 0x831B, 0x832A, 0x833A, 0x8349,\n    0x8358, 0x8368, 0x8377, 0x8387, 0x8396, 0x83A6, 0x83B5, 0x83C4,\n    0x83D4, 0x83E3, 0x83F3, 0x8402, 0x8411, 0x8809, 0x8ECE, 0x9593,\n    0x9C57, 0xA31C, 0xA9E1, 0xAB32, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x0071, 0x0170, 0x0351, 0x05DD, 0x08DE,\n    0x0C1E, 0x0F65, 0x127C, 0x152F, 0x1744, 0x1887, 0x18CE, 0x18CE,\n    0x18CE, 0x18CE, 0x18CE, 0x18CE, 0x18CE, 0x18CE, 0x18CE, 0x18CE,\n    0x18CB, 0x1851, 0x173C, 0x15A6, 0x13A8, 0x115E, 0x0EE0, 0x0C49,\n    0x09B3, 0x0737, 0x04F0, 0x02F9, 0x0169, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x0128, 0x0209, 0x03BA, 0x0611, 0x08E4, 0x0C07, 0x0F50, 0x1294,\n    0x15A8, 0x1862, 0x1A97, 0x1C1D, 0x1C1D, 0x1C1D, 0x1C1D, 0x1C1D,\n    0x1C1D, 0x1C1D, 0x1C1D, 0x1C1D, 0x1C1D, 0x1C1D, 0x1C1D, 0x1C1D,\n    0x1C1D, 0x1B8A, 0x1A33, 0x182C, 0x158D, 0x126B, 0x0EDD, 0x0AF9,\n    0x06D5, 0x0288, 0xFE29, 0xF9CC, 0xF588, 0xF174, 0xEDA5, 0xEA33,\n    0xE733, 0xE4BC, 0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4,\n    0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4,\n    0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4, 0xE3A9,\n    0xE495, 0xE5A5, 0xE6D4, 0xE81F, 0xE981, 0xEAF8, 0xEC7E, 0xEE11,\n    0xEFAD, 0xF14C, 0xF2ED, 0xF48A, 0xF620, 0xF7AB, 0xF928, 0xFA92,\n    0xFBE5, 0xFD1E, 0xFE39, 0xFF32, 0x0004, 0x00AD, 0x0128, 0x0186,\n    0x01D9, 0x0221, 0x0260, 0x0295, 0x02C0, 0x02E3, 0x02FE, 0x0311,\n    0x031C, 0x0320, 0x031D, 0x0315, 0x0306, 0x02F2, 0x02D9, 0x02BC,\n    0x029A, 0x0275, 0x024D, 0x0222, 0x01F4, 0x01C4, 0x0193, 0x0161,\n    0x012E, 0x00FA, 0x00C7, 0x0094, 0x0063, 0x0032, 0x0004, 0xFFD9,\n    0xFFAF, 0xFF88, 0xFF65, 0xFF46, 0xFF2C, 0xFF16, 0xFF05, 0xFEFA,\n    0xFEF5, 0xFEF6, 0xFEFE, 0xFF0E, 0xFF25, 0xFF45, 0xFF6D, 0xFF9E,\n    0xFFD8, 0x001C, 0x006A, 0x00C4, 0xF979, 0xF96A, 0xF949, 0xF918,\n    0xF8DA, 0xF892, 0xF840, 0xF7E9, 0xF78F, 0xF733, 0xF6DA, 0xF684,\n    0xF634, 0xF5EE, 0xF5B3, 0xF586, 0xF569, 0xF55F, 0xF56A, 0xF591,\n    0xF5D3, 0xF62F, 0xF69E, 0xF71E, 0xF7AB, 0xF841, 0xF8DB, 0xF977,\n    0xFA0F, 0xFAA0, 0xFB27, 0xFB9E, 0xFC03, 0xFC52, 0xFC86, 0xFC9B,\n    0xFC90, 0xFC68, 0xFC25, 0xFBCD, 0xFB62, 0xFAE9, 0xFA65, 0xF9D9,\n    0xF94B, 0xF8BC, 0xF831, 0xF7AE, 0xF736, 0xF6CD, 0xF677, 0xF638,\n    0xF613, 0xF606, 0xF60D, 0xF625, 0xF64C, 0xF680, 0xF6BD, 0xF703,\n    0xF74E, 0xF79D, 0xF7EC, 0xF83A, 0xF885, 0xF8CA, 0xF906, 0xF938,\n    0xF95E, 0xF974, 0xF979, 0xF96A, 0xF949, 0xF918, 0xF8DA, 0xF892,\n    0xF840, 0xF7E9, 0xF78F, 0xF733, 0xF6DA, 0xF684, 0xF634, 0xF5EE,\n    0xF5B3, 0xF586, 0xF569, 0xF55F, 0xF56A, 0xF591, 0xF5D3, 0xF62F,\n    0xF69E, 0xF71E, 0xF7AB, 0xF841, 0xF8DB, 0xF977, 0xFA0F, 0xFAA0,\n    0xFB27, 0xFB9E, 0xFC03, 0xFC52, 0xFC86, 0xFC9B, 0xFC90, 0xFC68,\n    0xFC25, 0xFBCD, 0xFB62, 0xFAE9, 0xFA65, 0xF9D9, 0xF94B, 0xF8BC,\n    0xF831, 0xF7AE, 0xF736, 0xF6CD, 0xF677, 0xF638, 0xF613, 0xF606,\n    0xF60D, 0xF625, 0xF64C, 0xF680, 0xF6BD, 0xF703, 0xF74E, 0xF79D,\n    0xF7EC, 0xF83A, 0xF885, 0xF8CA, 0xF906, 0xF938, 0xF95E, 0xF974,\n    0xAC84, 0xADD6, 0xAF28, 0xADD6, 0xAC84, 0xAB32, 0xA9E1, 0xAAEF,\n    0xABFD, 0xAD0B, 0xAE1A, 0xAF28, 0xADD6, 0xAC84, 0xAB32, 0xA9E1,\n    0xAAEF, 0xABFD, 0xAD0B, 0xAE1A, 0xAF28, 0xADD6, 0xAC84, 0xAB32,\n    0xA9E1, 0xAAEF, 0xABFD, 0xAD0B, 0xAE1A, 0xAF28, 0xADD6, 0xAC84,\n    0xAB32, 0xA9E1, 0xAAEF, 0xABFD, 0xAD0B, 0xAE1A, 0xAF28, 0xADD6,\n    0xAC84, 0xAB32, 0xA9E1, 0xAB32, 0xAC84, 0xADD6, 0xAF28, 0xAE1A,\n    0xAD0B, 0xABFD, 0xAAEF, 0xA9E1, 0xAB32, 0xAC84, 0xADD6, 0xAF28,\n    0xAE1A, 0xAD0B, 0xABFD, 0xAAEF, 0xA9E1, 0xAB32, 0xAC84, 0xADD6,\n    0xAF28, 0xADD6, 0xAC84, 0xAB32, 0xA9E1, 0xAB32, 0xAC84, 0xADD6,\n    0xAF28, 0xAC85, 0xA946, 0xA58C, 0xA177, 0x9D28, 0x98C0, 0x945E,\n    0x9025, 0x8C34, 0x88AD, 0x85AF, 0x835C, 0x81D5, 0x814D, 0x815C,\n    0x816B, 0x817B, 0x818A, 0x819A, 0x81A9, 0x81B8, 0x81C8, 0x81D7,\n    0x81E7, 0x81F6, 0x8205, 0x8215, 0x8224, 0x8234, 0x8243, 0x8252,\n    0x8262, 0x8271, 0x8281, 0x8290, 0x82A0, 0x82AF, 0x82BE, 0x82CE,\n    0x82DD, 0x82ED, 0x82FC, 0x830B, 0x831B, 0x832A, 0x833A, 0x8349,\n    0x8358, 0x8368, 0x8377, 0x8387, 0x8396, 0x83A6, 0x83B5, 0x83C4,\n    0x83D4, 0x83E3, 0x83F3, 0x8402, 0x8411, 0x8809, 0x8ECE, 0x9593,\n    0x9C57, 0xA31C, 0xA9E1, 0xAB32, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x0071, 0x0170, 0x0351, 0x05DD, 0x08DE,\n    0x0C1E, 0x0F65, 0x127C, 0x152F, 0x1744, 0x1887, 0x18CE, 0x18CE,\n    0x18CE, 0x18CE, 0x18CE, 0x18CE, 0x18CE, 0x18CE, 0x18CE, 0x18CE,\n    0x18CB, 0x1851, 0x173C, 0x15A6, 0x13A8, 0x115E, 0x0EE0, 0x0C49,\n    0x09B3, 0x0737, 0x04F0, 0x02F9, 0x0169, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x0128, 0x0209, 0x03BA, 0x0611, 0x08E4, 0x0C07, 0x0F50, 0x1294,\n    0x15A8, 0x1862, 0x1A97, 0x1C1D, 0x1C1D, 0x1C1D, 0x1C1D, 0x1C1D,\n    0x1C1D, 0x1C1D, 0x1C1D, 0x1C1D, 0x1C1D, 0x1C1D, 0x1C1D, 0x1C1D,\n    0x1C1D, 0x1B8A, 0x1A33, 0x182C, 0x158D, 0x126B, 0x0EDD, 0x0AF9,\n    0x06D5, 0x0288, 0xFE29, 0xF9CC, 0xF588, 0xF174, 0xEDA5, 0xEA33,\n    0xE733, 0xE4BC, 0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4,\n    0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4,\n    0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4, 0xE3A9,\n    0xE495, 0xE5A5, 0xE6D4, 0xE81F, 0xE981, 0xEAF8, 0xEC7E, 0xEE11,\n    0xEFAD, 0xF14C, 0xF2ED, 0xF48A, 0xF620, 0xF7AB, 0xF928, 0xFA92,\n    0xFBE5, 0xFD1E, 0xFE39, 0xFF32, 0x0004, 0x00AD, 0x0128, 0x0186,\n    0x01D9, 0x0221, 0x0260, 0x0295, 0x02C0, 0x02E3, 0x02FE, 0x0311,\n    0x031C, 0x0320, 0x031D, 0x0315, 0x0306, 0x02F2, 0x02D9, 0x02BC,\n    0x029A, 0x0275, 0x024D, 0x0222, 0x01F4, 0x01C4, 0x0193, 0x0161,\n    0x012E, 0x00FA, 0x00C7, 0x0094, 0x0063, 0x0032, 0x0004, 0xFFD9,\n    0xFFAF, 0xFF88, 0xFF65, 0xFF46, 0xFF2C, 0xFF16, 0xFF05, 0xFEFA,\n    0xFEF5, 0xFEF6, 0xFEFE, 0xFF0E, 0xFF25, 0xFF45, 0xFF6D, 0xFF9E,\n    0xFFD8, 0x001C, 0x006A, 0x00C4, 0xF979, 0xF96A, 0xF949, 0xF918,\n    0xF8DA, 0xF892, 0xF840, 0xF7E9, 0xF78F, 0xF733, 0xF6DA, 0xF684,\n    0xF634, 0xF5EE, 0xF5B3, 0xF586, 0xF569, 0xF55F, 0xF56A, 0xF591,\n    0xF5D3, 0xF62F, 0xF69E, 0xF71E, 0xF7AB, 0xF841, 0xF8DB, 0xF977,\n    0xFA0F, 0xFAA0, 0xFB27, 0xFB9E, 0xFC03, 0xFC52, 0xFC86, 0xFC9B,\n    0xFC90, 0xFC68, 0xFC25, 0xFBCD, 0xFB62, 0xFAE9, 0xFA65, 0xF9D9,\n    0xF94B, 0xF8BC, 0xF831, 0xF7AE, 0xF736, 0xF6CD, 0xF677, 0xF638,\n    0xF613, 0xF606, 0xF60D, 0xF625, 0xF64C, 0xF680, 0xF6BD, 0xF703,\n    0xF74E, 0xF79D, 0xF7EC, 0xF83A, 0xF885, 0xF8CA, 0xF906, 0xF938,\n    0xF95E, 0xF974, 0xF979, 0xF96A, 0xF949, 0xF918, 0xF8DA, 0xF892,\n    0xF840, 0xF7E9, 0xF78F, 0xF733, 0xF6DA, 0xF684, 0xF634, 0xF5EE,\n    0xF5B3, 0xF586, 0xF569, 0xF55F, 0xF56A, 0xF591, 0xF5D3, 0xF62F,\n    0xF69E, 0xF71E, 0xF7AB, 0xF841, 0xF8DB, 0xF977, 0xFA0F, 0xFAA0,\n    0xFB27, 0xFB9E, 0xFC03, 0xFC52, 0xFC86, 0xFC9B, 0xFC90, 0xFC68,\n    0xFC25, 0xFBCD, 0xFB62, 0xFAE9, 0xFA65, 0xF9D9, 0xF94B, 0xF8BC,\n    0xF831, 0xF7AE, 0xF736, 0xF6CD, 0xF677, 0xF638, 0xF613, 0xF606,\n    0xF60D, 0xF625, 0xF64C, 0xF680, 0xF6BD, 0xF703, 0xF74E, 0xF79D,\n    0xF7EC, 0xF83A, 0xF885, 0xF8CA, 0xF906, 0xF938, 0xF95E, 0xF974,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x0071,\n    0x0170, 0x0351, 0x05DD, 0x08DE, 0x0C1E, 0x0F65, 0x127C, 0x152F,\n    0x1744, 0x1887, 0x18CE, 0x18CE, 0x18CE, 0x18CE, 0x18CE, 0x18CE,\n    0x18CE, 0x18CE, 0x18CE, 0x18CE, 0x18CB, 0x1851, 0x173C, 0x15A6,\n    0x13A8, 0x115E, 0x0EE0, 0x0C49, 0x09B3, 0x0737, 0x04F0, 0x02F9,\n    0x0169, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x0128, 0x0209, 0x03BA, 0x0611,\n    0x08E4, 0x0C07, 0x0F50, 0x1294, 0x15A8, 0x1862, 0x1A97, 0x1C1D,\n    0x1C1D, 0x1C1D, 0x1C1D, 0x1C1D, 0x1C1D, 0x1C1D, 0x1C1D, 0x1C1D,\n    0x1C1D, 0x1C1D, 0x1C1D, 0x1C1D, 0x1C1D, 0x1B8A, 0x1A33, 0x182C,\n    0x158D, 0x126B, 0x0EDD, 0x0AF9, 0x06D5, 0x0288, 0xFE29, 0xF9CC,\n    0xF588, 0xF174, 0xEDA5, 0xEA33, 0xE733, 0xE4BC, 0xE2E4, 0xE2E4,\n    0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4,\n    0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4,\n    0xE2E4, 0xE2E4, 0xE2E4, 0xE3A9, 0xE495, 0xE5A5, 0xE6D4, 0xE81F,\n    0xE981, 0xEAF8, 0xEC7E, 0xEE11, 0xEFAD, 0xF14C, 0xF2ED, 0xF48A,\n    0xF620, 0xF7AB, 0xF928, 0xFA92, 0xFBE5, 0xFD1E, 0xFE39, 0xFF32,\n    0x0004, 0x00AD, 0x0128, 0x0186, 0x01D9, 0x0221, 0x0260, 0x0295,\n    0x02C0, 0x02E3, 0x02FE, 0x0311, 0x031C, 0x0320, 0x031D, 0x0315,\n    0x0306, 0x02F2, 0x02D9, 0x02BC, 0x029A, 0x0275, 0x024D, 0x0222,\n    0x01F4, 0x01C4, 0x0193, 0x0161, 0x012E, 0x00FA, 0x00C7, 0x0094,\n    0x0063, 0x0032, 0x0004, 0xFFD9, 0xFFAF, 0xFF88, 0xFF65, 0xFF46,\n    0xFF2C, 0xFF16, 0xFF05, 0xFEFA, 0xFEF5, 0xFEF6, 0xFEFE, 0xFF0E,\n    0xFF25, 0xFF45, 0xFF6D, 0xFF9E, 0xFFD8, 0x001C, 0x006A, 0x00C4,\n    0xF979, 0xF96A, 0xF949, 0xF918, 0xF8DA, 0xF892, 0xF840, 0xF7E9,\n    0xF78F, 0xF733, 0xF6DA, 0xF684, 0xF634, 0xF5EE, 0xF5B3, 0xF586,\n    0xF569, 0xF55F, 0xF56A, 0xF591, 0xF5D3, 0xF62F, 0xF69E, 0xF71E,\n    0xF7AB, 0xF841, 0xF8DB, 0xF977, 0xFA0F, 0xFAA0, 0xFB27, 0xFB9E,\n    0xFC03, 0xFC52, 0xFC86, 0xFC9B, 0xFC90, 0xFC68, 0xFC25, 0xFBCD,\n    0xFB62, 0xFAE9, 0xFA65, 0xF9D9, 0xF94B, 0xF8BC, 0xF831, 0xF7AE,\n    0xF736, 0xF6CD, 0xF677, 0xF638, 0xF613, 0xF606, 0xF60D, 0xF625,\n    0xF64C, 0xF680, 0xF6BD, 0xF703, 0xF74E, 0xF79D, 0xF7EC, 0xF83A,\n    0xF885, 0xF8CA, 0xF906, 0xF938, 0xF95E, 0xF974, 0xF979, 0xF96A,\n    0xF949, 0xF918, 0xF8DA, 0xF892, 0xF840, 0xF7E9, 0xF78F, 0xF733,\n    0xF6DA, 0xF684, 0xF634, 0xF5EE, 0xF5B3, 0xF586, 0xF569, 0xF55F,\n    0xF56A, 0xF591, 0xF5D3, 0xF62F, 0xF69E, 0xF71E, 0xF7AB, 0xF841,\n    0xF8DB, 0xF977, 0xFA0F, 0xFAA0, 0xFB27, 0xFB9E, 0xFC03, 0xFC52,\n    0xFC86, 0xFC9B, 0xFC90, 0xFC68, 0xFC25, 0xFBCD, 0xFB62, 0xFAE9,\n    0xFA65, 0xF9D9, 0xF94B, 0xF8BC, 0xF831, 0xF7AE, 0xF736, 0xF6CD,\n    0xF677, 0xF638, 0xF613, 0xF606, 0xF60D, 0xF625, 0xF64C, 0xF680,\n    0xF6BD, 0xF703, 0xF74E, 0xF79D, 0xF7EC, 0xF83A, 0xF885, 0xF8CA,\n    0xF906, 0xF938, 0xF95E, 0xF974, 0xAC84, 0xADD6, 0xAF28, 0xADD6,\n    0xAC84, 0xAB32, 0xA9E1, 0xAAEF, 0xABFD, 0xAD0B, 0xAE1A, 0xAF28,\n    0xADD6, 0xAC84, 0xAB32, 0xA9E1, 0xAAEF, 0xABFD, 0xAD0B, 0xAE1A,\n    0xAF28, 0xADD6, 0xAC84, 0xAB32, 0xA9E1, 0xAAEF, 0xABFD, 0xAD0B,\n    0xAE1A, 0xAF28, 0xADD6, 0xAC84, 0xAB32, 0xA9E1, 0xAAEF, 0xABFD,\n    0xAD0B, 0xAE1A, 0xAF28, 0xADD6, 0xAC84, 0xAB32, 0xA9E1, 0xAB32,\n    0xAC84, 0xADD6, 0xAF28, 0xAE1A, 0xAD0B, 0xABFD, 0xAAEF, 0xA9E1,\n    0xAB32, 0xAC84, 0xADD6, 0xAF28, 0xAE1A, 0xAD0B, 0xABFD, 0xAAEF,\n    0xA9E1, 0xAB32, 0xAC84, 0xADD6, 0xAF28, 0xADD6, 0xAC84, 0xAB32,\n    0xA9E1, 0xAB32, 0xAC84, 0xADD6, 0xAF28, 0xAC85, 0xA946, 0xA58C,\n    0xA177, 0x9D28, 0x98C0, 0x945E, 0x9025, 0x8C34, 0x88AD, 0x85AF,\n    0x835C, 0x81D5, 0x814D, 0x815C, 0x816B, 0x817B, 0x818A, 0x819A,\n    0x81A9, 0x81B8, 0x81C8, 0x81D7, 0x81E7, 0x81F6, 0x8205, 0x8215,\n    0x8224, 0x8234, 0x8243, 0x8252, 0x8262, 0x8271, 0x8281, 0x8290,\n    0x82A0, 0x82AF, 0x82BE, 0x82CE, 0x82DD, 0x82ED, 0x82FC, 0x830B,\n    0x831B, 0x832A, 0x833A, 0x8349, 0x8358, 0x8368, 0x8377, 0x8387,\n    0x8396, 0x83A6, 0x83B5, 0x83C4, 0x83D4, 0x83E3, 0x83F3, 0x8402,\n    0x8411, 0x8809, 0x8ECE, 0x9593, 0x9C57, 0xA31C, 0xA9E1, 0xAB32,\n    0x8001, 0x8001, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x0071, 0x0170, 0x0351, 0x05DD, 0x08DE, 0x0C1E, 0x0F65,\n    0x127C, 0x152F, 0x1744, 0x1887, 0x18CE, 0x18CE, 0x18CE, 0x18CE,\n    0x18CE, 0x18CE, 0x18CE, 0x18CE, 0x18CE, 0x18CE, 0x18CB, 0x1851,\n    0x173C, 0x15A6, 0x13A8, 0x115E, 0x0EE0, 0x0C49, 0x09B3, 0x0737,\n    0x04F0, 0x02F9, 0x0169, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,\n    0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x0128, 0x0209,\n    0x03BA, 0x0611, 0x08E4, 0x0C07, 0x0F50, 0x1294, 0x15A8, 0x1862,\n    0x1A97, 0x1C1D, 0x1C1D, 0x1C1D, 0x1C1D, 0x1C1D, 0x1C1D, 0x1C1D,\n    0x1C1D, 0x1C1D, 0x1C1D, 0x1C1D, 0x1C1D, 0x1C1D, 0x1C1D, 0x1B8A,\n    0x1A33, 0x182C, 0x158D, 0x126B, 0x0EDD, 0x0AF9, 0x06D5, 0x0288,\n    0xFE29, 0xF9CC, 0xF588, 0xF174, 0xEDA5, 0xEA33, 0xE733, 0xE4BC,\n    0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4,\n    0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4,\n    0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4, 0xE2E4, 0xE3A9, 0xE495, 0xE5A5,\n    0xE6D4, 0xE81F, 0xE981, 0xEAF8, 0xEC7E, 0xEE11, 0xEFAD, 0xF14C,\n    0xF2ED, 0xF48A, 0xF620, 0xF7AB, 0xF928, 0xFA92, 0xFBE5, 0xFD1E,\n    0xFE39, 0xFF32, 0x0004, 0x00AD, 0x0128, 0x0186, 0x01D9, 0x0221,\n    0x0260, 0x0295, 0x02C0, 0x02E3, 0x02FE, 0x0311, 0x031C, 0x0320,\n    0x031D, 0x0315, 0x0306, 0x02F2, 0x02D9, 0x02BC, 0x029A, 0x0275,\n    0x024D, 0x0222, 0x01F4, 0x01C4, 0x0193, 0x0161, 0x012E, 0x00FA,\n    0x00C7, 0x0094, 0x0063, 0x0032, 0x0004, 0xFFD9, 0xFFAF, 0xFF88,\n    0xFF65, 0xFF46, 0xFF2C, 0xFF16, 0xFF05, 0xFEFA, 0xFEF5, 0xFEF6,\n    0xFEFE, 0xFF0E, 0xFF25, 0xFF45, 0xFF6D, 0xFF9E, 0xFFD8, 0x001C,\n    0x006A, 0x00C4, 0xF979, 0xF96A, 0xF949, 0xF918, 0xF8DA, 0xF892,\n    0xF840, 0xF7E9, 0xF78F, 0xF733, 0xF6DA, 0xF684, 0xF634, 0xF5EE,\n    0xF5B3, 0xF586, 0xF569, 0xF55F, 0xF56A, 0xF591, 0xF5D3, 0xF62F,\n    0xF69E, 0xF71E, 0xF7AB, 0xF841, 0xF8DB, 0xF977, 0xFA0F, 0xFAA0,\n    0xFB27, 0xFB9E, 0xFC03, 0xFC52, 0xFC86, 0xFC9B, 0xFC90, 0xFC68,\n    0xFC25, 0xFBCD, 0xFB62, 0xFAE9, 0xFA65, 0xF9D9, 0xF94B, 0xF8BC,\n    0xF831, 0xF7AE, 0xF736, 0xF6CD, 0xF677, 0xF638, 0xF613, 0xF606,\n    0xF60D, 0xF625, 0xF64C, 0xF680, 0xF6BD, 0xF703, 0xF74E, 0xF79D,\n    0xF7EC, 0xF83A, 0xF885, 0xF8CA, 0xF906, 0xF938, 0xF95E, 0xF974,\n    0xF979, 0xF96A, 0xF949, 0xF918, 0xF8DA, 0xF892, 0xF840, 0xF7E9,\n    0xF78F, 0xF733, 0xF6DA, 0xF684, 0xF634, 0xF5EE, 0xF5B3, 0xF586,\n    0xF569, 0xF55F, 0xF56A, 0xF591, 0xF5D3, 0xF62F, 0xF69E, 0xF71E,\n    0xF7AB, 0xF841, 0xF8DB, 0xF977, 0xFA0F, 0xFAA0, 0xFB27, 0xFB9E,\n    0xFC03, 0xFC52, 0xFC86, 0xFC9B, 0xFC90, 0xFC68, 0xFC25, 0xFBCD,\n    0xFB62, 0xFAE9, 0xFA65, 0xF9D9, 0xF94B, 0xF8BC, 0xF831, 0xF7AE,\n    0xF736, 0xF6CD, 0xF677, 0xF638, 0xF613, 0xF606, 0xF60D, 0xF625,\n    0xF64C, 0xF680, 0xF6BD, 0xF703, 0xF74E, 0xF79D, 0xF7EC, 0xF83A,\n    0xF885, 0xF8CA, 0xF906, 0xF938, 0xF95E, 0xF974, 0xFFEE, 0x00E6,\n    0x0161, 0x0237, 0x0358, 0x04B3, 0x063A, 0x07DB, 0x0988, 0x0B2F,\n    0x0CC1, 0x0E2E, 0x0F66, 0x1058, 0x10F6, 0x1157, 0x11A3, 0x11DA,\n    0x11FE, 0x1212, 0x1216, 0x120E, 0x11FA, 0x11DC, 0x11B6, 0x118B,\n    0x115B, 0x1129, 0x10F6, 0x106D, 0x0F49, 0x0DA2, 0x0B8E, 0x0927,\n    0x0684, 0x03BE, 0x00EB, 0xFE25, 0xFB81, 0xF919, 0xF705, 0xF55C,\n    0xF437, 0xF3AC, 0xF379, 0xF34A, 0xF31D, 0xF2F5, 0xF2D0, 0xF2AE,\n    0xF291, 0xF277, 0xF262, 0xF250, 0xF243, 0xF23A, 0xF235, 0xF235,\n    0xF239, 0xF242, 0xF250, 0xF262, 0xF279, 0xF296, 0xF2B7, 0xF2DD,\n    0xF309, 0xF33A, 0xF370, 0xF3AC, 0xF3F2, 0xF444, 0xF4A1, 0xF509,\n    0xF57B, 0xF5F5, 0xF677, 0xF6FF, 0xF78D, 0xF81F, 0xF8B5, 0xF94D,\n    0xF9E6, 0xFA81, 0xFB1A, 0xFBB2, 0xFC47, 0xFCD9, 0xFD66, 0xFDEE,\n    0xFE6F, 0xFEE8, 0xFF59, 0xFFC0, 0x001B, 0x006C, 0x00B0, 0x00E6,\n    0x0111, 0x0135, 0x0153, 0x016A, 0x017A, 0x0185, 0x018B, 0x018C,\n    0x0188, 0x0180, 0x0174, 0x0165, 0x0152, 0x013D, 0x0125, 0x010C,\n    0x00F0, 0x00D4, 0x00B6, 0x0098, 0x007A, 0x005C, 0x003E, 0x0022,\n    0x0007, 0xFFEE, 0xFFD7, 0xFFC2, 0xFFAF, 0xFFA0, 0xFF95, 0xFF8D,\n    0xFF8A, 0xFF8B, 0xFF91, 0xFF9D, 0xFFAE, 0xFFC5, 0xFFE3, 0x0007,\n    0x0033, 0x0067, 0x00A2, 0x88AF, 0x88D0, 0x88F0, 0x890E, 0x8929,\n    0x8941, 0x8957, 0x8969, 0x8977, 0x8982, 0x8988, 0x898B, 0x8988,\n    0x8982, 0x8977, 0x8969, 0x8957, 0x8941, 0x8929, 0x890E, 0x88F0,\n    0x88D0, 0x88AF, 0x888B, 0x8866, 0x8840, 0x8819, 0x87F1, 0x87C9,\n    0x87A1, 0x8779, 0x8751, 0x872A, 0x8704, 0x86DF, 0x86BC, 0x869A,\n    0x867A, 0x865C, 0x8641, 0x8629, 0x8614, 0x8602, 0x85F3, 0x85E8,\n    0x85E2, 0x85E0, 0x85E2, 0x85E8, 0x85F3, 0x8602, 0x8614, 0x8629,\n    0x8641, 0x865C, 0x867A, 0x869A, 0x86BC, 0x86DF, 0x8704, 0x872A,\n    0x8751, 0x8779, 0x87A1, 0x87C9, 0x87F1, 0x8819, 0x8840, 0x8866,\n    0x888B, 0x88AF, 0x88D0, 0x88F0, 0x890E, 0x8929, 0x8941, 0x8957,\n    0x8969, 0x8977, 0x8982, 0x8988, 0x898B, 0x8988, 0x8982, 0x8977,\n    0x8969, 0x8957, 0x8941, 0x8929, 0x890E, 0x88F0, 0x88D0, 0x88AF,\n    0x888B, 0x8866, 0x8840, 0x8819, 0x87F1, 0x87C9, 0x87A1, 0x8779,\n    0x8751, 0x872A, 0x8704, 0x86DF, 0x86BC, 0x869A, 0x867A, 0x865C,\n    0x8641, 0x8629, 0x8614, 0x8602, 0x85F3, 0x85E8, 0x85E2, 0x85E0,\n    0x85E2, 0x85E8, 0x85F3, 0x8602, 0x8614, 0x8629, 0x8641, 0x865C,\n    0x867A, 0x869A, 0x86BC, 0x86DF, 0x8704, 0x872A, 0x8751, 0x8779,\n    0x87A1, 0x87C9, 0x87F1, 0x8819, 0x8840, 0x8866, 0x888B, 0xFDF7,\n    0xFDFA, 0xFE01, 0xFE0D, 0xFE1D, 0xFE31, 0xFE48, 0xFE63, 0xFE82,\n    0xFEA2, 0xFEC6, 0xFEEB, 0xFF13, 0xFF3C, 0xFF66, 0xFF92, 0xFFBE,\n    0xFFEA, 0x0016, 0x0042, 0x006E, 0x009A, 0x00C4, 0x00ED, 0x0115,\n    0x013A, 0x015E, 0x017E, 0x019D, 0x01B8, 0x01CF, 0x01E3, 0x01F3,\n    0x01FF, 0x0206, 0x0209, 0x0206, 0x01FF, 0x01F3, 0x01E3, 0x01CF,\n    0x01B8, 0x019D, 0x017E, 0x015E, 0x013A, 0x0115, 0x00ED, 0x00C4,\n    0x009A, 0x006E, 0x0042, 0x0016, 0xFFEA, 0xFFBE, 0xFF92, 0xFF66,\n    0xFF3C, 0xFF13, 0xFEEB, 0xFEC6, 0xFEA2, 0xFE82, 0xFE63, 0xFE48,\n    0xFE31, 0xFE1D, 0xFE0D, 0xFE01, 0xFDFA, 0xFDF7, 0xFDFA, 0xFE01,\n    0xFE0D, 0xFE1D, 0xFE31, 0xFE48, 0xFE63, 0xFE82, 0xFEA2, 0xFEC6,\n    0xFEEB, 0xFF13, 0xFF3C, 0xFF66, 0xFF92, 0xFFBE, 0xFFEA, 0x0016,\n    0x0042, 0x006E, 0x009A, 0x00C4, 0x00ED, 0x0115, 0x013A, 0x015E,\n    0x017E, 0x019D, 0x01B8, 0x01CF, 0x01E3, 0x01F3, 0x01FF, 0x0206,\n    0x0209, 0x0206, 0x01FF, 0x01F3, 0x01E3, 0x01CF, 0x01B8, 0x019D,\n    0x017E, 0x015E, 0x013A, 0x0115, 0x00ED, 0x00C4, 0x009A, 0x006E,\n    0x0042, 0x0016, 0xFFEA, 0xFFBE, 0xFF92, 0xFF66, 0xFF3C, 0xFF13,\n    0xFEEB, 0xFEC6, 0xFEA2, 0xFE82, 0xFE63, 0xFE48, 0xFE31, 0xFE1D,\n    0xFE0D, 0xFE01, 0xFDFA, 0xF7B6, 0xFFCC, 0x01DC, 0x01DA, 0x01D3,\n    0x01C8, 0x01B9, 0x01A7, 0x0191, 0x0178, 0x015D, 0x013F, 0x011E,\n    0x00FC, 0x00D7, 0x00B2, 0x008B, 0x0063, 0x003A, 0x0011, 0xFFE9,\n    0xFFC0, 0xFF98, 0xFF70, 0xFF49, 0xFF23, 0xFEFF, 0xFEDC, 0xFEBC,\n    0xFE9E, 0xFE82, 0xFE69, 0xFE53, 0xFE41, 0xFE32, 0xFE27, 0xFE21,\n    0xFE1E, 0xFE21, 0xFE27, 0xFE32, 0xFE41, 0xFE53, 0xFE69, 0xFE82,\n    0xFE9E, 0xFEBC, 0xFEDC, 0xFEFF, 0xFF23, 0xFF49, 0xFF70, 0xFF98,\n    0xFFC0, 0xFFE9, 0x0011, 0x003A, 0x0063, 0x008B, 0x00B2, 0x00D7,\n    0x00FC, 0x011E, 0x013F, 0x015D, 0x0178, 0x0191, 0x01A7, 0x01B9,\n    0x01C8, 0x01D3, 0x01DA, 0x01DC, 0x01DA, 0x01D3, 0x01C8, 0x01B9,\n    0x01A7, 0x0191, 0x0178, 0x015D, 0x013E, 0x011E, 0x00FB, 0x00D7,\n    0x00B1, 0x008A, 0x0062, 0x003A, 0x0011, 0xFFE9, 0xFFC0, 0xFF97,\n    0xFF6F, 0xFF48, 0xFF23, 0xFEFE, 0xFEDC, 0xFEBB, 0xFE9D, 0xFE82,\n    0xFE69, 0xFE53, 0xFE41, 0xFE32, 0xFE27, 0xFE20, 0xFE1E, 0xFE21,\n    0xFE27, 0xFE32, 0xFE41, 0xFE54, 0xFE6A, 0xFE83, 0xFE9F, 0xFEBD,\n    0xFEDE, 0xFF01, 0xFF25, 0xFF4B, 0xFF72, 0xFF9A, 0xFFC3, 0xFFEC,\n    0x0015, 0x003E, 0x0067, 0x008F, 0x00B6, 0x00DC, 0x0100, 0x0123,\n    0x0144, 0x0162, 0x017E, 0x0197, 0x01AD, 0x01BF, 0x01CE, 0x01D9,\n    0x01E0, 0xFCE1,\n};\n\n// 0x0500FB34\nstatic const u16 unagi_seg5_animindex_0500FB34[] = {\n    0x0001, 0x0000, 0x008C, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x008D, 0x0001, 0x0000,\n    0x0001, 0x0B84, 0x008C, 0x0B85, 0x0001, 0x0C11,\n    0x0001, 0x0000, 0x008C, 0x0AF7, 0x0001, 0x0B83,\n    0x0001, 0x0000, 0x008C, 0x011B, 0x0001, 0x01A7,\n    0x0001, 0x0000, 0x008C, 0x008E, 0x0001, 0x011A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x09DE, 0x008C, 0x09DF, 0x008C, 0x0A6B,\n    0x008C, 0x083A, 0x008C, 0x08C6, 0x008C, 0x0952,\n    0x0001, 0x0838, 0x0001, 0x0839, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x008C, 0x07AC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x008C, 0x03D8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x008C, 0x01A8,\n    0x008C, 0x0608, 0x008C, 0x0694, 0x008C, 0x0720,\n    0x008C, 0x0464, 0x008C, 0x04F0, 0x008C, 0x057C,\n    0x008C, 0x0234, 0x008C, 0x02C0, 0x008C, 0x034C,\n};\n\n// 0x0500FBF4\nstatic const struct Animation unagi_seg5_anim_0500FBF4 = {\n    0,\n    0,\n    0,\n    0,\n    0x8C,\n    ANIMINDEX_NUMPARTS(unagi_seg5_animindex_0500FB34),\n    unagi_seg5_animvalue_0500E310,\n    unagi_seg5_animindex_0500FB34,\n    0,\n};\n"
  },
  {
    "path": "actors/unagi/anims/anim_05010488.inc.c",
    "content": "// 0x0500FC0C\nstatic const s16 unagi_seg5_animvalue_0500FC0C[] = {\n    0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFC, 0xFFF9, 0xFFF5, 0xFFF1,\n    0xFFEC, 0xFFE7, 0xFFE2, 0xFFDD, 0xFFD7, 0xFFD2, 0xFFCD, 0xFFC8,\n    0xFFC3, 0xFFBF, 0xFFBB, 0xFFB9, 0xFFB7, 0xFFB5, 0xFFB5, 0xFFB6,\n    0xFFB8, 0xFFBC, 0xFFC0, 0xFFC7, 0xFFCF, 0xFFD8, 0xFFE4, 0xFFF1,\n    0x0000, 0x0011, 0x0024, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0001, 0x0001, 0x0002, 0x0003, 0x0003, 0x0004, 0x0005, 0x0005,\n    0x0006, 0x0007, 0x0007, 0x0008, 0x0009, 0x0009, 0x000A, 0x000A,\n    0x000B, 0x000B, 0x000B, 0x000B, 0x000B, 0x000B, 0x000A, 0x000A,\n    0x0009, 0x0008, 0x0007, 0x0006, 0x0004, 0x3FFF, 0xFE8D, 0xFE91,\n    0xFE9E, 0xFEB3, 0xFECD, 0xFEEB, 0xFF0D, 0xFF31, 0xFF55, 0xFF78,\n    0xFF9A, 0xFFB8, 0xFFD2, 0xFFE5, 0xFFF1, 0xFFF5, 0xFFEF, 0xFFDD,\n    0xFFBF, 0xFF93, 0xFF58, 0xFF0D, 0xFEAF, 0xFE3F, 0xFDBA, 0xFD20,\n    0xFC6E, 0xFBA4, 0xFAC1, 0xF9C2, 0xF8A8, 0xF76F, 0xF618, 0xF4A1,\n    0x054B, 0x0548, 0x053E, 0x052E, 0x0518, 0x04FC, 0x04DC, 0x04B7,\n    0x048E, 0x0461, 0x0431, 0x03FD, 0x03C8, 0x0390, 0x0357, 0x031D,\n    0x02E1, 0x02A5, 0x026A, 0x022E, 0x01F4, 0x01BB, 0x0183, 0x014D,\n    0x011A, 0x00EA, 0x00BD, 0x0094, 0x006F, 0x004F, 0x0033, 0x001D,\n    0x000D, 0x0003, 0x004E, 0x0041, 0x001A, 0xFFDE, 0xFF8A, 0xFF22,\n    0xFEA6, 0xFE1A, 0xFD7E, 0xFCD3, 0xFC1C, 0xFB5B, 0xFA8F, 0xF9BC,\n    0xF8E3, 0xF804, 0xF723, 0xF640, 0xF55D, 0xF47C, 0xF39D, 0xF2C4,\n    0xF1F1, 0xF125, 0xF064, 0xEFAD, 0xEF02, 0xEE66, 0xEDDA, 0xED5E,\n    0xECF6, 0xECA2, 0xEC65, 0xEC3E, 0x00D0, 0x00D0, 0x00CE, 0x00CC,\n    0x00C8, 0x00C4, 0x00BF, 0x00B9, 0x00B3, 0x00AC, 0x00A5, 0x009D,\n    0x0094, 0x008C, 0x0083, 0x007A, 0x0071, 0x0068, 0x005F, 0x0055,\n    0x004C, 0x0044, 0x003B, 0x0033, 0x002B, 0x0024, 0x001D, 0x0016,\n    0x0011, 0x000C, 0x0007, 0x0004, 0x0002, 0x0000, 0xAC84, 0xA98C,\n    0xA207, 0x9809, 0x8DA6, 0x84F2, 0x8001, 0x8001, 0x8001, 0x80D8,\n    0x8358, 0x8624, 0x88BF, 0x8AAA, 0x8B6A, 0x8B55, 0x8B18, 0x8AB8,\n    0x8A3A, 0x89A2, 0x88F3, 0x8833, 0x8766, 0x8690, 0x85B6, 0x84DB,\n    0x8405, 0x8338, 0x8278, 0x81CA, 0x8131, 0x80B3, 0x8053, 0x8017,\n    0x005D, 0x005D, 0x005E, 0x005E, 0x005F, 0x005F, 0x0060, 0x0061,\n    0x0061, 0x0061, 0x0062, 0x0062, 0x0061, 0x0061, 0x0060, 0x005E,\n    0x005C, 0x005A, 0x0056, 0x0052, 0x004D, 0x0047, 0x0040, 0x0039,\n    0x0032, 0x002A, 0x0023, 0x001C, 0x0016, 0x000F, 0x000A, 0x0006,\n    0x0002, 0x0000, 0x0128, 0x00F7, 0x006E, 0xFF99, 0xFE86, 0xFD43,\n    0xFBDC, 0xFA60, 0xF8DB, 0xF75C, 0xF5F0, 0xF4A4, 0xF385, 0xF2A2,\n    0xF207, 0xF1C3, 0xF1E2, 0xF272, 0xF3A2, 0xF586, 0xF803, 0xFAFC,\n    0xFE56, 0x01F4, 0x05BB, 0x098F, 0x0D55, 0x10F0, 0x1444, 0x1737,\n    0x19AA, 0x1B84, 0x1CA8, 0x1CFA, 0xF979, 0xF977, 0xF972, 0xF96B,\n    0xF963, 0xF95A, 0xF952, 0xF94A, 0xF944, 0xF940, 0xF940, 0xF944,\n    0xF94D, 0xF95B, 0xF970, 0xF98B, 0xF9AF, 0xF9DC, 0xFA17, 0xFA65,\n    0xFAC1, 0xFB2B, 0xFB9E, 0xFC19, 0xFC97, 0xFD17, 0xFD95, 0xFE10,\n    0xFE82, 0xFEEB, 0xFF48, 0xFF94, 0xFFCF, 0xFFF4, 0xAC84, 0xA98C,\n    0xA207, 0x9809, 0x8DA6, 0x84F2, 0x8001, 0x8001, 0x8001, 0x80D8,\n    0x8358, 0x8624, 0x88BF, 0x8AAA, 0x8B6A, 0x8B55, 0x8B18, 0x8AB8,\n    0x8A3A, 0x89A2, 0x88F3, 0x8833, 0x8766, 0x8690, 0x85B6, 0x84DB,\n    0x8405, 0x8338, 0x8278, 0x81CA, 0x8131, 0x80B3, 0x8053, 0x8017,\n    0x005D, 0x005D, 0x005E, 0x005E, 0x005F, 0x005F, 0x0060, 0x0061,\n    0x0061, 0x0061, 0x0062, 0x0062, 0x0061, 0x0061, 0x0060, 0x005E,\n    0x005C, 0x005A, 0x0056, 0x0052, 0x004D, 0x0047, 0x0040, 0x0039,\n    0x0032, 0x002A, 0x0023, 0x001C, 0x0016, 0x000F, 0x000A, 0x0006,\n    0x0002, 0x0000, 0x0128, 0x00F7, 0x006E, 0xFF99, 0xFE86, 0xFD43,\n    0xFBDC, 0xFA60, 0xF8DB, 0xF75C, 0xF5F0, 0xF4A4, 0xF385, 0xF2A2,\n    0xF207, 0xF1C3, 0xF1E2, 0xF272, 0xF3A2, 0xF586, 0xF803, 0xFAFC,\n    0xFE56, 0x01F4, 0x05BB, 0x098F, 0x0D55, 0x10F0, 0x1444, 0x1737,\n    0x19AA, 0x1B84, 0x1CA8, 0x1CFA, 0xF979, 0xF977, 0xF972, 0xF96B,\n    0xF963, 0xF95A, 0xF952, 0xF94A, 0xF944, 0xF940, 0xF940, 0xF944,\n    0xF94D, 0xF95B, 0xF970, 0xF98B, 0xF9AF, 0xF9DC, 0xFA17, 0xFA65,\n    0xFAC1, 0xFB2B, 0xFB9E, 0xFC19, 0xFC97, 0xFD17, 0xFD95, 0xFE10,\n    0xFE82, 0xFEEB, 0xFF48, 0xFF94, 0xFFCF, 0xFFF4, 0x005D, 0x005D,\n    0x005E, 0x005E, 0x005F, 0x005F, 0x0060, 0x0061, 0x0061, 0x0061,\n    0x0062, 0x0062, 0x0061, 0x0061, 0x0060, 0x005E, 0x005C, 0x005A,\n    0x0056, 0x0052, 0x004D, 0x0047, 0x0040, 0x0039, 0x0032, 0x002A,\n    0x0023, 0x001C, 0x0016, 0x000F, 0x000A, 0x0006, 0x0002, 0x0000,\n    0x0128, 0x00F7, 0x006E, 0xFF99, 0xFE86, 0xFD43, 0xFBDC, 0xFA60,\n    0xF8DB, 0xF75C, 0xF5F0, 0xF4A4, 0xF385, 0xF2A2, 0xF207, 0xF1C3,\n    0xF1E2, 0xF272, 0xF3A2, 0xF586, 0xF803, 0xFAFC, 0xFE56, 0x01F4,\n    0x05BB, 0x098F, 0x0D55, 0x10F0, 0x1444, 0x1737, 0x19AA, 0x1B84,\n    0x1CA8, 0x1CFA, 0xF979, 0xF977, 0xF972, 0xF96B, 0xF963, 0xF95A,\n    0xF952, 0xF94A, 0xF944, 0xF940, 0xF940, 0xF944, 0xF94D, 0xF95B,\n    0xF970, 0xF98B, 0xF9AF, 0xF9DC, 0xFA17, 0xFA65, 0xFAC1, 0xFB2B,\n    0xFB9E, 0xFC19, 0xFC97, 0xFD17, 0xFD95, 0xFE10, 0xFE82, 0xFEEB,\n    0xFF48, 0xFF94, 0xFFCF, 0xFFF4, 0xAC84, 0xA98C, 0xA207, 0x9809,\n    0x8DA6, 0x84F2, 0x8001, 0x8001, 0x8001, 0x80D8, 0x8358, 0x8624,\n    0x88BF, 0x8AAA, 0x8B6A, 0x8B55, 0x8B18, 0x8AB8, 0x8A3A, 0x89A2,\n    0x88F3, 0x8833, 0x8766, 0x8690, 0x85B6, 0x84DB, 0x8405, 0x8338,\n    0x8278, 0x81CA, 0x8131, 0x80B3, 0x8053, 0x8017, 0x8001, 0x8001,\n    0x005D, 0x005D, 0x005E, 0x005E, 0x005F, 0x005F, 0x0060, 0x0061,\n    0x0061, 0x0061, 0x0062, 0x0062, 0x0061, 0x0061, 0x0060, 0x005E,\n    0x005C, 0x005A, 0x0056, 0x0052, 0x004D, 0x0047, 0x0040, 0x0039,\n    0x0032, 0x002A, 0x0023, 0x001C, 0x0016, 0x000F, 0x000A, 0x0006,\n    0x0002, 0x0000, 0x0128, 0x00F7, 0x006E, 0xFF99, 0xFE86, 0xFD43,\n    0xFBDC, 0xFA60, 0xF8DB, 0xF75C, 0xF5F0, 0xF4A4, 0xF385, 0xF2A2,\n    0xF207, 0xF1C3, 0xF1E2, 0xF272, 0xF3A2, 0xF586, 0xF803, 0xFAFC,\n    0xFE56, 0x01F4, 0x05BB, 0x098F, 0x0D55, 0x10F0, 0x1444, 0x1737,\n    0x19AA, 0x1B84, 0x1CA8, 0x1CFA, 0xF979, 0xF977, 0xF972, 0xF96B,\n    0xF963, 0xF95A, 0xF952, 0xF94A, 0xF944, 0xF940, 0xF940, 0xF944,\n    0xF94D, 0xF95B, 0xF970, 0xF98B, 0xF9AF, 0xF9DC, 0xFA17, 0xFA65,\n    0xFAC1, 0xFB2B, 0xFB9E, 0xFC19, 0xFC97, 0xFD17, 0xFD95, 0xFE10,\n    0xFE82, 0xFEEB, 0xFF48, 0xFF94, 0xFFCF, 0xFFF4, 0xFFEE, 0xFFEE,\n    0xFFEE, 0xFFEE, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFED, 0xFFEC,\n    0xFFEC, 0xFFEC, 0xFFED, 0xFFED, 0xFFED, 0xFFEE, 0xFFEF, 0xFFF0,\n    0xFFF1, 0xFFF2, 0xFFF3, 0xFFF4, 0xFFF6, 0xFFF7, 0xFFF8, 0xFFFA,\n    0xFFFB, 0xFFFC, 0xFFFD, 0xFFFE, 0xFFFF, 0x0000, 0x0000, 0x0000,\n    0x00E6, 0x011E, 0x01BA, 0x02AA, 0x03DE, 0x0545, 0x06CF, 0x086B,\n    0x0A08, 0x0B96, 0x0D06, 0x0E45, 0x0F44, 0x0FF3, 0x1040, 0x101F,\n    0x0F97, 0x0EB8, 0x0D90, 0x0C2F, 0x0AA2, 0x08FA, 0x0744, 0x0591,\n    0x03EE, 0x026B, 0x0116, 0x0000, 0xFF35, 0xFEC5, 0xFEBF, 0xFF32,\n    0x002D, 0x01BF, 0x88AF, 0x88B2, 0x88B9, 0x88C5, 0x88D2, 0x88DF,\n    0x88EA, 0x88F3, 0x88F6, 0x88F4, 0x88EA, 0x88D6, 0x88B7, 0x888C,\n    0x8852, 0x8808, 0x87AD, 0x8743, 0x86CD, 0x864E, 0x85C6, 0x8539,\n    0x84A9, 0x8417, 0x8386, 0x82F9, 0x8271, 0x81F1, 0x817B, 0x8111,\n    0x80B5, 0x806A, 0x8031, 0x800E, 0xFDF7, 0xFDEB, 0xFDCA, 0xFD95,\n    0xFD4E, 0xFCF8, 0xFC94, 0xFC26, 0xFBAD, 0xFB2E, 0xFAAA, 0xFA23,\n    0xF99A, 0xF914, 0xF890, 0xF812, 0xF79C, 0xF72F, 0xF6CE, 0xF67A,\n    0xF637, 0xF605, 0xF5E8, 0xF5E1, 0xF5F2, 0xF61E, 0xF666, 0xF6CD,\n    0xF754, 0xF7FE, 0xF8CD, 0xF9C3, 0xFAE3, 0xFC2D, 0xF7B6, 0xF7BB,\n    0xF7CB, 0xF7E4, 0xF807, 0xF832, 0xF865, 0xF89F, 0xF8DF, 0xF925,\n    0xF971, 0xF9C1, 0xFA14, 0xFA6B, 0xFAC5, 0xFB21, 0xFB7E, 0xFBDB,\n    0xFC39, 0xFC96, 0xFCF1, 0xFD4B, 0xFDA2, 0xFDF6, 0xFE46, 0xFE91,\n    0xFED7, 0xFF18, 0xFF52, 0xFF84, 0xFFAF, 0xFFD2, 0xFFEB, 0xFFFB,\n    0xFFCC, 0xFFCC, 0xFFCC, 0xFFCD, 0xFFCE, 0xFFCF, 0xFFD0, 0xFFD2,\n    0xFFD3, 0xFFD5, 0xFFD7, 0xFFD9, 0xFFDB, 0xFFDD, 0xFFDF, 0xFFE2,\n    0xFFE4, 0xFFE6, 0xFFE8, 0xFFEB, 0xFFED, 0xFFEF, 0xFFF1, 0xFFF4,\n    0xFFF6, 0xFFF7, 0xFFF9, 0xFFFB, 0xFFFC, 0xFFFD, 0xFFFE, 0xFFFF,\n    0x0000, 0x0000, 0x01DC, 0x01E5, 0x0200, 0x022B, 0x0265, 0x02AD,\n    0x0303, 0x0364, 0x03D1, 0x0447, 0x04C6, 0x054D, 0x05DA, 0x066C,\n    0x0703, 0x079E, 0x083A, 0x08D7, 0x0975, 0x0A11, 0x0AAC, 0x0B43,\n    0x0BD5, 0x0C62, 0x0CE9, 0x0D68, 0x0DDE, 0x0E4B, 0x0EAC, 0x0F02,\n    0x0F4A, 0x0F84, 0x0FAF, 0x0FCA, 0xFCE1, 0xFCE3, 0xFCE9, 0xFCF3,\n    0xFD00, 0xFD10, 0xFD23, 0xFD39, 0xFD51, 0xFD6C, 0xFD88, 0xFDA6,\n    0xFDC6, 0xFDE6, 0xFE08, 0xFE2B, 0xFE4E, 0xFE71, 0xFE94, 0xFEB7,\n    0xFEDA, 0xFEFB, 0xFF1C, 0xFF3C, 0xFF5A, 0xFF76, 0xFF91, 0xFFA9,\n    0xFFBF, 0xFFD2, 0xFFE2, 0xFFEF, 0xFFF9, 0xFFFE,\n};\n\n// 0x050103C8\nstatic const u16 unagi_seg5_animindex_050103C8[] = {\n    0x0022, 0x0001, 0x0001, 0x0000, 0x0022, 0x0023, 0x0001, 0x0000, 0x0001, 0x0045, 0x0001, 0x0000,\n    0x0022, 0x0378, 0x0022, 0x039A, 0x0022, 0x03BC,\n    0x0001, 0x0000, 0x0022, 0x0334, 0x0022, 0x0356,\n    0x0001, 0x0000, 0x0022, 0x008A, 0x0022, 0x00AC,\n    0x0001, 0x0000, 0x0022, 0x0046, 0x0022, 0x0068,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0022, 0x02CE, 0x0022, 0x02F0, 0x0022, 0x0312,\n    0x0022, 0x0268, 0x0022, 0x028A, 0x0022, 0x02AC,\n    0x0001, 0x0266, 0x0001, 0x0267, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0022, 0x0244,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0022, 0x0156,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0022, 0x00CE,\n    0x0022, 0x01DE, 0x0022, 0x0200, 0x0022, 0x0222,\n    0x0022, 0x0178, 0x0022, 0x019A, 0x0022, 0x01BC,\n    0x0022, 0x00F0, 0x0022, 0x0112, 0x0022, 0x0134,\n};\n\n// 0x05010488\nstatic const struct Animation unagi_seg5_anim_05010488 = {\n    0,\n    0,\n    0,\n    0,\n    0x22,\n    ANIMINDEX_NUMPARTS(unagi_seg5_animindex_050103C8),\n    unagi_seg5_animvalue_0500FC0C,\n    unagi_seg5_animindex_050103C8,\n    0,\n};\n"
  },
  {
    "path": "actors/unagi/anims/anim_05010B54.inc.c",
    "content": "// 0x050104A0\nstatic const s16 unagi_seg5_animvalue_050104A0[] = {\n    0x0000, 0x003A, 0x0051, 0x0067, 0x007C, 0x008F, 0x00A1, 0x00B0,\n    0x00BE, 0x00C9, 0x00D1, 0x00D6, 0x00D7, 0x00D6, 0x00D1, 0x00C9,\n    0x00BE, 0x00B0, 0x00A1, 0x008F, 0x007C, 0x0067, 0x0051, 0x003A,\n    0x0023, 0x000B, 0xFFF4, 0xFFDC, 0xFFC5, 0xFFAE, 0xFF98, 0xFF83,\n    0xFF70, 0xFF5E, 0xFF4F, 0xFF41, 0xFF36, 0xFF2E, 0xFF29, 0xFF28,\n    0xFF29, 0xFF2E, 0xFF36, 0xFF41, 0xFF4F, 0xFF5E, 0xFF70, 0xFF83,\n    0xFF98, 0xFFAE, 0xFFC5, 0xFFDC, 0xFFF4, 0x000B, 0x0023, 0x0002,\n    0x0001, 0x0000, 0x0000, 0x0000, 0x0002, 0x0004, 0x0006, 0x0009,\n    0x000C, 0x000F, 0x0012, 0x0015, 0x0017, 0x0019, 0x001A, 0x001B,\n    0x001A, 0x0019, 0x0017, 0x0015, 0x0012, 0x000F, 0x000D, 0x000A,\n    0x0007, 0x0004, 0x0002, 0x0001, 0x0000, 0x0000, 0x0000, 0x0002,\n    0x0004, 0x0006, 0x0009, 0x000C, 0x000F, 0x0012, 0x0015, 0x0017,\n    0x0019, 0x001A, 0x001B, 0x001A, 0x0019, 0x0017, 0x0015, 0x0012,\n    0x000F, 0x000D, 0x000A, 0x0007, 0x0004, 0x3FFF, 0xF308, 0xF172,\n    0xF009, 0xEED4, 0xEDDA, 0xED1F, 0xECAB, 0xEC83, 0xECAB, 0xED1F,\n    0xEDDA, 0xEED4, 0xF009, 0xF172, 0xF308, 0xF4C6, 0xF6A5, 0xF8A0,\n    0xFAB1, 0xFCD0, 0xFEF9, 0x0124, 0x034C, 0x056C, 0x077C, 0x0977,\n    0x0B57, 0x0D15, 0x0EAB, 0x1014, 0x1148, 0x1243, 0x12FD, 0x1372,\n    0x139A, 0x1372, 0x12FD, 0x1243, 0x1148, 0x1014, 0x0EAB, 0x0D15,\n    0x0B57, 0x0977, 0x077C, 0x056C, 0x034C, 0x0124, 0xFEF9, 0xFCD0,\n    0xFAB1, 0xF8A0, 0xF6A5, 0xF4C6, 0xEC31, 0xEC5A, 0xECCF, 0xED8C,\n    0xEE8A, 0xEFC2, 0xF12E, 0xF2C9, 0xF48C, 0xF670, 0xF871, 0xFA87,\n    0xFCAD, 0xFEDC, 0x010C, 0x033B, 0x0561, 0x0777, 0x0977, 0x0B5C,\n    0x0D1F, 0x0EBA, 0x1026, 0x115E, 0x125C, 0x1318, 0x138E, 0x13B7,\n    0x138E, 0x1318, 0x125C, 0x115E, 0x1026, 0x0EBA, 0x0D1F, 0x0B5C,\n    0x0977, 0x0777, 0x0561, 0x033B, 0x010C, 0xFEDC, 0xFCAD, 0xFA87,\n    0xF871, 0xF670, 0xF48C, 0xF2C9, 0xF12E, 0xEFC2, 0xEE8A, 0xED8C,\n    0xECCF, 0xEC5A, 0x8001, 0x8008, 0x8019, 0x8033, 0x8054, 0x807B,\n    0x80A6, 0x80D2, 0x80FE, 0x8129, 0x8150, 0x8171, 0x818C, 0x819D,\n    0x81A3, 0x819C, 0x8188, 0x816A, 0x8145, 0x8119, 0x80EA, 0x80BA,\n    0x808B, 0x8060, 0x803A, 0x801C, 0x8009, 0x8001, 0x8008, 0x8019,\n    0x8033, 0x8054, 0x807B, 0x80A6, 0x80D2, 0x80FE, 0x8129, 0x8150,\n    0x8171, 0x818C, 0x819D, 0x81A3, 0x819C, 0x8188, 0x816A, 0x8145,\n    0x8119, 0x80EA, 0x80BA, 0x808B, 0x8060, 0x803A, 0x801C, 0x8009,\n    0x1C5F, 0x1B05, 0x193C, 0x171C, 0x14B0, 0x1203, 0x0F20, 0x0C11,\n    0x08E1, 0x059B, 0x0249, 0xFEF8, 0xFBB0, 0xF87D, 0xF56A, 0xF281,\n    0xEFCD, 0xED59, 0xEB30, 0xE93F, 0xE777, 0xE5E5, 0xE495, 0xE394,\n    0xE2F0, 0xE2B4, 0xE2EF, 0xE3AD, 0xE4FB, 0xE6C8, 0xE8F4, 0xEB72,\n    0xEE37, 0xF137, 0xF466, 0xF7B9, 0xFB24, 0xFE9A, 0x020F, 0x057A,\n    0x08CD, 0x0BFD, 0x0EFE, 0x11C5, 0x1445, 0x1672, 0x1857, 0x19FF,\n    0x1B63, 0x1C7A, 0x1D3D, 0x1DA3, 0x1DA6, 0x1D3C, 0x8001, 0x8008,\n    0x8019, 0x8033, 0x8054, 0x807B, 0x80A6, 0x80D2, 0x80FE, 0x8129,\n    0x8150, 0x8171, 0x818C, 0x819D, 0x81A3, 0x819C, 0x8188, 0x816A,\n    0x8145, 0x8119, 0x80EA, 0x80BA, 0x808B, 0x8060, 0x803A, 0x801C,\n    0x8009, 0x8001, 0x8008, 0x8019, 0x8033, 0x8054, 0x807B, 0x80A6,\n    0x80D2, 0x80FE, 0x8129, 0x8150, 0x8171, 0x818C, 0x819D, 0x81A3,\n    0x819C, 0x8188, 0x816A, 0x8145, 0x8119, 0x80EA, 0x80BA, 0x808B,\n    0x8060, 0x803A, 0x801C, 0x8009, 0x1C5F, 0x1B05, 0x193C, 0x171C,\n    0x14B0, 0x1203, 0x0F20, 0x0C11, 0x08E1, 0x059B, 0x0249, 0xFEF8,\n    0xFBB0, 0xF87D, 0xF56A, 0xF281, 0xEFCD, 0xED59, 0xEB30, 0xE93F,\n    0xE777, 0xE5E5, 0xE495, 0xE394, 0xE2F0, 0xE2B4, 0xE2EF, 0xE3AD,\n    0xE4FB, 0xE6C8, 0xE8F4, 0xEB72, 0xEE37, 0xF137, 0xF466, 0xF7B9,\n    0xFB24, 0xFE9A, 0x020F, 0x057A, 0x08CD, 0x0BFD, 0x0EFE, 0x11C5,\n    0x1445, 0x1672, 0x1857, 0x19FF, 0x1B63, 0x1C7A, 0x1D3D, 0x1DA3,\n    0x1DA6, 0x1D3C, 0x1C5F, 0x1B05, 0x193C, 0x171C, 0x14B0, 0x1203,\n    0x0F20, 0x0C11, 0x08E1, 0x059B, 0x0249, 0xFEF8, 0xFBB0, 0xF87D,\n    0xF56A, 0xF281, 0xEFCD, 0xED59, 0xEB30, 0xE93F, 0xE777, 0xE5E5,\n    0xE495, 0xE394, 0xE2F0, 0xE2B4, 0xE2EF, 0xE3AD, 0xE4FB, 0xE6C8,\n    0xE8F4, 0xEB72, 0xEE37, 0xF137, 0xF466, 0xF7B9, 0xFB24, 0xFE9A,\n    0x020F, 0x057A, 0x08CD, 0x0BFD, 0x0EFE, 0x11C5, 0x1445, 0x1672,\n    0x1857, 0x19FF, 0x1B63, 0x1C7A, 0x1D3D, 0x1DA3, 0x1DA6, 0x1D3C,\n    0x8001, 0x8008, 0x8019, 0x8033, 0x8054, 0x807B, 0x80A6, 0x80D2,\n    0x80FE, 0x8129, 0x8150, 0x8171, 0x818C, 0x819D, 0x81A3, 0x819C,\n    0x8188, 0x816A, 0x8145, 0x8119, 0x80EA, 0x80BA, 0x808B, 0x8060,\n    0x803A, 0x801C, 0x8009, 0x8001, 0x8008, 0x8019, 0x8033, 0x8054,\n    0x807B, 0x80A6, 0x80D2, 0x80FE, 0x8129, 0x8150, 0x8171, 0x818C,\n    0x819D, 0x81A3, 0x819C, 0x8188, 0x816A, 0x8145, 0x8119, 0x80EA,\n    0x80BA, 0x808B, 0x8060, 0x803A, 0x801C, 0x8009, 0x8001, 0x8001,\n    0x1C5F, 0x1B05, 0x193C, 0x171C, 0x14B0, 0x1203, 0x0F20, 0x0C11,\n    0x08E1, 0x059B, 0x0249, 0xFEF8, 0xFBB0, 0xF87D, 0xF56A, 0xF281,\n    0xEFCD, 0xED59, 0xEB30, 0xE93F, 0xE777, 0xE5E5, 0xE495, 0xE394,\n    0xE2F0, 0xE2B4, 0xE2EF, 0xE3AD, 0xE4FB, 0xE6C8, 0xE8F4, 0xEB72,\n    0xEE37, 0xF137, 0xF466, 0xF7B9, 0xFB24, 0xFE9A, 0x020F, 0x057A,\n    0x08CD, 0x0BFD, 0x0EFE, 0x11C5, 0x1445, 0x1672, 0x1857, 0x19FF,\n    0x1B63, 0x1C7A, 0x1D3D, 0x1DA3, 0x1DA6, 0x1D3C, 0x03F6, 0x0681,\n    0x08F8, 0x0B57, 0x0D94, 0x0FA9, 0x118F, 0x133E, 0x14B0, 0x15DB,\n    0x16BB, 0x1746, 0x1776, 0x1746, 0x16BB, 0x15DB, 0x14B0, 0x133E,\n    0x118F, 0x0FA9, 0x0D94, 0x0B57, 0x08F8, 0x0681, 0x03F6, 0x0161,\n    0xFECA, 0xFC35, 0xF9AB, 0xF733, 0xF4D4, 0xF297, 0xF082, 0xEE9C,\n    0xECED, 0xEB7C, 0xEA50, 0xE971, 0xE8E5, 0xE8B5, 0xE8E5, 0xE971,\n    0xEA50, 0xEB7C, 0xECED, 0xEE9C, 0xF082, 0xF297, 0xF4D4, 0xF733,\n    0xF9AB, 0xFC35, 0xFECA, 0x0161, 0x8001, 0xFDA4, 0xFF36, 0x00CA,\n    0x025C, 0x03E7, 0x0568, 0x06D8, 0x0835, 0x097A, 0x0AA1, 0x0BA8,\n    0x0C88, 0x0D3F, 0x0DC6, 0x0E1B, 0x0E38, 0x0E1B, 0x0DC6, 0x0D3F,\n    0x0C88, 0x0BA8, 0x0AA1, 0x097A, 0x0835, 0x06D8, 0x0568, 0x03E7,\n    0x025C, 0x00CA, 0xFF36, 0xFDA4, 0xFC19, 0xFA98, 0xF928, 0xF7CB,\n    0xF686, 0xF55F, 0xF458, 0xF378, 0xF2C1, 0xF23A, 0xF1E5, 0xF1C8,\n    0xF1E5, 0xF23A, 0xF2C1, 0xF378, 0xF458, 0xF55F, 0xF686, 0xF7CB,\n    0xF928, 0xFA98, 0xFC19, 0x0FD3, 0x0FB2, 0x0F55, 0x0EBF, 0x0DF6,\n    0x0CFE, 0x0BDD, 0x0A97, 0x0931, 0x07B0, 0x061A, 0x0472, 0x02BD,\n    0x0102, 0xFF45, 0xFD89, 0xFBD5, 0xFA2D, 0xF896, 0xF716, 0xF5B0,\n    0xF46A, 0xF348, 0xF251, 0xF187, 0xF0F2, 0xF094, 0xF074, 0xF094,\n    0xF0F2, 0xF187, 0xF251, 0xF348, 0xF46A, 0xF5B0, 0xF716, 0xF896,\n    0xFA2D, 0xFBD5, 0xFD89, 0xFF45, 0x0102, 0x02BD, 0x0472, 0x061A,\n    0x07B0, 0x0931, 0x0A97, 0x0BDD, 0x0CFE, 0x0DF6, 0x0EBF, 0x0F55,\n    0x0FB2, 0x0000,\n};\n\n// 0x05010A94\nstatic const u16 unagi_seg5_animindex_05010A94[] = {\n    0x0036, 0x0001, 0x0001, 0x0000, 0x0036, 0x0037, 0x0001, 0x0000, 0x0001, 0x006D, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0036, 0x02C3, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0036, 0x028D, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0036, 0x00A4, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0036, 0x006E, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0036, 0x0256, 0x0001, 0x028C,\n    0x0001, 0x0000, 0x0036, 0x0220, 0x0001, 0x0000,\n    0x0001, 0x021E, 0x0001, 0x021F, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0036, 0x01E8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0036, 0x0146,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0036, 0x00DA,\n    0x0001, 0x0000, 0x0036, 0x01B2, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0036, 0x017C, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0036, 0x0110, 0x0001, 0x0000,\n};\n\n// 0x05010B54\nstatic const struct Animation unagi_seg5_anim_05010B54 = {\n    0,\n    0,\n    0,\n    0,\n    0x36,\n    ANIMINDEX_NUMPARTS(unagi_seg5_animindex_05010A94),\n    unagi_seg5_animvalue_050104A0,\n    unagi_seg5_animindex_05010A94,\n    0,\n};\n"
  },
  {
    "path": "actors/unagi/anims/anim_05011488.inc.c",
    "content": "// 0x05010B6C\nstatic const s16 unagi_seg5_animvalue_05010B6C[] = {\n    0x0000, 0x003A, 0x0051, 0x0067, 0x007C, 0x008F, 0x00A1, 0x00B0,\n    0x00BE, 0x00C9, 0x00D1, 0x00D6, 0x00D7, 0x00D6, 0x00D1, 0x00C9,\n    0x00BE, 0x00B0, 0x00A1, 0x008F, 0x007C, 0x0063, 0x004D, 0x0039,\n    0x0026, 0x0016, 0x0007, 0xFFFA, 0xFFEF, 0xFFE5, 0xFFDC, 0xFFD5,\n    0xFFCF, 0xFFCB, 0xFFC7, 0xFFC5, 0xFFC4, 0xFFC3, 0xFFC4, 0xFFC5,\n    0xFFC8, 0xFFCA, 0xFFCE, 0xFFD2, 0xFFD6, 0xFFDB, 0xFFE0, 0xFFE5,\n    0xFFEB, 0xFFF0, 0xFFF6, 0xFFFB, 0x0000, 0x0004, 0x0008, 0x000B,\n    0x000E, 0x0010, 0x0011, 0x0012, 0x0012, 0x0012, 0x0011, 0x0010,\n    0x000F, 0x000D, 0x000C, 0x000A, 0x0008, 0x0007, 0x0005, 0x0003,\n    0x0002, 0x0001, 0x0000, 0x0000, 0x0000, 0x0002, 0x0001, 0x0000,\n    0x0000, 0x0000, 0x0002, 0x0004, 0x0006, 0x0009, 0x000C, 0x000F,\n    0x0012, 0x0015, 0x0017, 0x0019, 0x001A, 0x001B, 0x001A, 0x0019,\n    0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0016, 0x0016, 0x0016,\n    0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0015, 0x0015,\n    0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015, 0x0014, 0x0013,\n    0x0011, 0x000F, 0x000C, 0x000A, 0x0007, 0x0004, 0x0002, 0x0001,\n    0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE,\n    0xFFFE, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n    0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x3FFF, 0xF308, 0xF172, 0xF009, 0xEED4, 0xEDDA, 0xED1F,\n    0xECAB, 0xEC83, 0xECAB, 0xED1F, 0xEDDA, 0xEED4, 0xF009, 0xF172,\n    0xF308, 0xF4C6, 0xF741, 0xFAC5, 0xFED7, 0x02FB, 0x06B9, 0x0996,\n    0x0B17, 0x0AFF, 0x0A1A, 0x08A0, 0x06AE, 0x045F, 0x01D1, 0xFF20,\n    0xFC67, 0xF9C4, 0xF753, 0xF531, 0xF379, 0xF248, 0xF1BB, 0xF1CF,\n    0xF243, 0xF30D, 0xF420, 0xF575, 0xF6FF, 0xF8B7, 0xFA90, 0xFC82,\n    0xFE82, 0x0085, 0x0284, 0x0473, 0x0647, 0x07F8, 0x097B, 0x0AC5,\n    0x0BCE, 0x0C8A, 0x0CEA, 0x0CD4, 0x0C57, 0x0B85, 0x0A6F, 0x0925,\n    0x07B8, 0x063A, 0x04BB, 0x034D, 0x0200, 0x00E7, 0x0011, 0xFF90,\n    0xFF5B, 0xFF5F, 0xFF86, 0xFFBC, 0xFFEC, 0x0000, 0xEC31, 0xEC5A,\n    0xECCF, 0xED8C, 0xEE8A, 0xEFC2, 0xF12E, 0xF2C9, 0xF48C, 0xF670,\n    0xF871, 0xFA87, 0xFCAD, 0xFEDC, 0x010C, 0x033B, 0x0561, 0x0777,\n    0x0977, 0x0B5C, 0x0D67, 0x0E7C, 0x0EB8, 0x0E36, 0x0D10, 0x0B64,\n    0x094B, 0x06E1, 0x0441, 0x0188, 0xFED0, 0xFC34, 0xF9CF, 0xF7BE,\n    0xF61B, 0xF502, 0xF48D, 0xF4CF, 0xF5AE, 0xF710, 0xF8DD, 0xFAFA,\n    0xFD4E, 0xFFBE, 0x0231, 0x048E, 0x06BB, 0x089E, 0x0A1E, 0x0B20,\n    0x0B8C, 0x0B73, 0x0B19, 0x0A89, 0x09CA, 0x08E7, 0x07E8, 0x06D7,\n    0x05BD, 0x04A4, 0x0394, 0x0296, 0x01B5, 0x00F9, 0x006C, 0x0016,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x8001, 0x8008, 0x8019, 0x8033, 0x8054, 0x807B,\n    0x80A6, 0x80D2, 0x80FE, 0x8129, 0x8150, 0x8171, 0x818C, 0x819D,\n    0x81A3, 0x819C, 0x8188, 0x816A, 0x8145, 0x8119, 0x8110, 0x8108,\n    0x80FF, 0x80F6, 0x80ED, 0x80E5, 0x80DC, 0x80D3, 0x80CA, 0x80C2,\n    0x80B9, 0x80B0, 0x80A7, 0x809F, 0x8096, 0x808D, 0x8085, 0x807C,\n    0x8073, 0x806A, 0x8062, 0x8059, 0x8050, 0x8047, 0x803F, 0x8036,\n    0x802D, 0x8024, 0x801C, 0x8013, 0x800A, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x1C5F, 0x1B05,\n    0x193C, 0x171C, 0x14B0, 0x1203, 0x0F20, 0x0C11, 0x08E1, 0x059B,\n    0x0249, 0xFEF0, 0xFB8D, 0xF82F, 0xF4E6, 0xF1BE, 0xEEC5, 0xEC0B,\n    0xE99C, 0xE787, 0xE5D9, 0xE4A1, 0xE3EE, 0xE3CE, 0xE477, 0xE5E7,\n    0xE803, 0xEAB0, 0xEDD5, 0xF156, 0xF519, 0xF903, 0xFCFB, 0x00E5,\n    0x04A8, 0x0828, 0x0B4C, 0x0DDA, 0x0FB6, 0x10E6, 0x1174, 0x117C,\n    0x1157, 0x110E, 0x10A4, 0x101B, 0x0F74, 0x0EB2, 0x0DD6, 0x0CE3,\n    0x0BDA, 0x0ABE, 0x0990, 0x0853, 0x0708, 0x05D2, 0x04C0, 0x03D0,\n    0x0300, 0x024D, 0x01B6, 0x0137, 0x00D0, 0x007E, 0x003F, 0x0010,\n    0xFFF1, 0xFFDE, 0xFFD4, 0xFFD3, 0xFFD8, 0xFFE1, 0xFFEC, 0xFFF6,\n    0xFFFD, 0x0000, 0x8001, 0x8008, 0x8019, 0x8033, 0x8054, 0x807B,\n    0x80A6, 0x80D2, 0x80FE, 0x8129, 0x8150, 0x8171, 0x818C, 0x819D,\n    0x81A3, 0x819C, 0x8188, 0x816A, 0x8145, 0x8119, 0x8110, 0x8108,\n    0x80FF, 0x80F6, 0x80ED, 0x80E5, 0x80DC, 0x80D3, 0x80CA, 0x80C2,\n    0x80B9, 0x80B0, 0x80A7, 0x809F, 0x8096, 0x808D, 0x8085, 0x807C,\n    0x8073, 0x806A, 0x8062, 0x8059, 0x8050, 0x8047, 0x803F, 0x8036,\n    0x802D, 0x8024, 0x801C, 0x8013, 0x800A, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x1C5F, 0x1B05,\n    0x193C, 0x171C, 0x14B0, 0x1203, 0x0F20, 0x0C11, 0x08E1, 0x059B,\n    0x0249, 0xFEF0, 0xFB8D, 0xF82F, 0xF4E6, 0xF1BE, 0xEEC5, 0xEC0B,\n    0xE99C, 0xE787, 0xE5D9, 0xE4A1, 0xE3EE, 0xE3CE, 0xE477, 0xE5E7,\n    0xE803, 0xEAB0, 0xEDD5, 0xF156, 0xF519, 0xF903, 0xFCFB, 0x00E5,\n    0x04A8, 0x0828, 0x0B4C, 0x0DDA, 0x0FB6, 0x10E6, 0x1174, 0x117C,\n    0x1157, 0x110E, 0x10A4, 0x101B, 0x0F74, 0x0EB2, 0x0DD6, 0x0CE3,\n    0x0BDA, 0x0ABE, 0x0990, 0x0853, 0x0708, 0x05D2, 0x04C0, 0x03D0,\n    0x0300, 0x024D, 0x01B6, 0x0137, 0x00D0, 0x007E, 0x003F, 0x0010,\n    0xFFF1, 0xFFDE, 0xFFD4, 0xFFD3, 0xFFD8, 0xFFE1, 0xFFEC, 0xFFF6,\n    0xFFFD, 0x0000, 0x1C5F, 0x1B05, 0x193C, 0x171C, 0x14B0, 0x1203,\n    0x0F20, 0x0C11, 0x08E1, 0x059B, 0x0249, 0xFEF0, 0xFB8D, 0xF82F,\n    0xF4E6, 0xF1BE, 0xEEC5, 0xEC0B, 0xE99C, 0xE787, 0xE5D9, 0xE4A1,\n    0xE3EE, 0xE3CE, 0xE477, 0xE5E7, 0xE803, 0xEAB0, 0xEDD5, 0xF156,\n    0xF519, 0xF903, 0xFCFB, 0x00E5, 0x04A8, 0x0828, 0x0B4C, 0x0DDA,\n    0x0FB6, 0x10E6, 0x1174, 0x117C, 0x1157, 0x110E, 0x10A4, 0x101B,\n    0x0F74, 0x0EB2, 0x0DD6, 0x0CE3, 0x0BDA, 0x0ABE, 0x0990, 0x0853,\n    0x0708, 0x05D2, 0x04C0, 0x03D0, 0x0300, 0x024D, 0x01B6, 0x0137,\n    0x00D0, 0x007E, 0x003F, 0x0010, 0xFFF1, 0xFFDE, 0xFFD4, 0xFFD3,\n    0xFFD8, 0xFFE1, 0xFFEC, 0xFFF6, 0xFFFD, 0x0000, 0x8001, 0x8008,\n    0x8019, 0x8033, 0x8054, 0x807B, 0x80A6, 0x80D2, 0x80FE, 0x8129,\n    0x8150, 0x8171, 0x818C, 0x819D, 0x81A3, 0x819C, 0x8188, 0x816A,\n    0x8145, 0x8119, 0x8110, 0x8108, 0x80FF, 0x80F6, 0x80ED, 0x80E5,\n    0x80DC, 0x80D3, 0x80CA, 0x80C2, 0x80B9, 0x80B0, 0x80A7, 0x809F,\n    0x8096, 0x808D, 0x8085, 0x807C, 0x8073, 0x806A, 0x8062, 0x8059,\n    0x8050, 0x8047, 0x803F, 0x8036, 0x802D, 0x8024, 0x801C, 0x8013,\n    0x800A, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x1C5F, 0x1B05, 0x193C, 0x171C,\n    0x14B0, 0x1203, 0x0F20, 0x0C11, 0x08E1, 0x059B, 0x0249, 0xFEF0,\n    0xFB8D, 0xF82F, 0xF4E6, 0xF1BE, 0xEEC5, 0xEC0B, 0xE99C, 0xE787,\n    0xE5D9, 0xE4A1, 0xE3EE, 0xE3CE, 0xE477, 0xE5E7, 0xE803, 0xEAB0,\n    0xEDD5, 0xF156, 0xF519, 0xF903, 0xFCFB, 0x00E5, 0x04A8, 0x0828,\n    0x0B4C, 0x0DDA, 0x0FB6, 0x10E6, 0x1174, 0x117C, 0x1157, 0x110E,\n    0x10A4, 0x101B, 0x0F74, 0x0EB2, 0x0DD6, 0x0CE3, 0x0BDA, 0x0ABE,\n    0x0990, 0x0853, 0x0708, 0x05D2, 0x04C0, 0x03D0, 0x0300, 0x024D,\n    0x01B6, 0x0137, 0x00D0, 0x007E, 0x003F, 0x0010, 0xFFF1, 0xFFDE,\n    0xFFD4, 0xFFD3, 0xFFD8, 0xFFE1, 0xFFEC, 0xFFF6, 0xFFFD, 0x0000,\n    0x03F6, 0x0681, 0x08F8, 0x0B57, 0x0D94, 0x0FA9, 0x118F, 0x133E,\n    0x14B0, 0x15DB, 0x16BB, 0x1746, 0x1776, 0x1746, 0x16BB, 0x15DB,\n    0x14B0, 0x133E, 0x118F, 0x0FA9, 0x0DB7, 0x0BD9, 0x0A11, 0x085F,\n    0x06C3, 0x053C, 0x03CB, 0x0270, 0x012B, 0xFFFD, 0xFEE3, 0xFDE0,\n    0xFCF3, 0xFC1C, 0xFB5B, 0xFAB1, 0xFA1D, 0xF99F, 0xF938, 0xF8E7,\n    0xF8AD, 0xF88A, 0xF88B, 0xF8B2, 0xF8FB, 0xF962, 0xF9E1, 0xFA75,\n    0xFB19, 0xFBC9, 0xFC80, 0xFD3A, 0xFDF2, 0xFEA4, 0xFF4C, 0xFFE4,\n    0x0067, 0x00D0, 0x0122, 0x015E, 0x0186, 0x019D, 0x01A3, 0x019C,\n    0x018A, 0x016D, 0x0149, 0x0120, 0x00F3, 0x00C4, 0x0096, 0x006B,\n    0x0044, 0x0024, 0x000C, 0x0000, 0x8001, 0xFDA4, 0xFF36, 0x00CA,\n    0x025C, 0x03E7, 0x0568, 0x06D8, 0x0835, 0x097A, 0x0AA1, 0x0BA8,\n    0x0C88, 0x0D3F, 0x0DC6, 0x0E1B, 0x0E38, 0x0E1B, 0x0DC6, 0x0D3F,\n    0x0C88, 0x0B8C, 0x0A3B, 0x08A5, 0x06DA, 0x04EB, 0x02E9, 0x00E3,\n    0xFEEC, 0xFD12, 0xFB66, 0xF9FA, 0xF8DC, 0xF81E, 0xF7D1, 0xF80D,\n    0xF8D8, 0xFA13, 0xFBA0, 0xFD62, 0xFF3B, 0x010B, 0x02B6, 0x041F,\n    0x0526, 0x05AF, 0x05B4, 0x0587, 0x0536, 0x04C8, 0x0445, 0x03B2,\n    0x0315, 0x0277, 0x01DD, 0x014D, 0x00D0, 0x006A, 0x0023, 0x0001,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0FD3, 0x0FB2, 0x0F55, 0x0EBF, 0x0DF6, 0x0CFE, 0x0BDD,\n    0x0A97, 0x0931, 0x07B0, 0x061A, 0x0472, 0x02BD, 0x0102, 0xFF3E,\n    0xFD6F, 0xFBA3, 0xF9E4, 0xF83F, 0xF6C0, 0xF571, 0xF45F, 0xF395,\n    0xF31F, 0xF309, 0xF356, 0xF3FB, 0xF4EA, 0xF616, 0xF772, 0xF8F1,\n    0xFA86, 0xFC23, 0xFDBA, 0xFF40, 0x00A6, 0x01E0, 0x02E0, 0x0399,\n    0x03FE, 0x040B, 0x0404, 0x03F9, 0x03E9, 0x03D6, 0x03C0, 0x03A6,\n    0x0389, 0x036A, 0x0349, 0x0325, 0x02FF, 0x02D8, 0x02AF, 0x0286,\n    0x025B, 0x0231, 0x0205, 0x01DA, 0x01AF, 0x0185, 0x015C, 0x0133,\n    0x010C, 0x00E6, 0x00C3, 0x00A1, 0x0082, 0x0066, 0x004C, 0x0036,\n    0x0023, 0x0014, 0x0009, 0x0002, 0x0000, 0x0000,\n};\n\n// 0x050113C8\nstatic const u16 unagi_seg5_animindex_050113C8[] = {\n    0x004C, 0x0001, 0x0001, 0x0000, 0x004C, 0x004D, 0x0001, 0x0000, 0x0001, 0x0099, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x004C, 0x03E1, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x004C, 0x0395, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x004C, 0x00E6, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x004C, 0x009A, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x004C, 0x0348, 0x0001, 0x0394,\n    0x0001, 0x0000, 0x004C, 0x02FC, 0x0001, 0x0000,\n    0x0001, 0x02FA, 0x0001, 0x02FB, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x004C, 0x02AE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x004C, 0x01CA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x004C, 0x0132,\n    0x0001, 0x0000, 0x004C, 0x0262, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x004C, 0x0216, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x004C, 0x017E, 0x0001, 0x0000,\n};\n\n// 0x05011488\nstatic const struct Animation unagi_seg5_anim_05011488 = {\n    1,\n    0,\n    0,\n    0,\n    0x4C,\n    ANIMINDEX_NUMPARTS(unagi_seg5_animindex_050113C8),\n    unagi_seg5_animvalue_05010B6C,\n    unagi_seg5_animindex_050113C8,\n    0,\n};\n"
  },
  {
    "path": "actors/unagi/anims/anim_05011890.inc.c",
    "content": "// 0x050114A0\nstatic const s16 unagi_seg5_animvalue_050114A0[] = {\n    0x0000, 0x3FFF, 0xFF3C, 0x054B, 0x0096, 0x00D0, 0xAC84, 0xAB05,\n    0xA50A, 0x9C4A, 0x927E, 0x895F, 0x82A5, 0x8007, 0x809A, 0x820F,\n    0x840D, 0x8637, 0x8833, 0x89A7, 0x8A36, 0x89FC, 0x895A, 0x8868,\n    0x873B, 0x85E7, 0x8484, 0x8325, 0x81E2, 0x80CF, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x005D, 0x0128, 0x00B2, 0xFE96,\n    0xFBA7, 0xF8B8, 0xF69C, 0xF625, 0xF724, 0xF8C4, 0xFAE1, 0xFD55,\n    0xFFFC, 0x02AE, 0x054A, 0x07A9, 0x09A6, 0x0B1C, 0x0BD7, 0x0B7A,\n    0x0A42, 0x0883, 0x0692, 0x04C3, 0x036B, 0x028B, 0x01E6, 0x0174,\n    0x0130, 0x0111, 0x0111, 0xF979, 0xF92F, 0xF8AA, 0xF860, 0xF8F0,\n    0xFA79, 0xFCB4, 0xFF5A, 0x0223, 0x04C9, 0x0704, 0x088D, 0x091D,\n    0x0888, 0x0703, 0x04D2, 0x023A, 0xFF81, 0xFCE8, 0xFAB7, 0xF932,\n    0xF89E, 0xF8A4, 0xF8BD, 0xF8E1, 0xF90B, 0xF936, 0xF95A, 0xF973,\n    0xF979, 0xAC84, 0xAB05, 0xA50A, 0x9C4A, 0x927E, 0x895F, 0x82A5,\n    0x8007, 0x809A, 0x820F, 0x840D, 0x8637, 0x8833, 0x89A7, 0x8A36,\n    0x89FC, 0x895A, 0x8868, 0x873B, 0x85E7, 0x8484, 0x8325, 0x81E2,\n    0x80CF, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x005D,\n    0x0128, 0x00B2, 0xFE96, 0xFBA7, 0xF8B8, 0xF69C, 0xF625, 0xF724,\n    0xF8C4, 0xFAE1, 0xFD55, 0xFFFC, 0x02AE, 0x054A, 0x07A9, 0x09A6,\n    0x0B1C, 0x0BD7, 0x0B7A, 0x0A42, 0x0883, 0x0692, 0x04C3, 0x036B,\n    0x028B, 0x01E6, 0x0174, 0x0130, 0x0111, 0x0111, 0xF979, 0xF92F,\n    0xF8AA, 0xF860, 0xF8F0, 0xFA79, 0xFCB4, 0xFF5A, 0x0223, 0x04C9,\n    0x0704, 0x088D, 0x091D, 0x0888, 0x0703, 0x04D2, 0x023A, 0xFF81,\n    0xFCE8, 0xFAB7, 0xF932, 0xF89E, 0xF8A4, 0xF8BD, 0xF8E1, 0xF90B,\n    0xF936, 0xF95A, 0xF973, 0xF979, 0x005D, 0x0128, 0x00B2, 0xFE96,\n    0xFBA7, 0xF8B8, 0xF69C, 0xF625, 0xF724, 0xF8C4, 0xFAE1, 0xFD55,\n    0xFFFC, 0x02AE, 0x054A, 0x07A9, 0x09A6, 0x0B1C, 0x0BD7, 0x0B7A,\n    0x0A42, 0x0883, 0x0692, 0x04C3, 0x036B, 0x028B, 0x01E6, 0x0174,\n    0x0130, 0x0111, 0x0111, 0xF979, 0xF92F, 0xF8AA, 0xF860, 0xF8F0,\n    0xFA79, 0xFCB4, 0xFF5A, 0x0223, 0x04C9, 0x0704, 0x088D, 0x091D,\n    0x0888, 0x0703, 0x04D2, 0x023A, 0xFF81, 0xFCE8, 0xFAB7, 0xF932,\n    0xF89E, 0xF8A4, 0xF8BD, 0xF8E1, 0xF90B, 0xF936, 0xF95A, 0xF973,\n    0xF979, 0xAC84, 0xAB05, 0xA50A, 0x9C4A, 0x927E, 0x895F, 0x82A5,\n    0x8007, 0x809A, 0x820F, 0x840D, 0x8637, 0x8833, 0x89A7, 0x8A36,\n    0x89FC, 0x895A, 0x8868, 0x873B, 0x85E7, 0x8484, 0x8325, 0x81E2,\n    0x80CF, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x005D, 0x0128, 0x00B2, 0xFE96, 0xFBA7, 0xF8B8, 0xF69C,\n    0xF625, 0xF724, 0xF8C4, 0xFAE1, 0xFD55, 0xFFFC, 0x02AE, 0x054A,\n    0x07A9, 0x09A6, 0x0B1C, 0x0BD7, 0x0B7A, 0x0A42, 0x0883, 0x0692,\n    0x04C3, 0x036B, 0x028B, 0x01E6, 0x0174, 0x0130, 0x0111, 0x0111,\n    0xF979, 0xF92F, 0xF8AA, 0xF860, 0xF8F0, 0xFA79, 0xFCB4, 0xFF5A,\n    0x0223, 0x04C9, 0x0704, 0x088D, 0x091D, 0x0888, 0x0703, 0x04D2,\n    0x023A, 0xFF81, 0xFCE8, 0xFAB7, 0xF932, 0xF89E, 0xF8A4, 0xF8BD,\n    0xF8E1, 0xF90B, 0xF936, 0xF95A, 0xF973, 0xF979, 0xFFEE, 0x0160,\n    0x02E7, 0x04EC, 0x0724, 0x0941, 0x0AF9, 0x0C00, 0x0C0B, 0x0B1D,\n    0x098A, 0x0776, 0x0505, 0x025E, 0xFFA7, 0xFD03, 0xFA98, 0xF88B,\n    0xF702, 0xF623, 0xF5E8, 0xF628, 0xF6CD, 0xF7C1, 0xF8F0, 0xFA45,\n    0xFBA9, 0xFD08, 0xFE4C, 0xFF60, 0x002E, 0x8970, 0x8B3D, 0x8D0A,\n    0x8DEF, 0x8D66, 0x8BB9, 0x893D, 0x8644, 0x8321, 0x8028, 0x7DA8,\n    0x7BFC, 0x7B73, 0x7C17, 0x7D94, 0x7FAC, 0x8223, 0x84B6, 0x872A,\n    0x8941, 0x8ABE, 0x8B63, 0x8B63, 0x8B27, 0x8ABF, 0x8A3D, 0x89B2,\n    0x8930, 0x88C8, 0x888B, 0xFDF7, 0xF7B6, 0xFFCC, 0x01E2, 0xFCE1,\n};\n\n// 0x050117D0\nstatic const u16 unagi_seg5_animindex_050117D0[] = {\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000,\n    0x0001, 0x0195, 0x0001, 0x0196, 0x0001, 0x0197,\n    0x0001, 0x0000, 0x0001, 0x0193, 0x0001, 0x0194,\n    0x0001, 0x0000, 0x0001, 0x0004, 0x0001, 0x0005,\n    0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0003,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0156, 0x001E, 0x0157, 0x001E, 0x0175,\n    0x0001, 0x0119, 0x001E, 0x011A, 0x001E, 0x0138,\n    0x0001, 0x0117, 0x0001, 0x0118, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x00F9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0061,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0006,\n    0x0001, 0x00BC, 0x001E, 0x00BD, 0x001E, 0x00DB,\n    0x0001, 0x007F, 0x001E, 0x0080, 0x001E, 0x009E,\n    0x0001, 0x0024, 0x001E, 0x0025, 0x001E, 0x0043,\n};\n\n// 0x05011890\nstatic const struct Animation unagi_seg5_anim_05011890 = {\n    1,\n    0,\n    0,\n    0,\n    0x1E,\n    ANIMINDEX_NUMPARTS(unagi_seg5_animindex_050117D0),\n    unagi_seg5_animvalue_050114A0,\n    unagi_seg5_animindex_050117D0,\n    0,\n};\n"
  },
  {
    "path": "actors/unagi/anims/anim_05011D40.inc.c",
    "content": "// 0x050118A8\nstatic const s16 unagi_seg5_animvalue_050118A8[] = {\n    0x0000, 0x3FFF, 0xFE8D, 0xFF32, 0xFFD7, 0x007B, 0x0120, 0x01C6,\n    0x026B, 0x0310, 0x03B5, 0x045B, 0x0500, 0x05A5, 0x064A, 0x04A8,\n    0x0148, 0xFD4B, 0xF9D0, 0xF7F9, 0xF7C4, 0xF84A, 0xF957, 0xFAB3,\n    0xFC29, 0xFD84, 0x054B, 0x004E, 0x00B6, 0x011E, 0x0187, 0x01EF,\n    0x0257, 0x02C0, 0x0328, 0x0390, 0x03F9, 0x0461, 0x02EB, 0x0017,\n    0xFD46, 0xFBD5, 0xFBB0, 0xFBCC, 0xFC1F, 0xFC9B, 0xFD35, 0xFDE0,\n    0xFE92, 0xFF3C, 0xFFD5, 0x00D0, 0x8007, 0x8007, 0x8007, 0x8007,\n    0x8007, 0x8007, 0x8007, 0x8007, 0x8007, 0x8007, 0x8007, 0x8334,\n    0x8662, 0x898F, 0x8CBD, 0x8FEA, 0x9318, 0x9646, 0x9973, 0x9CA1,\n    0x9FCE, 0xA2FC, 0xA629, 0xA957, 0x005D, 0x0128, 0x0111, 0x00FF,\n    0x00F4, 0x00ED, 0x00EA, 0x00EC, 0x00F1, 0x00F9, 0x0103, 0x010E,\n    0x011B, 0x0128, 0x0136, 0x0142, 0x014E, 0x0158, 0x0160, 0x0164,\n    0x0166, 0x0164, 0x015D, 0x0151, 0x0140, 0xF979, 0xF9A1, 0xFA80,\n    0xFBEA, 0xFDB2, 0xFFAC, 0x01AC, 0x0388, 0x0512, 0x061F, 0x0682,\n    0x0656, 0x05D9, 0x0519, 0x0422, 0x0300, 0x01C0, 0x006F, 0xFF1A,\n    0xFDCD, 0xFC94, 0xFB7C, 0xFA91, 0xF9E2, 0x8007, 0x8007, 0x8007,\n    0x8007, 0x8007, 0x8007, 0x8007, 0x8007, 0x8007, 0x8007, 0x8007,\n    0x8334, 0x8662, 0x898F, 0x8CBD, 0x8FEA, 0x9318, 0x9646, 0x9973,\n    0x9CA1, 0x9FCE, 0xA2FC, 0xA629, 0xA957, 0x005D, 0x0128, 0x0111,\n    0x00FF, 0x00F4, 0x00ED, 0x00EA, 0x00EC, 0x00F1, 0x00F9, 0x0103,\n    0x010E, 0x011B, 0x0128, 0x0136, 0x0142, 0x014E, 0x0158, 0x0160,\n    0x0164, 0x0166, 0x0164, 0x015D, 0x0151, 0x0140, 0xF979, 0xF9A1,\n    0xFA80, 0xFBEA, 0xFDB2, 0xFFAC, 0x01AC, 0x0388, 0x0512, 0x061F,\n    0x0682, 0x0656, 0x05D9, 0x0519, 0x0422, 0x0300, 0x01C0, 0x006F,\n    0xFF1A, 0xFDCD, 0xFC94, 0xFB7C, 0xFA91, 0xF9E2, 0x005D, 0x0128,\n    0x0111, 0x00FF, 0x00F4, 0x00ED, 0x00EA, 0x00EC, 0x00F1, 0x00F9,\n    0x0103, 0x010E, 0x011B, 0x0128, 0x0136, 0x0142, 0x014E, 0x0158,\n    0x0160, 0x0164, 0x0166, 0x0164, 0x015D, 0x0151, 0x0140, 0xF979,\n    0xF9A1, 0xFA80, 0xFBEA, 0xFDB2, 0xFFAC, 0x01AC, 0x0388, 0x0512,\n    0x061F, 0x0682, 0x0656, 0x05D9, 0x0519, 0x0422, 0x0300, 0x01C0,\n    0x006F, 0xFF1A, 0xFDCD, 0xFC94, 0xFB7C, 0xFA91, 0xF9E2, 0x8007,\n    0x8007, 0x8007, 0x8007, 0x8007, 0x8007, 0x8007, 0x8007, 0x8007,\n    0x8007, 0x8007, 0x8334, 0x8662, 0x898F, 0x8CBD, 0x8FEA, 0x9318,\n    0x9646, 0x9973, 0x9CA1, 0x9FCE, 0xA2FC, 0xA629, 0xA957, 0x8001,\n    0x8001, 0x005D, 0x0128, 0x0111, 0x00FF, 0x00F4, 0x00ED, 0x00EA,\n    0x00EC, 0x00F1, 0x00F9, 0x0103, 0x010E, 0x011B, 0x0128, 0x0136,\n    0x0142, 0x014E, 0x0158, 0x0160, 0x0164, 0x0166, 0x0164, 0x015D,\n    0x0151, 0x0140, 0xF979, 0xF9A1, 0xFA80, 0xFBEA, 0xFDB2, 0xFFAC,\n    0x01AC, 0x0388, 0x0512, 0x061F, 0x0682, 0x0656, 0x05D9, 0x0519,\n    0x0422, 0x0300, 0x01C0, 0x006F, 0xFF1A, 0xFDCD, 0xFC94, 0xFB7C,\n    0xFA91, 0xF9E2, 0xFFEE, 0x00E6, 0x0144, 0x01A2, 0x0200, 0x025D,\n    0x02BB, 0x0214, 0x00EC, 0xFFA2, 0xFE8E, 0xFE0D, 0xFE00, 0xFE09,\n    0xFE25, 0xFE52, 0xFE8B, 0xFECE, 0xFF18, 0xFF66, 0xFFB5, 0x0001,\n    0x0049, 0x0089, 0x00BF, 0x88AF, 0x8812, 0x8775, 0x86D9, 0x863C,\n    0x859F, 0x84E4, 0x8408, 0x833D, 0x82B1, 0x8293, 0x82CB, 0x831E,\n    0x8386, 0x8401, 0x8488, 0x8518, 0x85AC, 0x8640, 0x86CE, 0x8754,\n    0x87CB, 0x882F, 0x887D, 0xFDF7, 0xFE5F, 0xFEC8, 0xFF30, 0xFF98,\n    0x0000, 0x0068, 0x00D0, 0x0094, 0xFFFC, 0xFF3E, 0xFE92, 0xFE2F,\n    0xFE0A, 0xFDEF, 0xFDDE, 0xFDD4, 0xFDD1, 0xFDD3, 0xFDD8, 0xFDDF,\n    0xFDE8, 0xFDEF, 0xFDF5, 0xF7B6, 0xF81E, 0xF886, 0xF8EF, 0xF957,\n    0xF9BF, 0xFA28, 0xFA90, 0xFAF8, 0xFB60, 0xFBC9, 0xFBBA, 0xFB8F,\n    0xFB4E, 0xFAFA, 0xFA99, 0xFA2E, 0xF9BF, 0xF950, 0xF8E6, 0xF884,\n    0xF831, 0xF7EF, 0xF7C5, 0xFFCC, 0xFFCF, 0xFFD2, 0xFFD5, 0xFFD8,\n    0xFFDB, 0xFFDD, 0xFFE0, 0xFFE3, 0xFFE6, 0xFFE9, 0xFFE9, 0xFFE8,\n    0xFFE7, 0xFFE5, 0xFFE3, 0xFFE1, 0xFFDE, 0xFFDB, 0xFFD8, 0xFFD6,\n    0xFFD3, 0xFFD0, 0xFFCE, 0x01DC, 0x0230, 0x0283, 0x02D7, 0x032A,\n    0x037D, 0x02CB, 0x0196, 0x0040, 0xFF2B, 0xFEB8, 0xFEC3, 0xFEE4,\n    0xFF17, 0xFF58, 0xFFA4, 0xFFF8, 0x004D, 0x00A4, 0x00F7, 0x0142,\n    0x0182, 0x01B4, 0x01D3, 0xFCE1, 0xFC83, 0xFC25, 0xFBC7, 0xFB69,\n    0xFB0C, 0xFAAE, 0xFA50, 0xF9F2, 0xF994, 0xF936, 0xF943, 0xF969,\n    0xF9A2, 0xF9EC, 0xFA42, 0xFAA0, 0xFB03, 0xFB66, 0xFBC5, 0xFC1D,\n    0xFC69, 0xFCA6, 0xFCCF, 0x0000,\n};\n\n// 0x05011C80\nstatic const u16 unagi_seg5_animindex_05011C80[] = {\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000,\n    0x0018, 0x01A3, 0x0018, 0x01BB, 0x0018, 0x01D3,\n    0x0001, 0x0000, 0x0018, 0x0173, 0x0018, 0x018B,\n    0x0001, 0x0000, 0x0018, 0x001B, 0x0001, 0x0033,\n    0x0001, 0x0000, 0x0018, 0x0002, 0x0001, 0x001A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0142, 0x0018, 0x0143, 0x0018, 0x015B,\n    0x0001, 0x0111, 0x0018, 0x0112, 0x0018, 0x012A,\n    0x0001, 0x010F, 0x0001, 0x0110, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x00F7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x007D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x0034,\n    0x0001, 0x00C6, 0x0018, 0x00C7, 0x0018, 0x00DF,\n    0x0001, 0x0095, 0x0018, 0x0096, 0x0018, 0x00AE,\n    0x0001, 0x004C, 0x0018, 0x004D, 0x0018, 0x0065,\n};\n\n// 0x05011D40\nstatic const struct Animation unagi_seg5_anim_05011D40 = {\n    0,\n    0,\n    0,\n    0,\n    0x18,\n    ANIMINDEX_NUMPARTS(unagi_seg5_animindex_05011C80),\n    unagi_seg5_animvalue_050118A8,\n    unagi_seg5_animindex_05011C80,\n    0,\n};\n"
  },
  {
    "path": "actors/unagi/anims/anim_0501280C.inc.c",
    "content": "// 0x05011D58\nstatic const s16 unagi_seg5_animvalue_05011D58[] = {\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001,\n    0x0002, 0x0002, 0x0003, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,\n    0x0007, 0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000C, 0x000D,\n    0x000E, 0x000F, 0x0010, 0x0010, 0x0011, 0x0011, 0x0012, 0x0012,\n    0x0013, 0x0013, 0x0013, 0x0013, 0x0014, 0x0013, 0x0013, 0x0013,\n    0x0013, 0x0012, 0x0012, 0x0011, 0x0011, 0x0010, 0x0010, 0x000F,\n    0x000E, 0x000D, 0x000C, 0x000C, 0x000B, 0x000A, 0x0009, 0x0008,\n    0x0007, 0x0007, 0x0006, 0x0005, 0x0004, 0x0003, 0x0003, 0x0002,\n    0x0002, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FFF,\n    0xFE8D, 0xFE67, 0xFE44, 0xFE25, 0xFE0A, 0xFDF3, 0xFDE1, 0xFDD3,\n    0xFDCB, 0xFDC8, 0xFDCB, 0xFDD3, 0xFDE1, 0xFDF3, 0xFE0A, 0xFE25,\n    0xFE44, 0xFE67, 0xFE8D, 0xFEB5, 0xFEE0, 0xFF0D, 0xFF3C, 0xFF6D,\n    0xFF9E, 0xFFD1, 0x0003, 0x0036, 0x0069, 0x009C, 0x00CD, 0x00FE,\n    0x012D, 0x015A, 0x0185, 0x01AE, 0x01D3, 0x01F6, 0x0215, 0x0230,\n    0x0247, 0x0259, 0x0267, 0x026F, 0x0272, 0x026F, 0x0267, 0x0259,\n    0x0247, 0x0230, 0x0215, 0x01F6, 0x01D3, 0x01AE, 0x0185, 0x015A,\n    0x012D, 0x00FE, 0x00CD, 0x009C, 0x0069, 0x0036, 0x0003, 0xFFD1,\n    0xFF9E, 0xFF6D, 0xFF3C, 0xFF0D, 0xFEE0, 0xFEB5, 0x054B, 0x004E,\n    0x003E, 0x002D, 0x001C, 0x000B, 0xFFFA, 0xFFE9, 0xFFD8, 0xFFC7,\n    0xFFB7, 0xFFA7, 0xFF98, 0xFF8A, 0xFF7C, 0xFF6F, 0xFF64, 0xFF59,\n    0xFF50, 0xFF48, 0xFF42, 0xFF3E, 0xFF3B, 0xFF3A, 0xFF3B, 0xFF3E,\n    0xFF42, 0xFF48, 0xFF50, 0xFF59, 0xFF64, 0xFF6F, 0xFF7C, 0xFF8A,\n    0xFF98, 0xFFA7, 0xFFB7, 0xFFC7, 0xFFD8, 0xFFE9, 0xFFFA, 0x000B,\n    0x001C, 0x002D, 0x003E, 0x004E, 0x005E, 0x006D, 0x007B, 0x0089,\n    0x0096, 0x00A1, 0x00AC, 0x00B5, 0x00BD, 0x00C3, 0x00C7, 0x00CA,\n    0x00CB, 0x00CA, 0x00C7, 0x00C3, 0x00BD, 0x00B5, 0x00AC, 0x00A1,\n    0x0096, 0x0089, 0x007B, 0x006D, 0x005E, 0x00D0, 0x8007, 0x800D,\n    0x8016, 0x8021, 0x802E, 0x803D, 0x804D, 0x8060, 0x8074, 0x8089,\n    0x809F, 0x80B7, 0x80CF, 0x80E9, 0x8103, 0x811D, 0x8138, 0x8153,\n    0x816F, 0x818A, 0x81A5, 0x81C0, 0x81DB, 0x81F5, 0x820E, 0x8226,\n    0x823E, 0x8254, 0x826A, 0x827D, 0x8290, 0x82A0, 0x82AF, 0x82BC,\n    0x82C7, 0x82D0, 0x82D6, 0x82DA, 0x82DC, 0x82D9, 0x82D2, 0x82C7,\n    0x82B8, 0x82A6, 0x8290, 0x8277, 0x825C, 0x823E, 0x821E, 0x81FD,\n    0x81DB, 0x81B7, 0x8193, 0x816F, 0x814A, 0x8126, 0x8103, 0x80E0,\n    0x80BF, 0x809F, 0x8082, 0x8066, 0x804D, 0x8038, 0x8025, 0x8016,\n    0x800B, 0x8004, 0x8001, 0x8003, 0x005D, 0x0128, 0x010C, 0x00ED,\n    0x00CC, 0x00A9, 0x0084, 0x005E, 0x0036, 0x000D, 0xFFE5, 0xFFBB,\n    0xFF91, 0xFF68, 0xFF3E, 0xFF16, 0xFEEE, 0xFEC8, 0xFEA3, 0xFE80,\n    0xFE5F, 0xFE40, 0xFE24, 0xFE0A, 0xFDF4, 0xFDE1, 0xFDD2, 0xFDC7,\n    0xFDC0, 0xFDBE, 0xFDC0, 0xFDC7, 0xFDD2, 0xFDE1, 0xFDF4, 0xFE0A,\n    0xFE24, 0xFE40, 0xFE5F, 0xFE80, 0xFEA3, 0xFEC8, 0xFEEE, 0xFF16,\n    0xFF3E, 0xFF68, 0xFF91, 0xFFBB, 0xFFE5, 0x000D, 0x0036, 0x005E,\n    0x0084, 0x00A9, 0x00CC, 0x00ED, 0x010C, 0x0128, 0x0142, 0x0158,\n    0x016A, 0x017A, 0x0185, 0x018B, 0x018E, 0x018B, 0x0185, 0x017A,\n    0x016A, 0x0158, 0x0142, 0xF979, 0xF938, 0xF8FB, 0xF8C0, 0xF888,\n    0xF854, 0xF825, 0xF7FA, 0xF7D5, 0xF7B5, 0xF79B, 0xF789, 0xF77D,\n    0xF779, 0xF77D, 0xF787, 0xF798, 0xF7AF, 0xF7CB, 0xF7ED, 0xF814,\n    0xF83F, 0xF86E, 0xF8A0, 0xF8D6, 0xF90F, 0xF94A, 0xF987, 0xF9C6,\n    0xFA06, 0xFA47, 0xFA88, 0xFAC9, 0xFB0A, 0xFB4A, 0xFB89, 0xFBC6,\n    0xFC01, 0xFC3A, 0xFC70, 0xFCA2, 0xFCD1, 0xFCFC, 0xFD23, 0xFD45,\n    0xFD61, 0xFD78, 0xFD89, 0xFD93, 0xFD97, 0xFD93, 0xFD87, 0xFD74,\n    0xFD5B, 0xFD3B, 0xFD16, 0xFCEB, 0xFCBC, 0xFC88, 0xFC50, 0xFC15,\n    0xFBD7, 0xFB97, 0xFB55, 0xFB11, 0xFACD, 0xFA88, 0xFA43, 0xF9FE,\n    0xF9BB, 0x8007, 0x800D, 0x8016, 0x8021, 0x802E, 0x803D, 0x804D,\n    0x8060, 0x8074, 0x8089, 0x809F, 0x80B7, 0x80CF, 0x80E9, 0x8103,\n    0x811D, 0x8138, 0x8153, 0x816F, 0x818A, 0x81A5, 0x81C0, 0x81DB,\n    0x81F5, 0x820E, 0x8226, 0x823E, 0x8254, 0x826A, 0x827D, 0x8290,\n    0x82A0, 0x82AF, 0x82BC, 0x82C7, 0x82D0, 0x82D6, 0x82DA, 0x82DC,\n    0x82D9, 0x82D2, 0x82C7, 0x82B8, 0x82A6, 0x8290, 0x8277, 0x825C,\n    0x823E, 0x821E, 0x81FD, 0x81DB, 0x81B7, 0x8193, 0x816F, 0x814A,\n    0x8126, 0x8103, 0x80E0, 0x80BF, 0x809F, 0x8082, 0x8066, 0x804D,\n    0x8038, 0x8025, 0x8016, 0x800B, 0x8004, 0x8001, 0x8003, 0x005D,\n    0x0128, 0x010C, 0x00ED, 0x00CC, 0x00A9, 0x0084, 0x005E, 0x0036,\n    0x000D, 0xFFE5, 0xFFBB, 0xFF91, 0xFF68, 0xFF3E, 0xFF16, 0xFEEE,\n    0xFEC8, 0xFEA3, 0xFE80, 0xFE5F, 0xFE40, 0xFE24, 0xFE0A, 0xFDF4,\n    0xFDE1, 0xFDD2, 0xFDC7, 0xFDC0, 0xFDBE, 0xFDC0, 0xFDC7, 0xFDD2,\n    0xFDE1, 0xFDF4, 0xFE0A, 0xFE24, 0xFE40, 0xFE5F, 0xFE80, 0xFEA3,\n    0xFEC8, 0xFEEE, 0xFF16, 0xFF3E, 0xFF68, 0xFF91, 0xFFBB, 0xFFE5,\n    0x000D, 0x0036, 0x005E, 0x0084, 0x00A9, 0x00CC, 0x00ED, 0x010C,\n    0x0128, 0x0142, 0x0158, 0x016A, 0x017A, 0x0185, 0x018B, 0x018E,\n    0x018B, 0x0185, 0x017A, 0x016A, 0x0158, 0x0142, 0xF979, 0xF938,\n    0xF8FB, 0xF8C0, 0xF888, 0xF854, 0xF825, 0xF7FA, 0xF7D5, 0xF7B5,\n    0xF79B, 0xF789, 0xF77D, 0xF779, 0xF77D, 0xF787, 0xF798, 0xF7AF,\n    0xF7CB, 0xF7ED, 0xF814, 0xF83F, 0xF86E, 0xF8A0, 0xF8D6, 0xF90F,\n    0xF94A, 0xF987, 0xF9C6, 0xFA06, 0xFA47, 0xFA88, 0xFAC9, 0xFB0A,\n    0xFB4A, 0xFB89, 0xFBC6, 0xFC01, 0xFC3A, 0xFC70, 0xFCA2, 0xFCD1,\n    0xFCFC, 0xFD23, 0xFD45, 0xFD61, 0xFD78, 0xFD89, 0xFD93, 0xFD97,\n    0xFD93, 0xFD87, 0xFD74, 0xFD5B, 0xFD3B, 0xFD16, 0xFCEB, 0xFCBC,\n    0xFC88, 0xFC50, 0xFC15, 0xFBD7, 0xFB97, 0xFB55, 0xFB11, 0xFACD,\n    0xFA88, 0xFA43, 0xF9FE, 0xF9BB, 0x005D, 0x0128, 0x010C, 0x00ED,\n    0x00CC, 0x00A9, 0x0084, 0x005E, 0x0036, 0x000D, 0xFFE5, 0xFFBB,\n    0xFF91, 0xFF68, 0xFF3E, 0xFF16, 0xFEEE, 0xFEC8, 0xFEA3, 0xFE80,\n    0xFE5F, 0xFE40, 0xFE24, 0xFE0A, 0xFDF4, 0xFDE1, 0xFDD2, 0xFDC7,\n    0xFDC0, 0xFDBE, 0xFDC0, 0xFDC7, 0xFDD2, 0xFDE1, 0xFDF4, 0xFE0A,\n    0xFE24, 0xFE40, 0xFE5F, 0xFE80, 0xFEA3, 0xFEC8, 0xFEEE, 0xFF16,\n    0xFF3E, 0xFF68, 0xFF91, 0xFFBB, 0xFFE5, 0x000D, 0x0036, 0x005E,\n    0x0084, 0x00A9, 0x00CC, 0x00ED, 0x010C, 0x0128, 0x0142, 0x0158,\n    0x016A, 0x017A, 0x0185, 0x018B, 0x018E, 0x018B, 0x0185, 0x017A,\n    0x016A, 0x0158, 0x0142, 0xF979, 0xF938, 0xF8FB, 0xF8C0, 0xF888,\n    0xF854, 0xF825, 0xF7FA, 0xF7D5, 0xF7B5, 0xF79B, 0xF789, 0xF77D,\n    0xF779, 0xF77D, 0xF787, 0xF798, 0xF7AF, 0xF7CB, 0xF7ED, 0xF814,\n    0xF83F, 0xF86E, 0xF8A0, 0xF8D6, 0xF90F, 0xF94A, 0xF987, 0xF9C6,\n    0xFA06, 0xFA47, 0xFA88, 0xFAC9, 0xFB0A, 0xFB4A, 0xFB89, 0xFBC6,\n    0xFC01, 0xFC3A, 0xFC70, 0xFCA2, 0xFCD1, 0xFCFC, 0xFD23, 0xFD45,\n    0xFD61, 0xFD78, 0xFD89, 0xFD93, 0xFD97, 0xFD93, 0xFD87, 0xFD74,\n    0xFD5B, 0xFD3B, 0xFD16, 0xFCEB, 0xFCBC, 0xFC88, 0xFC50, 0xFC15,\n    0xFBD7, 0xFB97, 0xFB55, 0xFB11, 0xFACD, 0xFA88, 0xFA43, 0xF9FE,\n    0xF9BB, 0x8007, 0x800D, 0x8016, 0x8021, 0x802E, 0x803D, 0x804D,\n    0x8060, 0x8074, 0x8089, 0x809F, 0x80B7, 0x80CF, 0x80E9, 0x8103,\n    0x811D, 0x8138, 0x8153, 0x816F, 0x818A, 0x81A5, 0x81C0, 0x81DB,\n    0x81F5, 0x820E, 0x8226, 0x823E, 0x8254, 0x826A, 0x827D, 0x8290,\n    0x82A0, 0x82AF, 0x82BC, 0x82C7, 0x82D0, 0x82D6, 0x82DA, 0x82DC,\n    0x82D9, 0x82D2, 0x82C7, 0x82B8, 0x82A6, 0x8290, 0x8277, 0x825C,\n    0x823E, 0x821E, 0x81FD, 0x81DB, 0x81B7, 0x8193, 0x816F, 0x814A,\n    0x8126, 0x8103, 0x80E0, 0x80BF, 0x809F, 0x8082, 0x8066, 0x804D,\n    0x8038, 0x8025, 0x8016, 0x800B, 0x8004, 0x8001, 0x8003, 0x8001,\n    0x8001, 0x005D, 0x0128, 0x010C, 0x00ED, 0x00CC, 0x00A9, 0x0084,\n    0x005E, 0x0036, 0x000D, 0xFFE5, 0xFFBB, 0xFF91, 0xFF68, 0xFF3E,\n    0xFF16, 0xFEEE, 0xFEC8, 0xFEA3, 0xFE80, 0xFE5F, 0xFE40, 0xFE24,\n    0xFE0A, 0xFDF4, 0xFDE1, 0xFDD2, 0xFDC7, 0xFDC0, 0xFDBE, 0xFDC0,\n    0xFDC7, 0xFDD2, 0xFDE1, 0xFDF4, 0xFE0A, 0xFE24, 0xFE40, 0xFE5F,\n    0xFE80, 0xFEA3, 0xFEC8, 0xFEEE, 0xFF16, 0xFF3E, 0xFF68, 0xFF91,\n    0xFFBB, 0xFFE5, 0x000D, 0x0036, 0x005E, 0x0084, 0x00A9, 0x00CC,\n    0x00ED, 0x010C, 0x0128, 0x0142, 0x0158, 0x016A, 0x017A, 0x0185,\n    0x018B, 0x018E, 0x018B, 0x0185, 0x017A, 0x016A, 0x0158, 0x0142,\n    0xF979, 0xF938, 0xF8FB, 0xF8C0, 0xF888, 0xF854, 0xF825, 0xF7FA,\n    0xF7D5, 0xF7B5, 0xF79B, 0xF789, 0xF77D, 0xF779, 0xF77D, 0xF787,\n    0xF798, 0xF7AF, 0xF7CB, 0xF7ED, 0xF814, 0xF83F, 0xF86E, 0xF8A0,\n    0xF8D6, 0xF90F, 0xF94A, 0xF987, 0xF9C6, 0xFA06, 0xFA47, 0xFA88,\n    0xFAC9, 0xFB0A, 0xFB4A, 0xFB89, 0xFBC6, 0xFC01, 0xFC3A, 0xFC70,\n    0xFCA2, 0xFCD1, 0xFCFC, 0xFD23, 0xFD45, 0xFD61, 0xFD78, 0xFD89,\n    0xFD93, 0xFD97, 0xFD93, 0xFD87, 0xFD74, 0xFD5B, 0xFD3B, 0xFD16,\n    0xFCEB, 0xFCBC, 0xFC88, 0xFC50, 0xFC15, 0xFBD7, 0xFB97, 0xFB55,\n    0xFB11, 0xFACD, 0xFA88, 0xFA43, 0xF9FE, 0xF9BB, 0xFFEE, 0x00E6,\n    0x0105, 0x0121, 0x013C, 0x0155, 0x016B, 0x017E, 0x018F, 0x019C,\n    0x01A6, 0x01AB, 0x01AE, 0x01AB, 0x01A6, 0x019C, 0x018F, 0x017E,\n    0x016B, 0x0155, 0x013C, 0x0121, 0x0105, 0x00E6, 0x00C6, 0x00A4,\n    0x0082, 0x005E, 0x003A, 0x0016, 0xFFF2, 0xFFCE, 0xFFAA, 0xFF86,\n    0xFF64, 0xFF42, 0xFF22, 0xFF03, 0xFEE7, 0xFECC, 0xFEB3, 0xFE9D,\n    0xFE8A, 0xFE79, 0xFE6C, 0xFE63, 0xFE5D, 0xFE5B, 0xFE5D, 0xFE63,\n    0xFE6C, 0xFE79, 0xFE8A, 0xFE9D, 0xFEB3, 0xFECC, 0xFEE7, 0xFF03,\n    0xFF22, 0xFF42, 0xFF64, 0xFF86, 0xFFAA, 0xFFCE, 0xFFF2, 0x0016,\n    0x003A, 0x005E, 0x0082, 0x00A4, 0x00C6, 0x88AF, 0x88D0, 0x88F0,\n    0x890E, 0x8929, 0x8941, 0x8957, 0x8969, 0x8977, 0x8982, 0x8988,\n    0x898B, 0x8988, 0x8982, 0x8977, 0x8969, 0x8957, 0x8941, 0x8929,\n    0x890E, 0x88F0, 0x88D0, 0x88AF, 0x888B, 0x8866, 0x8840, 0x8819,\n    0x87F1, 0x87C9, 0x87A1, 0x8779, 0x8751, 0x872A, 0x8704, 0x86DF,\n    0x86BC, 0x869A, 0x867A, 0x865C, 0x8641, 0x8629, 0x8614, 0x8602,\n    0x85F3, 0x85E8, 0x85E2, 0x85E0, 0x85E2, 0x85E8, 0x85F3, 0x8602,\n    0x8614, 0x8629, 0x8641, 0x865C, 0x867A, 0x869A, 0x86BC, 0x86DF,\n    0x8704, 0x872A, 0x8751, 0x8779, 0x87A1, 0x87C9, 0x87F1, 0x8819,\n    0x8840, 0x8866, 0x888B, 0xFDF7, 0xFDFA, 0xFE01, 0xFE0D, 0xFE1D,\n    0xFE31, 0xFE48, 0xFE63, 0xFE82, 0xFEA2, 0xFEC6, 0xFEEB, 0xFF13,\n    0xFF3C, 0xFF66, 0xFF92, 0xFFBE, 0xFFEA, 0x0016, 0x0042, 0x006E,\n    0x009A, 0x00C4, 0x00ED, 0x0115, 0x013A, 0x015E, 0x017E, 0x019D,\n    0x01B8, 0x01CF, 0x01E3, 0x01F3, 0x01FF, 0x0206, 0x0209, 0x0206,\n    0x01FF, 0x01F3, 0x01E3, 0x01CF, 0x01B8, 0x019D, 0x017E, 0x015E,\n    0x013A, 0x0115, 0x00ED, 0x00C4, 0x009A, 0x006E, 0x0042, 0x0016,\n    0xFFEA, 0xFFBE, 0xFF92, 0xFF66, 0xFF3C, 0xFF13, 0xFEEB, 0xFEC6,\n    0xFEA2, 0xFE82, 0xFE63, 0xFE48, 0xFE31, 0xFE1D, 0xFE0D, 0xFE01,\n    0xFDFA, 0xF7B6, 0xFFCC, 0x01DC, 0x01DA, 0x01D3, 0x01C8, 0x01B9,\n    0x01A7, 0x0191, 0x0178, 0x015D, 0x013F, 0x011E, 0x00FC, 0x00D7,\n    0x00B2, 0x008B, 0x0063, 0x003A, 0x0011, 0xFFE9, 0xFFC0, 0xFF98,\n    0xFF70, 0xFF49, 0xFF23, 0xFEFF, 0xFEDC, 0xFEBC, 0xFE9E, 0xFE82,\n    0xFE69, 0xFE53, 0xFE41, 0xFE32, 0xFE27, 0xFE21, 0xFE1E, 0xFE21,\n    0xFE27, 0xFE32, 0xFE41, 0xFE53, 0xFE69, 0xFE82, 0xFE9E, 0xFEBC,\n    0xFEDC, 0xFEFF, 0xFF23, 0xFF49, 0xFF70, 0xFF98, 0xFFC0, 0xFFE9,\n    0x0011, 0x003A, 0x0063, 0x008B, 0x00B2, 0x00D7, 0x00FC, 0x011E,\n    0x013F, 0x015D, 0x0178, 0x0191, 0x01A7, 0x01B9, 0x01C8, 0x01D3,\n    0x01DA, 0xFCE1,\n};\n\n// 0x0501274C\nstatic const u16 unagi_seg5_animindex_0501274C[] = {\n    0x0001, 0x0000, 0x0046, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0047, 0x0001, 0x0000,\n    0x0001, 0x04B2, 0x0046, 0x04B3, 0x0001, 0x04F9,\n    0x0001, 0x0000, 0x0046, 0x046B, 0x0001, 0x04B1,\n    0x0001, 0x0000, 0x0046, 0x008F, 0x0001, 0x00D5,\n    0x0001, 0x0000, 0x0046, 0x0048, 0x0001, 0x008E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x03DE, 0x0046, 0x03DF, 0x0046, 0x0425,\n    0x0001, 0x0351, 0x0046, 0x0352, 0x0046, 0x0398,\n    0x0001, 0x034F, 0x0001, 0x0350, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0046, 0x0309,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0046, 0x01A9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0046, 0x00D6,\n    0x0001, 0x027C, 0x0046, 0x027D, 0x0046, 0x02C3,\n    0x0001, 0x01EF, 0x0046, 0x01F0, 0x0046, 0x0236,\n    0x0001, 0x011C, 0x0046, 0x011D, 0x0046, 0x0163,\n};\n\n// 0x0501280C\nstatic const struct Animation unagi_seg5_anim_0501280C = {\n    0,\n    0,\n    0,\n    0,\n    0x46,\n    ANIMINDEX_NUMPARTS(unagi_seg5_animindex_0501274C),\n    unagi_seg5_animvalue_05011D58,\n    unagi_seg5_animindex_0501274C,\n    0,\n};\n"
  },
  {
    "path": "actors/unagi/anims/data.inc.c",
    "content": "#include \"anim_0500FBF4.inc.c\"\n#include \"anim_05010488.inc.c\"\n#include \"anim_05010B54.inc.c\"\n#include \"anim_05011488.inc.c\"\n#include \"anim_05011890.inc.c\"\n#include \"anim_05011D40.inc.c\"\n#include \"anim_0501280C.inc.c\"\n"
  },
  {
    "path": "actors/unagi/anims/table.inc.c",
    "content": "// 0x05012824\nconst struct Animation *const unagi_seg5_anims_05012824[] = {\n    &unagi_seg5_anim_0500FBF4,\n    &unagi_seg5_anim_05010488,\n    &unagi_seg5_anim_05010B54,\n    &unagi_seg5_anim_05011488,\n    &unagi_seg5_anim_05011890,\n    &unagi_seg5_anim_05011D40,\n    &unagi_seg5_anim_0501280C,\n};\n"
  },
  {
    "path": "actors/unagi/geo.inc.c",
    "content": "// 0x0C00010C\nconst GeoLayout unagi_geo[] = {\n    GEO_CULLING_RADIUS(2000),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, unagi_seg5_dl_0500D268),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 245, 0, 0, unagi_seg5_dl_0500D468),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 494, 0, 0, unagi_seg5_dl_0500D668),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 475, 0, 0, unagi_seg5_dl_0500D828),\n                            GEO_OPEN_NODE(),\n                                GEO_SWITCH_CASE(2, geo_switch_anim_state),\n                                GEO_OPEN_NODE(),\n                                    GEO_NODE_START(),\n                                    GEO_NODE_START(),\n                                    GEO_OPEN_NODE(),\n                                        GEO_SCALE(0x00, 16384),\n                                        GEO_OPEN_NODE(),\n                                            GEO_TRANSLATE_ROTATE_WITH_DL(LAYER_OPAQUE, 2000, 0, 0, 0, 0, 0, star_seg3_dl_0302B870),\n                                            GEO_TRANSLATE_ROTATE_WITH_DL(LAYER_ALPHA, 2000, 0, 0, 0, 0, 0, star_seg3_dl_0302BA18),\n                                        GEO_CLOSE_NODE(),\n                                    GEO_CLOSE_NODE(),\n                                GEO_CLOSE_NODE(),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -254, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, unagi_seg5_dl_0500D050),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_ALPHA, 527, 0, 0, unagi_seg5_dl_0500DEB8),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 226, 65, 0, NULL),\n                                GEO_OPEN_NODE(),\n                                    GEO_ANIMATED_PART(LAYER_ALPHA, 0, 0, 0, unagi_seg5_dl_0500E258),\n                                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, unagi_seg5_dl_0500CDD0),\n                                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                                GEO_CLOSE_NODE(),\n                            GEO_CLOSE_NODE(),\n                            GEO_ANIMATED_PART(LAYER_ALPHA, 527, 0, 0, unagi_seg5_dl_0500E088),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 527, 0, 0, unagi_seg5_dl_0500DD08),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 527, 0, 0, NULL),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/unagi/model.inc.c",
    "content": "// Unagi (Eel)\n\n// Unreferenced light group\nUNUSED static const Lights1 unagi_lights_unused1 = gdSPDefLights1(\n    0x2c, 0x25, 0x00,\n    0xb2, 0x94, 0x00, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 unagi_lights_unused2 = gdSPDefLights1(\n    0x35, 0x00, 0x00,\n    0xd5, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 unagi_lights_unused3 = gdSPDefLights1(\n    0x37, 0x00, 0x00,\n    0xdd, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 unagi_lights_unused4 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 unagi_lights_unused5 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 unagi_lights_unused6 = gdSPDefLights1(\n    0x34, 0x00, 0x00,\n    0xd2, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 unagi_lights_unused7 = gdSPDefLights1(\n    0x34, 0x00, 0x00,\n    0xd3, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 unagi_lights_unused8 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0500AF20\nALIGNED8 static const Texture unagi_seg5_texture_0500AF20[] = {\n#include \"actors/unagi/unagi_body.rgba16.inc.c\"\n};\n\n// 0x0500B720\nALIGNED8 static const Texture unagi_seg5_texture_0500B720[] = {\n#include \"actors/unagi/unagi_eye.rgba16.inc.c\"\n};\n\n// 0x0500B920\nALIGNED8 static const Texture unagi_seg5_texture_0500B920[] = {\n#include \"actors/unagi/unagi_head_base.rgba16.inc.c\"\n};\n\n// 0x0500C120\nALIGNED8 static const Texture unagi_seg5_texture_0500C120[] = {\n#include \"actors/unagi/unagi_tooth.rgba16.inc.c\"\n};\n\n// 0x0500C320\nALIGNED8 static const Texture unagi_seg5_texture_0500C320[] = {\n#include \"actors/unagi/unagi_mouth.rgba16.inc.c\"\n};\n\n// 0x0500C3A0\nALIGNED8 static const Texture unagi_seg5_texture_0500C3A0[] = {\n#include \"actors/unagi/unagi_tail.rgba16.inc.c\"\n};\n\n// 0x0500CBA0\nstatic const Vtx unagi_seg5_vertex_0500CBA0[] = {\n    {{{   179,     42,    160}, 0, {   -25,    134}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,   -164}, 0, {   224,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   179,     42,   -150}, 0, {   213,    134}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   429,     24,    -89}, 0, {   166,     12}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   429,     24,     90}, 0, {    29,     12}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   521,     42,      0}, 0, {    98,    -33}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,    170}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500CC10\nstatic const Vtx unagi_seg5_vertex_0500CC10[] = {\n    {{{     0,      0,    170}, 0, {   670,    620}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   106,    210,     85}, 0, {   518,   1064}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -59,    157,     53}, 0, {   754,    954}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   368,     99,      0}, 0, {   148,    830}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   429,     24,    -89}, 0, {    60,    670}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   179,     42,   -150}, 0, {   416,    710}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,   -164}, 0, {   670,    620}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   106,    210,    -84}, 0, {   518,   1064}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   265,    166,      0}, 0, {   294,    974}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -59,    157,    -51}, 0, {   754,    954}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   521,     42,      0}, 0, {   -68,    710}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   429,     24,     90}, 0, {    60,    670}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   179,     42,    160}, 0, {   416,    710}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500CCE0 - 0x0500CD30\nconst Gfx unagi_seg5_dl_0500CCE0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, unagi_seg5_texture_0500C320),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 8 * 8 - 1, CALC_DXT(8, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(unagi_seg5_vertex_0500CBA0, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 4,  0,  2, 0x0,  3,  5,  4, 0x0),\n    gsSP1Triangle( 6,  1,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500CD30 - 0x0500CDD0\nconst Gfx unagi_seg5_dl_0500CD30[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, unagi_seg5_texture_0500B920),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(unagi_seg5_vertex_0500CC10, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  7,  8,  5, 0x0),\n    gsSP2Triangles( 5,  8,  3, 0x0,  9,  7,  6, 0x0),\n    gsSP2Triangles( 8,  7,  1, 0x0,  1,  7,  9, 0x0),\n    gsSP2Triangles( 4,  3, 10, 0x0, 10,  3, 11, 0x0),\n    gsSP2Triangles(12, 11,  3, 0x0,  8, 12,  3, 0x0),\n    gsSP2Triangles( 1,  9,  2, 0x0, 12,  8,  1, 0x0),\n    gsSP1Triangle( 1,  0, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500CDD0 - 0x0500CEA8\nconst Gfx unagi_seg5_dl_0500CDD0[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(5, 80, 75, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_DECALRGB, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 2, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 3, G_TX_NOLOD, G_TX_CLAMP, 3, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (8 - 1) << G_TEXTURE_IMAGE_FRAC, (8 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(unagi_seg5_dl_0500CCE0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(unagi_seg5_dl_0500CD30),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500CEA8\nstatic const Vtx unagi_seg5_vertex_0500CEA8[] = {\n    {{{   528,      0,   -117}, 0, {     0,    452}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   531,    208,    -60}, 0, {   -36,   1008}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   646,      0,      0}, 0, {  -258,    452}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   528,      0,    123}, 0, {     0,    452}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   451,   -175,      0}, 0, {   116,    -22}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,   -107}, 0, {   990,    452}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,    118}, 0, {   990,    452}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -159,      0}, 0, {   990,     22}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -98,      0,      0}, 0, {  1182,    452}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    188,      0}, 0, {   990,    960}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   531,    208,     61}, 0, {   -36,   1008}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500CF58\nstatic const Vtx unagi_seg5_vertex_0500CF58[] = {\n    {{{   531,    208,     61}, 0, {     0,      0}, {0x89, 0x19, 0x2e, 0xff}}},\n    {{{   531,    208,    -60}, 0, {     0,      0}, {0x89, 0x19, 0x2e, 0xff}}},\n    {{{     0,    188,      0}, 0, {     0,      0}, {0x89, 0x19, 0x2e, 0xff}}},\n};\n\n// 0x0500CF88 - 0x0500D038\nconst Gfx unagi_seg5_dl_0500CF88[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, unagi_seg5_texture_0500AF20),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(unagi_seg5_vertex_0500CEA8, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 5,  0,  4, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 4,  0,  2, 0x0,  7,  6,  8, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  1,  0,  5, 0x0),\n    gsSP2Triangles( 1,  5,  9, 0x0,  9,  5,  8, 0x0),\n    gsSP2Triangles( 6,  9,  8, 0x0, 10,  9,  6, 0x0),\n    gsSP2Triangles( 6,  3, 10, 0x0, 10,  3,  2, 0x0),\n    gsSP1Triangle( 2,  1, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500D038 - 0x0500D050\nconst Gfx unagi_seg5_dl_0500D038[] = {\n    gsSPVertex(unagi_seg5_vertex_0500CF58, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500D050 - 0x0500D120\nconst Gfx unagi_seg5_dl_0500D050[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(5, 80, 75, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_DECALRGB, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(unagi_seg5_dl_0500CF88),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_PASS2),\n    gsSPDisplayList(unagi_seg5_dl_0500D038),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500D120\nstatic const Vtx unagi_seg5_vertex_0500D120[] = {\n    {{{  -357,      0,      0}, 0, {  -242,    452}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -253,      0,    118}, 0, {     0,    452}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -253,    160,      0}, 0, {     0,     22}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   245,      0,     99}, 0, {   994,    452}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   245,    151,      0}, 0, {   994,     46}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   245,      0,    -89}, 0, {   994,    452}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -253,      0,   -107}, 0, {     0,    452}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   316,      0,      0}, 0, {  1138,    452}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -253,   -187,      0}, 0, {     0,    960}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   245,   -173,      0}, 0, {   994,    920}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500D1C0 - 0x0500D268\nconst Gfx unagi_seg5_dl_0500D1C0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, unagi_seg5_texture_0500AF20),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(unagi_seg5_vertex_0500D120, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 5,  6,  2, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 2,  1,  3, 0x0,  2,  6,  0, 0x0),\n    gsSP2Triangles( 4,  3,  7, 0x0,  5,  4,  7, 0x0),\n    gsSP2Triangles( 8,  5,  9, 0x0,  8,  6,  5, 0x0),\n    gsSP2Triangles( 9,  5,  7, 0x0,  0,  8,  1, 0x0),\n    gsSP2Triangles( 1,  8,  3, 0x0,  8,  9,  3, 0x0),\n    gsSP2Triangles( 6,  8,  0, 0x0,  3,  9,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500D268 - 0x0500D320\nconst Gfx unagi_seg5_dl_0500D268[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(5, 80, 75, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_DECALRGB, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(unagi_seg5_dl_0500D1C0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500D320\nstatic const Vtx unagi_seg5_vertex_0500D320[] = {\n    {{{   -93,      0,      0}, 0, {  -224,    452}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,     99}, 0, {     0,    452}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    151,      0}, 0, {     0,     46}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   495,      0,     90}, 0, {   992,    452}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   495,    146,      0}, 0, {   992,     60}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   495,      0,    -79}, 0, {   992,    452}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,    -89}, 0, {     0,    452}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   575,      0,      0}, 0, {  1158,    452}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -173,      0}, 0, {     0,    920}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   495,   -159,      0}, 0, {   992,    882}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500D3C0 - 0x0500D468\nconst Gfx unagi_seg5_dl_0500D3C0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, unagi_seg5_texture_0500AF20),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(unagi_seg5_vertex_0500D320, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 5,  6,  2, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 2,  1,  3, 0x0,  2,  6,  0, 0x0),\n    gsSP2Triangles( 4,  3,  7, 0x0,  5,  4,  7, 0x0),\n    gsSP2Triangles( 8,  5,  9, 0x0,  8,  6,  5, 0x0),\n    gsSP2Triangles( 9,  5,  7, 0x0,  0,  8,  1, 0x0),\n    gsSP2Triangles( 1,  8,  3, 0x0,  8,  9,  3, 0x0),\n    gsSP2Triangles( 6,  8,  0, 0x0,  3,  9,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500D468 - 0x0500D520\nconst Gfx unagi_seg5_dl_0500D468[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(5, 80, 75, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_DECALRGB, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(unagi_seg5_dl_0500D3C0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500D520\nstatic const Vtx unagi_seg5_vertex_0500D520[] = {\n    {{{   -79,      0,      0}, 0, {  -202,    452}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,     90}, 0, {     0,    452}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    146,      0}, 0, {     0,     60}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   476,      0,     57}, 0, {   990,    452}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -159,      0}, 0, {     0,    882}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,    -79}, 0, {     0,    452}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   476,      0,    -56}, 0, {   990,    452}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   476,   -126,      0}, 0, {   990,    794}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   476,    132,      0}, 0, {   990,     98}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   528,      0,      0}, 0, {  1102,    452}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500D5C0 - 0x0500D668\nconst Gfx unagi_seg5_dl_0500D5C0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, unagi_seg5_texture_0500AF20),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(unagi_seg5_vertex_0500D520, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  0,  4,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  3, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  5,  4,  0, 0x0),\n    gsSP2Triangles( 3,  8,  2, 0x0,  3,  7,  9, 0x0),\n    gsSP2Triangles( 8,  3,  9, 0x0,  2,  8,  6, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0,  7,  6,  9, 0x0),\n    gsSP2Triangles( 6,  5,  2, 0x0,  2,  5,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500D668 - 0x0500D720\nconst Gfx unagi_seg5_dl_0500D668[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(5, 80, 75, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_DECALRGB, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(unagi_seg5_dl_0500D5C0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500D720\nstatic const Vtx unagi_seg5_vertex_0500D720[] = {\n    {{{   327,    -97,      0}, 0, {   676,    896}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   471,      0,      0}, 0, {   988,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,     57}, 0, {     0,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   328,    102,      0}, 0, {   678,     44}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    132,      0}, 0, {     0,    -82}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -56,      0,      0}, 0, {  -152,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -126,      0}, 0, {     0,   1018}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,    -56}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500D7A0 - 0x0500D828\nconst Gfx unagi_seg5_dl_0500D7A0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, unagi_seg5_texture_0500C3A0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(unagi_seg5_vertex_0500D720, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 6,  2,  5, 0x0,  2,  6,  0, 0x0),\n    gsSP2Triangles( 4,  7,  5, 0x0,  7,  4,  3, 0x0),\n    gsSP2Triangles( 7,  6,  5, 0x0,  7,  1,  0, 0x0),\n    gsSP2Triangles( 3,  1,  7, 0x0,  0,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500D828 - 0x0500D8E0\nconst Gfx unagi_seg5_dl_0500D828[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(5, 80, 75, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_DECALRGB, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(unagi_seg5_dl_0500D7A0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500D8E0\nstatic const Vtx unagi_seg5_vertex_0500D8E0[] = {\n    {{{   226,     66,   -164}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   221,    236,     61}, 0, {   138,    142}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   226,     66,    170}, 0, {   219,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   679,     53,    -95}, 0, {    21,      1}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   405,    108,   -150}, 0, {   -21,    135}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   679,     53,     96}, 0, {   167,      1}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   768,     55,      0}, 0, {    94,    -42}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   405,    108,    160}, 0, {   216,    135}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   226,     66,    170}, 0, {   224,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   221,    236,    -60}, 0, {    46,    142}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500D980\nstatic const Vtx unagi_seg5_vertex_0500D980[] = {\n    {{{   679,     53,     96}, 0, {    26,    592}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   405,    108,    160}, 0, {   414,    710}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   506,    -68,    121}, 0, {   272,    332}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   700,    -50,     39}, 0, {    -4,    370}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   224,   -180,     55}, 0, {   672,     92}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   470,   -137,      0}, 0, {   322,    186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   599,    -87,      0}, 0, {   140,    292}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   226,     66,    170}, 0, {   668,    620}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   506,    -68,   -116}, 0, {   272,    332}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   700,    -50,    -38}, 0, {    -4,    370}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   768,     55,      0}, 0, {   -98,    596}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   679,     53,    -95}, 0, {    26,    592}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   224,   -180,    -54}, 0, {   672,     92}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   226,     66,   -164}, 0, {   668,    620}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,   -112}, 0, {   990,    478}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500DA70\nstatic const Vtx unagi_seg5_vertex_0500DA70[] = {\n    {{{     3,    208,    -60}, 0, {   986,    922}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   221,    236,    -60}, 0, {   676,    980}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   226,     66,   -164}, 0, {   668,    620}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,   -112}, 0, {   990,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -112,      0,      0}, 0, {  1150,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   224,   -180,    -54}, 0, {   672,     92}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -68,   -121,      0}, 0, {  1088,    220}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     3,    208,     61}, 0, {   986,    922}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   506,    -68,   -116}, 0, {   272,    332}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   405,    108,   -150}, 0, {   414,    710}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   679,     53,    -95}, 0, {    26,    592}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,    118}, 0, {   990,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   226,     66,    170}, 0, {   668,    620}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   221,    236,     61}, 0, {   676,    980}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   224,   -180,     55}, 0, {   672,     92}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500DB60 - 0x0500DBC0\nconst Gfx unagi_seg5_dl_0500DB60[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, unagi_seg5_texture_0500C320),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 8 * 8 - 1, CALC_DXT(8, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(unagi_seg5_vertex_0500D8E0, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  5,  4,  7, 0x0),\n    gsSP2Triangles( 0,  7,  4, 0x0,  0,  8,  7, 0x0),\n    gsSP1Triangle( 0,  9,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500DBC0 - 0x0500DD08\nconst Gfx unagi_seg5_dl_0500DBC0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, unagi_seg5_texture_0500B920),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(unagi_seg5_vertex_0500D980, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  2,  6,  3, 0x0),\n    gsSP2Triangles( 5,  6,  2, 0x0,  7,  4,  2, 0x0),\n    gsSP2Triangles( 1,  7,  2, 0x0,  8,  6,  5, 0x0),\n    gsSP2Triangles( 9,  6,  8, 0x0,  6,  9,  3, 0x0),\n    gsSP2Triangles( 3,  9, 10, 0x0, 10,  0,  3, 0x0),\n    gsSP2Triangles( 9, 11, 10, 0x0,  8, 12, 13, 0x0),\n    gsSP2Triangles(14, 13, 12, 0x0,  5,  4, 12, 0x0),\n    gsSP2Triangles( 5, 12,  8, 0x0,  8, 11,  9, 0x0),\n    gsSPVertex(unagi_seg5_vertex_0500DA70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  6,  4,  3, 0x0),\n    gsSP2Triangles( 2,  3,  0, 0x0,  1,  0,  7, 0x0),\n    gsSP2Triangles( 0,  4,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 8,  2,  9, 0x0,  7,  4, 11, 0x0),\n    gsSP2Triangles(11,  4,  6, 0x0,  7, 11, 12, 0x0),\n    gsSP2Triangles( 7, 13,  1, 0x0, 12, 13,  7, 0x0),\n    gsSP2Triangles(14,  6,  5, 0x0, 14, 12, 11, 0x0),\n    gsSP1Triangle(11,  6, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500DD08 - 0x0500DDE0\nconst Gfx unagi_seg5_dl_0500DD08[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(5, 80, 75, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_DECALRGB, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 2, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 3, G_TX_NOLOD, G_TX_CLAMP, 3, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (8 - 1) << G_TEXTURE_IMAGE_FRAC, (8 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(unagi_seg5_dl_0500DB60),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(unagi_seg5_dl_0500DBC0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500DDE0\nstatic const Vtx unagi_seg5_vertex_0500DDE0[] = {\n    {{{   506,    -68,   -120}, 0, {  1519,    199}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   679,     53,    -99}, 0, {   224,    609}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   700,    -50,    -42}, 0, {   224,   -160}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   768,     55,     -3}, 0, {  -519,    232}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   768,     55,      4}, 0, {  -520,    232}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   679,     53,    100}, 0, {   223,    609}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   700,    -50,     43}, 0, {   224,   -160}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   679,     53,    100}, 0, {   224,    609}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   506,    -68,    125}, 0, {  1526,    211}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500DE70 - 0x0500DEB8\nconst Gfx unagi_seg5_dl_0500DE70[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, unagi_seg5_texture_0500B720),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 16 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(unagi_seg5_vertex_0500DDE0, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500DEB8 - 0x0500DF70\nconst Gfx unagi_seg5_dl_0500DEB8[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(5, 80, 75, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 4, G_TX_NOLOD, G_TX_CLAMP, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (16 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(unagi_seg5_dl_0500DE70),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500DF70\nstatic const Vtx unagi_seg5_vertex_0500DF70[] = {\n    {{{   673,    102,    -92}, 0, {  1493,    521}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   758,    123,      0}, 0, {   -43,    646}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   760,     50,      0}, 0, {   -43,    -51}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   671,     48,    -92}, 0, {  1520,     12}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   398,    103,    157}, 0, {  5385,    384}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   671,     48,     93}, 0, {    -7,    -64}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   673,    102,     93}, 0, {  -149,    567}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   398,    103,   -147}, 0, {  3179,    441}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   673,    102,    -93}, 0, {   -51,    545}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   671,     48,    -92}, 0, {   -31,    -64}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   673,    102,     93}, 0, {  1493,    521}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   671,     48,     93}, 0, {  1520,     12}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500E030 - 0x0500E088\nconst Gfx unagi_seg5_dl_0500E030[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, unagi_seg5_texture_0500C120),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 16 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(unagi_seg5_vertex_0500DF70, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11,  2, 0x0,  2,  1, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500E088 - 0x0500E140\nconst Gfx unagi_seg5_dl_0500E088[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(5, 80, 75, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 4, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (16 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(unagi_seg5_dl_0500E030),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500E140\nstatic const Vtx unagi_seg5_vertex_0500E140[] = {\n    {{{   164,     46,    153}, 0, { -4789,    510}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   424,    -17,     85}, 0, {   558,    496}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   426,     27,     84}, 0, {   558,     27}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   164,     46,   -143}, 0, { -4747,    504}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   426,     27,    -83}, 0, {   558,     27}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   424,    -17,    -84}, 0, {   558,    496}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   426,     27,     84}, 0, {  -931,    132}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   424,    -17,     85}, 0, {  -971,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   519,    -31,      0}, 0, {   491,    610}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   514,     43,      0}, 0, {   491,    -22}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   426,     27,    -83}, 0, {  -931,    132}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   424,    -17,    -84}, 0, {  -971,    479}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500E200 - 0x0500E258\nconst Gfx unagi_seg5_dl_0500E200[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, unagi_seg5_texture_0500C120),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 16 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(unagi_seg5_vertex_0500E140, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  9,  6, 0x0),\n    gsSP2Triangles(10,  9,  8, 0x0,  8, 11, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500E258 - 0x0500E310\nconst Gfx unagi_seg5_dl_0500E258[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(5, 80, 75, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 4, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (16 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(unagi_seg5_dl_0500E200),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/walk_smoke/geo.inc.c",
    "content": "// 0x17000038\nconst GeoLayout smoke_geo[] = {\n    GEO_SWITCH_CASE(7, geo_switch_anim_state),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, smoke_seg4_dl_04021718),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, smoke_seg4_dl_04021730),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, smoke_seg4_dl_04021748),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, smoke_seg4_dl_04021760),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, smoke_seg4_dl_04021778),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, smoke_seg4_dl_04021790),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, smoke_seg4_dl_040217A8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/walk_smoke/model.inc.c",
    "content": "// Walk Smoke\n\n// 0x0401DE60\nstatic const Vtx smoke_seg4_vertex_0401DE60[] = {\n    {{{   -32,      0,      0}, 0, {     0,    992}, {0xff, 0xff, 0xff, 0x64}}},\n    {{{    32,      0,      0}, 0, {   992,    992}, {0xff, 0xff, 0xff, 0x64}}},\n    {{{    32,     64,      0}, 0, {   992,      0}, {0xff, 0xff, 0xff, 0x64}}},\n    {{{   -32,     64,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0x64}}},\n};\n\n// 0x0401DEA0\nALIGNED8 static const Texture smoke_seg4_texture_0401DEA0[] = {\n#include \"actors/walk_smoke/walk_smoke_0.ia16.inc.c\"\n};\n\n// 0x0401E6A0\nALIGNED8 static const Texture smoke_seg4_texture_0401E6A0[] = {\n#include \"actors/walk_smoke/walk_smoke_1.ia16.inc.c\"\n};\n\n// 0x0401EEA0\nALIGNED8 static const Texture smoke_seg4_texture_0401EEA0[] = {\n#include \"actors/walk_smoke/walk_smoke_2.ia16.inc.c\"\n};\n\n// 0x0401F6A0\nALIGNED8 static const Texture smoke_seg4_texture_0401F6A0[] = {\n#include \"actors/walk_smoke/walk_smoke_3.ia16.inc.c\"\n};\n\n// 0x0401FEA0\nALIGNED8 static const Texture smoke_seg4_texture_0401FEA0[] = {\n#include \"actors/walk_smoke/walk_smoke_4.ia16.inc.c\"\n};\n\n// 0x040206A0\nALIGNED8 static const Texture smoke_seg4_texture_040206A0[] = {\n#include \"actors/walk_smoke/walk_smoke_5.ia16.inc.c\"\n};\n\n// 0x04020EA0\nALIGNED8 static const Texture smoke_seg4_texture_04020EA0[] = {\n#include \"actors/walk_smoke/walk_smoke_6.ia16.inc.c\"\n};\n\n// 0x040216A0 - 0x04021718\nconst Gfx smoke_seg4_dl_040216A0[] = {\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPVertex(smoke_seg4_vertex_0401DE60, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x04021718 - 0x04021730\nconst Gfx smoke_seg4_dl_04021718[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, smoke_seg4_texture_0401DEA0),\n    gsSPBranchList(smoke_seg4_dl_040216A0),\n};\n\n// 0x04021730 - 0x04021748\nconst Gfx smoke_seg4_dl_04021730[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, smoke_seg4_texture_0401E6A0),\n    gsSPBranchList(smoke_seg4_dl_040216A0),\n};\n\n// 0x04021748 - 0x04021760\nconst Gfx smoke_seg4_dl_04021748[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, smoke_seg4_texture_0401EEA0),\n    gsSPBranchList(smoke_seg4_dl_040216A0),\n};\n\n// 0x04021760 - 0x04021778\nconst Gfx smoke_seg4_dl_04021760[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, smoke_seg4_texture_0401F6A0),\n    gsSPBranchList(smoke_seg4_dl_040216A0),\n};\n\n// 0x04021778 - 0x04021790\nconst Gfx smoke_seg4_dl_04021778[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, smoke_seg4_texture_0401FEA0),\n    gsSPBranchList(smoke_seg4_dl_040216A0),\n};\n\n// 0x04021790 - 0x040217A8\nconst Gfx smoke_seg4_dl_04021790[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, smoke_seg4_texture_040206A0),\n    gsSPBranchList(smoke_seg4_dl_040216A0),\n};\n\n// 0x040217A8 - 0x040217C0\nconst Gfx smoke_seg4_dl_040217A8[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, smoke_seg4_texture_04020EA0),\n    gsSPBranchList(smoke_seg4_dl_040216A0),\n};\n"
  },
  {
    "path": "actors/warp_collision/collision.inc.c",
    "content": "// Warp Collision (seems strange to put these collision in another file. Only instance of this seperation thus far. Not sure what this is doing as a file.)\n\n// 0x0301CE78 - 0x0301CECC\nconst Collision door_seg3_collision_0301CE78[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-80, 240, 30),\n    COL_VERTEX(80, 240, 30),\n    COL_VERTEX(80, 0, 30),\n    COL_VERTEX(-80, 0, 30),\n    COL_VERTEX(-80, 240, -30),\n    COL_VERTEX(80, 0, -30),\n    COL_VERTEX(80, 240, -30),\n    COL_VERTEX(-80, 0, -30),\n\n    COL_TRI_INIT(SURFACE_DEFAULT, 4),\n    COL_TRI(2, 1, 0),\n    COL_TRI(3, 2, 0),\n    COL_TRI(6, 5, 4),\n    COL_TRI(5, 7, 4),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n\n// 0x0301CECC - 0x0301CEFC\nconst Collision lll_hexagonal_mesh_seg3_collision_0301CECC[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x4),\n    COL_VERTEX(-200, 0, -200),\n    COL_VERTEX(200, 0, -200),\n    COL_VERTEX(200, 0, 200),\n    COL_VERTEX(-200, 0, 200),\n\n    COL_TRI_INIT(SURFACE_DEFAULT, 2),\n    COL_TRI(2, 1, 0),\n    COL_TRI(3, 2, 0),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "actors/warp_pipe/collision.inc.c",
    "content": "// Warp Pipe\n\n// 0x03009AC8 - 0x03009CD8\nconst Collision warp_pipe_seg3_collision_03009AC8[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x24),\n    COL_VERTEX(-101, 0, 102),\n    COL_VERTEX(102, 0, -101),\n    COL_VERTEX(-101, 0, -101),\n    COL_VERTEX(102, 0, 102),\n    COL_VERTEX(0, 0, 154),\n    COL_VERTEX(-108, 205, 109),\n    COL_VERTEX(-108, 0, 109),\n    COL_VERTEX(0, 205, 154),\n    COL_VERTEX(-153, 205, 0),\n    COL_VERTEX(0, 205, 102),\n    COL_VERTEX(-71, 205, 72),\n    COL_VERTEX(0, 0, 102),\n    COL_VERTEX(72, 205, 72),\n    COL_VERTEX(-71, 0, 72),\n    COL_VERTEX(109, 205, 109),\n    COL_VERTEX(-101, 0, 0),\n    COL_VERTEX(-101, 205, 0),\n    COL_VERTEX(109, 0, 109),\n    COL_VERTEX(-153, 0, 0),\n    COL_VERTEX(-108, 205, -108),\n    COL_VERTEX(-71, 0, -71),\n    COL_VERTEX(-108, 0, -108),\n    COL_VERTEX(0, 205, -153),\n    COL_VERTEX(0, 0, -101),\n    COL_VERTEX(0, 0, -153),\n    COL_VERTEX(109, 205, -108),\n    COL_VERTEX(72, 0, -71),\n    COL_VERTEX(109, 0, -108),\n    COL_VERTEX(154, 205, 0),\n    COL_VERTEX(102, 0, 0),\n    COL_VERTEX(154, 0, 0),\n    COL_VERTEX(72, 0, 72),\n    COL_VERTEX(-71, 205, -71),\n    COL_VERTEX(0, 205, -101),\n    COL_VERTEX(72, 205, -71),\n    COL_VERTEX(102, 205, 0),\n\n    COL_TRI_INIT(SURFACE_WALL_MISC, 50),\n    COL_TRI(14, 12, 9),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI(4, 5, 6),\n    COL_TRI(4, 7, 5),\n    COL_TRI(6, 5, 8),\n    COL_TRI(5, 9, 10),\n    COL_TRI(5, 7, 9),\n    COL_TRI(8, 5, 10),\n    COL_TRI(11, 9, 12),\n    COL_TRI(13, 9, 11),\n    COL_TRI(13, 10, 9),\n    COL_TRI(14, 9, 7),\n    COL_TRI(19, 16, 32),\n    COL_TRI(15, 16, 10),\n    COL_TRI(8, 10, 16),\n    COL_TRI(15, 10, 13),\n    COL_TRI(17, 7, 4),\n    COL_TRI(17, 14, 7),\n    COL_TRI(6, 8, 18),\n    COL_TRI(18, 8, 19),\n    COL_TRI(19, 8, 16),\n    COL_TRI(20, 16, 15),\n    COL_TRI(20, 32, 16),\n    COL_TRI(28, 25, 34),\n    COL_TRI(21, 19, 22),\n    COL_TRI(18, 19, 21),\n    COL_TRI(22, 19, 32),\n    COL_TRI(23, 32, 20),\n    COL_TRI(23, 33, 32),\n    COL_TRI(22, 32, 33),\n    COL_TRI(24, 22, 25),\n    COL_TRI(21, 22, 24),\n    COL_TRI(25, 22, 33),\n    COL_TRI(26, 34, 33),\n    COL_TRI(26, 33, 23),\n    COL_TRI(25, 33, 34),\n    COL_TRI(24, 25, 27),\n    COL_TRI(27, 25, 28),\n    COL_TRI(30, 14, 17),\n    COL_TRI(29, 34, 26),\n    COL_TRI(29, 35, 34),\n    COL_TRI(28, 34, 35),\n    COL_TRI(30, 28, 14),\n    COL_TRI(27, 28, 30),\n    COL_TRI(28, 12, 14),\n    COL_TRI(28, 35, 12),\n    COL_TRI(31, 12, 35),\n    COL_TRI(31, 35, 29),\n    COL_TRI(11, 12, 31),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "actors/warp_pipe/geo.inc.c",
    "content": "// 0x16000388\nconst GeoLayout warp_pipe_geo[] = {\n    GEO_CULLING_RADIUS(350),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, warp_pipe_seg3_dl_03008F98),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, warp_pipe_seg3_dl_03009A50),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/warp_pipe/model.inc.c",
    "content": "// Warp Pipe\n\n// 0x030079E8\nstatic const Lights1 warp_pipe_seg3_lights_030079E8 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x03007A00\nstatic const Vtx warp_pipe_seg3_vertex_03007A00[] = {\n    {{{  -101,      0,      0}, 0, {   990,   2012}, {0x7d, 0x00, 0xef, 0xff}}},\n    {{{   -71,    205,     72}, 0, {     0,      0}, {0x65, 0x00, 0xb4, 0xff}}},\n    {{{   -71,      0,     72}, 0, {     0,   2012}, {0x4d, 0x00, 0x9c, 0xff}}},\n    {{{    72,      0,     72}, 0, {   990,   2012}, {0x9b, 0x00, 0xb4, 0xff}}},\n    {{{    72,    205,     72}, 0, {   990,      0}, {0xb4, 0x00, 0x9b, 0xff}}},\n    {{{   102,    205,      0}, 0, {     0,      0}, {0x83, 0x00, 0xef, 0xff}}},\n    {{{   102,      0,      0}, 0, {     0,   2012}, {0x83, 0x00, 0x11, 0xff}}},\n    {{{     0,      0,    102}, 0, {   990,   2012}, {0xef, 0x00, 0x83, 0xff}}},\n    {{{     0,    205,    102}, 0, {   990,      0}, {0x11, 0x00, 0x83, 0xff}}},\n    {{{    72,    205,     72}, 0, {     0,      0}, {0xb4, 0x00, 0x9b, 0xff}}},\n    {{{    72,      0,     72}, 0, {     0,   2012}, {0x9b, 0x00, 0xb4, 0xff}}},\n    {{{   -71,      0,     72}, 0, {   990,   2012}, {0x4d, 0x00, 0x9c, 0xff}}},\n    {{{   -71,    205,     72}, 0, {   990,      0}, {0x65, 0x00, 0xb4, 0xff}}},\n    {{{     0,    205,    102}, 0, {     0,      0}, {0x11, 0x00, 0x83, 0xff}}},\n    {{{     0,      0,    102}, 0, {     0,   2012}, {0xef, 0x00, 0x83, 0xff}}},\n};\n\n// 0x03007AF0\nstatic const Vtx warp_pipe_seg3_vertex_03007AF0[] = {\n    {{{    72,      0,    -71}, 0, {   990,   2012}, {0xb4, 0x00, 0x65, 0xff}}},\n    {{{     0,    205,   -101}, 0, {     0,      0}, {0xef, 0x00, 0x7d, 0xff}}},\n    {{{     0,      0,   -101}, 0, {     0,   2012}, {0x11, 0x00, 0x7d, 0xff}}},\n    {{{  -101,      0,      0}, 0, {   990,   2012}, {0x7d, 0x00, 0xef, 0xff}}},\n    {{{  -101,    205,      0}, 0, {   990,      0}, {0x7d, 0x00, 0x11, 0xff}}},\n    {{{   -71,    205,     72}, 0, {     0,      0}, {0x65, 0x00, 0xb4, 0xff}}},\n    {{{   -71,      0,    -71}, 0, {   990,   2012}, {0x65, 0x00, 0x4c, 0xff}}},\n    {{{  -101,    205,      0}, 0, {     0,      0}, {0x7d, 0x00, 0x11, 0xff}}},\n    {{{  -101,      0,      0}, 0, {     0,   2012}, {0x7d, 0x00, 0xef, 0xff}}},\n    {{{   -71,    205,    -71}, 0, {   990,      0}, {0x4c, 0x00, 0x65, 0xff}}},\n    {{{     0,      0,   -101}, 0, {   990,   2012}, {0x11, 0x00, 0x7d, 0xff}}},\n    {{{   -71,    205,    -71}, 0, {     0,      0}, {0x4c, 0x00, 0x65, 0xff}}},\n    {{{   -71,      0,    -71}, 0, {     0,   2012}, {0x65, 0x00, 0x4c, 0xff}}},\n    {{{     0,    205,   -101}, 0, {   990,      0}, {0xef, 0x00, 0x7d, 0xff}}},\n    {{{    72,    205,    -71}, 0, {   990,      0}, {0x9c, 0x00, 0x4d, 0xff}}},\n};\n\n// 0x03007BE0\nstatic const Vtx warp_pipe_seg3_vertex_03007BE0[] = {\n    {{{     0,      0,    154}, 0, {   990,   2012}, {0xef, 0x00, 0x7d, 0xff}}},\n    {{{     0,    205,    154}, 0, {   990,      0}, {0x11, 0x00, 0x7d, 0xff}}},\n    {{{  -108,    205,    109}, 0, {     0,      0}, {0xb4, 0x00, 0x65, 0xff}}},\n    {{{   102,      0,      0}, 0, {   990,   2012}, {0x83, 0x00, 0x11, 0xff}}},\n    {{{   102,    205,      0}, 0, {   990,      0}, {0x83, 0x00, 0xef, 0xff}}},\n    {{{    72,    205,    -71}, 0, {     0,      0}, {0x9c, 0x00, 0x4d, 0xff}}},\n    {{{    72,      0,    -71}, 0, {     0,   2012}, {0xb4, 0x00, 0x65, 0xff}}},\n    {{{   154,      0,      0}, 0, {   990,   2012}, {0x7d, 0x00, 0x11, 0xff}}},\n    {{{   154,    205,      0}, 0, {   990,      0}, {0x7d, 0x00, 0xef, 0xff}}},\n    {{{   109,    205,    109}, 0, {     0,      0}, {0x65, 0x00, 0x4c, 0xff}}},\n    {{{   109,      0,    109}, 0, {     0,   2012}, {0x4c, 0x00, 0x65, 0xff}}},\n    {{{   109,      0,    109}, 0, {   990,   2012}, {0x4c, 0x00, 0x65, 0xff}}},\n    {{{   109,    205,    109}, 0, {   990,      0}, {0x65, 0x00, 0x4c, 0xff}}},\n    {{{     0,    205,    154}, 0, {     0,      0}, {0x11, 0x00, 0x7d, 0xff}}},\n    {{{     0,      0,    154}, 0, {     0,   2012}, {0xef, 0x00, 0x7d, 0xff}}},\n};\n\n// 0x03007CD0\nstatic const Vtx warp_pipe_seg3_vertex_03007CD0[] = {\n    {{{  -108,      0,   -108}, 0, {   990,   2012}, {0xb4, 0x00, 0x9b, 0xff}}},\n    {{{     0,    205,   -153}, 0, {     0,      0}, {0xef, 0x00, 0x83, 0xff}}},\n    {{{     0,      0,   -153}, 0, {     0,   2012}, {0x11, 0x00, 0x83, 0xff}}},\n    {{{     0,      0,    154}, 0, {   990,   2012}, {0xef, 0x00, 0x7d, 0xff}}},\n    {{{  -108,    205,    109}, 0, {     0,      0}, {0xb4, 0x00, 0x65, 0xff}}},\n    {{{  -108,      0,    109}, 0, {     0,   2012}, {0x9b, 0x00, 0x4c, 0xff}}},\n    {{{  -108,      0,    109}, 0, {   990,   2012}, {0x9b, 0x00, 0x4c, 0xff}}},\n    {{{  -108,    205,    109}, 0, {   990,      0}, {0xb4, 0x00, 0x65, 0xff}}},\n    {{{  -153,    205,      0}, 0, {     0,      0}, {0x83, 0x00, 0x11, 0xff}}},\n    {{{  -153,      0,      0}, 0, {     0,   2012}, {0x83, 0x00, 0xef, 0xff}}},\n    {{{  -153,      0,      0}, 0, {   990,   2012}, {0x83, 0x00, 0xef, 0xff}}},\n    {{{  -108,    205,   -108}, 0, {     0,      0}, {0x9b, 0x00, 0xb4, 0xff}}},\n    {{{  -108,      0,   -108}, 0, {     0,   2012}, {0xb4, 0x00, 0x9b, 0xff}}},\n    {{{  -153,    205,      0}, 0, {   990,      0}, {0x83, 0x00, 0x11, 0xff}}},\n    {{{  -108,    205,   -108}, 0, {   990,      0}, {0x9b, 0x00, 0xb4, 0xff}}},\n};\n\n// 0x03007DC0\nstatic const Vtx warp_pipe_seg3_vertex_03007DC0[] = {\n    {{{     0,      0,   -153}, 0, {   990,   2012}, {0x11, 0x00, 0x83, 0xff}}},\n    {{{     0,    205,   -153}, 0, {   990,      0}, {0xef, 0x00, 0x83, 0xff}}},\n    {{{   109,    205,   -108}, 0, {     0,      0}, {0x4c, 0x00, 0x9b, 0xff}}},\n    {{{   109,      0,   -108}, 0, {     0,   2012}, {0x65, 0x00, 0xb4, 0xff}}},\n    {{{   109,      0,   -108}, 0, {   990,   2012}, {0x65, 0x00, 0xb4, 0xff}}},\n    {{{   109,    205,   -108}, 0, {   990,      0}, {0x4c, 0x00, 0x9b, 0xff}}},\n    {{{   154,    205,      0}, 0, {     0,      0}, {0x7d, 0x00, 0xef, 0xff}}},\n    {{{   154,      0,      0}, 0, {     0,   2012}, {0x7d, 0x00, 0x11, 0xff}}},\n};\n\n// 0x03007E40\nALIGNED8 static const Texture warp_pipe_seg3_texture_03007E40[] = {\n#include \"actors/warp_pipe/warp_pipe_side.rgba16.inc.c\"\n};\n\n// 0x03008E40 - 0x03008F98\nconst Gfx warp_pipe_seg3_dl_03008E40[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, warp_pipe_seg3_texture_03007E40),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&warp_pipe_seg3_lights_030079E8.l, 1),\n    gsSPLight(&warp_pipe_seg3_lights_030079E8.a, 2),\n    gsSPVertex(warp_pipe_seg3_vertex_03007A00, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(warp_pipe_seg3_vertex_03007AF0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(warp_pipe_seg3_vertex_03007BE0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(warp_pipe_seg3_vertex_03007CD0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(warp_pipe_seg3_vertex_03007DC0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x03008F98 - 0x03008FF8\nconst Gfx warp_pipe_seg3_dl_03008F98[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(warp_pipe_seg3_dl_03008E40),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x03008FF8\nstatic const Lights1 warp_pipe_seg3_lights_03008FF8 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x03009010\nstatic const Lights1 warp_pipe_seg3_lights_03009010 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x03009028\nstatic const Vtx warp_pipe_seg3_vertex_03009028[] = {\n    {{{   109,    205,   -108}, 0, {   400,   -174}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    205,   -153}, 0, {    14,     52}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    205,   -101}, 0, {   184,    186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -108,    205,    109}, 0, {   644,   1082}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    205,    102}, 0, {   862,    724}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -71,    205,     72}, 0, {   604,    876}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    205,    154}, 0, {  1032,    860}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -153,    205,      0}, 0, {   186,    942}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   109,    205,    109}, 0, {  1120,    398}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    72,    205,     72}, 0, {   920,    416}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -101,    205,      0}, 0, {   298,    780}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -108,    205,   -108}, 0, {   -72,    514}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -71,    205,    -71}, 0, {   124,    494}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   154,    205,      0}, 0, {   858,    -30}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,    205,      0}, 0, {   746,    132}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    72,    205,    -71}, 0, {   442,     36}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x03009128\nstatic const Vtx warp_pipe_seg3_vertex_03009128[] = {\n    {{{  -101,     10,    102}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,     10,   -101}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -101,     10,   -101}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,     10,    102}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x03009168\nALIGNED8 static const Texture warp_pipe_seg3_texture_03009168[] = {\n#include \"actors/warp_pipe/warp_pipe_top.rgba16.inc.c\"\n};\n\n// 0x03009968 - 0x03009A20\nconst Gfx warp_pipe_seg3_dl_03009968[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, warp_pipe_seg3_texture_03009168),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&warp_pipe_seg3_lights_03008FF8.l, 1),\n    gsSPLight(&warp_pipe_seg3_lights_03008FF8.a, 2),\n    gsSPVertex(warp_pipe_seg3_vertex_03009028, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  3,  5, 0x0),\n    gsSP2Triangles( 8,  4,  6, 0x0,  8,  9,  4, 0x0),\n    gsSP2Triangles( 7,  5, 10, 0x0, 11,  7, 10, 0x0),\n    gsSP2Triangles(11, 10, 12, 0x0,  1, 11, 12, 0x0),\n    gsSP2Triangles( 1, 12,  2, 0x0, 13, 14,  9, 0x0),\n    gsSP2Triangles( 0,  2, 15, 0x0, 13,  0, 15, 0x0),\n    gsSP2Triangles(13, 15, 14, 0x0, 13,  9,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x03009A20 - 0x03009A50\nconst Gfx warp_pipe_seg3_dl_03009A20[] = {\n    gsSPLight(&warp_pipe_seg3_lights_03009010.l, 1),\n    gsSPLight(&warp_pipe_seg3_lights_03009010.a, 2),\n    gsSPVertex(warp_pipe_seg3_vertex_03009128, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x03009A50 - 0x03009AC8\nconst Gfx warp_pipe_seg3_dl_03009A50[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(warp_pipe_seg3_dl_03009968),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(warp_pipe_seg3_dl_03009A20),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/water_bubble/geo.inc.c",
    "content": "// 0x0C000308\nconst GeoLayout water_bomb_geo[] = {\n    GEO_CULLING_RADIUS(150),\n    GEO_OPEN_NODE(),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_bubble_seg5_dl_05011000),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0C000328\nconst GeoLayout water_bomb_shadow_geo[] = {\n    GEO_CULLING_RADIUS(150),\n    GEO_OPEN_NODE(),\n        GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x64, 160),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/water_bubble/model.inc.c",
    "content": "// Water Bubble\n\n// 0x0500FE68\nstatic const Lights1 water_bubble_seg5_lights_0500FE68 = gdSPDefLights1(\n    0xbf, 0xbf, 0xbf,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0500FE80\nALIGNED8 static const Texture water_bubble_seg5_texture_0500FE80[] = {\n#include \"actors/water_bubble/water_bubble.rgba16.inc.c\"\n};\n\n// 0x05010680\nstatic const Vtx water_bubble_seg5_vertex_05010680[] = {\n    {{{   -20,    -64,    -33}, 0, {     0,      0}, {0xdd, 0x95, 0xc7, 0xff}}},\n    {{{     0,    -76,      0}, 0, {     0,      0}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{   -44,    -61,      0}, 0, {     0,      0}, {0xb6, 0x9a, 0x00, 0xff}}},\n    {{{   -20,    -64,     34}, 0, {     0,      0}, {0xdf, 0x98, 0x3f, 0xff}}},\n    {{{   -55,    -39,     34}, 0, {     0,      0}, {0xa5, 0xbd, 0x37, 0xff}}},\n    {{{    21,    -64,     34}, 0, {     0,      0}, {0x22, 0x94, 0x38, 0xff}}},\n    {{{   -11,    -37,    -64}, 0, {     0,      0}, {0xeb, 0xbe, 0x96, 0xff}}},\n    {{{   -55,    -39,    -33}, 0, {     0,      0}, {0xa8, 0xbf, 0xc0, 0xff}}},\n    {{{   -39,      0,    -64}, 0, {     0,      0}, {0xbc, 0x00, 0x96, 0xff}}},\n    {{{   -68,      0,    -33}, 0, {     0,      0}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{     0,      0,    -76}, 0, {     0,      0}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{    56,    -39,    -33}, 0, {     0,      0}, {0x5b, 0xbd, 0xc9, 0xff}}},\n    {{{    73,    -23,      0}, 0, {     0,      0}, {0x78, 0xd9, 0x00, 0xff}}},\n    {{{    45,    -61,      0}, 0, {     0,      0}, {0x4a, 0x9a, 0x00, 0xff}}},\n    {{{    56,    -39,     34}, 0, {     0,      0}, {0x58, 0xbf, 0x3f, 0xff}}},\n    {{{    69,      0,     34}, 0, {     0,      0}, {0x72, 0x00, 0x37, 0xff}}},\n};\n\n// 0x05010780\nstatic const Vtx water_bubble_seg5_vertex_05010780[] = {\n    {{{    33,    -23,    -64}, 0, {     0,      0}, {0x37, 0xd7, 0x96, 0xff}}},\n    {{{    56,    -39,    -33}, 0, {     0,      0}, {0x5b, 0xbd, 0xc9, 0xff}}},\n    {{{    21,    -64,    -33}, 0, {     0,      0}, {0x21, 0x98, 0xc0, 0xff}}},\n    {{{   -11,    -37,    -64}, 0, {     0,      0}, {0xeb, 0xbe, 0x96, 0xff}}},\n    {{{   -20,    -64,    -33}, 0, {     0,      0}, {0xdd, 0x95, 0xc7, 0xff}}},\n    {{{     0,      0,    -76}, 0, {     0,      0}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{    45,     62,      0}, 0, {     0,      0}, {0x4a, 0x66, 0x00, 0xff}}},\n    {{{    56,     40,     34}, 0, {     0,      0}, {0x58, 0x40, 0x40, 0xff}}},\n    {{{    73,     24,      0}, 0, {     0,      0}, {0x78, 0x27, 0x00, 0xff}}},\n    {{{    69,      0,     34}, 0, {     0,      0}, {0x72, 0x00, 0x37, 0xff}}},\n    {{{   -44,     62,      0}, 0, {     0,      0}, {0xb6, 0x66, 0x00, 0xff}}},\n    {{{   -20,     65,     34}, 0, {     0,      0}, {0xdf, 0x68, 0x3f, 0xff}}},\n    {{{     0,     77,      0}, 0, {     0,      0}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{    21,     65,     34}, 0, {     0,      0}, {0x22, 0x6c, 0x38, 0xff}}},\n    {{{    56,     40,    -33}, 0, {     0,      0}, {0x5b, 0x43, 0xc8, 0xff}}},\n};\n\n// 0x05010870\nstatic const Vtx water_bubble_seg5_vertex_05010870[] = {\n    {{{    33,     24,    -64}, 0, {     0,      0}, {0x37, 0x29, 0x96, 0xff}}},\n    {{{    56,     40,    -33}, 0, {     0,      0}, {0x5b, 0x43, 0xc8, 0xff}}},\n    {{{    69,      0,    -33}, 0, {     0,      0}, {0x6d, 0x00, 0xc1, 0xff}}},\n    {{{     0,      0,    -76}, 0, {     0,      0}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{    33,    -23,    -64}, 0, {     0,      0}, {0x37, 0xd7, 0x96, 0xff}}},\n    {{{    56,    -39,    -33}, 0, {     0,      0}, {0x5b, 0xbd, 0xc9, 0xff}}},\n    {{{     0,     77,      0}, 0, {     0,      0}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{   -20,     65,     34}, 0, {     0,      0}, {0xdf, 0x68, 0x3f, 0xff}}},\n    {{{    21,     65,     34}, 0, {     0,      0}, {0x22, 0x6c, 0x38, 0xff}}},\n    {{{   -20,     65,    -33}, 0, {     0,      0}, {0xdd, 0x6b, 0xc7, 0xff}}},\n    {{{   -44,     62,      0}, 0, {     0,      0}, {0xb6, 0x66, 0x00, 0xff}}},\n    {{{   -55,     40,     34}, 0, {     0,      0}, {0xa4, 0x43, 0x37, 0xff}}},\n    {{{   -11,     38,    -64}, 0, {     0,      0}, {0xeb, 0x41, 0x96, 0xff}}},\n    {{{    21,     65,    -33}, 0, {     0,      0}, {0x21, 0x68, 0xc0, 0xff}}},\n};\n\n// 0x05010950\nstatic const Vtx water_bubble_seg5_vertex_05010950[] = {\n    {{{   -72,    -23,      0}, 0, {     0,      0}, {0x88, 0xd9, 0x00, 0xff}}},\n    {{{   -68,      0,     34}, 0, {     0,      0}, {0x92, 0x00, 0x3f, 0xff}}},\n    {{{   -72,     24,      0}, 0, {     0,      0}, {0x88, 0x27, 0x00, 0xff}}},\n    {{{   -55,     40,     34}, 0, {     0,      0}, {0xa4, 0x43, 0x37, 0xff}}},\n    {{{   -68,      0,    -33}, 0, {     0,      0}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{   -55,    -39,     34}, 0, {     0,      0}, {0xa5, 0xbd, 0x37, 0xff}}},\n    {{{   -39,      0,    -64}, 0, {     0,      0}, {0xbc, 0x00, 0x96, 0xff}}},\n    {{{   -55,     40,    -33}, 0, {     0,      0}, {0xa8, 0x40, 0xc0, 0xff}}},\n    {{{     0,      0,    -76}, 0, {     0,      0}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{   -11,     38,    -64}, 0, {     0,      0}, {0xeb, 0x41, 0x96, 0xff}}},\n    {{{   -20,     65,    -33}, 0, {     0,      0}, {0xdd, 0x6b, 0xc7, 0xff}}},\n    {{{    21,    -64,     34}, 0, {     0,      0}, {0x22, 0x94, 0x38, 0xff}}},\n    {{{     0,    -76,      0}, 0, {     0,      0}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{    45,    -61,      0}, 0, {     0,      0}, {0x4a, 0x9a, 0x00, 0xff}}},\n    {{{    21,    -64,    -33}, 0, {     0,      0}, {0x21, 0x98, 0xc0, 0xff}}},\n    {{{    56,    -39,    -33}, 0, {     0,      0}, {0x5b, 0xbd, 0xc9, 0xff}}},\n};\n\n// 0x05010A50\nstatic const Vtx water_bubble_seg5_vertex_05010A50[] = {\n    {{{     0,    -76,      0}, 0, {     0,      0}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{   -20,    -64,    -33}, 0, {     0,      0}, {0xdd, 0x95, 0xc7, 0xff}}},\n    {{{    21,    -64,    -33}, 0, {     0,      0}, {0x21, 0x98, 0xc0, 0xff}}},\n    {{{    12,    -37,     65}, 0, {     0,      0}, {0x14, 0xbe, 0x6a, 0xff}}},\n    {{{    21,    -64,     34}, 0, {     0,      0}, {0x22, 0x94, 0x38, 0xff}}},\n    {{{    56,    -39,     34}, 0, {     0,      0}, {0x58, 0xbf, 0x3f, 0xff}}},\n    {{{    40,      0,     65}, 0, {     0,      0}, {0x44, 0x00, 0x6b, 0xff}}},\n    {{{    69,      0,     34}, 0, {     0,      0}, {0x72, 0x00, 0x37, 0xff}}},\n    {{{     0,      0,     77}, 0, {     0,      0}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{   -55,    -39,     34}, 0, {     0,      0}, {0xa5, 0xbd, 0x37, 0xff}}},\n    {{{   -72,    -23,      0}, 0, {     0,      0}, {0x88, 0xd9, 0x00, 0xff}}},\n    {{{   -44,    -61,      0}, 0, {     0,      0}, {0xb6, 0x9a, 0x00, 0xff}}},\n    {{{   -55,    -39,    -33}, 0, {     0,      0}, {0xa8, 0xbf, 0xc0, 0xff}}},\n    {{{   -68,      0,    -33}, 0, {     0,      0}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{   -32,    -23,     65}, 0, {     0,      0}, {0xc8, 0xd7, 0x6a, 0xff}}},\n    {{{   -20,    -64,     34}, 0, {     0,      0}, {0xdf, 0x98, 0x3f, 0xff}}},\n};\n\n// 0x05010B50\nstatic const Vtx water_bubble_seg5_vertex_05010B50[] = {\n    {{{   -55,     40,     34}, 0, {     0,      0}, {0xa4, 0x43, 0x37, 0xff}}},\n    {{{   -44,     62,      0}, 0, {     0,      0}, {0xb6, 0x66, 0x00, 0xff}}},\n    {{{   -72,     24,      0}, 0, {     0,      0}, {0x88, 0x27, 0x00, 0xff}}},\n    {{{   -55,     40,    -33}, 0, {     0,      0}, {0xa8, 0x40, 0xc0, 0xff}}},\n    {{{   -68,      0,    -33}, 0, {     0,      0}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{   -20,     65,    -33}, 0, {     0,      0}, {0xdd, 0x6b, 0xc7, 0xff}}},\n    {{{   -32,     24,     65}, 0, {     0,      0}, {0xc8, 0x29, 0x6a, 0xff}}},\n    {{{   -68,      0,     34}, 0, {     0,      0}, {0x92, 0x00, 0x3f, 0xff}}},\n    {{{   -32,    -23,     65}, 0, {     0,      0}, {0xc8, 0xd7, 0x6a, 0xff}}},\n    {{{   -55,    -39,     34}, 0, {     0,      0}, {0xa5, 0xbd, 0x37, 0xff}}},\n    {{{     0,      0,     77}, 0, {     0,      0}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{     0,     77,      0}, 0, {     0,      0}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{    21,     65,    -33}, 0, {     0,      0}, {0x21, 0x68, 0xc0, 0xff}}},\n    {{{    45,     62,      0}, 0, {     0,      0}, {0x4a, 0x66, 0x00, 0xff}}},\n    {{{    21,     65,     34}, 0, {     0,      0}, {0x22, 0x6c, 0x38, 0xff}}},\n    {{{    56,     40,    -33}, 0, {     0,      0}, {0x5b, 0x43, 0xc8, 0xff}}},\n};\n\n// 0x05010C50\nstatic const Vtx water_bubble_seg5_vertex_05010C50[] = {\n    {{{    12,     38,     65}, 0, {     0,      0}, {0x15, 0x41, 0x6a, 0xff}}},\n    {{{    21,     65,     34}, 0, {     0,      0}, {0x22, 0x6c, 0x38, 0xff}}},\n    {{{   -20,     65,     34}, 0, {     0,      0}, {0xdf, 0x68, 0x3f, 0xff}}},\n    {{{     0,      0,     77}, 0, {     0,      0}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{   -32,     24,     65}, 0, {     0,      0}, {0xc8, 0x29, 0x6a, 0xff}}},\n    {{{   -55,     40,     34}, 0, {     0,      0}, {0xa4, 0x43, 0x37, 0xff}}},\n    {{{    73,    -23,      0}, 0, {     0,      0}, {0x78, 0xd9, 0x00, 0xff}}},\n    {{{    69,      0,    -33}, 0, {     0,      0}, {0x6d, 0x00, 0xc1, 0xff}}},\n    {{{    73,     24,      0}, 0, {     0,      0}, {0x78, 0x27, 0x00, 0xff}}},\n    {{{    56,     40,    -33}, 0, {     0,      0}, {0x5b, 0x43, 0xc8, 0xff}}},\n    {{{    69,      0,     34}, 0, {     0,      0}, {0x72, 0x00, 0x37, 0xff}}},\n    {{{    56,     40,     34}, 0, {     0,      0}, {0x58, 0x40, 0x40, 0xff}}},\n    {{{    56,    -39,    -33}, 0, {     0,      0}, {0x5b, 0xbd, 0xc9, 0xff}}},\n    {{{    40,      0,     65}, 0, {     0,      0}, {0x44, 0x00, 0x6b, 0xff}}},\n};\n\n// 0x05010D30 - 0x05011000\nconst Gfx water_bubble_seg5_dl_05010D30[] = {\n    gsSPLight(&water_bubble_seg5_lights_0500FE68.l, 1),\n    gsSPLight(&water_bubble_seg5_lights_0500FE68.a, 2),\n    gsSPVertex(water_bubble_seg5_vertex_05010680, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  1,  5,  3, 0x0),\n    gsSP2Triangles( 6,  0,  7, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles(10,  6,  8, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 12, 14, 13, 0x0),\n    gsSP2Triangles(12, 15, 14, 0x0, 13, 14,  5, 0x0),\n    gsSPVertex(water_bubble_seg5_vertex_05010780, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  5,  0,  3, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  6, 13,  7, 0x0),\n    gsSP1Triangle(14,  6,  8, 0x0),\n    gsSPVertex(water_bubble_seg5_vertex_05010870, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  4,  2,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10,  6, 0x0),\n    gsSP2Triangles(10, 11,  7, 0x0, 12,  9, 13, 0x0),\n    gsSP2Triangles( 3, 12,  0, 0x0, 12, 13,  0, 0x0),\n    gsSP1Triangle( 0, 13,  1, 0x0),\n    gsSPVertex(water_bubble_seg5_vertex_05010950, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  0,  2, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 6,  4,  7, 0x0,  8,  6,  9, 0x0),\n    gsSP2Triangles( 6,  7,  9, 0x0,  9,  7, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 12, 14, 13, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(water_bubble_seg5_vertex_05010A50, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  5,  7, 0x0,  3,  5,  6, 0x0),\n    gsSP2Triangles( 8,  3,  6, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(10, 12, 11, 0x0, 11, 12,  1, 0x0),\n    gsSP2Triangles(10, 13, 12, 0x0, 14,  9, 15, 0x0),\n    gsSP2Triangles(14, 15,  3, 0x0,  3, 15,  4, 0x0),\n    gsSP1Triangle( 8, 14,  3, 0x0),\n    gsSPVertex(water_bubble_seg5_vertex_05010B50, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  1,  5,  3, 0x0),\n    gsSP2Triangles( 6,  0,  7, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles(10,  6,  8, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles(11, 12,  5, 0x0, 13, 12, 11, 0x0),\n    gsSP2Triangles(14, 13, 11, 0x0, 13, 15, 12, 0x0),\n    gsSPVertex(water_bubble_seg5_vertex_05010C50, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  4,  2,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles(10,  6,  8, 0x0,  0, 11,  1, 0x0),\n    gsSP2Triangles( 6, 12,  7, 0x0, 13, 10, 11, 0x0),\n    gsSP2Triangles( 3, 13,  0, 0x0, 13, 11,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05011000 - 0x05011098\nconst Gfx water_bubble_seg5_dl_05011000[] = {\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_TEXTURE_GEN),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsDPSetEnvColor(255, 255, 255, 205),\n    gsDPLoadTextureBlock(water_bubble_seg5_texture_0500FE80, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 5, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPTexture(0x07C0, 0x07C0, 0, G_TX_RENDERTILE, G_ON),\n    gsSPDisplayList(water_bubble_seg5_dl_05010D30),\n    gsSPTexture(0x07C0, 0x07C0, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_TEXTURE_GEN),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/water_mine/geo.inc.c",
    "content": "// 0x0D0002F4\nconst GeoLayout water_mine_geo[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, water_mine_seg6_dl_0600D3F8),\n        GEO_BILLBOARD(),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, water_mine_seg6_dl_0600D268),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/water_mine/model.inc.c",
    "content": "// Water Mine (unused)\n\n// 0x0600A4E0\nstatic const Lights1 water_mine_seg6_lights_0600A4E0 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0600A4F8\nALIGNED8 static const Texture water_mine_seg6_texture_0600A4F8[] = {\n#include \"actors/water_mine/water_mine_left_side_unused.rgba16.inc.c\"\n};\n\n// 0x0600B4F8\nALIGNED8 static const Texture water_mine_seg6_texture_0600B4F8[] = {\n#include \"actors/water_mine/water_mine_right_side_unused.rgba16.inc.c\"\n};\n\n// 0x0600C4F8\nALIGNED8 static const Texture water_mine_seg6_texture_0600C4F8[] = {\n#include \"actors/water_mine/water_mine_spike_unused.rgba16.inc.c\"\n};\n\n// 0x0600CCF8\nstatic const Vtx water_mine_seg6_vertex_0600CCF8[] = {\n    {{{     0,     40,      0}, 0, {   992,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -39,    -39,      0}, 0, {     0,   2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    -39,      0}, 0, {   992,   2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -39,     40,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0600CD38\nstatic const Vtx water_mine_seg6_vertex_0600CD38[] = {\n    {{{    40,     40,      0}, 0, {   992,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    -39,      0}, 0, {     0,   2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    40,    -39,      0}, 0, {   992,   2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,     40,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0600CD78\nstatic const Vtx water_mine_seg6_vertex_0600CD78[] = {\n    {{{     0,    -59,      0}, 0, {   502,    -18}, {0xf7, 0x82, 0xf7, 0xff}}},\n    {{{    -9,    -36,      0}, 0, {    14,    976}, {0x8a, 0xd2, 0xfd, 0xff}}},\n    {{{     0,    -36,     -8}, 0, {   938,    980}, {0xfd, 0xd7, 0x89, 0xff}}},\n    {{{     0,     37,     -8}, 0, {    -6,    974}, {0xfd, 0x29, 0x89, 0xff}}},\n    {{{    -9,     37,      0}, 0, {   972,    964}, {0x8a, 0x2e, 0xfd, 0xff}}},\n    {{{     0,     60,      0}, 0, {   434,    -20}, {0xf7, 0x7e, 0xf7, 0xff}}},\n    {{{    10,     37,      0}, 0, {   -14,    962}, {0x74, 0x32, 0xfd, 0xff}}},\n    {{{     0,     37,     -8}, 0, {   960,    962}, {0xfd, 0x29, 0x89, 0xff}}},\n    {{{     0,     60,      0}, 0, {   468,    -16}, {0xf7, 0x7e, 0xf7, 0xff}}},\n    {{{    -9,     37,      0}, 0, {    -8,    974}, {0x8a, 0x2e, 0xfd, 0xff}}},\n    {{{     0,     37,      9}, 0, {   974,    968}, {0xfd, 0x2e, 0x76, 0xff}}},\n    {{{     0,     60,      0}, 0, {   470,     -6}, {0xf7, 0x7e, 0xf7, 0xff}}},\n    {{{     0,     37,      9}, 0, {     4,    974}, {0xfd, 0x2e, 0x76, 0xff}}},\n    {{{    10,     37,      0}, 0, {   960,    986}, {0x74, 0x32, 0xfd, 0xff}}},\n    {{{     0,     60,      0}, 0, {   492,     34}, {0xf7, 0x7e, 0xf7, 0xff}}},\n};\n\n// 0x0600CE68\nstatic const Vtx water_mine_seg6_vertex_0600CE68[] = {\n    {{{     0,     10,     37}, 0, {   -20,    976}, {0xfd, 0x74, 0x32, 0xff}}},\n    {{{    -9,      0,     37}, 0, {   974,    974}, {0x8a, 0xf9, 0x2e, 0xff}}},\n    {{{     0,      0,     60}, 0, {   428,      4}, {0xf8, 0xee, 0x7d, 0xff}}},\n    {{{     0,    -59,      0}, 0, {   494,    -12}, {0xf7, 0x82, 0xf7, 0xff}}},\n    {{{     0,    -36,     -8}, 0, {    -2,    946}, {0xfd, 0xd7, 0x89, 0xff}}},\n    {{{    10,    -36,      0}, 0, {   964,    964}, {0x74, 0xce, 0xfd, 0xff}}},\n    {{{     0,    -59,      0}, 0, {   458,    -18}, {0xf7, 0x82, 0xf7, 0xff}}},\n    {{{     0,    -36,      9}, 0, {    10,    944}, {0xfd, 0xd2, 0x76, 0xff}}},\n    {{{    -9,    -36,      0}, 0, {   916,    956}, {0x8a, 0xd2, 0xfd, 0xff}}},\n    {{{     0,    -59,      0}, 0, {   486,     -6}, {0xf7, 0x82, 0xf7, 0xff}}},\n    {{{    10,    -36,      0}, 0, {    -4,    958}, {0x74, 0xce, 0xfd, 0xff}}},\n    {{{     0,    -36,      9}, 0, {   958,    952}, {0xfd, 0xd2, 0x76, 0xff}}},\n    {{{    10,      0,     37}, 0, {    -8,    978}, {0x74, 0xf9, 0x32, 0xff}}},\n    {{{     0,     10,     37}, 0, {   952,    976}, {0xfd, 0x74, 0x32, 0xff}}},\n    {{{     0,      0,     60}, 0, {   428,    -12}, {0xf8, 0xee, 0x7d, 0xff}}},\n};\n\n// 0x0600CF58\nstatic const Vtx water_mine_seg6_vertex_0600CF58[] = {\n    {{{    37,      0,     -9}, 0, {    10,    960}, {0x2e, 0xf9, 0x8a, 0xff}}},\n    {{{    37,     10,      0}, 0, {   928,    972}, {0x32, 0x74, 0xfd, 0xff}}},\n    {{{    60,      0,      0}, 0, {   494,     -4}, {0x7d, 0xee, 0xf8, 0xff}}},\n    {{{     0,     -8,     37}, 0, {   -10,    976}, {0xfd, 0x89, 0x29, 0xff}}},\n    {{{    10,      0,     37}, 0, {   956,    980}, {0x74, 0xf9, 0x32, 0xff}}},\n    {{{     0,      0,     60}, 0, {   428,    -12}, {0xf8, 0xee, 0x7d, 0xff}}},\n    {{{    -9,      0,     37}, 0, {   -24,    978}, {0x8a, 0xf9, 0x2e, 0xff}}},\n    {{{     0,     -8,     37}, 0, {   974,    976}, {0xfd, 0x89, 0x29, 0xff}}},\n    {{{     0,      0,     60}, 0, {   476,     -6}, {0xf8, 0xee, 0x7d, 0xff}}},\n    {{{    37,     -8,      0}, 0, {   -20,    968}, {0x29, 0x89, 0xfd, 0xff}}},\n    {{{    37,      0,     -9}, 0, {   954,    972}, {0x2e, 0xf9, 0x8a, 0xff}}},\n    {{{    60,      0,      0}, 0, {   402,    -10}, {0x7d, 0xee, 0xf8, 0xff}}},\n    {{{    37,     10,      0}, 0, {    -8,    964}, {0x32, 0x74, 0xfd, 0xff}}},\n    {{{    37,      0,     10}, 0, {   978,    962}, {0x32, 0xf9, 0x74, 0xff}}},\n    {{{    60,      0,      0}, 0, {   462,    -18}, {0x7d, 0xee, 0xf8, 0xff}}},\n};\n\n// 0x0600D048\nstatic const Vtx water_mine_seg6_vertex_0600D048[] = {\n    {{{   -59,      0,      0}, 0, {   452,     20}, {0x83, 0xee, 0xf8, 0xff}}},\n    {{{   -36,      0,     -9}, 0, {    -4,    974}, {0xd2, 0xf9, 0x8a, 0xff}}},\n    {{{   -36,     -8,      0}, 0, {   948,    980}, {0xd7, 0x89, 0xfd, 0xff}}},\n    {{{    37,      0,     10}, 0, {   -10,    970}, {0x32, 0xf9, 0x74, 0xff}}},\n    {{{    37,     -8,      0}, 0, {   960,    966}, {0x29, 0x89, 0xfd, 0xff}}},\n    {{{    60,      0,      0}, 0, {   488,     -8}, {0x7d, 0xee, 0xf8, 0xff}}},\n    {{{   -59,      0,      0}, 0, {   370,     10}, {0x83, 0xee, 0xf8, 0xff}}},\n    {{{   -36,      0,     10}, 0, {    -6,    964}, {0xce, 0xf9, 0x74, 0xff}}},\n    {{{   -36,     10,      0}, 0, {   950,    968}, {0xce, 0x74, 0xfd, 0xff}}},\n    {{{   -59,      0,      0}, 0, {   428,     12}, {0x83, 0xee, 0xf8, 0xff}}},\n    {{{   -36,     10,      0}, 0, {     8,    968}, {0xce, 0x74, 0xfd, 0xff}}},\n    {{{   -36,      0,     -9}, 0, {   938,    974}, {0xd2, 0xf9, 0x8a, 0xff}}},\n    {{{   -59,      0,      0}, 0, {   464,    -18}, {0x83, 0xee, 0xf8, 0xff}}},\n    {{{   -36,     -8,      0}, 0, {    -4,    966}, {0xd7, 0x89, 0xfd, 0xff}}},\n    {{{   -36,      0,     10}, 0, {   964,    974}, {0xce, 0xf9, 0x74, 0xff}}},\n};\n\n// 0x0600D138\nstatic const Vtx water_mine_seg6_vertex_0600D138[] = {\n    {{{     0,      0,    -59}, 0, {   464,      4}, {0xf8, 0xee, 0x83, 0xff}}},\n    {{{     0,     10,    -36}, 0, {   -14,    968}, {0xfd, 0x74, 0xce, 0xff}}},\n    {{{    10,      0,    -36}, 0, {   942,    976}, {0x74, 0xf9, 0xce, 0xff}}},\n    {{{     0,      0,    -59}, 0, {   480,    -20}, {0xf8, 0xee, 0x83, 0xff}}},\n    {{{    -9,      0,    -36}, 0, {    20,    962}, {0x8a, 0xf9, 0xd2, 0xff}}},\n    {{{     0,     10,    -36}, 0, {   946,    966}, {0xfd, 0x74, 0xce, 0xff}}},\n    {{{     0,      0,    -59}, 0, {   412,      6}, {0xf8, 0xee, 0x83, 0xff}}},\n    {{{    10,      0,    -36}, 0, {   -16,    970}, {0x74, 0xf9, 0xce, 0xff}}},\n    {{{     0,     -8,    -36}, 0, {   968,    968}, {0xfd, 0x89, 0xd7, 0xff}}},\n    {{{     0,      0,    -59}, 0, {   402,      8}, {0xf8, 0xee, 0x83, 0xff}}},\n    {{{     0,     -8,    -36}, 0, {     0,    970}, {0xfd, 0x89, 0xd7, 0xff}}},\n    {{{    -9,      0,    -36}, 0, {   952,    964}, {0x8a, 0xf9, 0xd2, 0xff}}},\n};\n\n// 0x0600D1F8 - 0x0600D230\nconst Gfx water_mine_seg6_dl_0600D1F8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_mine_seg6_texture_0600A4F8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(water_mine_seg6_vertex_0600CCF8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600D230 - 0x0600D268\nconst Gfx water_mine_seg6_dl_0600D230[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_mine_seg6_texture_0600B4F8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(water_mine_seg6_vertex_0600CD38, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600D268 - 0x0600D2E0\nconst Gfx water_mine_seg6_dl_0600D268[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(water_mine_seg6_dl_0600D1F8),\n    gsSPDisplayList(water_mine_seg6_dl_0600D230),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600D2E0 - 0x0600D3F8\nconst Gfx water_mine_seg6_dl_0600D2E0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_mine_seg6_texture_0600C4F8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&water_mine_seg6_lights_0600A4E0.l, 1),\n    gsSPLight(&water_mine_seg6_lights_0600A4E0.a, 2),\n    gsSPVertex(water_mine_seg6_vertex_0600CD78, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(water_mine_seg6_vertex_0600CE68, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(water_mine_seg6_vertex_0600CF58, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(water_mine_seg6_vertex_0600D048, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(water_mine_seg6_vertex_0600D138, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0600D3F8 - 0x0600D458\nconst Gfx water_mine_seg6_dl_0600D3F8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(water_mine_seg6_dl_0600D2E0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/water_ring/anims/anim_06013F64.inc.c",
    "content": "// 0x06013DD8\nstatic const s16 water_ring_seg6_animvalue_06013DD8[] = {\n    0x0000, 0xC001, 0x000B, 0xFFF5, 0xFFB5, 0xFF53, 0xFED6, 0xFE44,\n    0xFDA4, 0xFCFE, 0xFC57, 0xFBB7, 0xFB25, 0xFAA8, 0xFA46, 0xFA06,\n    0xF9EF, 0xF9FC, 0xFA22, 0xFA5D, 0xFAAC, 0xFB0B, 0xFB79, 0xFBF1,\n    0xFC72, 0xFCF9, 0xFD83, 0xFE0E, 0xFE97, 0xFF1B, 0xFF98, 0x000A,\n    0x0080, 0x0103, 0x0191, 0x0226, 0x02BE, 0x0355, 0x03E9, 0x0474,\n    0x04F4, 0x0565, 0x05C4, 0x060B, 0x0639, 0x0649, 0x063D, 0x061B,\n    0x05E4, 0x059C, 0x0544, 0x04DF, 0x046F, 0x03F6, 0x0377, 0x02F4,\n    0x026F, 0x01EA, 0x0168, 0x00EC, 0x0077, 0xF9E4, 0xF9F2, 0xFA1C,\n    0xFA5D, 0xFAB2, 0xFB19, 0xFB8D, 0xFC0D, 0xFC94, 0xFD20, 0xFDAD,\n    0xFE39, 0xFEBF, 0xFF3D, 0xFFB0, 0x0021, 0x00A0, 0x0127, 0x01B4,\n    0x0245, 0x02D6, 0x0364, 0x03EC, 0x046C, 0x04E1, 0x0548, 0x059E,\n    0x05E0, 0x060B, 0x061C, 0x0610, 0x05E6, 0x05A2, 0x0547, 0x04DA,\n    0x045E, 0x03D7, 0x0348, 0x02B5, 0x0221, 0x0191, 0x0108, 0x0089,\n    0x0018, 0xFFAC, 0xFF36, 0xFEBA, 0xFE39, 0xFDB6, 0xFD33, 0xFCB2,\n    0xFC35, 0xFBBE, 0xFB50, 0xFAED, 0xFA96, 0xFA4E, 0xFA17, 0xF9F3,\n    0xC000, 0xC000, 0xC000, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001,\n    0xC001, 0xC001, 0xC002, 0xC002, 0xC002, 0xC002, 0xC002, 0xC002,\n    0xC002, 0xC002, 0xC002, 0xC002, 0xC002, 0xC002, 0xC002, 0xC002,\n    0xC002, 0xC002, 0xC002, 0xC002, 0xC002, 0xC002, 0xC002, 0xC002,\n    0xC002, 0xC002, 0xC002, 0xC002, 0xC002, 0xC002, 0xC002, 0xC002,\n    0xC002, 0xC002, 0xC002, 0xC002, 0xC002, 0xC002, 0xC002, 0xC002,\n    0xC002, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001, 0xC001,\n    0xC000, 0xC000, 0xC000, 0x0000,\n};\n\n// 0x06013F40\nstatic const u16 water_ring_seg6_animindex_06013F40[] = {\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x003B, 0x0002, 0x003B, 0x003D, 0x003B, 0x0078,\n};\n\n// 0x06013F64\nstatic const struct Animation water_ring_seg6_anim_06013F64 = {\n    0,\n    0,\n    0,\n    0,\n    0x3B,\n    ANIMINDEX_NUMPARTS(water_ring_seg6_animindex_06013F40),\n    water_ring_seg6_animvalue_06013DD8,\n    water_ring_seg6_animindex_06013F40,\n    0,\n};\n"
  },
  {
    "path": "actors/water_ring/anims/data.inc.c",
    "content": "#include \"anim_06013F64.inc.c\"\n"
  },
  {
    "path": "actors/water_ring/anims/table.inc.c",
    "content": "// 0x06013F7C\nconst struct Animation *const water_ring_seg6_anims_06013F7C[] = {\n    &water_ring_seg6_anim_06013F64,\n    NULL,\n    NULL,\n};\n"
  },
  {
    "path": "actors/water_ring/geo.inc.c",
    "content": "// 0x0D000414\nconst GeoLayout water_ring_geo[] = {\n    GEO_SCALE(0x00, 32768),\n    GEO_OPEN_NODE(),\n        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_update_layer_transparency),\n            GEO_ANIMATED_PART(LAYER_TRANSPARENT, 0, 0, 0, water_ring_seg6_dl_06013AC0),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/water_ring/model.inc.c",
    "content": "// Water Ring\n\n// 0x06012368\nstatic const Lights1 water_ring_seg6_lights_06012368 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x06012380\nALIGNED8 static const Texture water_ring_seg6_texture_06012380[] = {\n#include \"actors/water_ring/water_ring.rgba16.inc.c\"\n};\n\n// 0x06013380\nstatic const Vtx water_ring_seg6_vertex_06013380[] = {\n    {{{     0,    264,      0}, 0, {     0,      0}, {0x00, 0x2a, 0x77, 0x00}}},\n    {{{  -131,    228,      0}, 0, {     0,      0}, {0xeb, 0x25, 0x77, 0x00}}},\n    {{{   -98,    171,     23}, 0, {     0,      0}, {0xeb, 0x25, 0x77, 0x00}}},\n    {{{     0,    198,     23}, 0, {     0,      0}, {0x00, 0x2a, 0x77, 0x00}}},\n    {{{     0,    198,     23}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{   -98,    171,     23}, 0, {     0,      0}, {0x3f, 0x93, 0x00, 0x00}}},\n    {{{   -98,    171,    -23}, 0, {     0,      0}, {0x3f, 0x93, 0x00, 0x00}}},\n    {{{     0,    198,    -23}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{     0,    198,    -23}, 0, {     0,      0}, {0x00, 0x2a, 0x89, 0x00}}},\n    {{{   -98,    171,    -23}, 0, {     0,      0}, {0xeb, 0x25, 0x89, 0x00}}},\n    {{{  -131,    228,      0}, 0, {     0,      0}, {0xeb, 0x25, 0x89, 0x00}}},\n    {{{     0,    264,      0}, 0, {     0,      0}, {0x00, 0x2a, 0x89, 0x00}}},\n    {{{  -227,    132,      0}, 0, {     0,      0}, {0xdb, 0x15, 0x77, 0x00}}},\n    {{{  -170,     99,     23}, 0, {     0,      0}, {0xdb, 0x15, 0x77, 0x00}}},\n    {{{  -170,     99,     23}, 0, {     0,      0}, {0x6d, 0xc1, 0x00, 0x00}}},\n    {{{  -170,     99,    -23}, 0, {     0,      0}, {0x6d, 0xc1, 0x00, 0x00}}},\n};\n\n// 0x06013480\nstatic const Vtx water_ring_seg6_vertex_06013480[] = {\n    {{{   -98,    171,    -23}, 0, {     0,      0}, {0xeb, 0x25, 0x89, 0x00}}},\n    {{{  -170,     99,    -23}, 0, {     0,      0}, {0xdb, 0x15, 0x89, 0x00}}},\n    {{{  -227,    132,      0}, 0, {     0,      0}, {0xdb, 0x15, 0x89, 0x00}}},\n    {{{  -131,    228,      0}, 0, {     0,      0}, {0xeb, 0x25, 0x89, 0x00}}},\n    {{{  -227,    132,      0}, 0, {     0,      0}, {0xdb, 0x15, 0x77, 0x00}}},\n    {{{  -263,      0,      0}, 0, {     0,      0}, {0xd6, 0x00, 0x77, 0x00}}},\n    {{{  -197,      0,     23}, 0, {     0,      0}, {0xd6, 0x00, 0x77, 0x00}}},\n    {{{  -170,     99,     23}, 0, {     0,      0}, {0xdb, 0x15, 0x77, 0x00}}},\n    {{{  -170,     99,     23}, 0, {     0,      0}, {0x6d, 0xc1, 0x00, 0x00}}},\n    {{{  -197,      0,     23}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{  -197,      0,    -23}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{  -170,     99,    -23}, 0, {     0,      0}, {0x6d, 0xc1, 0x00, 0x00}}},\n    {{{  -197,      0,    -23}, 0, {     0,      0}, {0xd6, 0x00, 0x89, 0x00}}},\n    {{{  -263,      0,      0}, 0, {     0,      0}, {0xd6, 0x00, 0x89, 0x00}}},\n    {{{  -227,   -132,      0}, 0, {     0,      0}, {0xdb, 0xeb, 0x77, 0x00}}},\n    {{{  -170,    -99,     23}, 0, {     0,      0}, {0xdb, 0xeb, 0x77, 0x00}}},\n};\n\n// 0x06013580\nstatic const Vtx water_ring_seg6_vertex_06013580[] = {\n    {{{  -197,      0,     23}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{  -170,    -99,     23}, 0, {     0,      0}, {0x6d, 0x3f, 0x00, 0x00}}},\n    {{{  -170,    -99,    -23}, 0, {     0,      0}, {0x6d, 0x3f, 0x00, 0x00}}},\n    {{{  -197,      0,    -23}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{  -197,      0,    -23}, 0, {     0,      0}, {0xd6, 0x00, 0x89, 0x00}}},\n    {{{  -170,    -99,    -23}, 0, {     0,      0}, {0xdb, 0xeb, 0x89, 0x00}}},\n    {{{  -227,   -132,      0}, 0, {     0,      0}, {0xdb, 0xeb, 0x89, 0x00}}},\n    {{{  -263,      0,      0}, 0, {     0,      0}, {0xd6, 0x00, 0x89, 0x00}}},\n    {{{  -227,   -132,      0}, 0, {     0,      0}, {0xdb, 0xeb, 0x77, 0x00}}},\n    {{{  -131,   -228,      0}, 0, {     0,      0}, {0xeb, 0xdb, 0x77, 0x00}}},\n    {{{   -98,   -171,     23}, 0, {     0,      0}, {0xeb, 0xdb, 0x77, 0x00}}},\n    {{{  -170,    -99,     23}, 0, {     0,      0}, {0xdb, 0xeb, 0x77, 0x00}}},\n    {{{   -98,   -171,     23}, 0, {     0,      0}, {0x3f, 0x6d, 0x00, 0x00}}},\n    {{{   -98,   -171,    -23}, 0, {     0,      0}, {0x3f, 0x6d, 0x00, 0x00}}},\n    {{{   -98,   -171,    -23}, 0, {     0,      0}, {0xeb, 0xdb, 0x89, 0x00}}},\n    {{{  -131,   -228,      0}, 0, {     0,      0}, {0xeb, 0xdb, 0x89, 0x00}}},\n};\n\n// 0x06013680\nstatic const Vtx water_ring_seg6_vertex_06013680[] = {\n    {{{  -131,   -228,      0}, 0, {     0,      0}, {0xeb, 0xdb, 0x77, 0x00}}},\n    {{{     0,   -264,      0}, 0, {     0,      0}, {0x00, 0xd6, 0x77, 0x00}}},\n    {{{     0,   -198,     23}, 0, {     0,      0}, {0x00, 0xd6, 0x77, 0x00}}},\n    {{{   -98,   -171,     23}, 0, {     0,      0}, {0xeb, 0xdb, 0x77, 0x00}}},\n    {{{   -98,   -171,     23}, 0, {     0,      0}, {0x3f, 0x6d, 0x00, 0x00}}},\n    {{{     0,   -198,     23}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{     0,   -198,    -23}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   -98,   -171,    -23}, 0, {     0,      0}, {0x3f, 0x6d, 0x00, 0x00}}},\n    {{{   -98,   -171,    -23}, 0, {     0,      0}, {0xeb, 0xdb, 0x89, 0x00}}},\n    {{{     0,   -198,    -23}, 0, {     0,      0}, {0x00, 0xd6, 0x89, 0x00}}},\n    {{{     0,   -264,      0}, 0, {     0,      0}, {0x00, 0xd6, 0x89, 0x00}}},\n    {{{  -131,   -228,      0}, 0, {     0,      0}, {0xeb, 0xdb, 0x89, 0x00}}},\n    {{{   132,   -228,      0}, 0, {     0,      0}, {0x15, 0xdb, 0x77, 0x00}}},\n    {{{    99,   -171,     23}, 0, {     0,      0}, {0x15, 0xdb, 0x77, 0x00}}},\n    {{{    99,   -171,     23}, 0, {     0,      0}, {0xc1, 0x6d, 0x00, 0x00}}},\n    {{{    99,   -171,    -23}, 0, {     0,      0}, {0xc1, 0x6d, 0x00, 0x00}}},\n};\n\n// 0x06013780\nstatic const Vtx water_ring_seg6_vertex_06013780[] = {\n    {{{     0,   -198,    -23}, 0, {     0,      0}, {0x00, 0xd6, 0x89, 0x00}}},\n    {{{    99,   -171,    -23}, 0, {     0,      0}, {0x15, 0xdb, 0x89, 0x00}}},\n    {{{   132,   -228,      0}, 0, {     0,      0}, {0x15, 0xdb, 0x89, 0x00}}},\n    {{{     0,   -264,      0}, 0, {     0,      0}, {0x00, 0xd6, 0x89, 0x00}}},\n    {{{   132,   -228,      0}, 0, {     0,      0}, {0x15, 0xdb, 0x77, 0x00}}},\n    {{{   229,   -132,      0}, 0, {     0,      0}, {0x25, 0xeb, 0x77, 0x00}}},\n    {{{   172,    -99,     23}, 0, {     0,      0}, {0x25, 0xeb, 0x77, 0x00}}},\n    {{{    99,   -171,     23}, 0, {     0,      0}, {0x15, 0xdb, 0x77, 0x00}}},\n    {{{    99,   -171,     23}, 0, {     0,      0}, {0xc1, 0x6d, 0x00, 0x00}}},\n    {{{   172,    -99,     23}, 0, {     0,      0}, {0x93, 0x3f, 0x00, 0x00}}},\n    {{{   172,    -99,    -23}, 0, {     0,      0}, {0x93, 0x3f, 0x00, 0x00}}},\n    {{{    99,   -171,    -23}, 0, {     0,      0}, {0xc1, 0x6d, 0x00, 0x00}}},\n    {{{   172,    -99,    -23}, 0, {     0,      0}, {0x25, 0xeb, 0x89, 0x00}}},\n    {{{   229,   -132,      0}, 0, {     0,      0}, {0x25, 0xeb, 0x89, 0x00}}},\n    {{{   264,      0,      0}, 0, {     0,      0}, {0x2a, 0x00, 0x77, 0x00}}},\n    {{{   198,      0,     23}, 0, {     0,      0}, {0x2a, 0x00, 0x77, 0x00}}},\n};\n\n// 0x06013880\nstatic const Vtx water_ring_seg6_vertex_06013880[] = {\n    {{{   172,    -99,     23}, 0, {     0,      0}, {0x93, 0x3f, 0x00, 0x00}}},\n    {{{   198,      0,     23}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{   198,      0,    -23}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0x00}}},\n    {{{   172,    -99,    -23}, 0, {     0,      0}, {0x93, 0x3f, 0x00, 0x00}}},\n    {{{   172,    -99,    -23}, 0, {     0,      0}, {0x25, 0xeb, 0x89, 0x00}}},\n    {{{   198,      0,    -23}, 0, {     0,      0}, {0x2a, 0x00, 0x89, 0x00}}},\n    {{{   264,      0,      0}, 0, {     0,      0}, {0x2a, 0x00, 0x89, 0x00}}},\n    {{{   229,   -132,      0}, 0, {     0,      0}, {0x25, 0xeb, 0x89, 0x00}}},\n    {{{   264,      0,      0}, 0, {     0,      0}, {0x2a, 0x00, 0x77, 0x00}}},\n    {{{   229,    132,      0}, 0, {     0,      0}, {0x25, 0x15, 0x77, 0x00}}},\n    {{{   172,     99,     23}, 0, {     0,      0}, {0x25, 0x15, 0x77, 0x00}}},\n    {{{   198,      0,     23}, 0, {     0,      0}, {0x2a, 0x00, 0x77, 0x00}}},\n    {{{   172,     99,     23}, 0, {     0,      0}, {0x93, 0xc1, 0x00, 0x00}}},\n    {{{   172,     99,    -23}, 0, {     0,      0}, {0x93, 0xc1, 0x00, 0x00}}},\n    {{{   172,     99,    -23}, 0, {     0,      0}, {0x25, 0x15, 0x89, 0x00}}},\n    {{{   229,    132,      0}, 0, {     0,      0}, {0x25, 0x15, 0x89, 0x00}}},\n};\n\n// 0x06013980\nstatic const Vtx water_ring_seg6_vertex_06013980[] = {\n    {{{   229,    132,      0}, 0, {     0,      0}, {0x25, 0x15, 0x77, 0x00}}},\n    {{{   132,    228,      0}, 0, {     0,      0}, {0x15, 0x25, 0x77, 0x00}}},\n    {{{    99,    171,     23}, 0, {     0,      0}, {0x15, 0x25, 0x77, 0x00}}},\n    {{{   172,     99,     23}, 0, {     0,      0}, {0x25, 0x15, 0x77, 0x00}}},\n    {{{   172,     99,     23}, 0, {     0,      0}, {0x93, 0xc1, 0x00, 0x00}}},\n    {{{    99,    171,     23}, 0, {     0,      0}, {0xc1, 0x93, 0x00, 0x00}}},\n    {{{    99,    171,    -23}, 0, {     0,      0}, {0xc1, 0x93, 0x00, 0x00}}},\n    {{{   172,     99,    -23}, 0, {     0,      0}, {0x93, 0xc1, 0x00, 0x00}}},\n    {{{   172,     99,    -23}, 0, {     0,      0}, {0x25, 0x15, 0x89, 0x00}}},\n    {{{    99,    171,    -23}, 0, {     0,      0}, {0x15, 0x25, 0x89, 0x00}}},\n    {{{   132,    228,      0}, 0, {     0,      0}, {0x15, 0x25, 0x89, 0x00}}},\n    {{{   229,    132,      0}, 0, {     0,      0}, {0x25, 0x15, 0x89, 0x00}}},\n    {{{     0,    264,      0}, 0, {     0,      0}, {0x00, 0x2a, 0x77, 0x00}}},\n    {{{     0,    198,     23}, 0, {     0,      0}, {0x00, 0x2a, 0x77, 0x00}}},\n    {{{     0,    198,     23}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n    {{{     0,    198,    -23}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0x00}}},\n};\n\n// 0x06013A80\nstatic const Vtx water_ring_seg6_vertex_06013A80[] = {\n    {{{    99,    171,    -23}, 0, {     0,      0}, {0x15, 0x25, 0x89, 0x00}}},\n    {{{     0,    198,    -23}, 0, {     0,      0}, {0x00, 0x2a, 0x89, 0x00}}},\n    {{{     0,    264,      0}, 0, {     0,      0}, {0x00, 0x2a, 0x89, 0x00}}},\n    {{{   132,    228,      0}, 0, {     0,      0}, {0x15, 0x25, 0x89, 0x00}}},\n};\n\n// 0x06013AC0 - 0x06013DD8\nconst Gfx water_ring_seg6_dl_06013AC0[] = {\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_TEXTURE_GEN),\n    gsDPSetCombineMode(G_CC_DECALFADE, G_CC_DECALFADE),\n    gsDPLoadTextureBlock(water_ring_seg6_texture_06012380, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 6, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPTexture(0x1800, 0x07C0, 0, G_TX_RENDERTILE, G_ON),\n    gsSPLight(&water_ring_seg6_lights_06012368.l, 1),\n    gsSPLight(&water_ring_seg6_lights_06012368.a, 2),\n    gsSPVertex(water_ring_seg6_vertex_06013380, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 1, 12, 13, 0x0,  1, 13,  2, 0x0),\n    gsSP2Triangles( 5, 14, 15, 0x0,  5, 15,  6, 0x0),\n    gsSPVertex(water_ring_seg6_vertex_06013480, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 1, 12, 13, 0x0,  1, 13,  2, 0x0),\n    gsSP2Triangles( 5, 14, 15, 0x0,  5, 15,  6, 0x0),\n    gsSPVertex(water_ring_seg6_vertex_06013580, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 1, 12, 13, 0x0,  1, 13,  2, 0x0),\n    gsSP2Triangles( 5, 14, 15, 0x0,  5, 15,  6, 0x0),\n    gsSPVertex(water_ring_seg6_vertex_06013680, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 1, 12, 13, 0x0,  1, 13,  2, 0x0),\n    gsSP2Triangles( 5, 14, 15, 0x0,  5, 15,  6, 0x0),\n    gsSPVertex(water_ring_seg6_vertex_06013780, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 1, 12, 13, 0x0,  1, 13,  2, 0x0),\n    gsSP2Triangles( 5, 14, 15, 0x0,  5, 15,  6, 0x0),\n    gsSPVertex(water_ring_seg6_vertex_06013880, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 1, 12, 13, 0x0,  1, 13,  2, 0x0),\n    gsSP2Triangles( 5, 14, 15, 0x0,  5, 15,  6, 0x0),\n    gsSPVertex(water_ring_seg6_vertex_06013980, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 1, 12, 13, 0x0,  1, 13,  2, 0x0),\n    gsSP2Triangles( 5, 14, 15, 0x0,  5, 15,  6, 0x0),\n    gsSPVertex(water_ring_seg6_vertex_06013A80, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_TEXTURE_GEN),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_OFF),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/water_splash/geo.inc.c",
    "content": "// 0x17000230\nconst GeoLayout water_splash_geo[] = {\n    GEO_SWITCH_CASE(8, geo_switch_anim_state),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, water_splash_seg4_dl_04032640),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, water_splash_seg4_dl_04032658),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, water_splash_seg4_dl_04032670),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, water_splash_seg4_dl_04032688),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, water_splash_seg4_dl_040326A0),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, water_splash_seg4_dl_040326B8),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, water_splash_seg4_dl_040326D0),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, water_splash_seg4_dl_040326E8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/water_splash/model.inc.c",
    "content": "// Water Splash\n\n// 0x0402A588\nstatic const Vtx water_splash_seg4_vertex_0402A588[] = {\n    {{{   -64,      0,      0}, 0, {     0,   2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    64,      0,      0}, 0, {   992,   2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    64,    256,      0}, 0, {   992,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -64,    256,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0402A5C8\nALIGNED8 static const Texture water_splash_seg4_texture_0402A5C8[] = {\n#include \"actors/water_splash/water_splash_0.rgba16.inc.c\"\n};\n\n// 0x0402B5C8\nALIGNED8 static const Texture water_splash_seg4_texture_0402B5C8[] = {\n#include \"actors/water_splash/water_splash_1.rgba16.inc.c\"\n};\n\n// 0x0402C5C8\nALIGNED8 static const Texture water_splash_seg4_texture_0402C5C8[] = {\n#include \"actors/water_splash/water_splash_2.rgba16.inc.c\"\n};\n\n// 0x0402D5C8\nALIGNED8 static const Texture water_splash_seg4_texture_0402D5C8[] = {\n#include \"actors/water_splash/water_splash_3.rgba16.inc.c\"\n};\n\n// 0x0402E5C8\nALIGNED8 static const Texture water_splash_seg4_texture_0402E5C8[] = {\n#include \"actors/water_splash/water_splash_4.rgba16.inc.c\"\n};\n\n// 0x0402F5C8\nALIGNED8 static const Texture water_splash_seg4_texture_0402F5C8[] = {\n#include \"actors/water_splash/water_splash_5.rgba16.inc.c\"\n};\n\n// 0x040305C8\nALIGNED8 static const Texture water_splash_seg4_texture_040305C8[] = {\n#include \"actors/water_splash/water_splash_6.rgba16.inc.c\"\n};\n\n// 0x040315C8\nALIGNED8 static const Texture water_splash_seg4_texture_040315C8[] = {\n#include \"actors/water_splash/water_splash_7.rgba16.inc.c\"\n};\n\n// 0x040325C8 - 0x04032640\nconst Gfx water_splash_seg4_dl_040325C8[] = {\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPVertex(water_splash_seg4_vertex_0402A588, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x04032640 - 0x04032658\nconst Gfx water_splash_seg4_dl_04032640[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_splash_seg4_texture_0402A5C8),\n    gsSPBranchList(water_splash_seg4_dl_040325C8),\n};\n\n// 0x04032658 - 0x04032670\nconst Gfx water_splash_seg4_dl_04032658[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_splash_seg4_texture_0402B5C8),\n    gsSPBranchList(water_splash_seg4_dl_040325C8),\n};\n\n// 0x04032670 - 0x04032688\nconst Gfx water_splash_seg4_dl_04032670[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_splash_seg4_texture_0402C5C8),\n    gsSPBranchList(water_splash_seg4_dl_040325C8),\n};\n\n// 0x04032688 - 0x040326A0\nconst Gfx water_splash_seg4_dl_04032688[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_splash_seg4_texture_0402D5C8),\n    gsSPBranchList(water_splash_seg4_dl_040325C8),\n};\n\n// 0x040326A0 - 0x040326B8\nconst Gfx water_splash_seg4_dl_040326A0[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_splash_seg4_texture_0402E5C8),\n    gsSPBranchList(water_splash_seg4_dl_040325C8),\n};\n\n// 0x040326B8 - 0x040326D0\nconst Gfx water_splash_seg4_dl_040326B8[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_splash_seg4_texture_0402F5C8),\n    gsSPBranchList(water_splash_seg4_dl_040325C8),\n};\n\n// 0x040326D0 - 0x040326E8\nconst Gfx water_splash_seg4_dl_040326D0[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_splash_seg4_texture_040305C8),\n    gsSPBranchList(water_splash_seg4_dl_040325C8),\n};\n\n// 0x040326E8 - 0x04032700\nconst Gfx water_splash_seg4_dl_040326E8[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_splash_seg4_texture_040315C8),\n    gsSPBranchList(water_splash_seg4_dl_040325C8),\n};\n"
  },
  {
    "path": "actors/water_wave/geo.inc.c",
    "content": "// 0x17000124\nconst GeoLayout idle_water_wave_geo[] = {\n    GEO_SWITCH_CASE(6, geo_switch_anim_state),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_wave_seg4_dl_040273F0),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_wave_seg4_dl_04027408),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_wave_seg4_dl_04027420),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_wave_seg4_dl_04027438),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_wave_seg4_dl_04027420),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_wave_seg4_dl_04027408),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x17000168\nconst GeoLayout wave_trail_geo[] = {\n    GEO_SWITCH_CASE(8, geo_switch_anim_state),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_wave_seg4_dl_040273F0),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_wave_seg4_dl_04027408),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_wave_seg4_dl_04027420),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_wave_seg4_dl_04027438),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_wave_seg4_dl_04027438),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_wave_seg4_dl_04027438),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_wave_seg4_dl_04027438),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, water_wave_seg4_dl_04027438),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/water_wave/model.inc.c",
    "content": "// Water Waves\n\n// 0x04025318\nstatic const Vtx water_wave_seg4_vertex_04025318[] = {\n    {{{   -64,      0,     64}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xc8}}},\n    {{{    64,      0,     64}, 0, {   992,      0}, {0xff, 0xff, 0xff, 0xc8}}},\n    {{{    64,      0,    -64}, 0, {   992,    992}, {0xff, 0xff, 0xff, 0xc8}}},\n    {{{   -64,      0,    -64}, 0, {     0,    992}, {0xff, 0xff, 0xff, 0xc8}}},\n};\n\n// 0x04025358\nALIGNED8 static const Texture water_wave_seg4_texture_04025358[] = {\n#include \"actors/water_wave/water_wave_0.ia16.inc.c\"\n};\n\n// 0x04025B58\nALIGNED8 static const Texture water_wave_seg4_texture_04025B58[] = {\n#include \"actors/water_wave/water_wave_1.ia16.inc.c\"\n};\n\n// 0x04026358\nALIGNED8 static const Texture water_wave_seg4_texture_04026358[] = {\n#include \"actors/water_wave/water_wave_2.ia16.inc.c\"\n};\n\n// 0x04026B58\nALIGNED8 static const Texture water_wave_seg4_texture_04026B58[] = {\n#include \"actors/water_wave/water_wave_3.ia16.inc.c\"\n};\n\n// 0x04027358 - 0x040273A0\nconst Gfx water_wave_seg4_dl_04027358[] = {\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x040273A0 - 0x040273D8\nconst Gfx water_wave_seg4_dl_040273A0[] = {\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsDPPipeSync(),\n    gsSPTexture(0x0001, 0x0001, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x040273D8 - 0x040273F0\nconst Gfx water_wave_seg4_dl_040273D8[] = {\n    gsSPDisplayList(water_wave_seg4_dl_04027358),\n    gsSPVertex(water_wave_seg4_vertex_04025318, 4, 0),\n    gsSPBranchList(water_wave_seg4_dl_040273A0),\n};\n\n// 0x040273F0 - 0x04027408\nconst Gfx water_wave_seg4_dl_040273F0[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, water_wave_seg4_texture_04025358),\n    gsSPBranchList(water_wave_seg4_dl_040273D8),\n};\n\n// 0x04027408 - 0x04027420\nconst Gfx water_wave_seg4_dl_04027408[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, water_wave_seg4_texture_04025B58),\n    gsSPBranchList(water_wave_seg4_dl_040273D8),\n};\n\n// 0x04027420 - 0x04027438\nconst Gfx water_wave_seg4_dl_04027420[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, water_wave_seg4_texture_04026358),\n    gsSPBranchList(water_wave_seg4_dl_040273D8),\n};\n\n// 0x04027438 - 0x04027450\nconst Gfx water_wave_seg4_dl_04027438[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, water_wave_seg4_texture_04026B58),\n    gsSPBranchList(water_wave_seg4_dl_040273D8),\n};\n"
  },
  {
    "path": "actors/whirlpool/model.inc.c",
    "content": "// Whirlpool\n\n// 0x05012848\nALIGNED8 static const Texture whirlpool_seg5_texture_05012848[] = {\n#include \"actors/whirlpool/whirlpool.ia16.inc.c\"\n};\n\n// 0x05013848\nstatic const Vtx whirlpool_seg5_vertex_05013848[] = {\n    {{{    93,    129,    161}, 0, {   650,   1708}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    129,    185}, 0, {   480,   1708}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,      0}, 0, {   564,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   161,    129,     93}, 0, {   820,   1708}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,      0}, 0, {   734,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   189,    802,    328}, 0, {   650,    128}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    802,    379}, 0, {   480,    128}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   328,    802,    189}, 0, {   820,    128}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -92,    129,    161}, 0, {   308,   1708}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -188,    802,    328}, 0, {   308,    128}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,      0}, 0, {   394,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   185,    129,      0}, 0, {   990,   1708}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,      0}, 0, {   904,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   379,    802,      0}, 0, {   990,    128}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x05013928\nstatic const Vtx whirlpool_seg5_vertex_05013928[] = {\n    {{{   -92,    129,   -160}, 0, {  1672,   1708}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -188,    802,   -327}, 0, {  1672,    128}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    802,   -378}, 0, {  1502,    128}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   161,    129,    -92}, 0, {  1160,   1708}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   379,    802,      0}, 0, {   990,    128}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   185,    129,      0}, 0, {   990,   1708}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   328,    802,   -188}, 0, {  1160,    128}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,      0}, 0, {  1076,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    93,    129,   -160}, 0, {  1330,   1708}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,      0}, 0, {  1246,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   189,    802,   -327}, 0, {  1330,    128}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    129,   -184}, 0, {  1502,   1708}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,      0}, 0, {  1416,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -92,    129,    161}, 0, {   308,   1708}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -160,    129,     93}, 0, {   138,   1708}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,      0}, 0, {   224,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x05013A28\nstatic const Vtx whirlpool_seg5_vertex_05013A28[] = {\n    {{{   -92,    129,   -160}, 0, {  1672,   1708}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    129,   -184}, 0, {  1502,   1708}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,      0}, 0, {  1586,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -160,    129,    -92}, 0, {  1842,   1708}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,      0}, 0, {  1756,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -188,    802,   -327}, 0, {  1672,    128}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -327,    802,   -188}, 0, {  1842,    128}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -184,    129,      0}, 0, {  2012,   1708}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,      0}, 0, {  1926,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -378,    802,      0}, 0, {  2012,    128}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -160,    129,     93}, 0, {   138,   1708}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -184,    129,      0}, 0, {     0,   1708}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,      0}, 0, {    54,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -378,    802,      0}, 0, {     0,    128}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x05013B08\nstatic const Vtx whirlpool_seg5_vertex_05013B08[] = {\n    {{{   -92,    129,    161}, 0, {   308,   1708}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -188,    802,    328}, 0, {   308,    128}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -327,    802,    189}, 0, {   138,    128}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -160,    129,     93}, 0, {   138,   1708}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -378,    802,      0}, 0, {     0,    128}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x05013B58 - 0x05013CB8\nconst Gfx whirlpool_seg5_dl_05013B58[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, whirlpool_seg5_texture_05012848),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(whirlpool_seg5_vertex_05013848, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 0,  5,  6, 0x0,  0,  6,  1, 0x0),\n    gsSP2Triangles( 3,  5,  0, 0x0,  3,  7,  5, 0x0),\n    gsSP2Triangles( 1,  6,  8, 0x0,  6,  9,  8, 0x0),\n    gsSP2Triangles( 1,  8, 10, 0x0, 11,  3, 12, 0x0),\n    gsSP2Triangles(11, 13,  3, 0x0, 13,  7,  3, 0x0),\n    gsSPVertex(whirlpool_seg5_vertex_05013928, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  5,  7, 0x0),\n    gsSP2Triangles( 8,  3,  9, 0x0,  8,  6,  3, 0x0),\n    gsSP2Triangles( 8, 10,  6, 0x0, 11,  8, 12, 0x0),\n    gsSP2Triangles( 2, 10,  8, 0x0, 11,  2,  8, 0x0),\n    gsSP2Triangles( 0,  2, 11, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(whirlpool_seg5_vertex_05013A28, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 3,  5,  0, 0x0,  3,  6,  5, 0x0),\n    gsSP2Triangles( 7,  3,  8, 0x0,  9,  6,  3, 0x0),\n    gsSP2Triangles( 7,  9,  3, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(10, 13, 11, 0x0),\n    gsSPVertex(whirlpool_seg5_vertex_05013B08, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP1Triangle( 3,  2,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05013CB8 - 0x05013D28\nconst Gfx whirlpool_seg5_dl_05013CB8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(whirlpool_seg5_dl_05013B58),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/white_particle/geo.inc.c",
    "content": "// 0x16000F98\nconst GeoLayout white_particle_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xB4, 50),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, white_particle_dl),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/white_particle/model.inc.c",
    "content": "// White Particle\n\n// 0x0302C660\nstatic const Vtx white_particle_vertex[] = {\n    {{{   -15,    -15,      0}, 0, {     0,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    15,    -15,      0}, 0, {   480,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    15,     15,      0}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -15,     15,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0302C6A0\nALIGNED8 static const Texture white_particle_texture[] = {\n#include \"actors/white_particle/snow_particle.rgba16.inc.c\"\n};\n\n// 0x0302C8A0 - 0x0302C938\nconst Gfx white_particle_dl[] = {\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsDPLoadTextureBlock(white_particle_texture, G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 16, 0, G_TX_CLAMP, G_TX_CLAMP, 4, 4, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsSPVertex(white_particle_vertex, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/white_particle_small/model.inc.c",
    "content": "// White Particle Small\n\n// 0x04032700\nstatic const Vtx white_particle_small_vertex[] = {\n    {{{    -4,      0,      0}, 0, {     0,    960}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     4,      0,      0}, 0, {   960,    960}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     4,      8,      0}, 0, {   960,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    -4,      8,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x04032740\nstatic const Vtx white_particle_small_unused_vertex[] = {\n    {{{    -4,      0,      0}, 0, {     0,    960}, {0xff, 0x00, 0x00, 0xff}}},\n    {{{     4,      0,      0}, 0, {   960,    960}, {0xff, 0x00, 0x00, 0xff}}},\n    {{{     4,      8,      0}, 0, {   960,      0}, {0xff, 0x00, 0x00, 0xff}}},\n    {{{    -4,      8,      0}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0xff}}},\n};\n\n// 0x04032780\nALIGNED8 static const Texture white_particle_small_texture[] = {\n#include \"actors/white_particle_small/small_snow_particle.rgba16.inc.c\"\n};\n\n// 0x04032980 - 0x040329E0\nconst Gfx white_particle_small_dl_begin[] = {\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),\n    gsDPLoadTextureBlock(white_particle_small_texture, G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 16, 0, G_TX_CLAMP, G_TX_CLAMP, 4, 4, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPEndDisplayList(),\n};\n\n// 0x040329E0 - 0x04032A18\nconst Gfx white_particle_small_dl_end[] = {\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsDPPipeSync(),\n    gsSPTexture(0x0001, 0x0001, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x04032A18 - 0x04032A30\nconst Gfx white_particle_small_dl[] = {\n    gsSPDisplayList(white_particle_small_dl_begin),\n    gsSPVertex(white_particle_small_vertex, 4, 0),\n    gsSPBranchList(white_particle_small_dl_end),\n};\n\n// 0x04032A30 - 0x04032A48 # Unused, has different vertex color\nconst Gfx white_particle_small_unused_dl[] = {\n    gsSPDisplayList(white_particle_small_dl_begin),\n    gsSPVertex(white_particle_small_unused_vertex, 4, 0),\n    gsSPBranchList(white_particle_small_dl_end),\n};\n"
  },
  {
    "path": "actors/whomp/anims/anim_060202DC.inc.c",
    "content": "// 0x06020098\nstatic const s16 whomp_seg6_animvalue_06020098[] = {\n    0x0000, 0x0005, 0x00B4, 0x0068, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xC1F1, 0xC16F, 0xC039, 0xBEC6, 0xBD90,\n    0xBD0E, 0xBD38, 0xBDA8, 0xBE4C, 0xBF0E, 0xBFDB, 0xC0A0, 0xC148,\n    0xC1BE, 0xC1F1, 0x0000, 0x0000, 0x0002, 0x0005, 0x0007, 0x0008,\n    0x0007, 0x0007, 0x0006, 0x0004, 0x0003, 0x0002, 0x0001, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001,\n    0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0xC1F1, 0xC16F, 0xC039, 0xBEC6, 0xBD90, 0xBD0E, 0xBD38, 0xBDA8,\n    0xBE4C, 0xBF0E, 0xBFDB, 0xC0A0, 0xC148, 0xC1BE, 0xC1F1, 0x0003,\n    0x0003, 0x0004, 0x0004, 0x0005, 0x0006, 0x0006, 0x0007, 0x0008,\n    0x0009, 0x000A, 0x000A, 0x000B, 0x000B, 0x000B, 0x1A13, 0x1B29,\n    0x1E36, 0x22E6, 0x28E6, 0x2FE4, 0x378B, 0x3F8A, 0x478D, 0x4F42,\n    0x5655, 0x5C74, 0x614B, 0x6488, 0x65D7, 0xC004, 0xC004, 0xC003,\n    0xC003, 0xC003, 0xC002, 0xC002, 0xC001, 0xC000, 0xC000, 0xBFFF,\n    0xBFFF, 0xBFFF, 0xBFFE, 0xBFFE, 0x0000, 0x0000, 0x0001, 0x0003,\n    0x0006, 0x0009, 0x000D, 0x0010, 0x0014, 0x0017, 0x001A, 0x001D,\n    0x001F, 0x0021, 0x0021, 0xE726, 0xE609, 0xE2EC, 0xDE22, 0xD801,\n    0xD0DD, 0xC90B, 0xC0E1, 0xB8B1, 0xB0D2, 0xA998, 0xA358, 0x9E66,\n    0x9B17, 0x99C0, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC001,\n    0xC001, 0xC001, 0xC001, 0xC001, 0xC002, 0xC002, 0xC002, 0xC002,\n    0xC002, 0x2022, 0x3FFF, 0xDFDE, 0x2022, 0x3FFF, 0xDFDE, 0x2022,\n    0x3FFF, 0xDFDE, 0x2022, 0x3FFF, 0xDFDE, 0x0000, 0xFF69, 0xFDFF,\n    0xFC4E, 0xFAE4, 0xFA4C, 0xFA7D, 0xFB01, 0xFBBF, 0xFCA2, 0xFD92,\n    0xFE77, 0xFF3A, 0xFFC5, 0x0000, 0x4045, 0x4045, 0x4045, 0x4045,\n    0x4045, 0x4045, 0x4045, 0x4045, 0x4045, 0x4045, 0x4045, 0x4045,\n    0x4045, 0x4045, 0x4045, 0x0000,\n};\n\n// 0x06020240\nstatic const u16 whomp_seg6_animindex_06020240[] = {\n    0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0003,\n    0x0001, 0x0000, 0x000F, 0x00B5, 0x000F, 0x00C4,\n    0x0001, 0x00B2, 0x0001, 0x00B3, 0x0001, 0x00B4,\n    0x0001, 0x0000, 0x000F, 0x0004, 0x000F, 0x0013,\n    0x0001, 0x00AF, 0x0001, 0x00B0, 0x0001, 0x00B1,\n    0x000F, 0x0022, 0x000F, 0x0031, 0x000F, 0x0040,\n    0x0001, 0x00AC, 0x0001, 0x00AD, 0x0001, 0x00AE,\n    0x000F, 0x004F, 0x000F, 0x005E, 0x000F, 0x006D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x00A9, 0x0001, 0x00AA, 0x0001, 0x00AB,\n    0x000F, 0x007C, 0x000F, 0x008B, 0x000F, 0x009A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x060202DC\nstatic const struct Animation whomp_seg6_anim_060202DC = {\n    1,\n    0,\n    0,\n    0,\n    0x0F,\n    ANIMINDEX_NUMPARTS(whomp_seg6_animindex_06020240),\n    whomp_seg6_animvalue_06020098,\n    whomp_seg6_animindex_06020240,\n    0,\n};\n"
  },
  {
    "path": "actors/whomp/anims/anim_060209EC.inc.c",
    "content": "// 0x060202F4\nstatic const s16 whomp_seg6_animvalue_060202F4[] = {\n    0x0000, 0x0005, 0x00B2, 0x00B4, 0x00BA, 0x00C2, 0x00CB, 0x00D5,\n    0x00DF, 0x00E7, 0x00EC, 0x00EE, 0x00ED, 0x00E9, 0x00E4, 0x00DD,\n    0x00D5, 0x00CD, 0x00C5, 0x00BE, 0x00B7, 0x00B2, 0x00AF, 0x00AD,\n    0x00AD, 0x00AF, 0x00B2, 0x00BA, 0x00C6, 0x00D3, 0x00E0, 0x00EC,\n    0x00F5, 0x00F8, 0x00F8, 0x00F5, 0x00EE, 0x00E2, 0x00D3, 0x00C3,\n    0x00B7, 0x00B2, 0x00B2, 0x00B2, 0x00B2, 0x00B2, 0x00B2, 0x00B2,\n    0x00B2, 0x00B2, 0x00B2, 0x00B2, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0xFFFF, 0xFFFB, 0xFFF8, 0xFFF9, 0x0000, 0x0012, 0x002E, 0x004C,\n    0x0064, 0x0071, 0x006E, 0x005F, 0x004B, 0x0037, 0x0027, 0x001C,\n    0x0011, 0x0008, 0x0002, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xFFEE, 0xFFCA, 0xFFAE, 0xFFB7, 0x0000, 0x00AB,\n    0x01A6, 0x02BE, 0x03BF, 0x0477, 0x04ED, 0x0544, 0x056F, 0x0564,\n    0x0516, 0x0445, 0x02F9, 0x0193, 0x0075, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0xC1F1, 0xC1F1, 0xC1F1, 0xC1F1, 0xC1F1, 0xC1F1, 0xC1F1, 0xC1F1,\n    0xC1F1, 0xC1F1, 0xC1F1, 0xC1F1, 0xC1F1, 0xC1F1, 0xC1F1, 0xC1F1,\n    0xC1F1, 0xC1F1, 0xC1F1, 0xC1F1, 0xC1EE, 0xC1E9, 0xC1E4, 0xC1E6,\n    0xC1F1, 0xC210, 0xC23E, 0xC26F, 0xC296, 0xC2A5, 0xC293, 0xC269,\n    0xC235, 0xC205, 0xC1E6, 0xC1DB, 0xC1DD, 0xC1E5, 0xC1ED, 0xC1F1,\n    0xC1F1, 0xC1F1, 0xC1F1, 0xC1F1, 0xC1F1, 0xC1F1, 0xC1F1, 0xC1F1,\n    0xC1F1, 0xC1F1, 0x0000, 0xFFFE, 0xFFF8, 0xFFEF, 0xFFE5, 0xFFDA,\n    0xFFCF, 0xFFC7, 0xFFC0, 0xFFBE, 0xFFC0, 0xFFC4, 0xFFCA, 0xFFD1,\n    0xFFDA, 0xFFE3, 0xFFEC, 0xFFF4, 0xFFFB, 0x0000, 0x0002, 0x0003,\n    0x0002, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFD2, 0xFF56, 0xFEA2,\n    0xFDCC, 0xFCEB, 0xFC16, 0xFB62, 0xFAE5, 0xFAB7, 0xFAD4, 0xFB27,\n    0xFBA2, 0xFC3D, 0xFCEB, 0xFDA2, 0xFE57, 0xFF00, 0xFF91, 0x0000,\n    0x0039, 0x0040, 0x002B, 0x000E, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xC1F1, 0xC1F3,\n    0xC1F6, 0xC1FB, 0xC201, 0xC208, 0xC20E, 0xC213, 0xC217, 0xC218,\n    0xC217, 0xC215, 0xC211, 0xC20D, 0xC208, 0xC203, 0xC1FD, 0xC1F9,\n    0xC1F4, 0xC1F1, 0xC1F0, 0xC1EF, 0xC1F0, 0xC1F1, 0xC1F1, 0xC1F1,\n    0xC1F1, 0xC1F1, 0xC1F1, 0xC1F1, 0xC1F1, 0xC1F1, 0xC1F1, 0xC1F1,\n    0xC1F1, 0xC1F1, 0xC1F1, 0xC1F1, 0xC1F1, 0xC1F1, 0xC1F1, 0xC1F1,\n    0xC1F1, 0xC1F1, 0xC1F1, 0xC1F1, 0xC1F1, 0xC1F1, 0xC1F1, 0xC1F1,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0005,\n    0x0007, 0x0009, 0x000A, 0x0007, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0001, 0x0000, 0x0000, 0x0000,\n    0x0002, 0x0003, 0x1A13, 0x1A10, 0x1A07, 0x19FA, 0x19EA, 0x19D7,\n    0x19C3, 0x19AE, 0x199B, 0x1988, 0x1979, 0x196D, 0x1967, 0x1966,\n    0x196B, 0x1979, 0x1990, 0x19B0, 0x19DB, 0x1A13, 0x1B9D, 0x1E2C,\n    0x1F5F, 0x1C09, 0x18B3, 0x1B51, 0x1E3E, 0x1C5A, 0x1A13, 0x1B30,\n    0x1C85, 0x1B5A, 0x1A13, 0x19EB, 0x19E2, 0x19ED, 0x1A05, 0x1A21,\n    0x1A39, 0x1A44, 0x1A3A, 0x1A13, 0x1894, 0x17A1, 0x1AEB, 0x1D8F,\n    0x19D8, 0x15E9, 0x17C6, 0x1A13, 0xC004, 0xC004, 0xC004, 0xC004,\n    0xC004, 0xC004, 0xC004, 0xC004, 0xC004, 0xC004, 0xC004, 0xC004,\n    0xC004, 0xC004, 0xC004, 0xC004, 0xC004, 0xC004, 0xC004, 0xC004,\n    0xC004, 0xC004, 0xC004, 0xC003, 0xC003, 0xC004, 0xC005, 0xC005,\n    0xC004, 0xC004, 0xC004, 0xC004, 0xC004, 0xC004, 0xC004, 0xC004,\n    0xC004, 0xC004, 0xC004, 0xC004, 0xC004, 0xC004, 0xC004, 0xC004,\n    0xC004, 0xC004, 0xC003, 0xC003, 0xC003, 0xC004, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0001, 0x0003, 0x0003, 0x0003, 0x0004, 0x0006,\n    0x0006, 0x0005, 0x0002, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF,\n    0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0002,\n    0x0006, 0x0007, 0x0008, 0x0009, 0x0008, 0x0005, 0x0001, 0x0000,\n    0xE726, 0xE729, 0xE730, 0xE73C, 0xE74A, 0xE75B, 0xE76D, 0xE77F,\n    0xE791, 0xE7A1, 0xE7AE, 0xE7B9, 0xE7BF, 0xE7C0, 0xE7BA, 0xE7AE,\n    0xE79A, 0xE77E, 0xE757, 0xE726, 0xE4F0, 0xE2AB, 0xE423, 0xE5D0,\n    0xE44F, 0xE2FD, 0xE529, 0xE7A0, 0xE7A8, 0xE726, 0xE725, 0xE731,\n    0xE747, 0xE761, 0xE77C, 0xE792, 0xE79F, 0xE7A0, 0xE78F, 0xE768,\n    0xE726, 0xE509, 0xE313, 0xE53C, 0xE724, 0xE3F7, 0xE10B, 0xE2A1,\n    0xE591, 0xE726, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000,\n    0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000,\n    0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xBFFF,\n    0xBFFF, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000,\n    0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000,\n    0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC000, 0xC001, 0xC000,\n    0xBFFF, 0xBFFF, 0xC000, 0xC000, 0x2022, 0x3FFF, 0xDFDE, 0x2022,\n    0x3FFF, 0xDFDE, 0x2022, 0x3FFF, 0xDFDE, 0x2022, 0x3FFF, 0xDFDE,\n    0xF2F7, 0xF33E, 0xF401, 0xF52A, 0xF69E, 0xF846, 0xFA08, 0xFBCC,\n    0xFD7A, 0xFEF9, 0x005C, 0x01C7, 0x0337, 0x04AA, 0x061D, 0x078D,\n    0x08F9, 0x0A5E, 0x0BBA, 0x0D09, 0x0DF4, 0x0E61, 0x0E74, 0x0E3D,\n    0x0E3A, 0x0E20, 0x0D09, 0x0AA9, 0x07A0, 0x0462, 0x0167, 0xFF27,\n    0xFD67, 0xFBA9, 0xF9F7, 0xF85C, 0xF6E3, 0xF596, 0xF481, 0xF3AD,\n    0xF326, 0xF2F7, 0xF2F7, 0xF2F6, 0xF2F5, 0xF2F5, 0xF2F5, 0xF2F6,\n    0xF2F7, 0xF2F7, 0x0015, 0x0015, 0x0014, 0x0012, 0x000F, 0x000C,\n    0x000A, 0x0007, 0x0004, 0x0001, 0x0000, 0x0002, 0x0004, 0x0007,\n    0x000A, 0x000A, 0x0008, 0x0003, 0xFFFA, 0xFFEB, 0xFF70, 0xFF25,\n    0x0027, 0x0119, 0x00E4, 0x0051, 0xFFEB, 0xFFD6, 0xFFD8, 0xFFE7,\n    0xFFF8, 0x0001, 0x0004, 0x0007, 0x000A, 0x000C, 0x000F, 0x0011,\n    0x0013, 0x0014, 0x0015, 0x0015, 0xFFA6, 0xFF50, 0x0022, 0x00EE,\n    0x00C7, 0x0056, 0x0015, 0x0015, 0x4041, 0x4016, 0x3FA3, 0x3EFD,\n    0x3E37, 0x3D67, 0x3CA2, 0x3BFB, 0x3B88, 0x3B5D, 0x3B78, 0x3BC1,\n    0x3C2F, 0x3CB9, 0x3D56, 0x3DFD, 0x3EA4, 0x3F43, 0x3FCF, 0x4041,\n    0x402D, 0x3FEA, 0x401C, 0x4054, 0x402C, 0x3FF4, 0x4041, 0x4160,\n    0x42F3, 0x4494, 0x45DB, 0x465F, 0x4633, 0x45BC, 0x450C, 0x4438,\n    0x4350, 0x4268, 0x4193, 0x40E4, 0x406D, 0x4041, 0x4066, 0x4083,\n    0x403D, 0x3FF9, 0x4006, 0x402C, 0x4041, 0x4041,\n};\n\n// 0x06020950\nstatic const u16 whomp_seg6_animindex_06020950[] = {\n    0x0001, 0x0001, 0x0032, 0x0002, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0032, 0x0298, 0x0032, 0x02CA, 0x0032, 0x02FC,\n    0x0001, 0x0295, 0x0001, 0x0296, 0x0001, 0x0297,\n    0x0032, 0x0034, 0x0032, 0x0066, 0x0032, 0x0098,\n    0x0001, 0x0292, 0x0001, 0x0293, 0x0001, 0x0294,\n    0x0032, 0x00CA, 0x0032, 0x00FC, 0x0032, 0x012E,\n    0x0001, 0x028F, 0x0001, 0x0290, 0x0001, 0x0291,\n    0x0032, 0x0160, 0x0032, 0x0192, 0x0032, 0x01C4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x028C, 0x0001, 0x028D, 0x0001, 0x028E,\n    0x0032, 0x01F6, 0x0032, 0x0228, 0x0032, 0x025A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n};\n\n// 0x060209EC\nstatic const struct Animation whomp_seg6_anim_060209EC = {\n    0,\n    0,\n    0,\n    0,\n    0x32,\n    ANIMINDEX_NUMPARTS(whomp_seg6_animindex_06020950),\n    whomp_seg6_animvalue_060202F4,\n    whomp_seg6_animindex_06020950,\n    0,\n};\n"
  },
  {
    "path": "actors/whomp/anims/data.inc.c",
    "content": "#include \"anim_060202DC.inc.c\"\n#include \"anim_060209EC.inc.c\"\n"
  },
  {
    "path": "actors/whomp/anims/table.inc.c",
    "content": "// 0x06020A04\nconst struct Animation *const whomp_seg6_anims_06020A04[] = {\n    &whomp_seg6_anim_060209EC,\n    &whomp_seg6_anim_060202DC,\n};\n"
  },
  {
    "path": "actors/whomp/collision.inc.c",
    "content": "// Whomp\n\n// 0x06020A0C - 0x06020A90\nconst Collision whomp_seg6_collision_06020A0C[] = {\n#ifdef VERSION_JP\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-200, 50, -100),\n    COL_VERTEX(150, 50, -100),\n    COL_VERTEX(150, 430, -100),\n    COL_VERTEX(-200, 430, -100),\n    COL_VERTEX(-200, 50, -3),\n    COL_VERTEX(150, 430, -3),\n    COL_VERTEX(150, 50, -3),\n    COL_VERTEX(-200, 430, -3),\n#else\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-150, 50, -100),\n    COL_VERTEX(150, 50, -100),\n    COL_VERTEX(150, 430, -100),\n    COL_VERTEX(-150, 430, -100),\n    COL_VERTEX(-150, 50, -3),\n    COL_VERTEX(150, 430, -3),\n    COL_VERTEX(150, 50, -3),\n    COL_VERTEX(-150, 430, -3),\n#endif\n\n    COL_TRI_INIT(SURFACE_NO_CAM_COLLISION, 12),\n    COL_TRI(2, 1, 0),\n    COL_TRI(3, 2, 0),\n    COL_TRI(6, 5, 4),\n    COL_TRI(5, 7, 4),\n    COL_TRI(7, 5, 3),\n    COL_TRI(5, 2, 3),\n    COL_TRI(6, 4, 0),\n    COL_TRI(1, 6, 0),\n    COL_TRI(5, 1, 2),\n    COL_TRI(6, 1, 5),\n    COL_TRI(0, 7, 3),\n    COL_TRI(0, 4, 7),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n\nUNUSED static const u32 whomp_unused_2 = 0;\n"
  },
  {
    "path": "actors/whomp/geo.inc.c",
    "content": "// 0x0D000480\nconst GeoLayout whomp_geo[] = {\n    GEO_CULLING_RADIUS(2000),\n    GEO_OPEN_NODE(),\n        GEO_TRANSLATE_NODE(0x00, 0, 0, -50),\n        GEO_OPEN_NODE(),\n            GEO_SHADOW(0x01 + SHADOW_RECTANGLE_HARDCODED_OFFSET, 0xB4, 0),\n            GEO_OPEN_NODE(),\n                GEO_SCALE(0x00, 16384),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, whomp_seg6_dl_0601F5E0),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, -12, 490, -5, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, whomp_seg6_dl_0601FEA8),\n                            GEO_CLOSE_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, -18, -479, -5, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, whomp_seg6_dl_06020038),\n                            GEO_CLOSE_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 1075, 570, 0, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, whomp_seg6_dl_0601F880),\n                                GEO_OPEN_NODE(),\n                                    GEO_ANIMATED_PART(LAYER_ALPHA, 400, 0, 0, NULL),\n                                    GEO_OPEN_NODE(),\n                                        GEO_BILLBOARD(),\n                                        GEO_OPEN_NODE(),\n                                            GEO_DISPLAY_LIST(LAYER_ALPHA, whomp_seg6_dl_0601FBC0),\n                                        GEO_CLOSE_NODE(),\n                                    GEO_CLOSE_NODE(),\n                                GEO_CLOSE_NODE(),\n                            GEO_CLOSE_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 1068, -574, 0, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, whomp_seg6_dl_0601FAE8),\n                                GEO_OPEN_NODE(),\n                                    GEO_ANIMATED_PART(LAYER_ALPHA, 400, 0, 0, NULL),\n                                    GEO_OPEN_NODE(),\n                                        GEO_BILLBOARD(),\n                                        GEO_OPEN_NODE(),\n                                            GEO_DISPLAY_LIST(LAYER_ALPHA, whomp_seg6_dl_0601FCA8),\n                                        GEO_CLOSE_NODE(),\n                                    GEO_CLOSE_NODE(),\n                                GEO_CLOSE_NODE(),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/whomp/model.inc.c",
    "content": "// Whomp\n\n// ???\nUNUSED static const u64 whomp_unused_1 = 2;\n\n\n// 0x0601C360\nALIGNED8 static const Texture whomp_seg6_texture_0601C360[] = {\n#include \"actors/whomp/whomp_back.rgba16.inc.c\"\n};\n\n// 0x0601D360\nALIGNED8 static const Texture whomp_seg6_texture_0601D360[] = {\n#include \"actors/whomp/whomp_face.rgba16.inc.c\"\n};\n\n// 0x0601D360\nALIGNED8 static const Texture whomp_seg6_texture_0601E360[] = {\n#include \"actors/whomp/whomp_hand.rgba16.inc.c\"\n};\n\n// 0x0601EB60\nALIGNED8 static const Texture whomp_seg6_texture_0601EB60[] = {\n#include \"actors/whomp/whomp_surface.rgba16.inc.c\"\n};\n\n// 0x0601F360\nstatic const Lights1 whomp_seg6_lights_0601F360 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0601F378\nstatic const Vtx whomp_seg6_vertex_0601F378[] = {\n    {{{   -52,    610,   -201}, 0, {   470,    990}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{   -52,    610,    202}, 0, {     0,   2012}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  1559,    600,    202}, 0, {     0,  -1022}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  1559,    600,   -201}, 0, {     0,    320}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{  1551,   -609,    202}, 0, {  1980,    990}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{  1551,   -609,   -201}, 0, {  1980,    320}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{  1559,    600,    202}, 0, {     0,    990}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{   -60,   -598,   -201}, 0, {  1962,    320}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{   -52,    610,    202}, 0, {   -48,    990}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{   -52,    610,   -201}, 0, {   -48,    320}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{   -60,   -598,    202}, 0, {  1962,    990}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{   -60,   -598,    202}, 0, {     0,    990}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{   -60,   -598,   -201}, 0, {   470,    990}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{  1551,   -609,   -201}, 0, {   470,  -1022}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{  1551,   -609,    202}, 0, {     0,  -1022}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{  1559,    600,   -201}, 0, {   470,  -1022}, {0x00, 0x7e, 0x00, 0xff}}},\n};\n\n// 0x0601F478\nstatic const Vtx whomp_seg6_vertex_0601F478[] = {\n    {{{   -60,   -598,   -201}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1559,    600,   -201}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1551,   -609,   -201}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -52,    610,   -201}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0601F4B8\nstatic const Vtx whomp_seg6_vertex_0601F4B8[] = {\n    {{{   -52,    610,    202}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -60,   -598,    202}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1551,   -609,    202}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1559,    600,    202}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0601F4F8 - 0x0601F570\nconst Gfx whomp_seg6_dl_0601F4F8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, whomp_seg6_texture_0601EB60),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&whomp_seg6_lights_0601F360.l, 1),\n    gsSPLight(&whomp_seg6_lights_0601F360.a, 2),\n    gsSPVertex(whomp_seg6_vertex_0601F378, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0601F570 - 0x0601F5A8\nconst Gfx whomp_seg6_dl_0601F570[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, whomp_seg6_texture_0601C360),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(whomp_seg6_vertex_0601F478, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0601F5A8 - 0x0601F5E0\nconst Gfx whomp_seg6_dl_0601F5A8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, whomp_seg6_texture_0601D360),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(whomp_seg6_vertex_0601F4B8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0601F5E0 - 0x0601F678\nconst Gfx whomp_seg6_dl_0601F5E0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(whomp_seg6_dl_0601F4F8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(whomp_seg6_dl_0601F570),\n    gsSPDisplayList(whomp_seg6_dl_0601F5A8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x0601F678\nstatic const Lights1 whomp_seg6_lights_0601F678 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0601F690\nstatic const Vtx whomp_seg6_vertex_0601F690[] = {\n    {{{   290,      0,     85}, 0, {   952,      0}, {0xed, 0x1c, 0x7a, 0xff}}},\n    {{{   -10,     35,     13}, 0, {   246,    976}, {0xed, 0x6a, 0x41, 0xff}}},\n    {{{   -10,      0,     38}, 0, {   672,    976}, {0xed, 0xe3, 0x79, 0xff}}},\n    {{{   290,     80,     28}, 0, {   952,      0}, {0xed, 0x7d, 0x08, 0xff}}},\n    {{{   -10,     21,    -27}, 0, {   246,    976}, {0xed, 0x5e, 0xae, 0xff}}},\n    {{{   -10,     35,     13}, 0, {   672,    976}, {0xed, 0x6a, 0x41, 0xff}}},\n    {{{   290,     49,    -65}, 0, {     0,      0}, {0xed, 0x2f, 0x8c, 0xff}}},\n    {{{   290,     49,    -65}, 0, {   952,      0}, {0xed, 0x2f, 0x8c, 0xff}}},\n    {{{   -10,    -20,    -27}, 0, {   246,    976}, {0xed, 0xd1, 0x8c, 0xff}}},\n    {{{   -10,     21,    -27}, 0, {   672,    976}, {0xed, 0x5e, 0xae, 0xff}}},\n    {{{   290,    -48,    -65}, 0, {     0,      0}, {0xed, 0xa2, 0xae, 0xff}}},\n    {{{   290,    -79,     28}, 0, {   952,      0}, {0xed, 0x95, 0x41, 0xff}}},\n    {{{   290,      0,     85}, 0, {     0,      0}, {0xed, 0x1c, 0x7a, 0xff}}},\n    {{{   -10,      0,     38}, 0, {   246,    976}, {0xed, 0xe3, 0x79, 0xff}}},\n    {{{   -10,    -34,     13}, 0, {   672,    976}, {0xed, 0x83, 0x08, 0xff}}},\n};\n\n// 0x0601F780\nstatic const Vtx whomp_seg6_vertex_0601F780[] = {\n    {{{   290,    -48,    -65}, 0, {   952,      0}, {0xed, 0xa2, 0xae, 0xff}}},\n    {{{   290,    -79,     28}, 0, {     0,      0}, {0xed, 0x95, 0x41, 0xff}}},\n    {{{   -10,    -34,     13}, 0, {   246,    976}, {0xed, 0x83, 0x08, 0xff}}},\n    {{{   290,      0,     85}, 0, {   952,      0}, {0xed, 0x1c, 0x7a, 0xff}}},\n    {{{   290,     80,     28}, 0, {     0,      0}, {0xed, 0x7d, 0x08, 0xff}}},\n    {{{   -10,     35,     13}, 0, {   246,    976}, {0xed, 0x6a, 0x41, 0xff}}},\n    {{{   -10,    -20,    -27}, 0, {   672,    976}, {0xed, 0xd1, 0x8c, 0xff}}},\n};\n\n// 0x0601F7F0 - 0x0601F880\nconst Gfx whomp_seg6_dl_0601F7F0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, whomp_seg6_texture_0601EB60),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&whomp_seg6_lights_0601F678.l, 1),\n    gsSPLight(&whomp_seg6_lights_0601F678.a, 2),\n    gsSPVertex(whomp_seg6_vertex_0601F690, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(whomp_seg6_vertex_0601F780, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  2,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0601F880 - 0x0601F8E0\nconst Gfx whomp_seg6_dl_0601F880[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(whomp_seg6_dl_0601F7F0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0601F8E0\nstatic const Lights1 whomp_seg6_lights_0601F8E0 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0601F8F8\nstatic const Vtx whomp_seg6_vertex_0601F8F8[] = {\n    {{{   -10,      0,    -37}, 0, {   246,    976}, {0xed, 0x1c, 0x86, 0xff}}},\n    {{{   290,     80,    -26}, 0, {   952,      0}, {0xed, 0x6a, 0xbf, 0xff}}},\n    {{{   290,      0,    -84}, 0, {     0,      0}, {0xed, 0xe2, 0x87, 0xff}}},\n    {{{   -10,     35,    -12}, 0, {   246,    976}, {0xed, 0x7d, 0xf8, 0xff}}},\n    {{{   290,     49,     66}, 0, {   952,      0}, {0xed, 0x5e, 0x52, 0xff}}},\n    {{{   290,     80,    -26}, 0, {     0,      0}, {0xed, 0x6a, 0xbf, 0xff}}},\n    {{{   -10,     21,     28}, 0, {   672,    976}, {0xed, 0x2f, 0x74, 0xff}}},\n    {{{   -10,     21,     28}, 0, {   246,    976}, {0xed, 0x2f, 0x74, 0xff}}},\n    {{{   290,    -48,     66}, 0, {   952,      0}, {0xed, 0xd1, 0x74, 0xff}}},\n    {{{   290,     49,     66}, 0, {     0,      0}, {0xed, 0x5e, 0x52, 0xff}}},\n    {{{   -10,    -20,     28}, 0, {   672,    976}, {0xed, 0xa2, 0x52, 0xff}}},\n    {{{   -10,    -34,    -12}, 0, {   246,    976}, {0xed, 0x95, 0xc0, 0xff}}},\n    {{{   -10,      0,    -37}, 0, {   672,    976}, {0xed, 0x1c, 0x86, 0xff}}},\n    {{{   290,      0,    -84}, 0, {   952,      0}, {0xed, 0xe2, 0x87, 0xff}}},\n    {{{   290,    -79,    -26}, 0, {     0,      0}, {0xed, 0x83, 0xf9, 0xff}}},\n};\n\n// 0x0601F9E8\nstatic const Vtx whomp_seg6_vertex_0601F9E8[] = {\n    {{{   -10,    -20,     28}, 0, {   246,    976}, {0xed, 0xa2, 0x52, 0xff}}},\n    {{{   -10,    -34,    -12}, 0, {   672,    976}, {0xed, 0x95, 0xc0, 0xff}}},\n    {{{   290,    -79,    -26}, 0, {   952,      0}, {0xed, 0x83, 0xf9, 0xff}}},\n    {{{   -10,      0,    -37}, 0, {   246,    976}, {0xed, 0x1c, 0x86, 0xff}}},\n    {{{   -10,     35,    -12}, 0, {   672,    976}, {0xed, 0x7d, 0xf8, 0xff}}},\n    {{{   290,     80,    -26}, 0, {   952,      0}, {0xed, 0x6a, 0xbf, 0xff}}},\n    {{{   290,    -48,     66}, 0, {     0,      0}, {0xed, 0xd1, 0x74, 0xff}}},\n};\n\n// 0x0601FA58 - 0x0601FAE8\nconst Gfx whomp_seg6_dl_0601FA58[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, whomp_seg6_texture_0601EB60),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&whomp_seg6_lights_0601F8E0.l, 1),\n    gsSPLight(&whomp_seg6_lights_0601F8E0.a, 2),\n    gsSPVertex(whomp_seg6_vertex_0601F8F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(whomp_seg6_vertex_0601F9E8, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  2,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0601FAE8 - 0x0601FB48\nconst Gfx whomp_seg6_dl_0601FAE8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(whomp_seg6_dl_0601FA58),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0601FB48\nstatic const Vtx whomp_seg6_vertex_0601FB48[] = {\n    {{{   -37,    -37,      0}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    38,    -37,      0}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    38,     38,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -37,     38,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0601FB88 - 0x0601FBC0\nconst Gfx whomp_seg6_dl_0601FB88[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, whomp_seg6_texture_0601E360),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(whomp_seg6_vertex_0601FB48, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0601FBC0 - 0x0601FC30\nconst Gfx whomp_seg6_dl_0601FBC0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(whomp_seg6_dl_0601FB88),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x0601FC30\nstatic const Vtx whomp_seg6_vertex_0601FC30[] = {\n    {{{   -37,    -37,      0}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    38,    -37,      0}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    38,     38,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -37,     38,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0601FC70 - 0x0601FCA8\nconst Gfx whomp_seg6_dl_0601FC70[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, whomp_seg6_texture_0601E360),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(whomp_seg6_vertex_0601FC30, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0601FCA8 - 0x0601FD18\nconst Gfx whomp_seg6_dl_0601FCA8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(whomp_seg6_dl_0601FC70),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x0601FD18\nstatic const Lights1 whomp_seg6_lights_0601FD18 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0601FD30\nstatic const Vtx whomp_seg6_vertex_0601FD30[] = {\n    {{{   174,    183,    177}, 0, {  1364,    114}, {0x01, 0x3e, 0x6e, 0xff}}},\n    {{{   180,    257,      2}, 0, {   490,    -34}, {0x46, 0x69, 0x00, 0xff}}},\n    {{{    22,    158,      2}, 0, {   490,    162}, {0x9b, 0x4c, 0xff, 0xff}}},\n    {{{   -28,    -89,      2}, 0, {   490,    658}, {0x84, 0xe7, 0x00, 0xff}}},\n    {{{   177,    182,   -171}, 0, {  -376,    116}, {0xc9, 0x39, 0x9d, 0xff}}},\n    {{{   154,   -260,      3}, 0, {   492,    998}, {0xe9, 0x84, 0x01, 0xff}}},\n    {{{   158,   -143,    201}, 0, {  1482,    768}, {0x38, 0xc6, 0x61, 0xff}}},\n    {{{   161,   -152,   -190}, 0, {  -470,    784}, {0x71, 0xdf, 0xd3, 0xff}}},\n    {{{   161,   -152,   -190}, 0, {    -2,    774}, {0x71, 0xdf, 0xd3, 0xff}}},\n    {{{   174,    183,    177}, 0, {   916,    104}, {0x01, 0x3e, 0x6e, 0xff}}},\n    {{{   158,   -143,    201}, 0, {   974,    756}, {0x38, 0xc6, 0x61, 0xff}}},\n    {{{   180,    257,      2}, 0, {   478,    -46}, {0x46, 0x69, 0x00, 0xff}}},\n    {{{   177,    182,   -171}, 0, {    44,    104}, {0xc9, 0x39, 0x9d, 0xff}}},\n    {{{   154,   -260,      3}, 0, {   480,    990}, {0xe9, 0x84, 0x01, 0xff}}},\n};\n\n// 0x0601FE10 - 0x0601FEA8\nconst Gfx whomp_seg6_dl_0601FE10[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, whomp_seg6_texture_0601EB60),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&whomp_seg6_lights_0601FD18.l, 1),\n    gsSPLight(&whomp_seg6_lights_0601FD18.a, 2),\n    gsSPVertex(whomp_seg6_vertex_0601FD30, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  4,  3,  2, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  3,  6,  0, 0x0),\n    gsSP2Triangles( 3,  7,  5, 0x0,  4,  7,  3, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles( 8, 12, 11, 0x0,  8, 10, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0601FEA8 - 0x0601FF08\nconst Gfx whomp_seg6_dl_0601FEA8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(whomp_seg6_dl_0601FE10),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0601FF08\nstatic const Lights1 whomp_seg6_lights_0601FF08 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0601FF20\nstatic const Vtx whomp_seg6_vertex_0601FF20[] = {\n    {{{   154,   -260,     -2}, 0, {   470,    998}, {0x6e, 0xc3, 0xff, 0xff}}},\n    {{{   174,    183,   -176}, 0, {  -110,    114}, {0x01, 0x3e, 0x92, 0xff}}},\n    {{{   180,    257,     -1}, 0, {   472,    -34}, {0x46, 0x69, 0x00, 0xff}}},\n    {{{   158,   -143,   -200}, 0, {  -188,    768}, {0xdf, 0xc4, 0x96, 0xff}}},\n    {{{    22,    158,     -1}, 0, {   472,    162}, {0x9b, 0x4c, 0x01, 0xff}}},\n    {{{   -28,    -89,     -1}, 0, {   472,    658}, {0x84, 0xe7, 0x00, 0xff}}},\n    {{{   177,    182,    172}, 0, {  1050,    116}, {0x03, 0x3d, 0x6f, 0xff}}},\n    {{{   161,   -152,    191}, 0, {  1112,    784}, {0xe1, 0xc2, 0x6a, 0xff}}},\n};\n\n// 0x0601FFA0 - 0x06020038\nconst Gfx whomp_seg6_dl_0601FFA0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, whomp_seg6_texture_0601EB60),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&whomp_seg6_lights_0601FF08.l, 1),\n    gsSPLight(&whomp_seg6_lights_0601FF08.a, 2),\n    gsSPVertex(whomp_seg6_vertex_0601FF20, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  2,  1, 0x0,  1,  5,  4, 0x0),\n    gsSP2Triangles( 1,  3,  5, 0x0,  5,  3,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  0,  7,  5, 0x0),\n    gsSP2Triangles( 5,  7,  6, 0x0,  6,  2,  4, 0x0),\n    gsSP2Triangles( 0,  2,  6, 0x0,  0,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x06020038 - 0x06020098\nconst Gfx whomp_seg6_dl_06020038[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(whomp_seg6_dl_0601FFA0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/wiggler_body/anims/anim_0500C760.inc.c",
    "content": "// 0x0500C2F0\nstatic const s16 wiggler_seg5_animvalue_0500C2F0[] = {\n    0x0000, 0x007D, 0x007D, 0x007D, 0x007C, 0x007C, 0x007B, 0x0079,\n    0x0078, 0x0078, 0x007A, 0x007B, 0x007D, 0x007D, 0x007D, 0x007C,\n    0x007B, 0x007A, 0x0079, 0x0078, 0x0078, 0x0078, 0x0079, 0x007A,\n    0x007C, 0x007D, 0x007D, 0x3FFF, 0x0003, 0x0005, 0x0009, 0x0010,\n    0x0017, 0x001D, 0x0021, 0x0023, 0x0022, 0x001D, 0x0016, 0x000E,\n    0x0003, 0xFFF3, 0xFFDB, 0xFFC7, 0xFFBF, 0xFFD5, 0x000B, 0x007B,\n    0x00CC, 0x00BF, 0x0099, 0x006A, 0x0041, 0x0030, 0xFE0A, 0xFE0A,\n    0xFE0B, 0xFE0C, 0xFE0D, 0xFE0E, 0xFE0F, 0xFE0F, 0xFE0E, 0xFE0D,\n    0xFE0C, 0xFE0A, 0xFE0A, 0xFE0A, 0xFE0A, 0xFE0C, 0xFE0E, 0xFE12,\n    0xFE19, 0xFE2B, 0xFE37, 0xFE31, 0xFE26, 0xFE1A, 0xFE10, 0xFE0C,\n    0x0000, 0xFFDB, 0xFF7A, 0xFEF6, 0xFE66, 0xFDE1, 0xFD80, 0xFD5B,\n    0xFD7B, 0xFDD7, 0xFE67, 0xFF22, 0x0000, 0x0177, 0x0374, 0x0525,\n    0x05B5, 0x0365, 0xFE5F, 0xF54E, 0xEEF0, 0xF025, 0xF371, 0xF77A,\n    0xFAE4, 0xFC55, 0x0006, 0x000D, 0x0020, 0x003A, 0x0056, 0x006F,\n    0x0082, 0x008A, 0x006F, 0x0036, 0xFFFD, 0xFFE2, 0x0006, 0x009B,\n    0x018A, 0x0289, 0x034C, 0x03B2, 0x0349, 0x00FF, 0xFF03, 0xFED2,\n    0xFF09, 0xFF72, 0xFFD9, 0x0006, 0x26B0, 0x2704, 0x27D7, 0x28EF,\n    0x2A14, 0x2B0A, 0x2B97, 0x2B82, 0x2A72, 0x2877, 0x25F7, 0x2357,\n    0x20FC, 0x1E8D, 0x1BE4, 0x19B5, 0x18B4, 0x1C0E, 0x1FDF, 0x1DB8,\n    0x1BAF, 0x1D73, 0x2042, 0x2348, 0x25B3, 0x26B0, 0x0025, 0x0029,\n    0x0032, 0x003F, 0x004C, 0x0059, 0x0062, 0x0066, 0x0062, 0x0057,\n    0x0047, 0x0035, 0x0024, 0x000C, 0xFFEF, 0xFFD7, 0xFFD4, 0x001B,\n    0x0065, 0x0040, 0x000F, 0x000B, 0x0010, 0x0019, 0x0021, 0x0025,\n    0x0000, 0xFFF2, 0xFFCB, 0xFF95, 0xFF5A, 0xFF23, 0xFEF8, 0xFEE2,\n    0xFEFF, 0xFF4B, 0xFF9C, 0xFFC7, 0xFFA3, 0xFEF3, 0xFDD5, 0xFCA4,\n    0xFBBA, 0xFB37, 0xFBB7, 0xFEA6, 0x0133, 0x0177, 0x0138, 0x00B7,\n    0x0039, 0x0000, 0xDC59, 0xDBF6, 0xDAFC, 0xD9AC, 0xD84A, 0xD718,\n    0xD65B, 0xD654, 0xD765, 0xD977, 0xDC1C, 0xDEE2, 0xE15B, 0xE3E9,\n    0xE6B4, 0xE8F6, 0xE9EB, 0xE607, 0xE1A5, 0xE3DA, 0xE627, 0xE4A6,\n    0xE228, 0xDF6F, 0xDD3F, 0xDC59, 0xEE8A, 0xED0C, 0xE903, 0xE315,\n    0xDBE6, 0xD41F, 0xCC65, 0xC55D, 0xBDBD, 0xB4C9, 0xAC02, 0xA4E9,\n    0xA0FF, 0xA201, 0xA72C, 0xAE3E, 0xB4F8, 0xBC27, 0xC3D1, 0xCA1C,\n    0xD011, 0xD724, 0xDF2F, 0xE6BE, 0xEC58, 0xEE8A, 0x0000, 0xFFE6,\n    0xFFAE, 0xFF7C, 0xFF71, 0x0069, 0x0168, 0x024C, 0x02A1, 0x02AF,\n    0x029A, 0x026D, 0x023B, 0x0206, 0x01D0, 0x0198, 0x0161, 0x012B,\n    0x00F8, 0x00CA, 0x009C, 0x006E, 0x0043, 0x0020, 0x0008, 0x0000,\n    0xFF04, 0xFEEC, 0xFEA6, 0xFE3A, 0xFDAD, 0xFC00, 0xFA99, 0xF95D,\n    0xF8B6, 0xF8C7, 0xF91C, 0xF996, 0xFA19, 0xFAA2, 0xFB2F, 0xFBBB,\n    0xFC45, 0xFCC8, 0xFD41, 0xFDAD, 0xFE0D, 0xFE60, 0xFEA4, 0xFED8,\n    0xFEF9, 0xFF04, 0x0000, 0x0119, 0x0380, 0x05DD, 0x06D6, 0xFF29,\n    0xF7A2, 0xF0E7, 0xEE00, 0xED98, 0xEE4B, 0xEFB9, 0xF150, 0xF303,\n    0xF4C5, 0xF68A, 0xF843, 0xF9E5, 0xFB62, 0xFCAD, 0xFDBE, 0xFE97,\n    0xFF3A, 0xFFAA, 0xFFEB, 0x0000, 0xFDAA, 0xFDD6, 0xFE2B, 0xFE69,\n    0xFE4B, 0xFDB5, 0xFCD4, 0xFBD4, 0xFAE2, 0xFA2C, 0xF9DF, 0xFC51,\n    0xFDF9, 0xFBC2, 0xF8A5, 0xF515, 0xF186, 0xEE6A, 0xEC35, 0xEB5B,\n    0xECB2, 0xF015, 0xF47E, 0xF8E9, 0xFC4E, 0xFDAA, 0xE24A, 0xE3B7,\n    0xE6EB, 0xEA4C, 0xEC3F, 0xEC8F, 0xEC3E, 0xEB88, 0xEAA7, 0xE9D8,\n    0xE956, 0xEA52, 0xEA05, 0xE68C, 0xE227, 0xDD55, 0xD895, 0xD467,\n    0xD14A, 0xCFBF, 0xD0B5, 0xD406, 0xD892, 0xDD38, 0xE0D5, 0xE24A,\n    0x044E, 0x03ED, 0x0315, 0x0237, 0x01C5, 0x01CB, 0x0200, 0x0254,\n    0x02B7, 0x0318, 0x0367, 0x0320, 0x03CB, 0x066A, 0x09B9, 0x0D53,\n    0x10D2, 0x13D1, 0x15EC, 0x16BC, 0x1566, 0x11FE, 0x0D8D, 0x091A,\n    0x05AD, 0x044E, 0x09EE, 0x09F6, 0x0A10, 0x0A41, 0x0A8C, 0x0B03,\n    0x0BA4, 0x0C4F, 0x0CE9, 0x0D52, 0x0D6F, 0x0B60, 0x09EE, 0x0B8E,\n    0x0DE1, 0x108E, 0x133C, 0x1594, 0x173D, 0x17DF, 0x16D6, 0x1441,\n    0x10E6, 0x0D8C, 0x0AF7, 0x09EE, 0x177B, 0x177C, 0x1781, 0x1787,\n    0x178F, 0x1799, 0x17A8, 0x17B6, 0x17C4, 0x17CC, 0x17CE, 0x16E8,\n    0x177B, 0x1B1D, 0x1FC4, 0x24DC, 0x29D3, 0x2E15, 0x310F, 0x322E,\n    0x3034, 0x2B42, 0x24D4, 0x1E67, 0x1975, 0x177B, 0xC861, 0xCAC0,\n    0xD0B0, 0xD86A, 0xE029, 0xE7C5, 0xF005, 0xF88A, 0x00F6, 0x08EC,\n    0x100D, 0x14B1, 0x14E6, 0x1284, 0x0FDF, 0x0CDF, 0x096D, 0x0573,\n    0x00DA, 0xFB8B, 0xF3FA, 0xE9D9, 0xDEE9, 0xD4EC, 0xCDA4, 0xCAD3,\n    0x9BBC, 0x8001, 0x8001, 0x3F6C, 0x3FFF, 0x0000,\n};\n\n// 0x0500C6DC\nstatic const u16 wiggler_seg5_animindex_0500C6DC[] = {\n    0x0001, 0x0000, 0x001A, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x001B, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01F4,\n    0x0001, 0x01F1, 0x0001, 0x01F2, 0x0001, 0x01F3,\n    0x001A, 0x00B8, 0x001A, 0x00D2, 0x001A, 0x00EC,\n    0x001A, 0x006A, 0x001A, 0x0084, 0x001A, 0x009E,\n    0x001A, 0x001C, 0x001A, 0x0036, 0x001A, 0x0050,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01F0,\n    0x001A, 0x01A2, 0x001A, 0x01BC, 0x001A, 0x01D6,\n    0x001A, 0x0154, 0x001A, 0x016E, 0x001A, 0x0188,\n    0x001A, 0x0106, 0x001A, 0x0120, 0x001A, 0x013A,\n};\n\n// 0x0500C760\nstatic const struct Animation wiggler_seg5_anim_0500C760 = {\n    0,\n    0,\n    0,\n    0,\n    0x1A,\n    ANIMINDEX_NUMPARTS(wiggler_seg5_animindex_0500C6DC),\n    wiggler_seg5_animvalue_0500C2F0,\n    wiggler_seg5_animindex_0500C6DC,\n    0,\n};\n"
  },
  {
    "path": "actors/wiggler_body/anims/data.inc.c",
    "content": "#include \"anim_0500C760.inc.c\"\n"
  },
  {
    "path": "actors/wiggler_body/anims/table.inc.c",
    "content": "// 0x0500C874\nconst struct Animation *const wiggler_seg5_anims_0500C874[] = {\n    &wiggler_seg5_anim_0500C760,\n};\n"
  },
  {
    "path": "actors/wiggler_body/geo.inc.c",
    "content": "// 0x0500C778\nconst GeoLayout wiggler_body_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 0x64),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(1, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(1, 0, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_BILLBOARD(),\n                    GEO_OPEN_NODE(),\n                        GEO_DISPLAY_LIST(LAYER_ALPHA, wiggler_seg5_dl_0500C278),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(1, -31, 0, 51, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(1, 0, 0, 0, wiggler_seg5_dl_0500BE98),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(1, 39, 0, 0, wiggler_seg5_dl_0500BE10),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(1, 41, 0, 0, wiggler_seg5_dl_0500BCB8),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(1, -31, 0, -49, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(1, 0, 0, 0, wiggler_seg5_dl_0500C100),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(1, 39, 0, 0, wiggler_seg5_dl_0500C078),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(1, 41, 0, 0, wiggler_seg5_dl_0500BF20),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/wiggler_body/model.inc.c",
    "content": "// Wiggler Body\n\n// 0x05005A30\nALIGNED8 static const Texture wiggler_seg5_texture_05005A30[] = {\n#include \"actors/wiggler/wiggler_segment_left_side.rgba16.inc.c\"\n};\n\n// 0x05006A30\nALIGNED8 static const Texture wiggler_seg5_texture_05006A30[] = {\n#include \"actors/wiggler/wiggler_segment_right_side.rgba16.inc.c\"\n};\n\n// 0x05007A30\nALIGNED8 static const Texture wiggler_seg5_texture_05007A30[] = {\n#include \"actors/wiggler/wiggler_eye.rgba16.inc.c\"\n};\n\n// 0x05008230\nALIGNED8 static const Texture wiggler_seg5_texture_05008230[] = {\n#include \"actors/wiggler/wiggler_flower.rgba16.inc.c\"\n};\n\n// 0x05008A30\nALIGNED8 static const Texture wiggler_seg5_texture_05008A30[] = {\n#include \"actors/wiggler/wiggler_frown.rgba16.inc.c\"\n};\n\n// 0x05009230\nALIGNED8 static const Texture wiggler_seg5_texture_05009230[] = {\n#include \"actors/wiggler/wiggler_nose_left_side.rgba16.inc.c\"\n};\n\n// 0x0500A230\nALIGNED8 static const Texture wiggler_seg5_texture_0500A230[] = {\n#include \"actors/wiggler/wiggler_nose_right_side.rgba16.inc.c\"\n};\n\n// 0x0500B230\nstatic const Lights1 wiggler_seg5_lights_0500B230 = gdSPDefLights1(\n    0x37, 0x00, 0x00,\n    0xdf, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x0500B248\nstatic const Lights1 wiggler_seg5_lights_0500B248 = gdSPDefLights1(\n    0x39, 0x11, 0x00,\n    0xe7, 0x47, 0x00, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 wiggler_body_lights_unused = gdSPDefLights1(\n    0x3a, 0x22, 0x05,\n    0xea, 0x8b, 0x16, 0x28, 0x28, 0x28\n);\n\n// 0x0500B278\nstatic const Vtx wiggler_seg5_vertex_0500B278[] = {\n    {{{    19,      5,    -31}, 0, {     0,      0}, {0x40, 0x2b, 0x9d, 0x00}}},\n    {{{    20,    -37,    -43}, 0, {     0,      0}, {0x48, 0xeb, 0x9a, 0x00}}},\n    {{{    -5,    -36,    -43}, 0, {     0,      0}, {0xbd, 0xe4, 0x99, 0x00}}},\n    {{{    -2,      5,    -31}, 0, {     0,      0}, {0xca, 0x32, 0x9a, 0xff}}},\n    {{{    20,    -66,    -21}, 0, {     0,      0}, {0x42, 0xa1, 0xce, 0xff}}},\n    {{{    20,    -66,     21}, 0, {     0,      0}, {0x42, 0xa1, 0x32, 0xff}}},\n    {{{     0,    -59,     21}, 0, {     0,      0}, {0xb7, 0xa1, 0x27, 0xff}}},\n    {{{     0,    -59,    -21}, 0, {     0,      0}, {0xb7, 0xa1, 0xd9, 0xff}}},\n    {{{    20,    -37,     43}, 0, {     0,      0}, {0x48, 0xeb, 0x66, 0xff}}},\n    {{{    19,      5,     31}, 0, {     0,      0}, {0x40, 0x2b, 0x63, 0xff}}},\n    {{{    -2,      5,     31}, 0, {     0,      0}, {0xca, 0x32, 0x66, 0xff}}},\n    {{{    -5,    -36,     43}, 0, {     0,      0}, {0xbd, 0xe4, 0x67, 0xff}}},\n    {{{    18,     34,     15}, 0, {     0,      0}, {0x41, 0x5b, 0x3a, 0xff}}},\n    {{{    18,     34,    -15}, 0, {     0,      0}, {0x41, 0x5b, 0xc6, 0xff}}},\n    {{{     0,     28,    -15}, 0, {     0,      0}, {0xba, 0x5b, 0xcc, 0xff}}},\n    {{{     0,     28,     15}, 0, {     0,      0}, {0xba, 0x5b, 0x34, 0xff}}},\n};\n\n// 0x0500B378\nstatic const Vtx wiggler_seg5_vertex_0500B378[] = {\n    {{{     0,    -59,     21}, 0, {     0,      0}, {0xb7, 0xa1, 0x27, 0xff}}},\n    {{{    -5,    -36,     43}, 0, {     0,      0}, {0xbd, 0xe4, 0x67, 0x00}}},\n    {{{   -17,    -33,     21}, 0, {     0,      0}, {0x89, 0xe3, 0x1f, 0x00}}},\n    {{{    -2,      5,     31}, 0, {     0,      0}, {0xca, 0x32, 0x66, 0xff}}},\n    {{{     0,     28,     15}, 0, {     0,      0}, {0xba, 0x5b, 0x34, 0xff}}},\n    {{{   -15,      5,     15}, 0, {     0,      0}, {0x8f, 0x2a, 0x26, 0xff}}},\n    {{{   -15,      5,    -15}, 0, {     0,      0}, {0x8f, 0x2a, 0xda, 0xff}}},\n    {{{   -17,    -33,    -21}, 0, {     0,      0}, {0x89, 0xe3, 0xe1, 0xff}}},\n    {{{    -2,      5,    -31}, 0, {     0,      0}, {0xca, 0x32, 0x9a, 0xff}}},\n    {{{    -5,    -36,    -43}, 0, {     0,      0}, {0xbd, 0xe4, 0x99, 0xff}}},\n    {{{     0,     28,    -15}, 0, {     0,      0}, {0xba, 0x5b, 0xcc, 0xff}}},\n    {{{    18,     34,    -15}, 0, {     0,      0}, {0x41, 0x5b, 0xc6, 0xff}}},\n    {{{    19,      5,    -31}, 0, {     0,      0}, {0x40, 0x2b, 0x9d, 0xff}}},\n    {{{     0,    -59,    -21}, 0, {     0,      0}, {0xb7, 0xa1, 0xd9, 0xff}}},\n    {{{    20,    -66,    -21}, 0, {     0,      0}, {0x42, 0xa1, 0xce, 0xff}}},\n    {{{    20,    -37,    -43}, 0, {     0,      0}, {0x48, 0xeb, 0x9a, 0xff}}},\n};\n\n// 0x0500B478\nstatic const Vtx wiggler_seg5_vertex_0500B478[] = {\n    {{{    20,    -37,     43}, 0, {     0,      0}, {0x48, 0xeb, 0x66, 0xff}}},\n    {{{    -5,    -36,     43}, 0, {     0,      0}, {0xbd, 0xe4, 0x67, 0x00}}},\n    {{{     0,    -59,     21}, 0, {     0,      0}, {0xb7, 0xa1, 0x27, 0x00}}},\n    {{{    20,    -66,     21}, 0, {     0,      0}, {0x42, 0xa1, 0x32, 0xff}}},\n    {{{   -15,      5,     15}, 0, {     0,      0}, {0x8f, 0x2a, 0x26, 0xff}}},\n    {{{   -17,    -33,     21}, 0, {     0,      0}, {0x89, 0xe3, 0x1f, 0xff}}},\n    {{{    -2,      5,     31}, 0, {     0,      0}, {0xca, 0x32, 0x66, 0xff}}},\n    {{{    18,     34,     15}, 0, {     0,      0}, {0x41, 0x5b, 0x3a, 0xff}}},\n    {{{    19,      5,     31}, 0, {     0,      0}, {0x40, 0x2b, 0x63, 0xff}}},\n    {{{     0,     28,     15}, 0, {     0,      0}, {0xba, 0x5b, 0x34, 0xff}}},\n    {{{    20,    -66,    -21}, 0, {     0,      0}, {0x7f, 0x02, 0x00, 0xff}}},\n    {{{    20,    -37,    -43}, 0, {     0,      0}, {0x3d, 0xed, 0x93, 0xff}}},\n    {{{    19,      5,    -31}, 0, {     0,      0}, {0x1b, 0x32, 0x8f, 0xff}}},\n    {{{    18,     34,    -15}, 0, {     0,      0}, {0x7f, 0x02, 0x00, 0xff}}},\n    {{{    18,     34,     15}, 0, {     0,      0}, {0x06, 0x6e, 0x3e, 0xff}}},\n    {{{    19,      5,     31}, 0, {     0,      0}, {0x39, 0x2b, 0x68, 0xff}}},\n};\n\n// 0x0500B578\nstatic const Vtx wiggler_seg5_vertex_0500B578[] = {\n    {{{    20,    -66,    -21}, 0, {     0,      0}, {0x7f, 0x02, 0x00, 0xff}}},\n    {{{    19,      5,     31}, 0, {     0,      0}, {0x39, 0x2b, 0x68, 0x00}}},\n    {{{    20,    -37,     43}, 0, {     0,      0}, {0x1b, 0xe7, 0x79, 0x00}}},\n    {{{    20,    -66,     21}, 0, {     0,      0}, {0x7f, 0x02, 0x00, 0xff}}},\n};\n\n// 0x0500B5B8\nstatic const Vtx wiggler_seg5_vertex_0500B5B8[] = {\n    {{{    53,     -2,    -13}, 0, {     0,      0}, {0x00, 0xd8, 0x88, 0x00}}},\n    {{{    53,    -11,      0}, 0, {     0,      0}, {0x01, 0x81, 0x01, 0x00}}},\n    {{{    -3,    -12,      0}, 0, {     0,      0}, {0x01, 0x81, 0x01, 0x00}}},\n    {{{    -3,     -2,    -13}, 0, {     0,      0}, {0x00, 0xd8, 0x88, 0xff}}},\n    {{{    53,     -1,     13}, 0, {     0,      0}, {0x00, 0xda, 0x79, 0xff}}},\n    {{{    53,     13,      8}, 0, {     0,      0}, {0xff, 0x67, 0x49, 0xff}}},\n    {{{    -4,     13,      8}, 0, {     0,      0}, {0xff, 0x67, 0x49, 0xff}}},\n    {{{    -3,     -2,     13}, 0, {     0,      0}, {0x00, 0xda, 0x79, 0xff}}},\n    {{{    53,     13,     -8}, 0, {     0,      0}, {0xff, 0x66, 0xb5, 0xff}}},\n    {{{    -4,     13,     -8}, 0, {     0,      0}, {0xff, 0x66, 0xb5, 0xff}}},\n    {{{    -3,    -12,      0}, 0, {     0,      0}, {0xd3, 0x8d, 0xe6, 0xff}}},\n    {{{    -3,     -2,     13}, 0, {     0,      0}, {0x81, 0xff, 0x00, 0xff}}},\n    {{{    -4,     13,      8}, 0, {     0,      0}, {0x81, 0xff, 0x00, 0xff}}},\n    {{{    -4,     13,     -8}, 0, {     0,      0}, {0xd0, 0x6c, 0xd3, 0xff}}},\n    {{{    -3,     -2,    -13}, 0, {     0,      0}, {0xd2, 0xf6, 0x8b, 0xff}}},\n};\n\n// 0x0500B6A8\nstatic const Vtx wiggler_seg5_vertex_0500B6A8[] = {\n    {{{    42,     -2,    -13}, 0, {     0,      0}, {0x00, 0xd8, 0x88, 0x00}}},\n    {{{    42,    -12,      0}, 0, {     0,      0}, {0x00, 0x81, 0x01, 0x00}}},\n    {{{    -6,    -12,      0}, 0, {     0,      0}, {0x00, 0x81, 0x01, 0x00}}},\n    {{{    -6,     -2,    -13}, 0, {     0,      0}, {0x00, 0xd8, 0x88, 0xff}}},\n    {{{    42,     -2,     13}, 0, {     0,      0}, {0x00, 0xda, 0x79, 0xff}}},\n    {{{    42,     13,      8}, 0, {     0,      0}, {0x00, 0x67, 0x49, 0xff}}},\n    {{{    -6,     13,      8}, 0, {     0,      0}, {0x00, 0x67, 0x49, 0xff}}},\n    {{{    -6,     -2,     13}, 0, {     0,      0}, {0x00, 0xda, 0x79, 0xff}}},\n    {{{    42,     13,     -8}, 0, {     0,      0}, {0x00, 0x66, 0xb5, 0xff}}},\n    {{{    -6,     13,     -8}, 0, {     0,      0}, {0x00, 0x66, 0xb5, 0xff}}},\n    {{{    42,    -12,      0}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    42,     -2,    -13}, 0, {     0,      0}, {0x2f, 0xc2, 0x9d, 0xff}}},\n    {{{    42,     13,     -8}, 0, {     0,      0}, {0x2f, 0x4b, 0xa6, 0xff}}},\n    {{{    42,     13,      8}, 0, {     0,      0}, {0x2f, 0x6d, 0x2c, 0xff}}},\n    {{{    42,     -2,     13}, 0, {     0,      0}, {0x2f, 0xf8, 0x75, 0xff}}},\n};\n\n// 0x0500B798\nstatic const Vtx wiggler_seg5_vertex_0500B798[] = {\n    {{{    -2,      5,     31}, 0, {     0,      0}, {0xca, 0x32, 0x66, 0x00}}},\n    {{{    -5,    -36,     43}, 0, {     0,      0}, {0xbd, 0xe4, 0x67, 0x00}}},\n    {{{    20,    -37,     43}, 0, {     0,      0}, {0x48, 0xeb, 0x66, 0x00}}},\n    {{{    19,      5,     31}, 0, {     0,      0}, {0x40, 0x2b, 0x63, 0xff}}},\n    {{{     0,    -59,     21}, 0, {     0,      0}, {0xb7, 0xa1, 0x27, 0xff}}},\n    {{{     0,    -59,    -21}, 0, {     0,      0}, {0xb7, 0xa1, 0xd9, 0xff}}},\n    {{{    20,    -66,    -21}, 0, {     0,      0}, {0x42, 0xa1, 0xce, 0xff}}},\n    {{{    20,    -66,     21}, 0, {     0,      0}, {0x42, 0xa1, 0x32, 0xff}}},\n    {{{    -5,    -36,    -43}, 0, {     0,      0}, {0xbd, 0xe4, 0x99, 0xff}}},\n    {{{    -2,      5,    -31}, 0, {     0,      0}, {0xca, 0x32, 0x9a, 0xff}}},\n    {{{    19,      5,    -31}, 0, {     0,      0}, {0x40, 0x2b, 0x9d, 0xff}}},\n    {{{    20,    -37,    -43}, 0, {     0,      0}, {0x48, 0xeb, 0x9a, 0xff}}},\n    {{{     0,     28,    -15}, 0, {     0,      0}, {0xba, 0x5b, 0xcc, 0xff}}},\n    {{{     0,     28,     15}, 0, {     0,      0}, {0xba, 0x5b, 0x34, 0xff}}},\n    {{{    18,     34,     15}, 0, {     0,      0}, {0x41, 0x5b, 0x3a, 0xff}}},\n    {{{    18,     34,    -15}, 0, {     0,      0}, {0x41, 0x5b, 0xc6, 0xff}}},\n};\n\n// 0x0500B898\nstatic const Vtx wiggler_seg5_vertex_0500B898[] = {\n    {{{   -17,    -33,    -21}, 0, {     0,      0}, {0x89, 0xe3, 0xe1, 0xff}}},\n    {{{    -5,    -36,    -43}, 0, {     0,      0}, {0xbd, 0xe4, 0x99, 0x00}}},\n    {{{     0,    -59,    -21}, 0, {     0,      0}, {0xb7, 0xa1, 0xd9, 0x00}}},\n    {{{   -15,      5,    -15}, 0, {     0,      0}, {0x8f, 0x2a, 0xda, 0xff}}},\n    {{{     0,     28,    -15}, 0, {     0,      0}, {0xba, 0x5b, 0xcc, 0xff}}},\n    {{{    -2,      5,    -31}, 0, {     0,      0}, {0xca, 0x32, 0x9a, 0xff}}},\n    {{{   -17,    -33,     21}, 0, {     0,      0}, {0x89, 0xe3, 0x1f, 0xff}}},\n    {{{   -15,      5,     15}, 0, {     0,      0}, {0x8f, 0x2a, 0x26, 0xff}}},\n    {{{    -5,    -36,     43}, 0, {     0,      0}, {0xbd, 0xe4, 0x67, 0xff}}},\n    {{{    -2,      5,     31}, 0, {     0,      0}, {0xca, 0x32, 0x66, 0xff}}},\n    {{{    19,      5,     31}, 0, {     0,      0}, {0x40, 0x2b, 0x63, 0xff}}},\n    {{{    18,     34,     15}, 0, {     0,      0}, {0x41, 0x5b, 0x3a, 0xff}}},\n    {{{     0,     28,     15}, 0, {     0,      0}, {0xba, 0x5b, 0x34, 0xff}}},\n    {{{     0,    -59,     21}, 0, {     0,      0}, {0xb7, 0xa1, 0x27, 0xff}}},\n    {{{    20,    -37,     43}, 0, {     0,      0}, {0x48, 0xeb, 0x66, 0xff}}},\n    {{{    20,    -66,     21}, 0, {     0,      0}, {0x42, 0xa1, 0x32, 0xff}}},\n};\n\n// 0x0500B998\nstatic const Vtx wiggler_seg5_vertex_0500B998[] = {\n    {{{    20,    -66,    -21}, 0, {     0,      0}, {0x42, 0xa1, 0xce, 0xff}}},\n    {{{     0,    -59,    -21}, 0, {     0,      0}, {0xb7, 0xa1, 0xd9, 0x00}}},\n    {{{    -5,    -36,    -43}, 0, {     0,      0}, {0xbd, 0xe4, 0x99, 0x00}}},\n    {{{    20,    -37,    -43}, 0, {     0,      0}, {0x48, 0xeb, 0x9a, 0xff}}},\n    {{{    -2,      5,    -31}, 0, {     0,      0}, {0xca, 0x32, 0x9a, 0xff}}},\n    {{{   -17,    -33,    -21}, 0, {     0,      0}, {0x89, 0xe3, 0xe1, 0xff}}},\n    {{{   -15,      5,    -15}, 0, {     0,      0}, {0x8f, 0x2a, 0xda, 0xff}}},\n    {{{    19,      5,    -31}, 0, {     0,      0}, {0x40, 0x2b, 0x9d, 0xff}}},\n    {{{     0,     28,    -15}, 0, {     0,      0}, {0xba, 0x5b, 0xcc, 0xff}}},\n    {{{    18,     34,    -15}, 0, {     0,      0}, {0x41, 0x5b, 0xc6, 0xff}}},\n    {{{    20,    -66,    -21}, 0, {     0,      0}, {0x7f, 0x02, 0x00, 0xff}}},\n    {{{    20,    -37,    -43}, 0, {     0,      0}, {0x3d, 0xed, 0x93, 0xff}}},\n    {{{    19,      5,    -31}, 0, {     0,      0}, {0x1b, 0x32, 0x8f, 0xff}}},\n    {{{    18,     34,    -15}, 0, {     0,      0}, {0x7f, 0x02, 0x00, 0xff}}},\n    {{{    18,     34,     15}, 0, {     0,      0}, {0x06, 0x6e, 0x3e, 0xff}}},\n    {{{    19,      5,     31}, 0, {     0,      0}, {0x39, 0x2b, 0x68, 0xff}}},\n};\n\n// 0x0500BA98\nstatic const Vtx wiggler_seg5_vertex_0500BA98[] = {\n    {{{    20,    -66,    -21}, 0, {     0,      0}, {0x7f, 0x02, 0x00, 0xff}}},\n    {{{    19,      5,     31}, 0, {     0,      0}, {0x39, 0x2b, 0x68, 0x00}}},\n    {{{    20,    -37,     43}, 0, {     0,      0}, {0x1b, 0xe7, 0x79, 0x00}}},\n    {{{    20,    -66,     21}, 0, {     0,      0}, {0x7f, 0x02, 0x00, 0xff}}},\n};\n\n// 0x0500BAD8\nstatic const Vtx wiggler_seg5_vertex_0500BAD8[] = {\n    {{{    -3,     -2,     13}, 0, {     0,      0}, {0x00, 0xd8, 0x78, 0x00}}},\n    {{{    -3,    -12,      0}, 0, {     0,      0}, {0x01, 0x81, 0xff, 0x00}}},\n    {{{    53,    -11,      0}, 0, {     0,      0}, {0x01, 0x81, 0xff, 0x00}}},\n    {{{    53,     -2,     13}, 0, {     0,      0}, {0x00, 0xd8, 0x78, 0xff}}},\n    {{{    -3,     -2,    -13}, 0, {     0,      0}, {0x00, 0xda, 0x87, 0xff}}},\n    {{{    -4,     13,     -8}, 0, {     0,      0}, {0xff, 0x67, 0xb7, 0xff}}},\n    {{{    53,     13,     -8}, 0, {     0,      0}, {0xff, 0x67, 0xb7, 0xff}}},\n    {{{    53,     -1,    -13}, 0, {     0,      0}, {0x00, 0xda, 0x87, 0xff}}},\n    {{{    -4,     13,      8}, 0, {     0,      0}, {0xff, 0x66, 0x4b, 0xff}}},\n    {{{    53,     13,      8}, 0, {     0,      0}, {0xff, 0x66, 0x4b, 0xff}}},\n    {{{    -4,     13,      8}, 0, {     0,      0}, {0xd0, 0x4b, 0x5a, 0xff}}},\n    {{{    -4,     13,     -8}, 0, {     0,      0}, {0xd0, 0x6c, 0xd5, 0xff}}},\n    {{{    -3,     -2,    -13}, 0, {     0,      0}, {0x81, 0xff, 0x00, 0xff}}},\n    {{{    -3,    -12,      0}, 0, {     0,      0}, {0x81, 0xff, 0x00, 0xff}}},\n    {{{    -3,     -2,     13}, 0, {     0,      0}, {0xd2, 0xc1, 0x63, 0xff}}},\n};\n\n// 0x0500BBC8\nstatic const Vtx wiggler_seg5_vertex_0500BBC8[] = {\n    {{{    -6,     -2,     13}, 0, {     0,      0}, {0x00, 0xd8, 0x78, 0x00}}},\n    {{{    -6,    -12,      0}, 0, {     0,      0}, {0x00, 0x81, 0xff, 0x00}}},\n    {{{    42,    -12,      0}, 0, {     0,      0}, {0x00, 0x81, 0xff, 0x00}}},\n    {{{    42,     -2,     13}, 0, {     0,      0}, {0x00, 0xd8, 0x78, 0xff}}},\n    {{{    -6,     -2,    -13}, 0, {     0,      0}, {0x00, 0xda, 0x87, 0xff}}},\n    {{{    -6,     13,     -8}, 0, {     0,      0}, {0x00, 0x67, 0xb7, 0xff}}},\n    {{{    42,     13,     -8}, 0, {     0,      0}, {0x00, 0x67, 0xb7, 0xff}}},\n    {{{    42,     -2,    -13}, 0, {     0,      0}, {0x00, 0xda, 0x87, 0xff}}},\n    {{{    -6,     13,      8}, 0, {     0,      0}, {0x00, 0x66, 0x4b, 0xff}}},\n    {{{    42,     13,      8}, 0, {     0,      0}, {0x00, 0x66, 0x4b, 0xff}}},\n    {{{    42,     13,     -8}, 0, {     0,      0}, {0x2e, 0x4d, 0xa7, 0xff}}},\n    {{{    42,     13,      8}, 0, {     0,      0}, {0x2f, 0x6c, 0x2d, 0xff}}},\n    {{{    42,     -2,     13}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    42,    -12,      0}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    42,     -2,    -13}, 0, {     0,      0}, {0x2f, 0xc4, 0x9c, 0xff}}},\n};\n\n// 0x0500BCB8 - 0x0500BE10\nconst Gfx wiggler_seg5_dl_0500BCB8[] = {\n    gsSPLight(&wiggler_seg5_lights_0500B230.l, 1),\n    gsSPLight(&wiggler_seg5_lights_0500B230.a, 2),\n    gsSPVertex(wiggler_seg5_vertex_0500B278, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(wiggler_seg5_vertex_0500B378, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  2, 0x0,  6,  2,  5, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12,  8, 0x0),\n    gsSP2Triangles( 9, 13,  7, 0x0, 10,  8,  6, 0x0),\n    gsSP2Triangles(14, 13,  9, 0x0, 14,  9, 15, 0x0),\n    gsSP2Triangles( 2,  7, 13, 0x0,  2, 13,  0, 0x0),\n    gsSP2Triangles( 6,  4, 10, 0x0,  6,  5,  4, 0x0),\n    gsSPVertex(wiggler_seg5_vertex_0500B478, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  1, 0x0,  4,  1,  6, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  7,  9,  6, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP2Triangles(10, 13, 14, 0x0, 10, 14, 15, 0x0),\n    gsSPVertex(wiggler_seg5_vertex_0500B578, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500BE10 - 0x0500BE98\nconst Gfx wiggler_seg5_dl_0500BE10[] = {\n    gsSPLight(&wiggler_seg5_lights_0500B248.l, 1),\n    gsSPLight(&wiggler_seg5_lights_0500B248.a, 2),\n    gsSPVertex(wiggler_seg5_vertex_0500B5B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  0,  3, 0x0,  8,  3,  9, 0x0),\n    gsSP2Triangles( 1,  4,  7, 0x0,  1,  7,  2, 0x0),\n    gsSP2Triangles( 5,  8,  9, 0x0,  5,  9,  6, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle(10, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500BE98 - 0x0500BF20\nconst Gfx wiggler_seg5_dl_0500BE98[] = {\n    gsSPLight(&wiggler_seg5_lights_0500B248.l, 1),\n    gsSPLight(&wiggler_seg5_lights_0500B248.a, 2),\n    gsSPVertex(wiggler_seg5_vertex_0500B6A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  0,  3, 0x0,  8,  3,  9, 0x0),\n    gsSP2Triangles( 1,  4,  7, 0x0,  1,  7,  2, 0x0),\n    gsSP2Triangles( 5,  8,  9, 0x0,  5,  9,  6, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle(10, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500BF20 - 0x0500C078\nconst Gfx wiggler_seg5_dl_0500BF20[] = {\n    gsSPLight(&wiggler_seg5_lights_0500B230.l, 1),\n    gsSPLight(&wiggler_seg5_lights_0500B230.a, 2),\n    gsSPVertex(wiggler_seg5_vertex_0500B798, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(wiggler_seg5_vertex_0500B898, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  0,  6, 0x0,  3,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9,  7, 0x0,  8,  7,  6, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 11, 12, 0x0),\n    gsSP2Triangles( 6, 13,  8, 0x0,  7,  9, 12, 0x0),\n    gsSP2Triangles(14,  8, 13, 0x0, 14, 13, 15, 0x0),\n    gsSP2Triangles( 2, 13,  6, 0x0,  2,  6,  0, 0x0),\n    gsSP2Triangles(12,  3,  7, 0x0, 12,  4,  3, 0x0),\n    gsSPVertex(wiggler_seg5_vertex_0500B998, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  2,  5, 0x0,  4,  5,  6, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7,  4,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP2Triangles(10, 13, 14, 0x0, 10, 14, 15, 0x0),\n    gsSPVertex(wiggler_seg5_vertex_0500BA98, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500C078 - 0x0500C100\nconst Gfx wiggler_seg5_dl_0500C078[] = {\n    gsSPLight(&wiggler_seg5_lights_0500B248.l, 1),\n    gsSPLight(&wiggler_seg5_lights_0500B248.a, 2),\n    gsSPVertex(wiggler_seg5_vertex_0500BAD8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  0,  3, 0x0,  8,  3,  9, 0x0),\n    gsSP2Triangles( 1,  4,  7, 0x0,  1,  7,  2, 0x0),\n    gsSP2Triangles( 5,  8,  9, 0x0,  5,  9,  6, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle(10, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500C100 - 0x0500C188\nconst Gfx wiggler_seg5_dl_0500C100[] = {\n    gsSPLight(&wiggler_seg5_lights_0500B248.l, 1),\n    gsSPLight(&wiggler_seg5_lights_0500B248.a, 2),\n    gsSPVertex(wiggler_seg5_vertex_0500BBC8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  0,  3, 0x0,  8,  3,  9, 0x0),\n    gsSP2Triangles( 1,  4,  7, 0x0,  1,  7,  2, 0x0),\n    gsSP2Triangles( 5,  8,  9, 0x0,  5,  9,  6, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle(10, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500C188\nstatic const Vtx wiggler_seg5_vertex_0500C188[] = {\n    {{{     0,     21,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -20,    -20,      0}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    -20,      0}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -20,     21,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500C1C8\nstatic const Vtx wiggler_seg5_vertex_0500C1C8[] = {\n    {{{    21,     21,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,     21,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    -20,      0}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    21,    -20,      0}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500C208 - 0x0500C240\nconst Gfx wiggler_seg5_dl_0500C208[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wiggler_seg5_texture_05005A30),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wiggler_seg5_vertex_0500C188, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500C240 - 0x0500C278\nconst Gfx wiggler_seg5_dl_0500C240[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wiggler_seg5_texture_05006A30),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wiggler_seg5_vertex_0500C1C8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500C278 - 0x0500C2F0\nconst Gfx wiggler_seg5_dl_0500C278[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wiggler_seg5_dl_0500C208),\n    gsSPDisplayList(wiggler_seg5_dl_0500C240),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/wiggler_head/anims/anim_0500EC74.inc.c",
    "content": "// 0x0500E6F0\nstatic const s16 wiggler_seg5_animvalue_0500E6F0[] = {\n    0x0000, 0x007F, 0x007E, 0x007C, 0x007A, 0x0078, 0x0077, 0x0076,\n    0x0077, 0x0079, 0x007C, 0x007F, 0x0081, 0x0083, 0x0084, 0x0083,\n    0x0081, 0x007E, 0x007B, 0x007A, 0x007A, 0x007A, 0x007B, 0x007C,\n    0x007D, 0x007E, 0x007F, 0x3FFF, 0x001A, 0x001C, 0x0022, 0x002A,\n    0x0030, 0x0036, 0x003A, 0x003E, 0x0042, 0x0045, 0x0049, 0x004D,\n    0x0052, 0x0057, 0x005E, 0x0066, 0x006F, 0x007B, 0x00DB, 0x00CA,\n    0x00A6, 0x0081, 0x0061, 0x003F, 0x0025, 0x001A, 0x00DF, 0x00E8,\n    0x00F4, 0x00ED, 0x00BD, 0x006B, 0x000F, 0xFFAD, 0xFF45, 0xFED8,\n    0xFE69, 0xFDFB, 0xFD8E, 0xFD25, 0xFCC2, 0xFC67, 0xFC15, 0xFBCE,\n    0xFD3E, 0xFEEC, 0xFF4C, 0xFF82, 0xFFE8, 0x005A, 0x00B8, 0x00DF,\n    0xF43F, 0xF43A, 0xF43B, 0xF456, 0xF4A1, 0xF517, 0xF5A0, 0xF638,\n    0xF6D9, 0xF780, 0xF828, 0xF8CC, 0xF968, 0xF9F7, 0xFA74, 0xFADB,\n    0xFB27, 0xFB54, 0xF625, 0xF260, 0xF2C6, 0xF3AE, 0xF3F2, 0xF41E,\n    0xF437, 0xF43F, 0xF7E1, 0xF834, 0xF902, 0xFA09, 0xFB06, 0xFBB7,\n    0xFBD9, 0xFB88, 0xFB0E, 0xFA72, 0xF9BA, 0xF8EE, 0xF815, 0xF736,\n    0xF656, 0xF57E, 0xF4B5, 0xF400, 0xF360, 0xF353, 0xF400, 0xF4F0,\n    0xF5F7, 0xF6EA, 0xF79C, 0xF7E1, 0x25C7, 0x265C, 0x27CA, 0x2993,\n    0x2B3C, 0x2C49, 0x2C3D, 0x2B44, 0x29E8, 0x283D, 0x2656, 0x2448,\n    0x2225, 0x2001, 0x1DF0, 0x1C05, 0x1A53, 0x18EF, 0x19FE, 0x1C76,\n    0x1E44, 0x204D, 0x2253, 0x2413, 0x254F, 0x25C7, 0x096C, 0x0993,\n    0x09F4, 0x0A73, 0x0AF0, 0x0B4E, 0x0B6F, 0x0B5F, 0x0B3F, 0x0B11,\n    0x0AD8, 0x0A97, 0x0A50, 0x0A06, 0x09BB, 0x0973, 0x092F, 0x08F3,\n    0x08B6, 0x089C, 0x08B6, 0x08DF, 0x090F, 0x093D, 0x095E, 0x096C,\n    0x0506, 0x04F0, 0x04B8, 0x046E, 0x0425, 0x03ED, 0x03D6, 0x03E3,\n    0x0406, 0x0438, 0x0472, 0x04AC, 0x04E0, 0x0506, 0x0508, 0x04EF,\n    0x04E7, 0x051B, 0x064C, 0x074C, 0x071F, 0x06B3, 0x0627, 0x059C,\n    0x0531, 0x0506, 0xDC85, 0xDC0A, 0xDAD7, 0xD947, 0xD7B8, 0xD684,\n    0xD609, 0xD626, 0xD67E, 0xD719, 0xD7FB, 0xD92A, 0xDAAB, 0xDC85,\n    0xDFBE, 0xE468, 0xE916, 0xEC5C, 0xEBBB, 0xE910, 0xE6C3, 0xE40D,\n    0xE14E, 0xDEE4, 0xDD2C, 0xDC85, 0xDD7D, 0xDC6C, 0xD988, 0xD549,\n    0xD028, 0xCA9D, 0xC520, 0xBF2B, 0xB84E, 0xB120, 0xAA3A, 0xA432,\n    0x9FA1, 0x9D1E, 0x9F2E, 0xA60F, 0xAEED, 0xB6F5, 0xBE84, 0xC526,\n    0xCA4C, 0xCFBD, 0xD4EE, 0xD952, 0xDC5B, 0xDD7D, 0x0000, 0x0004,\n    0x000E, 0x0017, 0x001C, 0x0013, 0x0000, 0xFFD8, 0xFFCF, 0xFFD0,\n    0xFFDD, 0xFFEF, 0xFFFD, 0xFFFA, 0xFFD3, 0xFF97, 0xFF70, 0xFF87,\n    0xFFB5, 0xFFD9, 0xFFE4, 0xFFED, 0xFFF5, 0xFFFB, 0xFFFF, 0x0000,\n    0x0031, 0x004E, 0x008E, 0x00CE, 0x00EB, 0x00AC, 0x0031, 0xFF7E,\n    0xFF1D, 0xFEF4, 0xFF16, 0xFF56, 0xFF93, 0xFFAA, 0xFF68, 0xFEF9,\n    0xFEC4, 0xFF38, 0xFFE9, 0x005F, 0x0062, 0x005C, 0x004F, 0x0041,\n    0x0036, 0x0031, 0xFFF7, 0x0108, 0x0363, 0x05BE, 0x06D0, 0x047C,\n    0xFFF7, 0xF99E, 0xF625, 0xF4A5, 0xF5B4, 0xF7CC, 0xF9CF, 0xFA9D,\n    0xF887, 0xF4F6, 0xF36F, 0xF7A2, 0xFDF2, 0x021C, 0x0227, 0x01CF,\n    0x0141, 0x00A6, 0x0029, 0xFFF7, 0xFA46, 0xFA35, 0xFA0C, 0xF9D5,\n    0xF99B, 0xF96B, 0xF950, 0xF96F, 0xF9CB, 0xFA3C, 0xFA98, 0xFAB7,\n    0xFA71, 0xF99B, 0xF75E, 0xF3B8, 0xEFC2, 0xEC98, 0xEB55, 0xEC33,\n    0xEE5A, 0xF144, 0xF46F, 0xF755, 0xF973, 0xFA46, 0xE89C, 0xE84C,\n    0xE77F, 0xE670, 0xE555, 0xE469, 0xE3E2, 0xE3EC, 0xE463, 0xE510,\n    0xE5B7, 0xE621, 0xE614, 0xE556, 0xE2F3, 0xDEF5, 0xDA9E, 0xD733,\n    0xD5F6, 0xD732, 0xD9F0, 0xDD91, 0xE178, 0xE506, 0xE79C, 0xE89C,\n    0x0338, 0x0353, 0x0396, 0x03EF, 0x044C, 0x0499, 0x04C5, 0x04B2,\n    0x0464, 0x0400, 0x03A8, 0x0380, 0x03AB, 0x044B, 0x0611, 0x08FB,\n    0x0C24, 0x0EA8, 0x0FA2, 0x0EE2, 0x0D15, 0x0AA9, 0x080A, 0x05A5,\n    0x03E5, 0x0338, 0x09EE, 0x09F7, 0x0A0B, 0x0A26, 0x0A41, 0x0A55,\n    0x0A5D, 0x0A34, 0x09D1, 0x095D, 0x08FF, 0x08DE, 0x0920, 0x09EE,\n    0x0C1C, 0x0FAB, 0x1389, 0x16A4, 0x17EA, 0x1724, 0x1524, 0x1269,\n    0x0F6F, 0x0CB4, 0x0AB5, 0x09EE, 0x177B, 0x17D0, 0x18A4, 0x19B7,\n    0x1ACA, 0x1B9E, 0x1BF3, 0x1B8F, 0x1A95, 0x1953, 0x1816, 0x172A,\n    0x16DD, 0x177B, 0x1A2B, 0x1EE1, 0x241A, 0x2857, 0x2A16, 0x290E,\n    0x2666, 0x22C3, 0x1ECE, 0x1B2B, 0x1883, 0x177B, 0xAC44, 0xAD5F,\n    0xB050, 0xB48E, 0xB98D, 0xBEC0, 0xC39D, 0xC8AB, 0xCE7D, 0xD49E,\n    0xDA97, 0xDFF2, 0xE437, 0xE6F0, 0xE76F, 0xE5BA, 0xE264, 0xDE02,\n    0xD929, 0xD314, 0xCB45, 0xC2B3, 0xBA58, 0xB32C, 0xAE28, 0xAC44,\n    0x9BBC, 0x9BBC, 0x22E9, 0x237E, 0x2419, 0x24AD, 0x252D, 0x258D,\n    0x25BE, 0x25AF, 0x254F, 0x24BD, 0x2417, 0x237D, 0x230D, 0x22E9,\n    0x2343, 0x2408, 0x24EF, 0x25AF, 0x25FF, 0x25E4, 0x2599, 0x2529,\n    0x24A2, 0x240D, 0x2376, 0x22E9, 0x22E9, 0x237E, 0x2419, 0x24AD,\n    0x252D, 0x258D, 0x25BE, 0x25AF, 0x254F, 0x24BD, 0x2417, 0x237D,\n    0x230D, 0x22E9, 0x2343, 0x2408, 0x24EF, 0x25AF, 0x25FF, 0x25E4,\n    0x2599, 0x2529, 0x24A2, 0x240D, 0x2376, 0x22E9, 0x22E9, 0x237E,\n    0x2419, 0x24AD, 0x252D, 0x258D, 0x25BE, 0x25AF, 0x254F, 0x24BD,\n    0x2417, 0x237D, 0x230D, 0x22E9, 0x2343, 0x2408, 0x24EF, 0x25AF,\n    0x25FF, 0x25E4, 0x2599, 0x2529, 0x24A2, 0x240D, 0x2376, 0x22E9,\n    0x22E9, 0x237E, 0x2419, 0x24AD, 0x252D, 0x258D, 0x25BE, 0x25AF,\n    0x254F, 0x24BD, 0x2417, 0x237D, 0x230D, 0x22E9, 0x2343, 0x2408,\n    0x24EF, 0x25AF, 0x25FF, 0x25E4, 0x2599, 0x2529, 0x24A2, 0x240D,\n    0x2376, 0x22E9, 0x63F7, 0x0000,\n};\n\n// 0x0500EBA8\nstatic const u16 wiggler_seg5_animindex_0500EBA8[] = {\n    0x0001, 0x0000, 0x001A, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x001B, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x025A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001A, 0x0240,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001A, 0x0226,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001A, 0x020C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001A, 0x01F2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01F1,\n    0x001A, 0x00B8, 0x001A, 0x00D2, 0x001A, 0x00EC,\n    0x001A, 0x006A, 0x001A, 0x0084, 0x001A, 0x009E,\n    0x001A, 0x001C, 0x001A, 0x0036, 0x001A, 0x0050,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01F0,\n    0x001A, 0x01A2, 0x001A, 0x01BC, 0x001A, 0x01D6,\n    0x001A, 0x0154, 0x001A, 0x016E, 0x001A, 0x0188,\n    0x001A, 0x0106, 0x001A, 0x0120, 0x001A, 0x013A,\n};\n\n// 0x0500EC74\nstatic const struct Animation wiggler_seg5_anim_0500EC74 = {\n    0,\n    0,\n    0,\n    0,\n    0x1A,\n    ANIMINDEX_NUMPARTS(wiggler_seg5_animindex_0500EBA8),\n    wiggler_seg5_animvalue_0500E6F0,\n    wiggler_seg5_animindex_0500EBA8,\n    0,\n};\n"
  },
  {
    "path": "actors/wiggler_head/anims/data.inc.c",
    "content": "#include \"anim_0500EC74.inc.c\"\n"
  },
  {
    "path": "actors/wiggler_head/anims/table.inc.c",
    "content": "// 0x0500EC8C\nconst struct Animation *const wiggler_seg5_anims_0500EC8C[] = {\n    &wiggler_seg5_anim_0500EC74,\n};\n"
  },
  {
    "path": "actors/wiggler_head/geo.inc.c",
    "content": "// 0x0C000030\nconst GeoLayout wiggler_head_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0x96, 100),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n                GEO_OPEN_NODE(),\n                    GEO_BILLBOARD(),\n                    GEO_OPEN_NODE(),\n                        GEO_DISPLAY_LIST(LAYER_ALPHA, wiggler_seg5_dl_0500C278),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 157, 0, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_BILLBOARD(),\n                        GEO_OPEN_NODE(),\n                            GEO_DISPLAY_LIST(LAYER_ALPHA, wiggler_seg5_dl_0500E678),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 143, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_BILLBOARD(),\n                            GEO_OPEN_NODE(),\n                                GEO_DISPLAY_LIST(LAYER_ALPHA, wiggler_seg5_dl_0500E1D8),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 143, 0, 0, NULL),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_ALPHA, 157, 0, 0, wiggler_seg5_dl_0500E518),\n                    GEO_ANIMATED_PART(LAYER_ALPHA, 157, 0, 0, wiggler_seg5_dl_0500E430),\n                    GEO_ANIMATED_PART(LAYER_ALPHA, 157, 0, 0, wiggler_seg5_dl_0500E2F8),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -16, 23, 51, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, wiggler_seg5_dl_0500DDF8),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 39, 0, 0, wiggler_seg5_dl_0500DD70),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 41, 0, 0, wiggler_seg5_dl_0500DC18),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -16, 23, -49, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, wiggler_seg5_dl_0500E060),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 39, 0, 0, wiggler_seg5_dl_0500DFD8),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 41, 0, 0, wiggler_seg5_dl_0500DE80),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/wiggler_head/model.inc.c",
    "content": "// Wiggler Head\n\n// 0x0500C878\nstatic const Lights1 wiggler_seg5_lights_0500C878 = gdSPDefLights1(\n    0x37, 0x00, 0x00,\n    0xdf, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x0500C890\nstatic const Lights1 wiggler_seg5_lights_0500C890 = gdSPDefLights1(\n    0x39, 0x11, 0x00,\n    0xe7, 0x47, 0x00, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 wiggler_head_lights_unused1 = gdSPDefLights1(\n    0x1b, 0x06, 0x00,\n    0x6d, 0x1a, 0x00, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 wiggler_head_lights_unused2 = gdSPDefLights1(\n    0x3a, 0x22, 0x05,\n    0xea, 0x8b, 0x16, 0x28, 0x28, 0x28\n);\n\n// 0x0500C8D8\nstatic const Vtx wiggler_seg5_vertex_0500C8D8[] = {\n    {{{    19,      5,    -31}, 0, {     0,      0}, {0x40, 0x2b, 0x9d, 0x00}}},\n    {{{    20,    -37,    -43}, 0, {     0,      0}, {0x48, 0xeb, 0x9a, 0x00}}},\n    {{{    -5,    -36,    -43}, 0, {     0,      0}, {0xbd, 0xe4, 0x99, 0x00}}},\n    {{{    -2,      5,    -31}, 0, {     0,      0}, {0xca, 0x32, 0x9a, 0xff}}},\n    {{{    20,    -66,    -21}, 0, {     0,      0}, {0x42, 0xa1, 0xce, 0xff}}},\n    {{{    20,    -66,     21}, 0, {     0,      0}, {0x42, 0xa1, 0x32, 0xff}}},\n    {{{     0,    -59,     21}, 0, {     0,      0}, {0xb7, 0xa1, 0x27, 0xff}}},\n    {{{     0,    -59,    -21}, 0, {     0,      0}, {0xb7, 0xa1, 0xd9, 0xff}}},\n    {{{    20,    -37,     43}, 0, {     0,      0}, {0x48, 0xeb, 0x66, 0xff}}},\n    {{{    19,      5,     31}, 0, {     0,      0}, {0x40, 0x2b, 0x63, 0xff}}},\n    {{{    -2,      5,     31}, 0, {     0,      0}, {0xca, 0x32, 0x66, 0xff}}},\n    {{{    -5,    -36,     43}, 0, {     0,      0}, {0xbd, 0xe4, 0x67, 0xff}}},\n    {{{    18,     34,     15}, 0, {     0,      0}, {0x41, 0x5b, 0x3a, 0xff}}},\n    {{{    18,     34,    -15}, 0, {     0,      0}, {0x41, 0x5b, 0xc6, 0xff}}},\n    {{{     0,     28,    -15}, 0, {     0,      0}, {0xba, 0x5b, 0xcc, 0xff}}},\n    {{{     0,     28,     15}, 0, {     0,      0}, {0xba, 0x5b, 0x34, 0xff}}},\n};\n\n// 0x0500C9D8\nstatic const Vtx wiggler_seg5_vertex_0500C9D8[] = {\n    {{{     0,    -59,     21}, 0, {     0,      0}, {0xb7, 0xa1, 0x27, 0xff}}},\n    {{{    -5,    -36,     43}, 0, {     0,      0}, {0xbd, 0xe4, 0x67, 0x00}}},\n    {{{   -17,    -33,     21}, 0, {     0,      0}, {0x89, 0xe3, 0x1f, 0x00}}},\n    {{{    -2,      5,     31}, 0, {     0,      0}, {0xca, 0x32, 0x66, 0xff}}},\n    {{{     0,     28,     15}, 0, {     0,      0}, {0xba, 0x5b, 0x34, 0xff}}},\n    {{{   -15,      5,     15}, 0, {     0,      0}, {0x8f, 0x2a, 0x26, 0xff}}},\n    {{{   -15,      5,    -15}, 0, {     0,      0}, {0x8f, 0x2a, 0xda, 0xff}}},\n    {{{   -17,    -33,    -21}, 0, {     0,      0}, {0x89, 0xe3, 0xe1, 0xff}}},\n    {{{    -2,      5,    -31}, 0, {     0,      0}, {0xca, 0x32, 0x9a, 0xff}}},\n    {{{    -5,    -36,    -43}, 0, {     0,      0}, {0xbd, 0xe4, 0x99, 0xff}}},\n    {{{     0,     28,    -15}, 0, {     0,      0}, {0xba, 0x5b, 0xcc, 0xff}}},\n    {{{    18,     34,    -15}, 0, {     0,      0}, {0x41, 0x5b, 0xc6, 0xff}}},\n    {{{    19,      5,    -31}, 0, {     0,      0}, {0x40, 0x2b, 0x9d, 0xff}}},\n    {{{     0,    -59,    -21}, 0, {     0,      0}, {0xb7, 0xa1, 0xd9, 0xff}}},\n    {{{    20,    -66,    -21}, 0, {     0,      0}, {0x42, 0xa1, 0xce, 0xff}}},\n    {{{    20,    -37,    -43}, 0, {     0,      0}, {0x48, 0xeb, 0x9a, 0xff}}},\n};\n\n// 0x0500CAD8\nstatic const Vtx wiggler_seg5_vertex_0500CAD8[] = {\n    {{{    20,    -37,     43}, 0, {     0,      0}, {0x48, 0xeb, 0x66, 0xff}}},\n    {{{    -5,    -36,     43}, 0, {     0,      0}, {0xbd, 0xe4, 0x67, 0x00}}},\n    {{{     0,    -59,     21}, 0, {     0,      0}, {0xb7, 0xa1, 0x27, 0x00}}},\n    {{{    20,    -66,     21}, 0, {     0,      0}, {0x42, 0xa1, 0x32, 0xff}}},\n    {{{   -15,      5,     15}, 0, {     0,      0}, {0x8f, 0x2a, 0x26, 0xff}}},\n    {{{   -17,    -33,     21}, 0, {     0,      0}, {0x89, 0xe3, 0x1f, 0xff}}},\n    {{{    -2,      5,     31}, 0, {     0,      0}, {0xca, 0x32, 0x66, 0xff}}},\n    {{{    18,     34,     15}, 0, {     0,      0}, {0x41, 0x5b, 0x3a, 0xff}}},\n    {{{    19,      5,     31}, 0, {     0,      0}, {0x40, 0x2b, 0x63, 0xff}}},\n    {{{     0,     28,     15}, 0, {     0,      0}, {0xba, 0x5b, 0x34, 0xff}}},\n    {{{    20,    -66,    -21}, 0, {     0,      0}, {0x7f, 0x02, 0x00, 0xff}}},\n    {{{    20,    -37,    -43}, 0, {     0,      0}, {0x3d, 0xed, 0x93, 0xff}}},\n    {{{    19,      5,    -31}, 0, {     0,      0}, {0x1b, 0x32, 0x8f, 0xff}}},\n    {{{    18,     34,    -15}, 0, {     0,      0}, {0x7f, 0x02, 0x00, 0xff}}},\n    {{{    18,     34,     15}, 0, {     0,      0}, {0x06, 0x6e, 0x3e, 0xff}}},\n    {{{    19,      5,     31}, 0, {     0,      0}, {0x39, 0x2b, 0x68, 0xff}}},\n};\n\n// 0x0500CBD8\nstatic const Vtx wiggler_seg5_vertex_0500CBD8[] = {\n    {{{    20,    -66,    -21}, 0, {     0,      0}, {0x7f, 0x02, 0x00, 0xff}}},\n    {{{    19,      5,     31}, 0, {     0,      0}, {0x39, 0x2b, 0x68, 0x00}}},\n    {{{    20,    -37,     43}, 0, {     0,      0}, {0x1b, 0xe7, 0x79, 0x00}}},\n    {{{    20,    -66,     21}, 0, {     0,      0}, {0x7f, 0x02, 0x00, 0xff}}},\n};\n\n// 0x0500CC18\nstatic const Vtx wiggler_seg5_vertex_0500CC18[] = {\n    {{{    53,     -2,    -13}, 0, {     0,      0}, {0x00, 0xd8, 0x88, 0x00}}},\n    {{{    53,    -11,      0}, 0, {     0,      0}, {0x01, 0x81, 0x01, 0x00}}},\n    {{{    -3,    -12,      0}, 0, {     0,      0}, {0x01, 0x81, 0x01, 0x00}}},\n    {{{    -3,     -2,    -13}, 0, {     0,      0}, {0x00, 0xd8, 0x88, 0xff}}},\n    {{{    53,     -1,     13}, 0, {     0,      0}, {0x00, 0xda, 0x79, 0xff}}},\n    {{{    53,     13,      8}, 0, {     0,      0}, {0xff, 0x67, 0x49, 0xff}}},\n    {{{    -4,     13,      8}, 0, {     0,      0}, {0xff, 0x67, 0x49, 0xff}}},\n    {{{    -3,     -2,     13}, 0, {     0,      0}, {0x00, 0xda, 0x79, 0xff}}},\n    {{{    53,     13,     -8}, 0, {     0,      0}, {0xff, 0x66, 0xb5, 0xff}}},\n    {{{    -4,     13,     -8}, 0, {     0,      0}, {0xff, 0x66, 0xb5, 0xff}}},\n    {{{    -3,     -2,     13}, 0, {     0,      0}, {0x81, 0xff, 0x00, 0xff}}},\n    {{{    -4,     13,      8}, 0, {     0,      0}, {0x81, 0xff, 0x00, 0xff}}},\n    {{{    -4,     13,     -8}, 0, {     0,      0}, {0xd0, 0x6b, 0xd3, 0xff}}},\n    {{{    -3,     -2,    -13}, 0, {     0,      0}, {0xd2, 0xf6, 0x8b, 0xff}}},\n    {{{    -3,    -12,      0}, 0, {     0,      0}, {0xd3, 0x8d, 0xe6, 0xff}}},\n};\n\n// 0x0500CD08\nstatic const Vtx wiggler_seg5_vertex_0500CD08[] = {\n    {{{    42,     -2,    -13}, 0, {     0,      0}, {0x00, 0xd8, 0x88, 0x00}}},\n    {{{    42,    -12,      0}, 0, {     0,      0}, {0x00, 0x81, 0x01, 0x00}}},\n    {{{    -6,    -12,      0}, 0, {     0,      0}, {0x00, 0x81, 0x01, 0x00}}},\n    {{{    -6,     -2,    -13}, 0, {     0,      0}, {0x00, 0xd8, 0x88, 0xff}}},\n    {{{    42,     -2,     13}, 0, {     0,      0}, {0x00, 0xda, 0x79, 0xff}}},\n    {{{    42,     13,      8}, 0, {     0,      0}, {0x00, 0x67, 0x49, 0xff}}},\n    {{{    -6,     13,      8}, 0, {     0,      0}, {0x00, 0x67, 0x49, 0xff}}},\n    {{{    -6,     -2,     13}, 0, {     0,      0}, {0x00, 0xda, 0x79, 0xff}}},\n    {{{    42,     13,     -8}, 0, {     0,      0}, {0x00, 0x66, 0xb5, 0xff}}},\n    {{{    -6,     13,     -8}, 0, {     0,      0}, {0x00, 0x66, 0xb5, 0xff}}},\n    {{{    42,     13,     -8}, 0, {     0,      0}, {0x2f, 0x4b, 0xa6, 0xff}}},\n    {{{    42,     13,      8}, 0, {     0,      0}, {0x2f, 0x6d, 0x2c, 0xff}}},\n    {{{    42,     -2,     13}, 0, {     0,      0}, {0x2f, 0xf8, 0x75, 0xff}}},\n    {{{    42,    -12,      0}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    42,     -2,    -13}, 0, {     0,      0}, {0x2f, 0xc2, 0x9d, 0xff}}},\n};\n\n// 0x0500CDF8\nstatic const Vtx wiggler_seg5_vertex_0500CDF8[] = {\n    {{{    -2,      5,     31}, 0, {     0,      0}, {0xca, 0x32, 0x66, 0x00}}},\n    {{{    -5,    -36,     43}, 0, {     0,      0}, {0xbd, 0xe4, 0x67, 0x00}}},\n    {{{    20,    -37,     43}, 0, {     0,      0}, {0x48, 0xeb, 0x66, 0x00}}},\n    {{{    19,      5,     31}, 0, {     0,      0}, {0x40, 0x2b, 0x63, 0xff}}},\n    {{{     0,    -59,     21}, 0, {     0,      0}, {0xb7, 0xa1, 0x27, 0xff}}},\n    {{{     0,    -59,    -21}, 0, {     0,      0}, {0xb7, 0xa1, 0xd9, 0xff}}},\n    {{{    20,    -66,    -21}, 0, {     0,      0}, {0x42, 0xa1, 0xce, 0xff}}},\n    {{{    20,    -66,     21}, 0, {     0,      0}, {0x42, 0xa1, 0x32, 0xff}}},\n    {{{    -5,    -36,    -43}, 0, {     0,      0}, {0xbd, 0xe4, 0x99, 0xff}}},\n    {{{    -2,      5,    -31}, 0, {     0,      0}, {0xca, 0x32, 0x9a, 0xff}}},\n    {{{    19,      5,    -31}, 0, {     0,      0}, {0x40, 0x2b, 0x9d, 0xff}}},\n    {{{    20,    -37,    -43}, 0, {     0,      0}, {0x48, 0xeb, 0x9a, 0xff}}},\n    {{{     0,     28,    -15}, 0, {     0,      0}, {0xba, 0x5b, 0xcc, 0xff}}},\n    {{{     0,     28,     15}, 0, {     0,      0}, {0xba, 0x5b, 0x34, 0xff}}},\n    {{{    18,     34,     15}, 0, {     0,      0}, {0x41, 0x5b, 0x3a, 0xff}}},\n    {{{    18,     34,    -15}, 0, {     0,      0}, {0x41, 0x5b, 0xc6, 0xff}}},\n};\n\n// 0x0500CEF8\nstatic const Vtx wiggler_seg5_vertex_0500CEF8[] = {\n    {{{   -17,    -33,    -21}, 0, {     0,      0}, {0x89, 0xe3, 0xe1, 0xff}}},\n    {{{    -5,    -36,    -43}, 0, {     0,      0}, {0xbd, 0xe4, 0x99, 0x00}}},\n    {{{     0,    -59,    -21}, 0, {     0,      0}, {0xb7, 0xa1, 0xd9, 0x00}}},\n    {{{   -15,      5,    -15}, 0, {     0,      0}, {0x8f, 0x2a, 0xda, 0xff}}},\n    {{{     0,     28,    -15}, 0, {     0,      0}, {0xba, 0x5b, 0xcc, 0xff}}},\n    {{{    -2,      5,    -31}, 0, {     0,      0}, {0xca, 0x32, 0x9a, 0xff}}},\n    {{{   -17,    -33,     21}, 0, {     0,      0}, {0x89, 0xe3, 0x1f, 0xff}}},\n    {{{   -15,      5,     15}, 0, {     0,      0}, {0x8f, 0x2a, 0x26, 0xff}}},\n    {{{    -5,    -36,     43}, 0, {     0,      0}, {0xbd, 0xe4, 0x67, 0xff}}},\n    {{{    -2,      5,     31}, 0, {     0,      0}, {0xca, 0x32, 0x66, 0xff}}},\n    {{{    19,      5,     31}, 0, {     0,      0}, {0x40, 0x2b, 0x63, 0xff}}},\n    {{{    18,     34,     15}, 0, {     0,      0}, {0x41, 0x5b, 0x3a, 0xff}}},\n    {{{     0,     28,     15}, 0, {     0,      0}, {0xba, 0x5b, 0x34, 0xff}}},\n    {{{     0,    -59,     21}, 0, {     0,      0}, {0xb7, 0xa1, 0x27, 0xff}}},\n    {{{    20,    -37,     43}, 0, {     0,      0}, {0x48, 0xeb, 0x66, 0xff}}},\n    {{{    20,    -66,     21}, 0, {     0,      0}, {0x42, 0xa1, 0x32, 0xff}}},\n};\n\n// 0x0500CFF8\nstatic const Vtx wiggler_seg5_vertex_0500CFF8[] = {\n    {{{    20,    -66,    -21}, 0, {     0,      0}, {0x42, 0xa1, 0xce, 0xff}}},\n    {{{     0,    -59,    -21}, 0, {     0,      0}, {0xb7, 0xa1, 0xd9, 0x00}}},\n    {{{    -5,    -36,    -43}, 0, {     0,      0}, {0xbd, 0xe4, 0x99, 0x00}}},\n    {{{    20,    -37,    -43}, 0, {     0,      0}, {0x48, 0xeb, 0x9a, 0xff}}},\n    {{{    -2,      5,    -31}, 0, {     0,      0}, {0xca, 0x32, 0x9a, 0xff}}},\n    {{{   -17,    -33,    -21}, 0, {     0,      0}, {0x89, 0xe3, 0xe1, 0xff}}},\n    {{{   -15,      5,    -15}, 0, {     0,      0}, {0x8f, 0x2a, 0xda, 0xff}}},\n    {{{    19,      5,    -31}, 0, {     0,      0}, {0x40, 0x2b, 0x9d, 0xff}}},\n    {{{     0,     28,    -15}, 0, {     0,      0}, {0xba, 0x5b, 0xcc, 0xff}}},\n    {{{    18,     34,    -15}, 0, {     0,      0}, {0x41, 0x5b, 0xc6, 0xff}}},\n    {{{    20,    -37,     43}, 0, {     0,      0}, {0x1b, 0xe7, 0x79, 0xff}}},\n    {{{    20,    -66,     21}, 0, {     0,      0}, {0x7f, 0x02, 0x00, 0xff}}},\n    {{{    20,    -66,    -21}, 0, {     0,      0}, {0x7f, 0x02, 0x00, 0xff}}},\n    {{{    20,    -37,    -43}, 0, {     0,      0}, {0x3d, 0xed, 0x93, 0xff}}},\n    {{{    19,      5,    -31}, 0, {     0,      0}, {0x1b, 0x32, 0x8f, 0xff}}},\n    {{{    18,     34,    -15}, 0, {     0,      0}, {0x7f, 0x02, 0x00, 0xff}}},\n};\n\n// 0x0500D0F8\nstatic const Vtx wiggler_seg5_vertex_0500D0F8[] = {\n    {{{    20,    -37,     43}, 0, {     0,      0}, {0x1b, 0xe7, 0x79, 0xff}}},\n    {{{    18,     34,    -15}, 0, {     0,      0}, {0x7f, 0x02, 0x00, 0x00}}},\n    {{{    18,     34,     15}, 0, {     0,      0}, {0x06, 0x6e, 0x3e, 0x00}}},\n    {{{    19,      5,     31}, 0, {     0,      0}, {0x39, 0x2b, 0x68, 0xff}}},\n};\n\n// 0x0500D138\nstatic const Vtx wiggler_seg5_vertex_0500D138[] = {\n    {{{    -3,     -2,     13}, 0, {     0,      0}, {0x00, 0xd8, 0x78, 0x00}}},\n    {{{    -3,    -12,      0}, 0, {     0,      0}, {0x01, 0x81, 0xff, 0x00}}},\n    {{{    53,    -11,      0}, 0, {     0,      0}, {0x01, 0x81, 0xff, 0x00}}},\n    {{{    53,     -2,     13}, 0, {     0,      0}, {0x00, 0xd8, 0x78, 0xff}}},\n    {{{    -3,     -2,    -13}, 0, {     0,      0}, {0x00, 0xda, 0x87, 0xff}}},\n    {{{    -4,     13,     -8}, 0, {     0,      0}, {0xff, 0x67, 0xb7, 0xff}}},\n    {{{    53,     13,     -8}, 0, {     0,      0}, {0xff, 0x67, 0xb7, 0xff}}},\n    {{{    53,     -1,    -13}, 0, {     0,      0}, {0x00, 0xda, 0x87, 0xff}}},\n    {{{    -4,     13,      8}, 0, {     0,      0}, {0xff, 0x66, 0x4b, 0xff}}},\n    {{{    53,     13,      8}, 0, {     0,      0}, {0xff, 0x66, 0x4b, 0xff}}},\n    {{{    -3,     -2,    -13}, 0, {     0,      0}, {0x81, 0xff, 0x00, 0xff}}},\n    {{{    -3,    -12,      0}, 0, {     0,      0}, {0x81, 0xff, 0x00, 0xff}}},\n    {{{    -3,     -2,     13}, 0, {     0,      0}, {0xd2, 0xc1, 0x63, 0xff}}},\n    {{{    -4,     13,      8}, 0, {     0,      0}, {0xd0, 0x4b, 0x5a, 0xff}}},\n    {{{    -4,     13,     -8}, 0, {     0,      0}, {0xd0, 0x6c, 0xd5, 0xff}}},\n};\n\n// 0x0500D228\nstatic const Vtx wiggler_seg5_vertex_0500D228[] = {\n    {{{    -6,     -2,     13}, 0, {     0,      0}, {0x00, 0xd8, 0x78, 0x00}}},\n    {{{    -6,    -12,      0}, 0, {     0,      0}, {0x00, 0x81, 0xff, 0x00}}},\n    {{{    42,    -12,      0}, 0, {     0,      0}, {0x00, 0x81, 0xff, 0x00}}},\n    {{{    42,     -2,     13}, 0, {     0,      0}, {0x00, 0xd8, 0x78, 0xff}}},\n    {{{    -6,     -2,    -13}, 0, {     0,      0}, {0x00, 0xda, 0x87, 0xff}}},\n    {{{    -6,     13,     -8}, 0, {     0,      0}, {0x00, 0x67, 0xb7, 0xff}}},\n    {{{    42,     13,     -8}, 0, {     0,      0}, {0x00, 0x67, 0xb7, 0xff}}},\n    {{{    42,     -2,    -13}, 0, {     0,      0}, {0x00, 0xda, 0x87, 0xff}}},\n    {{{    -6,     13,      8}, 0, {     0,      0}, {0x00, 0x66, 0x4b, 0xff}}},\n    {{{    42,     13,      8}, 0, {     0,      0}, {0x00, 0x66, 0x4b, 0xff}}},\n    {{{    42,     13,     -8}, 0, {     0,      0}, {0x2f, 0x4d, 0xa7, 0xff}}},\n    {{{    42,     13,      8}, 0, {     0,      0}, {0x2f, 0x6c, 0x2d, 0xff}}},\n    {{{    42,     -2,     13}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    42,    -12,      0}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    42,     -2,    -13}, 0, {     0,      0}, {0x2f, 0xc4, 0x9c, 0xff}}},\n};\n\n// Unused vertices? what are these? [D318]\nstatic const Vtx wiggler_seg5_vertex_0500D318[] = {\n    {{{    92,     51,      0}, 0, {     0,      0}, {0x5d, 0x55, 0x00, 0x00}}},\n    {{{    87,     46,    -28}, 0, {     0,      0}, {0x5a, 0x53, 0xe1, 0x00}}},\n    {{{    49,     88,    -28}, 0, {     0,      0}, {0x5a, 0x53, 0xe1, 0x00}}},\n    {{{    54,     92,      0}, 0, {     0,      0}, {0x5d, 0x55, 0x00, 0xff}}},\n    {{{    49,     88,     28}, 0, {     0,      0}, {0x5a, 0x53, 0x1f, 0xff}}},\n    {{{    87,     46,     28}, 0, {     0,      0}, {0x5a, 0x53, 0x1f, 0xff}}},\n    {{{    58,    -84,      0}, 0, {     0,      0}, {0x60, 0xad, 0x00, 0x00}}},\n    {{{    52,    -78,    -44}, 0, {     0,      0}, {0x5e, 0xaf, 0xe8, 0x00}}},\n    {{{    89,    -36,    -44}, 0, {     0,      0}, {0x5e, 0xaf, 0xe8, 0x00}}},\n    {{{    95,    -42,      0}, 0, {     0,      0}, {0x60, 0xad, 0x00, 0xff}}},\n    {{{    89,    -36,     44}, 0, {     0,      0}, {0x5e, 0xaf, 0x18, 0xff}}},\n    {{{    52,    -78,     44}, 0, {     0,      0}, {0x5e, 0xaf, 0x18, 0xff}}},\n    {{{   -78,   -100,      1}, 0, {     0,      0}, {0xd2, 0x9b, 0x3c, 0x00}}},\n    {{{     5,   -130,     16}, 0, {     0,      0}, {0xd2, 0x9b, 0x3c, 0x00}}},\n    {{{     8,    -85,     94}, 0, {     0,      0}, {0xd2, 0x9b, 0x3c, 0x00}}},\n    {{{   -75,    -55,     80}, 0, {     0,      0}, {0xd2, 0x9b, 0x3c, 0xff}}},\n    {{{   -64,     44,     22}, 0, {     0,      0}, {0x9c, 0x46, 0x22, 0x00}}},\n    {{{   -47,     58,     31}, 0, {     0,      0}, {0xb7, 0x5b, 0x30, 0x00}}},\n    {{{   -51,     63,      0}, 0, {     0,      0}, {0xb1, 0x63, 0x00, 0x00}}},\n    {{{   -68,     19,     40}, 0, {     0,      0}, {0x97, 0x1e, 0x3f, 0xff}}},\n    {{{   -36,     45,     57}, 0, {     0,      0}, {0xc8, 0x46, 0x59, 0xff}}},\n    {{{   -61,     -9,     53}, 0, {     0,      0}, {0xa1, 0xf3, 0x52, 0xff}}},\n    {{{   -19,     24,     75}, 0, {     0,      0}, {0xe2, 0x26, 0x75, 0xff}}},\n    {{{   -45,    -36,     57}, 0, {     0,      0}, {0xbb, 0xc8, 0x59, 0xff}}},\n    {{{     0,      0,     81}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -22,    -57,     53}, 0, {     0,      0}, {0xde, 0xa6, 0x52, 0xff}}},\n    {{{    19,    -24,     75}, 0, {     0,      0}, {0x1e, 0xda, 0x75, 0xff}}},\n    {{{     4,    -70,     40}, 0, {     0,      0}, {0x07, 0x93, 0x3f, 0xff}}},\n    {{{    36,    -45,     57}, 0, {     0,      0}, {0x38, 0xba, 0x59, 0xff}}},\n    {{{    30,    -72,     22}, 0, {     0,      0}, {0x2e, 0x90, 0x22, 0xff}}},\n    {{{    47,    -58,     31}, 0, {     0,      0}, {0x49, 0xa5, 0x30, 0xff}}},\n    {{{    51,    -63,      0}, 0, {     0,      0}, {0x4f, 0x9d, 0x00, 0xff}}},\n    {{{   -71,     39,      0}, 0, {     0,      0}, {0x91, 0x3d, 0x00, 0xff}}},\n    {{{   -64,     44,     22}, 0, {     0,      0}, {0x9c, 0x46, 0x22, 0x00}}},\n    {{{   -51,     63,      0}, 0, {     0,      0}, {0xb1, 0x63, 0x00, 0x00}}},\n    {{{   -81,      8,      0}, 0, {     0,      0}, {0x82, 0x0e, 0x00, 0xff}}},\n    {{{   -68,     19,     40}, 0, {     0,      0}, {0x97, 0x1e, 0x3f, 0xff}}},\n    {{{   -78,    -22,      0}, 0, {     0,      0}, {0x87, 0xdd, 0x00, 0xff}}},\n    {{{   -61,     -9,     53}, 0, {     0,      0}, {0xa1, 0xf3, 0x52, 0xff}}},\n    {{{   -63,    -51,      0}, 0, {     0,      0}, {0x9d, 0xb1, 0x00, 0xff}}},\n    {{{   -45,    -36,     57}, 0, {     0,      0}, {0xbb, 0xc8, 0x59, 0xff}}},\n    {{{   -39,    -71,      0}, 0, {     0,      0}, {0xc4, 0x91, 0x00, 0xff}}},\n    {{{   -22,    -57,     53}, 0, {     0,      0}, {0xde, 0xa6, 0x52, 0xff}}},\n    {{{    -8,    -81,      0}, 0, {     0,      0}, {0xf3, 0x82, 0x00, 0xff}}},\n    {{{     4,    -70,     40}, 0, {     0,      0}, {0x07, 0x93, 0x3f, 0xff}}},\n    {{{    22,    -78,      0}, 0, {     0,      0}, {0x23, 0x87, 0x00, 0xff}}},\n    {{{    30,    -72,     22}, 0, {     0,      0}, {0x2e, 0x90, 0x22, 0xff}}},\n    {{{    51,    -63,      0}, 0, {     0,      0}, {0x4f, 0x9d, 0x00, 0xff}}},\n    {{{   -64,     44,    -22}, 0, {     0,      0}, {0x9c, 0x46, 0xde, 0xff}}},\n    {{{   -71,     39,      0}, 0, {     0,      0}, {0x91, 0x3d, 0x00, 0x00}}},\n    {{{   -51,     63,      0}, 0, {     0,      0}, {0xb1, 0x63, 0x00, 0x00}}},\n    {{{   -68,     19,    -40}, 0, {     0,      0}, {0x97, 0x1e, 0xc1, 0xff}}},\n    {{{   -81,      8,      0}, 0, {     0,      0}, {0x82, 0x0e, 0x00, 0xff}}},\n    {{{   -61,     -9,    -53}, 0, {     0,      0}, {0xa1, 0xf3, 0xae, 0xff}}},\n    {{{   -78,    -22,      0}, 0, {     0,      0}, {0x87, 0xdd, 0x00, 0xff}}},\n    {{{   -45,    -36,    -57}, 0, {     0,      0}, {0xbb, 0xc8, 0xa7, 0xff}}},\n    {{{   -63,    -51,      0}, 0, {     0,      0}, {0x9d, 0xb1, 0x00, 0xff}}},\n    {{{   -22,    -57,    -53}, 0, {     0,      0}, {0xde, 0xa6, 0xae, 0xff}}},\n    {{{   -39,    -71,      0}, 0, {     0,      0}, {0xc4, 0x91, 0x00, 0xff}}},\n    {{{     4,    -70,    -40}, 0, {     0,      0}, {0x07, 0x93, 0xc1, 0xff}}},\n    {{{    -8,    -81,      0}, 0, {     0,      0}, {0xf3, 0x82, 0x00, 0xff}}},\n    {{{    30,    -72,    -22}, 0, {     0,      0}, {0x2e, 0x90, 0xde, 0xff}}},\n    {{{    22,    -78,      0}, 0, {     0,      0}, {0x23, 0x87, 0x00, 0xff}}},\n    {{{    51,    -63,      0}, 0, {     0,      0}, {0x4f, 0x9d, 0x00, 0xff}}},\n    {{{   -47,     58,    -31}, 0, {     0,      0}, {0xb7, 0x5b, 0xd0, 0xff}}},\n    {{{   -64,     44,    -22}, 0, {     0,      0}, {0x9c, 0x46, 0xde, 0x00}}},\n    {{{   -51,     63,      0}, 0, {     0,      0}, {0xb1, 0x63, 0x00, 0x00}}},\n    {{{   -36,     45,    -57}, 0, {     0,      0}, {0xc8, 0x46, 0xa7, 0xff}}},\n    {{{   -68,     19,    -40}, 0, {     0,      0}, {0x97, 0x1e, 0xc1, 0xff}}},\n    {{{   -19,     24,    -75}, 0, {     0,      0}, {0xe2, 0x26, 0x8b, 0xff}}},\n    {{{   -61,     -9,    -53}, 0, {     0,      0}, {0xa1, 0xf3, 0xae, 0xff}}},\n    {{{     0,      0,    -81}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -45,    -36,    -57}, 0, {     0,      0}, {0xbb, 0xc8, 0xa7, 0xff}}},\n    {{{    19,    -24,    -75}, 0, {     0,      0}, {0x1e, 0xda, 0x8b, 0xff}}},\n    {{{   -22,    -57,    -53}, 0, {     0,      0}, {0xde, 0xa6, 0xae, 0xff}}},\n    {{{    36,    -45,    -57}, 0, {     0,      0}, {0x38, 0xba, 0xa7, 0xff}}},\n    {{{     4,    -70,    -40}, 0, {     0,      0}, {0x07, 0x93, 0xc1, 0xff}}},\n    {{{    47,    -58,    -31}, 0, {     0,      0}, {0x49, 0xa5, 0xd0, 0xff}}},\n    {{{    30,    -72,    -22}, 0, {     0,      0}, {0x2e, 0x90, 0xde, 0xff}}},\n    {{{    51,    -63,      0}, 0, {     0,      0}, {0x4f, 0x9d, 0x00, 0xff}}},\n    {{{   -30,     72,    -22}, 0, {     0,      0}, {0xd2, 0x70, 0xde, 0xff}}},\n    {{{   -47,     58,    -31}, 0, {     0,      0}, {0xb7, 0x5b, 0xd0, 0x00}}},\n    {{{   -51,     63,      0}, 0, {     0,      0}, {0xb1, 0x63, 0x00, 0x00}}},\n    {{{    -4,     70,    -40}, 0, {     0,      0}, {0xf9, 0x6d, 0xc1, 0xff}}},\n    {{{   -36,     45,    -57}, 0, {     0,      0}, {0xc8, 0x46, 0xa7, 0xff}}},\n    {{{    22,     57,    -53}, 0, {     0,      0}, {0x22, 0x5a, 0xae, 0xff}}},\n    {{{   -19,     24,    -75}, 0, {     0,      0}, {0xe2, 0x26, 0x8b, 0xff}}},\n    {{{    45,     36,    -57}, 0, {     0,      0}, {0x45, 0x38, 0xa7, 0xff}}},\n    {{{     0,      0,    -81}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    61,      9,    -53}, 0, {     0,      0}, {0x5f, 0x0d, 0xae, 0xff}}},\n    {{{    19,    -24,    -75}, 0, {     0,      0}, {0x1e, 0xda, 0x8b, 0xff}}},\n    {{{    68,    -19,    -40}, 0, {     0,      0}, {0x69, 0xe2, 0xc1, 0xff}}},\n    {{{    36,    -45,    -57}, 0, {     0,      0}, {0x38, 0xba, 0xa7, 0xff}}},\n    {{{    64,    -44,    -22}, 0, {     0,      0}, {0x64, 0xba, 0xde, 0xff}}},\n    {{{    47,    -58,    -31}, 0, {     0,      0}, {0x49, 0xa5, 0xd0, 0xff}}},\n    {{{    51,    -63,      0}, 0, {     0,      0}, {0x4f, 0x9d, 0x00, 0xff}}},\n    {{{   -22,     78,      0}, 0, {     0,      0}, {0xdd, 0x79, 0x00, 0xff}}},\n    {{{   -30,     72,    -22}, 0, {     0,      0}, {0xd2, 0x70, 0xde, 0x00}}},\n    {{{   -51,     63,      0}, 0, {     0,      0}, {0xb1, 0x63, 0x00, 0x00}}},\n    {{{     8,     81,      0}, 0, {     0,      0}, {0x0d, 0x7e, 0x00, 0xff}}},\n    {{{    -4,     70,    -40}, 0, {     0,      0}, {0xf9, 0x6d, 0xc1, 0xff}}},\n    {{{    39,     71,      0}, 0, {     0,      0}, {0x3c, 0x6f, 0x00, 0xff}}},\n    {{{    22,     57,    -53}, 0, {     0,      0}, {0x22, 0x5a, 0xae, 0xff}}},\n    {{{    63,     51,      0}, 0, {     0,      0}, {0x63, 0x4f, 0x00, 0xff}}},\n    {{{    45,     36,    -57}, 0, {     0,      0}, {0x45, 0x38, 0xa7, 0xff}}},\n    {{{    78,     22,      0}, 0, {     0,      0}, {0x79, 0x23, 0x00, 0xff}}},\n    {{{    61,      9,    -53}, 0, {     0,      0}, {0x5f, 0x0d, 0xae, 0xff}}},\n    {{{    81,     -8,      0}, 0, {     0,      0}, {0x7e, 0xf2, 0x00, 0xff}}},\n    {{{    68,    -19,    -40}, 0, {     0,      0}, {0x69, 0xe2, 0xc1, 0xff}}},\n    {{{    71,    -39,      0}, 0, {     0,      0}, {0x6f, 0xc3, 0x00, 0xff}}},\n    {{{    64,    -44,    -22}, 0, {     0,      0}, {0x64, 0xba, 0xde, 0xff}}},\n    {{{    51,    -63,      0}, 0, {     0,      0}, {0x4f, 0x9d, 0x00, 0xff}}},\n    {{{   -30,     72,     22}, 0, {     0,      0}, {0xd2, 0x70, 0x22, 0xff}}},\n    {{{   -22,     78,      0}, 0, {     0,      0}, {0xdd, 0x79, 0x00, 0x00}}},\n    {{{   -51,     63,      0}, 0, {     0,      0}, {0xb1, 0x63, 0x00, 0x00}}},\n    {{{    -4,     70,     40}, 0, {     0,      0}, {0xf9, 0x6d, 0x3f, 0xff}}},\n    {{{     8,     81,      0}, 0, {     0,      0}, {0x0d, 0x7e, 0x00, 0xff}}},\n    {{{    22,     57,     53}, 0, {     0,      0}, {0x22, 0x5a, 0x52, 0xff}}},\n    {{{    39,     71,      0}, 0, {     0,      0}, {0x3c, 0x6f, 0x00, 0xff}}},\n    {{{    45,     36,     57}, 0, {     0,      0}, {0x45, 0x38, 0x59, 0xff}}},\n    {{{    63,     51,      0}, 0, {     0,      0}, {0x63, 0x4f, 0x00, 0xff}}},\n    {{{    61,      9,     53}, 0, {     0,      0}, {0x5f, 0x0d, 0x52, 0xff}}},\n    {{{    78,     22,      0}, 0, {     0,      0}, {0x79, 0x23, 0x00, 0xff}}},\n    {{{    68,    -19,     40}, 0, {     0,      0}, {0x69, 0xe2, 0x3f, 0xff}}},\n    {{{    81,     -8,      0}, 0, {     0,      0}, {0x7e, 0xf2, 0x00, 0xff}}},\n    {{{    64,    -44,     22}, 0, {     0,      0}, {0x64, 0xba, 0x22, 0xff}}},\n    {{{    71,    -39,      0}, 0, {     0,      0}, {0x6f, 0xc3, 0x00, 0xff}}},\n    {{{    51,    -63,      0}, 0, {     0,      0}, {0x4f, 0x9d, 0x00, 0xff}}},\n    {{{   -47,     58,     31}, 0, {     0,      0}, {0xb7, 0x5b, 0x30, 0xff}}},\n    {{{   -30,     72,     22}, 0, {     0,      0}, {0xd2, 0x70, 0x22, 0x00}}},\n    {{{   -51,     63,      0}, 0, {     0,      0}, {0xb1, 0x63, 0x00, 0x00}}},\n    {{{   -36,     45,     57}, 0, {     0,      0}, {0xc8, 0x46, 0x59, 0xff}}},\n    {{{    -4,     70,     40}, 0, {     0,      0}, {0xf9, 0x6d, 0x3f, 0xff}}},\n    {{{   -19,     24,     75}, 0, {     0,      0}, {0xe2, 0x26, 0x75, 0xff}}},\n    {{{    22,     57,     53}, 0, {     0,      0}, {0x22, 0x5a, 0x52, 0xff}}},\n    {{{     0,      0,     81}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    45,     36,     57}, 0, {     0,      0}, {0x45, 0x38, 0x59, 0xff}}},\n    {{{    19,    -24,     75}, 0, {     0,      0}, {0x1e, 0xda, 0x75, 0xff}}},\n    {{{    61,      9,     53}, 0, {     0,      0}, {0x5f, 0x0d, 0x52, 0xff}}},\n    {{{    36,    -45,     57}, 0, {     0,      0}, {0x38, 0xba, 0x59, 0xff}}},\n    {{{    68,    -19,     40}, 0, {     0,      0}, {0x69, 0xe2, 0x3f, 0xff}}},\n    {{{    47,    -58,     31}, 0, {     0,      0}, {0x49, 0xa5, 0x30, 0xff}}},\n    {{{    64,    -44,     22}, 0, {     0,      0}, {0x64, 0xba, 0x22, 0xff}}},\n    {{{    51,    -63,      0}, 0, {     0,      0}, {0x4f, 0x9d, 0x00, 0xff}}},\n};\n\n// 0x0500DC18 - 0x0500DD70\nconst Gfx wiggler_seg5_dl_0500DC18[] = {\n    gsSPLight(&wiggler_seg5_lights_0500C878.l, 1),\n    gsSPLight(&wiggler_seg5_lights_0500C878.a, 2),\n    gsSPVertex(wiggler_seg5_vertex_0500C8D8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(wiggler_seg5_vertex_0500C9D8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  2, 0x0,  6,  2,  5, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12,  8, 0x0),\n    gsSP2Triangles( 9, 13,  7, 0x0, 10,  8,  6, 0x0),\n    gsSP2Triangles(14, 13,  9, 0x0, 14,  9, 15, 0x0),\n    gsSP2Triangles( 2,  7, 13, 0x0,  2, 13,  0, 0x0),\n    gsSP2Triangles( 6,  4, 10, 0x0,  6,  5,  4, 0x0),\n    gsSPVertex(wiggler_seg5_vertex_0500CAD8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  1, 0x0,  4,  1,  6, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  7,  9,  6, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP2Triangles(10, 13, 14, 0x0, 10, 14, 15, 0x0),\n    gsSPVertex(wiggler_seg5_vertex_0500CBD8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500DD70 - 0x0500DDF8\nconst Gfx wiggler_seg5_dl_0500DD70[] = {\n    gsSPLight(&wiggler_seg5_lights_0500C890.l, 1),\n    gsSPLight(&wiggler_seg5_lights_0500C890.a, 2),\n    gsSPVertex(wiggler_seg5_vertex_0500CC18, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  0,  3, 0x0,  8,  3,  9, 0x0),\n    gsSP2Triangles( 1,  4,  7, 0x0,  1,  7,  2, 0x0),\n    gsSP2Triangles( 5,  8,  9, 0x0,  5,  9,  6, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle(10, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500DDF8 - 0x0500DE80\nconst Gfx wiggler_seg5_dl_0500DDF8[] = {\n    gsSPLight(&wiggler_seg5_lights_0500C890.l, 1),\n    gsSPLight(&wiggler_seg5_lights_0500C890.a, 2),\n    gsSPVertex(wiggler_seg5_vertex_0500CD08, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  0,  3, 0x0,  8,  3,  9, 0x0),\n    gsSP2Triangles( 1,  4,  7, 0x0,  1,  7,  2, 0x0),\n    gsSP2Triangles( 5,  8,  9, 0x0,  5,  9,  6, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle(10, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500DE80 - 0x0500DFD8\nconst Gfx wiggler_seg5_dl_0500DE80[] = {\n    gsSPLight(&wiggler_seg5_lights_0500C878.l, 1),\n    gsSPLight(&wiggler_seg5_lights_0500C878.a, 2),\n    gsSPVertex(wiggler_seg5_vertex_0500CDF8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(wiggler_seg5_vertex_0500CEF8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  0,  6, 0x0,  3,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9,  7, 0x0,  8,  7,  6, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 11, 12, 0x0),\n    gsSP2Triangles( 6, 13,  8, 0x0,  7,  9, 12, 0x0),\n    gsSP2Triangles(14,  8, 13, 0x0, 14, 13, 15, 0x0),\n    gsSP2Triangles( 2, 13,  6, 0x0,  2,  6,  0, 0x0),\n    gsSP2Triangles(12,  3,  7, 0x0, 12,  4,  3, 0x0),\n    gsSPVertex(wiggler_seg5_vertex_0500CFF8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  2,  5, 0x0,  4,  5,  6, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7,  4,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP2Triangles(10, 13, 14, 0x0, 10, 14, 15, 0x0),\n    gsSPVertex(wiggler_seg5_vertex_0500D0F8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500DFD8 - 0x0500E060\nconst Gfx wiggler_seg5_dl_0500DFD8[] = {\n    gsSPLight(&wiggler_seg5_lights_0500C890.l, 1),\n    gsSPLight(&wiggler_seg5_lights_0500C890.a, 2),\n    gsSPVertex(wiggler_seg5_vertex_0500D138, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  0,  3, 0x0,  8,  3,  9, 0x0),\n    gsSP2Triangles( 1,  4,  7, 0x0,  1,  7,  2, 0x0),\n    gsSP2Triangles( 5,  8,  9, 0x0,  5,  9,  6, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle(10, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500E060 - 0x0500E0E8\nconst Gfx wiggler_seg5_dl_0500E060[] = {\n    gsSPLight(&wiggler_seg5_lights_0500C890.l, 1),\n    gsSPLight(&wiggler_seg5_lights_0500C890.a, 2),\n    gsSPVertex(wiggler_seg5_vertex_0500D228, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  0,  3, 0x0,  8,  3,  9, 0x0),\n    gsSP2Triangles( 1,  4,  7, 0x0,  1,  7,  2, 0x0),\n    gsSP2Triangles( 5,  8,  9, 0x0,  5,  9,  6, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle(10, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500E0E8\nstatic const Vtx wiggler_seg5_vertex_0500E0E8[] = {\n    {{{     0,     15,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -15,    -15,      0}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    -15,      0}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -15,     15,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500E128\nstatic const Vtx wiggler_seg5_vertex_0500E128[] = {\n    {{{    15,     15,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    -15,      0}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    15,    -15,      0}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,     15,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500E168 - 0x0500E1A0\nconst Gfx wiggler_seg5_dl_0500E168[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wiggler_seg5_texture_05009230),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wiggler_seg5_vertex_0500E0E8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500E1A0 - 0x0500E1D8\nconst Gfx wiggler_seg5_dl_0500E1A0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wiggler_seg5_texture_0500A230),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wiggler_seg5_vertex_0500E128, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500E1D8 - 0x0500E250\nconst Gfx wiggler_seg5_dl_0500E1D8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wiggler_seg5_dl_0500E168),\n    gsSPDisplayList(wiggler_seg5_dl_0500E1A0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500E250\nstatic const Vtx wiggler_seg5_vertex_0500E250[] = {\n    {{{    58,     87,      0}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    84,     50,     23}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    88,     54,      0}, 0, {   478,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    54,     83,    -21}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    84,     50,    -21}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    54,     83,     23}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500E2B0 - 0x0500E2F8\nconst Gfx wiggler_seg5_dl_0500E2B0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wiggler_seg5_texture_05008A30),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wiggler_seg5_vertex_0500E250, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 2,  4,  3, 0x0,  0,  5,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500E2F8 - 0x0500E368\nconst Gfx wiggler_seg5_dl_0500E2F8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wiggler_seg5_dl_0500E2B0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500E368\nstatic const Vtx wiggler_seg5_vertex_0500E368[] = {\n    {{{    58,    -82,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    88,    -35,    -43}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    94,    -40,      0}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    51,    -77,    -43}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    94,    -40,      0}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    51,    -77,     44}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    58,    -82,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    88,    -35,     44}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500E3E8 - 0x0500E430\nconst Gfx wiggler_seg5_dl_0500E3E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wiggler_seg5_texture_05007A30),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wiggler_seg5_vertex_0500E368, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500E430 - 0x0500E4A0\nconst Gfx wiggler_seg5_dl_0500E430[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wiggler_seg5_dl_0500E3E8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500E4A0\nstatic const Vtx wiggler_seg5_vertex_0500E4A0[] = {\n    {{{   -77,    -98,      2}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     8,    -83,     94}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -74,    -53,     79}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     6,   -128,     16}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500E4E0 - 0x0500E518\nconst Gfx wiggler_seg5_dl_0500E4E0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wiggler_seg5_texture_05008230),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wiggler_seg5_vertex_0500E4A0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500E518 - 0x0500E588\nconst Gfx wiggler_seg5_dl_0500E518[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wiggler_seg5_dl_0500E4E0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500E588\nstatic const Vtx wiggler_seg5_vertex_0500E588[] = {\n    {{{     0,     26,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -26,    -26,      0}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    -26,      0}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -26,     26,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500E5C8\nstatic const Vtx wiggler_seg5_vertex_0500E5C8[] = {\n    {{{    26,     26,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    -26,      0}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    26,    -26,      0}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,     26,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0500E608 - 0x0500E640\nconst Gfx wiggler_seg5_dl_0500E608[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wiggler_seg5_texture_05005A30),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wiggler_seg5_vertex_0500E588, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500E640 - 0x0500E678\nconst Gfx wiggler_seg5_dl_0500E640[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wiggler_seg5_texture_05006A30),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wiggler_seg5_vertex_0500E5C8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0500E678 - 0x0500E6F0\nconst Gfx wiggler_seg5_dl_0500E678[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wiggler_seg5_dl_0500E608),\n    gsSPDisplayList(wiggler_seg5_dl_0500E640),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/wooden_signpost/collision.inc.c",
    "content": "// Wooden Signpost\n\n// 0x0302DD80 - 0x0302DE04\nconst Collision wooden_signpost_seg3_collision_0302DD80[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-44, -9, -12),\n    COL_VERTEX(-44, 126, 20),\n    COL_VERTEX(-44, 126, -12),\n    COL_VERTEX(45, 126, 20),\n    COL_VERTEX(45, 126, -12),\n    COL_VERTEX(45, -9, -12),\n    COL_VERTEX(-44, -9, 20),\n    COL_VERTEX(45, -9, 20),\n\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(2, 1, 3),\n    COL_TRI(2, 3, 4),\n    COL_TRI(5, 0, 2),\n    COL_TRI(5, 2, 4),\n    COL_TRI(6, 3, 1),\n    COL_TRI(0, 6, 1),\n    COL_TRI(7, 4, 3),\n    COL_TRI(6, 7, 3),\n    COL_TRI(7, 5, 4),\n    COL_TRI(5, 7, 6),\n    COL_TRI(5, 6, 0),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "actors/wooden_signpost/geo.inc.c",
    "content": "// 0x16000FB4\nconst GeoLayout wooden_signpost_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xC8, 60),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, wooden_signpost_seg3_dl_0302DA48),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, wooden_signpost_seg3_dl_0302DD08),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/wooden_signpost/model.inc.c",
    "content": "// Signpost\n\n// 0x0302C940\nstatic const Lights1 wooden_signpost_seg3_lights_0302C940 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0302C958\nstatic const Vtx wooden_signpost_seg3_vertex_0302C958[] = {\n    {{{     0,    504,     19}, 0, {   962,    478}, {0x00, 0x7e, 0xfc, 0xff}}},\n    {{{    24,    490,     34}, 0, {   938,    780}, {0x62, 0x3b, 0x36, 0xff}}},\n    {{{     0,    490,     -6}, 0, {   938,    478}, {0xff, 0x39, 0x90, 0xff}}},\n    {{{   -23,    490,     34}, 0, {   938,    178}, {0x9e, 0x3a, 0x36, 0xff}}},\n    {{{     0,    -39,     34}, 0, {    36,    478}, {0x00, 0xfc, 0x7e, 0xff}}},\n    {{{   -23,    -39,     -6}, 0, {    36,    178}, {0x93, 0x00, 0xc1, 0xff}}},\n    {{{    24,    -39,     -6}, 0, {    36,    780}, {0x6d, 0x00, 0xc0, 0xff}}},\n};\n\n// 0x0302C9C8\nALIGNED8 static const Texture wooden_signpost_seg3_texture_0302C9C8[] = {\n#include \"actors/wooden_signpost/wooden_signpost_back.rgba16.inc.c\"\n};\n\n// 0x0302D1C8\nALIGNED8 static const Texture wooden_signpost_seg3_texture_0302D1C8[] = {\n#include \"actors/wooden_signpost/wooden_signpost_front.rgba16.inc.c\"\n};\n\n// 0x0302D9C8 - 0x0302DA48\nconst Gfx wooden_signpost_seg3_dl_0302D9C8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wooden_signpost_seg3_texture_0302C9C8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wooden_signpost_seg3_lights_0302C940.l, 1),\n    gsSPLight(&wooden_signpost_seg3_lights_0302C940.a, 2),\n    gsSPVertex(wooden_signpost_seg3_vertex_0302C958, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 0,  3,  1, 0x0,  4,  1,  3, 0x0),\n    gsSP2Triangles( 3,  5,  4, 0x0,  5,  3,  2, 0x0),\n    gsSP2Triangles( 2,  6,  5, 0x0,  1,  4,  6, 0x0),\n    gsSP1Triangle( 6,  2,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0302DA48 - 0x0302DAA8\nconst Gfx wooden_signpost_seg3_dl_0302DA48[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wooden_signpost_seg3_dl_0302D9C8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0302DAA8\nstatic const Lights1 wooden_signpost_seg3_lights_0302DAA8 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0302DAC0\nstatic const Vtx wooden_signpost_seg3_vertex_0302DAC0[] = {\n    {{{   180,    260,     20}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -179,    260,     60}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -179,    260,     20}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   180,    260,     20}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -179,    260,     20}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -179,    460,     20}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -179,    260,     20}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -179,    260,     60}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -179,    460,     60}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -179,    460,     20}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   180,    260,     60}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -179,    460,     20}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -179,    460,     60}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   180,    460,     60}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   180,    460,     20}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   180,    460,     20}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0302DBC0\nstatic const Vtx wooden_signpost_seg3_vertex_0302DBC0[] = {\n    {{{   180,    260,     60}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   180,    460,     20}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   180,    460,     60}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   180,    260,     20}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0302DC00\nstatic const Vtx wooden_signpost_seg3_vertex_0302DC00[] = {\n    {{{  -179,    260,     60}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   180,    460,     60}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -179,    460,     60}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   180,    260,     60}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0302DC40 - 0x0302DCD0\nconst Gfx wooden_signpost_seg3_dl_0302DC40[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wooden_signpost_seg3_texture_0302C9C8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wooden_signpost_seg3_lights_0302DAA8.l, 1),\n    gsSPLight(&wooden_signpost_seg3_lights_0302DAA8.a, 2),\n    gsSPVertex(wooden_signpost_seg3_vertex_0302DAC0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 0, 10,  1, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles( 3,  5, 14, 0x0, 11, 13, 15, 0x0),\n    gsSPVertex(wooden_signpost_seg3_vertex_0302DBC0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0302DCD0 - 0x0302DD08\nconst Gfx wooden_signpost_seg3_dl_0302DCD0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wooden_signpost_seg3_texture_0302D1C8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wooden_signpost_seg3_vertex_0302DC00, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0302DD08 - 0x0302DD80\nconst Gfx wooden_signpost_seg3_dl_0302DD08[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wooden_signpost_seg3_dl_0302DC40),\n    gsSPDisplayList(wooden_signpost_seg3_dl_0302DCD0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/yellow_sphere/geo.inc.c",
    "content": "// 0x0D0000B0\nconst GeoLayout bowser_1_yellow_sphere_geo[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_BILLBOARD(),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, yellow_sphere_seg6_dl_0601F3C0),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/yellow_sphere/model.inc.c",
    "content": "// Yellow Sphere (used in a lot of things)\n\n// 0x0601EB48\nstatic const Vtx yellow_sphere_seg6_vertex_0601EB48[] = {\n    {{{   -76,    -76,      0}, 0, {     0,    992}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    77,    -76,      0}, 0, {   992,    992}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    77,     77,      0}, 0, {   992,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -76,     77,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0601EB88\nALIGNED8 static const Texture yellow_sphere_seg6_texture_0601EB88[] = {\n#include \"actors/yellow_sphere/yellow_sphere.rgba16.inc.c\"\n};\n\n// 0x0601F388 - 0x0601F3C0\nconst Gfx yellow_sphere_seg6_dl_0601F388[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, yellow_sphere_seg6_texture_0601EB88),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(yellow_sphere_seg6_vertex_0601EB48, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0601F3C0 - 0x0601F430\nconst Gfx yellow_sphere_seg6_dl_0601F3C0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(yellow_sphere_seg6_dl_0601F388),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/yellow_sphere_small/geo.inc.c",
    "content": "// 0x0C000000\nconst GeoLayout yellow_sphere_geo[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, yellow_sphere_seg5_dl_050008C8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/yellow_sphere_small/model.inc.c",
    "content": "// Yellow Sphere (used in a lot of things)\n\n// 0x05000000\nstatic const Vtx yellow_sphere_seg5_vertex_05000000[] = {\n    {{{   -49,    -49,      0}, 0, {     0,    992}, {0xb5, 0x20, 0x40, 0xff}}},\n    {{{    50,    -49,      0}, 0, {   992,    992}, {0xb5, 0x20, 0x40, 0xff}}},\n    {{{    50,     50,      0}, 0, {   992,      0}, {0xb5, 0x20, 0x40, 0xff}}},\n    {{{   -49,     50,      0}, 0, {     0,      0}, {0xb5, 0x20, 0x40, 0xff}}},\n};\n\n// 0x05000040\nALIGNED8 static const Texture yellow_sphere_seg5_texture_05000040[] = {\n#include \"actors/yellow_sphere_small/small_yellow_sphere.rgba16.inc.c\"\n};\n\n// 0x05000840 - 0x05000888\nconst Gfx yellow_sphere_seg5_dl_05000840[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x05000888 - 0x050008C8\nconst Gfx yellow_sphere_seg5_dl_05000888[] = {\n    gsSPVertex(yellow_sphere_seg5_vertex_05000000, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x050008C8 - 0x050008F8\nconst Gfx yellow_sphere_seg5_dl_050008C8[] = {\n    gsSPDisplayList(yellow_sphere_seg5_dl_05000840),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, yellow_sphere_seg5_texture_05000040),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(yellow_sphere_seg5_dl_05000888),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/yoshi/anims/anim_050233A4.inc.c",
    "content": "// 0x050227D8\nstatic const s16 yoshi_seg5_animvalue_050227D8[] = {\n    0x0000, 0x0120, 0x0120, 0x011E, 0x011C, 0x0119, 0x0116, 0x0113,\n    0x010F, 0x010C, 0x010A, 0x0107, 0x0106, 0x0105, 0x0106, 0x0107,\n    0x0109, 0x010B, 0x010E, 0x0111, 0x0114, 0x0117, 0x011A, 0x011D,\n    0x011F, 0x0120, 0x0120, 0x0120, 0x011E, 0x011C, 0x0119, 0x0116,\n    0x0113, 0x010F, 0x010C, 0x010A, 0x0107, 0x0106, 0x0105, 0x0106,\n    0x0107, 0x0109, 0x010C, 0x010F, 0x0112, 0x0116, 0x0119, 0x011C,\n    0x011E, 0x0120, 0x0120, 0xFFF2, 0xFFF3, 0xFFF3, 0xFFF5, 0xFFF6,\n    0xFFF8, 0xFFFA, 0xFFFC, 0xFFFD, 0xFFFF, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xFFFF, 0xFFFE, 0xFFFC, 0xFFFB, 0xFFF9, 0xFFF7,\n    0xFFF6, 0xFFF4, 0xFFF3, 0xFFF3, 0xFFF2, 0xFFF3, 0xFFF3, 0xFFF5,\n    0xFFF6, 0xFFF8, 0xFFFA, 0xFFFC, 0xFFFD, 0xFFFF, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFD, 0xFFFC, 0xFFFA, 0xFFF8,\n    0xFFF6, 0xFFF5, 0xFFF4, 0xFFF3, 0xFFF2, 0x3FFF, 0xA69D, 0xA6E1,\n    0xA7A0, 0xA8C3, 0xAA33, 0xABDB, 0xADA5, 0xAF79, 0xB142, 0xB2EA,\n    0xB45B, 0xB57D, 0xB63C, 0xB681, 0xB678, 0xB65D, 0xB631, 0xB5F7,\n    0xB5AD, 0xB556, 0xB4F3, 0xB484, 0xB40B, 0xB389, 0xB2FE, 0xB26C,\n    0xB1D3, 0xB136, 0xB094, 0xAFEF, 0xAF47, 0xAE9F, 0xADF7, 0xAD4F,\n    0xACA9, 0xAC07, 0xAB68, 0xAACF, 0xAA3B, 0xA9AF, 0xA92B, 0xA8B0,\n    0xA83F, 0xA7D9, 0xA780, 0xA734, 0xA6F6, 0xA6C8, 0xA6AA, 0xA69D,\n    0x2432, 0x2458, 0x24C4, 0x2572, 0x2659, 0x2776, 0x28C0, 0x2A33,\n    0x2BC7, 0x2D78, 0x2F3D, 0x3113, 0x32F1, 0x34D3, 0x36B1, 0x3887,\n    0x3A4C, 0x3BFD, 0x3D91, 0x3F04, 0x404E, 0x416B, 0x4252, 0x4300,\n    0x436C, 0x4392, 0x4369, 0x42F6, 0x423E, 0x4147, 0x401A, 0x3EBD,\n    0x3D35, 0x3B8C, 0x39C6, 0x37EB, 0x3602, 0x3412, 0x3220, 0x3036,\n    0x2E57, 0x2C8D, 0x2ADE, 0x294F, 0x27E9, 0x26B2, 0x25B1, 0x24EC,\n    0x246B, 0x2434, 0xCA58, 0xCA37, 0xC9D8, 0xC93F, 0xC872, 0xC777,\n    0xC653, 0xC50C, 0xC3A6, 0xC229, 0xC098, 0xBEF9, 0xBD53, 0xBBAA,\n    0xBA03, 0xB865, 0xB6D4, 0xB556, 0xB3F1, 0xB2AA, 0xB186, 0xB08B,\n    0xAFBE, 0xAF25, 0xAEC5, 0xAEA4, 0xAEC7, 0xAF2D, 0xAFD0, 0xB0AA,\n    0xB1B4, 0xB2E8, 0xB442, 0xB5BA, 0xB74B, 0xB8EE, 0xBA9E, 0xBC54,\n    0xBE0B, 0xBFBD, 0xC163, 0xC2F8, 0xC475, 0xC5D5, 0xC711, 0xC824,\n    0xC907, 0xC9B4, 0xCA27, 0xCA57, 0xB176, 0xB180, 0xB19A, 0xB1C5,\n    0xB1FE, 0xB244, 0xB296, 0xB2F1, 0xB355, 0xB3C0, 0xB430, 0xB4A4,\n    0xB51A, 0xB591, 0xB607, 0xB67B, 0xB6EB, 0xB755, 0xB7B9, 0xB814,\n    0xB866, 0xB8AC, 0xB8E5, 0xB910, 0xB92B, 0xB934, 0xB92A, 0xB90E,\n    0xB8E0, 0xB8A3, 0xB859, 0xB803, 0xB7A2, 0xB739, 0xB6C9, 0xB654,\n    0xB5DC, 0xB561, 0xB4E6, 0xB46D, 0xB3F7, 0xB386, 0xB31C, 0xB2B9,\n    0xB261, 0xB214, 0xB1D5, 0xB1A4, 0xB184, 0xB177, 0x2432, 0x2458,\n    0x24C4, 0x2572, 0x2659, 0x2776, 0x28C0, 0x2A33, 0x2BC7, 0x2D78,\n    0x2F3D, 0x3113, 0x32F1, 0x34D3, 0x36B1, 0x3887, 0x3A4C, 0x3BFD,\n    0x3D91, 0x3F04, 0x404E, 0x416B, 0x4252, 0x4300, 0x436C, 0x4392,\n    0x4369, 0x42F4, 0x4238, 0x413F, 0x400D, 0x3EAB, 0x3D1E, 0x3B6F,\n    0x39A4, 0x37C5, 0x35D7, 0x33E2, 0x31ED, 0x2FFF, 0x2E20, 0x2C55,\n    0x2AA5, 0x2919, 0x27B7, 0x2685, 0x258B, 0x24D0, 0x245B, 0x2432,\n    0xCA58, 0xCA37, 0xC9D8, 0xC93F, 0xC872, 0xC777, 0xC653, 0xC50C,\n    0xC3A6, 0xC229, 0xC098, 0xBEF9, 0xBD53, 0xBBAA, 0xBA03, 0xB865,\n    0xB6D4, 0xB556, 0xB3F1, 0xB2AA, 0xB186, 0xB08B, 0xAFBE, 0xAF25,\n    0xAEC5, 0xAEA4, 0xAEC8, 0xAF30, 0xAFD5, 0xB0B1, 0xB1BF, 0xB2F8,\n    0xB456, 0xB5D3, 0xB768, 0xB910, 0xBAC4, 0xBC7E, 0xBE39, 0xBFED,\n    0xC194, 0xC32A, 0xC4A6, 0xC604, 0xC73D, 0xC84B, 0xC928, 0xC9CD,\n    0xCA35, 0xCA58, 0xB176, 0xB180, 0xB19A, 0xB1C5, 0xB1FE, 0xB244,\n    0xB296, 0xB2F1, 0xB355, 0xB3C0, 0xB430, 0xB4A4, 0xB51A, 0xB591,\n    0xB607, 0xB67B, 0xB6EB, 0xB755, 0xB7B9, 0xB814, 0xB866, 0xB8AC,\n    0xB8E5, 0xB910, 0xB92B, 0xB934, 0xB92A, 0xB90D, 0xB8DF, 0xB8A1,\n    0xB856, 0xB7FE, 0xB79D, 0xB732, 0xB6C1, 0xB64B, 0xB5D1, 0xB555,\n    0xB4DA, 0xB460, 0xB3E9, 0xB378, 0xB30E, 0xB2AC, 0xB255, 0xB209,\n    0xB1CC, 0xB19D, 0xB180, 0xB176, 0xFD4A, 0xFD50, 0xFD62, 0xFD7D,\n    0xFD9F, 0xFDC6, 0xFDEE, 0xFE17, 0xFE3E, 0xFE60, 0xFE7B, 0xFE8D,\n    0xFE93, 0xFE8E, 0xFE7E, 0xFE67, 0xFE49, 0xFE26, 0xFE01, 0xFDDB,\n    0xFDB6, 0xFD94, 0xFD76, 0xFD5F, 0xFD4F, 0xFD4A, 0xFD43, 0xFD2F,\n    0xFD12, 0xFCED, 0xFCC3, 0xFC97, 0xFC6A, 0xFC40, 0xFC1C, 0xFBFE,\n    0xFBEB, 0xFBE4, 0xFBEA, 0xFBFD, 0xFC1A, 0xFC3E, 0xFC67, 0xFC92,\n    0xFCBE, 0xFCE8, 0xFD0D, 0xFD2B, 0xFD40, 0xFD49, 0xFAFB, 0xFB08,\n    0xFB2C, 0xFB61, 0xFBA5, 0xFBF1, 0xFC42, 0xFC93, 0xFCDF, 0xFD22,\n    0xFD58, 0xFD7B, 0xFD88, 0xFD7D, 0xFD5F, 0xFD30, 0xFCF5, 0xFCB1,\n    0xFC67, 0xFC1C, 0xFBD3, 0xFB8F, 0xFB54, 0xFB25, 0xFB06, 0xFAFB,\n    0xFAF1, 0xFAD5, 0xFAAA, 0xFA75, 0xFA38, 0xF9F8, 0xF9B8, 0xF97B,\n    0xF946, 0xF91B, 0xF8FF, 0xF8F5, 0xF8FE, 0xF91A, 0xF943, 0xF977,\n    0xF9B3, 0xF9F2, 0xFA31, 0xFA6D, 0xFAA3, 0xFACF, 0xFAED, 0xFAFB,\n    0xBD4B, 0xBD13, 0xBC78, 0xBB8E, 0xBA68, 0xB91B, 0xB7BB, 0xB65A,\n    0xB50D, 0xB3E8, 0xB2FE, 0xB263, 0xB22B, 0xB25B, 0xB2E0, 0xB3AC,\n    0xB4AE, 0xB5D7, 0xB717, 0xB85F, 0xB99F, 0xBAC8, 0xBBCA, 0xBC95,\n    0xBD1B, 0xBD4B, 0xBD14, 0xBC7E, 0xBB9A, 0xBA7D, 0xB93A, 0xB7E3,\n    0xB68C, 0xB549, 0xB42C, 0xB348, 0xB2B2, 0xB27B, 0xB2B0, 0xB342,\n    0xB41F, 0xB535, 0xB672, 0xB7C2, 0xB915, 0xBA56, 0xBB75, 0xBC5F,\n    0xBD01, 0xBD49, 0x328A, 0x32EC, 0x33FC, 0x3598, 0x379B, 0x39E5,\n    0x3C51, 0x3EBD, 0x4106, 0x430A, 0x44A5, 0x45B5, 0x4618, 0x45C4,\n    0x44D9, 0x4373, 0x41AE, 0x3FA4, 0x3D71, 0x3B30, 0x38FE, 0x36F4,\n    0x352E, 0x33C9, 0x32DE, 0x328A, 0x32EC, 0x33FC, 0x3598, 0x379B,\n    0x39E5, 0x3C51, 0x3EBD, 0x4106, 0x430A, 0x44A5, 0x45B5, 0x4618,\n    0x45B8, 0x44B0, 0x4320, 0x4129, 0x3EEC, 0x3C8C, 0x3A28, 0x37E2,\n    0x35DB, 0x3435, 0x3310, 0x328D, 0x0423, 0x0418, 0x03F9, 0x03CA,\n    0x038F, 0x034D, 0x0306, 0x02BE, 0x027B, 0x023E, 0x020E, 0x01EC,\n    0x01DE, 0x01E2, 0x01F4, 0x0212, 0x0238, 0x0266, 0x0299, 0x02CE,\n    0x0305, 0x0339, 0x036A, 0x0395, 0x03B8, 0x03D1, 0x03E1, 0x03E9,\n    0x03ED, 0x03EB, 0x03E7, 0x03E0, 0x03D8, 0x03CF, 0x03C7, 0x03C1,\n    0x03BF, 0x03C0, 0x03C4, 0x03CC, 0x03D5, 0x03DF, 0x03EA, 0x03F5,\n    0x0401, 0x040B, 0x0414, 0x041C, 0x0421, 0x0423, 0x034F, 0x0349,\n    0x033A, 0x0322, 0x0305, 0x02E3, 0x02BF, 0x029B, 0x0278, 0x025A,\n    0x0241, 0x022F, 0x0227, 0x0227, 0x022C, 0x0236, 0x0244, 0x0255,\n    0x0268, 0x027E, 0x0296, 0x02AE, 0x02C7, 0x02E0, 0x02F7, 0x030E,\n    0x0326, 0x0343, 0x0363, 0x0385, 0x03A8, 0x03CA, 0x03EB, 0x0409,\n    0x0423, 0x0438, 0x0446, 0x044D, 0x044B, 0x043F, 0x042B, 0x0412,\n    0x03F5, 0x03D5, 0x03B6, 0x0397, 0x037C, 0x0366, 0x0356, 0x034F,\n    0xA49B, 0xA476, 0xA40E, 0xA371, 0xA2AD, 0xA1CE, 0xA0E2, 0x9FF6,\n    0x9F17, 0x9E52, 0x9DB5, 0x9D4D, 0x9D27, 0x9D47, 0x9DA0, 0x9E27,\n    0x9ED3, 0x9F99, 0xA06E, 0xA149, 0xA21E, 0xA2E5, 0xA391, 0xA41A,\n    0xA474, 0xA495, 0xA471, 0xA40D, 0xA374, 0xA2B4, 0xA1DA, 0xA0F3,\n    0xA00C, 0x9F32, 0x9E71, 0x9DD8, 0x9D72, 0x9D4E, 0x9D71, 0x9DD4,\n    0x9E6A, 0x9F26, 0x9FFC, 0xA0DF, 0xA1C3, 0xA29C, 0xA35E, 0xA3FC,\n    0xA469, 0xA49A, 0x154F, 0x1572, 0x15D2, 0x1664, 0x171B, 0x17EA,\n    0x18C6, 0x19A1, 0x1A71, 0x1B27, 0x1BB9, 0x1C19, 0x1C3C, 0x1C1E,\n    0x1BCB, 0x1B4D, 0x1AAC, 0x19F3, 0x192C, 0x1860, 0x1798, 0x16DF,\n    0x163F, 0x15C0, 0x156D, 0x154F, 0x1572, 0x15D2, 0x1664, 0x171B,\n    0x17EA, 0x18C6, 0x19A1, 0x1A71, 0x1B27, 0x1BB9, 0x1C19, 0x1C3C,\n    0x1C1A, 0x1BBD, 0x1B2F, 0x1A7D, 0x19B2, 0x18DB, 0x1802, 0x1734,\n    0x167C, 0x15E6, 0x157F, 0x1550, 0x051A, 0x0521, 0x0534, 0x0551,\n    0x0575, 0x059D, 0x05C9, 0x05F4, 0x061D, 0x0640, 0x065D, 0x0670,\n    0x0677, 0x0671, 0x0661, 0x0648, 0x0628, 0x0604, 0x05DD, 0x05B5,\n    0x058D, 0x0569, 0x0549, 0x0530, 0x0520, 0x051A, 0x0521, 0x0534,\n    0x0551, 0x0575, 0x059D, 0x05C9, 0x05F4, 0x061D, 0x0640, 0x065D,\n    0x0670, 0x0677, 0x0670, 0x065E, 0x0642, 0x061F, 0x05F7, 0x05CD,\n    0x05A2, 0x057A, 0x0555, 0x0538, 0x0524, 0x051B, 0x094E, 0x0956,\n    0x096C, 0x098E, 0x09B7, 0x09E7, 0x0A19, 0x0A4C, 0x0A7B, 0x0AA5,\n    0x0AC7, 0x0ADD, 0x0AE5, 0x0ADE, 0x0ACB, 0x0AAE, 0x0A89, 0x0A5F,\n    0x0A31, 0x0A02, 0x09D4, 0x09AA, 0x0985, 0x0968, 0x0955, 0x094E,\n    0x0956, 0x096C, 0x098E, 0x09B7, 0x09E7, 0x0A19, 0x0A4C, 0x0A7B,\n    0x0AA5, 0x0AC7, 0x0ADD, 0x0AE5, 0x0ADD, 0x0AC8, 0x0AA7, 0x0A7E,\n    0x0A50, 0x0A1E, 0x09EC, 0x09BD, 0x0993, 0x0971, 0x0959, 0x094E,\n    0xBDB6, 0xBD80, 0xBCEB, 0xBC09, 0xBAEF, 0xB9AE, 0xB85A, 0xB707,\n    0xB5C6, 0xB4AB, 0xB3CA, 0xB335, 0xB2FF, 0xB32D, 0xB3AE, 0xB472,\n    0xB56A, 0xB688, 0xB7BC, 0xB8F8, 0xBA2D, 0xBB4B, 0xBC43, 0xBD07,\n    0xBD88, 0xBDB6, 0xBD80, 0xBCEB, 0xBC09, 0xBAEF, 0xB9AE, 0xB85A,\n    0xB707, 0xB5C6, 0xB4AB, 0xB3CA, 0xB335, 0xB2FF, 0xB333, 0xB3C4,\n    0xB49F, 0xB5B3, 0xB6ED, 0xB83A, 0xB989, 0xBAC8, 0xBBE4, 0xBCCC,\n    0xBD6C, 0xBDB4, 0x328A, 0x32EC, 0x33FC, 0x3598, 0x379B, 0x39E5,\n    0x3C51, 0x3EBD, 0x4106, 0x430A, 0x44A5, 0x45B5, 0x4618, 0x45C4,\n    0x44D9, 0x4373, 0x41AE, 0x3FA4, 0x3D71, 0x3B30, 0x38FE, 0x36F4,\n    0x352E, 0x33C9, 0x32DE, 0x328A, 0x32EC, 0x33FC, 0x3598, 0x379B,\n    0x39E5, 0x3C51, 0x3EBD, 0x4106, 0x430A, 0x44A5, 0x45B5, 0x4618,\n    0x45B8, 0x44B0, 0x4320, 0x4129, 0x3EEC, 0x3C8C, 0x3A28, 0x37E2,\n    0x35DB, 0x3435, 0x3310, 0x328D, 0xFC2F, 0xFC33, 0xFC3F, 0xFC52,\n    0xFC69, 0xFC83, 0xFC9F, 0xFCBB, 0xFCD5, 0xFCEC, 0xFCFF, 0xFD0B,\n    0xFD0F, 0xFD0B, 0xFD01, 0xFCF1, 0xFCDD, 0xFCC5, 0xFCAC, 0xFC92,\n    0xFC79, 0xFC61, 0xFC4D, 0xFC3D, 0xFC33, 0xFC2F, 0xFC33, 0xFC3F,\n    0xFC52, 0xFC69, 0xFC83, 0xFC9F, 0xFCBB, 0xFCD5, 0xFCEC, 0xFCFF,\n    0xFD0B, 0xFD0F, 0xFD0B, 0xFCFF, 0xFCED, 0xFCD7, 0xFCBD, 0xFCA2,\n    0xFC86, 0xFC6C, 0xFC55, 0xFC42, 0xFC35, 0xFC2F, 0xFCF2, 0xFCF0,\n    0xFCEC, 0xFCE5, 0xFCDC, 0xFCD3, 0xFCC8, 0xFCBE, 0xFCB4, 0xFCAB,\n    0xFCA5, 0xFCA0, 0xFC9E, 0xFCA0, 0xFCA4, 0xFCAA, 0xFCB1, 0xFCBA,\n    0xFCC3, 0xFCCD, 0xFCD6, 0xFCDF, 0xFCE7, 0xFCED, 0xFCF1, 0xFCF2,\n    0xFCF0, 0xFCEC, 0xFCE5, 0xFCDC, 0xFCD3, 0xFCC8, 0xFCBE, 0xFCB4,\n    0xFCAB, 0xFCA5, 0xFCA0, 0xFC9E, 0xFCA0, 0xFCA4, 0xFCAB, 0xFCB3,\n    0xFCBD, 0xFCC7, 0xFCD1, 0xFCDB, 0xFCE4, 0xFCEB, 0xFCF0, 0xFCF2,\n    0xA495, 0xA470, 0xA409, 0xA36F, 0xA2AD, 0xA1D1, 0xA0E7, 0x9FFE,\n    0x9F22, 0x9E60, 0x9DC6, 0x9D5F, 0x9D3A, 0x9D5A, 0x9DB2, 0x9E39,\n    0x9EE3, 0x9FA7, 0xA07B, 0xA154, 0xA228, 0xA2EC, 0xA396, 0xA41D,\n    0xA475, 0xA495, 0xA470, 0xA409, 0xA36F, 0xA2AD, 0xA1D1, 0xA0E7,\n    0x9FFE, 0x9F22, 0x9E60, 0x9DC6, 0x9D5F, 0x9D3A, 0x9D5E, 0x9DC1,\n    0x9E58, 0x9F15, 0x9FEC, 0xA0D1, 0xA1B7, 0xA292, 0xA355, 0xA3F4,\n    0xA462, 0xA494, 0xBD95, 0xA543, 0x8948, 0xA543, 0x8948, 0xF6E8,\n    0xF714, 0xF78D, 0xF849, 0xF93D, 0xFA5B, 0xFB9A, 0xFCED, 0xFE48,\n    0xFFA0, 0x00E9, 0x0218, 0x0320, 0x0420, 0x0535, 0x0659, 0x0784,\n    0x08AE, 0x09D1, 0x0AE6, 0x0BE4, 0x0CC4, 0x0D7F, 0x0E0E, 0x0E69,\n    0x0E89, 0x0E63, 0x0DF6, 0x0D4E, 0x0C73, 0x0B70, 0x0A4E, 0x0917,\n    0x07D4, 0x0691, 0x0556, 0x042D, 0x0320, 0x0211, 0x00E0, 0xFF9A,\n    0xFE46, 0xFCF1, 0xFBA5, 0xFA6C, 0xF952, 0xF860, 0xF7A2, 0xF722,\n    0xF6EA, 0xE7AF, 0xE7B7, 0xE7CE, 0xE7F0, 0xE81B, 0xE84C, 0xE87F,\n    0xE8B3, 0xE8E4, 0xE90F, 0xE931, 0xE948, 0xE950, 0xE949, 0xE935,\n    0xE918, 0xE8F2, 0xE8C6, 0xE897, 0xE867, 0xE839, 0xE80D, 0xE7E7,\n    0xE7C9, 0xE7B6, 0xE7AF, 0xE7B7, 0xE7CE, 0xE7F0, 0xE81B, 0xE84C,\n    0xE87F, 0xE8B3, 0xE8E4, 0xE90F, 0xE931, 0xE948, 0xE950, 0xE948,\n    0xE932, 0xE911, 0xE8E7, 0xE8B7, 0xE884, 0xE851, 0xE821, 0xE7F6,\n    0xE7D2, 0xE7BA, 0xE7AF, 0x8948, 0xE406, 0xE3F9, 0xE3D7, 0xE3A4,\n    0xE363, 0xE31A, 0xE2CD, 0xE27F, 0xE236, 0xE1F6, 0xE1C2, 0xE1A0,\n    0xE194, 0xE19E, 0xE1BC, 0xE1E8, 0xE221, 0xE262, 0xE2A9, 0xE2F1,\n    0xE337, 0xE378, 0xE3B1, 0xE3DE, 0xE3FB, 0xE406, 0xE3F9, 0xE3D7,\n    0xE3A4, 0xE363, 0xE31A, 0xE2CD, 0xE27F, 0xE236, 0xE1F6, 0xE1C2,\n    0xE1A0, 0xE194, 0xE1A0, 0xE1C1, 0xE1F3, 0xE232, 0xE279, 0xE2C5,\n    0xE312, 0xE35B, 0xE39B, 0xE3D0, 0xE3F5, 0xE405, 0x76B8, 0x0000,\n};\n\n// 0x05023278\nstatic const u16 yoshi_seg5_animindex_5023278[] = {\n    0x0001, 0x0000, 0x0032, 0x0001, 0x0032, 0x0033, 0x0001, 0x0000, 0x0001, 0x0065, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x054E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x051C,\n    0x0032, 0x04B7, 0x0001, 0x0000, 0x0032, 0x04E9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x04B2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x0066,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x04B5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x00FC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x00CA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x0098,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x04B3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x0192,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x0160,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x012E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x051B,\n    0x0032, 0x028C, 0x0032, 0x02BE, 0x0032, 0x02F0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x025A,\n    0x0032, 0x01C4, 0x0032, 0x01F6, 0x0032, 0x0228,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x04B6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x0322,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x04B4,\n    0x0032, 0x041C, 0x0032, 0x044E, 0x0032, 0x0480,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x03EA,\n    0x0032, 0x0354, 0x0032, 0x0386, 0x0032, 0x03B8,\n};\n\n// 0x050233A4\nstatic const struct Animation yoshi_seg5_anim_050233A4 = {\n    0,\n    0,\n    0,\n    0,\n    0x32,\n    ANIMINDEX_NUMPARTS(yoshi_seg5_animindex_5023278),\n    yoshi_seg5_animvalue_050227D8,\n    yoshi_seg5_animindex_5023278,\n    0,\n};\n"
  },
  {
    "path": "actors/yoshi/anims/anim_05023E4C.inc.c",
    "content": "// 0x050233BC\nstatic const s16 yoshi_seg5_animvalue_050233BC[] = {\n    0x0000, 0x013D, 0x0138, 0x012C, 0x011C, 0x010B, 0x00FA, 0x00EF,\n    0x00EA, 0x00ED, 0x00F7, 0x0104, 0x0113, 0x0123, 0x0130, 0x0139,\n    0x013D, 0x0139, 0x012F, 0x0121, 0x0111, 0x0103, 0x00F9, 0x00F5,\n    0x00F9, 0x0103, 0x0111, 0x0121, 0x012F, 0x0139, 0xFFF2, 0x3FFF,\n    0x9C6D, 0x9CDD, 0x9DFE, 0x9F88, 0xA136, 0xA2C1, 0xA3E1, 0xA451,\n    0xA3E3, 0xA2C8, 0xA142, 0x9F99, 0x9E0F, 0x9CEA, 0x9C6D, 0x9CC4,\n    0x9DBF, 0x9F1D, 0xA09D, 0xA200, 0xA304, 0xA369, 0xA31C, 0xA252,\n    0xA133, 0x9FEB, 0x9EA3, 0x9D85, 0x9CBA, 0xF639, 0xF6C4, 0xF82A,\n    0xFA13, 0xFC27, 0xFE10, 0xFF76, 0x0000, 0xFF95, 0xFE79, 0xFCE8,\n    0xFB1D, 0xF951, 0xF7C0, 0xF6A5, 0xF639, 0xF6C4, 0xF82A, 0xFA13,\n    0xFC27, 0xFE10, 0xFF76, 0x0000, 0xFF76, 0xFE10, 0xFC27, 0xFA13,\n    0xF82A, 0xF6C4, 0x35C7, 0x3674, 0x3833, 0x3A97, 0x3D31, 0x3F94,\n    0x4153, 0x4200, 0x417A, 0x4017, 0x3E22, 0x3BE4, 0x39A5, 0x37B0,\n    0x364E, 0x35C7, 0x3674, 0x3833, 0x3A97, 0x3D31, 0x3F94, 0x4153,\n    0x4200, 0x4153, 0x3F94, 0x3D31, 0x3A97, 0x3833, 0x3674, 0xC68E,\n    0xC56D, 0xC284, 0xBE8A, 0xBA34, 0xB639, 0xB350, 0xB22F, 0xB30F,\n    0xB55E, 0xB8A1, 0xBC5F, 0xC01C, 0xC35F, 0xC5AE, 0xC68E, 0xC56D,\n    0xC284, 0xBE8A, 0xBA34, 0xB639, 0xB350, 0xB22F, 0xB350, 0xB639,\n    0xBA34, 0xBE8A, 0xC284, 0xC56D, 0x1580, 0x14CF, 0x1305, 0x1093,\n    0x0DE9, 0x0B77, 0x09AE, 0x08FC, 0x0986, 0x0AF1, 0x0CF2, 0x0F3E,\n    0x118A, 0x138B, 0x14F6, 0x1580, 0x14CF, 0x1305, 0x1093, 0x0DE9,\n    0x0B77, 0x09AE, 0x08FC, 0x09AE, 0x0B77, 0x0DE9, 0x1093, 0x1305,\n    0x14CF, 0x058C, 0x05DE, 0x06B0, 0x07CF, 0x0909, 0x0A28, 0x0AFA,\n    0x0B4C, 0x0B0D, 0x0A66, 0x097A, 0x086C, 0x075E, 0x0672, 0x05CB,\n    0x058C, 0x05DE, 0x06B0, 0x07CF, 0x0909, 0x0A28, 0x0AFA, 0x0B4C,\n    0x0AFA, 0x0A28, 0x0909, 0x07CF, 0x06B0, 0x05DE, 0xA5D5, 0xA5BE,\n    0xA585, 0xA535, 0xA4DF, 0xA490, 0xA456, 0xA440, 0xA451, 0xA47F,\n    0xA4C0, 0xA50A, 0xA555, 0xA596, 0xA5C3, 0xA5D5, 0xA5BE, 0xA585,\n    0xA535, 0xA4DF, 0xA490, 0xA456, 0xA440, 0xA456, 0xA490, 0xA4DF,\n    0xA535, 0xA585, 0xA5BE, 0x930A, 0x91FC, 0x8F44, 0x8B8C, 0x877F,\n    0x83C7, 0x810F, 0x8001, 0x80D3, 0x82FB, 0x8607, 0x8986, 0x8D04,\n    0x9011, 0x9239, 0x930A, 0x91FC, 0x8F44, 0x8B8C, 0x877F, 0x83C7,\n    0x810F, 0x8001, 0x810F, 0x83C7, 0x877F, 0x8B8C, 0x8F44, 0x91FC,\n    0x76FF, 0x777E, 0x78C7, 0x7A89, 0x7C74, 0x7E36, 0x7F7F, 0x8001,\n    0x7F9C, 0x7E97, 0x7D26, 0x7B7F, 0x79D8, 0x7867, 0x7762, 0x76FF,\n    0x777E, 0x78C7, 0x7A89, 0x7C74, 0x7E36, 0x7F7F, 0x8001, 0x7F7F,\n    0x7E36, 0x7C74, 0x7A89, 0x78C7, 0x777E, 0xB86B, 0xB8B4, 0xB96E,\n    0xBA6E, 0xBB84, 0xBC84, 0xBD3E, 0xBD87, 0xBD4F, 0xBCBB, 0xBBE9,\n    0xBAF9, 0xBA09, 0xB937, 0xB8A3, 0xB86B, 0xB8B4, 0xB96E, 0xBA6E,\n    0xBB84, 0xBC84, 0xBD3E, 0xBD87, 0xBD3E, 0xBC84, 0xBB84, 0xBA6E,\n    0xB96E, 0xB8B4, 0x8001, 0x8001, 0x3F9F, 0x3F54, 0x3E92, 0x3D89,\n    0x3C69, 0x3B60, 0x3A9E, 0x3A53, 0x3A8D, 0x3B27, 0x3C00, 0x3CF9,\n    0x3DF2, 0x3ECB, 0x3F65, 0x3F9F, 0x3F54, 0x3E92, 0x3D89, 0x3C69,\n    0x3B60, 0x3A9E, 0x3A53, 0x3A9E, 0x3B60, 0x3C69, 0x3D89, 0x3E92,\n    0x3F54, 0xE168, 0xE255, 0xE4B7, 0xE7F9, 0xEB86, 0xEEC8, 0xF12A,\n    0xF216, 0xF15F, 0xEF7B, 0xECCF, 0xE9BF, 0xE6AF, 0xE403, 0xE220,\n    0xE168, 0xE255, 0xE4B7, 0xE7F9, 0xEB86, 0xEEC8, 0xF12A, 0xF216,\n    0xF12A, 0xEEC8, 0xEB86, 0xE7F9, 0xE4B7, 0xE255, 0xFB41, 0xFAF9,\n    0xFA3E, 0xF93F, 0xF829, 0xF72A, 0xF66F, 0xF627, 0xF65F, 0xF6F3,\n    0xF7C4, 0xF8B4, 0xF9A4, 0xFA75, 0xFB09, 0xFB41, 0xFAF9, 0xFA3E,\n    0xF93F, 0xF829, 0xF72A, 0xF66F, 0xF627, 0xF66F, 0xF72A, 0xF829,\n    0xF93F, 0xFA3E, 0xFAF9, 0xAF35, 0xAE74, 0xAC84, 0xA9DD, 0xA6FA,\n    0xA453, 0xA263, 0xA1A2, 0xA238, 0xA3C1, 0xA5EE, 0xA86C, 0xAAE9,\n    0xAD16, 0xAEA0, 0xAF35, 0xAE74, 0xAC84, 0xA9DD, 0xA6FA, 0xA453,\n    0xA263, 0xA1A2, 0xA263, 0xA453, 0xA6FA, 0xA9DD, 0xAC84, 0xAE74,\n    0xFD99, 0xFDA1, 0xFDB8, 0xFDD6, 0xFDF8, 0xFE16, 0xFE2C, 0xFE35,\n    0xFE2F, 0xFE20, 0xFE0B, 0xFDF1, 0xFDD6, 0xFDBC, 0xFDA6, 0xFD96,\n    0xFD8F, 0xFD91, 0xFD98, 0xFDA2, 0xFDB6, 0xFDCF, 0xFDDE, 0xFDD7,\n    0xFDC4, 0xFDB5, 0xFDAB, 0xFDA2, 0xFD9B, 0x006F, 0x0054, 0x000B,\n    0xFFA8, 0xFF3A, 0xFED2, 0xFE82, 0xFE5A, 0xFE59, 0xFE6D, 0xFE93,\n    0xFEC4, 0xFEFD, 0xFF38, 0xFF71, 0xFFA3, 0xFFE2, 0x002E, 0x0068,\n    0x006F, 0xFFFF, 0xFF45, 0xFECB, 0xFEC8, 0xFEFB, 0xFF3D, 0xFF8F,\n    0xFFF5, 0x004B, 0xBE55, 0xBC5D, 0xB740, 0xB034, 0xA86D, 0xA120,\n    0x9B80, 0x98C3, 0x98C6, 0x9A5A, 0x9D26, 0xA0CE, 0xA4F7, 0xA946,\n    0xAD60, 0xB0EA, 0xB530, 0xBA4C, 0xBE18, 0xBE6C, 0xB6C9, 0xAA42,\n    0xA210, 0xA1E6, 0xA575, 0xA9F5, 0xAF69, 0xB62A, 0xBBE8, 0xFD29,\n    0xFD2A, 0xFD2C, 0xFD2E, 0xFD32, 0xFD35, 0xFD39, 0xFD3D, 0xFD40,\n    0xFD43, 0xFD45, 0xFD48, 0xFD4B, 0xFD50, 0xFD57, 0xFD60, 0xFD74,\n    0xFD93, 0xFDAE, 0xFDB7, 0xFD9A, 0xFD66, 0xFD41, 0xFD3D, 0xFD44,\n    0xFD48, 0xFD41, 0xFD37, 0xFD2D, 0xFFBF, 0xFFCE, 0xFFF4, 0x0027,\n    0x005D, 0x008D, 0x00AB, 0x00AD, 0x0093, 0x0066, 0x002B, 0xFFE8,\n    0xFFA0, 0xFF59, 0xFF19, 0xFEE4, 0xFEB3, 0xFE88, 0xFE77, 0xFE95,\n    0xFF2F, 0x0011, 0x008D, 0x0034, 0xFF7A, 0xFF03, 0xFF10, 0xFF52,\n    0xFF9C, 0x4411, 0x44EB, 0x4717, 0x4A02, 0x4D18, 0x4FC5, 0x5177,\n    0x5198, 0x5020, 0x4D94, 0x4A3D, 0x4662, 0x424C, 0x3E43, 0x3A8E,\n    0x3776, 0x3453, 0x3147, 0x2FC5, 0x3142, 0x3A71, 0x4817, 0x4FC8,\n    0x4B04, 0x408D, 0x39D8, 0x3A80, 0x3E1E, 0x4227, 0xBBA9, 0xBB48,\n    0xBA3D, 0xB8AD, 0xB6BD, 0xB493, 0xB252, 0xB020, 0xADCD, 0xAB29,\n    0xA854, 0xA570, 0xA29D, 0x9FFF, 0x9DB5, 0x9BE2, 0x9B15, 0x9B70,\n    0x9C6B, 0x9D81, 0x9E25, 0x9F47, 0xA2A1, 0xABC8, 0xB82E, 0xC05C,\n    0xC1A3, 0xBFCC, 0xBD11, 0x0166, 0x0157, 0x012F, 0x00F6, 0x00B3,\n    0x006F, 0x0030, 0x0000, 0xFFD9, 0xFFB2, 0xFF8F, 0xFF70, 0xFF58,\n    0xFF48, 0xFF42, 0xFF46, 0xFF52, 0xFF65, 0xFF7D, 0xFF99, 0xFFBA,\n    0xFFDC, 0x0000, 0x002E, 0x006C, 0x00B0, 0x00F4, 0x012E, 0x0157,\n    0x0585, 0x054A, 0x04AC, 0x03C9, 0x02C2, 0x01B4, 0x00BE, 0x0000,\n    0xFF69, 0xFED8, 0xFE54, 0xFDE4, 0xFD8C, 0xFD52, 0xFD3E, 0xFD4D,\n    0xFD77, 0xFDBA, 0xFE12, 0xFE7B, 0xFEF3, 0xFF76, 0x0000, 0x00B6,\n    0x01A8, 0x02B7, 0x03C1, 0x04A7, 0x0548, 0x0A48, 0x0B41, 0x0DC2,\n    0x112F, 0x14EB, 0x1858, 0x1ADA, 0x1BD4, 0x1ADD, 0x185E, 0x14F4,\n    0x113B, 0x0DD1, 0x0B51, 0x0A59, 0x0B19, 0x0D15, 0x0FE2, 0x1318,\n    0x164D, 0x191A, 0x1B15, 0x1BD4, 0x1ADA, 0x1858, 0x14EB, 0x112F,\n    0x0DC2, 0x0B41, 0x0271, 0x0272, 0x0271, 0x026D, 0x0261, 0x0244,\n    0x021D, 0x0205, 0x0201, 0x0203, 0x020A, 0x0214, 0x0221, 0x0239,\n    0x025A, 0x026D, 0x026A, 0x025D, 0x024D, 0x0242, 0x023D, 0x023C,\n    0x0241, 0x024E, 0x0260, 0x026D, 0x0272, 0x0273, 0x0272, 0x0006,\n    0xFFF7, 0xFFD8, 0xFFC5, 0xFFD9, 0x004A, 0x00F0, 0x0156, 0x0161,\n    0x014E, 0x0127, 0x00FA, 0x00D2, 0x00A4, 0x006E, 0x004A, 0x0040,\n    0x0042, 0x004B, 0x0058, 0x0072, 0x0095, 0x00A1, 0x007F, 0x0047,\n    0x001D, 0x000D, 0x0006, 0x0005, 0xB69B, 0xB7B2, 0xB9C0, 0xBAF9,\n    0xB98E, 0xB1BB, 0xA647, 0x9F37, 0x9E52, 0x9F83, 0xA202, 0xA507,\n    0xA7C9, 0xAB3A, 0xAF64, 0xB222, 0xB2DC, 0xB2AA, 0xB1EB, 0xB0FF,\n    0xAF24, 0xACC0, 0xABF1, 0xAE49, 0xB235, 0xB51C, 0xB634, 0xB69F,\n    0xB6A9, 0x829F, 0x829C, 0x8296, 0x8291, 0x8290, 0x8299, 0x82A9,\n    0x82B6, 0x82BE, 0x82C6, 0x82CD, 0x82D3, 0x82D8, 0x82DB, 0x82DB,\n    0x82D6, 0x82CF, 0x82C5, 0x82B8, 0x82A4, 0x827A, 0x8247, 0x8231,\n    0x8257, 0x829C, 0x82C9, 0x82CB, 0x82BC, 0x82A9, 0x7EDC, 0x7ED6,\n    0x7ED0, 0x7EDC, 0x7F0B, 0x7F98, 0x805C, 0x80D3, 0x80E3, 0x80CE,\n    0x80A4, 0x8071, 0x8044, 0x8006, 0x7FBB, 0x7FA7, 0x7FDC, 0x8039,\n    0x80A1, 0x80FE, 0x8160, 0x81BD, 0x81DB, 0x818B, 0x80FC, 0x8073,\n    0x7FF4, 0x7F6F, 0x7F06, 0xB710, 0xB6A7, 0xB628, 0xB6AF, 0xB956,\n    0xC17A, 0xCCBD, 0xD3AD, 0xD4A4, 0xD381, 0xD114, 0xCE2F, 0xCBA3,\n    0xC816, 0xC3FD, 0xC2DB, 0xC5D8, 0xCAED, 0xD0D3, 0xD647, 0xDC63,\n    0xE273, 0xE475, 0xDF83, 0xD683, 0xCE26, 0xC6E5, 0xBF5D, 0xB974,\n    0x9970, 0x997B, 0x99B3, 0x9A36, 0x9B26, 0x9C74, 0x9E70, 0xA1C8,\n    0xA69C, 0xAC45, 0xB24A, 0xB831, 0xBD82, 0xC29C, 0xC6F4, 0xC8B3,\n    0xC7C3, 0xC556, 0xC180, 0xBC54, 0xB3E2, 0xA904, 0x9FFB, 0x9A24,\n    0x9623, 0x9424, 0x9471, 0x9652, 0x986F, 0xBD95, 0x8001, 0x8001,\n    0x2541, 0x8948, 0xA543, 0x8948, 0x067A, 0x063C, 0x0595, 0x04A1,\n    0x037C, 0x0242, 0x010F, 0x0000, 0xFEF0, 0xFDB7, 0xFC6D, 0xFB29,\n    0xFA03, 0xF911, 0xF86C, 0xF82A, 0xF88C, 0xF999, 0xFB11, 0xFCB7,\n    0xFE4B, 0xFF8E, 0x00A1, 0x01C8, 0x02F1, 0x0409, 0x0501, 0x05C7,\n    0x064B, 0xFF4F, 0xFF56, 0xFF68, 0xFF82, 0xFFA1, 0xFFC3, 0xFFE4,\n    0x0000, 0x001D, 0x003F, 0x0062, 0x0083, 0x009F, 0x00B2, 0x00B9,\n    0x00B2, 0x009E, 0x0082, 0x0060, 0x003D, 0x001C, 0x0000, 0xFFE6,\n    0xFFCA, 0xFFAC, 0xFF90, 0xFF76, 0xFF62, 0xFF54, 0xDF49, 0xE03F,\n    0xE2BA, 0xE61E, 0xE9D0, 0xED35, 0xEFB0, 0xF0A5, 0xEFAF, 0xED32,\n    0xE9CD, 0xE61A, 0xE2B4, 0xE038, 0xDF42, 0xE038, 0xE2B4, 0xE61A,\n    0xE9CD, 0xED32, 0xEFAF, 0xF0A5, 0xEFE7, 0xEDEF, 0xEB28, 0xE7F7,\n    0xE4C7, 0xE1FF, 0xE008, 0x8948, 0xFA6B, 0xFA8A, 0xFADF, 0xFB60,\n    0xFC03, 0xFCBE, 0xFD86, 0xFE51, 0xFF42, 0x006E, 0x01BB, 0x030C,\n    0x0443, 0x0545, 0x05F4, 0x0635, 0x05E0, 0x04FD, 0x03BA, 0x0241,\n    0x00BF, 0xFF61, 0xFE51, 0xFD7A, 0xFCAD, 0xFBF3, 0xFB54, 0xFAD8,\n    0xFA88, 0x01D5, 0x0199, 0x00FB, 0x001C, 0xFF20, 0xFE25, 0xFD4F,\n    0xFCBF, 0xFC6C, 0xFC35, 0xFC14, 0xFC05, 0xFC03, 0xFC07, 0xFC0E,\n    0xFC11, 0xFC0E, 0xFC08, 0xFC07, 0xFC12, 0xFC2F, 0xFC67, 0xFCBF,\n    0xFD55, 0xFE2E, 0xFF28, 0x0022, 0x00FE, 0x019A, 0xEE08, 0xED14,\n    0xEA9C, 0xE73D, 0xE390, 0xE030, 0xDDB8, 0xDCC1, 0xDD7C, 0xDF6D,\n    0xE22C, 0xE553, 0xE879, 0xEB39, 0xED2B, 0xEDE8, 0xECF5, 0xEA81,\n    0xE726, 0xE37F, 0xE026, 0xDDB3, 0xDCC1, 0xDDB8, 0xE031, 0xE391,\n    0xE73D, 0xEA9C, 0xED14, 0x01FC, 0x0210, 0x0243, 0x0287, 0x02CF,\n    0x030C, 0x032F, 0x032C, 0x02F5, 0x0291, 0x0211, 0x0186, 0x0101,\n    0x0092, 0x0031, 0xFFD0, 0xFF72, 0xFF1D, 0xFED8, 0xFEA9, 0xFE94,\n    0xFEAD, 0xFEFB, 0xFF6F, 0xFFF9, 0x008A, 0x0116, 0x018C, 0x01DD,\n    0x0075, 0x007B, 0x0088, 0x009A, 0x00AC, 0x00BB, 0x00C1, 0x00BC,\n    0x00A9, 0x008E, 0x006C, 0x0045, 0x001E, 0xFFF8, 0xFFD6, 0xFFBA,\n    0xFFA1, 0xFF89, 0xFF72, 0xFF60, 0xFF54, 0xFF51, 0xFF59, 0xFF72,\n    0xFF9F, 0xFFD6, 0x000F, 0x0042, 0x0067, 0x76BB, 0x76BB, 0x76BB,\n    0x76BC, 0x76BD, 0x76BE, 0x76BF, 0x76BF, 0x76BF, 0x76BE, 0x76BE,\n    0x76BD, 0x76BC, 0x76BB, 0x76BB, 0x76BB, 0x76BB, 0x76BB, 0x76BC,\n    0x76BD, 0x76BD, 0x76BE, 0x76BE, 0x76BE, 0x76BD, 0x76BD, 0x76BC,\n    0x76BB, 0x76BB,\n};\n\n// 0x05023D20\nstatic const u16 yoshi_seg5_animindex_5023D20[] = {\n    0x0001, 0x0000, 0x001D, 0x0001, 0x0001, 0x001E, 0x0001, 0x0000, 0x0001, 0x001F, 0x0001, 0x0000,\n    0x001D, 0x045B, 0x001D, 0x0478, 0x001D, 0x0495,\n    0x001D, 0x0404, 0x001D, 0x0421, 0x001D, 0x043E,\n    0x001D, 0x03AC, 0x001D, 0x03C9, 0x001D, 0x03E6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x03A5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001D, 0x0020,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x03AA,\n    0x001D, 0x0094, 0x001D, 0x00B1, 0x001D, 0x00CE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001D, 0x0077,\n    0x001D, 0x003D, 0x0001, 0x0000, 0x001D, 0x005A,\n    0x0001, 0x03A6, 0x0001, 0x03A7, 0x0001, 0x03A8,\n    0x001D, 0x0161, 0x001D, 0x017E, 0x001D, 0x019B,\n    0x0001, 0x0142, 0x0001, 0x0143, 0x001D, 0x0144,\n    0x001D, 0x00EB, 0x001D, 0x0108, 0x001D, 0x0125,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0403,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001D, 0x0266,\n    0x001D, 0x020F, 0x001D, 0x022C, 0x001D, 0x0249,\n    0x001D, 0x01B8, 0x001D, 0x01D5, 0x001D, 0x01F2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x03AB,\n    0x001D, 0x0283, 0x001D, 0x02A0, 0x001D, 0x02BD,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x03A9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001D, 0x0388,\n    0x001D, 0x0331, 0x001D, 0x034E, 0x001D, 0x036B,\n    0x001D, 0x02DA, 0x001D, 0x02F7, 0x001D, 0x0314,\n};\n\n// 0x05023E4C\nstatic const struct Animation yoshi_seg5_anim_05023E4C = {\n    0,\n    0,\n    0,\n    0,\n    0x1D,\n    ANIMINDEX_NUMPARTS(yoshi_seg5_animindex_5023D20),\n    yoshi_seg5_animvalue_050233BC,\n    yoshi_seg5_animindex_5023D20,\n    0,\n};\n"
  },
  {
    "path": "actors/yoshi/anims/anim_050240E8.inc.c",
    "content": "// 0x05023E64\nstatic const s16 yoshi_seg5_animvalue_05023E64[] = {\n    0x0000, 0x0104, 0x0113, 0x0136, 0x0161, 0x0186, 0x0198, 0xFFF2,\n    0x3FFF, 0xA69D, 0x26A4, 0x2666, 0x25D1, 0x251C, 0x2480, 0x2434,\n    0xBC7E, 0xBCE6, 0xBDDF, 0xBF0C, 0xC011, 0xC08F, 0xA747, 0xA9D4,\n    0xAFF4, 0xB75E, 0xBDC7, 0xC0E6, 0x2ECA, 0x2DBD, 0x2B36, 0x2826,\n    0x2581, 0x2437, 0xB86B, 0xBA3E, 0xBE9E, 0xC3E9, 0xC87E, 0xCAB9,\n    0xA676, 0xA87C, 0xAD59, 0xB33B, 0xB852, 0xBACC, 0xFFA4, 0xFF2F,\n    0xFE15, 0xFCC1, 0xFB9B, 0xFB0C, 0xFA4F, 0xFA98, 0xFB48, 0xFC1D,\n    0xFCD5, 0xFD2E, 0xABA1, 0xAFA7, 0xB950, 0xC501, 0xCF1E, 0xD40A,\n    0x48F2, 0x46D7, 0x41C9, 0x3BAA, 0x3660, 0x33CC, 0x031B, 0x0343,\n    0x03AA, 0x0433, 0x04C3, 0x053C, 0x044B, 0x03EE, 0x0309, 0x01E2,\n    0x00C1, 0xFFEF, 0x999A, 0x9CC1, 0xA49C, 0xAEC5, 0xB8D5, 0xC064,\n    0x1A9B, 0x1964, 0x1679, 0x12F2, 0x0FE4, 0x0E68, 0x0170, 0x0248,\n    0x0450, 0x06C6, 0x08E6, 0x09EF, 0x0A7F, 0x09D1, 0x0830, 0x0637,\n    0x0483, 0x03AE, 0xAEA5, 0xB30B, 0xBD9B, 0xCA64, 0xD573, 0xDAD5,\n    0x4547, 0x42DA, 0x3D04, 0x35F5, 0x2FDA, 0x2CE0, 0xFD05, 0xFCE1,\n    0xFC89, 0xFC12, 0xFB96, 0xFB2D, 0xFC20, 0xFC79, 0xFD54, 0xFE6D,\n    0xFF7E, 0x0042, 0x9ACD, 0x9E06, 0xA608, 0xB05A, 0xBA83, 0xC20A,\n    0xBD95, 0xA543, 0x8948, 0xA543, 0x8948, 0xF7AD, 0xF79A, 0xF76E,\n    0xF738, 0xF709, 0xF6F2, 0xFC52, 0xFCC4, 0xFDD7, 0xFF23, 0x0041,\n    0x00CD, 0xD6F3, 0xD8F8, 0xDDD0, 0xE3AE, 0xE8C1, 0xEB39, 0x8948,\n    0xF10F, 0xF069, 0xEEDB, 0xECF9, 0xEB58, 0xEA8D, 0x7D3D, 0x7BAA,\n    0x77C5, 0x72C9, 0x6DF2, 0x6A7E,\n};\n\n// 0x05023FBC\nstatic const u16 yoshi_seg5_animindex_5023FBC[] = {\n    0x0001, 0x0000, 0x0006, 0x0001, 0x0001, 0x0007, 0x0001, 0x0000, 0x0001, 0x0008, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0006, 0x00A6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0006, 0x00A0,\n    0x0006, 0x008D, 0x0006, 0x0093, 0x0006, 0x0099,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0088,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0009,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x008B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0006, 0x0016,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0006, 0x0010,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0006, 0x000A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0089,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0006, 0x0028,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0006, 0x0022,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0006, 0x001C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x009F,\n    0x0006, 0x0046, 0x0006, 0x004C, 0x0006, 0x0052,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0006, 0x0040,\n    0x0006, 0x002E, 0x0006, 0x0034, 0x0006, 0x003A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x008C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0006, 0x0058,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x008A,\n    0x0006, 0x0076, 0x0006, 0x007C, 0x0006, 0x0082,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0006, 0x0070,\n    0x0006, 0x005E, 0x0006, 0x0064, 0x0006, 0x006A,\n};\n\n// 0x050240E8\nstatic const struct Animation yoshi_seg5_anim_050240E8 = {\n    0,\n    0,\n    0,\n    0,\n    0x06,\n    ANIMINDEX_NUMPARTS(yoshi_seg5_animindex_5023FBC),\n    yoshi_seg5_animvalue_05023E64,\n    yoshi_seg5_animindex_5023FBC,\n    0,\n};\n"
  },
  {
    "path": "actors/yoshi/anims/data.inc.c",
    "content": "#include \"anim_050233A4.inc.c\"\n#include \"anim_05023E4C.inc.c\"\n#include \"anim_050240E8.inc.c\"\n"
  },
  {
    "path": "actors/yoshi/anims/table.inc.c",
    "content": "// 0x05024100\nconst struct Animation *const yoshi_seg5_anims_05024100[] = {\n    &yoshi_seg5_anim_050233A4,\n    &yoshi_seg5_anim_05023E4C,\n    &yoshi_seg5_anim_050240E8,\n    NULL,\n};\n"
  },
  {
    "path": "actors/yoshi/geo.inc.c",
    "content": "// 0x0C000468\nconst GeoLayout yoshi_geo[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xC8, 100),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 16384),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, yoshi_seg5_dl_05022608),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 100, 0, 0, yoshi_seg5_dl_05022408),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 222, 0, 0, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_SWITCH_CASE(2, geo_switch_anim_state),\n                            GEO_OPEN_NODE(),\n                                GEO_DISPLAY_LIST(LAYER_OPAQUE, yoshi_seg5_dl_0501D970),\n                                GEO_DISPLAY_LIST(LAYER_OPAQUE, yoshi_seg5_dl_0501D998),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 76, 49, 0, NULL),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, yoshi_seg5_dl_050212B0),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 51, 55, 97, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, yoshi_seg5_dl_05021678),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 74, 0, 0, yoshi_seg5_dl_050215D8),\n                                GEO_OPEN_NODE(),\n                                    GEO_ANIMATED_PART(LAYER_OPAQUE, 69, 0, 0, yoshi_seg5_dl_05021490),\n                                GEO_CLOSE_NODE(),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 51, 55, -97, NULL),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, yoshi_seg5_dl_05021900),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 74, 0, 0, yoshi_seg5_dl_05021860),\n                                GEO_OPEN_NODE(),\n                                    GEO_ANIMATED_PART(LAYER_OPAQUE, 69, 0, 0, yoshi_seg5_dl_05021718),\n                                GEO_CLOSE_NODE(),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -1, 27, 95, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, yoshi_seg5_dl_05021CD8),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 100, 0, 0, yoshi_seg5_dl_05021B90),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 95, 0, 0, yoshi_seg5_dl_050219A0),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -89, -62, 0, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, yoshi_seg5_dl_05021E38),\n                    GEO_CLOSE_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, -1, 27, -95, NULL),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, yoshi_seg5_dl_050222A8),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 100, 0, 0, yoshi_seg5_dl_05022160),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 95, 0, 0, yoshi_seg5_dl_05021F70),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/yoshi/model.inc.c",
    "content": "// Yoshi\n\n// 0x0501C458\nstatic const Lights1 yoshi_seg5_lights_0501C458 = gdSPDefLights1(\n    0x00, 0x7c, 0x00,\n    0x00, 0xf9, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x0501C470\nstatic const Lights1 yoshi_seg5_lights_0501C470 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0501C488\nstatic const Lights1 yoshi_seg5_lights_0501C488 = gdSPDefLights1(\n    0x7f, 0x00, 0x00,\n    0xff, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x0501C4A0\nALIGNED8 static const Texture yoshi_seg5_texture_0501C4A0[] = {\n#include \"actors/yoshi/yoshi_eye.rgba16.inc.c\"\n};\n\n// 0x0501C6A0\nALIGNED8 static const Texture yoshi_seg5_texture_0501C6A0[] = {\n#include \"actors/yoshi/yoshi_eye_blink.rgba16.inc.c\"\n};\n\n// 0x0501C8A0\nALIGNED8 static const Texture yoshi_seg5_texture_0501C8A0[] = {\n#include \"actors/yoshi/yoshi_nostril.rgba16.inc.c\"\n};\n\n// 0x0501CAA0\nstatic const Vtx yoshi_seg5_vertex_0501CAA0[] = {\n    {{{   174,    273,   -134}, 0, {  1177,    698}, {0x29, 0x20, 0x8d, 0xff}}},\n    {{{   204,    356,    -45}, 0, {  -114,    749}, {0x30, 0x70, 0xe0, 0xff}}},\n    {{{   279,    299,    -29}, 0, {  -189,   -676}, {0x71, 0x27, 0xd8, 0xff}}},\n    {{{   279,    299,     29}, 0, {     7,   -694}, {0x65, 0x3e, 0x2b, 0xff}}},\n    {{{   204,    356,     46}, 0, {  -133,    728}, {0x31, 0x68, 0x34, 0xff}}},\n    {{{   174,    273,    124}, 0, {  1134,    645}, {0x2c, 0x23, 0x71, 0xff}}},\n};\n\n// 0x0501CB00\nstatic const Vtx yoshi_seg5_vertex_0501CB00[] = {\n    {{{   370,     89,     29}, 0, {   273,   -403}, {0x60, 0x52, 0x01, 0xff}}},\n    {{{   332,     90,     -4}, 0, {   -10,   -163}, {0x32, 0x74, 0x02, 0xff}}},\n    {{{   260,    123,     -7}, 0, {     0,    287}, {0x69, 0x45, 0x02, 0xff}}},\n    {{{   199,    115,     54}, 0, {   480,    667}, {0x46, 0x2e, 0x5e, 0xff}}},\n    {{{   209,     86,     84}, 0, {   734,    602}, {0x13, 0x3a, 0x6f, 0xff}}},\n    {{{   349,     69,     76}, 0, {   669,   -268}, {0x34, 0x23, 0x6e, 0xff}}},\n    {{{   199,    115,    -77}, 0, {   577,    687}, {0x41, 0x29, 0x9c, 0xff}}},\n    {{{   260,    123,     -7}, 0, {     5,    301}, {0x69, 0x45, 0x02, 0xff}}},\n    {{{   370,     89,    -29}, 0, {   208,   -415}, {0x5f, 0x53, 0x05, 0xff}}},\n    {{{   349,     69,    -92}, 0, {   728,   -281}, {0x35, 0x14, 0x8f, 0xff}}},\n    {{{   332,     90,     -4}, 0, {    -2,   -165}, {0x32, 0x74, 0x02, 0xff}}},\n};\n\n// 0x0501CBB0\nstatic const Vtx yoshi_seg5_vertex_0501CBB0[] = {\n    {{{   233,    -73,      0}, 0, {     0,      0}, {0x44, 0x96, 0x00, 0xff}}},\n    {{{   136,   -196,      0}, 0, {     0,      0}, {0xe9, 0x84, 0x00, 0xff}}},\n    {{{   121,   -105,    -49}, 0, {     0,      0}, {0xf6, 0xac, 0xa3, 0xff}}},\n    {{{   121,   -105,     49}, 0, {     0,      0}, {0xf6, 0xac, 0x5d, 0xff}}},\n    {{{     8,    -22,      0}, 0, {     0,      0}, {0x9a, 0xb5, 0x00, 0xff}}},\n};\n\n// 0x0501CC00\nstatic const Vtx yoshi_seg5_vertex_0501CC00[] = {\n    {{{   171,    -23,    108}, 0, {     0,      0}, {0x1b, 0xb6, 0x62, 0xff}}},\n    {{{   155,     50,    149}, 0, {     0,      0}, {0x3a, 0x14, 0x6f, 0xff}}},\n    {{{    87,     54,    163}, 0, {     0,      0}, {0xcf, 0x0a, 0x74, 0xff}}},\n    {{{     8,    -22,      0}, 0, {     0,      0}, {0x9a, 0xb5, 0x00, 0xff}}},\n    {{{    66,    -38,     98}, 0, {     0,      0}, {0xc5, 0xac, 0x49, 0xff}}},\n    {{{    -1,     22,     51}, 0, {     0,      0}, {0x89, 0x0a, 0x2b, 0xff}}},\n    {{{    -1,     22,    -51}, 0, {     0,      0}, {0x8b, 0x02, 0xcf, 0xff}}},\n    {{{    66,    -38,    -98}, 0, {     0,      0}, {0xc5, 0xac, 0xb7, 0xff}}},\n    {{{   121,   -105,     49}, 0, {     0,      0}, {0xf6, 0xac, 0x5d, 0xff}}},\n    {{{   121,   -105,    -49}, 0, {     0,      0}, {0xf6, 0xac, 0xa3, 0xff}}},\n    {{{    57,      6,   -134}, 0, {     0,      0}, {0xc9, 0xc7, 0x9e, 0xff}}},\n    {{{   171,    -23,   -108}, 0, {     0,      0}, {0x1b, 0xb6, 0x9e, 0xff}}},\n    {{{   233,    -73,      0}, 0, {     0,      0}, {0x44, 0x96, 0x00, 0xff}}},\n    {{{    57,      6,    134}, 0, {     0,      0}, {0xc9, 0xc7, 0x62, 0xff}}},\n    {{{   264,     10,     80}, 0, {     0,      0}, {0x27, 0xc6, 0x69, 0xff}}},\n};\n\n// 0x0501CCF0\nstatic const Vtx yoshi_seg5_vertex_0501CCF0[] = {\n    {{{   339,    -10,    -24}, 0, {     0,      0}, {0x4f, 0xa2, 0xe1, 0xff}}},\n    {{{   339,    -10,     24}, 0, {     0,      0}, {0x4f, 0xa2, 0x1f, 0xff}}},\n    {{{   233,    -73,      0}, 0, {     0,      0}, {0x44, 0x96, 0x00, 0xff}}},\n    {{{   264,     10,     80}, 0, {     0,      0}, {0x27, 0xc6, 0x69, 0xff}}},\n    {{{   264,     10,    -80}, 0, {     0,      0}, {0x24, 0xbc, 0x9c, 0xff}}},\n    {{{   171,    -23,   -108}, 0, {     0,      0}, {0x1b, 0xb6, 0x9e, 0xff}}},\n    {{{   372,     28,     45}, 0, {     0,      0}, {0x6a, 0xcf, 0x30, 0xff}}},\n    {{{   349,     69,     76}, 0, {     0,      0}, {0x34, 0x23, 0x6e, 0xff}}},\n    {{{   265,     47,     97}, 0, {     0,      0}, {0x00, 0xf1, 0x7e, 0xff}}},\n    {{{   209,     86,     84}, 0, {     0,      0}, {0x13, 0x3a, 0x6f, 0xff}}},\n    {{{   155,     50,    149}, 0, {     0,      0}, {0x3a, 0x14, 0x6f, 0xff}}},\n    {{{   199,    115,     54}, 0, {     0,      0}, {0x46, 0x2e, 0x5e, 0xff}}},\n    {{{   133,    143,    130}, 0, {     0,      0}, {0x16, 0x0a, 0x7c, 0xff}}},\n    {{{    87,     54,    163}, 0, {     0,      0}, {0xcf, 0x0a, 0x74, 0xff}}},\n    {{{    75,     93,    107}, 0, {     0,      0}, {0x9d, 0x05, 0x4f, 0xff}}},\n};\n\n// 0x0501CDE0\nstatic const Vtx yoshi_seg5_vertex_0501CDE0[] = {\n    {{{   209,     86,    -92}, 0, {     0,      0}, {0x11, 0x25, 0x88, 0xff}}},\n    {{{   263,     47,   -107}, 0, {     0,      0}, {0xf5, 0xdf, 0x86, 0xff}}},\n    {{{   264,     10,    -80}, 0, {     0,      0}, {0x24, 0xbc, 0x9c, 0xff}}},\n    {{{   372,     28,    -45}, 0, {     0,      0}, {0x6a, 0xc8, 0xd8, 0xff}}},\n    {{{   339,    -10,    -24}, 0, {     0,      0}, {0x4f, 0xa2, 0xe1, 0xff}}},\n    {{{   171,    -23,   -108}, 0, {     0,      0}, {0x1b, 0xb6, 0x9e, 0xff}}},\n    {{{   155,     50,   -149}, 0, {     0,      0}, {0x38, 0x0f, 0x90, 0xff}}},\n    {{{   349,     69,    -92}, 0, {     0,      0}, {0x35, 0x14, 0x8f, 0xff}}},\n    {{{   145,    142,   -117}, 0, {     0,      0}, {0x18, 0x15, 0x86, 0xff}}},\n    {{{    87,     54,   -163}, 0, {     0,      0}, {0xd2, 0x0f, 0x8b, 0xff}}},\n    {{{   199,    115,    -77}, 0, {     0,      0}, {0x41, 0x29, 0x9c, 0xff}}},\n    {{{   361,     29,      0}, 0, {     0,      0}, {0x79, 0xdc, 0x00, 0xff}}},\n    {{{    57,      6,   -134}, 0, {     0,      0}, {0xc9, 0xc7, 0x9e, 0xff}}},\n    {{{    75,     93,   -107}, 0, {     0,      0}, {0xb3, 0x13, 0x9e, 0xff}}},\n    {{{   370,     89,     29}, 0, {     0,      0}, {0x60, 0x52, 0x01, 0xff}}},\n    {{{   372,     28,     45}, 0, {     0,      0}, {0x6a, 0xcf, 0x30, 0xff}}},\n};\n\n// 0x0501CEE0\nstatic const Vtx yoshi_seg5_vertex_0501CEE0[] = {\n    {{{   372,     28,     45}, 0, {     0,      0}, {0x6a, 0xcf, 0x30, 0xff}}},\n    {{{   339,    -10,     24}, 0, {     0,      0}, {0x4f, 0xa2, 0x1f, 0xff}}},\n    {{{   361,     29,      0}, 0, {     0,      0}, {0x79, 0xdc, 0x00, 0xff}}},\n    {{{   370,     89,     29}, 0, {     0,      0}, {0x60, 0x52, 0x01, 0xff}}},\n    {{{   349,     69,     76}, 0, {     0,      0}, {0x34, 0x23, 0x6e, 0xff}}},\n    {{{   366,     76,      0}, 0, {     0,      0}, {0x6f, 0x3d, 0x00, 0xff}}},\n    {{{   332,     90,     -4}, 0, {     0,      0}, {0x32, 0x74, 0x02, 0xff}}},\n    {{{   339,    -10,    -24}, 0, {     0,      0}, {0x4f, 0xa2, 0xe1, 0xff}}},\n    {{{    82,    366,     65}, 0, {     0,      0}, {0xda, 0x70, 0x2c, 0xff}}},\n    {{{    82,    366,    -65}, 0, {     0,      0}, {0xde, 0x6b, 0xc5, 0xff}}},\n    {{{    13,    282,    -74}, 0, {     0,      0}, {0x92, 0x31, 0xda, 0xff}}},\n    {{{   370,     89,    -29}, 0, {     0,      0}, {0x5f, 0x53, 0x05, 0xff}}},\n    {{{   372,     28,    -45}, 0, {     0,      0}, {0x6a, 0xc8, 0xd8, 0xff}}},\n    {{{   349,     69,    -92}, 0, {     0,      0}, {0x35, 0x14, 0x8f, 0xff}}},\n    {{{    55,    280,    135}, 0, {     0,      0}, {0xc2, 0x2a, 0x66, 0xff}}},\n    {{{    13,    282,     74}, 0, {     0,      0}, {0x8d, 0x2c, 0x1c, 0xff}}},\n};\n\n// 0x0501CFE0\nstatic const Vtx yoshi_seg5_vertex_0501CFE0[] = {\n    {{{    82,    366,    -65}, 0, {     0,      0}, {0xde, 0x6b, 0xc5, 0xff}}},\n    {{{    82,    366,     65}, 0, {     0,      0}, {0xda, 0x70, 0x2c, 0xff}}},\n    {{{   204,    356,    -45}, 0, {     0,      0}, {0x30, 0x70, 0xe0, 0xff}}},\n    {{{   174,    273,    124}, 0, {     0,      0}, {0x2c, 0x23, 0x71, 0xff}}},\n    {{{    55,    280,    135}, 0, {     0,      0}, {0xc2, 0x2a, 0x66, 0xff}}},\n    {{{    13,    282,     74}, 0, {     0,      0}, {0x8d, 0x2c, 0x1c, 0xff}}},\n    {{{    13,    282,    -74}, 0, {     0,      0}, {0x92, 0x31, 0xda, 0xff}}},\n    {{{   204,    356,     46}, 0, {     0,      0}, {0x31, 0x68, 0x34, 0xff}}},\n    {{{    45,    205,    135}, 0, {     0,      0}, {0xdb, 0xf5, 0x78, 0xff}}},\n    {{{   166,    198,    130}, 0, {     0,      0}, {0x34, 0xec, 0x71, 0xff}}},\n    {{{   279,    299,     29}, 0, {     0,      0}, {0x65, 0x3e, 0x2b, 0xff}}},\n    {{{   174,    273,   -134}, 0, {     0,      0}, {0x29, 0x20, 0x8d, 0xff}}},\n    {{{   279,    299,    -29}, 0, {     0,      0}, {0x71, 0x27, 0xd8, 0xff}}},\n    {{{   277,    191,    -37}, 0, {     0,      0}, {0x6a, 0xea, 0xc0, 0xff}}},\n    {{{   277,    191,     36}, 0, {     0,      0}, {0x6f, 0xe8, 0x38, 0xff}}},\n    {{{   199,    115,     54}, 0, {     0,      0}, {0x46, 0x2e, 0x5e, 0xff}}},\n};\n\n// 0x0501D0E0\nstatic const Vtx yoshi_seg5_vertex_0501D0E0[] = {\n    {{{   277,    191,     36}, 0, {     0,      0}, {0x6f, 0xe8, 0x38, 0xff}}},\n    {{{   199,    115,     54}, 0, {     0,      0}, {0x46, 0x2e, 0x5e, 0xff}}},\n    {{{   260,    123,     -7}, 0, {     0,      0}, {0x69, 0x45, 0x02, 0xff}}},\n    {{{   277,    191,    -37}, 0, {     0,      0}, {0x6a, 0xea, 0xc0, 0xff}}},\n    {{{   174,    273,    124}, 0, {     0,      0}, {0x2c, 0x23, 0x71, 0xff}}},\n    {{{   166,    198,    130}, 0, {     0,      0}, {0x34, 0xec, 0x71, 0xff}}},\n    {{{     2,    207,     74}, 0, {     0,      0}, {0x8b, 0xea, 0x29, 0xff}}},\n    {{{    75,     93,    107}, 0, {     0,      0}, {0x9d, 0x05, 0x4f, 0xff}}},\n    {{{    45,    205,    135}, 0, {     0,      0}, {0xdb, 0xf5, 0x78, 0xff}}},\n    {{{   199,    115,    -77}, 0, {     0,      0}, {0x41, 0x29, 0x9c, 0xff}}},\n    {{{   145,    142,   -117}, 0, {     0,      0}, {0x18, 0x15, 0x86, 0xff}}},\n    {{{   166,    198,   -130}, 0, {     0,      0}, {0x24, 0xe7, 0x8a, 0xff}}},\n    {{{   133,    143,    130}, 0, {     0,      0}, {0x16, 0x0a, 0x7c, 0xff}}},\n    {{{    55,    280,    135}, 0, {     0,      0}, {0xc2, 0x2a, 0x66, 0xff}}},\n};\n\n// 0x0501D1C0\nstatic const Vtx yoshi_seg5_vertex_0501D1C0[] = {\n    {{{    45,    205,   -125}, 0, {     0,      0}, {0xbc, 0xeb, 0x98, 0xff}}},\n    {{{    55,    280,   -135}, 0, {     0,      0}, {0xca, 0x2a, 0x96, 0xff}}},\n    {{{   174,    273,   -134}, 0, {     0,      0}, {0x29, 0x20, 0x8d, 0xff}}},\n    {{{   277,    191,    -37}, 0, {     0,      0}, {0x6a, 0xea, 0xc0, 0xff}}},\n    {{{   166,    198,   -130}, 0, {     0,      0}, {0x24, 0xe7, 0x8a, 0xff}}},\n    {{{    82,    366,    -65}, 0, {     0,      0}, {0xde, 0x6b, 0xc5, 0xff}}},\n    {{{    75,     93,   -107}, 0, {     0,      0}, {0xb3, 0x13, 0x9e, 0xff}}},\n    {{{   199,    115,    -77}, 0, {     0,      0}, {0x41, 0x29, 0x9c, 0xff}}},\n    {{{   145,    142,   -117}, 0, {     0,      0}, {0x18, 0x15, 0x86, 0xff}}},\n    {{{    48,    124,    -49}, 0, {     0,      0}, {0x86, 0xff, 0xdf, 0xff}}},\n    {{{     2,    207,    -74}, 0, {     0,      0}, {0x87, 0xe7, 0xe5, 0xff}}},\n    {{{    13,    282,    -74}, 0, {     0,      0}, {0x92, 0x31, 0xda, 0xff}}},\n    {{{   260,    123,     -7}, 0, {     0,      0}, {0x69, 0x45, 0x02, 0xff}}},\n    {{{    13,    282,     74}, 0, {     0,      0}, {0x8d, 0x2c, 0x1c, 0xff}}},\n    {{{    48,    124,     49}, 0, {     0,      0}, {0x85, 0xed, 0x13, 0xff}}},\n    {{{     2,    207,     74}, 0, {     0,      0}, {0x8b, 0xea, 0x29, 0xff}}},\n};\n\n// 0x0501D2C0\nstatic const Vtx yoshi_seg5_vertex_0501D2C0[] = {\n    {{{    55,    280,    135}, 0, {     0,      0}, {0xc2, 0x2a, 0x66, 0xff}}},\n    {{{    13,    282,     74}, 0, {     0,      0}, {0x8d, 0x2c, 0x1c, 0xff}}},\n    {{{     2,    207,     74}, 0, {     0,      0}, {0x8b, 0xea, 0x29, 0xff}}},\n    {{{    45,    205,    135}, 0, {     0,      0}, {0xdb, 0xf5, 0x78, 0xff}}},\n    {{{    48,    124,     49}, 0, {     0,      0}, {0x85, 0xed, 0x13, 0xff}}},\n    {{{    75,     93,    107}, 0, {     0,      0}, {0x9d, 0x05, 0x4f, 0xff}}},\n    {{{   133,    143,    130}, 0, {     0,      0}, {0x16, 0x0a, 0x7c, 0xff}}},\n};\n\n// 0x0501D330\nstatic const Vtx yoshi_seg5_vertex_0501D330[] = {\n    {{{   349,     69,    -92}, 0, {     0,      0}, {0x35, 0x14, 0x8f, 0xff}}},\n    {{{   209,     86,    -92}, 0, {     0,      0}, {0x11, 0x25, 0x88, 0xff}}},\n    {{{   199,    115,    -77}, 0, {     0,      0}, {0x41, 0x29, 0x9c, 0xff}}},\n    {{{   263,     47,   -107}, 0, {     0,      0}, {0xf5, 0xdf, 0x86, 0xff}}},\n    {{{    48,    124,    -49}, 0, {     0,      0}, {0x86, 0xff, 0xdf, 0xff}}},\n    {{{    -1,     22,     51}, 0, {     0,      0}, {0x89, 0x0a, 0x2b, 0xff}}},\n    {{{    48,    124,     49}, 0, {     0,      0}, {0x85, 0xed, 0x13, 0xff}}},\n    {{{    -1,     22,    -51}, 0, {     0,      0}, {0x8b, 0x02, 0xcf, 0xff}}},\n    {{{    75,     93,   -107}, 0, {     0,      0}, {0xb3, 0x13, 0x9e, 0xff}}},\n    {{{    87,     54,   -163}, 0, {     0,      0}, {0xd2, 0x0f, 0x8b, 0xff}}},\n    {{{    57,      6,   -134}, 0, {     0,      0}, {0xc9, 0xc7, 0x9e, 0xff}}},\n    {{{    75,     93,    107}, 0, {     0,      0}, {0x9d, 0x05, 0x4f, 0xff}}},\n    {{{    57,      6,    134}, 0, {     0,      0}, {0xc9, 0xc7, 0x62, 0xff}}},\n    {{{    87,     54,    163}, 0, {     0,      0}, {0xcf, 0x0a, 0x74, 0xff}}},\n};\n\n// 0x0501D410\nstatic const Vtx yoshi_seg5_vertex_0501D410[] = {\n    {{{   209,     86,     84}, 0, {     0,      0}, {0x13, 0x3a, 0x6f, 0xff}}},\n    {{{   265,     47,     97}, 0, {     0,      0}, {0x00, 0xf1, 0x7e, 0xff}}},\n    {{{   349,     69,     76}, 0, {     0,      0}, {0x34, 0x23, 0x6e, 0xff}}},\n};\n\n// 0x0501D440 - 0x0501D488\nconst Gfx yoshi_seg5_dl_0501D440[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, yoshi_seg5_texture_0501C8A0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 16 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&yoshi_seg5_lights_0501C458.l, 1),\n    gsSPLight(&yoshi_seg5_lights_0501C458.a, 2),\n    gsSPVertex(yoshi_seg5_vertex_0501CAA0, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0501D488 - 0x0501D4E0\nconst Gfx yoshi_seg5_dl_0501D488[] = {\n    gsSPLight(&yoshi_seg5_lights_0501C470.l, 1),\n    gsSPLight(&yoshi_seg5_lights_0501C470.a, 2),\n    gsSPVertex(yoshi_seg5_vertex_0501CB00, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  5,  0,  3, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP1Triangle( 7, 10,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0501D4E0 - 0x0501D8F8\nconst Gfx yoshi_seg5_dl_0501D4E0[] = {\n    gsSPLight(&yoshi_seg5_lights_0501C488.l, 1),\n    gsSPLight(&yoshi_seg5_lights_0501C488.a, 2),\n    gsSPVertex(yoshi_seg5_vertex_0501CBB0, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  1,  3, 0x0,  2,  1,  4, 0x0),\n    gsSPLight(&yoshi_seg5_lights_0501C458.l, 1),\n    gsSPLight(&yoshi_seg5_lights_0501C458.a, 2),\n    gsSPVertex(yoshi_seg5_vertex_0501CC00, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  3, 0x0,  3,  5,  6, 0x0),\n    gsSP2Triangles( 8,  4,  3, 0x0,  3,  7,  9, 0x0),\n    gsSP2Triangles(10,  7,  6, 0x0,  7, 10, 11, 0x0),\n    gsSP2Triangles( 9,  7, 11, 0x0, 12,  9, 11, 0x0),\n    gsSP2Triangles( 4,  8,  0, 0x0,  0,  8, 12, 0x0),\n    gsSP2Triangles(13,  4,  0, 0x0,  5,  4, 13, 0x0),\n    gsSP2Triangles(12, 14,  0, 0x0,  1,  0, 14, 0x0),\n    gsSP1Triangle( 2, 13,  0, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_0501CCF0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  0,  2, 0x0,  2,  5,  4, 0x0),\n    gsSP2Triangles( 3,  1,  6, 0x0,  7,  3,  6, 0x0),\n    gsSP2Triangles( 8,  3,  7, 0x0,  3,  8,  9, 0x0),\n    gsSP2Triangles( 9, 10,  3, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 10, 11, 0x0, 13, 10, 12, 0x0),\n    gsSP1Triangle(14, 13, 12, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_0501CDE0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 2,  5,  6, 0x0,  2,  1,  7, 0x0),\n    gsSP2Triangles( 3,  2,  7, 0x0,  2,  6,  0, 0x0),\n    gsSP2Triangles( 8,  6,  9, 0x0, 10,  6,  8, 0x0),\n    gsSP2Triangles(10,  0,  6, 0x0,  9,  6,  5, 0x0),\n    gsSP2Triangles( 4,  3, 11, 0x0,  5, 12,  9, 0x0),\n    gsSP2Triangles( 9, 13,  8, 0x0, 11, 14, 15, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_0501CEE0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  2,  5,  3, 0x0),\n    gsSP2Triangles( 1,  7,  2, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 6,  5, 11, 0x0, 11,  5,  2, 0x0),\n    gsSP2Triangles( 2, 12, 11, 0x0, 13, 11, 12, 0x0),\n    gsSP1Triangle(14,  8, 15, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_0501CFE0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  4, 0x0),\n    gsSP2Triangles( 5,  1,  6, 0x0,  1,  7,  2, 0x0),\n    gsSP2Triangles( 3,  7,  1, 0x0,  8,  9,  3, 0x0),\n    gsSP2Triangles( 2,  7, 10, 0x0,  0,  2, 11, 0x0),\n    gsSP2Triangles(10, 12,  2, 0x0, 13, 12, 14, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 12, 10, 14, 0x0),\n    gsSP2Triangles(14, 10,  3, 0x0,  9, 15, 14, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_0501D0E0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  0, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  8, 12,  5, 0x0),\n    gsSP2Triangles(13,  8,  4, 0x0,  5, 12,  1, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_0501D1C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 2,  4,  0, 0x0,  2,  1,  5, 0x0),\n    gsSP2Triangles( 4,  6,  0, 0x0,  3,  7,  4, 0x0),\n    gsSP2Triangles( 4,  8,  6, 0x0,  0,  9, 10, 0x0),\n    gsSP2Triangles(11,  1,  0, 0x0,  0,  6,  9, 0x0),\n    gsSP2Triangles( 0, 10, 11, 0x0, 12,  7,  3, 0x0),\n    gsSP2Triangles( 5,  1, 11, 0x0, 13, 11, 10, 0x0),\n    gsSP2Triangles(10, 14, 15, 0x0, 15, 13, 10, 0x0),\n    gsSP1Triangle(10,  9, 14, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_0501D2C0, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  3,  5,  6, 0x0),\n    gsSPLight(&yoshi_seg5_lights_0501C470.l, 1),\n    gsSPLight(&yoshi_seg5_lights_0501C470.a, 2),\n    gsSPVertex(yoshi_seg5_vertex_0501D330, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  8, 0x0),\n    gsSP2Triangles( 4,  7,  5, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles( 8,  9,  7, 0x0,  6,  5, 11, 0x0),\n    gsSP2Triangles(12, 13,  5, 0x0,  5, 13, 11, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_0501D410, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0501D8F8 - 0x0501D940\nconst Gfx yoshi_seg5_dl_0501D8F8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 4, G_TX_NOLOD, G_TX_CLAMP, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (16 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(yoshi_seg5_dl_0501D440),\n    gsSPEndDisplayList(),\n};\n\n// 0x0501D940 - 0x0501D970\nconst Gfx yoshi_seg5_dl_0501D940[] = {\n    gsSPDisplayList(yoshi_seg5_dl_0501D488),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(yoshi_seg5_dl_0501D4E0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0501D970 - 0x0501D998\nconst Gfx yoshi_seg5_dl_0501D970[] = {\n    gsSPDisplayList(yoshi_seg5_dl_0501D8F8),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, yoshi_seg5_texture_0501C4A0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 16 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPBranchList(yoshi_seg5_dl_0501D940),\n};\n\n// 0x0501D998 - 0x0501D9C0\nconst Gfx yoshi_seg5_dl_0501D998[] = {\n    gsSPDisplayList(yoshi_seg5_dl_0501D8F8),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, yoshi_seg5_texture_0501C6A0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 16 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPBranchList(yoshi_seg5_dl_0501D940),\n};\n\n// 0x0501D9C0\nstatic const Lights1 yoshi_seg5_lights_0501D9C0 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0501D9D8\nstatic const Lights1 yoshi_seg5_lights_0501D9D8 = gdSPDefLights1(\n    0x00, 0x7b, 0x00,\n    0x00, 0xf7, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x0501D9F0\nstatic const Lights1 yoshi_seg5_lights_0501D9F0 = gdSPDefLights1(\n    0x7f, 0x00, 0x00,\n    0xff, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 yoshi_lights_unused1 = gdSPDefLights1(\n    0x59, 0x59, 0x59,\n    0xb2, 0xb2, 0xb2, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 yoshi_lights_unused2 = gdSPDefLights1(\n    0x7f, 0x00, 0x00,\n    0xff, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x0501DA38\nstatic const Lights1 yoshi_seg5_lights_0501DA38 = gdSPDefLights1(\n    0x45, 0x00, 0x00,\n    0x8b, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x0501DA50\nstatic const Vtx yoshi_seg5_vertex_0501DA50[] = {\n    {{{   156,    -27,    -20}, 0, {     0,      0}, {0x68, 0xd2, 0xca, 0x00}}},\n    {{{   156,    -27,     20}, 0, {     0,      0}, {0x6f, 0xcf, 0x24, 0x00}}},\n    {{{   128,    -49,    -24}, 0, {     0,      0}, {0x1f, 0x8b, 0xdc, 0x00}}},\n    {{{    24,     72,     58}, 0, {     0,      0}, {0xde, 0x74, 0x24, 0xff}}},\n    {{{   -13,     27,   -121}, 0, {     0,      0}, {0x87, 0x25, 0x02, 0xff}}},\n    {{{   -13,     27,    121}, 0, {     0,      0}, {0x82, 0x0b, 0xfe, 0xff}}},\n    {{{   102,    -41,    -31}, 0, {     0,      0}, {0xee, 0x84, 0xf2, 0xff}}},\n    {{{    -7,    -27,     87}, 0, {     0,      0}, {0xfc, 0x84, 0x18, 0xff}}},\n    {{{    -7,    -27,    -87}, 0, {     0,      0}, {0x00, 0x86, 0xdf, 0xff}}},\n    {{{    84,     73,    -25}, 0, {     0,      0}, {0x3c, 0x62, 0xcb, 0xff}}},\n    {{{    84,     73,     25}, 0, {     0,      0}, {0x38, 0x6b, 0x26, 0xff}}},\n    {{{   152,     14,    -24}, 0, {     0,      0}, {0x69, 0x32, 0xd0, 0xff}}},\n    {{{    84,      3,     72}, 0, {     0,      0}, {0x46, 0x09, 0x68, 0xff}}},\n    {{{   -12,      0,    135}, 0, {     0,      0}, {0x33, 0xe5, 0x70, 0xff}}},\n    {{{   109,    -37,     48}, 0, {     0,      0}, {0x21, 0xa7, 0x53, 0xff}}},\n};\n\n// 0x0501DB40\nstatic const Vtx yoshi_seg5_vertex_0501DB40[] = {\n    {{{    84,      3,    -72}, 0, {     0,      0}, {0x46, 0x09, 0x98, 0xff}}},\n    {{{   127,    -15,    -48}, 0, {     0,      0}, {0x46, 0xe3, 0x9b, 0x00}}},\n    {{{   109,    -37,    -48}, 0, {     0,      0}, {0x21, 0xa7, 0xad, 0x00}}},\n    {{{    44,     31,   -104}, 0, {     0,      0}, {0x35, 0x3d, 0x9f, 0xff}}},\n    {{{    24,     72,    -58}, 0, {     0,      0}, {0xf5, 0x79, 0xde, 0xff}}},\n    {{{    84,     73,    -25}, 0, {     0,      0}, {0x3c, 0x62, 0xcb, 0xff}}},\n    {{{    -7,    -27,    -87}, 0, {     0,      0}, {0x82, 0xf4, 0x02, 0xff}}},\n    {{{   -13,     27,   -121}, 0, {     0,      0}, {0x87, 0x25, 0x02, 0xff}}},\n    {{{   -12,      0,   -135}, 0, {     0,      0}, {0x82, 0xf7, 0x07, 0xff}}},\n    {{{   -12,      0,    135}, 0, {     0,      0}, {0x82, 0xf7, 0xf9, 0xff}}},\n    {{{   -13,     27,    121}, 0, {     0,      0}, {0x82, 0x0b, 0xfe, 0xff}}},\n    {{{    -7,    -27,     87}, 0, {     0,      0}, {0x82, 0xf5, 0xfd, 0xff}}},\n    {{{    24,     72,     58}, 0, {     0,      0}, {0xde, 0x74, 0x24, 0xff}}},\n    {{{    44,     31,    104}, 0, {     0,      0}, {0x35, 0x3d, 0x61, 0xff}}},\n    {{{    84,     73,     25}, 0, {     0,      0}, {0x38, 0x6b, 0x26, 0xff}}},\n};\n\n// 0x0501DC30\nstatic const Vtx yoshi_seg5_vertex_0501DC30[] = {\n    {{{   127,    -15,     48}, 0, {     0,      0}, {0x46, 0xe3, 0x65, 0xff}}},\n    {{{   156,    -27,     20}, 0, {     0,      0}, {0x6f, 0xcf, 0x24, 0x00}}},\n    {{{   152,     14,     24}, 0, {     0,      0}, {0x61, 0x2d, 0x42, 0x00}}},\n    {{{   102,    -41,     31}, 0, {     0,      0}, {0xea, 0x84, 0x0e, 0xff}}},\n    {{{   128,    -49,     24}, 0, {     0,      0}, {0x23, 0x92, 0x33, 0xff}}},\n    {{{   109,    -37,     48}, 0, {     0,      0}, {0x21, 0xa7, 0x53, 0xff}}},\n    {{{   109,    -37,    -48}, 0, {     0,      0}, {0x21, 0xa7, 0xad, 0xff}}},\n    {{{   128,    -49,    -24}, 0, {     0,      0}, {0x1f, 0x8b, 0xdc, 0xff}}},\n    {{{   102,    -41,    -31}, 0, {     0,      0}, {0xee, 0x84, 0xf2, 0xff}}},\n    {{{   156,    -27,    -20}, 0, {     0,      0}, {0x68, 0xd2, 0xca, 0xff}}},\n    {{{   127,    -15,    -48}, 0, {     0,      0}, {0x46, 0xe3, 0x9b, 0xff}}},\n    {{{   152,     14,    -24}, 0, {     0,      0}, {0x69, 0x32, 0xd0, 0xff}}},\n    {{{    84,     73,     25}, 0, {     0,      0}, {0x38, 0x6b, 0x26, 0xff}}},\n    {{{    84,      3,     72}, 0, {     0,      0}, {0x46, 0x09, 0x68, 0xff}}},\n};\n\n// 0x0501DD10\nstatic const Vtx yoshi_seg5_vertex_0501DD10[] = {\n    {{{    44,     31,   -104}, 0, {     0,      0}, {0x35, 0x3d, 0x9f, 0xff}}},\n    {{{    84,     73,    -25}, 0, {     0,      0}, {0x3c, 0x62, 0xcb, 0x00}}},\n    {{{    84,      3,    -72}, 0, {     0,      0}, {0x46, 0x09, 0x98, 0x00}}},\n    {{{   -12,      0,    135}, 0, {     0,      0}, {0x33, 0xe5, 0x70, 0xff}}},\n    {{{    -7,    -27,     87}, 0, {     0,      0}, {0xfc, 0x84, 0x18, 0xff}}},\n    {{{   109,    -37,     48}, 0, {     0,      0}, {0x21, 0xa7, 0x53, 0xff}}},\n    {{{   109,    -37,    -48}, 0, {     0,      0}, {0x21, 0xa7, 0xad, 0xff}}},\n    {{{    -7,    -27,    -87}, 0, {     0,      0}, {0x00, 0x86, 0xdf, 0xff}}},\n    {{{   -12,      0,   -135}, 0, {     0,      0}, {0x33, 0xe5, 0x90, 0xff}}},\n    {{{    24,     72,    -58}, 0, {     0,      0}, {0xf5, 0x79, 0xde, 0xff}}},\n    {{{    24,     72,     58}, 0, {     0,      0}, {0xde, 0x74, 0x24, 0xff}}},\n    {{{    84,     73,     25}, 0, {     0,      0}, {0x38, 0x6b, 0x26, 0xff}}},\n    {{{   -13,     27,   -121}, 0, {     0,      0}, {0x16, 0x4e, 0x9f, 0xff}}},\n    {{{    -7,    -27,     87}, 0, {     0,      0}, {0x82, 0xf5, 0xfd, 0xff}}},\n    {{{   -13,     27,    121}, 0, {     0,      0}, {0x82, 0x0b, 0xfe, 0xff}}},\n    {{{    -7,    -27,    -87}, 0, {     0,      0}, {0x82, 0xf4, 0x02, 0xff}}},\n};\n\n// 0x0501DE10\nstatic const Vtx yoshi_seg5_vertex_0501DE10[] = {\n    {{{    44,     31,    104}, 0, {     0,      0}, {0x35, 0x3d, 0x61, 0xff}}},\n    {{{   -13,     27,    121}, 0, {     0,      0}, {0x16, 0x4e, 0x61, 0x00}}},\n    {{{   -12,      0,    135}, 0, {     0,      0}, {0x33, 0xe5, 0x70, 0x00}}},\n    {{{   152,     14,     24}, 0, {     0,      0}, {0x61, 0x2d, 0x42, 0xff}}},\n    {{{   156,    -27,     20}, 0, {     0,      0}, {0x6f, 0xcf, 0x24, 0xff}}},\n    {{{   152,     14,    -24}, 0, {     0,      0}, {0x69, 0x32, 0xd0, 0xff}}},\n    {{{   128,    -49,     24}, 0, {     0,      0}, {0x23, 0x92, 0x33, 0xff}}},\n    {{{   127,    -15,     48}, 0, {     0,      0}, {0x46, 0xe3, 0x65, 0xff}}},\n    {{{   102,    -41,    -31}, 0, {     0,      0}, {0xee, 0x84, 0xf2, 0xff}}},\n    {{{   128,    -49,    -24}, 0, {     0,      0}, {0x1f, 0x8b, 0xdc, 0xff}}},\n    {{{   102,    -41,     31}, 0, {     0,      0}, {0xea, 0x84, 0x0e, 0xff}}},\n    {{{   127,    -15,    -48}, 0, {     0,      0}, {0x46, 0xe3, 0x9b, 0xff}}},\n    {{{   156,    -27,    -20}, 0, {     0,      0}, {0x68, 0xd2, 0xca, 0xff}}},\n    {{{    84,     73,     25}, 0, {     0,      0}, {0x38, 0x6b, 0x26, 0xff}}},\n    {{{    84,      3,     72}, 0, {     0,      0}, {0x46, 0x09, 0x68, 0xff}}},\n};\n\n// 0x0501DF00\nstatic const Vtx yoshi_seg5_vertex_0501DF00[] = {\n    {{{    84,     73,    -25}, 0, {     0,      0}, {0x3c, 0x62, 0xcb, 0xff}}},\n    {{{   152,     14,    -24}, 0, {     0,      0}, {0x69, 0x32, 0xd0, 0x00}}},\n    {{{    84,      3,    -72}, 0, {     0,      0}, {0x46, 0x09, 0x98, 0x00}}},\n    {{{   -12,      0,   -135}, 0, {     0,      0}, {0x33, 0xe5, 0x90, 0xff}}},\n    {{{    44,     31,   -104}, 0, {     0,      0}, {0x35, 0x3d, 0x9f, 0xff}}},\n    {{{    84,      3,     72}, 0, {     0,      0}, {0x46, 0x09, 0x68, 0xff}}},\n    {{{    44,     31,    104}, 0, {     0,      0}, {0x35, 0x3d, 0x61, 0xff}}},\n    {{{   -12,      0,    135}, 0, {     0,      0}, {0x33, 0xe5, 0x70, 0xff}}},\n    {{{   109,    -37,     48}, 0, {     0,      0}, {0x21, 0xa7, 0x53, 0xff}}},\n    {{{   127,    -15,     48}, 0, {     0,      0}, {0x46, 0xe3, 0x65, 0xff}}},\n    {{{   109,    -37,    -48}, 0, {     0,      0}, {0x21, 0xa7, 0xad, 0xff}}},\n    {{{   127,    -15,    -48}, 0, {     0,      0}, {0x46, 0xe3, 0x9b, 0xff}}},\n    {{{   128,    -49,    -24}, 0, {     0,      0}, {0x1f, 0x8b, 0xdc, 0xff}}},\n    {{{   128,    -49,     24}, 0, {     0,      0}, {0x23, 0x92, 0x33, 0xff}}},\n    {{{   102,    -41,     31}, 0, {     0,      0}, {0xea, 0x84, 0x0e, 0xff}}},\n};\n\n// 0x0501DFF0\nstatic const Vtx yoshi_seg5_vertex_0501DFF0[] = {\n    {{{   156,    -27,     20}, 0, {     0,      0}, {0x6f, 0xcf, 0x24, 0xff}}},\n    {{{   156,    -27,    -20}, 0, {     0,      0}, {0x68, 0xd2, 0xca, 0x00}}},\n    {{{   152,     14,    -24}, 0, {     0,      0}, {0x69, 0x32, 0xd0, 0x00}}},\n    {{{    44,     31,    104}, 0, {     0,      0}, {0x35, 0x3d, 0x61, 0xff}}},\n    {{{    24,     72,     58}, 0, {     0,      0}, {0xde, 0x74, 0x24, 0xff}}},\n    {{{   -13,     27,    121}, 0, {     0,      0}, {0x16, 0x4e, 0x61, 0xff}}},\n    {{{   -13,     27,    121}, 0, {     0,      0}, {0x82, 0x0b, 0xfe, 0xff}}},\n    {{{   -13,     27,   -121}, 0, {     0,      0}, {0x87, 0x25, 0x02, 0xff}}},\n    {{{    -7,    -27,    -87}, 0, {     0,      0}, {0x82, 0xf4, 0x02, 0xff}}},\n    {{{   -13,     27,   -121}, 0, {     0,      0}, {0x16, 0x4e, 0x9f, 0xff}}},\n    {{{    24,     72,    -58}, 0, {     0,      0}, {0xf5, 0x79, 0xde, 0xff}}},\n    {{{    44,     31,   -104}, 0, {     0,      0}, {0x35, 0x3d, 0x9f, 0xff}}},\n    {{{    84,     73,     25}, 0, {     0,      0}, {0x38, 0x6b, 0x26, 0xff}}},\n    {{{    84,     73,    -25}, 0, {     0,      0}, {0x3c, 0x62, 0xcb, 0xff}}},\n};\n\n// 0x0501E0D0\nstatic const Vtx yoshi_seg5_vertex_0501E0D0[] = {\n    {{{   109,    -37,    -48}, 0, {     0,      0}, {0x21, 0xa7, 0xad, 0xff}}},\n    {{{   102,    -41,    -31}, 0, {     0,      0}, {0xee, 0x84, 0xf2, 0x00}}},\n    {{{    -7,    -27,    -87}, 0, {     0,      0}, {0x00, 0x86, 0xdf, 0x00}}},\n    {{{    -7,    -27,     87}, 0, {     0,      0}, {0xfc, 0x84, 0x18, 0xff}}},\n    {{{   102,    -41,     31}, 0, {     0,      0}, {0xea, 0x84, 0x0e, 0xff}}},\n    {{{   109,    -37,     48}, 0, {     0,      0}, {0x21, 0xa7, 0x53, 0xff}}},\n    {{{    84,      3,     72}, 0, {     0,      0}, {0x46, 0x09, 0x68, 0xff}}},\n    {{{   127,    -15,     48}, 0, {     0,      0}, {0x46, 0xe3, 0x65, 0xff}}},\n    {{{   152,     14,     24}, 0, {     0,      0}, {0x61, 0x2d, 0x42, 0xff}}},\n    {{{    84,     73,     25}, 0, {     0,      0}, {0x38, 0x6b, 0x26, 0xff}}},\n    {{{   152,     14,    -24}, 0, {     0,      0}, {0x69, 0x32, 0xd0, 0xff}}},\n    {{{    24,     72,     58}, 0, {     0,      0}, {0xde, 0x74, 0x24, 0xff}}},\n    {{{    24,     72,    -58}, 0, {     0,      0}, {0xf5, 0x79, 0xde, 0xff}}},\n    {{{   -13,     27,   -121}, 0, {     0,      0}, {0x87, 0x25, 0x02, 0xff}}},\n};\n\n// 0x0501E1B0\nstatic const Vtx yoshi_seg5_vertex_0501E1B0[] = {\n    {{{   156,    -27,     20}, 0, {     0,      0}, {0x6f, 0xcf, 0x24, 0xff}}},\n    {{{   128,    -49,     24}, 0, {     0,      0}, {0x23, 0x92, 0x33, 0x00}}},\n    {{{   128,    -49,    -24}, 0, {     0,      0}, {0x1f, 0x8b, 0xdc, 0x00}}},\n};\n\n// 0x0501E1E0\nstatic const Vtx yoshi_seg5_vertex_0501E1E0[] = {\n    {{{    10,      8,    -33}, 0, {     0,      0}, {0xbe, 0x0c, 0x95, 0x00}}},\n    {{{    75,     11,    -43}, 0, {     0,      0}, {0x1b, 0x25, 0x8a, 0x00}}},\n    {{{    73,    -16,    -34}, 0, {     0,      0}, {0x12, 0xab, 0xa4, 0x00}}},\n    {{{    15,     -2,    -25}, 0, {     0,      0}, {0xcd, 0xae, 0xaf, 0xff}}},\n    {{{   105,     11,    -19}, 0, {     0,      0}, {0x65, 0x33, 0xc9, 0xff}}},\n    {{{   104,     13,     25}, 0, {     0,      0}, {0x60, 0x38, 0x3b, 0xff}}},\n    {{{    94,    -15,     20}, 0, {     0,      0}, {0x5b, 0xbf, 0x3a, 0xff}}},\n    {{{    96,    -17,    -13}, 0, {     0,      0}, {0x60, 0xba, 0xd4, 0xff}}},\n    {{{    71,     15,     46}, 0, {     0,      0}, {0x11, 0x2f, 0x74, 0xff}}},\n    {{{     7,     11,     31}, 0, {     0,      0}, {0xb9, 0x17, 0x66, 0xff}}},\n    {{{    12,      0,     25}, 0, {     0,      0}, {0xc9, 0xb4, 0x55, 0xff}}},\n    {{{    70,    -13,     40}, 0, {     0,      0}, {0xdd, 0xb8, 0x61, 0xff}}},\n    {{{    70,    -13,     40}, 0, {     0,      0}, {0x42, 0xcc, 0x5e, 0xff}}},\n    {{{    71,    -38,      3}, 0, {     0,      0}, {0x30, 0x8c, 0xf2, 0xff}}},\n};\n\n// 0x0501E2C0\nstatic const Vtx yoshi_seg5_vertex_0501E2C0[] = {\n    {{{     8,     23,     14}, 0, {     0,      0}, {0xc8, 0x6e, 0x1b, 0xff}}},\n    {{{    72,     32,     22}, 0, {     0,      0}, {0x11, 0x78, 0x23, 0x00}}},\n    {{{    74,     30,    -21}, 0, {     0,      0}, {0x15, 0x75, 0xd4, 0x00}}},\n    {{{    10,     21,    -18}, 0, {     0,      0}, {0xca, 0x6b, 0xd8, 0xff}}},\n    {{{    17,    -23,      0}, 0, {     0,      0}, {0xc4, 0x91, 0x03, 0xff}}},\n    {{{    71,    -38,      3}, 0, {     0,      0}, {0xdc, 0x9f, 0x48, 0xff}}},\n    {{{    70,    -13,     40}, 0, {     0,      0}, {0xdd, 0xb8, 0x61, 0xff}}},\n    {{{    12,      0,     25}, 0, {     0,      0}, {0xc9, 0xb4, 0x55, 0xff}}},\n    {{{   -11,      1,      0}, 0, {     0,      0}, {0x85, 0xe4, 0x00, 0xff}}},\n    {{{    10,      8,    -33}, 0, {     0,      0}, {0xbe, 0x0c, 0x95, 0xff}}},\n    {{{    15,     -2,    -25}, 0, {     0,      0}, {0xcd, 0xae, 0xaf, 0xff}}},\n    {{{    75,     11,    -43}, 0, {     0,      0}, {0x1b, 0x25, 0x8a, 0xff}}},\n    {{{   105,     11,    -19}, 0, {     0,      0}, {0x65, 0x33, 0xc9, 0xff}}},\n    {{{    96,    -17,    -13}, 0, {     0,      0}, {0x60, 0xba, 0xd4, 0xff}}},\n    {{{    73,    -16,    -34}, 0, {     0,      0}, {0x12, 0xab, 0xa4, 0xff}}},\n    {{{   104,     13,     25}, 0, {     0,      0}, {0x60, 0x38, 0x3b, 0xff}}},\n};\n\n// 0x0501E3C0\nstatic const Vtx yoshi_seg5_vertex_0501E3C0[] = {\n    {{{    71,     15,     46}, 0, {     0,      0}, {0x11, 0x2f, 0x74, 0xff}}},\n    {{{    70,    -13,     40}, 0, {     0,      0}, {0x42, 0xcc, 0x5e, 0x00}}},\n    {{{    94,    -15,     20}, 0, {     0,      0}, {0x5b, 0xbf, 0x3a, 0x00}}},\n    {{{   104,     13,     25}, 0, {     0,      0}, {0x60, 0x38, 0x3b, 0xff}}},\n    {{{    72,     32,     22}, 0, {     0,      0}, {0x11, 0x78, 0x23, 0xff}}},\n    {{{     8,     23,     14}, 0, {     0,      0}, {0xc8, 0x6e, 0x1b, 0xff}}},\n    {{{     7,     11,     31}, 0, {     0,      0}, {0xb9, 0x17, 0x66, 0xff}}},\n    {{{   -11,      1,      0}, 0, {     0,      0}, {0x85, 0xe4, 0x00, 0xff}}},\n    {{{    12,      0,     25}, 0, {     0,      0}, {0xc9, 0xb4, 0x55, 0xff}}},\n    {{{    17,    -23,      0}, 0, {     0,      0}, {0xc4, 0x91, 0x03, 0xff}}},\n    {{{    10,     21,    -18}, 0, {     0,      0}, {0xca, 0x6b, 0xd8, 0xff}}},\n    {{{    10,      8,    -33}, 0, {     0,      0}, {0xbe, 0x0c, 0x95, 0xff}}},\n    {{{   105,     11,    -19}, 0, {     0,      0}, {0x65, 0x33, 0xc9, 0xff}}},\n    {{{    75,     11,    -43}, 0, {     0,      0}, {0x1b, 0x25, 0x8a, 0xff}}},\n    {{{    74,     30,    -21}, 0, {     0,      0}, {0x15, 0x75, 0xd4, 0xff}}},\n};\n\n// 0x0501E4B0\nstatic const Vtx yoshi_seg5_vertex_0501E4B0[] = {\n    {{{    71,    -38,      3}, 0, {     0,      0}, {0x30, 0x8c, 0xf2, 0xff}}},\n    {{{    96,    -17,    -13}, 0, {     0,      0}, {0x60, 0xba, 0xd4, 0x00}}},\n    {{{    94,    -15,     20}, 0, {     0,      0}, {0x5b, 0xbf, 0x3a, 0x00}}},\n    {{{    73,    -16,    -34}, 0, {     0,      0}, {0x12, 0xab, 0xa4, 0xff}}},\n    {{{    96,    -17,    -13}, 0, {     0,      0}, {0x5b, 0xb2, 0xd8, 0xff}}},\n    {{{    17,    -23,      0}, 0, {     0,      0}, {0xc4, 0x91, 0x03, 0xff}}},\n    {{{    15,     -2,    -25}, 0, {     0,      0}, {0xcd, 0xae, 0xaf, 0xff}}},\n    {{{   -11,      1,      0}, 0, {     0,      0}, {0x85, 0xe4, 0x00, 0xff}}},\n};\n\n// 0x0501E530\nstatic const Vtx yoshi_seg5_vertex_0501E530[] = {\n    {{{    87,      6,      0}, 0, {     0,      0}, {0x7e, 0x06, 0x00, 0x00}}},\n    {{{    78,    -10,    -13}, 0, {     0,      0}, {0x4a, 0xa8, 0xcb, 0x00}}},\n    {{{    76,     22,    -13}, 0, {     0,      0}, {0x32, 0x4d, 0xa9, 0x00}}},\n    {{{    78,    -10,     13}, 0, {     0,      0}, {0x53, 0xc0, 0x47, 0xff}}},\n    {{{     3,    -21,     17}, 0, {     0,      0}, {0xdb, 0xb9, 0x61, 0xff}}},\n    {{{    -2,    -27,    -12}, 0, {     0,      0}, {0xb2, 0xc1, 0xb3, 0xff}}},\n    {{{    -9,     20,    -11}, 0, {     0,      0}, {0x9e, 0x36, 0xc6, 0xff}}},\n    {{{     1,     30,     16}, 0, {     0,      0}, {0xc2, 0x58, 0x41, 0xff}}},\n    {{{    -9,      4,      5}, 0, {     0,      0}, {0x87, 0xf9, 0x24, 0xff}}},\n    {{{    76,     22,     13}, 0, {     0,      0}, {0x40, 0x3a, 0x5c, 0xff}}},\n};\n\n// 0x0501E5D0\nstatic const Vtx yoshi_seg5_vertex_0501E5D0[] = {\n    {{{    -5,    -33,    -19}, 0, {     0,      0}, {0xdc, 0xa0, 0xb6, 0x00}}},\n    {{{    87,    -12,    -13}, 0, {     0,      0}, {0x4b, 0xa6, 0xd1, 0x00}}},\n    {{{    87,    -12,     16}, 0, {     0,      0}, {0x35, 0xbc, 0x5c, 0x00}}},\n    {{{    87,     19,     16}, 0, {     0,      0}, {0x3d, 0x50, 0x4c, 0xff}}},\n    {{{    87,     19,    -13}, 0, {     0,      0}, {0x41, 0x4f, 0xb7, 0xff}}},\n    {{{    -5,     38,    -19}, 0, {     0,      0}, {0xe5, 0x6f, 0x36, 0xff}}},\n    {{{   -24,      2,     -9}, 0, {     0,      0}, {0x85, 0xff, 0x1e, 0xff}}},\n    {{{    -5,     38,    -19}, 0, {     0,      0}, {0xe5, 0x00, 0x85, 0xff}}},\n    {{{    97,      3,      1}, 0, {     0,      0}, {0x7f, 0x01, 0x00, 0xff}}},\n    {{{     0,     20,     13}, 0, {     0,      0}, {0xd3, 0x2a, 0x6e, 0xff}}},\n    {{{     1,    -18,     13}, 0, {     0,      0}, {0xc9, 0xc8, 0x63, 0xff}}},\n};\n\n// 0x0501E680\nstatic const Vtx yoshi_seg5_vertex_0501E680[] = {\n    {{{    15,     -2,     25}, 0, {     0,      0}, {0xcd, 0xae, 0x51, 0x00}}},\n    {{{    73,    -16,     34}, 0, {     0,      0}, {0x12, 0xab, 0x5c, 0x00}}},\n    {{{    75,     11,     43}, 0, {     0,      0}, {0x1b, 0x25, 0x76, 0x00}}},\n    {{{    10,      8,     33}, 0, {     0,      0}, {0xbe, 0x0c, 0x6b, 0xff}}},\n    {{{    96,    -17,     13}, 0, {     0,      0}, {0x60, 0xba, 0x2c, 0xff}}},\n    {{{    94,    -15,    -20}, 0, {     0,      0}, {0x5b, 0xbf, 0xc6, 0xff}}},\n    {{{   104,     13,    -25}, 0, {     0,      0}, {0x60, 0x38, 0xc5, 0xff}}},\n    {{{   105,     11,     19}, 0, {     0,      0}, {0x65, 0x33, 0x37, 0xff}}},\n    {{{    70,    -13,    -40}, 0, {     0,      0}, {0xdd, 0xb8, 0x9f, 0xff}}},\n    {{{    12,      0,    -25}, 0, {     0,      0}, {0xc9, 0xb4, 0xab, 0xff}}},\n    {{{     7,     11,    -31}, 0, {     0,      0}, {0xb9, 0x17, 0x9a, 0xff}}},\n    {{{    71,     15,    -46}, 0, {     0,      0}, {0x11, 0x2f, 0x8c, 0xff}}},\n    {{{    71,    -38,     -3}, 0, {     0,      0}, {0x30, 0x8c, 0x0e, 0xff}}},\n    {{{    70,    -13,    -40}, 0, {     0,      0}, {0x42, 0xcc, 0xa2, 0xff}}},\n};\n\n// 0x0501E760\nstatic const Vtx yoshi_seg5_vertex_0501E760[] = {\n    {{{    10,     21,     18}, 0, {     0,      0}, {0xca, 0x6b, 0x28, 0xff}}},\n    {{{    74,     30,     21}, 0, {     0,      0}, {0x15, 0x75, 0x2c, 0x00}}},\n    {{{    72,     32,    -22}, 0, {     0,      0}, {0x11, 0x78, 0xdd, 0x00}}},\n    {{{     8,     23,    -14}, 0, {     0,      0}, {0xc8, 0x6e, 0xe5, 0xff}}},\n    {{{    12,      0,    -25}, 0, {     0,      0}, {0xc9, 0xb4, 0xab, 0xff}}},\n    {{{    70,    -13,    -40}, 0, {     0,      0}, {0xdd, 0xb8, 0x9f, 0xff}}},\n    {{{    71,    -38,     -3}, 0, {     0,      0}, {0xdc, 0x9f, 0xb8, 0xff}}},\n    {{{    17,    -23,      0}, 0, {     0,      0}, {0xc4, 0x91, 0xfd, 0xff}}},\n    {{{    15,     -2,     25}, 0, {     0,      0}, {0xcd, 0xae, 0x51, 0xff}}},\n    {{{    10,      8,     33}, 0, {     0,      0}, {0xbe, 0x0c, 0x6b, 0xff}}},\n    {{{   -11,      1,      0}, 0, {     0,      0}, {0x85, 0xe4, 0x00, 0xff}}},\n    {{{    75,     11,     43}, 0, {     0,      0}, {0x1b, 0x25, 0x76, 0xff}}},\n    {{{    73,    -16,     34}, 0, {     0,      0}, {0x12, 0xab, 0x5c, 0xff}}},\n    {{{    96,    -17,     13}, 0, {     0,      0}, {0x60, 0xba, 0x2c, 0xff}}},\n    {{{   105,     11,     19}, 0, {     0,      0}, {0x65, 0x33, 0x37, 0xff}}},\n    {{{   104,     13,    -25}, 0, {     0,      0}, {0x60, 0x38, 0xc5, 0xff}}},\n};\n\n// 0x0501E860\nstatic const Vtx yoshi_seg5_vertex_0501E860[] = {\n    {{{   104,     13,    -25}, 0, {     0,      0}, {0x60, 0x38, 0xc5, 0xff}}},\n    {{{    94,    -15,    -20}, 0, {     0,      0}, {0x5b, 0xbf, 0xc6, 0x00}}},\n    {{{    70,    -13,    -40}, 0, {     0,      0}, {0x42, 0xcc, 0xa2, 0x00}}},\n    {{{    71,     15,    -46}, 0, {     0,      0}, {0x11, 0x2f, 0x8c, 0xff}}},\n    {{{     7,     11,    -31}, 0, {     0,      0}, {0xb9, 0x17, 0x9a, 0xff}}},\n    {{{     8,     23,    -14}, 0, {     0,      0}, {0xc8, 0x6e, 0xe5, 0xff}}},\n    {{{    72,     32,    -22}, 0, {     0,      0}, {0x11, 0x78, 0xdd, 0xff}}},\n    {{{    12,      0,    -25}, 0, {     0,      0}, {0xc9, 0xb4, 0xab, 0xff}}},\n    {{{   -11,      1,      0}, 0, {     0,      0}, {0x85, 0xe4, 0x00, 0xff}}},\n    {{{    17,    -23,      0}, 0, {     0,      0}, {0xc4, 0x91, 0xfd, 0xff}}},\n    {{{    10,     21,     18}, 0, {     0,      0}, {0xca, 0x6b, 0x28, 0xff}}},\n    {{{    10,      8,     33}, 0, {     0,      0}, {0xbe, 0x0c, 0x6b, 0xff}}},\n    {{{    74,     30,     21}, 0, {     0,      0}, {0x15, 0x75, 0x2c, 0xff}}},\n    {{{    75,     11,     43}, 0, {     0,      0}, {0x1b, 0x25, 0x76, 0xff}}},\n    {{{   105,     11,     19}, 0, {     0,      0}, {0x65, 0x33, 0x37, 0xff}}},\n};\n\n// 0x0501E950\nstatic const Vtx yoshi_seg5_vertex_0501E950[] = {\n    {{{    94,    -15,    -20}, 0, {     0,      0}, {0x5b, 0xbf, 0xc6, 0xff}}},\n    {{{    96,    -17,     13}, 0, {     0,      0}, {0x60, 0xba, 0x2c, 0x00}}},\n    {{{    71,    -38,     -3}, 0, {     0,      0}, {0x30, 0x8c, 0x0e, 0x00}}},\n    {{{    96,    -17,     13}, 0, {     0,      0}, {0x5b, 0xb2, 0x28, 0xff}}},\n    {{{    73,    -16,     34}, 0, {     0,      0}, {0x12, 0xab, 0x5c, 0xff}}},\n    {{{    15,     -2,     25}, 0, {     0,      0}, {0xcd, 0xae, 0x51, 0xff}}},\n    {{{    17,    -23,      0}, 0, {     0,      0}, {0xc4, 0x91, 0xfd, 0xff}}},\n    {{{   -11,      1,      0}, 0, {     0,      0}, {0x85, 0xe4, 0x00, 0xff}}},\n};\n\n// 0x0501E9D0\nstatic const Vtx yoshi_seg5_vertex_0501E9D0[] = {\n    {{{    76,     22,     13}, 0, {     0,      0}, {0x32, 0x4d, 0x57, 0x00}}},\n    {{{    78,    -10,     13}, 0, {     0,      0}, {0x4a, 0xa8, 0x35, 0x00}}},\n    {{{    87,      6,      0}, 0, {     0,      0}, {0x7e, 0x06, 0x00, 0x00}}},\n    {{{    78,    -10,    -13}, 0, {     0,      0}, {0x53, 0xc0, 0xb9, 0xff}}},\n    {{{    -2,    -27,     12}, 0, {     0,      0}, {0xb2, 0xc1, 0x4d, 0xff}}},\n    {{{     3,    -21,    -17}, 0, {     0,      0}, {0xdb, 0xb9, 0x9f, 0xff}}},\n    {{{     1,     30,    -16}, 0, {     0,      0}, {0xc2, 0x58, 0xbf, 0xff}}},\n    {{{    -9,     20,     11}, 0, {     0,      0}, {0x9e, 0x36, 0x3a, 0xff}}},\n    {{{    -9,      4,     -5}, 0, {     0,      0}, {0x87, 0xf9, 0xdc, 0xff}}},\n    {{{    76,     22,    -13}, 0, {     0,      0}, {0x40, 0x3a, 0xa4, 0xff}}},\n};\n\n// 0x0501EA70\nstatic const Vtx yoshi_seg5_vertex_0501EA70[] = {\n    {{{    87,    -12,    -16}, 0, {     0,      0}, {0x35, 0xbc, 0xa4, 0x00}}},\n    {{{    87,    -12,     13}, 0, {     0,      0}, {0x4b, 0xa6, 0x2f, 0x00}}},\n    {{{    -5,    -33,     19}, 0, {     0,      0}, {0xdc, 0xa0, 0x4a, 0x00}}},\n    {{{    -5,     38,     19}, 0, {     0,      0}, {0xe5, 0x6f, 0xca, 0xff}}},\n    {{{    87,     19,     13}, 0, {     0,      0}, {0x41, 0x4f, 0x49, 0xff}}},\n    {{{    87,     19,    -16}, 0, {     0,      0}, {0x3d, 0x50, 0xb4, 0xff}}},\n    {{{    -5,     38,     19}, 0, {     0,      0}, {0xe5, 0x00, 0x7b, 0xff}}},\n    {{{   -24,      2,      9}, 0, {     0,      0}, {0x85, 0xff, 0xe2, 0xff}}},\n    {{{    97,      3,     -1}, 0, {     0,      0}, {0x7f, 0x01, 0x00, 0xff}}},\n    {{{     1,    -18,    -13}, 0, {     0,      0}, {0xc9, 0xc8, 0x9d, 0xff}}},\n    {{{     0,     20,    -13}, 0, {     0,      0}, {0xd3, 0x2a, 0x92, 0xff}}},\n};\n\n// 0x0501EB20\nstatic const Vtx yoshi_seg5_vertex_0501EB20[] = {\n    {{{   212,      0,    -34}, 0, {     0,      0}, {0x54, 0xba, 0xc1, 0x00}}},\n    {{{   212,      0,     39}, 0, {     0,      0}, {0x5c, 0xb4, 0x29, 0x00}}},\n    {{{   169,    -51,    -34}, 0, {     0,      0}, {0x3a, 0x9c, 0xcd, 0x00}}},\n    {{{   169,    -51,     39}, 0, {     0,      0}, {0x34, 0xa5, 0x46, 0xff}}},\n    {{{   119,    -59,    -26}, 0, {     0,      0}, {0xe1, 0x8e, 0xd4, 0xff}}},\n    {{{   119,    -59,     29}, 0, {     0,      0}, {0xe0, 0x89, 0x1c, 0xff}}},\n    {{{    71,    -20,    -33}, 0, {     0,      0}, {0xb8, 0xa1, 0xd7, 0xff}}},\n    {{{    71,    -20,     36}, 0, {     0,      0}, {0xbd, 0xa3, 0x34, 0xff}}},\n    {{{    63,     80,     66}, 0, {     0,      0}, {0xdf, 0xfc, 0x7a, 0xff}}},\n    {{{    38,     19,     55}, 0, {     0,      0}, {0xe7, 0xfa, 0x7c, 0xff}}},\n    {{{   124,    -26,     70}, 0, {     0,      0}, {0xed, 0xc4, 0x6d, 0xff}}},\n    {{{    63,     80,    -58}, 0, {     0,      0}, {0xdf, 0xfe, 0x86, 0xff}}},\n    {{{   124,    -26,    -65}, 0, {     0,      0}, {0xed, 0xc6, 0x91, 0xff}}},\n    {{{    38,     19,    -49}, 0, {     0,      0}, {0xe8, 0xfc, 0x84, 0xff}}},\n    {{{   155,     31,     76}, 0, {     0,      0}, {0x1d, 0xe3, 0x77, 0xff}}},\n};\n\n// 0x0501EC10\nstatic const Vtx yoshi_seg5_vertex_0501EC10[] = {\n    {{{   -13,     33,    -25}, 0, {     0,      0}, {0xd6, 0x24, 0x8f, 0xff}}},\n    {{{   -11,     53,    -25}, 0, {     0,      0}, {0xcc, 0x02, 0x8d, 0x00}}},\n    {{{    38,     19,    -49}, 0, {     0,      0}, {0xe8, 0xfc, 0x84, 0x00}}},\n    {{{    38,     19,     55}, 0, {     0,      0}, {0xe7, 0xfa, 0x7c, 0xff}}},\n    {{{   -13,     33,     29}, 0, {     0,      0}, {0xd4, 0x24, 0x70, 0xff}}},\n    {{{    11,    -20,     65}, 0, {     0,      0}, {0xf8, 0x23, 0x79, 0xff}}},\n    {{{    63,     80,    -58}, 0, {     0,      0}, {0xdf, 0xfe, 0x86, 0xff}}},\n    {{{   155,     31,    -71}, 0, {     0,      0}, {0x1c, 0xe3, 0x88, 0xff}}},\n    {{{   124,    -26,    -65}, 0, {     0,      0}, {0xed, 0xc6, 0x91, 0xff}}},\n    {{{   -35,      4,     37}, 0, {     0,      0}, {0xdc, 0x36, 0x6c, 0xff}}},\n    {{{   119,    -59,     29}, 0, {     0,      0}, {0xe0, 0x89, 0x1c, 0xff}}},\n    {{{   169,    -51,     39}, 0, {     0,      0}, {0x34, 0xa5, 0x46, 0xff}}},\n    {{{   124,    -26,     70}, 0, {     0,      0}, {0xed, 0xc4, 0x6d, 0xff}}},\n    {{{   169,    -51,    -34}, 0, {     0,      0}, {0x3a, 0x9c, 0xcd, 0xff}}},\n    {{{   119,    -59,    -26}, 0, {     0,      0}, {0xe1, 0x8e, 0xd4, 0xff}}},\n    {{{    71,    -20,     36}, 0, {     0,      0}, {0xbd, 0xa3, 0x34, 0xff}}},\n};\n\n// 0x0501ED10\nstatic const Vtx yoshi_seg5_vertex_0501ED10[] = {\n    {{{   124,    -26,    -65}, 0, {     0,      0}, {0xed, 0xc6, 0x91, 0xff}}},\n    {{{   119,    -59,    -26}, 0, {     0,      0}, {0xe1, 0x8e, 0xd4, 0x00}}},\n    {{{    71,    -20,    -33}, 0, {     0,      0}, {0xb8, 0xa1, 0xd7, 0x00}}},\n    {{{   -35,      4,    -31}, 0, {     0,      0}, {0xc5, 0x90, 0x00, 0xff}}},\n    {{{    11,    -20,    -60}, 0, {     0,      0}, {0xc5, 0x90, 0x00, 0xff}}},\n    {{{    70,    -52,    -32}, 0, {     0,      0}, {0xc5, 0x90, 0x00, 0xff}}},\n    {{{    38,     19,     55}, 0, {     0,      0}, {0xe7, 0xfa, 0x7c, 0xff}}},\n    {{{    71,    -20,     36}, 0, {     0,      0}, {0xbd, 0xa3, 0x34, 0xff}}},\n    {{{   124,    -26,     70}, 0, {     0,      0}, {0xed, 0xc4, 0x6d, 0xff}}},\n    {{{    38,     19,    -49}, 0, {     0,      0}, {0xe8, 0xfc, 0x84, 0xff}}},\n    {{{   -35,      4,     37}, 0, {     0,      0}, {0xc5, 0x90, 0x00, 0xff}}},\n    {{{    11,    -20,     65}, 0, {     0,      0}, {0xc5, 0x90, 0x00, 0xff}}},\n    {{{    70,    -52,     35}, 0, {     0,      0}, {0xc5, 0x90, 0x00, 0xff}}},\n    {{{    63,     80,     66}, 0, {     0,      0}, {0xdf, 0xfc, 0x7a, 0xff}}},\n    {{{    11,    108,     40}, 0, {     0,      0}, {0xc9, 0x03, 0x72, 0xff}}},\n    {{{   -11,     53,     30}, 0, {     0,      0}, {0xc9, 0x02, 0x72, 0xff}}},\n};\n\n// 0x0501EE10\nstatic const Vtx yoshi_seg5_vertex_0501EE10[] = {\n    {{{   169,    -51,     39}, 0, {     0,      0}, {0x34, 0xa5, 0x46, 0xff}}},\n    {{{   212,      0,     39}, 0, {     0,      0}, {0x5c, 0xb4, 0x29, 0x00}}},\n    {{{   155,     31,     76}, 0, {     0,      0}, {0x1d, 0xe3, 0x77, 0x00}}},\n    {{{   119,    -59,    -26}, 0, {     0,      0}, {0xe1, 0x8e, 0xd4, 0xff}}},\n    {{{   169,    -51,    -34}, 0, {     0,      0}, {0x3a, 0x9c, 0xcd, 0xff}}},\n    {{{   119,    -59,     29}, 0, {     0,      0}, {0xe0, 0x89, 0x1c, 0xff}}},\n    {{{   155,     31,    -71}, 0, {     0,      0}, {0x1c, 0xe3, 0x88, 0xff}}},\n    {{{   212,      0,    -34}, 0, {     0,      0}, {0x54, 0xba, 0xc1, 0xff}}},\n    {{{   124,    -26,     70}, 0, {     0,      0}, {0xed, 0xc4, 0x6d, 0xff}}},\n    {{{   124,    -26,    -65}, 0, {     0,      0}, {0xed, 0xc6, 0x91, 0xff}}},\n    {{{   -11,     53,    -25}, 0, {     0,      0}, {0x87, 0x25, 0x00, 0xff}}},\n    {{{   -11,     53,     30}, 0, {     0,      0}, {0x84, 0x19, 0x00, 0xff}}},\n    {{{    11,    108,     40}, 0, {     0,      0}, {0x8b, 0x31, 0x00, 0xff}}},\n    {{{    38,     19,    -49}, 0, {     0,      0}, {0xe8, 0xfc, 0x84, 0xff}}},\n    {{{   -11,     53,    -25}, 0, {     0,      0}, {0xcc, 0x02, 0x8d, 0xff}}},\n    {{{    11,    108,    -34}, 0, {     0,      0}, {0xcd, 0x03, 0x8d, 0xff}}},\n};\n\n// 0x0501EF10\nstatic const Vtx yoshi_seg5_vertex_0501EF10[] = {\n    {{{   -13,     33,    -25}, 0, {     0,      0}, {0x86, 0x22, 0x00, 0xff}}},\n    {{{   -13,     33,     29}, 0, {     0,      0}, {0x8f, 0x38, 0x00, 0x00}}},\n    {{{   -11,     53,     30}, 0, {     0,      0}, {0x84, 0x19, 0x00, 0x00}}},\n    {{{    11,    -20,    -60}, 0, {     0,      0}, {0xf9, 0x25, 0x87, 0xff}}},\n    {{{   -35,      4,    -31}, 0, {     0,      0}, {0xdb, 0x35, 0x93, 0xff}}},\n    {{{   -13,     33,    -25}, 0, {     0,      0}, {0xd6, 0x24, 0x8f, 0xff}}},\n    {{{    11,    108,    -34}, 0, {     0,      0}, {0x8b, 0x31, 0x00, 0xff}}},\n    {{{   -11,     53,    -25}, 0, {     0,      0}, {0x87, 0x25, 0x00, 0xff}}},\n    {{{    11,    108,     40}, 0, {     0,      0}, {0x8b, 0x31, 0x00, 0xff}}},\n    {{{    63,     80,    -58}, 0, {     0,      0}, {0xdf, 0xfe, 0x86, 0xff}}},\n    {{{    38,     19,    -49}, 0, {     0,      0}, {0xe8, 0xfc, 0x84, 0xff}}},\n    {{{    11,    108,    -34}, 0, {     0,      0}, {0xcd, 0x03, 0x8d, 0xff}}},\n    {{{    38,     19,     55}, 0, {     0,      0}, {0xe7, 0xfa, 0x7c, 0xff}}},\n    {{{   -11,     53,     30}, 0, {     0,      0}, {0xc9, 0x02, 0x72, 0xff}}},\n    {{{   -13,     33,     29}, 0, {     0,      0}, {0xd4, 0x24, 0x70, 0xff}}},\n};\n\n// 0x0501F000\nstatic const Vtx yoshi_seg5_vertex_0501F000[] = {\n    {{{   -35,      4,    -31}, 0, {     0,      0}, {0x9b, 0x4b, 0x00, 0xff}}},\n    {{{   -35,      4,     37}, 0, {     0,      0}, {0x9b, 0x4b, 0x00, 0x00}}},\n    {{{   -13,     33,     29}, 0, {     0,      0}, {0x8f, 0x38, 0x00, 0x00}}},\n    {{{    70,    -52,     35}, 0, {     0,      0}, {0x7e, 0xfc, 0x00, 0xff}}},\n    {{{    70,    -52,    -32}, 0, {     0,      0}, {0x7e, 0xfc, 0x00, 0xff}}},\n    {{{    71,    -20,    -33}, 0, {     0,      0}, {0x7e, 0xfc, 0x00, 0xff}}},\n    {{{    11,    -20,     65}, 0, {     0,      0}, {0xf8, 0x23, 0x79, 0xff}}},\n    {{{    70,    -52,     35}, 0, {     0,      0}, {0x36, 0xf9, 0x72, 0xff}}},\n    {{{    38,     19,     55}, 0, {     0,      0}, {0xe7, 0xfa, 0x7c, 0xff}}},\n    {{{    38,     19,    -49}, 0, {     0,      0}, {0xe8, 0xfc, 0x84, 0xff}}},\n    {{{    70,    -52,    -32}, 0, {     0,      0}, {0x32, 0xfc, 0x8c, 0xff}}},\n    {{{    11,    -20,    -60}, 0, {     0,      0}, {0xf9, 0x25, 0x87, 0xff}}},\n    {{{    71,    -20,    -33}, 0, {     0,      0}, {0x30, 0xfb, 0x8b, 0xff}}},\n    {{{    71,    -20,     36}, 0, {     0,      0}, {0x39, 0xfa, 0x71, 0xff}}},\n    {{{    71,    -20,     36}, 0, {     0,      0}, {0x7e, 0xfc, 0x00, 0xff}}},\n    {{{   -13,     33,    -25}, 0, {     0,      0}, {0x86, 0x22, 0x00, 0xff}}},\n};\n\n// 0x0501F100\nstatic const Vtx yoshi_seg5_vertex_0501F100[] = {\n    {{{   212,      0,    -34}, 0, {     0,      0}, {0x3b, 0x70, 0x00, 0xff}}},\n    {{{   155,     31,    -71}, 0, {     0,      0}, {0x3b, 0x70, 0x01, 0x00}}},\n    {{{    63,     80,    -58}, 0, {     0,      0}, {0x3b, 0x70, 0x00, 0x00}}},\n    {{{    11,    108,    -34}, 0, {     0,      0}, {0x3c, 0x6f, 0xff, 0xff}}},\n    {{{    11,    108,     40}, 0, {     0,      0}, {0x3c, 0x6f, 0x00, 0xff}}},\n    {{{    63,     80,     66}, 0, {     0,      0}, {0x3b, 0x70, 0x00, 0xff}}},\n    {{{   155,     31,     76}, 0, {     0,      0}, {0x3b, 0x70, 0x00, 0xff}}},\n    {{{   212,      0,     39}, 0, {     0,      0}, {0x3c, 0x6f, 0x00, 0xff}}},\n};\n\n// 0x0501F180\nstatic const Vtx yoshi_seg5_vertex_0501F180[] = {\n    {{{    77,    -40,    -10}, 0, {     0,      0}, {0x26, 0x90, 0xd5, 0x00}}},\n    {{{     4,    -48,     28}, 0, {     0,      0}, {0xda, 0x91, 0x2e, 0x00}}},\n    {{{     2,    -48,    -17}, 0, {     0,      0}, {0xba, 0xa0, 0xd6, 0x00}}},\n    {{{    81,     36,      4}, 0, {     0,      0}, {0x2f, 0x75, 0xfe, 0xff}}},\n    {{{    10,     38,    -23}, 0, {     0,      0}, {0xe3, 0x46, 0x9b, 0xff}}},\n    {{{     7,     53,      4}, 0, {     0,      0}, {0xde, 0x7a, 0xfd, 0xff}}},\n    {{{    76,    -40,     20}, 0, {     0,      0}, {0x24, 0x99, 0x3f, 0xff}}},\n    {{{    76,     25,    -19}, 0, {     0,      0}, {0x33, 0x44, 0xa3, 0xff}}},\n    {{{    77,    -21,     38}, 0, {     0,      0}, {0x24, 0xf7, 0x79, 0xff}}},\n    {{{     7,     37,     35}, 0, {     0,      0}, {0xe0, 0x45, 0x64, 0xff}}},\n    {{{     3,    -26,     42}, 0, {     0,      0}, {0xe2, 0xd8, 0x74, 0xff}}},\n    {{{    78,    -21,    -28}, 0, {     0,      0}, {0x24, 0xfb, 0x87, 0xff}}},\n    {{{     3,    -26,    -33}, 0, {     0,      0}, {0xe1, 0xd9, 0x8c, 0xff}}},\n    {{{   117,      6,      5}, 0, {     0,      0}, {0x68, 0x48, 0x00, 0xff}}},\n    {{{   -16,     30,      5}, 0, {     0,      0}, {0x99, 0x49, 0xfc, 0xff}}},\n    {{{    80,     24,     30}, 0, {     0,      0}, {0x35, 0x44, 0x5d, 0xff}}},\n};\n\n// 0x0501F280\nstatic const Vtx yoshi_seg5_vertex_0501F280[] = {\n    {{{    77,    -21,     38}, 0, {     0,      0}, {0x24, 0xf7, 0x79, 0xff}}},\n    {{{    76,    -40,     20}, 0, {     0,      0}, {0x24, 0x99, 0x3f, 0x00}}},\n    {{{   114,    -16,     21}, 0, {     0,      0}, {0x5f, 0xbf, 0x34, 0x00}}},\n    {{{   -20,    -10,     21}, 0, {     0,      0}, {0x93, 0xe3, 0x38, 0xff}}},\n    {{{     4,    -48,     28}, 0, {     0,      0}, {0xda, 0x91, 0x2e, 0xff}}},\n    {{{     3,    -26,     42}, 0, {     0,      0}, {0xe2, 0xd8, 0x74, 0xff}}},\n    {{{     3,    -26,    -33}, 0, {     0,      0}, {0xe1, 0xd9, 0x8c, 0xff}}},\n    {{{     2,    -48,    -17}, 0, {     0,      0}, {0xba, 0xa0, 0xd6, 0xff}}},\n    {{{   -21,    -10,    -11}, 0, {     0,      0}, {0x98, 0xf4, 0xba, 0xff}}},\n    {{{    77,    -40,    -10}, 0, {     0,      0}, {0x26, 0x90, 0xd5, 0xff}}},\n    {{{    78,    -21,    -28}, 0, {     0,      0}, {0x24, 0xfb, 0x87, 0xff}}},\n    {{{   115,    -16,    -12}, 0, {     0,      0}, {0x63, 0xd2, 0xc1, 0xff}}},\n    {{{   117,      6,      5}, 0, {     0,      0}, {0x68, 0x48, 0x00, 0xff}}},\n    {{{    80,     24,     30}, 0, {     0,      0}, {0x35, 0x44, 0x5d, 0xff}}},\n    {{{    76,     25,    -19}, 0, {     0,      0}, {0x33, 0x44, 0xa3, 0xff}}},\n    {{{     7,     37,     35}, 0, {     0,      0}, {0xe0, 0x45, 0x64, 0xff}}},\n};\n\n// 0x0501F380\nstatic const Vtx yoshi_seg5_vertex_0501F380[] = {\n    {{{     3,    -26,    -33}, 0, {     0,      0}, {0xe1, 0xd9, 0x8c, 0xff}}},\n    {{{   -21,    -10,    -11}, 0, {     0,      0}, {0x98, 0xf4, 0xba, 0x00}}},\n    {{{    10,     38,    -23}, 0, {     0,      0}, {0xe3, 0x46, 0x9b, 0x00}}},\n    {{{    81,     36,      4}, 0, {     0,      0}, {0x2f, 0x75, 0xfe, 0xff}}},\n    {{{     7,     53,      4}, 0, {     0,      0}, {0xde, 0x7a, 0xfd, 0xff}}},\n    {{{     7,     37,     35}, 0, {     0,      0}, {0xe0, 0x45, 0x64, 0xff}}},\n    {{{   114,    -16,     21}, 0, {     0,      0}, {0x5f, 0xbf, 0x34, 0xff}}},\n    {{{    77,    -40,    -10}, 0, {     0,      0}, {0x26, 0x90, 0xd5, 0xff}}},\n    {{{   115,    -16,    -12}, 0, {     0,      0}, {0x63, 0xd2, 0xc1, 0xff}}},\n    {{{     3,    -26,     42}, 0, {     0,      0}, {0xe2, 0xd8, 0x74, 0xff}}},\n    {{{    76,    -40,     20}, 0, {     0,      0}, {0x24, 0x99, 0x3f, 0xff}}},\n    {{{    77,    -21,     38}, 0, {     0,      0}, {0x24, 0xf7, 0x79, 0xff}}},\n    {{{     2,    -48,    -17}, 0, {     0,      0}, {0xba, 0xa0, 0xd6, 0xff}}},\n    {{{     4,    -48,     28}, 0, {     0,      0}, {0xda, 0x91, 0x2e, 0xff}}},\n    {{{   -20,    -10,     21}, 0, {     0,      0}, {0x93, 0xe3, 0x38, 0xff}}},\n    {{{    78,    -21,    -28}, 0, {     0,      0}, {0x24, 0xfb, 0x87, 0xff}}},\n};\n\n// 0x0501F480\nstatic const Vtx yoshi_seg5_vertex_0501F480[] = {\n    {{{     7,     37,     35}, 0, {     0,      0}, {0xe0, 0x45, 0x64, 0xff}}},\n    {{{    80,     24,     30}, 0, {     0,      0}, {0x35, 0x44, 0x5d, 0x00}}},\n    {{{    81,     36,      4}, 0, {     0,      0}, {0x2f, 0x75, 0xfe, 0x00}}},\n    {{{   -21,    -10,    -11}, 0, {     0,      0}, {0x98, 0xf4, 0xba, 0xff}}},\n    {{{   -16,     30,      5}, 0, {     0,      0}, {0x99, 0x49, 0xfc, 0xff}}},\n    {{{    10,     38,    -23}, 0, {     0,      0}, {0xe3, 0x46, 0x9b, 0xff}}},\n    {{{   -20,    -10,     21}, 0, {     0,      0}, {0x93, 0xe3, 0x38, 0xff}}},\n    {{{    76,     25,    -19}, 0, {     0,      0}, {0x33, 0x44, 0xa3, 0xff}}},\n    {{{    78,    -21,    -28}, 0, {     0,      0}, {0x24, 0xfb, 0x87, 0xff}}},\n    {{{    77,    -21,     38}, 0, {     0,      0}, {0x24, 0xf7, 0x79, 0xff}}},\n    {{{   115,    -16,    -12}, 0, {     0,      0}, {0x63, 0xd2, 0xc1, 0xff}}},\n    {{{   114,    -16,     21}, 0, {     0,      0}, {0x5f, 0xbf, 0x34, 0xff}}},\n};\n\n// 0x0501F540\nstatic const Vtx yoshi_seg5_vertex_0501F540[] = {\n    {{{    94,    -67,    -16}, 0, {     0,      0}, {0x2c, 0x8d, 0xe5, 0x00}}},\n    {{{    22,    -63,     23}, 0, {     0,      0}, {0xdc, 0xa3, 0x4d, 0x00}}},\n    {{{    18,    -83,    -16}, 0, {     0,      0}, {0xd9, 0x96, 0xc9, 0x00}}},\n    {{{   105,     35,    -31}, 0, {     0,      0}, {0x1f, 0x1d, 0x89, 0xff}}},\n    {{{    21,     52,    -37}, 0, {     0,      0}, {0xf2, 0x2c, 0x8a, 0xff}}},\n    {{{    27,     83,    -12}, 0, {     0,      0}, {0xf9, 0x78, 0xd9, 0xff}}},\n    {{{   -27,    -31,    -16}, 0, {     0,      0}, {0x91, 0xce, 0xde, 0xff}}},\n    {{{   -24,    -13,     23}, 0, {     0,      0}, {0x9d, 0xe9, 0x4b, 0xff}}},\n    {{{   -21,     60,    -16}, 0, {     0,      0}, {0xa0, 0x30, 0xbe, 0xff}}},\n    {{{   148,     27,    -12}, 0, {     0,      0}, {0x79, 0x22, 0xf2, 0xff}}},\n    {{{   127,    -25,     23}, 0, {     0,      0}, {0x5b, 0xd0, 0x49, 0xff}}},\n    {{{   135,    -34,    -16}, 0, {     0,      0}, {0x5c, 0xd1, 0xb8, 0xff}}},\n    {{{    82,    -36,     45}, 0, {     0,      0}, {0x18, 0xcd, 0x71, 0xff}}},\n    {{{    21,     52,     44}, 0, {     0,      0}, {0xf7, 0x38, 0x71, 0xff}}},\n    {{{    20,    -24,     44}, 0, {     0,      0}, {0xdf, 0xe3, 0x76, 0xff}}},\n    {{{     8,     -9,    -37}, 0, {     0,      0}, {0xea, 0xf1, 0x85, 0xff}}},\n};\n\n// 0x0501F640\nstatic const Vtx yoshi_seg5_vertex_0501F640[] = {\n    {{{   105,     35,    -31}, 0, {     0,      0}, {0x1f, 0x1d, 0x89, 0xff}}},\n    {{{   111,     66,    -12}, 0, {     0,      0}, {0x37, 0x71, 0xf9, 0x00}}},\n    {{{   148,     27,    -12}, 0, {     0,      0}, {0x79, 0x22, 0xf2, 0x00}}},\n    {{{   -21,     60,    -16}, 0, {     0,      0}, {0xa0, 0x30, 0xbe, 0xff}}},\n    {{{    27,     83,    -12}, 0, {     0,      0}, {0xf9, 0x78, 0xd9, 0xff}}},\n    {{{    21,     52,    -37}, 0, {     0,      0}, {0xf2, 0x2c, 0x8a, 0xff}}},\n    {{{    21,     52,     44}, 0, {     0,      0}, {0xf7, 0x38, 0x71, 0xff}}},\n    {{{   -21,     60,     23}, 0, {     0,      0}, {0xaf, 0x4e, 0x3a, 0xff}}},\n    {{{   105,     35,     38}, 0, {     0,      0}, {0x3e, 0x2c, 0x65, 0xff}}},\n    {{{   127,    -25,     23}, 0, {     0,      0}, {0x5b, 0xd0, 0x49, 0xff}}},\n    {{{    82,    -36,     45}, 0, {     0,      0}, {0x18, 0xcd, 0x71, 0xff}}},\n    {{{    94,    -67,    -16}, 0, {     0,      0}, {0x2c, 0x8d, 0xe5, 0xff}}},\n    {{{   -24,    -13,     23}, 0, {     0,      0}, {0x9d, 0xe9, 0x4b, 0xff}}},\n    {{{    22,    -63,     23}, 0, {     0,      0}, {0xdc, 0xa3, 0x4d, 0xff}}},\n    {{{    20,    -24,     44}, 0, {     0,      0}, {0xdf, 0xe3, 0x76, 0xff}}},\n};\n\n// 0x0501F730\nstatic const Vtx yoshi_seg5_vertex_0501F730[] = {\n    {{{     8,     -9,    -37}, 0, {     0,      0}, {0xea, 0xf1, 0x85, 0xff}}},\n    {{{    18,    -83,    -16}, 0, {     0,      0}, {0xd9, 0x96, 0xc9, 0x00}}},\n    {{{   -27,    -31,    -16}, 0, {     0,      0}, {0x91, 0xce, 0xde, 0x00}}},\n    {{{    94,    -67,    -16}, 0, {     0,      0}, {0x2c, 0x8d, 0xe5, 0xff}}},\n    {{{    93,    -26,    -37}, 0, {     0,      0}, {0x16, 0xe6, 0x86, 0xff}}},\n    {{{   135,    -34,    -16}, 0, {     0,      0}, {0x5c, 0xd1, 0xb8, 0xff}}},\n    {{{   127,    -25,     23}, 0, {     0,      0}, {0x5b, 0xd0, 0x49, 0xff}}},\n    {{{   148,     27,    -12}, 0, {     0,      0}, {0x79, 0x22, 0xf2, 0xff}}},\n    {{{   105,     35,     38}, 0, {     0,      0}, {0x3e, 0x2c, 0x65, 0xff}}},\n    {{{   105,     35,    -31}, 0, {     0,      0}, {0x1f, 0x1d, 0x89, 0xff}}},\n    {{{    21,     52,     44}, 0, {     0,      0}, {0xf7, 0x38, 0x71, 0xff}}},\n    {{{   -21,     60,     23}, 0, {     0,      0}, {0xaf, 0x4e, 0x3a, 0xff}}},\n    {{{   -24,    -13,     23}, 0, {     0,      0}, {0x9d, 0xe9, 0x4b, 0xff}}},\n    {{{   -21,     60,    -16}, 0, {     0,      0}, {0xa0, 0x30, 0xbe, 0xff}}},\n    {{{   111,     66,    -12}, 0, {     0,      0}, {0x37, 0x71, 0xf9, 0xff}}},\n};\n\n// 0x0501F820\nstatic const Vtx yoshi_seg5_vertex_0501F820[] = {\n    {{{    82,    -36,     45}, 0, {     0,      0}, {0x18, 0xcd, 0x71, 0xff}}},\n    {{{    20,    -24,     44}, 0, {     0,      0}, {0xdf, 0xe3, 0x76, 0x00}}},\n    {{{    22,    -63,     23}, 0, {     0,      0}, {0xdc, 0xa3, 0x4d, 0x00}}},\n    {{{   -27,    -31,    -16}, 0, {     0,      0}, {0x91, 0xce, 0xde, 0xff}}},\n    {{{    18,    -83,    -16}, 0, {     0,      0}, {0xd9, 0x96, 0xc9, 0xff}}},\n    {{{    94,    -67,    -16}, 0, {     0,      0}, {0x2c, 0x8d, 0xe5, 0xff}}},\n    {{{     8,     -9,    -37}, 0, {     0,      0}, {0xea, 0xf1, 0x85, 0xff}}},\n    {{{    27,     83,    -12}, 0, {     0,      0}, {0xf9, 0x78, 0xd9, 0xff}}},\n    {{{   -21,     60,    -16}, 0, {     0,      0}, {0xa0, 0x30, 0xbe, 0xff}}},\n    {{{   -21,     60,     23}, 0, {     0,      0}, {0xaf, 0x4e, 0x3a, 0xff}}},\n    {{{    93,    -26,    -37}, 0, {     0,      0}, {0x16, 0xe6, 0x86, 0xff}}},\n    {{{   -24,    -13,     23}, 0, {     0,      0}, {0x9d, 0xe9, 0x4b, 0xff}}},\n    {{{   111,     66,    -12}, 0, {     0,      0}, {0x37, 0x71, 0xf9, 0xff}}},\n    {{{    21,     52,     44}, 0, {     0,      0}, {0xf7, 0x38, 0x71, 0xff}}},\n    {{{    21,     52,    -37}, 0, {     0,      0}, {0xf2, 0x2c, 0x8a, 0xff}}},\n};\n\n// 0x0501F910\nstatic const Vtx yoshi_seg5_vertex_0501F910[] = {\n    {{{   135,    -34,    -16}, 0, {     0,      0}, {0x5c, 0xd1, 0xb8, 0xff}}},\n    {{{    93,    -26,    -37}, 0, {     0,      0}, {0x16, 0xe6, 0x86, 0x00}}},\n    {{{   105,     35,    -31}, 0, {     0,      0}, {0x1f, 0x1d, 0x89, 0x00}}},\n    {{{   105,     35,     38}, 0, {     0,      0}, {0x3e, 0x2c, 0x65, 0xff}}},\n    {{{    82,    -36,     45}, 0, {     0,      0}, {0x18, 0xcd, 0x71, 0xff}}},\n    {{{   127,    -25,     23}, 0, {     0,      0}, {0x5b, 0xd0, 0x49, 0xff}}},\n    {{{     8,     -9,    -37}, 0, {     0,      0}, {0xea, 0xf1, 0x85, 0xff}}},\n    {{{    21,     52,     44}, 0, {     0,      0}, {0xf7, 0x38, 0x71, 0xff}}},\n    {{{   -24,    -13,     23}, 0, {     0,      0}, {0x9d, 0xe9, 0x4b, 0xff}}},\n    {{{   -21,     60,     23}, 0, {     0,      0}, {0xaf, 0x4e, 0x3a, 0xff}}},\n    {{{   -21,     60,    -16}, 0, {     0,      0}, {0xa0, 0x30, 0xbe, 0xff}}},\n    {{{    27,     83,    -12}, 0, {     0,      0}, {0xf9, 0x78, 0xd9, 0xff}}},\n    {{{   111,     66,    -12}, 0, {     0,      0}, {0x37, 0x71, 0xf9, 0xff}}},\n    {{{    22,    -63,     23}, 0, {     0,      0}, {0xdc, 0xa3, 0x4d, 0xff}}},\n    {{{    94,    -67,    -16}, 0, {     0,      0}, {0x2c, 0x8d, 0xe5, 0xff}}},\n};\n\n// 0x0501FA00\nstatic const Vtx yoshi_seg5_vertex_0501FA00[] = {\n    {{{   153,     13,     26}, 0, {     0,      0}, {0x26, 0x45, 0x62, 0x00}}},\n    {{{   163,     33,      0}, 0, {     0,      0}, {0x2c, 0x76, 0x06, 0x00}}},\n    {{{    36,     83,      0}, 0, {     0,      0}, {0x11, 0x7d, 0x02, 0x00}}},\n    {{{    28,     40,     63}, 0, {     0,      0}, {0x04, 0x38, 0x71, 0xff}}},\n    {{{     8,    -59,     89}, 0, {     0,      0}, {0xf4, 0xcb, 0x72, 0xff}}},\n    {{{   109,    -42,     53}, 0, {     0,      0}, {0x30, 0xe6, 0x72, 0xff}}},\n    {{{   111,    -42,    -54}, 0, {     0,      0}, {0x30, 0xdf, 0x90, 0xff}}},\n    {{{     8,    -59,    -89}, 0, {     0,      0}, {0xea, 0xd7, 0x8b, 0xff}}},\n    {{{    28,     40,    -64}, 0, {     0,      0}, {0x10, 0x3e, 0x93, 0xff}}},\n    {{{   -21,     53,     45}, 0, {     0,      0}, {0xda, 0x5c, 0x4d, 0xff}}},\n    {{{   -21,     53,    -45}, 0, {     0,      0}, {0xcf, 0x51, 0xac, 0xff}}},\n    {{{   153,     13,    -32}, 0, {     0,      0}, {0x28, 0x47, 0x9f, 0xff}}},\n    {{{   -41,    -20,     45}, 0, {     0,      0}, {0x9a, 0xe5, 0x46, 0xff}}},\n    {{{   -41,    -20,    -45}, 0, {     0,      0}, {0x96, 0xe0, 0xc3, 0xff}}},\n    {{{   254,      1,      0}, 0, {     0,      0}, {0x7a, 0xe0, 0x06, 0xff}}},\n};\n\n// 0x0501FAF0\nstatic const Vtx yoshi_seg5_vertex_0501FAF0[] = {\n    {{{   -41,    -20,     45}, 0, {     0,      0}, {0x9a, 0xe5, 0x46, 0x00}}},\n    {{{   -41,    -20,    -45}, 0, {     0,      0}, {0x96, 0xe0, 0xc3, 0x00}}},\n    {{{    -7,    -89,    -41}, 0, {     0,      0}, {0xbc, 0x9a, 0xe2, 0x00}}},\n    {{{     8,    -59,     89}, 0, {     0,      0}, {0xf4, 0xcb, 0x72, 0xff}}},\n    {{{    -7,    -89,     42}, 0, {     0,      0}, {0xe1, 0x8a, 0x1f, 0xff}}},\n    {{{   111,    -42,    -54}, 0, {     0,      0}, {0x30, 0xdf, 0x90, 0xff}}},\n    {{{   254,      1,      0}, 0, {     0,      0}, {0x7a, 0xe0, 0x06, 0xff}}},\n    {{{    95,    -65,    -30}, 0, {     0,      0}, {0x27, 0x8c, 0xe2, 0xff}}},\n    {{{    95,    -65,     30}, 0, {     0,      0}, {0x2a, 0x90, 0x27, 0xff}}},\n    {{{     8,    -59,    -89}, 0, {     0,      0}, {0xea, 0xd7, 0x8b, 0xff}}},\n    {{{   109,    -42,     53}, 0, {     0,      0}, {0x30, 0xe6, 0x72, 0xff}}},\n};\n\n// 0x0501FBA0\nstatic const Vtx yoshi_seg5_vertex_0501FBA0[] = {\n    {{{   169,    -51,     34}, 0, {     0,      0}, {0x3a, 0x9c, 0x33, 0x00}}},\n    {{{   212,      0,    -39}, 0, {     0,      0}, {0x5c, 0xb4, 0xd7, 0x00}}},\n    {{{   212,      0,     34}, 0, {     0,      0}, {0x54, 0xba, 0x3f, 0x00}}},\n    {{{   169,    -51,    -39}, 0, {     0,      0}, {0x34, 0xa5, 0xba, 0xff}}},\n    {{{    71,    -20,     33}, 0, {     0,      0}, {0xb8, 0xa1, 0x29, 0xff}}},\n    {{{   119,    -59,    -29}, 0, {     0,      0}, {0xe0, 0x89, 0xe4, 0xff}}},\n    {{{   119,    -59,     26}, 0, {     0,      0}, {0xe1, 0x8e, 0x2c, 0xff}}},\n    {{{    71,    -20,    -36}, 0, {     0,      0}, {0xbd, 0xa3, 0xcc, 0xff}}},\n    {{{   124,    -26,    -70}, 0, {     0,      0}, {0xed, 0xc4, 0x93, 0xff}}},\n    {{{    38,     19,    -55}, 0, {     0,      0}, {0xe7, 0xfa, 0x84, 0xff}}},\n    {{{    63,     80,    -66}, 0, {     0,      0}, {0xdf, 0xfc, 0x86, 0xff}}},\n    {{{    38,     19,     49}, 0, {     0,      0}, {0xe8, 0xfc, 0x7c, 0xff}}},\n    {{{   124,    -26,     65}, 0, {     0,      0}, {0xed, 0xc6, 0x6f, 0xff}}},\n    {{{    63,     80,     58}, 0, {     0,      0}, {0xdf, 0xfe, 0x7a, 0xff}}},\n    {{{   155,     31,    -76}, 0, {     0,      0}, {0x1d, 0xe3, 0x89, 0xff}}},\n};\n\n// 0x0501FC90\nstatic const Vtx yoshi_seg5_vertex_0501FC90[] = {\n    {{{    38,     19,     49}, 0, {     0,      0}, {0xe8, 0xfc, 0x7c, 0xff}}},\n    {{{   -11,     53,     25}, 0, {     0,      0}, {0xcc, 0x02, 0x73, 0x00}}},\n    {{{   -13,     33,     25}, 0, {     0,      0}, {0xd6, 0x24, 0x71, 0x00}}},\n    {{{    11,    -20,    -65}, 0, {     0,      0}, {0xf8, 0x23, 0x87, 0xff}}},\n    {{{   -13,     33,    -29}, 0, {     0,      0}, {0xd4, 0x24, 0x90, 0xff}}},\n    {{{    38,     19,    -55}, 0, {     0,      0}, {0xe7, 0xfa, 0x84, 0xff}}},\n    {{{   124,    -26,     65}, 0, {     0,      0}, {0xed, 0xc6, 0x6f, 0xff}}},\n    {{{   155,     31,     71}, 0, {     0,      0}, {0x1c, 0xe3, 0x78, 0xff}}},\n    {{{    63,     80,     58}, 0, {     0,      0}, {0xdf, 0xfe, 0x7a, 0xff}}},\n    {{{   -35,      4,    -37}, 0, {     0,      0}, {0xdc, 0x36, 0x94, 0xff}}},\n    {{{   124,    -26,    -70}, 0, {     0,      0}, {0xed, 0xc4, 0x93, 0xff}}},\n    {{{   169,    -51,    -39}, 0, {     0,      0}, {0x34, 0xa5, 0xba, 0xff}}},\n    {{{   119,    -59,    -29}, 0, {     0,      0}, {0xe0, 0x89, 0xe4, 0xff}}},\n    {{{   119,    -59,     26}, 0, {     0,      0}, {0xe1, 0x8e, 0x2c, 0xff}}},\n    {{{   169,    -51,     34}, 0, {     0,      0}, {0x3a, 0x9c, 0x33, 0xff}}},\n    {{{    71,    -20,    -36}, 0, {     0,      0}, {0xbd, 0xa3, 0xcc, 0xff}}},\n};\n\n// 0x0501FD90\nstatic const Vtx yoshi_seg5_vertex_0501FD90[] = {\n    {{{    71,    -20,     33}, 0, {     0,      0}, {0xb8, 0xa1, 0x29, 0xff}}},\n    {{{   119,    -59,     26}, 0, {     0,      0}, {0xe1, 0x8e, 0x2c, 0x00}}},\n    {{{   124,    -26,     65}, 0, {     0,      0}, {0xed, 0xc6, 0x6f, 0x00}}},\n    {{{    70,    -52,     32}, 0, {     0,      0}, {0xc5, 0x90, 0x00, 0xff}}},\n    {{{    11,    -20,     60}, 0, {     0,      0}, {0xc5, 0x90, 0x00, 0xff}}},\n    {{{   -35,      4,     31}, 0, {     0,      0}, {0xc5, 0x90, 0x00, 0xff}}},\n    {{{   124,    -26,    -70}, 0, {     0,      0}, {0xed, 0xc4, 0x93, 0xff}}},\n    {{{    71,    -20,    -36}, 0, {     0,      0}, {0xbd, 0xa3, 0xcc, 0xff}}},\n    {{{    38,     19,    -55}, 0, {     0,      0}, {0xe7, 0xfa, 0x84, 0xff}}},\n    {{{    38,     19,     49}, 0, {     0,      0}, {0xe8, 0xfc, 0x7c, 0xff}}},\n    {{{   -35,      4,    -37}, 0, {     0,      0}, {0xc5, 0x90, 0x00, 0xff}}},\n    {{{    11,    -20,    -65}, 0, {     0,      0}, {0xc5, 0x90, 0x00, 0xff}}},\n    {{{    70,    -52,    -35}, 0, {     0,      0}, {0xc5, 0x90, 0x00, 0xff}}},\n    {{{    11,    108,    -40}, 0, {     0,      0}, {0xc9, 0x03, 0x8e, 0xff}}},\n    {{{    63,     80,    -66}, 0, {     0,      0}, {0xdf, 0xfc, 0x86, 0xff}}},\n    {{{   -11,     53,    -30}, 0, {     0,      0}, {0xc9, 0x02, 0x8e, 0xff}}},\n};\n\n// 0x0501FE90\nstatic const Vtx yoshi_seg5_vertex_0501FE90[] = {\n    {{{   155,     31,    -76}, 0, {     0,      0}, {0x1d, 0xe3, 0x89, 0xff}}},\n    {{{   212,      0,    -39}, 0, {     0,      0}, {0x5c, 0xb4, 0xd7, 0x00}}},\n    {{{   169,    -51,    -39}, 0, {     0,      0}, {0x34, 0xa5, 0xba, 0x00}}},\n    {{{   119,    -59,    -29}, 0, {     0,      0}, {0xe0, 0x89, 0xe4, 0xff}}},\n    {{{   169,    -51,     34}, 0, {     0,      0}, {0x3a, 0x9c, 0x33, 0xff}}},\n    {{{   119,    -59,     26}, 0, {     0,      0}, {0xe1, 0x8e, 0x2c, 0xff}}},\n    {{{   212,      0,     34}, 0, {     0,      0}, {0x54, 0xba, 0x3f, 0xff}}},\n    {{{   155,     31,     71}, 0, {     0,      0}, {0x1c, 0xe3, 0x78, 0xff}}},\n    {{{   124,    -26,    -70}, 0, {     0,      0}, {0xed, 0xc4, 0x93, 0xff}}},\n    {{{   124,    -26,     65}, 0, {     0,      0}, {0xed, 0xc6, 0x6f, 0xff}}},\n    {{{    11,    108,    -40}, 0, {     0,      0}, {0x8b, 0x31, 0x00, 0xff}}},\n    {{{   -11,     53,    -30}, 0, {     0,      0}, {0x84, 0x19, 0x00, 0xff}}},\n    {{{   -11,     53,     25}, 0, {     0,      0}, {0x87, 0x25, 0x00, 0xff}}},\n    {{{    11,    108,     33}, 0, {     0,      0}, {0xcd, 0x04, 0x73, 0xff}}},\n    {{{   -11,     53,     25}, 0, {     0,      0}, {0xcc, 0x02, 0x73, 0xff}}},\n    {{{    38,     19,     49}, 0, {     0,      0}, {0xe8, 0xfc, 0x7c, 0xff}}},\n};\n\n// 0x0501FF90\nstatic const Vtx yoshi_seg5_vertex_0501FF90[] = {\n    {{{   -11,     53,    -30}, 0, {     0,      0}, {0x84, 0x19, 0x00, 0xff}}},\n    {{{   -13,     33,    -29}, 0, {     0,      0}, {0x8f, 0x38, 0x00, 0x00}}},\n    {{{   -13,     33,     25}, 0, {     0,      0}, {0x86, 0x22, 0x00, 0x00}}},\n    {{{   -13,     33,     25}, 0, {     0,      0}, {0xd6, 0x24, 0x71, 0xff}}},\n    {{{   -35,      4,     31}, 0, {     0,      0}, {0xdb, 0x35, 0x6d, 0xff}}},\n    {{{    11,    -20,     60}, 0, {     0,      0}, {0xf9, 0x25, 0x79, 0xff}}},\n    {{{    11,    108,    -40}, 0, {     0,      0}, {0x8b, 0x31, 0x00, 0xff}}},\n    {{{   -11,     53,     25}, 0, {     0,      0}, {0x87, 0x25, 0x00, 0xff}}},\n    {{{    11,    108,     33}, 0, {     0,      0}, {0x8b, 0x31, 0x00, 0xff}}},\n    {{{    11,    108,     33}, 0, {     0,      0}, {0xcd, 0x04, 0x73, 0xff}}},\n    {{{    38,     19,     49}, 0, {     0,      0}, {0xe8, 0xfc, 0x7c, 0xff}}},\n    {{{    63,     80,     58}, 0, {     0,      0}, {0xdf, 0xfe, 0x7a, 0xff}}},\n    {{{   -13,     33,    -29}, 0, {     0,      0}, {0xd4, 0x24, 0x90, 0xff}}},\n    {{{   -11,     53,    -30}, 0, {     0,      0}, {0xc9, 0x02, 0x8e, 0xff}}},\n    {{{    38,     19,    -55}, 0, {     0,      0}, {0xe7, 0xfa, 0x84, 0xff}}},\n};\n\n// 0x05020080\nstatic const Vtx yoshi_seg5_vertex_05020080[] = {\n    {{{   -13,     33,    -29}, 0, {     0,      0}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{   -35,      4,    -37}, 0, {     0,      0}, {0x9b, 0x4b, 0x00, 0x00}}},\n    {{{   -35,      4,     31}, 0, {     0,      0}, {0x9b, 0x4b, 0x00, 0x00}}},\n    {{{    71,    -20,     33}, 0, {     0,      0}, {0x7e, 0xfc, 0x00, 0xff}}},\n    {{{    70,    -52,     32}, 0, {     0,      0}, {0x7e, 0xfc, 0x00, 0xff}}},\n    {{{    70,    -52,    -35}, 0, {     0,      0}, {0x7e, 0xfc, 0x00, 0xff}}},\n    {{{    38,     19,    -55}, 0, {     0,      0}, {0xe7, 0xfa, 0x84, 0xff}}},\n    {{{    70,    -52,    -35}, 0, {     0,      0}, {0x36, 0xf9, 0x8e, 0xff}}},\n    {{{    11,    -20,    -65}, 0, {     0,      0}, {0xf8, 0x23, 0x87, 0xff}}},\n    {{{    11,    -20,     60}, 0, {     0,      0}, {0xf9, 0x25, 0x79, 0xff}}},\n    {{{    70,    -52,     32}, 0, {     0,      0}, {0x32, 0xfc, 0x74, 0xff}}},\n    {{{    38,     19,     49}, 0, {     0,      0}, {0xe8, 0xfc, 0x7c, 0xff}}},\n    {{{    71,    -20,     33}, 0, {     0,      0}, {0x30, 0xfb, 0x75, 0xff}}},\n    {{{    71,    -20,    -36}, 0, {     0,      0}, {0x39, 0xfa, 0x8f, 0xff}}},\n    {{{    71,    -20,    -36}, 0, {     0,      0}, {0x7e, 0xfc, 0x00, 0xff}}},\n    {{{   -13,     33,     25}, 0, {     0,      0}, {0x86, 0x22, 0x00, 0xff}}},\n};\n\n// 0x05020180\nstatic const Vtx yoshi_seg5_vertex_05020180[] = {\n    {{{    63,     80,     58}, 0, {     0,      0}, {0x3b, 0x70, 0x00, 0xff}}},\n    {{{   155,     31,     71}, 0, {     0,      0}, {0x3b, 0x70, 0xff, 0x00}}},\n    {{{   212,      0,     34}, 0, {     0,      0}, {0x3b, 0x70, 0x00, 0x00}}},\n    {{{    11,    108,     33}, 0, {     0,      0}, {0x3c, 0x6f, 0x01, 0xff}}},\n    {{{    11,    108,    -40}, 0, {     0,      0}, {0x3c, 0x6f, 0x00, 0xff}}},\n    {{{    63,     80,    -66}, 0, {     0,      0}, {0x3b, 0x70, 0x00, 0xff}}},\n    {{{   155,     31,    -76}, 0, {     0,      0}, {0x3b, 0x70, 0x00, 0xff}}},\n    {{{   212,      0,    -39}, 0, {     0,      0}, {0x3c, 0x6f, 0x00, 0xff}}},\n};\n\n// 0x05020200\nstatic const Vtx yoshi_seg5_vertex_05020200[] = {\n    {{{     2,    -48,     17}, 0, {     0,      0}, {0xba, 0xa0, 0x2a, 0x00}}},\n    {{{     4,    -48,    -28}, 0, {     0,      0}, {0xda, 0x91, 0xd2, 0x00}}},\n    {{{    77,    -40,     10}, 0, {     0,      0}, {0x26, 0x90, 0x2b, 0x00}}},\n    {{{     7,     53,     -4}, 0, {     0,      0}, {0xde, 0x7a, 0x03, 0xff}}},\n    {{{    10,     38,     23}, 0, {     0,      0}, {0xe3, 0x46, 0x65, 0xff}}},\n    {{{    81,     36,     -4}, 0, {     0,      0}, {0x2f, 0x75, 0x02, 0xff}}},\n    {{{    76,    -40,    -20}, 0, {     0,      0}, {0x24, 0x99, 0xc1, 0xff}}},\n    {{{    76,     25,     19}, 0, {     0,      0}, {0x33, 0x44, 0x5d, 0xff}}},\n    {{{     3,    -26,    -42}, 0, {     0,      0}, {0xe2, 0xd8, 0x8c, 0xff}}},\n    {{{     7,     37,    -35}, 0, {     0,      0}, {0xe0, 0x45, 0x9c, 0xff}}},\n    {{{    77,    -21,    -38}, 0, {     0,      0}, {0x24, 0xf7, 0x87, 0xff}}},\n    {{{     3,    -26,     33}, 0, {     0,      0}, {0xe1, 0xd9, 0x74, 0xff}}},\n    {{{    78,    -21,     28}, 0, {     0,      0}, {0x24, 0xfb, 0x79, 0xff}}},\n    {{{   117,      6,     -5}, 0, {     0,      0}, {0x68, 0x48, 0x00, 0xff}}},\n    {{{   -16,     30,     -5}, 0, {     0,      0}, {0x99, 0x49, 0x04, 0xff}}},\n    {{{    80,     24,    -30}, 0, {     0,      0}, {0x35, 0x44, 0xa3, 0xff}}},\n};\n\n// 0x05020300\nstatic const Vtx yoshi_seg5_vertex_05020300[] = {\n    {{{   114,    -16,    -21}, 0, {     0,      0}, {0x5f, 0xbf, 0xcc, 0xff}}},\n    {{{    76,    -40,    -20}, 0, {     0,      0}, {0x24, 0x99, 0xc1, 0x00}}},\n    {{{    77,    -21,    -38}, 0, {     0,      0}, {0x24, 0xf7, 0x87, 0x00}}},\n    {{{     3,    -26,    -42}, 0, {     0,      0}, {0xe2, 0xd8, 0x8c, 0xff}}},\n    {{{     4,    -48,    -28}, 0, {     0,      0}, {0xda, 0x91, 0xd2, 0xff}}},\n    {{{   -20,    -10,    -21}, 0, {     0,      0}, {0x93, 0xe3, 0xc8, 0xff}}},\n    {{{   -21,    -10,     11}, 0, {     0,      0}, {0x98, 0xf4, 0x46, 0xff}}},\n    {{{     2,    -48,     17}, 0, {     0,      0}, {0xba, 0xa0, 0x2a, 0xff}}},\n    {{{     3,    -26,     33}, 0, {     0,      0}, {0xe1, 0xd9, 0x74, 0xff}}},\n    {{{   115,    -16,     12}, 0, {     0,      0}, {0x63, 0xd2, 0x3f, 0xff}}},\n    {{{    78,    -21,     28}, 0, {     0,      0}, {0x24, 0xfb, 0x79, 0xff}}},\n    {{{    77,    -40,     10}, 0, {     0,      0}, {0x26, 0x90, 0x2b, 0xff}}},\n    {{{    80,     24,    -30}, 0, {     0,      0}, {0x35, 0x44, 0xa3, 0xff}}},\n    {{{   117,      6,     -5}, 0, {     0,      0}, {0x68, 0x48, 0x00, 0xff}}},\n    {{{    76,     25,     19}, 0, {     0,      0}, {0x33, 0x44, 0x5d, 0xff}}},\n    {{{     7,     37,    -35}, 0, {     0,      0}, {0xe0, 0x45, 0x9c, 0xff}}},\n};\n\n// 0x05020400\nstatic const Vtx yoshi_seg5_vertex_05020400[] = {\n    {{{    10,     38,     23}, 0, {     0,      0}, {0xe3, 0x46, 0x65, 0xff}}},\n    {{{   -21,    -10,     11}, 0, {     0,      0}, {0x98, 0xf4, 0x46, 0x00}}},\n    {{{     3,    -26,     33}, 0, {     0,      0}, {0xe1, 0xd9, 0x74, 0x00}}},\n    {{{     7,     37,    -35}, 0, {     0,      0}, {0xe0, 0x45, 0x9c, 0xff}}},\n    {{{     7,     53,     -4}, 0, {     0,      0}, {0xde, 0x7a, 0x03, 0xff}}},\n    {{{    81,     36,     -4}, 0, {     0,      0}, {0x2f, 0x75, 0x02, 0xff}}},\n    {{{   115,    -16,     12}, 0, {     0,      0}, {0x63, 0xd2, 0x3f, 0xff}}},\n    {{{    77,    -40,     10}, 0, {     0,      0}, {0x26, 0x90, 0x2b, 0xff}}},\n    {{{   114,    -16,    -21}, 0, {     0,      0}, {0x5f, 0xbf, 0xcc, 0xff}}},\n    {{{    77,    -21,    -38}, 0, {     0,      0}, {0x24, 0xf7, 0x87, 0xff}}},\n    {{{    76,    -40,    -20}, 0, {     0,      0}, {0x24, 0x99, 0xc1, 0xff}}},\n    {{{     3,    -26,    -42}, 0, {     0,      0}, {0xe2, 0xd8, 0x8c, 0xff}}},\n    {{{   -20,    -10,    -21}, 0, {     0,      0}, {0x93, 0xe3, 0xc8, 0xff}}},\n    {{{     4,    -48,    -28}, 0, {     0,      0}, {0xda, 0x91, 0xd2, 0xff}}},\n    {{{     2,    -48,     17}, 0, {     0,      0}, {0xba, 0xa0, 0x2a, 0xff}}},\n    {{{    78,    -21,     28}, 0, {     0,      0}, {0x24, 0xfb, 0x79, 0xff}}},\n};\n\n// 0x05020500\nstatic const Vtx yoshi_seg5_vertex_05020500[] = {\n    {{{    81,     36,     -4}, 0, {     0,      0}, {0x2f, 0x75, 0x02, 0xff}}},\n    {{{    80,     24,    -30}, 0, {     0,      0}, {0x35, 0x44, 0xa3, 0x00}}},\n    {{{     7,     37,    -35}, 0, {     0,      0}, {0xe0, 0x45, 0x9c, 0x00}}},\n    {{{    10,     38,     23}, 0, {     0,      0}, {0xe3, 0x46, 0x65, 0xff}}},\n    {{{   -16,     30,     -5}, 0, {     0,      0}, {0x99, 0x49, 0x04, 0xff}}},\n    {{{   -21,    -10,     11}, 0, {     0,      0}, {0x98, 0xf4, 0x46, 0xff}}},\n    {{{   -20,    -10,    -21}, 0, {     0,      0}, {0x93, 0xe3, 0xc8, 0xff}}},\n    {{{    78,    -21,     28}, 0, {     0,      0}, {0x24, 0xfb, 0x79, 0xff}}},\n    {{{    76,     25,     19}, 0, {     0,      0}, {0x33, 0x44, 0x5d, 0xff}}},\n    {{{    77,    -21,    -38}, 0, {     0,      0}, {0x24, 0xf7, 0x87, 0xff}}},\n    {{{   115,    -16,     12}, 0, {     0,      0}, {0x63, 0xd2, 0x3f, 0xff}}},\n    {{{   114,    -16,    -21}, 0, {     0,      0}, {0x5f, 0xbf, 0xcc, 0xff}}},\n};\n\n// 0x050205C0\nstatic const Vtx yoshi_seg5_vertex_050205C0[] = {\n    {{{    18,    -83,     16}, 0, {     0,      0}, {0xd9, 0x96, 0x37, 0x00}}},\n    {{{    22,    -63,    -23}, 0, {     0,      0}, {0xdc, 0xa3, 0xb3, 0x00}}},\n    {{{    94,    -67,     16}, 0, {     0,      0}, {0x2c, 0x8d, 0x1b, 0x00}}},\n    {{{    27,     83,     12}, 0, {     0,      0}, {0xf9, 0x78, 0x27, 0xff}}},\n    {{{    21,     52,     37}, 0, {     0,      0}, {0xf2, 0x2c, 0x76, 0xff}}},\n    {{{   105,     35,     31}, 0, {     0,      0}, {0x1f, 0x1d, 0x77, 0xff}}},\n    {{{   -21,     60,     16}, 0, {     0,      0}, {0xa0, 0x30, 0x42, 0xff}}},\n    {{{   -24,    -13,    -23}, 0, {     0,      0}, {0x9d, 0xe9, 0xb5, 0xff}}},\n    {{{   -27,    -31,     16}, 0, {     0,      0}, {0x91, 0xce, 0x22, 0xff}}},\n    {{{   135,    -34,     16}, 0, {     0,      0}, {0x5c, 0xd1, 0x48, 0xff}}},\n    {{{   127,    -25,    -23}, 0, {     0,      0}, {0x5b, 0xd0, 0xb7, 0xff}}},\n    {{{   148,     27,     12}, 0, {     0,      0}, {0x79, 0x22, 0x0e, 0xff}}},\n    {{{    20,    -24,    -44}, 0, {     0,      0}, {0xdf, 0xe3, 0x8a, 0xff}}},\n    {{{    21,     52,    -44}, 0, {     0,      0}, {0xf7, 0x38, 0x8f, 0xff}}},\n    {{{    82,    -36,    -45}, 0, {     0,      0}, {0x18, 0xcd, 0x8f, 0xff}}},\n    {{{     8,     -9,     37}, 0, {     0,      0}, {0xea, 0xf1, 0x7b, 0xff}}},\n};\n\n// 0x050206C0\nstatic const Vtx yoshi_seg5_vertex_050206C0[] = {\n    {{{   148,     27,     12}, 0, {     0,      0}, {0x79, 0x22, 0x0e, 0xff}}},\n    {{{   111,     66,     12}, 0, {     0,      0}, {0x37, 0x71, 0x07, 0x00}}},\n    {{{   105,     35,     31}, 0, {     0,      0}, {0x1f, 0x1d, 0x77, 0x00}}},\n    {{{    21,     52,     37}, 0, {     0,      0}, {0xf2, 0x2c, 0x76, 0xff}}},\n    {{{    27,     83,     12}, 0, {     0,      0}, {0xf9, 0x78, 0x27, 0xff}}},\n    {{{   -21,     60,     16}, 0, {     0,      0}, {0xa0, 0x30, 0x42, 0xff}}},\n    {{{   -21,     60,    -23}, 0, {     0,      0}, {0xaf, 0x4e, 0xc6, 0xff}}},\n    {{{    21,     52,    -44}, 0, {     0,      0}, {0xf7, 0x38, 0x8f, 0xff}}},\n    {{{   105,     35,    -38}, 0, {     0,      0}, {0x3e, 0x2c, 0x9b, 0xff}}},\n    {{{    94,    -67,     16}, 0, {     0,      0}, {0x2c, 0x8d, 0x1b, 0xff}}},\n    {{{    82,    -36,    -45}, 0, {     0,      0}, {0x18, 0xcd, 0x8f, 0xff}}},\n    {{{   127,    -25,    -23}, 0, {     0,      0}, {0x5b, 0xd0, 0xb7, 0xff}}},\n    {{{    20,    -24,    -44}, 0, {     0,      0}, {0xdf, 0xe3, 0x8a, 0xff}}},\n    {{{    22,    -63,    -23}, 0, {     0,      0}, {0xdc, 0xa3, 0xb3, 0xff}}},\n    {{{   -24,    -13,    -23}, 0, {     0,      0}, {0x9d, 0xe9, 0xb5, 0xff}}},\n};\n\n// 0x050207B0\nstatic const Vtx yoshi_seg5_vertex_050207B0[] = {\n    {{{   -27,    -31,     16}, 0, {     0,      0}, {0x91, 0xce, 0x22, 0xff}}},\n    {{{    18,    -83,     16}, 0, {     0,      0}, {0xd9, 0x96, 0x37, 0x00}}},\n    {{{     8,     -9,     37}, 0, {     0,      0}, {0xea, 0xf1, 0x7b, 0x00}}},\n    {{{   135,    -34,     16}, 0, {     0,      0}, {0x5c, 0xd1, 0x48, 0xff}}},\n    {{{    93,    -26,     37}, 0, {     0,      0}, {0x16, 0xe6, 0x7a, 0xff}}},\n    {{{    94,    -67,     16}, 0, {     0,      0}, {0x2c, 0x8d, 0x1b, 0xff}}},\n    {{{   105,     35,    -38}, 0, {     0,      0}, {0x3e, 0x2c, 0x9b, 0xff}}},\n    {{{   148,     27,     12}, 0, {     0,      0}, {0x79, 0x22, 0x0e, 0xff}}},\n    {{{   127,    -25,    -23}, 0, {     0,      0}, {0x5b, 0xd0, 0xb7, 0xff}}},\n    {{{   105,     35,     31}, 0, {     0,      0}, {0x1f, 0x1d, 0x77, 0xff}}},\n    {{{   -24,    -13,    -23}, 0, {     0,      0}, {0x9d, 0xe9, 0xb5, 0xff}}},\n    {{{   -21,     60,    -23}, 0, {     0,      0}, {0xaf, 0x4e, 0xc6, 0xff}}},\n    {{{    21,     52,    -44}, 0, {     0,      0}, {0xf7, 0x38, 0x8f, 0xff}}},\n    {{{   -21,     60,     16}, 0, {     0,      0}, {0xa0, 0x30, 0x42, 0xff}}},\n    {{{   111,     66,     12}, 0, {     0,      0}, {0x37, 0x71, 0x07, 0xff}}},\n};\n\n// 0x050208A0\nstatic const Vtx yoshi_seg5_vertex_050208A0[] = {\n    {{{    22,    -63,    -23}, 0, {     0,      0}, {0xdc, 0xa3, 0xb3, 0xff}}},\n    {{{    20,    -24,    -44}, 0, {     0,      0}, {0xdf, 0xe3, 0x8a, 0x00}}},\n    {{{    82,    -36,    -45}, 0, {     0,      0}, {0x18, 0xcd, 0x8f, 0x00}}},\n    {{{    18,    -83,     16}, 0, {     0,      0}, {0xd9, 0x96, 0x37, 0xff}}},\n    {{{   -27,    -31,     16}, 0, {     0,      0}, {0x91, 0xce, 0x22, 0xff}}},\n    {{{     8,     -9,     37}, 0, {     0,      0}, {0xea, 0xf1, 0x7b, 0xff}}},\n    {{{    94,    -67,     16}, 0, {     0,      0}, {0x2c, 0x8d, 0x1b, 0xff}}},\n    {{{   -21,     60,    -23}, 0, {     0,      0}, {0xaf, 0x4e, 0xc6, 0xff}}},\n    {{{   -21,     60,     16}, 0, {     0,      0}, {0xa0, 0x30, 0x42, 0xff}}},\n    {{{    27,     83,     12}, 0, {     0,      0}, {0xf9, 0x78, 0x27, 0xff}}},\n    {{{    93,    -26,     37}, 0, {     0,      0}, {0x16, 0xe6, 0x7a, 0xff}}},\n    {{{   -24,    -13,    -23}, 0, {     0,      0}, {0x9d, 0xe9, 0xb5, 0xff}}},\n    {{{    21,     52,    -44}, 0, {     0,      0}, {0xf7, 0x38, 0x8f, 0xff}}},\n    {{{   111,     66,     12}, 0, {     0,      0}, {0x37, 0x71, 0x07, 0xff}}},\n    {{{    21,     52,     37}, 0, {     0,      0}, {0xf2, 0x2c, 0x76, 0xff}}},\n};\n\n// 0x05020990\nstatic const Vtx yoshi_seg5_vertex_05020990[] = {\n    {{{   105,     35,     31}, 0, {     0,      0}, {0x1f, 0x1d, 0x77, 0xff}}},\n    {{{    93,    -26,     37}, 0, {     0,      0}, {0x16, 0xe6, 0x7a, 0x00}}},\n    {{{   135,    -34,     16}, 0, {     0,      0}, {0x5c, 0xd1, 0x48, 0x00}}},\n    {{{   127,    -25,    -23}, 0, {     0,      0}, {0x5b, 0xd0, 0xb7, 0xff}}},\n    {{{    82,    -36,    -45}, 0, {     0,      0}, {0x18, 0xcd, 0x8f, 0xff}}},\n    {{{   105,     35,    -38}, 0, {     0,      0}, {0x3e, 0x2c, 0x9b, 0xff}}},\n    {{{     8,     -9,     37}, 0, {     0,      0}, {0xea, 0xf1, 0x7b, 0xff}}},\n    {{{    21,     52,    -44}, 0, {     0,      0}, {0xf7, 0x38, 0x8f, 0xff}}},\n    {{{   -21,     60,     16}, 0, {     0,      0}, {0xa0, 0x30, 0x42, 0xff}}},\n    {{{   -21,     60,    -23}, 0, {     0,      0}, {0xaf, 0x4e, 0xc6, 0xff}}},\n    {{{   -24,    -13,    -23}, 0, {     0,      0}, {0x9d, 0xe9, 0xb5, 0xff}}},\n    {{{   111,     66,     12}, 0, {     0,      0}, {0x37, 0x71, 0x07, 0xff}}},\n    {{{    27,     83,     12}, 0, {     0,      0}, {0xf9, 0x78, 0x27, 0xff}}},\n    {{{    94,    -67,     16}, 0, {     0,      0}, {0x2c, 0x8d, 0x1b, 0xff}}},\n    {{{    22,    -63,    -23}, 0, {     0,      0}, {0xdc, 0xa3, 0xb3, 0xff}}},\n};\n\n// 0x05020A80\nstatic const Vtx yoshi_seg5_vertex_05020A80[] = {\n    {{{   255,     29,     39}, 0, {     0,      0}, {0x6c, 0x29, 0x33, 0x00}}},\n    {{{   223,    -25,     39}, 0, {     0,      0}, {0x3a, 0xc1, 0x5d, 0x00}}},\n    {{{   223,    -25,    -39}, 0, {     0,      0}, {0x46, 0xbe, 0xaf, 0x00}}},\n    {{{   -75,     32,   -102}, 0, {     0,      0}, {0xb1, 0xab, 0xce, 0xff}}},\n    {{{    37,    -69,    -49}, 0, {     0,      0}, {0x07, 0x86, 0xde, 0xff}}},\n    {{{    37,    -69,     49}, 0, {     0,      0}, {0xe3, 0x8a, 0x22, 0xff}}},\n    {{{   169,     50,     65}, 0, {     0,      0}, {0x2a, 0x20, 0x73, 0xff}}},\n    {{{    43,     66,    101}, 0, {     0,      0}, {0x0a, 0x38, 0x71, 0xff}}},\n    {{{   149,     11,     70}, 0, {     0,      0}, {0x23, 0xd1, 0x70, 0xff}}},\n    {{{    43,     66,   -101}, 0, {     0,      0}, {0x0a, 0x37, 0x8f, 0xff}}},\n    {{{   169,     50,    -65}, 0, {     0,      0}, {0x29, 0x1d, 0x8c, 0xff}}},\n    {{{   147,      7,    -67}, 0, {     0,      0}, {0x21, 0xd1, 0x90, 0xff}}},\n    {{{    68,    -51,    -49}, 0, {     0,      0}, {0x31, 0x95, 0xd2, 0xff}}},\n    {{{    25,    -36,    -90}, 0, {     0,      0}, {0x10, 0xbc, 0x97, 0xff}}},\n    {{{    25,    -36,     90}, 0, {     0,      0}, {0x0f, 0xbc, 0x69, 0xff}}},\n    {{{    68,    -51,     49}, 0, {     0,      0}, {0x35, 0x96, 0x2c, 0xff}}},\n};\n\n// 0x05020B80\nstatic const Vtx yoshi_seg5_vertex_05020B80[] = {\n    {{{   126,    -32,     41}, 0, {     0,      0}, {0x1d, 0x9a, 0x44, 0xff}}},\n    {{{   223,    -25,     39}, 0, {     0,      0}, {0x3a, 0xc1, 0x5d, 0x00}}},\n    {{{   149,     11,     70}, 0, {     0,      0}, {0x23, 0xd1, 0x70, 0x00}}},\n    {{{   147,      7,    -67}, 0, {     0,      0}, {0x21, 0xd1, 0x90, 0xff}}},\n    {{{   223,    -25,    -39}, 0, {     0,      0}, {0x46, 0xbe, 0xaf, 0xff}}},\n    {{{   128,    -30,    -44}, 0, {     0,      0}, {0x19, 0xa8, 0xa9, 0xff}}},\n    {{{    25,    -36,     90}, 0, {     0,      0}, {0x0f, 0xbc, 0x69, 0xff}}},\n    {{{    68,    -51,     49}, 0, {     0,      0}, {0x35, 0x96, 0x2c, 0xff}}},\n    {{{    68,    -51,    -49}, 0, {     0,      0}, {0x31, 0x95, 0xd2, 0xff}}},\n    {{{    25,    -36,    -90}, 0, {     0,      0}, {0x10, 0xbc, 0x97, 0xff}}},\n    {{{    37,    -69,    -49}, 0, {     0,      0}, {0x07, 0x86, 0xde, 0xff}}},\n    {{{   -75,     32,   -102}, 0, {     0,      0}, {0xb1, 0xab, 0xce, 0xff}}},\n    {{{    43,     66,    101}, 0, {     0,      0}, {0x0a, 0x38, 0x71, 0xff}}},\n    {{{   -75,     32,    102}, 0, {     0,      0}, {0xb5, 0xbe, 0x4d, 0xff}}},\n    {{{   255,     29,     39}, 0, {     0,      0}, {0x6c, 0x29, 0x33, 0xff}}},\n    {{{   169,     50,     65}, 0, {     0,      0}, {0x2a, 0x20, 0x73, 0xff}}},\n};\n\n// 0x05020C80\nstatic const Vtx yoshi_seg5_vertex_05020C80[] = {\n    {{{   169,     50,    -65}, 0, {     0,      0}, {0x29, 0x1d, 0x8c, 0xff}}},\n    {{{   255,     29,    -39}, 0, {     0,      0}, {0x5d, 0x2b, 0xb6, 0x00}}},\n    {{{   223,    -25,    -39}, 0, {     0,      0}, {0x46, 0xbe, 0xaf, 0x00}}},\n    {{{   -75,     32,    102}, 0, {     0,      0}, {0xb5, 0xbe, 0x4d, 0xff}}},\n    {{{    37,    -69,     49}, 0, {     0,      0}, {0xe3, 0x8a, 0x22, 0xff}}},\n    {{{    25,    -36,     90}, 0, {     0,      0}, {0x0f, 0xbc, 0x69, 0xff}}},\n    {{{   -75,     32,   -102}, 0, {     0,      0}, {0xb1, 0xab, 0xce, 0xff}}},\n    {{{    43,     66,   -101}, 0, {     0,      0}, {0x0a, 0x37, 0x8f, 0xff}}},\n    {{{    25,    -36,    -90}, 0, {     0,      0}, {0x10, 0xbc, 0x97, 0xff}}},\n    {{{   126,    -32,     41}, 0, {     0,      0}, {0x1d, 0x9a, 0x44, 0xff}}},\n    {{{    68,    -51,     49}, 0, {     0,      0}, {0x35, 0x96, 0x2c, 0xff}}},\n    {{{    68,    -51,    -49}, 0, {     0,      0}, {0x31, 0x95, 0xd2, 0xff}}},\n    {{{   128,    -30,    -44}, 0, {     0,      0}, {0x19, 0xa8, 0xa9, 0xff}}},\n    {{{   147,      7,    -67}, 0, {     0,      0}, {0x21, 0xd1, 0x90, 0xff}}},\n};\n\n// 0x05020D60\nstatic const Vtx yoshi_seg5_vertex_05020D60[] = {\n    {{{   169,     50,     65}, 0, {     0,      0}, {0x2a, 0x20, 0x73, 0xff}}},\n    {{{   149,     11,     70}, 0, {     0,      0}, {0x23, 0xd1, 0x70, 0x00}}},\n    {{{   223,    -25,     39}, 0, {     0,      0}, {0x3a, 0xc1, 0x5d, 0x00}}},\n    {{{    68,    -51,     49}, 0, {     0,      0}, {0x35, 0x96, 0x2c, 0xff}}},\n    {{{    37,    -69,     49}, 0, {     0,      0}, {0xe3, 0x8a, 0x22, 0xff}}},\n    {{{    37,    -69,    -49}, 0, {     0,      0}, {0x07, 0x86, 0xde, 0xff}}},\n    {{{   147,      7,    -67}, 0, {     0,      0}, {0x21, 0xd1, 0x90, 0xff}}},\n    {{{   128,    -30,    -44}, 0, {     0,      0}, {0x19, 0xa8, 0xa9, 0xff}}},\n    {{{    68,    -51,    -49}, 0, {     0,      0}, {0x31, 0x95, 0xd2, 0xff}}},\n    {{{   126,    -32,     41}, 0, {     0,      0}, {0x1d, 0x9a, 0x44, 0xff}}},\n    {{{    25,    -36,    -90}, 0, {     0,      0}, {0x10, 0xbc, 0x97, 0xff}}},\n    {{{    43,     66,   -101}, 0, {     0,      0}, {0x0a, 0x37, 0x8f, 0xff}}},\n    {{{    43,     66,    101}, 0, {     0,      0}, {0x0a, 0x38, 0x71, 0xff}}},\n    {{{    25,    -36,     90}, 0, {     0,      0}, {0x0f, 0xbc, 0x69, 0xff}}},\n    {{{   -75,     32,    102}, 0, {     0,      0}, {0xb5, 0xbe, 0x4d, 0xff}}},\n    {{{   -75,     32,   -102}, 0, {     0,      0}, {0xb1, 0xab, 0xce, 0xff}}},\n};\n\n// 0x05020E60\nstatic const Vtx yoshi_seg5_vertex_05020E60[] = {\n    {{{   223,    -25,    -39}, 0, {     0,      0}, {0x46, 0xbe, 0xaf, 0xff}}},\n    {{{   255,     29,    -39}, 0, {     0,      0}, {0x5d, 0x2b, 0xb6, 0x00}}},\n    {{{   255,     29,     39}, 0, {     0,      0}, {0x6c, 0x29, 0x33, 0x00}}},\n};\n\n// 0x05020E90\nstatic const Vtx yoshi_seg5_vertex_05020E90[] = {\n    {{{  -107,     51,    -49}, 0, {     0,      0}, {0xc0, 0x93, 0x00, 0x00}}},\n    {{{   -75,     32,   -102}, 0, {     0,      0}, {0xb1, 0xab, 0xce, 0x00}}},\n    {{{  -107,     51,     49}, 0, {     0,      0}, {0xc0, 0x93, 0x00, 0x00}}},\n    {{{    43,     66,    101}, 0, {     0,      0}, {0x0a, 0x38, 0x71, 0xff}}},\n    {{{    15,    113,     49}, 0, {     0,      0}, {0xea, 0x77, 0x25, 0xff}}},\n    {{{  -107,     51,     49}, 0, {     0,      0}, {0xd4, 0x6a, 0x34, 0xff}}},\n    {{{  -107,     51,    -49}, 0, {     0,      0}, {0xd0, 0x6e, 0xd9, 0xff}}},\n    {{{    15,    113,    -49}, 0, {     0,      0}, {0xfc, 0x79, 0xdb, 0xff}}},\n    {{{    43,     66,   -101}, 0, {     0,      0}, {0x0a, 0x37, 0x8f, 0xff}}},\n    {{{   -75,     32,    102}, 0, {     0,      0}, {0xb5, 0xbe, 0x4d, 0xff}}},\n    {{{   169,     50,     65}, 0, {     0,      0}, {0x2a, 0x20, 0x73, 0xff}}},\n    {{{   255,     29,     39}, 0, {     0,      0}, {0x6c, 0x29, 0x33, 0xff}}},\n    {{{   154,     87,     32}, 0, {     0,      0}, {0x27, 0x71, 0x2a, 0xff}}},\n    {{{   255,     29,    -39}, 0, {     0,      0}, {0x5d, 0x2b, 0xb6, 0xff}}},\n    {{{   154,     87,    -32}, 0, {     0,      0}, {0x2e, 0x6e, 0xd6, 0xff}}},\n    {{{   169,     50,    -65}, 0, {     0,      0}, {0x29, 0x1d, 0x8c, 0xff}}},\n};\n\n// 0x05020F90\nstatic const Vtx yoshi_seg5_vertex_05020F90[] = {\n    {{{   128,    -30,    -44}, 0, {     0,      0}, {0x82, 0xfb, 0xfe, 0x00}}},\n    {{{   131,   -114,     -1}, 0, {     0,      0}, {0x82, 0xfb, 0xfe, 0x00}}},\n    {{{   126,    -32,     41}, 0, {     0,      0}, {0x82, 0xfb, 0xfe, 0x00}}},\n    {{{   223,    -25,     39}, 0, {     0,      0}, {0x3a, 0xc1, 0x5d, 0xff}}},\n    {{{   126,    -32,     41}, 0, {     0,      0}, {0x1d, 0x9a, 0x44, 0xff}}},\n    {{{   131,   -114,     -1}, 0, {     0,      0}, {0x38, 0x8e, 0x00, 0xff}}},\n    {{{   223,    -25,    -39}, 0, {     0,      0}, {0x46, 0xbe, 0xaf, 0xff}}},\n    {{{   128,    -30,    -44}, 0, {     0,      0}, {0x19, 0xa8, 0xa9, 0xff}}},\n};\n\n// 0x05021010\nstatic const Vtx yoshi_seg5_vertex_05021010[] = {\n    {{{   197,     17,    -49}, 0, {     0,      0}, {0x62, 0x29, 0xbd, 0x00}}},\n    {{{   197,     17,     49}, 0, {     0,      0}, {0x6b, 0x0a, 0x43, 0x00}}},\n    {{{   166,    -61,    -58}, 0, {     0,      0}, {0x62, 0xc5, 0xca, 0x00}}},\n    {{{  -138,    -27,     82}, 0, {     0,      0}, {0x97, 0xee, 0x44, 0xff}}},\n    {{{   -84,   -138,    -55}, 0, {     0,      0}, {0xb8, 0xa9, 0xc8, 0xff}}},\n    {{{   -84,   -138,     55}, 0, {     0,      0}, {0xcf, 0x9a, 0x37, 0xff}}},\n    {{{    70,     74,    117}, 0, {     0,      0}, {0x15, 0x2a, 0x75, 0xff}}},\n    {{{   -52,     39,    117}, 0, {     0,      0}, {0xe7, 0x0c, 0x7b, 0xff}}},\n    {{{    69,    -35,     99}, 0, {     0,      0}, {0x1b, 0xe1, 0x77, 0xff}}},\n    {{{   -52,     39,   -117}, 0, {     0,      0}, {0xe7, 0x0b, 0x85, 0xff}}},\n    {{{    70,     73,   -117}, 0, {     0,      0}, {0x15, 0x2a, 0x8b, 0xff}}},\n    {{{    69,    -35,    -99}, 0, {     0,      0}, {0x1b, 0xe1, 0x89, 0xff}}},\n    {{{   -33,    -59,    -99}, 0, {     0,      0}, {0xfc, 0xd1, 0x8b, 0xff}}},\n    {{{  -138,    -27,    -82}, 0, {     0,      0}, {0x96, 0xf3, 0xbc, 0xff}}},\n    {{{   -33,    -59,     99}, 0, {     0,      0}, {0xfc, 0xd1, 0x75, 0xff}}},\n    {{{   166,    -61,     58}, 0, {     0,      0}, {0x5b, 0xbb, 0x36, 0xff}}},\n};\n\n// 0x05021110\nstatic const Vtx yoshi_seg5_vertex_05021110[] = {\n    {{{   -33,    -59,     99}, 0, {     0,      0}, {0xfc, 0xd1, 0x75, 0x00}}},\n    {{{   -10,   -155,     43}, 0, {     0,      0}, {0x0a, 0x8d, 0x33, 0x00}}},\n    {{{    99,   -129,     43}, 0, {     0,      0}, {0x2a, 0xa5, 0x4d, 0x00}}},\n    {{{    99,   -129,    -43}, 0, {     0,      0}, {0x32, 0x9a, 0xc9, 0xff}}},\n    {{{   -10,   -154,    -43}, 0, {     0,      0}, {0xfe, 0x8c, 0xcd, 0xff}}},\n    {{{   -33,    -59,    -99}, 0, {     0,      0}, {0xfc, 0xd1, 0x8b, 0xff}}},\n    {{{   -84,   -138,     55}, 0, {     0,      0}, {0xcf, 0x9a, 0x37, 0xff}}},\n    {{{   -84,   -138,    -55}, 0, {     0,      0}, {0xb8, 0xa9, 0xc8, 0xff}}},\n    {{{   166,    -61,    -58}, 0, {     0,      0}, {0x62, 0xc5, 0xca, 0xff}}},\n    {{{   166,    -61,     58}, 0, {     0,      0}, {0x5b, 0xbb, 0x36, 0xff}}},\n    {{{    69,    -35,     99}, 0, {     0,      0}, {0x1b, 0xe1, 0x77, 0xff}}},\n    {{{    69,    -35,    -99}, 0, {     0,      0}, {0x1b, 0xe1, 0x89, 0xff}}},\n};\n\n// 0x050211D0\nstatic const Vtx yoshi_seg5_vertex_050211D0[] = {\n    {{{   -52,     39,   -117}, 0, {     0,      0}, {0xe7, 0x0b, 0x85, 0x00}}},\n    {{{  -138,    -27,    -82}, 0, {     0,      0}, {0x96, 0xf3, 0xbc, 0x00}}},\n    {{{   -65,     92,    -76}, 0, {     0,      0}, {0xc3, 0x5a, 0xc0, 0x00}}},\n    {{{  -138,    -27,     82}, 0, {     0,      0}, {0x97, 0xee, 0x44, 0xff}}},\n    {{{   -52,     39,    117}, 0, {     0,      0}, {0xe7, 0x0c, 0x7b, 0xff}}},\n    {{{   -65,     92,     76}, 0, {     0,      0}, {0xc1, 0x62, 0x30, 0xff}}},\n    {{{    71,    120,     76}, 0, {     0,      0}, {0x2d, 0x6f, 0x28, 0xff}}},\n    {{{   197,     17,     49}, 0, {     0,      0}, {0x6b, 0x0a, 0x43, 0xff}}},\n    {{{   197,     17,    -49}, 0, {     0,      0}, {0x62, 0x29, 0xbd, 0xff}}},\n    {{{    70,     74,    117}, 0, {     0,      0}, {0x15, 0x2a, 0x75, 0xff}}},\n    {{{  -146,      6,     33}, 0, {     0,      0}, {0x85, 0x19, 0x10, 0xff}}},\n    {{{    71,    120,    -76}, 0, {     0,      0}, {0x14, 0x76, 0xd8, 0xff}}},\n    {{{  -146,      6,    -33}, 0, {     0,      0}, {0x90, 0x39, 0xf0, 0xff}}},\n    {{{    70,     73,   -117}, 0, {     0,      0}, {0x15, 0x2a, 0x8b, 0xff}}},\n};\n\n// 0x050212B0 - 0x05021490\nconst Gfx yoshi_seg5_dl_050212B0[] = {\n    gsSPLight(&yoshi_seg5_lights_0501D9C0.l, 1),\n    gsSPLight(&yoshi_seg5_lights_0501D9C0.a, 2),\n    gsSPVertex(yoshi_seg5_vertex_0501DA50, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_0501DB40, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_0501DC30, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle( 2, 12, 13, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_0501DD10, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 8, 12,  0, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_0501DE10, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  4,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(11, 12,  9, 0x0, 13,  0, 14, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_0501DF00, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  9,  5, 0x0),\n    gsSP2Triangles(10,  3,  2, 0x0,  1, 11,  2, 0x0),\n    gsSP2Triangles(12, 10, 11, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle( 9,  8, 13, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_0501DFF0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 10, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_0501E0D0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  8, 10, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_0501E1B0, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05021490 - 0x050215D8\nconst Gfx yoshi_seg5_dl_05021490[] = {\n    gsSPLight(&yoshi_seg5_lights_0501D9D8.l, 1),\n    gsSPLight(&yoshi_seg5_lights_0501D9D8.a, 2),\n    gsSPVertex(yoshi_seg5_vertex_0501E1E0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle( 6, 12, 13, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_0501E2C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  3,  2, 11, 0x0),\n    gsSP2Triangles( 3, 11,  9, 0x0, 12, 13, 14, 0x0),\n    gsSP2Triangles(12, 14, 11, 0x0,  2,  1, 15, 0x0),\n    gsSP1Triangle( 2, 15, 12, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_0501E3C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  0, 0x0),\n    gsSP2Triangles( 7,  8,  6, 0x0,  9,  8,  7, 0x0),\n    gsSP2Triangles( 5, 10,  7, 0x0, 11,  7, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0,  7,  6,  5, 0x0),\n    gsSP1Triangle( 0,  3,  4, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_0501E4B0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  5,  3,  0, 0x0),\n    gsSP1Triangle( 7,  6,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050215D8 - 0x05021678\nconst Gfx yoshi_seg5_dl_050215D8[] = {\n    gsSPLight(&yoshi_seg5_lights_0501D9D8.l, 1),\n    gsSPLight(&yoshi_seg5_lights_0501D9D8.a, 2),\n    gsSPVertex(yoshi_seg5_vertex_0501E530, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  2,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  2,  9,  0, 0x0),\n    gsSP2Triangles( 9,  7,  4, 0x0,  2,  5,  6, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  7,  8,  4, 0x0),\n    gsSP2Triangles( 4,  8,  5, 0x0,  2,  1,  5, 0x0),\n    gsSP2Triangles( 4,  3,  9, 0x0,  9,  3,  0, 0x0),\n    gsSP2Triangles( 7,  9,  2, 0x0,  1,  3,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05021678 - 0x05021718\nconst Gfx yoshi_seg5_dl_05021678[] = {\n    gsSPLight(&yoshi_seg5_lights_0501D9D8.l, 1),\n    gsSPLight(&yoshi_seg5_lights_0501D9D8.a, 2),\n    gsSPVertex(yoshi_seg5_vertex_0501E5D0, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  6,  7, 0x0,  4,  8,  1, 0x0),\n    gsSP2Triangles( 2,  9, 10, 0x0,  4,  0,  7, 0x0),\n    gsSP2Triangles( 1,  8,  2, 0x0,  2,  8,  3, 0x0),\n    gsSP2Triangles( 3,  8,  4, 0x0,  5,  6,  9, 0x0),\n    gsSP2Triangles( 9,  6, 10, 0x0, 10,  6,  0, 0x0),\n    gsSP2Triangles( 4,  1,  0, 0x0,  2,  3,  9, 0x0),\n    gsSP2Triangles( 5,  9,  3, 0x0,  2, 10,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05021718 - 0x05021860\nconst Gfx yoshi_seg5_dl_05021718[] = {\n    gsSPLight(&yoshi_seg5_lights_0501D9D8.l, 1),\n    gsSPLight(&yoshi_seg5_lights_0501D9D8.a, 2),\n    gsSPVertex(yoshi_seg5_vertex_0501E680, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13,  5, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_0501E760, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11,  1, 0x0),\n    gsSP2Triangles( 9,  1,  0, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0, 14, 15,  2, 0x0),\n    gsSP1Triangle(14,  2,  1, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_0501E860, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  3,  5,  6, 0x0),\n    gsSP2Triangles( 4,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8, 10,  5, 0x0, 10,  8, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0,  5,  4,  8, 0x0),\n    gsSP1Triangle( 6,  0,  3, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_0501E950, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  2,  5,  6, 0x0),\n    gsSP1Triangle( 6,  5,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05021860 - 0x05021900\nconst Gfx yoshi_seg5_dl_05021860[] = {\n    gsSPLight(&yoshi_seg5_lights_0501D9D8.l, 1),\n    gsSPLight(&yoshi_seg5_lights_0501D9D8.a, 2),\n    gsSPVertex(yoshi_seg5_vertex_0501E9D0, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  5,  1, 0x0,  6,  7,  0, 0x0),\n    gsSP2Triangles( 7,  8,  4, 0x0,  2,  9,  0, 0x0),\n    gsSP2Triangles( 5,  6,  9, 0x0,  7,  4,  0, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  5,  8,  6, 0x0),\n    gsSP2Triangles( 4,  8,  5, 0x0,  4,  1,  0, 0x0),\n    gsSP2Triangles( 9,  3,  5, 0x0,  2,  3,  9, 0x0),\n    gsSP2Triangles( 0,  9,  6, 0x0,  5,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05021900 - 0x050219A0\nconst Gfx yoshi_seg5_dl_05021900[] = {\n    gsSPLight(&yoshi_seg5_lights_0501D9D8.l, 1),\n    gsSPLight(&yoshi_seg5_lights_0501D9D8.a, 2),\n    gsSPVertex(yoshi_seg5_vertex_0501EA70, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  2, 0x0,  1,  8,  4, 0x0),\n    gsSP2Triangles( 9, 10,  0, 0x0,  6,  2,  4, 0x0),\n    gsSP2Triangles( 0,  8,  1, 0x0,  5,  8,  0, 0x0),\n    gsSP2Triangles( 4,  8,  5, 0x0, 10,  7,  3, 0x0),\n    gsSP2Triangles( 9,  7, 10, 0x0,  2,  7,  9, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0, 10,  5,  0, 0x0),\n    gsSP2Triangles( 5, 10,  3, 0x0,  2,  9,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050219A0 - 0x05021B90\nconst Gfx yoshi_seg5_dl_050219A0[] = {\n    gsSPLight(&yoshi_seg5_lights_0501D9F0.l, 1),\n    gsSPLight(&yoshi_seg5_lights_0501D9F0.a, 2),\n    gsSPVertex(yoshi_seg5_vertex_0501EB20, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(10, 14,  8, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_0501EC10, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  4,  9,  5, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  8, 13, 14, 0x0),\n    gsSP1Triangle(15, 10, 12, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_0501ED10, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  0,  2,  9, 0x0),\n    gsSP2Triangles(10,  3,  5, 0x0, 11, 10,  5, 0x0),\n    gsSP2Triangles( 5, 12, 11, 0x0, 13, 14,  6, 0x0),\n    gsSP1Triangle(14, 15,  6, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_0501EE10, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  4, 0x0,  2,  8,  0, 0x0),\n    gsSP2Triangles( 4,  0,  5, 0x0,  4,  9,  6, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_0501EF10, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 2,  7,  0, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(10,  3,  5, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_0501F000, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0,  7, 13,  8, 0x0),\n    gsSP2Triangles( 5, 14,  3, 0x0,  2, 15,  0, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_0501F100, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  0,  4,  5, 0x0),\n    gsSP2Triangles( 0,  5,  6, 0x0,  0,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05021B90 - 0x05021CD8\nconst Gfx yoshi_seg5_dl_05021B90[] = {\n    gsSPLight(&yoshi_seg5_lights_0501D9D8.l, 1),\n    gsSPLight(&yoshi_seg5_lights_0501D9D8.a, 2),\n    gsSPVertex(yoshi_seg5_vertex_0501F180, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  3,  7,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12,  4, 0x0),\n    gsSP2Triangles( 7,  3, 13, 0x0, 14,  5,  4, 0x0),\n    gsSP2Triangles( 9,  5, 14, 0x0, 13,  3, 15, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_0501F280, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 2, 12, 13, 0x0, 14, 12, 11, 0x0),\n    gsSP1Triangle(15,  3,  5, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_0501F380, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0,  7, 12,  0, 0x0),\n    gsSP2Triangles( 0, 15,  7, 0x0, 14,  1, 12, 0x0),\n    gsSP2Triangles( 9, 13, 10, 0x0,  6, 10,  7, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_0501F480, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  4,  6, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 9,  1,  0, 0x0, 10,  8,  7, 0x0),\n    gsSP1Triangle( 1,  9, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05021CD8 - 0x05021E38\nconst Gfx yoshi_seg5_dl_05021CD8[] = {\n    gsSPLight(&yoshi_seg5_lights_0501D9D8.l, 1),\n    gsSPLight(&yoshi_seg5_lights_0501D9D8.a, 2),\n    gsSPVertex(yoshi_seg5_vertex_0501F540, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0,  3, 15,  4, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_0501F640, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  4,  7, 0x0,  2,  1,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_0501F730, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  7,  5, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  0,  2, 13, 0x0),\n    gsSP2Triangles( 8, 14, 10, 0x0,  6,  3,  5, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_0501F820, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 6, 10,  5, 0x0,  2, 11,  3, 0x0),\n    gsSP2Triangles(12,  7, 13, 0x0,  8, 14,  6, 0x0),\n    gsSP1Triangle(11,  1, 13, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_0501F910, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 2,  1,  6, 0x0,  4,  3,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12,  2, 0x0),\n    gsSP1Triangle(13, 14,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05021E38 - 0x05021F70\nconst Gfx yoshi_seg5_dl_05021E38[] = {\n    gsSPLight(&yoshi_seg5_lights_0501D9D8.l, 1),\n    gsSPLight(&yoshi_seg5_lights_0501D9D8.a, 2),\n    gsSPVertex(yoshi_seg5_vertex_0501FA00, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 4,  5,  3, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 2,  9,  3, 0x0,  8, 10,  2, 0x0),\n    gsSP2Triangles( 8,  2, 11, 0x0,  3, 12,  4, 0x0),\n    gsSP2Triangles( 2, 10,  9, 0x0,  7, 13, 10, 0x0),\n    gsSP2Triangles( 5, 14,  0, 0x0,  0, 14,  1, 0x0),\n    gsSP2Triangles( 1, 14, 11, 0x0, 11, 14,  6, 0x0),\n    gsSP2Triangles(10,  8,  7, 0x0,  3,  9, 12, 0x0),\n    gsSP2Triangles( 2,  1, 11, 0x0,  8, 11,  6, 0x0),\n    gsSP1Triangle( 5,  0,  3, 0x0),\n    gsSPLight(&yoshi_seg5_lights_0501D9C0.l, 1),\n    gsSPLight(&yoshi_seg5_lights_0501D9C0.a, 2),\n    gsSPVertex(yoshi_seg5_vertex_0501FAF0, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  7,  6,  8, 0x0),\n    gsSP2Triangles( 1,  9,  2, 0x0,  3,  4,  8, 0x0),\n    gsSP2Triangles( 2,  4,  0, 0x0,  8,  6, 10, 0x0),\n    gsSP2Triangles( 9,  5,  7, 0x0,  8, 10,  3, 0x0),\n    gsSP2Triangles( 7,  2,  9, 0x0,  7,  4,  2, 0x0),\n    gsSP1Triangle( 7,  8,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05021F70 - 0x05022160\nconst Gfx yoshi_seg5_dl_05021F70[] = {\n    gsSPLight(&yoshi_seg5_lights_0501D9F0.l, 1),\n    gsSPLight(&yoshi_seg5_lights_0501D9F0.a, 2),\n    gsSPVertex(yoshi_seg5_vertex_0501FBA0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(10, 14,  8, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_0501FC90, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  3,  9,  4, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14,  6, 0x0),\n    gsSP1Triangle(10, 12, 15, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_0501FD90, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  0,  2, 0x0),\n    gsSP2Triangles( 3,  5, 10, 0x0,  3, 10, 11, 0x0),\n    gsSP2Triangles(11, 12,  3, 0x0,  8, 13, 14, 0x0),\n    gsSP1Triangle( 8, 15, 13, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_0501FE90, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  2,  8,  0, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  7,  9,  4, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_0501FF90, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 2,  7,  0, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle( 3,  5, 10, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_05020080, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(10, 12, 11, 0x0,  6, 13,  7, 0x0),\n    gsSP2Triangles( 5, 14,  3, 0x0,  2, 15,  0, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_05020180, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  3,  2, 0x0,  5,  4,  2, 0x0),\n    gsSP2Triangles( 6,  5,  2, 0x0,  7,  6,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05022160 - 0x050222A8\nconst Gfx yoshi_seg5_dl_05022160[] = {\n    gsSPLight(&yoshi_seg5_lights_0501D9D8.l, 1),\n    gsSPLight(&yoshi_seg5_lights_0501D9D8.a, 2),\n    gsSPVertex(yoshi_seg5_vertex_05020200, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 1,  6,  2, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  4, 11, 12, 0x0),\n    gsSP2Triangles(13,  5,  7, 0x0,  4,  3, 14, 0x0),\n    gsSP2Triangles(14,  3,  9, 0x0, 15,  5, 13, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_05020300, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13,  0, 0x0,  9, 13, 14, 0x0),\n    gsSP1Triangle( 3,  5, 15, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_05020400, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0,  2, 14,  7, 0x0),\n    gsSP2Triangles( 7, 15,  2, 0x0, 14,  1, 12, 0x0),\n    gsSP2Triangles(10, 13, 11, 0x0,  7, 10,  8, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_05020500, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  4,  2, 0x0,  7,  8,  3, 0x0),\n    gsSP2Triangles( 2,  1,  9, 0x0,  8,  7, 10, 0x0),\n    gsSP1Triangle(11,  9,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x050222A8 - 0x05022408\nconst Gfx yoshi_seg5_dl_050222A8[] = {\n    gsSPLight(&yoshi_seg5_lights_0501D9D8.l, 1),\n    gsSPLight(&yoshi_seg5_lights_0501D9D8.a, 2),\n    gsSPVertex(yoshi_seg5_vertex_050205C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0,  4, 15,  5, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_050206C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  4,  7, 0x0,  8,  1,  0, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_050207B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  3,  7,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13,  0,  2, 0x0),\n    gsSP2Triangles(12, 14,  6, 0x0,  3,  5,  8, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_050208A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 5,  3,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 6, 10,  5, 0x0,  4, 11,  0, 0x0),\n    gsSP2Triangles(12,  9, 13, 0x0,  5, 14,  8, 0x0),\n    gsSP1Triangle(12,  1, 11, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_05020990, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  1,  0, 0x0,  7,  5,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  0, 11, 12, 0x0),\n    gsSP1Triangle( 4, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05022408 - 0x05022608\nconst Gfx yoshi_seg5_dl_05022408[] = {\n    gsSPLight(&yoshi_seg5_lights_0501D9D8.l, 1),\n    gsSPLight(&yoshi_seg5_lights_0501D9D8.a, 2),\n    gsSPVertex(yoshi_seg5_vertex_05020A80, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12,  4, 13, 0x0, 14,  5, 15, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_05020B80, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  2, 0x0,  3,  8,  9, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  7, 10,  8, 0x0),\n    gsSP2Triangles(12, 13,  6, 0x0,  1, 14, 15, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_05020C80, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(11, 12,  9, 0x0,  2, 13,  0, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_05020D60, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  3,  9,  1, 0x0),\n    gsSP2Triangles( 6, 10, 11, 0x0, 12, 13,  1, 0x0),\n    gsSP1Triangle( 4, 14, 15, 0x0),\n    gsSPVertex(yoshi_seg5_vertex_05020E60, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPLight(&yoshi_seg5_lights_0501D9C0.l, 1),\n    gsSPLight(&yoshi_seg5_lights_0501D9C0.a, 2),\n    gsSPVertex(yoshi_seg5_vertex_05020E90, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  5,  9,  3, 0x0),\n    gsSP2Triangles( 7,  6,  4, 0x0,  1,  9,  2, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  8,  1,  6, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  6,  5,  4, 0x0),\n    gsSP2Triangles(12, 11, 14, 0x0, 13, 15, 14, 0x0),\n    gsSP2Triangles(14, 15,  8, 0x0,  3, 10, 12, 0x0),\n    gsSP2Triangles(12,  4,  3, 0x0, 12, 14,  7, 0x0),\n    gsSP2Triangles( 8,  7, 14, 0x0,  7,  4, 12, 0x0),\n    gsSPLight(&yoshi_seg5_lights_0501D9F0.l, 1),\n    gsSPLight(&yoshi_seg5_lights_0501D9F0.a, 2),\n    gsSPVertex(yoshi_seg5_vertex_05020F90, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  6,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x05022608 - 0x050227D8\nconst Gfx yoshi_seg5_dl_05022608[] = {\n    gsSPLight(&yoshi_seg5_lights_0501D9D8.l, 1),\n    gsSPLight(&yoshi_seg5_lights_0501D9D8.a, 2),\n    gsSPVertex(yoshi_seg5_vertex_05021010, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12,  4, 13, 0x0,  3,  5, 14, 0x0),\n    gsSP2Triangles( 8,  1,  6, 0x0, 10,  0, 11, 0x0),\n    gsSP2Triangles( 0,  2, 11, 0x0,  8, 15,  1, 0x0),\n    gsSP2Triangles(14,  7,  3, 0x0, 13,  9, 12, 0x0),\n    gsSP2Triangles(11, 12,  9, 0x0,  7, 14,  8, 0x0),\n    gsSP2Triangles( 3, 13,  4, 0x0,  1, 15,  2, 0x0),\n    gsSPLight(&yoshi_seg5_lights_0501DA38.l, 1),\n    gsSPLight(&yoshi_seg5_lights_0501DA38.a, 2),\n    gsSPVertex(yoshi_seg5_vertex_05021110, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  2,  1, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 3,  8,  9, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  9,  2,  3, 0x0),\n    gsSP2Triangles( 4,  1,  6, 0x0,  2,  9, 10, 0x0),\n    gsSP2Triangles( 5, 11,  3, 0x0,  2, 10,  0, 0x0),\n    gsSP2Triangles(11,  8,  3, 0x0,  1,  4,  3, 0x0),\n    gsSPLight(&yoshi_seg5_lights_0501D9C0.l, 1),\n    gsSPLight(&yoshi_seg5_lights_0501D9C0.a, 2),\n    gsSPVertex(yoshi_seg5_vertex_050211D0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  7,  6, 0x0),\n    gsSP2Triangles(10,  3,  5, 0x0,  5,  6, 11, 0x0),\n    gsSP2Triangles( 5,  2, 12, 0x0,  2,  1, 12, 0x0),\n    gsSP2Triangles( 2, 11, 13, 0x0,  9,  6,  5, 0x0),\n    gsSP2Triangles(12, 10,  5, 0x0,  8, 13, 11, 0x0),\n    gsSP2Triangles(11,  2,  5, 0x0,  6,  8, 11, 0x0),\n    gsSP2Triangles( 9,  5,  4, 0x0,  3, 10,  1, 0x0),\n    gsSP2Triangles(10, 12,  1, 0x0,  0,  2, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "actors/yoshi_egg/geo.inc.c",
    "content": "// 0x0C0001E4\nconst GeoLayout yoshi_egg_geo[] = {\n    GEO_SCALE(0x00, 16384),\n    GEO_OPEN_NODE(),\n        GEO_SWITCH_CASE(8, geo_switch_anim_state),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, yoshi_egg_seg5_dl_050098C8),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, yoshi_egg_seg5_dl_050098B0),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, yoshi_egg_seg5_dl_05009898),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, yoshi_egg_seg5_dl_05009880),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, yoshi_egg_seg5_dl_05009868),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, yoshi_egg_seg5_dl_05009850),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, yoshi_egg_seg5_dl_05009838),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, yoshi_egg_seg5_dl_05009820),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "actors/yoshi_egg/model.inc.c",
    "content": "// Yoshi Egg (unused)\n\n// 0x05005778\nstatic const Vtx yoshi_egg_seg5_vertex_05005778[] = {\n    {{{  -128,      0,      0}, 0, {     0,   1984}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   128,      0,      0}, 0, {  1984,   1984}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   128,    256,      0}, 0, {  1984,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{  -128,    256,      0}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n};\n\n// 0x050057B8\nALIGNED8 static const Texture yoshi_egg_seg5_texture_050057B8[] = {\n#include \"actors/yoshi_egg/yoshi_egg_0_unused.rgba16.inc.c\"\n};\n\n// 0x05005FB8\nALIGNED8 static const Texture yoshi_egg_seg5_texture_05005FB8[] = {\n#include \"actors/yoshi_egg/yoshi_egg_1_unused.rgba16.inc.c\"\n};\n\n// 0x050067B8\nALIGNED8 static const Texture yoshi_egg_seg5_texture_050067B8[] = {\n#include \"actors/yoshi_egg/yoshi_egg_2_unused.rgba16.inc.c\"\n};\n\n// 0x05006FB8\nALIGNED8 static const Texture yoshi_egg_seg5_texture_05006FB8[] = {\n#include \"actors/yoshi_egg/yoshi_egg_3_unused.rgba16.inc.c\"\n};\n\n// 0x050077B8\nALIGNED8 static const Texture yoshi_egg_seg5_texture_050077B8[] = {\n#include \"actors/yoshi_egg/yoshi_egg_4_unused.rgba16.inc.c\"\n};\n\n// 0x05007FB8\nALIGNED8 static const Texture yoshi_egg_seg5_texture_05007FB8[] = {\n#include \"actors/yoshi_egg/yoshi_egg_5_unused.rgba16.inc.c\"\n};\n\n// 0x050087B8\nALIGNED8 static const Texture yoshi_egg_seg5_texture_050087B8[] = {\n#include \"actors/yoshi_egg/yoshi_egg_6_unused.rgba16.inc.c\"\n};\n\n// 0x05008FB8\nALIGNED8 static const Texture yoshi_egg_seg5_texture_05008FB8[] = {\n#include \"actors/yoshi_egg/yoshi_egg_7_unused.rgba16.inc.c\"\n};\n\n// 0x050097B8 - 0x05009820\nconst Gfx yoshi_egg_seg5_dl_050097B8[] = {\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPVertex(yoshi_egg_seg5_vertex_05005778, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPTexture(0x0001, 0x0001, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x05009820 - 0x05009838\nconst Gfx yoshi_egg_seg5_dl_05009820[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, yoshi_egg_seg5_texture_05008FB8),\n    gsSPBranchList(yoshi_egg_seg5_dl_050097B8),\n};\n\n// 0x05009838 - 0x05009850\nconst Gfx yoshi_egg_seg5_dl_05009838[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, yoshi_egg_seg5_texture_050087B8),\n    gsSPBranchList(yoshi_egg_seg5_dl_050097B8),\n};\n\n// 0x05009850 - 0x05009868\nconst Gfx yoshi_egg_seg5_dl_05009850[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, yoshi_egg_seg5_texture_05007FB8),\n    gsSPBranchList(yoshi_egg_seg5_dl_050097B8),\n};\n\n// 0x05009868 - 0x05009880\nconst Gfx yoshi_egg_seg5_dl_05009868[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, yoshi_egg_seg5_texture_050077B8),\n    gsSPBranchList(yoshi_egg_seg5_dl_050097B8),\n};\n\n// 0x05009880 - 0x05009898\nconst Gfx yoshi_egg_seg5_dl_05009880[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, yoshi_egg_seg5_texture_05006FB8),\n    gsSPBranchList(yoshi_egg_seg5_dl_050097B8),\n};\n\n// 0x05009898 - 0x050098B0\nconst Gfx yoshi_egg_seg5_dl_05009898[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, yoshi_egg_seg5_texture_050067B8),\n    gsSPBranchList(yoshi_egg_seg5_dl_050097B8),\n};\n\n// 0x050098B0 - 0x050098C8\nconst Gfx yoshi_egg_seg5_dl_050098B0[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, yoshi_egg_seg5_texture_05005FB8),\n    gsSPBranchList(yoshi_egg_seg5_dl_050097B8),\n};\n\n// 0x050098C8 - 0x050098E0\nconst Gfx yoshi_egg_seg5_dl_050098C8[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, yoshi_egg_seg5_texture_050057B8),\n    gsSPBranchList(yoshi_egg_seg5_dl_050097B8),\n};\n"
  },
  {
    "path": "asm/boot.s",
    "content": "// assembler directives\n.set noat      // allow manual use of $at\n.set noreorder // don't insert nops after branches\n\n#include \"macros.inc\"\n\n.equ EXCEPTION_TLB_MISS, 0x80000000\n.equ SP_DMEM,            0xA4000000\n.equ SP_IMEM,            0xA4001000\n.equ MI_MODE_REG,        0xA4300000\n.equ RI_MODE_REG,        0xA4700000\n\n#ifdef VERSION_CN\n.macro cn_li a b\n    li \\a, \\b\n.endm\n#else\n.macro cn_li a b\n    lui \\a, %hi(\\b)\n    addiu \\a, \\a, %lo(\\b)\n.endm\n#endif\n\n// 0xA0000000-0xBFFFFFFF: KSEG1 direct map non-cache mirror of 0x00000000\n// 0xA4000000-0xA4000FFF: RSP DMEM\n\n// 0xA4000000-0xA400003F: ROM header\n\n.section .text, \"ax\"\n\n// 0xA4000040-0xA4000B6F: IPL3\n\n// IPL3 entry point jumped to from IPL2\nglabel ipl3_entry // 0xA4000040\n    mtc0  $zero, $13\n    mtc0  $zero, $9\n    mtc0  $zero, $11\n    cn_li $t0, RI_MODE_REG\n    lw    $t1, 0xc($t0)\n    bnez  $t1, .LA4000410\n     nop\n    addiu $sp, $sp, -0x18\n    sw    $s3, ($sp)\n    sw    $s4, 4($sp)\n    sw    $s5, 8($sp)\n    sw    $s6, 0xc($sp)\n    sw    $s7, 0x10($sp)\n    cn_li $t0, RI_MODE_REG\n    lui   $t2, (0xa3f80000 >> 16)\n    lui   $t3, (0xa3f00000 >> 16)\n    cn_li $t4, MI_MODE_REG\n    ori   $t1, $zero, 64\n    sw    $t1, 4($t0)\n    li    $s1, 8000\n.LA400009C:\n    nop\n    addi  $s1, $s1, -1\n    bnez  $s1, .LA400009C\n     nop\n    sw    $zero, 8($t0)\n    ori   $t1, $zero, 20\n    sw    $t1, 0xc($t0)\n    sw    $zero, ($t0)\n    li    $s1, 4\n.LA40000C0:\n    nop\n    addi  $s1, $s1, -1\n    bnez  $s1, .LA40000C0\n     nop\n    ori   $t1, $zero, 14\n    sw    $t1, ($t0)\n    li    $s1, 32\n.LA40000DC:\n    addi  $s1, $s1, -1\n    bnez  $s1, .LA40000DC\n    ori   $t1, $zero, 271\n    sw    $t1, ($t4)\n    lui   $t1, (0x18082838 >> 16)\n    ori   $t1, (0x18082838 & 0xFFFF)\n    sw    $t1, 0x8($t2)\n    sw    $zero, 0x14($t2)\n    lui   $t1, 0x8000\n    sw    $t1, 0x4($t2)\n    move  $t5, $zero\n    move  $t6, $zero\n    lui   $t7, (0xA3F00000 >> 16)\n    move $t8, $zero\n    lui   $t9, (0xA3F00000 >> 16)\n    lui   $s6, (0xA0000000 >> 16)\n    move $s7, $zero\n    lui   $a2, (0xA3F00000 >> 16)\n    lui   $a3, (0xA0000000 >> 16)\n    move $s2, $zero\n    lui   $s4, (0xA0000000 >> 16)\n    addiu $sp, $sp, -0x48\n    move $fp, $sp\n    lui   $s0, %hi(MI_VERSION_REG)\n    lw    $s0, %lo(MI_VERSION_REG)($s0)\n    cn_li $s1, 0x01010101\n    bne   $s0, $s1, .LA4000160\n     nop\n    li    $s0, 512\n    ori   $s1, $t3, 0x4000\n    b     .LA4000168\n     nop\n.LA4000160:\n    li    $s0, 1024\n    ori   $s1, $t3, 0x8000\n.LA4000168:\n    sw    $t6, 4($s1)\n    addiu $s5, $t7, 0xc\n    jal   func_A4000778\n     nop\n    beqz  $v0, .LA400025C\n     nop\n    sw    $v0, ($sp)\n    li    $t1, 8192\n    sw    $t1, ($t4)\n    lw    $t3, ($t7)\n    lui   $t0, 0xf0ff\n    and   $t3, $t3, $t0\n    sw    $t3, 4($sp)\n    addi  $sp, $sp, 8\n    li    $t1, 4096\n    sw    $t1, ($t4)\n    lui   $t0, 0xb019\n    bne   $t3, $t0, .LA40001E0\n     nop\n    lui   $t0, 0x800\n    add   $t8, $t8, $t0\n    add   $t9, $t9, $s0\n    add   $t9, $t9, $s0\n    lui   $t0, 0x20\n    add   $s6, $s6, $t0\n    add   $s4, $s4, $t0\n    sll   $s2, $s2, 1\n    addi  $s2, $s2, 1\n    b     .LA40001E8\n     nop\n.LA40001E0:\n    lui   $t0, 0x10\n    add   $s4, $s4, $t0\n.LA40001E8:\n    li    $t0, 8192\n    sw    $t0, ($t4)\n    lw    $t1, 0x24($t7)\n    lw    $k0, ($t7)\n    li    $t0, 4096\n    sw    $t0, ($t4)\n    andi  $t1, $t1, 0xffff\n    li    $t0, 1280\n    bne   $t1, $t0, .LA4000230\n     nop\n    lui   $k1, 0x100\n    and   $k0, $k0, $k1\n    bnez  $k0, .LA4000230\n     nop\n    lui   $t0, (0x101C0A04 >> 16)\n    ori   $t0, (0x101C0A04 & 0xFFFF)\n    sw    $t0, 0x18($t7)\n    b     .LA400023C\n.LA4000230:\n     lui   $t0, (0x080C1204 >> 16)\n    ori   $t0, (0x080C1204 & 0xFFFF)\n    sw    $t0, 0x18($t7)\n.LA400023C:\n    lui   $t0, 0x800\n    add   $t6, $t6, $t0\n    add   $t7, $t7, $s0\n    add   $t7, $t7, $s0\n    addiu $t5, $t5, 1\n    sltiu $t0, $t5, 8\n    bnez  $t0, .LA4000168\n     nop\n.LA400025C:\n#ifdef VERSION_CN\n    li    $t0, 0xc0000000\n#else\n    li    $t0, 0xc4000000\n#endif\n    sw    $t0, 0xc($t2)\n    li    $t0, 0x80000000\n    sw    $t0, 0x4($t2)\n    move $sp, $fp\n    move $v1, $zero\n.LA4000274:\n    lw    $t1, 4($sp)\n    lui   $t0, 0xb009\n    bne   $t1, $t0, .LA40002D8\n     nop\n    sw    $t8, 4($s1)\n    addiu $s5, $t9, 0xc\n    lw    $a0, ($sp)\n    addi  $sp, $sp, 8\n    li    $a1, 1\n    jal   func_A4000A40\n     nop\n    lw    $t0, ($s6)\n    lui   $t0, 8\n    add   $t0, $t0, $s6\n    lw    $t1, ($t0)\n    lw    $t0, ($s6)\n    lui   $t0, 8\n    add   $t0, $t0, $s6\n    lw    $t1, ($t0)\n    lui   $t0, 0x400\n    add   $t6, $t6, $t0\n    add   $t9, $t9, $s0\n    lui   $t0, 0x10\n    add   $s6, $s6, $t0\n    b     .LA400035C\n.LA40002D8:\n     sw    $s7, 4($s1)\n    addiu $s5, $a2, 0xc\n    lw    $a0, ($sp)\n    addi  $sp, $sp, 8\n    li    $a1, 1\n    jal   func_A4000A40\n     nop\n    lw    $t0, ($a3)\n    lui   $t0, 8\n    add   $t0, $t0, $a3\n    lw    $t1, ($t0)\n    lui   $t0, 0x10\n    add   $t0, $t0, $a3\n    lw    $t1, ($t0)\n    lui   $t0, 0x18\n    add   $t0, $t0, $a3\n    lw    $t1, ($t0)\n    lw    $t0, ($a3)\n    lui   $t0, 8\n    add   $t0, $t0, $a3\n    lw    $t1, ($t0)\n    lui   $t0, 0x10\n    add   $t0, $t0, $a3\n    lw    $t1, ($t0)\n    lui   $t0, 0x18\n    add   $t0, $t0, $a3\n    lw    $t1, ($t0)\n    lui   $t0, 0x800\n    add   $s7, $s7, $t0\n    add   $a2, $a2, $s0\n    add   $a2, $a2, $s0\n    lui   $t0, 0x20\n    add   $a3, $a3, $t0\n.LA400035C:\n    addiu $v1, $v1, 1\n    slt   $t0, $v1, $t5\n    bnez  $t0, .LA4000274\n     nop\n    lui   $t2, %hi(RI_REFRESH_REG)\n    sll   $s2, $s2, 0x13\n    lui   $t1, (0x00063634 >> 16)\n    ori   $t1, (0x00063634 & 0xFFFF)\n    or    $t1, $t1, $s2\n    sw    $t1, %lo(RI_REFRESH_REG)($t2)\n    lw    $t1, %lo(RI_REFRESH_REG)($t2)\n    lui   $t0, (0xA0000300 >> 16)\n    ori   $t0, (0xA0000300 & 0xFFFF)\n    lui   $t1, (0x0FFFFFFF >> 16)\n    ori   $t1, (0x0FFFFFFF & 0xFFFF)\n    and   $s6, $s6, $t1\n    sw    $s6, 0x18($t0)\n    move $sp, $fp\n    addiu $sp, $sp, 0x48\n    lw    $s3, ($sp)\n    lw    $s4, 4($sp)\n    lw    $s5, 8($sp)\n    lw    $s6, 0xc($sp)\n    lw    $s7, 0x10($sp)\n    addiu $sp, $sp, 0x18\n    cn_li $t0, EXCEPTION_TLB_MISS\n    addiu $t1, $t0, 0x4000\n    addiu $t1, $t1, -0x20\n    mtc0  $zero, $28\n    mtc0  $zero, $29\n.LA40003D8:\n    cache 8, ($t0)\n    sltu  $at, $t0, $t1\n    bnez  $at, .LA40003D8\n     addiu $t0, $t0, 0x20\n    cn_li $t0, EXCEPTION_TLB_MISS\n    addiu $t1, $t0, 0x2000\n    addiu $t1, $t1, -0x10\n.LA40003F8:\n    cache 9, ($t0)\n    sltu  $at, $t0, $t1\n    bnez  $at, .LA40003F8\n     addiu $t0, $t0, 0x10\n    b     .LA4000458\n     nop\n.LA4000410:\n    cn_li  $t0, EXCEPTION_TLB_MISS\n    addiu $t1, $t0, 0x4000\n    addiu $t1, $t1, -0x20\n    mtc0  $zero, $28\n    mtc0  $zero, $29\n.LA4000428:\n    cache 8, ($t0)\n    sltu  $at, $t0, $t1\n    bnez  $at, .LA4000428\n     addiu $t0, $t0, 0x20\n    cn_li $t0, EXCEPTION_TLB_MISS\n    addiu $t1, $t0, 0x2000\n    addiu $t1, $t1, -0x10\n.LA4000448:\n    cache 1, ($t0)\n    sltu  $at, $t0, $t1\n    bnez  $at, .LA4000448\n     addiu $t0, $t0, 0x10\n.LA4000458:\n#ifdef VERSION_CN\n    la    $t0, D_CN_0400049C\n    lui   $t1, 0xf\n    ori   $t1, $t1, 0xffff\n    and   $t0, $t0, $t1\n    lui   $t2, 0xa400\n    lui   $t3, 0xfff0\n    and   $t2, $t2, $t3\n    or    $t0, $t0, $t2\n    la    $t3, D_CN_0400074C\n    and   $t3, $t3, $t1\n    or    $t3, $t3, $t2\n    lui   $t1, 0xa000\n.LA4000474:\n    lw    $t5, ($t0)\n    sw    $t5, ($t1)\n    addiu $t0, $t0, 4\n    addiu $t1, $t1, 4\n    sltu  $at, $t0, $t3\n    bnez  $at, .LA4000474\n     nop\n    lui   $t4, 0x8000\n    jr    $t4\n     nop\n    lui   $t3, 0xb000\n    lui   $t2, 0x1fff\n    ori   $t2, $t2, 0xffff\n    lw    $t1, 8($t3)\n    and   $t1, $t1, $t2\n    lui   $at, 0xa460\n    sw    $t1, ($at)\n.LA40004B8:\n    lui   $t0, 0xa460\n    lw    $t0, 0x10($t0)\n    andi  $t0, $t0, 2\n    bnez  $t0, .LA40004B8\n     nop\n#else\n    cn_li $t2, SP_DMEM\n    lui   $t3, 0xfff0\n    lui   $t1, 0x0010\n    and   $t2, $t2, $t3\n    lui   $t0, %hi(SP_DMEM_UNK0)\n    addiu $t1, -1\n    lui   $t3, %hi(SP_DMEM_UNK1)\n    addiu $t0, %lo(SP_DMEM_UNK0)\n    addiu $t3, %lo(SP_DMEM_UNK1)\n    and   $t0, $t0, $t1\n    and   $t3, $t3, $t1\n    lui   $t1, 0xa000\n    or    $t0, $t0, $t2\n    or    $t3, $t3, $t2\n    addiu $t1, $t1, 0\n.LA4000498:\n    lw    $t5, ($t0)\n    addiu $t0, $t0, 4\n    sltu  $at, $t0, $t3\n    addiu $t1, $t1, 4\n    bnez  $at, .LA4000498\n     sw    $t5, -4($t1)\n    cn_li $t4, EXCEPTION_TLB_MISS\n    jr    $t4\n     nop\n    lui   $t3, %hi(D_B0000008)\n    lw    $t1, %lo(D_B0000008)($t3)\n    lui   $t2, (0x1FFFFFFF >> 16)\n    ori   $t2, (0x1FFFFFFF & 0xFFFF)\n    lui   $at, %hi(PI_DRAM_ADDR_REG)\n    and   $t1, $t1, $t2\n    sw    $t1, %lo(PI_DRAM_ADDR_REG)($at)\n    lui   $t0, %hi(PI_STATUS_REG)\n.LA40004D0:\n    lw    $t0, %lo(PI_STATUS_REG)($t0)\n    andi  $t0, $t0, 2\n    bnezl $t0, .LA40004D0\n     lui   $t0, %hi(PI_STATUS_REG)\n#endif\n    li    $t0, 0x1000\n    add   $t0, $t0, $t3\n    and   $t0, $t0, $t2\n    lui   $at, %hi(PI_CART_ADDR_REG)\n    sw    $t0, %lo(PI_CART_ADDR_REG)($at)\n    cn_li $t2, 0x000FFFFF\n    lui   $at, %hi(PI_WR_LEN_REG)\n    sw    $t2, %lo(PI_WR_LEN_REG)($at)\n\n.LA4000514:\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    lui   $t3, %hi(PI_STATUS_REG)\n    lw    $t3, %lo(PI_STATUS_REG)($t3)\n    andi  $t3, $t3, 0x1\n    bnez  $t3, .LA4000514\n     nop\n#ifdef VERSION_CN\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n#endif\n#ifdef VERSION_CN\n    lui   $t1, %hi(SP_PC)\n    lw    $t1, %lo(SP_PC)($t1)\n    beqz  $t1, .LA4000698\n     nop\n    addiu $t2, $zero, 0x41\n    lui   $at, %hi(SP_STATUS_REG)\n    sw    $t2, %lo(SP_STATUS_REG)($at)\n    lui   $at, %hi(SP_PC)\n    sw    $zero, %lo(SP_PC)($at)\n.LA4000698:\n    li    $t3, 0x00AAAAAE\n    lui   $at, %hi(SP_STATUS_REG)\n    sw    $t3, %lo(SP_STATUS_REG)($at)\n    li    $t0, 1365\n    lui   $at, %hi(MI_INTR_MASK_REG)\n    sw    $t0, %lo(MI_INTR_MASK_REG)($at)\n    lui   $at, %hi(SI_STATUS_REG)\n    sw    $zero, %lo(SI_STATUS_REG)($at)\n    lui   $at, %hi(AI_STATUS_REG)\n    sw    $zero, %lo(AI_STATUS_REG)($at)\n    li    $t1, 2048\n    lui   $at, %hi(MI_MODE_REG)\n    sw    $t1, %lo(MI_MODE_REG)($at)\n    li    $t1, 2\n    lui   $at, %hi(PI_STATUS_REG)\n    sw    $t1, %lo(PI_STATUS_REG)($at)\n    lui   $t0, (0xA0000300 >> 16)\n    ori   $t0, (0xA0000300 & 0xFFFF)\n    sw    $s4, ($t0)\n    sw    $s3, 4($t0)\n#else\n    lui   $t3, %hi(D_B0000008)\n    lw    $a0, %lo(D_B0000008)($t3)\n    move  $a1, $s6\n    lui   $at, (0x5D588B65 >> 16)\n    ori   $at, (0x5D588B65 & 0xFFFF)\n    multu $a1, $at\n    addiu $sp, $sp, -0x20\n    sw    $ra, 0x1c($sp)\n    sw    $s0, 0x14($sp)\n    lui   $ra, 0x10\n    move  $v1, $zero\n    move  $t0, $zero\n    move  $t1, $a0\n    li    $t5, 32\n    mflo  $v0\n    addiu $v0, $v0, 1\n    move  $a3, $v0\n    move  $t2, $v0\n    move  $t3, $v0\n    move  $s0, $v0\n    move  $a2, $v0\n    move  $t4, $v0\n.LA40005F0:\n    lw    $v0, ($t1)\n    addu  $v1, $a3, $v0\n    sltu  $at, $v1, $a3\n    beqz  $at, .LA4000608\n     move  $a1, $v1\n    addiu $t2, $t2, 1\n.LA4000608:\n    andi  $v1, $v0, 0x1f\n    subu  $t7, $t5, $v1\n    srlv  $t8, $v0, $t7\n    sllv  $t6, $v0, $v1\n    or    $a0, $t6, $t8\n    sltu  $at, $a2, $v0\n    move  $a3, $a1\n    xor   $t3, $t3, $v0\n    beqz  $at, .LA400063C\n     addu  $s0, $s0, $a0\n    xor   $t9, $a3, $v0\n    b     .LA4000640\n     xor   $a2, $t9, $a2\n.LA400063C:\n    xor   $a2, $a2, $a0\n.LA4000640:\n    addiu $t0, $t0, 4\n    xor   $t7, $v0, $s0\n    addiu $t1, $t1, 4\n    bne   $t0, $ra, .LA40005F0\n     addu  $t4, $t7, $t4\n    xor   $t6, $a3, $t2\n    xor   $a3, $t6, $t3\n    xor   $t8, $s0, $a2\n    xor   $s0, $t8, $t4\n    lui   $t3, %hi(D_B0000010)\n    lw    $t0, %lo(D_B0000010)($t3)\n    bne   $a3, $t0, halt\n     nop\n    lw    $t0, %lo(D_B0000014)($t3)\n    bne   $s0, $t0, halt\n     nop\n    bal   func_A4000690\n     nop\n\nhalt:\n    bal   halt\n     nop\n\nfunc_A4000690:\n    lui   $t1, %hi(SP_PC)\n    lw    $t1, %lo(SP_PC)($t1)\n    lw    $s0, 0x14($sp)\n    lw    $ra, 0x1c($sp)\n    beqz  $t1, .LA40006BC\n     addiu $sp, $sp, 0x20\n    li    $t2, 65\n    lui   $at, %hi(SP_STATUS_REG)\n    sw    $t2, %lo(SP_STATUS_REG)($at)\n    lui   $at, %hi(SP_PC)\n    sw    $zero, %lo(SP_PC)($at)\n.LA40006BC:\n    li    $t3, 0x00AAAAAE\n    lui   $at, %hi(SP_STATUS_REG)\n    sw    $t3, %lo(SP_STATUS_REG)($at)\n    lui   $at, %hi(MI_INTR_MASK_REG)\n    li    $t0, 1365\n    sw    $t0, %lo(MI_INTR_MASK_REG)($at)\n    lui   $at, %hi(SI_STATUS_REG)\n    sw    $zero, %lo(SI_STATUS_REG)($at)\n    lui   $at, %hi(AI_STATUS_REG)\n    sw    $zero, %lo(AI_STATUS_REG)($at)\n    lui   $at, %hi(MI_MODE_REG)\n    li    $t1, 2048\n    sw    $t1, %lo(MI_MODE_REG)($at)\n    li    $t1, 2\n    lui   $at, %hi(PI_STATUS_REG)\n    lui   $t0, (0xA0000300 >> 16)\n    ori   $t0, (0xA0000300 & 0xFFFF)\n    sw    $t1, %lo(PI_STATUS_REG)($at)\n    sw    $s7, 0x14($t0)\n#endif\n    sw    $s5, 0xc($t0)\n#ifdef VERSION_CN\n    beqz  $s3, .LA4000728\n     sw    $s7, 0x14($t0)\n    b     .LA4000730\n     lui   $t1, 0xa600\n#else\n    sw    $s3, 0x4($t0)\n    beqz  $s3, .LA4000728\n     sw    $s4, ($t0)\n    lui   $t1, 0xa600\n    b     .LA4000730\n     addiu $t1, $t1, 0\n#endif\n.LA4000728:\n    cn_li $t1, 0xb0000000\n.LA4000730:\n    sw    $t1, 0x8($t0)\n    cn_li $t0, SP_DMEM\n    addi  $t1, $t0, 0x1000\n#ifdef VERSION_CN\n.LA4000710:\n    sw    $zero, ($t0)\n    addiu $t0, $t0, 4\n    bne   $t0, $t1, .LA4000710\n     nop\n#else\n.LA4000740:\n    addiu $t0, $t0, 4\n    bne   $t0, $t1, .LA4000740\n     sw    $zero, -4($t0)\n#endif\n    cn_li $t0, SP_IMEM\n    addi  $t1, $t0, 0x1000\n#ifdef VERSION_CN\n.LA400072C:\n    sw    $zero, ($t0)\n    addiu $t0, $t0, 4\n    bne   $t0, $t1, .LA400072C\n     nop\n#else\n.LA4000758:\n    addiu $t0, $t0, 4\n    bne   $t0, $t1, .LA4000758\n     sw    $zero, -4($t0)\n#endif\n    lui   $t3, %hi(D_B0000008)\n    lw    $t1, %lo(D_B0000008)($t3)\n    jr    $t1\n     nop\n    nop\n\nfunc_A4000778:\n    addiu $sp, $sp, -0xa0\n#ifndef VERSION_CN\n    sw    $s0, 0x40($sp)\n    sw    $s1, 0x44($sp)\n    move  $s1, $zero\n    move  $s0, $zero\n#endif\n    sw    $v0, ($sp)\n    sw    $v1, 4($sp)\n    sw    $a0, 8($sp)\n    sw    $a1, 0xc($sp)\n    sw    $a2, 0x10($sp)\n    sw    $a3, 0x14($sp)\n    sw    $t0, 0x18($sp)\n    sw    $t1, 0x1c($sp)\n    sw    $t2, 0x20($sp)\n    sw    $t3, 0x24($sp)\n    sw    $t4, 0x28($sp)\n    sw    $t5, 0x2c($sp)\n    sw    $t6, 0x30($sp)\n    sw    $t7, 0x34($sp)\n    sw    $t8, 0x38($sp)\n    sw    $t9, 0x3c($sp)\n#ifdef VERSION_CN\n    sw    $s0, 0x40($sp)\n    sw    $s1, 0x44($sp)\n#endif\n    sw    $s2, 0x48($sp)\n    sw    $s3, 0x4c($sp)\n    sw    $s4, 0x50($sp)\n    sw    $s5, 0x54($sp)\n    sw    $s6, 0x58($sp)\n    sw    $s7, 0x5c($sp)\n    sw    $fp, 0x60($sp)\n    sw    $ra, 0x64($sp)\n#ifdef VERSION_CN\n    move $s0, $zero\n    move $s1, $zero\n#endif\n.LA40007EC:\n    jal   func_A4000880\n     nop\n    addiu $s0, $s0, 1\n#ifdef VERSION_CN\n    addu  $s1, $s1, $v0\n#endif\n    slti  $t1, $s0, 4\n    bnez  $t1, .LA40007EC\n#ifdef VERSION_CN\n     nop\n#else\n     addu  $s1, $s1, $v0\n#endif\n    srl   $a0, $s1, 2\n    jal   func_A4000A40\n     li    $a1, 1\n#ifdef VERSION_CN\n    srl   $v0, $s1, 2\n#else\n    lw    $ra, 0x64($sp)\n    srl   $v0, $s1, 2\n    lw    $s1, 0x44($sp)\n#endif\n    lw    $v1, 4($sp)\n    lw    $a0, 8($sp)\n    lw    $a1, 0xc($sp)\n    lw    $a2, 0x10($sp)\n    lw    $a3, 0x14($sp)\n    lw    $t0, 0x18($sp)\n    lw    $t1, 0x1c($sp)\n    lw    $t2, 0x20($sp)\n    lw    $t3, 0x24($sp)\n    lw    $t4, 0x28($sp)\n    lw    $t5, 0x2c($sp)\n    lw    $t6, 0x30($sp)\n    lw    $t7, 0x34($sp)\n    lw    $t8, 0x38($sp)\n    lw    $t9, 0x3c($sp)\n    lw    $s0, 0x40($sp)\n#ifdef VERSION_CN\n    lw    $s1, 0x44($sp)\n#endif\n    lw    $s2, 0x48($sp)\n    lw    $s3, 0x4c($sp)\n    lw    $s4, 0x50($sp)\n    lw    $s5, 0x54($sp)\n    lw    $s6, 0x58($sp)\n    lw    $s7, 0x5c($sp)\n    lw    $fp, 0x60($sp)\n#ifdef VERSION_CN\n    lw    $ra, 0x64($sp)\n#endif\n    jr    $ra\n     addiu $sp, $sp, 0xa0\n\nfunc_A4000880:\n    addiu $sp, $sp, -0x20\n    sw    $ra, 0x1c($sp)\n    move  $t1, $zero\n    move  $t3, $zero\n    move  $t4, $zero\n.LA4000894:\n    slti  $k0, $t4, 0x40\n#ifdef VERSION_CN\n    beqz  $k0, .LA40008D4\n     nop\n#else\n    beql  $k0, $zero, .LA40008FC\n     move  $v0, $zero\n#endif\n    jal   func_A400090C\n     move  $a0, $t4\n#ifdef VERSION_CN\n    blez  $v0, .LA40008CC\n     nop\n#else\n    blezl $v0, .LA40008CC\n     slti  $k0, $t1, 0x50\n#endif\n    subu  $k0, $v0, $t1\n    multu $k0, $t4\n#ifndef VERSION_CN\n    move  $t1, $v0\n#endif\n    mflo  $k0\n    addu  $t3, $t3, $k0\n#ifdef VERSION_CN\n    move $t1, $v0\n#else\n    nop\n    slti  $k0, $t1, 0x50\n#endif\n.LA40008CC:\n#ifdef VERSION_CN\n    addiu $t4, $t4, 1\n    slti  $k0, $t1, 0x50\n#endif\n    bnez  $k0, .LA4000894\n#ifdef VERSION_CN\n     nop\n#else\n     addiu $t4, $t4, 1\n#endif\n    sll   $a0, $t3, 2\n    subu  $a0, $a0, $t3\n    sll   $a0, $a0, 2\n    subu  $a0, $a0, $t3\n    sll   $a0, $a0, 1\n    jal   func_A4000980\n     addiu $a0, $a0, -0x370\n#ifdef VERSION_CN\n    b     .LA40008FC\n     nop\n.LA40008D4:\n    move $v0, $zero\n#else\n    b     .LA4000900\n     lw    $ra, 0x1c($sp)\n    move  $v0, $zero\n#endif\n.LA40008FC:\n    lw    $ra, 0x1c($sp)\n.LA4000900:\n#ifdef VERSION_CN\n    jr    $ra\n     addiu $sp, $sp, 0x20\n#else\n    addiu $sp, $sp, 0x20\n    jr    $ra\n     nop\n#endif\n\nfunc_A400090C:\n    addiu $sp, $sp, -0x28\n    sw    $ra, 0x1c($sp)\n    move  $v0, $zero\n    jal   func_A4000A40\n     li    $a1, 2\n    move  $fp, $zero\n.LA40008FC_cn:\n    li    $k0, -1\n#ifdef VERSION_CN\n    sw    $k0, ($s4)\n    sw    $k0, ($s4)\n    sw    $k0, 4($s4)\n    lw    $v1, 4($s4)\n    srl   $v1, $v1, 0x10\n    move $gp, $zero\n#else\n.LA4000928:\n    sw    $k0, 4($s4)\n    lw    $v1, 4($s4)\n    sw    $k0, ($s4)\n    sw    $k0, ($s4)\n    move  $gp, $zero\n    srl   $v1, $v1, 0x10\n#endif\n.LA4000940:\n    andi  $k0, $v1, 1\n#ifdef VERSION_CN\n    beqz  $k0, .LA4000928_cn\n     nop\n#else\n    beql  $k0, $zero, .LA4000954\n     addiu $gp, $gp, 1\n#endif\n    addiu $v0, $v0, 1\n#ifdef VERSION_CN\n.LA4000928_cn:\n    srl   $v1, $v1, 1\n#endif\n    addiu $gp, $gp, 1\n.LA4000954:\n    slti  $k0, $gp, 8\n    bnez  $k0, .LA4000940\n#ifdef VERSION_CN\n     nop\n#else\n     srl   $v1, $v1, 1\n#endif\n    addiu $fp, $fp, 1\n    slti  $k0, $fp, 0xa\n#ifdef VERSION_CN\n    bnez  $k0, .LA40008FC_cn\n     nop\n    lw    $ra, 0x1c($sp)\n    jr    $ra\n     addiu $sp, $sp, 0x28\n#else\n    bnezl $k0, .LA4000928\n     li    $k0, -1\n    lw    $ra, 0x1c($sp)\n    addiu $sp, $sp, 0x28\n    jr    $ra\n     nop\n#endif\n\nfunc_A4000980:\n    addiu $sp, $sp, -0x28\n    sw    $ra, 0x1c($sp)\n    sw    $a0, 0x20($sp)\n#ifndef VERSION_CN\n    sb    $zero, 0x27($sp)\n#endif\n    move  $t0, $zero\n    move  $t2, $zero\n    li    $t5, 51200\n#ifdef VERSION_CN\n    sb    $zero, 0x27($sp)\n#endif\n    move  $t6, $zero\n#ifdef VERSION_CN\n.LA4000978:\n#endif\n    slti  $k0, $t6, 0x40\n.LA40009A4:\n#ifdef VERSION_CN\n    bnez  $k0, .LA400098C_cn\n     nop\n#else\n    bnezl $k0, .LA40009B8\n     move  $a0, $t6\n#endif\n    b     .LA4000A30\n     move $v0, $zero\n#ifdef VERSION_CN\n.LA400098C_cn:\n#endif\n    move $a0, $t6\n#ifndef VERSION_CN\n.LA40009B8:\n#endif\n    jal   func_A4000A40\n     li    $a1, 1\n    jal   func_A4000AD0\n     addiu $a0, $sp, 0x27\n    jal   func_A4000AD0\n     addiu $a0, $sp, 0x27\n    lbu   $k0, 0x27($sp)\n    li    $k1, 800\n#ifdef VERSION_CN\n    multu $k0, $k1\n    mflo  $t0\n    lw    $a0, 0x20($sp)\n    subu  $k0, $t0, $a0\n    bgez  $k0, .LA40009CC\n     nop\n    subu  $k0, $a0, $t0\n.LA40009CC:\n    slt   $k1, $k0, $t5\n    beqz  $k1, .LA40009E0\n     nop\n    move $t5, $k0\n    move $t2, $t6\n.LA40009E0:\n    lw    $a0, 0x20($sp)\n    slt   $k1, $t0, $a0\n    beqz  $k1, .LA4000A00\n     nop\n    addiu $t6, $t6, 1\n    slti  $k1, $t6, 0x41\n    bnez  $k1, .LA4000978\n     nop\n.LA4000A00:\n    addu  $v0, $t2, $t6\n    srl   $v0, $v0, 1\n.LA4000A30:\n    lw    $ra, 0x1c($sp)\n    jr    $ra\n     addiu $sp, $sp, 0x28\n#else\n    lw    $a0, 0x20($sp)\n    multu $k0, $k1\n    mflo  $t0\n    subu  $k0, $t0, $a0\n    bgezl $k0, .LA40009F8\n     slt   $k1, $k0, $t5\n    subu  $k0, $a0, $t0\n    slt   $k1, $k0, $t5\n.LA40009F8:\n    beql  $k1, $zero, .LA4000A0C\n     lw    $a0, 0x20($sp)\n    move  $t5, $k0\n    move  $t2, $t6\n    lw    $a0, 0x20($sp)\n.LA4000A0C:\n    slt   $k1, $t0, $a0\n    beql  $k1, $zero, .LA4000A2C\n     addu  $v0, $t2, $t6\n    addiu $t6, $t6, 1\n    slti  $k1, $t6, 0x41\n    bnezl $k1, .LA40009A4\n     slti  $k0, $t6, 0x40\n    addu  $v0, $t2, $t6\n.LA4000A2C:\n    srl   $v0, $v0, 1\n.LA4000A30:\n    lw    $ra, 0x1c($sp)\n    addiu $sp, $sp, 0x28\n    jr    $ra\n     nop\n#endif\n\nfunc_A4000A40:\n    addiu $sp, $sp, -0x28\n#ifdef VERSION_CN\n    sw    $ra, 0x1c($sp)\n    lui   $t7, 0x4200\n    andi  $a0, $a0, 0xff\n    xori  $a0, $a0, 0x3f\n    li    $k1, 1\n    bne   $a1, $k1, .LA4000A64\n     nop\n#else\n    andi  $a0, $a0, 0xff\n    li    $k1, 1\n    xori  $a0, $a0, 0x3f\n    sw    $ra, 0x1c($sp)\n    bne   $a1, $k1, .LA4000A64\n     lui   $t7, 0x4600\n#endif\n    lui   $k0, 0x8000\n    or    $t7, $t7, $k0\n.LA4000A64:\n    andi  $k0, $a0, 1\n    sll   $k0, $k0, 6\n    or    $t7, $t7, $k0\n    andi  $k0, $a0, 2\n    sll   $k0, $k0, 0xd\n    or    $t7, $t7, $k0\n    andi  $k0, $a0, 4\n    sll   $k0, $k0, 0x14\n    or    $t7, $t7, $k0\n    andi  $k0, $a0, 8\n    sll   $k0, $k0, 4\n    or    $t7, $t7, $k0\n    andi  $k0, $a0, 0x10\n    sll   $k0, $k0, 0xb\n    or    $t7, $t7, $k0\n    andi  $k0, $a0, 0x20\n    sll   $k0, $k0, 0x12\n    or    $t7, $t7, $k0\n#ifdef VERSION_CN\n    sw    $t7, ($s5)\n    li    $k1, 1\n    bne   $a1, $k1, .LA4000AC0\n     nop\n#else\n    li    $k1, 1\n    bne   $a1, $k1, .LA4000AC0\n     sw    $t7, ($s5)\n#endif\n    lui   $k0, %hi(MI_MODE_REG)\n    sw    $zero, %lo(MI_MODE_REG)($k0)\n.LA4000AC0:\n    lw    $ra, 0x1c($sp)\n#ifdef VERSION_CN\n    jr    $ra\n     addiu $sp, $sp, 0x28\n#else\n    addiu $sp, $sp, 0x28\n    jr    $ra\n     nop\n#endif\n\nfunc_A4000AD0:\n    addiu $sp, $sp, -0x28\n    sw    $ra, 0x1c($sp)\n#ifdef VERSION_CN\n    move $fp, $zero\n#endif\n    li    $k0, 0x2000\n    lui   $k1, %hi(MI_MODE_REG)\n    sw    $k0, %lo(MI_MODE_REG)($k1)\n#ifndef VERSION_CN\n    move  $fp, $zero\n#endif\n    lw    $fp, ($s5)\n    li    $k0, 0x1000\n    sw    $k0, %lo(MI_MODE_REG)($k1)\n#ifdef VERSION_CN\n    move $k0, $zero\n#endif\n    li    $k1, 0x40\n    and   $k1, $k1, $fp\n    srl   $k1, $k1, 6\n#ifndef VERSION_CN\n    move  $k0, $zero\n#endif\n    or    $k0, $k0, $k1\n    li    $k1, 0x4000\n    and   $k1, $k1, $fp\n    srl   $k1, $k1, 0xd\n    or    $k0, $k0, $k1\n    li    $k1, 0x400000\n    and   $k1, $k1, $fp\n    srl   $k1, $k1, 0x14\n    or    $k0, $k0, $k1\n    li    $k1, 0x80\n    and   $k1, $k1, $fp\n    srl   $k1, $k1, 4\n    or    $k0, $k0, $k1\n    li    $k1, 0x8000\n    and   $k1, $k1, $fp\n    srl   $k1, $k1, 0xb\n    or    $k0, $k0, $k1\n    li    $k1, 0x800000\n    and   $k1, $k1, $fp\n    srl   $k1, $k1, 0x12\n    or    $k0, $k0, $k1\n    sb    $k0, ($a0)\n    lw    $ra, 0x1c($sp)\n#ifdef VERSION_CN\n    jr    $ra\n     addiu $sp, $sp, 0x28\n.fill 0x30\n#else\n    addiu $sp, $sp, 0x28\n    jr    $ra\n     nop\n    nop\n#endif\n"
  },
  {
    "path": "asm/decompress.s",
    "content": "// assembler directives\n.set noat      // allow manual use of $at\n.set noreorder // don't insert nops after branches\n\n#include \"macros.inc\"\n\n\n.section .text, \"ax\"\n\n// This file is handwritten.\n\nglabel decompress\n#if !defined(VERSION_JP) && !defined(VERSION_US)\n    lw    $a3, 8($a0)\n    lw    $t9, 0xc($a0)\n    lw    $t8, 4($a0)\n    add   $a3, $a3, $a0\n    add   $t9, $t9, $a0\n    or    $a2, $zero, $zero\n    addi  $a0, $a0, 0x10\n    add   $t8, $t8, $a1\n.L8026ED80:\n    bnezl $a2, .L8026ED98\n     slt   $t1, $t0, $zero\n    lw    $t0, ($a0)\n    li    $a2, 32\n    addi  $a0, $a0, 4\n    slt   $t1, $t0, $zero\n.L8026ED98:\n    beql  $t1, $zero, .L8026EDB8\n     lhu   $t2, ($a3)\n    lb    $t2, ($t9)\n    addi  $t9, $t9, 1\n    addi  $a1, $a1, 1\n    b     .L8026EDE4\n     sb    $t2, -1($a1)\n    lhu   $t2, ($a3)\n.L8026EDB8:\n    addi  $a3, $a3, 2\n    srl   $t3, $t2, 0xc\n    andi  $t2, $t2, 0xfff\n    sub   $t1, $a1, $t2\n    addi  $t3, $t3, 3\n.L8026EDCC:\n    lb    $t2, -1($t1)\n    addi  $t3, $t3, -1\n    addi  $t1, $t1, 1\n    addi  $a1, $a1, 1\n    bnez  $t3, .L8026EDCC\n     sb    $t2, -1($a1)\n.L8026EDE4:\n    sll   $t0, $t0, 1\n    bne   $a1, $t8, .L8026ED80\n     addi  $a2, $a2, -1\n    jr    $ra\n     nop\n#else\n    lw    $t8, 4($a0)\n    lw    $a3, 8($a0)\n    lw    $t9, 0xc($a0)\n    move  $a2, $zero\n    add   $t8, $t8, $a1\n    add   $a3, $a3, $a0\n    add   $t9, $t9, $a0\n    addi  $a0, $a0, 0x10\n.L8027EF50:\n    bnez  $a2, .L8027EF64\n     nop\n    lw    $t0, ($a0)\n    li    $a2, 32\n    addi  $a0, $a0, 4\n.L8027EF64:\n    slt   $t1, $t0, $zero\n    beqz  $t1, .L8027EF88\n     nop\n    lb    $t2, ($t9)\n    addi  $t9, $t9, 1\n    sb    $t2, ($a1)\n    addi  $a1, $a1, 1\n    b     .L8027EFBC\n     nop\n.L8027EF88:\n    lhu   $t2, ($a3)\n    addi  $a3, $a3, 2\n    srl   $t3, $t2, 0xc\n    andi  $t2, $t2, 0xfff\n    sub   $t1, $a1, $t2\n    addi  $t3, $t3, 3\n.L8027EFA0:\n    lb    $t2, -1($t1)\n    addi  $t3, $t3, -1\n    addi  $t1, $t1, 1\n    sb    $t2, ($a1)\n    addi  $a1, $a1, 1\n    bnez  $t3, .L8027EFA0\n     nop\n.L8027EFBC:\n    sll   $t0, $t0, 1\n    addi  $a2, $a2, -1\n    bne   $a1, $t8, .L8027EF50\n     nop\n    jr    $ra\n     nop\n#endif\n"
  },
  {
    "path": "asm/entry.s",
    "content": "// assembler directives\n.set noat      // allow manual use of $at\n.set noreorder // don't insert nops after branches\n\n#include \"macros.inc\"\n\n\n.section .text, \"ax\"\n\nglabel entry_point\n.if VERSION_CN == 1\n    lui   $t0, %lo(_mainSegmentNoloadStartHi)\n    ori   $t0, %lo(_mainSegmentNoloadStartLo)\n    lui   $t1, %lo(_mainSegmentNoloadSizeHi)\n    ori   $t1, %lo(_mainSegmentNoloadSizeLo)\n.L80249010:\n    sw    $zero, ($t0)\n    sw    $zero, 4($t0)\n    addi  $t0, $t0, 8\n    addi  $t1, $t1, -8\n    bnez  $t1, .L80249010\n     nop\n    lui   $sp, %lo(gIdleThreadStackHi)\n    ori   $sp, %lo(gIdleThreadStackLo)\n    lui   $t2, %lo(main_funcHi)\n    ori   $t2, %lo(main_funcLo)\n    jr    $t2\n     nop\n.else\n    lui   $t0, %hi(_mainSegmentNoloadStart) // $t0, 0x8034\n    lui   $t1, %lo(_mainSegmentNoloadSizeHi) // lui $t1, 2\n    addiu $t0, %lo(_mainSegmentNoloadStart) // addiu $t0, $t0, -0x6df0\n    ori   $t1, %lo(_mainSegmentNoloadSizeLo) // ori $t1, $t1, 0xcee0\n.L80246010:\n    addi  $t1, $t1, -8\n    sw    $zero, ($t0)\n    sw    $zero, 4($t0)\n    bnez  $t1, .L80246010\n     addi  $t0, $t0, 8\n    lui   $t2, %hi(main_func) // $t2, 0x8024\n    lui   $sp, %hi(gIdleThreadStack) // $sp, 0x8020\n    addiu $t2, %lo(main_func) // addiu $t2, $t2, 0x6dc4\n    jr    $t2\n     addiu $sp, %lo(gIdleThreadStack) // addiu $sp, $sp, 0xa00\n.endif\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n"
  },
  {
    "path": "asm/ipl3_font.s",
    "content": "#include \"macros.inc\"\n\n// 0xA4000B70-0xA4000FFF: IPL3 Font\nglabel ipl3_font\n.incbin \"textures/ipl3_raw/ipl3_font_00.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_01.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_02.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_03.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_04.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_05.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_06.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_07.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_08.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_09.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_10.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_11.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_12.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_13.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_14.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_15.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_16.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_17.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_18.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_19.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_20.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_21.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_22.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_23.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_24.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_25.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_26.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_27.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_28.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_29.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_30.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_31.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_32.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_33.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_34.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_35.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_36.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_37.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_38.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_39.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_40.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_41.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_42.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_43.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_44.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_45.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_46.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_47.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_48.ia1\"\n.incbin \"textures/ipl3_raw/ipl3_font_49.ia1\"\n.fill 0x12\n\n"
  },
  {
    "path": "asm/rom_header.s",
    "content": "/*\n * Super Mario 64 ROM header\n * Only the first 0x18 bytes matter to the console.\n */\n\n.byte  0x80, 0x37, 0x12, 0x40   /* PI BSD Domain 1 register */\n.word  0x0000000F               /* Clockrate setting*/\n.word  entry_point              /* Entrypoint */\n\n/* Revision */\n#ifdef VERSION_SH\n    .word  0x00001448\n#elif defined(VERSION_CN)\n    .word  0x0000144C\n#elif defined(VERSION_EU)\n    .word  0x00001446\n#else /* NTSC-U and NTSC-J 1.0 */\n    .word  0x00001444\n#endif\n\n#ifdef VERSION_CN\n    .fill 0x30\n#else\n\n.word  0x4EAA3D0E               /* Checksum 1 */\n.word  0x74757C24               /* Checksum 2 */\n.word  0x00000000               /* Unknown */\n.word  0x00000000               /* Unknown */\n#ifdef VERSION_SH\n.ascii \"SUPERMARIO64        \"   /* Internal ROM name */\n#else\n.ascii \"SUPER MARIO 64      \"   /* Internal ROM name */\n#endif\n.word  0x00000000               /* Unknown */\n.word  0x0000004E               /* Cartridge */\n.ascii \"SM\"                     /* Cartridge ID */\n\n/* Region */\n#ifdef VERSION_EU\n    .ascii \"P\"                  /* PAL (Europe) */\n#elif defined(VERSION_US)\n    .ascii \"E\"                  /* NTSC-U (North America) */\n#else\n    .ascii \"J\"                  /* NTSC-J (Japan) */\n#endif\n\n\n#ifdef VERSION_SH\n    .byte  0x03                 /* Version (Shindou) */\n#else\n    .byte  0x00                 /* Version */\n#endif\n\n#endif\n"
  },
  {
    "path": "assets/anims/anim_00.inc.c",
    "content": "static const struct Animation anim_00[] = {\n    1,\n    189,\n    0,\n    0,\n    0x22,\n    ANIMINDEX_NUMPARTS(anim_00_indices),\n    anim_00_values,\n    anim_00_indices,\n    0,\n};\n\n\nstatic const u16 anim_00_indices[] = {\n    0x0022, 0x0001, 0x0022, 0x0023, 0x0022, 0x0045, 0x0001, 0x0000, 0x0001, 0x0067, 0x0001, 0x0000,\n    0x0022, 0x04B0, 0x0022, 0x04D2, 0x0022, 0x04F4,\n    0x0022, 0x044A, 0x0022, 0x046C, 0x0022, 0x048E,\n    0x0022, 0x03E4, 0x0022, 0x0406, 0x0022, 0x0428,\n    0x0001, 0x03E0, 0x0001, 0x03E1, 0x0001, 0x03E2,\n    0x0022, 0x00F0, 0x0022, 0x0112, 0x0022, 0x0134,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0022, 0x00CE,\n    0x0022, 0x0068, 0x0022, 0x008A, 0x0022, 0x00AC,\n    0x0001, 0x03DC, 0x0001, 0x03DD, 0x0001, 0x03DE,\n    0x0022, 0x01DE, 0x0022, 0x0200, 0x0022, 0x0222,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0022, 0x01BC,\n    0x0022, 0x0156, 0x0022, 0x0178, 0x0022, 0x019A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x03DF,\n    0x0022, 0x0376, 0x0022, 0x0398, 0x0022, 0x03BA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0022, 0x0354,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0022, 0x0332,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x03E3,\n    0x0022, 0x02CC, 0x0022, 0x02EE, 0x0022, 0x0310,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0022, 0x02AA,\n    0x0022, 0x0244, 0x0022, 0x0266, 0x0022, 0x0288,\n};\n\nstatic const s16 anim_00_values[] = {\n    0x0000, 0x0007, 0x0008, 0x0008, 0x0006, 0x0000, 0xFFF5, 0xFFE5,\n    0xFFD3, 0xFFC3, 0xFFB8, 0xFFAF, 0xFFA7, 0xFFA1, 0xFF9B, 0xFF98,\n    0xFF97, 0xFF98, 0xFF9F, 0xFFAC, 0xFFBC, 0xFFCD, 0xFFDD, 0xFFED,\n    0xFFFF, 0x0004, 0xFFF9, 0xFFEC, 0xFFE7, 0xFFE8, 0xFFF5, 0x0000,\n    0x0002, 0x0001, 0x0000, 0xFEF0, 0xFEEF, 0xFEEC, 0xFEEC, 0xFEF0,\n    0xFEF8, 0xFF03, 0xFF10, 0xFF1D, 0xFF2C, 0xFF39, 0xFF46, 0xFF53,\n    0xFF61, 0xFF71, 0xFF84, 0xFF9A, 0xFFB6, 0xFFD8, 0xFFFF, 0x0025,\n    0x004D, 0x007E, 0x008A, 0x009C, 0x00AF, 0x00B6, 0x00B8, 0x00B7,\n    0x00B0, 0x00AA, 0x00A9, 0x00A9, 0x00AA, 0xFFA4, 0xFFA6, 0xFFAA,\n    0xFFAF, 0xFFB2, 0xFFB3, 0xFFB3, 0xFFB3, 0xFFB3, 0xFFB2, 0xFFB1,\n    0xFFAF, 0xFFAC, 0xFFAA, 0xFFA9, 0xFFAA, 0xFFAD, 0xFFB3, 0xFFBD,\n    0xFFCA, 0xFFD9, 0xFFEA, 0x0013, 0x0017, 0x0040, 0x0042, 0x0030,\n    0x002F, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x3FFF,\n    0x17FE, 0x155E, 0x1294, 0x101F, 0x0E7D, 0x0DD0, 0x0DBA, 0x0DFB,\n    0x0E52, 0x0E7D, 0x0E8C, 0x0EAF, 0x0ED7, 0x0EF5, 0x0EFA, 0x0ED7,\n    0x0E7D, 0x0CBA, 0x0A38, 0x09AE, 0x0E45, 0x153A, 0x1BEC, 0x1D13,\n    0x17F4, 0x120D, 0x0C81, 0x069A, 0x01E9, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xFF33, 0xFED1, 0xFE68, 0xFE0C, 0xFDCE, 0xFDB5,\n    0xFDB2, 0xFDBB, 0xFDC8, 0xFDCE, 0xFDD3, 0xFDDD, 0xFDE9, 0xFDF2,\n    0xFDF4, 0xFDE9, 0xFDCE, 0xFCF8, 0xFBE8, 0xFC5F, 0x01DA, 0x06DC,\n    0xFEF7, 0xEBF8, 0xF0AB, 0xF7B5, 0xF940, 0xF9B9, 0xF9A1, 0xF97C,\n    0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF1E5, 0xF26E, 0xF2FF, 0xF380,\n    0xF3D5, 0xF3F8, 0xF3FC, 0xF3EF, 0xF3DE, 0xF3D5, 0xF3DB, 0xF3EB,\n    0xF3FC, 0xF409, 0xF40B, 0xF3FC, 0xF3D5, 0xF323, 0xF21F, 0xF1BF,\n    0xF6C5, 0xF52C, 0xCAD0, 0xD2B6, 0xDC58, 0xE404, 0xE805, 0xEB04,\n    0xECE5, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xF503, 0xF46E,\n    0xF3CF, 0xF344, 0xF2E7, 0xF2C0, 0xF2BB, 0xF2CA, 0xF2DD, 0xF2E7,\n    0xF382, 0xF4EB, 0xF689, 0xF7BF, 0xF7F3, 0xF689, 0xF2E7, 0xE600,\n    0xD167, 0xC172, 0xBB8E, 0xC343, 0xF670, 0xF260, 0xEB07, 0xE262,\n    0xD99D, 0xD1E5, 0xCC67, 0xCA4F, 0xCA4F, 0xCA4F, 0xCA4F, 0xCA4F,\n    0xAAD0, 0xAE13, 0xB184, 0xB499, 0xB6C3, 0xB7E5, 0xB868, 0xB888,\n    0xB87E, 0xB886, 0xB843, 0xB76E, 0xB66D, 0xB5A5, 0xB579, 0xB64D,\n    0xB886, 0xB486, 0xB545, 0xD70A, 0x5298, 0xE310, 0x07A9, 0x0B33,\n    0x08C3, 0x056F, 0x01CF, 0xFE7D, 0xFC0E, 0xFB1D, 0xFB1D, 0xFB1D,\n    0xFB1D, 0xFB1D, 0x956B, 0x9618, 0x970B, 0x9771, 0x9674, 0x9384,\n    0x8F3C, 0x8A90, 0x8672, 0x83D4, 0x8219, 0x8048, 0x7EC5, 0x7DF9,\n    0x7E48, 0x801A, 0x83D4, 0x8F36, 0xA215, 0xB3F8, 0xC014, 0xCCB5,\n    0xE2CC, 0xE06D, 0xDDD7, 0xDAE3, 0xD7EF, 0xD55D, 0xD38C, 0xD2DC,\n    0xD2DC, 0xD2DC, 0xD2DC, 0xD2DC, 0xE0E1, 0xE00A, 0xDF42, 0xDE5B,\n    0xDD24, 0xDB65, 0xD941, 0xD712, 0xD532, 0xD3FC, 0xD3C6, 0xD45E,\n    0xD553, 0xD635, 0xD693, 0xD5FB, 0xD3FC, 0xD78F, 0xD6B6, 0xB791,\n    0x45A8, 0xC163, 0xA4A3, 0xA4A6, 0xACFA, 0xB736, 0xC1D3, 0xCB4C,\n    0xD218, 0xD4B4, 0xD4B4, 0xD4B4, 0xD4B4, 0xD4B4, 0xF32C, 0xF5A4,\n    0xF7E3, 0xFA93, 0xFE59, 0x03DF, 0x0AAB, 0x11AB, 0x17CE, 0x1C05,\n    0x1E9B, 0x2090, 0x21E6, 0x229E, 0x22BA, 0x223A, 0x2120, 0x1F60,\n    0x1D02, 0x1A29, 0x16F6, 0x138A, 0x1008, 0x0C91, 0x0946, 0x0648,\n    0x03BB, 0x01BF, 0x0075, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x066E, 0x06BB, 0x06FA, 0x0755, 0x07F4, 0x0910, 0x0A8A, 0x0C0A,\n    0x0D39, 0x0DBE, 0x0D9B, 0x0D1F, 0x0C62, 0x0B7D, 0x0A89, 0x099E,\n    0x08D5, 0x0819, 0x0749, 0x066B, 0x0585, 0x049D, 0x03BA, 0x02E2,\n    0x0219, 0x0168, 0x00D3, 0x0062, 0x0019, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xF3C7, 0xF44B, 0xF4C3, 0xF554, 0xF628, 0xF773,\n    0xF916, 0xFAC0, 0xFC1C, 0xFCD7, 0xFCF2, 0xFCB7, 0xFC3D, 0xFB9E,\n    0xFAF2, 0xFA53, 0xF9D7, 0xF971, 0xF903, 0xF88E, 0xF817, 0xF7A0,\n    0xF72B, 0xF6BD, 0xF658, 0xF5FE, 0xF5B3, 0xF57A, 0xF556, 0xF549,\n    0xF549, 0xF549, 0xF549, 0xF549, 0xF8AB, 0xF878, 0xF8C4, 0xF814,\n    0xF4F0, 0xEE21, 0xE4BF, 0xDAC5, 0xD22D, 0xCCF3, 0xCAE8, 0xCA52,\n    0xCAE3, 0xCC4A, 0xCE36, 0xD057, 0xD25D, 0xD4C1, 0xD7FB, 0xDBB9,\n    0xDFA6, 0xE372, 0xE6C7, 0xE955, 0xEAC7, 0xEACB, 0xE4E1, 0xD8ED,\n    0xCD2C, 0xC7DD, 0xC7DD, 0xC7DD, 0xC7DD, 0xC7DD, 0x4363, 0x4216,\n    0x40B8, 0x3F7D, 0x3E9A, 0x3D9E, 0x3C61, 0x3B88, 0x3BB9, 0x3D99,\n    0x41B5, 0x479B, 0x4E6D, 0x5551, 0x5B68, 0x5FD6, 0x61BF, 0x5EFA,\n    0x5752, 0x4CD6, 0x4194, 0x32A9, 0x2126, 0x1511, 0x0F3F, 0x0B06,\n    0x0828, 0x0668, 0x0588, 0x054B, 0x054B, 0x054B, 0x054B, 0x054B,\n    0x6F45, 0x6F22, 0x6F46, 0x6EDC, 0x6D0E, 0x68FD, 0x6349, 0x5D55,\n    0x5886, 0x5642, 0x5657, 0x5783, 0x5992, 0x5C51, 0x5F8E, 0x6314,\n    0x66B0, 0x6C9A, 0x74CA, 0x7BB0, 0x7DBC, 0x7640, 0x6840, 0x5BBE,\n    0x51E0, 0x473C, 0x3CF7, 0x3436, 0x2E1F, 0x2BD6, 0x2BD6, 0x2BD6,\n    0x2BD6, 0x2BD6, 0xDC92, 0xDBDD, 0xDB21, 0xDA73, 0xD9E7, 0xD8DF,\n    0xD74B, 0xD617, 0xD62E, 0xD87A, 0xDD49, 0xE3D6, 0xEB6F, 0xF362,\n    0xFAFD, 0x018D, 0x0661, 0x08C7, 0x08A4, 0x0627, 0x0181, 0xF746,\n    0xE917, 0xDEBD, 0xD95E, 0xD4F0, 0xD178, 0xCEF9, 0xCD77, 0xCCF6,\n    0xCCF6, 0xCCF6, 0xCCF6, 0xCCF6, 0xFFEA, 0xFFED, 0xFFF4, 0xFFFC,\n    0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0xFFFF,\n    0xFFFE, 0xFFFD, 0xFFFD, 0xFFFE, 0x0000, 0x0052, 0x00A9, 0x0022,\n    0xFCB2, 0xF9B2, 0xFEFF, 0x012A, 0x050D, 0xFFF1, 0xFA5A, 0xFB63,\n    0xFD72, 0x000B, 0x0000, 0x0000, 0x0000, 0x0000, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF72,\n    0xFFB4, 0xFF33, 0xFC48, 0xF983, 0xFCB3, 0xF7AF, 0xF8CE, 0xF8E7,\n    0xF9C6, 0xFF89, 0x018F, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xCE0B, 0xCD6E, 0xCC08, 0xCA81, 0xC984, 0xC931, 0xC927, 0xC946,\n    0xC96F, 0xC984, 0xC999, 0xC9CB, 0xCA04, 0xCA2E, 0xCA36, 0xCA04,\n    0xC984, 0xC751, 0xC40F, 0xC2B6, 0xC856, 0xCC7E, 0xBBB8, 0xC17F,\n    0xB979, 0xC03F, 0xC85D, 0xC86E, 0xC6CC, 0xC766, 0xC9D8, 0xC9D8,\n    0xC9D8, 0xC9D8, 0x2741, 0x275A, 0x27F8, 0x2992, 0x2CA2, 0x32AE,\n    0x3B3E, 0x43CC, 0x49D2, 0x4AC8, 0x45EB, 0x3D37, 0x3242, 0x26A4,\n    0x1BF3, 0x13C6, 0x0FB4, 0x18B6, 0x2C8A, 0x3BED, 0x3C06, 0x3824,\n    0x3C4A, 0x38E9, 0x3465, 0x26F1, 0x1C15, 0x1A91, 0x1C7D, 0x1E4A,\n    0x1E4A, 0x1E4A, 0x1E4A, 0x1E4A, 0x2333, 0x23DA, 0x24E2, 0x24E3,\n    0x2279, 0x1C94, 0x1441, 0x0B45, 0x0361, 0xFE5B, 0xFB54, 0xF88F,\n    0xF680, 0xF59A, 0xF650, 0xF914, 0xFE5B, 0x0F77, 0x2AF8, 0x4126,\n    0x484F, 0x45C4, 0x31C5, 0x198C, 0x1ADA, 0x1B13, 0x1B10, 0x1B13,\n    0x1B0D, 0x1B09, 0x1B09, 0x1B09, 0x1B09, 0x1B09, 0x170B, 0x157C,\n    0x1235, 0x0F50, 0x0EE5, 0x11DB, 0x16D2, 0x1C7E, 0x2193, 0x24C6,\n    0x262D, 0x26D7, 0x26EF, 0x269C, 0x2609, 0x255F, 0x24C6, 0x23FE,\n    0x226A, 0x1FAD, 0x195D, 0x1386, 0x182A, 0x2263, 0x1EC7, 0x1838,\n    0x12E4, 0x115C, 0x1144, 0x1144, 0x1144, 0x1144, 0x1144, 0x1144,\n    0xAA0A, 0xAD3C, 0xB3D6, 0xB960, 0xB962, 0xB1CD, 0xA599, 0x97D2,\n    0x8B88, 0x83C7, 0x8039, 0x7E50, 0x7DC4, 0x7E51, 0x7FAF, 0x8199,\n    0x83C7, 0x8893, 0x90D5, 0x9A04, 0xA5AB, 0xAFC8, 0xAB2E, 0x96E6,\n    0x9DBC, 0xA14B, 0xA41B, 0xA70F, 0xA9E4, 0xAC44, 0xAC44, 0xAC44,\n    0xAC44, 0xAC44, 0xBA4D, 0xBD26, 0xC3A5, 0xCAB9, 0xCF53, 0xD0D1,\n    0xD101, 0xD072, 0xCFB2, 0xCF53, 0xCF6F, 0xCFB0, 0xCFFA, 0xD032,\n    0xD03B, 0xCFFA, 0xCF53, 0xCE40, 0xCCDC, 0xCB3C, 0xC975, 0xC79C,\n    0xC5C7, 0xC40A, 0xC27A, 0xC12C, 0xC035, 0xC142, 0xC3F6, 0xC55D,\n    0xBF40, 0xBF40, 0xBF40, 0xBF40, 0x4A2F, 0x4409, 0x3602, 0x26B8,\n    0x1CCA, 0x1945, 0x1848, 0x190D, 0x1ACF, 0x1CCA, 0x1F08, 0x21F0,\n    0x254B, 0x28E0, 0x2C77, 0x2FD8, 0x32CB, 0x35B1, 0x38F2, 0x3C5F,\n    0x3FCB, 0x4306, 0x45E3, 0x4832, 0x49C6, 0x4A6F, 0x4A00, 0x420B,\n    0x329B, 0x2537, 0x2537, 0x2537, 0x2537, 0x2537, 0xE71E, 0xE851,\n    0xEAFD, 0xEDC1, 0xEF3D, 0xEF0D, 0xEE0A, 0xECA6, 0xEB54, 0xEA87,\n    0xEA4C, 0xEA52, 0xEA7E, 0xEAB5, 0xEADB, 0xEAD5, 0xEA87, 0xEA0D,\n    0xE991, 0xE90C, 0xE879, 0xE7CF, 0xE70B, 0xE624, 0xE515, 0xE3D8,\n    0xE266, 0xDF3D, 0xDA6E, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A,\n    0xE79C, 0xE9F8, 0xEF21, 0xF42F, 0xF63E, 0xF454, 0xF040, 0xEB4D,\n    0xE6C7, 0xE3F8, 0xE2E7, 0xE299, 0xE2CE, 0xE349, 0xE3CD, 0xE41C,\n    0xE3F8, 0xE356, 0xE266, 0xE144, 0xE009, 0xDECF, 0xDDB1, 0xDCC9,\n    0xDC32, 0xDC05, 0xDC5D, 0xDFE2, 0xE682, 0xEC41, 0xEC41, 0xEC41,\n    0xEC41, 0xEC41, 0x9BA4, 0x9FCC, 0xA967, 0xB431, 0xBBE2, 0xBFD4,\n    0xC278, 0xC428, 0xC540, 0xC61B, 0xC6F6, 0xC7C0, 0xC855, 0xC897,\n    0xC864, 0xC79A, 0xC61B, 0xC3C7, 0xC0B9, 0xBD24, 0xB93A, 0xB52D,\n    0xB131, 0xAD77, 0xAA33, 0xA796, 0xA5D4, 0xA87B, 0xAF7D, 0xB59E,\n    0xB59E, 0xB59E, 0xB59E, 0xB59E, 0x7FFF, 0x7FFF, 0x4171, 0xBF5F,\n    0x7FFF, 0x7FFF, 0x4171, 0xBF5F, 0x01E1, 0x01FE, 0x0206, 0x0184,\n    0x0000, 0xFCF8, 0xF8CD, 0xF462, 0xF09A, 0xEE56, 0xED53, 0xECBD,\n    0xEC9D, 0xECFD, 0xEDE5, 0xEF60, 0xF176, 0xF49A, 0xF8EB, 0xFDF1,\n    0x0337, 0x0849, 0x0CAF, 0x0FF3, 0x0D40, 0x0865, 0x08B9, 0x08E2,\n    0x0449, 0x0000, 0xFF2B, 0xFF43, 0xFFB9, 0x0000, 0xFEFF, 0xFEEF,\n    0xFEEB, 0xFF31, 0x0000, 0x0193, 0x03B5, 0x05FF, 0x080B, 0x0972,\n    0x0A46, 0x0AE2, 0x0B4B, 0x0B85, 0x0B96, 0x0B83, 0x0B4F, 0x0AD3,\n    0x09FE, 0x08F7, 0x07E2, 0x06E5, 0x0627, 0x05CD, 0x08B7, 0x0A5A,\n    0x02B9, 0xFB24, 0xFCB9, 0x0000, 0x0074, 0x0067, 0x0026, 0x0000,\n    0xEC5B, 0xEC21, 0xEB82, 0xEA93, 0xE96A, 0xE7B5, 0xE576, 0xE33C,\n    0xE199, 0xE11B, 0xE1B8, 0xE2EB, 0xE48F, 0xE67F, 0xE897, 0xEAB2,\n    0xECAB, 0xEEF6, 0xF1DA, 0xF4F1, 0xF7D1, 0xFA13, 0xFB51, 0xFB22,\n    0xF06C, 0xE361, 0xE1CC, 0xE45A, 0xE8AD, 0xEDB7, 0xF242, 0xF70D,\n    0xFAD7, 0xFC62, 0xFFDB, 0xFFD9, 0xFFD8, 0xFFE2, 0x0000, 0x0035,\n    0x007B, 0x00C9, 0x0117, 0x015E, 0x0175, 0x0153, 0x0122, 0x010C,\n    0x013B, 0x01D8, 0x030D, 0x07D9, 0x0EB3, 0x10F6, 0x096D, 0xFD4F,\n    0xF591, 0xF47D, 0xF5B0, 0xF81D, 0xFAB8, 0xFC74, 0xFD60, 0xFE37,\n    0xFEF0, 0xFF81, 0xFFDF, 0x0000, 0xFC30, 0xFBF5, 0xFBE5, 0xFCEE,\n    0x0000, 0x0618, 0x0E70, 0x1751, 0x1F03, 0x23D1, 0x25CD, 0x266A,\n    0x2605, 0x24F8, 0x239E, 0x2253, 0x2171, 0x20B6, 0x1FA5, 0x1E3B,\n    0x1C5B, 0x1A23, 0x17EB, 0x15D4, 0x13BF, 0x11A9, 0x0F8E, 0x0D67,\n    0x0AE7, 0x07FF, 0x0512, 0x0282, 0x00B0, 0x0000, 0xFC1C, 0xFC49,\n    0xFCBC, 0xFD53, 0xFDEE, 0xFE7A, 0xFF03, 0xFF9C, 0x0056, 0x0144,\n    0x023B, 0x031B, 0x0404, 0x0517, 0x0675, 0x083F, 0x0A94, 0x0F36,\n    0x15E6, 0x1BC3, 0x2028, 0x23BB, 0x258A, 0x25D9, 0x2588, 0x2493,\n    0x22F5, 0x20AA, 0x1D0B, 0x180F, 0x129C, 0x0D9A, 0x09F0, 0x0884,\n    0xFF94, 0xFF8E, 0xFF8C, 0xFFA9, 0x0000, 0xFF36, 0xFD34, 0xFBFC,\n    0xFD91, 0x03F6, 0x101E, 0x2072, 0x3325, 0x466A, 0x5874, 0x6776,\n    0x71A4, 0x6DFE, 0x5D1C, 0x4B98, 0x3CAA, 0x2CA3, 0x1DBC, 0x122E,\n    0x0B13, 0x0711, 0x04B0, 0x027D, 0x00B0, 0x0011, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0580, 0x05D5, 0x05ED, 0x046E, 0x0000, 0xF75F,\n    0xEBAA, 0xDF1B, 0xD3EB, 0xCC55, 0xC82E, 0xC596, 0xC430, 0xC3A1,\n    0xC38E, 0xC39B, 0xC36C, 0xC2C5, 0xC371, 0xC824, 0xD284, 0xE03F,\n    0xEE10, 0xF8B4, 0xFF59, 0x03BA, 0x0660, 0x07D6, 0x0644, 0x0243,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x3F76, 0x3F10, 0x3E17, 0x3CE2,\n    0x3BC4, 0x3C2D, 0x3DF1, 0x3F04, 0x3D57, 0x36DB, 0x2A93, 0x1A19,\n    0x0741, 0xF3E3, 0xE1D2, 0xD2E4, 0xC8F0, 0xCC7D, 0xDDCE, 0xF24D,\n    0x0898, 0x2296, 0x3A90, 0x4AD4, 0x5055, 0x4EA1, 0x49E9, 0x4660,\n    0x4409, 0x414E, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_01_02.inc.c",
    "content": "static const struct Animation anim_01[] = {\n    1,\n    189,\n    0,\n    0,\n    0x50,\n    ANIMINDEX_NUMPARTS(anim_01_02_indices),\n    anim_01_02_values,\n    anim_01_02_indices,\n    0,\n};\n\nstatic const struct Animation anim_02[] = {\n    1,\n    189,\n    0,\n    0,\n    0x01,\n    ANIMINDEX_NUMPARTS(anim_01_02_indices),\n    anim_01_02_values,\n    anim_01_02_indices,\n    0,\n};\n\n\nstatic const u16 anim_01_02_indices[] = {\n    0x0001, 0x0000, 0x0050, 0x0001, 0x0050, 0x0051, 0x0001, 0x0000, 0x0001, 0x00A1, 0x0001, 0x0000,\n    0x0050, 0x0BE8, 0x0050, 0x0C38, 0x0050, 0x0C88,\n    0x0050, 0x0AF8, 0x0050, 0x0B48, 0x0050, 0x0B98,\n    0x0050, 0x0A08, 0x0050, 0x0A58, 0x0050, 0x0AA8,\n    0x0001, 0x09B5, 0x0001, 0x09B6, 0x0001, 0x09B7,\n    0x0050, 0x01E2, 0x0050, 0x0232, 0x0050, 0x0282,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0050, 0x0192,\n    0x0050, 0x00A2, 0x0050, 0x00F2, 0x0050, 0x0142,\n    0x0001, 0x0962, 0x0001, 0x0963, 0x0050, 0x0964,\n    0x0050, 0x0412, 0x0050, 0x0462, 0x0050, 0x04B2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0050, 0x03C2,\n    0x0050, 0x02D2, 0x0050, 0x0322, 0x0050, 0x0372,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x09B4,\n    0x0050, 0x0872, 0x0050, 0x08C2, 0x0050, 0x0912,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0050, 0x0822,\n    0x0050, 0x0732, 0x0050, 0x0782, 0x0050, 0x07D2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0050, 0x09B8,\n    0x0050, 0x0642, 0x0050, 0x0692, 0x0050, 0x06E2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0050, 0x05F2,\n    0x0050, 0x0502, 0x0050, 0x0552, 0x0050, 0x05A2,\n};\n\nstatic const s16 anim_01_02_values[] = {\n    0x0000, 0x00A0, 0x009B, 0x008F, 0x007F, 0x006D, 0x005B, 0x004D,\n    0x0045, 0x0045, 0x0056, 0x0076, 0x009D, 0x00C5, 0x00E4, 0x00F3,\n    0x00EE, 0x00DC, 0x00C0, 0x00A1, 0x0083, 0x006A, 0x005B, 0x005D,\n    0x006B, 0x007F, 0x0090, 0x0094, 0x0088, 0x0072, 0x005C, 0x004D,\n    0x0051, 0x005E, 0x0063, 0x005D, 0x0054, 0x004D, 0x0050, 0x0057,\n    0x0056, 0x0052, 0x004E, 0x004C, 0x004B, 0x004B, 0x004A, 0x004A,\n    0x004A, 0x0049, 0x0048, 0x0047, 0x0047, 0x0046, 0x0045, 0x0044,\n    0x0043, 0x0041, 0x003F, 0x003D, 0x003A, 0x0037, 0x0035, 0x0033,\n    0x0033, 0x0034, 0x0043, 0x005A, 0x006F, 0x007E, 0x0084, 0x008B,\n    0x0092, 0x0098, 0x009E, 0x00A2, 0x00A5, 0x00A8, 0x00A9, 0x00AA,\n    0x00AA, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB,\n    0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB,\n    0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB,\n    0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB,\n    0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB,\n    0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB,\n    0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB,\n    0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB,\n    0xFFDB, 0xFFDC, 0xFFDE, 0xFFE2, 0xFFF1, 0x0005, 0x0013, 0x001D,\n    0x001C, 0x001A, 0x0017, 0x0013, 0x000E, 0x0009, 0x0005, 0x0001,\n    0x0000, 0x3FFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0003, 0x0009, 0x000A, 0x0000, 0xFFE9,\n    0xFFC8, 0xFFA0, 0xFF72, 0xFF40, 0xFF0A, 0xFED2, 0xFE9B, 0xFE64,\n    0xFE30, 0xFDFF, 0xFDD4, 0xFDB0, 0xFD93, 0xFD81, 0xFD79, 0xFD7E,\n    0xFD90, 0xFDB1, 0xFDE4, 0xFE28, 0xFF08, 0x00C9, 0x0303, 0x054E,\n    0x0740, 0x0872, 0x087C, 0x044D, 0xFCC6, 0xF75C, 0xFE60, 0xFF02,\n    0xFF7B, 0xFFD1, 0x0007, 0x0025, 0x0030, 0x002D, 0x0021, 0x0012,\n    0x0005, 0x0000, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C,\n    0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C,\n    0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C,\n    0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C,\n    0xF97C, 0xF97C, 0xF97C, 0xF99C, 0xF9D1, 0xF9DC, 0xF97C, 0xF8CF,\n    0xF820, 0xF76E, 0xF6B9, 0xF601, 0xF547, 0xF489, 0xF3C8, 0xF304,\n    0xF23D, 0xF172, 0xF0A4, 0xEFD3, 0xEEFE, 0xEE26, 0xED49, 0xEC69,\n    0xEB85, 0xEA9E, 0xE9B2, 0xE8C2, 0xE77D, 0xE5BE, 0xE3C7, 0xE1DE,\n    0xE043, 0xDF3C, 0xDF0B, 0xE1DD, 0xE756, 0xEBE7, 0xEAC3, 0xEC0A,\n    0xED90, 0xEF3F, 0xF105, 0xF2CE, 0xF487, 0xF61B, 0xF778, 0xF889,\n    0xF93C, 0xF97C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xEDAB, 0xEDDE, 0xEDE9, 0xED8C, 0xECE2,\n    0xEC32, 0xEB7A, 0xEABD, 0xE9FB, 0xE935, 0xE86A, 0xE79D, 0xE6CD,\n    0xE5FC, 0xE52A, 0xE458, 0xE386, 0xE2B6, 0xE1E8, 0xE11C, 0xE054,\n    0xDF90, 0xDED0, 0xDE17, 0xDD63, 0xDC81, 0xDB63, 0xDA44, 0xD95D,\n    0xD8EA, 0xD925, 0xDA4A, 0xDFE6, 0xE8CC, 0xEE21, 0xDF53, 0xDF9D,\n    0xE07F, 0xE1D8, 0xE385, 0xE565, 0xE757, 0xE93A, 0xEAEB, 0xEC4B,\n    0xED36, 0xED8C, 0xCA4F, 0xC9D0, 0xC950, 0xCA4F, 0xCE21, 0xD372,\n    0xD7C1, 0xDAB3, 0xDD8C, 0xE03A, 0xE2AF, 0xE4D9, 0xE6A8, 0xE80D,\n    0xE8E8, 0xE93D, 0xE931, 0xE8E8, 0xE887, 0xE832, 0xE80D, 0xE80D,\n    0xE80D, 0xE80D, 0xE80D, 0xE80D, 0xE80D, 0xE80D, 0xE80D, 0xE80D,\n    0xE80D, 0xE80D, 0xE80D, 0xE80D, 0xE80D, 0xE80D, 0xE80D, 0xE80D,\n    0xE80D, 0xE80D, 0xE80D, 0xE80D, 0xE80D, 0xE80D, 0xE80D, 0xE80D,\n    0xE80D, 0xE80D, 0xE80D, 0xE80D, 0xE80D, 0xE80D, 0xE80D, 0xE80D,\n    0xE80D, 0xE80D, 0xE80D, 0xE80D, 0xE7C9, 0xE72A, 0xE674, 0xE5EB,\n    0xE5D4, 0xE674, 0xE80D, 0xED64, 0xF61B, 0xFDC9, 0x0000, 0xFD1D,\n    0xF8AB, 0xF30E, 0xECA7, 0xE5DB, 0xDF0C, 0xD89C, 0xD2EF, 0xCE66,\n    0xCB65, 0xCA4F, 0xCA38, 0xCC81, 0xCEC9, 0xCA38, 0xB678, 0x9BDE,\n    0x8C8F, 0x8B3E, 0x8DB2, 0x92A4, 0x98D1, 0x9EF4, 0xA3C8, 0xA608,\n    0xA581, 0xA341, 0x9FE9, 0x9C19, 0x9872, 0x9595, 0x9421, 0x94BC,\n    0x9706, 0x9A1A, 0x9D11, 0x9F07, 0x9F16, 0x9B1B, 0x93C1, 0x8C5B,\n    0x883A, 0x8F46, 0x96C9, 0x938A, 0x8D23, 0x8740, 0x858D, 0x875C,\n    0x8988, 0x8C0A, 0x8EDD, 0x91F9, 0x955A, 0x98F7, 0x9CCB, 0xA0D0,\n    0xA4FF, 0xA952, 0xADC3, 0xB24A, 0xB783, 0xBDCE, 0xC4CD, 0xCC21,\n    0xD36D, 0xDA53, 0xE074, 0xE574, 0xE913, 0xEB8C, 0xED3A, 0xEE74,\n    0xEF96, 0xF0F7, 0xF2F2, 0xF697, 0xFB05, 0xFFE9, 0x02D1, 0x02A7,\n    0x022F, 0x017B, 0x009B, 0xFFA0, 0xFE99, 0xFD99, 0xFCAF, 0xFBEB,\n    0xFB60, 0xFB1D, 0xC607, 0xC60B, 0xC60F, 0xC607, 0xC55A, 0xC4A2,\n    0xC5A2, 0xC8AF, 0xCCA6, 0xD114, 0xD587, 0xD98B, 0xDCAD, 0xDE7A,\n    0xDEA8, 0xDD84, 0xDB7E, 0xD909, 0xD695, 0xD494, 0xD378, 0xD374,\n    0xD435, 0xD55E, 0xD695, 0xD77D, 0xD7BB, 0xD6BA, 0xD4BA, 0xD2A3,\n    0xD15C, 0xD2B0, 0xD449, 0xD3C9, 0xD2B8, 0xD1A8, 0xD127, 0xD11D,\n    0xD113, 0xD10C, 0xD109, 0xD10F, 0xD120, 0xD13F, 0xD16E, 0xD1B1,\n    0xD20A, 0xD27C, 0xD30A, 0xD3B6, 0xD49B, 0xD5CA, 0xD739, 0xD8DC,\n    0xDAA9, 0xDC95, 0xDE97, 0xE0A2, 0xE301, 0xE5D8, 0xE8EA, 0xEBF5,\n    0xEEBB, 0xF0FB, 0xF278, 0xEE96, 0xE9CD, 0xECD0, 0xEF55, 0xED2F,\n    0xEA64, 0xE723, 0xE39D, 0xE000, 0xDC7B, 0xD940, 0xD67C, 0xD460,\n    0xD31B, 0xD2DC, 0xE105, 0xDEAC, 0xDC53, 0xE105, 0xF593, 0x112B,\n    0x2062, 0x204F, 0x1BF7, 0x14DB, 0x0C77, 0x044A, 0xFDD4, 0xFA90,\n    0xFAD1, 0xFD5C, 0x0162, 0x0614, 0x0AA3, 0x0E3E, 0x1016, 0x0F74,\n    0x0CDD, 0x0959, 0x05F0, 0x03A9, 0x038E, 0x0805, 0x104A, 0x18A0,\n    0x1D4A, 0x1575, 0x0D14, 0x1048, 0x16B9, 0x1D21, 0x2039, 0x206A,\n    0x204F, 0x1FF1, 0x1F54, 0x1E7F, 0x1D78, 0x1C46, 0x1AEF, 0x197A,\n    0x17EC, 0x164C, 0x14A1, 0x12F0, 0x1103, 0x0EAD, 0x0C03, 0x091A,\n    0x0608, 0x02E2, 0xFFBD, 0xFCAC, 0xF9BD, 0xF6DC, 0xF3F1, 0xF0E5,\n    0xED9F, 0xEA0A, 0xE60B, 0xDF38, 0xD69F, 0xCCE2, 0xC6F6, 0xC729,\n    0xC7F6, 0xC93C, 0xCADA, 0xCCAD, 0xCE95, 0xD06F, 0xD21B, 0xD376,\n    0xD45E, 0xD4B4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFE5,\n    0xFF9C, 0xFF33, 0xFEB8, 0xFE38, 0xFDC1, 0xFD61, 0xFD26, 0xFD1D,\n    0xFD53, 0xFDD8, 0xFEB8, 0x0000, 0x0248, 0x05D9, 0x0A4C, 0x0F3A,\n    0x143A, 0x18E7, 0x1CD9, 0x1FA9, 0x2160, 0x225E, 0x22B9, 0x228A,\n    0x21E8, 0x20EA, 0x1FA9, 0x1C01, 0x163D, 0x1215, 0x0FF4, 0x0DD0,\n    0x0BB2, 0x09A4, 0x07B0, 0x05E0, 0x043C, 0x02CF, 0x01A3, 0x00C0,\n    0x0031, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFF9,\n    0xFFE5, 0xFFC7, 0xFFA5, 0xFF82, 0xFF61, 0xFF46, 0xFF36, 0xFF33,\n    0xFF42, 0xFF67, 0xFFA5, 0x0000, 0x00A2, 0x01A0, 0x02DC, 0x043A,\n    0x059E, 0x06EA, 0x0803, 0x08CB, 0x093D, 0x0972, 0x0977, 0x095A,\n    0x092B, 0x08F6, 0x08CB, 0x0884, 0x0808, 0x0775, 0x06D1, 0x0617,\n    0x054D, 0x047B, 0x03A7, 0x02D9, 0x0217, 0x0169, 0x00D5, 0x0063,\n    0x001A, 0x0000, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549,\n    0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549,\n    0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549,\n    0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549,\n    0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF552,\n    0xF56A, 0xF58D, 0xF5B6, 0xF5E0, 0xF607, 0xF627, 0xF63A, 0xF63D,\n    0xF62B, 0xF5FF, 0xF5B6, 0xF549, 0xF489, 0xF35C, 0xF1E4, 0xF045,\n    0xEE9E, 0xED14, 0xEBC7, 0xEADA, 0xEA52, 0xEA14, 0xEA0E, 0xEA2F,\n    0xEA68, 0xEAA6, 0xEADA, 0xEB2E, 0xEBC0, 0xEC70, 0xED32, 0xEE0F,\n    0xEEFE, 0xEFF8, 0xF0F3, 0xF1E8, 0xF2CE, 0xF39C, 0xF44B, 0xF4D3,\n    0xF52A, 0xF549, 0xC7DD, 0xC7DD, 0xC7DD, 0xC7DD, 0xC759, 0xC6D5,\n    0xC7DD, 0xCAA8, 0xCE29, 0xD210, 0xD607, 0xD9BD, 0xDCDE, 0xDF17,\n    0xE058, 0xE0E9, 0xE0F1, 0xE09D, 0xE016, 0xDF85, 0xDF17, 0xDEA8,\n    0xDE08, 0xDD48, 0xDC7C, 0xDBB6, 0xDB07, 0xDA4D, 0xD987, 0xD8FE,\n    0xD8FA, 0xDAEE, 0xDD0D, 0xDD6F, 0xDD64, 0xDD2E, 0xDD0D, 0xDD14,\n    0xDD27, 0xDD42, 0xDD62, 0xDD83, 0xDDA1, 0xDDBA, 0xDDC9, 0xDDCC,\n    0xDDBD, 0xDD9B, 0xDD62, 0xDD0D, 0xDC91, 0xDBE7, 0xDB12, 0xDA15,\n    0xD8F5, 0xD7B6, 0xD65B, 0xD4E7, 0xD2DB, 0xD005, 0xCCDE, 0xC9E0,\n    0xC787, 0xC64A, 0xC6A5, 0xCE01, 0xDA92, 0xE1FA, 0xE282, 0xE196,\n    0xDF98, 0xDCE8, 0xD9E6, 0xD6F3, 0xD46E, 0xD1BB, 0xCE71, 0xCB3E,\n    0xC8D3, 0xC7DD, 0xFF43, 0xFF33, 0xFF24, 0xFF43, 0xFD80, 0xFBEB,\n    0x00E0, 0x0CEC, 0x1B9F, 0x2BE3, 0x3CA1, 0x4CC0, 0x5B29, 0x66C6,\n    0x6FC1, 0x7724, 0x7D1D, 0x81E2, 0x859C, 0x887E, 0x8ABB, 0x8B81,\n    0x8A5A, 0x87F8, 0x850E, 0x824E, 0x806C, 0x7EC0, 0x7D0B, 0x7C8C,\n    0x7E87, 0x8A78, 0x963C, 0x976C, 0x95C7, 0x9364, 0x925D, 0x928B,\n    0x9273, 0x922F, 0x91D8, 0x9189, 0x915C, 0x9168, 0x91CA, 0x9299,\n    0x93F0, 0x95E8, 0x989C, 0x9C24, 0xA19E, 0xA99B, 0xB362, 0xBE3B,\n    0xC96F, 0xD445, 0xDE06, 0xE5F8, 0xEBCE, 0xF016, 0xF362, 0xF645,\n    0xF953, 0xFD1E, 0x0239, 0x10BB, 0x223A, 0x2186, 0x0DE8, 0xF592,\n    0xD9B6, 0xBB84, 0x9C2F, 0x7CE6, 0x5EE0, 0x434C, 0x2B5A, 0x183E,\n    0x0B29, 0x054B, 0x2D41, 0x2D42, 0x2D43, 0x2D41, 0x2D51, 0x2D5D,\n    0x2D1D, 0x2C69, 0x2B66, 0x2A45, 0x2937, 0x286B, 0x2813, 0x285E,\n    0x29B9, 0x2C1B, 0x2F0B, 0x320A, 0x349F, 0x364C, 0x3695, 0x34C9,\n    0x311B, 0x2C6A, 0x2796, 0x237E, 0x2101, 0x2120, 0x235A, 0x2651,\n    0x28A7, 0x29D4, 0x2A5E, 0x2A88, 0x2A84, 0x2A6D, 0x2A60, 0x2A6A,\n    0x2A84, 0x2AAA, 0x2AD6, 0x2B04, 0x2B2E, 0x2B51, 0x2B66, 0x2B69,\n    0x2B55, 0x2B26, 0x2AD6, 0x2A60, 0x297C, 0x2809, 0x263A, 0x2445,\n    0x225D, 0x20B9, 0x1F8B, 0x1F09, 0x1F91, 0x2115, 0x232A, 0x2566,\n    0x275E, 0x28A6, 0x28D5, 0x26EB, 0x2437, 0x23BF, 0x2691, 0x2B01,\n    0x2FFB, 0x346B, 0x36C5, 0x37D0, 0x3888, 0x37F2, 0x3530, 0x3125,\n    0x2D79, 0x2BD6, 0x932C, 0x9357, 0x9383, 0x932C, 0x8FBE, 0x8BCE,\n    0x8E9C, 0x98CB, 0xA585, 0xB3CF, 0xC2B0, 0xD12B, 0xDE48, 0xE90B,\n    0xF1D8, 0xF9AE, 0x007C, 0x0636, 0x0ACA, 0x0E28, 0x1042, 0x0FE8,\n    0x0CC1, 0x07FC, 0x02C8, 0xFE55, 0xFBCF, 0xFBF8, 0xFE21, 0x0155,\n    0x04A2, 0x0962, 0x0DFA, 0x1082, 0x1298, 0x141A, 0x14E8, 0x1517,\n    0x14E4, 0x1468, 0x13BB, 0x12F5, 0x1230, 0x1184, 0x110A, 0x10D9,\n    0x110C, 0x11B9, 0x12FA, 0x14E8, 0x1792, 0x1B07, 0x1F5D, 0x24A8,\n    0x2B00, 0x3279, 0x3B28, 0x4524, 0x516D, 0x6061, 0x7122, 0x82D6,\n    0x9498, 0xA58E, 0xB4DB, 0xC665, 0xD52A, 0xD2F2, 0xC0E2, 0xAA60,\n    0x908C, 0x7483, 0x576E, 0x3A6A, 0x1E99, 0x051A, 0xEF11, 0xDD9C,\n    0xD1DD, 0xCCF6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0002, 0x0005,\n    0x0000, 0xFFF2, 0xFFDE, 0xFFC8, 0xFFB2, 0xFF9F, 0xFF92, 0xFF8D,\n    0xFF93, 0xFFA3, 0xFFB8, 0xFFD0, 0xFFE6, 0xFFF7, 0xFFFD, 0xFFF4,\n    0xFFDF, 0xFFC3, 0xFFA8, 0xFF94, 0xFF8D, 0xFF9F, 0xFFC6, 0xFFF3,\n    0x0013, 0x0019, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013,\n    0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013,\n    0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013,\n    0x0013, 0x0013, 0x0013, 0x0013, 0x0017, 0x0021, 0x002B, 0x0033,\n    0x0035, 0x002B, 0x0013, 0xFFE2, 0xFF92, 0xFF29, 0xFEAD, 0xFB7D,\n    0xFA5F, 0xFD75, 0x00D3, 0x007F, 0xFF71, 0x003F, 0x0045, 0x002D,\n    0x000F, 0x0000, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF2F, 0xFF2E,\n    0xFF30, 0xFF34, 0xFF3A, 0xFF41, 0xFF48, 0xFF4E, 0xFF52, 0xFF53,\n    0xFF51, 0xFF4C, 0xFF44, 0xFF3D, 0xFF36, 0xFF31, 0xFF30, 0xFF34,\n    0xFF3E, 0xFF49, 0xFF55, 0xFF5E, 0xFF61, 0xFF5B, 0xFF4D, 0xFF3D,\n    0xFF31, 0xFF2F, 0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31,\n    0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31,\n    0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31,\n    0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF33, 0xFF37, 0xFF3B, 0xFF3F,\n    0xFF3F, 0xFF3B, 0xFF31, 0xFF20, 0xFF04, 0xFED8, 0xFE96, 0xFCD6,\n    0xFC2E, 0xFC60, 0xFCD9, 0xFD15, 0xFD54, 0xFDD1, 0xFE3D, 0xFEB0,\n    0xFF0B, 0xFF30, 0xC9D8, 0xC9D8, 0xC9D8, 0xC9D8, 0xC94F, 0xC8C7,\n    0xC9D8, 0xCCF0, 0xD10D, 0xD5A4, 0xDA29, 0xDE12, 0xE0D4, 0xE1E3,\n    0xE095, 0xDD2D, 0xD884, 0xD372, 0xCED0, 0xCB77, 0xCA40, 0xCC48,\n    0xD121, 0xD757, 0xDD77, 0xE20B, 0xE39F, 0xDFB6, 0xD726, 0xCD76,\n    0xC62D, 0xC4F3, 0xC62D, 0xC62D, 0xC62D, 0xC62D, 0xC62D, 0xC62D,\n    0xC62D, 0xC62D, 0xC62D, 0xC62D, 0xC62D, 0xC62D, 0xC62D, 0xC62D,\n    0xC62D, 0xC62D, 0xC62D, 0xC62D, 0xC62D, 0xC62D, 0xC62D, 0xC62D,\n    0xC62D, 0xC62D, 0xC62D, 0xC62D, 0xC636, 0xC649, 0xC660, 0xC671,\n    0xC673, 0xC660, 0xC62D, 0xC62B, 0xC62D, 0xC572, 0xC338, 0xADE2,\n    0xA7EC, 0xA95D, 0xAE2F, 0xB2BA, 0xB7DA, 0xBD9D, 0xC18C, 0xC587,\n    0xC89C, 0xC9D8, 0x1E4A, 0x1E4A, 0x1E4A, 0x1E4A, 0x1DF8, 0x1DA7,\n    0x1E4A, 0x202B, 0x22B6, 0x258E, 0x2853, 0x2AA9, 0x2C30, 0x2C8C,\n    0x2B3E, 0x2870, 0x24BF, 0x20C9, 0x1D29, 0x1A7F, 0x1966, 0x1A5B,\n    0x1D00, 0x20AA, 0x24B0, 0x2868, 0x2B26, 0x2C9F, 0x2D42, 0x2D7F,\n    0x2DC5, 0x2DE1, 0x2DC5, 0x2DFD, 0x2E59, 0x2E6C, 0x2DC5, 0x2C68,\n    0x2AB6, 0x28CB, 0x26C3, 0x24B9, 0x22C9, 0x2111, 0x1FAA, 0x1EB2,\n    0x1E25, 0x1DE3, 0x1DDF, 0x1E07, 0x1E4F, 0x1EA6, 0x1EFD, 0x1F47,\n    0x1F73, 0x1F73, 0x1F37, 0x1EB2, 0x1D43, 0x1ABA, 0x17A9, 0x14A4,\n    0x1240, 0x1110, 0x11A8, 0x1513, 0x1BB6, 0x2532, 0x3126, 0x4AF7,\n    0x491E, 0x44C9, 0x3E78, 0x381B, 0x3185, 0x2BFA, 0x2741, 0x22D5,\n    0x1F90, 0x1E4A, 0x160A, 0x1561, 0x140E, 0x1310, 0x12F2, 0x1328,\n    0x1310, 0x129B, 0x1220, 0x1198, 0x10FE, 0x104C, 0x0F7C, 0x0E89,\n    0x0D42, 0x0BA0, 0x09D0, 0x0806, 0x0670, 0x0540, 0x04A6, 0x0507,\n    0x0654, 0x0815, 0x09D2, 0x0B13, 0x0B5E, 0x09C7, 0x069F, 0x034E,\n    0x013A, 0x030E, 0x056C, 0x04F5, 0x03C9, 0x0285, 0x01C2, 0x018D,\n    0x0181, 0x0190, 0x01AF, 0x01D1, 0x01E9, 0x01EC, 0x01CD, 0x017F,\n    0x00F8, 0x003F, 0xFF62, 0xFE6B, 0xFD67, 0xFC64, 0xFB6F, 0xFA92,\n    0xF9DC, 0xF959, 0xF916, 0xF91E, 0xF9D4, 0xFB5D, 0xFD6F, 0xFFC1,\n    0x0206, 0x03F7, 0x0548, 0x057D, 0x04BF, 0x03BB, 0x031D, 0x0B95,\n    0x1095, 0x0FB3, 0x0EF7, 0x140E, 0x1ACB, 0x1F19, 0x1F6F, 0x1DEE,\n    0x1BFE, 0x1B09, 0x1789, 0x1810, 0x191D, 0x19E7, 0x1A3B, 0x1A4C,\n    0x19E7, 0x190A, 0x17EA, 0x16A8, 0x1568, 0x144B, 0x1373, 0x1303,\n    0x1314, 0x1393, 0x1458, 0x153E, 0x161D, 0x16D0, 0x1730, 0x1725,\n    0x16CA, 0x1643, 0x15B7, 0x154B, 0x1525, 0x157D, 0x1638, 0x1706,\n    0x1792, 0x1763, 0x170A, 0x171B, 0x1744, 0x1771, 0x178B, 0x1794,\n    0x179B, 0x17A0, 0x17A3, 0x17A4, 0x17A3, 0x179F, 0x1798, 0x178F,\n    0x1787, 0x1783, 0x1782, 0x1781, 0x177F, 0x1779, 0x176F, 0x175D,\n    0x1743, 0x171F, 0x16EE, 0x16AF, 0x163C, 0x1586, 0x14AB, 0x13CC,\n    0x1309, 0x1281, 0x1254, 0x12C6, 0x13E0, 0x156B, 0x1732, 0x18E8,\n    0x17B9, 0x16FF, 0x16CB, 0x17CD, 0x192B, 0x196C, 0x17B4, 0x14F3,\n    0x1265, 0x1144, 0xA1EF, 0xA0C7, 0x9E76, 0x9CB9, 0x9B6F, 0x9AB8,\n    0x9CB9, 0xA1CC, 0xA85C, 0xAFAB, 0xB6FB, 0xBD8E, 0xC2A6, 0xC585,\n    0xC59B, 0xC362, 0xBFA8, 0xBB3C, 0xB6ED, 0xB389, 0xB1DF, 0xB29A,\n    0xB534, 0xB8AF, 0xBC12, 0xBE5F, 0xBE9C, 0xB84D, 0xAD9B, 0xA74A,\n    0xA64E, 0xA75F, 0xA876, 0xA8D9, 0xA957, 0xA9CB, 0xAA1E, 0xAA86,\n    0xAB00, 0xAB81, 0xABF9, 0xAC5D, 0xAC9F, 0xACB1, 0xAC86, 0xAC11,\n    0xAB6F, 0xAAC2, 0xAA05, 0xA931, 0xA840, 0xA72E, 0xA5F2, 0xA489,\n    0xA2EB, 0xA113, 0x9EFB, 0x9C9D, 0x9963, 0x9505, 0x8FE9, 0x8A7B,\n    0x8521, 0x8047, 0x7C51, 0x79AB, 0x783A, 0x77A9, 0x77A4, 0x8A66,\n    0x946C, 0x986B, 0x9AB5, 0x9F8D, 0xA4CB, 0xA89E, 0xAA99, 0xABB2,\n    0xAC2A, 0xAC44, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x000F, 0x0036, 0x0066, 0x0092,\n    0x00AB, 0x00A4, 0x006F, 0x0000, 0xFF2F, 0xFDFA, 0xFC88, 0xFB01,\n    0xF98B, 0xF84F, 0xF772, 0xF86B, 0xFA6A, 0xFBB8, 0xF904, 0xF925,\n    0xF69D, 0xF730, 0xF864, 0xF97F, 0xFAA4, 0xFBE5, 0xFD50, 0xFEA3,\n    0xFF9E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF,\n    0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0009, 0x001F, 0x0037, 0x004B,\n    0x0051, 0x0042, 0x0015, 0xFF2C, 0xFDCE, 0xFCA1, 0xFB71, 0xFB65,\n    0xFBE9, 0xFCA9, 0xFD72, 0xFE4A, 0xFEF0, 0xFF48, 0xFF93, 0xFFCD,\n    0xFFF3, 0x0000, 0xBF40, 0xBF40, 0xBF40, 0xBF40, 0xBEA3, 0xBE05,\n    0xBF40, 0xC2CD, 0xC780, 0xCCBE, 0xD1EB, 0xD66B, 0xD9A2, 0xDAF5,\n    0xD9AF, 0xD620, 0xD12F, 0xCBC4, 0xC6C6, 0xC31E, 0xC1B2, 0xC337,\n    0xC71F, 0xCC6E, 0xD229, 0xD755, 0xDAF5, 0xDC60, 0xDC38, 0xDB6E,\n    0xDAF5, 0xDAF5, 0xDAF5, 0xDAF1, 0xDAEC, 0xDAEA, 0xDAF5, 0xDB09,\n    0xDB1F, 0xDB38, 0xDB52, 0xDB6D, 0xDB89, 0xDBA5, 0xDBC0, 0xDBDA,\n    0xDBF3, 0xDC09, 0xDC1D, 0xDC2E, 0xDC5D, 0xDCB9, 0xDD25, 0xDD84,\n    0xDDB7, 0xDDA3, 0xDD2A, 0xDC2E, 0xDAA9, 0xD8B0, 0xD649, 0xD37D,\n    0xD053, 0xCCD3, 0xC905, 0xC1DA, 0xB8A8, 0xB108, 0xA99B, 0xA759,\n    0xAA1C, 0xADEC, 0xB217, 0xB744, 0xBB3D, 0xBCDC, 0xBE01, 0xBEBE,\n    0xBF22, 0xBF40, 0x2537, 0x2584, 0x25D1, 0x2537, 0x22AE, 0x1F3D,\n    0x1D11, 0x1CA3, 0x1CCE, 0x1D4B, 0x1DD6, 0x1E28, 0x1DFE, 0x1D11,\n    0x1B05, 0x17FA, 0x1462, 0x10B0, 0x0D59, 0x0ACD, 0x0982, 0x09DA,\n    0x0B96, 0x0E35, 0x1134, 0x1413, 0x1650, 0x17E3, 0x1927, 0x1A2D,\n    0x1B07, 0x1B3A, 0x1B07, 0x1B18, 0x1B35, 0x1B3B, 0x1B07, 0x1AA4,\n    0x1A33, 0x19B8, 0x1935, 0x18AD, 0x1822, 0x1797, 0x170F, 0x168C,\n    0x1611, 0x15A1, 0x153E, 0x14EB, 0x142F, 0x12D7, 0x114C, 0x0FF7,\n    0x0F40, 0x0F90, 0x1151, 0x14EB, 0x1B55, 0x2497, 0x2FB4, 0x3BAD,\n    0x4785, 0x523E, 0x5ADB, 0x5B2C, 0x55F2, 0x50DE, 0x4B62, 0x43B0,\n    0x3C1B, 0x3671, 0x3163, 0x2C34, 0x2896, 0x271F, 0x2626, 0x2591,\n    0x2549, 0x2537, 0xEA49, 0xEA72, 0xEAD6, 0xEB55, 0xEBB3, 0xEC2C,\n    0xED57, 0xEF50, 0xF1AB, 0xF438, 0xF6C4, 0xF91E, 0xFB13, 0xFC72,\n    0xFD4A, 0xFDCF, 0xFDFF, 0xFDDC, 0xFD66, 0xFC9C, 0xFB80, 0xF9C6,\n    0xF752, 0xF46E, 0xF160, 0xEE74, 0xEBF1, 0xE9EE, 0xE83F, 0xE6C6,\n    0xE563, 0xE42E, 0xE3A9, 0xE3DC, 0xE457, 0xE4E9, 0xE563, 0xE5C0,\n    0xE61C, 0xE676, 0xE6CE, 0xE725, 0xE77A, 0xE7CE, 0xE81F, 0xE870,\n    0xE89A, 0xE8A6, 0xE8D5, 0xE969, 0xEA3F, 0xEB11, 0xEBED, 0xECE2,\n    0xEDFD, 0xEF4D, 0xF0E0, 0xF2C4, 0xF551, 0xF89C, 0xFC4F, 0x0013,\n    0x0393, 0x0678, 0x086D, 0x0755, 0x0390, 0x0084, 0x0230, 0xFB51,\n    0xF751, 0xF28A, 0xEDB2, 0xE8B2, 0xE373, 0xDEDB, 0xDBCF, 0xD90E,\n    0xD70F, 0xD64A, 0xF263, 0xF21E, 0xF17D, 0xF0C4, 0xEF6C, 0xEDFB,\n    0xEE4E, 0xF0A7, 0xF3CE, 0xF766, 0xFB14, 0xFE7D, 0x0142, 0x030B,\n    0x03AF, 0x0370, 0x0296, 0x0169, 0x002F, 0xFF32, 0xFEB5, 0xFF02,\n    0xFFE7, 0x00FC, 0x01D9, 0x0213, 0x0143, 0xFE28, 0xF902, 0xF3AB,\n    0xEFFC, 0xF155, 0xF3CE, 0xF355, 0xF239, 0xF0F4, 0xEFFC, 0xEF57,\n    0xEEBC, 0xEE28, 0xED9C, 0xED17, 0xEC97, 0xEC1E, 0xEBAA, 0xEB3A,\n    0xEAF8, 0xEAE6, 0xEACA, 0xEA68, 0xE994, 0xE868, 0xE711, 0xE5BC,\n    0xE498, 0xE3D1, 0xE395, 0xE411, 0xE595, 0xE818, 0xEB46, 0xEEC8,\n    0xF24A, 0xF575, 0xF7F5, 0xF8F6, 0xF8BC, 0xF891, 0xF91C, 0xFA4D,\n    0xFBCB, 0xFA32, 0xF82E, 0xF5F0, 0xF3A7, 0xF130, 0xEF71, 0xEDDB,\n    0xECB3, 0xEC41, 0x8A9E, 0x8A23, 0x88FC, 0x879A, 0x83D8, 0x7FD9,\n    0x8280, 0x8CFD, 0x9AE1, 0xAA89, 0xBA51, 0xC896, 0xD3B4, 0xDA07,\n    0xDA70, 0xD602, 0xCE6A, 0xC556, 0xBC70, 0xB567, 0xB1E6, 0xB2DE,\n    0xB720, 0xBD27, 0xC370, 0xC876, 0xCAB5, 0xC890, 0xC2EE, 0xBC10,\n    0xB635, 0xB2D8, 0xB1BE, 0xB2F8, 0xB579, 0xB7F5, 0xB91E, 0xB904,\n    0xB89F, 0xB7FD, 0xB72F, 0xB644, 0xB54B, 0xB454, 0xB36D, 0xB2A7,\n    0xB22A, 0xB1D3, 0xB146, 0xB022, 0xAEB1, 0xAD64, 0xAC13, 0xAA98,\n    0xA8CA, 0xA684, 0xA39E, 0x9FF1, 0x9AA8, 0x9393, 0x8B88, 0x835C,\n    0x7BE3, 0x75F6, 0x7269, 0x75EE, 0x8053, 0x8B10, 0x955F, 0x9BC4,\n    0xA0BF, 0xA3F4, 0xA6E2, 0xA9C9, 0xACE7, 0xAFE8, 0xB1EF, 0xB3C6,\n    0xB51B, 0xB59E, 0x8001, 0x8001, 0x4171, 0x4171, 0x4171, 0x4171,\n    0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171,\n    0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171,\n    0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171,\n    0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x415F, 0x4143, 0x413D,\n    0x4171, 0x41D4, 0x4245, 0x42C0, 0x4343, 0x43CB, 0x4456, 0x44E1,\n    0x4569, 0x45EC, 0x4666, 0x46D7, 0x473A, 0x478D, 0x47C6, 0x47E1,\n    0x47E4, 0x47D8, 0x47C2, 0x47A9, 0x4795, 0x478D, 0x4790, 0x4797,\n    0x479F, 0x47A4, 0x47A5, 0x479F, 0x478D, 0x475C, 0x4706, 0x46A0,\n    0x462E, 0x45AC, 0x4520, 0x448E, 0x43FB, 0x436C, 0x42E5, 0x426C,\n    0x4205, 0x41B6, 0x4183, 0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171,\n    0xBF5F, 0xC018, 0xC0D2, 0xBF5F, 0xB8DA, 0xB029, 0xABD1, 0xACDB,\n    0xAF8D, 0xB341, 0xB755, 0xBB23, 0xBE08, 0xBF5F, 0xBED1, 0xBCD2,\n    0xB9F1, 0xB6BC, 0xB3C1, 0xB18F, 0xB0B4, 0xB196, 0xB3DB, 0xB6F0,\n    0xBA44, 0xBD44, 0xBF5F, 0xC032, 0xC01B, 0xBFA5, 0xBF5F, 0xBF5F,\n    0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F,\n    0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F,\n    0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F,\n    0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F,\n    0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F,\n    0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F,\n    0xFF66, 0x0E89, 0x071E, 0xFE99, 0xFE5F, 0x0095, 0x021F, 0x01D0,\n    0x00F0, 0x0010, 0xFFC3, 0x00B4, 0x0253, 0x034B, 0x034F, 0x030A,\n    0x029A, 0x0222, 0x01C2, 0x019A, 0x01CB, 0x0270, 0x0376, 0x04BA,\n    0x0618, 0x076E, 0x0896, 0x0993, 0x0A7D, 0x0B4E, 0x0C04, 0x0C6F,\n    0x0C7D, 0x0C77, 0x0C6A, 0x0C30, 0x0BA5, 0x0AD1, 0x09DD, 0x08D2,\n    0x07B9, 0x069C, 0x0584, 0x0478, 0x0383, 0x02AE, 0x01F5, 0x014D,\n    0x00B4, 0x0029, 0xFFAB, 0xFF34, 0xFEC6, 0xFE5C, 0xFDF7, 0xFDCC,\n    0xFDE4, 0xFDF7, 0xFDE9, 0xFDD5, 0xFDBE, 0xFDA9, 0xFD9B, 0xFD98,\n    0xFDA4, 0xFE05, 0xFEAB, 0xFF1E, 0xFEE7, 0xFBF4, 0xF968, 0xF9B7,\n    0xFA5C, 0xFB40, 0xFC48, 0xFD5A, 0xFE5C, 0xFF34, 0xFFC9, 0x0000,\n    0xF0B7, 0xF828, 0xF4D4, 0xF0C3, 0xEFE8, 0xF00C, 0xF0D8, 0xF22F,\n    0xF3FC, 0xF5F9, 0xF7E3, 0xF9FD, 0xFC1B, 0xFD4E, 0xFD93, 0xFD92,\n    0xFD60, 0xFD10, 0xFCB3, 0xFC5F, 0xFC24, 0xFC07, 0xFBF6, 0xFBE6,\n    0xFBCE, 0xFBA2, 0xFB59, 0xFAC7, 0xF9F2, 0xF921, 0xF895, 0xF8F3,\n    0xF96D, 0xF92C, 0xF8B8, 0xF844, 0xF800, 0xF7EA, 0xF7DF, 0xF7DC,\n    0xF7E0, 0xF7E7, 0xF7F0, 0xF7F9, 0xF7FF, 0xF800, 0xF7FC, 0xF7F8,\n    0xF7F2, 0xF7ED, 0xF7E6, 0xF7E0, 0xF7DA, 0xF7D5, 0xF7D0, 0xF79E,\n    0xF76F, 0xF7D0, 0xF896, 0xF94C, 0xFA11, 0xFB07, 0xFC4D, 0xFE05,\n    0x004E, 0x04DE, 0x0B8B, 0x11AC, 0x1495, 0x0C3F, 0x02C4, 0x0132,\n    0x0027, 0xFF8F, 0xFF4E, 0xFF4F, 0xFF79, 0xFFB4, 0xFFE9, 0x0000,\n    0x17B1, 0xEB78, 0xE93C, 0xE954, 0xEB40, 0xEE80, 0xF293, 0xF6F9,\n    0xFB34, 0x05F1, 0x0F3A, 0x0BCF, 0x046A, 0x0087, 0x01C6, 0x0468,\n    0x07DE, 0x0B9B, 0x0F0F, 0x11AB, 0x12E3, 0x11F4, 0x0F26, 0x0B73,\n    0x07D8, 0x0551, 0x04D8, 0x0965, 0x11FA, 0x199F, 0x1A96, 0x15DF,\n    0x149F, 0x13F1, 0x1387, 0x1353, 0x1346, 0x134E, 0x1365, 0x138A,\n    0x13BF, 0x1404, 0x145C, 0x14C6, 0x1545, 0x15D9, 0x168F, 0x176A,\n    0x1861, 0x196A, 0x1A79, 0x1B85, 0x1C85, 0x1D6C, 0x1E33, 0x1EF8,\n    0x1F46, 0x1E33, 0x1BAC, 0x1876, 0x14E3, 0x1146, 0x0DF2, 0x0B3B,\n    0x0973, 0x0A8B, 0x0E32, 0x1159, 0x10F2, 0x0345, 0xF644, 0xF500,\n    0xF4C7, 0xF55C, 0xF682, 0xF7FC, 0xF98D, 0xFAF7, 0xFBFD, 0xFC62,\n    0x011C, 0x0233, 0x0435, 0x0542, 0x0417, 0x01F6, 0x00CA, 0x00F9,\n    0x0186, 0x024C, 0x0327, 0x03F1, 0x0485, 0x04BF, 0x048C, 0x0408,\n    0x0350, 0x0283, 0x01BF, 0x0122, 0x00CA, 0x00C2, 0x00F2, 0x014A,\n    0x01B7, 0x0228, 0x028B, 0x02F0, 0x0365, 0x03D4, 0x042D, 0x043E,\n    0x042D, 0x042C, 0x042C, 0x042C, 0x042D, 0x0432, 0x043D, 0x044C,\n    0x045E, 0x0471, 0x0482, 0x0491, 0x049A, 0x049E, 0x0499, 0x048B,\n    0x0471, 0x0449, 0x03F8, 0x0370, 0x02C6, 0x020F, 0x0160, 0x00CF,\n    0x006F, 0x0057, 0x0080, 0x00D8, 0x015E, 0x0215, 0x02FB, 0x0413,\n    0x055C, 0x0954, 0x0CC9, 0x0A7C, 0x06CD, 0x0487, 0x0326, 0x028E,\n    0x0206, 0x018C, 0x0122, 0x00C7, 0x007C, 0x0042, 0x0018, 0x0000,\n    0xF994, 0xF9B1, 0xF9D9, 0xF9C6, 0xF92C, 0xF858, 0xF7E7, 0xF7F4,\n    0xF827, 0xF871, 0xF8C4, 0xF911, 0xF94A, 0xF960, 0xF954, 0xF934,\n    0xF902, 0xF8C4, 0xF87E, 0xF832, 0xF7E7, 0xF794, 0xF736, 0xF6CF,\n    0xF664, 0xF5FA, 0xF594, 0xF52D, 0xF4C2, 0xF460, 0xF412, 0xF402,\n    0xF412, 0xF403, 0xF3EA, 0xF3E5, 0xF412, 0xF46A, 0xF4D0, 0xF540,\n    0xF5B7, 0xF634, 0xF6B2, 0xF72F, 0xF7A9, 0xF81C, 0xF885, 0xF8E3,\n    0xF930, 0xF96C, 0xF98D, 0xF98E, 0xF975, 0xF947, 0xF90A, 0xF8C2,\n    0xF876, 0xF82B, 0xF7DE, 0xF789, 0xF72B, 0xF6C0, 0xF646, 0xF5BA,\n    0xF51B, 0xF394, 0xF22E, 0xF262, 0xF380, 0xF5C1, 0xF7DE, 0xF90D,\n    0xFA4C, 0xFB8C, 0xFCBF, 0xFDD6, 0xFEC3, 0xFF78, 0xFFE7, 0x0000,\n    0x10FB, 0x0B03, 0xFFFE, 0xFA3F, 0x00BE, 0x0C85, 0x1303, 0x1210,\n    0x0F16, 0x0AE0, 0x0638, 0x01EA, 0xFEC1, 0xFD86, 0xFE99, 0x0165,\n    0x0549, 0x09A1, 0x0DCA, 0x1121, 0x1303, 0x133B, 0x1240, 0x1070,\n    0x0E2D, 0x0BD4, 0x09C5, 0x07AE, 0x0545, 0x02F2, 0x011F, 0x00C2,\n    0x011F, 0x011F, 0x0121, 0x0121, 0x011F, 0x0107, 0x00D0, 0x0082,\n    0x0027, 0xFFCA, 0xFF71, 0xFF29, 0xFEFA, 0xFEEE, 0xFF0F, 0xFF65,\n    0xFFFC, 0x00DB, 0x0298, 0x0576, 0x090A, 0x0CE7, 0x10A1, 0x13CC,\n    0x15FB, 0x16C3, 0x15D4, 0x136C, 0x0FF8, 0x0BDF, 0x078E, 0x036E,\n    0xFFEA, 0xFC6F, 0xFB16, 0xFEF5, 0x04B4, 0x0AFA, 0x0EF0, 0x0EFB,\n    0x0E81, 0x0DA8, 0x0C92, 0x0B64, 0x0A41, 0x094E, 0x08AD, 0x0884,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xFFFF, 0xFFFB, 0xFFF7, 0xFFF4, 0xFFF4, 0xFFF7,\n    0x0000, 0x0014, 0x0036, 0x005E, 0x0089, 0x00D0, 0x00FB, 0x00E8,\n    0x00CC, 0x00A9, 0x0083, 0x005C, 0x0038, 0x001B, 0x0007, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFA, 0xFFF3,\n    0xFFEA, 0xFFDF, 0xFFD3, 0xFFC7, 0xFFBA, 0xFFAE, 0xFFA4, 0xFF9A,\n    0xFF93, 0xFF8E, 0xFF8D, 0xFF8E, 0xFF94, 0xFF9F, 0xFFAE, 0xFFC4,\n    0xFFDF, 0x0000, 0x0057, 0x00FB, 0x01CB, 0x02A3, 0x0364, 0x03E9,\n    0x0413, 0x0330, 0x0161, 0xFFBA, 0xFF4C, 0x036D, 0x0751, 0x071E,\n    0x0678, 0x0581, 0x0458, 0x031D, 0x01F0, 0x00F2, 0x0041, 0x0000,\n    0x3400, 0x31EB, 0x2CC1, 0x2625, 0x1D43, 0x12EE, 0x0B42, 0x068A,\n    0x0254, 0xFE9C, 0xFB5E, 0xF89A, 0xF64C, 0xF472, 0xF330, 0xF294,\n    0xF27C, 0xF2C3, 0xF346, 0xF3E2, 0xF472, 0xF51D, 0xF610, 0xF735,\n    0xF873, 0xF9B4, 0xFAE0, 0xFC10, 0xFD54, 0xFE82, 0xFF72, 0xFFA3,\n    0xFF72, 0xFF4C, 0xFF0C, 0xFEFF, 0xFF72, 0x0034, 0x00E5, 0x018A,\n    0x0224, 0x02B7, 0x0347, 0x03D7, 0x046C, 0x0507, 0x05AD, 0x0661,\n    0x0726, 0x0801, 0x08F4, 0x0A03, 0x0B31, 0x0C82, 0x0DF9, 0x0F9A,\n    0x1169, 0x1368, 0x1687, 0x1B59, 0x2154, 0x27EF, 0x2E9F, 0x34DC,\n    0x3A1C, 0x3DF2, 0x40BC, 0x431F, 0x45C0, 0x49B5, 0x4BF2, 0x4B30,\n    0x49F4, 0x4864, 0x46A7, 0x44E3, 0x4341, 0x41E5, 0x40F9, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_03.inc.c",
    "content": "static const struct Animation anim_03[] = {\n    1,\n    189,\n    0,\n    0,\n    0x40,\n    ANIMINDEX_NUMPARTS(anim_03_indices),\n    anim_03_values,\n    anim_03_indices,\n    0,\n};\n\n\nstatic const u16 anim_03_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0040, 0x084A,\n    0x0040, 0x078A, 0x0040, 0x07CA, 0x0040, 0x080A,\n    0x0040, 0x06CA, 0x0040, 0x070A, 0x0040, 0x074A,\n    0x0001, 0x06C6, 0x0001, 0x06C7, 0x0001, 0x06C8,\n    0x0040, 0x0103, 0x0040, 0x0143, 0x0040, 0x0183,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0040, 0x00C3,\n    0x0040, 0x0003, 0x0040, 0x0043, 0x0040, 0x0083,\n    0x0001, 0x0683, 0x0001, 0x0684, 0x0040, 0x0685,\n    0x0040, 0x02C3, 0x0040, 0x0303, 0x0040, 0x0343,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0040, 0x0283,\n    0x0040, 0x01C3, 0x0040, 0x0203, 0x0040, 0x0243,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x06C5,\n    0x0040, 0x05C3, 0x0040, 0x0603, 0x0040, 0x0643,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0040, 0x0583,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0040, 0x0543,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x06C9,\n    0x0040, 0x0483, 0x0040, 0x04C3, 0x0040, 0x0503,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0040, 0x0443,\n    0x0040, 0x0383, 0x0040, 0x03C3, 0x0040, 0x0403,\n};\n\nstatic const s16 anim_03_values[] = {\n    0x0000, 0x004D, 0x3FFF, 0xFF2D, 0xFF29, 0xFF26, 0xFF23, 0xFF22,\n    0xFF21, 0xFF20, 0xFF20, 0xFF20, 0xFF21, 0xFF23, 0xFF24, 0xFF26,\n    0xFF29, 0xFF2B, 0xFF2E, 0xFF31, 0xFF35, 0xFF38, 0xFF3C, 0xFF3F,\n    0xFF43, 0xFF46, 0xFF4A, 0xFF4D, 0xFF50, 0xFF54, 0xFF56, 0xFF59,\n    0xFF5C, 0xFF5E, 0xFF60, 0xFF61, 0xFF62, 0xFF62, 0xFF63, 0xFF63,\n    0xFF64, 0xFF64, 0xFF65, 0xFF65, 0xFF65, 0xFF66, 0xFF66, 0xFF66,\n    0xFF66, 0xFF66, 0xFF66, 0xFF66, 0xFF66, 0xFF66, 0xFF66, 0xFF66,\n    0xFF66, 0xFF66, 0xFF66, 0xFF66, 0xFF66, 0xFF66, 0xFF66, 0xFF66,\n    0xFF66, 0xFF66, 0xFF66, 0xF5E6, 0xF5CF, 0xF5BA, 0xF5A8, 0xF598,\n    0xF58B, 0xF580, 0xF577, 0xF570, 0xF56B, 0xF568, 0xF566, 0xF565,\n    0xF566, 0xF568, 0xF56B, 0xF56F, 0xF573, 0xF578, 0xF57E, 0xF584,\n    0xF58A, 0xF590, 0xF596, 0xF59C, 0xF5A1, 0xF5A6, 0xF5AA, 0xF5AE,\n    0xF5B1, 0xF5B2, 0xF5B3, 0xF5A5, 0xF5E2, 0xF68A, 0xF74A, 0xF81B,\n    0xF8F4, 0xF9CD, 0xFA9C, 0xFB59, 0xFBFC, 0xFC7B, 0xFCCF, 0xFD05,\n    0xFD2F, 0xFD4F, 0xFD67, 0xFD75, 0xFD7D, 0xFD7E, 0xFD79, 0xFD70,\n    0xFD63, 0xFD53, 0xFD41, 0xFD2D, 0xFD1A, 0xFD07, 0xFCF5, 0xFCE6,\n    0xFCDA, 0xFCD2, 0xFCCF, 0xE925, 0xE905, 0xE8E7, 0xE8CD, 0xE8B6,\n    0xE8A2, 0xE891, 0xE882, 0xE876, 0xE86B, 0xE863, 0xE85C, 0xE857,\n    0xE854, 0xE852, 0xE851, 0xE851, 0xE852, 0xE853, 0xE855, 0xE858,\n    0xE85A, 0xE85C, 0xE85E, 0xE860, 0xE861, 0xE862, 0xE862, 0xE860,\n    0xE85D, 0xE859, 0xE854, 0xE850, 0xE84E, 0xE84B, 0xE848, 0xE845,\n    0xE841, 0xE83E, 0xE83B, 0xE838, 0xE836, 0xE834, 0xE833, 0xE832,\n    0xE831, 0xE831, 0xE831, 0xE830, 0xE830, 0xE830, 0xE830, 0xE830,\n    0xE831, 0xE831, 0xE831, 0xE831, 0xE832, 0xE832, 0xE832, 0xE833,\n    0xE833, 0xE833, 0xE833, 0xE7C8, 0xE72D, 0xE68D, 0xE5E9, 0xE541,\n    0xE494, 0xE3E3, 0xE32F, 0xE278, 0xE1BE, 0xE101, 0xE041, 0xDF7F,\n    0xDEBB, 0xDDF6, 0xDD2F, 0xDC67, 0xDB9E, 0xDAD5, 0xDA0B, 0xD941,\n    0xD878, 0xD7AF, 0xD6E6, 0xD61F, 0xD559, 0xD494, 0xD3D1, 0xD311,\n    0xD252, 0xD196, 0xD0DE, 0xD058, 0xD026, 0xD011, 0xCFF4, 0xCFD3,\n    0xCFB3, 0xCF9A, 0xCF8C, 0xCF8E, 0xCFA5, 0xCFD6, 0xD026, 0xD093,\n    0xD116, 0xD1AB, 0xD24F, 0xD300, 0xD3BB, 0xD47D, 0xD543, 0xD609,\n    0xD6CE, 0xD78E, 0xD846, 0xD8F3, 0xD993, 0xDA22, 0xDA9D, 0xDB03,\n    0xDB4F, 0xDB7E, 0xDB8F, 0x9A50, 0xBB2E, 0xD8ED, 0xDAE1, 0xDC91,\n    0xDE02, 0xDF37, 0xE033, 0xE0FB, 0xE191, 0xE1FB, 0xE23A, 0xE254,\n    0xE24B, 0xE223, 0xE1E1, 0xE187, 0xE119, 0xE09C, 0xE012, 0xDF7F,\n    0xDEE8, 0xDE4F, 0xDDB8, 0xDD28, 0xDCA1, 0xDC28, 0xDBBF, 0xDB6C,\n    0xDB31, 0xDB11, 0xDB12, 0xDB0C, 0xDB10, 0xDB1D, 0xDB04, 0xDAD7,\n    0xDAA6, 0xDA81, 0xDA7A, 0xDAA0, 0xDB05, 0xDBB9, 0xDCCC, 0xDE39,\n    0xDFE8, 0xE1D0, 0xE3E8, 0xE627, 0xE883, 0xEAF4, 0xED70, 0xEFED,\n    0xF264, 0xF4CA, 0xF716, 0xF940, 0xFB3E, 0xFD06, 0xFE90, 0xFFD3,\n    0x00C3, 0x015B, 0x0190, 0xD17B, 0xD245, 0xD358, 0xD423, 0xD4F0,\n    0xD5BC, 0xD689, 0xD756, 0xD823, 0xD8F1, 0xD9BE, 0xDA8C, 0xDB59,\n    0xDC26, 0xDCF3, 0xDDBF, 0xDE8B, 0xDF57, 0xE022, 0xE0EC, 0xE1B6,\n    0xE27F, 0xE346, 0xE40D, 0xE4D3, 0xE598, 0xE65B, 0xE71E, 0xE7DF,\n    0xE89E, 0xE95C, 0xEA18, 0xEAD7, 0xEA0D, 0xE77A, 0xE480, 0xE142,\n    0xDDE1, 0xDA7E, 0xD73C, 0xD43D, 0xD1A1, 0xCF8C, 0xCE1F, 0xCD24,\n    0xCC4E, 0xCB9B, 0xCB07, 0xCA91, 0xCA35, 0xC9F1, 0xC9C3, 0xC9A7,\n    0xC99C, 0xC99E, 0xC9AA, 0xC9C0, 0xC9DA, 0xC9F8, 0xCA17, 0xCA33,\n    0xCA4A, 0xCA5A, 0xCA60, 0x1BD0, 0x1AB9, 0x1986, 0x18A2, 0x17BE,\n    0x16DA, 0x15F6, 0x1511, 0x142D, 0x1348, 0x1263, 0x117F, 0x109B,\n    0x0FB7, 0x0ED4, 0x0DF1, 0x0D0F, 0x0C2D, 0x0B4D, 0x0A6D, 0x098E,\n    0x08B0, 0x07D3, 0x06F7, 0x061C, 0x0543, 0x046B, 0x0395, 0x02C0,\n    0x01EC, 0x011B, 0x004B, 0xFF70, 0x007C, 0x03F8, 0x0834, 0x0CEB,\n    0x11D7, 0x16B3, 0x1B39, 0x1F22, 0x2229, 0x2409, 0x247B, 0x23D2,\n    0x2297, 0x20DD, 0x1EB4, 0x1C2B, 0x1954, 0x1640, 0x12FE, 0x0FA0,\n    0x0C36, 0x08D0, 0x0580, 0x0255, 0xFF62, 0xFCB4, 0xFA5E, 0xF870,\n    0xF6FB, 0xF60E, 0xF5BC, 0xFDE7, 0xFDA4, 0xFD62, 0xFD1F, 0xFCDB,\n    0xFC97, 0xFC52, 0xFC0E, 0xFBC9, 0xFB84, 0xFB3E, 0xFAF9, 0xFAB4,\n    0xFA6F, 0xFA2A, 0xF9E6, 0xF9A1, 0xF95D, 0xF91A, 0xF8D7, 0xF894,\n    0xF852, 0xF811, 0xF7D1, 0xF791, 0xF752, 0xF715, 0xF6D8, 0xF69C,\n    0xF661, 0xF628, 0xF5F0, 0xF5B9, 0xF591, 0xF57F, 0xF57F, 0xF589,\n    0xF597, 0xF5A3, 0xF5A7, 0xF5A4, 0xF5A1, 0xF59E, 0xF59B, 0xF598,\n    0xF594, 0xF591, 0xF591, 0xF591, 0xF591, 0xF591, 0xF591, 0xF591,\n    0xF591, 0xF591, 0xF591, 0xF591, 0xF591, 0xF591, 0xF591, 0xF591,\n    0xF591, 0xF591, 0xF591, 0xFF6B, 0xFFCB, 0x0035, 0x00AB, 0x012A,\n    0x01B0, 0x023F, 0x02D3, 0x036D, 0x040B, 0x04AC, 0x0550, 0x05F5,\n    0x069A, 0x073F, 0x07E2, 0x0883, 0x0920, 0x09B9, 0x0A4C, 0x0AD9,\n    0x0B5F, 0x0BDC, 0x0C4F, 0x0CB9, 0x0D16, 0x0D68, 0x0DAC, 0x0DE2,\n    0x0E09, 0x0E1F, 0x0E24, 0x0E17, 0x0D27, 0x0AD7, 0x07A7, 0x0414,\n    0x009E, 0xFDC3, 0xFC01, 0xFB5E, 0xFB6D, 0xFBFC, 0xFCDB, 0xFDDB,\n    0xFECB, 0xFF7A, 0xFF7A, 0xFF7A, 0xFF7A, 0xFF7A, 0xFF7A, 0xFF7A,\n    0xFF7A, 0xFF7A, 0xFF7A, 0xFF7A, 0xFF7A, 0xFF7A, 0xFF7A, 0xFF7A,\n    0xFF7A, 0xFF7A, 0xFF7A, 0xF5FB, 0xF597, 0xF52D, 0xF4BD, 0xF448,\n    0xF3CF, 0xF351, 0xF2CF, 0xF24A, 0xF1C2, 0xF137, 0xF0AA, 0xF01C,\n    0xEF8C, 0xEEFB, 0xEE6A, 0xEDD9, 0xED48, 0xECB8, 0xEC2A, 0xEB9D,\n    0xEB12, 0xEA8A, 0xEA05, 0xE984, 0xE906, 0xE88D, 0xE818, 0xE7A9,\n    0xE73F, 0xE6DB, 0xE67E, 0xE628, 0xE60F, 0xE657, 0xE6E3, 0xE794,\n    0xE84C, 0xE8F0, 0xE95F, 0xE9A1, 0xE9CF, 0xE9F1, 0xEA09, 0xEA1F,\n    0xEA36, 0xEA53, 0xEA53, 0xEA53, 0xEA53, 0xEA53, 0xEA53, 0xEA53,\n    0xEA53, 0xEA53, 0xEA53, 0xEA53, 0xEA53, 0xEA53, 0xEA53, 0xEA53,\n    0xEA53, 0xEA53, 0xEA53, 0xDD98, 0xD572, 0xC7D1, 0xBB1B, 0xB5B2,\n    0xB62E, 0xB6E4, 0xB7D0, 0xB8EE, 0xBA3B, 0xBBB2, 0xBD51, 0xBF13,\n    0xC0F6, 0xC2F4, 0xC50B, 0xC737, 0xC974, 0xCBBF, 0xCE14, 0xD06F,\n    0xD2CD, 0xD529, 0xD781, 0xD9D0, 0xDC14, 0xDE47, 0xE068, 0xE271,\n    0xE45F, 0xE62F, 0xE7DE, 0xE966, 0xEA77, 0xEADE, 0xEAC3, 0xEA52,\n    0xE9B4, 0xE913, 0xE898, 0xE82E, 0xE7A9, 0xE710, 0xE66B, 0xE5C1,\n    0xE51A, 0xE47C, 0xE47C, 0xE47C, 0xE47C, 0xE47C, 0xE47C, 0xE47C,\n    0xE47C, 0xE47C, 0xE47C, 0xE47C, 0xE47C, 0xE47C, 0xE47C, 0xE47C,\n    0xE47C, 0xE47C, 0xE47C, 0x92BC, 0x88EE, 0x7B01, 0x6A58, 0x584E,\n    0x4641, 0x358E, 0x2793, 0x1DAF, 0x1714, 0x11E9, 0x0DF8, 0x0B0B,\n    0x08EB, 0x0764, 0x063E, 0x0544, 0x0440, 0x02FB, 0x0140, 0xFEDB,\n    0xFB6F, 0xF75D, 0xF384, 0xF0C0, 0xF1E4, 0xF33E, 0xF081, 0xEC8A,\n    0xE931, 0xE705, 0xE577, 0xE4AC, 0xE4AE, 0xE53D, 0xE609, 0xE6C4,\n    0xE721, 0xE6D2, 0xE587, 0xDF28, 0xD5AA, 0xD1D6, 0xD745, 0xE12B,\n    0xEBB2, 0xF305, 0xF486, 0xF29B, 0xF0FE, 0xF119, 0xF181, 0xF1AD,\n    0xF13E, 0xF093, 0xF03A, 0xF03A, 0xF03A, 0xF03A, 0xF03A, 0xF03A,\n    0xF03A, 0xF03A, 0xF03A, 0x2B21, 0x29D2, 0x27E1, 0x2589, 0x2304,\n    0x208B, 0x1E5A, 0x1CAA, 0x1BB5, 0x1B5F, 0x1B59, 0x1B97, 0x1C0A,\n    0x1CA5, 0x1D5B, 0x1E1F, 0x1EE2, 0x1F98, 0x2033, 0x20A6, 0x20E3,\n    0x2061, 0x1F23, 0x1DEF, 0x1D8D, 0x2063, 0x2291, 0x1F76, 0x1AC7,\n    0x185D, 0x1AC8, 0x1F77, 0x228F, 0x230D, 0x22BF, 0x2207, 0x2143,\n    0x20D6, 0x211E, 0x227C, 0x2896, 0x31DE, 0x36EE, 0x34E3, 0x2F93,\n    0x29AC, 0x25D9, 0x25E7, 0x2812, 0x29AF, 0x298C, 0x28DA, 0x288A,\n    0x2937, 0x2A46, 0x2AD2, 0x2AD2, 0x2AD2, 0x2AD2, 0x2AD2, 0x2AD2,\n    0x2AD2, 0x2AD2, 0x2AD2, 0x1257, 0x1060, 0x0DF5, 0x0B26, 0x0804,\n    0x049D, 0x0101, 0xFD43, 0xF970, 0xF586, 0xF17B, 0xED54, 0xE914,\n    0xE4C0, 0xE05B, 0xDBE8, 0xD76C, 0xD2EB, 0xCE69, 0xC9E9, 0xC56F,\n    0xC0EA, 0xBC39, 0xB74F, 0xB21C, 0xABE7, 0xA547, 0x9EB2, 0x9835,\n    0x931E, 0x901D, 0x8E82, 0x8D8F, 0x8CC4, 0x8C21, 0x8B9F, 0x8B37,\n    0x8AE4, 0x8A9D, 0x8A5E, 0x8778, 0x84E7, 0x8B25, 0x9EE5, 0xBA21,\n    0xD540, 0xE8A7, 0xEDDC, 0xE9DA, 0xE634, 0xE653, 0xE6CF, 0xE703,\n    0xE682, 0xE5BA, 0xE551, 0xE551, 0xE551, 0xE551, 0xE551, 0xE551,\n    0xE551, 0xE551, 0xE551, 0x0013, 0x0013, 0x0014, 0x0014, 0x0014,\n    0x0014, 0x0014, 0x0014, 0x0015, 0x0015, 0x0015, 0x0015, 0x0015,\n    0x0016, 0x0016, 0x0016, 0x0016, 0x0016, 0x0017, 0x0017, 0x0017,\n    0x0017, 0x0017, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018,\n    0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x001A, 0x001A,\n    0x001A, 0x001A, 0x001B, 0x001B, 0x001A, 0x001A, 0x0019, 0x0018,\n    0x0017, 0x0015, 0x0014, 0x0012, 0x0010, 0x000E, 0x000C, 0x000A,\n    0x0008, 0x0007, 0x0005, 0x0003, 0x0002, 0x0000, 0x0000, 0xFFFF,\n    0xFFFE, 0xFFFE, 0xFFFE, 0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31,\n    0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31,\n    0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31,\n    0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31,\n    0xFF31, 0xFF31, 0xFF31, 0xFF32, 0xFF32, 0xFF32, 0xFF32, 0xFF32,\n    0xFF32, 0xFF32, 0xFF32, 0xFF32, 0xFF32, 0xFF32, 0xFF32, 0xFF31,\n    0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31,\n    0xFF31, 0xFF31, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xC62D, 0xC625, 0xC61D, 0xC615, 0xC60C,\n    0xC603, 0xC5FA, 0xC5F1, 0xC5E7, 0xC5DE, 0xC5D4, 0xC5CA, 0xC5C0,\n    0xC5B6, 0xC5AC, 0xC5A1, 0xC597, 0xC58C, 0xC582, 0xC578, 0xC56D,\n    0xC563, 0xC558, 0xC54E, 0xC543, 0xC539, 0xC52F, 0xC525, 0xC51B,\n    0xC511, 0xC507, 0xC4FE, 0xC4F7, 0xC4F4, 0xC4EF, 0xC4E3, 0xC4D3,\n    0xC4C2, 0xC4B4, 0xC4AA, 0xC4A9, 0xC4B3, 0xC4CB, 0xC4F4, 0xC52D,\n    0xC572, 0xC5C0, 0xC616, 0xC673, 0xC6D5, 0xC73A, 0xC7A2, 0xC80A,\n    0xC871, 0xC8D5, 0xC935, 0xC990, 0xC9E4, 0xCA2F, 0xCA70, 0xCAA5,\n    0xCACC, 0xCAE5, 0xCAEE, 0x2090, 0x209E, 0x2130, 0x2228, 0x2367,\n    0x24CF, 0x2643, 0x27A3, 0x28D3, 0x29B3, 0x29C3, 0x2929, 0x28C4,\n    0x2971, 0x2B8D, 0x2E85, 0x31CF, 0x34E4, 0x373A, 0x384D, 0x387F,\n    0x38A1, 0x3984, 0x3B9F, 0x3E6E, 0x4148, 0x4388, 0x4514, 0x4652,\n    0x4758, 0x483A, 0x490D, 0x4A2D, 0x494E, 0x45D6, 0x41E1, 0x3D95,\n    0x391A, 0x3498, 0x3036, 0x2C1B, 0x286F, 0x2559, 0x2301, 0x2122,\n    0x1F5A, 0x1DAA, 0x1C13, 0x1A94, 0x192D, 0x17DE, 0x16A8, 0x158B,\n    0x1486, 0x139A, 0x12C6, 0x120B, 0x1169, 0x10DF, 0x106F, 0x1017,\n    0x0FD9, 0x0FB3, 0x0FA6, 0x01CD, 0x017A, 0x00FA, 0x0062, 0xFFC6,\n    0xFF37, 0xFECB, 0xFEB7, 0xFEDE, 0xFEDA, 0xFE97, 0xFE44, 0xFDE2,\n    0xFD6E, 0xFCE7, 0xFC33, 0xFB56, 0xFA78, 0xF9C2, 0xF94C, 0xF8FB,\n    0xF8AF, 0xF846, 0xF7AB, 0xF6F6, 0xF643, 0xF5B1, 0xF543, 0xF4E6,\n    0xF497, 0xF451, 0xF410, 0xF3B3, 0xF3F5, 0xF501, 0xF628, 0xF762,\n    0xF8A9, 0xF9F6, 0xFB43, 0xFC89, 0xFDC1, 0xFEE6, 0xFFF0, 0x00F1,\n    0x0200, 0x031B, 0x043D, 0x0564, 0x068D, 0x07B6, 0x08DA, 0x09F8,\n    0x0B0C, 0x0C14, 0x0D0C, 0x0DF2, 0x0EC3, 0x0F7B, 0x1019, 0x1098,\n    0x10F7, 0x1132, 0x1146, 0x179B, 0x1791, 0x1782, 0x176F, 0x175A,\n    0x1745, 0x1732, 0x1723, 0x1715, 0x1703, 0x16ED, 0x16D5, 0x16BC,\n    0x16A0, 0x1681, 0x1658, 0x1627, 0x15F7, 0x15D1, 0x15BD, 0x15B3,\n    0x15AA, 0x1595, 0x156D, 0x153A, 0x1508, 0x14E4, 0x14CF, 0x14C3,\n    0x14BC, 0x14B7, 0x14B1, 0x149E, 0x14AF, 0x14FC, 0x155E, 0x15CE,\n    0x1644, 0x16B6, 0x171E, 0x1772, 0x17AB, 0x17C1, 0x17AA, 0x1770,\n    0x1722, 0x16C1, 0x1651, 0x15D4, 0x154D, 0x14BE, 0x1429, 0x1392,\n    0x12FA, 0x1265, 0x11D4, 0x114B, 0x10CD, 0x105A, 0x0FF7, 0x0FA5,\n    0x0F68, 0x0F41, 0x0F33, 0xAC85, 0xAC14, 0xAB3F, 0xAA2E, 0xA90D,\n    0xA805, 0xA743, 0xA723, 0xA76B, 0xA75F, 0xA6DD, 0xA63E, 0xA57F,\n    0xA4A0, 0xA39C, 0xA243, 0xA09A, 0x9EF0, 0x9D94, 0x9CB2, 0x9C1A,\n    0x9B89, 0x9AC0, 0x9994, 0x9830, 0x96D1, 0x95B5, 0x94E2, 0x9433,\n    0x939E, 0x931B, 0x92A1, 0x91F1, 0x926D, 0x9474, 0x96BB, 0x9931,\n    0x9BC1, 0x9E59, 0xA0E5, 0xA352, 0xA58C, 0xA780, 0xA91C, 0xAA86,\n    0xABF1, 0xAD5B, 0xAEC1, 0xB022, 0xB17C, 0xB2CC, 0xB410, 0xB547,\n    0xB66E, 0xB782, 0xB883, 0xB96D, 0xBA3F, 0xBAF6, 0xBB91, 0xBC0D,\n    0xBC68, 0xBCA0, 0xBCB4, 0xDBA9, 0xDBA3, 0xDB9B, 0xDB93, 0xDB8B,\n    0xDB81, 0xDB77, 0xDB6C, 0xDB60, 0xDB54, 0xDB47, 0xDB3A, 0xDB2C,\n    0xDB1E, 0xDB0F, 0xDB01, 0xDAF2, 0xDAE3, 0xDAD3, 0xDAC4, 0xDAB4,\n    0xDAA5, 0xDA96, 0xDA86, 0xDA77, 0xDA68, 0xDA59, 0xDA4B, 0xDA3C,\n    0xDA2F, 0xDA21, 0xDA14, 0xDA0B, 0xDA08, 0xDA11, 0xDA2A, 0xDA4D,\n    0xDA73, 0xDA94, 0xDAAA, 0xDAAD, 0xDA98, 0xDA63, 0xDA08, 0xD989,\n    0xD8F1, 0xD844, 0xD784, 0xD6B6, 0xD5DD, 0xD4FB, 0xD415, 0xD32E,\n    0xD24A, 0xD16B, 0xD094, 0xCFCB, 0xCF11, 0xCE6B, 0xCDDB, 0xCD65,\n    0xCD0D, 0xCCD5, 0xCCC2, 0x1783, 0x181F, 0x18C3, 0x1970, 0x1A24,\n    0x1AE1, 0x1BA4, 0x1C6E, 0x1D3D, 0x1E12, 0x1EED, 0x1FCC, 0x20AE,\n    0x2195, 0x227E, 0x236A, 0x2459, 0x2548, 0x2639, 0x272B, 0x281D,\n    0x290E, 0x29FF, 0x2AEE, 0x2BDC, 0x2CC7, 0x2DB0, 0x2E95, 0x2F76,\n    0x3054, 0x312C, 0x3200, 0x32BA, 0x3267, 0x30FE, 0x2F61, 0x2DA0,\n    0x2BCB, 0x29F1, 0x2822, 0x266C, 0x24E0, 0x238E, 0x2283, 0x21A5,\n    0x20CC, 0x1FF9, 0x1F2D, 0x1E69, 0x1DAC, 0x1CF8, 0x1C4E, 0x1BAD,\n    0x1B17, 0x1A8C, 0x1A0D, 0x199B, 0x1935, 0x18DE, 0x1895, 0x185B,\n    0x1831, 0x1817, 0x180F, 0xE7E2, 0xE834, 0xE886, 0xE8D8, 0xE92A,\n    0xE97C, 0xE9CF, 0xEA21, 0xEA74, 0xEAC7, 0xEB1A, 0xEB6D, 0xEBC0,\n    0xEC13, 0xEC66, 0xECB9, 0xED0B, 0xED5E, 0xEDB1, 0xEE03, 0xEE55,\n    0xEEA7, 0xEEF8, 0xEF4A, 0xEF9B, 0xEFEB, 0xF03C, 0xF08C, 0xF0DB,\n    0xF12A, 0xF179, 0xF1C7, 0xF20C, 0xF1ED, 0xF172, 0xF0F3, 0xF06E,\n    0xEFE4, 0xEF53, 0xEEBD, 0xEE20, 0xED7C, 0xECD0, 0xEC1D, 0xEB5A,\n    0xEA84, 0xE99C, 0xE8A6, 0xE7A6, 0xE69F, 0xE594, 0xE488, 0xE37F,\n    0xE27C, 0xE181, 0xE094, 0xDFB6, 0xDEEB, 0xDE36, 0xDD9B, 0xDD1D,\n    0xDCBE, 0xDC83, 0xDC6F, 0xEC00, 0xEBB5, 0xEB6C, 0xEB24, 0xEADD,\n    0xEA98, 0xEA53, 0xEA10, 0xE9CE, 0xE98D, 0xE94D, 0xE90E, 0xE8D0,\n    0xE892, 0xE855, 0xE819, 0xE7DD, 0xE7A2, 0xE767, 0xE72D, 0xE6F3,\n    0xE6B9, 0xE67F, 0xE645, 0xE60C, 0xE5D2, 0xE598, 0xE55E, 0xE524,\n    0xE4E9, 0xE4AE, 0xE473, 0xE441, 0xE450, 0xE49F, 0xE4F9, 0xE55D,\n    0xE5C4, 0xE62E, 0xE694, 0xE6F4, 0xE74B, 0xE794, 0xE7CC, 0xE7F9,\n    0xE824, 0xE84D, 0xE874, 0xE899, 0xE8BC, 0xE8DC, 0xE8FB, 0xE917,\n    0xE931, 0xE949, 0xE95F, 0xE972, 0xE983, 0xE991, 0xE99C, 0xE9A6,\n    0xE9AC, 0xE9B0, 0xE9B2, 0xB41D, 0xB388, 0xB2F3, 0xB25F, 0xB1CA,\n    0xB136, 0xB0A2, 0xB00D, 0xAF79, 0xAEE5, 0xAE51, 0xADBE, 0xAD2A,\n    0xAC97, 0xAC04, 0xAB71, 0xAADF, 0xAA4D, 0xA9BB, 0xA92A, 0xA899,\n    0xA809, 0xA778, 0xA6E9, 0xA65A, 0xA5CB, 0xA53D, 0xA4AF, 0xA422,\n    0xA396, 0xA30A, 0xA27F, 0xA206, 0xA237, 0xA309, 0xA3EA, 0xA4D8,\n    0xA5D0, 0xA6D0, 0xA7D6, 0xA8DE, 0xA9E8, 0xAAF0, 0xABF3, 0xAD01,\n    0xAE26, 0xAF5D, 0xB0A4, 0xB1F5, 0xB34E, 0xB4A9, 0xB604, 0xB75A,\n    0xB8A6, 0xB9E6, 0xBB16, 0xBC30, 0xBD31, 0xBE16, 0xBEDA, 0xBF7A,\n    0xBFF1, 0xC03B, 0xC055, 0x8001, 0x8001, 0x44F5, 0x450A, 0x451C,\n    0x452C, 0x453A, 0x4545, 0x454E, 0x4555, 0x455A, 0x455D, 0x455F,\n    0x455F, 0x455E, 0x455C, 0x4559, 0x4554, 0x454F, 0x4549, 0x4543,\n    0x453C, 0x4534, 0x452D, 0x4525, 0x451E, 0x4517, 0x4510, 0x450A,\n    0x4504, 0x44FF, 0x44FB, 0x44F8, 0x44F6, 0x44F5, 0x44F5, 0x44F5,\n    0x44F5, 0x44F5, 0x44F5, 0x44F5, 0x44F5, 0x44F5, 0x44F5, 0x44F5,\n    0x44F5, 0x44F5, 0x44F5, 0x44F5, 0x44F5, 0x44F5, 0x44F5, 0x44F5,\n    0x44F5, 0x44F5, 0x44F5, 0x44F5, 0x44F5, 0x44F5, 0x44F5, 0x44F5,\n    0x44F5, 0x44F5, 0x44F5, 0x44F5, 0x44F5, 0xBF5F, 0x8001, 0x8001,\n    0x4171, 0xBF5F, 0x04DC, 0x048B, 0x043C, 0x03F1, 0x03AA, 0x0365,\n    0x0324, 0x02E5, 0x02A9, 0x026F, 0x0238, 0x0203, 0x01D0, 0x019F,\n    0x0170, 0x0143, 0x0117, 0x00ED, 0x00C4, 0x009D, 0x0076, 0x0050,\n    0x002C, 0x0007, 0xFFE5, 0xFFC1, 0xFF9E, 0xFF7B, 0xFF58, 0xFF35,\n    0xFF12, 0xFEEE, 0xFEF2, 0xFF2D, 0xFF7D, 0xFFBD, 0xFFCB, 0xFF36,\n    0xFE56, 0xFE31, 0x000F, 0x029B, 0x0458, 0x05D8, 0x0716, 0x085C,\n    0x0A57, 0x0C6E, 0x0D67, 0x0D67, 0x0D67, 0x0D67, 0x0D67, 0x0D67,\n    0x0D67, 0x0D67, 0x0D67, 0x0D67, 0x0D67, 0x0D67, 0x0D67, 0x0D67,\n    0x0D67, 0x0D67, 0xF7FA, 0xF7FA, 0xF7FA, 0xF7FB, 0xF7FC, 0xF7FE,\n    0xF800, 0xF803, 0xF805, 0xF808, 0xF80B, 0xF80D, 0xF810, 0xF813,\n    0xF815, 0xF818, 0xF81A, 0xF81B, 0xF81D, 0xF81E, 0xF81E, 0xF81E,\n    0xF81D, 0xF81C, 0xF819, 0xF816, 0xF813, 0xF80E, 0xF808, 0xF801,\n    0xF7FA, 0xF7F1, 0xF7BF, 0xF75B, 0xF6EE, 0xF6A2, 0xF6A3, 0xF768,\n    0xF8B2, 0xF997, 0xF956, 0xF899, 0xF7D9, 0xF74A, 0xF756, 0xF7D0,\n    0xF8D1, 0xF9FF, 0xFA91, 0xFA91, 0xFA91, 0xFA91, 0xFA91, 0xFA91,\n    0xFA91, 0xFA91, 0xFA91, 0xFA91, 0xFA91, 0xFA91, 0xFA91, 0xFA91,\n    0xFA91, 0xFA91, 0x1580, 0x15DC, 0x1636, 0x168C, 0x16E1, 0x1733,\n    0x1783, 0x17D3, 0x1821, 0x186F, 0x18BD, 0x190B, 0x195A, 0x19AA,\n    0x19FB, 0x1A4E, 0x1AA3, 0x1AFB, 0x1B55, 0x1BB3, 0x1C15, 0x1C7A,\n    0x1CE4, 0x1D52, 0x1DC6, 0x1E3F, 0x1EBE, 0x1F43, 0x1FCF, 0x2061,\n    0x20FB, 0x219D, 0x2357, 0x2677, 0x29D9, 0x2C59, 0x2CD2, 0x28BF,\n    0x2128, 0x1A47, 0x15EF, 0x1334, 0x126C, 0x12AC, 0x137E, 0x13DC,\n    0x1244, 0x1016, 0x0EFC, 0x0EFC, 0x0EFC, 0x0EFC, 0x0EFC, 0x0EFC,\n    0x0EFC, 0x0EFC, 0x0EFC, 0x0EFC, 0x0EFC, 0x0EFC, 0x0EFC, 0x0EFC,\n    0x0EFC, 0x0EFC, 0x0480, 0x0252, 0x0000, 0xFFF4, 0x0097, 0x00F9,\n    0x00BD, 0x004A, 0xFFD6, 0xFF93, 0xFFA5, 0xFFE9, 0x0028, 0x002C,\n    0xFFCA, 0xFF29, 0xFE89, 0xFE2E, 0xFE0E, 0xFDF3, 0xFDDE, 0xFDCE,\n    0xFDC1, 0xFDB9, 0xFDB3, 0xFDB0, 0xFDAE, 0xFDAF, 0xFDB0, 0xFDB1,\n    0xFDB2, 0xFDB3, 0xFDA4, 0xFE2E, 0xFF89, 0x011F, 0x02D1, 0x047E,\n    0x0608, 0x074F, 0x076F, 0x0701, 0x0731, 0x074F, 0x072A, 0x0700,\n    0x06D2, 0x06A0, 0x066C, 0x0636, 0x05FE, 0x05C6, 0x058F, 0x0558,\n    0x0523, 0x04F1, 0x04C2, 0x0496, 0x046F, 0x044E, 0x0433, 0x041F,\n    0x0412, 0x040E, 0xF73C, 0xF6F3, 0xF672, 0xF64D, 0xF63E, 0xF635,\n    0xF62E, 0xF62C, 0xF62C, 0xF62B, 0xF629, 0xF627, 0xF627, 0xF62A,\n    0xF633, 0xF641, 0xF64E, 0xF654, 0xF654, 0xF652, 0xF650, 0xF64D,\n    0xF649, 0xF645, 0xF641, 0xF63D, 0xF639, 0xF635, 0xF632, 0xF630,\n    0xF62E, 0xF62E, 0xF627, 0xF654, 0xF6CA, 0xF756, 0xF7EC, 0xF87E,\n    0xF8FE, 0xF960, 0xF927, 0xF8C6, 0xF918, 0xF960, 0xF94A, 0xF92E,\n    0xF90F, 0xF8ED, 0xF8C9, 0xF8A2, 0xF87A, 0xF851, 0xF828, 0xF800,\n    0xF7D8, 0xF7B2, 0xF78F, 0xF76E, 0xF750, 0xF737, 0xF722, 0xF712,\n    0xF708, 0xF705, 0xFF84, 0x0900, 0x1321, 0x135E, 0x109E, 0x0EF5,\n    0x0FEF, 0x11CE, 0x13B9, 0x14D5, 0x1489, 0x136A, 0x125F, 0x1250,\n    0x13ED, 0x1694, 0x1932, 0x1AB3, 0x1B3D, 0x1BB0, 0x1C0C, 0x1C56,\n    0x1C8E, 0x1CB8, 0x1CD4, 0x1CE6, 0x1CEF, 0x1CF1, 0x1CF0, 0x1CEC,\n    0x1CE8, 0x1CE6, 0x1D2E, 0x1AB3, 0x1472, 0x0D1E, 0x054B, 0xFD92,\n    0xF686, 0xF0BD, 0xF0A9, 0xF30F, 0xF1BC, 0xF0BD, 0xF175, 0xF248,\n    0xF332, 0xF42F, 0xF53B, 0xF652, 0xF771, 0xF893, 0xF9B4, 0xFAD1,\n    0xFBE6, 0xFCEE, 0xFDE5, 0xFEC9, 0xFF94, 0x0042, 0x00D1, 0x013C,\n    0x017F, 0x0197, 0x02FE, 0x035D, 0x03BD, 0x041E, 0x047F, 0x04DF,\n    0x053E, 0x059B, 0x05F4, 0x064B, 0x069D, 0x06EA, 0x0732, 0x0774,\n    0x07AF, 0x07E2, 0x080D, 0x0832, 0x0852, 0x086B, 0x0880, 0x0891,\n    0x089D, 0x08A6, 0x08AC, 0x08B0, 0x08B2, 0x08B2, 0x08B2, 0x08B1,\n    0x08B0, 0x08AF, 0x08B1, 0x08B7, 0x08BF, 0x08C5, 0x08C9, 0x08C7,\n    0x08BF, 0x08AD, 0x0891, 0x0866, 0x082D, 0x07E2, 0x0783, 0x0712,\n    0x0692, 0x0605, 0x056C, 0x04CC, 0x0426, 0x037D, 0x02D3, 0x022A,\n    0x0186, 0x00E9, 0x0055, 0xFFCE, 0xFF53, 0xFEEA, 0xFE93, 0xFE52,\n    0xFE2A, 0xFE1C,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_04.inc.c",
    "content": "static const struct Animation anim_04[] = {\n    1,\n    189,\n    0,\n    0,\n    0x21,\n    ANIMINDEX_NUMPARTS(anim_04_indices),\n    anim_04_values,\n    anim_04_indices,\n    0,\n};\n\n\nstatic const u16 anim_04_indices[] = {\n    0x0001, 0x0000, 0x0021, 0x0001, 0x0021, 0x0022, 0x0001, 0x0000, 0x0001, 0x0043, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0021, 0x044B,\n    0x0021, 0x03E8, 0x0021, 0x0409, 0x0021, 0x042A,\n    0x0001, 0x0000, 0x0021, 0x03A6, 0x0021, 0x03C7,\n    0x0001, 0x03A2, 0x0001, 0x03A3, 0x0001, 0x03A4,\n    0x0021, 0x00C8, 0x0021, 0x00E9, 0x0021, 0x010A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0021, 0x00A7,\n    0x0021, 0x0044, 0x0021, 0x0065, 0x0021, 0x0086,\n    0x0001, 0x039E, 0x0001, 0x039F, 0x0001, 0x03A0,\n    0x0021, 0x016D, 0x0021, 0x018E, 0x0021, 0x01AF,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0021, 0x014C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0021, 0x012B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x03A1,\n    0x0021, 0x033B, 0x0021, 0x035C, 0x0021, 0x037D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0021, 0x031A,\n    0x0021, 0x02B7, 0x0021, 0x02D8, 0x0021, 0x02F9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x03A5,\n    0x0021, 0x0254, 0x0021, 0x0275, 0x0021, 0x0296,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0021, 0x0233,\n    0x0021, 0x01D0, 0x0021, 0x01F1, 0x0021, 0x0212,\n};\n\nstatic const s16 anim_04_values[] = {\n    0x0000, 0x007B, 0x007C, 0x007C, 0x007D, 0x007E, 0x007E, 0x007F,\n    0x0081, 0x0082, 0x0084, 0x0086, 0x0088, 0x008A, 0x008C, 0x008E,\n    0x008F, 0x008F, 0x0090, 0x0090, 0x0091, 0x0091, 0x0093, 0x0094,\n    0x0095, 0x0095, 0x0095, 0x0095, 0x0094, 0x0093, 0x0092, 0x0092,\n    0x0091, 0x0090, 0x0004, 0x0008, 0x000D, 0x0012, 0x0015, 0x0016,\n    0x0010, 0x0006, 0xFFFF, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFF,\n    0x0000, 0x0003, 0x0007, 0x000C, 0x0011, 0x0015, 0x0016, 0x0014,\n    0x000D, 0x0006, 0x0002, 0x0002, 0x0002, 0x0003, 0x0004, 0x0006,\n    0x0007, 0x0007, 0x0007, 0x3FFF, 0x0000, 0x0000, 0x0000, 0xFFFF,\n    0xFFFE, 0xFFFD, 0xFFFB, 0xFFFA, 0xFFF8, 0xFFF7, 0xFFF5, 0xFFF4,\n    0xFFF2, 0xFFF1, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF1, 0xFFF2,\n    0xFFF3, 0xFFF6, 0xFFF9, 0xFFFC, 0x0000, 0x0006, 0x000F, 0x001A,\n    0x0026, 0x0035, 0x0044, 0x0054, 0x0064, 0xF97C, 0xF97C, 0xF97C,\n    0xF97C, 0xF97C, 0xF97B, 0xF97B, 0xF97B, 0xF97B, 0xF97B, 0xF97B,\n    0xF97B, 0xF97B, 0xF97B, 0xF97B, 0xF97B, 0xF97B, 0xF97B, 0xF97B,\n    0xF97B, 0xF97B, 0xF97B, 0xF97B, 0xF97B, 0xF97C, 0xF97C, 0xF97D,\n    0xF97D, 0xF97E, 0xF97F, 0xF97F, 0xF980, 0xF981, 0xED8C, 0xED8D,\n    0xED90, 0xED95, 0xED9C, 0xEDA4, 0xEDAD, 0xEDB7, 0xEDC0, 0xEDCA,\n    0xEDD4, 0xEDDD, 0xEDE5, 0xEDEB, 0xEDF1, 0xEDF4, 0xEDF5, 0xEDF4,\n    0xEDF0, 0xEDE9, 0xEDDE, 0xEDD0, 0xEDBE, 0xEDA7, 0xED8C, 0xED65,\n    0xED2D, 0xECE8, 0xEC97, 0xEC3D, 0xEBDC, 0xEB78, 0xEB13, 0xFAB5,\n    0xFAA0, 0xFA98, 0xFA9B, 0xFAA8, 0xFABE, 0xFADB, 0xFAFF, 0xFB28,\n    0xFB56, 0xFB87, 0xFBBA, 0xFBEE, 0xFC22, 0xFC54, 0xFC84, 0xFCB1,\n    0xFCD9, 0xFCFB, 0xFD17, 0xFD2A, 0xFD35, 0xFD35, 0xFD2A, 0xFD12,\n    0xFCF9, 0xFCDD, 0xFCA6, 0xFC3E, 0xFB8D, 0xFA7D, 0xF8F8, 0xF6E5,\n    0x2A58, 0x290C, 0x2548, 0x1F81, 0x182B, 0x0FB9, 0x069E, 0xFD51,\n    0xF441, 0xEBE4, 0xE4AE, 0xDE00, 0xD700, 0xCFC7, 0xC86F, 0xC10F,\n    0xB9C2, 0xB2A1, 0xABC4, 0xA546, 0x9F3F, 0x99C8, 0x94FA, 0x90EF,\n    0x8DC0, 0x8C0A, 0x8C37, 0x8E13, 0x916B, 0x9609, 0x9BBB, 0xA24D,\n    0xA98A, 0xF01E, 0xEE8B, 0xEBB9, 0xE7F6, 0xE391, 0xDED8, 0xDA18,\n    0xD5A2, 0xD1C2, 0xCEC8, 0xCD02, 0xCC32, 0xCBDC, 0xCBF0, 0xCC5E,\n    0xCD16, 0xCE08, 0xCF24, 0xD05A, 0xD19B, 0xD2D5, 0xD3F9, 0xD4F8,\n    0xD5C0, 0xD643, 0xD6AC, 0xD71F, 0xD780, 0xD7B5, 0xD7A4, 0xD72F,\n    0xD63E, 0xD4B4, 0x553B, 0x52F0, 0x552D, 0x5B25, 0x640D, 0x6F19,\n    0x7B7F, 0x8876, 0x952C, 0xA0D9, 0xAAB1, 0xB3A7, 0xBD1C, 0xC6F1,\n    0xD103, 0xDB32, 0xE55C, 0xEF61, 0xF91F, 0x0273, 0x0B3F, 0x1361,\n    0x1AB8, 0x2121, 0x267D, 0x29ED, 0x2AEB, 0x29D7, 0x2713, 0x2300,\n    0x1E00, 0x1875, 0x12BE, 0xF549, 0xF54C, 0xF553, 0xF55F, 0xF56E,\n    0xF580, 0xF594, 0xF5AA, 0xF5C0, 0xF5D6, 0xF5EB, 0xF5FF, 0xF611,\n    0xF621, 0xF62C, 0xF634, 0xF636, 0xF634, 0xF62A, 0xF61A, 0xF603,\n    0xF5E3, 0xF5B9, 0xF587, 0xF549, 0xF4CF, 0xF3F8, 0xF2DD, 0xF198,\n    0xF043, 0xEEF8, 0xEDD0, 0xECE5, 0xF156, 0xF0EC, 0xF095, 0xF050,\n    0xF01C, 0xEFF8, 0xEFE3, 0xEFDC, 0xEFE0, 0xEFF1, 0xF00B, 0xF02F,\n    0xF05B, 0xF08E, 0xF0C7, 0xF104, 0xF145, 0xF189, 0xF1CE, 0xF214,\n    0xF259, 0xF29C, 0xF2DC, 0xF318, 0xF34F, 0xF3EB, 0xF524, 0xF6AA,\n    0xF82C, 0xF95B, 0xF9E8, 0xF982, 0xF7DA, 0xC982, 0xCC47, 0xD218,\n    0xDA5A, 0xE473, 0xEFC7, 0xFBBC, 0x07B5, 0x131A, 0x1D4E, 0x25B6,\n    0x2D1A, 0x3499, 0x3C20, 0x4399, 0x4AF1, 0x5213, 0x58EA, 0x5F63,\n    0x6569, 0x6AE7, 0x6FC9, 0x73FB, 0x7768, 0x79FC, 0x7A44, 0x7769,\n    0x7246, 0x6BB2, 0x6488, 0x5D9F, 0x57D1, 0x53F6, 0x16F2, 0x17F1,\n    0x19D0, 0x1C5A, 0x1F59, 0x2295, 0x25DA, 0x28F1, 0x2BA4, 0x2DBD,\n    0x2F06, 0x2FA5, 0x2FEF, 0x2FEE, 0x2FB0, 0x2F40, 0x2EAB, 0x2DFD,\n    0x2D41, 0x2C85, 0x2BD4, 0x2B3A, 0x2AC5, 0x2A7F, 0x2A75, 0x2AA3,\n    0x2AFD, 0x2B86, 0x2C3E, 0x2D26, 0x2E41, 0x2F90, 0x3114, 0x55C3,\n    0x553C, 0x5928, 0x60B3, 0x6B0B, 0x775D, 0x84D8, 0x92A4, 0x9FF2,\n    0xABEF, 0xB5C6, 0xBE66, 0xC737, 0xD026, 0xD91E, 0xE20A, 0xEAD5,\n    0xF36C, 0xFBB9, 0x03A6, 0x0B22, 0x1216, 0x186E, 0x1E15, 0x22F7,\n    0x25E1, 0x2626, 0x2475, 0x2182, 0x1DFC, 0x1A95, 0x17FD, 0x16E6,\n    0xFFA4, 0xFFD0, 0xFFF3, 0x000C, 0x001F, 0x002B, 0x0031, 0x0031,\n    0x002D, 0x0025, 0x001A, 0x000D, 0xFFFE, 0xFFEE, 0xFFDE, 0xFFCE,\n    0xFFC0, 0xFFB4, 0xFFAA, 0xFFA4, 0xFFA3, 0xFFA6, 0xFFAF, 0xFFBC,\n    0xFFCD, 0xFFE0, 0xFFF6, 0x000B, 0x0021, 0x0037, 0x004A, 0x005C,\n    0x0069, 0xFF45, 0xFF43, 0xFF41, 0xFF40, 0xFF3F, 0xFF3E, 0xFF3D,\n    0xFF3D, 0xFF3D, 0xFF3D, 0xFF3D, 0xFF3E, 0xFF3E, 0xFF3F, 0xFF40,\n    0xFF41, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47,\n    0xFF49, 0xFF4C, 0xFF4F, 0xFF52, 0xFF56, 0xFF59, 0xFF5C, 0xFF5E,\n    0xFF5F, 0xFF60, 0xDC97, 0xDEBD, 0xE09A, 0xE232, 0xE386, 0xE49A,\n    0xE571, 0xE60F, 0xE676, 0xE6A9, 0xE6AC, 0xE682, 0xE62E, 0xE5B3,\n    0xE513, 0xE453, 0xE376, 0xE27D, 0xE16D, 0xE049, 0xDF13, 0xDDCF,\n    0xDBF4, 0xD919, 0xD571, 0xD12E, 0xCC84, 0xC7A4, 0xC2C2, 0xBE10,\n    0xB9C2, 0xB60A, 0xB31A, 0x1F1A, 0x1D90, 0x1C5D, 0x1B79, 0x1AE0,\n    0x1A8B, 0x1A75, 0x1A96, 0x1AEA, 0x1B69, 0x1C0F, 0x1CD4, 0x1DB4,\n    0x1EA7, 0x1FA8, 0x20B1, 0x21BC, 0x22C2, 0x23BE, 0x24A9, 0x257E,\n    0x2637, 0x26F3, 0x27D3, 0x28D6, 0x29F7, 0x2B35, 0x2C8B, 0x2DF7,\n    0x2F76, 0x3104, 0x329F, 0x3444, 0x0760, 0x0709, 0x06C3, 0x068A,\n    0x065C, 0x0634, 0x060D, 0x05E5, 0x05BE, 0x0599, 0x0578, 0x055D,\n    0x0548, 0x053B, 0x0539, 0x0554, 0x0593, 0x05E4, 0x0633, 0x066F,\n    0x0684, 0x065F, 0x0602, 0x0581, 0x04E4, 0x0434, 0x037B, 0x02C0,\n    0x020E, 0x016D, 0x00E6, 0x0081, 0x0049, 0x00E1, 0x0009, 0xFF86,\n    0xFF44, 0xFF2E, 0xFF31, 0xFF49, 0xFF7A, 0xFFBF, 0x000E, 0x0063,\n    0x00B6, 0x0100, 0x013B, 0x015E, 0x0161, 0x0148, 0x011D, 0x00E9,\n    0x00B9, 0x0096, 0x008A, 0x008B, 0x0086, 0x0080, 0x007C, 0x007D,\n    0x0086, 0x009B, 0x00BF, 0x00F6, 0x0143, 0x01AA, 0xBEAD, 0xC3A6,\n    0xC664, 0xC77D, 0xC787, 0xC716, 0xC63D, 0xC4C8, 0xC2E1, 0xC0B4,\n    0xBE6C, 0xBC36, 0xBA3C, 0xB8AA, 0xB7AB, 0xB795, 0xB861, 0xB9AF,\n    0xBB22, 0xBC59, 0xBCF7, 0xBC9C, 0xBB82, 0xBA26, 0xB88F, 0xB6C3,\n    0xB4C9, 0xB2A7, 0xB065, 0xAE08, 0xAB97, 0xA919, 0xA695, 0x0000,\n    0x0025, 0x0045, 0x005E, 0x0072, 0x0081, 0x008B, 0x0091, 0x0093,\n    0x0092, 0x008E, 0x0087, 0x007E, 0x0073, 0x0067, 0x005A, 0x004D,\n    0x0040, 0x0033, 0x0027, 0x001C, 0x0013, 0x000C, 0x0007, 0x0006,\n    0x0005, 0x0005, 0x0004, 0x0004, 0x0003, 0x0002, 0x0001, 0x0001,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xDAF5, 0xDCCA, 0xDE67, 0xDFCE, 0xE101, 0xE203, 0xE2D5,\n    0xE37B, 0xE3F6, 0xE449, 0xE477, 0xE481, 0xE46A, 0xE434, 0xE3E2,\n    0xE376, 0xE2F3, 0xE25A, 0xE1AE, 0xE0F1, 0xE026, 0xDF4F, 0xDE6F,\n    0xDD87, 0xDC9B, 0xDAE8, 0xD7E5, 0xD3E8, 0xCF46, 0xCA55, 0xC56A,\n    0xC0DC, 0xBCFF, 0x1FEB, 0x2023, 0x20AD, 0x2182, 0x229D, 0x23F7,\n    0x258B, 0x2752, 0x2948, 0x2B65, 0x2DA5, 0x3001, 0x3273, 0x34F6,\n    0x3784, 0x3A16, 0x3CA7, 0x3F31, 0x41AE, 0x4419, 0x466B, 0x489E,\n    0x4AAD, 0x4C91, 0x4E46, 0x4FD5, 0x5142, 0x527D, 0x5376, 0x541E,\n    0x5463, 0x5437, 0x5389, 0xF9BB, 0xF9C1, 0xF9F1, 0xFA39, 0xFA84,\n    0xFABD, 0xFAE9, 0xFB17, 0xFB48, 0xFB79, 0xFBAC, 0xFBDF, 0xFC12,\n    0xFC45, 0xFC76, 0xFCA6, 0xFCD4, 0xFCFF, 0xFD27, 0xFD4C, 0xFD6C,\n    0xFD88, 0xFD9F, 0xFDB1, 0xFDBC, 0xFDAA, 0xFD6E, 0xFD14, 0xFCAD,\n    0xFC45, 0xFBEC, 0xFBAF, 0xFB9C, 0xFECE, 0xFFFB, 0x00A4, 0x00EB,\n    0x00F1, 0x00D9, 0x00B7, 0x008E, 0x005D, 0x0026, 0xFFEA, 0xFFA8,\n    0xFF62, 0xFF19, 0xFECD, 0xFE81, 0xFE33, 0xFDE6, 0xFD99, 0xFD4F,\n    0xFD07, 0xFCC2, 0xFC82, 0xFC47, 0xFC13, 0xFBEA, 0xFBD0, 0xFBC0,\n    0xFBB8, 0xFBB3, 0xFBAC, 0xFBA1, 0xFB8D, 0xBF1E, 0xC3B2, 0xC60D,\n    0xC6AC, 0xC608, 0xC49B, 0xC2D0, 0xC0C4, 0xBE7F, 0xBC0A, 0xB96D,\n    0xB6B1, 0xB3DE, 0xB0FD, 0xAE16, 0xAB32, 0xA859, 0xA595, 0xA2ED,\n    0xA069, 0x9E14, 0x9BF4, 0x9A13, 0x9879, 0x972E, 0x96F0, 0x9829,\n    0x9A6B, 0x9D44, 0xA045, 0xA2FE, 0xA4FE, 0xA5D6, 0x8001, 0x8001,\n    0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0xFFFF, 0xFFFB, 0xFFF4, 0xFFED, 0xFFE4, 0xFFDC, 0xFFD4, 0xFFCE,\n    0xFFCA, 0xFFC8, 0xFFCA, 0xFFD0, 0xFFDA, 0xFFEA, 0x0000, 0x002C,\n    0x0079, 0x00D9, 0x0141, 0x01A7, 0x01FD, 0x023A, 0x0250, 0xE9A4,\n    0xE8B3, 0xE75C, 0xE5D2, 0xE44B, 0xE2FA, 0xE213, 0xE1CA, 0xE253,\n    0xE3E3, 0xE65D, 0xE96F, 0xED03, 0xF101, 0xF550, 0xF9D9, 0xFE84,\n    0x0337, 0x07DE, 0x0C5E, 0x10A0, 0x148D, 0x180C, 0x1B04, 0x1D5F,\n    0x1EAE, 0x1EBE, 0x1DCE, 0x1C1F, 0x19F2, 0x1786, 0x151C, 0x12F4,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002,\n    0x0003, 0x0005, 0x0006, 0x0007, 0x0009, 0x000A, 0x000B, 0x000C,\n    0x000C, 0x000C, 0x000C, 0x000C, 0x000A, 0x0009, 0x0006, 0x0003,\n    0x0000, 0xFFF8, 0xFFE8, 0xFFD3, 0xFFBD, 0xFFA7, 0xFF96, 0xFF8A,\n    0xFF88, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0002, 0x0006,\n    0x000A, 0x000F, 0x0014, 0x001A, 0x001F, 0x0025, 0x002A, 0x002E,\n    0x0031, 0x0033, 0x0034, 0x0033, 0x0031, 0x002C, 0x0025, 0x001B,\n    0x000F, 0x0000, 0xFFDF, 0xFFA2, 0xFF54, 0xFEFE, 0xFEAA, 0xFE61,\n    0xFE2D, 0xFE17, 0x0267, 0xF8AF, 0xEF3D, 0xEAC3, 0xEA6F, 0xEA4A,\n    0xEA51, 0xEA81, 0xEAD5, 0xEB4B, 0xEBDE, 0xEC8B, 0xED4E, 0xEE24,\n    0xEF09, 0xEFF9, 0xF0F1, 0xF1ED, 0xF2EA, 0xF3E3, 0xF4D6, 0xF5BF,\n    0xF699, 0xF762, 0xF816, 0xF95C, 0xFBAF, 0xFECB, 0x0266, 0x063E,\n    0x0A0B, 0x0D86, 0x106A, 0x30B3, 0x2162, 0x116D, 0x00E4, 0xEFD5,\n    0xDE50, 0xCC63, 0xBA1F, 0xA793, 0x94CF, 0x81E1, 0x6ED6, 0x5BC3,\n    0x48B6, 0x35BC, 0x22E7, 0x1044, 0xFDE4, 0xEBD6, 0xDA28, 0xC8EB,\n    0xB82E, 0xA801, 0x9872, 0x8991, 0x7B6A, 0x6E14, 0x6199, 0x560A,\n    0x4B77, 0x41ED, 0x397E, 0x3237,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_05.inc.c",
    "content": "static const struct Animation anim_05[] = {\n    0,\n    189,\n    0,\n    0,\n    0x5A,\n    ANIMINDEX_NUMPARTS(anim_05_indices),\n    anim_05_values,\n    anim_05_indices,\n    0,\n};\n\n\nstatic const u16 anim_05_indices[] = {\n    0x0001, 0x0001, 0x0001, 0x0002, 0x005A, 0x0003, 0x0001, 0x0000, 0x0001, 0x005D, 0x0001, 0x0000,\n    0x005A, 0x0A44, 0x005A, 0x0A9E, 0x005A, 0x0AF8,\n    0x005A, 0x0936, 0x005A, 0x0990, 0x005A, 0x09EA,\n    0x005A, 0x0828, 0x005A, 0x0882, 0x005A, 0x08DC,\n    0x0001, 0x0824, 0x0001, 0x0825, 0x0001, 0x0826,\n    0x005A, 0x00BB, 0x005A, 0x0115, 0x005A, 0x016F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005A, 0x0061,\n    0x0001, 0x005E, 0x0001, 0x005F, 0x0001, 0x0060,\n    0x0001, 0x0820, 0x0001, 0x0821, 0x0001, 0x0822,\n    0x005A, 0x0226, 0x005A, 0x0280, 0x005A, 0x02DA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005A, 0x01CC,\n    0x0001, 0x01C9, 0x0001, 0x01CA, 0x0001, 0x01CB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0823,\n    0x005A, 0x0712, 0x005A, 0x076C, 0x005A, 0x07C6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005A, 0x06B8,\n    0x005A, 0x05AA, 0x005A, 0x0604, 0x005A, 0x065E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0827,\n    0x005A, 0x049C, 0x005A, 0x04F6, 0x005A, 0x0550,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005A, 0x0442,\n    0x005A, 0x0334, 0x005A, 0x038E, 0x005A, 0x03E8,\n};\n\nstatic const s16 anim_05_values[] = {\n    0x0000, 0xFFFC, 0x00BD, 0xFF9C, 0xFF9C, 0xFF9C, 0xFF9C, 0xFF9B,\n    0xFF9B, 0xFF9B, 0xFF9B, 0xFF9A, 0xFF9A, 0xFF99, 0xFF99, 0xFF99,\n    0xFF98, 0xFF98, 0xFF97, 0xFF96, 0xFF96, 0xFF95, 0xFF95, 0xFF94,\n    0xFF94, 0xFF93, 0xFF93, 0xFF92, 0xFF91, 0xFF91, 0xFF90, 0xFF90,\n    0xFF8F, 0xFF8F, 0xFF8E, 0xFF8E, 0xFF8D, 0xFF8D, 0xFF8D, 0xFF8C,\n    0xFF8C, 0xFF8C, 0xFF8B, 0xFF8B, 0xFF8B, 0xFF8B, 0xFF8B, 0xFF8B,\n    0xFF8B, 0xFF8B, 0xFF8B, 0xFF8B, 0xFF8B, 0xFF8C, 0xFF8C, 0xFF8C,\n    0xFF8D, 0xFF8D, 0xFF8D, 0xFF8E, 0xFF8E, 0xFF8F, 0xFF8F, 0xFF90,\n    0xFF90, 0xFF91, 0xFF91, 0xFF92, 0xFF92, 0xFF93, 0xFF94, 0xFF94,\n    0xFF95, 0xFF95, 0xFF96, 0xFF96, 0xFF97, 0xFF97, 0xFF98, 0xFF98,\n    0xFF99, 0xFF99, 0xFF9A, 0xFF9A, 0xFF9B, 0xFF9B, 0xFF9B, 0xFF9B,\n    0xFF9C, 0xFF9C, 0xFF9C, 0xFF9C, 0xFF9C, 0x3FFF, 0xD315, 0xF0C2,\n    0xFB61, 0xDBBF, 0xDBC3, 0xDBC8, 0xDBD0, 0xDBDA, 0xDBE6, 0xDBF4,\n    0xDC03, 0xDC15, 0xDC27, 0xDC3B, 0xDC50, 0xDC66, 0xDC7E, 0xDC96,\n    0xDCAF, 0xDCC9, 0xDCE3, 0xDCFE, 0xDD1A, 0xDD35, 0xDD51, 0xDD6D,\n    0xDD89, 0xDDA4, 0xDDC0, 0xDDDA, 0xDDF5, 0xDE0F, 0xDE28, 0xDE40,\n    0xDE57, 0xDE6E, 0xDE83, 0xDE97, 0xDEA9, 0xDEBA, 0xDECA, 0xDED8,\n    0xDEE4, 0xDEEE, 0xDEF6, 0xDEFB, 0xDEFF, 0xDF00, 0xDEFF, 0xDEFB,\n    0xDEF6, 0xDEEE, 0xDEE4, 0xDED8, 0xDECA, 0xDEBB, 0xDEAA, 0xDE97,\n    0xDE84, 0xDE6F, 0xDE58, 0xDE41, 0xDE29, 0xDE10, 0xDDF6, 0xDDDC,\n    0xDDC1, 0xDDA6, 0xDD8A, 0xDD6F, 0xDD53, 0xDD37, 0xDD1C, 0xDD00,\n    0xDCE5, 0xDCCB, 0xDCB1, 0xDC98, 0xDC80, 0xDC68, 0xDC52, 0xDC3D,\n    0xDC29, 0xDC16, 0xDC05, 0xDBF6, 0xDBE8, 0xDBDC, 0xDBD1, 0xDBC9,\n    0xDBC3, 0xDBBF, 0xDBBE, 0x2D70, 0x2D6C, 0x2D66, 0x2D5E, 0x2D53,\n    0x2D47, 0x2D39, 0x2D28, 0x2D17, 0x2D03, 0x2CEF, 0x2CD9, 0x2CC1,\n    0x2CA9, 0x2C90, 0x2C75, 0x2C5A, 0x2C3F, 0x2C23, 0x2C06, 0x2BE9,\n    0x2BCD, 0x2BB0, 0x2B93, 0x2B76, 0x2B59, 0x2B3D, 0x2B22, 0x2B07,\n    0x2AED, 0x2AD3, 0x2ABB, 0x2AA4, 0x2A8D, 0x2A79, 0x2A65, 0x2A54,\n    0x2A44, 0x2A35, 0x2A29, 0x2A1E, 0x2A16, 0x2A10, 0x2A0C, 0x2A0B,\n    0x2A0C, 0x2A10, 0x2A16, 0x2A1E, 0x2A29, 0x2A35, 0x2A43, 0x2A53,\n    0x2A65, 0x2A78, 0x2A8D, 0x2AA3, 0x2ABA, 0x2AD2, 0x2AEB, 0x2B06,\n    0x2B20, 0x2B3C, 0x2B58, 0x2B74, 0x2B91, 0x2BAE, 0x2BCB, 0x2BE8,\n    0x2C04, 0x2C21, 0x2C3D, 0x2C58, 0x2C73, 0x2C8D, 0x2CA7, 0x2CBF,\n    0x2CD6, 0x2CED, 0x2D01, 0x2D15, 0x2D27, 0x2D37, 0x2D45, 0x2D52,\n    0x2D5D, 0x2D65, 0x2D6C, 0x2D70, 0x2D71, 0xFE90, 0xFE93, 0xFE99,\n    0xFEA0, 0xFEA9, 0xFEB3, 0xFEC0, 0xFECE, 0xFEDD, 0xFEEE, 0xFEFF,\n    0xFF12, 0xFF26, 0xFF3B, 0xFF51, 0xFF68, 0xFF7F, 0xFF97, 0xFFAF,\n    0xFFC7, 0xFFE0, 0xFFF9, 0x0011, 0x002A, 0x0043, 0x005B, 0x0074,\n    0x008B, 0x00A2, 0x00B9, 0x00CF, 0x00E4, 0x00F8, 0x010B, 0x011D,\n    0x012D, 0x013D, 0x014B, 0x0157, 0x0162, 0x016B, 0x0172, 0x0177,\n    0x017A, 0x017B, 0x017A, 0x0177, 0x0172, 0x016B, 0x0162, 0x0157,\n    0x014B, 0x013D, 0x012E, 0x011D, 0x010B, 0x00F9, 0x00E5, 0x00D0,\n    0x00BA, 0x00A4, 0x008C, 0x0075, 0x005D, 0x0044, 0x002C, 0x0013,\n    0xFFFB, 0xFFE2, 0xFFC9, 0xFFB1, 0xFF99, 0xFF81, 0xFF6A, 0xFF53,\n    0xFF3D, 0xFF28, 0xFF14, 0xFF01, 0xFEEF, 0xFEDF, 0xFECF, 0xFEC1,\n    0xFEB5, 0xFEAA, 0xFEA1, 0xFE99, 0xFE94, 0xFE90, 0xFE8F, 0x8E3C,\n    0x8E3E, 0x8E41, 0x8E46, 0x8E4B, 0x8E51, 0x8E59, 0x8E61, 0x8E6A,\n    0x8E74, 0x8E7F, 0x8E8A, 0x8E96, 0x8EA3, 0x8EB0, 0x8EBD, 0x8ECB,\n    0x8ED9, 0x8EE8, 0x8EF6, 0x8F05, 0x8F14, 0x8F23, 0x8F32, 0x8F41,\n    0x8F4F, 0x8F5E, 0x8F6C, 0x8F7A, 0x8F87, 0x8F94, 0x8FA1, 0x8FAD,\n    0x8FB8, 0x8FC3, 0x8FCD, 0x8FD6, 0x8FDE, 0x8FE6, 0x8FEC, 0x8FF1,\n    0x8FF6, 0x8FF9, 0x8FFB, 0x8FFB, 0x8FFB, 0x8FF9, 0x8FF6, 0x8FF1,\n    0x8FEC, 0x8FE6, 0x8FDE, 0x8FD6, 0x8FCD, 0x8FC3, 0x8FB9, 0x8FAD,\n    0x8FA1, 0x8F95, 0x8F88, 0x8F7A, 0x8F6D, 0x8F5F, 0x8F50, 0x8F42,\n    0x8F33, 0x8F24, 0x8F15, 0x8F06, 0x8EF7, 0x8EE9, 0x8EDA, 0x8ECC,\n    0x8EBE, 0x8EB1, 0x8EA4, 0x8E97, 0x8E8B, 0x8E80, 0x8E75, 0x8E6B,\n    0x8E62, 0x8E5A, 0x8E52, 0x8E4C, 0x8E46, 0x8E42, 0x8E3F, 0x8E3D,\n    0x8E3C, 0x217B, 0x07C2, 0x0F87, 0xE5E4, 0xE5C9, 0xE59C, 0xE55F,\n    0xE513, 0xE4B8, 0xE44F, 0xE3DA, 0xE358, 0xE2CA, 0xE233, 0xE191,\n    0xE0E7, 0xE035, 0xDF7C, 0xDEBC, 0xDDF7, 0xDD2E, 0xDC60, 0xDB90,\n    0xDABE, 0xD9EA, 0xD916, 0xD842, 0xD770, 0xD6A0, 0xD5D2, 0xD509,\n    0xD444, 0xD384, 0xD2CB, 0xD219, 0xD16F, 0xD0CE, 0xD036, 0xCFA9,\n    0xCF27, 0xCEB1, 0xCE48, 0xCDED, 0xCDA1, 0xCD64, 0xCD38, 0xCD1C,\n    0xCD13, 0xCD1C, 0xCD37, 0xCD64, 0xCDA0, 0xCDEC, 0xCE46, 0xCEAF,\n    0xCF24, 0xCFA5, 0xD032, 0xD0C9, 0xD169, 0xD213, 0xD2C4, 0xD37D,\n    0xD43B, 0xD500, 0xD5C8, 0xD695, 0xD765, 0xD836, 0xD909, 0xD9DD,\n    0xDAB0, 0xDB82, 0xDC52, 0xDD1F, 0xDDE8, 0xDEAD, 0xDF6C, 0xE026,\n    0xE0D8, 0xE182, 0xE224, 0xE2BC, 0xE34A, 0xE3CD, 0xE444, 0xE4AE,\n    0xE50A, 0xE558, 0xE596, 0xE5C4, 0xE5E2, 0xE5ED, 0xDA0F, 0xDA14,\n    0xDA1D, 0xDA29, 0xDA38, 0xDA49, 0xDA5E, 0xDA75, 0xDA8E, 0xDAAA,\n    0xDAC7, 0xDAE6, 0xDB08, 0xDB2A, 0xDB4E, 0xDB74, 0xDB9A, 0xDBC1,\n    0xDBE9, 0xDC12, 0xDC3B, 0xDC64, 0xDC8D, 0xDCB6, 0xDCDF, 0xDD08,\n    0xDD30, 0xDD57, 0xDD7D, 0xDDA2, 0xDDC6, 0xDDE9, 0xDE0A, 0xDE29,\n    0xDE47, 0xDE62, 0xDE7B, 0xDE92, 0xDEA7, 0xDEB8, 0xDEC7, 0xDED3,\n    0xDEDB, 0xDEE0, 0xDEE2, 0xDEE0, 0xDEDB, 0xDED2, 0xDEC6, 0xDEB7,\n    0xDEA5, 0xDE90, 0xDE79, 0xDE60, 0xDE44, 0xDE26, 0xDE07, 0xDDE5,\n    0xDDC2, 0xDD9E, 0xDD79, 0xDD52, 0xDD2B, 0xDD02, 0xDCDA, 0xDCB0,\n    0xDC87, 0xDC5E, 0xDC34, 0xDC0B, 0xDBE2, 0xDBBA, 0xDB92, 0xDB6C,\n    0xDB46, 0xDB22, 0xDAFF, 0xDADD, 0xDABD, 0xDAA0, 0xDA84, 0xDA6A,\n    0xDA53, 0xDA3E, 0xDA2C, 0xDA1D, 0xDA10, 0xDA07, 0xDA01, 0xD9FF,\n    0x0451, 0x045F, 0x0475, 0x0493, 0x04B9, 0x04E7, 0x051B, 0x0556,\n    0x0596, 0x05DD, 0x0629, 0x0679, 0x06CE, 0x0726, 0x0783, 0x07E2,\n    0x0844, 0x08A8, 0x090E, 0x0976, 0x09DE, 0x0A47, 0x0AB0, 0x0B19,\n    0x0B81, 0x0BE8, 0x0C4D, 0x0CB1, 0x0D12, 0x0D70, 0x0DCB, 0x0E23,\n    0x0E76, 0x0EC5, 0x0F0E, 0x0F53, 0x0F91, 0x0FCA, 0x0FFC, 0x1027,\n    0x104A, 0x1065, 0x1079, 0x1083, 0x1084, 0x107C, 0x106A, 0x1050,\n    0x102D, 0x1002, 0x0FCF, 0x0F95, 0x0F54, 0x0F0D, 0x0EC0, 0x0E6E,\n    0x0E16, 0x0DBA, 0x0D5A, 0x0CF7, 0x0C90, 0x0C26, 0x0BBA, 0x0B4C,\n    0x0ADC, 0x0A6C, 0x09FA, 0x0989, 0x0918, 0x08A8, 0x0838, 0x07CB,\n    0x075F, 0x06F6, 0x068F, 0x062D, 0x05CD, 0x0572, 0x051C, 0x04CB,\n    0x047F, 0x043A, 0x03FA, 0x03C2, 0x0391, 0x0367, 0x0346, 0x032D,\n    0x031E, 0x0318, 0x75C5, 0x75D7, 0x75F4, 0x761C, 0x764E, 0x768A,\n    0x76CE, 0x771C, 0x7771, 0x77CE, 0x7832, 0x789C, 0x790C, 0x7981,\n    0x79FB, 0x7A79, 0x7AFA, 0x7B7F, 0x7C07, 0x7C90, 0x7D1B, 0x7DA7,\n    0x7E33, 0x7EBF, 0x7F4A, 0x7FD4, 0x805F, 0x80E5, 0x8168, 0x81E8,\n    0x8263, 0x82DA, 0x834C, 0x83B8, 0x841F, 0x847E, 0x84D6, 0x8527,\n    0x856F, 0x85AE, 0x85E4, 0x8610, 0x8631, 0x8647, 0x8652, 0x8651,\n    0x8644, 0x862D, 0x860C, 0x85E2, 0x85AE, 0x8572, 0x852D, 0x84E1,\n    0x848E, 0x8434, 0x83D5, 0x8370, 0x8306, 0x8297, 0x8224, 0x81AE,\n    0x8135, 0x80BA, 0x803C, 0x7FBA, 0x7F3A, 0x7EBA, 0x7E3A, 0x7DBB,\n    0x7D3D, 0x7CC0, 0x7C46, 0x7BCE, 0x7B59, 0x7AE9, 0x7A7C, 0x7A14,\n    0x79B2, 0x7955, 0x78FE, 0x78AE, 0x7866, 0x7825, 0x77ED, 0x77BD,\n    0x7797, 0x777B, 0x7769, 0x7762, 0x0E38, 0x0E37, 0x0E37, 0x0E37,\n    0x0E36, 0x0E36, 0x0E35, 0x0E35, 0x0E34, 0x0E33, 0x0E32, 0x0E31,\n    0x0E31, 0x0E30, 0x0E2F, 0x0E2E, 0x0E2D, 0x0E2C, 0x0E2B, 0x0E2A,\n    0x0E29, 0x0E29, 0x0E28, 0x0E27, 0x0E26, 0x0E26, 0x0E25, 0x0E24,\n    0x0E23, 0x0E22, 0x0E21, 0x0E20, 0x0E1F, 0x0E1E, 0x0E1D, 0x0E1D,\n    0x0E1C, 0x0E1B, 0x0E1B, 0x0E1A, 0x0E1A, 0x0E19, 0x0E19, 0x0E19,\n    0x0E1A, 0x0E1A, 0x0E1A, 0x0E1B, 0x0E1B, 0x0E1C, 0x0E1C, 0x0E1D,\n    0x0E1D, 0x0E1E, 0x0E1F, 0x0E20, 0x0E20, 0x0E21, 0x0E22, 0x0E23,\n    0x0E24, 0x0E25, 0x0E26, 0x0E27, 0x0E28, 0x0E29, 0x0E29, 0x0E2A,\n    0x0E2B, 0x0E2C, 0x0E2D, 0x0E2E, 0x0E2F, 0x0E30, 0x0E31, 0x0E31,\n    0x0E32, 0x0E33, 0x0E34, 0x0E34, 0x0E35, 0x0E35, 0x0E36, 0x0E36,\n    0x0E37, 0x0E37, 0x0E37, 0x0E38, 0x0E38, 0x0E38, 0xFF8F, 0xFF92,\n    0xFF98, 0xFF9F, 0xFFA8, 0xFFB3, 0xFFBF, 0xFFCC, 0xFFDB, 0xFFEB,\n    0xFFFB, 0x000B, 0x001D, 0x002F, 0x0041, 0x0054, 0x0066, 0x0079,\n    0x008A, 0x009C, 0x00AD, 0x00BD, 0x00CC, 0x00DA, 0x00E8, 0x00F8,\n    0x0108, 0x011A, 0x012C, 0x013F, 0x0152, 0x0165, 0x0178, 0x018A,\n    0x019B, 0x01AB, 0x01BA, 0x01C8, 0x01D4, 0x01DE, 0x01E6, 0x01EB,\n    0x01EE, 0x01EE, 0x01EA, 0x01E5, 0x01DE, 0x01D5, 0x01CC, 0x01C2,\n    0x01B6, 0x01AA, 0x019D, 0x018F, 0x0180, 0x0170, 0x0160, 0x014F,\n    0x013E, 0x012C, 0x011A, 0x0108, 0x00F5, 0x00E3, 0x00D0, 0x00BD,\n    0x00AA, 0x0097, 0x0084, 0x0072, 0x005F, 0x004E, 0x003C, 0x002B,\n    0x001A, 0x000A, 0xFFFC, 0xFFEE, 0xFFE0, 0xFFD3, 0xFFC7, 0xFFBC,\n    0xFFB2, 0xFFA9, 0xFFA1, 0xFF9B, 0xFF95, 0xFF91, 0xFF8F, 0xFF8E,\n    0xD416, 0xD40D, 0xD3FE, 0xD3EA, 0xD3D1, 0xD3B4, 0xD392, 0xD36D,\n    0xD345, 0xD31A, 0xD2ED, 0xD2BE, 0xD28D, 0xD25B, 0xD229, 0xD1F6,\n    0xD1C3, 0xD191, 0xD15F, 0xD12F, 0xD101, 0xD0D5, 0xD0AB, 0xD085,\n    0xD05E, 0xD033, 0xD005, 0xCFD4, 0xCFA2, 0xCF6E, 0xCF3A, 0xCF06,\n    0xCED2, 0xCEA0, 0xCE71, 0xCE43, 0xCE1A, 0xCDF4, 0xCDD3, 0xCDB8,\n    0xCDA3, 0xCD94, 0xCD8C, 0xCD8D, 0xCD96, 0xCDA6, 0xCDB9, 0xCDD0,\n    0xCDE9, 0xCE06, 0xCE25, 0xCE47, 0xCE6C, 0xCE93, 0xCEBC, 0xCEE6,\n    0xCF13, 0xCF41, 0xCF70, 0xCFA1, 0xCFD3, 0xD005, 0xD039, 0xD06C,\n    0xD0A0, 0xD0D5, 0xD109, 0xD13D, 0xD170, 0xD1A3, 0xD1D6, 0xD207,\n    0xD237, 0xD266, 0xD294, 0xD2C0, 0xD2EA, 0xD312, 0xD338, 0xD35C,\n    0xD37D, 0xD39B, 0xD3B7, 0xD3D0, 0xD3E5, 0xD3F7, 0xD405, 0xD410,\n    0xD417, 0xD419, 0x30AF, 0x30DC, 0x3124, 0x3186, 0x3200, 0x328F,\n    0x3332, 0x33E6, 0x34AA, 0x357C, 0x3659, 0x373F, 0x382D, 0x3921,\n    0x3A18, 0x3B10, 0x3C08, 0x3CFD, 0x3DEE, 0x3ED9, 0x3FBB, 0x4092,\n    0x415D, 0x4219, 0x42D8, 0x43A9, 0x448A, 0x4577, 0x466D, 0x476A,\n    0x4868, 0x4967, 0x4A61, 0x4B54, 0x4C3E, 0x4D19, 0x4DE5, 0x4E9C,\n    0x4F3C, 0x4FC2, 0x502B, 0x5073, 0x5097, 0x5094, 0x5067, 0x501A,\n    0x4FBD, 0x4F4F, 0x4ED2, 0x4E46, 0x4DAC, 0x4D06, 0x4C54, 0x4B97,\n    0x4ACF, 0x49FF, 0x4925, 0x4845, 0x475D, 0x466F, 0x457D, 0x4486,\n    0x438C, 0x4290, 0x4192, 0x4093, 0x3F94, 0x3E97, 0x3D9B, 0x3CA2,\n    0x3BAD, 0x3ABC, 0x39D0, 0x38EB, 0x380C, 0x3736, 0x3668, 0x35A4,\n    0x34EB, 0x343D, 0x339B, 0x3306, 0x327F, 0x3207, 0x319F, 0x3147,\n    0x3101, 0x30CD, 0x30AC, 0x309F, 0x10D3, 0x10B6, 0x1086, 0x1046,\n    0x0FF8, 0x0F9C, 0x0F35, 0x0EC4, 0x0E4B, 0x0DCB, 0x0D47, 0x0CBF,\n    0x0C34, 0x0BAA, 0x0B21, 0x0A9C, 0x0A1A, 0x099F, 0x092C, 0x08C2,\n    0x0863, 0x0811, 0x07CD, 0x0799, 0x0772, 0x0755, 0x0741, 0x0736,\n    0x0732, 0x0736, 0x0740, 0x0751, 0x0766, 0x0781, 0x079F, 0x07C1,\n    0x07E6, 0x080D, 0x0835, 0x085F, 0x0889, 0x08B3, 0x08DB, 0x0903,\n    0x0928, 0x094D, 0x0975, 0x099F, 0x09CB, 0x09F9, 0x0A29, 0x0A5B,\n    0x0A8E, 0x0AC3, 0x0AF9, 0x0B30, 0x0B68, 0x0BA1, 0x0BDB, 0x0C15,\n    0x0C4F, 0x0C8A, 0x0CC5, 0x0CFF, 0x0D3A, 0x0D74, 0x0DAD, 0x0DE6,\n    0x0E1E, 0x0E54, 0x0E8A, 0x0EBE, 0x0EF1, 0x0F23, 0x0F52, 0x0F80,\n    0x0FAB, 0x0FD4, 0x0FFB, 0x101F, 0x1041, 0x1060, 0x107C, 0x1094,\n    0x10AA, 0x10BC, 0x10CA, 0x10D4, 0x10DB, 0x10DE, 0x10B3, 0x10F3,\n    0x1159, 0x11E1, 0x1289, 0x134B, 0x1426, 0x1514, 0x1613, 0x171E,\n    0x1832, 0x194C, 0x1A67, 0x1B81, 0x1C95, 0x1D9F, 0x1E9D, 0x1F8B,\n    0x2065, 0x2126, 0x21CD, 0x2254, 0x22B9, 0x22F7, 0x230E, 0x2301,\n    0x22D3, 0x2288, 0x2222, 0x21A5, 0x2113, 0x2072, 0x1FC2, 0x1F09,\n    0x1E48, 0x1D84, 0x1CBF, 0x1BFD, 0x1B41, 0x1A8E, 0x19E7, 0x1950,\n    0x18CC, 0x185E, 0x1809, 0x17C3, 0x177D, 0x1737, 0x16F3, 0x16B0,\n    0x166D, 0x162B, 0x15EB, 0x15AB, 0x156C, 0x152F, 0x14F2, 0x14B7,\n    0x147D, 0x1444, 0x140D, 0x13D6, 0x13A1, 0x136E, 0x133C, 0x130B,\n    0x12DC, 0x12AF, 0x1283, 0x1258, 0x1230, 0x1209, 0x11E4, 0x11C0,\n    0x119F, 0x117F, 0x1161, 0x1145, 0x112B, 0x1114, 0x10FE, 0x10EA,\n    0x10D9, 0x10C9, 0x10BC, 0x10B1, 0x10A8, 0x10A2, 0x109E, 0x109D,\n    0x92DB, 0x9296, 0x9226, 0x9191, 0x90D8, 0x9001, 0x8F0D, 0x8E01,\n    0x8CE0, 0x8BAD, 0x8A6D, 0x8922, 0x87D1, 0x867C, 0x8527, 0x83D6,\n    0x828C, 0x814C, 0x801B, 0x7EF8, 0x7DEE, 0x7CFC, 0x7C26, 0x7B70,\n    0x7ACD, 0x7A2D, 0x7993, 0x78FE, 0x7871, 0x77EA, 0x776C, 0x76F8,\n    0x768D, 0x762D, 0x75D9, 0x7592, 0x7558, 0x752C, 0x7510, 0x7504,\n    0x7508, 0x751E, 0x7547, 0x7583, 0x75D4, 0x7636, 0x76A4, 0x7720,\n    0x77A7, 0x7839, 0x78D6, 0x797C, 0x7A2C, 0x7AE3, 0x7BA2, 0x7C68,\n    0x7D34, 0x7E06, 0x7EDC, 0x7FB6, 0x8097, 0x8177, 0x8259, 0x833D,\n    0x8420, 0x8504, 0x85E7, 0x86C8, 0x87A7, 0x8882, 0x895A, 0x8A2E,\n    0x8AFC, 0x8BC5, 0x8C87, 0x8D42, 0x8DF4, 0x8E9F, 0x8F3F, 0x8FD6,\n    0x9062, 0x90E2, 0x9156, 0x91BE, 0x9217, 0x9263, 0x929F, 0x92CB,\n    0x92E8, 0x92F3, 0xECBF, 0xECBC, 0xECB9, 0xECB4, 0xECAE, 0xECA7,\n    0xECA0, 0xEC97, 0xEC8F, 0xEC85, 0xEC7C, 0xEC73, 0xEC6A, 0xEC60,\n    0xEC58, 0xEC50, 0xEC48, 0xEC41, 0xEC3B, 0xEC37, 0xEC33, 0xEC31,\n    0xEC30, 0xEC31, 0xEC34, 0xEC39, 0xEC40, 0xEC49, 0xEC54, 0xEC60,\n    0xEC6D, 0xEC7B, 0xEC89, 0xEC98, 0xECA7, 0xECB5, 0xECC4, 0xECD2,\n    0xECDF, 0xECEB, 0xECF6, 0xECFF, 0xED06, 0xED0C, 0xED0F, 0xED11,\n    0xED13, 0xED14, 0xED15, 0xED15, 0xED15, 0xED15, 0xED14, 0xED13,\n    0xED12, 0xED11, 0xED0F, 0xED0D, 0xED0B, 0xED09, 0xED07, 0xED04,\n    0xED01, 0xECFE, 0xECFB, 0xECF8, 0xECF5, 0xECF2, 0xECEF, 0xECEC,\n    0xECE8, 0xECE5, 0xECE2, 0xECDF, 0xECDC, 0xECD8, 0xECD6, 0xECD3,\n    0xECD0, 0xECCD, 0xECCB, 0xECC9, 0xECC7, 0xECC5, 0xECC3, 0xECC2,\n    0xECC1, 0xECC0, 0xECC0, 0xECBF, 0x0538, 0x052B, 0x0516, 0x04FA,\n    0x04D8, 0x04B0, 0x0484, 0x0454, 0x0421, 0x03EC, 0x03B6, 0x037F,\n    0x0349, 0x0313, 0x02DF, 0x02AE, 0x0281, 0x0257, 0x0233, 0x0215,\n    0x01FD, 0x01ED, 0x01E6, 0x01E7, 0x01F4, 0x020C, 0x022F, 0x025C,\n    0x0290, 0x02CC, 0x030D, 0x0353, 0x039C, 0x03E8, 0x0434, 0x0480,\n    0x04CB, 0x0513, 0x0556, 0x0595, 0x05CE, 0x05FF, 0x0627, 0x0645,\n    0x0658, 0x0664, 0x066E, 0x0676, 0x067C, 0x0681, 0x0684, 0x0686,\n    0x0686, 0x0685, 0x0682, 0x067F, 0x067A, 0x0674, 0x066D, 0x0665,\n    0x065C, 0x0653, 0x0648, 0x063E, 0x0632, 0x0626, 0x061A, 0x060D,\n    0x0601, 0x05F4, 0x05E6, 0x05D9, 0x05CC, 0x05BF, 0x05B2, 0x05A6,\n    0x059A, 0x058E, 0x0583, 0x0578, 0x056E, 0x0564, 0x055C, 0x0554,\n    0x054E, 0x0548, 0x0543, 0x0540, 0x053E, 0x053D, 0xDC3A, 0xDC21,\n    0xDBF9, 0xDBC3, 0xDB81, 0xDB34, 0xDADF, 0xDA83, 0xDA21, 0xD9BB,\n    0xD952, 0xD8E8, 0xD87F, 0xD817, 0xD7B4, 0xD755, 0xD6FE, 0xD6AE,\n    0xD669, 0xD62F, 0xD602, 0xD5E3, 0xD5D5, 0xD5D8, 0xD5F1, 0xD620,\n    0xD665, 0xD6BB, 0xD721, 0xD795, 0xD814, 0xD89C, 0xD92B, 0xD9BD,\n    0xDA51, 0xDAE5, 0xDB76, 0xDC01, 0xDC85, 0xDCFF, 0xDD6C, 0xDDCB,\n    0xDE19, 0xDE53, 0xDE77, 0xDE8E, 0xDEA1, 0xDEB1, 0xDEBD, 0xDEC6,\n    0xDECC, 0xDECF, 0xDECF, 0xDECC, 0xDEC7, 0xDEBF, 0xDEB5, 0xDEA9,\n    0xDE9B, 0xDE8C, 0xDE7A, 0xDE67, 0xDE53, 0xDE3E, 0xDE27, 0xDE10,\n    0xDDF7, 0xDDDE, 0xDDC5, 0xDDAB, 0xDD91, 0xDD77, 0xDD5D, 0xDD44,\n    0xDD2B, 0xDD12, 0xDCFA, 0xDCE3, 0xDCCD, 0xDCB7, 0xDCA4, 0xDC91,\n    0xDC81, 0xDC71, 0xDC64, 0xDC59, 0xDC50, 0xDC49, 0xDC45, 0xDC43,\n    0x3707, 0x371B, 0x373C, 0x3768, 0x379E, 0x37DF, 0x3828, 0x3879,\n    0x38D1, 0x392F, 0x3992, 0x39F9, 0x3A64, 0x3AD1, 0x3B40, 0x3BAF,\n    0x3C1F, 0x3C8D, 0x3CF9, 0x3D62, 0x3DC8, 0x3E28, 0x3E83, 0x3ED8,\n    0x3F2D, 0x3F8B, 0x3FF0, 0x405A, 0x40C9, 0x413A, 0x41AC, 0x421E,\n    0x428F, 0x42FC, 0x4365, 0x43C7, 0x4423, 0x4475, 0x44BD, 0x44F9,\n    0x4528, 0x4548, 0x4558, 0x4557, 0x4543, 0x4520, 0x44F6, 0x44C5,\n    0x448D, 0x444E, 0x4409, 0x43BF, 0x436F, 0x431A, 0x42C0, 0x4263,\n    0x4201, 0x419C, 0x4134, 0x40CA, 0x405D, 0x3FEE, 0x3F7E, 0x3F0D,\n    0x3E9B, 0x3E29, 0x3DB6, 0x3D44, 0x3CD4, 0x3C64, 0x3BF6, 0x3B8A,\n    0x3B20, 0x3AB9, 0x3A55, 0x39F5, 0x3999, 0x3941, 0x38EE, 0x389F,\n    0x3857, 0x3814, 0x37D8, 0x37A2, 0x3773, 0x374C, 0x372C, 0x3715,\n    0x3706, 0x3700, 0x0033, 0x0015, 0xFFE7, 0xFFA7, 0xFF58, 0xFEFC,\n    0xFE94, 0xFE22, 0xFDA7, 0xFD24, 0xFC9C, 0xFC0F, 0xFB80, 0xFAEF,\n    0xFA5F, 0xF9D0, 0xF944, 0xF8BE, 0xF83D, 0xF7C4, 0xF755, 0xF6F0,\n    0xF697, 0xF64D, 0xF60A, 0xF5CB, 0xF58F, 0xF555, 0xF520, 0xF4EE,\n    0xF4BF, 0xF495, 0xF470, 0xF44F, 0xF433, 0xF41C, 0xF40B, 0xF3FF,\n    0xF3F9, 0xF3F9, 0xF400, 0xF40D, 0xF422, 0xF43D, 0xF460, 0xF489,\n    0xF4B7, 0xF4EB, 0xF523, 0xF55F, 0xF5A0, 0xF5E5, 0xF62D, 0xF678,\n    0xF6C6, 0xF717, 0xF76B, 0xF7C0, 0xF818, 0xF871, 0xF8CB, 0xF927,\n    0xF983, 0xF9DF, 0xFA3C, 0xFA98, 0xFAF4, 0xFB50, 0xFBAA, 0xFC03,\n    0xFC5B, 0xFCB1, 0xFD05, 0xFD56, 0xFDA5, 0xFDF0, 0xFE39, 0xFE7E,\n    0xFEBF, 0xFEFC, 0xFF34, 0xFF68, 0xFF97, 0xFFC1, 0xFFE5, 0x0003,\n    0x001B, 0x002D, 0x0039, 0x003D, 0x09AE, 0x0970, 0x090D, 0x0889,\n    0x07E6, 0x0729, 0x0653, 0x0569, 0x046D, 0x0364, 0x0250, 0x0135,\n    0x0016, 0xFEF7, 0xFDDA, 0xFCC2, 0xFBB4, 0xFAB3, 0xF9C1, 0xF8E2,\n    0xF81A, 0xF76C, 0xF6DB, 0xF669, 0xF613, 0xF5D0, 0xF59E, 0xF57C,\n    0xF56A, 0xF566, 0xF56F, 0xF584, 0xF5A4, 0xF5CE, 0xF600, 0xF63A,\n    0xF67B, 0xF6C1, 0xF70B, 0xF758, 0xF7A7, 0xF7F7, 0xF847, 0xF896,\n    0xF8E3, 0xF931, 0xF984, 0xF9DD, 0xFA3B, 0xFA9E, 0xFB05, 0xFB70,\n    0xFBDF, 0xFC52, 0xFCC7, 0xFD3F, 0xFDB9, 0xFE35, 0xFEB3, 0xFF32,\n    0xFFB2, 0x0032, 0x00B3, 0x0134, 0x01B4, 0x0234, 0x02B2, 0x032F,\n    0x03AA, 0x0423, 0x049A, 0x050E, 0x057E, 0x05EB, 0x0654, 0x06B9,\n    0x071A, 0x0775, 0x07CB, 0x081C, 0x0867, 0x08AB, 0x08E9, 0x0920,\n    0x094F, 0x0977, 0x0997, 0x09AE, 0x09BD, 0x09C3, 0x83CA, 0x83B3,\n    0x838F, 0x835D, 0x8321, 0x82D9, 0x8289, 0x8230, 0x81D0, 0x816A,\n    0x80FE, 0x808F, 0x801E, 0x7FA7, 0x7F33, 0x7EC0, 0x7E4E, 0x7DDF,\n    0x7D74, 0x7D0E, 0x7CAE, 0x7C55, 0x7C05, 0x7BBE, 0x7B7A, 0x7B35,\n    0x7AEE, 0x7AA6, 0x7A5E, 0x7A17, 0x79D1, 0x798E, 0x794D, 0x7910,\n    0x78D7, 0x78A3, 0x7875, 0x784E, 0x782D, 0x7814, 0x7804, 0x77FD,\n    0x7800, 0x780E, 0x7828, 0x784A, 0x7872, 0x789F, 0x78D1, 0x7909,\n    0x7944, 0x7985, 0x79C9, 0x7A10, 0x7A5B, 0x7AA9, 0x7AFA, 0x7B4D,\n    0x7BA3, 0x7BFA, 0x7C53, 0x7CAD, 0x7D08, 0x7D63, 0x7DC0, 0x7E1C,\n    0x7E78, 0x7ED3, 0x7F2E, 0x7F87, 0x7FDF, 0x8038, 0x808D, 0x80DF,\n    0x812E, 0x817B, 0x81C4, 0x820A, 0x824C, 0x8289, 0x82C3, 0x82F8,\n    0x8328, 0x8352, 0x8377, 0x8396, 0x83AF, 0x83C1, 0x83CD, 0x83D2,\n    0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F,\n    0xBE5F, 0xBE64, 0xBE6D, 0xBE79, 0xBE88, 0xBE9A, 0xBEAE, 0xBEC5,\n    0xBEDF, 0xBEFB, 0xBF18, 0xBF38, 0xBF5A, 0xBF7D, 0xBFA1, 0xBFC6,\n    0xBFED, 0xC015, 0xC03D, 0xC066, 0xC08F, 0xC0B9, 0xC0E2, 0xC10C,\n    0xC135, 0xC15E, 0xC186, 0xC1AE, 0xC1D5, 0xC1FA, 0xC21F, 0xC241,\n    0xC263, 0xC283, 0xC2A0, 0xC2BC, 0xC2D6, 0xC2ED, 0xC301, 0xC313,\n    0xC322, 0xC32E, 0xC337, 0xC33C, 0xC33E, 0xC33C, 0xC337, 0xC32E,\n    0xC322, 0xC313, 0xC302, 0xC2ED, 0xC2D6, 0xC2BD, 0xC2A1, 0xC283,\n    0xC264, 0xC243, 0xC220, 0xC1FC, 0xC1D6, 0xC1B0, 0xC188, 0xC160,\n    0xC137, 0xC10E, 0xC0E5, 0xC0BB, 0xC092, 0xC069, 0xC040, 0xC018,\n    0xBFF0, 0xBFCA, 0xBFA4, 0xBF80, 0xBF5D, 0xBF3B, 0xBF1B, 0xBEFD,\n    0xBEE2, 0xBEC8, 0xBEB1, 0xBE9C, 0xBE8A, 0xBE7A, 0xBE6E, 0xBE65,\n    0xBE5F, 0xBE5D, 0xF066, 0xF066, 0xF066, 0xF066, 0xF066, 0xF066,\n    0xF067, 0xF067, 0xF067, 0xF067, 0xF068, 0xF068, 0xF068, 0xF069,\n    0xF069, 0xF06A, 0xF06A, 0xF06A, 0xF06B, 0xF06B, 0xF06C, 0xF06C,\n    0xF06D, 0xF06D, 0xF06D, 0xF06E, 0xF06E, 0xF06F, 0xF06F, 0xF070,\n    0xF070, 0xF070, 0xF071, 0xF071, 0xF071, 0xF072, 0xF072, 0xF072,\n    0xF072, 0xF073, 0xF073, 0xF073, 0xF073, 0xF073, 0xF073, 0xF073,\n    0xF073, 0xF073, 0xF073, 0xF073, 0xF072, 0xF072, 0xF072, 0xF072,\n    0xF071, 0xF071, 0xF071, 0xF070, 0xF070, 0xF070, 0xF06F, 0xF06F,\n    0xF06E, 0xF06E, 0xF06D, 0xF06D, 0xF06D, 0xF06C, 0xF06C, 0xF06B,\n    0xF06B, 0xF06A, 0xF06A, 0xF06A, 0xF069, 0xF069, 0xF068, 0xF068,\n    0xF068, 0xF067, 0xF067, 0xF067, 0xF067, 0xF066, 0xF066, 0xF066,\n    0xF066, 0xF066, 0xF066, 0xF066, 0xFA42, 0xFA34, 0xFA1D, 0xF9FE,\n    0xF9D6, 0xF9A7, 0xF971, 0xF934, 0xF8F1, 0xF8A8, 0xF85A, 0xF806,\n    0xF7AF, 0xF753, 0xF6F3, 0xF690, 0xF62A, 0xF5C2, 0xF558, 0xF4ED,\n    0xF480, 0xF413, 0xF3A5, 0xF338, 0xF2CB, 0xF260, 0xF1F6, 0xF18E,\n    0xF128, 0xF0C5, 0xF066, 0xF00A, 0xEFB2, 0xEF5E, 0xEF10, 0xEEC7,\n    0xEE84, 0xEE47, 0xEE11, 0xEDE2, 0xEDBB, 0xED9B, 0xED84, 0xED76,\n    0xED71, 0xED76, 0xED84, 0xED9B, 0xEDBA, 0xEDE2, 0xEE10, 0xEE46,\n    0xEE83, 0xEEC5, 0xEF0E, 0xEF5C, 0xEFAF, 0xF006, 0xF062, 0xF0C1,\n    0xF124, 0xF189, 0xF1F1, 0xF25A, 0xF2C6, 0xF332, 0xF39F, 0xF40C,\n    0xF479, 0xF4E5, 0xF551, 0xF5BB, 0xF622, 0xF688, 0xF6EB, 0xF74B,\n    0xF7A7, 0xF7FF, 0xF852, 0xF8A1, 0xF8EA, 0xF92E, 0xF96B, 0xF9A2,\n    0xF9D1, 0xF9F9, 0xFA1A, 0xFA32, 0xFA41, 0xFA47, 0x0ADF, 0x0AD8,\n    0x0ACE, 0x0ABF, 0x0AAC, 0x0A96, 0x0A7D, 0x0A60, 0x0A41, 0x0A1F,\n    0x09FA, 0x09D3, 0x09A9, 0x097E, 0x0951, 0x0923, 0x08F3, 0x08C2,\n    0x0891, 0x085E, 0x082B, 0x07F8, 0x07C4, 0x0791, 0x075E, 0x072C,\n    0x06FA, 0x06C9, 0x0699, 0x066B, 0x063E, 0x0613, 0x05EA, 0x05C3,\n    0x059E, 0x057C, 0x055C, 0x0540, 0x0526, 0x0510, 0x04FE, 0x04EF,\n    0x04E4, 0x04DD, 0x04DB, 0x04DD, 0x04E4, 0x04EF, 0x04FD, 0x0510,\n    0x0526, 0x053F, 0x055B, 0x057B, 0x059D, 0x05C1, 0x05E8, 0x0611,\n    0x063C, 0x0669, 0x0697, 0x06C7, 0x06F8, 0x0729, 0x075B, 0x078E,\n    0x07C1, 0x07F5, 0x0828, 0x085B, 0x088D, 0x08BF, 0x08F0, 0x091F,\n    0x094E, 0x097B, 0x09A6, 0x09CF, 0x09F6, 0x0A1B, 0x0A3E, 0x0A5D,\n    0x0A7A, 0x0A94, 0x0AAA, 0x0ABD, 0x0ACC, 0x0AD7, 0x0ADE, 0x0AE1,\n    0x00C9, 0x00C0, 0x00B3, 0x00A0, 0x0088, 0x006C, 0x004B, 0x0026,\n    0xFFFF, 0xFFD3, 0xFFA4, 0xFF71, 0xFF3C, 0xFF05, 0xFECB, 0xFE90,\n    0xFE52, 0xFE14, 0xFDD4, 0xFD93, 0xFD51, 0xFD10, 0xFCCE, 0xFC8C,\n    0xFC4A, 0xFC09, 0xFBC9, 0xFB8B, 0xFB4D, 0xFB12, 0xFAD8, 0xFAA1,\n    0xFA6C, 0xFA39, 0xFA0A, 0xF9DE, 0xF9B6, 0xF991, 0xF970, 0xF954,\n    0xF93C, 0xF929, 0xF91C, 0xF913, 0xF910, 0xF913, 0xF91C, 0xF929,\n    0xF93C, 0xF954, 0xF970, 0xF990, 0xF9B5, 0xF9DD, 0xFA09, 0xFA38,\n    0xFA6A, 0xFA9F, 0xFAD6, 0xFB0F, 0xFB4B, 0xFB88, 0xFBC6, 0xFC06,\n    0xFC47, 0xFC88, 0xFCCA, 0xFD0B, 0xFD4D, 0xFD8E, 0xFDCF, 0xFE0F,\n    0xFE4E, 0xFE8B, 0xFEC7, 0xFF00, 0xFF38, 0xFF6D, 0xFF9F, 0xFFCE,\n    0xFFFB, 0x0022, 0x0047, 0x0068, 0x0085, 0x009D, 0x00B1, 0x00BF,\n    0x00C8, 0x00CC, 0xF04F, 0xF073, 0xF0AD, 0xF0FD, 0xF161, 0xF1D9,\n    0xF262, 0xF2FD, 0xF3A7, 0xF461, 0xF528, 0xF5FC, 0xF6DB, 0xF7C5,\n    0xF8B8, 0xF9B4, 0xFAB7, 0xFBBF, 0xFCCD, 0xFDDE, 0xFEF3, 0x0007,\n    0x011E, 0x0234, 0x0348, 0x0459, 0x0567, 0x0670, 0x0772, 0x086E,\n    0x0961, 0x0A4B, 0x0B2A, 0x0BFE, 0x0CC5, 0x0D7F, 0x0E2A, 0x0EC4,\n    0x0F4E, 0x0FC5, 0x1029, 0x1079, 0x10B4, 0x10D8, 0x10E4, 0x10D8,\n    0x10B4, 0x107A, 0x102B, 0x0FC7, 0x0F50, 0x0EC7, 0x0E2D, 0x0D83,\n    0x0CCB, 0x0C04, 0x0B32, 0x0A53, 0x096A, 0x0878, 0x077E, 0x067C,\n    0x0574, 0x0468, 0x0357, 0x0244, 0x012F, 0x0019, 0xFF05, 0xFDF1,\n    0xFCE0, 0xFBD3, 0xFACB, 0xF9C8, 0xF8CD, 0xF7DA, 0xF6F0, 0xF610,\n    0xF53B, 0xF473, 0xF3B9, 0xF30D, 0xF272, 0xF1E6, 0xF16D, 0xF107,\n    0xF0B5, 0xF078, 0xF052, 0xF043, 0x09A1, 0x099C, 0x0995, 0x098B,\n    0x097E, 0x096F, 0x095E, 0x094A, 0x0935, 0x091E, 0x0905, 0x08EA,\n    0x08CE, 0x08B1, 0x0892, 0x0872, 0x0852, 0x0831, 0x080F, 0x07EC,\n    0x07CA, 0x07A7, 0x0784, 0x0761, 0x073E, 0x071C, 0x06FA, 0x06D9,\n    0x06B8, 0x0699, 0x067A, 0x065D, 0x0641, 0x0626, 0x060D, 0x05F6,\n    0x05E0, 0x05CD, 0x05BB, 0x05AC, 0x05A0, 0x0596, 0x058E, 0x058A,\n    0x0588, 0x058A, 0x058E, 0x0596, 0x05A0, 0x05AC, 0x05BB, 0x05CC,\n    0x05E0, 0x05F5, 0x060C, 0x0625, 0x0640, 0x065C, 0x0679, 0x0697,\n    0x06B7, 0x06D7, 0x06F8, 0x071A, 0x073C, 0x075F, 0x0782, 0x07A5,\n    0x07C7, 0x07EA, 0x080C, 0x082E, 0x084F, 0x0870, 0x088F, 0x08AE,\n    0x08CB, 0x08E8, 0x0902, 0x091B, 0x0933, 0x0948, 0x095C, 0x096D,\n    0x097D, 0x0989, 0x0994, 0x099B, 0x09A0, 0x09A2, 0x0658, 0x065C,\n    0x0663, 0x066C, 0x0678, 0x0686, 0x0695, 0x06A7, 0x06BB, 0x06D1,\n    0x06E8, 0x0700, 0x071A, 0x0735, 0x0751, 0x076E, 0x078C, 0x07AB,\n    0x07CA, 0x07E9, 0x0809, 0x0829, 0x084A, 0x086A, 0x088A, 0x08A9,\n    0x08C9, 0x08E7, 0x0905, 0x0922, 0x093E, 0x0959, 0x0973, 0x098C,\n    0x09A3, 0x09B8, 0x09CC, 0x09DE, 0x09EE, 0x09FB, 0x0A07, 0x0A10,\n    0x0A17, 0x0A1B, 0x0A1D, 0x0A1B, 0x0A17, 0x0A10, 0x0A07, 0x09FC,\n    0x09EE, 0x09DE, 0x09CC, 0x09B9, 0x09A3, 0x098C, 0x0974, 0x095A,\n    0x093F, 0x0923, 0x0906, 0x08E9, 0x08CA, 0x08AB, 0x088B, 0x086C,\n    0x084C, 0x082C, 0x080B, 0x07EC, 0x07CC, 0x07AD, 0x078E, 0x0770,\n    0x0753, 0x0737, 0x071C, 0x0702, 0x06EA, 0x06D3, 0x06BD, 0x06A9,\n    0x0697, 0x0687, 0x0679, 0x066D, 0x0664, 0x065D, 0x0658, 0x0657,\n    0x4338, 0x4322, 0x42FE, 0x42CD, 0x4290, 0x4246, 0x41F2, 0x4193,\n    0x412A, 0x40B9, 0x403E, 0x3FBC, 0x3F33, 0x3EA4, 0x3E0E, 0x3D74,\n    0x3CD5, 0x3C33, 0x3B8D, 0x3AE6, 0x3A3C, 0x3992, 0x38E7, 0x383C,\n    0x3793, 0x36EB, 0x3645, 0x35A3, 0x3504, 0x346A, 0x33D5, 0x3345,\n    0x32BC, 0x323A, 0x31C0, 0x314E, 0x30E5, 0x3086, 0x3032, 0x2FE9,\n    0x2FAB, 0x2F7A, 0x2F56, 0x2F40, 0x2F39, 0x2F40, 0x2F56, 0x2F7A,\n    0x2FAA, 0x2FE8, 0x3031, 0x3085, 0x30E3, 0x314B, 0x31BC, 0x3236,\n    0x32B8, 0x3340, 0x33CF, 0x3464, 0x34FD, 0x359B, 0x363D, 0x36E2,\n    0x3789, 0x3832, 0x38DC, 0x3987, 0x3A31, 0x3ADA, 0x3B82, 0x3C27,\n    0x3CC9, 0x3D68, 0x3E02, 0x3E97, 0x3F27, 0x3FB0, 0x4032, 0x40AD,\n    0x4120, 0x4189, 0x41E9, 0x423E, 0x4288, 0x42C7, 0x42F9, 0x431F,\n    0x4336, 0x4340,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_06.inc.c",
    "content": "static const struct Animation anim_06[] = {\n    1,\n    189,\n    0,\n    0,\n    0x0C,\n    ANIMINDEX_NUMPARTS(anim_06_indices),\n    anim_06_values,\n    anim_06_indices,\n    0,\n};\n\n\nstatic const u16 anim_06_indices[] = {\n    0x000C, 0x0001, 0x0001, 0x000D, 0x000C, 0x000E, 0x0001, 0x0000, 0x0001, 0x001A, 0x0001, 0x0000,\n    0x000C, 0x019A, 0x000C, 0x01A6, 0x000C, 0x01B2,\n    0x0001, 0x0197, 0x0001, 0x0198, 0x0001, 0x0199,\n    0x000C, 0x0173, 0x000C, 0x017F, 0x000C, 0x018B,\n    0x0001, 0x016F, 0x0001, 0x0170, 0x0001, 0x0171,\n    0x000C, 0x004B, 0x000C, 0x0057, 0x000C, 0x0063,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x003F,\n    0x000C, 0x001B, 0x000C, 0x0027, 0x000C, 0x0033,\n    0x0001, 0x016B, 0x0001, 0x016C, 0x0001, 0x016D,\n    0x000C, 0x009F, 0x000C, 0x00AB, 0x000C, 0x00B7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x0093,\n    0x000C, 0x006F, 0x000C, 0x007B, 0x000C, 0x0087,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x016E,\n    0x000C, 0x0147, 0x000C, 0x0153, 0x000C, 0x015F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x013B,\n    0x000C, 0x0117, 0x000C, 0x0123, 0x000C, 0x012F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0172,\n    0x000C, 0x00F3, 0x000C, 0x00FF, 0x000C, 0x010B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x00E7,\n    0x000C, 0x00C3, 0x000C, 0x00CF, 0x000C, 0x00DB,\n};\n\nstatic const s16 anim_06_values[] = {\n    0x0000, 0xFFD0, 0xFFD6, 0xFFE4, 0xFFF3, 0xFFFC, 0xFFFF, 0x0000,\n    0x0000, 0xFFFF, 0xFFFE, 0xFFFC, 0xFFFC, 0x00BD, 0xFF42, 0xFF4F,\n    0xFF6B, 0xFF89, 0xFF9C, 0xFFA2, 0xFFA4, 0xFFA4, 0xFFA2, 0xFF9F,\n    0xFF9D, 0xFF9C, 0x3FFF, 0xD423, 0xD3FD, 0xD3A8, 0xD34D, 0xD316,\n    0xD304, 0xD2FD, 0xD2FE, 0xD304, 0xD30B, 0xD312, 0xD315, 0xF4B6,\n    0xF429, 0xF2EB, 0xF196, 0xF0C6, 0xF083, 0xF069, 0xF06C, 0xF082,\n    0xF09E, 0xF0B8, 0xF0C2, 0xF5D3, 0xF699, 0xF859, 0xFA38, 0xFB5C,\n    0xFBBA, 0xFBDE, 0xFBDA, 0xFBBC, 0xFB94, 0xFB70, 0xFB61, 0xEB39,\n    0xE86F, 0xE228, 0xDB8A, 0xD7B7, 0xD6ED, 0xD71B, 0xD7F3, 0xD925,\n    0xDA61, 0xDB59, 0xDBBE, 0x273C, 0x2751, 0x278F, 0x27F0, 0x2870,\n    0x291F, 0x29FE, 0x2AF3, 0x2BE1, 0x2CAD, 0x2D3C, 0x2D71, 0x0356,\n    0x031A, 0x028C, 0x01E2, 0x0154, 0x00DD, 0x0058, 0xFFD3, 0xFF56,\n    0xFEEF, 0xFEA9, 0xFE8F, 0x81BE, 0x82EA, 0x859A, 0x8891, 0x8A92,\n    0x8B97, 0x8C6F, 0x8D1A, 0x8D9C, 0x8DF6, 0x8E2B, 0x8E3C, 0x0DAB,\n    0x106C, 0x16A9, 0x1D57, 0x216B, 0x22B8, 0x233B, 0x232B, 0x22C0,\n    0x2230, 0x21B1, 0x217B, 0x0604, 0x0642, 0x06CF, 0x0765, 0x07C1,\n    0x07DE, 0x07E9, 0x07E8, 0x07DF, 0x07D2, 0x07C7, 0x07C2, 0xF147,\n    0xF57C, 0xFF03, 0x0935, 0x0F70, 0x116B, 0x1234, 0x121C, 0x1178,\n    0x109C, 0x0FDA, 0x0F87, 0xEBA1, 0xE9A1, 0xE52C, 0xE096, 0xDE34,\n    0xDE42, 0xDF37, 0xE0BF, 0xE284, 0xE430, 0xE570, 0xE5ED, 0xE4CE,\n    0xE36D, 0xE04B, 0xDCEB, 0xDAD2, 0xDA13, 0xD9B1, 0xD994, 0xD9A6,\n    0xD9D0, 0xD9FA, 0xDA0D, 0x0469, 0x0542, 0x071F, 0x08FB, 0x09D2,\n    0x0982, 0x08B7, 0x07A3, 0x0677, 0x0563, 0x049A, 0x044C, 0x78CB,\n    0x7908, 0x7988, 0x79F7, 0x7A01, 0x7991, 0x78E2, 0x7810, 0x7739,\n    0x767B, 0x75F3, 0x75BF, 0x001B, 0x0215, 0x068D, 0x0B55, 0x0E3F,\n    0x0F2B, 0x0F86, 0x0F77, 0x0F27, 0x0EBC, 0x0E5F, 0x0E38, 0x025B,\n    0x01F7, 0x0113, 0x0020, 0xFF8C, 0xFF5E, 0xFF4B, 0xFF4E, 0xFF5E,\n    0xFF74, 0xFF86, 0xFF8E, 0xCB25, 0xCC66, 0xCF3C, 0xD245, 0xD41E,\n    0xD4B4, 0xD4EE, 0xD4E4, 0xD4B1, 0xD46E, 0xD433, 0xD419, 0x37F5,\n    0x37F6, 0x37E8, 0x37B0, 0x3734, 0x365C, 0x353B, 0x33F9, 0x32BC,\n    0x31A9, 0x30E8, 0x309F, 0x14F5, 0x13A5, 0x10B7, 0x0DB2, 0x0C1C,\n    0x0C1B, 0x0CAE, 0x0DA0, 0x0EBA, 0x0FC6, 0x108F, 0x10DE, 0x057E,\n    0x079C, 0x0C60, 0x1163, 0x1440, 0x14C6, 0x148A, 0x13C9, 0x12C5,\n    0x11BD, 0x10EF, 0x109D, 0xA609, 0xA1AE, 0x97EE, 0x8DC1, 0x881F,\n    0x8779, 0x8889, 0x8AB8, 0x8D70, 0x901C, 0x9224, 0x92F3, 0xFFF2,\n    0xFD30, 0xF6F2, 0xF046, 0xEC3C, 0xEB02, 0xEA98, 0xEAC3, 0xEB4A,\n    0xEBF3, 0xEC82, 0xECBF, 0xFEE0, 0xFEAA, 0xFE44, 0xFE01, 0xFE39,\n    0xFF07, 0x0030, 0x0189, 0x02E4, 0x0414, 0x04EB, 0x053D, 0xE4B6,\n    0xE172, 0xDA30, 0xD2BD, 0xCEE9, 0xCF19, 0xD0CA, 0xD36E, 0xD674,\n    0xD94F, 0xDB6E, 0xDC43, 0x3700, 0x3887, 0x3BE4, 0x3F40, 0x40C7,\n    0x403D, 0x3ED7, 0x3CEE, 0x3AD9, 0x38F0, 0x378B, 0x3700, 0x06D5,\n    0x05EB, 0x03D7, 0x019E, 0x0042, 0xFFD5, 0xFFA9, 0xFFAE, 0xFFD2,\n    0x0001, 0x002B, 0x003D, 0xF68A, 0xF937, 0xFF44, 0x05BF, 0x09B4,\n    0x0AF7, 0x0B76, 0x0B67, 0x0AFF, 0x0A73, 0x09F8, 0x09C3, 0x9B89,\n    0x983D, 0x90C5, 0x88C6, 0x83E4, 0x8256, 0x81B9, 0x81CB, 0x824C,\n    0x82F9, 0x8390, 0x83D2, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001,\n    0x8001, 0x4171, 0xBF5F, 0xBE58, 0xBE57, 0xBE55, 0xBE53, 0xBE52,\n    0xBE53, 0xBE55, 0xBE57, 0xBE59, 0xBE5B, 0xBE5D, 0xBE5D, 0xF5DB,\n    0xF4B7, 0xF228, 0xEF7A, 0xEDF9, 0xEDC0, 0xEDF5, 0xEE73, 0xEF16,\n    0xEFB8, 0xF034, 0xF066, 0xE9C3, 0xEC13, 0xF150, 0xF6EB, 0xFA56,\n    0xFB69, 0xFBD3, 0xFBC1, 0xFB61, 0xFAE3, 0xFA76, 0xFA47, 0x0B41,\n    0x023B, 0xF5BC, 0x0B65, 0x0B26, 0x0A98, 0x0A00, 0x09A4, 0x0986,\n    0x097A, 0x097C, 0x0985, 0x0992, 0x099D, 0x09A2, 0x0195, 0x023E,\n    0x03BE, 0x0558, 0x0653, 0x06A3, 0x06C2, 0x06BF, 0x06A5, 0x0682,\n    0x0664, 0x0657, 0x550D, 0x5293, 0x4CF8, 0x46F8, 0x434E, 0x4223,\n    0x41AD, 0x41BB, 0x421B, 0x429D, 0x430F, 0x4340,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_07_08.inc.c",
    "content": "static const struct Animation anim_07[] = {\n    1,\n    189,\n    0,\n    0,\n    0x01,\n    ANIMINDEX_NUMPARTS(anim_07_08_indices),\n    anim_07_08_values,\n    anim_07_08_indices,\n    0,\n};\n\nstatic const struct Animation anim_08[] = {\n    1,\n    189,\n    1,\n    0,\n    0x14,\n    ANIMINDEX_NUMPARTS(anim_07_08_indices),\n    anim_07_08_values,\n    anim_07_08_indices,\n    0,\n};\n\n\nstatic const u16 anim_07_08_indices[] = {\n    0x0014, 0x0001, 0x0014, 0x0015, 0x0014, 0x0029, 0x0001, 0x0000, 0x0001, 0x003D, 0x0001, 0x0000,\n    0x0014, 0x02A2, 0x0014, 0x02B6, 0x0014, 0x02CA,\n    0x0001, 0x029F, 0x0001, 0x02A0, 0x0001, 0x02A1,\n    0x0014, 0x0263, 0x0014, 0x0277, 0x0014, 0x028B,\n    0x0001, 0x025F, 0x0001, 0x0260, 0x0001, 0x0261,\n    0x0014, 0x008E, 0x0014, 0x00A2, 0x0014, 0x00B6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x007A,\n    0x0014, 0x003E, 0x0014, 0x0052, 0x0014, 0x0066,\n    0x0001, 0x025B, 0x0001, 0x025C, 0x0001, 0x025D,\n    0x0014, 0x011A, 0x0014, 0x012E, 0x0014, 0x0142,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x0106,\n    0x0014, 0x00CA, 0x0014, 0x00DE, 0x0014, 0x00F2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x025E,\n    0x0014, 0x021F, 0x0014, 0x0233, 0x0014, 0x0247,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x021E,\n    0x0014, 0x01E2, 0x0014, 0x01F6, 0x0014, 0x020A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0262,\n    0x0014, 0x01A6, 0x0014, 0x01BA, 0x0014, 0x01CE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x0192,\n    0x0014, 0x0156, 0x0014, 0x016A, 0x0014, 0x017E,\n};\n\nstatic const s16 anim_07_08_values[] = {\n    0x0000, 0x003C, 0x003B, 0x003A, 0x0037, 0x0034, 0x0031, 0x002D,\n    0x0028, 0x0023, 0x001E, 0x0019, 0x0014, 0x000F, 0x000A, 0x0006,\n    0x0002, 0x0000, 0xFFFE, 0xFFFD, 0xFFFC, 0x0124, 0x0123, 0x0121,\n    0x011D, 0x0118, 0x0112, 0x010C, 0x0104, 0x00FD, 0x00F4, 0x00EC,\n    0x00E4, 0x00DC, 0x00D5, 0x00CE, 0x00C9, 0x00C4, 0x00C0, 0x00BE,\n    0x00BD, 0xFF38, 0xFF39, 0xFF3B, 0xFF3F, 0xFF44, 0xFF49, 0xFF50,\n    0xFF57, 0xFF5E, 0xFF66, 0xFF6E, 0xFF76, 0xFF7D, 0xFF84, 0xFF8B,\n    0xFF91, 0xFF95, 0xFF99, 0xFF9B, 0xFF9C, 0x3FFF, 0xD423, 0xD421,\n    0xD41B, 0xD411, 0xD404, 0xD3F5, 0xD3E3, 0xD3D0, 0xD3BC, 0xD3A7,\n    0xD391, 0xD37C, 0xD368, 0xD355, 0xD343, 0xD334, 0xD327, 0xD31D,\n    0xD317, 0xD315, 0xF4B6, 0xF4AD, 0xF496, 0xF472, 0xF442, 0xF408,\n    0xF3C7, 0xF37F, 0xF333, 0xF2E4, 0xF294, 0xF245, 0xF1F9, 0xF1B1,\n    0xF170, 0xF136, 0xF106, 0xF0E2, 0xF0CB, 0xF0C2, 0xF5D3, 0xF5DF,\n    0xF5FF, 0xF632, 0xF676, 0xF6C7, 0xF723, 0xF788, 0xF7F3, 0xF862,\n    0xF8D2, 0xF941, 0xF9AC, 0xFA11, 0xFA6D, 0xFABE, 0xFB02, 0xFB35,\n    0xFB55, 0xFB61, 0xEB39, 0xEB19, 0xEABF, 0xEA30, 0xE974, 0xE892,\n    0xE791, 0xE678, 0xE54D, 0xE418, 0xE2DF, 0xE1AA, 0xE07F, 0xDF66,\n    0xDE65, 0xDD83, 0xDCC7, 0xDC38, 0xDBDE, 0xDBBE, 0x273C, 0x2748,\n    0x276D, 0x27A6, 0x27F1, 0x284C, 0x28B3, 0x2924, 0x299C, 0x2A18,\n    0x2A95, 0x2B11, 0x2B89, 0x2BFA, 0x2C61, 0x2CBB, 0x2D07, 0x2D40,\n    0x2D64, 0x2D71, 0x0356, 0x034C, 0x0330, 0x0304, 0x02CA, 0x0284,\n    0x0235, 0x01DE, 0x0182, 0x0122, 0x00C2, 0x0062, 0x0006, 0xFFB0,\n    0xFF61, 0xFF1B, 0xFEE1, 0xFEB5, 0xFE99, 0xFE8F, 0x81BE, 0x81D8,\n    0x8221, 0x8294, 0x832C, 0x83E2, 0x84B1, 0x8594, 0x8685, 0x877F,\n    0x887B, 0x8974, 0x8A66, 0x8B49, 0x8C18, 0x8CCE, 0x8D66, 0x8DD9,\n    0x8E22, 0x8E3C, 0x0DAB, 0x0DD3, 0x0E47, 0x0EFE, 0x0FEE, 0x1110,\n    0x1259, 0x13C1, 0x153F, 0x16CB, 0x185B, 0x19E6, 0x1B65, 0x1CCD,\n    0x1E16, 0x1F37, 0x2027, 0x20DE, 0x2152, 0x217B, 0x0604, 0x0608,\n    0x0612, 0x0622, 0x0637, 0x0650, 0x066D, 0x068D, 0x06AF, 0x06D1,\n    0x06F5, 0x0717, 0x0739, 0x0759, 0x0776, 0x078F, 0x07A4, 0x07B4,\n    0x07BE, 0x07C2, 0xF147, 0xF185, 0xF236, 0xF34D, 0xF4BC, 0xF676,\n    0xF86C, 0xFA92, 0xFCDA, 0xFF36, 0x0198, 0x03F4, 0x063C, 0x0862,\n    0x0A58, 0x0C12, 0x0D81, 0x0E98, 0x0F49, 0x0F87, 0xEBA1, 0xEB96,\n    0xEB74, 0xEB40, 0xEAFB, 0xEAA7, 0xEA49, 0xE9E1, 0xE973, 0xE901,\n    0xE88E, 0xE81C, 0xE7AE, 0xE746, 0xE6E7, 0xE694, 0xE64F, 0xE61A,\n    0xE5F9, 0xE5ED, 0xE4CE, 0xE4B8, 0xE479, 0xE416, 0xE394, 0xE2F7,\n    0xE244, 0xE181, 0xE0B1, 0xDFDA, 0xDF01, 0xDE2A, 0xDD5B, 0xDC97,\n    0xDBE5, 0xDB48, 0xDAC5, 0xDA62, 0xDA23, 0xDA0D, 0x0469, 0x0469,\n    0x0468, 0x0467, 0x0466, 0x0464, 0x0462, 0x0460, 0x045E, 0x045C,\n    0x0459, 0x0457, 0x0455, 0x0453, 0x0451, 0x0450, 0x044E, 0x044D,\n    0x044C, 0x044C, 0x78CB, 0x78C4, 0x78B2, 0x7896, 0x7871, 0x7845,\n    0x7812, 0x77DB, 0x77A0, 0x7763, 0x7726, 0x76E9, 0x76AE, 0x7677,\n    0x7644, 0x7618, 0x75F3, 0x75D7, 0x75C5, 0x75BF, 0x001B, 0x0036,\n    0x0081, 0x00F5, 0x018A, 0x023A, 0x02FD, 0x03CB, 0x049E, 0x056E,\n    0x0634, 0x0711, 0x081D, 0x0945, 0x0A76, 0x0B9C, 0x0CA2, 0x0D76,\n    0x0E04, 0x0E38, 0x025B, 0x0256, 0x0247, 0x0230, 0x0212, 0x01EF,\n    0x01C9, 0x01A0, 0x0176, 0x014C, 0x0125, 0x00F9, 0x00C4, 0x0089,\n    0x004C, 0x0012, 0xFFDF, 0xFFB4, 0xFF98, 0xFF8E, 0xCB25, 0xCB36,\n    0xCB66, 0xCBAF, 0xCC0E, 0xCC7E, 0xCCF9, 0xCD7C, 0xCE02, 0xCE86,\n    0xCF03, 0xCF8F, 0xD03A, 0xD0F6, 0xD1B7, 0xD272, 0xD318, 0xD39F,\n    0xD3F9, 0xD419, 0x37F5, 0x3847, 0x3926, 0x3A6B, 0x3BF1, 0x3D93,\n    0x3F2C, 0x4094, 0x41A8, 0x4242, 0x423B, 0x4153, 0x3F8B, 0x3D27,\n    0x3A69, 0x3795, 0x34EE, 0x32B6, 0x3130, 0x309F, 0x14C2, 0x1446,\n    0x12F2, 0x10FC, 0x0E98, 0x0BFA, 0x0957, 0x06E3, 0x04D3, 0x035B,\n    0x02AE, 0x0302, 0x0439, 0x0616, 0x0858, 0x0AC0, 0x0D0D, 0x0F01,\n    0x105C, 0x10DE, 0xFEBE, 0xFF8C, 0x01C0, 0x0507, 0x090C, 0x0D7E,\n    0x1207, 0x1655, 0x1A14, 0x1CF1, 0x1E99, 0x1EDC, 0x1DF8, 0x1C3A,\n    0x19ED, 0x175F, 0x14DD, 0x12B4, 0x112F, 0x109D, 0xA23E, 0xA0EA,\n    0x9D4D, 0x97F3, 0x916B, 0x8A40, 0x8301, 0x7C38, 0x7678, 0x724A,\n    0x703D, 0x70CB, 0x73A5, 0x7829, 0x7DB7, 0x83AF, 0x896A, 0x8E4A,\n    0x91AE, 0x92F3, 0xFFF2, 0xFFD3, 0xFF7A, 0xFEF0, 0xFE3C, 0xFD65,\n    0xFC75, 0xFB72, 0xFA64, 0xF953, 0xF847, 0xF711, 0xF594, 0xF3EA,\n    0xF233, 0xF08A, 0xEF0D, 0xEDD9, 0xED0B, 0xECBF, 0xFEE0, 0xFEC6,\n    0xFE82, 0xFE21, 0xFDAF, 0xFD39, 0xFCCC, 0xFC74, 0xFC3F, 0xFC38,\n    0xFC6D, 0xFD00, 0xFDF4, 0xFF2B, 0x0085, 0x01E6, 0x032E, 0x043E,\n    0x04F8, 0x053D, 0xE4B6, 0xE3F2, 0xE1DC, 0xDEC6, 0xDB01, 0xD6DF,\n    0xD2B2, 0xCECA, 0xCB7A, 0xC913, 0xC7E7, 0xC83E, 0xC9EC, 0xCC94,\n    0xCFD5, 0xD353, 0xD6AF, 0xD989, 0xDB85, 0xDC43, 0x3700, 0x1439,\n    0x13E2, 0x12F2, 0x1185, 0x0FBB, 0x0DB2, 0x0B86, 0x0958, 0x0744,\n    0x0569, 0x03E5, 0x02C9, 0x01FF, 0x0170, 0x0103, 0x009F, 0x0055,\n    0x003A, 0x0039, 0x003D, 0xDC60, 0xDC8C, 0xDD0F, 0xDDE8, 0xDF16,\n    0xE096, 0xE268, 0xE48A, 0xE6FC, 0xE9BA, 0xECC5, 0xF191, 0xF896,\n    0x0059, 0x0762, 0x0C34, 0x0DA3, 0x0C98, 0x0ABF, 0x09C3, 0x8D80,\n    0x8E02, 0x8F5E, 0x9155, 0x93A8, 0x9619, 0x9868, 0x9A56, 0x9BA5,\n    0x9C15, 0x9B68, 0x977C, 0x8FE0, 0x86DD, 0x7EB8, 0x79C1, 0x79DA,\n    0x7D78, 0x81C2, 0x83D2, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001,\n    0x8001, 0x4171, 0xBF5F, 0xBE58, 0xBE58, 0xBE58, 0xBE58, 0xBE58,\n    0xBE59, 0xBE59, 0xBE59, 0xBE5A, 0xBE5A, 0xBE5B, 0xBE5B, 0xBE5C,\n    0xBE5C, 0xBE5C, 0xBE5D, 0xBE5D, 0xBE5D, 0xBE5D, 0xBE5D, 0xF5DB,\n    0xF5D0, 0xF5B0, 0xF57D, 0xF53B, 0xF4EC, 0xF491, 0xF42E, 0xF3C4,\n    0xF357, 0xF2E9, 0xF27C, 0xF213, 0xF1B0, 0xF155, 0xF105, 0xF0C3,\n    0xF091, 0xF071, 0xF066, 0xE9C3, 0xE9E5, 0xEA46, 0xEADE, 0xEBA6,\n    0xEC97, 0xEDA9, 0xEED6, 0xF014, 0xF15E, 0xF2AC, 0xF3F5, 0xF534,\n    0xF660, 0xF772, 0xF864, 0xF92C, 0xF9C4, 0xFA25, 0xFA47, 0x0AE1,\n    0x00CC, 0xF043, 0x0C84, 0x0C7E, 0x0C6D, 0x0C52, 0x0C2F, 0x0C05,\n    0x0BD5, 0x0BA1, 0x0B6A, 0x0B30, 0x0AF6, 0x0ABC, 0x0A85, 0x0A50,\n    0x0A20, 0x09F6, 0x09D3, 0x09B9, 0x09A8, 0x09A2, 0x1134, 0x111D,\n    0x10DE, 0x107A, 0x0FF6, 0x0F57, 0x0EA3, 0x0DDD, 0x0D0C, 0x0C33,\n    0x0B57, 0x0A7F, 0x09AD, 0x08E7, 0x0833, 0x0794, 0x0711, 0x06AD,\n    0x066D, 0x0657, 0x59DD, 0x59AF, 0x592A, 0x585A, 0x5747, 0x55FD,\n    0x5486, 0x52EB, 0x5136, 0x4F73, 0x4DAA, 0x4BE6, 0x4A32, 0x4897,\n    0x471F, 0x45D5, 0x44C3, 0x43F3, 0x436E, 0x4340,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_09.inc.c",
    "content": "static const struct Animation anim_09[] = {\n    16,\n    189,\n    0,\n    0,\n    0x34,\n    ANIMINDEX_NUMPARTS(anim_09_indices),\n    anim_09_values,\n    anim_09_indices,\n    0,\n};\n\n\nstatic const u16 anim_09_indices[] = {\n    0x0034, 0x0001, 0x0034, 0x0035, 0x0034, 0x0069, 0x0001, 0x0000, 0x0001, 0x009D, 0x0001, 0x0000,\n    0x0034, 0x055A, 0x0034, 0x058E, 0x0034, 0x05C2,\n    0x0034, 0x04BE, 0x0034, 0x04F2, 0x0034, 0x0526,\n    0x0034, 0x0489, 0x0001, 0x0000, 0x0001, 0x04BD,\n    0x0001, 0x0485, 0x0001, 0x0486, 0x0001, 0x0487,\n    0x0034, 0x00D5, 0x0034, 0x0109, 0x0034, 0x013D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0034, 0x00A1,\n    0x0001, 0x009E, 0x0001, 0x009F, 0x0001, 0x00A0,\n    0x0001, 0x0481, 0x0001, 0x0482, 0x0001, 0x0483,\n    0x0034, 0x01A8, 0x0034, 0x01DC, 0x0034, 0x0210,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0034, 0x0174,\n    0x0001, 0x0171, 0x0001, 0x0172, 0x0001, 0x0173,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0484,\n    0x0034, 0x03E5, 0x0034, 0x0419, 0x0034, 0x044D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0034, 0x03B1,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x03B0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0488,\n    0x0034, 0x0314, 0x0034, 0x0348, 0x0034, 0x037C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0034, 0x02E0,\n    0x0034, 0x0244, 0x0034, 0x0278, 0x0034, 0x02AC,\n};\n\nstatic const s16 anim_09_values[] = {\n    0x0000, 0xFFFC, 0xFFFC, 0xFFFA, 0xFFF8, 0xFFF6, 0xFFF3, 0xFFF0,\n    0xFFED, 0xFFEA, 0xFFE8, 0xFFE6, 0xFFE5, 0xFFE4, 0xFFE4, 0xFFE5,\n    0xFFE6, 0xFFE7, 0xFFE8, 0xFFEA, 0xFFEC, 0xFFED, 0xFFF0, 0xFFF2,\n    0xFFF4, 0xFFF7, 0xFFF9, 0xFFFC, 0xFFFF, 0x0002, 0x0006, 0x000B,\n    0x0010, 0x0015, 0x0019, 0x001D, 0x001F, 0x0020, 0x0020, 0x001F,\n    0x001D, 0x001A, 0x0017, 0x0014, 0x0011, 0x000E, 0x000B, 0x0007,\n    0x0004, 0x0001, 0xFFFF, 0xFFFC, 0xFFFC, 0x02B8, 0x02B8, 0x02B8,\n    0x02B8, 0x02B8, 0x02B8, 0x02B8, 0x02B8, 0x02B8, 0x02B8, 0x02B8,\n    0x02B8, 0x02B8, 0x02B8, 0x02B8, 0x02B8, 0x02B8, 0x02B8, 0x02B8,\n    0x02B8, 0x02B8, 0x02B8, 0x02B8, 0x02B8, 0x02B8, 0x02B8, 0x02B8,\n    0x02B8, 0x02B8, 0x02B8, 0x02B8, 0x02B8, 0x02B8, 0x02B8, 0x02B8,\n    0x02B8, 0x02B8, 0x02B8, 0x02B8, 0x02B8, 0x02B8, 0x02B8, 0x02B8,\n    0x02B8, 0x02B8, 0x02B8, 0x02B8, 0x02B8, 0x02B8, 0x02B8, 0x02B8,\n    0x02B8, 0xFFE7, 0xFFE7, 0xFFE8, 0xFFE9, 0xFFEA, 0xFFEB, 0xFFED,\n    0xFFEE, 0xFFF0, 0xFFF1, 0xFFF3, 0xFFF4, 0xFFF4, 0xFFF5, 0xFFF5,\n    0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5,\n    0xFFF4, 0xFFF4, 0xFFF3, 0xFFF3, 0xFFF2, 0xFFF0, 0xFFEE, 0xFFEC,\n    0xFFEA, 0xFFE8, 0xFFE6, 0xFFE5, 0xFFE6, 0xFFE9, 0xFFEB, 0xFFEB,\n    0xFFEB, 0xFFEB, 0xFFEB, 0xFFEA, 0xFFEA, 0xFFEA, 0xFFE9, 0xFFE9,\n    0xFFE8, 0xFFE8, 0xFFE7, 0xFFE7, 0xFFE7, 0x3FFF, 0x1934, 0xC640,\n    0xE0A1, 0xEF63, 0xEF4B, 0xEF08, 0xEEA2, 0xEE1F, 0xED86, 0xECDF,\n    0xEC30, 0xEB80, 0xEAD6, 0xEA3A, 0xE9B2, 0xE946, 0xE8ED, 0xE89A,\n    0xE84D, 0xE805, 0xE7C2, 0xE784, 0xE749, 0xE713, 0xE6E0, 0xE6AF,\n    0xE682, 0xE656, 0xE62C, 0xE604, 0xE5D7, 0xE5A2, 0xE56A, 0xE532,\n    0xE4FE, 0xE4D1, 0xE4B0, 0xE49E, 0xE49E, 0xE4B6, 0xE4E7, 0xE537,\n    0xE5B4, 0xE666, 0xE741, 0xE83B, 0xE948, 0xEA5E, 0xEB72, 0xEC79,\n    0xED69, 0xEE36, 0xEED6, 0xEF3E, 0xEF63, 0x47C2, 0x47C2, 0x47C1,\n    0x47C1, 0x47C0, 0x47BF, 0x47BE, 0x47BD, 0x47BC, 0x47BB, 0x47BA,\n    0x47B9, 0x47B9, 0x47B9, 0x47BB, 0x47BE, 0x47C2, 0x47C6, 0x47CA,\n    0x47CD, 0x47D0, 0x47D2, 0x47D2, 0x47D0, 0x47CB, 0x47C4, 0x47BA,\n    0x47AB, 0x4794, 0x4777, 0x4757, 0x4734, 0x4711, 0x46EF, 0x46CF,\n    0x46B4, 0x469E, 0x4690, 0x468B, 0x4691, 0x46A0, 0x46B6, 0x46D2,\n    0x46F2, 0x4715, 0x4739, 0x475C, 0x477C, 0x4798, 0x47AE, 0x47BD,\n    0x47C2, 0x044B, 0x0445, 0x0431, 0x0411, 0x03E8, 0x03B6, 0x037D,\n    0x033E, 0x02FB, 0x02B6, 0x026F, 0x0229, 0x01E5, 0x019C, 0x014A,\n    0x00F0, 0x0091, 0x002E, 0xFFCB, 0xFF68, 0xFF08, 0xFEAE, 0xFE5A,\n    0xFE10, 0xFDD1, 0xFDA0, 0xFD7F, 0xFD6F, 0xFD6E, 0xFD7B, 0xFD94,\n    0xFDB8, 0xFDE5, 0xFE1B, 0xFE56, 0xFE97, 0xFEDA, 0xFF20, 0xFF66,\n    0xFFB7, 0x0019, 0x008A, 0x0106, 0x0187, 0x0209, 0x0288, 0x0300,\n    0x036C, 0x03C7, 0x040E, 0x043B, 0x044B, 0x61F5, 0x61F4, 0x61F0,\n    0x61EA, 0x61E2, 0x61D8, 0x61CD, 0x61C1, 0x61B4, 0x61A7, 0x6199,\n    0x618C, 0x617F, 0x6171, 0x6162, 0x6152, 0x6140, 0x612F, 0x611D,\n    0x610B, 0x60F9, 0x60E8, 0x60D8, 0x60C9, 0x60BC, 0x60B0, 0x60A6,\n    0x609E, 0x6097, 0x6090, 0x608B, 0x6086, 0x6084, 0x6083, 0x6085,\n    0x6088, 0x608E, 0x6097, 0x60A3, 0x60B4, 0x60CC, 0x60E8, 0x6109,\n    0x612C, 0x6150, 0x6174, 0x6195, 0x61B4, 0x61CF, 0x61E3, 0x61F1,\n    0x61F5, 0xD8A9, 0x25C0, 0xCB6C, 0xF3DE, 0xF3C5, 0xF381, 0xF31A,\n    0xF299, 0xF207, 0xF16C, 0xF0D1, 0xF03F, 0xEFBE, 0xEF57, 0xEF13,\n    0xEEFA, 0xEF0E, 0xEF46, 0xEF9B, 0xF007, 0xF084, 0xF10C, 0xF199,\n    0xF223, 0xF2A5, 0xF31A, 0xF379, 0xF3BE, 0xF3E2, 0xF3DE, 0xF3A3,\n    0xF32D, 0xF289, 0xF1C2, 0xF0E4, 0xEFFD, 0xEF17, 0xEE40, 0xED84,\n    0xECEE, 0xEC8B, 0xEC67, 0xEC87, 0xECE1, 0xED6A, 0xEE17, 0xEEDE,\n    0xEFB5, 0xF091, 0xF167, 0xF22F, 0xF2DC, 0xF364, 0xF3BE, 0xF3DE,\n    0xD7F5, 0xD7F1, 0xD7E3, 0xD7CF, 0xD7B6, 0xD799, 0xD77B, 0xD75C,\n    0xD740, 0xD727, 0xD712, 0xD705, 0xD700, 0xD704, 0xD70E, 0xD71D,\n    0xD730, 0xD747, 0xD760, 0xD77A, 0xD793, 0xD7AC, 0xD7C3, 0xD7D7,\n    0xD7E7, 0xD7F1, 0xD7F5, 0xD7F2, 0xD7E6, 0xD7D3, 0xD7BC, 0xD7A2,\n    0xD786, 0xD769, 0xD74F, 0xD737, 0xD725, 0xD718, 0xD714, 0xD717,\n    0xD722, 0xD732, 0xD747, 0xD75E, 0xD778, 0xD792, 0xD7AB, 0xD7C2,\n    0xD7D7, 0xD7E7, 0xD7F2, 0xD7F5, 0xF20C, 0xF226, 0xF26E, 0xF2D9,\n    0xF361, 0xF3FA, 0xF49D, 0xF53F, 0xF5D9, 0xF660, 0xF6CC, 0xF713,\n    0xF72D, 0xF71A, 0xF6E6, 0xF695, 0xF62E, 0xF5B5, 0xF531, 0xF4A7,\n    0xF41D, 0xF397, 0xF31D, 0xF2B2, 0xF25E, 0xF225, 0xF20C, 0xF21E,\n    0xF25A, 0xF2B7, 0xF32E, 0xF3B5, 0xF446, 0xF4D7, 0xF560, 0xF5D9,\n    0xF63A, 0xF67A, 0xF691, 0xF67E, 0xF648, 0xF5F5, 0xF58C, 0xF514,\n    0xF491, 0xF40C, 0xF38A, 0xF312, 0xF2A9, 0xF256, 0xF220, 0xF20C,\n    0x671B, 0x672C, 0x675D, 0x67A5, 0x6801, 0x6868, 0x68D6, 0x6944,\n    0x69AB, 0x6A07, 0x6A50, 0x6A80, 0x6A91, 0x6A85, 0x6A61, 0x6A2B,\n    0x69E5, 0x6993, 0x693A, 0x68DD, 0x687F, 0x6825, 0x67D3, 0x678B,\n    0x6752, 0x672B, 0x671B, 0x6727, 0x6750, 0x678F, 0x67E0, 0x683C,\n    0x689E, 0x6901, 0x695E, 0x69B0, 0x69F2, 0x6A1D, 0x6A2D, 0x6A20,\n    0x69FB, 0x69C3, 0x697C, 0x692A, 0x68D1, 0x6877, 0x681E, 0x67CC,\n    0x6785, 0x674D, 0x6728, 0x671B, 0x0040, 0x003D, 0x0037, 0x002D,\n    0x0021, 0x0014, 0x0007, 0xFFFB, 0xFFF0, 0xFFE7, 0xFFE2, 0xFFE1,\n    0xFFE4, 0xFFE9, 0xFFF1, 0xFFFA, 0x0004, 0x0010, 0x001D, 0x0029,\n    0x0036, 0x0041, 0x004C, 0x0055, 0x005D, 0x0062, 0x0064, 0x0064,\n    0x0062, 0x005F, 0x005A, 0x0054, 0x004D, 0x0046, 0x003D, 0x0035,\n    0x002D, 0x0024, 0x001C, 0x0014, 0x000D, 0x0007, 0x0002, 0xFFFF,\n    0xFFFD, 0x0000, 0x0008, 0x0015, 0x0024, 0x0032, 0x003C, 0x0040,\n    0xFF3A, 0xFF3A, 0xFF39, 0xFF38, 0xFF37, 0xFF36, 0xFF35, 0xFF34,\n    0xFF33, 0xFF32, 0xFF32, 0xFF32, 0xFF33, 0xFF34, 0xFF36, 0xFF38,\n    0xFF3A, 0xFF3C, 0xFF3E, 0xFF40, 0xFF43, 0xFF44, 0xFF46, 0xFF48,\n    0xFF49, 0xFF49, 0xFF4A, 0xFF49, 0xFF49, 0xFF48, 0xFF46, 0xFF45,\n    0xFF43, 0xFF41, 0xFF3F, 0xFF3D, 0xFF3B, 0xFF39, 0xFF37, 0xFF35,\n    0xFF34, 0xFF32, 0xFF31, 0xFF30, 0xFF2F, 0xFF2F, 0xFF30, 0xFF33,\n    0xFF35, 0xFF38, 0xFF39, 0xFF3A, 0xBD36, 0xBDAA, 0xBEE6, 0xC0BD,\n    0xC300, 0xC581, 0xC812, 0xCA85, 0xCCAD, 0xCE5A, 0xCF5E, 0xCF8D,\n    0xCEF7, 0xCDDE, 0xCC55, 0xCA71, 0xC847, 0xC5ED, 0xC375, 0xC0F6,\n    0xBE85, 0xBC35, 0xBA1B, 0xB84E, 0xB6E0, 0xB5E7, 0xB578, 0xB586,\n    0xB5EE, 0xB6A6, 0xB7A4, 0xB8DD, 0xBA46, 0xBBD5, 0xBD80, 0xBF3B,\n    0xC0FD, 0xC2BB, 0xC46A, 0xC600, 0xC772, 0xC8B5, 0xC9C0, 0xCA88,\n    0xCB02, 0xCA78, 0xC896, 0xC5E1, 0xC2DE, 0xC013, 0xBE04, 0xBD36,\n    0x1F19, 0x1EE2, 0x1E4B, 0x1D6C, 0x1C5C, 0x1B30, 0x1A01, 0x18E4,\n    0x17F0, 0x173D, 0x16E1, 0x16F3, 0x1766, 0x181B, 0x1906, 0x1A1F,\n    0x1B5B, 0x1CB3, 0x1E1A, 0x1F8A, 0x20F7, 0x2258, 0x23A4, 0x24D1,\n    0x25D5, 0x26A8, 0x273F, 0x276C, 0x271C, 0x266E, 0x2584, 0x247D,\n    0x2379, 0x2298, 0x21FA, 0x21BF, 0x2207, 0x22F2, 0x256F, 0x29C8,\n    0x2F29, 0x34BB, 0x39A9, 0x3D1F, 0x3E47, 0x3C59, 0x37D1, 0x31BC,\n    0x2B2B, 0x252B, 0x20CA, 0x1F19, 0x1354, 0x134B, 0x1334, 0x1312,\n    0x12E7, 0x12B9, 0x1289, 0x125C, 0x1234, 0x1216, 0x1204, 0x1202,\n    0x1211, 0x122A, 0x124E, 0x127A, 0x12AB, 0x12E0, 0x1317, 0x134D,\n    0x1381, 0x13B1, 0x13DA, 0x13FB, 0x1411, 0x141B, 0x1416, 0x1402,\n    0x13E2, 0x13B7, 0x1383, 0x1348, 0x1306, 0x12C0, 0x1276, 0x122C,\n    0x11E2, 0x119A, 0x1155, 0x1115, 0x10DC, 0x10AB, 0x1084, 0x1069,\n    0x105A, 0x107E, 0x10E9, 0x117E, 0x1222, 0x12BA, 0x1329, 0x1354,\n    0x08CB, 0x0899, 0x0810, 0x0745, 0x064C, 0x0538, 0x041F, 0x0315,\n    0x022D, 0x017D, 0x0119, 0x0114, 0x015E, 0x01D7, 0x0278, 0x033C,\n    0x041B, 0x0511, 0x0618, 0x0729, 0x083F, 0x0953, 0x0A61, 0x0B61,\n    0x0C4E, 0x0D23, 0x0DD8, 0x0E81, 0x0F30, 0x0FE3, 0x1098, 0x114D,\n    0x11FF, 0x12AC, 0x1352, 0x13EF, 0x147F, 0x1501, 0x1573, 0x15D1,\n    0x161B, 0x164C, 0x1664, 0x1660, 0x163D, 0x1559, 0x135F, 0x10C1,\n    0x0DF1, 0x0B61, 0x0984, 0x08CB, 0xC37A, 0xC34B, 0xC2CC, 0xC20D,\n    0xC123, 0xC020, 0xBF16, 0xBE17, 0xBD37, 0xBC87, 0xBC1B, 0xBC05,\n    0xBC3D, 0xBCA8, 0xBD3F, 0xBDF9, 0xBECF, 0xBFB8, 0xC0AD, 0xC1A6,\n    0xC29A, 0xC382, 0xC456, 0xC50E, 0xC5A1, 0xC609, 0xC63C, 0xC640,\n    0xC624, 0xC5EB, 0xC598, 0xC530, 0xC4B6, 0xC42E, 0xC39B, 0xC302,\n    0xC266, 0xC1CC, 0xC135, 0xC0A8, 0xC026, 0xBFB5, 0xBF58, 0xBF12,\n    0xBEE7, 0xBF13, 0xBFB3, 0xC099, 0xC199, 0xC286, 0xC336, 0xC37A,\n    0xCBE1, 0x18FE, 0x18EF, 0x18C6, 0x1887, 0x1836, 0x17D7, 0x176E,\n    0x1700, 0x1691, 0x1624, 0x15BE, 0x1563, 0x1518, 0x14DF, 0x14BF,\n    0x14BA, 0x14D5, 0x1514, 0x157B, 0x160F, 0x16D3, 0x17CC, 0x18FE,\n    0x1AC0, 0x1D51, 0x208D, 0x2450, 0x2879, 0x2CE3, 0x316C, 0x35F0,\n    0x3A4C, 0x3E5C, 0x41FF, 0x4510, 0x476C, 0x48F0, 0x4979, 0x48C4,\n    0x46CA, 0x43C0, 0x3FDD, 0x3B57, 0x3664, 0x313B, 0x2C13, 0x2720,\n    0x229A, 0x1EB7, 0x1BAD, 0x19B3, 0x18FE, 0xF5C9, 0xF5AA, 0xF553,\n    0xF4D2, 0xF431, 0xF37C, 0xF2C0, 0xF206, 0xF15C, 0xF0CD, 0xF065,\n    0xF02F, 0xF037, 0xF076, 0xF0D8, 0xF15A, 0xF1F8, 0xF2AC, 0xF373,\n    0xF447, 0xF525, 0xF608, 0xF6EB, 0xF7CB, 0xF8A2, 0xF96D, 0xFA26,\n    0xFAE3, 0xFBB6, 0xFC99, 0xFD86, 0xFE76, 0xFF63, 0x0045, 0x0119,\n    0x01D7, 0x0278, 0x02F7, 0x034D, 0x0373, 0x0363, 0x02ED, 0x01F8,\n    0x00A0, 0xFF05, 0xFD41, 0xFB72, 0xF9B6, 0xF82A, 0xF6EB, 0xF616,\n    0xF5C9, 0xF14C, 0xF12F, 0xF0E1, 0xF06B, 0xEFD8, 0xEF34, 0xEE89,\n    0xEDE2, 0xED4A, 0xECCB, 0xEC71, 0xEC45, 0xEC53, 0xEC9D, 0xED16,\n    0xEDB7, 0xEE78, 0xEF52, 0xF03B, 0xF12C, 0xF21E, 0xF308, 0xF3E2,\n    0xF4A4, 0xF546, 0xF5C1, 0xF60C, 0xF629, 0xF622, 0xF5FB, 0xF5B9,\n    0xF562, 0xF4FA, 0xF486, 0xF40B, 0xF38E, 0xF314, 0xF2A1, 0xF23B,\n    0xF1E7, 0xF1AA, 0xF17F, 0xF161, 0xF14B, 0xF13F, 0xF139, 0xF138,\n    0xF13B, 0xF140, 0xF146, 0xF14A, 0xF14C, 0xC7D1, 0xC814, 0xC8CB,\n    0xC9DE, 0xCB35, 0xCCB7, 0xCE4B, 0xCFDA, 0xD149, 0xD282, 0xD36A,\n    0xD3EB, 0xD3EA, 0xD380, 0xD2D9, 0xD1FA, 0xD0E8, 0xCFAA, 0xCE46,\n    0xCCC1, 0xCB20, 0xC96A, 0xC7A4, 0xC5D5, 0xC401, 0xC22E, 0xC063,\n    0xBE67, 0xBC0C, 0xB968, 0xB691, 0xB39E, 0xB0A4, 0xADBA, 0xAAF6,\n    0xA86E, 0xA638, 0xA46A, 0xA31A, 0xA25F, 0xA24F, 0xA36D, 0xA5F9,\n    0xA9A0, 0xAE10, 0xB2F4, 0xB7FB, 0xBCD2, 0xC125, 0xC4A3, 0xC6F8,\n    0xC7D1, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171,\n    0xBF5F, 0x0000, 0xFFE0, 0xFF85, 0xFEF5, 0xFE38, 0xFD54, 0xFC51,\n    0xFB35, 0xFA07, 0xF8D0, 0xF794, 0xF65D, 0xF52F, 0xF413, 0xF310,\n    0xF22C, 0xF16F, 0xF0DF, 0xF083, 0xF063, 0xF085, 0xF0FD, 0xF1D2,\n    0xF2F7, 0xF461, 0xF604, 0xF7D3, 0xF9C4, 0xFBCB, 0xFDDA, 0xFFE7,\n    0x01E5, 0x03C9, 0x0588, 0x0714, 0x0862, 0x0966, 0x0A15, 0x0A5D,\n    0x0A42, 0x09D1, 0x091A, 0x082C, 0x0717, 0x05EA, 0x04B3, 0x0383,\n    0x0268, 0x0171, 0x00AE, 0x002E, 0x0000, 0xC69A, 0x0000, 0xFFFF,\n    0xFFFB, 0xFFF5, 0xFFED, 0xFFE4, 0xFFDB, 0xFFD1, 0xFFC9, 0xFFC1,\n    0xFFBB, 0xFFB7, 0xFFB5, 0xFFB6, 0xFFB8, 0xFFBC, 0xFFC0, 0xFFC6,\n    0xFFCC, 0xFFD2, 0xFFD9, 0xFFE1, 0xFFE8, 0xFFEF, 0xFFF5, 0xFFFB,\n    0x0000, 0x0004, 0x000A, 0x000F, 0x0015, 0x001A, 0x001F, 0x0024,\n    0x0028, 0x002B, 0x002E, 0x0030, 0x0030, 0x0030, 0x002D, 0x002A,\n    0x0025, 0x0020, 0x001B, 0x0015, 0x0010, 0x000B, 0x0006, 0x0003,\n    0x0000, 0x0000, 0x0000, 0xFFEE, 0xFFBB, 0xFF6E, 0xFF0E, 0xFEA1,\n    0xFE2D, 0xFDB9, 0xFD4B, 0xFCEB, 0xFC9E, 0xFC6B, 0xFC59, 0xFC63,\n    0xFC80, 0xFCAE, 0xFCE9, 0xFD2F, 0xFD7E, 0xFDD4, 0xFE2D, 0xFE87,\n    0xFEDF, 0xFF34, 0xFF82, 0xFFC7, 0x0000, 0x0032, 0x0063, 0x0092,\n    0x00BE, 0x00E7, 0x010D, 0x012E, 0x014A, 0x0162, 0x0173, 0x017E,\n    0x0181, 0x017B, 0x0169, 0x014D, 0x012A, 0x0102, 0x00D7, 0x00AA,\n    0x007F, 0x0057, 0x0034, 0x0018, 0x0006, 0x0000, 0xED39, 0xED4B,\n    0xED7C, 0xEDC7, 0xEE24, 0xEE8C, 0xEEF9, 0xEF65, 0xEFC9, 0xF01D,\n    0xF05C, 0xF07F, 0xF07E, 0xF058, 0xF013, 0xEFB3, 0xEF3E, 0xEEBB,\n    0xEE2E, 0xED9F, 0xED11, 0xEC8C, 0xEC14, 0xEBAF, 0xEB64, 0xEB37,\n    0xEB2F, 0xEB58, 0xEBB5, 0xEC3C, 0xECE3, 0xED9E, 0xEE65, 0xEF2C,\n    0xEFEA, 0xF094, 0xF120, 0xF183, 0xF1B5, 0xF1B3, 0xF18A, 0xF13F,\n    0xF0DA, 0xF061, 0xEFDD, 0xEF54, 0xEECC, 0xEE4E, 0xEDDF, 0xED87,\n    0xED4D, 0xED39, 0x0000, 0x0000, 0x0001, 0x0002, 0x0004, 0x0006,\n    0x0008, 0x000A, 0x000C, 0x000D, 0x000F, 0x0010, 0x0010, 0x0010,\n    0x0010, 0x000F, 0x000E, 0x000D, 0x000C, 0x000A, 0x0008, 0x0006,\n    0x0004, 0x0002, 0x0000, 0xFFFD, 0xFFF9, 0xFFF5, 0xFFF0, 0xFFEA,\n    0xFFE5, 0xFFE0, 0xFFDC, 0xFFD9, 0xFFD7, 0xFFD6, 0xFFD6, 0xFFD7,\n    0xFFD9, 0xFFDB, 0xFFDE, 0xFFE1, 0xFFE5, 0xFFE8, 0xFFEC, 0xFFF0,\n    0xFFF3, 0xFFF7, 0xFFFA, 0xFFFE, 0x0000, 0x0000, 0x0000, 0xFFFA,\n    0xFFE9, 0xFFD0, 0xFFAF, 0xFF8B, 0xFF64, 0xFF3E, 0xFF19, 0xFEF9,\n    0xFEDF, 0xFECE, 0xFEC8, 0xFECA, 0xFECF, 0xFED8, 0xFEE6, 0xFEF8,\n    0xFF0E, 0xFF29, 0xFF49, 0xFF6F, 0xFF9A, 0xFFCA, 0x0000, 0x0047,\n    0x00A4, 0x0113, 0x018C, 0x0209, 0x0284, 0x02F7, 0x035B, 0x03AA,\n    0x03DE, 0x03F1, 0x03E8, 0x03CE, 0x03A6, 0x0371, 0x0331, 0x02E8,\n    0x0298, 0x0243, 0x01EB, 0x0191, 0x0138, 0x00E2, 0x008F, 0x0043,\n    0x0000, 0x0000, 0xBC7F, 0xBC77, 0xBC60, 0xBC3D, 0xBC13, 0xBBE5,\n    0xBBB5, 0xBB89, 0xBB62, 0xBB44, 0xBB34, 0xBB33, 0xBB47, 0xBB75,\n    0xBBC1, 0xBC22, 0xBC93, 0xBD0E, 0xBD8B, 0xBE06, 0xBE76, 0xBED7,\n    0xBF21, 0xBF4F, 0xBF5A, 0xBF37, 0xBEE8, 0xBE77, 0xBDEC, 0xBD51,\n    0xBCB0, 0xBC12, 0xBB80, 0xBB04, 0xBAA7, 0xBA74, 0xBA60, 0xBA5C,\n    0xBA65, 0xBA7A, 0xBA99, 0xBAC0, 0xBAEF, 0xBB22, 0xBB58, 0xBB90,\n    0xBBC7, 0xBBFD, 0xBC2E, 0xBC5A, 0xBC7F, 0xBC7F,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_0A.inc.c",
    "content": "static const struct Animation anim_0A[] = {\n    1,\n    189,\n    0,\n    0,\n    0x24,\n    ANIMINDEX_NUMPARTS(anim_0A_indices),\n    anim_0A_values,\n    anim_0A_indices,\n    0,\n};\n\n\nstatic const u16 anim_0A_indices[] = {\n    0x0001, 0x0001, 0x0024, 0x0002, 0x0001, 0x0026, 0x0001, 0x0000, 0x0001, 0x0027, 0x0001, 0x0000,\n    0x0024, 0x04B0, 0x0001, 0x0000, 0x0024, 0x04D4,\n    0x0024, 0x0444, 0x0024, 0x0468, 0x0024, 0x048C,\n    0x0024, 0x03D8, 0x0024, 0x03FC, 0x0024, 0x0420,\n    0x0001, 0x03D4, 0x0001, 0x03D5, 0x0001, 0x03D6,\n    0x0024, 0x00B8, 0x0024, 0x00DC, 0x0024, 0x0100,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0024, 0x0094,\n    0x0024, 0x0028, 0x0024, 0x004C, 0x0024, 0x0070,\n    0x0001, 0x03D0, 0x0001, 0x03D1, 0x0001, 0x03D2,\n    0x0024, 0x01B4, 0x0024, 0x01D8, 0x0024, 0x01FC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0024, 0x0190,\n    0x0024, 0x0124, 0x0024, 0x0148, 0x0024, 0x016C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x03D3,\n    0x0024, 0x0364, 0x0024, 0x0388, 0x0024, 0x03AC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0024, 0x0340,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0024, 0x031C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x03D7,\n    0x0024, 0x02B0, 0x0024, 0x02D4, 0x0024, 0x02F8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0024, 0x028C,\n    0x0024, 0x0220, 0x0024, 0x0244, 0x0024, 0x0268,\n};\n\nstatic const s16 anim_0A_values[] = {\n    0x0000, 0xFFFC, 0x0297, 0x02A6, 0x02B3, 0x02B8, 0x02B8, 0x02B8,\n    0x02B8, 0x02B8, 0x02B8, 0x02B8, 0x02B8, 0x02B8, 0x02B8, 0x02B8,\n    0x02B8, 0x02B8, 0x02B8, 0x02B8, 0x02B8, 0x02B8, 0x02B8, 0x02B8,\n    0x02B8, 0x02B8, 0x02B8, 0x02B8, 0x02B8, 0x02B8, 0x02B8, 0x02B8,\n    0x02B8, 0x02B8, 0x02B8, 0x02B8, 0x02B8, 0x02B8, 0xFFE7, 0x3FFF,\n    0x33D3, 0x2BB1, 0x226A, 0x1934, 0x0E17, 0x00A6, 0xF465, 0xECD6,\n    0xE9CA, 0xE871, 0xE862, 0xE935, 0xEA7F, 0xEBD7, 0xECD6, 0xEE37,\n    0xF076, 0xF2C4, 0xF452, 0xF53F, 0xF630, 0xF724, 0xF817, 0xF908,\n    0xF9F4, 0xFAD7, 0xFBB1, 0xFC7F, 0xFD3D, 0xFDEA, 0xFE83, 0xFF06,\n    0xFF70, 0xFFBF, 0xFFF0, 0x0000, 0xC7C7, 0xC4CB, 0xC3B1, 0xC640,\n    0xD023, 0xDFE0, 0xEF86, 0xF924, 0xFC8A, 0xFDDC, 0xFDAA, 0xFC87,\n    0xFB05, 0xF9B3, 0xF924, 0xF92B, 0xF935, 0xF93F, 0xF946, 0xF94B,\n    0xF94F, 0xF953, 0xF958, 0xF95C, 0xF960, 0xF964, 0xF968, 0xF96C,\n    0xF96F, 0xF972, 0xF975, 0xF977, 0xF979, 0xF97B, 0xF97B, 0xF97C,\n    0xDCAD, 0xDD41, 0xDE7E, 0xE0A1, 0xE4E9, 0xEB08, 0xF0F1, 0xF493,\n    0xF5F0, 0xF687, 0xF689, 0xF627, 0xF592, 0xF4FB, 0xF493, 0xF411,\n    0xF33F, 0xF266, 0xF1D4, 0xF17E, 0xF125, 0xF0CC, 0xF072, 0xF01A,\n    0xEFC4, 0xEF70, 0xEF20, 0xEED5, 0xEE8F, 0xEE50, 0xEE17, 0xEDE7,\n    0xEDC1, 0xEDA4, 0xED92, 0xED8C, 0xC5B3, 0xD4FA, 0xE415, 0xEF63,\n    0xF626, 0xFA85, 0xFD31, 0xFEDE, 0xFFED, 0x0000, 0x0000, 0x0000,\n    0xFFA4, 0xFF2F, 0xFEDE, 0xFEBE, 0xFE8D, 0xFDFD, 0xFCBE, 0xFAEA,\n    0xF8D7, 0xF690, 0xF421, 0xF196, 0xEEFB, 0xEC5C, 0xE9C4, 0xE740,\n    0xE4DB, 0xE2A2, 0xE09F, 0xDEDF, 0xDD6F, 0xDC59, 0xDBA9, 0xDB6C,\n    0x48EC, 0x4877, 0x4809, 0x47C2, 0x47B4, 0x47CA, 0x47EC, 0x4800,\n    0x48BF, 0x4A75, 0x4C66, 0x4DDA, 0x4E17, 0x4C61, 0x4800, 0x3CF0,\n    0x2AFF, 0x172E, 0x067D, 0xF868, 0xE93A, 0xD936, 0xC89C, 0xB7AB,\n    0xA6A4, 0x95C7, 0x8554, 0x7589, 0x66AC, 0x58FA, 0x4CB3, 0x4217,\n    0x3967, 0x32E3, 0x2ECB, 0x2D60, 0xF016, 0xF80C, 0xFF7F, 0x044B,\n    0x0545, 0x03C6, 0x017D, 0x0019, 0x0080, 0x01FD, 0x03D4, 0x054A,\n    0x05A4, 0x0428, 0x0019, 0xF3D4, 0xDFD7, 0xCC9D, 0xC2A2, 0xC07A,\n    0xBF03, 0xBE2C, 0xBDE1, 0xBE10, 0xBEA7, 0xBF93, 0xC0C0, 0xC21D,\n    0xC397, 0xC51B, 0xC696, 0xC7F7, 0xC929, 0xCA1B, 0xCABA, 0xCAF3,\n    0x5E34, 0x603B, 0x61BD, 0x61F5, 0x5FD8, 0x5BF8, 0x57FB, 0x5588,\n    0x53F0, 0x51D6, 0x4FDA, 0x4E9B, 0x4EB9, 0x50D2, 0x5588, 0x6102,\n    0x739E, 0x884D, 0x99F6, 0xA91F, 0xB97D, 0xCACB, 0xDCC0, 0xEF18,\n    0x018C, 0x13D6, 0x25B0, 0x36D3, 0x46F9, 0x55DC, 0x6335, 0x6EBF,\n    0x7832, 0x7F4A, 0x83C1, 0x854D, 0xC204, 0xC963, 0xD162, 0xD8A9,\n    0xE037, 0xE8AC, 0xF026, 0xF4C4, 0xF698, 0xF735, 0xF6F9, 0xF640,\n    0xF566, 0xF4C9, 0xF4C4, 0xF593, 0xF6E4, 0xF83E, 0xF927, 0xF9B2,\n    0xFA3F, 0xFACE, 0xFB5D, 0xFBEA, 0xFC74, 0xFCFA, 0xFD7A, 0xFDF2,\n    0xFE62, 0xFEC7, 0xFF21, 0xFF6E, 0xFFAC, 0xFFDA, 0xFFF7, 0x0000,\n    0x27DE, 0x28ED, 0x2893, 0x25C0, 0x1DBE, 0x1180, 0x0574, 0xFE0D,\n    0xFB64, 0xFA57, 0xFA77, 0xFB55, 0xFC82, 0xFD8F, 0xFE0D, 0xFE31,\n    0xFE6C, 0xFEA8, 0xFED0, 0xFEE8, 0xFF01, 0xFF1A, 0xFF32, 0xFF4B,\n    0xFF63, 0xFF7A, 0xFF90, 0xFFA5, 0xFFB9, 0xFFCA, 0xFFDA, 0xFFE7,\n    0xFFF2, 0xFFFA, 0xFFFF, 0x0000, 0xC99B, 0xC8B2, 0xC900, 0xCB6C,\n    0xD24C, 0xDCCF, 0xE725, 0xED81, 0xEFBF, 0xF08D, 0xF056, 0xEF82,\n    0xEE7C, 0xEDAE, 0xED81, 0xEE10, 0xEEFA, 0xEFE9, 0xF08B, 0xF0EB,\n    0xF14D, 0xF1B0, 0xF213, 0xF275, 0xF2D4, 0xF331, 0xF389, 0xF3DD,\n    0xF42A, 0xF470, 0xF4AE, 0xF4E4, 0xF50F, 0xF52F, 0xF542, 0xF549,\n    0xC9BA, 0xD956, 0xE8A5, 0xF3DE, 0xFA03, 0xFD58, 0xFEF9, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFEF4,\n    0xFD3E, 0xFB7E, 0xFA4F, 0xF99B, 0xF8E3, 0xF82A, 0xF771, 0xF6BA,\n    0xF606, 0xF559, 0xF4B3, 0xF417, 0xF386, 0xF303, 0xF28E, 0xF22B,\n    0xF1DA, 0xF19E, 0xF179, 0xF16C, 0xBD6A, 0xC7E2, 0xD1AA, 0xD7F5,\n    0xD92F, 0xD722, 0xD40C, 0xD22B, 0xD056, 0xCCCF, 0xC8F8, 0xC634,\n    0xC5E5, 0xC96C, 0xD22B, 0xEB0D, 0x1388, 0x3BD6, 0x542E, 0x5F0B,\n    0x696B, 0x7347, 0x7C9A, 0x8562, 0x8D92, 0x9529, 0x9C21, 0xA275,\n    0xA81E, 0xAD19, 0xB15E, 0xB4E9, 0xB7B4, 0xB9B9, 0xBAF3, 0xBB5D,\n    0x11CB, 0x04C7, 0xF8F7, 0xF20C, 0xF2A9, 0xF860, 0xFF4C, 0x0386,\n    0x041C, 0x0336, 0x0199, 0x000D, 0xFF57, 0x003D, 0x0386, 0x0DEA,\n    0x1ED6, 0x2F21, 0x37A1, 0x398A, 0x3AE0, 0x3BB1, 0x3C0D, 0x3C03,\n    0x3BA2, 0x3AFA, 0x3A1A, 0x3910, 0x37ED, 0x36BF, 0x3595, 0x3480,\n    0x338E, 0x32CE, 0x324F, 0x3222, 0x5F3B, 0x631E, 0x6632, 0x671B,\n    0x6434, 0x5E79, 0x587B, 0x54CE, 0x521E, 0x4E3A, 0x4A64, 0x47DF,\n    0x47ED, 0x4BD1, 0x54CE, 0x6DE1, 0x96B0, 0xBF6C, 0xD853, 0xE3DB,\n    0xEEF8, 0xF9A2, 0x03CF, 0x0D76, 0x168D, 0x1F0C, 0x26E8, 0x2E18,\n    0x3493, 0x3A4F, 0x3F43, 0x4366, 0x46AE, 0x4911, 0x4A87, 0x4B06,\n    0x0040, 0x0046, 0x004C, 0x0040, 0x0014, 0xFFD8, 0xFF9E, 0xFF7A,\n    0xFF6D, 0xFF67, 0xFF68, 0xFF6D, 0xFF72, 0xFF78, 0xFF7A, 0xFF7A,\n    0xFF7B, 0xFF7B, 0xFF7B, 0xFF7C, 0xFF7C, 0xFF7D, 0xFF7D, 0xFF7D,\n    0xFF7E, 0xFF7E, 0xFF7F, 0xFF7F, 0xFF80, 0xFF80, 0xFF80, 0xFF80,\n    0xFF81, 0xFF81, 0xFF81, 0xFF81, 0xFF3A, 0xFF39, 0xFF37, 0xFF3A,\n    0xFF43, 0xFF4F, 0xFF5A, 0xFF61, 0xFF64, 0xFF65, 0xFF65, 0xFF64,\n    0xFF63, 0xFF62, 0xFF61, 0xFF61, 0xFF61, 0xFF60, 0xFF60, 0xFF60,\n    0xFF5F, 0xFF5F, 0xFF5F, 0xFF5E, 0xFF5E, 0xFF5E, 0xFF5D, 0xFF5D,\n    0xFF5D, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5B, 0xFF5B,\n    0xBD36, 0xBBE8, 0xBA99, 0xBD36, 0xC63F, 0xD2DC, 0xDEEF, 0xE65E,\n    0xE920, 0xEA36, 0xEA13, 0xE92C, 0xE7F4, 0xE6DE, 0xE65E, 0xE64E,\n    0xE63B, 0xE626, 0xE60F, 0xE5F7, 0xE5DE, 0xE5C4, 0xE5A9, 0xE58E,\n    0xE574, 0xE55A, 0xE540, 0xE528, 0xE512, 0xE4FD, 0xE4EB, 0xE4DB,\n    0xE4CF, 0xE4C5, 0xE4BF, 0xE4BD, 0x5FBE, 0x519B, 0x351A, 0x1F19,\n    0x15F7, 0x110D, 0x0EAD, 0x0D2C, 0x0BF9, 0x0B82, 0x0B93, 0x0BF9,\n    0x0C81, 0x0CF8, 0x0D2C, 0x0D2C, 0x0D2C, 0x0D2C, 0x0D2C, 0x0D2C,\n    0x0D2C, 0x0D2C, 0x0D2C, 0x0D2C, 0x0D2C, 0x0D2C, 0x0D2C, 0x0D2C,\n    0x0D2C, 0x0D2C, 0x0D2C, 0x0D2C, 0x0D2C, 0x0D2C, 0x0D2C, 0x0D2C,\n    0x013B, 0x05B2, 0x0E2E, 0x1354, 0x1264, 0x0EE4, 0x0AE3, 0x0870,\n    0x07B0, 0x075B, 0x0757, 0x078A, 0x07DB, 0x0830, 0x0870, 0x089F,\n    0x08D6, 0x0914, 0x0956, 0x099D, 0x09E8, 0x0A35, 0x0A83, 0x0AD1,\n    0x0B1F, 0x0B6C, 0x0BB5, 0x0BFC, 0x0C3D, 0x0C7A, 0x0CAF, 0x0CDD,\n    0x0D03, 0x0D1F, 0x0D31, 0x0D37, 0x1510, 0x1295, 0x0D60, 0x08CB,\n    0x05A8, 0x02C3, 0x0070, 0xFF00, 0xFE50, 0xFDFB, 0xFDED, 0xFE14,\n    0xFE5C, 0xFEB1, 0xFF00, 0xFF4B, 0xFFA3, 0x0003, 0x006D, 0x00DD,\n    0x0153, 0x01CD, 0x0249, 0x02C6, 0x0342, 0x03BB, 0x0430, 0x049F,\n    0x0508, 0x0567, 0x05BC, 0x0605, 0x0641, 0x066D, 0x0689, 0x0693,\n    0x9613, 0xA07E, 0xB4FF, 0xC37A, 0xC686, 0xC547, 0xC272, 0xC0BC,\n    0xC09B, 0xC0A8, 0xC0CF, 0xC0FA, 0xC114, 0xC106, 0xC0BC, 0xC042,\n    0xBFB6, 0xBF1A, 0xBE70, 0xBDBB, 0xBCFD, 0xBC3A, 0xBB72, 0xBAAA,\n    0xB9E4, 0xB921, 0xB865, 0xB7B2, 0xB70A, 0xB671, 0xB5E8, 0xB573,\n    0xB513, 0xB4CC, 0xB49F, 0xB48F, 0xBC66, 0xBF39, 0xC57D, 0xCBE1,\n    0xD1F5, 0xD88F, 0xDE53, 0xE1E2, 0xE35C, 0xE3F2, 0xE3E2, 0xE368,\n    0xE2C2, 0xE22B, 0xE1E2, 0xE1D1, 0xE1BF, 0xE1AA, 0xE193, 0xE17B,\n    0xE161, 0xE147, 0xE12D, 0xE112, 0xE0F7, 0xE0DD, 0xE0C4, 0xE0AC,\n    0xE096, 0xE081, 0xE06F, 0xE05F, 0xE052, 0xE049, 0xE043, 0xE041,\n    0x5CE4, 0x4DEC, 0x2FDD, 0x18FE, 0x103A, 0x0C36, 0x0AD2, 0x09EA,\n    0x089E, 0x078D, 0x06D5, 0x0696, 0x06F0, 0x0801, 0x09EA, 0x0C81,\n    0x0F7E, 0x12D3, 0x1672, 0x1A4D, 0x1E58, 0x2283, 0x26C2, 0x2B06,\n    0x2F42, 0x3368, 0x376A, 0x3B3B, 0x3ECC, 0x4211, 0x44FA, 0x477B,\n    0x4985, 0x4B0B, 0x4BFF, 0x4C54, 0x0990, 0x04D9, 0xFBBD, 0xF5C9,\n    0xF5AF, 0xF7F0, 0xFACE, 0xFC8F, 0xFCFF, 0xFD23, 0xFD12, 0xFCE4,\n    0xFCAF, 0xFC8B, 0xFC8F, 0xFCB2, 0xFCDB, 0xFD08, 0xFD38, 0xFD6D,\n    0xFDA3, 0xFDDB, 0xFE15, 0xFE4E, 0xFE87, 0xFEBF, 0xFEF6, 0xFF29,\n    0xFF59, 0xFF85, 0xFFAD, 0xFFCE, 0xFFEA, 0xFFFE, 0x000A, 0x000F,\n    0xF0E0, 0xF081, 0xF03A, 0xF14C, 0xF48E, 0xF90E, 0xFD59, 0xFFFD,\n    0x010E, 0x01A6, 0x01D6, 0x01B0, 0x0149, 0x00B1, 0xFFFD, 0xFF2F,\n    0xFE41, 0xFD37, 0xFC17, 0xFAE3, 0xF9A1, 0xF855, 0xF702, 0xF5AE,\n    0xF45D, 0xF312, 0xF1D2, 0xF0A2, 0xEF86, 0xEE82, 0xED9A, 0xECD2,\n    0xEC2F, 0xEBB6, 0xEB6A, 0xEB50, 0x9682, 0xA1D5, 0xB81D, 0xC7D1,\n    0xCB0B, 0xC992, 0xC662, 0xC475, 0xC497, 0xC556, 0xC64C, 0xC716,\n    0xC74E, 0xC68F, 0xC475, 0xC147, 0xBD9C, 0xB984, 0xB512, 0xB054,\n    0xAB5E, 0xA63F, 0xA108, 0x9BCA, 0x9696, 0x917E, 0x8C91, 0x87E2,\n    0x8380, 0x7F7A, 0x7BE6, 0x78D3, 0x7652, 0x7473, 0x7347, 0x72DF,\n    0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F,\n    0x0000, 0x0000, 0x0010, 0x000A, 0xFFB4, 0xFF33, 0xFEB5, 0xFE67,\n    0xFE53, 0xFE5A, 0xFE70, 0xFE89, 0xFE98, 0xFE91, 0xFE67, 0xFE23,\n    0xFDD4, 0xFD7C, 0xFD1C, 0xFCB6, 0xFC4B, 0xFBDD, 0xFB6D, 0xFAFC,\n    0xFA8C, 0xFA1E, 0xF9B4, 0xF94F, 0xF8F1, 0xF89A, 0xF84D, 0xF80B,\n    0xF7D5, 0xF7AD, 0xF794, 0xF78B, 0x0000, 0x0000, 0xFFF8, 0xFFFB,\n    0x0025, 0x0065, 0x00A4, 0x00CA, 0x00D4, 0x00D0, 0x00C5, 0x00B9,\n    0x00B2, 0x00B5, 0x00CA, 0x00EC, 0x0113, 0x013E, 0x016E, 0x01A0,\n    0x01D5, 0x020C, 0x0243, 0x027B, 0x02B2, 0x02E9, 0x031D, 0x034F,\n    0x037E, 0x03A8, 0x03CF, 0x03EF, 0x040A, 0x041E, 0x042A, 0x042F,\n    0xD130, 0xD26B, 0xCD2B, 0xC6C8, 0xC85A, 0xCCFF, 0xD21B, 0xD540,\n    0xD5F1, 0xD59E, 0xD4C0, 0xD3CF, 0xD344, 0xD397, 0xD540, 0xD7F7,\n    0xDB19, 0xDE97, 0xE264, 0xE670, 0xEAAD, 0xEF0C, 0xF380, 0xF7FA,\n    0xFC6B, 0x00C4, 0x04F8, 0x08F9, 0x0CB7, 0x1024, 0x1331, 0x15D1,\n    0x17F5, 0x198E, 0x1A8F, 0x1AE7, 0xFFDA, 0xFFD8, 0xFFE0, 0xFFF9,\n    0x003F, 0x00C5, 0x0151, 0x01A8, 0x01BB, 0x01B2, 0x0198, 0x017C,\n    0x016C, 0x0176, 0x01A8, 0x01F8, 0x0255, 0x02BD, 0x032E, 0x03A6,\n    0x0424, 0x04A5, 0x0529, 0x05AE, 0x0632, 0x06B3, 0x0730, 0x07A7,\n    0x0816, 0x087B, 0x08D6, 0x0924, 0x0964, 0x0993, 0x09B1, 0x09BB,\n    0xFFFE, 0xFFFD, 0xFFFE, 0x0000, 0x0004, 0x000F, 0x0019, 0x0020,\n    0x0021, 0x0021, 0x001F, 0x001D, 0x001B, 0x001C, 0x0020, 0x0026,\n    0x002D, 0x0035, 0x003E, 0x0047, 0x0051, 0x005A, 0x0065, 0x006F,\n    0x0079, 0x0083, 0x008C, 0x0095, 0x009E, 0x00A5, 0x00AC, 0x00B2,\n    0x00B7, 0x00BB, 0x00BD, 0x00BE, 0xECF0, 0xECEB, 0xECFC, 0xED2B,\n    0xEDB1, 0xEEB1, 0xEFBC, 0xF060, 0xF085, 0xF073, 0xF042, 0xF00D,\n    0xEFEF, 0xF002, 0xF060, 0xF0F9, 0xF1AA, 0xF26F, 0xF346, 0xF42A,\n    0xF51A, 0xF611, 0xF70C, 0xF809, 0xF904, 0xF9FA, 0xFAE7, 0xFBC9,\n    0xFC9D, 0xFD5E, 0xFE0A, 0xFE9F, 0xFF18, 0xFF72, 0xFFAA, 0xFFBE,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0981, 0x13AE, 0x1E73, 0x29BA, 0x356F, 0x417D, 0x4DD0,\n    0x5A52, 0x66F0, 0x7394, 0x802D, 0x8C9F, 0x98DA, 0xA4C9, 0xB057,\n    0xBB6F, 0xC5FD, 0xCFEB, 0xD926, 0xE198, 0xE92D, 0xEFD0, 0xF56D,\n    0xF9EF, 0xFD40, 0xFF4D, 0x0000, 0xBA63, 0xBA4C, 0xBAEA, 0xBC7F,\n    0xC0A4, 0xC75F, 0xCE97, 0xD437, 0xD875, 0xDCEA, 0xE18F, 0xE65B,\n    0xEB48, 0xF050, 0xF56A, 0xFA90, 0xFFBB, 0x04E2, 0x0A01, 0x0F10,\n    0x1407, 0x18DF, 0x1D92, 0x2218, 0x2669, 0x2A80, 0x2E55, 0x31E0,\n    0x351C, 0x3800, 0x3A85, 0x3CA5, 0x3E59, 0x3F99, 0x405E, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_0B_0C.inc.c",
    "content": "static const struct Animation anim_0B[] = {\n    17,\n    189,\n    0,\n    0,\n    0x11,\n    ANIMINDEX_NUMPARTS(anim_0B_0C_indices),\n    anim_0B_0C_values,\n    anim_0B_0C_indices,\n    0,\n};\n\nstatic const struct Animation anim_0C[] = {\n    19,\n    189,\n    16,\n    0,\n    0x11,\n    ANIMINDEX_NUMPARTS(anim_0B_0C_indices),\n    anim_0B_0C_values,\n    anim_0B_0C_indices,\n    0,\n};\n\n\nstatic const u16 anim_0B_0C_indices[] = {\n    0x0001, 0x0001, 0x0011, 0x0002, 0x0011, 0x0013, 0x0001, 0x0000, 0x0001, 0x0024, 0x0001, 0x0000,\n    0x0011, 0x026F, 0x0011, 0x0280, 0x0011, 0x0291,\n    0x0011, 0x023C, 0x0011, 0x024D, 0x0011, 0x025E,\n    0x0011, 0x0209, 0x0011, 0x021A, 0x0011, 0x022B,\n    0x0001, 0x0205, 0x0001, 0x0206, 0x0001, 0x0207,\n    0x0011, 0x0069, 0x0011, 0x007A, 0x0011, 0x008B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0011, 0x0058,\n    0x0011, 0x0025, 0x0011, 0x0036, 0x0011, 0x0047,\n    0x0001, 0x0201, 0x0001, 0x0202, 0x0001, 0x0203,\n    0x0011, 0x00E0, 0x0011, 0x00F1, 0x0011, 0x0102,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0011, 0x00CF,\n    0x0011, 0x009C, 0x0011, 0x00AD, 0x0011, 0x00BE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0204,\n    0x0011, 0x01CE, 0x0011, 0x01DF, 0x0011, 0x01F0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0011, 0x01BD,\n    0x0011, 0x018A, 0x0011, 0x019B, 0x0011, 0x01AC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0208,\n    0x0011, 0x0157, 0x0011, 0x0168, 0x0011, 0x0179,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0011, 0x0146,\n    0x0011, 0x0113, 0x0011, 0x0124, 0x0011, 0x0135,\n};\n\nstatic const s16 anim_0B_0C_values[] = {\n    0x0000, 0xFFFC, 0x00C8, 0x00F4, 0x0133, 0x0176, 0x01AF, 0x01DE,\n    0x020A, 0x0230, 0x0252, 0x0271, 0x028B, 0x029D, 0x02A6, 0x02AC,\n    0x02B1, 0x02B4, 0x02B6, 0xFF9D, 0xFF9F, 0xFFA1, 0xFFA0, 0xFF9B,\n    0xFF89, 0xFF6F, 0xFF5E, 0xFF63, 0xFF74, 0xFF8B, 0xFFA3, 0xFFB8,\n    0xFFCF, 0xFFDF, 0xFFE6, 0xFFE9, 0x3FFF, 0xD51D, 0xDD72, 0xEBA4,\n    0x0614, 0x18B8, 0x13B6, 0x0629, 0x0128, 0x0265, 0x04E9, 0x084F,\n    0x0C31, 0x102B, 0x13D9, 0x16D5, 0x18BB, 0x1934, 0xF273, 0xF62C,\n    0xF4B2, 0xEA4B, 0xDFD2, 0xD9F2, 0xD5D9, 0xD344, 0xD115, 0xCEF0,\n    0xCCE5, 0xCB05, 0xC95E, 0xC801, 0xC6FE, 0xC664, 0xC640, 0xFA93,\n    0xF7CD, 0xF46F, 0xF00D, 0xEC24, 0xE9B4, 0xE7FE, 0xE6DD, 0xE5DC,\n    0xE4DB, 0xE3E3, 0xE2FB, 0xE22D, 0xE181, 0xE100, 0xE0B4, 0xE0A1,\n    0xD807, 0xCCB0, 0xC2B3, 0xB804, 0xB729, 0xCCA5, 0xE97F, 0xF66B,\n    0xF96D, 0xFA6F, 0xF9E4, 0xF841, 0xF5F9, 0xF37F, 0xF148, 0xEFC7,\n    0xEF63, 0x2A75, 0x22B5, 0x2076, 0x277B, 0x2FB5, 0x3586, 0x3A7F,\n    0x3D5B, 0x3F51, 0x4124, 0x42CE, 0x4445, 0x4585, 0x4685, 0x473E,\n    0x47A9, 0x47C2, 0xFCE6, 0xF7B9, 0xF2CF, 0xED0C, 0xEB9B, 0xF431,\n    0x002A, 0x05A5, 0x070E, 0x07AD, 0x07AF, 0x073F, 0x0688, 0x05B6,\n    0x04F5, 0x046F, 0x044B, 0x8E74, 0x8F9D, 0x9263, 0x99E0, 0x9BC0,\n    0x8ECE, 0x7CDA, 0x7368, 0x6F13, 0x6B79, 0x688C, 0x663E, 0x647E,\n    0x6340, 0x6274, 0x620B, 0x61F5, 0x2056, 0x1AC2, 0x0F23, 0xF7D1,\n    0xE58A, 0xE462, 0xE9AB, 0xEB31, 0xE97D, 0xE72A, 0xE472, 0xE190,\n    0xDEBF, 0xDC39, 0xDA38, 0xD8F8, 0xD8A9, 0x05DD, 0x0216, 0x0575,\n    0x1640, 0x23CC, 0x22F1, 0x1D0A, 0x1AD2, 0x1B7D, 0x1CAF, 0x1E3E,\n    0x1FFE, 0x21C4, 0x2365, 0x24B6, 0x258B, 0x25C0, 0x0E5C, 0x09B3,\n    0x0233, 0xF5D7, 0xEA74, 0xE391, 0xDEC0, 0xDBA7, 0xD8FA, 0xD655,\n    0xD3CB, 0xD172, 0xCF5E, 0xCDA6, 0xCC5E, 0xCB9B, 0xCB6C, 0xDE52,\n    0xC884, 0xBA3B, 0xB62F, 0xBC0D, 0xD269, 0xEE4B, 0xFAB3, 0xFDB1,\n    0xFEB5, 0xFE31, 0xFC97, 0xFA59, 0xF7EA, 0xF5BC, 0xF440, 0xF3DE,\n    0xDC43, 0xE135, 0xDF8F, 0xD1C6, 0xC60F, 0xC503, 0xC7FE, 0xCA67,\n    0xCC27, 0xCE1E, 0xD02C, 0xD235, 0xD41A, 0xD5BD, 0xD700, 0xD7C6,\n    0xD7F5, 0x0511, 0x07D0, 0x0BA3, 0x1301, 0x153E, 0x0A2B, 0xFAB0,\n    0xF367, 0xF13A, 0xF000, 0xEF87, 0xEF9F, 0xF018, 0xF0C3, 0xF16E,\n    0xF1EB, 0xF20C, 0x7A91, 0x8830, 0x905A, 0x904D, 0x8B96, 0x8133,\n    0x74B9, 0x6E88, 0x6BFA, 0x6A14, 0x68BC, 0x67DC, 0x675A, 0x671E,\n    0x6710, 0x6717, 0x671B, 0x0D70, 0x0A79, 0x063A, 0x01B1, 0xFDDF,\n    0x07BF, 0x0A22, 0x0AA8, 0x0642, 0x050A, 0x03E5, 0x02DA, 0x01F2,\n    0x0133, 0x00A6, 0x0053, 0x0040, 0xFF65, 0xFEC8, 0xFDE7, 0xFCF4,\n    0xFC24, 0xFDB7, 0xFFA0, 0xFFC7, 0xFB8A, 0xFBA7, 0xFC11, 0xFCB0,\n    0xFD67, 0xFE1E, 0xFEBA, 0xFF20, 0xFF3A, 0xD2B6, 0xCD78, 0xC608,\n    0xBE37, 0xB7DB, 0xC195, 0xC005, 0xC07A, 0xD451, 0xD301, 0xD01F,\n    0xCC3B, 0xC7E4, 0xC3A9, 0xC01C, 0xBDCC, 0xBD36, 0x30AE, 0x30CB,\n    0x30B6, 0x302C, 0x2EE8, 0x1E87, 0x1A52, 0x1845, 0x169C, 0x15AD,\n    0x15CC, 0x170B, 0x1903, 0x1B41, 0x1D4F, 0x1EBA, 0x1F19, 0x109A,\n    0x0F9A, 0x0E2A, 0x0CA1, 0x0B55, 0x0280, 0x020A, 0x02E3, 0x0407,\n    0x0572, 0x0726, 0x0978, 0x0C38, 0x0EFC, 0x115C, 0x12ED, 0x1354,\n    0x1030, 0x0E93, 0x0C3C, 0x09B0, 0x0774, 0x08AF, 0x0A9A, 0x0D63,\n    0x104D, 0x126C, 0x12DD, 0x11B5, 0x0F9F, 0x0D27, 0x0AD6, 0x0938,\n    0x08CB, 0x9328, 0x93FD, 0x954C, 0x96E9, 0x98A8, 0x89E2, 0x8760,\n    0x8814, 0x8972, 0x8C5A, 0x91B6, 0x9A8E, 0xA5A2, 0xB118, 0xBB16,\n    0xC1C3, 0xC37A, 0xEDEB, 0xF230, 0xF7DB, 0xFD13, 0x0000, 0x00FA,\n    0x019B, 0x01F1, 0x0207, 0x01EC, 0x01AD, 0x0155, 0x00F3, 0x0093,\n    0x0042, 0x000D, 0x0000, 0x04EB, 0x03C2, 0x0237, 0x00CB, 0x0000,\n    0xFFBC, 0xFF91, 0xFF79, 0xFF73, 0xFF7A, 0xFF8C, 0xFFA4, 0xFFBE,\n    0xFFD8, 0xFFEE, 0xFFFD, 0x0000, 0xD924, 0xCDDF, 0xBF31, 0xB23A,\n    0xAC1A, 0xABEC, 0xAD2F, 0xAF9B, 0xB2EA, 0xB6D4, 0xBB12, 0xBF5D,\n    0xC36D, 0xC6FC, 0xC9C1, 0xCB77, 0xCBE1, 0x37C2, 0x3A82, 0x3E25,\n    0x4176, 0x4341, 0x364E, 0x327F, 0x2EA7, 0x2ADD, 0x2737, 0x23CC,\n    0x20B2, 0x1E00, 0x1BCB, 0x1A2C, 0x1937, 0x18FE, 0xFF41, 0xFBA3,\n    0xF6C9, 0xF23B, 0xEF7E, 0xEE71, 0xEDE0, 0xEDB5, 0xEDD9, 0xEE39,\n    0xEEBD, 0xEF51, 0xEFEC, 0xF175, 0xF38E, 0xF54A, 0xF5C9, 0x0817,\n    0x0203, 0xF9FD, 0xF2A9, 0xEEB5, 0xEE13, 0xEEB4, 0xF03B, 0xF24A,\n    0xF482, 0xF685, 0xF7F5, 0xF868, 0xF6EA, 0xF44C, 0xF1FB, 0xF14C,\n    0x8689, 0x90A3, 0x9E9F, 0xACA4, 0xB6D8, 0xBDAD, 0xC413, 0xC9F1,\n    0xCF2E, 0xD3B0, 0xD75C, 0xDA1B, 0xDB97, 0xD7C8, 0xD071, 0xC9CC,\n    0xC7D1, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171,\n    0xBF5F, 0xC973, 0xE97B, 0xFF10, 0x04B8, 0x04DA, 0x04F9, 0x04E7,\n    0x049A, 0x041F, 0x0384, 0x02D5, 0x0220, 0x0172, 0x00D7, 0x005E,\n    0x0012, 0x0000, 0xF220, 0xF6CB, 0xF8CB, 0xF625, 0xF376, 0xF3E3,\n    0xF4D4, 0xF607, 0xF76A, 0xF8E8, 0xFA6F, 0xFBEA, 0xFD47, 0xFE71,\n    0xFF55, 0xFFDF, 0x0000, 0xF7F4, 0xF171, 0xEDCC, 0xEF76, 0xF0CC,\n    0xEDFC, 0xEA32, 0xE5D8, 0xE122, 0xDC42, 0xD76E, 0xD2D8, 0xCEB5,\n    0xCB37, 0xC893, 0xC6FC, 0xC69A, 0x0A38, 0x07CE, 0x049A, 0x01A7,\n    0x0000, 0xFF74, 0xFF19, 0xFEE8, 0xFEDC, 0xFEEB, 0xFF0F, 0xFF40,\n    0xFF77, 0xFFAE, 0xFFDB, 0xFFF9, 0x0000, 0x00BF, 0x0092, 0x0056,\n    0x001F, 0x0000, 0xFFF6, 0xFFEF, 0xFFEC, 0xFFEB, 0xFFEC, 0xFFEF,\n    0xFFF2, 0xFFF6, 0xFFFA, 0xFFFE, 0x0000, 0x0000, 0xF367, 0xFEAC,\n    0x0D31, 0x19B4, 0x1EEC, 0x1DC0, 0x1AD7, 0x168D, 0x113E, 0x0B47,\n    0x0503, 0xFED0, 0xF907, 0xF406, 0xF029, 0xEDCB, 0xED39, 0x090C,\n    0x06E9, 0x0413, 0x0176, 0x0000, 0xFF84, 0xFF33, 0xFF09, 0xFEFD,\n    0xFF0B, 0xFF2A, 0xFF56, 0xFF87, 0xFFB7, 0xFFDF, 0xFFFA, 0x0000,\n    0x05F4, 0x048C, 0x02AE, 0x00F6, 0x0000, 0xFFAE, 0xFF79, 0xFF5D,\n    0xFF56, 0xFF5F, 0xFF74, 0xFF90, 0xFFB1, 0xFFD0, 0xFFEB, 0xFFFC,\n    0x0000, 0x4368, 0x4458, 0x4688, 0x4A70, 0x5085, 0x58DD, 0x62ED,\n    0x6E3A, 0x7A49, 0x86A1, 0x92C3, 0x9E36, 0xA87F, 0xB123, 0xB7A7,\n    0xBB90, 0xBC7F,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_0D.inc.c",
    "content": "static const struct Animation anim_0D[] = {\n    0,\n    189,\n    0,\n    0,\n    0x70,\n    ANIMINDEX_NUMPARTS(anim_0D_indices),\n    anim_0D_values,\n    anim_0D_indices,\n    0,\n};\n\n\nstatic const u16 anim_0D_indices[] = {\n    0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0003, 0x0001, 0x0004, 0x0001, 0x0005, 0x0001, 0x0006,\n    0x0001, 0x017E, 0x0001, 0x017F, 0x0001, 0x0180,\n    0x0001, 0x017B, 0x0001, 0x017C, 0x0001, 0x017D,\n    0x0070, 0x002B, 0x0070, 0x009B, 0x0070, 0x010B,\n    0x0001, 0x0027, 0x0001, 0x0028, 0x0001, 0x0029,\n    0x0001, 0x000B, 0x0001, 0x000C, 0x0001, 0x000D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x000A,\n    0x0001, 0x0007, 0x0001, 0x0008, 0x0001, 0x0009,\n    0x0001, 0x0023, 0x0001, 0x0024, 0x0001, 0x0025,\n    0x0001, 0x0012, 0x0001, 0x0013, 0x0001, 0x0014,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0011,\n    0x0001, 0x000E, 0x0001, 0x000F, 0x0001, 0x0010,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0026,\n    0x0001, 0x0020, 0x0001, 0x0021, 0x0001, 0x0022,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x001F,\n    0x0001, 0x001C, 0x0001, 0x001D, 0x0001, 0x001E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x002A,\n    0x0001, 0x0019, 0x0001, 0x001A, 0x0001, 0x001B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0018,\n    0x0001, 0x0015, 0x0001, 0x0016, 0x0001, 0x0017,\n};\n\nstatic const s16 anim_0D_values[] = {\n    0x0000, 0xFFFC, 0x00BD, 0xFF9C, 0xFF98, 0x3FFF, 0x0068, 0xD315,\n    0xF0C2, 0xFB61, 0xDBBE, 0x2D71, 0xFE8F, 0x8E3C, 0x217B, 0x07C2,\n    0x0F87, 0xE5ED, 0xDA0D, 0x044C, 0x75BF, 0x0E38, 0xFF8E, 0xD419,\n    0x309F, 0x10DE, 0x109D, 0x92F3, 0xECBF, 0x053D, 0xDC43, 0x3700,\n    0x003D, 0x09C3, 0x83D2, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001,\n    0x8001, 0x4171, 0xBF5F, 0xBE5D, 0xBE5F, 0xBE63, 0xBE6A, 0xBE75,\n    0xBE82, 0xBE93, 0xBEA7, 0xBEBE, 0xBED9, 0xBEF6, 0xBF18, 0xBF3C,\n    0xBF64, 0xBF90, 0xBFBF, 0xBFF2, 0xC028, 0xC062, 0xC0A0, 0xC0E2,\n    0xC127, 0xC171, 0xC1BE, 0xC210, 0xC265, 0xC2BF, 0xC31C, 0xC37E,\n    0xC3E4, 0xC44F, 0xC4BD, 0xC534, 0xC5B6, 0xC642, 0xC6D8, 0xC777,\n    0xC81E, 0xC8CD, 0xC982, 0xCA3C, 0xCAFC, 0xCBC0, 0xCC88, 0xCD53,\n    0xCE1F, 0xCEED, 0xCFBC, 0xD08A, 0xD157, 0xD222, 0xD2EB, 0xD3B0,\n    0xD472, 0xD52E, 0xD5E5, 0xD696, 0xD73F, 0xD7E1, 0xD87A, 0xD90A,\n    0xD98F, 0xDA0A, 0xDA79, 0xDADB, 0xDB30, 0xDB78, 0xDB98, 0xDB7F,\n    0xDB32, 0xDAB8, 0xDA17, 0xD957, 0xD87D, 0xD791, 0xD699, 0xD59B,\n    0xD49F, 0xD3AB, 0xD2C4, 0xD1F3, 0xD13E, 0xD093, 0xCFE0, 0xCF24,\n    0xCE61, 0xCD99, 0xCCCB, 0xCBFA, 0xCB26, 0xCA50, 0xC979, 0xC8A3,\n    0xC7CD, 0xC6FB, 0xC62B, 0xC561, 0xC49B, 0xC3DC, 0xC325, 0xC277,\n    0xC1D2, 0xC138, 0xC0AA, 0xC028, 0xBFB5, 0xBF50, 0xBEFB, 0xBEB8,\n    0xBE86, 0xBE68, 0xBE5D, 0xF066, 0xF06E, 0xF085, 0xF0AA, 0xF0DC,\n    0xF11A, 0xF162, 0xF1B4, 0xF20D, 0xF26E, 0xF2D4, 0xF33E, 0xF3AC,\n    0xF41C, 0xF48C, 0xF4FD, 0xF56B, 0xF5D7, 0xF63F, 0xF6A2, 0xF6FF,\n    0xF754, 0xF7A0, 0xF7E3, 0xF81A, 0xF845, 0xF863, 0xF871, 0xF870,\n    0xF85E, 0xF839, 0xF801, 0xF7B7, 0xF75C, 0xF6F3, 0xF67B, 0xF5F6,\n    0xF565, 0xF4C8, 0xF420, 0xF36F, 0xF2B5, 0xF1F2, 0xF129, 0xF059,\n    0xEF85, 0xEEAB, 0xEDCE, 0xECEE, 0xEC0D, 0xEB2A, 0xEA48, 0xE966,\n    0xE886, 0xE7A9, 0xE6CF, 0xE5F9, 0xE528, 0xE45E, 0xE39B, 0xE2DF,\n    0xE22C, 0xE183, 0xE0E4, 0xE051, 0xDFCA, 0xDF50, 0xDEED, 0xDEA9,\n    0xDE80, 0xDE71, 0xDE79, 0xDE95, 0xDEC3, 0xDF00, 0xDF4B, 0xDF9F,\n    0xDFFC, 0xE05E, 0xE0C3, 0xE128, 0xE18B, 0xE1F2, 0xE265, 0xE2E2,\n    0xE368, 0xE3F6, 0xE48C, 0xE528, 0xE5C8, 0xE66D, 0xE715, 0xE7BF,\n    0xE86A, 0xE914, 0xE9BE, 0xEA65, 0xEB09, 0xEBA9, 0xEC43, 0xECD7,\n    0xED64, 0xEDE8, 0xEE63, 0xEED3, 0xEF38, 0xEF90, 0xEFDA, 0xF015,\n    0xF041, 0xF05C, 0xF066, 0xFA47, 0xFA4D, 0xFA60, 0xFA7D, 0xFAA5,\n    0xFAD5, 0xFB0D, 0xFB4D, 0xFB92, 0xFBDC, 0xFC2A, 0xFC7A, 0xFCCD,\n    0xFD20, 0xFD73, 0xFDC4, 0xFE13, 0xFE5F, 0xFEA7, 0xFEE8, 0xFF24,\n    0xFF58, 0xFF83, 0xFFA5, 0xFFBC, 0xFFC7, 0xFFC6, 0xFFB7, 0xFF9A,\n    0xFF6C, 0xFF2E, 0xFEDE, 0xFE7C, 0xFE0B, 0xFD89, 0xFCFA, 0xFC5D,\n    0xFBB3, 0xFAFE, 0xFA3E, 0xF974, 0xF8A2, 0xF7C7, 0xF6E5, 0xF5FE,\n    0xF511, 0xF41F, 0xF32B, 0xF234, 0xF13B, 0xF042, 0xEF49, 0xEE51,\n    0xED5B, 0xEC69, 0xEB7A, 0xEA90, 0xE9AC, 0xE8CF, 0xE7F9, 0xE72C,\n    0xE669, 0xE5AF, 0xE502, 0xE460, 0xE3CB, 0xE345, 0xE2D7, 0xE28A,\n    0xE25B, 0xE248, 0xE24F, 0xE26E, 0xE2A1, 0xE2E6, 0xE33C, 0xE39F,\n    0xE40D, 0xE484, 0xE502, 0xE583, 0xE606, 0xE691, 0xE72C, 0xE7D5,\n    0xE88B, 0xE94C, 0xEA18, 0xEAEB, 0xEBC6, 0xECA7, 0xED8C, 0xEE73,\n    0xEF5C, 0xF045, 0xF12D, 0xF211, 0xF2F1, 0xF3CC, 0xF49F, 0xF569,\n    0xF629, 0xF6DE, 0xF786, 0xF820, 0xF8A9, 0xF922, 0xF987, 0xF9D9,\n    0xFA15, 0xFA3A, 0xFA47, 0x0AE1, 0x00CC, 0xF043, 0x09A2, 0x0657,\n    0x4340,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_0E.inc.c",
    "content": "static const struct Animation anim_0E[] = {\n    1,\n    189,\n    0,\n    0,\n    0x01,\n    ANIMINDEX_NUMPARTS(anim_0E_indices),\n    anim_0E_values,\n    anim_0E_indices,\n    0,\n};\n\n\nstatic const u16 anim_0E_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0027,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0026,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0025,\n    0x0001, 0x0021, 0x0001, 0x0022, 0x0001, 0x0023,\n    0x0001, 0x0007, 0x0001, 0x0008, 0x0001, 0x0009,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0006,\n    0x0001, 0x0003, 0x0001, 0x0004, 0x0001, 0x0005,\n    0x0001, 0x001D, 0x0001, 0x001E, 0x0001, 0x001F,\n    0x0001, 0x000C, 0x0001, 0x000D, 0x0001, 0x000E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x000B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x000A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0020,\n    0x0001, 0x001A, 0x0001, 0x001B, 0x0001, 0x001C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0019,\n    0x0001, 0x0016, 0x0001, 0x0017, 0x0001, 0x0018,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0024,\n    0x0001, 0x0013, 0x0001, 0x0014, 0x0001, 0x0015,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0012,\n    0x0001, 0x000F, 0x0001, 0x0010, 0x0001, 0x0011,\n};\n\nstatic const s16 anim_0E_values[] = {\n    0x0000, 0x00BD, 0x3FFF, 0xFF8A, 0xF980, 0xF06F, 0xF085, 0xFD06,\n    0xE177, 0xD25A, 0xED8C, 0xF3C7, 0x091C, 0x1F33, 0xD2BA, 0x001B,\n    0x025B, 0xCB25, 0x0640, 0xFEE9, 0xFF3F, 0xBC52, 0x0095, 0xFF09,\n    0xCC42, 0x054B, 0x0040, 0x0056, 0xBCD3, 0x7FFF, 0x7FFF, 0x4171,\n    0xBF5F, 0x7FFF, 0x7FFF, 0x4171, 0xBF5F, 0x0215, 0xFF26, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_0F_10.inc.c",
    "content": "static const struct Animation anim_0F[] = {\n    1,\n    189,\n    0,\n    0,\n    0x01,\n    ANIMINDEX_NUMPARTS(anim_0F_10_indices),\n    anim_0F_10_values,\n    anim_0F_10_indices,\n    0,\n};\n\nstatic const struct Animation anim_10[] = {\n    1,\n    189,\n    1,\n    0,\n    0x12,\n    ANIMINDEX_NUMPARTS(anim_0F_10_indices),\n    anim_0F_10_values,\n    anim_0F_10_indices,\n    0,\n};\n\n\nstatic const u16 anim_0F_10_indices[] = {\n    0x0001, 0x0000, 0x0013, 0x0001, 0x0013, 0x0014, 0x0001, 0x0000, 0x0001, 0x0027, 0x0001, 0x0000,\n    0x0013, 0x02B6, 0x0013, 0x02C9, 0x0013, 0x02DC,\n    0x0013, 0x027D, 0x0013, 0x0290, 0x0013, 0x02A3,\n    0x0013, 0x0244, 0x0013, 0x0257, 0x0013, 0x026A,\n    0x0001, 0x0240, 0x0001, 0x0241, 0x0001, 0x0242,\n    0x0013, 0x0074, 0x0013, 0x0087, 0x0013, 0x009A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0013, 0x0061,\n    0x0013, 0x0028, 0x0013, 0x003B, 0x0013, 0x004E,\n    0x0001, 0x023C, 0x0001, 0x023D, 0x0001, 0x023E,\n    0x0013, 0x00F9, 0x0013, 0x010C, 0x0013, 0x011F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0013, 0x00E6,\n    0x0013, 0x00AD, 0x0013, 0x00C0, 0x0013, 0x00D3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x023F,\n    0x0013, 0x0203, 0x0013, 0x0216, 0x0013, 0x0229,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0013, 0x01F0,\n    0x0013, 0x01B7, 0x0013, 0x01CA, 0x0013, 0x01DD,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0243,\n    0x0013, 0x017E, 0x0013, 0x0191, 0x0013, 0x01A4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0013, 0x016B,\n    0x0013, 0x0132, 0x0013, 0x0145, 0x0013, 0x0158,\n};\n\nstatic const s16 anim_0F_10_values[] = {\n    0x0000, 0x005A, 0x005A, 0x0059, 0x0058, 0x0058, 0x0058, 0x005A,\n    0x005F, 0x0068, 0x0071, 0x0079, 0x0081, 0x0089, 0x008F, 0x0097,\n    0x009E, 0x00A4, 0x00A8, 0x00AA, 0xFFC8, 0xFFC9, 0xFFCD, 0xFFD3,\n    0xFFD9, 0xFFDE, 0xFFE1, 0xFFE1, 0xFFDD, 0xFFD9, 0xFFD5, 0xFFD2,\n    0xFFD3, 0xFFD9, 0xFFE2, 0xFFED, 0xFFF7, 0xFFFE, 0x0000, 0x3FFF,\n    0xFF8A, 0xFF8A, 0xFF89, 0xFF87, 0xFF86, 0xFF86, 0xFF8A, 0xFF93,\n    0xFF9D, 0xFFA9, 0xFFB5, 0xFFC3, 0xFFD0, 0xFFDC, 0xFFE8, 0xFFF2,\n    0xFFFA, 0xFFFF, 0x0000, 0xF980, 0xF980, 0xF980, 0xF980, 0xF980,\n    0xF980, 0xF980, 0xF980, 0xF97F, 0xF97F, 0xF97E, 0xF97E, 0xF97D,\n    0xF97D, 0xF97D, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF06F, 0xF06F,\n    0xF076, 0xF084, 0xF08E, 0xF08B, 0xF06F, 0xF03C, 0xEFFC, 0xEFB3,\n    0xEF62, 0xEF0F, 0xEEBC, 0xEE6D, 0xEE25, 0xEDE7, 0xEDB6, 0xED97,\n    0xED8C, 0xC485, 0xC485, 0xC6A0, 0xCBAB, 0xD1BD, 0xD6EB, 0xD94C,\n    0xD949, 0xD8A8, 0xD787, 0xD603, 0xD43C, 0xD250, 0xD05C, 0xCE7F,\n    0xCCD8, 0xCB84, 0xCAA1, 0xCA4F, 0xE000, 0xE000, 0xDFC0, 0xDF3E,\n    0xDEDC, 0xDEFC, 0xE000, 0xE1DE, 0xE436, 0xE6EA, 0xE9D9, 0xECE6,\n    0xEFEF, 0xF2D7, 0xF57E, 0xF7C5, 0xF98B, 0xFAB3, 0xFB1D, 0xECD9,\n    0xECD9, 0xEA15, 0xE364, 0xDB30, 0xD3E3, 0xCFE8, 0xCEB0, 0xCE04,\n    0xCDCD, 0xCDF8, 0xCE6E, 0xCF1A, 0xCFE7, 0xD0BE, 0xD18B, 0xD238,\n    0xD2AF, 0xD2DC, 0xE26A, 0xE26A, 0xE2B2, 0xE350, 0xE3EF, 0xE43B,\n    0xE3DE, 0xE2E5, 0xE1A1, 0xE025, 0xDE82, 0xDCCC, 0xDB15, 0xD96E,\n    0xD7EC, 0xD69F, 0xD59A, 0xD4F0, 0xD4B4, 0x0000, 0x0000, 0xFFC1,\n    0xFF2B, 0xFE78, 0xFDE1, 0xFDA2, 0xFDAE, 0xFDCF, 0xFE01, 0xFE40,\n    0xFE86, 0xFED1, 0xFF1D, 0xFF63, 0xFFA2, 0xFFD4, 0xFFF5, 0x0000,\n    0x0000, 0x0000, 0x00FC, 0x0357, 0x0626, 0x0881, 0x097E, 0x094E,\n    0x08CA, 0x0802, 0x0708, 0x05EC, 0x04BF, 0x0392, 0x0276, 0x017B,\n    0x00B4, 0x002F, 0x0000, 0xED8C, 0xED8C, 0xEA90, 0xE37A, 0xDB16,\n    0xD42F, 0xD190, 0xD2A5, 0xD4D7, 0xD7E9, 0xDBA1, 0xDFC5, 0xE41B,\n    0xE866, 0xEC6D, 0xEFF6, 0xF2C4, 0xF49E, 0xF549, 0xC898, 0xC898,\n    0xCBB1, 0xD315, 0xDBE5, 0xE345, 0xE656, 0xE5B3, 0xE405, 0xE180,\n    0xDE5C, 0xDACD, 0xD709, 0xD346, 0xCFBA, 0xCC9A, 0xCA1C, 0xC876,\n    0xC7DD, 0x4CE0, 0x4CE0, 0x4D82, 0x4EC3, 0x4FAA, 0x4F3F, 0x4C88,\n    0x479C, 0x4170, 0x3A56, 0x329F, 0x2A9D, 0x22A2, 0x1B01, 0x140B,\n    0x0E12, 0x0969, 0x0660, 0x054B, 0x2C94, 0x2C94, 0x29BD, 0x22F5,\n    0x1ADD, 0x1411, 0x1131, 0x11AD, 0x131A, 0x1548, 0x1805, 0x1B24,\n    0x1E73, 0x21C3, 0x24E4, 0x27A6, 0x29DA, 0x2B4F, 0x2BD6, 0x0951,\n    0x0951, 0x09ED, 0x0B27, 0x0C1E, 0x0BEE, 0x09B7, 0x058D, 0x004F,\n    0xFA44, 0xF3B1, 0xECDB, 0xE60B, 0xDF86, 0xD993, 0xD478, 0xD07B,\n    0xCDE3, 0xCCF6, 0xFF57, 0xFF57, 0xFF5D, 0xFF64, 0xFF55, 0xFF1E,\n    0xFEAA, 0xFD4F, 0xFB71, 0xFA8F, 0xFAD6, 0xFB62, 0xFC1F, 0xFCF8,\n    0xFDD8, 0xFEAA, 0xFF5B, 0xFFD4, 0x0000, 0xFC91, 0xFC91, 0xFC16,\n    0xFAED, 0xF982, 0xF842, 0xF797, 0xF828, 0xF992, 0xFAB7, 0xFB5E,\n    0xFC0B, 0xFCB8, 0xFD5C, 0xFDF2, 0xFE73, 0xFED7, 0xFF19, 0xFF30,\n    0xBDC5, 0xBDC5, 0xBE70, 0xC01E, 0xC251, 0xC48D, 0xC655, 0xC78E,\n    0xC86B, 0xC8E7, 0xC92B, 0xC960, 0xC98A, 0xC9A8, 0xC9BE, 0xC9CC,\n    0xC9D4, 0xC9D7, 0xC9D8, 0x091A, 0x091A, 0x0EA4, 0x1C48, 0x2D8C,\n    0x3DF7, 0x4911, 0x4AC8, 0x4602, 0x40B7, 0x3CB8, 0x380E, 0x3309,\n    0x2DF5, 0x291F, 0x24D6, 0x2166, 0x1F1E, 0x1E4A, 0x1711, 0x1711,\n    0x14EE, 0x0FBD, 0x0951, 0x0381, 0x0020, 0x01AB, 0x0695, 0x0AA7,\n    0x0CFD, 0x0F6F, 0x11E4, 0x1441, 0x166B, 0x1848, 0x19BE, 0x1AB2,\n    0x1B09, 0x1373, 0x1373, 0x145A, 0x168F, 0x1950, 0x1BDE, 0x1D79,\n    0x1D4F, 0x1BE4, 0x1A77, 0x1958, 0x1813, 0x16B9, 0x155F, 0x1419,\n    0x12F9, 0x1213, 0x117B, 0x1144, 0xA1B6, 0xA1B6, 0x9E4B, 0x95ED,\n    0x8B6F, 0x81A7, 0x7B67, 0x7B86, 0x8039, 0x856A, 0x89F7, 0x8F3E,\n    0x94EA, 0x9AA4, 0xA016, 0xA4E8, 0xA8C5, 0xAB56, 0xAC44, 0x011B,\n    0x011B, 0x00EC, 0x008C, 0x0040, 0x004C, 0x00F4, 0x0325, 0x0698,\n    0x09C2, 0x0B1B, 0x0A91, 0x0948, 0x0780, 0x0579, 0x0375, 0x01B4,\n    0x0078, 0x0000, 0xFFC8, 0xFFC8, 0xFF4C, 0xFE24, 0xFCC2, 0xFB99,\n    0xFB1A, 0xFBBA, 0xFD2B, 0xFEB5, 0xFFA5, 0xFFF7, 0x0025, 0x0038,\n    0x0037, 0x002A, 0x0017, 0x0007, 0x0000, 0xAA72, 0xAA72, 0xAA1F,\n    0xA969, 0xA8B4, 0xA865, 0xA8E0, 0xAAD8, 0xAE0C, 0xB174, 0xB406,\n    0xB5E5, 0xB7D1, 0xB9B3, 0xBB73, 0xBCF9, 0xBE2D, 0xBEF8, 0xBF40,\n    0x5730, 0x5730, 0x5816, 0x5A1F, 0x5C53, 0x5DB6, 0x5D4C, 0x59D9,\n    0x53ED, 0x4D48, 0x47A7, 0x42B2, 0x3D29, 0x376F, 0x31E4, 0x2CEB,\n    0x28E4, 0x2632, 0x2537, 0xFFB8, 0xFFB8, 0x0001, 0x0096, 0x0106,\n    0x00E1, 0xFFB8, 0xFCA0, 0xF7D9, 0xF2AF, 0xEE71, 0xEAD5, 0xE6E4,\n    0xE2DE, 0xDF03, 0xDB93, 0xD8CE, 0xD6F6, 0xD64A, 0x0050, 0x0050,\n    0x009D, 0x0137, 0x01AA, 0x0184, 0x0050, 0xFCC5, 0xF741, 0xF1CE,\n    0xEE73, 0xED1D, 0xEC48, 0xEBDA, 0xEBBA, 0xEBCE, 0xEBFD, 0xEC2B,\n    0xEC41, 0x82F7, 0x82F7, 0x82C0, 0x8251, 0x81FD, 0x8219, 0x82F7,\n    0x84F9, 0x8809, 0x8BC9, 0x8FDA, 0x949E, 0x9A5E, 0xA09C, 0xA6D6,\n    0xAC8E, 0xB141, 0xB472, 0xB59E, 0x7FFF, 0x7FFF, 0x4171, 0xBF5F,\n    0x7FFF, 0x7FFF, 0x4171, 0xBF5F, 0xE0EA, 0xE0EA, 0xE0D5, 0xE0E0,\n    0xE17D, 0xE31E, 0xE634, 0xEB47, 0xF20C, 0xF9BB, 0x0189, 0x08AF,\n    0x0E63, 0x11DA, 0x1155, 0x0D12, 0x0749, 0x0230, 0x0000, 0xF9D5,\n    0xF9D5, 0xFAEA, 0xFD8B, 0x00C3, 0x03A5, 0x053D, 0x0590, 0x055D,\n    0x04C8, 0x03FA, 0x0318, 0x0249, 0x01B3, 0x0140, 0x00CC, 0x0065,\n    0x001B, 0x0000, 0x02C2, 0x02C2, 0x0287, 0x01F1, 0x012E, 0x0068,\n    0xFFCC, 0xFF53, 0xFEDB, 0xFE67, 0xFDF9, 0xFD93, 0xFD38, 0xFCEA,\n    0xFCAE, 0xFC87, 0xFC70, 0xFC65, 0xFC62, 0x0000, 0x0000, 0xFE8F,\n    0xFB16, 0xF6E2, 0xF33C, 0xF16F, 0xF439, 0xF9B3, 0xFC33, 0xF8E5,\n    0xF2D0, 0xED10, 0xEAC0, 0xED3F, 0xF28D, 0xF8BC, 0xFDDD, 0x0000,\n    0x06ED, 0x06ED, 0x0761, 0x088C, 0x0A25, 0x0BE2, 0x0D79, 0x0F9D,\n    0x120D, 0x1316, 0x1238, 0x1065, 0x0E12, 0x0BB4, 0x090F, 0x05FA,\n    0x030C, 0x00DC, 0x0000, 0x0CFE, 0x0CFE, 0x0D78, 0x0EC3, 0x10AD,\n    0x1305, 0x1599, 0x1A4C, 0x2054, 0x2374, 0x225A, 0x1F41, 0x1B4E,\n    0x17A3, 0x140C, 0x100B, 0x0C53, 0x0995, 0x0884, 0x245C, 0x23F0,\n    0x22C4, 0x20FF, 0x1EC8, 0x1C44, 0x1999, 0x16EE, 0x146A, 0x1232,\n    0x0FF9, 0x0D74, 0x0AC9, 0x081D, 0x0597, 0x035E, 0x0199, 0x006C,\n    0x0000, 0xFA09, 0xFA1B, 0xFA4C, 0xFA96, 0xFAF3, 0xFB5D, 0xFBCD,\n    0xFC3E, 0xFCA7, 0xFD05, 0xFD62, 0xFDCC, 0xFE3C, 0xFEAC, 0xFF16,\n    0xFF73, 0xFFBD, 0xFFEF, 0x0000, 0x31EA, 0x326D, 0x33CE, 0x35D6,\n    0x384A, 0x3AF3, 0x3D96, 0x3FFA, 0x41E7, 0x4324, 0x43B3, 0x43D0,\n    0x4394, 0x431A, 0x427C, 0x41D3, 0x413B, 0x40CC, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_11.inc.c",
    "content": "static const struct Animation anim_11[] = {\n    1,\n    189,\n    0,\n    0,\n    0x10,\n    ANIMINDEX_NUMPARTS(anim_11_indices),\n    anim_11_values,\n    anim_11_indices,\n    0,\n};\n\n\nstatic const u16 anim_11_indices[] = {\n    0x0001, 0x0000, 0x0010, 0x0001, 0x0001, 0x0011, 0x0001, 0x0000, 0x0001, 0x0012, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x023B,\n    0x0010, 0x020B, 0x0010, 0x021B, 0x0010, 0x022B,\n    0x0010, 0x01DB, 0x0010, 0x01EB, 0x0010, 0x01FB,\n    0x0001, 0x01D7, 0x0001, 0x01D8, 0x0001, 0x01D9,\n    0x0010, 0x0053, 0x0010, 0x0063, 0x0010, 0x0073,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x0043,\n    0x0010, 0x0013, 0x0010, 0x0023, 0x0010, 0x0033,\n    0x0001, 0x01D3, 0x0001, 0x01D4, 0x0001, 0x01D5,\n    0x0010, 0x00C3, 0x0010, 0x00D3, 0x0010, 0x00E3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x00B3,\n    0x0010, 0x0083, 0x0010, 0x0093, 0x0010, 0x00A3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01D6,\n    0x0010, 0x01A3, 0x0010, 0x01B3, 0x0010, 0x01C3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x0193,\n    0x0010, 0x0163, 0x0010, 0x0173, 0x0010, 0x0183,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01DA,\n    0x0010, 0x0133, 0x0010, 0x0143, 0x0010, 0x0153,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x0123,\n    0x0010, 0x00F3, 0x0010, 0x0103, 0x0010, 0x0113,\n};\n\nstatic const s16 anim_11_values[] = {\n    0x0000, 0x008E, 0x007F, 0x006D, 0x0067, 0x0065, 0x0065, 0x0068,\n    0x006D, 0x0070, 0x006F, 0x006C, 0x006A, 0x0069, 0x0069, 0x0069,\n    0x0069, 0xFFDD, 0x3FFF, 0xDE67, 0xDA46, 0xD5D3, 0xD172, 0xCD85,\n    0xCA6D, 0xC7DE, 0xC553, 0xC2DA, 0xC084, 0xBE5D, 0xBC75, 0xBADB,\n    0xB99E, 0xB8CB, 0xB872, 0xE0ED, 0xE0D3, 0xE10A, 0xE16B, 0xE1D0,\n    0xE214, 0xE249, 0xE296, 0xE2F6, 0xE360, 0xE3CE, 0xE439, 0xE49A,\n    0xE4E9, 0xE521, 0xE539, 0x08B5, 0x06A8, 0x0448, 0x01DB, 0xFFA7,\n    0xFDF1, 0xFC88, 0xFB14, 0xF9A1, 0xF839, 0xF6E8, 0xF5B9, 0xF4B6,\n    0xF3EC, 0xF364, 0xF32A, 0xF3C2, 0xEC42, 0xE3BC, 0xDB6E, 0xD495,\n    0xD06E, 0xCE84, 0xCD76, 0xCD1D, 0xCD52, 0xCDEE, 0xCEC9, 0xCFBD,\n    0xD0A2, 0xD151, 0xD1A3, 0xD6EA, 0xC838, 0xBDC5, 0xBD22, 0xC1D5,\n    0xC00F, 0xB57E, 0xA842, 0x9939, 0x8943, 0x7939, 0x6A02, 0x5C77,\n    0x5178, 0x49E3, 0x4696, 0xE6A2, 0xDBA9, 0xD0F5, 0xD2BD, 0xD834,\n    0xDB02, 0xD9FA, 0xD84B, 0xD622, 0xD3AC, 0xD115, 0xCE8A, 0xCC39,\n    0xCA4F, 0xC8F7, 0xC860, 0xE093, 0xE277, 0xE0A2, 0xD98B, 0xD0AF,\n    0xCE70, 0xD379, 0xDA75, 0xE2D4, 0xEC03, 0xF56E, 0xFE85, 0x06B3,\n    0x0D68, 0x1211, 0x141B, 0x156D, 0x1B9C, 0x23CD, 0x28DC, 0x2D59,\n    0x3072, 0x329B, 0x34C9, 0x36EE, 0x38FB, 0x3AE2, 0x3C95, 0x3E05,\n    0x3F23, 0x3FE2, 0x4033, 0x1B99, 0x1136, 0x0643, 0x0606, 0x08FD,\n    0x0BCB, 0x0D86, 0x0F74, 0x117F, 0x1390, 0x1591, 0x176C, 0x190A,\n    0x1A55, 0x1B36, 0x1B97, 0xFAFE, 0xFD22, 0xFF9D, 0xFFAA, 0xFF06,\n    0xFE6A, 0xFE0A, 0xFD9F, 0xFD2E, 0xFCBB, 0xFC4C, 0xFBE5, 0xFB8C,\n    0xFB44, 0xFB13, 0xFAFE, 0xF446, 0xF2AF, 0xED8A, 0xE6CF, 0xE079,\n    0xDC81, 0xDA8A, 0xD8DF, 0xD77C, 0xD65B, 0xD575, 0xD4C5, 0xD446,\n    0xD3F1, 0xD3C0, 0xD3AF, 0xBE1B, 0xC86C, 0xCAEC, 0xBA4E, 0x9F62,\n    0x9209, 0x953A, 0x9B79, 0xA3FE, 0xAE00, 0xB8B7, 0xC35C, 0xCD26,\n    0xD54E, 0xDB0A, 0xDD93, 0x67F4, 0x5A9B, 0x5151, 0x4FC2, 0x5239,\n    0x52AE, 0x4FA0, 0x4BC5, 0x4760, 0x42B3, 0x3DFE, 0x3985, 0x3589,\n    0x324C, 0x3010, 0x2F17, 0x6791, 0x657C, 0x5CC9, 0x4187, 0x1C37,\n    0x07C9, 0x068C, 0x086A, 0x0CB1, 0x12B3, 0x19BF, 0x2125, 0x2836,\n    0x2E43, 0x329A, 0x348D, 0xFCE2, 0xFD15, 0xFD57, 0xFD6E, 0xFD7E,\n    0xFDA3, 0xFDF1, 0xFE54, 0xFEA9, 0xFEDF, 0xFF07, 0xFF32, 0xFF70,\n    0xFFB7, 0xFFF4, 0x0011, 0xFD82, 0xFD51, 0xFD23, 0xFD38, 0xFD65,\n    0xFD8D, 0xFDA5, 0xFDBA, 0xFDD9, 0xFE0F, 0xFE4F, 0xFE89, 0xFEBD,\n    0xFEF1, 0xFF1C, 0xFF30, 0xC2FB, 0xC044, 0xBD72, 0xBE27, 0xBFE0,\n    0xC0BB, 0xBF6A, 0xBD3C, 0xBC3B, 0xBD9E, 0xC02D, 0xC24F, 0xC3AC,\n    0xC4E1, 0xC5C3, 0xC62B, 0x14E1, 0x3084, 0x5018, 0x5408, 0x503A,\n    0x4C9D, 0x4BB2, 0x4AB7, 0x49B5, 0x48B7, 0x47C4, 0x46E7, 0x4628,\n    0x4591, 0x452B, 0x44FF, 0xFD6E, 0xFF91, 0x01D3, 0x01CD, 0x011F,\n    0x00B9, 0x00D1, 0x00F9, 0x012E, 0x016A, 0x01AA, 0x01E9, 0x0223,\n    0x0253, 0x0274, 0x0283, 0x0046, 0x003E, 0x00A3, 0x0200, 0x03CD,\n    0x0596, 0x0756, 0x0946, 0x0B50, 0x0D5D, 0x0F59, 0x112E, 0x12C5,\n    0x140B, 0x14E8, 0x1547, 0x9564, 0x8EE5, 0x8697, 0x83F3, 0x82A9,\n    0x817E, 0x7FDE, 0x7E1A, 0x7C43, 0x7A6A, 0x78A4, 0x7703, 0x7599,\n    0x7478, 0x73B5, 0x7361, 0xFB8A, 0xFD48, 0xFF35, 0xFF65, 0xFF14,\n    0xFEB1, 0xFE5F, 0xFDFB, 0xFD8D, 0xFD10, 0xFC89, 0xFC0A, 0xFB86,\n    0xFAFA, 0xFA86, 0xFA4E, 0xFF14, 0xFF08, 0xFF14, 0xFF26, 0xFF3F,\n    0xFF4A, 0xFF37, 0xFF17, 0xFF0B, 0xFF29, 0xFF5C, 0xFF89, 0xFFAE,\n    0xFFD4, 0xFFF2, 0x0000, 0xAF2E, 0xAEAB, 0xAF2E, 0xB077, 0xB21C,\n    0xB2E3, 0xB1AB, 0xAF94, 0xAEC4, 0xB08A, 0xB398, 0xB628, 0xB7E3,\n    0xB974, 0xBAA0, 0xBB2A, 0x330E, 0x425A, 0x526D, 0x5591, 0x54E8,\n    0x53AB, 0x5318, 0x5256, 0x5172, 0x507B, 0x4F7F, 0x4E8E, 0x4DB5,\n    0x4D05, 0x4C8A, 0x4C55, 0x02DE, 0x0182, 0xFFE7, 0xFFA9, 0xFFCD,\n    0x0008, 0x003E, 0x0080, 0x00CA, 0x0118, 0x0166, 0x01AF, 0x01F0,\n    0x0225, 0x0249, 0x0258, 0xF953, 0xFC9C, 0xFFFA, 0xFFF4, 0xFED8,\n    0xFD5F, 0xFBC9, 0xF9EA, 0xF7DD, 0xF5BC, 0xF3A2, 0xF1AA, 0xEFEE,\n    0xEE87, 0xED92, 0xED28, 0x8CC8, 0x8BD2, 0x8B33, 0x8A2C, 0x88FE,\n    0x879F, 0x85FB, 0x8415, 0x8207, 0x7FE6, 0x7DD2, 0x7BE1, 0x7A2D,\n    0x78CE, 0x77DE, 0x7777, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001,\n    0x8001, 0x4171, 0xBF5F, 0xF382, 0xF119, 0xF0F3, 0xF653, 0xFDAD,\n    0x01FD, 0x02DA, 0x033F, 0x0341, 0x02F8, 0x027A, 0x01DD, 0x0139,\n    0x00A4, 0x0034, 0x0001, 0xFB3A, 0xFDC0, 0x002F, 0x0096, 0x005D,\n    0x0024, 0x0021, 0x001C, 0x0017, 0x0013, 0x000E, 0x0009, 0x0006,\n    0x0003, 0x0000, 0x0000, 0xF6D4, 0xEFE8, 0xE958, 0xEA48, 0xED6D,\n    0xEEB4, 0xED5D, 0xEB7B, 0xE938, 0xE6BA, 0xE42A, 0xE1B1, 0xDF76,\n    0xDDA1, 0xDC5C, 0xDBCD, 0x106C, 0x0F32, 0x0B2A, 0x05F5, 0x0134,\n    0xFE89, 0xFDB2, 0xFD49, 0xFD3B, 0xFD72, 0xFDDA, 0xFE60, 0xFEEE,\n    0xFF70, 0xFFD2, 0xFFFF, 0xFA1A, 0xFA80, 0xFC23, 0xFE4D, 0x0046,\n    0x015A, 0x01A2, 0x01B8, 0x01A6, 0x0176, 0x0132, 0x00E3, 0x0093,\n    0x004C, 0x0018, 0x0000, 0x2E21, 0x3215, 0x359F, 0x3889, 0x3A9F,\n    0x3BA9, 0x3BD8, 0x3B8F, 0x3AEB, 0x3A04, 0x38F5, 0x37D9, 0x36CA,\n    0x35E2, 0x353B, 0x34F0, 0x3AC3, 0x38B5, 0x374B, 0x3974, 0x3CEB,\n    0x40C6, 0x454B, 0x4A34, 0x4DC5, 0x4EEE, 0x4EC0, 0x4EA9, 0x4F3F,\n    0x4FF8, 0x509A, 0x50ED,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_12.inc.c",
    "content": "static const struct Animation anim_12[] = {\n    1,\n    189,\n    0,\n    0,\n    0x12,\n    ANIMINDEX_NUMPARTS(anim_12_indices),\n    anim_12_values,\n    anim_12_indices,\n    0,\n};\n\n\nstatic const u16 anim_12_indices[] = {\n    0x0001, 0x0000, 0x0012, 0x0001, 0x0001, 0x0013, 0x0001, 0x0000, 0x0001, 0x0014, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x0281,\n    0x0012, 0x024B, 0x0012, 0x025D, 0x0012, 0x026F,\n    0x0012, 0x0215, 0x0012, 0x0227, 0x0012, 0x0239,\n    0x0001, 0x0211, 0x0001, 0x0212, 0x0001, 0x0213,\n    0x0012, 0x005D, 0x0012, 0x006F, 0x0012, 0x0081,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x004B,\n    0x0012, 0x0015, 0x0012, 0x0027, 0x0012, 0x0039,\n    0x0001, 0x020D, 0x0001, 0x020E, 0x0001, 0x020F,\n    0x0012, 0x00DB, 0x0012, 0x00ED, 0x0012, 0x00FF,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x00C9,\n    0x0012, 0x0093, 0x0012, 0x00A5, 0x0012, 0x00B7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0210,\n    0x0012, 0x01D7, 0x0012, 0x01E9, 0x0012, 0x01FB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x01C5,\n    0x0012, 0x018F, 0x0012, 0x01A1, 0x0012, 0x01B3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0214,\n    0x0012, 0x0159, 0x0012, 0x016B, 0x0012, 0x017D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x0147,\n    0x0012, 0x0111, 0x0012, 0x0123, 0x0012, 0x0135,\n};\n\nstatic const s16 anim_12_values[] = {\n    0x0000, 0x0063, 0x0060, 0x005E, 0x005F, 0x0061, 0x0063, 0x0065,\n    0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006A, 0x006A, 0x006A,\n    0x0069, 0x0069, 0x0069, 0xFFDD, 0x3FFF, 0xEF50, 0xE8F5, 0xE1FA,\n    0xDAE7, 0xD444, 0xCE98, 0xCA6D, 0xC753, 0xC484, 0xC1FF, 0xBFC4,\n    0xBDD4, 0xBC30, 0xBAD8, 0xB9CB, 0xB90B, 0xB897, 0xB870, 0xEECC,\n    0xEC66, 0xE9D0, 0xE744, 0xE4FB, 0xE32D, 0xE214, 0xE199, 0xE174,\n    0xE196, 0xE1F0, 0xE271, 0xE309, 0xE3A9, 0xE440, 0xE4C0, 0xE519,\n    0xE53A, 0xEAE1, 0xEE9B, 0xF298, 0xF67B, 0xF9E9, 0xFC84, 0xFDF1,\n    0xFE48, 0xFDF5, 0xFD1C, 0xFBDC, 0xFA59, 0xF8B4, 0xF710, 0xF58E,\n    0xF450, 0xF378, 0xF329, 0xE2EC, 0xDF82, 0xDBD1, 0xD827, 0xD4D3,\n    0xD226, 0xD06E, 0xCF85, 0xCF03, 0xCED9, 0xCEF4, 0xCF43, 0xCFB6,\n    0xD03A, 0xD0BF, 0xD133, 0xD185, 0xD1A5, 0x1DA7, 0x1237, 0x02E5,\n    0xF15C, 0xDF44, 0xCE47, 0xC00F, 0xB314, 0xA507, 0x9663, 0x87A5,\n    0x7947, 0x6BCB, 0x5FAC, 0x5565, 0x4D73, 0x4854, 0x4683, 0xDE2F,\n    0xDD62, 0xDCFC, 0xDCC3, 0xDC81, 0xDBFE, 0xDB02, 0xD982, 0xD7A8,\n    0xD58E, 0xD350, 0xD108, 0xCED1, 0xCCC5, 0xCB00, 0xC99A, 0xC8B1,\n    0xC85D, 0x7FBE, 0x8A31, 0x97C5, 0xA6EF, 0xB623, 0xC3D3, 0xCE70,\n    0xD724, 0xDFFB, 0xE8C1, 0xF143, 0xF94C, 0x00A6, 0x0721, 0x0C85,\n    0x10A0, 0x133D, 0x1427, 0x2136, 0x23A6, 0x2660, 0x2934, 0x2BF2,\n    0x2E6C, 0x3072, 0x3240, 0x3426, 0x3615, 0x3800, 0x39D7, 0x3B8E,\n    0x3D14, 0x3E5D, 0x3F5A, 0x3FFC, 0x4035, 0x1038, 0x0F0F, 0x0DE2,\n    0x0CD3, 0x0C08, 0x0BA4, 0x0BCB, 0x0C8D, 0x0DCD, 0x0F6D, 0x114E,\n    0x1352, 0x155A, 0x1749, 0x18FE, 0x1A5C, 0x1B45, 0x1B99, 0xFABA,\n    0xFB7A, 0xFC46, 0xFD0B, 0xFDB5, 0xFE30, 0xFE6A, 0xFE66, 0xFE37,\n    0xFDE9, 0xFD82, 0xFD0C, 0xFC90, 0xFC17, 0xFBA9, 0xFB50, 0xFB14,\n    0xFAFE, 0xDB54, 0xDBBE, 0xDC24, 0xDC7A, 0xDCAF, 0xDCB7, 0xDC81,\n    0xDC04, 0xDB46, 0xDA58, 0xD94B, 0xD82E, 0xD710, 0xD603, 0xD516,\n    0xD459, 0xD3DB, 0xD3AE, 0xCCEE, 0xBE2E, 0xB057, 0xA434, 0x9A94,\n    0x9441, 0x9209, 0x93E2, 0x98C3, 0xA000, 0xA8EC, 0xB2D9, 0xBD1A,\n    0xC702, 0xCFE4, 0xD712, 0xDBE1, 0xDDA1, 0x25BB, 0x2E8A, 0x3828,\n    0x4194, 0x49CE, 0x4FD7, 0x52AE, 0x5299, 0x50CA, 0x4D9E, 0x4972,\n    0x44A5, 0x3F94, 0x3A9C, 0x361C, 0x3271, 0x2FF9, 0x2F11, 0x621D,\n    0x4D55, 0x39A5, 0x27F3, 0x1924, 0x0E1F, 0x07C9, 0x05C6, 0x06BE,\n    0x0A1A, 0x0F44, 0x15A5, 0x1CA8, 0x23B5, 0x2A37, 0x2F97, 0x333F,\n    0x3498, 0xFE33, 0xFFEA, 0x0117, 0x00D6, 0xFFDC, 0xFE8D, 0xFDA3,\n    0xFDAA, 0xFDDE, 0xFE30, 0xFE8F, 0xFEEA, 0xFF32, 0xFF6E, 0xFFAA,\n    0xFFDF, 0x0004, 0x0012, 0xFD4D, 0xFD3A, 0xFD30, 0xFD32, 0xFD45,\n    0xFD65, 0xFD8D, 0xFDB7, 0xFDE2, 0xFE0D, 0xFE38, 0xFE61, 0xFE89,\n    0xFEB2, 0xFEDF, 0xFF08, 0xFF25, 0xFF31, 0xC04D, 0xBF0B, 0xBDA5,\n    0xBAFA, 0xB98E, 0xBD10, 0xC0BB, 0xC18A, 0xC1E4, 0xC1F8, 0xC1F2,\n    0xC200, 0xC24F, 0xC307, 0xC407, 0xC50E, 0xC5DB, 0xC62D, 0x27FE,\n    0x406D, 0x519B, 0x54E0, 0x52FD, 0x4F2A, 0x4C9D, 0x4BBE, 0x4AD3,\n    0x49E3, 0x48F6, 0x4812, 0x473E, 0x4681, 0x45E2, 0x4568, 0x451A,\n    0x44FE, 0xFE58, 0xFEAB, 0xFF0C, 0xFF77, 0xFFF2, 0x0063, 0x00B9,\n    0x00EE, 0x0113, 0x012F, 0x0147, 0x0161, 0x0184, 0x01BA, 0x01FC,\n    0x023E, 0x026F, 0x0283, 0x01A0, 0x0209, 0x0295, 0x0323, 0x03B6,\n    0x0478, 0x0596, 0x071B, 0x08E1, 0x0ACA, 0x0CB5, 0x0E85, 0x101A,\n    0x118E, 0x12F4, 0x1425, 0x14F9, 0x1549, 0x8865, 0x83BB, 0x80A2,\n    0x8013, 0x80C4, 0x819B, 0x817E, 0x803C, 0x7E7F, 0x7C82, 0x7A78,\n    0x7894, 0x770D, 0x75D9, 0x74D5, 0x740D, 0x738D, 0x735F, 0xFC3E,\n    0xFCE1, 0xFD7D, 0xFDFD, 0xFE61, 0xFEAF, 0xFEB1, 0xFE59, 0xFDEC,\n    0xFD72, 0xFCF4, 0xFC79, 0xFC0A, 0xFB9B, 0xFB24, 0xFAB8, 0xFA6A,\n    0xFA4C, 0x0176, 0x00F9, 0x007A, 0xFFFE, 0xFF94, 0xFF5C, 0xFF4A,\n    0xFF4B, 0xFF52, 0xFF5C, 0xFF69, 0xFF79, 0xFF89, 0xFFA0, 0xFFBF,\n    0xFFDE, 0xFFF7, 0x0000, 0xC540, 0xC141, 0xBCCD, 0xB6EA, 0xB1FA,\n    0xB1AF, 0xB2E3, 0xB363, 0xB3DD, 0xB459, 0xB4DF, 0xB577, 0xB628,\n    0xB72A, 0xB878, 0xB9C6, 0xBAC7, 0xBB2D, 0x2583, 0x40B0, 0x5430,\n    0x58FD, 0x5871, 0x55A3, 0x53AB, 0x5310, 0x5253, 0x517F, 0x509D,\n    0x4FB7, 0x4ED9, 0x4E0C, 0x4D5B, 0x4CCF, 0x4C74, 0x4C54, 0x03D7,\n    0x034F, 0x02AE, 0x01F7, 0x011C, 0x0061, 0x0008, 0x0019, 0x0063,\n    0x00CE, 0x0145, 0x01B2, 0x01FF, 0x022B, 0x0246, 0x0253, 0x0258,\n    0x0259, 0xFAC0, 0xFC12, 0xFD05, 0xFD8C, 0xFDF3, 0xFDFB, 0xFD5F,\n    0xFC1A, 0xFA6C, 0xF880, 0xF67F, 0xF496, 0xF2ED, 0xF162, 0xEFD4,\n    0xEE79, 0xED83, 0xED25, 0x82B8, 0x8029, 0x7F43, 0x80C3, 0x83BB,\n    0x868F, 0x879F, 0x86B0, 0x84DA, 0x8278, 0x7FE4, 0x7D80, 0x7BA5,\n    0x7A44, 0x791C, 0x7839, 0x77A8, 0x7774, 0x8001, 0x8001, 0x4171,\n    0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x0070, 0x00C4, 0x011C,\n    0x0171, 0x01B8, 0x01EA, 0x01FD, 0x01F3, 0x01D3, 0x01A2, 0x0166,\n    0x0123, 0x00DD, 0x009A, 0x005D, 0x002C, 0x000B, 0x0000, 0xFD55,\n    0xFDDA, 0xFE6A, 0xFEF8, 0xFF7A, 0xFFE2, 0x0024, 0x0049, 0x005D,\n    0x0065, 0x0062, 0x0057, 0x0047, 0x0034, 0x0021, 0x0010, 0x0004,\n    0x0000, 0xF1E2, 0xF1B8, 0xF172, 0xF109, 0xF076, 0xEFB1, 0xEEB4,\n    0xED58, 0xEB91, 0xE97D, 0xE738, 0xE4E1, 0xE295, 0xE072, 0xDE95,\n    0xDD1B, 0xDC23, 0xDBCA, 0xFFF3, 0xFF77, 0xFF19, 0xFEDC, 0xFEB1,\n    0xFE96, 0xFE89, 0xFE8F, 0xFEA5, 0xFEC6, 0xFEE9, 0xFF12, 0xFF44,\n    0xFF79, 0xFFAC, 0xFFD7, 0xFFF5, 0x0000, 0x0121, 0x0125, 0x012B,\n    0x0139, 0x014F, 0x015E, 0x015A, 0x0137, 0x00FF, 0x00C3, 0x0096,\n    0x0077, 0x0058, 0x003C, 0x0024, 0x0010, 0x0004, 0x0000, 0x263A,\n    0x27B5, 0x2A39, 0x2EB0, 0x3430, 0x3911, 0x3BA9, 0x3AAF, 0x374D,\n    0x338A, 0x316D, 0x312C, 0x317F, 0x3235, 0x331A, 0x33FD, 0x34AA,\n    0x34EF, 0x3EEC, 0x3EC5, 0x3EDD, 0x4054, 0x41E9, 0x4110, 0x40C6,\n    0x42B5, 0x4524, 0x47D0, 0x4A77, 0x4CD5, 0x4EA9, 0x4FD6, 0x5085,\n    0x50D7, 0x50EF, 0x50EF,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_13.inc.c",
    "content": "static const struct Animation anim_13[] = {\n    1,\n    189,\n    0,\n    0,\n    0x17,\n    ANIMINDEX_NUMPARTS(anim_13_indices),\n    anim_13_values,\n    anim_13_indices,\n    0,\n};\n\n\nstatic const u16 anim_13_indices[] = {\n    0x0001, 0x0000, 0x0017, 0x0001, 0x0001, 0x0018, 0x0001, 0x0000, 0x0001, 0x0019, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0017, 0x0330,\n    0x0017, 0x02EB, 0x0017, 0x0302, 0x0017, 0x0319,\n    0x0017, 0x02A6, 0x0017, 0x02BD, 0x0017, 0x02D4,\n    0x0001, 0x02A2, 0x0001, 0x02A3, 0x0001, 0x02A4,\n    0x0017, 0x0076, 0x0017, 0x008D, 0x0017, 0x00A4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0017, 0x005F,\n    0x0017, 0x001A, 0x0017, 0x0031, 0x0017, 0x0048,\n    0x0001, 0x029E, 0x0001, 0x029F, 0x0001, 0x02A0,\n    0x0017, 0x0117, 0x0017, 0x012E, 0x0017, 0x0145,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0017, 0x0100,\n    0x0017, 0x00BB, 0x0017, 0x00D2, 0x0017, 0x00E9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02A1,\n    0x0017, 0x0259, 0x0017, 0x0270, 0x0017, 0x0287,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0017, 0x0242,\n    0x0017, 0x01FD, 0x0017, 0x0214, 0x0017, 0x022B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02A5,\n    0x0017, 0x01B8, 0x0017, 0x01CF, 0x0017, 0x01E6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0017, 0x01A1,\n    0x0017, 0x015C, 0x0017, 0x0173, 0x0017, 0x018A,\n};\n\nstatic const s16 anim_13_values[] = {\n    0x0000, 0x00AF, 0x00AD, 0x00AC, 0x00AA, 0x00A9, 0x00A8, 0x00A6,\n    0x00A5, 0x00A4, 0x00A2, 0x00A1, 0x00A0, 0x009E, 0x009D, 0x009B,\n    0x009A, 0x0099, 0x0097, 0x0096, 0x0095, 0x0093, 0x0092, 0x0091,\n    0xFFDD, 0x3FFF, 0xE6D0, 0xE271, 0xDDA3, 0xD928, 0xD5C2, 0xD433,\n    0xD48C, 0xD61E, 0xD88E, 0xDB83, 0xDEA3, 0xE193, 0xE3F8, 0xE579,\n    0xE656, 0xE706, 0xE780, 0xE7BD, 0xE7B4, 0xE75C, 0xE6AE, 0xE5A1,\n    0xE42D, 0xE8BE, 0xE8E7, 0xE937, 0xE9B9, 0xEA7B, 0xEB89, 0xED30,\n    0xEF83, 0xF237, 0xF4FE, 0xF78D, 0xF999, 0xFAD6, 0xFAF8, 0xF9CD,\n    0xF78D, 0xF483, 0xF0FE, 0xED49, 0xE9B4, 0xE68A, 0xE419, 0xE2AE,\n    0xF322, 0xF47C, 0xF60D, 0xF7A7, 0xF91A, 0xFA35, 0xFAFA, 0xFB92,\n    0xFC0D, 0xFC7C, 0xFCED, 0xFD72, 0xFE1A, 0xFEF5, 0x002B, 0x01C5,\n    0x039A, 0x0581, 0x0755, 0x08ED, 0x0A21, 0x0ACA, 0x0AC0, 0xC8A1,\n    0xC1EE, 0xC87E, 0xD532, 0xE1CB, 0xE80D, 0xE7FD, 0xE619, 0xE2D7,\n    0xDEAA, 0xDA08, 0xD567, 0xD13B, 0xCDFA, 0xCAE9, 0xC8EF, 0xCAF3,\n    0xD1E8, 0xDBA3, 0xE65E, 0xF051, 0xF7B3, 0xFABE, 0x2AF0, 0x29EB,\n    0x2A14, 0x2C59, 0x31A3, 0x3ADE, 0x58F2, 0x85D4, 0x9FF4, 0xA1C2,\n    0x9D2C, 0x93E6, 0x87A6, 0x7A1E, 0x6D0A, 0x5FA4, 0x5073, 0x401E,\n    0x2F49, 0x1E9A, 0x0EB7, 0x0045, 0xF3EB, 0xC57B, 0xBEF1, 0xB773,\n    0xAFF6, 0xA970, 0xA4D6, 0xA421, 0xA6ED, 0xAAA9, 0xAED7, 0xB447,\n    0xBA62, 0xC094, 0xC644, 0xCADE, 0xCE7D, 0xD1B4, 0xD494, 0xD733,\n    0xD9A4, 0xDBFA, 0xDE4A, 0xE0A7, 0x7D48, 0x812D, 0x84A4, 0x868C,\n    0x85C1, 0x8120, 0x6BD5, 0x49EE, 0x3388, 0x2C07, 0x2700, 0x24D9,\n    0x25F9, 0x2AC6, 0x33A9, 0x40E2, 0x51CB, 0x656A, 0x7AC9, 0x90F2,\n    0xA6E7, 0xBBB5, 0xCE62, 0x1DA9, 0x133E, 0x0A26, 0x058C, 0x04E6,\n    0x0563, 0x06C9, 0x08DB, 0x0B5D, 0x0E15, 0x10C4, 0x1331, 0x151F,\n    0x1652, 0x16D8, 0x16F8, 0x16C9, 0x1662, 0x15DD, 0x1551, 0x14D6,\n    0x1483, 0x1471, 0x184A, 0x1588, 0x1343, 0x1266, 0x12CB, 0x13A0,\n    0x14CA, 0x1630, 0x17B7, 0x1946, 0x1AC2, 0x1C12, 0x1D1B, 0x1DC4,\n    0x1E37, 0x1EAA, 0x1F10, 0x1F61, 0x1F90, 0x1F93, 0x1F60, 0x1EEB,\n    0x1E2A, 0xF972, 0xF834, 0xF742, 0xF712, 0xF796, 0xF865, 0xF96B,\n    0xFA94, 0xFBCD, 0xFD02, 0xFE1F, 0xFF11, 0xFFC4, 0x0023, 0x002C,\n    0xFFF4, 0xFF85, 0xFEEE, 0xFE3D, 0xFD81, 0xFCC6, 0xFC1A, 0xFB8C,\n    0xEE1D, 0xEA67, 0xE5B1, 0xE046, 0xD936, 0xD03D, 0xC6A5, 0xBDB4,\n    0xB6B4, 0xB2EB, 0xB579, 0xBDCD, 0xC7A8, 0xCECB, 0xD340, 0xD7D6,\n    0xDC71, 0xE0F2, 0xE53E, 0xE937, 0xECC0, 0xEFBD, 0xF210, 0x1425,\n    0x14E4, 0x21F4, 0x35CE, 0x45DD, 0x478C, 0x3ACE, 0x27FD, 0x111D,\n    0xF834, 0xDF44, 0xC854, 0xB567, 0xA883, 0xA116, 0x9CDB, 0x9B47,\n    0x9BCF, 0x9DE8, 0xA107, 0xA4A1, 0xA82C, 0xAB1D, 0x2548, 0x3465,\n    0x4651, 0x52D4, 0x4EF8, 0x489C, 0x4B35, 0x4EAD, 0x52C4, 0x5738,\n    0x5BC7, 0x6032, 0x6436, 0x6792, 0x6AB7, 0x6E1B, 0x7188, 0x74C6,\n    0x779E, 0x79DA, 0x7B42, 0x7BA0, 0x7ABC, 0xC70C, 0xCD1B, 0xD844,\n    0xE06F, 0xE17E, 0xDCD5, 0xD087, 0xC247, 0xB2E8, 0xA33A, 0x9410,\n    0x863C, 0x7A8C, 0x71D7, 0x6C1F, 0x688E, 0x66B4, 0x661F, 0x665E,\n    0x66FF, 0x6790, 0x67A0, 0x66BE, 0xFD0C, 0xFCA1, 0xFC42, 0xFC0F,\n    0xFC0B, 0xFC20, 0xFC45, 0xFC71, 0xFC9C, 0xFCBE, 0xFCD9, 0xFCF3,\n    0xFD07, 0xFD11, 0xFD11, 0xFD0E, 0xFD09, 0xFD03, 0xFCFB, 0xFCF3,\n    0xFCEC, 0xFCE5, 0xFCE1, 0xFDB4, 0xFE6D, 0xFF0F, 0xFF62, 0xFF60,\n    0xFF32, 0xFEE7, 0xFE8E, 0xFE39, 0xFDF5, 0xFDBE, 0xFD89, 0xFD60,\n    0xFD4C, 0xFD47, 0xFD47, 0xFD4C, 0xFD53, 0xFD5D, 0xFD67, 0xFD71,\n    0xFD7A, 0xFD80, 0xC3B9, 0xCC71, 0xD41B, 0xD819, 0xD81D, 0xD611,\n    0xD2AF, 0xCEB0, 0xCACD, 0xC7BF, 0xC544, 0xC2E6, 0xC10C, 0xC021,\n    0xBFF4, 0xC005, 0xC049, 0xC0B0, 0xC12D, 0xC1B3, 0xC235, 0xC2A3,\n    0xC2F3, 0x4B9E, 0x4361, 0x3C3D, 0x38BB, 0x39B9, 0x3D77, 0x428D,\n    0x4798, 0x4B2F, 0x4BEF, 0x4732, 0x3DE5, 0x33F5, 0x2D53, 0x298B,\n    0x25A3, 0x21C1, 0x1E0A, 0x1AA2, 0x17AF, 0x1557, 0x13BD, 0x1308,\n    0xFE69, 0xFE92, 0xFEB1, 0xFEB5, 0xFE9A, 0xFE6D, 0xFE35, 0xFDF9,\n    0xFDC3, 0xFD99, 0xFD7D, 0xFD6B, 0xFD66, 0xFD6C, 0xFD96, 0xFDD5,\n    0xFDF6, 0xFDE7, 0xFDC1, 0xFD8F, 0xFD5D, 0xFD36, 0xFD24, 0x01C7,\n    0x0211, 0x0243, 0x023D, 0x01F4, 0x017D, 0x00EF, 0x005E, 0xFFDF,\n    0xFF86, 0xFF6F, 0xFF8F, 0xFFBB, 0xFFCA, 0xFF98, 0xFF4B, 0xFF29,\n    0xFF3C, 0xFF5C, 0xFF84, 0xFFB2, 0xFFE0, 0x000A, 0x9DA8, 0xAB7A,\n    0xB6FD, 0xBBA9, 0xB878, 0xB0B3, 0xA646, 0x9B1F, 0x912D, 0x8A5E,\n    0x885D, 0x89E6, 0x8C7E, 0x8DAA, 0x8BD4, 0x88EF, 0x87CF, 0x88F6,\n    0x8AD3, 0x8D20, 0x8F95, 0x91EA, 0x93D8, 0xFBC3, 0xFC09, 0xFC45,\n    0xFC62, 0xFC62, 0xFC56, 0xFC42, 0xFC29, 0xFC0D, 0xFBF2, 0xFBDC,\n    0xFBCD, 0xFBBF, 0xFBAC, 0xFB95, 0xFB7C, 0xFB63, 0xFB4C, 0xFB3A,\n    0xFB2D, 0xFB28, 0xFB2D, 0xFB3E, 0x00DA, 0x01AE, 0x0267, 0x02C5,\n    0x02CE, 0x02B7, 0x0288, 0x0249, 0x0201, 0x01B7, 0x0174, 0x013D,\n    0x0110, 0x00E3, 0x00B5, 0x0087, 0x005A, 0x002D, 0x0001, 0xFFD7,\n    0xFFAD, 0xFF84, 0xFF5D, 0xBFB5, 0xC7A3, 0xCE8D, 0xD20B, 0xD254,\n    0xD16E, 0xCFA2, 0xCD38, 0xCA7B, 0xC7B1, 0xC526, 0xC321, 0xC178,\n    0xBFCE, 0xBE26, 0xBC81, 0xBAE1, 0xB946, 0xB7B3, 0xB629, 0xB4A9,\n    0xB334, 0xB1CE, 0x4EF3, 0x5039, 0x529A, 0x526D, 0x4C1D, 0x436E,\n    0x3BA0, 0x37F0, 0x3B77, 0x43BD, 0x4BA4, 0x4E0C, 0x48DA, 0x3F4E,\n    0x344C, 0x2ABD, 0x2585, 0x2411, 0x23C5, 0x2480, 0x2621, 0x2887,\n    0x2B92, 0x01CA, 0x03A1, 0x0506, 0x054C, 0x044D, 0x028D, 0x005B,\n    0xFE07, 0xFBDF, 0xFA31, 0xF94F, 0xF976, 0xFA78, 0xFBFE, 0xFDB1,\n    0xFF3C, 0x0047, 0x00EA, 0x0176, 0x01EB, 0x024A, 0x0291, 0x02C2,\n    0xF962, 0xF9F7, 0xFA8E, 0xFB05, 0xFB66, 0xFBCF, 0xFC35, 0xFC90,\n    0xFCD7, 0xFD01, 0xFD04, 0xFCC8, 0xFC4C, 0xFBAC, 0xFB04, 0xFA6F,\n    0xFA0B, 0xF9C0, 0xF96E, 0xF920, 0xF8E1, 0xF8BC, 0xF8BB, 0x91B1,\n    0x8616, 0x7D63, 0x7BFA, 0x82DA, 0x8EB3, 0x9D77, 0xAD16, 0xBB7D,\n    0xC69D, 0xCC63, 0xCB0F, 0xC3D5, 0xB913, 0xAD28, 0xA274, 0x9B54,\n    0x9763, 0x947F, 0x926F, 0x90FA, 0x8FE8, 0x8F00, 0x8001, 0x8001,\n    0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x047C, 0x0207,\n    0xFFFC, 0xFF28, 0xFF7F, 0x0053, 0x0183, 0x02EA, 0x0466, 0x05D2,\n    0x070B, 0x07ED, 0x0857, 0x0823, 0x073E, 0x05C2, 0x03D1, 0x018C,\n    0xFF15, 0xFC8D, 0xFA16, 0xF7D1, 0xF5E0, 0xFFDB, 0x05F7, 0x0AF7,\n    0x0CCE, 0x0BCB, 0x09C4, 0x06F6, 0x03A0, 0x0002, 0xFC5A, 0xF8E5,\n    0xF5E2, 0xF390, 0xF22D, 0xF19D, 0xF18D, 0xF1E9, 0xF2A0, 0xF39E,\n    0xF4CF, 0xF622, 0xF782, 0xF8DE, 0x020A, 0x006F, 0xFF21, 0xFEAA,\n    0xFF03, 0xFFB9, 0x00AF, 0x01CD, 0x02F9, 0x0417, 0x050E, 0x05C4,\n    0x061E, 0x0602, 0x056E, 0x047C, 0x033D, 0x01C4, 0x0022, 0xFE6A,\n    0xFCAA, 0xFAF7, 0xF961, 0xFC7F, 0x0415, 0x0A6E, 0x0D11, 0x0C4A,\n    0x0A3E, 0x0741, 0x03A4, 0xFFBB, 0xFBD6, 0xF849, 0xF565, 0xF37D,\n    0xF2E3, 0xF3A2, 0xF566, 0xF7FB, 0xFB29, 0xFEBB, 0x0279, 0x062F,\n    0x09A5, 0x0CA6, 0x0606, 0xFEB1, 0xF86F, 0xF593, 0xF5C8, 0xF703,\n    0xF907, 0xFB97, 0xFE74, 0x015F, 0x041D, 0x066F, 0x0817, 0x08D6,\n    0x08BA, 0x0808, 0x06DE, 0x0559, 0x0395, 0x01AE, 0xFFC3, 0xFDEF,\n    0xFC4E, 0x0902, 0xFED0, 0xF5C2, 0xF0DC, 0xEF5F, 0xEE82, 0xEE3C,\n    0xEE83, 0xEF4C, 0xF08F, 0xF241, 0xF458, 0xF6CC, 0xF991, 0xFCEF,\n    0x0117, 0x05DE, 0x0B19, 0x109C, 0x163C, 0x1BCD, 0x2125, 0x2618,\n    0x4BC8, 0x455F, 0x3F5B, 0x3B73, 0x3960, 0x37B2, 0x365C, 0x3553,\n    0x348A, 0x33F5, 0x3389, 0x3339, 0x32F8, 0x3315, 0x33C1, 0x34C8,\n    0x35F4, 0x3712, 0x37EB, 0x386C, 0x38BA, 0x38FA, 0x394D,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_14.inc.c",
    "content": "static const struct Animation anim_14[] = {\n    1,\n    189,\n    0,\n    0,\n    0x0F,\n    ANIMINDEX_NUMPARTS(anim_14_indices),\n    anim_14_values,\n    anim_14_indices,\n    0,\n};\n\n\nstatic const u16 anim_14_indices[] = {\n    0x0001, 0x0000, 0x000F, 0x0001, 0x0001, 0x0010, 0x0001, 0x0000, 0x0001, 0x0011, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000F, 0x0218,\n    0x000F, 0x01EB, 0x000F, 0x01FA, 0x000F, 0x0209,\n    0x000F, 0x01BE, 0x000F, 0x01CD, 0x000F, 0x01DC,\n    0x0001, 0x01BA, 0x0001, 0x01BB, 0x0001, 0x01BC,\n    0x000F, 0x004E, 0x000F, 0x005D, 0x000F, 0x006C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000F, 0x003F,\n    0x000F, 0x0012, 0x000F, 0x0021, 0x000F, 0x0030,\n    0x0001, 0x01B6, 0x0001, 0x01B7, 0x0001, 0x01B8,\n    0x000F, 0x00B7, 0x000F, 0x00C6, 0x000F, 0x00D5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000F, 0x00A8,\n    0x000F, 0x007B, 0x000F, 0x008A, 0x000F, 0x0099,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01B9,\n    0x000F, 0x0189, 0x000F, 0x0198, 0x000F, 0x01A7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000F, 0x017A,\n    0x000F, 0x014D, 0x000F, 0x015C, 0x000F, 0x016B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01BD,\n    0x000F, 0x0120, 0x000F, 0x012F, 0x000F, 0x013E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000F, 0x0111,\n    0x000F, 0x00E4, 0x000F, 0x00F3, 0x000F, 0x0102,\n};\n\nstatic const s16 anim_14_values[] = {\n    0x0000, 0x00B1, 0x00AC, 0x00A7, 0x00A1, 0x009C, 0x0097, 0x0091,\n    0x008C, 0x0087, 0x0081, 0x007C, 0x0077, 0x0071, 0x006C, 0x0067,\n    0xFFDD, 0x3FFF, 0x0845, 0x04CE, 0xFE04, 0xF94E, 0xF81B, 0xF7F5,\n    0xF868, 0xF901, 0xF94E, 0xF94E, 0xF94E, 0xF94E, 0xF94E, 0xF799,\n    0xF309, 0xF43D, 0xF3DF, 0xF325, 0xF2A5, 0xF284, 0xF280, 0xF28C,\n    0xF29C, 0xF2A5, 0xF2A5, 0xF2A5, 0xF2A5, 0xF2A5, 0xF1FF, 0xF046,\n    0xE533, 0xE51E, 0xE4F6, 0xE4DA, 0xE4D3, 0xE4D2, 0xE4D4, 0xE4D8,\n    0xE4DA, 0xE4DA, 0xE4DA, 0xE4DA, 0xE4DA, 0xE5DC, 0xE88A, 0xF01D,\n    0xF218, 0xF5FA, 0xF8AB, 0xF9A4, 0xFA4F, 0xFA7C, 0xFA00, 0xF8AB,\n    0xF51A, 0xEF9D, 0xEA94, 0xE85F, 0xE773, 0xE500, 0x120A, 0x0437,\n    0xE91E, 0xD64F, 0xD184, 0xD0E4, 0xD2A9, 0xD50E, 0xD64F, 0xD67F,\n    0xD6C7, 0xD70A, 0xD727, 0xFE12, 0x238B, 0xF570, 0xF463, 0xF254,\n    0xF0E6, 0xF0A3, 0xF0CC, 0xF116, 0xF137, 0xF0E6, 0xEFA2, 0xEDB1,\n    0xEBE8, 0xEB20, 0xE5DD, 0xDF98, 0x853D, 0x9D5F, 0xCCAB, 0xED7C,\n    0xF6D7, 0xF9E8, 0xF84C, 0xF39F, 0xED7C, 0xE107, 0xCDD8, 0xBC3E,\n    0xB487, 0x9676, 0x7A00, 0x1D71, 0x1D71, 0x1D71, 0x1D71, 0x1D71,\n    0x1D71, 0x1D71, 0x1D71, 0x1D71, 0x1D71, 0x1D71, 0x1D71, 0x1D71,\n    0x1E18, 0x1FD8, 0x1231, 0x1231, 0x1231, 0x1231, 0x1231, 0x1231,\n    0x1231, 0x1231, 0x1231, 0x1231, 0x1231, 0x1231, 0x1231, 0x11DF,\n    0x110A, 0xF981, 0xF981, 0xF981, 0xF981, 0xF981, 0xF981, 0xF981,\n    0xF981, 0xF981, 0xF981, 0xF981, 0xF981, 0xF981, 0xF9B5, 0xFA3F,\n    0xDC3D, 0xE04B, 0xE83E, 0xEDC1, 0xEF7F, 0xF05B, 0xF057, 0xEF78,\n    0xEDC1, 0xE991, 0xE31E, 0xDD33, 0xDA9B, 0xDAB9, 0xDB04, 0xE6DD,\n    0xF6EC, 0x1664, 0x2C3B, 0x322D, 0x33AB, 0x322F, 0x2F36, 0x2C3B,\n    0x2754, 0x1FC8, 0x18DC, 0x15D3, 0xFCED, 0xDBC9, 0x1DA3, 0x1B35,\n    0x1672, 0x1324, 0x1218, 0x1193, 0x1194, 0x121A, 0x1324, 0x15B0,\n    0x199D, 0x1D36, 0x1ECA, 0x1D23, 0x1EBB, 0x8A5E, 0xA193, 0xCF10,\n    0xEEA1, 0xF76D, 0xF9FD, 0xF826, 0xF3C0, 0xEEA1, 0xE509, 0xD645,\n    0xC8B9, 0xC2C9, 0xA2CA, 0x7718, 0xFC03, 0xFC3A, 0xFCA5, 0xFCEF,\n    0xFD06, 0xFD12, 0xFD12, 0xFD06, 0xFCEF, 0xFC81, 0xFC21, 0xFC19,\n    0xFC1E, 0xFC58, 0xFCEF, 0x002D, 0xFF8C, 0xFE4E, 0xFD72, 0xFD34,\n    0xFD20, 0xFD2B, 0xFD4A, 0xFD72, 0xFE07, 0xFE89, 0xFE68, 0xFE1A,\n    0xFDBE, 0xFD72, 0xE035, 0xD941, 0xCB9F, 0xC22A, 0xBF7A, 0xBE9C,\n    0xBF16, 0xC06E, 0xC22A, 0xC8D0, 0xCE92, 0xCD2A, 0xC9C7, 0xC5B1,\n    0xC22A, 0x26CE, 0x3176, 0x465A, 0x54D8, 0x5869, 0x58A4, 0x5716,\n    0x554D, 0x54D8, 0x59EB, 0x59EA, 0x4B39, 0x3709, 0x24DD, 0x1C36,\n    0x00DE, 0x00D6, 0x00BD, 0x0091, 0x0056, 0x0012, 0xFFCC, 0xFF82,\n    0xFF3A, 0xFEF6, 0xFEBA, 0xFE82, 0xFE51, 0xFE32, 0xFE2E, 0x021B,\n    0x0226, 0x0236, 0x0234, 0x021D, 0x01FF, 0x01DC, 0x01B7, 0x0194,\n    0x0176, 0x015E, 0x0149, 0x013A, 0x013D, 0x015E, 0xC230, 0xC1B9,\n    0xBFFC, 0xBC7A, 0xB771, 0xB1AE, 0xAB7E, 0xA52E, 0x9F0B, 0x9964,\n    0x9486, 0x9168, 0x8FE9, 0x8EAD, 0x8C5A, 0xFBD0, 0xFBD0, 0xFBD0,\n    0xFBD0, 0xFBD0, 0xFBD1, 0xFBD2, 0xFBD1, 0xFBD0, 0xFBC5, 0xFBBB,\n    0xFBB0, 0xFBA0, 0xFBA2, 0xFBD0, 0x01CA, 0x01CA, 0x01CA, 0x01CA,\n    0x01CA, 0x01C9, 0x01C9, 0x01C9, 0x01CA, 0x01D3, 0x01DB, 0x01E3,\n    0x01F0, 0x01EE, 0x01CA, 0xC7E3, 0xC7E3, 0xC7E3, 0xC7E3, 0xC7E0,\n    0xC7DA, 0xC7D5, 0xC7D7, 0xC7E3, 0xC82C, 0xC86C, 0xC8B3, 0xC91F,\n    0xC910, 0xC7E3, 0x4F2B, 0x4B7D, 0x4448, 0x3F47, 0x3D69, 0x3C10,\n    0x3BA6, 0x3C95, 0x3F47, 0x4ED7, 0x5949, 0x4B9A, 0x35E4, 0x2198,\n    0x182A, 0x0087, 0xFF2D, 0xFC85, 0xFAAD, 0xFA12, 0xF9BE, 0xF9B7,\n    0xFA05, 0xFAAD, 0xFD74, 0x0093, 0x01E5, 0x02D5, 0x0379, 0x03E7,\n    0xF8C2, 0xF94A, 0xFA54, 0xFB0D, 0xFB41, 0xFB50, 0xFB46, 0xFB2C,\n    0xFB0D, 0xFAA5, 0xFA33, 0xF9F3, 0xF9B3, 0xF99E, 0xF9DE, 0x9A6A,\n    0xA2E5, 0xB384, 0xBF0C, 0xC2D8, 0xC4F1, 0xC525, 0xC33F, 0xBF0C,\n    0xAD1B, 0x9923, 0x91A8, 0x8D17, 0x89CF, 0x8634, 0x8001, 0x8001,\n    0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F, 0xFF9F, 0xFF97,\n    0xFF87, 0xFF7C, 0xFF77, 0xFF73, 0xFF71, 0xFF73, 0xFF7C, 0xFF93,\n    0xFFB7, 0xFFD8, 0xFFE7, 0xFFFE, 0x0039, 0xFC86, 0xFC88, 0xFC8A,\n    0xFC8B, 0xFC8C, 0xFC8C, 0xFC8C, 0xFC8C, 0xFC8B, 0xFC89, 0xFC86,\n    0xFC83, 0xFC82, 0xFCA5, 0xFD05, 0xF544, 0xF5A5, 0xF663, 0xF6E7,\n    0xF71F, 0xF74F, 0xF764, 0xF748, 0xF6E7, 0xF5D4, 0xF42D, 0xF2A9,\n    0xF1FF, 0xF1F5, 0xF1D8, 0x011E, 0x00BB, 0xFFF9, 0xFF73, 0xFF49,\n    0xFF37, 0xFF39, 0xFF4E, 0xFF73, 0xFFCE, 0x005A, 0x00D7, 0x0102,\n    0x00D9, 0x008D, 0x010B, 0x0121, 0x014E, 0x016D, 0x0176, 0x0179,\n    0x0178, 0x0173, 0x016D, 0x015D, 0x0146, 0x0130, 0x0126, 0x0128,\n    0x0131, 0x212D, 0x15F2, 0xFFF1, 0xF0AC, 0xEC00, 0xE9EF, 0xEA34,\n    0xEC8A, 0xF0AC, 0xF938, 0x063A, 0x1391, 0x1D1A, 0x2316, 0x2884,\n    0x44B4, 0x446C, 0x43DE, 0x437B, 0x4371, 0x438B, 0x43AB, 0x43B0,\n    0x437B, 0x42E0, 0x41F5, 0x40FD, 0x4039, 0x3FAC, 0x3F38,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_15.inc.c",
    "content": "static const struct Animation anim_15[] = {\n    0,\n    189,\n    0,\n    0,\n    0x0F,\n    ANIMINDEX_NUMPARTS(anim_15_indices),\n    anim_15_values,\n    anim_15_indices,\n    0,\n};\n\n\nstatic const u16 anim_15_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000,\n    0x000F, 0x01C1, 0x0001, 0x0000, 0x0001, 0x01D0,\n    0x000F, 0x01B1, 0x0001, 0x0000, 0x0001, 0x01C0,\n    0x0001, 0x0192, 0x000F, 0x0193, 0x000F, 0x01A2,\n    0x0001, 0x018E, 0x0001, 0x018F, 0x0001, 0x0190,\n    0x000F, 0x003E, 0x000F, 0x004D, 0x000F, 0x005C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000F, 0x002F,\n    0x000F, 0x0002, 0x000F, 0x0011, 0x000F, 0x0020,\n    0x0001, 0x018A, 0x0001, 0x018B, 0x0001, 0x018C,\n    0x000F, 0x00A7, 0x000F, 0x00B6, 0x000F, 0x00C5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000F, 0x0098,\n    0x000F, 0x006B, 0x000F, 0x007A, 0x000F, 0x0089,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x018D,\n    0x000F, 0x015D, 0x000F, 0x016C, 0x000F, 0x017B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x015C,\n    0x000F, 0x012F, 0x000F, 0x013E, 0x000F, 0x014D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0191,\n    0x000F, 0x0102, 0x000F, 0x0111, 0x000F, 0x0120,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0101,\n    0x000F, 0x00D4, 0x000F, 0x00E3, 0x000F, 0x00F2,\n};\n\nstatic const s16 anim_15_values[] = {\n    0x0000, 0x3FFF, 0xF62C, 0xF64F, 0xF6AB, 0xF729, 0xF7B2, 0xF830,\n    0xF88B, 0xF8AF, 0xF88D, 0xF833, 0xF7B9, 0xF732, 0xF6B5, 0xF657,\n    0xF62C, 0xF980, 0xF8B2, 0xF6A1, 0xF3CD, 0xF0B8, 0xEDE3, 0xEBD2,\n    0xEB04, 0xEBCB, 0xEDCD, 0xF08F, 0xF396, 0xF667, 0xF888, 0xF97C,\n    0xF06F, 0xF085, 0xF0BC, 0xF108, 0xF15B, 0xF1A7, 0xF1DF, 0xF1F4,\n    0xF1E0, 0xF1AA, 0xF15F, 0xF10E, 0xF0C2, 0xF089, 0xF06F, 0xD468,\n    0xD1F1, 0xCCA1, 0xC797, 0xC5F4, 0xCC01, 0xD641, 0xDC26, 0xDA53,\n    0xD512, 0xCF54, 0xCC09, 0xCD8F, 0xD1A7, 0xD45D, 0xAA70, 0xADBA,\n    0xB634, 0xC1CC, 0xCE6E, 0xDA06, 0xE281, 0xE5CA, 0xE29D, 0xDA63,\n    0xCF16, 0xC2AD, 0xB720, 0xAE69, 0xAA7E, 0xDE99, 0xDE6C, 0xDDF9,\n    0xDD5B, 0xDCAF, 0xDC11, 0xDB9E, 0xDB71, 0xDB9C, 0xDC0C, 0xDCA6,\n    0xDD4F, 0xDDEC, 0xDE63, 0xDE98, 0x0F8B, 0x0B96, 0x0162, 0xF370,\n    0xE43D, 0xD64A, 0xCC17, 0xC822, 0xCBF5, 0xD5DB, 0xE374, 0xF262,\n    0x0046, 0x0AC3, 0x0F7A, 0xE940, 0xE9D2, 0xEB49, 0xED4A, 0xEF78,\n    0xF179, 0xF2F0, 0xF382, 0xF2F5, 0xF189, 0xEF95, 0xED70, 0xEB71,\n    0xE9F0, 0xE942, 0xF618, 0xF652, 0xF6E8, 0xF7B5, 0xF895, 0xF962,\n    0xF9F8, 0xFA32, 0xF9FA, 0xF968, 0xF8A0, 0xF7C5, 0xF6F8, 0xF65E,\n    0xF619, 0xE633, 0xE640, 0xE660, 0xE68D, 0xE6BD, 0xE6EA, 0xE70B,\n    0xE717, 0xE70B, 0xE6EB, 0xE6C0, 0xE690, 0xE664, 0xE642, 0xE633,\n    0xDF00, 0xDC32, 0xD6F8, 0xD416, 0xD59C, 0xD91C, 0xDC9F, 0xDE30,\n    0xDB68, 0xD655, 0xD3AB, 0xD569, 0xD923, 0xDCF5, 0xDEF8, 0x1BA7,\n    0x1BA4, 0x1B9C, 0x1B90, 0x1B84, 0x1B79, 0x1B71, 0x1B6E, 0x1B71,\n    0x1B79, 0x1B84, 0x1B90, 0x1B9B, 0x1BA3, 0x1BA7, 0x2E1B, 0x2DCD,\n    0x2D04, 0x2BF1, 0x2AC6, 0x29B4, 0x28EB, 0x289D, 0x28E8, 0x29AB,\n    0x2AB7, 0x2BDD, 0x2CEE, 0x2DBD, 0x2E19, 0xBB91, 0xB95E, 0xB3B3,\n    0xABF3, 0xA381, 0x9BC1, 0x9616, 0x93E3, 0x9603, 0x9B83, 0xA311,\n    0xAB5D, 0xB315, 0xB8E9, 0xBB87, 0x0183, 0x0179, 0x015E, 0x0139,\n    0x0111, 0x00EC, 0x00D2, 0x00C7, 0x00D1, 0x00EB, 0x010F, 0x0137,\n    0x015B, 0x0177, 0x0183, 0x01CF, 0x01D5, 0x01E4, 0x01F9, 0x0210,\n    0x0225, 0x0234, 0x023A, 0x0234, 0x0226, 0x0211, 0x01FB, 0x01E6,\n    0x01D6, 0x01CF, 0xE5A9, 0xE4D8, 0xE2C0, 0xDFE1, 0xDCC2, 0xD9E4,\n    0xD7CB, 0xD6FB, 0xD7C4, 0xD9CD, 0xDC98, 0xDFAA, 0xE285, 0xE4AD,\n    0xE5A5, 0x1CA8, 0xFEF2, 0xFF31, 0xFFD3, 0x00AF, 0x01A0, 0x027E,\n    0x031F, 0x035E, 0x031F, 0x027E, 0x01A0, 0x00AF, 0xFFD3, 0xFF31,\n    0xFEF2, 0x0A8D, 0x0ADC, 0x0BA7, 0x0CBD, 0x0DED, 0x0F03, 0x0FCF,\n    0x101E, 0x0FCF, 0x0F03, 0x0DED, 0x0CBD, 0x0BA7, 0x0ADC, 0x0A8D,\n    0xB85D, 0xB76B, 0xB4FB, 0xB1A6, 0xAE05, 0xAAB0, 0xA840, 0xA74F,\n    0xA840, 0xAAB0, 0xAE05, 0xB1A6, 0xB4FB, 0xB76B, 0xB85D, 0xFFFA,\n    0xFFFE, 0x0006, 0x0013, 0x0021, 0x002E, 0x0038, 0x003B, 0x0038,\n    0x002F, 0x0022, 0x0014, 0x0007, 0xFFFF, 0xFFFA, 0xFEDF, 0xFEE0,\n    0xFEE1, 0xFEE2, 0xFEE3, 0xFEE4, 0xFEE5, 0xFEE5, 0xFEE5, 0xFEE4,\n    0xFEE3, 0xFEE2, 0xFEE1, 0xFEE0, 0xFEDF, 0xE37D, 0xE2F8, 0xE1A2,\n    0xDFCD, 0xDDCE, 0xDBF9, 0xDAA2, 0xDA1E, 0xDA9E, 0xDBEB, 0xDDB4,\n    0xDFA9, 0xE17C, 0xE2DD, 0xE37B, 0x1EF6, 0x0460, 0x045A, 0x044A,\n    0x0434, 0x041C, 0x0406, 0x03F6, 0x03F0, 0x03F6, 0x0406, 0x041C,\n    0x0434, 0x044A, 0x045A, 0x0460, 0xF3FB, 0xF356, 0xF1AE, 0xEF6B,\n    0xECF3, 0xEAB0, 0xE908, 0xE864, 0xE908, 0xEAB0, 0xECF3, 0xEF6B,\n    0xF1AE, 0xF356, 0xF3FB, 0x9C09, 0x9E04, 0xA322, 0xAA20, 0xB1BF,\n    0xB8BD, 0xBDDB, 0xBFD7, 0xBDDB, 0xB8BD, 0xB1BF, 0xAA20, 0xA322,\n    0x9E04, 0x9C09, 0x7FFF, 0x7FFF, 0x4171, 0xBF5F, 0x7FFF, 0x7FFF,\n    0x4171, 0xBF5F, 0x0007, 0x0271, 0x0254, 0x020A, 0x01A4, 0x0135,\n    0x00CF, 0x0085, 0x0068, 0x0085, 0x00CF, 0x0135, 0x01A4, 0x020A,\n    0x0254, 0x0271, 0xE591, 0xE591, 0xE591, 0xE591, 0xE591, 0xE591,\n    0xE590, 0xE590, 0xE590, 0xE591, 0xE591, 0xE591, 0xE591, 0xE591,\n    0xE591, 0x0DDA, 0x0C96, 0x0954, 0x04DF, 0x0004, 0xFB90, 0xF84D,\n    0xF70A, 0xF843, 0xFB6C, 0xFFC4, 0x0489, 0x08F9, 0x0C53, 0x0DD4,\n    0xF1B4, 0xF8AB, 0xF91F, 0xFA49, 0xFBE0, 0xFD9C, 0xFF34, 0x005D,\n    0x00D0, 0x0060, 0xFF40, 0xFDB3, 0xFBFF, 0xFA69, 0xF937, 0xF8AD,\n    0x7FFF,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_16.inc.c",
    "content": "static const struct Animation anim_16[] = {\n    0,\n    189,\n    0,\n    0,\n    0x64,\n    ANIMINDEX_NUMPARTS(anim_16_indices),\n    anim_16_values,\n    anim_16_indices,\n    0,\n};\n\n\nstatic const u16 anim_16_indices[] = {\n    0x0001, 0x0000, 0x0064, 0x0001, 0x0001, 0x0065, 0x0001, 0x0000, 0x0001, 0x0066, 0x0001, 0x0000,\n    0x0064, 0x084D, 0x0001, 0x0000, 0x0001, 0x08B1,\n    0x0064, 0x0721, 0x0064, 0x0785, 0x0064, 0x07E9,\n    0x0064, 0x05F5, 0x0064, 0x0659, 0x0064, 0x06BD,\n    0x0001, 0x05F1, 0x0001, 0x05F2, 0x0001, 0x05F3,\n    0x0001, 0x006B, 0x0001, 0x006C, 0x0001, 0x006D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x006A,\n    0x0001, 0x0067, 0x0001, 0x0068, 0x0001, 0x0069,\n    0x0001, 0x05ED, 0x0001, 0x05EE, 0x0001, 0x05EF,\n    0x0001, 0x0072, 0x0001, 0x0073, 0x0001, 0x0074,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0071,\n    0x0001, 0x006E, 0x0001, 0x006F, 0x0001, 0x0070,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x05F0,\n    0x0064, 0x04C1, 0x0064, 0x0525, 0x0064, 0x0589,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0064, 0x045D,\n    0x0064, 0x0331, 0x0064, 0x0395, 0x0064, 0x03F9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x05F4,\n    0x0064, 0x0205, 0x0064, 0x0269, 0x0064, 0x02CD,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0064, 0x01A1,\n    0x0064, 0x0075, 0x0064, 0x00D9, 0x0064, 0x013D,\n};\n\nstatic const s16 anim_16_values[] = {\n    0x0000, 0x00B3, 0x00B3, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B8,\n    0x00B9, 0x00BB, 0x00BC, 0x00BE, 0x00C0, 0x00C1, 0x00C3, 0x00C4,\n    0x00C5, 0x00C6, 0x00C7, 0x00C8, 0x00C8, 0x00C8, 0x00C7, 0x00C6,\n    0x00C5, 0x00C4, 0x00C2, 0x00C1, 0x00BF, 0x00BD, 0x00BC, 0x00BA,\n    0x00B8, 0x00B6, 0x00B5, 0x00B4, 0x00B3, 0x00B2, 0x00B3, 0x00B3,\n    0x00B4, 0x00B3, 0x00B2, 0x00B1, 0x00B1, 0x00B2, 0x00B4, 0x00B6,\n    0x00B8, 0x00BA, 0x00BD, 0x00BF, 0x00C1, 0x00C3, 0x00C5, 0x00C7,\n    0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CC, 0x00CC, 0x00CC, 0x00CB,\n    0x00CB, 0x00CA, 0x00C9, 0x00C9, 0x00C8, 0x00C6, 0x00C5, 0x00C4,\n    0x00C3, 0x00C1, 0x00C0, 0x00BF, 0x00BD, 0x00BC, 0x00BA, 0x00B9,\n    0x00B8, 0x00B7, 0x00B5, 0x00B4, 0x00B3, 0x00B2, 0x00B1, 0x00B0,\n    0x00B0, 0x00AF, 0x00AF, 0x00AF, 0x00AF, 0x00B0, 0x00B0, 0x00B1,\n    0x00B1, 0x00B2, 0x00B2, 0x00B3, 0x00B3, 0xFFFF, 0x3FFF, 0xE7CE,\n    0xF984, 0xE96B, 0xF446, 0x0FB9, 0xF4A2, 0x94B9, 0x0ACF, 0x020D,\n    0xEDD2, 0xE463, 0xF6CC, 0x0FE6, 0x99E5, 0x0406, 0x040E, 0x0423,\n    0x0444, 0x0470, 0x04A6, 0x04E5, 0x052A, 0x0575, 0x05C4, 0x0617,\n    0x066A, 0x06BE, 0x0711, 0x0761, 0x07AE, 0x07F5, 0x0835, 0x086E,\n    0x089E, 0x08C2, 0x08DB, 0x08E7, 0x08E4, 0x0231, 0x0171, 0x00C9,\n    0x0038, 0xFFBC, 0xFF52, 0xFEFA, 0xFEB0, 0xFE74, 0xFE44, 0xFE1E,\n    0xFE00, 0xFE09, 0xFE4E, 0xFEBE, 0xFF46, 0xFFD5, 0x0057, 0x00BC,\n    0x00F2, 0x0108, 0x011A, 0x0128, 0x0132, 0x013A, 0x013E, 0x0141,\n    0x0140, 0x013E, 0x013A, 0x0135, 0x012F, 0x0128, 0x0121, 0x0119,\n    0x0112, 0x010B, 0x0104, 0x00FF, 0x00FB, 0x00F9, 0x00F8, 0x00FA,\n    0x00FE, 0x0102, 0x0103, 0x0101, 0x00FE, 0x00FA, 0x00F5, 0x00F0,\n    0x00ED, 0x00EA, 0x00EA, 0x00ED, 0x00F2, 0x00FC, 0x010B, 0x011F,\n    0x0138, 0x0158, 0x0180, 0x01AF, 0x01E7, 0x024E, 0x02FC, 0x03D8,\n    0x04CA, 0x05BA, 0x0691, 0x0736, 0x0790, 0x071C, 0x05E2, 0x049C,\n    0x0406, 0x017C, 0x017C, 0x017B, 0x017A, 0x0179, 0x0177, 0x0175,\n    0x0173, 0x0171, 0x016E, 0x016C, 0x0169, 0x0166, 0x0164, 0x0161,\n    0x015F, 0x015D, 0x015B, 0x0159, 0x0158, 0x0156, 0x0156, 0x0155,\n    0x0156, 0x0188, 0x0189, 0x018A, 0x018A, 0x018A, 0x0189, 0x0187,\n    0x0185, 0x0182, 0x017F, 0x017B, 0x0177, 0x0171, 0x0169, 0x015E,\n    0x0153, 0x0148, 0x013F, 0x0137, 0x0133, 0x0131, 0x012F, 0x012D,\n    0x012B, 0x012A, 0x0129, 0x0128, 0x0127, 0x0126, 0x0126, 0x0126,\n    0x0125, 0x0125, 0x0125, 0x0125, 0x0126, 0x0126, 0x0126, 0x0127,\n    0x0127, 0x0128, 0x0128, 0x0129, 0x0129, 0x0128, 0x0125, 0x0121,\n    0x011B, 0x0114, 0x010D, 0x0105, 0x00FE, 0x00F7, 0x00F1, 0x00ED,\n    0x00EB, 0x00EA, 0x00ED, 0x00F2, 0x00FA, 0x0107, 0x0117, 0x012C,\n    0x0146, 0x017D, 0x01DD, 0x0258, 0x02DF, 0x0363, 0x03D5, 0x0426,\n    0x0448, 0x03DA, 0x02E4, 0x01ED, 0x017C, 0xB647, 0xB653, 0xB677,\n    0xB6B0, 0xB6FC, 0xB75A, 0xB7C8, 0xB844, 0xB8CB, 0xB95C, 0xB9F6,\n    0xBA96, 0xBB3A, 0xBBE1, 0xBC88, 0xBD2E, 0xBDD0, 0xBE6E, 0xBF04,\n    0xBF92, 0xC014, 0xC08A, 0xC0F2, 0xC149, 0xBC8C, 0xBBC9, 0xBB07,\n    0xBA4D, 0xB9A1, 0xB90A, 0xB88D, 0xB832, 0xB7FE, 0xB7F7, 0xB824,\n    0xB88C, 0xB98C, 0xBB53, 0xBD9E, 0xC02C, 0xC2BA, 0xC506, 0xC6CD,\n    0xC7CE, 0xC84A, 0xC8B2, 0xC907, 0xC94A, 0xC97D, 0xC9A2, 0xC9BA,\n    0xC9C7, 0xC9CA, 0xC9C5, 0xC9B8, 0xC9A7, 0xC992, 0xC97B, 0xC963,\n    0xC94C, 0xC938, 0xC928, 0xC91D, 0xC919, 0xC91E, 0xC92D, 0xC947,\n    0xC96F, 0xC9AA, 0xC9F9, 0xCA5B, 0xCACB, 0xCB47, 0xCBCC, 0xCC57,\n    0xCCE4, 0xCD70, 0xCDF9, 0xCE7B, 0xCEF3, 0xCF5E, 0xCFBA, 0xD002,\n    0xD033, 0xD04C, 0xD048, 0xD025, 0xCFDF, 0xCF27, 0xCDC6, 0xCBE2,\n    0xC99F, 0xC723, 0xC494, 0xC214, 0xBFCB, 0xBD1B, 0xB9F8, 0xB75D,\n    0xB647, 0x2A1A, 0x2A11, 0x29F6, 0x29CD, 0x2998, 0x295A, 0x2914,\n    0x28CA, 0x287E, 0x2833, 0x27EB, 0x27A8, 0x276D, 0x273D, 0x271B,\n    0x2708, 0x2707, 0x271B, 0x2746, 0x278B, 0x27EC, 0x286C, 0x290E,\n    0x29D3, 0x2B07, 0x2CDD, 0x2F38, 0x31F7, 0x34FC, 0x3828, 0x3B5D,\n    0x3E7B, 0x4163, 0x43F7, 0x4617, 0x47A4, 0x488C, 0x48DC, 0x48A7,\n    0x47FF, 0x46F7, 0x45A3, 0x4414, 0x425E, 0x4087, 0x3E8C, 0x3C71,\n    0x3A39, 0x37E9, 0x3585, 0x3311, 0x3092, 0x2E0A, 0x2B7E, 0x28F3,\n    0x266C, 0x23EE, 0x217C, 0x1F1B, 0x1CCE, 0x1A9A, 0x1883, 0x168C,\n    0x14BB, 0x1312, 0x1196, 0x104C, 0x0F36, 0x0E5D, 0x0DC0, 0x0D5C,\n    0x0D2C, 0x0D2B, 0x0D55, 0x0DA6, 0x0E19, 0x0EA9, 0x0F53, 0x1011,\n    0x10DF, 0x11B9, 0x129A, 0x137E, 0x1460, 0x153C, 0x160D, 0x16CF,\n    0x177E, 0x1839, 0x1920, 0x1A2D, 0x1B5D, 0x1CAA, 0x1E10, 0x1F89,\n    0x2110, 0x2359, 0x265C, 0x28FB, 0x2A1A, 0x14B9, 0x14B7, 0x14B1,\n    0x14A7, 0x1499, 0x1486, 0x146E, 0x1452, 0x1431, 0x140C, 0x13E1,\n    0x13B1, 0x137C, 0x1342, 0x1302, 0x12BD, 0x1272, 0x1221, 0x11CA,\n    0x116D, 0x110A, 0x10A1, 0x1031, 0x0FBB, 0x0F2D, 0x0E7A, 0x0DA8,\n    0x0CBB, 0x0BB8, 0x0AA7, 0x098B, 0x0869, 0x0749, 0x062D, 0x051D,\n    0x041D, 0x030B, 0x01D2, 0x0089, 0xFF4A, 0xFE2B, 0xFD45, 0xFCB0,\n    0xFC86, 0xFCA0, 0xFCCA, 0xFD03, 0xFD49, 0xFD9B, 0xFDF9, 0xFE5F,\n    0xFECF, 0xFF45, 0xFFC2, 0x0042, 0x00C7, 0x014F, 0x01D7, 0x0260,\n    0x02E7, 0x036C, 0x03ED, 0x0469, 0x04DF, 0x054E, 0x05B4, 0x0611,\n    0x0662, 0x06A8, 0x06E3, 0x0714, 0x073D, 0x075E, 0x077A, 0x0792,\n    0x07A6, 0x07B9, 0x07CB, 0x07DE, 0x07F3, 0x080C, 0x0829, 0x084C,\n    0x0876, 0x08A9, 0x08E6, 0x092E, 0x0983, 0x09FA, 0x0AA2, 0x0B71,\n    0x0C5D, 0x0D5B, 0x0E62, 0x0F67, 0x105F, 0x1194, 0x1304, 0x1438,\n    0x14B9, 0x0963, 0x096A, 0x097E, 0x099F, 0x09CA, 0x09FE, 0x0A3C,\n    0x0A80, 0x0ACA, 0x0B19, 0x0B6B, 0x0BC0, 0x0C16, 0x0C6B, 0x0CBF,\n    0x0D11, 0x0D5E, 0x0DA7, 0x0DE9, 0x0E24, 0x0E56, 0x0E7E, 0x0E9B,\n    0x0EAC, 0x0EA6, 0x0E83, 0x0E47, 0x0DF8, 0x0D99, 0x0D2F, 0x0CBE,\n    0x0C4B, 0x0BDA, 0x0B6F, 0x0B0F, 0x0ABF, 0x0A7B, 0x0A3D, 0x0A04,\n    0x09CF, 0x099E, 0x0970, 0x0943, 0x0918, 0x08EB, 0x08BC, 0x088B,\n    0x0859, 0x0826, 0x07F1, 0x07BD, 0x0788, 0x0753, 0x071F, 0x06EC,\n    0x06BB, 0x068B, 0x065D, 0x0631, 0x0609, 0x05E3, 0x05C1, 0x05A3,\n    0x0588, 0x0573, 0x0562, 0x0557, 0x0551, 0x0552, 0x0559, 0x0568,\n    0x057C, 0x0596, 0x05B6, 0x05DA, 0x0602, 0x062F, 0x065F, 0x0691,\n    0x06C7, 0x06FE, 0x0737, 0x0772, 0x07AD, 0x07E8, 0x0824, 0x085E,\n    0x0898, 0x08E2, 0x0948, 0x09BE, 0x0A3A, 0x0AB0, 0x0B18, 0x0B64,\n    0x0B8B, 0x0B3E, 0x0A80, 0x09BC, 0x0963, 0xC2A4, 0xC2B6, 0xC2E9,\n    0xC339, 0xC3A3, 0xC424, 0xC4B8, 0xC55A, 0xC609, 0xC6BF, 0xC77A,\n    0xC836, 0xC8EF, 0xC9A2, 0xCA4C, 0xCAE7, 0xCB72, 0xCBE9, 0xCC47,\n    0xCC89, 0xCCAD, 0xCCAD, 0xCC87, 0xCC37, 0xCB97, 0xCA8C, 0xC924,\n    0xC76C, 0xC571, 0xC341, 0xC0E9, 0xBE76, 0xBBF6, 0xB976, 0xB704,\n    0xB4AC, 0xB209, 0xAED6, 0xAB59, 0xA7D5, 0xA48D, 0xA1C5, 0x9FC0,\n    0x9EC4, 0x9E72, 0x9E3F, 0x9E2A, 0x9E2F, 0x9E4E, 0x9E83, 0x9ECE,\n    0x9F2B, 0x9F99, 0xA015, 0xA09F, 0xA132, 0xA1CF, 0xA271, 0xA318,\n    0xA3C1, 0xA46B, 0xA512, 0xA5B5, 0xA653, 0xA6E8, 0xA773, 0xA7F2,\n    0xA863, 0xA8C9, 0xA92B, 0xA98B, 0xA9E7, 0xAA42, 0xAA9C, 0xAAF6,\n    0xAB50, 0xABAC, 0xAC09, 0xAC69, 0xACCD, 0xAD35, 0xADA1, 0xAE14,\n    0xAE8D, 0xAF0D, 0xAF95, 0xB025, 0xB0C0, 0xB173, 0xB24D, 0xB349,\n    0xB465, 0xB59D, 0xB6ED, 0xB852, 0xB9C8, 0xBC01, 0xBEF5, 0xC189,\n    0xC2A4, 0xFEC6, 0xFEC3, 0xFEBC, 0xFEB0, 0xFEA2, 0xFE92, 0xFE80,\n    0xFE6E, 0xFE5C, 0xFE4B, 0xFE3C, 0xFE30, 0xFE28, 0xFE24, 0xFE25,\n    0xFE2D, 0xFE3C, 0xFE52, 0xFE71, 0xFE99, 0xFED1, 0xFF1B, 0xFF76,\n    0xFFDD, 0x004E, 0x00C8, 0x0148, 0x01CA, 0x024C, 0x02CB, 0x0346,\n    0x03B8, 0x0420, 0x047A, 0x04C5, 0x04FD, 0x01F6, 0x0315, 0x0440,\n    0x04DE, 0x04AA, 0x03FE, 0x0335, 0x02A7, 0x025B, 0x0219, 0x01DF,\n    0x01AD, 0x017F, 0x0155, 0x012C, 0x0104, 0x00DA, 0x00AF, 0x0084,\n    0x0059, 0x002E, 0x0003, 0xFFDB, 0xFFB2, 0xFF8C, 0xFF67, 0xFF44,\n    0xFF24, 0xFF07, 0xFEEE, 0xFED8, 0xFEC6, 0xFEB7, 0xFEAB, 0xFEA3,\n    0xFE9C, 0xFE98, 0xFE96, 0xFE95, 0xFE96, 0xFE99, 0xFE9C, 0xFEA0,\n    0xFEA5, 0xFEAA, 0xFEAF, 0xFEB4, 0xFEB9, 0xFEBD, 0xFEC0, 0xFEC2,\n    0xFEC3, 0xFEC4, 0xFEC5, 0xFEC6, 0xFEC7, 0xFEC7, 0xFEC7, 0xFEC7,\n    0xFEC6, 0xFEC6, 0xFEC6, 0xFEC6, 0xFEC6, 0x0008, 0x0009, 0x000C,\n    0x0011, 0x0017, 0x001E, 0x0026, 0x002F, 0x0038, 0x0041, 0x004A,\n    0x0052, 0x0059, 0x0060, 0x0065, 0x0068, 0x0069, 0x0068, 0x0065,\n    0x005E, 0x0055, 0x0048, 0x0039, 0x0027, 0x0012, 0xFFFD, 0xFFE5,\n    0xFFCC, 0xFFB2, 0xFF97, 0xFF7C, 0xFF61, 0xFF46, 0xFF2B, 0xFF12,\n    0xFEF9, 0xFEC5, 0xFEAB, 0xFE92, 0xFE78, 0xFE57, 0xFE32, 0xFE14,\n    0xFE08, 0xFE0C, 0xFE16, 0xFE24, 0xFE35, 0xFE48, 0xFE5D, 0xFE73,\n    0xFE88, 0xFE9E, 0xFEB6, 0xFED0, 0xFEEA, 0xFF06, 0xFF22, 0xFF3E,\n    0xFF5A, 0xFF75, 0xFF8E, 0xFFA6, 0xFFBC, 0xFFD0, 0xFFE1, 0xFFEF,\n    0xFFF9, 0x0000, 0x0003, 0x0005, 0x0004, 0x0002, 0xFFFF, 0xFFFA,\n    0xFFF3, 0xFFEC, 0xFFE4, 0xFFDC, 0xFFD4, 0xFFCC, 0xFFC4, 0xFFBE,\n    0xFFB8, 0xFFB3, 0xFFB0, 0xFFAE, 0xFFAF, 0xFFC0, 0xFFE4, 0x0008,\n    0x001E, 0x0022, 0x0023, 0x0020, 0x001A, 0x0014, 0x000E, 0x0009,\n    0x0008, 0xC07B, 0xC08A, 0xC0B6, 0xC0FB, 0xC157, 0xC1C5, 0xC243,\n    0xC2CD, 0xC361, 0xC3FA, 0xC497, 0xC532, 0xC5CB, 0xC65C, 0xC6E3,\n    0xC75C, 0xC7C5, 0xC81A, 0xC858, 0xC87C, 0xC886, 0xC87A, 0xC85A,\n    0xC827, 0xC7E6, 0xC797, 0xC73C, 0xC6D8, 0xC66D, 0xC5FD, 0xC58A,\n    0xC517, 0xC4A5, 0xC437, 0xC3CE, 0xC36E, 0xC128, 0xBFB6, 0xBE43,\n    0xBCAC, 0xBA92, 0xB822, 0xB615, 0xB524, 0xB539, 0xB5B6, 0xB67D,\n    0xB772, 0xB879, 0xB974, 0xBA47, 0xBAD6, 0xBB3A, 0xBB9E, 0xBC01,\n    0xBC62, 0xBCBF, 0xBD17, 0xBD6A, 0xBDB5, 0xBDF7, 0xBE30, 0xBE5E,\n    0xBE7F, 0xBE93, 0xBE99, 0xBE8E, 0xBE72, 0xBE3A, 0xBDE2, 0xBD6D,\n    0xBCE1, 0xBC42, 0xBB95, 0xBADF, 0xBA24, 0xB969, 0xB8B2, 0xB806,\n    0xB767, 0xB6DC, 0xB668, 0xB611, 0xB5DB, 0xB5CB, 0xB5E6, 0xB5F3,\n    0xB5D0, 0xB59C, 0xB578, 0xB586, 0xB5E6, 0xB6E2, 0xB87A, 0xBA63,\n    0xBC4D, 0xBDEB, 0xBEF1, 0xBF10, 0xBDFC, 0x378C, 0x3745, 0x3678,\n    0x3534, 0x3389, 0x3183, 0x2F33, 0x2CA6, 0x29EB, 0x2710, 0x2424,\n    0x2136, 0x1E55, 0x1B8D, 0x18EF, 0x1689, 0x1469, 0x129E, 0x1137,\n    0x1041, 0x0FBD, 0x0F99, 0x0FCB, 0x1049, 0x1108, 0x11FE, 0x1320,\n    0x1464, 0x15BF, 0x1728, 0x1893, 0x19F7, 0x1B49, 0x1C7E, 0x1D8D,\n    0x1E6A, 0x1F2A, 0x1FE4, 0x2092, 0x212D, 0x21AF, 0x2211, 0x224D,\n    0x225D, 0x2224, 0x219F, 0x20E6, 0x2014, 0x1F43, 0x1E8D, 0x1E0D,\n    0x1DDD, 0x1DDE, 0x1DE3, 0x1DED, 0x1DFD, 0x1E14, 0x1E34, 0x1E5E,\n    0x1E93, 0x1ED4, 0x1F23, 0x1F80, 0x1FEE, 0x206C, 0x20FE, 0x21A3,\n    0x225D, 0x2334, 0x242D, 0x2545, 0x2676, 0x27BF, 0x291A, 0x2A83,\n    0x2BF8, 0x2D73, 0x2EF2, 0x306F, 0x31E8, 0x3358, 0x34BC, 0x3610,\n    0x374F, 0x3876, 0x3981, 0x3A6C, 0x3B33, 0x3BD3, 0x3C47, 0x3C8C,\n    0x3C9D, 0x3C77, 0x3C1B, 0x3B94, 0x3AE9, 0x3A24, 0x394D, 0x386D,\n    0x378C, 0xF629, 0xF62A, 0xF62F, 0xF635, 0xF63D, 0xF646, 0xF64F,\n    0xF658, 0xF65F, 0xF665, 0xF669, 0xF66A, 0xF667, 0xF661, 0xF655,\n    0xF644, 0xF62D, 0xF610, 0xF5EB, 0xF5BE, 0xF589, 0xF54B, 0xF506,\n    0xF4B9, 0xF465, 0xF40A, 0xF3AA, 0xF343, 0xF2D8, 0xF267, 0xF1F2,\n    0xF17A, 0xF0FE, 0xF07F, 0xEFFD, 0xEF79, 0xEED8, 0xEE0A, 0xED20,\n    0xEC2C, 0xEB3F, 0xEA6A, 0xE9BE, 0xE94D, 0xE916, 0xE90A, 0xE921,\n    0xE953, 0xE999, 0xE9EB, 0xEA42, 0xEA96, 0xEAE8, 0xEB3F, 0xEB9A,\n    0xEBF9, 0xEC5B, 0xECBF, 0xED25, 0xED8E, 0xEDF7, 0xEE60, 0xEECA,\n    0xEF33, 0xEF9C, 0xF003, 0xF068, 0xF0CA, 0xF12D, 0xF191, 0xF1F7,\n    0xF25E, 0xF2C6, 0xF32E, 0xF394, 0xF3FA, 0xF45E, 0xF4C0, 0xF51E,\n    0xF57A, 0xF5D1, 0xF624, 0xF672, 0xF6BA, 0xF6F6, 0xF721, 0xF73D,\n    0xF74D, 0xF754, 0xF753, 0xF74D, 0xF745, 0xF732, 0xF70E, 0xF6E0,\n    0xF6AE, 0xF67C, 0xF652, 0xF634, 0xF629, 0xF79A, 0xF7A2, 0xF7B9,\n    0xF7DF, 0xF810, 0xF84D, 0xF893, 0xF8E1, 0xF935, 0xF98E, 0xF9EA,\n    0xFA48, 0xFAA6, 0xFB03, 0xFB5E, 0xFBB4, 0xFC05, 0xFC4E, 0xFC8F,\n    0xFCC6, 0xFCF3, 0xFD1B, 0xFD3E, 0xFD5C, 0xFD76, 0xFD8D, 0xFDA1,\n    0xFDB3, 0xFDC4, 0xFDD4, 0xFDE4, 0xFDF5, 0xFE07, 0xFE1C, 0xFE33,\n    0xFE4D, 0xFE6C, 0xFE91, 0xFEB9, 0xFEE2, 0xFF0A, 0xFF2E, 0xFF4E,\n    0xFF67, 0xFF80, 0xFF9F, 0xFFBF, 0xFFD8, 0xFFE6, 0xFFE3, 0xFFC7,\n    0xFF8E, 0xFF3E, 0xFEE1, 0xFE7B, 0xFE0C, 0xFD95, 0xFD1A, 0xFC9A,\n    0xFC18, 0xFB96, 0xFB14, 0xFA95, 0xFA1A, 0xF9A5, 0xF937, 0xF8D2,\n    0xF878, 0xF827, 0xF7DE, 0xF79C, 0xF75F, 0xF728, 0xF6F4, 0xF6C3,\n    0xF694, 0xF666, 0xF639, 0xF60B, 0xF5DC, 0xF5AA, 0xF574, 0xF53A,\n    0xF4FB, 0xF4A7, 0xF436, 0xF3B7, 0xF338, 0xF2C6, 0xF270, 0xF242,\n    0xF24C, 0xF2A6, 0xF34F, 0xF42B, 0xF51D, 0xF60A, 0xF6D5, 0xF764,\n    0xF79A, 0xAAEC, 0xAAE3, 0xAAC8, 0xAAA0, 0xAA6B, 0xAA2C, 0xA9E7,\n    0xA99D, 0xA950, 0xA904, 0xA8BB, 0xA878, 0xA83C, 0xA80A, 0xA7E6,\n    0xA7D0, 0xA7CD, 0xA7DD, 0xA804, 0xA845, 0xA8A2, 0xA91B, 0xA9AD,\n    0xAA56, 0xAB14, 0xABE3, 0xACC1, 0xADAC, 0xAEA1, 0xAF9D, 0xB09F,\n    0xB1A2, 0xB2A6, 0xB3A6, 0xB4A1, 0xB595, 0xB68E, 0xB79B, 0xB8B7,\n    0xB9DE, 0xBB0D, 0xBC3F, 0xBD70, 0xBE9D, 0xBFD7, 0xC12B, 0xC28B,\n    0xC3E8, 0xC534, 0xC660, 0xC760, 0xC824, 0xC8C3, 0xC95E, 0xC9F3,\n    0xCA82, 0xCB0A, 0xCB88, 0xCBFE, 0xCC68, 0xCCC6, 0xCD18, 0xCD5C,\n    0xCD91, 0xCDB6, 0xCDCA, 0xCDCD, 0xCDBC, 0xCD9A, 0xCD69, 0xCD2B,\n    0xCCDE, 0xCC82, 0xCC18, 0xCBA0, 0xCB18, 0xCA82, 0xC9DE, 0xC92A,\n    0xC868, 0xC796, 0xC6B6, 0xC5C7, 0xC4C8, 0xC390, 0xC201, 0xC02F,\n    0xBE2E, 0xBC12, 0xB9EF, 0xB7D9, 0xB5E5, 0xB426, 0xB273, 0xB0AB,\n    0xAEEF, 0xAD5E, 0xAC17, 0xAB3C, 0xAAEC, 0x8001, 0x8001, 0x4171,\n    0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F, 0xFBEE, 0xFBF0, 0xFBF9,\n    0xFC06, 0xFC19, 0xFC30, 0xFC4C, 0xFC6B, 0xFC8F, 0xFCB6, 0xFCE0,\n    0xFD0D, 0xFD3D, 0xFD6F, 0xFDA4, 0xFDDA, 0xFE12, 0xFE4B, 0xFE85,\n    0xFEBF, 0xFEFB, 0xFF36, 0xFF71, 0xFFAC, 0xFFE6, 0x001E, 0x0056,\n    0x008C, 0x00C0, 0x00F3, 0x0122, 0x0150, 0x017A, 0x01A1, 0x01C4,\n    0x01E4, 0x01FF, 0x0216, 0x0229, 0x0236, 0x023F, 0x0243, 0x0242,\n    0x023D, 0x0234, 0x0227, 0x0217, 0x0204, 0x01ED, 0x01D4, 0x01B8,\n    0x019A, 0x017A, 0x0158, 0x0134, 0x010F, 0x00E9, 0x00C3, 0x009B,\n    0x0073, 0x004B, 0x0024, 0xFFFD, 0xFFD7, 0xFFB1, 0xFF8C, 0xFF68,\n    0xFF47, 0xFF27, 0xFF09, 0xFEED, 0xFED3, 0xFEB9, 0xFE9F, 0xFE85,\n    0xFE6C, 0xFE52, 0xFE39, 0xFE20, 0xFE07, 0xFDEE, 0xFDD5, 0xFDBC,\n    0xFDA3, 0xFD8B, 0xFD72, 0xFD59, 0xFD40, 0xFD26, 0xFD0D, 0xFCF4,\n    0xFCDA, 0xFCC1, 0xFCA7, 0xFC8D, 0xFC72, 0xFC4F, 0xFC23, 0xFBFD,\n    0xFBEE, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFE, 0xFFFD, 0xFFFC,\n    0xFFFB, 0xFFF9, 0xFFF7, 0xFFF5, 0xFFF3, 0xFFF1, 0xFFEF, 0xFFEC,\n    0xFFEA, 0xFFE7, 0xFFE5, 0xFFE2, 0xFFDF, 0xFFDD, 0xFFDA, 0xFFD8,\n    0xFFD5, 0xFFD2, 0xFFD0, 0xFFCE, 0xFFCB, 0xFFC9, 0xFFC7, 0xFFC5,\n    0xFFC3, 0xFFC2, 0xFFC0, 0xFFBF, 0xFFBE, 0xFFBD, 0xFFBC, 0xFFBC,\n    0xFFBC, 0xFFBC, 0xFFBC, 0xFFBD, 0xFFBE, 0xFFBF, 0xFFC1, 0xFFC2,\n    0xFFC4, 0xFFC6, 0xFFC8, 0xFFCA, 0xFFCD, 0xFFCF, 0xFFD2, 0xFFD4,\n    0xFFD7, 0xFFDA, 0xFFDD, 0xFFE0, 0xFFE3, 0xFFE6, 0xFFE8, 0xFFEB,\n    0xFFEE, 0xFFF1, 0xFFF3, 0xFFF6, 0xFFF8, 0xFFFB, 0xFFFD, 0xFFFF,\n    0x0000, 0x0001, 0x0003, 0x0005, 0x0006, 0x0008, 0x000A, 0x000B,\n    0x000D, 0x000F, 0x0010, 0x0012, 0x0013, 0x0014, 0x0016, 0x0017,\n    0x0018, 0x0019, 0x001A, 0x001A, 0x001B, 0x001C, 0x001C, 0x001C,\n    0x001C, 0x0018, 0x000E, 0x0004, 0x0000, 0x109A, 0x109B, 0x109F,\n    0x10A4, 0x10AC, 0x10B6, 0x10C2, 0x10CF, 0x10DE, 0x10EE, 0x1100,\n    0x1113, 0x1126, 0x113B, 0x1151, 0x1167, 0x117E, 0x1196, 0x11AD,\n    0x11C5, 0x11DD, 0x11F5, 0x120C, 0x1224, 0x123B, 0x1251, 0x1267,\n    0x127C, 0x128F, 0x12A2, 0x12B4, 0x12C4, 0x12D3, 0x12E0, 0x12EC,\n    0x12F6, 0x12FE, 0x1303, 0x1307, 0x1308, 0x1306, 0x1302, 0x12FA,\n    0x12F0, 0x12E3, 0x12D4, 0x12C3, 0x12AF, 0x129B, 0x1284, 0x126C,\n    0x1253, 0x123A, 0x121F, 0x1204, 0x11E8, 0x11CC, 0x11B1, 0x1195,\n    0x117A, 0x115F, 0x1146, 0x112D, 0x1115, 0x10FF, 0x10EA, 0x10D7,\n    0x10C6, 0x10B8, 0x10AB, 0x10A1, 0x109A, 0x1096, 0x1096, 0x109A,\n    0x10A0, 0x10A9, 0x10B5, 0x10C3, 0x10D3, 0x10E4, 0x10F7, 0x110A,\n    0x111E, 0x1132, 0x1147, 0x115A, 0x116D, 0x117F, 0x1190, 0x119F,\n    0x11AC, 0x11B6, 0x11BE, 0x11C3, 0x11C5, 0x1196, 0x1130, 0x10C9,\n    0x109A, 0xFFE7, 0xFFE7, 0xFFE5, 0xFFE1, 0xFFDD, 0xFFD8, 0xFFD2,\n    0xFFCB, 0xFFC3, 0xFFBB, 0xFFB2, 0xFFA9, 0xFFA0, 0xFF96, 0xFF8D,\n    0xFF84, 0xFF7B, 0xFF72, 0xFF6A, 0xFF62, 0xFF5B, 0xFF55, 0xFF50,\n    0xFF4B, 0xFF48, 0xFF45, 0xFF43, 0xFF41, 0xFF40, 0xFF3F, 0xFF3F,\n    0xFF3F, 0xFF3F, 0xFF3F, 0xFF40, 0xFF40, 0xFF41, 0xFF42, 0xFF43,\n    0xFF44, 0xFF44, 0xFF45, 0xFF45, 0xFF46, 0xFF45, 0xFF45, 0xFF44,\n    0xFF44, 0xFF43, 0xFF42, 0xFF41, 0xFF40, 0xFF3F, 0xFF3D, 0xFF3D,\n    0xFF3C, 0xFF3B, 0xFF3B, 0xFF3B, 0xFF3B, 0xFF3B, 0xFF3C, 0xFF3D,\n    0xFF3F, 0xFF41, 0xFF44, 0xFF47, 0xFF4B, 0xFF50, 0xFF55, 0xFF5B,\n    0xFF62, 0xFF6A, 0xFF72, 0xFF7A, 0xFF83, 0xFF8C, 0xFF96, 0xFF9F,\n    0xFFA9, 0xFFB3, 0xFFBD, 0xFFC6, 0xFFD0, 0xFFD9, 0xFFE2, 0xFFEA,\n    0xFFF2, 0xFFFA, 0x0000, 0x0006, 0x000B, 0x000D, 0x000B, 0x0005,\n    0xFFFF, 0xFFF6, 0xFFEF, 0xFFEA, 0xFFE7, 0xFF0A, 0xFF07, 0xFEFD,\n    0xFEED, 0xFED8, 0xFEBF, 0xFEA2, 0xFE82, 0xFE5F, 0xFE3B, 0xFE15,\n    0xFDEF, 0xFDC8, 0xFDA3, 0xFD7E, 0xFD5C, 0xFD3C, 0xFD20, 0xFD07,\n    0xFCF3, 0xFCE5, 0xFCDC, 0xFCDA, 0xFCDF, 0xFCEB, 0xFCFF, 0xFD1B,\n    0xFD3C, 0xFD63, 0xFD8F, 0xFDBF, 0xFDF3, 0xFE29, 0xFE62, 0xFE9C,\n    0xFED8, 0xFF13, 0xFF4E, 0xFF87, 0xFFBF, 0xFFF4, 0x0025, 0x0053,\n    0x007D, 0x00A5, 0x00CE, 0x00F9, 0x0124, 0x0150, 0x017C, 0x01A8,\n    0x01D4, 0x0200, 0x022A, 0x0254, 0x027C, 0x02A3, 0x02C8, 0x02EB,\n    0x030B, 0x0329, 0x0343, 0x035B, 0x036F, 0x037F, 0x038B, 0x0393,\n    0x0396, 0x0394, 0x038D, 0x0383, 0x0374, 0x0361, 0x034A, 0x0331,\n    0x0314, 0x02F5, 0x02D3, 0x02AF, 0x0289, 0x0262, 0x0239, 0x0210,\n    0x01E6, 0x01BB, 0x0190, 0x0166, 0x013C, 0x0113, 0x00EA, 0x00C3,\n    0x009E, 0x0071, 0x0036, 0xFFF4, 0xFFB0, 0xFF71, 0xFF3C, 0xFF17,\n    0xFF0A, 0xF261, 0xF265, 0xF271, 0xF284, 0xF29E, 0xF2BE, 0xF2E3,\n    0xF30D, 0xF33C, 0xF36E, 0xF3A3, 0xF3DB, 0xF415, 0xF450, 0xF48C,\n    0xF4C8, 0xF504, 0xF53F, 0xF578, 0xF5AF, 0xF5E3, 0xF614, 0xF642,\n    0xF66A, 0xF691, 0xF6BA, 0xF6E3, 0xF70E, 0xF739, 0xF764, 0xF790,\n    0xF7BB, 0xF7E6, 0xF80F, 0xF838, 0xF85F, 0xF885, 0xF8A9, 0xF8CA,\n    0xF8EA, 0xF906, 0xF91F, 0xF935, 0xF947, 0xF956, 0xF960, 0xF966,\n    0xF967, 0xF962, 0xF953, 0xF93E, 0xF921, 0xF8FE, 0xF8D6, 0xF8AA,\n    0xF87A, 0xF847, 0xF811, 0xF7DB, 0xF7A3, 0xF76C, 0xF736, 0xF702,\n    0xF6D0, 0xF6A2, 0xF677, 0xF652, 0xF632, 0xF617, 0xF5FE, 0xF5E8,\n    0xF5D3, 0xF5C1, 0xF5B0, 0xF5A0, 0xF591, 0xF583, 0xF576, 0xF569,\n    0xF55D, 0xF550, 0xF543, 0xF535, 0xF527, 0xF518, 0xF507, 0xF4F5,\n    0xF4E1, 0xF4CB, 0xF4B3, 0xF499, 0xF47C, 0xF44D, 0xF405, 0xF3AE,\n    0xF350, 0xF2F6, 0xF2AA, 0xF275, 0xF261, 0x03C4, 0x03C1, 0x03B9,\n    0x03AC, 0x039A, 0x0383, 0x0367, 0x0347, 0x0324, 0x02FC, 0x02D1,\n    0x02A2, 0x0270, 0x023B, 0x0204, 0x01C9, 0x018D, 0x014E, 0x010E,\n    0x00CC, 0x0089, 0x0044, 0xFFFF, 0xFFB9, 0xFF72, 0xFF2B, 0xFEE3,\n    0xFE9C, 0xFE55, 0xFE0E, 0xFDC9, 0xFD84, 0xFD41, 0xFCFF, 0xFCBE,\n    0xFC80, 0xFC43, 0xFC09, 0xFBD2, 0xFB9D, 0xFB6B, 0xFB3C, 0xFB11,\n    0xFAE9, 0xFAC5, 0xFAA6, 0xFA8A, 0xFA73, 0xFA61, 0xFA54, 0xFA4C,\n    0xFA49, 0xFA4C, 0xFA55, 0xFA64, 0xFA79, 0xFA92, 0xFAB1, 0xFAD5,\n    0xFAFD, 0xFB29, 0xFB59, 0xFB8D, 0xFBC4, 0xFBFE, 0xFC3C, 0xFC7C,\n    0xFCBE, 0xFD02, 0xFD49, 0xFD90, 0xFDDA, 0xFE24, 0xFE6F, 0xFEBA,\n    0xFF06, 0xFF52, 0xFF9E, 0xFFE9, 0x0032, 0x007B, 0x00C3, 0x0109,\n    0x014E, 0x0190, 0x01D0, 0x020D, 0x0248, 0x027F, 0x02B3, 0x02E3,\n    0x0310, 0x0338, 0x035B, 0x037A, 0x0394, 0x03A8, 0x03B8, 0x03C1,\n    0x03C4, 0x388D,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_17.inc.c",
    "content": "static const struct Animation anim_17[] = {\n    0,\n    189,\n    0,\n    0,\n    0x4C,\n    ANIMINDEX_NUMPARTS(anim_17_indices),\n    anim_17_values,\n    anim_17_indices,\n    0,\n};\n\n\nstatic const u16 anim_17_indices[] = {\n    0x0001, 0x0000, 0x004C, 0x0001, 0x0001, 0x004D, 0x0001, 0x0000, 0x0001, 0x004E, 0x0001, 0x0000,\n    0x004C, 0x0572, 0x0001, 0x0000, 0x0001, 0x05BE,\n    0x004C, 0x048E, 0x004C, 0x04DA, 0x004C, 0x0526,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x048D,\n    0x0001, 0x0489, 0x0001, 0x048A, 0x0001, 0x048B,\n    0x0001, 0x0053, 0x0001, 0x0054, 0x0001, 0x0055,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0052,\n    0x0001, 0x004F, 0x0001, 0x0050, 0x0001, 0x0051,\n    0x0001, 0x0485, 0x0001, 0x0486, 0x0001, 0x0487,\n    0x0001, 0x005A, 0x0001, 0x005B, 0x0001, 0x005C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0059,\n    0x0001, 0x0056, 0x0001, 0x0057, 0x0001, 0x0058,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0488,\n    0x004C, 0x03A1, 0x004C, 0x03ED, 0x004C, 0x0439,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x004C, 0x0355,\n    0x004C, 0x0271, 0x004C, 0x02BD, 0x004C, 0x0309,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x048C,\n    0x004C, 0x018D, 0x004C, 0x01D9, 0x004C, 0x0225,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x004C, 0x0141,\n    0x004C, 0x005D, 0x004C, 0x00A9, 0x004C, 0x00F5,\n};\n\nstatic const s16 anim_17_values[] = {\n    0x0000, 0x00BA, 0x00BF, 0x00BF, 0x00BF, 0x00BF, 0x00BE, 0x00BE,\n    0x00BD, 0x00BC, 0x00BA, 0x00B9, 0x00B7, 0x00B6, 0x00B4, 0x00B2,\n    0x00B0, 0x00AE, 0x00AC, 0x00AA, 0x00A8, 0x00A6, 0x00A4, 0x00A2,\n    0x00A0, 0x009E, 0x009C, 0x009A, 0x0099, 0x0097, 0x0095, 0x0092,\n    0x0090, 0x0091, 0x0094, 0x0098, 0x009C, 0x00A2, 0x00A7, 0x00AC,\n    0x00B0, 0x00B3, 0x00B6, 0x00B9, 0x00BC, 0x00BE, 0x00BF, 0x00C0,\n    0x00BF, 0x00BE, 0x00BD, 0x00BB, 0x00B9, 0x00B7, 0x00B4, 0x00B2,\n    0x00AF, 0x00AD, 0x00AA, 0x00A7, 0x00A5, 0x00A2, 0x009F, 0x009D,\n    0x009A, 0x0098, 0x0094, 0x0090, 0x008E, 0x0090, 0x0096, 0x009E,\n    0x00A5, 0x00AA, 0x00AC, 0x00AE, 0x00B0, 0xFFFF, 0x3FFF, 0xE7CE,\n    0xF984, 0xE96B, 0xF446, 0x0FB9, 0xF4A2, 0x94B9, 0x0ACF, 0x020D,\n    0xEDD2, 0xE463, 0xF6CC, 0x0FE6, 0x99E5, 0x008C, 0x008C, 0x008C,\n    0x008B, 0x008B, 0x008A, 0x0089, 0x0089, 0x0088, 0x0087, 0x0087,\n    0x0087, 0x0087, 0x0088, 0x0089, 0x008A, 0x008C, 0x0090, 0x0097,\n    0x00A0, 0x00AA, 0x00B3, 0x00BA, 0x00BE, 0x00BF, 0x00AF, 0x0091,\n    0x0078, 0x0074, 0x0096, 0x00D1, 0x010B, 0x012A, 0x0130, 0x012F,\n    0x0129, 0x0120, 0x0113, 0x0105, 0x00F7, 0x00EA, 0x00DE, 0x00D6,\n    0x00D2, 0x00D4, 0x00DC, 0x00ED, 0x0106, 0x012A, 0x015A, 0x0195,\n    0x01DA, 0x0228, 0x027D, 0x02D7, 0x0336, 0x0397, 0x03FA, 0x045D,\n    0x04BD, 0x051B, 0x0574, 0x05C7, 0x0612, 0x0654, 0x066C, 0x064D,\n    0x061A, 0x05F2, 0x05F6, 0x060E, 0x0601, 0x0596, 0x046B, 0x02BA,\n    0x0135, 0x016D, 0x016D, 0x016D, 0x016D, 0x016E, 0x016E, 0x016E,\n    0x016E, 0x016F, 0x016F, 0x016F, 0x016F, 0x016F, 0x016F, 0x016E,\n    0x016E, 0x016D, 0x016B, 0x0168, 0x0164, 0x0160, 0x015C, 0x0159,\n    0x0157, 0x0156, 0x015C, 0x0167, 0x0170, 0x016D, 0x0156, 0x0132,\n    0x010F, 0x00FD, 0x00F7, 0x00F1, 0x00EA, 0x00E4, 0x00DE, 0x00D9,\n    0x00D5, 0x00D1, 0x00CF, 0x00CF, 0x00D1, 0x00D4, 0x00DA, 0x00E3,\n    0x00EE, 0x00FD, 0x010D, 0x011E, 0x012F, 0x0142, 0x0157, 0x016D,\n    0x0186, 0x01A1, 0x01BF, 0x01E0, 0x0205, 0x022E, 0x025B, 0x028C,\n    0x02C3, 0x02FE, 0x037E, 0x0452, 0x0533, 0x05DC, 0x0659, 0x06C5,\n    0x06EF, 0x06AA, 0x0588, 0x03C4, 0x0224, 0xBB94, 0xBB90, 0xBB87,\n    0xBB79, 0xBB67, 0xBB54, 0xBB40, 0xBB2D, 0xBB1D, 0xBB10, 0xBB08,\n    0xBB07, 0xBB0E, 0xBB1E, 0xBB39, 0xBB60, 0xBB94, 0xBC05, 0xBCCA,\n    0xBDC3, 0xBECF, 0xBFCD, 0xC09C, 0xC11A, 0xC128, 0xBF6E, 0xBC15,\n    0xB940, 0xB911, 0xBD78, 0xC4DD, 0xCC15, 0xCFF4, 0xD0F9, 0xD1C2,\n    0xD254, 0xD2B5, 0xD2EA, 0xD2F9, 0xD2E7, 0xD2B9, 0xD275, 0xD220,\n    0xD1C0, 0xD15A, 0xD0F4, 0xD092, 0xD03B, 0xCFF4, 0xCFBB, 0xCF8A,\n    0xCF5C, 0xCF2E, 0xCEFD, 0xCEC6, 0xCE84, 0xCE36, 0xCDD6, 0xCD62,\n    0xCCD7, 0xCC31, 0xCB6C, 0xCA85, 0xC97A, 0xC845, 0xC542, 0xC005,\n    0xBA62, 0xB62C, 0xB3A5, 0xB1E6, 0xB10B, 0xB130, 0xB331, 0xB6B8,\n    0xBA15, 0x42F5, 0x439B, 0x43FC, 0x4423, 0x441A, 0x43EA, 0x439D,\n    0x433D, 0x42D5, 0x426E, 0x4211, 0x41C9, 0x41A0, 0x419F, 0x41D1,\n    0x4240, 0x42F5, 0x4458, 0x469D, 0x497E, 0x4CB6, 0x4FFE, 0x5311,\n    0x55AA, 0x5781, 0x5903, 0x5AA0, 0x5C19, 0x5D32, 0x5DAC, 0x5D49,\n    0x5BCB, 0x58F5, 0x54E8, 0x5008, 0x4A77, 0x4458, 0x3DCE, 0x36FC,\n    0x3006, 0x290D, 0x2234, 0x1BA0, 0x1573, 0x0FCF, 0x0AD8, 0x06B0,\n    0x037C, 0x015C, 0x0044, 0x0000, 0x007C, 0x01A5, 0x0366, 0x05AC,\n    0x0863, 0x0B76, 0x0ED3, 0x1265, 0x1619, 0x19DA, 0x1D94, 0x2135,\n    0x24A7, 0x27D8, 0x2C9A, 0x3358, 0x39E4, 0x3E11, 0x4002, 0x415F,\n    0x4243, 0x42C5, 0x42FF, 0x430A, 0x42FE, 0x21AD, 0x2244, 0x22D2,\n    0x2357, 0x23D0, 0x243D, 0x249B, 0x24E9, 0x2525, 0x254E, 0x2563,\n    0x2560, 0x2546, 0x2513, 0x24C4, 0x2458, 0x23CF, 0x22DE, 0x2157,\n    0x1F5B, 0x1D0D, 0x1A8F, 0x1803, 0x158B, 0x1349, 0x1107, 0x0E8D,\n    0x0BFB, 0x0971, 0x070F, 0x04F7, 0x0347, 0x0221, 0x0159, 0x00AF,\n    0x0020, 0xFFAB, 0xFF4C, 0xFF04, 0xFECE, 0xFEAB, 0xFE97, 0xFE91,\n    0xFE98, 0xFEA8, 0xFEC0, 0xFEDF, 0xFF02, 0xFF28, 0xFF57, 0xFF96,\n    0xFFE4, 0x003F, 0x00A8, 0x011B, 0x0199, 0x021F, 0x02AC, 0x033F,\n    0x03D7, 0x0473, 0x0510, 0x05AE, 0x064B, 0x06E7, 0x077F, 0x083D,\n    0x0963, 0x0B34, 0x0DE0, 0x1139, 0x14ED, 0x18AB, 0x1C22, 0x1F00,\n    0x20F4, 0x0EEC, 0x0E18, 0x0D43, 0x0C6E, 0x0B9B, 0x0ACD, 0x0A05,\n    0x0946, 0x0891, 0x07E9, 0x0750, 0x06C8, 0x0652, 0x05F1, 0x05A7,\n    0x0576, 0x0560, 0x059C, 0x064E, 0x075B, 0x08A7, 0x0A18, 0x0B90,\n    0x0CF6, 0x0E2E, 0x0F66, 0x10CC, 0x1244, 0x13B2, 0x14FA, 0x1602,\n    0x16AC, 0x16DE, 0x16B0, 0x1651, 0x15C8, 0x151C, 0x1455, 0x1378,\n    0x128E, 0x119C, 0x10AB, 0x0FC0, 0x0EE4, 0x0E1C, 0x0D70, 0x0CE7,\n    0x0C88, 0x0C59, 0x0C59, 0x0C7C, 0x0CC1, 0x0D21, 0x0D99, 0x0E25,\n    0x0EC1, 0x0F69, 0x1018, 0x10CB, 0x117D, 0x122A, 0x12CF, 0x1367,\n    0x13EE, 0x145F, 0x14AB, 0x14C3, 0x14A4, 0x144D, 0x13B9, 0x12F3,\n    0x1211, 0x1128, 0x104E, 0x0F98, 0x0F1A, 0xCF59, 0xD152, 0xD31A,\n    0xD4B1, 0xD617, 0xD74C, 0xD850, 0xD922, 0xD9C4, 0xDA35, 0xDA74,\n    0xDA82, 0xDA60, 0xDA0B, 0xD986, 0xD8CF, 0xD7E7, 0xD632, 0xD340,\n    0xCF5B, 0xCAC8, 0xC5D0, 0xC0B9, 0xBBCA, 0xB74B, 0xB2CB, 0xADD6,\n    0xA8AE, 0xA396, 0x9ECD, 0x9A98, 0x9737, 0x94EC, 0x9363, 0x9215,\n    0x9100, 0x9020, 0x8F6F, 0x8EE9, 0x8E8B, 0x8E50, 0x8E34, 0x8E32,\n    0x8E46, 0x8E6D, 0x8EA1, 0x8EDF, 0x8F23, 0x8F67, 0x8FB8, 0x9026,\n    0x90AD, 0x914C, 0x9201, 0x92CA, 0x93A6, 0x9491, 0x958B, 0x9692,\n    0x97A3, 0x98BD, 0x99DE, 0x9B03, 0x9C2C, 0x9D56, 0x9EAA, 0xA07E,\n    0xA313, 0xA6A9, 0xAB99, 0xB1B5, 0xB86B, 0xBF2C, 0xC568, 0xCA8E,\n    0xCE0E, 0xFED4, 0xFED0, 0xFEC5, 0xFEB6, 0xFEA3, 0xFE8F, 0xFE7A,\n    0xFE66, 0xFE54, 0xFE46, 0xFE3D, 0xFE3B, 0xFE42, 0xFE52, 0xFE6C,\n    0xFE94, 0xFEC9, 0xFF19, 0xFF8A, 0x0015, 0x00B5, 0x0163, 0x0218,\n    0x02CE, 0x037D, 0x041F, 0x04AF, 0x0524, 0x0579, 0x0551, 0x0497,\n    0x03AA, 0x02EF, 0x029A, 0x0266, 0x0221, 0x01D8, 0x018D, 0x0140,\n    0x00F2, 0x00A5, 0x0059, 0x0010, 0xFFCB, 0xFF8A, 0xFF4E, 0xFF1A,\n    0xFEED, 0xFEC9, 0xFEAE, 0xFE99, 0xFE8B, 0xFE82, 0xFE7F, 0xFE7F,\n    0xFE82, 0xFE88, 0xFE90, 0xFE9A, 0xFEA3, 0xFEAD, 0xFEB6, 0xFEBD,\n    0xFEC2, 0xFEC3, 0xFEC3, 0xFEC4, 0xFEC6, 0xFEC7, 0xFEC9, 0xFECB,\n    0xFECD, 0xFECF, 0xFED1, 0xFED2, 0xFED3, 0xFFA2, 0xFFA5, 0xFFA9,\n    0xFFAF, 0xFFB5, 0xFFBB, 0xFFC2, 0xFFC8, 0xFFCE, 0xFFD3, 0xFFD8,\n    0xFFDB, 0xFFDD, 0xFFDD, 0xFFDB, 0xFFD7, 0xFFD0, 0xFFC6, 0xFFB7,\n    0xFFA4, 0xFF8E, 0xFF76, 0xFF5C, 0xFF41, 0xFF25, 0xFF0A, 0xFEEF,\n    0xFED7, 0xFEC0, 0xFEA9, 0xFE91, 0xFE80, 0xFE7B, 0xFEA1, 0xFED0,\n    0xFEE5, 0xFEFB, 0xFF12, 0xFF28, 0xFF3E, 0xFF54, 0xFF68, 0xFF7C,\n    0xFF8F, 0xFFA0, 0xFFAF, 0xFFBC, 0xFFC7, 0xFFD0, 0xFFD6, 0xFFD9,\n    0xFFDA, 0xFFD9, 0xFFD6, 0xFFD1, 0xFFCC, 0xFFC6, 0xFFC0, 0xFFBB,\n    0xFFB5, 0xFFB1, 0xFFAD, 0xFFAC, 0xFFAC, 0xFFAF, 0xFFC3, 0xFFE9,\n    0x000E, 0x001E, 0x0018, 0x0009, 0xFFF6, 0xFFDF, 0xFFC9, 0xFFB5,\n    0xFFA7, 0xB30A, 0xB35B, 0xB3B1, 0xB40B, 0xB469, 0xB4CA, 0xB52D,\n    0xB593, 0xB5FA, 0xB662, 0xB6CA, 0xB733, 0xB79A, 0xB801, 0xB865,\n    0xB8C7, 0xB926, 0xB996, 0xBA25, 0xBAC7, 0xBB73, 0xBC1E, 0xBCBE,\n    0xBD48, 0xBDB1, 0xBDF0, 0xBDFA, 0xBDC4, 0xBD44, 0xBB32, 0xB72D,\n    0xB28C, 0xAEA1, 0xABA7, 0xAA90, 0xAB51, 0xAC40, 0xAD53, 0xAE81,\n    0xAFC4, 0xB112, 0xB263, 0xB3AE, 0xB4EB, 0xB612, 0xB71A, 0xB7FB,\n    0xB8AD, 0xB926, 0xB963, 0xB96A, 0xB942, 0xB8F4, 0xB887, 0xB805,\n    0xB775, 0xB6DF, 0xB64C, 0xB5C4, 0xB54E, 0xB4F3, 0xB4BB, 0xB4AE,\n    0xB4D4, 0xB536, 0xB7BD, 0xBC9E, 0xC152, 0xC355, 0xC27E, 0xC095,\n    0xBDF7, 0xBB01, 0xB811, 0xB585, 0xB3B9, 0x378C, 0x358E, 0x3335,\n    0x3092, 0x2DB9, 0x2AB9, 0x27A5, 0x248E, 0x2187, 0x1EA0, 0x1BEC,\n    0x197B, 0x1761, 0x15AE, 0x1474, 0x13C5, 0x13B2, 0x1446, 0x1574,\n    0x172C, 0x195B, 0x1BF1, 0x1EDD, 0x220D, 0x2571, 0x28F6, 0x2C8D,\n    0x3023, 0x33A7, 0x3709, 0x3A37, 0x3D20, 0x3FB2, 0x3F92, 0x3E91,\n    0x3F41, 0x4006, 0x40DC, 0x41C0, 0x42AD, 0x439F, 0x4491, 0x4580,\n    0x4667, 0x4742, 0x480D, 0x48C3, 0x4961, 0x49E2, 0x4A56, 0x4AD1,\n    0x4B4F, 0x4BCF, 0x4C4F, 0x4CCB, 0x4D43, 0x4DB3, 0x4E19, 0x4E74,\n    0x4EC1, 0x4EFD, 0x4F27, 0x4F3D, 0x4F3B, 0x4F20, 0x4EEA, 0x4E96,\n    0x4E22, 0x4D8C, 0x4C1A, 0x4960, 0x45D2, 0x41E5, 0x3E0C, 0x3ABD,\n    0x386C, 0xF80C, 0xF9F1, 0xFB58, 0xFC50, 0xFCE6, 0xFD29, 0xFD29,\n    0xFCF2, 0xFC95, 0xFC1F, 0xFBA0, 0xFB25, 0xFABD, 0xFA5A, 0xF9E7,\n    0xF965, 0xF8D5, 0xF838, 0xF790, 0xF6DE, 0xF625, 0xF564, 0xF49D,\n    0xF3D2, 0xF305, 0xF236, 0xF167, 0xF099, 0xEFCE, 0xEF07, 0xEE46,\n    0xED8C, 0xECD9, 0xEC20, 0xEBD1, 0xEBF5, 0xEC14, 0xEC2F, 0xEC49,\n    0xEC65, 0xEC86, 0xECAD, 0xECDE, 0xED1B, 0xED66, 0xEDC2, 0xEE31,\n    0xEEB7, 0xEF55, 0xF010, 0xF0E6, 0xF1D5, 0xF2D8, 0xF3ED, 0xF50F,\n    0xF63B, 0xF76E, 0xF8A3, 0xF9D7, 0xFB06, 0xFC2D, 0xFD49, 0xFE55,\n    0xFF4E, 0x002F, 0x00F7, 0x01A1, 0x022A, 0x028D, 0x0257, 0x0143,\n    0xFF98, 0xFD9D, 0xFB97, 0xF9CE, 0xF888, 0xEA98, 0xEB9B, 0xECB9,\n    0xEDEA, 0xEF26, 0xF065, 0xF19D, 0xF2C7, 0xF3DA, 0xF4CE, 0xF59B,\n    0xF637, 0xF69C, 0xF6D6, 0xF6F9, 0xF707, 0xF703, 0xF6EE, 0xF6CA,\n    0xF69A, 0xF660, 0xF61D, 0xF5D3, 0xF585, 0xF535, 0xF4E4, 0xF495,\n    0xF44A, 0xF404, 0xF3C7, 0xF393, 0xF36A, 0xF350, 0xF3FB, 0xF4FF,\n    0xF5A8, 0xF665, 0xF72F, 0xF802, 0xF8D7, 0xF9A9, 0xFA73, 0xFB2E,\n    0xFBD5, 0xFC63, 0xFCD1, 0xFD1B, 0xFD3A, 0xFD29, 0xFCF0, 0xFC9E,\n    0xFC35, 0xFBB6, 0xFB24, 0xFA81, 0xF9D0, 0xF911, 0xF848, 0xF776,\n    0xF69E, 0xF5C2, 0xF4E4, 0xF406, 0xF32A, 0xF252, 0xF181, 0xF0B9,\n    0xEFFB, 0xEF4A, 0xEE94, 0xEDCF, 0xED06, 0xEC47, 0xEB9D, 0xEB14,\n    0xEAB9, 0x8EE1, 0x8C22, 0x89FE, 0x8866, 0x874C, 0x86A2, 0x8659,\n    0x8663, 0x86B2, 0x8738, 0x87E6, 0x88AE, 0x8982, 0x8A67, 0x8B6D,\n    0x8C90, 0x8DD0, 0x8F29, 0x9099, 0x921E, 0x93B7, 0x955F, 0x9717,\n    0x98DB, 0x9AA8, 0x9C7E, 0x9E59, 0xA038, 0xA217, 0xA3F6, 0xA5D2,\n    0xA7A8, 0xA977, 0xACDE, 0xB0DE, 0xB412, 0xB7A5, 0xBB7D, 0xBF7E,\n    0xC38E, 0xC791, 0xCB6C, 0xCF04, 0xD23D, 0xD4FD, 0xD728, 0xD8A4,\n    0xD954, 0xD91E, 0xD828, 0xD6AF, 0xD4BF, 0xD265, 0xCFAC, 0xCC9F,\n    0xC94B, 0xC5BA, 0xC1FA, 0xBE14, 0xBA15, 0xB609, 0xB1FC, 0xADF8,\n    0xAA0A, 0xA63D, 0xA29D, 0x9F36, 0x9C14, 0x9941, 0x96C7, 0x94A6,\n    0x92DD, 0x916A, 0x904C, 0x8F82, 0x8F09, 0x8001, 0x8001, 0x4171,\n    0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x109A, 0xFFE7, 0xFFDE,\n    0xFFD4, 0xFFCA, 0xFFBF, 0xFFB4, 0xFFA8, 0xFF9D, 0xFF92, 0xFF87,\n    0xFF7D, 0xFF72, 0xFF69, 0xFF60, 0xFF58, 0xFF51, 0xFF4B, 0xFF47,\n    0xFF43, 0xFF40, 0xFF3D, 0xFF3C, 0xFF3A, 0xFF3A, 0xFF3A, 0xFF3A,\n    0xFF3A, 0xFF3B, 0xFF3B, 0xFF3C, 0xFF3D, 0xFF3D, 0xFF3D, 0xFF3D,\n    0xFF3C, 0xFF3C, 0xFF3B, 0xFF3A, 0xFF39, 0xFF38, 0xFF38, 0xFF38,\n    0xFF39, 0xFF3A, 0xFF3B, 0xFF3E, 0xFF41, 0xFF46, 0xFF4B, 0xFF52,\n    0xFF59, 0xFF62, 0xFF6C, 0xFF76, 0xFF81, 0xFF8D, 0xFF99, 0xFFA5,\n    0xFFB1, 0xFFBE, 0xFFCA, 0xFFD5, 0xFFE1, 0xFFEC, 0xFFF6, 0xFFFF,\n    0x0007, 0x000E, 0x0014, 0x0017, 0x0014, 0x000C, 0x0003, 0xFFFA,\n    0xFFF1, 0xFFEA, 0xFF0A, 0xFEB6, 0xFE58, 0xFDF2, 0xFD86, 0xFD17,\n    0xFCA6, 0xFC37, 0xFBCA, 0xFB64, 0xFB05, 0xFAB0, 0xFA67, 0xFA2D,\n    0xFA04, 0xF9EF, 0xF9EE, 0xFA05, 0xFA31, 0xFA70, 0xFAC0, 0xFB1F,\n    0xFB8A, 0xFBFF, 0xFC7C, 0xFCFE, 0xFD84, 0xFE0B, 0xFE91, 0xFF14,\n    0xFF91, 0x0005, 0x0070, 0x00DA, 0x014C, 0x01C5, 0x0243, 0x02C3,\n    0x0344, 0x03C2, 0x043D, 0x04B2, 0x051E, 0x0581, 0x05D8, 0x0620,\n    0x0658, 0x067D, 0x068E, 0x068D, 0x067F, 0x0664, 0x063D, 0x060D,\n    0x05D3, 0x0591, 0x0549, 0x04FA, 0x04A6, 0x044F, 0x03F5, 0x039A,\n    0x033E, 0x02E3, 0x0289, 0x0232, 0x01DF, 0x0191, 0x0149, 0x00FB,\n    0x00A1, 0x0042, 0xFFE5, 0xFF90, 0xFF4A, 0xFF1B, 0xF261, 0xF2A0,\n    0xF2DE, 0xF31B, 0xF358, 0xF394, 0xF3D1, 0xF40E, 0xF44C, 0xF48A,\n    0xF4CA, 0xF50B, 0xF54D, 0xF591, 0xF5D7, 0xF620, 0xF66A, 0xF6BD,\n    0xF71B, 0xF783, 0xF7F2, 0xF865, 0xF8DA, 0xF94F, 0xF9C2, 0xFA30,\n    0xFA97, 0xFAF4, 0xFB45, 0xFB88, 0xFBBA, 0xFBD9, 0xFBE3, 0xFBD2,\n    0xFBA7, 0xFB65, 0xFB0F, 0xFAA9, 0xFA37, 0xF9BC, 0xF93C, 0xF8BB,\n    0xF83B, 0xF7C1, 0xF750, 0xF6ED, 0xF699, 0xF65A, 0xF632, 0xF620,\n    0xF61C, 0xF624, 0xF639, 0xF656, 0xF67C, 0xF6A8, 0xF6D9, 0xF70C,\n    0xF741, 0xF775, 0xF7A7, 0xF7D6, 0xF7FF, 0xF821, 0xF83A, 0xF849,\n    0xF84C, 0xF840, 0xF826, 0xF7CC, 0xF718, 0xF62A, 0xF521, 0xF41C,\n    0xF33B, 0xF29D, 0x03C4, 0x03BF, 0x03AF, 0x0395, 0x0371, 0x0345,\n    0x0311, 0x02D5, 0x0292, 0x0249, 0x01FB, 0x01A7, 0x014F, 0x00F3,\n    0x0095, 0x0033, 0xFFD1, 0xFF6D, 0xFF07, 0xFEA2, 0xFE3E, 0xFDDB,\n    0xFD79, 0xFD1A, 0xFCBF, 0xFC67, 0xFC13, 0xFBC4, 0xFB7B, 0xFB39,\n    0xFAFD, 0xFAC8, 0xFA9C, 0xFA79, 0xFA5E, 0xFA4E, 0xFA49, 0xFA4D,\n    0xFA5A, 0xFA70, 0xFA8D, 0xFAB1, 0xFADC, 0xFB0E, 0xFB45, 0xFB82,\n    0xFBC4, 0xFC0A, 0xFC55, 0xFCA3, 0xFCF5, 0xFD49, 0xFD9F, 0xFDF7,\n    0xFE51, 0xFEAB, 0xFF06, 0xFF61, 0xFFBC, 0x0014, 0x006D, 0x00C3,\n    0x0117, 0x0169, 0x01B7, 0x0201, 0x0248, 0x028A, 0x02C7, 0x02FE,\n    0x0330, 0x035B, 0x0380, 0x039D, 0x03B2, 0x03BF, 0x388D,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_18.inc.c",
    "content": "static const struct Animation anim_18[] = {\n    0,\n    189,\n    42,\n    0,\n    0x64,\n    ANIMINDEX_NUMPARTS(anim_18_indices),\n    anim_18_values,\n    anim_18_indices,\n    0,\n};\n\n\nstatic const u16 anim_18_indices[] = {\n    0x0001, 0x0000, 0x0064, 0x0001, 0x0001, 0x0065, 0x0001, 0x0000, 0x0001, 0x0066, 0x0001, 0x0000,\n    0x0064, 0x084D, 0x0001, 0x0000, 0x0001, 0x08B1,\n    0x0064, 0x0721, 0x0064, 0x0785, 0x0064, 0x07E9,\n    0x0064, 0x05F5, 0x0064, 0x0659, 0x0064, 0x06BD,\n    0x0001, 0x05F1, 0x0001, 0x05F2, 0x0001, 0x05F3,\n    0x0001, 0x006B, 0x0001, 0x006C, 0x0001, 0x006D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x006A,\n    0x0001, 0x0067, 0x0001, 0x0068, 0x0001, 0x0069,\n    0x0001, 0x05ED, 0x0001, 0x05EE, 0x0001, 0x05EF,\n    0x0001, 0x0072, 0x0001, 0x0073, 0x0001, 0x0074,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0071,\n    0x0001, 0x006E, 0x0001, 0x006F, 0x0001, 0x0070,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x05F0,\n    0x0064, 0x04C1, 0x0064, 0x0525, 0x0064, 0x0589,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0064, 0x045D,\n    0x0064, 0x0331, 0x0064, 0x0395, 0x0064, 0x03F9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x05F4,\n    0x0064, 0x0205, 0x0064, 0x0269, 0x0064, 0x02CD,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0064, 0x01A1,\n    0x0064, 0x0075, 0x0064, 0x00D9, 0x0064, 0x013D,\n};\n\nstatic const s16 anim_18_values[] = {\n    0x0000, 0x00B3, 0x00B3, 0x00B3, 0x00B3, 0x00B3, 0x00B3, 0x00B3,\n    0x00B3, 0x00B3, 0x00B3, 0x00B3, 0x00B3, 0x00B3, 0x00B3, 0x00B3,\n    0x00B3, 0x00B3, 0x00B3, 0x00B4, 0x00B4, 0x00B5, 0x00B5, 0x00B6,\n    0x00B6, 0x00B7, 0x00B8, 0x00B8, 0x00B9, 0x00B9, 0x00BA, 0x00BA,\n    0x00BB, 0x00BB, 0x00BC, 0x00BC, 0x00BC, 0x00BC, 0x00BD, 0x00BD,\n    0x00BD, 0x00BD, 0x00BC, 0x00BC, 0x00BC, 0x00BB, 0x00BB, 0x00BA,\n    0x00B9, 0x00B9, 0x00B8, 0x00B7, 0x00B6, 0x00B5, 0x00B5, 0x00B4,\n    0x00B3, 0x00B2, 0x00B2, 0x00B1, 0x00B0, 0x00B0, 0x00B0, 0x00AF,\n    0x00AF, 0x00AF, 0x00AF, 0x00B0, 0x00B0, 0x00B0, 0x00B0, 0x00B1,\n    0x00B1, 0x00B2, 0x00B2, 0x00B3, 0x00B3, 0x00B4, 0x00B4, 0x00B5,\n    0x00B5, 0x00B6, 0x00B6, 0x00B7, 0x00B7, 0x00B8, 0x00B8, 0x00B9,\n    0x00B9, 0x00BA, 0x00BA, 0x00BA, 0x00BA, 0x00BA, 0x00BA, 0x00B9,\n    0x00B8, 0x00B7, 0x00B6, 0x00B5, 0x00B4, 0xFFFF, 0x3FFF, 0xE7CE,\n    0xF984, 0xE96B, 0xF446, 0x0FB9, 0xF4A2, 0x94B9, 0x0ACF, 0x020D,\n    0xEDD2, 0xE463, 0xF6CC, 0x0FE6, 0x99E5, 0x04E8, 0x0500, 0x053C,\n    0x0591, 0x05EF, 0x0648, 0x0690, 0x06B8, 0x06B3, 0x066F, 0x05F4,\n    0x0555, 0x04A5, 0x03F9, 0x0364, 0x02FA, 0x02C6, 0x02BD, 0x02CF,\n    0x02EF, 0x030E, 0x0379, 0x03AF, 0x0347, 0x02BB, 0x021E, 0x0181,\n    0x00F6, 0x008E, 0x0061, 0x0065, 0x007F, 0x0093, 0x009E, 0x00AB,\n    0x00BA, 0x00C9, 0x00D8, 0x00E5, 0x00EF, 0x00F5, 0x00F8, 0x00FA,\n    0x00FB, 0x00FC, 0x00FC, 0x00FB, 0x00FA, 0x00F9, 0x00F7, 0x00F6,\n    0x00F4, 0x00F2, 0x00F1, 0x00F0, 0x00EF, 0x00EE, 0x00EE, 0x00EF,\n    0x00F0, 0x00F2, 0x00F5, 0x00F9, 0x00FE, 0x0102, 0x0104, 0x0104,\n    0x0103, 0x0101, 0x00FF, 0x00FC, 0x00FB, 0x00FB, 0x00FD, 0x0101,\n    0x0108, 0x0113, 0x0121, 0x0134, 0x014B, 0x0169, 0x018C, 0x01B6,\n    0x01E7, 0x022B, 0x028B, 0x0302, 0x038A, 0x041C, 0x04B5, 0x054E,\n    0x05E2, 0x066C, 0x06E5, 0x0748, 0x0790, 0x075B, 0x069C, 0x05CF,\n    0x0570, 0x0193, 0x0198, 0x01A5, 0x01B8, 0x01CF, 0x01E7, 0x01FE,\n    0x0211, 0x021E, 0x0226, 0x022B, 0x022E, 0x022D, 0x022B, 0x0225,\n    0x021D, 0x020F, 0x01F9, 0x01DF, 0x01C5, 0x01AF, 0x01A2, 0x019B,\n    0x0192, 0x018A, 0x0181, 0x017A, 0x0173, 0x016D, 0x016A, 0x016B,\n    0x016B, 0x0169, 0x0163, 0x015B, 0x0152, 0x014A, 0x0141, 0x013A,\n    0x0134, 0x0131, 0x012F, 0x012D, 0x012B, 0x012A, 0x0129, 0x0128,\n    0x0127, 0x0127, 0x0126, 0x0126, 0x0125, 0x0125, 0x0125, 0x0125,\n    0x0126, 0x0126, 0x0126, 0x0127, 0x0127, 0x0128, 0x0128, 0x0129,\n    0x0129, 0x0128, 0x0126, 0x0122, 0x011D, 0x0118, 0x0111, 0x010B,\n    0x0105, 0x00FF, 0x00FA, 0x00F7, 0x00F5, 0x00F5, 0x00F7, 0x00FC,\n    0x0104, 0x010F, 0x011D, 0x0130, 0x0146, 0x016A, 0x01A1, 0x01E7,\n    0x0238, 0x028F, 0x02E9, 0x0341, 0x0392, 0x03D9, 0x0412, 0x0438,\n    0x0448, 0x03D7, 0x02DB, 0x01DF, 0x016D, 0xBAEF, 0xBAE0, 0xBAB7,\n    0xBA7B, 0xBA32, 0xB9E5, 0xB998, 0xB954, 0xB91F, 0xB907, 0xB90A,\n    0xB918, 0xB91F, 0xB90F, 0xB8D7, 0xB866, 0xB787, 0xB63A, 0xB4BE,\n    0xB352, 0xB235, 0xB1B7, 0xB242, 0xB3A8, 0xB558, 0xB72A, 0xB8F4,\n    0xBA8E, 0xBBCF, 0xBC4C, 0xBC26, 0xBC01, 0xBC81, 0xBDC0, 0xBF57,\n    0xC120, 0xC2F9, 0xC4BF, 0xC64D, 0xC781, 0xC836, 0xC898, 0xC8E8,\n    0xC928, 0xC959, 0xC97C, 0xC994, 0xC9A2, 0xC9A6, 0xC9A3, 0xC999,\n    0xC98B, 0xC97A, 0xC966, 0xC952, 0xC93F, 0xC92E, 0xC921, 0xC918,\n    0xC917, 0xC91E, 0xC92D, 0xC948, 0xC96F, 0xC9A8, 0xC9F5, 0xCA54,\n    0xCAC1, 0xCB39, 0xCBBA, 0xCC41, 0xCCCB, 0xCD54, 0xCDDA, 0xCE5A,\n    0xCED1, 0xCF3C, 0xCF97, 0xCFE1, 0xD016, 0xD034, 0xD036, 0xD01B,\n    0xCFDF, 0xCF66, 0xCE9D, 0xCD91, 0xCC4C, 0xCADA, 0xC949, 0xC7A2,\n    0xC5F3, 0xC447, 0xC2AA, 0xC127, 0xBFCB, 0xBE6C, 0xBD0D, 0xBC00,\n    0xBB94, 0x1B89, 0x1B48, 0x1A9C, 0x19A8, 0x1890, 0x1778, 0x1684,\n    0x15D7, 0x1594, 0x159E, 0x15BD, 0x15F1, 0x163B, 0x169A, 0x170D,\n    0x1796, 0x1832, 0x18E4, 0x19A9, 0x1A82, 0x1B6F, 0x1C6A, 0x1D6F,\n    0x1E80, 0x1FA3, 0x20DA, 0x2228, 0x2393, 0x251C, 0x26C8, 0x289A,\n    0x2A95, 0x2CBE, 0x2FC3, 0x33F8, 0x38D4, 0x3DD1, 0x4267, 0x4610,\n    0x4844, 0x487B, 0x475B, 0x45E6, 0x4426, 0x4220, 0x3FDD, 0x3D64,\n    0x3ABC, 0x37ED, 0x34FE, 0x31F7, 0x2EDF, 0x2BBD, 0x289A, 0x257C,\n    0x226B, 0x1F6F, 0x1C8F, 0x19D1, 0x173F, 0x14DF, 0x12B8, 0x10D3,\n    0x0F36, 0x0E0C, 0x0D6B, 0x0D40, 0x0D77, 0x0DFC, 0x0EBC, 0x0FA2,\n    0x109C, 0x1194, 0x1279, 0x1335, 0x13B5, 0x13E5, 0x139B, 0x12DC,\n    0x11DB, 0x10CD, 0x0FE5, 0x0F58, 0x0F58, 0x0FCA, 0x1069, 0x112E,\n    0x1213, 0x130F, 0x141C, 0x1531, 0x1649, 0x175B, 0x1860, 0x1951,\n    0x1A26, 0x1AD9, 0x1B62, 0x1BB9, 0x1BD8, 0x0C7C, 0x0C7D, 0x0C7F,\n    0x0C82, 0x0C85, 0x0C88, 0x0C8B, 0x0C8D, 0x0C8D, 0x0C8C, 0x0C88,\n    0x0C82, 0x0C78, 0x0C6A, 0x0C59, 0x0C42, 0x0C27, 0x0C06, 0x0BDF,\n    0x0BB2, 0x0B7E, 0x0B3D, 0x0AED, 0x0A8D, 0x0A20, 0x09A7, 0x0923,\n    0x0896, 0x0802, 0x0768, 0x06CA, 0x0628, 0x0585, 0x04BC, 0x03B9,\n    0x0297, 0x0170, 0x005F, 0xFF7F, 0xFEE9, 0xFEB9, 0xFECB, 0xFEEC,\n    0xFF1A, 0xFF53, 0xFF98, 0xFFE7, 0x003D, 0x009C, 0x0101, 0x016C,\n    0x01DC, 0x024E, 0x02C3, 0x0339, 0x03AE, 0x0423, 0x0495, 0x0504,\n    0x056E, 0x05D3, 0x0631, 0x0688, 0x06D5, 0x071D, 0x0761, 0x07A3,\n    0x07E3, 0x0820, 0x085C, 0x0895, 0x08CC, 0x0901, 0x0935, 0x0966,\n    0x0997, 0x09C6, 0x09F3, 0x0A20, 0x0A4B, 0x0A75, 0x0A9F, 0x0AC8,\n    0x0AF0, 0x0B17, 0x0B3D, 0x0B62, 0x0B86, 0x0BA7, 0x0BC7, 0x0BE5,\n    0x0C00, 0x0C19, 0x0C2F, 0x0C42, 0x0C53, 0x0C60, 0x0C69, 0x0C6F,\n    0x0C71, 0x0543, 0x0541, 0x053D, 0x0537, 0x052F, 0x0525, 0x051A,\n    0x050E, 0x0501, 0x04F4, 0x04E6, 0x04D9, 0x04CC, 0x04C0, 0x04B6,\n    0x04AC, 0x04A5, 0x049F, 0x049C, 0x049C, 0x049F, 0x04A3, 0x04A8,\n    0x04B0, 0x04BA, 0x04C7, 0x04D9, 0x04F0, 0x050C, 0x052F, 0x055A,\n    0x058D, 0x05C8, 0x0625, 0x06AE, 0x0752, 0x07FF, 0x08A3, 0x092C,\n    0x0988, 0x09A5, 0x0996, 0x097E, 0x095C, 0x0932, 0x0900, 0x08C8,\n    0x088A, 0x0848, 0x0802, 0x07B9, 0x076E, 0x0723, 0x06D7, 0x068D,\n    0x0645, 0x05FF, 0x05BD, 0x0581, 0x0549, 0x0519, 0x04F0, 0x04D0,\n    0x04B9, 0x04AC, 0x04A9, 0x04AF, 0x04BD, 0x04D1, 0x04EB, 0x050A,\n    0x052D, 0x0553, 0x057B, 0x05A4, 0x05CD, 0x05F5, 0x061C, 0x0640,\n    0x0660, 0x067C, 0x0692, 0x06A2, 0x06AA, 0x06AA, 0x06A2, 0x0693,\n    0x067E, 0x0664, 0x0647, 0x0628, 0x0607, 0x05E5, 0x05C5, 0x05A6,\n    0x058B, 0x0574, 0x0562, 0x0556, 0x0552, 0xC1B2, 0xC1DA, 0xC24C,\n    0xC300, 0xC3EF, 0xC511, 0xC65E, 0xC7CF, 0xC95B, 0xCAFB, 0xCCA6,\n    0xCE57, 0xD003, 0xD1A5, 0xD333, 0xD4A7, 0xD5F8, 0xD71E, 0xD813,\n    0xD8CD, 0xD946, 0xD97D, 0xD977, 0xD934, 0xD8B4, 0xD7F8, 0xD701,\n    0xD5CE, 0xD460, 0xD2B8, 0xD0D6, 0xCEBA, 0xCC64, 0xC916, 0xC468,\n    0xBEDD, 0xB8FB, 0xB346, 0xAE42, 0xAA74, 0xA860, 0xA76C, 0xA6A7,\n    0xA60D, 0xA59B, 0xA54E, 0xA523, 0xA519, 0xA52A, 0xA556, 0xA599,\n    0xA5F0, 0xA658, 0xA6CE, 0xA74F, 0xA7DA, 0xA86A, 0xA8FD, 0xA98F,\n    0xAA1F, 0xAAA9, 0xAB2B, 0xABA1, 0xAC08, 0xAC6E, 0xACE1, 0xAD60,\n    0xADEA, 0xAE7D, 0xAF18, 0xAFBA, 0xB062, 0xB10F, 0xB1BF, 0xB272,\n    0xB326, 0xB3DA, 0xB48C, 0xB53D, 0xB5E9, 0xB691, 0xB734, 0xB7CF,\n    0xB861, 0xB8F4, 0xB98F, 0xBA30, 0xBAD3, 0xBB77, 0xBC1A, 0xBCB9,\n    0xBD51, 0xBDE0, 0xBE64, 0xBEDA, 0xBF40, 0xBF94, 0xBFD2, 0xBFFA,\n    0xC007, 0xFCBE, 0xFCD8, 0xFD1F, 0xFD8D, 0xFE1A, 0xFEC0, 0xFF77,\n    0x0037, 0x00FA, 0x01B9, 0x026C, 0x030C, 0x0391, 0x0400, 0x0462,\n    0x04B9, 0x0506, 0x054B, 0x0589, 0x05C4, 0x05FB, 0x0639, 0x0682,\n    0x06D1, 0x0723, 0x0772, 0x07BA, 0x07F6, 0x0822, 0x083A, 0x0838,\n    0x0819, 0x07D7, 0x0746, 0x0652, 0x0519, 0x03BD, 0x025D, 0x0118,\n    0x000E, 0xFF61, 0xFEED, 0xFE7D, 0xFE10, 0xFDA8, 0xFD45, 0xFCE5,\n    0xFC8A, 0xFC34, 0xFBE2, 0xFB95, 0xFB4D, 0xFB0A, 0xFACB, 0xFA92,\n    0xFA5E, 0xFA30, 0xFA07, 0xF9E3, 0xF9C5, 0xF9AD, 0xF99A, 0xF98E,\n    0xF987, 0xF98B, 0xF99E, 0xF9BE, 0xF9EA, 0xFA21, 0xFA61, 0xFAA9,\n    0xFAF8, 0xFB4C, 0xFBA4, 0xFBFE, 0xFC5A, 0xFCB6, 0xFD10, 0xFD67,\n    0xFDBB, 0xFE08, 0xFE4F, 0xFE8E, 0xFEC3, 0xFEEC, 0xFF06, 0xFF13,\n    0xFF15, 0xFF0D, 0xFEFD, 0xFEE5, 0xFEC7, 0xFE98, 0xFE51, 0xFDFC,\n    0xFDA2, 0xFD4C, 0xFD04, 0xFCD1, 0xFCBE, 0xFFDA, 0xFFDD, 0xFFE7,\n    0xFFF5, 0x0006, 0x001B, 0x0032, 0x0049, 0x005F, 0x0073, 0x0085,\n    0x0092, 0x009A, 0x009C, 0x0099, 0x0092, 0x0087, 0x0078, 0x0066,\n    0x0051, 0x003A, 0x0021, 0x0007, 0xFFEC, 0xFFCF, 0xFFB0, 0xFF91,\n    0xFF6F, 0xFF4D, 0xFF29, 0xFF03, 0xFEDC, 0xFEB4, 0xFE81, 0xFE40,\n    0xFDF7, 0xFDAD, 0xFD69, 0xFD32, 0xFD0E, 0xFD04, 0xFD0C, 0xFD17,\n    0xFD27, 0xFD3A, 0xFD50, 0xFD69, 0xFD84, 0xFDA2, 0xFDC1, 0xFDE1,\n    0xFE02, 0xFE24, 0xFE46, 0xFE69, 0xFE8A, 0xFEAB, 0xFECB, 0xFEE9,\n    0xFF06, 0xFF20, 0xFF38, 0xFF4D, 0xFF5E, 0xFF6D, 0xFF79, 0xFF83,\n    0xFF8B, 0xFF91, 0xFF96, 0xFF99, 0xFF9B, 0xFF9C, 0xFF9D, 0xFF9D,\n    0xFF9D, 0xFF9D, 0xFF9D, 0xFF9E, 0xFF9F, 0xFFA1, 0xFFA4, 0xFFA9,\n    0xFFAF, 0xFFB8, 0xFFC7, 0xFFD8, 0xFFEB, 0xFFFD, 0x000C, 0x0018,\n    0x001E, 0x001D, 0x0016, 0x000B, 0xFFFF, 0xFFF1, 0xFFE5, 0xFFDD,\n    0xFFDA, 0xBA5F, 0xBAB7, 0xBBAD, 0xBD26, 0xBF05, 0xC12F, 0xC387,\n    0xC5F4, 0xC857, 0xCA97, 0xCC97, 0xCE3B, 0xCF68, 0xD005, 0xD01E,\n    0xCFD1, 0xCF3D, 0xCE81, 0xCDBA, 0xCD06, 0xCC85, 0xCC22, 0xCBB8,\n    0xCB4A, 0xCADA, 0xCA69, 0xC9FA, 0xC98F, 0xC92B, 0xC8D0, 0xC87F,\n    0xC83C, 0xC808, 0xC804, 0xC83D, 0xC89B, 0xC904, 0xC95E, 0xC992,\n    0xC984, 0xC91D, 0xC877, 0xC7BE, 0xC6F4, 0xC61C, 0xC536, 0xC446,\n    0xC34D, 0xC24C, 0xC147, 0xC03E, 0xBF34, 0xBE2B, 0xBD24, 0xBC22,\n    0xBB26, 0xBA33, 0xB94A, 0xB86D, 0xB79F, 0xB6E1, 0xB635, 0xB59C,\n    0xB51A, 0xB4A9, 0xB444, 0xB3E9, 0xB39B, 0xB357, 0xB320, 0xB2F5,\n    0xB2D5, 0xB2C2, 0xB2BB, 0xB2C0, 0xB2D2, 0xB2F1, 0xB31C, 0xB355,\n    0xB39A, 0xB3ED, 0xB44D, 0xB4BB, 0xB536, 0xB62C, 0xB7DE, 0xBA0C,\n    0xBC75, 0xBED8, 0xC0F4, 0xC288, 0xC355, 0xC331, 0xC24B, 0xC0E0,\n    0xBF2C, 0xBD6F, 0xBBE4, 0xBACB, 0xBA5F, 0x3258, 0x31CB, 0x303F,\n    0x2DE2, 0x2AE0, 0x2764, 0x239B, 0x1FB2, 0x1BD3, 0x182D, 0x14EA,\n    0x1238, 0x1041, 0x0F3A, 0x0F10, 0x0F8A, 0x106E, 0x1182, 0x128B,\n    0x1351, 0x1399, 0x137A, 0x1336, 0x12D2, 0x1252, 0x11BB, 0x1111,\n    0x1059, 0x0F97, 0x0EB5, 0x0DA2, 0x0C6C, 0x0B21, 0x09CD, 0x0880,\n    0x0747, 0x0630, 0x0548, 0x049D, 0x043D, 0x0436, 0x0465, 0x049F,\n    0x04E4, 0x0535, 0x0591, 0x05F9, 0x066D, 0x06EE, 0x077C, 0x0818,\n    0x08C1, 0x0978, 0x0A3E, 0x0B12, 0x0BF5, 0x0CE8, 0x0DEA, 0x0EFC,\n    0x101F, 0x1152, 0x1296, 0x13EC, 0x1553, 0x16D7, 0x187F, 0x1A4A,\n    0x1C33, 0x1E37, 0x2054, 0x2286, 0x24CA, 0x271C, 0x297A, 0x2BE0,\n    0x2E4B, 0x30B8, 0x3324, 0x358C, 0x37EC, 0x3A41, 0x3C87, 0x3EBD,\n    0x40DF, 0x42E8, 0x44D7, 0x46A8, 0x4858, 0x49E4, 0x4B48, 0x4C81,\n    0x4D8C, 0x4D55, 0x4B2E, 0x47B4, 0x4380, 0x3F2D, 0x3B57, 0x3899,\n    0x378C, 0x008E, 0x0065, 0xFFF2, 0xFF40, 0xFE5B, 0xFD4E, 0xFC24,\n    0xFAEA, 0xF9AA, 0xF871, 0xF74A, 0xF640, 0xF55F, 0xF49F, 0xF3F0,\n    0xF351, 0xF2BF, 0xF239, 0xF1BD, 0xF14A, 0xF0DE, 0xF072, 0xF002,\n    0xEF8F, 0xEF1A, 0xEEA3, 0xEE2D, 0xEDB7, 0xED43, 0xECD2, 0xEC65,\n    0xEBFD, 0xEB9B, 0xEB40, 0xEAED, 0xEAA3, 0xEA62, 0xEA2D, 0xEA05,\n    0xE9E9, 0xE9DB, 0xE9DA, 0xE9E3, 0xE9F7, 0xEA13, 0xEA38, 0xEA65,\n    0xEA99, 0xEAD4, 0xEB15, 0xEB5C, 0xEBA7, 0xEBF7, 0xEC4A, 0xECA1,\n    0xECF9, 0xED54, 0xEDB0, 0xEE0C, 0xEE68, 0xEEC4, 0xEF1E, 0xEF77,\n    0xEFCD, 0xF024, 0xF082, 0xF0E5, 0xF14C, 0xF1B8, 0xF227, 0xF299,\n    0xF30D, 0xF383, 0xF3FB, 0xF472, 0xF4EA, 0xF560, 0xF5D6, 0xF649,\n    0xF6BA, 0xF727, 0xF790, 0xF7F6, 0xF85B, 0xF8C0, 0xF926, 0xF990,\n    0xF9FE, 0xFA71, 0xFAEB, 0xFB6E, 0xFBFB, 0xFCAE, 0xFD95, 0xFE99,\n    0xFFA1, 0x0096, 0x0162, 0x01EE, 0x0222, 0xF963, 0xF979, 0xF9B5,\n    0xFA12, 0xFA87, 0xFB0F, 0xFBA1, 0xFC38, 0xFCCB, 0xFD54, 0xFDCC,\n    0xFE2C, 0xFE6E, 0xFE81, 0xFE66, 0xFE2A, 0xFDDD, 0xFD8C, 0xFD47,\n    0xFD1B, 0xFD17, 0xFD31, 0xFD55, 0xFD81, 0xFDB5, 0xFDEE, 0xFE2C,\n    0xFE6E, 0xFEB1, 0xFEF5, 0xFF39, 0xFF7C, 0xFFBB, 0xFFF7, 0x002B,\n    0x005B, 0x0082, 0x00A0, 0x00B3, 0x00BB, 0x00B6, 0x00A7, 0x0090,\n    0x0072, 0x004E, 0x0024, 0xFFF6, 0xFFC1, 0xFF88, 0xFF4A, 0xFF09,\n    0xFEC4, 0xFE7C, 0xFE32, 0xFDE5, 0xFD97, 0xFD47, 0xFCF6, 0xFCA5,\n    0xFC53, 0xFC02, 0xFBB1, 0xFB62, 0xFB14, 0xFAC5, 0xFA72, 0xFA1B,\n    0xF9C2, 0xF965, 0xF906, 0xF8A4, 0xF840, 0xF7DB, 0xF774, 0xF70B,\n    0xF6A2, 0xF639, 0xF5CF, 0xF565, 0xF4FB, 0xF484, 0xF3F5, 0xF356,\n    0xF2AF, 0xF205, 0xF161, 0xF0C9, 0xF046, 0xEFDE, 0xEF98, 0xEF7C,\n    0xEF90, 0xF019, 0xF133, 0xF2AB, 0xF450, 0xF5EF, 0xF756, 0xF852,\n    0xF8B1, 0xAF3B, 0xAF31, 0xAF16, 0xAEEF, 0xAEC2, 0xAE92, 0xAE64,\n    0xAE3E, 0xAE24, 0xAE1B, 0xAE28, 0xAE4F, 0xAE96, 0xAF11, 0xAFCA,\n    0xB0B3, 0xB1BD, 0xB2DA, 0xB3FD, 0xB517, 0xB61B, 0xB712, 0xB80F,\n    0xB911, 0xBA17, 0xBB20, 0xBC2A, 0xBD35, 0xBE40, 0xBF4A, 0xC052,\n    0xC156, 0xC256, 0xC351, 0xC446, 0xC533, 0xC618, 0xC6F4, 0xC7C5,\n    0xC88B, 0xC945, 0xC9FA, 0xCAB1, 0xCB68, 0xCC20, 0xCCD7, 0xCD8C,\n    0xCE3D, 0xCEEB, 0xCF92, 0xD034, 0xD0CE, 0xD15F, 0xD1E7, 0xD264,\n    0xD2D5, 0xD33A, 0xD391, 0xD3D8, 0xD410, 0xD437, 0xD44B, 0xD44D,\n    0xD43A, 0xD40A, 0xD3B8, 0xD344, 0xD2B1, 0xD201, 0xD135, 0xD04F,\n    0xCF50, 0xCE3B, 0xCD11, 0xCBD5, 0xCA87, 0xC92A, 0xC7BF, 0xC649,\n    0xC4C8, 0xC30E, 0xC0F5, 0xBE93, 0xBBFD, 0xB947, 0xB687, 0xB3D0,\n    0xB139, 0xAED5, 0xACB9, 0xAAFB, 0xA9AF, 0xA925, 0xA976, 0xAA65,\n    0xABB3, 0xAD23, 0xAE77, 0xAF70, 0xAFD1, 0x8001, 0x8001, 0x4171,\n    0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x0000, 0x0000, 0xFFFD,\n    0xFFF9, 0xFFF4, 0xFFED, 0xFFE5, 0xFFDB, 0xFFD1, 0xFFC6, 0xFFB9,\n    0xFFAC, 0xFF9F, 0xFF90, 0xFF81, 0xFF72, 0xFF62, 0xFF53, 0xFF43,\n    0xFF32, 0xFF22, 0xFF12, 0xFF03, 0xFEF3, 0xFEE4, 0xFED6, 0xFEC8,\n    0xFEBB, 0xFEAE, 0xFEA3, 0xFE97, 0xFE8B, 0xFE7D, 0xFE70, 0xFE62,\n    0xFE53, 0xFE46, 0xFE38, 0xFE2B, 0xFE1F, 0xFE14, 0xFE0A, 0xFE02,\n    0xFDFC, 0xFDF7, 0xFDF5, 0xFDF5, 0xFDF7, 0xFDFB, 0xFE01, 0xFE07,\n    0xFE0F, 0xFE17, 0xFE20, 0xFE2A, 0xFE34, 0xFE3F, 0xFE4B, 0xFE57,\n    0xFE64, 0xFE71, 0xFE7F, 0xFE8C, 0xFE9A, 0xFEA8, 0xFEB7, 0xFEC5,\n    0xFED3, 0xFEE1, 0xFEF0, 0xFEFD, 0xFF0B, 0xFF19, 0xFF26, 0xFF32,\n    0xFF3E, 0xFF4A, 0xFF55, 0xFF5F, 0xFF69, 0xFF74, 0xFF7E, 0xFF89,\n    0xFF93, 0xFF9E, 0xFFA8, 0xFFB2, 0xFFBC, 0xFFC6, 0xFFCF, 0xFFD7,\n    0xFFDF, 0xFFE6, 0xFFED, 0xFFF3, 0xFFF7, 0xFFFB, 0xFFFE, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0002,\n    0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0009, 0x000A, 0x000B,\n    0x000C, 0x000E, 0x000F, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014,\n    0x0015, 0x0016, 0x0017, 0x0017, 0x0018, 0x0018, 0x0018, 0x0018,\n    0x0017, 0x0016, 0x0015, 0x0014, 0x0012, 0x0011, 0x000F, 0x000D,\n    0x000B, 0x0009, 0x0007, 0x0005, 0x0004, 0x0002, 0x0001, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n    0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0003, 0x0003,\n    0x0003, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x109A, 0x109D, 0x10A4,\n    0x10B0, 0x10C0, 0x10D4, 0x10EB, 0x1105, 0x1122, 0x1141, 0x1162,\n    0x1185, 0x11A9, 0x11CE, 0x11F4, 0x121A, 0x123F, 0x1264, 0x1288,\n    0x12AB, 0x12CC, 0x12EC, 0x1309, 0x1323, 0x133A, 0x134E, 0x135E,\n    0x136A, 0x1371, 0x1374, 0x136E, 0x135D, 0x1342, 0x131E, 0x12F4,\n    0x12C3, 0x128E, 0x1256, 0x121C, 0x11E2, 0x11A8, 0x1171, 0x113D,\n    0x110D, 0x10E4, 0x10C2, 0x10A9, 0x109A, 0x1092, 0x108C, 0x1089,\n    0x1089, 0x108A, 0x108E, 0x1094, 0x109B, 0x10A4, 0x10AE, 0x10B9,\n    0x10C6, 0x10D3, 0x10E1, 0x10EF, 0x10FE, 0x110E, 0x111D, 0x112C,\n    0x113B, 0x1149, 0x1157, 0x1164, 0x1171, 0x117C, 0x1186, 0x118E,\n    0x1195, 0x119A, 0x119D, 0x119E, 0x119C, 0x1198, 0x1190, 0x1185,\n    0x1179, 0x116B, 0x115B, 0x114A, 0x1138, 0x1125, 0x1113, 0x1100,\n    0x10EE, 0x10DD, 0x10CE, 0x10BF, 0x10B3, 0x10A8, 0x10A1, 0x109C,\n    0x109A, 0xFCBB, 0xFCC1, 0xFCD4, 0xFCF2, 0xFD19, 0xFD4A, 0xFD82,\n    0xFDC1, 0xFE06, 0xFE4F, 0xFE9C, 0xFEEB, 0xFF3B, 0xFF8C, 0xFFDB,\n    0x0028, 0x0072, 0x00B8, 0x00F9, 0x0134, 0x0167, 0x0196, 0x01C7,\n    0x01F9, 0x022B, 0x025E, 0x0292, 0x02C5, 0x02F9, 0x032C, 0x035F,\n    0x0390, 0x03C1, 0x03F0, 0x041E, 0x044A, 0x0475, 0x049C, 0x04C2,\n    0x04E5, 0x0505, 0x0522, 0x053B, 0x0551, 0x0563, 0x0572, 0x057B,\n    0x0581, 0x0581, 0x057B, 0x056D, 0x0558, 0x053B, 0x0518, 0x04EF,\n    0x04C1, 0x048F, 0x0459, 0x041F, 0x03E2, 0x03A4, 0x0363, 0x0322,\n    0x02E0, 0x029F, 0x025E, 0x021E, 0x01E1, 0x01A6, 0x016E, 0x013A,\n    0x010A, 0x00DC, 0x00AB, 0x0078, 0x0044, 0x000E, 0xFFD9, 0xFFA1,\n    0xFF6A, 0xFF32, 0xFEFA, 0xFEC3, 0xFE8C, 0xFE56, 0xFE22, 0xFDF0,\n    0xFDBF, 0xFD90, 0xFD64, 0xFD3B, 0xFD15, 0xFCF2, 0xFCD3, 0xFCB8,\n    0xFCA2, 0xFC8F, 0xFC82, 0xFC7A, 0xFC77, 0xFE99, 0xFE9B, 0xFEA2,\n    0xFEAD, 0xFEBD, 0xFECF, 0xFEE5, 0xFEFD, 0xFF17, 0xFF33, 0xFF51,\n    0xFF6F, 0xFF8E, 0xFFAD, 0xFFCC, 0xFFEA, 0x0006, 0x0022, 0x003C,\n    0x0053, 0x0068, 0x007B, 0x008F, 0x00A4, 0x00B9, 0x00CF, 0x00E5,\n    0x00FB, 0x0111, 0x0127, 0x013D, 0x0152, 0x0167, 0x017C, 0x0190,\n    0x01A4, 0x01B6, 0x01C8, 0x01D8, 0x01E8, 0x01F6, 0x0203, 0x020E,\n    0x0218, 0x0220, 0x0227, 0x022B, 0x022E, 0x022F, 0x022C, 0x0226,\n    0x021D, 0x0211, 0x0202, 0x01F0, 0x01DD, 0x01C7, 0x01B0, 0x0197,\n    0x017D, 0x0162, 0x0147, 0x012B, 0x010F, 0x00F3, 0x00D7, 0x00BD,\n    0x00A3, 0x008A, 0x0073, 0x005D, 0x004A, 0x0037, 0x0023, 0x000F,\n    0xFFFB, 0xFFE5, 0xFFD0, 0xFFBA, 0xFFA4, 0xFF8E, 0xFF78, 0xFF62,\n    0xFF4D, 0xFF38, 0xFF24, 0xFF10, 0xFEFD, 0xFEEB, 0xFEDA, 0xFECA,\n    0xFEBC, 0xFEAE, 0xFEA2, 0xFE98, 0xFE8F, 0xFE88, 0xFE83, 0xFE80,\n    0xFE7F, 0xF2AE, 0xF2B3, 0xF2C1, 0xF2D6, 0xF2F3, 0xF316, 0xF33D,\n    0xF369, 0xF397, 0xF3C8, 0xF3F9, 0xF42B, 0xF45C, 0xF48B, 0xF4B7,\n    0xF4DF, 0xF502, 0xF51F, 0xF536, 0xF545, 0xF54B, 0xF54A, 0xF544,\n    0xF53A, 0xF52C, 0xF51B, 0xF507, 0xF4F0, 0xF4D6, 0xF4BB, 0xF49D,\n    0xF47E, 0xF45F, 0xF43E, 0xF41D, 0xF3FC, 0xF3DB, 0xF3BB, 0xF39C,\n    0xF37E, 0xF362, 0xF348, 0xF331, 0xF31C, 0xF30A, 0xF2FB, 0xF2F0,\n    0xF2EA, 0xF2E8, 0xF2EB, 0xF2F5, 0xF305, 0xF31A, 0xF334, 0xF352,\n    0xF373, 0xF397, 0xF3BD, 0xF3E5, 0xF40D, 0xF436, 0xF45E, 0xF485,\n    0xF4AB, 0xF4CE, 0xF4EE, 0xF50B, 0xF524, 0xF537, 0xF545, 0xF54E,\n    0xF54F, 0xF54A, 0xF541, 0xF533, 0xF521, 0xF50B, 0xF4F1, 0xF4D5,\n    0xF4B7, 0xF496, 0xF473, 0xF44F, 0xF429, 0xF403, 0xF3DD, 0xF3B7,\n    0xF391, 0xF36C, 0xF349, 0xF326, 0xF306, 0xF2E9, 0xF2CE, 0xF2B6,\n    0xF2A1, 0xF291, 0xF284, 0xF27D, 0xF27A, 0x039B, 0x0398, 0x038F,\n    0x0380, 0x036C, 0x0353, 0x0334, 0x0311, 0x02EA, 0x02BE, 0x028F,\n    0x025C, 0x0225, 0x01EC, 0x01AF, 0x0170, 0x012F, 0x00EB, 0x00A6,\n    0x005F, 0x0017, 0xFFCF, 0xFF85, 0xFF3B, 0xFEF0, 0xFEA5, 0xFE5B,\n    0xFE11, 0xFDC8, 0xFD80, 0xFD39, 0xFCF4, 0xFCB1, 0xFC70, 0xFC31,\n    0xFBF4, 0xFBBB, 0xFB85, 0xFB52, 0xFB23, 0xFAF7, 0xFAD0, 0xFAAD,\n    0xFA8F, 0xFA76, 0xFA62, 0xFA54, 0xFA4B, 0xFA49, 0xFA4C, 0xFA54,\n    0xFA62, 0xFA75, 0xFA8C, 0xFAA8, 0xFAC8, 0xFAEC, 0xFB13, 0xFB3F,\n    0xFB6E, 0xFBA0, 0xFBD5, 0xFC0C, 0xFC46, 0xFC83, 0xFCC1, 0xFD02,\n    0xFD44, 0xFD87, 0xFDCC, 0xFE11, 0xFE58, 0xFE9F, 0xFEE6, 0xFF2D,\n    0xFF74, 0xFFBB, 0x0001, 0x0046, 0x008B, 0x00CE, 0x0110, 0x0150,\n    0x018E, 0x01CB, 0x0205, 0x023C, 0x0271, 0x02A3, 0x02D1, 0x02FC,\n    0x0324, 0x0348, 0x0367, 0x0383, 0x039A, 0x03AC, 0x03B9, 0x03C1,\n    0x03C4, 0x388D,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_19.inc.c",
    "content": "static const struct Animation anim_19[] = {\n    1,\n    189,\n    0,\n    0,\n    0x56,\n    ANIMINDEX_NUMPARTS(anim_19_indices),\n    anim_19_values,\n    anim_19_indices,\n    0,\n};\n\n\nstatic const u16 anim_19_indices[] = {\n    0x0001, 0x0000, 0x0056, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0057, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0A74,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0056, 0x0A1E,\n    0x0056, 0x091C, 0x0056, 0x0972, 0x0056, 0x09C8,\n    0x0001, 0x0918, 0x0001, 0x0919, 0x0001, 0x091A,\n    0x0056, 0x01B0, 0x0056, 0x0206, 0x0056, 0x025C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0056, 0x015A,\n    0x0056, 0x0058, 0x0056, 0x00AE, 0x0056, 0x0104,\n    0x0001, 0x0914, 0x0001, 0x0915, 0x0001, 0x0916,\n    0x0056, 0x040A, 0x0056, 0x0460, 0x0056, 0x04B6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0056, 0x03B4,\n    0x0056, 0x02B2, 0x0056, 0x0308, 0x0056, 0x035E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0917,\n    0x0056, 0x0812, 0x0056, 0x0868, 0x0056, 0x08BE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0056, 0x07BC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0056, 0x0766,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x091B,\n    0x0056, 0x0664, 0x0056, 0x06BA, 0x0056, 0x0710,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0056, 0x060E,\n    0x0056, 0x050C, 0x0056, 0x0562, 0x0056, 0x05B8,\n};\n\nstatic const s16 anim_19_values[] = {\n    0x0000, 0x00AA, 0x00AA, 0x00A9, 0x00A9, 0x00A8, 0x00A8, 0x00A7,\n    0x00A7, 0x00A6, 0x00A6, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x00AA,\n    0x00AA, 0x00AA, 0x00A9, 0x00A8, 0x00A7, 0x00A7, 0x00A8, 0x00A8,\n    0x00A9, 0x00AA, 0x00AB, 0x00AB, 0x00A9, 0x00A4, 0x0097, 0x0088,\n    0x007B, 0x006D, 0x0061, 0x0057, 0x0054, 0x0052, 0x0050, 0x004F,\n    0x004E, 0x004E, 0x004E, 0x004F, 0x004F, 0x0050, 0x0051, 0x0051,\n    0x0052, 0x0053, 0x0054, 0x0055, 0x0055, 0x0056, 0x0057, 0x0058,\n    0x0058, 0x0058, 0x0058, 0x0058, 0x0057, 0x0057, 0x0057, 0x0057,\n    0x0057, 0x0058, 0x0059, 0x005B, 0x005C, 0x005E, 0x0060, 0x0061,\n    0x0063, 0x0063, 0x0064, 0x0064, 0x0064, 0x0065, 0x0065, 0x0065,\n    0x0064, 0x0064, 0x0064, 0x0064, 0x0064, 0x0064, 0x0064, 0x3FFF,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x003A, 0x00C7, 0x0175, 0x0213, 0x026E,\n    0x0255, 0x0196, 0x0000, 0xFDA3, 0xFAC1, 0xF773, 0xF3D1, 0xEFF5,\n    0xEBF6, 0xE7EC, 0xE3F1, 0xE01D, 0xDC88, 0xD94A, 0xD67C, 0xD42E,\n    0xD254, 0xD0DD, 0xCFB7, 0xCED0, 0xCE18, 0xCD7D, 0xCCED, 0xCC4E,\n    0xCBA2, 0xCAFE, 0xCA7B, 0xCA2E, 0xCA30, 0xCA96, 0xCB78, 0xCCED,\n    0xCF20, 0xD20F, 0xD58F, 0xD974, 0xDD92, 0xE1BE, 0xE5CA, 0xE98C,\n    0xECD7, 0xEFD1, 0xF2B5, 0xF57A, 0xF814, 0xFA79, 0xFC9E, 0xFE7A,\n    0x0000, 0x00EF, 0x0132, 0x0102, 0x0099, 0x002F, 0xF97C, 0xF97C,\n    0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C,\n    0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C,\n    0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C,\n    0xF97C, 0xF98D, 0xF9B8, 0xF9ED, 0xFA1C, 0xFA38, 0xFA30, 0xF9F7,\n    0xF97C, 0xF8C2, 0xF7DC, 0xF6D3, 0xF5AF, 0xF47A, 0xF33B, 0xF1FC,\n    0xF0C6, 0xEFA1, 0xEE96, 0xEDAE, 0xECF2, 0xEC73, 0xEC32, 0xEC23,\n    0xEC35, 0xEC5C, 0xEC89, 0xECAC, 0xECB9, 0xECAA, 0xEC89, 0xEC60,\n    0xEC37, 0xEC19, 0xEC0D, 0xEC1E, 0xEC54, 0xECB9, 0xED59, 0xEE32,\n    0xEF35, 0xF054, 0xF182, 0xF2B0, 0xF3D0, 0xF4D3, 0xF5AD, 0xF663,\n    0xF704, 0xF793, 0xF810, 0xF87E, 0xF8DE, 0xF932, 0xF97C, 0xF9AB,\n    0xF9B9, 0xF9AF, 0xF99A, 0xF985, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8E,\n    0xED95, 0xED9D, 0xEDA5, 0xEDA9, 0xEDA8, 0xED9F, 0xED8C, 0xED71,\n    0xED52, 0xED31, 0xED0C, 0xECE5, 0xECBB, 0xEC8F, 0xEC60, 0xEC2F,\n    0xEBFC, 0xEBC8, 0xEB91, 0xEB51, 0xEB03, 0xEAAD, 0xEA53, 0xE9FC,\n    0xE9AD, 0xE96C, 0xE93D, 0xE925, 0xE91F, 0xE926, 0xE934, 0xE946,\n    0xE954, 0xE95B, 0xE955, 0xE93D, 0xE906, 0xE8AE, 0xE841, 0xE7CD,\n    0xE75D, 0xE6FF, 0xE6BF, 0xE6A9, 0xE6CB, 0xE739, 0xE7F4, 0xE8E4,\n    0xE9F2, 0xEB08, 0xEC0D, 0xECEB, 0xED8C, 0xEDE0, 0xEDF8, 0xEDE7,\n    0xEDC2, 0xED9C, 0xCA4F, 0xCA57, 0xCA69, 0xCA81, 0xCA9A, 0xCAAC,\n    0xCAB4, 0xCAAA, 0xCA8B, 0xCA4F, 0xC9E5, 0xC949, 0xC88B, 0xC7BD,\n    0xC6EE, 0xC631, 0xC594, 0xC52A, 0xC503, 0xC534, 0xC5B7, 0xC675,\n    0xC755, 0xC83F, 0xC91C, 0xC9D4, 0xCA4F, 0xCA84, 0xCA84, 0xCA62,\n    0xCA31, 0xCA04, 0xC9EE, 0xCA01, 0xCA4F, 0xCAD3, 0xCB75, 0xCC2F,\n    0xCCFC, 0xCDD6, 0xCEB7, 0xCF99, 0xD076, 0xD148, 0xD20A, 0xD2B6,\n    0xD346, 0xD3B1, 0xD3F9, 0xD424, 0xD43A, 0xD442, 0xD442, 0xD444,\n    0xD44D, 0xD45B, 0xD468, 0xD471, 0xD477, 0xD478, 0xD476, 0xD46E,\n    0xD461, 0xD44D, 0xD43C, 0xD431, 0xD428, 0xD41A, 0xD400, 0xD3D5,\n    0xD393, 0xD334, 0xD2B1, 0xD1FC, 0xD112, 0xD002, 0xCED9, 0xCDA4,\n    0xCC73, 0xCB52, 0xCA4F, 0xC94D, 0xC837, 0xC72A, 0xC646, 0xC5A7,\n    0xFB1D, 0xFC80, 0x0043, 0x05D0, 0x0C8D, 0x13E2, 0x1B38, 0x21F5,\n    0x2782, 0x2B46, 0x2D63, 0x2E82, 0x2ED7, 0x2E93, 0x2DEA, 0x2D0E,\n    0x2C32, 0x2B89, 0x2B46, 0x2B46, 0x2B46, 0x2B46, 0x2B46, 0x2B46,\n    0x2B46, 0x2B46, 0x2B46, 0x2B73, 0x2BE0, 0x2C67, 0x2CE1, 0x2D28,\n    0x2D15, 0x2C81, 0x2B46, 0x28F0, 0x2576, 0x214E, 0x1CEF, 0x18CF,\n    0x1566, 0x132A, 0x11D0, 0x10BA, 0x0FE0, 0x0F3A, 0x0EC0, 0x0E6A,\n    0x0E30, 0x0E0A, 0x0DF1, 0x0DDC, 0x0DC4, 0x0DA1, 0x0D6A, 0x0D31,\n    0x0D0C, 0x0CF7, 0x0CF1, 0x0CF7, 0x0D09, 0x0D23, 0x0D44, 0x0D6A,\n    0x0D75, 0x0D58, 0x0D2B, 0x0D06, 0x0D03, 0x0D3A, 0x0DC3, 0x0EB8,\n    0x102F, 0x127A, 0x15A6, 0x196C, 0x1D81, 0x219D, 0x2578, 0x28C9,\n    0x2B46, 0x2CBB, 0x2D51, 0x2D4F, 0x2CF7, 0x2C91, 0xD2DC, 0xD3A9,\n    0xD5D4, 0xD906, 0xDCE8, 0xE121, 0xE55A, 0xE93C, 0xEC6E, 0xEE99,\n    0xEFD1, 0xF076, 0xF0A7, 0xF080, 0xF01F, 0xEFA0, 0xEF21, 0xEEC0,\n    0xEE99, 0xEE99, 0xEE99, 0xEE99, 0xEE99, 0xEE99, 0xEE99, 0xEE99,\n    0xEE99, 0xEE9A, 0xEE9D, 0xEEA0, 0xEEA4, 0xEEA5, 0xEEA5, 0xEEA1,\n    0xEE99, 0xEE89, 0xEE6F, 0xEE50, 0xEE31, 0xEE16, 0xEE03, 0xEDFC,\n    0xEDFF, 0xEE05, 0xEE10, 0xEE1D, 0xEE2C, 0xEE3C, 0xEE4E, 0xEE60,\n    0xEE71, 0xEE81, 0xEE90, 0xEE9C, 0xEEA5, 0xEEAA, 0xEEAB, 0xEEA8,\n    0xEEA3, 0xEE9E, 0xEE9B, 0xEE9A, 0xEE9D, 0xEEA5, 0xEEB6, 0xEECF,\n    0xEEED, 0xEF0D, 0xEF2E, 0xEF4C, 0xEF64, 0xEF75, 0xEF7A, 0xEF67,\n    0xEF38, 0xEEF9, 0xEEB8, 0xEE81, 0xEE61, 0xEE65, 0xEE99, 0xEF37,\n    0xF046, 0xF186, 0xF2B9, 0xF3A0, 0xD4B4, 0xD2F8, 0xCE42, 0xC753,\n    0xBEE6, 0xB5BB, 0xAC90, 0xA424, 0x9D34, 0x987F, 0x95DA, 0x9473,\n    0x9409, 0x945E, 0x9531, 0x9644, 0x9757, 0x982A, 0x987F, 0x987F,\n    0x987F, 0x987F, 0x987F, 0x987F, 0x987F, 0x987F, 0x987F, 0x9889,\n    0x98A3, 0x98C2, 0x98DF, 0x98EF, 0x98EB, 0x98C8, 0x987F, 0x97F3,\n    0x9723, 0x962A, 0x9524, 0x942E, 0x9363, 0x92DF, 0x9292, 0x9255,\n    0x9226, 0x9204, 0x91ED, 0x91DE, 0x91D6, 0x91D2, 0x91D1, 0x91D1,\n    0x91D0, 0x91CB, 0x91C1, 0x91B6, 0x91AE, 0x91A8, 0x91A5, 0x91A6,\n    0x91A9, 0x91AE, 0x91B7, 0x91C1, 0x91C9, 0x91C9, 0x91C7, 0x91C8,\n    0x91D0, 0x91E5, 0x920B, 0x9246, 0x929D, 0x9326, 0x93E8, 0x94CD,\n    0x95C1, 0x96AF, 0x9781, 0x9823, 0x987F, 0x9867, 0x97DE, 0x9717,\n    0x9649, 0x95A7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFC9, 0xFF42, 0xFE9C,\n    0xFE06, 0xFDAF, 0xFDC6, 0xFE7D, 0x0000, 0x0234, 0x04D2, 0x07CA,\n    0x0B09, 0x0E81, 0x1222, 0x15D9, 0x1998, 0x1D4E, 0x20EA, 0x245D,\n    0x2795, 0x2AAD, 0x2D8F, 0x2FE6, 0x315D, 0x3188, 0x30B0, 0x2F92,\n    0x2EE9, 0x2EFA, 0x2F6F, 0x301D, 0x30D5, 0x316B, 0x31B1, 0x317C,\n    0x309D, 0x2EE9, 0x2C1C, 0x2844, 0x23A8, 0x1E90, 0x1943, 0x140A,\n    0x0F2C, 0x0AF2, 0x07A2, 0x053D, 0x037E, 0x0248, 0x017A, 0x00F8,\n    0x00A1, 0x0059, 0x0000, 0xFFD4, 0x000C, 0x007F, 0x0105, 0x0173,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xFFE6, 0xFFA6, 0xFF57, 0xFF10, 0xFEE6,\n    0xFEF2, 0xFF48, 0x0000, 0x011E, 0x028D, 0x043A, 0x0614, 0x0808,\n    0x0A05, 0x0BFA, 0x0DD4, 0x0F81, 0x10F1, 0x1210, 0x12CE, 0x11B7,\n    0x0E81, 0x0ADA, 0x0872, 0x07D5, 0x0816, 0x08A8, 0x08FE, 0x08FE,\n    0x08EB, 0x08CE, 0x08AF, 0x0895, 0x0888, 0x0890, 0x08B5, 0x08FE,\n    0x0990, 0x0A75, 0x0B8E, 0x0CBC, 0x0DE0, 0x0EDB, 0x0F8D, 0x0FD9,\n    0x0F9F, 0x0EB3, 0x0D1F, 0x0B10, 0x08B6, 0x063F, 0x03D9, 0x01B5,\n    0x0000, 0xFEA9, 0xFD82, 0xFC91, 0xFBDE, 0xFB6E, 0xF549, 0xF549,\n    0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549,\n    0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549,\n    0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549,\n    0xF549, 0xF542, 0xF532, 0xF51E, 0xF50B, 0xF501, 0xF504, 0xF51A,\n    0xF549, 0xF58C, 0xF5D7, 0xF62A, 0xF685, 0xF6E6, 0xF74E, 0xF7BB,\n    0xF82E, 0xF8A5, 0xF921, 0xF9A0, 0xFA22, 0xFAE0, 0xFBE1, 0xFCD9,\n    0xFD7C, 0xFDA3, 0xFD7E, 0xFD3E, 0xFD18, 0xFD1B, 0xFD2E, 0xFD4A,\n    0xFD67, 0xFD7F, 0xFD8A, 0xFD82, 0xFD5E, 0xFD18, 0xFCA6, 0xFC0A,\n    0xFB4E, 0xFA7F, 0xF9A7, 0xF8D2, 0xF80A, 0xF75B, 0xF6D0, 0xF67B,\n    0xF659, 0xF657, 0xF65E, 0xF65C, 0xF63B, 0xF5E6, 0xF549, 0xF409,\n    0xF21D, 0xEFEC, 0xEDDB, 0xEC53, 0xC7DD, 0xC7E7, 0xC800, 0xC81F,\n    0xC83F, 0xC857, 0xC861, 0xC855, 0xC82B, 0xC7DD, 0xC753, 0xC687,\n    0xC58E, 0xC480, 0xC372, 0xC27A, 0xC1AE, 0xC123, 0xC0F0, 0xC130,\n    0xC1DC, 0xC2D3, 0xC3F8, 0xC52B, 0xC64C, 0xC73C, 0xC7DD, 0xC832,\n    0xC85A, 0xC85F, 0xC84C, 0xC82B, 0xC807, 0xC7EA, 0xC7DD, 0xC7DD,\n    0xC7DD, 0xC7DD, 0xC7DD, 0xC7DD, 0xC7DD, 0xC7DD, 0xC7DD, 0xC7DD,\n    0xC7DD, 0xC7DD, 0xC7DD, 0xC7DD, 0xC7DD, 0xC7DD, 0xC7DD, 0xC7DD,\n    0xC7DD, 0xC7DD, 0xC7DD, 0xC7DD, 0xC7DD, 0xC7DD, 0xC7DD, 0xC7DD,\n    0xC7DD, 0xC7DD, 0xC7DD, 0xC7DD, 0xC7DD, 0xC7DD, 0xC7DD, 0xC7DD,\n    0xC7DD, 0xC7DD, 0xC7DD, 0xC7DD, 0xC7DD, 0xC7EC, 0xC80F, 0xC83A,\n    0xC861, 0xC878, 0xC872, 0xC843, 0xC7DD, 0xC6F7, 0xC581, 0xC3D0,\n    0xC234, 0xC101, 0x054B, 0x0452, 0x01AD, 0xFDC5, 0xF901, 0xF3CC,\n    0xEE8E, 0xE9B1, 0xE59D, 0xE2BB, 0xE0E5, 0xDF9F, 0xDED0, 0xDE62,\n    0xDE3D, 0xDE48, 0xDE6E, 0xDE96, 0xDEA8, 0xDECE, 0xDF33, 0xDFC5,\n    0xE071, 0xE125, 0xE1CF, 0xE25D, 0xE2BB, 0xE2D6, 0xE2B5, 0xE273,\n    0xE228, 0xE1F0, 0xE1E5, 0xE220, 0xE2BB, 0xE3BD, 0xE50B, 0xE694,\n    0xE846, 0xEA0D, 0xEBD7, 0xED91, 0xEF29, 0xF08C, 0xF1A8, 0xF284,\n    0xF337, 0xF3C7, 0xF438, 0xF492, 0xF4D9, 0xF512, 0xF543, 0xF572,\n    0xF5A5, 0xF5CF, 0xF5E5, 0xF5EB, 0xF5E4, 0xF5D6, 0xF5C5, 0xF5B4,\n    0xF5A8, 0xF5A5, 0xF5C5, 0xF610, 0xF673, 0xF6D5, 0xF723, 0xF746,\n    0xF728, 0xF6B5, 0xF5D5, 0xF450, 0xF21F, 0xEF79, 0xEC93, 0xE9A4,\n    0xE6E1, 0xE482, 0xE2BB, 0xE1B1, 0xE141, 0xE13D, 0xE174, 0xE1B8,\n    0x2BD6, 0x2AC4, 0x27DC, 0x2394, 0x1E60, 0x18B7, 0x130F, 0x0DDB,\n    0x0993, 0x06AB, 0x0509, 0x042B, 0x03EA, 0x041E, 0x04A1, 0x054A,\n    0x05F4, 0x0677, 0x06AB, 0x06AB, 0x06AB, 0x06AB, 0x06AB, 0x06AB,\n    0x06AB, 0x06AB, 0x06AB, 0x06A0, 0x0686, 0x0667, 0x064A, 0x0639,\n    0x063E, 0x0661, 0x06AB, 0x0721, 0x07BD, 0x0874, 0x093E, 0x0A12,\n    0x0AE5, 0x0BB0, 0x0C68, 0x0D04, 0x0D7B, 0x0DD0, 0x0E0B, 0x0E33,\n    0x0E49, 0x0E53, 0x0E54, 0x0E51, 0x0E4C, 0x0E4B, 0x0E52, 0x0E5D,\n    0x0E66, 0x0E6D, 0x0E72, 0x0E74, 0x0E72, 0x0E6D, 0x0E62, 0x0E52,\n    0x0E43, 0x0E38, 0x0E2D, 0x0E1F, 0x0E07, 0x0DE3, 0x0DAE, 0x0D63,\n    0x0CFE, 0x0C6E, 0x0BAD, 0x0ACC, 0x09DB, 0x08E9, 0x0805, 0x0741,\n    0x06AB, 0x064E, 0x0622, 0x0619, 0x0623, 0x0634, 0xCCF6, 0xCB71,\n    0xC753, 0xC141, 0xB9E2, 0xB1DD, 0xA9D8, 0xA279, 0x9C68, 0x9849,\n    0x95F9, 0x94BF, 0x9462, 0x94AC, 0x9565, 0x9656, 0x9746, 0x97FF,\n    0x9849, 0x9849, 0x9849, 0x9849, 0x9849, 0x9849, 0x9849, 0x9849,\n    0x9849, 0x984C, 0x9853, 0x985C, 0x9864, 0x9869, 0x9868, 0x985E,\n    0x9849, 0x9828, 0x97FC, 0x97C8, 0x9790, 0x9754, 0x9719, 0x96E0,\n    0x96AC, 0x9680, 0x965F, 0x9648, 0x9637, 0x962D, 0x9627, 0x9625,\n    0x9626, 0x9628, 0x9629, 0x962A, 0x9629, 0x9626, 0x9623, 0x9621,\n    0x9620, 0x961F, 0x961F, 0x9621, 0x9624, 0x9629, 0x962E, 0x9632,\n    0x9636, 0x963C, 0x9644, 0x964F, 0x965F, 0x9675, 0x9691, 0x96C9,\n    0x9723, 0x9790, 0x97FC, 0x9857, 0x988E, 0x988F, 0x9849, 0x9766,\n    0x95DA, 0x9402, 0x923D, 0x90E9, 0x0000, 0x0002, 0x0008, 0x0012,\n    0x001D, 0x0029, 0x0034, 0x003D, 0x0044, 0x0046, 0x0041, 0x0034,\n    0x0023, 0x0012, 0x0005, 0x0000, 0x0007, 0x0018, 0x002D, 0x003F,\n    0x0046, 0x0041, 0x0034, 0x0023, 0x0012, 0x0005, 0x0000, 0x0005,\n    0x0015, 0x002B, 0x0046, 0x0060, 0x0079, 0x008C, 0x0097, 0x009B,\n    0x009F, 0x00A2, 0x00A5, 0x00A6, 0x00A7, 0x00A7, 0x00A6, 0x00A6,\n    0x00A4, 0x00A3, 0x00A1, 0x00A0, 0x009E, 0x009C, 0x009B, 0x0099,\n    0x0098, 0x0098, 0x0098, 0x0098, 0x0098, 0x0099, 0x0099, 0x009A,\n    0x009A, 0x009A, 0x009A, 0x0099, 0x0098, 0x0096, 0x0094, 0x0091,\n    0x008F, 0x008D, 0x008A, 0x0089, 0x0088, 0x0088, 0x0087, 0x0087,\n    0x0088, 0x0088, 0x0089, 0x0089, 0x008A, 0x008A, 0x008B, 0x008C,\n    0x008C, 0x008C, 0xFF30, 0xFF30, 0xFF31, 0xFF33, 0xFF35, 0xFF37,\n    0xFF39, 0xFF3B, 0xFF3C, 0xFF3C, 0xFF3B, 0xFF39, 0xFF36, 0xFF33,\n    0xFF31, 0xFF30, 0xFF31, 0xFF34, 0xFF38, 0xFF3B, 0xFF3C, 0xFF3B,\n    0xFF39, 0xFF36, 0xFF33, 0xFF31, 0xFF30, 0xFF32, 0xFF39, 0xFF43,\n    0xFF4E, 0xFF5A, 0xFF64, 0xFF6D, 0xFF71, 0xFF74, 0xFF75, 0xFF77,\n    0xFF78, 0xFF78, 0xFF79, 0xFF79, 0xFF79, 0xFF78, 0xFF78, 0xFF77,\n    0xFF77, 0xFF76, 0xFF75, 0xFF75, 0xFF74, 0xFF74, 0xFF73, 0xFF73,\n    0xFF73, 0xFF73, 0xFF74, 0xFF74, 0xFF74, 0xFF75, 0xFF75, 0xFF75,\n    0xFF75, 0xFF75, 0xFF74, 0xFF73, 0xFF72, 0xFF71, 0xFF70, 0xFF6F,\n    0xFF6E, 0xFF6D, 0xFF6D, 0xFF6D, 0xFF6D, 0xFF6D, 0xFF6E, 0xFF6E,\n    0xFF6E, 0xFF6F, 0xFF6F, 0xFF70, 0xFF70, 0xFF71, 0xFF71, 0xFF71,\n    0xC9D8, 0xC95B, 0xC80B, 0xC626, 0xC3E6, 0xC187, 0xBF48, 0xBD62,\n    0xBC12, 0xBB95, 0xBCA3, 0xBF48, 0xC2B7, 0xC626, 0xC8CA, 0xC9D8,\n    0xC85C, 0xC4D3, 0xC09A, 0xBD11, 0xBB95, 0xBCA3, 0xBF48, 0xC2B7,\n    0xC626, 0xC8CA, 0xC9D8, 0xC88C, 0xC51B, 0xC02E, 0xBA71, 0xB48D,\n    0xAF2D, 0xAAFB, 0xA8A3, 0xA78E, 0xA6B0, 0xA606, 0xA58C, 0xA53B,\n    0xA511, 0xA507, 0xA51B, 0xA546, 0xA585, 0xA5D3, 0xA62C, 0xA68A,\n    0xA6EA, 0xA746, 0xA79B, 0xA7E3, 0xA81B, 0xA83C, 0xA844, 0xA836,\n    0xA81E, 0xA800, 0xA7E1, 0xA7C6, 0xA7B3, 0xA7AD, 0xA7B9, 0xA7DC,\n    0xA81F, 0xA885, 0xA901, 0xA98B, 0xAA18, 0xAA9D, 0xAB11, 0xAB69,\n    0xAB9B, 0xABAE, 0xABB2, 0xABAA, 0xAB96, 0xAB79, 0xAB56, 0xAB2F,\n    0xAB06, 0xAADD, 0xAAB7, 0xAA95, 0xAA7A, 0xAA68, 0x1E4A, 0x1F27,\n    0x217A, 0x24D6, 0x28D2, 0x2D04, 0x3100, 0x345C, 0x36AE, 0x378C,\n    0x35AD, 0x3100, 0x2AEB, 0x24D6, 0x2029, 0x1E4A, 0x20EA, 0x272E,\n    0x2EA8, 0x34EC, 0x378C, 0x35AD, 0x3100, 0x2AEB, 0x24D6, 0x2029,\n    0x1E4A, 0x20F0, 0x27FA, 0x320A, 0x3DC5, 0x49CC, 0x54C3, 0x5D4E,\n    0x620E, 0x6439, 0x65F1, 0x673F, 0x682D, 0x68C4, 0x690C, 0x6911,\n    0x68DB, 0x6873, 0x67E2, 0x6733, 0x666E, 0x659C, 0x64C8, 0x63FA,\n    0x633C, 0x6297, 0x6215, 0x61BE, 0x619C, 0x61A5, 0x61BF, 0x61E4,\n    0x6209, 0x6227, 0x6233, 0x6226, 0x61F7, 0x619C, 0x6103, 0x602A,\n    0x5F24, 0x5E05, 0x5CDF, 0x5BC5, 0x5ACB, 0x5A03, 0x5981, 0x5981,\n    0x5981, 0x5981, 0x5981, 0x5981, 0x5981, 0x5981, 0x5981, 0x5981,\n    0x5981, 0x5981, 0x5981, 0x5981, 0x1B09, 0x1AE3, 0x1A7D, 0x19EA,\n    0x193B, 0x1883, 0x17D4, 0x1741, 0x16DB, 0x16B5, 0x1707, 0x17D4,\n    0x18DF, 0x19EA, 0x1AB7, 0x1B09, 0x1A96, 0x1983, 0x183B, 0x1728,\n    0x16B5, 0x1707, 0x17D4, 0x18DF, 0x19EA, 0x1AB7, 0x1B09, 0x1A3C,\n    0x181B, 0x1511, 0x1186, 0x0DE3, 0x0A93, 0x07FF, 0x068F, 0x05E7,\n    0x0562, 0x04FD, 0x04B6, 0x0488, 0x0472, 0x0471, 0x0481, 0x04A1,\n    0x04CC, 0x0501, 0x053D, 0x057C, 0x05BC, 0x05FA, 0x0634, 0x0666,\n    0x068D, 0x06A7, 0x06B1, 0x06AF, 0x06A7, 0x069C, 0x0690, 0x0688,\n    0x0684, 0x0688, 0x0696, 0x06B1, 0x06E0, 0x0721, 0x0770, 0x07C7,\n    0x0820, 0x0875, 0x08C1, 0x08FD, 0x0924, 0x0924, 0x0924, 0x0924,\n    0x0924, 0x0924, 0x0924, 0x0924, 0x0924, 0x0924, 0x0924, 0x0924,\n    0x0924, 0x0924, 0x1144, 0x1176, 0x11FA, 0x12BA, 0x139E, 0x148D,\n    0x1570, 0x1630, 0x16B5, 0x16E6, 0x167B, 0x1570, 0x1415, 0x12BA,\n    0x11AF, 0x1144, 0x11DA, 0x1340, 0x14EB, 0x1650, 0x16E6, 0x167B,\n    0x1570, 0x1415, 0x12BA, 0x11AF, 0x1144, 0x11CB, 0x1332, 0x1534,\n    0x178A, 0x19EF, 0x1C1F, 0x1DD2, 0x1EC5, 0x1F33, 0x1F8B, 0x1FCD,\n    0x1FFD, 0x201B, 0x2029, 0x202A, 0x201F, 0x200B, 0x1FEE, 0x1FCB,\n    0x1FA4, 0x1F7A, 0x1F50, 0x1F27, 0x1F01, 0x1EE0, 0x1EC6, 0x1EB5,\n    0x1EAE, 0x1EB0, 0x1EB5, 0x1EBC, 0x1EC4, 0x1EC9, 0x1ECC, 0x1EC9,\n    0x1EC0, 0x1EAE, 0x1E8F, 0x1E64, 0x1E30, 0x1DF7, 0x1DBC, 0x1D84,\n    0x1D52, 0x1D2A, 0x1D10, 0x1D10, 0x1D10, 0x1D10, 0x1D10, 0x1D10,\n    0x1D10, 0x1D10, 0x1D10, 0x1D10, 0x1D10, 0x1D10, 0x1D10, 0x1D10,\n    0xAC44, 0xABF4, 0xAB1E, 0xA9E8, 0xA879, 0xA6F7, 0xA588, 0xA452,\n    0xA37C, 0xA32C, 0xA3D9, 0xA588, 0xA7B8, 0xA9E8, 0xAB97, 0xAC44,\n    0xAB52, 0xA911, 0xA660, 0xA41E, 0xA32C, 0xA3D9, 0xA588, 0xA7B8,\n    0xA9E8, 0xAB97, 0xAC44, 0xAAE8, 0xA74B, 0xA220, 0x9C1A, 0x95ED,\n    0x904C, 0x8BE9, 0x8979, 0x885C, 0x877A, 0x86CF, 0x8655, 0x8607,\n    0x85E2, 0x85DF, 0x85FB, 0x8631, 0x867B, 0x86D5, 0x873A, 0x87A6,\n    0x8813, 0x887C, 0x88DE, 0x8933, 0x8976, 0x89A2, 0x89B3, 0x89AF,\n    0x89A1, 0x898F, 0x897B, 0x896C, 0x8966, 0x896C, 0x8985, 0x89B3,\n    0x8A02, 0x8A72, 0x8AF8, 0x8B8B, 0x8C22, 0x8CB3, 0x8D33, 0x8D9A,\n    0x8DDD, 0x8DDD, 0x8DDD, 0x8DDD, 0x8DDD, 0x8DDD, 0x8DDD, 0x8DDD,\n    0x8DDD, 0x8DDD, 0x8DDD, 0x8DDD, 0x8DDD, 0x8DDD, 0xBF40, 0xBF0E,\n    0xBE88, 0xBDC6, 0xBCDF, 0xBBED, 0xBB07, 0xBA44, 0xB9BE, 0xB98C,\n    0xB9F8, 0xBB07, 0xBC66, 0xBDC6, 0xBED4, 0xBF40, 0xBEA8, 0xBD3E,\n    0xBB8E, 0xBA24, 0xB98C, 0xB9F8, 0xBB07, 0xBC66, 0xBDC6, 0xBED4,\n    0xBF40, 0xBE56, 0xBBE8, 0xB86F, 0xB462, 0xB03C, 0xAC73, 0xA981,\n    0xA7DE, 0xA720, 0xA68B, 0xA61C, 0xA5CF, 0xA5A1, 0xA58E, 0xA593,\n    0xA5AC, 0xA5D6, 0xA60D, 0xA64F, 0xA697, 0xA6E2, 0xA72C, 0xA773,\n    0xA7B2, 0xA7E7, 0xA80D, 0xA822, 0xA822, 0xA806, 0xA7D1, 0xA78C,\n    0xA73F, 0xA6F4, 0xA6B2, 0xA683, 0xA670, 0xA681, 0xA6C1, 0xA72E,\n    0xA7BB, 0xA85B, 0xA900, 0xA99F, 0xAA2A, 0xAA94, 0xAAD1, 0xAABB,\n    0xAAA4, 0xAA8E, 0xAA78, 0xAA61, 0xAA4B, 0xAA35, 0xAA1E, 0xAA08,\n    0xA9F2, 0xA9DB, 0xA9C5, 0xA9AF, 0x2537, 0x2570, 0x2609, 0x26E7,\n    0x27EF, 0x2904, 0x2A0B, 0x2AE9, 0x2B82, 0x2BBB, 0x2B40, 0x2A0B,\n    0x2879, 0x26E7, 0x25B2, 0x2537, 0x25E4, 0x2782, 0x2970, 0x2B0E,\n    0x2BBB, 0x2B40, 0x2A0B, 0x2879, 0x26E7, 0x25B2, 0x2537, 0x277F,\n    0x2D8F, 0x363B, 0x4056, 0x4AB3, 0x5426, 0x5B82, 0x5F9A, 0x6178,\n    0x62F3, 0x6413, 0x64E0, 0x6562, 0x65A0, 0x65A4, 0x6575, 0x651C,\n    0x649F, 0x6408, 0x635F, 0x62AA, 0x61F3, 0x6142, 0x609E, 0x6010,\n    0x5FA0, 0x5F55, 0x5F38, 0x5F3F, 0x5F56, 0x5F76, 0x5F96, 0x5FAF,\n    0x5FBA, 0x5FAF, 0x5F86, 0x5F38, 0x5EB4, 0x5DF9, 0x5D17, 0x5C20,\n    0x5B22, 0x5A30, 0x5958, 0x58AC, 0x583C, 0x583C, 0x583C, 0x583C,\n    0x583C, 0x583C, 0x583C, 0x583C, 0x583C, 0x583C, 0x583C, 0x583C,\n    0x583C, 0x583C, 0xD64A, 0xD64C, 0xD652, 0xD659, 0xD663, 0xD66C,\n    0xD676, 0xD67D, 0xD683, 0xD685, 0xD680, 0xD676, 0xD668, 0xD659,\n    0xD64F, 0xD64A, 0xD650, 0xD65F, 0xD670, 0xD67F, 0xD685, 0xD680,\n    0xD676, 0xD668, 0xD659, 0xD64F, 0xD64A, 0xD75E, 0xDA3A, 0xDE51,\n    0xE315, 0xE7F8, 0xEC6D, 0xEFE5, 0xF1D4, 0xF2B5, 0xF368, 0xF3F0,\n    0xF450, 0xF48D, 0xF4AB, 0xF4AD, 0xF497, 0xF46D, 0xF432, 0xF3EB,\n    0xF39B, 0xF345, 0xF2EF, 0xF29C, 0xF24E, 0xF20B, 0xF1D6, 0xF1B3,\n    0xF1A5, 0xF1A9, 0xF1B4, 0xF1C2, 0xF1D2, 0xF1DE, 0xF1E3, 0xF1DD,\n    0xF1CA, 0xF1A5, 0xF167, 0xF10F, 0xF0A4, 0xF030, 0xEFB8, 0xEF46,\n    0xEEE0, 0xEE8F, 0xEE5A, 0xEE5A, 0xEE5A, 0xEE5A, 0xEE5A, 0xEE5A,\n    0xEE5A, 0xEE5A, 0xEE5A, 0xEE5A, 0xEE5A, 0xEE5A, 0xEE5A, 0xEE5A,\n    0xEC41, 0xEC3B, 0xEC2A, 0xEC13, 0xEBF7, 0xEBD9, 0xEBBD, 0xEBA5,\n    0xEB95, 0xEB8F, 0xEB9C, 0xEBBD, 0xEBE8, 0xEC13, 0xEC34, 0xEC41,\n    0xEC2E, 0xEC02, 0xEBCE, 0xEBA1, 0xEB8F, 0xEB9C, 0xEBBD, 0xEBE8,\n    0xEC13, 0xEC34, 0xEC41, 0xEB57, 0xE8E8, 0xE56E, 0xE161, 0xDD3A,\n    0xD970, 0xD67D, 0xD4D9, 0xD419, 0xD381, 0xD30E, 0xD2BC, 0xD288,\n    0xD26E, 0xD26D, 0xD280, 0xD2A4, 0xD2D5, 0xD312, 0xD356, 0xD39E,\n    0xD3E8, 0xD42F, 0xD470, 0xD4A9, 0xD4D7, 0xD4F4, 0xD500, 0xD4FD,\n    0xD4F4, 0xD4E7, 0xD4DA, 0xD4D0, 0xD4CC, 0xD4D0, 0xD4E1, 0xD500,\n    0xD535, 0xD580, 0xD5DA, 0xD63E, 0xD6A3, 0xD704, 0xD75B, 0xD7A0,\n    0xD7CD, 0xD7CD, 0xD7CD, 0xD7CD, 0xD7CD, 0xD7CD, 0xD7CD, 0xD7CD,\n    0xD7CD, 0xD7CD, 0xD7CD, 0xD7CD, 0xD7CD, 0xD7CD, 0xB59E, 0xB59A,\n    0xB58F, 0xB57E, 0xB56B, 0xB556, 0xB543, 0xB532, 0xB527, 0xB522,\n    0xB52C, 0xB543, 0xB560, 0xB57E, 0xB595, 0xB59E, 0xB591, 0xB573,\n    0xB54E, 0xB52F, 0xB522, 0xB52C, 0xB543, 0xB560, 0xB57E, 0xB595,\n    0xB59E, 0xB42F, 0xB060, 0xAAEE, 0xA495, 0x9E13, 0x9823, 0x9384,\n    0x90F2, 0x8FC5, 0x8ED7, 0x8E22, 0x8DA2, 0x8D50, 0x8D29, 0x8D26,\n    0x8D44, 0x8D7C, 0x8DCA, 0x8E29, 0x8E94, 0x8F05, 0x8F78, 0x8FE7,\n    0x904E, 0x90A8, 0x90EE, 0x911D, 0x912F, 0x912B, 0x911C, 0x9109,\n    0x90F4, 0x90E4, 0x90DE, 0x90E5, 0x90FE, 0x912F, 0x9182, 0x91F8,\n    0x9285, 0x9321, 0x93C0, 0x9458, 0x94E0, 0x954C, 0x9592, 0x9592,\n    0x9592, 0x9592, 0x9592, 0x9592, 0x9592, 0x9592, 0x9592, 0x9592,\n    0x9592, 0x9592, 0x9592, 0x9592, 0x8001, 0x8001, 0x4171, 0xBF5F,\n    0x8001, 0x8001, 0x4171, 0xBF5F, 0x0000, 0x0096, 0x0226, 0x0465,\n    0x0709, 0x09C7, 0x0C53, 0x0E63, 0x0FAC, 0x0FE3, 0x0F4D, 0x0E65,\n    0x0D35, 0x0BC9, 0x0A29, 0x085F, 0x0676, 0x0478, 0x026E, 0x0062,\n    0xFE60, 0xFC70, 0xFA9B, 0xF8ED, 0xF76F, 0xF62B, 0xF52C, 0xF4B2,\n    0xF4DD, 0xF585, 0xF681, 0xF7A9, 0xF8D6, 0xF9DD, 0xFA98, 0xFB1D,\n    0xFBA1, 0xFC23, 0xFCA1, 0xFD1C, 0xFD93, 0xFE05, 0xFE72, 0xFEDA,\n    0xFF3B, 0xFF96, 0xFFEA, 0x0035, 0x006B, 0x0083, 0x0083, 0x0073,\n    0x005D, 0x0047, 0x003A, 0x0037, 0x003A, 0x003F, 0x0043, 0x0043,\n    0x003A, 0x0026, 0x0004, 0xFFD0, 0xFF70, 0xFEDC, 0xFE28, 0xFD68,\n    0xFCB2, 0xFC19, 0xFBB3, 0xFB94, 0xFBD0, 0xFDE4, 0x01BA, 0x0508,\n    0x0584, 0x0329, 0xFFB3, 0xFB74, 0xF6C2, 0xF1F3, 0xED5B, 0xE94F,\n    0xE625, 0xE430, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0005, 0x000B, 0x0013,\n    0x001C, 0x0025, 0x002E, 0x0036, 0x003D, 0x0042, 0x0044, 0x0044,\n    0x003F, 0x0037, 0x002A, 0x0018, 0x0000, 0xFFCE, 0xFF78, 0xFF0A,\n    0xFE92, 0xFE1D, 0xFDB9, 0xFD72, 0xFD55, 0xFD5C, 0xFD72, 0xFD95,\n    0xFDC3, 0xFDFA, 0xFE37, 0xFE78, 0xFEBB, 0xFEFD, 0xFF3C, 0xFF75,\n    0xFFA7, 0xFFCF, 0xFFEA, 0xFFFB, 0x0001, 0x0002, 0x0001, 0xFFFF,\n    0xFFFF, 0x0001, 0x0005, 0x000A, 0x000D, 0x000F, 0x000D, 0x0008,\n    0xFFFF, 0xFFEF, 0xFFD9, 0xFFBE, 0xFF9D, 0xFF79, 0xFF52, 0xFF29,\n    0xFEFE, 0xFED3, 0xFEA8, 0xFE6E, 0xFE25, 0xFDE6, 0xFDCB, 0xFDD3,\n    0xFDE7, 0xFE04, 0xFE27, 0xFE4C, 0xFE70, 0xFE8E, 0xFEA4, 0xFEAE,\n    0xFC62, 0xFC62, 0xFC62, 0xFC62, 0xFC62, 0xFC62, 0xFC62, 0xFC62,\n    0xFC62, 0xFC62, 0xFC6C, 0xFC89, 0xFCB5, 0xFCEB, 0xFD27, 0xFD66,\n    0xFDA4, 0xFDDD, 0xFE0C, 0xFE2E, 0xFE3F, 0xFE3B, 0xFE1E, 0xFDE5,\n    0xFD8A, 0xFD0A, 0xFC62, 0xFB17, 0xF8E8, 0xF620, 0xF30D, 0xEFFB,\n    0xED38, 0xEB11, 0xE9D1, 0xE942, 0xE8F3, 0xE8DB, 0xE8F5, 0xE939,\n    0xE99F, 0xEA21, 0xEAB6, 0xEB59, 0xEC01, 0xECA8, 0xED46, 0xEDD4,\n    0xEE6B, 0xEF25, 0xEFFD, 0xF0ED, 0xF1F0, 0xF301, 0xF419, 0xF55C,\n    0xF6DF, 0xF885, 0xFA34, 0xFBD2, 0xFD44, 0xFE6E, 0xFF36, 0xFF82,\n    0xFF49, 0xFEA5, 0xFDA7, 0xFC61, 0xFAE7, 0xF94B, 0xF79E, 0xF5F4,\n    0xF45E, 0xF22B, 0xEF4D, 0xECD0, 0xEBC0, 0xEBF9, 0xEC95, 0xED7C,\n    0xEE98, 0xEFCF, 0xF10C, 0xF237, 0xF337, 0xF3F7, 0x0884, 0x0892,\n    0x08BA, 0x08F8, 0x0947, 0x09A3, 0x0A06, 0x0A6D, 0x0AD4, 0x0B35,\n    0x0B8D, 0x0BD7, 0x0C0E, 0x0C2E, 0x0BFD, 0x0B6C, 0x0AB9, 0x0A20,\n    0x09DF, 0x0A0B, 0x0A79, 0x0B07, 0x0B95, 0x0C03, 0x0C2E, 0x0B71,\n    0x0A05, 0x0919, 0x09DF, 0x0CCD, 0x110C, 0x15DF, 0x1A87, 0x1E46,\n    0x205C, 0x2104, 0x210C, 0x2094, 0x1FBC, 0x1EA7, 0x1D74, 0x1C44,\n    0x1B39, 0x1A72, 0x1A11, 0x1A09, 0x1A32, 0x1A81, 0x1AED, 0x1B6B,\n    0x1BF2, 0x1C76, 0x1CEF, 0x1D52, 0x1D95, 0x1DB5, 0x1DBD, 0x1DB2,\n    0x1D9D, 0x1D85, 0x1D70, 0x1D67, 0x1D71, 0x1D95, 0x1E4E, 0x1F6E,\n    0x1FFC, 0x1FAF, 0x1F09, 0x1E41, 0x1D90, 0x1D2F, 0x1D0F, 0x1CF8,\n    0x1CE9, 0x1CE2, 0x1CE1, 0x1CE5, 0x1CED, 0x1CF8, 0x1D04, 0x1D11,\n    0x1D1C, 0x1D26, 0x1D2D, 0x1D2F, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_1A.inc.c",
    "content": "static const struct Animation anim_1A[] = {\n    1,\n    189,\n    0,\n    0,\n    0x11,\n    ANIMINDEX_NUMPARTS(anim_1A_indices),\n    anim_1A_values,\n    anim_1A_indices,\n    0,\n};\n\n\nstatic const u16 anim_1A_indices[] = {\n    0x0001, 0x0000, 0x0011, 0x0001, 0x0011, 0x0012, 0x0001, 0x0000, 0x0001, 0x0023, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0011, 0x022C,\n    0x0001, 0x0000, 0x0011, 0x020A, 0x0011, 0x021B,\n    0x0011, 0x01D7, 0x0011, 0x01E8, 0x0011, 0x01F9,\n    0x0001, 0x01D3, 0x0001, 0x01D4, 0x0001, 0x01D5,\n    0x0011, 0x0037, 0x0011, 0x0048, 0x0011, 0x0059,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0011, 0x0026,\n    0x0001, 0x0000, 0x0001, 0x0024, 0x0001, 0x0025,\n    0x0001, 0x01CF, 0x0001, 0x01D0, 0x0001, 0x01D1,\n    0x0011, 0x00AE, 0x0011, 0x00BF, 0x0011, 0x00D0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0011, 0x009D,\n    0x0011, 0x006A, 0x0011, 0x007B, 0x0011, 0x008C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01D2,\n    0x0011, 0x019C, 0x0011, 0x01AD, 0x0011, 0x01BE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0011, 0x018B,\n    0x0011, 0x0158, 0x0011, 0x0169, 0x0011, 0x017A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01D6,\n    0x0011, 0x0125, 0x0011, 0x0136, 0x0011, 0x0147,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0011, 0x0114,\n    0x0011, 0x00E1, 0x0011, 0x00F2, 0x0011, 0x0103,\n};\n\nstatic const s16 anim_1A_values[] = {\n    0x0000, 0x0064, 0x0065, 0x0069, 0x006E, 0x0075, 0x007C, 0x0083,\n    0x0089, 0x008F, 0x0094, 0x0099, 0x009D, 0x00A1, 0x00A4, 0x00A7,\n    0x00A9, 0x00AA, 0x0000, 0x0001, 0x0003, 0x0006, 0x000A, 0x000E,\n    0x0012, 0x0015, 0x0017, 0x0017, 0x0015, 0x0011, 0x000E, 0x000A,\n    0x0005, 0x0001, 0x0000, 0x3FFF, 0xF97C, 0xED8C, 0xC445, 0xC3C7,\n    0xC32B, 0xC27E, 0xC1CC, 0xC122, 0xC08C, 0xC017, 0xBFD0, 0xBFC3,\n    0xBFFC, 0xC103, 0xC2FF, 0xC56E, 0xC7CD, 0xC999, 0xCA4F, 0x2C6B,\n    0x2C1F, 0x2C1D, 0x2C42, 0x2C6B, 0x2C75, 0x2C3D, 0x2B9F, 0x2A78,\n    0x28A6, 0x2604, 0x20B2, 0x1827, 0x0E40, 0x04DD, 0xFDDD, 0xFB1D,\n    0xF34B, 0xF2C4, 0xF261, 0xF210, 0xF1BF, 0xF15C, 0xF0D5, 0xF018,\n    0xEF13, 0xEDB4, 0xEBE9, 0xE8A6, 0xE39D, 0xDDDD, 0xD874, 0xD46F,\n    0xD2DC, 0x9599, 0x961A, 0x9641, 0x9638, 0x962B, 0x9646, 0x96B2,\n    0x979C, 0x992E, 0x9B94, 0x9EF8, 0xA5B0, 0xB067, 0xBCCB, 0xC886,\n    0xD145, 0xD4B4, 0x01A1, 0x01A2, 0x0198, 0x0186, 0x016D, 0x0150,\n    0x012F, 0x010D, 0x00EA, 0x00CA, 0x00AE, 0x008F, 0x0069, 0x0043,\n    0x0021, 0x0009, 0x0000, 0xFB48, 0xFB46, 0xFB62, 0xFB97, 0xFBDE,\n    0xFC34, 0xFC93, 0xFCF6, 0xFD59, 0xFDB6, 0xFE08, 0xFE62, 0xFECE,\n    0xFF3D, 0xFF9F, 0xFFE6, 0x0000, 0xEBB9, 0xEBB7, 0xEBF0, 0xEC59,\n    0xECEA, 0xED98, 0xEE58, 0xEF21, 0xEFE9, 0xF0A5, 0xF14C, 0xF202,\n    0xF2DD, 0xF3BE, 0xF485, 0xF513, 0xF549, 0xC088, 0xC086, 0xC0B2,\n    0xC103, 0xC172, 0xC1F7, 0xC28A, 0xC325, 0xC3BE, 0xC44E, 0xC4CF,\n    0xC55A, 0xC602, 0xC6AE, 0xC747, 0xC7B4, 0xC7DD, 0xE1D9, 0xE164,\n    0xE07B, 0xDF4B, 0xDDFF, 0xDCC5, 0xDBC8, 0xDB34, 0xDB35, 0xDBF9,\n    0xDDAA, 0xE224, 0xE9E9, 0xF325, 0xFC02, 0x02AB, 0x054B, 0x063D,\n    0x06FE, 0x080F, 0x0966, 0x0AFC, 0x0CC7, 0x0EC0, 0x10DD, 0x1316,\n    0x1562, 0x17B9, 0x1AD8, 0x1F07, 0x238B, 0x27AB, 0x2AAC, 0x2BD6,\n    0x9062, 0x9088, 0x90B3, 0x90FA, 0x9171, 0x9230, 0x934C, 0x94DA,\n    0x96F0, 0x99A4, 0x9D0C, 0xA33A, 0xACD6, 0xB7D8, 0xC239, 0xC9F0,\n    0xCCF6, 0x008C, 0x00D3, 0x0161, 0x021D, 0x02EE, 0x03B9, 0x0467,\n    0x04DF, 0x0506, 0x04C8, 0x0433, 0x0365, 0x027A, 0x0190, 0x00C5,\n    0x0036, 0x0000, 0xFF71, 0xFF03, 0xFE26, 0xFD02, 0xFBBD, 0xFA7D,\n    0xF967, 0xF8A3, 0xF857, 0xF89F, 0xF964, 0xFA7D, 0xFBBF, 0xFD02,\n    0xFE1C, 0xFEE4, 0xFF30, 0xAA62, 0xAA8D, 0xAAD2, 0xAB3D, 0xABD8,\n    0xACAE, 0xADC9, 0xAF34, 0xB0FB, 0xB38E, 0xB714, 0xBB27, 0xBF61,\n    0xC35C, 0xC6B2, 0xC8FE, 0xC9D8, 0x5981, 0x582E, 0x55D0, 0x528E,\n    0x4E91, 0x4A00, 0x4503, 0x3FC2, 0x3A66, 0x3515, 0x2FF8, 0x2B37,\n    0x26FA, 0x2369, 0x20AB, 0x1EE9, 0x1E4A, 0x0924, 0x098B, 0x0A42,\n    0x0B3E, 0x0C73, 0x0DD4, 0x0F56, 0x10EC, 0x128B, 0x1426, 0x15B1,\n    0x1721, 0x1869, 0x197D, 0x1A51, 0x1AD9, 0x1B09, 0x1D10, 0x1CCD,\n    0x1C54, 0x1BAE, 0x1AE3, 0x19FA, 0x18FB, 0x17EF, 0x16DE, 0x15CF,\n    0x14CA, 0x13D8, 0x1300, 0x124A, 0x11BE, 0x1164, 0x1144, 0x8DDD,\n    0x8E8B, 0x8FC2, 0x916E, 0x937B, 0x95D3, 0x9862, 0x9B15, 0x9DD5,\n    0xA090, 0xA330, 0xA5A1, 0xA7CE, 0xA9A3, 0xAB0B, 0xABF2, 0xAC44,\n    0x0000, 0xFF8B, 0xFE88, 0xFD29, 0xFB9D, 0xFA14, 0xF8C0, 0xF7D1,\n    0xF776, 0xF7D4, 0xF8CC, 0xFA2A, 0xFBBB, 0xFD4D, 0xFEAB, 0xFFA3,\n    0x0000, 0x0000, 0x0017, 0x004B, 0x0092, 0x00E1, 0x0130, 0x0174,\n    0x01A4, 0x01B6, 0x01A4, 0x0172, 0x012C, 0x00DB, 0x008A, 0x0044,\n    0x0012, 0x0000, 0xA998, 0xA9CB, 0xAA31, 0xAAC8, 0xAB8B, 0xAC76,\n    0xAD87, 0xAEB7, 0xB005, 0xB1B5, 0xB3EC, 0xB66D, 0xB8FD, 0xBB62,\n    0xBD61, 0xBEBF, 0xBF40, 0x583C, 0x5718, 0x550D, 0x523F, 0x4ECF,\n    0x4AE0, 0x4694, 0x420D, 0x3D6F, 0x38DA, 0x3473, 0x305A, 0x2CB3,\n    0x29A0, 0x2744, 0x25C0, 0x2537, 0xEE5A, 0xEDD0, 0xECDA, 0xEB87,\n    0xE9E8, 0xE80D, 0xE606, 0xE3E4, 0xE1B6, 0xDF8D, 0xDD7A, 0xDB8B,\n    0xD9D2, 0xD85F, 0xD742, 0xD68B, 0xD64A, 0xD7CD, 0xD842, 0xD913,\n    0xDA33, 0xDB94, 0xDD28, 0xDEE1, 0xE0B1, 0xE28B, 0xE461, 0xE625,\n    0xE7CA, 0xE940, 0xEA7C, 0xEB6E, 0xEC0A, 0xEC41, 0x9592, 0x964A,\n    0x9792, 0x9955, 0x9B7E, 0x9DF7, 0xA0AA, 0xA381, 0xA668, 0xA948,\n    0xAC0D, 0xAE9F, 0xB0EA, 0xB2D9, 0xB454, 0xB548, 0xB59E, 0x8001,\n    0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F, 0xE3C6,\n    0xE39E, 0xE462, 0xE5E4, 0xE7F5, 0xEA68, 0xED0D, 0xEFB8, 0xF239,\n    0xF464, 0xF698, 0xF8F9, 0xFAFE, 0xFCB5, 0xFE54, 0xFF88, 0x0000,\n    0xFEA8, 0xFEEF, 0xFF47, 0xFFAC, 0x0017, 0x0088, 0x00F7, 0x0163,\n    0x01C5, 0x0219, 0x0255, 0x0265, 0x023B, 0x01B7, 0x00F7, 0x004A,\n    0x0000, 0xF45E, 0xF4CA, 0xF5AB, 0xF6EB, 0xF873, 0xFA2D, 0xFC03,\n    0xFDDE, 0xFFA9, 0x014A, 0x0389, 0x05F8, 0x06BA, 0x04B7, 0x0133,\n    0xFDDE, 0xFC62, 0x0000, 0x0008, 0x000D, 0x000F, 0x0010, 0x0010,\n    0x000F, 0x000E, 0x000D, 0x000D, 0x000B, 0x0009, 0x0006, 0x0004,\n    0x0002, 0x0000, 0x0000, 0x1D2F, 0x1DC9, 0x1EC8, 0x1FFB, 0x212E,\n    0x222C, 0x22C3, 0x22BF, 0x21ED, 0x1FD8, 0x1C80, 0x185F, 0x13ED,\n    0x0FA5, 0x0C00, 0x0977, 0x0884, 0x40A1, 0x413E, 0x4298, 0x446D,\n    0x467E, 0x488A, 0x4A51, 0x4B90, 0x4C09, 0x4B8C, 0x4A41, 0x486D,\n    0x4655, 0x443D, 0x4269, 0x411F, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_1B.inc.c",
    "content": "static const struct Animation anim_1B[] = {\n    0,\n    189,\n    0,\n    0,\n    0x40,\n    ANIMINDEX_NUMPARTS(anim_1B_indices),\n    anim_1B_values,\n    anim_1B_indices,\n    0,\n};\n\n\nstatic const u16 anim_1B_indices[] = {\n    0x0001, 0x0000, 0x0040, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0041, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0594,\n    0x0040, 0x04D4, 0x0040, 0x0514, 0x0040, 0x0554,\n    0x0040, 0x0414, 0x0040, 0x0454, 0x0040, 0x0494,\n    0x0001, 0x0410, 0x0001, 0x0411, 0x0001, 0x0412,\n    0x0040, 0x0084, 0x0040, 0x00C4, 0x0040, 0x0104,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0040, 0x0044,\n    0x0001, 0x0000, 0x0001, 0x0042, 0x0001, 0x0043,\n    0x0001, 0x040C, 0x0001, 0x040D, 0x0001, 0x040E,\n    0x0040, 0x0244, 0x0040, 0x0284, 0x0040, 0x02C4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0040, 0x0204,\n    0x0040, 0x0144, 0x0040, 0x0184, 0x0040, 0x01C4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x040F,\n    0x0001, 0x0409, 0x0001, 0x040A, 0x0001, 0x040B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0408,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0040, 0x03C8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0413,\n    0x0001, 0x03C5, 0x0001, 0x03C6, 0x0001, 0x03C7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x03C4,\n    0x0040, 0x0304, 0x0040, 0x0344, 0x0040, 0x0384,\n};\n\nstatic const s16 anim_1B_values[] = {\n    0x0000, 0x0064, 0x0064, 0x0064, 0x0064, 0x0064, 0x0064, 0x0064,\n    0x0064, 0x0064, 0x0064, 0x0064, 0x0064, 0x0064, 0x0064, 0x0064,\n    0x0064, 0x0064, 0x0064, 0x0064, 0x0064, 0x0064, 0x0064, 0x0064,\n    0x0064, 0x0064, 0x0064, 0x0064, 0x0064, 0x0064, 0x0064, 0x0064,\n    0x0064, 0x0064, 0x0064, 0x0064, 0x0064, 0x0064, 0x0064, 0x0064,\n    0x0064, 0x0064, 0x0064, 0x0064, 0x0064, 0x0064, 0x0064, 0x0064,\n    0x0064, 0x0064, 0x0064, 0x0064, 0x0064, 0x0064, 0x0064, 0x0064,\n    0x0064, 0x0064, 0x0064, 0x0064, 0x0064, 0x0064, 0x0064, 0x0064,\n    0x0064, 0x3FFF, 0xF97C, 0xED8C, 0xC56C, 0xC58F, 0xC5EE, 0xC67A,\n    0xC724, 0xC7DD, 0xC897, 0xC941, 0xC9CD, 0xCA2C, 0xCA4F, 0xCA32,\n    0xC9E2, 0xC96B, 0xC8D7, 0xC833, 0xC788, 0xC6E4, 0xC650, 0xC5D9,\n    0xC589, 0xC56C, 0xC5A1, 0xC62F, 0xC6F8, 0xC7DD, 0xC8C3, 0xC98C,\n    0xCA19, 0xCA4F, 0xCA36, 0xC9EE, 0xC983, 0xC8FD, 0xC865, 0xC7C5,\n    0xC726, 0xC691, 0xC610, 0xC5AB, 0xC56C, 0xC547, 0xC529, 0xC513,\n    0xC503, 0xC4F8, 0xC4F3, 0xC4F2, 0xC4F6, 0xC4FC, 0xC505, 0xC510,\n    0xC51D, 0xC52A, 0xC538, 0xC545, 0xC551, 0xC55C, 0xC564, 0xC56A,\n    0xC56C, 0xC56C, 0xC56C, 0xC56C, 0x2C5F, 0x2C57, 0x2C42, 0x2C22,\n    0x2BFC, 0x2BD2, 0x2BA9, 0x2B82, 0x2B63, 0x2B4E, 0x2B46, 0x2B4C,\n    0x2B5E, 0x2B79, 0x2B9A, 0x2BBF, 0x2BE5, 0x2C0A, 0x2C2C, 0x2C46,\n    0x2C58, 0x2C5F, 0x2C53, 0x2C33, 0x2C06, 0x2BD2, 0x2B9F, 0x2B72,\n    0x2B52, 0x2B46, 0x2B4B, 0x2B5B, 0x2B74, 0x2B92, 0x2BB4, 0x2BD8,\n    0x2BFC, 0x2C1D, 0x2C3A, 0x2C51, 0x2C5F, 0x2C67, 0x2C6E, 0x2C73,\n    0x2C77, 0x2C79, 0x2C7A, 0x2C7A, 0x2C7A, 0x2C78, 0x2C76, 0x2C74,\n    0x2C71, 0x2C6E, 0x2C6B, 0x2C68, 0x2C65, 0x2C63, 0x2C61, 0x2C5F,\n    0x2C5F, 0x2C5F, 0x2C5F, 0x2C5F, 0xF3FA, 0xF3D4, 0xF36B, 0xF2D1,\n    0xF216, 0xF14A, 0xF07E, 0xEFC3, 0xEF28, 0xEEC0, 0xEE99, 0xEEB9,\n    0xEF11, 0xEF94, 0xF037, 0xF0EC, 0xF1A7, 0xF25C, 0xF2FF, 0xF382,\n    0xF3DA, 0xF3FA, 0xF3BF, 0xF323, 0xF247, 0xF14A, 0xF04D, 0xEF70,\n    0xEED4, 0xEE99, 0xEEB5, 0xEF04, 0xEF7A, 0xF00D, 0xF0B4, 0xF164,\n    0xF213, 0xF2B7, 0xF346, 0xF3B5, 0xF3FA, 0xF423, 0xF443, 0xF45C,\n    0xF46E, 0xF479, 0xF47F, 0xF480, 0xF47C, 0xF475, 0xF46B, 0xF45F,\n    0xF451, 0xF442, 0xF433, 0xF425, 0xF417, 0xF40C, 0xF402, 0xF3FC,\n    0xF3FA, 0xF3FA, 0xF3FA, 0xF3FA, 0x9565, 0x957B, 0x95B7, 0x9610,\n    0x967C, 0x96F2, 0x9767, 0x97D3, 0x982C, 0x9869, 0x987F, 0x986C,\n    0x983A, 0x97EE, 0x9790, 0x9728, 0x96BC, 0x9653, 0x95F6, 0x95AA,\n    0x9577, 0x9565, 0x9587, 0x95E1, 0x9660, 0x96F2, 0x9784, 0x9803,\n    0x985D, 0x987F, 0x986F, 0x9841, 0x97FD, 0x97A8, 0x9748, 0x96E3,\n    0x967E, 0x961F, 0x95CD, 0x958D, 0x9565, 0x954D, 0x953B, 0x952C,\n    0x9522, 0x951C, 0x9518, 0x9518, 0x951A, 0x951E, 0x9524, 0x952B,\n    0x9533, 0x953B, 0x9544, 0x954C, 0x9554, 0x955B, 0x9560, 0x9564,\n    0x9565, 0x9565, 0x9565, 0x9565, 0x01A1, 0x0193, 0x016D, 0x0135,\n    0x00F3, 0x00AE, 0x006C, 0x0034, 0x000E, 0x0000, 0x000E, 0x0034,\n    0x006C, 0x00AE, 0x00F3, 0x0135, 0x016D, 0x0193, 0x01A1, 0x018F,\n    0x0160, 0x011D, 0x00D0, 0x0084, 0x0041, 0x0011, 0x0000, 0x000E,\n    0x0034, 0x006C, 0x00AE, 0x00F3, 0x0135, 0x016D, 0x0193, 0x01A1,\n    0x0193, 0x016D, 0x0135, 0x00F3, 0x00AE, 0x006C, 0x0034, 0x000E,\n    0x0000, 0x0003, 0x000C, 0x001B, 0x002F, 0x0047, 0x0062, 0x0080,\n    0x009F, 0x00C0, 0x00E1, 0x0102, 0x0121, 0x013F, 0x015A, 0x0172,\n    0x0185, 0x0194, 0x019E, 0x01A1, 0xFB48, 0xFB71, 0xFBE0, 0xFC81,\n    0xFD40, 0xFE08, 0xFEC7, 0xFF68, 0xFFD7, 0x0000, 0xFFD7, 0xFF68,\n    0xFEC7, 0xFE08, 0xFD40, 0xFC81, 0xFBE0, 0xFB71, 0xFB48, 0xFB7B,\n    0xFC04, 0xFCC6, 0xFDA4, 0xFE82, 0xFF44, 0xFFCD, 0x0000, 0xFFD7,\n    0xFF68, 0xFEC7, 0xFE08, 0xFD40, 0xFC81, 0xFBE0, 0xFB71, 0xFB48,\n    0xFB71, 0xFBE0, 0xFC81, 0xFD40, 0xFE08, 0xFEC7, 0xFF68, 0xFFD7,\n    0x0000, 0xFFF7, 0xFFDB, 0xFFB0, 0xFF76, 0xFF31, 0xFEE3, 0xFE8D,\n    0xFE32, 0xFDD4, 0xFD74, 0xFD16, 0xFCBB, 0xFC65, 0xFC17, 0xFBD2,\n    0xFB98, 0xFB6D, 0xFB51, 0xFB48, 0xEBB9, 0xEC0D, 0xECEE, 0xEE34,\n    0xEFB6, 0xF14C, 0xF2CF, 0xF414, 0xF4F5, 0xF549, 0xF4F5, 0xF414,\n    0xF2CF, 0xF14C, 0xEFB6, 0xEE34, 0xECEE, 0xEC0D, 0xEBB9, 0xEC22,\n    0xED38, 0xEEC0, 0xF081, 0xF243, 0xF3CB, 0xF4E0, 0xF549, 0xF4F5,\n    0xF414, 0xF2CF, 0xF14C, 0xEFB6, 0xEE34, 0xECEE, 0xEC0D, 0xEBB9,\n    0xEC0D, 0xECEE, 0xEE34, 0xEFB6, 0xF14C, 0xF2CF, 0xF414, 0xF4F5,\n    0xF549, 0xF536, 0xF4FE, 0xF4A5, 0xF431, 0xF3A6, 0xF307, 0xF259,\n    0xF1A1, 0xF0E2, 0xF021, 0xEF62, 0xEEA9, 0xEDFB, 0xED5D, 0xECD1,\n    0xEC5D, 0xEC05, 0xEBCD, 0xEBB9, 0xC088, 0xC0C8, 0xC175, 0xC26F,\n    0xC397, 0xC4CF, 0xC5F7, 0xC6F1, 0xC79D, 0xC7DD, 0xC79D, 0xC6F1,\n    0xC5F7, 0xC4CF, 0xC397, 0xC26F, 0xC175, 0xC0C8, 0xC088, 0xC0D9,\n    0xC1AD, 0xC2DA, 0xC433, 0xC58B, 0xC6B8, 0xC78D, 0xC7DD, 0xC79D,\n    0xC6F1, 0xC5F7, 0xC4CF, 0xC397, 0xC26F, 0xC175, 0xC0C8, 0xC088,\n    0xC0C8, 0xC175, 0xC26F, 0xC397, 0xC4CF, 0xC5F7, 0xC6F1, 0xC79D,\n    0xC7DD, 0xC7CE, 0xC7A3, 0xC760, 0xC707, 0xC69C, 0xC622, 0xC59D,\n    0xC50F, 0xC47D, 0xC3E9, 0xC356, 0xC2C9, 0xC243, 0xC1CA, 0xC15F,\n    0xC106, 0xC0C2, 0xC097, 0xC088, 0xE1D9, 0xE1E1, 0xE1F6, 0xE214,\n    0xE238, 0xE25D, 0xE281, 0xE29F, 0xE2B4, 0xE2BB, 0xE2B4, 0xE29F,\n    0xE281, 0xE25D, 0xE238, 0xE214, 0xE1F6, 0xE1E1, 0xE1D9, 0xE1E3,\n    0xE1FD, 0xE221, 0xE24A, 0xE274, 0xE298, 0xE2B2, 0xE2BB, 0xE2B4,\n    0xE29F, 0xE281, 0xE25D, 0xE238, 0xE214, 0xE1F6, 0xE1E1, 0xE1D9,\n    0xE1E1, 0xE1F6, 0xE214, 0xE238, 0xE25D, 0xE281, 0xE29F, 0xE2B4,\n    0xE2BB, 0xE2BA, 0xE2B4, 0xE2AC, 0xE2A2, 0xE295, 0xE286, 0xE276,\n    0xE265, 0xE253, 0xE242, 0xE230, 0xE21F, 0xE20F, 0xE200, 0xE1F3,\n    0xE1E9, 0xE1E0, 0xE1DB, 0xE1D9, 0x063D, 0x0641, 0x064B, 0x0659,\n    0x066B, 0x067D, 0x068E, 0x069D, 0x06A7, 0x06AB, 0x06A7, 0x069D,\n    0x068E, 0x067D, 0x066B, 0x0659, 0x064B, 0x0641, 0x063D, 0x0642,\n    0x064E, 0x0660, 0x0674, 0x0688, 0x069A, 0x06A6, 0x06AB, 0x06A7,\n    0x069D, 0x068E, 0x067D, 0x066B, 0x0659, 0x064B, 0x0641, 0x063D,\n    0x0641, 0x064B, 0x0659, 0x066B, 0x067D, 0x068E, 0x069D, 0x06A7,\n    0x06AB, 0x06AA, 0x06A7, 0x06A3, 0x069E, 0x0698, 0x0691, 0x0689,\n    0x0681, 0x0678, 0x066F, 0x0667, 0x065F, 0x0657, 0x0650, 0x0649,\n    0x0644, 0x0640, 0x063E, 0x063D, 0x9062, 0x90A8, 0x9161, 0x926F,\n    0x93AE, 0x94FE, 0x963D, 0x974A, 0x9804, 0x9849, 0x9804, 0x974A,\n    0x963D, 0x94FE, 0x93AE, 0x926F, 0x9161, 0x90A8, 0x9062, 0x90B9,\n    0x919E, 0x92E2, 0x9456, 0x95C9, 0x970D, 0x97F2, 0x9849, 0x9804,\n    0x974A, 0x963D, 0x94FE, 0x93AE, 0x926F, 0x9161, 0x90A8, 0x9062,\n    0x90A8, 0x9161, 0x926F, 0x93AE, 0x94FE, 0x963D, 0x974A, 0x9804,\n    0x9849, 0x9839, 0x980B, 0x97C2, 0x9762, 0x96EF, 0x966B, 0x95DC,\n    0x9543, 0x94A5, 0x9406, 0x9368, 0x92D0, 0x9240, 0x91BD, 0x9149,\n    0x90EA, 0x90A1, 0x9072, 0x9062, 0x008C, 0x008C, 0x008C, 0x008C,\n    0x008C, 0x008C, 0x008C, 0x008C, 0x008C, 0x008B, 0x008B, 0x008B,\n    0x008B, 0x008A, 0x008A, 0x008A, 0x008A, 0x008A, 0x0089, 0x0089,\n    0x0089, 0x0089, 0x0089, 0x0088, 0x0088, 0x0088, 0x0088, 0x0088,\n    0x0088, 0x0088, 0x0088, 0x0088, 0x0088, 0x0088, 0x0088, 0x0088,\n    0x0088, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x0089, 0x008A,\n    0x008A, 0x008A, 0x008A, 0x008A, 0x008B, 0x008B, 0x008B, 0x008B,\n    0x008B, 0x008B, 0x008C, 0x008C, 0x008C, 0x008C, 0x008C, 0x008C,\n    0x008C, 0x008C, 0x008C, 0x008C, 0xFF71, 0xFF71, 0xFF71, 0xFF71,\n    0xFF71, 0xFF71, 0xFF71, 0xFF71, 0xFF71, 0xFF70, 0xFF70, 0xFF70,\n    0xFF70, 0xFF70, 0xFF6F, 0xFF6F, 0xFF6F, 0xFF6F, 0xFF6E, 0xFF6E,\n    0xFF6E, 0xFF6E, 0xFF6E, 0xFF6E, 0xFF6D, 0xFF6D, 0xFF6D, 0xFF6D,\n    0xFF6D, 0xFF6D, 0xFF6D, 0xFF6D, 0xFF6D, 0xFF6D, 0xFF6D, 0xFF6D,\n    0xFF6E, 0xFF6E, 0xFF6E, 0xFF6E, 0xFF6E, 0xFF6E, 0xFF6F, 0xFF6F,\n    0xFF6F, 0xFF6F, 0xFF6F, 0xFF6F, 0xFF70, 0xFF70, 0xFF70, 0xFF70,\n    0xFF70, 0xFF70, 0xFF71, 0xFF71, 0xFF71, 0xFF71, 0xFF71, 0xFF71,\n    0xFF71, 0xFF71, 0xFF71, 0xFF71, 0xAA62, 0xAA63, 0xAA66, 0xAA6B,\n    0xAA72, 0xAA7B, 0xAA85, 0xAA90, 0xAA9C, 0xAAAA, 0xAAB8, 0xAAC7,\n    0xAAD6, 0xAAE6, 0xAAF6, 0xAB07, 0xAB17, 0xAB27, 0xAB36, 0xAB45,\n    0xAB53, 0xAB61, 0xAB6D, 0xAB78, 0xAB82, 0xAB8B, 0xAB92, 0xAB97,\n    0xAB9A, 0xAB9B, 0xAB9A, 0xAB98, 0xAB94, 0xAB8F, 0xAB89, 0xAB81,\n    0xAB79, 0xAB6F, 0xAB65, 0xAB5A, 0xAB4E, 0xAB41, 0xAB35, 0xAB27,\n    0xAB1A, 0xAB0C, 0xAAFE, 0xAAF1, 0xAAE3, 0xAAD5, 0xAAC8, 0xAABB,\n    0xAAAF, 0xAAA3, 0xAA98, 0xAA8E, 0xAA84, 0xAA7C, 0xAA74, 0xAA6E,\n    0xAA69, 0xAA65, 0xAA63, 0xAA62, 0x5981, 0x0924, 0x1D10, 0x8DDD,\n    0xA998, 0xA994, 0xA991, 0xA98D, 0xA98A, 0xA987, 0xA984, 0xA982,\n    0xA97F, 0xA97D, 0xA97B, 0xA97A, 0xA978, 0xA977, 0xA976, 0xA975,\n    0xA974, 0xA973, 0xA973, 0xA972, 0xA972, 0xA972, 0xA972, 0xA972,\n    0xA973, 0xA973, 0xA974, 0xA974, 0xA975, 0xA976, 0xA977, 0xA978,\n    0xA979, 0xA97A, 0xA97B, 0xA97C, 0xA97D, 0xA97F, 0xA980, 0xA981,\n    0xA983, 0xA984, 0xA985, 0xA987, 0xA988, 0xA989, 0xA98B, 0xA98C,\n    0xA98D, 0xA98E, 0xA990, 0xA991, 0xA992, 0xA993, 0xA994, 0xA995,\n    0xA995, 0xA996, 0xA997, 0xA997, 0xA998, 0xA998, 0xA998, 0xA998,\n    0x583C, 0xEE5A, 0xD7CD, 0x9592, 0x8001, 0x8001, 0x4171, 0xBF5F,\n    0x8001, 0x8001, 0x4171, 0xBF5F, 0xE3C6, 0xE466, 0xE552, 0xE684,\n    0xE7F6, 0xE9A2, 0xEB82, 0xED8F, 0xEFC4, 0xF21A, 0xF48B, 0xF711,\n    0xF9A7, 0xFC45, 0xFEE6, 0x0182, 0x0416, 0x069A, 0x0909, 0x0B5B,\n    0x0D8B, 0x0F94, 0x116E, 0x1313, 0x147E, 0x15A9, 0x168C, 0x172A,\n    0x1788, 0x17AC, 0x179A, 0x1754, 0x16DF, 0x1640, 0x1579, 0x1490,\n    0x1387, 0x1264, 0x1129, 0x0FDB, 0x0E7E, 0x0D16, 0x0BA7, 0x0A34,\n    0x08C2, 0x0754, 0x05EF, 0x0461, 0x027E, 0x0053, 0xFDF2, 0xFB64,\n    0xF8BA, 0xF602, 0xF349, 0xF09D, 0xEE0E, 0xEBA8, 0xE97A, 0xE792,\n    0xE5FE, 0xE4CC, 0xE40A, 0xE3C6, 0xFEA8, 0xFE98, 0xFE84, 0xFE6E,\n    0xFE55, 0xFE3A, 0xFE1D, 0xFDFE, 0xFDDE, 0xFDBC, 0xFD99, 0xFD76,\n    0xFD51, 0xFD2D, 0xFD09, 0xFCE5, 0xFCC1, 0xFC9E, 0xFC7C, 0xFC5B,\n    0xFC3C, 0xFC1F, 0xFC03, 0xFBEA, 0xFBD3, 0xFBBF, 0xFBAE, 0xFBA0,\n    0xFB93, 0xFB89, 0xFB80, 0xFB78, 0xFB73, 0xFB70, 0xFB6E, 0xFB6E,\n    0xFB70, 0xFB74, 0xFB79, 0xFB80, 0xFB89, 0xFB94, 0xFBA1, 0xFBAF,\n    0xFBC0, 0xFBD1, 0xFBE5, 0xFBFF, 0xFC20, 0xFC49, 0xFC78, 0xFCAC,\n    0xFCE3, 0xFD1C, 0xFD56, 0xFD8F, 0xFDC6, 0xFDFB, 0xFE2A, 0xFE54,\n    0xFE77, 0xFE92, 0xFEA3, 0xFEA8, 0xF45E, 0xF48A, 0xF4A8, 0xF4BA,\n    0xF4C1, 0xF4BD, 0xF4B0, 0xF49C, 0xF480, 0xF45F, 0xF439, 0xF410,\n    0xF3E4, 0xF3B7, 0xF38A, 0xF35F, 0xF335, 0xF30E, 0xF2EC, 0xF2D0,\n    0xF2BA, 0xF2AB, 0xF2A6, 0xF2AB, 0xF2BA, 0xF2D6, 0xF300, 0xF33D,\n    0xF394, 0xF401, 0xF481, 0xF511, 0xF5AE, 0xF655, 0xF703, 0xF7B5,\n    0xF868, 0xF919, 0xF9C6, 0xFA6A, 0xFB03, 0xFB8F, 0xFC09, 0xFC70,\n    0xFCC0, 0xFCF5, 0xFD0E, 0xFD01, 0xFCC8, 0xFC6A, 0xFBED, 0xFB56,\n    0xFAAB, 0xF9F0, 0xF92D, 0xF867, 0xF7A3, 0xF6E7, 0xF638, 0xF59C,\n    0xF51A, 0xF4B5, 0xF475, 0xF45E, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0002, 0x0003, 0x0003,\n    0x0004, 0x0004, 0x0004, 0x0005, 0x0005, 0x0004, 0x0004, 0x0003,\n    0x0003, 0x0002, 0x0002, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0003,\n    0x0005, 0x0007, 0x0007, 0x0006, 0x0003, 0xFFFE, 0xFFF5, 0xFFEB,\n    0xFFDF, 0xFFCF, 0xFFB9, 0xFF9C, 0xFF77, 0xFF47, 0xFF0C, 0xFEC3,\n    0xFE63, 0xFDEB, 0xFD63, 0xFCCF, 0xFC36, 0xFB9E, 0xFB0D, 0xFA8A,\n    0xFA1A, 0xF9C4, 0xF98D, 0xF97C, 0xF982, 0xF98F, 0xF9A2, 0xF9B9,\n    0xF9D6, 0xF9F8, 0xFA1E, 0xFA48, 0xFA77, 0xFAA9, 0xFADE, 0xFB17,\n    0xFB53, 0xFB91, 0xFBD1, 0xFC13, 0xFC63, 0xFCE9, 0xFD92, 0xFE42,\n    0xFEE0, 0xFF50, 0xFF8D, 0xFFBA, 0xFFDA, 0xFFEF, 0xFFFD, 0x0002,\n    0x0004, 0x0003, 0x0001, 0x0000, 0x1D2F, 0x1D0C, 0x1CE2, 0x1CB5,\n    0x1C86, 0x1C5A, 0x1C33, 0x1C13, 0x1BFE, 0x1BF6, 0x1BFE, 0x1C12,\n    0x1C30, 0x1C54, 0x1C7E, 0x1CA8, 0x1CD1, 0x1CF6, 0x1D14, 0x1D28,\n    0x1D2F, 0x1D28, 0x1D14, 0x1CF6, 0x1CD1, 0x1CA8, 0x1C7D, 0x1C54,\n    0x1C2F, 0x1C11, 0x1BFD, 0x1BF6, 0x1BFC, 0x1C0D, 0x1C27, 0x1C47,\n    0x1C6C, 0x1C93, 0x1CBA, 0x1CDE, 0x1CFE, 0x1D18, 0x1D29, 0x1D2F,\n    0x1D27, 0x1D0F, 0x1CEC, 0x1CC1, 0x1C93, 0x1C65, 0x1C3A, 0x1C17,\n    0x1BFF, 0x1BF6, 0x1BFF, 0x1C17, 0x1C3A, 0x1C65, 0x1C93, 0x1CC1,\n    0x1CEC, 0x1D0F, 0x1D27, 0x1D2F, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_1C.inc.c",
    "content": "static const struct Animation anim_1C[] = {\n    1,\n    189,\n    0,\n    0,\n    0x0A,\n    ANIMINDEX_NUMPARTS(anim_1C_indices),\n    anim_1C_values,\n    anim_1C_indices,\n    0,\n};\n\n\nstatic const u16 anim_1C_indices[] = {\n    0x000A, 0x0001, 0x000A, 0x000B, 0x000A, 0x0015, 0x0001, 0x0000, 0x0001, 0x001F, 0x0001, 0x0000,\n    0x000A, 0x0168, 0x000A, 0x0172, 0x000A, 0x017C,\n    0x000A, 0x014A, 0x000A, 0x0154, 0x000A, 0x015E,\n    0x000A, 0x012C, 0x000A, 0x0136, 0x000A, 0x0140,\n    0x0001, 0x0128, 0x0001, 0x0129, 0x0001, 0x012A,\n    0x000A, 0x0048, 0x000A, 0x0052, 0x000A, 0x005C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x003E,\n    0x000A, 0x0020, 0x000A, 0x002A, 0x000A, 0x0034,\n    0x0001, 0x0124, 0x0001, 0x0125, 0x0001, 0x0126,\n    0x000A, 0x008E, 0x000A, 0x0098, 0x000A, 0x00A2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0084,\n    0x000A, 0x0066, 0x000A, 0x0070, 0x000A, 0x007A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0127,\n    0x000A, 0x0106, 0x000A, 0x0110, 0x000A, 0x011A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x00FC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x00F2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x012B,\n    0x000A, 0x00D4, 0x000A, 0x00DE, 0x000A, 0x00E8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x00CA,\n    0x000A, 0x00AC, 0x000A, 0x00B6, 0x000A, 0x00C0,\n};\n\nstatic const s16 anim_1C_values[] = {\n    0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006,\n    0x0006, 0x0007, 0x0007, 0x008F, 0x0053, 0x001C, 0xFFEB, 0xFFB2,\n    0xFF79, 0xFF45, 0xFF19, 0xFEFB, 0xFEF0, 0xFFF9, 0xFFD7, 0xFFBE,\n    0xFFB6, 0xFFAF, 0xFFAB, 0xFFA8, 0xFFA6, 0xFFA5, 0xFFA4, 0x3FFF,\n    0x0000, 0x1A7D, 0xE5DB, 0xE7B6, 0xEB92, 0xFFB0, 0xFFCF, 0x08C7,\n    0x1312, 0x17FE, 0xF97C, 0xFC7F, 0xFB05, 0xFB8B, 0xF075, 0xFFF5,\n    0xFD62, 0xFDC5, 0xFEB0, 0xFF33, 0xED8C, 0xE781, 0xEEB7, 0xF02A,\n    0xF45B, 0xEA86, 0xEE5D, 0xF019, 0xF164, 0xF1E5, 0xE59B, 0xBE8B,\n    0xB500, 0xB579, 0xC35F, 0xD1A4, 0xE644, 0xEE05, 0xF328, 0xF503,\n    0x2709, 0xDD38, 0x909B, 0x7CD1, 0x7180, 0xA62F, 0xA560, 0xA74C,\n    0xA9A9, 0xAAD0, 0xE3DD, 0xDA26, 0xDE0A, 0xD294, 0xD673, 0xADA6,\n    0xA48F, 0x9DF1, 0x97FF, 0x956B, 0xA066, 0xD097, 0x1FBD, 0x3A99,\n    0x4594, 0xF1B7, 0xE61A, 0xE2E0, 0xE14C, 0xE0E1, 0x0000, 0xFD15,\n    0xFC8E, 0x057C, 0x0C40, 0xF617, 0xF3FE, 0xF32C, 0xF315, 0xF32C,\n    0x0000, 0x00DA, 0x01BA, 0xFF08, 0x03A9, 0x1E80, 0x17FB, 0x1004,\n    0x0946, 0x066E, 0xF549, 0xF516, 0xF4E1, 0xF5A5, 0xF46D, 0xED30,\n    0xEEFA, 0xF128, 0xF300, 0xF3C7, 0xC7DD, 0xD03C, 0xD4FB, 0xCB42,\n    0xC519, 0xEAD4, 0xF150, 0xF597, 0xF7F2, 0xF8AB, 0x054B, 0xDEF4,\n    0xC1FE, 0xB48E, 0xC9C0, 0x4076, 0x4787, 0x47CC, 0x4522, 0x4363,\n    0x2BD6, 0x1E05, 0x1435, 0x0DDF, 0x1C9D, 0x6CFB, 0x71DD, 0x7226,\n    0x706C, 0x6F45, 0xCCF6, 0x9EF4, 0x7C19, 0x6FFE, 0x846E, 0xE58D,\n    0xE799, 0xE421, 0xDF20, 0xDC92, 0x00D4, 0x06BC, 0x0084, 0xFFE8,\n    0x0051, 0x0038, 0x001C, 0x0003, 0xFFF1, 0xFFEA, 0xEDC1, 0xF6F1,\n    0xFF74, 0x001E, 0xFF5E, 0xFF53, 0xFF47, 0xFF3B, 0xFF33, 0xFF30,\n    0x9A3A, 0xBBDF, 0xABB0, 0xAF8E, 0xB6BC, 0xBC4D, 0xC279, 0xC831,\n    0xCC67, 0xCE0B, 0x4FFE, 0x51AF, 0x4AA3, 0x23F3, 0x0728, 0x0742,\n    0x0ED1, 0x1987, 0x231B, 0x2741, 0x056C, 0x028B, 0xFAA7, 0x05A9,\n    0x1123, 0x16B9, 0x1BAA, 0x1F9F, 0x223F, 0x2333, 0x1EFC, 0x3240,\n    0x21A7, 0x293A, 0x305D, 0x2CC2, 0x265C, 0x1F3B, 0x196F, 0x170B,\n    0x87D0, 0x5D05, 0x8178, 0x9169, 0x9A13, 0x9F71, 0xA3DE, 0xA733,\n    0xA94E, 0xAA0A, 0xD196, 0xCE9A, 0xCD64, 0xD36D, 0xD75F, 0xD29B,\n    0xCB2D, 0xC33A, 0xBCE3, 0xBA4D, 0x2124, 0x1E8B, 0x1C3B, 0x18C7,\n    0x198E, 0x22D0, 0x2F66, 0x3C38, 0x462D, 0x4A2F, 0xED52, 0xF037,\n    0xEF4C, 0xDFB0, 0xD2CF, 0xD42C, 0xD91E, 0xDF68, 0xE4D1, 0xE71E,\n    0xFF67, 0xF512, 0xEC7C, 0xE8B8, 0xE795, 0xE723, 0xE717, 0xE743,\n    0xE77E, 0xE79C, 0xAB34, 0xA234, 0x9ECA, 0xB04C, 0xBF18, 0xBB1F,\n    0xB24B, 0xA7E8, 0x9F42, 0x9BA4, 0x7FFF, 0x7FFF, 0x4171, 0xBF5F,\n    0x7FFF, 0x7FFF, 0x4171, 0xBF5F, 0x3A19, 0x3B0D, 0x3DBE, 0x45E6,\n    0x4809, 0x3B44, 0x292F, 0x1678, 0x07CF, 0x01E1, 0xF0EF, 0xFA6E,\n    0x0547, 0x016E, 0xFBC8, 0xFB8A, 0xFC44, 0xFD6F, 0xFE85, 0xFEFF,\n    0xF4BF, 0xF444, 0xF405, 0xF5B2, 0xF697, 0xF4D4, 0xF233, 0xEF6F,\n    0xED3F, 0xEC5B, 0xCFAA, 0xCEFF, 0xD2FC, 0xE86A, 0xFB90, 0x001C,\n    0x01B0, 0x016B, 0x006E, 0xFFDB, 0x0EC2, 0x100A, 0x1158, 0x13D4,\n    0x1422, 0x0FB5, 0x0986, 0x0329, 0xFE32, 0xFC30, 0xF8D9, 0xF1E2,\n    0xEE01, 0xF4A0, 0xFBE0, 0xFD31, 0xFD69, 0xFCFE, 0xFC68, 0xFC1C,\n    0x5589, 0x487B, 0x3835, 0x1969, 0x011F, 0xFBCA, 0xFAC2, 0xFC3E,\n    0xFE72, 0xFF94, 0xDE19, 0xD19D, 0xCAAC, 0xD55F, 0xE397, 0xEC7F,\n    0xF594, 0xFD9A, 0x0352, 0x0580, 0x3DF7, 0x33C6, 0x2DBF, 0x35BC,\n    0x3EE0, 0x408E, 0x40E7, 0x4078, 0x3FCE, 0x3F76,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_1D.inc.c",
    "content": "static const struct Animation anim_1D[] = {\n    0,\n    189,\n    0,\n    0,\n    0x23,\n    ANIMINDEX_NUMPARTS(anim_1D_indices),\n    anim_1D_values,\n    anim_1D_indices,\n    0,\n};\n\n\nstatic const u16 anim_1D_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02B1,\n    0x0001, 0x0000, 0x0023, 0x026B, 0x0023, 0x028E,\n    0x0001, 0x0000, 0x0023, 0x0225, 0x0023, 0x0248,\n    0x0001, 0x0221, 0x0001, 0x0222, 0x0001, 0x0223,\n    0x0023, 0x008F, 0x0023, 0x00B2, 0x0023, 0x00D5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0023, 0x006C,\n    0x0023, 0x0003, 0x0023, 0x0026, 0x0023, 0x0049,\n    0x0001, 0x021D, 0x0001, 0x021E, 0x0001, 0x021F,\n    0x0023, 0x011E, 0x0023, 0x0141, 0x0023, 0x0164,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0023, 0x00FB,\n    0x0001, 0x00F8, 0x0001, 0x00F9, 0x0001, 0x00FA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0220,\n    0x0023, 0x01B4, 0x0023, 0x01D7, 0x0023, 0x01FA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0023, 0x0191,\n    0x0001, 0x018E, 0x0001, 0x018F, 0x0001, 0x0190,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0224,\n    0x0001, 0x018B, 0x0001, 0x018C, 0x0001, 0x018D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x018A,\n    0x0001, 0x0187, 0x0001, 0x0188, 0x0001, 0x0189,\n};\n\nstatic const s16 anim_1D_values[] = {\n    0x0000, 0x00B4, 0x3FFF, 0xE72B, 0xE74E, 0xE7B4, 0xE853, 0xE921,\n    0xEA17, 0xEB2C, 0xEC57, 0xED8F, 0xEECB, 0xF003, 0xF12E, 0xF243,\n    0xF339, 0xF408, 0xF4A6, 0xF50C, 0xF530, 0xF50D, 0xF4A9, 0xF40D,\n    0xF341, 0xF24F, 0xF13D, 0xF016, 0xEEE1, 0xEDA8, 0xEC72, 0xEB48,\n    0xEA33, 0xE93B, 0xE869, 0xE7C6, 0xE759, 0xE72C, 0xEF99, 0xEFAD,\n    0xEFE5, 0xF03C, 0xF0AE, 0xF136, 0xF1CE, 0xF272, 0xF31E, 0xF3CC,\n    0xF478, 0xF51D, 0xF5B5, 0xF63D, 0xF6AE, 0xF706, 0xF73E, 0xF751,\n    0xF73E, 0xF707, 0xF6B1, 0xF641, 0xF5BB, 0xF525, 0xF482, 0xF3D8,\n    0xF32C, 0xF281, 0xF1DD, 0xF145, 0xF0BC, 0xF049, 0xEFEF, 0xEFB3,\n    0xEF9A, 0xE793, 0xE78F, 0xE783, 0xE771, 0xE75A, 0xE73E, 0xE71E,\n    0xE6FC, 0xE6D9, 0xE6B5, 0xE692, 0xE670, 0xE650, 0xE634, 0xE61D,\n    0xE60B, 0xE5FF, 0xE5FB, 0xE5FF, 0xE60A, 0xE61C, 0xE633, 0xE64F,\n    0xE66E, 0xE68F, 0xE6B2, 0xE6D6, 0xE6F9, 0xE71B, 0xE73B, 0xE757,\n    0xE76F, 0xE781, 0xE78E, 0xE793, 0xCA4F, 0xCA56, 0xCA67, 0xCA83,\n    0xCAA7, 0xCAD2, 0xCB02, 0xCB36, 0xCB6D, 0xCBA4, 0xCBDA, 0xCC0E,\n    0xCC3F, 0xCC69, 0xCC8D, 0xCCA9, 0xCCBB, 0xCCC1, 0xCCBB, 0xCCAA,\n    0xCC8E, 0xCC6B, 0xCC41, 0xCC11, 0xCBDD, 0xCBA8, 0xCB71, 0xCB3B,\n    0xCB07, 0xCAD7, 0xCAAB, 0xCA87, 0xCA6A, 0xCA57, 0xCA4F, 0xFB1D,\n    0xFB1D, 0xFB1D, 0xFB1D, 0xFB12, 0xFAF3, 0xFAC3, 0xFA84, 0xFA39,\n    0xF9E4, 0xF989, 0xF929, 0xF8C7, 0xF867, 0xF80A, 0xF7B3, 0xF765,\n    0xF723, 0xF6FB, 0xF6FB, 0xF723, 0xF765, 0xF7B2, 0xF807, 0xF863,\n    0xF8C3, 0xF923, 0xF982, 0xF9DD, 0xFA31, 0xFA7D, 0xFABC, 0xFAEE,\n    0xFB0F, 0xFB1D, 0xD2DC, 0xD2DC, 0xD2DC, 0xD2DC, 0xD2FF, 0xD362,\n    0xD3FD, 0xD4C8, 0xD5BA, 0xD6CA, 0xD7F1, 0xD925, 0xDA5F, 0xDB95,\n    0xDCC0, 0xDDD8, 0xDED2, 0xDFA8, 0xE028, 0xE028, 0xDFA8, 0xDED4,\n    0xDDDD, 0xDCC9, 0xDBA2, 0xDA6F, 0xD938, 0xD807, 0xD6E2, 0xD5D2,\n    0xD4E0, 0xD413, 0xD373, 0xD309, 0xD2DD, 0xD4B4, 0xD4B4, 0xD4B4,\n    0xD4B4, 0xD4BE, 0xD4DE, 0xD50E, 0xD54D, 0xD599, 0xD5EE, 0xD64A,\n    0xD6AB, 0xD70D, 0xD76E, 0xD7CB, 0xD823, 0xD871, 0xD8B4, 0xD8DC,\n    0xD8DC, 0xD8B4, 0xD872, 0xD824, 0xD7CE, 0xD772, 0xD712, 0xD6B1,\n    0xD651, 0xD5F6, 0xD5A1, 0xD555, 0xD515, 0xD4E3, 0xD4C2, 0xD4B4,\n    0xFF3B, 0x0251, 0xE83A, 0xEAE7, 0xEB0B, 0xEB6F, 0xEC0C, 0xECD8,\n    0xEDCB, 0xEEDD, 0xF004, 0xF138, 0xF271, 0xF3A5, 0xF4CC, 0xF5DE,\n    0xF6D1, 0xF79D, 0xF83A, 0xF89E, 0xF8C2, 0xF89F, 0xF83C, 0xF7A2,\n    0xF6D9, 0xF5E9, 0xF4DB, 0xF3B7, 0xF287, 0xF151, 0xF01F, 0xEEF8,\n    0xEDE7, 0xECF2, 0xEC22, 0xEB81, 0xEB15, 0xEAE8, 0xCFA2, 0xCFA2,\n    0xCFA2, 0xCFA2, 0xCFA2, 0xCFA2, 0xCFD2, 0xD058, 0xD126, 0xD22E,\n    0xD362, 0xD4B4, 0xD615, 0xD777, 0xD8CC, 0xDA07, 0xDB18, 0xDBF2,\n    0xDC86, 0xDCCF, 0xDCCF, 0xDC85, 0xDBF2, 0xDB1A, 0xDA0D, 0xD8D7,\n    0xD787, 0xD62A, 0xD4CD, 0xD37E, 0xD24A, 0xD141, 0xD06E, 0xCFDF,\n    0xCFA3, 0x25F0, 0x25F0, 0x25F0, 0x25F0, 0x25F0, 0x25F0, 0x261C,\n    0x2698, 0x2756, 0x284A, 0x2967, 0x2A9E, 0x2BE4, 0x2D2C, 0x2E67,\n    0x2F89, 0x3085, 0x314F, 0x31D7, 0x321B, 0x321B, 0x31D7, 0x314F,\n    0x3088, 0x2F8F, 0x2E71, 0x2D3A, 0x2BF8, 0x2AB5, 0x2980, 0x2864,\n    0x276F, 0x26AC, 0x2628, 0x25F1, 0x4C4D, 0x4C4D, 0x4C4D, 0x4C4D,\n    0x4C4D, 0x4C4D, 0x4C83, 0x4D1A, 0x4E02, 0x4F2C, 0x5087, 0x5203,\n    0x5390, 0x551F, 0x569F, 0x5801, 0x5935, 0x5A2A, 0x5AD1, 0x5B24,\n    0x5B24, 0x5AD0, 0x5A2A, 0x5938, 0x5809, 0x56AC, 0x5531, 0x53A8,\n    0x521F, 0x50A5, 0x4F4B, 0x4E20, 0x4D33, 0x4C92, 0x4C4F, 0x03BA,\n    0xFE15, 0xC884, 0x15BB, 0x1E23, 0x0DF5, 0xB71E, 0xFCBE, 0x0016,\n    0xC3BB, 0x1966, 0x1965, 0x1964, 0x1962, 0x195E, 0x195A, 0x1956,\n    0x1951, 0x194C, 0x1946, 0x1940, 0x193A, 0x1934, 0x192E, 0x1928,\n    0x1922, 0x191D, 0x1918, 0x1914, 0x1910, 0x190D, 0x190B, 0x190A,\n    0x190A, 0x190B, 0x190D, 0x1910, 0x1915, 0x191B, 0x1923, 0x192D,\n    0x1938, 0x1945, 0x1955, 0x1966, 0xE9D9, 0xE9D9, 0xE9D8, 0xE9D8,\n    0xE9D7, 0xE9D7, 0xE9D6, 0xE9D5, 0xE9D4, 0xE9D3, 0xE9D1, 0xE9D0,\n    0xE9CF, 0xE9CE, 0xE9CD, 0xE9CB, 0xE9CA, 0xE9C9, 0xE9C9, 0xE9C8,\n    0xE9C7, 0xE9C7, 0xE9C7, 0xE9C7, 0xE9C7, 0xE9C7, 0xE9C8, 0xE9C9,\n    0xE9CA, 0xE9CC, 0xE9CE, 0xE9D0, 0xE9D2, 0xE9D5, 0xE9D9, 0xF588,\n    0xF588, 0xF589, 0xF58A, 0xF58B, 0xF58D, 0xF58E, 0xF591, 0xF593,\n    0xF595, 0xF598, 0xF59A, 0xF59D, 0xF5A0, 0xF5A2, 0xF5A5, 0xF5A7,\n    0xF5A9, 0xF5AB, 0xF5AC, 0xF5AE, 0xF5AE, 0xF5AF, 0xF5AF, 0xF5AF,\n    0xF5AE, 0xF5AC, 0xF5AA, 0xF5A7, 0xF5A4, 0xF5A0, 0xF59B, 0xF596,\n    0xF58F, 0xF588, 0xB546, 0xB547, 0xB548, 0xB54A, 0xB54C, 0xB54F,\n    0xB552, 0xB556, 0xB55A, 0xB55E, 0xB563, 0xB567, 0xB56C, 0xB570,\n    0xB574, 0xB579, 0xB57D, 0xB580, 0xB583, 0xB586, 0xB588, 0xB58A,\n    0xB58B, 0xB58B, 0xB58A, 0xB589, 0xB586, 0xB582, 0xB57E, 0xB578,\n    0xB571, 0xB568, 0xB55E, 0xB553, 0xB546, 0x8001, 0x8001, 0x4171,\n    0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x0000, 0x0009, 0x0023,\n    0x004D, 0x0083, 0x00C3, 0x010C, 0x015A, 0x01AB, 0x01FE, 0x0250,\n    0x029E, 0x02E6, 0x0327, 0x035D, 0x0386, 0x03A1, 0x03AA, 0x03A1,\n    0x0387, 0x035E, 0x0329, 0x02E9, 0x02A2, 0x0255, 0x0204, 0x01B2,\n    0x0161, 0x0113, 0x00CB, 0x008A, 0x0053, 0x0028, 0x000C, 0x0000,\n    0xFD9B, 0xFD9B, 0xFD9B, 0xFD9B, 0xFD9B, 0xFD9A, 0xFD9A, 0xFD9A,\n    0xFD9A, 0xFD9A, 0xFD9A, 0xFD9A, 0xFD9A, 0xFD9A, 0xFD9A, 0xFD9A,\n    0xFD9A, 0xFD9A, 0xFD9A, 0xFD9A, 0xFD9A, 0xFD9A, 0xFD9A, 0xFD9A,\n    0xFD9A, 0xFD9A, 0xFD9A, 0xFD9A, 0xFD9A, 0xFD9A, 0xFD9B, 0xFD9B,\n    0xFD9B, 0xFD9B, 0xFD9B, 0x0000, 0xFFF4, 0xFFD1, 0xFF99, 0xFF51,\n    0xFEFB, 0xFE9A, 0xFE32, 0xFDC5, 0xFD56, 0xFCEA, 0xFC81, 0xFC20,\n    0xFBCA, 0xFB82, 0xFB4B, 0xFB27, 0xFB1B, 0xFB27, 0xFB4A, 0xFB81,\n    0xFBC8, 0xFC1C, 0xFC7C, 0xFCE3, 0xFD4F, 0xFDBC, 0xFE29, 0xFE91,\n    0xFEF1, 0xFF48, 0xFF91, 0xFFCA, 0xFFF0, 0x0000, 0xFFF6, 0xFFF6,\n    0xFFF6, 0xFFF6, 0xFFF7, 0xFFF7, 0xFFF7, 0xFFF7, 0xFFF7, 0xFFF7,\n    0xFFF7, 0xFFF7, 0xFFF7, 0xFFF7, 0xFFF8, 0xFFF8, 0xFFF8, 0xFFF8,\n    0xFFF8, 0xFFF8, 0xFFF8, 0xFFF7, 0xFFF7, 0xFFF7, 0xFFF7, 0xFFF7,\n    0xFFF7, 0xFFF7, 0xFFF7, 0xFFF7, 0xFFF7, 0xFFF6, 0xFFF6, 0xFFF6,\n    0xFFF6, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_1E.inc.c",
    "content": "static const struct Animation anim_1E[] = {\n    0,\n    189,\n    0,\n    0,\n    0x1E,\n    ANIMINDEX_NUMPARTS(anim_1E_indices),\n    anim_1E_values,\n    anim_1E_indices,\n    0,\n};\n\n\nstatic const u16 anim_1E_indices[] = {\n    0x0001, 0x0000, 0x001E, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x001F, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02FC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x02DE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x02C0,\n    0x0001, 0x02BC, 0x0001, 0x02BD, 0x0001, 0x02BE,\n    0x001E, 0x007B, 0x001E, 0x0099, 0x001E, 0x00B7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x007A,\n    0x001E, 0x0020, 0x001E, 0x003E, 0x001E, 0x005C,\n    0x0001, 0x02B8, 0x0001, 0x02B9, 0x0001, 0x02BA,\n    0x001E, 0x00F6, 0x001E, 0x0114, 0x001E, 0x0132,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00F5,\n    0x001E, 0x00D5, 0x0001, 0x00F3, 0x0001, 0x00F4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02BB,\n    0x001E, 0x025E, 0x001E, 0x027C, 0x001E, 0x029A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0240,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0222,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02BF,\n    0x001E, 0x01C8, 0x001E, 0x01E6, 0x001E, 0x0204,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x01AA,\n    0x001E, 0x0150, 0x001E, 0x016E, 0x001E, 0x018C,\n};\n\nstatic const s16 anim_1E_values[] = {\n    0x0000, 0x00AA, 0x00AA, 0x00AA, 0x00A9, 0x00A9, 0x00A9, 0x00A8,\n    0x00A8, 0x00A7, 0x00A7, 0x00A6, 0x00A6, 0x00A6, 0x00A5, 0x00A5,\n    0x00A5, 0x00A6, 0x00A6, 0x00A6, 0x00A7, 0x00A7, 0x00A7, 0x00A8,\n    0x00A8, 0x00A9, 0x00A9, 0x00A9, 0x00AA, 0x00AA, 0x00AA, 0x3FFF,\n    0xF1BC, 0xF1CB, 0xF1F7, 0xF23A, 0xF290, 0xF2F4, 0xF361, 0xF3D3,\n    0xF444, 0xF4B1, 0xF515, 0xF56B, 0xF5AE, 0xF5DA, 0xF5E9, 0xF5DC,\n    0xF5B5, 0xF57A, 0xF52E, 0xF4D4, 0xF471, 0xF408, 0xF39D, 0xF334,\n    0xF2D1, 0xF277, 0xF22B, 0xF1F0, 0xF1C9, 0xF1BC, 0xF6B4, 0xF6BB,\n    0xF6D0, 0xF6EF, 0xF718, 0xF747, 0xF77B, 0xF7B1, 0xF7E6, 0xF81A,\n    0xF849, 0xF872, 0xF891, 0xF8A6, 0xF8AD, 0xF8A7, 0xF895, 0xF879,\n    0xF855, 0xF82A, 0xF7FB, 0xF7CA, 0xF797, 0xF766, 0xF737, 0xF70C,\n    0xF6E8, 0xF6CC, 0xF6BA, 0xF6B4, 0xD5DF, 0xD5DD, 0xD5D8, 0xD5D0,\n    0xD5C5, 0xD5B9, 0xD5AC, 0xD59E, 0xD590, 0xD582, 0xD576, 0xD56B,\n    0xD563, 0xD55E, 0xD55C, 0xD55E, 0xD562, 0xD56A, 0xD573, 0xD57E,\n    0xD58A, 0xD597, 0xD5A4, 0xD5B1, 0xD5BD, 0xD5C8, 0xD5D2, 0xD5D9,\n    0xD5DD, 0xD5DF, 0xD47F, 0xF6FF, 0xF6FD, 0xF6F8, 0xF6EF, 0xF6E3,\n    0xF6D6, 0xF6C7, 0xF6B8, 0xF6A9, 0xF69A, 0xF68D, 0xF681, 0xF678,\n    0xF673, 0xF671, 0xF672, 0xF678, 0xF67F, 0xF68A, 0xF696, 0xF6A3,\n    0xF6B1, 0xF6BF, 0xF6CD, 0xF6DA, 0xF6E6, 0xF6F1, 0xF6F9, 0xF6FE,\n    0xF6FF, 0xE0ED, 0xE0F6, 0xE10F, 0xE134, 0xE164, 0xE19C, 0xE1DA,\n    0xE219, 0xE259, 0xE296, 0xE2CE, 0xE2FF, 0xE324, 0xE33D, 0xE345,\n    0xE33E, 0xE328, 0xE307, 0xE2DC, 0xE2AA, 0xE272, 0xE237, 0xE1FB,\n    0xE1C1, 0xE189, 0xE157, 0xE12C, 0xE10B, 0xE0F5, 0xE0ED, 0xB794,\n    0xB790, 0xB786, 0xB776, 0xB762, 0xB74B, 0xB731, 0xB716, 0xB6FC,\n    0xB6E2, 0xB6CB, 0xB6B7, 0xB6A7, 0xB69D, 0xB699, 0xB69C, 0xB6A5,\n    0xB6B3, 0xB6C5, 0xB6DA, 0xB6F1, 0xB70A, 0xB723, 0xB73B, 0xB753,\n    0xB768, 0xB77A, 0xB788, 0xB791, 0xB794, 0x183D, 0x1843, 0x1854,\n    0x186E, 0x188F, 0x18B6, 0x18E1, 0x190D, 0x193A, 0x1964, 0x198B,\n    0x19AD, 0x19C7, 0x19D8, 0x19DE, 0x19D9, 0x19CA, 0x19B2, 0x1995,\n    0x1972, 0x194B, 0x1922, 0x18F8, 0x18D0, 0x18A9, 0x1886, 0x1868,\n    0x1851, 0x1842, 0x183D, 0x03EC, 0xCEFF, 0xD620, 0x07FA, 0x0803,\n    0x081B, 0x083F, 0x086E, 0x08A5, 0x08E1, 0x0920, 0x095E, 0x099A,\n    0x09D1, 0x0A00, 0x0A25, 0x0A3D, 0x0A45, 0x0A3E, 0x0A29, 0x0A08,\n    0x09DE, 0x09AD, 0x0977, 0x093D, 0x0902, 0x08C9, 0x0892, 0x0861,\n    0x0837, 0x0817, 0x0802, 0x07FA, 0x2C9C, 0x2C9B, 0x2C99, 0x2C94,\n    0x2C8F, 0x2C88, 0x2C81, 0x2C7A, 0x2C72, 0x2C6B, 0x2C65, 0x2C5F,\n    0x2C5B, 0x2C58, 0x2C57, 0x2C58, 0x2C5A, 0x2C5E, 0x2C63, 0x2C69,\n    0x2C6F, 0x2C76, 0x2C7D, 0x2C84, 0x2C8A, 0x2C90, 0x2C95, 0x2C99,\n    0x2C9C, 0x2C9C, 0xD465, 0xD46F, 0xD48A, 0xD4B4, 0xD4E9, 0xD526,\n    0xD56A, 0xD5B0, 0xD5F7, 0xD63A, 0xD678, 0xD6AD, 0xD6D7, 0xD6F2,\n    0xD6FB, 0xD6F3, 0xD6DB, 0xD6B6, 0xD687, 0xD650, 0xD612, 0xD5D1,\n    0xD58F, 0xD54E, 0xD511, 0xD4DA, 0xD4AA, 0xD486, 0xD46E, 0xD465,\n    0x0000, 0x0000, 0x0001, 0x0003, 0x0005, 0x0007, 0x000A, 0x000D,\n    0x0010, 0x0013, 0x0015, 0x0017, 0x0019, 0x001A, 0x001A, 0x001A,\n    0x0019, 0x0018, 0x0016, 0x0013, 0x0011, 0x000E, 0x000C, 0x0009,\n    0x0006, 0x0004, 0x0002, 0x0001, 0x0000, 0x0000, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF31, 0xFF31, 0xFF31, 0xFF31,\n    0xFF31, 0xFF31, 0xFF32, 0xFF32, 0xFF32, 0xFF32, 0xFF32, 0xFF31,\n    0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xC9D8, 0xC9C3, 0xC987, 0xC92C,\n    0xC8B7, 0xC82E, 0xC799, 0xC6FE, 0xC662, 0xC5CD, 0xC545, 0xC4D0,\n    0xC475, 0xC439, 0xC424, 0xC436, 0xC46B, 0xC4BC, 0xC524, 0xC59E,\n    0xC626, 0xC6B5, 0xC747, 0xC7D6, 0xC85D, 0xC8D8, 0xC940, 0xC991,\n    0xC9C6, 0xC9D8, 0x1E4A, 0x1E68, 0x1EBD, 0x1F40, 0x1FE7, 0x20AA,\n    0x217F, 0x225D, 0x233B, 0x240F, 0x24D2, 0x2579, 0x25FC, 0x2651,\n    0x2670, 0x2655, 0x260A, 0x2597, 0x2502, 0x2453, 0x2391, 0x22C5,\n    0x21F4, 0x2128, 0x2066, 0x1FB7, 0x1F23, 0x1EAF, 0x1E64, 0x1E4A,\n    0x1B09, 0x1B05, 0x1AF9, 0x1AE8, 0x1AD2, 0x1AB8, 0x1A9C, 0x1A7E,\n    0x1A61, 0x1A44, 0x1A2A, 0x1A14, 0x1A03, 0x19F8, 0x19F3, 0x19F7,\n    0x1A01, 0x1A10, 0x1A24, 0x1A3B, 0x1A55, 0x1A70, 0x1A8C, 0x1AA7,\n    0x1AC1, 0x1AD8, 0x1AEC, 0x1AFB, 0x1B05, 0x1B09, 0x1144, 0x114B,\n    0x115D, 0x1179, 0x119C, 0x11C5, 0x11F2, 0x1221, 0x1250, 0x127E,\n    0x12A7, 0x12CA, 0x12E6, 0x12F8, 0x12FF, 0x12F9, 0x12E9, 0x12D1,\n    0x12B1, 0x128C, 0x1263, 0x1238, 0x120B, 0x11E0, 0x11B7, 0x1192,\n    0x1172, 0x115A, 0x114A, 0x1144, 0xAC44, 0xAC3B, 0xAC20, 0xABF8,\n    0xABC4, 0xAB88, 0xAB47, 0xAB02, 0xAABE, 0xAA7C, 0xAA40, 0xAA0C,\n    0xA9E4, 0xA9CA, 0xA9C0, 0xA9C8, 0xA9DF, 0xAA03, 0xAA31, 0xAA67,\n    0xAAA3, 0xAAE2, 0xAB22, 0xAB61, 0xAB9D, 0xABD3, 0xAC01, 0xAC25,\n    0xAC3C, 0xAC44, 0xBF40, 0xBF36, 0xBF18, 0xBEEA, 0xBEB0, 0xBE6B,\n    0xBE21, 0xBDD3, 0xBD86, 0xBD3B, 0xBCF7, 0xBCBC, 0xBC8F, 0xBC71,\n    0xBC66, 0xBC6F, 0xBC8A, 0xBCB2, 0xBCE6, 0xBD23, 0xBD67, 0xBDAF,\n    0xBDF8, 0xBE3F, 0xBE83, 0xBEC0, 0xBEF4, 0xBF1D, 0xBF37, 0xBF40,\n    0x2537, 0x254A, 0x2582, 0x25D7, 0x2643, 0x26C2, 0x274C, 0x27DD,\n    0x286D, 0x28F7, 0x2976, 0x29E2, 0x2A37, 0x2A6F, 0x2A83, 0x2A71,\n    0x2A41, 0x29F6, 0x2995, 0x2923, 0x28A5, 0x2820, 0x2799, 0x2714,\n    0x2696, 0x2625, 0x25C4, 0x2579, 0x2548, 0x2537, 0xD64A, 0xD64D,\n    0xD654, 0xD660, 0xD66F, 0xD680, 0xD693, 0xD6A7, 0xD6BA, 0xD6CD,\n    0xD6DE, 0xD6ED, 0xD6F9, 0xD700, 0xD703, 0xD701, 0xD6FA, 0xD6F0,\n    0xD6E3, 0xD6D3, 0xD6C2, 0xD6B0, 0xD69D, 0xD68B, 0xD67A, 0xD66B,\n    0xD65D, 0xD653, 0xD64D, 0xD64A, 0xEC41, 0xEC39, 0xEC23, 0xEC02,\n    0xEBD7, 0xEBA6, 0xEB70, 0xEB37, 0xEAFE, 0xEAC8, 0xEA97, 0xEA6C,\n    0xEA4B, 0xEA35, 0xEA2D, 0xEA34, 0xEA47, 0xEA64, 0xEA8A, 0xEAB7,\n    0xEAE8, 0xEB1C, 0xEB52, 0xEB86, 0xEBB7, 0xEBE4, 0xEC0A, 0xEC27,\n    0xEC3A, 0xEC41, 0xB59E, 0xB599, 0xB589, 0xB572, 0xB553, 0xB530,\n    0xB509, 0xB4E1, 0xB4B9, 0xB492, 0xB46F, 0xB451, 0xB439, 0xB429,\n    0xB424, 0xB429, 0xB436, 0xB44B, 0xB466, 0xB486, 0xB4A9, 0xB4CE,\n    0xB4F4, 0xB519, 0xB53C, 0xB55C, 0xB577, 0xB58C, 0xB599, 0xB59E,\n    0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F,\n    0xEDB7, 0xEDB4, 0xEDAB, 0xED9E, 0xED8E, 0xED7A, 0xED65, 0xED4F,\n    0xED38, 0xED23, 0xED10, 0xECFF, 0xECF2, 0xECE9, 0xECE6, 0xECE9,\n    0xECF0, 0xECFC, 0xED0B, 0xED1C, 0xED30, 0xED44, 0xED59, 0xED6E,\n    0xED81, 0xED92, 0xEDA1, 0xEDAD, 0xEDB4, 0xEDB7, 0x0408, 0x040B,\n    0x0414, 0x0421, 0x0432, 0x0445, 0x045A, 0x0471, 0x0487, 0x049C,\n    0x04B0, 0x04C0, 0x04CD, 0x04D6, 0x04D9, 0x04D6, 0x04CF, 0x04C3,\n    0x04B4, 0x04A3, 0x048F, 0x047B, 0x0466, 0x0452, 0x043E, 0x042D,\n    0x041E, 0x0412, 0x040B, 0x0408, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_1F.inc.c",
    "content": "static const struct Animation anim_1F[] = {\n    1,\n    189,\n    0,\n    0,\n    0x15,\n    ANIMINDEX_NUMPARTS(anim_1F_indices),\n    anim_1F_values,\n    anim_1F_indices,\n    0,\n};\n\n\nstatic const u16 anim_1F_indices[] = {\n    0x0001, 0x0000, 0x0015, 0x0001, 0x0015, 0x0016, 0x0001, 0x0000, 0x0001, 0x002B, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01A6,\n    0x0015, 0x0167, 0x0015, 0x017C, 0x0015, 0x0191,\n    0x0015, 0x0128, 0x0015, 0x013D, 0x0015, 0x0152,\n    0x0001, 0x0124, 0x0001, 0x0125, 0x0001, 0x0126,\n    0x0015, 0x0043, 0x0015, 0x0058, 0x0015, 0x006D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0015, 0x002E,\n    0x0001, 0x0000, 0x0001, 0x002C, 0x0001, 0x002D,\n    0x0001, 0x0120, 0x0001, 0x0121, 0x0001, 0x0122,\n    0x0015, 0x00D6, 0x0015, 0x00EB, 0x0015, 0x0100,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0015, 0x00C1,\n    0x0015, 0x0082, 0x0015, 0x0097, 0x0015, 0x00AC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0123,\n    0x0001, 0x011D, 0x0001, 0x011E, 0x0001, 0x011F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x011C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x011B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0127,\n    0x0001, 0x0118, 0x0001, 0x0119, 0x0001, 0x011A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0117,\n    0x0001, 0x0000, 0x0001, 0x0115, 0x0001, 0x0116,\n};\n\nstatic const s16 anim_1F_values[] = {\n    0x0000, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA,\n    0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA,\n    0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x3FFF, 0xF97C, 0xED8C, 0xEB50, 0xEAA9,\n    0xE9A5, 0xE851, 0xE6B5, 0xE4DE, 0xE2D7, 0xE0A9, 0xDE61, 0xDC08,\n    0xD9AB, 0xD753, 0xD50C, 0xD2E1, 0xD0DD, 0xCF0A, 0xCD73, 0xCC24,\n    0xCB27, 0xCA87, 0xCA4F, 0x1B20, 0x1AF6, 0x1A5A, 0x1959, 0x17FE,\n    0x1657, 0x1470, 0x1255, 0x1014, 0x0DB8, 0x0B4F, 0x08E5, 0x0687,\n    0x0441, 0x021F, 0x002F, 0xFE7E, 0xFD16, 0xFC06, 0xFB59, 0xFB1D,\n    0xD9C6, 0xD960, 0xD8F4, 0xD884, 0xD811, 0xD79B, 0xD725, 0xD6AF,\n    0xD63A, 0xD5C8, 0xD55A, 0xD4F0, 0xD48D, 0xD431, 0xD3DE, 0xD394,\n    0xD355, 0xD322, 0xD2FC, 0xD2E4, 0xD2DC, 0xBBAD, 0xBBCC, 0xBC45,\n    0xBD0D, 0xBE1C, 0xBF66, 0xC0E3, 0xC288, 0xC44B, 0xC623, 0xC806,\n    0xC9E9, 0xCBC4, 0xCD8B, 0xCF36, 0xD0BB, 0xD20E, 0xD328, 0xD3FD,\n    0xD484, 0xD4B4, 0x0000, 0xFF68, 0xFEEF, 0xFE93, 0xFE51, 0xFE26,\n    0xFE10, 0xFE0E, 0xFE1B, 0xFE35, 0xFE5B, 0xFE89, 0xFEBD, 0xFEF4,\n    0xFF2C, 0xFF62, 0xFF95, 0xFFC0, 0xFFE2, 0xFFF8, 0x0000, 0x0000,\n    0xFF78, 0xFF0C, 0xFEBA, 0xFE7E, 0xFE58, 0xFE45, 0xFE42, 0xFE4E,\n    0xFE66, 0xFE87, 0xFEB1, 0xFEDF, 0xFF10, 0xFF42, 0xFF73, 0xFFA0,\n    0xFFC7, 0xFFE5, 0xFFF9, 0x0000, 0xF549, 0xF543, 0xF53F, 0xF53B,\n    0xF538, 0xF537, 0xF536, 0xF536, 0xF536, 0xF537, 0xF539, 0xF53B,\n    0xF53D, 0xF53F, 0xF541, 0xF543, 0xF545, 0xF547, 0xF548, 0xF549,\n    0xF549, 0xE4CB, 0xE455, 0xE389, 0xE26F, 0xE113, 0xDF7E, 0xDDBB,\n    0xDBD3, 0xD9D0, 0xD7BD, 0xD5A3, 0xD38D, 0xD184, 0xCF93, 0xCDC4,\n    0xCC20, 0xCAB2, 0xC984, 0xC8A0, 0xC810, 0xC7DD, 0x03C0, 0x05C4,\n    0x0764, 0x08A8, 0x0998, 0x0A3C, 0x0A9D, 0x0AC0, 0x0AB0, 0x0A74,\n    0x0A13, 0x0995, 0x0904, 0x0865, 0x07C2, 0x0722, 0x068E, 0x060D,\n    0x05A7, 0x0564, 0x054B, 0x221E, 0x2207, 0x221B, 0x2254, 0x22AE,\n    0x2324, 0x23B3, 0x2456, 0x2508, 0x25C6, 0x268A, 0x2750, 0x2814,\n    0x28D2, 0x2984, 0x2A27, 0x2AB7, 0x2B2E, 0x2B88, 0x2BC2, 0x2BD6,\n    0xCB16, 0xCDDA, 0xD015, 0xD1D1, 0xD319, 0xD3F7, 0xD477, 0xD4A5,\n    0xD48A, 0xD432, 0xD3A8, 0xD2F7, 0xD22A, 0xD14B, 0xD067, 0xCF88,\n    0xCEB8, 0xCE04, 0xCD75, 0xCD17, 0xCCF6, 0xFF30, 0xC9D8, 0x1E4A,\n    0x1B09, 0x1144, 0xAC44, 0xBF40, 0x2537, 0xD64A, 0xEC41, 0xB59E,\n    0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F,\n    0x0000, 0x0035, 0x0060, 0x0080, 0x0098, 0x00A7, 0x00AE, 0x00AF,\n    0x00AB, 0x00A1, 0x0094, 0x0084, 0x0072, 0x005E, 0x004A, 0x0037,\n    0x0026, 0x0016, 0x000A, 0x0002, 0x0000, 0x0000, 0xFFCC, 0xFFA2,\n    0xFF82, 0xFF6C, 0xFF5D, 0xFF56, 0xFF55, 0xFF59, 0xFF62, 0xFF6F,\n    0xFF7F, 0xFF91, 0xFFA4, 0xFFB7, 0xFFCA, 0xFFDB, 0xFFEA, 0xFFF6,\n    0xFFFE, 0x0000, 0xF9E4, 0xFA1F, 0xFA58, 0xFA8D, 0xFAC1, 0xFAF1,\n    0xFB1F, 0xFB4A, 0xFB72, 0xFB97, 0xFBBA, 0xFBD9, 0xFBF5, 0xFC0E,\n    0xFC24, 0xFC37, 0xFC46, 0xFC52, 0xFC5B, 0xFC60, 0xFC62, 0x0000,\n    0xFFCF, 0xFFA7, 0xFF89, 0xFF73, 0xFF65, 0xFF5E, 0xFF5D, 0xFF61,\n    0xFF6A, 0xFF76, 0xFF85, 0xFF96, 0xFFA9, 0xFFBB, 0xFFCD, 0xFFDD,\n    0xFFEB, 0xFFF7, 0xFFFE, 0x0000, 0x0000, 0x003A, 0x0068, 0x008B,\n    0x00A4, 0x00B4, 0x00BD, 0x00BE, 0x00B9, 0x00AF, 0x00A0, 0x008F,\n    0x007B, 0x0066, 0x0051, 0x003C, 0x0029, 0x0018, 0x000B, 0x0003,\n    0x0000, 0xF70A, 0xF796, 0xF848, 0xF91C, 0xFA0C, 0xFB14, 0xFC2F,\n    0xFD57, 0xFE88, 0xFFBD, 0x00F0, 0x021E, 0x0341, 0x0455, 0x0553,\n    0x0638, 0x06FE, 0x07A1, 0x081C, 0x0869, 0x0884, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_20.inc.c",
    "content": "static const struct Animation anim_20[] = {\n    1,\n    189,\n    0,\n    0,\n    0x60,\n    ANIMINDEX_NUMPARTS(anim_20_indices),\n    anim_20_values,\n    anim_20_indices,\n    0,\n};\n\n\nstatic const u16 anim_20_indices[] = {\n    0x0001, 0x0000, 0x0060, 0x0001, 0x0060, 0x0061, 0x0001, 0x0000, 0x0001, 0x00C1, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0060, 0x0D8A,\n    0x0060, 0x0C6A, 0x0060, 0x0CCA, 0x0060, 0x0D2A,\n    0x0060, 0x0B4A, 0x0060, 0x0BAA, 0x0060, 0x0C0A,\n    0x0001, 0x0B46, 0x0001, 0x0B47, 0x0001, 0x0B48,\n    0x0060, 0x0242, 0x0060, 0x02A2, 0x0060, 0x0302,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0060, 0x01E2,\n    0x0060, 0x00C2, 0x0060, 0x0122, 0x0060, 0x0182,\n    0x0001, 0x0B42, 0x0001, 0x0B43, 0x0001, 0x0B44,\n    0x0060, 0x04E2, 0x0060, 0x0542, 0x0060, 0x05A2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0060, 0x0482,\n    0x0060, 0x0362, 0x0060, 0x03C2, 0x0060, 0x0422,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0B45,\n    0x0060, 0x0A22, 0x0060, 0x0A82, 0x0060, 0x0AE2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0060, 0x09C2,\n    0x0060, 0x08A2, 0x0060, 0x0902, 0x0060, 0x0962,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0B49,\n    0x0060, 0x0782, 0x0060, 0x07E2, 0x0060, 0x0842,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0060, 0x0722,\n    0x0060, 0x0602, 0x0060, 0x0662, 0x0060, 0x06C2,\n};\n\nstatic const s16 anim_20_values[] = {\n    0x0000, 0x00AA, 0x00A9, 0x00A8, 0x00A7, 0x00A5, 0x00A2, 0x00A0,\n    0x009E, 0x009C, 0x009A, 0x0099, 0x0099, 0x0099, 0x009A, 0x009C,\n    0x009D, 0x009F, 0x00A1, 0x00A4, 0x00A6, 0x00A8, 0x00A9, 0x00AB,\n    0x00AB, 0x00AC, 0x00AB, 0x00AA, 0x00A8, 0x00A6, 0x00A4, 0x00A1,\n    0x009F, 0x009C, 0x009A, 0x0099, 0x0098, 0x0097, 0x0098, 0x0099,\n    0x009A, 0x009C, 0x009F, 0x00A1, 0x00A4, 0x00A6, 0x00A8, 0x00AA,\n    0x00AB, 0x00AC, 0x00AB, 0x00AA, 0x00A9, 0x00A7, 0x00A5, 0x00A3,\n    0x00A0, 0x009E, 0x009C, 0x009A, 0x0098, 0x0097, 0x0097, 0x0097,\n    0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009E, 0x009F, 0x00A1,\n    0x00A2, 0x00A4, 0x00A6, 0x00A7, 0x00A8, 0x00AA, 0x00AB, 0x00AB,\n    0x00AC, 0x00AC, 0x00AD, 0x00AD, 0x00AD, 0x00AD, 0x00AD, 0x00AD,\n    0x00AD, 0x00AD, 0x00AC, 0x00AC, 0x00AC, 0x00AC, 0x00AC, 0x00AC,\n    0x00AC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0002,\n    0x0002, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0002,\n    0x0002, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF,\n    0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0001,\n    0x0001, 0x0002, 0x0002, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0002, 0x0002, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0xFFFF,\n    0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0001, 0x0002, 0x0002, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0002, 0x0002, 0x0002, 0x0001, 0x0001,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF,\n    0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE,\n    0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n    0xFFFF, 0x3FFF, 0x0000, 0x0005, 0x0015, 0x002D, 0x004B, 0x006C,\n    0x008E, 0x00AF, 0x00CD, 0x00E5, 0x00F5, 0x00FB, 0x00F7, 0x00EB,\n    0x00D9, 0x00C2, 0x00A8, 0x008C, 0x006F, 0x0053, 0x0038, 0x0022,\n    0x0010, 0x0004, 0x0000, 0x0004, 0x0012, 0x0027, 0x0041, 0x005E,\n    0x007D, 0x009C, 0x00BA, 0x00D4, 0x00E8, 0x00F6, 0x00FB, 0x00F6,\n    0x00E8, 0x00D4, 0x00BA, 0x009C, 0x007D, 0x005E, 0x0041, 0x0027,\n    0x0012, 0x0004, 0x0000, 0x000B, 0x002B, 0x005A, 0x0093, 0x00D1,\n    0x010E, 0x0146, 0x0173, 0x018F, 0x0197, 0x0184, 0x0152, 0x00FB,\n    0x0052, 0xFF42, 0xFDE4, 0xFC55, 0xFAB4, 0xF91A, 0xF7A6, 0xF61D,\n    0xF484, 0xF34F, 0xF264, 0xF16C, 0xF081, 0xEFBB, 0xEF35, 0xEF08,\n    0xEF4F, 0xEFF4, 0xF0C9, 0xF1C7, 0xF2E7, 0xF421, 0xF56D, 0xF6C5,\n    0xF81F, 0xF976, 0xFAC0, 0xFBF7, 0xFD13, 0xFE0D, 0xFEDC, 0xFF79,\n    0xFFDD, 0x0000, 0xF97C, 0xF97C, 0xF97D, 0xF97F, 0xF981, 0xF984,\n    0xF986, 0xF989, 0xF98B, 0xF98D, 0xF98E, 0xF98F, 0xF98E, 0xF98D,\n    0xF98C, 0xF98A, 0xF988, 0xF986, 0xF984, 0xF982, 0xF980, 0xF97E,\n    0xF97D, 0xF97C, 0xF97C, 0xF97C, 0xF97D, 0xF97F, 0xF981, 0xF983,\n    0xF985, 0xF987, 0xF98A, 0xF98C, 0xF98D, 0xF98E, 0xF98F, 0xF98E,\n    0xF98D, 0xF98C, 0xF98A, 0xF987, 0xF985, 0xF983, 0xF981, 0xF97F,\n    0xF97D, 0xF97C, 0xF97C, 0xF97C, 0xF97D, 0xF97E, 0xF97F, 0xF981,\n    0xF983, 0xF985, 0xF987, 0xF989, 0xF98B, 0xF98D, 0xF98E, 0xF98F,\n    0xF98F, 0xF98E, 0xF98D, 0xF98C, 0xF98A, 0xF988, 0xF987, 0xF985,\n    0xF984, 0xF982, 0xF981, 0xF980, 0xF97F, 0xF97E, 0xF97D, 0xF97C,\n    0xF97C, 0xF97C, 0xF97B, 0xF97B, 0xF97B, 0xF97B, 0xF97B, 0xF97B,\n    0xF97B, 0xF97B, 0xF97B, 0xF97B, 0xF97B, 0xF97C, 0xF97C, 0xF97C,\n    0xF97C, 0xF97C, 0xED8C, 0xED67, 0xED01, 0xEC6A, 0xEBAF, 0xEADF,\n    0xEA08, 0xE937, 0xE87C, 0xE7E5, 0xE780, 0xE75B, 0xE776, 0xE7C0,\n    0xE831, 0xE8C1, 0xE966, 0xEA18, 0xEACF, 0xEB81, 0xEC26, 0xECB5,\n    0xED27, 0xED71, 0xED8C, 0xED6C, 0xED16, 0xEC94, 0xEBF1, 0xEB38,\n    0xEA73, 0xE9AF, 0xE8F6, 0xE853, 0xE7D0, 0xE77A, 0xE75B, 0xE77A,\n    0xE7D0, 0xE853, 0xE8F6, 0xE9AF, 0xEA73, 0xEB38, 0xEBF1, 0xEC94,\n    0xED16, 0xED6C, 0xED8C, 0xED74, 0xED33, 0xECCF, 0xEC4E, 0xEBB9,\n    0xEB15, 0xEA6A, 0xE9BF, 0xE91B, 0xE885, 0xE804, 0xE79E, 0xE75B,\n    0xE74F, 0xE781, 0xE7DE, 0xE859, 0xE8E2, 0xE968, 0xE9DC, 0xEA59,\n    0xEAEA, 0xEB63, 0xEBC3, 0xEC24, 0xEC80, 0xECD5, 0xED1D, 0xED54,\n    0xED77, 0xED8C, 0xED9C, 0xEDA8, 0xEDB1, 0xEDB5, 0xEDB8, 0xEDB7,\n    0xEDB5, 0xEDB1, 0xEDAC, 0xEDA6, 0xEDA0, 0xED99, 0xED94, 0xED90,\n    0xED8D, 0xED8C, 0xCA4F, 0xCA96, 0xCB5A, 0xCC82, 0xCDF7, 0xCFA1,\n    0xD166, 0xD32F, 0xD4E3, 0xD66B, 0xD7AD, 0xD892, 0xD93D, 0xD9DF,\n    0xDA75, 0xDAFC, 0xDB6F, 0xDBCB, 0xDC0D, 0xDC30, 0xDC32, 0xDC0D,\n    0xDBC0, 0xDB46, 0xDA9B, 0xD990, 0xD80A, 0xD623, 0xD3F7, 0xD19F,\n    0xCF39, 0xCCDD, 0xCAA8, 0xC8B3, 0xC71B, 0xC5FB, 0xC56C, 0xC587,\n    0xC63D, 0xC770, 0xC903, 0xCAD7, 0xCCCE, 0xCECA, 0xD0AD, 0xD25A,\n    0xD3B1, 0xD494, 0xD4E7, 0xD4A0, 0xD3DC, 0xD2B2, 0xD139, 0xCF89,\n    0xCDBA, 0xCBE4, 0xCA1E, 0xC87F, 0xC720, 0xC618, 0xC57F, 0xC56C,\n    0xC69A, 0xC951, 0xCCF9, 0xD0FC, 0xD4C4, 0xD7B9, 0xD945, 0xD5DE,\n    0xCF14, 0xCBF6, 0xCDF2, 0xD162, 0xD5AD, 0xDA3D, 0xDE7B, 0xE1CF,\n    0xE3A2, 0xE462, 0xE4E3, 0xE52D, 0xE547, 0xE536, 0xE501, 0xE4AE,\n    0xE445, 0xE3CB, 0xE348, 0xE2C1, 0xE23C, 0xE1C2, 0xE157, 0xE103,\n    0xE0CC, 0xE0B8, 0xFB1D, 0xFB27, 0xFB42, 0xFB68, 0xFB92, 0xFBBA,\n    0xFBDA, 0xFBED, 0xFBEB, 0xFBCE, 0xFB91, 0xFB2E, 0xFA9E, 0xF9E7,\n    0xF90E, 0xF81C, 0xF718, 0xF608, 0xF4F5, 0xF3E5, 0xF2E0, 0xF1EC,\n    0xF112, 0xF058, 0xEFC5, 0xEF50, 0xEEE9, 0xEE92, 0xEE4C, 0xEE19,\n    0xEDF8, 0xEDEC, 0xEDF5, 0xEE16, 0xEE4E, 0xEE9F, 0xEF0B, 0xEFAD,\n    0xF098, 0xF1BA, 0xF303, 0xF463, 0xF5C9, 0xF726, 0xF867, 0xF97E,\n    0xFA5A, 0xFAE9, 0xFB1D, 0xFAD9, 0xFA1D, 0xF903, 0xF7A3, 0xF616,\n    0xF475, 0xF2D9, 0xF15A, 0xF013, 0xEF1B, 0xEE8C, 0xEE7E, 0xEF0B,\n    0xF123, 0xF52B, 0xFA68, 0x001D, 0x0590, 0x0A07, 0x0CC4, 0x0A50,\n    0x03DA, 0xFFAB, 0xFF35, 0xFF8F, 0x006F, 0x018B, 0x0298, 0x034C,\n    0x035D, 0x02EE, 0x025B, 0x01A8, 0x00DB, 0xFFFB, 0xFF0B, 0xFE13,\n    0xFD17, 0xFC1E, 0xFB2D, 0xFA4A, 0xF97A, 0xF8C3, 0xF82B, 0xF7B8,\n    0xF76E, 0xF755, 0xD2DC, 0xD31D, 0xD3CF, 0xD4D9, 0xD622, 0xD793,\n    0xD911, 0xDA84, 0xDBD4, 0xDCE7, 0xDDA6, 0xDDF6, 0xDDDA, 0xDD6F,\n    0xDCC3, 0xDBE4, 0xDAE1, 0xD9C9, 0xD8A8, 0xD78F, 0xD68B, 0xD5AB,\n    0xD4FD, 0xD490, 0xD472, 0xD4B5, 0xD558, 0xD646, 0xD76C, 0xD8B6,\n    0xDA11, 0xDB69, 0xDCAC, 0xDDC5, 0xDEA1, 0xDF2C, 0xDF54, 0xDF07,\n    0xDE50, 0xDD44, 0xDBFA, 0xDA86, 0xD8FE, 0xD778, 0xD608, 0xD4C5,\n    0xD3C4, 0xD31A, 0xD2DC, 0xD30F, 0xD39E, 0xD477, 0xD58D, 0xD6CD,\n    0xD828, 0xD98E, 0xDAEF, 0xDC3B, 0xDD61, 0xDE52, 0xDEFE, 0xDF54,\n    0xDF10, 0xDE1C, 0xDCA9, 0xDAE9, 0xD90D, 0xD747, 0xD5CA, 0xD40A,\n    0xD25D, 0xD247, 0xD3EC, 0xD63A, 0xD8E9, 0xDBAE, 0xDE3F, 0xE054,\n    0xE1A3, 0xE268, 0xE314, 0xE3A7, 0xE425, 0xE48E, 0xE4E4, 0xE52A,\n    0xE560, 0xE58A, 0xE5A7, 0xE5BB, 0xE5C7, 0xE5CD, 0xE5CE, 0xE5CD,\n    0xE5CB, 0xE5CA, 0xD4B4, 0xD4AC, 0xD497, 0xD47D, 0xD460, 0xD449,\n    0xD43A, 0xD43B, 0xD451, 0xD480, 0xD4CF, 0xD543, 0xD5E0, 0xD6A2,\n    0xD783, 0xD87D, 0xD989, 0xDAA0, 0xDBBD, 0xDCD9, 0xDDEE, 0xDEF6,\n    0xDFE9, 0xE0C2, 0xE17B, 0xE225, 0xE2D3, 0xE37F, 0xE424, 0xE4BB,\n    0xE53F, 0xE5AA, 0xE5F6, 0xE61D, 0xE619, 0xE5E4, 0xE579, 0xE4B2,\n    0xE37E, 0xE1F4, 0xE02E, 0xDE42, 0xDC4A, 0xDA5D, 0xD894, 0xD706,\n    0xD5CC, 0xD4FE, 0xD4B4, 0xD506, 0xD5EB, 0xD746, 0xD8FA, 0xDAEA,\n    0xDCFA, 0xDF0D, 0xE107, 0xE2CA, 0xE43A, 0xE53A, 0xE5AE, 0xE579,\n    0xE3A2, 0xDFC7, 0xDAAD, 0xD519, 0xCFD0, 0xCB99, 0xC937, 0xCCC6,\n    0xD4B2, 0xD93B, 0xD8AF, 0xD6D9, 0xD439, 0xD14E, 0xCE97, 0xCC93,\n    0xCBC1, 0xCBD4, 0xCC23, 0xCCA7, 0xCD56, 0xCE2B, 0xCF1B, 0xD020,\n    0xD132, 0xD249, 0xD35D, 0xD465, 0xD55B, 0xD635, 0xD6ED, 0xD77A,\n    0xD7D5, 0xD7F4, 0x0000, 0x0004, 0x000F, 0x001F, 0x0030, 0x0040,\n    0x004D, 0x0054, 0x0052, 0x0045, 0x002B, 0x0000, 0xFFBF, 0xFF66,\n    0xFEFB, 0xFE82, 0xFE01, 0xFD7C, 0xFCF9, 0xFC7C, 0xFC0B, 0xFBAA,\n    0xFB5F, 0xFB2E, 0xFB1D, 0xFB32, 0xFB6B, 0xFBC3, 0xFC33, 0xFCB4,\n    0xFD40, 0xFDD1, 0xFE5F, 0xFEE5, 0xFF5B, 0xFFBC, 0x0000, 0x002B,\n    0x0048, 0x0057, 0x005C, 0x0058, 0x004E, 0x003F, 0x002E, 0x001D,\n    0x000E, 0x0003, 0x0000, 0xFFF5, 0xFFD8, 0xFFAD, 0xFF7B, 0xFF47,\n    0xFF17, 0xFEF0, 0xFED8, 0xFED4, 0xFEEB, 0xFF20, 0xFF7B, 0x0000,\n    0x00E8, 0x0251, 0x0419, 0x061D, 0x083B, 0x0A51, 0x0C3B, 0x0E41,\n    0x1068, 0x1224, 0x1377, 0x14B8, 0x15E4, 0x16F5, 0x17EA, 0x18BC,\n    0x1969, 0x1A02, 0x1A9B, 0x1B31, 0x1BC5, 0x1C55, 0x1CE1, 0x1D65,\n    0x1DE3, 0x1E58, 0x1EC4, 0x1F25, 0x1F7A, 0x1FC2, 0x1FFC, 0x2027,\n    0x2041, 0x204A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xFFFD, 0xFFF2, 0xFFE3, 0xFFD2, 0xFFC0,\n    0xFFAF, 0xFFA1, 0xFF99, 0xFF97, 0xFF9F, 0xFFB2, 0xFFD2, 0x0000,\n    0x0051, 0x00CF, 0x016F, 0x0223, 0x02E1, 0x039C, 0x0447, 0x04FC,\n    0x05BC, 0x0656, 0x06B3, 0x06EA, 0x0712, 0x0740, 0x078B, 0x0809,\n    0x08D0, 0x09DB, 0x0B10, 0x0C67, 0x0DD9, 0x0F5E, 0x10EF, 0x1284,\n    0x1417, 0x159E, 0x1714, 0x1870, 0x19AB, 0x1ABE, 0x1BA0, 0x1C4C,\n    0x1CB8, 0x1CDD, 0xF549, 0xF4F7, 0xF414, 0xF2C2, 0xF120, 0xEF4D,\n    0xED6B, 0xEB99, 0xE9F6, 0xE8A4, 0xE7C2, 0xE76F, 0xE7AB, 0xE851,\n    0xE94E, 0xEA90, 0xEC01, 0xED90, 0xEF28, 0xF0B7, 0xF229, 0xF36A,\n    0xF467, 0xF50E, 0xF549, 0xF504, 0xF443, 0xF31F, 0xF1B2, 0xF013,\n    0xEE5C, 0xECA5, 0xEB06, 0xE999, 0xE876, 0xE7B5, 0xE76F, 0xE7B5,\n    0xE876, 0xE999, 0xEB06, 0xECA5, 0xEE5C, 0xF013, 0xF1B2, 0xF31F,\n    0xF443, 0xF504, 0xF549, 0xF513, 0xF47B, 0xF392, 0xF269, 0xF110,\n    0xEF98, 0xEE13, 0xEC90, 0xEB20, 0xE9D4, 0xE8BD, 0xE7EB, 0xE76F,\n    0xE782, 0xE836, 0xE960, 0xEAD8, 0xEC72, 0xEE06, 0xEF69, 0xF0E8,\n    0xF298, 0xF402, 0xF528, 0xF656, 0xF77A, 0xF881, 0xF95B, 0xF9F6,\n    0xFA40, 0xFA4F, 0xFA46, 0xFA29, 0xF9FB, 0xF9BE, 0xF976, 0xF924,\n    0xF8CD, 0xF872, 0xF818, 0xF7C0, 0xF76D, 0xF724, 0xF6E5, 0xF6B5,\n    0xF696, 0xF68B, 0xC7DD, 0xC832, 0xC91C, 0xCA80, 0xCC43, 0xCE49,\n    0xD075, 0xD2AC, 0xD4D2, 0xD6CC, 0xD87E, 0xD9CB, 0xDAE2, 0xDBFE,\n    0xDD18, 0xDE29, 0xDF2A, 0xE013, 0xE0DD, 0xE182, 0xE1FA, 0xE23E,\n    0xE246, 0xE20C, 0xE188, 0xE080, 0xDED5, 0xDCA9, 0xDA21, 0xD75E,\n    0xD483, 0xD1B4, 0xCF13, 0xCCC3, 0xCAE7, 0xC9A2, 0xC916, 0xC964,\n    0xCA78, 0xCC2B, 0xCE57, 0xD0D3, 0xD37A, 0xD624, 0xD8A9, 0xDAE3,\n    0xDCAB, 0xDDD9, 0xDE46, 0xDDF5, 0xDD13, 0xDBB8, 0xD9FC, 0xD7F7,\n    0xD5C3, 0xD377, 0xD12C, 0xCEFA, 0xCCFA, 0xCB44, 0xC9F0, 0xC916,\n    0xC92C, 0xCA54, 0xCC2B, 0xCE50, 0xD060, 0xD1F8, 0xD2B7, 0xD0AB,\n    0xCCCA, 0xCB0D, 0xCC4C, 0xCE73, 0xD120, 0xD3EC, 0xD672, 0xD84F,\n    0xD91C, 0xD8D7, 0xD7DE, 0xD661, 0xD492, 0xD2A1, 0xD0BD, 0xCF18,\n    0xCDE2, 0xCD4C, 0xCD7B, 0xCE54, 0xCF9F, 0xD128, 0xD2B7, 0xD417,\n    0xD512, 0xD572, 0x054B, 0x0580, 0x0611, 0x06ED, 0x0804, 0x0945,\n    0x0A9E, 0x0BFD, 0x0D53, 0x0E8D, 0x0F9A, 0x106A, 0x110F, 0x11A7,\n    0x1234, 0x12B5, 0x132B, 0x1395, 0x13F4, 0x1449, 0x1493, 0x14D2,\n    0x1508, 0x1533, 0x1555, 0x1564, 0x155A, 0x153C, 0x150D, 0x14D2,\n    0x148F, 0x1448, 0x1401, 0x13BF, 0x1387, 0x135B, 0x1340, 0x1335,\n    0x1333, 0x133A, 0x1346, 0x1357, 0x136C, 0x1381, 0x1397, 0x13AA,\n    0x13BA, 0x13C5, 0x13C9, 0x13CC, 0x13D5, 0x13E2, 0x13EF, 0x13FC,\n    0x1405, 0x140A, 0x1407, 0x13FA, 0x13E2, 0x13BD, 0x1387, 0x1340,\n    0x12C4, 0x1203, 0x1114, 0x1010, 0x0F0F, 0x0E29, 0x0D75, 0x0D78,\n    0x0DDD, 0x0D77, 0x0CA7, 0x0C49, 0x0BEF, 0x0B28, 0x0986, 0x0699,\n    0x01F2, 0xFB69, 0xF366, 0xEA51, 0xE091, 0xD68F, 0xCCB3, 0xC365,\n    0xBB0C, 0xB410, 0xAE29, 0xA8D3, 0xA41F, 0xA01F, 0x9CE4, 0x9A80,\n    0x9904, 0x9881, 0x2BD6, 0x2BA4, 0x2B16, 0x2A3F, 0x292D, 0x27F1,\n    0x269B, 0x253B, 0x23E2, 0x229F, 0x2183, 0x209E, 0x1FD4, 0x1F01,\n    0x1E2C, 0x1D59, 0x1C8C, 0x1BCB, 0x1B1B, 0x1A80, 0x1A00, 0x19A0,\n    0x1964, 0x1952, 0x196E, 0x19D3, 0x1A8E, 0x1B8D, 0x1CC1, 0x1E17,\n    0x1F80, 0x20EB, 0x2246, 0x2381, 0x248B, 0x2553, 0x25C9, 0x25E9,\n    0x25C0, 0x255E, 0x24CF, 0x241F, 0x235C, 0x2294, 0x21D3, 0x2125,\n    0x2099, 0x203C, 0x201A, 0x2033, 0x207A, 0x20E5, 0x216D, 0x2209,\n    0x22B1, 0x235C, 0x2401, 0x2499, 0x251B, 0x257F, 0x25BC, 0x25C9,\n    0x2567, 0x247B, 0x233C, 0x21DE, 0x2096, 0x1F99, 0x1F1C, 0x2069,\n    0x22ED, 0x2412, 0x231B, 0x214D, 0x1F1A, 0x1CF3, 0x1B4A, 0x1A91,\n    0x1B38, 0x1D5C, 0x2099, 0x249D, 0x291A, 0x2DBE, 0x323A, 0x363D,\n    0x3977, 0x3B97, 0x3C6A, 0x3C21, 0x3B0E, 0x397C, 0x37BC, 0x361A,\n    0x34E7, 0x346E, 0xCCF6, 0xCD4A, 0xCE31, 0xCF8F, 0xD145, 0xD335,\n    0xD541, 0xD74C, 0xD937, 0xDAE5, 0xDC39, 0xDD13, 0xDD84, 0xDDB7,\n    0xDDB6, 0xDD8A, 0xDD3D, 0xDCD9, 0xDC68, 0xDBF4, 0xDB85, 0xDB27,\n    0xDAE2, 0xDAC1, 0xDACD, 0xDB0F, 0xDB82, 0xDC1A, 0xDCCC, 0xDD8D,\n    0xDE52, 0xDF10, 0xDFBA, 0xE047, 0xE0AB, 0xE0DB, 0xE0CB, 0xE06A,\n    0xDFB8, 0xDEC5, 0xDDA4, 0xDC65, 0xDB19, 0xD9D2, 0xD8A0, 0xD794,\n    0xD6BF, 0xD633, 0xD601, 0xD62C, 0xD6A3, 0xD75A, 0xD844, 0xD952,\n    0xDA78, 0xDBA9, 0xDCD8, 0xDDF6, 0xDEF8, 0xDFD0, 0xE070, 0xE0CB,\n    0xE0A9, 0xDFF6, 0xDEDF, 0xDD92, 0xDC3B, 0xDB07, 0xDA23, 0xDA2C,\n    0xDA9C, 0xD9ED, 0xD8A3, 0xD7EA, 0xD731, 0xD5E8, 0xD37E, 0xCF63,\n    0xC906, 0xC037, 0xB581, 0xA967, 0x9C6E, 0x8F1B, 0x81F2, 0x7576,\n    0x6A31, 0x60A4, 0x5858, 0x509B, 0x4997, 0x4378, 0x3E6A, 0x3A98,\n    0x382D, 0x3755, 0x0000, 0x000A, 0x0028, 0x0054, 0x008B, 0x00C8,\n    0x0108, 0x0145, 0x017C, 0x01A8, 0x01C6, 0x01D1, 0x01C9, 0x01B3,\n    0x0192, 0x0168, 0x0137, 0x0103, 0x00CD, 0x0099, 0x0068, 0x003E,\n    0x001D, 0x0007, 0x0000, 0x0009, 0x0022, 0x0048, 0x0078, 0x00AE,\n    0x00E8, 0x0122, 0x0158, 0x0188, 0x01AE, 0x01C7, 0x01D1, 0x01C7,\n    0x01AE, 0x0188, 0x0158, 0x0122, 0x00E8, 0x00AE, 0x0078, 0x0048,\n    0x0022, 0x0009, 0x0000, 0x0007, 0x001D, 0x003E, 0x0068, 0x0099,\n    0x00CD, 0x0102, 0x0137, 0x0167, 0x0191, 0x01B3, 0x01C9, 0x01D1,\n    0x01CD, 0x01C2, 0x01B1, 0x019B, 0x017F, 0x0161, 0x013F, 0x011B,\n    0x00F6, 0x00D0, 0x00AB, 0x0088, 0x0066, 0x0047, 0x002C, 0x0016,\n    0x0005, 0xFFFA, 0xFFF1, 0xFFEA, 0xFFE5, 0xFFE3, 0xFFE2, 0xFFE3,\n    0xFFE5, 0xFFE8, 0xFFEB, 0xFFEF, 0xFFF3, 0xFFF7, 0xFFFB, 0xFFFE,\n    0x0000, 0x0000, 0xFF30, 0xFF33, 0xFF3C, 0xFF49, 0xFF59, 0xFF6B,\n    0xFF7D, 0xFF8F, 0xFF9F, 0xFFAC, 0xFFB5, 0xFFB8, 0xFFB6, 0xFFB0,\n    0xFFA6, 0xFF99, 0xFF8B, 0xFF7C, 0xFF6C, 0xFF5D, 0xFF4F, 0xFF42,\n    0xFF39, 0xFF32, 0xFF30, 0xFF33, 0xFF3A, 0xFF45, 0xFF53, 0xFF63,\n    0xFF74, 0xFF85, 0xFF95, 0xFFA3, 0xFFAE, 0xFFB6, 0xFFB8, 0xFFB6,\n    0xFFAE, 0xFFA3, 0xFF95, 0xFF85, 0xFF74, 0xFF63, 0xFF53, 0xFF45,\n    0xFF3A, 0xFF33, 0xFF30, 0xFF32, 0xFF39, 0xFF42, 0xFF4F, 0xFF5D,\n    0xFF6C, 0xFF7C, 0xFF8B, 0xFF99, 0xFFA6, 0xFFAF, 0xFFB6, 0xFFB8,\n    0xFFB7, 0xFFB4, 0xFFAF, 0xFFA8, 0xFFA0, 0xFF97, 0xFF8E, 0xFF83,\n    0xFF78, 0xFF6D, 0xFF62, 0xFF58, 0xFF4E, 0xFF45, 0xFF3D, 0xFF37,\n    0xFF32, 0xFF2E, 0xFF2B, 0xFF29, 0xFF28, 0xFF27, 0xFF27, 0xFF27,\n    0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F,\n    0xFF30, 0xFF30, 0xC9D8, 0xC98A, 0xC8B5, 0xC777, 0xC5EE, 0xC437,\n    0xC272, 0xC0BB, 0xBF32, 0xBDF4, 0xBD1F, 0xBCD1, 0xBD09, 0xBDA6,\n    0xBE94, 0xBFC2, 0xC11E, 0xC295, 0xC415, 0xC58C, 0xC6E7, 0xC815,\n    0xC904, 0xC9A0, 0xC9D8, 0xC996, 0xC8E1, 0xC7CF, 0xC677, 0xC4F2,\n    0xC355, 0xC1B8, 0xC032, 0xBEDA, 0xBDC8, 0xBD13, 0xBCD1, 0xBD13,\n    0xBDC8, 0xBEDA, 0xC032, 0xC1B8, 0xC355, 0xC4F2, 0xC677, 0xC7CF,\n    0xC8E1, 0xC996, 0xC9D8, 0xC9A0, 0xC904, 0xC816, 0xC6E8, 0xC58D,\n    0xC417, 0xC297, 0xC120, 0xBFC5, 0xBE96, 0xBDA8, 0xBD0A, 0xBCD1,\n    0xBCEB, 0xBD38, 0xBDB3, 0xBE54, 0xBF16, 0xBFF3, 0xC0E6, 0xC1E7,\n    0xC2F1, 0xC3FE, 0xC507, 0xC608, 0xC6F9, 0xC7D5, 0xC896, 0xC935,\n    0xC9AE, 0xCA05, 0xCA49, 0xCA7A, 0xCA9A, 0xCAAC, 0xCAB1, 0xCAAC,\n    0xCA9E, 0xCA89, 0xCA70, 0xCA53, 0xCA36, 0xCA19, 0xCA00, 0xC9EB,\n    0xC9DD, 0xC9D8, 0x1E4A, 0x1ECD, 0x2034, 0x224E, 0x24E6, 0x27CB,\n    0x2AC9, 0x2DAD, 0x3046, 0x325F, 0x33C7, 0x344A, 0x33EB, 0x32E3,\n    0x3150, 0x2F52, 0x2D07, 0x2A8E, 0x2805, 0x258C, 0x2341, 0x2143,\n    0x1FB0, 0x1EA8, 0x1E4A, 0x1EB8, 0x1FEB, 0x21BA, 0x23FE, 0x2690,\n    0x294A, 0x2C03, 0x2E96, 0x30DA, 0x32A9, 0x33DB, 0x344A, 0x33DB,\n    0x32A9, 0x30DA, 0x2E96, 0x2C03, 0x294A, 0x2690, 0x23FE, 0x21BA,\n    0x1FEB, 0x1EB8, 0x1E4A, 0x1EA8, 0x1FB0, 0x2142, 0x233F, 0x2589,\n    0x2802, 0x2A8A, 0x2D03, 0x2F4E, 0x314C, 0x32DF, 0x33E9, 0x344A,\n    0x341E, 0x339B, 0x32CD, 0x31BD, 0x3074, 0x2EFF, 0x2D66, 0x2BB4,\n    0x29F3, 0x282C, 0x266C, 0x24BB, 0x2323, 0x21AF, 0x206A, 0x1F5C,\n    0x1E91, 0x1DFD, 0x1D8B, 0x1D39, 0x1D02, 0x1CE4, 0x1CDB, 0x1CE4,\n    0x1CFB, 0x1D1F, 0x1D4A, 0x1D7A, 0x1DAC, 0x1DDC, 0x1E07, 0x1E2A,\n    0x1E41, 0x1E4A, 0x1B09, 0x1AEE, 0x1AA3, 0x1A34, 0x19AB, 0x1912,\n    0x1874, 0x17DB, 0x1751, 0x16E2, 0x1698, 0x167D, 0x1691, 0x16C7,\n    0x171A, 0x1784, 0x17FD, 0x1880, 0x1906, 0x1989, 0x1A02, 0x1A6B,\n    0x1ABF, 0x1AF5, 0x1B09, 0x1AF2, 0x1AB3, 0x1A53, 0x19DB, 0x1953,\n    0x18C3, 0x1833, 0x17AB, 0x1733, 0x16D3, 0x1694, 0x167D, 0x1694,\n    0x16D3, 0x1733, 0x17AB, 0x1833, 0x18C3, 0x1953, 0x19DB, 0x1A53,\n    0x1AB3, 0x1AF2, 0x1B09, 0x1AF5, 0x1ABF, 0x1A6C, 0x1A02, 0x1989,\n    0x1907, 0x1881, 0x17FE, 0x1785, 0x171B, 0x16C8, 0x1691, 0x167D,\n    0x1686, 0x16A1, 0x16CC, 0x1704, 0x1748, 0x1795, 0x17E9, 0x1843,\n    0x18A0, 0x18FE, 0x195B, 0x19B4, 0x1A08, 0x1A55, 0x1A98, 0x1AD0,\n    0x1AFA, 0x1B19, 0x1B30, 0x1B41, 0x1B4C, 0x1B53, 0x1B55, 0x1B53,\n    0x1B4E, 0x1B47, 0x1B3E, 0x1B34, 0x1B29, 0x1B1F, 0x1B17, 0x1B0F,\n    0x1B0B, 0x1B09, 0x1144, 0x1167, 0x11C7, 0x1256, 0x1306, 0x13CB,\n    0x1496, 0x155B, 0x160C, 0x169A, 0x16FA, 0x171D, 0x1704, 0x16BE,\n    0x1653, 0x15CB, 0x152F, 0x1487, 0x13DA, 0x1332, 0x1296, 0x120F,\n    0x11A4, 0x115E, 0x1144, 0x1162, 0x11B3, 0x122E, 0x12C8, 0x1377,\n    0x1431, 0x14EA, 0x1599, 0x1633, 0x16AE, 0x16FF, 0x171D, 0x16FF,\n    0x16AE, 0x1633, 0x1599, 0x14EA, 0x1431, 0x1377, 0x12C8, 0x122E,\n    0x11B3, 0x1162, 0x1144, 0x115D, 0x11A4, 0x120E, 0x1296, 0x1331,\n    0x13D9, 0x1486, 0x152E, 0x15CA, 0x1651, 0x16BD, 0x1703, 0x171D,\n    0x1711, 0x16EF, 0x16B8, 0x166F, 0x1618, 0x15B5, 0x1548, 0x14D5,\n    0x145D, 0x13E5, 0x136E, 0x12FB, 0x128E, 0x122B, 0x11D5, 0x118D,\n    0x1157, 0x1130, 0x1112, 0x10FC, 0x10ED, 0x10E5, 0x10E3, 0x10E5,\n    0x10EC, 0x10F5, 0x1100, 0x110D, 0x111A, 0x1127, 0x1133, 0x113C,\n    0x1142, 0x1144, 0xAC44, 0xAC0B, 0xAB70, 0xAA88, 0xA969, 0xA829,\n    0xA6DE, 0xA59E, 0xA480, 0xA397, 0xA2FC, 0xA2C3, 0xA2EC, 0xA35E,\n    0xA40C, 0xA4E9, 0xA5E6, 0xA6F8, 0xA810, 0xA921, 0xAA1F, 0xAAFB,\n    0xABA9, 0xAC1B, 0xAC44, 0xAC14, 0xAB90, 0xAAC8, 0xA9CD, 0xA8B1,\n    0xA784, 0xA656, 0xA53A, 0xA440, 0xA378, 0xA2F3, 0xA2C3, 0xA2F3,\n    0xA378, 0xA440, 0xA53A, 0xA656, 0xA784, 0xA8B1, 0xA9CD, 0xAAC8,\n    0xAB90, 0xAC14, 0xAC44, 0xAC1B, 0xABA9, 0xAAFC, 0xAA20, 0xA922,\n    0xA811, 0xA6F9, 0xA5E8, 0xA4EB, 0xA40E, 0xA360, 0xA2ED, 0xA2C3,\n    0xA2D6, 0xA30F, 0xA368, 0xA3DE, 0xA46B, 0xA50D, 0xA5BD, 0xA679,\n    0xA73B, 0xA7FF, 0xA8C1, 0xA97C, 0xAA2C, 0xAACC, 0xAB59, 0xABCD,\n    0xAC25, 0xAC65, 0xAC96, 0xACBA, 0xACD1, 0xACDE, 0xACE2, 0xACDE,\n    0xACD4, 0xACC5, 0xACB2, 0xAC9E, 0xAC88, 0xAC73, 0xAC61, 0xAC52,\n    0xAC48, 0xAC44, 0x0000, 0xFFF7, 0xFFDD, 0xFFB7, 0xFF87, 0xFF52,\n    0xFF1B, 0xFEE6, 0xFEB6, 0xFE8F, 0xFE76, 0xFE6C, 0xFE73, 0xFE86,\n    0xFEA3, 0xFEC8, 0xFEF2, 0xFF1F, 0xFF4E, 0xFF7B, 0xFFA5, 0xFFCA,\n    0xFFE7, 0xFFFA, 0x0000, 0xFFF9, 0xFFE3, 0xFFC1, 0xFF98, 0xFF68,\n    0xFF36, 0xFF04, 0xFED5, 0xFEAB, 0xFE8A, 0xFE74, 0xFE6C, 0xFE74,\n    0xFE8A, 0xFEAB, 0xFED5, 0xFF04, 0xFF36, 0xFF68, 0xFF98, 0xFFC1,\n    0xFFE3, 0xFFF9, 0x0000, 0xFFFA, 0xFFE7, 0xFFCA, 0xFFA5, 0xFF7B,\n    0xFF4E, 0xFF1F, 0xFEF2, 0xFEC8, 0xFEA3, 0xFE86, 0xFE73, 0xFE6C,\n    0xFE6F, 0xFE79, 0xFE88, 0xFE9B, 0xFEB3, 0xFECD, 0xFEEB, 0xFF0A,\n    0xFF2A, 0xFF4B, 0xFF6B, 0xFF8A, 0xFFA7, 0xFFC2, 0xFFD9, 0xFFED,\n    0xFFFB, 0x0005, 0x000D, 0x0013, 0x0017, 0x0019, 0x001A, 0x0019,\n    0x0017, 0x0015, 0x0012, 0x000E, 0x000B, 0x0007, 0x0004, 0x0002,\n    0x0000, 0x0000, 0x0000, 0xFFFE, 0xFFF8, 0xFFEE, 0xFFE1, 0xFFD4,\n    0xFFC6, 0xFFB8, 0xFFAC, 0xFFA2, 0xFF9C, 0xFF99, 0xFF9B, 0xFFA0,\n    0xFFA7, 0xFFB1, 0xFFBB, 0xFFC7, 0xFFD3, 0xFFDE, 0xFFE9, 0xFFF3,\n    0xFFFA, 0xFFFF, 0x0000, 0xFFFE, 0xFFF9, 0xFFF0, 0xFFE6, 0xFFDA,\n    0xFFCD, 0xFFC0, 0xFFB4, 0xFFA9, 0xFFA1, 0xFF9B, 0xFF99, 0xFF9B,\n    0xFFA1, 0xFFA9, 0xFFB4, 0xFFC0, 0xFFCD, 0xFFDA, 0xFFE6, 0xFFF0,\n    0xFFF9, 0xFFFE, 0x0000, 0xFFFF, 0xFFFA, 0xFFF3, 0xFFE9, 0xFFDE,\n    0xFFD3, 0xFFC7, 0xFFBB, 0xFFB1, 0xFFA7, 0xFFA0, 0xFF9B, 0xFF99,\n    0xFF9A, 0xFF9D, 0xFFA0, 0xFFA5, 0xFFAB, 0xFFB2, 0xFFBA, 0xFFC2,\n    0xFFCA, 0xFFD2, 0xFFDA, 0xFFE2, 0xFFEA, 0xFFF1, 0xFFF7, 0xFFFB,\n    0xFFFF, 0x0001, 0x0003, 0x0005, 0x0006, 0x0006, 0x0006, 0x0006,\n    0x0006, 0x0005, 0x0004, 0x0003, 0x0002, 0x0002, 0x0001, 0x0000,\n    0x0000, 0x0000, 0xBF40, 0xBF04, 0xBE5D, 0xBD65, 0xBC31, 0xBADB,\n    0xB978, 0xB822, 0xB6EE, 0xB5F6, 0xB54F, 0xB513, 0xB53F, 0xB5B9,\n    0xB673, 0xB75F, 0xB86F, 0xB994, 0xBAC0, 0xBBE4, 0xBCF4, 0xBDE0,\n    0xBE9A, 0xBF14, 0xBF40, 0xBF0D, 0xBE7F, 0xBDA9, 0xBC9D, 0xBB6C,\n    0xBA2A, 0xB8E7, 0xB7B6, 0xB6AA, 0xB5D4, 0xB546, 0xB513, 0xB546,\n    0xB5D4, 0xB6AA, 0xB7B6, 0xB8E7, 0xBA2A, 0xBB6C, 0xBC9D, 0xBDA9,\n    0xBE7F, 0xBF0D, 0xBF40, 0xBF14, 0xBE9B, 0xBDE1, 0xBCF5, 0xBBE6,\n    0xBAC1, 0xB995, 0xB871, 0xB761, 0xB675, 0xB5BA, 0xB540, 0xB513,\n    0xB527, 0xB563, 0xB5C3, 0xB641, 0xB6D9, 0xB786, 0xB843, 0xB90C,\n    0xB9DB, 0xBAAD, 0xBB7D, 0xBC45, 0xBD02, 0xBDAE, 0xBE45, 0xBEC1,\n    0xBF1F, 0xBF64, 0xBF98, 0xBFBE, 0xBFD8, 0xBFE6, 0xBFEA, 0xBFE6,\n    0xBFDB, 0xBFCB, 0xBFB7, 0xBFA0, 0xBF89, 0xBF73, 0xBF5F, 0xBF4F,\n    0xBF44, 0xBF40, 0x2537, 0x25A2, 0x26C7, 0x287D, 0x2A9A, 0x2CF5,\n    0x2F65, 0x31C1, 0x33DE, 0x3594, 0x36B9, 0x3724, 0x36D7, 0x35FF,\n    0x34B7, 0x3318, 0x3139, 0x2F36, 0x2D25, 0x2B21, 0x2943, 0x27A3,\n    0x265B, 0x2584, 0x2537, 0x2591, 0x268B, 0x2804, 0x29DC, 0x2BF5,\n    0x2E2D, 0x3066, 0x327E, 0x3457, 0x35D0, 0x36CA, 0x3724, 0x36CA,\n    0x35D0, 0x3457, 0x327E, 0x3066, 0x2E2D, 0x2BF5, 0x29DC, 0x2804,\n    0x268B, 0x2591, 0x2537, 0x2584, 0x265B, 0x27A2, 0x2941, 0x2B1F,\n    0x2D22, 0x2F32, 0x3136, 0x3314, 0x34B4, 0x35FD, 0x36D5, 0x3724,\n    0x3700, 0x3696, 0x35EE, 0x3510, 0x3404, 0x32D4, 0x3187, 0x3025,\n    0x2EB7, 0x2D45, 0x2BD7, 0x2A76, 0x292A, 0x27FB, 0x26F2, 0x2617,\n    0x2571, 0x24F8, 0x249C, 0x2458, 0x242C, 0x2413, 0x240C, 0x2413,\n    0x2426, 0x2443, 0x2466, 0x248E, 0x24B6, 0x24DD, 0x2500, 0x251D,\n    0x2530, 0x2537, 0xD64A, 0xD65C, 0xD68E, 0xD6D9, 0xD735, 0xD79C,\n    0xD806, 0xD86D, 0xD8C9, 0xD914, 0xD946, 0xD958, 0xD94B, 0xD926,\n    0xD8EE, 0xD8A8, 0xD856, 0xD7FE, 0xD7A4, 0xD74C, 0xD6FB, 0xD6B4,\n    0xD67C, 0xD657, 0xD64A, 0xD65A, 0xD684, 0xD6C4, 0xD715, 0xD770,\n    0xD7D1, 0xD832, 0xD88D, 0xD8DE, 0xD91E, 0xD949, 0xD958, 0xD949,\n    0xD91E, 0xD8DE, 0xD88D, 0xD832, 0xD7D1, 0xD770, 0xD715, 0xD6C4,\n    0xD684, 0xD65A, 0xD64A, 0xD657, 0xD67C, 0xD6B4, 0xD6FA, 0xD74C,\n    0xD7A4, 0xD7FE, 0xD855, 0xD8A7, 0xD8EE, 0xD926, 0xD94B, 0xD958,\n    0xD952, 0xD940, 0xD923, 0xD8FD, 0xD8D0, 0xD89C, 0xD863, 0xD827,\n    0xD7E9, 0xD7AA, 0xD76B, 0xD72F, 0xD6F7, 0xD6C3, 0xD696, 0xD670,\n    0xD654, 0xD640, 0xD630, 0xD624, 0xD61D, 0xD619, 0xD617, 0xD619,\n    0xD61C, 0xD621, 0xD627, 0xD62D, 0xD634, 0xD63B, 0xD641, 0xD646,\n    0xD649, 0xD64A, 0xEC41, 0xEC16, 0xEBA1, 0xEAF3, 0xEA1B, 0xE92A,\n    0xE831, 0xE741, 0xE669, 0xE5BA, 0xE545, 0xE51B, 0xE53A, 0xE58F,\n    0xE612, 0xE6B8, 0xE777, 0xE844, 0xE917, 0xE9E5, 0xEAA4, 0xEB49,\n    0xEBCC, 0xEC22, 0xEC41, 0xEC1D, 0xEBB9, 0xEB23, 0xEA66, 0xE990,\n    0xE8AE, 0xE7CB, 0xE6F5, 0xE639, 0xE5A2, 0xE53F, 0xE51B, 0xE53F,\n    0xE5A2, 0xE639, 0xE6F5, 0xE7CB, 0xE8AE, 0xE990, 0xEA66, 0xEB23,\n    0xEBB9, 0xEC1D, 0xEC41, 0xEC22, 0xEBCC, 0xEB4A, 0xEAA4, 0xE9E6,\n    0xE918, 0xE846, 0xE778, 0xE6B9, 0xE614, 0xE590, 0xE53A, 0xE51B,\n    0xE529, 0xE553, 0xE597, 0xE5EF, 0xE65A, 0xE6D3, 0xE758, 0xE7E5,\n    0xE877, 0xE90A, 0xE99C, 0xEA29, 0xEAAD, 0xEB26, 0xEB90, 0xEBE8,\n    0xEC29, 0xEC5A, 0xEC7F, 0xEC99, 0xECAB, 0xECB5, 0xECB8, 0xECB5,\n    0xECAD, 0xECA2, 0xEC94, 0xEC84, 0xEC74, 0xEC64, 0xEC56, 0xEC4B,\n    0xEC44, 0xEC41, 0xB59E, 0xB57D, 0xB521, 0xB498, 0xB3EF, 0xB332,\n    0xB26E, 0xB1B2, 0xB108, 0xB07F, 0xB023, 0xB002, 0xB01A, 0xB05D,\n    0xB0C4, 0xB146, 0xB1DC, 0xB27D, 0xB323, 0xB3C4, 0xB45A, 0xB4DC,\n    0xB543, 0xB586, 0xB59E, 0xB582, 0xB534, 0xB4BE, 0xB42A, 0xB382,\n    0xB2D0, 0xB21E, 0xB176, 0xB0E2, 0xB06C, 0xB01E, 0xB002, 0xB01E,\n    0xB06C, 0xB0E2, 0xB176, 0xB21E, 0xB2D0, 0xB382, 0xB42A, 0xB4BE,\n    0xB534, 0xB582, 0xB59E, 0xB586, 0xB543, 0xB4DC, 0xB45A, 0xB3C5,\n    0xB324, 0xB27E, 0xB1DD, 0xB147, 0xB0C5, 0xB05E, 0xB01B, 0xB002,\n    0xB00D, 0xB02E, 0xB063, 0xB0A9, 0xB0FC, 0xB15B, 0xB1C4, 0xB232,\n    0xB2A5, 0xB319, 0xB38B, 0xB3FA, 0xB462, 0xB4C0, 0xB513, 0xB558,\n    0xB58C, 0xB5B2, 0xB5CF, 0xB5E4, 0xB5F2, 0xB5F9, 0xB5FC, 0xB5F9,\n    0xB5F3, 0xB5EA, 0xB5DF, 0xB5D3, 0xB5C6, 0xB5BA, 0xB5AF, 0xB5A6,\n    0xB5A0, 0xB59E, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001,\n    0x4171, 0xBF5F, 0x0000, 0x0051, 0x013B, 0x02AB, 0x0490, 0x06D9,\n    0x0974, 0x0C50, 0x0F5C, 0x1286, 0x15BD, 0x18EF, 0x1C0B, 0x1F00,\n    0x21BC, 0x242D, 0x2644, 0x27ED, 0x295F, 0x2ACB, 0x2C1C, 0x2D39,\n    0x2E0C, 0x2E7E, 0x2E79, 0x2DE5, 0x2CAB, 0x2AB6, 0x27ED, 0x233C,\n    0x1C22, 0x1367, 0x09D3, 0x002D, 0xF73F, 0xEFCE, 0xEAA3, 0xE720,\n    0xE41E, 0xE196, 0xDF83, 0xDDDF, 0xDCA3, 0xDBCA, 0xDB4E, 0xDB28,\n    0xDB53, 0xDBC9, 0xDC83, 0xDDB3, 0xDF7C, 0xE1C7, 0xE47C, 0xE782,\n    0xEAC3, 0xEE25, 0xF192, 0xF4F0, 0xF829, 0xFB24, 0xFDC9, 0x0000,\n    0x0143, 0x016B, 0x00F2, 0x0050, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0017, 0x003D, 0x0045, 0x0000, 0xFF7C, 0xFEE8,\n    0xFE45, 0xFD97, 0xFCE0, 0xFC22, 0xFB60, 0xFA9D, 0xF9DB, 0xF91D,\n    0xF865, 0xF7B5, 0xF711, 0xF67A, 0xF5F4, 0xF580, 0xF522, 0xF4DC,\n    0xF4AF, 0xF4A0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0003, 0x000D, 0x001A, 0x0028,\n    0x0036, 0x0041, 0x0047, 0x0046, 0x003B, 0x0024, 0x0000, 0xFFC3,\n    0xFF68, 0xFEF8, 0xFE7C, 0xFDFC, 0xFD80, 0xFD11, 0xFCB8, 0xFC68,\n    0xFC12, 0xFBB9, 0xFB61, 0xFB0C, 0xFABD, 0xFA78, 0xFA3E, 0xFA14,\n    0xF9FC, 0xF9F8, 0xFA0D, 0xFA3D, 0xFA88, 0xFAE9, 0xFB5D, 0xFBDF,\n    0xFC6B, 0xFCFD, 0xFD91, 0xFE23, 0xFEAE, 0xFF2F, 0xFFA1, 0x0000,\n    0x0036, 0x003C, 0x0028, 0x000D, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xFFEA, 0xFFC4, 0xFFBD, 0x0000, 0x0081, 0x0112,\n    0x01B1, 0x025C, 0x030F, 0x03C8, 0x0486, 0x0544, 0x0602, 0x06BC,\n    0x0771, 0x081C, 0x08BD, 0x0950, 0x09D4, 0x0A45, 0x0AA1, 0x0AE6,\n    0x0B11, 0x0B20, 0xFC62, 0xFC6D, 0xFC8F, 0xFCC3, 0xFD09, 0xFD5C,\n    0xFDBC, 0xFE24, 0xFE94, 0xFF07, 0xFF7D, 0xFFF2, 0x0062, 0x00CE,\n    0x0132, 0x018C, 0x01D8, 0x0215, 0x0250, 0x0294, 0x02DB, 0x031C,\n    0x0352, 0x0375, 0x037E, 0x0366, 0x0327, 0x02B9, 0x0215, 0x00EA,\n    0xFF17, 0xFCD7, 0xFA6A, 0xF80C, 0xF5FD, 0xF47A, 0xF3C1, 0xF3B6,\n    0xF40A, 0xF4AC, 0xF58A, 0xF694, 0xF7BA, 0xF8E9, 0xFA12, 0xFB22,\n    0xFC0B, 0xFCBA, 0xFD1E, 0xFD43, 0xFD42, 0xFD20, 0xFCE3, 0xFC8F,\n    0xFC2B, 0xFBBC, 0xFB47, 0xFAD2, 0xFA62, 0xF9FC, 0xF9A5, 0xF964,\n    0xF96C, 0xF9BC, 0xFA08, 0xFA04, 0xF964, 0xF469, 0xF22E, 0xFB12,\n    0x07B4, 0x1073, 0x1319, 0x1340, 0x1200, 0x1073, 0x0F04, 0x0D67,\n    0x0BA3, 0x09BF, 0x07C1, 0x05B2, 0x0398, 0x017A, 0xFF60, 0xFD4F,\n    0xFB4F, 0xF967, 0xF79E, 0xF5FC, 0xF486, 0xF345, 0xF23F, 0xF17B,\n    0xF100, 0xF0D6, 0x0000, 0x0010, 0x003C, 0x0082, 0x00E3, 0x015C,\n    0x01EE, 0x0298, 0x0358, 0x042F, 0x051B, 0x061C, 0x075C, 0x08F6,\n    0x0AD2, 0x0CD9, 0x0EF3, 0x110A, 0x1304, 0x14CC, 0x1649, 0x1763,\n    0x1805, 0x1815, 0x17B2, 0x1711, 0x1638, 0x152C, 0x13F4, 0x1296,\n    0x111A, 0x0F85, 0x0DDD, 0x0C2A, 0x0A70, 0x08B8, 0x0707, 0x0563,\n    0x03D3, 0x025D, 0x0108, 0xFFDB, 0xFEDB, 0xFE0E, 0xFD73, 0xFD03,\n    0xFCB8, 0xFC90, 0xFC85, 0xFC94, 0xFCB9, 0xFCEF, 0xFD33, 0xFD80,\n    0xFDD3, 0xFE27, 0xFE79, 0xFEC4, 0xFF04, 0xFF35, 0xFF61, 0xFF95,\n    0xFFCF, 0x000D, 0x0052, 0x009B, 0x00E7, 0x0135, 0x0186, 0x01D8,\n    0x022A, 0x027C, 0x02D1, 0x032D, 0x038F, 0x03F6, 0x0462, 0x04D1,\n    0x0542, 0x05B5, 0x0628, 0x069B, 0x070C, 0x077A, 0x07E5, 0x084C,\n    0x08AE, 0x0909, 0x095D, 0x09AA, 0x09EC, 0x0A25, 0x0A53, 0x0A75,\n    0x0A8A, 0x0A92, 0x0000, 0x0000, 0xFFFE, 0xFFFC, 0xFFF9, 0xFFF7,\n    0xFFF5, 0xFFF4, 0xFFF4, 0xFFF6, 0xFFFA, 0x0000, 0x0007, 0x000F,\n    0x0016, 0x001F, 0x0029, 0x0034, 0x0042, 0x0052, 0x0065, 0x007C,\n    0x0097, 0x00B6, 0x00DB, 0x0106, 0x0136, 0x016B, 0x01A2, 0x01DD,\n    0x0219, 0x0256, 0x0293, 0x02CE, 0x0309, 0x0340, 0x0374, 0x03A4,\n    0x03CE, 0x03F2, 0x040F, 0x0425, 0x0431, 0x0434, 0x042A, 0x0411,\n    0x03EB, 0x03BA, 0x037E, 0x033B, 0x02F2, 0x02A5, 0x0254, 0x0203,\n    0x01B3, 0x0166, 0x011C, 0x00D9, 0x009E, 0x006D, 0x0049, 0x0034,\n    0x002B, 0x0028, 0x0029, 0x002A, 0x0027, 0x001C, 0x0006, 0xFFE1,\n    0xFFAA, 0xFF5B, 0xFEF8, 0xFE87, 0xFE0A, 0xFD81, 0xFCEF, 0xFC55,\n    0xFBB5, 0xFB11, 0xFA6A, 0xF9C2, 0xF91A, 0xF874, 0xF7D3, 0xF736,\n    0xF6A1, 0xF614, 0xF592, 0xF51C, 0xF4B4, 0xF45B, 0xF412, 0xF3DD,\n    0xF3BB, 0xF3B0, 0x0884, 0x0888, 0x0891, 0x089E, 0x08AC, 0x08BA,\n    0x08C4, 0x08CA, 0x08C8, 0x08BD, 0x08A7, 0x0884, 0x0846, 0x07EA,\n    0x0777, 0x06F5, 0x066C, 0x05E5, 0x0568, 0x04FC, 0x04AB, 0x047C,\n    0x0478, 0x04A6, 0x0500, 0x0578, 0x0609, 0x06B1, 0x076C, 0x0835,\n    0x090B, 0x09E9, 0x0ACB, 0x0BAF, 0x0C90, 0x0D6C, 0x0E3E, 0x0F03,\n    0x0FB8, 0x105A, 0x10E3, 0x1152, 0x11A3, 0x11D1, 0x11D7, 0x11B4,\n    0x116B, 0x1102, 0x107D, 0x0FE1, 0x0F32, 0x0E75, 0x0DAD, 0x0CE0,\n    0x0C13, 0x0B49, 0x0A87, 0x09D2, 0x092F, 0x08A1, 0x0827, 0x07BB,\n    0x0758, 0x06FC, 0x06A4, 0x064D, 0x05F2, 0x0591, 0x0528, 0x04B1,\n    0x042B, 0x0392, 0x02E5, 0x0225, 0x0156, 0x0079, 0xFF92, 0xFEA0,\n    0xFDA9, 0xFCAC, 0xFBAD, 0xFAAF, 0xF9B2, 0xF8BB, 0xF7CA, 0xF6E2,\n    0xF605, 0xF536, 0xF477, 0xF3CA, 0xF332, 0xF2B0, 0xF247, 0xF1F9,\n    0xF1C9, 0xF1B8, 0x40A1, 0x40AB, 0x40C5, 0x40ED, 0x411E, 0x4155,\n    0x418E, 0x41C5, 0x41F6, 0x421E, 0x4239, 0x4242, 0x423B, 0x4228,\n    0x420A, 0x41E4, 0x41B9, 0x418A, 0x415A, 0x412B, 0x40FF, 0x40D9,\n    0x40BC, 0x40A8, 0x40A1, 0x40A9, 0x40C0, 0x40E2, 0x410D, 0x413E,\n    0x4172, 0x41A5, 0x41D6, 0x4201, 0x4223, 0x423A, 0x4242, 0x423A,\n    0x4223, 0x4201, 0x41D6, 0x41A5, 0x4172, 0x413E, 0x410D, 0x40E2,\n    0x40C0, 0x40A9, 0x40A1, 0x40A8, 0x40BC, 0x40D9, 0x40FF, 0x412A,\n    0x4159, 0x4189, 0x41B8, 0x41E4, 0x420A, 0x4227, 0x423B, 0x4242,\n    0x423F, 0x4235, 0x4226, 0x4212, 0x41FA, 0x41DE, 0x41C0, 0x419F,\n    0x417E, 0x415C, 0x413B, 0x411B, 0x40FD, 0x40E1, 0x40C9, 0x40B5,\n    0x40A6, 0x409B, 0x4093, 0x408D, 0x4089, 0x4087, 0x4086, 0x4087,\n    0x4088, 0x408B, 0x408E, 0x4092, 0x4095, 0x4099, 0x409C, 0x409F,\n    0x40A0, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_21.inc.c",
    "content": "static const struct Animation anim_21[] = {\n    1,\n    189,\n    0,\n    0,\n    0x23,\n    ANIMINDEX_NUMPARTS(anim_21_indices),\n    anim_21_values,\n    anim_21_indices,\n    0,\n};\n\n\nstatic const u16 anim_21_indices[] = {\n    0x0001, 0x0000, 0x0023, 0x0001, 0x0023, 0x0024, 0x0001, 0x0000, 0x0001, 0x0047, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0023, 0x04F6,\n    0x0023, 0x048D, 0x0023, 0x04B0, 0x0023, 0x04D3,\n    0x0023, 0x0424, 0x0023, 0x0447, 0x0023, 0x046A,\n    0x0001, 0x0420, 0x0001, 0x0421, 0x0001, 0x0422,\n    0x0023, 0x00D4, 0x0023, 0x00F7, 0x0023, 0x011A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0023, 0x00B1,\n    0x0023, 0x0048, 0x0023, 0x006B, 0x0023, 0x008E,\n    0x0001, 0x041C, 0x0001, 0x041D, 0x0001, 0x041E,\n    0x0023, 0x01C9, 0x0023, 0x01EC, 0x0023, 0x020F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0023, 0x01A6,\n    0x0023, 0x013D, 0x0023, 0x0160, 0x0023, 0x0183,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x041F,\n    0x0023, 0x03B3, 0x0023, 0x03D6, 0x0023, 0x03F9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0023, 0x0390,\n    0x0023, 0x0327, 0x0023, 0x034A, 0x0023, 0x036D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0423,\n    0x0023, 0x02BE, 0x0023, 0x02E1, 0x0023, 0x0304,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0023, 0x029B,\n    0x0023, 0x0232, 0x0023, 0x0255, 0x0023, 0x0278,\n};\n\nstatic const s16 anim_21_values[] = {\n    0x0000, 0x00AC, 0x00AC, 0x00AC, 0x00AC, 0x00AC, 0x00AC, 0x00AC,\n    0x00AB, 0x00AB, 0x00AB, 0x00AB, 0x00AB, 0x00AB, 0x00AB, 0x00AB,\n    0x00AB, 0x00AB, 0x00AB, 0x00AB, 0x00AB, 0x00AB, 0x00AA, 0x00AA,\n    0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA,\n    0x00AA, 0x00AA, 0x00AA, 0x00AA, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n    0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n    0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FFF,\n    0x0000, 0x007C, 0x008B, 0x005D, 0x001F, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C,\n    0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C,\n    0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C,\n    0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C,\n    0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED8C, 0xE0B8, 0xE095, 0xE079, 0xE06E, 0xE07F, 0xE0B8, 0xE10C,\n    0xE167, 0xE1C9, 0xE231, 0xE29F, 0xE311, 0xE387, 0xE400, 0xE47B,\n    0xE4F7, 0xE574, 0xE5F1, 0xE66E, 0xE6E8, 0xE761, 0xE7D6, 0xE847,\n    0xE8B4, 0xE91B, 0xE97C, 0xE9D6, 0xEA28, 0xEA72, 0xEAB2, 0xEAE9,\n    0xEB15, 0xEB35, 0xEB49, 0xEB50, 0xF755, 0xF6D0, 0xF66F, 0xF64F,\n    0xF692, 0xF755, 0xF870, 0xF9A5, 0xFAF1, 0xFC51, 0xFDC3, 0xFF45,\n    0x00D2, 0x026A, 0x040A, 0x05AE, 0x0755, 0x08FC, 0x0AA0, 0x0C3F,\n    0x0DD5, 0x0F61, 0x10E0, 0x124F, 0x13AB, 0x14F3, 0x1623, 0x1739,\n    0x1833, 0x190D, 0x19C5, 0x1A59, 0x1AC6, 0x1B09, 0x1B20, 0xE5CA,\n    0xE5F8, 0xE618, 0xE622, 0xE60C, 0xE5CA, 0xE56B, 0xE503, 0xE494,\n    0xE41E, 0xE3A1, 0xE320, 0xE29A, 0xE211, 0xE186, 0xE0F9, 0xE06B,\n    0xDFDD, 0xDF50, 0xDEC5, 0xDE3C, 0xDDB7, 0xDD37, 0xDCBB, 0xDC46,\n    0xDBD8, 0xDB72, 0xDB15, 0xDAC1, 0xDA78, 0xDA3A, 0xDA09, 0xD9E4,\n    0xD9CD, 0xD9C6, 0xD7F4, 0xD871, 0xD8C1, 0xD8D2, 0xD893, 0xD7F4,\n    0xD715, 0xD621, 0xD51B, 0xD404, 0xD2E0, 0xD1AF, 0xD075, 0xCF32,\n    0xCDEA, 0xCC9E, 0xCB50, 0xCA02, 0xC8B6, 0xC76E, 0xC62D, 0xC4F5,\n    0xC3C6, 0xC2A4, 0xC191, 0xC08E, 0xBF9E, 0xBEC2, 0xBDFD, 0xBD51,\n    0xBCBF, 0xBC4A, 0xBBF4, 0xBBBF, 0xBBAD, 0x204A, 0x20A5, 0x20F9,\n    0x2120, 0x20F3, 0x204A, 0x1F4B, 0x1E34, 0x1D09, 0x1BCB, 0x1A7D,\n    0x1922, 0x17BA, 0x164A, 0x14D3, 0x1358, 0x11DA, 0x105D, 0x0EE2,\n    0x0D6C, 0x0BFD, 0x0A98, 0x093F, 0x07F4, 0x06B9, 0x0592, 0x047F,\n    0x0384, 0x02A3, 0x01DF, 0x0138, 0x00B3, 0x0051, 0x0014, 0x0000,\n    0x1CDD, 0x1D96, 0x1DEE, 0x1DEA, 0x1D8E, 0x1CDD, 0x1BF9, 0x1B00,\n    0x19F4, 0x18D8, 0x17AE, 0x1677, 0x1536, 0x13ED, 0x129E, 0x114A,\n    0x0FF5, 0x0EA0, 0x0D4E, 0x0BFF, 0x0AB8, 0x0978, 0x0844, 0x071C,\n    0x0603, 0x04FA, 0x0405, 0x0325, 0x025C, 0x01AC, 0x0117, 0x00A0,\n    0x0048, 0x0012, 0x0000, 0xF68B, 0xF671, 0xF671, 0xF67D, 0xF68A,\n    0xF68B, 0xF681, 0xF676, 0xF66B, 0xF65E, 0xF651, 0xF644, 0xF636,\n    0xF627, 0xF619, 0xF60A, 0xF5FB, 0xF5EC, 0xF5DE, 0xF5CF, 0xF5C1,\n    0xF5B3, 0xF5A5, 0xF599, 0xF58C, 0xF581, 0xF576, 0xF56C, 0xF564,\n    0xF55C, 0xF555, 0xF550, 0xF54C, 0xF54A, 0xF549, 0xD572, 0xD5C6,\n    0xD5AE, 0xD56B, 0xD541, 0xD572, 0xD5EB, 0xD670, 0xD6FE, 0xD795,\n    0xD834, 0xD8D9, 0xD983, 0xDA33, 0xDAE5, 0xDB99, 0xDC4E, 0xDD04,\n    0xDDB8, 0xDE6A, 0xDF18, 0xDFC2, 0xE066, 0xE103, 0xE198, 0xE225,\n    0xE2A7, 0xE31F, 0xE38A, 0xE3E7, 0xE436, 0xE476, 0xE4A4, 0xE4C1,\n    0xE4CB, 0x9881, 0x96A5, 0x9577, 0x9537, 0x9625, 0x9881, 0x9BD2,\n    0x9F6F, 0xA351, 0xA771, 0xABC6, 0xB048, 0xB4F1, 0xB9B8, 0xBE96,\n    0xC382, 0xC875, 0xCD68, 0xD252, 0xD72C, 0xDBEE, 0xE090, 0xE50B,\n    0xE956, 0xED6B, 0xF141, 0xF4D0, 0xF811, 0xFAFD, 0xFD8A, 0xFFB2,\n    0x016C, 0x02B2, 0x037B, 0x03C0, 0x346E, 0x342A, 0x344B, 0x348E,\n    0x34B0, 0x346E, 0x33DE, 0x3340, 0x3296, 0x31E2, 0x3124, 0x305F,\n    0x2F93, 0x2EC2, 0x2DEE, 0x2D16, 0x2C3E, 0x2B66, 0x2A8F, 0x29BB,\n    0x28EB, 0x2820, 0x275C, 0x26A1, 0x25EE, 0x2547, 0x24AB, 0x241D,\n    0x239D, 0x232E, 0x22CF, 0x2284, 0x224C, 0x222A, 0x221E, 0x3755,\n    0x349B, 0x32F6, 0x32AE, 0x340B, 0x3755, 0x3BE6, 0x40E1, 0x463A,\n    0x4BE8, 0x51E0, 0x5817, 0x5E82, 0x6516, 0x6BCA, 0x7292, 0x7964,\n    0x8038, 0x86FD, 0x8DAC, 0x9439, 0x9A9B, 0xA0C7, 0xA6B2, 0xAC51,\n    0xB199, 0xB681, 0xBAFC, 0xBF02, 0xC286, 0xC57E, 0xC7E1, 0xC9A2,\n    0xCAB7, 0xCB16, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xC9D8, 0xC9D9, 0xC9D9, 0xC9D9, 0xC9D8, 0xC9D8, 0xC9D8, 0xC9D8,\n    0xC9D8, 0xC9D8, 0xC9D8, 0xC9D8, 0xC9D8, 0xC9D8, 0xC9D8, 0xC9D8,\n    0xC9D8, 0xC9D8, 0xC9D8, 0xC9D8, 0xC9D8, 0xC9D8, 0xC9D8, 0xC9D8,\n    0xC9D8, 0xC9D8, 0xC9D8, 0xC9D8, 0xC9D8, 0xC9D8, 0xC9D8, 0xC9D8,\n    0xC9D8, 0xC9D8, 0xC9D8, 0x1E4A, 0x1E47, 0x1E47, 0x1E48, 0x1E49,\n    0x1E4A, 0x1E4A, 0x1E4A, 0x1E4A, 0x1E4A, 0x1E4A, 0x1E4A, 0x1E4A,\n    0x1E4A, 0x1E4A, 0x1E4A, 0x1E4A, 0x1E4A, 0x1E4A, 0x1E4A, 0x1E4A,\n    0x1E4A, 0x1E4A, 0x1E4A, 0x1E4A, 0x1E4A, 0x1E4A, 0x1E4A, 0x1E4A,\n    0x1E4A, 0x1E4A, 0x1E4A, 0x1E4A, 0x1E4A, 0x1E4A, 0x1B09, 0x1B09,\n    0x1B09, 0x1B09, 0x1B09, 0x1B09, 0x1B09, 0x1B09, 0x1B09, 0x1B09,\n    0x1B09, 0x1B09, 0x1B09, 0x1B09, 0x1B09, 0x1B09, 0x1B09, 0x1B09,\n    0x1B09, 0x1B09, 0x1B09, 0x1B09, 0x1B09, 0x1B09, 0x1B09, 0x1B09,\n    0x1B09, 0x1B09, 0x1B09, 0x1B09, 0x1B09, 0x1B09, 0x1B09, 0x1B09,\n    0x1B09, 0x1144, 0x1144, 0x1144, 0x1144, 0x1144, 0x1144, 0x1144,\n    0x1144, 0x1144, 0x1144, 0x1144, 0x1144, 0x1144, 0x1144, 0x1144,\n    0x1144, 0x1144, 0x1144, 0x1144, 0x1144, 0x1144, 0x1144, 0x1144,\n    0x1144, 0x1144, 0x1144, 0x1144, 0x1144, 0x1144, 0x1144, 0x1144,\n    0x1144, 0x1144, 0x1144, 0x1144, 0xAC44, 0xAC45, 0xAC45, 0xAC45,\n    0xAC44, 0xAC44, 0xAC44, 0xAC44, 0xAC44, 0xAC44, 0xAC44, 0xAC44,\n    0xAC44, 0xAC44, 0xAC44, 0xAC44, 0xAC44, 0xAC44, 0xAC44, 0xAC44,\n    0xAC44, 0xAC44, 0xAC44, 0xAC44, 0xAC44, 0xAC44, 0xAC44, 0xAC44,\n    0xAC44, 0xAC44, 0xAC44, 0xAC44, 0xAC44, 0xAC44, 0xAC44, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xBF40, 0xBF41, 0xBF41,\n    0xBF41, 0xBF41, 0xBF40, 0xBF40, 0xBF40, 0xBF40, 0xBF40, 0xBF40,\n    0xBF40, 0xBF40, 0xBF40, 0xBF40, 0xBF40, 0xBF40, 0xBF40, 0xBF40,\n    0xBF40, 0xBF40, 0xBF40, 0xBF40, 0xBF40, 0xBF40, 0xBF40, 0xBF40,\n    0xBF40, 0xBF40, 0xBF40, 0xBF40, 0xBF40, 0xBF40, 0xBF40, 0xBF40,\n    0x2537, 0x2535, 0x2535, 0x2535, 0x2536, 0x2537, 0x2537, 0x2537,\n    0x2537, 0x2537, 0x2537, 0x2537, 0x2537, 0x2537, 0x2537, 0x2537,\n    0x2537, 0x2537, 0x2537, 0x2537, 0x2537, 0x2537, 0x2537, 0x2537,\n    0x2537, 0x2537, 0x2537, 0x2537, 0x2537, 0x2537, 0x2537, 0x2537,\n    0x2537, 0x2537, 0x2537, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A,\n    0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A,\n    0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A,\n    0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A,\n    0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xEC41, 0xEC41,\n    0xEC42, 0xEC41, 0xEC41, 0xEC41, 0xEC41, 0xEC41, 0xEC41, 0xEC41,\n    0xEC41, 0xEC41, 0xEC41, 0xEC41, 0xEC41, 0xEC41, 0xEC41, 0xEC41,\n    0xEC41, 0xEC41, 0xEC41, 0xEC41, 0xEC41, 0xEC41, 0xEC41, 0xEC41,\n    0xEC41, 0xEC41, 0xEC41, 0xEC41, 0xEC41, 0xEC41, 0xEC41, 0xEC41,\n    0xEC41, 0xB59E, 0xB59F, 0xB59F, 0xB59F, 0xB59E, 0xB59E, 0xB59E,\n    0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E,\n    0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E,\n    0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E,\n    0xB59E, 0xB59E, 0xB59E, 0xB59E, 0x8001, 0x8001, 0x4171, 0xBF5F,\n    0x8001, 0x8001, 0x4171, 0xBF5F, 0xF4A0, 0xF448, 0xF423, 0xF42B,\n    0xF457, 0xF4A0, 0xF4FA, 0xF55C, 0xF5C6, 0xF636, 0xF6AB, 0xF726,\n    0xF7A4, 0xF826, 0xF8AA, 0xF930, 0xF9B6, 0xFA3D, 0xFAC2, 0xFB46,\n    0xFBC7, 0xFC45, 0xFCBF, 0xFD33, 0xFDA2, 0xFE0A, 0xFE6B, 0xFEC3,\n    0xFF12, 0xFF58, 0xFF92, 0xFFC1, 0xFFE4, 0xFFF9, 0x0000, 0x0B20,\n    0x0B76, 0x0B9A, 0x0B93, 0x0B68, 0x0B20, 0x0AC8, 0x0A68, 0x0A01,\n    0x0993, 0x0920, 0x08A8, 0x082D, 0x07AE, 0x072D, 0x06AA, 0x0626,\n    0x05A3, 0x0520, 0x04A0, 0x0421, 0x03A6, 0x032F, 0x02BD, 0x0251,\n    0x01EB, 0x018C, 0x0136, 0x00E8, 0x00A5, 0x006B, 0x003D, 0x001C,\n    0x0007, 0x0000, 0xF0D6, 0xEFFC, 0xEFCC, 0xF009, 0xF077, 0xF0D6,\n    0xF11E, 0xF16C, 0xF1C0, 0xF219, 0xF276, 0xF2D8, 0xF33D, 0xF3A4,\n    0xF40D, 0xF477, 0xF4E2, 0xF54D, 0xF5B8, 0xF620, 0xF687, 0xF6EB,\n    0xF74C, 0xF7A9, 0xF801, 0xF854, 0xF8A1, 0xF8E7, 0xF926, 0xF95E,\n    0xF98C, 0xF9B2, 0xF9CD, 0xF9DE, 0xF9E4, 0x0A92, 0x0ACC, 0x0AEB,\n    0x0AED, 0x0AD0, 0x0A92, 0x0A3E, 0x09E3, 0x0981, 0x0919, 0x08AB,\n    0x083A, 0x07C4, 0x074C, 0x06D1, 0x0655, 0x05D8, 0x055B, 0x04DF,\n    0x0464, 0x03EC, 0x0377, 0x0306, 0x029A, 0x0233, 0x01D2, 0x0179,\n    0x0126, 0x00DD, 0x009C, 0x0066, 0x003A, 0x001A, 0x0006, 0x0000,\n    0xF3B0, 0xF35F, 0xF339, 0xF33C, 0xF364, 0xF3B0, 0xF411, 0xF47C,\n    0xF4EE, 0xF567, 0xF5E6, 0xF66B, 0xF6F4, 0xF780, 0xF80F, 0xF8A0,\n    0xF931, 0xF9C3, 0xFA53, 0xFAE2, 0xFB6E, 0xFBF6, 0xFC7A, 0xFCF8,\n    0xFD70, 0xFDE1, 0xFE49, 0xFEA9, 0xFEFF, 0xFF4A, 0xFF89, 0xFFBC,\n    0xFFE1, 0xFFF9, 0x0000, 0xF1B8, 0xF14D, 0xF134, 0xF150, 0xF185,\n    0xF1B8, 0xF1E2, 0xF210, 0xF242, 0xF276, 0xF2AD, 0xF2E6, 0xF321,\n    0xF35E, 0xF39C, 0xF3DA, 0xF419, 0xF458, 0xF496, 0xF4D4, 0xF510,\n    0xF54B, 0xF584, 0xF5BB, 0xF5EE, 0xF61F, 0xF64C, 0xF676, 0xF69B,\n    0xF6BB, 0xF6D6, 0xF6EC, 0xF6FD, 0xF706, 0xF70A, 0x40A1, 0x40A1,\n    0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1,\n    0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1,\n    0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1,\n    0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1,\n    0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_22.inc.c",
    "content": "static const struct Animation anim_22[] = {\n    1,\n    189,\n    0,\n    0,\n    0x1B,\n    ANIMINDEX_NUMPARTS(anim_22_indices),\n    anim_22_values,\n    anim_22_indices,\n    0,\n};\n\n\nstatic const u16 anim_22_indices[] = {\n    0x0001, 0x0000, 0x001B, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x001C, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x036A,\n    0x001B, 0x0334, 0x0001, 0x0000, 0x001B, 0x034F,\n    0x001B, 0x02E3, 0x001B, 0x02FE, 0x001B, 0x0319,\n    0x0001, 0x02DF, 0x0001, 0x02E0, 0x0001, 0x02E1,\n    0x001B, 0x0089, 0x001B, 0x00A4, 0x001B, 0x00BF,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001B, 0x006E,\n    0x001B, 0x001D, 0x001B, 0x0038, 0x001B, 0x0053,\n    0x0001, 0x02DB, 0x0001, 0x02DC, 0x0001, 0x02DD,\n    0x001B, 0x0146, 0x001B, 0x0161, 0x001B, 0x017C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001B, 0x012B,\n    0x001B, 0x00DA, 0x001B, 0x00F5, 0x001B, 0x0110,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02DE,\n    0x001B, 0x028A, 0x001B, 0x02A5, 0x001B, 0x02C0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001B, 0x026F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001B, 0x0254,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02E2,\n    0x001B, 0x0203, 0x001B, 0x021E, 0x001B, 0x0239,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001B, 0x01E8,\n    0x001B, 0x0197, 0x001B, 0x01B2, 0x001B, 0x01CD,\n};\n\nstatic const s16 anim_22_values[] = {\n    0x0000, 0x00AA, 0x00AA, 0x00A9, 0x00A9, 0x00A8, 0x00A8, 0x00A7,\n    0x00A7, 0x00A6, 0x00A6, 0x00A6, 0x00A6, 0x00A7, 0x00A7, 0x00A7,\n    0x00A7, 0x00A8, 0x00A8, 0x00A8, 0x00A9, 0x00A9, 0x00A9, 0x00A9,\n    0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x3FFF, 0x0000, 0x0000, 0xFFFF,\n    0xFFFC, 0xFFF6, 0xFFED, 0xFFDF, 0xFFCD, 0xFFB6, 0xFF98, 0xFF73,\n    0xFF47, 0xFF11, 0xFED3, 0xFE8B, 0xFE38, 0xFDD9, 0xFD6E, 0xFCF7,\n    0xFC71, 0xFB72, 0xF9C2, 0xF7B1, 0xF58C, 0xF3A2, 0xF242, 0xF1BC,\n    0xF97C, 0xF96C, 0xF93D, 0xF8F5, 0xF895, 0xF821, 0xF79C, 0xF70A,\n    0xF66F, 0xF5CD, 0xF528, 0xF483, 0xF3E1, 0xF347, 0xF2B7, 0xF234,\n    0xF1C3, 0xF166, 0xF121, 0xF0F7, 0xF134, 0xF1FE, 0xF31E, 0xF45E,\n    0xF585, 0xF65F, 0xF6B4, 0xED8C, 0xED77, 0xED3A, 0xECD8, 0xEC55,\n    0xEBB5, 0xEAF9, 0xEA25, 0xE93E, 0xE845, 0xE73E, 0xE62C, 0xE514,\n    0xE3F7, 0xE2D9, 0xE1BD, 0xE0A7, 0xDF9A, 0xDE99, 0xDDA7, 0xDC8D,\n    0xDB2E, 0xD9B3, 0xD844, 0xD70B, 0xD631, 0xD5DF, 0xCA4F, 0xCA4A,\n    0xCA3C, 0xCA27, 0xCA0D, 0xC9EE, 0xC9CD, 0xC9AC, 0xC98C, 0xC96E,\n    0xC955, 0xC942, 0xC937, 0xC936, 0xC93F, 0xC955, 0xC97A, 0xC9AF,\n    0xC9F5, 0xCA4F, 0xCB29, 0xCCBB, 0xCEB4, 0xD0C6, 0xD2A3, 0xD3FB,\n    0xD47F, 0xFB1D, 0xFB1A, 0xFB13, 0xFB08, 0xFAF8, 0xFAE4, 0xFACD,\n    0xFAB3, 0xFA96, 0xFA76, 0xFA54, 0xFA30, 0xFA0B, 0xF9E4, 0xF9BC,\n    0xF993, 0xF969, 0xF940, 0xF917, 0xF8EE, 0xF8B5, 0xF862, 0xF804,\n    0xF7A4, 0xF751, 0xF716, 0xF6FF, 0xD2DC, 0xD2E5, 0xD300, 0xD32C,\n    0xD367, 0xD3B0, 0xD406, 0xD468, 0xD4D4, 0xD549, 0xD5C6, 0xD64A,\n    0xD6D3, 0xD761, 0xD7F1, 0xD883, 0xD916, 0xD9A8, 0xDA37, 0xDAC4,\n    0xDB81, 0xDC8A, 0xDDB8, 0xDEE6, 0xDFED, 0xE0A7, 0xE0ED, 0xD4B4,\n    0xD4A3, 0xD471, 0xD422, 0xD3B6, 0xD32F, 0xD291, 0xD1DC, 0xD113,\n    0xD037, 0xCF4C, 0xCE53, 0xCD4D, 0xCC3E, 0xCB26, 0xCA09, 0xC8E8,\n    0xC7C5, 0xC6A2, 0xC582, 0xC3E9, 0xC19A, 0xBEED, 0xBC3D, 0xB9E2,\n    0xB836, 0xB794, 0x0000, 0x02C9, 0x09F2, 0x13AF, 0x1E32, 0x27B1,\n    0x2E5F, 0x2F33, 0x2BF3, 0x2A05, 0x2D75, 0x3237, 0x3184, 0x2877,\n    0x1AF1, 0x0C53, 0x0000, 0xFF40, 0x0204, 0x0555, 0x08F5, 0x0CA9,\n    0x1036, 0x1360, 0x15EC, 0x179F, 0x183D, 0x0000, 0x003F, 0x00EC,\n    0x01EB, 0x0322, 0x0476, 0x05CD, 0x0705, 0x08B2, 0x0BC8, 0x12CF,\n    0x1B3F, 0x1E78, 0x1A01, 0x119F, 0x080B, 0x0000, 0xFE9C, 0xFF1A,\n    0xFFC1, 0x0082, 0x014E, 0x0217, 0x02CE, 0x0363, 0x03C7, 0x03EC,\n    0xF549, 0xF42E, 0xF150, 0xED5B, 0xE8FA, 0xE4D8, 0xE1A2, 0xDFC1,\n    0xDEE0, 0xDE8C, 0xDE42, 0xDE86, 0xE06D, 0xE4B6, 0xEA83, 0xF07D,\n    0xF549, 0xF33A, 0xEEF6, 0xEA06, 0xE4BA, 0xDF64, 0xDA53, 0xD5D6,\n    0xD23F, 0xCFDC, 0xCEFF, 0xC7DD, 0xCAB4, 0xD210, 0xDC34, 0xE762,\n    0xF1DC, 0xF9E6, 0xFE07, 0xFF5A, 0x0000, 0x0000, 0x0000, 0x0000,\n    0xF434, 0xE454, 0xD355, 0xC42A, 0xB9C6, 0xB99C, 0xC141, 0xC7DD,\n    0xCB1C, 0xCE5D, 0xD15C, 0xD3D4, 0xD582, 0xD620, 0x054B, 0x0481,\n    0x0265, 0xFF59, 0xFBBF, 0xF7FA, 0xF46B, 0xF176, 0xEFD5, 0xEE8B,\n    0xEB27, 0xE798, 0xE83E, 0xEE96, 0xF7CF, 0x01DD, 0x0AB1, 0x103F,\n    0x1086, 0x0CD8, 0x0821, 0x054B, 0x04FC, 0x0594, 0x0697, 0x078D,\n    0x07FA, 0x2BD6, 0x2AC2, 0x27DD, 0x23AD, 0x1EB5, 0x197B, 0x1482,\n    0x1050, 0x0C97, 0x0B1A, 0x0D53, 0x1114, 0x1481, 0x1701, 0x194C,\n    0x1B85, 0x1DCB, 0x2040, 0x2343, 0x26A7, 0x29BE, 0x2BD6, 0x2CCC,\n    0x2D19, 0x2CFF, 0x2CC0, 0x2C9C, 0xCCF6, 0xC9A9, 0xC0DD, 0xB439,\n    0xA566, 0x960A, 0x87CE, 0x7C55, 0x77CF, 0x7749, 0x73BE, 0x70A6,\n    0x74BE, 0x8214, 0x9415, 0xA7A1, 0xB994, 0xC6CA, 0xCCFC, 0xCE05,\n    0xCCFC, 0xCCF6, 0xCEB3, 0xD0AB, 0xD281, 0xD3DD, 0xD465, 0x0000,\n    0x0000, 0x0000, 0x0001, 0x0002, 0x0002, 0x0003, 0x0004, 0x0004,\n    0x0005, 0x0005, 0x0004, 0x0004, 0x0004, 0x0004, 0x0003, 0x0003,\n    0x0002, 0x0002, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xC9D8, 0xC9CA, 0xC9A3,\n    0xC96C, 0xC92A, 0xC8E5, 0xC8A3, 0xC86B, 0xC845, 0xC837, 0xC83B,\n    0xC847, 0xC859, 0xC871, 0xC88E, 0xC8AE, 0xC8D1, 0xC8F5, 0xC91A,\n    0xC93E, 0xC961, 0xC981, 0xC99E, 0xC9B6, 0xC9C8, 0xC9D4, 0xC9D8,\n    0x1E4A, 0x1E78, 0x1EF5, 0x1FA9, 0x207F, 0x2160, 0x2236, 0x22EA,\n    0x2367, 0x2395, 0x2388, 0x2362, 0x2326, 0x22D8, 0x227B, 0x2212,\n    0x21A1, 0x212B, 0x20B4, 0x203E, 0x1FCD, 0x1F64, 0x1F07, 0x1EB9,\n    0x1E7D, 0x1E57, 0x1E4A, 0x1B09, 0x1AFC, 0x1ADB, 0x1AAB, 0x1A71,\n    0x1A35, 0x19FC, 0x19CB, 0x19AA, 0x199E, 0x19A1, 0x19AB, 0x19BC,\n    0x19D0, 0x19E9, 0x1A05, 0x1A24, 0x1A43, 0x1A63, 0x1A83, 0x1AA1,\n    0x1ABD, 0x1AD6, 0x1AEB, 0x1AFB, 0x1B05, 0x1B09, 0x1144, 0x1158,\n    0x118C, 0x11D7, 0x1230, 0x128E, 0x12E7, 0x1333, 0x1366, 0x137A,\n    0x1374, 0x1364, 0x134B, 0x132B, 0x1304, 0x12D8, 0x12A9, 0x1278,\n    0x1246, 0x1215, 0x11E6, 0x11BA, 0x1194, 0x1173, 0x115A, 0x114A,\n    0x1144, 0xAC44, 0xAC27, 0xABDB, 0xAB6C, 0xAAE9, 0xAA5E, 0xA9DB,\n    0xA96C, 0xA920, 0xA903, 0xA90C, 0xA923, 0xA948, 0xA978, 0xA9B1,\n    0xA9F1, 0xAA37, 0xAA7F, 0xAAC8, 0xAB11, 0xAB56, 0xAB96, 0xABCF,\n    0xABFF, 0xAC24, 0xAC3C, 0xAC44, 0xBF40, 0xBF36, 0xBF19, 0xBEEF,\n    0xBEBE, 0xBE8A, 0xBE59, 0xBE2F, 0xBE12, 0xBE07, 0xBE0B, 0xBE13,\n    0xBE21, 0xBE33, 0xBE49, 0xBE61, 0xBE7B, 0xBE96, 0xBEB2, 0xBECD,\n    0xBEE7, 0xBEFF, 0xBF14, 0xBF26, 0xBF34, 0xBF3D, 0xBF40, 0x2537,\n    0x2565, 0x25E2, 0x2696, 0x276C, 0x284D, 0x2923, 0x29D7, 0x2A54,\n    0x2A83, 0x2A75, 0x2A4F, 0x2A13, 0x29C5, 0x2968, 0x28FF, 0x288E,\n    0x2818, 0x27A1, 0x272B, 0x26BA, 0x2652, 0x25F5, 0x25A6, 0x256B,\n    0x2544, 0x2537, 0xD64A, 0xD654, 0xD66F, 0xD695, 0xD6C2, 0xD6F2,\n    0xD720, 0xD746, 0xD760, 0xD76A, 0xD767, 0xD75F, 0xD752, 0xD742,\n    0xD72E, 0xD718, 0xD700, 0xD6E7, 0xD6CD, 0xD6B4, 0xD69C, 0xD686,\n    0xD673, 0xD662, 0xD655, 0xD64D, 0xD64A, 0xEC41, 0xEC26, 0xEBDC,\n    0xEB73, 0xEAF5, 0xEA71, 0xE9F4, 0xE98A, 0xE941, 0xE926, 0xE92E,\n    0xE944, 0xE967, 0xE995, 0xE9CC, 0xEA09, 0xEA4B, 0xEA90, 0xEAD6,\n    0xEB1B, 0xEB5E, 0xEB9B, 0xEBD1, 0xEBFF, 0xEC22, 0xEC39, 0xEC41,\n    0xB59E, 0xB58A, 0xB556, 0xB509, 0xB4AE, 0xB44E, 0xB3F3, 0xB3A7,\n    0xB372, 0xB35E, 0xB364, 0xB374, 0xB38E, 0xB3AF, 0xB3D6, 0xB403,\n    0xB433, 0xB465, 0xB498, 0xB4CA, 0xB4FA, 0xB526, 0xB54E, 0xB56F,\n    0xB588, 0xB598, 0xB59E, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001,\n    0x8001, 0x4171, 0xBF5F, 0x0000, 0xFF5A, 0xFDC0, 0xFBBB, 0xF9D4,\n    0xF7A7, 0xF55E, 0xF457, 0xF4E6, 0xF62F, 0xF7C8, 0xF94A, 0xFA4B,\n    0xFAE8, 0xFB83, 0xFC1A, 0xFCAD, 0xFD3A, 0xFDBE, 0xFE39, 0xFEA8,\n    0xFF0B, 0xFF5F, 0xFFA3, 0xFFD6, 0xFFF6, 0x0000, 0x0000, 0x0079,\n    0x019C, 0x02FF, 0x0436, 0x0566, 0x0688, 0x06EF, 0x066F, 0x057E,\n    0x0461, 0x035D, 0x02B9, 0x025E, 0x0209, 0x01B9, 0x0170, 0x012C,\n    0x00EF, 0x00B9, 0x0089, 0x0060, 0x003D, 0x0023, 0x000F, 0x0003,\n    0x0000, 0xFC62, 0xFF33, 0x05CD, 0x0D6A, 0x1344, 0x16F1, 0x1921,\n    0x18B1, 0x155D, 0x105B, 0x0AC5, 0x05B5, 0x0245, 0x0005, 0xFDCF,\n    0xFBA8, 0xF994, 0xF79B, 0xF5C0, 0xF409, 0xF27B, 0xF11C, 0xEFF2,\n    0xEF00, 0xEE4D, 0xEDDD, 0xEDB7, 0x0000, 0xFF6E, 0xFE2B, 0xFCE8,\n    0xFC56, 0xFC5B, 0xFC6C, 0xFC85, 0xFCA8, 0xFCD1, 0xFD01, 0xFD36,\n    0xFD70, 0xFDAD, 0xFDEB, 0xFE2B, 0xFE6B, 0xFEAA, 0xFEE6, 0xFF20,\n    0xFF55, 0xFF85, 0xFFAF, 0xFFD1, 0xFFEB, 0xFFFB, 0x0000, 0x0884,\n    0x0970, 0x0B74, 0x0D6C, 0x0E38, 0x0E00, 0x0DB3, 0x0D51, 0x0CDF,\n    0x0C5E, 0x0BD0, 0x0B39, 0x0A9A, 0x09F6, 0x094F, 0x08A7, 0x0802,\n    0x0761, 0x06C7, 0x0636, 0x05B0, 0x0539, 0x04D1, 0x047D, 0x043E,\n    0x0416, 0x0408, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_23.inc.c",
    "content": "static const struct Animation anim_23[] = {\n    1,\n    189,\n    0,\n    0,\n    0x64,\n    ANIMINDEX_NUMPARTS(anim_23_indices),\n    anim_23_values,\n    anim_23_indices,\n    0,\n};\n\n\nstatic const u16 anim_23_indices[] = {\n    0x0001, 0x0000, 0x0064, 0x0001, 0x0064, 0x0065, 0x0001, 0x0000, 0x0001, 0x00C9, 0x0001, 0x0000,\n    0x0064, 0x0F44, 0x0001, 0x0000, 0x0064, 0x0FA8,\n    0x0064, 0x0E18, 0x0064, 0x0E7C, 0x0064, 0x0EE0,\n    0x0064, 0x0CEC, 0x0064, 0x0D50, 0x0064, 0x0DB4,\n    0x0001, 0x0CE8, 0x0001, 0x0CE9, 0x0001, 0x0CEA,\n    0x0064, 0x025A, 0x0064, 0x02BE, 0x0064, 0x0322,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0064, 0x01F6,\n    0x0064, 0x00CA, 0x0064, 0x012E, 0x0064, 0x0192,\n    0x0001, 0x0BBA, 0x0001, 0x0BBB, 0x0064, 0x0BBC,\n    0x0064, 0x0516, 0x0064, 0x057A, 0x0064, 0x05DE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0064, 0x04B2,\n    0x0064, 0x0386, 0x0064, 0x03EA, 0x0064, 0x044E,\n    0x0001, 0x0000, 0x0064, 0x0C20, 0x0064, 0x0C84,\n    0x0064, 0x0A8E, 0x0064, 0x0AF2, 0x0064, 0x0B56,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0064, 0x0A2A,\n    0x0064, 0x08FE, 0x0064, 0x0962, 0x0064, 0x09C6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0CEB,\n    0x0064, 0x07D2, 0x0064, 0x0836, 0x0064, 0x089A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0064, 0x076E,\n    0x0064, 0x0642, 0x0064, 0x06A6, 0x0064, 0x070A,\n};\n\nstatic const s16 anim_23_values[] = {\n    0x0000, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AB, 0x00AB,\n    0x00AC, 0x00AC, 0x00AD, 0x00AD, 0x00AE, 0x00AE, 0x00AF, 0x00B0,\n    0x00B1, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B4, 0x00B5, 0x00B6,\n    0x00B7, 0x00B8, 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BB, 0x00BC,\n    0x00BD, 0x00BD, 0x00BE, 0x00BE, 0x00BF, 0x00BF, 0x00C0, 0x00C0,\n    0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00BF, 0x00BF, 0x00BE, 0x00BE,\n    0x00BD, 0x00BC, 0x00BC, 0x00BB, 0x00BA, 0x00B9, 0x00B8, 0x00B7,\n    0x00B7, 0x00B6, 0x00B6, 0x00B5, 0x00B5, 0x00B5, 0x00B4, 0x00B4,\n    0x00B4, 0x00B4, 0x00B4, 0x00B4, 0x00B4, 0x00B4, 0x00B4, 0x00B4,\n    0x00B4, 0x00B4, 0x00B4, 0x00B4, 0x00B4, 0x00B5, 0x00B5, 0x00B5,\n    0x00B5, 0x00B5, 0x00B5, 0x00B5, 0x00B5, 0x00B5, 0x00B5, 0x00B5,\n    0x00B5, 0x00B5, 0x00B5, 0x00B5, 0x00B5, 0x00B5, 0x00B5, 0x00B5,\n    0x00B5, 0x00B5, 0x00B5, 0x00B5, 0x00B5, 0x0000, 0x0000, 0x0001,\n    0x0003, 0x0005, 0x0008, 0x000C, 0x0011, 0x0016, 0x001B, 0x0021,\n    0x0028, 0x002F, 0x0037, 0x003F, 0x0048, 0x0051, 0x005A, 0x0064,\n    0x006F, 0x0079, 0x0084, 0x0090, 0x009B, 0x00A7, 0x00B3, 0x00C0,\n    0x00CC, 0x00D9, 0x00E6, 0x00F3, 0x0100, 0x010E, 0x011B, 0x0129,\n    0x0136, 0x0144, 0x0152, 0x015F, 0x016D, 0x017A, 0x0188, 0x0195,\n    0x01A3, 0x01B0, 0x01BD, 0x01CA, 0x01D6, 0x01E3, 0x01EF, 0x01FB,\n    0x0207, 0x0212, 0x021D, 0x0228, 0x0232, 0x023C, 0x023F, 0x023F,\n    0x023F, 0x023F, 0x023F, 0x023F, 0x023F, 0x023F, 0x023F, 0x023F,\n    0x023F, 0x023F, 0x023F, 0x023F, 0x023F, 0x023F, 0x023F, 0x023F,\n    0x023F, 0x023F, 0x023F, 0x023F, 0x023F, 0x023F, 0x023F, 0x023F,\n    0x023F, 0x023F, 0x023F, 0x023F, 0x023F, 0x023F, 0x023F, 0x023F,\n    0x023F, 0x023F, 0x023F, 0x023F, 0x023F, 0x023F, 0x023F, 0x023F,\n    0x023F, 0x3FFF, 0x0000, 0xFFC4, 0xFF15, 0xFDFF, 0xFC8E, 0xFACE,\n    0xF8C8, 0xF68A, 0xF41E, 0xF190, 0xEEEB, 0xEC3B, 0xE98A, 0xE6E5,\n    0xE457, 0xE1EB, 0xDFAC, 0xDDA6, 0xDBE5, 0xDA74, 0xD95D, 0xD8A2,\n    0xD833, 0xD809, 0xD81B, 0xD862, 0xD8D5, 0xD96C, 0xDA1F, 0xDAE6,\n    0xDBB9, 0xDC8E, 0xDD60, 0xDE24, 0xDED3, 0xDF64, 0xDFD1, 0xE012,\n    0xE018, 0xDFD1, 0xDF52, 0xDEC4, 0xDE2B, 0xDD89, 0xDCE3, 0xDC3B,\n    0xDB96, 0xDAF6, 0xDA60, 0xD9D7, 0xD95D, 0xD907, 0xD8DC, 0xD8CE,\n    0xD8D0, 0xD8D3, 0xD8D4, 0xD8D5, 0xD8D7, 0xD8DB, 0xD8DF, 0xD8E3,\n    0xD8E8, 0xD8EE, 0xD8F4, 0xD8FB, 0xD902, 0xD909, 0xD910, 0xD918,\n    0xD91F, 0xD926, 0xD92E, 0xD935, 0xD93B, 0xD942, 0xD948, 0xD94E,\n    0xD952, 0xD957, 0xD95B, 0xD95D, 0xD960, 0xD962, 0xD964, 0xD966,\n    0xD968, 0xD96A, 0xD96C, 0xD96D, 0xD96F, 0xD970, 0xD971, 0xD972,\n    0xD973, 0xD973, 0xD974, 0xD974, 0xD974, 0xD973, 0xF97C, 0xF977,\n    0xF96C, 0xF959, 0xF942, 0xF927, 0xF909, 0xF8EA, 0xF8CB, 0xF8AE,\n    0xF893, 0xF87C, 0xF86A, 0xF85F, 0xF85B, 0xF861, 0xF871, 0xF88C,\n    0xF8B5, 0xF8EB, 0xF931, 0xF98E, 0xFA04, 0xFA92, 0xFB33, 0xFBE5,\n    0xFCA5, 0xFD70, 0xFE43, 0xFF1A, 0xFFF3, 0x00C9, 0x019C, 0x0267,\n    0x0327, 0x03D9, 0x047B, 0x04EC, 0x04F8, 0x047B, 0x039D, 0x02A5,\n    0x0198, 0x007D, 0xFF5B, 0xFE35, 0xFD14, 0xFBFD, 0xFAF6, 0xFA05,\n    0xF931, 0xF89B, 0xF84F, 0xF837, 0xF839, 0xF83F, 0xF840, 0xF843,\n    0xF847, 0xF84C, 0xF853, 0xF85B, 0xF865, 0xF86F, 0xF879, 0xF885,\n    0xF891, 0xF89D, 0xF8AA, 0xF8B7, 0xF8C4, 0xF8D1, 0xF8DE, 0xF8EA,\n    0xF8F6, 0xF901, 0xF90C, 0xF916, 0xF91E, 0xF926, 0xF92C, 0xF931,\n    0xF936, 0xF93A, 0xF93D, 0xF941, 0xF945, 0xF948, 0xF94B, 0xF94D,\n    0xF950, 0xF952, 0xF954, 0xF955, 0xF957, 0xF958, 0xF958, 0xF959,\n    0xF958, 0xF958, 0xED8C, 0xED7F, 0xED5B, 0xED23, 0xECD9, 0xEC7F,\n    0xEC18, 0xEBA7, 0xEB2E, 0xEAB0, 0xEA2F, 0xE9AF, 0xE931, 0xE8B8,\n    0xE847, 0xE7E0, 0xE786, 0xE73C, 0xE703, 0xE6E0, 0xE6D3, 0xE6E1,\n    0xE709, 0xE748, 0xE79C, 0xE801, 0xE874, 0xE8F3, 0xE97A, 0xEA07,\n    0xEA97, 0xEB27, 0xEBB3, 0xEC39, 0xECB7, 0xED29, 0xED8C, 0xEDCF,\n    0xEDD6, 0xED8C, 0xED08, 0xEC74, 0xEBD4, 0xEB2B, 0xEA7E, 0xE9CF,\n    0xE923, 0xE87D, 0xE7E0, 0xE751, 0xE6D3, 0xE67A, 0xE64C, 0xE63E,\n    0xE63F, 0xE643, 0xE644, 0xE645, 0xE648, 0xE64B, 0xE64F, 0xE654,\n    0xE659, 0xE65F, 0xE666, 0xE66C, 0xE674, 0xE67B, 0xE683, 0xE68A,\n    0xE692, 0xE69A, 0xE6A1, 0xE6A9, 0xE6B0, 0xE6B6, 0xE6BD, 0xE6C3,\n    0xE6C8, 0xE6CC, 0xE6D0, 0xE6D3, 0xE6D6, 0xE6D8, 0xE6DA, 0xE6DC,\n    0xE6DE, 0xE6E0, 0xE6E2, 0xE6E4, 0xE6E5, 0xE6E7, 0xE6E8, 0xE6E9,\n    0xE6E9, 0xE6EA, 0xE6EA, 0xE6EA, 0xE6EA, 0xE6EA, 0xCA4F, 0xCA7D,\n    0xCB01, 0xCBD1, 0xCCE6, 0xCE37, 0xCFBA, 0xD168, 0xD338, 0xD520,\n    0xD719, 0xD919, 0xDB18, 0xDD0E, 0xDEF0, 0xE0B8, 0xE25B, 0xE3D2,\n    0xE514, 0xE617, 0xE6D4, 0xE749, 0xE780, 0xE77F, 0xE74C, 0xE6EF,\n    0xE66E, 0xE5D1, 0xE51D, 0xE459, 0xE38C, 0xE2BE, 0xE1F4, 0xE135,\n    0xE088, 0xDFF4, 0xDF7F, 0xDF35, 0xDF2D, 0xDF7F, 0xE00E, 0xE0AC,\n    0xE156, 0xE209, 0xE2C1, 0xE37C, 0xE436, 0xE4EC, 0xE59B, 0xE63E,\n    0xE6D4, 0xE74F, 0xE7AB, 0xE7F0, 0xE829, 0xE85E, 0xE894, 0xE8CA,\n    0xE900, 0xE935, 0xE96A, 0xE99E, 0xE9D2, 0xEA06, 0xEA38, 0xEA6A,\n    0xEA9B, 0xEACB, 0xEAFA, 0xEB28, 0xEB55, 0xEB80, 0xEBAA, 0xEBD3,\n    0xEBFA, 0xEC20, 0xEC3A, 0xEC41, 0xEC3C, 0xEC31, 0xEC25, 0xEC20,\n    0xEC21, 0xEC23, 0xEC27, 0xEC2B, 0xEC31, 0xEC37, 0xEC3E, 0xEC46,\n    0xEC4E, 0xEC56, 0xEC5E, 0xEC66, 0xEC6D, 0xEC74, 0xEC7A, 0xEC80,\n    0xEC85, 0xEC88, 0xFB1D, 0xFB1B, 0xFB16, 0xFB0E, 0xFB02, 0xFAF3,\n    0xFAE1, 0xFACB, 0xFAB2, 0xFA95, 0xFA76, 0xFA53, 0xFA2C, 0xFA02,\n    0xF9D5, 0xF9A5, 0xF972, 0xF93B, 0xF900, 0xF8C3, 0xF882, 0xF83A,\n    0xF7E6, 0xF789, 0xF723, 0xF6B6, 0xF644, 0xF5CE, 0xF554, 0xF4D9,\n    0xF45E, 0xF3E4, 0xF36D, 0xF2F9, 0xF28B, 0xF224, 0xF1C5, 0xF181,\n    0xF17A, 0xF1C5, 0xF249, 0xF2DD, 0xF37E, 0xF427, 0xF4D5, 0xF584,\n    0xF630, 0xF6D7, 0xF774, 0xF804, 0xF882, 0xF8DC, 0xF909, 0xF918,\n    0xF916, 0xF913, 0xF912, 0xF911, 0xF90E, 0xF90B, 0xF907, 0xF902,\n    0xF8FC, 0xF8F6, 0xF8F0, 0xF8E9, 0xF8E2, 0xF8DA, 0xF8D3, 0xF8CB,\n    0xF8C3, 0xF8BC, 0xF8B4, 0xF8AD, 0xF8A6, 0xF89F, 0xF898, 0xF893,\n    0xF88D, 0xF889, 0xF885, 0xF882, 0xF880, 0xF87D, 0xF87B, 0xF879,\n    0xF877, 0xF875, 0xF873, 0xF871, 0xF870, 0xF86F, 0xF86D, 0xF86D,\n    0xF86C, 0xF86B, 0xF86B, 0xF86B, 0xF86B, 0xF86B, 0xD2DC, 0xD2FB,\n    0xD354, 0xD3E2, 0xD4A0, 0xD588, 0xD694, 0xD7C0, 0xD906, 0xDA60,\n    0xDBC9, 0xDD3C, 0xDEB3, 0xE029, 0xE199, 0xE2FD, 0xE44F, 0xE58B,\n    0xE6AB, 0xE7A9, 0xE881, 0xE937, 0xE9D7, 0xEA64, 0xEADE, 0xEB49,\n    0xEBA7, 0xEBF8, 0xEC40, 0xEC81, 0xECBD, 0xECF5, 0xED2D, 0xED65,\n    0xEDA0, 0xEDE1, 0xEE29, 0xEE62, 0xEE68, 0xEE29, 0xEDBA, 0xED3D,\n    0xECB7, 0xEC29, 0xEB97, 0xEB04, 0xEA73, 0xE9E7, 0xE963, 0xE8EB,\n    0xE881, 0xE835, 0xE80F, 0xE803, 0xE804, 0xE807, 0xE808, 0xE809,\n    0xE80B, 0xE80E, 0xE811, 0xE815, 0xE81A, 0xE81F, 0xE824, 0xE82A,\n    0xE830, 0xE836, 0xE83D, 0xE843, 0xE84A, 0xE850, 0xE857, 0xE85D,\n    0xE863, 0xE868, 0xE86E, 0xE873, 0xE877, 0xE87B, 0xE87E, 0xE881,\n    0xE883, 0xE885, 0xE887, 0xE888, 0xE88A, 0xE88C, 0xE88D, 0xE88F,\n    0xE890, 0xE891, 0xE892, 0xE893, 0xE893, 0xE894, 0xE894, 0xE894,\n    0xE894, 0xE894, 0xD4B4, 0xD4DD, 0xD555, 0xD612, 0xD70A, 0xD834,\n    0xD988, 0xDAFD, 0xDC89, 0xDE23, 0xDFC3, 0xE15E, 0xE2ED, 0xE466,\n    0xE5BF, 0xE6F1, 0xE7F2, 0xE8B8, 0xE93B, 0xE971, 0xE952, 0xE8CE,\n    0xE7E0, 0xE696, 0xE4FC, 0xE31C, 0xE103, 0xDEBD, 0xDC55, 0xD9D8,\n    0xD750, 0xD4CB, 0xD254, 0xCFF6, 0xCDBE, 0xCBB8, 0xC9EE, 0xC8B2,\n    0xC891, 0xC9EE, 0xCC57, 0xCF09, 0xD1F4, 0xD507, 0xD831, 0xDB61,\n    0xDE85, 0xE18D, 0xE468, 0xE705, 0xE952, 0xEAF5, 0xEBC7, 0xEC0C,\n    0xEC05, 0xEBF3, 0xEBF1, 0xEBEA, 0xEBDE, 0xEBCF, 0xEBBC, 0xEBA5,\n    0xEB8C, 0xEB70, 0xEB52, 0xEB32, 0xEB10, 0xEAEE, 0xEACA, 0xEAA6,\n    0xEA82, 0xEA5E, 0xEA3B, 0xEA19, 0xE9F7, 0xE9D8, 0xE9BB, 0xE9A0,\n    0xE988, 0xE972, 0xE961, 0xE952, 0xE947, 0xE93B, 0xE931, 0xE927,\n    0xE91D, 0xE914, 0xE90C, 0xE904, 0xE8FE, 0xE8F8, 0xE8F2, 0xE8EE,\n    0xE8EB, 0xE8E8, 0xE8E6, 0xE8E6, 0xE8E6, 0xE8E7, 0x0000, 0x0028,\n    0x009B, 0x0150, 0x0240, 0x0361, 0x04AC, 0x0618, 0x079E, 0x0933,\n    0x0AD1, 0x0C70, 0x0E05, 0x0F8A, 0x10F7, 0x1242, 0x1363, 0x1453,\n    0x1508, 0x157B, 0x15A3, 0x1576, 0x14F5, 0x1429, 0x131C, 0x11D8,\n    0x1064, 0x0ECC, 0x0D19, 0x0B53, 0x0984, 0x07B5, 0x05F1, 0x0440,\n    0x02AC, 0x013E, 0x0000, 0xFF27, 0xFF10, 0x0000, 0x01A9, 0x0384,\n    0x0588, 0x07A6, 0x09D4, 0x0C06, 0x0E31, 0x1048, 0x1240, 0x140D,\n    0x15A3, 0x16C4, 0x1755, 0x1784, 0x177F, 0x1773, 0x1772, 0x176D,\n    0x1765, 0x175A, 0x174D, 0x173D, 0x172C, 0x1719, 0x1704, 0x16EE,\n    0x16D7, 0x16BF, 0x16A6, 0x168D, 0x1674, 0x165C, 0x1643, 0x162C,\n    0x1615, 0x15FF, 0x15EB, 0x15D9, 0x15C8, 0x15B9, 0x15AD, 0x15A3,\n    0x159B, 0x1593, 0x158C, 0x1585, 0x157E, 0x1578, 0x1573, 0x156E,\n    0x1569, 0x1565, 0x1561, 0x155E, 0x155C, 0x155A, 0x1559, 0x1558,\n    0x1558, 0x1559, 0x0000, 0x001A, 0x0066, 0x00DD, 0x017B, 0x023A,\n    0x0314, 0x0404, 0x0504, 0x0610, 0x0721, 0x0831, 0x093D, 0x0A3D,\n    0x0B2D, 0x0C07, 0x0CC6, 0x0D64, 0x0DDB, 0x0E27, 0x0E42, 0x0E24,\n    0x0DCF, 0x0D49, 0x0C97, 0x0BC1, 0x0ACD, 0x09C0, 0x08A1, 0x0776,\n    0x0645, 0x0514, 0x03EA, 0x02CD, 0x01C3, 0x00D1, 0x0000, 0xFF71,\n    0xFF62, 0x0000, 0x0118, 0x0251, 0x03A5, 0x050A, 0x067A, 0x07EC,\n    0x095A, 0x0ABA, 0x0C06, 0x0D36, 0x0E42, 0x0F00, 0x0F5F, 0x0F7E,\n    0x0F7B, 0x0F73, 0x0F72, 0x0F6F, 0x0F6A, 0x0F63, 0x0F5A, 0x0F50,\n    0x0F44, 0x0F38, 0x0F2A, 0x0F1B, 0x0F0C, 0x0EFC, 0x0EEC, 0x0EDC,\n    0x0ECB, 0x0EBB, 0x0EAB, 0x0E9C, 0x0E8D, 0x0E7E, 0x0E71, 0x0E65,\n    0x0E5A, 0x0E50, 0x0E48, 0x0E42, 0x0E3C, 0x0E37, 0x0E32, 0x0E2E,\n    0x0E29, 0x0E25, 0x0E22, 0x0E1E, 0x0E1B, 0x0E18, 0x0E16, 0x0E14,\n    0x0E12, 0x0E11, 0x0E11, 0x0E10, 0x0E10, 0x0E11, 0xF549, 0xF537,\n    0xF504, 0xF4B4, 0xF449, 0xF3C8, 0xF335, 0xF293, 0xF1E6, 0xF131,\n    0xF079, 0xEFC1, 0xEF0C, 0xEE5F, 0xEDBD, 0xED29, 0xECA9, 0xEC3E,\n    0xEBED, 0xEBBA, 0xEBA8, 0xEBBC, 0xEBF6, 0xEC50, 0xECC8, 0xED59,\n    0xEDFE, 0xEEB3, 0xEF75, 0xF03F, 0xF10D, 0xF1DB, 0xF2A4, 0xF365,\n    0xF419, 0xF4BC, 0xF549, 0xF5AA, 0xF5B4, 0xF549, 0xF48C, 0xF3B8,\n    0xF2D3, 0xF1E2, 0xF0E9, 0xEFEF, 0xEEF9, 0xEE0B, 0xED2A, 0xEC5D,\n    0xEBA8, 0xEB28, 0xEAE7, 0xEAD2, 0xEAD5, 0xEADA, 0xEADB, 0xEADD,\n    0xEAE0, 0xEAE5, 0xEAEB, 0xEAF2, 0xEAFA, 0xEB02, 0xEB0B, 0xEB15,\n    0xEB20, 0xEB2A, 0xEB35, 0xEB40, 0xEB4B, 0xEB56, 0xEB61, 0xEB6C,\n    0xEB76, 0xEB7F, 0xEB88, 0xEB91, 0xEB98, 0xEB9F, 0xEBA4, 0xEBA8,\n    0xEBAC, 0xEBAF, 0xEBB3, 0xEBB6, 0xEBB9, 0xEBBB, 0xEBBE, 0xEBC0,\n    0xEBC2, 0xEBC4, 0xEBC6, 0xEBC7, 0xEBC8, 0xEBC9, 0xEBC9, 0xEBCA,\n    0xEBCA, 0xEBC9, 0xC7DD, 0xC80B, 0xC88E, 0xC95D, 0xCA70, 0xCBBD,\n    0xCD3B, 0xCEE2, 0xD0A8, 0xD285, 0xD46F, 0xD65D, 0xD848, 0xDA24,\n    0xDBEA, 0xDD91, 0xDF0F, 0xE05C, 0xE16F, 0xE23E, 0xE2C1, 0xE2F3,\n    0xE2D8, 0xE27A, 0xE1E1, 0xE115, 0xE01F, 0xDF06, 0xDDD4, 0xDC90,\n    0xDB42, 0xD9F4, 0xD8AD, 0xD775, 0xD655, 0xD556, 0xD47F, 0xD3EF,\n    0xD3E0, 0xD47F, 0xD597, 0xD6D0, 0xD824, 0xD989, 0xDAF9, 0xDC6C,\n    0xDDD9, 0xDF3A, 0xE086, 0xE1B5, 0xE2C1, 0xE37F, 0xE3DF, 0xE3FE,\n    0xE3FB, 0xE3F3, 0xE3F2, 0xE3EF, 0xE3E9, 0xE3E2, 0xE3DA, 0xE3D0,\n    0xE3C4, 0xE3B7, 0xE3AA, 0xE39B, 0xE38C, 0xE37C, 0xE36C, 0xE35C,\n    0xE34B, 0xE33B, 0xE32B, 0xE31B, 0xE30C, 0xE2FE, 0xE2F1, 0xE2E4,\n    0xE2D9, 0xE2D0, 0xE2C8, 0xE2C1, 0xE2BC, 0xE2B7, 0xE2B2, 0xE2AD,\n    0xE2A9, 0xE2A5, 0xE2A1, 0xE29E, 0xE29B, 0xE298, 0xE296, 0xE294,\n    0xE292, 0xE291, 0xE290, 0xE290, 0xE290, 0xE291, 0x054B, 0x0537,\n    0x04FB, 0x049B, 0x0419, 0x0379, 0x02BE, 0x01E9, 0x0100, 0x0003,\n    0xFEF7, 0xFDDE, 0xFCBA, 0xFB90, 0xFA61, 0xF931, 0xF802, 0xF6D9,\n    0xF5B6, 0xF49E, 0xF394, 0xF28A, 0xF171, 0xF04D, 0xEF1F, 0xEDEA,\n    0xECAE, 0xEB6F, 0xEA2F, 0xE8EF, 0xE7B1, 0xE678, 0xE545, 0xE41C,\n    0xE2FC, 0xE1EA, 0xE0E6, 0xE02A, 0xE016, 0xE0E6, 0xE252, 0xE3E4,\n    0xE594, 0xE75B, 0xE931, 0xEB0C, 0xECE5, 0xEEB4, 0xF071, 0xF214,\n    0xF394, 0xF4D1, 0xF5C1, 0xF67A, 0xF715, 0xF7AA, 0xF841, 0xF8D3,\n    0xF961, 0xF9EC, 0xFA74, 0xFAFA, 0xFB7E, 0xFC01, 0xFC83, 0xFD04,\n    0xFD86, 0xFE08, 0xFE8B, 0xFF11, 0xFF98, 0x0021, 0x00C6, 0x0181,\n    0x0228, 0x0293, 0x02BE, 0x02CB, 0x02C2, 0x02AF, 0x029C, 0x0293,\n    0x0295, 0x029C, 0x02A6, 0x02B3, 0x02C4, 0x02D6, 0x02EB, 0x0300,\n    0x0317, 0x032E, 0x0345, 0x035C, 0x0372, 0x0386, 0x0399, 0x03A9,\n    0x03B7, 0x03C1, 0x2BD6, 0x2BBC, 0x2B70, 0x2AF9, 0x2A5C, 0x299E,\n    0x28C5, 0x27D7, 0x26DA, 0x25D2, 0x24C7, 0x23BC, 0x22B8, 0x21C0,\n    0x20DA, 0x200C, 0x1F5B, 0x1ECC, 0x1E66, 0x1E2E, 0x1E29, 0x1E60,\n    0x1ED4, 0x1F7D, 0x2056, 0x2156, 0x2277, 0x23B2, 0x2502, 0x265E,\n    0x27C0, 0x2921, 0x2A7B, 0x2BC6, 0x2CFC, 0x2E16, 0x2F0D, 0x2FB7,\n    0x2FC9, 0x2F0D, 0x2DC5, 0x2C59, 0x2AD3, 0x2938, 0x2790, 0x25E3,\n    0x2438, 0x2295, 0x2102, 0x1F86, 0x1E29, 0x1D06, 0x1C26, 0x1B76,\n    0x1AE2, 0x1A57, 0x19CB, 0x193F, 0x18B5, 0x182D, 0x17A7, 0x1723,\n    0x16A1, 0x1621, 0x15A4, 0x152A, 0x14B3, 0x143F, 0x13CF, 0x1362,\n    0x12F8, 0x1293, 0x125B, 0x1261, 0x1280, 0x1293, 0x1293, 0x1293,\n    0x1293, 0x1293, 0x1293, 0x1293, 0x1291, 0x128D, 0x1286, 0x127C,\n    0x1270, 0x1263, 0x1255, 0x1245, 0x1235, 0x1224, 0x1214, 0x1204,\n    0x11F4, 0x11E6, 0x11D9, 0x11CD, 0x11C3, 0x11BC, 0xCCF6, 0xCCC5,\n    0xCC38, 0xCB59, 0xCA31, 0xC8CA, 0xC72E, 0xC567, 0xC37D, 0xC17B,\n    0xBF6B, 0xBD55, 0xBB45, 0xB942, 0xB757, 0xB58E, 0xB3F0, 0xB287,\n    0xB15C, 0xB07A, 0xAFE9, 0xAFB0, 0xAFC7, 0xB026, 0xB0C5, 0xB199,\n    0xB29B, 0xB3C1, 0xB503, 0xB657, 0xB7B6, 0xB916, 0xBA6E, 0xBBB6,\n    0xBCE4, 0xBDF0, 0xBED1, 0xBF67, 0xBF77, 0xBED1, 0xBDA2, 0xBC40,\n    0xBAB8, 0xB91A, 0xB772, 0xB5D0, 0xB442, 0xB2D6, 0xB199, 0xB09B,\n    0xAFE9, 0xAFF2, 0xB0E8, 0xB280, 0xB46D, 0xB665, 0xB854, 0xBA59,\n    0xBC70, 0xBE95, 0xC0C5, 0xC2FD, 0xC537, 0xC772, 0xC9A9, 0xCBD8,\n    0xCDFD, 0xD013, 0xD218, 0xD406, 0xD5DB, 0xD794, 0xD883, 0xD868,\n    0xD7E3, 0xD794, 0xD794, 0xD794, 0xD794, 0xD794, 0xD794, 0xD794,\n    0xD79B, 0xD7AE, 0xD7CD, 0xD7F6, 0xD827, 0xD860, 0xD89E, 0xD8E0,\n    0xD925, 0xD96C, 0xD9B2, 0xD9F7, 0xDA3A, 0xDA78, 0xDAB0, 0xDAE2,\n    0xDB0A, 0xDB29, 0x0000, 0x0000, 0x000F, 0x003B, 0x007F, 0x00D5,\n    0x013A, 0x01A9, 0x021E, 0x0293, 0x0304, 0x036D, 0x03C8, 0x0413,\n    0x0457, 0x049A, 0x04CD, 0x04E3, 0x04CC, 0x047B, 0x0335, 0x013E,\n    0x0000, 0xFFB1, 0xFF8B, 0xFF86, 0xFF98, 0xFFB7, 0xFFD9, 0xFFF5,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFF30, 0xFF30,\n    0xFF33, 0xFF3A, 0xFF46, 0xFF54, 0xFF66, 0xFF79, 0xFF8D, 0xFFA1,\n    0xFFB4, 0xFFC7, 0xFFD7, 0xFFE4, 0xFFEE, 0xFFF4, 0xFFF9, 0xFFFB,\n    0xFFFE, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xC9D8, 0xC9D8, 0xC9C8, 0xC99A, 0xC952, 0xC8F2,\n    0xC87D, 0xC7F7, 0xC764, 0xC6C5, 0xC61F, 0xC574, 0xC4C9, 0xC41F,\n    0xC368, 0xC293, 0xC1A0, 0xC08E, 0xBF5B, 0xBE07, 0xBBAC, 0xB8D1,\n    0xB796, 0xB80D, 0xB8D3, 0xB9DC, 0xBB1C, 0xBC86, 0xBE0F, 0xBFA9,\n    0xC14A, 0xC3A7, 0xC6C9, 0xC99D, 0xCB11, 0xCADB, 0xC9B3, 0xC809,\n    0xC64F, 0xC4F4, 0xC4F4, 0xC612, 0xC78C, 0xC8F0, 0xC9CB, 0xC9AA,\n    0xC7A0, 0xC406, 0xC056, 0xBE07, 0xBE72, 0xC073, 0xC1C5, 0xC174,\n    0xC075, 0xBF69, 0xBE68, 0xBD43, 0xBC29, 0xBB4B, 0xBAD8, 0xBAB0,\n    0xBA8F, 0xBA75, 0xBA63, 0xBA56, 0xBA4F, 0xBA4D, 0xBA4F, 0xBA54,\n    0xBA5D, 0xBA68, 0xBA75, 0xBA84, 0xBA92, 0xBAA1, 0xBAB0, 0xBABD,\n    0xBAC8, 0xBAD1, 0xBAD6, 0xBAD8, 0xBAD7, 0xBAD5, 0xBAD0, 0xBACB,\n    0xBAC4, 0xBABC, 0xBAB4, 0xBAAB, 0xBAA1, 0xBA97, 0xBA8E, 0xBA84,\n    0xBA7B, 0xBA73, 0xBA6B, 0xBA64, 0xBA5E, 0xBA5A, 0x1E4A, 0x1E4A,\n    0x1E33, 0x1DF2, 0x1D8B, 0x1D03, 0x1C5C, 0x1B9C, 0x1AC7, 0x19E1,\n    0x18EE, 0x17F2, 0x16F2, 0x15F2, 0x14F6, 0x1402, 0x131A, 0x1243,\n    0x1181, 0x10D8, 0x0F9F, 0x0EF7, 0x118D, 0x17ED, 0x2029, 0x2937,\n    0x3210, 0x39AA, 0x4024, 0x4514, 0x469F, 0x4471, 0x400D, 0x3A5C,\n    0x344A, 0x2DBF, 0x2667, 0x1ECC, 0x177C, 0x1101, 0x1101, 0x10FB,\n    0x10F3, 0x10E9, 0x10DF, 0x10D6, 0x10D0, 0x10CD, 0x10CF, 0x10D8,\n    0x1122, 0x118C, 0x118D, 0x10D1, 0x0FAB, 0x0E8A, 0x0D75, 0x0C44,\n    0x0B24, 0x0A44, 0x09CF, 0x09A5, 0x0983, 0x0969, 0x0955, 0x0948,\n    0x0941, 0x093F, 0x0941, 0x0947, 0x0950, 0x095B, 0x0969, 0x0978,\n    0x0987, 0x0996, 0x09A5, 0x09B3, 0x09BE, 0x09C7, 0x09CD, 0x09CF,\n    0x09CF, 0x09CF, 0x09CF, 0x09CF, 0x09CF, 0x09CF, 0x09CF, 0x09CF,\n    0x09CF, 0x09CF, 0x09CF, 0x09CF, 0x09CF, 0x09CF, 0x09CF, 0x09CF,\n    0x09CF, 0x09CF, 0x1B09, 0x1B09, 0x1AEA, 0x1A91, 0x1A02, 0x1943,\n    0x1859, 0x1749, 0x1618, 0x14CB, 0x1367, 0x11F1, 0x106E, 0x0EE3,\n    0x0D56, 0x0BCB, 0x0A47, 0x08D0, 0x076B, 0x061C, 0x044A, 0x0216,\n    0x00A1, 0x0026, 0x0008, 0x0023, 0x004F, 0x0068, 0x0081, 0x00A9,\n    0x00B5, 0x0090, 0x0052, 0x0016, 0xFFF5, 0xFFF2, 0x0000, 0x0016,\n    0x002E, 0x0040, 0x0040, 0x0044, 0x0047, 0x004A, 0x004E, 0x0051,\n    0x0055, 0x005A, 0x0060, 0x0068, 0x004D, 0x0039, 0x00A1, 0x01DA,\n    0x038F, 0x0533, 0x06C8, 0x0881, 0x0A1F, 0x0B62, 0x0C08, 0x0C45,\n    0x0C77, 0x0C9D, 0x0CB9, 0x0CCD, 0x0CD8, 0x0CDB, 0x0CD9, 0x0CD0,\n    0x0CC4, 0x0CB3, 0x0CA0, 0x0C8B, 0x0C74, 0x0C5E, 0x0C49, 0x0C35,\n    0x0C23, 0x0C16, 0x0C0C, 0x0C08, 0x0C07, 0x0C06, 0x0C05, 0x0C04,\n    0x0C04, 0x0C03, 0x0C02, 0x0C02, 0x0C01, 0x0C01, 0x0C00, 0x0C00,\n    0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x0C00, 0x1144, 0x1144,\n    0x1134, 0x1104, 0x10B7, 0x104F, 0x0FCF, 0x0F3A, 0x0E90, 0x0DD6,\n    0x0D0C, 0x0C36, 0x0B56, 0x0A6F, 0x0982, 0x0892, 0x07A1, 0x06B2,\n    0x05C7, 0x04E3, 0x031C, 0x0094, 0xFEE1, 0xFE61, 0xFE4A, 0xFE72,\n    0xFEAA, 0xFEC8, 0xFED2, 0xFEE5, 0xFEED, 0xFEDF, 0xFEC6, 0xFEB3,\n    0xFEB7, 0xFED8, 0xFF0A, 0xFF44, 0xFF7E, 0xFFAF, 0xFFAF, 0xFF96,\n    0xFF7C, 0xFF5F, 0xFF43, 0xFF26, 0xFF0B, 0xFEF2, 0xFEDB, 0xFEC8,\n    0xFEC0, 0xFEC9, 0xFEE1, 0xFF0C, 0xFF45, 0xFF7C, 0xFFB1, 0xFFEA,\n    0x001E, 0x0048, 0x005E, 0x0066, 0x006C, 0x0071, 0x0075, 0x0077,\n    0x0078, 0x0079, 0x0078, 0x0077, 0x0076, 0x0073, 0x0071, 0x006E,\n    0x006B, 0x0068, 0x0066, 0x0063, 0x0061, 0x005F, 0x005E, 0x005E,\n    0x005E, 0x005E, 0x005F, 0x0060, 0x0062, 0x0063, 0x0065, 0x0067,\n    0x0068, 0x006A, 0x006C, 0x006E, 0x0070, 0x0071, 0x0073, 0x0074,\n    0x0075, 0x0076, 0xAC44, 0xAC44, 0xAC66, 0xACC8, 0xAD67, 0xAE3C,\n    0xAF43, 0xB077, 0xB1D3, 0xB352, 0xB4F0, 0xB6A7, 0xB872, 0xBA4D,\n    0xBC33, 0xBE1E, 0xC00B, 0xC1F3, 0xC3D3, 0xC5A4, 0xC9D6, 0xCF89,\n    0xD1C1, 0xCFA6, 0xCBFD, 0xC73A, 0xC1D2, 0xBC38, 0xB499, 0xAB9A,\n    0xA564, 0xA30C, 0xA27A, 0xA310, 0xA42E, 0xA5D8, 0xA83D, 0xAAFA,\n    0xADB0, 0xAFFC, 0xAFFC, 0xB228, 0xB45A, 0xB696, 0xB8E1, 0xBB3C,\n    0xBDAB, 0xC032, 0xC2D4, 0xC594, 0xC985, 0xCE4A, 0xD1C1, 0xD2DE,\n    0xD2AE, 0xD237, 0xD1CC, 0xD12C, 0xD080, 0xCFF1, 0xCFA7, 0xCF90,\n    0xCF7E, 0xCF70, 0xCF65, 0xCF5E, 0xCF5A, 0xCF59, 0xCF5A, 0xCF5D,\n    0xCF62, 0xCF68, 0xCF70, 0xCF78, 0xCF80, 0xCF88, 0xCF90, 0xCF98,\n    0xCF9E, 0xCFA3, 0xCFA6, 0xCFA7, 0xCFA7, 0xCFA5, 0xCFA3, 0xCFA0,\n    0xCF9C, 0xCF98, 0xCF93, 0xCF8E, 0xCF88, 0xCF83, 0xCF7D, 0xCF78,\n    0xCF73, 0xCF6E, 0xCF6A, 0xCF66, 0xCF63, 0xCF60, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFEC, 0xFFC3, 0xFFA5,\n    0xFFAF, 0x0000, 0x0108, 0x02A1, 0x0408, 0x0479, 0x041C, 0x039A,\n    0x02FB, 0x0244, 0x017A, 0x00A4, 0xFFC7, 0xFEE8, 0xFE0D, 0xFD3B,\n    0xFC79, 0xFBCD, 0xFB3B, 0xFAC9, 0xFA79, 0xFA45, 0xFA28, 0xFA20,\n    0xFA27, 0xFA3A, 0xFA55, 0xFA74, 0xFA94, 0xFAAF, 0xFAC2, 0xFAC9,\n    0xFAC7, 0xFAC1, 0xFAB8, 0xFAAD, 0xFA9E, 0xFA8E, 0xFA7C, 0xFA68,\n    0xFA54, 0xFA3F, 0xFA2B, 0xFA17, 0xFA03, 0xF9F1, 0xF9E1, 0xF9D2,\n    0xF9C6, 0xF9BD, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0001, 0x0003, 0x0004, 0x0004, 0x0000, 0xFFF7, 0xFFE9,\n    0xFFD8, 0xFFC7, 0xFFB7, 0xFFA5, 0xFF93, 0xFF81, 0xFF6E, 0xFF5B,\n    0xFF49, 0xFF37, 0xFF25, 0xFF15, 0xFF06, 0xFEF8, 0xFEED, 0xFEE3,\n    0xFEDB, 0xFED7, 0xFED4, 0xFED3, 0xFED4, 0xFED6, 0xFED8, 0xFEDB,\n    0xFEDE, 0xFEE0, 0xFEE2, 0xFEE3, 0xFEE3, 0xFEE2, 0xFEE1, 0xFEE0,\n    0xFEDF, 0xFEDD, 0xFEDC, 0xFEDA, 0xFED8, 0xFED6, 0xFED4, 0xFED2,\n    0xFED1, 0xFECF, 0xFECD, 0xFECC, 0xFECB, 0xFECA, 0xBF40, 0xBF4B,\n    0xBF69, 0xBF99, 0xBFDB, 0xC02C, 0xC08C, 0xC0F9, 0xC171, 0xC1F3,\n    0xC27E, 0xC311, 0xC3AA, 0xC447, 0xC4E8, 0xC58A, 0xC62D, 0xC73D,\n    0xC8DB, 0xCA96, 0xCBFD, 0xCCA0, 0xCC44, 0xCB36, 0xC9CB, 0xC859,\n    0xC736, 0xC766, 0xC471, 0xC208, 0xC17F, 0xC120, 0xC0E4, 0xC0C2,\n    0xC0B1, 0xC0AA, 0xC0A4, 0xC096, 0xC079, 0xC079, 0xC329, 0xC647,\n    0xC837, 0xC843, 0xC75C, 0xC65F, 0xC62D, 0xC703, 0xC859, 0xC9EA,\n    0xCB6E, 0xCCA0, 0xCD81, 0xCE32, 0xCE9C, 0xCEA6, 0xCE6F, 0xCE26,\n    0xCDCE, 0xCD6A, 0xCCFD, 0xCC8A, 0xCC14, 0xCB9D, 0xCB29, 0xCABA,\n    0xCA53, 0xC9F8, 0xC9AA, 0xC96D, 0xC942, 0xC926, 0xC917, 0xC912,\n    0xC916, 0xC920, 0xC92F, 0xC940, 0xC950, 0xC95F, 0xC969, 0xC96D,\n    0xC96C, 0xC969, 0xC964, 0xC95E, 0xC956, 0xC94D, 0xC944, 0xC939,\n    0xC92E, 0xC923, 0xC918, 0xC90D, 0xC903, 0xC8F9, 0xC8F0, 0xC8E8,\n    0xC8E2, 0xC8DD, 0x2537, 0x2575, 0x2625, 0x2733, 0x288C, 0x2A1D,\n    0x2BD4, 0x2D9D, 0x2F65, 0x311A, 0x32A8, 0x33FD, 0x3506, 0x35AF,\n    0x35E6, 0x3598, 0x34B2, 0x303C, 0x2720, 0x1C24, 0x120B, 0x0B97,\n    0x08EB, 0x07FD, 0x0850, 0x0967, 0x0AC8, 0x0BF4, 0x0F0B, 0x12E1,\n    0x1542, 0x1795, 0x19DB, 0x1C13, 0x1E3E, 0x205D, 0x226F, 0x2475,\n    0x2670, 0x2670, 0x3235, 0x3FCF, 0x4770, 0x46E7, 0x4269, 0x3BBF,\n    0x34B2, 0x2CCD, 0x2359, 0x19BC, 0x1159, 0x0B97, 0x0A20, 0x0C1A,\n    0x0F26, 0x10E3, 0x1124, 0x1152, 0x116F, 0x117D, 0x117F, 0x1177,\n    0x1167, 0x1152, 0x113A, 0x1121, 0x1109, 0x10F6, 0x10E8, 0x10E3,\n    0x10E3, 0x10E3, 0x10E3, 0x10E3, 0x10E3, 0x10E3, 0x10E3, 0x10E3,\n    0x10E3, 0x10E3, 0x10E3, 0x10E3, 0x10E3, 0x10E3, 0x10E3, 0x10E3,\n    0x10E3, 0x10E3, 0x10E3, 0x10E3, 0x10E3, 0x10E3, 0x10E3, 0x10E3,\n    0x10E3, 0x10E3, 0x10E3, 0x10E3, 0x10E3, 0x10E3, 0xD64A, 0xD6BA,\n    0xD7F5, 0xD9DB, 0xDC4F, 0xDF31, 0xE262, 0xE5C4, 0xE937, 0xEC9E,\n    0xEFD8, 0xF2C7, 0xF54D, 0xF751, 0xF8D9, 0xF9F4, 0xFAAF, 0xFAFC,\n    0xFAE5, 0xFAA0, 0xFA61, 0xFA5D, 0xFA9A, 0xFAF3, 0xFB5C, 0xFBCB,\n    0xFC32, 0xFC88, 0xFC8C, 0xFC9E, 0xFD07, 0xFD79, 0xFDF2, 0xFE6F,\n    0xFEEE, 0xFF6D, 0xFFE9, 0x005F, 0x00CE, 0x00CE, 0xFB46, 0xF4E0,\n    0xF156, 0xF21D, 0xF512, 0xF87F, 0xFAAF, 0xFB4C, 0xFB4F, 0xFAFB,\n    0xFA94, 0xFA5E, 0xFA5D, 0xFA64, 0xFA6C, 0xFA6B, 0xFA62, 0xFA58,\n    0xFA4D, 0xFA41, 0xFA34, 0xFA27, 0xFA1A, 0xFA0D, 0xFA00, 0xF9F4,\n    0xF9E9, 0xF9DF, 0xF9D7, 0xF9D0, 0xF9CB, 0xF9C8, 0xF9C6, 0xF9C5,\n    0xF9C6, 0xF9C7, 0xF9C9, 0xF9CB, 0xF9CD, 0xF9CE, 0xF9CF, 0xF9D0,\n    0xF9D0, 0xF9CF, 0xF9CF, 0xF9CE, 0xF9CD, 0xF9CC, 0xF9CB, 0xF9CA,\n    0xF9C9, 0xF9C7, 0xF9C6, 0xF9C5, 0xF9C4, 0xF9C2, 0xF9C1, 0xF9C0,\n    0xF9C0, 0xF9BF, 0xEC41, 0xEC49, 0xEC62, 0xEC8D, 0xECCC, 0xED20,\n    0xED8B, 0xEE0E, 0xEEAB, 0xEF64, 0xF039, 0xF12C, 0xF23F, 0xF480,\n    0xF822, 0xFBE0, 0xFE74, 0xFFA1, 0x002B, 0x0051, 0x004C, 0x005A,\n    0x0076, 0x007D, 0x0074, 0x0063, 0x004F, 0x003E, 0x001A, 0xFFFB,\n    0xFFFA, 0xFFFA, 0xFFFD, 0x0001, 0x0006, 0x000C, 0x0011, 0x0017,\n    0x001B, 0x001B, 0x001E, 0x0020, 0x0000, 0xFFA2, 0xFF21, 0xFEAD,\n    0xFE74, 0xFE81, 0xFEB5, 0xFEFF, 0xFF53, 0xFF9F, 0xFFFE, 0x0070,\n    0x00C9, 0x00DB, 0x00B2, 0x007D, 0x003F, 0xFFFA, 0xFFAD, 0xFF5D,\n    0xFF0B, 0xFEB9, 0xFE68, 0xFE1C, 0xFDD5, 0xFD95, 0xFD5F, 0xFD35,\n    0xFD17, 0xFD03, 0xFCF8, 0xFCF5, 0xFCF8, 0xFCFF, 0xFD09, 0xFD15,\n    0xFD21, 0xFD2B, 0xFD32, 0xFD35, 0xFD34, 0xFD32, 0xFD2F, 0xFD2A,\n    0xFD25, 0xFD1F, 0xFD18, 0xFD10, 0xFD09, 0xFD01, 0xFCF9, 0xFCF2,\n    0xFCEA, 0xFCE4, 0xFCDD, 0xFCD8, 0xFCD3, 0xFCD0, 0xB59E, 0xB60B,\n    0xB740, 0xB91F, 0xBB8A, 0xBE67, 0xC196, 0xC4FC, 0xC87B, 0xCBF6,\n    0xCF51, 0xD26F, 0xD531, 0xD79B, 0xD9D7, 0xDC0B, 0xDE5B, 0xE0D3,\n    0xE360, 0xE5F1, 0xE87A, 0xEAEA, 0xED45, 0xEF97, 0xF1DE, 0xF41C,\n    0xF64D, 0xF873, 0xFBC8, 0xFBE3, 0xF738, 0xF1F9, 0xEC49, 0xE64C,\n    0xE028, 0xD9FF, 0xD3F6, 0xCE32, 0xC8D7, 0xC8D7, 0xC1AB, 0xB986,\n    0xB752, 0xBE2F, 0xC9CD, 0xD5EF, 0xDE5B, 0xE21F, 0xE3C6, 0xE445,\n    0xE494, 0xE5AB, 0xE7EA, 0xEA99, 0xED09, 0xEE8C, 0xEF52, 0xF004,\n    0xF0A3, 0xF131, 0xF1AF, 0xF21F, 0xF282, 0xF2DB, 0xF32A, 0xF372,\n    0xF3B4, 0xF3F1, 0xF42C, 0xF466, 0xF496, 0xF4B6, 0xF4C7, 0xF4CC,\n    0xF4C8, 0xF4BC, 0xF4AC, 0xF499, 0xF486, 0xF476, 0xF46A, 0xF466,\n    0xF467, 0xF46A, 0xF470, 0xF477, 0xF480, 0xF48A, 0xF495, 0xF4A0,\n    0xF4AC, 0xF4B9, 0xF4C5, 0xF4D1, 0xF4DD, 0xF4E8, 0xF4F2, 0xF4FB,\n    0xF502, 0xF507, 0x8001, 0x8001, 0x4171, 0x417E, 0x41A5, 0x41E3,\n    0x4234, 0x4296, 0x4306, 0x4382, 0x4406, 0x448F, 0x451B, 0x45A8,\n    0x4631, 0x46B5, 0x4731, 0x47A1, 0x4803, 0x4854, 0x4891, 0x48B8,\n    0x48C6, 0x48BB, 0x4899, 0x4864, 0x481D, 0x47C7, 0x4763, 0x46F3,\n    0x467A, 0x45FA, 0x4574, 0x44EA, 0x445F, 0x43D4, 0x434D, 0x42CA,\n    0x424D, 0x41DA, 0x4171, 0x4171, 0x4213, 0x42C0, 0x4374, 0x442D,\n    0x44E7, 0x45A0, 0x4655, 0x4703, 0x47A7, 0x483E, 0x48C6, 0x4928,\n    0x4959, 0x4969, 0x4967, 0x4963, 0x4963, 0x4961, 0x495E, 0x495B,\n    0x4956, 0x4951, 0x494B, 0x4945, 0x493E, 0x4936, 0x492E, 0x4926,\n    0x491E, 0x4915, 0x490D, 0x4905, 0x48FC, 0x48F4, 0x48ED, 0x48E5,\n    0x48DE, 0x48D8, 0x48D2, 0x48CD, 0x48C9, 0x48C6, 0x48C3, 0x48C1,\n    0x48BE, 0x48BC, 0x48BA, 0x48B8, 0x48B6, 0x48B4, 0x48B2, 0x48B1,\n    0x48B0, 0x48AF, 0x48AE, 0x48AD, 0x48AD, 0x48AD, 0x48AD, 0x48AD,\n    0x0000, 0x0000, 0xFFFF, 0xFFFE, 0xFFFC, 0xFFFA, 0xFFF8, 0xFFF6,\n    0xFFF4, 0xFFF3, 0xFFF2, 0xFFF2, 0xFFF2, 0xFFF4, 0xFFF7, 0xFFFB,\n    0x0000, 0x0011, 0x0032, 0x0058, 0x0077, 0x0083, 0x007C, 0x0069,\n    0x004F, 0x0031, 0x0016, 0x0000, 0xFFF7, 0xFFF7, 0xFFF7, 0xFFF8,\n    0xFFF9, 0xFFFA, 0xFFFB, 0xFFFD, 0xFFFE, 0xFFFF, 0x0000, 0x0000,\n    0xFA6B, 0xF400, 0xF0ED, 0xF2F5, 0xF799, 0xFCAC, 0x0000, 0x0127,\n    0x0166, 0x011F, 0x00B3, 0x0083, 0x008C, 0x008B, 0x0086, 0x0083,\n    0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083,\n    0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083,\n    0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083,\n    0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083,\n    0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083,\n    0x0083, 0x0083, 0x0083, 0x0083, 0xBF5F, 0xBEE6, 0xBD8C, 0xBB6B,\n    0xB89D, 0xB53B, 0xB160, 0xAD24, 0xA8A2, 0xA3F3, 0x9F32, 0x9A77,\n    0x95DD, 0x917D, 0x8D71, 0x89D4, 0x86BD, 0x84C1, 0x840D, 0x8425,\n    0x848F, 0x84CE, 0x84E9, 0x8531, 0x8594, 0x8602, 0x866A, 0x86BD,\n    0x8570, 0x86E1, 0x8CF4, 0x939A, 0x9AAC, 0xA205, 0xA981, 0xB0FB,\n    0xB84D, 0xBF51, 0xC5E4, 0xC5E4, 0xC57B, 0xC4B5, 0xBF5F, 0xB2AB,\n    0xA1CC, 0x918F, 0x86BD, 0x8268, 0x817A, 0x8284, 0x841A, 0x84CE,\n    0x84AF, 0x84B2, 0x84C3, 0x84CE, 0x84CE, 0x84CE, 0x84CE, 0x84CE,\n    0x84CE, 0x84CE, 0x84CE, 0x84CE, 0x84CE, 0x84CE, 0x84CE, 0x84CE,\n    0x84CE, 0x84CE, 0x84CE, 0x84CE, 0x84CE, 0x84CE, 0x84CE, 0x84CE,\n    0x84CE, 0x84CE, 0x84CE, 0x84CE, 0x84CE, 0x84CE, 0x84CE, 0x84CE,\n    0x84CE, 0x84CE, 0x84CE, 0x84CE, 0x84CE, 0x84CE, 0x84CE, 0x84CE,\n    0x84CE, 0x84CE, 0x84CE, 0x84CE, 0x84CE, 0x84CE, 0x84CE, 0x84CE,\n    0x8001, 0x8001, 0x4171, 0xBF5F, 0x0000, 0x0015, 0x0052, 0x00AC,\n    0x011B, 0x0197, 0x0217, 0x0294, 0x0303, 0x035E, 0x039B, 0x03B2,\n    0x039A, 0x034C, 0x02CA, 0x021F, 0x0155, 0x0074, 0xFF89, 0xFE9A,\n    0xFDB3, 0xFCDD, 0xFC22, 0xFB8C, 0xFB75, 0xFBEE, 0xFC94, 0xFD34,\n    0xFDDA, 0xFE86, 0xFF36, 0xFFE9, 0x009C, 0x0150, 0x0204, 0x02B5,\n    0x0363, 0x040C, 0x04B0, 0x04B0, 0x0469, 0x0414, 0x039A, 0x0310,\n    0x0294, 0x0220, 0x01B1, 0x0142, 0x00CD, 0x004F, 0xFFC3, 0xFF24,\n    0xFE6D, 0xFD99, 0xFCA5, 0xFB8C, 0xFA2E, 0xF87D, 0xF68C, 0xF46B,\n    0xF22F, 0xEFE9, 0xEDAB, 0xEB89, 0xE994, 0xE7DE, 0xE67B, 0xE57D,\n    0xE4F6, 0xE507, 0xE574, 0xE5BE, 0xE5CB, 0xE5D2, 0xE5D5, 0xE5D5,\n    0xE5D2, 0xE5CD, 0xE5C8, 0xE5C3, 0xE5C0, 0xE5BE, 0xE5BE, 0xE5BE,\n    0xE5BD, 0xE5BC, 0xE5BB, 0xE5BA, 0xE5B9, 0xE5B8, 0xE5B6, 0xE5B5,\n    0xE5B4, 0xE5B2, 0xE5B1, 0xE5B0, 0xE5AE, 0xE5AE, 0xE5AD, 0xE5AC,\n    0x0000, 0x0000, 0x0002, 0x0005, 0x0009, 0x000D, 0x0012, 0x0017,\n    0x001B, 0x001F, 0x0022, 0x0024, 0x0024, 0x001C, 0x000B, 0x0000,\n    0xFFFE, 0xFFFE, 0xFFFF, 0x0000, 0x0001, 0x0000, 0xFFFC, 0xFFF6,\n    0xFFEE, 0xFFE9, 0xFFE6, 0xFFE8, 0xFFEC, 0xFFF2, 0xFFF8, 0xFFFD,\n    0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x000D, 0x001D, 0x0024, 0x001C, 0x000B, 0x0000, 0x0006, 0x001B,\n    0x0030, 0x003B, 0x002F, 0x0000, 0xFF91, 0xFEE3, 0xFE17, 0xFD4C,\n    0xFC87, 0xFBBB, 0xFAE7, 0xFA0E, 0xF933, 0xF856, 0xF77A, 0xF6A0,\n    0xF5CB, 0xF4FC, 0xF435, 0xF379, 0xF2C8, 0xF225, 0xF191, 0xF110,\n    0xF0AE, 0xF075, 0xF05E, 0xF062, 0xF079, 0xF09C, 0xF0C4, 0xF0E9,\n    0xF105, 0xF110, 0xF10D, 0xF106, 0xF0FA, 0xF0EB, 0xF0D9, 0xF0C4,\n    0xF0AE, 0xF095, 0xF07C, 0xF062, 0xF048, 0xF02E, 0xF016, 0xEFFF,\n    0xEFEA, 0xEFD8, 0xEFC9, 0xEFBD, 0xF162, 0xF199, 0xF235, 0xF326,\n    0xF45D, 0xF5C9, 0xF75C, 0xF905, 0xFAB6, 0xFC5E, 0xFDEF, 0xFF58,\n    0x0089, 0x013A, 0x0165, 0x0168, 0x016D, 0x0162, 0x014D, 0x0134,\n    0x011C, 0x010C, 0x0101, 0x00F7, 0x00F0, 0x00EE, 0x00F4, 0x0104,\n    0x011D, 0x013B, 0x0157, 0x016C, 0x0176, 0x0171, 0x0161, 0x014B,\n    0x0132, 0x011A, 0x0107, 0x0107, 0x00D5, 0x009C, 0x0089, 0x00C7,\n    0x012C, 0x0168, 0x0177, 0x0184, 0x0186, 0x0177, 0x0151, 0x010C,\n    0x008A, 0xFFC8, 0xFEE5, 0xFE05, 0xFD2D, 0xFC4A, 0xFB60, 0xFA71,\n    0xF97F, 0xF88B, 0xF799, 0xF6A9, 0xF5BE, 0xF4DA, 0xF3FF, 0xF32F,\n    0xF26C, 0xF1B8, 0xF116, 0xF086, 0xF01B, 0xEFDC, 0xEFC3, 0xEFC7,\n    0xEFE0, 0xF007, 0xF033, 0xF05C, 0xF07A, 0xF086, 0xF084, 0xF07C,\n    0xF06F, 0xF05E, 0xF04A, 0xF033, 0xF01A, 0xEFFF, 0xEFE3, 0xEFC6,\n    0xEFAA, 0xEF8E, 0xEF73, 0xEF59, 0xEF42, 0xEF2E, 0xEF1E, 0xEF11,\n    0x0000, 0x0003, 0x000F, 0x0021, 0x0039, 0x0057, 0x007A, 0x00A1,\n    0x00CD, 0x00FD, 0x012F, 0x0164, 0x019A, 0x01D2, 0x020B, 0x0244,\n    0x027C, 0x02B4, 0x02EB, 0x031F, 0x0351, 0x0381, 0x03F0, 0x0413,\n    0x03A4, 0x032E, 0x02B2, 0x0231, 0x01AC, 0x0123, 0x0099, 0x000D,\n    0xFF81, 0xFEF5, 0xFE69, 0xFDE0, 0xFD59, 0xFCD6, 0xFC58, 0xFC58,\n    0xFCE8, 0xFD7F, 0xFE1C, 0xFEBC, 0xFF5E, 0x0000, 0x00A0, 0x013E,\n    0x01D8, 0x026A, 0x02F5, 0x0376, 0x0420, 0x04CB, 0x04F4, 0x0413,\n    0x025A, 0x005A, 0xFE21, 0xFBBA, 0xF934, 0xF69C, 0xF3FF, 0xF16A,\n    0xEEEB, 0xEC8E, 0xEA62, 0xE872, 0xE6CD, 0xE57F, 0xE497, 0xE420,\n    0xE42A, 0xE49E, 0xE556, 0xE62A, 0xE6F4, 0xE78C, 0xE7CB, 0xE7CE,\n    0xE7CD, 0xE7CB, 0xE7C8, 0xE7C6, 0xE7C2, 0xE7BF, 0xE7BB, 0xE7B7,\n    0xE7B3, 0xE7AF, 0xE7AB, 0xE7A7, 0xE7A3, 0xE79F, 0xE79C, 0xE799,\n    0xE796, 0xE794, 0xE793, 0xE792, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0002, 0x0004, 0x0000, 0xFFF3,\n    0xFFE2, 0xFFCF, 0xFFBB, 0xFFA7, 0xFF96, 0xFF88, 0xFF7E, 0xFF7B,\n    0xFFA3, 0xFFF1, 0x0024, 0x0000, 0xFF94, 0xFF1B, 0xFE98, 0xFE0D,\n    0xFD7B, 0xFCE5, 0xFC4B, 0xFBB0, 0xFB15, 0xFA7D, 0xF9E9, 0xF95A,\n    0xF8D3, 0xF856, 0xF7E3, 0xF77D, 0xF738, 0xF71D, 0xF721, 0xF738,\n    0xF757, 0xF772, 0xF77D, 0xF77D, 0xF77D, 0xF77D, 0xF77C, 0xF777,\n    0xF76F, 0xF764, 0xF758, 0xF749, 0xF739, 0xF728, 0xF716, 0xF704,\n    0xF6F2, 0xF6E1, 0xF6D0, 0xF6C0, 0xF6B1, 0xF6A5, 0xF69A, 0xF692,\n    0x0884, 0x0885, 0x0889, 0x088F, 0x0896, 0x089D, 0x08A3, 0x08A8,\n    0x08AA, 0x08A9, 0x08A3, 0x0899, 0x0889, 0x086F, 0x084A, 0x081B,\n    0x07E7, 0x07AF, 0x0779, 0x0745, 0x0718, 0x06F5, 0x0703, 0x0743,\n    0x079D, 0x0809, 0x0866, 0x0893, 0x0896, 0x0891, 0x0885, 0x0873,\n    0x085C, 0x0842, 0x0826, 0x080B, 0x07F0, 0x07D9, 0x07C5, 0x07C5,\n    0x07F5, 0x082F, 0x0889, 0x090C, 0x09AC, 0x0A5C, 0x0B0F, 0x0BB9,\n    0x0C4D, 0x0CBF, 0x0D03, 0x0D0C, 0x0C3C, 0x0A80, 0x0897, 0x0743,\n    0x067C, 0x05BA, 0x04FC, 0x0443, 0x0390, 0x02E1, 0x0238, 0x0195,\n    0x00F7, 0x005F, 0xFFCE, 0xFF42, 0xFEBC, 0xFE3C, 0xFDC4, 0xFD52,\n    0xFD00, 0xFCE1, 0xFCE5, 0xFD00, 0xFD24, 0xFD44, 0xFD52, 0xFD52,\n    0xFD52, 0xFD52, 0xFD4F, 0xFD4A, 0xFD40, 0xFD34, 0xFD25, 0xFD14,\n    0xFD02, 0xFCEE, 0xFCD9, 0xFCC4, 0xFCAF, 0xFC9A, 0xFC86, 0xFC74,\n    0xFC63, 0xFC54, 0xFC48, 0xFC3E, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x002A, 0x0054, 0x0000,\n    0xFF06, 0xFDB5, 0xFC3D, 0xFAD3, 0xF978, 0xF810, 0xF69C, 0xF522,\n    0xF3A2, 0xF222, 0xF0A3, 0xEF2A, 0xEDB8, 0xEC52, 0xEAFA, 0xE9B3,\n    0xE881, 0xE766, 0xE667, 0xE585, 0xE4DB, 0xE478, 0xE451, 0xE457,\n    0xE47F, 0xE4BC, 0xE501, 0xE542, 0xE572, 0xE585, 0xE585, 0xE584,\n    0xE583, 0xE582, 0xE581, 0xE57F, 0xE57D, 0xE57B, 0xE57A, 0xE578,\n    0xE575, 0xE574, 0xE572, 0xE570, 0xE56E, 0xE56D, 0xE56C, 0xE56B,\n    0x40A1, 0x4091, 0x4064, 0x401F, 0x3FC6, 0x3F5E, 0x3EED, 0x3E76,\n    0x3DFF, 0x3D8C, 0x3D22, 0x3CC6, 0x3C7D, 0x3C41, 0x3C09, 0x3BD6,\n    0x3BA7, 0x3B7E, 0x3B5A, 0x3B3D, 0x3B25, 0x3B14, 0x3B09, 0x3B05,\n    0x3B67, 0x3C1C, 0x3C7D, 0x3C78, 0x3C69, 0x3C53, 0x3C35, 0x3C13,\n    0x3BED, 0x3BC4, 0x3B9A, 0x3B71, 0x3B49, 0x3B25, 0x3B05, 0x3B05,\n    0x3B91, 0x3C31, 0x3C7D, 0x3C78, 0x3C69, 0x3C51, 0x3C33, 0x3C10,\n    0x3BEA, 0x3BC2, 0x3B9A, 0x3B73, 0x3B4F, 0x3B30, 0x3B17, 0x3B05,\n    0x3AFA, 0x3AF2, 0x3AEC, 0x3AE8, 0x3AE7, 0x3AE7, 0x3AE9, 0x3AEC,\n    0x3AEF, 0x3AF3, 0x3AF8, 0x3AFC, 0x3B00, 0x3B03, 0x3B05, 0x3B05,\n    0x3B05, 0x3B05, 0x3B05, 0x3B05, 0x3B05, 0x3B05, 0x3B05, 0x3B05,\n    0x3B05, 0x3B05, 0x3B05, 0x3B05, 0x3B05, 0x3B05, 0x3B05, 0x3B05,\n    0x3B05, 0x3B05, 0x3B05, 0x3B05, 0x3B05, 0x3B05, 0x3B05, 0x3B05,\n    0x3B05, 0x3B05, 0x3B05, 0x3B05,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_24.inc.c",
    "content": "static const struct Animation anim_24[] = {\n    1,\n    189,\n    0,\n    0,\n    0x78,\n    ANIMINDEX_NUMPARTS(anim_24_indices),\n    anim_24_values,\n    anim_24_indices,\n    0,\n};\n\n\nstatic const u16 anim_24_indices[] = {\n    0x0001, 0x0000, 0x0078, 0x0001, 0x0078, 0x0079, 0x0001, 0x0000, 0x0001, 0x00F1, 0x0001, 0x0000,\n    0x0078, 0x1160, 0x0001, 0x0000, 0x0078, 0x11D8,\n    0x0078, 0x0FF8, 0x0078, 0x1070, 0x0078, 0x10E8,\n    0x0078, 0x0E90, 0x0078, 0x0F08, 0x0078, 0x0F80,\n    0x0001, 0x0E8C, 0x0001, 0x0E8D, 0x0001, 0x0E8E,\n    0x0078, 0x02D2, 0x0078, 0x034A, 0x0078, 0x03C2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0078, 0x025A,\n    0x0078, 0x00F2, 0x0078, 0x016A, 0x0078, 0x01E2,\n    0x0001, 0x0D22, 0x0001, 0x0D23, 0x0078, 0x0D24,\n    0x0078, 0x061A, 0x0078, 0x0692, 0x0078, 0x070A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0078, 0x05A2,\n    0x0078, 0x043A, 0x0078, 0x04B2, 0x0078, 0x052A,\n    0x0001, 0x0000, 0x0078, 0x0D9C, 0x0078, 0x0E14,\n    0x0078, 0x0BBA, 0x0078, 0x0C32, 0x0078, 0x0CAA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0078, 0x0B42,\n    0x0078, 0x09DA, 0x0078, 0x0A52, 0x0078, 0x0ACA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0E8F,\n    0x0078, 0x0872, 0x0078, 0x08EA, 0x0078, 0x0962,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0078, 0x07FA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0078, 0x0782,\n};\n\nstatic const s16 anim_24_values[] = {\n    0x0000, 0x00B5, 0x00B5, 0x00B5, 0x00B5, 0x00B5, 0x00B5, 0x00B5,\n    0x00B5, 0x00B5, 0x00B5, 0x00B5, 0x00B5, 0x00B5, 0x00B5, 0x00B5,\n    0x00B5, 0x00B5, 0x00B5, 0x00B5, 0x00B5, 0x00B5, 0x00B5, 0x00B4,\n    0x00B3, 0x00B4, 0x00BA, 0x00C4, 0x00CE, 0x00D2, 0x00D0, 0x00CA,\n    0x00C2, 0x00BB, 0x00B5, 0x00B3, 0x00B6, 0x00BE, 0x00C8, 0x00D0,\n    0x00D4, 0x00D0, 0x00C4, 0x00B6, 0x00AC, 0x00AB, 0x00B1, 0x00BC,\n    0x00C7, 0x00D0, 0x00D4, 0x00D0, 0x00C4, 0x00B8, 0x00B3, 0x00B6,\n    0x00BE, 0x00C8, 0x00D0, 0x00D4, 0x00D0, 0x00C4, 0x00B6, 0x00AC,\n    0x00AB, 0x00B2, 0x00BC, 0x00C7, 0x00D0, 0x00D4, 0x00D1, 0x00C7,\n    0x00BC, 0x00B4, 0x00B4, 0x00BA, 0x00C3, 0x00CC, 0x00D3, 0x00D4,\n    0x00CB, 0x00BD, 0x00B0, 0x00AA, 0x00AD, 0x00B4, 0x00BD, 0x00C7,\n    0x00D0, 0x00D5, 0x00D4, 0x00C9, 0x00BB, 0x00AF, 0x00AA, 0x00AC,\n    0x00B2, 0x00BA, 0x00C3, 0x00CC, 0x00D4, 0x00D4, 0x00C9, 0x00BB,\n    0x00AF, 0x00AA, 0x00AC, 0x00B2, 0x00BA, 0x00C3, 0x00CC, 0x00D4,\n    0x00D4, 0x00C9, 0x00BC, 0x00B0, 0x00AA, 0x00AC, 0x00B2, 0x00BB,\n    0x00C3, 0x023F, 0x023F, 0x023F, 0x023F, 0x023F, 0x023F, 0x023F,\n    0x023F, 0x023F, 0x023F, 0x023F, 0x023F, 0x023F, 0x023F, 0x023F,\n    0x023F, 0x023F, 0x023F, 0x023F, 0x023F, 0x023F, 0x023F, 0x023F,\n    0x023F, 0x025B, 0x0280, 0x02A5, 0x02CC, 0x02F3, 0x031B, 0x0344,\n    0x036E, 0x0399, 0x03C5, 0x03F1, 0x041E, 0x044D, 0x047B, 0x04AB,\n    0x04DB, 0x050C, 0x053E, 0x0571, 0x05A4, 0x05D8, 0x060C, 0x0641,\n    0x0677, 0x06AD, 0x06E4, 0x071B, 0x0753, 0x078B, 0x07C4, 0x07FE,\n    0x0838, 0x0872, 0x08AD, 0x08E8, 0x0924, 0x0960, 0x099C, 0x09D9,\n    0x0A16, 0x0A54, 0x0A91, 0x0AD0, 0x0B0E, 0x0B4C, 0x0B8B, 0x0BCA,\n    0x0C0A, 0x0C49, 0x0C89, 0x0CC9, 0x0D08, 0x0D49, 0x0D89, 0x0DC9,\n    0x0E09, 0x0E4A, 0x0E8A, 0x0ECB, 0x0F0B, 0x0F4C, 0x0F8C, 0x0FCD,\n    0x100D, 0x104D, 0x108E, 0x10CE, 0x110E, 0x114E, 0x118D, 0x11CD,\n    0x120C, 0x124B, 0x128A, 0x12C9, 0x1307, 0x1346, 0x1383, 0x13C1,\n    0x13FE, 0x143B, 0x1478, 0x14B4, 0x14F0, 0x152B, 0x1566, 0x15A1,\n    0x15DB, 0x1615, 0x164E, 0x1686, 0x16BF, 0x16F6, 0x172D, 0x1764,\n    0x179A, 0x3FFF, 0xD973, 0xD972, 0xD971, 0xD970, 0xD96F, 0xD96D,\n    0xD96B, 0xD969, 0xD966, 0xD964, 0xD961, 0xD95D, 0xD950, 0xD931,\n    0xD909, 0xD8DC, 0xD8B2, 0xD88F, 0xD87B, 0xD87C, 0xD897, 0xD8D3,\n    0xD910, 0xD935, 0xD950, 0xD970, 0xD9A4, 0xD9FC, 0xDA86, 0xDB51,\n    0xDC6C, 0xDDE7, 0xDFD1, 0xE33B, 0xE891, 0xEEEB, 0xF55F, 0xFB03,\n    0xFEED, 0x0033, 0xFE87, 0xFB17, 0xF64B, 0xF07D, 0xEA04, 0xE33C,\n    0xDC7B, 0xD61D, 0xD079, 0xCBE9, 0xCB0B, 0xDFD1, 0xE668, 0xED0D,\n    0xF354, 0xF8CF, 0xFD12, 0xFFB0, 0x003C, 0xFEA3, 0xFBA1, 0xF77A,\n    0xF267, 0xECA2, 0xE667, 0xDFEE, 0xD972, 0xD32D, 0xCD5A, 0xC84C,\n    0xD84F, 0xE315, 0xE9C7, 0xF054, 0xF64C, 0xFB3E, 0xFEBA, 0x0050,\n    0xFF99, 0xFCD5, 0xF87C, 0xF2E4, 0xEC5F, 0xE542, 0xDDE0, 0xD68E,\n    0xCF9F, 0xC968, 0xD635, 0xDFD1, 0xE67E, 0xED55, 0xF3D2, 0xF972,\n    0xFDB2, 0x000C, 0x0000, 0xFD97, 0xF96E, 0xF3E3, 0xED4F, 0xE60E,\n    0xDE7B, 0xD6F2, 0xCFCD, 0xC968, 0xD635, 0xDFD1, 0xE651, 0xECC0,\n    0xF2C7, 0xF80D, 0xFC3E, 0xFF01, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xF957, 0xF956, 0xF954, 0xF952, 0xF950, 0xF94D,\n    0xF949, 0xF946, 0xF941, 0xF93C, 0xF937, 0xF931, 0xF919, 0xF8E4,\n    0xF89D, 0xF84F, 0xF805, 0xF7C8, 0xF7A5, 0xF7A6, 0xF7D6, 0xF83F,\n    0xF8F9, 0xFA03, 0xFB4B, 0xFCBC, 0xFE40, 0xFFC3, 0x0131, 0x0275,\n    0x037C, 0x042F, 0x047B, 0x0409, 0x02C0, 0x00E9, 0xFECD, 0xFCB3,\n    0xFAE5, 0xF9AB, 0xF909, 0xF881, 0xF80F, 0xF7B7, 0xF780, 0xF76C,\n    0xF780, 0xF7C0, 0xF832, 0xF8D9, 0xFAC7, 0x047B, 0x03FC, 0x02AE,\n    0x00D7, 0xFEBF, 0xFCAB, 0xFAE2, 0xF9AA, 0xF915, 0xF8BB, 0xF88E,\n    0xF886, 0xF89A, 0xF8C1, 0xF8F3, 0xF927, 0xF955, 0xF974, 0xF917,\n    0x015D, 0x045A, 0x036E, 0x01D7, 0xFFDC, 0xFDBF, 0xFBC7, 0xFA38,\n    0xF953, 0xF8DA, 0xF89C, 0xF88F, 0xF8A4, 0xF8D2, 0xF90A, 0xF941,\n    0xF96B, 0xF97C, 0x008D, 0x047B, 0x03F5, 0x0295, 0x00AA, 0xFE7F,\n    0xFC60, 0xFA9B, 0xF97C, 0xF8EE, 0xF8A3, 0xF88D, 0xF89F, 0xF8CB,\n    0xF904, 0xF93E, 0xF96A, 0xF97C, 0x008D, 0x047B, 0x03DF, 0x024D,\n    0x0026, 0xFDD0, 0xFBAA, 0xFA18, 0xF97C, 0xF97C, 0xF97C, 0xF97C,\n    0xF97C, 0xF97C, 0xE6EA, 0xE6E9, 0xE6E8, 0xE6E7, 0xE6E5, 0xE6E3,\n    0xE6E1, 0xE6DF, 0xE6DD, 0xE6DA, 0xE6D7, 0xE6D3, 0xE6C5, 0xE6A5,\n    0xE67B, 0xE64D, 0xE620, 0xE5FC, 0xE5E7, 0xE5E8, 0xE604, 0xE643,\n    0xE6AA, 0xE735, 0xE7DD, 0xE899, 0xE964, 0xEA34, 0xEB02, 0xEBC6,\n    0xEC79, 0xED12, 0xED8C, 0xEDD7, 0xEDF7, 0xEDF5, 0xEDDE, 0xEDBD,\n    0xED9E, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xEC8A, 0xEC8B, 0xEC8A, 0xEC88, 0xEC83, 0xEC7D,\n    0xEC74, 0xEC69, 0xEC5B, 0xEC4A, 0xEC37, 0xEC20, 0xEC00, 0xEBCF,\n    0xEB8E, 0xEB3F, 0xEAE1, 0xEA77, 0xEA01, 0xE97F, 0xE8F3, 0xE85E,\n    0xE7BC, 0xE70B, 0xE64D, 0xE585, 0xE4B4, 0xE3DC, 0xE2FE, 0xE21E,\n    0xE13D, 0xE05C, 0xDF7F, 0xDE14, 0xDE82, 0xDF19, 0xDFC9, 0xE080,\n    0xE12D, 0xE1BF, 0xE238, 0xE2BC, 0xE348, 0xE3D3, 0xE459, 0xE4D1,\n    0xE537, 0xE583, 0xE5AF, 0xE5B5, 0xE513, 0xDF7F, 0xDE14, 0xDE82,\n    0xDF19, 0xDFC9, 0xE080, 0xE12D, 0xE1BF, 0xE231, 0xE29B, 0xE2FE,\n    0xE35C, 0xE3B5, 0xE40C, 0xE460, 0xE4B3, 0xE506, 0xE55B, 0xE5D9,\n    0xE1D5, 0xDE54, 0xDE44, 0xDEC6, 0xDF68, 0xE01B, 0xE0CE, 0xE174,\n    0xE1FC, 0xE274, 0xE2E5, 0xE34F, 0xE3B4, 0xE417, 0xE477, 0xE4D7,\n    0xE538, 0xE59B, 0xE284, 0xDF7F, 0xDE14, 0xDE83, 0xDF1F, 0xDFD5,\n    0xE093, 0xE146, 0xE1DD, 0xE25B, 0xE2D0, 0xE33F, 0xE3A8, 0xE40D,\n    0xE470, 0xE4D2, 0xE536, 0xE59B, 0xE284, 0xDF7F, 0xDE14, 0xDE95,\n    0xDF59, 0xE037, 0xE107, 0xE1A1, 0xE1DD, 0xE1DD, 0xE1DD, 0xE1DD,\n    0xE1DD, 0xE1DD, 0xF86C, 0xF86C, 0xF86D, 0xF86F, 0xF870, 0xF872,\n    0xF874, 0xF876, 0xF879, 0xF87B, 0xF87F, 0xF882, 0xF8AA, 0xF909,\n    0xF98A, 0xFA14, 0xFA92, 0xFAEA, 0xFB08, 0xFAD2, 0xFA33, 0xF913,\n    0xF729, 0xF465, 0xF100, 0xED37, 0xE943, 0xE560, 0xE1C7, 0xDEB5,\n    0xDC63, 0xDB0D, 0xDAEE, 0xDD0D, 0xE1BF, 0xE82B, 0xEF7C, 0xF6D9,\n    0xFD6D, 0x0260, 0x05C0, 0x093C, 0x0CBC, 0x1011, 0x130A, 0x1579,\n    0x172E, 0x17FA, 0x17AE, 0x1619, 0x0D90, 0xDAEE, 0xDB2D, 0xDF19,\n    0xE591, 0xED74, 0xF5A2, 0xFCFA, 0x025A, 0x0581, 0x0808, 0x0A1A,\n    0x0BCD, 0x0D36, 0x0E6B, 0x0F82, 0x108F, 0x11A9, 0x12E6, 0x1618,\n    0xEB73, 0xDA83, 0xDCAD, 0xE1EB, 0xE925, 0xF144, 0xF92F, 0xFFCE,\n    0x041D, 0x071E, 0x098A, 0x0B7E, 0x0D1A, 0x0E79, 0x0FBB, 0x10FD,\n    0x125C, 0x13F7, 0xEFCA, 0xDAEE, 0xDB46, 0xDF71, 0xE638, 0xEE65,\n    0xF6C5, 0xFE21, 0x0342, 0x0684, 0x0920, 0x0B37, 0x0CEA, 0x0E58,\n    0x0FA4, 0x10EC, 0x1252, 0x13F7, 0xEFCA, 0xDAEE, 0xDBB8, 0xE0EB,\n    0xE8E1, 0xF1F2, 0xFA77, 0x00C9, 0x0342, 0x0342, 0x0342, 0x0342,\n    0x0342, 0x0342, 0xE893, 0xE893, 0xE892, 0xE891, 0xE890, 0xE88E,\n    0xE88D, 0xE88B, 0xE889, 0xE886, 0xE883, 0xE881, 0xE8B1, 0xE932,\n    0xE9E0, 0xEA98, 0xEB36, 0xEB98, 0xEB9B, 0xEB1B, 0xE9F6, 0xE807,\n    0xE501, 0xE0DC, 0xDBDE, 0xD64F, 0xD075, 0xCA98, 0xC4FD, 0xBFED,\n    0xBBAE, 0xB887, 0xB6BF, 0xB7A9, 0xBBA6, 0xC190, 0xC845, 0xCEA0,\n    0xD37B, 0xD5B4, 0xD4FA, 0xD2E6, 0xCFC8, 0xCBDE, 0xC763, 0xC295,\n    0xBDB1, 0xB8F2, 0xB496, 0xB0DA, 0xAED7, 0xB6BF, 0xBBD3, 0xC187,\n    0xC758, 0xCCC7, 0xD153, 0xD47B, 0xD5C0, 0xD505, 0xD31F, 0xD045,\n    0xCCA8, 0xC878, 0xC3E5, 0xBF1E, 0xBA53, 0xB5B5, 0xB172, 0xAE16,\n    0xB39C, 0xB92E, 0xBEA4, 0xC47A, 0xCA2D, 0xCF3D, 0xD326, 0xD568,\n    0xD589, 0xD3E5, 0xD0F4, 0xCCFC, 0xC840, 0xC307, 0xBD95, 0xB82F,\n    0xB319, 0xAE99, 0xB2B0, 0xB6BF, 0xBBE8, 0xC1CB, 0xC7D2, 0xCD69,\n    0xD1FB, 0xD4F1, 0xD5B6, 0xD461, 0xD19C, 0xCDB3, 0xC8F0, 0xC39E,\n    0xBE08, 0xB879, 0xB33B, 0xAE99, 0xB2B0, 0xB6BF, 0xBBD8, 0xC195,\n    0xC771, 0xCCE8, 0xD173, 0xD48F, 0xD5B6, 0xD5B6, 0xD5B6, 0xD5B6,\n    0xD5B6, 0xD5B6, 0xE8EA, 0xE8ED, 0xE8F2, 0xE8F7, 0xE8FE, 0xE906,\n    0xE910, 0xE91A, 0xE926, 0xE934, 0xE942, 0xE952, 0xE9A5, 0xEA61,\n    0xEB5D, 0xEC71, 0xED73, 0xEE3C, 0xEEA3, 0xEE7F, 0xEDA7, 0xEBF3,\n    0xE90B, 0xE4E4, 0xDFD1, 0xDA20, 0xD422, 0xCE28, 0xC882, 0xC37F,\n    0xBF70, 0xBCA6, 0xBB71, 0xBDA2, 0xC3C7, 0xCC4D, 0xD59D, 0xDE22,\n    0xE448, 0xE67A, 0xE433, 0xDF86, 0xD904, 0xD127, 0xC866, 0xBF3B,\n    0xB61E, 0xAD88, 0xA5F1, 0x9FD2, 0x9EC4, 0xBB71, 0xC450, 0xCD35,\n    0xD591, 0xDCD6, 0xE276, 0xE5E3, 0xE68D, 0xE45A, 0xE044, 0xDAA5,\n    0xD3CA, 0xCC01, 0xC398, 0xBADD, 0xB21E, 0xA9AA, 0xA1CD, 0x9AF4,\n    0xB11A, 0xBFD8, 0xC8D5, 0xD194, 0xD984, 0xE010, 0xE4A5, 0xE6B2,\n    0xE5A9, 0xE1E6, 0xDC03, 0xD473, 0xCBA7, 0xC20D, 0xB818, 0xAE38,\n    0xA4DE, 0x9C7A, 0xAE37, 0xBB71, 0xC46D, 0xCD94, 0xD639, 0xDDAF,\n    0xE349, 0xE65C, 0xE638, 0xE2ED, 0xDD4B, 0xD5CC, 0xCCEA, 0xC321,\n    0xB8EA, 0xAEC0, 0xA51C, 0x9C7A, 0xAE37, 0xBB71, 0xC42F, 0xCCC6,\n    0xD4C7, 0xDBC2, 0xE148, 0xE4EA, 0xE638, 0xE638, 0xE638, 0xE638,\n    0xE638, 0xE638, 0x155B, 0x155D, 0x1560, 0x1564, 0x1569, 0x156F,\n    0x1575, 0x157D, 0x1585, 0x158E, 0x1598, 0x15A3, 0x15D1, 0x1637,\n    0x16BF, 0x1755, 0x17E4, 0x1857, 0x189A, 0x1898, 0x183D, 0x1773,\n    0x15E9, 0x1385, 0x1085, 0x0D27, 0x09AC, 0x0650, 0x0354, 0x00F5,\n    0xFF74, 0xFF0D, 0x0000, 0x03D9, 0x0B20, 0x148B, 0x1ED2, 0x28AB,\n    0x30CD, 0x35EE, 0x37EB, 0x38F7, 0x3937, 0x38B9, 0x3786, 0x35AA,\n    0x332E, 0x301F, 0x2C87, 0x2870, 0x2064, 0x0000, 0x041C, 0x0B7F,\n    0x14E9, 0x1F1B, 0x28D7, 0x30DD, 0x35EF, 0x37C4, 0x3838, 0x3798,\n    0x3618, 0x33EE, 0x3150, 0x2E73, 0x2B8C, 0x28D1, 0x2676, 0x264C,\n    0x0A23, 0x0190, 0x076D, 0x0FEB, 0x19D2, 0x23E7, 0x2CF3, 0x33BB,\n    0x371B, 0x381F, 0x37B1, 0x361C, 0x33AD, 0x30AF, 0x2D6F, 0x2A37,\n    0x2755, 0x2513, 0x0CB9, 0x0000, 0x0440, 0x0BF7, 0x15C6, 0x2050,\n    0x2A35, 0x3217, 0x3698, 0x380A, 0x37E2, 0x3674, 0x3410, 0x310B,\n    0x2DB6, 0x2A64, 0x2767, 0x2513, 0x0CB9, 0x0000, 0x0489, 0x0CED,\n    0x1781, 0x229F, 0x2C9C, 0x33D2, 0x3698, 0x3698, 0x3698, 0x3698,\n    0x3698, 0x3698, 0x0E12, 0x0E14, 0x0E16, 0x0E18, 0x0E1B, 0x0E1F,\n    0x0E23, 0x0E28, 0x0E2E, 0x0E34, 0x0E3A, 0x0E42, 0x0E60, 0x0EA3,\n    0x0EFC, 0x0F5F, 0x0FBD, 0x1009, 0x1036, 0x1034, 0x0FF8, 0x0F73,\n    0x0E84, 0x0D26, 0x0B75, 0x0990, 0x0792, 0x0599, 0x03C2, 0x022A,\n    0x00EE, 0x002C, 0x0000, 0x0102, 0x0363, 0x06A1, 0x0A3C, 0x0DB1,\n    0x1080, 0x1228, 0x1294, 0x1293, 0x1239, 0x1192, 0x10A9, 0x0F89,\n    0x0E3D, 0x0CCF, 0x0B4B, 0x09BB, 0x075E, 0x0000, 0x01BF, 0x046E,\n    0x07A7, 0x0B08, 0x0E2B, 0x10AD, 0x122A, 0x128C, 0x1269, 0x11DE,\n    0x10FE, 0x0FDF, 0x0E95, 0x0D33, 0x0BCE, 0x0A7A, 0x094C, 0x08CE,\n    0x0237, 0x00BB, 0x02FC, 0x05F9, 0x094F, 0x0C9B, 0x0F7B, 0x118C,\n    0x1271, 0x127D, 0x11FC, 0x110B, 0x0FC7, 0x0E4D, 0x0CBA, 0x0B2C,\n    0x09BE, 0x088E, 0x02C4, 0x0000, 0x01CB, 0x0496, 0x07F1, 0x0B6E,\n    0x0E9D, 0x110F, 0x1255, 0x1288, 0x121F, 0x113A, 0x0FF8, 0x0E79,\n    0x0CDC, 0x0B41, 0x09C7, 0x088E, 0x02C4, 0x0000, 0x01DC, 0x04CF,\n    0x0857, 0x0BF6, 0x0F2B, 0x1175, 0x1255, 0x1255, 0x1255, 0x1255,\n    0x1255, 0x1255, 0xEBC8, 0xEBC7, 0xEBC6, 0xEBC4, 0xEBC2, 0xEBC0,\n    0xEBBD, 0xEBBA, 0xEBB6, 0xEBB2, 0xEBAD, 0xEBA8, 0xEB94, 0xEB67,\n    0xEB2A, 0xEAE8, 0xEAA8, 0xEA75, 0xEA57, 0xEA57, 0xEA80, 0xEADA,\n    0xEB67, 0xEC20, 0xECFC, 0xEDF4, 0xEF00, 0xF019, 0xF137, 0xF252,\n    0xF364, 0xF463, 0xF549, 0xF622, 0xF6FA, 0xF7C9, 0xF889, 0xF930,\n    0xF9B9, 0xFA1B, 0xFA5A, 0xFA8E, 0xFAB5, 0xFACE, 0xFADA, 0xFAD5,\n    0xFAC0, 0xFA98, 0xFA5D, 0xFA0E, 0xF93C, 0xF549, 0xF58C, 0xF626,\n    0xF6F8, 0xF7E6, 0xF8CF, 0xF995, 0xFA1A, 0xFA56, 0xFA76, 0xFA81,\n    0xFA7B, 0xFA67, 0xFA4B, 0xFA29, 0xFA07, 0xF9E8, 0xF9CF, 0xF9ED,\n    0xF68C, 0xF55D, 0xF5CE, 0xF686, 0xF769, 0xF856, 0xF932, 0xF9DE,\n    0xFA3D, 0xFA6B, 0xFA7D, 0xFA78, 0xFA62, 0xFA42, 0xFA1C, 0xF9F7,\n    0xF9D8, 0xF9C5, 0xF6E0, 0xF549, 0xF58F, 0xF630, 0xF70C, 0xF802,\n    0xF8EF, 0xF9B4, 0xFA2D, 0xFA64, 0xFA7C, 0xFA7A, 0xFA66, 0xFA46,\n    0xFA1F, 0xF9F9, 0xF9D8, 0xF9C5, 0xF6E0, 0xF549, 0xF598, 0xF64E,\n    0xF742, 0xF849, 0xF93A, 0xF9E9, 0xFA2D, 0xFA2D, 0xFA2D, 0xFA2D,\n    0xFA2D, 0xFA2D, 0xE292, 0xE293, 0xE295, 0xE298, 0xE29B, 0xE29F,\n    0xE2A3, 0xE2A8, 0xE2AD, 0xE2B3, 0xE2BA, 0xE2C1, 0xE2D1, 0xE2EC,\n    0xE312, 0xE33D, 0xE36A, 0xE396, 0xE3BD, 0xE3DC, 0xE3EF, 0xE3F3,\n    0xE3F0, 0xE3EE, 0xE3EB, 0xE3E4, 0xE3D6, 0xE3BE, 0xE39B, 0xE368,\n    0xE323, 0xE2CA, 0xE259, 0xE1E9, 0xE17F, 0xE0FC, 0xE043, 0xDF35,\n    0xDDB4, 0xDBA2, 0xD580, 0xCB74, 0xCAD2, 0xCD8A, 0xD143, 0xD5A8,\n    0xDA67, 0xDF2B, 0xE39F, 0xE770, 0xE966, 0xE259, 0xE0FE, 0xE033,\n    0xDFB6, 0xDF45, 0xDE9D, 0xDD7C, 0xDBA0, 0xD580, 0xCB74, 0xCACB,\n    0xCD4D, 0xD0B3, 0xD4C1, 0xD939, 0xDDE0, 0xE279, 0xE6C8, 0xEA2C,\n    0xE4BD, 0xE195, 0xE08A, 0xDFEF, 0xDF80, 0xDEFC, 0xDE20, 0xDCA9,\n    0xD9E2, 0xCFED, 0xC9F1, 0xCC5D, 0xD01C, 0xD4D1, 0xDA19, 0xDF96,\n    0xE4E8, 0xE9AE, 0xE566, 0xE259, 0xE0FD, 0xE02E, 0xDFA9, 0xDF26,\n    0xDE63, 0xDD19, 0xDB04, 0xD16B, 0xC9F1, 0xCC65, 0xD029, 0xD4DC,\n    0xDA22, 0xDF9B, 0xE4EA, 0xE9AE, 0xE566, 0xE259, 0xE0FD, 0xE02E,\n    0xDFA9, 0xDF26, 0xDE63, 0xDD19, 0xDB04, 0xD1D6, 0xC9F1, 0xC9F1,\n    0xC9F1, 0xC9F1, 0x03C7, 0x03CA, 0x03C7, 0x03C0, 0x03B2, 0x039F,\n    0x0386, 0x0365, 0x033D, 0x030D, 0x02D4, 0x0293, 0x01FA, 0x00D7,\n    0xFF54, 0xFD99, 0xFBCF, 0xFA20, 0xF8B5, 0xF7B7, 0xF751, 0xF7AA,\n    0xF8A2, 0xF9FA, 0xFBAB, 0xFDAE, 0xFFFF, 0x0296, 0x056F, 0x0883,\n    0x0BCD, 0x0F45, 0x12E6, 0x1779, 0x1D64, 0x2411, 0x2AEA, 0x3158,\n    0x36C4, 0x3A98, 0x3CE0, 0x3ED5, 0x4077, 0x41B6, 0x4283, 0x42CC,\n    0x4283, 0x4196, 0x3FF5, 0x3D91, 0x367E, 0x12E6, 0x14B8, 0x1982,\n    0x2040, 0x27F0, 0x2F8F, 0x361B, 0x3A90, 0x3CB4, 0x3DFF, 0x3EA4,\n    0x3EC2, 0x3E79, 0x3DE9, 0x3D31, 0x3C71, 0x3BC9, 0x3B59, 0x3CAD,\n    0x1E55, 0x135E, 0x16C1, 0x1C94, 0x23DB, 0x2B99, 0x32D2, 0x3888,\n    0x3BD2, 0x3D8E, 0x3E6F, 0x3EA1, 0x3E51, 0x3DAC, 0x3CDE, 0x3C13,\n    0x3B79, 0x3B3C, 0x214E, 0x12E6, 0x14D2, 0x19DA, 0x20E5, 0x28DA,\n    0x30A0, 0x371E, 0x3B3C, 0x3D42, 0x3E55, 0x3EA6, 0x3E65, 0x3DC4,\n    0x3CF1, 0x3C1F, 0x3B7D, 0x3B3C, 0x214E, 0x12E6, 0x1522, 0x1AE5,\n    0x22C6, 0x2B5C, 0x333D, 0x3900, 0x3B3C, 0x3B3C, 0x3B3C, 0x3B3C,\n    0x3B3C, 0x3B3C, 0x11B8, 0x11B6, 0x11B8, 0x11BD, 0x11C6, 0x11D4,\n    0x11E6, 0x11FE, 0x121A, 0x123C, 0x1265, 0x1293, 0x12D0, 0x1326,\n    0x1397, 0x1425, 0x14D2, 0x15A1, 0x1693, 0x17AC, 0x18EC, 0x1A57,\n    0x1BF6, 0x1DCB, 0x1FCE, 0x21F5, 0x2438, 0x268E, 0x28EE, 0x2B4F,\n    0x2DA9, 0x2FF3, 0x3224, 0x3467, 0x36D8, 0x3953, 0x3BB7, 0x3DE1,\n    0x3FAE, 0x40FC, 0x41D4, 0x428F, 0x432B, 0x43A3, 0x43EF, 0x440B,\n    0x43EF, 0x4397, 0x42FB, 0x4216, 0x3F71, 0x3224, 0x32D2, 0x349C,\n    0x3721, 0x3A01, 0x3CDA, 0x3F4C, 0x40F7, 0x41C4, 0x423F, 0x427D,\n    0x4288, 0x426D, 0x4237, 0x41F2, 0x41AB, 0x416C, 0x4142, 0x41C1,\n    0x366A, 0x3251, 0x3395, 0x35C2, 0x387A, 0x3B5F, 0x3E12, 0x4035,\n    0x416F, 0x4215, 0x4269, 0x427C, 0x425E, 0x4220, 0x41D3, 0x4188,\n    0x414E, 0x4137, 0x3786, 0x3224, 0x32DC, 0x34BD, 0x375F, 0x3A58,\n    0x3D40, 0x3FAD, 0x4137, 0x41F9, 0x4260, 0x427E, 0x4266, 0x4229,\n    0x41DB, 0x418C, 0x414F, 0x4137, 0x3786, 0x3224, 0x32FA, 0x3521,\n    0x3813, 0x3B48, 0x3E3A, 0x4061, 0x4137, 0x4137, 0x4137, 0x4137,\n    0x4137, 0x4137, 0xDB3D, 0xDB44, 0xDB3C, 0xDB26, 0xDAFE, 0xDAC3,\n    0xDA75, 0xDA12, 0xD998, 0xD906, 0xD85A, 0xD794, 0xD5D9, 0xD29C,\n    0xCE4C, 0xC957, 0xC42D, 0xBF3D, 0xBAF4, 0xB7C4, 0xB619, 0xB665,\n    0xB8D2, 0xBD04, 0xC29D, 0xC93D, 0xD087, 0xD81A, 0xDF98, 0xE6A2,\n    0xECDA, 0xF1E1, 0xF557, 0xF60B, 0xF3CF, 0xEFC6, 0xEB14, 0xE6DD,\n    0xE445, 0xE46F, 0xE7DF, 0xED58, 0xF455, 0xFC5B, 0x04F1, 0x0D9E,\n    0x15E9, 0x1D58, 0x2372, 0x27BD, 0x249B, 0xF557, 0xEE29, 0xE8AF,\n    0xE4D6, 0xE28D, 0xE1C1, 0xE260, 0xE459, 0xE7A1, 0xEC2C, 0xF1C3,\n    0xF831, 0xFF41, 0x06BB, 0x0E6B, 0x1619, 0x1D91, 0x249C, 0x2BBD,\n    0x0591, 0xF186, 0xEB26, 0xE668, 0xE344, 0xE1AF, 0xE19F, 0xE309,\n    0xE5E7, 0xEA67, 0xF05F, 0xF781, 0xFF7E, 0x0806, 0x10CC, 0x1981,\n    0x21D6, 0x297C, 0x09F9, 0xF557, 0xEE1D, 0xE88A, 0xE49B, 0xE24C,\n    0xE19B, 0xE287, 0xE50B, 0xE946, 0xEF21, 0xF645, 0xFE5D, 0x0714,\n    0x1015, 0x190A, 0x219E, 0x297C, 0x09F9, 0xF557, 0xEE85, 0xE9E4,\n    0xE709, 0xE58A, 0xE4FC, 0xE4F5, 0xE50B, 0xE50B, 0xE50B, 0xE50B,\n    0xE50B, 0xE50B, 0xBA57, 0xBA56, 0xBA58, 0xBA5B, 0xBA60, 0xBA68,\n    0xBA73, 0xBA81, 0xBA91, 0xBAA5, 0xBABD, 0xBAD8, 0xBB07, 0xBB56,\n    0xBBBE, 0xBC3A, 0xBCC4, 0xBD54, 0xBDE7, 0xBE74, 0xBEF7, 0xBF69,\n    0xBFD8, 0xC056, 0xC0DA, 0xC161, 0xC1E3, 0xC25B, 0xC2C3, 0xC316,\n    0xC34E, 0xC364, 0xC353, 0xC00A, 0xBD01, 0xC185, 0xCA1E, 0xD279,\n    0xD6F6, 0xD8E2, 0xDC36, 0xD136, 0xC0B8, 0xB2F1, 0xAF1B, 0xB5DD,\n    0xBEFE, 0xC2D2, 0xC341, 0xC2A6, 0xC2B6, 0xC353, 0xBFA3, 0xBCF9,\n    0xC185, 0xCA1E, 0xD279, 0xD6F6, 0xD8E2, 0xDC36, 0xD136, 0xC0B8,\n    0xB2F1, 0xAF1B, 0xB5DD, 0xBEFE, 0xC2D5, 0xC34F, 0xC2B6, 0xC27F,\n    0xC35B, 0xC1DE, 0xBDA9, 0xBE71, 0xC597, 0xCE96, 0xD545, 0xD802,\n    0xDA6F, 0xD836, 0xC976, 0xB9A5, 0xAF5D, 0xB631, 0xC1B2, 0xC3A6,\n    0xC319, 0xC283, 0xC366, 0xC353, 0xBF39, 0xBD6F, 0xC377, 0xCC65,\n    0xD408, 0xD789, 0xD967, 0xDAF5, 0xCC81, 0xBAF6, 0xAF5D, 0xB61E,\n    0xC1B2, 0xC3A6, 0xC319, 0xC283, 0xC366, 0xC353, 0xBF39, 0xBD6F,\n    0xC377, 0xCC65, 0xD408, 0xD789, 0xD967, 0xDAF5, 0xCB42, 0xB877,\n    0xAF5D, 0xAF5D, 0x09CF, 0x09CF, 0x09CF, 0x09CF, 0x09CF, 0x09CF,\n    0x09CF, 0x09CF, 0x09CF, 0x09CF, 0x09CF, 0x09CF, 0x098F, 0x08F0,\n    0x0825, 0x0761, 0x06D7, 0x06BA, 0x073E, 0x0895, 0x0AF3, 0x0E8A,\n    0x1A7C, 0x2E86, 0x3FC8, 0x47D9, 0x4C33, 0x4CFB, 0x49F5, 0x412B,\n    0x33AA, 0x25B7, 0x1B99, 0x1AEE, 0x1F18, 0x1F8C, 0x1EAD, 0x1FC7,\n    0x2748, 0x33B4, 0x3AA8, 0x3E99, 0x4275, 0x4591, 0x47BD, 0x4A10,\n    0x4926, 0x40CB, 0x3044, 0x1E5D, 0x139B, 0x1B99, 0x1DFF, 0x1F57,\n    0x1F8C, 0x1EAD, 0x1FC7, 0x2748, 0x33B4, 0x3AA8, 0x3E99, 0x4275,\n    0x4591, 0x47BD, 0x4A10, 0x4926, 0x410A, 0x31AE, 0x200B, 0x136D,\n    0x1905, 0x1CF9, 0x1EC2, 0x1FBB, 0x1F10, 0x1EC8, 0x2247, 0x2D97,\n    0x3825, 0x3C97, 0x406B, 0x43E4, 0x469F, 0x499D, 0x4637, 0x3796,\n    0x24F1, 0x1482, 0x1846, 0x1B99, 0x1E24, 0x1F97, 0x1F51, 0x1EA4,\n    0x20BB, 0x2A5E, 0x3638, 0x3B9F, 0x3FAB, 0x4395, 0x469F, 0x49A5,\n    0x4637, 0x3796, 0x24F1, 0x1482, 0x1846, 0x1B99, 0x1E24, 0x1F97,\n    0x1F51, 0x1EA4, 0x20BB, 0x2A5E, 0x3638, 0x3B9F, 0x4030, 0x44A1,\n    0x469F, 0x469F, 0x0C00, 0x0C00, 0x0C01, 0x0C01, 0x0C02, 0x0C03,\n    0x0C03, 0x0C04, 0x0C05, 0x0C06, 0x0C07, 0x0C08, 0x0BE5, 0x0B81,\n    0x0AEA, 0x0A2A, 0x0950, 0x0868, 0x077E, 0x069F, 0x05D7, 0x0533,\n    0x04A9, 0x0426, 0x03A9, 0x0332, 0x02C0, 0x0253, 0x01EA, 0x0185,\n    0x0123, 0x00C3, 0x0066, 0x004A, 0x0065, 0x0068, 0x0068, 0x0068,\n    0x0068, 0x0068, 0x0068, 0x0068, 0x0068, 0x0068, 0x0068, 0x0068,\n    0x0068, 0x0068, 0x0068, 0x0068, 0x0068, 0x0066, 0x0067, 0x0068,\n    0x0068, 0x0068, 0x0068, 0x0068, 0x0068, 0x0068, 0x0068, 0x0068,\n    0x0068, 0x0068, 0x0068, 0x0068, 0x0068, 0x0068, 0x0068, 0x0068,\n    0x0066, 0x0066, 0x0067, 0x0068, 0x0068, 0x0068, 0x0068, 0x0068,\n    0x0068, 0x0068, 0x0068, 0x0068, 0x0068, 0x0068, 0x0068, 0x0068,\n    0x0068, 0x0068, 0x0066, 0x0066, 0x0067, 0x0068, 0x0068, 0x0068,\n    0x0068, 0x0068, 0x0068, 0x0068, 0x0068, 0x0068, 0x0068, 0x0068,\n    0x0068, 0x0068, 0x0068, 0x0068, 0x0066, 0x0066, 0x0067, 0x0068,\n    0x0068, 0x0068, 0x0068, 0x0068, 0x0068, 0x0068, 0x0068, 0x0068,\n    0x0068, 0x0068, 0x0077, 0x0077, 0x0077, 0x0076, 0x0075, 0x0073,\n    0x0071, 0x006F, 0x006C, 0x0068, 0x0063, 0x005E, 0x0053, 0x0041,\n    0x0028, 0x000B, 0xFFED, 0xFFCE, 0xFFB1, 0xFF99, 0xFF86, 0xFF7C,\n    0xFF7B, 0xFF83, 0xFF90, 0xFFA2, 0xFFB6, 0xFFCA, 0xFFDD, 0xFFEB,\n    0xFFF4, 0xFFF5, 0xFFEC, 0xFF76, 0xFED1, 0xFEA6, 0xFEB1, 0xFEC6,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC3, 0xFEAF, 0xFEAB, 0xFEF1, 0xFFEC, 0xFF7A, 0xFED1,\n    0xFEA6, 0xFEB1, 0xFEC6, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEBD,\n    0xFF9A, 0xFFC9, 0xFF1D, 0xFEB0, 0xFEA8, 0xFEBD, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFF84, 0xFFEC, 0xFF61, 0xFEBC, 0xFEA6, 0xFEB7,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFF84, 0xFFEC, 0xFF61, 0xFEBC,\n    0xFEA6, 0xFEB7, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xCF5F, 0xCF5E, 0xCF5F, 0xCF61, 0xCF64, 0xCF68,\n    0xCF6E, 0xCF76, 0xCF7F, 0xCF8B, 0xCF98, 0xCFA7, 0xD009, 0xD0EB,\n    0xD21B, 0xD366, 0xD499, 0xD580, 0xD5EA, 0xD5A3, 0xD478, 0xD237,\n    0xCEA3, 0xC9D3, 0xC40B, 0xBD91, 0xB6A9, 0xAF9A, 0xA8A9, 0xA21B,\n    0x9C35, 0x973D, 0x9377, 0x994E, 0xA6B0, 0xB07A, 0xB9CA, 0xC330,\n    0xCE0E, 0xD834, 0xD36A, 0xC9F8, 0xC10B, 0xB60F, 0xAB39, 0xA21F,\n    0x9994, 0x9128, 0x87BB, 0x8034, 0x7F8A, 0x9377, 0x9E18, 0xA712,\n    0xB07A, 0xB9CA, 0xC330, 0xCE0E, 0xD834, 0xD36A, 0xC9F8, 0xC10B,\n    0xB60F, 0xAB39, 0xA21F, 0x9994, 0x918A, 0x89E9, 0x82CC, 0x7CB2,\n    0x8B1C, 0x992C, 0xA29B, 0xABC7, 0xB523, 0xBE76, 0xC82D, 0xD3D0,\n    0xD90B, 0xCE5A, 0xC595, 0xBC38, 0xAFFD, 0xA183, 0x9581, 0x8C17,\n    0x8475, 0x7DDD, 0x88A5, 0x9377, 0x9F28, 0xA966, 0xB2D0, 0xBC1F,\n    0xC594, 0xD107, 0xD980, 0xD095, 0xC6A8, 0xBC38, 0xAFFD, 0xA183,\n    0x9581, 0x8C17, 0x8475, 0x7DDD, 0x88A5, 0x9377, 0x9F28, 0xA966,\n    0xB2D0, 0xBC1F, 0xC594, 0xD107, 0xD980, 0xD095, 0xC6A8, 0xBC38,\n    0xAFFD, 0xAFFD, 0xF9B7, 0xF9B5, 0xF9B8, 0xF9BE, 0xF9CA, 0xF9DB,\n    0xF9F2, 0xFA0F, 0xFA32, 0xFA5D, 0xFA8F, 0xFAC9, 0xFB32, 0xFBE6,\n    0xFCD5, 0xFDEF, 0xFF23, 0x0060, 0x0198, 0x02BA, 0x03B5, 0x0479,\n    0x04AC, 0x0444, 0x03AA, 0x0335, 0x02C2, 0x0247, 0x01C9, 0x014C,\n    0x00D3, 0x0063, 0x0000, 0xFFE9, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xFECA, 0xFEC9, 0xFECA, 0xFECA, 0xFECB, 0xFECD,\n    0xFECF, 0xFED2, 0xFED5, 0xFED9, 0xFEDD, 0xFEE3, 0xFEE8, 0xFEEE,\n    0xFEF5, 0xFEFF, 0xFF0D, 0xFF21, 0xFF3D, 0xFF60, 0xFF8E, 0xFFC7,\n    0x0061, 0x0156, 0x0216, 0x0234, 0x020F, 0x01CB, 0x0171, 0x010B,\n    0x00A5, 0x0049, 0x0000, 0xFFF2, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xC8DA, 0xC8D9, 0xC8DA, 0xC8DE, 0xC8E4, 0xC8ED,\n    0xC8F9, 0xC909, 0xC91C, 0xC933, 0xC94E, 0xC96D, 0xC9C9, 0xCA82,\n    0xCB7A, 0xCC90, 0xCDA6, 0xCE9A, 0xCF4E, 0xCFA1, 0xCF73, 0xCEA6,\n    0xC9C5, 0xC135, 0xBA9D, 0xBA7D, 0xBD46, 0xC17D, 0xC68B, 0xCBD8,\n    0xD0CC, 0xD4CF, 0xD74A, 0xD150, 0xC837, 0xC3CB, 0xC063, 0xBE93,\n    0xBFB8, 0xC3CD, 0xC699, 0xC40B, 0xBDA3, 0xB902, 0xBBDA, 0xC6D6,\n    0xD2DE, 0xD952, 0xDC0C, 0xDCE4, 0xDCAC, 0xD74A, 0xCF56, 0xC837,\n    0xC3CB, 0xC063, 0xBE93, 0xBFB8, 0xC3CD, 0xC699, 0xC40B, 0xBDA3,\n    0xB902, 0xBBDA, 0xC6D6, 0xD2DE, 0xD938, 0xDB79, 0xDC35, 0xDD4C,\n    0xDA0F, 0xD394, 0xCB4D, 0xC5EA, 0xC1ED, 0xBF3E, 0xBE8F, 0xC1A6,\n    0xC5A2, 0xC61E, 0xC0BB, 0xBA5A, 0xB924, 0xC6FB, 0xD6E2, 0xDB75,\n    0xDC5D, 0xDCFE, 0xDAED, 0xD74A, 0xCF56, 0xC837, 0xC3A2, 0xC009,\n    0xBE70, 0xC09F, 0xC4CA, 0xC696, 0xC1EB, 0xBAD4, 0xB924, 0xC707,\n    0xD6E2, 0xDB75, 0xDC5D, 0xDCFE, 0xDAED, 0xD74A, 0xCF56, 0xC837,\n    0xC3A2, 0xC009, 0xBE70, 0xC09F, 0xC4CA, 0xC696, 0xC2B9, 0xBC70,\n    0xB924, 0xB924, 0x10E3, 0x10E3, 0x10E3, 0x10E3, 0x10E3, 0x10E3,\n    0x10E3, 0x10E3, 0x10E3, 0x10E3, 0x10E3, 0x10E3, 0x10B3, 0x1039,\n    0x0F95, 0x0EE6, 0x0E4C, 0x0DE7, 0x0DD7, 0x0E3C, 0x0F35, 0x10E3,\n    0x1345, 0x1636, 0x19A2, 0x1D73, 0x2196, 0x25F4, 0x2A79, 0x2F10,\n    0x33A4, 0x3820, 0x3C70, 0x42E4, 0x4770, 0x4807, 0x46F1, 0x410F,\n    0x2CDF, 0x0F78, 0x1A8E, 0x2398, 0x2751, 0x2961, 0x2A43, 0x28A9,\n    0x2741, 0x28FE, 0x2D47, 0x328E, 0x377D, 0x3C70, 0x4328, 0x4770,\n    0x4807, 0x46F1, 0x410F, 0x2CDF, 0x0F78, 0x1A8E, 0x2398, 0x2751,\n    0x2961, 0x2A43, 0x28A9, 0x2741, 0x290A, 0x2D8A, 0x32DE, 0x365A,\n    0x39C2, 0x3F9A, 0x461A, 0x47BF, 0x47E4, 0x44CC, 0x3A64, 0x1CC0,\n    0x0CD5, 0x20C9, 0x2599, 0x2849, 0x2A1A, 0x28B0, 0x27A8, 0x2BBC,\n    0x315B, 0x3653, 0x38F0, 0x3C70, 0x4328, 0x4770, 0x47D2, 0x45F3,\n    0x3E79, 0x24CC, 0x0B97, 0x1F1A, 0x24B9, 0x2800, 0x2A1A, 0x28B6,\n    0x27A8, 0x2BBC, 0x315B, 0x3653, 0x38F0, 0x3C70, 0x4328, 0x4770,\n    0x47D2, 0x45F3, 0x3E79, 0x24CC, 0x0B97, 0x1F1A, 0x2525, 0x28D9,\n    0x2A1A, 0x2A1A, 0xF9BF, 0xF9BF, 0xF9BF, 0xF9BF, 0xF9C0, 0xF9C1,\n    0xF9C2, 0xF9C4, 0xF9C6, 0xF9C9, 0xF9CC, 0xF9D0, 0xF9D0, 0xF9CA,\n    0xF9C1, 0xF9BA, 0xF9B7, 0xF9BD, 0xF9CE, 0xF9EF, 0xFA22, 0xFA6B,\n    0xFAE6, 0xFBA1, 0xFC88, 0xFD87, 0xFE8B, 0xFF81, 0x0055, 0x00F4,\n    0x014A, 0x0145, 0x00D0, 0xF918, 0xF156, 0xF30F, 0xF7AF, 0xFC0E,\n    0xFD89, 0xFD35, 0xFCD3, 0xFCB3, 0xFCB5, 0xFCBC, 0xFCB4, 0xFC86,\n    0xFC8A, 0xFD21, 0xFE48, 0xFF97, 0x00C7, 0x00D0, 0xF81C, 0xF156,\n    0xF30F, 0xF7AE, 0xFC0E, 0xFD89, 0xFD35, 0xFCD3, 0xFCB3, 0xFCB5,\n    0xFCBC, 0xFCB4, 0xFC86, 0xFC8A, 0xFD1F, 0xFE41, 0xFF8F, 0x0074,\n    0x0188, 0xFD2A, 0xF38A, 0xF1A3, 0xF534, 0xFA19, 0xFD31, 0xFD6D,\n    0xFD1B, 0xFCB9, 0xFCB2, 0xFCB9, 0xFCBE, 0xFC8D, 0xFCBE, 0xFDD2,\n    0xFF32, 0x0068, 0x01D4, 0x00D0, 0xF81C, 0xF156, 0xF372, 0xF89C,\n    0xFCBE, 0xFD84, 0xFD2A, 0xFCBE, 0xFCB3, 0xFCB8, 0xFCBE, 0xFC8D,\n    0xFCBE, 0xFDD2, 0xFF32, 0x0068, 0x01D4, 0x00D0, 0xF81C, 0xF156,\n    0xF372, 0xF89C, 0xFCBE, 0xFD84, 0xFD2A, 0xFCBE, 0xFCB3, 0xFCB8,\n    0xFCBE, 0xFCBE, 0xFCCE, 0xFCCD, 0xFCCE, 0xFCD0, 0xFCD5, 0xFCDB,\n    0xFCE4, 0xFCEF, 0xFCFC, 0xFD0C, 0xFD1F, 0xFD35, 0xFD5F, 0xFDA9,\n    0xFE0C, 0xFE7F, 0xFEFB, 0xFF78, 0xFFEE, 0x0055, 0x00A7, 0x00DB,\n    0x00F3, 0x00FA, 0x00F3, 0x00E0, 0x00C4, 0x00A1, 0x007C, 0x0056,\n    0x0033, 0x0015, 0x0000, 0x0032, 0x0000, 0xFEC8, 0xFD30, 0xFBC7,\n    0xFB1E, 0xFB1B, 0xFB56, 0xFC46, 0xFD6F, 0xFE71, 0xFEF6, 0xFEFA,\n    0xFED1, 0xFEC3, 0xFEAE, 0xFEA9, 0xFEEF, 0x0000, 0x004E, 0x0000,\n    0xFEC8, 0xFD30, 0xFBC7, 0xFB1E, 0xFB1B, 0xFB56, 0xFC46, 0xFD6F,\n    0xFE71, 0xFEF6, 0xFEFA, 0xFED1, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEBC,\n    0xFF96, 0x002F, 0x0046, 0xFF79, 0xFDFF, 0xFC6D, 0xFB53, 0xFB14,\n    0xFB23, 0xFBBF, 0xFCCD, 0xFDE6, 0xFEC8, 0xFEF4, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFF79, 0x0000, 0x004E, 0x0000, 0xFEAB, 0xFCE8,\n    0xFB85, 0xFB15, 0xFB1D, 0xFB85, 0xFC96, 0xFDCE, 0xFEC8, 0xFEF6,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFF79, 0x0000, 0x004E, 0x0000,\n    0xFEAB, 0xFCE8, 0xFB85, 0xFB15, 0xFB1D, 0xFB85, 0xFCC0, 0xFE20,\n    0xFEC8, 0xFEC8, 0xF50B, 0xF50C, 0xF50B, 0xF507, 0xF500, 0xF4F5,\n    0xF4E8, 0xF4D6, 0xF4C1, 0xF4A7, 0xF489, 0xF466, 0xF447, 0xF42F,\n    0xF411, 0xF3E0, 0xF391, 0xF317, 0xF265, 0xF171, 0xF02C, 0xEE8C,\n    0xECA3, 0xEA8C, 0xE844, 0xE5C9, 0xE31A, 0xE033, 0xDD12, 0xD9B6,\n    0xD61B, 0xD240, 0xCE23, 0xC22C, 0xB752, 0xB8D9, 0xBE52, 0xC309,\n    0xC22B, 0xBE37, 0xC099, 0xCA94, 0xD628, 0xE1B1, 0xEC05, 0xF5AE,\n    0xFE3C, 0x0609, 0x0FF6, 0x1545, 0x09A2, 0xCE23, 0xBC4E, 0xB752,\n    0xB8D9, 0xBE52, 0xC309, 0xC22B, 0xBE37, 0xC099, 0xCA94, 0xD628,\n    0xE1B1, 0xEC05, 0xF5AE, 0xFE3C, 0x0505, 0x0A22, 0x0E56, 0x1404,\n    0xE62D, 0xC2F8, 0xB8DB, 0xB74C, 0xBB62, 0xC111, 0xC38C, 0xBFF9,\n    0xBE26, 0xC52A, 0xCF57, 0xDA7E, 0xE6FD, 0xF587, 0x01E0, 0x08F0,\n    0x0D7E, 0x115B, 0xED12, 0xCE23, 0xBC4E, 0xB752, 0xB950, 0xBF5F,\n    0xC38B, 0xC118, 0xBDE2, 0xC2BA, 0xCD4F, 0xD980, 0xE6FD, 0xF5B6,\n    0x01E0, 0x08F0, 0x0D7E, 0x115B, 0xED12, 0xCE23, 0xBC4E, 0xB752,\n    0xB950, 0xBF5F, 0xC38B, 0xC118, 0xBDE2, 0xC2BA, 0xD06D, 0xDFBD,\n    0xE6FD, 0xE6FD, 0x8001, 0x8001, 0x48AE, 0x48AE, 0x48AF, 0x48B1,\n    0x48B2, 0x48B4, 0x48B6, 0x48B9, 0x48BC, 0x48BF, 0x48C2, 0x48C6,\n    0x48D6, 0x48F8, 0x4926, 0x4959, 0x4989, 0x49B0, 0x49C7, 0x49C7,\n    0x49A8, 0x4963, 0x48F3, 0x485B, 0x47A4, 0x46D6, 0x45FA, 0x4517,\n    0x4436, 0x4360, 0x429D, 0x41F5, 0x4171, 0x411E, 0x40FC, 0x40FE,\n    0x4117, 0x413B, 0x415D, 0x4170, 0x4171, 0x4171, 0x4171, 0x4171,\n    0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171,\n    0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171,\n    0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171,\n    0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171,\n    0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171,\n    0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171,\n    0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171,\n    0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171,\n    0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171,\n    0x4171, 0x4171, 0x4171, 0x4171, 0x0083, 0x0083, 0x0083, 0x0083,\n    0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083, 0x0083,\n    0x0084, 0x0085, 0x0087, 0x0089, 0x008B, 0x008C, 0x008D, 0x008B,\n    0x0089, 0x0083, 0x0095, 0x00CB, 0x0118, 0x016E, 0x01BE, 0x01F9,\n    0x0213, 0x01FB, 0x01A4, 0x0100, 0x0000, 0xF82A, 0xF0ED, 0xF3D1,\n    0xF9E3, 0xFF3C, 0x0104, 0x00BB, 0x000B, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x002F, 0x0000,\n    0xF74E, 0xF0ED, 0xF3D1, 0xF9E3, 0xFF3C, 0x0104, 0x00BB, 0x000B,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x00D5, 0xFC58, 0xF2D9, 0xF1BB, 0xF6B3, 0xFCE5,\n    0x0081, 0x0106, 0x0056, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0128, 0x0000, 0xF74E, 0xF0ED,\n    0xF44D, 0xFB06, 0x0000, 0x0112, 0x0089, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0128, 0x0000,\n    0xF74E, 0xF0ED, 0xF44D, 0xFB06, 0x0000, 0x0112, 0x0089, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x84CE, 0x84CE, 0x84CE, 0x84CE,\n    0x84CE, 0x84CE, 0x84CE, 0x84CE, 0x84CE, 0x84CE, 0x84CE, 0x84CE,\n    0x8486, 0x83D0, 0x82DA, 0x81D4, 0x80EE, 0x8057, 0x803F, 0x80D6,\n    0x824B, 0x84CE, 0x8882, 0x8D49, 0x92EC, 0x9937, 0x9FF2, 0xA6EA,\n    0xADE7, 0xB4B4, 0xBB1C, 0xC0E8, 0xC5E4, 0xC6C4, 0xBF5F, 0xAEC0,\n    0x9A28, 0x8969, 0x82EB, 0x83FC, 0x8691, 0x86BD, 0x86BD, 0x86BD,\n    0x86BD, 0x86BD, 0x86BD, 0x85D3, 0x8182, 0x8083, 0x8EDB, 0xC5E4,\n    0xC9FE, 0xBF5F, 0xAEC0, 0x9A28, 0x8969, 0x82EB, 0x83FC, 0x8691,\n    0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD,\n    0x86BD, 0x847C, 0xB0DB, 0xCAE6, 0xC568, 0xB80C, 0xA476, 0x90D1,\n    0x84D6, 0x82E3, 0x8577, 0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD,\n    0x86BD, 0x86BD, 0x86BD, 0x86BD, 0xAAFB, 0xC5E4, 0xC9FE, 0xBF5F,\n    0xAD5B, 0x96C7, 0x86BD, 0x82B6, 0x84BA, 0x86BD, 0x86BD, 0x86BD,\n    0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD, 0xAAFB, 0xC5E4,\n    0xC9FE, 0xBF5F, 0xAD5B, 0x96C7, 0x86BD, 0x82B6, 0x84BA, 0x86BD,\n    0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x8001, 0x8001, 0x4171, 0xBF5F,\n    0xE5AC, 0xE5AC, 0xE5AC, 0xE5AC, 0xE5AD, 0xE5AE, 0xE5B0, 0xE5B2,\n    0xE5B4, 0xE5B7, 0xE5BA, 0xE5BE, 0xE62B, 0xE753, 0xE916, 0xEB52,\n    0xEDE7, 0xF0B4, 0xF399, 0xF674, 0xF926, 0xFB8C, 0xFE03, 0x00E0,\n    0x0400, 0x073B, 0x0A6B, 0x0D68, 0x100D, 0x1233, 0x13B4, 0x1469,\n    0x142B, 0x11F0, 0x0D50, 0x071B, 0x0023, 0xF936, 0xF324, 0xEEBE,\n    0xECD4, 0xEDC0, 0xF09B, 0xF4F7, 0xFA70, 0x00A2, 0x072C, 0x0DA9,\n    0x13B5, 0x18EE, 0x1C09, 0x142B, 0x0EB0, 0x087B, 0x01FE, 0xFBAC,\n    0xF5F2, 0xF143, 0xEE11, 0xECCC, 0xEDB1, 0xF053, 0xF45C, 0xF97B,\n    0xFF5F, 0x05B5, 0x0C2E, 0x1278, 0x1841, 0x1CA6, 0x174E, 0x118B,\n    0x0BA3, 0x0539, 0xFEC0, 0xF8A9, 0xF365, 0xEF68, 0xED23, 0xED08,\n    0xEF4D, 0xF38E, 0xF951, 0x001C, 0x0775, 0x0EE3, 0x15EB, 0x1C13,\n    0x183C, 0x142B, 0x0E9E, 0x083D, 0x018A, 0xFB07, 0xF532, 0xF08C,\n    0xED98, 0xECD5, 0xEE9E, 0xF2A1, 0xF857, 0xFF3A, 0x06C4, 0x0E70,\n    0x15B6, 0x1C13, 0x183C, 0x142B, 0x0EAC, 0x086D, 0x01E4, 0xFB87,\n    0xF5C8, 0xF11D, 0xEDFA, 0xECD5, 0xECD5, 0xECD5, 0xECD5, 0xECD5,\n    0xEFB6, 0xEFB4, 0xEFB6, 0xEFBF, 0xEFCD, 0xEFE3, 0xF000, 0xF024,\n    0xF051, 0xF087, 0xF0C6, 0xF110, 0xF196, 0xF27F, 0xF3B4, 0xF520,\n    0xF6AC, 0xF842, 0xF9CD, 0xFB36, 0xFC68, 0xFD4C, 0xFDEE, 0xFE6B,\n    0xFEC9, 0xFF0D, 0xFF3E, 0xFF61, 0xFF7B, 0xFF93, 0xFFAD, 0xFFD0,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0xEF09, 0xEF06, 0xEF09, 0xEF13, 0xEF23, 0xEF3B, 0xEF5A, 0xEF83,\n    0xEFB4, 0xEFF0, 0xF036, 0xF086, 0xF11A, 0xF21A, 0xF36D, 0xF4FC,\n    0xF6AF, 0xF86E, 0xFA21, 0xFBB0, 0xFD05, 0xFE05, 0xFEBE, 0xFF4E,\n    0xFFBC, 0x000D, 0x004B, 0x007B, 0x00A4, 0x00CC, 0x00FB, 0x0138,\n    0x0188, 0x025D, 0x033A, 0x02CF, 0x0233, 0x01DB, 0x0197, 0x0187,\n    0x01DB, 0x0286, 0x031C, 0x0336, 0x02D6, 0x0259, 0x0210, 0x01DD,\n    0x01B2, 0x018F, 0x0170, 0x0188, 0x025D, 0x033A, 0x02CF, 0x0233,\n    0x01DB, 0x0197, 0x0187, 0x01DB, 0x0286, 0x031C, 0x0336, 0x02D6,\n    0x0259, 0x0210, 0x01DF, 0x01B7, 0x0193, 0x0174, 0x0171, 0x01E4,\n    0x02E9, 0x0316, 0x027C, 0x0205, 0x01B5, 0x0186, 0x01A1, 0x022A,\n    0x02D6, 0x033D, 0x02D2, 0x022E, 0x01EC, 0x01BE, 0x019B, 0x0177,\n    0x0169, 0x0188, 0x025D, 0x033A, 0x02B9, 0x021A, 0x01C8, 0x018D,\n    0x0190, 0x020C, 0x02C9, 0x033D, 0x02D2, 0x022E, 0x01EC, 0x01BE,\n    0x019B, 0x0177, 0x0169, 0x0188, 0x025D, 0x033A, 0x02B9, 0x021A,\n    0x01C8, 0x018D, 0x0190, 0x0214, 0x02D8, 0x033D, 0x033D, 0x033D,\n    0xE791, 0xE792, 0xE793, 0xE795, 0xE798, 0xE79C, 0xE7A1, 0xE7A7,\n    0xE7AE, 0xE7B6, 0xE7C0, 0xE7CB, 0xE89B, 0xEABA, 0xEDD8, 0xF19F,\n    0xF5BE, 0xF9E0, 0xFDB3, 0x00E4, 0x0320, 0x0413, 0x039C, 0x01FC,\n    0xFF7A, 0xFC5A, 0xF8E2, 0xF557, 0xF200, 0xEF20, 0xECFE, 0xEBE0,\n    0xEC0A, 0xEE74, 0xF359, 0xF9DF, 0x012C, 0x086B, 0x0EC3, 0x1359,\n    0x1557, 0x145B, 0x1157, 0x0CBE, 0x06F9, 0x0070, 0xF98D, 0xF2B8,\n    0xEC5A, 0xE6DC, 0xE39E, 0xEC0A, 0xF1CF, 0xF855, 0xFF25, 0x05C9,\n    0x0BCA, 0x10B3, 0x140C, 0x155F, 0x146B, 0x11A3, 0x0D62, 0x07FD,\n    0x01C9, 0xFB1D, 0xF44C, 0xEDAD, 0xE795, 0xE2F2, 0xE8B1, 0xEECD,\n    0xF504, 0xFBC1, 0x028D, 0x08F2, 0x0E77, 0x12A5, 0x1504, 0x151E,\n    0x12B8, 0x0E3C, 0x082A, 0x0102, 0xF945, 0xF172, 0xEA0B, 0xE38F,\n    0xE7B3, 0xEC0A, 0xF1E2, 0xF896, 0xFFA0, 0x0676, 0x0C94, 0x1173,\n    0x148B, 0x1555, 0x1371, 0x0F36, 0x0931, 0x01F0, 0xFA00, 0xF1EC,\n    0xEA42, 0xE38F, 0xE7B3, 0xEC0A, 0xF1D3, 0xF863, 0xFF3F, 0x05EC,\n    0x0BF3, 0x10D8, 0x1421, 0x1555, 0x1555, 0x1555, 0x1555, 0x1555,\n    0xF68D, 0xF68B, 0xF68D, 0xF693, 0xF69D, 0xF6AC, 0xF6C0, 0xF6DA,\n    0xF6F9, 0xF71F, 0xF74B, 0xF77D, 0xF7DD, 0xF885, 0xF963, 0xFA67,\n    0xFB81, 0xFCA0, 0xFDB4, 0xFEAA, 0xFF74, 0x0000, 0x0055, 0x008A,\n    0x00A4, 0x00A8, 0x009A, 0x0080, 0x0060, 0x003D, 0x001E, 0x0008,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0xFC39, 0xFC37, 0xFC39, 0xFC40, 0xFC4C, 0xFC5D, 0xFC74, 0xFC92,\n    0xFCB7, 0xFCE3, 0xFD16, 0xFD52, 0xFDCA, 0xFEA4, 0xFFC5, 0x0114,\n    0x0279, 0x03DB, 0x051F, 0x062E, 0x06ED, 0x0743, 0x0733, 0x06D9,\n    0x0643, 0x057E, 0x0497, 0x039D, 0x029D, 0x01A4, 0x00BF, 0xFFFF,\n    0xFF6E, 0x0056, 0x0156, 0x00C7, 0xFFD8, 0xFECB, 0xFDE6, 0xFD6D,\n    0xFDBC, 0xFEDD, 0x003B, 0x013E, 0x0169, 0x0118, 0x0084, 0xFFCE,\n    0xFF15, 0xFE7C, 0xFE3E, 0xFF6E, 0x00B1, 0x0156, 0x00C7, 0xFFD8,\n    0xFECB, 0xFDE6, 0xFD6D, 0xFDBC, 0xFEDD, 0x003B, 0x013E, 0x016B,\n    0x0127, 0x00A4, 0xFFFD, 0xFF47, 0xFE9C, 0xFE1F, 0xFEE8, 0x0006,\n    0x0135, 0x011F, 0x0057, 0xFF51, 0xFE4F, 0xFD98, 0xFD72, 0xFE3A,\n    0xFF8D, 0x00D0, 0x016D, 0x013E, 0x00A5, 0xFFD2, 0xFEF1, 0xFE32,\n    0xFEBF, 0xFF6E, 0x00B1, 0x0156, 0x00BF, 0xFFC0, 0xFEA6, 0xFDC4,\n    0xFD68, 0xFE06, 0xFF61, 0x00BF, 0x016D, 0x013F, 0x00A6, 0xFFD2,\n    0xFEF1, 0xFE32, 0xFEBF, 0xFF6E, 0x00B1, 0x0156, 0x00BF, 0xFFC0,\n    0xFEA6, 0xFDC4, 0xFD68, 0xFE0A, 0xFF6C, 0x00CC, 0x016D, 0x016D,\n    0xE56A, 0xE56A, 0xE56A, 0xE56B, 0xE56C, 0xE56E, 0xE570, 0xE573,\n    0xE576, 0xE57A, 0xE57F, 0xE585, 0xE606, 0xE75D, 0xE95D, 0xEBD8,\n    0xEEA0, 0xF188, 0xF462, 0xF701, 0xF936, 0xFAD3, 0xFBF5, 0xFCD9,\n    0xFD8A, 0xFE10, 0xFE74, 0xFEBF, 0xFEFB, 0xFF30, 0xFF67, 0xFFAA,\n    0x0000, 0x001E, 0x0002, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x3B05, 0x3B05, 0x3B05, 0x3B05, 0x3B05, 0x3B05, 0x3B05, 0x3B05,\n    0x3B05, 0x3B05, 0x3B05, 0x3B05, 0x3AF7, 0x3AD3, 0x3AA2, 0x3A6E,\n    0x3A40, 0x3A22, 0x3A1E, 0x3A3C, 0x3A86, 0x3B05, 0x3BBE, 0x3CA7,\n    0x3DB9, 0x3EEA, 0x4032, 0x4189, 0x42E7, 0x4442, 0x4594, 0x46D3,\n    0x47F6, 0x4900, 0x4962, 0x485E, 0x4670, 0x44C9, 0x4527, 0x47FD,\n    0x441A, 0x428F, 0x42D6, 0x42AD, 0x423E, 0x41BD, 0x4138, 0x40C0,\n    0x4065, 0x4036, 0x4044, 0x40B0, 0x4167, 0x4245, 0x4326, 0x43E3,\n    0x445A, 0x4439, 0x42D3, 0x410B, 0x3F81, 0x3E03, 0x3D40, 0x3CA6,\n    0x3C17, 0x3B99, 0x3B35, 0x3AF3, 0x3ADD, 0x3AFA, 0x3B5C, 0x3BFA,\n    0x3CC0, 0x3D9C, 0x3E7B, 0x3F49, 0x3FF4, 0x4083, 0x40D1, 0x4072,\n    0x3E6D, 0x3D8D, 0x446F, 0x4336, 0x40F0, 0x3E52, 0x3C14, 0x3AED,\n    0x3ADC, 0x3B4E, 0x3C1E, 0x3D23, 0x3E37, 0x3F35, 0x3FF4, 0x4080,\n    0x40D3, 0x40AC, 0x3EB4, 0x3D8D, 0x446F, 0x4336, 0x40F0, 0x3E52,\n    0x3C14, 0x3AED, 0x3ADC, 0x3B4E, 0x3C1E, 0x3D23, 0x3E37, 0x3F35,\n    0x3FF4, 0x4080, 0x40D3, 0x40AC, 0x3EB4, 0x3D8D, 0x446F, 0x446F,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_25.inc.c",
    "content": "static const struct Animation anim_25[] = {\n    65,\n    189,\n    0,\n    0,\n    0x64,\n    ANIMINDEX_NUMPARTS(anim_25_indices),\n    anim_25_values,\n    anim_25_indices,\n    0,\n};\n\n\nstatic const u16 anim_25_indices[] = {\n    0x0001, 0x0000, 0x0064, 0x0001, 0x0064, 0x0065, 0x0001, 0x0000, 0x0064, 0x00C9, 0x0001, 0x0000,\n    0x0064, 0x0E7D, 0x0064, 0x0EE1, 0x0064, 0x0F45,\n    0x0064, 0x0D51, 0x0064, 0x0DB5, 0x0064, 0x0E19,\n    0x0064, 0x0C25, 0x0064, 0x0C89, 0x0064, 0x0CED,\n    0x0001, 0x0C21, 0x0001, 0x0C22, 0x0001, 0x0C23,\n    0x0064, 0x02BD, 0x0064, 0x0321, 0x0064, 0x0385,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0064, 0x0259,\n    0x0064, 0x012D, 0x0064, 0x0191, 0x0064, 0x01F5,\n    0x0001, 0x0C1D, 0x0001, 0x0C1E, 0x0001, 0x0C1F,\n    0x0064, 0x0579, 0x0064, 0x05DD, 0x0064, 0x0641,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0064, 0x0515,\n    0x0064, 0x03E9, 0x0064, 0x044D, 0x0064, 0x04B1,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0C20,\n    0x0064, 0x0AF1, 0x0064, 0x0B55, 0x0064, 0x0BB9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0064, 0x0A8D,\n    0x0064, 0x0961, 0x0064, 0x09C5, 0x0064, 0x0A29,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0C24,\n    0x0064, 0x0835, 0x0064, 0x0899, 0x0064, 0x08FD,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0064, 0x07D1,\n    0x0064, 0x06A5, 0x0064, 0x0709, 0x0064, 0x076D,\n};\n\nstatic const s16 anim_25_values[] = {\n    0x0000, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AB, 0x00AB,\n    0x00AC, 0x00AC, 0x00AC, 0x00AD, 0x00AD, 0x00AE, 0x00AF, 0x00AF,\n    0x00B0, 0x00B0, 0x00B1, 0x00B1, 0x00B2, 0x00B2, 0x00B3, 0x00B3,\n    0x00B4, 0x00B4, 0x00B5, 0x00B5, 0x00B6, 0x00B6, 0x00B7, 0x00B7,\n    0x00B8, 0x00B8, 0x00B9, 0x00B9, 0x00BA, 0x00BA, 0x00BB, 0x00BB,\n    0x00BB, 0x00BC, 0x00BC, 0x00BC, 0x00BC, 0x00BC, 0x00BC, 0x00BC,\n    0x00BC, 0x00BB, 0x00BA, 0x00B8, 0x00B5, 0x00B1, 0x00AD, 0x00A8,\n    0x00A2, 0x009B, 0x0093, 0x008B, 0x0084, 0x007E, 0x0079, 0x0079,\n    0x006F, 0x006A, 0x00A2, 0x0105, 0x0160, 0x01B2, 0x01FC, 0x023E,\n    0x0279, 0x02AC, 0x02D9, 0x0300, 0x0321, 0x033D, 0x0353, 0x0365,\n    0x0372, 0x037C, 0x0381, 0x0384, 0x0382, 0x0379, 0x0369, 0x0353,\n    0x0336, 0x0313, 0x02EB, 0x02BC, 0x0289, 0x0250, 0x0213, 0x01D0,\n    0x018A, 0x013F, 0x00F0, 0x009D, 0x0076, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002,\n    0x0002, 0x0002, 0x0003, 0x0003, 0x0004, 0x0004, 0x0004, 0x0005,\n    0x0005, 0x0006, 0x0006, 0x0006, 0x0007, 0x0007, 0x0008, 0x0008,\n    0x0008, 0x0009, 0x0009, 0x0009, 0x000A, 0x000A, 0x000A, 0x000B,\n    0x000B, 0x000C, 0x000C, 0x000C, 0x000D, 0x000D, 0x000D, 0x000E,\n    0x000E, 0x000E, 0x000F, 0x000F, 0x000F, 0x0010, 0x0010, 0x0010,\n    0x0010, 0x0010, 0x0010, 0x0010, 0x0011, 0x0011, 0x0011, 0x0012,\n    0x0012, 0x0011, 0x0011, 0x0013, 0x001C, 0x0027, 0x002C, 0x0025,\n    0x0018, 0x0010, 0x000E, 0x000D, 0x000C, 0x000C, 0x000C, 0x000D,\n    0x000D, 0x000E, 0x000E, 0x000F, 0x000F, 0x0010, 0x0010, 0x0010,\n    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,\n    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,\n    0x0010, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x4253, 0x4635, 0x46FC,\n    0x3FFF, 0x3351, 0x2626, 0x188A, 0x0A88, 0xFC2A, 0xED79, 0xDE82,\n    0xCF4E, 0xBFE9, 0xB05C, 0xA0B4, 0x90FA, 0x8139, 0x7178, 0x61C9,\n    0x5233, 0x42C1, 0x337D, 0x2472, 0x15AB, 0x0732, 0xF913, 0xEB56,\n    0xDE08, 0xD133, 0xC4E1, 0xB91D, 0xADF3, 0xA36C, 0x9993, 0x914E,\n    0x8B51, 0x8759, 0x8528, 0x847B, 0x8512, 0x0000, 0x0014, 0x0050,\n    0x00B2, 0x0139, 0x01E2, 0x02AC, 0x0394, 0x049B, 0x05BD, 0x06F8,\n    0x084C, 0x09B7, 0x0B36, 0x0CC8, 0x0E6C, 0x101F, 0x11E0, 0x13AD,\n    0x1584, 0x1764, 0x194B, 0x1B37, 0x1D26, 0x1F17, 0x2109, 0x22F8,\n    0x24E4, 0x26CB, 0x28AB, 0x2A82, 0x2C4F, 0x2E10, 0x2FC3, 0x3166,\n    0x32F9, 0x3478, 0x35E2, 0x3736, 0x3872, 0x3994, 0x3A9A, 0x3B83,\n    0x3C4D, 0x3CF6, 0x3D7C, 0x3DDF, 0x3E1B, 0x3E2F, 0x3D14, 0x39FF,\n    0x354C, 0x2F55, 0x2875, 0x2108, 0x1967, 0x11EE, 0x0AF8, 0x04DF,\n    0x0000, 0xFDD7, 0xFE62, 0xFFBC, 0x0000, 0xFF0D, 0xFE06, 0xFCEE,\n    0xFBC5, 0xFA8F, 0xF94C, 0xF800, 0xF6AC, 0xF552, 0xF3F4, 0xF293,\n    0xF133, 0xEFD5, 0xEE7A, 0xED25, 0xEBD8, 0xEA94, 0xE95D, 0xE833,\n    0xE718, 0xE60F, 0xE51A, 0xE43A, 0xE372, 0xE2C3, 0xE22F, 0xE1B9,\n    0xE162, 0xE12D, 0xE11A, 0xE16D, 0xE259, 0xE3C8, 0xE5A6, 0xE7E0,\n    0xEA5F, 0xF97C, 0xF97F, 0xF987, 0xF995, 0xF9A8, 0xF9C0, 0xF9DD,\n    0xF9FE, 0xFA24, 0xFA4E, 0xFA7C, 0xFAAD, 0xFAE2, 0xFB1A, 0xFB55,\n    0xFB92, 0xFBD3, 0xFC15, 0xFC5A, 0xFCA1, 0xFCE9, 0xFD33, 0xFD7E,\n    0xFDCA, 0xFE17, 0xFE65, 0xFEB2, 0xFF01, 0xFF4E, 0xFF9C, 0xFFE9,\n    0x0035, 0x0080, 0x00CB, 0x0114, 0x015B, 0x01A0, 0x01E4, 0x0225,\n    0x0264, 0x02A0, 0x02D9, 0x030F, 0x0342, 0x0371, 0x039C, 0x03C3,\n    0x03E6, 0x0405, 0x040A, 0x03E6, 0x039F, 0x033D, 0x02C7, 0x0245,\n    0x01BE, 0x0139, 0x00BE, 0x0053, 0x0000, 0xFFDD, 0xFFE7, 0xFFFD,\n    0x0000, 0xFFEF, 0xFFDC, 0xFFC7, 0xFFB2, 0xFF9B, 0xFF84, 0xFF6C,\n    0xFF53, 0xFF3A, 0xFF20, 0xFF07, 0xFEED, 0xFED4, 0xFEBB, 0xFEA2,\n    0xFE8A, 0xFE72, 0xFE5C, 0xFE46, 0xFE31, 0xFE1E, 0xFE0C, 0xFDFC,\n    0xFDEE, 0xFDE1, 0xFDD6, 0xFDCE, 0xFDC7, 0xFDC3, 0xFDC2, 0xFDC8,\n    0xFDD9, 0xFDF4, 0xFE17, 0xFE40, 0xFE6E, 0xED8C, 0xED9C, 0xEDCD,\n    0xEE1C, 0xEE89, 0xEF12, 0xEFB6, 0xF074, 0xF149, 0xF236, 0xF338,\n    0xF44E, 0xF578, 0xF6B2, 0xF7FD, 0xF957, 0xFABF, 0xFC32, 0xFDB1,\n    0xFF3A, 0x00C9, 0x0261, 0x03FE, 0x05A0, 0x0744, 0x08EA, 0x0A91,\n    0x0C36, 0x0DDA, 0x0F79, 0x1114, 0x12A8, 0x1435, 0x15B9, 0x1733,\n    0x18A1, 0x1A02, 0x1B55, 0x1C98, 0x1DCB, 0x1EEB, 0x1FF8, 0x20EF,\n    0x21D1, 0x229B, 0x234D, 0x23E4, 0x2460, 0x24BF, 0x245A, 0x22B1,\n    0x1FFD, 0x1C7A, 0x185F, 0x13E8, 0x0F4D, 0x0AC8, 0x0693, 0x02E8,\n    0x0000, 0xFEA3, 0xFED0, 0xFF95, 0x0000, 0xFFEE, 0xFFDA, 0xFFC4,\n    0xFFAE, 0xFF96, 0xFF7D, 0xFF64, 0xFF4A, 0xFF2F, 0xFF14, 0xFEF9,\n    0xFEDE, 0xFEC4, 0xFEA9, 0xFE8F, 0xFE76, 0xFE5D, 0xFE45, 0xFE2E,\n    0xFE18, 0xFE04, 0xFDF1, 0xFDE0, 0xFDD1, 0xFDC4, 0xFDB8, 0xFDAF,\n    0xFDA9, 0xFDA4, 0xFDA3, 0xFDA9, 0xFDBB, 0xFDD8, 0xFDFC, 0xFE28,\n    0xFE59, 0xCA4F, 0xCA4A, 0xCA39, 0xCA1F, 0xC9FB, 0xC9CD, 0xC998,\n    0xC95A, 0xC915, 0xC8C9, 0xC876, 0xC81E, 0xC7C0, 0xC75E, 0xC6F8,\n    0xC68E, 0xC622, 0xC5B3, 0xC542, 0xC4CF, 0xC45C, 0xC3E9, 0xC375,\n    0xC303, 0xC292, 0xC224, 0xC1B7, 0xC14E, 0xC0E9, 0xC088, 0xC02B,\n    0xBFD4, 0xBF82, 0xBF37, 0xBEF4, 0xBEB7, 0xBE83, 0xBE57, 0xBE35,\n    0xBE1C, 0xBE0D, 0xBE0A, 0xBE12, 0xBE25, 0xBE46, 0xBE73, 0xBEAE,\n    0xBEF7, 0xBF4F, 0xC034, 0xC208, 0xC49E, 0xC7CB, 0xCB65, 0xCF3E,\n    0xD32D, 0xD704, 0xDA9A, 0xDDC1, 0xE04F, 0xE18C, 0xE169, 0xE0B9,\n    0xE04F, 0xE04E, 0xE048, 0xE03F, 0xE034, 0xE026, 0xE016, 0xE005,\n    0xDFF2, 0xDFDF, 0xDFCB, 0xDFB7, 0xDFA4, 0xDF91, 0xDF80, 0xDF70,\n    0xDF62, 0xDF57, 0xDF4E, 0xDF48, 0xDF47, 0xDF49, 0xDF4F, 0xDF5A,\n    0xDF6B, 0xDF80, 0xDF9C, 0xDFBF, 0xDFE8, 0xE018, 0xE04F, 0xE108,\n    0xE283, 0xE46D, 0xE673, 0xE841, 0xE986, 0xFB1D, 0xFB2A, 0xFB50,\n    0xFB8E, 0xFBE3, 0xFC4E, 0xFCCE, 0xFD60, 0xFE05, 0xFEBB, 0xFF81,\n    0x0055, 0x0137, 0x0225, 0x031F, 0x0423, 0x052F, 0x0643, 0x075E,\n    0x087E, 0x09A2, 0x0ACA, 0x0BF3, 0x0D1D, 0x0E46, 0x0F6E, 0x1092,\n    0x11B3, 0x12CF, 0x13E4, 0x14F2, 0x15F7, 0x16F3, 0x17E3, 0x18C7,\n    0x199E, 0x1A67, 0x1B1F, 0x1BC7, 0x1C5D, 0x1CE0, 0x1D4E, 0x1DA7,\n    0x1DE9, 0x1E13, 0x1E24, 0x1E1B, 0x1DF7, 0x1DB6, 0x1C84, 0x19BC,\n    0x15A8, 0x1092, 0x0AC3, 0x0484, 0xFE20, 0xF7DF, 0xF20A, 0xECEB,\n    0xE8CC, 0xE6F7, 0xE771, 0xE898, 0xE8CC, 0xE7F8, 0xE722, 0xE648,\n    0xE56B, 0xE48B, 0xE3A8, 0xE2C3, 0xE1DC, 0xE0F2, 0xE006, 0xDF19,\n    0xDE29, 0xDD39, 0xDC46, 0xDB53, 0xDA5F, 0xD969, 0xD874, 0xD77D,\n    0xD687, 0xD590, 0xD499, 0xD3A3, 0xD2AC, 0xD1B7, 0xD0C2, 0xCFCE,\n    0xCEDB, 0xCDE9, 0xCCF9, 0xCB92, 0xC9B0, 0xC805, 0xC73E, 0xC80D,\n    0xCD53, 0xD2DC, 0xD2DC, 0xD2DB, 0xD2D9, 0xD2D7, 0xD2D5, 0xD2D2,\n    0xD2CF, 0xD2CC, 0xD2C9, 0xD2C6, 0xD2C3, 0xD2C1, 0xD2BE, 0xD2BD,\n    0xD2BC, 0xD2BB, 0xD2BB, 0xD2BC, 0xD2BE, 0xD2C1, 0xD2C5, 0xD2CA,\n    0xD2D0, 0xD2D8, 0xD2E1, 0xD2EC, 0xD2F9, 0xD307, 0xD317, 0xD328,\n    0xD33C, 0xD352, 0xD36A, 0xD385, 0xD3A2, 0xD3C1, 0xD3E3, 0xD407,\n    0xD42E, 0xD458, 0xD485, 0xD4B5, 0xD4E8, 0xD51F, 0xD558, 0xD595,\n    0xD5D5, 0xD619, 0xD68D, 0xD754, 0xD85E, 0xD99B, 0xDAFD, 0xDC74,\n    0xDDF1, 0xDF65, 0xE0C0, 0xE1F3, 0xE2EF, 0xE382, 0xE39C, 0xE360,\n    0xE2EF, 0xE26D, 0xE1E3, 0xE154, 0xE0BF, 0xE025, 0xDF86, 0xDEE4,\n    0xDE3F, 0xDD97, 0xDCEE, 0xDC44, 0xDB99, 0xDAEE, 0xDA44, 0xD99B,\n    0xD8F5, 0xD851, 0xD7B1, 0xD714, 0xD67C, 0xD5E9, 0xD55C, 0xD4D6,\n    0xD457, 0xD3E0, 0xD371, 0xD30B, 0xD2AE, 0xD25C, 0xD215, 0xD2F8,\n    0xD55E, 0xD81C, 0xDA0B, 0xDA01, 0xD411, 0xD4B4, 0xD4B1, 0xD4A9,\n    0xD49D, 0xD48D, 0xD478, 0xD460, 0xD444, 0xD425, 0xD403, 0xD3DF,\n    0xD3B8, 0xD38F, 0xD364, 0xD338, 0xD30B, 0xD2DC, 0xD2AD, 0xD27E,\n    0xD24F, 0xD220, 0xD1F2, 0xD1C4, 0xD198, 0xD16D, 0xD143, 0xD11C,\n    0xD0F7, 0xD0D5, 0xD0B5, 0xD099, 0xD080, 0xD06A, 0xD059, 0xD04C,\n    0xD044, 0xD040, 0xD042, 0xD049, 0xD056, 0xD069, 0xD082, 0xD0A2,\n    0xD0C8, 0xD0F6, 0xD12C, 0xD169, 0xD1AE, 0xD1FB, 0xD2A1, 0xD3DD,\n    0xD592, 0xD7A7, 0xD9FE, 0xDC7E, 0xDF09, 0xE186, 0xE3D8, 0xE5E3,\n    0xE78D, 0xE82D, 0xE7C7, 0xE744, 0xE78D, 0xE88D, 0xE993, 0xEA9E,\n    0xEBAD, 0xECC2, 0xEDDA, 0xEEF7, 0xF017, 0xF139, 0xF25F, 0xF387,\n    0xF4B0, 0xF5DB, 0xF707, 0xF834, 0xF961, 0xFA8E, 0xFBBB, 0xFCE7,\n    0xFE11, 0xFF3A, 0x0060, 0x0184, 0x02A6, 0x03C4, 0x04DF, 0x05F6,\n    0x0709, 0x0817, 0x0920, 0x0A65, 0x0BCB, 0x0CC9, 0x0CD4, 0x0B62,\n    0x0581, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xFFEA, 0xFFBD, 0xFF9B, 0xFFA7, 0x0003, 0x009A, 0x013E,\n    0x01ED, 0x02A6, 0x0366, 0x042E, 0x04FC, 0x05CD, 0x06A2, 0x0777,\n    0x084D, 0x0921, 0x09F3, 0x0AC0, 0x0B88, 0x0C49, 0x0D01, 0x0DAF,\n    0x0E53, 0x0EEA, 0x0F72, 0x0FEC, 0x1055, 0x10AB, 0x10EE, 0x110A,\n    0x10F0, 0x10A7, 0x1036, 0x0FA4, 0x0EF7, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xFFAE, 0xFF24, 0xFF09, 0x0000, 0x02A8, 0x0686, 0x0A9D,\n    0x0DEE, 0x0F7B, 0x0FC5, 0x0FF9, 0x1017, 0x1022, 0x101B, 0x1004,\n    0x0FDD, 0x0FA9, 0x0F6A, 0x0F20, 0x0ECD, 0x0E73, 0x0E14, 0x0DB0,\n    0x0D4A, 0x0CE3, 0x0C7C, 0x0C18, 0x0BB8, 0x0B5C, 0x0B08, 0x0ABB,\n    0x0A79, 0x0A42, 0x0A18, 0x09FA, 0x09E4, 0x09D5, 0x09CD, 0x09CB,\n    0x09CD, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549,\n    0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549,\n    0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549,\n    0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549,\n    0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549,\n    0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549,\n    0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549,\n    0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549,\n    0xF549, 0xF54F, 0xF55A, 0xF562, 0xF560, 0xF54A, 0xF527, 0xF502,\n    0xF4DB, 0xF4B2, 0xF488, 0xF45D, 0xF431, 0xF403, 0xF3D6, 0xF3A7,\n    0xF379, 0xF34B, 0xF31D, 0xF2EF, 0xF2C2, 0xF296, 0xF26A, 0xF240,\n    0xF218, 0xF1F1, 0xF1CC, 0xF1AA, 0xF189, 0xF16B, 0xF150, 0xF13A,\n    0xF129, 0xF11F, 0xF119, 0xF117, 0xF118, 0xC7DD, 0xC7EA, 0xC80D,\n    0xC848, 0xC898, 0xC8FD, 0xC976, 0xCA01, 0xCA9F, 0xCB4D, 0xCC0C,\n    0xCCDA, 0xCDB5, 0xCE9F, 0xCF94, 0xD094, 0xD19F, 0xD2B4, 0xD3D1,\n    0xD4F5, 0xD620, 0xD751, 0xD886, 0xD9BF, 0xDAFB, 0xDC38, 0xDD77,\n    0xDEB5, 0xDFF3, 0xE12E, 0xE267, 0xE39C, 0xE4CC, 0xE5F6, 0xE71A,\n    0xE836, 0xE949, 0xEA53, 0xEB53, 0xEC47, 0xED2E, 0xEE09, 0xEED5,\n    0xEF91, 0xF03E, 0xF0DA, 0xF163, 0xF1DA, 0xF23D, 0xF222, 0xF138,\n    0xEFA4, 0xED8B, 0xEB11, 0xE85A, 0xE58B, 0xE2C9, 0xE038, 0xDDFD,\n    0xDC3D, 0xDAAB, 0xD984, 0xD9BA, 0xDC3D, 0xE27D, 0xEBA6, 0xF543,\n    0xFCDE, 0x0000, 0xFFED, 0xFF8D, 0xFEE8, 0xFE04, 0xFCE7, 0xFB98,\n    0xFA1D, 0xF87D, 0xF6BE, 0xF4E5, 0xF2FB, 0xF105, 0xEF08, 0xED0D,\n    0xEB19, 0xE933, 0xE760, 0xE5A8, 0xE411, 0xE2A0, 0xE15D, 0xE04E,\n    0xDF79, 0xDEE5, 0xDE98, 0xDEBF, 0xDF76, 0xE0A9, 0xE247, 0xE43B,\n    0xE673, 0x054B, 0x053E, 0x0517, 0x04D8, 0x0480, 0x0411, 0x038C,\n    0x02F2, 0x0243, 0x0181, 0x00AC, 0xFFC6, 0xFECE, 0xFDC6, 0xFCAF,\n    0xFB89, 0xFA56, 0xF917, 0xF7CB, 0xF675, 0xF515, 0xF3AC, 0xF23A,\n    0xF0C1, 0xEF42, 0xEDBD, 0xEC33, 0xEAA5, 0xE915, 0xE782, 0xE5EE,\n    0xE45A, 0xE2C6, 0xE134, 0xDFA3, 0xDE16, 0xDC8D, 0xDB09, 0xD98B,\n    0xD813, 0xD6A2, 0xD53A, 0xD3DC, 0xD287, 0xD13E, 0xD000, 0xCECF,\n    0xCDAB, 0xCC96, 0xCB9F, 0xCAD1, 0xCA26, 0xC99A, 0xC925, 0xC8C4,\n    0xC86F, 0xC823, 0xC7D9, 0xC78C, 0xC737, 0xC3A6, 0xBE10, 0xBD0E,\n    0xC737, 0xE2E3, 0x0B29, 0x35BF, 0x585A, 0x68AD, 0x6BD0, 0x6DC7,\n    0x6EAC, 0x6E97, 0x6DA1, 0x6BE2, 0x6975, 0x6672, 0x62F1, 0x5F0D,\n    0x5ADC, 0x567A, 0x51FE, 0x4D81, 0x491D, 0x44EA, 0x4101, 0x3D7C,\n    0x3A72, 0x37FE, 0x3638, 0x3538, 0x3519, 0x35F2, 0x37DD, 0x3B91,\n    0x4182, 0x495D, 0x52D4, 0x5D94, 0x694E, 0x2BD6, 0x2BD7, 0x2BD9,\n    0x2BDB, 0x2BDF, 0x2BE3, 0x2BE7, 0x2BEC, 0x2BF0, 0x2BF5, 0x2BF8,\n    0x2BFB, 0x2BFE, 0x2BFF, 0x2BFE, 0x2BFD, 0x2BFA, 0x2BF4, 0x2BED,\n    0x2BE3, 0x2BD7, 0x2BC9, 0x2BB7, 0x2BA2, 0x2B8A, 0x2B6F, 0x2B4F,\n    0x2B2C, 0x2B05, 0x2ADA, 0x2AA9, 0x2A75, 0x2A3B, 0x29FC, 0x29B8,\n    0x296E, 0x291F, 0x28CA, 0x286E, 0x280C, 0x27A4, 0x2735, 0x26BF,\n    0x2642, 0x25BD, 0x2531, 0x249E, 0x2402, 0x235E, 0x2249, 0x2074,\n    0x1E01, 0x1B14, 0x17D2, 0x145F, 0x10DD, 0x0D72, 0x0A41, 0x076E,\n    0x051D, 0x031C, 0x01C9, 0x0220, 0x051D, 0x0C29, 0x165C, 0x2136,\n    0x2A35, 0x2ED9, 0x3066, 0x31CE, 0x3312, 0x3433, 0x3534, 0x3614,\n    0x36D6, 0x377A, 0x3803, 0x3871, 0x38C5, 0x3902, 0x3928, 0x3938,\n    0x3934, 0x391E, 0x38F6, 0x38BE, 0x3877, 0x3823, 0x37C2, 0x3757,\n    0x36E2, 0x3665, 0x35E1, 0x3520, 0x33F6, 0x3273, 0x30A4, 0x2E99,\n    0x2C60, 0xCCF6, 0xCCD0, 0xCC61, 0xCBAA, 0xCAB0, 0xC975, 0xC7FC,\n    0xC648, 0xC45C, 0xC23A, 0xBFE5, 0xBD61, 0xBAB0, 0xB7D6, 0xB4D4,\n    0xB1AF, 0xAE68, 0xAB03, 0xA783, 0xA3EA, 0xA03B, 0x9C7A, 0x98A9,\n    0x94CC, 0x90E4, 0x8CF5, 0x8902, 0x850D, 0x811A, 0x7D29, 0x7942,\n    0x7565, 0x7195, 0x6DD5, 0x6A28, 0x6691, 0x6313, 0x5FB0, 0x5C6C,\n    0x5949, 0x564A, 0x5372, 0x50C5, 0x4E44, 0x4BF4, 0x49D6, 0x47ED,\n    0x463D, 0x44C9, 0x44B4, 0x46DC, 0x4ADE, 0x5053, 0x56D8, 0x5E08,\n    0x657D, 0x6CD3, 0x73A5, 0x798F, 0x7E2A, 0x7CC1, 0x7693, 0x7431,\n    0x7E2A, 0x9B58, 0xC5B7, 0xF29B, 0x1757, 0x293C, 0x2D9C, 0x30F1,\n    0x3350, 0x34CD, 0x357C, 0x356F, 0x34BD, 0x3378, 0x31B4, 0x2F86,\n    0x2D00, 0x2A38, 0x2742, 0x2430, 0x2117, 0x1E0B, 0x1B20, 0x186A,\n    0x15FC, 0x13EB, 0x124B, 0x112F, 0x10AC, 0x10D5, 0x11BF, 0x13AE,\n    0x16C1, 0x1ACD, 0x1FAB, 0x2530, 0x2B33, 0x0000, 0x0000, 0x0000,\n    0x0001, 0x0002, 0x0003, 0x0004, 0x0006, 0x0007, 0x0009, 0x000C,\n    0x000E, 0x0011, 0x0013, 0x0016, 0x0019, 0x001C, 0x0020, 0x0023,\n    0x0027, 0x002B, 0x002E, 0x0032, 0x0036, 0x003B, 0x003F, 0x0043,\n    0x0047, 0x004C, 0x0050, 0x0055, 0x0059, 0x005E, 0x0062, 0x0067,\n    0x006C, 0x0070, 0x0075, 0x0079, 0x007E, 0x0082, 0x0087, 0x008B,\n    0x008F, 0x0094, 0x0098, 0x009C, 0x00A0, 0x00A4, 0x009E, 0x008C,\n    0x007C, 0x0079, 0x0091, 0x00CF, 0x0220, 0x0354, 0x02E3, 0x01F0,\n    0x015F, 0x01EC, 0x02F1, 0x03EB, 0x0385, 0x02FB, 0x0442, 0x02FD,\n    0x00F0, 0xFFC7, 0xFFA1, 0xFF81, 0xFF66, 0xFF51, 0xFF40, 0xFF34,\n    0xFF2D, 0xFF28, 0xFF28, 0xFF2A, 0xFF2F, 0xFF36, 0xFF40, 0xFF4B,\n    0xFF57, 0xFF64, 0xFF72, 0xFF7F, 0xFF8D, 0xFF9A, 0xFFA6, 0xFFB1,\n    0xFFBA, 0xFFC2, 0xFFC7, 0xFFD1, 0xFFE7, 0x0001, 0x001C, 0x0033,\n    0x0037, 0xFF30, 0xFF30, 0xFF2F, 0xFF2F, 0xFF2E, 0xFF2C, 0xFF2B,\n    0xFF29, 0xFF28, 0xFF25, 0xFF23, 0xFF21, 0xFF1E, 0xFF1C, 0xFF19,\n    0xFF16, 0xFF13, 0xFF10, 0xFF0D, 0xFF09, 0xFF06, 0xFF03, 0xFEFF,\n    0xFEFC, 0xFEF8, 0xFEF5, 0xFEF2, 0xFEEE, 0xFEEB, 0xFEE8, 0xFEE5,\n    0xFEE2, 0xFEDF, 0xFEDC, 0xFED9, 0xFED7, 0xFED5, 0xFED2, 0xFED0,\n    0xFECF, 0xFECD, 0xFECC, 0xFECA, 0xFEC9, 0xFEC9, 0xFEC8, 0xFEC8,\n    0xFEC9, 0xFEC9, 0xFED1, 0xFEE3, 0xFEFD, 0xFF1B, 0xFF39, 0xFF55,\n    0xFF6F, 0xFF8B, 0xFFA8, 0xFFC6, 0xFFE6, 0x000E, 0x002F, 0x0017,\n    0xFD99, 0x0178, 0x01ED, 0x00FF, 0xFF7F, 0xFEA5, 0xFE89, 0xFE71,\n    0xFE5D, 0xFE4C, 0xFE3F, 0xFE34, 0xFE2D, 0xFE28, 0xFE25, 0xFE25,\n    0xFE27, 0xFE2B, 0xFE30, 0xFE37, 0xFE3F, 0xFE48, 0xFE52, 0xFE5D,\n    0xFE68, 0xFE73, 0xFE7E, 0xFE88, 0xFE93, 0xFE9C, 0xFEA5, 0xFEBD,\n    0xFEEC, 0xFF28, 0xFF67, 0xFF9E, 0xFFC4, 0xC9D8, 0xC9DC, 0xC9E7,\n    0xC9F9, 0xCA11, 0xCA2F, 0xCA53, 0xCA7C, 0xCAAB, 0xCADD, 0xCB14,\n    0xCB4F, 0xCB8D, 0xCBCF, 0xCC13, 0xCC59, 0xCCA1, 0xCCEB, 0xCD36,\n    0xCD81, 0xCDCD, 0xCE19, 0xCE65, 0xCEB0, 0xCEFA, 0xCF42, 0xCF89,\n    0xCFCD, 0xD00F, 0xD04D, 0xD088, 0xD0C0, 0xD0F3, 0xD122, 0xD14C,\n    0xD171, 0xD190, 0xD1A9, 0xD1BC, 0xD1C8, 0xD1CC, 0xD1C9, 0xD1BF,\n    0xD1AC, 0xD190, 0xD16B, 0xD13D, 0xD105, 0xD0C3, 0xCF7C, 0xCC90,\n    0xC883, 0xC3DB, 0xBF1B, 0xBAC9, 0xB606, 0xB14F, 0xADDB, 0xAACE,\n    0xA79E, 0xA3A4, 0xA027, 0xA03D, 0xA707, 0xABFB, 0xB1BD, 0xC5FD,\n    0xDE54, 0xEB42, 0xED3D, 0xEF14, 0xF0C5, 0xF24F, 0xF3B2, 0xF4EE,\n    0xF601, 0xF6EB, 0xF7AB, 0xF840, 0xF8AA, 0xF8E9, 0xF8FB, 0xF8DF,\n    0xF896, 0xF81E, 0xF776, 0xF69F, 0xF597, 0xF45D, 0xF2F2, 0xF154,\n    0xEF82, 0xED7C, 0xEB42, 0xE484, 0xD70A, 0xC5EE, 0xB44E, 0xA546,\n    0x9F0F, 0x1E4A, 0x1E3F, 0x1E1F, 0x1DEB, 0x1DA5, 0x1D4D, 0x1CE5,\n    0x1C6C, 0x1BE6, 0x1B52, 0x1AB1, 0x1A06, 0x1950, 0x1891, 0x17CA,\n    0x16FD, 0x1629, 0x1551, 0x1474, 0x1395, 0x12B5, 0x11D4, 0x10F4,\n    0x1015, 0x0F39, 0x0E61, 0x0D8E, 0x0CC0, 0x0BFA, 0x0B3C, 0x0A86,\n    0x09DC, 0x093C, 0x08A9, 0x0823, 0x07AC, 0x0744, 0x06ED, 0x06A8,\n    0x0676, 0x0658, 0x064E, 0x065B, 0x067E, 0x06BA, 0x0710, 0x077F,\n    0x080A, 0x08B2, 0x0A69, 0x0DED, 0x12E8, 0x1906, 0x1FF5, 0x275F,\n    0x2EF2, 0x3659, 0x3D40, 0x4354, 0x4841, 0x4BD1, 0x4D84, 0x4C96,\n    0x4841, 0x3EA3, 0x30B1, 0x21E5, 0x15B6, 0x0F9F, 0x0DCE, 0x0C23,\n    0x0A9D, 0x093D, 0x0803, 0x06EF, 0x0602, 0x053A, 0x049A, 0x0420,\n    0x03CD, 0x03A1, 0x039D, 0x03C0, 0x040A, 0x047D, 0x0517, 0x05DA,\n    0x06C4, 0x07D8, 0x0914, 0x0A79, 0x0C07, 0x0DBE, 0x0F9F, 0x1469,\n    0x1DB0, 0x29B0, 0x36A3, 0x42C6, 0x4C54, 0x1B09, 0x1B0D, 0x1B1B,\n    0x1B30, 0x1B4E, 0x1B73, 0x1BA0, 0x1BD3, 0x1C0D, 0x1C4D, 0x1C92,\n    0x1CDD, 0x1D2D, 0x1D81, 0x1DD9, 0x1E34, 0x1E93, 0x1EF5, 0x1F59,\n    0x1FC0, 0x2028, 0x2091, 0x20FB, 0x2166, 0x21D1, 0x223B, 0x22A5,\n    0x230E, 0x2375, 0x23DB, 0x243E, 0x249E, 0x24FB, 0x2555, 0x25AB,\n    0x25FD, 0x264A, 0x2693, 0x26D5, 0x2712, 0x2749, 0x2779, 0x27A2,\n    0x27C3, 0x27DD, 0x27EE, 0x27F7, 0x27F7, 0x27EE, 0x27A2, 0x26E6,\n    0x25CC, 0x2464, 0x22C0, 0x20F2, 0x1F09, 0x1D18, 0x1B30, 0x1962,\n    0x17BF, 0x1736, 0x176E, 0x17A6, 0x17BF, 0x191C, 0x1B6C, 0x1DA7,\n    0x1F68, 0x2049, 0x2095, 0x20DC, 0x211E, 0x215B, 0x2193, 0x21C5,\n    0x21F2, 0x2218, 0x2239, 0x2252, 0x2266, 0x2272, 0x2277, 0x2276,\n    0x226C, 0x225B, 0x2243, 0x2222, 0x21F9, 0x21C7, 0x218D, 0x214A,\n    0x20FD, 0x20A8, 0x2049, 0x1F54, 0x1D7B, 0x1B17, 0x1882, 0x1617,\n    0x142F, 0x1144, 0x1141, 0x1139, 0x112A, 0x1117, 0x10FE, 0x10E1,\n    0x10C0, 0x109A, 0x1071, 0x1044, 0x1013, 0x0FE0, 0x0FAA, 0x0F71,\n    0x0F37, 0x0EFA, 0x0EBC, 0x0E7C, 0x0E3C, 0x0DFA, 0x0DB8, 0x0D76,\n    0x0D34, 0x0CF2, 0x0CB1, 0x0C71, 0x0C32, 0x0BF4, 0x0BB8, 0x0B7E,\n    0x0B46, 0x0B11, 0x0ADF, 0x0AAF, 0x0A83, 0x0A5B, 0x0A37, 0x0A16,\n    0x09FB, 0x09E4, 0x09D2, 0x09C5, 0x09BE, 0x09BD, 0x09C2, 0x09CE,\n    0x09E0, 0x09F9, 0x0A48, 0x0AF2, 0x0BE9, 0x0D1F, 0x0E86, 0x100F,\n    0x11AE, 0x1354, 0x14F3, 0x167D, 0x17E3, 0x185A, 0x182A, 0x17F9,\n    0x17E3, 0x138D, 0x0E05, 0x08BE, 0x04A0, 0x0291, 0x01DE, 0x013C,\n    0x00A8, 0x0024, 0xFFB1, 0xFF4C, 0xFEF6, 0xFEAF, 0xFE77, 0xFE4E,\n    0xFE34, 0xFE29, 0xFE2B, 0xFE3D, 0xFE5C, 0xFE8A, 0xFEC6, 0xFF10,\n    0xFF68, 0xFFCD, 0x003F, 0x00C0, 0x014E, 0x01E9, 0x0291, 0x043D,\n    0x077A, 0x0BAA, 0x102F, 0x146B, 0x17C1, 0xAC44, 0xAC4D, 0xAC68,\n    0xAC95, 0xACD1, 0xAD1D, 0xAD77, 0xADDE, 0xAE53, 0xAED3, 0xAF5E,\n    0xAFF3, 0xB091, 0xB138, 0xB1E6, 0xB29A, 0xB355, 0xB414, 0xB4D7,\n    0xB59D, 0xB665, 0xB72F, 0xB7F9, 0xB8C3, 0xB98B, 0xBA52, 0xBB15,\n    0xBBD4, 0xBC8F, 0xBD44, 0xBDF2, 0xBE99, 0xBF38, 0xBFCD, 0xC059,\n    0xC0D9, 0xC14E, 0xC1B6, 0xC211, 0xC25D, 0xC29B, 0xC2C8, 0xC2E4,\n    0xC2EE, 0xC2E5, 0xC2C9, 0xC298, 0xC252, 0xC1F6, 0xC0EB, 0xBEB9,\n    0xBB8E, 0xB796, 0xB2FF, 0xADF6, 0xA8AA, 0xA346, 0x9DFA, 0x98F1,\n    0x945A, 0x92D6, 0x9374, 0x9412, 0x945A, 0x9CB7, 0xA84C, 0xB361,\n    0xBC0D, 0xC062, 0xC1D5, 0xC320, 0xC445, 0xC544, 0xC61F, 0xC6D6,\n    0xC76C, 0xC7E1, 0xC836, 0xC86D, 0xC886, 0xC883, 0xC865, 0xC82D,\n    0xC7DD, 0xC774, 0xC6F6, 0xC662, 0xC5BA, 0xC4FE, 0xC431, 0xC354,\n    0xC267, 0xC16B, 0xC062, 0xBDCC, 0xB8C8, 0xB24C, 0xAB4C, 0xA4BC,\n    0x9F92, 0x0000, 0xFFFF, 0xFFFA, 0xFFF2, 0xFFE7, 0xFFDA, 0xFFCA,\n    0xFFB7, 0xFFA3, 0xFF8C, 0xFF74, 0xFF59, 0xFF3E, 0xFF21, 0xFF03,\n    0xFEE4, 0xFEC4, 0xFEA4, 0xFE83, 0xFE62, 0xFE41, 0xFE20, 0xFDFF,\n    0xFDDF, 0xFDBF, 0xFDA0, 0xFD82, 0xFD66, 0xFD4A, 0xFD30, 0xFD18,\n    0xFD05, 0xFCFB, 0xFCF7, 0xFCF9, 0xFCFE, 0xFD06, 0xFD0D, 0xFD13,\n    0xFD16, 0xFD14, 0xFD0C, 0xFCFD, 0xFCE3, 0xFCBE, 0xFC8D, 0xFC4D,\n    0xFBFD, 0xFB9B, 0xFB18, 0xFA6A, 0xF997, 0xF8A7, 0xF79F, 0xF686,\n    0xF562, 0xF43B, 0xF316, 0xF1FB, 0xF0EE, 0xF1EB, 0xF380, 0xF524,\n    0xF6B7, 0xF81B, 0xF930, 0xF9D9, 0xF726, 0xF426, 0xF3F5, 0xF3CE,\n    0xF3AF, 0xF39A, 0xF38B, 0xF384, 0xF383, 0xF386, 0xF38F, 0xF39B,\n    0xF3AB, 0xF3BC, 0xF3D0, 0xF3E4, 0xF3F8, 0xF40C, 0xF41E, 0xF42E,\n    0xF43C, 0xF445, 0xF44B, 0xF44B, 0xF445, 0xF439, 0xF426, 0xF3ED,\n    0xF37F, 0xF2F1, 0xF257, 0xF1C5, 0xF150, 0x0000, 0xFFFF, 0xFFFB,\n    0xFFF4, 0xFFEB, 0xFFE0, 0xFFD3, 0xFFC3, 0xFFB2, 0xFF9F, 0xFF8B,\n    0xFF75, 0xFF5E, 0xFF47, 0xFF2E, 0xFF14, 0xFEFA, 0xFEDF, 0xFEC4,\n    0xFEA9, 0xFE8E, 0xFE73, 0xFE59, 0xFE3F, 0xFE25, 0xFE0C, 0xFDF4,\n    0xFDDE, 0xFDC8, 0xFDB4, 0xFDA1, 0xFD8C, 0xFD73, 0xFD56, 0xFD36,\n    0xFD15, 0xFCF3, 0xFCD1, 0xFCB1, 0xFC93, 0xFC79, 0xFC63, 0xFC53,\n    0xFC4A, 0xFC48, 0xFC4F, 0xFC5F, 0xFC7A, 0xFCA1, 0xFCDF, 0xFD3A,\n    0xFDAE, 0xFE37, 0xFED0, 0xFF75, 0x0020, 0x00CE, 0x017B, 0x0220,\n    0x02BB, 0x0376, 0x03E1, 0x0446, 0x04B0, 0x052B, 0x05C3, 0x0682,\n    0x08B0, 0x0A87, 0x0AAF, 0x0ADC, 0x0B0D, 0x0B3F, 0x0B73, 0x0BA7,\n    0x0BDB, 0x0C0D, 0x0C3C, 0x0C68, 0x0C8E, 0x0CAF, 0x0CCA, 0x0CDC,\n    0x0CE6, 0x0CE6, 0x0CDB, 0x0CC4, 0x0CA1, 0x0C70, 0x0C30, 0x0BE0,\n    0x0B7F, 0x0B0C, 0x0A87, 0x0927, 0x067D, 0x030C, 0xFF58, 0xFBE2,\n    0xF92D, 0xBF40, 0xBF48, 0xBF5E, 0xBF83, 0xBFB4, 0xBFF2, 0xC03B,\n    0xC090, 0xC0EE, 0xC156, 0xC1C6, 0xC23E, 0xC2BD, 0xC343, 0xC3CE,\n    0xC45D, 0xC4F0, 0xC587, 0xC61F, 0xC6BA, 0xC755, 0xC7F0, 0xC88B,\n    0xC924, 0xC9BB, 0xCA4E, 0xCADE, 0xCB69, 0xCBEF, 0xCC6F, 0xCCE8,\n    0xCD67, 0xCDF9, 0xCE99, 0xCF45, 0xCFF8, 0xD0AE, 0xD165, 0xD218,\n    0xD2C4, 0xD365, 0xD3F8, 0xD478, 0xD4E3, 0xD535, 0xD569, 0xD57D,\n    0xD56D, 0xD535, 0xD4B1, 0xD3CB, 0xD292, 0xD115, 0xCF62, 0xCD8A,\n    0xCB9A, 0xC9A3, 0xC7B3, 0xC5D9, 0xC425, 0xC184, 0xBEFA, 0xBC50,\n    0xB9FB, 0xB86F, 0xB820, 0xB982, 0xC983, 0xD8E7, 0xDA08, 0xDB17,\n    0xDC14, 0xDCFC, 0xDDD1, 0xDE90, 0xDF39, 0xDFCC, 0xE047, 0xE0A9,\n    0xE0F3, 0xE122, 0xE137, 0xE130, 0xE10D, 0xE0CD, 0xE06F, 0xDFF2,\n    0xDF55, 0xDE98, 0xDDBA, 0xDCBB, 0xDB98, 0xDA52, 0xD8E7, 0xD540,\n    0xCE2C, 0xC507, 0xBB2C, 0xB1F9, 0xAAC8, 0x2537, 0x252C, 0x250C,\n    0x24D8, 0x2491, 0x2438, 0x23CD, 0x2352, 0x22C7, 0x222D, 0x2186,\n    0x20D1, 0x2011, 0x1F45, 0x1E6F, 0x1D90, 0x1CA8, 0x1BB8, 0x1AC2,\n    0x19C6, 0x18C5, 0x17C0, 0x16B8, 0x15AE, 0x14A2, 0x1396, 0x128A,\n    0x117F, 0x1077, 0x0F72, 0x0E71, 0x0D74, 0x0C7E, 0x0B8E, 0x0AA6,\n    0x09C6, 0x08EF, 0x0823, 0x0762, 0x06AD, 0x0604, 0x056A, 0x04DE,\n    0x0462, 0x03F6, 0x039C, 0x0353, 0x031E, 0x02FD, 0x035E, 0x0495,\n    0x0684, 0x0907, 0x0BFD, 0x0F47, 0x12C1, 0x164C, 0x19C5, 0x1D0C,\n    0x1FFE, 0x1FDE, 0x1D82, 0x1AD7, 0x18A6, 0x17B5, 0x18CC, 0x1CB3,\n    0x38DD, 0x5341, 0x5523, 0x56C2, 0x5822, 0x5946, 0x5A31, 0x5AE7,\n    0x5B6B, 0x5BC2, 0x5BED, 0x5BF2, 0x5BD3, 0x5B94, 0x5B39, 0x5AC5,\n    0x5A3B, 0x599F, 0x58F5, 0x5840, 0x5783, 0x56C3, 0x5602, 0x5544,\n    0x548D, 0x53E0, 0x5341, 0x51CE, 0x4F01, 0x4B61, 0x4778, 0x43CE,\n    0x40EB, 0xD64A, 0xD64A, 0xD64A, 0xD649, 0xD648, 0xD646, 0xD644,\n    0xD641, 0xD63E, 0xD63A, 0xD635, 0xD62F, 0xD628, 0xD620, 0xD617,\n    0xD60D, 0xD602, 0xD5F5, 0xD5E7, 0xD5D8, 0xD5C7, 0xD5B4, 0xD5A0,\n    0xD58A, 0xD573, 0xD559, 0xD53E, 0xD520, 0xD501, 0xD4DF, 0xD4BC,\n    0xD495, 0xD46D, 0xD442, 0xD415, 0xD3E5, 0xD3B3, 0xD37E, 0xD346,\n    0xD30B, 0xD2CE, 0xD28D, 0xD24A, 0xD203, 0xD1BA, 0xD16D, 0xD11D,\n    0xD0C9, 0xD072, 0xCFEF, 0xCF1E, 0xCE0C, 0xCCC5, 0xCB54, 0xC9C5,\n    0xC823, 0xC67C, 0xC4D9, 0xC348, 0xC1D4, 0xC404, 0xC68C, 0xC943,\n    0xCC8F, 0xD0D9, 0xD667, 0xE3AB, 0x07B2, 0x2238, 0x235C, 0x2421,\n    0x248C, 0x24A3, 0x246E, 0x23F3, 0x2338, 0x2243, 0x211B, 0x1FC6,\n    0x1E4A, 0x1CAF, 0x1AFA, 0x1932, 0x175D, 0x1581, 0x13A6, 0x11D1,\n    0x1009, 0x0E53, 0x0CB8, 0x0B3C, 0x09E6, 0x08BE, 0x07C8, 0x0731,\n    0x0709, 0x0729, 0x076F, 0x07B4, 0x07D4, 0xEC41, 0xEC45, 0xEC50,\n    0xEC62, 0xEC7A, 0xEC99, 0xECBE, 0xECE9, 0xED19, 0xED4F, 0xED89,\n    0xEDC7, 0xEE09, 0xEE4F, 0xEE99, 0xEEE6, 0xEF36, 0xEF88, 0xEFDC,\n    0xF032, 0xF08A, 0xF0E2, 0xF13C, 0xF196, 0xF1F1, 0xF24B, 0xF2A5,\n    0xF2FF, 0xF357, 0xF3AE, 0xF403, 0xF456, 0xF4A7, 0xF4F5, 0xF540,\n    0xF588, 0xF5CD, 0xF60D, 0xF649, 0xF681, 0xF6B3, 0xF6E1, 0xF709,\n    0xF72B, 0xF746, 0xF75C, 0xF76A, 0xF772, 0xF772, 0xF73E, 0xF6B5,\n    0xF5E4, 0xF4D7, 0xF39C, 0xF241, 0xF0D1, 0xEF5C, 0xEDED, 0xEC92,\n    0xEB58, 0xE9D4, 0xE8B1, 0xE7A9, 0xE6F0, 0xE6B8, 0xE77B, 0xEB95,\n    0xF83E, 0x01D5, 0x0267, 0x02D8, 0x0329, 0x035E, 0x0377, 0x0378,\n    0x0362, 0x0338, 0x02FC, 0x02B0, 0x0257, 0x01F3, 0x0186, 0x0112,\n    0x009A, 0x001F, 0xFFA5, 0xFF2D, 0xFEB9, 0xFE4C, 0xFDE7, 0xFD8E,\n    0xFD42, 0xFD06, 0xFCDC, 0xFCD4, 0xFCF4, 0xFD2E, 0xFD73, 0xFDB4,\n    0xFDE4, 0xB59E, 0xB5A2, 0xB5AD, 0xB5BF, 0xB5D8, 0xB5F8, 0xB61E,\n    0xB64A, 0xB67C, 0xB6B4, 0xB6F1, 0xB733, 0xB77A, 0xB7C6, 0xB816,\n    0xB86B, 0xB8C3, 0xB920, 0xB97F, 0xB9E2, 0xBA48, 0xBAB1, 0xBB1C,\n    0xBB8A, 0xBBF9, 0xBC6B, 0xBCDE, 0xBD52, 0xBDC8, 0xBE3E, 0xBEB5,\n    0xBF2C, 0xBFA4, 0xC01B, 0xC092, 0xC108, 0xC17E, 0xC1F3, 0xC266,\n    0xC2D7, 0xC347, 0xC3B5, 0xC421, 0xC48A, 0xC4F0, 0xC554, 0xC5B4,\n    0xC611, 0xC66A, 0xC6BE, 0xC710, 0xC75E, 0xC7A9, 0xC7F3, 0xC83C,\n    0xC884, 0xC8CD, 0xC916, 0xC962, 0xC9AF, 0xCA11, 0xCAAC, 0xCB17,\n    0xCAC8, 0xC936, 0xC52E, 0xB924, 0x9852, 0x7F94, 0x7D78, 0x7B9C,\n    0x79FC, 0x7897, 0x7769, 0x766F, 0x75A7, 0x750E, 0x74A1, 0x745E,\n    0x7442, 0x744B, 0x7475, 0x74BD, 0x7522, 0x75A0, 0x7635, 0x76DE,\n    0x7799, 0x7862, 0x7937, 0x7A15, 0x7AF9, 0x7BE1, 0x7CCB, 0x7F2D,\n    0x83E8, 0x8A0B, 0x90AE, 0x96E7, 0x9BCB, 0x8001, 0x8001, 0x4171,\n    0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x0000, 0x0003, 0x000E,\n    0x001F, 0x0037, 0x0054, 0x0076, 0x009D, 0x00C8, 0x00F7, 0x0129,\n    0x015F, 0x0196, 0x01D0, 0x020B, 0x0247, 0x0283, 0x02C0, 0x02FC,\n    0x0337, 0x0371, 0x03AA, 0x03E0, 0x0413, 0x0443, 0x0470, 0x0498,\n    0x04BC, 0x04DB, 0x04F4, 0x0507, 0x0514, 0x051A, 0x0519, 0x0510,\n    0x04FE, 0x04E4, 0x04C1, 0x0494, 0x045D, 0x041B, 0x03CE, 0x0376,\n    0x0311, 0x02A0, 0x0223, 0x0197, 0x00FE, 0x0057, 0xFF05, 0xFC8F,\n    0xF92E, 0xF51C, 0xF091, 0xEBC5, 0xE6F1, 0xE24E, 0xDE15, 0xDA7E,\n    0xD7C1, 0xD65B, 0xD6D8, 0xD98F, 0xDED5, 0xE851, 0xF567, 0x0308,\n    0x0E28, 0x13B9, 0x155D, 0x16C7, 0x17F8, 0x18F5, 0x19C0, 0x1A5C,\n    0x1ACD, 0x1B16, 0x1B39, 0x1B3B, 0x1B1D, 0x1AE4, 0x1A92, 0x1A2B,\n    0x19B1, 0x1929, 0x1894, 0x17F7, 0x1753, 0x16AE, 0x1609, 0x1567,\n    0x14CD, 0x143C, 0x13B9, 0x131A, 0x123A, 0x1124, 0x0FDF, 0x0E77,\n    0x0CF3, 0x0000, 0x0001, 0x0005, 0x000B, 0x0013, 0x001E, 0x002A,\n    0x0037, 0x0046, 0x0057, 0x0068, 0x007A, 0x008C, 0x009F, 0x00B3,\n    0x00C6, 0x00D9, 0x00EC, 0x00FE, 0x010F, 0x0120, 0x012F, 0x013E,\n    0x014A, 0x0155, 0x015E, 0x0165, 0x016A, 0x016C, 0x016B, 0x0168,\n    0x0162, 0x0158, 0x014B, 0x013A, 0x0126, 0x010D, 0x00F0, 0x00CF,\n    0x00A9, 0x007F, 0x004F, 0x001B, 0xFFE2, 0xFFA2, 0xFF5D, 0xFF12,\n    0xFEC0, 0xFE69, 0xFDC8, 0xFCAB, 0xFB27, 0xF953, 0xF745, 0xF513,\n    0xF2D4, 0xF09D, 0xEE86, 0xECA3, 0xEB0D, 0xE996, 0xE869, 0xE818,\n    0xE938, 0xEC83, 0xF177, 0xF6C9, 0xFB31, 0xFD64, 0xFE02, 0xFE82,\n    0xFEE8, 0xFF35, 0xFF6C, 0xFF8E, 0xFF9D, 0xFF9C, 0xFF8D, 0xFF71,\n    0xFF4B, 0xFF1C, 0xFEE7, 0xFEAE, 0xFE73, 0xFE37, 0xFDFD, 0xFDC7,\n    0xFD97, 0xFD6F, 0xFD51, 0xFD3F, 0xFD3B, 0xFD46, 0xFD64, 0xFD97,\n    0xFDDF, 0xFE38, 0xFEA0, 0xFF14, 0xFF90, 0xFC62, 0xFC5D, 0xFC4F,\n    0xFC38, 0xFC19, 0xFBF2, 0xFBC4, 0xFB8E, 0xFB52, 0xFB0F, 0xFAC6,\n    0xFA78, 0xFA25, 0xF9CD, 0xF971, 0xF910, 0xF8AD, 0xF846, 0xF7DD,\n    0xF771, 0xF703, 0xF694, 0xF624, 0xF5B3, 0xF542, 0xF4D2, 0xF462,\n    0xF3F2, 0xF384, 0xF318, 0xF2AF, 0xF247, 0xF1E3, 0xF182, 0xF125,\n    0xF0CD, 0xF079, 0xF02A, 0xEFE0, 0xEF9C, 0xEF5F, 0xEF28, 0xEEF8,\n    0xEED0, 0xEEB0, 0xEE98, 0xEE89, 0xEE82, 0xEE86, 0xEED7, 0xEFAA,\n    0xF0E6, 0xF274, 0xF43B, 0xF622, 0xF812, 0xF9F3, 0xFBAC, 0xFD25,\n    0xFE46, 0xFE65, 0xFD85, 0xFC8C, 0xFC63, 0xFD69, 0xFF11, 0x00E5,\n    0x026C, 0x0330, 0x0366, 0x0393, 0x03B9, 0x03D7, 0x03EE, 0x03FF,\n    0x040A, 0x040F, 0x0410, 0x040D, 0x0405, 0x03FB, 0x03EE, 0x03DE,\n    0x03CD, 0x03BA, 0x03A7, 0x0393, 0x0380, 0x036E, 0x035D, 0x034E,\n    0x0341, 0x0337, 0x0330, 0x032A, 0x0322, 0x0317, 0x030B, 0x02FE,\n    0x02EF, 0x0000, 0xFFFE, 0xFFF6, 0xFFE9, 0xFFD7, 0xFFC1, 0xFFA7,\n    0xFF8A, 0xFF69, 0xFF46, 0xFF20, 0xFEF8, 0xFECE, 0xFEA3, 0xFE77,\n    0xFE4A, 0xFE1D, 0xFDEF, 0xFDC2, 0xFD96, 0xFD6B, 0xFD41, 0xFD19,\n    0xFCF3, 0xFCD0, 0xFCB0, 0xFC92, 0xFC78, 0xFC62, 0xFC51, 0xFC44,\n    0xFC3C, 0xFC39, 0xFC3C, 0xFC45, 0xFC54, 0xFC6A, 0xFC87, 0xFCAC,\n    0xFCD8, 0xFD0D, 0xFD4A, 0xFD8F, 0xFDDE, 0xFE37, 0xFE9A, 0xFF07,\n    0xFF7E, 0x0000, 0x00FF, 0x02D2, 0x0553, 0x0859, 0x0BBF, 0x0F5C,\n    0x130A, 0x16A2, 0x19FC, 0x1CF2, 0x1F5C, 0x2204, 0x2459, 0x2430,\n    0x1F5C, 0x134E, 0x01D3, 0xEF47, 0xE001, 0xD85E, 0xD62E, 0xD455,\n    0xD2CE, 0xD194, 0xD0A2, 0xCFF1, 0xCF7E, 0xCF42, 0xCF38, 0xCF5B,\n    0xCFA6, 0xD013, 0xD09D, 0xD13F, 0xD1F3, 0xD2B4, 0xD37D, 0xD449,\n    0xD511, 0xD5D2, 0xD684, 0xD724, 0xD7AC, 0xD817, 0xD85E, 0xD8CA,\n    0xD996, 0xDAAB, 0xDBF1, 0xDD53, 0xDEB8, 0x0000, 0xFFFF, 0xFFFC,\n    0xFFF6, 0xFFEE, 0xFFE4, 0xFFD8, 0xFFCA, 0xFFBA, 0xFFA8, 0xFF95,\n    0xFF80, 0xFF69, 0xFF51, 0xFF38, 0xFF1E, 0xFF02, 0xFEE5, 0xFEC7,\n    0xFEA9, 0xFE89, 0xFE69, 0xFE48, 0xFE27, 0xFE05, 0xFDE2, 0xFDBF,\n    0xFD9D, 0xFD79, 0xFD56, 0xFD33, 0xFD10, 0xFCED, 0xFCCA, 0xFCA8,\n    0xFC86, 0xFC65, 0xFC44, 0xFC24, 0xFC05, 0xFBE7, 0xFBC9, 0xFBAD,\n    0xFB92, 0xFB78, 0xFB5F, 0xFB47, 0xFB31, 0xFB1D, 0xFB0E, 0xFB09,\n    0xFB0B, 0xFB13, 0xFB20, 0xFB30, 0xFB41, 0xFB53, 0xFB63, 0xFB71,\n    0xFB79, 0xFB96, 0xFBC0, 0xFBC6, 0xFB79, 0xFAAC, 0xF982, 0xF845,\n    0xF741, 0xF6BF, 0xF68F, 0xF654, 0xF60D, 0xF5BF, 0xF56B, 0xF512,\n    0xF4B8, 0xF45E, 0xF407, 0xF3B5, 0xF369, 0xF326, 0xF2EE, 0xF2C4,\n    0xF2A9, 0xF29F, 0xF2A9, 0xF2C9, 0xF301, 0xF353, 0xF3C1, 0xF44D,\n    0xF4FA, 0xF5CA, 0xF6BF, 0xF929, 0xFDD0, 0x03E4, 0x0A99, 0x1120,\n    0x16AB, 0x0884, 0x0880, 0x0874, 0x0860, 0x0845, 0x0824, 0x07FC,\n    0x07CE, 0x079A, 0x0761, 0x0723, 0x06E1, 0x069A, 0x064F, 0x0601,\n    0x05B0, 0x055C, 0x0506, 0x04AE, 0x0454, 0x03F9, 0x039D, 0x0340,\n    0x02E4, 0x0288, 0x022C, 0x01D1, 0x0178, 0x0120, 0x00CB, 0x0077,\n    0x0027, 0xFFDB, 0xFF92, 0xFF4C, 0xFF0B, 0xFECE, 0xFE97, 0xFE65,\n    0xFE39, 0xFE13, 0xFDF3, 0xFDDB, 0xFDCA, 0xFDC0, 0xFDBE, 0xFDC5,\n    0xFDD5, 0xFDED, 0xFE55, 0xFF40, 0x0097, 0x0242, 0x042A, 0x0636,\n    0x084E, 0x0A5B, 0x0C44, 0x0DF2, 0x0F4C, 0x1041, 0x10B3, 0x1070,\n    0x0F4C, 0x0CC8, 0x0921, 0x0542, 0x0212, 0x0079, 0xFFFD, 0xFF83,\n    0xFF0D, 0xFE9D, 0xFE32, 0xFDCE, 0xFD73, 0xFD20, 0xFCD7, 0xFC98,\n    0xFC66, 0xFC40, 0xFC27, 0xFC1D, 0xFC23, 0xFC39, 0xFC60, 0xFC99,\n    0xFCE6, 0xFD47, 0xFDBD, 0xFE49, 0xFEEC, 0xFFA7, 0x0079, 0x027C,\n    0x0658, 0x0B6C, 0x1116, 0x16B5, 0x1BA9, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x00B4, 0x01E2, 0x021E, 0x0000, 0xFB94, 0xF5E7, 0xEF0B,\n    0xE714, 0xDE16, 0xCBCE, 0xBD9D, 0xBC66, 0xBB64, 0xBA92, 0xB9ED,\n    0xB971, 0xB91B, 0xB8E8, 0xB8D4, 0xB8DB, 0xB8FA, 0xB92E, 0xB973,\n    0xB9C5, 0xBA22, 0xBA85, 0xBAEB, 0xBB51, 0xBBB3, 0xBC0D, 0xBC5D,\n    0xBC9F, 0xBCCF, 0xBCE9, 0xBCFB, 0xBD1D, 0xBD4D, 0xBD88, 0xBDCC,\n    0xBE14, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFF2, 0xFFD9, 0xFFD5,\n    0x0000, 0x009D, 0x0196, 0x0287, 0x030B, 0x02BF, 0xFE54, 0xFA27,\n    0xF9D1, 0xF981, 0xF937, 0xF8F2, 0xF8B4, 0xF87D, 0xF84C, 0xF824,\n    0xF802, 0xF7E9, 0xF7D9, 0xF7D1, 0xF7D3, 0xF7DE, 0xF7F3, 0xF812,\n    0xF83B, 0xF870, 0xF8B0, 0xF8FB, 0xF953, 0xF9B6, 0xFA27, 0xFB3C,\n    0xFD4C, 0xFFF5, 0x02D1, 0x057F, 0x079D, 0x40A1, 0x409D, 0x4091,\n    0x407D, 0x4063, 0x4041, 0x401A, 0x3FEC, 0x3FBA, 0x3F82, 0x3F45,\n    0x3F05, 0x3EC1, 0x3E79, 0x3E2F, 0x3DE2, 0x3D93, 0x3D42, 0x3CF0,\n    0x3C9E, 0x3C4B, 0x3BF8, 0x3BA6, 0x3B54, 0x3B04, 0x3AB5, 0x3A69,\n    0x3A1F, 0x39D8, 0x3995, 0x3955, 0x391A, 0x38E4, 0x38B2, 0x3886,\n    0x3860, 0x3840, 0x3827, 0x3815, 0x380B, 0x3809, 0x380F, 0x381F,\n    0x3837, 0x3859, 0x3886, 0x38BD, 0x38FE, 0x394C, 0x3A09, 0x3B83,\n    0x3D98, 0x4025, 0x4308, 0x461D, 0x4943, 0x4C56, 0x4F34, 0x51BB,\n    0x53C7, 0x5551, 0x561E, 0x55C0, 0x53C7, 0x4FBB, 0x4A17, 0x43D9,\n    0x3E00, 0x398B, 0x39CA, 0x3BCB, 0x3BE0, 0x3BF2, 0x3C02, 0x3C0E,\n    0x3C18, 0x3C20, 0x3C25, 0x3C28, 0x3C29, 0x3C29, 0x3C27, 0x3C23,\n    0x3C1E, 0x3C18, 0x3C11, 0x3C09, 0x3C01, 0x3BF8, 0x3BEF, 0x3BE6,\n    0x3BDC, 0x3BD3, 0x3BCB, 0x3BB7, 0x3B91, 0x3B61, 0x3B2D, 0x3AFC,\n    0x3AD5,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_26.inc.c",
    "content": "static const struct Animation anim_26[] = {\n    65,\n    189,\n    0,\n    0,\n    0x5E,\n    ANIMINDEX_NUMPARTS(anim_26_indices),\n    anim_26_values,\n    anim_26_indices,\n    0,\n};\n\n\nstatic const u16 anim_26_indices[] = {\n    0x0001, 0x0000, 0x005E, 0x0001, 0x0001, 0x005F, 0x0001, 0x0000, 0x005E, 0x0060, 0x0001, 0x0000,\n    0x005E, 0x0D42, 0x005E, 0x0DA0, 0x005E, 0x0DFE,\n    0x005E, 0x0C28, 0x005E, 0x0C86, 0x005E, 0x0CE4,\n    0x005E, 0x0B0E, 0x005E, 0x0B6C, 0x005E, 0x0BCA,\n    0x0001, 0x0B0A, 0x0001, 0x0B0B, 0x0001, 0x0B0C,\n    0x005E, 0x0236, 0x005E, 0x0294, 0x005E, 0x02F2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005E, 0x01D8,\n    0x005E, 0x00BE, 0x005E, 0x011C, 0x005E, 0x017A,\n    0x0001, 0x0B06, 0x0001, 0x0B07, 0x0001, 0x0B08,\n    0x005E, 0x04C8, 0x005E, 0x0526, 0x005E, 0x0584,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005E, 0x046A,\n    0x005E, 0x0350, 0x005E, 0x03AE, 0x005E, 0x040C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0B09,\n    0x005E, 0x09EC, 0x005E, 0x0A4A, 0x005E, 0x0AA8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005E, 0x098E,\n    0x005E, 0x0874, 0x005E, 0x08D2, 0x005E, 0x0930,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0B0D,\n    0x005E, 0x075A, 0x005E, 0x07B8, 0x005E, 0x0816,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005E, 0x06FC,\n    0x005E, 0x05E2, 0x005E, 0x0640, 0x005E, 0x069E,\n};\n\nstatic const s16 anim_26_values[] = {\n    0x0000, 0x0075, 0x0075, 0x0076, 0x0136, 0x01DC, 0x026A, 0x02E2,\n    0x0346, 0x0397, 0x03D7, 0x0409, 0x042E, 0x0447, 0x0458, 0x0462,\n    0x0466, 0x0467, 0x0464, 0x045A, 0x0447, 0x0429, 0x0401, 0x03CB,\n    0x0387, 0x0334, 0x02D0, 0x0259, 0x01CE, 0x012F, 0x0079, 0x0077,\n    0x0077, 0x0079, 0x0132, 0x01D9, 0x026F, 0x02F3, 0x0368, 0x03CD,\n    0x0425, 0x0470, 0x04AE, 0x04E2, 0x050B, 0x052B, 0x0543, 0x0554,\n    0x055E, 0x0562, 0x0562, 0x054A, 0x0515, 0x04C8, 0x0466, 0x03F4,\n    0x0376, 0x02F0, 0x0267, 0x01DD, 0x0159, 0x00DD, 0x0075, 0x0075,\n    0x0075, 0x0075, 0x0075, 0x012D, 0x01D7, 0x0271, 0x02FE, 0x037E,\n    0x03F1, 0x0458, 0x04B3, 0x0503, 0x0548, 0x0584, 0x05B7, 0x05E1,\n    0x0602, 0x061D, 0x0630, 0x063D, 0x0644, 0x0646, 0x0643, 0x063D,\n    0x0633, 0x0626, 0x0616, 0x0605, 0x05F3, 0x05E1, 0x05CE, 0x0010,\n    0x86AD, 0x8909, 0x8BE8, 0x8F07, 0x9226, 0x9505, 0x9762, 0x98FC,\n    0x9993, 0x9993, 0x9993, 0x9993, 0x9993, 0x9993, 0x9993, 0x9993,\n    0x9993, 0x9993, 0x9993, 0x9993, 0x9993, 0x9993, 0x9993, 0x9993,\n    0x9993, 0x9993, 0x9993, 0x9993, 0x9993, 0x9993, 0x9993, 0x9993,\n    0x9993, 0x9993, 0x9993, 0x9993, 0x9993, 0x9993, 0x9993, 0x9993,\n    0x9993, 0x9993, 0x9993, 0x9993, 0x9993, 0x9993, 0x9993, 0x9993,\n    0x9993, 0x9993, 0x9993, 0x9993, 0x9993, 0x9993, 0x9993, 0x9993,\n    0x9993, 0x9993, 0x9993, 0x9993, 0x9993, 0x9993, 0x9993, 0x9993,\n    0x9993, 0x9993, 0x9993, 0x9993, 0x9993, 0x9993, 0x9993, 0x9993,\n    0x9993, 0x9993, 0x9993, 0x9993, 0x9993, 0x9993, 0x9993, 0x9993,\n    0x9993, 0x9993, 0x9993, 0x9993, 0x9993, 0x9993, 0x9993, 0x9993,\n    0x9993, 0x9993, 0x9993, 0x9993, 0x9993, 0x9993, 0xED11, 0xEFDF,\n    0xF2B7, 0xF583, 0xF82E, 0xFAA5, 0xFCD3, 0xFEA3, 0x0000, 0x00F3,\n    0x0199, 0x01FB, 0x0223, 0x021D, 0x01F1, 0x01AA, 0x0152, 0x00F3,\n    0x0098, 0x004A, 0x0014, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFE, 0xFFFC,\n    0xFFFB, 0xFFFA, 0xFFF9, 0xFFF8, 0xFFF9, 0xFFFA, 0xFFFD, 0x0000,\n    0x0005, 0x000C, 0x0013, 0x001C, 0x0026, 0x0030, 0x003A, 0x0045,\n    0x004F, 0x0059, 0x0063, 0x006C, 0x0075, 0x007C, 0x0082, 0x0086,\n    0x0089, 0x008A, 0x008A, 0x008A, 0xFEA0, 0xFED5, 0xFF09, 0xFF3D,\n    0xFF6F, 0xFF9D, 0xFFC5, 0xFFE7, 0x0000, 0x0011, 0x001D, 0x0024,\n    0x0027, 0x0027, 0x0024, 0x001E, 0x0018, 0x0011, 0x000B, 0x0005,\n    0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0007, 0x001B, 0x0038, 0x0059, 0x007A, 0x0096,\n    0x00AB, 0x00B2, 0x00A9, 0x008B, 0x0054, 0x0000, 0xFF8C, 0xFEFA,\n    0xFE4F, 0xFD90, 0xFCC1, 0xFBE5, 0xFB03, 0xFA1D, 0xF938, 0xF85A,\n    0xF785, 0xF6BE, 0xF60A, 0xF56D, 0xF4EB, 0xF489, 0xF44B, 0xF435,\n    0xF435, 0xF435, 0xFE8D, 0xFEC4, 0xFEFC, 0xFF33, 0xFF67, 0xFF98,\n    0xFFC2, 0xFFE6, 0x0000, 0x0012, 0x001F, 0x0026, 0x0029, 0x0029,\n    0x0026, 0x0020, 0x0019, 0x0012, 0x000B, 0x0005, 0x0001, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x000E, 0x0033, 0x0068, 0x00A5, 0x00E2, 0x0117, 0x013C, 0x014B,\n    0x013A, 0x0102, 0x009C, 0x0000, 0xFF29, 0xFE1A, 0xFCDE, 0xFB7D,\n    0xF9FD, 0xF867, 0xF6C3, 0xF51A, 0xF373, 0xF1D7, 0xF04C, 0xEEDD,\n    0xED8F, 0xEC6D, 0xEB7D, 0xEAC7, 0xEA54, 0xEA2C, 0xEA2C, 0xEA2C,\n    0xE9ED, 0xE924, 0xE68D, 0xE238, 0xDCD7, 0xD71B, 0xD1B6, 0xCD5A,\n    0xCAB8, 0xC94B, 0xC81B, 0xC727, 0xC66F, 0xC5F4, 0xC5B5, 0xC5B4,\n    0xC5F0, 0xC669, 0xC71F, 0xC814, 0xC947, 0xCAB8, 0xCCAE, 0xCF5A,\n    0xD299, 0xD649, 0xDA46, 0xDE6E, 0xE29F, 0xE6B6, 0xEA90, 0xEE0B,\n    0xF104, 0xF234, 0xF19C, 0xF104, 0xF104, 0xF104, 0xF104, 0xF104,\n    0xF104, 0xF104, 0xF104, 0xF104, 0xF104, 0xF104, 0xF104, 0xF104,\n    0xF104, 0xF104, 0xF127, 0xF183, 0xF206, 0xF29B, 0xF331, 0xF3B3,\n    0xF410, 0xF433, 0xF409, 0xF381, 0xF285, 0xF104, 0xEB4C, 0xE12B,\n    0xD7CD, 0xD45D, 0xD70A, 0xDC0F, 0xE2A4, 0xEA05, 0xF16B, 0xF810,\n    0xFD2F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xFFB7, 0xFEC1, 0xFDC1, 0xFCC1, 0xFBCC, 0xFAED,\n    0xFA2D, 0xF998, 0xF936, 0xF913, 0xF913, 0xF913, 0xD5B1, 0xDB6D,\n    0xDD7F, 0xDECC, 0xDF81, 0xDFCB, 0xDFD8, 0xDFD6, 0xDFF3, 0xE02D,\n    0xE065, 0xE099, 0xE0C6, 0xE0EC, 0xE107, 0xE115, 0xE115, 0xE105,\n    0xE0E1, 0xE0A9, 0xE05A, 0xDFF3, 0xDF24, 0xDDC0, 0xDBF6, 0xD9F2,\n    0xD7E4, 0xD5FA, 0xD460, 0xD346, 0xD2D9, 0xD348, 0xD4C0, 0xE00B,\n    0xF2FA, 0xFD48, 0xFD64, 0xFCAE, 0xFB44, 0xF942, 0xF6C7, 0xF3F0,\n    0xF0DB, 0xEDA7, 0xEA70, 0xE754, 0xE472, 0xE1E7, 0xDFD0, 0xDE4C,\n    0xDD73, 0xDD33, 0xDD6A, 0xDDF6, 0xDEB4, 0xDF84, 0xE042, 0xE0CD,\n    0xE102, 0xE0C0, 0xDFE4, 0xDE4C, 0xDC7D, 0xD8CF, 0xCFDD, 0xBE40,\n    0x85F2, 0x53D3, 0x4D60, 0x4DE6, 0x5326, 0x5AE0, 0x62D7, 0x68CB,\n    0x6D40, 0x722B, 0x7774, 0x7D07, 0x82D0, 0x88B3, 0x8E9D, 0x9477,\n    0x9A2B, 0x9FA4, 0xA4CA, 0xA989, 0xADCA, 0xB176, 0xB478, 0xB6BA,\n    0xB824, 0xB8A2, 0xB8A2, 0xB8A2, 0xCAD3, 0xC6ED, 0xC9DA, 0xCECA,\n    0xD4F0, 0xDB81, 0xE1AF, 0xE6AF, 0xE9B3, 0xEB3B, 0xEC53, 0xED0A,\n    0xED6B, 0xED82, 0xED5D, 0xED06, 0xEC8C, 0xEBF9, 0xEB5A, 0xEABC,\n    0xEA2B, 0xE9B3, 0xE94D, 0xE8E1, 0xE86B, 0xE7E2, 0xE73F, 0xE67D,\n    0xE593, 0xE47B, 0xE32D, 0xE1A4, 0xDFD7, 0xDABA, 0xD2ED, 0xCDE8,\n    0xCC34, 0xCAAE, 0xC953, 0xC81F, 0xC70E, 0xC61C, 0xC547, 0xC489,\n    0xC3E0, 0xC347, 0xC2BB, 0xC238, 0xC1BA, 0xC13E, 0xC0C3, 0xC04E,\n    0xBFE5, 0xBF8C, 0xBF48, 0xBF1E, 0xBF11, 0xBF28, 0xBF66, 0xBFD0,\n    0xC06C, 0xC13E, 0xC382, 0xC799, 0xCC3A, 0xD01D, 0xD2FF, 0xD3C4,\n    0xD21B, 0xCFB3, 0xCCF7, 0xCA50, 0xC829, 0xC6EC, 0xC653, 0xC5D1,\n    0xC564, 0xC50A, 0xC4C1, 0xC489, 0xC45E, 0xC440, 0xC42D, 0xC424,\n    0xC421, 0xC425, 0xC42C, 0xC436, 0xC441, 0xC44A, 0xC451, 0xC454,\n    0xC454, 0xC454, 0xFC8A, 0xF663, 0xF415, 0xF299, 0xF1C0, 0xF159,\n    0xF137, 0xF12A, 0xF101, 0xF0B8, 0xF06C, 0xF021, 0xEFDB, 0xEF9E,\n    0xEF6F, 0xEF51, 0xEF4A, 0xEF5C, 0xEF8D, 0xEFE1, 0xF05C, 0xF101,\n    0xF231, 0xF423, 0xF69D, 0xF967, 0xFC49, 0xFF08, 0x016D, 0x033E,\n    0x0444, 0x0445, 0x0308, 0xF685, 0xE122, 0xD555, 0xD4F7, 0xD581,\n    0xD6D1, 0xD8C7, 0xDB44, 0xDE26, 0xE14E, 0xE49C, 0xE7EF, 0xEB28,\n    0xEE25, 0xF0C7, 0xF2EE, 0xF479, 0xF562, 0xF5C7, 0xF5C5, 0xF575,\n    0xF4F3, 0xF457, 0xF3BD, 0xF340, 0xF2FA, 0xF305, 0xF37C, 0xF479,\n    0xF48D, 0xF51B, 0xFA7E, 0x090C, 0x3FC0, 0x7012, 0x737C, 0x6FA4,\n    0x66F1, 0x5BCC, 0x5099, 0x47C1, 0x4085, 0x38A2, 0x3039, 0x276C,\n    0x1E5B, 0x1528, 0x0BF4, 0x02DF, 0xFA0B, 0xF199, 0xE9A9, 0xE25D,\n    0xDBD6, 0xD634, 0xD199, 0xCE27, 0xCBFD, 0xCB3D, 0xCB3D, 0xCB3D,\n    0x0E38, 0x0D6C, 0x0C9B, 0x0BCC, 0x0B05, 0x0A4D, 0x09AC, 0x0928,\n    0x08C8, 0x0888, 0x085C, 0x0843, 0x0838, 0x083A, 0x0845, 0x0858,\n    0x086F, 0x0888, 0x08A0, 0x08B5, 0x08C3, 0x08C8, 0x08C8, 0x08C8,\n    0x08C8, 0x08C8, 0x08C8, 0x08C8, 0x08C8, 0x08C8, 0x08C8, 0x08C8,\n    0x08C8, 0x08C8, 0x08C8, 0x08C8, 0x08C8, 0x08C8, 0x08C8, 0x08C8,\n    0x08C8, 0x08C8, 0x08C8, 0x08C8, 0x08C8, 0x08C8, 0x08C8, 0x08C8,\n    0x08C8, 0x08C8, 0x08CC, 0x08D7, 0x08E6, 0x08F7, 0x0908, 0x0917,\n    0x0921, 0x0925, 0x0920, 0x0911, 0x08F4, 0x08C8, 0x0890, 0x0852,\n    0x080C, 0x07C1, 0x0771, 0x071C, 0x06C4, 0x0668, 0x0609, 0x05A9,\n    0x0547, 0x04E4, 0x0481, 0x041F, 0x03BE, 0x035E, 0x0301, 0x02A7,\n    0x0250, 0x01FE, 0x01B1, 0x0169, 0x0127, 0x00EC, 0x00B8, 0x008C,\n    0x0069, 0x004F, 0x003F, 0x003A, 0x003A, 0x003A, 0x09D3, 0x09DB,\n    0x09E6, 0x09F1, 0x09FD, 0x0A07, 0x0A10, 0x0A16, 0x0A18, 0x0A18,\n    0x0A18, 0x0A18, 0x0A18, 0x0A18, 0x0A18, 0x0A18, 0x0A18, 0x0A18,\n    0x0A18, 0x0A18, 0x0A18, 0x0A18, 0x0A18, 0x0A18, 0x0A18, 0x0A18,\n    0x0A18, 0x0A18, 0x0A18, 0x0A18, 0x0A18, 0x0A18, 0x0A18, 0x0A18,\n    0x0A18, 0x0A18, 0x0A18, 0x0A18, 0x0A18, 0x0A18, 0x0A18, 0x0A18,\n    0x0A18, 0x0A18, 0x0A18, 0x0A18, 0x0A18, 0x0A18, 0x0A18, 0x0A18,\n    0x0A1A, 0x0A20, 0x0A29, 0x0A32, 0x0A3C, 0x0A44, 0x0A4A, 0x0A4C,\n    0x0A4A, 0x0A41, 0x0A31, 0x0A18, 0x09F9, 0x09D6, 0x09AF, 0x0984,\n    0x0957, 0x0928, 0x08F6, 0x08C2, 0x088D, 0x0857, 0x0820, 0x07E9,\n    0x07B1, 0x077A, 0x0743, 0x070E, 0x06D9, 0x06A7, 0x0676, 0x0648,\n    0x061C, 0x05F4, 0x05CF, 0x05AE, 0x0591, 0x0578, 0x0565, 0x0556,\n    0x054D, 0x054A, 0x054A, 0x054A, 0xF11D, 0xF123, 0xF12B, 0xF133,\n    0xF13C, 0xF144, 0xF14A, 0xF14E, 0xF150, 0xF150, 0xF150, 0xF150,\n    0xF150, 0xF150, 0xF150, 0xF150, 0xF150, 0xF150, 0xF150, 0xF150,\n    0xF150, 0xF150, 0xF150, 0xF150, 0xF150, 0xF150, 0xF150, 0xF150,\n    0xF150, 0xF150, 0xF150, 0xF150, 0xF150, 0xF150, 0xF150, 0xF150,\n    0xF150, 0xF150, 0xF150, 0xF150, 0xF150, 0xF150, 0xF150, 0xF150,\n    0xF150, 0xF150, 0xF150, 0xF150, 0xF150, 0xF150, 0xF153, 0xF159,\n    0xF163, 0xF16D, 0xF178, 0xF181, 0xF188, 0xF18A, 0xF187, 0xF17E,\n    0xF16C, 0xF150, 0xF12D, 0xF105, 0xF0DA, 0xF0AB, 0xF078, 0xF043,\n    0xF00B, 0xEFD1, 0xEF96, 0xEF59, 0xEF1B, 0xEEDD, 0xEE9F, 0xEE61,\n    0xEE24, 0xEDE8, 0xEDAD, 0xED75, 0xED3E, 0xED0A, 0xECDA, 0xECAC,\n    0xEC83, 0xEC5E, 0xEC3D, 0xEC22, 0xEC0C, 0xEBFC, 0xEBF1, 0xEBEE,\n    0xEBEE, 0xEBEE, 0xE8DA, 0xEB5F, 0xEDEE, 0xF073, 0xF2DC, 0xF515,\n    0xF70C, 0xF8AD, 0xF9E4, 0xFABB, 0xFB4E, 0xFBA4, 0xFBC8, 0xFBC2,\n    0xFB9B, 0xFB5C, 0xFB0F, 0xFABB, 0xFA6A, 0xFA26, 0xF9F6, 0xF9E4,\n    0xF9E4, 0xF9E4, 0xF9E4, 0xF9E4, 0xF9E4, 0xF9E4, 0xF9E4, 0xF9E4,\n    0xF9E4, 0xF9E4, 0xF9E4, 0xF9E4, 0xF9E4, 0xF9E4, 0xF9E4, 0xF9E4,\n    0xF9E4, 0xF9E4, 0xF9E4, 0xF9E4, 0xF9E4, 0xF9E4, 0xF9E4, 0xF9E4,\n    0xF9E4, 0xF9E4, 0xF9E4, 0xF9E4, 0xFA10, 0xFA83, 0xFB27, 0xFBE2,\n    0xFC9D, 0xFD40, 0xFDB4, 0xFDDF, 0xFDAC, 0xFD00, 0xFBC6, 0xF9E4,\n    0xF30D, 0xE6E8, 0xDB4B, 0xD60E, 0xD618, 0xD66B, 0xD700, 0xD7D1,\n    0xD8DA, 0xDA12, 0xDB76, 0xDCFE, 0xDEA5, 0xE064, 0xE237, 0xE417,\n    0xE5FD, 0xE7E5, 0xE9C8, 0xEBA0, 0xED67, 0xEF17, 0xF0AB, 0xF21D,\n    0xF365, 0xF480, 0xF566, 0xF611, 0xF67C, 0xF6A2, 0xF6A2, 0xF6A2,\n    0x75B1, 0x8270, 0x8F33, 0x9BAE, 0xA790, 0xB288, 0xBC45, 0xC478,\n    0xCAD0, 0xCF0C, 0xD15B, 0xD211, 0xD185, 0xD00B, 0xCDF9, 0xCBA4,\n    0xC962, 0xC786, 0xC668, 0xC65C, 0xC7B8, 0xCAD0, 0xD052, 0xD84D,\n    0xE22B, 0xED56, 0xF938, 0x0539, 0x10C5, 0x1B46, 0x2424, 0x2ACA,\n    0x2EA1, 0x1ED3, 0xFE7C, 0xEAEF, 0xE826, 0xE673, 0xE5B3, 0xE5C4,\n    0xE683, 0xE7CD, 0xE97E, 0xEB75, 0xED8D, 0xEFA5, 0xF199, 0xF346,\n    0xF48A, 0xF541, 0xF5C6, 0xF67C, 0xF74B, 0xF820, 0xF8E4, 0xF980,\n    0xF9E1, 0xF9EF, 0xF996, 0xF8BF, 0xF755, 0xF541, 0xEC51, 0xDC9B,\n    0xCF7D, 0xCE52, 0xFCD5, 0x24D2, 0x1F03, 0x17E9, 0x0FA5, 0x065D,\n    0xFC32, 0xF147, 0xE5C1, 0xD9C0, 0xCD6A, 0xC0E1, 0xB449, 0xA7C4,\n    0x9B75, 0x8F80, 0x8408, 0x792C, 0x6F17, 0x65E8, 0x5DC2, 0x56C9,\n    0x511F, 0x4CE8, 0x4A47, 0x495F, 0x495F, 0x495F, 0x2A09, 0x27A2,\n    0x253A, 0x22E1, 0x20A4, 0x1E94, 0x1CBE, 0x1B32, 0x19FF, 0x1920,\n    0x1882, 0x181D, 0x17EA, 0x17E1, 0x17FB, 0x182F, 0x1878, 0x18CC,\n    0x1925, 0x197B, 0x19C6, 0x19FF, 0x1A2F, 0x1A63, 0x1A9E, 0x1AE2,\n    0x1B31, 0x1B8D, 0x1BF7, 0x1C72, 0x1D00, 0x1DA3, 0x1E5D, 0x1FE9,\n    0x226F, 0x2510, 0x2788, 0x2A23, 0x2CD7, 0x2F9B, 0x3267, 0x3531,\n    0x37F0, 0x3A9B, 0x3D29, 0x3F92, 0x41CB, 0x43CD, 0x458D, 0x4703,\n    0x480C, 0x4898, 0x48BF, 0x4897, 0x4837, 0x47B7, 0x472C, 0x46AF,\n    0x4655, 0x4636, 0x4669, 0x4703, 0x4974, 0x4DCE, 0x521C, 0x546D,\n    0x5026, 0x4B07, 0x4A01, 0x48F9, 0x47F2, 0x46EC, 0x45E9, 0x44E8,\n    0x43EC, 0x42F5, 0x4205, 0x411D, 0x403D, 0x3F67, 0x3E9C, 0x3DDD,\n    0x3D2B, 0x3C87, 0x3BF2, 0x3B6E, 0x3AFB, 0x3A9A, 0x3A4D, 0x3A15,\n    0x39F2, 0x39E6, 0x39E6, 0x39E6, 0x318D, 0x3812, 0x3E9C, 0x4500,\n    0x4B15, 0x50B3, 0x55B0, 0x59E3, 0x5D24, 0x5F02, 0x5F63, 0x5E97,\n    0x5CF2, 0x5AC6, 0x5866, 0x5625, 0x5454, 0x5346, 0x534E, 0x54BF,\n    0x57EB, 0x5D24, 0x65A4, 0x71DC, 0x80F1, 0x9202, 0xA434, 0xB6AB,\n    0xC88B, 0xD8F7, 0xE712, 0xF200, 0xF8E5, 0xE490, 0xB92A, 0x9EDF,\n    0x9B4F, 0x9935, 0x9862, 0x98A7, 0x99D4, 0x9BBB, 0x9E2C, 0xA0F7,\n    0xA3EF, 0xA6E3, 0xA9A4, 0xAC03, 0xADD0, 0xAEDE, 0xAF94, 0xB06C,\n    0xB153, 0xB235, 0xB2FC, 0xB394, 0xB3EA, 0xB3E8, 0xB37A, 0xB28C,\n    0xB109, 0xAEDE, 0xA59D, 0x955A, 0x87BD, 0x8670, 0xB6B0, 0xDF51,\n    0xD758, 0xCDDC, 0xC309, 0xB708, 0xAA03, 0x9C24, 0x8D95, 0x7E7D,\n    0x6F0D, 0x5F6B, 0x4FC1, 0x403A, 0x30FF, 0x223A, 0x1416, 0x06BD,\n    0xFA59, 0xEF13, 0xE516, 0xDC8B, 0xD59D, 0xD076, 0xCD3F, 0xCC24,\n    0xCC24, 0xCC24, 0x003A, 0x0037, 0x002A, 0x001B, 0x000B, 0xFFFD,\n    0xFFEE, 0xFFE3, 0xFFDC, 0xFFD5, 0xFFC9, 0xFFBC, 0xFFAD, 0xFF9E,\n    0xFF91, 0xFF87, 0xFF82, 0xFF82, 0xFF8A, 0xFF9A, 0xFFB5, 0xFFDC,\n    0x0018, 0x0071, 0x00E0, 0x015E, 0x01E3, 0x0268, 0x02E8, 0x035B,\n    0x03BB, 0x0400, 0x0423, 0x034F, 0x01B0, 0x00C7, 0x00C2, 0x00CD,\n    0x00E7, 0x010D, 0x013E, 0x0175, 0x01B2, 0x01F2, 0x0233, 0x0272,\n    0x02AD, 0x02E2, 0x030F, 0x0331, 0x034B, 0x0362, 0x0375, 0x0385,\n    0x0392, 0x039B, 0x03A2, 0x03A6, 0x03A8, 0x03A7, 0x03A4, 0x039F,\n    0x02DF, 0x011C, 0x00BC, 0x008C, 0xFFEE, 0xFFA9, 0xFF60, 0xFF19,\n    0xFEDA, 0xFEAA, 0xFE8D, 0xFE8B, 0xFE9D, 0xFEB7, 0xFED9, 0xFF01,\n    0xFF2E, 0xFF5F, 0xFF93, 0xFFC8, 0xFFFE, 0x0032, 0x0065, 0x0095,\n    0x00C1, 0x00E7, 0x0107, 0x0120, 0x012F, 0x0135, 0x0135, 0x0135,\n    0xFFC8, 0xFFC4, 0xFFC3, 0xFFC1, 0xFFBE, 0xFFBC, 0xFFBA, 0xFFB9,\n    0xFFB8, 0xFFB6, 0xFFB4, 0xFFB2, 0xFFAF, 0xFFAC, 0xFFAA, 0xFFA8,\n    0xFFA7, 0xFFA7, 0xFFA8, 0xFFAB, 0xFFB0, 0xFFB8, 0xFFC9, 0xFFE9,\n    0x0012, 0x0042, 0x0071, 0x009C, 0x00BE, 0x00D1, 0x00D2, 0x00BA,\n    0x0086, 0xFF40, 0xFD20, 0xFBE7, 0xFBC1, 0xFBAF, 0xFBAE, 0xFBBC,\n    0xFBD6, 0xFBF9, 0xFC24, 0xFC54, 0xFC86, 0xFCB9, 0xFCE8, 0xFD13,\n    0xFD37, 0xFD51, 0xFD61, 0xFD6C, 0xFD72, 0xFD76, 0xFD78, 0xFD7B,\n    0xFD80, 0xFD89, 0xFD97, 0xFDAB, 0xFDC7, 0xFDEE, 0xFF8A, 0xFEF6,\n    0xFF2F, 0xFF86, 0xFFA6, 0xFFE1, 0x0022, 0x0066, 0x00A8, 0x00E4,\n    0x0115, 0x0136, 0x014E, 0x0164, 0x0179, 0x018C, 0x019D, 0x01AD,\n    0x01BC, 0x01CA, 0x01D6, 0x01E0, 0x01EA, 0x01F2, 0x01F8, 0x01FE,\n    0x0202, 0x0205, 0x0207, 0x0207, 0x0207, 0x0207, 0x9D14, 0x9F0F,\n    0xA5BF, 0xADBC, 0xB650, 0xBEC6, 0xC668, 0xCC81, 0xD05C, 0xD299,\n    0xD457, 0xD5A1, 0xD67C, 0xD6F3, 0xD70D, 0xD6D3, 0xD64D, 0xD583,\n    0xD47D, 0xD345, 0xD1E2, 0xD05C, 0xCE06, 0xCA67, 0xC5D9, 0xC0B6,\n    0xBB56, 0xB613, 0xB147, 0xAD4A, 0xAA77, 0xA927, 0xA9B2, 0xB9E5,\n    0xD6B1, 0xE727, 0xE88B, 0xE8DB, 0xE839, 0xE6CA, 0xE4B3, 0xE216,\n    0xDF18, 0xDBDE, 0xD88A, 0xD542, 0xD229, 0xCF63, 0xCD14, 0xCB61,\n    0xCA56, 0xC9D0, 0xC9AE, 0xC9CD, 0xCA0C, 0xCA48, 0xCA60, 0xCA31,\n    0xC99A, 0xC879, 0xC6AB, 0xC40F, 0xA3A3, 0xA835, 0xA40B, 0xA786,\n    0xD9F6, 0xE0EC, 0xE585, 0xE83D, 0xE98F, 0xE9F6, 0xE9EF, 0xE9F4,\n    0xEA0B, 0xE9E9, 0xE995, 0xE917, 0xE874, 0xE7B4, 0xE6DC, 0xE5F4,\n    0xE503, 0xE40E, 0xE31E, 0xE237, 0xE162, 0xE0A5, 0xE006, 0xDF8C,\n    0xDF3E, 0xDF23, 0xDF23, 0xDF23, 0x4DE3, 0x4C54, 0x4DFC, 0x4FF7,\n    0x5217, 0x5430, 0x5615, 0x5798, 0x588D, 0x591D, 0x5992, 0x59EC,\n    0x5A2D, 0x5A54, 0x5A65, 0x5A5E, 0x5A42, 0x5A10, 0x59CB, 0x5973,\n    0x5908, 0x588D, 0x583D, 0x583D, 0x5863, 0x5887, 0x587F, 0x5824,\n    0x574D, 0x55D1, 0x5388, 0x5049, 0x4BEB, 0x3B68, 0x212D, 0x1140,\n    0x0D8E, 0x0A9E, 0x085C, 0x06B5, 0x0593, 0x04E4, 0x0494, 0x048F,\n    0x04C0, 0x0516, 0x057A, 0x05DB, 0x0623, 0x0640, 0x0607, 0x0577,\n    0x04BB, 0x03FC, 0x0364, 0x031D, 0x0351, 0x042A, 0x05D1, 0x0870,\n    0x0C32, 0x1140, 0x5117, 0x4DF1, 0x555C, 0x5501, 0x2336, 0x1BE8,\n    0x16E9, 0x13C1, 0x11F7, 0x1110, 0x1093, 0x1007, 0x0F61, 0x0EE5,\n    0x0E8F, 0x0E5A, 0x0E44, 0x0E47, 0x0E61, 0x0E8E, 0x0EC8, 0x0F0D,\n    0x0F59, 0x0FA7, 0x0FF4, 0x103B, 0x107A, 0x10AB, 0x10CC, 0x10D8,\n    0x10D8, 0x10D8, 0x14A9, 0x142F, 0x1046, 0x0BAA, 0x06B9, 0x01D0,\n    0xFD4F, 0xF992, 0xF6F8, 0xF51C, 0xF35F, 0xF1C5, 0xF055, 0xEF15,\n    0xEE0A, 0xED39, 0xECAA, 0xEC60, 0xEC62, 0xECB6, 0xED62, 0xEE6A,\n    0xF022, 0xF2B9, 0xF603, 0xF9D5, 0xFE03, 0x025E, 0x06BE, 0x0AF4,\n    0x0ED5, 0x1235, 0x14E7, 0x147C, 0x114C, 0x0F58, 0x0F68, 0x0F9A,\n    0x0FE6, 0x1049, 0x10BE, 0x1140, 0x11CA, 0x1257, 0x12E2, 0x1366,\n    0x13DF, 0x1447, 0x1499, 0x14D2, 0x14F8, 0x1516, 0x152B, 0x1535,\n    0x1534, 0x1527, 0x150C, 0x14E2, 0x14A9, 0x145F, 0x1404, 0x1395,\n    0x0EB4, 0x0D2C, 0x0A66, 0x08B0, 0x0D88, 0x0D85, 0x0D1D, 0x0C79,\n    0x0BBE, 0x0B13, 0x0A9E, 0x0A86, 0x0AB5, 0x0AF7, 0x0B4B, 0x0BAD,\n    0x0C1B, 0x0C92, 0x0D10, 0x0D91, 0x0E12, 0x0E92, 0x0F0D, 0x0F81,\n    0x0FEA, 0x1046, 0x1093, 0x10CD, 0x10F2, 0x10FF, 0x10FF, 0x10FF,\n    0x17D5, 0x17C1, 0x1A79, 0x1DB8, 0x2135, 0x24A6, 0x27C1, 0x2A3B,\n    0x2BCC, 0x2CAF, 0x2D54, 0x2DC2, 0x2E00, 0x2E13, 0x2E03, 0x2DD6,\n    0x2D92, 0x2D3E, 0x2CE0, 0x2C7F, 0x2C21, 0x2BCC, 0x2B8C, 0x2B5D,\n    0x2B32, 0x2AFE, 0x2AB5, 0x2A49, 0x29AE, 0x28D7, 0x27B7, 0x2640,\n    0x2468, 0x1E4C, 0x14A8, 0x0E55, 0x0C0B, 0x09EF, 0x07FE, 0x0637,\n    0x0499, 0x0321, 0x01CD, 0x009C, 0xFF8D, 0xFE9C, 0xFDC9, 0xFD10,\n    0xFC71, 0xFBEA, 0xFB89, 0xFB5B, 0xFB5E, 0xFB8D, 0xFBE6, 0xFC64,\n    0xFD06, 0xFDC6, 0xFEA2, 0xFF96, 0x009E, 0x01B9, 0x0AA3, 0x0CB4,\n    0x0DD7, 0x0D28, 0x0450, 0x0292, 0x011E, 0xFFF5, 0xFF12, 0xFE74,\n    0xFE1A, 0xFE03, 0xFE1B, 0xFE50, 0xFE9D, 0xFF00, 0xFF74, 0xFFF6,\n    0x0081, 0x0115, 0x01AB, 0x0241, 0x02D3, 0x035D, 0x03DB, 0x044B,\n    0x04A8, 0x04EF, 0x051D, 0x052D, 0x052D, 0x052D, 0x9FE3, 0x9F92,\n    0x9957, 0x91E5, 0x89E6, 0x8202, 0x7AE2, 0x7532, 0x719B, 0x6F81,\n    0x6DD5, 0x6C92, 0x6BB1, 0x6B2F, 0x6B04, 0x6B2B, 0x6B9F, 0x6C5A,\n    0x6D56, 0x6E8E, 0x6FFC, 0x719B, 0x73A6, 0x7650, 0x7981, 0x7D23,\n    0x8121, 0x8560, 0x89CB, 0x8E4C, 0x92CC, 0x9734, 0x9B6D, 0xA0E7,\n    0xA76A, 0xAC67, 0xAFDC, 0xB371, 0xB71A, 0xBAC7, 0xBE6B, 0xC1FA,\n    0xC564, 0xC89B, 0xCB94, 0xCE3E, 0xD08E, 0xD274, 0xD3E3, 0xD4CE,\n    0xD526, 0xD4ED, 0xD42E, 0xD2F4, 0xD14A, 0xCF3C, 0xCCD4, 0xCA1E,\n    0xC724, 0xC3F1, 0xC092, 0xBD10, 0xA68A, 0xA19C, 0x9B74, 0x9B02,\n    0xB85B, 0xBCA1, 0xBF91, 0xC16C, 0xC276, 0xC2F1, 0xC31F, 0xC345,\n    0xC369, 0xC36B, 0xC34F, 0xC317, 0xC2C9, 0xC268, 0xC1F8, 0xC17E,\n    0xC0FC, 0xC077, 0xBFF3, 0xBF74, 0xBEFE, 0xBE94, 0xBE3B, 0xBDF7,\n    0xBDCB, 0xBDBB, 0xBDBB, 0xBDBB, 0xF10F, 0xF12F, 0xF177, 0xF19D,\n    0xF1C0, 0xF1FF, 0xF279, 0xF34D, 0xF49A, 0xF668, 0xF89E, 0xFB22,\n    0xFDDC, 0x00B4, 0x0392, 0x065D, 0x08FE, 0x0B5C, 0x0D5E, 0x0EEC,\n    0x0FEF, 0x104D, 0x0FD6, 0x0E82, 0x0C79, 0x09E1, 0x06E2, 0x03A3,\n    0x004A, 0xFD00, 0xF9EA, 0xF730, 0xF4F9, 0xF401, 0xF44E, 0xF4F9,\n    0xF590, 0xF637, 0xF6EB, 0xF7AA, 0xF86F, 0xF937, 0xF9FE, 0xFAC3,\n    0xFB80, 0xFC34, 0xFCDA, 0xFD6E, 0xFDEF, 0xFE58, 0xFEA3, 0xFECF,\n    0xFEE0, 0xFEDD, 0xFECA, 0xFEAE, 0xFE8C, 0xFE6C, 0xFE51, 0xFE41,\n    0xFE42, 0xFE58, 0x0023, 0xFFE3, 0x00B9, 0x0111, 0xFDE2, 0xFD73,\n    0xFD27, 0xFCFA, 0xFCE5, 0xFCE2, 0xFCEE, 0xFD02, 0xFD1D, 0xFD41,\n    0xFD6B, 0xFD9C, 0xFDD1, 0xFE0A, 0xFE45, 0xFE81, 0xFEBE, 0xFEF9,\n    0xFF31, 0xFF66, 0xFF96, 0xFFC0, 0xFFE3, 0xFFFD, 0x000D, 0x0013,\n    0x0013, 0x0013, 0xF83E, 0xF977, 0xFBF2, 0xFEE4, 0x0209, 0x0523,\n    0x07EE, 0x0A29, 0x0B92, 0x0C65, 0x0D0A, 0x0D84, 0x0DD6, 0x0E04,\n    0x0E0F, 0x0DFB, 0x0DCA, 0x0D80, 0x0D20, 0x0CAB, 0x0C25, 0x0B92,\n    0x0AD1, 0x09CA, 0x088B, 0x0721, 0x0598, 0x0400, 0x0263, 0x00D1,\n    0xFF58, 0xFE01, 0xFCDD, 0xFC68, 0xFCA3, 0xFCDD, 0xFCDD, 0xFCDD,\n    0xFCDD, 0xFCDD, 0xFCDD, 0xFCDD, 0xFCDD, 0xFCDD, 0xFCDD, 0xFCDD,\n    0xFCDD, 0xFCDD, 0xFCDD, 0xFCDD, 0xFCDE, 0xFCDF, 0xFCE1, 0xFCE3,\n    0xFCE5, 0xFCE6, 0xFCE8, 0xFCE8, 0xFCE7, 0xFCE6, 0xFCE2, 0xFCDD,\n    0xFC8F, 0xFC82, 0xFC9E, 0xFCE5, 0xFDD7, 0xFDF2, 0xFE00, 0xFE04,\n    0xFE03, 0xFE00, 0xFDFF, 0xFE05, 0xFE10, 0xFE1D, 0xFE2B, 0xFE3A,\n    0xFE4A, 0xFE5A, 0xFE6A, 0xFE7A, 0xFE8A, 0xFE9A, 0xFEA8, 0xFEB5,\n    0xFEC1, 0xFECC, 0xFED4, 0xFEDA, 0xFEDE, 0xFEE0, 0xFEE0, 0xFEE0,\n    0xA850, 0xAB8E, 0xB217, 0xB9D7, 0xC221, 0xCA4A, 0xD1A5, 0xD784,\n    0xDB3B, 0xDD58, 0xDEE7, 0xDFF5, 0xE090, 0xE0C8, 0xE0AB, 0xE047,\n    0xDFA9, 0xDEE2, 0xDDFE, 0xDD0D, 0xDC1C, 0xDB3B, 0xDA2F, 0xD8C3,\n    0xD708, 0xD512, 0xD2F2, 0xD0BB, 0xCE80, 0xCC52, 0xCA45, 0xC86B,\n    0xC6D6, 0xC634, 0xC685, 0xC6D6, 0xC6D6, 0xC6D6, 0xC6D6, 0xC6D6,\n    0xC6D6, 0xC6D6, 0xC6D6, 0xC6D6, 0xC6D6, 0xC6D6, 0xC6D6, 0xC6D6,\n    0xC6D6, 0xC6D6, 0xC6F4, 0xC745, 0xC7B6, 0xC839, 0xC8BB, 0xC92D,\n    0xC97D, 0xC99C, 0xC978, 0xC900, 0xC825, 0xC6D6, 0xB28C, 0xB758,\n    0xAE34, 0xAC33, 0xDBD3, 0xE2DC, 0xE7C5, 0xEAF1, 0xECC4, 0xEDA1,\n    0xEDEB, 0xEE07, 0xEE06, 0xEDC0, 0xED3E, 0xEC87, 0xEBA5, 0xEA9F,\n    0xE97E, 0xE84A, 0xE70B, 0xE5CA, 0xE490, 0xE365, 0xE250, 0xE15B,\n    0xE08E, 0xDFF1, 0xDF8D, 0xDF6A, 0xDF6A, 0xDF6A, 0x4177, 0x40EB,\n    0x3BB9, 0x3585, 0x2EDB, 0x2848, 0x225A, 0x1D9D, 0x1A9F, 0x18CA,\n    0x172F, 0x15D3, 0x14BD, 0x13F1, 0x1375, 0x134E, 0x1383, 0x1417,\n    0x1512, 0x1679, 0x1851, 0x1A9F, 0x1E26, 0x235C, 0x29D6, 0x3129,\n    0x38E9, 0x40AC, 0x4806, 0x4E8C, 0x53D3, 0x576F, 0x58F5, 0x4B4A,\n    0x30A1, 0x1F82, 0x1AFC, 0x1711, 0x13B4, 0x10DB, 0x0E7A, 0x0C85,\n    0x0AF1, 0x09B1, 0x08BC, 0x0804, 0x077F, 0x0720, 0x06DC, 0x06A8,\n    0x0674, 0x0646, 0x0638, 0x0660, 0x06D8, 0x07B6, 0x0914, 0x0B08,\n    0x0DAC, 0x1116, 0x155F, 0x1A9F, 0x5192, 0x4A7F, 0x4FBF, 0x4F79,\n    0x273E, 0x2163, 0x1D77, 0x1B0B, 0x19B1, 0x18FB, 0x187C, 0x17C5,\n    0x16D4, 0x15F1, 0x151C, 0x1455, 0x139B, 0x12F0, 0x1252, 0x11C1,\n    0x113F, 0x10CA, 0x1063, 0x100A, 0x0FBE, 0x0F80, 0x0F50, 0x0F2E,\n    0x0F19, 0x0F13, 0x0F13, 0x0F13, 0x07F9, 0x07D4, 0x0725, 0x064B,\n    0x055F, 0x047C, 0x03BA, 0x0333, 0x0301, 0x0313, 0x0343, 0x038C,\n    0x03EA, 0x0459, 0x04D3, 0x0554, 0x05D7, 0x0658, 0x06D2, 0x073F,\n    0x079C, 0x07E4, 0x0819, 0x0841, 0x085E, 0x0872, 0x087F, 0x0888,\n    0x088E, 0x0895, 0x089D, 0x08A9, 0x08BB, 0x08F7, 0x093A, 0x091C,\n    0x089B, 0x07FE, 0x074C, 0x068A, 0x05C0, 0x04F4, 0x042C, 0x036E,\n    0x02C1, 0x022B, 0x01B2, 0x015D, 0x0133, 0x0139, 0x0183, 0x021A,\n    0x02EE, 0x03F2, 0x0518, 0x0653, 0x0795, 0x08D0, 0x09F6, 0x0AFA,\n    0x0BCE, 0x0C64, 0x0708, 0x05B7, 0x03DE, 0x02DB, 0x068A, 0x060A,\n    0x053F, 0x0442, 0x032C, 0x0215, 0x0118, 0x004E, 0xFFA0, 0xFEE9,\n    0xFE2B, 0xFD68, 0xFCA4, 0xFBE0, 0xFB1E, 0xFA61, 0xF9AC, 0xF8FF,\n    0xF85F, 0xF7CC, 0xF74A, 0xF6DA, 0xF67F, 0xF63B, 0xF611, 0xF602,\n    0xF602, 0xF602, 0xFE15, 0xFDE4, 0xFD1F, 0xFC29, 0xFB21, 0xFA21,\n    0xF947, 0xF8B0, 0xF878, 0xF87E, 0xF891, 0xF8B1, 0xF8E0, 0xF91F,\n    0xF970, 0xF9D3, 0xFA4A, 0xFAD7, 0xFB7A, 0xFC35, 0xFD0A, 0xFDFA,\n    0xFF31, 0x00CA, 0x02AE, 0x04C4, 0x06F4, 0x0923, 0x0B3A, 0x0D20,\n    0x0EBB, 0x0FF5, 0x10B3, 0x0E5F, 0x090F, 0x04AF, 0x01F9, 0xFF15,\n    0xFC12, 0xF901, 0xF5F0, 0xF2EF, 0xF00D, 0xED5B, 0xEAE8, 0xE8C3,\n    0xE6FD, 0xE5A3, 0xE4C7, 0xE477, 0xE4DB, 0xE5FD, 0xE7C4, 0xEA16,\n    0xECDA, 0xEFF6, 0xF351, 0xF6D1, 0xFA5C, 0xFDD9, 0x012E, 0x0442,\n    0x0A67, 0x0AED, 0x0AF1, 0x0993, 0x01D1, 0x00F8, 0x0090, 0x0077,\n    0x008F, 0x00B7, 0x00CE, 0x00B6, 0x0076, 0x002E, 0xFFE1, 0xFF8E,\n    0xFF38, 0xFEDF, 0xFE85, 0xFE2C, 0xFDD5, 0xFD81, 0xFD32, 0xFCE9,\n    0xFCA8, 0xFC6F, 0xFC41, 0xFC1E, 0xFC08, 0xFC00, 0xFC00, 0xFC00,\n    0x9BA9, 0x9BCB, 0xA0FD, 0xA747, 0xAE0B, 0xB4AC, 0xBA8D, 0xBF11,\n    0xC19B, 0xC2C4, 0xC38D, 0xC3FA, 0xC40D, 0xC3C9, 0xC32E, 0xC241,\n    0xC103, 0xBF77, 0xBDA0, 0xBB7E, 0xB916, 0xB669, 0xB2BA, 0xAD8D,\n    0xA746, 0xA04C, 0x9902, 0x91CE, 0x8B14, 0x853A, 0x80A3, 0x7DB2,\n    0x7CD2, 0x8C25, 0xA8F7, 0xBA76, 0xBD8C, 0xBFBF, 0xC128, 0xC1E2,\n    0xC206, 0xC1AD, 0xC0F1, 0xBFEC, 0xBEB7, 0xBD6B, 0xBC23, 0xBAF8,\n    0xBA04, 0xB95F, 0xB8FB, 0xB8AE, 0xB86A, 0xB821, 0xB7C5, 0xB749,\n    0xB69F, 0xB5B8, 0xB487, 0xB2FF, 0xB111, 0xAEB0, 0x9745, 0x962A,\n    0x93F2, 0x966E, 0xB192, 0xB58A, 0xB83D, 0xB9EF, 0xBAE3, 0xBB5F,\n    0xBBA4, 0xBBF8, 0xBC60, 0xBCB3, 0xBCF3, 0xBD23, 0xBD44, 0xBD57,\n    0xBD60, 0xBD5E, 0xBD54, 0xBD44, 0xBD2F, 0xBD18, 0xBCFF, 0xBCE7,\n    0xBCD2, 0xBCC0, 0xBCB4, 0xBCB0, 0xBCB0, 0xBCB0, 0x8001, 0x8001,\n    0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x0B5E, 0x09C1,\n    0x0825, 0x0693, 0x0515, 0x03B5, 0x027B, 0x0171, 0x00A1, 0x000A,\n    0xFFA2, 0xFF62, 0xFF46, 0xFF46, 0xFF5E, 0xFF87, 0xFFBC, 0xFFF6,\n    0x002F, 0x0063, 0x008B, 0x00A1, 0x00AD, 0x00BB, 0x00CC, 0x00DF,\n    0x00F5, 0x010D, 0x0128, 0x0146, 0x0168, 0x018C, 0x01B4, 0x02A3,\n    0x025E, 0x01B4, 0x00E4, 0x0009, 0xFF27, 0xFE3F, 0xFD53, 0xFC66,\n    0xFB7A, 0xFA93, 0xF9B2, 0xF8DA, 0xF80E, 0xF74F, 0xF6A1, 0xF605,\n    0xF56F, 0xF4D4, 0xF43A, 0xF3A8, 0xF323, 0xF2B1, 0xF258, 0xF21F,\n    0xF20A, 0xF221, 0xF269, 0xF2E8, 0xF5E3, 0xFB30, 0xFF31, 0x00CA,\n    0x018B, 0x01CE, 0x01EE, 0x01F0, 0x01B2, 0x0155, 0x00FC, 0x00C8,\n    0x00B3, 0x009F, 0x008C, 0x007B, 0x006A, 0x005B, 0x004C, 0x003F,\n    0x0033, 0x0029, 0x001F, 0x0017, 0x0010, 0x000A, 0x0005, 0x0002,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0011, 0x0096, 0x011A, 0x019B,\n    0x0215, 0x0286, 0x02EB, 0x0340, 0x0383, 0x03B4, 0x03D5, 0x03EA,\n    0x03F3, 0x03F3, 0x03EB, 0x03DE, 0x03CD, 0x03BB, 0x03A8, 0x0397,\n    0x038A, 0x0383, 0x037F, 0x037C, 0x0379, 0x0374, 0x036F, 0x0369,\n    0x0360, 0x0355, 0x0348, 0x0337, 0x0323, 0x026E, 0x02AF, 0x0323,\n    0x0392, 0x040E, 0x0494, 0x0520, 0x05AF, 0x063D, 0x06C6, 0x0748,\n    0x07BE, 0x0826, 0x087B, 0x08BA, 0x08E0, 0x08E9, 0x08D4, 0x08A1,\n    0x0853, 0x07EE, 0x0773, 0x06E4, 0x0644, 0x0596, 0x04DC, 0x0419,\n    0x034E, 0x027F, 0x00C0, 0xFE43, 0xFCAB, 0xFC86, 0xFD05, 0xFDC3,\n    0xFE5C, 0xFECC, 0xFF44, 0xFFB5, 0x000C, 0x0039, 0x0049, 0x0054,\n    0x005B, 0x005E, 0x005E, 0x005B, 0x0056, 0x004E, 0x0045, 0x003C,\n    0x0031, 0x0027, 0x001D, 0x0013, 0x000B, 0x0005, 0x0001, 0x0000,\n    0x0000, 0x0000, 0x02E0, 0x02D0, 0x02C0, 0x02B1, 0x02A3, 0x0295,\n    0x0289, 0x027F, 0x0278, 0x0268, 0x024A, 0x0223, 0x01F6, 0x01C9,\n    0x01A0, 0x0180, 0x016D, 0x016C, 0x0181, 0x01B2, 0x0203, 0x0278,\n    0x030D, 0x03BC, 0x0488, 0x0570, 0x0678, 0x07A1, 0x08EB, 0x0A5A,\n    0x0BED, 0x0DA8, 0x0F8B, 0x1ABA, 0x1500, 0x0F8B, 0x104D, 0x1172,\n    0x12E9, 0x149F, 0x1681, 0x187D, 0x1A80, 0x1C78, 0x1E52, 0x1FFD,\n    0x2164, 0x2276, 0x2321, 0x2351, 0x22FE, 0x2234, 0x2102, 0x1F78,\n    0x1DA4, 0x1B94, 0x1958, 0x16FF, 0x1497, 0x122F, 0x0FD6, 0x0D9B,\n    0x0B32, 0x07DF, 0x0305, 0xFBB3, 0xF2CD, 0xEA7A, 0xE4E3, 0xE299,\n    0xE22A, 0xE2BC, 0xE375, 0xE37C, 0xE2D4, 0xE217, 0xE149, 0xE06D,\n    0xDF86, 0xDE99, 0xDDAA, 0xDCBC, 0xDBD3, 0xDAF2, 0xDA1E, 0xD95A,\n    0xD8AA, 0xD811, 0xD794, 0xD736, 0xD6FB, 0xD6E6, 0xD6E6, 0xD6E6,\n    0xE142, 0xE33F, 0xE35C, 0xE32C, 0xE2CA, 0xE24E, 0xE1CF, 0xE167,\n    0xE12C, 0xE111, 0xE0F7, 0xE0DF, 0xE0C9, 0xE0B7, 0xE0AA, 0xE0A3,\n    0xE0A3, 0xE0AA, 0xE0BB, 0xE0D5, 0xE0FB, 0xE12C, 0xE16D, 0xE1C0,\n    0xE221, 0xE290, 0xE30B, 0xE391, 0xE41E, 0xE4B3, 0xE54C, 0xE5E9,\n    0xE687, 0xE76E, 0xE8B3, 0xEA05, 0xEB4C, 0xECA4, 0xEE0A, 0xEF78,\n    0xF0E9, 0xF25A, 0xF3C5, 0xF525, 0xF677, 0xF7B5, 0xF8DB, 0xF9E4,\n    0xFACB, 0xFB8D, 0xFC1D, 0xFC78, 0xFCA7, 0xFCB2, 0xFCA0, 0xFC78,\n    0xFC44, 0xFC0B, 0xFBD4, 0xFBA7, 0xFB8D, 0xFB8D, 0xFBC5, 0xFC27,\n    0xFC7B, 0xFC84, 0xFBD0, 0xFABC, 0xFA46, 0xFABC, 0xFB95, 0xFC93,\n    0xFD73, 0xFDF7, 0xFE35, 0xFE6E, 0xFEA3, 0xFED3, 0xFF00, 0xFF28,\n    0xFF4D, 0xFF6E, 0xFF8B, 0xFFA5, 0xFFBB, 0xFFCE, 0xFFDE, 0xFFEB,\n    0xFFF4, 0xFFFB, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x1C07, 0x1C98,\n    0x16C2, 0x0F61, 0x0735, 0xFF03, 0xF78A, 0xF18D, 0xEDCF, 0xEBB8,\n    0xEA28, 0xE910, 0xE867, 0xE81F, 0xE82C, 0xE882, 0xE914, 0xE9D7,\n    0xEABD, 0xEBBC, 0xECC6, 0xEDCF, 0xEF0F, 0xF0B7, 0xF2B8, 0xF4FE,\n    0xF778, 0xFA16, 0xFCC4, 0xFF72, 0x020D, 0x0484, 0x06C7, 0x092C,\n    0x0B62, 0x0C59, 0x0C45, 0x0C10, 0x0BC1, 0x0B5B, 0x0AE4, 0x0A5F,\n    0x09D2, 0x0941, 0x08B1, 0x0826, 0x07A6, 0x0734, 0x06D5, 0x068F,\n    0x065A, 0x062F, 0x060D, 0x05F4, 0x05E5, 0x05E0, 0x05E4, 0x05F2,\n    0x060A, 0x062C, 0x0658, 0x068F, 0x0753, 0x08AE, 0x09E7, 0x0A46,\n    0x08EB, 0x0679, 0x0476, 0x0335, 0x020F, 0x0118, 0x0062, 0x0000,\n    0xFFD4, 0xFFB2, 0xFF99, 0xFF88, 0xFF7F, 0xFF7C, 0xFF7F, 0xFF86,\n    0xFF91, 0xFF9E, 0xFFAE, 0xFFBE, 0xFFCF, 0xFFDE, 0xFFEC, 0xFFF7,\n    0xFFFE, 0x0000, 0x0000, 0x0000, 0x2193, 0x2351, 0x1E63, 0x17F8,\n    0x10C2, 0x0976, 0x02C9, 0xFD6F, 0xFA1A, 0xF848, 0xF6F6, 0xF616,\n    0xF59A, 0xF575, 0xF599, 0xF5F9, 0xF686, 0xF733, 0xF7F3, 0xF8B8,\n    0xF974, 0xFA1A, 0xFADD, 0xFBED, 0xFD3C, 0xFEB7, 0x004C, 0x01EE,\n    0x038B, 0x0511, 0x0670, 0x0797, 0x0876, 0x077E, 0x051D, 0x043A,\n    0x052A, 0x064C, 0x0795, 0x08FE, 0x0A7F, 0x0C0E, 0x0DA3, 0x0F36,\n    0x10BF, 0x1234, 0x138D, 0x14C2, 0x15CA, 0x169C, 0x1717, 0x172D,\n    0x16F5, 0x1687, 0x15FB, 0x1569, 0x14E8, 0x148F, 0x1477, 0x14B7,\n    0x1566, 0x169C, 0x1B8B, 0x2445, 0x2C31, 0x2EBA, 0x25F2, 0x164D,\n    0x0AC2, 0x0607, 0x0327, 0x0190, 0x00B3, 0x0000, 0xFF37, 0xFE76,\n    0xFDBF, 0xFD12, 0xFC6F, 0xFBD6, 0xFB48, 0xFAC4, 0xFA4C, 0xF9E0,\n    0xF97F, 0xF92A, 0xF8E1, 0xF8A5, 0xF876, 0xF854, 0xF840, 0xF839,\n    0xF839, 0xF839, 0xBE5F, 0xBEA8, 0xBEEE, 0xBF39, 0xBF90, 0xBFE8,\n    0xC03A, 0xC07B, 0xC0A2, 0xC0B6, 0xC0C3, 0xC0CB, 0xC0CE, 0xC0CE,\n    0xC0CA, 0xC0C5, 0xC0BE, 0xC0B6, 0xC0AF, 0xC0A8, 0xC0A4, 0xC0A2,\n    0xC07E, 0xC01F, 0xBF9C, 0xBF0A, 0xBE80, 0xBE13, 0xBDD8, 0xBDE7,\n    0xBE54, 0xBF36, 0xC0A2, 0xC829, 0xD405, 0xD94C, 0xD730, 0xD447,\n    0xD0B2, 0xCC94, 0xC812, 0xC34F, 0xBE6C, 0xB98F, 0xB4DA, 0xB06F,\n    0xAC73, 0xA909, 0xA654, 0xA477, 0xA387, 0xA36D, 0xA40A, 0xA53D,\n    0xA6E7, 0xA8E7, 0xAB1D, 0xAD69, 0xAFAC, 0xB1C6, 0xB396, 0xB4FC,\n    0xB374, 0xB270, 0xB13E, 0xB009, 0xAED2, 0xAD9A, 0xAC62, 0xAB2A,\n    0xA9F3, 0xA8BD, 0xA7D7, 0xA663, 0xA493, 0xA2C3, 0xA0F3, 0x9F23,\n    0x9D52, 0x9B82, 0x99B2, 0x97E2, 0x9612, 0x9441, 0x9271, 0x90A1,\n    0x8ED1, 0x8D01, 0x8B31, 0x8960, 0x8790, 0x85C0, 0x85C0, 0x85C0,\n    0x080A, 0x079D, 0x079D, 0x079D, 0x079D, 0x079D, 0x079D, 0x079D,\n    0x079D, 0x079D, 0x079D, 0x079D, 0x079D, 0x079D, 0x079D, 0x079D,\n    0x079D, 0x079D, 0x079D, 0x079D, 0x079D, 0x079D, 0x0783, 0x0741,\n    0x06E5, 0x067E, 0x061D, 0x05D0, 0x05A7, 0x05B2, 0x05FE, 0x069D,\n    0x079D, 0x0C72, 0x1452, 0x18ED, 0x19B9, 0x1A61, 0x1AE5, 0x1B44,\n    0x1B7E, 0x1B90, 0x1B7B, 0x1B3E, 0x1AD7, 0x1A47, 0x198C, 0x18A5,\n    0x1793, 0x1653, 0x14BE, 0x12B9, 0x1057, 0x0DA8, 0x0AC0, 0x07B2,\n    0x048E, 0x0168, 0xFE52, 0xFB5D, 0xF89D, 0xF623, 0xF839, 0xF9D5,\n    0xFBF8, 0xFE16, 0x0035, 0x025B, 0x048C, 0x06CD, 0x0922, 0x0B92,\n    0x0F27, 0x12BC, 0x1416, 0x157D, 0x16EC, 0x185F, 0x19D4, 0x1B45,\n    0x1CAF, 0x1E0E, 0x1F5D, 0x209B, 0x21C1, 0x22CD, 0x23BA, 0x2485,\n    0x2529, 0x25A4, 0x25F0, 0x260A, 0x260A, 0x260A, 0x3ACE, 0x3AD5,\n    0x3AD5, 0x3AD5, 0x3AD5, 0x3AD5, 0x3AD5, 0x3AD5, 0x3AD5, 0x3AD5,\n    0x3AD5, 0x3AD5, 0x3AD5, 0x3AD5, 0x3AD5, 0x3AD5, 0x3AD5, 0x3AD5,\n    0x3AD5, 0x3AD5, 0x3AD5, 0x3AD5, 0x3AFB, 0x3B5C, 0x3BE3, 0x3C79,\n    0x3D07, 0x3D78, 0x3DB4, 0x3DA5, 0x3D34, 0x3C4C, 0x3AD5, 0x34CF,\n    0x2A54, 0x2179, 0x1BB8, 0x166C, 0x117A, 0x0CC7, 0x083A, 0x03B7,\n    0xFF24, 0xFA65, 0xF560, 0xEFFA, 0xEA19, 0xE3A2, 0xDC79, 0xD486,\n    0xCB86, 0xC16D, 0xB666, 0xAAA2, 0x9E4E, 0x9199, 0x84B0, 0x77C0,\n    0x6AFC, 0x5E8F, 0x52A9, 0x4777, 0x4854, 0x45A7, 0x43D8, 0x420A,\n    0x4041, 0x3E81, 0x3CCB, 0x3B23, 0x398D, 0x380A, 0x3816, 0x3701,\n    0x3453, 0x31A5, 0x2EF8, 0x2C4A, 0x299C, 0x26EF, 0x2441, 0x2194,\n    0x1EE6, 0x1C38, 0x198B, 0x16DD, 0x142F, 0x1182, 0x0ED4, 0x0C27,\n    0x0979, 0x06CB, 0x06CB, 0x06CB,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_27.inc.c",
    "content": "static const struct Animation anim_27[] = {\n    1,\n    189,\n    0,\n    0,\n    0x70,\n    ANIMINDEX_NUMPARTS(anim_27_indices),\n    anim_27_values,\n    anim_27_indices,\n    0,\n};\n\n\nstatic const u16 anim_27_indices[] = {\n    0x0070, 0x0001, 0x0070, 0x0071, 0x0070, 0x00E1, 0x0001, 0x0000, 0x0001, 0x0151, 0x0001, 0x0000,\n    0x0070, 0x103A, 0x0070, 0x10AA, 0x0070, 0x111A,\n    0x0070, 0x0EEA, 0x0070, 0x0F5A, 0x0070, 0x0FCA,\n    0x0070, 0x0D9A, 0x0070, 0x0E0A, 0x0070, 0x0E7A,\n    0x0001, 0x0D96, 0x0001, 0x0D97, 0x0001, 0x0D98,\n    0x0070, 0x0312, 0x0070, 0x0382, 0x0070, 0x03F2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0070, 0x02A2,\n    0x0070, 0x0152, 0x0070, 0x01C2, 0x0070, 0x0232,\n    0x0001, 0x0D92, 0x0001, 0x0D93, 0x0001, 0x0D94,\n    0x0070, 0x0622, 0x0070, 0x0692, 0x0070, 0x0702,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0070, 0x05B2,\n    0x0070, 0x0462, 0x0070, 0x04D2, 0x0070, 0x0542,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0D95,\n    0x0070, 0x0C42, 0x0070, 0x0CB2, 0x0070, 0x0D22,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0070, 0x0BD2,\n    0x0070, 0x0A82, 0x0070, 0x0AF2, 0x0070, 0x0B62,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0D99,\n    0x0070, 0x0932, 0x0070, 0x09A2, 0x0070, 0x0A12,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0070, 0x08C2,\n    0x0070, 0x0772, 0x0070, 0x07E2, 0x0070, 0x0852,\n};\n\nstatic const s16 anim_27_values[] = {\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0006, 0x0008,\n    0x000A, 0x000D, 0x0013, 0x0017, 0x0016, 0x000D, 0x0000, 0xFFF4,\n    0xFFF5, 0xFFF4, 0xFFDF, 0xFFC7, 0xFFC0, 0xFFD5, 0xFFF8, 0x0019,\n    0x002B, 0x002D, 0x002C, 0x0028, 0x0022, 0x001B, 0x0013, 0x000B,\n    0x0004, 0x0000, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AB,\n    0x00AB, 0x00AB, 0x00AB, 0x00AC, 0x00AC, 0x00AD, 0x00AD, 0x00AD,\n    0x00AE, 0x00AE, 0x00AF, 0x00AF, 0x00B0, 0x00B0, 0x00B1, 0x00B1,\n    0x00B2, 0x00B2, 0x00B3, 0x00B3, 0x00B4, 0x00B4, 0x00B4, 0x00B5,\n    0x00B5, 0x00B6, 0x00B6, 0x00B7, 0x00B7, 0x00B7, 0x00B8, 0x00B8,\n    0x00B8, 0x00B8, 0x00B8, 0x00B9, 0x00B9, 0x00B9, 0x00B9, 0x00B9,\n    0x00B9, 0x00B9, 0x00B8, 0x00B5, 0x00AE, 0x00A6, 0x00A0, 0x009E,\n    0x009D, 0x009C, 0x009C, 0x009C, 0x009B, 0x009B, 0x009B, 0x009C,\n    0x0099, 0x009B, 0x00A5, 0x00B0, 0x00BC, 0x00C8, 0x00D5, 0x00DF,\n    0x00E8, 0x00EE, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F4, 0x00F3,\n    0x00EF, 0x00E9, 0x00E5, 0x00E2, 0x00E0, 0x00DE, 0x00DD, 0x00DB,\n    0x00D5, 0x00CD, 0x00C3, 0x00B8, 0x00AC, 0x00A1, 0x0095, 0x008A,\n    0x0080, 0x0078, 0x0074, 0x0075, 0x0077, 0x0077, 0x0077, 0x0077,\n    0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077, 0x0077,\n    0x0077, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001,\n    0x0001, 0x0001, 0x0001, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0002, 0x0002, 0x0002, 0x0002, 0x0001, 0x0001, 0x0001,\n    0x0000, 0x0000, 0x0000, 0xFFFD, 0xFFF6, 0xFFEE, 0xFFE7, 0xFFE1,\n    0xFFDB, 0xFFD6, 0xFFD1, 0xFFCD, 0xFFCC, 0xFFCB, 0xFFCC, 0xFFCC,\n    0xFFCA, 0xFFCA, 0xFFD0, 0xFFD6, 0xFFDE, 0xFFE5, 0xFFEC, 0xFFF1,\n    0xFFF5, 0xFFF3, 0xFFED, 0xFFE7, 0xFFE5, 0xFFEB, 0xFFF5, 0x0000,\n    0x0007, 0x000D, 0x000D, 0x000B, 0x000B, 0x0010, 0x0018, 0x001D,\n    0x001B, 0x0012, 0x0005, 0xFFF7, 0xFFE7, 0xFFD6, 0xFFC7, 0xFFBA,\n    0xFFB1, 0xFFAC, 0xFFBD, 0xFFE3, 0x0000, 0x0007, 0x0003, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x3FFF, 0xF1BC, 0xF1BE, 0xF1C6, 0xF1D2, 0xF1E2, 0xF1F6,\n    0xF20E, 0xF228, 0xF246, 0xF266, 0xF288, 0xF2AC, 0xF2D1, 0xF2F8,\n    0xF31F, 0xF346, 0xF36E, 0xF395, 0xF3BC, 0xF3E2, 0xF406, 0xF429,\n    0xF449, 0xF469, 0xF48A, 0xF4AB, 0xF4CD, 0xF4F0, 0xF513, 0xF536,\n    0xF55A, 0xF57E, 0xF5A2, 0xF5C6, 0xF5E9, 0xF60D, 0xF631, 0xF654,\n    0xF677, 0xF699, 0xF6BB, 0xF6DC, 0xF6FC, 0xF71B, 0xF73A, 0xF758,\n    0xF774, 0xF78F, 0xF7A9, 0xF7C2, 0xF7D6, 0xF7E1, 0xF7E6, 0xF7E5,\n    0xF7E0, 0xF7D9, 0xF7D1, 0xF7CA, 0xF7C4, 0xF7C2, 0xF7C2, 0xF7C2,\n    0xF7C2, 0xF7C2, 0xF7C2, 0xF7C2, 0xF7C2, 0xF7C2, 0xF7C2, 0xF7C2,\n    0xF7C2, 0xF7C2, 0xF7C2, 0xF7C2, 0xF7C2, 0xF7C2, 0xF7C2, 0xF7C2,\n    0xF7C2, 0xF7C2, 0xF7C2, 0xF7C2, 0xF7C2, 0xF7C2, 0xF7C2, 0xF7C2,\n    0xF7C2, 0xF7C2, 0xF7C2, 0xF7C2, 0xF7C2, 0xF7C2, 0xF7C2, 0xF7C2,\n    0xF7C2, 0xF7C2, 0xF7C2, 0xF7C2, 0xF7C2, 0xF7C2, 0xF7C2, 0xF7C2,\n    0xF7C2, 0xF7C2, 0xF7C2, 0xF7C2, 0xF7C2, 0xF7C2, 0xF7C2, 0xF7C2,\n    0xF7C2, 0xF7C2, 0xF6B4, 0xF6B3, 0xF6AF, 0xF6AA, 0xF6A3, 0xF69A,\n    0xF68F, 0xF684, 0xF676, 0xF668, 0xF659, 0xF649, 0xF638, 0xF627,\n    0xF616, 0xF604, 0xF5F3, 0xF5E1, 0xF5D0, 0xF5BF, 0xF5AF, 0xF5A0,\n    0xF591, 0xF583, 0xF575, 0xF566, 0xF557, 0xF547, 0xF538, 0xF528,\n    0xF518, 0xF508, 0xF4F8, 0xF4E8, 0xF4D8, 0xF4C9, 0xF4B9, 0xF4A9,\n    0xF49A, 0xF48A, 0xF47C, 0xF46D, 0xF45E, 0xF450, 0xF443, 0xF436,\n    0xF429, 0xF41D, 0xF411, 0xF406, 0xF3FE, 0xF3F9, 0xF3F7, 0xF3F7,\n    0xF3F9, 0xF3FC, 0xF400, 0xF403, 0xF405, 0xF406, 0xF406, 0xF406,\n    0xF406, 0xF406, 0xF406, 0xF406, 0xF406, 0xF406, 0xF406, 0xF406,\n    0xF406, 0xF406, 0xF406, 0xF406, 0xF406, 0xF406, 0xF406, 0xF406,\n    0xF406, 0xF406, 0xF406, 0xF406, 0xF406, 0xF406, 0xF406, 0xF406,\n    0xF406, 0xF406, 0xF406, 0xF406, 0xF406, 0xF406, 0xF406, 0xF406,\n    0xF406, 0xF406, 0xF406, 0xF406, 0xF406, 0xF406, 0xF406, 0xF406,\n    0xF406, 0xF406, 0xF406, 0xF406, 0xF406, 0xF406, 0xF406, 0xF406,\n    0xF406, 0xF406, 0xD5DF, 0xD5DF, 0xD5DD, 0xD5DA, 0xD5D7, 0xD5D2,\n    0xD5CD, 0xD5C7, 0xD5C0, 0xD5B9, 0xD5B1, 0xD5A9, 0xD5A0, 0xD598,\n    0xD58F, 0xD586, 0xD57D, 0xD574, 0xD56B, 0xD563, 0xD55B, 0xD553,\n    0xD54C, 0xD544, 0xD53D, 0xD535, 0xD52E, 0xD526, 0xD51E, 0xD516,\n    0xD50E, 0xD506, 0xD4FE, 0xD4F6, 0xD4EE, 0xD4E6, 0xD4DE, 0xD4D6,\n    0xD4CE, 0xD4C6, 0xD4BE, 0xD4B7, 0xD4B0, 0xD4A9, 0xD4A2, 0xD49B,\n    0xD494, 0xD48E, 0xD488, 0xD483, 0xD47E, 0xD47C, 0xD47B, 0xD47B,\n    0xD47C, 0xD47E, 0xD47F, 0xD481, 0xD482, 0xD483, 0xD483, 0xD483,\n    0xD483, 0xD483, 0xD483, 0xD483, 0xD483, 0xD483, 0xD483, 0xD483,\n    0xD483, 0xD483, 0xD483, 0xD483, 0xD483, 0xD483, 0xD483, 0xD483,\n    0xD483, 0xD483, 0xD483, 0xD483, 0xD483, 0xD483, 0xD483, 0xD483,\n    0xD483, 0xD483, 0xD483, 0xD483, 0xD483, 0xD483, 0xD483, 0xD483,\n    0xD483, 0xD483, 0xD483, 0xD483, 0xD483, 0xD483, 0xD483, 0xD483,\n    0xD483, 0xD483, 0xD483, 0xD483, 0xD483, 0xD483, 0xD483, 0xD483,\n    0xD483, 0xD483, 0xD47F, 0xD47B, 0xD46F, 0xD45D, 0xD444, 0xD425,\n    0xD401, 0xD3D8, 0xD3AC, 0xD37C, 0xD349, 0xD315, 0xD2D6, 0xD288,\n    0xD22E, 0xD1CE, 0xD16C, 0xD10B, 0xD0B1, 0xD063, 0xD023, 0xCFF7,\n    0xCFE4, 0xD076, 0xD1AC, 0xD2B0, 0xD2AE, 0xD073, 0xCD22, 0xCB19,\n    0xCBA4, 0xCD7F, 0xCF73, 0xD04A, 0xCF80, 0xCDD7, 0xCC1A, 0xCB13,\n    0xCB86, 0xCCCC, 0xCD83, 0xCCF9, 0xCBDB, 0xCAA4, 0xC9CB, 0xC977,\n    0xC966, 0xC975, 0xC97F, 0xC97A, 0xC978, 0xC977, 0xC976, 0xC977,\n    0xC978, 0xC97A, 0xC97C, 0xC97D, 0xC97E, 0xC97F, 0xC97F, 0xC97F,\n    0xC97F, 0xC8B0, 0xC97F, 0xCCF2, 0xD0C7, 0xD4E5, 0xD935, 0xDD9D,\n    0xE205, 0xE654, 0xEA72, 0xEE45, 0xF1B6, 0xF4AB, 0xF70D, 0xF8C2,\n    0xFA00, 0xFB0F, 0xFBF2, 0xFCAB, 0xFD3D, 0xFDAA, 0xFDF4, 0xFE1E,\n    0xFE2B, 0xFE1E, 0xFDF7, 0xFDBA, 0xFD6A, 0xFD09, 0xFC99, 0xFC1D,\n    0xFB98, 0xFB0B, 0xFA7A, 0xF9E6, 0xF952, 0xF8C2, 0xF332, 0xEB50,\n    0xEB50, 0xEB50, 0xEB50, 0xEB50, 0xEB50, 0xEB50, 0xEB50, 0xEB50,\n    0xEB50, 0xEB50, 0xF6FF, 0xF700, 0xF702, 0xF706, 0xF70A, 0xF710,\n    0xF717, 0xF71E, 0xF727, 0xF730, 0xF739, 0xF744, 0xF74E, 0xF759,\n    0xF764, 0xF76F, 0xF77B, 0xF786, 0xF791, 0xF79B, 0xF7A6, 0xF7B0,\n    0xF7B9, 0xF79E, 0xF741, 0xF6AA, 0xF5E2, 0xF4F0, 0xF3DD, 0xF2B2,\n    0xF176, 0xF032, 0xEEED, 0xEDB1, 0xEC86, 0xEB74, 0xEA82, 0xE9BA,\n    0xE924, 0xE8C7, 0xE8AD, 0xE8DD, 0xE960, 0xEA3D, 0xEB7E, 0xED2B,\n    0xEF4B, 0xF1E7, 0xF508, 0xF8B5, 0xFEC9, 0x089F, 0x1584, 0x24C5,\n    0x35AB, 0x4785, 0x599C, 0x6B3D, 0x7BB4, 0x8A4F, 0x978A, 0xA20B,\n    0xA653, 0x99E3, 0x8A4F, 0x83F5, 0x7D87, 0x771F, 0x70D0, 0x6AAF,\n    0x64D2, 0x5F4E, 0x5A38, 0x55A5, 0x51AC, 0x4E60, 0x4BD9, 0x4A2A,\n    0x4921, 0x4878, 0x4828, 0x482B, 0x4877, 0x4907, 0x49D4, 0x4AD5,\n    0x4C03, 0x4D59, 0x4ECD, 0x5059, 0x51F6, 0x539C, 0x5545, 0x56E8,\n    0x587F, 0x5A03, 0x5B6C, 0x5CB3, 0x5DD1, 0x5EBE, 0x5F1C, 0x5EED,\n    0x5EBE, 0x5EBE, 0x5EBE, 0x5EBE, 0x5EBE, 0x5EBE, 0x5EBE, 0x5EBE,\n    0x5EBE, 0x5EBE, 0xE0ED, 0xE0EE, 0xE0F1, 0xE0F5, 0xE0FB, 0xE103,\n    0xE10B, 0xE115, 0xE120, 0xE12B, 0xE138, 0xE145, 0xE152, 0xE160,\n    0xE16F, 0xE17D, 0xE18C, 0xE19A, 0xE1A8, 0xE1B6, 0xE1C3, 0xE1CF,\n    0xE1DB, 0xE1F1, 0xE21B, 0xE255, 0xE29E, 0xE2F4, 0xE353, 0xE3B9,\n    0xE425, 0xE493, 0xE500, 0xE56C, 0xE5D2, 0xE632, 0xE688, 0xE6D1,\n    0xE70C, 0xE736, 0xE74D, 0xE74E, 0xE736, 0xE704, 0xE6B5, 0xE646,\n    0xE5B5, 0xE500, 0xE424, 0xE31F, 0xE159, 0xDE65, 0xDA81, 0xD5E9,\n    0xD0DB, 0xCB93, 0xC64F, 0xC14C, 0xBCC7, 0xB8FC, 0xB735, 0xB767,\n    0xB7DB, 0xB8D5, 0xB8FC, 0xB734, 0xB530, 0xB2FF, 0xB0AE, 0xAE4D,\n    0xABEA, 0xA994, 0xA758, 0xA545, 0xA36B, 0xA1D7, 0xA097, 0x9FBB,\n    0x9F26, 0x9EB3, 0x9E5E, 0x9E25, 0x9E05, 0x9DFE, 0x9E0A, 0x9E2A,\n    0x9E59, 0x9E96, 0x9EDD, 0x9F2E, 0x9F84, 0x9FDF, 0xA03A, 0xA095,\n    0xA0EC, 0xA13D, 0xA186, 0xA1C4, 0xA1F4, 0xA215, 0xA21F, 0xA21A,\n    0xA215, 0xA215, 0xA215, 0xA215, 0xA215, 0xA215, 0xA215, 0xA215,\n    0xA215, 0xA215, 0xB794, 0xB790, 0xB783, 0xB770, 0xB755, 0xB735,\n    0xB70E, 0xB6E3, 0xB6B3, 0xB67E, 0xB647, 0xB60C, 0xB5CF, 0xB591,\n    0xB551, 0xB510, 0xB4D0, 0xB490, 0xB451, 0xB413, 0xB3D8, 0xB39F,\n    0xB36A, 0xB357, 0xB37F, 0xB3DA, 0xB462, 0xB50E, 0xB5D8, 0xB6B8,\n    0xB7A6, 0xB89C, 0xB992, 0xBA80, 0xBB5F, 0xBC27, 0xBCD2, 0xBD58,\n    0xBDB1, 0xBDD6, 0xBDC0, 0xBD67, 0xBCC4, 0xBBCF, 0xBA81, 0xB8D3,\n    0xB6BC, 0xB437, 0xB13B, 0xADC1, 0xA825, 0x9F31, 0x9382, 0x85B8,\n    0x766E, 0x6647, 0x55E0, 0x45D5, 0x36C6, 0x2951, 0x1C5F, 0x115F,\n    0x0CBA, 0x1963, 0x2951, 0x2FE5, 0x3680, 0x3D11, 0x4384, 0x49C7,\n    0x4FC9, 0x5576, 0x5ABC, 0x5F88, 0x63C9, 0x676C, 0x6A5E, 0x6C8D,\n    0x6E28, 0x6F6C, 0x7060, 0x710B, 0x7173, 0x719E, 0x7192, 0x7156,\n    0x70F1, 0x7068, 0x6FC2, 0x6F05, 0x6E38, 0x6D61, 0x6C86, 0x6BAE,\n    0x6ADF, 0x6A1F, 0x6975, 0x68E7, 0x687C, 0x6839, 0x6825, 0x682F,\n    0x6839, 0x6839, 0x6839, 0x6839, 0x6839, 0x6839, 0x6839, 0x6839,\n    0x6839, 0x6839, 0x183D, 0x183A, 0x1831, 0x1823, 0x1811, 0x17F9,\n    0x17DE, 0x17BE, 0x179C, 0x1776, 0x174E, 0x1723, 0x16F6, 0x16C8,\n    0x1698, 0x1668, 0x1637, 0x1606, 0x15D5, 0x15A5, 0x1575, 0x1548,\n    0x151B, 0x14F1, 0x14CA, 0x14A5, 0x1483, 0x1465, 0x144B, 0x1435,\n    0x1424, 0x1418, 0x1411, 0x1410, 0x1415, 0x1421, 0x1434, 0x144D,\n    0x146F, 0x1498, 0x14CA, 0x1504, 0x1548, 0x1594, 0x15EB, 0x164C,\n    0x16B7, 0x172E, 0x17AF, 0x183D, 0x196E, 0x1BB5, 0x1ED8, 0x229F,\n    0x26D1, 0x2B32, 0x2F8C, 0x33A4, 0x3741, 0x3A2B, 0x3ACE, 0x3963,\n    0x385F, 0x3845, 0x3A2B, 0x3F4A, 0x45E0, 0x4CC1, 0x52C0, 0x56B1,\n    0x5768, 0x551E, 0x50FE, 0x4B47, 0x443A, 0x3C15, 0x3318, 0x2983,\n    0x1D39, 0x0D76, 0xFC7A, 0xEC86, 0xDFD9, 0xD8B5, 0xDABE, 0xE4C4,\n    0xF1CB, 0xFCD8, 0x00EF, 0xFE38, 0xF8B4, 0xF133, 0xE885, 0xDF7A,\n    0xD6E1, 0xCF8A, 0xCA45, 0xC784, 0xC6BF, 0xC74C, 0xC882, 0xC9B8,\n    0xCA45, 0xCA45, 0xCA45, 0xCA45, 0xCA45, 0xCA45, 0xCA45, 0xCA45,\n    0xCA45, 0xCA45, 0x03EC, 0x03EE, 0x03F6, 0x0402, 0x0413, 0x0427,\n    0x0440, 0x045B, 0x047A, 0x049C, 0x04BF, 0x04E5, 0x050D, 0x0536,\n    0x0560, 0x058B, 0x05B6, 0x05E2, 0x060D, 0x0638, 0x0662, 0x068A,\n    0x06B1, 0x06D7, 0x06FA, 0x071A, 0x0738, 0x0753, 0x076A, 0x077D,\n    0x078C, 0x0797, 0x079D, 0x079E, 0x0799, 0x078F, 0x077F, 0x0768,\n    0x074A, 0x0726, 0x06FA, 0x06C6, 0x068A, 0x0646, 0x05F9, 0x05A4,\n    0x0544, 0x04DC, 0x0469, 0x03EC, 0x02E3, 0x00EB, 0xFE36, 0xFAF1,\n    0xF74B, 0xF374, 0xEF9C, 0xEBF1, 0xE8A3, 0xE5E1, 0xE479, 0xE466,\n    0xE49B, 0xE431, 0xE5E1, 0xEAF1, 0xF131, 0xF7C7, 0xFDDC, 0x0297,\n    0x0521, 0x052D, 0x0366, 0x006B, 0xFCDD, 0xF959, 0xF680, 0xF4F0,\n    0xF483, 0xF4AF, 0xF57B, 0xF6EF, 0xF913, 0xFBEF, 0x006E, 0x06B8,\n    0x0DAE, 0x142E, 0x1917, 0x1CBE, 0x2033, 0x2370, 0x266F, 0x292B,\n    0x2B9D, 0x2DC0, 0x2F8D, 0x30AF, 0x3100, 0x30C6, 0x3047, 0x2FC7,\n    0x2F8D, 0x2F8D, 0x2F8D, 0x2F8D, 0x2F8D, 0x2F8D, 0x2F8D, 0x2F8D,\n    0x2F8D, 0x2F8D, 0xCEFF, 0xCEF8, 0xCEE2, 0xCEBF, 0xCE91, 0xCE56,\n    0xCE12, 0xCDC4, 0xCD6D, 0xCD0F, 0xCCAA, 0xCC3F, 0xCBCF, 0xCB5B,\n    0xCAE5, 0xCA6C, 0xC9F1, 0xC977, 0xC8FD, 0xC885, 0xC80F, 0xC79C,\n    0xC72E, 0xC6C5, 0xC662, 0xC606, 0xC5B2, 0xC567, 0xC526, 0xC4F0,\n    0xC4C5, 0xC4A6, 0xC496, 0xC493, 0xC4A0, 0xC4BD, 0xC4EB, 0xC52C,\n    0xC57F, 0xC5E6, 0xC662, 0xC6F4, 0xC79C, 0xC85C, 0xC935, 0xCA27,\n    0xCB33, 0xCC5A, 0xCD9E, 0xCEFF, 0xD1EC, 0xD77A, 0xDF23, 0xE862,\n    0xF2AF, 0xFD85, 0x085C, 0x12B1, 0x1BFB, 0x23B6, 0x2778, 0x2759,\n    0x2696, 0x25AB, 0x23B6, 0x2212, 0x20EC, 0x1FBB, 0x1DF6, 0x1B13,\n    0x168A, 0x0F95, 0x0679, 0xFC3A, 0xF1D9, 0xE85A, 0xE0C1, 0xDC12,\n    0xDB50, 0xDDF9, 0xE2C4, 0xE869, 0xEDA2, 0xF126, 0xF39C, 0xF600,\n    0xF790, 0xF788, 0xF522, 0xF035, 0xE97C, 0xE18E, 0xD900, 0xD068,\n    0xC85E, 0xC177, 0xBC49, 0xB96D, 0xB8A0, 0xB932, 0xBA74, 0xBBB7,\n    0xBC49, 0xBC49, 0xBC49, 0xBC49, 0xBC49, 0xBC49, 0xBC49, 0xBC49,\n    0xBC49, 0xBC49, 0xD620, 0xD61C, 0xD612, 0xD601, 0xD5EA, 0xD5CD,\n    0xD5AB, 0xD584, 0xD559, 0xD52B, 0xD4F9, 0xD4C4, 0xD48D, 0xD454,\n    0xD419, 0xD3DD, 0xD3A1, 0xD364, 0xD328, 0xD2EC, 0xD2B2, 0xD27A,\n    0xD243, 0xD20F, 0xD1DE, 0xD1B1, 0xD187, 0xD162, 0xD142, 0xD127,\n    0xD112, 0xD103, 0xD0FB, 0xD0F9, 0xD100, 0xD10E, 0xD125, 0xD145,\n    0xD16E, 0xD1A1, 0xD1DE, 0xD226, 0xD27A, 0xD2D8, 0xD343, 0xD3BB,\n    0xD440, 0xD4D2, 0xD572, 0xD620, 0xD795, 0xDA5A, 0xDE2C, 0xE2C7,\n    0xE7E7, 0xED47, 0xF2A5, 0xF7BB, 0xFC45, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xFF4B, 0xFE82, 0xFDAB, 0xFCCA, 0xFBE5,\n    0xFAFF, 0xFA1E, 0xF945, 0xF87B, 0xF7C3, 0xF722, 0xF69E, 0xF639,\n    0xF71A, 0xF98B, 0xFC4B, 0xFE1B, 0xFDB8, 0xF9E4, 0xF127, 0xE434,\n    0xD50A, 0xC5A6, 0xB807, 0xAE2A, 0xA862, 0xA612, 0xA7CE, 0xAE2A,\n    0xC22B, 0xDF8D, 0xF2F7, 0xF882, 0xFA0F, 0xF8F3, 0xF683, 0xF413,\n    0xF2F7, 0xF2F7, 0xF2F7, 0xF2F7, 0xF2F7, 0xF2F7, 0xF2F7, 0xF2F7,\n    0xF2F7, 0xF2F7, 0x07FA, 0x0804, 0x0820, 0x084E, 0x088C, 0x08DA,\n    0x0936, 0x099E, 0x0A13, 0x0A92, 0x0B1B, 0x0BAD, 0x0C45, 0x0CE4,\n    0x0D88, 0x0E30, 0x0EDB, 0x0F88, 0x1035, 0x10E2, 0x118C, 0x1234,\n    0x12D9, 0x1378, 0x1410, 0x14A2, 0x152B, 0x15AA, 0x161F, 0x1687,\n    0x16E3, 0x1731, 0x176F, 0x179D, 0x17B9, 0x17C3, 0x1788, 0x16E3,\n    0x15E6, 0x14A2, 0x1329, 0x118C, 0x0FDE, 0x0E30, 0x0C94, 0x0B1B,\n    0x09D7, 0x08DA, 0x0835, 0x07FA, 0x0FAE, 0x211A, 0x33B4, 0x3EF4,\n    0x41C8, 0x4189, 0x3F48, 0x3C1A, 0x3911, 0x3741, 0x36EE, 0x3734,\n    0x3770, 0x38E3, 0x3741, 0x2FF5, 0x26E1, 0x1CB9, 0x1234, 0x06B4,\n    0xFA61, 0xEF17, 0xE2BC, 0xD757, 0xD4F4, 0xE447, 0xFCA6, 0x0C0B,\n    0x0E0E, 0x0BA6, 0x06E5, 0x01DF, 0xFEA5, 0xFF49, 0x06FC, 0x1473,\n    0x22FF, 0x2DF3, 0x30A4, 0x2B2D, 0x2197, 0x151C, 0x06F2, 0xF854,\n    0xEA76, 0xDE93, 0xD5E1, 0xD118, 0xCF73, 0xCFF4, 0xD19B, 0xD369,\n    0xD460, 0xD4B1, 0xD531, 0xD5D1, 0xD682, 0xD735, 0xD7DB, 0xD866,\n    0xD8C6, 0xD8EC, 0x2C9C, 0x2C93, 0x2C79, 0x2C4D, 0x2C13, 0x2BCA,\n    0x2B73, 0x2B11, 0x2AA3, 0x2A2B, 0x29AA, 0x2921, 0x2891, 0x27FB,\n    0x2761, 0x26C3, 0x2622, 0x257F, 0x24DC, 0x243A, 0x2399, 0x22FA,\n    0x2260, 0x21CA, 0x213A, 0x20B1, 0x2030, 0x1FB8, 0x1F4B, 0x1EE8,\n    0x1E92, 0x1E49, 0x1E0E, 0x1DE3, 0x1DC8, 0x1DBF, 0x1DF6, 0x1E92,\n    0x1F80, 0x20B1, 0x2214, 0x2399, 0x252E, 0x26C3, 0x2847, 0x29AA,\n    0x2ADB, 0x2BCA, 0x2C65, 0x2C9C, 0x2C62, 0x2BC5, 0x2AE1, 0x29CF,\n    0x288D, 0x2718, 0x258B, 0x2401, 0x2297, 0x2169, 0x20BF, 0x2097,\n    0x209D, 0x2064, 0x2169, 0x2423, 0x2762, 0x2B2F, 0x2F91, 0x3525,\n    0x3BA2, 0x41B7, 0x49E6, 0x51B6, 0x505A, 0x3B8F, 0x1D85, 0x0C1A,\n    0x0BBE, 0x10D5, 0x1929, 0x2281, 0x2AA7, 0x2F63, 0x2FF6, 0x2DFB,\n    0x2AC0, 0x2794, 0x25C5, 0x255B, 0x2561, 0x25B0, 0x261E, 0x2683,\n    0x26B5, 0x268C, 0x25DF, 0x2438, 0x2198, 0x1E8A, 0x1B96, 0x1949,\n    0x182B, 0x1831, 0x18D5, 0x19EE, 0x1B51, 0x1CD4, 0x1E4D, 0x1F93,\n    0x207A, 0x20D8, 0xD465, 0xD474, 0xD49D, 0xD4E1, 0xD53C, 0xD5AE,\n    0xD634, 0xD6CE, 0xD779, 0xD834, 0xD8FD, 0xD9D2, 0xDAB3, 0xDB9C,\n    0xDC8D, 0xDD83, 0xDE7E, 0xDF7B, 0xE079, 0xE177, 0xE271, 0xE368,\n    0xE459, 0xE542, 0xE622, 0xE6F8, 0xE7C1, 0xE87B, 0xE927, 0xE9C0,\n    0xEA47, 0xEAB9, 0xEB14, 0xEB57, 0xEB81, 0xEB8F, 0xEB39, 0xEA47,\n    0xE8D3, 0xE6F8, 0xE4CE, 0xE271, 0xDFFA, 0xDD83, 0xDB26, 0xD8FD,\n    0xD722, 0xD5AE, 0xD4BC, 0xD465, 0xD91F, 0xE3C0, 0xEEF8, 0xF576,\n    0xF688, 0xF58B, 0xF33D, 0xF05E, 0xEDAE, 0xEBED, 0xEB87, 0xEBE1,\n    0xEC2C, 0xEC1F, 0xEBED, 0xEB98, 0xEB33, 0xEACF, 0xEA7B, 0xEC47,\n    0xEE29, 0xEA08, 0xDBA3, 0xC729, 0xB32F, 0x9F46, 0x8BBB, 0x8036,\n    0x7C2F, 0x7A23, 0x7A33, 0x7C84, 0x813D, 0x887C, 0x9742, 0xAE0C,\n    0xC636, 0xD921, 0xE029, 0xDBC3, 0xD1D6, 0xC3EE, 0xB399, 0xA266,\n    0x91E0, 0x8395, 0x7911, 0x72D2, 0x6FAF, 0x6EC5, 0x6F30, 0x700D,\n    0x7076, 0x709D, 0x7134, 0x721C, 0x7337, 0x7466, 0x7589, 0x7682,\n    0x7732, 0x777A, 0x0000, 0x0000, 0xFFFE, 0xFFFB, 0xFFF6, 0xFFF0,\n    0xFFE9, 0xFFE1, 0xFFD8, 0xFFCD, 0xFFC2, 0xFFB6, 0xFFA8, 0xFF9A,\n    0xFF8B, 0xFF7B, 0xFF6A, 0xFF58, 0xFF46, 0xFF32, 0xFF1E, 0xFF0A,\n    0xFEF5, 0xFEDF, 0xFEC8, 0xFEB2, 0xFE9A, 0xFE82, 0xFE6A, 0xFE52,\n    0xFE39, 0xFE1F, 0xFE06, 0xFDEC, 0xFDD2, 0xFDB8, 0xFD9E, 0xFD83,\n    0xFD69, 0xFD4E, 0xFD34, 0xFD19, 0xFCFF, 0xFCE5, 0xFCCB, 0xFCB1,\n    0xFC97, 0xFC7E, 0xFC65, 0xFC4C, 0xFBF9, 0xFB6A, 0xFAF2, 0xFAE7,\n    0xFB59, 0xFC0E, 0xFCE6, 0xFDC3, 0xFE85, 0xFF0E, 0xFF2B, 0xFEEE,\n    0xFEA1, 0xFE8D, 0xFEFB, 0x00C6, 0x0378, 0x055D, 0x05BD, 0x0551,\n    0x048C, 0x036A, 0x01EF, 0x0095, 0xFFD7, 0xFF98, 0xFF6B, 0xFF4D,\n    0xFF3D, 0xFF39, 0xFF3D, 0xFF49, 0xFF59, 0xFF6C, 0xFF7F, 0xFF90,\n    0xFF9D, 0xFFA4, 0xFFA8, 0xFFAF, 0xFFB7, 0xFFC1, 0xFFCD, 0xFFD9,\n    0xFFE6, 0xFFF3, 0xFFFF, 0x000A, 0x0015, 0x001E, 0x0022, 0x0020,\n    0x001E, 0x001E, 0x001E, 0x001E, 0x001E, 0x001E, 0x001E, 0x001E,\n    0x001E, 0x001E, 0xFF30, 0xFF30, 0xFF2F, 0xFF2F, 0xFF2E, 0xFF2D,\n    0xFF2C, 0xFF2B, 0xFF2A, 0xFF28, 0xFF27, 0xFF25, 0xFF23, 0xFF22,\n    0xFF20, 0xFF1E, 0xFF1C, 0xFF1A, 0xFF17, 0xFF15, 0xFF13, 0xFF11,\n    0xFF0F, 0xFF0D, 0xFF0B, 0xFF09, 0xFF07, 0xFF06, 0xFF04, 0xFF02,\n    0xFF01, 0xFEFF, 0xFEFE, 0xFEFD, 0xFEFC, 0xFEFC, 0xFEFB, 0xFEFB,\n    0xFEFB, 0xFEFB, 0xFEFB, 0xFEFC, 0xFEFD, 0xFEFE, 0xFEFF, 0xFF01,\n    0xFF03, 0xFF05, 0xFF08, 0xFF0B, 0xFF31, 0xFF7E, 0xFFC4, 0xFFD6,\n    0xFFAB, 0xFF61, 0xFF08, 0xFEAB, 0xFE59, 0xFE20, 0xFE02, 0xFDF7,\n    0xFDFC, 0xFE0E, 0xFE2A, 0xFE9B, 0xFF2E, 0xFF26, 0xFDC0, 0xFBBE,\n    0xFAAB, 0xFB2E, 0xFC71, 0xFDC8, 0xFE89, 0xFEBC, 0xFEE0, 0xFEF7,\n    0xFF03, 0xFF06, 0xFF01, 0xFEF6, 0xFEE8, 0xFED8, 0xFEC8, 0xFEBB,\n    0xFEB1, 0xFEAE, 0xFEAD, 0xFEAC, 0xFEA9, 0xFEA6, 0xFEA2, 0xFE9E,\n    0xFE9A, 0xFE96, 0xFE92, 0xFE8E, 0xFE8A, 0xFE88, 0xFE86, 0xFE87,\n    0xFE88, 0xFE88, 0xFE88, 0xFE88, 0xFE88, 0xFE88, 0xFE88, 0xFE88,\n    0xFE88, 0xFE88, 0xC9D8, 0xC9DA, 0xC9DF, 0xC9E8, 0xC9F4, 0xCA03,\n    0xCA15, 0xCA29, 0xCA40, 0xCA59, 0xCA74, 0xCA91, 0xCAB0, 0xCAD0,\n    0xCAF1, 0xCB13, 0xCB37, 0xCB5B, 0xCB7F, 0xCBA4, 0xCBC8, 0xCBED,\n    0xCC11, 0xCC35, 0xCC58, 0xCC7B, 0xCC9C, 0xCCBC, 0xCCDA, 0xCCF7,\n    0xCD12, 0xCD2B, 0xCD42, 0xCD56, 0xCD68, 0xCD77, 0xCD83, 0xCD8B,\n    0xCD91, 0xCD92, 0xCD90, 0xCD8A, 0xCD80, 0xCD72, 0xCD5F, 0xCD47,\n    0xCD2A, 0xCD08, 0xCCE1, 0xCCB4, 0xCACA, 0xC6B9, 0xC279, 0xBFFF,\n    0xBF88, 0xBFD5, 0xC0A1, 0xC1A9, 0xC2AA, 0xC35E, 0xC3F7, 0xC4AA,\n    0xC53A, 0xC56A, 0xC500, 0xC2E7, 0xBF89, 0xBCE8, 0xBBBE, 0xBB4D,\n    0xBB5E, 0xBBFA, 0xBD03, 0xBE0C, 0xBEA4, 0xBEE1, 0xBF1C, 0xBF55,\n    0xBF8A, 0xBFB7, 0xBFDD, 0xBFF9, 0xC00A, 0xC00D, 0xC001, 0xBFE3,\n    0xBFB3, 0xBF6F, 0xBF0D, 0xBE88, 0xBDE8, 0xBD30, 0xBC67, 0xBB93,\n    0xBAB9, 0xB9DF, 0xB90A, 0xB840, 0xB788, 0xB6E5, 0xB6A3, 0xB6C4,\n    0xB6E5, 0xB6E5, 0xB6E5, 0xB6E5, 0xB6E5, 0xB6E5, 0xB6E5, 0xB6E5,\n    0xB6E5, 0xB6E5, 0x1E4A, 0x1E4D, 0x1E56, 0x1E66, 0x1E7B, 0x1E97,\n    0x1EB7, 0x1EDD, 0x1F08, 0x1F38, 0x1F6C, 0x1FA5, 0x1FE1, 0x2022,\n    0x2067, 0x20AE, 0x20FA, 0x2148, 0x2199, 0x21ED, 0x2243, 0x229B,\n    0x22F6, 0x2352, 0x23AF, 0x240E, 0x246F, 0x24D0, 0x2531, 0x2594,\n    0x25F6, 0x2658, 0x26BB, 0x271D, 0x277E, 0x27DE, 0x283E, 0x289C,\n    0x28F9, 0x2954, 0x29AD, 0x2A04, 0x2A58, 0x2AAA, 0x2AF9, 0x2B46,\n    0x2B8F, 0x2BD4, 0x2C16, 0x2C54, 0x2C83, 0x2C9B, 0x2CA0, 0x2C96,\n    0x2C82, 0x2C69, 0x2C4F, 0x2C37, 0x2C27, 0x2C24, 0x2C52, 0x2CAF,\n    0x2CFF, 0x2D07, 0x2C8C, 0x2A97, 0x279F, 0x2593, 0x25F3, 0x273C,\n    0x26D8, 0x2323, 0x1DBE, 0x18F9, 0x1722, 0x1798, 0x1830, 0x18EF,\n    0x19DC, 0x1AFC, 0x1C54, 0x1DEA, 0x1FC3, 0x21E6, 0x2457, 0x271D,\n    0x2A3C, 0x2DBA, 0x3416, 0x3E24, 0x496F, 0x5381, 0x59E3, 0x5CA6,\n    0x5DCB, 0x5DC3, 0x5CFC, 0x5BE9, 0x5AFA, 0x5A9E, 0x5AA7, 0x5AA2,\n    0x5A9E, 0x5A9E, 0x5A9E, 0x5A9E, 0x5A9E, 0x5A9E, 0x5A9E, 0x5A9E,\n    0x5A9E, 0x5A9E, 0x1B09, 0x1B07, 0x1B00, 0x1AF5, 0x1AE6, 0x1AD3,\n    0x1ABC, 0x1AA2, 0x1A83, 0x1A61, 0x1A3C, 0x1A13, 0x19E7, 0x19B7,\n    0x1984, 0x194F, 0x1916, 0x18DB, 0x189D, 0x185D, 0x181A, 0x17D4,\n    0x178D, 0x1743, 0x16F7, 0x16A9, 0x1659, 0x1608, 0x15B4, 0x1560,\n    0x150A, 0x14B2, 0x1459, 0x13FF, 0x13A4, 0x1349, 0x12EC, 0x128E,\n    0x1230, 0x11D2, 0x1173, 0x1114, 0x10B4, 0x1054, 0x0FF5, 0x0F95,\n    0x0F36, 0x0ED7, 0x0E78, 0x0E1A, 0x0D88, 0x0C9F, 0x0B7A, 0x0A31,\n    0x08E1, 0x07A3, 0x0691, 0x05C5, 0x055B, 0x056B, 0x0685, 0x08DF,\n    0x0C0B, 0x0F9F, 0x132E, 0x1730, 0x1BED, 0x20B3, 0x27AA, 0x2EAB,\n    0x2E88, 0x215D, 0x0D0E, 0xFC26, 0xF027, 0xE78D, 0xE84C, 0xF446,\n    0x067E, 0x1AA4, 0x2C64, 0x376B, 0x3B61, 0x3B91, 0x3915, 0x350B,\n    0x308E, 0x2CBB, 0x2970, 0x25DC, 0x220C, 0x1E10, 0x19F7, 0x15D1,\n    0x11AD, 0x0D9B, 0x09A8, 0x05E5, 0x0261, 0xFF2D, 0xFDD3, 0xFE80,\n    0xFF2D, 0xFF2D, 0xFF2D, 0xFF2D, 0xFF2D, 0xFF2D, 0xFF2D, 0xFF2D,\n    0xFF2D, 0xFF2D, 0x1144, 0x1144, 0x1142, 0x113F, 0x113B, 0x1136,\n    0x1130, 0x1128, 0x111F, 0x1115, 0x110A, 0x10FE, 0x10F0, 0x10E2,\n    0x10D2, 0x10C1, 0x10AE, 0x109A, 0x1086, 0x106F, 0x1058, 0x103F,\n    0x1025, 0x100A, 0x0FED, 0x0FCF, 0x0FB0, 0x0F90, 0x0F6E, 0x0F4B,\n    0x0F27, 0x0F01, 0x0EDA, 0x0EB1, 0x0E87, 0x0E5C, 0x0E30, 0x0E02,\n    0x0DD2, 0x0DA2, 0x0D70, 0x0D3C, 0x0D07, 0x0CD1, 0x0C99, 0x0C60,\n    0x0C26, 0x0BE9, 0x0BAC, 0x0B6D, 0x0AE8, 0x09EE, 0x08A5, 0x072F,\n    0x05B0, 0x044D, 0x0328, 0x0266, 0x022B, 0x0299, 0x04E7, 0x0961,\n    0x0ECC, 0x13F0, 0x1791, 0x18ED, 0x185D, 0x1650, 0x1100, 0x0A33,\n    0x07A4, 0x0CD2, 0x163E, 0x1F2A, 0x26A0, 0x2D95, 0x322C, 0x3449,\n    0x354D, 0x3596, 0x3580, 0x3568, 0x3584, 0x35A8, 0x359F, 0x3536,\n    0x3438, 0x3270, 0x3001, 0x2D3D, 0x2A34, 0x26F5, 0x2391, 0x2018,\n    0x1C9A, 0x1926, 0x15CD, 0x129E, 0x0FAA, 0x0D00, 0x0BE4, 0x0C72,\n    0x0D00, 0x0D00, 0x0D00, 0x0D00, 0x0D00, 0x0D00, 0x0D00, 0x0D00,\n    0x0D00, 0x0D00, 0xAC44, 0xAC41, 0xAC38, 0xAC2A, 0xAC16, 0xABFE,\n    0xABE0, 0xABBD, 0xAB96, 0xAB6A, 0xAB3A, 0xAB06, 0xAACE, 0xAA92,\n    0xAA53, 0xAA10, 0xA9CA, 0xA982, 0xA936, 0xA8E8, 0xA897, 0xA844,\n    0xA7F0, 0xA799, 0xA740, 0xA6E6, 0xA68B, 0xA62F, 0xA5D1, 0xA573,\n    0xA514, 0xA4B5, 0xA456, 0xA3F6, 0xA397, 0xA338, 0xA2DA, 0xA27C,\n    0xA220, 0xA1C4, 0xA16A, 0xA111, 0xA0B9, 0xA064, 0xA010, 0x9FBF,\n    0x9F70, 0x9F23, 0x9EDA, 0x9E93, 0x9E42, 0x9DE0, 0x9D76, 0x9D0A,\n    0x9CA7, 0x9C53, 0x9C19, 0x9BFF, 0x9C0F, 0x9C50, 0x9C88, 0x9CD8,\n    0x9DD2, 0xA006, 0xA408, 0xAD20, 0xBA2A, 0xC518, 0xCD05, 0xD2D6,\n    0xD323, 0xCA2A, 0xBBAD, 0xAF85, 0xA667, 0x9F9D, 0xA0E4, 0xABFB,\n    0xBC65, 0xCE80, 0xDEAD, 0xE94A, 0xEE42, 0xF05F, 0xF04D, 0xEEBA,\n    0xEC53, 0xE9C5, 0xE71C, 0xE3FF, 0xE083, 0xDCBC, 0xD8C1, 0xD4A6,\n    0xD080, 0xCC64, 0xC867, 0xC49E, 0xC11F, 0xBDFD, 0xBCB1, 0xBD57,\n    0xBDFD, 0xBDFD, 0xBDFD, 0xBDFD, 0xBDFD, 0xBDFD, 0xBDFD, 0xBDFD,\n    0xBDFD, 0xBDFD, 0x0000, 0x0000, 0x0001, 0x0004, 0x0007, 0x000B,\n    0x000F, 0x0015, 0x001A, 0x0021, 0x0027, 0x002E, 0x0036, 0x003E,\n    0x0046, 0x004E, 0x0056, 0x005E, 0x0066, 0x006E, 0x0076, 0x007E,\n    0x0085, 0x008C, 0x0093, 0x0099, 0x009E, 0x00A3, 0x00A8, 0x00AB,\n    0x00AE, 0x00B0, 0x00B1, 0x00B1, 0x00B1, 0x00AF, 0x00AC, 0x00A7,\n    0x00A2, 0x009B, 0x0093, 0x0089, 0x007E, 0x0071, 0x0062, 0x0052,\n    0x0040, 0x002D, 0x0017, 0x0000, 0xFF88, 0xFE81, 0xFD31, 0xFBE0,\n    0xFAD5, 0xFA10, 0xF962, 0xF8CB, 0xF84A, 0xF7DF, 0xF78D, 0xF77B,\n    0xF7DF, 0xF935, 0xFB21, 0xFD26, 0xFF5B, 0x0194, 0x04A6, 0x07C2,\n    0x084D, 0xFC04, 0xFC37, 0xFD82, 0xFF76, 0x01A1, 0x0395, 0x04E3,\n    0x0588, 0x05DF, 0x05FF, 0x0600, 0x05FB, 0x0607, 0x05C1, 0x05E1,\n    0x061A, 0x0693, 0x07B3, 0x0889, 0x0823, 0x0755, 0x06EB, 0x0746,\n    0x07FB, 0x08A5, 0x08DE, 0x0830, 0x06F6, 0x0601, 0x05C2, 0x05E1,\n    0x0601, 0x0601, 0x0601, 0x0601, 0x0601, 0x0601, 0x0601, 0x0601,\n    0x0601, 0x0601, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003,\n    0x0004, 0x0006, 0x0008, 0x000A, 0x000C, 0x000E, 0x0010, 0x0013,\n    0x0015, 0x0018, 0x001A, 0x001D, 0x001F, 0x0022, 0x0024, 0x0026,\n    0x0029, 0x002B, 0x002D, 0x002F, 0x0031, 0x0032, 0x0033, 0x0035,\n    0x0035, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0035, 0x0033,\n    0x0032, 0x0030, 0x002D, 0x002A, 0x0026, 0x0023, 0x001E, 0x0019,\n    0x0014, 0x000D, 0x0007, 0x0000, 0xFFD3, 0xFF72, 0xFEFE, 0xFE9A,\n    0xFE67, 0xFE74, 0xFEAA, 0xFEF4, 0xFF3C, 0xFF70, 0xFF7D, 0xFF75,\n    0xFF70, 0xFF5F, 0xFF84, 0x0052, 0x0151, 0x01AA, 0x0035, 0xFE1A,\n    0xFDF4, 0x0785, 0x0663, 0x0431, 0x0171, 0xFEA7, 0xFC54, 0xFAFA,\n    0xFABF, 0xFB42, 0xFC3B, 0xFD64, 0xFE77, 0xFF2C, 0xFE59, 0xFEE7,\n    0xFFBB, 0x007D, 0x00ED, 0x0100, 0x009F, 0x0013, 0xFFED, 0x0067,\n    0x0136, 0x0218, 0x02CD, 0x0337, 0x0373, 0x039C, 0x03AE, 0x03A5,\n    0x039C, 0x039C, 0x039C, 0x039C, 0x039C, 0x039C, 0x039C, 0x039C,\n    0x039C, 0x039C, 0xBF40, 0xBF42, 0xBF47, 0xBF50, 0xBF5B, 0xBF69,\n    0xBF7A, 0xBF8D, 0xBFA2, 0xBFB9, 0xBFD2, 0xBFED, 0xC008, 0xC025,\n    0xC042, 0xC060, 0xC07E, 0xC09D, 0xC0BB, 0xC0D9, 0xC0F7, 0xC114,\n    0xC130, 0xC14B, 0xC164, 0xC17C, 0xC192, 0xC1A6, 0xC1B8, 0xC1C8,\n    0xC1D4, 0xC1DE, 0xC1E5, 0xC1E8, 0xC1E8, 0xC1E4, 0xC1DC, 0xC1D0,\n    0xC1C0, 0xC1AB, 0xC191, 0xC172, 0xC14D, 0xC124, 0xC0F4, 0xC0BE,\n    0xC083, 0xC041, 0xBFF8, 0xBFA9, 0xBDAB, 0xB95B, 0xB440, 0xAFE0,\n    0xADC1, 0xAE8B, 0xB138, 0xB4CF, 0xB856, 0xBAD4, 0xBB8A, 0xBB27,\n    0xBAD4, 0xBA43, 0xBB3A, 0xBEE9, 0xC407, 0xCB17, 0xD5CC, 0xE284,\n    0xECC4, 0xE505, 0xE5E5, 0xE7EC, 0xEA63, 0xEC8F, 0xEDB8, 0xED25,\n    0xEA42, 0xE584, 0xDFC2, 0xD9D0, 0xD484, 0xD0B4, 0xD77C, 0xD3F8,\n    0xCE6A, 0xC8DB, 0xC4D0, 0xC273, 0xC1AA, 0xC192, 0xC0F8, 0xBF40,\n    0xBCF4, 0xBA9A, 0xB8B9, 0xB7A8, 0xB727, 0xB6D3, 0xB6A9, 0xB6BE,\n    0xB6D3, 0xB6D3, 0xB6D3, 0xB6D3, 0xB6D3, 0xB6D3, 0xB6D3, 0xB6D3,\n    0xB6D3, 0xB6D3, 0x2537, 0x2537, 0x253A, 0x253E, 0x2543, 0x254B,\n    0x2553, 0x255E, 0x256A, 0x2577, 0x2587, 0x2598, 0x25AA, 0x25BE,\n    0x25D4, 0x25EB, 0x2604, 0x261F, 0x263B, 0x2659, 0x2679, 0x269A,\n    0x26BD, 0x26E2, 0x2708, 0x2731, 0x275A, 0x2786, 0x27B3, 0x27E1,\n    0x2812, 0x2844, 0x2878, 0x28AE, 0x28E5, 0x291E, 0x2959, 0x2995,\n    0x29D3, 0x2A13, 0x2A55, 0x2A98, 0x2ADD, 0x2B24, 0x2B6D, 0x2BB7,\n    0x2C03, 0x2C51, 0x2CA1, 0x2CF2, 0x2E79, 0x317A, 0x348A, 0x3641,\n    0x3671, 0x3602, 0x3530, 0x3434, 0x3349, 0x32A9, 0x3294, 0x32C3,\n    0x32A9, 0x3255, 0x309F, 0x2D4A, 0x29BA, 0x25F6, 0x2208, 0x1DF8,\n    0x19CE, 0x13A5, 0x1185, 0x0F5A, 0x0D6C, 0x0C06, 0x0B70, 0x0BF4,\n    0x0E09, 0x118C, 0x15E0, 0x1A6A, 0x1E8C, 0x21AA, 0x1E9D, 0x2338,\n    0x2932, 0x2BF5, 0x246F, 0x1D00, 0x1F7C, 0x2532, 0x2AEE, 0x2FD5,\n    0x350F, 0x3A6A, 0x3FB7, 0x44C6, 0x4967, 0x4D69, 0x4F07, 0x4E38,\n    0x4D69, 0x4D69, 0x4D69, 0x4D69, 0x4D69, 0x4D69, 0x4D69, 0x4D69,\n    0x4D69, 0x4D69, 0xD64A, 0xD650, 0xD663, 0xD681, 0xD6AB, 0xD6DF,\n    0xD71E, 0xD766, 0xD7B8, 0xD813, 0xD877, 0xD8E2, 0xD955, 0xD9D0,\n    0xDA51, 0xDAD8, 0xDB65, 0xDBF8, 0xDC8F, 0xDD2B, 0xDDCA, 0xDE6D,\n    0xDF13, 0xDFBC, 0xE067, 0xE114, 0xE1C1, 0xE270, 0xE31E, 0xE3CD,\n    0xE47B, 0xE528, 0xE5D3, 0xE67C, 0xE723, 0xE7C7, 0xE867, 0xE904,\n    0xE99C, 0xEA2F, 0xEABE, 0xEB46, 0xEBC9, 0xEC45, 0xECBA, 0xED27,\n    0xED8C, 0xEDE9, 0xEE3D, 0xEE88, 0xEDA6, 0xEB17, 0xE7CF, 0xE4C2,\n    0xE1FA, 0xDEFE, 0xDBF7, 0xD912, 0xD67A, 0xD459, 0xD351, 0xD382,\n    0xD459, 0xDB0C, 0xE555, 0xEEEE, 0xF8B0, 0xFE79, 0xFD04, 0xF79D,\n    0xF3FA, 0xFB8F, 0xF6DC, 0xF107, 0xEA93, 0xE405, 0xDDE2, 0xD8AE,\n    0xD49B, 0xD148, 0xCE5E, 0xCB86, 0xC868, 0xC460, 0xBA86, 0xB646,\n    0xB2F2, 0xB19E, 0xB4E4, 0xBAA8, 0xBFF5, 0xC5AC, 0xCB92, 0xD1CC,\n    0xD87A, 0xDF5C, 0xE630, 0xECB7, 0xF2AF, 0xF7D7, 0xF9EA, 0xF8E1,\n    0xF7D7, 0xF7D7, 0xF7D7, 0xF7D7, 0xF7D7, 0xF7D7, 0xF7D7, 0xF7D7,\n    0xF7D7, 0xF7D7, 0xEC41, 0xEC44, 0xEC4C, 0xEC5A, 0xEC6D, 0xEC85,\n    0xECA2, 0xECC3, 0xECE9, 0xED12, 0xED40, 0xED70, 0xEDA4, 0xEDDC,\n    0xEE16, 0xEE52, 0xEE91, 0xEED2, 0xEF15, 0xEF5A, 0xEFA0, 0xEFE8,\n    0xF030, 0xF079, 0xF0C2, 0xF10C, 0xF156, 0xF1A0, 0xF1E9, 0xF232,\n    0xF279, 0xF2C0, 0xF305, 0xF349, 0xF38A, 0xF3CA, 0xF407, 0xF442,\n    0xF47A, 0xF4AF, 0xF4E1, 0xF510, 0xF53A, 0xF561, 0xF584, 0xF5A2,\n    0xF5BB, 0xF5D0, 0xF5E0, 0xF5EA, 0xF515, 0xF2FF, 0xF057, 0xEDCE,\n    0xEB69, 0xE8CF, 0xE629, 0xE39E, 0xE157, 0xDF79, 0xDEB4, 0xDF01,\n    0xDF79, 0xE11F, 0xE650, 0xF09B, 0xFCED, 0x0571, 0x06D9, 0x047E,\n    0x028C, 0x043D, 0x04CB, 0x0559, 0x05D6, 0x0630, 0x0655, 0x0633,\n    0x05AB, 0x04C1, 0x0394, 0x0242, 0x00ED, 0xFE57, 0xFFAF, 0xFD1D,\n    0xF9C8, 0xF785, 0xF973, 0xFAD8, 0xF6C8, 0xF0EC, 0xEC2D, 0xE904,\n    0xE5FD, 0xE31D, 0xE069, 0xDDE5, 0xDB95, 0xD97F, 0xD89F, 0xD90F,\n    0xD97F, 0xD97F, 0xD97F, 0xD97F, 0xD97F, 0xD97F, 0xD97F, 0xD97F,\n    0xD97F, 0xD97F, 0xB59E, 0xB59C, 0xB594, 0xB588, 0xB577, 0xB561,\n    0xB548, 0xB52A, 0xB509, 0xB4E4, 0xB4BB, 0xB48F, 0xB460, 0xB42E,\n    0xB3FA, 0xB3C3, 0xB389, 0xB34E, 0xB310, 0xB2D1, 0xB290, 0xB24E,\n    0xB20B, 0xB1C7, 0xB182, 0xB13C, 0xB0F6, 0xB0B0, 0xB069, 0xB023,\n    0xAFDD, 0xAF98, 0xAF53, 0xAF10, 0xAECD, 0xAE8C, 0xAE4C, 0xAE0E,\n    0xADD2, 0xAD98, 0xAD60, 0xAD2B, 0xACF8, 0xACC8, 0xAC9B, 0xAC71,\n    0xAC4B, 0xAC28, 0xAC0A, 0xABEF, 0xAC61, 0xAD9A, 0xAF1F, 0xB077,\n    0xB199, 0xB2C8, 0xB3F4, 0xB510, 0xB60E, 0xB6E0, 0xB757, 0xB754,\n    0xB6E0, 0xB179, 0xAA23, 0xA53C, 0xA0FA, 0x9F6F, 0xA180, 0xA649,\n    0xAD2A, 0xBA10, 0xBC6B, 0xBE0D, 0xBF1B, 0xBFBA, 0xC010, 0xC042,\n    0xC015, 0xBF5C, 0xBE4B, 0xBD1B, 0xBC00, 0xBA4C, 0xBC30, 0xC00B,\n    0xC452, 0xC6D4, 0xC492, 0xC003, 0xBC4B, 0xB84D, 0xB3A1, 0xAE1E,\n    0xA80C, 0xA1B1, 0x9B52, 0x9534, 0x8F9D, 0x8AD3, 0x88E9, 0x89DE,\n    0x8AD3, 0x8AD3, 0x8AD3, 0x8AD3, 0x8AD3, 0x8AD3, 0x8AD3, 0x8AD3,\n    0x8AD3, 0x8AD3, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001,\n    0x4171, 0xBF5F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0047,\n    0x00D5, 0x013F, 0x011C, 0x0000, 0xFDE7, 0xFB34, 0xF815, 0xF4BA,\n    0xF152, 0xEE0D, 0xEB18, 0xE8A3, 0xE6DE, 0xE5F6, 0xE526, 0xE410,\n    0xE385, 0xE30D, 0xE5F6, 0xEDDC, 0xF75B, 0x0177, 0x0B35, 0x1398,\n    0x19A1, 0x19DF, 0x14AE, 0x0EC3, 0x08F9, 0x022F, 0xFC2B, 0xF8AB,\n    0xF7E4, 0xF895, 0xFA55, 0xFCBD, 0xFF62, 0x025F, 0x061E, 0x0A43,\n    0x0E6E, 0x1240, 0x1558, 0x17C7, 0x19DC, 0x1B97, 0x1CF8, 0x1E00,\n    0x1EAE, 0x1DF0, 0x1ADE, 0x15B9, 0x0F14, 0x07F3, 0xFD9E, 0xEF62,\n    0xEE0C, 0xED5C, 0xED34, 0xED75, 0xEE01, 0xEEB9, 0xEF7E, 0xF033,\n    0xF0B9, 0xF0F2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFE1,\n    0xFFA3, 0xFF74, 0xFF84, 0x0000, 0x00EC, 0x021D, 0x037D, 0x04F8,\n    0x0678, 0x07E9, 0x0935, 0x0A48, 0x0B0D, 0x0B6E, 0x0B7F, 0x0B76,\n    0x0B6E, 0x0C00, 0x0B6E, 0x08BE, 0x0579, 0x01F4, 0xFE81, 0xFB74,\n    0xF920, 0xF82B, 0xF8CD, 0xFAB9, 0xFE88, 0x03B6, 0x0852, 0x0A66,\n    0x0975, 0x06D3, 0x0345, 0xFF91, 0xFC7A, 0xFA1A, 0xF7C3, 0xF58A,\n    0xF387, 0xF1D1, 0xF081, 0xEF6D, 0xEE7A, 0xEDD2, 0xEDA0, 0xEE0F,\n    0xEF4C, 0xF61D, 0xFE08, 0xFF3C, 0xFED8, 0xFFCC, 0x00DF, 0x017F,\n    0x01A9, 0x01C2, 0x01CC, 0x01CB, 0x01C1, 0x01B2, 0x01A1, 0x0191,\n    0x0184, 0x017F, 0xEDB7, 0xEE8D, 0xF0A3, 0xF358, 0xF60B, 0xF81B,\n    0xF8E7, 0xF8C1, 0xF86A, 0xF7E8, 0xF741, 0xF67A, 0xF59B, 0xF4AA,\n    0xF3AB, 0xF2A5, 0xF19E, 0xF09D, 0xEFA6, 0xEEC1, 0xEDF3, 0xED42,\n    0xECB4, 0xECD5, 0xEDBF, 0xEECB, 0xEF53, 0xECC8, 0xE8B6, 0xE831,\n    0xE961, 0xEB0F, 0xEC84, 0xED09, 0xEBFC, 0xE9FE, 0xE814, 0xE744,\n    0xE7CE, 0xE8EE, 0xE9E8, 0xEA05, 0xE922, 0xE7F4, 0xE745, 0xE718,\n    0xE707, 0xE72A, 0xE799, 0xE86B, 0xE9A5, 0xEB2C, 0xECE8, 0xEEC0,\n    0xF09E, 0xF269, 0xF408, 0xF565, 0xF665, 0xF6F3, 0xF714, 0xF703,\n    0xF6F3, 0xF69D, 0xF6F3, 0xF83C, 0xF986, 0xFAF6, 0xFCB1, 0xFEDE,\n    0x01A1, 0x0724, 0x0E6D, 0x12EE, 0x12C5, 0x1065, 0x0DC2, 0x0CD2,\n    0x0DE5, 0x0FC3, 0x1218, 0x1490, 0x16D3, 0x188D, 0x1A04, 0x1B73,\n    0x1C77, 0x1CAB, 0x1BAC, 0x1969, 0x163F, 0x126E, 0x0E36, 0x09D8,\n    0x0593, 0xFFD2, 0xFA98, 0xF93B, 0xF947, 0xF92A, 0xF93C, 0xF94C,\n    0xF94C, 0xF94C, 0xF94C, 0xF94C, 0xF94C, 0xF94C, 0xF94C, 0xF94C,\n    0xF94C, 0xF94C, 0x0000, 0x0000, 0x0003, 0x0006, 0x000C, 0x0012,\n    0x0019, 0x0022, 0x002C, 0x0036, 0x0041, 0x004D, 0x0059, 0x0066,\n    0x0073, 0x0080, 0x008D, 0x009B, 0x00A8, 0x00B5, 0x00C2, 0x00CF,\n    0x00DB, 0x00E6, 0x00F1, 0x00FB, 0x0104, 0x010D, 0x0114, 0x011A,\n    0x011E, 0x0122, 0x0124, 0x0124, 0x0122, 0x011F, 0x011A, 0x0113,\n    0x010A, 0x00FF, 0x00F1, 0x00E1, 0x00CF, 0x00BA, 0x00A2, 0x0087,\n    0x006A, 0x004A, 0x0026, 0x0000, 0xFFA1, 0xFEE2, 0xFDDB, 0xFCA5,\n    0xFB58, 0xFA0B, 0xF8D6, 0xF7D1, 0xF714, 0xF6B7, 0xF631, 0xF55F,\n    0xF4F2, 0xF521, 0xF6B7, 0xFA1E, 0xFE53, 0x02BD, 0x06C8, 0x09DA,\n    0x0B5C, 0x0B28, 0x09BB, 0x0778, 0x04BF, 0x01F2, 0xFF73, 0xFDA2,\n    0xFC66, 0xFB66, 0xFAA3, 0xFA1F, 0xF9DB, 0xF9D8, 0xFA4E, 0xFB5D,\n    0xFCEA, 0xFED7, 0x021E, 0x0623, 0x0860, 0x086E, 0x07BF, 0x069F,\n    0x0558, 0x0433, 0x037D, 0x037D, 0x0480, 0x099E, 0x1275, 0x1A19,\n    0x1A19, 0x1A19, 0x1A19, 0x1A19, 0x1A19, 0x1A19, 0x1A19, 0x1A19,\n    0x1A19, 0x1A19, 0x0000, 0xFFFF, 0xFFFA, 0xFFF3, 0xFFE9, 0xFFDD,\n    0xFFCF, 0xFFBF, 0xFFAD, 0xFF99, 0xFF84, 0xFF6D, 0xFF56, 0xFF3E,\n    0xFF25, 0xFF0C, 0xFEF2, 0xFED9, 0xFEBF, 0xFEA6, 0xFE8D, 0xFE75,\n    0xFE5E, 0xFE48, 0xFE34, 0xFE21, 0xFE0F, 0xFDFF, 0xFDF2, 0xFDE6,\n    0xFDDD, 0xFDD7, 0xFDD4, 0xFDD3, 0xFDD6, 0xFDDC, 0xFDE5, 0xFDF3,\n    0xFE04, 0xFE1A, 0xFE34, 0xFE52, 0xFE75, 0xFE9E, 0xFECB, 0xFEFD,\n    0xFF35, 0xFF73, 0xFFB7, 0x0000, 0x00B5, 0x021E, 0x040E, 0x0659,\n    0x08D0, 0x0B49, 0x0D95, 0x0F89, 0x10F8, 0x11B4, 0x11B9, 0x116A,\n    0x1137, 0x125E, 0x11B4, 0x0D15, 0x071A, 0x00B0, 0xFAC8, 0xF64D,\n    0xF42F, 0xF4C5, 0xF753, 0xFB29, 0xFF97, 0x03EC, 0x077A, 0x0990,\n    0x09E2, 0x08EE, 0x073B, 0x054C, 0x03A6, 0x02CE, 0x036C, 0x050F,\n    0x0695, 0x06DA, 0x0445, 0x0022, 0xFDAB, 0xFD6E, 0xFDB7, 0xFE5A,\n    0xFF2A, 0xFFFB, 0x00A0, 0x00ED, 0x00B6, 0xFEAB, 0xFAFF, 0xF7D2,\n    0xF7D2, 0xF7D2, 0xF7D2, 0xF7D2, 0xF7D2, 0xF7D2, 0xF7D2, 0xF7D2,\n    0xF7D2, 0xF7D2, 0x0408, 0x0407, 0x0402, 0x03F9, 0x03EE, 0x03E0,\n    0x03CE, 0x03BB, 0x03A4, 0x038B, 0x0370, 0x0352, 0x0332, 0x0310,\n    0x02ED, 0x02C7, 0x02A0, 0x0277, 0x024D, 0x0222, 0x01F5, 0x01C7,\n    0x0199, 0x0169, 0x0139, 0x0108, 0x00D7, 0x00A5, 0x0073, 0x0041,\n    0x000F, 0xFFDF, 0xFFAD, 0xFF7C, 0xFF4B, 0xFF1B, 0xFEEB, 0xFEBD,\n    0xFE8F, 0xFE63, 0xFE37, 0xFE0D, 0xFDE5, 0xFDBE, 0xFD98, 0xFD3A,\n    0xFC7C, 0xFBE0, 0xFBEA, 0xFD1C, 0xFF78, 0x0283, 0x0609, 0x09D4,\n    0x0DAD, 0x115F, 0x14B4, 0x1777, 0x1972, 0x1A6F, 0x1A89, 0x1A47,\n    0x1A19, 0x1B24, 0x1A6F, 0x1633, 0x10EE, 0x0B41, 0x05CC, 0x0133,\n    0xFE16, 0xFC7C, 0xFBD8, 0xFBE9, 0xFC71, 0xFD2F, 0xFDE6, 0xFE55,\n    0xFEA4, 0xFF18, 0xFF9D, 0x0020, 0x008F, 0x00D5, 0x00E3, 0x00BC,\n    0x0070, 0x000E, 0xFF34, 0xFE28, 0xFE00, 0xFEC7, 0xFFC5, 0x00EC,\n    0x022F, 0x037F, 0x04CE, 0x060D, 0x072E, 0x0821, 0x08E8, 0x098D,\n    0x098D, 0x098D, 0x098D, 0x098D, 0x098D, 0x098D, 0x098D, 0x098D,\n    0x098D, 0x098D, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFD, 0xFFFB,\n    0xFFF9, 0xFFF7, 0xFFF4, 0xFFF1, 0xFFED, 0xFFEA, 0xFFE6, 0xFFE2,\n    0xFFDE, 0xFFD9, 0xFFD5, 0xFFD0, 0xFFCB, 0xFFC6, 0xFFC1, 0xFFBC,\n    0xFFB6, 0xFFB1, 0xFFAC, 0xFFA6, 0xFFA1, 0xFF9C, 0xFF97, 0xFF92,\n    0xFF8D, 0xFF88, 0xFF83, 0xFF7E, 0xFF7A, 0xFF76, 0xFF71, 0xFF6E,\n    0xFF6A, 0xFF67, 0xFF63, 0xFF61, 0xFF5E, 0xFF5C, 0xFF5A, 0xFF59,\n    0xFF58, 0xFF57, 0xFF57, 0xFD70, 0xF869, 0xF149, 0xE917, 0xE0D9,\n    0xD995, 0xD452, 0xD216, 0xD1CC, 0xD1A2, 0xD188, 0xD07E, 0xCF84,\n    0xD188, 0xD74B, 0xE00C, 0xEC79, 0xFB1F, 0x0A12, 0x194F, 0x28D1,\n    0x3895, 0x4894, 0x58CB, 0x6935, 0x79CE, 0x8A94, 0x9B7D, 0xAC88,\n    0xBDAF, 0xCEEF, 0xE042, 0xF1A6, 0x0313, 0x1488, 0x25FF, 0x3774,\n    0x48E2, 0x5A45, 0x6B98, 0x7CD7, 0x8E00, 0x9F09, 0xAFF0, 0xC0B2,\n    0xD149, 0xE1B1, 0xF1E5, 0x01E1, 0x11A2, 0x2121, 0x2E0E, 0x3669,\n    0x3AAE, 0x3CAD, 0x3DFA, 0x3EB5, 0x3EFC, 0x3EF0, 0x3EAE, 0x3E58,\n    0x3E0B, 0x3DE7, 0x0000, 0x0000, 0x0001, 0x0003, 0x0005, 0x0008,\n    0x000C, 0x0010, 0x0015, 0x001B, 0x0021, 0x0027, 0x002E, 0x0036,\n    0x003E, 0x0047, 0x0050, 0x0059, 0x0063, 0x006D, 0x0078, 0x0083,\n    0x008E, 0x009A, 0x00A5, 0x00B2, 0x00BE, 0x00CB, 0x00D8, 0x00E5,\n    0x00F2, 0x00FF, 0x010D, 0x011A, 0x0128, 0x0136, 0x0144, 0x0152,\n    0x0160, 0x016E, 0x017C, 0x018A, 0x0198, 0x01A5, 0x01B3, 0x01C1,\n    0x01CE, 0x01DC, 0x01E9, 0x01F6, 0x0203, 0x020F, 0x021C, 0x0228,\n    0x0234, 0x023F, 0x024A, 0x0255, 0x0260, 0x026A, 0x027C, 0x0288,\n    0x026A, 0x0205, 0x0177, 0x00F3, 0x007F, 0x0002, 0xFF80, 0xFEFA,\n    0xFE75, 0xFDF4, 0xFD7A, 0xFD0B, 0xFCAA, 0xFC5B, 0xFC21, 0xFC00,\n    0xFD8D, 0xFFD8, 0x0175, 0x0323, 0x044D, 0x0463, 0x03C2, 0x032C,\n    0x029F, 0x021B, 0x019F, 0x012C, 0x00C1, 0x005E, 0x0001, 0xFFAC,\n    0xFF5B, 0xFF11, 0xFECC, 0xFE8C, 0xFE50, 0xFE18, 0xFE8A, 0xFFA2,\n    0x005F, 0x0092, 0x00B6, 0x00CF, 0x00DD, 0x00E4, 0x00E5, 0x00E3,\n    0x00E0, 0x00DE, 0x40A1, 0x40A1, 0x40A3, 0x40A5, 0x40A7, 0x40AB,\n    0x40AF, 0x40B4, 0x40BA, 0x40C0, 0x40C7, 0x40CF, 0x40D7, 0x40DF,\n    0x40E9, 0x40F2, 0x40FD, 0x4107, 0x4113, 0x411E, 0x412A, 0x4137,\n    0x4144, 0x4151, 0x415F, 0x416D, 0x417B, 0x4189, 0x4198, 0x41A7,\n    0x41B6, 0x41C5, 0x41D5, 0x41E4, 0x41F4, 0x4204, 0x4214, 0x4224,\n    0x4233, 0x4243, 0x4253, 0x4263, 0x4273, 0x4283, 0x4293, 0x42A2,\n    0x42B2, 0x42C1, 0x42D0, 0x42DF, 0x42EE, 0x42FC, 0x430A, 0x4318,\n    0x4325, 0x4333, 0x433F, 0x434C, 0x4358, 0x4364, 0x4372, 0x4378,\n    0x4364, 0x4321, 0x42C4, 0x426C, 0x4222, 0x41D3, 0x4182, 0x4131,\n    0x40DF, 0x4090, 0x4043, 0x3FFB, 0x3FB9, 0x3F7E, 0x3F4C, 0x3F23,\n    0x3F7B, 0x407D, 0x421F, 0x4422, 0x45C5, 0x4644, 0x45E2, 0x4564,\n    0x44CC, 0x441E, 0x435F, 0x428F, 0x41B4, 0x40D0, 0x3FE7, 0x3EFC,\n    0x3E12, 0x3D2C, 0x3C4E, 0x3B7C, 0x3AB7, 0x3A05, 0x39A8, 0x39AB,\n    0x39BC, 0x39B8, 0x39B7, 0x39B8, 0x39BB, 0x39BE, 0x39C2, 0x39C5,\n    0x39C7, 0x39C8,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_28.inc.c",
    "content": "static const struct Animation anim_28[] = {\n    1,\n    189,\n    0,\n    0,\n    0x0F,\n    ANIMINDEX_NUMPARTS(anim_28_indices),\n    anim_28_values,\n    anim_28_indices,\n    0,\n};\n\n\nstatic const u16 anim_28_indices[] = {\n    0x0001, 0x0000, 0x000F, 0x0001, 0x000F, 0x0010, 0x0001, 0x0000, 0x0001, 0x001F, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000F, 0x01EA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000F, 0x01DB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000F, 0x01CC,\n    0x0001, 0x01C8, 0x0001, 0x01C9, 0x0001, 0x01CA,\n    0x000F, 0x005C, 0x000F, 0x006B, 0x000F, 0x007A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000F, 0x004D,\n    0x000F, 0x0020, 0x000F, 0x002F, 0x000F, 0x003E,\n    0x0001, 0x01C4, 0x0001, 0x01C5, 0x0001, 0x01C6,\n    0x000F, 0x00C5, 0x000F, 0x00D4, 0x000F, 0x00E3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000F, 0x00B6,\n    0x000F, 0x0089, 0x000F, 0x0098, 0x000F, 0x00A7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01C7,\n    0x000F, 0x0197, 0x000F, 0x01A6, 0x000F, 0x01B5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000F, 0x0188,\n    0x000F, 0x015B, 0x000F, 0x016A, 0x000F, 0x0179,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01CB,\n    0x000F, 0x012E, 0x000F, 0x013D, 0x000F, 0x014C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000F, 0x011F,\n    0x000F, 0x00F2, 0x000F, 0x0101, 0x000F, 0x0110,\n};\n\nstatic const s16 anim_28_values[] = {\n    0x0000, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0035, 0x004B,\n    0x0050, 0x005C, 0x0069, 0x0076, 0x0082, 0x008C, 0x0095, 0x009D,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFF6, 0xFFE5, 0xFFDA,\n    0xFFDC, 0xFFE0, 0xFFE4, 0xFFE9, 0xFFED, 0xFFF2, 0xFFF7, 0x3FFF,\n    0xB53E, 0xB596, 0xB6CA, 0xB93D, 0xBD52, 0xC593, 0xD09E, 0xD8F0,\n    0xDE30, 0xE391, 0xE8EB, 0xEE13, 0xF2E2, 0xF72D, 0xFACC, 0xE3D8,\n    0xE8D9, 0xF288, 0xFBE5, 0xFFEF, 0xF814, 0xE9B3, 0xE1B6, 0xE1F9,\n    0xE38C, 0xE61E, 0xE95D, 0xECFA, 0xF0A4, 0xF409, 0x019B, 0x08E1,\n    0x172B, 0x2579, 0x2CCC, 0x2616, 0x1721, 0x0C2D, 0x0760, 0x02C3,\n    0xFE69, 0xFA64, 0xF6C8, 0xF3A8, 0xF119, 0xC00F, 0xC27B, 0xC7C2,\n    0xCE45, 0xD468, 0xDBA9, 0xE351, 0xE671, 0xE507, 0xE286, 0xDF39,\n    0xDB6C, 0xD768, 0xD378, 0xCFE6, 0x2A0A, 0x2995, 0x28EC, 0x28D3,\n    0x2A0B, 0x2FB9, 0x3758, 0x3931, 0x3488, 0x2E1D, 0x267A, 0x1E24,\n    0x15A3, 0x0D7F, 0x063F, 0xD337, 0xD2BA, 0xD204, 0xD1E9, 0xD338,\n    0xD876, 0xDFCA, 0xE37C, 0xE2FF, 0xE1B9, 0xDFDA, 0xDD98, 0xDB23,\n    0xD8AF, 0xD66F, 0xEE7A, 0xEFC8, 0xF1AA, 0xF1F4, 0xEE76, 0xE0F4,\n    0xCDE1, 0xC31E, 0xC201, 0xC269, 0xC401, 0xC674, 0xC96F, 0xCC9C,\n    0xCFA8, 0x4C08, 0x4BB3, 0x4AB0, 0x48D2, 0x45EF, 0x40D1, 0x39E8,\n    0x3381, 0x2DB4, 0x2743, 0x2078, 0x19A1, 0x1307, 0x0CF7, 0x07BC,\n    0x11A0, 0x0D25, 0x0457, 0xFB8A, 0xF70A, 0xFBB8, 0x057D, 0x0B3B,\n    0x0B79, 0x0AF2, 0x09D1, 0x0845, 0x067A, 0x049D, 0x02DC, 0xFC5E,\n    0x03C0, 0x1227, 0x2055, 0x270B, 0x1E1B, 0x0C2E, 0x004F, 0xFCE8,\n    0xFA44, 0xF84E, 0xF6EC, 0xF604, 0xF57E, 0xF542, 0xC079, 0xC376,\n    0xCA05, 0xD237, 0xDA1D, 0xE402, 0xEEAD, 0xF2E6, 0xF08E, 0xECA0,\n    0xE78A, 0xE1BB, 0xDBA1, 0xD5AA, 0xD047, 0xD6DD, 0xD755, 0xD803,\n    0xD81D, 0xD6DC, 0xD10B, 0xC93A, 0xC742, 0xCBE3, 0xD248, 0xD9E9,\n    0xE23D, 0xEABE, 0xF2E4, 0xFA26, 0x2F54, 0x3000, 0x30F9, 0x311F,\n    0x2F52, 0x2830, 0x1E30, 0x18F9, 0x1949, 0x1A97, 0x1CA7, 0x1F3A,\n    0x2212, 0x24F0, 0x2798, 0xE7FB, 0xE953, 0xEB44, 0xEB90, 0xE7F7,\n    0xDA0C, 0xC665, 0xBB4A, 0xBA1A, 0xBA77, 0xBC0D, 0xBE84, 0xC187,\n    0xC4BF, 0xC7D6, 0x001B, 0x001B, 0x001B, 0x001B, 0x001B, 0xFEAC,\n    0xFBEE, 0xFA3E, 0xFA34, 0xFAB2, 0xFB7E, 0xFC5E, 0xFD18, 0xFDC4,\n    0xFE88, 0x025B, 0x025B, 0x025B, 0x025B, 0x025B, 0x0258, 0x0243,\n    0x020D, 0x01B0, 0x013C, 0x00C2, 0x0050, 0xFFF6, 0xFFB3, 0xFF7C,\n    0xCB25, 0xCB25, 0xCB25, 0xCB25, 0xCB25, 0xCA57, 0xC8A8, 0xC72F,\n    0xC614, 0xC4E7, 0xC3E0, 0xC335, 0xC31E, 0xC3FC, 0xC5AD, 0x29B6,\n    0x2B7B, 0x2F74, 0x34A1, 0x39FE, 0x41F3, 0x4AF3, 0x4E11, 0x4B01,\n    0x465F, 0x409D, 0x3A2E, 0x3383, 0x2D0F, 0x2744, 0xF972, 0xF972,\n    0xF972, 0xF972, 0xF972, 0xFA03, 0xFB96, 0xFDFD, 0x0107, 0x0487,\n    0x084E, 0x0C2C, 0x0FF3, 0x1373, 0x167E, 0x1C45, 0x1C45, 0x1C45,\n    0x1C45, 0x1C45, 0x1C16, 0x1B92, 0x1AC8, 0x19C9, 0x18A4, 0x1767,\n    0x1623, 0x14E6, 0x13C0, 0x12C1, 0x634A, 0x634A, 0x634A, 0x634A,\n    0x634A, 0x6485, 0x67F0, 0x6D27, 0x73C3, 0x7B5E, 0x8395, 0x8BFC,\n    0x9430, 0x9BCB, 0xA267, 0x0076, 0x0076, 0x0076, 0x0076, 0x0076,\n    0x01BD, 0x044F, 0x0648, 0x0752, 0x083D, 0x08E6, 0x0926, 0x08D8,\n    0x0785, 0x0547, 0xFEF9, 0xFEF9, 0xFEF9, 0xFEF9, 0xFEF9, 0xFEE1,\n    0xFEBE, 0xFEC6, 0xFF0A, 0xFF6D, 0xFFD7, 0x0032, 0x006B, 0x0074,\n    0x005C, 0xD126, 0xD126, 0xD126, 0xD126, 0xD126, 0xCD86, 0xC62D,\n    0xC067, 0xBD6C, 0xBAF8, 0xB91A, 0xB7E3, 0xB764, 0xB822, 0xBA13,\n    0x22A4, 0x23E2, 0x2708, 0x2BDA, 0x321C, 0x3E18, 0x4CEC, 0x53A4,\n    0x518A, 0x4D8B, 0x4827, 0x41DF, 0x3B30, 0x349B, 0x2E9E, 0x03A2,\n    0x03A2, 0x03A2, 0x03A2, 0x03A2, 0x02D3, 0x00A9, 0xFD88, 0xF99B,\n    0xF4FC, 0xEFED, 0xEAB2, 0xE58D, 0xE0C1, 0xDC92, 0xE5C1, 0xE5C1,\n    0xE5C1, 0xE5C1, 0xE5C1, 0xE5DF, 0xE62F, 0xE6A3, 0xE733, 0xE7DC,\n    0xE896, 0xE955, 0xEA12, 0xEAC2, 0xEB5B, 0x6A17, 0x6A17, 0x6A17,\n    0x6A17, 0x6A17, 0x6B63, 0x6EE5, 0x7410, 0x7A9B, 0x8254, 0x8AC6,\n    0x9383, 0x9C1C, 0xA420, 0xAB1F, 0x8001, 0x8001, 0x4171, 0xBF5F,\n    0x8001, 0x8001, 0x4171, 0xBF5F, 0x0826, 0x0826, 0x0826, 0x0826,\n    0x0826, 0x07F3, 0x0766, 0x068E, 0x057D, 0x0443, 0x02F1, 0x0196,\n    0x0043, 0xFF0A, 0xFDF9, 0x0B68, 0x07AD, 0xFFB2, 0xF845, 0xF639,\n    0x007A, 0x116F, 0x1B21, 0x1BC0, 0x1AFF, 0x192D, 0x169A, 0x1395,\n    0x106B, 0x0D6C, 0x3B1B, 0x399E, 0x367D, 0x33BC, 0x335E, 0x3886,\n    0x40BB, 0x4593, 0x4643, 0x465D, 0x4601, 0x454D, 0x4460, 0x4359,\n    0x4257,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_29.inc.c",
    "content": "static const struct Animation anim_29[] = {\n    0,\n    189,\n    0,\n    0,\n    0x0A,\n    ANIMINDEX_NUMPARTS(anim_29_indices),\n    anim_29_values,\n    anim_29_indices,\n    0,\n};\n\n\nstatic const u16 anim_29_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x000A, 0x010E, 0x000A, 0x0118, 0x0001, 0x0122,\n    0x000A, 0x00F9, 0x000A, 0x0103, 0x0001, 0x010D,\n    0x000A, 0x00DB, 0x000A, 0x00E5, 0x000A, 0x00EF,\n    0x0001, 0x00D7, 0x0001, 0x00D8, 0x0001, 0x00D9,\n    0x0001, 0x0022, 0x0001, 0x0023, 0x0001, 0x0024,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0021,\n    0x000A, 0x0003, 0x000A, 0x000D, 0x000A, 0x0017,\n    0x0001, 0x00D3, 0x0001, 0x00D4, 0x0001, 0x00D5,\n    0x0001, 0x0044, 0x0001, 0x0045, 0x0001, 0x0046,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0043,\n    0x000A, 0x0025, 0x000A, 0x002F, 0x000A, 0x0039,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00D6,\n    0x000A, 0x00B5, 0x000A, 0x00BF, 0x000A, 0x00C9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x00AB,\n    0x000A, 0x008D, 0x000A, 0x0097, 0x000A, 0x00A1,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00DA,\n    0x000A, 0x006F, 0x000A, 0x0079, 0x000A, 0x0083,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0065,\n    0x000A, 0x0047, 0x000A, 0x0051, 0x000A, 0x005B,\n};\n\nstatic const s16 anim_29_values[] = {\n    0x0000, 0x003B, 0x3FFF, 0xB53D, 0xB564, 0xB5C0, 0xB62E, 0xB68B,\n    0xB6B2, 0xB67A, 0xB5FF, 0xB580, 0xB53E, 0xE3CC, 0xE4B3, 0xE6DB,\n    0xE96E, 0xEB96, 0xEC7E, 0xEB33, 0xE853, 0xE55D, 0xE3D1, 0x0188,\n    0x0143, 0x009C, 0xFFD7, 0xFF31, 0xFEEB, 0xFF4E, 0x002B, 0x010F,\n    0x0187, 0xC009, 0x2A0B, 0xD338, 0xEE76, 0x4C09, 0x4BDE, 0x4B80,\n    0x4B22, 0x4AF8, 0x4B43, 0x4BCA, 0x4C09, 0x4C09, 0x4C09, 0x11AC,\n    0x0FA7, 0x0B36, 0x06C4, 0x04BF, 0x084E, 0x0EB9, 0x11AC, 0x11AC,\n    0x11AC, 0xFC4B, 0xFBB0, 0xFA5B, 0xF906, 0xF86B, 0xF97C, 0xFB69,\n    0xFC4B, 0xFC4B, 0xFC4B, 0xC072, 0xD6DC, 0x2F52, 0xE7F7, 0x001B,\n    0xFFFD, 0xFFB1, 0xFF57, 0xFF0C, 0xFEEC, 0xFF1A, 0xFF7E, 0xFFE6,\n    0x001B, 0x025B, 0x0255, 0x0244, 0x0231, 0x0220, 0x0219, 0x0223,\n    0x0239, 0x024F, 0x025B, 0xCB25, 0xC8F0, 0xC3AD, 0xBD66, 0xB823,\n    0xB5EE, 0xB914, 0xC017, 0xC751, 0xCB19, 0x4841, 0x43D8, 0x3956,\n    0x2CCB, 0x2249, 0x1DE1, 0x242B, 0x322D, 0x409A, 0x4827, 0x319A,\n    0x2EE2, 0x2864, 0x20A6, 0x1A29, 0x1770, 0x1B52, 0x23F8, 0x2CE1,\n    0x318B, 0x1EAB, 0x1FA7, 0x2200, 0x24CD, 0x2725, 0x2821, 0x26BA,\n    0x2399, 0x2061, 0x1EB1, 0xA00E, 0x9CE5, 0x955C, 0x8C5C, 0x84D3,\n    0x81AA, 0x862D, 0x9038, 0x9A92, 0x9FFC, 0x00EA, 0x00D4, 0x00A2,\n    0x0065, 0x0033, 0x001D, 0x003C, 0x007F, 0x00C5, 0x00E9, 0xFF57,\n    0xFF4A, 0xFF2D, 0xFF0A, 0xFEED, 0xFEE1, 0xFEF2, 0xFF19, 0xFF41,\n    0xFF56, 0xBBF6, 0xBF86, 0xC803, 0xD224, 0xDAA2, 0xDE31, 0xD91C,\n    0xCDCC, 0xC224, 0xBC0A, 0x2372, 0x2648, 0x2D0D, 0x3522, 0x3BE7,\n    0x3EBE, 0x3AB0, 0x31AB, 0x285F, 0x2382, 0xF9B3, 0xF7F8, 0xF3D6,\n    0xEEE8, 0xEAC7, 0xE90C, 0xEB84, 0xF106, 0xF6B1, 0xF9A9, 0xDEE6,\n    0xDFA4, 0xE169, 0xE386, 0xE54B, 0xE609, 0xE4FA, 0xE29E, 0xE02F,\n    0xDEEA, 0x7F14, 0x81A6, 0x87C0, 0x8F08, 0x9522, 0x97B0, 0x940A,\n    0x8BE8, 0x8388, 0x7F23, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001,\n    0x8001, 0x4171, 0xBF5F, 0x0000, 0x0003, 0x0004, 0x0004, 0x0004,\n    0x0003, 0x0000, 0x0000, 0x0000, 0x0000, 0xFC56, 0xF927, 0xFB34,\n    0xFDCD, 0x00E7, 0x047B, 0x050E, 0x015B, 0xFE03, 0xFC5B, 0xE2B7,\n    0xE2B7, 0xE2B7, 0xE2B7, 0xE2B7, 0xE2B7, 0xE2B8, 0xE2B7, 0xE2B7,\n    0xE2B7, 0xFEBD, 0xFEEB, 0xFF5D, 0xFFED, 0x0076, 0x00D3, 0x00F4,\n    0x00F1, 0x00DF, 0x00D2, 0xFA61, 0xFB9A, 0xFE84, 0x01FC, 0x04E5,\n    0x061C, 0x045A, 0x0072, 0xFC6E, 0xFA54, 0x1119, 0x0369, 0x031E,\n    0x0264, 0x0179, 0x009A, 0x0003, 0xFFCD, 0xFFD0, 0xFFEC, 0x0000,\n    0xFC7F, 0xFCD8, 0xFDA9, 0xFE9D, 0xFF5E, 0xFF98, 0xFED8, 0xFD5E,\n    0xFBE4, 0xFB1F, 0x2739,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_2A.inc.c",
    "content": "static const struct Animation anim_2A[] = {\n    0,\n    189,\n    0,\n    0,\n    0x28,\n    ANIMINDEX_NUMPARTS(anim_2A_indices),\n    anim_2A_values,\n    anim_2A_indices,\n    0,\n};\n\n\nstatic const u16 anim_2A_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x024A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x0222,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x01FA,\n    0x0001, 0x01F6, 0x0001, 0x01F7, 0x0001, 0x01F8,\n    0x0028, 0x0006, 0x0028, 0x002E, 0x0028, 0x0056,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0005,\n    0x0001, 0x0002, 0x0001, 0x0003, 0x0001, 0x0004,\n    0x0001, 0x01F2, 0x0001, 0x01F3, 0x0001, 0x01F4,\n    0x0028, 0x0082, 0x0028, 0x00AA, 0x0028, 0x00D2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0081,\n    0x0001, 0x007E, 0x0001, 0x007F, 0x0001, 0x0080,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01F5,\n    0x0028, 0x017A, 0x0028, 0x01A2, 0x0028, 0x01CA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0179,\n    0x0001, 0x0176, 0x0001, 0x0177, 0x0001, 0x0178,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01F9,\n    0x0028, 0x00FE, 0x0028, 0x0126, 0x0028, 0x014E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00FD,\n    0x0001, 0x00FA, 0x0001, 0x00FB, 0x0001, 0x00FC,\n};\n\nstatic const s16 anim_2A_values[] = {\n    0x0000, 0x3FFF, 0x008A, 0xF435, 0xEA2C, 0xF913, 0xB8A2, 0xB906,\n    0xBA25, 0xBBE7, 0xBE38, 0xC101, 0xC42C, 0xC7A5, 0xCB53, 0xCF23,\n    0xD2FE, 0xD6CE, 0xDA7C, 0xDDF5, 0xE120, 0xE3E9, 0xE63A, 0xE7FC,\n    0xE91B, 0xE97F, 0xE924, 0xE821, 0xE687, 0xE46A, 0xE1DC, 0xDEF1,\n    0xDBBB, 0xD84C, 0xD4B8, 0xD111, 0xCD69, 0xC9D5, 0xC666, 0xC330,\n    0xC045, 0xBDB7, 0xBB9A, 0xBA00, 0xB8FD, 0xB8A2, 0xC454, 0xC45C,\n    0xC472, 0xC496, 0xC4C4, 0xC4FC, 0xC53B, 0xC581, 0xC5CA, 0xC617,\n    0xC664, 0xC6B0, 0xC6FA, 0xC73F, 0xC77F, 0xC7B7, 0xC7E5, 0xC808,\n    0xC81F, 0xC826, 0xC81F, 0xC80B, 0xC7EB, 0xC7C1, 0xC78E, 0xC753,\n    0xC713, 0xC6CE, 0xC686, 0xC63D, 0xC5F4, 0xC5AC, 0xC568, 0xC527,\n    0xC4ED, 0xC4BA, 0xC490, 0xC470, 0xC45B, 0xC454, 0xCB3D, 0xCAD8,\n    0xC9B7, 0xC7F1, 0xC59B, 0xC2CC, 0xBF9A, 0xBC1A, 0xB864, 0xB48C,\n    0xB0A9, 0xACD1, 0xA91B, 0xA59B, 0xA269, 0x9F9A, 0x9D44, 0x9B7E,\n    0x9A5D, 0x99F8, 0x9A53, 0x9B59, 0x9CF6, 0x9F18, 0xA1AB, 0xA49C,\n    0xA7DA, 0xAB50, 0xAEEC, 0xB29A, 0xB649, 0xB9E5, 0xBD5B, 0xC098,\n    0xC38A, 0xC61D, 0xC83F, 0xC9DC, 0xCAE1, 0xCB3D, 0x003A, 0x054A,\n    0xEBEE, 0xF6A2, 0x495F, 0x4924, 0x487C, 0x4772, 0x4616, 0x4472,\n    0x4294, 0x408A, 0x3E5F, 0x3C21, 0x39DC, 0x379E, 0x3573, 0x3369,\n    0x318B, 0x2FE7, 0x2E8B, 0x2D82, 0x2CD9, 0x2C9E, 0x2CD4, 0x2D6C,\n    0x2E5D, 0x2F9C, 0x311C, 0x32D4, 0x34B8, 0x36BD, 0x38D8, 0x3AFF,\n    0x3D25, 0x3F40, 0x4145, 0x4329, 0x44E1, 0x4661, 0x47A0, 0x4891,\n    0x492A, 0x495F, 0x39E6, 0x39E5, 0x39E2, 0x39DC, 0x39D5, 0x39CD,\n    0x39C3, 0x39B8, 0x39AD, 0x39A1, 0x3996, 0x398A, 0x397F, 0x3974,\n    0x396A, 0x3962, 0x395B, 0x3955, 0x3952, 0x3951, 0x3952, 0x3955,\n    0x395A, 0x3960, 0x3968, 0x3971, 0x397B, 0x3985, 0x3990, 0x399B,\n    0x39A7, 0x39B2, 0x39BC, 0x39C6, 0x39CF, 0x39D7, 0x39DD, 0x39E2,\n    0x39E5, 0x39E6, 0xCC24, 0xCBE8, 0xCB3E, 0xCA32, 0xC8D1, 0xC728,\n    0xC545, 0xC335, 0xC104, 0xBEBF, 0xBC74, 0xBA2F, 0xB7FE, 0xB5ED,\n    0xB40A, 0xB262, 0xB101, 0xAFF5, 0xAF4B, 0xAF0F, 0xAF45, 0xAFE0,\n    0xB0D3, 0xB215, 0xB39A, 0xB557, 0xB741, 0xB94C, 0xBB6D, 0xBD99,\n    0xBFC6, 0xC1E7, 0xC3F2, 0xC5DC, 0xC799, 0xC91E, 0xCA5F, 0xCB53,\n    0xCBEE, 0xCC24, 0x0135, 0x0207, 0xDF23, 0x10D8, 0x10FF, 0x1101,\n    0x1105, 0x110C, 0x1115, 0x1121, 0x112D, 0x113B, 0x114A, 0x1159,\n    0x1169, 0x1178, 0x1187, 0x1195, 0x11A2, 0x11AD, 0x11B6, 0x11BD,\n    0x11C2, 0x11C4, 0x11C2, 0x11BE, 0x11B8, 0x11AF, 0x11A5, 0x1199,\n    0x118C, 0x117E, 0x1170, 0x1161, 0x1153, 0x1144, 0x1136, 0x1129,\n    0x111E, 0x1113, 0x110B, 0x1104, 0x1100, 0x10FF, 0x052D, 0x0535,\n    0x054D, 0x0574, 0x05A6, 0x05E3, 0x0628, 0x0673, 0x06C3, 0x0716,\n    0x076A, 0x07BD, 0x080D, 0x0858, 0x089D, 0x08DA, 0x090C, 0x0932,\n    0x094B, 0x0953, 0x094B, 0x0935, 0x0913, 0x08E5, 0x08AD, 0x086E,\n    0x0828, 0x07DD, 0x078F, 0x0740, 0x06F0, 0x06A3, 0x0658, 0x0612,\n    0x05D3, 0x059B, 0x056D, 0x054A, 0x0534, 0x052D, 0xBDBB, 0xBDC3,\n    0xBDD9, 0xBDFB, 0xBE28, 0xBE5F, 0xBE9D, 0xBEE1, 0xBF29, 0xBF73,\n    0xBFBE, 0xC009, 0xC051, 0xC095, 0xC0D3, 0xC109, 0xC136, 0xC159,\n    0xC16E, 0xC176, 0xC16F, 0xC15B, 0xC13C, 0xC113, 0xC0E1, 0xC0A8,\n    0xC069, 0xC026, 0xBFE0, 0xBF99, 0xBF51, 0xBF0B, 0xBEC8, 0xBE89,\n    0xBE50, 0xBE1E, 0xBDF5, 0xBDD6, 0xBDC2, 0xBDBB, 0x0013, 0xFEE0,\n    0xDF6A, 0x0F13, 0xF602, 0xF600, 0xF5FB, 0xF5F3, 0xF5E7, 0xF5DA,\n    0xF5CB, 0xF5BA, 0xF5A8, 0xF596, 0xF583, 0xF571, 0xF55F, 0xF54F,\n    0xF53F, 0xF532, 0xF527, 0xF51E, 0xF519, 0xF517, 0xF519, 0xF51E,\n    0xF525, 0xF52F, 0xF53C, 0xF54A, 0xF559, 0xF56A, 0xF57B, 0xF58D,\n    0xF59E, 0xF5AF, 0xF5C0, 0xF5D0, 0xF5DE, 0xF5EA, 0xF5F4, 0xF5FC,\n    0xF601, 0xF602, 0xFC00, 0xFBF8, 0xFBE2, 0xFBBF, 0xFB91, 0xFB59,\n    0xFB1A, 0xFAD5, 0xFA8C, 0xFA40, 0xF9F3, 0xF9A7, 0xF95E, 0xF919,\n    0xF8DA, 0xF8A2, 0xF874, 0xF851, 0xF83B, 0xF833, 0xF83A, 0xF84E,\n    0xF86E, 0xF898, 0xF8CB, 0xF905, 0xF945, 0xF98A, 0xF9D1, 0xFA1A,\n    0xFA62, 0xFAAA, 0xFAEE, 0xFB2E, 0xFB68, 0xFB9B, 0xFBC5, 0xFBE5,\n    0xFBF9, 0xFC00, 0xBCB0, 0xBCBA, 0xBCD6, 0xBD03, 0xBD3D, 0xBD84,\n    0xBDD4, 0xBE2C, 0xBE89, 0xBEE9, 0xBF4B, 0xBFAB, 0xC009, 0xC060,\n    0xC0B1, 0xC0F7, 0xC132, 0xC15E, 0xC17B, 0xC185, 0xC17C, 0xC162,\n    0xC139, 0xC104, 0xC0C3, 0xC079, 0xC028, 0xBFD1, 0xBF77, 0xBF1A,\n    0xBEBE, 0xBE63, 0xBE0C, 0xBDBB, 0xBD71, 0xBD30, 0xBCFB, 0xBCD2,\n    0xBCB9, 0xBCB0, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001,\n    0x4171, 0xBF5F, 0xD6E6, 0xD6EB, 0xD6F9, 0xD70F, 0xD72B, 0xD74D,\n    0xD772, 0xD799, 0xD7C2, 0xD7EB, 0xD813, 0xD837, 0xD858, 0xD873,\n    0xD887, 0xD896, 0xD8A3, 0xD8AC, 0xD8B2, 0xD8B5, 0xD8B5, 0xD8B2,\n    0xD8AC, 0xD8A3, 0xD896, 0xD887, 0xD873, 0xD858, 0xD837, 0xD813,\n    0xD7EB, 0xD7C2, 0xD799, 0xD772, 0xD74D, 0xD72B, 0xD70F, 0xD6F9,\n    0xD6EB, 0xD6E6, 0xF839, 0xF823, 0xF7E8, 0xF78C, 0xF717, 0xF68F,\n    0xF5FA, 0xF55E, 0xF4C3, 0xF42E, 0xF3A6, 0xF331, 0xF2D5, 0xF29A,\n    0xF284, 0xF28B, 0xF29F, 0xF2BE, 0xF2E9, 0xF31C, 0xF358, 0xF39C,\n    0xF3E5, 0xF434, 0xF486, 0xF4DC, 0xF533, 0xF58A, 0xF5E1, 0xF637,\n    0xF689, 0xF6D8, 0xF721, 0xF765, 0xF7A1, 0xF7D4, 0xF7FF, 0xF81E,\n    0xF832, 0xF839, 0x7C1D, 0x7C2C, 0x7C57, 0x7C98, 0x7CEC, 0x7D4D,\n    0x7DB8, 0x7E27, 0x7E96, 0x7F00, 0x7F61, 0x7FB5, 0x7FF6, 0x8024,\n    0x8033, 0x802E, 0x8020, 0x800A, 0x7FE8, 0x7FC4, 0x7F99, 0x7F68,\n    0x7F34, 0x7EFC, 0x7EC1, 0x7E84, 0x7E46, 0x7E07, 0x7DC9, 0x7D8C,\n    0x7D51, 0x7D19, 0x7CE5, 0x7CB4, 0x7C8A, 0x7C65, 0x7C46, 0x7C30,\n    0x7C22, 0x7C1D,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_2B.inc.c",
    "content": "static const struct Animation anim_2B[] = {\n    0,\n    189,\n    0,\n    0,\n    0x28,\n    ANIMINDEX_NUMPARTS(anim_2B_indices),\n    anim_2B_values,\n    anim_2B_indices,\n    0,\n};\n\n\nstatic const u16 anim_2B_indices[] = {\n    0x0028, 0x0001, 0x0001, 0x0029, 0x0028, 0x002A, 0x0001, 0x0000, 0x0001, 0x0052, 0x0001, 0x0000,\n    0x0028, 0x029F, 0x0028, 0x02C7, 0x0028, 0x02EF,\n    0x0001, 0x029C, 0x0001, 0x029D, 0x0001, 0x029E,\n    0x0028, 0x0224, 0x0028, 0x024C, 0x0028, 0x0274,\n    0x0001, 0x0220, 0x0001, 0x0221, 0x0001, 0x0222,\n    0x0028, 0x0057, 0x0028, 0x007F, 0x0028, 0x00A7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0056,\n    0x0001, 0x0053, 0x0001, 0x0054, 0x0001, 0x0055,\n    0x0001, 0x021C, 0x0001, 0x021D, 0x0001, 0x021E,\n    0x0028, 0x00D3, 0x0028, 0x00FB, 0x0028, 0x0123,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00D2,\n    0x0001, 0x00CF, 0x0001, 0x00D0, 0x0001, 0x00D1,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x021F,\n    0x0028, 0x01A4, 0x0028, 0x01CC, 0x0028, 0x01F4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x017C,\n    0x0001, 0x0179, 0x0001, 0x017A, 0x0001, 0x017B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0223,\n    0x0001, 0x0176, 0x0001, 0x0177, 0x0001, 0x0178,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x014E,\n    0x0001, 0x014B, 0x0001, 0x014C, 0x0001, 0x014D,\n};\n\nstatic const s16 anim_2B_values[] = {\n    0x0000, 0x001B, 0x001A, 0x0017, 0x0013, 0x000D, 0x0007, 0x0001,\n    0xFFFC, 0xFFF6, 0xFFF1, 0xFFEE, 0xFFF4, 0xFFFA, 0x0000, 0x0007,\n    0x000D, 0x0014, 0x0019, 0x001D, 0x001F, 0x001F, 0x001D, 0x0019,\n    0x0015, 0x0010, 0x000B, 0x0006, 0x0003, 0x0002, 0x0002, 0x0004,\n    0x0006, 0x0009, 0x000C, 0x0010, 0x0013, 0x0016, 0x0018, 0x001A,\n    0x001A, 0x00BD, 0x0000, 0x0000, 0x0001, 0x0003, 0x0006, 0x0009,\n    0x000B, 0x000E, 0x0010, 0x0011, 0x000B, 0x0001, 0xFFF6, 0xFFE9,\n    0xFFDC, 0xFFCF, 0xFFC4, 0xFFBB, 0xFFB5, 0xFFB2, 0xFFB3, 0xFFB8,\n    0xFFC1, 0xFFCB, 0xFFD6, 0xFFE1, 0xFFEC, 0xFFF4, 0xFFFA, 0xFFFD,\n    0x0000, 0x0000, 0x0001, 0x0002, 0x0002, 0x0001, 0x0001, 0x0000,\n    0x0000, 0x0000, 0x3FFF, 0xFF8A, 0xF980, 0xF06F, 0xF085, 0xF955,\n    0xF942, 0xF90D, 0xF8BF, 0xF85E, 0xF7F4, 0xF787, 0xF720, 0xF6C5,\n    0xF680, 0xF657, 0xF653, 0xF675, 0xF6B6, 0xF712, 0xF780, 0xF7FC,\n    0xF87F, 0xF902, 0xF981, 0xF9F4, 0xFA56, 0xFAA0, 0xFACD, 0xFAE1,\n    0xFAE7, 0xFAE1, 0xFAD1, 0xFAB8, 0xFA98, 0xFA72, 0xFA4A, 0xFA1F,\n    0xF9F5, 0xF9CC, 0xF9A7, 0xF987, 0xF96E, 0xF95E, 0xF958, 0xCD9D,\n    0xCD81, 0xCD34, 0xCCC2, 0xCC37, 0xCB9E, 0xCB03, 0xCA73, 0xC9F8,\n    0xC99E, 0xC972, 0xC97E, 0xC9CA, 0xCA4D, 0xCAFB, 0xCBCA, 0xCCAE,\n    0xCD9C, 0xCE8A, 0xCF6D, 0xD039, 0xD0E3, 0xD160, 0xD1A5, 0xD1BB,\n    0xD1B4, 0xD192, 0xD15B, 0xD112, 0xD0BA, 0xD059, 0xCFF1, 0xCF87,\n    0xCF1F, 0xCEBB, 0xCE62, 0xCE15, 0xCDD9, 0xCDB3, 0xCDA5, 0xD6A1,\n    0xD6B5, 0xD6EC, 0xD73E, 0xD7A2, 0xD811, 0xD882, 0xD8EE, 0xD94C,\n    0xD994, 0xD9BE, 0xD9C2, 0xD99E, 0xD958, 0xD8F8, 0xD884, 0xD802,\n    0xD778, 0xD6EE, 0xD669, 0xD5F0, 0xD589, 0xD53B, 0xD50D, 0xD4F8,\n    0xD4F2, 0xD4F9, 0xD50B, 0xD526, 0xD548, 0xD570, 0xD59C, 0xD5C9,\n    0xD5F7, 0xD622, 0xD64A, 0xD66C, 0xD686, 0xD698, 0xD69E, 0x0F57,\n    0x0217, 0xF7EF, 0xF913, 0x0DB6, 0x0E04, 0x0ED6, 0x100B, 0x1182,\n    0x131A, 0x14B0, 0x1624, 0x1755, 0x1820, 0x1865, 0x180C, 0x172B,\n    0x15E4, 0x1456, 0x12A4, 0x10ED, 0x0F54, 0x0DF8, 0x0CFC, 0x0C4E,\n    0x0BC6, 0x0B60, 0x0B17, 0x0AE6, 0x0AC9, 0x0ABD, 0x0ABC, 0x0AC2,\n    0x0AD9, 0x0B0C, 0x0B54, 0x0BAA, 0x0C09, 0x0C6B, 0x0CC8, 0x0D1C,\n    0x0D5F, 0x0D8C, 0x0D9D, 0x1A58, 0x1A61, 0x1A79, 0x1A9B, 0x1AC3,\n    0x1AEC, 0x1B10, 0x1B2C, 0x1B3A, 0x1B36, 0x1B1A, 0x1AD7, 0x1A68,\n    0x19DC, 0x1941, 0x18A5, 0x1818, 0x17A7, 0x1760, 0x1753, 0x178C,\n    0x1805, 0x18AC, 0x196F, 0x1A3C, 0x1B04, 0x1BB3, 0x1C38, 0x1C83,\n    0x1C97, 0x1C88, 0x1C5E, 0x1C1F, 0x1BD3, 0x1B7F, 0x1B2B, 0x1ADE,\n    0x1A9F, 0x1A74, 0x1A64, 0x5C3E, 0x5C4C, 0x5C6E, 0x5C9D, 0x5CCF,\n    0x5CFD, 0x5D1E, 0x5D29, 0x5D16, 0x5CDC, 0x5C72, 0x5BC2, 0x5AC7,\n    0x5996, 0x5843, 0x56E3, 0x5589, 0x544B, 0x533D, 0x5272, 0x51DB,\n    0x5159, 0x50F0, 0x50A3, 0x5073, 0x5064, 0x5079, 0x50B5, 0x5119,\n    0x51BF, 0x52AF, 0x53D8, 0x5524, 0x5683, 0x57DF, 0x5927, 0x5A48,\n    0x5B2D, 0x5BC5, 0x5BFC, 0x001B, 0x025B, 0xCB25, 0x4F2E, 0x4ED0,\n    0x4DE2, 0x4CA4, 0x4B56, 0x4A37, 0x4987, 0x4986, 0x4A2B, 0x4B32,\n    0x4C84, 0x4E09, 0x4FAC, 0x5154, 0x52EA, 0x5459, 0x5589, 0x5662,\n    0x56CE, 0x56EF, 0x56F7, 0x56E9, 0x56C6, 0x5691, 0x564B, 0x55F5,\n    0x5593, 0x5525, 0x54AE, 0x542F, 0x53AB, 0x5323, 0x5299, 0x520F,\n    0x5187, 0x5103, 0x5084, 0x500D, 0x4F9F, 0x4F3D, 0x0F26, 0xFFFD,\n    0xB340, 0x001D, 0xFEE1, 0xDE31, 0x12BD, 0x1362, 0x1523, 0x17C0,\n    0x1AF8, 0x1E88, 0x2230, 0x25AE, 0x28C1, 0x2B28, 0x2CA0, 0x2CEA,\n    0x2C53, 0x2B5F, 0x2A18, 0x2885, 0x26B2, 0x24A8, 0x2271, 0x2016,\n    0x1DA0, 0x1B1B, 0x188E, 0x1604, 0x1386, 0x111E, 0x0ED6, 0x0CB7,\n    0x0ACB, 0x091B, 0x07B2, 0x0699, 0x0669, 0x0776, 0x0960, 0x0BC8,\n    0x0E4E, 0x1092, 0x1234, 0x12D4, 0xFD5C, 0xFD5F, 0xFD66, 0xFD72,\n    0xFD83, 0xFD97, 0xFDAE, 0xFDC9, 0xFDE7, 0xFE07, 0xFE2A, 0xFE4E,\n    0xFE74, 0xFE9B, 0xFEC3, 0xFEEB, 0xFF14, 0xFF3C, 0xFF64, 0xFF8B,\n    0xFFB1, 0xFFD5, 0xFFF7, 0x0017, 0x0034, 0x004F, 0x0067, 0x007B,\n    0x008B, 0x0097, 0x009F, 0x00A1, 0x007D, 0x001E, 0xFF99, 0xFEFF,\n    0xFE65, 0xFDDF, 0xFD80, 0xFD5C, 0xF385, 0xF385, 0xF385, 0xF384,\n    0xF382, 0xF381, 0xF37F, 0xF37D, 0xF37B, 0xF378, 0xF376, 0xF373,\n    0xF370, 0xF36D, 0xF36A, 0xF367, 0xF364, 0xF360, 0xF35D, 0xF35A,\n    0xF357, 0xF355, 0xF352, 0xF34F, 0xF34D, 0xF34B, 0xF349, 0xF348,\n    0xF346, 0xF346, 0xF345, 0xF345, 0xF348, 0xF34F, 0xF359, 0xF365,\n    0xF371, 0xF37B, 0xF383, 0xF385, 0xCC7D, 0xCC75, 0xCC5C, 0xCC35,\n    0xCC00, 0xCBBE, 0xCB71, 0xCB19, 0xCAB8, 0xCA4F, 0xC9DE, 0xC968,\n    0xC8EC, 0xC86C, 0xC7EA, 0xC766, 0xC6E2, 0xC65E, 0xC5DC, 0xC55C,\n    0xC4E1, 0xC46A, 0xC3FA, 0xC390, 0xC32F, 0xC2D7, 0xC28A, 0xC248,\n    0xC213, 0xC1EC, 0xC1D4, 0xC1CC, 0xC241, 0xC377, 0xC52E, 0xC724,\n    0xC91B, 0xCAD1, 0xCC07, 0xCC7D, 0x7FFF, 0x7FFF, 0x4171, 0xBF5F,\n    0x7FFF, 0x7FFF, 0x4171, 0xBF5F, 0x04C2, 0x04DD, 0x052A, 0x05A2,\n    0x0641, 0x0700, 0x07DA, 0x08C8, 0x09C4, 0x0ACA, 0x0BD2, 0x0CD8,\n    0x0DD5, 0x0EC3, 0x0F9C, 0x105B, 0x10FA, 0x1173, 0x11C0, 0x11DB,\n    0x11C2, 0x117D, 0x110F, 0x107E, 0x0FCF, 0x0F07, 0x0E2B, 0x0D40,\n    0x0C4A, 0x0B50, 0x0A56, 0x0960, 0x0875, 0x0799, 0x06D1, 0x0621,\n    0x0591, 0x0523, 0x04DD, 0x04C5, 0xFFB2, 0xFFAA, 0xFF95, 0xFF73,\n    0xFF46, 0xFF10, 0xFED3, 0xFE90, 0xFE49, 0xFE00, 0xFDB5, 0xFD6C,\n    0xFD25, 0xFCE2, 0xFCA4, 0xFC6F, 0xFC42, 0xFC20, 0xFC0A, 0xFC02,\n    0xFC09, 0xFC1C, 0xFC3B, 0xFC63, 0xFC94, 0xFCCC, 0xFD0A, 0xFD4B,\n    0xFD90, 0xFDD6, 0xFE1C, 0xFE61, 0xFEA3, 0xFEE0, 0xFF18, 0xFF49,\n    0xFF72, 0xFF91, 0xFFA4, 0xFFAB, 0x148E, 0x1494, 0x14A4, 0x14BC,\n    0x14DD, 0x1504, 0x1531, 0x1562, 0x1596, 0x15CC, 0x1602, 0x1638,\n    0x166C, 0x169D, 0x16CA, 0x16F1, 0x1712, 0x172A, 0x173A, 0x1740,\n    0x173B, 0x172D, 0x1717, 0x16F9, 0x16D5, 0x16AC, 0x167F, 0x164F,\n    0x161D, 0x15EA, 0x15B7, 0x1585, 0x1554, 0x1527, 0x14FE, 0x14DB,\n    0x14BD, 0x14A6, 0x1498, 0x1493, 0xFF37, 0xF64F, 0x042B, 0x068D,\n    0x06AB, 0x06FC, 0x0773, 0x0805, 0x08A4, 0x0944, 0x09DA, 0x0A57,\n    0x0AB1, 0x0AD9, 0x0AC9, 0x0A88, 0x0A22, 0x09A4, 0x091A, 0x0891,\n    0x0815, 0x07B2, 0x0775, 0x075C, 0x0758, 0x0766, 0x077F, 0x07A0,\n    0x07C3, 0x07E5, 0x07FF, 0x080E, 0x080D, 0x07F9, 0x07D7, 0x07AB,\n    0x0778, 0x0743, 0x070E, 0x06DF, 0x06B8, 0x069E, 0x0694, 0xF3BE,\n    0xF38F, 0xF310, 0xF256, 0xF175, 0xF083, 0xEF94, 0xEEBE, 0xEE15,\n    0xEDAD, 0xED9D, 0xEDFF, 0xEECC, 0xEFE7, 0xF131, 0xF28C, 0xF3DA,\n    0xF4FB, 0xF5D3, 0xF643, 0xF649, 0xF607, 0xF58B, 0xF4E6, 0xF429,\n    0xF363, 0xF2A6, 0xF201, 0xF185, 0xF142, 0xF139, 0xF159, 0xF199,\n    0xF1EF, 0xF251, 0xF2B7, 0xF317, 0xF367, 0xF39E, 0xF3B2, 0x298D,\n    0x2968, 0x2905, 0x2878, 0x27D5, 0x272F, 0x2699, 0x2628, 0x25ED,\n    0x25FE, 0x266E, 0x276E, 0x2905, 0x2B07, 0x2D45, 0x2F92, 0x31C0,\n    0x33A3, 0x350B, 0x35CD, 0x35EC, 0x359A, 0x34ED, 0x33FB, 0x32DA,\n    0x31A0, 0x3063, 0x2F39, 0x2E38, 0x2D76, 0x2CDD, 0x2C4A, 0x2BBF,\n    0x2B3F, 0x2ACD, 0x2A6A, 0x2A18, 0x29DC, 0x29B5, 0x29A8,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_2C_2D.inc.c",
    "content": "static const struct Animation anim_2C[] = {\n    1,\n    189,\n    0,\n    0,\n    0x50,\n    ANIMINDEX_NUMPARTS(anim_2C_2D_indices),\n    anim_2C_2D_values,\n    anim_2C_2D_indices,\n    0,\n};\n\nstatic const struct Animation anim_2D[] = {\n    1,\n    189,\n    0,\n    0,\n    0x01,\n    ANIMINDEX_NUMPARTS(anim_2C_2D_indices),\n    anim_2C_2D_values,\n    anim_2C_2D_indices,\n    0,\n};\n\n\nstatic const u16 anim_2C_2D_indices[] = {\n    0x0001, 0x0000, 0x0050, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0051, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0050, 0x0AAA,\n    0x0050, 0x0A0A, 0x0001, 0x0000, 0x0050, 0x0A5A,\n    0x0050, 0x091A, 0x0050, 0x096A, 0x0050, 0x09BA,\n    0x0001, 0x0916, 0x0001, 0x0917, 0x0001, 0x0918,\n    0x0050, 0x0192, 0x0050, 0x01E2, 0x0050, 0x0232,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0050, 0x0142,\n    0x0050, 0x0052, 0x0050, 0x00A2, 0x0050, 0x00F2,\n    0x0001, 0x0912, 0x0001, 0x0913, 0x0001, 0x0914,\n    0x0050, 0x03C2, 0x0050, 0x0412, 0x0050, 0x0462,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0050, 0x0372,\n    0x0050, 0x0282, 0x0050, 0x02D2, 0x0050, 0x0322,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0915,\n    0x0050, 0x0822, 0x0050, 0x0872, 0x0050, 0x08C2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0050, 0x07D2,\n    0x0050, 0x06E2, 0x0050, 0x0732, 0x0050, 0x0782,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0919,\n    0x0050, 0x05F2, 0x0050, 0x0642, 0x0050, 0x0692,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0050, 0x05A2,\n    0x0050, 0x04B2, 0x0050, 0x0502, 0x0050, 0x0552,\n};\n\nstatic const s16 anim_2C_2D_values[] = {\n    0x0000, 0x0096, 0x0091, 0x0089, 0x0085, 0x0060, 0x003F, 0x005E,\n    0x008F, 0x00AC, 0x009C, 0x0077, 0x005B, 0x005D, 0x0066, 0x005F,\n    0x0057, 0x0055, 0x0054, 0x0054, 0x0053, 0x0053, 0x0053, 0x0054,\n    0x0057, 0x005B, 0x005E, 0x005F, 0x005E, 0x005D, 0x005B, 0x0058,\n    0x0054, 0x004F, 0x0049, 0x0043, 0x003D, 0x0037, 0x0032, 0x002E,\n    0x002B, 0x0029, 0x0028, 0x0026, 0x0025, 0x0024, 0x0024, 0x0023,\n    0x0024, 0x0024, 0x0025, 0x0026, 0x0027, 0x0029, 0x002B, 0x002D,\n    0x0030, 0x0034, 0x0038, 0x003C, 0x0040, 0x0045, 0x004A, 0x004F,\n    0x0054, 0x0059, 0x005F, 0x0064, 0x006A, 0x006F, 0x0082, 0x00A5,\n    0x00A7, 0x00A3, 0x00A0, 0x00A1, 0x00A3, 0x00A5, 0x00A8, 0x00A9,\n    0x00AA, 0x3FFF, 0xE6B4, 0xE6B4, 0xE6B4, 0xE6B4, 0xE6B4, 0xE6B4,\n    0xE6B4, 0xE6B4, 0xE6B4, 0xE6B4, 0xE6B4, 0xE60E, 0xE6B4, 0xE9C4,\n    0xED7F, 0xF183, 0xF571, 0xF8E9, 0xFB8A, 0xFC44, 0xFB65, 0xFA98,\n    0xFB8A, 0xFEF5, 0x03D7, 0x0942, 0x0E41, 0x11E4, 0x133A, 0x1284,\n    0x10CA, 0x0E3F, 0x0B1A, 0x078F, 0x03D3, 0x001C, 0xFCA0, 0xF991,\n    0xF668, 0xF2E4, 0xEFA3, 0xED44, 0xEC67, 0xECB5, 0xED62, 0xEE5E,\n    0xEF98, 0xF101, 0xF289, 0xF41E, 0xF5B1, 0xF731, 0xF88F, 0xF9BA,\n    0xFAA1, 0xFB36, 0xFB66, 0xF892, 0xF297, 0xED25, 0xEBEA, 0xF099,\n    0xF8D0, 0x0221, 0x0A1F, 0x0E5C, 0x1141, 0x14D4, 0x1611, 0x13B3,\n    0x0F80, 0x0B07, 0x07DA, 0x05F2, 0x0440, 0x02CC, 0x019E, 0x00BD,\n    0x0030, 0x0000, 0xF98A, 0xF98A, 0xF98A, 0xF98A, 0xF98A, 0xF98A,\n    0xF98A, 0xF98A, 0xF98A, 0xF98A, 0xF98A, 0xF98C, 0xF98A, 0xF981,\n    0xF976, 0xF96A, 0xF95F, 0xF955, 0xF94D, 0xF93A, 0xF920, 0xF91C,\n    0xF94D, 0xF971, 0xF960, 0xF962, 0xF9BF, 0xFABC, 0xFCA1, 0x01A2,\n    0x094C, 0x0FE4, 0x11B2, 0x0CEA, 0x040E, 0xF9D4, 0xF0F2, 0xEC21,\n    0xECDA, 0xF14D, 0xF744, 0xFC88, 0xFEE2, 0xFEDD, 0xFE83, 0xFDDE,\n    0xFCFA, 0xFBE0, 0xFA9A, 0xF933, 0xF7B5, 0xF62B, 0xF49D, 0xF318,\n    0xF1A4, 0xF04D, 0xEF1D, 0xEDD4, 0xEC74, 0xEB65, 0xEB0F, 0xEB36,\n    0xEB62, 0xEBA8, 0xEC19, 0xECCA, 0xEDCD, 0xEF35, 0xF115, 0xF534,\n    0xFB91, 0x0196, 0x04AE, 0x049F, 0x033D, 0x0105, 0xFE74, 0xFC04,\n    0xFA32, 0xF97C, 0xF2E9, 0xF2E9, 0xF2E9, 0xF2E9, 0xF2E9, 0xF2E9,\n    0xF2E9, 0xF2E9, 0xF2E9, 0xF2E9, 0xF2E9, 0xF2EB, 0xF2E9, 0xF2DC,\n    0xF2CD, 0xF2BC, 0xF2AC, 0xF29E, 0xF293, 0xF2D9, 0xF356, 0xF372,\n    0xF293, 0xF07E, 0xEDA4, 0xEA73, 0xE753, 0xE4B2, 0xE2F9, 0xE329,\n    0xE4F6, 0xE6DB, 0xE753, 0xE598, 0xE297, 0xDF57, 0xDCE0, 0xDC3A,\n    0xDE4A, 0xE261, 0xE726, 0xEB3E, 0xED52, 0xEDC7, 0xEDF2, 0xEDDC,\n    0xED90, 0xED19, 0xEC81, 0xEBD2, 0xEB17, 0xEA59, 0xE9A4, 0xE902,\n    0xE87D, 0xE81F, 0xE7F3, 0xE8A3, 0xEA33, 0xEBB6, 0xEC3D, 0xEBBB,\n    0xEAD4, 0xE9AC, 0xE864, 0xE71F, 0xE5FF, 0xE526, 0xE4B7, 0xE54B,\n    0xE6E2, 0xE8B8, 0xEA09, 0xEAD2, 0xEB8D, 0xEC34, 0xECC1, 0xED2D,\n    0xED73, 0xED8C, 0xE259, 0xE259, 0xE1CE, 0xE05B, 0xDE48, 0xDBDC,\n    0xD95F, 0xD719, 0xD54F, 0xD4F3, 0xD54F, 0xD515, 0xD54F, 0xD663,\n    0xD7B3, 0xD91D, 0xDA7F, 0xDBB8, 0xDCA5, 0xDCED, 0xDCAA, 0xDC64,\n    0xDCA5, 0xDD7E, 0xDE96, 0xDFD5, 0xE124, 0xE26B, 0xE392, 0xE569,\n    0xE7B8, 0xE8DF, 0xE73D, 0xE30B, 0xDDCC, 0xD7CD, 0xD158, 0xCABA,\n    0xC43F, 0xBE31, 0xB8DC, 0xB48D, 0xB18F, 0xAF75, 0xADA0, 0xAC15,\n    0xAAD7, 0xA9E8, 0xA94C, 0xA907, 0xA91A, 0xA989, 0xAA59, 0xAB8A,\n    0xAD22, 0xAF22, 0xB18F, 0xBD4D, 0xD140, 0xDE6F, 0xE287, 0xE55E,\n    0xE734, 0xE849, 0xE8DE, 0xE934, 0xE989, 0xEA20, 0xEB38, 0xED7D,\n    0xF054, 0xF20F, 0xF104, 0xECAC, 0xE64A, 0xDEDA, 0xD758, 0xD0C3,\n    0xCC16, 0xCA4F, 0xA9CE, 0xA9CE, 0x9935, 0x7168, 0x4174, 0x185D,\n    0x0527, 0x437A, 0x92F9, 0x9A9B, 0x8168, 0x4143, 0x0884, 0xF869,\n    0xEE92, 0xE93F, 0xE6AB, 0xE515, 0xE2B9, 0xE11C, 0xE21F, 0xE48F,\n    0xE734, 0xEA0E, 0xED9E, 0xF174, 0xF520, 0xF833, 0xFA3C, 0xFA39,\n    0xF862, 0xF626, 0xF4F0, 0xF4CE, 0xF4D7, 0xF502, 0xF547, 0xF59C,\n    0xF5F9, 0xF656, 0xF6A9, 0xF6EB, 0xF711, 0xF724, 0xF730, 0xF736,\n    0xF737, 0xF735, 0xF72F, 0xF727, 0xF71F, 0xF716, 0xF70F, 0xF70A,\n    0xF708, 0xF70A, 0xF711, 0xF6DE, 0xF659, 0xF5C5, 0xF561, 0xF570,\n    0xF633, 0xF7EA, 0xFBC2, 0x01C4, 0x0882, 0x0E87, 0x1262, 0x0C43,\n    0x07F5, 0x13BB, 0x2A0F, 0x497C, 0x6F11, 0x96CF, 0xBCAF, 0xDCB2,\n    0xF2D7, 0xFB1D, 0xDCC9, 0xDCC9, 0xDB41, 0xD77C, 0xD2B9, 0xCE35,\n    0xCB2F, 0xCD35, 0xCFBB, 0xCB7A, 0xC7BC, 0xCBB4, 0xD059, 0xD198,\n    0xD269, 0xD2EA, 0xD339, 0xD375, 0xD3BC, 0xD37B, 0xD2B8, 0xD277,\n    0xD3BC, 0xD6CA, 0xDADF, 0xDF7C, 0xE41E, 0xE846, 0xEB72, 0xED5B,\n    0xEE24, 0xEDF0, 0xECE1, 0xEB31, 0xE916, 0xE6AD, 0xE416, 0xE16D,\n    0xDED3, 0xDC65, 0xDA41, 0xD886, 0xD753, 0xD689, 0xD5F4, 0xD58D,\n    0xD551, 0xD53A, 0xD541, 0xD562, 0xD597, 0xD5DB, 0xD629, 0xD67B,\n    0xD6CB, 0xD715, 0xD753, 0xD770, 0xD778, 0xD792, 0xD7E4, 0xD897,\n    0xD9D3, 0xDBBE, 0xDF41, 0xE46E, 0xEA30, 0xEF70, 0xF317, 0xF217,\n    0xED2F, 0xE5C1, 0xDDD2, 0xD727, 0xD117, 0xCD96, 0xCD88, 0xCF71,\n    0xD1BE, 0xD2DC, 0x076C, 0x076C, 0x1296, 0x2D70, 0x4E05, 0x6A5D,\n    0x7885, 0x538D, 0x2194, 0x1591, 0x1F65, 0x4CC1, 0x772D, 0x8428,\n    0x8CCE, 0x924D, 0x95D1, 0x9886, 0x9B98, 0x9DB9, 0x9DA1, 0x9C85,\n    0x9B98, 0x9AD3, 0x999F, 0x9853, 0x9744, 0x96CB, 0x973E, 0x9B04,\n    0xA17E, 0xA67F, 0xA5D6, 0x9FDF, 0x9811, 0x8EEB, 0x84ED, 0x7A91,\n    0x705C, 0x66CB, 0x5E5C, 0x578E, 0x52DF, 0x4FC0, 0x4D44, 0x4B62,\n    0x4A10, 0x4943, 0x48F0, 0x490F, 0x4994, 0x4A75, 0x4BA9, 0x4D24,\n    0x4EDD, 0x50CA, 0x52DF, 0x5683, 0x5C8D, 0x641D, 0x6C51, 0x744B,\n    0x7B2A, 0x8010, 0x81FC, 0x816C, 0x7FB3, 0x7E2C, 0x7E29, 0x842A,\n    0x8865, 0x8231, 0x74CA, 0x61D6, 0x4BCE, 0x34C2, 0x18E2, 0xF94C,\n    0xDF6C, 0xD4B4, 0x2B98, 0x2B98, 0x2B98, 0x2B98, 0x2B98, 0x2B98,\n    0x2B98, 0x2B98, 0x2B98, 0x2D60, 0x2B98, 0x1C67, 0x0F13, 0x0CC7,\n    0x0C4D, 0x0D08, 0x0E5A, 0x0FA5, 0x104B, 0x1102, 0x1214, 0x1241,\n    0x104B, 0x0A17, 0x00D3, 0xF836, 0xF079, 0xE961, 0xE5F2, 0xE5A4,\n    0xE5DD, 0xE685, 0xE783, 0xE8BE, 0xEA1F, 0xEB8B, 0xECEC, 0xEE27,\n    0xEF25, 0xEFCE, 0xEFFB, 0xEFB7, 0xEF2E, 0xEE8E, 0xEE03, 0xEDB9,\n    0xEDA7, 0xED9F, 0xEDA2, 0xEDAC, 0xEDBB, 0xEDCE, 0xEDE2, 0xEDF6,\n    0xEE06, 0xEE12, 0xEE17, 0xEE12, 0xEE02, 0xEDE6, 0xEDB9, 0xED39,\n    0xEC4F, 0xEB3B, 0xEA3F, 0xE99F, 0xE881, 0xE7E6, 0xEAD0, 0xF3AE,\n    0xFFFD, 0x0B5B, 0x1168, 0x11DB, 0x0FEB, 0x0C71, 0x0844, 0x043C,\n    0x0133, 0x0000, 0x0E42, 0x0E42, 0x0E42, 0x0E42, 0x0E42, 0x0E42,\n    0x0E42, 0x0E42, 0x0E42, 0x0E42, 0x0E42, 0x0E42, 0x0E42, 0x0E42,\n    0x0E42, 0x0E42, 0x0E42, 0x0E42, 0x0E42, 0x0DEF, 0x0D64, 0x0D48,\n    0x0E42, 0x11B1, 0x16AB, 0x1A66, 0x1BE9, 0x1C2C, 0x1B53, 0x19D2,\n    0x1812, 0x1623, 0x1415, 0x11F7, 0x0FD8, 0x0DC8, 0x0BD7, 0x0A14,\n    0x088E, 0x0755, 0x06BF, 0x06E8, 0x0789, 0x085A, 0x0917, 0x0976,\n    0x097E, 0x0966, 0x0936, 0x08F3, 0x08A7, 0x0857, 0x080A, 0x07C8,\n    0x0798, 0x0781, 0x0789, 0x07B9, 0x0816, 0x08A8, 0x0976, 0x0B63,\n    0x0EDD, 0x133F, 0x17E0, 0x1C1B, 0x2182, 0x2701, 0x27FB, 0x2221,\n    0x1891, 0x0ECD, 0x0858, 0x0536, 0x02FB, 0x017F, 0x009D, 0x002B,\n    0x0004, 0x0000, 0xEA49, 0xEA49, 0xEA49, 0xEA49, 0xEA49, 0xEA49,\n    0xEA49, 0xEA49, 0xEA49, 0xEA49, 0xEA49, 0xEA49, 0xEA49, 0xEA49,\n    0xEA49, 0xEA49, 0xEA49, 0xEA49, 0xEA49, 0xEA5B, 0xEA79, 0xEA7F,\n    0xEA49, 0xEAC9, 0xEAF3, 0xE7A8, 0xDC2F, 0xCD41, 0xC5ED, 0xC6B6,\n    0xC89E, 0xCB6F, 0xCEF5, 0xD2F9, 0xD747, 0xDBAA, 0xDFEC, 0xE3D8,\n    0xE739, 0xE9D9, 0xEB71, 0xEC10, 0xEC05, 0xEBA0, 0xEB2F, 0xEB01,\n    0xEB14, 0xEB2F, 0xEB50, 0xEB74, 0xEB98, 0xEBBB, 0xEBD9, 0xEBF0,\n    0xEBFE, 0xEC00, 0xEBF4, 0xEBD7, 0xEBA6, 0xEB60, 0xEB01, 0xEA16,\n    0xE86B, 0xE65D, 0xE44D, 0xE299, 0xE0C7, 0xDF45, 0xDFC7, 0xE34E,\n    0xE88C, 0xEDC2, 0xF130, 0xF2DA, 0xF3FF, 0xF4B7, 0xF51C, 0xF546,\n    0xF54C, 0xF549, 0xEE92, 0xEE92, 0xED95, 0xEAF5, 0xE733, 0xE2D0,\n    0xDE4E, 0xDA2E, 0xD6F1, 0xD649, 0xD6F1, 0xD66B, 0xD6F1, 0xD965,\n    0xDC62, 0xDF9B, 0xE2C2, 0xE589, 0xE7A5, 0xE8D6, 0xE928, 0xE8B8,\n    0xE7A5, 0xE3FF, 0xDF24, 0xDE29, 0xE649, 0xF248, 0xF789, 0xF594,\n    0xF315, 0xF01F, 0xECC2, 0xE911, 0xE51F, 0xE0FC, 0xDCBC, 0xD871,\n    0xD42C, 0xCFFF, 0xCBFD, 0xC838, 0xC4C2, 0xC1AD, 0xBF0A, 0xBCED,\n    0xBB31, 0xB9A8, 0xB857, 0xB73E, 0xB661, 0xB5C2, 0xB565, 0xB54C,\n    0xB579, 0xB5F0, 0xB6B3, 0xB7C4, 0xB927, 0xBADF, 0xBCED, 0xC21E,\n    0xCB9C, 0xD6F7, 0xE1BD, 0xE97F, 0xEB9A, 0xE9D7, 0xE86A, 0xE960,\n    0xEB02, 0xEBDD, 0xEA7F, 0xE667, 0xE09C, 0xD9F8, 0xD352, 0xCD86,\n    0xC96C, 0xC7DD, 0x6508, 0x6508, 0x6F8C, 0x88BD, 0xA705, 0xC0DA,\n    0xCCAE, 0xA32A, 0x7081, 0x71AB, 0x8A2F, 0xBD8A, 0xE8B7, 0xF31E,\n    0xF819, 0xF958, 0xF88E, 0xF76B, 0xF7A3, 0xF85E, 0xF819, 0xF783,\n    0xF747, 0xF7BC, 0xF86C, 0xF8D6, 0xF8D7, 0xF891, 0xF7F5, 0xF71D,\n    0xF636, 0xF543, 0xF446, 0xF341, 0xF238, 0xF12C, 0xF022, 0xEF1C,\n    0xEE1C, 0xED24, 0xEC39, 0xEB5C, 0xEA90, 0xE9D9, 0xE938, 0xE8B0,\n    0xE853, 0xE82B, 0xE82F, 0xE856, 0xE896, 0xE8E6, 0xE93D, 0xE992,\n    0xE9DC, 0xEA12, 0xEA2B, 0xEA1D, 0xE9DF, 0xE968, 0xE8B0, 0xE6C4,\n    0xE344, 0xDF02, 0xDACC, 0xD774, 0xD5D7, 0xD520, 0xD390, 0xD0EE,\n    0xCA96, 0xBE0C, 0xAB8E, 0x923E, 0x7437, 0x54A3, 0x36A0, 0x1D4E,\n    0x0BD2, 0x054B, 0x2753, 0x2753, 0x28B0, 0x2BF8, 0x2FF9, 0x337E,\n    0x3552, 0x3124, 0x2B6E, 0x2ADF, 0x2B6E, 0x2AAD, 0x2A83, 0x2BBF,\n    0x2D62, 0x2F2C, 0x30E1, 0x3242, 0x3312, 0x3339, 0x32B0, 0x3154,\n    0x2EFF, 0x2AC8, 0x24EE, 0x1F0D, 0x185F, 0x11A9, 0x0ED8, 0x0F71,\n    0x1053, 0x1176, 0x12D0, 0x1459, 0x1607, 0x17D1, 0x19AD, 0x1B94,\n    0x1D7B, 0x1F59, 0x2126, 0x22D7, 0x2465, 0x25C6, 0x26F0, 0x27DB,\n    0x289A, 0x2946, 0x29DD, 0x2A5E, 0x2AC5, 0x2B12, 0x2B43, 0x2B55,\n    0x2B46, 0x2B15, 0x2AC0, 0x2A45, 0x29A1, 0x28D4, 0x27DB, 0x2562,\n    0x20DC, 0x1B73, 0x1651, 0x129D, 0x1142, 0x11BD, 0x1313, 0x1633,\n    0x19D0, 0x1B61, 0x1CBD, 0x1ED7, 0x2116, 0x2367, 0x25B6, 0x27F0,\n    0x2A01, 0x2BD6, 0x193F, 0x193F, 0x1ED9, 0x2C52, 0x3CAC, 0x4AE9,\n    0x520C, 0x3F90, 0x26B2, 0x1FD2, 0x26B2, 0x4991, 0x694D, 0x717D,\n    0x7609, 0x7809, 0x7894, 0x78C3, 0x79AD, 0x7A16, 0x7923, 0x7877,\n    0x79BB, 0x7ECA, 0x8652, 0x8D21, 0x926E, 0x9705, 0x9A25, 0x9C4A,\n    0x9E6E, 0xA08F, 0xA2AA, 0xA4BD, 0xA6C6, 0xA8C3, 0xAAB1, 0xAC8E,\n    0xAE57, 0xB00B, 0xB1A7, 0xB329, 0xB48E, 0xB5D4, 0xB6F8, 0xB7F9,\n    0xB8ED, 0xB9E4, 0xBAD6, 0xBBBA, 0xBC87, 0xBD35, 0xBDB9, 0xBE0C,\n    0xBE25, 0xBDFA, 0xBD83, 0xBCB6, 0xBB8C, 0xB9FB, 0xB7F9, 0xB2FA,\n    0xA9DF, 0x9ECC, 0x93E3, 0x8B47, 0x86C1, 0x84AB, 0x81F9, 0x7DED,\n    0x773D, 0x6C65, 0x5CBD, 0x4722, 0x2DCA, 0x132A, 0xF9B8, 0xE3E6,\n    0xD429, 0xCCF6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0006, 0x0000, 0xFFCE, 0xFFA0, 0xFF96,\n    0xFF91, 0xFF91, 0xFF92, 0xFF93, 0xFF94, 0xFF94, 0xFF95, 0xFF96,\n    0xFF94, 0xFF8F, 0xFF89, 0xFF82, 0xFF7A, 0xFF73, 0xFF6C, 0xFF66,\n    0xFF5F, 0xFF59, 0xFF54, 0xFF50, 0xFF4C, 0xFF48, 0xFF44, 0xFF41,\n    0xFF3F, 0xFF3D, 0xFF37, 0xFF26, 0xFF0F, 0xFEF3, 0xFED6, 0xFEBA,\n    0xFEA1, 0xFE8F, 0xFE86, 0xFE88, 0xFE9A, 0xFEBC, 0xFEF1, 0xFF3D,\n    0xFFAB, 0x003D, 0x00EF, 0x01BA, 0x0295, 0x037B, 0x0464, 0x0549,\n    0x0624, 0x06EE, 0x079F, 0x0831, 0x07B9, 0x065C, 0x05AD, 0x0741,\n    0x1856, 0x1A74, 0x1900, 0x1865, 0x0D0A, 0x09F9, 0x0872, 0x069C,\n    0x02A7, 0x0000, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF2E, 0xFF30, 0xFF3C, 0xFF47, 0xFF4B,\n    0xFF4C, 0xFF4D, 0xFF4E, 0xFF4E, 0xFF4F, 0xFF4E, 0xFF4D, 0xFF4D,\n    0xFF4F, 0xFF52, 0xFF57, 0xFF5C, 0xFF62, 0xFF68, 0xFF6E, 0xFF74,\n    0xFF7C, 0xFF83, 0xFF8B, 0xFF92, 0xFF99, 0xFFA1, 0xFFA8, 0xFFAF,\n    0xFFB4, 0xFFB7, 0xFFA8, 0xFF7C, 0xFF3B, 0xFEED, 0xFE9A, 0xFE48,\n    0xFE01, 0xFDCC, 0xFDB0, 0xFDB6, 0xFDE5, 0xFE45, 0xFEDD, 0xFFB7,\n    0x00E9, 0x027E, 0x0465, 0x068E, 0x08E7, 0x0B62, 0x0DEC, 0x1077,\n    0x12F0, 0x1549, 0x1770, 0x1955, 0x1B03, 0x1C42, 0x1C9D, 0x1B9F,\n    0x1044, 0x1A12, 0x177F, 0x1662, 0x14B0, 0x10C7, 0x0C72, 0x080E,\n    0x028B, 0xFF30, 0xC9D8, 0xC9D8, 0xC9D8, 0xC9D8, 0xC9D8, 0xC9D8,\n    0xC9D8, 0xC9D8, 0xC9D8, 0xC89F, 0xC9D8, 0xD425, 0xDD67, 0xDF85,\n    0xE082, 0xE0B8, 0xE082, 0xE03C, 0xE042, 0xE03C, 0xDFE9, 0xDFC2,\n    0xE042, 0xE16C, 0xE2E6, 0xE498, 0xE66A, 0xE842, 0xEA09, 0xEBDA,\n    0xEDC7, 0xEFAB, 0xF15E, 0xF2FF, 0xF4B4, 0xF666, 0xF7FC, 0xF95E,\n    0xFA74, 0xFB25, 0xFB9B, 0xFC0C, 0xFC74, 0xFCD1, 0xFD20, 0xFD5C,\n    0xFD82, 0xFD90, 0xFD82, 0xFD55, 0xFD05, 0xFC8F, 0xFBF0, 0xFB25,\n    0xFA27, 0xF8F4, 0xF78F, 0xF5FB, 0xF43C, 0xF252, 0xF043, 0xEE11,\n    0xEBBE, 0xE94E, 0xE6C3, 0xE421, 0xE144, 0xDD85, 0xD821, 0xD054,\n    0xB5D3, 0xBF0F, 0xBBD3, 0xBC3B, 0xBB81, 0xBD01, 0xBEF5, 0xC17E,\n    0xC663, 0xC9D8, 0x3996, 0x3A60, 0x3C0F, 0x3D97, 0x3DED, 0x3C07,\n    0x343C, 0x2829, 0x1EB2, 0x1D3A, 0x1EB2, 0x1E87, 0x1EB2, 0x1F7B,\n    0x2070, 0x2179, 0x227A, 0x235A, 0x23FE, 0x23B7, 0x22BA, 0x2246,\n    0x2395, 0x26EC, 0x2B60, 0x306E, 0x3592, 0x3A4A, 0x3E11, 0x400F,\n    0x40A7, 0x412D, 0x42F5, 0x465D, 0x4A9A, 0x4F3F, 0x53E0, 0x5811,\n    0x5B65, 0x5D70, 0x5E96, 0x5F85, 0x603F, 0x60C6, 0x611E, 0x6148,\n    0x6148, 0x611F, 0x60D1, 0x6060, 0x5FCE, 0x5F1F, 0x5E54, 0x5D70,\n    0x5C55, 0x5AEA, 0x593A, 0x5750, 0x5537, 0x52FB, 0x50A7, 0x4E47,\n    0x4BE4, 0x498C, 0x4748, 0x4524, 0x43A2, 0x4276, 0x4073, 0x3C6D,\n    0x2A0B, 0x2AD9, 0x2EBB, 0x32B7, 0x33D5, 0x30C2, 0x2B4F, 0x253F,\n    0x2052, 0x1E4A, 0x100E, 0x0FFF, 0x0FD0, 0x0F83, 0x0F17, 0x0E8D,\n    0x0D7E, 0x0C1A, 0x0B40, 0x0C07, 0x0D15, 0x0CCE, 0x0C48, 0x0C0B,\n    0x0BD2, 0x0B9E, 0x0B6F, 0x0B47, 0x0B26, 0x0B1D, 0x0B2A, 0x0B35,\n    0x0B26, 0x0B30, 0x0B6D, 0x0BA2, 0x0B93, 0x0B05, 0x09BB, 0x074B,\n    0x03A2, 0xFF0E, 0xF9D6, 0xF3A9, 0xEC6D, 0xE4C0, 0xDD3E, 0xD686,\n    0xD134, 0xCDE6, 0xCC06, 0xCA90, 0xC97D, 0xC8C3, 0xC85C, 0xC83E,\n    0xC862, 0xC8BF, 0xC94E, 0xCA07, 0xCAE1, 0xCBD4, 0xCCD8, 0xCDE6,\n    0xCF15, 0xD083, 0xD22C, 0xD40E, 0xD624, 0xD86B, 0xDAE1, 0xDD82,\n    0xE04A, 0xE336, 0xE644, 0xE96F, 0xEDA3, 0xF36B, 0xFA38, 0x0179,\n    0x0DEC, 0x09D5, 0x02CB, 0xFC78, 0xFA85, 0xFED5, 0x0703, 0x1049,\n    0x17E3, 0x1B09, 0x0F96, 0x0E80, 0x0BE1, 0x08A7, 0x05C3, 0x0424,\n    0x0542, 0x082C, 0x0A36, 0x0934, 0x07AF, 0x0825, 0x08EF, 0x093F,\n    0x0986, 0x09C5, 0x09FC, 0x0A2B, 0x0A52, 0x0A60, 0x0A53, 0x0A45,\n    0x0A52, 0x0A36, 0x09D2, 0x0975, 0x0970, 0x0A12, 0x0BAA, 0x1000,\n    0x16BF, 0x1D11, 0x201E, 0x1FB4, 0x1DDC, 0x1B17, 0x17E6, 0x14CA,\n    0x1243, 0x10D2, 0x1031, 0x0FBE, 0x0F74, 0x0F4E, 0x0F46, 0x0F57,\n    0x0F7B, 0x0FAD, 0x0FE8, 0x1026, 0x1062, 0x1096, 0x10BD, 0x10D2,\n    0x10DB, 0x10E2, 0x10E8, 0x10F0, 0x10FA, 0x1106, 0x1116, 0x112C,\n    0x1147, 0x116A, 0x1195, 0x11CA, 0x1283, 0x13B6, 0x149B, 0x146B,\n    0x0CD6, 0x0B41, 0x0A6A, 0x0A31, 0x0A79, 0x0B7F, 0x0D38, 0x0F1D,\n    0x10A4, 0x1144, 0xC65E, 0xC5FA, 0xC4D4, 0xC2F8, 0xC072, 0xBD4D,\n    0xB76E, 0xAFC0, 0xAAD4, 0xAE3D, 0xB335, 0xB1C7, 0xAF3F, 0xAE32,\n    0xAD3C, 0xAC60, 0xAB9D, 0xAAF7, 0xAA6D, 0xAA41, 0xAA73, 0xAAA2,\n    0xAA6D, 0xA9E3, 0xA94B, 0xA896, 0xA7B1, 0xA68E, 0xA51C, 0xA305,\n    0xA042, 0x9D30, 0x9A31, 0x9719, 0x93A9, 0x9020, 0x8CBB, 0x89BB,\n    0x875D, 0x85E0, 0x8501, 0x8451, 0x83CD, 0x8372, 0x833C, 0x8329,\n    0x8334, 0x835C, 0x839C, 0x83F2, 0x845A, 0x84D1, 0x8554, 0x85E0,\n    0x8684, 0x874F, 0x883F, 0x894E, 0x8A79, 0x8BBC, 0x8D13, 0x8E79,\n    0x8FEB, 0x9165, 0x92E2, 0x945E, 0x9683, 0x995D, 0x9C05, 0x9D92,\n    0x97D5, 0x94F3, 0x9215, 0x9067, 0x9118, 0x9560, 0x9C4B, 0xA3CA,\n    0xA9CD, 0xAC44, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x000F, 0x0038, 0x0074, 0x00BC, 0x0108, 0x0153,\n    0x0193, 0x01C4, 0x01DC, 0x01D6, 0x01AB, 0x0153, 0x00C6, 0x0000,\n    0xFEEF, 0xFD91, 0xFBF0, 0xFA17, 0xF812, 0xF5EA, 0xF3AB, 0xF160,\n    0xEF13, 0xECD0, 0xEAA1, 0xE890, 0xE627, 0xE3A5, 0xE22B, 0xE633,\n    0xFA22, 0xFAA2, 0xF990, 0xF92F, 0xFA28, 0xFB8C, 0xFD19, 0xFE88,\n    0xFF97, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0012, 0x0045, 0x008F, 0x00E7, 0x0145, 0x01A0,\n    0x01F0, 0x022B, 0x024A, 0x0242, 0x020D, 0x01A0, 0x00F4, 0x0000,\n    0xFEB0, 0xFD01, 0xFAFF, 0xF8B8, 0xF63A, 0xF393, 0xF0CF, 0xEDFD,\n    0xEB2A, 0xE863, 0xE5B7, 0xE332, 0xE02C, 0xDD16, 0xDBA3, 0xE2ED,\n    0x0201, 0x0244, 0x0032, 0xFECC, 0xFEB0, 0xFEDB, 0xFF30, 0xFF90,\n    0xFFE0, 0x0000, 0xBF40, 0xBF40, 0xBF40, 0xBF40, 0xBF40, 0xBF40,\n    0xBF40, 0xBF40, 0xBF40, 0xBD03, 0xBF40, 0xD24C, 0xE31B, 0xE637,\n    0xE717, 0xE677, 0xE519, 0xE3BA, 0xE31B, 0xE31B, 0xE31B, 0xE31B,\n    0xE31B, 0xE31B, 0xE31B, 0xE31B, 0xE31B, 0xE31B, 0xE31B, 0xE2E5,\n    0xE28D, 0xE27B, 0xE31B, 0xE487, 0xE66D, 0xE893, 0xEAC3, 0xECC4,\n    0xEE5C, 0xEF54, 0xEFE2, 0xF061, 0xF0D0, 0xF12D, 0xF175, 0xF1A7,\n    0xF1C2, 0xF1C4, 0xF1AA, 0xF173, 0xF11E, 0xF0A8, 0xF010, 0xEF54,\n    0xEE60, 0xED29, 0xEBB8, 0xEA15, 0xE84B, 0xE661, 0xE461, 0xE254,\n    0xE044, 0xDE38, 0xDC3C, 0xDA57, 0xDA65, 0xDA37, 0xD3C5, 0xABFC,\n    0xAF9D, 0xB417, 0xB1B5, 0xB06E, 0xB27F, 0xB583, 0xB8E3, 0xBC07,\n    0xBE59, 0xBF40, 0x1DE1, 0x1E7F, 0x2005, 0x21F9, 0x23DD, 0x2537,\n    0x259F, 0x256B, 0x2537, 0x2614, 0x2537, 0x1D5C, 0x175C, 0x1881,\n    0x1B09, 0x1E5E, 0x21E8, 0x2510, 0x2740, 0x2789, 0x2670, 0x258A,\n    0x2670, 0x2958, 0x2D2D, 0x3192, 0x3629, 0x3A95, 0x3E79, 0x41A1,\n    0x444D, 0x46CF, 0x4979, 0x4C94, 0x5007, 0x5393, 0x56F9, 0x59FB,\n    0x5C5B, 0x5DD8, 0x5EB1, 0x5F50, 0x5FBB, 0x5FF7, 0x600C, 0x6000,\n    0x5FD9, 0x5F9C, 0x5F51, 0x5EFE, 0x5EA8, 0x5E56, 0x5E0F, 0x5DD8,\n    0x5DBA, 0x5DB1, 0x5DB3, 0x5DB6, 0x5DB1, 0x5D99, 0x5D64, 0x5D0A,\n    0x5C7E, 0x5BB9, 0x5AAF, 0x5958, 0x571E, 0x5349, 0x4D92, 0x45B6,\n    0x2C3B, 0x2A22, 0x2D65, 0x2F9D, 0x2E6A, 0x2C5F, 0x29F4, 0x27A3,\n    0x25E6, 0x2537, 0xE7BC, 0xE880, 0xEA77, 0xED1E, 0xEFF4, 0xF278,\n    0xF52A, 0xF7E6, 0xF935, 0xF661, 0xF304, 0xF3CA, 0xF55A, 0xF5ED,\n    0xF670, 0xF6E4, 0xF748, 0xF79E, 0xF7E5, 0xF808, 0xF800, 0xF7EB,\n    0xF7E5, 0xF7A4, 0xF705, 0xF66A, 0xF630, 0xF6B6, 0xF85C, 0xFC3A,\n    0x023D, 0x0908, 0x0F39, 0x150C, 0x1B5F, 0x21C9, 0x27E1, 0x2D3E,\n    0x3177, 0x3423, 0x35BA, 0x36FE, 0x37F3, 0x38A0, 0x390A, 0x3935,\n    0x3926, 0x38E3, 0x3871, 0x37D4, 0x3713, 0x3631, 0x3535, 0x3423,\n    0x32DB, 0x3141, 0x2F5E, 0x2D3A, 0x2ADF, 0x2856, 0x25A8, 0x22DF,\n    0x2004, 0x1D20, 0x1A3C, 0x1761, 0x14AF, 0x11A6, 0x0D5F, 0x06F4,\n    0xF071, 0xF161, 0xF1A1, 0xF065, 0xEC1C, 0xE69E, 0xE0CD, 0xDB8D,\n    0xD7C1, 0xD64A, 0xF84A, 0xF8D9, 0xFA26, 0xFB9E, 0xFCB2, 0xFCCF,\n    0xFA50, 0xF632, 0xF3D4, 0xF71E, 0xFAFB, 0xF960, 0xF6FB, 0xF64A,\n    0xF5C7, 0xF565, 0xF51B, 0xF4DF, 0xF4A5, 0xF485, 0xF48B, 0xF49E,\n    0xF4A5, 0xF4CB, 0xF527, 0xF581, 0xF5A1, 0xF550, 0xF455, 0xF1C7,\n    0xEDC8, 0xE9AD, 0xE6CE, 0xE529, 0xE3D2, 0xE2C0, 0xE1EA, 0xE146,\n    0xE0CB, 0xE071, 0xE01E, 0xDFC3, 0xDF66, 0xDF0C, 0xDEB9, 0xDE73,\n    0xDE3F, 0xDE22, 0xDE21, 0xDE41, 0xDE87, 0xDEF8, 0xDF9A, 0xE071,\n    0xE19C, 0xE329, 0xE509, 0xE729, 0xE978, 0xEBE6, 0xEE61, 0xF0D7,\n    0xF337, 0xF571, 0xF773, 0xF92B, 0xFA31, 0xFA5A, 0xF9F6, 0xF953,\n    0xF5E9, 0xF42B, 0xF3B9, 0xF2F5, 0xF1C6, 0xF057, 0xEEDD, 0xED8D,\n    0xEC9D, 0xEC41, 0xD24D, 0xD1D5, 0xD058, 0xCDBA, 0xC9DE, 0xC4A9,\n    0xB986, 0xAAD6, 0xA2ED, 0xAFE1, 0xBF3A, 0xBA29, 0xB1C2, 0xAF15,\n    0xACED, 0xAB2F, 0xA9C5, 0xA894, 0xA786, 0xA6FA, 0xA718, 0xA76D,\n    0xA786, 0xA773, 0xA779, 0xA776, 0xA747, 0xA6C9, 0xA5DB, 0xA43C,\n    0xA1DE, 0x9EED, 0x9B96, 0x97A2, 0x9303, 0x8E1C, 0x8951, 0x8507,\n    0x81A2, 0x7F83, 0x7E57, 0x7D7D, 0x7CEA, 0x7C96, 0x7C79, 0x7C8A,\n    0x7CC0, 0x7D13, 0x7D7A, 0x7DED, 0x7E64, 0x7ED4, 0x7F37, 0x7F83,\n    0x7FCF, 0x8038, 0x80B4, 0x8141, 0x81D9, 0x8279, 0x831B, 0x83BC,\n    0x8455, 0x84E3, 0x8560, 0x85C9, 0x857E, 0x849B, 0x8430, 0x854C,\n    0x90F1, 0x9187, 0x9354, 0x95FC, 0x9B76, 0xA232, 0xA92F, 0xAF6C,\n    0xB3E7, 0xB59E, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001,\n    0x4171, 0xBF5F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009,\n    0x0018, 0x001B, 0x0000, 0xFF7D, 0xFEA0, 0xFDD8, 0xFD95, 0xFE47,\n    0x0292, 0x08B8, 0x0A8F, 0x0233, 0xF58A, 0xF017, 0xFB08, 0x0D2F,\n    0x1688, 0x0C43, 0xF930, 0xEDAC, 0xF347, 0x0072, 0x08E3, 0x05E8,\n    0xFE32, 0xF98A, 0xFC36, 0x01F1, 0x05B4, 0x0589, 0x03C8, 0x01DF,\n    0x013E, 0x0207, 0x034D, 0x04E4, 0x06A0, 0x0853, 0x09D1, 0x0AEE,\n    0x0B7E, 0x0B6E, 0x0AE0, 0x09F0, 0x08BB, 0x075D, 0x05F3, 0x049B,\n    0x01FB, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFE,\n    0xFFFA, 0xFFFA, 0x0000, 0x000D, 0x001F, 0x0034, 0x004F, 0x006F,\n    0x00A9, 0x00F2, 0x011A, 0x0108, 0x00D6, 0x009E, 0x004E, 0xFFFB,\n    0xFFF7, 0x00B7, 0x01CA, 0x0229, 0x0104, 0xFF2D, 0xFE15, 0xFE98,\n    0xFFDB, 0x00BC, 0x00C5, 0x006D, 0x0000, 0xFF94, 0xFF16, 0xFE94,\n    0xFE1A, 0xFD9C, 0xFD0A, 0xFC72, 0xFBDE, 0xFB5C, 0xFAF6, 0xFAB9,\n    0xFAB1, 0xFAF2, 0xFB7A, 0xFC34, 0xFD0B, 0xFDE9, 0xFEBA, 0xFF6A,\n    0xFFDB, 0x0000, 0xE928, 0xE8CC, 0xE7CA, 0xE644, 0xE458, 0xE0FF,\n    0xDC84, 0xD8FE, 0xD887, 0xE3F8, 0xEEF0, 0xE61A, 0xDBCA, 0xDA6D,\n    0xDA53, 0xDB0D, 0xDC2A, 0xDD3C, 0xDDD3, 0xDD2F, 0xDBE9, 0xDB98,\n    0xDDD3, 0xE326, 0xEA62, 0xF283, 0xFA87, 0x0169, 0x0628, 0x0723,\n    0x04DA, 0x017C, 0xFF3C, 0xFE82, 0xFE27, 0xFDFA, 0xFDCA, 0xFD66,\n    0xFCA3, 0xFBAB, 0xFAC7, 0xFA42, 0xF9D1, 0xF8E1, 0xF6E1, 0xF463,\n    0xF287, 0xF22F, 0xF27A, 0xF1EC, 0xEF89, 0xEC4C, 0xE9A7, 0xE859,\n    0xE7A3, 0xE6B8, 0xE4E5, 0xE2DD, 0xE1E6, 0xE25F, 0xE390, 0xE51D,\n    0xE6AA, 0xE838, 0xE9F7, 0xEBCE, 0xEDA4, 0xEF62, 0xF0EE, 0xF231,\n    0xF312, 0xF349, 0xF2D0, 0xF1F3, 0xF0FE, 0xF03C, 0xEFFB, 0xF084,\n    0xF6B5, 0xFC62, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xFFF4, 0xFFDA, 0xFFC7, 0xFFCE, 0x0000,\n    0x0093, 0x017B, 0x0268, 0x030C, 0x0319, 0x0062, 0xFD8F, 0xFD2E,\n    0xFD25, 0xFD5A, 0xFDB4, 0xFE19, 0xFE6F, 0xFEEE, 0xFF99, 0x0000,\n    0x001A, 0x0028, 0x002C, 0x0029, 0x0021, 0x0016, 0x000B, 0x0003,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x131B, 0x131B, 0x12AA, 0x11D4, 0x1153, 0x11E3,\n    0x161D, 0x1BCE, 0x1C7A, 0x0DE8, 0xFDED, 0xFDBC, 0x012E, 0x0186,\n    0x01AD, 0x01B3, 0x01A6, 0x0198, 0x0197, 0x01A6, 0x01B6, 0x01B6,\n    0x0197, 0x013F, 0x00B7, 0x0024, 0xFFAB, 0xFF6C, 0xFF8E, 0x009B,\n    0x0279, 0x044E, 0x0541, 0x0511, 0x0446, 0x0336, 0x0236, 0x019F,\n    0x0168, 0x015A, 0x017C, 0x01DA, 0x027D, 0x04A3, 0x0720, 0x0883,\n    0x09C5, 0x0AEF, 0x0C0A, 0x0D1E, 0x0E35, 0x0F50, 0x1051, 0x1112,\n    0x119F, 0x1222, 0x129D, 0x1310, 0x137E, 0x13E7, 0x144D, 0x14B1,\n    0x1515, 0x1556, 0x1567, 0x1572, 0x159E, 0x1612, 0x16F5, 0x1AC3,\n    0x1E58, 0x1C48, 0x19C5, 0x1C3E, 0x1D94, 0x19CF, 0x1464, 0x0EBF,\n    0x0A4F, 0x0884, 0x5639, 0x5639, 0x595E, 0x60C9, 0x6971, 0x704C,\n    0x7419, 0x7681, 0x78DB, 0x7BB6, 0x7E26, 0x7FD1, 0x809B, 0x80A3,\n    0x807B, 0x8033, 0x7FDE, 0x7F92, 0x7F5F, 0x7FAA, 0x8048, 0x8070,\n    0x7F5F, 0x7D1C, 0x7A43, 0x76FD, 0x7374, 0x6FCF, 0x6C39, 0x6869,\n    0x643B, 0x6014, 0x5C55, 0x58C3, 0x54FF, 0x5141, 0x4DBE, 0x4AAE,\n    0x4846, 0x46BD, 0x45C9, 0x44FB, 0x4453, 0x43D0, 0x4373, 0x433C,\n    0x432A, 0x433E, 0x4376, 0x43D4, 0x4457, 0x44FF, 0x45CC, 0x46BD,\n    0x47E3, 0x4946, 0x4AE0, 0x4CA9, 0x4E9A, 0x50AB, 0x52D6, 0x5511,\n    0x5757, 0x599F, 0x5BE3, 0x5E1A, 0x603D, 0x6246, 0x642C, 0x65CA,\n    0x65B4, 0x6378, 0x6031, 0x5C43, 0x575B, 0x5170, 0x4B5B, 0x45F6,\n    0x421B, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_2E.inc.c",
    "content": "static const struct Animation anim_2E[] = {\n    1,\n    189,\n    0,\n    0,\n    0x2F,\n    ANIMINDEX_NUMPARTS(anim_2E_indices),\n    anim_2E_values,\n    anim_2E_indices,\n    0,\n};\n\n\nstatic const u16 anim_2E_indices[] = {\n    0x0001, 0x0000, 0x002F, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0030, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002F, 0x05BB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002F, 0x058C,\n    0x002F, 0x04FF, 0x002F, 0x052E, 0x002F, 0x055D,\n    0x0001, 0x04FB, 0x0001, 0x04FC, 0x0001, 0x04FD,\n    0x002F, 0x00ED, 0x002F, 0x011C, 0x002F, 0x014B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002F, 0x00BE,\n    0x002F, 0x0031, 0x002F, 0x0060, 0x002F, 0x008F,\n    0x0001, 0x04F7, 0x0001, 0x04F8, 0x0001, 0x04F9,\n    0x002F, 0x0236, 0x002F, 0x0265, 0x002F, 0x0294,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002F, 0x0207,\n    0x002F, 0x017A, 0x002F, 0x01A9, 0x002F, 0x01D8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x04FA,\n    0x002F, 0x046A, 0x002F, 0x0499, 0x002F, 0x04C8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002F, 0x043B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002F, 0x040C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x04FE,\n    0x002F, 0x037F, 0x002F, 0x03AE, 0x002F, 0x03DD,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002F, 0x0350,\n    0x002F, 0x02C3, 0x002F, 0x02F2, 0x002F, 0x0321,\n};\n\nstatic const s16 anim_2E_values[] = {\n    0x0000, 0x0059, 0x005A, 0x005C, 0x005F, 0x0062, 0x0066, 0x006A,\n    0x006D, 0x0070, 0x0071, 0x0072, 0x0072, 0x0073, 0x0074, 0x0074,\n    0x0075, 0x0075, 0x0075, 0x0075, 0x0076, 0x0076, 0x0076, 0x0075,\n    0x0075, 0x0075, 0x0075, 0x0074, 0x0074, 0x0073, 0x0073, 0x0072,\n    0x0071, 0x006E, 0x0067, 0x0060, 0x005A, 0x0056, 0x0053, 0x0050,\n    0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E, 0x004E,\n    0x3FFF, 0xF5A9, 0xF75E, 0xFAA3, 0xFFBC, 0x0600, 0x0CCA, 0x1371,\n    0x194F, 0x1DBC, 0x2010, 0x210D, 0x21E1, 0x228F, 0x2316, 0x2378,\n    0x23B6, 0x23D1, 0x23CA, 0x23A1, 0x2357, 0x22EE, 0x2267, 0x21C1,\n    0x20FF, 0x2021, 0x1F29, 0x1E16, 0x1CEA, 0x1BA6, 0x1A4C, 0x18DA,\n    0x1754, 0x121E, 0x0857, 0xFE11, 0xF75E, 0xF518, 0xF4CF, 0xF5A9,\n    0xF6CC, 0xF75E, 0xF75E, 0xF75E, 0xF75E, 0xF75E, 0xF75E, 0xF75E,\n    0xF22A, 0xF2F0, 0xF450, 0xF674, 0xF916, 0xFBF0, 0xFEBD, 0x0136,\n    0x0317, 0x041A, 0x048F, 0x04F4, 0x054B, 0x0592, 0x05CB, 0x05F5,\n    0x0611, 0x061E, 0x061E, 0x0610, 0x05F5, 0x05CC, 0x0596, 0x0553,\n    0x0504, 0x04A8, 0x043F, 0x03CA, 0x034A, 0x02BD, 0x0225, 0x0182,\n    0xFF2B, 0xFAB4, 0xF600, 0xF2F0, 0xF1E6, 0xF1C5, 0xF229, 0xF2AD,\n    0xF2F0, 0xF2F0, 0xF2F0, 0xF2F0, 0xF2F0, 0xF2F0, 0xF2F0, 0xEECC,\n    0xEE0A, 0xEC9F, 0xEA70, 0xE7C1, 0xE4D5, 0xE1F2, 0xDF5B, 0xDD56,\n    0xDC25, 0xDB7B, 0xDAD8, 0xDA3E, 0xD9AF, 0xD929, 0xD8B0, 0xD842,\n    0xD7E1, 0xD78E, 0xD749, 0xD714, 0xD6EE, 0xD6D9, 0xD6D6, 0xD6E5,\n    0xD707, 0xD73D, 0xD787, 0xD7E6, 0xD85C, 0xD8E9, 0xD98D, 0xDCB6,\n    0xE300, 0xE9AF, 0xEE0A, 0xEF7F, 0xEFAD, 0xEF21, 0xEE67, 0xEE0A,\n    0xEE0A, 0xEE0A, 0xEE0A, 0xEE0A, 0xEE0A, 0xEE0A, 0xDCF9, 0xDCA5,\n    0xDC12, 0xDB2B, 0xDA0E, 0xD8DB, 0xD7B3, 0xD6B5, 0xD602, 0xD5B8,\n    0xD5B4, 0xD5BD, 0xD5D2, 0xD5F2, 0xD61D, 0xD650, 0xD68C, 0xD6CE,\n    0xD718, 0xD766, 0xD7BA, 0xD810, 0xD86A, 0xD8C5, 0xD921, 0xD97C,\n    0xD9D7, 0xDA30, 0xDA86, 0xDAD7, 0xDB25, 0xDB6C, 0xDB68, 0xDB37,\n    0xDB6F, 0xDCA5, 0xDF17, 0xE256, 0xE5F2, 0xE97D, 0xEC89, 0xEC89,\n    0xEC89, 0xEC89, 0xEC89, 0xEC89, 0xEC89, 0xE686, 0xE734, 0xE837,\n    0xE9C8, 0xEBB5, 0xEDCC, 0xEFDA, 0xF1AC, 0xF310, 0xF3D3, 0xF42F,\n    0xF481, 0xF4C9, 0xF507, 0xF53B, 0xF564, 0xF584, 0xF599, 0xF5A4,\n    0xF5A5, 0xF59C, 0xF589, 0xF56C, 0xF545, 0xF514, 0xF4D8, 0xF493,\n    0xF444, 0xF3EA, 0xF387, 0xF31A, 0xF2A2, 0xF0A1, 0xECD3, 0xE911,\n    0xE734, 0xE7B2, 0xE962, 0xEBB4, 0xEE18, 0xEFFE, 0xEFFE, 0xEFFE,\n    0xEFFE, 0xEFFE, 0xEFFE, 0xEFFE, 0xD2A9, 0xD3BC, 0xD5B3, 0xD8B9,\n    0xDC71, 0xE07D, 0xE481, 0xE820, 0xEAFC, 0xECBA, 0xEDC6, 0xEECC,\n    0xEFC8, 0xF0BA, 0xF1A1, 0xF279, 0xF342, 0xF3FB, 0xF4A1, 0xF532,\n    0xF5AE, 0xF612, 0xF65D, 0xF68E, 0xF6A2, 0xF697, 0xF66D, 0xF622,\n    0xF5B3, 0xF520, 0xF467, 0xF385, 0xEEB9, 0xE50B, 0xDAA8, 0xD3BC,\n    0xD120, 0xD05C, 0xD0AB, 0xD143, 0xD15F, 0xD15F, 0xD15F, 0xD15F,\n    0xD15F, 0xD15F, 0xD15F, 0x9C34, 0x9B98, 0x9AB8, 0x995B, 0x97AD,\n    0x95DD, 0x9418, 0x928B, 0x9165, 0x90D3, 0x90A1, 0x907C, 0x9063,\n    0x9057, 0x9055, 0x905F, 0x9073, 0x9091, 0x90B8, 0x90E7, 0x911E,\n    0x915D, 0x91A3, 0x91EE, 0x9240, 0x9297, 0x92F2, 0x9351, 0x93B4,\n    0x9419, 0x9481, 0x94EA, 0x9641, 0x98A2, 0x9AD2, 0x9B98, 0x9A9E,\n    0x98B0, 0x9645, 0x93D3, 0x91D2, 0x91D2, 0x91D2, 0x91D2, 0x91D2,\n    0x91D2, 0x91D2, 0x03A5, 0x028B, 0x003C, 0xFCA9, 0xF843, 0xF37C,\n    0xEEC8, 0xEA97, 0xE75D, 0xE58B, 0xE49D, 0xE3C3, 0xE2FC, 0xE24A,\n    0xE1AD, 0xE126, 0xE0B4, 0xE058, 0xE014, 0xDFE6, 0xDFD1, 0xDFD4,\n    0xDFEF, 0xE023, 0xE072, 0xE0DA, 0xE15D, 0xE1FB, 0xE2B4, 0xE38A,\n    0xE47C, 0xE58B, 0xEA19, 0xF2FE, 0xFC69, 0x028B, 0x049B, 0x04DD,\n    0x0417, 0x030F, 0x028B, 0x028B, 0x028B, 0x028B, 0x028B, 0x028B,\n    0x028B, 0x0FE7, 0x1035, 0x10C7, 0x11AA, 0x12C1, 0x13F0, 0x151B,\n    0x1624, 0x16F1, 0x1764, 0x179F, 0x17D5, 0x1806, 0x1833, 0x1859,\n    0x187B, 0x1897, 0x18AE, 0x18BF, 0x18CA, 0x18CF, 0x18CF, 0x18C8,\n    0x18BB, 0x18A8, 0x188E, 0x186D, 0x1846, 0x1818, 0x17E3, 0x17A7,\n    0x1764, 0x1643, 0x140F, 0x11BA, 0x1035, 0x0FB2, 0x0FA2, 0x0FD3,\n    0x1014, 0x1035, 0x1035, 0x1035, 0x1035, 0x1035, 0x1035, 0x1035,\n    0xE5D3, 0xE4FF, 0xE36F, 0xE105, 0xDE0D, 0xDAD4, 0xD7A6, 0xD4D2,\n    0xD2A5, 0xD16A, 0xD0CA, 0xD036, 0xCFB0, 0xCF38, 0xCECE, 0xCE73,\n    0xCE26, 0xCDE8, 0xCDBA, 0xCD9B, 0xCD8D, 0xCD8E, 0xCDA1, 0xCDC4,\n    0xCDF9, 0xCE40, 0xCE98, 0xCF03, 0xCF80, 0xD010, 0xD0B3, 0xD16A,\n    0xD47D, 0xDA7E, 0xE0DA, 0xE4FF, 0xE663, 0xE68F, 0xE60A, 0xE558,\n    0xE4FF, 0xE4FF, 0xE4FF, 0xE4FF, 0xE4FF, 0xE4FF, 0xE4FF, 0xE81A,\n    0xE7A5, 0xE6EA, 0xE5C6, 0xE45F, 0xE2DB, 0xE160, 0xE016, 0xDF24,\n    0xDEAE, 0xDE8B, 0xDE73, 0xDE67, 0xDE65, 0xDE6D, 0xDE7F, 0xDE9A,\n    0xDEBD, 0xDEE8, 0xDF1A, 0xDF52, 0xDF91, 0xDFD4, 0xE01D, 0xE069,\n    0xE0B9, 0xE10C, 0xE161, 0xE1B8, 0xE210, 0xE269, 0xE2C1, 0xE41F,\n    0xE675, 0xE82B, 0xE7A5, 0xE45D, 0xDF6E, 0xD9B2, 0xD400, 0xCF33,\n    0xCF33, 0xCF33, 0xCF33, 0xCF33, 0xCF33, 0xCF33, 0xF6B7, 0xF747,\n    0xF86A, 0xFA2C, 0xFC56, 0xFEB0, 0x00FF, 0x030F, 0x04A6, 0x058C,\n    0x0602, 0x066F, 0x06D3, 0x072C, 0x077B, 0x07C0, 0x07FA, 0x0829,\n    0x084D, 0x0865, 0x0872, 0x0873, 0x0867, 0x084F, 0x082A, 0x07F8,\n    0x07B9, 0x076D, 0x0713, 0x06AA, 0x0634, 0x05AE, 0x02DD, 0xFD85,\n    0xF8A7, 0xF747, 0xFA3C, 0xFF91, 0x0619, 0x0CAA, 0x1218, 0x1218,\n    0x1218, 0x1218, 0x1218, 0x1218, 0x1218, 0x2FF5, 0x2EFF, 0x2D53,\n    0x2AC7, 0x27A6, 0x2439, 0x20CA, 0x1DA2, 0x1B0C, 0x1950, 0x1816,\n    0x16D5, 0x1591, 0x144D, 0x130B, 0x11CF, 0x109C, 0x0F74, 0x0E5B,\n    0x0D54, 0x0C62, 0x0B87, 0x0AC7, 0x0A25, 0x09A4, 0x0947, 0x0910,\n    0x0904, 0x0925, 0x0975, 0x09F9, 0x0AB2, 0x103A, 0x1BA3, 0x27A7,\n    0x2EFF, 0x3088, 0x2F6C, 0x2CD6, 0x29F4, 0x27F3, 0x27F3, 0x27F3,\n    0x27F3, 0x27F3, 0x27F3, 0x27F3, 0x78EB, 0x79BB, 0x7B53, 0x7DCA,\n    0x80D5, 0x8421, 0x8762, 0x8A4B, 0x8C8D, 0x8DDC, 0x8E92, 0x8F3D,\n    0x8FDC, 0x906F, 0x90F5, 0x916E, 0x91D8, 0x9233, 0x927F, 0x92BB,\n    0x92E6, 0x92FF, 0x9306, 0x92FB, 0x92DB, 0x92A8, 0x9260, 0x9203,\n    0x918F, 0x9105, 0x9063, 0x8FA9, 0x8B9B, 0x83CC, 0x7C6D, 0x79BB,\n    0x7CCF, 0x82FB, 0x8ABB, 0x928F, 0x98F9, 0x98F9, 0x98F9, 0x98F9,\n    0x98F9, 0x98F9, 0x98F9, 0xFF94, 0xFF94, 0xFF94, 0xFF94, 0xFF94,\n    0xFF94, 0xFF94, 0xFF94, 0xFF94, 0xFF94, 0xFF94, 0xFF94, 0xFF94,\n    0xFF94, 0xFF94, 0xFF94, 0xFF94, 0xFF94, 0xFF94, 0xFF94, 0xFF94,\n    0xFF94, 0xFF94, 0xFF94, 0xFF94, 0xFF94, 0xFF94, 0xFF94, 0xFF94,\n    0xFF94, 0xFF94, 0xFF94, 0xFF94, 0xFF95, 0xFF95, 0xFF94, 0xFF91,\n    0xFF8D, 0xFF89, 0xFF84, 0xFF81, 0xFF81, 0xFF81, 0xFF81, 0xFF81,\n    0xFF81, 0xFF81, 0xFF4F, 0xFF4F, 0xFF4F, 0xFF4F, 0xFF4F, 0xFF4F,\n    0xFF4F, 0xFF4F, 0xFF4F, 0xFF4F, 0xFF4F, 0xFF4F, 0xFF4F, 0xFF4F,\n    0xFF4F, 0xFF4F, 0xFF4F, 0xFF4F, 0xFF4F, 0xFF4F, 0xFF4F, 0xFF4F,\n    0xFF4F, 0xFF4F, 0xFF4F, 0xFF4F, 0xFF4F, 0xFF4F, 0xFF4F, 0xFF4F,\n    0xFF4F, 0xFF4F, 0xFF4E, 0xFF4E, 0xFF4E, 0xFF4F, 0xFF51, 0xFF53,\n    0xFF56, 0xFF59, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C,\n    0xFF5C, 0xE044, 0xE042, 0xE042, 0xE042, 0xE042, 0xE042, 0xE042,\n    0xE042, 0xE042, 0xE042, 0xE042, 0xE042, 0xE042, 0xE042, 0xE042,\n    0xE042, 0xE042, 0xE042, 0xE042, 0xE042, 0xE042, 0xE042, 0xE042,\n    0xE042, 0xE042, 0xE042, 0xE042, 0xE042, 0xE042, 0xE042, 0xE042,\n    0xE042, 0xE02A, 0xE002, 0xDFFA, 0xE042, 0xE0EC, 0xE1D5, 0xE2DD,\n    0xE3E0, 0xE4BD, 0xE4BD, 0xE4BD, 0xE4BD, 0xE4BD, 0xE4BD, 0xE4BD,\n    0x1F1B, 0x1FEB, 0x2151, 0x2368, 0x25F9, 0x28CF, 0x2BB4, 0x2E73,\n    0x30D7, 0x32A9, 0x342E, 0x35CA, 0x377A, 0x3937, 0x3AFE, 0x3CC8,\n    0x3E92, 0x4056, 0x420F, 0x43B9, 0x454E, 0x46CA, 0x4827, 0x4961,\n    0x4A72, 0x4B57, 0x4C0A, 0x4C85, 0x4CC5, 0x4CC4, 0x4C7D, 0x4BEB,\n    0x4578, 0x37C7, 0x2927, 0x1FEB, 0x1D65, 0x1DD5, 0x1FF0, 0x226C,\n    0x23FE, 0x23FE, 0x23FE, 0x23FE, 0x23FE, 0x23FE, 0x23FE, 0x0AE3,\n    0x0ABC, 0x0A7A, 0x0A1B, 0x09A7, 0x0924, 0x089C, 0x0816, 0x079B,\n    0x0731, 0x06CF, 0x0665, 0x05F4, 0x057D, 0x0503, 0x0486, 0x0407,\n    0x0389, 0x030C, 0x0292, 0x021D, 0x01AE, 0x0146, 0x00E6, 0x0091,\n    0x0047, 0x000A, 0xFFDC, 0xFFBD, 0xFFAF, 0xFFB3, 0xFFCB, 0x0153,\n    0x04A8, 0x084A, 0x0ABC, 0x0BB0, 0x0C07, 0x0C02, 0x0BE3, 0x0BEC,\n    0x0BEC, 0x0BEC, 0x0BEC, 0x0BEC, 0x0BEC, 0x0BEC, 0x0AA4, 0x0AC1,\n    0x0AF4, 0x0B42, 0x0BA2, 0x0C0B, 0x0C75, 0x0CD5, 0x0D25, 0x0D5A,\n    0x0D80, 0x0DA6, 0x0DCD, 0x0DF4, 0x0E1A, 0x0E40, 0x0E65, 0x0E88,\n    0x0EAA, 0x0ECA, 0x0EE7, 0x0F01, 0x0F18, 0x0F2B, 0x0F3B, 0x0F46,\n    0x0F4C, 0x0F4E, 0x0F4A, 0x0F40, 0x0F31, 0x0F1A, 0x0E7C, 0x0D32,\n    0x0BC5, 0x0AC1, 0x0A3E, 0x09EF, 0x09BD, 0x0997, 0x0969, 0x0969,\n    0x0969, 0x0969, 0x0969, 0x0969, 0x0969, 0xA952, 0xA8CC, 0xA7EB,\n    0xA69E, 0xA505, 0xA33F, 0xA169, 0x9FA3, 0x9E0A, 0x9CBE, 0x9B96,\n    0x9A57, 0x9906, 0x97A7, 0x963D, 0x94CE, 0x935C, 0x91EC, 0x9083,\n    0x8F24, 0x8DD2, 0x8C94, 0x8B6B, 0x8A5D, 0x896D, 0x88A0, 0x87FA,\n    0x877E, 0x8731, 0x8717, 0x8734, 0x878C, 0x8C36, 0x964A, 0xA14F,\n    0xA8CC, 0xABE2, 0xAD2A, 0xAD64, 0xAD4E, 0xADA6, 0xADA6, 0xADA6,\n    0xADA6, 0xADA6, 0xADA6, 0xADA6, 0xE31B, 0xE31B, 0xE31B, 0xE31B,\n    0xE31B, 0xE31B, 0xE31B, 0xE31B, 0xE31B, 0xE31B, 0xE31B, 0xE31B,\n    0xE31B, 0xE31B, 0xE31B, 0xE31B, 0xE31B, 0xE31B, 0xE31B, 0xE31B,\n    0xE31B, 0xE31B, 0xE31B, 0xE31B, 0xE31B, 0xE31B, 0xE31B, 0xE31B,\n    0xE31B, 0xE31B, 0xE31B, 0xE31B, 0xE2E9, 0xE295, 0xE285, 0xE31B,\n    0xE47F, 0xE667, 0xE88D, 0xEAAB, 0xEC7A, 0xEC7A, 0xEC7A, 0xEC7A,\n    0xEC7A, 0xEC7A, 0xEC7A, 0x201D, 0x2124, 0x230B, 0x25F3, 0x2986,\n    0x2D6D, 0x3153, 0x34DF, 0x37BD, 0x3996, 0x3AD0, 0x3C0C, 0x3D46,\n    0x3E7B, 0x3FAB, 0x40D0, 0x41EA, 0x42F5, 0x43EF, 0x44D5, 0x45A5,\n    0x465B, 0x46F5, 0x4771, 0x47CC, 0x4804, 0x4815, 0x47FD, 0x47B9,\n    0x4747, 0x46A5, 0x45CF, 0x4071, 0x3561, 0x295E, 0x2124, 0x1DA0,\n    0x1C0E, 0x1BA2, 0x1B8E, 0x1B07, 0x1B07, 0x1B07, 0x1B07, 0x1B07,\n    0x1B07, 0x1B07, 0xF787, 0xF7C8, 0xF83C, 0xF8ED, 0xF9C6, 0xFAB4,\n    0xFBA2, 0xFC7C, 0xFD2E, 0xFDA4, 0xFDF5, 0xFE48, 0xFE9B, 0xFEEE,\n    0xFF40, 0xFF91, 0xFFDE, 0x0028, 0x006E, 0x00B0, 0x00EC, 0x0122,\n    0x0150, 0x0177, 0x0196, 0x01AB, 0x01B6, 0x01B6, 0x01AB, 0x0193,\n    0x016E, 0x013C, 0xFFDF, 0xFD08, 0xF9EF, 0xF7C8, 0xF6D1, 0xF655,\n    0xF621, 0xF605, 0xF5CE, 0xF5CE, 0xF5CE, 0xF5CE, 0xF5CE, 0xF5CE,\n    0xF5CE, 0xF4D5, 0xF4BA, 0xF489, 0xF43D, 0xF3DF, 0xF379, 0xF315,\n    0xF2BB, 0xF276, 0xF24E, 0xF239, 0xF225, 0xF213, 0xF202, 0xF1F3,\n    0xF1E6, 0xF1DA, 0xF1D0, 0xF1C8, 0xF1C2, 0xF1BE, 0xF1BC, 0xF1BD,\n    0xF1BF, 0xF1C4, 0xF1CB, 0xF1D4, 0xF1E0, 0xF1EF, 0xF200, 0xF213,\n    0xF22A, 0xF287, 0xF341, 0xF413, 0xF4BA, 0xF52B, 0xF58B, 0xF5E0,\n    0xF62D, 0xF677, 0xF677, 0xF677, 0xF677, 0xF677, 0xF677, 0xF677,\n    0xA8C5, 0xA7F0, 0xA675, 0xA433, 0xA16C, 0x9E63, 0x9B5B, 0x9895,\n    0x9654, 0x94DB, 0x93DA, 0x92D6, 0x91D2, 0x90D0, 0x8FD1, 0x8EDA,\n    0x8DEA, 0x8D06, 0x8C30, 0x8B68, 0x8AB3, 0x8A12, 0x8987, 0x8915,\n    0x88BE, 0x8884, 0x8869, 0x8871, 0x889C, 0x88EE, 0x8969, 0x8A0F,\n    0x8E5B, 0x9745, 0xA10D, 0xA7F0, 0xAB38, 0xAD13, 0xAE10, 0xAEC3,\n    0xAFBC, 0xAFBC, 0xAFBC, 0xAFBC, 0xAFBC, 0xAFBC, 0xAFBC, 0x8001,\n    0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n    0x0000, 0x0006, 0x0010, 0x001A, 0x0027, 0x0039, 0x004C, 0x005E,\n    0x0068, 0x006F, 0x007D, 0x009D, 0x00C1, 0x00D5, 0x00E9, 0x010C,\n    0x0128, 0x0123, 0x0118, 0x012D, 0x0121, 0x00AA, 0x0000, 0xFF81,\n    0xFE68, 0xFD24, 0xF87B, 0xEC54, 0xDDA4, 0xD310, 0xD028, 0xD15D,\n    0xD2A1, 0xD298, 0xD297, 0xD29A, 0xD29F, 0xD2A1, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000,\n    0x0004, 0x000D, 0x001A, 0x0027, 0x0030, 0x0038, 0x0041, 0x004B,\n    0x0057, 0x0060, 0x0061, 0x0066, 0x007F, 0x009A, 0x00A7, 0x00B1,\n    0x00CA, 0x00D7, 0x00BD, 0x008D, 0x0075, 0x0000, 0xFE83, 0xFCC6,\n    0xFB04, 0xFA39, 0xFBAC, 0xFDE8, 0xFF33, 0xFE83, 0xFCE2, 0xFBBD,\n    0xFB76, 0xFB6D, 0xFB88, 0xFBAB, 0xFBBD, 0xDD50, 0xDDD3, 0xDEB4,\n    0xE001, 0xE199, 0xE35F, 0xE535, 0xE6FC, 0xE895, 0xE9E1, 0xEA31,\n    0xE96F, 0xE6BB, 0xE55B, 0xE682, 0xE814, 0xE87F, 0xE6A8, 0xE45D,\n    0xE408, 0xE56F, 0xE5B7, 0xE382, 0xE13B, 0xE15C, 0xE2A2, 0xE1A6,\n    0xDDE1, 0xDEEA, 0xE039, 0xDA42, 0xD976, 0xD966, 0xD911, 0xD5C1,\n    0xD524, 0xDF20, 0xEC77, 0xF6D5, 0xFB72, 0xFD17, 0xFDC5, 0xFE53,\n    0xFE65, 0xFE30, 0xFDE9, 0xFDC5, 0x013C, 0x0197, 0x0246, 0x035D,\n    0x04B5, 0x0625, 0x0786, 0x08AF, 0x097A, 0x09BD, 0x09A4, 0x0979,\n    0x093B, 0x08ED, 0x0890, 0x0827, 0x07B2, 0x0734, 0x06AD, 0x0621,\n    0x058F, 0x04FB, 0x0465, 0x03D0, 0x033C, 0x02AC, 0x0222, 0x019E,\n    0x0123, 0x00B2, 0x004D, 0xFFF6, 0xFFF5, 0x0064, 0x0105, 0x0197,\n    0x0211, 0x0294, 0x0319, 0x0397, 0x0408, 0x0408, 0x0408, 0x0408,\n    0x0408, 0x0408, 0x0408, 0x7F9E, 0x7F5F, 0x7EEB, 0x7E37, 0x7D59,\n    0x7C69, 0x7B7C, 0x7AA9, 0x7A07, 0x79AB, 0x797C, 0x7951, 0x792A,\n    0x7907, 0x78E8, 0x78CE, 0x78B7, 0x78A5, 0x7898, 0x788F, 0x788B,\n    0x788B, 0x7891, 0x789B, 0x78AA, 0x78BF, 0x78D9, 0x78F8, 0x791C,\n    0x7946, 0x7976, 0x79AB, 0x7AA6, 0x7C8A, 0x7E6C, 0x7F5F, 0x7F2C,\n    0x7E65, 0x7D4F, 0x7C2F, 0x7B4C, 0x7B4C, 0x7B4C, 0x7B4C, 0x7B4C,\n    0x7B4C, 0x7B4C,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_2F.inc.c",
    "content": "static const struct Animation anim_2F[] = {\n    1,\n    189,\n    0,\n    0,\n    0x64,\n    ANIMINDEX_NUMPARTS(anim_2F_indices),\n    anim_2F_values,\n    anim_2F_indices,\n    0,\n};\n\n\nstatic const u16 anim_2F_indices[] = {\n    0x0001, 0x0000, 0x0064, 0x0001, 0x0064, 0x0065, 0x0001, 0x0000, 0x0001, 0x00C9, 0x0001, 0x0000,\n    0x0064, 0x0D52, 0x0064, 0x0DB6, 0x0064, 0x0E1A,\n    0x0064, 0x0C26, 0x0064, 0x0C8A, 0x0064, 0x0CEE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0064, 0x0BC2,\n    0x0001, 0x0BBE, 0x0001, 0x0BBF, 0x0001, 0x0BC0,\n    0x0064, 0x025A, 0x0064, 0x02BE, 0x0064, 0x0322,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0064, 0x01F6,\n    0x0064, 0x00CA, 0x0064, 0x012E, 0x0064, 0x0192,\n    0x0001, 0x0BBA, 0x0001, 0x0BBB, 0x0001, 0x0BBC,\n    0x0064, 0x0516, 0x0064, 0x057A, 0x0064, 0x05DE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0064, 0x04B2,\n    0x0064, 0x0386, 0x0064, 0x03EA, 0x0064, 0x044E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0BBD,\n    0x0064, 0x0A8E, 0x0064, 0x0AF2, 0x0064, 0x0B56,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0064, 0x0A2A,\n    0x0064, 0x08FE, 0x0064, 0x0962, 0x0064, 0x09C6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0BC1,\n    0x0064, 0x07D2, 0x0064, 0x0836, 0x0064, 0x089A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0064, 0x076E,\n    0x0064, 0x0642, 0x0064, 0x06A6, 0x0064, 0x070A,\n};\n\nstatic const s16 anim_2F_values[] = {\n    0x0000, 0x00AA, 0x00A9, 0x00A6, 0x00A3, 0x009F, 0x009C, 0x009A,\n    0x0099, 0x0099, 0x0098, 0x0098, 0x0099, 0x0099, 0x009A, 0x009A,\n    0x009B, 0x009C, 0x009E, 0x009F, 0x00A0, 0x00A2, 0x00A3, 0x00A5,\n    0x00A6, 0x00A8, 0x00AA, 0x00AB, 0x00AC, 0x00AE, 0x00AF, 0x00B0,\n    0x00B1, 0x00B2, 0x00B3, 0x00B3, 0x00B4, 0x00B4, 0x00B4, 0x00B4,\n    0x00B4, 0x00B5, 0x00B4, 0x00B3, 0x00B4, 0x00B6, 0x00BA, 0x00BF,\n    0x00C3, 0x00C7, 0x00C8, 0x00C8, 0x00C8, 0x00C8, 0x00C8, 0x00C8,\n    0x00C9, 0x00C9, 0x00C8, 0x00C8, 0x00C8, 0x00C8, 0x00C9, 0x00C3,\n    0x00B4, 0x00A2, 0x0090, 0x007D, 0x006C, 0x005B, 0x004D, 0x0045,\n    0x0050, 0x005E, 0x0057, 0x004D, 0x0049, 0x0048, 0x004A, 0x0057,\n    0x0052, 0x004E, 0x004C, 0x004B, 0x004A, 0x004A, 0x004A, 0x004A,\n    0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x004A,\n    0x004A, 0x004A, 0x004A, 0x004A, 0x004A, 0x0000, 0x0000, 0x0001,\n    0x0002, 0x0003, 0x0004, 0x0004, 0x0004, 0x0003, 0x0003, 0x0002,\n    0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF,\n    0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFD, 0xFFFD,\n    0xFFFD, 0xFFFC, 0xFFFC, 0xFFFB, 0xFFFB, 0xFFFA, 0xFFF9, 0xFFF7,\n    0xFFF6, 0xFFF5, 0xFFF3, 0xFFF2, 0xFFF2, 0xFFF2, 0xFFF5, 0xFFFB,\n    0x0000, 0x0001, 0x0003, 0x0004, 0x0005, 0x0005, 0x0003, 0x0003,\n    0x0004, 0x0005, 0x0006, 0x0008, 0x0009, 0x0009, 0x0009, 0x0008,\n    0x0006, 0x0003, 0xFFEF, 0xFFCD, 0xFFAE, 0xFF8F, 0xFF6E, 0xFF4E,\n    0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E,\n    0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E,\n    0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E,\n    0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E,\n    0xFF2E, 0x3FFF, 0x0000, 0xFC30, 0xF27A, 0xE577, 0xD7BE, 0xCBE8,\n    0xC48E, 0xC14E, 0xBFC7, 0xBF94, 0xC04F, 0xC192, 0xC2F6, 0xC417,\n    0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E,\n    0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E,\n    0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E,\n    0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E,\n    0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E,\n    0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E,\n    0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E,\n    0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E,\n    0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E,\n    0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E,\n    0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xC48E, 0xF97C, 0xF898,\n    0xF653, 0xF348, 0xF014, 0xED50, 0xEB98, 0xEAD6, 0xEA7A, 0xEA6F,\n    0xEA9A, 0xEAE6, 0xEB39, 0xEB7C, 0xEB98, 0xEB98, 0xEB98, 0xEB98,\n    0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98,\n    0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98,\n    0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98,\n    0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98,\n    0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98,\n    0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98,\n    0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98,\n    0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98,\n    0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98,\n    0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98, 0xEB98,\n    0xEB98, 0xEB98, 0xED8C, 0xEE32, 0xEFDB, 0xF215, 0xF46D, 0xF672,\n    0xF7B4, 0xF842, 0xF885, 0xF88E, 0xF86E, 0xF837, 0xF7FA, 0xF7C8,\n    0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4,\n    0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4,\n    0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4,\n    0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4,\n    0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4,\n    0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4,\n    0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4,\n    0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4,\n    0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4,\n    0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4,\n    0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xF7B4, 0xCA4F, 0xCA4D,\n    0xCA46, 0xCA3C, 0xCA2D, 0xCA1A, 0xCA03, 0xC9E9, 0xC9CB, 0xC9AA,\n    0xC986, 0xC95F, 0xC935, 0xC908, 0xC8D8, 0xC8A7, 0xC872, 0xC83C,\n    0xC804, 0xC7CA, 0xC78E, 0xC751, 0xC713, 0xC6D3, 0xC692, 0xC650,\n    0xC60D, 0xC5CA, 0xC587, 0xC543, 0xC4FE, 0xC4BA, 0xC476, 0xC432,\n    0xC3EF, 0xC3AC, 0xC36A, 0xC329, 0xC2E9, 0xC2AA, 0xC26C, 0xC230,\n    0xC1F6, 0xC1BD, 0xC186, 0xC152, 0xC11F, 0xC0EF, 0xC0C2, 0xC097,\n    0xC076, 0xC066, 0xC063, 0xC06A, 0xC077, 0xC087, 0xC097, 0xC0A4,\n    0xC0AB, 0xC0A7, 0xC097, 0xC07C, 0xC05D, 0xC03B, 0xC014, 0xBFEC,\n    0xBFC0, 0xBF93, 0xBF64, 0xBF35, 0xBF05, 0xBED5, 0xBEA6, 0xBE77,\n    0xBE4A, 0xBE1F, 0xBDF7, 0xBDD1, 0xBDAF, 0xBD91, 0xBD77, 0xBD62,\n    0xBD53, 0xBD49, 0xBD46, 0xBD46, 0xBD46, 0xBD46, 0xBD46, 0xBD46,\n    0xBD46, 0xBD46, 0xBD46, 0xBD46, 0xBD46, 0xBD46, 0xBD46, 0xBD46,\n    0xBD46, 0xBD46, 0xFB1D, 0xFD6A, 0x0343, 0x0B1C, 0x1362, 0x1A84,\n    0x1EF3, 0x20EB, 0x21DB, 0x2200, 0x2195, 0x20D6, 0x1FFE, 0x1F49,\n    0x1EF3, 0x1EE0, 0x1ECC, 0x1EB8, 0x1EA3, 0x1E8D, 0x1E77, 0x1E60,\n    0x1E48, 0x1E31, 0x1E19, 0x1E00, 0x1DE7, 0x1DCF, 0x1DB5, 0x1D9C,\n    0x1D83, 0x1D6A, 0x1D50, 0x1D37, 0x1D1E, 0x1D05, 0x1CEC, 0x1CD3,\n    0x1CBB, 0x1CA3, 0x1C8C, 0x1C74, 0x1C5E, 0x1C48, 0x1C32, 0x1C1D,\n    0x1C09, 0x1BF6, 0x1BE3, 0x1BD1, 0x1BC3, 0x1BBC, 0x1BBB, 0x1BBD,\n    0x1BC2, 0x1BC9, 0x1BCF, 0x1BD5, 0x1BD8, 0x1BD7, 0x1BD1, 0x1BC8,\n    0x1BBC, 0x1BB0, 0x1BA2, 0x1B93, 0x1B84, 0x1B73, 0x1B63, 0x1B51,\n    0x1B40, 0x1B2F, 0x1B1E, 0x1B0D, 0x1AFD, 0x1AED, 0x1ADF, 0x1AD1,\n    0x1AC5, 0x1ABA, 0x1AB1, 0x1AA9, 0x1AA3, 0x1AA0, 0x1A9F, 0x1A9F,\n    0x1A9F, 0x1A9F, 0x1A9F, 0x1A9F, 0x1A9F, 0x1A9F, 0x1A9F, 0x1A9F,\n    0x1A9F, 0x1A9F, 0x1A9F, 0x1A9F, 0x1A9F, 0x1A9F, 0xD2DC, 0xD4E6,\n    0xDA17, 0xE10D, 0xE863, 0xEEB7, 0xF2A6, 0xF468, 0xF544, 0xF56E,\n    0xF517, 0xF472, 0xF3B1, 0xF307, 0xF2A6, 0xF279, 0xF24B, 0xF21B,\n    0xF1EA, 0xF1B7, 0xF183, 0xF14D, 0xF117, 0xF0E0, 0xF0A7, 0xF06E,\n    0xF035, 0xEFFA, 0xEFC0, 0xEF85, 0xEF4A, 0xEF0E, 0xEED3, 0xEE98,\n    0xEE5D, 0xEE23, 0xEDE9, 0xEDAF, 0xED77, 0xED3F, 0xED08, 0xECD2,\n    0xEC9D, 0xEC69, 0xEC37, 0xEC06, 0xEBD7, 0xEBAA, 0xEB7E, 0xEB54,\n    0xEB35, 0xEB24, 0xEB20, 0xEB25, 0xEB31, 0xEB40, 0xEB50, 0xEB5D,\n    0xEB64, 0xEB62, 0xEB54, 0xEB3E, 0xEB24, 0xEB07, 0xEAE7, 0xEAC4,\n    0xEAA0, 0xEA7A, 0xEA52, 0xEA2A, 0xEA02, 0xE9D9, 0xE9B1, 0xE98A,\n    0xE964, 0xE940, 0xE91E, 0xE8FE, 0xE8E2, 0xE8C8, 0xE8B2, 0xE8A1,\n    0xE894, 0xE88B, 0xE889, 0xE889, 0xE889, 0xE889, 0xE889, 0xE889,\n    0xE889, 0xE889, 0xE889, 0xE889, 0xE889, 0xE889, 0xE889, 0xE889,\n    0xE889, 0xE889, 0xD4B4, 0xCF82, 0xC248, 0xB08E, 0x9DDE, 0x8DBF,\n    0x83BC, 0x7F3B, 0x7CFE, 0x7C86, 0x7D57, 0x7EF5, 0x80E5, 0x82A5,\n    0x83BC, 0x8458, 0x84FA, 0x85A2, 0x8650, 0x8702, 0x87BA, 0x8875,\n    0x8934, 0x89F7, 0x8ABC, 0x8B84, 0x8C4F, 0x8D1B, 0x8DE9, 0x8EB8,\n    0x8F88, 0x9058, 0x9127, 0x91F7, 0x92C5, 0x9393, 0x945E, 0x9528,\n    0x95EF, 0x96B3, 0x9774, 0x9832, 0x98EB, 0x99A0, 0x9A50, 0x9AFB,\n    0x9BA1, 0x9C40, 0x9CDA, 0x9D6C, 0x9DDC, 0x9E16, 0x9E24, 0x9E11,\n    0x9DE8, 0x9DB3, 0x9D7C, 0x9D4F, 0x9D37, 0x9D3D, 0x9D6C, 0x9DBB,\n    0x9E16, 0x9E7D, 0x9EED, 0x9F66, 0x9FE7, 0xA06C, 0xA0F6, 0xA183,\n    0xA211, 0xA29F, 0xA32B, 0xA3B5, 0xA43A, 0xA4B9, 0xA531, 0xA5A0,\n    0xA605, 0xA65E, 0xA6AB, 0xA6E8, 0xA716, 0xA733, 0xA73D, 0xA73D,\n    0xA73D, 0xA73D, 0xA73D, 0xA73D, 0xA73D, 0xA73D, 0xA73D, 0xA73D,\n    0xA73D, 0xA73D, 0xA73D, 0xA73D, 0xA73D, 0xA73D, 0x0000, 0x0321,\n    0x0B1B, 0x15CC, 0x2111, 0x2AC9, 0x30D3, 0x3375, 0x349F, 0x34AD,\n    0x33FA, 0x32E2, 0x31C1, 0x30F3, 0x30D3, 0x312B, 0x3186, 0x31E4,\n    0x3246, 0x32AA, 0x3311, 0x337B, 0x33E6, 0x3453, 0x34C3, 0x3533,\n    0x35A5, 0x3618, 0x368C, 0x3700, 0x3775, 0x37EA, 0x385F, 0x38D3,\n    0x3947, 0x39BB, 0x3A2D, 0x3A9F, 0x3B0F, 0x3B7D, 0x3BE9, 0x3C54,\n    0x3CBC, 0x3D22, 0x3D85, 0x3DE5, 0x3E42, 0x3E9C, 0x3EF2, 0x3F45,\n    0x3F84, 0x3FA4, 0x3FAC, 0x3FA1, 0x3F8A, 0x3F6C, 0x3F4E, 0x3F34,\n    0x3F27, 0x3F2A, 0x3F45, 0x3F71, 0x3FA4, 0x3FDE, 0x401D, 0x4061,\n    0x40A9, 0x40F5, 0x4142, 0x4191, 0x41E1, 0x4231, 0x4280, 0x42CD,\n    0x4318, 0x435F, 0x43A3, 0x43E1, 0x441A, 0x444C, 0x4477, 0x449A,\n    0x44B4, 0x44C4, 0x44CA, 0x44CA, 0x44CA, 0x44CA, 0x44CA, 0x44CA,\n    0x44CA, 0x44CA, 0x44CA, 0x44CA, 0x44CA, 0x44CA, 0x44CA, 0x44CA,\n    0x44CA, 0x44CA, 0x0000, 0x002C, 0x009D, 0x0134, 0x01D4, 0x025E,\n    0x02B3, 0x02D9, 0x02EB, 0x02ED, 0x02E5, 0x02D6, 0x02C6, 0x02B9,\n    0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3,\n    0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3,\n    0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3,\n    0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3,\n    0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3,\n    0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3,\n    0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3,\n    0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3,\n    0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3,\n    0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3,\n    0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3, 0x02B3, 0xF549, 0xF5F2,\n    0xF79E, 0xF9DD, 0xFC3A, 0xFE45, 0xFF89, 0x0018, 0x005B, 0x0064,\n    0x0044, 0x000C, 0xFFD0, 0xFF9E, 0xFF89, 0xFF89, 0xFF89, 0xFF89,\n    0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89,\n    0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89,\n    0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89,\n    0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89,\n    0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89,\n    0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89,\n    0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89,\n    0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89,\n    0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89,\n    0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89, 0xFF89,\n    0xFF89, 0xFF89, 0xC7DD, 0xC7DF, 0xC7E2, 0xC7E7, 0xC7EF, 0xC7F8,\n    0xC804, 0xC811, 0xC81F, 0xC830, 0xC842, 0xC856, 0xC86B, 0xC881,\n    0xC899, 0xC8B2, 0xC8CC, 0xC8E7, 0xC903, 0xC920, 0xC93E, 0xC95D,\n    0xC97C, 0xC99C, 0xC9BC, 0xC9DD, 0xC9FE, 0xCA20, 0xCA42, 0xCA64,\n    0xCA86, 0xCAA8, 0xCACA, 0xCAEC, 0xCB0E, 0xCB2F, 0xCB50, 0xCB71,\n    0xCB91, 0xCBB0, 0xCBCF, 0xCBED, 0xCC0A, 0xCC27, 0xCC42, 0xCC5C,\n    0xCC76, 0xCC8E, 0xCCA4, 0xCCBA, 0xCCCA, 0xCCD2, 0xCCD3, 0xCCD0,\n    0xCCCA, 0xCCC1, 0xCCB9, 0xCCB3, 0xCCB0, 0xCCB2, 0xCCBA, 0xCCC7,\n    0xCCD6, 0xCCE8, 0xCCFB, 0xCD0F, 0xCD25, 0xCD3C, 0xCD53, 0xCD6B,\n    0xCD83, 0xCD9B, 0xCDB2, 0xCDCA, 0xCDE0, 0xCDF6, 0xCE0A, 0xCE1D,\n    0xCE2E, 0xCE3D, 0xCE4A, 0xCE54, 0xCE5C, 0xCE61, 0xCE62, 0xCE62,\n    0xCE62, 0xCE62, 0xCE62, 0xCE62, 0xCE62, 0xCE62, 0xCE62, 0xCE62,\n    0xCE62, 0xCE62, 0xCE62, 0xCE62, 0xCE62, 0xCE62, 0x054B, 0x03CB,\n    0xFFFB, 0xFADD, 0xF578, 0xF0D0, 0xEDEC, 0xECAA, 0xEC1E, 0xEC1A,\n    0xEC72, 0xECFA, 0xED83, 0xEDE3, 0xEDEC, 0xEDB9, 0xED85, 0xED4E,\n    0xED16, 0xECDC, 0xECA1, 0xEC64, 0xEC26, 0xEBE7, 0xEBA7, 0xEB66,\n    0xEB25, 0xEAE2, 0xEAA0, 0xEA5D, 0xEA19, 0xE9D6, 0xE993, 0xE94F,\n    0xE90D, 0xE8CA, 0xE888, 0xE847, 0xE806, 0xE7C7, 0xE788, 0xE74B,\n    0xE70F, 0xE6D4, 0xE69B, 0xE663, 0xE62E, 0xE5FA, 0xE5C8, 0xE599,\n    0xE575, 0xE562, 0xE55D, 0xE563, 0xE571, 0xE582, 0xE594, 0xE5A2,\n    0xE5AA, 0xE5A8, 0xE599, 0xE580, 0xE562, 0xE541, 0xE51C, 0xE4F5,\n    0xE4CB, 0xE4A0, 0xE473, 0xE446, 0xE418, 0xE3EA, 0xE3BC, 0xE390,\n    0xE365, 0xE33B, 0xE315, 0xE2F0, 0xE2D0, 0xE2B3, 0xE29A, 0xE286,\n    0xE277, 0xE26E, 0xE26B, 0xE26B, 0xE26B, 0xE26B, 0xE26B, 0xE26B,\n    0xE26B, 0xE26B, 0xE26B, 0xE26B, 0xE26B, 0xE26B, 0xE26B, 0xE26B,\n    0xE26B, 0xE26B, 0x2BD6, 0x297D, 0x2380, 0x1B7B, 0x1306, 0x0BBB,\n    0x0733, 0x052D, 0x0432, 0x0405, 0x046C, 0x052C, 0x060A, 0x06CA,\n    0x0733, 0x075C, 0x0787, 0x07B3, 0x07E1, 0x0810, 0x0840, 0x0872,\n    0x08A4, 0x08D7, 0x090C, 0x0940, 0x0976, 0x09AC, 0x09E2, 0x0A19,\n    0x0A50, 0x0A87, 0x0ABD, 0x0AF4, 0x0B2B, 0x0B61, 0x0B97, 0x0BCC,\n    0x0C00, 0x0C34, 0x0C67, 0x0C99, 0x0CCA, 0x0CFA, 0x0D28, 0x0D55,\n    0x0D81, 0x0DAB, 0x0DD4, 0x0DFA, 0x0E18, 0x0E27, 0x0E2B, 0x0E26,\n    0x0E1B, 0x0E0D, 0x0DFF, 0x0DF3, 0x0DEC, 0x0DEE, 0x0DFA, 0x0E0F,\n    0x0E27, 0x0E42, 0x0E60, 0x0E80, 0x0EA2, 0x0EC5, 0x0EEA, 0x0F0F,\n    0x0F34, 0x0F5A, 0x0F7F, 0x0FA3, 0x0FC6, 0x0FE8, 0x1007, 0x1025,\n    0x103F, 0x1057, 0x106B, 0x107B, 0x1088, 0x108F, 0x1092, 0x1092,\n    0x1092, 0x1092, 0x1092, 0x1092, 0x1092, 0x1092, 0x1092, 0x1092,\n    0x1092, 0x1092, 0x1092, 0x1092, 0x1092, 0x1092, 0xCCF6, 0xC8BA,\n    0xBDF2, 0xAF80, 0xA044, 0x9321, 0x8AF7, 0x8756, 0x8599, 0x8551,\n    0x8613, 0x8772, 0x8900, 0x8A51, 0x8AF7, 0x8B26, 0x8B56, 0x8B88,\n    0x8BBC, 0x8BF1, 0x8C27, 0x8C5F, 0x8C98, 0x8CD1, 0x8D0C, 0x8D48,\n    0x8D84, 0x8DC1, 0x8DFE, 0x8E3B, 0x8E79, 0x8EB7, 0x8EF5, 0x8F32,\n    0x8F70, 0x8FAD, 0x8FE9, 0x9025, 0x9060, 0x909B, 0x90D4, 0x910C,\n    0x9143, 0x9179, 0x91AE, 0x91E0, 0x9212, 0x9241, 0x926F, 0x929A,\n    0x92BB, 0x92CD, 0x92D1, 0x92CB, 0x92BF, 0x92AF, 0x929F, 0x9292,\n    0x928A, 0x928C, 0x929A, 0x92B1, 0x92CD, 0x92EB, 0x930D, 0x9331,\n    0x9357, 0x937F, 0x93A8, 0x93D1, 0x93FC, 0x9426, 0x9450, 0x9478,\n    0x94A0, 0x94C6, 0x94E9, 0x950A, 0x9528, 0x9543, 0x955A, 0x956C,\n    0x957A, 0x9582, 0x9585, 0x9585, 0x9585, 0x9585, 0x9585, 0x9585,\n    0x9585, 0x9585, 0x9585, 0x9585, 0x9585, 0x9585, 0x9585, 0x9585,\n    0x9585, 0x9585, 0x0000, 0x0008, 0x001F, 0x003D, 0x005D, 0x0079,\n    0x008A, 0x0091, 0x0092, 0x008F, 0x008B, 0x0086, 0x0083, 0x0084,\n    0x008A, 0x0096, 0x00A5, 0x00B8, 0x00CE, 0x00E7, 0x0102, 0x011E,\n    0x013B, 0x015A, 0x0178, 0x0196, 0x01B4, 0x01D0, 0x01EA, 0x0203,\n    0x0218, 0x022B, 0x023A, 0x0245, 0x024B, 0x024C, 0x0248, 0x023E,\n    0x022D, 0x0215, 0x01F6, 0x01CF, 0x014E, 0x0044, 0xFEE8, 0xFD6F,\n    0xFC10, 0xFB00, 0xFADD, 0xFB25, 0xFB23, 0xFB18, 0xFB07, 0xFAF4,\n    0xFAE1, 0xFAD2, 0xFAC9, 0xFACA, 0xFAD8, 0xFAF5, 0xFB25, 0xFB71,\n    0xFBD9, 0xFC57, 0xFCE4, 0xFD7A, 0xFE11, 0xFEA2, 0xFF27, 0xFF99,\n    0xFFF0, 0x0023, 0x0034, 0x002E, 0x0019, 0x0001, 0xFFF1, 0xFFF0,\n    0x0000, 0x001A, 0x0039, 0x0057, 0x0073, 0x0086, 0x008D, 0x008D,\n    0x008D, 0x008D, 0x008D, 0x008D, 0x008D, 0x008D, 0x008D, 0x008D,\n    0x008D, 0x008D, 0x008D, 0x008D, 0x008D, 0x008D, 0xFF30, 0xFF33,\n    0xFF3C, 0xFF47, 0xFF54, 0xFF5E, 0xFF65, 0xFF69, 0xFF6F, 0xFF75,\n    0xFF7A, 0xFF7C, 0xFF7A, 0xFF72, 0xFF65, 0xFF52, 0xFF3E, 0xFF27,\n    0xFF0F, 0xFEF6, 0xFEDB, 0xFEBF, 0xFEA2, 0xFE85, 0xFE67, 0xFE49,\n    0xFE2C, 0xFE0E, 0xFDF1, 0xFDD5, 0xFDB9, 0xFD9F, 0xFD86, 0xFD6F,\n    0xFD59, 0xFD46, 0xFD35, 0xFD26, 0xFD1A, 0xFD10, 0xFD0A, 0xFD07,\n    0xFD26, 0xFD78, 0xFDE9, 0xFE68, 0xFEE0, 0xFF3F, 0xFF67, 0xFF6A,\n    0xFF6D, 0xFF6F, 0xFF71, 0xFF72, 0xFF73, 0xFF72, 0xFF72, 0xFF71,\n    0xFF6F, 0xFF6D, 0xFF6A, 0xFF67, 0xFF62, 0xFF5C, 0xFF55, 0xFF4E,\n    0xFF47, 0xFF40, 0xFF3A, 0xFF35, 0xFF31, 0xFF2E, 0xFF2B, 0xFF2A,\n    0xFF2A, 0xFF2B, 0xFF2D, 0xFF31, 0xFF36, 0xFF3F, 0xFF4A, 0xFF55,\n    0xFF5E, 0xFF65, 0xFF68, 0xFF68, 0xFF68, 0xFF68, 0xFF68, 0xFF68,\n    0xFF68, 0xFF68, 0xFF68, 0xFF68, 0xFF68, 0xFF68, 0xFF68, 0xFF68,\n    0xFF68, 0xFF68, 0xC9D8, 0xC7F0, 0xC314, 0xBC91, 0xB5B3, 0xAFC7,\n    0xAC19, 0xAA68, 0xA97C, 0xA931, 0xA962, 0xA9E9, 0xAAA3, 0xAB6A,\n    0xAC19, 0xACB1, 0xAD4B, 0xADE5, 0xAE82, 0xAF21, 0xAFC2, 0xB065,\n    0xB10B, 0xB1B5, 0xB261, 0xB312, 0xB3C6, 0xB47E, 0xB53B, 0xB5FC,\n    0xB6C2, 0xB78D, 0xB85E, 0xB934, 0xBA10, 0xBAF3, 0xBBDC, 0xBCCB,\n    0xBDC2, 0xBEBF, 0xBFC5, 0xC0D1, 0xC25D, 0xC4AB, 0xC76B, 0xCA4F,\n    0xCD08, 0xCF47, 0xD022, 0xD010, 0xD020, 0xD031, 0xD041, 0xD04F,\n    0xD05A, 0xD060, 0xD061, 0xD05A, 0xD04C, 0xD033, 0xD010, 0xCFDB,\n    0xCF92, 0xCF3A, 0xCED6, 0xCE6D, 0xCE03, 0xCD9D, 0xCD40, 0xCCF0,\n    0xCCB2, 0xCCD8, 0xCD7A, 0xCE45, 0xCEE8, 0xCF12, 0xCE70, 0xCCB2,\n    0xC90F, 0xC38A, 0xBD09, 0xB66D, 0xB09B, 0xAC76, 0xAAE2, 0xAAE2,\n    0xAAE2, 0xAAE2, 0xAAE2, 0xAAE2, 0xAAE2, 0xAAE2, 0xAAE2, 0xAAE2,\n    0xAAE2, 0xAAE2, 0xAAE2, 0xAAE2, 0xAAE2, 0xAAE2, 0x1E4A, 0x1FDB,\n    0x23D9, 0x2933, 0x2ED8, 0x33B6, 0x36BC, 0x3827, 0x38FA, 0x394D,\n    0x3938, 0x38D4, 0x3838, 0x377E, 0x36BC, 0x35F9, 0x352E, 0x345A,\n    0x337E, 0x329A, 0x31B1, 0x30C1, 0x2FCC, 0x2ED2, 0x2DD4, 0x2CD3,\n    0x2BCF, 0x2AC9, 0x29C1, 0x28B8, 0x27AF, 0x26A7, 0x25A0, 0x249A,\n    0x2396, 0x2296, 0x2199, 0x20A0, 0x1FAD, 0x1EBE, 0x1DD6, 0x1CF5,\n    0x1C1B, 0x1B49, 0x1A80, 0x19C0, 0x190A, 0x185F, 0x1BE8, 0x2010,\n    0x2082, 0x20B1, 0x20AC, 0x2081, 0x2040, 0x1FF7, 0x1FB5, 0x1F88,\n    0x1F7E, 0x1FA7, 0x2010, 0x2446, 0x2751, 0x24FD, 0x21C4, 0x1DFA,\n    0x19F7, 0x1610, 0x129D, 0x0FF2, 0x0E66, 0x0DD1, 0x0DE0, 0x0EA4,\n    0x102F, 0x1294, 0x15E6, 0x1A37, 0x201C, 0x27BB, 0x3076, 0x39B4,\n    0x42D9, 0x4B4A, 0x526C, 0x5544, 0x54CD, 0x5399, 0x51C0, 0x50E3,\n    0x5338, 0x5595, 0x51AB, 0x53A0, 0x5595, 0x5490, 0x52AC, 0x51AB,\n    0x53B1, 0x55B3, 0x1B09, 0x1B27, 0x1B76, 0x1BDF, 0x1C4D, 0x1CAD,\n    0x1CE8, 0x1D01, 0x1D0A, 0x1D09, 0x1D00, 0x1CF4, 0x1CE9, 0x1CE4,\n    0x1CE8, 0x1CF3, 0x1CFE, 0x1D0B, 0x1D18, 0x1D27, 0x1D35, 0x1D45,\n    0x1D55, 0x1D65, 0x1D76, 0x1D86, 0x1D97, 0x1DA8, 0x1DBA, 0x1DCA,\n    0x1DDB, 0x1DEC, 0x1DFC, 0x1E0C, 0x1E1B, 0x1E29, 0x1E37, 0x1E44,\n    0x1E51, 0x1E5C, 0x1E66, 0x1E70, 0x1E78, 0x1E7E, 0x1E84, 0x1E88,\n    0x1E8A, 0x1E8B, 0x1DC1, 0x1CE8, 0x1CF9, 0x1D5A, 0x1DEF, 0x1E9C,\n    0x1F46, 0x1FD1, 0x2021, 0x201A, 0x1FA1, 0x1E99, 0x1CE8, 0x1A41,\n    0x1694, 0x1221, 0x0D25, 0x07DE, 0x028B, 0xFD6B, 0xF8B9, 0xF4B6,\n    0xF19F, 0xEFC1, 0xEF06, 0xEF21, 0xEFC1, 0xF095, 0xF150, 0xF19F,\n    0xF19F, 0xF19F, 0xF19F, 0xF19F, 0xF19F, 0xF19F, 0xF19F, 0xF19F,\n    0xF19F, 0xF19F, 0xF19F, 0xF19F, 0xF19F, 0xF19F, 0xF19F, 0xF19F,\n    0xF19F, 0xF19F, 0xF19F, 0xF19F, 0xF19F, 0xF19F, 0x1144, 0x1105,\n    0x1062, 0x0F89, 0x0EA4, 0x0DDE, 0x0D63, 0x0D2D, 0x0D13, 0x0D0F,\n    0x0D1B, 0x0D30, 0x0D47, 0x0D5A, 0x0D63, 0x0D65, 0x0D67, 0x0D68,\n    0x0D6A, 0x0D6D, 0x0D6F, 0x0D71, 0x0D73, 0x0D76, 0x0D78, 0x0D7B,\n    0x0D7D, 0x0D80, 0x0D82, 0x0D85, 0x0D87, 0x0D8A, 0x0D8C, 0x0D8F,\n    0x0D91, 0x0D93, 0x0D95, 0x0D97, 0x0D99, 0x0D9B, 0x0D9C, 0x0D9D,\n    0x0D9F, 0x0DA0, 0x0DA0, 0x0DA1, 0x0DA1, 0x0DA2, 0x0D84, 0x0D63,\n    0x0D66, 0x0D74, 0x0D8A, 0x0DA4, 0x0DBD, 0x0DD2, 0x0DDE, 0x0DDD,\n    0x0DCB, 0x0DA4, 0x0D63, 0x0CFE, 0x0C73, 0x0BC9, 0x0B0C, 0x0A43,\n    0x0978, 0x08B5, 0x0802, 0x076A, 0x06F4, 0x06AD, 0x0691, 0x0695,\n    0x06AD, 0x06CD, 0x06E8, 0x06F4, 0x06F4, 0x06F4, 0x06F4, 0x06F4,\n    0x06F4, 0x06F4, 0x06F4, 0x06F4, 0x06F4, 0x06F4, 0x06F4, 0x06F4,\n    0x06F4, 0x06F4, 0x06F4, 0x06F4, 0x06F4, 0x06F4, 0x06F4, 0x06F4,\n    0x06F4, 0x06F4, 0xAC44, 0xAC55, 0xAC7A, 0xAC9B, 0xACA3, 0xAC7B,\n    0xAC0D, 0xAB38, 0xAA07, 0xA8A1, 0xA72C, 0xA5D2, 0xA4B8, 0xA407,\n    0xA3E7, 0xA420, 0xA464, 0xA4B1, 0xA506, 0xA565, 0xA5CB, 0xA638,\n    0xA6AC, 0xA726, 0xA7A6, 0xA82B, 0xA8B4, 0xA942, 0xA9D3, 0xAA67,\n    0xAAFE, 0xAB97, 0xAC30, 0xACCB, 0xAD66, 0xAE01, 0xAE9C, 0xAF35,\n    0xAFCC, 0xB060, 0xB0F2, 0xB181, 0xB20B, 0xB291, 0xB312, 0xB38E,\n    0xB403, 0xB472, 0xB3A6, 0xB291, 0xB2B7, 0xB355, 0xB440, 0xB54F,\n    0xB657, 0xB72C, 0xB7A4, 0xB795, 0xB6D4, 0xB537, 0xB291, 0xAE6F,\n    0xA8B4, 0xA1C3, 0x99FD, 0x91C3, 0x8975, 0x8175, 0x7A20, 0x73DE,\n    0x6F0D, 0x6C22, 0x6B00, 0x6B29, 0x6C22, 0x6D6E, 0x6E91, 0x6F0D,\n    0x6F0D, 0x6F0D, 0x6F0D, 0x6F0D, 0x6F0D, 0x6F0D, 0x6F0D, 0x6F0D,\n    0x6F0D, 0x6F0D, 0x6F0D, 0x6F0D, 0x6F0D, 0x6F0D, 0x6F0D, 0x6F0D,\n    0x6F0D, 0x6F0D, 0x6F0D, 0x6F0D, 0x6F0D, 0x6F0D, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0005, 0x000B,\n    0x000F, 0x0012, 0x0011, 0x000C, 0x0000, 0xFFF1, 0xFFE3, 0xFFD5,\n    0xFFC9, 0xFFBC, 0xFFB1, 0xFFA5, 0xFF99, 0xFF8D, 0xFF81, 0xFF74,\n    0xFF67, 0xFF59, 0xFF49, 0xFF39, 0xFF27, 0xFF13, 0xFEFE, 0xFEE6,\n    0xFECD, 0xFEB1, 0xFE93, 0xFE72, 0xFE4F, 0xFE28, 0xFDFF, 0xFDD2,\n    0xFD77, 0xFCD8, 0xFC12, 0xFB41, 0xFA85, 0xF9F9, 0xFA1F, 0xFA80,\n    0xFA83, 0xFA7A, 0xFA69, 0xFA53, 0xFA3D, 0xFA29, 0xFA1D, 0xFA1C,\n    0xFA2A, 0xFA4A, 0xFA80, 0xFAD7, 0xFB4E, 0xFBDF, 0xFC81, 0xFD2D,\n    0xFDDA, 0xFE81, 0xFF19, 0xFF9C, 0x0000, 0x003C, 0x0054, 0x0051,\n    0x003C, 0x0021, 0x000A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000,\n    0x0000, 0xFFFF, 0xFFFC, 0xFFF9, 0xFFF4, 0xFFEF, 0xFFEA, 0xFFE4,\n    0xFFDE, 0xFFD8, 0xFFD1, 0xFFCB, 0xFFC5, 0xFFC0, 0xFFBB, 0xFFB6,\n    0xFFB2, 0xFFAF, 0xFFAD, 0xFFAC, 0xFFAC, 0xFFAE, 0xFFB1, 0xFFB5,\n    0xFFBC, 0xFFC4, 0xFFCE, 0xFFDA, 0xFFFE, 0x0045, 0x00A4, 0x010A,\n    0x0168, 0x01B0, 0x01B3, 0x0199, 0x0199, 0x019D, 0x01A2, 0x01A8,\n    0x01AF, 0x01B4, 0x01B7, 0x01B7, 0x01B3, 0x01A9, 0x0199, 0x0180,\n    0x015D, 0x0133, 0x0104, 0x00D2, 0x00A0, 0x006F, 0x0043, 0x001D,\n    0x0000, 0xFFEF, 0xFFE8, 0xFFE9, 0xFFEF, 0xFFF7, 0xFFFE, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xBF40, 0xBE3B,\n    0xBBA3, 0xB828, 0xB47D, 0xB154, 0xAF5D, 0xAE6C, 0xADD7, 0xAD93,\n    0xAD93, 0xADCD, 0xAE34, 0xAEBD, 0xAF5D, 0xB004, 0xB0AD, 0xB157,\n    0xB203, 0xB2B2, 0xB362, 0xB416, 0xB4CD, 0xB587, 0xB644, 0xB706,\n    0xB7CC, 0xB896, 0xB966, 0xBA3A, 0xBB14, 0xBBF4, 0xBCDA, 0xBDC6,\n    0xBEB8, 0xBFB2, 0xC0B3, 0xC1BB, 0xC2CB, 0xC3E4, 0xC505, 0xC62E,\n    0xC7F2, 0xCA9C, 0xCDC6, 0xD10B, 0xD404, 0xD64A, 0xD5E6, 0xD48C,\n    0xD483, 0xD4A6, 0xD4E7, 0xD536, 0xD588, 0xD5CD, 0xD5F8, 0xD5FB,\n    0xD5C9, 0xD553, 0xD48C, 0xD351, 0xD19D, 0xCF8C, 0xCD3D, 0xCACA,\n    0xC852, 0xC5F1, 0xC3C4, 0xC1E8, 0xC079, 0xBFCB, 0xBFE5, 0xC072,\n    0xC11C, 0xC18F, 0xC175, 0xC079, 0xBE26, 0xBAA1, 0xB679, 0xB241,\n    0xAE8A, 0xABE4, 0xAAE2, 0xAAE2, 0xAAE2, 0xAAE2, 0xAAE2, 0xAAE2,\n    0xAAE2, 0xAAE2, 0xAAE2, 0xAAE2, 0xAAE2, 0xAAE2, 0xAAE2, 0xAAE2,\n    0xAAE2, 0xAAE2, 0x2537, 0x263C, 0x28D4, 0x2C4F, 0x2FFA, 0x3323,\n    0x351A, 0x360D, 0x36A6, 0x36F1, 0x36F5, 0x36BF, 0x3657, 0x35C7,\n    0x351A, 0x345D, 0x3396, 0x32C6, 0x31ED, 0x310D, 0x3026, 0x2F39,\n    0x2E46, 0x2D4F, 0x2C53, 0x2B54, 0x2A52, 0x294F, 0x284A, 0x2744,\n    0x263F, 0x253A, 0x2436, 0x2335, 0x2237, 0x213C, 0x2046, 0x1F55,\n    0x1E69, 0x1D83, 0x1CA5, 0x1BCE, 0x1B00, 0x1A3B, 0x1980, 0x18D0,\n    0x182A, 0x1791, 0x1BF3, 0x20FB, 0x2186, 0x21BF, 0x21B9, 0x2185,\n    0x2136, 0x20DC, 0x208B, 0x2053, 0x2048, 0x207A, 0x20FB, 0x2613,\n    0x29E0, 0x2757, 0x23C6, 0x1F90, 0x1B14, 0x16B4, 0x12CF, 0x0FC8,\n    0x0DFE, 0x0D47, 0x0D46, 0x0E0A, 0x0FA7, 0x122C, 0x15AC, 0x1A37,\n    0x206F, 0x287D, 0x31BB, 0x3B81, 0x452B, 0x4E10, 0x558C, 0x5852,\n    0x576D, 0x52E6, 0x53CC, 0x5594, 0x5752, 0x581B, 0x5587, 0x52E6,\n    0x5538, 0x57A7, 0x572B, 0x55E6, 0x547D, 0x5394, 0xD64A, 0xD64A,\n    0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64C, 0xD64F, 0xD653,\n    0xD656, 0xD658, 0xD658, 0xD653, 0xD64A, 0xD63E, 0xD630, 0xD621,\n    0xD611, 0xD600, 0xD5EF, 0xD5DD, 0xD5CA, 0xD5B7, 0xD5A3, 0xD58F,\n    0xD57B, 0xD567, 0xD553, 0xD53F, 0xD52B, 0xD518, 0xD505, 0xD4F2,\n    0xD4E0, 0xD4CF, 0xD4BF, 0xD4AF, 0xD4A1, 0xD493, 0xD487, 0xD47C,\n    0xD473, 0xD46B, 0xD465, 0xD460, 0xD45D, 0xD45C, 0xD54A, 0xD64A,\n    0xD645, 0xD5FA, 0xD581, 0xD4F1, 0xD462, 0xD3EC, 0xD3A6, 0xD3A8,\n    0xD40A, 0xD4E2, 0xD64A, 0xD851, 0xDAEE, 0xDE12, 0xE1AC, 0xE5AF,\n    0xEA0B, 0xEEB0, 0xF38F, 0xF898, 0x0950, 0x0AD4, 0x0B60, 0x0B3D,\n    0x0AAF, 0x09FF, 0x0972, 0x0950, 0x0990, 0x09F0, 0x0A63, 0x0AD7,\n    0x0B3D, 0x0B86, 0x0BA2, 0x0BA2, 0x0BA2, 0x0BA2, 0x0BA2, 0x0BA2,\n    0x0BA2, 0x0BA2, 0x0BA2, 0x0BA2, 0x0BA2, 0x0BA2, 0x0BA2, 0x0BA2,\n    0x0BA2, 0x0BA2, 0xEC41, 0xEC41, 0xEC41, 0xEC41, 0xEC41, 0xEC41,\n    0xEC41, 0xEC41, 0xEC41, 0xEC42, 0xEC42, 0xEC43, 0xEC43, 0xEC42,\n    0xEC41, 0xEC3F, 0xEC3D, 0xEC3B, 0xEC39, 0xEC37, 0xEC34, 0xEC32,\n    0xEC2F, 0xEC2C, 0xEC2A, 0xEC27, 0xEC24, 0xEC21, 0xEC1E, 0xEC1C,\n    0xEC19, 0xEC16, 0xEC14, 0xEC11, 0xEC0F, 0xEC0C, 0xEC0A, 0xEC08,\n    0xEC06, 0xEC04, 0xEC02, 0xEC01, 0xEBFF, 0xEBFE, 0xEBFD, 0xEBFD,\n    0xEBFC, 0xEBFC, 0xEC1D, 0xEC41, 0xEC3D, 0xEC29, 0xEC0C, 0xEBEA,\n    0xEBCA, 0xEBAF, 0xEBA0, 0xEBA1, 0xEBB9, 0xEBED, 0xEC41, 0xECC6,\n    0xED81, 0xEE64, 0xEF63, 0xF071, 0xF182, 0xF288, 0xF377, 0xF442,\n    0xF355, 0xF33B, 0xF328, 0xF31C, 0xF31A, 0xF323, 0xF336, 0xF355,\n    0xF38F, 0xF3E5, 0xF44C, 0xF4B4, 0xF50F, 0xF551, 0xF569, 0xF569,\n    0xF569, 0xF569, 0xF569, 0xF569, 0xF569, 0xF569, 0xF569, 0xF569,\n    0xF569, 0xF569, 0xF569, 0xF569, 0xF569, 0xF569, 0xB59E, 0xB540,\n    0xB44A, 0xB2F1, 0xB16B, 0xAFEF, 0xAEB1, 0xAD88, 0xAC38, 0xAADB,\n    0xA98C, 0xA865, 0xA783, 0xA6FE, 0xA6F3, 0xA733, 0xA77C, 0xA7CE,\n    0xA829, 0xA88C, 0xA8F7, 0xA968, 0xA9E1, 0xAA5F, 0xAAE3, 0xAB6B,\n    0xABF9, 0xAC8A, 0xAD1F, 0xADB7, 0xAE51, 0xAEED, 0xAF8A, 0xB029,\n    0xB0C7, 0xB166, 0xB204, 0xB2A1, 0xB33C, 0xB3D4, 0xB46B, 0xB4FD,\n    0xB58C, 0xB617, 0xB69D, 0xB71E, 0xB799, 0xB80E, 0xB763, 0xB66F,\n    0xB66E, 0xB6A0, 0xB6F4, 0xB759, 0xB7BE, 0xB812, 0xB845, 0xB845,\n    0xB802, 0xB76B, 0xB66F, 0xB544, 0xB411, 0xB2B1, 0xB0FD, 0xAED0,\n    0xAC02, 0xA86D, 0xA3EC, 0x9E58, 0x78C4, 0x7563, 0x7436, 0x7498,\n    0x75E3, 0x7772, 0x789E, 0x78C4, 0x77E1, 0x768A, 0x74F6, 0x735B,\n    0x71F1, 0x70EF, 0x708D, 0x708D, 0x708D, 0x708D, 0x708D, 0x708D,\n    0x708D, 0x708D, 0x708D, 0x708D, 0x708D, 0x708D, 0x708D, 0x708D,\n    0x708D, 0x708D, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001,\n    0x4171, 0xBF5F, 0xFC62, 0xFC62, 0xFC61, 0xFC60, 0xFC5E, 0xFC5C,\n    0xFC5A, 0xFC57, 0xFC55, 0xFC52, 0xFC4E, 0xFC4B, 0xFC47, 0xFC44,\n    0xFC40, 0xFC3C, 0xFC38, 0xFC34, 0xFC31, 0xFC2D, 0xFC29, 0xFC26,\n    0xFC22, 0xFC1F, 0xFC1C, 0xFC1A, 0xFC17, 0xFC15, 0xFC14, 0xFC12,\n    0xFC12, 0xFC11, 0xFC11, 0xFC12, 0xFC13, 0xFC15, 0xFC17, 0xFC1A,\n    0xFC1E, 0xFC22, 0xFC27, 0xFC2D, 0xFC34, 0xFC3B, 0xFC43, 0xFC4D,\n    0xFC57, 0xFC62, 0xFD75, 0xFE99, 0xFEAB, 0xFE94, 0xFE60, 0xFE1B,\n    0xFDD3, 0xFD94, 0xFD6A, 0xFD63, 0xFD8A, 0xFDED, 0xFE99, 0xFF98,\n    0x00EA, 0x028A, 0x0470, 0x0697, 0x08F8, 0x0B8C, 0x0E4E, 0x14D8,\n    0x1AF6, 0x1B23, 0x1963, 0x1846, 0x1905, 0x1A68, 0x1B50, 0x1B1B,\n    0x1A6B, 0x1A05, 0x1A29, 0x1A7D, 0x1AE1, 0x1B35, 0x1B58, 0x1B58,\n    0x1B58, 0x1B58, 0x1B58, 0x1B58, 0x1B58, 0x1B58, 0x1B58, 0x1B58,\n    0x1B58, 0x1B58, 0x1B58, 0x1B58, 0x1B58, 0x1B58, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFBC, 0xFF16, 0xFE48,\n    0xFD8F, 0xFD23, 0xFD40, 0xFE21, 0x0000, 0x048A, 0x0C06, 0x1499,\n    0x1C66, 0x218F, 0x2239, 0x1C32, 0x1089, 0x023D, 0xF44E, 0xE9BB,\n    0xE585, 0xE8BB, 0xF116, 0xFC95, 0x0935, 0x14F6, 0x1DD5, 0x21D0,\n    0x20D4, 0x1CB5, 0x1650, 0x0E84, 0x062D, 0xFE2A, 0xF756, 0xF28F,\n    0xF18C, 0xF3CE, 0xF6DD, 0xF843, 0xF701, 0xF485, 0xF1F9, 0xF085,\n    0xF085, 0xF085, 0xF085, 0xF085, 0xF085, 0xF085, 0xF085, 0xF085,\n    0xF085, 0xF085, 0xF085, 0xF0A0, 0xF0C6, 0xF0F4, 0xF128, 0xF15E,\n    0xF195, 0xF1CA, 0xF1FB, 0xF224, 0xF244, 0xF252, 0xF24E, 0xF240,\n    0xF22F, 0xF225, 0xF229, 0xF244, 0xF282, 0xF2E0, 0xF34F, 0xF3C0,\n    0xF424, 0xF46A, 0xF485, 0xF485, 0xF485, 0xF485, 0xF485, 0xF485,\n    0xF485, 0xF485, 0xF485, 0xF485, 0xF485, 0xF485, 0xF485, 0xF485,\n    0xF485, 0xF485, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0072,\n    0x0110, 0x01D0, 0x02A6, 0x038A, 0x046F, 0x054C, 0x0616, 0x06C3,\n    0x0748, 0x0792, 0x07A0, 0x0788, 0x075F, 0x0739, 0x072A, 0x0748,\n    0x07A2, 0x0829, 0x08C9, 0x096B, 0x09FA, 0x0A60, 0x0A87, 0x0A87,\n    0x0A87, 0x0A87, 0x0A87, 0x0A87, 0x0A87, 0x0A87, 0x0A87, 0x0A87,\n    0x0A87, 0x0A87, 0x0A87, 0x0A87, 0x0A87, 0x0A87, 0x0884, 0x09FB,\n    0x0DC1, 0x12E2, 0x186C, 0x1D6E, 0x20F6, 0x233F, 0x252E, 0x26CB,\n    0x281E, 0x292F, 0x2A06, 0x2AAB, 0x2B25, 0x2B34, 0x2AB1, 0x29CC,\n    0x28B3, 0x2798, 0x26AA, 0x25E0, 0x2514, 0x2445, 0x2372, 0x229E,\n    0x21C6, 0x2116, 0x209C, 0x202D, 0x1FA1, 0x1ECD, 0x1D89, 0x1BAA,\n    0x1930, 0x1644, 0x12FE, 0x0F74, 0x0BBC, 0x07EC, 0x041A, 0x005E,\n    0xFC62, 0xF804, 0xF3A7, 0xEFAA, 0xEBFF, 0xE87E, 0xE56B, 0xE309,\n    0xE4CB, 0xE449, 0xE264, 0xE418, 0xE4C6, 0xE2BC, 0xE23C, 0xE350,\n    0xE42D, 0xE348, 0xE309, 0xE4AF, 0xE695, 0xE8A9, 0xEAD9, 0xED11,\n    0xEF40, 0xF152, 0xF337, 0xF4DA, 0xF62A, 0xF6E6, 0xF703, 0xF6BA,\n    0xF645, 0xF5E0, 0xF5C3, 0xF62A, 0xF718, 0xF859, 0xF9D9, 0xFB80,\n    0xFD38, 0xFEEA, 0x007E, 0x0279, 0xFFFF, 0xFDDB, 0xFEDF, 0x00E1,\n    0x0203, 0xFE16, 0xFF74, 0x0116, 0xFF02, 0x00DB, 0x0036, 0xFF26,\n    0xFE8C, 0x00A0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0001, 0x0001, 0x0002, 0x0002, 0x0003, 0x0004,\n    0x0004, 0x0005, 0x0006, 0x0007, 0x0007, 0x0008, 0x0009, 0x0009,\n    0x000A, 0x000B, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, 0x000F,\n    0x000F, 0x000F, 0x000E, 0x000D, 0x000B, 0x0009, 0x0007, 0x0005,\n    0x0003, 0x0002, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0xFFFF, 0xFFFE, 0xFFFD, 0xFFFB, 0xFFFA, 0xFFF9, 0xFFF7, 0xFFF6,\n    0xFFF6, 0xFFF6, 0xFFF8, 0xFFFA, 0xFFFC, 0xFFFC, 0xFFFB, 0xFFF6,\n    0xFFEC, 0xFFDC, 0xFFCA, 0xFFB8, 0xFFA8, 0xFF9C, 0xFF98, 0xFF98,\n    0xFF98, 0xFF98, 0xFF98, 0xFF98, 0xFF98, 0xFF98, 0xFF98, 0xFF98,\n    0xFF98, 0xFF98, 0xFF98, 0xFF98, 0xFF98, 0xFF98, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001,\n    0x0002, 0x0002, 0x0002, 0x0001, 0x0000, 0xFFFE, 0xFFFC, 0xFFF9,\n    0xFFF6, 0xFFF3, 0xFFF0, 0xFFEC, 0xFFE9, 0xFFE5, 0xFFE2, 0xFFDE,\n    0xFFDB, 0xFFD7, 0xFFD4, 0xFFD1, 0xFFCE, 0xFFCB, 0xFFC8, 0xFFC5,\n    0xFFC2, 0xFFBF, 0xFFBD, 0xFFBC, 0xFFBC, 0xFFBE, 0xFFC3, 0xFFC8,\n    0xFFD0, 0xFFD7, 0xFFE0, 0xFFE8, 0xFFF0, 0xFFF7, 0xFFFC, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0026, 0x005B, 0x009B, 0x00E3, 0x0130,\n    0x017D, 0x01C7, 0x020A, 0x0244, 0x0271, 0x028C, 0x0297, 0x0296,\n    0x028D, 0x0281, 0x0276, 0x0271, 0x0270, 0x026F, 0x026D, 0x026B,\n    0x026A, 0x0269, 0x0268, 0x0268, 0x0268, 0x0268, 0x0268, 0x0268,\n    0x0268, 0x0268, 0x0268, 0x0268, 0x0268, 0x0268, 0x0268, 0x0268,\n    0x0268, 0x0268, 0x40A1, 0x40EC, 0x41B2, 0x42C8, 0x4407, 0x4544,\n    0x4655, 0x475D, 0x4888, 0x49C0, 0x4AF1, 0x4C03, 0x4CE1, 0x4D76,\n    0x4DAB, 0x4D9E, 0x4D7D, 0x4D4A, 0x4D07, 0x4CB5, 0x4C55, 0x4BEA,\n    0x4B74, 0x4AF7, 0x4A72, 0x49E8, 0x495A, 0x48CB, 0x483B, 0x47AC,\n    0x4720, 0x4698, 0x4617, 0x4584, 0x44D2, 0x440F, 0x4347, 0x4288,\n    0x41E1, 0x415F, 0x40FA, 0x40A1, 0x4051, 0x400B, 0x3FCE, 0x3F99,\n    0x3F6A, 0x3F42, 0x3F1F, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00,\n    0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3B67,\n    0x366D, 0x3065, 0x29A3, 0x227C, 0x1B45, 0x1450, 0x0DF4, 0x0884,\n    0x0454, 0x01D9, 0x00FC, 0x0144, 0x0238, 0x035D, 0x043A, 0x0454,\n    0x03AB, 0x02AC, 0x017E, 0x004C, 0xFF3F, 0xFE7F, 0xFE36, 0xFE36,\n    0xFE36, 0xFE36, 0xFE36, 0xFE36, 0xFE36, 0xFE36, 0xFE36, 0xFE36,\n    0xFE36, 0xFE36, 0xFE36, 0xFE36, 0xFE36, 0xFE36,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_30.inc.c",
    "content": "static const struct Animation anim_30[] = {\n    0,\n    189,\n    0,\n    0,\n    0x5A,\n    ANIMINDEX_NUMPARTS(anim_30_indices),\n    anim_30_values,\n    anim_30_indices,\n    0,\n};\n\n\nstatic const u16 anim_30_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005A, 0x0A40,\n    0x005A, 0x0932, 0x005A, 0x098C, 0x005A, 0x09E6,\n    0x005A, 0x0824, 0x005A, 0x087E, 0x005A, 0x08D8,\n    0x0001, 0x0820, 0x0001, 0x0821, 0x0001, 0x0822,\n    0x005A, 0x016B, 0x005A, 0x01C5, 0x005A, 0x021F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005A, 0x0111,\n    0x005A, 0x0003, 0x005A, 0x005D, 0x005A, 0x00B7,\n    0x0001, 0x081C, 0x0001, 0x081D, 0x0001, 0x081E,\n    0x005A, 0x03E1, 0x005A, 0x043B, 0x005A, 0x0495,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005A, 0x0387,\n    0x005A, 0x0279, 0x005A, 0x02D3, 0x005A, 0x032D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x081F,\n    0x005A, 0x0767, 0x0001, 0x07C1, 0x005A, 0x07C2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005A, 0x070D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005A, 0x06B3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0823,\n    0x0001, 0x0657, 0x0001, 0x0658, 0x005A, 0x0659,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005A, 0x05FD,\n    0x005A, 0x04EF, 0x005A, 0x0549, 0x005A, 0x05A3,\n};\n\nstatic const s16 anim_30_values[] = {\n    0x0000, 0x00AA, 0x3FFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009,\n    0x0023, 0x004B, 0x007D, 0x00B7, 0x00F7, 0x0138, 0x0178, 0x01B4,\n    0x01EA, 0x0215, 0x0234, 0x0243, 0x0240, 0x0227, 0x01F5, 0x01A9,\n    0x013D, 0x00B0, 0x0000, 0xFDFD, 0xFA1D, 0xF554, 0xF098, 0xECDA,\n    0xEA09, 0xE7A9, 0xE619, 0xE5B4, 0xE650, 0xE76E, 0xE8E8, 0xEA98,\n    0xEC5A, 0xEE08, 0xEF7E, 0xF094, 0xF13C, 0xF192, 0xF1B3, 0xF1BE,\n    0xF1D2, 0xF20D, 0xF28D, 0xF36B, 0xF495, 0xF5E6, 0xF739, 0xF86C,\n    0xF95A, 0xFA1C, 0xFAE2, 0xFBA7, 0xFC68, 0xFD20, 0xFDCC, 0xFE69,\n    0xFEF1, 0xFF62, 0xFFB8, 0xFFEE, 0x0000, 0xF97C, 0xF97C, 0xF97C,\n    0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C,\n    0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C,\n    0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C,\n    0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C,\n    0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C,\n    0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF9EC, 0xFACD, 0xFB75,\n    0xFB3D, 0xF97C, 0xF3ED, 0xEB5A, 0xE3AC, 0xE0CC, 0xE2ED, 0xE728,\n    0xECC1, 0xF2FC, 0xF91B, 0xFE62, 0x0214, 0x0375, 0x0187, 0xFC95,\n    0xF5CF, 0xEE6A, 0xE797, 0xE289, 0xE071, 0xE27F, 0xE804, 0xEF65,\n    0xF70B, 0xFD5C, 0x00BE, 0x01C5, 0x0223, 0x01F5, 0x0155, 0x0061,\n    0xFF34, 0xFDE8, 0xFC9A, 0xFB67, 0xFA68, 0xF9BB, 0xF97C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED41,\n    0xECAB, 0xEC3B, 0xEC60, 0xED8C, 0xF126, 0xF6B3, 0xFBC8, 0xFDFB,\n    0xFD47, 0xFB7B, 0xF8EF, 0xF5FC, 0xF2F8, 0xF03D, 0xEE22, 0xECFF,\n    0xED14, 0xEE29, 0xEFE1, 0xF1E0, 0xF3C9, 0xF53F, 0xF5E6, 0xF584,\n    0xF457, 0xF2B8, 0xF0FF, 0xEF86, 0xEEA6, 0xEE3C, 0xEDEC, 0xEDB1,\n    0xED89, 0xED71, 0xED66, 0xED65, 0xED6B, 0xED75, 0xED7F, 0xED88,\n    0xED8C, 0xD8FA, 0xD904, 0xD921, 0xD94E, 0xD988, 0xD9CC, 0xDA18,\n    0xDA69, 0xDABB, 0xDB0C, 0xDB5A, 0xDBA1, 0xDBDE, 0xDC10, 0xDC33,\n    0xDC43, 0xDC40, 0xDC24, 0xDBEF, 0xDB9D, 0xDB2B, 0xDA96, 0xD9DC,\n    0xD8FA, 0xD48F, 0xCBFE, 0xC366, 0xBEE7, 0xBF49, 0xC1E7, 0xC5BB,\n    0xC9BF, 0xCCEE, 0xCE41, 0xCCE8, 0xC98E, 0xC568, 0xC1AA, 0xBF89,\n    0xBEE3, 0xBEB7, 0xBEEC, 0xBF6A, 0xC018, 0xC0DE, 0xC1A3, 0xC24E,\n    0xC2F6, 0xC3BD, 0xC49F, 0xC599, 0xC6A6, 0xC7C3, 0xC93C, 0xCB0C,\n    0xCCB1, 0xCDAA, 0xCE22, 0xCE9B, 0xCF15, 0xCF8F, 0xD00A, 0xD085,\n    0xD0FF, 0xD179, 0xD1F2, 0xD269, 0xD2DF, 0xD353, 0xD3C5, 0xD434,\n    0xD4A1, 0xD50A, 0xD570, 0xD5D2, 0xD630, 0xD68A, 0xD6DF, 0xD72E,\n    0xD779, 0xD7BE, 0xD7FD, 0xD836, 0xD868, 0xD893, 0xD8B8, 0xD8D4,\n    0xD8E9, 0xD8F6, 0xD8FA, 0xFD0D, 0xFD18, 0xFD36, 0xFD64, 0xFDA0,\n    0xFDE6, 0xFE34, 0xFE87, 0xFEDC, 0xFF2F, 0xFF7F, 0xFFC9, 0x0007,\n    0x003A, 0x005E, 0x006F, 0x006B, 0x004F, 0x0019, 0xFFC5, 0xFF4F,\n    0xFEB6, 0xFDF6, 0xFD0D, 0xF819, 0xEE98, 0xE59A, 0xE22E, 0xE36C,\n    0xE505, 0xE6F1, 0xE925, 0xEB99, 0xEE44, 0xF11D, 0xF41A, 0xF733,\n    0xFA5F, 0xFD94, 0x00C9, 0x03F6, 0x0711, 0x0A11, 0x0CED, 0x0F9D,\n    0x1216, 0x1451, 0x1643, 0x17E3, 0x192A, 0x1A0D, 0x1A84, 0x1586,\n    0x0948, 0xFA99, 0xEE46, 0xE91F, 0xEBCC, 0xF2AB, 0xFC1B, 0x0679,\n    0x1029, 0x1786, 0x1AF2, 0x1987, 0x146A, 0x0D08, 0x04CF, 0xFD2B,\n    0xF78A, 0xF558, 0xF821, 0xFF18, 0x0825, 0x1132, 0x1829, 0x1AF2,\n    0x1A71, 0x190A, 0x16E7, 0x1432, 0x1114, 0x0DB8, 0x0A46, 0x06EA,\n    0x03CC, 0x0117, 0xFEF5, 0xFD8E, 0xFD0D, 0xE1DF, 0xE1D6, 0xE1BF,\n    0xE19B, 0xE16C, 0xE135, 0xE0F7, 0xE0B6, 0xE074, 0xE032, 0xDFF3,\n    0xDFBA, 0xDF88, 0xDF60, 0xDF44, 0xDF36, 0xDF39, 0xDF4F, 0xDF7A,\n    0xDFBD, 0xE019, 0xE091, 0xE128, 0xE1DF, 0xE596, 0xECC0, 0xF3C0,\n    0xF6F7, 0xF701, 0xF6E8, 0xF6B0, 0xF659, 0xF5E7, 0xF55B, 0xF4B8,\n    0xF401, 0xF337, 0xF25D, 0xF175, 0xF082, 0xEF86, 0xEE84, 0xED7D,\n    0xEC74, 0xEB6B, 0xEA65, 0xE964, 0xE86A, 0xE77A, 0xE696, 0xE5C0,\n    0xE4FB, 0xE3FF, 0xE2C7, 0xE1B8, 0xE137, 0xE1A8, 0xE34E, 0xE5DF,\n    0xE8EE, 0xEC0E, 0xEED1, 0xF0C9, 0xF189, 0xF0A8, 0xEE63, 0xEB49,\n    0xE7E8, 0xE4CE, 0xE289, 0xE1A8, 0xE2D5, 0xE5C6, 0xE999, 0xED6B,\n    0xF05C, 0xF189, 0xF146, 0xF08A, 0xEF6B, 0xEE00, 0xEC5E, 0xEA9B,\n    0xE8CD, 0xE70A, 0xE568, 0xE3FD, 0xE2DE, 0xE222, 0xE1DF, 0xD250,\n    0xD23F, 0xD20F, 0xD1C5, 0xD166, 0xD0F5, 0xD078, 0xCFF4, 0xCF6C,\n    0xCEE6, 0xCE66, 0xCDF1, 0xCD8B, 0xCD3A, 0xCD01, 0xCCE5, 0xCCEB,\n    0xCD18, 0xCD70, 0xCDF7, 0xCEB3, 0xCFA8, 0xD0DB, 0xD250, 0xDA56,\n    0xE9B2, 0xF81D, 0xFD4E, 0xFAEA, 0xF81F, 0xF4F5, 0xF175, 0xEDA7,\n    0xE992, 0xE53F, 0xE0B6, 0xDC00, 0xD723, 0xD228, 0xCD18, 0xC7FA,\n    0xC2D7, 0xBDB6, 0xB8A0, 0xB39D, 0xAEB4, 0xA9EF, 0xA554, 0xA0ED,\n    0x9CC1, 0x98D8, 0x953B, 0x9369, 0x9413, 0x9608, 0x9816, 0x990C,\n    0x98DD, 0x985B, 0x97A8, 0x96E3, 0x962E, 0x95A9, 0x9576, 0x95A8,\n    0x962C, 0x96DF, 0x97A3, 0x9856, 0x98D9, 0x990C, 0x98C8, 0x981E,\n    0x9741, 0x9664, 0x95BA, 0x9576, 0x967C, 0x9956, 0x9DB0, 0xA333,\n    0xA98A, 0xB062, 0xB764, 0xBE3B, 0xC493, 0xCA16, 0xCE6F, 0xD14A,\n    0xD250, 0x4466, 0x4462, 0x4458, 0x4449, 0x4438, 0x4426, 0x4415,\n    0x4406, 0x43FD, 0x43F9, 0x43FE, 0x440D, 0x4428, 0x4450, 0x4488,\n    0x44D1, 0x452D, 0x459E, 0x4626, 0x46C7, 0x4781, 0x4858, 0x494D,\n    0x4A62, 0x4E6A, 0x5612, 0x5E1E, 0x6355, 0x64E4, 0x64B9, 0x63BB,\n    0x62D1, 0x62E0, 0x646E, 0x66E2, 0x6973, 0x6B59, 0x6BCC, 0x6B3D,\n    0x6AA3, 0x69FF, 0x6950, 0x6897, 0x67D5, 0x670B, 0x6639, 0x6560,\n    0x647F, 0x6399, 0x62AD, 0x61BB, 0x60C5, 0x5FCB, 0x5ECD, 0x5DCD,\n    0x5CCA, 0x5BC5, 0x5ABF, 0x59B8, 0x58B1, 0x57AB, 0x56A5, 0x55A1,\n    0x549F, 0x53A0, 0x52A4, 0x51AB, 0x50B7, 0x4FC8, 0x4EDE, 0x4DFA,\n    0x4D1D, 0x4C47, 0x4B78, 0x4AB2, 0x49F4, 0x4940, 0x4896, 0x47F6,\n    0x4761, 0x46D7, 0x465A, 0x45E9, 0x4586, 0x4530, 0x44E9, 0x44B0,\n    0x4487, 0x446E, 0x4466, 0x0F86, 0x0F90, 0x0FAF, 0x0FDF, 0x101F,\n    0x106C, 0x10C4, 0x1125, 0x118D, 0x11F9, 0x1267, 0x12D5, 0x1340,\n    0x13A7, 0x1407, 0x145F, 0x14AB, 0x14E9, 0x1518, 0x1535, 0x153E,\n    0x1530, 0x150A, 0x14C9, 0x12C6, 0x0E97, 0x0A1B, 0x072D, 0x063A,\n    0x0628, 0x068B, 0x06F8, 0x0704, 0x0687, 0x05C9, 0x0505, 0x0473,\n    0x0450, 0x0477, 0x04A3, 0x04D1, 0x0502, 0x0536, 0x056D, 0x05A6,\n    0x05E1, 0x061F, 0x065E, 0x06A0, 0x06E3, 0x0727, 0x076D, 0x07B4,\n    0x07FC, 0x0845, 0x088F, 0x08D9, 0x0924, 0x096F, 0x09BA, 0x0A05,\n    0x0A4F, 0x0A99, 0x0AE3, 0x0B2C, 0x0B74, 0x0BBB, 0x0C00, 0x0C45,\n    0x0C87, 0x0CC8, 0x0D08, 0x0D45, 0x0D80, 0x0DB9, 0x0DEF, 0x0E22,\n    0x0E53, 0x0E81, 0x0EAB, 0x0ED3, 0x0EF6, 0x0F17, 0x0F33, 0x0F4C,\n    0x0F60, 0x0F70, 0x0F7C, 0x0F83, 0x0F86, 0xF673, 0xF673, 0xF675,\n    0xF678, 0xF67C, 0xF681, 0xF686, 0xF68C, 0xF693, 0xF69B, 0xF6A3,\n    0xF6AC, 0xF6B5, 0xF6BE, 0xF6C7, 0xF6D1, 0xF6DB, 0xF6E4, 0xF6EE,\n    0xF6F7, 0xF701, 0xF709, 0xF712, 0xF71A, 0xF724, 0xF731, 0xF73D,\n    0xF744, 0xF76C, 0xF7B7, 0xF7ED, 0xF7D7, 0xF73C, 0xF5AC, 0xF34A,\n    0xF0C3, 0xEEC0, 0xEDEC, 0xEDEB, 0xEDEF, 0xEDF8, 0xEE05, 0xEE16,\n    0xEE2C, 0xEE45, 0xEE63, 0xEE84, 0xEEA8, 0xEED0, 0xEEFA, 0xEF27,\n    0xEF57, 0xEF89, 0xEFBE, 0xEFF4, 0xF02C, 0xF066, 0xF0A2, 0xF0DE,\n    0xF11C, 0xF15A, 0xF199, 0xF1D9, 0xF218, 0xF258, 0xF298, 0xF2D7,\n    0xF316, 0xF355, 0xF392, 0xF3CE, 0xF409, 0xF442, 0xF47A, 0xF4B0,\n    0xF4E4, 0xF515, 0xF544, 0xF571, 0xF59A, 0xF5C1, 0xF5E4, 0xF604,\n    0xF620, 0xF639, 0xF64D, 0xF65D, 0xF669, 0xF670, 0xF673, 0xC7DD,\n    0xC7EE, 0xC820, 0xC870, 0xC8DC, 0xC963, 0xCA01, 0xCAB5, 0xCB7D,\n    0xCC56, 0xCD3E, 0xCE34, 0xCF34, 0xD03D, 0xD14D, 0xD261, 0xD377,\n    0xD48D, 0xD5A1, 0xD6B1, 0xD7BB, 0xD8BC, 0xD9B2, 0xDA9B, 0xDBD0,\n    0xDD5E, 0xDED0, 0xDFB4, 0xDFF7, 0xDFE5, 0xDF99, 0xDF30, 0xDEC5,\n    0xDE61, 0xDDF9, 0xDD8D, 0xDD1F, 0xDCAC, 0xDC37, 0xDBC0, 0xDB45,\n    0xDAC9, 0xDA4A, 0xD9C9, 0xD947, 0xD8C3, 0xD83E, 0xD7B7, 0xD730,\n    0xD6A8, 0xD61F, 0xD596, 0xD50D, 0xD484, 0xD3FB, 0xD372, 0xD2EA,\n    0xD263, 0xD1DD, 0xD159, 0xD0D5, 0xD054, 0xCFD4, 0xCF56, 0xCEDA,\n    0xCE61, 0xCDEA, 0xCD77, 0xCD06, 0xCC98, 0xCC2E, 0xCBC8, 0xCB65,\n    0xCB06, 0xCAAC, 0xCA56, 0xCA04, 0xC9B7, 0xC970, 0xC92D, 0xC8F0,\n    0xC8B9, 0xC887, 0xC85B, 0xC836, 0xC816, 0xC7FE, 0xC7EC, 0xC7E1,\n    0xC7DD, 0xDEC3, 0xDEC5, 0xDECA, 0xDED0, 0xDED8, 0xDEDF, 0xDEE5,\n    0xDEE7, 0xDEE6, 0xDEE0, 0xDED4, 0xDEC0, 0xDEA4, 0xDE7D, 0xDE4C,\n    0xDE0F, 0xDDC5, 0xDD6D, 0xDD05, 0xDC8C, 0xDC01, 0xDB64, 0xDAB2,\n    0xD9EB, 0xD71A, 0xD1CA, 0xCC36, 0xC899, 0xC79F, 0xC7F1, 0xC8C9,\n    0xC961, 0xC8F3, 0xC67A, 0xC29F, 0xBF25, 0xBDCC, 0xBE84, 0xBFF1,\n    0xC1E0, 0xC422, 0xC687, 0xC8DC, 0xCAF2, 0xCC97, 0xCD85, 0xCDD7,\n    0xCDEC, 0xCE28, 0xCE9B, 0xCF15, 0xCF90, 0xD009, 0xD07A, 0xD0E5,\n    0xD150, 0xD1BA, 0xD223, 0xD28B, 0xD2F2, 0xD35A, 0xD3C0, 0xD427,\n    0xD48D, 0xD4F2, 0xD558, 0xD5BE, 0xD627, 0xD698, 0xD710, 0xD78C,\n    0xD80D, 0xD890, 0xD915, 0xD99B, 0xDA20, 0xDAA4, 0xDB25, 0xDBA2,\n    0xDC1A, 0xDC8C, 0xDCF7, 0xDD5A, 0xDDB3, 0xDE01, 0xDE44, 0xDE7A,\n    0xDEA1, 0xDEBA, 0xDEC3, 0x0DF4, 0x0DE9, 0x0DC9, 0x0D96, 0x0D51,\n    0x0CFC, 0x0C99, 0x0C29, 0x0BAF, 0x0B2B, 0x0AA0, 0x0A0F, 0x097A,\n    0x08E3, 0x084A, 0x07B3, 0x071E, 0x068D, 0x0603, 0x057F, 0x0506,\n    0x0497, 0x0435, 0x03E1, 0x03FB, 0x049E, 0x0566, 0x05EF, 0x0629,\n    0x064B, 0x065C, 0x0663, 0x0667, 0x065F, 0x0647, 0x062A, 0x0616,\n    0x0603, 0x05E6, 0x05C5, 0x05A7, 0x0593, 0x0591, 0x05A6, 0x05DB,\n    0x066B, 0x0760, 0x0874, 0x095D, 0x09FF, 0x0A80, 0x0B01, 0x0BA0,\n    0x0C7E, 0x0DA1, 0x0EF1, 0x1063, 0x11EB, 0x137D, 0x150D, 0x168F,\n    0x17F8, 0x193C, 0x1A4F, 0x1B25, 0x1BB2, 0x1BEB, 0x1BE1, 0x1BB0,\n    0x1B5C, 0x1AE8, 0x1A59, 0x19B2, 0x18F6, 0x1829, 0x1750, 0x166C,\n    0x1583, 0x1497, 0x13AD, 0x12C8, 0x11EB, 0x111B, 0x105B, 0x0FAE,\n    0x0F19, 0x0E9E, 0x0E42, 0x0E08, 0x0DF4, 0x8889, 0x888A, 0x888C,\n    0x8890, 0x8895, 0x889B, 0x88A1, 0x88A6, 0x88AB, 0x88AE, 0x88B1,\n    0x88B1, 0x88AF, 0x88AA, 0x88A3, 0x8897, 0x8888, 0x8875, 0x885D,\n    0x8840, 0x881E, 0x87F5, 0x87C7, 0x8791, 0x86C3, 0x8539, 0x839A,\n    0x828C, 0x823C, 0x8243, 0x8276, 0x82A4, 0x82A1, 0x825D, 0x81F5,\n    0x817C, 0x8106, 0x8092, 0x8016, 0x7F92, 0x7F12, 0x7E97, 0x7E25,\n    0x7DC2, 0x7D72, 0x7D2C, 0x7D04, 0x7D28, 0x7DC8, 0x7F29, 0x8125,\n    0x833A, 0x84F0, 0x85CD, 0x85FB, 0x85FD, 0x85D9, 0x8598, 0x853F,\n    0x84D8, 0x8469, 0x83FA, 0x8392, 0x8339, 0x82F5, 0x82CF, 0x82CD,\n    0x82E7, 0x830D, 0x833E, 0x8378, 0x83BB, 0x8405, 0x8454, 0x84A9,\n    0x8500, 0x855A, 0x85B5, 0x8610, 0x866A, 0x86C0, 0x8713, 0x8760,\n    0x87A8, 0x87E7, 0x881E, 0x884B, 0x886C, 0x8881, 0x8889, 0x0000,\n    0x0000, 0xFFFE, 0xFFFB, 0xFFF7, 0xFFF2, 0xFFEC, 0xFFE5, 0xFFDE,\n    0xFFD6, 0xFFCD, 0xFFC4, 0xFFBA, 0xFFB1, 0xFFA7, 0xFF9C, 0xFF92,\n    0xFF88, 0xFF7E, 0xFF74, 0xFF6A, 0xFF61, 0xFF58, 0xFF50, 0xFF49,\n    0xFF41, 0xFF38, 0xFF2F, 0xFF25, 0xFF1C, 0xFF12, 0xFF08, 0xFEFE,\n    0xFEF4, 0xFEEC, 0xFEE3, 0xFEDC, 0xFED6, 0xFED1, 0xFECE, 0xFECC,\n    0xFECC, 0xFECE, 0xFED1, 0xFED5, 0xFED9, 0xFEDE, 0xFEE3, 0xFEE8,\n    0xFEEF, 0xFEF5, 0xFEFC, 0xFF03, 0xFF0B, 0xFF12, 0xFF1A, 0xFF23,\n    0xFF2B, 0xFF34, 0xFF3D, 0xFF46, 0xFF4F, 0xFF58, 0xFF61, 0xFF6A,\n    0xFF73, 0xFF7C, 0xFF85, 0xFF8E, 0xFF97, 0xFFA0, 0xFFA8, 0xFFB0,\n    0xFFB8, 0xFFC0, 0xFFC7, 0xFFCE, 0xFFD5, 0xFFDC, 0xFFE1, 0xFFE7,\n    0xFFEC, 0xFFF1, 0xFFF5, 0xFFF8, 0xFFFB, 0xFFFD, 0xFFFF, 0x0000,\n    0x0000, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF2F, 0xFF2F, 0xFF2F, 0xFF2F, 0xFF2F, 0xFF2F, 0xFF2F,\n    0xFF2F, 0xFF2F, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E,\n    0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2F,\n    0xFF2F, 0xFF2F, 0xFF2F, 0xFF2F, 0xFF2F, 0xFF2F, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xC9D8, 0xC9D7, 0xC9D3, 0xC9CC, 0xC9C3,\n    0xC9B8, 0xC9AB, 0xC99D, 0xC98D, 0xC97C, 0xC96A, 0xC957, 0xC943,\n    0xC92F, 0xC91B, 0xC907, 0xC8F3, 0xC8DF, 0xC8CC, 0xC8BA, 0xC8A9,\n    0xC899, 0xC88A, 0xC87E, 0xC873, 0xC869, 0xC860, 0xC857, 0xC84F,\n    0xC848, 0xC841, 0xC83B, 0xC836, 0xC832, 0xC82F, 0xC82C, 0xC82A,\n    0xC82A, 0xC82A, 0xC82C, 0xC82E, 0xC832, 0xC837, 0xC83D, 0xC843,\n    0xC84A, 0xC852, 0xC85A, 0xC863, 0xC86C, 0xC875, 0xC87F, 0xC88A,\n    0xC894, 0xC89F, 0xC8AA, 0xC8B6, 0xC8C1, 0xC8CD, 0xC8D9, 0xC8E5,\n    0xC8F1, 0xC8FD, 0xC90A, 0xC916, 0xC922, 0xC92E, 0xC93A, 0xC945,\n    0xC951, 0xC95C, 0xC967, 0xC971, 0xC97C, 0xC986, 0xC98F, 0xC998,\n    0xC9A1, 0xC9A9, 0xC9B1, 0xC9B8, 0xC9BE, 0xC9C4, 0xC9C9, 0xC9CE,\n    0xC9D1, 0xC9D4, 0xC9D6, 0xC9D8, 0xC9D8, 0x1E4A, 0x1E4A, 0x1E4B,\n    0x1E4C, 0x1E4E, 0x1E51, 0x1E54, 0x1E58, 0x1E5D, 0x1E62, 0x1E69,\n    0x1E70, 0x1E78, 0x1E81, 0x1E8A, 0x1E95, 0x1EA1, 0x1EAE, 0x1EBC,\n    0x1ECA, 0x1EDB, 0x1EEC, 0x1EFE, 0x1F12, 0x1F26, 0x1F4D, 0x1F8E,\n    0x1FDF, 0x2034, 0x2083, 0x20C1, 0x20E1, 0x209A, 0x2007, 0x1FB9,\n    0x1FCB, 0x1FF5, 0x202E, 0x206E, 0x20AC, 0x20E1, 0x2104, 0x210D,\n    0x2106, 0x20FD, 0x20F3, 0x20E8, 0x20DC, 0x20CF, 0x20C1, 0x20B2,\n    0x20A2, 0x2091, 0x2080, 0x206E, 0x205B, 0x2048, 0x2035, 0x2021,\n    0x200C, 0x1FF8, 0x1FE3, 0x1FCE, 0x1FB9, 0x1FA4, 0x1F8F, 0x1F7A,\n    0x1F65, 0x1F50, 0x1F3C, 0x1F28, 0x1F15, 0x1F02, 0x1EF0, 0x1EDE,\n    0x1ECD, 0x1EBD, 0x1EAD, 0x1E9F, 0x1E91, 0x1E84, 0x1E79, 0x1E6E,\n    0x1E65, 0x1E5D, 0x1E56, 0x1E51, 0x1E4D, 0x1E4A, 0x1E4A, 0x1B09,\n    0x1144, 0xAC44, 0xAC45, 0xAC4A, 0xAC51, 0xAC59, 0xAC64, 0xAC6F,\n    0xAC7B, 0xAC88, 0xAC94, 0xAC9F, 0xACAA, 0xACB3, 0xACBB, 0xACC0,\n    0xACC3, 0xACC2, 0xACBE, 0xACB6, 0xACAA, 0xAC98, 0xAC82, 0xAC66,\n    0xAC44, 0xABC1, 0xAABE, 0xA994, 0xA89D, 0xA831, 0xA88A, 0xA96D,\n    0xAA83, 0xAB76, 0xABEF, 0xAB9F, 0xAAC0, 0xA9D2, 0xA952, 0xA959,\n    0xA99E, 0xAA05, 0xAA75, 0xAAD2, 0xAB29, 0xAB8B, 0xABE6, 0xAC2A,\n    0xAC44, 0xAC44, 0xAC44, 0xAC44, 0xAC44, 0xAC44, 0xAC44, 0xAC44,\n    0xAC44, 0xAC44, 0xAC44, 0xAC44, 0xAC44, 0xAC44, 0xAC44, 0xAC44,\n    0xAC44, 0xAC44, 0xAC44, 0xAC44, 0xAC44, 0xAC44, 0xAC44, 0xAC44,\n    0xAC44, 0xAC44, 0xAC44, 0xAC44, 0xAC44, 0xAC44, 0xAC44, 0xAC44,\n    0xAC44, 0xAC44, 0xAC44, 0xAC44, 0xAC44, 0xAC44, 0xAC44, 0xAC44,\n    0xAC44, 0xAC44, 0xAC44, 0xBF40, 0xBF3E, 0xBF39, 0xBF30, 0xBF25,\n    0xBF16, 0xBF05, 0xBEF2, 0xBEDD, 0xBEC7, 0xBEAF, 0xBE95, 0xBE7B,\n    0xBE60, 0xBE45, 0xBE2A, 0xBE0F, 0xBDF4, 0xBDDA, 0xBDC1, 0xBDAA,\n    0xBD94, 0xBD7F, 0xBD6D, 0xBD5D, 0xBD4E, 0xBD3F, 0xBD30, 0xBD21,\n    0xBD13, 0xBD06, 0xBCF9, 0xBCEE, 0xBCE3, 0xBCDA, 0xBCD2, 0xBCCC,\n    0xBCC7, 0xBCC4, 0xBCC3, 0xBCC5, 0xBCC8, 0xBCCE, 0xBCD6, 0xBCDF,\n    0xBCE9, 0xBCF4, 0xBD00, 0xBD0C, 0xBD1A, 0xBD28, 0xBD36, 0xBD46,\n    0xBD55, 0xBD66, 0xBD76, 0xBD87, 0xBD99, 0xBDAA, 0xBDBC, 0xBDCF,\n    0xBDE1, 0xBDF3, 0xBE05, 0xBE18, 0xBE2A, 0xBE3C, 0xBE4E, 0xBE60,\n    0xBE71, 0xBE82, 0xBE93, 0xBEA3, 0xBEB3, 0xBEC2, 0xBED1, 0xBEDF,\n    0xBEEC, 0xBEF8, 0xBF04, 0xBF0F, 0xBF18, 0xBF21, 0xBF29, 0xBF30,\n    0xBF36, 0xBF3A, 0xBF3E, 0xBF40, 0xBF40, 0x2537, 0x2538, 0x253D,\n    0x2545, 0x2550, 0x255D, 0x256D, 0x257E, 0x2592, 0x25A7, 0x25BD,\n    0x25D5, 0x25ED, 0x2606, 0x261F, 0x2639, 0x2653, 0x266C, 0x2684,\n    0x269C, 0x26B3, 0x26C9, 0x26DD, 0x26EF, 0x26FF, 0x270C, 0x2715,\n    0x271A, 0x271C, 0x271A, 0x2717, 0x2711, 0x26F0, 0x26C0, 0x26BA,\n    0x26E7, 0x2727, 0x2773, 0x27C1, 0x280B, 0x2847, 0x286F, 0x2879,\n    0x2871, 0x2868, 0x285D, 0x2850, 0x2843, 0x2834, 0x2823, 0x2812,\n    0x2800, 0x27EC, 0x27D8, 0x27C3, 0x27AD, 0x2796, 0x277F, 0x2768,\n    0x2750, 0x2737, 0x271F, 0x2706, 0x26ED, 0x26D4, 0x26BB, 0x26A2,\n    0x2689, 0x2671, 0x2659, 0x2641, 0x262A, 0x2614, 0x25FE, 0x25E8,\n    0x25D4, 0x25C1, 0x25AE, 0x259D, 0x258C, 0x257D, 0x256F, 0x2562,\n    0x2557, 0x254E, 0x2546, 0x253F, 0x253A, 0x2538, 0x2537, 0xD64A,\n    0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A,\n    0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A,\n    0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A,\n    0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A,\n    0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A,\n    0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A,\n    0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A,\n    0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A,\n    0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A,\n    0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A,\n    0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xD64A,\n    0xD64A, 0xEC41, 0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E,\n    0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E,\n    0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E,\n    0xB59E, 0xB558, 0xB4AA, 0xB3C7, 0xB2E5, 0xB238, 0xB1F4, 0xB254,\n    0xB338, 0xB44C, 0xB53D, 0xB5B6, 0xB562, 0xB47E, 0xB391, 0xB322,\n    0xB333, 0xB362, 0xB3A9, 0xB400, 0xB45E, 0xB4BD, 0xB514, 0xB55C,\n    0xB58C, 0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E,\n    0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E,\n    0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E,\n    0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E,\n    0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E,\n    0xB59E, 0xB59E, 0xB59E, 0xB59E, 0x8001, 0x8001, 0x4171, 0xBF5F,\n    0x8001, 0x8001, 0x4171, 0xBF5F, 0x0000, 0x002E, 0x00B2, 0x0182,\n    0x0293, 0x03DB, 0x054F, 0x06E4, 0x0891, 0x0A4B, 0x0C08, 0x0DBC,\n    0x0F5E, 0x10E4, 0x1242, 0x136E, 0x145F, 0x14E1, 0x14E4, 0x148C,\n    0x1400, 0x1364, 0x12DE, 0x1293, 0x1297, 0x12C5, 0x12F4, 0x12F5,\n    0x1297, 0x1203, 0x119F, 0x11DB, 0x1225, 0x120F, 0x11E6, 0x11A8,\n    0x1157, 0x10AC, 0x1003, 0x0FFE, 0x101E, 0x0FAC, 0x0E9D, 0x0D65,\n    0x0C10, 0x0AAB, 0x0942, 0x07E1, 0x0694, 0x0568, 0x0485, 0x03E6,\n    0x0352, 0x0290, 0x017F, 0x003D, 0xFEF5, 0xFDB4, 0xFC6F, 0xFB25,\n    0xF9D9, 0xF86C, 0xF6F8, 0xF5D6, 0xF4E8, 0xF3EE, 0xF308, 0xF256,\n    0xF1FA, 0xF212, 0xF289, 0xF32E, 0xF3F8, 0xF4E1, 0xF5E1, 0xF6EF,\n    0xF805, 0xF91B, 0xFA28, 0xFB26, 0xFC0D, 0xFCCA, 0xFD5F, 0xFDE7,\n    0xFE6B, 0xFEE2, 0xFF46, 0xFF9E, 0xFFE4, 0x0000, 0x0000, 0xFFFB,\n    0xFFED, 0xFFD8, 0xFFBE, 0xFFA2, 0xFF85, 0xFF69, 0xFF50, 0xFF3D,\n    0xFF32, 0xFF30, 0xFF3A, 0xFF52, 0xFF7A, 0xFFB3, 0x0000, 0x00A8,\n    0x01CE, 0x033F, 0x04C7, 0x0633, 0x074F, 0x07E9, 0x07A9, 0x0692,\n    0x04ED, 0x0309, 0xFFFE, 0xFC54, 0xFA7C, 0xFE2C, 0x026D, 0x02F8,\n    0x02B3, 0x01D6, 0x0099, 0xFD38, 0xFA4D, 0xFB1A, 0xFD1D, 0xFE85,\n    0xFEF2, 0xFF42, 0xFF78, 0xFF99, 0xFFAC, 0xFFB4, 0xFFB8, 0xFFBB,\n    0xFF97, 0xFF43, 0xFEEB, 0xFEBE, 0xFED2, 0xFF17, 0xFF7B, 0x0015,\n    0x00DA, 0x0182, 0x01C5, 0x012B, 0x0008, 0xFF52, 0xFF3D, 0xFF54,\n    0xFF86, 0xFFC2, 0xFFF7, 0x0013, 0x001C, 0x0021, 0x0023, 0x0022,\n    0x001F, 0x001B, 0x0017, 0x0013, 0x0011, 0x0011, 0x0013, 0x0024,\n    0x0040, 0x004E, 0x0042, 0x0029, 0x0014, 0x0009, 0x0002, 0x0000,\n    0xFC62, 0xFC6C, 0xFC87, 0xFCAF, 0xFCE1, 0xFD18, 0xFD51, 0xFD87,\n    0xFDB6, 0xFDDA, 0xFDF0, 0xFDF3, 0xFDE0, 0xFDB2, 0xFD66, 0xFCF7,\n    0xFC62, 0xFB1D, 0xF8E4, 0xF61B, 0xF325, 0xF066, 0xEE42, 0xED1C,\n    0xED9A, 0xEFBB, 0xF2EF, 0xF6A5, 0xFCAE, 0x03F2, 0x0783, 0x03C2,\n    0xFC4F, 0xF715, 0xF5AA, 0xF61F, 0xF96F, 0x016A, 0x0826, 0x0609,\n    0x0133, 0xFDA8, 0xFC42, 0xFB33, 0xFA76, 0xFA07, 0xF9E2, 0xFA05,\n    0xFA6A, 0xFB0F, 0xFDC3, 0x025C, 0x05E3, 0x05B0, 0x0266, 0xFE83,\n    0xFC80, 0xFE76, 0x0267, 0x04B7, 0x0340, 0xFFD5, 0xFC32, 0xFA16,\n    0xF984, 0xF94F, 0xF965, 0xF9B8, 0xFA38, 0xFAD5, 0xFB7F, 0xFC53,\n    0xFE56, 0x006E, 0x010D, 0xFFA6, 0xFD93, 0xFC55, 0xFBD0, 0xFBBC,\n    0xFC2F, 0xFDDA, 0x0020, 0x012D, 0xFFB7, 0xFD04, 0xFB22, 0xFB1A,\n    0xFBE1, 0xFC62, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x000A, 0x001C, 0x0020, 0x0000, 0xFFC0, 0xFF73, 0xFF1E, 0xFEC2,\n    0xFE63, 0xFE03, 0xFDA5, 0xFD4C, 0xFCF8, 0xFCA7, 0xFC56, 0xFC06,\n    0xFBB6, 0xFB66, 0xFB17, 0xFAC9, 0xFA7A, 0xFA2E, 0xF9E8, 0xF9A5,\n    0xF969, 0xF93B, 0xF913, 0xF8FB, 0xF917, 0xF95D, 0xF9AB, 0xFA00,\n    0xFA5A, 0xFAB9, 0xFB1C, 0xFB80, 0xFBE7, 0xFC4E, 0xFCB4, 0xFD19,\n    0xFD7C, 0xFDDC, 0xFE36, 0xFE8C, 0xFEDB, 0xFF23, 0xFF63, 0xFF99,\n    0xFFC5, 0xFFE5, 0xFFFA, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001,\n    0x0002, 0x0003, 0x0004, 0x0006, 0x0007, 0x000A, 0x0013, 0x001F,\n    0x001C, 0x0002, 0xFFDE, 0xFFB7, 0xFF98, 0xFF8B, 0xFFB2, 0xFFF9,\n    0x0019, 0xFFE6, 0xFF8C, 0xFF50, 0xFF57, 0xFF7C, 0xFF97, 0xFF9D,\n    0xFFA4, 0xFFAB, 0xFFB2, 0xFFB8, 0xFFBF, 0xFFC5, 0xFFCB, 0xFFD1,\n    0xFFD7, 0xFFDD, 0xFFE2, 0xFFE7, 0xFFEB, 0xFFEF, 0xFFF3, 0xFFF7,\n    0xFFF9, 0xFFFC, 0xFFFE, 0xFFFF, 0x0000, 0x0000, 0x0884, 0x0878,\n    0x0856, 0x0821, 0x07DD, 0x078A, 0x072D, 0x06C8, 0x065D, 0x05F0,\n    0x0583, 0x051A, 0x04B6, 0x045B, 0x040B, 0x03C9, 0x0399, 0x037B,\n    0x0375, 0x0387, 0x03B5, 0x0402, 0x0471, 0x068E, 0x0AE2, 0x0FEB,\n    0x1422, 0x1606, 0x14A8, 0x110C, 0x0C95, 0x08A6, 0x06A4, 0x0741,\n    0x0992, 0x0C88, 0x0F17, 0x1030, 0x0EE9, 0x0BFA, 0x08CE, 0x06CE,\n    0x0601, 0x0575, 0x0521, 0x04FA, 0x04F6, 0x050B, 0x052E, 0x0588,\n    0x0703, 0x084C, 0x0822, 0x0758, 0x0646, 0x052C, 0x044C, 0x03E4,\n    0x04DA, 0x06B3, 0x07A2, 0x06A9, 0x04CC, 0x033A, 0x02B9, 0x02D6,\n    0x032C, 0x03A8, 0x0451, 0x04FD, 0x05BD, 0x0697, 0x076D, 0x081F,\n    0x088F, 0x0863, 0x05FD, 0x04F0, 0x058E, 0x06A0, 0x07CD, 0x08B7,\n    0x08D5, 0x063C, 0x062D, 0x075A, 0x0809, 0x085C, 0x0879, 0x0884,\n    0x40A1, 0x409F, 0x409B, 0x4094, 0x408B, 0x4080, 0x4075, 0x4068,\n    0x405C, 0x4050, 0x4045, 0x403B, 0x4032, 0x402C, 0x4028, 0x4028,\n    0x402B, 0x4032, 0x403D, 0x404E, 0x4063, 0x407F, 0x40A1, 0x4108,\n    0x41D1, 0x42C7, 0x43B7, 0x446D, 0x44B4, 0x4414, 0x42B4, 0x414B,\n    0x4094, 0x40CD, 0x4185, 0x426C, 0x4335, 0x4390, 0x4368, 0x42F6,\n    0x425C, 0x41BE, 0x413F, 0x4103, 0x40F5, 0x40E8, 0x40DC, 0x40D1,\n    0x40C7, 0x40BD, 0x40B5, 0x40AD, 0x40A5, 0x409F, 0x4099, 0x4094,\n    0x4090, 0x408C, 0x4088, 0x4086, 0x4083, 0x4082, 0x4080, 0x407F,\n    0x407F, 0x407F, 0x407F, 0x4080, 0x4081, 0x4082, 0x4083, 0x4084,\n    0x4086, 0x4088, 0x408A, 0x408C, 0x408E, 0x4090, 0x4092, 0x4094,\n    0x4096, 0x4098, 0x409A, 0x409C, 0x409D, 0x409F, 0x40A0, 0x40A0,\n    0x40A1, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_31.inc.c",
    "content": "static const struct Animation anim_31[] = {\n    1,\n    189,\n    0,\n    0,\n    0x8C,\n    ANIMINDEX_NUMPARTS(anim_31_indices),\n    anim_31_values,\n    anim_31_indices,\n    0,\n};\n\n\nstatic const u16 anim_31_indices[] = {\n    0x0001, 0x0000, 0x008C, 0x0001, 0x008C, 0x008D, 0x0001, 0x0000, 0x0001, 0x0119, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x008C, 0x13BA, 0x008C, 0x1446,\n    0x008C, 0x1216, 0x008C, 0x12A2, 0x008C, 0x132E,\n    0x008C, 0x1072, 0x008C, 0x10FE, 0x008C, 0x118A,\n    0x0001, 0x106E, 0x0001, 0x106F, 0x0001, 0x1070,\n    0x008C, 0x034A, 0x008C, 0x03D6, 0x008C, 0x0462,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x008C, 0x02BE,\n    0x008C, 0x011A, 0x008C, 0x01A6, 0x008C, 0x0232,\n    0x0001, 0x106A, 0x0001, 0x106B, 0x0001, 0x106C,\n    0x008C, 0x071E, 0x008C, 0x07AA, 0x008C, 0x0836,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x008C, 0x0692,\n    0x008C, 0x04EE, 0x008C, 0x057A, 0x008C, 0x0606,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x106D,\n    0x008C, 0x0EC6, 0x008C, 0x0F52, 0x008C, 0x0FDE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x008C, 0x0E3A,\n    0x008C, 0x0C96, 0x008C, 0x0D22, 0x008C, 0x0DAE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x1071,\n    0x008C, 0x0AF2, 0x008C, 0x0B7E, 0x008C, 0x0C0A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x008C, 0x0A66,\n    0x008C, 0x08C2, 0x008C, 0x094E, 0x008C, 0x09DA,\n};\n\nstatic const s16 anim_31_values[] = {\n    0x0000, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA,\n    0x00AA, 0x00AA, 0x00AB, 0x00AB, 0x00AB, 0x00AB, 0x00AB, 0x00AC,\n    0x00AC, 0x00AC, 0x00AC, 0x00AC, 0x00AD, 0x00AD, 0x00AD, 0x00AD,\n    0x00AE, 0x00AE, 0x00AE, 0x00AE, 0x00AF, 0x00AF, 0x00AF, 0x00AF,\n    0x00AF, 0x00B0, 0x00B0, 0x00B0, 0x00B0, 0x00B0, 0x00B1, 0x00B1,\n    0x00B1, 0x00B1, 0x00B1, 0x00B1, 0x00B1, 0x00B1, 0x00B0, 0x00AF,\n    0x00AE, 0x00AD, 0x00AC, 0x00AB, 0x00AA, 0x00AA, 0x00AA, 0x00AB,\n    0x00AC, 0x00AD, 0x00AD, 0x00AD, 0x00AC, 0x00A9, 0x00A2, 0x009C,\n    0x0099, 0x009A, 0x009D, 0x00A0, 0x00A4, 0x00A6, 0x00A7, 0x00A7,\n    0x00A8, 0x00A9, 0x00A9, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA,\n    0x00AA, 0x00AA, 0x00A9, 0x00A8, 0x00A7, 0x00A3, 0x009F, 0x009B,\n    0x0098, 0x0097, 0x0098, 0x009A, 0x009E, 0x00A2, 0x00A5, 0x00A8,\n    0x00A9, 0x00AA, 0x00AA, 0x00AA, 0x00AB, 0x00AB, 0x00AB, 0x00AB,\n    0x00AB, 0x00AC, 0x00AC, 0x00AC, 0x00AC, 0x00AC, 0x00AC, 0x00AC,\n    0x00AC, 0x00AC, 0x00AC, 0x00AC, 0x00AC, 0x00AC, 0x00AC, 0x00AC,\n    0x00AC, 0x00AB, 0x00AB, 0x00AB, 0x00AB, 0x00AB, 0x00AB, 0x00AB,\n    0x00AB, 0x00AB, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA,\n    0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x0000, 0x0000, 0x0000,\n    0x0001, 0x0001, 0x0002, 0x0003, 0x0003, 0x0004, 0x0005, 0x0005,\n    0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,\n    0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0004, 0x0004,\n    0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0002, 0x0002, 0x0002, 0x0001, 0x0001, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x3FFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0044, 0x00CD, 0x0134,\n    0x0112, 0x0000, 0xFDF6, 0xFB50, 0xF844, 0xF502, 0xF1BE, 0xEEAA,\n    0xEBF9, 0xE9DE, 0xE88B, 0xE7CA, 0xE743, 0xE6EE, 0xE6C4, 0xE6C0,\n    0xE6DB, 0xE70F, 0xE755, 0xE7A7, 0xE7FF, 0xE856, 0xE8A5, 0xE8E8,\n    0xE916, 0xE92B, 0xE91E, 0xE8EB, 0xE88B, 0xE7A6, 0xE615, 0xE414,\n    0xE1DF, 0xDFB5, 0xDDD1, 0xDC87, 0xDC8C, 0xDCDD, 0xDD05, 0xDD64,\n    0xDDDB, 0xDE45, 0xDE83, 0xDE73, 0xDDF1, 0xDCDD, 0xDB6D, 0xD9EB,\n    0xD85B, 0xD6BB, 0xD50E, 0xD355, 0xD191, 0xCFC2, 0xCDEA, 0xCC0A,\n    0xCA23, 0xC836, 0xC643, 0xC44D, 0xC254, 0xC059, 0xBE5D, 0xBC61,\n    0xBA67, 0xB86F, 0xB67A, 0xB48A, 0xB29F, 0xB0BB, 0xAEDE, 0xAD0A,\n    0xAAAB, 0xA877, 0xA861, 0xAE9A, 0xB522, 0xB407, 0xB15A, 0xB128,\n    0xB187, 0xB1D4, 0xB231, 0xB280, 0xB2CF, 0xB323, 0xB357, 0xB344,\n    0xB229, 0xB000, 0xADBE, 0xAC56, 0xACBB, 0xAFE1, 0xB84E, 0xC59A,\n    0xD45C, 0xE127, 0xE88F, 0xEBE6, 0xEECB, 0xF146, 0xF363, 0xF52A,\n    0xF6A6, 0xF7E0, 0xF8E3, 0xF9B8, 0xFA6A, 0xFB01, 0xFB88, 0xFC09,\n    0xFC8E, 0xFD20, 0xFDC9, 0xFE93, 0xFF52, 0xFFD6, 0x0028, 0x0053,\n    0x005F, 0x0054, 0x003D, 0x0021, 0x0009, 0x0000, 0xF97C, 0xF97C,\n    0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C,\n    0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97B,\n    0xF97B, 0xF97B, 0xF97B, 0xF97B, 0xF97B, 0xF97A, 0xF97A, 0xF97E,\n    0xF989, 0xF99A, 0xF9AF, 0xF9C6, 0xF9DF, 0xF9F8, 0xFA10, 0xFA25,\n    0xFA36, 0xFA41, 0xFA45, 0xFA40, 0xFA32, 0xFA18, 0xF9F2, 0xF9BE,\n    0xF97A, 0xF8EC, 0xF7F1, 0xF6AF, 0xF54E, 0xF3F3, 0xF2C4, 0xF1F6,\n    0xF1F9, 0xF22C, 0xF23A, 0xF25C, 0xF285, 0xF2AB, 0xF2C1, 0xF2BB,\n    0xF28D, 0xF22C, 0xF1A7, 0xF117, 0xF07D, 0xEFDA, 0xEF2F, 0xEE7D,\n    0xEDC6, 0xED09, 0xEC49, 0xEB86, 0xEAC1, 0xE9FC, 0xE938, 0xE875,\n    0xE7B5, 0xE6F8, 0xE641, 0xE58F, 0xE4E4, 0xE441, 0xE3A8, 0xE319,\n    0xE294, 0xE21C, 0xE1B2, 0xE156, 0xE31B, 0xE6B7, 0xE89B, 0xE4BF,\n    0xE094, 0xE27D, 0xE582, 0xE5ED, 0xE658, 0xE8C6, 0xEBA8, 0xECBF,\n    0xEAF2, 0xE7A4, 0xE44F, 0xE268, 0xE1CF, 0xE17E, 0xE198, 0xE241,\n    0xE39D, 0xE5CF, 0xEA09, 0xF054, 0xF719, 0xFCBF, 0xFFAE, 0x0096,\n    0x013F, 0x01AC, 0x01E4, 0x01EE, 0x01CF, 0x018D, 0x012F, 0x00BB,\n    0x0036, 0xFFA9, 0xFF17, 0xFE86, 0xFDFF, 0xFD85, 0xFD20, 0xFCD6,\n    0xFC8F, 0xFC32, 0xFBC6, 0xFB53, 0xFAE0, 0xFA72, 0xFA10, 0xF9C2,\n    0xF98E, 0xF97C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xEDA6, 0xEDDA, 0xEE01,\n    0xEDF4, 0xED8C, 0xECC5, 0xEBC4, 0xEA9B, 0xE95E, 0xE821, 0xE6F5,\n    0xE5F0, 0xE523, 0xE4A2, 0xE454, 0xE415, 0xE3E2, 0xE3BB, 0xE39F,\n    0xE38E, 0xE386, 0xE386, 0xE38F, 0xE39E, 0xE3B2, 0xE3CC, 0xE3EB,\n    0xE40C, 0xE430, 0xE455, 0xE47C, 0xE4A2, 0xE4E9, 0xE565, 0xE605,\n    0xE6B4, 0xE761, 0xE7F7, 0xE85E, 0xE85C, 0xE843, 0xE824, 0xE7D9,\n    0xE77D, 0xE729, 0xE6F8, 0xE706, 0xE76B, 0xE843, 0xE95E, 0xEA7D,\n    0xEBA0, 0xECC7, 0xEDF2, 0xEF22, 0xF058, 0xF194, 0xF2D6, 0xF41F,\n    0xF56F, 0xF6C7, 0xF827, 0xF990, 0xFB02, 0xFC7D, 0xFE02, 0xFF92,\n    0x012B, 0x02D1, 0x0482, 0x0640, 0x080A, 0x09E1, 0x0BC6, 0x0DB8,\n    0x13BA, 0x1CD2, 0x2188, 0x1895, 0x0DDF, 0x1022, 0x138C, 0x0E24,\n    0x091B, 0x0B2D, 0x0F60, 0x1159, 0x0F56, 0x0B89, 0x078F, 0x0505,\n    0x04A3, 0x0582, 0x06C6, 0x0797, 0x071C, 0x0479, 0xFDA3, 0xF303,\n    0xE778, 0xDDE1, 0xD91B, 0xD7F1, 0xD73C, 0xD6F1, 0xD703, 0xD769,\n    0xD817, 0xD901, 0xDA1D, 0xDB5F, 0xDCBC, 0xDE28, 0xDF9A, 0xE104,\n    0xE25D, 0xE398, 0xE4AB, 0xE58A, 0xE661, 0xE757, 0xE862, 0xE973,\n    0xEA7D, 0xEB74, 0xEC4B, 0xECF4, 0xED64, 0xED8C, 0xCA4F, 0xCA84,\n    0xCB16, 0xCBF3, 0xCD07, 0xCE3F, 0xCF8A, 0xD0D4, 0xD38A, 0xD6C5,\n    0xD6F1, 0xD2DF, 0xCCBC, 0xC5FB, 0xC012, 0xBC75, 0xBAD2, 0xB9CB,\n    0xB948, 0xB92D, 0xB961, 0xB9CA, 0xBA4E, 0xBAD2, 0xBB3C, 0xBB93,\n    0xBBEE, 0xBC4D, 0xBCB2, 0xBD1C, 0xBD8C, 0xBE03, 0xBE81, 0xBF07,\n    0xBF95, 0xC02C, 0xC0CC, 0xC176, 0xC22A, 0xC2E9, 0xC3B3, 0xC489,\n    0xC56C, 0xC6A7, 0xC866, 0xCA77, 0xCCAA, 0xCECC, 0xD0AC, 0xD1FF,\n    0xD1FA, 0xD1A5, 0xD197, 0xD175, 0xD14B, 0xD125, 0xD10F, 0xD115,\n    0xD143, 0xD1A5, 0xD22E, 0xD2CB, 0xD378, 0xD433, 0xD4FB, 0xD5CD,\n    0xD6A8, 0xD78A, 0xD870, 0xD958, 0xDA41, 0xDB28, 0xDC0C, 0xDCEA,\n    0xDDC1, 0xDE8E, 0xDF4F, 0xE002, 0xE0A6, 0xE139, 0xE1B7, 0xE220,\n    0xE271, 0xE2A8, 0xE2C4, 0xE2C1, 0xDDAA, 0xD45E, 0xCF9B, 0xD190,\n    0xD5CF, 0xDB2F, 0xE086, 0xE4A8, 0xE66C, 0xE66B, 0xE60D, 0xE558,\n    0xE457, 0xE311, 0xE18F, 0xDFDA, 0xDDFA, 0xDBF8, 0xD9DD, 0xD7B0,\n    0xD57B, 0xD346, 0xD052, 0xCC3D, 0xC797, 0xC2F5, 0xBEE7, 0xBB2C,\n    0xB762, 0xB3ED, 0xB12E, 0xAF89, 0xB0DF, 0xB48C, 0xB729, 0xB7EF,\n    0xB86C, 0xB8B5, 0xB8E0, 0xB902, 0xB931, 0xB981, 0xBA09, 0xBADE,\n    0xBC1D, 0xBDC3, 0xBFAF, 0xC1C1, 0xC3D9, 0xC5D7, 0xC79C, 0xC907,\n    0xC9F8, 0xCA4F, 0xFB1D, 0xFAB7, 0xF9A2, 0xF80B, 0xF61F, 0xF409,\n    0xF1F7, 0xF016, 0xECB4, 0xE915, 0xE9D1, 0xF06D, 0xF9FC, 0x046B,\n    0x0DA9, 0x13A4, 0x16C7, 0x18FE, 0x1A74, 0x1B56, 0x1BCE, 0x1C09,\n    0x1C32, 0x1C75, 0x1CFE, 0x1DB9, 0x1E76, 0x1F33, 0x1FEE, 0x20A8,\n    0x215E, 0x2210, 0x22BC, 0x2362, 0x23FF, 0x2494, 0x251F, 0x259E,\n    0x2611, 0x2676, 0x26CD, 0x2714, 0x274A, 0x2722, 0x2670, 0x2562,\n    0x2424, 0x22E6, 0x21D4, 0x2125, 0x2128, 0x2151, 0x218C, 0x2219,\n    0x22C8, 0x2366, 0x23C1, 0x23A8, 0x22E9, 0x2151, 0x1F29, 0x1CDA,\n    0x1A68, 0x17D6, 0x1527, 0x1260, 0x0F82, 0x0C93, 0x0994, 0x068A,\n    0x0377, 0x0060, 0xFD48, 0xFA31, 0xF720, 0xF417, 0xF11A, 0xEE2C,\n    0xEB51, 0xE88C, 0xE5E0, 0xE352, 0xE0E3, 0xE0A9, 0xE2AA, 0xE3DB,\n    0xE2C1, 0xE0D5, 0xDF7B, 0xDE1F, 0xDBED, 0xD9DF, 0xD8F0, 0xDA1B,\n    0xDE5A, 0xE53C, 0xED7B, 0xF6D0, 0x00F4, 0x0BA3, 0x1696, 0x2186,\n    0x2C2E, 0x3647, 0x3F8A, 0x47B3, 0x4E7A, 0x539A, 0x52E9, 0x4AD0,\n    0x3EE9, 0x32CB, 0x2A0D, 0x2477, 0x1FA5, 0x1BEA, 0x199B, 0x190C,\n    0x1B67, 0x2074, 0x2674, 0x2BA8, 0x2E52, 0x2EA5, 0x2E17, 0x2CC9,\n    0x2ADE, 0x2879, 0x25BB, 0x22C7, 0x1F3A, 0x1ACC, 0x15C8, 0x107A,\n    0x0B2E, 0x062E, 0x01C8, 0xFE46, 0xFBF4, 0xFB1D, 0xD2DC, 0xD3C6,\n    0xD626, 0xD970, 0xDD17, 0xE08F, 0xE349, 0xE4BB, 0xE244, 0xDCCB,\n    0xD90A, 0xD847, 0xD862, 0xD8FB, 0xD9B4, 0xDA2E, 0xDA70, 0xDAC1,\n    0xDB18, 0xDB6E, 0xDBBF, 0xDC01, 0xDC30, 0xDC43, 0xDC36, 0xDC17,\n    0xDBFB, 0xDBE0, 0xDBC5, 0xDBA8, 0xDB88, 0xDB63, 0xDB37, 0xDB03,\n    0xDAC5, 0xDA7C, 0xDA25, 0xD9C0, 0xD94C, 0xD8C5, 0xD82B, 0xD77C,\n    0xD6B7, 0xD570, 0xD36A, 0xD0EC, 0xCE38, 0xCB94, 0xC944, 0xC7AA,\n    0xC7B0, 0xC816, 0xC80E, 0xC7FA, 0xC7E2, 0xC7CC, 0xC7BF, 0xC7C2,\n    0xC7DD, 0xC816, 0xC85D, 0xC89F, 0xC8DD, 0xC918, 0xC952, 0xC98A,\n    0xC9C3, 0xC9FD, 0xCA3A, 0xCA7B, 0xCAC0, 0xCB0C, 0xCB5E, 0xCBB9,\n    0xCC1D, 0xCC8C, 0xCD06, 0xCD8E, 0xCE23, 0xCEC6, 0xCF7B, 0xD040,\n    0xD118, 0xD409, 0xD97A, 0xDEF6, 0xE4CE, 0xEAB2, 0xED40, 0xEC09,\n    0xE950, 0xE5C2, 0xE20A, 0xDED5, 0xDCCE, 0xDBAC, 0xDAB1, 0xD9D9,\n    0xD921, 0xD885, 0xD804, 0xD799, 0xD741, 0xD6FA, 0xD6BF, 0xD68E,\n    0xD664, 0xD63E, 0xD69B, 0xD7AB, 0xD8F1, 0xD9ED, 0xDA24, 0xD90D,\n    0xD6FC, 0xD4BD, 0xD319, 0xD2DB, 0xD493, 0xD7B8, 0xDB76, 0xDEF4,\n    0xE15C, 0xE2E0, 0xE437, 0xE54E, 0xE615, 0xE67B, 0xE66D, 0xE5DB,\n    0xE4A2, 0xE2CA, 0xE07F, 0xDDF1, 0xDB4A, 0xD8BA, 0xD66D, 0xD490,\n    0xD351, 0xD2DC, 0xD4B4, 0xD513, 0xD618, 0xD79E, 0xD97E, 0xDB93,\n    0xDDB7, 0xDFC4, 0xE3C4, 0xE85B, 0xE84C, 0xE1DB, 0xD844, 0xCDBE,\n    0xC47F, 0xBEC0, 0xBC18, 0xBA81, 0xB9C2, 0xB9A3, 0xB9EB, 0xBA61,\n    0xBACC, 0xBAF4, 0xBAA0, 0xB9EB, 0xB916, 0xB827, 0xB725, 0xB615,\n    0xB4FD, 0xB3E2, 0xB2CA, 0xB1BB, 0xB0BA, 0xAFCD, 0xAEFB, 0xAE47,\n    0xADB9, 0xAD56, 0xAD24, 0xAD28, 0xAD68, 0xAEBB, 0xB19B, 0xB57F,\n    0xB9E1, 0xBE38, 0xC1FC, 0xC47D, 0xC472, 0xC3D7, 0xC3D8, 0xC3DB,\n    0xC3DF, 0xC3E3, 0xC3E5, 0xC3E4, 0xC3E0, 0xC3D7, 0xC3D3, 0xC3DF,\n    0xC3F8, 0xC41B, 0xC447, 0xC479, 0xC4AE, 0xC4E5, 0xC51A, 0xC54C,\n    0xC578, 0xC59C, 0xC5B5, 0xC5C1, 0xC5BE, 0xC5AA, 0xC581, 0xC542,\n    0xC4EA, 0xC477, 0xC3E6, 0xC336, 0xC263, 0xBD18, 0xB390, 0xACA2,\n    0xAB65, 0xACC2, 0xAE4A, 0xAFA9, 0xB1BB, 0xB3D7, 0xB557, 0xB591,\n    0xB3DE, 0xB076, 0xAC22, 0xA715, 0xA180, 0x9B95, 0x9586, 0x8F85,\n    0x89C4, 0x8473, 0x7FC4, 0x7BEC, 0x791B, 0x7783, 0x7A78, 0x8340,\n    0x8EEC, 0x9A97, 0xA35A, 0xA987, 0xAF10, 0xB376, 0xB63C, 0xB6E3,\n    0xB41F, 0xAE44, 0xA745, 0xA114, 0x9DA5, 0x9CAE, 0x9C8D, 0x9D30,\n    0x9E86, 0xA07D, 0xA303, 0xA607, 0xA9F5, 0xAF07, 0xB4DF, 0xBB1F,\n    0xC16A, 0xC762, 0xCCA9, 0xD0E2, 0xD3B0, 0xD4B4, 0x0000, 0x00DF,\n    0x0326, 0x0657, 0x09F1, 0x0D73, 0x105E, 0x1233, 0x1101, 0x0D81,\n    0x0B2C, 0x0AAA, 0x0A4F, 0x0A17, 0x0A00, 0x0A09, 0x0A2D, 0x0A6C,\n    0x0AC2, 0x0B2C, 0x0C02, 0x0D62, 0x0EFB, 0x1079, 0x118C, 0x1165,\n    0x10AA, 0x1133, 0x13DF, 0x179C, 0x1B5B, 0x1E0C, 0x1F84, 0x206B,\n    0x20EE, 0x213A, 0x217B, 0x21CD, 0x221B, 0x224E, 0x224C, 0x21FC,\n    0x2146, 0x2034, 0x1EE6, 0x1D6B, 0x1BCD, 0x1A19, 0x185A, 0x169D,\n    0x14ED, 0x1358, 0x1355, 0x1355, 0x1355, 0x1356, 0x1356, 0x1357,\n    0x1357, 0x1358, 0x1148, 0x0DD8, 0x0D28, 0x1358, 0x3361, 0x5555,\n    0x5610, 0x4EB4, 0x4D5F, 0x4C0F, 0x4AC3, 0x497C, 0x4838, 0x46F7,\n    0x45BA, 0x4481, 0x434A, 0x4216, 0x40E5, 0x3FB5, 0x3E89, 0x3D5E,\n    0x3C34, 0x3B0C, 0x39E6, 0x38C0, 0x379C, 0x3678, 0x3554, 0x3431,\n    0x330D, 0x31E9, 0x30C5, 0x2FA0, 0x2E7B, 0x2D45, 0x2BF6, 0x2A96,\n    0x292F, 0x27C8, 0x266B, 0x2520, 0x23EF, 0x22E2, 0x2200, 0x2153,\n    0x20E4, 0x20BA, 0x21E7, 0x24D1, 0x287C, 0x2BF1, 0x2E36, 0x2F3A,\n    0x2FA4, 0x2F8C, 0x2F0A, 0x2E36, 0x2CB8, 0x2A7A, 0x27F2, 0x2599,\n    0x2364, 0x20FE, 0x1E70, 0x1BC5, 0x1907, 0x1640, 0x1379, 0x10BC,\n    0x0E13, 0x0B87, 0x0924, 0x06F2, 0x04FC, 0x034B, 0x01E8, 0x00DF,\n    0x0039, 0x0000, 0x0000, 0x0095, 0x0222, 0x0458, 0x06EA, 0x0989,\n    0x0BE6, 0x0DB5, 0x0E7A, 0x0E6C, 0x0E45, 0x0E4C, 0x0E4A, 0x0E43,\n    0x0E39, 0x0E30, 0x0E29, 0x0E29, 0x0E31, 0x0E45, 0x0E8F, 0x0F12,\n    0x0F95, 0x0FE2, 0x0FC1, 0x0E37, 0x0BE3, 0x0AF1, 0x0C3B, 0x0E96,\n    0x1124, 0x1308, 0x141E, 0x14E4, 0x1575, 0x15EC, 0x1664, 0x16C8,\n    0x1706, 0x1739, 0x1779, 0x17E3, 0x1891, 0x197B, 0x1A84, 0x1BA6,\n    0x1CDB, 0x1E1B, 0x1F60, 0x20A4, 0x21E1, 0x230F, 0x2311, 0x2311,\n    0x2311, 0x2310, 0x2310, 0x2310, 0x230F, 0x230F, 0x236C, 0x2407,\n    0x2426, 0x230F, 0x1C74, 0x176E, 0x2008, 0x27F3, 0x27BF, 0x276D,\n    0x2701, 0x267C, 0x25E1, 0x2531, 0x246F, 0x239D, 0x22BE, 0x21D2,\n    0x20DD, 0x1FE0, 0x1EDE, 0x1DD8, 0x1CD2, 0x1BCC, 0x1AC9, 0x19CB,\n    0x18D5, 0x17E8, 0x1707, 0x1633, 0x1570, 0x14BE, 0x1420, 0x1398,\n    0x1329, 0x12EB, 0x12F0, 0x132D, 0x1397, 0x1424, 0x14CA, 0x157E,\n    0x1635, 0x16E6, 0x1785, 0x1808, 0x1864, 0x1890, 0x1839, 0x174D,\n    0x161F, 0x1500, 0x1445, 0x1410, 0x1429, 0x145E, 0x1478, 0x1445,\n    0x139E, 0x12A2, 0x1186, 0x107E, 0x0F86, 0x0E79, 0x0D5A, 0x0C2E,\n    0x0AFA, 0x09C2, 0x088A, 0x0757, 0x062C, 0x050E, 0x0402, 0x030C,\n    0x022F, 0x0171, 0x00D6, 0x0062, 0x0019, 0x0000, 0xF549, 0xF5EA,\n    0xF778, 0xF974, 0xFB5D, 0xFCB4, 0xFCF9, 0xFBAD, 0xF3BC, 0xE6E0,\n    0xDED3, 0xDCEC, 0xDBE6, 0xDB96, 0xDBCF, 0xDC63, 0xDD27, 0xDDEF,\n    0xDE8C, 0xDED3, 0xDEF7, 0xDF37, 0xDF77, 0xDF9D, 0xDF8D, 0xDEB2,\n    0xDD75, 0xDD36, 0xDE83, 0xE092, 0xE2C9, 0xE48F, 0xE5D2, 0xE6ED,\n    0xE7DF, 0xE8AB, 0xE950, 0xEA0E, 0xEAF4, 0xEBBF, 0xEC2B, 0xEBF7,\n    0xEADD, 0xE8F6, 0xE695, 0xE3D3, 0xE0C9, 0xDD90, 0xDA42, 0xD6F7,\n    0xD3C8, 0xD0CE, 0xD0C7, 0xD0C8, 0xD0C9, 0xD0CA, 0xD0CB, 0xD0CC,\n    0xD0CD, 0xD0CE, 0xCE81, 0xCAAB, 0xC9E6, 0xD0CE, 0xF59D, 0x1A71,\n    0x11AF, 0x020F, 0x00B7, 0xFF81, 0xFE68, 0xFD6C, 0xFC8A, 0xFBC1,\n    0xFB0D, 0xFA6D, 0xF9DE, 0xF95E, 0xF8EC, 0xF883, 0xF824, 0xF7CA,\n    0xF775, 0xF721, 0xF6CD, 0xF676, 0xF61A, 0xF5B7, 0xF54B, 0xF4D3,\n    0xF44D, 0xF3B7, 0xF30F, 0xF252, 0xF17E, 0xF071, 0xEF13, 0xED78,\n    0xEBB0, 0xE9CD, 0xE7E0, 0xE5FB, 0xE42F, 0xE28E, 0xE12A, 0xE013,\n    0xDF5C, 0xDF15, 0xE0A2, 0xE47B, 0xE956, 0xEDEA, 0xF0EA, 0xF20A,\n    0xF227, 0xF1B4, 0xF124, 0xF0EA, 0xF10E, 0xF144, 0xF181, 0xF1BA,\n    0xF1F0, 0xF22A, 0xF268, 0xF2A8, 0xF2EB, 0xF32E, 0xF371, 0xF3B4,\n    0xF3F4, 0xF432, 0xF46C, 0xF4A1, 0xF4D1, 0xF4F9, 0xF51B, 0xF534,\n    0xF544, 0xF549, 0xC7DD, 0xC720, 0xC537, 0xC29A, 0xBFC0, 0xBD21,\n    0xBB32, 0xBA6C, 0xBD8A, 0xC396, 0xC775, 0xC866, 0xC90E, 0xC973,\n    0xC99B, 0xC989, 0xC945, 0xC8D2, 0xC835, 0xC775, 0xC5D3, 0xC313,\n    0xC001, 0xBD66, 0xBC0D, 0xBDB6, 0xC166, 0xC3CA, 0xC3C8, 0xC2DB,\n    0xC195, 0xC088, 0xBF35, 0xBD51, 0xBBBE, 0xBB5E, 0xBD12, 0xC14C,\n    0xC75E, 0xCE79, 0xD5CF, 0xDC91, 0xE1F1, 0xE61E, 0xE9E0, 0xED4B,\n    0xF075, 0xF372, 0xF656, 0xF937, 0xFC2A, 0xFF42, 0xFF46, 0xFF46,\n    0xFF45, 0xFF44, 0xFF44, 0xFF43, 0xFF42, 0xFF42, 0xFFC5, 0x0000,\n    0x0000, 0xFF42, 0xFA68, 0xF33C, 0xEC94, 0xE941, 0xE8A1, 0xE82A,\n    0xE7D8, 0xE7A8, 0xE797, 0xE7A1, 0xE7C2, 0xE7F8, 0xE83F, 0xE893,\n    0xE8F1, 0xE956, 0xE9BE, 0xEA26, 0xEA8A, 0xEAE7, 0xEB3A, 0xEB7E,\n    0xEBB2, 0xEBD0, 0xEBD7, 0xEBC1, 0xEB8D, 0xEB36, 0xEABA, 0xEA14,\n    0xE941, 0xE831, 0xE6D8, 0xE53D, 0xE368, 0xE15E, 0xDF26, 0xDCC7,\n    0xDA48, 0xD7AF, 0xD504, 0xD24B, 0xCF8E, 0xCCD1, 0xCA1C, 0xC776,\n    0xC4E4, 0xC26E, 0xC01B, 0xBDED, 0xBBD9, 0xB9CC, 0xB7B5, 0xB583,\n    0xB28A, 0xAF08, 0xAC4E, 0xABA9, 0xACA8, 0xADF2, 0xAF7C, 0xB13D,\n    0xB328, 0xB532, 0xB752, 0xB97B, 0xBBA4, 0xBDC0, 0xBFC6, 0xC1AA,\n    0xC362, 0xC4E2, 0xC620, 0xC710, 0xC7A8, 0xC7DD, 0x054B, 0x05AC,\n    0x06AB, 0x0816, 0x09BB, 0x0B66, 0x0CE5, 0x0E04, 0x0FCE, 0x1102,\n    0x0E04, 0x06FB, 0xFEB9, 0xF59D, 0xEC09, 0xE260, 0xD902, 0xD051,\n    0xC8AF, 0xC27C, 0xBF11, 0xBEAC, 0xC00D, 0xC1F2, 0xC31B, 0xC481,\n    0xC62D, 0xC57A, 0xC1F7, 0xBD13, 0xB6F0, 0xAFB0, 0xA500, 0x9701,\n    0x898E, 0x807E, 0x7FA6, 0x88BC, 0x98CA, 0xACC9, 0xC1AB, 0xD466,\n    0xE1EE, 0xEAF4, 0xF266, 0xF893, 0xFDCB, 0x025D, 0x0699, 0x0AD0,\n    0x0F50, 0x1469, 0x147D, 0x14AA, 0x14E4, 0x151B, 0x153B, 0x1534,\n    0x14F4, 0x1469, 0x1125, 0x0BB5, 0x0887, 0x0C04, 0x1BD6, 0x3425,\n    0x4B13, 0x56C6, 0x596D, 0x5BD0, 0x5DF1, 0x5FD4, 0x617A, 0x62E8,\n    0x6421, 0x6526, 0x65FC, 0x66A6, 0x6726, 0x677F, 0x67B4, 0x67C9,\n    0x67C0, 0x679D, 0x6761, 0x6712, 0x66B0, 0x6640, 0x65C5, 0x6541,\n    0x64B7, 0x642A, 0x639E, 0x6316, 0x6294, 0x61EA, 0x60ED, 0x5FA6,\n    0x5E1E, 0x5C5D, 0x5A6B, 0x5852, 0x561A, 0x53CC, 0x5170, 0x4F0E,\n    0x4CB0, 0x4A5E, 0x4820, 0x45FF, 0x4405, 0x4238, 0x40A3, 0x3F0D,\n    0x3DA4, 0x3D0D, 0x3DEC, 0x40E3, 0x49AE, 0x5741, 0x6319, 0x66B0,\n    0x6367, 0x5F11, 0x59D5, 0x53D8, 0x4D41, 0x4637, 0x3EE0, 0x3763,\n    0x2FE5, 0x288F, 0x2185, 0x1AEF, 0x14F2, 0x0FB7, 0x0B61, 0x0819,\n    0x0605, 0x054B, 0x2BD6, 0x2B79, 0x2A80, 0x291F, 0x2786, 0x25E6,\n    0x2472, 0x235A, 0x2318, 0x2367, 0x235A, 0x22AE, 0x21D1, 0x20D5,\n    0x1FCE, 0x1ED2, 0x1DF2, 0x1D45, 0x1CDC, 0x1CCD, 0x1DC3, 0x1FDB,\n    0x2252, 0x2467, 0x2557, 0x2373, 0x1FCB, 0x1DB4, 0x1DF5, 0x1F18,\n    0x211D, 0x23FF, 0x288D, 0x2EA0, 0x34C6, 0x398E, 0x3B86, 0x3B67,\n    0x3AE9, 0x3A17, 0x38FB, 0x379F, 0x360F, 0x3455, 0x327B, 0x308D,\n    0x2E95, 0x2C9D, 0x2AB1, 0x28DA, 0x2724, 0x2599, 0x25A1, 0x25C4,\n    0x25F2, 0x261C, 0x2637, 0x2633, 0x2603, 0x2599, 0x2370, 0x1FD8,\n    0x1D85, 0x1F2A, 0x2803, 0x35C8, 0x42E8, 0x49CF, 0x4BA6, 0x4D50,\n    0x4ECE, 0x5025, 0x5155, 0x5263, 0x5350, 0x541F, 0x54D3, 0x556F,\n    0x55F5, 0x5667, 0x56C9, 0x571D, 0x5766, 0x57A6, 0x57DF, 0x5815,\n    0x584B, 0x5882, 0x58BD, 0x5900, 0x594C, 0x59A5, 0x5A0C, 0x5A85,\n    0x5B12, 0x5BB1, 0x5C5C, 0x5D0F, 0x5DC9, 0x5E87, 0x5F45, 0x6002,\n    0x60B9, 0x616A, 0x6210, 0x62A9, 0x6333, 0x63AA, 0x640D, 0x6457,\n    0x6487, 0x6499, 0x648C, 0x637E, 0x610A, 0x5DE4, 0x5AC0, 0x5853,\n    0x5700, 0x5644, 0x557C, 0x5405, 0x51DC, 0x4F72, 0x4CD5, 0x4A0E,\n    0x472B, 0x4436, 0x413B, 0x3E45, 0x3B61, 0x3899, 0x35FA, 0x338F,\n    0x3163, 0x2F83, 0x2DF9, 0x2CD1, 0x2C17, 0x2BD6, 0xCCF6, 0xCD61,\n    0xCE7E, 0xD014, 0xD1E9, 0xD3C6, 0xD571, 0xD6B2, 0xD850, 0xD949,\n    0xD6B2, 0xD0BA, 0xC9B6, 0xC1FB, 0xB9D9, 0xB1A6, 0xA9B4, 0xA256,\n    0x9BDF, 0x96A2, 0x93BE, 0x936A, 0x949D, 0x9650, 0x977C, 0x9951,\n    0x9B94, 0x9B19, 0x9761, 0x9219, 0x8B50, 0x831A, 0x7771, 0x6894,\n    0x59EE, 0x4EEA, 0x4AF5, 0x4F34, 0x5905, 0x6626, 0x7458, 0x815F,\n    0x8AF4, 0x9195, 0x975A, 0x9C6C, 0xA0F8, 0xA529, 0xA929, 0xAD24,\n    0xB145, 0xB5B8, 0xB5B7, 0xB5A0, 0xB582, 0xB565, 0xB553, 0xB555,\n    0xB573, 0xB5B8, 0xB50C, 0xB3EC, 0xB4BE, 0xB9E5, 0xC723, 0xDA26,\n    0xEC3A, 0xF6A7, 0xFAFB, 0xFF3D, 0x036C, 0x0786, 0x0B8A, 0x0F77,\n    0x1349, 0x1700, 0x1A9B, 0x1E17, 0x2173, 0x24AD, 0x27C5, 0x2AB7,\n    0x2D83, 0x3027, 0x32A1, 0x34F0, 0x3712, 0x3906, 0x3ACA, 0x3C5C,\n    0x3DBB, 0x3EE4, 0x3FD8, 0x4093, 0x4115, 0x410E, 0x403D, 0x3EB7,\n    0x3C90, 0x39DB, 0x36AD, 0x331B, 0x2F37, 0x2B17, 0x26CF, 0x2272,\n    0x1E15, 0x19CC, 0x15AB, 0x11C6, 0x0E32, 0x0B02, 0x084A, 0x0604,\n    0x046E, 0x0403, 0x0540, 0x08A0, 0x1228, 0x20DB, 0x2DBB, 0x31C4,\n    0x2E73, 0x2A06, 0x24A6, 0x1E7B, 0x17AE, 0x1066, 0x08CC, 0x0108,\n    0xF943, 0xF1A4, 0xEA54, 0xE37B, 0xDD41, 0xD7CF, 0xD34C, 0xCFE2,\n    0xCDB8, 0xCCF6, 0x0000, 0xFFFF, 0xFFFC, 0xFFF8, 0xFFF7, 0xFFF9,\n    0x0000, 0x0019, 0x0042, 0x0064, 0x006C, 0x004F, 0x001A, 0xFFDA,\n    0xFF9D, 0xFF63, 0xFF26, 0xFEEA, 0xFEB3, 0xFE7E, 0xFE47, 0xFE11,\n    0xFDE1, 0xFDB9, 0xFD9E, 0xFD88, 0xFD75, 0xFD6B, 0xFD6F, 0xFD88,\n    0xFDBB, 0xFE1E, 0xFEB1, 0xFF57, 0xFFF9, 0x007A, 0x00C2, 0x009B,\n    0x0014, 0xFF7A, 0xFF1B, 0xFF10, 0xFF2E, 0xFF5C, 0xFF7F, 0xFF95,\n    0xFFAB, 0xFFC0, 0xFFD5, 0xFFE7, 0xFFF6, 0x0000, 0x0006, 0x0008,\n    0x0007, 0x0005, 0x0001, 0x0000, 0xFFFF, 0x0000, 0x0008, 0x0016,\n    0x0023, 0x002B, 0x002A, 0x0026, 0x0020, 0x001A, 0x0016, 0x0015,\n    0x0017, 0x001C, 0x0021, 0x0028, 0x002E, 0x0033, 0x0037, 0x0038,\n    0x0036, 0x002F, 0x0024, 0x0013, 0xFFFD, 0xFF98, 0xFEE4, 0xFE4B,\n    0xFE36, 0xFF54, 0x011E, 0x022A, 0x0228, 0x01D1, 0x014B, 0x00BA,\n    0x0043, 0x000C, 0x0001, 0xFFF9, 0xFFF0, 0xFFE8, 0xFFE1, 0xFFDB,\n    0xFFD5, 0xFFD1, 0xFFCD, 0xFFC9, 0xFFC6, 0xFFC4, 0xFFC3, 0xFFC2,\n    0xFFC1, 0xFFC1, 0xFFC2, 0xFFC3, 0xFFC4, 0xFFC6, 0xFFC8, 0xFFCA,\n    0xFFCC, 0xFFCF, 0xFFD2, 0xFFD5, 0xFFD8, 0xFFDB, 0xFFDE, 0xFFE2,\n    0xFFE5, 0xFFE8, 0xFFEC, 0xFFEF, 0xFFF2, 0xFFF4, 0xFFF7, 0xFFF9,\n    0xFFFB, 0xFFFD, 0xFFFF, 0x0000, 0x0000, 0x0000, 0xFF30, 0xFF32,\n    0xFF37, 0xFF3B, 0xFF3D, 0xFF3A, 0xFF30, 0xFF17, 0xFEF0, 0xFEC3,\n    0xFE98, 0xFE70, 0xFE46, 0xFE1C, 0xFDF2, 0xFDC7, 0xFD9B, 0xFD6E,\n    0xFD40, 0xFD0F, 0xFCD9, 0xFCA3, 0xFC70, 0xFC43, 0xFC1F, 0xFBFC,\n    0xFBD6, 0xFBB5, 0xFBA4, 0xFBAD, 0xFBD9, 0xFC38, 0xFCC6, 0xFD6E,\n    0xFE1A, 0xFEB4, 0xFF28, 0xFF62, 0xFF6E, 0xFF63, 0xFF5A, 0xFF52,\n    0xFF40, 0xFF2D, 0xFF23, 0xFF21, 0xFF21, 0xFF24, 0xFF27, 0xFF2B,\n    0xFF2E, 0xFF30, 0xFF31, 0xFF31, 0xFF31, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF31, 0xFF32, 0xFF34, 0xFF34, 0xFF34, 0xFF33,\n    0xFF32, 0xFF32, 0xFF31, 0xFF31, 0xFF30, 0xFF30, 0xFF30, 0xFF2F,\n    0xFF2F, 0xFF2F, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2F, 0xFF2F,\n    0xFF30, 0xFF34, 0xFF3A, 0xFF40, 0xFF43, 0xFF3E, 0xFF34, 0xFF2E,\n    0xFF2D, 0xFF2D, 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, 0xFF31, 0xFF31,\n    0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31,\n    0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31,\n    0xFF31, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xC9D8, 0xC9D0, 0xC9B8, 0xC996, 0xC96A, 0xC93A,\n    0xC907, 0xC8B9, 0xC850, 0xC7F8, 0xC7DF, 0xC826, 0xC8AE, 0xC942,\n    0xC9AA, 0xC9D9, 0xC9EC, 0xC9EB, 0xC9E2, 0xC9CB, 0xC9A4, 0xC978,\n    0xC951, 0xC93A, 0xC93F, 0xC965, 0xC9A2, 0xC9F1, 0xCA47, 0xCA9E,\n    0xCAEC, 0xCB37, 0xCB85, 0xCBD3, 0xCC1E, 0xCC61, 0xCC98, 0xCCB1,\n    0xCCAE, 0xCCAF, 0xCCD3, 0xCD4C, 0xCDFA, 0xCE87, 0xCE9B, 0xCE2F,\n    0xCD84, 0xCCB3, 0xCBD5, 0xCB00, 0xCA4F, 0xC9D8, 0xC9AE, 0xC9C1,\n    0xC9F9, 0xCA3D, 0xCA75, 0xCA87, 0xCA5B, 0xC9D8, 0xC833, 0xC574,\n    0xC2C4, 0xC149, 0xC155, 0xC22D, 0xC369, 0xC4A1, 0xC56B, 0xC5E0,\n    0xC65A, 0xC6D8, 0xC756, 0xC7D1, 0xC845, 0xC8B1, 0xC911, 0xC961,\n    0xC9A0, 0xC9C9, 0xC9DA, 0xC9D0, 0xC9A8, 0xC86D, 0xC5E9, 0xC339,\n    0xC17A, 0xC167, 0xC257, 0xC34E, 0xC40A, 0xC4DF, 0xC5B6, 0xC677,\n    0xC70A, 0xC756, 0xC777, 0xC797, 0xC7B6, 0xC7D4, 0xC7F1, 0xC80D,\n    0xC828, 0xC841, 0xC85A, 0xC873, 0xC88A, 0xC8A0, 0xC8B5, 0xC8CA,\n    0xC8DD, 0xC8F0, 0xC902, 0xC913, 0xC923, 0xC933, 0xC941, 0xC94F,\n    0xC95C, 0xC969, 0xC974, 0xC97F, 0xC98A, 0xC993, 0xC99C, 0xC9A4,\n    0xC9AC, 0xC9B3, 0xC9B9, 0xC9BF, 0xC9C4, 0xC9C8, 0xC9CC, 0xC9CF,\n    0xC9D2, 0xC9D4, 0xC9D6, 0xC9D7, 0xC9D8, 0xC9D8, 0x1E4A, 0x1E6D,\n    0x1EC5, 0x1F34, 0x1F9D, 0x1FE3, 0x1FEB, 0x1FBE, 0x1F7E, 0x1F2E,\n    0x1ED2, 0x1E6E, 0x1E04, 0x1D99, 0x1D30, 0x1CCD, 0x1C72, 0x1C25,\n    0x1BE7, 0x1BD0, 0x1BE5, 0x1C11, 0x1C3D, 0x1C54, 0x1C42, 0x1BFE,\n    0x1B99, 0x1B20, 0x1A9E, 0x1A21, 0x19B4, 0x1958, 0x1902, 0x18B1,\n    0x1861, 0x1811, 0x17BC, 0x1762, 0x1705, 0x16A6, 0x1647, 0x15B2,\n    0x14F9, 0x1486, 0x14C5, 0x15C1, 0x1724, 0x18C3, 0x1A74, 0x1C0D,\n    0x1D62, 0x1E4A, 0x1E97, 0x1E61, 0x1DDC, 0x1D42, 0x1CC9, 0x1CA7,\n    0x1D15, 0x1E4A, 0x222F, 0x28AF, 0x2EF9, 0x3240, 0x31A6, 0x2EF2,\n    0x2B4D, 0x27E0, 0x25D5, 0x24E2, 0x23FA, 0x231E, 0x2253, 0x2199,\n    0x20F4, 0x2066, 0x1FF2, 0x1F9B, 0x1F63, 0x1F4C, 0x1F5A, 0x1F8E,\n    0x1FEC, 0x21FD, 0x2626, 0x2AB4, 0x2DF1, 0x2F26, 0x2F08, 0x2DFF,\n    0x2C30, 0x29BE, 0x2712, 0x2492, 0x22A6, 0x21B6, 0x2168, 0x211E,\n    0x20D9, 0x2097, 0x205A, 0x2021, 0x1FEC, 0x1FBB, 0x1F8D, 0x1F62,\n    0x1F3B, 0x1F17, 0x1EF6, 0x1ED9, 0x1EBE, 0x1EA5, 0x1E90, 0x1E7C,\n    0x1E6B, 0x1E5D, 0x1E50, 0x1E45, 0x1E3C, 0x1E35, 0x1E30, 0x1E2C,\n    0x1E29, 0x1E27, 0x1E27, 0x1E27, 0x1E28, 0x1E2A, 0x1E2D, 0x1E30,\n    0x1E33, 0x1E36, 0x1E3A, 0x1E3D, 0x1E40, 0x1E43, 0x1E46, 0x1E48,\n    0x1E49, 0x1E4A, 0x1B09, 0x1AF8, 0x1AD0, 0x1AA2, 0x1A7E, 0x1A74,\n    0x1A96, 0x1ADB, 0x1B2F, 0x1B8E, 0x1BF7, 0x1C66, 0x1CD9, 0x1D4E,\n    0x1DC2, 0x1E32, 0x1E9C, 0x1EFD, 0x1F53, 0x1F99, 0x1FCD, 0x1FF3,\n    0x200D, 0x201D, 0x2025, 0x202C, 0x2030, 0x202A, 0x2013, 0x1FE2,\n    0x1F90, 0x1F08, 0x1E4B, 0x1D74, 0x1CA0, 0x1BE8, 0x1B6A, 0x1B4A,\n    0x1B7D, 0x1BCF, 0x1C10, 0x1C42, 0x1C79, 0x1CA0, 0x1CA2, 0x1C7E,\n    0x1C44, 0x1BFE, 0x1BB3, 0x1B6C, 0x1B31, 0x1B09, 0x1AFE, 0x1B0D,\n    0x1B2A, 0x1B4A, 0x1B62, 0x1B66, 0x1B4C, 0x1B09, 0x1A2D, 0x18C0,\n    0x1762, 0x16B5, 0x16F1, 0x17AD, 0x18A0, 0x197E, 0x19FD, 0x1A2F,\n    0x1A58, 0x1A79, 0x1A92, 0x1AA5, 0x1AB2, 0x1ABB, 0x1AC0, 0x1AC3,\n    0x1AC4, 0x1AC4, 0x1AC4, 0x1AC6, 0x1ACA, 0x1AB9, 0x1A8F, 0x1A66,\n    0x1A58, 0x1A84, 0x1AD0, 0x1B00, 0x1B03, 0x1AF8, 0x1AE5, 0x1AD3,\n    0x1AC9, 0x1ACD, 0x1ADE, 0x1AF4, 0x1B0E, 0x1B2A, 0x1B48, 0x1B68,\n    0x1B88, 0x1BA7, 0x1BC6, 0x1BE2, 0x1BFB, 0x1C10, 0x1C21, 0x1C2C,\n    0x1C31, 0x1C31, 0x1C2F, 0x1C2B, 0x1C25, 0x1C1E, 0x1C15, 0x1C0B,\n    0x1BFF, 0x1BF3, 0x1BE5, 0x1BD7, 0x1BC8, 0x1BB9, 0x1BA9, 0x1B9A,\n    0x1B8A, 0x1B7B, 0x1B6C, 0x1B5D, 0x1B4F, 0x1B42, 0x1B36, 0x1B2B,\n    0x1B21, 0x1B19, 0x1B12, 0x1B0D, 0x1B0A, 0x1B09, 0x1144, 0x1152,\n    0x1176, 0x11A3, 0x11D1, 0x11F5, 0x1204, 0x1203, 0x11FE, 0x11F6,\n    0x11EB, 0x11DE, 0x11CE, 0x11BD, 0x11AA, 0x1195, 0x1180, 0x116A,\n    0x1153, 0x1138, 0x1114, 0x10EB, 0x10C0, 0x1095, 0x106F, 0x104D,\n    0x102C, 0x100D, 0x0FED, 0x0FCD, 0x0FAC, 0x0F8B, 0x0F6C, 0x0F4D,\n    0x0F2B, 0x0F03, 0x0ED4, 0x0E8C, 0x0E2E, 0x0DD8, 0x0DA4, 0x0D96,\n    0x0DA1, 0x0DC7, 0x0E0B, 0x0E70, 0x0EEE, 0x0F7A, 0x1008, 0x108B,\n    0x10F9, 0x1144, 0x1161, 0x1155, 0x1130, 0x1103, 0x10DE, 0x10D2,\n    0x10EE, 0x1144, 0x1260, 0x143A, 0x1601, 0x16E6, 0x16A5, 0x15C2,\n    0x1499, 0x1388, 0x12EA, 0x12A9, 0x126F, 0x123C, 0x1210, 0x11EA,\n    0x11CC, 0x11B4, 0x11A4, 0x119A, 0x1197, 0x119B, 0x11A5, 0x11B6,\n    0x11CE, 0x124A, 0x133D, 0x143B, 0x14D5, 0x14B9, 0x142D, 0x13AA,\n    0x134E, 0x12ED, 0x128E, 0x1238, 0x11F3, 0x11C5, 0x11A7, 0x118D,\n    0x1176, 0x1163, 0x1152, 0x1144, 0x1138, 0x112E, 0x1126, 0x1120,\n    0x111B, 0x1117, 0x1113, 0x1110, 0x110D, 0x110B, 0x1109, 0x1108,\n    0x1107, 0x1107, 0x1108, 0x1109, 0x110B, 0x110D, 0x1110, 0x1112,\n    0x1116, 0x1119, 0x111C, 0x1120, 0x1124, 0x1127, 0x112B, 0x112F,\n    0x1132, 0x1135, 0x1138, 0x113B, 0x113E, 0x1140, 0x1142, 0x1143,\n    0x1144, 0x1144, 0xAC44, 0xAC2A, 0xABEC, 0xAB9F, 0xAB58, 0xAB2D,\n    0xAB33, 0xAB61, 0xAB9C, 0xABE3, 0xAC33, 0xAC8A, 0xACE6, 0xAD44,\n    0xADA2, 0xADFE, 0xAE57, 0xAEA8, 0xAEF1, 0xAF31, 0xAF69, 0xAF99,\n    0xAFC1, 0xAFE0, 0xAFF7, 0xB008, 0xB015, 0xB01A, 0xB012, 0xAFFB,\n    0xAFD0, 0xAF7D, 0xAF02, 0xAE76, 0xADF4, 0xAD93, 0xAD6D, 0xADB7,\n    0xAE67, 0xAF30, 0xAFC6, 0xB02C, 0xB082, 0xB0AA, 0xB088, 0xB018,\n    0xAF7A, 0xAEC0, 0xADFD, 0xAD45, 0xACAC, 0xAC44, 0xAC21, 0xAC3B,\n    0xAC77, 0xACBD, 0xACF4, 0xAD03, 0xACD0, 0xAC44, 0xAA78, 0xA779,\n    0xA49A, 0xA32C, 0xA3A0, 0xA51F, 0xA70E, 0xA8D6, 0xA9DB, 0xAA46,\n    0xAAA5, 0xAAF7, 0xAB3E, 0xAB78, 0xABA7, 0xABCB, 0xABE3, 0xABF0,\n    0xABF3, 0xABEB, 0xABD9, 0xABBC, 0xAB96, 0xAAE4, 0xA981, 0xA7F6,\n    0xA6CE, 0xA625, 0xA5D9, 0xA613, 0xA6CD, 0xA7CE, 0xA8F1, 0xAA0E,\n    0xAB00, 0xABA1, 0xAC08, 0xAC68, 0xACC0, 0xAD12, 0xAD5D, 0xADA1,\n    0xADDD, 0xAE13, 0xAE43, 0xAE6B, 0xAE8D, 0xAEA7, 0xAEBC, 0xAEC9,\n    0xAED0, 0xAED1, 0xAECE, 0xAEC6, 0xAEB9, 0xAEA9, 0xAE96, 0xAE7F,\n    0xAE66, 0xAE4B, 0xAE2D, 0xAE0E, 0xADED, 0xADCB, 0xADA9, 0xAD86,\n    0xAD64, 0xAD41, 0xAD20, 0xACFF, 0xACE1, 0xACC3, 0xACA8, 0xAC90,\n    0xAC7A, 0xAC67, 0xAC58, 0xAC4D, 0xAC46, 0xAC44, 0x0000, 0xFFD2,\n    0xFF5B, 0xFEBD, 0xFE16, 0xFD87, 0xFD31, 0xFD0D, 0xFCFF, 0xFD02,\n    0xFD11, 0xFD27, 0xFD3F, 0xFD53, 0xFD60, 0xFD66, 0xFD6B, 0xFD6F,\n    0xFD72, 0xFD74, 0xFD77, 0xFD78, 0xFD7A, 0xFD7C, 0xFD7F, 0xFD82,\n    0xFD85, 0xFD8A, 0xFD90, 0xFD96, 0xFD9F, 0xFDA9, 0xFDB5, 0xFDC3,\n    0xFDD3, 0xFDE5, 0xFDFA, 0xFE1E, 0xFE57, 0xFEA0, 0xFEF1, 0xFF44,\n    0xFF91, 0xFFD2, 0x0000, 0x0019, 0x0023, 0x0021, 0x0019, 0x000E,\n    0x0004, 0x0000, 0x0006, 0x0016, 0x002A, 0x003C, 0x0047, 0x0044,\n    0x002E, 0x0000, 0xFF6C, 0xFE75, 0xFD8D, 0xFD26, 0xFD6C, 0xFE15,\n    0xFEE4, 0xFF9C, 0x0000, 0x0020, 0x0037, 0x0045, 0x004C, 0x004C,\n    0x0047, 0x003E, 0x0033, 0x0026, 0x0019, 0x000E, 0x0005, 0x0000,\n    0x0000, 0x0005, 0x000E, 0x0019, 0x0025, 0x002F, 0x0036, 0x0039,\n    0x0035, 0x002B, 0x001D, 0x0010, 0x0005, 0x0000, 0xFFFF, 0xFFFE,\n    0xFFFD, 0xFFFD, 0xFFFC, 0xFFFB, 0xFFFB, 0xFFFA, 0xFFFA, 0xFFFA,\n    0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9, 0xFFF9,\n    0xFFF9, 0xFFFA, 0xFFFA, 0xFFFA, 0xFFFA, 0xFFFB, 0xFFFB, 0xFFFB,\n    0xFFFC, 0xFFFC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFE, 0xFFFE, 0xFFFE,\n    0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xFFF1, 0xFFCB, 0xFF98, 0xFF63, 0xFF35,\n    0xFF1A, 0xFF10, 0xFF0D, 0xFF0F, 0xFF15, 0xFF1E, 0xFF28, 0xFF32,\n    0xFF39, 0xFF3F, 0xFF46, 0xFF4C, 0xFF53, 0xFF5A, 0xFF60, 0xFF67,\n    0xFF6E, 0xFF76, 0xFF7D, 0xFF84, 0xFF8B, 0xFF92, 0xFF9A, 0xFFA1,\n    0xFFA8, 0xFFAF, 0xFFB6, 0xFFBD, 0xFFC4, 0xFFCB, 0xFFD2, 0xFFD8,\n    0xFFDF, 0xFFE6, 0xFFED, 0xFFF3, 0xFFF8, 0xFFFD, 0x0000, 0x0002,\n    0x0003, 0x0003, 0x0002, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFD,\n    0xFFFA, 0xFFF9, 0xFFFA, 0xFFFC, 0xFFFE, 0xFFFF, 0x0000, 0x0001,\n    0x0004, 0x0008, 0x000D, 0x0012, 0x0016, 0x001B, 0x001E, 0x001F,\n    0x001F, 0x001C, 0x0016, 0x000D, 0x0000, 0xFFE4, 0xFFB2, 0xFF75,\n    0xFF36, 0xFEFD, 0xFED4, 0xFEC4, 0xFEDB, 0xFF13, 0xFF5E, 0xFFA9,\n    0xFFE5, 0x0000, 0x0006, 0x000B, 0x0010, 0x0014, 0x0018, 0x001C,\n    0x001F, 0x0021, 0x0024, 0x0025, 0x0027, 0x0028, 0x0028, 0x0029,\n    0x0029, 0x0029, 0x0028, 0x0027, 0x0026, 0x0025, 0x0024, 0x0022,\n    0x0021, 0x001F, 0x001D, 0x001B, 0x0019, 0x0017, 0x0015, 0x0013,\n    0x0011, 0x000F, 0x000D, 0x000B, 0x0009, 0x0007, 0x0005, 0x0004,\n    0x0003, 0x0002, 0x0001, 0x0000, 0x0000, 0x0000, 0xBF40, 0xBF46,\n    0xBF56, 0xBF6C, 0xBF84, 0xBF9A, 0xBFA9, 0xBFAF, 0xBFAD, 0xBFA6,\n    0xBFA0, 0xBF9F, 0xBFA6, 0xBFBB, 0xBFE1, 0xC014, 0xC04C, 0xC088,\n    0xC0C7, 0xC10A, 0xC150, 0xC197, 0xC1E1, 0xC22B, 0xC275, 0xC2C0,\n    0xC30A, 0xC353, 0xC39A, 0xC3DF, 0xC421, 0xC45F, 0xC49A, 0xC4D1,\n    0xC502, 0xC52E, 0xC554, 0xC56B, 0xC56B, 0xC556, 0xC52D, 0xC4F4,\n    0xC4AB, 0xC454, 0xC3F2, 0xC36D, 0xC2BB, 0xC1EE, 0xC11C, 0xC056,\n    0xBFB1, 0xBF40, 0xBF0D, 0xBF0A, 0xBF26, 0xBF50, 0xBF78, 0xBF8E,\n    0xBF81, 0xBF40, 0xBE66, 0xBCFB, 0xBB94, 0xBAC5, 0xBAB9, 0xBB13,\n    0xBB9D, 0xBC22, 0xBC6F, 0xBC95, 0xBCC5, 0xBCFC, 0xBD37, 0xBD71,\n    0xBDA7, 0xBDD6, 0xBDF9, 0xBE0D, 0xBE0E, 0xBDF9, 0xBDCA, 0xBD7D,\n    0xBD0F, 0xBC11, 0xBA52, 0xB826, 0xB5E3, 0xB3DF, 0xB26F, 0xB1EA,\n    0xB2C7, 0xB4E1, 0xB79E, 0xBA65, 0xBC9B, 0xBDA8, 0xBDEA, 0xBE27,\n    0xBE5F, 0xBE93, 0xBEC3, 0xBEEE, 0xBF16, 0xBF39, 0xBF59, 0xBF75,\n    0xBF8E, 0xBFA4, 0xBFB6, 0xBFC6, 0xBFD3, 0xBFDD, 0xBFE5, 0xBFEA,\n    0xBFED, 0xBFEF, 0xBFEE, 0xBFEC, 0xBFE8, 0xBFE3, 0xBFDC, 0xBFD4,\n    0xBFCC, 0xBFC2, 0xBFB8, 0xBFAE, 0xBFA3, 0xBF98, 0xBF8D, 0xBF83,\n    0xBF78, 0xBF6E, 0xBF65, 0xBF5C, 0xBF54, 0xBF4D, 0xBF48, 0xBF44,\n    0xBF41, 0xBF40, 0x2537, 0x253F, 0x2554, 0x256E, 0x2588, 0x259A,\n    0x259F, 0x259C, 0x259A, 0x2597, 0x258E, 0x257D, 0x2560, 0x2534,\n    0x24F7, 0x24AD, 0x245D, 0x2409, 0x23B0, 0x2354, 0x22F4, 0x2293,\n    0x222F, 0x21CA, 0x2165, 0x20FF, 0x209A, 0x2036, 0x1FD3, 0x1F73,\n    0x1F16, 0x1EBB, 0x1E65, 0x1E14, 0x1DC7, 0x1D80, 0x1D40, 0x1D08,\n    0x1CDE, 0x1CC5, 0x1CC1, 0x1CD5, 0x1D06, 0x1D57, 0x1DCC, 0x1E8A,\n    0x1F9B, 0x20DF, 0x2233, 0x2375, 0x2481, 0x2537, 0x2573, 0x2549,\n    0x24E3, 0x246B, 0x240D, 0x23F3, 0x2448, 0x2537, 0x283E, 0x2D4B,\n    0x322C, 0x34B2, 0x3428, 0x31F1, 0x2F01, 0x2C49, 0x2ABE, 0x2A19,\n    0x2979, 0x28DF, 0x2851, 0x27D2, 0x2765, 0x2710, 0x26D5, 0x26B8,\n    0x26BE, 0x26EB, 0x2741, 0x27C6, 0x287D, 0x2A2C, 0x2D33, 0x30FB,\n    0x34EE, 0x3875, 0x3AF9, 0x3BE3, 0x3A62, 0x36B8, 0x31F3, 0x2D1E,\n    0x2945, 0x2774, 0x2704, 0x269D, 0x263D, 0x25E6, 0x2597, 0x254F,\n    0x250E, 0x24D4, 0x24A0, 0x2473, 0x244C, 0x242A, 0x240E, 0x23F7,\n    0x23E5, 0x23D7, 0x23CE, 0x23C9, 0x23C7, 0x23C9, 0x23CE, 0x23D7,\n    0x23E1, 0x23EE, 0x23FE, 0x240F, 0x2421, 0x2435, 0x244A, 0x245F,\n    0x2475, 0x248B, 0x24A1, 0x24B6, 0x24CB, 0x24DE, 0x24F1, 0x2502,\n    0x2511, 0x251E, 0x2528, 0x2530, 0x2535, 0x2537, 0xD64A, 0xD655,\n    0xD66E, 0xD68C, 0xD6A6, 0xD6B1, 0xD6A3, 0xD67C, 0xD644, 0xD601,\n    0xD5B7, 0xD56B, 0xD524, 0xD4E5, 0xD4B5, 0xD497, 0xD488, 0xD483,\n    0xD483, 0xD481, 0xD479, 0xD467, 0xD44F, 0xD434, 0xD41C, 0xD40A,\n    0xD404, 0xD40D, 0xD426, 0xD449, 0xD475, 0xD4A7, 0xD4DC, 0xD512,\n    0xD546, 0xD576, 0xD59E, 0xD5BE, 0xD5D5, 0xD5E1, 0xD5E4, 0xD5D2,\n    0xD5AF, 0xD590, 0xD587, 0xD597, 0xD5B2, 0xD5D4, 0xD5F8, 0xD61A,\n    0xD637, 0xD64A, 0xD644, 0xD622, 0xD5F2, 0xD5C4, 0xD5A7, 0xD5AA,\n    0xD5DB, 0xD64A, 0xD7AC, 0xD9F9, 0xDC27, 0xDD2C, 0xDCA8, 0xDB46,\n    0xD98B, 0xD7FC, 0xD71E, 0xD6CB, 0xD686, 0xD64D, 0xD620, 0xD5FE,\n    0xD5E8, 0xD5DD, 0xD5DB, 0xD5E4, 0xD5F5, 0xD60F, 0xD632, 0xD65C,\n    0xD68E, 0xD6FB, 0xD7BE, 0xD8B3, 0xD9B2, 0xDA97, 0xDB3B, 0xDB78,\n    0xDB23, 0xDA4E, 0xD932, 0xD808, 0xD709, 0xD66E, 0xD61B, 0xD5D1,\n    0xD58F, 0xD555, 0xD522, 0xD4F6, 0xD4D1, 0xD4B1, 0xD497, 0xD482,\n    0xD471, 0xD465, 0xD45D, 0xD458, 0xD456, 0xD457, 0xD45B, 0xD463,\n    0xD46D, 0xD47A, 0xD48A, 0xD49C, 0xD4AF, 0xD4C5, 0xD4DC, 0xD4F4,\n    0xD50C, 0xD526, 0xD540, 0xD55A, 0xD574, 0xD58E, 0xD5A7, 0xD5BF,\n    0xD5D6, 0xD5EC, 0xD600, 0xD612, 0xD622, 0xD630, 0xD63B, 0xD643,\n    0xD648, 0xD64A, 0xEC41, 0xEC31, 0xEC09, 0xEBD2, 0xEB97, 0xEB5F,\n    0xEB36, 0xEB17, 0xEAF8, 0xEADA, 0xEABF, 0xEAA9, 0xEA9A, 0xEA92,\n    0xEA95, 0xEAAA, 0xEAD4, 0xEB0A, 0xEB45, 0xEB7B, 0xEBA5, 0xEBC3,\n    0xEBDD, 0xEBF3, 0xEC08, 0xEC1B, 0xEC2E, 0xEC42, 0xEC55, 0xEC67,\n    0xEC77, 0xEC87, 0xEC98, 0xECAA, 0xECC0, 0xECD9, 0xECF7, 0xED24,\n    0xED63, 0xEDA9, 0xEDEC, 0xEE3C, 0xEE99, 0xEEDE, 0xEEE3, 0xEEA7,\n    0xEE48, 0xEDD5, 0xED5A, 0xECE4, 0xEC82, 0xEC41, 0xEC33, 0xEC55,\n    0xEC90, 0xECCF, 0xECFD, 0xED03, 0xECCB, 0xEC41, 0xEA84, 0xE79F,\n    0xE4D8, 0xE377, 0xE3E8, 0xE55D, 0xE73F, 0xE8F8, 0xE9F2, 0xEA58,\n    0xEAB6, 0xEB0C, 0xEB59, 0xEB9B, 0xEBD1, 0xEBFA, 0xEC14, 0xEC1F,\n    0xEC18, 0xEBFF, 0xEBD2, 0xEB91, 0xEB39, 0xEA6A, 0xE8F3, 0xE71E,\n    0xE533, 0xE37D, 0xE243, 0xE1CF, 0xE27D, 0xE428, 0xE65C, 0xE8A4,\n    0xEA8B, 0xEB9C, 0xEC0E, 0xEC65, 0xECA3, 0xECCC, 0xECE3, 0xECEB,\n    0xECE6, 0xECD7, 0xECC1, 0xECA7, 0xEC8C, 0xEC73, 0xEC5F, 0xEC52,\n    0xEC50, 0xEC53, 0xEC56, 0xEC58, 0xEC5A, 0xEC5B, 0xEC5C, 0xEC5D,\n    0xEC5D, 0xEC5C, 0xEC5C, 0xEC5B, 0xEC5A, 0xEC58, 0xEC57, 0xEC55,\n    0xEC53, 0xEC51, 0xEC4F, 0xEC4D, 0xEC4B, 0xEC4A, 0xEC48, 0xEC46,\n    0xEC45, 0xEC43, 0xEC42, 0xEC41, 0xEC41, 0xEC41, 0xB59E, 0xB58E,\n    0xB567, 0xB536, 0xB507, 0xB4E7, 0xB4E4, 0xB4FA, 0xB51E, 0xB54B,\n    0xB581, 0xB5BC, 0xB5F9, 0xB635, 0xB66E, 0xB6A9, 0xB6EA, 0xB72E,\n    0xB770, 0xB7AD, 0xB7E0, 0xB813, 0xB84B, 0xB881, 0xB8AF, 0xB8CD,\n    0xB8D5, 0xB8C0, 0xB889, 0xB836, 0xB7CF, 0xB75B, 0xB6E3, 0xB670,\n    0xB60A, 0xB5B8, 0xB584, 0xB59E, 0xB60D, 0xB693, 0xB6F5, 0xB72C,\n    0xB756, 0xB769, 0xB75D, 0xB731, 0xB6F0, 0xB6A4, 0xB654, 0xB608,\n    0xB5C9, 0xB59E, 0xB598, 0xB5B6, 0xB5E7, 0xB619, 0xB63C, 0xB63F,\n    0xB610, 0xB59E, 0xB433, 0xB1D5, 0xAF91, 0xAE75, 0xAEDB, 0xB018,\n    0xB1AF, 0xB323, 0xB3F5, 0xB44A, 0xB49A, 0xB4E3, 0xB524, 0xB55B,\n    0xB589, 0xB5AB, 0xB5C0, 0xB5C8, 0xB5C1, 0xB5AA, 0xB582, 0xB547,\n    0xB4FA, 0xB443, 0xB2FC, 0xB162, 0xAFB5, 0xAE36, 0xAD23, 0xACBD,\n    0xAD4D, 0xAEB2, 0xB08E, 0xB283, 0xB433, 0xB53E, 0xB5D1, 0xB656,\n    0xB6D0, 0xB73D, 0xB79F, 0xB7F6, 0xB841, 0xB883, 0xB8BB, 0xB8E9,\n    0xB90E, 0xB92B, 0xB940, 0xB94C, 0xB952, 0xB951, 0xB949, 0xB93B,\n    0xB927, 0xB90F, 0xB8F1, 0xB8D0, 0xB8AB, 0xB882, 0xB857, 0xB82A,\n    0xB7FB, 0xB7CA, 0xB799, 0xB767, 0xB736, 0xB705, 0xB6D6, 0xB6A8,\n    0xB67C, 0xB652, 0xB62C, 0xB609, 0xB5EB, 0xB5D0, 0xB5BB, 0xB5AB,\n    0xB5A2, 0xB59E, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001,\n    0x4171, 0xBF5F, 0x0000, 0x000A, 0x0021, 0x003C, 0x0051, 0x0054,\n    0x003C, 0x0000, 0xFF13, 0xFDA4, 0xFCC4, 0xFC96, 0xFC83, 0xFC86,\n    0xFC99, 0xFCB6, 0xFCD7, 0xFCF7, 0xFD0E, 0xFD18, 0xFD26, 0xFD47,\n    0xFD78, 0xFDB1, 0xFDEE, 0xFE28, 0xFE59, 0xFE7C, 0xFE8B, 0xFE81,\n    0xFE57, 0xFE07, 0xFD8C, 0xFCE1, 0xFBE4, 0xFA86, 0xF8DB, 0xF6F6,\n    0xF4EB, 0xF2CD, 0xF0AF, 0xEEA6, 0xECC4, 0xEB1D, 0xE9C5, 0xE946,\n    0xE9C1, 0xEAA4, 0xEB60, 0xEC06, 0xECAF, 0xECEF, 0xED2A, 0xED70,\n    0xEDB4, 0xEDE7, 0xEDF9, 0xEDDC, 0xED82, 0xECDC, 0xEB0D, 0xE801,\n    0xE4D7, 0xE2AC, 0xE173, 0xE0B1, 0xE0E1, 0xE281, 0xE58D, 0xE979,\n    0xEDEB, 0xF28E, 0xF70A, 0xFB09, 0xFE32, 0x007A, 0x022C, 0x0376,\n    0x0485, 0x0587, 0x06A9, 0x0818, 0x0A02, 0x0DFC, 0x1346, 0x168D,\n    0x178E, 0x1841, 0x18B2, 0x18E9, 0x18F1, 0x18D4, 0x189C, 0x1852,\n    0x1802, 0x17AA, 0x1744, 0x16D0, 0x164D, 0x15BE, 0x1522, 0x147A,\n    0x13C7, 0x1308, 0x123E, 0x116A, 0x108C, 0x0FA5, 0x0E86, 0x0D10,\n    0x0B56, 0x0970, 0x0771, 0x0533, 0x02A0, 0xFFE3, 0xFD24, 0xFA8E,\n    0xF84D, 0xF68A, 0xF571, 0xF4F4, 0xF4E2, 0xF526, 0xF5B0, 0xF66C,\n    0xF749, 0xF834, 0xF91B, 0xF9EC, 0xFA94, 0xFB35, 0xFBF0, 0xFCBA,\n    0xFD87, 0xFE4A, 0xFEF8, 0xFF83, 0xFFDF, 0x0000, 0x0000, 0xFFFF,\n    0xFFFC, 0xFFF9, 0xFFF7, 0xFFF6, 0xFFF9, 0x0000, 0x0017, 0x003E,\n    0x0063, 0x0085, 0x00AA, 0x00D1, 0x00F8, 0x011D, 0x013E, 0x015A,\n    0x016E, 0x0179, 0x017C, 0x017A, 0x0174, 0x016A, 0x015E, 0x014F,\n    0x013F, 0x012F, 0x011F, 0x0110, 0x0103, 0x00F8, 0x00F1, 0x00EE,\n    0x00FB, 0x011B, 0x0142, 0x0160, 0x016A, 0x0151, 0x011D, 0x00E1,\n    0x00AF, 0x009B, 0x00B8, 0x0156, 0x0262, 0x035A, 0x03BB, 0x0292,\n    0x00B6, 0x0010, 0xFFE0, 0xFFCD, 0xFFCF, 0xFFE0, 0xFFFA, 0x0014,\n    0x0029, 0x0031, 0x0035, 0x003A, 0x003B, 0x0031, 0x001A, 0xFFF9,\n    0xFFD3, 0xFFAE, 0xFF89, 0xFF60, 0xFF35, 0xFF0D, 0xFEE8, 0xFEC9,\n    0xFEB3, 0xFEBB, 0xFEE8, 0xFF27, 0xFF63, 0xFF89, 0xFF85, 0xFF45,\n    0xFEB3, 0xFC5B, 0xF8AD, 0xF670, 0xF5F9, 0xF5BD, 0xF5B3, 0xF5D2,\n    0xF611, 0xF667, 0xF6CB, 0xF735, 0xF79B, 0xF808, 0xF88A, 0xF91D,\n    0xF9BB, 0xFA62, 0xFB0D, 0xFBB8, 0xFC5F, 0xFCFD, 0xFD8F, 0xFE10,\n    0xFE7D, 0xFED0, 0xFEBD, 0xFE2D, 0xFD6A, 0xFCC1, 0xFC7C, 0xFC97,\n    0xFCD6, 0xFD30, 0xFD99, 0xFE0A, 0xFE78, 0xFEDA, 0xFF26, 0xFF63,\n    0xFF9E, 0xFFD6, 0x000A, 0x003B, 0x0066, 0x008C, 0x00AB, 0x00C3,\n    0x00D3, 0x00D5, 0x00C6, 0x00AB, 0x0089, 0x0063, 0x003E, 0x001E,\n    0x0008, 0x0000, 0xFC62, 0xFCCC, 0xFDEA, 0xFF8C, 0x017E, 0x0394,\n    0x059A, 0x0761, 0x08FE, 0x0AA2, 0x0C41, 0x0DF8, 0x0FDE, 0x11DC,\n    0x13DA, 0x15BF, 0x1773, 0x18DE, 0x19E8, 0x1A7A, 0x1AA1, 0x1A85,\n    0x1A30, 0x19AC, 0x1903, 0x183F, 0x176B, 0x1690, 0x15B9, 0x14F1,\n    0x1441, 0x13B3, 0x1352, 0x1328, 0x13E3, 0x15A7, 0x17B5, 0x194B,\n    0x19A9, 0x1890, 0x1688, 0x1401, 0x1169, 0x0F2D, 0x0DBD, 0x0DCD,\n    0x0F0D, 0x1061, 0x10AB, 0x0E41, 0x0AC7, 0x0990, 0x0932, 0x090C,\n    0x0910, 0x0932, 0x0963, 0x0997, 0x09C0, 0x09D1, 0x09F2, 0x0A29,\n    0x0A34, 0x09D1, 0x08FE, 0x07DA, 0x0651, 0x044D, 0x01B5, 0xFEA4,\n    0xFB58, 0xF810, 0xF50B, 0xF288, 0xF0C5, 0xEFA5, 0xEEDF, 0xEE6E,\n    0xEE4F, 0xEE7F, 0xEEFA, 0xEFBD, 0xF0C5, 0xF440, 0xF9CB, 0xFD84,\n    0xFEEB, 0x0015, 0x0109, 0x01C8, 0x0258, 0x02BD, 0x02FA, 0x0315,\n    0x030F, 0x02D8, 0x0261, 0x01B9, 0x00EC, 0x0008, 0xFF1A, 0xFE2F,\n    0xFD55, 0xFC98, 0xFC07, 0xFBAE, 0xFB9A, 0xFBDA, 0xFDA9, 0x015C,\n    0x05A6, 0x0938, 0x0AC5, 0x0A50, 0x08EE, 0x06E8, 0x0486, 0x0213,\n    0xFFD8, 0xFE1C, 0xFD28, 0xFCEE, 0xFD1F, 0xFDA2, 0xFE60, 0xFF40,\n    0x002A, 0x0109, 0x01C2, 0x023F, 0x0267, 0x022A, 0x0198, 0x00C9,\n    0xFFD8, 0xFEDA, 0xFDEB, 0xFD21, 0xFC96, 0xFC62, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0013, 0x003F, 0x0072, 0x0098, 0x009E, 0x0072,\n    0x0000, 0xFF48, 0xFE5C, 0xFD48, 0xFC19, 0xFAD9, 0xF994, 0xF856,\n    0xF72B, 0xF694, 0xF686, 0xF666, 0xF63F, 0xF61B, 0xF606, 0xF60C,\n    0xF637, 0xF694, 0xF75B, 0xF8A8, 0xFA54, 0xFC38, 0xFEB5, 0x01BA,\n    0x047C, 0x062A, 0x06E6, 0x075C, 0x078F, 0x077E, 0x072D, 0x069D,\n    0x05CE, 0x04C1, 0x037C, 0x0209, 0x0073, 0xFEC7, 0xFD0E, 0xFB54,\n    0xF9A4, 0xF809, 0xF68E, 0xF53F, 0xF466, 0xF446, 0xF4E0, 0xF680,\n    0xF8DB, 0xFB13, 0xFD1C, 0xFF02, 0x000B, 0x0060, 0x00A4, 0x00D9,\n    0x0100, 0x011B, 0x012B, 0x0132, 0x0131, 0x012A, 0x011F, 0x0110,\n    0x00FF, 0x00EE, 0x00B3, 0x003A, 0xFFAC, 0xFF2D, 0xFEE5, 0xFEC9,\n    0xFEB4, 0xFEA6, 0xFE9D, 0xFE9A, 0xFE9B, 0xFEA0, 0xFEA7, 0xFEB1,\n    0xFEBB, 0xFEC7, 0xFED2, 0xFEE2, 0xFEF9, 0xFF15, 0xFF36, 0xFF58,\n    0xFF7A, 0xFF9B, 0xFFB7, 0xFFCF, 0xFFE1, 0xFFEE, 0xFFF7, 0xFFFD,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x001D,\n    0x0034, 0x0046, 0x0049, 0x0034, 0x0000, 0xFFAB, 0xFF3E, 0xFEBE,\n    0xFE32, 0xFD9E, 0xFD07, 0xFC74, 0xFBEA, 0xFBA4, 0xFB8D, 0xFB57,\n    0xFB14, 0xFAD7, 0xFAB4, 0xFABD, 0xFB07, 0xFBA4, 0xFDD1, 0x0170,\n    0x0490, 0x0539, 0x01A5, 0xFB4B, 0xF511, 0xF1E2, 0xF1FA, 0xF35A,\n    0xF58E, 0xF821, 0xFAA0, 0xFC97, 0xFD92, 0xFDC9, 0xFDC6, 0xFD8F,\n    0xFD2C, 0xFCA4, 0xFBFF, 0xFB45, 0xFA7C, 0xF9AC, 0xF8DC, 0xF814,\n    0xF658, 0xF3FC, 0xF2F8, 0xF475, 0xF74C, 0xFA03, 0xFC7F, 0xFEDC,\n    0xFFF3, 0xFFF4, 0xFFD3, 0xFF95, 0xFF40, 0xFED7, 0xFE60, 0xFDE0,\n    0xFD5C, 0xFCD9, 0xFC5C, 0xFBE9, 0xFB86, 0xFB37, 0xFB07, 0xFAF6,\n    0xFAFF, 0xFB1A, 0xFB41, 0xFB6D, 0xFBA0, 0xFBD7, 0xFC12, 0xFC50,\n    0xFC8F, 0xFCD0, 0xFD10, 0xFD4F, 0xFD8C, 0xFDC6, 0xFDFB, 0xFE2D,\n    0xFE5D, 0xFE8A, 0xFEB6, 0xFEDF, 0xFF07, 0xFF2D, 0xFF51, 0xFF75,\n    0xFF97, 0xFFB7, 0xFFD4, 0xFFEC, 0xFFFB, 0x0000, 0x0884, 0x0872,\n    0x0848, 0x0818, 0x07F5, 0x07EF, 0x0818, 0x0884, 0x0ABF, 0x0DDD,\n    0x0E38, 0x0AE4, 0x05FB, 0x005F, 0xFAF3, 0xF697, 0xF3A6, 0xF197,\n    0xF000, 0xEE71, 0xECBA, 0xEB1B, 0xE9D5, 0xE925, 0xE96C, 0xEA6B,\n    0xEB7F, 0xEC00, 0xEB09, 0xE932, 0xE80C, 0xE925, 0xEEC9, 0xF781,\n    0xFF42, 0x01FF, 0xFF3E, 0xF9E5, 0xF300, 0xEB9C, 0xE4C5, 0xDF86,\n    0xDCEC, 0xDCCC, 0xDE11, 0xE070, 0xE399, 0xE73E, 0xEB12, 0xEEC6,\n    0xF20C, 0xF38B, 0xF370, 0xF32F, 0xF2DF, 0xF296, 0xF26C, 0xF277,\n    0xF2CF, 0xF38B, 0xF5FB, 0xFA0B, 0xFDBB, 0xFF09, 0xFC7A, 0xF771,\n    0xF238, 0xEF1D, 0xEE21, 0xEDB3, 0xEDBC, 0xEE28, 0xEEE0, 0xEFCF,\n    0xF0DF, 0xF217, 0xF385, 0xF51F, 0xF6DA, 0xF8AC, 0xFA8B, 0xFC6C,\n    0xFE44, 0x0009, 0x01B2, 0x0333, 0x0434, 0x0496, 0x04A7, 0x046D,\n    0x03E3, 0x0342, 0x02A3, 0x01EE, 0x0116, 0x0010, 0xFEE2, 0xFD96,\n    0xFC39, 0xFAD6, 0xF979, 0xF82E, 0xF6FF, 0xF5FA, 0xF528, 0xF497,\n    0xF450, 0xF461, 0xF60F, 0xF9CF, 0xFE71, 0x02C4, 0x059B, 0x074B,\n    0x08EE, 0x0A7E, 0x0BF5, 0x0D4D, 0x0E80, 0x0F88, 0x105F, 0x10FD,\n    0x115E, 0x117C, 0x114F, 0x1078, 0x0EC5, 0x0C72, 0x09BC, 0x06E0,\n    0x041B, 0x01AB, 0xFFCC, 0xFEBB, 0xFF0C, 0x00BE, 0x032E, 0x05B7,\n    0x07B5, 0x0884, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0002,\n    0x000A, 0x0015, 0x0022, 0x0031, 0x0040, 0x004D, 0x0058, 0x0060,\n    0x0063, 0x0060, 0x0055, 0x0043, 0x0026, 0x0000, 0xFF9C, 0xFEE5,\n    0xFE0A, 0xFD35, 0xFC95, 0xFC56, 0xFC84, 0xFCFC, 0xFDA3, 0xFE5F,\n    0xFF14, 0xFFA8, 0x0000, 0x0029, 0x0044, 0x0053, 0x0057, 0x0054,\n    0x004A, 0x003C, 0x002B, 0x001B, 0x000D, 0x0003, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x40A1, 0x40AD,\n    0x40CF, 0x4100, 0x413C, 0x417C, 0x41BB, 0x41F4, 0x4221, 0x423D,\n    0x4242, 0x4233, 0x4219, 0x41F4, 0x41C7, 0x4193, 0x415B, 0x4121,\n    0x40E5, 0x40AB, 0x4074, 0x4041, 0x4015, 0x3FF1, 0x3FD8, 0x3FCB,\n    0x3FCC, 0x3FEB, 0x402E, 0x408D, 0x40FF, 0x417A, 0x41F5, 0x4266,\n    0x42C5, 0x4308, 0x4325, 0x42E4, 0x423A, 0x4167, 0x40A9, 0x403F,\n    0x401E, 0x4010, 0x4011, 0x401E, 0x4033, 0x404D, 0x4069, 0x4082,\n    0x4096, 0x40A1, 0x40A7, 0x40AC, 0x40B1, 0x40B4, 0x40B4, 0x40B2,\n    0x40AC, 0x40A1, 0x4090, 0x4078, 0x405B, 0x403C, 0x401C, 0x3FFE,\n    0x3FE3, 0x3FCD, 0x3FBF, 0x3FB6, 0x3FAF, 0x3FA8, 0x3FA3, 0x3F9E,\n    0x3F9B, 0x3F9A, 0x3F99, 0x3F9A, 0x3F9D, 0x3FA0, 0x3FA6, 0x3FAD,\n    0x3FB5, 0x3FBF, 0x3FD8, 0x4004, 0x403A, 0x406E, 0x4095, 0x40A5,\n    0x409C, 0x4085, 0x4063, 0x403A, 0x400F, 0x3FE4, 0x3FBF, 0x3F9B,\n    0x3F72, 0x3F46, 0x3F18, 0x3EEA, 0x3EBE, 0x3E95, 0x3E70, 0x3E52,\n    0x3E3C, 0x3E30, 0x3E2F, 0x3E36, 0x3E40, 0x3E4D, 0x3E5C, 0x3E6D,\n    0x3E81, 0x3E97, 0x3EAE, 0x3EC7, 0x3EE1, 0x3EFC, 0x3F18, 0x3F34,\n    0x3F51, 0x3F6E, 0x3F8B, 0x3FA8, 0x3FC4, 0x3FDF, 0x3FFA, 0x4013,\n    0x402B, 0x4042, 0x4056, 0x4069, 0x4079, 0x4087, 0x4092, 0x409A,\n    0x409F, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_32.inc.c",
    "content": "static const struct Animation anim_32[] = {\n    1,\n    189,\n    0,\n    0,\n    0x60,\n    ANIMINDEX_NUMPARTS(anim_32_indices),\n    anim_32_values,\n    anim_32_indices,\n    0,\n};\n\n\nstatic const u16 anim_32_indices[] = {\n    0x0060, 0x0001, 0x0060, 0x0061, 0x0060, 0x00C1, 0x0001, 0x0000, 0x0001, 0x0121, 0x0001, 0x0000,\n    0x0060, 0x0E49, 0x0060, 0x0EA9, 0x0060, 0x0F09,\n    0x0060, 0x0D29, 0x0060, 0x0D89, 0x0060, 0x0DE9,\n    0x0060, 0x0C09, 0x0060, 0x0C69, 0x0060, 0x0CC9,\n    0x0001, 0x0BA6, 0x0001, 0x0BA7, 0x0001, 0x0BA8,\n    0x0060, 0x02A2, 0x0060, 0x0302, 0x0060, 0x0362,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0060, 0x0242,\n    0x0060, 0x0122, 0x0060, 0x0182, 0x0060, 0x01E2,\n    0x0001, 0x0BA2, 0x0001, 0x0BA3, 0x0001, 0x0BA4,\n    0x0060, 0x0542, 0x0060, 0x05A2, 0x0060, 0x0602,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0060, 0x04E2,\n    0x0060, 0x03C2, 0x0060, 0x0422, 0x0060, 0x0482,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0BA5,\n    0x0060, 0x0A82, 0x0060, 0x0AE2, 0x0060, 0x0B42,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0060, 0x0A22,\n    0x0060, 0x0902, 0x0060, 0x0962, 0x0060, 0x09C2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0060, 0x0BA9,\n    0x0060, 0x07E2, 0x0060, 0x0842, 0x0060, 0x08A2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0060, 0x0782,\n    0x0060, 0x0662, 0x0060, 0x06C2, 0x0060, 0x0722,\n};\n\nstatic const s16 anim_32_values[] = {\n    0x0000, 0xFFE7, 0xFFE7, 0xFFE5, 0xFFE3, 0xFFE0, 0xFFDD, 0xFFDA,\n    0xFFD8, 0xFFD5, 0xFFD3, 0xFFD2, 0xFFD2, 0xFFD2, 0xFFD4, 0xFFD6,\n    0xFFD9, 0xFFDC, 0xFFDF, 0xFFE2, 0xFFE6, 0xFFE9, 0xFFEC, 0xFFEE,\n    0xFFF0, 0xFFF1, 0xFFF2, 0xFFF1, 0xFFF0, 0xFFED, 0xFFE9, 0xFFE5,\n    0xFFDF, 0xFFDA, 0xFFD4, 0xFFCE, 0xFFC8, 0xFFC3, 0xFFBE, 0xFFB9,\n    0xFFB5, 0xFFB3, 0xFFB1, 0xFFB1, 0xFFB2, 0xFFB4, 0xFFB6, 0xFFB9,\n    0xFFBD, 0xFFC2, 0xFFC7, 0xFFCC, 0xFFD2, 0xFFD7, 0xFFDD, 0xFFE3,\n    0xFFE8, 0xFFEE, 0xFFF3, 0xFFF8, 0xFFFD, 0x0000, 0x0002, 0x0001,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x00A0, 0x00A1, 0x00A2, 0x00A4, 0x00A6, 0x00A9, 0x00AC,\n    0x00AF, 0x00B2, 0x00B4, 0x00B6, 0x00B8, 0x00B9, 0x00B9, 0x00BA,\n    0x00BB, 0x00BB, 0x00BC, 0x00BC, 0x00BC, 0x00BC, 0x00BC, 0x00BC,\n    0x00BD, 0x00BD, 0x00BD, 0x00BD, 0x00BD, 0x00BE, 0x00BE, 0x00BE,\n    0x00BF, 0x00BF, 0x00C0, 0x00C0, 0x00C0, 0x00C1, 0x00C1, 0x00C1,\n    0x00C0, 0x00C0, 0x00BF, 0x00BE, 0x00BD, 0x00BB, 0x00B8, 0x00B6,\n    0x00B3, 0x00B0, 0x00AD, 0x00AA, 0x00A7, 0x00A4, 0x00A1, 0x009E,\n    0x009C, 0x009A, 0x0098, 0x0097, 0x0096, 0x0096, 0x009D, 0x00AD,\n    0x00BD, 0x00C6, 0x00C2, 0x00B7, 0x00B0, 0x00B4, 0x00BD, 0x00C3,\n    0x00C1, 0x00B6, 0x009F, 0x0084, 0x0069, 0x0051, 0x003F, 0x003F,\n    0x004B, 0x0053, 0x004E, 0x0045, 0x003F, 0x0040, 0x0045, 0x0047,\n    0x0043, 0x003E, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B, 0x003B,\n    0x003B, 0x0000, 0x0000, 0xFFFE, 0xFFFB, 0xFFF7, 0xFFF3, 0xFFEF,\n    0xFFEB, 0xFFE7, 0xFFE5, 0xFFE4, 0xFFE4, 0xFFE6, 0xFFE9, 0xFFED,\n    0xFFF1, 0xFFF7, 0xFFFC, 0x0001, 0x0007, 0x000C, 0x0012, 0x0016,\n    0x001A, 0x001D, 0x001F, 0x001F, 0x001E, 0x001C, 0x0019, 0x0015,\n    0x0010, 0x000B, 0x0005, 0x0000, 0xFFFA, 0xFFF5, 0xFFEF, 0xFFEA,\n    0xFFE5, 0xFFE2, 0xFFDF, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFDF,\n    0xFFE0, 0xFFE2, 0xFFE4, 0xFFE7, 0xFFE9, 0xFFEC, 0xFFEF, 0xFFF2,\n    0xFFF5, 0xFFF8, 0xFFFA, 0xFFFD, 0xFFFF, 0x0000, 0x0001, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x3FFF, 0x0000, 0xFFF1, 0xFFC7, 0xFF88, 0xFF38, 0xFEDF,\n    0xFE81, 0xFE23, 0xFDCC, 0xFD81, 0xFD40, 0xFD04, 0xFCCD, 0xFC99,\n    0xFC67, 0xFC36, 0xFC05, 0xFBD4, 0xFBA0, 0xFB6A, 0xFB30, 0xFAF2,\n    0xFAAE, 0xFA62, 0xFA10, 0xF9B4, 0xF94F, 0xF8DF, 0xF853, 0xF79F,\n    0xF6CC, 0xF5E3, 0xF4EB, 0xF3EF, 0xF2F5, 0xF208, 0xF12F, 0xF074,\n    0xEFDE, 0xEF77, 0xEF46, 0xEF4E, 0xEF82, 0xEFDE, 0xF05B, 0xF0F2,\n    0xF19C, 0xF254, 0xF311, 0xF3CF, 0xF486, 0xF530, 0xF5C6, 0xF642,\n    0xF69E, 0xF6D1, 0xF6D7, 0xF5E8, 0xF3A9, 0xF0BE, 0xEDC7, 0xEA89,\n    0xE6BD, 0xE2F9, 0xDFD0, 0xDDD7, 0xDC49, 0xDA4E, 0xD858, 0xD6D7,\n    0xD63E, 0xD6FD, 0xD986, 0xDE4B, 0xF21A, 0x1088, 0x2033, 0x1644,\n    0x004B, 0xE97C, 0xDD09, 0xD9F4, 0xD7B9, 0xD63F, 0xD56E, 0xD52E,\n    0xD566, 0xD5FF, 0xD6E0, 0xD7F2, 0xD91B, 0xDA45, 0xDB56, 0xDC38,\n    0xDCD0, 0xDD09, 0xFB85, 0xFB91, 0xFBB2, 0xFBE0, 0xFC16, 0xFC4D,\n    0xFC7E, 0xFCA5, 0xFCBA, 0xFCB6, 0xFC9F, 0xFC7E, 0xFC54, 0xFC23,\n    0xFBEC, 0xFBB1, 0xFB73, 0xFB33, 0xFAF4, 0xFAB6, 0xFA7B, 0xFA45,\n    0xFA14, 0xF9EB, 0xF9CB, 0xF9B5, 0xF9AB, 0xF9AF, 0xF9D7, 0xFA32,\n    0xFAB4, 0xFB51, 0xFBFE, 0xFCAE, 0xFD56, 0xFDE9, 0xFE5C, 0xFEA3,\n    0xFEB2, 0xFE7D, 0xFDF8, 0xFD2A, 0xFC27, 0xFAF4, 0xF997, 0xF818,\n    0xF67D, 0xF4CB, 0xF309, 0xF13D, 0xEF6D, 0xEDA0, 0xEBDC, 0xEA28,\n    0xE888, 0xE705, 0xE5A3, 0xE41C, 0xE2B8, 0xE257, 0xE3D9, 0xE81A,\n    0xEE60, 0xF52C, 0xFAFF, 0xFE5C, 0xFFB3, 0x0072, 0x009F, 0x003A,\n    0xFF45, 0xFDC1, 0xFBB1, 0xF917, 0xF19E, 0xE636, 0xDECE, 0xDE41,\n    0xE0B0, 0xE3E7, 0xE5B4, 0xE605, 0xE640, 0xE666, 0xE67C, 0xE683,\n    0xE67D, 0xE66D, 0xE656, 0xE63A, 0xE61B, 0xE5FD, 0xE5E1, 0xE5C9,\n    0xE5BA, 0xE5B4, 0xEA99, 0xEB3C, 0xECF1, 0xEF6D, 0xF263, 0xF585,\n    0xF888, 0xFB1E, 0xFCFA, 0xFDD1, 0xFDE3, 0xFDAD, 0xFD36, 0xFC89,\n    0xFBAE, 0xFAAF, 0xF995, 0xF868, 0xF733, 0xF5FF, 0xF4D4, 0xF3BC,\n    0xF2C0, 0xF1E9, 0xF141, 0xF0D0, 0xF0A1, 0xF0BB, 0xF15B, 0xF29F,\n    0xF467, 0xF691, 0xF8FB, 0xFB86, 0xFE0E, 0x0073, 0x0295, 0x0452,\n    0x0588, 0x0616, 0x05DC, 0x04F1, 0x038F, 0x01C4, 0xFF9E, 0xFD29,\n    0xFA74, 0xF78C, 0xF480, 0xF15D, 0xEE31, 0xEB0A, 0xE7F6, 0xE502,\n    0xE23C, 0xDFB2, 0xDD73, 0xDB60, 0xD9E5, 0xD9DC, 0xDC1C, 0xE193,\n    0xE975, 0xF20F, 0xF9AA, 0xFE90, 0x016A, 0x03EC, 0x05ED, 0x0744,\n    0x07C7, 0x074F, 0x05B2, 0x02C8, 0xF71E, 0xE414, 0xD6BC, 0xD36F,\n    0xD42A, 0xD672, 0xD7CB, 0xD7D7, 0xD7E0, 0xD7E6, 0xD7E9, 0xD7EA,\n    0xD7EA, 0xD7E7, 0xD7E4, 0xD7DF, 0xD7DB, 0xD7D6, 0xD7D2, 0xD7CE,\n    0xD7CC, 0xD7CB, 0xE44C, 0xE458, 0xE479, 0xE4B0, 0xE4FA, 0xE556,\n    0xE5C3, 0xE640, 0xE6CA, 0xE762, 0xE806, 0xE8B4, 0xE96B, 0xEA29,\n    0xEAEE, 0xEBB8, 0xEC86, 0xED57, 0xEE28, 0xEEFA, 0xEFCA, 0xF097,\n    0xF160, 0xF223, 0xF2E0, 0xF3B5, 0xF4B9, 0xF5DC, 0xF710, 0xF848,\n    0xF974, 0xFA87, 0xFB72, 0xFC69, 0xFD91, 0xFEC3, 0xFFD8, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xFDD9, 0xFA56, 0xF5FE, 0xF157, 0xECE9,\n    0xE939, 0xE5B7, 0xE1D9, 0xDE33, 0xDB59, 0xD9DD, 0xDA53, 0xDCD1,\n    0xE0C2, 0xE5BF, 0xEB5E, 0xF136, 0xF6DF, 0xFBF0, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0xFCA1, 0xF821, 0xF2DB, 0xED24, 0xE754, 0xE1C4, 0xDCCA, 0xD8BE,\n    0xD5F9, 0xD4D1, 0xD506, 0xD60C, 0xD7C5, 0xDA14, 0xDCDC, 0xDFFF,\n    0xE360, 0xE6E2, 0xEA68, 0xEDD4, 0xF10A, 0xF3EC, 0xF65D, 0xF83F,\n    0xF976, 0xF9E4, 0x330E, 0x3348, 0x33E9, 0x34DF, 0x3616, 0x377D,\n    0x3901, 0x3A8E, 0x3C13, 0x3D7C, 0x3EB7, 0x3FB1, 0x408A, 0x416B,\n    0x424F, 0x432F, 0x4406, 0x44CF, 0x4584, 0x461F, 0x469A, 0x46F0,\n    0x471C, 0x4717, 0x46DC, 0x461E, 0x44AE, 0x42B6, 0x4062, 0x3DDA,\n    0x3B48, 0x38D8, 0x363D, 0x333E, 0x301F, 0x2D25, 0x2A96, 0x28B5,\n    0x27DD, 0x27EB, 0x286C, 0x28EA, 0x28F3, 0x287F, 0x27DF, 0x2724,\n    0x2661, 0x25A6, 0x2504, 0x248F, 0x2525, 0x2686, 0x270B, 0x2512,\n    0x1F2E, 0x1693, 0x0D8D, 0x0669, 0x00EF, 0xFB9C, 0xF6C7, 0xF2CA,\n    0xEFFE, 0xEEBA, 0xEE65, 0xEE29, 0xEE04, 0xEDF4, 0xEDF9, 0xEE10,\n    0xEE39, 0xEE72, 0xEEBA, 0xEF0E, 0xEF6E, 0xEFD9, 0xF04C, 0xF0C7,\n    0xF147, 0xF1CC, 0xF254, 0xF2DE, 0xF367, 0xF3F0, 0xF476, 0xF4F8,\n    0xF574, 0xF5E9, 0xF656, 0xF6B9, 0xF710, 0xF75B, 0xF798, 0xF7C5,\n    0xF7E2, 0xF7EB, 0xDEDB, 0xDF54, 0xE0A6, 0xE2A3, 0xE524, 0xE7FC,\n    0xEB02, 0xEE0C, 0xF0EE, 0xF37F, 0xF593, 0xF702, 0xF7F5, 0xF8B7,\n    0xF94C, 0xF9B6, 0xF9F8, 0xFA17, 0xFA15, 0xF9F6, 0xF9BC, 0xF96C,\n    0xF908, 0xF894, 0xF813, 0xF744, 0xF5F7, 0xF44C, 0xF265, 0xF062,\n    0xEE61, 0xEC85, 0xEA82, 0xE82B, 0xE5C9, 0xE3A9, 0xE215, 0xE157,\n    0xE1CF, 0xE35C, 0xE58D, 0xE7ED, 0xEA09, 0xEC17, 0xEE73, 0xF0E7,\n    0xF33A, 0xF535, 0xF6A2, 0xF748, 0xF60D, 0xF2E1, 0xEF1F, 0xEC21,\n    0xEA0A, 0xE834, 0xE6CD, 0xE601, 0xE5C8, 0xE5EA, 0xE64A, 0xE6CC,\n    0xE751, 0xE7BE, 0xE816, 0xE874, 0xE8D7, 0xE93E, 0xE9A9, 0xEA17,\n    0xEA87, 0xEAFA, 0xEB6E, 0xEBE3, 0xEC58, 0xECCE, 0xED43, 0xEDB6,\n    0xEE29, 0xEE99, 0xEF06, 0xEF70, 0xEFD7, 0xF039, 0xF096, 0xF0EE,\n    0xF140, 0xF18C, 0xF1D1, 0xF20E, 0xF244, 0xF270, 0xF294, 0xF2AE,\n    0xF2BF, 0xF2C4, 0x9EEF, 0x9EA9, 0x9DE6, 0x9CBE, 0x9B46, 0x9995,\n    0x97C2, 0x95E4, 0x9412, 0x9262, 0x90EB, 0x8FC3, 0x8EC7, 0x8DC6,\n    0x8CC7, 0x8BCD, 0x8AE0, 0x8A04, 0x893F, 0x8895, 0x880D, 0x87AC,\n    0x8778, 0x8774, 0x87A8, 0x8872, 0x8A09, 0x8C32, 0x8EB5, 0x9158,\n    0x93E2, 0x961A, 0x986A, 0x9B1C, 0x9DC6, 0x9FFF, 0xA15C, 0xA175,\n    0x9F53, 0x9B1E, 0x9619, 0x9187, 0x8EA9, 0x8D64, 0x8CB1, 0x8C77,\n    0x8C9E, 0x8D0D, 0x8DAB, 0x8E5F, 0x8F00, 0x9004, 0x923E, 0x9683,\n    0x9DFB, 0xA7E5, 0xB235, 0xBADD, 0xC257, 0xCA0A, 0xD14E, 0xD77C,\n    0xDBEC, 0xDDF5, 0xDE80, 0xDEE8, 0xDF2F, 0xDF57, 0xDF62, 0xDF52,\n    0xDF28, 0xDEE7, 0xDE92, 0xDE29, 0xDDAF, 0xDD26, 0xDC90, 0xDBEF,\n    0xDB46, 0xDA95, 0xD9DF, 0xD927, 0xD86D, 0xD7B5, 0xD6FF, 0xD64F,\n    0xD5A7, 0xD507, 0xD472, 0xD3EB, 0xD373, 0xD30D, 0xD2B9, 0xD27B,\n    0xD254, 0xD247, 0x0003, 0xFFEE, 0xFFB2, 0xFF58, 0xFEE9, 0xFE6D,\n    0xFDEB, 0xFD6E, 0xFCFC, 0xFC9E, 0xFC5D, 0xFC39, 0xFC29, 0xFC29,\n    0xFC34, 0xFC45, 0xFC56, 0xFC64, 0xFC68, 0xFC5F, 0xFC43, 0xFC14,\n    0xFBD6, 0xFB8D, 0xFB3B, 0xFAE3, 0xFA89, 0xFA2F, 0xF9D8, 0xF987,\n    0xF93E, 0xF902, 0xF8D5, 0xF8B9, 0xF8B2, 0xF8C3, 0xF8EC, 0xF929,\n    0xF977, 0xF9D3, 0xFA39, 0xFAA5, 0xFB15, 0xFB84, 0xFBEF, 0xFC53,\n    0xFCAC, 0xFD00, 0xFD54, 0xFDA8, 0xFDFC, 0xFE4F, 0xFE9F, 0xFEEC,\n    0xFF35, 0xFF7A, 0xFFBD, 0xFFFF, 0x003C, 0x0073, 0x00A0, 0x00C0,\n    0x00D0, 0x00D2, 0x00CA, 0x00BB, 0x00A6, 0x008D, 0x0072, 0x0056,\n    0x003C, 0x0024, 0x0011, 0x0004, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xF639, 0xF643, 0xF65D, 0xF686, 0xF6BB, 0xF6FA,\n    0xF740, 0xF78C, 0xF7DA, 0xF829, 0xF877, 0xF8CA, 0xF92A, 0xF992,\n    0xFA00, 0xFA6E, 0xFADA, 0xFB3F, 0xFB99, 0xFBE5, 0xFC1D, 0xFC43,\n    0xFC5A, 0xFC65, 0xFC67, 0xFC62, 0xFC59, 0xFC4E, 0xFC46, 0xFC41,\n    0xFC44, 0xFC51, 0xFC6A, 0xFC92, 0xFCCC, 0xFD21, 0xFD93, 0xFE1C,\n    0xFEB6, 0xFF5B, 0x0004, 0x00AC, 0x014D, 0x01E0, 0x025F, 0x02C5,\n    0x030A, 0x0325, 0x0316, 0x02E5, 0x029B, 0x0243, 0x01E5, 0x018A,\n    0x013C, 0x0103, 0x00D0, 0x0094, 0x005A, 0x002D, 0x0018, 0x0025,\n    0x0060, 0x00CA, 0x015A, 0x0206, 0x02C5, 0x038F, 0x045A, 0x051E,\n    0x05D3, 0x066E, 0x06E9, 0x0738, 0x0755, 0x0755, 0x0755, 0x0755,\n    0x0755, 0x0755, 0x0755, 0x0755, 0x0755, 0x0755, 0x0755, 0x0755,\n    0x0755, 0x0755, 0x0755, 0x0755, 0x0755, 0x0755, 0x0755, 0x0755,\n    0x0755, 0x0755, 0xECA2, 0xED0B, 0xEE2E, 0xEFE3, 0xF204, 0xF46B,\n    0xF6EF, 0xF96B, 0xFBB8, 0xFDB0, 0xFF2B, 0x0065, 0x01AA, 0x02E6,\n    0x0406, 0x04F8, 0x05A7, 0x0603, 0x05F7, 0x0571, 0x045D, 0x02A8,\n    0x0059, 0xFD90, 0xFA64, 0xF6F5, 0xF35D, 0xEFBA, 0xEC26, 0xE8BF,\n    0xE5A0, 0xE2E5, 0xE0AA, 0xDF0D, 0xDE27, 0xDE21, 0xDEF4, 0xE07D,\n    0xE29A, 0xE525, 0xE7FC, 0xEAFA, 0xEDFD, 0xF0E0, 0xF380, 0xF5BA,\n    0xF769, 0xF881, 0xF922, 0xF96C, 0xF97E, 0xF977, 0xF978, 0xF99E,\n    0xFA0B, 0xFADD, 0xFCA8, 0xFF83, 0x02D2, 0x05F8, 0x0859, 0x0957,\n    0x0855, 0x0564, 0x012A, 0xFBF5, 0xF60C, 0xEFBD, 0xE953, 0xE317,\n    0xDD55, 0xD858, 0xD46B, 0xD1DA, 0xD0EE, 0xD0EE, 0xD0EE, 0xD0EE,\n    0xD0EE, 0xD0EE, 0xD0EE, 0xD0EE, 0xD0EE, 0xD0EE, 0xD0EE, 0xD0EE,\n    0xD0EE, 0xD0EE, 0xD0EE, 0xD0EE, 0xD0EE, 0xD0EE, 0xD0EE, 0xD0EE,\n    0xD0EE, 0xD0EE, 0xE6BE, 0xE70A, 0xE7DD, 0xE91D, 0xEAB2, 0xEC80,\n    0xEE6E, 0xF063, 0xF246, 0xF3FB, 0xF56A, 0xF6BB, 0xF81E, 0xF987,\n    0xFAE9, 0xFC39, 0xFD6A, 0xFE70, 0xFF3D, 0xFFC7, 0x0000, 0xFFE9,\n    0xFF8F, 0xFEFD, 0xFE3F, 0xFD60, 0xFC6A, 0xFB68, 0xFA65, 0xF96C,\n    0xF888, 0xF7C3, 0xF72A, 0xF6C5, 0xF6A2, 0xF6C8, 0xF734, 0xF7D8,\n    0xF8AA, 0xF99D, 0xFAA6, 0xFBB8, 0xFCC7, 0xFDC9, 0xFEB0, 0xFF71,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xFBAC, 0xF4E6, 0xED19, 0xE5B2, 0xE01E, 0xDDC7, 0xE001,\n    0xE5ED, 0xEDAA, 0xF55B, 0xFB1F, 0xFD19, 0xF448, 0xE3C8, 0xD8E4,\n    0xDAF6, 0xE2A4, 0xE726, 0xE726, 0xE726, 0xE726, 0xE726, 0xE726,\n    0xE726, 0xE726, 0xE726, 0xE726, 0xE726, 0xE726, 0xE726, 0xE726,\n    0xE726, 0xE726, 0xDCCB, 0xDCD0, 0xDCDD, 0xDCF2, 0xDD0C, 0xDD2A,\n    0xDD4C, 0xDD6F, 0xDD91, 0xDDB3, 0xDDD1, 0xDDF4, 0xDE1E, 0xDE4C,\n    0xDE77, 0xDE99, 0xDEAE, 0xDEAF, 0xDE8D, 0xDE43, 0xDDD8, 0xDD56,\n    0xDCC4, 0xDC2A, 0xDB91, 0xDB01, 0xDA82, 0xDA1C, 0xD9D9, 0xD9BF,\n    0xD9D7, 0xDA29, 0xDABE, 0xDB9E, 0xDCD2, 0xDE9D, 0xE12B, 0xE458,\n    0xE801, 0xEC04, 0xF03E, 0xF48C, 0xF8CB, 0xFCD8, 0x0091, 0x03D3,\n    0x067C, 0x08F2, 0x0B8A, 0x0E08, 0x102E, 0x11BE, 0x127D, 0x122C,\n    0x108E, 0x0D67, 0x08A6, 0x028C, 0xFB58, 0xF345, 0xEA90, 0xE177,\n    0xD837, 0xCF0C, 0xC633, 0xBDEA, 0xB66C, 0xAEF7, 0xA808, 0xA3C0,\n    0xA440, 0xA9AD, 0xB23A, 0xBD21, 0xC999, 0xD6DC, 0xEA70, 0x01A7,\n    0x0F6E, 0x127C, 0x12C6, 0x1112, 0x0E25, 0x0AC7, 0x07BD, 0x05CE,\n    0x049F, 0x035D, 0x0214, 0x00D0, 0xFF9E, 0xFE88, 0xFD9B, 0xFCE2,\n    0xFC6B, 0xFC40, 0x16C7, 0x16C6, 0x16C2, 0x16BD, 0x16B5, 0x16AA,\n    0x169D, 0x168D, 0x167B, 0x1666, 0x164E, 0x1646, 0x1656, 0x1667,\n    0x1665, 0x163A, 0x15D0, 0x1513, 0x13FF, 0x12A3, 0x110F, 0x0F4F,\n    0x0D6F, 0x0B7D, 0x0987, 0x0798, 0x05BF, 0x0408, 0x0280, 0x0134,\n    0x0032, 0xFF87, 0xFF3E, 0xFF66, 0x000B, 0x019E, 0x0461, 0x0819,\n    0x0C8C, 0x1181, 0x16BF, 0x1C0A, 0x2129, 0x25E3, 0x29FE, 0x2D40,\n    0x2F6F, 0x303B, 0x2FB1, 0x2E22, 0x2BDE, 0x2937, 0x267D, 0x2401,\n    0x2213, 0x2105, 0x20A8, 0x2092, 0x20B7, 0x210E, 0x2189, 0x2220,\n    0x22C6, 0x2372, 0x2416, 0x24AA, 0x2521, 0x257A, 0x25CE, 0x2642,\n    0x26FA, 0x28CE, 0x2BA2, 0x2E2B, 0x2F1E, 0x2D2F, 0x228D, 0x124E,\n    0x0883, 0x0714, 0x0785, 0x0951, 0x0BF5, 0x0EEA, 0x11AE, 0x13BC,\n    0x1561, 0x1735, 0x1924, 0x1B17, 0x1CF9, 0x1EB4, 0x2032, 0x215E,\n    0x2221, 0x2267, 0x90BE, 0x90C0, 0x90C7, 0x90D2, 0x90DF, 0x90EE,\n    0x90FC, 0x910A, 0x9116, 0x911E, 0x9123, 0x9138, 0x9165, 0x9196,\n    0x91B6, 0x91B0, 0x9170, 0x90E1, 0x8FFF, 0x8ED8, 0x8D7B, 0x8BF4,\n    0x8A4F, 0x8898, 0x86DE, 0x852B, 0x838D, 0x8211, 0x80C2, 0x7FAD,\n    0x7EE0, 0x7E66, 0x7E4D, 0x7EA0, 0x7F6D, 0x80F9, 0x836C, 0x86A3,\n    0x8A7A, 0x8ECF, 0x937F, 0x9866, 0x9D63, 0xA251, 0xA70F, 0xAB79,\n    0xAF6C, 0xB3A6, 0xB8B0, 0xBE16, 0xC362, 0xC821, 0xCBDF, 0xCE28,\n    0xCE88, 0xCC8A, 0xC833, 0xC20D, 0xBA68, 0xB193, 0xA7DE, 0x9D9B,\n    0x9319, 0x88A9, 0x7E9A, 0x753C, 0x6CE1, 0x6477, 0x5C7B, 0x578D,\n    0x584C, 0x5EC0, 0x68BD, 0x7592, 0x8490, 0x9507, 0xAE78, 0xCD47,\n    0xE018, 0xE51C, 0xE6B2, 0xE5C6, 0xE343, 0xE015, 0xDD27, 0xDB65,\n    0xDA69, 0xD93E, 0xD7F5, 0xD69E, 0xD54D, 0xD411, 0xD2FE, 0xD223,\n    0xD193, 0xD15F, 0xF57A, 0xF585, 0xF5A4, 0xF5D7, 0xF61B, 0xF66F,\n    0xF6D2, 0xF741, 0xF7BC, 0xF840, 0xF8CC, 0xF95E, 0xF9F6, 0xFA90,\n    0xFB2C, 0xFBC8, 0xFC63, 0xFCFA, 0xFD8D, 0xFE19, 0xFE9D, 0xFF18,\n    0xFF87, 0xFFEA, 0x003E, 0x0083, 0x00B6, 0x00DD, 0x00FE, 0x0119,\n    0x012E, 0x013F, 0x014A, 0x0151, 0x0154, 0x0153, 0x014E, 0x0145,\n    0x013A, 0x012B, 0x011A, 0x0106, 0x00F0, 0x00D9, 0x00C0, 0x00A6,\n    0x008B, 0x006F, 0x0053, 0x0037, 0x001B, 0x0000, 0xFFE6, 0xFFCC,\n    0xFFB4, 0xFF9D, 0xFF88, 0xFF76, 0xFF66, 0xFF58, 0xFF4E, 0xFF47,\n    0xFF45, 0xFF45, 0xFF47, 0xFF4A, 0xFF4D, 0xFF4E, 0xFF4E, 0xFF4E,\n    0xFF4E, 0xFF4E, 0xFF4E, 0xFF4E, 0xFF4E, 0xFF4E, 0xFF4E, 0xFF4E,\n    0xFF4E, 0xFF4E, 0xFF4E, 0xFF4E, 0xFF4E, 0xFF4E, 0xFF4E, 0xFF4E,\n    0xFF4E, 0xFF4E, 0xFF4E, 0xFF4E, 0xFF4E, 0xFF4E, 0xFF4E, 0xFF4E,\n    0xFF4E, 0xFF4E, 0xF7F5, 0xF800, 0xF81E, 0xF84E, 0xF88F, 0xF8DF,\n    0xF93D, 0xF9A7, 0xFA1C, 0xFA9A, 0xFB1F, 0xFBAB, 0xFC3B, 0xFCCF,\n    0xFD64, 0xFDFA, 0xFE8E, 0xFF20, 0xFFAD, 0x0033, 0x00B3, 0x012A,\n    0x0197, 0x01F8, 0x024C, 0x0291, 0x02C5, 0x02EE, 0x0312, 0x0331,\n    0x034A, 0x035F, 0x0370, 0x037C, 0x0385, 0x038A, 0x038B, 0x038A,\n    0x0385, 0x037E, 0x0374, 0x0369, 0x035B, 0x034C, 0x033B, 0x0329,\n    0x0316, 0x0303, 0x02EF, 0x02DC, 0x02C8, 0x02B5, 0x02A2, 0x0290,\n    0x027F, 0x0270, 0x0262, 0x0257, 0x024D, 0x0246, 0x0241, 0x023F,\n    0x023E, 0x023E, 0x023F, 0x0240, 0x0241, 0x0241, 0x0241, 0x0241,\n    0x0241, 0x0241, 0x0241, 0x0241, 0x0241, 0x0241, 0x0241, 0x0241,\n    0x0241, 0x0241, 0x0241, 0x0241, 0x0241, 0x0241, 0x0241, 0x0241,\n    0x0241, 0x0241, 0x0241, 0x0241, 0x0241, 0x0241, 0x0241, 0x0241,\n    0x0241, 0x0241, 0xAE2F, 0xAE4D, 0xAEA2, 0xAF29, 0xAFE0, 0xB0C1,\n    0xB1C8, 0xB2F0, 0xB435, 0xB593, 0xB705, 0xB887, 0xBA14, 0xBBA7,\n    0xBD3D, 0xBED2, 0xC05F, 0xC1E2, 0xC355, 0xC4B5, 0xC5FD, 0xC728,\n    0xC831, 0xC916, 0xC9D0, 0xCA5D, 0xCAB6, 0xCAEB, 0xCB0B, 0xCB19,\n    0xCB15, 0xCB01, 0xCADC, 0xCAA9, 0xCA67, 0xCA19, 0xC9BE, 0xC958,\n    0xC8E9, 0xC870, 0xC7EE, 0xC766, 0xC6D7, 0xC643, 0xC5AB, 0xC50F,\n    0xC470, 0xC3D1, 0xC330, 0xC290, 0xC1F1, 0xC155, 0xC0BC, 0xC027,\n    0xBF98, 0xBF0E, 0xBE8C, 0xBE12, 0xBDA0, 0xBD39, 0xBCDD, 0xBC9D,\n    0xBC85, 0xBC88, 0xBC9D, 0xBCBA, 0xBCD2, 0xBCDD, 0xBCDD, 0xBCDD,\n    0xBCDD, 0xBCDD, 0xBCDD, 0xBCDD, 0xBCDD, 0xBCDD, 0xBCDD, 0xBCDD,\n    0xBCDD, 0xBCDD, 0xBCDD, 0xBCDD, 0xBCDD, 0xBCDD, 0xBCDD, 0xBCDD,\n    0xBCDD, 0xBCDD, 0xBCDD, 0xBCDD, 0xBCDD, 0xBCDD, 0xBCDD, 0xBCDD,\n    0xBCDD, 0xBCDD, 0x3A66, 0x3A2E, 0x398A, 0x3884, 0x3725, 0x3575,\n    0x337C, 0x3144, 0x2ED6, 0x2C39, 0x2977, 0x2699, 0x23A6, 0x20A9,\n    0x1DAA, 0x1AB0, 0x17C6, 0x14F4, 0x1242, 0x0FBA, 0x0D63, 0x0B48,\n    0x0970, 0x07E4, 0x06AD, 0x05D3, 0x0560, 0x0537, 0x0534, 0x0554,\n    0x0597, 0x05FB, 0x067F, 0x071F, 0x07DC, 0x08B3, 0x09A3, 0x0AA9,\n    0x0BC5, 0x0CF5, 0x0E36, 0x0F88, 0x10E9, 0x1256, 0x13CF, 0x1552,\n    0x16DC, 0x186E, 0x1A03, 0x1B9C, 0x1D37, 0x1ED1, 0x206A, 0x21FE,\n    0x238E, 0x2517, 0x2698, 0x280E, 0x2979, 0x2AD6, 0x2C24, 0x2DEE,\n    0x3077, 0x3355, 0x3619, 0x3858, 0x39A6, 0x3996, 0x3827, 0x35C8,\n    0x32B6, 0x2F2A, 0x2B62, 0x2799, 0x240A, 0x20F2, 0x1E8A, 0x1D11,\n    0x207E, 0x282E, 0x2D70, 0x2CA2, 0x2968, 0x27F7, 0x2AC7, 0x2F62,\n    0x329A, 0x3401, 0x3543, 0x365F, 0x3754, 0x3820, 0x38C1, 0x3936,\n    0x397E, 0x3996, 0x126A, 0x1269, 0x1269, 0x1268, 0x1267, 0x1266,\n    0x1264, 0x1263, 0x1261, 0x125F, 0x125D, 0x125B, 0x1259, 0x1257,\n    0x1255, 0x1253, 0x1252, 0x1250, 0x124E, 0x124D, 0x124C, 0x124B,\n    0x124B, 0x124B, 0x124B, 0x124B, 0x124C, 0x124E, 0x1250, 0x1253,\n    0x1256, 0x125A, 0x125F, 0x1264, 0x1269, 0x126F, 0x1275, 0x127B,\n    0x1281, 0x1287, 0x128E, 0x1294, 0x129A, 0x12A0, 0x12A6, 0x12AB,\n    0x12B0, 0x12B5, 0x12B9, 0x12BC, 0x12BF, 0x12C1, 0x12C3, 0x12C3,\n    0x12C3, 0x12C2, 0x12C0, 0x12BD, 0x12B9, 0x12B4, 0x12AD, 0x1295,\n    0x1261, 0x121D, 0x11D0, 0x1187, 0x114A, 0x1125, 0x1110, 0x10FF,\n    0x10F4, 0x10EC, 0x10EA, 0x10EC, 0x10F3, 0x10FF, 0x110F, 0x1125,\n    0x11BD, 0x1244, 0x1236, 0x1221, 0x1205, 0x11E5, 0x11C0, 0x1199,\n    0x1170, 0x1147, 0x111E, 0x10F7, 0x10D3, 0x10B3, 0x1098, 0x1083,\n    0x1076, 0x1071, 0x0FA5, 0x0F8D, 0x0F49, 0x0EDC, 0x0E4A, 0x0D96,\n    0x0CC3, 0x0BD5, 0x0ACF, 0x09B5, 0x088B, 0x0754, 0x0613, 0x04CC,\n    0x0383, 0x023A, 0x00F6, 0xFFBB, 0xFE8A, 0xFD68, 0xFC59, 0xFB5F,\n    0xFA7F, 0xF9BB, 0xF918, 0xF899, 0xF841, 0xF804, 0xF7D3, 0xF7AD,\n    0xF793, 0xF783, 0xF77D, 0xF781, 0xF78F, 0xF7A5, 0xF7C4, 0xF7EA,\n    0xF818, 0xF84D, 0xF889, 0xF8CB, 0xF912, 0xF95F, 0xF9B1, 0xFA07,\n    0xFA61, 0xFABE, 0xFB1E, 0xFB81, 0xFBE6, 0xFC4D, 0xFCB5, 0xFD1D,\n    0xFD86, 0xFDEF, 0xFE57, 0xFEBE, 0xFF24, 0xFF88, 0xFFE9, 0x008E,\n    0x01A3, 0x02FC, 0x046D, 0x05CC, 0x06ED, 0x07A4, 0x0809, 0x0852,\n    0x0880, 0x0896, 0x0896, 0x0883, 0x085F, 0x082C, 0x07ED, 0x07A4,\n    0x05BD, 0x0407, 0x0428, 0x045F, 0x04A8, 0x0501, 0x0566, 0x05D4,\n    0x0647, 0x06BB, 0x072F, 0x079E, 0x0805, 0x0861, 0x08AE, 0x08E9,\n    0x090F, 0x091C, 0xA0AE, 0xA0C0, 0xA0F2, 0xA142, 0xA1AE, 0xA231,\n    0xA2C9, 0xA374, 0xA42D, 0xA4F3, 0xA5C2, 0xA697, 0xA770, 0xA849,\n    0xA91F, 0xA9F0, 0xAAB8, 0xAB75, 0xAC23, 0xACBF, 0xAD48, 0xADB9,\n    0xAE0F, 0xAE48, 0xAE61, 0xAE57, 0xAE27, 0xADDB, 0xAD82, 0xAD1B,\n    0xACA7, 0xAC27, 0xAB9B, 0xAB03, 0xAA60, 0xA9B3, 0xA8FB, 0xA83A,\n    0xA770, 0xA69D, 0xA5C1, 0xA4DE, 0xA3F3, 0xA302, 0xA20A, 0xA10C,\n    0xA009, 0x9F01, 0x9DF4, 0x9CE3, 0x9BCF, 0x9AB8, 0x999E, 0x9881,\n    0x9763, 0x9644, 0x9524, 0x9403, 0x92E3, 0x91C4, 0x90A5, 0x8F0A,\n    0x8CAC, 0x89DA, 0x86E5, 0x841F, 0x81D8, 0x8060, 0x7F8B, 0x7EF1,\n    0x7E8F, 0x7E5F, 0x7E5D, 0x7E84, 0x7ED0, 0x7F3C, 0x7FC3, 0x8060,\n    0x8482, 0x8837, 0x87EC, 0x8770, 0x86CC, 0x8606, 0x8526, 0x8434,\n    0x8335, 0x8233, 0x8133, 0x803E, 0x7F5A, 0x7E90, 0x7DE6, 0x7D63,\n    0x7D0F, 0x7CF2, 0xFA5A, 0xFA67, 0xFA88, 0xFAB8, 0xFAF1, 0xFB2E,\n    0xFB68, 0xFB99, 0xFBBC, 0xFBE6, 0xFC26, 0xFC73, 0xFCC0, 0xFD03,\n    0xFD30, 0xFD3D, 0xFD1E, 0xFCC7, 0xFC2F, 0xFB07, 0xF936, 0xF6FB,\n    0xF496, 0xF249, 0xF052, 0xEEF3, 0xEE6B, 0xEE96, 0xEF1C, 0xEFED,\n    0xF0FC, 0xF238, 0xF393, 0xF4FF, 0xF66C, 0xF7CC, 0xF910, 0xFA28,\n    0xFB07, 0xFB9D, 0xFBED, 0xFC0A, 0xFBFC, 0xFBCB, 0xFB7F, 0xFB1F,\n    0xFAB4, 0xFA45, 0xF9DA, 0xF97B, 0xF931, 0xF902, 0xF8E3, 0xF8C4,\n    0xF8A9, 0xF895, 0xF88D, 0xF894, 0xF8AE, 0xF8DF, 0xF92B, 0xF9AF,\n    0xFA75, 0xFB67, 0xFC6C, 0xFD6E, 0xFE54, 0xFF37, 0x0020, 0x00E3,\n    0x0156, 0x017C, 0x017E, 0x0167, 0x0142, 0x0118, 0x00F3, 0x00DF,\n    0x00D7, 0x00CE, 0x00C6, 0x00BF, 0x00B7, 0x00B0, 0x00A9, 0x00A3,\n    0x009D, 0x0097, 0x0092, 0x008E, 0x008A, 0x0087, 0x0084, 0x0082,\n    0x0081, 0x0081, 0x02E9, 0x02F6, 0x0319, 0x034A, 0x0382, 0x03BA,\n    0x03EA, 0x040D, 0x0419, 0x0414, 0x0406, 0x03EF, 0x03D3, 0x03B0,\n    0x038A, 0x0361, 0x0336, 0x030B, 0x02E0, 0x02AB, 0x0266, 0x0217,\n    0x01C8, 0x0181, 0x014A, 0x012A, 0x012A, 0x0148, 0x0177, 0x01B5,\n    0x01FF, 0x0250, 0x02A7, 0x02FE, 0x0354, 0x03A5, 0x03ED, 0x042A,\n    0x0457, 0x0471, 0x047A, 0x0476, 0x0466, 0x044B, 0x0428, 0x03FD,\n    0x03CE, 0x039A, 0x0363, 0x032C, 0x02F6, 0x02C3, 0x028C, 0x024C,\n    0x0207, 0x01BD, 0x0171, 0x0126, 0x00DC, 0x0097, 0x0057, 0x001E,\n    0xFFEA, 0xFFB9, 0xFF8E, 0xFF6A, 0xFF4C, 0xFF3F, 0xFF45, 0xFF50,\n    0xFF56, 0xFF56, 0xFF55, 0xFF53, 0xFF51, 0xFF4F, 0xFF4C, 0xFF49,\n    0xFF45, 0xFF41, 0xFF3C, 0xFF37, 0xFF32, 0xFF2C, 0xFF26, 0xFF21,\n    0xFF1B, 0xFF16, 0xFF11, 0xFF0C, 0xFF08, 0xFF05, 0xFF02, 0xFF00,\n    0xFEFE, 0xFEFE, 0xCC6D, 0xCCEC, 0xCE3F, 0xD025, 0xD25F, 0xD4AC,\n    0xD6CC, 0xD87F, 0xD984, 0xDA04, 0xDA54, 0xDA75, 0xDA6C, 0xDA39,\n    0xD9E0, 0xD964, 0xD8C8, 0xD80D, 0xD737, 0xD5F5, 0xD41C, 0xD1E6,\n    0xCF90, 0xCD55, 0xCB6F, 0xCA1B, 0xC993, 0xC9C7, 0xCA6F, 0xCB73,\n    0xCCBE, 0xCE39, 0xCFCC, 0xD161, 0xD2E3, 0xD439, 0xD54D, 0xD609,\n    0xD657, 0xD61E, 0xD55A, 0xD420, 0xD27F, 0xD08A, 0xCE50, 0xCBE3,\n    0xC953, 0xC6B2, 0xC40F, 0xC17C, 0xBF0A, 0xBCC9, 0xBA87, 0xB815,\n    0xB58A, 0xB2FD, 0xB085, 0xAE3A, 0xAC32, 0xAA84, 0xA947, 0xA8A6,\n    0xA8AF, 0xA94F, 0xAA74, 0xAC0B, 0xAE01, 0xB17F, 0xB692, 0xBB7C,\n    0xBE81, 0xBF83, 0xBFBB, 0xBF6D, 0xBEE0, 0xBE57, 0xBE18, 0xBE68,\n    0xBF2A, 0xC011, 0xC117, 0xC236, 0xC369, 0xC4A8, 0xC5F0, 0xC739,\n    0xC87E, 0xC9BA, 0xCAE6, 0xCBFD, 0xCCF9, 0xCDD4, 0xCE89, 0xCF11,\n    0xCF67, 0xCF85, 0x2855, 0x28A4, 0x2982, 0x2AD6, 0x2C89, 0x2E82,\n    0x30A9, 0x32E8, 0x3525, 0x3749, 0x393C, 0x3AE6, 0x3C2F, 0x3CFF,\n    0x3D3E, 0x3CDF, 0x3BF3, 0x3A8E, 0x38C7, 0x36B2, 0x3464, 0x31F3,\n    0x2F74, 0x2CFD, 0x2AA1, 0x2877, 0x2693, 0x2498, 0x223C, 0x1FB6,\n    0x1D3C, 0x1B06, 0x1949, 0x183D, 0x1818, 0x1911, 0x1BDF, 0x20A6,\n    0x26BD, 0x2D7B, 0x3437, 0x3A49, 0x3F06, 0x41C7, 0x4329, 0x443F,\n    0x450D, 0x459B, 0x45ED, 0x4609, 0x45F5, 0x45B5, 0x4551, 0x44CC,\n    0x442E, 0x437B, 0x42BA, 0x41EF, 0x4120, 0x4054, 0x3F8E, 0x3D15,\n    0x3847, 0x32CF, 0x2A98, 0x2CC7, 0x30C5, 0x3286, 0x3028, 0x2B8D,\n    0x264B, 0x209F, 0x1A14, 0x133B, 0x0CA3, 0x06DC, 0x0275, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x00C0, 0x019E, 0x027C, 0x0351, 0x0415, 0x04BC, 0x0540,\n    0x0595, 0x05B4, 0xEB4A, 0xEB60, 0xEB9F, 0xEBFF, 0xEC79, 0xED07,\n    0xEDA2, 0xEE42, 0xEEE1, 0xEF78, 0xF000, 0xF072, 0xF0C8, 0xF0F9,\n    0xF108, 0xF0FB, 0xF0D8, 0xF0A2, 0xF05E, 0xF010, 0xEFBC, 0xEF68,\n    0xEF17, 0xEECF, 0xEE92, 0xEE66, 0xEE4F, 0xEE49, 0xEE4C, 0xEE57,\n    0xEE6A, 0xEE82, 0xEE9E, 0xEEBE, 0xEEE0, 0xEF03, 0xEF26, 0xEF48,\n    0xEF67, 0xEF83, 0xEF99, 0xEFAA, 0xEFB3, 0xEFB3, 0xEFAB, 0xEF97,\n    0xEF6C, 0xEF23, 0xEEC1, 0xEE4D, 0xEDCB, 0xED43, 0xECB9, 0xEC33,\n    0xEBB7, 0xEB4B, 0xEAF6, 0xEABB, 0xEAA2, 0xEAB0, 0xEAEC, 0xEB8C,\n    0xECAE, 0xEE2F, 0xEFEC, 0xF1C4, 0xF393, 0xF536, 0xF68B, 0xF76F,\n    0xF7C0, 0xF6F9, 0xF501, 0xF258, 0xEF7B, 0xECE9, 0xEB1F, 0xEA9C,\n    0xF17F, 0xEEA5, 0xF031, 0xF277, 0xF1B9, 0xEA39, 0xEE11, 0xECEF,\n    0xEE2B, 0xED88, 0xEE5B, 0xEF90, 0xF0FF, 0xF281, 0xF3F1, 0xF528,\n    0xF5FE, 0xF64E, 0xECF9, 0xECDB, 0xEC85, 0xEC00, 0xEB54, 0xEA88,\n    0xE9A5, 0xE8B2, 0xE7B7, 0xE6BC, 0xE5CA, 0xE4E7, 0xE41B, 0xE370,\n    0xE2D0, 0xE225, 0xE175, 0xE0C3, 0xE015, 0xDF70, 0xDED8, 0xDE52,\n    0xDDE3, 0xDD90, 0xDD5E, 0xDD50, 0xDD6D, 0xDDB4, 0xDE1C, 0xDEA2,\n    0xDF42, 0xDFF8, 0xE0BF, 0xE194, 0xE273, 0xE357, 0xE43D, 0xE51F,\n    0xE5FB, 0xE6CC, 0xE78E, 0xE83C, 0xE8D4, 0xE950, 0xE9AC, 0xE9E5,\n    0xE9EA, 0xE9B2, 0xE948, 0xE8B4, 0xE801, 0xE738, 0xE663, 0xE58B,\n    0xE4B9, 0xE3F8, 0xE351, 0xE2CE, 0xE277, 0xE257, 0xE278, 0xE313,\n    0xE444, 0xE5E3, 0xE7C9, 0xE9D0, 0xEBD0, 0xEDA3, 0xEF21, 0xF025,\n    0xF086, 0xEFFC, 0xEE85, 0xEC65, 0xE9E2, 0xE73F, 0xE4C1, 0xE2AC,\n    0xE11B, 0xE06D, 0xE0BF, 0xE179, 0xE236, 0xE28D, 0xE1A7, 0xE080,\n    0xE07F, 0xE09B, 0xE04A, 0xDFE3, 0xDF70, 0xDEFC, 0xDE90, 0xDE37,\n    0xDDFA, 0xDDE3, 0xA772, 0xA73F, 0xA6B1, 0xA5D7, 0xA4BE, 0xA376,\n    0xA20C, 0xA091, 0x9F11, 0x9D9C, 0x9C41, 0x9B0D, 0x9A0F, 0x9957,\n    0x98D8, 0x987C, 0x983C, 0x9817, 0x9808, 0x980A, 0x981A, 0x9834,\n    0x9853, 0x9874, 0x9893, 0x98AB, 0x98B9, 0x98BC, 0x98BA, 0x98B2,\n    0x98A7, 0x989A, 0x988C, 0x987F, 0x9875, 0x986E, 0x986D, 0x9872,\n    0x9880, 0x9898, 0x98BA, 0x98EA, 0x9927, 0x9974, 0x99D2, 0x9A43,\n    0x9AD4, 0x9B90, 0x9C6F, 0x9D6C, 0x9E81, 0x9FA7, 0xA0D7, 0xA20D,\n    0xA341, 0xA46C, 0xA58A, 0xA693, 0xA782, 0xA850, 0xA8F7, 0xA968,\n    0xA9A0, 0xA9AA, 0xA990, 0xA95E, 0xA91E, 0xA8DC, 0xA8A1, 0xA878,\n    0xA86D, 0xA892, 0xA8E0, 0xA940, 0xA998, 0xA9CE, 0xA9C9, 0xA96F,\n    0xA652, 0xA382, 0xA480, 0xA6A0, 0xA8C0, 0xA9C3, 0xA73B, 0xA3F4,\n    0xA3F1, 0xA417, 0xA2C4, 0xA11A, 0x9F43, 0x9D67, 0x9BAE, 0x9A41,\n    0x9948, 0x98EC, 0x7FFF, 0x7FFF, 0x4171, 0xBF5F, 0x7FFF, 0x7FFF,\n    0x4171, 0xBF5F, 0xBF5B, 0xBF51, 0xBF40, 0xBF2A, 0xBF0E, 0xBEEE,\n    0xBECA, 0xBEA3, 0xBE78, 0xBE4C, 0xBE1D, 0xBDEE, 0xBDBE, 0xBD8E,\n    0xBD5E, 0xBD30, 0xBD03, 0xBCD9, 0xBCB1, 0xBC8D, 0xBC6D, 0xBC52,\n    0xBC3B, 0xBC2B, 0xBC20, 0xBC1D, 0xBC1E, 0xBC23, 0xBC2A, 0xBC34,\n    0xBC41, 0xBC50, 0xBC61, 0xBC74, 0xBC89, 0xBCA0, 0xBCB9, 0xBCD3,\n    0xBCEF, 0xBD0B, 0xBD29, 0xBD48, 0xBD67, 0xBD87, 0xBDA8, 0xBDC8,\n    0xBDE9, 0xBE0A, 0xBE2B, 0xBE4B, 0xBE6C, 0xBE8B, 0xBEAA, 0xBEC7,\n    0xBEE4, 0xBF00, 0xBF1A, 0xBF33, 0xBF4A, 0xBF5F, 0xBF6E, 0xBF74,\n    0xBF73, 0xBF6E, 0xBF67, 0xBF61, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F,\n    0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F,\n    0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F,\n    0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F,\n    0xBF5F, 0xFD39, 0xFD4C, 0xFD7D, 0xFDBF, 0xFE03, 0xFE3B, 0xFE5C,\n    0xFE7C, 0xFEAC, 0xFED0, 0xFECF, 0xFE8E, 0xFDF2, 0xFCD0, 0xFB2E,\n    0xF939, 0xF71D, 0xF509, 0xF328, 0xF1A8, 0xF0B5, 0xF07D, 0xF12C,\n    0xF2EC, 0xF5A4, 0xF91F, 0xFD27, 0x0184, 0x0603, 0x0A6C, 0x0E8A,\n    0x1226, 0x150B, 0x1703, 0x17F3, 0x1801, 0x1759, 0x1626, 0x1492,\n    0x12C8, 0x10F3, 0x0F3F, 0x0DD6, 0x0C8F, 0x0B2B, 0x09B2, 0x082C,\n    0x06A2, 0x051B, 0x03A1, 0x023C, 0x00F4, 0xFFD3, 0xFEDE, 0xFE13,\n    0xFD6B, 0xFCEC, 0xFC9B, 0xFC7F, 0xFC9C, 0xFCF8, 0xFD99, 0xFEF0,\n    0x011F, 0x03B8, 0x064D, 0x086E, 0x09AD, 0x0A01, 0x09C8, 0x092C,\n    0x0857, 0x0774, 0x06AD, 0x062D, 0x05E9, 0x05C9, 0x05E3, 0x064C,\n    0x077C, 0x092B, 0x0A56, 0x09EE, 0x0923, 0x0907, 0x0917, 0x0942,\n    0x0992, 0x09FE, 0x0A57, 0x0A8F, 0x0AB4, 0x0AC2, 0x0AC2, 0x0AC2,\n    0x0AC2, 0xF618, 0xF68E, 0xF7C6, 0xF985, 0xFB8F, 0xFDA6, 0xFF90,\n    0x019A, 0x0406, 0x0680, 0x08B6, 0x0A54, 0x0B08, 0x0B04, 0x0AB5,\n    0x0A25, 0x095C, 0x0862, 0x073F, 0x05FC, 0x04A1, 0x0336, 0x01C4,\n    0x000E, 0xFDE9, 0xFB74, 0xF8D3, 0xF628, 0xF392, 0xF136, 0xEF33,\n    0xEDAC, 0xECC2, 0xEC96, 0xED9A, 0xEFEB, 0xF32D, 0xF707, 0xFB1C,\n    0xFF14, 0x0292, 0x053D, 0x06BA, 0x0734, 0x0722, 0x0699, 0x05B1,\n    0x0480, 0x031B, 0x0199, 0x0010, 0xFE98, 0xFD43, 0xFC2B, 0xFB26,\n    0xFA07, 0xF8DE, 0xF7BB, 0xF6AF, 0xF5C8, 0xF518, 0xF4AD, 0xF4CB,\n    0xF57C, 0xF67A, 0xF77E, 0xF844, 0xF886, 0xF7F4, 0xF6B2, 0xF522,\n    0xF3A4, 0xF29B, 0xF269, 0xF370, 0xF7F7, 0xFFCB, 0x078F, 0x0BEB,\n    0x098F, 0x0321, 0xFE33, 0xFEEE, 0x0047, 0xFE18, 0xFAF6, 0xF8CE,\n    0xF8A0, 0xF96C, 0xFA21, 0xFA64, 0xFA8F, 0xFA9E, 0xFA9E, 0xFA9E,\n    0xFA9E, 0xDD80, 0xDCDE, 0xDB4B, 0xD946, 0xD74A, 0xD5D6, 0xD566,\n    0xD5FD, 0xD735, 0xD8F4, 0xDB20, 0xDD9E, 0xE054, 0xE379, 0xE735,\n    0xEB54, 0xEFA2, 0xF3EB, 0xF7FA, 0xFB9D, 0xFE9E, 0x00C9, 0x01EC,\n    0x01F8, 0x0120, 0xFF8C, 0xFD64, 0xFAD3, 0xF803, 0xF51D, 0xF24B,\n    0xEFB5, 0xED86, 0xEBE6, 0xEA9E, 0xE965, 0xE84C, 0xE764, 0xE6C0,\n    0xE671, 0xE688, 0xE716, 0xE82F, 0xE9F9, 0xEC75, 0xEF7C, 0xF2E2,\n    0xF67F, 0xFA29, 0xFDB8, 0x0100, 0x03DB, 0x061D, 0x079E, 0x0819,\n    0x078F, 0x063E, 0x0464, 0x0241, 0x0014, 0xFE1A, 0xFC92, 0xFB08,\n    0xF925, 0xF753, 0xF5FE, 0xF590, 0xF673, 0xF8F9, 0xFCD7, 0x0188,\n    0x068D, 0x0B64, 0x0F89, 0x127B, 0x12EB, 0x1120, 0x0EFD, 0x0E65,\n    0x1130, 0x159C, 0x1823, 0x147C, 0x1074, 0x11A6, 0x1466, 0x166D,\n    0x16AC, 0x1632, 0x15DC, 0x1612, 0x166E, 0x169E, 0x169E, 0x169E,\n    0x169E, 0x01A2, 0x01B3, 0x01E2, 0x022A, 0x0285, 0x02ED, 0x035E,\n    0x03D2, 0x0443, 0x04AC, 0x0508, 0x0550, 0x0580, 0x0585, 0x055C,\n    0x0510, 0x04AF, 0x0447, 0x03E3, 0x0390, 0x035D, 0x0356, 0x0388,\n    0x0400, 0x04CB, 0x06B8, 0x0A18, 0x0E34, 0x125A, 0x15D5, 0x17F0,\n    0x17F7, 0x15A3, 0x1184, 0x0C27, 0x061A, 0xFFEB, 0xFA26, 0xF559,\n    0xF211, 0xF0DE, 0xF14B, 0xF278, 0xF44C, 0xF6B0, 0xF98B, 0xFCC4,\n    0x0042, 0x03EF, 0x07B1, 0x0B71, 0x0F14, 0x1285, 0x15A9, 0x1868,\n    0x1B00, 0x1DA9, 0x2044, 0x22B3, 0x24D7, 0x2691, 0x27C2, 0x284D,\n    0x2765, 0x24D5, 0x215C, 0x1DB9, 0x1AAD, 0x182F, 0x15BF, 0x136A,\n    0x113C, 0x0F42, 0x0D57, 0x0B61, 0x0978, 0x07B7, 0x0634, 0x0509,\n    0x044F, 0x03ED, 0x03B8, 0x03A8, 0x03B8, 0x03E2, 0x041E, 0x0466,\n    0x04B5, 0x0504, 0x054C, 0x0587, 0x05B0, 0x05BF, 0x05BF, 0x05BF,\n    0x05BF, 0xF92E, 0xF96A, 0xFA0F, 0xFB07, 0xFC3D, 0xFD9D, 0xFF0F,\n    0x007F, 0x01D9, 0x0305, 0x03F0, 0x0483, 0x04A9, 0x0455, 0x0395,\n    0x027F, 0x0128, 0xFFA4, 0xFE08, 0xFC69, 0xFADC, 0xF975, 0xF849,\n    0xF76E, 0xF6F8, 0xF71D, 0xF7EA, 0xF936, 0xFAD8, 0xFCA8, 0xFE7C,\n    0x002B, 0x01EF, 0x0403, 0x0646, 0x0894, 0x0ACA, 0x0CC5, 0x0E61,\n    0x0F7D, 0x0FF6, 0x0FE6, 0x0F8A, 0x0EEA, 0x0E12, 0x0D0D, 0x0BE4,\n    0x0AA2, 0x0952, 0x07FE, 0x06B1, 0x0575, 0x0455, 0x035B, 0x0291,\n    0x0207, 0x01B8, 0x0192, 0x0187, 0x0184, 0x017A, 0x0157, 0x010A,\n    0x0072, 0xFF98, 0xFEAB, 0xFDDD, 0xFD5D, 0xFD6E, 0xFDF2, 0xFE82,\n    0xFEBB, 0xFE38, 0xFCC1, 0xFA9C, 0xF81D, 0xF598, 0xF363, 0xF1D3,\n    0xF13C, 0xF176, 0xF215, 0xF305, 0xF436, 0xF594, 0xF70D, 0xF890,\n    0xFA09, 0xFB67, 0xFC96, 0xFD86, 0xFE23, 0xFE5B, 0xFE5B, 0xFE5B,\n    0xFE5B, 0x1174, 0x117B, 0x118F, 0x11AC, 0x11D1, 0x11FB, 0x1228,\n    0x1254, 0x127E, 0x12A4, 0x12C2, 0x12D7, 0x12DF, 0x12D9, 0x12C6,\n    0x12A8, 0x1283, 0x1259, 0x122D, 0x1202, 0x11DA, 0x11B9, 0x11A0,\n    0x1194, 0x1195, 0x11D6, 0x1266, 0x1318, 0x13BD, 0x1428, 0x142C,\n    0x139A, 0x1253, 0x1075, 0x0E30, 0x0BB7, 0x0938, 0x06E5, 0x04EE,\n    0x0384, 0x02D7, 0x02D1, 0x0333, 0x03EA, 0x04E5, 0x0611, 0x075E,\n    0x08B9, 0x0A11, 0x0B54, 0x0C70, 0x0D54, 0x0DEE, 0x0E2C, 0x0DFC,\n    0x0D02, 0x0B15, 0x0876, 0x0564, 0x021D, 0xFEE3, 0xFBF3, 0xF98D,\n    0xF7CA, 0xF677, 0xF56A, 0xF474, 0xF369, 0xF190, 0xEF08, 0xECE5,\n    0xEC3B, 0xEE1F, 0xF315, 0xFA42, 0x02B1, 0x0B6B, 0x137B, 0x19E9,\n    0x1DBE, 0x1F93, 0x20B4, 0x213A, 0x213E, 0x20D8, 0x2021, 0x1F33,\n    0x1E25, 0x1D11, 0x1C0F, 0x1B38, 0x1AA4, 0x1A6E, 0x1A6E, 0x1A6E,\n    0x1A6E, 0xFC80, 0xFC75, 0xFC5A, 0xFC30, 0xFBFC, 0xFBC2, 0xFB85,\n    0xFB49, 0xFB13, 0xFAE5, 0xFAC4, 0xFAB3, 0xFAAE, 0xFAAC, 0xFAAF,\n    0xFAB6, 0xFAC0, 0xFACD, 0xFADE, 0xFAF2, 0xFB08, 0xFB21, 0xFB3D,\n    0xFB5B, 0xFB7B, 0xFB9D, 0xFBC1, 0xFBE8, 0xFC13, 0xFC41, 0xFC73,\n    0xFCA7, 0xFCDE, 0xFD16, 0xFD50, 0xFD8C, 0xFDC7, 0xFE04, 0xFE40,\n    0xFE7C, 0xFEB6, 0xFEF0, 0xFF28, 0xFF5F, 0xFF96, 0xFFCE, 0x0004,\n    0x003C, 0x0074, 0x00AC, 0x00E4, 0x011C, 0x0154, 0x018B, 0x01C3,\n    0x01FA, 0x0232, 0x0269, 0x02A0, 0x02D6, 0x030C, 0x0363, 0x03E4,\n    0x046F, 0x04E4, 0x0520, 0x0503, 0x046C, 0x0352, 0x01D3, 0x000C,\n    0xFE16, 0xFC0A, 0xFA05, 0xF81F, 0xF675, 0xF520, 0xF43C, 0xF3A5,\n    0xF329, 0xF2C5, 0xF276, 0xF23B, 0xF212, 0xF1F8, 0xF1EC, 0xF1EB,\n    0xF1F3, 0xF202, 0xF215, 0xF22C, 0xF243, 0xF259, 0xF26B, 0xF277,\n    0xF27C, 0x0A02, 0x0A0E, 0x0A2C, 0x0A56, 0x0A83, 0x0AAD, 0x0ACA,\n    0x0AD5, 0x0AC5, 0x0A92, 0x0A36, 0x09A8, 0x08DE, 0x07DA, 0x06A7,\n    0x0550, 0x03DE, 0x025C, 0x00D5, 0xFF54, 0xFDE2, 0xFC8B, 0xFB59,\n    0xFA55, 0xF98C, 0xF908, 0xF8D2, 0xF8F7, 0xF971, 0xFA34, 0xFB35,\n    0xFC66, 0xFDBC, 0xFF2B, 0x00A4, 0x021E, 0x038B, 0x04E0, 0x060F,\n    0x070C, 0x07CC, 0x0842, 0x0861, 0x0837, 0x07DB, 0x0752, 0x06A1,\n    0x05CD, 0x04DA, 0x03CC, 0x02A9, 0x0175, 0x0035, 0xFEEF, 0xFDA5,\n    0xFC5D, 0xFB1B, 0xF9E5, 0xF8BE, 0xF7AC, 0xF6B4, 0xF5BB, 0xF4B4,\n    0xF3B3, 0xF2CC, 0xF214, 0xF19F, 0xF181, 0xF1B9, 0xF22D, 0xF2D1,\n    0xF396, 0xF470, 0xF552, 0xF62D, 0xF6F6, 0xF79E, 0xF818, 0xF875,\n    0xF8CE, 0xF924, 0xF976, 0xF9C4, 0xFA0D, 0xFA52, 0xFA92, 0xFACE,\n    0xFB03, 0xFB34, 0xFB5E, 0xFB83, 0xFBA2, 0xFBBA, 0xFBCC, 0xFBD6,\n    0xFBDA, 0x4445, 0x4422, 0x43C5, 0x433F, 0x42A0, 0x41FB, 0x4160,\n    0x40E0, 0x408D, 0x4078, 0x40B2, 0x414C, 0x424C, 0x43A5, 0x4546,\n    0x4720, 0x4925, 0x4B45, 0x4D71, 0x4F9A, 0x51AF, 0x53A4, 0x5567,\n    0x56EA, 0x581E, 0x58F3, 0x595A, 0x5953, 0x58EF, 0x583A, 0x573E,\n    0x5608, 0x54A4, 0x531C, 0x517C, 0x4FD0, 0x4E23, 0x4C81, 0x4AF6,\n    0x498C, 0x4850, 0x474E, 0x468F, 0x4609, 0x45A2, 0x4558, 0x4527,\n    0x450C, 0x4503, 0x4509, 0x451A, 0x4533, 0x4550, 0x456D, 0x4588,\n    0x459C, 0x45A7, 0x45A5, 0x4592, 0x456A, 0x452B, 0x44E4, 0x4496,\n    0x4426, 0x437D, 0x427F, 0x4114, 0x3F21, 0x3C7B, 0x3927, 0x355A,\n    0x314B, 0x2D2E, 0x2937, 0x259C, 0x2292, 0x204E, 0x1F05, 0x1E7A,\n    0x1E47, 0x1E61, 0x1EBF, 0x1F58, 0x2022, 0x2113, 0x2222, 0x2345,\n    0x2472, 0x259F, 0x26C4, 0x27D6, 0x28CC, 0x299C, 0x2A3D, 0x2AA4,\n    0x2AC9,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_33.inc.c",
    "content": "static const struct Animation anim_33[] = {\n    0,\n    189,\n    0,\n    0,\n    0x32,\n    ANIMINDEX_NUMPARTS(anim_33_indices),\n    anim_33_values,\n    anim_33_indices,\n    0,\n};\n\n\nstatic const u16 anim_33_indices[] = {\n    0x0032, 0x0001, 0x0001, 0x0033, 0x0001, 0x0034, 0x0001, 0x0000, 0x0001, 0x0035, 0x0001, 0x0000,\n    0x0032, 0x04F6, 0x0032, 0x0528, 0x0032, 0x055A,\n    0x0032, 0x0460, 0x0032, 0x0492, 0x0032, 0x04C4,\n    0x0032, 0x03CA, 0x0032, 0x03FC, 0x0032, 0x042E,\n    0x0001, 0x03C6, 0x0001, 0x03C7, 0x0001, 0x03C8,\n    0x0032, 0x00CD, 0x0032, 0x00FF, 0x0032, 0x0131,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00CC,\n    0x0032, 0x0036, 0x0032, 0x0068, 0x0032, 0x009A,\n    0x0001, 0x03C2, 0x0001, 0x03C3, 0x0001, 0x03C4,\n    0x0032, 0x0167, 0x0032, 0x0199, 0x0032, 0x01CB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0166,\n    0x0001, 0x0163, 0x0001, 0x0164, 0x0001, 0x0165,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x03C5,\n    0x0032, 0x032C, 0x0032, 0x035E, 0x0032, 0x0390,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x02FA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x02C8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x03C9,\n    0x0001, 0x02C5, 0x0001, 0x02C6, 0x0001, 0x02C7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x0293,\n    0x0032, 0x01FD, 0x0032, 0x022F, 0x0032, 0x0261,\n};\n\nstatic const s16 anim_33_values[] = {\n    0x0000, 0x0007, 0x0008, 0x0008, 0x0009, 0x000B, 0x000C, 0x000D,\n    0x000E, 0x000F, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010,\n    0x000F, 0x000F, 0x000E, 0x000E, 0x000D, 0x000D, 0x000C, 0x000C,\n    0x000B, 0x000B, 0x000A, 0x0009, 0x0009, 0x0008, 0x0008, 0x0007,\n    0x0007, 0x0007, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,\n    0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0007, 0x0007, 0x0007,\n    0x0007, 0x0007, 0x0007, 0xFEF0, 0xFFA4, 0x3FFF, 0x17FE, 0x17FD,\n    0x17FA, 0x17F6, 0x17F0, 0x17E8, 0x17DF, 0x17D5, 0x17C9, 0x17BD,\n    0x17B0, 0x17A1, 0x1792, 0x1783, 0x1773, 0x1762, 0x1752, 0x1741,\n    0x1730, 0x171F, 0x170F, 0x16FE, 0x16EE, 0x16DF, 0x16D0, 0x16C1,\n    0x16B4, 0x16A8, 0x169C, 0x1692, 0x1689, 0x1682, 0x167B, 0x1677,\n    0x1674, 0x1673, 0x1679, 0x1689, 0x16A2, 0x16C1, 0x16E6, 0x170F,\n    0x1739, 0x1762, 0x178B, 0x17B0, 0x17CF, 0x17E8, 0x17F8, 0x17FE,\n    0xFF33, 0xFF36, 0xFF3F, 0xFF4D, 0xFF61, 0xFF79, 0xFF96, 0xFFB6,\n    0xFFDA, 0x0001, 0x002C, 0x0059, 0x0089, 0x00BA, 0x00ED, 0x0122,\n    0x0157, 0x018D, 0x01C3, 0x01F9, 0x022E, 0x0262, 0x0295, 0x02C7,\n    0x02F6, 0x0324, 0x034E, 0x0376, 0x039A, 0x03BB, 0x03D8, 0x03F0,\n    0x0403, 0x0412, 0x041A, 0x041D, 0x040B, 0x03D8, 0x0389, 0x0324,\n    0x02AE, 0x022E, 0x01A8, 0x0122, 0x00A1, 0x002C, 0xFFC8, 0xFF79,\n    0xFF46, 0xFF33, 0xF1E5, 0xF1E3, 0xF1DB, 0xF1CF, 0xF1BF, 0xF1AB,\n    0xF194, 0xF179, 0xF15B, 0xF13A, 0xF116, 0xF0F1, 0xF0CA, 0xF0A1,\n    0xF076, 0xF04B, 0xF01F, 0xEFF2, 0xEFC6, 0xEF99, 0xEF6D, 0xEF42,\n    0xEF17, 0xEEEE, 0xEEC7, 0xEEA1, 0xEE7E, 0xEE5D, 0xEE3F, 0xEE24,\n    0xEE0D, 0xEDF9, 0xEDE9, 0xEDDD, 0xEDD5, 0xEDD3, 0xEDE2, 0xEE0D,\n    0xEE4E, 0xEEA1, 0xEF03, 0xEF6D, 0xEFDC, 0xF04B, 0xF0B5, 0xF116,\n    0xF16A, 0xF1AB, 0xF1D6, 0xF1E5, 0xF503, 0xAAD0, 0xAAD1, 0xAAD5,\n    0xAADB, 0xAAE3, 0xAAED, 0xAAF8, 0xAB04, 0xAB11, 0xAB1F, 0xAB2E,\n    0xAB3D, 0xAB4C, 0xAB5A, 0xAB68, 0xAB75, 0xAB82, 0xAB8D, 0xAB97,\n    0xAB9F, 0xABA4, 0xABA8, 0xABAA, 0xABA9, 0xABA6, 0xABA2, 0xAB9D,\n    0xAB96, 0xAB8E, 0xAB85, 0xAB7C, 0xAB71, 0xAB66, 0xAB5B, 0xAB4F,\n    0xAB43, 0xAB37, 0xAB2B, 0xAB1F, 0xAB13, 0xAB08, 0xAAFE, 0xAAF4,\n    0xAAEB, 0xAAE4, 0xAADD, 0xAAD7, 0xAAD3, 0xAAD1, 0xAAD0, 0x956B,\n    0x9567, 0x955A, 0x9546, 0x952C, 0x950B, 0x94E6, 0x94BD, 0x9490,\n    0x9461, 0x9430, 0x93FF, 0x93CD, 0x939D, 0x936E, 0x9341, 0x9318,\n    0x92F2, 0x92D2, 0x92B8, 0x92A4, 0x9297, 0x9293, 0x9296, 0x929E,\n    0x92AC, 0x92BE, 0x92D4, 0x92EF, 0x930C, 0x932D, 0x934F, 0x9374,\n    0x939B, 0x93C2, 0x93EB, 0x9413, 0x943B, 0x9463, 0x9489, 0x94AE,\n    0x94D1, 0x94F2, 0x950F, 0x9529, 0x9540, 0x9552, 0x9560, 0x9568,\n    0x956B, 0xE0E1, 0xE0DE, 0xE0D6, 0xE0C9, 0xE0B9, 0xE0A4, 0xE08D,\n    0xE072, 0xE056, 0xE038, 0xE019, 0xDFFA, 0xDFDB, 0xDFBC, 0xDF9E,\n    0xDF82, 0xDF68, 0xDF50, 0xDF3B, 0xDF2B, 0xDF1E, 0xDF16, 0xDF13,\n    0xDF15, 0xDF1A, 0xDF23, 0xDF2F, 0xDF3D, 0xDF4D, 0xDF60, 0xDF75,\n    0xDF8B, 0xDFA2, 0xDFBB, 0xDFD4, 0xDFED, 0xE007, 0xE020, 0xE039,\n    0xE052, 0xE069, 0xE07F, 0xE094, 0xE0A7, 0xE0B7, 0xE0C5, 0xE0D1,\n    0xE0DA, 0xE0DF, 0xE0E1, 0xF32C, 0x066E, 0xF3C7, 0xF8AB, 0x4363,\n    0x4363, 0x4362, 0x4362, 0x4361, 0x4361, 0x4360, 0x435F, 0x435E,\n    0x435D, 0x435C, 0x435B, 0x4359, 0x4358, 0x4357, 0x4356, 0x4355,\n    0x4354, 0x4353, 0x4353, 0x4352, 0x4352, 0x4351, 0x4351, 0x4351,\n    0x4352, 0x4352, 0x4352, 0x4353, 0x4354, 0x4354, 0x4355, 0x4356,\n    0x4357, 0x4358, 0x4359, 0x435A, 0x435B, 0x435C, 0x435D, 0x435E,\n    0x435F, 0x4360, 0x4360, 0x4361, 0x4362, 0x4362, 0x4362, 0x4363,\n    0x4363, 0x6F45, 0x6F41, 0x6F35, 0x6F23, 0x6F0A, 0x6EEC, 0x6EC9,\n    0x6EA2, 0x6E78, 0x6E4B, 0x6E1C, 0x6DED, 0x6DBD, 0x6D8D, 0x6D5F,\n    0x6D32, 0x6D08, 0x6CE1, 0x6CBE, 0x6CA0, 0x6C87, 0x6C74, 0x6C69,\n    0x6C65, 0x6C68, 0x6C71, 0x6C80, 0x6C94, 0x6CAC, 0x6CC8, 0x6CE8,\n    0x6D0B, 0x6D30, 0x6D58, 0x6D80, 0x6DAA, 0x6DD5, 0x6DFF, 0x6E29,\n    0x6E52, 0x6E79, 0x6E9F, 0x6EC1, 0x6EE1, 0x6EFE, 0x6F16, 0x6F2A,\n    0x6F38, 0x6F42, 0x6F45, 0xDC92, 0xDC92, 0xDC91, 0xDC90, 0xDC8E,\n    0xDC8C, 0xDC8A, 0xDC87, 0xDC85, 0xDC82, 0xDC7E, 0xDC7B, 0xDC78,\n    0xDC75, 0xDC72, 0xDC6F, 0xDC6C, 0xDC6A, 0xDC67, 0xDC65, 0xDC64,\n    0xDC63, 0xDC62, 0xDC61, 0xDC62, 0xDC62, 0xDC63, 0xDC65, 0xDC66,\n    0xDC68, 0xDC6A, 0xDC6C, 0xDC6F, 0xDC72, 0xDC74, 0xDC77, 0xDC7A,\n    0xDC7D, 0xDC7F, 0xDC82, 0xDC85, 0xDC87, 0xDC89, 0xDC8B, 0xDC8D,\n    0xDC8F, 0xDC90, 0xDC91, 0xDC92, 0xDC92, 0xFFEA, 0xFFE9, 0xFFE7,\n    0xFFE4, 0xFFE1, 0xFFDD, 0xFFD9, 0xFFD5, 0xFFD2, 0xFFCF, 0xFFCD,\n    0xFFCC, 0xFFCA, 0xFFC9, 0xFFC8, 0xFFC7, 0xFFC6, 0xFFC5, 0xFFC4,\n    0xFFC3, 0xFFC2, 0xFFC1, 0xFFC1, 0xFFC0, 0xFFC0, 0xFFBF, 0xFFBF,\n    0xFFBF, 0xFFBF, 0xFFBF, 0xFFBF, 0xFFC0, 0xFFC0, 0xFFC1, 0xFFC2,\n    0xFFC4, 0xFFC6, 0xFFC9, 0xFFCC, 0xFFCF, 0xFFD3, 0xFFD7, 0xFFDA,\n    0xFFDE, 0xFFE1, 0xFFE4, 0xFFE6, 0xFFE8, 0xFFE9, 0xFFEA, 0xFF30,\n    0xFF30, 0xFF30, 0xFF31, 0xFF32, 0xFF32, 0xFF33, 0xFF34, 0xFF34,\n    0xFF35, 0xFF35, 0xFF35, 0xFF36, 0xFF36, 0xFF36, 0xFF37, 0xFF37,\n    0xFF37, 0xFF37, 0xFF38, 0xFF38, 0xFF38, 0xFF38, 0xFF39, 0xFF39,\n    0xFF39, 0xFF39, 0xFF39, 0xFF39, 0xFF39, 0xFF39, 0xFF39, 0xFF39,\n    0xFF39, 0xFF39, 0xFF39, 0xFF38, 0xFF37, 0xFF37, 0xFF36, 0xFF35,\n    0xFF34, 0xFF34, 0xFF33, 0xFF32, 0xFF31, 0xFF31, 0xFF30, 0xFF30,\n    0xFF30, 0xCE0B, 0xCE2E, 0xCE8E, 0xCF1E, 0xCFD0, 0xD095, 0xD161,\n    0xD226, 0xD2D6, 0xD363, 0xD3BF, 0xD3FE, 0xD43D, 0xD47A, 0xD4B6,\n    0xD4EF, 0xD527, 0xD55C, 0xD58E, 0xD5BD, 0xD5E8, 0xD610, 0xD633,\n    0xD651, 0xD66B, 0xD680, 0xD68F, 0xD698, 0xD69A, 0xD697, 0xD68C,\n    0xD67A, 0xD661, 0xD63F, 0xD607, 0xD5AC, 0xD533, 0xD4A3, 0xD3FF,\n    0xD34F, 0xD296, 0xD1DA, 0xD120, 0xD06F, 0xCFCA, 0xCF37, 0xCEBB,\n    0xCE5D, 0xCE20, 0xCE0B, 0x2741, 0x274B, 0x276A, 0x279B, 0x27DC,\n    0x282A, 0x2885, 0x28EA, 0x2957, 0x29CA, 0x2A41, 0x2ABA, 0x2B34,\n    0x2BAB, 0x2C1F, 0x2C8D, 0x2D36, 0x2E32, 0x2F3B, 0x300C, 0x3061,\n    0x2FF6, 0x2EDD, 0x2D63, 0x2BA0, 0x29A7, 0x2790, 0x256F, 0x235B,\n    0x2169, 0x1FAE, 0x1E40, 0x1D34, 0x1CA1, 0x1C7A, 0x1C9C, 0x1CFF,\n    0x1D97, 0x1E5C, 0x1F43, 0x2043, 0x2152, 0x2265, 0x2374, 0x2474,\n    0x255C, 0x2621, 0x26BA, 0x271E, 0x2741, 0x2333, 0x170B, 0xAA0A,\n    0xBA4D, 0xBA4D, 0xBA4E, 0xBA51, 0xBA55, 0xBA5C, 0xBA65, 0xBA72,\n    0xBA82, 0xBA96, 0xBAAF, 0xBACD, 0xBAF1, 0xBB1A, 0xBB49, 0xBB80,\n    0xBBBE, 0xBC03, 0xBC51, 0xBCA7, 0xBD06, 0xBD6F, 0xBDE2, 0xBE60,\n    0xBF0B, 0xBFFC, 0xC127, 0xC27D, 0xC3F0, 0xC572, 0xC6F7, 0xC86F,\n    0xC9CC, 0xCB02, 0xCC03, 0xCCBF, 0xCD2B, 0xCD37, 0xCCB6, 0xCB99,\n    0xC9FF, 0xC808, 0xC5D5, 0xC386, 0xC13A, 0xBF11, 0xBD2B, 0xBBA8,\n    0xBAA9, 0xBA4D, 0x4A2F, 0x4A17, 0x49D5, 0x4972, 0x48F4, 0x4866,\n    0x47CE, 0x4734, 0x46A2, 0x461F, 0x45B4, 0x4553, 0x44EC, 0x4480,\n    0x440F, 0x439A, 0x4322, 0x42A8, 0x422D, 0x41B2, 0x4137, 0x40BE,\n    0x4047, 0x3FD4, 0x3F64, 0x3EF9, 0x3E95, 0x3E37, 0x3DE0, 0x3D92,\n    0x3D4E, 0x3D13, 0x3CE4, 0x3CC1, 0x3CAB, 0x3CA2, 0x3CA8, 0x3CBD,\n    0x3D1A, 0x3DE5, 0x3F09, 0x406E, 0x41FE, 0x43A2, 0x4544, 0x46CD,\n    0x4826, 0x4938, 0x49EE, 0x4A2F, 0xE71E, 0xE71D, 0xE71A, 0xE716,\n    0xE710, 0xE708, 0xE6FF, 0xE6F5, 0xE6EA, 0xE6DD, 0xE6D0, 0xE6C1,\n    0xE6B2, 0xE6A2, 0xE692, 0xE681, 0xE670, 0xE65E, 0xE64D, 0xE63B,\n    0xE629, 0xE618, 0xE606, 0xE5F6, 0xE5E5, 0xE5D5, 0xE5C6, 0xE5B8,\n    0xE5AA, 0xE59E, 0xE592, 0xE588, 0xE57F, 0xE578, 0xE571, 0xE56D,\n    0xE56A, 0xE569, 0xE572, 0xE58A, 0xE5AE, 0xE5DB, 0xE60E, 0xE644,\n    0xE67A, 0xE6AD, 0xE6DA, 0xE6FE, 0xE715, 0xE71E, 0xE79C, 0xE79D,\n    0xE7A0, 0xE7A5, 0xE7AC, 0xE7B4, 0xE7BE, 0xE7CA, 0xE7D7, 0xE7E5,\n    0xE7F4, 0xE804, 0xE815, 0xE827, 0xE83A, 0xE84D, 0xE860, 0xE874,\n    0xE888, 0xE89C, 0xE8B0, 0xE8C4, 0xE8D7, 0xE8EA, 0xE8FD, 0xE90F,\n    0xE920, 0xE930, 0xE93F, 0xE94D, 0xE95A, 0xE966, 0xE970, 0xE978,\n    0xE97F, 0xE984, 0xE987, 0xE989, 0xE97F, 0xE964, 0xE93B, 0xE909,\n    0xE8CF, 0xE892, 0xE855, 0xE81B, 0xE7E9, 0xE7C0, 0xE7A5, 0xE79C,\n    0x9BA4, 0x9BA6, 0x9BAB, 0x9BB3, 0x9BBE, 0x9BCC, 0x9BDD, 0x9BF0,\n    0x9C05, 0x9C1C, 0x9C35, 0x9C4F, 0x9C6B, 0x9C88, 0x9CA6, 0x9CC5,\n    0x9CE5, 0x9D05, 0x9D25, 0x9D46, 0x9D66, 0x9D86, 0x9DA6, 0x9DC5,\n    0x9DE3, 0x9E00, 0x9E1C, 0x9E37, 0x9E4F, 0x9E66, 0x9E7C, 0x9E8E,\n    0x9E9F, 0x9EAD, 0x9EB8, 0x9EC0, 0x9EC5, 0x9EC7, 0x9EB7, 0x9E8B,\n    0x9E49, 0x9DF7, 0x9D99, 0x9D36, 0x9CD2, 0x9C74, 0x9C22, 0x9BE0,\n    0x9BB4, 0x9BA4, 0x7FFF, 0x7FFF, 0x4171, 0xBF5F, 0x7FFF, 0x7FFF,\n    0x4171, 0xBF5F, 0x01E1, 0x0219, 0x02AF, 0x038D, 0x049B, 0x05C1,\n    0x06E6, 0x07F4, 0x08D3, 0x096A, 0x09A3, 0x0992, 0x095D, 0x0909,\n    0x089A, 0x0814, 0x077C, 0x06D5, 0x0623, 0x056B, 0x04B0, 0x03F8,\n    0x0345, 0x029C, 0x0201, 0x0163, 0x00B0, 0xFFF1, 0xFF27, 0xFE5B,\n    0xFD91, 0xFCD0, 0xFC1C, 0xFB7C, 0xFAF6, 0xFA8F, 0xFA4C, 0xFA34,\n    0xFA59, 0xFAC3, 0xFB65, 0xFC2F, 0xFD15, 0xFE09, 0xFEFD, 0xFFE3,\n    0x00AD, 0x014F, 0x01BA, 0x01E1, 0xFEFF, 0xFF15, 0xFF52, 0xFFAD,\n    0x001C, 0x0099, 0x0119, 0x0194, 0x0201, 0x0258, 0x028F, 0x02AD,\n    0x02C0, 0x02C9, 0x02CA, 0x02C5, 0x02BA, 0x02AC, 0x029C, 0x028B,\n    0x027B, 0x026F, 0x0266, 0x0263, 0x0267, 0x0275, 0x028D, 0x02AC,\n    0x02D1, 0x02F8, 0x031F, 0x0344, 0x0365, 0x037F, 0x038F, 0x0394,\n    0x038B, 0x0371, 0x033D, 0x02EC, 0x0284, 0x020B, 0x0189, 0x0103,\n    0x0080, 0x0006, 0xFF9D, 0xFF4A, 0xFF13, 0xFEFF, 0xEC5B, 0xEC61,\n    0xEC71, 0xEC89, 0xECA6, 0xECC6, 0xECE6, 0xED03, 0xED1C, 0xED2E,\n    0xED37, 0xED37, 0xED32, 0xED29, 0xED1C, 0xED0D, 0xECFD, 0xECEB,\n    0xECDA, 0xECC9, 0xECB9, 0xECAC, 0xECA2, 0xEC9C, 0xEC9B, 0xEC9F,\n    0xECA9, 0xECB8, 0xECCA, 0xECDF, 0xECF5, 0xED0B, 0xED21, 0xED34,\n    0xED44, 0xED51, 0xED58, 0xED59, 0xED52, 0xED43, 0xED2D, 0xED13,\n    0xECF5, 0xECD6, 0xECB7, 0xEC9B, 0xEC81, 0xEC6D, 0xEC60, 0xEC5B,\n    0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDA, 0xFFDA, 0xFFDA,\n    0xFFDA, 0xFFD9, 0xFFD9, 0xFFD9, 0xFFD9, 0xFFD9, 0xFFD9, 0xFFD9,\n    0xFFDA, 0xFFDA, 0xFFDA, 0xFFDA, 0xFFDA, 0xFFDA, 0xFFDA, 0xFFDA,\n    0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB,\n    0xFFDC, 0xFFDC, 0xFFDC, 0xFFDC, 0xFFDC, 0xFFDC, 0xFFDC, 0xFFDC,\n    0xFFDC, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB, 0xFFDB,\n    0xFFDB, 0xFFDB, 0xFC30, 0xFBF1, 0xFB43, 0xFA41, 0xF903, 0xF7A2,\n    0xF637, 0xF4DC, 0xF3A9, 0xF2B9, 0xF223, 0xF200, 0xF231, 0xF280,\n    0xF2EA, 0xF36D, 0xF407, 0xF4B3, 0xF56F, 0xF638, 0xF70C, 0xF7E7,\n    0xF8C6, 0xF9A8, 0xFA88, 0xFB64, 0xFC39, 0xFD04, 0xFDC2, 0xFE71,\n    0xFF0D, 0xFF94, 0x0001, 0x0054, 0x0084, 0x0090, 0x007A, 0x0049,\n    0x0000, 0xFFA6, 0xFF3D, 0xFECC, 0xFE56, 0xFDE0, 0xFD70, 0xFD09,\n    0xFCB1, 0xFC6D, 0xFC40, 0xFC30, 0xFC1C, 0xFC1C, 0xFC1C, 0xFC1D,\n    0xFC1F, 0xFC20, 0xFC21, 0xFC23, 0xFC24, 0xFC25, 0xFC25, 0xFC25,\n    0xFC25, 0xFC25, 0xFC24, 0xFC24, 0xFC23, 0xFC23, 0xFC22, 0xFC21,\n    0xFC21, 0xFC20, 0xFC1F, 0xFC1E, 0xFC1D, 0xFC1C, 0xFC1C, 0xFC1B,\n    0xFC1A, 0xFC1A, 0xFC19, 0xFC18, 0xFC18, 0xFC18, 0xFC18, 0xFC18,\n    0xFC18, 0xFC18, 0xFC18, 0xFC18, 0xFC19, 0xFC19, 0xFC1A, 0xFC1A,\n    0xFC1A, 0xFC1B, 0xFC1B, 0xFC1B, 0xFC1B, 0xFC1C, 0xFF94, 0xFF94,\n    0xFF94, 0xFF93, 0xFF93, 0xFF92, 0xFF91, 0xFF90, 0xFF90, 0xFF8F,\n    0xFF8F, 0xFF8F, 0xFF8F, 0xFF8F, 0xFF90, 0xFF90, 0xFF90, 0xFF90,\n    0xFF91, 0xFF91, 0xFF91, 0xFF92, 0xFF92, 0xFF92, 0xFF93, 0xFF93,\n    0xFF93, 0xFF94, 0xFF94, 0xFF94, 0xFF95, 0xFF95, 0xFF95, 0xFF95,\n    0xFF95, 0xFF95, 0xFF96, 0xFF96, 0xFF96, 0xFF95, 0xFF95, 0xFF95,\n    0xFF95, 0xFF95, 0xFF95, 0xFF95, 0xFF95, 0xFF95, 0xFF95, 0xFF94,\n    0x0580, 0x05BF, 0x0667, 0x075D, 0x0887, 0x09C8, 0x0B05, 0x0C21,\n    0x0D03, 0x0D8E, 0x0DA6, 0x0D70, 0x0D23, 0x0CC0, 0x0C4B, 0x0BC5,\n    0x0B30, 0x0A8E, 0x09E1, 0x092C, 0x0870, 0x07AF, 0x06EC, 0x0628,\n    0x0566, 0x04A8, 0x03EF, 0x033E, 0x0297, 0x01FC, 0x016E, 0x00F1,\n    0x0085, 0x002E, 0xFFEE, 0xFFD1, 0xFFE3, 0x001A, 0x0074, 0x00E8,\n    0x0170, 0x0205, 0x02A1, 0x033D, 0x03D3, 0x045C, 0x04D2, 0x052F,\n    0x056B, 0x0580, 0x3F76, 0x3F75, 0x3F73, 0x3F70, 0x3F6D, 0x3F6A,\n    0x3F66, 0x3F63, 0x3F61, 0x3F5F, 0x3F5F, 0x3F5F, 0x3F60, 0x3F61,\n    0x3F63, 0x3F64, 0x3F66, 0x3F67, 0x3F69, 0x3F6B, 0x3F6D, 0x3F6F,\n    0x3F71, 0x3F73, 0x3F75, 0x3F77, 0x3F79, 0x3F7B, 0x3F7D, 0x3F7F,\n    0x3F80, 0x3F82, 0x3F83, 0x3F84, 0x3F84, 0x3F85, 0x3F85, 0x3F84,\n    0x3F83, 0x3F82, 0x3F80, 0x3F7F, 0x3F7D, 0x3F7C, 0x3F7A, 0x3F79,\n    0x3F77, 0x3F77, 0x3F76, 0x3F76,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_34.inc.c",
    "content": "static const struct Animation anim_34[] = {\n    1,\n    189,\n    0,\n    0,\n    0x10,\n    ANIMINDEX_NUMPARTS(anim_34_indices),\n    anim_34_values,\n    anim_34_indices,\n    0,\n};\n\n\nstatic const u16 anim_34_indices[] = {\n    0x0010, 0x0001, 0x0010, 0x0011, 0x0010, 0x0021, 0x0001, 0x0000, 0x0001, 0x0031, 0x0001, 0x0000,\n    0x0010, 0x025A, 0x0010, 0x026A, 0x0010, 0x027A,\n    0x0010, 0x022A, 0x0010, 0x023A, 0x0010, 0x024A,\n    0x0010, 0x01FA, 0x0010, 0x020A, 0x0010, 0x021A,\n    0x0001, 0x01F6, 0x0001, 0x01F7, 0x0001, 0x01F8,\n    0x0010, 0x0072, 0x0010, 0x0082, 0x0010, 0x0092,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x0062,\n    0x0010, 0x0032, 0x0010, 0x0042, 0x0010, 0x0052,\n    0x0001, 0x01F2, 0x0001, 0x01F3, 0x0001, 0x01F4,\n    0x0010, 0x00E2, 0x0010, 0x00F2, 0x0010, 0x0102,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x00D2,\n    0x0010, 0x00A2, 0x0010, 0x00B2, 0x0010, 0x00C2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01F5,\n    0x0010, 0x01C2, 0x0010, 0x01D2, 0x0010, 0x01E2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x01B2,\n    0x0010, 0x0182, 0x0010, 0x0192, 0x0010, 0x01A2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01F9,\n    0x0010, 0x0152, 0x0010, 0x0162, 0x0010, 0x0172,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x0142,\n    0x0010, 0x0112, 0x0010, 0x0122, 0x0010, 0x0132,\n};\n\nstatic const s16 anim_34_values[] = {\n    0x0000, 0x0007, 0x0007, 0x0007, 0x0007, 0x0006, 0x0005, 0x0004,\n    0x0003, 0x0002, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xFEF0, 0xFF56, 0xFFA5, 0x0058, 0x00A7, 0x00D2, 0x00CD,\n    0x00C0, 0x00B0, 0x0090, 0x0088, 0x0096, 0x009E, 0x00A4, 0x00AA,\n    0x00AA, 0xFFA4, 0xFF6C, 0xFF60, 0xFF86, 0xFFA8, 0xFFCC, 0xFFF9,\n    0x0028, 0x004E, 0x0042, 0x003F, 0x003F, 0x003E, 0x003E, 0x003E,\n    0x003A, 0x3FFF, 0x17FE, 0x0206, 0x0C2C, 0x1C2F, 0x0343, 0xF069,\n    0xF4D7, 0xFA65, 0xFF82, 0x029B, 0x0381, 0x0354, 0x027C, 0x0160,\n    0x0069, 0x0000, 0xFF33, 0xFE3D, 0xFD05, 0xEA87, 0x0173, 0x06EC,\n    0x02CA, 0xFE4C, 0xFA57, 0xF7D5, 0xF6ED, 0xF6F2, 0xF78C, 0xF866,\n    0xF928, 0xF97C, 0xF1E5, 0xE9BD, 0xE45E, 0xDA85, 0xF20F, 0xF506,\n    0xF276, 0xEFB3, 0xED4C, 0xEBD0, 0xEB5A, 0xEB83, 0xEC0B, 0xECB8,\n    0xED4D, 0xED8C, 0xF503, 0xD1C3, 0xD263, 0xEA03, 0xF2F2, 0xD286,\n    0xC8CE, 0xC1C9, 0xBD5E, 0xBB77, 0xCF25, 0xD039, 0xCF39, 0xCD33,\n    0xCB35, 0xCA4F, 0xAAD0, 0x9474, 0x8F7F, 0x9200, 0xA7EB, 0x9019,\n    0xB495, 0xE752, 0x1A4F, 0x49E5, 0xE757, 0xF524, 0xFB83, 0xFCF6,\n    0xFBFE, 0xFB1D, 0x956B, 0x9FF0, 0x9FBE, 0x8B1F, 0x8DF5, 0xA31B,\n    0xA769, 0xAB44, 0xAD38, 0xA52C, 0xE00E, 0xDFF4, 0xDCD7, 0xD875,\n    0xD48D, 0xD2DC, 0xE0E1, 0x0B1E, 0x1719, 0x0EDE, 0xF9A6, 0x1C82,\n    0x00FD, 0xD7AF, 0xABEB, 0x7799, 0xE84D, 0xDB55, 0xD51B, 0xD367,\n    0xD402, 0xD4B4, 0xF32C, 0xFEA5, 0x0633, 0x140A, 0x0EA9, 0x0B9D,\n    0x08A4, 0x05EA, 0x039D, 0x01EB, 0x00D9, 0x003C, 0xFFF6, 0xFFE8,\n    0xFFF6, 0x0000, 0x066E, 0x17A0, 0x22F5, 0x37B4, 0x0D26, 0x070E,\n    0x04B4, 0x0492, 0x0521, 0x04DC, 0x03AB, 0x0289, 0x0188, 0x00BA,\n    0x0031, 0x0000, 0xF3C7, 0xF5FC, 0xF770, 0xFA1B, 0xEEFE, 0xEF22,\n    0xF090, 0xF299, 0xF48C, 0xF5BB, 0xF618, 0xF620, 0xF5F0, 0xF5A8,\n    0xF566, 0xF549, 0xF8AB, 0xCC20, 0xCF53, 0xEDAB, 0xE6DE, 0xDC32,\n    0xCF82, 0xC2A8, 0xB780, 0xAFE5, 0xC926, 0xCB92, 0xCB93, 0xCA3C,\n    0xC8A3, 0xC7DD, 0x4363, 0x420C, 0x3A54, 0x407B, 0x38AC, 0x3F16,\n    0x4869, 0x5023, 0x51C0, 0x29F0, 0x1FA4, 0x16BB, 0x0F6D, 0x09F1,\n    0x067E, 0x054B, 0x6F45, 0x56FD, 0x5771, 0x65A2, 0x6A93, 0x5CD2,\n    0x4C51, 0x3B10, 0x2B0C, 0x20EF, 0x21D1, 0x23DC, 0x2678, 0x290F,\n    0x2B0B, 0x2BD6, 0xDC92, 0xF041, 0xF403, 0xFEFD, 0xF599, 0xFDFA,\n    0x09B8, 0x142F, 0x18B6, 0xF5A6, 0xEB1F, 0xE17B, 0xD930, 0xD2B3,\n    0xCE79, 0xCCF6, 0xFFEA, 0xFFEE, 0xFFDF, 0xFF74, 0xFF7E, 0xFFA8,\n    0x004A, 0x0296, 0x0464, 0x048F, 0x02C7, 0x02CF, 0x020F, 0x0120,\n    0x0055, 0x0000, 0xFF30, 0xFF2B, 0xFF2E, 0xFF65, 0xFF6A, 0xFF66,\n    0xFF60, 0xFF59, 0xFF4D, 0xFF90, 0xFFC3, 0xFF4F, 0xFF3A, 0xFF31,\n    0xFF2F, 0xFF30, 0xCE0B, 0xCD15, 0xD022, 0xE7B6, 0xDAFD, 0xC753,\n    0xB810, 0xB61C, 0xB94E, 0xAF21, 0xAD12, 0xB5F8, 0xBC4F, 0xC2C8,\n    0xC7D1, 0xC9D8, 0x2741, 0x27B2, 0x2619, 0x1A37, 0x2708, 0x3883,\n    0x42BF, 0x3614, 0x2769, 0x3EA2, 0x449D, 0x37E1, 0x2F92, 0x2740,\n    0x20D9, 0x1E4A, 0x2333, 0x14EB, 0x06FE, 0x2575, 0x255B, 0x1FEB,\n    0x1B46, 0x1ADC, 0x1A65, 0x1458, 0x12F6, 0x1623, 0x17CF, 0x1965,\n    0x1A92, 0x1B09, 0x170B, 0x100E, 0x0845, 0x11F7, 0x165C, 0x19F4,\n    0x1B78, 0x1710, 0x1234, 0x18E4, 0x19D2, 0x16D5, 0x1500, 0x1331,\n    0x11D1, 0x1144, 0xAA0A, 0xA490, 0x9FD0, 0xAEB6, 0xAC1D, 0xA66C,\n    0xA2D7, 0xA6ED, 0xAABF, 0x9EDB, 0x9C8C, 0xA278, 0xA5C4, 0xA8F0,\n    0xAB53, 0xAC44, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFDE, 0xFFB5,\n    0xFF9F, 0xFFB9, 0xFFEB, 0xFB71, 0xFAB7, 0xFA4D, 0xFD1F, 0x0000,\n    0xFFF2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x002C, 0x0065,\n    0x00A3, 0x00F4, 0x0138, 0x0062, 0xFFC3, 0x0021, 0x0015, 0xFFF7,\n    0xFFED, 0x0000, 0xBA4D, 0xBFCD, 0xCB6A, 0xE16A, 0xD815, 0xC8D9,\n    0xBD1A, 0xBCFD, 0xBF12, 0xA94B, 0xAC43, 0xAF56, 0xB4C8, 0xBA53,\n    0xBE05, 0xBF40, 0x4A2F, 0x3AFB, 0x24F6, 0x1E97, 0x29BE, 0x3848,\n    0x40DA, 0x36AA, 0x2AEA, 0x3EE1, 0x41F7, 0x3A9A, 0x3407, 0x2D08,\n    0x277A, 0x2537, 0xE71E, 0xE954, 0xEA47, 0xDF0C, 0xE193, 0xE677,\n    0xE86C, 0xE16E, 0xD8AD, 0xDA04, 0xDC74, 0xD981, 0xD84F, 0xD748,\n    0xD690, 0xD64A, 0xE79C, 0xF0F2, 0xFCD4, 0xF7E5, 0xF288, 0xECD7,\n    0xE8C2, 0xE927, 0xEAB1, 0xE7B6, 0xE2CF, 0xE6BF, 0xE8AB, 0xEA72,\n    0xEBBF, 0xEC41, 0x9BA4, 0x98E7, 0x994A, 0xAFAA, 0xB089, 0xADC4,\n    0xAC11, 0xAEBF, 0xB1BE, 0xAF39, 0xAB2D, 0xAFEC, 0xB1FC, 0xB3D0,\n    0xB51F, 0xB59E, 0x7FFF, 0x7FFF, 0x4171, 0xBF5F, 0x7FFF, 0x7FFF,\n    0x4171, 0xBF5F, 0x01E1, 0x01CA, 0x0192, 0x0153, 0x0112, 0x00CB,\n    0x0083, 0x003D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xFEFF, 0xFECC, 0xFE72, 0xFE54, 0xFE8A, 0xFEE0,\n    0xFF46, 0xFFAB, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xEC5B, 0xF018, 0xF78C, 0xFD0E, 0xFEFA, 0xFFD2,\n    0x0027, 0x008D, 0x0197, 0x065B, 0x051A, 0x031B, 0x00CF, 0xFEA3,\n    0xFD04, 0xFC62, 0xFFDB, 0xFF4D, 0xFE1F, 0xFD09, 0xFC81, 0xFD41,\n    0xFE33, 0xFF2C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xFC30, 0xFC73, 0xFD06, 0xFD98, 0xFE28, 0xFEA5,\n    0xFF22, 0xFF99, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xFC1C, 0x02D1, 0x113F, 0x1ED1, 0x274D, 0x22E4,\n    0x1C89, 0x15CD, 0x1041, 0x1128, 0x1097, 0x0F03, 0x0CEB, 0x0ACD,\n    0x092B, 0x0884, 0xFF94, 0xFF77, 0xFFC7, 0x0255, 0x024C, 0x022E,\n    0x01FE, 0x01C1, 0x017B, 0x0130, 0x00E5, 0x009E, 0x005F, 0x002D,\n    0x000C, 0x0000, 0x0580, 0x058F, 0x0589, 0x0501, 0x048F, 0x040F,\n    0x0386, 0x02F9, 0x026B, 0x01E1, 0x0161, 0x00EE, 0x008C, 0x0041,\n    0x0011, 0x0000, 0x3F76, 0x3EAD, 0x412A, 0x5469, 0x53FD, 0x52E4,\n    0x5141, 0x4F36, 0x4CE7, 0x4A76, 0x4805, 0x45B9, 0x43B3, 0x4215,\n    0x4104, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_35.inc.c",
    "content": "static const struct Animation anim_35[] = {\n    1,\n    189,\n    0,\n    0,\n    0x36,\n    ANIMINDEX_NUMPARTS(anim_35_indices),\n    anim_35_values,\n    anim_35_indices,\n    0,\n};\n\n\nstatic const u16 anim_35_indices[] = {\n    0x0036, 0x0001, 0x0036, 0x0037, 0x0036, 0x006D, 0x0001, 0x0000, 0x0001, 0x00A3, 0x0001, 0x0000,\n    0x0036, 0x069A, 0x0036, 0x06D0, 0x0036, 0x0706,\n    0x0036, 0x05F8, 0x0036, 0x062E, 0x0036, 0x0664,\n    0x0036, 0x0556, 0x0036, 0x058C, 0x0036, 0x05C2,\n    0x0001, 0x0552, 0x0001, 0x0553, 0x0001, 0x0554,\n    0x0036, 0x00DD, 0x0036, 0x0113, 0x0036, 0x0149,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0036, 0x00A7,\n    0x0001, 0x00A4, 0x0001, 0x00A5, 0x0001, 0x00A6,\n    0x0001, 0x054E, 0x0001, 0x054F, 0x0001, 0x0550,\n    0x0036, 0x01B8, 0x0036, 0x01EE, 0x0036, 0x0224,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0036, 0x0182,\n    0x0001, 0x017F, 0x0001, 0x0180, 0x0001, 0x0181,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0551,\n    0x0036, 0x04AC, 0x0036, 0x04E2, 0x0036, 0x0518,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0036, 0x0476,\n    0x0036, 0x03D4, 0x0036, 0x040A, 0x0036, 0x0440,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0555,\n    0x0036, 0x0332, 0x0036, 0x0368, 0x0036, 0x039E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0036, 0x02FC,\n    0x0036, 0x025A, 0x0036, 0x0290, 0x0036, 0x02C6,\n};\n\nstatic const s16 anim_35_values[] = {\n    0x0000, 0x001B, 0x001A, 0x0017, 0x0013, 0x000E, 0x0009, 0x0004,\n    0x0000, 0xFFFD, 0xFFFD, 0x0000, 0x0002, 0x0005, 0x0008, 0x000B,\n    0x000F, 0x0012, 0x0015, 0x0018, 0x001B, 0x001D, 0x001F, 0x0022,\n    0x0023, 0x0024, 0x0022, 0x0020, 0x001D, 0x001B, 0x001A, 0x001B,\n    0x001D, 0x001F, 0x0022, 0x0023, 0x0024, 0x0023, 0x0021, 0x001F,\n    0x001D, 0x001B, 0x0018, 0x0017, 0x0016, 0x0015, 0x0016, 0x0016,\n    0x0017, 0x0017, 0x0018, 0x0019, 0x001A, 0x001A, 0x001A, 0x00BD,\n    0x00BE, 0x00C4, 0x00CE, 0x00DA, 0x00E7, 0x00F3, 0x00FD, 0x0105,\n    0x0103, 0x00FB, 0x00F3, 0x00EA, 0x00E1, 0x00D9, 0x00D1, 0x00C9,\n    0x00C3, 0x00BF, 0x00BF, 0x00C1, 0x00C5, 0x00C8, 0x00CA, 0x00C9,\n    0x00C8, 0x00C7, 0x00C5, 0x00C3, 0x00C2, 0x00C2, 0x00C2, 0x00C2,\n    0x00C3, 0x00C3, 0x00C3, 0x00C3, 0x00C3, 0x00C3, 0x00C3, 0x00C2,\n    0x00C2, 0x00C2, 0x00C1, 0x00C1, 0x00C0, 0x00C0, 0x00BF, 0x00BF,\n    0x00BE, 0x00BD, 0x00BD, 0x00BD, 0x00BD, 0x0000, 0x0008, 0x0011,\n    0x0028, 0x0043, 0x005E, 0x0072, 0x0074, 0x006D, 0x0068, 0x0060,\n    0x0059, 0x0051, 0x0045, 0x0035, 0x001F, 0x0004, 0xFFE7, 0xFFC9,\n    0xFFAA, 0xFF8E, 0xFF76, 0xFF63, 0xFF57, 0xFF58, 0xFF66, 0xFF7C,\n    0xFF96, 0xFFAE, 0xFFC1, 0xFFD0, 0xFFDF, 0xFFED, 0xFFF8, 0xFFFF,\n    0x0000, 0xFFFB, 0xFFEF, 0xFFE0, 0xFFCF, 0xFFBF, 0xFFB0, 0xFFA6,\n    0xFFA2, 0xFFA5, 0xFFAC, 0xFFB7, 0xFFC4, 0xFFD2, 0xFFE0, 0xFFEC,\n    0xFFF7, 0xFFFE, 0x0000, 0x3FFF, 0xFF8A, 0xF980, 0xF06F, 0xF843,\n    0xF854, 0xF87F, 0xF8B9, 0xF8F6, 0xF92B, 0xF94D, 0xF950, 0xF928,\n    0xF8CC, 0xF82E, 0xF744, 0xF5E7, 0xF403, 0xF1A8, 0xEEE6, 0xEBCE,\n    0xE870, 0xE4DB, 0xDE6B, 0xD65E, 0xD29F, 0xD355, 0xD4A6, 0xD674,\n    0xD8A3, 0xDB17, 0xDDB4, 0xE05D, 0xE2F5, 0xE560, 0xE782, 0xE93E,\n    0xEA77, 0xEB5A, 0xEC26, 0xECDC, 0xED7D, 0xEE0A, 0xEE85, 0xEEEF,\n    0xEF4A, 0xEF96, 0xEFD4, 0xF007, 0xF02F, 0xF04D, 0xF064, 0xF073,\n    0xF07D, 0xF082, 0xF085, 0xF085, 0xF085, 0xCEC0, 0xCE7B, 0xCDBB,\n    0xCC9B, 0xCB34, 0xC9A0, 0xC7F7, 0xC653, 0xC4CD, 0xC380, 0xC284,\n    0xC1D2, 0xC14B, 0xC0EB, 0xC0AC, 0xC087, 0xC078, 0xC077, 0xC080,\n    0xC07A, 0xC057, 0xC020, 0xBFDB, 0xBF90, 0xBF48, 0xBF0A, 0xBEDD,\n    0xBECA, 0xBED7, 0xBF0E, 0xBF74, 0xC013, 0xC0F2, 0xC218, 0xC38E,\n    0xC571, 0xC7D1, 0xCA9C, 0xCDC0, 0xD12D, 0xD4D2, 0xD89D, 0xDC7D,\n    0xE060, 0xE437, 0xE7EF, 0xEB77, 0xEEBF, 0xF1B4, 0xF447, 0xF664,\n    0xF7FD, 0xF8FE, 0xF958, 0xEEF0, 0xEE1C, 0xEBD2, 0xE857, 0xE3F5,\n    0xDEF3, 0xD999, 0xD42E, 0xCEFA, 0xCA46, 0xC658, 0xC2B1, 0xBECD,\n    0xBAED, 0xB755, 0xB446, 0xB202, 0xB0CB, 0xB0E3, 0xB20A, 0xB3C5,\n    0xB5FF, 0xB8A3, 0xBB9B, 0xBED3, 0xC234, 0xC5AB, 0xC921, 0xCC82,\n    0xCFB9, 0xD2AF, 0xD551, 0xD789, 0xD941, 0xDA65, 0xDB07, 0xDB50,\n    0xDB4A, 0xDAFC, 0xDA70, 0xD9B1, 0xD8C5, 0xD7B8, 0xD692, 0xD55C,\n    0xD420, 0xD2E6, 0xD1B9, 0xD0A0, 0xCFA6, 0xCED3, 0xCE32, 0xCDCA,\n    0xCDA5, 0x0959, 0x09A8, 0x0A82, 0x0BCB, 0x0D63, 0x0F30, 0x1112,\n    0x12EE, 0x14A6, 0x161C, 0x1733, 0x17F5, 0x1881, 0x18E0, 0x1917,\n    0x192F, 0x192E, 0x191B, 0x18FD, 0x18EF, 0x1900, 0x1929, 0x195F,\n    0x199B, 0x19D4, 0x1A03, 0x1A1D, 0x1A1B, 0x19F4, 0x19A0, 0x1916,\n    0x184D, 0x173E, 0x15DF, 0x1428, 0x11F6, 0x0F38, 0x0C01, 0x0865,\n    0x0477, 0x004B, 0xFBF6, 0xF788, 0xF317, 0xEEB5, 0xEA77, 0xE66F,\n    0xE2B2, 0xDF52, 0xDC64, 0xD9FB, 0xD829, 0xD704, 0xD69E, 0x0F57,\n    0x0217, 0xF7EF, 0xF913, 0xF945, 0xF9CC, 0xFA8F, 0xFB7A, 0xFC74,\n    0xFD67, 0xFE3C, 0xFEDC, 0xFF30, 0xFF56, 0xFF7A, 0xFF9D, 0xFFBF,\n    0xFFDF, 0xFFFE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xFF84, 0xFE7D, 0xFD24, 0xFBB3, 0xFA64, 0xF971, 0xF913,\n    0x0DB8, 0x0D0A, 0x0B48, 0x08E2, 0x0646, 0x03E2, 0x0227, 0x0181,\n    0x01B6, 0x0237, 0x02F9, 0x03EF, 0x050E, 0x064A, 0x0797, 0x08E9,\n    0x0A35, 0x0B6E, 0x0C8A, 0x0D7B, 0x0E36, 0x0EAF, 0x0EDB, 0x0EAD,\n    0x0DE8, 0x0C70, 0x0A69, 0x07F9, 0x0546, 0x0273, 0xFFA9, 0xFD09,\n    0xFABB, 0xF8E4, 0xF7A8, 0xF72E, 0xF7F7, 0xFA27, 0xFD54, 0x0114,\n    0x04FF, 0x08AB, 0x0BAE, 0x0D9F, 0x0EA5, 0x0F3E, 0x0F7B, 0x0F72,\n    0x0F34, 0x0ED6, 0x0E6B, 0x0E06, 0x0DBC, 0x0D9F, 0x1A58, 0x1A82,\n    0x1AEE, 0x1B81, 0x1C21, 0x1CB1, 0x1D16, 0x1D35, 0x1D1F, 0x1CF9,\n    0x1CC3, 0x1C82, 0x1C37, 0x1BE4, 0x1B8D, 0x1B33, 0x1ADA, 0x1A83,\n    0x1A31, 0x19E7, 0x19A6, 0x1972, 0x194D, 0x1938, 0x193D, 0x195B,\n    0x198F, 0x19D3, 0x1A24, 0x1A7B, 0x1AD4, 0x1B2B, 0x1B7A, 0x1BBD,\n    0x1BEE, 0x1C0A, 0x1C06, 0x1BE1, 0x1BA6, 0x1B5D, 0x1B10, 0x1AC6,\n    0x1A8A, 0x1A64, 0x1A51, 0x1A45, 0x1A41, 0x1A42, 0x1A46, 0x1A4D,\n    0x1A55, 0x1A5C, 0x1A62, 0x1A64, 0x5C3E, 0x5B2C, 0x5869, 0x54A3,\n    0x508A, 0x4CCB, 0x4A15, 0x4915, 0x496E, 0x4A3F, 0x4B76, 0x4D01,\n    0x4ECC, 0x50C5, 0x52D9, 0x54F6, 0x5707, 0x58FC, 0x5AC1, 0x5C43,\n    0x5D6F, 0x5E34, 0x5E7D, 0x5E39, 0x5D06, 0x5AB8, 0x578A, 0x53B5,\n    0x4F75, 0x4B04, 0x469D, 0x427A, 0x3ED6, 0x3BEC, 0x39F6, 0x392F,\n    0x3A61, 0x3DC3, 0x42AF, 0x4882, 0x4E98, 0x544B, 0x58F9, 0x5BFC,\n    0x5D93, 0x5E7F, 0x5EDF, 0x5ED0, 0x5E70, 0x5DDF, 0x5D39, 0x5C9D,\n    0x5C29, 0x5BFC, 0xFF98, 0xFF9D, 0xFFAA, 0xFFBE, 0xFFD4, 0xFFEB,\n    0x0000, 0x0011, 0x001B, 0x0021, 0x0024, 0x0027, 0x0028, 0x0028,\n    0x0027, 0x0026, 0x0024, 0x0022, 0x0020, 0x001E, 0x001D, 0x001C,\n    0x001B, 0x001B, 0x001B, 0x001B, 0x001B, 0x001B, 0x001B, 0x001B,\n    0x001B, 0x001B, 0x001B, 0x001B, 0x001B, 0x001B, 0x001B, 0x001B,\n    0x001B, 0x001B, 0x001B, 0x001B, 0x001B, 0x001B, 0x001B, 0x001B,\n    0x001B, 0x001B, 0x001B, 0x001B, 0x001B, 0x001B, 0x001B, 0x001B,\n    0x0253, 0x0253, 0x0254, 0x0255, 0x0257, 0x0258, 0x025A, 0x025B,\n    0x025B, 0x025C, 0x025C, 0x025C, 0x025C, 0x025C, 0x025C, 0x025C,\n    0x025C, 0x025C, 0x025C, 0x025C, 0x025B, 0x025B, 0x025B, 0x025B,\n    0x025B, 0x025B, 0x025B, 0x025B, 0x025B, 0x025B, 0x025B, 0x025B,\n    0x025B, 0x025B, 0x025B, 0x025B, 0x025B, 0x025B, 0x025B, 0x025B,\n    0x025B, 0x025B, 0x025B, 0x025B, 0x025B, 0x025B, 0x025B, 0x025B,\n    0x025B, 0x025B, 0x025B, 0x025B, 0x025B, 0x025B, 0xC22B, 0xC282,\n    0xC36B, 0xC4B9, 0xC640, 0xC7D4, 0xC949, 0xCA72, 0xCB25, 0xCB7F,\n    0xCBBF, 0xCBE7, 0xCBFA, 0xCBFD, 0xCBF2, 0xCBDC, 0xCBBF, 0xCB9D,\n    0xCB7A, 0xCB5A, 0xCB3F, 0xCB2C, 0xCB25, 0xCB25, 0xCB25, 0xCB25,\n    0xCB25, 0xCB25, 0xCB25, 0xCB25, 0xCB25, 0xCB25, 0xCB25, 0xCB25,\n    0xCB25, 0xCB25, 0xCB25, 0xCB25, 0xCB25, 0xCB25, 0xCB25, 0xCB25,\n    0xCB25, 0xCB25, 0xCB25, 0xCB25, 0xCB25, 0xCB25, 0xCB25, 0xCB25,\n    0xCB25, 0xCB25, 0xCB25, 0xCB25, 0x3DA9, 0x3BE6, 0x373E, 0x30A3,\n    0x2906, 0x2156, 0x1A87, 0x1588, 0x134B, 0x133B, 0x140B, 0x159A,\n    0x17C5, 0x1A6A, 0x1D67, 0x209A, 0x23E0, 0x2718, 0x2A1E, 0x2CD2,\n    0x2F10, 0x30B8, 0x31A5, 0x318F, 0x306B, 0x2E7B, 0x2BFF, 0x2937,\n    0x2662, 0x23C2, 0x2197, 0x2020, 0x1F9F, 0x2052, 0x2272, 0x25DD,\n    0x2A4C, 0x2F7C, 0x3526, 0x3B07, 0x40D8, 0x4655, 0x4B38, 0x4F3D,\n    0x50CA, 0x5004, 0x4F3D, 0x4F3B, 0x4F38, 0x4F35, 0x4F32, 0x4F30,\n    0x4F2E, 0x4F2E, 0x0E9B, 0x0EA3, 0x0EB8, 0x0ED3, 0x0EF1, 0x0F0B,\n    0x0F1C, 0x0F1E, 0x0F0D, 0x0EEB, 0x0EBE, 0x0E89, 0x0E4E, 0x0E0E,\n    0x0DCB, 0x0D87, 0x0D44, 0x0D03, 0x0CC6, 0x0C90, 0x0C62, 0x0C3D,\n    0x0C25, 0x0C1A, 0x0C1B, 0x0C29, 0x0C3F, 0x0C5D, 0x0C80, 0x0CA7,\n    0x0CD0, 0x0CF9, 0x0D20, 0x0D42, 0x0D65, 0x0D8A, 0x0DB2, 0x0DDC,\n    0x0E07, 0x0E31, 0x0E5A, 0x0E82, 0x0EA7, 0x0EC8, 0x0ED8, 0x0ED7,\n    0x0ED8, 0x0EE3, 0x0EF1, 0x0F00, 0x0F0E, 0x0F1B, 0x0F23, 0x0F26,\n    0xFBE4, 0xFC2B, 0xFCE5, 0xFDE9, 0xFF0F, 0x002C, 0x0119, 0x01AF,\n    0x01C2, 0x016B, 0x00DF, 0x0028, 0xFF50, 0xFE5D, 0xFD58, 0xFC4B,\n    0xFB3E, 0xFA3A, 0xF947, 0xF86F, 0xF7B9, 0xF72F, 0xF6D9, 0xF6C4,\n    0xF6EF, 0xF74E, 0xF7D6, 0xF87C, 0xF933, 0xF9EF, 0xFAA6, 0xFB4B,\n    0xFBD3, 0xFC31, 0xFC6C, 0xFC92, 0xFCA7, 0xFCAF, 0xFCAD, 0xFCA6,\n    0xFC9D, 0xFC96, 0xFC94, 0xFC9C, 0xFCA3, 0xFCB0, 0xFCE7, 0xFD52,\n    0xFDDC, 0xFE73, 0xFF06, 0xFF84, 0xFFDC, 0xFFFD, 0xBDEA, 0xBD30,\n    0xBB48, 0xB89F, 0xB5A0, 0xB2B7, 0xB04F, 0xAED4, 0xAEB1, 0xAFAC,\n    0xB132, 0xB32D, 0xB585, 0xB822, 0xBAEE, 0xBDD0, 0xC0B1, 0xC37A,\n    0xC614, 0xC866, 0xCA5A, 0xCBD8, 0xCCC8, 0xCD0A, 0xCC9F, 0xCBA8,\n    0xCA41, 0xC88C, 0xC6A5, 0xC4AD, 0xC2C2, 0xC102, 0xBF8D, 0xBE81,\n    0xBDCF, 0xBD4D, 0xBCF3, 0xBCB7, 0xBC91, 0xBC7A, 0xBC68, 0xBC54,\n    0xBC34, 0xBC00, 0xBBE2, 0xBBC4, 0xBB3C, 0xBA26, 0xB8C2, 0xB73C,\n    0xB5C0, 0xB47A, 0xB396, 0xB340, 0x0064, 0x0067, 0x0070, 0x007C,\n    0x008A, 0x0098, 0x00A4, 0x00AC, 0x00AF, 0x00AE, 0x00AA, 0x00A5,\n    0x009E, 0x0096, 0x008E, 0x0085, 0x007C, 0x0073, 0x006B, 0x0065,\n    0x005F, 0x005B, 0x005A, 0x005B, 0x0060, 0x0067, 0x0071, 0x007B,\n    0x0086, 0x0090, 0x0098, 0x009F, 0x00A2, 0x00A1, 0x009B, 0x0090,\n    0x0081, 0x006F, 0x005C, 0x0049, 0x0038, 0x002A, 0x0021, 0x001D,\n    0x001D, 0x001D, 0x001D, 0x001D, 0x001D, 0x001D, 0x001D, 0x001D,\n    0x001D, 0x001D, 0xFEF1, 0xFEF3, 0xFEF7, 0xFEFE, 0xFF06, 0xFF0D,\n    0xFF14, 0xFF19, 0xFF1B, 0xFF1B, 0xFF19, 0xFF18, 0xFF15, 0xFF12,\n    0xFF0E, 0xFF0B, 0xFF07, 0xFF03, 0xFF00, 0xFEFD, 0xFEFB, 0xFEF9,\n    0xFEF9, 0xFEF9, 0xFEFB, 0xFEFF, 0xFF02, 0xFF07, 0xFF0B, 0xFF0F,\n    0xFF13, 0xFF16, 0xFF17, 0xFF17, 0xFF14, 0xFF10, 0xFF09, 0xFF02,\n    0xFEFA, 0xFEF3, 0xFEEC, 0xFEE6, 0xFEE2, 0xFEE1, 0xFEE1, 0xFEE1,\n    0xFEE1, 0xFEE1, 0xFEE1, 0xFEE1, 0xFEE1, 0xFEE1, 0xFEE1, 0xFEE1,\n    0xD401, 0xD379, 0xD213, 0xD01B, 0xCDD9, 0xCB98, 0xC9A3, 0xC845,\n    0xC7C7, 0xC800, 0xC88D, 0xC960, 0xCA6A, 0xCB9F, 0xCCF0, 0xCE4F,\n    0xCFAF, 0xD101, 0xD239, 0xD348, 0xD41F, 0xD4B3, 0xD4F4, 0xD4B7,\n    0xD3F1, 0xD2C0, 0xD147, 0xCFA6, 0xCDFC, 0xCC6B, 0xCB13, 0xCA15,\n    0xC992, 0xC9A8, 0xCA96, 0xCC59, 0xCEBB, 0xD183, 0xD478, 0xD761,\n    0xDA08, 0xDC32, 0xDDA8, 0xDE31, 0xDE31, 0xDE31, 0xDE31, 0xDE31,\n    0xDE31, 0xDE31, 0xDE31, 0xDE31, 0xDE31, 0xDE31, 0x1DBD, 0x1CE9,\n    0x1ABA, 0x17A7, 0x1425, 0x10AB, 0x0DAD, 0x0BA3, 0x0B02, 0x0B93,\n    0x0CC0, 0x0E6D, 0x107E, 0x12D7, 0x155C, 0x17F2, 0x1A7D, 0x1CE1,\n    0x1F03, 0x20C6, 0x220F, 0x22C2, 0x22C3, 0x21BD, 0x1F95, 0x1C8B,\n    0x18DC, 0x14C7, 0x108B, 0x0C64, 0x0893, 0x0555, 0x02E9, 0x018C,\n    0x016D, 0x0263, 0x042E, 0x068E, 0x0941, 0x0C07, 0x0EA0, 0x10CB,\n    0x1247, 0x12D4, 0x12D5, 0x12D5, 0x12D4, 0x12D1, 0x12CD, 0x12C9,\n    0x12C5, 0x12C1, 0x12BE, 0x12BD, 0xFC98, 0xFCF6, 0xFDED, 0xFF4A,\n    0x00DB, 0x026E, 0x03CF, 0x04CC, 0x0533, 0x0523, 0x04E5, 0x047F,\n    0x03F8, 0x0357, 0x02A2, 0x01E1, 0x011A, 0x0054, 0xFF98, 0xFEE9,\n    0xFE50, 0xFDD4, 0xFD7B, 0xFD4A, 0xFD3E, 0xFD4F, 0xFD76, 0xFDAA,\n    0xFDE6, 0xFE21, 0xFE55, 0xFE79, 0xFE87, 0xFE77, 0xFE48, 0xFE01,\n    0xFDA7, 0xFD3F, 0xFCCE, 0xFC59, 0xFBE5, 0xFB77, 0xFB14, 0xFAC1,\n    0xFA91, 0xFA93, 0xFAC1, 0xFB17, 0xFB89, 0xFC09, 0xFC87, 0xFCF3,\n    0xFD40, 0xFD5C, 0xF3B4, 0xF3BA, 0xF3CB, 0xF3E3, 0xF400, 0xF41C,\n    0xF436, 0xF44A, 0xF455, 0xF458, 0xF45A, 0xF45A, 0xF459, 0xF456,\n    0xF452, 0xF44D, 0xF448, 0xF441, 0xF43A, 0xF432, 0xF42A, 0xF421,\n    0xF419, 0xF40E, 0xF400, 0xF3EF, 0xF3DC, 0xF3C8, 0xF3B5, 0xF3A4,\n    0xF395, 0xF38A, 0xF384, 0xF383, 0xF38A, 0xF398, 0xF3AC, 0xF3C4,\n    0xF3DE, 0xF3FA, 0xF415, 0xF430, 0xF447, 0xF45A, 0xF466, 0xF467,\n    0xF45A, 0xF43F, 0xF41A, 0xF3F2, 0xF3CA, 0xF3A7, 0xF38F, 0xF385,\n    0xCF0B, 0xCDD4, 0xCAA0, 0xC617, 0xC0E1, 0xBBA8, 0xB713, 0xB3CC,\n    0xB27A, 0xB2B1, 0xB384, 0xB4DC, 0xB6A3, 0xB8C1, 0xBB1F, 0xBDA7,\n    0xC042, 0xC2D8, 0xC554, 0xC79D, 0xC99E, 0xCB3F, 0xCC6A, 0xCD0C,\n    0xCD35, 0xCCFC, 0xCC7B, 0xCBCA, 0xCB01, 0xCA3A, 0xC98C, 0xC911,\n    0xC8E1, 0xC915, 0xC9B0, 0xCA9B, 0xCBC6, 0xCD1F, 0xCE96, 0xD01B,\n    0xD19C, 0xD309, 0xD452, 0xD565, 0xD603, 0xD600, 0xD565, 0xD43F,\n    0xD2B8, 0xD104, 0xCF57, 0xCDE4, 0xCCDF, 0xCC7D, 0x8001, 0x8001,\n    0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x04AD, 0x04C6,\n    0x04FE, 0x053D, 0x056B, 0x056F, 0x0531, 0x0497, 0x03AE, 0x0297,\n    0x015A, 0x0001, 0xFE93, 0xFD17, 0xFB97, 0xFA1B, 0xF8AB, 0xF74F,\n    0xF611, 0xF4F7, 0xF40B, 0xF355, 0xF2DD, 0xF2C6, 0xF321, 0xF3D8,\n    0xF4D8, 0xF60A, 0xF75A, 0xF8B4, 0xFA02, 0xFB30, 0xFC29, 0xFD06,\n    0xFDEA, 0xFED2, 0xFFBA, 0x009D, 0x0179, 0x0249, 0x030A, 0x03B6,\n    0x044C, 0x04C5, 0x051B, 0x054D, 0x0562, 0x055E, 0x054A, 0x052B,\n    0x0508, 0x04E7, 0x04CF, 0x04C5, 0x00EC, 0x00CB, 0x0077, 0x0005,\n    0xFF8A, 0xFF1B, 0xFECD, 0xFEB6, 0xFEC9, 0xFEEB, 0xFF19, 0xFF52,\n    0xFF93, 0xFFDA, 0x0023, 0x006E, 0x00B8, 0x00FF, 0x013F, 0x0178,\n    0x01A6, 0x01C8, 0x01DB, 0x01D6, 0x01B7, 0x0184, 0x0142, 0x00F7,\n    0x00A8, 0x005B, 0x0016, 0xFFDF, 0xFFB9, 0xFFA3, 0xFF95, 0xFF8D,\n    0xFF8B, 0xFF8D, 0xFF91, 0xFF98, 0xFF9F, 0xFFA5, 0xFFAA, 0xFFAB,\n    0xFFAA, 0xFFAA, 0xFFAA, 0xFFAA, 0xFFAA, 0xFFAA, 0xFFAA, 0xFFAB,\n    0xFFAB, 0xFFAB, 0x0A09, 0x0B23, 0x0DF6, 0x11CE, 0x15F3, 0x19AE,\n    0x1C4A, 0x1D0F, 0x1C62, 0x1B2F, 0x198C, 0x178D, 0x1548, 0x12D1,\n    0x103E, 0x0DA3, 0x0B17, 0x08AD, 0x067B, 0x0497, 0x0314, 0x0209,\n    0x018B, 0x01F1, 0x035F, 0x0599, 0x0865, 0x0B88, 0x0EC7, 0x11E7,\n    0x14AC, 0x16DD, 0x183D, 0x18E9, 0x192C, 0x1918, 0x18C0, 0x1835,\n    0x1788, 0x16CA, 0x160F, 0x1566, 0x14E1, 0x1493, 0x146F, 0x1459,\n    0x1451, 0x1452, 0x145B, 0x1468, 0x1477, 0x1485, 0x148F, 0x1493,\n    0xFAA4, 0xFAF4, 0xFBCE, 0xFD0A, 0xFE84, 0x0014, 0x0198, 0x02EA,\n    0x03E2, 0x045D, 0x044C, 0x03CC, 0x02FA, 0x01F1, 0x00CB, 0xFFA6,\n    0xFE9A, 0xFDC5, 0xFCF3, 0xFC0B, 0xFB4F, 0xFB00, 0xFB62, 0xFC79,\n    0xFE05, 0xFFE0, 0x01E3, 0x03EA, 0x05CC, 0x0765, 0x088D, 0x091E,\n    0x0901, 0x0851, 0x0732, 0x05C9, 0x043A, 0x02AB, 0x013F, 0x001C,\n    0xFF67, 0xFF04, 0xFEBF, 0xFE94, 0xFE7F, 0xFE7D, 0xFE89, 0xFEA0,\n    0xFEBE, 0xFEDF, 0xFF00, 0xFF1C, 0xFF2F, 0xFF37, 0xF3AC, 0xF3CA,\n    0xF41C, 0xF492, 0xF520, 0xF5B8, 0xF64B, 0xF6CC, 0xF72D, 0xF760,\n    0xF760, 0xF737, 0xF6F1, 0xF697, 0xF633, 0xF5D1, 0xF57B, 0xF53A,\n    0xF507, 0xF4DA, 0xF4BC, 0xF4B7, 0xF4D7, 0xF51C, 0xF57B, 0xF5EC,\n    0xF666, 0xF6E1, 0xF753, 0xF7B4, 0xF7FB, 0xF821, 0xF81E, 0xF7FA,\n    0xF7BD, 0xF76E, 0xF717, 0xF6C0, 0xF671, 0xF633, 0xF60F, 0xF5FE,\n    0xF5F4, 0xF5F2, 0xF5F5, 0xF5FC, 0xF606, 0xF613, 0xF621, 0xF62F,\n    0xF63B, 0xF646, 0xF64D, 0xF64F, 0xF6C8, 0xF7A6, 0xF9FB, 0xFD61,\n    0x0170, 0x05C3, 0x09F1, 0x0D95, 0x1048, 0x11A2, 0x1173, 0x1007,\n    0x0DB4, 0x0ACD, 0x07A7, 0x0497, 0x01F2, 0x000B, 0xFED1, 0xFE06,\n    0xFDC3, 0xFE21, 0xFF37, 0x011A, 0x03AA, 0x06A8, 0x09DB, 0x0D07,\n    0x0FEF, 0x1258, 0x1408, 0x14C2, 0x1454, 0x12E3, 0x10AF, 0x0DFE,\n    0x0B10, 0x082A, 0x058E, 0x037E, 0x023F, 0x01A3, 0x014A, 0x012B,\n    0x013C, 0x0174, 0x01C9, 0x0231, 0x02A4, 0x0317, 0x0382, 0x03D9,\n    0x0415, 0x042B, 0x068D, 0x067E, 0x0653, 0x0612, 0x05BF, 0x055F,\n    0x04F7, 0x048C, 0x0423, 0x03C0, 0x0352, 0x02CA, 0x022E, 0x0188,\n    0x00DD, 0x0035, 0xFF9A, 0xFF10, 0xFEA0, 0xFE51, 0xFE2B, 0xFE35,\n    0xFE78, 0xFF30, 0x007A, 0x022F, 0x0425, 0x0632, 0x082C, 0x09EA,\n    0x0B42, 0x0C0A, 0x0C3C, 0x0BFC, 0x0B64, 0x0A91, 0x099C, 0x08A1,\n    0x07BA, 0x0702, 0x0694, 0x065E, 0x0639, 0x0624, 0x061B, 0x061C,\n    0x0626, 0x0636, 0x0649, 0x065E, 0x0673, 0x0684, 0x0690, 0x0694,\n    0xF3BE, 0xF38E, 0xF30C, 0xF250, 0xF172, 0xF087, 0xEFA8, 0xEEEC,\n    0xEE69, 0xEE38, 0xEE46, 0xEE71, 0xEEB5, 0xEF0F, 0xEF7A, 0xEFF3,\n    0xF077, 0xF102, 0xF191, 0xF220, 0xF2AC, 0xF331, 0xF3AB, 0xF42E,\n    0xF4C8, 0xF570, 0xF61A, 0xF6BC, 0xF74D, 0xF7C1, 0xF80E, 0xF82B,\n    0xF809, 0xF7AD, 0xF725, 0xF681, 0xF5D0, 0xF521, 0xF482, 0xF403,\n    0xF3B2, 0xF386, 0xF368, 0xF356, 0xF34F, 0xF350, 0xF358, 0xF365,\n    0xF375, 0xF386, 0xF397, 0xF3A5, 0xF3AF, 0xF3B2, 0x362E, 0x34E9,\n    0x3183, 0x2C9C, 0x26D4, 0x20CA, 0x1B1D, 0x166E, 0x135C, 0x1287,\n    0x13AC, 0x15FF, 0x1948, 0x1D53, 0x21E9, 0x26D4, 0x2BE0, 0x30D5,\n    0x357E, 0x39A6, 0x3D17, 0x3F9B, 0x40FC, 0x4099, 0x3E4A, 0x3A90,\n    0x35EE, 0x30E5, 0x2BF6, 0x27A2, 0x246B, 0x22D3, 0x22F6, 0x2460,\n    0x26BC, 0x29B4, 0x2CF1, 0x301D, 0x32E3, 0x34EB, 0x35E1, 0x35F0,\n    0x358B, 0x34C7, 0x33B7, 0x326F, 0x3103, 0x2F87, 0x2E0F, 0x2CAE,\n    0x2B79, 0x2A84, 0x29E2, 0x29A8,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_36.inc.c",
    "content": "static const struct Animation anim_36[] = {\n    1,\n    189,\n    10,\n    0,\n    0x2E,\n    ANIMINDEX_NUMPARTS(anim_36_indices),\n    anim_36_values,\n    anim_36_indices,\n    0,\n};\n\n\nstatic const u16 anim_36_indices[] = {\n    0x002E, 0x0001, 0x002E, 0x002F, 0x002E, 0x005D, 0x0001, 0x0000, 0x0001, 0x008B, 0x0001, 0x0000,\n    0x002E, 0x06B0, 0x002E, 0x06DE, 0x002E, 0x070C,\n    0x002E, 0x0626, 0x002E, 0x0654, 0x002E, 0x0682,\n    0x002E, 0x059C, 0x002E, 0x05CA, 0x002E, 0x05F8,\n    0x0001, 0x0598, 0x0001, 0x0599, 0x0001, 0x059A,\n    0x002E, 0x0144, 0x002E, 0x0172, 0x002E, 0x01A0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002E, 0x0116,\n    0x002E, 0x008C, 0x002E, 0x00BA, 0x002E, 0x00E8,\n    0x0001, 0x0594, 0x0001, 0x0595, 0x0001, 0x0596,\n    0x002E, 0x0286, 0x002E, 0x02B4, 0x002E, 0x02E2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002E, 0x0258,\n    0x002E, 0x01CE, 0x002E, 0x01FC, 0x002E, 0x022A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0597,\n    0x002E, 0x050A, 0x002E, 0x0538, 0x002E, 0x0566,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002E, 0x04DC,\n    0x002E, 0x0452, 0x002E, 0x0480, 0x002E, 0x04AE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x059B,\n    0x002E, 0x03C8, 0x002E, 0x03F6, 0x002E, 0x0424,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002E, 0x039A,\n    0x002E, 0x0310, 0x002E, 0x033E, 0x002E, 0x036C,\n};\n\nstatic const s16 anim_36_values[] = {\n    0x0000, 0x0000, 0x000A, 0x000F, 0x0014, 0x0016, 0x0013, 0x000E,\n    0x0009, 0x0005, 0x0002, 0x0002, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0001, 0x0001, 0x0001,\n    0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0094,\n    0x00A5, 0x00A9, 0x00AB, 0x00AD, 0x00B0, 0x00B4, 0x00B6, 0x00B7,\n    0x00B5, 0x00B2, 0x00AE, 0x00AB, 0x00A9, 0x00A8, 0x00A6, 0x00A5,\n    0x00A5, 0x00A5, 0x00A5, 0x00A5, 0x00A5, 0x00A5, 0x00A5, 0x00A6,\n    0x00A6, 0x00A6, 0x00A6, 0x00A6, 0x00A7, 0x00A7, 0x00A7, 0x00A8,\n    0x00A8, 0x00A8, 0x00A8, 0x00A9, 0x00A9, 0x00A9, 0x00A9, 0x00A9,\n    0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x0016, 0x001E, 0x0022,\n    0x0025, 0x0026, 0x0022, 0x001D, 0x0017, 0x0013, 0x0010, 0x000E,\n    0x000C, 0x000B, 0x000A, 0x0009, 0x0007, 0x0006, 0x0006, 0x0005,\n    0x0005, 0x0005, 0x0004, 0x0004, 0x0004, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0002, 0x0002, 0x0002, 0x0001, 0x0001, 0x0001, 0x0001,\n    0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x3FFF, 0x004D, 0x0000, 0xFE6E, 0xFCD2,\n    0xFB2E, 0xF984, 0xF7D2, 0xF61C, 0xF461, 0xF2A1, 0xF0DF, 0xEF1B,\n    0xED55, 0xEB8F, 0xE9C9, 0xE804, 0xE641, 0xE481, 0xE2C4, 0xE10C,\n    0xDF59, 0xDDAC, 0xDC06, 0xDA68, 0xD8D2, 0xD746, 0xD5C3, 0xD44C,\n    0xD2E1, 0xD182, 0xD031, 0xCEEE, 0xCDBA, 0xCCDA, 0xCCA2, 0xCD2D,\n    0xCE92, 0xD0EC, 0xD453, 0xD99A, 0xE0DA, 0xE915, 0xF14D, 0xF884,\n    0xFDBE, 0xFFFB, 0xF981, 0xF97C, 0xF961, 0xF945, 0xF929, 0xF90C,\n    0xF8EE, 0xF8CF, 0xF8B0, 0xF891, 0xF872, 0xF852, 0xF832, 0xF812,\n    0xF7F2, 0xF7D2, 0xF7B3, 0xF794, 0xF776, 0xF757, 0xF73A, 0xF71D,\n    0xF702, 0xF6E7, 0xF6CD, 0xF6B4, 0xF69D, 0xF686, 0xF672, 0xF65E,\n    0xF64C, 0xF63C, 0xF62E, 0xF635, 0xF65D, 0xF69E, 0xF6EB, 0xF73C,\n    0xF786, 0xF7D2, 0xF82C, 0xF88A, 0xF8E3, 0xF92F, 0xF965, 0xF97B,\n    0xED7E, 0xED8C, 0xEDD4, 0xEE1F, 0xEE6C, 0xEEBB, 0xEF0C, 0xEF5E,\n    0xEFB2, 0xF007, 0xF05D, 0xF0B3, 0xF109, 0xF160, 0xF1B6, 0xF20C,\n    0xF261, 0xF2B5, 0xF307, 0xF359, 0xF3A8, 0xF3F6, 0xF441, 0xF48A,\n    0xF4D0, 0xF513, 0xF553, 0xF58F, 0xF5C8, 0xF5FC, 0xF62D, 0xF658,\n    0xF67F, 0xF66D, 0xF5FE, 0xF550, 0xF47D, 0xF3A3, 0xF2DB, 0xF20D,\n    0xF11A, 0xF01C, 0xEF29, 0xEE5B, 0xEDCA, 0xED8C, 0xD886, 0xCFBD,\n    0xD6CC, 0xDCFD, 0xDC9C, 0xDC23, 0xDB93, 0xDAED, 0xDA35, 0xD96A,\n    0xD891, 0xD7A9, 0xD6B6, 0xD5B9, 0xD4B4, 0xD3A9, 0xD29A, 0xD188,\n    0xD076, 0xCF66, 0xCE59, 0xCD50, 0xCC50, 0xCB58, 0xCA6B, 0xC98A,\n    0xC8B9, 0xC7F7, 0xC749, 0xC6AE, 0xC62A, 0xC5BE, 0xC56C, 0xC63C,\n    0xC8B2, 0xCC09, 0xCF7C, 0xD246, 0xD3A2, 0xD36A, 0xD23B, 0xD06F,\n    0xCE63, 0xCC72, 0xCAF8, 0xCA51, 0x297C, 0xD708, 0xD3F0, 0xD72A,\n    0xDE4C, 0xE6E9, 0xEE98, 0xF2ED, 0xF17C, 0xEBEB, 0xE587, 0xDE66,\n    0xD69E, 0xCE45, 0xC571, 0xBC36, 0xB2AB, 0xA8E5, 0x9EFA, 0x9500,\n    0x8B0C, 0x8133, 0x778A, 0x6E2A, 0x6527, 0x5C96, 0x548E, 0x4D23,\n    0x466C, 0x407D, 0x3B6E, 0x3752, 0x3441, 0x37E8, 0x45D2, 0x5ADE,\n    0x73EB, 0x8DDA, 0xA584, 0xBFA8, 0xDBF9, 0xEFC7, 0xF854, 0xFB88,\n    0xFBB2, 0xFB1F, 0xD953, 0xD633, 0xD6AA, 0xD774, 0xD86E, 0xD973,\n    0xDA5E, 0xDB0C, 0xDB58, 0xDB62, 0xDB61, 0xDB57, 0xDB45, 0xDB2A,\n    0xDB09, 0xDAE3, 0xDAB7, 0xDA87, 0xDA53, 0xDA1D, 0xD9E6, 0xD9AE,\n    0xD976, 0xD93F, 0xD90A, 0xD8D8, 0xD8AA, 0xD87F, 0xD85B, 0xD83C,\n    0xD825, 0xD816, 0xD80F, 0xD84B, 0xD8E4, 0xD9A8, 0xDA69, 0xDAF7,\n    0xDB22, 0xDA5A, 0xD8C6, 0xD748, 0xD5F5, 0xD48B, 0xD365, 0xD2DD,\n    0xA46A, 0xFA3D, 0xFA43, 0xF39B, 0xE8C5, 0xDC43, 0xD093, 0xC836,\n    0xC5AD, 0xC737, 0xC964, 0xCC22, 0xCF63, 0xD318, 0xD731, 0xDBA0,\n    0xE055, 0xE541, 0xEA54, 0xEF81, 0xF4B7, 0xF9E7, 0xFF02, 0x03F9,\n    0x08BD, 0x0D3F, 0x116F, 0x153E, 0x189E, 0x1B7F, 0x1DD1, 0x1F86,\n    0x208E, 0x1D0E, 0x12E1, 0x0490, 0xF4A2, 0xE59E, 0xDA0B, 0xD41C,\n    0xD263, 0xD1F6, 0xD1F1, 0xD2E3, 0xD40D, 0xD4B2, 0x130F, 0x0305,\n    0xDEE8, 0xB8B6, 0xA270, 0xA290, 0xAEFB, 0xC0CD, 0xD122, 0xDF5C,\n    0xEEF7, 0xFF39, 0x0F63, 0x1EBD, 0x2C8A, 0x380E, 0x408D, 0x45BA,\n    0x4824, 0x485C, 0x46F0, 0x4470, 0x416B, 0x3E70, 0x3C0F, 0x3866,\n    0x32B2, 0x2D29, 0x2A05, 0x2B57, 0x2F5F, 0x329A, 0x3184, 0x2A2A,\n    0x1EC8, 0x121E, 0x06F0, 0x0000, 0xFD01, 0xFB93, 0xFB5C, 0xFC00,\n    0xFD24, 0xFE6D, 0xFF7F, 0xFFFF, 0x0CF7, 0x136D, 0x22C9, 0x3504,\n    0x4419, 0x50D6, 0x5D93, 0x6696, 0x6821, 0x62E8, 0x5AB0, 0x5058,\n    0x44BF, 0x38C4, 0x2D47, 0x2327, 0x1B44, 0x1554, 0x1068, 0x0C60,\n    0x091D, 0x067F, 0x0468, 0x02B9, 0x0152, 0x0199, 0x043B, 0x0806,\n    0x0BC8, 0x10D0, 0x176A, 0x1CDF, 0x1E78, 0x1AE4, 0x1401, 0x0BDC,\n    0x0481, 0x0000, 0xFE28, 0xFD47, 0xFD25, 0xFD8A, 0xFE3E, 0xFF08,\n    0xFFB1, 0x0000, 0xE4D2, 0xDB7F, 0xC620, 0xAE95, 0x9EC2, 0x98CC,\n    0x97A6, 0x9A60, 0xA00B, 0xA835, 0xB27E, 0xBE1B, 0xCA3D, 0xD61A,\n    0xE0E4, 0xE9CE, 0xF00C, 0xF37B, 0xF4CF, 0xF47B, 0xF2F0, 0xF0A2,\n    0xEE03, 0xEB86, 0xE99D, 0xE741, 0xE3DF, 0xE097, 0xDE8C, 0xDDCC,\n    0xDDC4, 0xDE97, 0xE06D, 0xE3DC, 0xE8B3, 0xEDE8, 0xF272, 0xF549,\n    0xF68D, 0xF727, 0xF73E, 0xF6F9, 0xF67E, 0xF5F3, 0xF580, 0xF54A,\n    0xEF32, 0xEF1B, 0xEED9, 0xEE71, 0xEDE8, 0xED43, 0xEC87, 0xEBB9,\n    0xEADE, 0xE9DA, 0xE896, 0xE720, 0xE586, 0xE3D4, 0xE219, 0xE062,\n    0xDEBD, 0xDD37, 0xDBDD, 0xDABD, 0xD9E5, 0xD962, 0xD942, 0xD992,\n    0xDA5F, 0xE00B, 0xEB90, 0xF7E5, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xFAB0, 0xF3EA, 0xEC2B, 0xE3EF, 0xDBB3, 0xD3F4, 0xCD2E,\n    0xC7DD, 0xC501, 0xC498, 0xC59C, 0xC70A, 0xC7DB, 0x5FA3, 0x6BA9,\n    0x84EF, 0x9B3D, 0x9E63, 0x74BF, 0x324B, 0x0B2C, 0x03F7, 0xFE5E,\n    0xFA37, 0xF759, 0xF59B, 0xF4D6, 0xF4DF, 0xF58E, 0xF6B9, 0xF839,\n    0xF9E4, 0xFB91, 0xFD16, 0xFE4C, 0xFF0A, 0xFF25, 0xFE76, 0xFC9E,\n    0xF9C0, 0xF678, 0xF364, 0xEFD4, 0xEBBD, 0xE8B1, 0xE83E, 0xEA1A,\n    0xECC9, 0xF016, 0xF3CD, 0xF7B7, 0xFBA2, 0xFF56, 0x02A0, 0x054B,\n    0x069B, 0x067F, 0x05CB, 0x054D, 0x2D84, 0x2F03, 0x3275, 0x3648,\n    0x38EA, 0x39E0, 0x39B3, 0x3854, 0x364B, 0x342B, 0x31F8, 0x2FB4,\n    0x2D61, 0x2B05, 0x28A0, 0x2636, 0x23CA, 0x215F, 0x1EF8, 0x1C97,\n    0x1A41, 0x17F7, 0x15BC, 0x1395, 0x1183, 0x0FB9, 0x0E75, 0x0DCB,\n    0x0DCE, 0x0EA1, 0x1030, 0x123B, 0x1481, 0x16F3, 0x199C, 0x1C68,\n    0x1F45, 0x221E, 0x24E0, 0x2777, 0x29D0, 0x2BD6, 0x2CE3, 0x2CCE,\n    0x2C3C, 0x2BD7, 0xF355, 0x0463, 0x28FF, 0x4B51, 0x5581, 0x2918,\n    0xDE72, 0xB1F7, 0xA9AF, 0xA341, 0x9E7B, 0x9B2B, 0x9920, 0x9829,\n    0x9816, 0x98B4, 0x99D2, 0x9B40, 0x9CCC, 0x9E45, 0x9F7A, 0xA039,\n    0xA052, 0x9F92, 0x9DCA, 0x98D1, 0x906F, 0x875C, 0x8050, 0x7A81,\n    0x7502, 0x7245, 0x74BE, 0x7BBD, 0x849E, 0x8EDA, 0x99F4, 0xA56B,\n    0xB0C1, 0xBB75, 0xC507, 0xCCF6, 0xD0F0, 0xD09D, 0xCE78, 0xCCFA,\n    0x000C, 0x000E, 0x0014, 0x001D, 0x0026, 0x002E, 0x0034, 0x0035,\n    0x0031, 0x0028, 0x001C, 0x000F, 0x0005, 0x0000, 0xFFFF, 0xFFFD,\n    0xFFFD, 0xFFFC, 0xFFFD, 0xFFFD, 0xFFFE, 0xFFFF, 0x0000, 0x0001,\n    0x0002, 0x0003, 0x0004, 0x0004, 0x0005, 0x0005, 0x0004, 0x0004,\n    0x0004, 0x0004, 0x0003, 0x0003, 0x0002, 0x0002, 0x0001, 0x0001,\n    0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFF33, 0xFF34,\n    0xFF34, 0xFF36, 0xFF37, 0xFF38, 0xFF38, 0xFF39, 0xFF38, 0xFF36,\n    0xFF34, 0xFF32, 0xFF31, 0xFF30, 0xFF30, 0xFF2F, 0xFF2F, 0xFF2F,\n    0xFF2F, 0xFF2F, 0xFF2F, 0xFF2F, 0xFF2F, 0xFF2F, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xC75E, 0xC6E1, 0xC5A0, 0xC3ED,\n    0xC218, 0xC073, 0xBF4E, 0xBEFB, 0xBFDB, 0xC1C3, 0xC435, 0xC6B1,\n    0xC8BA, 0xC9D0, 0xCA2F, 0xCA68, 0xCA82, 0xCA7F, 0xCA65, 0xCA37,\n    0xC9FC, 0xC9B6, 0xC96B, 0xC920, 0xC8D8, 0xC898, 0xC865, 0xC843,\n    0xC837, 0xC83B, 0xC847, 0xC859, 0xC871, 0xC88E, 0xC8AD, 0xC8D0,\n    0xC8F4, 0xC918, 0xC93C, 0xC95F, 0xC97F, 0xC99C, 0xC9B4, 0xC9C7,\n    0xC9D3, 0xC9D8, 0x4138, 0x417A, 0x420E, 0x42AD, 0x430B, 0x42E0,\n    0x41E3, 0x3FC9, 0x3B96, 0x3545, 0x2E03, 0x26FB, 0x215B, 0x1E4F,\n    0x1D2F, 0x1C83, 0x1C3B, 0x1C4B, 0x1CA3, 0x1D36, 0x1DF6, 0x1ED4,\n    0x1FC2, 0x20B3, 0x2197, 0x2261, 0x2303, 0x236F, 0x2395, 0x2388,\n    0x2362, 0x2327, 0x22D9, 0x227D, 0x2216, 0x21A6, 0x2131, 0x20BA,\n    0x2045, 0x1FD4, 0x1F6C, 0x1F0E, 0x1EBF, 0x1E82, 0x1E5A, 0x1E4A,\n    0x07B9, 0x0831, 0x0971, 0x0B40, 0x0D63, 0x0FA1, 0x11C0, 0x1386,\n    0x1519, 0x16B3, 0x1836, 0x1985, 0x1A81, 0x1B0F, 0x1B4C, 0x1B6E,\n    0x1B7A, 0x1B71, 0x1B57, 0x1B30, 0x1AFF, 0x1AC8, 0x1A8D, 0x1A52,\n    0x1A1A, 0x19E9, 0x19C1, 0x19A7, 0x199E, 0x19A1, 0x19AB, 0x19BB,\n    0x19CF, 0x19E8, 0x1A04, 0x1A22, 0x1A41, 0x1A61, 0x1A81, 0x1A9F,\n    0x1ABB, 0x1AD4, 0x1AE9, 0x1AFA, 0x1B04, 0x1B09, 0x11B4, 0x11B3,\n    0x11B0, 0x11AB, 0x11A5, 0x119E, 0x1197, 0x118F, 0x1182, 0x116D,\n    0x1158, 0x1149, 0x1144, 0x1151, 0x116D, 0x1190, 0x11B9, 0x11E6,\n    0x1216, 0x1248, 0x127A, 0x12AB, 0x12DA, 0x1306, 0x132C, 0x134D,\n    0x1365, 0x1375, 0x137A, 0x1374, 0x1364, 0x134B, 0x132B, 0x1304,\n    0x12D9, 0x12AA, 0x127A, 0x1248, 0x1217, 0x11E8, 0x11BD, 0x1196,\n    0x1175, 0x115C, 0x114B, 0x1144, 0xC211, 0xC17D, 0xBFF2, 0xBDB9,\n    0xBB1C, 0xB864, 0xB5DC, 0xB3CD, 0xB21A, 0xB081, 0xAF0F, 0xADD0,\n    0xACD1, 0xAC20, 0xABA1, 0xAB30, 0xAACC, 0xAA74, 0xAA27, 0xA9E5,\n    0xA9AD, 0xA97F, 0xA959, 0xA93B, 0xA924, 0xA914, 0xA909, 0xA904,\n    0xA903, 0xA90C, 0xA924, 0xA949, 0xA979, 0xA9B2, 0xA9F2, 0xAA36,\n    0xAA7E, 0xAAC7, 0xAB0E, 0xAB53, 0xAB93, 0xABCC, 0xABFC, 0xAC21,\n    0xAC3A, 0xAC44, 0xFBE6, 0xFCFF, 0xFDC8, 0xFCCA, 0xFC9E, 0xFE2A,\n    0x0077, 0x01DC, 0x0202, 0x01C5, 0x014C, 0x00BE, 0x0044, 0x0003,\n    0xFFEF, 0xFFE1, 0xFFD7, 0xFFD1, 0xFFCF, 0xFFD1, 0xFFD4, 0xFFDA,\n    0xFFE0, 0xFFE8, 0xFFEF, 0xFFF6, 0xFFFB, 0xFFFF, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0006, 0x0087, 0x0073, 0x0065, 0x0063, 0x0078, 0x0097, 0x00A1,\n    0x008E, 0x0070, 0x004D, 0x002B, 0x000F, 0x0000, 0xFFFA, 0xFFF5,\n    0xFFF1, 0xFFF0, 0xFFEF, 0xFFF0, 0xFFF1, 0xFFF3, 0xFFF5, 0xFFF8,\n    0xFFFA, 0xFFFD, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xBEBF, 0xBE5D,\n    0xBCF8, 0xBCC4, 0xBD85, 0xC036, 0xC3B6, 0xC58D, 0xC545, 0xC43F,\n    0xC2CF, 0xC147, 0xBFF9, 0xBF39, 0xBEE4, 0xBE9E, 0xBE66, 0xBE3B,\n    0xBE1A, 0xBE04, 0xBDF5, 0xBDEE, 0xBDEC, 0xBDEE, 0xBDF4, 0xBDFA,\n    0xBE00, 0xBE05, 0xBE07, 0xBE0B, 0xBE14, 0xBE21, 0xBE33, 0xBE49,\n    0xBE60, 0xBE7A, 0xBE95, 0xBEB1, 0xBECC, 0xBEE5, 0xBEFE, 0xBF13,\n    0xBF25, 0xBF33, 0xBF3D, 0xBF40, 0x2DE0, 0x24FF, 0x2066, 0x1FE1,\n    0x1E77, 0x1A9C, 0x1619, 0x145C, 0x1602, 0x18F9, 0x1C9E, 0x204F,\n    0x236B, 0x2550, 0x2650, 0x272E, 0x27EB, 0x2889, 0x290D, 0x2977,\n    0x29CC, 0x2A0C, 0x2A3C, 0x2A5D, 0x2A72, 0x2A7E, 0x2A83, 0x2A83,\n    0x2A83, 0x2A75, 0x2A4E, 0x2A12, 0x29C5, 0x2969, 0x2901, 0x2891,\n    0x281C, 0x27A6, 0x2731, 0x26C0, 0x2658, 0x25FB, 0x25AC, 0x256F,\n    0x2547, 0x2537, 0xF747, 0xF683, 0xF581, 0xF4CD, 0xF2F4, 0xEF40,\n    0xEAAE, 0xE6A6, 0xE33F, 0xDFCA, 0xDC85, 0xD9AC, 0xD77E, 0xD638,\n    0xD598, 0xD52B, 0xD4ED, 0xD4D7, 0xD4E3, 0xD50B, 0xD548, 0xD596,\n    0xD5ED, 0xD648, 0xD69F, 0xD6EF, 0xD72F, 0xD75A, 0xD76A, 0xD768,\n    0xD760, 0xD754, 0xD744, 0xD730, 0xD71A, 0xD702, 0xD6E9, 0xD6D0,\n    0xD6B7, 0xD69F, 0xD688, 0xD674, 0xD663, 0xD656, 0xD64E, 0xD64A,\n    0x0574, 0x04A9, 0x02CE, 0x0174, 0x0002, 0xFEB9, 0xFD7E, 0xFBB3,\n    0xF916, 0xF607, 0xF2DE, 0xEFF0, 0xED92, 0xEC1C, 0xEB49, 0xEA9C,\n    0xEA12, 0xE9A6, 0xE956, 0xE91E, 0xE8FA, 0xE8E7, 0xE8E2, 0xE8E8,\n    0xE8F4, 0xE904, 0xE914, 0xE920, 0xE926, 0xE92E, 0xE945, 0xE969,\n    0xE996, 0xE9CD, 0xEA09, 0xEA4B, 0xEA8F, 0xEAD5, 0xEB19, 0xEB5B,\n    0xEB98, 0xEBCE, 0xEBFC, 0xEC20, 0xEC37, 0xEC41, 0x963F, 0x95ED,\n    0x9F95, 0xA1FF, 0xA50A, 0xA9B9, 0xAEA3, 0xB1F4, 0xB38B, 0xB494,\n    0xB52F, 0xB57B, 0xB599, 0xB5A8, 0xB5B0, 0xB5A6, 0xB58D, 0xB567,\n    0xB538, 0xB500, 0xB4C4, 0xB485, 0xB446, 0xB40A, 0xB3D3, 0xB3A4,\n    0xB37F, 0xB367, 0xB35E, 0xB364, 0xB373, 0xB38C, 0xB3AD, 0xB3D4,\n    0xB400, 0xB430, 0xB462, 0xB494, 0xB4C6, 0xB4F6, 0xB523, 0xB54A,\n    0xB56C, 0xB586, 0xB597, 0xB59E, 0x8001, 0x8001, 0x4171, 0xBF5F,\n    0x8001, 0x8001, 0x4171, 0xBF5F, 0xD424, 0xD6F4, 0xD506, 0xD25C,\n    0xD21F, 0xD6B6, 0xDDE1, 0xE3CD, 0xE6BC, 0xE874, 0xEA0A, 0xEB98,\n    0xED21, 0xEEA5, 0xF025, 0xF1A3, 0xF320, 0xF49C, 0xF619, 0xF797,\n    0xF919, 0xFA9F, 0xFC6B, 0xFE04, 0xFE54, 0xFD4C, 0xFBBC, 0xF9DA,\n    0xF7DA, 0xF5F4, 0xF45B, 0xF347, 0xF2EC, 0xF335, 0xF3DB, 0xF4CE,\n    0xF5FD, 0xF755, 0xF8C7, 0xFA40, 0xFBB1, 0xFD07, 0xFE31, 0xFF1F,\n    0xFFBF, 0x0000, 0xFE60, 0xF552, 0xF4E9, 0xF62A, 0xF7E7, 0xFA56,\n    0xFD61, 0xFF69, 0xFE9B, 0xFD62, 0xFD93, 0xFDD4, 0xFE22, 0xFE7C,\n    0xFEDE, 0xFF45, 0xFFB1, 0x001C, 0x0086, 0x00EC, 0x014B, 0x01A1,\n    0x01BD, 0x01B1, 0x01DA, 0x0254, 0x02F3, 0x03A5, 0x0459, 0x04FE,\n    0x0583, 0x05D6, 0x05E7, 0x05BB, 0x0568, 0x04F6, 0x046C, 0x03D0,\n    0x032B, 0x0284, 0x01E2, 0x014C, 0x00C9, 0x0062, 0x001C, 0x0000,\n    0xF240, 0xECAF, 0xEDCA, 0xF018, 0xF19C, 0xF144, 0xF02B, 0xEF8C,\n    0xF029, 0xF1CB, 0xF3EC, 0xF620, 0xF865, 0xFAB6, 0xFD11, 0xFF70,\n    0x01D0, 0x042E, 0x0686, 0x08D4, 0x0B15, 0x0D43, 0x0EEB, 0x0FD7,\n    0x1064, 0x10F7, 0x11A5, 0x1257, 0x12F4, 0x1364, 0x138D, 0x1358,\n    0x12AD, 0x1182, 0x0FEF, 0x0E09, 0x0BE8, 0x09A0, 0x0748, 0x04F7,\n    0x02C1, 0x00BE, 0xFF04, 0xFDA8, 0xFCC0, 0xFC63, 0x0DF1, 0x0B9C,\n    0x107A, 0x1676, 0x1902, 0x1430, 0x0BE1, 0x0740, 0x0F1D, 0x16CA,\n    0x15AD, 0x13F2, 0x11B9, 0x0F23, 0x0C50, 0x095F, 0x0671, 0x03A5,\n    0x011D, 0xFEF8, 0xFD55, 0xFC56, 0xFBC4, 0xFB55, 0xFB06, 0xFAD4,\n    0xFABD, 0xFABE, 0xFAD5, 0xFB00, 0xFB3B, 0xFB85, 0xFBDA, 0xFC39,\n    0xFC9F, 0xFD0A, 0xFD76, 0xFDE2, 0xFE4B, 0xFEAE, 0xFF09, 0xFF59,\n    0xFF9D, 0xFFD1, 0xFFF3, 0x0000, 0xEA6B, 0xED4A, 0xF237, 0xF75D,\n    0xFA52, 0xF946, 0xF61D, 0xF3FD, 0xF545, 0xF740, 0xF81C, 0xF900,\n    0xF9E6, 0xFACC, 0xFBAD, 0xFC85, 0xFD51, 0xFE0B, 0xFEB2, 0xFF3F,\n    0xFFB0, 0x0000, 0x0039, 0x0069, 0x0090, 0x00AE, 0x00C5, 0x00D4,\n    0x00DD, 0x00E0, 0x00DD, 0x00D6, 0x00CC, 0x00BD, 0x00AD, 0x009A,\n    0x0086, 0x0071, 0x005C, 0x0048, 0x0035, 0x0024, 0x0015, 0x000A,\n    0x0003, 0x0000, 0x0FCD, 0x1311, 0x1A2B, 0x21C3, 0x2657, 0x25E9,\n    0x229B, 0x1F19, 0x1ACC, 0x1742, 0x161F, 0x1510, 0x1415, 0x132E,\n    0x1259, 0x1196, 0x10E3, 0x103F, 0x0FAA, 0x0F22, 0x0EA7, 0x0E38,\n    0x0DCF, 0x0D69, 0x0D06, 0x0CA6, 0x0C49, 0x0BEF, 0x0B99, 0x0B46,\n    0x0AF7, 0x0AAC, 0x0A65, 0x0A22, 0x09E4, 0x09AA, 0x0975, 0x0945,\n    0x0919, 0x08F3, 0x08D2, 0x08B7, 0x08A1, 0x0891, 0x0887, 0x0884,\n    0x192A, 0x1588, 0x13B7, 0x11EC, 0x1028, 0x0E6A, 0x0CB4, 0x0B05,\n    0x095D, 0x07BD, 0x060C, 0x0441, 0x0276, 0x00C5, 0xFF47, 0xFE13,\n    0xFD44, 0xFCE8, 0xFCEB, 0xFD37, 0xFDB0, 0xFE40, 0xFECC, 0xFF3C,\n    0xFF78, 0xFF8F, 0xFFA4, 0xFFB5, 0xFFC3, 0xFFCE, 0xFFD8, 0xFFDF,\n    0xFFE5, 0xFFE9, 0xFFEB, 0xFFED, 0xFFEF, 0xFFEF, 0xFFF0, 0xFFF1,\n    0xFFF2, 0xFFF4, 0xFFF7, 0xFFFB, 0x0000, 0x0000, 0x0456, 0xFED9,\n    0xFE8B, 0xFE7F, 0xFEA4, 0xFEEA, 0xFF41, 0xFF97, 0xFFDD, 0x0000,\n    0x0005, 0xFFFE, 0xFFED, 0xFFD8, 0xFFC2, 0xFFB1, 0xFFA8, 0xFFA8,\n    0xFFAB, 0xFFB2, 0xFFBB, 0xFFC4, 0xFFCD, 0xFFD5, 0xFFDA, 0xFFDD,\n    0xFFE0, 0xFFE2, 0xFFE5, 0xFFE7, 0xFFE9, 0xFFEB, 0xFFED, 0xFFEF,\n    0xFFF0, 0xFFF2, 0xFFF4, 0xFFF5, 0xFFF7, 0xFFF8, 0xFFFA, 0xFFFB,\n    0xFFFD, 0xFFFF, 0x0000, 0x0000, 0x514E, 0x582E, 0x55E9, 0x52EB,\n    0x4F73, 0x4BC4, 0x4820, 0x44C7, 0x41FC, 0x3FFF, 0x3EFA, 0x3EC3,\n    0x3F1F, 0x3FD1, 0x409E, 0x414B, 0x419D, 0x41A2, 0x4196, 0x417D,\n    0x415C, 0x4137, 0x4112, 0x40F3, 0x40DE, 0x40CF, 0x40C0, 0x40B1,\n    0x40A2, 0x4094, 0x4085, 0x4077, 0x406A, 0x405D, 0x4050, 0x4044,\n    0x4039, 0x402E, 0x4025, 0x401C, 0x4014, 0x400D, 0x4007, 0x4002,\n    0x3FFF, 0x409D,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_37.inc.c",
    "content": "static const struct Animation anim_37[] = {\n    1,\n    189,\n    0,\n    0,\n    0x64,\n    ANIMINDEX_NUMPARTS(anim_37_indices),\n    anim_37_values,\n    anim_37_indices,\n    0,\n};\n\n\nstatic const u16 anim_37_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x0064, 0x0C2A, 0x0064, 0x0C8E, 0x0064, 0x0CF2,\n    0x0064, 0x0AFE, 0x0064, 0x0B62, 0x0064, 0x0BC6,\n    0x0064, 0x09D2, 0x0064, 0x0A36, 0x0064, 0x0A9A,\n    0x0001, 0x09CE, 0x0001, 0x09CF, 0x0001, 0x09D0,\n    0x0064, 0x0193, 0x0064, 0x01F7, 0x0064, 0x025B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0064, 0x012F,\n    0x0064, 0x0003, 0x0064, 0x0067, 0x0064, 0x00CB,\n    0x0001, 0x09CA, 0x0001, 0x09CB, 0x0001, 0x09CC,\n    0x0064, 0x044F, 0x0064, 0x04B3, 0x0064, 0x0517,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0064, 0x03EB,\n    0x0064, 0x02BF, 0x0064, 0x0323, 0x0064, 0x0387,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x09CD,\n    0x0001, 0x09C7, 0x0001, 0x09C8, 0x0001, 0x09C9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0064, 0x0963,\n    0x0064, 0x0837, 0x0064, 0x089B, 0x0064, 0x08FF,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x09D1,\n    0x0064, 0x070B, 0x0064, 0x076F, 0x0064, 0x07D3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0064, 0x06A7,\n    0x0064, 0x057B, 0x0064, 0x05DF, 0x0064, 0x0643,\n};\n\nstatic const s16 anim_37_values[] = {\n    0x0000, 0x00AA, 0x3FFF, 0x0000, 0xFFD8, 0xFF6C, 0xFECF, 0xFE13,\n    0xFD4C, 0xFC8C, 0xFBE6, 0xFB6D, 0xFB34, 0xFB45, 0xFB94, 0xFC16,\n    0xFCBE, 0xFD82, 0xFE55, 0xFF2C, 0xFFFA, 0x00B2, 0x014C, 0x01B9,\n    0x01EE, 0x01E0, 0x0182, 0x00C9, 0xFFA9, 0xFE15, 0xFBC9, 0xF8A1,\n    0xF4C1, 0xF04B, 0xEB62, 0xE62B, 0xE0C9, 0xDB5E, 0xD60E, 0xD0FD,\n    0xCC4E, 0xC824, 0xC4A2, 0xC29B, 0xC259, 0xC336, 0xC48E, 0xC5BB,\n    0xC69B, 0xC77E, 0xC864, 0xC94C, 0xCA38, 0xCB27, 0xCC1A, 0xCD11,\n    0xCE0D, 0xCF0E, 0xD014, 0xD121, 0xD233, 0xD34C, 0xD46C, 0xD594,\n    0xD6C3, 0xD7FA, 0xD93A, 0xDA82, 0xDD37, 0xE115, 0xE3A3, 0xE4B9,\n    0xE5D6, 0xE6FA, 0xE823, 0xE94F, 0xEA7F, 0xEBB1, 0xECE3, 0xEE16,\n    0xEF47, 0xF076, 0xF1A2, 0xF2C9, 0xF3EB, 0xF507, 0xF61B, 0xF726,\n    0xF828, 0xF91F, 0xFA0A, 0xFAE9, 0xFBB9, 0xFC7B, 0xFD2D, 0xFDCE,\n    0xFE5D, 0xFED9, 0xFF40, 0xFF93, 0xFFCF, 0xFFF4, 0x0000, 0xF97C,\n    0xF975, 0xF963, 0xF948, 0xF929, 0xF908, 0xF8E7, 0xF8CC, 0xF8B7,\n    0xF8AE, 0xF8B4, 0xF8CB, 0xF8EF, 0xF91D, 0xF951, 0xF989, 0xF9C2,\n    0xF9F7, 0xFA25, 0xFA4A, 0xFA62, 0xFA6A, 0xFA5E, 0xFA3B, 0xF9FE,\n    0xF9A4, 0xF929, 0xF87A, 0xF78B, 0xF667, 0xF518, 0xF3A8, 0xF221,\n    0xF08E, 0xEEF7, 0xED68, 0xEBEA, 0xEA87, 0xE94A, 0xE83D, 0xE7A0,\n    0xE788, 0xE7BB, 0xE803, 0xE827, 0xE829, 0xE82F, 0xE839, 0xE846,\n    0xE856, 0xE866, 0xE878, 0xE889, 0xE899, 0xE8A8, 0xE8B3, 0xE8BC,\n    0xE8C0, 0xE8C0, 0xE8B9, 0xE8AC, 0xE898, 0xE87C, 0xE856, 0xE827,\n    0xE6BC, 0xE468, 0xE374, 0xE3FB, 0xE492, 0xE538, 0xE5EB, 0xE6AA,\n    0xE773, 0xE845, 0xE920, 0xEA01, 0xEAE7, 0xEBD2, 0xECBF, 0xEDAD,\n    0xEE9C, 0xEF89, 0xF073, 0xF159, 0xF23B, 0xF315, 0xF3E8, 0xF4B1,\n    0xF570, 0xF623, 0xF6C9, 0xF760, 0xF7E7, 0xF85D, 0xF8C1, 0xF911,\n    0xF94B, 0xF96F, 0xF97C, 0xED8C, 0xED19, 0xEBE4, 0xEA24, 0xE80D,\n    0xE5D5, 0xE3B3, 0xE1DA, 0xE082, 0xDFDF, 0xDFBE, 0xDFC4, 0xDFEE,\n    0xE036, 0xE09A, 0xE116, 0xE1A5, 0xE243, 0xE2EE, 0xE3A0, 0xE456,\n    0xE50C, 0xE5BE, 0xE669, 0xE707, 0xE796, 0xE811, 0xE880, 0xE8ED,\n    0xE957, 0xE9BF, 0xEA25, 0xEA88, 0xEAE9, 0xEB48, 0xEBA5, 0xEC00,\n    0xEC59, 0xECB0, 0xED05, 0xED54, 0xED95, 0xEDC8, 0xEDEB, 0xEDFE,\n    0xEE0A, 0xEE1B, 0xEE2F, 0xEE45, 0xEE5C, 0xEE75, 0xEE8C, 0xEEA3,\n    0xEEB7, 0xEEC8, 0xEED5, 0xEEDD, 0xEEE0, 0xEEDB, 0xEECF, 0xEEBA,\n    0xEE9B, 0xEE73, 0xEE3E, 0xEDFE, 0xEC38, 0xE938, 0xE79F, 0xE7A0,\n    0xE7AA, 0xE7BC, 0xE7D6, 0xE7F7, 0xE81E, 0xE84B, 0xE87D, 0xE8B4,\n    0xE8EF, 0xE92E, 0xE970, 0xE9B4, 0xE9F9, 0xEA40, 0xEA88, 0xEAD0,\n    0xEB17, 0xEB5E, 0xEBA3, 0xEBE5, 0xEC25, 0xEC61, 0xEC9A, 0xECCE,\n    0xECFD, 0xED26, 0xED49, 0xED65, 0xED7A, 0xED87, 0xED8C, 0xCA4F,\n    0xCA8C, 0xCB31, 0xCC28, 0xCD57, 0xCEA6, 0xCFFE, 0xD146, 0xD266,\n    0xD346, 0xD407, 0xD4D6, 0xD5B0, 0xD691, 0xD775, 0xD856, 0xD932,\n    0xDA04, 0xDAC8, 0xDB79, 0xDC15, 0xDC95, 0xDCF7, 0xDD36, 0xDD4F,\n    0xDD3C, 0xDCFA, 0xDC6C, 0xDB82, 0xDA49, 0xD8CF, 0xD721, 0xD54C,\n    0xD35D, 0xD162, 0xCF69, 0xCD7D, 0xCBAE, 0xCA08, 0xC898, 0xC772,\n    0xC699, 0xC5FF, 0xC598, 0xC555, 0xC551, 0xC594, 0xC5F8, 0xC658,\n    0xC68E, 0xC649, 0xC5A3, 0xC514, 0xC517, 0xC626, 0xC834, 0xCACC,\n    0xCDC6, 0xD0FB, 0xD445, 0xD77D, 0xDA7C, 0xDD1C, 0xDF35, 0xE0A1,\n    0xDDDA, 0xD77C, 0xD398, 0xD2F8, 0xD25E, 0xD1CB, 0xD13E, 0xD0B7,\n    0xD036, 0xCFBB, 0xCF46, 0xCED6, 0xCE6D, 0xCE09, 0xCDAB, 0xCD52,\n    0xCCFE, 0xCCB0, 0xCC66, 0xCC22, 0xCBE3, 0xCBA9, 0xCB74, 0xCB44,\n    0xCB18, 0xCAF0, 0xCACE, 0xCAAF, 0xCA95, 0xCA80, 0xCA6E, 0xCA60,\n    0xCA57, 0xCA51, 0xCA4F, 0xFB1D, 0xFB3B, 0xFB89, 0xFBF6, 0xFC71,\n    0xFCEA, 0xFD4D, 0xFD8C, 0xFD93, 0xFD53, 0xFCCA, 0xFC08, 0xFB18,\n    0xFA03, 0xF8D3, 0xF792, 0xF64A, 0xF504, 0xF3CB, 0xF2A8, 0xF1A5,\n    0xF0CD, 0xF028, 0xEFC1, 0xEFA1, 0xEFD3, 0xF061, 0xF17C, 0xF33E,\n    0xF58C, 0xF84C, 0xFB63, 0xFEB4, 0x0226, 0x059E, 0x0901, 0x0C34,\n    0x0F1B, 0x119D, 0x139D, 0x144C, 0x136E, 0x11C9, 0x1021, 0x0F3B,\n    0x0F54, 0x0FEA, 0x10A0, 0x111A, 0x10FC, 0x0FD3, 0x0DDC, 0x0BC4,\n    0x0A37, 0x09E3, 0x0AB9, 0x0C1F, 0x0DED, 0x0FF9, 0x121B, 0x142B,\n    0x1601, 0x1774, 0x185B, 0x188F, 0x142B, 0x0C12, 0x0742, 0x066F,\n    0x05A4, 0x04E2, 0x0429, 0x0377, 0x02CE, 0x022C, 0x0193, 0x0101,\n    0x0076, 0xFFF5, 0xFF79, 0xFF05, 0xFE98, 0xFE32, 0xFDD2, 0xFD7A,\n    0xFD28, 0xFCDC, 0xFC97, 0xFC58, 0xFC1F, 0xFBED, 0xFBC0, 0xFB99,\n    0xFB77, 0xFB5B, 0xFB44, 0xFB33, 0xFB27, 0xFB1F, 0xFB1D, 0xD2DC,\n    0xD371, 0xD505, 0xD757, 0xDA27, 0xDD34, 0xE03D, 0xE303, 0xE544,\n    0xE6BF, 0xE7B8, 0xE89B, 0xE96A, 0xEA23, 0xEAC9, 0xEB5C, 0xEBDC,\n    0xEC49, 0xECA4, 0xECEE, 0xED27, 0xED50, 0xED69, 0xED73, 0xED6E,\n    0xED5A, 0xED39, 0xECF6, 0xEC7F, 0xEBDD, 0xEB16, 0xEA32, 0xE936,\n    0xE82A, 0xE714, 0xE5FD, 0xE4EA, 0xE3E3, 0xE2EE, 0xE213, 0xE10C,\n    0xDFD1, 0xDEC8, 0xDE55, 0xDEDC, 0xE0F9, 0xE468, 0xE841, 0xEB9A,\n    0xED8B, 0xEDBF, 0xECCF, 0xEB3E, 0xE98B, 0xE837, 0xE72B, 0xE600,\n    0xE4C5, 0xE387, 0xE255, 0xE13D, 0xE04D, 0xDF93, 0xDF1D, 0xDEF8,\n    0xE195, 0xE653, 0xE8AE, 0xE84B, 0xE7D4, 0xE74A, 0xE6AF, 0xE605,\n    0xE54C, 0xE487, 0xE3B7, 0xE2DD, 0xE1FC, 0xE114, 0xE028, 0xDF38,\n    0xDE46, 0xDD54, 0xDC63, 0xDB75, 0xDA8B, 0xD9A7, 0xD8CA, 0xD7F7,\n    0xD72D, 0xD670, 0xD5C0, 0xD51F, 0xD48F, 0xD410, 0xD3A5, 0xD350,\n    0xD310, 0xD2E9, 0xD2DC, 0xD4B4, 0xD49A, 0xD457, 0xD3F6, 0xD383,\n    0xD30A, 0xD297, 0xD238, 0xD1F7, 0xD1E1, 0xD20C, 0xD27E, 0xD327,\n    0xD3FB, 0xD4EC, 0xD5EA, 0xD6EA, 0xD7DC, 0xD8B3, 0xD960, 0xD9D7,\n    0xDA09, 0xD9E8, 0xD967, 0xD877, 0xD70A, 0xD513, 0xD241, 0xCE66,\n    0xC9AD, 0xC43E, 0xBE44, 0xB7E8, 0xB154, 0xAAB0, 0xA427, 0x9DE2,\n    0x980B, 0x92CA, 0x8E4A, 0x8B6A, 0x8A73, 0x8AAD, 0x8B5F, 0x8BD2,\n    0x8C4A, 0x8D43, 0x8E54, 0x8F17, 0x8F24, 0x8DDA, 0x8B7F, 0x8902,\n    0x8756, 0x876B, 0x88E0, 0x8AAB, 0x8CC8, 0x8F30, 0x91DB, 0x94C3,\n    0x97E1, 0x9B2F, 0x9EA6, 0xA240, 0xA8ED, 0xB1C6, 0xB6F9, 0xB86A,\n    0xB9D8, 0xBB43, 0xBCAB, 0xBE0E, 0xBF6D, 0xC0C7, 0xC21B, 0xC369,\n    0xC4AF, 0xC5ED, 0xC723, 0xC850, 0xC973, 0xCA8C, 0xCB9B, 0xCC9D,\n    0xCD94, 0xCE7D, 0xCF5A, 0xD028, 0xD0E7, 0xD198, 0xD238, 0xD2C8,\n    0xD347, 0xD3B3, 0xD40E, 0xD455, 0xD489, 0xD4A9, 0xD4B4, 0x0000,\n    0x0139, 0x0497, 0x09A6, 0x0FF2, 0x1707, 0x1E71, 0x25BC, 0x2C75,\n    0x3226, 0x371F, 0x3BA7, 0x3F3C, 0x415D, 0x420A, 0x417B, 0x3F88,\n    0x3C08, 0x31D3, 0x2767, 0x22EB, 0x1EF4, 0x1B74, 0x1861, 0x15AD,\n    0x134E, 0x1135, 0x0F2B, 0x0D08, 0x0ADB, 0x08B3, 0x069F, 0x04AF,\n    0x02F2, 0x0177, 0x004D, 0xFF84, 0xFF2A, 0xFF4E, 0x0000, 0x0112,\n    0x0249, 0x03A5, 0x0521, 0x06BC, 0x0874, 0x0A47, 0x0C32, 0x0E32,\n    0x1047, 0x126C, 0x14A1, 0x16E3, 0x1930, 0x1B85, 0x1DE0, 0x203F,\n    0x22A0, 0x2500, 0x275D, 0x29B5, 0x2C06, 0x2E4D, 0x3089, 0x32B6,\n    0x34D3, 0x36DE, 0x38D4, 0x3AB2, 0x3C77, 0x3E21, 0x3FAD, 0x4118,\n    0x4262, 0x4386, 0x4484, 0x4559, 0x4602, 0x467E, 0x46CA, 0x46E4,\n    0x4652, 0x44B3, 0x4225, 0x3EC9, 0x3ABF, 0x3625, 0x311D, 0x2BC5,\n    0x263D, 0x20A6, 0x1B1E, 0x15C6, 0x10BE, 0x0C24, 0x081A, 0x04BE,\n    0x0230, 0x0091, 0x0000, 0x0000, 0x00C7, 0x02E4, 0x05FF, 0x09C2,\n    0x0DD4, 0x11DF, 0x158D, 0x1884, 0x1A70, 0x19F6, 0x1713, 0x136C,\n    0x10A9, 0x0F2A, 0x0E12, 0x0D2E, 0x0C4B, 0x0C1D, 0x0AF3, 0x077A,\n    0x033A, 0xFEA5, 0xFA2C, 0xF644, 0xF360, 0xF1F2, 0xF1B2, 0xF1FD,\n    0xF2BC, 0xF3D9, 0xF53D, 0xF6D3, 0xF883, 0xFA39, 0xFBDD, 0xFD59,\n    0xFE97, 0xFF81, 0x0000, 0x003F, 0x0078, 0x00AB, 0x00D9, 0x0100,\n    0x0123, 0x0140, 0x0159, 0x016D, 0x017C, 0x0188, 0x0190, 0x0194,\n    0x0194, 0x0192, 0x018C, 0x0184, 0x0179, 0x016C, 0x015D, 0x014D,\n    0x013A, 0x0127, 0x0112, 0x00FD, 0x00E7, 0x00D1, 0x00BB, 0x00A5,\n    0x008F, 0x007A, 0x0066, 0x0053, 0x0042, 0x0031, 0x0023, 0x0017,\n    0x000D, 0x0006, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xF549,\n    0xF543, 0xF535, 0xF521, 0xF50B, 0xF4F8, 0xF4EB, 0xF4E8, 0xF4F3,\n    0xF50F, 0xF571, 0xF61C, 0xF6CC, 0xF73C, 0xF751, 0xF732, 0xF6FE,\n    0xF6D7, 0xF707, 0xF6AE, 0xF540, 0xF372, 0xF17C, 0xEF94, 0xEDEE,\n    0xECC3, 0xEC47, 0xEC5C, 0xECB5, 0xED48, 0xEE09, 0xEEEC, 0xEFE5,\n    0xF0E8, 0xF1EA, 0xF2E0, 0xF3BC, 0xF475, 0xF4FD, 0xF549, 0xF572,\n    0xF597, 0xF5B7, 0xF5D4, 0xF5EE, 0xF604, 0xF617, 0xF627, 0xF633,\n    0xF63D, 0xF645, 0xF64A, 0xF64C, 0xF64D, 0xF64B, 0xF647, 0xF642,\n    0xF63B, 0xF633, 0xF629, 0xF61F, 0xF613, 0xF607, 0xF5F9, 0xF5EC,\n    0xF5DE, 0xF5D0, 0xF5C2, 0xF5B3, 0xF5A6, 0xF598, 0xF58B, 0xF57F,\n    0xF574, 0xF569, 0xF560, 0xF558, 0xF552, 0xF54D, 0xF54A, 0xF549,\n    0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549,\n    0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549,\n    0xF549, 0xF549, 0xF549, 0xC7DD, 0xC7C7, 0xC798, 0xC76A, 0xC75C,\n    0xC789, 0xC80E, 0xC906, 0xCA8D, 0xCCC1, 0xD220, 0xDAE1, 0xE3B8,\n    0xE957, 0xEA96, 0xE94F, 0xE6BA, 0xE411, 0xDFE4, 0xDB94, 0xD918,\n    0xD6C5, 0xD496, 0xD287, 0xD094, 0xCEB8, 0xCCF0, 0xCB0D, 0xC8F5,\n    0xC6BB, 0xC475, 0xC237, 0xC016, 0xBE28, 0xBC81, 0xBB37, 0xBA5D,\n    0xBA09, 0xBA50, 0xBAF9, 0xBBBA, 0xBC94, 0xBD84, 0xBE89, 0xBFA2,\n    0xC0CE, 0xC20A, 0xC357, 0xC4B1, 0xC619, 0xC78C, 0xC909, 0xCA8F,\n    0xCC1D, 0xCDB1, 0xCF4A, 0xD0E6, 0xD284, 0xD423, 0xD5C1, 0xD75D,\n    0xD8F5, 0xDA89, 0xDC17, 0xDD9D, 0xDF1B, 0xE08E, 0xE1F5, 0xE350,\n    0xE49C, 0xE5D9, 0xE704, 0xE81D, 0xE923, 0xEA13, 0xE9FB, 0xE85B,\n    0xE5DE, 0xE32F, 0xE0F9, 0xDFE7, 0xE005, 0xE0C5, 0xE1F2, 0xE355,\n    0xE4B7, 0xE5E1, 0xE69E, 0xE6B5, 0xE5F1, 0xE413, 0xE132, 0xDD96,\n    0xD989, 0xD553, 0xD13D, 0xCD91, 0xCA97, 0xC898, 0xC7DD, 0x054B,\n    0x0588, 0x0615, 0x06BA, 0x073B, 0x075F, 0x06EB, 0x05A5, 0x0352,\n    0xFFB8, 0xF621, 0xE640, 0xD678, 0xCD2E, 0xCBD3, 0xCF14, 0xD630,\n    0xE067, 0xFAF3, 0x1244, 0x15D6, 0x16DD, 0x160A, 0x140F, 0x119A,\n    0x0F5D, 0x0E08, 0x0D59, 0x0C9C, 0x0BD5, 0x0B07, 0x0A37, 0x0969,\n    0x08A0, 0x07E2, 0x0731, 0x0693, 0x060A, 0x059C, 0x054B, 0x0511,\n    0x04E2, 0x04BC, 0x04A0, 0x048D, 0x0481, 0x047B, 0x047C, 0x0483,\n    0x048D, 0x049C, 0x04AD, 0x04C0, 0x04D5, 0x04EA, 0x04FF, 0x0513,\n    0x0525, 0x0535, 0x0541, 0x0549, 0x054B, 0x05DD, 0x071C, 0x085C,\n    0x08ED, 0x0821, 0x054B, 0x0082, 0xFA82, 0xF38F, 0xEBF4, 0xE3F6,\n    0xDBDE, 0xD3F2, 0xCC7A, 0xC5BE, 0xC005, 0xBB96, 0xB8B9, 0xB7B5,\n    0xB854, 0xBA1B, 0xBCE6, 0xC093, 0xC4FF, 0xCA08, 0xCF8B, 0xD564,\n    0xDB71, 0xE190, 0xE79D, 0xED76, 0xF2F9, 0xF802, 0xFC6E, 0x001A,\n    0x02E5, 0x04AC, 0x054B, 0x2BD6, 0x2BD1, 0x2BC2, 0x2BAA, 0x2B89,\n    0x2B62, 0x2B33, 0x2AFF, 0x2AC5, 0x2A87, 0x29DF, 0x28DC, 0x2834,\n    0x289B, 0x2B11, 0x2EF2, 0x3276, 0x33D8, 0x2DBD, 0x26F4, 0x25A0,\n    0x24D6, 0x247A, 0x246F, 0x249C, 0x24E4, 0x252B, 0x257A, 0x25E5,\n    0x2667, 0x26FB, 0x279B, 0x2843, 0x28EB, 0x2991, 0x2A2D, 0x2ABA,\n    0x2B34, 0x2B94, 0x2BD6, 0x2C03, 0x2C27, 0x2C43, 0x2C59, 0x2C68,\n    0x2C71, 0x2C75, 0x2C74, 0x2C6F, 0x2C67, 0x2C5C, 0x2C4F, 0x2C40,\n    0x2C31, 0x2C20, 0x2C10, 0x2C01, 0x2BF3, 0x2BE7, 0x2BDE, 0x2BD8,\n    0x2BD6, 0x2BD0, 0x2BC2, 0x2BB3, 0x2BAD, 0x2BB6, 0x2BD6, 0x2C0D,\n    0x2C51, 0x2CA1, 0x2CF7, 0x2D52, 0x2DAF, 0x2E09, 0x2E5E, 0x2EAB,\n    0x2EEC, 0x2F1F, 0x2F40, 0x2F4B, 0x2F44, 0x2F30, 0x2F10, 0x2EE6,\n    0x2EB4, 0x2E7A, 0x2E3B, 0x2DF9, 0x2DB4, 0x2D6E, 0x2D29, 0x2CE6,\n    0x2CA7, 0x2C6E, 0x2C3B, 0x2C11, 0x2BF2, 0x2BDD, 0x2BD6, 0xCCF6,\n    0xCC30, 0xC9F7, 0xC671, 0xC1C3, 0xBC14, 0xB589, 0xAE48, 0xA677,\n    0x9E3B, 0x9093, 0x7D00, 0x6A73, 0x5FD8, 0x5F88, 0x65A7, 0x6FCE,\n    0x7B96, 0x9226, 0xA6A2, 0xAD79, 0xB2D4, 0xB6F6, 0xBA25, 0xBCA3,\n    0xBEB4, 0xC09D, 0xC26E, 0xC40D, 0xC57F, 0xC6C6, 0xC7E6, 0xC8E2,\n    0xC9BE, 0xCA7C, 0xCB21, 0xCBAF, 0xCC2B, 0xCC96, 0xCCF6, 0xCD48,\n    0xCD8B, 0xCDC0, 0xCDE8, 0xCE03, 0xCE14, 0xCE1C, 0xCE1A, 0xCE12,\n    0xCE03, 0xCDEE, 0xCDD6, 0xCDBA, 0xCD9D, 0xCD7F, 0xCD61, 0xCD45,\n    0xCD2C, 0xCD16, 0xCD05, 0xCCFA, 0xCCF6, 0xCDD6, 0xCFC3, 0xD1B0,\n    0xD290, 0xD156, 0xCCF6, 0xC593, 0xBC4D, 0xB195, 0xA5D6, 0x9981,\n    0x8D02, 0x80C9, 0x753F, 0x6ADA, 0x6205, 0x5B2D, 0x56C1, 0x552F,\n    0x5625, 0x58E3, 0x5D33, 0x62E0, 0x69B4, 0x7179, 0x79FA, 0x8304,\n    0x8C5B, 0x95CD, 0x9F25, 0xA82C, 0xB0AC, 0xB872, 0xBF45, 0xC4F2,\n    0xC942, 0xCC00, 0xCCF6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001,\n    0x0001, 0x0002, 0x0002, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001,\n    0x0001, 0x0001, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0004, 0x0004, 0x0004, 0x0004,\n    0x0004, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,\n    0x0005, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006,\n    0x0005, 0x0005, 0x0005, 0x0004, 0x0004, 0x0003, 0x0003, 0x0002,\n    0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xC9D8, 0xC9D8, 0xC9D9, 0xC9DA, 0xC9DB,\n    0xC9DC, 0xC9DD, 0xC9DE, 0xC9DF, 0xC9DF, 0xC9DF, 0xC9E0, 0xC9E0,\n    0xC9E1, 0xC9E2, 0xC9E3, 0xC9E4, 0xC9E6, 0xC9E7, 0xC9E9, 0xC9EA,\n    0xC9EC, 0xC9EE, 0xC9EF, 0xC9F0, 0xC9F1, 0xC9F2, 0xC9F3, 0xC9F3,\n    0xC9F3, 0xC9F3, 0xC9F2, 0xC9F1, 0xC9EF, 0xC9ED, 0xC9EA, 0xC9E6,\n    0xC9E2, 0xC9DE, 0xC9D8, 0xC9D2, 0xC9CB, 0xC9C3, 0xC9BB, 0xC9B2,\n    0xC9A9, 0xC99F, 0xC995, 0xC98A, 0xC97F, 0xC973, 0xC967, 0xC95B,\n    0xC94E, 0xC942, 0xC935, 0xC928, 0xC91B, 0xC90E, 0xC901, 0xC8F4,\n    0xC8E7, 0xC8DB, 0xC8CE, 0xC8C2, 0xC8B6, 0xC8AA, 0xC89F, 0xC894,\n    0xC889, 0xC87F, 0xC875, 0xC86C, 0xC863, 0xC85C, 0xC854, 0xC84E,\n    0xC848, 0xC843, 0xC83F, 0xC83B, 0xC839, 0xC837, 0xC837, 0xC83C,\n    0xC849, 0xC85D, 0xC878, 0xC898, 0xC8BB, 0xC8E1, 0xC907, 0xC92E,\n    0xC954, 0xC977, 0xC997, 0xC9B2, 0xC9C6, 0xC9D3, 0xC9D8, 0x1E4A,\n    0x1E4F, 0x1E5E, 0x1E74, 0x1E8F, 0x1EAC, 0x1ECA, 0x1EE5, 0x1EFB,\n    0x1F0A, 0x1F0F, 0x1F0E, 0x1F0C, 0x1F08, 0x1F02, 0x1EFC, 0x1EF4,\n    0x1EEB, 0x1EE1, 0x1ED7, 0x1ECC, 0x1EC0, 0x1EB5, 0x1EA9, 0x1E9D,\n    0x1E91, 0x1E86, 0x1E7B, 0x1E70, 0x1E67, 0x1E5E, 0x1E56, 0x1E4F,\n    0x1E49, 0x1E45, 0x1E42, 0x1E41, 0x1E42, 0x1E45, 0x1E4A, 0x1E50,\n    0x1E58, 0x1E61, 0x1E6C, 0x1E77, 0x1E84, 0x1E91, 0x1E9F, 0x1EAF,\n    0x1EBF, 0x1ED0, 0x1EE1, 0x1EF3, 0x1F05, 0x1F18, 0x1F2C, 0x1F3F,\n    0x1F53, 0x1F67, 0x1F7B, 0x1F8F, 0x1FA3, 0x1FB7, 0x1FCA, 0x1FDD,\n    0x1FF0, 0x2003, 0x2015, 0x2027, 0x2037, 0x2048, 0x2057, 0x2066,\n    0x2073, 0x2080, 0x208C, 0x2096, 0x20A0, 0x20A8, 0x20AF, 0x20B4,\n    0x20B8, 0x20BB, 0x20BB, 0x20B4, 0x20A0, 0x2082, 0x205A, 0x202A,\n    0x1FF5, 0x1FBD, 0x1F82, 0x1F48, 0x1F10, 0x1EDB, 0x1EAB, 0x1E83,\n    0x1E64, 0x1E51, 0x1E4A, 0x1B09, 0x1B06, 0x1AFF, 0x1AF4, 0x1AE5,\n    0x1AD4, 0x1AC1, 0x1AAD, 0x1A99, 0x1A86, 0x1A73, 0x1A46, 0x1A4C,\n    0x1A52, 0x1A58, 0x1A5F, 0x1A67, 0x1A6E, 0x1A76, 0x1A7F, 0x1A87,\n    0x1A90, 0x1A98, 0x1AA1, 0x1AAA, 0x1AB3, 0x1ABB, 0x1AC4, 0x1ACC,\n    0x1AD4, 0x1ADB, 0x1AE2, 0x1AE9, 0x1AF0, 0x1AF5, 0x1AFB, 0x1AFF,\n    0x1B03, 0x1B06, 0x1B09, 0x1B0B, 0x1B0C, 0x1B0D, 0x1B0E, 0x1B0E,\n    0x1B0F, 0x1B0E, 0x1B0E, 0x1B0D, 0x1B0C, 0x1B0B, 0x1B09, 0x1B07,\n    0x1B05, 0x1B03, 0x1B00, 0x1AFE, 0x1AFB, 0x1AF7, 0x1AF4, 0x1AF0,\n    0x1AED, 0x1AE9, 0x1AE5, 0x1AE0, 0x1ADC, 0x1AD8, 0x1AD3, 0x1ACE,\n    0x1AC9, 0x1AC5, 0x1AC0, 0x1AB8, 0x1AAD, 0x1A9E, 0x1A8E, 0x1A7C,\n    0x1A6A, 0x1A58, 0x1A49, 0x1A3B, 0x1A31, 0x1A2C, 0x1A2B, 0x1A30,\n    0x1A39, 0x1A45, 0x1A54, 0x1A65, 0x1A77, 0x1A8B, 0x1A9F, 0x1AB3,\n    0x1AC6, 0x1AD8, 0x1AE8, 0x1AF6, 0x1B00, 0x1B06, 0x1B09, 0x1144,\n    0x1149, 0x1155, 0x1168, 0x1180, 0x119C, 0x11BB, 0x11DC, 0x11FD,\n    0x121D, 0x123B, 0x1282, 0x1279, 0x126F, 0x1264, 0x1259, 0x124D,\n    0x1240, 0x1233, 0x1225, 0x1218, 0x120A, 0x11FB, 0x11ED, 0x11DF,\n    0x11D1, 0x11C3, 0x11B5, 0x11A8, 0x119B, 0x118F, 0x1183, 0x1178,\n    0x116D, 0x1164, 0x115B, 0x1154, 0x114E, 0x1148, 0x1144, 0x1141,\n    0x113F, 0x113D, 0x113C, 0x113B, 0x113B, 0x113B, 0x113C, 0x113D,\n    0x113F, 0x1141, 0x1144, 0x1147, 0x114A, 0x114E, 0x1152, 0x1157,\n    0x115C, 0x1161, 0x1166, 0x116C, 0x1172, 0x1179, 0x117F, 0x1186,\n    0x118D, 0x1195, 0x119C, 0x11A4, 0x11AC, 0x11B4, 0x11BC, 0x11C8,\n    0x11DA, 0x11F2, 0x120D, 0x1229, 0x1247, 0x1263, 0x127D, 0x1293,\n    0x12A3, 0x12AC, 0x12AC, 0x12A5, 0x1296, 0x1283, 0x126B, 0x124F,\n    0x1230, 0x1210, 0x11F0, 0x11CF, 0x11B0, 0x1193, 0x1179, 0x1164,\n    0x1153, 0x1148, 0x1144, 0xAC44, 0xAC3E, 0xAC2C, 0xAC12, 0xABEF,\n    0xABC7, 0xAB9A, 0xAB6B, 0xAB3C, 0xAB0D, 0xAAE2, 0xAA7B, 0xAA88,\n    0xAA96, 0xAAA5, 0xAAB6, 0xAAC7, 0xAAD9, 0xAAEC, 0xAAFF, 0xAB13,\n    0xAB28, 0xAB3C, 0xAB51, 0xAB65, 0xAB79, 0xAB8E, 0xABA1, 0xABB4,\n    0xABC7, 0xABD9, 0xABEA, 0xABFA, 0xAC09, 0xAC16, 0xAC23, 0xAC2D,\n    0xAC37, 0xAC3E, 0xAC44, 0xAC48, 0xAC4C, 0xAC4E, 0xAC50, 0xAC51,\n    0xAC52, 0xAC51, 0xAC50, 0xAC4E, 0xAC4C, 0xAC49, 0xAC45, 0xAC41,\n    0xAC3C, 0xAC36, 0xAC30, 0xAC2A, 0xAC23, 0xAC1B, 0xAC13, 0xAC0B,\n    0xAC02, 0xABF9, 0xABEF, 0xABE5, 0xABDB, 0xABD0, 0xABC5, 0xABBA,\n    0xABAF, 0xABA4, 0xAB98, 0xAB87, 0xAB6C, 0xAB4A, 0xAB23, 0xAAFA,\n    0xAACF, 0xAAA6, 0xAA81, 0xAA62, 0xAA4A, 0xAA3D, 0xAA3C, 0xAA48,\n    0xAA5C, 0xAA78, 0xAA9B, 0xAAC3, 0xAAEF, 0xAB1D, 0xAB4C, 0xAB7B,\n    0xABA8, 0xABD2, 0xABF7, 0xAC17, 0xAC2F, 0xAC3E, 0xAC44, 0x0000,\n    0xFFF2, 0xFFCB, 0xFF90, 0xFF48, 0xFEF7, 0xFEA2, 0xFE50, 0xFE07,\n    0xFDCA, 0xFDA0, 0xFD8F, 0xFDC4, 0xFE4A, 0xFEEE, 0xFF7E, 0xFFC8,\n    0xFFDD, 0xFFEE, 0xFFFD, 0x0008, 0x0011, 0x0018, 0x001D, 0x0020,\n    0x0021, 0x0021, 0x0020, 0x001D, 0x001A, 0x0017, 0x0013, 0x000E,\n    0x000A, 0x0007, 0x0003, 0x0001, 0x0000, 0x0000, 0x0000, 0x0001,\n    0x0003, 0x0004, 0x0006, 0x0007, 0x0008, 0x000A, 0x000B, 0x000C,\n    0x000D, 0x000F, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015,\n    0x0016, 0x0017, 0x0017, 0x0018, 0x0019, 0x001A, 0x001B, 0x001C,\n    0x001D, 0x001E, 0x001F, 0x001F, 0x0020, 0x0021, 0x0022, 0x0023,\n    0x0025, 0x0026, 0x0027, 0x0028, 0x0028, 0x0029, 0x0029, 0x002A,\n    0x0029, 0x0029, 0x0028, 0x0027, 0x0025, 0x0022, 0x001F, 0x001C,\n    0x0019, 0x0015, 0x0012, 0x000E, 0x000B, 0x0008, 0x0005, 0x0003,\n    0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001,\n    0x0001, 0x0002, 0x0002, 0x0002, 0x0001, 0x0001, 0x0000, 0xFFFD,\n    0xFFF8, 0xFFF1, 0xFFEC, 0xFFEA, 0xFFEA, 0xFFEA, 0xFFEB, 0xFFEC,\n    0xFFEC, 0xFFED, 0xFFEE, 0xFFEF, 0xFFF1, 0xFFF2, 0xFFF3, 0xFFF5,\n    0xFFF6, 0xFFF7, 0xFFF9, 0xFFFA, 0xFFFB, 0xFFFC, 0xFFFE, 0xFFFE,\n    0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001,\n    0x0001, 0x0001, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,\n    0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF,\n    0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE,\n    0xFFFE, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xBF40,\n    0xBF4F, 0xBF79, 0xBFB8, 0xC007, 0xC060, 0xC0BE, 0xC11B, 0xC172,\n    0xC1BD, 0xC1F7, 0xC21A, 0xC206, 0xC1B3, 0xC144, 0xC0DE, 0xC0A3,\n    0xC089, 0xC070, 0xC058, 0xC041, 0xC02B, 0xC016, 0xC001, 0xBFEE,\n    0xBFDB, 0xBFCA, 0xBFB9, 0xBFA9, 0xBF9B, 0xBF8D, 0xBF80, 0xBF75,\n    0xBF6A, 0xBF60, 0xBF58, 0xBF50, 0xBF4A, 0xBF45, 0xBF40, 0xBF3D,\n    0xBF3A, 0xBF38, 0xBF37, 0xBF36, 0xBF36, 0xBF37, 0xBF38, 0xBF3A,\n    0xBF3C, 0xBF3F, 0xBF43, 0xBF47, 0xBF4C, 0xBF51, 0xBF57, 0xBF5D,\n    0xBF64, 0xBF6C, 0xBF74, 0xBF7C, 0xBF85, 0xBF8F, 0xBF99, 0xBFA4,\n    0xBFAF, 0xBFBA, 0xBFC6, 0xBFD3, 0xBFE0, 0xBFF2, 0xC00C, 0xC02C,\n    0xC052, 0xC07B, 0xC0A6, 0xC0D2, 0xC0FC, 0xC123, 0xC145, 0xC162,\n    0xC177, 0xC182, 0xC183, 0xC178, 0xC162, 0xC143, 0xC11D, 0xC0F0,\n    0xC0BF, 0xC08C, 0xC057, 0xC022, 0xBFF0, 0xBFC1, 0xBF97, 0xBF73,\n    0xBF58, 0xBF46, 0xBF40, 0x2537, 0x252D, 0x2512, 0x24EB, 0x24B9,\n    0x2482, 0x244A, 0x2413, 0x23E2, 0x23BA, 0x239F, 0x2395, 0x2397,\n    0x239C, 0x23A3, 0x23AD, 0x23B9, 0x23C8, 0x23D8, 0x23EA, 0x23FD,\n    0x2412, 0x2427, 0x243D, 0x2453, 0x246A, 0x2480, 0x2497, 0x24AC,\n    0x24C1, 0x24D6, 0x24E8, 0x24FA, 0x2509, 0x2517, 0x2523, 0x252C,\n    0x2532, 0x2536, 0x2537, 0x2535, 0x2532, 0x252D, 0x2528, 0x2521,\n    0x2519, 0x2510, 0x2506, 0x24FB, 0x24EF, 0x24E3, 0x24D6, 0x24C8,\n    0x24B9, 0x24AA, 0x249B, 0x248B, 0x247B, 0x246B, 0x245B, 0x244A,\n    0x2439, 0x2429, 0x2418, 0x2408, 0x23F8, 0x23E8, 0x23D9, 0x23CA,\n    0x23BB, 0x23AD, 0x23A0, 0x2393, 0x2387, 0x237C, 0x2372, 0x2369,\n    0x2360, 0x2359, 0x2353, 0x234F, 0x234B, 0x2349, 0x2348, 0x234E,\n    0x235D, 0x2376, 0x2395, 0x23BB, 0x23E5, 0x2411, 0x243F, 0x246E,\n    0x249A, 0x24C4, 0x24E9, 0x2509, 0x2521, 0x2531, 0x2537, 0xD64A,\n    0xEC41, 0xB59E, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001,\n    0x4171, 0xBF5F, 0x0000, 0xFF82, 0xFE28, 0xFC20, 0xF999, 0xF6C3,\n    0xF3CD, 0xF0E6, 0xEE3E, 0xEC02, 0xE987, 0xE6E6, 0xE576, 0xE68F,\n    0xEA93, 0xF065, 0xF725, 0xFDF2, 0x03EA, 0x082F, 0x0A52, 0x0AE1,\n    0x0A71, 0x0996, 0x08E6, 0x0878, 0x07FF, 0x077D, 0x06F3, 0x0661,\n    0x05CA, 0x052D, 0x048B, 0x03E7, 0x0340, 0x0298, 0x01F0, 0x0148,\n    0x00A2, 0x0000, 0xFF2F, 0xFE27, 0xFD2A, 0xFC77, 0xFC4F, 0xFD02,\n    0xFE66, 0x0001, 0x015C, 0x01FF, 0x019D, 0x0086, 0xFF2E, 0xFE05,\n    0xFD7F, 0xFDBB, 0xFE6F, 0xFF6F, 0x0093, 0x01B1, 0x029F, 0x0333,\n    0x0343, 0x02A4, 0x012E, 0xFDE0, 0xF86F, 0xF1C1, 0xEABA, 0xE440,\n    0xDF38, 0xDC87, 0xDC8D, 0xDE9E, 0xE20D, 0xE630, 0xEA5A, 0xEDDF,\n    0xF014, 0xF0F2, 0xF113, 0xF0B3, 0xF011, 0xEF6B, 0xEF00, 0xEF0E,\n    0xEF78, 0xEFF7, 0xF08C, 0xF138, 0xF1FC, 0xF2D8, 0xF3CD, 0xF4DB,\n    0xF604, 0xF7D4, 0xFA67, 0xFD11, 0xFF28, 0x0000, 0x0000, 0x001B,\n    0x0067, 0x00D7, 0x0162, 0x01FB, 0x0297, 0x032C, 0x03AF, 0x0414,\n    0x0461, 0x0491, 0x0488, 0x042B, 0x0375, 0x0285, 0x0173, 0x0058,\n    0xFF50, 0xFE70, 0xFDAB, 0xFCEF, 0xFC53, 0xFBED, 0xFBD3, 0xFBEB,\n    0xFC0B, 0xFC31, 0xFC5F, 0xFC94, 0xFCD0, 0xFD13, 0xFD5C, 0xFDAB,\n    0xFE00, 0xFE5C, 0xFEBD, 0xFF23, 0xFF8F, 0x0000, 0x00C8, 0x0200,\n    0x0350, 0x0462, 0x04DE, 0x047F, 0x037E, 0x0245, 0x013C, 0x00CC,\n    0x013A, 0x023E, 0x0374, 0x0475, 0x04DD, 0x04C5, 0x048C, 0x0437,\n    0x03CB, 0x034D, 0x02C1, 0x022B, 0x0192, 0x00F9, 0x0064, 0xFFB3,\n    0xFED0, 0xFDD7, 0xFCE4, 0xFC14, 0xFB81, 0xFB47, 0xFB76, 0xFBFC,\n    0xFCBE, 0xFDA4, 0xFE94, 0xFF75, 0x002D, 0x00D5, 0x018A, 0x023E,\n    0x02E2, 0x0366, 0x03BB, 0x03D3, 0x03AA, 0x034F, 0x02CE, 0x0235,\n    0x018E, 0x00E8, 0x004E, 0xFFCD, 0xFF70, 0xFF52, 0xFF71, 0xFFAC,\n    0xFFE6, 0x0000, 0xFC62, 0xFC99, 0xFD2E, 0xFE0A, 0xFF16, 0x003A,\n    0x015F, 0x026D, 0x034E, 0x03E9, 0x044D, 0x045B, 0x03BE, 0x021D,\n    0xFF22, 0xFB1A, 0xF6AD, 0xF27D, 0xEF31, 0xED6E, 0xEE10, 0xF0C0,\n    0xF454, 0xF7A2, 0xF97D, 0xFA2C, 0xFABA, 0xFB2B, 0xFB83, 0xFBC4,\n    0xFBF2, 0xFC11, 0xFC24, 0xFC2D, 0xFC31, 0xFC32, 0xFC34, 0xFC3B,\n    0xFC49, 0xFC62, 0xFC6D, 0xFC58, 0xFC33, 0xFC0C, 0xFBF1, 0xFBE3,\n    0xFBD8, 0xFBD0, 0xFBC7, 0xFBBD, 0xFBAF, 0xFB9E, 0xFB8E, 0xFB82,\n    0xFB7D, 0xFB8A, 0xFBAA, 0xFBD5, 0xFC04, 0xFC30, 0xFC50, 0xFC5D,\n    0xFC4F, 0xFC1E, 0xFBC4, 0xFAD7, 0xF938, 0xF746, 0xF564, 0xF3F3,\n    0xF353, 0xF3E6, 0xF5FF, 0xF962, 0xFD9D, 0x023B, 0x06CD, 0x0ADE,\n    0x0DFB, 0x1068, 0x12A1, 0x1488, 0x1602, 0x16F2, 0x173B, 0x16C0,\n    0x156F, 0x1365, 0x10CE, 0x0DD9, 0x0AB1, 0x0784, 0x047E, 0x01CC,\n    0xFF9B, 0xFE11, 0xFD1D, 0xFC9D, 0xFC6A, 0xFC62, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0xFFEA, 0xFFBC, 0xFF9A, 0xFFA7, 0x0005, 0x00FA, 0x0270, 0x03FD,\n    0x0539, 0x05B9, 0x05B0, 0x0596, 0x056D, 0x0536, 0x04F4, 0x04A8,\n    0x0453, 0x03F7, 0x0397, 0x0333, 0x02CD, 0x0267, 0x0203, 0x01A2,\n    0x0146, 0x00F1, 0x00A4, 0x0061, 0x002A, 0x0000, 0xFFE0, 0xFFC4,\n    0xFFAC, 0xFF99, 0xFF89, 0xFF7C, 0xFF73, 0xFF6C, 0xFF68, 0xFF66,\n    0xFF66, 0xFF68, 0xFF6C, 0xFF70, 0xFF75, 0xFF7B, 0xFF81, 0xFF87,\n    0xFF8D, 0xFF92, 0xFF96, 0xFF99, 0xFF9B, 0xFF9A, 0xFF98, 0xFF95,\n    0xFF94, 0xFF93, 0xFF92, 0xFF92, 0xFF92, 0xFF92, 0xFF92, 0xFF92,\n    0xFF91, 0xFF90, 0xFF8F, 0xFF91, 0xFF94, 0xFF98, 0xFF9D, 0xFFA3,\n    0xFFA9, 0xFFAF, 0xFFB6, 0xFFBD, 0xFFC3, 0xFFCA, 0xFFD1, 0xFFD8,\n    0xFFDF, 0xFFE5, 0xFFEB, 0xFFF0, 0xFFF5, 0xFFF9, 0xFFFC, 0xFFFE,\n    0x0000, 0x0000, 0x0000, 0xFFEF, 0xFFC3, 0xFF89, 0xFF50, 0xFF24,\n    0xFF12, 0xFF28, 0xFF73, 0x0000, 0x0168, 0x03C7, 0x066C, 0x08A6,\n    0x09C7, 0x0967, 0x07FE, 0x0622, 0x046D, 0x0376, 0x0316, 0x02BF,\n    0x026E, 0x0225, 0x01E3, 0x01A6, 0x0170, 0x013F, 0x0113, 0x00EC,\n    0x00C9, 0x00AA, 0x008D, 0x0074, 0x005D, 0x0048, 0x0035, 0x0022,\n    0x0011, 0x0000, 0xFFF1, 0xFFE4, 0xFFDB, 0xFFD5, 0xFFD1, 0xFFD0,\n    0xFFD1, 0xFFD4, 0xFFD8, 0xFFDF, 0xFFE6, 0xFFEF, 0xFFF9, 0x0002,\n    0x000D, 0x0019, 0x0024, 0x002F, 0x003A, 0x0044, 0x004E, 0x0056,\n    0x005E, 0x0063, 0x0068, 0x0054, 0x001E, 0xFFDC, 0xFF9E, 0xFF7B,\n    0xFF84, 0xFFCF, 0x006E, 0x01D7, 0x041C, 0x06BE, 0x093D, 0x0B18,\n    0x0BD0, 0x0BB8, 0x0B7C, 0x0B1F, 0x0AA6, 0x0A13, 0x096C, 0x08B3,\n    0x07ED, 0x071E, 0x0648, 0x0572, 0x049D, 0x03CE, 0x0309, 0x0252,\n    0x01AD, 0x011C, 0x00A6, 0x004C, 0x0013, 0x0000, 0x0884, 0x0847,\n    0x07A3, 0x06B4, 0x0597, 0x0468, 0x0343, 0x0245, 0x018A, 0x012E,\n    0x018E, 0x02B0, 0x042D, 0x059E, 0x069D, 0x071D, 0x0762, 0x0780,\n    0x078B, 0x0797, 0x07AA, 0x07BD, 0x07CE, 0x07DE, 0x07EE, 0x07FD,\n    0x080B, 0x0818, 0x0825, 0x0831, 0x083C, 0x0846, 0x0850, 0x0859,\n    0x0862, 0x086A, 0x0871, 0x0878, 0x087E, 0x0884, 0x0889, 0x088D,\n    0x0890, 0x0893, 0x0895, 0x0897, 0x0898, 0x0898, 0x0899, 0x0898,\n    0x0898, 0x0897, 0x0896, 0x0895, 0x0893, 0x0892, 0x0890, 0x088F,\n    0x088D, 0x088C, 0x088B, 0x088A, 0x0889, 0x0889, 0x0889, 0x0889,\n    0x088A, 0x088B, 0x088B, 0x088C, 0x088C, 0x088B, 0x0889, 0x0885,\n    0x087F, 0x0879, 0x0872, 0x086D, 0x086B, 0x086B, 0x086B, 0x086C,\n    0x086D, 0x086E, 0x086F, 0x0871, 0x0872, 0x0874, 0x0876, 0x0878,\n    0x0879, 0x087B, 0x087D, 0x087E, 0x0880, 0x0881, 0x0882, 0x0883,\n    0x0883, 0x0884, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0004,\n    0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0009, 0x0009, 0x0009,\n    0x0009, 0x0009, 0x0008, 0x0008, 0x0008, 0x0008, 0x0007, 0x0007,\n    0x0006, 0x0006, 0x0005, 0x0005, 0x0005, 0x0004, 0x0004, 0x0003,\n    0x0003, 0x0002, 0x0002, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF,\n    0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE,\n    0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE,\n    0xFFFE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,\n    0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,\n    0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,\n    0xFFFD, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0002,\n    0x0009, 0x0014, 0x0021, 0x0031, 0x0041, 0x0051, 0x0060, 0x006D,\n    0x0077, 0x007E, 0x007F, 0x007F, 0x007E, 0x007C, 0x007A, 0x0077,\n    0x0074, 0x0070, 0x006B, 0x0067, 0x0062, 0x005C, 0x0057, 0x0051,\n    0x004B, 0x0045, 0x003F, 0x0038, 0x0032, 0x002C, 0x0025, 0x001F,\n    0x0019, 0x0014, 0x000E, 0x0009, 0x0004, 0x0000, 0xFFFC, 0xFFF7,\n    0xFFF2, 0xFFED, 0xFFE7, 0xFFE1, 0xFFDB, 0xFFD5, 0xFFCF, 0xFFC9,\n    0xFFC3, 0xFFBD, 0xFFB7, 0xFFB1, 0xFFAB, 0xFFA5, 0xFFA0, 0xFF9B,\n    0xFF96, 0xFF92, 0xFF8E, 0xFF8A, 0xFF87, 0xFF85, 0xFF83, 0xFF81,\n    0xFF80, 0xFF80, 0xFF80, 0xFF81, 0xFF83, 0xFF88, 0xFF92, 0xFFA0,\n    0xFFB2, 0xFFC5, 0xFFDB, 0xFFF2, 0x0007, 0x001D, 0x0032, 0x0044,\n    0x0054, 0x005F, 0x0066, 0x0069, 0x0068, 0x0064, 0x005D, 0x0055,\n    0x004B, 0x0041, 0x0035, 0x002A, 0x001F, 0x0015, 0x000C, 0x0005,\n    0x0001, 0x0000, 0x40A1, 0x40A4, 0x40AC, 0x40B8, 0x40C7, 0x40D7,\n    0x40E8, 0x40F8, 0x4107, 0x4112, 0x4118, 0x411A, 0x4119, 0x4118,\n    0x4116, 0x4114, 0x4111, 0x410D, 0x4109, 0x4105, 0x4101, 0x40FC,\n    0x40F6, 0x40F1, 0x40EC, 0x40E6, 0x40E0, 0x40DA, 0x40D4, 0x40CF,\n    0x40C9, 0x40C3, 0x40BE, 0x40B9, 0x40B4, 0x40AF, 0x40AB, 0x40A7,\n    0x40A4, 0x40A1, 0x409E, 0x409C, 0x409A, 0x4098, 0x4096, 0x4094,\n    0x4092, 0x4090, 0x408F, 0x408D, 0x408C, 0x408A, 0x4089, 0x4088,\n    0x4087, 0x4086, 0x4085, 0x4084, 0x4084, 0x4083, 0x4082, 0x4082,\n    0x4081, 0x4080, 0x4080, 0x407F, 0x407F, 0x407E, 0x407E, 0x407D,\n    0x407D, 0x407D, 0x407D, 0x407D, 0x407E, 0x407F, 0x4080, 0x4081,\n    0x4083, 0x4084, 0x4086, 0x4088, 0x4089, 0x408A, 0x408C, 0x408D,\n    0x408F, 0x4091, 0x4093, 0x4094, 0x4096, 0x4098, 0x409A, 0x409C,\n    0x409D, 0x409E, 0x40A0, 0x40A0, 0x40A1, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_38.inc.c",
    "content": "static const struct Animation anim_38[] = {\n    1,\n    189,\n    0,\n    0,\n    0x0C,\n    ANIMINDEX_NUMPARTS(anim_38_indices),\n    anim_38_values,\n    anim_38_indices,\n    0,\n};\n\n\nstatic const u16 anim_38_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x000C, 0x0182, 0x000C, 0x018E, 0x000C, 0x019A,\n    0x000C, 0x015E, 0x000C, 0x016A, 0x000C, 0x0176,\n    0x000C, 0x013A, 0x000C, 0x0146, 0x000C, 0x0152,\n    0x0001, 0x0136, 0x0001, 0x0137, 0x0001, 0x0138,\n    0x000C, 0x0033, 0x000C, 0x003F, 0x000C, 0x004B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x0027,\n    0x000C, 0x0003, 0x000C, 0x000F, 0x000C, 0x001B,\n    0x0001, 0x0132, 0x0001, 0x0133, 0x0001, 0x0134,\n    0x000C, 0x0087, 0x000C, 0x0093, 0x000C, 0x009F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x007B,\n    0x000C, 0x0057, 0x000C, 0x0063, 0x000C, 0x006F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0135,\n    0x0001, 0x012F, 0x0001, 0x0130, 0x0001, 0x0131,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x0123,\n    0x000C, 0x00FF, 0x000C, 0x010B, 0x000C, 0x0117,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0139,\n    0x000C, 0x00DB, 0x000C, 0x00E7, 0x000C, 0x00F3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000C, 0x00CF,\n    0x000C, 0x00AB, 0x000C, 0x00B7, 0x000C, 0x00C3,\n};\n\nstatic const s16 anim_38_values[] = {\n    0x0000, 0x00AA, 0x3FFF, 0xEA73, 0xEB7E, 0xEDCA, 0xF01B, 0xF23E,\n    0xF4B3, 0xF74B, 0xF9D9, 0xFC2C, 0xFE18, 0xFF6E, 0xFFFF, 0xE788,\n    0xEA9C, 0xF0A1, 0xF4C5, 0xF631, 0xF74C, 0xF820, 0xF8B7, 0xF91C,\n    0xF957, 0xF974, 0xF97C, 0xE831, 0xE717, 0xE522, 0xE459, 0xE519,\n    0xE649, 0xE7C0, 0xE955, 0xEADD, 0xEC2F, 0xED21, 0xED8A, 0xD054,\n    0xD69D, 0xE231, 0xE820, 0xE678, 0xE2FC, 0xDE4B, 0xD902, 0xD3C1,\n    0xCF24, 0xCBCB, 0xCA54, 0x02F5, 0x017D, 0xFEA2, 0xFCB3, 0xFC18,\n    0xFBAA, 0xFB60, 0xFB34, 0xFB1F, 0xFB18, 0xFB1A, 0xFB1D, 0xE52A,\n    0xE560, 0xE576, 0xE496, 0xE299, 0xE00B, 0xDD2E, 0xDA40, 0xD782,\n    0xD532, 0xD391, 0xD2DE, 0xBF44, 0xC5C1, 0xD229, 0xD9EA, 0xDB29,\n    0xDB49, 0xDA95, 0xD955, 0xD7D5, 0xD65E, 0xD53B, 0xD4B5, 0x4043,\n    0x425F, 0x466F, 0x4911, 0x46E4, 0x3EDF, 0x335B, 0x2606, 0x188D,\n    0x0C9D, 0x03E3, 0x000D, 0x006A, 0x005B, 0x003A, 0x0015, 0x0000,\n    0xFFF9, 0xFFF7, 0xFFF7, 0xFFF9, 0xFFFC, 0xFFFF, 0x0000, 0xF58E,\n    0xF584, 0xF56E, 0xF557, 0xF549, 0xF545, 0xF543, 0xF543, 0xF545,\n    0xF547, 0xF548, 0xF549, 0xEA13, 0xE896, 0xE543, 0xE1CD, 0xDFE7,\n    0xE1F0, 0xE5AE, 0xE5F1, 0xDFA8, 0xD5E3, 0xCCA4, 0xC7EF, 0xDC6A,\n    0xD5B0, 0xC76B, 0xBA78, 0xB7B5, 0xC231, 0xD432, 0xE961, 0xFD69,\n    0x0BF1, 0x0BD0, 0x056F, 0x2D97, 0x2DE0, 0x2E7F, 0x2F16, 0x2F4B,\n    0x2F06, 0x2E81, 0x2DDB, 0x2D32, 0x2CA4, 0x2C25, 0x2BD7, 0x8F0E,\n    0x84E8, 0x6F29, 0x5AE6, 0x552F, 0x61F7, 0x78DF, 0x9482, 0xAF70,\n    0xC443, 0xCCB4, 0xCCFC, 0x0005, 0x0005, 0x0005, 0x0006, 0x0006,\n    0x0006, 0x0005, 0x0004, 0x0002, 0x0001, 0x0000, 0x0000, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xC871, 0xC866, 0xC84D, 0xC834, 0xC828,\n    0xC837, 0xC86B, 0xC8BC, 0xC91A, 0xC974, 0xC9B8, 0xC9D8, 0x205D,\n    0x2038, 0x1FDD, 0x1F6A, 0x1EFC, 0x1EB2, 0x1E89, 0x1E6D, 0x1E5A,\n    0x1E50, 0x1E4B, 0x1E4A, 0x1A92, 0x1A9A, 0x1AAE, 0x1AC7, 0x1AE0,\n    0x1AF0, 0x1AF9, 0x1B00, 0x1B04, 0x1B07, 0x1B08, 0x1B09, 0x1206,\n    0x11F9, 0x11DA, 0x11B1, 0x118B, 0x1170, 0x1161, 0x1155, 0x114D,\n    0x1148, 0x1145, 0x1144, 0xAB2C, 0xAB3F, 0xAB6D, 0xABA8, 0xABE1,\n    0xAC07, 0xAC1D, 0xAC2D, 0xAC38, 0xAC3F, 0xAC43, 0xAC44, 0x0026,\n    0x0027, 0x0028, 0x002A, 0x002A, 0x0028, 0x0023, 0x001B, 0x0012,\n    0x0009, 0x0003, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFE,\n    0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0xC07C,\n    0xC09C, 0xC0E6, 0xC13B, 0xC17A, 0xC183, 0xC146, 0xC0D9, 0xC055,\n    0xBFD3, 0xBF6F, 0xBF41, 0x239D, 0x238E, 0x236D, 0x234C, 0x233A,\n    0x2348, 0x2385, 0x23E5, 0x2454, 0x24BF, 0x2511, 0x2536, 0xD64A,\n    0xEC41, 0xB59E, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001,\n    0x4171, 0xBF5F, 0xE406, 0xE997, 0xF014, 0xF0C9, 0xF00C, 0xEF10,\n    0xEF0E, 0xF088, 0xF2F9, 0xF604, 0xFB79, 0xFFED, 0xFD18, 0xFE5B,\n    0x002D, 0x0166, 0x029D, 0x0387, 0x03D3, 0x02CD, 0x00DF, 0xFF70,\n    0xFF7E, 0xFFFE, 0xFFF2, 0x0603, 0x0DFB, 0x11E4, 0x1555, 0x174B,\n    0x16C0, 0x10EB, 0x075D, 0xFF9B, 0xFCBA, 0xFC61, 0xFF91, 0xFF90,\n    0xFF94, 0xFF9F, 0xFFAD, 0xFFBD, 0xFFCD, 0xFFDC, 0xFFEA, 0xFFF5,\n    0xFFFD, 0x0000, 0x0314, 0x0783, 0x0BD0, 0x0B33, 0x0A06, 0x0873,\n    0x06A6, 0x04C7, 0x0303, 0x0185, 0x0076, 0x0001, 0x0882, 0x0876,\n    0x086B, 0x086C, 0x086E, 0x0871, 0x0875, 0x0879, 0x087D, 0x0880,\n    0x0883, 0x0884, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,\n    0xFFFD, 0xFFFE, 0xFFFF, 0x0000, 0x0000, 0x0000, 0xFFB9, 0xFFC5,\n    0xFFE3, 0x000A, 0x0033, 0x0055, 0x0066, 0x0060, 0x0048, 0x0029,\n    0x000D, 0x0000, 0x407E, 0x407E, 0x4081, 0x4084, 0x4087, 0x408A,\n    0x408E, 0x4093, 0x4098, 0x409C, 0x40A0, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_39.inc.c",
    "content": "static const struct Animation anim_39[] = {\n    1,\n    189,\n    0,\n    0,\n    0x9B,\n    ANIMINDEX_NUMPARTS(anim_39_indices),\n    anim_39_values,\n    anim_39_indices,\n    0,\n};\n\n\nstatic const u16 anim_39_indices[] = {\n    0x0001, 0x0000, 0x009B, 0x0001, 0x009B, 0x009C, 0x0001, 0x0000, 0x0001, 0x0137, 0x0001, 0x0000,\n    0x009B, 0x1670, 0x009B, 0x170B, 0x009B, 0x17A6,\n    0x009B, 0x149F, 0x009B, 0x153A, 0x009B, 0x15D5,\n    0x009B, 0x12CE, 0x009B, 0x1369, 0x009B, 0x1404,\n    0x0001, 0x12CA, 0x0001, 0x12CB, 0x0001, 0x12CC,\n    0x009B, 0x03A4, 0x009B, 0x043F, 0x009B, 0x04DA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x009B, 0x0309,\n    0x009B, 0x0138, 0x009B, 0x01D3, 0x009B, 0x026E,\n    0x0001, 0x122C, 0x0001, 0x122D, 0x0001, 0x122E,\n    0x009B, 0x07E1, 0x009B, 0x087C, 0x009B, 0x0917,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x009B, 0x0746,\n    0x009B, 0x0575, 0x009B, 0x0610, 0x009B, 0x06AB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x009B, 0x122F,\n    0x009B, 0x105B, 0x009B, 0x10F6, 0x009B, 0x1191,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x009B, 0x0FC0,\n    0x009B, 0x0DEF, 0x009B, 0x0E8A, 0x009B, 0x0F25,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x12CD,\n    0x009B, 0x0C1E, 0x009B, 0x0CB9, 0x009B, 0x0D54,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x009B, 0x0B83,\n    0x009B, 0x09B2, 0x009B, 0x0A4D, 0x009B, 0x0AE8,\n};\n\nstatic const s16 anim_39_values[] = {\n    0x0000, 0x0046, 0x0032, 0x002C, 0x0029, 0x0027, 0x0026, 0x0026,\n    0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026,\n    0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026,\n    0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026,\n    0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026,\n    0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026,\n    0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026,\n    0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026,\n    0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0026, 0x0027, 0x0027,\n    0x0028, 0x0028, 0x0029, 0x0029, 0x002A, 0x002B, 0x002B, 0x002C,\n    0x002D, 0x002E, 0x002F, 0x0030, 0x0032, 0x0033, 0x0034, 0x0036,\n    0x0038, 0x0039, 0x003B, 0x003D, 0x003F, 0x0042, 0x0044, 0x0047,\n    0x0049, 0x005E, 0x0079, 0x0086, 0x0092, 0x009A, 0x009D, 0x0096,\n    0x0083, 0x006A, 0x0050, 0x0039, 0x0046, 0x004F, 0x0055, 0x0058,\n    0x005A, 0x0058, 0x0052, 0x004C, 0x0047, 0x0045, 0x0043, 0x0041,\n    0x003F, 0x003E, 0x003D, 0x003C, 0x003C, 0x003B, 0x003B, 0x003A,\n    0x0039, 0x0039, 0x0038, 0x0039, 0x003A, 0x003D, 0x0041, 0x0047,\n    0x0053, 0x0067, 0x007E, 0x0094, 0x00A5, 0x00AE, 0x00B0, 0x00B1,\n    0x00B1, 0x00B0, 0x00AF, 0x00AF, 0x00AE, 0x00AD, 0x00AC, 0x00AC,\n    0x00AB, 0x00AA, 0x00AA, 0x00AA, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0002, 0x0003, 0x0004,\n    0x0005, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0009, 0x000A,\n    0x000A, 0x000A, 0x000A, 0x000A, 0x000A, 0x0009, 0x0008, 0x0007,\n    0x0006, 0x0004, 0x0002, 0x0000, 0xFFE4, 0xFFB2, 0xFF7E, 0xFF44,\n    0xFF11, 0xFEEE, 0xFEE0, 0xFEDF, 0xFEE4, 0xFEEB, 0xFEEE, 0xFEEE,\n    0xFEEE, 0xFEEE, 0xFEEE, 0xFEEE, 0xFEEE, 0xFEEE, 0xFEEE, 0xFEEE,\n    0xFEEE, 0xFEEE, 0xFEED, 0xFEEC, 0xFEEC, 0xFEEC, 0xFEED, 0xFEEE,\n    0xFEF1, 0xFEF4, 0xFEF7, 0xFEF9, 0xFEFD, 0xFF01, 0xFF06, 0xFF0D,\n    0xFF16, 0xFF21, 0xFF30, 0xFF49, 0xFF6E, 0xFF99, 0xFFC2, 0xFFE3,\n    0xFFF6, 0xFFFE, 0x0001, 0x0005, 0x0006, 0x0006, 0x0006, 0x0005,\n    0x0004, 0x0003, 0x0002, 0x0001, 0x0000, 0x0000, 0x0000, 0x3FFF,\n    0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0,\n    0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0,\n    0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0,\n    0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0,\n    0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0,\n    0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0,\n    0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0,\n    0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0,\n    0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0,\n    0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0,\n    0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0,\n    0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0, 0xD8C0,\n    0xD8A8, 0xD867, 0xD806, 0xD791, 0xD712, 0xD693, 0xD61E, 0xD5BD,\n    0xD57C, 0xD564, 0xD57F, 0xD5D9, 0xD67B, 0xD76F, 0xD8C0, 0xDB1A,\n    0xDEDA, 0xE395, 0xE8DF, 0xEE4D, 0xF374, 0xF7E8, 0xFB3E, 0xFD0B,\n    0xFDE4, 0xFEA8, 0xFF57, 0xFFF3, 0x007B, 0x00F2, 0x0158, 0x01AE,\n    0x01F5, 0x022D, 0x0259, 0x0277, 0x028B, 0x0294, 0x0293, 0x0289,\n    0x0277, 0x025F, 0x0240, 0x021C, 0x01F4, 0x01C9, 0x019B, 0x016B,\n    0x013B, 0x010C, 0x00DD, 0x00B0, 0x0087, 0x0061, 0x0041, 0x0025,\n    0x0011, 0x0004, 0x0000, 0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44,\n    0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44,\n    0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44,\n    0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44,\n    0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44,\n    0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44,\n    0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44,\n    0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44,\n    0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44,\n    0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44,\n    0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44,\n    0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44, 0xFA44,\n    0xFA44, 0xFA44, 0xFA44, 0xFA47, 0xFA51, 0xFA5F, 0xFA71, 0xFA84,\n    0xFA97, 0xFAA9, 0xFAB7, 0xFAC1, 0xFAC5, 0xFAC0, 0xFAB3, 0xFA9B,\n    0xFA76, 0xFA44, 0xF9E6, 0xF94F, 0xF890, 0xF7BB, 0xF6E3, 0xF61A,\n    0xF573, 0xF4FF, 0xF4D2, 0xF4D0, 0xF4D5, 0xF4DF, 0xF4EF, 0xF503,\n    0xF51C, 0xF539, 0xF55B, 0xF57F, 0xF5A7, 0xF5D2, 0xF5FF, 0xF62E,\n    0xF65F, 0xF691, 0xF6C5, 0xF6F9, 0xF72D, 0xF761, 0xF795, 0xF7C8,\n    0xF7FA, 0xF82B, 0xF859, 0xF886, 0xF8B0, 0xF8D7, 0xF8FA, 0xF91B,\n    0xF937, 0xF94F, 0xF962, 0xF970, 0xF979, 0xF97C, 0xF4F7, 0xF4F7,\n    0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7,\n    0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7,\n    0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7,\n    0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7,\n    0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7,\n    0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7,\n    0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7,\n    0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7,\n    0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7,\n    0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7,\n    0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7,\n    0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xF501, 0xF51A,\n    0xF540, 0xF56E, 0xF5A1, 0xF5D3, 0xF601, 0xF627, 0xF641, 0xF64A,\n    0xF640, 0xF61C, 0xF5DC, 0xF57C, 0xF4F7, 0xF405, 0xF27F, 0xF092,\n    0xEE6D, 0xEC3C, 0xEA30, 0xE873, 0xE736, 0xE6A5, 0xE681, 0xE669,\n    0xE65E, 0xE65E, 0xE669, 0xE67E, 0xE69C, 0xE6C3, 0xE6F1, 0xE727,\n    0xE764, 0xE7A6, 0xE7EE, 0xE83A, 0xE889, 0xE8DC, 0xE931, 0xE987,\n    0xE9DE, 0xEA36, 0xEA8D, 0xEAE3, 0xEB36, 0xEB88, 0xEBD5, 0xEC1F,\n    0xEC64, 0xECA4, 0xECDD, 0xED0F, 0xED3A, 0xED5D, 0xED76, 0xED86,\n    0xED8C, 0xF3B0, 0xF3B0, 0xF3B2, 0xF3B3, 0xF3B5, 0xF3B8, 0xF3BB,\n    0xF3BE, 0xF3C2, 0xF3C6, 0xF3CB, 0xF3CF, 0xF3D5, 0xF3DA, 0xF3E0,\n    0xF3E6, 0xF3EC, 0xF3F2, 0xF3F9, 0xF400, 0xF407, 0xF40E, 0xF416,\n    0xF41D, 0xF425, 0xF42D, 0xF435, 0xF43D, 0xF445, 0xF44D, 0xF455,\n    0xF45D, 0xF465, 0xF46D, 0xF475, 0xF47E, 0xF486, 0xF48D, 0xF495,\n    0xF49D, 0xF4A4, 0xF4AC, 0xF4B3, 0xF4BA, 0xF4C1, 0xF4C8, 0xF4CE,\n    0xF4D5, 0xF4DB, 0xF4E0, 0xF4E6, 0xF4EB, 0xF4F0, 0xF4F4, 0xF4F8,\n    0xF4FC, 0xF4FF, 0xF502, 0xF505, 0xF507, 0xF509, 0xF50A, 0xF50B,\n    0xF50B, 0xF50B, 0xF50A, 0xF508, 0xF507, 0xF504, 0xF501, 0xF4FD,\n    0xF4F9, 0xF4F4, 0xF4EF, 0xF4E9, 0xF4E2, 0xF4DA, 0xF4D2, 0xF4C9,\n    0xF4BF, 0xF4B4, 0xF4A9, 0xF49D, 0xF490, 0xF482, 0xF473, 0xF464,\n    0xF454, 0xF442, 0xF430, 0xF41D, 0xF409, 0xF3F4, 0xF3DE, 0xF3C7,\n    0xF3AF, 0xF386, 0xF33D, 0xF2D7, 0xF257, 0xF1BF, 0xF112, 0xF053,\n    0xEF85, 0xEEAA, 0xEDC5, 0xECD9, 0xEBE8, 0xEAF6, 0xEA05, 0xE918,\n    0xE80C, 0xE6C9, 0xE561, 0xE3E5, 0xE266, 0xE0F7, 0xDFA7, 0xDE8A,\n    0xDDAF, 0xDCFA, 0xDC42, 0xDB87, 0xDACA, 0xDA0A, 0xD94A, 0xD889,\n    0xD7C8, 0xD706, 0xD646, 0xD587, 0xD4CA, 0xD40F, 0xD357, 0xD2A2,\n    0xD1F1, 0xD144, 0xD09C, 0xCFFA, 0xCF5E, 0xCEC7, 0xCE38, 0xCDB0,\n    0xCD30, 0xCCB9, 0xCC4B, 0xCBE6, 0xCB8B, 0xCB3A, 0xCAF4, 0xCABA,\n    0xCA8C, 0xCA6B, 0xCA56, 0xCA4F, 0xB4B5, 0xB4B6, 0xB4B8, 0xB4BA,\n    0xB4BC, 0xB4BF, 0xB4C2, 0xB4C6, 0xB4CB, 0xB4D0, 0xB4D5, 0xB4DA,\n    0xB4E0, 0xB4E7, 0xB4ED, 0xB4F4, 0xB4FC, 0xB503, 0xB50B, 0xB513,\n    0xB51B, 0xB524, 0xB52C, 0xB535, 0xB53E, 0xB547, 0xB550, 0xB55A,\n    0xB563, 0xB56C, 0xB576, 0xB57F, 0xB589, 0xB592, 0xB59C, 0xB5A5,\n    0xB5AF, 0xB5B8, 0xB5C1, 0xB5CA, 0xB5D3, 0xB5DB, 0xB5E4, 0xB5EC,\n    0xB5F4, 0xB5FC, 0xB603, 0xB60B, 0xB612, 0xB618, 0xB61F, 0xB625,\n    0xB62A, 0xB62F, 0xB634, 0xB639, 0xB63C, 0xB640, 0xB643, 0xB645,\n    0xB647, 0xB649, 0xB64A, 0xB64A, 0xB64A, 0xB649, 0xB647, 0xB645,\n    0xB642, 0xB63F, 0xB63A, 0xB635, 0xB630, 0xB629, 0xB622, 0xB61A,\n    0xB611, 0xB607, 0xB5FD, 0xB5F1, 0xB5E5, 0xB5D8, 0xB5CA, 0xB5BB,\n    0xB5AB, 0xB599, 0xB587, 0xB574, 0xB560, 0xB54B, 0xB535, 0xB51E,\n    0xB505, 0xB4EC, 0xB4D1, 0xB4B5, 0xAF7F, 0xA9CF, 0xA90B, 0xA8CD,\n    0xA8F6, 0xA963, 0xA9F6, 0xAA8E, 0xAB0B, 0xAB4D, 0xAB32, 0xAA9D,\n    0xA96B, 0xA77D, 0xA4B2, 0xA036, 0x99A9, 0x919F, 0x88A8, 0x7F55,\n    0x763D, 0x6DF0, 0x66FF, 0x61FC, 0x5E1A, 0x5A2A, 0x562F, 0x522B,\n    0x4E21, 0x4A14, 0x4605, 0x41F8, 0x3DF0, 0x39ED, 0x35F4, 0x3207,\n    0x2E28, 0x2A59, 0x269E, 0x22F9, 0x1F6C, 0x1BFA, 0x18A6, 0x1571,\n    0x125F, 0x0F72, 0x0CAD, 0x0A12, 0x07A4, 0x0564, 0x0357, 0x017E,\n    0xFFDD, 0xFE74, 0xFD47, 0xFC58, 0xFBAB, 0xFB41, 0xFB1D, 0x9234,\n    0x9234, 0x9233, 0x9232, 0x9231, 0x9230, 0x922F, 0x922D, 0x922B,\n    0x9229, 0x9227, 0x9224, 0x9222, 0x921F, 0x921C, 0x9219, 0x9216,\n    0x9213, 0x920F, 0x920C, 0x9208, 0x9205, 0x9201, 0x91FD, 0x91F9,\n    0x91F5, 0x91F1, 0x91ED, 0x91E9, 0x91E5, 0x91E1, 0x91DD, 0x91D9,\n    0x91D5, 0x91D1, 0x91CD, 0x91C9, 0x91C5, 0x91C1, 0x91BD, 0x91B9,\n    0x91B6, 0x91B2, 0x91AF, 0x91AB, 0x91A8, 0x91A4, 0x91A1, 0x919E,\n    0x919C, 0x9199, 0x9196, 0x9194, 0x9192, 0x9190, 0x918E, 0x918C,\n    0x918A, 0x9189, 0x9188, 0x9187, 0x9187, 0x9186, 0x9186, 0x9186,\n    0x9187, 0x9187, 0x9188, 0x918A, 0x918B, 0x918D, 0x918F, 0x9191,\n    0x9194, 0x9197, 0x919B, 0x919F, 0x91A3, 0x91A7, 0x91AC, 0x91B2,\n    0x91B7, 0x91BD, 0x91C4, 0x91CB, 0x91D2, 0x91DA, 0x91E2, 0x91EB,\n    0x91F4, 0x91FD, 0x9207, 0x9212, 0x921D, 0x9228, 0x9234, 0x93E7,\n    0x96E4, 0x99BE, 0x9CF6, 0xA071, 0xA413, 0xA7C0, 0xAB5C, 0xAECB,\n    0xB1F1, 0xB4B4, 0xB6F5, 0xB89A, 0xB987, 0xB9A0, 0xB7D4, 0xB3A2,\n    0xADBF, 0xA6E3, 0x9FC7, 0x9920, 0x93A7, 0x9012, 0x8F1A, 0x8FCE,\n    0x90C2, 0x91F2, 0x935A, 0x94F6, 0x96C1, 0x98B8, 0x9AD5, 0x9D16,\n    0x9F76, 0xA1F0, 0xA482, 0xA725, 0xA9D8, 0xAC94, 0xAF57, 0xB21B,\n    0xB4DE, 0xB79A, 0xBA4C, 0xBCEF, 0xBF80, 0xC1FA, 0xC459, 0xC699,\n    0xC8B5, 0xCAAB, 0xCC74, 0xCE0F, 0xCF75, 0xD0A4, 0xD196, 0xD248,\n    0xD2B6, 0xD2DC, 0xCE6F, 0xCE6C, 0xCE68, 0xCE63, 0xCE5C, 0xCE54,\n    0xCE4A, 0xCE3F, 0xCE33, 0xCE25, 0xCE17, 0xCE07, 0xCDF7, 0xCDE5,\n    0xCDD2, 0xCDBF, 0xCDAB, 0xCD96, 0xCD80, 0xCD69, 0xCD52, 0xCD3B,\n    0xCD22, 0xCD0A, 0xCCF1, 0xCCD7, 0xCCBD, 0xCCA3, 0xCC89, 0xCC6F,\n    0xCC54, 0xCC3A, 0xCC1F, 0xCC05, 0xCBEB, 0xCBD0, 0xCBB6, 0xCB9D,\n    0xCB83, 0xCB6A, 0xCB52, 0xCB39, 0xCB22, 0xCB0B, 0xCAF4, 0xCADE,\n    0xCAC9, 0xCAB5, 0xCAA2, 0xCA8F, 0xCA7D, 0xCA6D, 0xCA5D, 0xCA4F,\n    0xCA41, 0xCA35, 0xCA2A, 0xCA20, 0xCA18, 0xCA11, 0xCA0C, 0xCA08,\n    0xCA05, 0xCA04, 0xCA05, 0xCA08, 0xCA0C, 0xCA12, 0xCA1A, 0xCA24,\n    0xCA30, 0xCA3E, 0xCA4E, 0xCA60, 0xCA74, 0xCA8B, 0xCAA3, 0xCABE,\n    0xCADC, 0xCAFC, 0xCB1E, 0xCB43, 0xCB6B, 0xCB95, 0xCBC2, 0xCBF1,\n    0xCC24, 0xCC59, 0xCC91, 0xCCCC, 0xCD0A, 0xCD4B, 0xCD90, 0xCDD7,\n    0xCE22, 0xCE70, 0xDD07, 0xECE3, 0xEF2E, 0xF07C, 0xF102, 0xF0F5,\n    0xF08C, 0xEFFC, 0xEF7A, 0xEF3B, 0xEF75, 0xF05E, 0xF22B, 0xF511,\n    0xF946, 0xFFF8, 0x09A2, 0x156D, 0x227E, 0x2FFD, 0x3D12, 0x48E3,\n    0x5298, 0x5957, 0x5E58, 0x635F, 0x6869, 0x6D74, 0x727E, 0x7784,\n    0x7C83, 0x817B, 0x8665, 0x8B40, 0x900A, 0x94C0, 0x9960, 0x9DE8,\n    0xA253, 0xA6A1, 0xAACF, 0xAED9, 0xB2BD, 0xB679, 0xBA0A, 0xBD6D,\n    0xC0A1, 0xC3A1, 0xC66D, 0xC900, 0xCB59, 0xCD75, 0xCF52, 0xD0EC,\n    0xD241, 0xD34F, 0xD414, 0xD48B, 0xD4B4, 0x408F, 0x408F, 0x408F,\n    0x408F, 0x408F, 0x408F, 0x408F, 0x408F, 0x408F, 0x408F, 0x408F,\n    0x408F, 0x408F, 0x408F, 0x408F, 0x408F, 0x408F, 0x408F, 0x408F,\n    0x408F, 0x408F, 0x408F, 0x408F, 0x408F, 0x408F, 0x408F, 0x408F,\n    0x408F, 0x408F, 0x408F, 0x408F, 0x408F, 0x408F, 0x408F, 0x408F,\n    0x408F, 0x408F, 0x408F, 0x408F, 0x408F, 0x408F, 0x408F, 0x408F,\n    0x408F, 0x408F, 0x408F, 0x408F, 0x408F, 0x408F, 0x408F, 0x408F,\n    0x408F, 0x408F, 0x408F, 0x408F, 0x408F, 0x408F, 0x408F, 0x408F,\n    0x408F, 0x408F, 0x408F, 0x408F, 0x408F, 0x408F, 0x408F, 0x408F,\n    0x408F, 0x408F, 0x408F, 0x408F, 0x408F, 0x408F, 0x408F, 0x408F,\n    0x408F, 0x408F, 0x408F, 0x408F, 0x408F, 0x408F, 0x408F, 0x408F,\n    0x408F, 0x408F, 0x408F, 0x408F, 0x408F, 0x408F, 0x408F, 0x408F,\n    0x408F, 0x408F, 0x408F, 0x408F, 0x408F, 0x40AE, 0x4102, 0x417E,\n    0x4215, 0x42B8, 0x435C, 0x43F3, 0x446F, 0x44C3, 0x44E2, 0x44BF,\n    0x444C, 0x437B, 0x4241, 0x408F, 0x3D9C, 0x38FA, 0x3325, 0x2C97,\n    0x25CB, 0x1F3D, 0x1968, 0x14C6, 0x11D3, 0x1021, 0x0EE8, 0x0E19,\n    0x0DA7, 0x0D85, 0x0DA6, 0x0DFC, 0x0E79, 0x0F10, 0x0FB5, 0x1058,\n    0x10EE, 0x1168, 0x11B9, 0x11D3, 0x11DF, 0x1205, 0x123B, 0x1276,\n    0x12AD, 0x12D5, 0x12E3, 0x12CD, 0x128A, 0x120D, 0x114E, 0x1002,\n    0x0E0B, 0x0BA1, 0x08FD, 0x0656, 0x03E4, 0x01E0, 0x0081, 0x0000,\n    0x122C, 0x122C, 0x122C, 0x122C, 0x122C, 0x122C, 0x122C, 0x122C,\n    0x122C, 0x122C, 0x122C, 0x122C, 0x122C, 0x122C, 0x122C, 0x122C,\n    0x122C, 0x122C, 0x122C, 0x122C, 0x122C, 0x122C, 0x122C, 0x122C,\n    0x122C, 0x122C, 0x122C, 0x122C, 0x122C, 0x122C, 0x122C, 0x122C,\n    0x122C, 0x122C, 0x122C, 0x122C, 0x122C, 0x122C, 0x122C, 0x122C,\n    0x122C, 0x122C, 0x122C, 0x122C, 0x122C, 0x122C, 0x122C, 0x122C,\n    0x122C, 0x122C, 0x122C, 0x122C, 0x122C, 0x122C, 0x122C, 0x122C,\n    0x122C, 0x122C, 0x122C, 0x122C, 0x122C, 0x122C, 0x122C, 0x122C,\n    0x122C, 0x122C, 0x122C, 0x122C, 0x122C, 0x122C, 0x122C, 0x122C,\n    0x122C, 0x122C, 0x122C, 0x122C, 0x122C, 0x122C, 0x122C, 0x122C,\n    0x122C, 0x122C, 0x122C, 0x122C, 0x122C, 0x122C, 0x122C, 0x122C,\n    0x122C, 0x122C, 0x122C, 0x122C, 0x122C, 0x122C, 0x122C, 0x122C,\n    0x1229, 0x1220, 0x1213, 0x1204, 0x11F3, 0x11E2, 0x11D2, 0x11C5,\n    0x11BC, 0x11B9, 0x11BD, 0x11C9, 0x11DE, 0x11FF, 0x122C, 0x127B,\n    0x12F6, 0x1391, 0x143F, 0x14F4, 0x15A2, 0x163D, 0x16B8, 0x1707,\n    0x173E, 0x177A, 0x17B8, 0x17F6, 0x182F, 0x1861, 0x188A, 0x18A6,\n    0x18B2, 0x18AB, 0x188E, 0x1859, 0x1808, 0x1798, 0x1707, 0x1636,\n    0x1513, 0x13AD, 0x1215, 0x105A, 0x0E8A, 0x0CB7, 0x0AEF, 0x0942,\n    0x07BF, 0x0676, 0x0555, 0x0441, 0x0340, 0x0258, 0x018E, 0x00E8,\n    0x006A, 0x001B, 0x0000, 0x143B, 0x143B, 0x143B, 0x143B, 0x143B,\n    0x143B, 0x143B, 0x143B, 0x143B, 0x143B, 0x143B, 0x143B, 0x143B,\n    0x143B, 0x143B, 0x143B, 0x143B, 0x143B, 0x143B, 0x143B, 0x143B,\n    0x143B, 0x143B, 0x143B, 0x143B, 0x143B, 0x143B, 0x143B, 0x143B,\n    0x143B, 0x143B, 0x143B, 0x143B, 0x143B, 0x143B, 0x143B, 0x143B,\n    0x143B, 0x143B, 0x143B, 0x143B, 0x143B, 0x143B, 0x143B, 0x143B,\n    0x143B, 0x143B, 0x143B, 0x143B, 0x143B, 0x143B, 0x143B, 0x143B,\n    0x143B, 0x143B, 0x143B, 0x143B, 0x143B, 0x143B, 0x143B, 0x143B,\n    0x143B, 0x143B, 0x143B, 0x143B, 0x143B, 0x143B, 0x143B, 0x143B,\n    0x143B, 0x143B, 0x143B, 0x143B, 0x143B, 0x143B, 0x143B, 0x143B,\n    0x143B, 0x143B, 0x143B, 0x143B, 0x143B, 0x143B, 0x143B, 0x143B,\n    0x143B, 0x143B, 0x143B, 0x143B, 0x143B, 0x143B, 0x143B, 0x143B,\n    0x143B, 0x143B, 0x143B, 0x1450, 0x1489, 0x14DD, 0x1543, 0x15B2,\n    0x1621, 0x1687, 0x16DB, 0x1714, 0x1729, 0x1711, 0x16C3, 0x1636,\n    0x1561, 0x143B, 0x123B, 0x0F18, 0x0B24, 0x06B4, 0x0219, 0xFDAA,\n    0xF9B6, 0xF693, 0xF493, 0xF36D, 0xF298, 0xF20B, 0xF1BD, 0xF1A5,\n    0xF1BA, 0xF1F3, 0xF247, 0xF2AD, 0xF31C, 0xF38B, 0xF3F1, 0xF445,\n    0xF47E, 0xF493, 0xF493, 0xF492, 0xF490, 0xF48E, 0xF48C, 0xF48A,\n    0xF48A, 0xF48B, 0xF48E, 0xF493, 0xF49A, 0xF4A8, 0xF4BB, 0xF4D4,\n    0xF4EF, 0xF509, 0xF522, 0xF536, 0xF544, 0xF549, 0xE52D, 0xE52D,\n    0xE52D, 0xE52D, 0xE52E, 0xE52E, 0xE52F, 0xE52F, 0xE530, 0xE531,\n    0xE532, 0xE533, 0xE534, 0xE535, 0xE536, 0xE537, 0xE538, 0xE539,\n    0xE53B, 0xE53C, 0xE53D, 0xE53F, 0xE540, 0xE542, 0xE543, 0xE545,\n    0xE546, 0xE548, 0xE549, 0xE54B, 0xE54C, 0xE54E, 0xE550, 0xE551,\n    0xE553, 0xE554, 0xE556, 0xE557, 0xE559, 0xE55A, 0xE55C, 0xE55D,\n    0xE55F, 0xE560, 0xE561, 0xE563, 0xE564, 0xE565, 0xE566, 0xE567,\n    0xE568, 0xE569, 0xE56A, 0xE56B, 0xE56C, 0xE56D, 0xE56D, 0xE56E,\n    0xE56E, 0xE56F, 0xE56F, 0xE56F, 0xE56F, 0xE56F, 0xE56F, 0xE56F,\n    0xE56F, 0xE56F, 0xE56E, 0xE56E, 0xE56D, 0xE56C, 0xE56B, 0xE56A,\n    0xE569, 0xE567, 0xE566, 0xE564, 0xE563, 0xE561, 0xE55F, 0xE55D,\n    0xE55A, 0xE558, 0xE555, 0xE552, 0xE54F, 0xE54C, 0xE549, 0xE545,\n    0xE542, 0xE53E, 0xE53A, 0xE536, 0xE531, 0xE52D, 0xE533, 0xE54A,\n    0xE56F, 0xE59A, 0xE5C6, 0xE5EF, 0xE60E, 0xE61E, 0xE61A, 0xE5FC,\n    0xE5BE, 0xE55C, 0xE4D0, 0xE414, 0xE323, 0xE180, 0xDEE6, 0xDBA5,\n    0xD80D, 0xD46F, 0xD119, 0xCE5C, 0xCC87, 0xCBEA, 0xCC4E, 0xCD39,\n    0xCE97, 0xD054, 0xD25C, 0xD49B, 0xD6FD, 0xD96D, 0xDBD9, 0xDE2B,\n    0xE051, 0xE235, 0xE3C5, 0xE4EB, 0xE595, 0xE5AB, 0xE533, 0xE443,\n    0xE2F0, 0xE151, 0xDF7C, 0xDD86, 0xDB84, 0xD98E, 0xD7B8, 0xD619,\n    0xD470, 0xD281, 0xD06E, 0xCE54, 0xCC55, 0xCA91, 0xC926, 0xC835,\n    0xC7DD, 0xBAED, 0xBAEC, 0xBAEA, 0xBAE7, 0xBAE4, 0xBAE0, 0xBADB,\n    0xBAD5, 0xBACF, 0xBAC9, 0xBAC1, 0xBAB9, 0xBAB1, 0xBAA8, 0xBA9F,\n    0xBA95, 0xBA8B, 0xBA80, 0xBA76, 0xBA6A, 0xBA5F, 0xBA53, 0xBA47,\n    0xBA3A, 0xBA2E, 0xBA21, 0xBA14, 0xBA07, 0xB9FA, 0xB9ED, 0xB9E0,\n    0xB9D2, 0xB9C5, 0xB9B8, 0xB9AB, 0xB99E, 0xB991, 0xB984, 0xB977,\n    0xB96A, 0xB95E, 0xB952, 0xB946, 0xB93B, 0xB92F, 0xB924, 0xB91A,\n    0xB910, 0xB906, 0xB8FD, 0xB8F4, 0xB8EB, 0xB8E4, 0xB8DC, 0xB8D6,\n    0xB8D0, 0xB8CA, 0xB8C5, 0xB8C1, 0xB8BE, 0xB8BB, 0xB8B9, 0xB8B8,\n    0xB8B7, 0xB8B8, 0xB8B9, 0xB8BB, 0xB8BE, 0xB8C2, 0xB8C7, 0xB8CD,\n    0xB8D4, 0xB8DC, 0xB8E5, 0xB8EF, 0xB8FA, 0xB907, 0xB914, 0xB923,\n    0xB933, 0xB944, 0xB957, 0xB96B, 0xB980, 0xB996, 0xB9AE, 0xB9C7,\n    0xB9E2, 0xB9FE, 0xBA1C, 0xBA3B, 0xBA5B, 0xBA7E, 0xBAA1, 0xBAC7,\n    0xBAEE, 0xC1E6, 0xCA2D, 0xCCB7, 0xCEDC, 0xD0B2, 0xD24E, 0xD3C6,\n    0xD52E, 0xD69D, 0xD826, 0xD9E1, 0xDBE2, 0xDE3F, 0xE10C, 0xE460,\n    0xE8F6, 0xEF22, 0xF659, 0xFE14, 0x05C9, 0x0CF1, 0x1304, 0x1777,\n    0x19C3, 0x1A5A, 0x1A1C, 0x1924, 0x178F, 0x157B, 0x1302, 0x1041,\n    0x0D54, 0x0A59, 0x076A, 0x04A5, 0x0226, 0x0009, 0xFE6B, 0xFD67,\n    0xFD0F, 0xFD50, 0xFE0E, 0xFF2B, 0x008B, 0x0214, 0x03A7, 0x0528,\n    0x067B, 0x0784, 0x0826, 0x085D, 0x0844, 0x07EF, 0x0772, 0x06E0,\n    0x064C, 0x05CB, 0x056E, 0x054B, 0x11FA, 0x11FA, 0x11FA, 0x11F9,\n    0x11F9, 0x11F9, 0x11F8, 0x11F8, 0x11F8, 0x11F7, 0x11F6, 0x11F6,\n    0x11F5, 0x11F5, 0x11F4, 0x11F3, 0x11F2, 0x11F2, 0x11F1, 0x11F0,\n    0x11EF, 0x11EE, 0x11ED, 0x11EC, 0x11EB, 0x11EA, 0x11EA, 0x11E9,\n    0x11E8, 0x11E7, 0x11E6, 0x11E5, 0x11E4, 0x11E3, 0x11E2, 0x11E1,\n    0x11E0, 0x11DF, 0x11DE, 0x11DD, 0x11DC, 0x11DB, 0x11DA, 0x11D9,\n    0x11D8, 0x11D8, 0x11D7, 0x11D6, 0x11D5, 0x11D5, 0x11D4, 0x11D3,\n    0x11D3, 0x11D2, 0x11D2, 0x11D1, 0x11D1, 0x11D0, 0x11D0, 0x11D0,\n    0x11D0, 0x11D0, 0x11CF, 0x11CF, 0x11CF, 0x11D0, 0x11D0, 0x11D0,\n    0x11D0, 0x11D1, 0x11D1, 0x11D2, 0x11D2, 0x11D3, 0x11D4, 0x11D4,\n    0x11D5, 0x11D6, 0x11D7, 0x11D9, 0x11DA, 0x11DB, 0x11DD, 0x11DE,\n    0x11E0, 0x11E2, 0x11E4, 0x11E6, 0x11E8, 0x11EA, 0x11EC, 0x11EF,\n    0x11F1, 0x11F4, 0x11F7, 0x11FA, 0x11F3, 0x131E, 0x15C3, 0x18D5,\n    0x1C36, 0x1FCA, 0x2373, 0x2713, 0x2A8D, 0x2DC3, 0x309A, 0x32F2,\n    0x34AF, 0x35B3, 0x35E1, 0x3459, 0x30B1, 0x2B80, 0x255D, 0x1EDE,\n    0x189A, 0x1327, 0x0F1B, 0x0D0D, 0x0C82, 0x0C8D, 0x0D1C, 0x0E1B,\n    0x0F79, 0x1122, 0x1304, 0x150B, 0x1725, 0x193F, 0x1B46, 0x1D27,\n    0x1ED1, 0x202F, 0x212E, 0x21CD, 0x221F, 0x2234, 0x221B, 0x21E4,\n    0x21A0, 0x215D, 0x212C, 0x211C, 0x213E, 0x21A1, 0x2266, 0x238F,\n    0x24FC, 0x268B, 0x281B, 0x298C, 0x2ABC, 0x2B8A, 0x2BD6, 0x4CB3,\n    0x4CB0, 0x4CAC, 0x4CA6, 0x4C9F, 0x4C96, 0x4C8C, 0x4C80, 0x4C73,\n    0x4C65, 0x4C56, 0x4C46, 0x4C34, 0x4C21, 0x4C0E, 0x4BF9, 0x4BE4,\n    0x4BCE, 0x4BB7, 0x4B9F, 0x4B87, 0x4B6E, 0x4B55, 0x4B3B, 0x4B20,\n    0x4B06, 0x4AEB, 0x4ACF, 0x4AB4, 0x4A98, 0x4A7C, 0x4A60, 0x4A44,\n    0x4A28, 0x4A0D, 0x49F1, 0x49D6, 0x49BB, 0x49A0, 0x4986, 0x496C,\n    0x4952, 0x4939, 0x4921, 0x4909, 0x48F2, 0x48DC, 0x48C7, 0x48B2,\n    0x489F, 0x488C, 0x487B, 0x486A, 0x485B, 0x484D, 0x4840, 0x4834,\n    0x482A, 0x4822, 0x481A, 0x4814, 0x4810, 0x480E, 0x480D, 0x480E,\n    0x4810, 0x4815, 0x481B, 0x4824, 0x482E, 0x483B, 0x4849, 0x485A,\n    0x486D, 0x4882, 0x489A, 0x48B4, 0x48D1, 0x48F0, 0x4911, 0x4935,\n    0x495C, 0x4986, 0x49B2, 0x49E2, 0x4A14, 0x4A49, 0x4A81, 0x4ABC,\n    0x4AFA, 0x4B3B, 0x4B80, 0x4BC8, 0x4C13, 0x4C61, 0x4CB3, 0x5BC2,\n    0x6CBF, 0x7076, 0x7354, 0x7585, 0x7735, 0x788E, 0x79BC, 0x7AEC,\n    0x7C47, 0x7DFB, 0x8035, 0x831B, 0x86DC, 0x8BA2, 0x928E, 0x9C16,\n    0xA764, 0xB3A7, 0xC00A, 0xCBBA, 0xD5E2, 0xDDB0, 0xE250, 0xE471,\n    0xE568, 0xE55D, 0xE477, 0xE2DD, 0xE0B6, 0xDE2A, 0xDB5F, 0xD87D,\n    0xD5AA, 0xD30F, 0xD0D2, 0xCF1A, 0xCE0E, 0xCDD6, 0xCEAB, 0xD085,\n    0xD328, 0xD658, 0xD9DB, 0xDD76, 0xE0EB, 0xE401, 0xE67C, 0xE81F,\n    0xE8B1, 0xE7B5, 0xE524, 0xE172, 0xDD13, 0xD87B, 0xD41F, 0xD072,\n    0xCDE8, 0xCCF6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0003, 0x0005, 0x0007,\n    0x0009, 0x000C, 0x000D, 0x000E, 0x000F, 0x000E, 0x000D, 0x000A,\n    0x0006, 0x0000, 0xFFF7, 0xFFE9, 0xFFD8, 0xFFC4, 0xFFAE, 0xFF97,\n    0xFF81, 0xFF6B, 0xFF57, 0xFF45, 0xFF37, 0xFF2C, 0xFF28, 0xFF29,\n    0xFF31, 0xFF67, 0xFFD6, 0x0056, 0x00C0, 0x00EC, 0x0087, 0xFFC1,\n    0xFF2B, 0xFF07, 0xFF16, 0xFF2F, 0xFF44, 0xFF5F, 0xFF7D, 0xFF9C,\n    0xFFBB, 0xFFD6, 0xFFEC, 0xFFFB, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0002, 0x0002,\n    0x0002, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFE,\n    0xFFFD, 0xFFFB, 0xFFFA, 0xFFF9, 0xFFF7, 0xFFF5, 0xFFF3, 0xFFF1,\n    0xFFEE, 0xFFEB, 0xFFE7, 0xFFE3, 0xFFDB, 0xFFCE, 0xFFC0, 0xFFB3,\n    0xFFAC, 0xFFB0, 0xFFBC, 0xFFCA, 0xFFDF, 0xFFF6, 0xFFFA, 0xFFE9,\n    0xFFD1, 0xFFB5, 0xFF96, 0xFF78, 0xFF5C, 0xFF45, 0xFF36, 0xFF30,\n    0xC596, 0xC596, 0xC596, 0xC596, 0xC596, 0xC596, 0xC596, 0xC596,\n    0xC596, 0xC596, 0xC596, 0xC553, 0xC4E4, 0xC4CD, 0xC596, 0xC741,\n    0xC95F, 0xCBC4, 0xCE49, 0xD0C2, 0xD307, 0xD4ED, 0xD64A, 0xD6FA,\n    0xD715, 0xD6CC, 0xD651, 0xD5D4, 0xD589, 0xD5A0, 0xD64A, 0xD7B8,\n    0xD9CF, 0xDC50, 0xDEFE, 0xE19A, 0xE3E6, 0xE5A4, 0xE696, 0xE70A,\n    0xE778, 0xE7DE, 0xE83E, 0xE896, 0xE8E6, 0xE92F, 0xE96F, 0xE9A6,\n    0xE9D5, 0xE9FB, 0xEA17, 0xEA2A, 0xEA32, 0xEA31, 0xEA24, 0xEA0D,\n    0xE9EB, 0xE9BE, 0xE985, 0xE940, 0xE8EE, 0xE890, 0xE826, 0xE7AE,\n    0xE729, 0xE696, 0xE5F3, 0xE53D, 0xE475, 0xE39D, 0xE2B6, 0xE1C0,\n    0xE0BC, 0xDFAC, 0xDE91, 0xDD6C, 0xDC3D, 0xDB07, 0xD9C9, 0xD885,\n    0xD73C, 0xD5EF, 0xD49F, 0xD34D, 0xD1FA, 0xD0A8, 0xCF56, 0xCE07,\n    0xCCBB, 0xCB74, 0xCA32, 0xC8F6, 0xC7C2, 0xC696, 0xC574, 0xC45D,\n    0xC418, 0xC45D, 0xC45D, 0xC45D, 0xC45D, 0xC45D, 0xC45D, 0xC45D,\n    0xC45D, 0xC45E, 0xC462, 0xC469, 0xC470, 0xC478, 0xC480, 0xC487,\n    0xC48D, 0xC491, 0xC493, 0xC491, 0xC48C, 0xC481, 0xC472, 0xC45D,\n    0xC451, 0xC459, 0xC46F, 0xC48E, 0xC4AF, 0xC4CD, 0xC4E3, 0xC4E9,\n    0xC4DA, 0xC4B1, 0xC467, 0xC3F6, 0xC359, 0xC28A, 0xC183, 0xBED5,\n    0xBA09, 0xB495, 0xAFE9, 0xAD79, 0xAFA6, 0xB559, 0xBACF, 0xBF3F,\n    0xC372, 0xC5FE, 0xC71E, 0xC7FF, 0xC8AA, 0xC925, 0xC97A, 0xC9AE,\n    0xC9CB, 0xC9D6, 0xC9D8, 0x3358, 0x32D2, 0x3205, 0x3101, 0x2FD5,\n    0x2E91, 0x2D44, 0x2BFF, 0x2ACF, 0x29C5, 0x28F1, 0x28E3, 0x2981,\n    0x29D7, 0x28F1, 0x26A2, 0x2395, 0x2019, 0x1C7D, 0x190F, 0x161E,\n    0x13FA, 0x12F0, 0x12F4, 0x13B4, 0x151B, 0x1711, 0x1982, 0x1C57,\n    0x1F7A, 0x22D4, 0x28FE, 0x31F2, 0x39AB, 0x3C27, 0x35C1, 0x2978,\n    0x1D3F, 0x1703, 0x166E, 0x1708, 0x1892, 0x1ACD, 0x1D7B, 0x205E,\n    0x2337, 0x25C8, 0x27D2, 0x2917, 0x2959, 0x26AF, 0x20CE, 0x19E5,\n    0x1423, 0x11B7, 0x122B, 0x1377, 0x156F, 0x17E8, 0x1AB6, 0x1DAC,\n    0x20A1, 0x2367, 0x25D4, 0x27BB, 0x28F1, 0x297A, 0x298A, 0x2936,\n    0x2898, 0x27C7, 0x26DB, 0x25EB, 0x2510, 0x2462, 0x23F7, 0x23E8,\n    0x244D, 0x24F8, 0x25AA, 0x2668, 0x2732, 0x280B, 0x28F6, 0x29F5,\n    0x2B09, 0x2C36, 0x2D7D, 0x2EE1, 0x3064, 0x3208, 0x33D0, 0x35BD,\n    0x37D3, 0x3A13, 0x3C7F, 0x4B10, 0x5692, 0x4EA3, 0x410B, 0x324B,\n    0x26E7, 0x20A6, 0x1DB2, 0x1D20, 0x1E3C, 0x2089, 0x236F, 0x2655,\n    0x28A3, 0x29C1, 0x28AB, 0x25C1, 0x227F, 0x2062, 0x1F49, 0x1E55,\n    0x1DEF, 0x1E7C, 0x2062, 0x236C, 0x270B, 0x2B22, 0x2F92, 0x343F,\n    0x390A, 0x3DD7, 0x4287, 0x46FE, 0x4B1D, 0x4EC8, 0x51E0, 0x5448,\n    0x55E3, 0x5692, 0x5247, 0x4773, 0x39BA, 0x2CBF, 0x2426, 0x245D,\n    0x2A03, 0x2D0B, 0x2913, 0x227D, 0x1E59, 0x1D60, 0x1CDA, 0x1CB1,\n    0x1CCE, 0x1D19, 0x1D7C, 0x1DDF, 0x1E2B, 0x1E4A, 0x0414, 0x04FA,\n    0x05E3, 0x0652, 0x05C1, 0x04A2, 0x03F1, 0x0407, 0x0470, 0x04ED,\n    0x0540, 0x052A, 0x04DC, 0x04BF, 0x0540, 0x0669, 0x07E7, 0x0998,\n    0x0B5D, 0x0D15, 0x0EA0, 0x0FDC, 0x10AA, 0x1106, 0x1110, 0x10D6,\n    0x1069, 0x0FD9, 0x0F35, 0x0E8E, 0x0DF3, 0x0D68, 0x0CDF, 0x0C4F,\n    0x0BAD, 0x0AF0, 0x0A0C, 0x08F9, 0x07AB, 0x05DE, 0x0380, 0x00D6,\n    0xFE24, 0xFBAC, 0xF9B2, 0xF87B, 0xF809, 0xF81F, 0xF89A, 0xF95A,\n    0xFA3D, 0xFB21, 0xFBE5, 0xFC68, 0xFCC0, 0xFD17, 0xFD6D, 0xFDC0,\n    0xFE0E, 0xFE57, 0xFE99, 0xFED3, 0xFF03, 0xFF28, 0xFF40, 0xFF4B,\n    0xFF4C, 0xFF48, 0xFF3E, 0xFF30, 0xFF1D, 0xFF07, 0xFEED, 0xFED1,\n    0xFEB2, 0xFE91, 0xFE6F, 0xFE4B, 0xFE27, 0xFE03, 0xFDDF, 0xFDBB,\n    0xFD99, 0xFD78, 0xFD59, 0xFD3D, 0xFD23, 0xFD0D, 0xFCFA, 0xFCEC,\n    0xFCE2, 0xFCDD, 0xFCDE, 0xFCE5, 0xFCF2, 0xFD06, 0xFF77, 0x023A,\n    0x02D7, 0x033C, 0x0377, 0x0392, 0x039C, 0x039F, 0x03A8, 0x03BA,\n    0x03CD, 0x03E1, 0x03F5, 0x0407, 0x0418, 0x0425, 0x042D, 0x0431,\n    0x042F, 0x0426, 0x0415, 0x03FB, 0x03D7, 0x03A8, 0x0365, 0x0307,\n    0x0294, 0x0210, 0x0181, 0x00EA, 0x0051, 0xFFBC, 0xFF2D, 0xFEAB,\n    0xFE3B, 0xFDE0, 0xFDA1, 0xFD81, 0xFD86, 0xFE06, 0xFF3A, 0x00FD,\n    0x032C, 0x05A2, 0x08EF, 0x0D45, 0x11ED, 0x17BD, 0x1DDF, 0x2122,\n    0x2186, 0x2148, 0x2091, 0x1F87, 0x1E54, 0x1D1F, 0x1C11, 0x1B52,\n    0x1B09, 0x04F1, 0x03B8, 0x027D, 0x01EA, 0x02B7, 0x0449, 0x054E,\n    0x054D, 0x04E4, 0x045C, 0x0403, 0x03E5, 0x03DC, 0x03E6, 0x0403,\n    0x044D, 0x04CD, 0x0566, 0x05F9, 0x0669, 0x069A, 0x066D, 0x05C5,\n    0x0445, 0x01E0, 0xFEF4, 0xFBDC, 0xF8F7, 0xF6A0, 0xF536, 0xF515,\n    0xF69F, 0xF9A8, 0xFDB1, 0x023F, 0x06D5, 0x0AF7, 0x0E27, 0x0FEA,\n    0x1001, 0x0EC2, 0x0C94, 0x09DA, 0x06FB, 0x045B, 0x025F, 0x00C3,\n    0xFF11, 0xFD62, 0xFBD3, 0xFA7F, 0xF982, 0xF8F7, 0xF8FA, 0xF987,\n    0xFA7E, 0xFBC9, 0xFD54, 0xFF09, 0x00D2, 0x029E, 0x0456, 0x05E5,\n    0x0737, 0x0836, 0x08CE, 0x0925, 0x0970, 0x09AE, 0x09E2, 0x0A0B,\n    0x0A2A, 0x0A40, 0x0A4E, 0x0A54, 0x0A52, 0x0A4A, 0x0A3C, 0x0A29,\n    0x0A12, 0x09F7, 0x09D8, 0x09B7, 0x0994, 0x0970, 0x094B, 0x0927,\n    0x0903, 0x08E1, 0x08C1, 0x08A4, 0x088A, 0x0874, 0x0863, 0x0858,\n    0x0852, 0x0871, 0x088D, 0x0881, 0x086E, 0x0857, 0x083F, 0x0829,\n    0x0817, 0x080D, 0x0808, 0x0807, 0x0807, 0x0809, 0x080C, 0x0810,\n    0x0815, 0x0819, 0x081C, 0x081F, 0x0820, 0x081F, 0x081C, 0x0816,\n    0x080D, 0x0804, 0x07FE, 0x07FA, 0x07F8, 0x07F5, 0x07F0, 0x07E9,\n    0x07DE, 0x07CE, 0x07B7, 0x0799, 0x0772, 0x0742, 0x0706, 0x06BD,\n    0x05F1, 0x0486, 0x0304, 0x01F4, 0x01DF, 0x041D, 0x0817, 0x0B6B,\n    0x0D46, 0x0E7D, 0x0F30, 0x0FA5, 0x100A, 0x1060, 0x10A8, 0x10E2,\n    0x110E, 0x112C, 0x113E, 0x1144, 0xC3DE, 0xCD68, 0xD704, 0xDB8F,\n    0xD56B, 0xC950, 0xC197, 0xC1F0, 0xC58B, 0xCA07, 0xCD00, 0xCE10,\n    0xCE69, 0xCE0D, 0xCD00, 0xCB10, 0xC84C, 0xC519, 0xC1DB, 0xBEF5,\n    0xBCCD, 0xBBC6, 0xBC44, 0xBF37, 0xC4A7, 0xCB9A, 0xD319, 0xDA2C,\n    0xDFD9, 0xE328, 0xE322, 0xDEA1, 0xD614, 0xCAE2, 0xBE6F, 0xB21F,\n    0xA75A, 0x9F82, 0x9BFE, 0x9E8A, 0xA688, 0xB1D9, 0xBE5C, 0xC9F2,\n    0xD27A, 0xD5D6, 0xD3DD, 0xCE79, 0xC6A4, 0xBD57, 0xB38B, 0xAA39,\n    0xA25C, 0x9CEB, 0x9949, 0x9627, 0x9379, 0x9132, 0x8F47, 0x8DAB,\n    0x8C52, 0x8B30, 0x8A39, 0x895F, 0x8898, 0x87D7, 0x8715, 0x8653,\n    0x8593, 0x84D5, 0x841A, 0x8362, 0x82AF, 0x8200, 0x8157, 0x80B4,\n    0x8018, 0x7F80, 0x7EF3, 0x7E6F, 0x7DF5, 0x7D85, 0x7D1F, 0x7CC5,\n    0x7C77, 0x7C37, 0x7C03, 0x7BDE, 0x7BC7, 0x7BC0, 0x7BCA, 0x7BE4,\n    0x7C0F, 0x7C4D, 0x7C9D, 0x7D02, 0x8889, 0x9598, 0x9888, 0x9A73,\n    0x9B94, 0x9C24, 0x9C5C, 0x9C74, 0x9CA6, 0x9D07, 0x9D7D, 0x9E02,\n    0x9E8D, 0x9F15, 0x9F93, 0x9FFD, 0xA04B, 0xA075, 0xA073, 0xA03C,\n    0x9FC7, 0x9F0D, 0x9E05, 0x9CA6, 0x9AA6, 0x97D6, 0x945E, 0x9064,\n    0x8C0E, 0x8784, 0x82EC, 0x7E68, 0x7A26, 0x764A, 0x72F9, 0x705A,\n    0x6E93, 0x6DCC, 0x6E2B, 0x747D, 0x829A, 0x942D, 0xA4EA, 0xB082,\n    0xB256, 0xADDB, 0xAADA, 0xACF8, 0xB091, 0xB289, 0xB269, 0xB1E3,\n    0xB111, 0xB011, 0xAEFF, 0xADF8, 0xAD19, 0xAC7E, 0xAC44, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0002, 0x0004, 0x0007, 0x000A, 0x000E, 0x0011, 0x0013,\n    0x0015, 0x0015, 0x0015, 0x0012, 0x000E, 0x0008, 0x0000, 0xFFF3,\n    0xFFDF, 0xFFC6, 0xFFAA, 0xFF8A, 0xFF6A, 0xFF49, 0xFF2A, 0xFF0D,\n    0xFEF3, 0xFEDF, 0xFED1, 0xFECB, 0xFECD, 0xFED9, 0xFF50, 0x0038,\n    0x010F, 0x0153, 0x0062, 0xFEB8, 0xFD79, 0xFCF4, 0xFCAF, 0xFCA0,\n    0xFCBE, 0xFD02, 0xFD64, 0xFDD9, 0xFE58, 0xFED6, 0xFF49, 0xFFA8,\n    0xFFE9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFE, 0xFFFD,\n    0xFFFB, 0xFFFA, 0xFFFA, 0xFFF9, 0xFFF9, 0xFFF9, 0xFFFA, 0xFFFB,\n    0xFFFD, 0x0000, 0x0005, 0x000F, 0x001B, 0x002A, 0x003A, 0x004A,\n    0x005A, 0x0069, 0x0076, 0x0080, 0x0086, 0x0087, 0x0083, 0x0079,\n    0x0068, 0x0010, 0xFF69, 0xFEC2, 0xFE6D, 0xFEBF, 0xFF74, 0xFFF7,\n    0x0017, 0x0016, 0x0006, 0xFFFD, 0xFFFE, 0xFFFF, 0xFFFF, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xD717, 0xD73B, 0xD76D,\n    0xD7A4, 0xD7D8, 0xD802, 0xD818, 0xD812, 0xD7E9, 0xD793, 0xD709,\n    0xD52A, 0xD1E1, 0xCEBA, 0xCD42, 0xCD25, 0xCD0A, 0xCCF0, 0xCCD8,\n    0xCCC0, 0xCCAB, 0xCC96, 0xCC83, 0xCC71, 0xCC60, 0xCC50, 0xCC42,\n    0xCC34, 0xCC28, 0xCC1D, 0xCC13, 0xCC0A, 0xCC01, 0xCBFA, 0xCBF4,\n    0xCBEF, 0xCBEA, 0xCBE7, 0xCBE4, 0xCBE2, 0xCBE1, 0xCBE1, 0xCBE1,\n    0xCBE2, 0xCBE4, 0xCBE6, 0xCBE9, 0xCBED, 0xCBF1, 0xCBF6, 0xCBFB,\n    0xCC01, 0xCC07, 0xCC0D, 0xCC14, 0xCC1C, 0xCC23, 0xCC2B, 0xCC34,\n    0xCC3C, 0xCC45, 0xCC4E, 0xCC57, 0xCC61, 0xCC6A, 0xCC74, 0xCC7E,\n    0xCC88, 0xCC91, 0xCC9B, 0xCCA5, 0xCCAF, 0xCCB8, 0xCCC2, 0xCCCB,\n    0xCCD5, 0xCCDE, 0xCCE6, 0xCCEF, 0xCCF7, 0xCCFF, 0xCD07, 0xCD0E,\n    0xCD15, 0xCD1C, 0xCD22, 0xCD28, 0xCD2D, 0xCD32, 0xCD36, 0xCD3A,\n    0xCD3D, 0xCD3F, 0xCD41, 0xCD42, 0xCD42, 0xCD42, 0xCD42, 0xCD42,\n    0xCD42, 0xCD42, 0xCD42, 0xCD42, 0xCD42, 0xCD42, 0xCD3F, 0xCD35,\n    0xCD27, 0xCD17, 0xCD04, 0xCCF2, 0xCCE1, 0xCCD3, 0xCCCA, 0xCCC7,\n    0xCCCA, 0xCCD7, 0xCCEF, 0xCD12, 0xCD42, 0xCD87, 0xCDE2, 0xCE51,\n    0xCED0, 0xCF59, 0xCFEA, 0xD07F, 0xD113, 0xD1A3, 0xD22A, 0xD2A5,\n    0xD30F, 0xD365, 0xD3A3, 0xD3C5, 0xD354, 0xD218, 0xD069, 0xCEA2,\n    0xCC63, 0xC9C2, 0xC7C9, 0xC6D2, 0xC654, 0xC5FF, 0xC584, 0xC4C9,\n    0xC3EF, 0xC304, 0xC218, 0xC137, 0xC070, 0xBFD1, 0xBF67, 0xBF40,\n    0x455B, 0x449E, 0x4385, 0x422B, 0x40AC, 0x3F22, 0x3DAB, 0x3C60,\n    0x3B5D, 0x3ABF, 0x3AA0, 0x3D2C, 0x4261, 0x4712, 0x4812, 0x4494,\n    0x3EA8, 0x376D, 0x3001, 0x2983, 0x2361, 0x1DC1, 0x1AD8, 0x1A11,\n    0x195F, 0x18C2, 0x183E, 0x17D4, 0x1785, 0x1754, 0x1743, 0x1753,\n    0x1786, 0x17DF, 0x185E, 0x1906, 0x19D9, 0x1AD8, 0x1D2D, 0x215C,\n    0x2672, 0x2B7E, 0x2F8C, 0x31A9, 0x3277, 0x3339, 0x33EF, 0x349B,\n    0x353B, 0x35D2, 0x365E, 0x36E2, 0x375C, 0x37CD, 0x3837, 0x3899,\n    0x38F3, 0x3947, 0x3994, 0x39DB, 0x3A1C, 0x3A58, 0x3A8F, 0x3AC2,\n    0x3AF1, 0x3B1C, 0x3B45, 0x3B6A, 0x3B8D, 0x3BAE, 0x3BCE, 0x3BED,\n    0x3C0B, 0x3C29, 0x3C47, 0x3C66, 0x3C85, 0x3CA7, 0x3CCA, 0x3CCF,\n    0x3C9C, 0x3C3B, 0x3BB6, 0x3B16, 0x3A64, 0x39AB, 0x38F4, 0x3847,\n    0x37B0, 0x3738, 0x36E7, 0x36C9, 0x36E5, 0x3747, 0x37F7, 0x38FF,\n    0x46F7, 0x53E2, 0x4FAE, 0x46DF, 0x3C86, 0x33B3, 0x2C39, 0x25A3,\n    0x2296, 0x2335, 0x256C, 0x2884, 0x2BC9, 0x2E87, 0x3008, 0x2F76,\n    0x2D47, 0x2ABE, 0x291B, 0x28C4, 0x2903, 0x296D, 0x2998, 0x291B,\n    0x280F, 0x26DC, 0x2588, 0x241B, 0x229B, 0x2110, 0x1F82, 0x1DF8,\n    0x1C78, 0x1B0B, 0x19B7, 0x1883, 0x1777, 0x169B, 0x15F5, 0x16EE,\n    0x19D6, 0x1D0E, 0x1EF9, 0x1E73, 0x1C91, 0x1B0C, 0x1A3F, 0x1990,\n    0x1943, 0x199F, 0x1AA3, 0x1C08, 0x1DAC, 0x1F6C, 0x2127, 0x22BB,\n    0x2405, 0x24E5, 0x2537, 0xFAE0, 0xFE50, 0x0255, 0x058A, 0x079D,\n    0x0912, 0x09C9, 0x09AB, 0x08FF, 0x082F, 0x07A4, 0x0780, 0x0788,\n    0x079E, 0x07A4, 0x0790, 0x0771, 0x074A, 0x0721, 0x06FA, 0x06DA,\n    0x06C4, 0x06BF, 0x06CE, 0x06F7, 0x0780, 0x087C, 0x099F, 0x0AA0,\n    0x0B32, 0x0B0A, 0x0A06, 0x085F, 0x0652, 0x041B, 0x01F6, 0x0020,\n    0xFED7, 0xFE53, 0xFF0D, 0x00F6, 0x038E, 0x064F, 0x08B5, 0x0A3C,\n    0x0A62, 0x08DA, 0x0604, 0x0256, 0xFE47, 0xFA4D, 0xF6E1, 0xF478,\n    0xF38A, 0xF3E7, 0xF4F9, 0xF69E, 0xF8B5, 0xFB1C, 0xFDB2, 0x0054,\n    0x02E2, 0x053B, 0x073C, 0x08C4, 0x09B1, 0x0A3F, 0x0ABE, 0x0B30,\n    0x0B94, 0x0BED, 0x0C39, 0x0C7B, 0x0CB2, 0x0CDF, 0x0D03, 0x0D1E,\n    0x0D31, 0x0D3D, 0x0D42, 0x0D41, 0x0D3A, 0x0D2F, 0x0D1F, 0x0D0B,\n    0x0CF4, 0x0CDB, 0x0CC0, 0x0CA4, 0x0C87, 0x0C6A, 0x0C4E, 0x0C33,\n    0x0C1A, 0x0C03, 0x0BF0, 0x09DE, 0x077A, 0x06DA, 0x0664, 0x0610,\n    0x05D7, 0x05B1, 0x0596, 0x0580, 0x056E, 0x0566, 0x0565, 0x056B,\n    0x0576, 0x0583, 0x0592, 0x05A1, 0x05AF, 0x05B8, 0x05BD, 0x05BC,\n    0x05B2, 0x059F, 0x0580, 0x0566, 0x0560, 0x0566, 0x0574, 0x0583,\n    0x058C, 0x058B, 0x0579, 0x0550, 0x050A, 0x04A2, 0x0410, 0x0350,\n    0x025B, 0x012B, 0xFDF3, 0xF82D, 0xF1C5, 0xECA3, 0xE975, 0xE76A,\n    0xE633, 0xE5EF, 0xE668, 0xE6CD, 0xE64C, 0xE4C8, 0xE2CC, 0xE084,\n    0xDE1D, 0xDBC2, 0xD9A0, 0xD7E3, 0xD6B8, 0xD64A, 0xF57B, 0xF57F,\n    0xF5B0, 0xF630, 0xF78B, 0xF95F, 0xFA68, 0xFA2B, 0xF955, 0xF85B,\n    0xF7B4, 0xF783, 0xF789, 0xF7A4, 0xF7B4, 0xF7AC, 0xF796, 0xF778,\n    0xF759, 0xF73D, 0xF72C, 0xF729, 0xF73D, 0xF76B, 0xF7BB, 0xF87A,\n    0xF9BE, 0xFB39, 0xFC9A, 0xFD94, 0xFDD6, 0xFD62, 0xFC82, 0xFB53,\n    0xF9F4, 0xF882, 0xF71B, 0xF5DB, 0xF4E1, 0xF421, 0xF37D, 0xF2F3,\n    0xF283, 0xF22E, 0xF1F2, 0xF1CF, 0xF1CD, 0xF1EC, 0xF225, 0xF26F,\n    0xF2C1, 0xF313, 0xF35C, 0xF394, 0xF3BF, 0xF3E9, 0xF412, 0xF439,\n    0xF460, 0xF484, 0xF4A7, 0xF4C9, 0xF4E9, 0xF507, 0xF523, 0xF53E,\n    0xF559, 0xF575, 0xF593, 0xF5B2, 0xF5D2, 0xF5F3, 0xF614, 0xF636,\n    0xF658, 0xF679, 0xF69B, 0xF6BC, 0xF6DC, 0xF6FC, 0xF71A, 0xF737,\n    0xF753, 0xF76D, 0xF785, 0xF79A, 0xF7AE, 0xF7BF, 0xF7CD, 0xF7D8,\n    0xF7E0, 0xF7E5, 0xF7E6, 0xF7E4, 0xF7DD, 0xF7D2, 0xF5DA, 0xF39E,\n    0xF326, 0xF2DB, 0xF2B5, 0xF2A6, 0xF2A6, 0xF2AA, 0xF2A6, 0xF298,\n    0xF286, 0xF271, 0xF25B, 0xF246, 0xF231, 0xF220, 0xF213, 0xF20B,\n    0xF20B, 0xF213, 0xF226, 0xF243, 0xF26D, 0xF2A6, 0xF2F7, 0xF367,\n    0xF3F0, 0xF48D, 0xF538, 0xF5EC, 0xF6A3, 0xF757, 0xF802, 0xF8A0,\n    0xF92A, 0xF99C, 0xF9EE, 0xFA1C, 0xFA21, 0xF8EF, 0xF646, 0xF354,\n    0xF149, 0xF0D0, 0xF13D, 0xF1B1, 0xF200, 0xF268, 0xF2AA, 0xF287,\n    0xF1FB, 0xF13B, 0xF058, 0xEF65, 0xEE75, 0xED9A, 0xECE6, 0xEC6D,\n    0xEC41, 0xA753, 0xAE57, 0xB549, 0xB84A, 0xB2C5, 0xA889, 0xA249,\n    0xA330, 0xA716, 0xABB8, 0xAECF, 0xAFA9, 0xAF84, 0xAF05, 0xAECF,\n    0xAF21, 0xAFB8, 0xB079, 0xB147, 0xB204, 0xB295, 0xB2DC, 0xB2BD,\n    0xB21C, 0xB0DC, 0xAD5B, 0xA72B, 0x9FFA, 0x9977, 0x9552, 0x9538,\n    0x99BB, 0xA184, 0xAB68, 0xB63E, 0xC0DA, 0xCA12, 0xD0BB, 0xD3AD,\n    0xD13D, 0xC9DC, 0xBF7F, 0xB420, 0xA9B6, 0xA239, 0x9F9F, 0xA2BF,\n    0xAA1F, 0xB43B, 0xBF94, 0xCAA7, 0xD3F4, 0xD9F9, 0xDB34, 0xD82B,\n    0xD2B4, 0xCB46, 0xC25C, 0xB86F, 0xADF8, 0xA371, 0x9952, 0x9015,\n    0x8833, 0x8226, 0x7E63, 0x7C11, 0x79FB, 0x781E, 0x7678, 0x7506,\n    0x73C5, 0x72B3, 0x71CD, 0x7110, 0x707A, 0x7008, 0x6FB8, 0x6F87,\n    0x6F72, 0x6F76, 0x6F91, 0x6FC1, 0x7002, 0x7052, 0x70AF, 0x7115,\n    0x7183, 0x71F5, 0x7268, 0x72DB, 0x734A, 0x73B4, 0x7414, 0x7469,\n    0x74B0, 0x7CE0, 0x8648, 0x888D, 0x8A23, 0x8B2C, 0x8BCD, 0x8C2A,\n    0x8C64, 0x8CA1, 0x8CF1, 0x8D4B, 0x8DA9, 0x8E07, 0x8E60, 0x8EAF,\n    0x8EEF, 0x8F1C, 0x8F30, 0x8F28, 0x8EFE, 0x8EAC, 0x8E30, 0x8D83,\n    0x8CA1, 0x8B69, 0x89C7, 0x87CD, 0x858E, 0x831B, 0x8086, 0x7DDE,\n    0x7B3B, 0x78AC, 0x7643, 0x7411, 0x7228, 0x709B, 0x6F7B, 0x6ED9,\n    0x70DB, 0x7678, 0x7E04, 0x85D2, 0x8F28, 0x99EF, 0xA263, 0xA7A4,\n    0xAB82, 0xAE3C, 0xB013, 0xB16F, 0xB290, 0xB37C, 0xB436, 0xB4C4,\n    0xB52B, 0xB56E, 0xB593, 0xB59E, 0x8001, 0x8001, 0x4171, 0xC5E4,\n    0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4,\n    0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4,\n    0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4,\n    0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4,\n    0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4,\n    0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4,\n    0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4,\n    0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4,\n    0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4,\n    0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4,\n    0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4,\n    0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4,\n    0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4,\n    0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4,\n    0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4,\n    0xC5E3, 0xC5E2, 0xC5E1, 0xC5E0, 0xC5DE, 0xC5DD, 0xC5DC, 0xC5DC,\n    0xC5DB, 0xC5DC, 0xC5DD, 0xC5DE, 0xC5E1, 0xC5E4, 0xC5EE, 0xC600,\n    0xC617, 0xC62B, 0xC642, 0xC65A, 0xC65F, 0xC660, 0xC661, 0xC643,\n    0xC5E4, 0xC53E, 0xC46A, 0xC37B, 0xC282, 0xC18F, 0xC0B4, 0xC002,\n    0xBF8B, 0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x0232, 0x0233,\n    0x0235, 0x0236, 0x0237, 0x0238, 0x023A, 0x023B, 0x023C, 0x023D,\n    0x023E, 0x023F, 0x0240, 0x0241, 0x0243, 0x0244, 0x0245, 0x0245,\n    0x0246, 0x0247, 0x0248, 0x0249, 0x024A, 0x024B, 0x024C, 0x024C,\n    0x024D, 0x024E, 0x024E, 0x024F, 0x0250, 0x0250, 0x0251, 0x0251,\n    0x0252, 0x0252, 0x0253, 0x0253, 0x0254, 0x0254, 0x0254, 0x0255,\n    0x0255, 0x0255, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256,\n    0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0256, 0x0255,\n    0x0255, 0x0255, 0x0254, 0x0254, 0x0254, 0x0253, 0x0253, 0x0252,\n    0x0252, 0x0251, 0x0251, 0x0250, 0x024F, 0x024E, 0x024E, 0x024D,\n    0x024C, 0x024B, 0x024A, 0x0249, 0x0248, 0x0247, 0x0246, 0x0245,\n    0x0244, 0x0242, 0x0241, 0x0240, 0x023E, 0x023D, 0x023C, 0x023A,\n    0x0239, 0x0237, 0x0235, 0x0234, 0x0232, 0x01E0, 0x018B, 0x0187,\n    0x0188, 0x018C, 0x0193, 0x019D, 0x01A7, 0x01B2, 0x01BD, 0x01C6,\n    0x01CE, 0x01D2, 0x01D3, 0x01D0, 0x01B3, 0x017C, 0x0143, 0x0124,\n    0x00F9, 0x00B3, 0x008B, 0x00B8, 0x0172, 0x02A8, 0x0417, 0x05B5,\n    0x0776, 0x094E, 0x0B32, 0x0D16, 0x0EEE, 0x10AE, 0x124C, 0x13BA,\n    0x14EF, 0x15DD, 0x1679, 0x16B9, 0x13C9, 0x0D25, 0x0635, 0x0260,\n    0x034A, 0x06E5, 0x0B08, 0x0D89, 0x0C47, 0x0833, 0x0090, 0xFADC,\n    0xFA74, 0xFABD, 0xFB86, 0xFC9C, 0xFDCC, 0xFEE4, 0xFFB1, 0x0000,\n    0x0000, 0x0025, 0x0022, 0x001F, 0x001C, 0x0019, 0x0017, 0x0015,\n    0x0013, 0x0011, 0x0010, 0x000E, 0x000D, 0x000C, 0x000C, 0x000B,\n    0x000B, 0x000A, 0x000A, 0x000A, 0x000A, 0x000B, 0x000B, 0x000C,\n    0x000C, 0x000D, 0x000E, 0x000F, 0x0010, 0x0011, 0x0013, 0x0014,\n    0x0015, 0x0017, 0x0019, 0x001A, 0x001C, 0x001E, 0x0020, 0x0021,\n    0x0023, 0x0025, 0x0027, 0x0029, 0x002B, 0x002D, 0x002F, 0x0031,\n    0x0033, 0x0035, 0x0037, 0x0039, 0x003B, 0x003D, 0x003F, 0x0040,\n    0x0042, 0x0044, 0x0046, 0x0047, 0x0049, 0x004A, 0x004B, 0x004D,\n    0x004E, 0x004F, 0x0050, 0x0050, 0x0051, 0x0052, 0x0052, 0x0053,\n    0x0053, 0x0053, 0x0053, 0x0052, 0x0052, 0x0051, 0x0051, 0x0050,\n    0x004F, 0x004D, 0x004C, 0x004A, 0x0048, 0x0046, 0x0044, 0x0042,\n    0x003F, 0x003C, 0x0039, 0x0035, 0x0032, 0x002E, 0x0029, 0x0025,\n    0xFF4F, 0xFE6F, 0xFE5C, 0xFE53, 0xFE52, 0xFE57, 0xFE62, 0xFE70,\n    0xFE81, 0xFE92, 0xFEA2, 0xFEB1, 0xFEBC, 0xFEC1, 0xFEC1, 0xFEA8,\n    0xFE76, 0xFE42, 0xFE24, 0xFE0B, 0xFDEA, 0xFDDA, 0xFDF6, 0xFE58,\n    0xFEEF, 0xFF97, 0x004D, 0x0110, 0x01DC, 0x02AD, 0x0382, 0x0456,\n    0x0527, 0x05F2, 0x06B4, 0x076A, 0x0811, 0x08A6, 0x0926, 0x0939,\n    0x08B6, 0x07E1, 0x0700, 0x0607, 0x04DB, 0x03AB, 0x02A8, 0x0232,\n    0x01D4, 0x00C4, 0xFFF5, 0xFFD1, 0xFFC2, 0xFFC1, 0xFFCC, 0xFFDC,\n    0xFFED, 0xFFFB, 0x0000, 0x0000, 0xF207, 0xF249, 0xF286, 0xF2BE,\n    0xF2F2, 0xF321, 0xF34C, 0xF372, 0xF395, 0xF3B3, 0xF3CE, 0xF3E5,\n    0xF3F8, 0xF407, 0xF413, 0xF41C, 0xF422, 0xF424, 0xF423, 0xF420,\n    0xF41A, 0xF411, 0xF405, 0xF3F7, 0xF3E7, 0xF3D4, 0xF3BF, 0xF3A8,\n    0xF390, 0xF375, 0xF359, 0xF33B, 0xF31B, 0xF2FB, 0xF2D9, 0xF2B6,\n    0xF291, 0xF26C, 0xF246, 0xF220, 0xF1F8, 0xF1D1, 0xF1A8, 0xF180,\n    0xF157, 0xF12F, 0xF106, 0xF0DE, 0xF0B5, 0xF08E, 0xF066, 0xF040,\n    0xF01A, 0xEFF4, 0xEFD0, 0xEFAD, 0xEF8B, 0xEF6A, 0xEF4B, 0xEF2D,\n    0xEF10, 0xEEF6, 0xEEDD, 0xEEC6, 0xEEB1, 0xEE9E, 0xEE8D, 0xEE7F,\n    0xEE73, 0xEE6A, 0xEE63, 0xEE60, 0xEE5F, 0xEE61, 0xEE66, 0xEE6F,\n    0xEE7B, 0xEE8A, 0xEE9D, 0xEEB3, 0xEECE, 0xEEEC, 0xEF0E, 0xEF34,\n    0xEF5F, 0xEF8E, 0xEFC1, 0xEFF9, 0xF035, 0xF076, 0xF0BC, 0xF107,\n    0xF157, 0xF1AD, 0xF207, 0x032A, 0x1508, 0x1669, 0x16FF, 0x16EC,\n    0x164D, 0x1546, 0x13F4, 0x127A, 0x10F6, 0x0F8A, 0x0E56, 0x0D7A,\n    0x0D16, 0x0D4A, 0x100B, 0x1582, 0x1B1D, 0x1E4F, 0x1E82, 0x1D47,\n    0x1B43, 0x191C, 0x177A, 0x1651, 0x152B, 0x1407, 0x12E5, 0x11C6,\n    0x10A9, 0x0F8E, 0x0E75, 0x0D5F, 0x0C4C, 0x0B3B, 0x0A2C, 0x0920,\n    0x0816, 0x070F, 0x0623, 0x0560, 0x04B3, 0x0409, 0x0394, 0x034B,\n    0x02C8, 0x01A5, 0xFDD4, 0xFA8A, 0xFCDE, 0xFF8D, 0xFF8E, 0xFF43,\n    0xFEC3, 0xFE26, 0xFD84, 0xFCF2, 0xFC8A, 0xFC62, 0xFC62, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x0019,\n    0x0031, 0x0049, 0x005B, 0x0062, 0x0059, 0x003A, 0x0000, 0xFFA9,\n    0xFF3B, 0xFEB9, 0xFE29, 0xFD8E, 0xFCEE, 0xFC4B, 0xFBAC, 0xFB14,\n    0xFA87, 0xFA0A, 0xF9A2, 0xF951, 0xF91E, 0xF90C, 0xF92E, 0xF98D,\n    0xFA1C, 0xFAD1, 0xFB9F, 0xFC7B, 0xFD59, 0xFE2E, 0xFEEE, 0xFF8D,\n    0x0000, 0x0046, 0x006B, 0x0076, 0x006D, 0x0057, 0x003B, 0x001E,\n    0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xFFF1, 0xFFCB, 0xFF9A, 0xFF68, 0xFF42, 0xFF33, 0xFF46,\n    0xFF87, 0x0000, 0x00B5, 0x019B, 0x02A9, 0x03D5, 0x0517, 0x0664,\n    0x07B6, 0x0901, 0x0A3D, 0x0B62, 0x0C66, 0x0D40, 0x0DE7, 0x0E51,\n    0x0E77, 0x0E30, 0x0D6B, 0x0C41, 0x0AC9, 0x091D, 0x0753, 0x0584,\n    0x03C9, 0x023A, 0x00EF, 0x0000, 0xFF6E, 0xFF20, 0xFF0A, 0xFF1C,\n    0xFF4A, 0xFF85, 0xFFC0, 0xFFEE, 0x0000, 0x0323, 0x094D, 0x0983,\n    0x09B3, 0x09DE, 0x0A05, 0x0A27, 0x0A45, 0x0A5F, 0x0A74, 0x0A86,\n    0x0A95, 0x0A9F, 0x0AA7, 0x0AAB, 0x0AAD, 0x0AAC, 0x0AA8, 0x0AA1,\n    0x0A99, 0x0A8E, 0x0A82, 0x0A73, 0x0A64, 0x0A52, 0x0A40, 0x0A2D,\n    0x0A19, 0x0A04, 0x09EE, 0x09D9, 0x09C3, 0x09AD, 0x0997, 0x0982,\n    0x096D, 0x0959, 0x0946, 0x0934, 0x0923, 0x0914, 0x0906, 0x08FA,\n    0x08F0, 0x08E8, 0x08E2, 0x08DF, 0x08DE, 0x08E0, 0x08E6, 0x08EE,\n    0x08FA, 0x0909, 0x091C, 0x0932, 0x094D, 0x0968, 0x097D, 0x098F,\n    0x099D, 0x09A8, 0x09B1, 0x09B8, 0x09BD, 0x09C1, 0x09C6, 0x09CA,\n    0x09CF, 0x09D5, 0x09DD, 0x09E7, 0x09F4, 0x0A05, 0x0A19, 0x0A32,\n    0x0A50, 0x0A73, 0x0A9C, 0x0ACC, 0x0B03, 0x0B41, 0x0B88, 0x0BD7,\n    0x0C30, 0x0C92, 0x0CFE, 0x0D76, 0x0DF8, 0x0E87, 0x0F22, 0x0FCA,\n    0x107F, 0x1142, 0x1214, 0x12F5, 0x13E5, 0x2327, 0x320B, 0x31E4,\n    0x3105, 0x2F8A, 0x2D8F, 0x2B31, 0x288C, 0x25BC, 0x22DE, 0x200E,\n    0x1D68, 0x1B09, 0x190D, 0x1790, 0x169E, 0x1620, 0x15FE, 0x1621,\n    0x1670, 0x16D4, 0x1736, 0x177C, 0x1790, 0x178E, 0x17A1, 0x17C3,\n    0x17EE, 0x181E, 0x184C, 0x1875, 0x1891, 0x189C, 0x1890, 0x1869,\n    0x1820, 0x17B0, 0x1714, 0x1647, 0x1511, 0x1354, 0x112E, 0x0EC0,\n    0x0C28, 0x0986, 0x06F8, 0x049E, 0x0297, 0x0103, 0x0000, 0xFFC0,\n    0x003E, 0x014A, 0x02B3, 0x0449, 0x05D9, 0x0734, 0x0827, 0x0884,\n    0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0004, 0x0006, 0x0008,\n    0x000B, 0x000D, 0x0010, 0x0012, 0x0014, 0x0016, 0x0017, 0x0018,\n    0x0018, 0x0017, 0x0016, 0x0013, 0x0010, 0x000C, 0x0006, 0x0000,\n    0xFFE3, 0xFFA7, 0xFF62, 0xFF29, 0xFF11, 0xFF30, 0xFF83, 0xFFF5,\n    0x007C, 0x0113, 0x01B1, 0x024D, 0x02E1, 0x0362, 0x03CB, 0x0413,\n    0x043F, 0x045F, 0x0473, 0x047D, 0x047E, 0x0479, 0x046E, 0x045F,\n    0x044F, 0x043D, 0x042D, 0x0420, 0x0416, 0x0413, 0x0412, 0x0411,\n    0x0410, 0x040F, 0x0410, 0x0410, 0x0411, 0x0411, 0x0412, 0x0412,\n    0x0411, 0x0412, 0x0415, 0x041A, 0x0421, 0x042A, 0x0435, 0x0440,\n    0x044C, 0x0459, 0x0466, 0x0474, 0x0481, 0x048D, 0x0499, 0x04A4,\n    0x04AE, 0x04B6, 0x04BC, 0x04C1, 0x04C3, 0x04C2, 0x04BF, 0x04B8,\n    0x04AF, 0x04A1, 0x0490, 0x047A, 0x0460, 0x0441, 0x041E, 0x03F5,\n    0x0190, 0xFE74, 0xFD1C, 0xFC46, 0xFBEF, 0xFBF9, 0xFC3B, 0xFC9D,\n    0xFD05, 0xFD5C, 0xFD87, 0xFD91, 0xFD94, 0xFD91, 0xFD8A, 0xFD7D,\n    0xFD6E, 0xFD5D, 0xFD4A, 0xFD36, 0xFD23, 0xFD11, 0xFD01, 0xFCF5,\n    0xFCEA, 0xFCDD, 0xFCCF, 0xFCC1, 0xFCB2, 0xFCA4, 0xFC96, 0xFC89,\n    0xFC7D, 0xFC72, 0xFC69, 0xFC62, 0xFC5E, 0xFC5D, 0xFC5F, 0xFC70,\n    0xFC9A, 0xFCDD, 0xFD39, 0xFDBE, 0xFE68, 0xFF18, 0xFFAB, 0x0000,\n    0x0024, 0x003B, 0x0046, 0x0048, 0x0042, 0x0037, 0x0029, 0x001A,\n    0x000D, 0x0003, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004,\n    0x0006, 0x0007, 0x0008, 0x0008, 0x0008, 0x0007, 0x0006, 0x0003,\n    0x0000, 0xFFF1, 0xFFD6, 0xFFBD, 0xFFB5, 0xFFBF, 0xFFD0, 0xFFE6,\n    0xFFFE, 0x0014, 0x0027, 0x0034, 0x003B, 0x0041, 0x0046, 0x004A,\n    0x004C, 0x004E, 0x004F, 0x004F, 0x004F, 0x004E, 0x004D, 0x004C,\n    0x004C, 0x004B, 0x004B, 0x004B, 0x004C, 0x004E, 0x0051, 0x0055,\n    0x005B, 0x0062, 0x006A, 0x0074, 0x0080, 0x008E, 0x009E, 0x00B0,\n    0x00C5, 0x00DD, 0x00F7, 0x0273, 0x03C4, 0x02D0, 0x0122, 0xFFCE,\n    0xFF07, 0xFE4F, 0xFDAD, 0xFD28, 0xFCC6, 0xFC8D, 0xFC70, 0xFC5C,\n    0xFC51, 0xFC4E, 0xFC52, 0xFC5E, 0xFC70, 0xFC89, 0xFCA6, 0xFCC9,\n    0xFCF1, 0xFD1C, 0xFD4B, 0xFD7F, 0xFDBB, 0xFDFD, 0xFE44, 0xFE90,\n    0xFEE0, 0xFF33, 0xFF88, 0xFFDF, 0x0036, 0x008D, 0x00E4, 0x0138,\n    0x018A, 0x01D9, 0x023B, 0x02AA, 0x02F9, 0x02FB, 0x0291, 0x01DF,\n    0x0115, 0x0065, 0x0000, 0xFFD9, 0xFFC1, 0xFFB5, 0xFFB3, 0xFFBA,\n    0xFFC5, 0xFFD4, 0xFFE4, 0xFFF2, 0xFFFD, 0x0000, 0xB00B, 0xB648,\n    0xB6BF, 0xB720, 0xB76C, 0xB7A6, 0xB7CE, 0xB7E6, 0xB7F1, 0xB7EF,\n    0xB7E2, 0xB7CC, 0xB7AF, 0xB78C, 0xB764, 0xB73A, 0xB70E, 0xB6E4,\n    0xB6BB, 0xB696, 0xB677, 0xB65E, 0xB64E, 0xB648, 0xB648, 0xB648,\n    0xB648, 0xB648, 0xB648, 0xB648, 0xB648, 0xB648, 0xB648, 0xB648,\n    0xB648, 0xB648, 0xB648, 0xB648, 0xB648, 0xB648, 0xB646, 0xB63E,\n    0xB633, 0xB626, 0xB619, 0xB60B, 0xB5FF, 0xB5F7, 0xB5F2, 0xB5F3,\n    0xB5FB, 0xB60B, 0xB624, 0xB648, 0xB6DE, 0xB7ED, 0xB8E5, 0xB938,\n    0xB8DA, 0xB82F, 0xB755, 0xB667, 0xB581, 0xB4C1, 0xB442, 0xB3FE,\n    0xB3DE, 0xB3DB, 0xB3F4, 0xB425, 0xB469, 0xB4BF, 0xB521, 0xB58D,\n    0xB5FF, 0xB674, 0xB6E8, 0xB757, 0xB7BE, 0xB81A, 0xB867, 0xB8A1,\n    0xB8C5, 0xB8D0, 0xB8BE, 0xB88B, 0xB834, 0xB7B6, 0xB70D, 0xB635,\n    0xB52A, 0xB3EB, 0xB272, 0xB0BC, 0xAEC7, 0xAC8D, 0x8EE0, 0x6658,\n    0x50D9, 0x4044, 0x3450, 0x2AFB, 0x2295, 0x1B59, 0x157D, 0x113A,\n    0x0ECA, 0x0D92, 0x0CCC, 0x0C70, 0x0C75, 0x0CD5, 0x0D86, 0x0E82,\n    0x0FBF, 0x1136, 0x12DF, 0x14B1, 0x16A5, 0x18B3, 0x1AF0, 0x1D72,\n    0x2032, 0x2328, 0x264C, 0x2998, 0x2D04, 0x3089, 0x341F, 0x37BE,\n    0x3B60, 0x3EFC, 0x428C, 0x4608, 0x4968, 0x4DB1, 0x52B5, 0x56A2,\n    0x57A6, 0x54C0, 0x4F42, 0x48DB, 0x4336, 0x3FFF, 0x3ED2, 0x3E20,\n    0x3DD4, 0x3DDB, 0x3E21, 0x3E92, 0x3F1B, 0x3FA8, 0x4025, 0x407F,\n    0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_3A.inc.c",
    "content": "static const struct Animation anim_3A[] = {\n    1,\n    189,\n    0,\n    0,\n    0x06,\n    ANIMINDEX_NUMPARTS(anim_3A_indices),\n    anim_3A_values,\n    anim_3A_indices,\n    0,\n};\n\n\nstatic const u16 anim_3A_indices[] = {\n    0x0001, 0x0000, 0x0006, 0x0001, 0x0006, 0x0007, 0x0001, 0x0000, 0x0001, 0x000D, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0006, 0x00B5,\n    0x0006, 0x00A3, 0x0006, 0x00A9, 0x0006, 0x00AF,\n    0x0006, 0x0091, 0x0006, 0x0097, 0x0006, 0x009D,\n    0x0001, 0x008D, 0x0001, 0x008E, 0x0001, 0x008F,\n    0x0006, 0x0017, 0x0006, 0x001D, 0x0006, 0x0023,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0006, 0x0011,\n    0x0001, 0x000E, 0x0001, 0x000F, 0x0001, 0x0010,\n    0x0001, 0x0089, 0x0001, 0x008A, 0x0001, 0x008B,\n    0x0006, 0x0041, 0x0006, 0x0047, 0x0006, 0x004D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0006, 0x003B,\n    0x0006, 0x0029, 0x0006, 0x002F, 0x0006, 0x0035,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x008C,\n    0x0006, 0x0077, 0x0006, 0x007D, 0x0006, 0x0083,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0006, 0x0071,\n    0x0001, 0x006E, 0x0001, 0x006F, 0x0001, 0x0070,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0090,\n    0x0006, 0x005C, 0x0006, 0x0062, 0x0006, 0x0068,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0006, 0x0056,\n    0x0001, 0x0053, 0x0001, 0x0054, 0x0001, 0x0055,\n};\n\nstatic const s16 anim_3A_values[] = {\n    0x0000, 0x0034, 0x0035, 0x0035, 0x0035, 0x0036, 0x0036, 0xFFFE,\n    0xFFFE, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x3FFF, 0xFF8A, 0xF980,\n    0xF06F, 0xBED0, 0xC13B, 0xC6FD, 0xCDDD, 0xD39F, 0xD60A, 0xC400,\n    0xC064, 0xB7CA, 0xAD85, 0xA4EB, 0xA150, 0xD58C, 0xD49D, 0xD264,\n    0xCFBD, 0xCD84, 0xCC95, 0x1569, 0x1B00, 0x2853, 0x383B, 0x458F,\n    0x4B26, 0x00AD, 0x009B, 0x0070, 0x003D, 0x0012, 0x0000, 0xFCD0,\n    0xFD25, 0xFDF0, 0xFEE1, 0xFFAC, 0x0000, 0xE4F6, 0xE5DB, 0xE7FC,\n    0xEA86, 0xECA7, 0xED8C, 0xC626, 0xC865, 0xCDC0, 0xD424, 0xD97F,\n    0xDBBE, 0x4BA5, 0x48E4, 0x4252, 0x3A7A, 0x33E9, 0x3127, 0x1FD6,\n    0x21AF, 0x2617, 0x2B59, 0x2FC1, 0x319A, 0x340F, 0x3134, 0x2A67,\n    0x2249, 0x1B7B, 0x18A1, 0x001B, 0x025B, 0xCB25, 0x385D, 0x3327,\n    0x26B9, 0x17E4, 0x0B76, 0x0640, 0xF7EF, 0xF8BF, 0xFAB1, 0xFD03,\n    0xFEF5, 0xFFC5, 0x07D6, 0x06E2, 0x049D, 0x01E8, 0xFFA5, 0xFEB1,\n    0x7ACB, 0x7E42, 0x8689, 0x9066, 0x98AA, 0x9C21, 0x0095, 0xFF09,\n    0xCC42, 0x3426, 0x2FBE, 0x253C, 0x18B1, 0x0E2F, 0x09C7, 0xFFCB,\n    0xFFD1, 0xFFDE, 0xFFEE, 0xFFFB, 0x0000, 0xF3CA, 0xF51A, 0xF83C,\n    0xFBFA, 0xFF1C, 0x006C, 0x8661, 0x892C, 0x8FD3, 0x97C5, 0x9E6C,\n    0xA137, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171,\n    0xBF5F, 0x011E, 0x0100, 0x00B9, 0x0064, 0x001D, 0x0000, 0x030F,\n    0x0315, 0x0321, 0x0330, 0x033D, 0x0342, 0x2662, 0x24E6, 0x215A,\n    0x1D1E, 0x1992, 0x1815, 0xFFF9, 0xFFFA, 0xFFFC, 0xFFFE, 0x0000,\n    0x0000, 0xFCBC, 0xFCBC, 0xFCBD, 0xFCBD, 0xFCBE, 0xFCBE, 0x144D,\n    0x1443, 0x142B, 0x140E, 0x13F6, 0x13EC, 0x1B25, 0x1B7C, 0x1C4B,\n    0x1D42, 0x1E11, 0x1E68,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_3B.inc.c",
    "content": "static const struct Animation anim_3B[] = {\n    1,\n    189,\n    0,\n    0,\n    0x10,\n    ANIMINDEX_NUMPARTS(anim_3B_indices),\n    anim_3B_values,\n    anim_3B_indices,\n    0,\n};\n\n\nstatic const u16 anim_3B_indices[] = {\n    0x0001, 0x0000, 0x0010, 0x0001, 0x0010, 0x0011, 0x0001, 0x0000, 0x0001, 0x0021, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x024A,\n    0x0010, 0x021A, 0x0010, 0x022A, 0x0010, 0x023A,\n    0x0010, 0x01EA, 0x0010, 0x01FA, 0x0010, 0x020A,\n    0x0001, 0x01E6, 0x0001, 0x01E7, 0x0001, 0x01E8,\n    0x0010, 0x0062, 0x0010, 0x0072, 0x0010, 0x0082,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x0052,\n    0x0010, 0x0022, 0x0010, 0x0032, 0x0010, 0x0042,\n    0x0001, 0x01E2, 0x0001, 0x01E3, 0x0001, 0x01E4,\n    0x0010, 0x00D2, 0x0010, 0x00E2, 0x0010, 0x00F2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x00C2,\n    0x0010, 0x0092, 0x0010, 0x00A2, 0x0010, 0x00B2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01E5,\n    0x0010, 0x01B2, 0x0010, 0x01C2, 0x0010, 0x01D2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x01A2,\n    0x0010, 0x0172, 0x0010, 0x0182, 0x0010, 0x0192,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01E9,\n    0x0010, 0x0142, 0x0010, 0x0152, 0x0010, 0x0162,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x0132,\n    0x0010, 0x0102, 0x0010, 0x0112, 0x0010, 0x0122,\n};\n\nstatic const s16 anim_3B_values[] = {\n    0x0000, 0x0000, 0x000A, 0x0021, 0x0036, 0x0046, 0x0055, 0x005D,\n    0x0059, 0x004E, 0x0046, 0x0043, 0x0040, 0x003E, 0x003C, 0x003B,\n    0x003B, 0x0000, 0xFFF0, 0xFFD1, 0xFFBC, 0xFFBE, 0xFFCC, 0xFFDE,\n    0xFFF7, 0x0013, 0x0024, 0x0028, 0x0028, 0x0024, 0x001F, 0x001B,\n    0x0019, 0x3FFF, 0x008A, 0x0087, 0x007E, 0x006F, 0x005D, 0x0048,\n    0x0030, 0x0017, 0xFFFE, 0xFFE5, 0xFFCD, 0xFFB8, 0xFFA5, 0xFF97,\n    0xFF8E, 0xFF8A, 0xF435, 0xF447, 0xF477, 0xF4C2, 0xF523, 0xF594,\n    0xF612, 0xF697, 0xF71E, 0xF7A3, 0xF821, 0xF892, 0xF8F3, 0xF93E,\n    0xF96F, 0xF980, 0xEA2C, 0xEA41, 0xEA7A, 0xEAD3, 0xEB45, 0xEBCC,\n    0xEC60, 0xECFE, 0xED9E, 0xEE3B, 0xEED0, 0xEF56, 0xEFC8, 0xF021,\n    0xF05B, 0xF06F, 0xF913, 0xF855, 0xF63F, 0xF304, 0xEEDB, 0xE9F9,\n    0xE491, 0xDEDB, 0xD909, 0xD352, 0xCDEB, 0xC909, 0xC4E0, 0xC1A5,\n    0xBF8E, 0xBED0, 0xB8A2, 0xB8C7, 0xB92F, 0xB9D1, 0xBAA0, 0xBB94,\n    0xBCA2, 0xBDC0, 0xBEE2, 0xC000, 0xC10D, 0xC201, 0xC2D1, 0xC372,\n    0xC3DB, 0xC400, 0xC454, 0xC48C, 0xC52A, 0xC61F, 0xC759, 0xC8CB,\n    0xCA64, 0xCC14, 0xCDCC, 0xCF7C, 0xD115, 0xD287, 0xD3C1, 0xD4B6,\n    0xD554, 0xD58C, 0xCB3D, 0xCC2F, 0xCED8, 0xD2F4, 0xD840, 0xDE78,\n    0xE559, 0xEC9F, 0xF407, 0xFB4E, 0x022E, 0x0866, 0x0DB2, 0x11CE,\n    0x1477, 0x1569, 0x003A, 0x003B, 0x0040, 0x0046, 0x004E, 0x0058,\n    0x0063, 0x006E, 0x0079, 0x0085, 0x008F, 0x0099, 0x00A1, 0x00A8,\n    0x00AC, 0x00AD, 0x054A, 0x052F, 0x04E1, 0x0468, 0x03CD, 0x0317,\n    0x024E, 0x0179, 0x00A0, 0xFFCC, 0xFF03, 0xFE4D, 0xFDB2, 0xFD3A,\n    0xFCEC, 0xFCD0, 0xEBEE, 0xEBD7, 0xEB97, 0xEB35, 0xEAB5, 0xEA20,\n    0xE97A, 0xE8CB, 0xE819, 0xE76A, 0xE6C5, 0xE62F, 0xE5B0, 0xE54D,\n    0xE50D, 0xE4F6, 0xF6A2, 0xF603, 0xF446, 0xF197, 0xEE20, 0xEA10,\n    0xE591, 0xE0CF, 0xDBF8, 0xD737, 0xD2B8, 0xCEA7, 0xCB31, 0xC881,\n    0xC6C4, 0xC626, 0x495F, 0x4966, 0x497B, 0x499C, 0x49C5, 0x49F6,\n    0x4A2C, 0x4A65, 0x4A9F, 0x4AD8, 0x4B0E, 0x4B3F, 0x4B68, 0x4B89,\n    0x4B9D, 0x4BA5, 0x39E6, 0x3991, 0x38A2, 0x3730, 0x3554, 0x3324,\n    0x30BA, 0x2E2B, 0x2B91, 0x2902, 0x2698, 0x2468, 0x228C, 0x211A,\n    0x202B, 0x1FD6, 0xCC24, 0xCD77, 0xD131, 0xD6F3, 0xDE5E, 0xE715,\n    0xF0B8, 0xFAE9, 0x0549, 0x0F7A, 0x191D, 0x21D4, 0x2940, 0x2F02,\n    0x32BC, 0x340F, 0x0135, 0x0131, 0x0127, 0x0117, 0x0103, 0x00EC,\n    0x00D2, 0x00B6, 0x009A, 0x007E, 0x0064, 0x004D, 0x0039, 0x0029,\n    0x001F, 0x001B, 0x0207, 0x0208, 0x020B, 0x0210, 0x0216, 0x021D,\n    0x0225, 0x022D, 0x0235, 0x023E, 0x0246, 0x024D, 0x0253, 0x0257,\n    0x025A, 0x025B, 0xDF23, 0xDEE2, 0xDE2A, 0xDD0F, 0xDBA1, 0xD9F4,\n    0xD819, 0xD624, 0xD425, 0xD22F, 0xD054, 0xCEA7, 0xCD39, 0xCC1E,\n    0xCB66, 0xCB25, 0x10D8, 0x132E, 0x1897, 0x1EA8, 0x22F8, 0x25A5,\n    0x285D, 0x2B0E, 0x2DAB, 0x3021, 0x3263, 0x345F, 0x3606, 0x3748,\n    0x3815, 0x385D, 0x10FF, 0x10AD, 0x0FC7, 0x0E64, 0x0C99, 0x0A7F,\n    0x082C, 0x05B7, 0x0336, 0x00C1, 0xFE6E, 0xFC54, 0xFA8A, 0xF927,\n    0xF840, 0xF7EF, 0x052D, 0x0535, 0x054E, 0x0573, 0x05A4, 0x05DD,\n    0x061C, 0x065F, 0x06A3, 0x06E6, 0x0725, 0x075E, 0x078F, 0x07B5,\n    0x07CD, 0x07D6, 0xBDBB, 0xBCE1, 0xBA7B, 0xB6C5, 0xB1FE, 0xAC61,\n    0xA62C, 0x9F9C, 0x98ED, 0x925D, 0x8C28, 0x868B, 0x81C4, 0x7E0C,\n    0x7BA5, 0x7ACB, 0x0013, 0x0015, 0x0019, 0x0020, 0x002A, 0x0035,\n    0x0041, 0x004D, 0x005A, 0x0067, 0x0073, 0x007E, 0x0088, 0x008F,\n    0x0093, 0x0095, 0xFEE0, 0xFEE0, 0xFEE2, 0xFEE4, 0xFEE7, 0xFEEB,\n    0xFEEE, 0xFEF2, 0xFEF6, 0xFEFA, 0xFEFE, 0xFF02, 0xFF05, 0xFF07,\n    0xFF08, 0xFF09, 0xDF6A, 0xDF2B, 0xDE7C, 0xDD6C, 0xDC0E, 0xDA73,\n    0xD8AC, 0xD6CB, 0xD4E1, 0xD300, 0xD13A, 0xCF9E, 0xCE40, 0xCD31,\n    0xCC81, 0xCC42, 0x0F13, 0x10EC, 0x153D, 0x1A2D, 0x1DE1, 0x2071,\n    0x2321, 0x25DE, 0x2893, 0x2B2D, 0x2D97, 0x2FBE, 0x318E, 0x32F1,\n    0x33D5, 0x3426, 0xF602, 0xF622, 0xF67C, 0xF707, 0xF7BA, 0xF88C,\n    0xF974, 0xFA6A, 0xFB64, 0xFC59, 0xFD42, 0xFE14, 0xFEC6, 0xFF51,\n    0xFFAB, 0xFFCB, 0xFC00, 0xFBE5, 0xFB9A, 0xFB25, 0xFA8F, 0xF9DF,\n    0xF91C, 0xF84E, 0xF77C, 0xF6AE, 0xF5EB, 0xF53A, 0xF4A4, 0xF430,\n    0xF3E4, 0xF3CA, 0xBCB0, 0xBBFF, 0xBA0C, 0xB70A, 0xB329, 0xAE9B,\n    0xA992, 0xA43F, 0x9ED2, 0x997F, 0x9476, 0x8FE8, 0x8C07, 0x8905,\n    0x8712, 0x8661, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001,\n    0x4171, 0xBF5F, 0x0000, 0xFFF8, 0xFFF1, 0x0008, 0x0048, 0x009B,\n    0x00F6, 0x014D, 0x0193, 0x01BC, 0x01C1, 0x01A8, 0x017F, 0x0151,\n    0x012D, 0x011E, 0x0000, 0x000E, 0x0030, 0x0056, 0x0076, 0x0095,\n    0x00B4, 0x00D8, 0x0102, 0x0136, 0x0182, 0x01E5, 0x024E, 0x02AF,\n    0x02F4, 0x030F, 0xD6E6, 0xD49D, 0xD1E7, 0xD4FB, 0xDF21, 0xEC63,\n    0xFB17, 0x0995, 0x1635, 0x1F4E, 0x248B, 0x272C, 0x27EF, 0x2791,\n    0x26CD, 0x2662, 0x0000, 0x000B, 0x0022, 0x0033, 0x002D, 0xFFF2,\n    0xFF97, 0xFF61, 0xFF5A, 0xFF5C, 0xFF65, 0xFF72, 0xFF81, 0xFF8F,\n    0xFF9A, 0xFF9E, 0x0000, 0xFFF3, 0xFFD2, 0xFFA6, 0xFF77, 0xFF45,\n    0xFF09, 0xFECB, 0xFE85, 0xFE36, 0xFDE1, 0xFD8E, 0xFD43, 0xFD06,\n    0xFCDD, 0xFCCE, 0xF839, 0xF5C8, 0xF0B4, 0xEC55, 0xEC04, 0xF4AB,\n    0x028B, 0x0C07, 0x0FB3, 0x129D, 0x14DC, 0x1682, 0x17A7, 0x185E,\n    0x18BC, 0x18D7, 0x7C1D, 0x7E24, 0x83DA, 0x8CAA, 0x9805, 0xA55B,\n    0xB41A, 0xC3B3, 0xD394, 0xE32C, 0xF1EC, 0xFF41, 0x0A9B, 0x136B,\n    0x191F, 0x1B25,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_3C_3D.inc.c",
    "content": "static const struct Animation anim_3C[] = {\n    1,\n    189,\n    0,\n    0,\n    0x0B,\n    ANIMINDEX_NUMPARTS(anim_3C_3D_indices),\n    anim_3C_3D_values,\n    anim_3C_3D_indices,\n    0,\n};\n\nstatic const struct Animation anim_3D[] = {\n    1,\n    189,\n    10,\n    0,\n    0x0B,\n    ANIMINDEX_NUMPARTS(anim_3C_3D_indices),\n    anim_3C_3D_values,\n    anim_3C_3D_indices,\n    0,\n};\n\n\nstatic const u16 anim_3C_3D_indices[] = {\n    0x0001, 0x0000, 0x000B, 0x0001, 0x000B, 0x000C, 0x0001, 0x0000, 0x0001, 0x0017, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000B, 0x0178,\n    0x000B, 0x0157, 0x000B, 0x0162, 0x000B, 0x016D,\n    0x000B, 0x0136, 0x000B, 0x0141, 0x000B, 0x014C,\n    0x0001, 0x0132, 0x0001, 0x0133, 0x0001, 0x0134,\n    0x000B, 0x0026, 0x000B, 0x0031, 0x000B, 0x003C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000B, 0x001B,\n    0x0001, 0x0018, 0x0001, 0x0019, 0x0001, 0x001A,\n    0x0001, 0x012E, 0x0001, 0x012F, 0x0001, 0x0130,\n    0x000B, 0x0073, 0x000B, 0x007E, 0x000B, 0x0089,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000B, 0x0068,\n    0x000B, 0x0047, 0x000B, 0x0052, 0x000B, 0x005D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0131,\n    0x000B, 0x010D, 0x000B, 0x0118, 0x000B, 0x0123,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000B, 0x0102,\n    0x000B, 0x00E1, 0x000B, 0x00EC, 0x000B, 0x00F7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0135,\n    0x000B, 0x00C0, 0x000B, 0x00CB, 0x000B, 0x00D6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000B, 0x00B5,\n    0x000B, 0x0094, 0x000B, 0x009F, 0x000B, 0x00AA,\n};\n\nstatic const s16 anim_3C_3D_values[] = {\n    0x0000, 0x0036, 0x0033, 0x0036, 0x004B, 0x005D, 0x0054, 0x0046,\n    0x0042, 0x003F, 0x003D, 0x003B, 0x0000, 0xFFE1, 0xFFBC, 0xFFC4,\n    0xFFDE, 0x0005, 0x0024, 0x0029, 0x0025, 0x001E, 0x0019, 0x3FFF,\n    0xFF8A, 0xF980, 0xF06F, 0xD60A, 0xD17C, 0xC895, 0xC27B, 0xC0A3,\n    0xBF99, 0xBF26, 0xBF10, 0xBF21, 0xBF1E, 0xBED0, 0x9BD8, 0x782F,\n    0x36BE, 0x15C5, 0x1F53, 0x3240, 0x4BFD, 0x69FD, 0x89B4, 0xA88E,\n    0xC400, 0xC4ED, 0xC9EC, 0xD383, 0xD99D, 0xDAAE, 0xDABE, 0xDA12,\n    0xD8F0, 0xD7A0, 0xD667, 0xD58C, 0x194D, 0x401B, 0x881B, 0xAEA7,\n    0xA88F, 0x98D0, 0x820B, 0x66E0, 0x49F7, 0x2DEF, 0x1569, 0x0000,\n    0xFFFD, 0xFFF9, 0x0000, 0x0013, 0x002A, 0x0043, 0x005D, 0x0079,\n    0x0094, 0x00AD, 0x0000, 0x0012, 0x0024, 0x0000, 0xFFA6, 0xFF3B,\n    0xFEC5, 0xFE48, 0xFDC8, 0xFD49, 0xFCD0, 0xED8C, 0xEDBC, 0xEDED,\n    0xED8C, 0xEC97, 0xEB78, 0xEA3A, 0xE8E9, 0xE791, 0xE63C, 0xE4F6,\n    0xDBBE, 0xDABE, 0xD87A, 0xD60A, 0xD3D9, 0xD19C, 0xCF56, 0xCD0A,\n    0xCABC, 0xC86E, 0xC626, 0x492C, 0x4FF6, 0x5C9E, 0x6392, 0x62D9,\n    0x607A, 0x5CE8, 0x5897, 0x53FA, 0x4F83, 0x4BA5, 0x2EC5, 0x3DFB,\n    0x59F1, 0x6828, 0x6451, 0x5C83, 0x51D2, 0x4553, 0x381B, 0x2B40,\n    0x1FD6, 0xF657, 0xFDC8, 0x0CC5, 0x1854, 0x1DEA, 0x2282, 0x2661,\n    0x29CC, 0x2D09, 0x305E, 0x340F, 0x001B, 0xFFEB, 0xFF8E, 0xFF5D,\n    0xFF64, 0xFF77, 0xFF94, 0xFFB6, 0xFFDA, 0xFFFE, 0x001B, 0x025B,\n    0x0256, 0x024B, 0x0245, 0x0246, 0x0249, 0x024C, 0x0250, 0x0254,\n    0x0258, 0x025B, 0xCB25, 0xC7C3, 0xC179, 0xBE16, 0xBE95, 0xBFEA,\n    0xC1DB, 0xC42E, 0xC6A7, 0xC90D, 0xCB25, 0x5341, 0x562D, 0x5B16,\n    0x5C37, 0x58E2, 0x5474, 0x4F3C, 0x4984, 0x4399, 0x3DC8, 0x385D,\n    0x007E, 0x00AF, 0x00DF, 0x007E, 0xFF8B, 0xFE6C, 0xFD2F, 0xFBDF,\n    0xFA87, 0xF933, 0xF7EF, 0xFEC4, 0xFE91, 0xFE5D, 0xFEC4, 0xFFC7,\n    0x00F5, 0x0245, 0x03A9, 0x0515, 0x067E, 0x07D6, 0x854D, 0x8589,\n    0x85C4, 0x854D, 0x8422, 0x82C3, 0x813E, 0x7F9F, 0x7DFA, 0x7C59,\n    0x7ACB, 0x0095, 0x00AF, 0x00E1, 0x00FB, 0x00F7, 0x00ED, 0x00DE,\n    0x00CB, 0x00B8, 0x00A5, 0x0095, 0xFF09, 0xFF24, 0xFF56, 0xFF71,\n    0xFF6D, 0xFF63, 0xFF53, 0xFF41, 0xFF2D, 0xFF1A, 0xFF09, 0xCC42,\n    0xC6DF, 0xBCDE, 0xB77B, 0xB845, 0xBA63, 0xBD7A, 0xC12C, 0xC51C,\n    0xC8ED, 0xCC42, 0x4A26, 0x4F49, 0x5868, 0x5C13, 0x58F2, 0x543E,\n    0x4E65, 0x47D6, 0x40FD, 0x3A48, 0x3426, 0x002A, 0x0012, 0xFFE6,\n    0xFFC8, 0xFFC1, 0xFFBF, 0xFFBF, 0xFFC2, 0xFFC6, 0xFFC9, 0xFFCB,\n    0x0063, 0x00A9, 0x00ED, 0x005C, 0xFEF6, 0xFD51, 0xFB80, 0xF992,\n    0xF799, 0xF5A6, 0xF3CA, 0xB183, 0xA8A6, 0x975C, 0x8B9F, 0x8841,\n    0x867C, 0x85E2, 0x8602, 0x866C, 0x86B1, 0x8661, 0x8001, 0x8001,\n    0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F, 0xFEEA, 0xFF32,\n    0xFFC4, 0x0031, 0x0064, 0x008C, 0x00AD, 0x00C9, 0x00E4, 0x00FF,\n    0x011E, 0x0312, 0x031E, 0x0334, 0x0340, 0x033E, 0x0339, 0x0332,\n    0x0329, 0x0320, 0x0317, 0x030F, 0x0A30, 0x0DCD, 0x150B, 0x1A89,\n    0x1D0E, 0x1F12, 0x20B8, 0x2222, 0x2376, 0x24D4, 0x2662, 0x0000,\n    0xFFBE, 0xFF42, 0xFEF9, 0xFEF8, 0xFF06, 0xFF1F, 0xFF3F, 0xFF61,\n    0xFF82, 0xFF9E, 0xFCBE, 0xFCC9, 0xFCDD, 0xFCE9, 0xFCE9, 0xFCE7,\n    0xFCE2, 0xFCDD, 0xFCD8, 0xFCD3, 0xFCCE, 0x13EC, 0x1734, 0x1D64,\n    0x2100, 0x210D, 0x205C, 0x1F20, 0x1D8E, 0x1BD9, 0x1A35, 0x18D7,\n    0x4A68, 0x4E5F, 0x5970, 0x6A58, 0x7FD8, 0x98B1, 0xB39F, 0xCF61,\n    0xEAB9, 0x0465, 0x1B25,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_3E.inc.c",
    "content": "static const struct Animation anim_3E[] = {\n    1,\n    189,\n    0,\n    0,\n    0x9B,\n    ANIMINDEX_NUMPARTS(anim_3E_indices),\n    anim_3E_values,\n    anim_3E_indices,\n    0,\n};\n\n\nstatic const u16 anim_3E_indices[] = {\n    0x0001, 0x0000, 0x009B, 0x0001, 0x009B, 0x009C, 0x0001, 0x0000, 0x0001, 0x0137, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x009B, 0x15D6,\n    0x009B, 0x1405, 0x009B, 0x14A0, 0x009B, 0x153B,\n    0x009B, 0x1234, 0x009B, 0x12CF, 0x009B, 0x136A,\n    0x0001, 0x1230, 0x0001, 0x1231, 0x0001, 0x1232,\n    0x009B, 0x03A4, 0x009B, 0x043F, 0x009B, 0x04DA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x009B, 0x0309,\n    0x009B, 0x0138, 0x009B, 0x01D3, 0x009B, 0x026E,\n    0x0001, 0x122C, 0x0001, 0x122D, 0x0001, 0x122E,\n    0x009B, 0x07E1, 0x009B, 0x087C, 0x009B, 0x0917,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x009B, 0x0746,\n    0x009B, 0x0575, 0x009B, 0x0610, 0x009B, 0x06AB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x122F,\n    0x009B, 0x105B, 0x009B, 0x10F6, 0x009B, 0x1191,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x009B, 0x0FC0,\n    0x009B, 0x0DEF, 0x009B, 0x0E8A, 0x009B, 0x0F25,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x1233,\n    0x009B, 0x0C1E, 0x009B, 0x0CB9, 0x009B, 0x0D54,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x009B, 0x0B83,\n    0x009B, 0x09B2, 0x009B, 0x0A4D, 0x009B, 0x0AE8,\n};\n\nstatic const s16 anim_3E_values[] = {\n    0x0000, 0x003B, 0xFFF4, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6,\n    0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6,\n    0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6,\n    0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6,\n    0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6,\n    0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6,\n    0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6,\n    0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6,\n    0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6,\n    0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6,\n    0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6, 0xFFD6,\n    0xFFD7, 0xFFD7, 0xFFD7, 0xFFD8, 0xFFD8, 0xFFD9, 0xFFD9, 0xFFDA,\n    0xFFDA, 0xFFDB, 0xFFDC, 0xFFDC, 0xFFDD, 0xFFDE, 0xFFDF, 0xFFDF,\n    0xFFE0, 0xFFE1, 0xFFE2, 0xFFE3, 0xFFE4, 0xFFE5, 0xFFE6, 0xFFE7,\n    0xFFE8, 0xFFEA, 0xFFEB, 0xFFED, 0xFFEF, 0xFFF0, 0xFFF2, 0xFFF4,\n    0xFFF5, 0xFFF7, 0xFFF9, 0xFFFA, 0xFFFC, 0xFFFD, 0xFFFF, 0x0000,\n    0x0001, 0x0052, 0x00D6, 0x011F, 0x0121, 0x0119, 0x0107, 0x00E9,\n    0x00BE, 0x0085, 0x003D, 0x0055, 0x0067, 0x0072, 0x0078, 0x0078,\n    0x0073, 0x0068, 0x0055, 0x003A, 0x0049, 0x004E, 0x0049, 0x0037,\n    0x0035, 0x0035, 0x0035, 0x0034, 0x0019, 0x0019, 0x0019, 0x0019,\n    0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019,\n    0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019,\n    0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019,\n    0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019,\n    0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019,\n    0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019,\n    0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019,\n    0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019,\n    0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019,\n    0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019,\n    0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019,\n    0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019,\n    0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019,\n    0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019,\n    0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019,\n    0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0019, 0x0018,\n    0x0017, 0x0015, 0x0014, 0x0013, 0x0011, 0x0010, 0x000E, 0x000C,\n    0x000B, 0x0009, 0x0008, 0x0006, 0x0005, 0x0004, 0x0002, 0x0001,\n    0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, 0x3FFF,\n    0xFF8A, 0xFF8A, 0x007C, 0x019F, 0x02D4, 0x03FD, 0x04FE, 0x05B8,\n    0x060E, 0x0607, 0x05C4, 0x0554, 0x04C1, 0x0419, 0x0368, 0x02BA,\n    0x021D, 0x019C, 0x0144, 0x0105, 0x00C8, 0x008B, 0x0050, 0x0016,\n    0xFFDF, 0xFFA8, 0xFF72, 0xFF3D, 0xFF0A, 0xFED8, 0xFEA8, 0xFE79,\n    0xFE4C, 0xFE20, 0xFDF6, 0xFDCD, 0xFDA6, 0xFD81, 0xFD5D, 0xFD3B,\n    0xFD1A, 0xFCFB, 0xFCDF, 0xFCC3, 0xFCAA, 0xFC92, 0xFC7D, 0xFC69,\n    0xFC53, 0xFC36, 0xFC14, 0xFBED, 0xFBC1, 0xFB92, 0xFB60, 0xFB2B,\n    0xFAF5, 0xFABD, 0xFA85, 0xFA4D, 0xFA16, 0xF9E0, 0xF9AC, 0xF97B,\n    0xF94E, 0xF924, 0xF900, 0xF8E0, 0xF8C7, 0xF8B4, 0xF8A8, 0xF8A4,\n    0xF8A9, 0xF8B7, 0xF8CF, 0xF8F2, 0xF91F, 0xF958, 0xF99E, 0xF9F1,\n    0xFA51, 0xFAC0, 0xFB3E, 0xFBCB, 0xFC69, 0xFEA1, 0x0343, 0x093C,\n    0x0F75, 0x14D8, 0x184F, 0x19D2, 0x1A47, 0x1A03, 0x195B, 0x18A2,\n    0x182C, 0x184F, 0x18EB, 0x19A5, 0x1A78, 0x1B5E, 0x1C52, 0x1D4E,\n    0x1E4C, 0x1F48, 0x203B, 0x211F, 0x21F1, 0x22A9, 0x2342, 0x23B8,\n    0x2418, 0x2476, 0x24D0, 0x2522, 0x256B, 0x25A8, 0x25D8, 0x25F8,\n    0x2606, 0x2600, 0x25E4, 0x25AE, 0x255E, 0x24F1, 0x2465, 0x23B8,\n    0x2061, 0x1A64, 0x158A, 0x127E, 0x0F6F, 0x0C6D, 0x098C, 0x06DE,\n    0x0474, 0x0261, 0x00B8, 0xFF8A, 0xFEBE, 0xFE2A, 0xFDC8, 0xFD92,\n    0xFD81, 0xFD90, 0xFDB7, 0xFDF2, 0xFE39, 0xFE86, 0xFED3, 0xFF1A,\n    0xFF54, 0xFF7C, 0xFF8A, 0xF980, 0xF980, 0xF9AA, 0xFA0C, 0xFA7C,\n    0xFAD0, 0xFADE, 0xFA7C, 0xF980, 0xF7D8, 0xF5A8, 0xF316, 0xF046,\n    0xED60, 0xEA8A, 0xE7E8, 0xE5A0, 0xE3D9, 0xE2B9, 0xE200, 0xE157,\n    0xE0BD, 0xE031, 0xDFB2, 0xDF40, 0xDEDA, 0xDE80, 0xDE2F, 0xDDE9,\n    0xDDAB, 0xDD76, 0xDD49, 0xDD22, 0xDD01, 0xDCE6, 0xDCD0, 0xDCBD,\n    0xDCAE, 0xDCA1, 0xDC96, 0xDC8C, 0xDC82, 0xDC78, 0xDC6C, 0xDC5F,\n    0xDC4F, 0xDC3C, 0xDC25, 0xDC0D, 0xDBF8, 0xDBE6, 0xDBD7, 0xDBCA,\n    0xDBC0, 0xDBB9, 0xDBB3, 0xDBB0, 0xDBAE, 0xDBAE, 0xDBB0, 0xDBB3,\n    0xDBB7, 0xDBBD, 0xDBC3, 0xDBCB, 0xDBD3, 0xDBDB, 0xDBE4, 0xDBED,\n    0xDBF7, 0xDC00, 0xDC09, 0xDC11, 0xDC19, 0xDC21, 0xDC27, 0xDC2D,\n    0xDC31, 0xDC35, 0xDC36, 0xDC37, 0xDC35, 0xDC32, 0xDC2C, 0xDC25,\n    0xDC07, 0xDBC9, 0xDB79, 0xDB25, 0xDADD, 0xDAAE, 0xDA99, 0xDA91,\n    0xDA92, 0xDA99, 0xDAA2, 0xDAAB, 0xDAAE, 0xDAAE, 0xDAAE, 0xDAAE,\n    0xDAAE, 0xDAAE, 0xDAAE, 0xDAAE, 0xDAAE, 0xDAAE, 0xDAAE, 0xDAAE,\n    0xDAAE, 0xDAAE, 0xDAAE, 0xDAA2, 0xDA80, 0xDA4F, 0xDA12, 0xD9CE,\n    0xD989, 0xD947, 0xD90D, 0xD8E0, 0xD8C5, 0xD8C1, 0xD8D9, 0xD911,\n    0xD96F, 0xD9F7, 0xDAAE, 0xDE7C, 0xE52F, 0xEA28, 0xECA6, 0xEEFB,\n    0xF122, 0xF318, 0xF4D9, 0xF662, 0xF7AD, 0xF8B9, 0xF980, 0xFA0E,\n    0xFA76, 0xFABA, 0xFAE0, 0xFAEB, 0xFAE1, 0xFAC6, 0xFA9D, 0xFA6B,\n    0xFA36, 0xFA00, 0xF9CE, 0xF9A6, 0xF98A, 0xF980, 0xF06F, 0xF06F,\n    0xF073, 0xF07D, 0xF088, 0xF090, 0xF092, 0xF088, 0xF06F, 0xF04C,\n    0xF028, 0xF000, 0xEFD3, 0xEFA1, 0xEF69, 0xEF28, 0xEEDF, 0xEE8B,\n    0xEE2C, 0xEDC4, 0xED56, 0xECE3, 0xEC6A, 0xEBEE, 0xEB6E, 0xEAEA,\n    0xEA64, 0xE9DD, 0xE953, 0xE8C9, 0xE83F, 0xE7B5, 0xE72C, 0xE6A4,\n    0xE61E, 0xE59B, 0xE51B, 0xE49F, 0xE427, 0xE3B4, 0xE346, 0xE2DF,\n    0xE27E, 0xE224, 0xE1D1, 0xE187, 0xE146, 0xE10E, 0xE0E0, 0xE0BC,\n    0xE0A1, 0xE08D, 0xE082, 0xE07E, 0xE080, 0xE088, 0xE096, 0xE0A8,\n    0xE0BE, 0xE0D8, 0xE0F5, 0xE114, 0xE135, 0xE158, 0xE17A, 0xE19D,\n    0xE1BF, 0xE1E0, 0xE1FF, 0xE21B, 0xE235, 0xE24B, 0xE25D, 0xE269,\n    0xE271, 0xE272, 0xE26D, 0xE261, 0xE24D, 0xE230, 0xE20B, 0xE1DB,\n    0xE1A2, 0xE15E, 0xE10E, 0xDFEA, 0xDD88, 0xDA75, 0xD742, 0xD47D,\n    0xD2B5, 0xD1E5, 0xD195, 0xD1A0, 0xD1E5, 0xD242, 0xD292, 0xD2B5,\n    0xD2B5, 0xD2B5, 0xD2B5, 0xD2B5, 0xD2B5, 0xD2B5, 0xD2B5, 0xD2B5,\n    0xD2B5, 0xD2B5, 0xD2B5, 0xD2B5, 0xD2B5, 0xD2B5, 0xD2AF, 0xD29E,\n    0xD285, 0xD267, 0xD245, 0xD223, 0xD202, 0xD1E5, 0xD1CE, 0xD1C1,\n    0xD1BF, 0xD1CB, 0xD1E7, 0xD216, 0xD259, 0xD2B5, 0xD457, 0xD76B,\n    0xDA6E, 0xDD0D, 0xDFE3, 0xE2D4, 0xE5C2, 0xE893, 0xEB29, 0xED67,\n    0xEF33, 0xF06F, 0xF13C, 0xF1D0, 0xF232, 0xF268, 0xF279, 0xF26A,\n    0xF242, 0xF208, 0xF1C1, 0xF174, 0xF127, 0xF0E0, 0xF0A5, 0xF07E,\n    0xF06F, 0xBED0, 0xDC8E, 0xD80F, 0xCD6F, 0xC77E, 0xCB20, 0xD2EE,\n    0xDA49, 0xDC8E, 0xD9E5, 0xD5C9, 0xD09C, 0xCABD, 0xC48E, 0xBE6F,\n    0xB8C0, 0xB3E2, 0xB036, 0xAE1C, 0xAD00, 0xAC0C, 0xAB3D, 0xAA92,\n    0xAA08, 0xA99D, 0xA950, 0xA91D, 0xA903, 0xA8FF, 0xA910, 0xA933,\n    0xA966, 0xA9A6, 0xA9F2, 0xAA48, 0xAAA5, 0xAB07, 0xAB6B, 0xABD1,\n    0xAC35, 0xAC95, 0xACF0, 0xAD43, 0xAD8B, 0xADC7, 0xADF5, 0xAE12,\n    0xAE1C, 0xAE1C, 0xAE1C, 0xAE1C, 0xAE1C, 0xAE1C, 0xAE1C, 0xAE1C,\n    0xAE1C, 0xAE1C, 0xAE1C, 0xAE1C, 0xAE1C, 0xAE1C, 0xAE1C, 0xAE1C,\n    0xAE1C, 0xAE1C, 0xAE1C, 0xAE1C, 0xAE1C, 0xAE1C, 0xAE1C, 0xAE1C,\n    0xAE1C, 0xAE1C, 0xAE1C, 0xAE1C, 0xAE1C, 0xAE1C, 0xAE1C, 0xAE1C,\n    0xAE1C, 0xAE1C, 0xAE1C, 0xAE1C, 0xAE1C, 0xAE1C, 0xAE1C, 0xAE1C,\n    0xAE1C, 0xAE1C, 0xAE1C, 0xAE1C, 0xAE1C, 0xAE1C, 0xAE1C, 0xAE1C,\n    0xAE1C, 0xAE1C, 0xAE1C, 0xAE11, 0xADF2, 0xADC4, 0xAD8E, 0xAD55,\n    0xAD1D, 0xACEC, 0xACC8, 0xACB5, 0xACB9, 0xACDA, 0xAD1D, 0xAD86,\n    0xAE1C, 0xAEBB, 0xAF43, 0xAFBD, 0xB033, 0xB0AF, 0xB13B, 0xB1E1,\n    0xB2AA, 0xB3A0, 0xB4CC, 0xB63A, 0xB7F1, 0xB9FD, 0xBC67, 0xBF38,\n    0xC27B, 0xD00A, 0xE57F, 0xF085, 0xEEC7, 0xEA98, 0xE49B, 0xDD76,\n    0xD5CC, 0xCE42, 0xC77D, 0xC220, 0xBED0, 0xBD03, 0xBBB4, 0xBAD6,\n    0xBA5C, 0xBA36, 0xBA57, 0xBAB1, 0xBB35, 0xBBD5, 0xBC83, 0xBD32,\n    0xBDD2, 0xBE56, 0xBEAF, 0xBED0, 0xC400, 0x9C31, 0x9D5A, 0xA15B,\n    0xA744, 0xAE29, 0xB51C, 0xBB2E, 0xBF71, 0xC256, 0xC4ED, 0xC738,\n    0xC93B, 0xCAF9, 0xCC75, 0xCDB2, 0xCEB4, 0xCF7E, 0xD012, 0xD085,\n    0xD0EC, 0xD146, 0xD195, 0xD1D9, 0xD212, 0xD241, 0xD268, 0xD286,\n    0xD29C, 0xD2AC, 0xD2B5, 0xD2B9, 0xD2B7, 0xD2B2, 0xD2A8, 0xD29C,\n    0xD28E, 0xD27E, 0xD26D, 0xD25B, 0xD24B, 0xD23B, 0xD22D, 0xD222,\n    0xD219, 0xD215, 0xD215, 0xD21A, 0xD21F, 0xD21F, 0xD21B, 0xD213,\n    0xD207, 0xD1F7, 0xD1E5, 0xD1D0, 0xD1B9, 0xD1A0, 0xD186, 0xD16B,\n    0xD14F, 0xD133, 0xD118, 0xD0FD, 0xD0E3, 0xD0CA, 0xD0B4, 0xD09F,\n    0xD08D, 0xD07F, 0xD073, 0xD06C, 0xD068, 0xD069, 0xD070, 0xD07B,\n    0xD08D, 0xD0A5, 0xD0C3, 0xD0E8, 0xD115, 0xD149, 0xD186, 0xD1CB,\n    0xD21A, 0xD335, 0xD586, 0xD881, 0xDB9B, 0xDE4C, 0xE007, 0xE0C2,\n    0xE0EE, 0xE0BC, 0xE05B, 0xDFFD, 0xDFD1, 0xE007, 0xE084, 0xE10C,\n    0xE19F, 0xE23C, 0xE2E2, 0xE390, 0xE446, 0xE502, 0xE5C5, 0xE68D,\n    0xE759, 0xE829, 0xE8FC, 0xE9D2, 0xEA9B, 0xEB4B, 0xEBEB, 0xEC7F,\n    0xED0F, 0xEDA0, 0xEE3A, 0xEEE2, 0xEF9F, 0xF077, 0xF171, 0xF293,\n    0xF3E3, 0xF569, 0xF729, 0xF92B, 0x01B1, 0x0E6E, 0x1292, 0x0CB3,\n    0x046D, 0xFA7B, 0xEF92, 0xE46F, 0xD9C8, 0xD058, 0xC8D8, 0xC400,\n    0xC126, 0xBF15, 0xBDB6, 0xBCF5, 0xBCB9, 0xBCED, 0xBD7B, 0xBE4C,\n    0xBF49, 0xC05C, 0xC170, 0xC26D, 0xC33E, 0xC3CC, 0xC400, 0xD58C,\n    0xE7E7, 0xE7EC, 0xE67A, 0xE423, 0xE175, 0xDF01, 0xDD58, 0xDD08,\n    0xDDFD, 0xDFA5, 0xE1D4, 0xE45C, 0xE713, 0xE9CB, 0xEC59, 0xEE90,\n    0xF044, 0xF149, 0xF1DF, 0xF267, 0xF2E0, 0xF34C, 0xF3AB, 0xF3FE,\n    0xF446, 0xF483, 0xF4B7, 0xF4E1, 0xF503, 0xF51D, 0xF531, 0xF53F,\n    0xF547, 0xF54A, 0xF54A, 0xF547, 0xF541, 0xF53A, 0xF532, 0xF52A,\n    0xF523, 0xF51D, 0xF519, 0xF518, 0xF51B, 0xF522, 0xF52E, 0xF53C,\n    0xF548, 0xF552, 0xF559, 0xF55F, 0xF563, 0xF565, 0xF566, 0xF565,\n    0xF563, 0xF560, 0xF55C, 0xF558, 0xF552, 0xF54C, 0xF545, 0xF53E,\n    0xF537, 0xF530, 0xF529, 0xF522, 0xF51B, 0xF514, 0xF50F, 0xF509,\n    0xF505, 0xF502, 0xF4FF, 0xF4FE, 0xF4FE, 0xF500, 0xF503, 0xF508,\n    0xF50E, 0xF517, 0xF521, 0xF52E, 0xF55E, 0xF5C2, 0xF643, 0xF6C9,\n    0xF73E, 0xF788, 0xF7BF, 0xF7FE, 0xF834, 0xF853, 0xF84A, 0xF80C,\n    0xF788, 0xF6CC, 0xF5F2, 0xF4FF, 0xF3F8, 0xF2E1, 0xF1C0, 0xF099,\n    0xEF70, 0xEE4C, 0xED2F, 0xEC21, 0xEB24, 0xEA3E, 0xE973, 0xE8BB,\n    0xE808, 0xE75C, 0xE6B6, 0xE617, 0xE580, 0xE4F1, 0xE46A, 0xE3EC,\n    0xE378, 0xE30D, 0xE2AD, 0xE258, 0xE20F, 0xE1D1, 0xE19F, 0xE2F8,\n    0xE575, 0xE63F, 0xE4F2, 0xE329, 0xE10A, 0xDEBA, 0xDC60, 0xDA22,\n    0xD826, 0xD692, 0xD58C, 0xD4F1, 0xD480, 0xD436, 0xD40D, 0xD400,\n    0xD40B, 0xD429, 0xD455, 0xD48B, 0xD4C6, 0xD500, 0xD536, 0xD563,\n    0xD581, 0xD58C, 0x1569, 0x2533, 0x2168, 0x1BCD, 0x152D, 0x0E55,\n    0x0812, 0x032F, 0x0079, 0xFFAF, 0xFFE3, 0x00E5, 0x0284, 0x048C,\n    0x06CD, 0x0915, 0x0B30, 0x0CEF, 0x0E1E, 0x0EF5, 0x0FCC, 0x10A2,\n    0x1177, 0x124B, 0x131E, 0x13EE, 0x14BD, 0x1588, 0x1651, 0x1716,\n    0x17D8, 0x1896, 0x194F, 0x1A04, 0x1AB3, 0x1B5E, 0x1C02, 0x1CA1,\n    0x1D39, 0x1DCA, 0x1E54, 0x1ED7, 0x1F52, 0x1FC5, 0x2030, 0x2091,\n    0x20EA, 0x2139, 0x2182, 0x21CA, 0x2210, 0x2255, 0x2297, 0x22D7,\n    0x2315, 0x234F, 0x2387, 0x23BB, 0x23EC, 0x2419, 0x2442, 0x2467,\n    0x2488, 0x24A4, 0x24BB, 0x24CD, 0x24DA, 0x24E1, 0x24E3, 0x24DF,\n    0x24D4, 0x24C3, 0x24AC, 0x248D, 0x2468, 0x243B, 0x2406, 0x23CA,\n    0x2386, 0x233A, 0x22E5, 0x2287, 0x2221, 0x21B2, 0x2139, 0x1F8B,\n    0x1C09, 0x1786, 0x12D1, 0x0EBF, 0x0C20, 0x0AF1, 0x0A80, 0x0A98,\n    0x0B02, 0x0B8B, 0x0BFC, 0x0C20, 0x0C18, 0x0C26, 0x0C42, 0x0C68,\n    0x0C90, 0x0CB4, 0x0CCF, 0x0CDA, 0x0CCF, 0x0CA8, 0x0C5F, 0x0BED,\n    0x0B4C, 0x0A77, 0x0989, 0x089F, 0x07B2, 0x06BC, 0x05B8, 0x049E,\n    0x0369, 0x0213, 0x0095, 0xFEEB, 0xFD0C, 0xFAF2, 0xF899, 0xF5FA,\n    0xF30E, 0xEFD0, 0xE3B3, 0xD160, 0xC9A1, 0xCE64, 0xD5E4, 0xDF59,\n    0xE9FB, 0xF502, 0xFFA5, 0x091C, 0x10A0, 0x1569, 0x1829, 0x1A27,\n    0x1B79, 0x1C34, 0x1C6D, 0x1C3B, 0x1BB2, 0x1AE9, 0x19F5, 0x18EB,\n    0x17E1, 0x16ED, 0x1624, 0x159B, 0x1569, 0x00AD, 0x00AD, 0x00A5,\n    0x0091, 0x007B, 0x006A, 0x0068, 0x007D, 0x00B2, 0x010E, 0x018B,\n    0x021F, 0x02C1, 0x0366, 0x0405, 0x0493, 0x0507, 0x0558, 0x057A,\n    0x0580, 0x057F, 0x0578, 0x056C, 0x055A, 0x0545, 0x052B, 0x050D,\n    0x04EC, 0x04C8, 0x04A1, 0x0478, 0x044D, 0x0421, 0x03F4, 0x03C7,\n    0x0399, 0x036B, 0x033F, 0x0313, 0x02E9, 0x02C0, 0x029A, 0x0277,\n    0x0256, 0x0239, 0x0220, 0x020C, 0x01FB, 0x01F8, 0x0207, 0x0227,\n    0x0258, 0x0296, 0x02E0, 0x0335, 0x0394, 0x03FA, 0x0467, 0x04D7,\n    0x054B, 0x05C0, 0x0634, 0x06A7, 0x0716, 0x0780, 0x07E3, 0x083E,\n    0x088F, 0x08D5, 0x090D, 0x0937, 0x0950, 0x0958, 0x094C, 0x092B,\n    0x08F4, 0x08A4, 0x083A, 0x07B5, 0x0712, 0x0652, 0x0570, 0x046D,\n    0x0347, 0x01FB, 0xFD4E, 0xF385, 0xE6EB, 0xD9CB, 0xCE6E, 0xC71D,\n    0xC3E8, 0xC2E5, 0xC368, 0xC4C2, 0xC647, 0xC749, 0xC71D, 0xC600,\n    0xC4AC, 0xC32B, 0xC187, 0xBFCA, 0xBDFF, 0xBC2E, 0xBA63, 0xB8A8,\n    0xB706, 0xB589, 0xB438, 0xB320, 0xB24A, 0xB15F, 0xB013, 0xAE81,\n    0xACC6, 0xAAFC, 0xA93F, 0xA7AB, 0xA65B, 0xA56A, 0xA4F4, 0xA515,\n    0xA5E8, 0xA788, 0xAA10, 0xAD9D, 0xB24A, 0xCCE5, 0xFA40, 0x167A,\n    0x1C67, 0x1F2A, 0x1F65, 0x1DB9, 0x1AC7, 0x1730, 0x1396, 0x109A,\n    0x0EDC, 0x0DE3, 0x0CCF, 0x0BA4, 0x0A6B, 0x092A, 0x07E8, 0x06AB,\n    0x057A, 0x045D, 0x0358, 0x0274, 0x01B7, 0x0128, 0x00CD, 0x00AD,\n    0xFCD0, 0xFCD0, 0xFE8D, 0x0073, 0x0271, 0x0474, 0x0668, 0x083A,\n    0x09D9, 0x0B5A, 0x0CDF, 0x0E61, 0x0FD7, 0x113B, 0x1287, 0x13B1,\n    0x14B5, 0x158A, 0x1629, 0x16A8, 0x1721, 0x1794, 0x1801, 0x1869,\n    0x18CC, 0x1929, 0x1982, 0x19D6, 0x1A25, 0x1A70, 0x1AB7, 0x1AFA,\n    0x1B39, 0x1B75, 0x1BAD, 0x1BE2, 0x1C14, 0x1C43, 0x1C6F, 0x1C99,\n    0x1CC1, 0x1CE7, 0x1D0B, 0x1D2D, 0x1D4E, 0x1D6D, 0x1D8C, 0x1DA9,\n    0x1DC1, 0x1DD0, 0x1DD5, 0x1DD3, 0x1DC9, 0x1DB8, 0x1DA1, 0x1D85,\n    0x1D64, 0x1D3F, 0x1D17, 0x1CEC, 0x1CC0, 0x1C92, 0x1C64, 0x1C37,\n    0x1C0A, 0x1BE0, 0x1BB7, 0x1B92, 0x1B71, 0x1B54, 0x1B3C, 0x1B2B,\n    0x1B20, 0x1B1C, 0x1B21, 0x1B2F, 0x1B46, 0x1B67, 0x1B93, 0x1BCB,\n    0x1C0F, 0x1C60, 0x1CBF, 0x1D2D, 0x1DA9, 0x1F6E, 0x2321, 0x27E4,\n    0x2CDA, 0x3126, 0x33EA, 0x352D, 0x35AE, 0x35A0, 0x3538, 0x34AA,\n    0x3429, 0x33EA, 0x33DC, 0x33CB, 0x33B8, 0x33A4, 0x338E, 0x3377,\n    0x3361, 0x334A, 0x3334, 0x3320, 0x330D, 0x32FD, 0x32EF, 0x32E4,\n    0x32E3, 0x32ED, 0x3302, 0x331E, 0x333E, 0x3360, 0x3382, 0x33A0,\n    0x33B9, 0x33C9, 0x33CE, 0x33C5, 0x33AC, 0x3380, 0x333E, 0x32E4,\n    0x3119, 0x2DE1, 0x2B46, 0x29C9, 0x2881, 0x275C, 0x2649, 0x2536,\n    0x2411, 0x22C8, 0x2149, 0x1F83, 0x1D62, 0x1AEB, 0x182F, 0x1542,\n    0x1236, 0x0F1D, 0x0C0A, 0x090E, 0x063D, 0x03A8, 0x0162, 0xFF7E,\n    0xFE0E, 0xFD23, 0xFCD0, 0xE4F6, 0xE4F6, 0xE509, 0xE52A, 0xE550,\n    0xE56F, 0xE57B, 0xE569, 0xE52F, 0xE4CD, 0xE452, 0xE3C3, 0xE325,\n    0xE27E, 0xE1D4, 0xE12C, 0xE08D, 0xDFFB, 0xDF7C, 0xDF07, 0xDE90,\n    0xDE17, 0xDD9D, 0xDD21, 0xDCA4, 0xDC27, 0xDBAA, 0xDB2D, 0xDAB0,\n    0xDA34, 0xD9BA, 0xD941, 0xD8CA, 0xD854, 0xD7E2, 0xD773, 0xD706,\n    0xD69E, 0xD639, 0xD5D8, 0xD57D, 0xD526, 0xD4D4, 0xD488, 0xD443,\n    0xD403, 0xD3CA, 0xD398, 0xD374, 0xD363, 0xD362, 0xD372, 0xD390,\n    0xD3BB, 0xD3F1, 0xD432, 0xD47B, 0xD4CC, 0xD522, 0xD57D, 0xD5DB,\n    0xD63A, 0xD69A, 0xD6F8, 0xD753, 0xD7AB, 0xD7FC, 0xD847, 0xD889,\n    0xD8C1, 0xD8EE, 0xD90E, 0xD91F, 0xD922, 0xD913, 0xD8F1, 0xD8BC,\n    0xD871, 0xD810, 0xD796, 0xD703, 0xD655, 0xD58A, 0xD4A1, 0xD398,\n    0xCFD9, 0xC805, 0xBDF1, 0xB371, 0xAA59, 0xA47F, 0xA1FC, 0xA14C,\n    0xA1D8, 0xA307, 0xA443, 0xA4F3, 0xA47F, 0xA320, 0xA17E, 0x9FA4,\n    0x9D9F, 0x9B7B, 0x9946, 0x970A, 0x94D5, 0x92B4, 0x90B2, 0x8EDC,\n    0x8D3E, 0x8BE5, 0x8ADE, 0x89C6, 0x884A, 0x8685, 0x8496, 0x829B,\n    0x80B2, 0x7EF4, 0x7D87, 0x7C84, 0x7C0A, 0x7C35, 0x7D24, 0x7EF5,\n    0x81C9, 0x85B6, 0x8ADE, 0xA832, 0xDA2F, 0xF93F, 0xFFA6, 0x0283,\n    0x028F, 0x0081, 0xFD12, 0xF8F6, 0xF4E5, 0xF198, 0xEFC5, 0xEEE5,\n    0xEDFA, 0xED06, 0xEC0E, 0xEB17, 0xEA24, 0xE939, 0xE85B, 0xE78D,\n    0xE6D3, 0xE633, 0xE5AE, 0xE54B, 0xE50C, 0xE4F6, 0xC626, 0xE2AB,\n    0xE54C, 0xE656, 0xE636, 0xE55B, 0xE432, 0xE328, 0xE2AB, 0xE2A4,\n    0xE2AE, 0xE2C0, 0xE2D3, 0xE2DE, 0xE2D8, 0xE2B9, 0xE279, 0xE20F,\n    0xE172, 0xE0B1, 0xDFE2, 0xDF04, 0xDE1A, 0xDD25, 0xDC26, 0xDB1F,\n    0xDA10, 0xD8FB, 0xD7E2, 0xD6C6, 0xD5A8, 0xD489, 0xD36B, 0xD250,\n    0xD137, 0xD024, 0xCF16, 0xCE10, 0xCD13, 0xCC1F, 0xCB37, 0xCA5C,\n    0xC98F, 0xC8D1, 0xC824, 0xC789, 0xC701, 0xC68E, 0xC629, 0xC5CB,\n    0xC572, 0xC521, 0xC4D5, 0xC490, 0xC450, 0xC417, 0xC3E4, 0xC3B6,\n    0xC38F, 0xC36D, 0xC351, 0xC33A, 0xC329, 0xC31E, 0xC317, 0xC316,\n    0xC31B, 0xC324, 0xC332, 0xC346, 0xC35E, 0xC37B, 0xC39D, 0xC3C4,\n    0xC3EF, 0xC41F, 0xC454, 0xC48C, 0xC4C9, 0xC50B, 0xC550, 0xC59A,\n    0xC5E7, 0xC639, 0xC68E, 0xC7B9, 0xCA29, 0xCD4C, 0xD092, 0xD366,\n    0xD539, 0xD60D, 0xD660, 0xD654, 0xD60D, 0xD5AF, 0xD55C, 0xD539,\n    0xD52F, 0xD515, 0xD4EF, 0xD4C2, 0xD491, 0xD462, 0xD439, 0xD41B,\n    0xD40B, 0xD40F, 0xD42B, 0xD462, 0xD4BB, 0xD539, 0xD5D1, 0xD677,\n    0xD72B, 0xD7ED, 0xD8BE, 0xD99F, 0xDA91, 0xDB93, 0xDCA7, 0xDDCD,\n    0xDF07, 0xE053, 0xE1B4, 0xE32A, 0xE4B5, 0xE656, 0xEB2D, 0xF229,\n    0xF500, 0xF31A, 0xF038, 0xEC9E, 0xE88D, 0xE44A, 0xE016, 0xDC35,\n    0xD8E8, 0xD672, 0xD489, 0xD2B8, 0xD100, 0xCF63, 0xCDE2, 0xCC7E,\n    0xCB39, 0xCA15, 0xC913, 0xC834, 0xC77B, 0xC6E8, 0xC67D, 0xC63C,\n    0xC626, 0x4BA5, 0x79A6, 0x0BF1, 0x26BA, 0x2725, 0x2AAE, 0x2BC2,\n    0x2B60, 0x2A8B, 0x299A, 0x284B, 0x26BA, 0x24FF, 0x2335, 0x2177,\n    0x1FDF, 0x1E88, 0x1D8B, 0x1D03, 0x1CC5, 0x1C94, 0x1C70, 0x1C58,\n    0x1C4B, 0x1C48, 0x1C4F, 0x1C5F, 0x1C76, 0x1C95, 0x1CBA, 0x1CE4,\n    0x1D13, 0x1D46, 0x1D7D, 0x1DB5, 0x1DF0, 0x1E2B, 0x1E66, 0x1EA0,\n    0x1ED9, 0x1F10, 0x1F43, 0x1F73, 0x1F9D, 0x1FC2, 0x1FE1, 0x1FF9,\n    0x2009, 0x2018, 0x202E, 0x204A, 0x206C, 0x2092, 0x20BD, 0x20EB,\n    0x211B, 0x214E, 0x2182, 0x21B8, 0x21ED, 0x2222, 0x2256, 0x2289,\n    0x22B9, 0x22E6, 0x230F, 0x2334, 0x2354, 0x236E, 0x2382, 0x2390,\n    0x2395, 0x2393, 0x2387, 0x2373, 0x2354, 0x232A, 0x22F5, 0x22B3,\n    0x2265, 0x220A, 0x21A0, 0x2128, 0x20A1, 0x2009, 0x1DE7, 0x1972,\n    0x13B4, 0x0DB9, 0x088B, 0x0536, 0x03CD, 0x0374, 0x03D1, 0x0488,\n    0x053D, 0x0596, 0x0536, 0x044B, 0x033F, 0x0218, 0x00DA, 0xFF8B,\n    0xFE2C, 0xFCC4, 0xFB56, 0xF9E8, 0xF87E, 0xF71B, 0xF5C6, 0xF481,\n    0xF352, 0xF236, 0xF125, 0xF01D, 0xEF1D, 0xEE23, 0xED2E, 0xEC3B,\n    0xEB4A, 0xEA59, 0xE965, 0xE86E, 0xE772, 0xE66E, 0xE562, 0xE44C,\n    0xE32A, 0xDFDF, 0xDC0C, 0xDD4F, 0xE3DF, 0xEBE9, 0xF4F8, 0xFE98,\n    0x0853, 0x11B5, 0x1A4A, 0x219D, 0x2738, 0x2BB1, 0x2FE6, 0x33D6,\n    0x3780, 0x3AE1, 0x3DF9, 0x40C5, 0x4343, 0x4572, 0x474F, 0x48DA,\n    0x4A10, 0x4AF0, 0x4B77, 0x4BA5, 0x1FD6, 0x2DB1, 0x397E, 0x3484,\n    0x2DDF, 0x2AD8, 0x2867, 0x26AF, 0x25CF, 0x2594, 0x25A5, 0x25EF,\n    0x2661, 0x26E7, 0x276F, 0x27E7, 0x283D, 0x285C, 0x2834, 0x27DC,\n    0x2779, 0x270C, 0x2696, 0x2617, 0x2590, 0x2503, 0x2470, 0x23D9,\n    0x233D, 0x229E, 0x21FD, 0x215B, 0x20B8, 0x2015, 0x1F74, 0x1ED5,\n    0x1E39, 0x1DA1, 0x1D0E, 0x1C80, 0x1BF9, 0x1B7A, 0x1B02, 0x1A94,\n    0x1A30, 0x19D7, 0x198A, 0x1949, 0x1912, 0x18DF, 0x18B1, 0x1888,\n    0x1863, 0x1842, 0x1825, 0x180C, 0x17F7, 0x17E6, 0x17D7, 0x17CD,\n    0x17C5, 0x17C1, 0x17BF, 0x17C0, 0x17C4, 0x17CA, 0x17D2, 0x17DD,\n    0x17E9, 0x17F8, 0x1808, 0x1819, 0x182D, 0x1841, 0x1856, 0x186D,\n    0x1884, 0x189C, 0x18B4, 0x18CD, 0x18E6, 0x18FF, 0x1918, 0x1931,\n    0x1949, 0x199C, 0x1A4A, 0x1B29, 0x1C11, 0x1CDA, 0x1D5C, 0x1D89,\n    0x1D81, 0x1D59, 0x1D2B, 0x1D0C, 0x1D15, 0x1D5C, 0x1DDE, 0x1E84,\n    0x1F46, 0x201C, 0x20FF, 0x21E8, 0x22CE, 0x23AB, 0x2476, 0x2529,\n    0x25BA, 0x2624, 0x265E, 0x2661, 0x2638, 0x25F4, 0x2595, 0x251E,\n    0x2490, 0x23ED, 0x2335, 0x226B, 0x2190, 0x20A6, 0x1FAD, 0x1EA7,\n    0x1D96, 0x1C7C, 0x1B59, 0x1A30, 0x169D, 0x1194, 0x1015, 0x12B3,\n    0x166B, 0x1AE4, 0x1FC2, 0x24A9, 0x293D, 0x2D24, 0x3002, 0x317B,\n    0x31D3, 0x319C, 0x30E7, 0x2FCC, 0x2E5D, 0x2CB0, 0x2AD8, 0x28EB,\n    0x26FD, 0x2523, 0x2371, 0x21FC, 0x20D8, 0x201A, 0x1FD6, 0x340F,\n    0x305F, 0xC819, 0xE5AB, 0xE911, 0xF1AD, 0xF8AB, 0xFD72, 0xFF69,\n    0xFF2E, 0xFDF1, 0xFBF2, 0xF972, 0xF6B3, 0xF3F4, 0xF178, 0xEF7F,\n    0xEE4A, 0xEE1A, 0xEE94, 0xEF32, 0xEFEF, 0xF0CA, 0xF1C1, 0xF2D0,\n    0xF3F6, 0xF52F, 0xF679, 0xF7D2, 0xF938, 0xFAA7, 0xFC1D, 0xFD97,\n    0xFF14, 0x0090, 0x0209, 0x037D, 0x04E9, 0x064B, 0x079F, 0x08E4,\n    0x0A17, 0x0B36, 0x0C3D, 0x0D2B, 0x0DFD, 0x0EB0, 0x0F42, 0x0FBF,\n    0x1036, 0x10A5, 0x110E, 0x116F, 0x11CA, 0x121E, 0x126B, 0x12B1,\n    0x12F1, 0x1329, 0x135A, 0x1385, 0x13A8, 0x13C4, 0x13DA, 0x13E8,\n    0x13F0, 0x13F0, 0x13EA, 0x13DC, 0x13C8, 0x13AC, 0x138A, 0x1360,\n    0x132F, 0x12F7, 0x12B8, 0x1272, 0x1225, 0x11D1, 0x1176, 0x1113,\n    0x10AA, 0x1039, 0x0FC1, 0x0F42, 0x0D83, 0x09DE, 0x052C, 0x0048,\n    0xFC0D, 0xF954, 0xF81C, 0xF7AE, 0xF7CE, 0xF843, 0xF8D2, 0xF941,\n    0xF954, 0xF92C, 0xF910, 0xF8FA, 0xF8E8, 0xF8D5, 0xF8BD, 0xF89D,\n    0xF870, 0xF834, 0xF7E3, 0xF77A, 0xF6F6, 0xF651, 0xF589, 0xF4A4,\n    0xF3AC, 0xF2A1, 0xF184, 0xF056, 0xEF17, 0xEDC8, 0xEC6A, 0xEAFD,\n    0xE983, 0xE7FB, 0xE667, 0xE4C7, 0xE31C, 0xE166, 0xDFA7, 0xDABA,\n    0xD463, 0xD3FF, 0xDA0D, 0xE1CE, 0xEABC, 0xF454, 0xFE10, 0x076C,\n    0x0FE4, 0x16F4, 0x1C18, 0x1FE2, 0x2345, 0x2645, 0x28E8, 0x2B33,\n    0x2D2C, 0x2ED9, 0x303F, 0x3163, 0x324B, 0x32FC, 0x337C, 0x33D1,\n    0x3400, 0x340F, 0x001B, 0x001B, 0x001C, 0x001C, 0x001C, 0x001C,\n    0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C,\n    0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C,\n    0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C,\n    0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C,\n    0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C,\n    0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C,\n    0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C,\n    0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C,\n    0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C,\n    0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C,\n    0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C,\n    0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C,\n    0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C,\n    0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C,\n    0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C,\n    0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C, 0x001C,\n    0x001C, 0x001C, 0x001C, 0x001B, 0x001B, 0x001B, 0x001B, 0x001B,\n    0x001B, 0x001B, 0x001B, 0x001B, 0x001B, 0x001B, 0x001B, 0x001B,\n    0x001B, 0x001B, 0x001B, 0x001B, 0x001B, 0x025B, 0x02C8, 0x03E9,\n    0x0582, 0x0758, 0x0932, 0x0AD5, 0x0C06, 0x0C8B, 0x0CA5, 0x0CBE,\n    0x0CD6, 0x0CED, 0x0D03, 0x0D17, 0x0D2B, 0x0D3D, 0x0D4E, 0x0D5F,\n    0x0D6E, 0x0D7C, 0x0D8A, 0x0D96, 0x0DA2, 0x0DAC, 0x0DB6, 0x0DBF,\n    0x0DC7, 0x0DCE, 0x0DD4, 0x0DDA, 0x0DDF, 0x0DE3, 0x0DE6, 0x0DE9,\n    0x0DEB, 0x0DEC, 0x0DED, 0x0DED, 0x0DED, 0x0DEC, 0x0DEA, 0x0DE8,\n    0x0DE5, 0x0DE2, 0x0DDE, 0x0DDA, 0x0DD6, 0x0DD1, 0x0DCB, 0x0DC6,\n    0x0DC0, 0x0DB9, 0x0DB3, 0x0DAC, 0x0DA4, 0x0D9D, 0x0D95, 0x0D8D,\n    0x0D85, 0x0D7C, 0x0D74, 0x0D6B, 0x0D63, 0x0D5A, 0x0D51, 0x0D48,\n    0x0D3F, 0x0D36, 0x0D2D, 0x0D24, 0x0D1B, 0x0D13, 0x0D0A, 0x0D01,\n    0x0CF9, 0x0CF1, 0x0CE9, 0x0CE1, 0x0CD9, 0x0CD1, 0x0CCA, 0x0CC3,\n    0x0CBD, 0x0CB6, 0x0CB1, 0x0CAB, 0x0CA6, 0x0CA1, 0x0C9C, 0x0C99,\n    0x0C95, 0x0C92, 0x0C90, 0x0C8E, 0x0C8C, 0x0C8B, 0x0C8B, 0x0C8B,\n    0x0C8B, 0x0C8B, 0x0C8B, 0x0C8B, 0x0C8B, 0x0C8B, 0x0C8B, 0x0C8B,\n    0x0C8B, 0x0C8B, 0x0C8B, 0x0C8B, 0x0C8B, 0x0C90, 0x0C9F, 0x0CB5,\n    0x0CD1, 0x0CEF, 0x0D0E, 0x0D2B, 0x0D45, 0x0D59, 0x0D65, 0x0D67,\n    0x0D5C, 0x0D43, 0x0D19, 0x0CDD, 0x0C8B, 0x0C11, 0x0B63, 0x0A8D,\n    0x0997, 0x088D, 0x0778, 0x0663, 0x0558, 0x0461, 0x0389, 0x02D9,\n    0x025B, 0x0207, 0x01CA, 0x01A2, 0x018C, 0x0185, 0x018B, 0x019B,\n    0x01B3, 0x01D0, 0x01F0, 0x0210, 0x022D, 0x0245, 0x0255, 0x025B,\n    0xCB25, 0xCB26, 0xCB26, 0xCB27, 0xCB29, 0xCB2A, 0xCB2B, 0xCB2C,\n    0xCB2C, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D,\n    0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D,\n    0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D,\n    0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D,\n    0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D,\n    0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D,\n    0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D,\n    0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D,\n    0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D,\n    0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D,\n    0xCB2D, 0xCB2D, 0xCB2D, 0xCB2C, 0xCB2C, 0xCB2C, 0xCB2C, 0xCB2C,\n    0xCB2C, 0xCB2C, 0xCB2C, 0xCB2C, 0xCB2C, 0xCB2C, 0xCB2C, 0xCB2C,\n    0xCB2C, 0xCB2C, 0xCB2C, 0xCB2C, 0xCB2C, 0xCB2C, 0xCB2C, 0xCB2C,\n    0xCB2C, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D,\n    0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2D, 0xCB2C,\n    0xCB2C, 0xCB2C, 0xCB2B, 0xCB2A, 0xCB2A, 0xCB29, 0xCB28, 0xCB27,\n    0xCB27, 0xCB26, 0xCB26, 0xCB25, 0xCB25, 0xCB25, 0xCB25, 0xCB25,\n    0xCB25, 0xCB25, 0xCB25, 0xCB25, 0xCB25, 0xCB25, 0xCB25, 0xCB25,\n    0xCB25, 0xCB25, 0xCB25, 0x385D, 0x0F9F, 0x0E2D, 0x0F7A, 0x129F,\n    0x16B1, 0x1AC7, 0x1DFA, 0x1F5F, 0x1F8E, 0x1FBA, 0x1FE3, 0x2009,\n    0x202C, 0x204C, 0x206A, 0x2085, 0x209E, 0x20B4, 0x20C8, 0x20DA,\n    0x20E9, 0x20F6, 0x2101, 0x210A, 0x2111, 0x2116, 0x2119, 0x211A,\n    0x211A, 0x2118, 0x2115, 0x2110, 0x210A, 0x2103, 0x20FA, 0x20F0,\n    0x20E5, 0x20DA, 0x20CD, 0x20BF, 0x20B1, 0x20A1, 0x2091, 0x2081,\n    0x2070, 0x205F, 0x204D, 0x203B, 0x2029, 0x2016, 0x2004, 0x1FF2,\n    0x1FDF, 0x1FCD, 0x1FBB, 0x1FAA, 0x1F98, 0x1F88, 0x1F77, 0x1F68,\n    0x1F59, 0x1F4A, 0x1F3D, 0x1F30, 0x1F25, 0x1F1A, 0x1F11, 0x1F08,\n    0x1F01, 0x1EFB, 0x1EF7, 0x1EF4, 0x1EF3, 0x1EF3, 0x1EF5, 0x1EF9,\n    0x1EFE, 0x1F06, 0x1F0F, 0x1F1B, 0x1F28, 0x1F38, 0x1F4A, 0x1F5F,\n    0x1FDE, 0x2101, 0x227F, 0x2410, 0x256D, 0x264C, 0x26A8, 0x26BD,\n    0x26A2, 0x2671, 0x2642, 0x262D, 0x264C, 0x2690, 0x26DB, 0x272B,\n    0x2782, 0x27DD, 0x283C, 0x28A0, 0x2907, 0x2971, 0x29DD, 0x2A4A,\n    0x2AB9, 0x2B28, 0x2B98, 0x2C09, 0x2C7E, 0x2CF6, 0x2D70, 0x2DED,\n    0x2E6B, 0x2EEB, 0x2F6C, 0x2FEC, 0x306D, 0x30ED, 0x316C, 0x31EA,\n    0x3266, 0x32DF, 0x3355, 0x33CD, 0x344A, 0x34C9, 0x3548, 0x35C6,\n    0x3641, 0x36B5, 0x3722, 0x3785, 0x37DC, 0x3824, 0x385D, 0x3886,\n    0x38A4, 0x38B8, 0x38C3, 0x38C7, 0x38C4, 0x38BC, 0x38B0, 0x38A1,\n    0x3892, 0x3882, 0x3874, 0x3868, 0x3860, 0x385D, 0xF7EF, 0xF7EF,\n    0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF,\n    0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF,\n    0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF,\n    0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF,\n    0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF,\n    0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF,\n    0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF,\n    0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF,\n    0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF,\n    0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF,\n    0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF,\n    0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF,\n    0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF,\n    0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7EF, 0xF7E6, 0xF7CE,\n    0xF7AA, 0xF77E, 0xF74E, 0xF71C, 0xF6EC, 0xF6C3, 0xF6A3, 0xF68F,\n    0xF68C, 0xF69D, 0xF6C6, 0xF709, 0xF76B, 0xF7EF, 0xFB14, 0x004D,\n    0x030E, 0x02B8, 0x01D0, 0x007B, 0xFEE1, 0xFD25, 0xFB6F, 0xF9E6,\n    0xF8AE, 0xF7EF, 0xF787, 0xF73C, 0xF70B, 0xF6EF, 0xF6E7, 0xF6EE,\n    0xF702, 0xF720, 0xF744, 0xF76B, 0xF792, 0xF7B6, 0xF7D3, 0xF7E7,\n    0xF7EF, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6,\n    0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6,\n    0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6,\n    0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6,\n    0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6,\n    0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6,\n    0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6,\n    0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6,\n    0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6,\n    0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6,\n    0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6,\n    0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6,\n    0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6,\n    0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6, 0x07D6,\n    0x07D6, 0x07D3, 0x07CD, 0x07C3, 0x07B8, 0x07AB, 0x079E, 0x0791,\n    0x0786, 0x077D, 0x0778, 0x0777, 0x077C, 0x0787, 0x0799, 0x07B3,\n    0x07D6, 0x08AC, 0x0A10, 0x0ACC, 0x0AB5, 0x0A77, 0x0A1C, 0x09AF,\n    0x0939, 0x08C4, 0x085C, 0x0809, 0x07D6, 0x07BA, 0x07A6, 0x0799,\n    0x0792, 0x0790, 0x0791, 0x0797, 0x079F, 0x07A8, 0x07B3, 0x07BD,\n    0x07C7, 0x07CE, 0x07D4, 0x07D6, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB,\n    0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB,\n    0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB,\n    0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB,\n    0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB,\n    0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB,\n    0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB,\n    0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB,\n    0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB,\n    0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB,\n    0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB,\n    0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB,\n    0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB,\n    0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB,\n    0x7ACB, 0x7ACB, 0x7ACB, 0x7ACB, 0x7AA8, 0x7A48, 0x79BA, 0x790B,\n    0x7849, 0x7782, 0x76C5, 0x761F, 0x759F, 0x7552, 0x7546, 0x758A,\n    0x762B, 0x7738, 0x78BE, 0x7ACB, 0x8759, 0x9C32, 0xA72E, 0xA5D7,\n    0xA238, 0x9CE9, 0x9680, 0x8F98, 0x88C6, 0x82A4, 0x7DC7, 0x7ACB,\n    0x792F, 0x7804, 0x773E, 0x76D1, 0x76AF, 0x76CD, 0x771D, 0x7792,\n    0x7821, 0x78BD, 0x7959, 0x79E8, 0x7A5E, 0x7AAE, 0x7ACB, 0x0095,\n    0x0095, 0x0096, 0x0097, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D,\n    0x009D, 0x009D, 0x009D, 0x009D, 0x009E, 0x009E, 0x009F, 0x009F,\n    0x009F, 0x00A0, 0x00A1, 0x00A1, 0x00A2, 0x00A2, 0x00A3, 0x00A4,\n    0x00A5, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x00A9, 0x00AA,\n    0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF, 0x00B0, 0x00B0, 0x00B1,\n    0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B6, 0x00B7, 0x00B8,\n    0x00B9, 0x00B9, 0x00BA, 0x00BB, 0x00BB, 0x00BC, 0x00BD, 0x00BD,\n    0x00BE, 0x00BE, 0x00BF, 0x00BF, 0x00BF, 0x00C0, 0x00C0, 0x00C0,\n    0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00C0, 0x00BF,\n    0x00BF, 0x00BF, 0x00BE, 0x00BE, 0x00BD, 0x00BC, 0x00BB, 0x00BA,\n    0x00B9, 0x00B8, 0x00B7, 0x00B6, 0x00B5, 0x00B3, 0x00B2, 0x00B0,\n    0x00AE, 0x00AD, 0x00AB, 0x00A9, 0x00A6, 0x00A4, 0x00A2, 0x009F,\n    0x009D, 0x009B, 0x0099, 0x0098, 0x0097, 0x0095, 0x0092, 0x008F,\n    0x0089, 0x0082, 0x0079, 0x006D, 0x005D, 0x004B, 0x0034, 0x001A,\n    0xFFFB, 0xFFD7, 0xFFAE, 0xFF7F, 0xFF07, 0xFE30, 0xFD38, 0xFC62,\n    0xFBEC, 0xFBDF, 0xFC0B, 0xFC5B, 0xFCBF, 0xFD24, 0xFD75, 0xFDBB,\n    0xFE05, 0xFE52, 0xFEA1, 0xFEEF, 0xFF3D, 0xFF87, 0xFFCD, 0x000B,\n    0x0043, 0x0071, 0x0095, 0x00AF, 0x00C2, 0x00CE, 0x00D5, 0x00D7,\n    0x00D5, 0x00D0, 0x00C9, 0x00C0, 0x00B6, 0x00AC, 0x00A3, 0x009C,\n    0x0097, 0x0095, 0xFF09, 0xFE8A, 0xFD3C, 0xFB62, 0xF940, 0xF71A,\n    0xF534, 0xF3D2, 0xF338, 0xF31A, 0xF2FD, 0xF2E1, 0xF2C7, 0xF2AE,\n    0xF296, 0xF280, 0xF26B, 0xF257, 0xF244, 0xF232, 0xF222, 0xF213,\n    0xF205, 0xF1F8, 0xF1EC, 0xF1E1, 0xF1D7, 0xF1CE, 0xF1C6, 0xF1BF,\n    0xF1B8, 0xF1B3, 0xF1AF, 0xF1AB, 0xF1A8, 0xF1A6, 0xF1A5, 0xF1A5,\n    0xF1A5, 0xF1A6, 0xF1A8, 0xF1AA, 0xF1AD, 0xF1B0, 0xF1B4, 0xF1B9,\n    0xF1BE, 0xF1C4, 0xF1CA, 0xF1D0, 0xF1D7, 0xF1DF, 0xF1E6, 0xF1EE,\n    0xF1F7, 0xF1FF, 0xF208, 0xF212, 0xF21B, 0xF225, 0xF22F, 0xF239,\n    0xF243, 0xF24D, 0xF257, 0xF262, 0xF26C, 0xF276, 0xF281, 0xF28B,\n    0xF295, 0xF2A0, 0xF2AA, 0xF2B4, 0xF2BD, 0xF2C7, 0xF2D0, 0xF2D9,\n    0xF2E2, 0xF2EB, 0xF2F3, 0xF2FB, 0xF303, 0xF30A, 0xF311, 0xF317,\n    0xF31D, 0xF322, 0xF327, 0xF32C, 0xF32F, 0xF333, 0xF335, 0xF337,\n    0xF339, 0xF339, 0xF339, 0xF338, 0xF337, 0xF334, 0xF32F, 0xF32A,\n    0xF324, 0xF31D, 0xF315, 0xF30D, 0xF305, 0xF2FC, 0xF2F3, 0xF2EB,\n    0xF2E3, 0xF2DB, 0xF2D3, 0xF2CD, 0xF2C7, 0xF2C2, 0xF2BE, 0xF2BE,\n    0xF2C3, 0xF2CD, 0xF2DA, 0xF2EA, 0xF2E8, 0xF2D0, 0xF2BA, 0xF2BE,\n    0xF2F4, 0xF374, 0xF437, 0xF521, 0xF628, 0xF746, 0xF86F, 0xF99C,\n    0xFAC4, 0xFBDE, 0xFCE1, 0xFDC5, 0xFE7F, 0xFF09, 0xFF69, 0xFFAE,\n    0xFFDC, 0xFFF5, 0xFFFD, 0xFFF6, 0xFFE4, 0xFFC8, 0xFFA7, 0xFF83,\n    0xFF5F, 0xFF3E, 0xFF22, 0xFF10, 0xFF09, 0xCC42, 0xCC40, 0xCC3B,\n    0xCC34, 0xCC2C, 0xCC24, 0xCC1D, 0xCC18, 0xCC15, 0xCC15, 0xCC14,\n    0xCC13, 0xCC12, 0xCC11, 0xCC10, 0xCC0E, 0xCC0C, 0xCC0B, 0xCC09,\n    0xCC07, 0xCC04, 0xCC02, 0xCC00, 0xCBFD, 0xCBFB, 0xCBF8, 0xCBF6,\n    0xCBF3, 0xCBF0, 0xCBED, 0xCBEA, 0xCBE7, 0xCBE4, 0xCBE1, 0xCBDE,\n    0xCBDB, 0xCBD8, 0xCBD5, 0xCBD2, 0xCBCF, 0xCBCC, 0xCBC9, 0xCBC6,\n    0xCBC3, 0xCBC1, 0xCBBE, 0xCBBB, 0xCBB8, 0xCBB6, 0xCBB3, 0xCBB1,\n    0xCBAE, 0xCBAC, 0xCBAA, 0xCBA8, 0xCBA6, 0xCBA4, 0xCBA2, 0xCBA1,\n    0xCBA0, 0xCB9E, 0xCB9D, 0xCB9C, 0xCB9C, 0xCB9B, 0xCB9B, 0xCB9A,\n    0xCB9A, 0xCB9B, 0xCB9B, 0xCB9C, 0xCB9C, 0xCB9D, 0xCB9F, 0xCBA0,\n    0xCBA2, 0xCBA4, 0xCBA6, 0xCBA9, 0xCBAC, 0xCBAF, 0xCBB2, 0xCBB6,\n    0xCBBA, 0xCBBE, 0xCBC3, 0xCBC8, 0xCBCD, 0xCBD3, 0xCBD9, 0xCBDF,\n    0xCBE6, 0xCBED, 0xCBF4, 0xCBFC, 0xCC04, 0xCC0C, 0xCC15, 0xCC1D,\n    0xCC24, 0xCC2B, 0xCC32, 0xCC3C, 0xCC48, 0xCC58, 0xCC6E, 0xCC8A,\n    0xCCAE, 0xCCD9, 0xCD0F, 0xCD4F, 0xCD9B, 0xCDF3, 0xCE5A, 0xCECF,\n    0xCF55, 0xCFEC, 0xD162, 0xD402, 0xD704, 0xD9A0, 0xDB0E, 0xDB3A,\n    0xDAB9, 0xD9C3, 0xD890, 0xD75B, 0xD65B, 0xD57E, 0xD491, 0xD399,\n    0xD29B, 0xD19D, 0xD0A2, 0xCFB1, 0xCECF, 0xCE01, 0xCD4C, 0xCCB6,\n    0xCC42, 0xCBEF, 0xCBB3, 0xCB8B, 0xCB74, 0xCB6E, 0xCB74, 0xCB84,\n    0xCB9C, 0xCBB9, 0xCBD8, 0xCBF7, 0xCC14, 0xCC2C, 0xCC3C, 0xCC42,\n    0x3426, 0x0000, 0x0000, 0x0000, 0x003A, 0x0429, 0x084C, 0x0B99,\n    0x0D09, 0x0D30, 0x0D55, 0x0D77, 0x0D96, 0x0DB4, 0x0DCF, 0x0DE8,\n    0x0DFF, 0x0E14, 0x0E27, 0x0E38, 0x0E47, 0x0E54, 0x0E60, 0x0E69,\n    0x0E72, 0x0E78, 0x0E7D, 0x0E81, 0x0E83, 0x0E83, 0x0E83, 0x0E81,\n    0x0E7E, 0x0E7A, 0x0E74, 0x0E6E, 0x0E67, 0x0E5F, 0x0E56, 0x0E4C,\n    0x0E41, 0x0E36, 0x0E2A, 0x0E1E, 0x0E11, 0x0E04, 0x0DF6, 0x0DE8,\n    0x0DDA, 0x0DCB, 0x0DBD, 0x0DAE, 0x0D9F, 0x0D90, 0x0D82, 0x0D73,\n    0x0D65, 0x0D57, 0x0D49, 0x0D3B, 0x0D2E, 0x0D22, 0x0D16, 0x0D0A,\n    0x0CFF, 0x0CF5, 0x0CEC, 0x0CE3, 0x0CDC, 0x0CD5, 0x0CD0, 0x0CCB,\n    0x0CC7, 0x0CC5, 0x0CC4, 0x0CC4, 0x0CC6, 0x0CC9, 0x0CCD, 0x0CD3,\n    0x0CDA, 0x0CE3, 0x0CEE, 0x0CFB, 0x0D09, 0x0D57, 0x0E09, 0x0EFC,\n    0x100B, 0x1112, 0x11ED, 0x12AD, 0x1376, 0x143D, 0x14F7, 0x1598,\n    0x1617, 0x1668, 0x1693, 0x16AA, 0x16AF, 0x16A7, 0x1695, 0x167C,\n    0x1660, 0x1645, 0x162D, 0x161C, 0x1616, 0x161F, 0x1639, 0x1668,\n    0x16A0, 0x16D3, 0x1704, 0x1736, 0x176B, 0x17A5, 0x17E8, 0x1835,\n    0x1890, 0x18FA, 0x1977, 0x1A09, 0x1AB2, 0x1B75, 0x1C56, 0x1D55,\n    0x1E9C, 0x2043, 0x2237, 0x2463, 0x26B2, 0x2911, 0x2B6B, 0x2DAD,\n    0x2FC1, 0x3194, 0x3312, 0x3426, 0x34E2, 0x356B, 0x35C5, 0x35F7,\n    0x3607, 0x35F9, 0x35D5, 0x359F, 0x355D, 0x3516, 0x34CF, 0x348E,\n    0x3458, 0x3433, 0x3426, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB,\n    0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB,\n    0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB,\n    0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB,\n    0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB,\n    0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB,\n    0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB,\n    0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB,\n    0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB,\n    0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB,\n    0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB,\n    0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB,\n    0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB,\n    0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB,\n    0xFFCB, 0xFFCB, 0xFFCB, 0xFFD0, 0xFFDE, 0xFFF3, 0x000B, 0x0028,\n    0x0045, 0x0060, 0x0078, 0x008B, 0x0096, 0x0098, 0x008E, 0x0077,\n    0x004F, 0x0017, 0xFFCB, 0xFDF7, 0xFAEC, 0xF952, 0xF984, 0xFA0B,\n    0xFAD2, 0xFBC1, 0xFCC3, 0xFDC1, 0xFEA6, 0xFF5C, 0xFFCB, 0x0006,\n    0x0032, 0x004F, 0x005E, 0x0063, 0x005F, 0x0053, 0x0042, 0x002D,\n    0x0017, 0x0000, 0xFFEC, 0xFFDB, 0xFFCF, 0xFFCB, 0xF3CA, 0xF3CA,\n    0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA,\n    0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA,\n    0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA,\n    0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA,\n    0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA,\n    0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA,\n    0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA,\n    0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA,\n    0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA,\n    0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA,\n    0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA,\n    0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA,\n    0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA,\n    0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3CA, 0xF3D2, 0xF3E9,\n    0xF40B, 0xF436, 0xF465, 0xF494, 0xF4C2, 0xF4EA, 0xF509, 0xF51C,\n    0xF51E, 0xF50E, 0xF4E7, 0xF4A6, 0xF448, 0xF3CA, 0xF0C3, 0xEBBB,\n    0xE914, 0xE967, 0xEA47, 0xEB8F, 0xED1B, 0xEEC5, 0xF06B, 0xF1E5,\n    0xF311, 0xF3CA, 0xF42D, 0xF475, 0xF4A5, 0xF4BF, 0xF4C7, 0xF4C0,\n    0xF4AD, 0xF491, 0xF46E, 0xF448, 0xF423, 0xF400, 0xF3E4, 0xF3D1,\n    0xF3CA, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661,\n    0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661,\n    0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661,\n    0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661,\n    0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661,\n    0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661,\n    0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661,\n    0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661,\n    0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661,\n    0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661,\n    0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661,\n    0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661,\n    0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661,\n    0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661, 0x8661,\n    0x8661, 0x8645, 0x85F8, 0x8585, 0x84F9, 0x845D, 0x83BD, 0x8325,\n    0x82A0, 0x8239, 0x81FB, 0x81F1, 0x8228, 0x82A9, 0x8381, 0x84BB,\n    0x8661, 0x9076, 0xA138, 0xAA0D, 0xA8F9, 0xA610, 0xA1CB, 0x9CA4,\n    0x9717, 0x919C, 0x8CAE, 0x88C7, 0x8661, 0x8516, 0x8426, 0x8387,\n    0x832F, 0x8314, 0x832B, 0x836C, 0x83CA, 0x843D, 0x84BA, 0x8537,\n    0x85AA, 0x8609, 0x8649, 0x8661, 0x8001, 0x8001, 0x4171, 0xBF5F,\n    0x8001, 0x8001, 0x4171, 0xBF5F, 0x011E, 0xFE61, 0xFA09, 0xF791,\n    0xF5AE, 0xF4C1, 0xF311, 0xEC78, 0xE89D, 0xEB18, 0xEE0A, 0xF15F,\n    0xF506, 0xF8ED, 0xFD01, 0x0130, 0x0568, 0x0998, 0x0DAB, 0x1192,\n    0x1538, 0x188C, 0x1B7C, 0x1DF6, 0x1FE7, 0x213C, 0x21E5, 0x21CF,\n    0x20D1, 0x1EE2, 0x1C1E, 0x18A1, 0x1485, 0x0FE6, 0x0AE0, 0x058E,\n    0x000C, 0xFA76, 0xF4E5, 0xEF76, 0xEA45, 0xE56D, 0xE109, 0xDD36,\n    0xDA0D, 0xD7AC, 0xD62D, 0xD5AC, 0xD77D, 0xDC6D, 0xE3CB, 0xECE3,\n    0xF704, 0x017C, 0x0B9A, 0x14AC, 0x1BFF, 0x20E2, 0x22A3, 0x212F,\n    0x1D39, 0x173C, 0x0FB1, 0x0713, 0xFDDD, 0xF486, 0xEB8A, 0xE362,\n    0xDC89, 0xD778, 0xD4A9, 0xD3C0, 0xD3F9, 0xD52F, 0xD73D, 0xDA00,\n    0xDD52, 0xE110, 0xE516, 0xE93E, 0xED65, 0xF166, 0xF51E, 0xF867,\n    0xFB1D, 0xFC90, 0xFCDE, 0xFD15, 0xFD97, 0xFE02, 0xFE3D, 0xFE3D,\n    0xFE19, 0xFDEE, 0xFDDA, 0xFDF3, 0xFE24, 0xFE3D, 0xFE2D, 0xFE09,\n    0xFDE5, 0xFDD6, 0xFDEA, 0xFE12, 0xFE3A, 0xFE4D, 0xFE34, 0xFE02,\n    0xFDE6, 0xFDFA, 0xFE23, 0xFE3D, 0xFE39, 0xFE28, 0xFE16, 0xFE0E,\n    0xFE16, 0xFE28, 0xFE3A, 0xFE45, 0xFE44, 0xFE3E, 0xFE36, 0xFE32,\n    0xFE47, 0xFE6D, 0xFE78, 0xFE3D, 0xFD42, 0xFBE6, 0xFB43, 0xFB76,\n    0xFBD2, 0xFC4F, 0xFCE0, 0xFD7B, 0xFE15, 0xFEA2, 0xFF18, 0xFF6B,\n    0xFFA7, 0xFFDE, 0x000F, 0x003D, 0x0066, 0x008A, 0x00AB, 0x00C7,\n    0x00DE, 0x00F2, 0x0102, 0x010F, 0x0117, 0x011C, 0x011E, 0x030F,\n    0x02D3, 0x0585, 0x0370, 0x016C, 0x02BD, 0x042B, 0x02B4, 0x0107,\n    0x007C, 0xFFE5, 0xFF43, 0xFE9B, 0xFDEF, 0xFD42, 0xFC97, 0xFBF1,\n    0xFB53, 0xFAC0, 0xFA3A, 0xF9C5, 0xF963, 0xF918, 0xF8E5, 0xF8CF,\n    0xF8D8, 0xF903, 0xF952, 0xF9D3, 0xFA89, 0xFB70, 0xFC81, 0xFDB6,\n    0xFF08, 0x0070, 0x01EB, 0x0371, 0x04FC, 0x0685, 0x0806, 0x097A,\n    0x0ADA, 0x0C20, 0x0D45, 0x0E44, 0x0F16, 0x0FB4, 0x101A, 0x1008,\n    0x0F58, 0x0E2A, 0x0C9F, 0x0AD5, 0x08EC, 0x0704, 0x053E, 0x03B8,\n    0x0292, 0x01EC, 0x01BC, 0x01D7, 0x0232, 0x02BE, 0x036F, 0x0437,\n    0x0509, 0x05D8, 0x0696, 0x0737, 0x07AE, 0x07EC, 0x07FD, 0x07F5,\n    0x07D8, 0x07AA, 0x076E, 0x0726, 0x06D7, 0x0684, 0x0630, 0x05DF,\n    0x0594, 0x0552, 0x051D, 0x04F8, 0x0523, 0x05A0, 0x0610, 0x065A,\n    0x0697, 0x06BD, 0x06C5, 0x06BC, 0x06AE, 0x06A7, 0x06AD, 0x06B7,\n    0x06BD, 0x06B7, 0x06AD, 0x06A3, 0x069F, 0x06A4, 0x06AF, 0x06BA,\n    0x06C0, 0x06B9, 0x06AB, 0x06A3, 0x06A9, 0x06B5, 0x06BD, 0x06BD,\n    0x06BB, 0x06B9, 0x06B9, 0x06BE, 0x06C5, 0x06CD, 0x06D3, 0x06D7,\n    0x06DA, 0x06DC, 0x06DB, 0x06E0, 0x06EA, 0x06E5, 0x06BD, 0x0645,\n    0x059C, 0x051D, 0x04D3, 0x048B, 0x0448, 0x040A, 0x03D1, 0x039E,\n    0x0372, 0x034F, 0x0334, 0x0321, 0x0312, 0x0307, 0x02FF, 0x02FA,\n    0x02F8, 0x02F8, 0x02FA, 0x02FD, 0x0301, 0x0305, 0x0309, 0x030C,\n    0x030E, 0x030F, 0x2662, 0x02D7, 0x14DE, 0x0E7B, 0x06EC, 0x0B25,\n    0x10F6, 0x10DE, 0x0FBF, 0x0FED, 0x1021, 0x105D, 0x109E, 0x10E3,\n    0x112D, 0x1178, 0x11C5, 0x1213, 0x1260, 0x12AB, 0x12F4, 0x1339,\n    0x137A, 0x13B5, 0x13E9, 0x1416, 0x143A, 0x1454, 0x146B, 0x1483,\n    0x149C, 0x14B5, 0x14CD, 0x14E2, 0x14F5, 0x1503, 0x150C, 0x150E,\n    0x150A, 0x14FD, 0x14E7, 0x14C7, 0x149B, 0x1463, 0x141E, 0x13CB,\n    0x1368, 0x12F5, 0x1246, 0x1140, 0x0FF6, 0x0E7C, 0x0CE5, 0x0B46,\n    0x09B1, 0x083B, 0x06F8, 0x05FB, 0x0558, 0x050B, 0x04FD, 0x0522,\n    0x0570, 0x05DE, 0x0661, 0x06EF, 0x077E, 0x0804, 0x0875, 0x08C9,\n    0x08F5, 0x08F5, 0x08D1, 0x0891, 0x083D, 0x07DD, 0x0779, 0x0718,\n    0x06C2, 0x0680, 0x0659, 0x0655, 0x067B, 0x06D4, 0x0767, 0x0A6A,\n    0x0FF2, 0x14DC, 0x184F, 0x1B23, 0x1CBE, 0x1CD4, 0x1BFD, 0x1AF2,\n    0x1A6F, 0x1B0A, 0x1C27, 0x1CBE, 0x1C56, 0x1B7A, 0x1AA3, 0x1A48,\n    0x1ABE, 0x1BB2, 0x1CA8, 0x1D1F, 0x1C84, 0x1B55, 0x1AA7, 0x1B22,\n    0x1C1F, 0x1CBE, 0x1CA9, 0x1C49, 0x1BE2, 0x1BB8, 0x1BF1, 0x1C60,\n    0x1CD5, 0x1D1E, 0x1D28, 0x1D0E, 0x1CEA, 0x1CD0, 0x1D51, 0x1E32,\n    0x1E5E, 0x1CBE, 0x1678, 0x0DA5, 0x08A0, 0x07FE, 0x0802, 0x0891,\n    0x098B, 0x0AD4, 0x0C4E, 0x0DDC, 0x0F5F, 0x10BA, 0x1215, 0x13A4,\n    0x155C, 0x1731, 0x1919, 0x1B07, 0x1CF1, 0x1ECC, 0x208C, 0x2226,\n    0x238E, 0x24BA, 0x259E, 0x2630, 0x2662, 0xFF9E, 0x0010, 0x0000,\n    0xFFD7, 0xFFA3, 0xFF75, 0xFF5E, 0xFF6F, 0xFFB7, 0x003B, 0x00F1,\n    0x01C9, 0x02B6, 0x03AB, 0x049A, 0x0575, 0x0630, 0x06BB, 0x070B,\n    0x0735, 0x0758, 0x0775, 0x078C, 0x079D, 0x07AA, 0x07B1, 0x07B5,\n    0x07B4, 0x07B0, 0x07A8, 0x079E, 0x0791, 0x0782, 0x0771, 0x075F,\n    0x074B, 0x0737, 0x0722, 0x070E, 0x06FA, 0x06E6, 0x06D4, 0x06C3,\n    0x06B5, 0x06A8, 0x069E, 0x0697, 0x0693, 0x0691, 0x068F, 0x068E,\n    0x068E, 0x068D, 0x068D, 0x068D, 0x068D, 0x068E, 0x068E, 0x068F,\n    0x0690, 0x0691, 0x0692, 0x0693, 0x0694, 0x0695, 0x0696, 0x0697,\n    0x0698, 0x0698, 0x0698, 0x0698, 0x0698, 0x0698, 0x0697, 0x0696,\n    0x0695, 0x0693, 0x0690, 0x068C, 0x0688, 0x0683, 0x067D, 0x0676,\n    0x066F, 0x0668, 0x0660, 0x0658, 0x0650, 0x0649, 0x0641, 0x063A,\n    0x0631, 0x0626, 0x061C, 0x0618, 0x0620, 0x0630, 0x063A, 0x063B,\n    0x0639, 0x0634, 0x062E, 0x0626, 0x061D, 0x0613, 0x060B, 0x0605,\n    0x0604, 0x0606, 0x0608, 0x060B, 0x060A, 0x0607, 0x0602, 0x05FB,\n    0x05F3, 0x05EA, 0x05E1, 0x05D8, 0x05D0, 0x05C9, 0x05C3, 0x05BF,\n    0x05BE, 0x05BF, 0x05C4, 0x05CC, 0x05D8, 0x0650, 0x0705, 0x071B,\n    0x0679, 0x05A6, 0x04B2, 0x03AD, 0x02A5, 0x01A9, 0x00CA, 0x0016,\n    0xFF9E, 0xFF53, 0xFF21, 0xFF03, 0xFEF6, 0xFEF8, 0xFF06, 0xFF1C,\n    0xFF36, 0xFF53, 0xFF6F, 0xFF87, 0xFF97, 0xFF9E, 0xFF9E, 0xFF9E,\n    0xFCCE, 0xFCC8, 0xFCC8, 0xFCC9, 0xFCC9, 0xFCCA, 0xFCCB, 0xFCCB,\n    0xFCCB, 0xFCCC, 0xFCCE, 0xFCCF, 0xFCD1, 0xFCD3, 0xFCD4, 0xFCD4,\n    0xFCD3, 0xFCD0, 0xFCCB, 0xFCC5, 0xFCBF, 0xFCB8, 0xFCB0, 0xFCA9,\n    0xFCA0, 0xFC98, 0xFC8F, 0xFC86, 0xFC7D, 0xFC74, 0xFC6B, 0xFC62,\n    0xFC58, 0xFC4F, 0xFC46, 0xFC3D, 0xFC34, 0xFC2B, 0xFC23, 0xFC1B,\n    0xFC13, 0xFC0C, 0xFC05, 0xFBFE, 0xFBF8, 0xFBF3, 0xFBEE, 0xFBEA,\n    0xFBE6, 0xFBE3, 0xFBE1, 0xFBDF, 0xFBDE, 0xFBDE, 0xFBDE, 0xFBDE,\n    0xFBDF, 0xFBE0, 0xFBE1, 0xFBE2, 0xFBE4, 0xFBE6, 0xFBE7, 0xFBE9,\n    0xFBEB, 0xFBEC, 0xFBEE, 0xFBEF, 0xFBF0, 0xFBF1, 0xFBF1, 0xFBF1,\n    0xFBF1, 0xFBF0, 0xFBEE, 0xFBEC, 0xFBEA, 0xFBE6, 0xFBE0, 0xFBD9,\n    0xFBD1, 0xFBC8, 0xFBBF, 0xFBB4, 0xFBA9, 0xFB9E, 0xFB92, 0xFB87,\n    0xFB7C, 0xFB71, 0xFB67, 0xFB5A, 0xFB4B, 0xFB3E, 0xFB39, 0xFB44,\n    0xFB59, 0xFB67, 0xFB68, 0xFB65, 0xFB5F, 0xFB58, 0xFB50, 0xFB45,\n    0xFB3A, 0xFB30, 0xFB29, 0xFB26, 0xFB27, 0xFB28, 0xFB29, 0xFB28,\n    0xFB24, 0xFB1C, 0xFB12, 0xFB06, 0xFAFA, 0xFAED, 0xFAE0, 0xFAD4,\n    0xFACA, 0xFAC3, 0xFABE, 0xFABD, 0xFAC0, 0xFAC9, 0xFAD7, 0xFAEC,\n    0xFB73, 0xFC5D, 0xFCF0, 0xFD0E, 0xFD1C, 0xFD1D, 0xFD15, 0xFD06,\n    0xFCF4, 0xFCE2, 0xFCD4, 0xFCCE, 0xFCCD, 0xFCCC, 0xFCCB, 0xFCCB,\n    0xFCCB, 0xFCCB, 0xFCCC, 0xFCCC, 0xFCCD, 0xFCCD, 0xFCCE, 0xFCCE,\n    0xFCCE, 0xFCCE, 0xFCCE, 0x18D7, 0x131E, 0x1339, 0x13BF, 0x148B,\n    0x1579, 0x1664, 0x1727, 0x179D, 0x17D1, 0x17E9, 0x17EB, 0x17DE,\n    0x17C7, 0x17AD, 0x1795, 0x1787, 0x1788, 0x179D, 0x17C1, 0x17E8,\n    0x1812, 0x183E, 0x186D, 0x189D, 0x18CF, 0x1903, 0x1938, 0x196E,\n    0x19A4, 0x19DB, 0x1A13, 0x1A4A, 0x1A81, 0x1AB7, 0x1AED, 0x1B22,\n    0x1B55, 0x1B87, 0x1BB8, 0x1BE6, 0x1C12, 0x1C3B, 0x1C62, 0x1C85,\n    0x1CA6, 0x1CC3, 0x1CDC, 0x1CF1, 0x1D01, 0x1D0E, 0x1D17, 0x1D1D,\n    0x1D20, 0x1D20, 0x1D1E, 0x1D1A, 0x1D14, 0x1D0C, 0x1D03, 0x1CF9,\n    0x1CEF, 0x1CE4, 0x1CDA, 0x1CD0, 0x1CC6, 0x1CBD, 0x1CB6, 0x1CB0,\n    0x1CAC, 0x1CAA, 0x1CAA, 0x1CAD, 0x1CB4, 0x1CBD, 0x1CCB, 0x1CDC,\n    0x1CF4, 0x1D17, 0x1D42, 0x1D74, 0x1DAD, 0x1DEB, 0x1E2E, 0x1E74,\n    0x1EBB, 0x1F04, 0x1F4C, 0x1F93, 0x1FD8, 0x2019, 0x206B, 0x20CF,\n    0x2123, 0x2146, 0x20FE, 0x2073, 0x2019, 0x200F, 0x2025, 0x204E,\n    0x207E, 0x20BA, 0x2105, 0x2153, 0x2197, 0x21C6, 0x21D5, 0x21CE,\n    0x21BE, 0x21B2, 0x21B8, 0x21D6, 0x2207, 0x2247, 0x2292, 0x22E3,\n    0x2337, 0x2389, 0x23D4, 0x2415, 0x2447, 0x2467, 0x2470, 0x245D,\n    0x242B, 0x23D5, 0x2358, 0x2008, 0x1A52, 0x16CF, 0x162E, 0x15FA,\n    0x161C, 0x167C, 0x1704, 0x179C, 0x182C, 0x189D, 0x18D7, 0x18EB,\n    0x18F9, 0x1901, 0x1905, 0x1904, 0x1900, 0x18FA, 0x18F3, 0x18EB,\n    0x18E4, 0x18DD, 0x18D9, 0x18D7, 0x18D7, 0x18D7, 0x1B25, 0x1B25,\n    0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25,\n    0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25,\n    0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25,\n    0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25,\n    0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25,\n    0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25,\n    0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25,\n    0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25,\n    0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25,\n    0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25,\n    0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25,\n    0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25, 0x1B25,\n    0x1B24, 0x1B1F, 0x1B17, 0x1B0F, 0x1B05, 0x1AFC, 0x1AF5, 0x1AEF,\n    0x1AEC, 0x1AED, 0x1AF2, 0x1AFC, 0x1B0D, 0x1B25, 0x1B4C, 0x1B86,\n    0x1BCF, 0x1C24, 0x1C81, 0x1CE2, 0x1D44, 0x1DA3, 0x1DFB, 0x1E48,\n    0x1E87, 0x1EB4, 0x1ECB, 0x1EC8, 0x1EA8, 0x1E68, 0x1C04, 0x17C1,\n    0x1509, 0x1459, 0x13E7, 0x13A8, 0x1396, 0x13A6, 0x13D2, 0x1410,\n    0x1457, 0x14A1, 0x14F9, 0x1571, 0x1600, 0x16A2, 0x174E, 0x17FF,\n    0x18AD, 0x1953, 0x19E9, 0x1A6A, 0x1ACE, 0x1B0E, 0x1B25, 0x1B25,\n    0x1B25,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_3F.inc.c",
    "content": "static const struct Animation anim_3F[] = {\n    0,\n    189,\n    0,\n    0,\n    0x3D,\n    ANIMINDEX_NUMPARTS(anim_3F_indices),\n    anim_3F_values,\n    anim_3F_indices,\n    0,\n};\n\n\nstatic const u16 anim_3F_indices[] = {\n    0x0001, 0x0000, 0x003D, 0x0001, 0x003D, 0x003E, 0x0001, 0x0000, 0x0001, 0x007B, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x060A,\n    0x003D, 0x0553, 0x003D, 0x0590, 0x003D, 0x05CD,\n    0x003D, 0x049C, 0x003D, 0x04D9, 0x003D, 0x0516,\n    0x0001, 0x045C, 0x0001, 0x045D, 0x003D, 0x045E,\n    0x0001, 0x0080, 0x0001, 0x0081, 0x0001, 0x0082,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x007F,\n    0x0001, 0x007C, 0x0001, 0x007D, 0x0001, 0x007E,\n    0x0001, 0x03E0, 0x0001, 0x03E1, 0x003D, 0x03E2,\n    0x0001, 0x0087, 0x0001, 0x0088, 0x0001, 0x0089,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0086,\n    0x0001, 0x0083, 0x0001, 0x0084, 0x0001, 0x0085,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x003D, 0x041F,\n    0x003D, 0x0329, 0x003D, 0x0366, 0x003D, 0x03A3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x003D, 0x02EC,\n    0x003D, 0x0235, 0x003D, 0x0272, 0x003D, 0x02AF,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x049B,\n    0x003D, 0x017E, 0x003D, 0x01BB, 0x003D, 0x01F8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x003D, 0x0141,\n    0x003D, 0x008A, 0x003D, 0x00C7, 0x003D, 0x0104,\n};\n\nstatic const s16 anim_3F_values[] = {\n    0x0000, 0x009A, 0x0098, 0x0096, 0x0094, 0x0092, 0x0090, 0x008F,\n    0x008E, 0x008D, 0x008D, 0x008D, 0x008D, 0x008E, 0x0090, 0x0092,\n    0x0094, 0x0096, 0x0097, 0x0099, 0x009A, 0x009A, 0x009A, 0x0099,\n    0x0097, 0x0096, 0x0094, 0x0092, 0x0090, 0x008E, 0x008D, 0x008D,\n    0x008D, 0x008E, 0x0090, 0x0092, 0x0094, 0x0096, 0x0097, 0x0099,\n    0x009A, 0x009A, 0x009A, 0x0099, 0x0097, 0x0096, 0x0094, 0x0092,\n    0x0090, 0x008E, 0x008D, 0x008D, 0x008D, 0x008E, 0x0090, 0x0092,\n    0x0094, 0x0096, 0x0097, 0x0099, 0x009A, 0x009A, 0x0007, 0x0007,\n    0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,\n    0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,\n    0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,\n    0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,\n    0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,\n    0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,\n    0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007,\n    0x0007, 0x0007, 0x0007, 0x3FFF, 0xE7CE, 0xF984, 0xE96B, 0xF8C2,\n    0x1219, 0xF942, 0x8A06, 0x0ACF, 0x020D, 0xEDD2, 0xF033, 0xF2FE,\n    0x0D07, 0x8F03, 0x008C, 0x008E, 0x0094, 0x009C, 0x00A6, 0x00B1,\n    0x00BB, 0x00C5, 0x00CD, 0x00D3, 0x00D5, 0x00D3, 0x00CD, 0x00C5,\n    0x00BB, 0x00B1, 0x00A6, 0x009C, 0x0094, 0x008E, 0x008C, 0x008E,\n    0x0094, 0x009C, 0x00A6, 0x00B1, 0x00BB, 0x00C5, 0x00CD, 0x00D3,\n    0x00D5, 0x00D3, 0x00CD, 0x00C5, 0x00BB, 0x00B1, 0x00A6, 0x009C,\n    0x0094, 0x008E, 0x008C, 0x008E, 0x0094, 0x009C, 0x00A6, 0x00B1,\n    0x00BB, 0x00C5, 0x00CD, 0x00D3, 0x00D5, 0x00D3, 0x00CD, 0x00C5,\n    0x00BB, 0x00B1, 0x00A6, 0x009C, 0x0094, 0x008E, 0x008C, 0x016D,\n    0x016C, 0x0169, 0x0165, 0x0160, 0x015B, 0x0155, 0x0150, 0x014C,\n    0x014A, 0x0148, 0x0149, 0x014C, 0x0150, 0x0155, 0x015B, 0x0160,\n    0x0165, 0x0169, 0x016C, 0x016D, 0x016C, 0x0169, 0x0165, 0x0160,\n    0x015B, 0x0155, 0x0150, 0x014C, 0x0149, 0x0148, 0x0149, 0x014C,\n    0x0150, 0x0155, 0x015B, 0x0160, 0x0165, 0x0169, 0x016C, 0x016D,\n    0x016C, 0x0169, 0x0165, 0x0160, 0x015B, 0x0155, 0x0150, 0x014C,\n    0x0149, 0x0148, 0x0149, 0x014C, 0x0150, 0x0155, 0x015B, 0x0160,\n    0x0165, 0x0169, 0x016C, 0x016D, 0xBB94, 0xBA90, 0xB992, 0xB89E,\n    0xB7BB, 0xB6ED, 0xB639, 0xB5A4, 0xB533, 0xB4EC, 0xB4D3, 0xB504,\n    0xB587, 0xB649, 0xB734, 0xB834, 0xB933, 0xBA1E, 0xBAE0, 0xBB63,\n    0xBB94, 0xBB63, 0xBAE0, 0xBA1E, 0xB933, 0xB834, 0xB734, 0xB649,\n    0xB587, 0xB504, 0xB4D3, 0xB504, 0xB587, 0xB649, 0xB734, 0xB834,\n    0xB933, 0xBA1E, 0xBAE0, 0xBB63, 0xBB94, 0xBB63, 0xBAE0, 0xBA1E,\n    0xB933, 0xB834, 0xB734, 0xB649, 0xB587, 0xB504, 0xB4D3, 0xB504,\n    0xB587, 0xB649, 0xB734, 0xB834, 0xB933, 0xBA1E, 0xBAE0, 0xBB63,\n    0xBB94, 0x3311, 0x3535, 0x373F, 0x3925, 0x3AE2, 0x3C6D, 0x3DC1,\n    0x3ED6, 0x3FA4, 0x4026, 0x4052, 0x3FF3, 0x3EF1, 0x3D75, 0x3BA8,\n    0x39B1, 0x37BB, 0x35EE, 0x3472, 0x3370, 0x3311, 0x3370, 0x3472,\n    0x35EE, 0x37BB, 0x39B1, 0x3BA8, 0x3D75, 0x3EF1, 0x3FF3, 0x4052,\n    0x3FF3, 0x3EF1, 0x3D75, 0x3BA8, 0x39B1, 0x37BB, 0x35EE, 0x3472,\n    0x3370, 0x3311, 0x3370, 0x3472, 0x35EE, 0x37BB, 0x39B1, 0x3BA8,\n    0x3D75, 0x3EF1, 0x3FF3, 0x4052, 0x3FF3, 0x3EF1, 0x3D75, 0x3BA8,\n    0x39B1, 0x37BB, 0x35EE, 0x3472, 0x3370, 0x3311, 0x17C1, 0x1740,\n    0x16C5, 0x1652, 0x15E8, 0x158A, 0x1539, 0x14F7, 0x14C6, 0x14A8,\n    0x149D, 0x14B3, 0x14F1, 0x154B, 0x15B8, 0x162F, 0x16A6, 0x1714,\n    0x176E, 0x17AB, 0x17C1, 0x17AB, 0x176E, 0x1714, 0x16A6, 0x162F,\n    0x15B8, 0x154B, 0x14F1, 0x14B3, 0x149D, 0x14B3, 0x14F1, 0x154B,\n    0x15B8, 0x162F, 0x16A6, 0x1714, 0x176E, 0x17AB, 0x17C1, 0x17AB,\n    0x176E, 0x1714, 0x16A6, 0x162F, 0x15B8, 0x154B, 0x14F1, 0x14B3,\n    0x149D, 0x14B3, 0x14F1, 0x154B, 0x15B8, 0x162F, 0x16A6, 0x1714,\n    0x176E, 0x17AB, 0x17C1, 0x15CC, 0x166D, 0x16F7, 0x176C, 0x17CE,\n    0x181E, 0x185C, 0x188B, 0x18AA, 0x18BD, 0x18C2, 0x18AD, 0x1873,\n    0x181F, 0x17B8, 0x1747, 0x16D7, 0x1670, 0x161B, 0x15E2, 0x15CC,\n    0x15E2, 0x161B, 0x1670, 0x16D7, 0x1747, 0x17B8, 0x181F, 0x1873,\n    0x18AD, 0x18C2, 0x18AD, 0x1873, 0x181F, 0x17B8, 0x1747, 0x16D7,\n    0x1670, 0x161B, 0x15E2, 0x15CC, 0x15E2, 0x161B, 0x1670, 0x16D7,\n    0x1747, 0x17B8, 0x181F, 0x1873, 0x18AD, 0x18C2, 0x18AD, 0x1873,\n    0x181F, 0x17B8, 0x1747, 0x16D7, 0x1670, 0x161B, 0x15E2, 0x15CC,\n    0xAE8E, 0xAD83, 0xAC8F, 0xABB4, 0xAAF2, 0xAA4B, 0xA9C0, 0xA952,\n    0xA902, 0xA8D1, 0xA8C1, 0xA8EA, 0xA95B, 0xAA02, 0xAACC, 0xABA7,\n    0xAC83, 0xAD4D, 0xADF3, 0xAE64, 0xAE8E, 0xAE64, 0xADF3, 0xAD4D,\n    0xAC83, 0xABA7, 0xAACC, 0xAA02, 0xA95B, 0xA8EA, 0xA8C1, 0xA8EA,\n    0xA95B, 0xAA02, 0xAACC, 0xABA7, 0xAC83, 0xAD4D, 0xADF3, 0xAE64,\n    0xAE8E, 0xAE64, 0xADF3, 0xAD4D, 0xAC83, 0xABA7, 0xAACC, 0xAA02,\n    0xA95B, 0xA8EA, 0xA8C1, 0xA8EA, 0xA95B, 0xAA02, 0xAACC, 0xABA7,\n    0xAC83, 0xAD4D, 0xADF3, 0xAE64, 0xAE8E, 0xFED4, 0xFED6, 0xFED7,\n    0xFED9, 0xFEDA, 0xFEDB, 0xFEDD, 0xFEDD, 0xFEDE, 0xFEDF, 0xFEDF,\n    0xFEDE, 0xFEDE, 0xFEDC, 0xFEDB, 0xFED9, 0xFED8, 0xFED6, 0xFED5,\n    0xFED4, 0xFED4, 0xFED4, 0xFED5, 0xFED6, 0xFED8, 0xFED9, 0xFEDB,\n    0xFEDC, 0xFEDE, 0xFEDE, 0xFEDF, 0xFEDE, 0xFEDE, 0xFEDC, 0xFEDB,\n    0xFED9, 0xFED8, 0xFED6, 0xFED5, 0xFED4, 0xFED4, 0xFED4, 0xFED5,\n    0xFED6, 0xFED8, 0xFED9, 0xFEDB, 0xFEDC, 0xFEDE, 0xFEDE, 0xFEDF,\n    0xFEDE, 0xFEDE, 0xFEDC, 0xFEDB, 0xFED9, 0xFED8, 0xFED6, 0xFED5,\n    0xFED4, 0xFED4, 0xFFA2, 0xFF99, 0xFF93, 0xFF8D, 0xFF8A, 0xFF87,\n    0xFF86, 0xFF85, 0xFF85, 0xFF85, 0xFF85, 0xFF85, 0xFF88, 0xFF8B,\n    0xFF8F, 0xFF93, 0xFF98, 0xFF9C, 0xFF9F, 0xFFA1, 0xFFA2, 0xFFA1,\n    0xFF9F, 0xFF9C, 0xFF98, 0xFF93, 0xFF8F, 0xFF8B, 0xFF88, 0xFF85,\n    0xFF85, 0xFF85, 0xFF88, 0xFF8B, 0xFF8F, 0xFF93, 0xFF98, 0xFF9C,\n    0xFF9F, 0xFFA1, 0xFFA2, 0xFFA1, 0xFF9F, 0xFF9C, 0xFF98, 0xFF93,\n    0xFF8F, 0xFF8B, 0xFF88, 0xFF85, 0xFF85, 0xFF85, 0xFF88, 0xFF8B,\n    0xFF8F, 0xFF93, 0xFF98, 0xFF9C, 0xFF9F, 0xFFA1, 0xFFA2, 0xB30A,\n    0xB1DF, 0xB0F3, 0xB03F, 0xAFBB, 0xAF60, 0xAF27, 0xAF07, 0xAEF9,\n    0xAEF7, 0xAEF8, 0xAF15, 0xAF64, 0xAFD9, 0xB067, 0xB101, 0xB19B,\n    0xB229, 0xB29E, 0xB2ED, 0xB30A, 0xB2ED, 0xB29E, 0xB229, 0xB19B,\n    0xB101, 0xB067, 0xAFD9, 0xAF64, 0xAF15, 0xAEF8, 0xAF15, 0xAF64,\n    0xAFD9, 0xB067, 0xB101, 0xB19B, 0xB229, 0xB29E, 0xB2ED, 0xB30A,\n    0xB2ED, 0xB29E, 0xB229, 0xB19B, 0xB101, 0xB067, 0xAFD9, 0xAF64,\n    0xAF15, 0xAEF8, 0xAF15, 0xAF64, 0xAFD9, 0xB067, 0xB101, 0xB19B,\n    0xB229, 0xB29E, 0xB2ED, 0xB30A, 0x378C, 0x39B1, 0x3B78, 0x3CEB,\n    0x3E11, 0x3EF3, 0x3F99, 0x400C, 0x4054, 0x4078, 0x4083, 0x4043,\n    0x3F94, 0x3E93, 0x3D5B, 0x3C07, 0x3AB4, 0x397C, 0x387B, 0x37CC,\n    0x378C, 0x37CC, 0x387B, 0x397C, 0x3AB4, 0x3C07, 0x3D5B, 0x3E93,\n    0x3F94, 0x4043, 0x4083, 0x4043, 0x3F94, 0x3E93, 0x3D5B, 0x3C07,\n    0x3AB4, 0x397C, 0x387B, 0x37CC, 0x378C, 0x37CC, 0x387B, 0x397C,\n    0x3AB4, 0x3C07, 0x3D5B, 0x3E93, 0x3F94, 0x4043, 0x4083, 0x4043,\n    0x3F94, 0x3E93, 0x3D5B, 0x3C07, 0x3AB4, 0x397C, 0x387B, 0x37CC,\n    0x378C, 0xD827, 0xD8BB, 0xD95F, 0xDA0C, 0xDABB, 0xDB64, 0xDBFF,\n    0xDC85, 0xDCEE, 0xDD33, 0xDD4C, 0xDD27, 0xDCC3, 0xDC2F, 0xDB7C,\n    0xDAB9, 0xD9F7, 0xD944, 0xD8B0, 0xD84C, 0xD827, 0xD84C, 0xD8B0,\n    0xD944, 0xD9F7, 0xDAB9, 0xDB7C, 0xDC2F, 0xDCC3, 0xDD27, 0xDD4C,\n    0xDD27, 0xDCC3, 0xDC2F, 0xDB7C, 0xDAB9, 0xD9F7, 0xD944, 0xD8B0,\n    0xD84C, 0xD827, 0xD84C, 0xD8B0, 0xD944, 0xD9F7, 0xDAB9, 0xDB7C,\n    0xDC2F, 0xDCC3, 0xDD27, 0xDD4C, 0xDD27, 0xDCC3, 0xDC2F, 0xDB7C,\n    0xDAB9, 0xD9F7, 0xD944, 0xD8B0, 0xD84C, 0xD827, 0xE772, 0xE6B7,\n    0xE615, 0xE58C, 0xE51A, 0xE4BD, 0xE474, 0xE43E, 0xE419, 0xE404,\n    0xE3FD, 0xE416, 0xE459, 0xE4BC, 0xE535, 0xE5B8, 0xE63B, 0xE6B3,\n    0xE716, 0xE75A, 0xE772, 0xE75A, 0xE716, 0xE6B3, 0xE63B, 0xE5B8,\n    0xE535, 0xE4BC, 0xE459, 0xE416, 0xE3FD, 0xE416, 0xE459, 0xE4BC,\n    0xE535, 0xE5B8, 0xE63B, 0xE6B3, 0xE716, 0xE75A, 0xE772, 0xE75A,\n    0xE716, 0xE6B3, 0xE63B, 0xE5B8, 0xE535, 0xE4BC, 0xE459, 0xE416,\n    0xE3FD, 0xE416, 0xE459, 0xE4BC, 0xE535, 0xE5B8, 0xE63B, 0xE6B3,\n    0xE716, 0xE75A, 0xE772, 0xBA94, 0xB9A0, 0xB89B, 0xB790, 0xB688,\n    0xB58E, 0xB4AC, 0xB3EA, 0xB353, 0xB2F2, 0xB2CF, 0xB307, 0xB39E,\n    0xB47D, 0xB58B, 0xB6B2, 0xB7D8, 0xB8E7, 0xB9C6, 0xBA5D, 0xBA94,\n    0xBA5D, 0xB9C6, 0xB8E7, 0xB7D8, 0xB6B2, 0xB58B, 0xB47D, 0xB39E,\n    0xB307, 0xB2CF, 0xB307, 0xB39E, 0xB47D, 0xB58B, 0xB6B2, 0xB7D8,\n    0xB8E7, 0xB9C6, 0xBA5D, 0xBA94, 0xBA5D, 0xB9C6, 0xB8E7, 0xB7D8,\n    0xB6B2, 0xB58B, 0xB47D, 0xB39E, 0xB307, 0xB2CF, 0xB307, 0xB39E,\n    0xB47D, 0xB58B, 0xB6B2, 0xB7D8, 0xB8E7, 0xB9C6, 0xBA5D, 0xBA94,\n    0x7FFF, 0x7FFF, 0x49FF, 0x4A51, 0x4A93, 0x4AC5, 0x4AE9, 0x4B00,\n    0x4B0B, 0x4B0D, 0x4B06, 0x4AF7, 0x4AE3, 0x4ACA, 0x4AAE, 0x4A90,\n    0x4A72, 0x4A55, 0x4A39, 0x4A22, 0x4A0F, 0x4A03, 0x49FF, 0x49FF,\n    0x49FF, 0x49FF, 0x49FF, 0x49FF, 0x49FF, 0x49FF, 0x49FF, 0x49FF,\n    0x49FF, 0x49FF, 0x49FF, 0x49FF, 0x49FF, 0x49FF, 0x49FF, 0x49FF,\n    0x49FF, 0x49FF, 0x49FF, 0x49FF, 0x49FF, 0x49FF, 0x49FF, 0x49FF,\n    0x49FF, 0x49FF, 0x49FF, 0x49FF, 0x49FF, 0x49FF, 0x49FF, 0x49FF,\n    0x49FF, 0x49FF, 0x49FF, 0x49FF, 0x49FF, 0x49FF, 0x49FF, 0xBF5F,\n    0xBF92, 0xBFD5, 0xC023, 0xC077, 0xC0CC, 0xC11D, 0xC164, 0xC19D,\n    0xC1C3, 0xC1D1, 0xC1BF, 0xC190, 0xC14A, 0xC0F4, 0xC098, 0xC03B,\n    0xBFE6, 0xBFA0, 0xBF70, 0xBF5F, 0xBF70, 0xBFA0, 0xBFE6, 0xC03B,\n    0xC098, 0xC0F4, 0xC14A, 0xC190, 0xC1BF, 0xC1D1, 0xC1BF, 0xC190,\n    0xC14A, 0xC0F4, 0xC098, 0xC03B, 0xBFE6, 0xBFA0, 0xBF70, 0xBF5F,\n    0xBF70, 0xBFA0, 0xBFE6, 0xC03B, 0xC098, 0xC0F4, 0xC14A, 0xC190,\n    0xC1BF, 0xC1D1, 0xC1BF, 0xC190, 0xC14A, 0xC0F4, 0xC098, 0xC03B,\n    0xBFE6, 0xBFA0, 0xBF70, 0xBF5F, 0x7FFF, 0x7FFF, 0x4AD0, 0x4B2A,\n    0x4B71, 0x4BA8, 0x4BCF, 0x4BE9, 0x4BF5, 0x4BF7, 0x4BEF, 0x4BE0,\n    0x4BC9, 0x4BAE, 0x4B8F, 0x4B6F, 0x4B4E, 0x4B2D, 0x4B10, 0x4AF6,\n    0x4AE2, 0x4AD4, 0x4AD0, 0x4AD0, 0x4AD0, 0x4AD0, 0x4AD0, 0x4AD0,\n    0x4AD0, 0x4AD0, 0x4AD0, 0x4AD0, 0x4AD0, 0x4AD0, 0x4AD0, 0x4AD0,\n    0x4AD0, 0x4AD0, 0x4AD0, 0x4AD0, 0x4AD0, 0x4AD0, 0x4AD0, 0x4AD0,\n    0x4AD0, 0x4AD0, 0x4AD0, 0x4AD0, 0x4AD0, 0x4AD0, 0x4AD0, 0x4AD0,\n    0x4AD0, 0x4AD0, 0x4AD0, 0x4AD0, 0x4AD0, 0x4AD0, 0x4AD0, 0x4AD0,\n    0x4AD0, 0x4AD0, 0x4AD0, 0xBF5F, 0x0000, 0x015E, 0x02D6, 0x0463,\n    0x0604, 0x07B6, 0x0975, 0x0B3E, 0x0D0F, 0x0EE5, 0x10BC, 0x1293,\n    0x1465, 0x1631, 0x17F3, 0x19A8, 0x1B4D, 0x1CE0, 0x1E5D, 0x1FC3,\n    0x210C, 0x2238, 0x2356, 0x246E, 0x2568, 0x2632, 0x26B6, 0x26DE,\n    0x2697, 0x25CC, 0x2467, 0x2254, 0x1F7E, 0x1BF5, 0x17D8, 0x1345,\n    0x0E5B, 0x0939, 0x03FF, 0xFECB, 0xF9BC, 0xF4F0, 0xF087, 0xECA0,\n    0xE959, 0xE6D2, 0xE52A, 0xE489, 0xE4E9, 0xE624, 0xE811, 0xEA8B,\n    0xED68, 0xF083, 0xF3B3, 0xF6D1, 0xF9B7, 0xFC3C, 0xFE3A, 0xFF88,\n    0x0000, 0x0000, 0x0004, 0x0009, 0x000F, 0x0014, 0x001A, 0x0020,\n    0x0027, 0x002D, 0x0033, 0x003A, 0x0040, 0x0047, 0x004D, 0x0053,\n    0x0058, 0x005E, 0x0063, 0x0068, 0x006C, 0x0070, 0x0074, 0x0074,\n    0x006F, 0x0068, 0x005F, 0x0056, 0x004F, 0x004B, 0x004B, 0x0052,\n    0x0061, 0x0078, 0x0096, 0x00BA, 0x00E3, 0x010F, 0x013D, 0x016C,\n    0x0199, 0x01C5, 0x01ED, 0x0210, 0x022D, 0x0242, 0x024E, 0x0251,\n    0x0245, 0x022B, 0x0204, 0x01D4, 0x019D, 0x0161, 0x0122, 0x00E4,\n    0x00A9, 0x0072, 0x0044, 0x0020, 0x0008, 0x0000, 0x109A, 0x10CA,\n    0x10F0, 0x110E, 0x1125, 0x1134, 0x113D, 0x1140, 0x113E, 0x1139,\n    0x112F, 0x1123, 0x1114, 0x1104, 0x10F4, 0x10E3, 0x10D3, 0x10C4,\n    0x10B8, 0x10AE, 0x10A8, 0x10A6, 0x10A9, 0x10B3, 0x10BF, 0x10CC,\n    0x10D7, 0x10DE, 0x10DF, 0x10D7, 0x10C4, 0x10A4, 0x1075, 0x1038,\n    0x0FF1, 0x0FA1, 0x0F4C, 0x0EF2, 0x0E98, 0x0E3F, 0x0DEA, 0x0D9C,\n    0x0D56, 0x0D1B, 0x0CEE, 0x0CD1, 0x0CC7, 0x0CD5, 0x0CFC, 0x0D3A,\n    0x0D88, 0x0DE3, 0x0E47, 0x0EB0, 0x0F18, 0x0F7C, 0x0FD8, 0x1026,\n    0x1064, 0x108C, 0x109A, 0x0000, 0xFFE8, 0xFFC9, 0xFFA4, 0xFF7D,\n    0xFF55, 0xFF2F, 0xFF0E, 0xFEF3, 0xFEE1, 0xFEDB, 0xFEE0, 0xFEEF,\n    0xFF06, 0xFF24, 0xFF47, 0xFF6C, 0xFF93, 0xFFBA, 0xFFDF, 0x0000,\n    0x0022, 0x004A, 0x0075, 0x00A1, 0x00CC, 0x00F4, 0x0116, 0x0132,\n    0x0144, 0x014A, 0x0144, 0x0132, 0x0118, 0x00F6, 0x00CE, 0x00A3,\n    0x0078, 0x004C, 0x0024, 0x0000, 0xFFDC, 0xFFB4, 0xFF88, 0xFF5D,\n    0xFF32, 0xFF0A, 0xFEE8, 0xFECE, 0xFEBC, 0xFEB6, 0xFEBF, 0xFED8,\n    0xFEFD, 0xFF2A, 0xFF5B, 0xFF8C, 0xFFB9, 0xFFDE, 0xFFF7, 0x0000,\n    0x0000, 0x0040, 0x0093, 0x00F5, 0x015D, 0x01C7, 0x022C, 0x0285,\n    0x02CC, 0x02FB, 0x030D, 0x02FE, 0x02D6, 0x0298, 0x0249, 0x01EE,\n    0x018A, 0x0122, 0x00BB, 0x0059, 0x0000, 0xFFA5, 0xFF3B, 0xFEC9,\n    0xFE54, 0xFDE1, 0xFD77, 0xFD1B, 0xFCD3, 0xFCA3, 0xFC92, 0xFCA3,\n    0xFCD1, 0xFD18, 0xFD73, 0xFDDB, 0xFE4D, 0xFEC2, 0xFF35, 0xFFA1,\n    0x0000, 0x005F, 0x00CB, 0x013E, 0x01B3, 0x0225, 0x028D, 0x02E8,\n    0x032F, 0x035D, 0x036E, 0x0356, 0x0313, 0x02B0, 0x0239, 0x01B7,\n    0x0135, 0x00BD, 0x005B, 0x0018, 0x0000, 0xF527, 0xF5AB, 0xF630,\n    0xF6B0, 0xF72B, 0xF79B, 0xF7FE, 0xF851, 0xF890, 0xF8B8, 0xF8C7,\n    0xF8AD, 0xF866, 0xF7FE, 0xF780, 0xF6F7, 0xF66E, 0xF5F0, 0xF588,\n    0xF541, 0xF527, 0xF541, 0xF587, 0xF5EE, 0xF66C, 0xF6F5, 0xF77E,\n    0xF7FC, 0xF863, 0xF8AA, 0xF8C4, 0xF8AA, 0xF864, 0xF7FC, 0xF77E,\n    0xF6F5, 0xF66C, 0xF5EF, 0xF587, 0xF541, 0xF527, 0xF541, 0xF587,\n    0xF5EF, 0xF66C, 0xF6F5, 0xF77E, 0xF7FC, 0xF864, 0xF8AA, 0xF8C4,\n    0xF8AA, 0xF864, 0xF7FC, 0xF77E, 0xF6F5, 0xF66C, 0xF5EF, 0xF587,\n    0xF541, 0xF527, 0x388D,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_40.inc.c",
    "content": "static const struct Animation anim_40[] = {\n    1,\n    189,\n    0,\n    0,\n    0x13,\n    ANIMINDEX_NUMPARTS(anim_40_indices),\n    anim_40_values,\n    anim_40_indices,\n    0,\n};\n\n\nstatic const u16 anim_40_indices[] = {\n    0x0001, 0x0000, 0x0013, 0x0001, 0x0013, 0x0014, 0x0001, 0x0000, 0x0001, 0x0027, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0013, 0x0210,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0013, 0x01FD,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0013, 0x01EA,\n    0x0001, 0x01D4, 0x0001, 0x01D5, 0x0013, 0x01D6,\n    0x0013, 0x003E, 0x0013, 0x0051, 0x0013, 0x0064,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0013, 0x002B,\n    0x0001, 0x0028, 0x0001, 0x0029, 0x0001, 0x002A,\n    0x0001, 0x01D0, 0x0001, 0x01D1, 0x0001, 0x01D2,\n    0x0013, 0x008D, 0x0013, 0x00A0, 0x0013, 0x00B3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0013, 0x007A,\n    0x0001, 0x0077, 0x0001, 0x0078, 0x0001, 0x0079,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01D3,\n    0x0013, 0x0197, 0x0013, 0x01AA, 0x0013, 0x01BD,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0013, 0x0184,\n    0x0013, 0x014B, 0x0013, 0x015E, 0x0013, 0x0171,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01E9,\n    0x0013, 0x0112, 0x0013, 0x0125, 0x0013, 0x0138,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0013, 0x00FF,\n    0x0013, 0x00C6, 0x0013, 0x00D9, 0x0013, 0x00EC,\n};\n\nstatic const s16 anim_40_values[] = {\n    0x0000, 0x009A, 0x0091, 0x0086, 0x007E, 0x007D, 0x0081, 0x0088,\n    0x008F, 0x0093, 0x0097, 0x009A, 0x009D, 0x009D, 0x009D, 0x009D,\n    0x009C, 0x009B, 0x009B, 0x009A, 0xFFF4, 0xFFF2, 0xFFF0, 0xFFF0,\n    0xFFF1, 0xFFF4, 0xFFF6, 0xFFF9, 0xFFFC, 0xFFFF, 0x0000, 0x0001,\n    0x0003, 0x0004, 0x0005, 0x0006, 0x0006, 0x0007, 0x0007, 0x3FFF,\n    0xE7CE, 0xF984, 0xE96B, 0xF446, 0xF438, 0xF42A, 0xF446, 0xF48D,\n    0xF4DE, 0xF539, 0xF599, 0xF5FE, 0xF665, 0xF6CA, 0xF72D, 0xF78A,\n    0xF7DF, 0xF82A, 0xF869, 0xF899, 0xF8B7, 0xF8C2, 0x1951, 0x16D4,\n    0x1258, 0x0FB9, 0x0F66, 0x0F3B, 0x0F32, 0x0F45, 0x0F71, 0x0FB0,\n    0x0FFD, 0x1053, 0x10AE, 0x1108, 0x115D, 0x11A8, 0x11E3, 0x120B,\n    0x1219, 0xEF75, 0xF0C2, 0xF316, 0xF4A2, 0xF52B, 0xF5AE, 0xF62A,\n    0xF69F, 0xF70D, 0xF772, 0xF7CE, 0xF822, 0xF86B, 0xF8AB, 0xF8E0,\n    0xF90A, 0xF929, 0xF93C, 0xF942, 0x70AE, 0x7422, 0x7C00, 0x812B,\n    0x8283, 0x83BA, 0x84CF, 0x85C5, 0x869C, 0x8758, 0x87F9, 0x8882,\n    0x88F2, 0x894D, 0x8994, 0x89C9, 0x89EC, 0x8A00, 0x8A06, 0x0ACF,\n    0x020D, 0xEDD2, 0xE463, 0xE43D, 0xE417, 0xE463, 0xE51C, 0xE5F4,\n    0xE6E2, 0xE7E1, 0xE8EB, 0xE9F9, 0xEB05, 0xEC09, 0xECFE, 0xEDDF,\n    0xEEA5, 0xEF4A, 0xEFC7, 0xF017, 0xF033, 0xEF3D, 0xF13B, 0xF4C9,\n    0xF6CC, 0xF6EF, 0xF6EE, 0xF6CE, 0xF695, 0xF647, 0xF5EA, 0xF581,\n    0xF512, 0xF4A3, 0xF437, 0xF3D3, 0xF37D, 0xF33A, 0xF30E, 0xF2FE,\n    0x1664, 0x14AB, 0x11BC, 0x0FE6, 0x0F68, 0x0EF9, 0x0E98, 0x0E45,\n    0x0DFE, 0x0DC2, 0x0D91, 0x0D69, 0x0D49, 0x0D31, 0x0D1F, 0x0D13,\n    0x0D0C, 0x0D08, 0x0D07, 0x7764, 0x7B5A, 0x844F, 0x8A01, 0x8B38,\n    0x8C3B, 0x8D0F, 0x8DB9, 0x8E3D, 0x8E9F, 0x8EE3, 0x8F0F, 0x8F27,\n    0x8F2E, 0x8F2B, 0x8F20, 0x8F13, 0x8F08, 0x8F03, 0xFE2C, 0xFD6B,\n    0xFDC3, 0xFE4D, 0xFEB7, 0xFEE3, 0xFEF8, 0xFF08, 0xFF24, 0xFF50,\n    0xFF89, 0xFFD3, 0x003E, 0x00C0, 0x0133, 0x0173, 0x0143, 0x00CE,\n    0x008C, 0xFDFB, 0xFE28, 0xFDFC, 0xFDC1, 0xFDA1, 0xFDAA, 0xFDC6,\n    0xFDEA, 0xFE0A, 0xFE23, 0xFE3C, 0xFE56, 0xFE63, 0xFE65, 0xFE7D,\n    0xFECA, 0xFFAB, 0x00D7, 0x016D, 0xC0E6, 0xC406, 0xBEB5, 0xB7FC,\n    0xB408, 0xB45C, 0xB6B9, 0xB9B0, 0xBBD3, 0xBCA4, 0xBCD5, 0xBCBE,\n    0xBC71, 0xBBEB, 0xBB60, 0xBB09, 0xBB1A, 0xBB66, 0xBB94, 0x3796,\n    0x3BDF, 0x4135, 0x4688, 0x4891, 0x45FC, 0x40EC, 0x3B44, 0x36EA,\n    0x34A3, 0x338D, 0x3311, 0x32C9, 0x32AD, 0x32B1, 0x32C9, 0x32E9,\n    0x3305, 0x3311, 0x1433, 0x10F2, 0x1057, 0x1043, 0x109A, 0x1154,\n    0x1259, 0x137E, 0x1498, 0x15CC, 0x1706, 0x17C1, 0x17FD, 0x1814,\n    0x1810, 0x17FD, 0x17E2, 0x17CB, 0x17C1, 0x16E1, 0x1A1E, 0x1B01,\n    0x1B6B, 0x1B59, 0x1AC6, 0x19DA, 0x18CF, 0x17E2, 0x1709, 0x1641,\n    0x15CC, 0x15A5, 0x1596, 0x1598, 0x15A5, 0x15B7, 0x15C6, 0x15CC,\n    0xA18B, 0x9A39, 0x98D4, 0x989F, 0x99AE, 0x9C09, 0x9F4C, 0xA2E1,\n    0xA631, 0xA980, 0xACAE, 0xAE8E, 0xAF2A, 0xAF67, 0xAF5E, 0xAF2A,\n    0xAEE5, 0xAEA8, 0xAE8E, 0x048A, 0x034B, 0x0259, 0x019F, 0x017E,\n    0x012A, 0xFF87, 0xFFA4, 0xFFE1, 0xFF93, 0xFF1F, 0xFED4, 0xFEC0,\n    0xFEB9, 0xFEBA, 0xFEC0, 0xFEC9, 0xFED1, 0xFED4, 0x0038, 0x001A,\n    0x001F, 0x0021, 0x0007, 0xFFE4, 0xFFD1, 0xFFC5, 0xFFBB, 0xFFB2,\n    0xFFA8, 0xFFA2, 0xFFA0, 0xFFA0, 0xFFA0, 0xFFA0, 0xFFA1, 0xFFA2,\n    0xFFA2, 0xBDCC, 0xBB45, 0xB91A, 0xB783, 0xB75F, 0xB78D, 0xB6E1,\n    0xB603, 0xB529, 0xB45A, 0xB388, 0xB30A, 0xB2E3, 0xB2D3, 0xB2D6,\n    0xB2E3, 0xB2F4, 0xB304, 0xB30A, 0x38B5, 0x3FF8, 0x43B9, 0x4637,\n    0x4690, 0x44FD, 0x41FA, 0x3E79, 0x3BB2, 0x39D2, 0x385C, 0x378C,\n    0x373F, 0x3720, 0x3725, 0x373F, 0x3761, 0x377F, 0x378C, 0xDF33,\n    0xE173, 0xE336, 0xE47C, 0xE490, 0xE371, 0xE12C, 0xDE8C, 0xDC5E,\n    0xDA9E, 0xD90F, 0xD827, 0xD7D8, 0xD7BA, 0xD7BE, 0xD7D8, 0xD7FB,\n    0xD81A, 0xD827, 0xE403, 0xDED6, 0xDBE2, 0xD9B3, 0xD8D1, 0xD9A9,\n    0xDC45, 0xDF82, 0xE238, 0xE45F, 0xE651, 0xE772, 0xE7D4, 0xE7FA,\n    0xE7F5, 0xE7D4, 0xE7A9, 0xE783, 0xE772, 0xA8BD, 0xA51C, 0xA263,\n    0xA0B8, 0xA167, 0xA425, 0xA8A6, 0xADA5, 0xB1D4, 0xB564, 0xB8AB,\n    0xBA94, 0xBB38, 0xBB78, 0xBB6F, 0xBB38, 0xBAEF, 0xBAB0, 0xBA94,\n    0x8001, 0x8001, 0x49FF, 0xBF5F, 0x8001, 0x8001, 0x4171, 0x4153,\n    0x4135, 0x4171, 0x4204, 0x42AF, 0x436C, 0x4436, 0x4509, 0x45DF,\n    0x46B3, 0x4782, 0x4844, 0x48F7, 0x4994, 0x4A16, 0x4A7A, 0x4AB9,\n    0x4AD0, 0xBF5F, 0xF3AA, 0xEF3B, 0xEAF9, 0xEB45, 0xF263, 0xFD43,\n    0x084B, 0x0FE3, 0x129C, 0x128B, 0x1154, 0x109A, 0x10A6, 0x10AB,\n    0x10AA, 0x10A6, 0x10A1, 0x109C, 0x109A, 0x171C, 0x1D70, 0x246B,\n    0x25D8, 0x2154, 0x1B08, 0x138D, 0x0B7D, 0x0373, 0xFC09, 0xF5D9,\n    0xF17C, 0xEF4E, 0xEEE6, 0xEFC0, 0xF153, 0xF31A, 0xF48D, 0xF527,\n    0x3CB2, 0x3D0E, 0x3D4E, 0x3D6D, 0x3D55, 0x3CFC, 0x3C73, 0x3BC9,\n    0x3B0E, 0x3A51, 0x39A3, 0x3913, 0x38B1, 0x388D, 0x388D, 0x388D,\n    0x388D, 0x388D, 0x388D,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_41.inc.c",
    "content": "static const struct Animation anim_41[] = {\n    1,\n    189,\n    0,\n    0,\n    0x0A,\n    ANIMINDEX_NUMPARTS(anim_41_indices),\n    anim_41_values,\n    anim_41_indices,\n    0,\n};\n\n\nstatic const u16 anim_41_indices[] = {\n    0x0001, 0x0000, 0x000A, 0x0001, 0x000A, 0x000B, 0x0001, 0x0000, 0x0001, 0x0015, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0102,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x00F8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x00EE,\n    0x0001, 0x00EA, 0x0001, 0x00EB, 0x0001, 0x00EC,\n    0x000A, 0x001A, 0x000A, 0x0024, 0x000A, 0x002E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0019,\n    0x0001, 0x0016, 0x0001, 0x0017, 0x0001, 0x0018,\n    0x0001, 0x00E6, 0x0001, 0x00E7, 0x0001, 0x00E8,\n    0x000A, 0x003C, 0x000A, 0x0046, 0x000A, 0x0050,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x003B,\n    0x0001, 0x0038, 0x0001, 0x0039, 0x0001, 0x003A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00E9,\n    0x000A, 0x00C8, 0x000A, 0x00D2, 0x000A, 0x00DC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x00BE,\n    0x000A, 0x00A0, 0x000A, 0x00AA, 0x000A, 0x00B4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00ED,\n    0x000A, 0x0082, 0x000A, 0x008C, 0x000A, 0x0096,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0078,\n    0x000A, 0x005A, 0x000A, 0x0064, 0x000A, 0x006E,\n};\n\nstatic const s16 anim_41_values[] = {\n    0x0000, 0x009A, 0x009D, 0x00A0, 0x00A3, 0x00A6, 0x00A9, 0x00AB,\n    0x00AD, 0x00AF, 0x00B1, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FFF, 0xE7CE, 0xF984,\n    0xE96B, 0xF446, 0x115F, 0x1199, 0x11D1, 0x1206, 0x1236, 0x1261,\n    0x1260, 0x1236, 0x1222, 0x1261, 0xF317, 0xF2E1, 0xF2AD, 0xF27C,\n    0xF24E, 0xF226, 0xF21A, 0xF22C, 0xF23B, 0xF226, 0x9205, 0x91A6,\n    0x914B, 0x90F5, 0x90A5, 0x905F, 0x90A7, 0x9160, 0x9199, 0x905F,\n    0x0ACF, 0x020D, 0xEDD2, 0xE463, 0xF545, 0xF510, 0xF4DC, 0xF4AB,\n    0xF47F, 0xF457, 0xF453, 0xF473, 0xF484, 0xF457, 0x12D7, 0x133E,\n    0x13A2, 0x1400, 0x1456, 0x14A2, 0x14C5, 0x14B6, 0x149E, 0x14A2,\n    0x9AB7, 0x9AD4, 0x9AEF, 0x9B0A, 0x9B22, 0x9B37, 0x9BBD, 0x9C88,\n    0x9CAB, 0x9B37, 0x0104, 0x0129, 0x0148, 0x0161, 0x0175, 0x0185,\n    0x0196, 0x01A3, 0x01A2, 0x0185, 0x0124, 0x00DC, 0x008F, 0x0046,\n    0x0006, 0xFFD7, 0xFFC9, 0xFFD7, 0xFFE5, 0xFFD7, 0xCA40, 0xD347,\n    0xDC35, 0xE47E, 0xEB96, 0xF0F0, 0xF414, 0xF504, 0xF3E9, 0xF0F0,\n    0x2F66, 0x2839, 0x203B, 0x184F, 0x1158, 0x0C39, 0x093F, 0x0833,\n    0x0929, 0x0C39, 0x0390, 0x06C5, 0x0CC6, 0x13F4, 0x1AB0, 0x1F59,\n    0x2145, 0x2162, 0x207A, 0x1F59, 0xFF56, 0xFD3E, 0xFD4D, 0xFE90,\n    0x0014, 0x00E9, 0x00B3, 0x002B, 0x0003, 0x00E9, 0x9113, 0x989B,\n    0xA4B5, 0xB295, 0xBF6B, 0xC86C, 0xCC71, 0xCCFF, 0xCB42, 0xC86C,\n    0xFED3, 0xFEE3, 0xFEF5, 0xFF08, 0xFF18, 0xFF24, 0xFF22, 0xFF15,\n    0xFF0F, 0xFF24, 0x005B, 0x0089, 0x00AA, 0x00C1, 0x00D2, 0x00E1,\n    0x00EB, 0x00EE, 0x00EA, 0x00E1, 0xCB7A, 0xD203, 0xD6EF, 0xDAA1,\n    0xDD79, 0xDFD8, 0xE197, 0xE23C, 0xE1AF, 0xDFD8, 0x5683, 0x59F9,\n    0x5A92, 0x5984, 0x5808, 0x5754, 0x5794, 0x57E8, 0x57F2, 0x5754,\n    0xF457, 0xF85D, 0xF9ED, 0xFA02, 0xF994, 0xF99C, 0xFA2F, 0xFA8F,\n    0xFA76, 0xF99C, 0xF0E3, 0xF103, 0xF01A, 0xEEAC, 0xED3C, 0xEC4D,\n    0xEC3B, 0xECA0, 0xECDC, 0xEC4D, 0xA297, 0x9AD5, 0x946E, 0x8F36,\n    0x8B01, 0x87A5, 0x85AA, 0x855D, 0x8633, 0x87A5, 0x8001, 0x8001,\n    0x49FF, 0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x1113, 0x118B,\n    0x11FE, 0x1267, 0x12C3, 0x130C, 0x1389, 0x141B, 0x1426, 0x130C,\n    0x03DF, 0x0286, 0xFEE5, 0xFA39, 0xF5BF, 0xF2B5, 0xF129, 0xF07D,\n    0xF0ED, 0xF2B5, 0x4B4B, 0x4971, 0x452F, 0x3FDB, 0x3ACA, 0x3754,\n    0x3602, 0x3607, 0x36B3, 0x3754,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_42.inc.c",
    "content": "static const struct Animation anim_42[] = {\n    1,\n    189,\n    2,\n    0,\n    0x10,\n    ANIMINDEX_NUMPARTS(anim_42_indices),\n    anim_42_values,\n    anim_42_indices,\n    0,\n};\n\n\nstatic const u16 anim_42_indices[] = {\n    0x0001, 0x0000, 0x0010, 0x0001, 0x0010, 0x0011, 0x0001, 0x0000, 0x0001, 0x0021, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x01CE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x01BE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x01AE,\n    0x0001, 0x019B, 0x0001, 0x019C, 0x0010, 0x019D,\n    0x0010, 0x0035, 0x0010, 0x0045, 0x0010, 0x0055,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x0025,\n    0x0001, 0x0022, 0x0001, 0x0023, 0x0001, 0x0024,\n    0x0001, 0x0188, 0x0001, 0x0189, 0x0010, 0x018A,\n    0x0010, 0x0078, 0x0010, 0x0088, 0x0010, 0x0098,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x0068,\n    0x0001, 0x0065, 0x0001, 0x0066, 0x0001, 0x0067,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x019A,\n    0x0010, 0x0158, 0x0010, 0x0168, 0x0010, 0x0178,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x0148,\n    0x0010, 0x0118, 0x0010, 0x0128, 0x0010, 0x0138,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01AD,\n    0x0010, 0x00E8, 0x0010, 0x00F8, 0x0010, 0x0108,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x00D8,\n    0x0010, 0x00A8, 0x0010, 0x00B8, 0x0010, 0x00C8,\n};\n\nstatic const s16 anim_42_values[] = {\n    0x0000, 0x00AA, 0x008B, 0x0082, 0x0060, 0x0062, 0x0067, 0x006E,\n    0x0075, 0x007D, 0x0083, 0x0088, 0x008D, 0x0092, 0x0097, 0x009A,\n    0x009D, 0xFFF1, 0xFFF2, 0xFFF2, 0xFFF3, 0xFFF4, 0xFFF6, 0xFFF7,\n    0xFFF9, 0xFFFA, 0xFFFC, 0xFFFE, 0xFFFF, 0x0000, 0x0002, 0x0003,\n    0x0004, 0x3FFF, 0xE7CE, 0xF984, 0xE96B, 0xFA94, 0xFBA4, 0xFC6D,\n    0xFCD5, 0xFCF1, 0xFCEE, 0xFCCF, 0xFC99, 0xFC4F, 0xFBF6, 0xFB92,\n    0xFB27, 0xFAB9, 0xFA4C, 0xF9E5, 0xF987, 0x18FE, 0x1690, 0x123B,\n    0x0FB9, 0x0F6E, 0x0F45, 0x0F39, 0x0F47, 0x0F6A, 0x0F9F, 0x0FE2,\n    0x102F, 0x1081, 0x10D6, 0x1128, 0x1174, 0xEF69, 0xF0C0, 0xF319,\n    0xF4A2, 0xF523, 0xF5A0, 0xF616, 0xF685, 0xF6EE, 0xF74F, 0xF7A9,\n    0xF7FB, 0xF845, 0xF886, 0xF8BE, 0xF8ED, 0x7AEC, 0x7F0B, 0x8743,\n    0x8C2B, 0x8CD7, 0x8D4B, 0x8D8B, 0x8D9F, 0x8D8C, 0x8D5A, 0x8D0E,\n    0x8CAF, 0x8C44, 0x8BD2, 0x8B60, 0x8AF4, 0x0ACF, 0x020D, 0xEDD2,\n    0xED19, 0xEEA5, 0xEFDC, 0xF09C, 0xF105, 0xF150, 0xF182, 0xF19B,\n    0xF1A1, 0xF196, 0xF17D, 0xF159, 0xF12E, 0xF0FE, 0xF0CD, 0xF09E,\n    0xEF6A, 0xF163, 0xF4DA, 0xF6CC, 0xF6EC, 0xF6EC, 0xF6D2, 0xF6A1,\n    0xF65D, 0xF609, 0xF5AB, 0xF546, 0xF4DE, 0xF476, 0xF414, 0xF3BB,\n    0x16CA, 0x14ED, 0x11D1, 0x0FE6, 0x0F6A, 0x0EFD, 0x0E9E, 0x0E4B,\n    0x0E05, 0x0DC9, 0x0D98, 0x0D70, 0x0D50, 0x0D37, 0x0D24, 0x0D18,\n    0x82B3, 0x85F3, 0x8D0E, 0x9157, 0x91E2, 0x923B, 0x9268, 0x926F,\n    0x9255, 0x921F, 0x91D4, 0x9179, 0x9113, 0x90A9, 0x9040, 0x8FDD,\n    0xFDE7, 0xFDE3, 0xFDB5, 0xFD89, 0xFDA9, 0xFDCA, 0xFDEC, 0xFE10,\n    0xFE34, 0xFE5A, 0xFE82, 0xFEAB, 0xFED6, 0xFF03, 0xFF32, 0xFF75,\n    0x0015, 0x0000, 0xFFAF, 0xFF7B, 0xFF59, 0xFF31, 0xFF04, 0xFED5,\n    0xFEA8, 0xFE7F, 0xFE5D, 0xFE45, 0xFE39, 0xFE3C, 0xFE51, 0xFEB8,\n    0xB963, 0xB210, 0xAE01, 0xAEF8, 0xB02A, 0xB16B, 0xB2B5, 0xB404,\n    0xB552, 0xB699, 0xB7D6, 0xB902, 0xBA18, 0xBB13, 0xBBEF, 0xBC66,\n    0x347D, 0x481D, 0x4839, 0x58D2, 0x56AE, 0x53DF, 0x5089, 0x4CCE,\n    0x48D0, 0x44B4, 0x409A, 0x3CA8, 0x38FE, 0x35C0, 0x3311, 0x318E,\n    0x1AA5, 0x140E, 0x15CF, 0x07FF, 0x086B, 0x094B, 0x0A8C, 0x0C15,\n    0x0DD3, 0x0FAF, 0x1193, 0x136A, 0x151D, 0x1697, 0x17C1, 0x1863,\n    0x0F44, 0x1867, 0x17BF, 0x1EEE, 0x1EA1, 0x1E16, 0x1D58, 0x1C73,\n    0x1B73, 0x1A64, 0x1951, 0x1846, 0x174F, 0x1678, 0x15CC, 0x156F,\n    0xB01D, 0xA085, 0xA184, 0x8BAA, 0x8D32, 0x8F83, 0x9276, 0x95E4,\n    0x99A6, 0x9D96, 0xA18B, 0xA55F, 0xA8EB, 0xAC07, 0xAE8E, 0xAFF3,\n    0x0491, 0x04E8, 0x047A, 0x018A, 0x011A, 0x00B9, 0x0066, 0x001E,\n    0xFFE1, 0xFFAB, 0xFF7C, 0xFF50, 0xFF27, 0xFEFE, 0xFED4, 0xFEB8,\n    0x00F8, 0x00BB, 0x0071, 0x0087, 0x0074, 0x0060, 0x004A, 0x0033,\n    0x001B, 0x0004, 0xFFEE, 0xFFD9, 0xFFC4, 0xFFB2, 0xFFA2, 0xFF99,\n    0xB7C2, 0xB562, 0xB37D, 0xAD56, 0xAD68, 0xADAD, 0xAE1B, 0xAEA9,\n    0xAF4D, 0xB000, 0xB0B7, 0xB169, 0xB20E, 0xB29C, 0xB30A, 0xB345,\n    0x4BA5, 0x47C2, 0x472C, 0x5A96, 0x58E0, 0x5671, 0x536D, 0x4FF9,\n    0x4C3A, 0x4854, 0x446B, 0x40A5, 0x3D25, 0x3A11, 0x378C, 0x3625,\n    0xEEA7, 0xEEF4, 0xE185, 0xF1E3, 0xF0C6, 0xEF14, 0xECE8, 0xEA60,\n    0xE79A, 0xE4B2, 0xE1C5, 0xDEF0, 0xDC51, 0xDA04, 0xD827, 0xD720,\n    0xEA76, 0xE441, 0xDD4C, 0xD4D6, 0xD5DF, 0xD73E, 0xD8E2, 0xDAB9,\n    0xDCB1, 0xDEB9, 0xE0C0, 0xE2B5, 0xE485, 0xE61F, 0xE772, 0xE831,\n    0xA8A8, 0xA1D9, 0xA42C, 0x90E0, 0x932D, 0x963C, 0x99E7, 0x9E06,\n    0xA271, 0xA700, 0xAB8E, 0xAFF1, 0xB403, 0xB79C, 0xBA94, 0xBC3F,\n    0x8001, 0x8001, 0x40FC, 0x4107, 0x412B, 0x4171, 0x41D6, 0x4255,\n    0x42E8, 0x438C, 0x443C, 0x44F3, 0x45AE, 0x4667, 0x471B, 0x47C5,\n    0x4861, 0x48EA, 0xBF5F, 0x8001, 0x8001, 0x40F1, 0x40FD, 0x4125,\n    0x4171, 0x41E0, 0x426B, 0x430C, 0x43BF, 0x4480, 0x4549, 0x4615,\n    0x46E0, 0x47A5, 0x485F, 0x490A, 0x49A1, 0xBF5F, 0xFDDC, 0xFD3F,\n    0xFED6, 0x0144, 0x0472, 0x0876, 0x0C3A, 0x0EA7, 0x0FC3, 0x1065,\n    0x10AA, 0x10B3, 0x109E, 0x108B, 0x109A, 0x10B5, 0x193B, 0x1926,\n    0x1763, 0x14BB, 0x11BA, 0x0E72, 0x0AF7, 0x075E, 0x03BA, 0x0020,\n    0xFCA6, 0xF95D, 0xF65B, 0xF3B4, 0xF17C, 0xF09A, 0x3BB7, 0x3C8F,\n    0x3D29, 0x3D6D, 0x3D64, 0x3D2A, 0x3CC9, 0x3C4A, 0x3BB6, 0x3B18,\n    0x3A78, 0x39E1, 0x395A, 0x38EE, 0x38A7, 0x388D,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_43.inc.c",
    "content": "static const struct Animation anim_43[] = {\n    1,\n    189,\n    0,\n    0,\n    0x02,\n    ANIMINDEX_NUMPARTS(anim_43_indices),\n    anim_43_values,\n    anim_43_indices,\n    0,\n};\n\n\nstatic const u16 anim_43_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0029,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0028,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0027,\n    0x0001, 0x0023, 0x0001, 0x0024, 0x0001, 0x0025,\n    0x0001, 0x0007, 0x0001, 0x0008, 0x0001, 0x0009,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0006,\n    0x0001, 0x0003, 0x0001, 0x0004, 0x0001, 0x0005,\n    0x0001, 0x001F, 0x0001, 0x0020, 0x0001, 0x0021,\n    0x0001, 0x000E, 0x0001, 0x000F, 0x0001, 0x0010,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x000D,\n    0x0001, 0x000A, 0x0001, 0x000B, 0x0001, 0x000C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0022,\n    0x0001, 0x001C, 0x0001, 0x001D, 0x0001, 0x001E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x001B,\n    0x0001, 0x0018, 0x0001, 0x0019, 0x0001, 0x001A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0026,\n    0x0001, 0x0015, 0x0001, 0x0016, 0x0001, 0x0017,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0014,\n    0x0001, 0x0011, 0x0001, 0x0012, 0x0001, 0x0013,\n};\n\nstatic const s16 anim_43_values[] = {\n    0x0000, 0x00AA, 0x3FFF, 0xE7CE, 0xF984, 0xE96B, 0xF446, 0x12E2,\n    0xF1E6, 0x8E6F, 0x0ACF, 0x020D, 0xEDD2, 0xE463, 0xF3F3, 0x14EA,\n    0x9940, 0xFDFF, 0xFF5C, 0xD845, 0x1C6F, 0x1E12, 0x0884, 0xBEE5,\n    0xFF96, 0x00DB, 0xDDFC, 0x565B, 0xF86A, 0xEB45, 0x8833, 0x8001,\n    0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x1681,\n    0x0A74, 0x367D,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_44.inc.c",
    "content": "static const struct Animation anim_44[] = {\n    1,\n    189,\n    0,\n    0,\n    0x0F,\n    ANIMINDEX_NUMPARTS(anim_44_indices),\n    anim_44_values,\n    anim_44_indices,\n    0,\n};\n\n\nstatic const u16 anim_44_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000F, 0x0136,\n    0x0001, 0x0000, 0x000F, 0x0118, 0x000F, 0x0127,\n    0x000F, 0x00EB, 0x000F, 0x00FA, 0x000F, 0x0109,\n    0x0001, 0x00E7, 0x0001, 0x00E8, 0x0001, 0x00E9,\n    0x0001, 0x0007, 0x0001, 0x0008, 0x0001, 0x0009,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0006,\n    0x0001, 0x0003, 0x0001, 0x0004, 0x0001, 0x0005,\n    0x0001, 0x00E3, 0x0001, 0x00E4, 0x0001, 0x00E5,\n    0x0001, 0x000E, 0x0001, 0x000F, 0x0001, 0x0010,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x000D,\n    0x0001, 0x000A, 0x0001, 0x000B, 0x0001, 0x000C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00E6,\n    0x000F, 0x00B6, 0x000F, 0x00C5, 0x000F, 0x00D4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000F, 0x00A7,\n    0x000F, 0x007A, 0x000F, 0x0089, 0x000F, 0x0098,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00EA,\n    0x000F, 0x004D, 0x000F, 0x005C, 0x000F, 0x006B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000F, 0x003E,\n    0x000F, 0x0011, 0x000F, 0x0020, 0x000F, 0x002F,\n};\n\nstatic const s16 anim_44_values[] = {\n    0x0000, 0x0036, 0x3FFF, 0xDFC0, 0xF9D7, 0xF87B, 0xEA00, 0x25D0,\n    0xF0A6, 0x8291, 0x3E9F, 0x0F58, 0x057C, 0xEB39, 0x43DB, 0x6A91,\n    0xFD17, 0xFFA1, 0xFF9C, 0xFF8D, 0xFF77, 0xFF5A, 0xFF39, 0xFF14,\n    0xFEEE, 0xFEC8, 0xFEA3, 0xFE82, 0xFE65, 0xFE4F, 0xFE40, 0xFE3B,\n    0x0254, 0x024A, 0x022B, 0x01FC, 0x01C0, 0x017A, 0x012D, 0x00DE,\n    0x008E, 0x0041, 0xFFFD, 0xFFC0, 0xFF91, 0xFF73, 0xFF68, 0xC293,\n    0xC2F4, 0xC403, 0xC5A4, 0xC7B8, 0xCA24, 0xCCCA, 0xCF8D, 0xD24F,\n    0xD4F5, 0xD761, 0xD976, 0xDB16, 0xDC25, 0xDC86, 0x0640, 0x067E,\n    0x072D, 0x083A, 0x0992, 0x0B21, 0x0CD7, 0x0E9F, 0x1067, 0x121C,\n    0x13AC, 0x1504, 0x1611, 0x16C0, 0x16FE, 0xFFC3, 0x0032, 0x016A,\n    0x034B, 0x05B1, 0x087C, 0x0B8A, 0x0EB9, 0x11E8, 0x14F6, 0x17C1,\n    0x1A27, 0x1C08, 0x1D40, 0x1DB0, 0x0BBA, 0x0BA1, 0x0B5E, 0x0AF5,\n    0x0A70, 0x09D5, 0x092B, 0x087A, 0x07CA, 0x0720, 0x0685, 0x0600,\n    0x0597, 0x0553, 0x053B, 0x9C0D, 0x9C95, 0x9E0F, 0xA054, 0xA33C,\n    0xA69D, 0xAA4F, 0xAE2A, 0xB205, 0xB5B7, 0xB919, 0xBC00, 0xBE45,\n    0xBFC0, 0xC047, 0x00D0, 0x00CA, 0x00B8, 0x009D, 0x007B, 0x0053,\n    0x0027, 0xFFFA, 0xFFCD, 0xFFA1, 0xFF79, 0xFF57, 0xFF3C, 0xFF2A,\n    0xFF24, 0xFF38, 0xFF3E, 0xFF4F, 0xFF6A, 0xFF8C, 0xFFB4, 0xFFDF,\n    0x000C, 0x0039, 0x0064, 0x008C, 0x00AE, 0x00C9, 0x00DA, 0x00E1,\n    0xC1AA, 0xC21B, 0xC356, 0xC53A, 0xC7A6, 0xCA77, 0xCD8B, 0xD0C1,\n    0xD3F7, 0xD70B, 0xD9DC, 0xDC48, 0xDE2C, 0xDF67, 0xDFD8, 0x09C7,\n    0x0AE8, 0x0E12, 0x12EF, 0x1927, 0x2063, 0x284D, 0x308D, 0x38CE,\n    0x40B8, 0x47F4, 0x4E2B, 0x5308, 0x5632, 0x5754, 0xFAB2, 0xFAAE,\n    0xFAA2, 0xFA91, 0xFA7B, 0xFA61, 0xFA44, 0xFA27, 0xFA09, 0xF9ED,\n    0xF9D3, 0xF9BC, 0xF9AB, 0xF9A0, 0xF99C, 0xF79D, 0xF773, 0xF6FC,\n    0xF647, 0xF55F, 0xF451, 0xF329, 0xF1F5, 0xF0C1, 0xEF99, 0xEE8B,\n    0xEDA3, 0xECED, 0xEC77, 0xEC4D, 0x9D32, 0x9CE2, 0x9C01, 0x9AA7,\n    0x98ED, 0x96EA, 0x94B7, 0x926C, 0x9020, 0x8DED, 0x8BEB, 0x8A30,\n    0x88D6, 0x87F5, 0x87A5, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001,\n    0x8001, 0x4171, 0xBF5F, 0xFE8E, 0xFE93, 0xFEA2, 0xFEBA, 0xFED7,\n    0xFEFA, 0xFF20, 0xFF47, 0xFF6F, 0xFF94, 0xFFB7, 0xFFD5, 0xFFEC,\n    0xFFFB, 0x0000, 0x02EB, 0x02E0, 0x02C2, 0x0293, 0x0257, 0x0211,\n    0x01C5, 0x0175, 0x0126, 0x00DA, 0x0094, 0x0058, 0x0029, 0x000A,\n    0x0000, 0x054A, 0x0594, 0x0664, 0x07A3, 0x093A, 0x0B15, 0x0D1C,\n    0x0F39, 0x1156, 0x135D, 0x1538, 0x16D0, 0x180F, 0x18DE, 0x1928,\n    0xFCBE, 0xFCCA, 0xFCEC, 0xFD21, 0xFD64, 0xFDB1, 0xFE07, 0xFE5F,\n    0xFEB8, 0xFF0D, 0xFF5B, 0xFF9E, 0xFFD2, 0xFFF4, 0x0000, 0x13EC,\n    0x13C5, 0x1358, 0x12B2, 0x11DC, 0x10E4, 0x0FD4, 0x0EB8, 0x0D9D,\n    0x0C8D, 0x0B95, 0x0ABF, 0x0A18, 0x09AC, 0x0985, 0x1E68, 0x1EC3,\n    0x1FC3, 0x214D, 0x2344, 0x258D, 0x280E, 0x2AAA, 0x2D46, 0x2FC6,\n    0x320F, 0x3407, 0x3590, 0x3690, 0x36EC,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_45_46.inc.c",
    "content": "static const struct Animation anim_45[] = {\n    1,\n    189,\n    0,\n    0,\n    0x01,\n    ANIMINDEX_NUMPARTS(anim_45_46_indices),\n    anim_45_46_values,\n    anim_45_46_indices,\n    0,\n};\n\nstatic const struct Animation anim_46[] = {\n    1,\n    189,\n    1,\n    0,\n    0x0E,\n    ANIMINDEX_NUMPARTS(anim_45_46_indices),\n    anim_45_46_values,\n    anim_45_46_indices,\n    0,\n};\n\n\nstatic const u16 anim_45_46_indices[] = {\n    0x0001, 0x0000, 0x000E, 0x0001, 0x000E, 0x000F, 0x0001, 0x0000, 0x0001, 0x001D, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x0245,\n    0x000E, 0x021B, 0x000E, 0x0229, 0x000E, 0x0237,\n    0x000E, 0x01F1, 0x000E, 0x01FF, 0x000E, 0x020D,\n    0x0001, 0x01E0, 0x0001, 0x01E1, 0x000E, 0x01E2,\n    0x000E, 0x0056, 0x000E, 0x0064, 0x000E, 0x0072,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x0048,\n    0x000E, 0x001E, 0x000E, 0x002C, 0x000E, 0x003A,\n    0x0001, 0x01A6, 0x0001, 0x01A7, 0x000E, 0x01A8,\n    0x000E, 0x00B8, 0x000E, 0x00C6, 0x000E, 0x00D4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x00AA,\n    0x000E, 0x0080, 0x000E, 0x008E, 0x000E, 0x009C,\n    0x000E, 0x01B6, 0x000E, 0x01C4, 0x000E, 0x01D2,\n    0x000E, 0x017C, 0x000E, 0x018A, 0x000E, 0x0198,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x016E,\n    0x000E, 0x0144, 0x000E, 0x0152, 0x000E, 0x0160,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01F0,\n    0x000E, 0x011A, 0x000E, 0x0128, 0x000E, 0x0136,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x010C,\n    0x000E, 0x00E2, 0x000E, 0x00F0, 0x000E, 0x00FE,\n};\n\nstatic const s16 anim_45_46_values[] = {\n    0x0000, 0x0036, 0x0036, 0x0036, 0x003D, 0x004D, 0x005C, 0x0067,\n    0x0075, 0x008C, 0x009E, 0x00A1, 0x009D, 0x009A, 0x009A, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0002, 0x0003, 0x0004,\n    0x0005, 0x0006, 0x0006, 0x0007, 0x0007, 0x3FFF, 0xDFC0, 0xD30E,\n    0xC71D, 0xCA34, 0xCFCE, 0xD6ED, 0xDE95, 0xE5CA, 0xEB90, 0xEEEC,\n    0xEEE0, 0xB46D, 0xB46D, 0xB46D, 0xF9D7, 0xF72F, 0xF475, 0xF492,\n    0xF515, 0xF5D9, 0xF6BA, 0xF793, 0xF83F, 0xF89B, 0xF880, 0xF10B,\n    0xF10B, 0xF10B, 0xF87B, 0x0052, 0x080C, 0x0740, 0x0580, 0x0310,\n    0x0038, 0xFD3E, 0xFA64, 0xF7F3, 0xF62F, 0xFC06, 0xFC06, 0xFC06,\n    0xEA00, 0xEA4B, 0xEB18, 0xEC4E, 0xEDD4, 0xEF8D, 0xF161, 0xF335,\n    0xF4EE, 0xF673, 0xF7AA, 0xF877, 0xF8C2, 0xF8C2, 0x25D3, 0x2D40,\n    0x372F, 0x34DA, 0x31E2, 0x2D89, 0x2542, 0x1CF9, 0x18C1, 0x1595,\n    0x1145, 0x48D2, 0x48D2, 0x48D2, 0xF0A6, 0xEEC8, 0xEC36, 0xEC6F,\n    0xEE1E, 0xEFE0, 0xF0F3, 0xF1E5, 0xF2E9, 0xF454, 0xF7A4, 0xF1D8,\n    0xF1D8, 0xF1D8, 0x828E, 0x7EF5, 0x78FF, 0x745B, 0x6F2B, 0x6B98,\n    0x6C10, 0x6F6C, 0x7616, 0x7DC9, 0x834B, 0x80CA, 0x80CA, 0x80CA,\n    0x3E9F, 0x48B9, 0x50AA, 0x4B36, 0x43E0, 0x3B3B, 0x31DC, 0x2857,\n    0x1F41, 0x172E, 0x10B1, 0x0C61, 0x0ACF, 0x0ACF, 0x0F58, 0x0EB2,\n    0x0D7D, 0x0C45, 0x0AE2, 0x0964, 0x07DE, 0x0663, 0x0504, 0x03D3,\n    0x02E3, 0x0246, 0x020D, 0x020D, 0x057C, 0x0DD5, 0x1531, 0x127E,\n    0x0E92, 0x09C9, 0x047E, 0xFF0B, 0xF9C9, 0xF515, 0xF148, 0xEEBF,\n    0xEDD2, 0xEDD2, 0xEB39, 0xEB52, 0xEB98, 0xEC00, 0xEC83, 0xED18,\n    0xEDB6, 0xEE54, 0xEEE9, 0xEF6C, 0xEFD5, 0xF01A, 0xF033, 0xF033,\n    0x3BD6, 0x378D, 0x32A8, 0x34AC, 0x36FC, 0x30CF, 0xC515, 0xD892,\n    0xE037, 0xE761, 0xED5D, 0xF178, 0xF2FE, 0xF2FE, 0x6A91, 0x699B,\n    0x68C6, 0x6A1A, 0x6BA2, 0x6ACB, 0x1222, 0x13F3, 0x12AF, 0x10E6,\n    0x0F0E, 0x0D9D, 0x0D07, 0x0D07, 0xFD17, 0xFA89, 0xF644, 0xF373,\n    0xEF63, 0xE485, 0x67CE, 0x7350, 0x7A60, 0x81C4, 0x8866, 0x8D2D,\n    0x8F03, 0x8F03, 0xFFA1, 0x00AB, 0x001B, 0xFB58, 0xF50B, 0xEF95,\n    0xEF23, 0xEFF0, 0xF505, 0xF9F5, 0xFD25, 0xFF95, 0x008C, 0x008C,\n    0x0254, 0x027C, 0x025B, 0x01BD, 0x00DD, 0xFF89, 0xFBD5, 0xF9EC,\n    0xFB00, 0xFCB0, 0xFE96, 0x0088, 0x016D, 0x016D, 0xC293, 0xC6EF,\n    0xCB25, 0xC93A, 0xC546, 0xC11F, 0xBC97, 0xBBDD, 0xBF75, 0xC21B,\n    0xC063, 0xBD42, 0xBB94, 0xBB94, 0x0640, 0x1F1C, 0x3F4A, 0x49A5,\n    0x4DD5, 0x4F7A, 0x4DCA, 0x4735, 0x39E2, 0x2EA6, 0x2E01, 0x3106,\n    0x3311, 0x3311, 0xFFC3, 0xFF81, 0x00AA, 0x0495, 0x0991, 0x0E04,\n    0x10BF, 0x12E8, 0x15DD, 0x180E, 0x1868, 0x180C, 0x17C1, 0x17C1,\n    0x0BBA, 0x0577, 0xFEDA, 0x0043, 0x0437, 0x0821, 0x0B4E, 0x0E01,\n    0x0F54, 0x1065, 0x127D, 0x14BF, 0x15CC, 0x15CC, 0x9C0D, 0x8E43,\n    0x7F98, 0x82BA, 0x8B67, 0x9351, 0x9742, 0x9AC3, 0xA055, 0xA598,\n    0xA9AD, 0xAD1C, 0xAE8E, 0xAE8E, 0x00D0, 0x0069, 0x0095, 0x0259,\n    0x04AD, 0x068B, 0x05C5, 0x07E6, 0x0A48, 0x0AE7, 0x06F7, 0x018D,\n    0xFED4, 0xFED4, 0xFF38, 0xFF20, 0xFF09, 0xFF10, 0xFF23, 0xFF40,\n    0xFF95, 0xFFA5, 0x0067, 0x00EF, 0x0098, 0xFFF9, 0xFFA2, 0xFFA2,\n    0xC1AA, 0xC70B, 0xCC42, 0xC9B8, 0xC4AD, 0xC009, 0xBE5F, 0xBF91,\n    0xBC8F, 0xB92A, 0xB677, 0xB412, 0xB30A, 0xB30A, 0x09C7, 0x204B,\n    0x3DED, 0x48E5, 0x4E99, 0x50E8, 0x4CD2, 0x4421, 0x3937, 0x3108,\n    0x319A, 0x354C, 0x378C, 0x378C, 0xFAB2, 0xFCF1, 0xFFB3, 0x002F,\n    0x0003, 0xFFD7, 0x0162, 0xFFE3, 0xF43A, 0xE7A0, 0xE015, 0xDA66,\n    0xD827, 0xD827, 0xF79D, 0xFB85, 0x004B, 0x0114, 0x00B7, 0x0058,\n    0x0117, 0x005E, 0xFB04, 0xF4A3, 0xEF00, 0xE9C2, 0xE772, 0xE772,\n    0x9D32, 0x8FC3, 0x8107, 0x82EB, 0x89E9, 0x902B, 0x91EF, 0x94BE,\n    0x9E24, 0xA84D, 0xB067, 0xB786, 0xBA94, 0xBA94, 0x7FFF, 0x7FFF,\n    0x4171, 0x419C, 0x4213, 0x42C7, 0x43A9, 0x44A9, 0x45B8, 0x46C7,\n    0x47C7, 0x48A9, 0x495D, 0x49D4, 0x49FF, 0x49FF, 0x0000, 0xFFFA,\n    0x0000, 0x0026, 0x005A, 0x0089, 0x00B5, 0x00C7, 0x0096, 0x0058,\n    0x002F, 0x000E, 0x0000, 0x0000, 0x0000, 0xFF49, 0x0000, 0x0411,\n    0x0968, 0x0E57, 0x12F3, 0x14D5, 0x0FBF, 0x0938, 0x04FA, 0x0176,\n    0x0000, 0x0000, 0xBF5F, 0xBF5B, 0xBF5F, 0xBF78, 0xBF99, 0xBFB7,\n    0xBFD4, 0xBFDF, 0xBFC0, 0xBF98, 0xBF7E, 0xBF68, 0xBF5F, 0xBF5F,\n    0x7FFF, 0x7FFF, 0x4171, 0x41A0, 0x4222, 0x42E7, 0x43DF, 0x44F7,\n    0x4620, 0x4749, 0x4862, 0x4959, 0x4A1E, 0x4AA0, 0x4AD0, 0x4AD0,\n    0xBF5F, 0xFE8E, 0xFE62, 0xFE45, 0xFE6A, 0xFE9B, 0xFED2, 0xFF0D,\n    0xFF49, 0xFF82, 0xFFB4, 0xFFDC, 0xFFF7, 0x0000, 0x0000, 0x02EB,\n    0x02E6, 0x02C2, 0x027C, 0x0229, 0x01CE, 0x0170, 0x0113, 0x00BD,\n    0x0071, 0x0035, 0x000E, 0x0000, 0x0000, 0x054A, 0x0303, 0x0135,\n    0x0267, 0x0404, 0x05EB, 0x07FC, 0x0A15, 0x0C17, 0x0DDF, 0x0F4D,\n    0x1041, 0x109A, 0x109A, 0x0000, 0xFFA9, 0xFF3A, 0xFF1C, 0xFF16,\n    0xFF16, 0xFF1C, 0xFF34, 0xFF5E, 0xFF94, 0xFFC8, 0xFFF1, 0x0000,\n    0x0000, 0xFCBE, 0xFCB2, 0xFCD6, 0xFD5B, 0xFE06, 0xFEA7, 0xFF32,\n    0xFF90, 0xFFBB, 0xFFDB, 0xFFF1, 0xFFFD, 0x0000, 0x0000, 0x13EC,\n    0x1831, 0x1DBB, 0x1F39, 0x1FAB, 0x20A4, 0x2596, 0x268C, 0x1D6F,\n    0x10B0, 0x038E, 0xF94C, 0xF527, 0xF527, 0x1E68, 0x1D8E, 0x1E68,\n    0x2226, 0x2672, 0x2B15, 0x2FDD, 0x3495, 0x3907, 0x3D00, 0x3BBD,\n    0x3A6B, 0x3921, 0x388D,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_47.inc.c",
    "content": "static const struct Animation anim_47[] = {\n    1,\n    189,\n    0,\n    0,\n    0x0B,\n    ANIMINDEX_NUMPARTS(anim_47_indices),\n    anim_47_values,\n    anim_47_indices,\n    0,\n};\n\n\nstatic const u16 anim_47_indices[] = {\n    0x000B, 0x0001, 0x000B, 0x000C, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0017, 0x0001, 0x0000,\n    0x000B, 0x0182, 0x000B, 0x018D, 0x000B, 0x0198,\n    0x000B, 0x0161, 0x000B, 0x016C, 0x000B, 0x0177,\n    0x000B, 0x0140, 0x000B, 0x014B, 0x000B, 0x0156,\n    0x0001, 0x013C, 0x0001, 0x013D, 0x0001, 0x013E,\n    0x000B, 0x0044, 0x000B, 0x004F, 0x000B, 0x005A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000B, 0x0039,\n    0x000B, 0x0018, 0x000B, 0x0023, 0x000B, 0x002E,\n    0x0001, 0x0138, 0x0001, 0x0139, 0x0001, 0x013A,\n    0x000B, 0x0091, 0x0001, 0x009C, 0x0001, 0x009D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000B, 0x0086,\n    0x000B, 0x0065, 0x000B, 0x0070, 0x000B, 0x007B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x013B,\n    0x000B, 0x0117, 0x000B, 0x0122, 0x000B, 0x012D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000B, 0x010C,\n    0x000B, 0x00EB, 0x000B, 0x00F6, 0x000B, 0x0101,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x013F,\n    0x000B, 0x00CA, 0x000B, 0x00D5, 0x000B, 0x00E0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000B, 0x00BF,\n    0x000B, 0x009E, 0x000B, 0x00A9, 0x000B, 0x00B4,\n};\n\nstatic const s16 anim_47_values[] = {\n    0x0000, 0x000F, 0x0009, 0x0005, 0x0003, 0x0002, 0x0001, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x008B, 0x008A, 0x008B, 0x008E,\n    0x0093, 0x0099, 0x009E, 0x00A4, 0x00A8, 0x00AB, 0x00AC, 0x3FFF,\n    0xF06F, 0xEF39, 0xEDCB, 0xEC39, 0xEA99, 0xE900, 0xE782, 0xE635,\n    0xE52D, 0xE47F, 0xE441, 0xE5B5, 0xE6F9, 0xE879, 0xEA1D, 0xEBD0,\n    0xED7C, 0xEF0B, 0xF068, 0xF17C, 0xF232, 0xF273, 0xE37C, 0xE5E9,\n    0xE8C6, 0xEBE9, 0xEF28, 0xF25B, 0xF556, 0xF7F0, 0xFA00, 0xFB5B,\n    0xFBD8, 0xE75C, 0xE6FC, 0xE68A, 0xE60D, 0xE58B, 0xE50C, 0xE495,\n    0xE42E, 0xE3DB, 0xE3A5, 0xE392, 0xEFD3, 0xED38, 0xEA24, 0xE6C4,\n    0xE346, 0xDFD6, 0xDCA2, 0xD9D5, 0xD79D, 0xD628, 0xD5A2, 0xE5EB,\n    0xE65E, 0xE6E5, 0xE77A, 0xE814, 0xE8AB, 0xE939, 0xE9B4, 0xEA16,\n    0xEA56, 0xEA6D, 0xDD01, 0xDE29, 0xDF85, 0xE103, 0xE28F, 0xE414,\n    0xE57F, 0xE6BC, 0xE7B7, 0xE85C, 0xE897, 0x136E, 0x1379, 0x1387,\n    0x1396, 0x13A5, 0x13B4, 0x13C2, 0x13CF, 0x13D8, 0x13DF, 0x13E1,\n    0xFF10, 0x0007, 0x012D, 0x026E, 0x03BB, 0x0503, 0x0635, 0x0740,\n    0x0813, 0x089E, 0x08D0, 0xF18B, 0xF20D, 0xF2A7, 0xF34F, 0xF3FD,\n    0xF4A8, 0xF548, 0xF5D4, 0xF642, 0xF68B, 0xF6A5, 0xD699, 0xD808,\n    0xD9B9, 0xDB94, 0xDD80, 0xDF64, 0xE127, 0xE2B1, 0xE3E9, 0xE4B7,\n    0xE501, 0x959C, 0x9440, 0x92A5, 0x90E4, 0x8F12, 0x8D47, 0x8B9C,\n    0x8A26, 0x88FF, 0x883C, 0x87F6, 0x5359, 0x4901, 0x1D8A, 0x2148,\n    0x23D4, 0x24CD, 0x258A, 0x2614, 0x2672, 0x26AE, 0x26CE, 0x26DC,\n    0x26DE, 0x0837, 0x0AB8, 0x0C6D, 0x0D13, 0x0D92, 0x0DEE, 0x0E2E,\n    0x0E56, 0x0E6B, 0x0E74, 0x0E76, 0xD4F7, 0xD021, 0xCCD6, 0xCB94,\n    0xCA9F, 0xC9ED, 0xC973, 0xC926, 0xC8FC, 0xC8EB, 0xC8E8, 0x3F34,\n    0x3F74, 0x3E6E, 0x3BEC, 0x38BE, 0x3532, 0x3198, 0x2E40, 0x2B79,\n    0x2995, 0x28E1, 0x02AC, 0x070F, 0x0A7A, 0x0C90, 0x0E9F, 0x1092,\n    0x1256, 0x13D8, 0x1505, 0x15C7, 0x160C, 0x09FB, 0x08BA, 0x082C,\n    0x087D, 0x090D, 0x09C5, 0x0A8E, 0x0B52, 0x0BF9, 0x0C6E, 0x0C9B,\n    0x9134, 0x9521, 0x98D0, 0x9C03, 0x9F88, 0xA324, 0xA69B, 0xA9B3,\n    0xAC32, 0xADDC, 0xAE77, 0xE4FD, 0xEDBB, 0xF237, 0xF15B, 0xEF25,\n    0xEC09, 0xE87A, 0xE4EC, 0xE1D4, 0xDFA3, 0xDECF, 0xEFA3, 0xEBEF,\n    0xEA16, 0xEA91, 0xEBA6, 0xED20, 0xEECC, 0xF073, 0xF1E3, 0xF2E6,\n    0xF348, 0xBE03, 0xB91C, 0xB6A4, 0xB73C, 0xB89D, 0xBA83, 0xBCAA,\n    0xBECD, 0xC0A8, 0xC1F7, 0xC276, 0x5575, 0x55A9, 0x549D, 0x521D,\n    0x4EF1, 0x4B69, 0x47D4, 0x4481, 0x41BF, 0x3FDD, 0x3F2B, 0x084C,\n    0x078F, 0x0782, 0x0849, 0x095C, 0x0A9B, 0x0BE7, 0x0D20, 0x0E27,\n    0x0EDB, 0x0F1E, 0xF842, 0xFA53, 0xFC08, 0xFD38, 0xFE73, 0xFFA7,\n    0x00C6, 0x01C1, 0x0288, 0x030A, 0x0339, 0x839A, 0x7F34, 0x7DBC,\n    0x7FDB, 0x8319, 0x8703, 0x8B2E, 0x8F2B, 0x928D, 0x94E6, 0x95C6,\n    0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F,\n    0x1265, 0x1245, 0x1228, 0x120C, 0x11ED, 0x11DA, 0x11E1, 0x12A9,\n    0x12DC, 0x12F2, 0x12F7, 0x007A, 0xFEF2, 0xFD96, 0xFC78, 0xFB61,\n    0xFAA5, 0xFA9A, 0xFFBF, 0x0001, 0xFF5D, 0xFEE7, 0xE952, 0xF8B0,\n    0x0472, 0x09BE, 0x0C73, 0x0D65, 0x0D67, 0x0376, 0x0339, 0x04C5,\n    0x05CC, 0x1122, 0x1089, 0x1033, 0x1035, 0x105B, 0x10AB, 0x112C,\n    0x121F, 0x136C, 0x1491, 0x1510, 0xE520, 0xE80D, 0xEA99, 0xEC25,\n    0xED4C, 0xEE5E, 0xEFAF, 0xF1B1, 0xF419, 0xF61E, 0xF6F7, 0x1AC5,\n    0x1340, 0x0D7D, 0x0B3D, 0x0A7F, 0x0A20, 0x0902, 0x0654, 0x02DA,\n    0xFFD8, 0xFE90, 0xCE42, 0xD2BC, 0xD5C8, 0xD6F2, 0xD7D4, 0xD879,\n    0xD8EA, 0xD931, 0xD958, 0xD968, 0xD96B, 0x07ED, 0x0780, 0x0736,\n    0x0719, 0x0704, 0x06F4, 0x06E9, 0x06E2, 0x06DF, 0x06DD, 0x06DD,\n    0x469B, 0x4CAC, 0x4FEF, 0x4FA9, 0x4E89, 0x4CD3, 0x4AD0, 0x48C5,\n    0x46F9, 0x45B1, 0x4534,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_48.inc.c",
    "content": "static const struct Animation anim_48[] = {\n    0,\n    189,\n    0,\n    0,\n    0x4D,\n    ANIMINDEX_NUMPARTS(anim_48_indices),\n    anim_48_values,\n    anim_48_indices,\n    0,\n};\n\n\nstatic const u16 anim_48_indices[] = {\n    0x0001, 0x0000, 0x004D, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x004E, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x004D, 0x09A8,\n    0x004D, 0x090E, 0x0001, 0x0000, 0x004D, 0x095B,\n    0x004D, 0x0874, 0x0001, 0x0000, 0x004D, 0x08C1,\n    0x0001, 0x0870, 0x0001, 0x0871, 0x0001, 0x0872,\n    0x004D, 0x0183, 0x004D, 0x01D0, 0x004D, 0x021D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x004D, 0x0136,\n    0x004D, 0x004F, 0x004D, 0x009C, 0x004D, 0x00E9,\n    0x0001, 0x0787, 0x0001, 0x0788, 0x004D, 0x0789,\n    0x004D, 0x039E, 0x004D, 0x03EB, 0x004D, 0x0438,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x004D, 0x0351,\n    0x004D, 0x026A, 0x004D, 0x02B7, 0x004D, 0x0304,\n    0x0001, 0x0000, 0x004D, 0x07D6, 0x004D, 0x0823,\n    0x004D, 0x06A0, 0x004D, 0x06ED, 0x004D, 0x073A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x004D, 0x0653,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x004D, 0x0606,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0873,\n    0x004D, 0x051F, 0x004D, 0x056C, 0x004D, 0x05B9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x004D, 0x04D2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x004D, 0x0485,\n};\n\nstatic const s16 anim_48_values[] = {\n    0x0000, 0x00C0, 0x00BF, 0x00BB, 0x00B7, 0x00B4, 0x00B1, 0x00AE,\n    0x00AC, 0x00AC, 0x00AD, 0x00AF, 0x00B1, 0x00B3, 0x00B6, 0x00B8,\n    0x00BB, 0x00BE, 0x00C0, 0x00C3, 0x00C6, 0x00C8, 0x00CA, 0x00CD,\n    0x00D0, 0x00D3, 0x00D5, 0x00D8, 0x00D9, 0x00D9, 0x00D9, 0x00D8,\n    0x00D5, 0x00D3, 0x00D0, 0x00CD, 0x00CA, 0x00C8, 0x00C5, 0x00C3,\n    0x00C0, 0x00BD, 0x00BA, 0x00B8, 0x00B5, 0x00B2, 0x00B0, 0x00AE,\n    0x00AC, 0x00AB, 0x00AB, 0x00AB, 0x00AC, 0x00AC, 0x00AD, 0x00AE,\n    0x00B0, 0x00B2, 0x00B6, 0x00BB, 0x00C2, 0x00C6, 0x00C9, 0x00CC,\n    0x00CF, 0x00D2, 0x00D4, 0x00D6, 0x00D8, 0x00D9, 0x00D9, 0x00D8,\n    0x00D6, 0x00D3, 0x00CF, 0x00CA, 0x00C5, 0x00C3, 0x3FFF, 0xDFD1,\n    0xDFCB, 0xDFB9, 0xDF9C, 0xDF75, 0xDF46, 0xDF0E, 0xDECF, 0xDE89,\n    0xDE3F, 0xDDEF, 0xDD9C, 0xDD47, 0xDCEF, 0xDC97, 0xDC3F, 0xDBE7,\n    0xDB92, 0xDB3F, 0xDAF0, 0xDAA5, 0xDA5F, 0xDA20, 0xD9E9, 0xD9B9,\n    0xD992, 0xD975, 0xD964, 0xD95D, 0xD960, 0xD967, 0xD973, 0xD984,\n    0xD999, 0xD9B1, 0xD9CD, 0xD9ED, 0xDA10, 0xDA36, 0xDA5F, 0xDA8B,\n    0xDAB9, 0xDAE9, 0xDB1A, 0xDB4E, 0xDB82, 0xDBB8, 0xDBEF, 0xDC27,\n    0xDC5F, 0xDC97, 0xDCCF, 0xDD07, 0xDD3F, 0xDD76, 0xDDAC, 0xDDE0,\n    0xDE14, 0xDE46, 0xDE75, 0xDEA3, 0xDECF, 0xDEF8, 0xDF1E, 0xDF41,\n    0xDF61, 0xDF7D, 0xDF96, 0xDFAA, 0xDFBB, 0xDFC7, 0xDFCE, 0xDFD1,\n    0xDFD1, 0xDFD1, 0xDFD1, 0xDFD1, 0x047B, 0x0470, 0x0451, 0x041E,\n    0x03DB, 0x0387, 0x0326, 0x02B7, 0x023E, 0x01BB, 0x0130, 0x009F,\n    0x0009, 0xFF71, 0xFED7, 0xFE3C, 0xFDA3, 0xFD0D, 0xFC7C, 0xFBF1,\n    0xFB6E, 0xFAF5, 0xFA87, 0xFA25, 0xF9D1, 0xF98E, 0xF95B, 0xF93C,\n    0xF931, 0xF936, 0xF943, 0xF958, 0xF975, 0xF999, 0xF9C4, 0xF9F6,\n    0xFA2D, 0xFA6B, 0xFAAD, 0xFAF5, 0xFB41, 0xFB91, 0xFBE5, 0xFC3C,\n    0xFC96, 0xFCF2, 0xFD51, 0xFDB1, 0xFE12, 0xFE74, 0xFED7, 0xFF39,\n    0xFF9B, 0xFFFC, 0x005B, 0x00BA, 0x0116, 0x0170, 0x01C7, 0x021B,\n    0x026B, 0x02B7, 0x02FF, 0x0341, 0x037F, 0x03B7, 0x03E8, 0x0413,\n    0x0437, 0x0454, 0x0469, 0x0476, 0x047B, 0x047B, 0x047B, 0x047B,\n    0x047B, 0xED8C, 0xED85, 0xED72, 0xED55, 0xED2C, 0xECFB, 0xECC0,\n    0xEC7F, 0xEC36, 0xEBE9, 0xEB96, 0xEB40, 0xEAE6, 0xEA8B, 0xEA2F,\n    0xE9D3, 0xE978, 0xE91F, 0xE8C9, 0xE876, 0xE828, 0xE7E0, 0xE79E,\n    0xE764, 0xE732, 0xE70A, 0xE6EC, 0xE6D9, 0xE6D3, 0xE6D6, 0xE6DD,\n    0xE6EA, 0xE6FB, 0xE711, 0xE72A, 0xE748, 0xE769, 0xE78E, 0xE7B5,\n    0xE7E0, 0xE80D, 0xE83D, 0xE86F, 0xE8A3, 0xE8D8, 0xE90F, 0xE947,\n    0xE980, 0xE9BA, 0xE9F5, 0xEA2F, 0xEA6A, 0xEAA4, 0xEADE, 0xEB17,\n    0xEB50, 0xEB87, 0xEBBC, 0xEBF0, 0xEC22, 0xEC51, 0xEC7F, 0xECA9,\n    0xECD1, 0xECF6, 0xED17, 0xED34, 0xED4E, 0xED63, 0xED75, 0xED81,\n    0xED89, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xDF7F, 0xDF86,\n    0xDF9A, 0xDFBB, 0xDFE7, 0xE01D, 0xE05D, 0xE0A4, 0xE0F3, 0xE148,\n    0xE1A2, 0xE200, 0xE262, 0xE2C5, 0xE32A, 0xE38E, 0xE3F1, 0xE453,\n    0xE4B1, 0xE50B, 0xE560, 0xE5AF, 0xE5F7, 0xE636, 0xE66C, 0xE698,\n    0xE6B9, 0xE6CD, 0xE6D4, 0xE6D1, 0xE6C9, 0xE6BB, 0xE6A9, 0xE691,\n    0xE675, 0xE655, 0xE631, 0xE609, 0xE5DD, 0xE5AF, 0xE57E, 0xE549,\n    0xE513, 0xE4DB, 0xE4A0, 0xE464, 0xE427, 0xE3E8, 0xE3A9, 0xE36A,\n    0xE32A, 0xE2EA, 0xE2AA, 0xE26B, 0xE22C, 0xE1EF, 0xE1B3, 0xE179,\n    0xE140, 0xE10A, 0xE0D6, 0xE0A4, 0xE076, 0xE04A, 0xE023, 0xDFFE,\n    0xDFDE, 0xDFC2, 0xDFAB, 0xDF98, 0xDF8A, 0xDF82, 0xDF7F, 0xDF7F,\n    0xDF7F, 0xDF7F, 0xDF7F, 0xF765, 0xF75F, 0xF74F, 0xF734, 0xF711,\n    0xF6E5, 0xF6B1, 0xF677, 0xF637, 0xF5F2, 0xF5A9, 0xF55C, 0xF50E,\n    0xF4BD, 0xF46C, 0xF41A, 0xF3C9, 0xF37B, 0xF32E, 0xF2E5, 0xF2A0,\n    0xF260, 0xF226, 0xF1F3, 0xF1C7, 0xF1A3, 0xF188, 0xF178, 0xF172,\n    0xF175, 0xF17B, 0xF186, 0xF196, 0xF1A9, 0xF1BF, 0xF1DA, 0xF1F7,\n    0xF217, 0xF23A, 0xF260, 0xF288, 0xF2B2, 0xF2DF, 0xF30C, 0xF33C,\n    0xF36C, 0xF39E, 0xF3D1, 0xF404, 0xF438, 0xF46C, 0xF49F, 0xF4D3,\n    0xF506, 0xF539, 0xF56B, 0xF59B, 0xF5CB, 0xF5F8, 0xF625, 0xF64F,\n    0xF677, 0xF69D, 0xF6C0, 0xF6E0, 0xF6FE, 0xF718, 0xF72E, 0xF741,\n    0xF751, 0xF75C, 0xF763, 0xF765, 0xF765, 0xF765, 0xF765, 0xF765,\n    0xE83F, 0xE843, 0xE84D, 0xE85D, 0xE872, 0xE88C, 0xE8AB, 0xE8CE,\n    0xE8F4, 0xE91D, 0xE949, 0xE977, 0xE9A6, 0xE9D6, 0xEA07, 0xEA37,\n    0xEA68, 0xEA97, 0xEAC5, 0xEAF0, 0xEB19, 0xEB40, 0xEB63, 0xEB81,\n    0xEB9C, 0xEBB1, 0xEBC1, 0xEBCB, 0xEBCE, 0xEBCD, 0xEBC9, 0xEBC2,\n    0xEBB9, 0xEBAD, 0xEBA0, 0xEB90, 0xEB7F, 0xEB6B, 0xEB56, 0xEB40,\n    0xEB28, 0xEB0F, 0xEAF4, 0xEAD9, 0xEABC, 0xEA9F, 0xEA82, 0xEA63,\n    0xEA45, 0xEA26, 0xEA07, 0xE9E8, 0xE9C9, 0xE9AA, 0xE98C, 0xE96E,\n    0xE951, 0xE935, 0xE919, 0xE8FF, 0xE8E6, 0xE8CE, 0xE8B7, 0xE8A2,\n    0xE88F, 0xE87D, 0xE86E, 0xE860, 0xE855, 0xE84C, 0xE845, 0xE841,\n    0xE83F, 0xE83F, 0xE83F, 0xE83F, 0xE83F, 0xBB44, 0xBB7E, 0xBC23,\n    0xBD2E, 0xBE94, 0xC04E, 0xC253, 0xC49B, 0xC71E, 0xC9D3, 0xCCB1,\n    0xCFB1, 0xD2CB, 0xD5F5, 0xD927, 0xDC59, 0xDF83, 0xE29C, 0xE59C,\n    0xE87B, 0xEB30, 0xEDB3, 0xEFFB, 0xF200, 0xF3BA, 0xF520, 0xF62A,\n    0xF6D0, 0xF709, 0xF6F2, 0xF6AD, 0xF63E, 0xF5A5, 0xF4E6, 0xF401,\n    0xF2FB, 0xF1D4, 0xF08F, 0xEF2E, 0xEDB3, 0xEC20, 0xEA78, 0xE8BC,\n    0xE6EF, 0xE513, 0xE32A, 0xE136, 0xDF3A, 0xDD37, 0xDB30, 0xD927,\n    0xD71E, 0xD517, 0xD314, 0xD117, 0xCF24, 0xCD3B, 0xCB5F, 0xC992,\n    0xC7D6, 0xC62E, 0xC49B, 0xC320, 0xC1BF, 0xC07A, 0xBF53, 0xBE4C,\n    0xBD68, 0xBCA9, 0xBC10, 0xBBA0, 0xBB5C, 0xBB44, 0xBB44, 0xBB44,\n    0xBB44, 0xBB44, 0x0000, 0x0014, 0x0050, 0x00B1, 0x0132, 0x01D2,\n    0x028E, 0x0361, 0x044A, 0x0545, 0x064F, 0x0765, 0x0884, 0x09A9,\n    0x0AD1, 0x0BFA, 0x0D1F, 0x0E3E, 0x0F54, 0x105E, 0x1159, 0x1242,\n    0x1315, 0x13D0, 0x1470, 0x14F2, 0x1553, 0x158F, 0x15A3, 0x159B,\n    0x1582, 0x155A, 0x1522, 0x14DD, 0x148A, 0x142B, 0x13C1, 0x134B,\n    0x12CB, 0x1242, 0x11B0, 0x1116, 0x1076, 0x0FCF, 0x0F22, 0x0E71,\n    0x0DBD, 0x0D04, 0x0C4A, 0x0B8E, 0x0AD1, 0x0A15, 0x0959, 0x089E,\n    0x07E6, 0x0731, 0x0680, 0x05D4, 0x052D, 0x048D, 0x03F3, 0x0361,\n    0x02D8, 0x0258, 0x01E2, 0x0178, 0x0118, 0x00C6, 0x0081, 0x0049,\n    0x0021, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x000D, 0x0035, 0x0074, 0x00CA, 0x0133, 0x01AE, 0x023A, 0x02D3,\n    0x0378, 0x0428, 0x04DF, 0x059C, 0x065D, 0x0721, 0x07E4, 0x08A5,\n    0x0962, 0x0A19, 0x0AC9, 0x0B6E, 0x0C07, 0x0C93, 0x0D0E, 0x0D77,\n    0x0DCD, 0x0E0C, 0x0E34, 0x0E42, 0x0E3C, 0x0E2C, 0x0E11, 0x0DED,\n    0x0DBF, 0x0D89, 0x0D4A, 0x0D04, 0x0CB6, 0x0C62, 0x0C07, 0x0BA7,\n    0x0B42, 0x0AD8, 0x0A6A, 0x09F9, 0x0984, 0x090D, 0x0894, 0x0819,\n    0x079D, 0x0721, 0x06A4, 0x0628, 0x05AE, 0x0534, 0x04BD, 0x0448,\n    0x03D7, 0x0369, 0x02FF, 0x029A, 0x023A, 0x01DF, 0x018B, 0x013E,\n    0x00F7, 0x00B9, 0x0082, 0x0055, 0x0030, 0x0015, 0x0005, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0xF549, 0xF540, 0xF525, 0xF4FA,\n    0xF4C1, 0xF47A, 0xF426, 0xF3C8, 0xF361, 0xF2F1, 0xF27B, 0xF1FF,\n    0xF17F, 0xF0FD, 0xF079, 0xEFF5, 0xEF72, 0xEEF3, 0xEE77, 0xEE01,\n    0xED91, 0xED29, 0xECCB, 0xEC78, 0xEC31, 0xEBF7, 0xEBCC, 0xEBB2,\n    0xEBA8, 0xEBAC, 0xEBB7, 0xEBC9, 0xEBE2, 0xEC01, 0xEC25, 0xEC50,\n    0xEC7F, 0xECB4, 0xECEC, 0xED29, 0xED6A, 0xEDAF, 0xEDF6, 0xEE40,\n    0xEE8D, 0xEEDC, 0xEF2C, 0xEF7E, 0xEFD1, 0xF025, 0xF079, 0xF0CD,\n    0xF120, 0xF173, 0xF1C5, 0xF216, 0xF264, 0xF2B1, 0xF2FB, 0xF343,\n    0xF387, 0xF3C8, 0xF405, 0xF43E, 0xF472, 0xF4A2, 0xF4CC, 0xF4F1,\n    0xF510, 0xF528, 0xF53A, 0xF546, 0xF549, 0xF549, 0xF549, 0xF549,\n    0xF549, 0xD47F, 0xD48C, 0xD4B4, 0xD4F4, 0xD549, 0xD5B2, 0xD62E,\n    0xD6B9, 0xD753, 0xD7F8, 0xD8A7, 0xD95E, 0xDA1C, 0xDADD, 0xDBA0,\n    0xDC63, 0xDD25, 0xDDE2, 0xDE99, 0xDF48, 0xDFEE, 0xE087, 0xE112,\n    0xE18E, 0xE1F7, 0xE24D, 0xE28C, 0xE2B4, 0xE2C1, 0xE2BC, 0xE2AB,\n    0xE291, 0xE26C, 0xE23F, 0xE208, 0xE1CA, 0xE183, 0xE136, 0xE0E1,\n    0xE087, 0xE027, 0xDFC2, 0xDF58, 0xDEEA, 0xDE78, 0xDE04, 0xDD8C,\n    0xDD13, 0xDC98, 0xDC1C, 0xDBA0, 0xDB24, 0xDAA8, 0xDA2D, 0xD9B4,\n    0xD93D, 0xD8C8, 0xD856, 0xD7E8, 0xD77E, 0xD719, 0xD6B9, 0xD65F,\n    0xD60B, 0xD5BD, 0xD577, 0xD538, 0xD502, 0xD4D4, 0xD4AF, 0xD495,\n    0xD484, 0xD47F, 0xD47F, 0xD47F, 0xD47F, 0xD47F, 0x0340, 0x0331,\n    0x0305, 0x02C0, 0x0262, 0x01EE, 0x0166, 0x00CD, 0x0024, 0xFF70,\n    0xFEAF, 0xFDE6, 0xFD15, 0xFC41, 0xFB6A, 0xFA94, 0xF9BF, 0xF8EF,\n    0xF826, 0xF765, 0xF6B0, 0xF607, 0xF56E, 0xF4E6, 0xF472, 0xF414,\n    0xF3CE, 0xF3A3, 0xF394, 0xF39A, 0xF3AC, 0xF3C9, 0xF3F1, 0xF424,\n    0xF460, 0xF4A4, 0xF4F2, 0xF547, 0xF5A4, 0xF607, 0xF671, 0xF6E0,\n    0xF754, 0xF7CD, 0xF84A, 0xF8CA, 0xF94D, 0xF9D3, 0xFA5A, 0xFAE2,\n    0xFB6A, 0xFBF3, 0xFC7B, 0xFD02, 0xFD88, 0xFE0B, 0xFE8B, 0xFF08,\n    0xFF81, 0xFFF5, 0x0063, 0x00CD, 0x0130, 0x018D, 0x01E2, 0x0230,\n    0x0274, 0x02B0, 0x02E2, 0x030A, 0x0328, 0x033A, 0x0340, 0x0340,\n    0x0340, 0x0340, 0x0340, 0x2A4A, 0x2A3E, 0x2A1D, 0x29E7, 0x299E,\n    0x2944, 0x28DB, 0x2865, 0x27E2, 0x2756, 0x26C1, 0x2625, 0x2584,\n    0x24E0, 0x243A, 0x2393, 0x22EF, 0x224E, 0x21B2, 0x211D, 0x2091,\n    0x200E, 0x1F98, 0x1F2F, 0x1ED5, 0x1E8C, 0x1E56, 0x1E35, 0x1E29,\n    0x1E2E, 0x1E3C, 0x1E52, 0x1E71, 0x1E98, 0x1EC7, 0x1EFC, 0x1F38,\n    0x1F7A, 0x1FC1, 0x200E, 0x2060, 0x20B6, 0x2110, 0x216E, 0x21CE,\n    0x2231, 0x2297, 0x22FE, 0x2366, 0x23D0, 0x243A, 0x24A3, 0x250D,\n    0x2575, 0x25DC, 0x2642, 0x26A5, 0x2705, 0x2763, 0x27BD, 0x2813,\n    0x2865, 0x28B2, 0x28F9, 0x293B, 0x2977, 0x29AC, 0x29DB, 0x2A02,\n    0x2A21, 0x2A37, 0x2A45, 0x2A4A, 0x2A4A, 0x2A4A, 0x2A4A, 0x2A4A,\n    0xF36B, 0xF32A, 0xF26F, 0xF142, 0xEFAE, 0xEDBB, 0xEB72, 0xE8DF,\n    0xE609, 0xE2FA, 0xDFBD, 0xDC59, 0xD8D9, 0xD546, 0xD1AA, 0xCE0E,\n    0xCA7B, 0xC6FB, 0xC398, 0xC05A, 0xBD4B, 0xBA76, 0xB7E2, 0xB59A,\n    0xB3A7, 0xB212, 0xB0E5, 0xB02A, 0xAFE9, 0xB004, 0xB051, 0xB0CF,\n    0xB17C, 0xB254, 0xB356, 0xB47E, 0xB5CB, 0xB73B, 0xB8C9, 0xBA76,\n    0xBC3C, 0xBE1C, 0xC011, 0xC219, 0xC433, 0xC65B, 0xC88F, 0xCACE,\n    0xCD13, 0xCF5D, 0xD1AA, 0xD3F7, 0xD641, 0xD887, 0xDAC5, 0xDCF9,\n    0xDF21, 0xE13B, 0xE344, 0xE539, 0xE718, 0xE8DF, 0xEA8B, 0xEC1A,\n    0xED89, 0xEED6, 0xEFFF, 0xF100, 0xF1D8, 0xF285, 0xF303, 0xF351,\n    0xF36B, 0xF36B, 0xF36B, 0xF36B, 0xF36B, 0xC353, 0xC37E, 0xC3EE,\n    0xC489, 0xC535, 0xC5DA, 0xC65C, 0xC6A3, 0xC696, 0xC54D, 0xC2E4,\n    0xC0C2, 0xC04B, 0xC14B, 0xC293, 0xC417, 0xC5CA, 0xC79F, 0xC98A,\n    0xCB7E, 0xCD6E, 0xCF4D, 0xD10F, 0xD2A7, 0xD408, 0xD55B, 0xD6BD,\n    0xD80F, 0xD932, 0xDA04, 0xDA69, 0xDA3E, 0xD967, 0xD7FB, 0xD633,\n    0xD41E, 0xD1C9, 0xCF42, 0xCC99, 0xC9DB, 0xC716, 0xC459, 0xC1B2,\n    0xBF2F, 0xBCDE, 0xBACF, 0xB90E, 0xB7AA, 0xB6B2, 0xB625, 0xB5F1,\n    0xB60D, 0xB66E, 0xB70B, 0xB7D9, 0xB8CD, 0xB9DF, 0xBB03, 0xBC2F,\n    0xBD5A, 0xBE79, 0xBF82, 0xC06A, 0xC128, 0xC1B2, 0xC211, 0xC258,\n    0xC289, 0xC2A8, 0xC2B8, 0xC2BC, 0xC2B8, 0xC2AD, 0xC29F, 0xC291,\n    0xC287, 0xC283, 0x17EE, 0x1871, 0x19CE, 0x1BBF, 0x1E00, 0x204D,\n    0x2262, 0x23F9, 0x24CE, 0x2511, 0x2523, 0x250B, 0x24CF, 0x2476,\n    0x2406, 0x2388, 0x2301, 0x2277, 0x21F3, 0x217B, 0x2115, 0x20C8,\n    0x209B, 0x2094, 0x20BB, 0x212F, 0x21FF, 0x231B, 0x2472, 0x25F3,\n    0x278E, 0x2933, 0x2AD0, 0x2C7F, 0x2E5C, 0x305F, 0x327D, 0x34AD,\n    0x36E5, 0x391C, 0x3B48, 0x3D60, 0x3F59, 0x412B, 0x42CB, 0x4431,\n    0x4552, 0x4624, 0x469F, 0x46C8, 0x46AE, 0x4656, 0x45C4, 0x44FE,\n    0x4408, 0x42E7, 0x41A1, 0x4038, 0x3EB3, 0x3D17, 0x3B67, 0x39A9,\n    0x37E2, 0x3616, 0x344A, 0x3229, 0x2F73, 0x2C4D, 0x28DE, 0x254A,\n    0x21B7, 0x1E4A, 0x1B28, 0x1878, 0x165E, 0x14FF, 0x1482, 0x0057,\n    0x0058, 0x005A, 0x005C, 0x005F, 0x0062, 0x0064, 0x0067, 0x0068,\n    0x0068, 0x0068, 0x0068, 0x0068, 0x0067, 0x0066, 0x0065, 0x0064,\n    0x0064, 0x0063, 0x0063, 0x0063, 0x0063, 0x0064, 0x0066, 0x0068,\n    0x006C, 0x0073, 0x007D, 0x0087, 0x0091, 0x0099, 0x009F, 0x00A1,\n    0x00A0, 0x009C, 0x0097, 0x0091, 0x008A, 0x0083, 0x007B, 0x0074,\n    0x006F, 0x006A, 0x0068, 0x0068, 0x0075, 0x008F, 0x00A9, 0x00B5,\n    0x00B5, 0x00B4, 0x00B3, 0x00B2, 0x00B0, 0x00AD, 0x00AA, 0x00A6,\n    0x00A1, 0x009C, 0x0096, 0x008E, 0x0086, 0x007D, 0x0073, 0x0068,\n    0x0059, 0x0045, 0x002C, 0x0011, 0xFFF5, 0xFFD8, 0xFFBC, 0xFFA2,\n    0xFF8C, 0xFF7B, 0xFF6F, 0xFF6B, 0xFFC8, 0xFFBE, 0xFFA4, 0xFF7F,\n    0xFF53, 0xFF25, 0xFEFC, 0xFEDB, 0xFEC8, 0xFEBE, 0xFEB7, 0xFEB2,\n    0xFEAF, 0xFEAD, 0xFEAD, 0xFEAE, 0xFEB0, 0xFEB3, 0xFEB6, 0xFEBA,\n    0xFEBD, 0xFEC1, 0xFEC4, 0xFEC6, 0xFEC8, 0xFEC9, 0xFECD, 0xFED1,\n    0xFED5, 0xFEDA, 0xFEDD, 0xFEE0, 0xFEE1, 0xFEE0, 0xFEDF, 0xFEDD,\n    0xFEDA, 0xFED6, 0xFED3, 0xFED0, 0xFECD, 0xFECA, 0xFEC8, 0xFEC7,\n    0xFEC8, 0xFECE, 0xFEDB, 0xFEE7, 0xFEED, 0xFEED, 0xFEEB, 0xFEEA,\n    0xFEE8, 0xFEE5, 0xFEE2, 0xFEDF, 0xFEDC, 0xFED8, 0xFED5, 0xFED2,\n    0xFECF, 0xFECC, 0xFECA, 0xFEC9, 0xFEC8, 0xFEC7, 0xFEC8, 0xFEC9,\n    0xFECB, 0xFECE, 0xFED0, 0xFED3, 0xFED5, 0xFED7, 0xFED9, 0xFEDA,\n    0xFEDA, 0xA28A, 0xA293, 0xA2B2, 0xA2EF, 0xA352, 0xA3E5, 0xA4AE,\n    0xA5B6, 0xA706, 0xA88C, 0xAA2F, 0xABEC, 0xADBF, 0xAFA6, 0xB19C,\n    0xB39E, 0xB5A9, 0xB7B9, 0xB9CB, 0xBBDA, 0xBDE5, 0xBFE7, 0xC1DC,\n    0xC3C2, 0xC594, 0xC784, 0xC9A9, 0xCBD9, 0xCDEA, 0xCFB4, 0xD10C,\n    0xD1C9, 0xD1C1, 0xD126, 0xD048, 0xCF29, 0xCDCE, 0xCC3A, 0xCA72,\n    0xC878, 0xC651, 0xC400, 0xC189, 0xBEF0, 0xBC38, 0xB775, 0xB063,\n    0xA987, 0xA564, 0xA386, 0xA1CC, 0xA034, 0x9EBD, 0x9D65, 0x9C2C,\n    0x9B11, 0x9A12, 0x992D, 0x9863, 0x97B1, 0x9717, 0x9693, 0x9624,\n    0x95C9, 0x9581, 0x9579, 0x95D4, 0x967E, 0x9765, 0x9876, 0x999F,\n    0x9ACE, 0x9BEF, 0x9CF1, 0x9DC0, 0x9E49, 0x9E7B, 0xD74A, 0xD6C1,\n    0xD552, 0xD33F, 0xD0CA, 0xCE33, 0xCBBC, 0xC9A8, 0xC837, 0xC733,\n    0xC639, 0xC54A, 0xC466, 0xC390, 0xC2C7, 0xC20B, 0xC15F, 0xC0C2,\n    0xC036, 0xBFBB, 0xBF52, 0xBEFB, 0xBEB8, 0xBE89, 0xBE70, 0xBE86,\n    0xBEDE, 0xBF6C, 0xC025, 0xC0FE, 0xC1EB, 0xC2E0, 0xC3D2, 0xC4B6,\n    0xC57F, 0xC623, 0xC696, 0xC6E8, 0xC72A, 0xC752, 0xC756, 0xC72B,\n    0xC6C8, 0xC621, 0xC52C, 0xC312, 0xBFAF, 0xBC09, 0xB924, 0xB6BB,\n    0xB470, 0xB328, 0xB3C5, 0xB5E4, 0xB87A, 0xBB6D, 0xBEA7, 0xC20E,\n    0xC58A, 0xC903, 0xCC61, 0xCF8B, 0xD269, 0xD4E4, 0xD6E2, 0xD872,\n    0xD9B8, 0xDABC, 0xDB85, 0xDC1A, 0xDC84, 0xDCC8, 0xDCEF, 0xDD01,\n    0xDD04, 0xDD01, 0xDCFE, 0x2A1A, 0x2B45, 0x2E5E, 0x32CA, 0x37EC,\n    0x3D29, 0x41E6, 0x4587, 0x4770, 0x483B, 0x48E6, 0x496E, 0x49D1,\n    0x4A0B, 0x4A19, 0x49F8, 0x49A4, 0x491B, 0x4859, 0x475C, 0x461F,\n    0x44A1, 0x42DD, 0x40D1, 0x3E79, 0x3AC3, 0x3508, 0x2DE9, 0x2609,\n    0x1E09, 0x168A, 0x102F, 0x0B97, 0x0AA9, 0x0D59, 0x1163, 0x1482,\n    0x167C, 0x1891, 0x1AB7, 0x1CE4, 0x1F0C, 0x2124, 0x2322, 0x24FC,\n    0x26A6, 0x2815, 0x2940, 0x2A1A, 0x2AB3, 0x2B21, 0x2B68, 0x2B8B,\n    0x2B8F, 0x2B77, 0x2B46, 0x2B01, 0x2AAB, 0x2A48, 0x29DB, 0x2967,\n    0x28F2, 0x287E, 0x280F, 0x27A8, 0x272E, 0x2687, 0x25BF, 0x24DF,\n    0x23F3, 0x2304, 0x221D, 0x2149, 0x2092, 0x2002, 0x1FA4, 0x1F82,\n    0x00D0, 0x002B, 0xFE76, 0xFC0A, 0xF93F, 0xF66F, 0xF3F2, 0xF221,\n    0xF156, 0xF14A, 0xF17B, 0xF1E0, 0xF272, 0xF329, 0xF400, 0xF4EE,\n    0xF5EC, 0xF6F3, 0xF7FC, 0xF8FF, 0xF9F5, 0xFAD8, 0xFB9F, 0xFC43,\n    0xFCBE, 0xFCF7, 0xFCE6, 0xFC9F, 0xFC36, 0xFBBC, 0xFB44, 0xFAE3,\n    0xFAAB, 0xFAB0, 0xFAE4, 0xFB28, 0xFB5C, 0xFB7E, 0xFBA1, 0xFBC4,\n    0xFBE7, 0xFC0A, 0xFC2C, 0xFC4C, 0xFC69, 0xFC84, 0xFC9C, 0xFCAF,\n    0xFCBE, 0xFCC7, 0xFCCA, 0xFCC8, 0xFCC1, 0xFCB8, 0xFCAD, 0xFCA0,\n    0xFC94, 0xFC8A, 0xFC81, 0xFC7C, 0xFC7C, 0xFC81, 0xFC8E, 0xFCA1,\n    0xFCBE, 0xFCED, 0xFD32, 0xFD89, 0xFDED, 0xFE58, 0xFEC6, 0xFF30,\n    0xFF93, 0xFFE9, 0x002C, 0x0058, 0x0068, 0x0000, 0x0005, 0x0011,\n    0x0021, 0x002F, 0x0038, 0x0035, 0x0024, 0x0000, 0xFFCB, 0xFF8A,\n    0xFF41, 0xFEF1, 0xFE9B, 0xFE41, 0xFDE6, 0xFD8B, 0xFD32, 0xFCDC,\n    0xFC8B, 0xFC41, 0xFC01, 0xFBCB, 0xFBA1, 0xFB85, 0xFB8E, 0xFBC8,\n    0xFC24, 0xFC96, 0xFD0F, 0xFD83, 0xFDE4, 0xFE23, 0xFE20, 0xFDE3,\n    0xFD9D, 0xFD82, 0xFD90, 0xFDA5, 0xFDC0, 0xFDDE, 0xFE00, 0xFE23,\n    0xFE46, 0xFE68, 0xFE87, 0xFEA2, 0xFEB8, 0xFEC8, 0xFED2, 0xFED9,\n    0xFEDF, 0xFEE2, 0xFEE3, 0xFEE3, 0xFEE1, 0xFEDF, 0xFEDC, 0xFED8,\n    0xFED4, 0xFED0, 0xFECD, 0xFECA, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xCE23, 0xCD34, 0xCABC, 0xC73A, 0xC32B, 0xBF0E,\n    0xBB62, 0xB8A3, 0xB752, 0xB6FC, 0xB6D9, 0xB6E6, 0xB721, 0xB786,\n    0xB813, 0xB8C5, 0xB998, 0xBA8A, 0xBB98, 0xBCBE, 0xBDFB, 0xBF4A,\n    0xC0A9, 0xC215, 0xC38B, 0xC57F, 0xC83D, 0xCB81, 0xCF0B, 0xD299,\n    0xD5E8, 0xD8B6, 0xDAC3, 0xDADB, 0xD914, 0xD719, 0xD693, 0xD76C,\n    0xD86C, 0xD98F, 0xDAD0, 0xDC2B, 0xDD9C, 0xDF1D, 0xE0AA, 0xE23E,\n    0xE3D6, 0xE56D, 0xE6FD, 0xE890, 0xEA2E, 0xEBD7, 0xED89, 0xEF41,\n    0xF0FE, 0xF2BF, 0xF480, 0xF641, 0xF800, 0xF9BA, 0xFB6F, 0xFD1B,\n    0xFEBF, 0x0055, 0x01E0, 0x0373, 0x0520, 0x06D9, 0x0894, 0x0A46,\n    0x0BE3, 0x0D5F, 0x0EB0, 0x0FCA, 0x10A1, 0x112B, 0x115B, 0x8001,\n    0x8001, 0x4171, 0x4178, 0x418C, 0x41AD, 0x41D9, 0x420F, 0x424E,\n    0x4296, 0x42E5, 0x433A, 0x4394, 0x43F2, 0x4454, 0x44B7, 0x451B,\n    0x4580, 0x45E3, 0x4644, 0x46A3, 0x46FD, 0x4752, 0x47A1, 0x47E8,\n    0x4828, 0x485E, 0x488A, 0x48AB, 0x48BF, 0x48C6, 0x47A9, 0x4531,\n    0x42AE, 0x4171, 0x4148, 0x4124, 0x4103, 0x40E6, 0x40CD, 0x40B8,\n    0x40A5, 0x4096, 0x408A, 0x4081, 0x407A, 0x4076, 0x4074, 0x4074,\n    0x4077, 0x407B, 0x4081, 0x4088, 0x4091, 0x409B, 0x40A6, 0x40B3,\n    0x40BF, 0x40CD, 0x40DB, 0x40E9, 0x40F7, 0x4105, 0x4113, 0x4121,\n    0x412E, 0x413A, 0x4146, 0x4150, 0x4159, 0x4161, 0x4168, 0x416D,\n    0x4170, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x0000, 0xFF5B,\n    0xFDA6, 0xFB3B, 0xF877, 0xF5B2, 0xF348, 0xF193, 0xF0ED, 0xF111,\n    0xF175, 0xF213, 0xF2E1, 0xF3D8, 0xF4F1, 0xF622, 0xF763, 0xF8AE,\n    0xF9F8, 0xFB3C, 0xFC6F, 0xFD8B, 0xFE88, 0xFF5C, 0x0000, 0x0073,\n    0x00BF, 0x00E8, 0x00F5, 0x00EA, 0x00CE, 0x00A7, 0x007A, 0x004D,\n    0x0026, 0x000A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xC5E4, 0xC5E6, 0xC5DC, 0xC5AD, 0xC543,\n    0xC484, 0xC35A, 0xC1AA, 0xBF5F, 0xBC8A, 0xB95A, 0xB5DC, 0xB21E,\n    0xAE31, 0xAA21, 0xA5FE, 0xA1D6, 0x9DB8, 0x99B3, 0x95D4, 0x922A,\n    0x8EC5, 0x8BB2, 0x8900, 0x86BD, 0x850A, 0x83EE, 0x8353, 0x8325,\n    0x834C, 0x83B5, 0x8448, 0x84F1, 0x859A, 0x862D, 0x8696, 0x86BD,\n    0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD,\n    0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD,\n    0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD,\n    0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD,\n    0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD,\n    0x8001, 0x8001, 0x4171, 0xBF5F, 0x06A3, 0x069B, 0x0685, 0x0660,\n    0x062E, 0x05F0, 0x05A6, 0x0552, 0x04F5, 0x048E, 0x0420, 0x03AB,\n    0x0330, 0x02B0, 0x022C, 0x01A4, 0x011A, 0x008E, 0x0002, 0xFF77,\n    0xFEEC, 0xFE63, 0xFDDD, 0xFD5B, 0xFCDE, 0xFC66, 0xFBF5, 0xFB8B,\n    0xFB29, 0xFAD0, 0xFA82, 0xFA3F, 0xFA07, 0xF9DC, 0xF9BF, 0xF9B0,\n    0xF9B1, 0xF9C1, 0xF9DE, 0xFA07, 0xFA3D, 0xFA7E, 0xFAC9, 0xFB1E,\n    0xFB7C, 0xFBE2, 0xFC50, 0xFCC5, 0xFD40, 0xFDC1, 0xFE47, 0xFED0,\n    0xFF5D, 0xFFEC, 0x007D, 0x010F, 0x01A2, 0x0235, 0x02C7, 0x0358,\n    0x03E6, 0x0470, 0x04F7, 0x057A, 0x05F7, 0x066F, 0x06E0, 0x0749,\n    0x07AA, 0x0803, 0x0852, 0x0897, 0x08D1, 0x08FF, 0x0921, 0x0936,\n    0x093D, 0x0154, 0x0168, 0x0199, 0x01D5, 0x020D, 0x0246, 0x0287,\n    0x02BA, 0x02CC, 0x02C0, 0x02A6, 0x0283, 0x025A, 0x0230, 0x0209,\n    0x01E9, 0x01D3, 0x01C3, 0x01B4, 0x01A5, 0x0197, 0x0189, 0x017C,\n    0x0170, 0x0166, 0x015D, 0x0156, 0x0151, 0x014E, 0x014D, 0x014F,\n    0x0154, 0x015B, 0x016A, 0x0182, 0x01A2, 0x01C7, 0x01F1, 0x021C,\n    0x0246, 0x026E, 0x0292, 0x02B0, 0x02C5, 0x02D0, 0x02D2, 0x02D0,\n    0x02C9, 0x02BF, 0x02B2, 0x02A2, 0x0290, 0x027C, 0x0268, 0x0252,\n    0x023D, 0x0228, 0x0214, 0x0202, 0x01F2, 0x01E4, 0x01D7, 0x01CA,\n    0x01BD, 0x01B0, 0x01A2, 0x0195, 0x0188, 0x017C, 0x0171, 0x0166,\n    0x015D, 0x0155, 0x014F, 0x014A, 0x0147, 0x0146, 0xF9E6, 0xFA31,\n    0xFA82, 0xFADA, 0xFB38, 0xFB9C, 0xFC04, 0xFC70, 0xFCE1, 0xFD54,\n    0xFDCB, 0xFE43, 0xFEBD, 0xFF38, 0xFFB3, 0x002E, 0x00A9, 0x0123,\n    0x019B, 0x0211, 0x0284, 0x02F4, 0x0360, 0x03C8, 0x042A, 0x0488,\n    0x04DF, 0x0530, 0x0579, 0x05BB, 0x05F5, 0x0626, 0x064E, 0x066C,\n    0x067F, 0x0688, 0x0685, 0x0677, 0x065F, 0x063E, 0x0613, 0x05DF,\n    0x05A4, 0x0560, 0x0516, 0x04C4, 0x046C, 0x040E, 0x03AA, 0x0342,\n    0x02D5, 0x0264, 0x01EF, 0x0177, 0x00FC, 0x007E, 0x0000, 0xFF80,\n    0xFEFF, 0xFE7D, 0xFDFB, 0xFD7A, 0xFCF9, 0xFC7A, 0xFBFC, 0xFB81,\n    0xFB09, 0xFA94, 0xFA22, 0xF9B5, 0xF94C, 0xF8E8, 0xF889, 0xF830,\n    0xF7DE, 0xF793, 0xF74F, 0xFFC6, 0xFFCF, 0xFFE7, 0x0007, 0x002D,\n    0x0053, 0x0072, 0x0086, 0x0089, 0x0081, 0x0076, 0x0069, 0x0059,\n    0x0047, 0x0034, 0x001F, 0x0009, 0xFFF3, 0xFFDB, 0xFFC3, 0xFFAC,\n    0xFF94, 0xFF7D, 0xFF67, 0xFF52, 0xFF3F, 0xFF2D, 0xFF1D, 0xFF0F,\n    0xFF04, 0xFEFC, 0xFEF7, 0xFEF6, 0xFEFA, 0xFF07, 0xFF1B, 0xFF35,\n    0xFF54, 0xFF76, 0xFF9B, 0xFFC1, 0xFFE7, 0x000B, 0x002E, 0x004E,\n    0x0068, 0x007E, 0x008C, 0x0092, 0x0093, 0x0091, 0x008C, 0x0085,\n    0x007C, 0x0072, 0x0066, 0x0058, 0x0049, 0x0039, 0x0028, 0x0017,\n    0x0005, 0xFFF4, 0xFFE1, 0xFFCF, 0xFFBD, 0xFFAC, 0xFF9B, 0xFF8C,\n    0xFF7D, 0xFF70, 0xFF64, 0xFF5A, 0xFF52, 0xFF4C, 0xFF48, 0xFF47,\n    0x3B05, 0x3B16, 0x3B40, 0x3B7C, 0x3BC1, 0x3C06, 0x3C42, 0x3C6D,\n    0x3C7D, 0x3C7C, 0x3C78, 0x3C71, 0x3C68, 0x3C5D, 0x3C51, 0x3C42,\n    0x3C33, 0x3C22, 0x3C10, 0x3BFD, 0x3BE9, 0x3BD5, 0x3BC1, 0x3BAD,\n    0x3B99, 0x3B86, 0x3B73, 0x3B61, 0x3B50, 0x3B40, 0x3B32, 0x3B25,\n    0x3B1A, 0x3B12, 0x3B0B, 0x3B07, 0x3B05, 0x3B16, 0x3B40, 0x3B7C,\n    0x3BC1, 0x3C06, 0x3C42, 0x3C6D, 0x3C7D, 0x3C7C, 0x3C79, 0x3C74,\n    0x3C6D, 0x3C64, 0x3C5A, 0x3C4F, 0x3C42, 0x3C35, 0x3C26, 0x3C16,\n    0x3C06, 0x3BF6, 0x3BE4, 0x3BD3, 0x3BC1, 0x3BB0, 0x3B9E, 0x3B8D,\n    0x3B7C, 0x3B6C, 0x3B5D, 0x3B4E, 0x3B40, 0x3B34, 0x3B28, 0x3B1E,\n    0x3B16, 0x3B0F, 0x3B0A, 0x3B07, 0x3B05,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_49.inc.c",
    "content": "static const struct Animation anim_49[] = {\n    1,\n    189,\n    0,\n    0,\n    0x10,\n    ANIMINDEX_NUMPARTS(anim_49_indices),\n    anim_49_values,\n    anim_49_indices,\n    0,\n};\n\n\nstatic const u16 anim_49_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0010, 0x0002, 0x0001, 0x0000, 0x0001, 0x0012, 0x0001, 0x0000,\n    0x0010, 0x0259, 0x0010, 0x0269, 0x0010, 0x0279,\n    0x0010, 0x0229, 0x0010, 0x0239, 0x0010, 0x0249,\n    0x0010, 0x01F9, 0x0010, 0x0209, 0x0010, 0x0219,\n    0x0001, 0x01C6, 0x0001, 0x01C7, 0x0001, 0x01C8,\n    0x0010, 0x0053, 0x0010, 0x0063, 0x0010, 0x0073,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x0043,\n    0x0010, 0x0013, 0x0010, 0x0023, 0x0010, 0x0033,\n    0x0001, 0x01B3, 0x0001, 0x01B4, 0x0001, 0x01B5,\n    0x0010, 0x00A3, 0x0010, 0x00B3, 0x0010, 0x00C3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x0093,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x0083,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x01B6,\n    0x0010, 0x0183, 0x0010, 0x0193, 0x0010, 0x01A3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x0173,\n    0x0010, 0x0143, 0x0010, 0x0153, 0x0010, 0x0163,\n    0x0010, 0x01C9, 0x0010, 0x01D9, 0x0010, 0x01E9,\n    0x0010, 0x0113, 0x0010, 0x0123, 0x0010, 0x0133,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x0103,\n    0x0010, 0x00D3, 0x0010, 0x00E3, 0x0010, 0x00F3,\n};\n\nstatic const s16 anim_49_values[] = {\n    0x0000, 0x00C3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x3FFF, 0x1292, 0x124F, 0x1233, 0x1261, 0x128E,\n    0x1233, 0x115B, 0x1069, 0x0F61, 0x0E48, 0x0D22, 0x0BF1, 0x0ABB,\n    0x0984, 0x084E, 0x071F, 0x0362, 0x033F, 0x0331, 0x0349, 0x0361,\n    0x0331, 0x02BD, 0x023C, 0x01AF, 0x0119, 0x007C, 0xFFDB, 0xFF36,\n    0xFE8F, 0xFDEA, 0xFD48, 0xDC1E, 0xDC66, 0xDC83, 0xDC59, 0xDC2F,\n    0xDC83, 0xDD4E, 0xDE30, 0xDF27, 0xE02E, 0xE142, 0xE25E, 0xE380,\n    0xE4A4, 0xE5C6, 0xE6E1, 0xF163, 0xF0C6, 0xF085, 0xF0E4, 0xF142,\n    0xF085, 0xEEBE, 0xECC2, 0xEA99, 0xE84B, 0xE5E1, 0xE362, 0xE0D7,\n    0xDE49, 0xDBC0, 0xD943, 0xCD29, 0xCF2E, 0xD1AB, 0xD855, 0xE231,\n    0xE83D, 0xEA01, 0xEBB0, 0xED4B, 0xEED1, 0xF042, 0xF19D, 0xF2E3,\n    0xF413, 0xF52C, 0xF62E, 0xFE28, 0xFD52, 0xFB12, 0xF050, 0xDF34,\n    0xD552, 0xD3BA, 0xD26B, 0xD162, 0xD097, 0xD005, 0xCFA6, 0xCF75,\n    0xCF6B, 0xCF84, 0xCFB8, 0xFA4C, 0xF657, 0xF1CD, 0xE6D1, 0xD738,\n    0xCE99, 0xCD80, 0xCCB8, 0xCC3A, 0xCBFF, 0xCBFF, 0xCC33, 0xCC94,\n    0xCD1A, 0xCDC0, 0xCE7D, 0xD7F1, 0xD83D, 0xD85C, 0xD814, 0xD7CD,\n    0xD85C, 0xD9B4, 0xDB35, 0xDCD8, 0xDE96, 0xE06B, 0xE24E, 0xE43B,\n    0xE62A, 0xE816, 0xE9F8, 0xEBA5, 0xF17D, 0xF639, 0xF877, 0xF804,\n    0xF639, 0xF412, 0xF1A9, 0xEF0A, 0xEC3E, 0xE950, 0xE649, 0xE333,\n    0xE01A, 0xDD06, 0xDA01, 0xFBB1, 0x0748, 0x1209, 0x1B2B, 0x21E8,\n    0x257A, 0x26CD, 0x275F, 0x2742, 0x268C, 0x254D, 0x2399, 0x2183,\n    0x1F1E, 0x1C7D, 0x19B3, 0x2D0E, 0x2E43, 0x2F5A, 0x3042, 0x30EA,\n    0x313E, 0x3154, 0x3152, 0x3138, 0x310B, 0x30CC, 0x307E, 0x3023,\n    0x2FBF, 0x2F54, 0x2EE5, 0xB0BB, 0xBCD2, 0xC81F, 0xD1D8, 0xD933,\n    0xDD66, 0xDF68, 0xE0C2, 0xE183, 0xE1BA, 0xE176, 0xE0C8, 0xDFBE,\n    0xDE67, 0xDCD4, 0xDB13, 0xFF2D, 0xFF44, 0xFF57, 0xFF5F, 0xFF5B,\n    0xFF57, 0xFF4F, 0xFF38, 0xFF1A, 0xFEFA, 0xFEDE, 0xFECC, 0xFEC9,\n    0xFEDB, 0xFF09, 0xFF57, 0x023F, 0x023F, 0x0244, 0x0247, 0x0246,\n    0x0244, 0x0247, 0x024E, 0x0258, 0x0262, 0x026B, 0x0271, 0x0272,\n    0x026C, 0x025D, 0x0244, 0xB9FE, 0xBC1A, 0xBDAE, 0xBE39, 0xBDF3,\n    0xBDAE, 0xBDAD, 0xBDAB, 0xBDA8, 0xBDA6, 0xBDA3, 0xBDA2, 0xBDA1,\n    0xBDA3, 0xBDA7, 0xBDAE, 0x5EA1, 0x6088, 0x5EA1, 0x54C8, 0x4813,\n    0x3E71, 0x385C, 0x3260, 0x2C92, 0x2705, 0x21CB, 0x1CF8, 0x189F,\n    0x14D3, 0x11A7, 0x0F2E, 0x0B6D, 0x05F1, 0x0156, 0xFEA9, 0xFDDB,\n    0xFDAE, 0xFD6B, 0xFD32, 0xFD06, 0xFCE7, 0xFCD7, 0xFCDA, 0xFCF0,\n    0xFD1C, 0xFD60, 0xFDBD, 0x01E2, 0xFB93, 0xF64E, 0xF422, 0xF514,\n    0xF67E, 0xF745, 0xF815, 0xF8EE, 0xF9D2, 0xFAC1, 0xFBBD, 0xFCC5,\n    0xFDDC, 0xFF01, 0x0034, 0x9CFC, 0x951F, 0x8F7C, 0x915F, 0x998A,\n    0x9EFD, 0x9FEC, 0xA08F, 0xA0EC, 0xA109, 0xA0EA, 0xA096, 0xA012,\n    0x9F64, 0x9E92, 0x9DA0, 0x00B9, 0x00C9, 0x00D0, 0x00D0, 0x00D0,\n    0x00D0, 0x00D3, 0x00DD, 0x00E9, 0x00F7, 0x0103, 0x010A, 0x010C,\n    0x0104, 0x00F1, 0x00D0, 0xFF32, 0xFF36, 0xFF38, 0xFF38, 0xFF38,\n    0xFF38, 0xFF36, 0xFF32, 0xFF2C, 0xFF26, 0xFF21, 0xFF1D, 0xFF1D,\n    0xFF20, 0xFF29, 0xFF38, 0xC245, 0xC1D8, 0xC1AA, 0xC1AA, 0xC1AA,\n    0xC1AA, 0xC1B3, 0xC1C9, 0xC1E6, 0xC206, 0xC221, 0xC233, 0xC236,\n    0xC224, 0xC1F7, 0xC1AA, 0x1FFC, 0x1A51, 0x152F, 0x1307, 0x141B,\n    0x152F, 0x1506, 0x149C, 0x140E, 0x1377, 0x12F2, 0x129B, 0x128D,\n    0x12E4, 0x13BC, 0x152F, 0x0C64, 0x0D70, 0x0DB3, 0x099B, 0x020F,\n    0xFD99, 0xFD2B, 0xFD50, 0xFDE6, 0xFECE, 0xFFE8, 0x0111, 0x022D,\n    0x0319, 0x03B5, 0x03E1, 0x089E, 0x0707, 0x0536, 0x018E, 0xFCBA,\n    0xFA1A, 0xF9EF, 0xFA2A, 0xFAB4, 0xFB78, 0xFC61, 0xFD58, 0xFE49,\n    0xFF1E, 0xFFC1, 0x001C, 0xBD10, 0xC45E, 0xCA4D, 0xCAA9, 0xC545,\n    0xBFD1, 0xBC46, 0xB8CA, 0xB557, 0xB1E4, 0xAE6B, 0xAAE5, 0xA74B,\n    0xA394, 0x9FBB, 0x9BB7, 0x7FFF, 0x7FFF, 0x4171, 0xBF62, 0xBF60,\n    0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F,\n    0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0x7FFF, 0x7FFF,\n    0x4171, 0xFCC9, 0xFE90, 0x0000, 0x008B, 0x0045, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x054B, 0x025E, 0x0000, 0xFF1A, 0xFF8D, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xB893, 0xBC54, 0xBF5F, 0xC086, 0xBFF3, 0xBF5F, 0xBF5F,\n    0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F,\n    0xBF5F, 0x1DE4, 0x1617, 0x0E5E, 0x07EF, 0x0238, 0xFF26, 0xFE45,\n    0xFDCC, 0xFDA8, 0xFDC7, 0xFE17, 0xFE85, 0xFEFF, 0xFF73, 0xFFCF,\n    0x0000, 0x0F0A, 0x07A4, 0x007F, 0x004E, 0x0256, 0x03A4, 0x038A,\n    0x0353, 0x0304, 0x02A2, 0x0233, 0x01BD, 0x0144, 0x00CE, 0x0060,\n    0x0000, 0xEC1C, 0xF7D2, 0x0570, 0x09F6, 0x0BBC, 0x0C88, 0x0D77,\n    0x0E6C, 0x0F5D, 0x103B, 0x10FA, 0x118D, 0x11E8, 0x11FE, 0x11C2,\n    0x1128, 0x0938, 0x0935, 0x093C, 0x096C, 0x0991, 0x093C, 0x0875,\n    0x0790, 0x0696, 0x058D, 0x0480, 0x0374, 0x0273, 0x0185, 0x00B1,\n    0x0000, 0xFA57, 0xF98D, 0xF8E4, 0xF883, 0xF884, 0xF8E4, 0xF97D,\n    0xFA2D, 0xFAEE, 0xFBBA, 0xFC89, 0xFD57, 0xFE1D, 0xFED5, 0xFF78,\n    0x0000, 0x283D, 0x2C61, 0x2FE8, 0x31E2, 0x31C2, 0x2FE8, 0x2D01,\n    0x2994, 0x25CA, 0x21CB, 0x1DBF, 0x19CE, 0x1620, 0x12DD, 0x102D,\n    0x0E38, 0x507D, 0x5567, 0x5AAF, 0x6428, 0x710E, 0x7A85, 0x7E7D,\n    0x802D, 0x80A3, 0x80EC, 0x813F, 0x8135, 0x80F0, 0x808F, 0x8034,\n    0x7FFF, 0x0507, 0x05D2, 0x0674, 0x0672, 0x0583, 0x03E6, 0x0145,\n    0xFDE3, 0xFADE, 0xF959, 0xF97B, 0xFA6F, 0xFBE2, 0xFD83, 0xFEFE,\n    0x0000, 0x2F0C, 0x2DB3, 0x2BAA, 0x275D, 0x1E94, 0x1041, 0xFBCF,\n    0xE349, 0xC990, 0xB184, 0x9A5F, 0x824A, 0x6A87, 0x5457, 0x40FF,\n    0x31BF,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_4A.inc.c",
    "content": "static const struct Animation anim_4A[] = {\n    1,\n    189,\n    0,\n    0,\n    0x08,\n    ANIMINDEX_NUMPARTS(anim_4A_indices),\n    anim_4A_values,\n    anim_4A_indices,\n    0,\n};\n\n\nstatic const u16 anim_4A_indices[] = {\n    0x0008, 0x0001, 0x0008, 0x0009, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0011, 0x0001, 0x0000,\n    0x0008, 0x011C, 0x0008, 0x0124, 0x0008, 0x012C,\n    0x0008, 0x0104, 0x0008, 0x010C, 0x0008, 0x0114,\n    0x0008, 0x00EC, 0x0008, 0x00F4, 0x0008, 0x00FC,\n    0x0001, 0x00E8, 0x0001, 0x00E9, 0x0001, 0x00EA,\n    0x0008, 0x0032, 0x0008, 0x003A, 0x0008, 0x0042,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x002A,\n    0x0008, 0x0012, 0x0008, 0x001A, 0x0008, 0x0022,\n    0x0001, 0x00E4, 0x0001, 0x00E5, 0x0001, 0x00E6,\n    0x0008, 0x006A, 0x0001, 0x0072, 0x0001, 0x0073,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x0062,\n    0x0008, 0x004A, 0x0008, 0x0052, 0x0008, 0x005A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00E7,\n    0x0008, 0x00CC, 0x0008, 0x00D4, 0x0008, 0x00DC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x00C4,\n    0x0008, 0x00AC, 0x0008, 0x00B4, 0x0008, 0x00BC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00EB,\n    0x0008, 0x0094, 0x0008, 0x009C, 0x0008, 0x00A4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x008C,\n    0x0008, 0x0074, 0x0008, 0x007C, 0x0008, 0x0084,\n};\n\nstatic const s16 anim_4A_values[] = {\n    0x0000, 0x0000, 0x0000, 0x0003, 0x0006, 0x000A, 0x000E, 0x0011,\n    0x0013, 0x00AC, 0x00AB, 0x00A7, 0x00A1, 0x009B, 0x0095, 0x0090,\n    0x008C, 0x3FFF, 0xE441, 0xE4DD, 0xE678, 0xE8B8, 0xEB47, 0xEDCC,\n    0xEFEF, 0xF159, 0xF273, 0xF1D0, 0xF022, 0xEDC7, 0xEB1A, 0xE877,\n    0xE63B, 0xE4C0, 0xFBD8, 0xFAA0, 0xF76B, 0xF2EA, 0xEDCD, 0xE8C3,\n    0xE47D, 0xE1AA, 0xE392, 0xE3C3, 0xE442, 0xE4F6, 0xE5C1, 0xE68A,\n    0xE734, 0xE7A5, 0xD5A2, 0xD6F2, 0xDA64, 0xDF3C, 0xE4BC, 0xEA27,\n    0xEEC0, 0xF1C9, 0xEA6D, 0xEA33, 0xE99B, 0xE8C6, 0xE7D4, 0xE6E5,\n    0xE61A, 0xE595, 0xE897, 0xE803, 0xE67C, 0xE458, 0xE1E9, 0xDF84,\n    0xDD7B, 0xDC23, 0x13E1, 0x13DB, 0x13CC, 0x13B7, 0x139F, 0x1387,\n    0x1372, 0x1365, 0x08D0, 0x0853, 0x070A, 0x053C, 0x0330, 0x012C,\n    0xFF76, 0xFE55, 0xF6A5, 0xF664, 0xF5B8, 0xF4C6, 0xF3B4, 0xF2A6,\n    0xF1C1, 0xF129, 0xE501, 0xE448, 0xE262, 0xDFB9, 0xDCB3, 0xD9B8,\n    0xD731, 0xD585, 0x87F6, 0x88A5, 0x8A71, 0x8CF7, 0x8FD4, 0x92A7,\n    0x950C, 0x96A1, 0x5359, 0x4901, 0x26DE, 0x2652, 0x24E3, 0x22DE,\n    0x2094, 0x1E52, 0x1C68, 0x1B24, 0x0E76, 0x0E18, 0x0D22, 0x0BC8,\n    0x0A3F, 0x08BC, 0x0774, 0x069B, 0xC8E8, 0xC99D, 0xCB78, 0xCE14,\n    0xD10A, 0xD3F5, 0xD66F, 0xD812, 0x28E1, 0x29E8, 0x2C9A, 0x3063,\n    0x34AF, 0x38EA, 0x3C82, 0x3EE2, 0x160C, 0x1504, 0x124E, 0x0E80,\n    0x0A2D, 0x05EB, 0x024F, 0xFFEC, 0x0C9B, 0x0C85, 0x0C4D, 0x0BFF,\n    0x0BA6, 0x0B4E, 0x0B04, 0x0AD3, 0xAE77, 0xACFD, 0xA91D, 0xA3AC,\n    0x9D7D, 0x9767, 0x923C, 0x8ED2, 0xDECF, 0xDED3, 0xDEDF, 0xDEF0,\n    0xDF03, 0xDF16, 0xDF26, 0xDF30, 0xF348, 0xF33A, 0xF315, 0xF2E1,\n    0xF2A6, 0xF26C, 0xF23B, 0xF21A, 0xC276, 0xC268, 0xC243, 0xC20F,\n    0xC1D3, 0xC199, 0xC167, 0xC147, 0x3B81, 0x3CB3, 0x3FD8, 0x4442,\n    0x4946, 0x4E36, 0x5267, 0x552C, 0x0F41, 0x0EF4, 0x0E2B, 0x0D10,\n    0x0BCF, 0x0A93, 0x0986, 0x08D5, 0x027B, 0x01F2, 0x0089, 0xFE8F,\n    0xFC4F, 0xFA18, 0xF837, 0xF6F9, 0x97AD, 0x96E1, 0x94CB, 0x91DC,\n    0x8E87, 0x8B3E, 0x8876, 0x869F, 0x8001, 0x8001, 0x4171, 0xBF5F,\n    0x8001, 0x8001, 0x4171, 0xBF5F, 0x12F7, 0x12F1, 0x12E1, 0x12CC,\n    0x12B3, 0x129B, 0x1286, 0x1278, 0xFEE7, 0xFF05, 0xFF54, 0xFFC3,\n    0x0040, 0x00BC, 0x0125, 0x016A, 0x05CC, 0x0405, 0xFF59, 0xF8C9,\n    0xF154, 0xE9FC, 0xE3C1, 0xDFA3, 0x1510, 0x14E6, 0x1477, 0x13DB,\n    0x132A, 0x127C, 0x11E8, 0x1186, 0xF6F7, 0xF60D, 0xF3A5, 0xF044,\n    0xEC6E, 0xE8A6, 0xE571, 0xE353, 0xFE90, 0x0018, 0x0421, 0x09CC,\n    0x103B, 0x1692, 0x1BF3, 0x1F81, 0xD96B, 0xD8C3, 0xD70C, 0xD4A2,\n    0xD1E4, 0xCF31, 0xCCE7, 0xCB63, 0x06DD, 0x06ED, 0x0717, 0x0752,\n    0x0795, 0x07D7, 0x080F, 0x0834, 0x4534, 0x4515, 0x44C3, 0x4450,\n    0x43CE, 0x434E, 0x42E1, 0x4299,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_4B.inc.c",
    "content": "static const struct Animation anim_4B[] = {\n    1,\n    189,\n    0,\n    0,\n    0x12,\n    ANIMINDEX_NUMPARTS(anim_4B_indices),\n    anim_4B_values,\n    anim_4B_indices,\n    0,\n};\n\n\nstatic const u16 anim_4B_indices[] = {\n    0x0001, 0x0000, 0x0012, 0x0001, 0x0012, 0x0013, 0x0001, 0x0000, 0x0001, 0x0025, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x02A3,\n    0x0012, 0x026D, 0x0012, 0x027F, 0x0012, 0x0291,\n    0x0012, 0x0237, 0x0012, 0x0249, 0x0012, 0x025B,\n    0x0001, 0x0233, 0x0001, 0x0234, 0x0001, 0x0235,\n    0x0012, 0x006E, 0x0012, 0x0080, 0x0012, 0x0092,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x005C,\n    0x0012, 0x0026, 0x0012, 0x0038, 0x0012, 0x004A,\n    0x0001, 0x021E, 0x0001, 0x021F, 0x0001, 0x0220,\n    0x0012, 0x00EC, 0x0012, 0x00FE, 0x0012, 0x0110,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x00DA,\n    0x0012, 0x00A4, 0x0012, 0x00B6, 0x0012, 0x00C8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x0221,\n    0x0012, 0x01E8, 0x0012, 0x01FA, 0x0012, 0x020C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x01D6,\n    0x0012, 0x01A0, 0x0012, 0x01B2, 0x0012, 0x01C4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0236,\n    0x0012, 0x016A, 0x0012, 0x017C, 0x0012, 0x018E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x0158,\n    0x0012, 0x0122, 0x0012, 0x0134, 0x0012, 0x0146,\n};\n\nstatic const s16 anim_4B_values[] = {\n    0x0000, 0x00AC, 0x0091, 0x0074, 0x006E, 0x0077, 0x0081, 0x0087,\n    0x008D, 0x0092, 0x0097, 0x009A, 0x009E, 0x00A2, 0x00A5, 0x00A7,\n    0x00AA, 0x00AB, 0x00AC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FFF, 0xFFFB, 0xFFFE,\n    0x0000, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0xFBF5, 0xFA84, 0xF97C, 0xF930, 0xF956, 0xF97C, 0xF97C, 0xF97C,\n    0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C,\n    0xF97C, 0xF97C, 0xF317, 0xEFD9, 0xED8C, 0xECE9, 0xED3A, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xE131, 0xD7C6, 0xD111, 0xCF4A,\n    0xD054, 0xD111, 0xD08E, 0xCFF1, 0xCF40, 0xCE83, 0xCDC2, 0xCD03,\n    0xCC4E, 0xCBA9, 0xCB1D, 0xCAAF, 0xCA68, 0xCA4F, 0xC457, 0xD408,\n    0xDF2E, 0xE1D9, 0xDFE4, 0xDF2E, 0xE14B, 0xE3D6, 0xE6B0, 0xE9BB,\n    0xECDB, 0xEFF0, 0xF2DE, 0xF587, 0xF7CC, 0xF990, 0xFAB5, 0xFB1D,\n    0xE169, 0xDF53, 0xDDCA, 0xDD73, 0xDDDD, 0xDDCA, 0xDCF7, 0xDBF8,\n    0xDADA, 0xD9A9, 0xD870, 0xD73B, 0xD616, 0xD50C, 0xD428, 0xD377,\n    0xD305, 0xD2DC, 0xF0C9, 0xF3BB, 0xF5F0, 0xF735, 0xF750, 0xF5F0,\n    0xF36C, 0xF066, 0xED01, 0xE962, 0xE5AA, 0xE1FF, 0xDE83, 0xDB59,\n    0xD8A6, 0xD68C, 0xD530, 0xD4B4, 0x0853, 0x0C76, 0x0E42, 0x0E03,\n    0x0D74, 0x0CA1, 0x0B98, 0x0A65, 0x0913, 0x07B1, 0x0649, 0x04E9,\n    0x039D, 0x0271, 0x0172, 0x00AC, 0x002D, 0x0000, 0x01F4, 0x00AF,\n    0x0000, 0xFFD2, 0xFFB1, 0xFF9A, 0xFF8E, 0xFF8A, 0xFF8E, 0xFF97,\n    0xFFA4, 0xFFB4, 0xFFC5, 0xFFD7, 0xFFE7, 0xFFF4, 0xFFFD, 0x0000,\n    0xF19A, 0xF3FA, 0xF549, 0xF594, 0xF5CA, 0xF5EE, 0xF602, 0xF608,\n    0xF602, 0xF5F4, 0xF5DF, 0xF5C5, 0xF5A8, 0xF58C, 0xF572, 0xF55D,\n    0xF54F, 0xF549, 0xDBB7, 0xCE5E, 0xC729, 0xC544, 0xC3EA, 0xC30B,\n    0xC296, 0xC27E, 0xC2B1, 0xC322, 0xC3BF, 0xC479, 0xC542, 0xC609,\n    0xC6BE, 0xC754, 0xC7B8, 0xC7DD, 0x910E, 0xB55A, 0xC2FA, 0xBD41,\n    0xB40E, 0xA7F6, 0x998A, 0x895D, 0x7803, 0x660C, 0x540D, 0x4299,\n    0x3241, 0x2399, 0x1733, 0x0DA2, 0x077A, 0x054B, 0x3F7A, 0x4F79,\n    0x56C5, 0x569C, 0x555A, 0x5329, 0x5032, 0x4CA1, 0x489E, 0x4455,\n    0x3FEF, 0x3B97, 0x3776, 0x33B7, 0x3084, 0x2E07, 0x2C69, 0x2BD6,\n    0x4D31, 0x7564, 0x8550, 0x806E, 0x77FC, 0x6C8E, 0x5EB8, 0x4F0D,\n    0x3E23, 0x2C8C, 0x1ADD, 0x09A9, 0xF986, 0xEB06, 0xDEBD, 0xD53F,\n    0xCF21, 0xCCF6, 0x0804, 0x0976, 0x09C7, 0x08FF, 0x06CF, 0x09B3,\n    0x0912, 0x0841, 0x074D, 0x0641, 0x0529, 0x0410, 0x0303, 0x020C,\n    0x0138, 0x0092, 0x0026, 0x0000, 0x021D, 0x01FF, 0x017E, 0x0159,\n    0x00E3, 0x009B, 0x0078, 0x0052, 0x002A, 0x0001, 0xFFDA, 0xFFB4,\n    0xFF90, 0xFF71, 0xFF56, 0xFF42, 0xFF35, 0xFF30, 0xB85F, 0xABEE,\n    0xA47F, 0xA419, 0xAB4E, 0xAEAE, 0xB130, 0xB3F4, 0xB6E3, 0xB9E6,\n    0xBCE5, 0xBFC9, 0xC27B, 0xC4E4, 0xC6EC, 0xC87C, 0xC97D, 0xC9D8,\n    0x2BC9, 0x3F59, 0x4FF9, 0x53E3, 0x4BD3, 0x4703, 0x4344, 0x3F21,\n    0x3ABC, 0x363A, 0x31BB, 0x2D65, 0x2959, 0x25BB, 0x22AE, 0x2055,\n    0x1ED2, 0x1E4A, 0x0D04, 0x0B26, 0x0976, 0x082A, 0x0735, 0x0838,\n    0x09DF, 0x0BBB, 0x0DBC, 0x0FCF, 0x11E4, 0x13EA, 0x15CF, 0x1783,\n    0x18F4, 0x1A10, 0x1AC8, 0x1B09, 0x0C6D, 0x11DB, 0x1688, 0x17E4,\n    0x17C6, 0x16F8, 0x1670, 0x15DA, 0x153C, 0x149A, 0x13F9, 0x135E,\n    0x12CE, 0x124D, 0x11E0, 0x118D, 0x1157, 0x1144, 0xAFE5, 0xA399,\n    0x98F2, 0x9504, 0x9431, 0x9699, 0x9895, 0x9AC7, 0x9D1C, 0x9F82,\n    0xA1E6, 0xA436, 0xA65E, 0xA84B, 0xA9EC, 0xAB2D, 0xABFB, 0xAC44,\n    0xFF48, 0xFEC8, 0xFE62, 0xFE7D, 0x0000, 0x0036, 0x0035, 0x0032,\n    0x002C, 0x0026, 0x001F, 0x0017, 0x0010, 0x000A, 0x0004, 0x0001,\n    0x0000, 0x0000, 0x00ED, 0x0182, 0x01D8, 0x00AA, 0x0000, 0x023E,\n    0x0231, 0x020C, 0x01D5, 0x0191, 0x0146, 0x00F8, 0x00AC, 0x0068,\n    0x0032, 0x000D, 0x0000, 0x0000, 0xC3DF, 0xB992, 0xB0C9, 0xAEAD,\n    0xB449, 0xACB9, 0xADE9, 0xAF90, 0xB18E, 0xB3C6, 0xB616, 0xB861,\n    0xBA87, 0xBC6A, 0xBDE9, 0xBEE5, 0xBF40, 0xBF40, 0x4CAD, 0x4BE9,\n    0x4C30, 0x526E, 0x4928, 0x4998, 0x4645, 0x426A, 0x3E33, 0x39CF,\n    0x356C, 0x3137, 0x2D60, 0x2A13, 0x277E, 0x25D0, 0x2537, 0x2537,\n    0xF4BA, 0xF6B3, 0xF83A, 0xF777, 0xF749, 0xF1FB, 0xEF11, 0xEBE3,\n    0xE890, 0xE535, 0xE1EE, 0xDED8, 0xDC11, 0xD9B6, 0xD7E3, 0xD6B5,\n    0xD64A, 0xD64A, 0xEE97, 0xEDD8, 0xED20, 0xECC5, 0xEBDC, 0xED15,\n    0xED17, 0xED0E, 0xECFC, 0xECE3, 0xECC6, 0xECA7, 0xEC88, 0xEC6D,\n    0xEC56, 0xEC46, 0xEC41, 0xEC41, 0x8DAA, 0x8C24, 0x8AE6, 0x8C61,\n    0x8B9C, 0x94AC, 0x9855, 0x9C3B, 0xA03E, 0xA43E, 0xA81D, 0xABBA,\n    0xAEF5, 0xB1B0, 0xB3CA, 0xB524, 0xB59E, 0xB59E, 0x7FFF, 0x7FFF,\n    0x4171, 0xBFC7, 0xBFD4, 0xBF5F, 0xBB4C, 0xBF5F, 0xBF5F, 0xBF5F,\n    0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F,\n    0xBF5F, 0xBF5F, 0xBF5F, 0x7FFF, 0x7FFF, 0x4171, 0xBF5F, 0x007F,\n    0x0074, 0x0064, 0x0051, 0x001B, 0xFFEE, 0xFFE9, 0xFFE7, 0xFFE7,\n    0xFFE8, 0xFFEB, 0xFFEE, 0xFFF2, 0xFFF7, 0xFFFA, 0xFFFE, 0x0000,\n    0x0000, 0x01C7, 0x018E, 0x0157, 0x012F, 0x013A, 0x014A, 0x0131,\n    0x0113, 0x00F2, 0x00CE, 0x00A9, 0x0084, 0x0061, 0x0042, 0x0027,\n    0x0012, 0x0004, 0x0000, 0x03D6, 0x03D4, 0x0433, 0x058F, 0x0BF0,\n    0x10F4, 0x1000, 0x0E85, 0x0CA2, 0x0A74, 0x0819, 0x05AF, 0x0352,\n    0x0121, 0xFF3A, 0xFDB9, 0xFCBD, 0xFC62, 0x004A, 0x0091, 0x00CB,\n    0x00E4, 0x00E2, 0x00D9, 0x00CB, 0x00B9, 0x00A4, 0x008C, 0x0074,\n    0x005B, 0x0043, 0x002E, 0x001B, 0x000C, 0x0003, 0x0000, 0xFF5E,\n    0xFF66, 0xFF6F, 0xFF79, 0xFF82, 0xFF8D, 0xFF99, 0xFFA6, 0xFFB3,\n    0xFFC0, 0xFFCC, 0xFFD8, 0xFFE3, 0xFFED, 0xFFF5, 0xFFFB, 0xFFFF,\n    0x0000, 0x173E, 0x1950, 0x1AA2, 0x1AD1, 0x1A19, 0x1909, 0x17B0,\n    0x161F, 0x1466, 0x1297, 0x10C0, 0x0EF3, 0x0D40, 0x0BB7, 0x0A69,\n    0x0966, 0x08BF, 0x0884, 0x4196, 0x4669, 0x48C7, 0x48F9, 0x48E6,\n    0x4897, 0x4816, 0x476D, 0x46A6, 0x45CB, 0x44E5, 0x43FE, 0x431F,\n    0x4254, 0x41A4, 0x411B, 0x40C1, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_4C.inc.c",
    "content": "static const struct Animation anim_4C[] = {\n    1,\n    189,\n    0,\n    0,\n    0x09,\n    ANIMINDEX_NUMPARTS(anim_4C_indices),\n    anim_4C_values,\n    anim_4C_indices,\n    0,\n};\n\n\nstatic const u16 anim_4C_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0009, 0x0002, 0x0001, 0x0000, 0x0001, 0x000B, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0009, 0x0146,\n    0x0009, 0x012B, 0x0009, 0x0134, 0x0009, 0x013D,\n    0x0009, 0x0110, 0x0009, 0x0119, 0x0009, 0x0122,\n    0x0001, 0x010C, 0x0001, 0x010D, 0x0001, 0x010E,\n    0x0009, 0x0030, 0x0009, 0x0039, 0x0009, 0x0042,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0009, 0x0027,\n    0x0009, 0x000C, 0x0009, 0x0015, 0x0009, 0x001E,\n    0x0001, 0x0108, 0x0001, 0x0109, 0x0001, 0x010A,\n    0x0009, 0x006F, 0x0009, 0x0078, 0x0009, 0x0081,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0009, 0x0066,\n    0x0009, 0x004B, 0x0009, 0x0054, 0x0009, 0x005D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x010B,\n    0x0009, 0x00ED, 0x0009, 0x00F6, 0x0009, 0x00FF,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0009, 0x00E4,\n    0x0009, 0x00C9, 0x0009, 0x00D2, 0x0009, 0x00DB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x010F,\n    0x0009, 0x00AE, 0x0009, 0x00B7, 0x0009, 0x00C0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0009, 0x00A5,\n    0x0009, 0x008A, 0x0009, 0x0093, 0x0009, 0x009C,\n};\n\nstatic const s16 anim_4C_values[] = {\n    0x0000, 0x00AA, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x3FFF, 0xFCC4, 0xFD55, 0xFE16, 0xFED4,\n    0xFF5D, 0xFFA4, 0xFFC6, 0xFFD6, 0xFFE5, 0xFAC9, 0xFB2D, 0xFB99,\n    0xFC08, 0xFC75, 0xFD05, 0xFDB0, 0xFE29, 0xFE23, 0x027D, 0xFDFD,\n    0xF853, 0xF328, 0xF021, 0xF08E, 0xF34A, 0xF64B, 0xF788, 0xEB24,\n    0xE70D, 0xE27E, 0xDED3, 0xDD64, 0xE073, 0xE6D9, 0xECD4, 0xEEA1,\n    0xF744, 0xEFD8, 0xE593, 0xDA8C, 0xD0D7, 0xC678, 0xBAAD, 0xB16A,\n    0xAEA5, 0xEED2, 0xEEF0, 0xEE3D, 0xED28, 0xEC20, 0xEAF8, 0xE95F,\n    0xE78B, 0xE5B1, 0xCD95, 0xCE7C, 0xD13C, 0xD4CC, 0xD826, 0xDBD1,\n    0xE07E, 0xE560, 0xE9A9, 0x0297, 0x023B, 0x01C4, 0x0146, 0x00D9,\n    0x0090, 0x0082, 0x00C5, 0x016D, 0x0339, 0x035D, 0x038D, 0x03C0,\n    0x03EF, 0x0413, 0x0425, 0x041C, 0x03F1, 0xFD38, 0xFBCD, 0xF9F3,\n    0xF7D4, 0xF59A, 0xF36F, 0xF17D, 0xEFEF, 0xEEEE, 0xF2EC, 0xF465,\n    0xF5A3, 0xF685, 0xF6EC, 0xF6BB, 0xF5D0, 0xF40E, 0xF156, 0x0F88,\n    0x1277, 0x169D, 0x1C0F, 0x22E0, 0x2B24, 0x34EF, 0x4054, 0x4D67,\n    0x1223, 0x1235, 0x12B8, 0x13C0, 0x1560, 0x17AC, 0x1AB8, 0x1E98,\n    0x2360, 0xD18C, 0xD355, 0xD5E8, 0xD986, 0xDE71, 0xE4EB, 0xED34,\n    0xF78F, 0x043C, 0xFF5D, 0xFF2A, 0xFEE9, 0xFEAA, 0xFE7A, 0xFE68,\n    0xFE83, 0xFED8, 0xFF76, 0xFF61, 0xFF53, 0xFF3F, 0xFF2A, 0xFF1A,\n    0xFF13, 0xFF19, 0xFF33, 0xFF65, 0xE907, 0xEAA0, 0xEC29, 0xED69,\n    0xEE28, 0xEE2B, 0xED3A, 0xEB1C, 0xE797, 0x1654, 0x1302, 0x100C,\n    0x0DA4, 0x0BFD, 0x0B48, 0x0BBA, 0x0D83, 0x10D8, 0x0C29, 0x0CC8,\n    0x0D66, 0x0DFC, 0x0E81, 0x0EEE, 0x0F39, 0x0F5C, 0x0F4E, 0x0255,\n    0x01FF, 0x01BA, 0x0194, 0x019D, 0x01E1, 0x0270, 0x0357, 0x04A6,\n    0xC122, 0xC2E6, 0xC459, 0xC560, 0xC5E5, 0xC5CF, 0xC507, 0xC373,\n    0xC0FD, 0x0003, 0x000B, 0x0015, 0x001F, 0x0027, 0x002A, 0x0026,\n    0x0019, 0x0000, 0xFFFD, 0xFFF4, 0xFFE8, 0xFFDD, 0xFFD4, 0xFFD0,\n    0xFFD5, 0xFFE4, 0x0000, 0xD312, 0xD3EE, 0xD4D3, 0xD59A, 0xD61C,\n    0xD632, 0xD5B6, 0xD47F, 0xD266, 0x3222, 0x3415, 0x36FF, 0x3A95,\n    0x3E8B, 0x4297, 0x466F, 0x49C6, 0x4C54, 0xF3E5, 0xF368, 0xF2F1,\n    0xF285, 0xF22C, 0xF1EC, 0xF1CB, 0xF1D1, 0xF204, 0xFB11, 0xFA25,\n    0xF8F6, 0xF797, 0xF61A, 0xF492, 0xF312, 0xF1AB, 0xF070, 0xAF1D,\n    0xACDB, 0xA9B6, 0xA5EF, 0xA1C5, 0x9D76, 0x9941, 0x9567, 0x9226,\n    0x7FFF, 0x7FFF, 0x4171, 0xBF5F, 0x7FFF, 0x7FFF, 0x4171, 0xBF5F,\n    0xFF6A, 0xFF7F, 0xFF9E, 0xFFC5, 0xFFEE, 0x0018, 0x003F, 0x005F,\n    0x0076, 0x020E, 0x0213, 0x0219, 0x0220, 0x0226, 0x0229, 0x0228,\n    0x0222, 0x0216, 0xEE42, 0xEFBD, 0xF1F5, 0xF4B2, 0xF7BC, 0xFADC,\n    0xFDD9, 0x007A, 0x0289, 0x0048, 0x003E, 0x002F, 0x001C, 0x0009,\n    0xFFF8, 0xFFEC, 0xFFE7, 0xFFEC, 0xFF62, 0xFF60, 0xFF5D, 0xFF5A,\n    0xFF58, 0xFF56, 0xFF54, 0xFF54, 0xFF55, 0xFB5B, 0xFC77, 0xFEA8,\n    0x01A4, 0x0523, 0x08DA, 0x0C80, 0x0FCA, 0x1270, 0x4058, 0x3F97,\n    0x3E85, 0x3D4B, 0x3C0E, 0x3AF7, 0x3A2D, 0x39D7, 0x3A1C,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_4D_4E.inc.c",
    "content": "static const struct Animation anim_4D[] = {\n    1,\n    189,\n    0,\n    0,\n    0x0C,\n    ANIMINDEX_NUMPARTS(anim_4D_4E_indices),\n    anim_4D_4E_values,\n    anim_4D_4E_indices,\n    0,\n};\n\nstatic const struct Animation anim_4E[] = {\n    1,\n    189,\n    22,\n    0,\n    0x26,\n    ANIMINDEX_NUMPARTS(anim_4D_4E_indices),\n    anim_4D_4E_values,\n    anim_4D_4E_indices,\n    0,\n};\n\n\nstatic const u16 anim_4D_4E_indices[] = {\n    0x0001, 0x0000, 0x0026, 0x0001, 0x0026, 0x0027, 0x0001, 0x0000, 0x0001, 0x004D, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0026, 0x04A6,\n    0x0026, 0x0434, 0x0026, 0x045A, 0x0026, 0x0480,\n    0x0026, 0x03C2, 0x0026, 0x03E8, 0x0026, 0x040E,\n    0x0001, 0x03BE, 0x0001, 0x03BF, 0x0001, 0x03C0,\n    0x0026, 0x0076, 0x0026, 0x009C, 0x0026, 0x00C2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0026, 0x0050,\n    0x0001, 0x0000, 0x0001, 0x004E, 0x0001, 0x004F,\n    0x0001, 0x0395, 0x0001, 0x0396, 0x0001, 0x0397,\n    0x0026, 0x010F, 0x0026, 0x0135, 0x0026, 0x015B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0026, 0x00E9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00E8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0026, 0x0398,\n    0x0026, 0x0323, 0x0026, 0x0349, 0x0026, 0x036F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0026, 0x02FD,\n    0x0026, 0x028B, 0x0026, 0x02B1, 0x0026, 0x02D7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x03C1,\n    0x0026, 0x0219, 0x0026, 0x023F, 0x0026, 0x0265,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0026, 0x01F3,\n    0x0026, 0x0181, 0x0026, 0x01A7, 0x0026, 0x01CD,\n};\n\nstatic const s16 anim_4D_4E_values[] = {\n    0x0000, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA,\n    0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA,\n    0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA,\n    0x0090, 0x0074, 0x0073, 0x007A, 0x0081, 0x0086, 0x008C, 0x0091,\n    0x0096, 0x009A, 0x009E, 0x00A2, 0x00A5, 0x00A7, 0x00AA, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FFF, 0xF97C, 0xED8C,\n    0xD5C7, 0xD923, 0xE140, 0xEB2F, 0xF400, 0xF8C2, 0xFA69, 0xFBDE,\n    0xFD1E, 0xFE27, 0xFEF7, 0xFF8B, 0xFFE1, 0xFFF6, 0xFFC9, 0xFF57,\n    0xFE9E, 0xFD9B, 0xFC4C, 0xFAAF, 0xF8C2, 0xF271, 0xE6B4, 0xDA11,\n    0xD111, 0xCEA5, 0xD001, 0xD111, 0xD08E, 0xCFF1, 0xCF40, 0xCE83,\n    0xCDC2, 0xCD03, 0xCC4E, 0xCBA9, 0xCB1D, 0xCAAF, 0xF619, 0xF4A1,\n    0xF114, 0xECBC, 0xE8E1, 0xE6CD, 0xE628, 0xE5BE, 0xE586, 0xE578,\n    0xE58C, 0xE5BA, 0xE5FA, 0xE644, 0xE690, 0xE6D7, 0xE710, 0xE734,\n    0xE73A, 0xE71A, 0xE6CD, 0xE596, 0xE355, 0xE0E8, 0xDF2E, 0xDE48,\n    0xDE1C, 0xDF2E, 0xE14B, 0xE3D6, 0xE6B0, 0xE9BB, 0xECDB, 0xEFF0,\n    0xF2DE, 0xF587, 0xF7CC, 0xF990, 0xD3FE, 0xD452, 0xD51F, 0xD61A,\n    0xD6F9, 0xD771, 0xD792, 0xD7A0, 0xD79D, 0xD78D, 0xD774, 0xD755,\n    0xD734, 0xD714, 0xD6F8, 0xD6E4, 0xD6DC, 0xD6E2, 0xD6FB, 0xD729,\n    0xD771, 0xD874, 0xDA54, 0xDC5A, 0xDDCA, 0xDE5B, 0xDE51, 0xDDCA,\n    0xDCF7, 0xDBF8, 0xDADA, 0xD9A9, 0xD870, 0xD73B, 0xD616, 0xD50C,\n    0xD428, 0xD377, 0xDA6E, 0xDC1C, 0xE02A, 0xE520, 0xE988, 0xEBE8,\n    0xECA3, 0xED19, 0xED55, 0xED60, 0xED43, 0xED09, 0xECBA, 0xEC61,\n    0xEC06, 0xEBB4, 0xEB75, 0xEB50, 0xEB51, 0xEB80, 0xEBE8, 0xED81,\n    0xF078, 0xF3AA, 0xF5F0, 0xF711, 0xF73E, 0xF5F0, 0xF36C, 0xF066,\n    0xED01, 0xE962, 0xE5AA, 0xE1FF, 0xDE83, 0xDB59, 0xD8A6, 0xD68C,\n    0xF549, 0xC61C, 0xC90E, 0xD02C, 0xD8E3, 0xE09F, 0xE4CB, 0xE62D,\n    0xE745, 0xE818, 0xE8AD, 0xE907, 0xE92E, 0xE925, 0xE8F3, 0xE89C,\n    0xE827, 0xE798, 0xE6F5, 0xE644, 0xE589, 0xE4CB, 0xE28B, 0xDE5B,\n    0xD9D9, 0xD6A4, 0xD5F6, 0xD6A1, 0xD6A4, 0xD586, 0xD42E, 0xD2AC,\n    0xD10F, 0xCF68, 0xCDC7, 0xCC3A, 0xCAD2, 0xC99F, 0xC8B0, 0x3FFC,\n    0x3EDB, 0x3C22, 0x38CD, 0x35D7, 0x343F, 0x3400, 0x345B, 0x352E,\n    0x3658, 0x37B7, 0x392A, 0x3A90, 0x3BC7, 0x3CAE, 0x3D24, 0x3D07,\n    0x3C36, 0x3A90, 0x37F3, 0x343F, 0x26BF, 0x0DBE, 0xF396, 0xE29E,\n    0xE31A, 0xEDCA, 0xF5C4, 0xF804, 0xFA21, 0xFC18, 0xFDE7, 0xFF8B,\n    0x00FF, 0x0243, 0x0353, 0x042B, 0x04C9, 0x3DF7, 0x3EAF, 0x406B,\n    0x428B, 0x446D, 0x4572, 0x45E2, 0x466C, 0x4707, 0x47A9, 0x4847,\n    0x48D9, 0x4955, 0x49B0, 0x49E1, 0x49DE, 0x499E, 0x4916, 0x483D,\n    0x470A, 0x4572, 0x3FCC, 0x3555, 0x2A5B, 0x232D, 0x233B, 0x277A,\n    0x2A7B, 0x2AFF, 0x2B62, 0x2BAB, 0x2BDC, 0x2BF9, 0x2C07, 0x2C07,\n    0x2C00, 0x2BF3, 0x2BE6, 0xD957, 0xD744, 0xD242, 0xCC21, 0xC6B0,\n    0xC3C0, 0xC310, 0xC30F, 0xC39B, 0xC492, 0xC5D0, 0xC733, 0xC899,\n    0xC9DD, 0xCADE, 0xCB79, 0xCB8B, 0xCAF1, 0xC988, 0xC72E, 0xC3C0,\n    0xB6FF, 0x9F66, 0x86E9, 0x777A, 0x78DB, 0x8471, 0x8EAC, 0x94B0,\n    0x9B33, 0xA205, 0xA8F4, 0xAFCC, 0xB65D, 0xBC75, 0xC1E1, 0xC66F,\n    0xC9EE, 0xFF76, 0xFF76, 0xFF76, 0xFF76, 0xFF76, 0xFF76, 0xFF6D,\n    0xFF55, 0xFF33, 0xFF09, 0xFEDB, 0xFEAD, 0xFE83, 0xFE61, 0xFE49,\n    0xFE40, 0xFE4A, 0xFE6B, 0xFEA5, 0xFEFC, 0xFF76, 0x0104, 0x03EF,\n    0x0732, 0x09C7, 0x08FF, 0x06CF, 0x0538, 0x04AD, 0x041B, 0x0385,\n    0x02EF, 0x025D, 0x01D3, 0x0153, 0x00E3, 0x0085, 0x003D, 0xFF65,\n    0xFF65, 0xFF65, 0xFF65, 0xFF65, 0xFF65, 0xFF63, 0xFF5E, 0xFF57,\n    0xFF4F, 0xFF45, 0xFF3C, 0xFF34, 0xFF2C, 0xFF28, 0xFF26, 0xFF28,\n    0xFF2E, 0xFF3A, 0xFF4C, 0xFF65, 0xFFB6, 0x004D, 0x00F7, 0x017E,\n    0x0159, 0x00E3, 0x009B, 0x0078, 0x0052, 0x002A, 0x0001, 0xFFDA,\n    0xFFB4, 0xFF90, 0xFF71, 0xFF56, 0xFF42, 0xE797, 0xE797, 0xE797,\n    0xE797, 0xE797, 0xE797, 0xE7CF, 0xE868, 0xE949, 0xEA5A, 0xEB84,\n    0xECAD, 0xEDBE, 0xEE9F, 0xEF38, 0xEF70, 0xEF30, 0xEE5F, 0xECE5,\n    0xEAAB, 0xE797, 0xDDA7, 0xCB07, 0xB5E9, 0xA47F, 0xA419, 0xAB4E,\n    0xAEAE, 0xB130, 0xB3F4, 0xB6E3, 0xB9E6, 0xBCE5, 0xBFC9, 0xC27B,\n    0xC4E4, 0xC6EC, 0xC87C, 0x10D8, 0x10D8, 0x10D8, 0x10D8, 0x10D8,\n    0x10D8, 0x10A3, 0x1013, 0x0F3F, 0x0E3E, 0x0D27, 0x0C0F, 0x0B0E,\n    0x0A3A, 0x09AA, 0x0975, 0x09B2, 0x0A76, 0x0BDA, 0x0DF3, 0x10D8,\n    0x1A10, 0x2B5D, 0x3F31, 0x4FF9, 0x53E3, 0x4BD3, 0x4703, 0x4344,\n    0x3F21, 0x3ABC, 0x363A, 0x31BB, 0x2D65, 0x2959, 0x25BB, 0x22AE,\n    0x2055, 0x0F4E, 0x0F4E, 0x0F4E, 0x0F4E, 0x0F4E, 0x0F4E, 0x0F52,\n    0x0F60, 0x0F73, 0x0F8B, 0x0FA5, 0x0FBF, 0x0FD7, 0x0FEA, 0x0FF8,\n    0x0FFC, 0x0FF7, 0x0FE5, 0x0FC4, 0x0F92, 0x0F4E, 0x0E7C, 0x0CF1,\n    0x0B1F, 0x0976, 0x082A, 0x0735, 0x0838, 0x09DF, 0x0BBB, 0x0DBC,\n    0x0FCF, 0x11E4, 0x13EA, 0x15CF, 0x1783, 0x18F4, 0x1A10, 0x04A6,\n    0x04A6, 0x04A6, 0x04A6, 0x04A6, 0x04A6, 0x0497, 0x046E, 0x0432,\n    0x03E9, 0x039A, 0x034B, 0x0302, 0x02C6, 0x029D, 0x028E, 0x029F,\n    0x02D7, 0x033C, 0x03D4, 0x04A6, 0x0740, 0x0C22, 0x11BF, 0x1688,\n    0x17E4, 0x17C6, 0x16F8, 0x1670, 0x15DA, 0x153C, 0x149A, 0x13F9,\n    0x135E, 0x12CE, 0x124D, 0x11E0, 0x118D, 0xC0FD, 0xC0FD, 0xC0FD,\n    0xC0FD, 0xC0FD, 0xC0FD, 0xC11E, 0xC17A, 0xC200, 0xC2A3, 0xC354,\n    0xC406, 0xC4A9, 0xC52F, 0xC58A, 0xC5AC, 0xC585, 0xC509, 0xC427,\n    0xC2D3, 0xC0FD, 0xBB32, 0xB04F, 0xA3C1, 0x98F2, 0x9504, 0x9431,\n    0x9699, 0x9895, 0x9AC7, 0x9D1C, 0x9F82, 0xA1E6, 0xA436, 0xA65E,\n    0xA84B, 0xA9EC, 0xAB2D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0001, 0x0005, 0x000A, 0x0011, 0x0018, 0x001F, 0x0026,\n    0x002B, 0x002F, 0x0030, 0x002E, 0x0029, 0x0020, 0x0013, 0x0000,\n    0xFFC2, 0xFF4D, 0xFECA, 0xFE62, 0xFE7D, 0x0000, 0x03E1, 0x03CA,\n    0x038A, 0x032C, 0x02B6, 0x0234, 0x01AD, 0x012A, 0x00B5, 0x0056,\n    0x0017, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF,\n    0xFFFB, 0xFFF5, 0xFFED, 0xFFE5, 0xFFDD, 0xFFD5, 0xFFCF, 0xFFCB,\n    0xFFC9, 0xFFCB, 0xFFD1, 0xFFDB, 0xFFEB, 0x0000, 0x0051, 0x00E7,\n    0x0180, 0x01D8, 0x00AA, 0x0000, 0x023E, 0x0231, 0x020C, 0x01D5,\n    0x0191, 0x0146, 0x00F8, 0x00AC, 0x0068, 0x0032, 0x000D, 0xD266,\n    0xD266, 0xD266, 0xD266, 0xD266, 0xD266, 0xD283, 0xD2CF, 0xD340,\n    0xD3C9, 0xD45E, 0xD4F3, 0xD57C, 0xD5EC, 0xD639, 0xD655, 0xD635,\n    0xD5CC, 0xD50F, 0xD3F1, 0xD266, 0xCD7E, 0xC448, 0xB9B9, 0xB0C9,\n    0xAEAD, 0xB449, 0xACB9, 0xADE9, 0xAF90, 0xB18E, 0xB3C6, 0xB616,\n    0xB861, 0xBA87, 0xBC6A, 0xBDE9, 0xBEE5, 0x4C54, 0x4C54, 0x4C54,\n    0x4C54, 0x4C54, 0x4C54, 0x4C54, 0x4C54, 0x4C54, 0x4C55, 0x4C56,\n    0x4C56, 0x4C57, 0x4C57, 0x4C58, 0x4C58, 0x4C57, 0x4C57, 0x4C56,\n    0x4C55, 0x4C54, 0x4C12, 0x4BA5, 0x4B86, 0x4C30, 0x526E, 0x4928,\n    0x4998, 0x4645, 0x426A, 0x3E33, 0x39CF, 0x356C, 0x3137, 0x2D60,\n    0x2A13, 0x277E, 0x25D0, 0xF8BF, 0xF981, 0xFB52, 0xFD7C, 0xFF4D,\n    0x000F, 0x0015, 0x0027, 0x0041, 0x0061, 0x0084, 0x00A7, 0x00C7,\n    0x00E1, 0x00F3, 0x00F9, 0x00F2, 0x00D9, 0x00AD, 0x006B, 0x000F,\n    0xFEEE, 0xFCCC, 0xFA57, 0xF83A, 0xF777, 0xF749, 0xF1FB, 0xEF11,\n    0xEBE3, 0xE890, 0xE535, 0xE1EE, 0xDED8, 0xDC11, 0xD9B6, 0xD7E3,\n    0xD6B5, 0xED03, 0xECD6, 0xEC6A, 0xEBE9, 0xEB7D, 0xEB50, 0xEB4E,\n    0xEB4A, 0xEB44, 0xEB3D, 0xEB35, 0xEB2C, 0xEB25, 0xEB1F, 0xEB1B,\n    0xEB19, 0xEB1B, 0xEB21, 0xEB2B, 0xEB3A, 0xEB50, 0xEB98, 0xEC1F,\n    0xECB2, 0xED20, 0xECC5, 0xEBDC, 0xED15, 0xED17, 0xED0E, 0xECFC,\n    0xECE3, 0xECC6, 0xECA7, 0xEC88, 0xEC6D, 0xEC56, 0xEC46, 0x8275,\n    0x80D6, 0x7CF9, 0x785D, 0x7481, 0x72E2, 0x72CE, 0x7297, 0x7247,\n    0x71E5, 0x717B, 0x7110, 0x70AE, 0x705E, 0x7027, 0x7013, 0x702A,\n    0x7075, 0x70FC, 0x71C8, 0x72E2, 0x7664, 0x7CF9, 0x8484, 0x8AE6,\n    0x8C61, 0x8B9C, 0x94AC, 0x9855, 0x9C3B, 0xA03E, 0xA43E, 0xA81D,\n    0xABBA, 0xAEF5, 0xB1B0, 0xB3CA, 0xB524, 0x7FFF, 0x7FFF, 0x4171,\n    0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F,\n    0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F,\n    0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF86, 0xBFC7, 0xBFD4,\n    0xBF5F, 0xBB4C, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F,\n    0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0x7FFF, 0x7FFF,\n    0x4171, 0xBF5F, 0x022D, 0xFFD5, 0xFA2A, 0xF33A, 0xED12, 0xE9C0,\n    0xE89D, 0xE7A5, 0xE6D8, 0xE635, 0xE5BD, 0xE56E, 0xE548, 0xE54B,\n    0xE577, 0xE5CC, 0xE648, 0xE6EB, 0xE7B6, 0xE8A8, 0xE9C0, 0xED4E,\n    0xF3E8, 0xFAFC, 0xFFF4, 0x0118, 0x0005, 0xFF22, 0xFF28, 0xFF34,\n    0xFF47, 0xFF5E, 0xFF77, 0xFF93, 0xFFAE, 0xFFC8, 0xFFDE, 0xFFF0,\n    0x087F, 0x0951, 0x0B4B, 0x0DB7, 0x0FDD, 0x1106, 0x116F, 0x11CF,\n    0x1224, 0x126E, 0x12AB, 0x12D9, 0x12F7, 0x1304, 0x12FE, 0x12E4,\n    0x12B4, 0x126E, 0x1210, 0x1198, 0x1106, 0x0F22, 0x0B9D, 0x07D2,\n    0x051E, 0x0469, 0x04D5, 0x050B, 0x04A8, 0x0432, 0x03AE, 0x0321,\n    0x0290, 0x0202, 0x017B, 0x0101, 0x0098, 0x0047, 0x054E, 0x04D1,\n    0x03A3, 0x0231, 0x00E9, 0x0038, 0x0003, 0xFFE5, 0xFFD8, 0xFFDB,\n    0xFFEA, 0x0001, 0x001D, 0x003C, 0x005A, 0x0073, 0x0084, 0x008A,\n    0x0082, 0x0067, 0x0038, 0xFFB2, 0xFEB0, 0xFD57, 0xFBD0, 0xF968,\n    0xF695, 0xF53F, 0xF56B, 0xF5D3, 0xF66C, 0xF72A, 0xF7FE, 0xF8DF,\n    0xF9BE, 0xFA91, 0xFB4A, 0xFBDD, 0xEC3E, 0xF121, 0xFCF1, 0x0B65,\n    0x183A, 0x1F26, 0x2175, 0x2350, 0x24BE, 0x25C6, 0x2670, 0x26C4,\n    0x26C7, 0x2683, 0x25FD, 0x253E, 0x244D, 0x2331, 0x21F2, 0x2096,\n    0x1F26, 0x1AA9, 0x1254, 0x096B, 0x0337, 0x0201, 0x03A9, 0x04D1,\n    0x048A, 0x0429, 0x03B4, 0x0330, 0x02A4, 0x0216, 0x018D, 0x010E,\n    0x00A1, 0x004C, 0xFBE4, 0xFAE0, 0xF86C, 0xF56B, 0xF2C1, 0xF150,\n    0xF0D5, 0xF071, 0xF023, 0xEFEA, 0xEFC4, 0xEFB0, 0xEFAD, 0xEFBA,\n    0xEFD4, 0xEFFB, 0xF02E, 0xF06B, 0xF0B0, 0xF0FD, 0xF150, 0xF24E,\n    0xF427, 0xF62B, 0xF7AD, 0xF838, 0xF841, 0xF87B, 0xF919, 0xF9CF,\n    0xFA98, 0xFB6B, 0xFC41, 0xFD13, 0xFDD9, 0xFE8C, 0xFF24, 0xFF99,\n    0x11A9, 0x0E6B, 0x0694, 0xFCFC, 0xF478, 0xEFDF, 0xEE4C, 0xECF2,\n    0xEBD3, 0xEAEE, 0xEA43, 0xE9D1, 0xE999, 0xE99A, 0xE9D5, 0xEA49,\n    0xEAF5, 0xEBDB, 0xECF9, 0xEE50, 0xEFDF, 0xF524, 0xFEE5, 0x0910,\n    0x0F98, 0x0F0C, 0x0A6D, 0x0754, 0x06F5, 0x06C3, 0x06B8, 0x06CC,\n    0x06F9, 0x0737, 0x077F, 0x07CA, 0x0810, 0x084C, 0x40A1, 0x40A1,\n    0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x409A, 0x4088, 0x406C, 0x404B,\n    0x4027, 0x4003, 0x3FE2, 0x3FC6, 0x3FB4, 0x3FAD, 0x3FB5, 0x3FCE,\n    0x3FFC, 0x4041, 0x40A1, 0x4225, 0x44EB, 0x4796, 0x48C7, 0x48AC,\n    0x4862, 0x47EE, 0x4759, 0x46AA, 0x45E9, 0x451C, 0x444C, 0x437F,\n    0x42BE, 0x420F, 0x417A, 0x4106,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_4F.inc.c",
    "content": "static const struct Animation anim_4F[] = {\n    1,\n    189,\n    0,\n    0,\n    0x15,\n    ANIMINDEX_NUMPARTS(anim_4F_indices),\n    anim_4F_values,\n    anim_4F_indices,\n    0,\n};\n\n\nstatic const u16 anim_4F_indices[] = {\n    0x0015, 0x0001, 0x0015, 0x0016, 0x0015, 0x002B, 0x0001, 0x0000, 0x0001, 0x0040, 0x0001, 0x0000,\n    0x0015, 0x02D6, 0x0015, 0x02EB, 0x0015, 0x0300,\n    0x0015, 0x0297, 0x0015, 0x02AC, 0x0015, 0x02C1,\n    0x0015, 0x0258, 0x0015, 0x026D, 0x0015, 0x0282,\n    0x0001, 0x0254, 0x0001, 0x0255, 0x0001, 0x0256,\n    0x0015, 0x0058, 0x0015, 0x006D, 0x0015, 0x0082,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0015, 0x0043,\n    0x0001, 0x0000, 0x0001, 0x0041, 0x0001, 0x0042,\n    0x0001, 0x0250, 0x0001, 0x0251, 0x0001, 0x0252,\n    0x0015, 0x00EB, 0x0015, 0x0100, 0x0015, 0x0115,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0015, 0x00D6,\n    0x0015, 0x0097, 0x0015, 0x00AC, 0x0015, 0x00C1,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0253,\n    0x0015, 0x0211, 0x0015, 0x0226, 0x0015, 0x023B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0015, 0x01FC,\n    0x0015, 0x01BD, 0x0015, 0x01D2, 0x0015, 0x01E7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0257,\n    0x0015, 0x017E, 0x0015, 0x0193, 0x0015, 0x01A8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0015, 0x0169,\n    0x0015, 0x012A, 0x0015, 0x013F, 0x0015, 0x0154,\n};\n\nstatic const s16 anim_4F_values[] = {\n    0x0000, 0x0010, 0x0011, 0x0011, 0x0011, 0x0012, 0x0012, 0x0011,\n    0x0010, 0x000F, 0x000E, 0x000D, 0x000C, 0x000B, 0x0009, 0x0007,\n    0x0005, 0x0004, 0x0002, 0x0001, 0x0000, 0x0000, 0x00C9, 0x0142,\n    0x0171, 0x019A, 0x01B9, 0x01CA, 0x01CD, 0x01C4, 0x01B3, 0x019D,\n    0x0186, 0x0171, 0x015B, 0x0141, 0x0124, 0x0106, 0x00EA, 0x00D1,\n    0x00BC, 0x00AF, 0x00AA, 0x002B, 0x002F, 0x0033, 0x0036, 0x0038,\n    0x0038, 0x0037, 0x0035, 0x0032, 0x002F, 0x002B, 0x0027, 0x0022,\n    0x001D, 0x0018, 0x0012, 0x000C, 0x0007, 0x0003, 0x0000, 0x0000,\n    0x3FFF, 0xF97C, 0xED8C, 0xE30F, 0xE59B, 0xE6F1, 0xE72F, 0xE6A2,\n    0xE59B, 0xE409, 0xE1DD, 0xDF6F, 0xDD16, 0xDB28, 0xD9FD, 0xD980,\n    0xD959, 0xD974, 0xD9BF, 0xDA27, 0xDA99, 0xDB01, 0xDB4E, 0xDB6C,\n    0xABAC, 0xA63E, 0xA3CB, 0xA427, 0xA58E, 0xA63E, 0xA6FC, 0xA8E9,\n    0xAAC7, 0xAB59, 0xA961, 0xA3A0, 0x9934, 0x8AF4, 0x7A37, 0x685C,\n    0x56B9, 0x46A8, 0x3983, 0x30A2, 0x2D60, 0xCA7F, 0xC90F, 0xC850,\n    0xC845, 0xC89E, 0xC90F, 0xC997, 0xCA56, 0xCB2A, 0xCBF3, 0xCC91,\n    0xCCE3, 0xCCEB, 0xCCCB, 0xCC8D, 0xCC3C, 0xCBE2, 0xCB89, 0xCB3D,\n    0xCB07, 0xCAF3, 0x2777, 0x2D22, 0x2FE0, 0x2FD2, 0x2E6C, 0x2D22,\n    0x2B3C, 0x27E6, 0x2466, 0x2200, 0x21FA, 0x259B, 0x2D88, 0x38CB,\n    0x4640, 0x54C3, 0x6332, 0x7067, 0x7B3F, 0x829A, 0x854D, 0xFFA6,\n    0x0000, 0x001E, 0x001A, 0x000A, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0xFFF2, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xF48B, 0xF549, 0xF5A0, 0xF597, 0xF566, 0xF549, 0xF549,\n    0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549,\n    0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xE039, 0xE2C1,\n    0xE3DF, 0xE425, 0xE3B9, 0xE2C1, 0xE0E8, 0xDE2B, 0xDB29, 0xD885,\n    0xD6DD, 0xD6D3, 0xD883, 0xDB5D, 0xDF06, 0xE320, 0xE74C, 0xEB2E,\n    0xEE67, 0xF09B, 0xF16C, 0x2317, 0x2751, 0x26A3, 0x26A6, 0x26FF,\n    0x2751, 0x2638, 0x2397, 0x2101, 0x2008, 0x223F, 0x2936, 0x3606,\n    0x4799, 0x5C42, 0x7257, 0x882C, 0x9C0E, 0xAC55, 0xB754, 0xBB5D,\n    0x2017, 0x1853, 0x16DF, 0x16D2, 0x1786, 0x1853, 0x18FE, 0x19C3,\n    0x1AAC, 0x1BC4, 0x1D14, 0x1EA8, 0x20AF, 0x2332, 0x2600, 0x28E7,\n    0x2BB6, 0x2E3B, 0x3045, 0x31A2, 0x3222, 0xE9CE, 0xF7D2, 0xF908,\n    0xF8FC, 0xF85B, 0xF7D2, 0xF6AD, 0xF472, 0xF228, 0xF0D6, 0xF183,\n    0xF535, 0xFC88, 0x06BE, 0x12D9, 0x1FD6, 0x2CB6, 0x3878, 0x421C,\n    0x48A0, 0x4B06, 0x0005, 0x0000, 0xFFF7, 0xFFEB, 0xFFEA, 0x0000,\n    0x0039, 0x008C, 0x00E8, 0x013C, 0x0177, 0x0189, 0x0171, 0x013D,\n    0x00F7, 0x00A5, 0x0051, 0x0001, 0xFFC0, 0xFF92, 0xFF81, 0xFF31,\n    0xFF30, 0xFF32, 0xFF36, 0xFF37, 0xFF30, 0xFF1E, 0xFF03, 0xFEE6,\n    0xFECB, 0xFEB8, 0xFEB3, 0xFEBB, 0xFECC, 0xFEE2, 0xFEFD, 0xFF18,\n    0xFF32, 0xFF47, 0xFF56, 0xFF5B, 0xC8C9, 0xC9D8, 0xCA69, 0xCA76,\n    0xCA34, 0xC9D8, 0xC91A, 0xC7D9, 0xC685, 0xC58B, 0xC55C, 0xC666,\n    0xC8DB, 0xCC65, 0xD0A8, 0xD544, 0xD9DB, 0xDE11, 0xE187, 0xE3E0,\n    0xE4BD, 0x5948, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0012,\n    0x0000, 0x0000, 0x0000, 0x0283, 0x09B7, 0x2D05, 0x4C40, 0x4A45,\n    0x42EF, 0x384E, 0x2C73, 0x216E, 0x194E, 0x1624, 0xF588, 0xF1C7,\n    0xEFCA, 0xEF8B, 0xF026, 0xF0B2, 0xF0D3, 0xF0E5, 0xF113, 0xF189,\n    0xF272, 0xF3FA, 0xF659, 0xF977, 0xFD0F, 0x00D9, 0x0491, 0x07F0,\n    0x0AAF, 0x0C89, 0x0D37, 0x0DFC, 0x0F56, 0x1184, 0x146F, 0x16F6,\n    0x17FA, 0x1756, 0x15DC, 0x13E1, 0x11B9, 0x0FB9, 0x0E36, 0x0D08,\n    0x0BD8, 0x0AAF, 0x0998, 0x089D, 0x07C8, 0x0723, 0x06B8, 0x0693,\n    0x882B, 0x7D93, 0x77E5, 0x771A, 0x7841, 0x786C, 0x7660, 0x736F,\n    0x707C, 0x6E6D, 0x6E24, 0x7085, 0x7605, 0x7DF5, 0x8783, 0x91D9,\n    0x9C27, 0xA598, 0xAD5C, 0xB2A0, 0xB48F, 0x042D, 0x03EB, 0x03CA,\n    0x03B0, 0x0388, 0x033D, 0x02C2, 0x0227, 0x017F, 0x00DF, 0x005A,\n    0x0004, 0xFFD9, 0xFFC1, 0xFFBA, 0xFFBF, 0xFFCC, 0xFFDD, 0xFFEE,\n    0xFFFB, 0x0000, 0xFE72, 0xFC50, 0xFBB7, 0xFB83, 0xFB8E, 0xFBB4,\n    0xFBED, 0xFC43, 0xFCAA, 0xFD17, 0xFD7E, 0xFDD4, 0xFE21, 0xFE73,\n    0xFEC6, 0xFF17, 0xFF61, 0xFFA1, 0xFFD4, 0xFFF5, 0x0000, 0xC578,\n    0xD849, 0xDE01, 0xE08A, 0xE0AD, 0xDF38, 0xDBD5, 0xD673, 0xD03D,\n    0xCA5E, 0xC604, 0xC45A, 0xC55D, 0xC7F4, 0xCBAD, 0xD012, 0xD4AF,\n    0xD911, 0xDCC1, 0xDF4D, 0xE041, 0x13D5, 0x1127, 0x0E45, 0x0B39,\n    0x0968, 0x0A3A, 0x0DDD, 0x131F, 0x1959, 0x1FDF, 0x2609, 0x2B2C,\n    0x2FCB, 0x34B0, 0x39A5, 0x3E70, 0x42DB, 0x46AB, 0x49AA, 0x4BA0,\n    0x4C54, 0xF1E2, 0xF2BF, 0xF2CE, 0xF219, 0xF0F7, 0xEFBF, 0xEE2C,\n    0xEC0B, 0xE9D4, 0xE7FD, 0xE6FB, 0xE744, 0xE8FA, 0xEBB6, 0xEF25,\n    0xF2F3, 0xF6CC, 0xFA5C, 0xFD4F, 0xFF52, 0x000F, 0xFA51, 0xF805,\n    0xF520, 0xF185, 0xEDF8, 0xEB3B, 0xE930, 0xE74B, 0xE5A6, 0xE45A,\n    0xE380, 0xE333, 0xE37B, 0xE43A, 0xE54F, 0xE696, 0xE7EF, 0xE936,\n    0xEA4A, 0xEB09, 0xEB50, 0xD28B, 0xDAD4, 0xE0F9, 0xE53C, 0xE748,\n    0xE6C8, 0xE444, 0xE08F, 0xDBC5, 0xD602, 0xCF61, 0xC7FE, 0xBEF8,\n    0xB3E7, 0xA7A0, 0x9AF6, 0x8EBE, 0x83CC, 0x7AF1, 0x7507, 0x72DF,\n    0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F,\n    0x1245, 0x16EF, 0x1BAC, 0x1FE6, 0x22D9, 0x23C0, 0x22AB, 0x206D,\n    0x1D64, 0x19ED, 0x1666, 0x132D, 0x0FE6, 0x0C1F, 0x0814, 0x0403,\n    0x0027, 0xFCBE, 0xFA03, 0xF833, 0xF78B, 0xF2A0, 0xEE34, 0xEB07,\n    0xE842, 0xE66B, 0xE60A, 0xE720, 0xE91A, 0xEBA7, 0xEE72, 0xF12A,\n    0xF37C, 0xF5A5, 0xF806, 0xFA7E, 0xFCEE, 0xFF35, 0x0131, 0x02C5,\n    0x03CF, 0x042F, 0x111F, 0x16E7, 0x1928, 0x19AE, 0x18F5, 0x1779,\n    0x14F4, 0x114A, 0x0D36, 0x0976, 0x06C3, 0x05DA, 0x06C1, 0x08C9,\n    0x0B9D, 0x0EEA, 0x125A, 0x1599, 0x1853, 0x1A34, 0x1AE7, 0xEA69,\n    0xE634, 0xE0AE, 0xDB12, 0xD69B, 0xD484, 0xD4E8, 0xD6C8, 0xD9BD,\n    0xDD5F, 0xE144, 0xE505, 0xE915, 0xEDF2, 0xF345, 0xF8B6, 0xFDEE,\n    0x0294, 0x0653, 0x08D2, 0x09BB, 0x0000, 0xFF71, 0xFF05, 0xFEBB,\n    0xFE90, 0xFE85, 0xFEA0, 0xFEE2, 0xFF3A, 0xFF98, 0xFFEB, 0x0023,\n    0x0046, 0x0064, 0x007E, 0x0092, 0x00A3, 0x00AF, 0x00B7, 0x00BC,\n    0x00BE, 0xF700, 0xF5C4, 0xF4EE, 0xF48F, 0xF4B7, 0xF574, 0xF710,\n    0xF97E, 0xFC4C, 0xFF0B, 0x0149, 0x0296, 0x0308, 0x030F, 0x02C3,\n    0x023F, 0x019B, 0x00EF, 0x0056, 0xFFE8, 0xFFBE, 0x11BF, 0x120B,\n    0x1460, 0x178A, 0x1A4F, 0x1B73, 0x1AE3, 0x1987, 0x17A1, 0x1571,\n    0x1336, 0x1131, 0x0F28, 0x0CCE, 0x0A4B, 0x07C3, 0x055C, 0x033C,\n    0x0189, 0x0068, 0x0000, 0xFF4E, 0x0359, 0x0250, 0xFFD2, 0xFD3B,\n    0xFBEB, 0xFC1D, 0xFCF6, 0xFE2B, 0xFF76, 0x008C, 0x0128, 0x0155,\n    0x0157, 0x0138, 0x0102, 0x00C0, 0x007B, 0x003D, 0x0011, 0x0000,\n    0x31B4, 0x240D, 0x2028, 0x1EC5, 0x1EDD, 0x1F68, 0x200E, 0x211B,\n    0x2283, 0x2438, 0x262B, 0x284E, 0x2AE3, 0x2E0E, 0x3190, 0x352F,\n    0x38AC, 0x3BCD, 0x3E53, 0x4003, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_50.inc.c",
    "content": "static const struct Animation anim_50[] = {\n    1,\n    189,\n    0,\n    0,\n    0x06,\n    ANIMINDEX_NUMPARTS(anim_50_indices),\n    anim_50_values,\n    anim_50_indices,\n    0,\n};\n\n\nstatic const u16 anim_50_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0006, 0x0002, 0x0001, 0x0000, 0x0001, 0x0008, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00D1,\n    0x0006, 0x00BF, 0x0006, 0x00C5, 0x0006, 0x00CB,\n    0x0006, 0x00AD, 0x0006, 0x00B3, 0x0006, 0x00B9,\n    0x0001, 0x00A9, 0x0001, 0x00AA, 0x0001, 0x00AB,\n    0x0006, 0x0021, 0x0006, 0x0027, 0x0006, 0x002D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0006, 0x001B,\n    0x0006, 0x0009, 0x0006, 0x000F, 0x0006, 0x0015,\n    0x0001, 0x00A5, 0x0001, 0x00A6, 0x0001, 0x00A7,\n    0x0006, 0x004B, 0x0006, 0x0051, 0x0006, 0x0057,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0006, 0x0045,\n    0x0006, 0x0033, 0x0006, 0x0039, 0x0006, 0x003F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00A8,\n    0x0006, 0x0093, 0x0006, 0x0099, 0x0006, 0x009F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0006, 0x008D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0006, 0x0087,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00AC,\n    0x0006, 0x0075, 0x0006, 0x007B, 0x0006, 0x0081,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0006, 0x006F,\n    0x0006, 0x005D, 0x0006, 0x0063, 0x0006, 0x0069,\n};\n\nstatic const s16 anim_50_values[] = {\n    0x0000, 0x00AA, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x3FFF, 0x0000, 0xFFA8, 0xFED3, 0xFDD4, 0xFCF9, 0xFC93, 0xF97C,\n    0xF989, 0xF9AE, 0xF9E5, 0xFA29, 0xFA73, 0xED8C, 0xEFDC, 0xF564,\n    0xFC08, 0x01AA, 0x042F, 0xE67B, 0xE759, 0xE95B, 0xEBA0, 0xED45,\n    0xED69, 0xCA25, 0xCEFD, 0xDA95, 0xE884, 0xF460, 0xF9C2, 0xD6DA,\n    0xD8DD, 0xDDCA, 0xE3F9, 0xE9C0, 0xED76, 0xFDA5, 0xF973, 0xEF38,\n    0xE27A, 0xD6BF, 0xCF8D, 0x020B, 0x0220, 0x0251, 0x028A, 0x02B6,\n    0x02C2, 0x03A9, 0x039B, 0x0379, 0x0352, 0x0332, 0x0328, 0xF578,\n    0xF670, 0xF8B6, 0xFB5C, 0xFD73, 0xFE0B, 0xDAE3, 0xDCF7, 0xE205,\n    0xE847, 0xEDF9, 0xF156, 0x3BED, 0x36EC, 0x2B11, 0x1D19, 0x11BE,\n    0x0DBD, 0x29A2, 0x274A, 0x21AE, 0x1AEB, 0x1520, 0x126D, 0xF54C,\n    0xF147, 0xE7C3, 0xDC8E, 0xD377, 0xD04D, 0xFFC5, 0xFFBE, 0xFFAC,\n    0xFF96, 0xFF81, 0xFF76, 0xFF39, 0xFF3D, 0xFF47, 0xFF53, 0xFF5E,\n    0xFF65, 0xD5A9, 0xD752, 0xDB5C, 0xE05B, 0xE4E8, 0xE797, 0x41BC,\n    0x3E24, 0x355B, 0x2A60, 0x2031, 0x19CE, 0x0768, 0x07C0, 0x089A,\n    0x09B3, 0x0AC7, 0x0B92, 0x0954, 0x08B1, 0x0726, 0x0543, 0x0396,\n    0x02AE, 0xA3E7, 0xA667, 0xAC7E, 0xB40E, 0xBAFA, 0xBF23, 0xCB11,\n    0xCBBF, 0xCD66, 0xCF71, 0xD14D, 0xD266, 0x4CBC, 0x49E6, 0x4324,\n    0x3B11, 0x344B, 0x3170, 0xF894, 0xF837, 0xF753, 0xF631, 0xF51C,\n    0xF460, 0xF606, 0xF6AC, 0xF832, 0xF9F6, 0xFB53, 0xFBA8, 0x98E7,\n    0x9B68, 0xA15A, 0xA860, 0xAE20, 0xB03E, 0x7FFF, 0x7FFF, 0x4171,\n    0xBF5F, 0x7FFF, 0x7FFF, 0x4171, 0xBF5F, 0x007C, 0x005E, 0x0018,\n    0xFFC6, 0xFF80, 0xFF63, 0x0215, 0x0214, 0x0212, 0x020F, 0x020D,\n    0x020C, 0x02F2, 0x00BE, 0xFB7F, 0xF539, 0xEFF6, 0xEDBC, 0xFFB1,\n    0xFFC0, 0xFFE5, 0x0010, 0x0036, 0x0049, 0xFF67, 0xFF67, 0xFF66,\n    0xFF66, 0xFF65, 0xFF64, 0x211B, 0x1D60, 0x146A, 0x0991, 0x0030,\n    0xFB9F, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_51.inc.c",
    "content": "static const struct Animation anim_51[] = {\n    1,\n    189,\n    0,\n    0,\n    0x0E,\n    ANIMINDEX_NUMPARTS(anim_51_indices),\n    anim_51_values,\n    anim_51_indices,\n    0,\n};\n\n\nstatic const u16 anim_51_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x01E7,\n    0x000E, 0x01BD, 0x000E, 0x01CB, 0x000E, 0x01D9,\n    0x000E, 0x0193, 0x000E, 0x01A1, 0x000E, 0x01AF,\n    0x0001, 0x018F, 0x0001, 0x0190, 0x0001, 0x0191,\n    0x000E, 0x003B, 0x000E, 0x0049, 0x000E, 0x0057,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x002D,\n    0x000E, 0x0003, 0x000E, 0x0011, 0x000E, 0x001F,\n    0x0001, 0x018B, 0x0001, 0x018C, 0x0001, 0x018D,\n    0x000E, 0x009D, 0x000E, 0x00AB, 0x000E, 0x00B9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x008F,\n    0x000E, 0x0065, 0x000E, 0x0073, 0x000E, 0x0081,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x018E,\n    0x000E, 0x0161, 0x000E, 0x016F, 0x000E, 0x017D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x0153,\n    0x000E, 0x0129, 0x000E, 0x0137, 0x000E, 0x0145,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0192,\n    0x000E, 0x00FF, 0x000E, 0x010D, 0x000E, 0x011B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x00F1,\n    0x000E, 0x00C7, 0x000E, 0x00D5, 0x000E, 0x00E3,\n};\n\nstatic const s16 anim_51_values[] = {\n    0x0000, 0x00AA, 0x3FFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0007, 0x001A, 0x0035, 0x0054, 0x0072, 0x008D, 0x00A0,\n    0x00A8, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C,\n    0xF97D, 0xF97E, 0xF980, 0xF981, 0xF983, 0xF984, 0xF984, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED5E, 0xECE6, 0xEC3D,\n    0xEB7B, 0xEAB9, 0xEA10, 0xE999, 0xE96B, 0xF385, 0xF22A, 0xEEEE,\n    0xEB12, 0xE7D7, 0xE67B, 0xE533, 0xE1D0, 0xDD06, 0xD78A, 0xD20D,\n    0xCD43, 0xC9E0, 0xC898, 0xD757, 0xD5F8, 0xD2B2, 0xCECA, 0xCB84,\n    0xCA25, 0xCD31, 0xD538, 0xE092, 0xED96, 0xFA99, 0x05F2, 0x0DFA,\n    0x1106, 0xEFC6, 0xED2E, 0xE700, 0xDFA0, 0xD972, 0xD6DA, 0xD787,\n    0xD94F, 0xDBD3, 0xDEB6, 0xE199, 0xE41D, 0xE5E5, 0xE692, 0xCF2C,\n    0xD401, 0xDF88, 0xED49, 0xF8D0, 0xFDA5, 0xFA7C, 0xF229, 0xE664,\n    0xD8E6, 0xCB68, 0xBFA2, 0xB74F, 0xB427, 0x020B, 0x020B, 0x020B,\n    0x020B, 0x020B, 0x020B, 0x01F5, 0x01B9, 0x0165, 0x0105, 0x00A5,\n    0x0051, 0x0016, 0x0000, 0x03A9, 0x03A9, 0x03A9, 0x03A9, 0x03A9,\n    0x03A9, 0x0381, 0x0317, 0x0280, 0x01D4, 0x0128, 0x0092, 0x0028,\n    0x0000, 0xF578, 0xF578, 0xF578, 0xF578, 0xF578, 0xF578, 0xF521,\n    0xF43B, 0xF2F6, 0xF182, 0xF00D, 0xEEC9, 0xEDE3, 0xED8C, 0xF3BE,\n    0xF128, 0xEAFE, 0xE3A3, 0xDD79, 0xDAE3, 0xDA04, 0xD7B6, 0xD474,\n    0xD0B9, 0xCCFD, 0xC9BB, 0xC76E, 0xC68E, 0x1AB9, 0x1E2D, 0x2669,\n    0x303D, 0x3879, 0x3BED, 0x38D6, 0x30B1, 0x252E, 0x17FB, 0x0AC8,\n    0xFF46, 0xF721, 0xF40A, 0x1465, 0x169A, 0x1BDF, 0x2228, 0x276D,\n    0x29A2, 0x2926, 0x27E1, 0x2614, 0x2404, 0x21F4, 0x2028, 0x1EE2,\n    0x1E67, 0xC825, 0xCCD7, 0xD80A, 0xE567, 0xF09A, 0xF54C, 0xF286,\n    0xEB36, 0xE0DF, 0xD505, 0xC92A, 0xBED3, 0xB783, 0xB4BD, 0xFFC5,\n    0xFFBF, 0xFFB0, 0xFFA0, 0xFF95, 0xFF94, 0xFF9F, 0xFFB1, 0xFFC7,\n    0xFFDF, 0xFFF6, 0x0009, 0x0016, 0x001B, 0xFF39, 0xFF31, 0xFF23,\n    0xFF1A, 0xFF25, 0xFF4F, 0xFF9F, 0x000D, 0x008D, 0x0112, 0x018F,\n    0x01F8, 0x0241, 0x025B, 0xD5A9, 0xD6E5, 0xD9C7, 0xDD1C, 0xDFAC,\n    0xE042, 0xDEBB, 0xDC0C, 0xD8A1, 0xD4E4, 0xD142, 0xCE24, 0xCBF7,\n    0xCB25, 0x41BC, 0x3B93, 0x2D02, 0x1BE7, 0x0E1D, 0x0982, 0x0E7F,\n    0x186D, 0x2591, 0x3432, 0x4294, 0x4EFD, 0x57B4, 0x5AFE, 0x0768,\n    0x0737, 0x06B9, 0x0610, 0x055D, 0x04C0, 0x042B, 0x0380, 0x02CE,\n    0x0220, 0x0183, 0x0103, 0x00AD, 0x008D, 0x0954, 0x087D, 0x0671,\n    0x03E1, 0x0181, 0x0005, 0xFF59, 0xFEEB, 0xFEAF, 0xFE99, 0xFE9D,\n    0xFEAE, 0xFEC2, 0xFECB, 0xA3E7, 0xA47F, 0xA5C2, 0xA6EA, 0xA72F,\n    0xA5CB, 0xA26E, 0x9DAC, 0x9817, 0x9241, 0x8CB9, 0x8812, 0x84DE,\n    0x83AC, 0x0000, 0xFFFF, 0xFFFB, 0xFFF8, 0xFFF9, 0x0000, 0x000F,\n    0x0024, 0x003C, 0x0056, 0x006E, 0x0082, 0x0090, 0x0095, 0x0000,\n    0x0003, 0x0009, 0x000D, 0x000C, 0x0000, 0xFFE7, 0xFFC4, 0xFF9C,\n    0xFF72, 0xFF4A, 0xFF28, 0xFF11, 0xFF09, 0xBA5D, 0xBDB3, 0xC5BF,\n    0xCF8C, 0xD825, 0xDC96, 0xDCF0, 0xDB95, 0xD908, 0xD5CD, 0xD265,\n    0xCF54, 0xCD1C, 0xCC42, 0x4CBC, 0x45FF, 0x35FA, 0x22F8, 0x1345,\n    0x0D2D, 0x10F9, 0x19A5, 0x2589, 0x32FC, 0x4056, 0x4BED, 0x5418,\n    0x5730, 0xF894, 0xF924, 0xFA84, 0xFC3C, 0xFDD5, 0xFED6, 0xFF4B,\n    0xFF98, 0xFFC3, 0xFFD4, 0xFFD4, 0xFFCB, 0xFFBF, 0xFFBA, 0xF606,\n    0xF706, 0xF976, 0xFC7C, 0xFF3D, 0x00DF, 0x0174, 0x01AD, 0x01A0,\n    0x0163, 0x010D, 0x00B3, 0x006E, 0x0051, 0x98E7, 0x9A74, 0x9E10,\n    0xA22A, 0xA52F, 0xA590, 0xA313, 0x9EF3, 0x99CC, 0x9439, 0x8ED4,\n    0x8A3A, 0x8705, 0x85D1, 0x7FFF, 0x7FFF, 0x4171, 0xBF5F, 0x7FFF,\n    0x7FFF, 0x4171, 0xBF5F, 0x0081, 0x0081, 0x0082, 0x0081, 0x007E,\n    0x0076, 0x0069, 0x0058, 0x0045, 0x0031, 0x001E, 0x000E, 0x0004,\n    0x0000, 0x0214, 0x021B, 0x0228, 0x0233, 0x0230, 0x0216, 0x01E0,\n    0x0195, 0x013D, 0x00E2, 0x008C, 0x0044, 0x0012, 0x0000, 0x035A,\n    0x02CA, 0x01A0, 0x00A9, 0x00B3, 0x028A, 0x068D, 0x0C26, 0x12AD,\n    0x197B, 0x1FE9, 0x2550, 0x2908, 0x2A6B, 0x0000, 0xFFFF, 0xFFFC,\n    0xFFF7, 0xFFF4, 0xFFF3, 0xFFF3, 0xFFF5, 0xFFF7, 0xFFFA, 0xFFFC,\n    0xFFFE, 0x0000, 0x0000, 0xFF53, 0xFF51, 0xFF4D, 0xFF4A, 0xFF4B,\n    0xFF54, 0xFF65, 0xFF7E, 0xFF9A, 0xFFB7, 0xFFD3, 0xFFEB, 0xFFFB,\n    0x0000, 0x0D24, 0x0D73, 0x0E34, 0x0F20, 0x0FF2, 0x1066, 0x107E,\n    0x1073, 0x104D, 0x1019, 0x0FDE, 0x0FA8, 0x0F80, 0x0F71, 0x40A1,\n    0x4036, 0x4048, 0x42D9, 0x49E7, 0x5772, 0x70F5, 0x8A78, 0xA3FB,\n    0xBD7F, 0xD702, 0xF085, 0x0A08, 0x238B,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_52.inc.c",
    "content": "static const struct Animation anim_52[] = {\n    1,\n    189,\n    0,\n    0,\n    0x0B,\n    ANIMINDEX_NUMPARTS(anim_52_indices),\n    anim_52_values,\n    anim_52_indices,\n    0,\n};\n\n\nstatic const u16 anim_52_indices[] = {\n    0x0001, 0x0000, 0x000B, 0x0001, 0x000B, 0x000C, 0x0001, 0x0000, 0x0001, 0x0017, 0x0001, 0x0000,\n    0x000B, 0x0196, 0x000B, 0x01A1, 0x000B, 0x01AC,\n    0x000B, 0x0175, 0x000B, 0x0180, 0x000B, 0x018B,\n    0x000B, 0x0154, 0x000B, 0x015F, 0x000B, 0x016A,\n    0x0001, 0x0150, 0x0001, 0x0151, 0x0001, 0x0152,\n    0x000B, 0x0044, 0x000B, 0x004F, 0x000B, 0x005A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000B, 0x0039,\n    0x000B, 0x0018, 0x000B, 0x0023, 0x000B, 0x002E,\n    0x0001, 0x014C, 0x0001, 0x014D, 0x0001, 0x014E,\n    0x000B, 0x0091, 0x000B, 0x009C, 0x000B, 0x00A7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000B, 0x0086,\n    0x000B, 0x0065, 0x000B, 0x0070, 0x000B, 0x007B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x014F,\n    0x000B, 0x012B, 0x000B, 0x0136, 0x000B, 0x0141,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000B, 0x0120,\n    0x000B, 0x00FF, 0x000B, 0x010A, 0x000B, 0x0115,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0153,\n    0x000B, 0x00DE, 0x000B, 0x00E9, 0x000B, 0x00F4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000B, 0x00D3,\n    0x000B, 0x00B2, 0x000B, 0x00BD, 0x000B, 0x00C8,\n};\n\nstatic const s16 anim_52_values[] = {\n    0x0000, 0x00AA, 0x00AD, 0x00B0, 0x00B3, 0x00B6, 0x00B8, 0x00B9,\n    0x00BA, 0x00B9, 0x00B6, 0x00B1, 0x0000, 0x0000, 0x0000, 0x0001,\n    0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0xFFFF, 0x3FFF,\n    0xEC33, 0xEC3A, 0xEC08, 0xEBB6, 0xEB5C, 0xEB01, 0xEAA0, 0xEA3A,\n    0xE9D0, 0xE965, 0xE8FA, 0xF02D, 0xF01E, 0xF087, 0xF135, 0xF1F5,\n    0xF2B6, 0xF385, 0xF45F, 0xF540, 0xF624, 0xF707, 0xD979, 0xD960,\n    0xDA13, 0xDB3D, 0xDC85, 0xDDCD, 0xDF2F, 0xE0A3, 0xE223, 0xE3A8,\n    0xE52C, 0xD4E7, 0xD79D, 0xDE69, 0xE5EC, 0xEAC8, 0xECEB, 0xEE92,\n    0xEFD4, 0xF0C8, 0xF187, 0xF228, 0x147B, 0x094A, 0xF428, 0xDF5F,\n    0xD539, 0xD6E1, 0xDD7A, 0xE748, 0xF28D, 0xFD8D, 0x0689, 0xC54E,\n    0xC9FC, 0xD537, 0xE0BD, 0xE649, 0xE479, 0xDF38, 0xD83D, 0xD13F,\n    0xCBF4, 0xCA13, 0xCBB7, 0xD4C3, 0xE2A2, 0xEEF5, 0xF35D, 0xF004,\n    0xE9A4, 0xE0B1, 0xD59E, 0xC8DD, 0xBAE1, 0x0ACF, 0x1543, 0x1E26,\n    0x1516, 0x0ACF, 0x0922, 0x08A9, 0x08FF, 0x09BC, 0x0A79, 0x0ACF,\n    0x020D, 0x0D14, 0x1675, 0x0CE5, 0x020D, 0x0048, 0xFFCA, 0x0023,\n    0x00EB, 0x01B2, 0x020D, 0xEDD2, 0xF5D9, 0xFCAE, 0xF5B7, 0xEDD2,\n    0xEC88, 0xEC2B, 0xEC6D, 0xECFE, 0xED90, 0xEDD2, 0xE463, 0xF2AC,\n    0xFD3D, 0xF3B9, 0xE463, 0xD69F, 0xCEAE, 0xD17D, 0xD7FB, 0xDF40,\n    0xE463, 0xC8A0, 0xD54C, 0xEA30, 0x05C1, 0x1558, 0x0C89, 0xFDBA,\n    0xEBFD, 0xDA65, 0xCC06, 0xC3F3, 0x354C, 0x3976, 0x4101, 0x4E3B,\n    0x565B, 0x5330, 0x4DFC, 0x4761, 0x4001, 0x3881, 0x3181, 0x5096,\n    0x659A, 0x885B, 0xAB1F, 0xBF0E, 0xB96D, 0xAE2F, 0x9FAD, 0x903E,\n    0x823B, 0x77FB, 0x0185, 0x0159, 0x0100, 0x0099, 0x0043, 0x0006,\n    0xFFD3, 0xFFA2, 0xFF6F, 0xFF34, 0xFEEC, 0xFFD7, 0xFFA7, 0xFF74,\n    0xFF3F, 0xFF0D, 0xFEDC, 0xFEA8, 0xFE75, 0xFE46, 0xFE1C, 0xFDFC,\n    0xF0F0, 0xF1F9, 0xF014, 0xEC99, 0xE8DE, 0xE521, 0xE0DC, 0xDC48,\n    0xD79E, 0xD316, 0xCEEA, 0x0C39, 0x0C89, 0x0FD6, 0x141A, 0x1751,\n    0x18D2, 0x19A6, 0x1A4F, 0x1B4E, 0x1D26, 0x2057, 0x1F59, 0x2093,\n    0x2077, 0x1F67, 0x1DC4, 0x1B85, 0x189C, 0x1564, 0x1235, 0x0F69,\n    0x0D5A, 0x00E9, 0x0111, 0x0134, 0x0153, 0x016C, 0x0121, 0x0061,\n    0xFFA0, 0xFF4E, 0xFFE0, 0x01C7, 0xC86C, 0xCAE9, 0xCACA, 0xC90C,\n    0xC6AB, 0xC418, 0xC11A, 0xBDAF, 0xB9D3, 0xB584, 0xB0BE, 0xFF24,\n    0xFF55, 0xFFA2, 0xFFF5, 0x0036, 0x0067, 0x0092, 0x00B9, 0x00DD,\n    0x0101, 0x0124, 0x00E1, 0x00E0, 0x00D5, 0x00C6, 0x00B8, 0x00AF,\n    0x00A7, 0x009E, 0x0095, 0x008A, 0x007C, 0xDFD8, 0xE21C, 0xE45A,\n    0xE5C2, 0xE582, 0xE3C9, 0xE161, 0xDE5B, 0xDACA, 0xD6C2, 0xD255,\n    0x5754, 0x4F0D, 0x40EB, 0x3365, 0x2CEE, 0x2E9A, 0x3415, 0x3BBF,\n    0x43F6, 0x4B19, 0x4F87, 0xF99C, 0xF933, 0xF816, 0xF684, 0xF4C1,\n    0xF2CB, 0xF08F, 0xEE32, 0xEBDC, 0xE9B3, 0xE7DC, 0xEC4D, 0xEE7D,\n    0xF28F, 0xF669, 0xF7ED, 0xF6F9, 0xF505, 0xF257, 0xEF37, 0xEBED,\n    0xE8C1, 0x87A5, 0x86AE, 0x872B, 0x88BA, 0x8AFB, 0x8DFC, 0x91C4,\n    0x95E9, 0x9A01, 0x9DA3, 0xA063, 0x7FFF, 0x7FFF, 0x4171, 0xBF5F,\n    0x7FFF, 0x7FFF, 0x4171, 0xBF5F, 0x2550, 0x20C5, 0x1650, 0x098F,\n    0xFE1E, 0xF370, 0xE8F2, 0xE234, 0xE125, 0xE3D6, 0xE810, 0xF6F3,\n    0xF720, 0xF81F, 0xF952, 0xFA1A, 0xFA58, 0xFA36, 0xF982, 0xF75B,\n    0xF4A3, 0xF3CD, 0x1F15, 0x17FD, 0x0A4D, 0xFB4B, 0xF03C, 0xEC1D,\n    0xEBE5, 0xEBD4, 0xEA33, 0xE8BA, 0xE8CE, 0xEDAB, 0xF4F1, 0x02C1,\n    0x10F0, 0x1955, 0x1B63, 0x1B1E, 0x192F, 0x1641, 0x12FF, 0x1013,\n    0x0000, 0xFC0D, 0xF555, 0xEED2, 0xEB7D, 0xEBA5, 0xED47, 0xEFE2,\n    0xF2F5, 0xF5FE, 0xF87C, 0xE40A, 0xEA96, 0xF83C, 0x06E3, 0x1076,\n    0x1435, 0x15E6, 0x163C, 0x15EA, 0x15A4, 0x161D, 0xC009, 0xC2C4,\n    0xCA02, 0xD455, 0xE051, 0xEC8B, 0xF794, 0x0000, 0x0397, 0x034E,\n    0x0278, 0xF755, 0xF7B5, 0xF8B3, 0xFA1B, 0xFBBD, 0xFD66, 0xFEE2,\n    0x0000, 0x0064, 0x0035, 0x0005, 0x3FFD, 0x4038, 0x410E, 0x425B,\n    0x43FA, 0x45C8, 0x47A0, 0x495D, 0x4C30, 0x4F7A, 0x5068,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_53.inc.c",
    "content": "static const struct Animation anim_53[] = {\n    1,\n    189,\n    0,\n    0,\n    0x19,\n    ANIMINDEX_NUMPARTS(anim_53_indices),\n    anim_53_values,\n    anim_53_indices,\n    0,\n};\n\n\nstatic const u16 anim_53_indices[] = {\n    0x0001, 0x0000, 0x0019, 0x0001, 0x0019, 0x001A, 0x0001, 0x0000, 0x0001, 0x0033, 0x0001, 0x0000,\n    0x0019, 0x038E, 0x0019, 0x03A7, 0x0019, 0x03C0,\n    0x0019, 0x0343, 0x0019, 0x035C, 0x0019, 0x0375,\n    0x0019, 0x02F8, 0x0019, 0x0311, 0x0019, 0x032A,\n    0x0001, 0x02F4, 0x0001, 0x02F5, 0x0001, 0x02F6,\n    0x0019, 0x0098, 0x0019, 0x00B1, 0x0019, 0x00CA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0019, 0x007F,\n    0x0019, 0x0034, 0x0019, 0x004D, 0x0019, 0x0066,\n    0x0001, 0x02F0, 0x0001, 0x02F1, 0x0001, 0x02F2,\n    0x0019, 0x0147, 0x0019, 0x0160, 0x0019, 0x0179,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0019, 0x012E,\n    0x0019, 0x00E3, 0x0019, 0x00FC, 0x0019, 0x0115,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02F3,\n    0x0019, 0x02A5, 0x0019, 0x02BE, 0x0019, 0x02D7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0019, 0x028C,\n    0x0019, 0x0241, 0x0019, 0x025A, 0x0019, 0x0273,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02F7,\n    0x0019, 0x01F6, 0x0019, 0x020F, 0x0019, 0x0228,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0019, 0x01DD,\n    0x0019, 0x0192, 0x0019, 0x01AB, 0x0019, 0x01C4,\n};\n\nstatic const s16 anim_53_values[] = {\n    0x0000, 0x004A, 0x004B, 0x004C, 0x004E, 0x0051, 0x0055, 0x0059,\n    0x005E, 0x0063, 0x0069, 0x006E, 0x0074, 0x007A, 0x0080, 0x0086,\n    0x008C, 0x0091, 0x0096, 0x009B, 0x009F, 0x00A3, 0x00A6, 0x00A8,\n    0x00A9, 0x00AA, 0xFFDD, 0xFFDD, 0xFFDE, 0xFFDF, 0xFFE0, 0xFFE1,\n    0xFFE3, 0xFFE4, 0xFFE6, 0xFFE8, 0xFFEA, 0xFFED, 0xFFEF, 0xFFF1,\n    0xFFF3, 0xFFF5, 0xFFF7, 0xFFF9, 0xFFFB, 0xFFFD, 0xFFFE, 0xFFFF,\n    0x0000, 0x0000, 0x0000, 0x3FFF, 0xD3BC, 0xD3F5, 0xD49B, 0xD5A3,\n    0xD703, 0xD8B2, 0xDAA6, 0xDCD6, 0xDF36, 0xE1BD, 0xE463, 0xE71B,\n    0xE9DE, 0xECA1, 0xEF5A, 0xF1FF, 0xF486, 0xF6E7, 0xF916, 0xFB0A,\n    0xFCB9, 0xFE1A, 0xFF22, 0xFFC7, 0x0000, 0xF442, 0xF449, 0xF45C,\n    0xF47C, 0xF4A5, 0xF4D8, 0xF513, 0xF555, 0xF59D, 0xF5E9, 0xF639,\n    0xF68B, 0xF6DF, 0xF732, 0xF785, 0xF7D4, 0xF821, 0xF869, 0xF8AB,\n    0xF8E6, 0xF919, 0xF942, 0xF961, 0xF975, 0xF97C, 0xF0C3, 0xF0BF,\n    0xF0B3, 0xF0A0, 0xF086, 0xF067, 0xF043, 0xF01A, 0xEFEE, 0xEFBF,\n    0xEF8E, 0xEF5B, 0xEF27, 0xEEF4, 0xEEC1, 0xEE90, 0xEE61, 0xEE35,\n    0xEE0C, 0xEDE8, 0xEDC9, 0xEDAF, 0xED9C, 0xED90, 0xED8C, 0xD5BB,\n    0xD5C2, 0xD5D7, 0xD5F9, 0xD627, 0xD65E, 0xD69E, 0xD6E6, 0xD734,\n    0xD788, 0xD7DF, 0xD838, 0xD893, 0xD8EE, 0xD948, 0xD99F, 0xD9F2,\n    0xDA40, 0xDA88, 0xDAC9, 0xDB00, 0xDB2D, 0xDB4F, 0xDB65, 0xDB6C,\n    0xE897, 0xE865, 0xE7DC, 0xE715, 0xE624, 0xE521, 0xE422, 0xE33E,\n    0xE28C, 0xE221, 0xE214, 0xE27C, 0xE370, 0xE505, 0xE753, 0xEA70,\n    0xEE72, 0xF371, 0xF981, 0x00BA, 0x0934, 0x1303, 0x1E3F, 0x2AFE,\n    0x2D60, 0xE6FA, 0xE6B3, 0xE5E8, 0xE4AD, 0xE313, 0xE12C, 0xDF0B,\n    0xDCC1, 0xDA62, 0xD7FF, 0xD5AA, 0xD376, 0xD174, 0xCFB8, 0xCE52,\n    0xCD4D, 0xCC9A, 0xCC29, 0xCBE9, 0xCBCB, 0xCBBC, 0xCBAE, 0xCB8F,\n    0xCB4E, 0xCAF3, 0x1770, 0x172A, 0x165B, 0x1506, 0x1330, 0x10DB,\n    0x0E0C, 0x0AC6, 0x070E, 0x02E7, 0xFE56, 0xF95C, 0xF3FF, 0xEE42,\n    0xE829, 0xE0DA, 0xD7BF, 0xCD3D, 0xC1BB, 0xB59F, 0xA94F, 0x9D32,\n    0x91AE, 0x872A, 0x854D, 0xE0EB, 0xE243, 0xE5D4, 0xEAF0, 0xF0E5,\n    0xF703, 0xFC9B, 0x00FB, 0x0375, 0x048E, 0x054A, 0x05B4, 0x05D4,\n    0x05B7, 0x0566, 0x04EB, 0x0451, 0x03A3, 0x02EA, 0x0231, 0x0182,\n    0x00E9, 0x006E, 0x001D, 0x0000, 0x03F5, 0x03EE, 0x03DC, 0x03BF,\n    0x039C, 0x0373, 0x0347, 0x031A, 0x02EE, 0x02C1, 0x028D, 0x0255,\n    0x021A, 0x01DC, 0x019E, 0x015F, 0x0122, 0x00E8, 0x00B2, 0x0080,\n    0x0055, 0x0031, 0x0017, 0x0005, 0x0000, 0xE246, 0xE266, 0xE2BF,\n    0xE347, 0xE3F2, 0xE4B7, 0xE58B, 0xE663, 0xE734, 0xE80F, 0xE906,\n    0xEA12, 0xEB30, 0xEC58, 0xED84, 0xEEB0, 0xEFD4, 0xF0EC, 0xF1F2,\n    0xF2DF, 0xF3AE, 0xF459, 0xF4DB, 0xF52D, 0xF549, 0xCEA6, 0xCED3,\n    0xCF55, 0xD025, 0xD13A, 0xD28C, 0xD415, 0xD5CC, 0xD7AA, 0xD9A7,\n    0xDBBB, 0xDDDE, 0xE009, 0xE234, 0xE458, 0xE66C, 0xE868, 0xEA46,\n    0xEBFD, 0xED86, 0xEED9, 0xEFEE, 0xF0BD, 0xF13F, 0xF16C, 0x49A0,\n    0x4B85, 0x50DC, 0x591F, 0x63CC, 0x705C, 0x7E4C, 0x8D1A, 0x9C3B,\n    0xAB2F, 0xB971, 0xC67B, 0xD1CB, 0xDADA, 0xE126, 0xE3ED, 0xE348,\n    0xDFF4, 0xDAAC, 0xD42E, 0xCD37, 0xC683, 0xC0D0, 0xBCD9, 0xBB5D,\n    0x167A, 0x16CF, 0x17C0, 0x1937, 0x1B1C, 0x1D59, 0x1FD9, 0x2284,\n    0x2544, 0x2803, 0x2AA9, 0x2D22, 0x2F56, 0x312F, 0x3296, 0x3382,\n    0x3403, 0x342F, 0x3416, 0x33CD, 0x3366, 0x32F5, 0x328C, 0x3240,\n    0x3222, 0x2327, 0x24A3, 0x28CB, 0x2F35, 0x3771, 0x4113, 0x4BAF,\n    0x56D5, 0x621A, 0x6D11, 0x774B, 0x805F, 0x87D9, 0x8D50, 0x9056,\n    0x8FBE, 0x8B42, 0x83CF, 0x7A53, 0x6FC0, 0x6503, 0x5B0A, 0x52C3,\n    0x4D1D, 0x4B06, 0xFFF8, 0xFFF7, 0xFFF5, 0xFFF3, 0xFFEF, 0xFFEA,\n    0xFFE5, 0xFFDF, 0xFFD9, 0xFFD2, 0xFFCB, 0xFFC4, 0xFFBC, 0xFFB5,\n    0xFFAE, 0xFFA7, 0xFFA0, 0xFF99, 0xFF94, 0xFF8E, 0xFF8A, 0xFF86,\n    0xFF83, 0xFF82, 0xFF81, 0xFF30, 0xFF31, 0xFF31, 0xFF32, 0xFF33,\n    0xFF35, 0xFF37, 0xFF39, 0xFF3B, 0xFF3E, 0xFF41, 0xFF43, 0xFF46,\n    0xFF49, 0xFF4B, 0xFF4E, 0xFF50, 0xFF53, 0xFF55, 0xFF57, 0xFF58,\n    0xFF5A, 0xFF5B, 0xFF5B, 0xFF5B, 0xCBFA, 0xCC1A, 0xCC76, 0xCD0A,\n    0xCDCF, 0xCEC0, 0xCFD8, 0xD111, 0xD265, 0xD3CF, 0xD54A, 0xD6D0,\n    0xD85B, 0xD9E7, 0xDB6C, 0xDCE7, 0xDE51, 0xDFA6, 0xE0DE, 0xE1F6,\n    0xE2E7, 0xE3AD, 0xE440, 0xE49D, 0xE4BD, 0x1605, 0x1606, 0x1606,\n    0x1607, 0x1608, 0x1609, 0x160A, 0x160C, 0x160D, 0x160F, 0x1611,\n    0x1613, 0x1615, 0x1616, 0x1618, 0x161A, 0x161C, 0x161D, 0x161F,\n    0x1620, 0x1621, 0x1622, 0x1623, 0x1623, 0x1624, 0x0675, 0x067E,\n    0x0697, 0x06BF, 0x06F5, 0x0737, 0x0783, 0x07D9, 0x0835, 0x0898,\n    0x0900, 0x096A, 0x09D6, 0x0A42, 0x0AAC, 0x0B13, 0x0B76, 0x0BD3,\n    0x0C28, 0x0C75, 0x0CB7, 0x0CEC, 0x0D15, 0x0D2E, 0x0D37, 0xFCFD,\n    0xFD0A, 0xFD2E, 0xFD67, 0xFDB3, 0xFE11, 0xFE7D, 0xFEF6, 0xFF7A,\n    0x0005, 0x0098, 0x012F, 0x01C8, 0x0261, 0x02F8, 0x038A, 0x0416,\n    0x049A, 0x0513, 0x0580, 0x05DD, 0x0629, 0x0662, 0x0686, 0x0693,\n    0xA81E, 0xA82E, 0xA85C, 0xA8A7, 0xA90A, 0xA983, 0xAA0F, 0xAAAD,\n    0xAB58, 0xAC0E, 0xACCC, 0xAD90, 0xAE57, 0xAF1D, 0xAFE1, 0xB09F,\n    0xB155, 0xB200, 0xB29E, 0xB32A, 0xB3A3, 0xB407, 0xB451, 0xB47F,\n    0xB48F, 0xFB0A, 0xFB10, 0xFB23, 0xFB40, 0xFB68, 0xFB98, 0xFBD0,\n    0xFC0F, 0xFC53, 0xFC9C, 0xFCE8, 0xFD36, 0xFD85, 0xFDD4, 0xFE23,\n    0xFE6E, 0xFEB7, 0xFEFB, 0xFF3A, 0xFF72, 0xFFA2, 0xFFCA, 0xFFE8,\n    0xFFFA, 0x0000, 0xFD4D, 0xFD50, 0xFD5A, 0xFD6A, 0xFD80, 0xFD9A,\n    0xFDB9, 0xFDDB, 0xFE00, 0xFE28, 0xFE51, 0xFE7C, 0xFEA7, 0xFED2,\n    0xFEFC, 0xFF26, 0xFF4D, 0xFF72, 0xFF94, 0xFFB3, 0xFFCD, 0xFFE3,\n    0xFFF3, 0xFFFD, 0x0000, 0xA73E, 0xA788, 0xA85D, 0xA9B1, 0xAB77,\n    0xADA3, 0xB027, 0xB2F7, 0xB606, 0xB948, 0xBCB0, 0xC031, 0xC3BF,\n    0xC74D, 0xCACF, 0xCE37, 0xD179, 0xD488, 0xD758, 0xD9DC, 0xDC08,\n    0xDDCE, 0xDF21, 0xDFF7, 0xE041, 0x61F7, 0x61DB, 0x618A, 0x6109,\n    0x605D, 0x5F8A, 0x5E95, 0x5D84, 0x5C5B, 0x5B1E, 0x59D3, 0x587F,\n    0x5725, 0x55CC, 0x5477, 0x532C, 0x51F0, 0x50C6, 0x4FB5, 0x4EC1,\n    0x4DEE, 0x4D42, 0x4CC1, 0x4C70, 0x4C54, 0xFC1D, 0xFC22, 0xFC31,\n    0xFC49, 0xFC68, 0xFC8E, 0xFCBB, 0xFCED, 0xFD23, 0xFD5D, 0xFD99,\n    0xFDD7, 0xFE16, 0xFE55, 0xFE94, 0xFED0, 0xFF0A, 0xFF40, 0xFF72,\n    0xFF9E, 0xFFC5, 0xFFE4, 0xFFFC, 0x000A, 0x000F, 0xEB36, 0xEB36,\n    0xEB37, 0xEB37, 0xEB38, 0xEB39, 0xEB3A, 0xEB3B, 0xEB3D, 0xEB3E,\n    0xEB40, 0xEB41, 0xEB43, 0xEB45, 0xEB46, 0xEB48, 0xEB49, 0xEB4A,\n    0xEB4C, 0xEB4D, 0xEB4E, 0xEB4F, 0xEB4F, 0xEB50, 0xEB50, 0x8D13,\n    0x8CF1, 0x8C8F, 0x8BF3, 0x8B23, 0x8A24, 0x88FC, 0x87B1, 0x8649,\n    0x84CA, 0x8339, 0x819D, 0x7FF8, 0x7E56, 0x7CB9, 0x7B29, 0x79AA,\n    0x7842, 0x76F7, 0x75CF, 0x74D0, 0x73FF, 0x7363, 0x7301, 0x72DF,\n    0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F,\n    0x11CF, 0x11AD, 0x114B, 0x10AE, 0x0FDD, 0x0EDD, 0x0DB5, 0x0C69,\n    0x0B00, 0x097F, 0x07EE, 0x0650, 0x04AD, 0x0309, 0x016C, 0xFFDB,\n    0xFE5B, 0xFCF2, 0xFBA6, 0xFA7D, 0xF97D, 0xF8AC, 0xF80F, 0xF7AD,\n    0xF78B, 0xF4A2, 0xF4B6, 0xF4F1, 0xF54D, 0xF5C9, 0xF661, 0xF710,\n    0xF7D5, 0xF8AA, 0xF98E, 0xFA7C, 0xFB71, 0xFC69, 0xFD61, 0xFE56,\n    0xFF44, 0x0026, 0x00FC, 0x01C1, 0x0270, 0x0308, 0x0384, 0x03E0,\n    0x041B, 0x042F, 0x1A18, 0x1A19, 0x1A1C, 0x1A21, 0x1A27, 0x1A2F,\n    0x1A38, 0x1A43, 0x1A4E, 0x1A59, 0x1A66, 0x1A73, 0x1A80, 0x1A8C,\n    0x1A99, 0x1AA6, 0x1AB1, 0x1ABD, 0x1AC7, 0x1AD0, 0x1AD8, 0x1ADE,\n    0x1AE3, 0x1AE6, 0x1AE7, 0xF33B, 0xF358, 0xF3AC, 0xF433, 0xF4E6,\n    0xF5C1, 0xF6BF, 0xF7DB, 0xF911, 0xFA5A, 0xFBB2, 0xFD14, 0xFE7C,\n    0xFFE3, 0x0144, 0x029C, 0x03E5, 0x051B, 0x0637, 0x0735, 0x0810,\n    0x08C3, 0x094A, 0x099E, 0x09BB, 0xFCB4, 0xFCB9, 0xFCC8, 0xFCE0,\n    0xFD00, 0xFD28, 0xFD55, 0xFD88, 0xFDC0, 0xFDFB, 0xFE39, 0xFE79,\n    0xFEB9, 0xFEFA, 0xFF39, 0xFF77, 0xFFB2, 0xFFEA, 0x001C, 0x004A,\n    0x0071, 0x0091, 0x00AA, 0x00B9, 0x00BE, 0x1203, 0x11EB, 0x11A7,\n    0x113A, 0x10A8, 0x0FF6, 0x0F28, 0x0E41, 0x0D46, 0x0C3B, 0x0B23,\n    0x0A03, 0x08E0, 0x07BC, 0x069C, 0x0585, 0x047A, 0x037F, 0x0298,\n    0x01C9, 0x0117, 0x0086, 0x0019, 0xFFD6, 0xFFBE, 0xF1AC, 0xF1BF,\n    0xF1F5, 0xF24A, 0xF2BC, 0xF348, 0xF3EA, 0xF49E, 0xF563, 0xF635,\n    0xF710, 0xF7F2, 0xF8D6, 0xF9BB, 0xFA9D, 0xFB78, 0xFC4A, 0xFD0E,\n    0xFDC3, 0xFE65, 0xFEF1, 0xFF63, 0xFFB8, 0xFFEE, 0x0000, 0xFF34,\n    0xFF35, 0xFF38, 0xFF3C, 0xFF43, 0xFF4B, 0xFF54, 0xFF5E, 0xFF69,\n    0xFF74, 0xFF81, 0xFF8D, 0xFF9A, 0xFFA7, 0xFFB3, 0xFFC0, 0xFFCB,\n    0xFFD6, 0xFFE0, 0xFFEA, 0xFFF1, 0xFFF8, 0xFFFC, 0xFFFF, 0x0000,\n    0x0D43, 0x0D86, 0x0E46, 0x0F78, 0x1111, 0x1306, 0x154A, 0x17D3,\n    0x1A94, 0x1D84, 0x2096, 0x23BE, 0x26F2, 0x2A26, 0x2D4F, 0x3060,\n    0x3350, 0x3612, 0x389A, 0x3ADF, 0x3CD3, 0x3E6C, 0x3F9E, 0x405E,\n    0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_54.inc.c",
    "content": "static const struct Animation anim_54[] = {\n    1,\n    189,\n    0,\n    0,\n    0x1E,\n    ANIMINDEX_NUMPARTS(anim_54_indices),\n    anim_54_values,\n    anim_54_indices,\n    0,\n};\n\n\nstatic const u16 anim_54_indices[] = {\n    0x0001, 0x0000, 0x001E, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x001F, 0x0001, 0x0000,\n    0x0001, 0x028E, 0x0001, 0x028F, 0x0001, 0x0290,\n    0x001E, 0x0234, 0x001E, 0x0252, 0x001E, 0x0270,\n    0x001E, 0x01DA, 0x001E, 0x01F8, 0x001E, 0x0216,\n    0x0001, 0x01D6, 0x0001, 0x01D7, 0x0001, 0x01D8,\n    0x0001, 0x0024, 0x0001, 0x0025, 0x0001, 0x0026,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0023,\n    0x0001, 0x0020, 0x0001, 0x0021, 0x0001, 0x0022,\n    0x0001, 0x01D2, 0x0001, 0x01D3, 0x0001, 0x01D4,\n    0x0001, 0x002B, 0x0001, 0x002C, 0x0001, 0x002D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x002A,\n    0x0001, 0x0027, 0x0001, 0x0028, 0x0001, 0x0029,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01D5,\n    0x001E, 0x0178, 0x001E, 0x0196, 0x001E, 0x01B4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x015A,\n    0x001E, 0x0100, 0x001E, 0x011E, 0x001E, 0x013C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01D9,\n    0x001E, 0x00A6, 0x001E, 0x00C4, 0x001E, 0x00E2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0088,\n    0x001E, 0x002E, 0x001E, 0x004C, 0x001E, 0x006A,\n};\n\nstatic const s16 anim_54_values[] = {\n    0x0000, 0x00AC, 0x00AC, 0x00AB, 0x00A9, 0x00A7, 0x00A4, 0x00A2,\n    0x009F, 0x009C, 0x0099, 0x0097, 0x0095, 0x0093, 0x0092, 0x0092,\n    0x0092, 0x0093, 0x0094, 0x0096, 0x0099, 0x009B, 0x009E, 0x00A0,\n    0x00A3, 0x00A5, 0x00A7, 0x00A9, 0x00AB, 0x00AC, 0x00AC, 0x3FFF,\n    0xE441, 0xF273, 0xFBD8, 0xE392, 0xD5A2, 0xEA6D, 0xE897, 0x13E1,\n    0x08D0, 0xF6A5, 0xE501, 0x87F6, 0x5359, 0x4901, 0x26DE, 0x26DA,\n    0x26D0, 0x26C0, 0x26AB, 0x2693, 0x2679, 0x265E, 0x2643, 0x2629,\n    0x2611, 0x25FC, 0x25EC, 0x25E2, 0x25DE, 0x25E1, 0x25EA, 0x25F8,\n    0x260B, 0x2620, 0x2638, 0x2651, 0x266B, 0x2684, 0x269C, 0x26B1,\n    0x26C4, 0x26D2, 0x26DB, 0x26DE, 0x0E76, 0x0E82, 0x0EA5, 0x0EDA,\n    0x0F1D, 0x0F6C, 0x0FC2, 0x101C, 0x1076, 0x10CC, 0x111A, 0x115E,\n    0x1193, 0x11B5, 0x11C2, 0x11B7, 0x1199, 0x116A, 0x112E, 0x10E7,\n    0x1099, 0x1046, 0x0FF2, 0x0F9F, 0x0F51, 0x0F0A, 0x0ECE, 0x0E9F,\n    0x0E81, 0x0E76, 0xC8E8, 0xC8DE, 0xC8C3, 0xC899, 0xC864, 0xC826,\n    0xC7E2, 0xC79B, 0xC754, 0xC711, 0xC6D3, 0xC69D, 0xC674, 0xC658,\n    0xC64F, 0xC657, 0xC66F, 0xC694, 0xC6C3, 0xC6FB, 0xC739, 0xC77A,\n    0xC7BC, 0xC7FE, 0xC83B, 0xC873, 0xC8A2, 0xC8C7, 0xC8DF, 0xC8E8,\n    0x28E1, 0x2947, 0x2A64, 0x2C1A, 0x2E4B, 0x30D7, 0x33A0, 0x3687,\n    0x396F, 0x3C38, 0x3EC4, 0x40F4, 0x42AA, 0x43C8, 0x442E, 0x43D4,\n    0x42DA, 0x4157, 0x3F64, 0x3D1A, 0x3A92, 0x37E4, 0x352B, 0x327D,\n    0x2FF5, 0x2DAB, 0x2BB8, 0x2A35, 0x293A, 0x28E1, 0x160C, 0x15F9,\n    0x15C5, 0x1574, 0x150D, 0x1494, 0x1411, 0x1387, 0x12FE, 0x127B,\n    0x1202, 0x119B, 0x114A, 0x1115, 0x1103, 0x1113, 0x1141, 0x1189,\n    0x11E5, 0x1251, 0x12C9, 0x1347, 0x13C8, 0x1446, 0x14BE, 0x152A,\n    0x1586, 0x15CE, 0x15FC, 0x160C, 0x0C9B, 0x0CBA, 0x0D14, 0x0D9D,\n    0x0E4C, 0x0F18, 0x0FF8, 0x10E0, 0x11C9, 0x12A8, 0x1375, 0x1424,\n    0x14AD, 0x1506, 0x1526, 0x150A, 0x14BC, 0x1443, 0x13A7, 0x12EF,\n    0x1224, 0x114E, 0x1073, 0x0F9D, 0x0ED2, 0x0E1A, 0x0D7E, 0x0D05,\n    0x0CB6, 0x0C9B, 0xAE77, 0xAE3E, 0xAD9D, 0xACA7, 0xAB6C, 0xA9FE,\n    0xA86D, 0xA6CC, 0xA52A, 0xA399, 0xA22B, 0xA0F0, 0x9FFA, 0x9F59,\n    0x9F20, 0x9F52, 0x9FDF, 0xA0B9, 0xA1D1, 0xA31A, 0xA486, 0xA607,\n    0xA790, 0xA911, 0xAA7D, 0xABC6, 0xACDE, 0xADB8, 0xAE45, 0xAE77,\n    0xDECF, 0xDED1, 0xDED6, 0xDEDD, 0xDEE7, 0xDEF3, 0xDEFF, 0xDF0C,\n    0xDF1A, 0xDF26, 0xDF32, 0xDF3C, 0xDF43, 0xDF48, 0xDF4A, 0xDF49,\n    0xDF44, 0xDF3D, 0xDF35, 0xDF2A, 0xDF1F, 0xDF13, 0xDF06, 0xDEFA,\n    0xDEEF, 0xDEE4, 0xDEDC, 0xDED5, 0xDED0, 0xDECF, 0xF348, 0xF343,\n    0xF334, 0xF31C, 0xF2FE, 0xF2DA, 0xF2B4, 0xF28C, 0xF264, 0xF23D,\n    0xF21A, 0xF1FC, 0xF1E4, 0xF1D5, 0xF1CF, 0xF1D4, 0xF1E1, 0xF1F6,\n    0xF211, 0xF231, 0xF254, 0xF279, 0xF29F, 0xF2C4, 0xF2E7, 0xF306,\n    0xF321, 0xF336, 0xF344, 0xF348, 0xC276, 0xC271, 0xC261, 0xC249,\n    0xC22B, 0xC207, 0xC1E0, 0xC1B8, 0xC190, 0xC169, 0xC145, 0xC127,\n    0xC10F, 0xC0FF, 0xC0FA, 0xC0FF, 0xC10C, 0xC121, 0xC13C, 0xC15C,\n    0xC180, 0xC1A5, 0xC1CB, 0xC1F0, 0xC214, 0xC234, 0xC24F, 0xC264,\n    0xC271, 0xC276, 0x3B81, 0x3BC7, 0x3C8A, 0x3DB7, 0x3F38, 0x40F7,\n    0x42E1, 0x44E0, 0x46DE, 0x48C8, 0x4A87, 0x4C08, 0x4D35, 0x4DF9,\n    0x4E3E, 0x4E01, 0x4D55, 0x4C4C, 0x4AF5, 0x4963, 0x47A6, 0x45CF,\n    0x43F0, 0x4219, 0x405D, 0x3ECA, 0x3D74, 0x3C6A, 0x3BBE, 0x3B81,\n    0x0F41, 0x0F3E, 0x0F36, 0x0F29, 0x0F1A, 0x0F07, 0x0EF3, 0x0EDE,\n    0x0EC9, 0x0EB5, 0x0EA3, 0x0E93, 0x0E87, 0x0E7F, 0x0E7C, 0x0E7E,\n    0x0E85, 0x0E90, 0x0E9E, 0x0EAF, 0x0EC1, 0x0ED4, 0x0EE8, 0x0EFB,\n    0x0F0E, 0x0F1E, 0x0F2C, 0x0F37, 0x0F3E, 0x0F41, 0x027B, 0x0283,\n    0x0298, 0x02B9, 0x02E3, 0x0314, 0x0349, 0x0381, 0x03B9, 0x03EE,\n    0x041F, 0x0449, 0x046A, 0x047F, 0x0487, 0x0480, 0x046D, 0x0450,\n    0x042B, 0x03FF, 0x03CF, 0x039B, 0x0367, 0x0334, 0x0303, 0x02D7,\n    0x02B2, 0x0295, 0x0282, 0x027B, 0x97AD, 0x9784, 0x9710, 0x965F,\n    0x957D, 0x9475, 0x9355, 0x9228, 0x90FB, 0x8FDB, 0x8ED3, 0x8DF1,\n    0x8D40, 0x8CCC, 0x8CA3, 0x8CC7, 0x8D2C, 0x8DC9, 0x8E93, 0x8F80,\n    0x9086, 0x919B, 0x92B5, 0x93CA, 0x94D0, 0x95BD, 0x9687, 0x9724,\n    0x9789, 0x97AD, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001,\n    0x4171, 0xBF5F, 0x12F7, 0x12F7, 0x12F7, 0x12F7, 0x12F8, 0x12F8,\n    0x12F9, 0x12F9, 0x12FA, 0x12FB, 0x12FB, 0x12FC, 0x12FC, 0x12FC,\n    0x12FC, 0x12FC, 0x12FC, 0x12FC, 0x12FB, 0x12FB, 0x12FA, 0x12FA,\n    0x12F9, 0x12F9, 0x12F8, 0x12F8, 0x12F7, 0x12F7, 0x12F7, 0x12F7,\n    0xFEE7, 0xFEEE, 0xFEFF, 0xFF19, 0xFF3B, 0xFF62, 0xFF8D, 0xFFBA,\n    0xFFE7, 0x0011, 0x0039, 0x005A, 0x0075, 0x0086, 0x008C, 0x0087,\n    0x0078, 0x0060, 0x0042, 0x001F, 0xFFF9, 0xFFCF, 0xFFA5, 0xFF7C,\n    0xFF55, 0xFF31, 0xFF13, 0xFEFC, 0xFEED, 0xFEE7, 0x05CC, 0x05C0,\n    0x059E, 0x0569, 0x0526, 0x04D8, 0x0482, 0x0429, 0x03CF, 0x037A,\n    0x032B, 0x02E8, 0x02B4, 0x0291, 0x0285, 0x0290, 0x02AE, 0x02DC,\n    0x0318, 0x035F, 0x03AD, 0x03FF, 0x0453, 0x04A5, 0x04F3, 0x0539,\n    0x0575, 0x05A4, 0x05C2, 0x05CC, 0x1510, 0x150C, 0x1503, 0x14F5,\n    0x14E3, 0x14CE, 0x14B6, 0x149E, 0x1486, 0x146F, 0x145A, 0x1448,\n    0x143A, 0x1430, 0x142D, 0x1430, 0x1438, 0x1445, 0x1455, 0x1468,\n    0x147D, 0x1493, 0x14AA, 0x14C0, 0x14D5, 0x14E8, 0x14F8, 0x1505,\n    0x150D, 0x1510, 0xF6F7, 0xF6ED, 0xF6CF, 0xF6A0, 0xF665, 0xF621,\n    0xF5D6, 0xF588, 0xF539, 0xF4EE, 0xF4AA, 0xF46F, 0xF441, 0xF423,\n    0xF418, 0xF421, 0xF43C, 0xF464, 0xF499, 0xF4D7, 0xF51B, 0xF563,\n    0xF5AC, 0xF5F4, 0xF639, 0xF676, 0xF6AB, 0xF6D4, 0xF6EE, 0xF6F7,\n    0xFE90, 0xFE99, 0xFEB1, 0xFED7, 0xFF07, 0xFF3E, 0xFF7C, 0xFFBB,\n    0xFFFB, 0x0037, 0x006F, 0x009F, 0x00C4, 0x00DD, 0x00E6, 0x00DE,\n    0x00C9, 0x00A7, 0x007D, 0x004A, 0x0013, 0xFFD9, 0xFF9D, 0xFF63,\n    0xFF2B, 0xFEF9, 0xFECE, 0xFEAD, 0xFE98, 0xFE90, 0xD96B, 0x06DD,\n    0x4534,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_55.inc.c",
    "content": "static const struct Animation anim_55[] = {\n    1,\n    189,\n    0,\n    0,\n    0x98,\n    ANIMINDEX_NUMPARTS(anim_55_indices),\n    anim_55_values,\n    anim_55_indices,\n    0,\n};\n\n\nstatic const u16 anim_55_indices[] = {\n    0x0001, 0x0000, 0x0098, 0x0001, 0x0098, 0x0099, 0x0001, 0x0000, 0x0001, 0x0131, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0098, 0x156A,\n    0x0098, 0x13A2, 0x0098, 0x143A, 0x0098, 0x14D2,\n    0x0098, 0x11DA, 0x0098, 0x1272, 0x0098, 0x130A,\n    0x0001, 0x11D6, 0x0001, 0x11D7, 0x0001, 0x11D8,\n    0x0098, 0x0392, 0x0098, 0x042A, 0x0098, 0x04C2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0098, 0x02FA,\n    0x0098, 0x0132, 0x0098, 0x01CA, 0x0098, 0x0262,\n    0x0001, 0x11D2, 0x0001, 0x11D3, 0x0001, 0x11D4,\n    0x0098, 0x07BA, 0x0098, 0x0852, 0x0098, 0x08EA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0098, 0x0722,\n    0x0098, 0x055A, 0x0098, 0x05F2, 0x0098, 0x068A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x11D5,\n    0x0098, 0x100A, 0x0098, 0x10A2, 0x0098, 0x113A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0098, 0x0F72,\n    0x0098, 0x0DAA, 0x0098, 0x0E42, 0x0098, 0x0EDA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x11D9,\n    0x0098, 0x0BE2, 0x0098, 0x0C7A, 0x0098, 0x0D12,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0098, 0x0B4A,\n    0x0098, 0x0982, 0x0098, 0x0A1A, 0x0098, 0x0AB2,\n};\n\nstatic const s16 anim_55_values[] = {\n    0x0000, 0xFFE1, 0xFFC9, 0xFFC2, 0xFFC7, 0xFFCF, 0xFFD3, 0xFFD3,\n    0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3,\n    0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3,\n    0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3,\n    0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3,\n    0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3,\n    0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3,\n    0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3,\n    0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3,\n    0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3,\n    0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3,\n    0xFFD3, 0xFFD3, 0xFFD5, 0xFFD7, 0xFFD9, 0xFFDC, 0xFFDE, 0xFFE0,\n    0xFFE2, 0xFFE4, 0xFFE6, 0xFFE8, 0xFFEB, 0xFFED, 0xFFEF, 0xFFF1,\n    0xFFF3, 0xFFF5, 0xFFF8, 0xFFFA, 0xFFFD, 0xFFFF, 0x0001, 0x0003,\n    0x0006, 0x0008, 0x000A, 0x000D, 0x0016, 0x0039, 0x0086, 0x00E9,\n    0x013E, 0x017F, 0x01B2, 0x01C2, 0x01AF, 0x018B, 0x015C, 0x012B,\n    0x0100, 0x00D2, 0x00A4, 0x008B, 0x0086, 0x0083, 0x0083, 0x0085,\n    0x0088, 0x008C, 0x0091, 0x0095, 0x009A, 0x009D, 0x00A0, 0x00A1,\n    0x00A3, 0x00A4, 0x00A5, 0x00A7, 0x00A8, 0x00A9, 0x00A9, 0x00AA,\n    0x00AA, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n    0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE,\n    0xFFFD, 0xFFFD, 0xFFFD, 0xFFFA, 0xFFF1, 0xFFE5, 0xFFDA, 0xFFD1,\n    0xFFCE, 0xFFD4, 0xFFE1, 0xFFF1, 0x0000, 0x0011, 0x0025, 0x0036,\n    0x003C, 0x0029, 0x0007, 0xFFF3, 0xFFEE, 0xFFEB, 0xFFEA, 0xFFEA,\n    0xFFEC, 0xFFEE, 0xFFF1, 0xFFF4, 0xFFF7, 0xFFF9, 0xFFFB, 0xFFFB,\n    0xFFFC, 0xFFFD, 0xFFFE, 0xFFFE, 0xFFFF, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x3FFF, 0xFFE7, 0xFF63, 0xFED4, 0xFE3E, 0xFDA3, 0xFD06,\n    0xFC69, 0xFBD0, 0xFB3D, 0xFAB2, 0xFA33, 0xF9C1, 0xF961, 0xF913,\n    0xF8D2, 0xF895, 0xF85A, 0xF823, 0xF7EE, 0xF7BC, 0xF78D, 0xF761,\n    0xF737, 0xF70F, 0xF6E9, 0xF6C5, 0xF6A4, 0xF684, 0xF665, 0xF649,\n    0xF62D, 0xF613, 0xF5FA, 0xF5E3, 0xF5CC, 0xF5B5, 0xF5A0, 0xF58B,\n    0xF576, 0xF562, 0xF54E, 0xF53A, 0xF4E8, 0xF427, 0xF30A, 0xF1A4,\n    0xF007, 0xEE46, 0xEC74, 0xEAA5, 0xE8EA, 0xE756, 0xE5FD, 0xE4F1,\n    0xE445, 0xE40C, 0xE459, 0xE53E, 0xE6CF, 0xE91D, 0xEC3D, 0xF040,\n    0xF53A, 0xFB3A, 0x0233, 0x0A13, 0x12C3, 0x1C2D, 0x263D, 0x30DD,\n    0x3BF8, 0x4778, 0x5348, 0x5F53, 0x6B83, 0x77C4, 0x8402, 0x9023,\n    0x9C14, 0xA7C0, 0xB311, 0xBDF3, 0xC84F, 0xD211, 0xDB24, 0xE371,\n    0xEAE4, 0xF167, 0xF6E5, 0xFB75, 0xFF46, 0x0263, 0x04DA, 0x06B6,\n    0x0803, 0x08CE, 0x0923, 0x090F, 0x089C, 0x07D9, 0x06D1, 0x058F,\n    0x0422, 0x0294, 0x00F3, 0xFF4A, 0xFDA6, 0xFC12, 0xFA9B, 0xF94E,\n    0xF836, 0xF760, 0xF6D9, 0xF6AB, 0xF6E5, 0xF77B, 0xF855, 0xF969,\n    0xFAAC, 0xFC15, 0xFD99, 0xFF2D, 0x00C8, 0x025F, 0x03E9, 0x055C,\n    0x06AC, 0x07D0, 0x08BD, 0x096A, 0x09D6, 0x0A08, 0x0A03, 0x09CE,\n    0x096E, 0x08E8, 0x0841, 0x077E, 0x06A6, 0x05BC, 0x04C7, 0x03CB,\n    0x02CF, 0x01D6, 0x00E8, 0x0007, 0xFF3C, 0xFE89, 0xFDF5, 0xFD85,\n    0xFD3D, 0x0000, 0xF984, 0xF98D, 0xF9A4, 0xF9C4, 0xF9EA, 0xFA12,\n    0xFA36, 0xFA54, 0xFA65, 0xFA67, 0xFA55, 0xFA2B, 0xF9E4, 0xF97C,\n    0xF8FB, 0xF86E, 0xF7D6, 0xF733, 0xF687, 0xF5D2, 0xF516, 0xF453,\n    0xF38B, 0xF2BF, 0xF1EF, 0xF11D, 0xF04A, 0xEF77, 0xEEA4, 0xEDD3,\n    0xED04, 0xEC3A, 0xEB74, 0xEAB4, 0xE9FB, 0xE949, 0xE8A1, 0xE802,\n    0xE76E, 0xE6E6, 0xE66B, 0xE5FE, 0xE5AA, 0xE578, 0xE562, 0xE567,\n    0xE580, 0xE5AB, 0xE5E4, 0xE627, 0xE66F, 0xE6B9, 0xE701, 0xE743,\n    0xE77B, 0xE7A5, 0xE7BE, 0xE7C0, 0xE7A9, 0xE775, 0xE71F, 0xE6A3,\n    0xE5FE, 0xE532, 0xE444, 0xE337, 0xE20F, 0xE0CE, 0xDF78, 0xDE0D,\n    0xDC93, 0xDB0B, 0xD978, 0xD7DE, 0xD63E, 0xD49D, 0xD2FC, 0xD15E,\n    0xCFC7, 0xCE3A, 0xCCB8, 0xCB45, 0xC9E4, 0xC897, 0xC762, 0xC647,\n    0xC549, 0xC46B, 0xC3B0, 0xC307, 0xC260, 0xC1BC, 0xC11D, 0xC084,\n    0xBFF2, 0xBF69, 0xBEEA, 0xBE78, 0xBE13, 0xBDBD, 0xBD78, 0xBD44,\n    0xBD24, 0xBD19, 0xBD25, 0xBD48, 0xBD85, 0xBDDC, 0xBE50, 0xBEE2,\n    0xBF93, 0xC066, 0xC15A, 0xC272, 0xC3B0, 0xC581, 0xC837, 0xCBAE,\n    0xCFBE, 0xD443, 0xD917, 0xDE12, 0xE311, 0xE7EC, 0xEC7D, 0xF0A0,\n    0xF42D, 0xF6FF, 0xF8F0, 0xFA46, 0xFB60, 0xFC43, 0xFCF4, 0xFD75,\n    0xFDCC, 0xFDFC, 0xFE0A, 0xFDF9, 0xFDCE, 0xFD8C, 0xFD38, 0xFCD6,\n    0xFC6A, 0xFBF8, 0xFB84, 0xFB13, 0xFAA7, 0xFA46, 0xF9F4, 0xF9B4,\n    0xF98A, 0xF97C, 0xED8C, 0xED8C, 0xED8D, 0xED8F, 0xED90, 0xED92,\n    0xED94, 0xED95, 0xED96, 0xED96, 0xED95, 0xED93, 0xED90, 0xED8C,\n    0xED86, 0xED80, 0xED79, 0xED72, 0xED6A, 0xED62, 0xED5A, 0xED51,\n    0xED48, 0xED3F, 0xED36, 0xED2D, 0xED23, 0xED1A, 0xED11, 0xED08,\n    0xECFE, 0xECF5, 0xECED, 0xECE4, 0xECDC, 0xECD4, 0xECCD, 0xECC6,\n    0xECBF, 0xECB9, 0xECB4, 0xECAF, 0xECE9, 0xED95, 0xEEA0, 0xEFF6,\n    0xF185, 0xF33A, 0xF503, 0xF6CC, 0xF882, 0xFA13, 0xFB6D, 0xFC7B,\n    0xFD2C, 0xFD6C, 0xFD28, 0xFC4F, 0xFACC, 0xF88E, 0xF581, 0xF192,\n    0xECAF, 0xE6C9, 0xDFED, 0xD830, 0xCFA6, 0xC664, 0xBC80, 0xB20F,\n    0xA724, 0x9BD7, 0x903A, 0x8463, 0x7865, 0x6C5A, 0x6054, 0x5468,\n    0x48AB, 0x3D33, 0x3213, 0x2760, 0x1D31, 0x139A, 0x0AAF, 0x0286,\n    0xFB35, 0xF4CE, 0xEF68, 0xEAE8, 0xE71F, 0xE401, 0xE183, 0xDF9A,\n    0xDE3A, 0xDD59, 0xDCEA, 0xDCE2, 0xDD37, 0xDDDC, 0xDEC8, 0xDFED,\n    0xE141, 0xE2B9, 0xE449, 0xE5E6, 0xE784, 0xE919, 0xEA99, 0xEBF9,\n    0xED2D, 0xEE2A, 0xEEE6, 0xEF53, 0xEF68, 0xEF40, 0xEF02, 0xEEB2,\n    0xEE53, 0xEDEA, 0xED7B, 0xED09, 0xEC99, 0xEC2E, 0xEBCC, 0xEB77,\n    0xEB34, 0xEB06, 0xEAF1, 0xEAF9, 0xEB0E, 0xEB20, 0xEB2F, 0xEB3E,\n    0xEB4C, 0xEB5C, 0xEB6F, 0xEB86, 0xEBA2, 0xEBC6, 0xEBF1, 0xEC25,\n    0xEC65, 0xECB0, 0xED08, 0xED70, 0xEDE6, 0xEE6F, 0xEF09, 0xEFB8,\n    0xF07B, 0xED8C, 0xDB3B, 0xDA7A, 0xD992, 0xD890, 0xD77E, 0xD666,\n    0xD555, 0xD454, 0xD36F, 0xD2B0, 0xD222, 0xD1D1, 0xD1C6, 0xD20D,\n    0xD28E, 0xD329, 0xD3DB, 0xD4A3, 0xD57F, 0xD66D, 0xD76B, 0xD877,\n    0xD98F, 0xDAB2, 0xDBDE, 0xDD10, 0xDE47, 0xDF81, 0xE0BC, 0xE1F7,\n    0xE32E, 0xE461, 0xE58D, 0xE6B1, 0xE7CB, 0xE8D9, 0xE9D8, 0xEAC8,\n    0xEBA6, 0xEC70, 0xED24, 0xEDC1, 0xEE4B, 0xEEC8, 0xEF36, 0xEF97,\n    0xEFEA, 0xF030, 0xF068, 0xF092, 0xF0AE, 0xF0BC, 0xF0BC, 0xF0AF,\n    0xF094, 0xF06A, 0xF033, 0xEFEE, 0xEF9B, 0xEF3A, 0xEECA, 0xEE4D,\n    0xEDC1, 0xED2B, 0xEC8D, 0xEBE6, 0xEB35, 0xEA79, 0xE9B2, 0xE8DD,\n    0xE7FA, 0xE709, 0xE607, 0xE4F4, 0xE3D0, 0xE298, 0xE14D, 0xDFEC,\n    0xDE76, 0xDCE8, 0xDB42, 0xD984, 0xD7AB, 0xD5B8, 0xD180, 0xCA59,\n    0xC27E, 0xBC2A, 0xB99B, 0xB9BC, 0xB9FB, 0xBA58, 0xBAD1, 0xBB66,\n    0xBC14, 0xBCDB, 0xBDBA, 0xBEAF, 0xBFB9, 0xC0D7, 0xC208, 0xC34A,\n    0xC49D, 0xC5FF, 0xC76E, 0xC8EB, 0xCA73, 0xCC05, 0xCDA1, 0xCF44,\n    0xD0EE, 0xD29E, 0xD451, 0xD608, 0xD7C1, 0xDB4A, 0xE134, 0xE7A1,\n    0xECB5, 0xEE92, 0xEE20, 0xED86, 0xECC7, 0xEBE6, 0xEAE6, 0xE9C9,\n    0xE892, 0xE745, 0xE5E4, 0xE471, 0xE2F1, 0xE165, 0xDFD0, 0xDE36,\n    0xDC99, 0xDAFD, 0xD963, 0xD7CE, 0xD643, 0xD4C3, 0xD351, 0xD1F0,\n    0xD0A4, 0xCF6E, 0xCE52, 0xCD53, 0xCC73, 0xCBB5, 0xCB1D, 0xCAAD,\n    0xCA67, 0xCA4F, 0x2C56, 0x2A0C, 0x2783, 0x24FA, 0x22AF, 0x20E1,\n    0x234D, 0x21FD, 0x1716, 0x096C, 0xFAB4, 0xECA3, 0xE0F0, 0xD950,\n    0xD58D, 0xD40B, 0xD466, 0xD63C, 0xD92C, 0xDCD1, 0xE0CB, 0xE585,\n    0xEB71, 0xF238, 0xF981, 0x00F3, 0x0838, 0x0EF6, 0x14D7, 0x1980,\n    0x1D43, 0x20AF, 0x23C6, 0x268E, 0x290A, 0x2B3F, 0x2D30, 0x2EE3,\n    0x305A, 0x319B, 0x32A9, 0x3389, 0x341E, 0x3451, 0x342F, 0x33C6,\n    0x3322, 0x3250, 0x315F, 0x305A, 0x2F4F, 0x2E4B, 0x2D5B, 0x2C8C,\n    0x2BEB, 0x2B86, 0x2B69, 0x2BA1, 0x2C3C, 0x2D47, 0x2ECF, 0x30E1,\n    0x3389, 0x36DF, 0x3AE6, 0x3F8B, 0x44C0, 0x4A72, 0x5091, 0x570C,\n    0x5DD3, 0x64D3, 0x6BFE, 0x7341, 0x7A8D, 0x81D2, 0x88FB, 0x8FF9,\n    0x96BC, 0x9D33, 0xA34D, 0xA8F9, 0xAE27, 0xB2C5, 0xB6C3, 0xBA0F,\n    0xBC9A, 0xBE52, 0xBF27, 0xBF14, 0xBE2C, 0xBC7F, 0xBA19, 0xB70C,\n    0xB365, 0xAF34, 0xAA87, 0xA56E, 0x9FF7, 0x9A31, 0x942C, 0x8DF6,\n    0x879E, 0x8133, 0x7AC2, 0x745E, 0x6E15, 0x67F4, 0x620B, 0x5C69,\n    0x571D, 0x5235, 0x4DC1, 0x49D0, 0x4670, 0x4670, 0x4B2C, 0x528D,\n    0x5A77, 0x60D4, 0x65DA, 0x6B24, 0x70AC, 0x7669, 0x7C54, 0x826B,\n    0x889E, 0x8EEB, 0x9549, 0x9BB3, 0xA220, 0xA88A, 0xAEEA, 0xB538,\n    0xBB6D, 0xC182, 0xC770, 0xCD30, 0xD2BA, 0xD808, 0xDD13, 0xE1D2,\n    0xE640, 0xEA55, 0xEE09, 0xF157, 0xF436, 0xF69F, 0xF88B, 0xF9F4,\n    0xFAD1, 0xFB1D, 0xCAF4, 0xCB0C, 0xCB1A, 0xCB31, 0xCB66, 0xCBCE,\n    0xCCE6, 0xCEAD, 0xD0DA, 0xD361, 0xD5F6, 0xD84B, 0xDA10, 0xDAF9,\n    0xDAFB, 0xDA5D, 0xD948, 0xD7E6, 0xD661, 0xD4E2, 0xD394, 0xD24F,\n    0xD0DC, 0xCF50, 0xCDC0, 0xCC40, 0xCAE4, 0xC9C1, 0xC8EC, 0xC878,\n    0xC861, 0xC88D, 0xC8EF, 0xC97E, 0xCA2C, 0xCAEE, 0xCBBA, 0xCC83,\n    0xCD3E, 0xCDE0, 0xCE5D, 0xCEA9, 0xCED5, 0xCEF9, 0xCF16, 0xCF2C,\n    0xCF3B, 0xCF46, 0xCF4B, 0xCF4B, 0xCF48, 0xCF41, 0xCF37, 0xCF2A,\n    0xCF1C, 0xCF0C, 0xCEFC, 0xCEEC, 0xCEDB, 0xCECC, 0xCEBE, 0xCEB2,\n    0xCEA9, 0xCE9F, 0xCE92, 0xCE82, 0xCE70, 0xCE5B, 0xCE45, 0xCE2D,\n    0xCE14, 0xCDFA, 0xCDE0, 0xCDC6, 0xCDAC, 0xCD93, 0xCD7B, 0xCD64,\n    0xCD4F, 0xCD3D, 0xCD2D, 0xCD1F, 0xCD15, 0xCD0F, 0xCD0D, 0xCD0E,\n    0xCD15, 0xCD21, 0xCD32, 0xCD42, 0xCD4E, 0xCD56, 0xCD5A, 0xCD5C,\n    0xCD5D, 0xCD5E, 0xCD5F, 0xCD63, 0xCD6A, 0xCD74, 0xCD84, 0xCD9A,\n    0xCDB7, 0xCDDC, 0xCE0A, 0xCE42, 0xCE86, 0xCED5, 0xCF32, 0xCF9D,\n    0xD018, 0xD0A3, 0xD13F, 0xD1EE, 0xD2B0, 0xD52D, 0xD9F3, 0xDF62,\n    0xE3D8, 0xE5B2, 0xE5A5, 0xE57E, 0xE53D, 0xE4E6, 0xE47A, 0xE3F9,\n    0xE368, 0xE2C6, 0xE216, 0xE159, 0xE092, 0xDFC2, 0xDEEA, 0xDE0E,\n    0xDD2E, 0xDC4C, 0xDB6A, 0xDA89, 0xD9AC, 0xD8D5, 0xD804, 0xD73D,\n    0xD680, 0xD5CF, 0xD52D, 0xD49A, 0xD419, 0xD3AC, 0xD353, 0xD312,\n    0xD2EA, 0xD2DC, 0x8683, 0x88FE, 0x8BDA, 0x8EA1, 0x90DD, 0x9215,\n    0x8B2A, 0x8A6F, 0x9A9F, 0xAF73, 0xC624, 0xDBEB, 0xEE01, 0xF99E,\n    0xFEC5, 0xFFF2, 0xFE19, 0xFA2A, 0xF518, 0xEFD5, 0xEB54, 0xE710,\n    0xE20B, 0xDC80, 0xD6A5, 0xD0B6, 0xCAEA, 0xC57A, 0xC0A0, 0xBC95,\n    0xB919, 0xB5C8, 0xB2A5, 0xAFB4, 0xACF7, 0xAA70, 0xA824, 0xA615,\n    0xA445, 0xA2B7, 0xA16F, 0xA070, 0x9FC4, 0x9F6F, 0x9F66, 0x9F9C,\n    0xA009, 0xA0A0, 0xA156, 0xA222, 0xA2F7, 0xA3CC, 0xA494, 0xA545,\n    0xA5D5, 0xA638, 0xA663, 0xA64B, 0xA5E6, 0xA529, 0xA408, 0xA279,\n    0xA070, 0x9DDB, 0x9AB8, 0x9714, 0x92FD, 0x8E82, 0x89AF, 0x8493,\n    0x7F38, 0x79B3, 0x740E, 0x6E58, 0x689D, 0x62EC, 0x5D53, 0x57DF,\n    0x529F, 0x4DA0, 0x48F0, 0x449D, 0x40B5, 0x3D46, 0x3A5C, 0x3808,\n    0x3655, 0x3553, 0x350E, 0x359A, 0x36F4, 0x390E, 0x3BD5, 0x3F3C,\n    0x4331, 0x47A5, 0x4C87, 0x51C8, 0x5757, 0x5D24, 0x631F, 0x6939,\n    0x6F61, 0x7587, 0x7B9A, 0x818F, 0x874F, 0x8CCC, 0x91F7, 0x96C0,\n    0x9B17, 0x9EEB, 0xA22D, 0xA4CC, 0xA6B8, 0xA1C5, 0x935E, 0x80D9,\n    0x6F8A, 0x64CE, 0x5F10, 0x5935, 0x5342, 0x4D3B, 0x4725, 0x4106,\n    0x3AE2, 0x34BF, 0x2EA1, 0x288E, 0x228A, 0x1C9A, 0x16C4, 0x110C,\n    0x0B78, 0x060C, 0x00CE, 0xFBC2, 0xF6EE, 0xF255, 0xEDFF, 0xE9EE,\n    0xE629, 0xE2B4, 0xDF95, 0xDCD0, 0xDA6A, 0xD869, 0xD6D1, 0xD5A8,\n    0xD4F1, 0xD4B4, 0xFFF7, 0xFFEF, 0xFFDE, 0xFFD3, 0xFFDA, 0x0000,\n    0x0042, 0x0090, 0x00EA, 0x014B, 0x01B2, 0x021D, 0x0289, 0x02F4,\n    0x035B, 0x03C5, 0x0438, 0x04BD, 0x055B, 0x0578, 0x04EE, 0x0472,\n    0x04B9, 0x0676, 0x0A5F, 0x126B, 0x1E54, 0x2B79, 0x3734, 0x3EE2,\n    0x4273, 0x43F0, 0x43D4, 0x42A0, 0x40D0, 0x3EE2, 0x3CDB, 0x3A76,\n    0x37C7, 0x34DE, 0x31CE, 0x2EA9, 0x2B81, 0x2868, 0x256F, 0x22AA,\n    0x2029, 0x1DFF, 0x1C3E, 0x1AF9, 0x1A29, 0x19B8, 0x1992, 0x19A0,\n    0x19CD, 0x1A04, 0x1A30, 0x1A3A, 0x1A0F, 0x1998, 0x18BF, 0x16BC,\n    0x1368, 0x0F9F, 0x0C43, 0x0A2F, 0x0929, 0x0877, 0x0843, 0x08B6,\n    0x09F9, 0x0C34, 0x0F4A, 0x12EF, 0x1705, 0x1B6E, 0x200A, 0x24BB,\n    0x2964, 0x2DE5, 0x3221, 0x35F9, 0x394E, 0x3C02, 0x3CC1, 0x3B1C,\n    0x384F, 0x3595, 0x342A, 0x33E1, 0x33B6, 0x33A6, 0x33AE, 0x33CB,\n    0x33F8, 0x3433, 0x3479, 0x34C5, 0x3515, 0x3564, 0x35B1, 0x35F7,\n    0x3632, 0x3661, 0x367E, 0x3687, 0x3679, 0x364F, 0x3607, 0x359E,\n    0x350F, 0x3457, 0x3374, 0x3261, 0x311B, 0x2C5D, 0x22F5, 0x1801,\n    0x0E9E, 0x09E9, 0x08A3, 0x0778, 0x0665, 0x056C, 0x0489, 0x03BD,\n    0x0306, 0x0264, 0x01D4, 0x0157, 0x00EA, 0x008E, 0x0040, 0x0000,\n    0xFFCE, 0xFFA6, 0xFF89, 0xFF76, 0xFF6B, 0xFF68, 0xFF6B, 0xFF73,\n    0xFF80, 0xFF8F, 0xFFA1, 0xFFB4, 0xFFC7, 0xFFD9, 0xFFE9, 0xFFF5,\n    0xFFFD, 0x0000, 0x0001, 0x0003, 0x0006, 0x0009, 0x0007, 0x0000,\n    0xFFCA, 0xFF55, 0xFEC7, 0xFE43, 0xFDED, 0xFDEA, 0xFE5C, 0xFF69,\n    0x022A, 0x06C2, 0x0BD9, 0x1017, 0x1228, 0x11B8, 0x0FC4, 0x0CEB,\n    0x09CC, 0x0706, 0x0539, 0x0494, 0x04A8, 0x0520, 0x05AB, 0x05F8,\n    0x05F4, 0x05D4, 0x05AE, 0x0599, 0x05AA, 0x05F8, 0x0679, 0x0712,\n    0x07BE, 0x0878, 0x093D, 0x0A06, 0x0AD0, 0x0B95, 0x0C51, 0x0D00,\n    0x0D9B, 0x0E1F, 0x0E87, 0x0ED1, 0x0F02, 0x0F1D, 0x0F25, 0x0F1F,\n    0x0F0E, 0x0EF6, 0x0EDB, 0x0EC0, 0x0EA9, 0x0E9A, 0x0E96, 0x0E9B,\n    0x0EA3, 0x0EAC, 0x0EB5, 0x0EBD, 0x0E86, 0x0E05, 0x0D83, 0x0D4C,\n    0x0DA8, 0x0EE3, 0x10D1, 0x130D, 0x1589, 0x1837, 0x1B0B, 0x1DF6,\n    0x20EB, 0x23DC, 0x26BB, 0x297C, 0x2C0F, 0x2E68, 0x306D, 0x320B,\n    0x3345, 0x341C, 0x3492, 0x34DF, 0x3538, 0x359B, 0x3606, 0x3677,\n    0x36EC, 0x3762, 0x37D9, 0x384D, 0x38BD, 0x3926, 0x3987, 0x39DE,\n    0x3A28, 0x3A64, 0x3A8F, 0x3AA7, 0x3AAA, 0x3A97, 0x3A6A, 0x3A23,\n    0x39BF, 0x393C, 0x3897, 0x37D0, 0x36E3, 0x330D, 0x2B41, 0x2212,\n    0x1A15, 0x15DB, 0x1467, 0x1301, 0x11A9, 0x1060, 0x0F24, 0x0DF6,\n    0x0CD6, 0x0BC4, 0x0ABE, 0x09C6, 0x08DB, 0x07FC, 0x072A, 0x0665,\n    0x05AC, 0x04FE, 0x045D, 0x03C7, 0x033D, 0x02BE, 0x024A, 0x01E1,\n    0x0183, 0x0130, 0x00E7, 0x00A9, 0x0074, 0x004A, 0x0029, 0x0012,\n    0x0004, 0x0000, 0xF546, 0xF543, 0xF53D, 0xF538, 0xF53B, 0xF549,\n    0xF577, 0xF5C7, 0xF627, 0xF684, 0xF6CB, 0xF6EA, 0xF6CD, 0xF663,\n    0xF540, 0xF357, 0xF11E, 0xEF0C, 0xED99, 0xEC9C, 0xEBB4, 0xEB02,\n    0xEAAB, 0xEAD0, 0xEB94, 0xED95, 0xF0D2, 0xF47E, 0xF7CE, 0xF9F5,\n    0xFAC9, 0xFADD, 0xFA81, 0xFA06, 0xF9BD, 0xF9F5, 0xFA9A, 0xFB5D,\n    0xFC39, 0xFD28, 0xFE23, 0xFF25, 0x0026, 0x0123, 0x0213, 0x02F2,\n    0x03B9, 0x0462, 0x04E7, 0x0549, 0x0592, 0x05C2, 0x05DD, 0x05E6,\n    0x05DE, 0x05CA, 0x05AB, 0x0584, 0x0557, 0x0528, 0x04FA, 0x04A1,\n    0x0406, 0x0347, 0x0284, 0x01DA, 0x0111, 0x0008, 0xFF04, 0xFE46,\n    0xFE10, 0xFEA5, 0xFFE3, 0x016F, 0x033B, 0x0538, 0x0758, 0x098B,\n    0x0BC2, 0x0DF0, 0x1004, 0x11F1, 0x13A7, 0x1518, 0x15DF, 0x15DE,\n    0x156A, 0x14D8, 0x1480, 0x146E, 0x1475, 0x1491, 0x14BF, 0x14FC,\n    0x1544, 0x1595, 0x15EB, 0x1644, 0x169B, 0x16EE, 0x1739, 0x177A,\n    0x17AD, 0x17D0, 0x17DE, 0x17D4, 0x17B0, 0x176F, 0x170C, 0x1686,\n    0x15D8, 0x14FF, 0x13F9, 0x12C3, 0x1158, 0x0BF4, 0x0141, 0xF4E5,\n    0xEA81, 0xE5BA, 0xE50F, 0xE491, 0xE43E, 0xE412, 0xE40C, 0xE428,\n    0xE465, 0xE4BF, 0xE533, 0xE5C0, 0xE663, 0xE718, 0xE7DE, 0xE8B2,\n    0xE991, 0xEA79, 0xEB67, 0xEC58, 0xED4A, 0xEE3B, 0xEF27, 0xF00C,\n    0xF0E8, 0xF1B8, 0xF279, 0xF328, 0xF3C4, 0xF449, 0xF4B5, 0xF506,\n    0xF538, 0xF549, 0xF04B, 0xED9E, 0xEACA, 0xE7DD, 0xE4E5, 0xE1F1,\n    0xDEAE, 0xDAF1, 0xD702, 0xD329, 0xCFAD, 0xCCD7, 0xCAEE, 0xCA3B,\n    0xCCA3, 0xD265, 0xD953, 0xDF3C, 0xE1F1, 0xE0E5, 0xDDA6, 0xD932,\n    0xD483, 0xD094, 0xCE62, 0xCE82, 0xD04D, 0xD2E3, 0xD564, 0xD6F1,\n    0xD7A4, 0xD825, 0xD864, 0xD851, 0xD7DA, 0xD6F1, 0xD5A5, 0xD41C,\n    0xD262, 0xD082, 0xCE89, 0xCC83, 0xCA7D, 0xC882, 0xC69E, 0xC4DF,\n    0xC34F, 0xC1FB, 0xC0F0, 0xC030, 0xBFAF, 0xBF65, 0xBF49, 0xBF52,\n    0xBF78, 0xBFB1, 0xBFF6, 0xC03D, 0xC07E, 0xC0B0, 0xC0CA, 0xC09A,\n    0xC034, 0xBFFF, 0xC05E, 0xC1B7, 0xC473, 0xC84E, 0xCCA9, 0xD0E0,\n    0xD454, 0xD662, 0xD77C, 0xD878, 0xD951, 0xDA00, 0xDA7E, 0xDAC4,\n    0xDACC, 0xDA8E, 0xDA06, 0xD92A, 0xD7F6, 0xD662, 0xD20F, 0xCA54,\n    0xC1C0, 0xBADE, 0xB83C, 0xB8A6, 0xB934, 0xB9E5, 0xBAB8, 0xBBA9,\n    0xBCB9, 0xBDE5, 0xBF2C, 0xC08C, 0xC203, 0xC391, 0xC533, 0xC6E8,\n    0xC8AE, 0xCA84, 0xCC67, 0xCE58, 0xD053, 0xD258, 0xD464, 0xD677,\n    0xD88E, 0xDAA9, 0xDCC4, 0xDEE0, 0xE0FA, 0xE4E2, 0xEB21, 0xF1C8,\n    0xF6EB, 0xF89B, 0xF7D4, 0xF6DE, 0xF5BB, 0xF46F, 0xF2FE, 0xF16C,\n    0xEFBB, 0xEDF0, 0xEC0E, 0xEA18, 0xE813, 0xE601, 0xE3E6, 0xE1C6,\n    0xDFA5, 0xDD85, 0xDB6B, 0xD95A, 0xD755, 0xD561, 0xD380, 0xD1B6,\n    0xD007, 0xCE77, 0xCD08, 0xCBBE, 0xCA9E, 0xC9AA, 0xC8E6, 0xC855,\n    0xC7FC, 0xC7DD, 0xB581, 0xA7EA, 0x9946, 0x8A53, 0x7BC8, 0x6E68,\n    0x612D, 0x5DA0, 0x674F, 0x7521, 0x84A5, 0x9366, 0x9EF3, 0xA4DD,\n    0xA1BB, 0x96E2, 0x88FD, 0x7CB0, 0x76AC, 0x7854, 0x7E73, 0x86C7,\n    0x8F06, 0x94F1, 0x9643, 0x90A0, 0x8567, 0x77ED, 0x6B8E, 0x639F,\n    0x616F, 0x62C1, 0x659C, 0x6806, 0x6805, 0x639F, 0x5BAE, 0x5281,\n    0x484F, 0x3D4F, 0x31B9, 0x25C4, 0x19A7, 0x0D9A, 0x01D4, 0xF68D,\n    0xEBFB, 0xE256, 0xD9D5, 0xD35B, 0xCF37, 0xCCBF, 0xCB4B, 0xCA30,\n    0xC8C7, 0xC666, 0xC22E, 0xBCBE, 0xB7A8, 0xB480, 0xB4DA, 0xB8B6,\n    0xBEA4, 0xC60E, 0xCE5E, 0xD6FE, 0xDF57, 0xE6D5, 0xECE0, 0xF0E3,\n    0xF249, 0xF079, 0xEADB, 0xE1B3, 0xD5B9, 0xC7A6, 0xB831, 0xA814,\n    0x9807, 0x88C1, 0x7AFA, 0x6F6E, 0x66D4, 0x61E4, 0x686F, 0x7CB6,\n    0x971D, 0xAFFF, 0xBFBE, 0xC7FA, 0xCF75, 0xD642, 0xDC75, 0xE221,\n    0xE75A, 0xEC33, 0xF0C0, 0xF515, 0xF944, 0xFD61, 0x0180, 0x05B5,\n    0x0A13, 0x0EAE, 0x1388, 0x1885, 0x1D8C, 0x2284, 0x2752, 0x2BDE,\n    0x300D, 0x33C7, 0x36F1, 0x3972, 0x3B31, 0x39D3, 0x348D, 0x2D9A,\n    0x2736, 0x239D, 0x2229, 0x20B7, 0x1F47, 0x1DDA, 0x1C71, 0x1B0C,\n    0x19AD, 0x1853, 0x16FF, 0x15B3, 0x146E, 0x1332, 0x11FE, 0x10D5,\n    0x0FB5, 0x0EA1, 0x0D98, 0x0C9C, 0x0BAC, 0x0ACB, 0x09F7, 0x0933,\n    0x087E, 0x07D9, 0x0745, 0x06C3, 0x0653, 0x05F6, 0x05AC, 0x0577,\n    0x0556, 0x054B, 0x34AA, 0x3A70, 0x40B6, 0x4713, 0x4D1D, 0x5268,\n    0x5546, 0x5627, 0x5703, 0x57E2, 0x58A3, 0x5925, 0x5948, 0x58EB,\n    0x57A3, 0x5577, 0x52F0, 0x5097, 0x4EF4, 0x4DCC, 0x4CAB, 0x4BC9,\n    0x4B60, 0x4BA8, 0x4CDB, 0x4FDA, 0x549D, 0x59FD, 0x5ED3, 0x61F9,\n    0x635F, 0x63E2, 0x63C2, 0x633D, 0x628F, 0x61F9, 0x6173, 0x60D2,\n    0x601D, 0x5F57, 0x5E87, 0x5DB3, 0x5CDF, 0x5C11, 0x5B4F, 0x5A9F,\n    0x5A05, 0x5987, 0x592B, 0x5912, 0x594A, 0x59BF, 0x5A5A, 0x5B07,\n    0x5BAF, 0x5C3D, 0x5D14, 0x5E49, 0x5F57, 0x5FB7, 0x5EE3, 0x5D0D,\n    0x5AD0, 0x5843, 0x5579, 0x528A, 0x4F8A, 0x4C90, 0x49B0, 0x4701,\n    0x4498, 0x428A, 0x40AA, 0x3EC4, 0x3CE4, 0x3B14, 0x3961, 0x37D6,\n    0x367F, 0x3567, 0x349A, 0x3424, 0x340F, 0x3468, 0x36FF, 0x3C72,\n    0x42FD, 0x48DF, 0x4C56, 0x4DDF, 0x4F29, 0x503B, 0x511C, 0x51D2,\n    0x5265, 0x52DC, 0x533C, 0x538E, 0x53D7, 0x541F, 0x546D, 0x54C6,\n    0x5534, 0x55BB, 0x5638, 0x568D, 0x56C9, 0x56F8, 0x572A, 0x576C,\n    0x57CC, 0x5859, 0x5922, 0x5A33, 0x5B9B, 0x5ED6, 0x6424, 0x69C2,\n    0x6DE9, 0x6ED4, 0x6D6D, 0x6BCE, 0x69FE, 0x67FF, 0x65D6, 0x6388,\n    0x6119, 0x5E8D, 0x5BE9, 0x5930, 0x5668, 0x5394, 0x50BA, 0x4DDC,\n    0x4B01, 0x482B, 0x4560, 0x42A3, 0x3FF9, 0x3D67, 0x3AF0, 0x389A,\n    0x3668, 0x345E, 0x3282, 0x30D7, 0x2F62, 0x2E27, 0x2D2A, 0x2C70,\n    0x2BFD, 0x2BD6, 0x4637, 0x3B13, 0x2F12, 0x22D1, 0x16EA, 0x0BFC,\n    0xFFAA, 0xFE7F, 0x0E33, 0x231B, 0x3A1B, 0x5015, 0x61EC, 0x6C82,\n    0x6BCD, 0x617B, 0x5308, 0x45F0, 0x3FB0, 0x4221, 0x4996, 0x5342,\n    0x5C55, 0x6203, 0x617D, 0x570F, 0x4450, 0x2E63, 0x1A6A, 0x0D87,\n    0x08EC, 0x08F8, 0x0B8F, 0x0E96, 0x0FF2, 0x0D87, 0x080E, 0x01BE,\n    0xFABF, 0xF332, 0xEB3E, 0xE308, 0xDAB4, 0xD267, 0xCA47, 0xC277,\n    0xBB1E, 0xB460, 0xAE61, 0xA9B7, 0xA692, 0xA480, 0xA310, 0xA1D0,\n    0xA04E, 0x9E18, 0x9A4D, 0x9551, 0x909B, 0x8DA5, 0x8DE8, 0x9159,\n    0x969C, 0x9D2F, 0xA490, 0xAC3B, 0xB3AF, 0xBA69, 0xBFE7, 0xC3A6,\n    0xC524, 0xC3DE, 0xBF38, 0xB761, 0xAD04, 0xA0CD, 0x9368, 0x8580,\n    0x77BE, 0x6AD4, 0x5F6A, 0x562C, 0x4FC7, 0x4CE5, 0x55AF, 0x6C7C,\n    0x8945, 0xA3F8, 0xB48B, 0xBCE5, 0xC458, 0xCAFB, 0xD0E7, 0xD633,\n    0xDAF9, 0xDF4F, 0xE34E, 0xE70D, 0xEAA5, 0xEE2D, 0xF1BE, 0xF570,\n    0xF95A, 0xFD95, 0x0252, 0x078F, 0x0D11, 0x129E, 0x17FA, 0x1CEC,\n    0x2139, 0x24A6, 0x26F9, 0x27F8, 0x2768, 0x203A, 0x10FF, 0xFEF4,\n    0xEF50, 0xE74F, 0xE4F1, 0xE2B8, 0xE0A3, 0xDEB1, 0xDCE1, 0xDB32,\n    0xD9A2, 0xD831, 0xD6DD, 0xD5A5, 0xD487, 0xD383, 0xD298, 0xD1C3,\n    0xD105, 0xD05B, 0xCFC5, 0xCF41, 0xCECF, 0xCE6C, 0xCE18, 0xCDD2,\n    0xCD98, 0xCD69, 0xCD44, 0xCD28, 0xCD14, 0xCD06, 0xCCFD, 0xCCF8,\n    0xCCF6, 0xCCF6, 0xFF81, 0xFF81, 0xFF81, 0xFF81, 0xFF81, 0xFF81,\n    0xFF81, 0xFF81, 0xFF81, 0xFF81, 0xFF81, 0xFF81, 0xFF81, 0xFF81,\n    0xFF80, 0xFF80, 0xFF80, 0xFF80, 0xFF80, 0xFF80, 0xFF80, 0xFF80,\n    0xFF80, 0xFF80, 0xFF80, 0xFF80, 0xFF7F, 0xFF7F, 0xFF7F, 0xFF7F,\n    0xFF7F, 0xFF7F, 0xFF7F, 0xFF7F, 0xFF7F, 0xFF7E, 0xFF7E, 0xFF7E,\n    0xFF7E, 0xFF7E, 0xFF7E, 0xFF7E, 0xFF7E, 0xFF7E, 0xFF7D, 0xFF7D,\n    0xFF7D, 0xFF7D, 0xFF7D, 0xFF7D, 0xFF7D, 0xFF7D, 0xFF7D, 0xFF7D,\n    0xFF7C, 0xFF7C, 0xFF7C, 0xFF7C, 0xFF7C, 0xFF7C, 0xFF7C, 0xFF7C,\n    0xFF7C, 0xFF7C, 0xFF7C, 0xFF7C, 0xFF7C, 0xFF7B, 0xFF7B, 0xFF7B,\n    0xFF7B, 0xFF7B, 0xFF7B, 0xFF7B, 0xFF7B, 0xFF7B, 0xFF7B, 0xFF7B,\n    0xFF7B, 0xFF7B, 0xFF7B, 0xFF7B, 0xFF7B, 0xFF7B, 0xFF7B, 0xFF7C,\n    0xFF7C, 0xFF7C, 0xFF7C, 0xFF7C, 0xFF7C, 0xFF7C, 0xFF7C, 0xFF7C,\n    0xFF7C, 0xFF7D, 0xFF7D, 0xFF7D, 0xFF7D, 0xFF7D, 0xFF7D, 0xFF7E,\n    0xFF7E, 0xFF7E, 0xFF7E, 0xFF7E, 0xFF7F, 0xFF7F, 0xFF7F, 0xFF7F,\n    0xFF80, 0xFF80, 0xFF80, 0xFF81, 0xFF81, 0xFF8B, 0xFFA0, 0xFFAF,\n    0xFFA9, 0xFF8E, 0xFF69, 0xFF3D, 0xFF0D, 0xFEDC, 0xFEAC, 0xFE81,\n    0xFE5E, 0xFE45, 0xFE39, 0xFE3E, 0x004C, 0x03C4, 0x0327, 0x009C,\n    0x0058, 0x0031, 0x001F, 0x001D, 0x0025, 0x0030, 0x0037, 0x0035,\n    0x002D, 0x0025, 0x001D, 0x0016, 0x0010, 0x000A, 0x0006, 0x0002,\n    0x0000, 0x0000, 0xFF5B, 0xFF5B, 0xFF5B, 0xFF5B, 0xFF5B, 0xFF5B,\n    0xFF5B, 0xFF5B, 0xFF5B, 0xFF5B, 0xFF5B, 0xFF5B, 0xFF5B, 0xFF5B,\n    0xFF5B, 0xFF5B, 0xFF5B, 0xFF5B, 0xFF5B, 0xFF5B, 0xFF5B, 0xFF5B,\n    0xFF5B, 0xFF5B, 0xFF5B, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C,\n    0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C,\n    0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C,\n    0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C,\n    0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C,\n    0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C,\n    0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C,\n    0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C,\n    0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C,\n    0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C,\n    0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C, 0xFF5C,\n    0xFF5B, 0xFF5B, 0xFF5B, 0xFF5B, 0xFF5B, 0xFF5B, 0xFF5B, 0xFF5A,\n    0xFF59, 0xFF58, 0xFF56, 0xFF55, 0xFF53, 0xFF52, 0xFF50, 0xFF4F,\n    0xFF4D, 0xFF4C, 0xFF4A, 0xFF49, 0xFF48, 0xFF6C, 0xFF62, 0xFF50,\n    0xFF4C, 0xFF49, 0xFF46, 0xFF43, 0xFF41, 0xFF3F, 0xFF3D, 0xFF3B,\n    0xFF39, 0xFF38, 0xFF36, 0xFF35, 0xFF33, 0xFF32, 0xFF31, 0xFF30,\n    0xFF30, 0xFF30, 0xE4BD, 0xE4BD, 0xE4BE, 0xE4BF, 0xE4C0, 0xE4C1,\n    0xE4C3, 0xE4C4, 0xE4C7, 0xE4C9, 0xE4CC, 0xE4CE, 0xE4D2, 0xE4D5,\n    0xE4D8, 0xE4DC, 0xE4E0, 0xE4E4, 0xE4E8, 0xE4ED, 0xE4F1, 0xE4F6,\n    0xE4FB, 0xE500, 0xE505, 0xE50B, 0xE510, 0xE515, 0xE51B, 0xE521,\n    0xE526, 0xE52C, 0xE532, 0xE538, 0xE53E, 0xE544, 0xE54A, 0xE550,\n    0xE556, 0xE55C, 0xE562, 0xE568, 0xE56E, 0xE574, 0xE57A, 0xE580,\n    0xE586, 0xE58B, 0xE591, 0xE596, 0xE59C, 0xE5A1, 0xE5A7, 0xE5AC,\n    0xE5B1, 0xE5B6, 0xE5BA, 0xE5BF, 0xE5C3, 0xE5C8, 0xE5CC, 0xE5D0,\n    0xE5D4, 0xE5D7, 0xE5DA, 0xE5DD, 0xE5E0, 0xE5E3, 0xE5E5, 0xE5E7,\n    0xE5E9, 0xE5EB, 0xE5EC, 0xE5ED, 0xE5EE, 0xE5EF, 0xE5EF, 0xE5EF,\n    0xE5EE, 0xE5ED, 0xE5EC, 0xE5EB, 0xE5E9, 0xE5E7, 0xE5E4, 0xE5E1,\n    0xE5DD, 0xE5DA, 0xE5D5, 0xE5D1, 0xE5CC, 0xE5C6, 0xE5C0, 0xE5BA,\n    0xE5B3, 0xE5AC, 0xE5A4, 0xE59C, 0xE593, 0xE58A, 0xE580, 0xE576,\n    0xE56B, 0xE560, 0xE554, 0xE547, 0xE53A, 0xE52D, 0xE51E, 0xE510,\n    0xE500, 0xE4F0, 0xE4E0, 0xE4CF, 0xE4BD, 0xE3E8, 0xE1E4, 0xDF38,\n    0xDC66, 0xD99E, 0xD6B7, 0xD3B9, 0xD0A8, 0xCD8B, 0xCA68, 0xC746,\n    0xC42B, 0xC11D, 0xBE21, 0xBB3F, 0xB9F4, 0xB57F, 0xB4F2, 0xB794,\n    0xB89C, 0xB98A, 0xBA67, 0xBB3B, 0xBC0C, 0xBCE2, 0xBDC5, 0xBEBC,\n    0xBFDE, 0xC131, 0xC2A0, 0xC41B, 0xC58F, 0xC6E8, 0xC816, 0xC903,\n    0xC9A0, 0xC9D8, 0x1624, 0x1624, 0x1624, 0x1625, 0x1626, 0x1628,\n    0x162A, 0x162C, 0x162E, 0x1630, 0x1633, 0x1636, 0x163A, 0x163D,\n    0x1641, 0x1645, 0x1649, 0x164E, 0x1652, 0x1657, 0x165C, 0x1661,\n    0x1666, 0x166C, 0x1671, 0x1677, 0x167D, 0x1683, 0x1689, 0x168F,\n    0x1695, 0x169B, 0x16A1, 0x16A8, 0x16AE, 0x16B5, 0x16BB, 0x16C2,\n    0x16C8, 0x16CF, 0x16D5, 0x16DB, 0x16E2, 0x16E8, 0x16EF, 0x16F5,\n    0x16FB, 0x1701, 0x1707, 0x170D, 0x1713, 0x1719, 0x171F, 0x1724,\n    0x172A, 0x172F, 0x1734, 0x1739, 0x173E, 0x1742, 0x1747, 0x174B,\n    0x174F, 0x1753, 0x1756, 0x175A, 0x175D, 0x1760, 0x1762, 0x1764,\n    0x1766, 0x1768, 0x176A, 0x176B, 0x176C, 0x176C, 0x176C, 0x176C,\n    0x176C, 0x176B, 0x1769, 0x1768, 0x1766, 0x1763, 0x1761, 0x175D,\n    0x175A, 0x1756, 0x1751, 0x174C, 0x1747, 0x1741, 0x173A, 0x1734,\n    0x172C, 0x1724, 0x171C, 0x1713, 0x170A, 0x1700, 0x16F5, 0x16EA,\n    0x16DF, 0x16D2, 0x16C6, 0x16B8, 0x16AA, 0x169C, 0x168C, 0x167D,\n    0x166C, 0x165B, 0x1649, 0x1637, 0x1624, 0x146C, 0x10E3, 0x0DBD,\n    0x0D2D, 0x0ECC, 0x10B6, 0x12E8, 0x155D, 0x1811, 0x1B00, 0x1E26,\n    0x217E, 0x2505, 0x28B6, 0x2C8C, 0x3CC8, 0x3FE8, 0x4039, 0x3F19,\n    0x3D7C, 0x3B7D, 0x393A, 0x36CC, 0x3451, 0x31E4, 0x2FA0, 0x2DA2,\n    0x2BBA, 0x29B4, 0x27A3, 0x259B, 0x23AE, 0x21F0, 0x2074, 0x1F4D,\n    0x1E8E, 0x1E4A, 0x0D37, 0x0D37, 0x0D37, 0x0D37, 0x0D38, 0x0D38,\n    0x0D39, 0x0D3A, 0x0D3B, 0x0D3C, 0x0D3E, 0x0D3F, 0x0D40, 0x0D42,\n    0x0D44, 0x0D45, 0x0D47, 0x0D49, 0x0D4B, 0x0D4D, 0x0D4F, 0x0D52,\n    0x0D54, 0x0D56, 0x0D59, 0x0D5B, 0x0D5E, 0x0D60, 0x0D63, 0x0D66,\n    0x0D68, 0x0D6B, 0x0D6E, 0x0D71, 0x0D73, 0x0D76, 0x0D79, 0x0D7C,\n    0x0D7F, 0x0D82, 0x0D84, 0x0D87, 0x0D8A, 0x0D8D, 0x0D90, 0x0D92,\n    0x0D95, 0x0D98, 0x0D9B, 0x0D9D, 0x0DA0, 0x0DA2, 0x0DA5, 0x0DA7,\n    0x0DAA, 0x0DAC, 0x0DAE, 0x0DB0, 0x0DB2, 0x0DB4, 0x0DB6, 0x0DB8,\n    0x0DBA, 0x0DBC, 0x0DBD, 0x0DBF, 0x0DC0, 0x0DC1, 0x0DC2, 0x0DC3,\n    0x0DC4, 0x0DC5, 0x0DC6, 0x0DC6, 0x0DC6, 0x0DC7, 0x0DC7, 0x0DC7,\n    0x0DC6, 0x0DC6, 0x0DC6, 0x0DC5, 0x0DC4, 0x0DC3, 0x0DC2, 0x0DC0,\n    0x0DBF, 0x0DBD, 0x0DBB, 0x0DB9, 0x0DB6, 0x0DB4, 0x0DB1, 0x0DAE,\n    0x0DAB, 0x0DA7, 0x0DA4, 0x0DA0, 0x0D9C, 0x0D97, 0x0D93, 0x0D8E,\n    0x0D89, 0x0D83, 0x0D7E, 0x0D78, 0x0D72, 0x0D6B, 0x0D65, 0x0D5E,\n    0x0D56, 0x0D4F, 0x0D47, 0x0D3F, 0x0D37, 0x0CA2, 0x0B5F, 0x0A0C,\n    0x0949, 0x0916, 0x0906, 0x0910, 0x092B, 0x094F, 0x0973, 0x098F,\n    0x0999, 0x098A, 0x0959, 0x08FC, 0x03BA, 0x0294, 0x0252, 0x0291,\n    0x0356, 0x0499, 0x05E0, 0x06F6, 0x0802, 0x0915, 0x0A3F, 0x0B8F,\n    0x0D23, 0x0EFA, 0x10FA, 0x130A, 0x150F, 0x16F1, 0x1895, 0x19E0,\n    0x1ABA, 0x1B09, 0x0693, 0x0693, 0x0693, 0x0692, 0x0692, 0x0692,\n    0x0692, 0x0691, 0x0691, 0x0691, 0x0690, 0x0690, 0x068F, 0x068E,\n    0x068E, 0x068D, 0x068C, 0x068C, 0x068B, 0x068A, 0x0689, 0x0688,\n    0x0687, 0x0687, 0x0686, 0x0685, 0x0684, 0x0683, 0x0682, 0x0681,\n    0x0680, 0x067F, 0x067E, 0x067C, 0x067B, 0x067A, 0x0679, 0x0678,\n    0x0677, 0x0676, 0x0675, 0x0674, 0x0673, 0x0672, 0x0671, 0x066F,\n    0x066E, 0x066D, 0x066C, 0x066B, 0x066A, 0x0669, 0x0668, 0x0668,\n    0x0667, 0x0666, 0x0665, 0x0664, 0x0663, 0x0662, 0x0662, 0x0661,\n    0x0660, 0x0660, 0x065F, 0x065F, 0x065E, 0x065E, 0x065D, 0x065D,\n    0x065C, 0x065C, 0x065C, 0x065C, 0x065C, 0x065B, 0x065B, 0x065B,\n    0x065C, 0x065C, 0x065C, 0x065C, 0x065C, 0x065D, 0x065D, 0x065E,\n    0x065F, 0x065F, 0x0660, 0x0661, 0x0662, 0x0663, 0x0664, 0x0665,\n    0x0666, 0x0668, 0x0669, 0x066A, 0x066C, 0x066E, 0x066F, 0x0671,\n    0x0673, 0x0675, 0x0677, 0x067A, 0x067C, 0x067F, 0x0681, 0x0684,\n    0x0687, 0x0689, 0x068C, 0x0690, 0x0693, 0x06DB, 0x0770, 0x07F7,\n    0x0815, 0x07CE, 0x076A, 0x06F0, 0x0666, 0x05D5, 0x0544, 0x04B9,\n    0x043C, 0x03D4, 0x0389, 0x0362, 0x072B, 0x0860, 0x0900, 0x0964,\n    0x098F, 0x097D, 0x097E, 0x099F, 0x09BD, 0x09E8, 0x0A2C, 0x0A98,\n    0x0B33, 0x0BF3, 0x0CCC, 0x0DB0, 0x0E94, 0x0F6A, 0x1027, 0x10BD,\n    0x1120, 0x1144, 0xB490, 0xB490, 0xB492, 0xB494, 0xB497, 0xB49B,\n    0xB49F, 0xB4A5, 0xB4AB, 0xB4B1, 0xB4B9, 0xB4C1, 0xB4CA, 0xB4D3,\n    0xB4DD, 0xB4E8, 0xB4F3, 0xB4FE, 0xB50A, 0xB517, 0xB524, 0xB532,\n    0xB53F, 0xB54E, 0xB55C, 0xB56B, 0xB57A, 0xB58A, 0xB59A, 0xB5AA,\n    0xB5BA, 0xB5CA, 0xB5DB, 0xB5EC, 0xB5FC, 0xB60D, 0xB61E, 0xB62F,\n    0xB641, 0xB652, 0xB663, 0xB674, 0xB685, 0xB695, 0xB6A6, 0xB6B7,\n    0xB6C7, 0xB6D7, 0xB6E7, 0xB6F7, 0xB707, 0xB716, 0xB725, 0xB733,\n    0xB742, 0xB750, 0xB75D, 0xB76A, 0xB777, 0xB783, 0xB78E, 0xB799,\n    0xB7A4, 0xB7AE, 0xB7B7, 0xB7C0, 0xB7C8, 0xB7D0, 0xB7D6, 0xB7DC,\n    0xB7E2, 0xB7E6, 0xB7EA, 0xB7ED, 0xB7EF, 0xB7F1, 0xB7F1, 0xB7F1,\n    0xB7EF, 0xB7ED, 0xB7EA, 0xB7E5, 0xB7E0, 0xB7DA, 0xB7D2, 0xB7CA,\n    0xB7C0, 0xB7B5, 0xB7AA, 0xB79C, 0xB78E, 0xB77F, 0xB76E, 0xB75C,\n    0xB748, 0xB734, 0xB71E, 0xB706, 0xB6ED, 0xB6D3, 0xB6B8, 0xB69A,\n    0xB67C, 0xB65C, 0xB63A, 0xB617, 0xB5F2, 0xB5CB, 0xB5A3, 0xB57A,\n    0xB54E, 0xB521, 0xB4F2, 0xB4C2, 0xB48F, 0xB131, 0xA9D0, 0xA1E8,\n    0x9CF5, 0x9AFC, 0x999A, 0x98AB, 0x980C, 0x979D, 0x9739, 0x96C0,\n    0x960E, 0x9500, 0x9376, 0x914B, 0x7E31, 0x7A06, 0x791E, 0x7A67,\n    0x7E5D, 0x847D, 0x8A2D, 0x8EF8, 0x93DD, 0x987A, 0x9C6F, 0x9F5A,\n    0xA18D, 0xA39A, 0xA57B, 0xA72B, 0xA8A6, 0xA9E7, 0xAAE8, 0xABA6,\n    0xAC1C, 0xAC44, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0016, 0x003C, 0x0044,\n    0x0000, 0xFF71, 0xFEBC, 0xFDEE, 0xFD0F, 0xFC2B, 0xFB4D, 0xFA7F,\n    0xF9CD, 0xF940, 0xF8E4, 0xF8C3, 0x0000, 0x0138, 0xFFC4, 0x00B9,\n    0x00BA, 0x00B8, 0x00B2, 0x00A9, 0x009E, 0x0091, 0x0083, 0x0073,\n    0x0063, 0x0053, 0x0043, 0x0034, 0x0026, 0x0019, 0x000F, 0x0006,\n    0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFD, 0xFFF7, 0xFFF6,\n    0x0000, 0x0017, 0x0033, 0x0055, 0x0078, 0x009D, 0x00C1, 0x00E2,\n    0x00FE, 0x0115, 0x0124, 0x0129, 0x0000, 0xFFDF, 0xFFE3, 0xFFE1,\n    0xFFE2, 0xFFE4, 0xFFE6, 0xFFE9, 0xFFEB, 0xFFED, 0xFFEF, 0xFFF2,\n    0xFFF4, 0xFFF6, 0xFFF8, 0xFFFA, 0xFFFC, 0xFFFE, 0xFFFF, 0x0000,\n    0x0000, 0x0000, 0xE041, 0xE041, 0xE041, 0xE041, 0xE041, 0xE042,\n    0xE043, 0xE045, 0xE046, 0xE048, 0xE04B, 0xE04D, 0xE050, 0xE053,\n    0xE056, 0xE05A, 0xE05D, 0xE061, 0xE065, 0xE06A, 0xE06E, 0xE073,\n    0xE078, 0xE07D, 0xE082, 0xE087, 0xE08C, 0xE092, 0xE098, 0xE09D,\n    0xE0A3, 0xE0A9, 0xE0AF, 0xE0B5, 0xE0BB, 0xE0C1, 0xE0C7, 0xE0CE,\n    0xE0D4, 0xE0DA, 0xE0E0, 0xE0E7, 0xE0ED, 0xE0F3, 0xE0F9, 0xE0FF,\n    0xE106, 0xE10C, 0xE111, 0xE117, 0xE11D, 0xE123, 0xE128, 0xE12E,\n    0xE133, 0xE138, 0xE13E, 0xE142, 0xE147, 0xE14C, 0xE150, 0xE155,\n    0xE159, 0xE15C, 0xE160, 0xE163, 0xE167, 0xE16A, 0xE16C, 0xE16F,\n    0xE171, 0xE173, 0xE174, 0xE176, 0xE177, 0xE177, 0xE178, 0xE178,\n    0xE178, 0xE177, 0xE176, 0xE175, 0xE173, 0xE171, 0xE16E, 0xE16B,\n    0xE168, 0xE164, 0xE160, 0xE15C, 0xE157, 0xE151, 0xE14B, 0xE145,\n    0xE13E, 0xE136, 0xE12E, 0xE126, 0xE11D, 0xE114, 0xE10A, 0xE0FF,\n    0xE0F4, 0xE0E8, 0xE0DC, 0xE0CF, 0xE0C2, 0xE0B4, 0xE0A5, 0xE096,\n    0xE086, 0xE076, 0xE065, 0xE053, 0xE041, 0xDF57, 0xDD2F, 0xDA71,\n    0xD7C3, 0xD554, 0xD2E3, 0xD06D, 0xCDF1, 0xCB6C, 0xC8DC, 0xC63F,\n    0xC392, 0xC0D4, 0xBE02, 0xBB1A, 0xB3C8, 0xB01F, 0xB241, 0xB53D,\n    0xB5F0, 0xB6AA, 0xB768, 0xB828, 0xB8E9, 0xB9A9, 0xBA64, 0xBB1A,\n    0xBBC9, 0xBC6D, 0xBD06, 0xBD91, 0xBE0C, 0xBE76, 0xBECB, 0xBF0B,\n    0xBF33, 0xBF40, 0x36A0, 0x2818, 0x20BB, 0x208B, 0x205E, 0x2033,\n    0x200A, 0x1FE4, 0x1FC0, 0x1F9F, 0x1F7F, 0x1F62, 0x1F47, 0x1F2E,\n    0x1F17, 0x1F02, 0x1EEF, 0x1EDD, 0x1ECE, 0x1EC1, 0x1EB5, 0x1EAB,\n    0x1EA3, 0x1E9C, 0x1E97, 0x1E94, 0x1E92, 0x1E91, 0x1E92, 0x1E95,\n    0x1E98, 0x1E9D, 0x1EA3, 0x1EAB, 0x1EB3, 0x1EBD, 0x1EC8, 0x1ED3,\n    0x1EE0, 0x1EEE, 0x1EFC, 0x1F0C, 0x1F1C, 0x1F2D, 0x1F3F, 0x1F51,\n    0x1F64, 0x1F78, 0x1F8C, 0x1FA0, 0x1FB5, 0x1FCB, 0x1FE1, 0x1FF7,\n    0x200D, 0x2024, 0x203B, 0x2052, 0x2069, 0x2080, 0x2097, 0x20AE,\n    0x20C5, 0x20DC, 0x20F3, 0x2109, 0x2120, 0x2136, 0x214B, 0x2160,\n    0x2175, 0x2189, 0x219D, 0x21B0, 0x21C3, 0x21D5, 0x21E6, 0x21F7,\n    0x2207, 0x2215, 0x2223, 0x2231, 0x223D, 0x2248, 0x2252, 0x225B,\n    0x2263, 0x2269, 0x226F, 0x2273, 0x2276, 0x2277, 0x2277, 0x2276,\n    0x2273, 0x226F, 0x2269, 0x2261, 0x2258, 0x224D, 0x2240, 0x2231,\n    0x2221, 0x220E, 0x21FA, 0x21E4, 0x21CC, 0x21B1, 0x2195, 0x2176,\n    0x2156, 0x2132, 0x210D, 0x20E5, 0x20BB, 0x1D72, 0x1681, 0x0FC7,\n    0x0D25, 0x0E16, 0x0F7F, 0x1156, 0x1392, 0x162B, 0x1918, 0x1C50,\n    0x1FCB, 0x237F, 0x2764, 0x2B72, 0x3F5C, 0x4201, 0x4113, 0x3F53,\n    0x3DF9, 0x3C73, 0x3AC8, 0x3900, 0x3723, 0x3538, 0x3347, 0x3159,\n    0x2F74, 0x2DA2, 0x2BE8, 0x2A51, 0x28E2, 0x27A5, 0x26A0, 0x25DD,\n    0x2561, 0x2537, 0xF61D, 0xEF73, 0xEC13, 0xEBFD, 0xEBE7, 0xEBD1,\n    0xEBBC, 0xEBA8, 0xEB94, 0xEB80, 0xEB6D, 0xEB5B, 0xEB48, 0xEB37,\n    0xEB25, 0xEB14, 0xEB04, 0xEAF4, 0xEAE4, 0xEAD5, 0xEAC6, 0xEAB8,\n    0xEAAA, 0xEA9D, 0xEA90, 0xEA83, 0xEA77, 0xEA6B, 0xEA60, 0xEA55,\n    0xEA4B, 0xEA41, 0xEA37, 0xEA2E, 0xEA25, 0xEA1C, 0xEA14, 0xEA0D,\n    0xEA06, 0xE9FF, 0xE9F9, 0xE9F3, 0xE9ED, 0xE9E8, 0xE9E3, 0xE9DF,\n    0xE9DB, 0xE9D7, 0xE9D4, 0xE9D1, 0xE9CF, 0xE9CD, 0xE9CB, 0xE9CA,\n    0xE9C9, 0xE9C8, 0xE9C8, 0xE9C9, 0xE9C9, 0xE9CA, 0xE9CC, 0xE9CD,\n    0xE9CF, 0xE9D2, 0xE9D5, 0xE9D8, 0xE9DB, 0xE9DF, 0xE9E4, 0xE9E8,\n    0xE9ED, 0xE9F3, 0xE9F8, 0xE9FE, 0xEA05, 0xEA0C, 0xEA13, 0xEA1A,\n    0xEA22, 0xEA2A, 0xEA33, 0xEA3B, 0xEA45, 0xEA4E, 0xEA58, 0xEA62,\n    0xEA6D, 0xEA77, 0xEA83, 0xEA8E, 0xEA9A, 0xEAA6, 0xEAB2, 0xEABF,\n    0xEACC, 0xEADA, 0xEAE7, 0xEAF6, 0xEB04, 0xEB13, 0xEB22, 0xEB31,\n    0xEB40, 0xEB50, 0xEB61, 0xEB71, 0xEB82, 0xEB93, 0xEBA4, 0xEBB6,\n    0xEBC8, 0xEBDA, 0xEBED, 0xEC00, 0xEC13, 0xED03, 0xEF3A, 0xF20D,\n    0xF4D0, 0xF825, 0xFBD9, 0xFE09, 0xFEAA, 0xFF02, 0xFF1C, 0xFF06,\n    0xFECD, 0xFE7F, 0xFE27, 0xFDD4, 0xFB58, 0xFB76, 0xFC0F, 0xFC3D,\n    0xFB94, 0xFA82, 0xF95D, 0xF87A, 0xF7BF, 0xF6E6, 0xF5A8, 0xF3BF,\n    0xF107, 0xEDB1, 0xE9F2, 0xE603, 0xE218, 0xDE6A, 0xDB2E, 0xD89B,\n    0xD6E7, 0xD64A, 0xEF35, 0xF1D1, 0xF323, 0xF32C, 0xF334, 0xF33C,\n    0xF344, 0xF34B, 0xF352, 0xF358, 0xF35F, 0xF365, 0xF36A, 0xF370,\n    0xF375, 0xF37A, 0xF37E, 0xF382, 0xF386, 0xF38A, 0xF38D, 0xF391,\n    0xF393, 0xF396, 0xF398, 0xF39B, 0xF39C, 0xF39E, 0xF3A0, 0xF3A1,\n    0xF3A2, 0xF3A3, 0xF3A3, 0xF3A4, 0xF3A4, 0xF3A4, 0xF3A4, 0xF3A4,\n    0xF3A3, 0xF3A3, 0xF3A2, 0xF3A1, 0xF3A0, 0xF39E, 0xF39D, 0xF39C,\n    0xF39A, 0xF398, 0xF396, 0xF394, 0xF392, 0xF390, 0xF38E, 0xF38B,\n    0xF389, 0xF386, 0xF384, 0xF381, 0xF37E, 0xF37B, 0xF378, 0xF376,\n    0xF373, 0xF370, 0xF36D, 0xF36A, 0xF366, 0xF363, 0xF360, 0xF35D,\n    0xF35A, 0xF357, 0xF354, 0xF351, 0xF34E, 0xF34B, 0xF348, 0xF345,\n    0xF342, 0xF33F, 0xF33C, 0xF339, 0xF337, 0xF334, 0xF332, 0xF32F,\n    0xF32D, 0xF32B, 0xF328, 0xF326, 0xF324, 0xF322, 0xF321, 0xF31F,\n    0xF31E, 0xF31C, 0xF31B, 0xF31A, 0xF319, 0xF318, 0xF318, 0xF317,\n    0xF317, 0xF317, 0xF317, 0xF317, 0xF318, 0xF318, 0xF319, 0xF31A,\n    0xF31C, 0xF31D, 0xF31F, 0xF321, 0xF323, 0xF334, 0xF365, 0xF3B9,\n    0xF431, 0xF520, 0xF653, 0xF707, 0xF71D, 0xF708, 0xF6D7, 0xF69A,\n    0xF660, 0xF63A, 0xF636, 0xF665, 0xF9BD, 0xF9B7, 0xF90A, 0xF86E,\n    0xF836, 0xF810, 0xF7BF, 0xF73A, 0xF6A4, 0xF5FF, 0xF54C, 0xF48D,\n    0xF3B3, 0xF2B5, 0xF1A2, 0xF087, 0xEF72, 0xEE70, 0xED90, 0xECDF,\n    0xEC6B, 0xEC41, 0x8FF8, 0xA372, 0xAD50, 0xAD91, 0xADD0, 0xAE0E,\n    0xAE4A, 0xAE84, 0xAEBD, 0xAEF5, 0xAF2A, 0xAF5E, 0xAF91, 0xAFC2,\n    0xAFF2, 0xB020, 0xB04C, 0xB077, 0xB0A1, 0xB0C9, 0xB0EF, 0xB114,\n    0xB138, 0xB15B, 0xB17C, 0xB19B, 0xB1B9, 0xB1D6, 0xB1F2, 0xB20C,\n    0xB225, 0xB23C, 0xB253, 0xB268, 0xB27B, 0xB28E, 0xB29F, 0xB2AF,\n    0xB2BE, 0xB2CC, 0xB2D8, 0xB2E4, 0xB2EE, 0xB2F7, 0xB2FF, 0xB305,\n    0xB30B, 0xB310, 0xB313, 0xB315, 0xB317, 0xB317, 0xB317, 0xB315,\n    0xB312, 0xB30F, 0xB30A, 0xB304, 0xB2FE, 0xB2F6, 0xB2EE, 0xB2E5,\n    0xB2DB, 0xB2D0, 0xB2C4, 0xB2B7, 0xB2A9, 0xB29B, 0xB28C, 0xB27C,\n    0xB26B, 0xB25A, 0xB247, 0xB234, 0xB221, 0xB20C, 0xB1F7, 0xB1E1,\n    0xB1CB, 0xB1B3, 0xB19C, 0xB183, 0xB16A, 0xB150, 0xB136, 0xB11B,\n    0xB100, 0xB0E4, 0xB0C7, 0xB0AA, 0xB08D, 0xB06F, 0xB050, 0xB031,\n    0xB011, 0xAFF2, 0xAFD1, 0xAFB0, 0xAF8F, 0xAF6E, 0xAF4C, 0xAF29,\n    0xAF07, 0xAEE4, 0xAEC0, 0xAE9D, 0xAE79, 0xAE54, 0xAE30, 0xAE0B,\n    0xADE6, 0xADC1, 0xAD9B, 0xAD75, 0xAD50, 0xAB7E, 0xA72E, 0xA1A2,\n    0x9C1D, 0x9518, 0x8D34, 0x88F3, 0x88B3, 0x898E, 0x8B28, 0x8D23,\n    0x8F22, 0x90C7, 0x91B6, 0x9191, 0x81C0, 0x7D39, 0x7B49, 0x7BC2,\n    0x7F91, 0x85C2, 0x8B4E, 0x8F77, 0x9371, 0x972B, 0x9A95, 0x9D9E,\n    0xA092, 0xA3B9, 0xA6F2, 0xAA20, 0xAD25, 0xAFE1, 0xB236, 0xB406,\n    0xB533, 0xB59E, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001,\n    0x4171, 0xBF5F, 0xF77F, 0xF765, 0xF748, 0xF72B, 0xF714, 0xF706,\n    0xF6F5, 0xF747, 0xF820, 0xF924, 0xFA39, 0xFB47, 0xFC35, 0xFCEC,\n    0xFD59, 0xFD8B, 0xFD97, 0xFD91, 0xFD8E, 0xFD8C, 0xFD7D, 0xFD66,\n    0xFD4E, 0xFD3B, 0xFD31, 0xFCF8, 0xFC8A, 0xFC40, 0xFC72, 0xFD76,\n    0xFF4C, 0x019F, 0x0454, 0x0749, 0x0A5E, 0x0D76, 0x1070, 0x132D,\n    0x158D, 0x1772, 0x18BB, 0x194A, 0x18FF, 0x15F1, 0x0F4E, 0x0697,\n    0xFD4F, 0xF4F4, 0xEF09, 0xEBDA, 0xEABF, 0xEBC9, 0xEF09, 0xF44F,\n    0xFB04, 0x029E, 0x0A99, 0x126A, 0x198A, 0x1F71, 0x2397, 0x2640,\n    0x2817, 0x292D, 0x2994, 0x295C, 0x2895, 0x2752, 0x25A2, 0x2397,\n    0x1FE0, 0x19E9, 0x12D8, 0x0BD5, 0x0607, 0x0296, 0x00F3, 0xFFC1,\n    0xFEEF, 0xFE72, 0xFE3B, 0xFE3D, 0xFE6A, 0xFEB4, 0xFF0E, 0xFF6A,\n    0xFFBA, 0xFFF1, 0x0000, 0xFFF8, 0xFFF0, 0xFFE9, 0xFFE2, 0xFFDC,\n    0xFFD6, 0xFFD0, 0xFFCB, 0xFFC7, 0xFFC3, 0xFFBF, 0xFFBC, 0xFFB9,\n    0xFFB7, 0xFFB5, 0xFFB3, 0xFFB1, 0xFFB0, 0xFFB0, 0xFFAF, 0xFFAF,\n    0xFFAF, 0xFFB0, 0xFFB0, 0xFFB1, 0xFFB2, 0xFFB4, 0xFFB5, 0xFFB7,\n    0xFFB9, 0xFFBB, 0xFFBD, 0xFFBF, 0xFFC2, 0xFFC4, 0xFFC7, 0xFFCA,\n    0xFFCC, 0xFFCF, 0xFFD2, 0xFFD5, 0xFFD8, 0xFFDB, 0xFFDE, 0xFFE0,\n    0xFFE3, 0xFFE6, 0xFFE9, 0xFFEB, 0xFFEE, 0xFFF0, 0xFFF3, 0xFFF5,\n    0xFFF7, 0xFFF9, 0xFFFA, 0xFFFC, 0xFFFD, 0xFFFE, 0xFFFF, 0x0000,\n    0x0000, 0x0000, 0x0410, 0x03CF, 0x0386, 0x033E, 0x0303, 0x02E2,\n    0x033A, 0x0396, 0x037D, 0x034E, 0x0314, 0x02D9, 0x02AB, 0x0292,\n    0x029B, 0x02BF, 0x02EE, 0x0318, 0x032E, 0x032D, 0x0320, 0x030C,\n    0x02F7, 0x02E6, 0x02DE, 0x02FD, 0x0340, 0x037A, 0x037D, 0x031B,\n    0x0269, 0x019C, 0x00B9, 0xFFC6, 0xFEC6, 0xFDBF, 0xFCB6, 0xFBAF,\n    0xFAB1, 0xF9BF, 0xF8E0, 0xF817, 0xF76A, 0xF6FC, 0xF6DE, 0xF6F3,\n    0xF724, 0xF754, 0xF76A, 0xF76A, 0xF76A, 0xF76A, 0xF76A, 0xF76A,\n    0xF76A, 0xF76A, 0xF76A, 0xF76A, 0xF76A, 0xF76A, 0xF76A, 0xF76A,\n    0xF76A, 0xF76A, 0xF76A, 0xF76A, 0xF76A, 0xF76A, 0xF76A, 0xF76A,\n    0xF75A, 0xF736, 0xF713, 0xF703, 0xF719, 0xF76A, 0xF7EF, 0xF894,\n    0xF951, 0xFA1F, 0xFAF8, 0xFBD5, 0xFCAE, 0xFD7D, 0xFE3B, 0xFEE2,\n    0xFF69, 0xFFCB, 0x0000, 0x001C, 0x0036, 0x004E, 0x0065, 0x007A,\n    0x008E, 0x00A0, 0x00B0, 0x00BF, 0x00CC, 0x00D8, 0x00E3, 0x00EC,\n    0x00F5, 0x00FB, 0x0101, 0x0106, 0x0109, 0x010C, 0x010D, 0x010E,\n    0x010D, 0x010C, 0x010A, 0x0107, 0x0103, 0x00FF, 0x00FA, 0x00F4,\n    0x00EE, 0x00E7, 0x00E0, 0x00D8, 0x00D0, 0x00C8, 0x00BF, 0x00B6,\n    0x00AD, 0x00A3, 0x009A, 0x0090, 0x0087, 0x007D, 0x0073, 0x006A,\n    0x0060, 0x0057, 0x004E, 0x0046, 0x003D, 0x0035, 0x002D, 0x0026,\n    0x001F, 0x0019, 0x0014, 0x000E, 0x000A, 0x0006, 0x0003, 0x0001,\n    0x0000, 0x0000, 0x1AEA, 0x1A44, 0x19ED, 0x194F, 0x17D5, 0x14E9,\n    0x1635, 0x181A, 0x1434, 0x0EB9, 0x0904, 0x046E, 0x0253, 0x02F2,\n    0x0538, 0x0881, 0x0C2C, 0x0F97, 0x121E, 0x131F, 0x121A, 0x0F98,\n    0x0C87, 0x09D9, 0x087A, 0x089C, 0x099E, 0x0B39, 0x0D26, 0x0F1F,\n    0x10FC, 0x12C7, 0x147F, 0x1625, 0x17B8, 0x193A, 0x1AA9, 0x1C07,\n    0x1D52, 0x1E8C, 0x1FB3, 0x20CA, 0x21CE, 0x227D, 0x22AE, 0x228B,\n    0x223E, 0x21F1, 0x21CE, 0x21CE, 0x21CE, 0x21CE, 0x21CE, 0x21CE,\n    0x21CE, 0x21CE, 0x21CE, 0x21CE, 0x21CE, 0x21CE, 0x21CE, 0x21CE,\n    0x21CE, 0x21CE, 0x21CE, 0x21CE, 0x21CE, 0x21CE, 0x21CE, 0x21CE,\n    0x21F5, 0x224A, 0x22A0, 0x22C7, 0x2290, 0x21CE, 0x209A, 0x1F32,\n    0x1DA1, 0x1BF0, 0x1A27, 0x1851, 0x1677, 0x14A1, 0x12DA, 0x112B,\n    0x0F9D, 0x0E39, 0x0D09, 0x0C81, 0x0CC8, 0x0D79, 0x0E2B, 0x0E77,\n    0x0DE8, 0x0C94, 0x0AE6, 0x0948, 0x0825, 0x07F2, 0x0891, 0x0992,\n    0x0A85, 0x0AF9, 0x0A63, 0x08E3, 0x0707, 0x0560, 0x047C, 0x047B,\n    0x04F7, 0x05B7, 0x0688, 0x0730, 0x077B, 0x06E4, 0x0574, 0x03C7,\n    0x0279, 0x0228, 0x02EA, 0x03DB, 0x0427, 0x0389, 0x023C, 0x0029,\n    0xFC6C, 0xF780, 0xF36B, 0xF232, 0xF5E7, 0xFCF1, 0x03CD, 0x06FB,\n    0x070A, 0x06E4, 0x068E, 0x0610, 0x056E, 0x04B1, 0x03DE, 0x02FC,\n    0x0211, 0x0124, 0x003B, 0xFF5C, 0xFE8E, 0xFDD7, 0xFD3D, 0xFCC8,\n    0xFC7C, 0xFC62, 0x09BB, 0x07E7, 0x05CE, 0x03A5, 0x01A4, 0x0000,\n    0xFFA8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFC, 0xFFF2, 0xFFE9,\n    0xFFE4, 0xFFEA, 0x0000, 0x002F, 0x0079, 0x00D9, 0x014A, 0x01C5,\n    0x0245, 0x02C4, 0x033E, 0x03AB, 0x0408, 0x044D, 0x0477, 0x047E,\n    0x045E, 0x0411, 0x0391, 0x02DA, 0x0105, 0xFDA3, 0xF957, 0xF4C7,\n    0xF099, 0xED71, 0xEBF6, 0xEBDB, 0xEC52, 0xED43, 0xEE94, 0xF02C,\n    0xF1F1, 0xF3CA, 0xF59D, 0xF751, 0xF8CD, 0xF9F7, 0xFAB5, 0xFB22,\n    0xFB69, 0xFB90, 0xFB9A, 0xFB8C, 0xFB6A, 0xFB38, 0xFAFB, 0xFAB8,\n    0xFA71, 0xFA2C, 0xF9ED, 0xF9B9, 0xF992, 0xF97F, 0xF96F, 0xF95A,\n    0xF948, 0xF944, 0xF959, 0xF991, 0xF9F6, 0xFABA, 0xFBE1, 0xFD33,\n    0xFE77, 0xFF74, 0xFFF4, 0x001C, 0x003E, 0x005A, 0x0070, 0x0081,\n    0x008C, 0x0093, 0x0095, 0x0093, 0x008E, 0x0085, 0x0079, 0x006B,\n    0x005B, 0x004A, 0x0037, 0x0023, 0x000F, 0xFFFC, 0xFFE9, 0xFFD6,\n    0xFFC4, 0xFFB3, 0xFFA5, 0xFF99, 0xFF90, 0xFF7D, 0xFF5A, 0xFF33,\n    0xFF13, 0xFF05, 0xFF07, 0xFF0D, 0xFF17, 0xFF23, 0xFF32, 0xFF41,\n    0xFF51, 0xFF61, 0xFF6F, 0xFF7B, 0xFF85, 0xFF8C, 0xFF94, 0xFF9D,\n    0xFFA5, 0xFFAD, 0xFFB5, 0xFFBD, 0xFFC5, 0xFFCC, 0xFFD3, 0xFFDA,\n    0xFFE1, 0xFFE7, 0xFFEC, 0xFFF1, 0xFFF6, 0xFFFA, 0xFFFC, 0xFFFF,\n    0x0000, 0x0000, 0x00BE, 0x009A, 0x0071, 0x0047, 0x0020, 0x0000,\n    0xFFFA, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000A, 0x0020, 0x0036,\n    0x0040, 0x0032, 0x0000, 0xFFAD, 0xFF46, 0xFED0, 0xFE4D, 0xFDC1,\n    0xFD2F, 0xFC9C, 0xFC0B, 0xFB7F, 0xFAFB, 0xFA84, 0xFA1C, 0xF9C7,\n    0xF98A, 0xF966, 0xF960, 0xF97C, 0xFA27, 0xFB9B, 0xFD8B, 0xFFAD,\n    0x01B2, 0x0351, 0x043D, 0x049C, 0x04CC, 0x04D5, 0x04BC, 0x0489,\n    0x0442, 0x03EE, 0x0394, 0x033A, 0x02E7, 0x02A1, 0x0271, 0x024D,\n    0x022A, 0x0207, 0x01E6, 0x01C4, 0x01A3, 0x0181, 0x0160, 0x013F,\n    0x011D, 0x00FB, 0x00D8, 0x00B5, 0x0091, 0x006C, 0x0044, 0x0019,\n    0xFFED, 0xFFBF, 0xFF91, 0xFF63, 0xFF38, 0xFF0A, 0xFED8, 0xFEA7,\n    0xFE7B, 0xFE5B, 0xFE4A, 0xFE44, 0xFE3E, 0xFE39, 0xFE36, 0xFE33,\n    0xFE31, 0xFE2F, 0xFE2E, 0xFE2E, 0xFE2E, 0xFE2F, 0xFE31, 0xFE32,\n    0xFE34, 0xFE37, 0xFE3A, 0xFE3D, 0xFE40, 0xFE43, 0xFE46, 0xFE49,\n    0xFE4D, 0xFE50, 0xFE53, 0xFE56, 0xFE59, 0xFE5E, 0xFE67, 0xFE74,\n    0xFE85, 0xFE99, 0xFEB1, 0xFECB, 0xFEE8, 0xFF07, 0xFF26, 0xFF44,\n    0xFF61, 0xFF7B, 0xFF93, 0xFFA6, 0xFFB4, 0xFFBF, 0xFFC8, 0xFFD1,\n    0xFFD8, 0xFFDF, 0xFFE5, 0xFFEA, 0xFFEF, 0xFFF3, 0xFFF6, 0xFFF9,\n    0xFFFB, 0xFFFD, 0xFFFE, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xFFBE, 0x03CF, 0x0862, 0x0D27, 0x11CC, 0x1600,\n    0x1A9F, 0x1AE3, 0x13F8, 0x0A63, 0x0064, 0xF83B, 0xF428, 0xF3E9,\n    0xF541, 0xF776, 0xF9CF, 0xFB93, 0xFC08, 0xFB00, 0xF920, 0xF6EC,\n    0xF4E6, 0xF392, 0xF374, 0xF401, 0xF45C, 0xF491, 0xF4A8, 0xF4AE,\n    0xF437, 0xF308, 0xF176, 0xEFD4, 0xEE75, 0xEDAD, 0xED6A, 0xED5E,\n    0xED84, 0xEDDA, 0xEE59, 0xEEFF, 0xEFC7, 0xF02C, 0xEFDC, 0xEF1D,\n    0xEE37, 0xED6E, 0xED0B, 0xECFA, 0xECF7, 0xED00, 0xED14, 0xED2F,\n    0xED4F, 0xED72, 0xED96, 0xEDB9, 0xEDD8, 0xEDF1, 0xEE01, 0xEE03,\n    0xEDF2, 0xEDD3, 0xEDAA, 0xED7D, 0xED4E, 0xED23, 0xECFF, 0xECE7,\n    0xECE0, 0xECED, 0xED13, 0xED56, 0xEDBB, 0xEE45, 0xEF35, 0xF0B1,\n    0xF297, 0xF4C5, 0xF718, 0xF96D, 0xFBA4, 0xFE0B, 0x00D3, 0x03B0,\n    0x0652, 0x086B, 0x09AC, 0x0A5C, 0x0AF8, 0x0B80, 0x0BF7, 0x0C5E,\n    0x0CB8, 0x0D05, 0x0D49, 0x0D83, 0x0DB7, 0x0DE6, 0x0E12, 0x0E3D,\n    0x0E68, 0x0E95, 0x0EC6, 0x0EFC, 0x0F3B, 0x0F82, 0x0FD4, 0x1033,\n    0x10A1, 0x111F, 0x11AF, 0x1253, 0x130D, 0x14E9, 0x1847, 0x1C23,\n    0x1F7D, 0x2152, 0x21EE, 0x2250, 0x227C, 0x2279, 0x224A, 0x21F6,\n    0x2182, 0x20F3, 0x204D, 0x1F98, 0x1ED7, 0x1DFF, 0x1D03, 0x1BE9,\n    0x1AB4, 0x196A, 0x1810, 0x16A9, 0x153C, 0x13CB, 0x125E, 0x10F7,\n    0x0F9C, 0x0E51, 0x0D1B, 0x0C00, 0x0B03, 0x0A29, 0x0978, 0x08F3,\n    0x08A0, 0x0884, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1,\n    0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1,\n    0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1,\n    0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1,\n    0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1,\n    0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1,\n    0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1,\n    0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1,\n    0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1,\n    0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1,\n    0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1,\n    0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1,\n    0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1,\n    0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1,\n    0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x444B, 0x4E46, 0x5D0A,\n    0x6F0F, 0x82D3, 0x96C9, 0xA96C, 0xB935, 0xC49D, 0xD1FF, 0xE6D0,\n    0x0032, 0x1B4A, 0x3539, 0x4B23, 0x5A2B, 0x6122, 0x6215, 0x5EFC,\n    0x59D1, 0x548C, 0x5126, 0x4F2B, 0x4CEE, 0x4A94, 0x4841, 0x461A,\n    0x4443, 0x42E3, 0x41F2, 0x414B, 0x40E1, 0x40A8, 0x4092, 0x4092,\n    0x409B, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_56_57.inc.c",
    "content": "static const struct Animation anim_56[] = {\n    1,\n    189,\n    0,\n    0,\n    0x01,\n    ANIMINDEX_NUMPARTS(anim_56_57_indices),\n    anim_56_57_values,\n    anim_56_57_indices,\n    0,\n};\n\nstatic const struct Animation anim_57[] = {\n    1,\n    189,\n    9,\n    0,\n    0x18,\n    ANIMINDEX_NUMPARTS(anim_56_57_indices),\n    anim_56_57_values,\n    anim_56_57_indices,\n    0,\n};\n\n\nstatic const u16 anim_56_57_indices[] = {\n    0x0001, 0x0000, 0x0018, 0x0001, 0x0018, 0x0019, 0x0001, 0x0000, 0x0001, 0x0031, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x02F4,\n    0x0018, 0x02AC, 0x0018, 0x02C4, 0x0018, 0x02DC,\n    0x0018, 0x0264, 0x0018, 0x027C, 0x0018, 0x0294,\n    0x0001, 0x0260, 0x0001, 0x0261, 0x0001, 0x0262,\n    0x0018, 0x004C, 0x0018, 0x0064, 0x0018, 0x007C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x0034,\n    0x0001, 0x0000, 0x0001, 0x0032, 0x0001, 0x0033,\n    0x0001, 0x0245, 0x0001, 0x0246, 0x0001, 0x0247,\n    0x0018, 0x00AD, 0x0018, 0x00C5, 0x0018, 0x00DD,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x0095,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0094,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x0248,\n    0x0018, 0x01FD, 0x0018, 0x0215, 0x0018, 0x022D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x01E5,\n    0x0018, 0x019D, 0x0018, 0x01B5, 0x0018, 0x01CD,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0263,\n    0x0018, 0x0155, 0x0018, 0x016D, 0x0018, 0x0185,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x013D,\n    0x0018, 0x00F5, 0x0018, 0x010D, 0x0018, 0x0125,\n};\n\nstatic const s16 anim_56_57_values[] = {\n    0x0000, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA,\n    0x00AA, 0x00AA, 0x00AA, 0x0078, 0x006B, 0x0075, 0x0081, 0x0087,\n    0x008D, 0x0092, 0x0096, 0x009A, 0x009F, 0x00A3, 0x00A6, 0x00A9,\n    0x00AA, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x3FFF, 0xF97C, 0xED8C, 0xDB6C, 0xDB34, 0xDA99, 0xD9B0,\n    0xD88A, 0xD73D, 0xD5DC, 0xD479, 0xD32A, 0xD200, 0xD111, 0xD0D4,\n    0xD11F, 0xD111, 0xD075, 0xCFB3, 0xCED8, 0xCDF0, 0xCD0A, 0xCC30,\n    0xCB71, 0xCAD9, 0xCA74, 0xCA4F, 0x2D63, 0x3122, 0x3B80, 0x4B2C,\n    0x5ED7, 0x7530, 0x8CE7, 0xA4AC, 0xBB2F, 0xCF1F, 0xDF2E, 0xE4C8,\n    0xE143, 0xDF2E, 0xE1B3, 0xE4D6, 0xE85F, 0xEC1B, 0xEFD5, 0xF358,\n    0xF66F, 0xF8E5, 0xFA86, 0xFB1D, 0xCAF3, 0xCB59, 0xCC72, 0xCE1B,\n    0xD031, 0xD28F, 0xD512, 0xD797, 0xD9FA, 0xDC17, 0xDDCA, 0xDE9F,\n    0xDE7C, 0xDDCA, 0xDCCE, 0xDB94, 0xDA31, 0xD8BB, 0xD746, 0xD5E6,\n    0xD4B1, 0xD3BA, 0xD317, 0xD2DC, 0x854A, 0x8245, 0x79E9, 0x6D46,\n    0x5D6A, 0x4B65, 0x3846, 0x251C, 0x12F5, 0x02E1, 0xF5F0, 0xF19B,\n    0xF49F, 0xF5F0, 0xF2F0, 0xEF35, 0xEB00, 0xE68F, 0xE220, 0xDDF2,\n    0xDA45, 0xD757, 0xD567, 0xD4B4, 0xF549, 0xF16C, 0xF0D6, 0xEF37,\n    0xECC7, 0xE9BB, 0xE64A, 0xE2AB, 0xDF15, 0xDBBD, 0xD8DB, 0xD6A4,\n    0xD4DA, 0xD31D, 0xD170, 0xCFD7, 0xCE58, 0xCCF6, 0xCBB5, 0xCA9A,\n    0xC9A9, 0xC8E6, 0xC856, 0xC7FC, 0xC7DD, 0xBB5A, 0xB743, 0xAC0C,\n    0x9B4A, 0x8692, 0x6F7B, 0x5799, 0x4081, 0x2BCA, 0x1B08, 0x0FD1,\n    0x08E5, 0x03D0, 0x0058, 0xFE45, 0xFD5C, 0xFD65, 0xFE27, 0xFF67,\n    0x00ED, 0x0280, 0x03E8, 0x04E9, 0x054B, 0x3222, 0x31AB, 0x3069,\n    0x2E8B, 0x2C44, 0x29C5, 0x273F, 0x24E3, 0x22E2, 0x216F, 0x20B9,\n    0x20AD, 0x210A, 0x21BD, 0x22B5, 0x23DF, 0x252A, 0x2683, 0x27D8,\n    0x2918, 0x2A30, 0x2B0F, 0x2BA1, 0x2BD6, 0x4B06, 0x485E, 0x4116,\n    0x3633, 0x28B9, 0x19AD, 0x0A16, 0xFAF8, 0xED57, 0xE239, 0xDAA2,\n    0xD5BC, 0xD1EA, 0xCF0E, 0xCD0A, 0xCBBE, 0xCB0D, 0xCAD6, 0xCAFC,\n    0xCB61, 0xCBE4, 0xCC68, 0xCCCD, 0xCCF6, 0xFF81, 0xFF5C, 0xFF09,\n    0xFEB6, 0xFE8F, 0xFEC0, 0xFF76, 0x0147, 0x0426, 0x0741, 0x09C7,\n    0x0945, 0x07FD, 0x0817, 0x0733, 0x062E, 0x051D, 0x0417, 0x0330,\n    0x0257, 0x017C, 0x00BC, 0x0033, 0x0000, 0xFF5B, 0xFF55, 0xFF46,\n    0xFF37, 0xFF32, 0xFF3E, 0xFF65, 0xFFC6, 0x005D, 0x00FF, 0x017E,\n    0x013D, 0x0129, 0xFFD1, 0xFFA1, 0xFF91, 0xFF92, 0xFF96, 0xFF90,\n    0xFF7C, 0xFF62, 0xFF4A, 0xFF37, 0xFF30, 0xE4BD, 0xE5D7, 0xE855,\n    0xEAFB, 0xEC90, 0xEBD7, 0xE797, 0xDC2A, 0xC9F4, 0xB5C9, 0xA47F,\n    0xA062, 0xA9B3, 0xAEEF, 0xB1E5, 0xB49E, 0xB735, 0xB9C3, 0xBC63,\n    0xBF82, 0xC30F, 0xC666, 0xC8E0, 0xC9D8, 0x1624, 0x14F1, 0x1232,\n    0x0F27, 0x0D13, 0x0D38, 0x10D8, 0x1B62, 0x2C6F, 0x3F78, 0x4FF9,\n    0x5584, 0x4D0C, 0x4703, 0x424C, 0x3DA9, 0x3924, 0x34C6, 0x3098,\n    0x2C16, 0x2738, 0x22C7, 0x1F8A, 0x1E4A, 0x0D37, 0x0D6C, 0x0DEC,\n    0x0E8A, 0x0F18, 0x0F69, 0x0F4E, 0x0E72, 0x0CE9, 0x0B1B, 0x0976,\n    0x082A, 0x0735, 0x0838, 0x0A7B, 0x0CF1, 0x0F6F, 0x11CD, 0x13E1,\n    0x15D4, 0x17C1, 0x196B, 0x1A97, 0x1B09, 0x0693, 0x0635, 0x055D,\n    0x046A, 0x03BA, 0x03AF, 0x04A6, 0x079E, 0x0C76, 0x11DF, 0x1688,\n    0x17E4, 0x17C6, 0x16F8, 0x1638, 0x1574, 0x14B4, 0x1400, 0x1361,\n    0x12CB, 0x123A, 0x11BD, 0x1165, 0x1144, 0xB48F, 0xB5DD, 0xB902,\n    0xBCD8, 0xC038, 0xC1FC, 0xC0FD, 0xBAD4, 0xAFFC, 0xA3A2, 0x98F2,\n    0x9504, 0x9431, 0x9699, 0x995E, 0x9C41, 0x9F1C, 0xA1CC, 0xA42B,\n    0xA666, 0xA894, 0xAA74, 0xABC5, 0xAC44, 0x0000, 0x0005, 0x0012,\n    0x001F, 0x0024, 0x001C, 0x0000, 0xFF98, 0xFEF1, 0xFE6A, 0xFE62,\n    0x01B5, 0x0000, 0x0047, 0x0046, 0x003D, 0x0030, 0x0023, 0x0018,\n    0x0010, 0x0008, 0x0002, 0x0000, 0x0000, 0x0000, 0xFFFA, 0xFFEB,\n    0xFFDD, 0xFFD6, 0xFFE0, 0x0000, 0x0063, 0x0101, 0x0194, 0x01D8,\n    0x0019, 0x0000, 0x0295, 0x0296, 0x0252, 0x01E6, 0x0172, 0x0114,\n    0x00BF, 0x0065, 0x001D, 0x0000, 0x0000, 0xE041, 0xDFE3, 0xDEC5,\n    0xDCE3, 0xDA36, 0xD6B9, 0xD266, 0xCBE1, 0xC2F5, 0xB95A, 0xB0C9,\n    0xAD07, 0xB2A8, 0xADF6, 0xAF5E, 0xB16F, 0xB3DA, 0xB64D, 0xB878,\n    0xBA9C, 0xBCD2, 0xBE8D, 0xBF40, 0xBF40, 0x4C54, 0x4C54, 0x4C55,\n    0x4C56, 0x4C57, 0x4C56, 0x4C54, 0x4C11, 0x4BA4, 0x4B86, 0x4C30,\n    0x526E, 0x4AC9, 0x485F, 0x4427, 0x3FAF, 0x3B26, 0x36BA, 0x329C,\n    0x2E51, 0x29F5, 0x2693, 0x2537, 0x2537, 0x000F, 0x002B, 0x0068,\n    0x00A5, 0x00C1, 0x009A, 0x000F, 0xFEB8, 0xFC9D, 0xFA46, 0xF83A,\n    0xF777, 0xF749, 0xF1FB, 0xEE15, 0xEA41, 0xE68E, 0xE30F, 0xDFD3,\n    0xDC9B, 0xD985, 0xD734, 0xD64A, 0xD64A, 0xEB50, 0xEB49, 0xEB3B,\n    0xEB2D, 0xEB26, 0xEB2F, 0xEB50, 0xEBA4, 0xEC2A, 0xECB6, 0xED20,\n    0xECC5, 0xEBDC, 0xED15, 0xECA4, 0xEBF5, 0xEB37, 0xEA99, 0xEA4A,\n    0xEA8B, 0xEB39, 0xEBEE, 0xEC41, 0xEC41, 0x72E2, 0x728D, 0x71D1,\n    0x7115, 0x70C0, 0x7137, 0x72E2, 0x7708, 0x7D8B, 0x84BA, 0x8AE6,\n    0x8C61, 0x8B9C, 0x94AC, 0x996E, 0x9DCF, 0xA1E3, 0xA5BE, 0xA973,\n    0xAD69, 0xB15D, 0xB467, 0xB59E, 0xB59E, 0x7FFF, 0x7FFF, 0x4171,\n    0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF86,\n    0xBFC7, 0xBFD4, 0xBF5F, 0xBB4C, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F,\n    0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F,\n    0x7FFF, 0x7FFF, 0x4171, 0xBF5F, 0xF78B, 0xF7B2, 0xF821, 0xF8CA,\n    0xF9A3, 0xFA9F, 0xFBB2, 0xFCCF, 0xFDEC, 0xFEFD, 0xFFF4, 0x0136,\n    0x029B, 0x0345, 0x032E, 0x02EF, 0x0291, 0x021F, 0x01A3, 0x0127,\n    0x00B5, 0x0057, 0x0017, 0x0000, 0x042F, 0x0436, 0x0449, 0x0465,\n    0x0487, 0x04AC, 0x04D0, 0x04F1, 0x050B, 0x051B, 0x051E, 0x04E4,\n    0x046A, 0x03F1, 0x0383, 0x0307, 0x0282, 0x01FC, 0x017A, 0x0102,\n    0x009A, 0x0048, 0x0013, 0x0000, 0x1AE7, 0x1A0D, 0x17BB, 0x144E,\n    0x1023, 0x0B97, 0x0706, 0x02CC, 0xFF49, 0xFCD6, 0xFBD0, 0x0327,\n    0x10FF, 0x187E, 0x17BD, 0x15A0, 0x127C, 0x0EA9, 0x0A7D, 0x0651,\n    0x027A, 0xFF52, 0xFD2C, 0xFC62, 0x09BB, 0x0998, 0x0936, 0x08A2,\n    0x07E9, 0x0717, 0x0638, 0x0559, 0x0486, 0x03CC, 0x0337, 0x0312,\n    0x0347, 0x034C, 0x0301, 0x02A3, 0x0239, 0x01C8, 0x0157, 0x00EC,\n    0x008E, 0x0043, 0x0011, 0x0000, 0x00BE, 0x008D, 0x0005, 0xFF3A,\n    0xFE38, 0xFD14, 0xFBDF, 0xFAA8, 0xF982, 0xF87E, 0xF7AD, 0xF73C,\n    0xF743, 0xF7B6, 0xF876, 0xF964, 0xFA71, 0xFB8D, 0xFCA8, 0xFDB3,\n    0xFE9D, 0xFF58, 0xFFD4, 0x0000, 0xFFBE, 0x0013, 0x0102, 0x026A,\n    0x042E, 0x062E, 0x084D, 0x0A6C, 0x0C6D, 0x0E30, 0x0F98, 0x1023,\n    0x0FCB, 0x0F2E, 0x0E8D, 0x0DCA, 0x0CF0, 0x0C0C, 0x0B2A, 0x0A56,\n    0x099C, 0x0908, 0x08A7, 0x0884, 0x40A1, 0x40A1, 0x40A1, 0x40A1,\n    0x40A1, 0x40A1, 0x40A1, 0x430C, 0x45B9, 0x47E3, 0x48C7, 0x48A4,\n    0x4842, 0x47AD, 0x46F0, 0x4617, 0x452C, 0x443C, 0x4351, 0x4278,\n    0x41BB, 0x4126, 0x40C4, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_58.inc.c",
    "content": "static const struct Animation anim_58[] = {\n    0,\n    189,\n    0,\n    0,\n    0x14,\n    ANIMINDEX_NUMPARTS(anim_58_indices),\n    anim_58_values,\n    anim_58_indices,\n    0,\n};\n\n\nstatic const u16 anim_58_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x0014, 0x0208, 0x0001, 0x0000, 0x0001, 0x021C,\n    0x0014, 0x01CC, 0x0014, 0x01E0, 0x0014, 0x01F4,\n    0x0014, 0x0190, 0x0014, 0x01A4, 0x0014, 0x01B8,\n    0x0001, 0x018C, 0x0001, 0x018D, 0x0001, 0x018E,\n    0x0014, 0x001A, 0x0014, 0x002E, 0x0014, 0x0042,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x0006,\n    0x0001, 0x0003, 0x0001, 0x0004, 0x0001, 0x0005,\n    0x0001, 0x0188, 0x0001, 0x0189, 0x0001, 0x018A,\n    0x0014, 0x00A6, 0x0014, 0x00BA, 0x0014, 0x00CE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x0092,\n    0x0014, 0x0056, 0x0014, 0x006A, 0x0014, 0x007E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x018B,\n    0x0014, 0x014C, 0x0014, 0x0160, 0x0014, 0x0174,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x0138,\n    0x0001, 0x0135, 0x0001, 0x0136, 0x0001, 0x0137,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x018F,\n    0x0014, 0x00F9, 0x0014, 0x010D, 0x0014, 0x0121,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x00E5,\n    0x0001, 0x00E2, 0x0001, 0x00E3, 0x0001, 0x00E4,\n};\n\nstatic const s16 anim_58_values[] = {\n    0x0000, 0x0017, 0x3FFF, 0xFF8A, 0xF980, 0xF06F, 0xD32F, 0xD296,\n    0xD11E, 0xCF4A, 0xCD9A, 0xCC8F, 0xCCAB, 0xCE6C, 0xD187, 0xD547,\n    0xD8F9, 0xDBE7, 0xDD5F, 0xDD2D, 0xDBDD, 0xD9DA, 0xD790, 0xD569,\n    0xD3D0, 0xD32F, 0xC4A6, 0xC696, 0xCB35, 0xD0BE, 0xD568, 0xD76C,\n    0xD504, 0xCBBB, 0xBC7E, 0xAA9B, 0x9962, 0x8C1E, 0x8620, 0x88AA,\n    0x913C, 0x9D80, 0xAB1E, 0xB7BD, 0xC108, 0xC4A6, 0xCA6A, 0xCBA2,\n    0xCEA8, 0xD28D, 0xD663, 0xD93A, 0xDA21, 0xD88B, 0xD51A, 0xD0A9,\n    0xCC15, 0xC839, 0xC5F1, 0xC54D, 0xC598, 0xC684, 0xC7C4, 0xC909,\n    0xCA05, 0xCA6A, 0x0E1D, 0x0C93, 0x08D6, 0x0437, 0x0009, 0xFD9E,\n    0xFE47, 0x0373, 0x0C61, 0x1711, 0x2185, 0x29BE, 0x2DBD, 0x2CE2,\n    0x28B6, 0x227C, 0x1B75, 0x14E1, 0x1004, 0x0E1D, 0x13D2, 0x13C8,\n    0x13AE, 0x138C, 0x1368, 0x1348, 0x1333, 0x1328, 0x1322, 0x1320,\n    0x1322, 0x1329, 0x1333, 0x1345, 0x135F, 0x137D, 0x139C, 0x13B7,\n    0x13CA, 0x13D2, 0x085B, 0x07A6, 0x05DA, 0x036D, 0x00D9, 0xFE95,\n    0xFD19, 0xFC53, 0xFBE1, 0xFBBE, 0xFBE9, 0xFC5D, 0xFD19, 0xFE5B,\n    0x0036, 0x0260, 0x048F, 0x067A, 0x07D6, 0x085B, 0xED59, 0xED44,\n    0xED10, 0xECC9, 0xEC7E, 0xEC3C, 0xEC11, 0xEBFB, 0xEBEE, 0xEBEA,\n    0xEBEE, 0xEBFC, 0xEC11, 0xEC36, 0xEC6C, 0xECAB, 0xECEA, 0xED22,\n    0xED4A, 0xED59, 0xDCF7, 0xDC55, 0xDACA, 0xD8DD, 0xD714, 0xD5F6,\n    0xD60A, 0xD7D2, 0xDAFE, 0xDED5, 0xE29E, 0xE5A1, 0xE726, 0xE6FA,\n    0xE5AC, 0xE3AA, 0xE15D, 0xDF33, 0xDD98, 0xDCF7, 0x033D, 0x046E,\n    0x075E, 0x0B18, 0x0EA8, 0x1119, 0x1175, 0x0EFA, 0x0A45, 0x0471,\n    0xFE99, 0xF9D8, 0xF748, 0xF724, 0xF88A, 0xFAEB, 0xFDBB, 0x006C,\n    0x0271, 0x033D, 0x455C, 0x440A, 0x40A9, 0x3C17, 0x3733, 0x32D9,\n    0x2FE9, 0x2E31, 0x2CF6, 0x2C46, 0x2C30, 0x2CC1, 0x2E08, 0x3089,\n    0x3457, 0x38D4, 0x3D64, 0x4168, 0x4445, 0x455C, 0xBB48, 0xBDBC,\n    0xC3DE, 0xCBDA, 0xD3DB, 0xDA0E, 0xDC9D, 0xDAB5, 0xD5A1, 0xCEBE,\n    0xC769, 0xC0FD, 0xBCD6, 0xBADD, 0xB9E9, 0xB9B6, 0xBA02, 0xBA8B,\n    0xBB0E, 0xBB48, 0xFFA6, 0x0255, 0xC2FC, 0x1F82, 0x2033, 0x2208,\n    0x24A1, 0x27A1, 0x2AA9, 0x2D5D, 0x304D, 0x33E3, 0x3782, 0x3A8C,\n    0x3C65, 0x3C70, 0x3A0D, 0x359D, 0x3002, 0x2A1D, 0x24CF, 0x20FB,\n    0x1F82, 0x05AB, 0x0628, 0x0763, 0x08FC, 0x0A95, 0x0BD0, 0x0C4D,\n    0x0C31, 0x0BE1, 0x0B68, 0x0ACE, 0x0A1D, 0x095E, 0x089A, 0x07DB,\n    0x072A, 0x0690, 0x0617, 0x05C7, 0x05AB, 0x1C35, 0x1C11, 0x1BB8,\n    0x1B44, 0x1AD0, 0x1A76, 0x1A53, 0x1A5B, 0x1A71, 0x1A94, 0x1ABF,\n    0x1AF2, 0x1B28, 0x1B60, 0x1B96, 0x1BC8, 0x1BF4, 0x1C16, 0x1C2D,\n    0x1C35, 0x93F5, 0x94BF, 0x96B8, 0x9948, 0x9BD9, 0x9DD2, 0x9E9C,\n    0x9E6E, 0x9DEF, 0x9D2C, 0x9C35, 0x9B18, 0x99E5, 0x98AB, 0x9779,\n    0x965C, 0x9565, 0x94A2, 0x9422, 0x93F5, 0x0095, 0xFF09, 0xCC42,\n    0x2168, 0x2296, 0x2587, 0x2953, 0x2D16, 0x2FE8, 0x30E4, 0x2F88,\n    0x2C74, 0x2870, 0x2443, 0x20B5, 0x1E8E, 0x1DD6, 0x1DE8, 0x1E83,\n    0x1F69, 0x205B, 0x211A, 0x2168, 0xF9BE, 0xF9DB, 0xFA2A, 0xFA9A,\n    0xFB1E, 0xFBA6, 0xFC24, 0xFCB4, 0xFD69, 0xFE21, 0xFEBF, 0xFF22,\n    0xFF2A, 0xFEBA, 0xFDE7, 0xFCD9, 0xFBBE, 0xFABE, 0xFA05, 0xF9BE,\n    0xF110, 0xF105, 0xF0E8, 0xF0C1, 0xF096, 0xF06D, 0xF04D, 0xF032,\n    0xF014, 0xEFF9, 0xEFE4, 0xEFDB, 0xEFE1, 0xEFFD, 0xF02C, 0xF067,\n    0xF0A3, 0xF0DA, 0xF101, 0xF110, 0x9F79, 0x9F28, 0x9E51, 0x9D1E,\n    0x9BB7, 0x9A46, 0x98F4, 0x9776, 0x959B, 0x93B7, 0x921B, 0x911B,\n    0x9109, 0x9234, 0x9469, 0x9735, 0x9A29, 0x9CD1, 0x9EBC, 0x9F79,\n    0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F,\n    0xF49E, 0xF544, 0xF6EF, 0xF931, 0xFB9C, 0xFDC1, 0xFF35, 0x000D,\n    0x00A9, 0x00FF, 0x010A, 0x00C3, 0x0021, 0xFEE6, 0xFD05, 0xFACE,\n    0xF88D, 0xF691, 0xF527, 0xF49E, 0x0570, 0x052C, 0x0478, 0x0379,\n    0x0255, 0x012F, 0x002D, 0xFF1B, 0xFDCE, 0xFC81, 0xFB6A, 0xFAC3,\n    0xFAC4, 0xFBA8, 0xFD4C, 0xFF5D, 0x0189, 0x037D, 0x04E6, 0x0570,\n    0x18CF, 0x18B4, 0x1863, 0x17E0, 0x172C, 0x164A, 0x153B, 0x13A5,\n    0x1176, 0x0F18, 0x0CF7, 0x0B7E, 0x0B17, 0x0C0D, 0x0E17, 0x10C2,\n    0x139C, 0x1633, 0x1815, 0x18CF, 0x1054, 0x0F64, 0x0CFB, 0x09B5,\n    0x062E, 0x0303, 0x00CF, 0xFF64, 0xFE3C, 0xFD6E, 0xFD14, 0xFD47,\n    0xFE1E, 0x0000, 0x02F1, 0x0674, 0x0A09, 0x0D34, 0x0F77, 0x1054,\n    0xFC7F, 0xFC58, 0xFBF8, 0xFB7F, 0xFB0E, 0xFAC5, 0xFAC4, 0xFB29,\n    0xFBE0, 0xFCBF, 0xFD9B, 0xFE4C, 0xFEA7, 0xFEA1, 0xFE5C, 0xFDEF,\n    0xFD71, 0xFCFA, 0xFCA1, 0xFC7F, 0x044D, 0x0483, 0x0510, 0x05D8,\n    0x06BE, 0x07A7, 0x0876, 0x0957, 0x0A68, 0x0B7C, 0x0C64, 0x0CF0,\n    0x0CF3, 0x0C3C, 0x0AE8, 0x093B, 0x0778, 0x05E3, 0x04BE, 0x044D,\n    0x0000, 0x0015, 0x0045, 0x0075, 0x008B, 0x006C, 0x0000, 0xFF09,\n    0xFD8F, 0xFBE0, 0xFA4C, 0xF920, 0xF8AB, 0xF913, 0xFA1F, 0xFB8E,\n    0xFD1E, 0xFE8C, 0xFF99, 0x0000, 0x1642,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_59.inc.c",
    "content": "static const struct Animation anim_59[] = {\n    1,\n    189,\n    0,\n    0,\n    0x25,\n    ANIMINDEX_NUMPARTS(anim_59_indices),\n    anim_59_values,\n    anim_59_indices,\n    0,\n};\n\n\nstatic const u16 anim_59_indices[] = {\n    0x0025, 0x0001, 0x0025, 0x0026, 0x0025, 0x004B, 0x0001, 0x0000, 0x0001, 0x0070, 0x0001, 0x0000,\n    0x0025, 0x0587, 0x0025, 0x05AC, 0x0025, 0x05D1,\n    0x0025, 0x0518, 0x0025, 0x053D, 0x0025, 0x0562,\n    0x0025, 0x04A9, 0x0025, 0x04CE, 0x0025, 0x04F3,\n    0x0001, 0x0481, 0x0001, 0x0482, 0x0025, 0x0483,\n    0x0025, 0x0105, 0x0025, 0x012A, 0x0025, 0x014F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0025, 0x00E0,\n    0x0025, 0x0071, 0x0025, 0x0096, 0x0025, 0x00BB,\n    0x0001, 0x047D, 0x0001, 0x047E, 0x0001, 0x047F,\n    0x0025, 0x0208, 0x0025, 0x022D, 0x0025, 0x0252,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0025, 0x01E3,\n    0x0025, 0x0174, 0x0025, 0x0199, 0x0025, 0x01BE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0480,\n    0x0025, 0x040E, 0x0025, 0x0433, 0x0025, 0x0458,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0025, 0x03E9,\n    0x0025, 0x037A, 0x0025, 0x039F, 0x0025, 0x03C4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x04A8,\n    0x0025, 0x030B, 0x0025, 0x0330, 0x0025, 0x0355,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0025, 0x02E6,\n    0x0025, 0x0277, 0x0025, 0x029C, 0x0025, 0x02C1,\n};\n\nstatic const s16 anim_59_values[] = {\n    0x0000, 0x0000, 0xFFFE, 0xFFF9, 0xFFF4, 0xFFEF, 0xFFE9, 0xFFE5,\n    0xFFE5, 0xFFE8, 0xFFEA, 0xFFEC, 0xFFED, 0xFFED, 0xFFED, 0xFFED,\n    0xFFED, 0xFFEC, 0xFFEA, 0xFFE7, 0xFFE2, 0xFFDD, 0xFFD8, 0xFFD4,\n    0xFFD0, 0xFFD5, 0xFFE5, 0xFFF4, 0xFFFA, 0xFFFB, 0xFFFB, 0xFFF9,\n    0xFFF7, 0xFFF5, 0xFFF2, 0xFFEF, 0xFFED, 0xFFEC, 0x0087, 0x0084,\n    0x007F, 0x007D, 0x0080, 0x0086, 0x008B, 0x008E, 0x0090, 0x0093,\n    0x0094, 0x0097, 0x009D, 0x00A3, 0x00AA, 0x00B1, 0x00B7, 0x00BD,\n    0x00C0, 0x00C2, 0x00C3, 0x00C5, 0x00C7, 0x00C7, 0x00BF, 0x00AD,\n    0x009C, 0x0094, 0x0092, 0x0094, 0x0098, 0x009B, 0x009D, 0x009F,\n    0x00A1, 0x00A2, 0x00A3, 0x0016, 0x0009, 0xFFEF, 0xFFDA, 0xFFD5,\n    0xFFD6, 0xFFD8, 0xFFD9, 0xFFDC, 0xFFDE, 0xFFE1, 0xFFE3, 0xFFE6,\n    0xFFE8, 0xFFEB, 0xFFED, 0xFFF0, 0xFFF2, 0xFFF4, 0xFFF5, 0xFFF7,\n    0xFFFA, 0xFFFD, 0x0000, 0x000A, 0x0014, 0x001D, 0x0020, 0x0022,\n    0x0023, 0x0024, 0x0026, 0x002A, 0x002F, 0x0034, 0x0037, 0x0039,\n    0x3FFF, 0xF0C4, 0xE409, 0xCA93, 0xB77D, 0xAFE0, 0xABF0, 0xAB68,\n    0xAE06, 0xBF31, 0xD01C, 0xD383, 0xD684, 0xD927, 0xDB76, 0xDD79,\n    0xDF39, 0xE0BE, 0xE211, 0xE33B, 0xE444, 0xE535, 0xE617, 0xE6F1,\n    0xE7CE, 0xE88E, 0xE910, 0xE95D, 0xE97D, 0xE978, 0xE955, 0xE91D,\n    0xE8D8, 0xE88E, 0xE846, 0xE809, 0xE7DE, 0xE7CE, 0xF4E7, 0xF103,\n    0xE983, 0xE4A7, 0xE495, 0xE66D, 0xE8E5, 0xEAB6, 0xEAE7, 0xEB05,\n    0xEBFE, 0xED0D, 0xEE2D, 0xEF58, 0xF08B, 0xF1C0, 0xF2F3, 0xF41E,\n    0xF53E, 0xF64D, 0xF747, 0xF827, 0xF8E7, 0xF984, 0xF9F9, 0xFA49,\n    0xFA78, 0xFA8C, 0xFA88, 0xFA73, 0xFA51, 0xFA27, 0xF9F9, 0xF9CD,\n    0xF9A8, 0xF98E, 0xF984, 0xF1BE, 0xF54C, 0xFC30, 0x00C4, 0x0129,\n    0xFFEC, 0xFE0E, 0xFC90, 0xFBD2, 0xFAF6, 0xF9B8, 0xF864, 0xF701,\n    0xF593, 0xF41F, 0xF2AB, 0xF13C, 0xEFD7, 0xEE81, 0xED3F, 0xEC17,\n    0xEB0D, 0xEA28, 0xE96B, 0xE8DD, 0xE87D, 0xE844, 0xE82C, 0xE830,\n    0xE84A, 0xE873, 0xE8A6, 0xE8DD, 0xE913, 0xE940, 0xE95F, 0xE96B,\n    0xD947, 0xD755, 0xD425, 0xD3AE, 0xD7A1, 0xDDC2, 0xE420, 0xE8C9,\n    0xE878, 0xE6AC, 0xE6EB, 0xE73B, 0xE79A, 0xE804, 0xE876, 0xE8EE,\n    0xE969, 0xE9E4, 0xEA5C, 0xEACE, 0xEB37, 0xEB94, 0xEBE3, 0xEC20,\n    0xEC4C, 0xEC6A, 0xEC7C, 0xEC83, 0xEC82, 0xEC7A, 0xEC6D, 0xEC5D,\n    0xEC4C, 0xEC3C, 0xEC2E, 0xEC24, 0xEC20, 0x3FF7, 0x3C35, 0x35F2,\n    0x34AF, 0x3C63, 0x4899, 0x543C, 0x5A34, 0x4D27, 0x3D50, 0x3949,\n    0x357E, 0x31EC, 0x2E92, 0x2B70, 0x2882, 0x25C9, 0x2342, 0x20EC,\n    0x1EC5, 0x1CCD, 0x1B01, 0x1960, 0x17E9, 0x16BB, 0x15ED, 0x1573,\n    0x1541, 0x1549, 0x1580, 0x15D8, 0x1645, 0x16BB, 0x172C, 0x178D,\n    0x17D0, 0x17E9, 0xD980, 0xD8A2, 0xD76B, 0xD7F1, 0xDBAB, 0xE124,\n    0xE60D, 0xE817, 0xDFEF, 0xD6F1, 0xD536, 0xD3AD, 0xD253, 0xD123,\n    0xD019, 0xCF31, 0xCE66, 0xCDB5, 0xCD18, 0xCC8D, 0xCC0E, 0xCB97,\n    0xCB25, 0xCAB2, 0xCA4F, 0xCA0C, 0xC9E4, 0xC9D4, 0xC9D6, 0xC9E8,\n    0xCA05, 0xCA29, 0xCA4F, 0xCA74, 0xCA94, 0xCAAA, 0xCAB2, 0x86E8,\n    0x8684, 0x84C7, 0x80D3, 0x791B, 0x6EFF, 0x65F3, 0x6170, 0x6D43,\n    0x7A47, 0x7B58, 0x7BFD, 0x7C43, 0x7C39, 0x7BEC, 0x7B69, 0x7ABD,\n    0x79F8, 0x7926, 0x7854, 0x7790, 0x76E9, 0x766B, 0x7623, 0x7602,\n    0x75EB, 0x75DE, 0x75D8, 0x75D9, 0x75DF, 0x75E9, 0x75F5, 0x7602,\n    0x760E, 0x7619, 0x7621, 0x7623, 0x1F49, 0x2303, 0x2A29, 0x2EAE,\n    0x2F7A, 0x2F8C, 0x2EF6, 0x2DC9, 0x2C18, 0x29F4, 0x269F, 0x21EF,\n    0x1CCE, 0x1829, 0x14EC, 0x12DD, 0x111D, 0x0FA4, 0x0E6A, 0x0D66,\n    0x0C90, 0x0BE0, 0x0B4D, 0x0ACF, 0x0A6B, 0x0A27, 0x09FE, 0x09EE,\n    0x09F0, 0x0A03, 0x0A20, 0x0A44, 0x0A6B, 0x0A91, 0x0AB1, 0x0AC7,\n    0x0ACF, 0x110B, 0x1094, 0x0F74, 0x0E0E, 0x0C7B, 0x0AAA, 0x08C9,\n    0x0701, 0x057E, 0x046B, 0x0405, 0x0439, 0x04B4, 0x0528, 0x0544,\n    0x0509, 0x04B4, 0x044E, 0x03DC, 0x0368, 0x02F7, 0x0293, 0x0243,\n    0x020D, 0x01ED, 0x01D8, 0x01CB, 0x01C5, 0x01C6, 0x01CC, 0x01D5,\n    0x01E1, 0x01ED, 0x01F9, 0x0203, 0x020A, 0x020D, 0xE8B9, 0xEE99,\n    0xF9D0, 0x00C4, 0x0171, 0x008D, 0xFE99, 0xFC15, 0xF982, 0xF760,\n    0xF55A, 0xF302, 0xF0B2, 0xEEC7, 0xED9A, 0xED12, 0xECCD, 0xECBE,\n    0xECD7, 0xED0B, 0xED4B, 0xED8B, 0xEDBD, 0xEDD2, 0xEDD4, 0xEDD5,\n    0xEDD6, 0xEDD7, 0xEDD7, 0xEDD6, 0xEDD6, 0xEDD5, 0xEDD4, 0xEDD3,\n    0xEDD2, 0xEDD2, 0xEDD2, 0xEEFA, 0xE7C0, 0xDA32, 0xD27C, 0xD348,\n    0xD67F, 0xDB2B, 0xE05A, 0xE519, 0xE873, 0xEA3E, 0xEB2E, 0xEB98,\n    0xEBD3, 0xEC37, 0xECCF, 0xED68, 0xEE00, 0xEE92, 0xEF1B, 0xEF97,\n    0xF003, 0xF05B, 0xF09C, 0xF0C7, 0xF0E5, 0xF0F6, 0xF0FE, 0xF0FC,\n    0xF0F4, 0xF0E8, 0xF0D8, 0xF0C7, 0xF0B7, 0xF0A9, 0xF09F, 0xF09C,\n    0x549D, 0x613B, 0x758A, 0x773C, 0x3EA5, 0x02BC, 0xF2AA, 0xED17,\n    0xECF3, 0xED2C, 0xED63, 0xEFC0, 0xF303, 0xF5EA, 0xF733, 0xF6F9,\n    0xF642, 0xF52D, 0xF3DB, 0xF26C, 0xF0FE, 0xEFB3, 0xEEAB, 0xEE04,\n    0xEDA9, 0xED6B, 0xED46, 0xED37, 0xED3A, 0xED4A, 0xED65, 0xED86,\n    0xEDA9, 0xEDCB, 0xEDE8, 0xEDFD, 0xEE04, 0x2C79, 0x2EC3, 0x3331,\n    0x361B, 0x34EE, 0x3128, 0x2BFA, 0x25E2, 0x2045, 0x1C86, 0x1B12,\n    0x1AF8, 0x1B89, 0x1C1B, 0x1C00, 0x1B36, 0x1A37, 0x1916, 0x17E3,\n    0x16B0, 0x158C, 0x1489, 0x13B9, 0x132B, 0x12D3, 0x1298, 0x1274,\n    0x1266, 0x1268, 0x1278, 0x1292, 0x12B1, 0x12D3, 0x12F4, 0x1310,\n    0x1324, 0x132B, 0x1666, 0x1A3E, 0x1C97, 0x0FAC, 0xD3D3, 0x98B6,\n    0x8863, 0x82ED, 0x829B, 0x81B3, 0x7F60, 0x7E47, 0x7DD8, 0x7D85,\n    0x7CC0, 0x7B7A, 0x7A0E, 0x788B, 0x7702, 0x7583, 0x741F, 0x72E6,\n    0x71E9, 0x7137, 0x70C5, 0x7077, 0x7049, 0x7036, 0x7039, 0x704E,\n    0x706F, 0x7099, 0x70C5, 0x70F0, 0x7114, 0x712E, 0x7137, 0x000C,\n    0x1055, 0x0341, 0x0456, 0x0314, 0x015E, 0xFF9F, 0xFE1E, 0xFD62,\n    0xFCF7, 0xFCD9, 0xFCE1, 0xFCE2, 0xFCCF, 0xFCB7, 0xFC9B, 0xFC7A,\n    0xFC31, 0xFB97, 0xFAEE, 0xFA5A, 0xF9B1, 0xF91D, 0xF940, 0xFD2F,\n    0x02DB, 0x0791, 0x08C5, 0x0888, 0x083B, 0x07B2, 0x0757, 0x074A,\n    0x0755, 0x076E, 0x0786, 0x0791, 0xFF33, 0x0305, 0x017F, 0xFF50,\n    0xFF6B, 0xFFBB, 0x0010, 0x004F, 0x0076, 0x0094, 0x00A5, 0x00B3,\n    0x00D5, 0x0114, 0x0164, 0x01B6, 0x01FF, 0x0212, 0x0209, 0x01FA,\n    0x01D9, 0x019B, 0x014B, 0x00FB, 0x00B3, 0x0044, 0xFFE7, 0xFFCD,\n    0xFFCE, 0xFFD1, 0xFFD9, 0xFFDF, 0xFFE2, 0xFFE4, 0xFFE6, 0xFFE7,\n    0xFFE7, 0xC75E, 0x9A38, 0xA56F, 0xBBB0, 0xB83A, 0xB2D3, 0xADC6,\n    0xAC73, 0xACA8, 0xAD83, 0xAEF4, 0xB0B4, 0xB28E, 0xB47C, 0xB684,\n    0xB886, 0xBA62, 0xBB4D, 0xBC6D, 0xBD8E, 0xBE23, 0xBDF2, 0xBD34,\n    0xBC05, 0xB8A9, 0xB113, 0xAA57, 0xA82D, 0xA7E6, 0xA7B8, 0xA7E5,\n    0xA835, 0xA8A0, 0xA92D, 0xA9BC, 0xAA2B, 0xAA57, 0x4D71, 0x4DF7,\n    0x5835, 0x46BE, 0x47E7, 0x476A, 0x4696, 0x453E, 0x4395, 0x41D4,\n    0x3FD9, 0x3D7F, 0x3AA5, 0x36AA, 0x31B4, 0x2CC5, 0x28E3, 0x25A8,\n    0x2238, 0x1EE7, 0x1C0A, 0x19F2, 0x18F5, 0x1966, 0x1FB4, 0x2B6A,\n    0x3583, 0x3AB1, 0x3C24, 0x3A1D, 0x3661, 0x32E4, 0x2FDC, 0x2C8E,\n    0x2985, 0x274C, 0x2670, 0x07B9, 0x0361, 0xFFA8, 0xFE6F, 0x0279,\n    0x0742, 0x0C16, 0x0F55, 0x10CB, 0x1185, 0x11C2, 0x11C2, 0x11C2,\n    0x11B1, 0x115C, 0x10CF, 0x101A, 0x0F51, 0x0E7C, 0x0D99, 0x0CA6,\n    0x0BA0, 0x0A83, 0x094D, 0x0790, 0x055F, 0x037E, 0x0253, 0x01FC,\n    0x0290, 0x038F, 0x047D, 0x054E, 0x0630, 0x0700, 0x0798, 0x07D3,\n    0x11B4, 0x187E, 0x1F83, 0x233A, 0x201F, 0x1C03, 0x17CF, 0x1523,\n    0x144F, 0x144E, 0x14B6, 0x1520, 0x1524, 0x14A4, 0x13E2, 0x1308,\n    0x1242, 0x1193, 0x10E5, 0x1038, 0x0F8D, 0x0EE5, 0x0E41, 0x0DA3,\n    0x0D0F, 0x0C8F, 0x0C2B, 0x0C08, 0x0BF8, 0x0BBC, 0x0B76, 0x0B31,\n    0x0AE9, 0x0A98, 0x0A4C, 0x0A14, 0x09FE, 0xC211, 0xAB0D, 0x928E,\n    0x83A0, 0x8808, 0x8F51, 0x9703, 0x9CA0, 0x9FA8, 0xA19C, 0xA2FA,\n    0xA442, 0xA5F3, 0xA841, 0xAACC, 0xAD3D, 0xAF39, 0xB0FF, 0xB2E7,\n    0xB4C4, 0xB664, 0xB79A, 0xB835, 0xB807, 0xB4B1, 0xAE69, 0xA8E0,\n    0xA56E, 0xA461, 0xA674, 0xA9E8, 0xAD1E, 0xAFF7, 0xB311, 0xB5E9,\n    0xB7FE, 0xB8CC, 0xF39B, 0xF391, 0xF393, 0xF3D2, 0xF47C, 0xF563,\n    0xF632, 0xF71D, 0xF7F0, 0xF7BC, 0xF528, 0xF18C, 0xEFFF, 0xF0A9,\n    0xF19E, 0xF2D0, 0xF432, 0xF5B7, 0xF751, 0xF8F4, 0xFA92, 0xFC1E,\n    0xFD8A, 0xFECA, 0xFF91, 0xFFDC, 0x0006, 0xFFEE, 0xFFEB, 0x009D,\n    0x0184, 0x01F9, 0x01CB, 0x0155, 0x00C5, 0x004C, 0x0019, 0xFDCF,\n    0xFE1A, 0xFEAC, 0xFF11, 0xFF06, 0xFECF, 0xFEBF, 0xFF25, 0xFFB2,\n    0xFFD6, 0xFF0A, 0xFDD4, 0xFD38, 0xFD49, 0xFD6D, 0xFDA2, 0xFDE4,\n    0xFE30, 0xFE84, 0xFEDD, 0xFF38, 0xFF91, 0xFFE6, 0x0034, 0x008D,\n    0x00F1, 0x0142, 0x015B, 0x016C, 0x01AF, 0x01FC, 0x021E, 0x0204,\n    0x01CD, 0x018C, 0x0157, 0x0141, 0xBE9F, 0xBEA0, 0xBE86, 0xBE23,\n    0xBD0B, 0xBBAA, 0xBB22, 0xBC2E, 0xBE12, 0xBFBC, 0xC0D5, 0xC1B5,\n    0xC250, 0xC2C3, 0xC332, 0xC39B, 0xC400, 0xC45F, 0xC4B9, 0xC50E,\n    0xC55E, 0xC5A9, 0xC5EE, 0xC62E, 0xC6B8, 0xC6FC, 0xC5B0, 0xBF1A,\n    0xB99E, 0xBBCC, 0xC085, 0xC41E, 0xC5B2, 0xC6D6, 0xC797, 0xC801,\n    0xC822, 0x3458, 0x35C5, 0x3891, 0x3A7E, 0x3ACF, 0x3A42, 0x38D7,\n    0x3668, 0x331C, 0x2F68, 0x2A97, 0x255E, 0x2255, 0x2158, 0x2088,\n    0x1FE4, 0x1F6B, 0x1F1A, 0x1EF2, 0x1EF0, 0x1F14, 0x1F5C, 0x1FC6,\n    0x2053, 0x2251, 0x2641, 0x2AEB, 0x322A, 0x3772, 0x35F9, 0x3207,\n    0x2E6E, 0x2BB7, 0x28D3, 0x2636, 0x2451, 0x2395, 0xFA11, 0xFA74,\n    0xFAC2, 0xF9B9, 0xF67E, 0xF1EC, 0xED4D, 0xE819, 0xE2D9, 0xE068,\n    0xE353, 0xE90D, 0xECCD, 0xEDE5, 0xEEDB, 0xEFAD, 0xF05A, 0xF0E1,\n    0xF140, 0xF178, 0xF186, 0xF169, 0xF121, 0xF0AC, 0xEDE7, 0xE8EF,\n    0xE526, 0xE51F, 0xE650, 0xE6BC, 0xE710, 0xE700, 0xE66B, 0xE586,\n    0xE494, 0xE3D3, 0xE385, 0xFC08, 0xF8FF, 0xF2CE, 0xEDCE, 0xEBC9,\n    0xEAF6, 0xEA54, 0xE936, 0xE84A, 0xE89A, 0xEB6B, 0xEF77, 0xF1F3,\n    0xF2A8, 0xF33E, 0xF3B5, 0xF40E, 0xF449, 0xF467, 0xF469, 0xF44F,\n    0xF419, 0xF3C9, 0xF35E, 0xF18D, 0xEE46, 0xEB65, 0xE9B8, 0xE90F,\n    0xE97A, 0xEA66, 0xEB3F, 0xEBEB, 0xECA4, 0xED4C, 0xEDC6, 0xEDF5,\n    0x97DB, 0x96E2, 0x9557, 0x954E, 0x97C8, 0x9BC3, 0xA046, 0xA590,\n    0xAB62, 0xB007, 0xB36B, 0xB5A3, 0xB52F, 0xB28E, 0xAF55, 0xABAA,\n    0xA7B3, 0xA396, 0x9F78, 0x9B81, 0x97D4, 0x9499, 0x91F5, 0x900F,\n    0x930D, 0x9AAB, 0xA06C, 0x9FCD, 0x9D60, 0x9C56, 0x9B8F, 0x9BB3,\n    0x9D17, 0x9F36, 0xA178, 0xA342, 0xA3FD, 0x8001, 0x8001, 0x4171,\n    0xBF5F, 0x8001, 0x8001, 0x4161, 0x4150, 0x4141, 0x4171, 0x41F3,\n    0x42A4, 0x4360, 0x4409, 0x447F, 0x44E2, 0x4552, 0x45C8, 0x4642,\n    0x46BE, 0x473C, 0x47B9, 0x4834, 0x48AC, 0x491D, 0x4989, 0x49EB,\n    0x4A43, 0x4A90, 0x4AD0, 0x4AFF, 0x4B20, 0x4B33, 0x4B3B, 0x4B3A,\n    0x4B31, 0x4B23, 0x4B12, 0x4AFF, 0x4AED, 0x4ADE, 0x4AD4, 0x4AD0,\n    0xBF5F, 0xD8FD, 0xDDEB, 0xE8DA, 0xF402, 0xFE2A, 0x07B3, 0x1002,\n    0x1828, 0x1F52, 0x24AC, 0x2849, 0x2AF7, 0x2CF6, 0x2E86, 0x2FE7,\n    0x3158, 0x32E0, 0x345A, 0x35BE, 0x3704, 0x3827, 0x391F, 0x39E5,\n    0x3A73, 0x3AD1, 0x3B12, 0x3B38, 0x3B48, 0x3B45, 0x3B34, 0x3B18,\n    0x3AF6, 0x3AD1, 0x3AAE, 0x3A90, 0x3A7B, 0x3A73, 0x00DB, 0xFFF0,\n    0xFDCC, 0xFB5B, 0xF7D1, 0xF573, 0xF667, 0xF873, 0xFA90, 0xFBB6,\n    0xFBA5, 0xFB02, 0xFA17, 0xF932, 0xF89F, 0xF8AB, 0xF95F, 0xFA7B,\n    0xFBDC, 0xFD5F, 0xFEE3, 0x0042, 0x015D, 0x020F, 0x0271, 0x02B3,\n    0x02DB, 0x02EB, 0x02E8, 0x02D7, 0x02BA, 0x0297, 0x0271, 0x024C,\n    0x022D, 0x0218, 0x020F, 0xF531, 0xF5A1, 0xF619, 0xF552, 0xF0DD,\n    0xEC12, 0xE9AA, 0xE7AC, 0xE671, 0xE653, 0xE751, 0xE904, 0xEB27,\n    0xED79, 0xEFB6, 0xF19A, 0xF34A, 0xF50B, 0xF6CB, 0xF879, 0xFA05,\n    0xFB5D, 0xFC70, 0xFD2E, 0xFDA6, 0xFDF8, 0xFE28, 0xFE3C, 0xFE39,\n    0xFE23, 0xFE00, 0xFDD5, 0xFDA6, 0xFD79, 0xFD53, 0xFD38, 0xFD2E,\n    0x0977, 0x03C1, 0xF8F5, 0xF290, 0xF60C, 0xFDF0, 0x034E, 0x03AE,\n    0x0229, 0x002E, 0xFF2D, 0xFF35, 0xFF62, 0xFFAA, 0x0007, 0x0073,\n    0x00E7, 0x015B, 0x01C8, 0x0227, 0x0272, 0x02A2, 0x02AE, 0x0292,\n    0x0240, 0x01BA, 0x0109, 0x0038, 0xFF53, 0xFE61, 0xFD6E, 0xFC85,\n    0xFBAE, 0xFAF6, 0xFA65, 0xFA07, 0xF9E5, 0xF015, 0xF63B, 0x0281,\n    0x0BAD, 0x0DFB, 0x0D2D, 0x0B4B, 0x08B1, 0x051E, 0x01AC, 0xFF78,\n    0xFE48, 0xFD29, 0xFC1B, 0xFB20, 0xFA3A, 0xF96A, 0xF8B2, 0xF812,\n    0xF78C, 0xF722, 0xF6D5, 0xF6A6, 0xF697, 0xF6BF, 0xF72C, 0xF7D1,\n    0xF8A2, 0xF993, 0xFA96, 0xFB9F, 0xFCA2, 0xFD92, 0xFE62, 0xFF07,\n    0xFF73, 0xFF99, 0x0F99, 0x1227, 0x16C4, 0x18DD, 0x1621, 0x10E0,\n    0x0B74, 0x062A, 0x006F, 0xFB4F, 0xF7CE, 0xF58C, 0xF374, 0xF181,\n    0xEFB1, 0xEE02, 0xEC70, 0xEAF8, 0xE997, 0xE84B, 0xE710, 0xE5E3,\n    0xE4C2, 0xE3AA, 0xE29C, 0xE19B, 0xE0AA, 0xDFCA, 0xDEFB, 0xDE40,\n    0xDD9A, 0xDD09, 0xDC90, 0xDC2F, 0xDBE8, 0xDBBD, 0xDBAE, 0x1CBC,\n    0x1F1D, 0x232B, 0x244A, 0x2251, 0x202F, 0x1DE9, 0x1B82, 0x18FF,\n    0x1663, 0x13B5, 0x10F6, 0x0E2C, 0x0B5C, 0x0888, 0x05B6, 0x02EA,\n    0x0027, 0xFD74, 0xFAD2, 0xF846, 0xF5D6, 0xF384, 0xF156, 0xF102,\n    0xF2A4, 0xF3D9, 0xF401, 0xF418, 0xF422, 0xF420, 0xF417, 0xF408,\n    0xF3F8, 0xF3E9, 0xF3DD, 0xF3D9, 0x04C1, 0x02FD, 0xFFD2, 0xFE6A,\n    0xFF06, 0xFFC3, 0x009B, 0x018E, 0x0296, 0x03AF, 0x04D4, 0x0603,\n    0x0736, 0x086A, 0x099B, 0x0AC4, 0x0BE2, 0x0CF0, 0x0DEA, 0x0ECD,\n    0x0F95, 0x103C, 0x10C0, 0x111C, 0x0E3E, 0x0872, 0x04C2, 0x03FD,\n    0x038B, 0x035D, 0x0364, 0x0392, 0x03D9, 0x0429, 0x0475, 0x04AC,\n    0x04C2, 0x4CBA, 0x4C33, 0x4B0F, 0x49F3, 0x490B, 0x4813, 0x470E,\n    0x4600, 0x44EB, 0x43D2, 0x42B7, 0x419D, 0x4087, 0x3F78, 0x3E71,\n    0x3D77, 0x3C8B, 0x3BB0, 0x3AE9, 0x3A38, 0x39A1, 0x3926, 0x38C9,\n    0x388D, 0x3BC8, 0x4226, 0x4630, 0x4709, 0x4787, 0x47BA, 0x47B2,\n    0x477F, 0x4731, 0x46D9, 0x4686, 0x4648, 0x4630,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_5A.inc.c",
    "content": "static const struct Animation anim_5A[] = {\n    1,\n    189,\n    0,\n    0,\n    0x26,\n    ANIMINDEX_NUMPARTS(anim_5A_indices),\n    anim_5A_values,\n    anim_5A_indices,\n    0,\n};\n\n\nstatic const u16 anim_5A_indices[] = {\n    0x0001, 0x0000, 0x0026, 0x0001, 0x0026, 0x0027, 0x0001, 0x0000, 0x0001, 0x004D, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0026, 0x061B, 0x0026, 0x0641,\n    0x0026, 0x05A9, 0x0026, 0x05CF, 0x0026, 0x05F5,\n    0x0026, 0x0537, 0x0026, 0x055D, 0x0026, 0x0583,\n    0x0026, 0x04C4, 0x0026, 0x04EA, 0x0026, 0x0510,\n    0x0026, 0x00E6, 0x0026, 0x010C, 0x0026, 0x0132,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0026, 0x00C0,\n    0x0026, 0x004E, 0x0026, 0x0074, 0x0026, 0x009A,\n    0x0001, 0x0476, 0x0001, 0x0477, 0x0026, 0x0478,\n    0x0026, 0x01F0, 0x0026, 0x0216, 0x0026, 0x023C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0026, 0x01CA,\n    0x0026, 0x0158, 0x0026, 0x017E, 0x0026, 0x01A4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0026, 0x049E,\n    0x0026, 0x0404, 0x0026, 0x042A, 0x0026, 0x0450,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0026, 0x03DE,\n    0x0026, 0x036C, 0x0026, 0x0392, 0x0026, 0x03B8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0536,\n    0x0026, 0x02FA, 0x0026, 0x0320, 0x0026, 0x0346,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0026, 0x02D4,\n    0x0026, 0x0262, 0x0026, 0x0288, 0x0026, 0x02AE,\n};\n\nstatic const s16 anim_5A_values[] = {\n    0x0000, 0x0056, 0x0056, 0x0056, 0x0056, 0x0056, 0x0055, 0x0055,\n    0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0055, 0x0056,\n    0x0056, 0x0058, 0x005B, 0x005E, 0x0061, 0x0062, 0x005D, 0x0059,\n    0x005F, 0x0068, 0x0071, 0x007A, 0x0083, 0x008C, 0x0094, 0x009A,\n    0x009F, 0x00A2, 0x00A5, 0x00A7, 0x00A9, 0x00AA, 0x00AA, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFE, 0xFFFD, 0xFFFC, 0xFFFB,\n    0xFFFA, 0xFFF9, 0xFFF8, 0xFFF7, 0xFFF7, 0xFFF6, 0xFFF6, 0xFFF6,\n    0xFFF8, 0xFFFA, 0xFFFC, 0xFFFB, 0xFFF7, 0xFFF4, 0xFFF4, 0xFFF5,\n    0xFFF7, 0xFFFA, 0xFFFE, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001,\n    0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FFF, 0xDBEB, 0xDD20,\n    0xE077, 0xE57E, 0xEBC5, 0xF2DC, 0xFA54, 0x01BB, 0x08A2, 0x0E99,\n    0x1330, 0x15F7, 0x1740, 0x17BC, 0x1783, 0x16B1, 0x1560, 0x13AA,\n    0x11A9, 0x0F77, 0x0D30, 0x0AED, 0x08C8, 0x06DC, 0x0543, 0x03B5,\n    0x01EB, 0xFFFF, 0xFE09, 0xFC22, 0xFA64, 0xF8E9, 0xF7C9, 0xF71F,\n    0xF848, 0xFB5C, 0xFE8A, 0x0000, 0xFBB8, 0xFBAD, 0xFB90, 0xFB67,\n    0xFB34, 0xFAFF, 0xFACB, 0xFA9E, 0xFA7C, 0xFA6A, 0xFA6E, 0xFA8C,\n    0xFACE, 0xFB32, 0xFBB3, 0xFC47, 0xFCE7, 0xFD8B, 0xFE2C, 0xFEC1,\n    0xFF43, 0xFFAA, 0xFFEE, 0x0007, 0xFFEF, 0xFF7A, 0xFE9A, 0xFD69,\n    0xFC06, 0xFA8C, 0xF919, 0xF7C7, 0xF6B5, 0xF5FF, 0xF643, 0xF77E,\n    0xF8D8, 0xF97C, 0xF52E, 0xF503, 0xF489, 0xF3CF, 0xF2E3, 0xF1D4,\n    0xF0AF, 0xEF82, 0xEE5D, 0xED4C, 0xEC5F, 0xEBA2, 0xEAF8, 0xEA3E,\n    0xE97A, 0xE8B5, 0xE7F5, 0xE743, 0xE6A5, 0xE624, 0xE5C6, 0xE592,\n    0xE592, 0xE5CB, 0xE646, 0xE75A, 0xE937, 0xEBA1, 0xEE60, 0xF139,\n    0xF3F5, 0xF658, 0xF82B, 0xF933, 0xF7B1, 0xF3A7, 0xEF79, 0xED8C,\n    0xF186, 0xF1A5, 0xF1F6, 0xF262, 0xF2D5, 0xF339, 0xF379, 0xF380,\n    0xF33A, 0xF28F, 0xF16C, 0xE220, 0xE2C3, 0xE5D0, 0xE951, 0xEB50,\n    0xE960, 0xE5A9, 0xE278, 0xDEFD, 0xDB6E, 0xD7FF, 0xD4E5, 0xD256,\n    0xD086, 0xCF41, 0xCE2B, 0xCD41, 0xCC80, 0xCBE2, 0xCB65, 0xCB05,\n    0xCABE, 0xCA8C, 0xCA6C, 0xCA59, 0xCA51, 0xCA4F, 0xB4B5, 0xB484,\n    0xB3F3, 0xB309, 0xB1CA, 0xB03C, 0xAE63, 0xAC46, 0xA9E8, 0xA750,\n    0xA483, 0xA185, 0x9E5C, 0x9A6C, 0x9520, 0x8E87, 0x86B2, 0x7DAE,\n    0x72E6, 0x664B, 0x58C4, 0x4B3A, 0x3E92, 0x33B3, 0x2B87, 0x2526,\n    0x1F18, 0x1964, 0x1414, 0x0F30, 0x0ABF, 0x06CB, 0x035C, 0x007A,\n    0xFE2E, 0xFC80, 0xFB77, 0xFB1D, 0x9234, 0x9200, 0x9172, 0x909E,\n    0x8F99, 0x8E76, 0x8D4A, 0x8C29, 0x8B28, 0x8A5C, 0x89D7, 0x89AF,\n    0x89F8, 0x8BAB, 0x8F1F, 0x9374, 0x97CA, 0x9B41, 0x9DCB, 0xA003,\n    0xA20B, 0xA403, 0xA60D, 0xA84B, 0xAADD, 0xADE8, 0xB165, 0xB535,\n    0xB939, 0xBD54, 0xC165, 0xC550, 0xC8F4, 0xCC33, 0xCEEF, 0xD109,\n    0xD262, 0xD2DC, 0xCE70, 0xCEB6, 0xCF87, 0xD0DE, 0xD2B7, 0xD50C,\n    0xD7DA, 0xDB1C, 0xDECE, 0xE2EB, 0xE76E, 0xEC55, 0xF199, 0xF911,\n    0x03C4, 0x107A, 0x1DF4, 0x2AF9, 0x3815, 0x4638, 0x54C1, 0x630C,\n    0x7078, 0x7C62, 0x862A, 0x8EB8, 0x9752, 0x9FD8, 0xA82A, 0xB026,\n    0xB7AC, 0xBE9C, 0xC4D4, 0xCA33, 0xCE9A, 0xD1E8, 0xD3FB, 0xD4B4,\n    0x3CF3, 0x3BCC, 0x389A, 0x33C3, 0x2DAD, 0x26BD, 0x1F5A, 0x17E7,\n    0x10CD, 0x0A6F, 0x0534, 0x0182, 0xFFBF, 0x0D54, 0x26BD, 0x32EA,\n    0x2B1C, 0x1BE8, 0x0943, 0xF71F, 0xE96E, 0xE0E0, 0xDB46, 0xD84B,\n    0xD795, 0xD8ED, 0xDBED, 0xDFFD, 0xE483, 0xE8E9, 0xEC95, 0xEFF1,\n    0xF39A, 0xF745, 0xFAA4, 0xFD6C, 0xFF4F, 0x0000, 0x11A8, 0x11C3,\n    0x1212, 0x128B, 0x1327, 0x13E0, 0x14AD, 0x1587, 0x1667, 0x1744,\n    0x1818, 0x18DB, 0x1986, 0x1A1E, 0x1A96, 0x1AC9, 0x1AAC, 0x1A62,\n    0x1A09, 0x19BF, 0x199F, 0x1A2F, 0x1B37, 0x1BBD, 0x1ACA, 0x1818,\n    0x1463, 0x1029, 0x0BEE, 0x0832, 0x0577, 0x03A6, 0x0247, 0x014C,\n    0x00A3, 0x003E, 0x000C, 0x0000, 0x106A, 0x0FD0, 0x0E23, 0x0B95,\n    0x0859, 0x04A2, 0x00A2, 0xFC8C, 0xF891, 0xF4E4, 0xF1B8, 0xEF40,\n    0xEDAD, 0xF2CD, 0xFCD3, 0x0086, 0xFAEF, 0xF1D0, 0xE70B, 0xDC82,\n    0xD418, 0xCD8D, 0xC807, 0xC483, 0xC3F9, 0xC67A, 0xCAEC, 0xD08C,\n    0xD697, 0xDC4B, 0xE0E4, 0xE4CF, 0xE8CE, 0xECA2, 0xF00C, 0xF2CB,\n    0xF49F, 0xF549, 0xE58E, 0xE589, 0xE57D, 0xE56D, 0xE55C, 0xE54E,\n    0xE545, 0xE545, 0xE552, 0xE56D, 0xE59B, 0xE6A4, 0xE893, 0xEA51,\n    0xEAC7, 0xE8DE, 0xE352, 0xDADC, 0xD164, 0xC8CE, 0xC300, 0xC137,\n    0xC258, 0xC4C2, 0xC6D8, 0xC885, 0xCA9A, 0xCCC6, 0xCEBA, 0xD028,\n    0xD0C1, 0xD052, 0xCF13, 0xCD55, 0xCB6C, 0xC9A9, 0xC85E, 0xC7DD,\n    0xBAEE, 0xBAE5, 0xBAD2, 0xBAC2, 0xBAC1, 0xBADA, 0xBB1A, 0xBB8D,\n    0xBC40, 0xBD3D, 0xBE91, 0xC171, 0xC622, 0xCB4C, 0xCF98, 0xD1AD,\n    0xD190, 0xD065, 0xCE7F, 0xCC31, 0xC9CD, 0xC7A8, 0xC615, 0xC566,\n    0xC5F0, 0xC865, 0xCCD0, 0xD282, 0xD8CF, 0xDF09, 0xE482, 0xE9E8,\n    0xEFFC, 0xF630, 0xFBF9, 0x00C9, 0x0413, 0x054B, 0x11FA, 0x1202,\n    0x1219, 0x1243, 0x127E, 0x12CE, 0x1332, 0x13AC, 0x143C, 0x14E5,\n    0x15A7, 0x16D5, 0x188D, 0x1A88, 0x1C7A, 0x1E1B, 0x1F89, 0x210C,\n    0x2294, 0x2412, 0x2576, 0x26B3, 0x27B8, 0x2877, 0x28E1, 0x2875,\n    0x2711, 0x2531, 0x2351, 0x21ED, 0x2182, 0x223F, 0x23CA, 0x25CC,\n    0x27F0, 0x29E2, 0x2B4B, 0x2BD6, 0x4CB3, 0x4C7A, 0x4BF1, 0x4B4D,\n    0x4AC1, 0x4A83, 0x4AC7, 0x4BC1, 0x4DA5, 0x50A8, 0x54FE, 0x5E90,\n    0x6E53, 0x8017, 0x8F9F, 0x98B9, 0x9BF2, 0x9CFE, 0x9C64, 0x9AAC,\n    0x985D, 0x95FE, 0x9417, 0x932E, 0x93CC, 0x965C, 0x9A8D, 0x9FCA,\n    0xA582, 0xAB1E, 0xB00C, 0xB4E1, 0xBA44, 0xBFBC, 0xC4D0, 0xC906,\n    0xCBE6, 0xCCF6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFAB, 0xFF01, 0xFE81,\n    0xFEAC, 0x0000, 0x03B3, 0x0958, 0x0EFF, 0x12B9, 0x0A91, 0x0BC4,\n    0x0D8E, 0x0CB5, 0x0B60, 0x09CD, 0x0835, 0x06D4, 0x05B8, 0x04C7,\n    0x0402, 0x0348, 0x0284, 0x01C2, 0x0113, 0x0084, 0x0023, 0x0000,\n    0x0000, 0xFFED, 0xFFBC, 0xFF79, 0xFF32, 0xFEF3, 0xFECA, 0xFEC4,\n    0xFEED, 0xFF52, 0x0000, 0x01E4, 0x052B, 0x08C3, 0x0B9B, 0x0CA1,\n    0x0ABB, 0x0692, 0x01BD, 0xFDD0, 0xFDE2, 0xFD1E, 0xFCA5, 0xFCF8,\n    0xFD81, 0xFE21, 0xFEB9, 0xFF2B, 0xFF5A, 0xFF57, 0xFF4D, 0xFF4C,\n    0xFF48, 0xFF42, 0xFF3C, 0xFF36, 0xFF32, 0xFF30, 0xC596, 0xC60D,\n    0xC74F, 0xC925, 0xCB59, 0xCDB5, 0xD003, 0xD20D, 0xD39B, 0xD479,\n    0xD470, 0xD259, 0xCDEA, 0xC833, 0xC247, 0xBD37, 0xB8F8, 0xB4E6,\n    0xB12B, 0xADF5, 0xAEB9, 0xB5E4, 0xBB4C, 0xBB3C, 0xB9C2, 0xB7B4,\n    0xB5E8, 0xB535, 0xB6A5, 0xB993, 0xBC4E, 0xBE92, 0xC118, 0xC3A8,\n    0xC608, 0xC801, 0xC959, 0xC9D8, 0x3388, 0x33CF, 0x349A, 0x35DB,\n    0x3783, 0x3984, 0x3BD0, 0x3E58, 0x410D, 0x43E3, 0x46C9, 0x4B06,\n    0x50FB, 0x5744, 0x5C7B, 0x5F3B, 0x5FA1, 0x5EE7, 0x5D4E, 0x5B19,\n    0x588A, 0x55E4, 0x536A, 0x50E7, 0x4E03, 0x4ACB, 0x474A, 0x438C,\n    0x3ECF, 0x3953, 0x34AA, 0x30B0, 0x2C6D, 0x2835, 0x245B, 0x2134,\n    0x1F12, 0x1E4A, 0x03AC, 0x03A2, 0x0386, 0x0356, 0x0311, 0x02B5,\n    0x0242, 0x01B7, 0x0112, 0x0052, 0xFF78, 0xFE14, 0xFC03, 0xF9B1,\n    0xF78B, 0xF5FB, 0xF4D1, 0xF3A7, 0xF29B, 0xF1CC, 0xF158, 0xF15D,\n    0xF1FB, 0xF3AF, 0xF691, 0xFA24, 0xFDEA, 0x0167, 0x04DD, 0x086F,\n    0x0B79, 0x0E38, 0x112D, 0x141C, 0x16CB, 0x18FF, 0x1A7C, 0x1B09,\n    0x057F, 0x05C5, 0x068C, 0x07C0, 0x094F, 0x0B25, 0x0D31, 0x0F5F,\n    0x119C, 0x13D5, 0x15F9, 0x18E0, 0x1CC7, 0x20B0, 0x239B, 0x248A,\n    0x2363, 0x20FF, 0x1DCA, 0x1A30, 0x169E, 0x1382, 0x1146, 0x102D,\n    0x0FEF, 0x1031, 0x1093, 0x10B8, 0x109C, 0x1083, 0x1081, 0x1096,\n    0x10B6, 0x10DC, 0x1102, 0x1123, 0x113B, 0x1144, 0xBF8B, 0xBEC5,\n    0xBC9E, 0xB95B, 0xB53F, 0xB08E, 0xAB8A, 0xA677, 0xA19A, 0x9D34,\n    0x998A, 0x96CF, 0x94CA, 0x9320, 0x9174, 0x8F69, 0x8CB2, 0x8977,\n    0x860F, 0x82CF, 0x800F, 0x7E1F, 0x7D5E, 0x7E8A, 0x81A7, 0x85E8,\n    0x8A83, 0x8EB0, 0x92DB, 0x9748, 0x9AF4, 0x9E16, 0xA167, 0xA4AA,\n    0xA7A0, 0xAA0A, 0xABAB, 0xAC44, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000C,\n    0x0024, 0x0036, 0x0030, 0x0000, 0x0012, 0xFDEC, 0xF35F, 0xED0E,\n    0xFD5C, 0x0CDF, 0x0365, 0xF5AD, 0xF9E4, 0xF9F0, 0xF93D, 0xF90A,\n    0xF99D, 0xFA5D, 0xFB3C, 0xFC2A, 0xFD1B, 0xFE00, 0xFECB, 0xFF6E,\n    0xFFD9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFDB, 0xFF8F, 0xFF56,\n    0xFF69, 0x0000, 0x04BB, 0x0676, 0xF923, 0xEBAB, 0xEB5F, 0xF0FB,\n    0xFAEA, 0x0570, 0x07DD, 0x06CE, 0x051E, 0x03E8, 0x034F, 0x02BA,\n    0x022D, 0x01A9, 0x0132, 0x00CB, 0x0076, 0x0036, 0x000E, 0x0000,\n    0xD709, 0xD6F3, 0xD6BA, 0xD66E, 0xD61E, 0xD5DA, 0xD5B1, 0xD5B1,\n    0xD5EC, 0xD66F, 0xD74A, 0xD970, 0xDD19, 0xE13C, 0xE4CD, 0xE6C5,\n    0xE396, 0xDD0C, 0xD8A7, 0xCF3E, 0xB501, 0x9D6C, 0x9DCC, 0xA4DB,\n    0xA5B8, 0xA6FB, 0xA857, 0xAA0B, 0xAC3B, 0xAEC4, 0xB183, 0xB456,\n    0xB71A, 0xB9AC, 0xBBE8, 0xBDAD, 0xBED6, 0xBF40, 0x45A0, 0x457F,\n    0x452B, 0x44BC, 0x4448, 0x43E7, 0x43AF, 0x43B7, 0x4416, 0x44E4,\n    0x4637, 0x491F, 0x4DF1, 0x53AC, 0x594F, 0x5DD8, 0x6167, 0x6473,\n    0x6682, 0x6717, 0x5C47, 0x65A9, 0x62E4, 0x5DD8, 0x598C, 0x54CA,\n    0x4FB3, 0x4A66, 0x4503, 0x3FAA, 0x3A7B, 0x3596, 0x311A, 0x2D27,\n    0x29DE, 0x275D, 0x25C6, 0x2537, 0xF96B, 0xF98B, 0xF9E1, 0xFA61,\n    0xFAFB, 0xFBA4, 0xFC4D, 0xFCE8, 0xFD69, 0xFDC1, 0xFDE3, 0xFD23,\n    0xFB76, 0xF9BA, 0xF8CD, 0xF991, 0xFD95, 0x0428, 0x0AC9, 0x0EF4,\n    0x040A, 0xFCB3, 0x01A8, 0x0538, 0x0277, 0xFF19, 0xFB3C, 0xF705,\n    0xF294, 0xEE0C, 0xE98E, 0xE53C, 0xE138, 0xDDA3, 0xDA9E, 0xD84D,\n    0xD6D1, 0xD64A, 0xF581, 0xF53E, 0xF487, 0xF373, 0xF21C, 0xF099,\n    0xEF04, 0xED75, 0xEC05, 0xEACC, 0xE9E2, 0xE987, 0xE9B6, 0xEA27,\n    0xEA90, 0xEAA8, 0xEA47, 0xE9A0, 0xE8EE, 0xE86E, 0xE904, 0xEAE2,\n    0xEAB6, 0xEA5B, 0xEA75, 0xEA96, 0xEABD, 0xEAE8, 0xEB16, 0xEB45,\n    0xEB74, 0xEBA2, 0xEBCC, 0xEBF2, 0xEC12, 0xEC2B, 0xEC3B, 0xEC41,\n    0xA420, 0xA3AB, 0xA26A, 0xA08D, 0x9E42, 0x9BB7, 0x991B, 0x969D,\n    0x946A, 0x92B2, 0x91A3, 0x9226, 0x944F, 0x9710, 0x9959, 0x9A1D,\n    0x9830, 0x945D, 0x9081, 0x8E7A, 0x97A4, 0x9639, 0x8AA3, 0x8367,\n    0x85D4, 0x8912, 0x8CF8, 0x915D, 0x9619, 0x9B03, 0x9FF2, 0xA4BD,\n    0xA93B, 0xAD44, 0xB0AE, 0xB351, 0xB504, 0xB59E, 0x8001, 0x8001,\n    0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171,\n    0x4171, 0x4171, 0x4171, 0x415F, 0x413B, 0x4120, 0x4129, 0x4171,\n    0x41FA, 0x42AC, 0x4379, 0x4453, 0x452F, 0x45FE, 0x46B3, 0x4740,\n    0x479A, 0x47A0, 0x474F, 0x46C4, 0x461B, 0x4570, 0x44E0, 0x4456,\n    0x43B6, 0x430F, 0x4272, 0x41ED, 0x4193, 0x4171, 0xC5E4, 0xC5E4,\n    0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4,\n    0xC5E4, 0xC5E2, 0xC5DE, 0xC5DB, 0xC5DC, 0xC5E4, 0xC5F8, 0xC616,\n    0xC637, 0xC651, 0xC648, 0xC62C, 0xC61B, 0xC5E4, 0xC56E, 0xC4E7,\n    0xC455, 0xC3BB, 0xC31C, 0xC27E, 0xC1E3, 0xC150, 0xC0C9, 0xC051,\n    0xBFED, 0xBFA1, 0xBF70, 0xBF5F, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x804C,\n    0x80E2, 0x8153, 0x812D, 0x8001, 0x783A, 0x732D, 0x7843, 0x7F95,\n    0x8817, 0x90B1, 0x9857, 0x9DF7, 0xA081, 0xA080, 0x9F59, 0x9D3F,\n    0x9A65, 0x96FE, 0x933D, 0x8F57, 0x8B7D, 0x87E3, 0x84BD, 0x823E,\n    0x8099, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x7FC8, 0x7F5B, 0x7F09,\n    0x7F25, 0x8001, 0x8452, 0x8952, 0x8C30, 0x8F3A, 0x9231, 0x94D4,\n    0x96E3, 0x981F, 0x9847, 0x9779, 0x9610, 0x942B, 0x91E8, 0x8F63,\n    0x8CBB, 0x8A0D, 0x8777, 0x8517, 0x830A, 0x816E, 0x8062, 0x8001,\n    0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171,\n    0x4171, 0x4171, 0x4171, 0x4149, 0x40F8, 0x40BC, 0x40D0, 0x4171,\n    0x4592, 0x484B, 0x45B0, 0x41EB, 0x3D89, 0x3918, 0x3523, 0x3239,\n    0x30E6, 0x30E3, 0x3177, 0x3287, 0x33FA, 0x35B6, 0x379F, 0x399D,\n    0x3B94, 0x3D6A, 0x3F06, 0x404C, 0x4123, 0x4171, 0xBF5F, 0x01B8,\n    0x01B7, 0x01B6, 0x01B5, 0x01B3, 0x01B1, 0x01B0, 0x01AF, 0x01B0,\n    0x01B2, 0x01B6, 0x0175, 0x00F2, 0x0097, 0x00CC, 0x01FD, 0x0503,\n    0x0992, 0x0E5D, 0x1215, 0x1450, 0x1567, 0x153A, 0x13D7, 0x11A0,\n    0x0EEB, 0x0C10, 0x087E, 0x0474, 0x017E, 0x0008, 0xFF46, 0xFEF1,\n    0xFEC4, 0xFEDB, 0xFF4A, 0xFFC6, 0x0000, 0x0165, 0x0165, 0x0167,\n    0x0169, 0x016B, 0x016C, 0x016D, 0x016D, 0x016B, 0x0167, 0x0160,\n    0x0153, 0x013E, 0x0124, 0x0108, 0x00EE, 0x00B5, 0x0065, 0x003F,\n    0x0086, 0x01E4, 0x03DC, 0x04F2, 0x04B9, 0x03ED, 0x02CC, 0x0197,\n    0xFFE4, 0xFDE6, 0xFCCE, 0xFD13, 0xFE06, 0xFF22, 0xFFE3, 0x0020,\n    0x0024, 0x000E, 0x0000, 0xD8E2, 0xD8D5, 0xD8B2, 0xD885, 0xD856,\n    0xD82E, 0xD818, 0xD81C, 0xD845, 0xD89A, 0xD927, 0xDA4C, 0xDC2B,\n    0xDE72, 0xE0CE, 0xE2ED, 0xE4F9, 0xE719, 0xE8F4, 0xEA32, 0xEA47,\n    0xE979, 0xE8A7, 0xE7E3, 0xE6F8, 0xE654, 0xE664, 0xE7BC, 0xEA14,\n    0xEC94, 0xEF0D, 0xF1B3, 0xF444, 0xF67F, 0xF887, 0xFA6D, 0xFBD5,\n    0xFC62, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x004F, 0x00EF, 0x0166, 0x013E,\n    0x0000, 0xFCE7, 0xF83A, 0xF30E, 0xEE7C, 0xEC6F, 0xEBFE, 0xECE2,\n    0xEF53, 0xF23D, 0xF563, 0xF888, 0xFB70, 0xFDDD, 0xFF93, 0x0091,\n    0x0112, 0x0133, 0x010F, 0x00C2, 0x0069, 0x001E, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x001B,\n    0x0048, 0x0051, 0x0000, 0xFD30, 0x00A4, 0x03BE, 0x0414, 0x0410,\n    0x03CB, 0x035D, 0x02DE, 0x0266, 0x020F, 0x01C7, 0x0174, 0x011D,\n    0x00C7, 0x0079, 0x003A, 0x000F, 0x0000, 0xFE97, 0xFEAA, 0xFEE5,\n    0xFF4C, 0xFFE3, 0x00AB, 0x01AB, 0x02E4, 0x045C, 0x0614, 0x0811,\n    0x0B4F, 0x1025, 0x1599, 0x1AB2, 0x1E79, 0x2037, 0x208D, 0x2087,\n    0x212F, 0x2534, 0x2661, 0x25EC, 0x2408, 0x21D4, 0x1F6B, 0x1CEB,\n    0x1A6E, 0x1813, 0x15F5, 0x13E1, 0x11A7, 0x0F68, 0x0D46, 0x0B64,\n    0x09E1, 0x08E1, 0x0884, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF,\n    0xFFFF, 0xFFFF, 0x0000, 0xFFF2, 0x0015, 0x00E8, 0x0444, 0x0755,\n    0x04AA, 0x015E, 0x008D, 0x0022, 0xFFFE, 0xFFFD, 0x0000, 0xFFFC,\n    0xFFF9, 0xFFF8, 0xFFF8, 0xFFF9, 0xFFFB, 0xFFFD, 0xFFFF, 0x0000,\n    0x0000, 0x7DB0, 0x7DBD, 0x7DD6, 0x7DE5, 0x7DD4, 0x7D8D, 0x7CF9,\n    0x7C03, 0x7A94, 0x7896, 0x75F3, 0x7119, 0x6980, 0x609E, 0x57EB,\n    0x50DF, 0x4C93, 0x4A25, 0x4813, 0x462A, 0x44EB, 0x43EF, 0x43D6,\n    0x44F7, 0x469B, 0x484B, 0x4990, 0x49F2, 0x4983, 0x48B4, 0x479F,\n    0x465C, 0x4505, 0x43B4, 0x4282, 0x4188, 0x40DF, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_5B.inc.c",
    "content": "static const struct Animation anim_5B[] = {\n    1,\n    189,\n    0,\n    0,\n    0x0A,\n    ANIMINDEX_NUMPARTS(anim_5B_indices),\n    anim_5B_values,\n    anim_5B_indices,\n    0,\n};\n\n\nstatic const u16 anim_5B_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000,\n    0x000A, 0x0154, 0x0001, 0x0000, 0x000A, 0x015E,\n    0x000A, 0x0140, 0x0001, 0x0000, 0x000A, 0x014A,\n    0x000A, 0x0122, 0x000A, 0x012C, 0x000A, 0x0136,\n    0x0001, 0x011E, 0x0001, 0x011F, 0x0001, 0x0120,\n    0x000A, 0x002A, 0x000A, 0x0034, 0x000A, 0x003E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0020,\n    0x000A, 0x0002, 0x000A, 0x000C, 0x000A, 0x0016,\n    0x0001, 0x011A, 0x0001, 0x011B, 0x0001, 0x011C,\n    0x000A, 0x0070, 0x000A, 0x007A, 0x000A, 0x0084,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0066,\n    0x000A, 0x0048, 0x000A, 0x0052, 0x000A, 0x005C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x011D,\n    0x000A, 0x00FC, 0x000A, 0x0106, 0x000A, 0x0110,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x00F2,\n    0x000A, 0x00D4, 0x000A, 0x00DE, 0x000A, 0x00E8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0121,\n    0x000A, 0x00B6, 0x000A, 0x00C0, 0x000A, 0x00CA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x00AC,\n    0x000A, 0x008E, 0x000A, 0x0098, 0x000A, 0x00A2,\n};\n\nstatic const s16 anim_5B_values[] = {\n    0x0000, 0x3FFF, 0xF62C, 0xF687, 0xF77B, 0xF8DC, 0xFA7F, 0xFC38,\n    0xFDDB, 0xFF3C, 0x002F, 0x008A, 0xF980, 0xF951, 0xF8D5, 0xF821,\n    0xF74B, 0xF66A, 0xF594, 0xF4E0, 0xF464, 0xF435, 0xF06F, 0xF038,\n    0xEFA5, 0xEED0, 0xEDD3, 0xECC9, 0xEBCC, 0xEAF6, 0xEA63, 0xEA2C,\n    0xD468, 0xD5AA, 0xD909, 0xDDEA, 0xE3B3, 0xE9C9, 0xEF92, 0xF473,\n    0xF7D1, 0xF913, 0xAA70, 0xAAED, 0xAC3B, 0xAE1E, 0xB05B, 0xB2B7,\n    0xB4F4, 0xB6D7, 0xB825, 0xB8A2, 0xDE99, 0xDDB2, 0xDB48, 0xD7CA,\n    0xD3A5, 0xCF48, 0xCB24, 0xC7A5, 0xC53B, 0xC454, 0x0F8B, 0x0D33,\n    0x06EC, 0xFDD6, 0xF30F, 0xE7B9, 0xDCF2, 0xD3DC, 0xCD94, 0xCB3D,\n    0xE940, 0xEA0A, 0xEC27, 0xEF35, 0xF2D5, 0xF6A6, 0xFA46, 0xFD55,\n    0xFF71, 0x003A, 0xF618, 0xF69D, 0xF803, 0xFA09, 0xFC6E, 0xFEF4,\n    0x0159, 0x035F, 0x04C5, 0x054A, 0xE633, 0xE665, 0xE6EC, 0xE7AF,\n    0xE897, 0xE98A, 0xEA72, 0xEB35, 0xEBBC, 0xEBEE, 0xDF00, 0xDFD0,\n    0xE1FC, 0xE521, 0xE8DB, 0xECC7, 0xF081, 0xF3A6, 0xF5D2, 0xF6A2,\n    0x1BA7, 0x1471, 0x011D, 0xE522, 0xC3F6, 0xA10F, 0x7FE3, 0x63E9,\n    0x5095, 0x495F, 0x2E1B, 0x2E82, 0x2F98, 0x3129, 0x3306, 0x34FB,\n    0x36D7, 0x3869, 0x397F, 0x39E6, 0xBB91, 0xB35B, 0x9D59, 0x7D7E,\n    0x57B8, 0x2FFB, 0x0A36, 0xEA5B, 0xD45A, 0xCC24, 0x0183, 0x0181,\n    0x0179, 0x016F, 0x0163, 0x0155, 0x0149, 0x013E, 0x0137, 0x0135,\n    0x01CF, 0x01D1, 0x01D6, 0x01DE, 0x01E7, 0x01F0, 0x01F9, 0x0200,\n    0x0205, 0x0207, 0xE5A9, 0xE56F, 0xE4D6, 0xE3F8, 0xE2F0, 0xE1DB,\n    0xE0D4, 0xDFF6, 0xDF5C, 0xDF23, 0x1CA8, 0x1C41, 0x1B2B, 0x1998,\n    0x17BB, 0x15C5, 0x13E8, 0x1255, 0x113F, 0x10D8, 0xFEF2, 0xFF91,\n    0x0139, 0x03A0, 0x0679, 0x0978, 0x0C51, 0x0EB8, 0x1060, 0x10FF,\n    0x0A8D, 0x0A5D, 0x09DF, 0x0928, 0x084F, 0x076A, 0x0691, 0x05DA,\n    0x055C, 0x052D, 0xB85D, 0xB88C, 0xB90A, 0xB9C1, 0xBA9A, 0xBB7E,\n    0xBC57, 0xBD0E, 0xBD8C, 0xBDBB, 0xFFFA, 0xFFFB, 0xFFFD, 0x0000,\n    0x0004, 0x0008, 0x000C, 0x0010, 0x0012, 0x0013, 0xFEDF, 0xFEDF,\n    0xFEDF, 0xFEDF, 0xFEE0, 0xFEE0, 0xFEE0, 0xFEE0, 0xFEE0, 0xFEE0,\n    0xE37D, 0xE35A, 0xE2FA, 0xE26F, 0xE1CA, 0xE11D, 0xE078, 0xDFEE,\n    0xDF8E, 0xDF6A, 0x1EF6, 0x1E6B, 0x1CF5, 0x1AD8, 0x1856, 0x15B3,\n    0x1331, 0x1114, 0x0F9E, 0x0F13, 0x0460, 0x03E2, 0x0290, 0x00A7,\n    0xFE63, 0xFC01, 0xF9BC, 0xF7D3, 0xF681, 0xF602, 0xF3FB, 0xF441,\n    0xF4FE, 0xF60F, 0xF753, 0xF8A8, 0xF9EC, 0xFAFD, 0xFBBA, 0xFC00,\n    0x9C09, 0x9D27, 0xA028, 0xA480, 0xA9A6, 0xAF12, 0xB439, 0xB891,\n    0xBB91, 0xBCB0, 0x7FFF, 0x7FFF, 0x4171, 0xBF5F, 0x7FFF, 0x7FFF,\n    0x4171, 0xBF5F, 0x0007, 0x0006, 0x0006, 0x0005, 0x0004, 0x0003,\n    0x0001, 0x0000, 0x0000, 0x0000, 0x0271, 0x025C, 0x0222, 0x01CF,\n    0x016C, 0x0104, 0x00A2, 0x004E, 0x0015, 0x0000, 0xE591, 0xE510,\n    0xE3B7, 0xE1C3, 0xDF73, 0xDD04, 0xDAB4, 0xD8C0, 0xD767, 0xD6E6,\n    0x0DDA, 0x0D60, 0x0C1A, 0x0A42, 0x0813, 0x05C6, 0x0397, 0x01BF,\n    0x0079, 0x0000, 0xF1B4, 0xF1ED, 0xF286, 0xF364, 0xF46C, 0xF581,\n    0xF688, 0xF766, 0xF7FF, 0xF839, 0xF8AB, 0xF8EB, 0xF998, 0xFA92,\n    0xFBBA, 0xFCF2, 0xFE1A, 0xFF14, 0xFFC0, 0x0000, 0x7FFF, 0x7FDC,\n    0x7F81, 0x7EFD, 0x7E60, 0x7DBB, 0x7D1F, 0x7C9A, 0x7C3F, 0x7C1D,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_5C.inc.c",
    "content": "static const struct Animation anim_5C[] = {\n    1,\n    189,\n    0,\n    0,\n    0x14,\n    ANIMINDEX_NUMPARTS(anim_5C_indices),\n    anim_5C_values,\n    anim_5C_indices,\n    0,\n};\n\n\nstatic const u16 anim_5C_indices[] = {\n    0x0015, 0x0001, 0x0015, 0x0016, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x002B, 0x0001, 0x0000,\n    0x0015, 0x0236, 0x0015, 0x024B, 0x0015, 0x0260,\n    0x0015, 0x01F7, 0x0015, 0x020C, 0x0015, 0x0221,\n    0x0015, 0x01B8, 0x0015, 0x01CD, 0x0015, 0x01E2,\n    0x0001, 0x01B4, 0x0001, 0x01B5, 0x0001, 0x01B6,\n    0x0015, 0x0030, 0x0015, 0x0045, 0x0015, 0x005A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x002F,\n    0x0001, 0x002C, 0x0001, 0x002D, 0x0001, 0x002E,\n    0x0001, 0x01B0, 0x0001, 0x01B1, 0x0001, 0x01B2,\n    0x0015, 0x0087, 0x0015, 0x009C, 0x0015, 0x00B1,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0015, 0x0072,\n    0x0001, 0x006F, 0x0001, 0x0070, 0x0001, 0x0071,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01B3,\n    0x0015, 0x0171, 0x0015, 0x0186, 0x0015, 0x019B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0015, 0x015C,\n    0x0015, 0x011D, 0x0015, 0x0132, 0x0015, 0x0147,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01B7,\n    0x0015, 0x00DE, 0x0015, 0x00F3, 0x0015, 0x0108,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0015, 0x00C9,\n    0x0001, 0x00C6, 0x0001, 0x00C7, 0x0001, 0x00C8,\n};\n\nstatic const s16 anim_5C_values[] = {\n    0x0000, 0xFFC3, 0xFFD2, 0xFFE4, 0xFFF8, 0x000A, 0x001A, 0x0028,\n    0x0036, 0x0042, 0x004C, 0x0050, 0x0050, 0x004D, 0x0047, 0x003F,\n    0x0038, 0x0031, 0x002B, 0x0024, 0x001E, 0x001B, 0x00BD, 0x00BF,\n    0x00C2, 0x00C5, 0x00C9, 0x00CC, 0x00CE, 0x00D2, 0x00D5, 0x00D7,\n    0x00D7, 0x00D6, 0x00D3, 0x00D0, 0x00CC, 0x00C8, 0x00C5, 0x00C2,\n    0x00BF, 0x00BD, 0x00BD, 0x3FFF, 0xFF8A, 0xF980, 0xF06F, 0xF085,\n    0x4A46, 0x476A, 0x4375, 0x3EFC, 0x3A96, 0x36D7, 0x3456, 0x34E1,\n    0x37DA, 0x3A32, 0x38D8, 0x33AA, 0x2CE1, 0x2500, 0x1C86, 0x13F5,\n    0x0BCC, 0x048E, 0xFEBB, 0xFAD2, 0xF955, 0xD9C9, 0xDBDD, 0xDE87,\n    0xE17D, 0xE472, 0xE71A, 0xE929, 0xEABB, 0xEBD4, 0xEC05, 0xEADF,\n    0xE883, 0xE580, 0xE20A, 0xDE51, 0xDA89, 0xD6E4, 0xD394, 0xD0CC,\n    0xCEBE, 0xCD9D, 0x3EAD, 0x42BB, 0x48DC, 0x5004, 0x5725, 0x5D35,\n    0x6127, 0x5FD4, 0x5A77, 0x5691, 0x59A2, 0x63D4, 0x7101, 0x803F,\n    0x909D, 0xA12E, 0xB106, 0xBF38, 0xCAD6, 0xD2F3, 0xD6A1, 0x0F57,\n    0x0217, 0xF7EF, 0xF8B2, 0xF819, 0xF756, 0xF676, 0xF588, 0xF499,\n    0xF3B6, 0xF2EE, 0xF24E, 0xF1E4, 0xF1BE, 0xF1F3, 0xF281, 0xF354,\n    0xF453, 0xF569, 0xF67F, 0xF77E, 0xF850, 0xF8DF, 0xF913, 0x1B7F,\n    0x1685, 0x0FD5, 0x07F0, 0xFF5A, 0xF692, 0xEE1B, 0xE677, 0xE027,\n    0xDBAE, 0xD98D, 0xDA5D, 0xDDF0, 0xE39B, 0xEAB1, 0xF28A, 0xFA78,\n    0x01D2, 0x07ED, 0x0C1D, 0x0DB8, 0x21A3, 0x2195, 0x21FD, 0x22BC,\n    0x23B6, 0x24CB, 0x25E0, 0x26D5, 0x278D, 0x27EA, 0x27D0, 0x2728,\n    0x2605, 0x2486, 0x22CC, 0x20F5, 0x1F20, 0x1D6D, 0x1BFB, 0x1AE9,\n    0x1A58, 0xD591, 0xCF1C, 0xC63C, 0xBB88, 0xAF92, 0xA2F2, 0x963B,\n    0x8A02, 0x7ED9, 0x755B, 0x6E1A, 0x68F3, 0x6537, 0x62A6, 0x60FF,\n    0x6001, 0x5F6E, 0x5F04, 0x5E83, 0x5DAC, 0x5C3E, 0x001B, 0x025B,\n    0xCB25, 0x403A, 0x3D08, 0x3978, 0x36DA, 0x3680, 0x38F7, 0x3D4D,\n    0x4299, 0x47F4, 0x4C73, 0x4F2E, 0x507B, 0x5158, 0x51D3, 0x51F9,\n    0x51DB, 0x5185, 0x5107, 0x5070, 0x4FCD, 0x4F2E, 0x0F1A, 0x0E84,\n    0x0DE3, 0x0D3F, 0x0C9C, 0x0C02, 0x0B75, 0x0AFB, 0x0A9C, 0x0A5C,\n    0x0A41, 0x0A54, 0x0A94, 0x0AF9, 0x0B7A, 0x0C11, 0x0CB4, 0x0D5D,\n    0x0E03, 0x0E9E, 0x0F26, 0x0A48, 0x0B27, 0x0C59, 0x0DC1, 0x0F44,\n    0x10C6, 0x122A, 0x1355, 0x142B, 0x148F, 0x1467, 0x1378, 0x11BD,\n    0x0F6C, 0x0CB9, 0x09D8, 0x06FF, 0x0461, 0x0234, 0x00AB, 0xFFFD,\n    0xB64D, 0xB534, 0xB3F2, 0xB297, 0xB131, 0xAFD0, 0xAE84, 0xAD5C,\n    0xAC68, 0xABB7, 0xAB59, 0xAB5A, 0xABB1, 0xAC4F, 0xAD25, 0xAE22,\n    0xAF37, 0xB055, 0xB16A, 0xB268, 0xB340, 0x0016, 0x0012, 0x000F,\n    0x000F, 0x0011, 0x0014, 0x0018, 0x001D, 0x0029, 0x003C, 0x0051,\n    0x0062, 0x0069, 0x0066, 0x005F, 0x0054, 0x0047, 0x003A, 0x002E,\n    0x0024, 0x001D, 0xFEDE, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDE,\n    0xFEDF, 0xFEE1, 0xFEE4, 0xFEE8, 0xFEED, 0xFEF1, 0xFEF3, 0xFEF2,\n    0xFEF1, 0xFEEE, 0xFEEB, 0xFEE8, 0xFEE5, 0xFEE2, 0xFEE1, 0xDF45,\n    0xDFF4, 0xE04B, 0xE053, 0xE016, 0xDFA0, 0xDEFB, 0xDE31, 0xDC81,\n    0xD9B5, 0xD6A7, 0xD432, 0xD330, 0xD398, 0xD4AD, 0xD63D, 0xD814,\n    0xD9FE, 0xDBC9, 0xDD40, 0xDE31, 0x123E, 0x1235, 0x12A6, 0x1395,\n    0x1506, 0x16FB, 0x197A, 0x1C85, 0x223D, 0x2B08, 0x344D, 0x3B77,\n    0x3DED, 0x3BAE, 0x36F6, 0x308E, 0x2941, 0x21D6, 0x1B16, 0x15CB,\n    0x12BD, 0xEADD, 0xEB2B, 0xEC3A, 0xEDD2, 0xEFBE, 0xF1C6, 0xF3B5,\n    0xF554, 0xF6FC, 0xF8F4, 0xFAED, 0xFC97, 0xFDA0, 0xFE18, 0xFE4C,\n    0xFE4E, 0xFE2A, 0xFDF1, 0xFDB2, 0xFD7B, 0xFD5C, 0xFC33, 0xF968,\n    0xF5B5, 0xF18D, 0xED64, 0xE9AD, 0xE6DE, 0xE568, 0xE67E, 0xEA11,\n    0xEEB2, 0xF2F4, 0xF56A, 0xF647, 0xF6BA, 0xF6CF, 0xF694, 0xF616,\n    0xF560, 0xF481, 0xF385, 0xCD7C, 0xCD27, 0xCC46, 0xCB0C, 0xC9B1,\n    0xC868, 0xC768, 0xC6E5, 0xC713, 0xC7D0, 0xC8D2, 0xC9D0, 0xCA7E,\n    0xCAE3, 0xCB38, 0xCB7F, 0xCBBC, 0xCBF0, 0xCC20, 0xCC4E, 0xCC7D,\n    0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F,\n    0x070A, 0x028B, 0xFDC3, 0xF8DC, 0xF403, 0xEF64, 0xEB2B, 0xE785,\n    0xE49D, 0xE2A0, 0xE1B9, 0xE238, 0xE41E, 0xE726, 0xEB09, 0xEF7F,\n    0xF442, 0xF90A, 0xFD92, 0x0191, 0x04C2, 0x02D7, 0x044A, 0x05CE,\n    0x0756, 0x08D4, 0x0A39, 0x0B79, 0x0C84, 0x0D4E, 0x0DC9, 0x0DE6,\n    0x0D98, 0x0CE6, 0x0BDD, 0x0A8A, 0x08FD, 0x0743, 0x056A, 0x0380,\n    0x0193, 0xFFB2, 0x1949, 0x180A, 0x15DC, 0x1300, 0x0FB2, 0x0C33,\n    0x08C0, 0x0597, 0x02F7, 0x011F, 0x004C, 0x00BB, 0x024B, 0x04B2,\n    0x07A5, 0x0ADA, 0x0E06, 0x10DF, 0x131A, 0x146E, 0x148E, 0xF22E,\n    0xF54C, 0xF90C, 0xFD39, 0x019C, 0x0602, 0x0A35, 0x0DFF, 0x112B,\n    0x1384, 0x14D5, 0x14FA, 0x1416, 0x125C, 0x0FFD, 0x0D2B, 0x0A19,\n    0x06F8, 0x03FB, 0x0154, 0xFF37, 0x1105, 0x0FDF, 0x0E74, 0x0CD4,\n    0x0B0D, 0x092F, 0x0749, 0x056A, 0x03A1, 0x01FE, 0x008F, 0xFF28,\n    0xFD9D, 0xFC04, 0xFA74, 0xF8FF, 0xF7BD, 0xF6C2, 0xF623, 0xF5F6,\n    0xF64F, 0xF985, 0xF88F, 0xF76C, 0xF62E, 0xF4EB, 0xF3B6, 0xF2A2,\n    0xF1C4, 0xF130, 0xF0F8, 0xF132, 0xF210, 0xF39A, 0xF5A5, 0xF808,\n    0xFA97, 0xFD28, 0xFF90, 0x01A4, 0x033C, 0x042B, 0xFCA8, 0x0154,\n    0x0660, 0x0B9C, 0x10D6, 0x15E1, 0x1A8A, 0x1EA4, 0x21FE, 0x2468,\n    0x25B3, 0x25B5, 0x2486, 0x2255, 0x1F53, 0x1BAF, 0x1799, 0x1341,\n    0x0ED7, 0x0A8B, 0x068D, 0x00FA, 0x037B, 0x0616, 0x08B1, 0x0B34,\n    0x0D85, 0x0F8A, 0x112A, 0x124D, 0x12D9, 0x12B4, 0x119C, 0x0F83,\n    0x0C9F, 0x0924, 0x054A, 0x0145, 0xFD4D, 0xF995, 0xF653, 0xF3BE,\n    0x2FA6, 0x2FDF, 0x305C, 0x3109, 0x31D4, 0x32A9, 0x3374, 0x3424,\n    0x34A3, 0x34DF, 0x34C5, 0x3430, 0x3320, 0x31B7, 0x3018, 0x2E66,\n    0x2CC3, 0x2B53, 0x2A38, 0x2995, 0x298D,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_5D.inc.c",
    "content": "static const struct Animation anim_5D[] = {\n    1,\n    189,\n    0,\n    0,\n    0x13,\n    ANIMINDEX_NUMPARTS(anim_5D_indices),\n    anim_5D_values,\n    anim_5D_indices,\n    0,\n};\n\n\nstatic const u16 anim_5D_indices[] = {\n    0x0013, 0x0001, 0x0013, 0x0014, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0027, 0x0001, 0x0000,\n    0x0013, 0x0202, 0x0013, 0x0215, 0x0013, 0x0228,\n    0x0013, 0x01C9, 0x0013, 0x01DC, 0x0013, 0x01EF,\n    0x0013, 0x0190, 0x0013, 0x01A3, 0x0013, 0x01B6,\n    0x0001, 0x018C, 0x0001, 0x018D, 0x0001, 0x018E,\n    0x0013, 0x002C, 0x0013, 0x003F, 0x0013, 0x0052,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x002B,\n    0x0001, 0x0028, 0x0001, 0x0029, 0x0001, 0x002A,\n    0x0001, 0x0188, 0x0001, 0x0189, 0x0001, 0x018A,\n    0x0013, 0x007B, 0x0013, 0x008E, 0x0013, 0x00A1,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0013, 0x0068,\n    0x0001, 0x0065, 0x0001, 0x0066, 0x0001, 0x0067,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x018B,\n    0x0013, 0x014F, 0x0013, 0x0162, 0x0013, 0x0175,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0013, 0x013C,\n    0x0013, 0x0103, 0x0013, 0x0116, 0x0013, 0x0129,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x018F,\n    0x0013, 0x00CA, 0x0013, 0x00DD, 0x0013, 0x00F0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0013, 0x00B7,\n    0x0001, 0x00B4, 0x0001, 0x00B5, 0x0001, 0x00B6,\n};\n\nstatic const s16 anim_5D_values[] = {\n    0x0000, 0x001B, 0x0019, 0x0014, 0x000C, 0x0003, 0xFFFA, 0xFFEF,\n    0xFFE5, 0xFFDD, 0xFFD6, 0xFFD0, 0xFFCA, 0xFFC5, 0xFFC0, 0xFFBB,\n    0xFFB8, 0xFFB7, 0xFFB8, 0xFFBB, 0x00BD, 0x00BE, 0x00C0, 0x00C4,\n    0x00C8, 0x00CC, 0x00D0, 0x00D4, 0x00D6, 0x00D7, 0x00D6, 0x00D4,\n    0x00D1, 0x00CD, 0x00C9, 0x00C5, 0x00C1, 0x00BE, 0x00BD, 0x3FFF,\n    0xFF8A, 0xF980, 0xF06F, 0xF085, 0xF955, 0xFAFC, 0xFF7E, 0x062F,\n    0x0E64, 0x1770, 0x20A9, 0x2962, 0x30EF, 0x36A4, 0x3AF9, 0x3ED6,\n    0x4237, 0x4518, 0x4775, 0x494B, 0x4A94, 0x4B4E, 0x4B74, 0xCD9D,\n    0xCE25, 0xCF94, 0xD1AD, 0xD433, 0xD6E9, 0xD992, 0xDBF0, 0xDDC8,\n    0xDEDA, 0xDF0F, 0xDE94, 0xDD9E, 0xDC5D, 0xDB04, 0xD9C5, 0xD8D2,\n    0xD85E, 0xD899, 0xD6A1, 0xD3FA, 0xCCB7, 0xC1E3, 0xB48D, 0xA5BE,\n    0x9684, 0x87EA, 0x7AFB, 0x70C7, 0x6869, 0x6066, 0x58DF, 0x51F9,\n    0x4BD7, 0x469D, 0x426E, 0x3F6D, 0x3DBE, 0x0F57, 0x0217, 0xF7EF,\n    0xF913, 0xF917, 0xF920, 0xF92E, 0xF940, 0xF954, 0xF96A, 0xF97F,\n    0xF993, 0xF9A5, 0xF9B3, 0xF9BD, 0xF9C0, 0xF9BC, 0xF9B0, 0xF99A,\n    0xF97A, 0xF94D, 0xF913, 0x0DB8, 0x0C64, 0x08C9, 0x037D, 0xFD16,\n    0xF624, 0xEF3E, 0xE8F8, 0xE3E7, 0xE09F, 0xE0B1, 0xE461, 0xEA54,\n    0xF12E, 0xFA7D, 0x06AE, 0x12BC, 0x1B9A, 0x1E40, 0x1A58, 0x199A,\n    0x17A8, 0x14ED, 0x11D1, 0x0EBE, 0x0C20, 0x0A5F, 0x09E7, 0x0B20,\n    0x12C0, 0x20E9, 0x2F29, 0x370E, 0x36B1, 0x320B, 0x2B80, 0x2572,\n    0x2243, 0x5C3E, 0x5BD1, 0x5ABB, 0x594A, 0x57CB, 0x568B, 0x55D6,\n    0x55F9, 0x5742, 0x59FC, 0x60E8, 0x6CEC, 0x7B94, 0x8A6E, 0x9BEC,\n    0xB11C, 0xC569, 0xD43F, 0xD907, 0x001B, 0x025B, 0xCB25, 0x4F2E,\n    0x4C24, 0x457E, 0x3EF1, 0x3C33, 0x3ED9, 0x4496, 0x4B3E, 0x50AB,\n    0x52B3, 0x4EC7, 0x4677, 0x3DC6, 0x38BB, 0x387F, 0x3AA6, 0x3DD2,\n    0x40A3, 0x41BC, 0x0F26, 0x0F50, 0x0FC0, 0x1062, 0x1122, 0x11EE,\n    0x12B0, 0x1355, 0x13C9, 0x13F9, 0x13E4, 0x139F, 0x1334, 0x12AC,\n    0x1210, 0x116B, 0x10C5, 0x1029, 0x0FA0, 0xFFFD, 0x0081, 0x01E5,\n    0x03EF, 0x0661, 0x0901, 0x0B93, 0x0DDB, 0x0F9D, 0x109D, 0x10CC,\n    0x105B, 0x0F76, 0x0E47, 0x0CF9, 0x0BB5, 0x0AA8, 0x09FA, 0x09D7,\n    0xB340, 0xB377, 0xB40E, 0xB4EA, 0xB5F2, 0xB70C, 0xB821, 0xB915,\n    0xB9D1, 0xBA3A, 0xBA5E, 0xBA5D, 0xBA39, 0xB9F5, 0xB995, 0xB91B,\n    0xB889, 0xB7E4, 0xB72D, 0x001D, 0x001D, 0x001A, 0x0018, 0x0015,\n    0x0013, 0x0012, 0x0013, 0x0017, 0x001D, 0x0034, 0x005A, 0x007E,\n    0x008E, 0x0083, 0x006A, 0x004B, 0x002F, 0x001D, 0xFEE1, 0xFEE0,\n    0xFEE0, 0xFEDF, 0xFEDE, 0xFEDD, 0xFEDD, 0xFEDD, 0xFEDF, 0xFEE1,\n    0xFEE8, 0xFEF4, 0xFEFF, 0xFF05, 0xFF01, 0xFEF9, 0xFEEF, 0xFEE6,\n    0xFEE1, 0xDE31, 0xDE51, 0xDEA3, 0xDF0C, 0xDF76, 0xDFC7, 0xDFE8,\n    0xDFBF, 0xDF35, 0xDE31, 0xDADB, 0xD532, 0xCFDA, 0xCD7B, 0xCF04,\n    0xD2BF, 0xD762, 0xDBA1, 0xDE31, 0x12BD, 0x137D, 0x1587, 0x1888,\n    0x1C2E, 0x2027, 0x2421, 0x27CA, 0x2ACF, 0x2CDF, 0x2D29, 0x2B96,\n    0x28EB, 0x25EC, 0x2230, 0x1D6D, 0x189F, 0x14BC, 0x12BD, 0xFD5C,\n    0xFD47, 0xFD11, 0xFCC8, 0xFC7B, 0xFC38, 0xFC0C, 0xFC07, 0xFC36,\n    0xFCA8, 0xFEA9, 0x021B, 0x04EE, 0x0510, 0x0162, 0xFB49, 0xF478,\n    0xEEA6, 0xEB85, 0xF385, 0xF301, 0xF19A, 0xEF8F, 0xED1B, 0xEA7A,\n    0xE7EA, 0xE5A7, 0xE3ED, 0xE2F9, 0xE3BD, 0xE659, 0xE9D2, 0xED2B,\n    0xF0DF, 0xF562, 0xF9AF, 0xFCC5, 0xFDA0, 0xCC7D, 0xCCAA, 0xCD1E,\n    0xCDB9, 0xCE5C, 0xCEEA, 0xCF44, 0xCF4A, 0xCEDE, 0xCDE2, 0xCA4B,\n    0xC415, 0xBE2D, 0xBB7F, 0xBD1F, 0xC130, 0xC633, 0xCAA7, 0xCD0E,\n    0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F,\n    0x04C2, 0x0537, 0x067B, 0x0861, 0x0ABE, 0x0D68, 0x1032, 0x12F2,\n    0x157D, 0x17A6, 0x19EE, 0x1C51, 0x1DDF, 0x1DAB, 0x1B70, 0x17EA,\n    0x13A5, 0x0F2E, 0x0B13, 0xFFB2, 0xFEF6, 0xFCFE, 0xFA1F, 0xF6B1,\n    0xF30B, 0xEF84, 0xEC73, 0xEA2E, 0xE90E, 0xEAEF, 0xEFEA, 0xF5AF,\n    0xF9EF, 0xFC43, 0xFDF6, 0xFF41, 0x005C, 0x0183, 0x148E, 0x13B2,\n    0x115B, 0x0DE2, 0x09A1, 0x04F2, 0x002F, 0xFBB3, 0xF7D6, 0xF4F2,\n    0xF334, 0xF2BD, 0xF3DC, 0xF6DD, 0xFCF2, 0x05A2, 0x0EBC, 0x160B,\n    0x195D, 0xFF37, 0xFED0, 0xFDB8, 0xFC1B, 0xFA25, 0xF801, 0xF5DA,\n    0xF3DC, 0xF234, 0xF10B, 0xF028, 0xEF40, 0xEE6B, 0xEDC0, 0xED54,\n    0xED3E, 0xED96, 0xEE71, 0xEFE6, 0xF64F, 0xF6F3, 0xF8B0, 0xFB43,\n    0xFE67, 0x01D8, 0x0554, 0x0895, 0x0B57, 0x0D57, 0x0EC4, 0x0FFA,\n    0x10F9, 0x11BC, 0x1243, 0x128C, 0x1293, 0x1258, 0x11D7, 0x042B,\n    0x03F3, 0x035A, 0x0278, 0x0163, 0x0033, 0xFF00, 0xFDDF, 0xFCE8,\n    0xFC32, 0xFBBF, 0xFB78, 0xFB50, 0xFB3C, 0xFB2E, 0xFB1A, 0xFAF2,\n    0xFAAC, 0xFA39, 0x068D, 0x051B, 0x0136, 0xFB8E, 0xF4CB, 0xED9C,\n    0xE6AD, 0xE0AB, 0xDC42, 0xDA1E, 0xDA2C, 0xDBB5, 0xDE72, 0xE21C,\n    0xE66B, 0xEB17, 0xEFDB, 0xF46E, 0xF889, 0xF3BE, 0xF341, 0xF1F4,\n    0xF018, 0xEDEC, 0xEBB2, 0xE9A9, 0xE811, 0xE72C, 0xE739, 0xE84B,\n    0xEA2A, 0xECA9, 0xEF9A, 0xF2CF, 0xF619, 0xF94B, 0xFC36, 0xFEAC,\n    0x298D, 0x2A1E, 0x2BA4, 0x2DDD, 0x3084, 0x3356, 0x3611, 0x3871,\n    0x3A32, 0x3B12, 0x3AFC, 0x3A2B, 0x38CF, 0x3718, 0x3536, 0x3359,\n    0x31B2, 0x3070, 0x2FC5,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_5E.inc.c",
    "content": "static const struct Animation anim_5E[] = {\n    1,\n    189,\n    0,\n    0,\n    0x9B,\n    ANIMINDEX_NUMPARTS(anim_5E_indices),\n    anim_5E_values,\n    anim_5E_indices,\n    0,\n};\n\n\nstatic const u16 anim_5E_indices[] = {\n    0x0001, 0x0000, 0x009B, 0x0001, 0x009B, 0x009C, 0x0001, 0x0000, 0x0001, 0x0137, 0x0001, 0x0000,\n    0x009B, 0x15D6, 0x009B, 0x1671, 0x009B, 0x170C,\n    0x009B, 0x1405, 0x009B, 0x14A0, 0x009B, 0x153B,\n    0x009B, 0x1234, 0x009B, 0x12CF, 0x009B, 0x136A,\n    0x0001, 0x1230, 0x0001, 0x1231, 0x0001, 0x1232,\n    0x009B, 0x03A4, 0x009B, 0x043F, 0x009B, 0x04DA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x009B, 0x0309,\n    0x009B, 0x0138, 0x009B, 0x01D3, 0x009B, 0x026E,\n    0x0001, 0x122C, 0x0001, 0x122D, 0x0001, 0x122E,\n    0x009B, 0x07E1, 0x009B, 0x087C, 0x009B, 0x0917,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x009B, 0x0746,\n    0x009B, 0x0575, 0x009B, 0x0610, 0x009B, 0x06AB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x122F,\n    0x009B, 0x105B, 0x009B, 0x10F6, 0x009B, 0x1191,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x009B, 0x0FC0,\n    0x009B, 0x0DEF, 0x009B, 0x0E8A, 0x009B, 0x0F25,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x1233,\n    0x009B, 0x0C1E, 0x009B, 0x0CB9, 0x009B, 0x0D54,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x009B, 0x0B83,\n    0x009B, 0x09B2, 0x009B, 0x0A4D, 0x009B, 0x0AE8,\n};\n\nstatic const s16 anim_5E_values[] = {\n    0x0000, 0x00AA, 0x00AA, 0x00AB, 0x00AB, 0x00AC, 0x00AD, 0x00AE,\n    0x00AF, 0x00B0, 0x00B0, 0x00B1, 0x00B1, 0x00B1, 0x00B1, 0x00B2,\n    0x00B2, 0x00B2, 0x00B2, 0x00B2, 0x00B2, 0x00B2, 0x00B2, 0x00B2,\n    0x00B2, 0x00B2, 0x00B2, 0x00B2, 0x00B2, 0x00B2, 0x00B2, 0x00B2,\n    0x00B2, 0x00B2, 0x00B2, 0x00B2, 0x00B2, 0x00B2, 0x00B2, 0x00B2,\n    0x00B2, 0x00B2, 0x00B2, 0x00B2, 0x00B2, 0x00B2, 0x00B2, 0x00B2,\n    0x00B1, 0x00B1, 0x00B1, 0x00B1, 0x00B1, 0x00B1, 0x00B1, 0x00B0,\n    0x00B0, 0x00B0, 0x00B0, 0x00AF, 0x00AF, 0x00AE, 0x00AC, 0x00AB,\n    0x00A9, 0x00A6, 0x00A4, 0x00A1, 0x009C, 0x0097, 0x0093, 0x0090,\n    0x008F, 0x008E, 0x008D, 0x008D, 0x008D, 0x008D, 0x008E, 0x008F,\n    0x0090, 0x0093, 0x0097, 0x009C, 0x00A1, 0x00A6, 0x00AB, 0x00AE,\n    0x00AF, 0x00AF, 0x00AD, 0x00A9, 0x00A5, 0x00A1, 0x009E, 0x009B,\n    0x009A, 0x009B, 0x009D, 0x00A0, 0x00A3, 0x00A7, 0x00AA, 0x00AD,\n    0x00AE, 0x00AF, 0x00AF, 0x00AF, 0x00AF, 0x00AE, 0x00AE, 0x00AD,\n    0x00AD, 0x00AC, 0x00AC, 0x00AC, 0x00AD, 0x00AD, 0x00AE, 0x00AE,\n    0x00AF, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B3, 0x00B4, 0x00B4,\n    0x00B4, 0x00B5, 0x00B4, 0x00B4, 0x00B4, 0x00B4, 0x00B3, 0x00B3,\n    0x00B2, 0x00B2, 0x00B1, 0x00B0, 0x00B0, 0x00B0, 0x00AF, 0x00AF,\n    0x00AE, 0x00AE, 0x00AD, 0x00AD, 0x00AC, 0x00AC, 0x00AB, 0x00AB,\n    0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFD, 0xFFFD, 0xFFFE, 0xFFFF,\n    0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFE,\n    0xFFFE, 0xFFFD, 0xFFFD, 0xFFFC, 0xFFFD, 0xFFFD, 0xFFFE, 0xFFFE,\n    0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FFF,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0145, 0x03D1, 0x05BA, 0x0517, 0x0000, 0xF587, 0xE726,\n    0xD690, 0xC575, 0xB588, 0xA87B, 0xA42D, 0xA796, 0xAEAC, 0xB7E5,\n    0xBE5C, 0xC14D, 0xC35C, 0xC4BB, 0xC59A, 0xC62B, 0xC69F, 0xC706,\n    0xC754, 0xC78C, 0xC7B0, 0xC7C5, 0xC7CE, 0xC7CE, 0xC7C8, 0xC7C1,\n    0xC7BC, 0xC7BC, 0xC7C4, 0xC7D8, 0xC7FB, 0xC832, 0xC87E, 0xC8E4,\n    0xC968, 0xCA3F, 0xCB8B, 0xCD28, 0xCEF7, 0xD0D7, 0xD2A5, 0xD443,\n    0xD58D, 0xD5FF, 0xD5AD, 0xD55F, 0xD555, 0xD54B, 0xD540, 0xD537,\n    0xD52D, 0xD524, 0xD51B, 0xD513, 0xD50C, 0xD505, 0xD500, 0xD4FD,\n    0xD4FC, 0xD4FD, 0xD4FE, 0xD501, 0xD503, 0xD504, 0xD503, 0xD500,\n    0xD4FB, 0xD4F6, 0xD4F0, 0xD4E9, 0xD4E2, 0xD4DB, 0xD4D3, 0xD4CC,\n    0xD4C4, 0xD4BC, 0xD4B5, 0xD4AE, 0xD4A7, 0xD4A1, 0xD49B, 0xD496,\n    0xD496, 0xD49B, 0xD4A2, 0xD4AA, 0xD4B0, 0xD4B0, 0xD4A9, 0xD496,\n    0xD481, 0xD470, 0xD461, 0xD450, 0xD43C, 0xD420, 0xD3FA, 0xD3C7,\n    0xD385, 0xD330, 0xD2C6, 0xD20E, 0xD0EA, 0xCF7E, 0xCDEB, 0xCC57,\n    0xCAE4, 0xC9B7, 0xC8F1, 0xC8B8, 0xC92D, 0xCA75, 0xCC8A, 0xCF3F,\n    0xD27B, 0xD626, 0xDA27, 0xDE68, 0xE2CE, 0xE742, 0xEBAC, 0xEFF3,\n    0xF400, 0xF7B9, 0xFB07, 0xFDD2, 0x0000, 0x0197, 0x02B6, 0x036B,\n    0x03C4, 0x03D0, 0x039E, 0x033B, 0x02B6, 0x021E, 0x0181, 0x00EE,\n    0x0073, 0x001F, 0x0000, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C,\n    0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF9DB, 0xFA9B, 0xFB2A, 0xFAFA,\n    0xF97C, 0xF5FF, 0xF0DF, 0xEB19, 0xE5AB, 0xE192, 0xDFCD, 0xEA98,\n    0xF741, 0xF740, 0xF392, 0xF115, 0xF12F, 0xF1D9, 0xF2D0, 0xF3CE,\n    0xF491, 0xF4D3, 0xF4B2, 0xF47C, 0xF432, 0xF3D8, 0xF372, 0xF302,\n    0xF28B, 0xF211, 0xF196, 0xF11D, 0xF0AB, 0xF040, 0xEFE2, 0xEF92,\n    0xEF54, 0xEF2B, 0xEF1A, 0xEF24, 0xEF7D, 0xF044, 0xF15B, 0xF2A2,\n    0xF3FC, 0xF54C, 0xF671, 0xF74F, 0xF77C, 0xF712, 0xF6B4, 0xF694,\n    0xF673, 0xF652, 0xF633, 0xF614, 0xF5F7, 0xF5DB, 0xF5C2, 0xF5AB,\n    0xF597, 0xF586, 0xF57C, 0xF579, 0xF57B, 0xF580, 0xF587, 0xF58D,\n    0xF591, 0xF58F, 0xF586, 0xF578, 0xF568, 0xF555, 0xF541, 0xF52C,\n    0xF516, 0xF4FF, 0xF4E7, 0xF4D0, 0xF4B8, 0xF4A2, 0xF48C, 0xF478,\n    0xF465, 0xF454, 0xF446, 0xF43F, 0xF442, 0xF44B, 0xF456, 0xF45F,\n    0xF462, 0xF45B, 0xF446, 0xF429, 0xF40C, 0xF3EE, 0xF3CD, 0xF3A7,\n    0xF37C, 0xF349, 0xF30C, 0xF2C5, 0xF271, 0xF20F, 0xF188, 0xF0D2,\n    0xEFFB, 0xEF10, 0xEE1F, 0xED38, 0xEC69, 0xEBBF, 0xEB49, 0xEB14,\n    0xEB31, 0xEB97, 0xEC33, 0xECFD, 0xEDED, 0xEEFC, 0xF021, 0xF155,\n    0xF291, 0xF3CC, 0xF500, 0xF624, 0xF730, 0xF81D, 0xF8E4, 0xF97C,\n    0xF9E8, 0xFA35, 0xFA65, 0xFA7D, 0xFA80, 0xFA73, 0xFA58, 0xFA35,\n    0xFA0D, 0xF9E3, 0xF9BB, 0xF99B, 0xF984, 0xF97C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED26,\n    0xEC5A, 0xEBC1, 0xEBF4, 0xED8C, 0xF0D9, 0xF567, 0xFAA6, 0x0005,\n    0x04F6, 0x08E8, 0x095C, 0x079A, 0x05C5, 0x03B7, 0x0315, 0x0465,\n    0x06A9, 0x0949, 0x0BAA, 0x0D33, 0x0D4B, 0x0C54, 0x0B1E, 0x09AF,\n    0x0811, 0x064B, 0x0464, 0x0266, 0x0058, 0xFE43, 0xFC2C, 0xFA1E,\n    0xF81F, 0xF638, 0xF471, 0xF2D1, 0xF161, 0xF029, 0xEF31, 0xEED1,\n    0xEF3C, 0xF042, 0xF1AF, 0xF352, 0xF4F9, 0xF672, 0xF78D, 0xF824,\n    0xF864, 0xF88D, 0xF8C3, 0xF8F8, 0xF92D, 0xF960, 0xF992, 0xF9C1,\n    0xF9ED, 0xFA16, 0xFA3B, 0xFA5C, 0xFA77, 0xFA88, 0xFA8D, 0xFA8A,\n    0xFA81, 0xFA75, 0xFA6B, 0xFA66, 0xFA69, 0xFA77, 0xFA8E, 0xFAA8,\n    0xFAC6, 0xFAE7, 0xFB09, 0xFB2E, 0xFB53, 0xFB79, 0xFB9F, 0xFBC5,\n    0xFBEA, 0xFC0D, 0xFC2E, 0xFC4C, 0xFC67, 0xFC7F, 0xFC88, 0xFC7E,\n    0xFC68, 0xFC50, 0xFC3E, 0xFC3A, 0xFC4D, 0xFC7F, 0xFCBF, 0xFCF8,\n    0xFD30, 0xFD6D, 0xFDB5, 0xFE0F, 0xFE7F, 0xFF0C, 0xFFBC, 0x0094,\n    0x019C, 0x0310, 0x0511, 0x0774, 0x0A12, 0x0CC1, 0x0F59, 0x11B0,\n    0x139D, 0x14F7, 0x1596, 0x1550, 0x1438, 0x128A, 0x105B, 0x0DC0,\n    0x0AD0, 0x079F, 0x0444, 0x00D4, 0xFD65, 0xFA0C, 0xF6DE, 0xF3F2,\n    0xF15C, 0xEF33, 0xED8C, 0xEC5D, 0xEB88, 0xEB01, 0xEABF, 0xEAB6,\n    0xEADC, 0xEB25, 0xEB88, 0xEBF9, 0xEC6D, 0xECDA, 0xED36, 0xED74,\n    0xED8C, 0xCA4F, 0xCB56, 0xCE19, 0xD21D, 0xD6E5, 0xDBF6, 0xE0D5,\n    0xE506, 0xE80D, 0xE9D7, 0xEAAD, 0xEA9E, 0xE9B9, 0xE80D, 0xE5AE,\n    0xE2BD, 0xDF60, 0xDBBE, 0xD7FE, 0xD447, 0xD0BE, 0xCD8B, 0xCAD4,\n    0xC8C0, 0xC775, 0xC6B0, 0xC612, 0xC599, 0xC542, 0xC50B, 0xC4EF,\n    0xC4EE, 0xC504, 0xC52F, 0xC56C, 0xC5B8, 0xC611, 0xC674, 0xC6DE,\n    0xC74D, 0xC7BE, 0xC82E, 0xC89B, 0xC903, 0xC961, 0xC9B4, 0xC9F9,\n    0xCA2E, 0xCA4F, 0xCA54, 0xCA3C, 0xCA17, 0xC9EF, 0xC9D4, 0xC9D2,\n    0xC9F7, 0xCA4F, 0xCB64, 0xCD4B, 0xCF69, 0xD186, 0xD3CB, 0xD629,\n    0xD894, 0xDAFF, 0xDD5D, 0xDF9F, 0xE1BB, 0xE3A1, 0xE545, 0xE699,\n    0xE786, 0xE809, 0xE835, 0xE81F, 0xE7DB, 0xE77E, 0xE71C, 0xE6C9,\n    0xE699, 0xE680, 0xE662, 0xE641, 0xE61D, 0xE5F6, 0xE5CE, 0xE5A4,\n    0xE57A, 0xE550, 0xE526, 0xE4FD, 0xE4D6, 0xE4B1, 0xE48F, 0xE471,\n    0xE457, 0xE47A, 0xE4F3, 0xE592, 0xE627, 0xE682, 0xE673, 0xE5CA,\n    0xE457, 0xE215, 0xDF35, 0xDBDC, 0xD82A, 0xD444, 0xD04C, 0xCC64,\n    0xC8AF, 0xC550, 0xC26A, 0xC020, 0xBE42, 0xBC90, 0xBB12, 0xB9CD,\n    0xB8C9, 0xB80E, 0xB7A2, 0xB78D, 0xB7D5, 0xB882, 0xB99B, 0xBB3C,\n    0xBD6E, 0xC018, 0xC322, 0xC674, 0xC9F6, 0xCD8F, 0xD128, 0xD4A8,\n    0xD7F8, 0xDAFE, 0xDDA3, 0xDFCF, 0xE169, 0xE259, 0xE27E, 0xE1DD,\n    0xE093, 0xDEC2, 0xDC88, 0xDA04, 0xD756, 0xD49E, 0xD1FB, 0xCF8C,\n    0xCD70, 0xCBC8, 0xCAB3, 0xCA4F, 0xFB1D, 0xFB30, 0xFB65, 0xFBB1,\n    0xFC0C, 0xFC6D, 0xFCCA, 0xFD19, 0xFD53, 0xFC53, 0xFA1E, 0xF86A,\n    0xF8EA, 0xFD53, 0x05A1, 0x1041, 0x1C89, 0x29D4, 0x3779, 0x44D3,\n    0x5139, 0x5C06, 0x6491, 0x6A35, 0x6C4A, 0x6A95, 0x65AC, 0x5E1D,\n    0x5477, 0x494B, 0x3D26, 0x3098, 0x2431, 0x187E, 0x0E10, 0x0575,\n    0xFF3E, 0xFB1F, 0xF84E, 0xF699, 0xF5CC, 0xF5B4, 0xF61E, 0xF6D7,\n    0xF7AD, 0xF86B, 0xF8E0, 0xF8D7, 0xF81F, 0xF658, 0xF3A8, 0xF0A7,\n    0xEDEA, 0xEC06, 0xEAA7, 0xE925, 0xE79C, 0xE627, 0xE4E2, 0xE3E8,\n    0xE355, 0xE344, 0xE3D1, 0xE517, 0xE802, 0xECE8, 0xF306, 0xF999,\n    0xFFDF, 0x0513, 0x0873, 0x0A3E, 0x0B48, 0x0BB4, 0x0BA1, 0x0B32,\n    0x0A88, 0x09C4, 0x0908, 0x0873, 0x07F3, 0x075E, 0x06B7, 0x0600,\n    0x053E, 0x0472, 0x03A0, 0x02CB, 0x01F5, 0x0122, 0x0055, 0xFF91,\n    0xFED8, 0xFE2E, 0xFD94, 0xFD10, 0xFCFD, 0xFD84, 0xFE5C, 0xFF39,\n    0xFFD1, 0xFFD9, 0xFF07, 0xFD10, 0xF9E8, 0xF5D8, 0xF117, 0xEBD9,\n    0xE654, 0xE0BC, 0xDB47, 0xD62B, 0xD19C, 0xCDD0, 0xCAFC, 0xC8E8,\n    0xC739, 0xC5F1, 0xC512, 0xC49D, 0xC495, 0xC4FB, 0xC5D1, 0xC718,\n    0xC8D3, 0xCB04, 0xCDD2, 0xD152, 0xD567, 0xD9F3, 0xDED9, 0xE3FB,\n    0xE93D, 0xEE80, 0xF3A7, 0xF896, 0xFD2E, 0x0151, 0x04E4, 0x07C8,\n    0x09E1, 0x0B18, 0x0B7F, 0x0B35, 0x0A56, 0x0900, 0x0751, 0x0565,\n    0x035C, 0x0152, 0xFF65, 0xFDB2, 0xFC56, 0xFB70, 0xFB1D, 0xD2DC,\n    0xD38C, 0xD565, 0xD814, 0xDB46, 0xDEA9, 0xE1EB, 0xE4B9, 0xE6BF,\n    0xE7F8, 0xE893, 0xE891, 0xE7F5, 0xE6BF, 0xE503, 0xE2E3, 0xE07A,\n    0xDDDF, 0xDB2D, 0xD87D, 0xD5E8, 0xD387, 0xD174, 0xCFC8, 0xCE9C,\n    0xCDE3, 0xCD77, 0xCD51, 0xCD66, 0xCDAF, 0xCE22, 0xCEB6, 0xCF62,\n    0xD01D, 0xD0DF, 0xD19E, 0xD251, 0xD31F, 0xD429, 0xD560, 0xD6B6,\n    0xD81B, 0xD980, 0xDAD6, 0xDC0F, 0xDD1A, 0xDDEA, 0xDE6E, 0xDE98,\n    0xDD45, 0xDA25, 0xD666, 0xD338, 0xD1C9, 0xD1CF, 0xD230, 0xD2E0,\n    0xD3D2, 0xD4F8, 0xD646, 0xD7AE, 0xD925, 0xDA9D, 0xDC09, 0xDDAE,\n    0xDFBB, 0xE1FD, 0xE444, 0xE65E, 0xE81A, 0xE946, 0xE9EF, 0xEA4D,\n    0xEA6D, 0xEA5F, 0xEA2F, 0xE9ED, 0xE9A7, 0xE96A, 0xE946, 0xE930,\n    0xE917, 0xE8FB, 0xE8DC, 0xE8BB, 0xE899, 0xE876, 0xE852, 0xE82E,\n    0xE80A, 0xE7E8, 0xE7C7, 0xE7A8, 0xE78B, 0xE771, 0xE75B, 0xE72F,\n    0xE6E4, 0xE690, 0xE648, 0xE622, 0xE635, 0xE696, 0xE75B, 0xE896,\n    0xEA3B, 0xEC2D, 0xEE54, 0xF092, 0xF2CF, 0xF4EF, 0xF6D8, 0xF86E,\n    0xF997, 0xFA38, 0xFA4B, 0xF9E7, 0xF921, 0xF80E, 0xF6C0, 0xF54D,\n    0xF3C9, 0xF247, 0xF0DD, 0xEF9E, 0xEE9E, 0xEDCE, 0xED0E, 0xEC5C,\n    0xEBB5, 0xEB16, 0xEA7B, 0xE9E4, 0xE94B, 0xE8B0, 0xE80E, 0xE764,\n    0xE6AE, 0xE5E9, 0xE513, 0xE429, 0xE315, 0xE1CC, 0xE058, 0xDEC7,\n    0xDD23, 0xDB7A, 0xD9D6, 0xD843, 0xD6CE, 0xD582, 0xD46B, 0xD395,\n    0xD30C, 0xD2DC, 0xD4B4, 0xD49B, 0xD457, 0xD3F6, 0xD382, 0xD307,\n    0xD290, 0xD22B, 0xD1E1, 0xD400, 0xD882, 0xDBF4, 0xDAE5, 0xD1E1,\n    0xC14E, 0xAC9A, 0x94E2, 0x7B3E, 0x60D1, 0x46B3, 0x2E01, 0x17D8,\n    0x0552, 0xF78D, 0xEFA4, 0xEDC1, 0xF0C2, 0xF7D7, 0x022C, 0x0EF3,\n    0x1D58, 0x2C8A, 0x3BB6, 0x4A0D, 0x56BB, 0x60EF, 0x67D8, 0x6BC4,\n    0x6DC8, 0x6E3F, 0x6D86, 0x6BF5, 0x69E9, 0x67BD, 0x65CB, 0x646D,\n    0x6400, 0x64DE, 0x6762, 0x6EA6, 0x7B65, 0x8A72, 0x9896, 0xA2A3,\n    0xA96C, 0xAFDB, 0xB5E1, 0xBB6F, 0xC075, 0xC4E4, 0xC8AC, 0xCBBE,\n    0xCE0B, 0xCF82, 0xCEF7, 0xCBD8, 0xC706, 0xC160, 0xBBC5, 0xB715,\n    0xB430, 0xB2BE, 0xB1C8, 0xB140, 0xB11A, 0xB147, 0xB1BB, 0xB266,\n    0xB33D, 0xB430, 0xB547, 0xB68C, 0xB7F8, 0xB984, 0xBB2B, 0xBCE7,\n    0xBEAF, 0xC07F, 0xC24F, 0xC41A, 0xC5D9, 0xC784, 0xC917, 0xCA8A,\n    0xCBD7, 0xCCF8, 0xCDEA, 0xCEA9, 0xCF2D, 0xCF6C, 0xCF5C, 0xCEF4,\n    0xCE2B, 0xCCF8, 0xCB42, 0xC90D, 0xC675, 0xC39A, 0xC098, 0xBD8E,\n    0xBA9B, 0xB7DB, 0xB56D, 0xB370, 0xB200, 0xB106, 0xB053, 0xAFE4,\n    0xAFB5, 0xAFC3, 0xB00A, 0xB088, 0xB138, 0xB217, 0xB323, 0xB458,\n    0xB5C8, 0xB783, 0xB97B, 0xBBA6, 0xBDF8, 0xC064, 0xC2DF, 0xC55D,\n    0xC7D3, 0xCA34, 0xCC74, 0xCE89, 0xD065, 0xD1FE, 0xD348, 0xD443,\n    0xD500, 0xD584, 0xD5D7, 0xD600, 0xD607, 0xD5F1, 0xD5C8, 0xD591,\n    0xD555, 0xD519, 0xD4E5, 0xD4C1, 0xD4B4, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFEE7, 0xFDCD,\n    0x0000, 0x05F6, 0x0D79, 0x15D4, 0x1E51, 0x263D, 0x2CE4, 0x3190,\n    0x3394, 0x3350, 0x31A3, 0x2F6B, 0x2D86, 0x2CD4, 0x2D28, 0x2DB8,\n    0x2E77, 0x2F58, 0x304E, 0x314A, 0x3241, 0x3325, 0x33E7, 0x347C,\n    0x34D6, 0x34F3, 0x34DF, 0x34A5, 0x344D, 0x33E2, 0x336B, 0x32F4,\n    0x3285, 0x3228, 0x31E6, 0x31C9, 0x31DA, 0x3223, 0x32A2, 0x334B,\n    0x3414, 0x34F2, 0x35D9, 0x36C0, 0x379B, 0x385F, 0x3911, 0x39BB,\n    0x3A59, 0x3AF4, 0x3B96, 0x3C3C, 0x3CE3, 0x3D89, 0x3E29, 0x3EC1,\n    0x3F4F, 0x3FCF, 0x403D, 0x4098, 0x40D0, 0x40DF, 0x40D0, 0x40B0,\n    0x4089, 0x4068, 0x4058, 0x4064, 0x4098, 0x40EC, 0x414D, 0x41BA,\n    0x4231, 0x42AF, 0x4334, 0x43BD, 0x4448, 0x44D3, 0x455C, 0x45E2,\n    0x4662, 0x46DA, 0x4749, 0x47AD, 0x4804, 0x4835, 0x4838, 0x481B,\n    0x47F1, 0x47C9, 0x47B3, 0x47C1, 0x4804, 0x4873, 0x48FC, 0x4999,\n    0x4A46, 0x4AFF, 0x4BBE, 0x4C80, 0x4D40, 0x4DF9, 0x4EA7, 0x4F46,\n    0x5024, 0x5174, 0x530B, 0x54BB, 0x5659, 0x57B9, 0x58AE, 0x590C,\n    0x58A7, 0x5752, 0x54E2, 0x5154, 0x4CDB, 0x479B, 0x41BA, 0x3B5A,\n    0x34A2, 0x2DB5, 0x26B8, 0x1FCF, 0x191F, 0x12CD, 0x0CFC, 0x07D1,\n    0x0371, 0x0000, 0xFD7A, 0xFBB3, 0xFA95, 0xFA07, 0xF9F4, 0xFA44,\n    0xFAE1, 0xFBB3, 0xFCA4, 0xFD9D, 0xFE86, 0xFF49, 0xFFCF, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xFF9E, 0xFF3C, 0x0000, 0x0206, 0x0486, 0x074C, 0x0A27,\n    0x0CE4, 0x0F51, 0x113B, 0x1284, 0x134A, 0x13B9, 0x13FE, 0x1446,\n    0x14BB, 0x1563, 0x1621, 0x16ED, 0x17BF, 0x188F, 0x1954, 0x1A08,\n    0x1AA2, 0x1B1A, 0x1B68, 0x1B85, 0x1B6A, 0x1B1E, 0x1AA9, 0x1A13,\n    0x1965, 0x18A8, 0x17E4, 0x1721, 0x1669, 0x15C4, 0x1539, 0x14D3,\n    0x1493, 0x1471, 0x1467, 0x146F, 0x1483, 0x149E, 0x14B8, 0x14CC,\n    0x14D3, 0x14D1, 0x14CF, 0x14CB, 0x14C8, 0x14C4, 0x14C1, 0x14BD,\n    0x14B9, 0x14B6, 0x14B2, 0x14AF, 0x14AC, 0x14A9, 0x14A7, 0x14A6,\n    0x14A6, 0x14A6, 0x14A7, 0x14A8, 0x14A9, 0x14A9, 0x14A9, 0x14A7,\n    0x14A5, 0x14A2, 0x149F, 0x149C, 0x1499, 0x1495, 0x1491, 0x148D,\n    0x148A, 0x1486, 0x1482, 0x147F, 0x147B, 0x1478, 0x1476, 0x1473,\n    0x1474, 0x1479, 0x1481, 0x1488, 0x148C, 0x148C, 0x1484, 0x1473,\n    0x1460, 0x1453, 0x1447, 0x143B, 0x142A, 0x1412, 0x13F1, 0x13C2,\n    0x1383, 0x1330, 0x12C7, 0x1244, 0x11A6, 0x10F3, 0x102F, 0x0F5E,\n    0x0E85, 0x0DA8, 0x0CCB, 0x0BF3, 0x0B24, 0x0A63, 0x09A6, 0x08E1,\n    0x0818, 0x074B, 0x067D, 0x05B0, 0x04E6, 0x0421, 0x0364, 0x02AF,\n    0x0207, 0x016B, 0x00E0, 0x0066, 0x0000, 0xFFB1, 0xFF7A, 0xFF57,\n    0xFF45, 0xFF43, 0xFF4D, 0xFF60, 0xFF7A, 0xFF97, 0xFFB6, 0xFFD2,\n    0xFFEA, 0xFFFA, 0x0000, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549,\n    0xF549, 0xF549, 0xF549, 0xF549, 0xF533, 0xF51E, 0xF549, 0xF5EC,\n    0xF6E9, 0xF806, 0xF908, 0xF9B4, 0xF9D0, 0xF922, 0xF70B, 0xF391,\n    0xEF6D, 0xEB5A, 0xE813, 0xE651, 0xE5CC, 0xE5B4, 0xE5F7, 0xE682,\n    0xE744, 0xE82A, 0xE922, 0xEA1B, 0xEB01, 0xEBC4, 0xEC50, 0xECB9,\n    0xED1D, 0xED7D, 0xEDD7, 0xEE2D, 0xEE7E, 0xEECA, 0xEF10, 0xEF50,\n    0xEF8B, 0xEFC0, 0xEFEF, 0xF00E, 0xF015, 0xF00B, 0xEFF8, 0xEFE1,\n    0xEFCE, 0xEFC6, 0xEFCF, 0xEFEF, 0xF064, 0xF136, 0xF222, 0xF311,\n    0xF411, 0xF51D, 0xF62E, 0xF740, 0xF84C, 0xF94C, 0xFA3B, 0xFB12,\n    0xFBCC, 0xFC63, 0xFCBD, 0xFCD4, 0xFCB9, 0xFC81, 0xFC40, 0xFC09,\n    0xFBEF, 0xFC07, 0xFC63, 0xFCF5, 0xFD9F, 0xFE5D, 0xFF2D, 0x000A,\n    0x00F2, 0x01E1, 0x02D4, 0x03C7, 0x04B8, 0x05A1, 0x0681, 0x0754,\n    0x0817, 0x08C5, 0x095C, 0x09B2, 0x09B1, 0x097A, 0x092A, 0x08E0,\n    0x08BC, 0x08DB, 0x095C, 0x0A30, 0x0B2D, 0x0C4C, 0x0D88, 0x0EDC,\n    0x1041, 0x11B0, 0x1325, 0x1499, 0x1606, 0x1767, 0x18FB, 0x1AF2,\n    0x1D26, 0x1F75, 0x21BC, 0x23D7, 0x25A2, 0x26FA, 0x27BB, 0x27C3,\n    0x26ED, 0x2542, 0x22F1, 0x2011, 0x1CBC, 0x190B, 0x1515, 0x10F4,\n    0x0CC0, 0x0891, 0x0480, 0x00A6, 0xFD1B, 0xF9F8, 0xF754, 0xF549,\n    0xF3CF, 0xF2C5, 0xF21E, 0xF1CB, 0xF1C0, 0xF1EF, 0xF24A, 0xF2C5,\n    0xF352, 0xF3E4, 0xF46C, 0xF4DE, 0xF52C, 0xF549, 0xC7DD, 0xC8C4,\n    0xCB33, 0xCEC2, 0xD308, 0xD79E, 0xDC1B, 0xE017, 0xE32A, 0xE4FD,\n    0xE52A, 0xE32A, 0xDEFD, 0xD977, 0xD34D, 0xCD38, 0xC7ED, 0xC423,\n    0xC292, 0xC4A5, 0xCA2A, 0xD169, 0xD8AA, 0xDE34, 0xE050, 0xDFF6,\n    0xDF4E, 0xDE5D, 0xDD2B, 0xDBC1, 0xDA24, 0xD85D, 0xD674, 0xD46F,\n    0xD256, 0xD031, 0xCE06, 0xCBDF, 0xC9C1, 0xC7B5, 0xC5C1, 0xC3EE,\n    0xC243, 0xC0C7, 0xBF82, 0xBE7B, 0xBDBA, 0xBD46, 0xBDAB, 0xBF46,\n    0xC1D5, 0xC517, 0xC8CB, 0xCCAF, 0xD082, 0xD403, 0xD6F1, 0xD91C,\n    0xDAAF, 0xDBF1, 0xDD25, 0xDE5F, 0xDF99, 0xE0D1, 0xE201, 0xE325,\n    0xE439, 0xE538, 0xE61E, 0xE6E7, 0xE78E, 0xE816, 0xE884, 0xE8D3,\n    0xE902, 0xE90C, 0xE8EF, 0xE8A8, 0xE833, 0xE78E, 0xE693, 0xE532,\n    0xE389, 0xE1B6, 0xDFD6, 0xDE07, 0xDC67, 0xDB14, 0xDA2B, 0xD9D0,\n    0xD9F7, 0xDA79, 0xDB2D, 0xDBED, 0xDC90, 0xDCEF, 0xDD42, 0xDDC6,\n    0xDE56, 0xDECE, 0xDF0B, 0xDEE7, 0xDE3F, 0xDCEF, 0xDAEF, 0xD865,\n    0xD56F, 0xD22B, 0xCEB8, 0xCB35, 0xC7C0, 0xC478, 0xC17B, 0xBEE8,\n    0xBCDD, 0xBB31, 0xB9AA, 0xB84E, 0xB725, 0xB635, 0xB584, 0xB51B,\n    0xB4FF, 0xB538, 0xB5CB, 0xB6C1, 0xB830, 0xBA1F, 0xBC78, 0xBF26,\n    0xC213, 0xC52C, 0xC85B, 0xCB8A, 0xCEA5, 0xD197, 0xD44B, 0xD6AB,\n    0xD8A2, 0xDA1C, 0xDB04, 0xDB3E, 0xDAD2, 0xD9D9, 0xD86C, 0xD6A7,\n    0xD4A2, 0xD279, 0xD045, 0xCE20, 0xCC25, 0xCA6D, 0xC912, 0xC82F,\n    0xC7DD, 0x054B, 0x056D, 0x05C8, 0x064C, 0x06EC, 0x0796, 0x083E,\n    0x08D2, 0x0945, 0x095E, 0x093A, 0x0945, 0x09DD, 0x0AE8, 0x0C16,\n    0x0D17, 0x0D9C, 0x0D57, 0x0BF8, 0x091E, 0x04E9, 0xFFC4, 0xFA1A,\n    0xF459, 0xEEED, 0xE965, 0xE32F, 0xDC8B, 0xD5B6, 0xCEEF, 0xC874,\n    0xC284, 0xBD5D, 0xB93D, 0xB662, 0xB50B, 0xB71C, 0xBD69, 0xC6A0,\n    0xD16B, 0xDC76, 0xE66D, 0xF061, 0xFB9A, 0x0713, 0x11C7, 0x1AAF,\n    0x20C7, 0x24D7, 0x2846, 0x2B00, 0x2CEE, 0x2DF9, 0x2E0C, 0x2D10,\n    0x2AF0, 0x2795, 0x1C3A, 0x075B, 0xF0C5, 0xD8B1, 0xBDD3, 0xA5A1,\n    0x9592, 0x8D29, 0x87C7, 0x84B2, 0x8332, 0x828D, 0x8209, 0x80ED,\n    0x7F63, 0x7E13, 0x7CF7, 0x7C0C, 0x7B4C, 0x7AB4, 0x7A41, 0x79ED,\n    0x79B6, 0x7996, 0x7991, 0x79AA, 0x79DE, 0x7A27, 0x7A84, 0x7AEF,\n    0x7B65, 0x7BE2, 0x7C63, 0x7CE4, 0x7D60, 0x7DD4, 0x7E3D, 0x7E96,\n    0x7EDB, 0x7E16, 0x7BDE, 0x790A, 0x766E, 0x74E0, 0x7534, 0x7841,\n    0x7EDB, 0x8943, 0x96A9, 0xA65E, 0xB7B0, 0xC9EB, 0xDC5C, 0xEE52,\n    0xFF18, 0x0DFC, 0x1A4C, 0x2354, 0x2937, 0x2CC8, 0x2E5D, 0x2E4E,\n    0x2CF1, 0x2A9D, 0x27AA, 0x246E, 0x2140, 0x1E76, 0x1C69, 0x1AA9,\n    0x1896, 0x163F, 0x13B3, 0x1101, 0x0E37, 0x0B64, 0x0898, 0x05DF,\n    0x034B, 0x00E8, 0xFEC7, 0xFCF4, 0xFB80, 0xFA78, 0xF9F1, 0xF9E6,\n    0xFA46, 0xFAFD, 0xFBFB, 0xFD2C, 0xFE7D, 0xFFDD, 0x0139, 0x027F,\n    0x039D, 0x0480, 0x0515, 0x054B, 0x2BD6, 0x2B34, 0x297F, 0x26FF,\n    0x23FE, 0x20C6, 0x1D9E, 0x1AD2, 0x18A9, 0x1753, 0x1726, 0x18A9,\n    0x1BDC, 0x200B, 0x24B5, 0x2958, 0x2D71, 0x307E, 0x31FE, 0x3110,\n    0x2DE0, 0x297E, 0x24FC, 0x216A, 0x1FD8, 0x1FE6, 0x2071, 0x2166,\n    0x22AF, 0x2439, 0x25EF, 0x27BE, 0x2990, 0x2B52, 0x2CF0, 0x2E54,\n    0x2FAE, 0x3121, 0x328B, 0x33C8, 0x34B5, 0x3530, 0x34FA, 0x3425,\n    0x32FF, 0x31DB, 0x3107, 0x30D4, 0x3114, 0x3167, 0x31D6, 0x3269,\n    0x3328, 0x341B, 0x354C, 0x36C1, 0x3883, 0x3C27, 0x41ED, 0x47E0,\n    0x4DEE, 0x547F, 0x5A56, 0x5E32, 0x6038, 0x617F, 0x6235, 0x6286,\n    0x62A0, 0x62B0, 0x62E3, 0x6347, 0x63C1, 0x6441, 0x64BB, 0x651E,\n    0x655D, 0x6569, 0x6534, 0x64AF, 0x63CB, 0x628F, 0x6111, 0x5F5A,\n    0x5D75, 0x5B6B, 0x5946, 0x570F, 0x54D2, 0x5297, 0x5069, 0x4E51,\n    0x4C5A, 0x4A8C, 0x48F2, 0x4796, 0x46F7, 0x474B, 0x4830, 0x4942,\n    0x4A1F, 0x4A63, 0x49AC, 0x4796, 0x4412, 0x3F7F, 0x3A1E, 0x342F,\n    0x2DF3, 0x27AC, 0x219B, 0x1C01, 0x171E, 0x1334, 0x1085, 0x0F18,\n    0x0EAE, 0x0F1B, 0x1032, 0x11C7, 0x13AC, 0x15B7, 0x17B9, 0x1987,\n    0x1AF5, 0x1BD4, 0x1C4D, 0x1CA6, 0x1CE4, 0x1D0B, 0x1D22, 0x1D2C,\n    0x1D2F, 0x1D2F, 0x1D33, 0x1D3E, 0x1D55, 0x1D7E, 0x1DBE, 0x1E19,\n    0x1E94, 0x1F40, 0x2020, 0x212B, 0x2256, 0x2396, 0x24E1, 0x262D,\n    0x276E, 0x289B, 0x29A9, 0x2A8D, 0x2B3D, 0x2BAE, 0x2BD6, 0xCCF6,\n    0xCD1F, 0xCD8C, 0xCE2D, 0xCEEE, 0xCFBD, 0xD088, 0xD13C, 0xD1C7,\n    0xD3D2, 0xD591, 0xD1C7, 0xC824, 0xBC65, 0xAF5C, 0xA1DA, 0x94B1,\n    0x88B1, 0x7EAA, 0x7728, 0x71A1, 0x6D51, 0x6972, 0x6541, 0x5FF8,\n    0x5966, 0x5208, 0x4A22, 0x41F7, 0x39C9, 0x31DC, 0x2A72, 0x23D0,\n    0x1E38, 0x19EE, 0x1734, 0x17D2, 0x1C92, 0x243B, 0x2D91, 0x375C,\n    0x4060, 0x4975, 0x53BF, 0x5E7D, 0x68ED, 0x724D, 0x79DB, 0x8024,\n    0x861F, 0x8BB7, 0x90D6, 0x9566, 0x9950, 0x9C7E, 0x9ED9, 0xA04A,\n    0x9C2D, 0x916F, 0x855A, 0x7835, 0x6926, 0x5BAC, 0x534A, 0x4FD2,\n    0x4E5F, 0x4E63, 0x4F51, 0x509A, 0x51B2, 0x5209, 0x51AC, 0x5116,\n    0x505F, 0x4F9F, 0x4EED, 0x4E61, 0x4E13, 0x4E1B, 0x4E91, 0x4F8D,\n    0x5101, 0x52C9, 0x54D9, 0x5725, 0x599F, 0x5C3C, 0x5EEF, 0x61AD,\n    0x6467, 0x6713, 0x69A4, 0x6C0E, 0x6E43, 0x7038, 0x71E1, 0x728A,\n    0x71E8, 0x7088, 0x6EF7, 0x6DC4, 0x6D7C, 0x6EAB, 0x71E1, 0x7733,\n    0x7E1D, 0x863F, 0x8F34, 0x989D, 0xA21B, 0xAB4D, 0xB3D2, 0xBB4A,\n    0xC154, 0xC590, 0xC7DF, 0xC895, 0xC7FF, 0xC668, 0xC41F, 0xC16E,\n    0xBEA3, 0xBC0B, 0xB9F1, 0xB8A2, 0xB86A, 0xB90E, 0xBA14, 0xBB6E,\n    0xBD0D, 0xBEE3, 0xC0E2, 0xC2FB, 0xC520, 0xC742, 0xC954, 0xCB47,\n    0xCD0C, 0xCE95, 0xCFD4, 0xD0BB, 0xD149, 0xD190, 0xD199, 0xD16E,\n    0xD118, 0xD0A2, 0xD016, 0xCF7C, 0xCEDF, 0xCE49, 0xCDC3, 0xCD58,\n    0xCD10, 0xCCF6, 0x0000, 0x0000, 0xFFFF, 0xFFFE, 0xFFFC, 0xFFFA,\n    0xFFF7, 0xFFF5, 0xFFF3, 0xFFF2, 0xFFF1, 0xFFF0, 0xFFF0, 0xFFEF,\n    0xFFED, 0xFFEB, 0xFFE9, 0xFFE6, 0xFFE3, 0xFFE0, 0xFFDC, 0xFFD9,\n    0xFFD5, 0xFFD0, 0xFFCC, 0xFFC8, 0xFFC3, 0xFFBF, 0xFFBA, 0xFFB6,\n    0xFFB2, 0xFFAD, 0xFFA9, 0xFFA5, 0xFFA2, 0xFF9E, 0xFF9B, 0xFF99,\n    0xFF96, 0xFF94, 0xFF93, 0xFF91, 0xFF91, 0xFF91, 0xFF91, 0xFF92,\n    0xFF94, 0xFF97, 0xFF9A, 0xFF9E, 0xFFA2, 0xFFA8, 0xFFAE, 0xFFB6,\n    0xFFBE, 0xFFC7, 0xFFD1, 0xFFDC, 0xFFE8, 0xFFF6, 0x0014, 0x0050,\n    0x00A2, 0x0104, 0x016F, 0x01DB, 0x0242, 0x029D, 0x02E6, 0x0314,\n    0x0323, 0x030A, 0x02CE, 0x0276, 0x020A, 0x0192, 0x0116, 0x009D,\n    0x0030, 0xFFD6, 0xFF97, 0xFF77, 0xFF75, 0xFF86, 0xFFA3, 0xFFC5,\n    0xFFE3, 0xFFF6, 0xFFFE, 0x0002, 0x0005, 0x0008, 0x000C, 0x0012,\n    0x001C, 0x002B, 0x0043, 0x0065, 0x008C, 0x00B5, 0x00DB, 0x00FB,\n    0x0110, 0x0116, 0x010E, 0x00FE, 0x00E6, 0x00C9, 0x00A8, 0x0085,\n    0x0063, 0x0042, 0x0024, 0x000C, 0xFFFC, 0xFFF1, 0xFFE8, 0xFFE2,\n    0xFFDE, 0xFFDC, 0xFFDB, 0xFFDB, 0xFFDC, 0xFFDE, 0xFFE0, 0xFFE2,\n    0xFFE3, 0xFFE3, 0xFFE4, 0xFFE4, 0xFFE5, 0xFFE6, 0xFFE6, 0xFFE8,\n    0xFFE9, 0xFFEA, 0xFFEB, 0xFFED, 0xFFEE, 0xFFF0, 0xFFF2, 0xFFF3,\n    0xFFF5, 0xFFF6, 0xFFF8, 0xFFF9, 0xFFFB, 0xFFFC, 0xFFFD, 0xFFFE,\n    0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF31, 0xFF31,\n    0xFF31, 0xFF31, 0xFF31, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF2F, 0xFF2F, 0xFF2F, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2D,\n    0xFF2D, 0xFF2D, 0xFF2C, 0xFF2C, 0xFF2C, 0xFF2C, 0xFF2B, 0xFF2B,\n    0xFF2B, 0xFF2A, 0xFF2A, 0xFF2A, 0xFF2A, 0xFF2A, 0xFF2A, 0xFF2A,\n    0xFF2A, 0xFF2A, 0xFF2A, 0xFF2A, 0xFF2A, 0xFF2A, 0xFF2A, 0xFF2B,\n    0xFF2B, 0xFF2B, 0xFF2C, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F, 0xFF2F,\n    0xFF30, 0xFF32, 0xFF36, 0xFF3B, 0xFF41, 0xFF47, 0xFF4E, 0xFF55,\n    0xFF5B, 0xFF61, 0xFF66, 0xFF6A, 0xFF6C, 0xFF6E, 0xFF70, 0xFF71,\n    0xFF71, 0xFF71, 0xFF71, 0xFF6F, 0xFF6D, 0xFF6A, 0xFF59, 0xFF36,\n    0xFF0E, 0xFEEC, 0xFEDE, 0xFEF1, 0xFF30, 0xFFAD, 0x0060, 0x0136,\n    0x021C, 0x02FD, 0x03C4, 0x045E, 0x04B6, 0x04C9, 0x04A7, 0x045C,\n    0x03F6, 0x0381, 0x0308, 0x0299, 0x023F, 0x01F2, 0x01A1, 0x014E,\n    0x00F9, 0x00A6, 0x0056, 0x000B, 0xFFC7, 0xFF8A, 0xFF57, 0xFF30,\n    0xFF14, 0xFF01, 0xFEF6, 0xFEF2, 0xFEF3, 0xFEF8, 0xFF00, 0xFF0B,\n    0xFF16, 0xFF20, 0xFF29, 0xFF30, 0xFF32, 0xFF32, 0xFF32, 0xFF32,\n    0xFF32, 0xFF32, 0xFF32, 0xFF32, 0xFF31, 0xFF31, 0xFF31, 0xFF31,\n    0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xC9D8, 0xC9ED, 0xCA27, 0xCA7D, 0xCAE9, 0xCB61, 0xCBDE, 0xCC58,\n    0xCCC7, 0xCD23, 0xCD65, 0xCD83, 0xCD8E, 0xCD9B, 0xCDA9, 0xCDB8,\n    0xCDC8, 0xCDD9, 0xCDEB, 0xCDFD, 0xCE10, 0xCE23, 0xCE36, 0xCE49,\n    0xCE5C, 0xCE6F, 0xCE82, 0xCE93, 0xCEA5, 0xCEB5, 0xCEC4, 0xCED2,\n    0xCEDF, 0xCEEA, 0xCEF4, 0xCEFC, 0xCF02, 0xCF06, 0xCF08, 0xCF08,\n    0xCF05, 0xCF00, 0xCEF8, 0xCEED, 0xCEDF, 0xCECD, 0xCEB9, 0xCEA1,\n    0xCE85, 0xCE66, 0xCE42, 0xCE1B, 0xCDF0, 0xCDC0, 0xCD8B, 0xCD52,\n    0xCD14, 0xCCD2, 0xCC8A, 0xCC3D, 0xCBA2, 0xCA84, 0xC8FE, 0xC72B,\n    0xC528, 0xC310, 0xC0FF, 0xBF11, 0xBD61, 0xBC0A, 0xBB2A, 0xBAB2,\n    0xBA80, 0xBA8C, 0xBAD0, 0xBB43, 0xBBE1, 0xBCA0, 0xBD7B, 0xBE6A,\n    0xBF67, 0xC0D2, 0xC2DD, 0xC53E, 0xC7AA, 0xC9D5, 0xCB74, 0xCC3D,\n    0xCC12, 0xCB2F, 0xC9CD, 0xC827, 0xC676, 0xC4F5, 0xC3DE, 0xC36A,\n    0xC3AB, 0xC470, 0xC593, 0xC6EC, 0xC852, 0xC9A0, 0xCAAD, 0xCB52,\n    0xCB9D, 0xCBBD, 0xCBBB, 0xCB9E, 0xCB70, 0xCB39, 0xCB02, 0xCAD4,\n    0xCAB6, 0xCAB1, 0xCACF, 0xCB10, 0xCB6B, 0xCBDC, 0xCC5C, 0xCCE7,\n    0xCD75, 0xCE02, 0xCE88, 0xCF01, 0xCF68, 0xCFB7, 0xCFE7, 0xCFF5,\n    0xCFE9, 0xCFD2, 0xCFB1, 0xCF86, 0xCF53, 0xCF19, 0xCED8, 0xCE92,\n    0xCE47, 0xCDF8, 0xCDA6, 0xCD52, 0xCCFC, 0xCCA7, 0xCC52, 0xCBFF,\n    0xCBAF, 0xCB61, 0xCB19, 0xCAD5, 0xCA97, 0xCA61, 0xCA32, 0xCA0C,\n    0xC9F0, 0xC9DE, 0xC9D8, 0x1E4A, 0x1E12, 0x1D78, 0x1C91, 0x1B73,\n    0x1A33, 0x18E5, 0x179F, 0x1677, 0x1582, 0x14D4, 0x1482, 0x1466,\n    0x1448, 0x1428, 0x1407, 0x13E6, 0x13C4, 0x13A1, 0x137E, 0x135C,\n    0x1339, 0x1317, 0x12F6, 0x12D6, 0x12B7, 0x1299, 0x127D, 0x1263,\n    0x124B, 0x1236, 0x1223, 0x1213, 0x1206, 0x11FC, 0x11F6, 0x11F4,\n    0x11F5, 0x11FB, 0x1206, 0x1215, 0x1229, 0x1242, 0x1261, 0x1285,\n    0x12AF, 0x12DF, 0x1316, 0x1353, 0x1397, 0x13E2, 0x1434, 0x148E,\n    0x14EF, 0x1558, 0x15CA, 0x1644, 0x16C7, 0x1753, 0x17E7, 0x1904,\n    0x1B07, 0x1DC3, 0x210A, 0x24AC, 0x287C, 0x2C4B, 0x2FEB, 0x332D,\n    0x35E3, 0x37DE, 0x3942, 0x3A4D, 0x3AFD, 0x3B4F, 0x3B41, 0x3ACF,\n    0x39F8, 0x38B8, 0x370E, 0x345A, 0x3055, 0x2B7C, 0x264B, 0x2141,\n    0x1CD9, 0x1992, 0x17E7, 0x1837, 0x1A31, 0x1D50, 0x210F, 0x24EA,\n    0x285B, 0x2ADD, 0x2BEC, 0x2B61, 0x29AE, 0x2729, 0x242B, 0x210E,\n    0x1E28, 0x1BD3, 0x1A67, 0x19C3, 0x197F, 0x1989, 0x19CD, 0x1A37,\n    0x1AB6, 0x1B35, 0x1BA1, 0x1BE8, 0x1BF6, 0x1BB8, 0x1B2B, 0x1A63,\n    0x196C, 0x1852, 0x1722, 0x15E8, 0x14B2, 0x138C, 0x1281, 0x11A0,\n    0x10F4, 0x108A, 0x106F, 0x108D, 0x10C3, 0x1110, 0x1171, 0x11E6,\n    0x126B, 0x12FE, 0x139E, 0x1449, 0x14FC, 0x15B5, 0x1673, 0x1733,\n    0x17F4, 0x18B3, 0x196F, 0x1A25, 0x1AD3, 0x1B77, 0x1C10, 0x1C9B,\n    0x1D16, 0x1D7F, 0x1DD5, 0x1E14, 0x1E3C, 0x1E4A, 0x1B09, 0x1B13,\n    0x1B2F, 0x1B58, 0x1B8C, 0x1BC6, 0x1C02, 0x1C3D, 0x1C72, 0x1C9E,\n    0x1CBE, 0x1CCC, 0x1CD2, 0x1CD8, 0x1CDE, 0x1CE5, 0x1CED, 0x1CF4,\n    0x1CFC, 0x1D05, 0x1D0D, 0x1D16, 0x1D1E, 0x1D27, 0x1D2F, 0x1D38,\n    0x1D40, 0x1D48, 0x1D4F, 0x1D56, 0x1D5D, 0x1D63, 0x1D68, 0x1D6D,\n    0x1D71, 0x1D75, 0x1D77, 0x1D78, 0x1D79, 0x1D78, 0x1D77, 0x1D74,\n    0x1D70, 0x1D6B, 0x1D64, 0x1D5C, 0x1D52, 0x1D47, 0x1D3A, 0x1D2C,\n    0x1D1B, 0x1D09, 0x1CF5, 0x1CDF, 0x1CC8, 0x1CAE, 0x1C91, 0x1C73,\n    0x1C53, 0x1C30, 0x1BEC, 0x1B6F, 0x1AC5, 0x19FA, 0x1919, 0x182C,\n    0x1741, 0x1661, 0x1599, 0x14F3, 0x147C, 0x142C, 0x13F4, 0x13D4,\n    0x13CC, 0x13DB, 0x1401, 0x143D, 0x1490, 0x14F9, 0x159C, 0x1688,\n    0x17A4, 0x18D3, 0x19FA, 0x1AFE, 0x1BC4, 0x1C30, 0x1C2F, 0x1BD4,\n    0x1B3B, 0x1A7E, 0x19BA, 0x190A, 0x1889, 0x1853, 0x186F, 0x18C4,\n    0x1941, 0x19D6, 0x1A71, 0x1B01, 0x1B75, 0x1BBC, 0x1BDD, 0x1BEB,\n    0x1BEB, 0x1BE0, 0x1BCD, 0x1BB6, 0x1B9E, 0x1B89, 0x1B7B, 0x1B77,\n    0x1B7F, 0x1B96, 0x1BB6, 0x1BDD, 0x1C0B, 0x1C3C, 0x1C6E, 0x1CA0,\n    0x1CCF, 0x1CFA, 0x1D1E, 0x1D3A, 0x1D4B, 0x1D4F, 0x1D4A, 0x1D40,\n    0x1D34, 0x1D24, 0x1D10, 0x1CFA, 0x1CE2, 0x1CC8, 0x1CAC, 0x1C8F,\n    0x1C70, 0x1C51, 0x1C32, 0x1C12, 0x1BF3, 0x1BD4, 0x1BB6, 0x1B9A,\n    0x1B7F, 0x1B66, 0x1B4F, 0x1B3B, 0x1B2A, 0x1B1C, 0x1B11, 0x1B0B,\n    0x1B09, 0x1144, 0x1130, 0x10F7, 0x10A1, 0x1038, 0x0FC1, 0x0F46,\n    0x0ECE, 0x0E60, 0x0E05, 0x0DC5, 0x0DA7, 0x0D9D, 0x0D92, 0x0D87,\n    0x0D7C, 0x0D71, 0x0D66, 0x0D5B, 0x0D50, 0x0D46, 0x0D3B, 0x0D31,\n    0x0D28, 0x0D1E, 0x0D16, 0x0D0E, 0x0D06, 0x0CFF, 0x0CF9, 0x0CF4,\n    0x0CF0, 0x0CEC, 0x0CEA, 0x0CE9, 0x0CE9, 0x0CEA, 0x0CEC, 0x0CF0,\n    0x0CF5, 0x0CFC, 0x0D04, 0x0D0E, 0x0D1A, 0x0D27, 0x0D36, 0x0D47,\n    0x0D59, 0x0D6E, 0x0D85, 0x0D9E, 0x0DB9, 0x0DD6, 0x0DF6, 0x0E18,\n    0x0E3D, 0x0E64, 0x0E8D, 0x0EB9, 0x0EE8, 0x0F41, 0x0FE1, 0x10BA,\n    0x11BD, 0x12DD, 0x140A, 0x1537, 0x1655, 0x1756, 0x182B, 0x18C6,\n    0x1931, 0x197F, 0x19B0, 0x19C4, 0x19BA, 0x1991, 0x194B, 0x18E5,\n    0x1860, 0x178C, 0x1650, 0x14D5, 0x1340, 0x11B7, 0x1062, 0x0F65,\n    0x0EE8, 0x0F09, 0x0FAE, 0x10AF, 0x11E2, 0x131D, 0x1436, 0x1503,\n    0x155A, 0x1530, 0x14A7, 0x13DC, 0x12EA, 0x11EE, 0x1103, 0x1047,\n    0x0FD5, 0x0FA3, 0x0F90, 0x0F96, 0x0FAF, 0x0FD4, 0x0FFF, 0x102A,\n    0x104E, 0x1064, 0x1068, 0x1051, 0x1020, 0x0FD9, 0x0F81, 0x0F1D,\n    0x0EB1, 0x0E42, 0x0DD4, 0x0D6C, 0x0D0D, 0x0CBD, 0x0C81, 0x0C5B,\n    0x0C52, 0x0C5D, 0x0C70, 0x0C8C, 0x0CAF, 0x0CD8, 0x0D08, 0x0D3C,\n    0x0D76, 0x0DB3, 0x0DF2, 0x0E35, 0x0E79, 0x0EBD, 0x0F02, 0x0F46,\n    0x0F89, 0x0FCA, 0x1008, 0x1043, 0x1079, 0x10AB, 0x10D7, 0x10FC,\n    0x111B, 0x1131, 0x113F, 0x1144, 0xAC44, 0xAC5F, 0xACAA, 0xAD1A,\n    0xADA5, 0xAE41, 0xAEE3, 0xAF81, 0xB011, 0xB089, 0xB0DD, 0xB105,\n    0xB113, 0xB122, 0xB131, 0xB141, 0xB152, 0xB163, 0xB175, 0xB186,\n    0xB198, 0xB1A9, 0xB1BB, 0xB1CC, 0xB1DC, 0xB1EC, 0xB1FB, 0xB20A,\n    0xB217, 0xB224, 0xB22F, 0xB239, 0xB242, 0xB249, 0xB24E, 0xB252,\n    0xB254, 0xB254, 0xB251, 0xB24D, 0xB246, 0xB23C, 0xB230, 0xB221,\n    0xB210, 0xB1FB, 0xB1E3, 0xB1C8, 0xB1AA, 0xB188, 0xB163, 0xB13A,\n    0xB10D, 0xB0DC, 0xB0A8, 0xB06F, 0xB031, 0xAFF0, 0xAFA9, 0xAF5E,\n    0xAECE, 0xADC9, 0xAC65, 0xAABB, 0xA8E3, 0xA6F4, 0xA506, 0xA331,\n    0xA18C, 0xA030, 0x9F35, 0x9E89, 0x9E0F, 0x9DC7, 0x9DAF, 0x9DC8,\n    0x9E11, 0x9E8C, 0x9F37, 0xA012, 0xA16A, 0xA363, 0xA5C1, 0xA849,\n    0xAABF, 0xACE7, 0xAE85, 0xAF5E, 0xAF47, 0xAE66, 0xACF9, 0xAB40,\n    0xA977, 0xA7DF, 0xA6B4, 0xA636, 0xA673, 0xA739, 0xA85D, 0xA9B9,\n    0xAB23, 0xAC74, 0xAD83, 0xAE28, 0xAE71, 0xAE8F, 0xAE89, 0xAE69,\n    0xAE38, 0xADFD, 0xADC2, 0xAD90, 0xAD6F, 0xAD68, 0xAD84, 0xADC3,\n    0xAE1E, 0xAE8E, 0xAF0F, 0xAF99, 0xB027, 0xB0B5, 0xB13B, 0xB1B4,\n    0xB21A, 0xB268, 0xB298, 0xB2A4, 0xB296, 0xB27D, 0xB259, 0xB22C,\n    0xB1F6, 0xB1B9, 0xB175, 0xB12B, 0xB0DD, 0xB08B, 0xB035, 0xAFDE,\n    0xAF85, 0xAF2D, 0xAED5, 0xAE7F, 0xAE2B, 0xADDB, 0xAD90, 0xAD49,\n    0xAD0A, 0xACD1, 0xACA1, 0xAC7A, 0xAC5C, 0xAC4A, 0xAC44, 0x0000,\n    0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0002, 0x0000, 0xFFFE, 0xFFFC, 0xFFFA, 0xFFF8, 0xFFF6,\n    0xFFF4, 0xFFF3, 0xFFF1, 0xFFF0, 0xFFEF, 0xFFED, 0xFFEC, 0xFFEB,\n    0xFFEA, 0xFFE8, 0xFFE7, 0xFFE6, 0xFFE5, 0xFFE3, 0xFFE2, 0xFFE0,\n    0xFFDF, 0xFFDD, 0xFFDC, 0xFFDA, 0xFFD8, 0xFFD5, 0xFFD3, 0xFFD1,\n    0xFFCE, 0xFFCB, 0xFFC8, 0xFFC5, 0xFFC1, 0xFFBD, 0xFFB9, 0xFFB5,\n    0xFFB0, 0xFFAB, 0xFFA6, 0xFFA0, 0xFF9A, 0xFF94, 0xFF8E, 0xFF86,\n    0xFF7F, 0xFF77, 0xFF6F, 0xFF57, 0xFF26, 0xFEE7, 0xFEA5, 0xFE69,\n    0xFE3F, 0xFE31, 0xFE69, 0xFEDE, 0xFF58, 0xFF9A, 0xFFA8, 0xFFAF,\n    0xFFAF, 0xFFA7, 0xFF99, 0xFF84, 0xFF68, 0xFF45, 0xFF1C, 0xFEDF,\n    0xFE8B, 0xFE27, 0xFDBD, 0xFD58, 0xFD01, 0xFCC0, 0xFCA1, 0xFCA8,\n    0xFCCE, 0xFD0A, 0xFD54, 0xFDA5, 0xFDF2, 0xFE36, 0xFE66, 0xFE84,\n    0xFE99, 0xFEA7, 0xFEB1, 0xFEB9, 0xFEC2, 0xFECE, 0xFEE0, 0xFEF7,\n    0xFF12, 0xFF2F, 0xFF4E, 0xFF6E, 0xFF8D, 0xFFAA, 0xFFC6, 0xFFDE,\n    0xFFF2, 0x0000, 0x000A, 0x0011, 0x0015, 0x0017, 0x0016, 0x0014,\n    0x0011, 0x000E, 0x000A, 0x0006, 0x0003, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0003, 0x0006, 0x0008,\n    0x0009, 0x000A, 0x000A, 0x0008, 0x0005, 0x0000, 0xFFFA, 0xFFF2,\n    0xFFEB, 0xFFE3, 0xFFDA, 0xFFD1, 0xFFC8, 0xFFBF, 0xFFB5, 0xFFAB,\n    0xFFA1, 0xFF97, 0xFF8C, 0xFF81, 0xFF77, 0xFF6C, 0xFF61, 0xFF56,\n    0xFF4B, 0xFF40, 0xFF35, 0xFF2A, 0xFF20, 0xFF15, 0xFF0B, 0xFF00,\n    0xFEF6, 0xFEEC, 0xFEE3, 0xFED9, 0xFED0, 0xFEC7, 0xFEBF, 0xFEB7,\n    0xFEAF, 0xFEA7, 0xFEA1, 0xFE9A, 0xFE94, 0xFE8F, 0xFE8A, 0xFE86,\n    0xFE82, 0xFE7F, 0xFE7D, 0xFE7B, 0xFE7A, 0xFE79, 0xFE85, 0xFEA6,\n    0xFED9, 0xFF19, 0xFF62, 0xFFB1, 0x0000, 0x0082, 0x0135, 0x01C6,\n    0x01E1, 0x0192, 0x0122, 0x0099, 0xFFFF, 0xFF5A, 0xFEB2, 0xFE11,\n    0xFD7C, 0xFCFD, 0xFC8A, 0xFC18, 0xFBAB, 0xFB46, 0xFAED, 0xFAA3,\n    0xFA6D, 0xFA4D, 0xFA4B, 0xFA65, 0xFA94, 0xFAD2, 0xFB18, 0xFB5E,\n    0xFB9E, 0xFBD1, 0xFBF8, 0xFC19, 0xFC36, 0xFC53, 0xFC72, 0xFC95,\n    0xFCBF, 0xFCF2, 0xFD30, 0xFD78, 0xFDC7, 0xFE1A, 0xFE6F, 0xFEC4,\n    0xFF15, 0xFF5F, 0xFFA1, 0xFFD8, 0x0000, 0x001B, 0x002E, 0x0039,\n    0x003E, 0x003D, 0x0038, 0x0030, 0x0026, 0x001B, 0x0011, 0x0008,\n    0x0002, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xBF40, 0xBF5A, 0xBFA0,\n    0xC00A, 0xC08D, 0xC120, 0xC1B9, 0xC24E, 0xC2D6, 0xC346, 0xC396,\n    0xC3BC, 0xC3C8, 0xC3D5, 0xC3E1, 0xC3ED, 0xC3F8, 0xC403, 0xC40D,\n    0xC417, 0xC420, 0xC429, 0xC431, 0xC438, 0xC43F, 0xC445, 0xC44A,\n    0xC44E, 0xC451, 0xC454, 0xC455, 0xC456, 0xC455, 0xC454, 0xC451,\n    0xC44D, 0xC448, 0xC442, 0xC43A, 0xC432, 0xC427, 0xC41C, 0xC40F,\n    0xC401, 0xC3F1, 0xC3E0, 0xC3CD, 0xC3B8, 0xC3A2, 0xC38B, 0xC371,\n    0xC356, 0xC339, 0xC31A, 0xC2F9, 0xC2D7, 0xC2B2, 0xC28C, 0xC263,\n    0xC239, 0xC1D6, 0xC113, 0xC004, 0xBEBC, 0xBD51, 0xBBD6, 0xBA5E,\n    0xB86C, 0xB5F4, 0xB3B9, 0xB27D, 0xB211, 0xB1C6, 0xB19E, 0xB19B,\n    0xB1C1, 0xB211, 0xB28F, 0xB33E, 0xB41F, 0xB57A, 0xB76F, 0xB9C4,\n    0xBC40, 0xBEA8, 0xC0C4, 0xC258, 0xC32D, 0xC318, 0xC23F, 0xC0DE,\n    0xBF31, 0xBD74, 0xBBE2, 0xBAB8, 0xBA32, 0xBA5C, 0xBB03, 0xBC03,\n    0xBD36, 0xBE77, 0xBFA3, 0xC093, 0xC123, 0xC15E, 0xC16C, 0xC158,\n    0xC12B, 0xC0EF, 0xC0AD, 0xC071, 0xC042, 0xC02C, 0xC037, 0xC06E,\n    0xC0D6, 0xC168, 0xC21B, 0xC2E7, 0xC3C2, 0xC4A4, 0xC583, 0xC658,\n    0xC718, 0xC7BC, 0xC839, 0xC888, 0xC89F, 0xC88F, 0xC86D, 0xC83B,\n    0xC7FB, 0xC7AE, 0xC755, 0xC6F2, 0xC686, 0xC613, 0xC59A, 0xC51C,\n    0xC49B, 0xC418, 0xC395, 0xC312, 0xC292, 0xC216, 0xC19F, 0xC12F,\n    0xC0C6, 0xC067, 0xC013, 0xBFCB, 0xBF90, 0xBF65, 0xBF4A, 0xBF40,\n    0x2537, 0x250A, 0x2490, 0x23DA, 0x22F7, 0x21FA, 0x20F2, 0x1FF0,\n    0x1F06, 0x1E43, 0x1DB9, 0x1D79, 0x1D63, 0x1D4D, 0x1D38, 0x1D23,\n    0x1D0E, 0x1CFA, 0x1CE7, 0x1CD4, 0x1CC2, 0x1CB1, 0x1CA1, 0x1C92,\n    0x1C84, 0x1C77, 0x1C6C, 0x1C62, 0x1C5A, 0x1C53, 0x1C4E, 0x1C4B,\n    0x1C49, 0x1C4A, 0x1C4C, 0x1C51, 0x1C58, 0x1C61, 0x1C6D, 0x1C7B,\n    0x1C8B, 0x1C9F, 0x1CB5, 0x1CCE, 0x1CEA, 0x1D09, 0x1D2B, 0x1D50,\n    0x1D79, 0x1DA4, 0x1DD4, 0x1E07, 0x1E3D, 0x1E78, 0x1EB6, 0x1EF8,\n    0x1F3E, 0x1F88, 0x1FD6, 0x2029, 0x20F1, 0x2280, 0x24A9, 0x273E,\n    0x2A0F, 0x2CEE, 0x2FAE, 0x330E, 0x372C, 0x3AE3, 0x3D10, 0x3E0D,\n    0x3EEA, 0x3F9A, 0x4010, 0x403D, 0x4015, 0x3F89, 0x3E8C, 0x3D10,\n    0x3A84, 0x36AF, 0x320B, 0x2D12, 0x283D, 0x2406, 0x20E6, 0x1F58,\n    0x1FB6, 0x21B3, 0x24CD, 0x2882, 0x2C51, 0x2FB6, 0x3231, 0x3340,\n    0x32BD, 0x3117, 0x2EA2, 0x2BB6, 0x28AA, 0x25D4, 0x238A, 0x2223,\n    0x2180, 0x213D, 0x2146, 0x2187, 0x21EE, 0x2266, 0x22DE, 0x2341,\n    0x237C, 0x237C, 0x232E, 0x228D, 0x21AB, 0x2096, 0x1F5C, 0x1E09,\n    0x1CAD, 0x1B54, 0x1A0C, 0x18E4, 0x17E8, 0x1727, 0x16AE, 0x168C,\n    0x16A7, 0x16DD, 0x172B, 0x1790, 0x180A, 0x1895, 0x1930, 0x19D9,\n    0x1A8D, 0x1B4B, 0x1C10, 0x1CDA, 0x1DA7, 0x1E74, 0x1F3F, 0x2007,\n    0x20C9, 0x2183, 0x2233, 0x22D6, 0x236A, 0x23EE, 0x245E, 0x24BA,\n    0x24FE, 0x2528, 0x2537, 0xD64A, 0xD646, 0xD639, 0xD626, 0xD60E,\n    0xD5F4, 0xD5D8, 0xD5BD, 0xD5A5, 0xD591, 0xD582, 0xD57C, 0xD579,\n    0xD576, 0xD573, 0xD570, 0xD56C, 0xD568, 0xD564, 0xD560, 0xD55C,\n    0xD558, 0xD553, 0xD54F, 0xD54B, 0xD546, 0xD542, 0xD53E, 0xD53A,\n    0xD536, 0xD533, 0xD530, 0xD52D, 0xD52A, 0xD528, 0xD526, 0xD524,\n    0xD523, 0xD523, 0xD523, 0xD523, 0xD524, 0xD526, 0xD529, 0xD52C,\n    0xD530, 0xD534, 0xD539, 0xD540, 0xD547, 0xD54F, 0xD557, 0xD561,\n    0xD56C, 0xD578, 0xD585, 0xD593, 0xD5A2, 0xD5B2, 0xD5C3, 0xD5F3,\n    0xD656, 0xD6DE, 0xD77D, 0xD825, 0xD8C9, 0xD95A, 0xD9EF, 0xDA90,\n    0xDB19, 0xDB66, 0xDB8A, 0xDBAA, 0xDBC3, 0xDBD3, 0xDBD7, 0xDBCC,\n    0xDBAE, 0xDB7B, 0xDB31, 0xDAB3, 0xD9FA, 0xD91C, 0xD82D, 0xD746,\n    0xD67A, 0xD5E2, 0xD593, 0xD59C, 0xD5F0, 0xD678, 0xD71C, 0xD7C6,\n    0xD85D, 0xD8CB, 0xD8F9, 0xD8E1, 0xD897, 0xD829, 0xD7A6, 0xD71E,\n    0xD69F, 0xD638, 0xD5F8, 0xD5D9, 0xD5C9, 0xD5C6, 0xD5CB, 0xD5D7,\n    0xD5E7, 0xD5F9, 0xD608, 0xD614, 0xD619, 0xD614, 0xD606, 0xD5F3,\n    0xD5DB, 0xD5BF, 0xD5A2, 0xD584, 0xD566, 0xD549, 0xD52F, 0xD519,\n    0xD509, 0xD4FE, 0xD4FC, 0xD4FE, 0xD503, 0xD50A, 0xD513, 0xD51E,\n    0xD52B, 0xD539, 0xD548, 0xD558, 0xD569, 0xD57A, 0xD58C, 0xD59E,\n    0xD5B1, 0xD5C3, 0xD5D4, 0xD5E6, 0xD5F6, 0xD606, 0xD614, 0xD621,\n    0xD62D, 0xD637, 0xD63F, 0xD645, 0xD649, 0xD64A, 0xEC41, 0xEC51,\n    0xEC7D, 0xECBF, 0xED11, 0xED6D, 0xEDCC, 0xEE2A, 0xEE7E, 0xEEC5,\n    0xEEF7, 0xEF0E, 0xEF16, 0xEF1E, 0xEF27, 0xEF2F, 0xEF38, 0xEF41,\n    0xEF49, 0xEF52, 0xEF5A, 0xEF63, 0xEF6B, 0xEF73, 0xEF7A, 0xEF81,\n    0xEF88, 0xEF8E, 0xEF93, 0xEF98, 0xEF9C, 0xEFA0, 0xEFA3, 0xEFA5,\n    0xEFA6, 0xEFA6, 0xEFA6, 0xEFA4, 0xEFA1, 0xEF9D, 0xEF98, 0xEF92,\n    0xEF8A, 0xEF81, 0xEF77, 0xEF6B, 0xEF5E, 0xEF50, 0xEF3F, 0xEF2D,\n    0xEF1A, 0xEF05, 0xEEED, 0xEED4, 0xEEBA, 0xEE9D, 0xEE7E, 0xEE5D,\n    0xEE3A, 0xEE15, 0xEDB4, 0xECEE, 0xEBDF, 0xEAA2, 0xE94F, 0xE803,\n    0xE6D8, 0xE59A, 0xE439, 0xE306, 0xE251, 0xE1F6, 0xE1A0, 0xE156,\n    0xE11F, 0xE104, 0xE10C, 0xE13D, 0xE1A1, 0xE23D, 0xE351, 0xE4F1,\n    0xE6E9, 0xE905, 0xEB11, 0xECD9, 0xEE27, 0xEEC9, 0xEE95, 0xEDAC,\n    0xEC47, 0xEAA0, 0xE8EE, 0xE76B, 0xE650, 0xE5D6, 0xE60D, 0xE6C5,\n    0xE7D9, 0xE923, 0xEA7B, 0xEBBC, 0xECBF, 0xED5E, 0xEDA8, 0xEDCA,\n    0xEDCD, 0xEDB7, 0xED91, 0xED62, 0xED32, 0xED08, 0xECEC, 0xECE6,\n    0xECFD, 0xED32, 0xED7D, 0xEDD9, 0xEE41, 0xEEB1, 0xEF25, 0xEF97,\n    0xF004, 0xF066, 0xF0BA, 0xF0FA, 0xF122, 0xF12D, 0xF123, 0xF111,\n    0xF0F6, 0xF0D4, 0xF0AB, 0xF07D, 0xF048, 0xF010, 0xEFD3, 0xEF94,\n    0xEF52, 0xEF0E, 0xEEC9, 0xEE84, 0xEE40, 0xEDFD, 0xEDBC, 0xED7E,\n    0xED43, 0xED0D, 0xECDB, 0xECAF, 0xEC89, 0xEC6B, 0xEC54, 0xEC46,\n    0xEC41, 0xB59E, 0xB5A9, 0xB5C6, 0xB5F2, 0xB628, 0xB665, 0xB6A4,\n    0xB6E1, 0xB719, 0xB748, 0xB769, 0xB778, 0xB77E, 0xB784, 0xB78A,\n    0xB790, 0xB797, 0xB79E, 0xB7A5, 0xB7AC, 0xB7B4, 0xB7BB, 0xB7C2,\n    0xB7C9, 0xB7D0, 0xB7D7, 0xB7DD, 0xB7E4, 0xB7E9, 0xB7EF, 0xB7F4,\n    0xB7F8, 0xB7FC, 0xB7FF, 0xB802, 0xB803, 0xB805, 0xB805, 0xB804,\n    0xB803, 0xB800, 0xB7FD, 0xB7F8, 0xB7F2, 0xB7EB, 0xB7E3, 0xB7DA,\n    0xB7CF, 0xB7C3, 0xB7B5, 0xB7A6, 0xB796, 0xB783, 0xB770, 0xB75A,\n    0xB743, 0xB72A, 0xB70F, 0xB6F2, 0xB6D4, 0xB685, 0xB5E3, 0xB504,\n    0xB3FB, 0xB2DC, 0xB1BB, 0xB0AB, 0xAF6C, 0xADEF, 0xAC9C, 0xABD5,\n    0xAB7A, 0xAB2A, 0xAAE9, 0xAABD, 0xAAAC, 0xAABB, 0xAAF1, 0xAB52,\n    0xABE4, 0xACDD, 0xAE51, 0xB013, 0xB1F7, 0xB3CE, 0xB56C, 0xB6A4,\n    0xB748, 0xB73B, 0xB699, 0xB591, 0xB450, 0xB304, 0xB1DA, 0xB0FF,\n    0xB0A3, 0xB0CE, 0xB15B, 0xB22D, 0xB326, 0xB42B, 0xB51D, 0xB5E2,\n    0xB65B, 0xB694, 0xB6B0, 0xB6B5, 0xB6A7, 0xB68D, 0xB66B, 0xB648,\n    0xB629, 0xB614, 0xB60D, 0xB61B, 0xB63D, 0xB66C, 0xB6A7, 0xB6EA,\n    0xB732, 0xB77C, 0xB7C6, 0xB80B, 0xB84A, 0xB880, 0xB8A9, 0xB8C2,\n    0xB8C9, 0xB8C3, 0xB8B7, 0xB8A6, 0xB890, 0xB876, 0xB857, 0xB836,\n    0xB811, 0xB7EA, 0xB7C1, 0xB797, 0xB76B, 0xB73F, 0xB713, 0xB6E7,\n    0xB6BC, 0xB692, 0xB66A, 0xB644, 0xB621, 0xB601, 0xB5E5, 0xB5CD,\n    0xB5B9, 0xB5AA, 0xB5A1, 0xB59E, 0x8001, 0x8001, 0x4171, 0xBF5F,\n    0x8001, 0x8001, 0x4171, 0xBF5F, 0x0000, 0x0000, 0x0000, 0x0001,\n    0x0002, 0x0003, 0x0004, 0x0004, 0x0004, 0x0003, 0x0002, 0x0000,\n    0xFFF8, 0xFFE8, 0xFFD8, 0xFFC7, 0xFFB5, 0xFFA4, 0xFF9A, 0xFFCF,\n    0x0050, 0x00E7, 0x015A, 0x016E, 0x00EC, 0xFF9A, 0xFCE2, 0xF8C8,\n    0xF3FA, 0xEF26, 0xEAF9, 0xE821, 0xE6AE, 0xE584, 0xE49B, 0xE3F5,\n    0xE395, 0xE37F, 0xE3B4, 0xE439, 0xE50F, 0xE63B, 0xE7E3, 0xEB9C,\n    0xF112, 0xF747, 0xFD3B, 0x0210, 0x05EF, 0x0906, 0x0B6D, 0x0D3F,\n    0x0E96, 0x0F8B, 0x1038, 0x10B8, 0x1124, 0x1197, 0x122A, 0x12F7,\n    0x13CF, 0x1476, 0x14F3, 0x154B, 0x1587, 0x15AD, 0x15C4, 0x15D3,\n    0x15E0, 0x15F3, 0x1612, 0x165C, 0x16D5, 0x1762, 0x17E5, 0x1844,\n    0x1861, 0x1820, 0x1765, 0x1612, 0x13E5, 0x10D5, 0x0D24, 0x0912,\n    0x04DD, 0x00C7, 0xFD10, 0xF9F7, 0xF758, 0xF4E7, 0xF2A7, 0xF09C,\n    0xEEC9, 0xED32, 0xEBDA, 0xEAC4, 0xE9EB, 0xE948, 0xE8DE, 0xE8B3,\n    0xE8CA, 0xE927, 0xE9CF, 0xEAC4, 0xEC28, 0xEE02, 0xF035, 0xF2A1,\n    0xF529, 0xF7AF, 0xFA14, 0xFC39, 0xFE02, 0xFF4E, 0x0000, 0xFFCD,\n    0xFEA8, 0xFCD3, 0xFA91, 0xF822, 0xF5CA, 0xF3CA, 0xF263, 0xF1D8,\n    0xF278, 0xF57F, 0xFA95, 0x00AD, 0x06BD, 0x0BB9, 0x0E93, 0x0EA3,\n    0x0D03, 0x0A30, 0x068A, 0x026E, 0xFE3D, 0xFA53, 0xF70E, 0xF4CD,\n    0xF3EF, 0xF46C, 0xF5C4, 0xF7B0, 0xF9E8, 0xFC26, 0xFE21, 0xFF93,\n    0xFFD7, 0xFFDE, 0xFFE5, 0xFFEC, 0xFFF3, 0xFFFA, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0002, 0x0005, 0x0005, 0x0000, 0xFFF8,\n    0xFFF0, 0xFFEB, 0xFFE9, 0xFFE8, 0xFFE8, 0xFFE9, 0xFFEA, 0xFFEA,\n    0xFFEB, 0xFFEB, 0xFFEB, 0xFFEB, 0xFFEB, 0xFFEB, 0xFFEB, 0xFFEB,\n    0xFFEB, 0xFFEB, 0xFFEB, 0xFFEB, 0xFFEB, 0xFFEB, 0xFFEB, 0xFFEB,\n    0xFFEB, 0xFFEB, 0xFFEB, 0xFFEB, 0xFFEB, 0xFFEB, 0xFFEB, 0xFFEB,\n    0xFFEB, 0xFFF3, 0x0006, 0x001C, 0x002D, 0x0030, 0x001C, 0xFFEB,\n    0xFF55, 0xFE54, 0xFD3A, 0xFC23, 0xFAF9, 0xF9C1, 0xF883, 0xF746,\n    0xF610, 0xF4E7, 0xF3D3, 0xF2DA, 0xF202, 0xF153, 0xF0D7, 0xF08D,\n    0xF06E, 0xF070, 0xF08C, 0xF0B9, 0xF0EF, 0xF125, 0xF153, 0xF174,\n    0xF18C, 0xF1A8, 0xF1D3, 0xF218, 0xF283, 0xF320, 0xF3F9, 0xF532,\n    0xF6CF, 0xF8AE, 0xFAAA, 0xFCA1, 0xFE70, 0xFFF3, 0x0106, 0x01A7,\n    0x01F6, 0x0205, 0x01E5, 0x01A9, 0x0164, 0x0127, 0x0106, 0x00F5,\n    0x00E0, 0x00C7, 0x00AC, 0x008F, 0x0072, 0x0055, 0x003A, 0x0022,\n    0x000E, 0x0000, 0xFFF7, 0xFFF1, 0xFFEE, 0xFFED, 0xFFEF, 0xFFF2,\n    0xFFF5, 0xFFF9, 0xFFFD, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xFC62, 0xFC60, 0xFC5D, 0xFC5D, 0xFC65, 0xFC79,\n    0xFC9D, 0xFCD5, 0xFD26, 0xFD93, 0xFE21, 0xFF01, 0x031F, 0x084F,\n    0x0A43, 0x06EA, 0x00CF, 0xFA89, 0xF6AE, 0xF55F, 0xF4DD, 0xF4EF,\n    0xF55F, 0xF5F4, 0xF676, 0xF6AE, 0xF6AE, 0xF6AE, 0xF6AE, 0xF6AE,\n    0xF6AE, 0xF6AE, 0xF6AE, 0xF6AE, 0xF6AE, 0xF6AE, 0xF6AE, 0xF6AE,\n    0xF6AE, 0xF6AE, 0xF6AE, 0xF6AE, 0xF6AE, 0xF6AE, 0xF6AE, 0xF6AE,\n    0xF6AE, 0xF6AE, 0xF6AE, 0xF6AE, 0xF69D, 0xF678, 0xF64C, 0xF62C,\n    0xF626, 0xF64C, 0xF6AE, 0xF7CE, 0xF9BC, 0xFBDB, 0xFDF4, 0x0031,\n    0x0289, 0x04ED, 0x0750, 0x09A6, 0x0BE1, 0x0DF4, 0x0FD4, 0x1172,\n    0x12C3, 0x13AF, 0x1437, 0x146B, 0x145E, 0x1422, 0x13C8, 0x1364,\n    0x1307, 0x12C3, 0x1268, 0x11CF, 0x1115, 0x1056, 0x0FB1, 0x0F41,\n    0x0F25, 0x0F79, 0x1060, 0x11CF, 0x139A, 0x1596, 0x1799, 0x1978,\n    0x1B07, 0x1C1D, 0x1CE2, 0x1D92, 0x1E1C, 0x1E6C, 0x1E73, 0x1E1F,\n    0x1D5D, 0x1C1D, 0x1A3E, 0x17C6, 0x14DB, 0x11A3, 0x0E44, 0x0AE5,\n    0x07AB, 0x04BE, 0x0242, 0x005F, 0xFF3C, 0xFEF3, 0xFF6D, 0x0083,\n    0x020C, 0x03E1, 0x05D9, 0x07CC, 0x0992, 0x0B03, 0x0BF7, 0x0C44,\n    0x0C25, 0x0BED, 0x0B9F, 0x0B3B, 0x0AC5, 0x0A3D, 0x09A6, 0x0902,\n    0x0852, 0x0799, 0x06D7, 0x0610, 0x0545, 0x0477, 0x03AA, 0x02DD,\n    0x0215, 0x0151, 0x0095, 0xFFE3, 0xFF3A, 0xFE9F, 0xFE12, 0xFD96,\n    0xFD2C, 0xFCD6, 0xFC97, 0xFC6F, 0xFC62, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0012,\n    0x0000, 0xFFD5, 0xFFA3, 0xFF6D, 0xFF33, 0xFEF5, 0xFEB5, 0xFE72,\n    0xFE2F, 0xFDEA, 0xFDA6, 0xFD63, 0xFD21, 0xFCE1, 0xFCA4, 0xFC6A,\n    0xFC35, 0xFC05, 0xFBDA, 0xFBB5, 0xFB98, 0xFB82, 0xFB75, 0xFB70,\n    0xFB75, 0xFB85, 0xFB9E, 0xFBBD, 0xFBE3, 0xFC10, 0xFC44, 0xFC7D,\n    0xFCBE, 0xFD04, 0xFD52, 0xFDA5, 0xFDFE, 0xFE5E, 0xFEC4, 0xFF2F,\n    0xFFA1, 0x0017, 0x0094, 0x0117, 0x01A0, 0x022E, 0x02C2, 0x035B,\n    0x03F9, 0x04BE, 0x05C0, 0x06F3, 0x0848, 0x09B3, 0x0B24, 0x0C8F,\n    0x0DE6, 0x0F1B, 0x1021, 0x10EA, 0x1181, 0x11F7, 0x124C, 0x127B,\n    0x1284, 0x1262, 0x1214, 0x1198, 0x10EA, 0x1004, 0x0EE3, 0x0D89,\n    0x0BF7, 0x0A30, 0x0835, 0x0609, 0x03AE, 0x00DF, 0xFD7E, 0xF9C3,\n    0xF5E8, 0xF228, 0xEEBC, 0xEBDE, 0xE9C8, 0xE86A, 0xE786, 0xE710,\n    0xE6FE, 0xE746, 0xE7DC, 0xE8B5, 0xE9C8, 0xEB2F, 0xECFC, 0xEF18,\n    0xF16B, 0xF3DE, 0xF65A, 0xF8C5, 0xFB0A, 0xFD10, 0xFEBF, 0x0000,\n    0x00D5, 0x015A, 0x019A, 0x01A2, 0x0180, 0x0140, 0x00EF, 0x0099,\n    0x004C, 0x0015, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFD,\n    0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,\n    0xFFFE, 0xFFFE, 0xFFFF, 0x0000, 0x0000, 0x0005, 0x0014, 0x002A,\n    0x0047, 0x0068, 0x008D, 0x00B4, 0x00DC, 0x0104, 0x012A, 0x014E,\n    0x016C, 0x0186, 0x0198, 0x01A3, 0x01A4, 0x019A, 0x0184, 0x0160,\n    0x012E, 0x00EC, 0x0098, 0x0032, 0xFF8D, 0xFE87, 0xFD35, 0xFBAA,\n    0xF9FB, 0xF83A, 0xF67C, 0xF4D4, 0xF355, 0xF214, 0xF125, 0xF071,\n    0xEFDB, 0xEF69, 0xEF22, 0xEF0C, 0xEF2E, 0xEF8F, 0xF034, 0xF125,\n    0xF29E, 0xF4BA, 0xF746, 0xFA10, 0xFCE6, 0xFF97, 0x01EF, 0x03C0,\n    0x0511, 0x0617, 0x06DF, 0x0774, 0x07E5, 0x083C, 0x0888, 0x08D5,\n    0x0920, 0x095D, 0x0988, 0x099E, 0x099A, 0x097A, 0x0939, 0x08D5,\n    0x0847, 0x078F, 0x06B9, 0x05CC, 0x04D2, 0x03D6, 0x02E0, 0x01F9,\n    0x012B, 0x007F, 0x0000, 0xFFAC, 0xFF77, 0xFF5D, 0xFF5A, 0xFF68,\n    0xFF81, 0xFFA1, 0xFFC3, 0xFFE2, 0xFFF8, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0884, 0x0842, 0x0792, 0x068F, 0x0559,\n    0x040C, 0x02C6, 0x01A5, 0x00C6, 0x0079, 0x00A3, 0x00C6, 0x00B9,\n    0x00AC, 0x009F, 0x0091, 0x0083, 0x0075, 0x0066, 0x0058, 0x0049,\n    0x003A, 0x002B, 0x001C, 0x000D, 0xFFFF, 0xFFF0, 0xFFE2, 0xFFD3,\n    0xFFC5, 0xFFB7, 0xFFAA, 0xFF9D, 0xFF90, 0xFF83, 0xFF78, 0xFF6C,\n    0xFF54, 0xFF22, 0xFEDB, 0xFE83, 0xFE1D, 0xFDAE, 0xFD38, 0xFCC0,\n    0xFC4A, 0xFBD9, 0xFB71, 0xFB16, 0xFACB, 0xFA95, 0xFA77, 0xFA76,\n    0xFA93, 0xFAD5, 0xFB3D, 0xFBD1, 0xFC93, 0xFD89, 0xFEB4, 0x009B,\n    0x039D, 0x0780, 0x0C08, 0x10FD, 0x1625, 0x1B45, 0x2024, 0x2489,\n    0x2839, 0x2AFA, 0x2CD5, 0x2E08, 0x2EA7, 0x2EC8, 0x2E81, 0x2DE7,\n    0x2D0E, 0x2C0E, 0x2AFA, 0x295F, 0x26EF, 0x23FB, 0x20D4, 0x1DCA,\n    0x1B2E, 0x1950, 0x1882, 0x18F1, 0x1A66, 0x1C96, 0x1F35, 0x21F9,\n    0x2498, 0x26C6, 0x2838, 0x2932, 0x2A1A, 0x2AD4, 0x2B46, 0x2B57,\n    0x2AEC, 0x29EA, 0x2838, 0x25C7, 0x22B4, 0x1F21, 0x1B31, 0x1706,\n    0x12C3, 0x0E8A, 0x0A7F, 0x06C3, 0x037A, 0x00C6, 0xFE83, 0xFC73,\n    0xFA9A, 0xF8F8, 0xF78F, 0xF662, 0xF570, 0xF4BD, 0xF449, 0xF416,\n    0xF426, 0xF466, 0xF4C2, 0xF539, 0xF5C7, 0xF66B, 0xF722, 0xF7EA,\n    0xF8C1, 0xF9A5, 0xFA93, 0xFB89, 0xFC86, 0xFD86, 0xFE88, 0xFF89,\n    0x0087, 0x0180, 0x0272, 0x035B, 0x0438, 0x0507, 0x05C6, 0x0673,\n    0x070B, 0x078D, 0x07F6, 0x0843, 0x0873, 0x0884, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF,\n    0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE,\n    0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFD, 0xFFFD,\n    0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFE, 0xFFFE, 0xFFFE, 0xFFFE,\n    0xFFFE, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000,\n    0x0000, 0x0015, 0x003A, 0x0064, 0x0092, 0x00C0, 0x00EE, 0x0118,\n    0x013D, 0x015B, 0x016E, 0x0176, 0x0170, 0x015C, 0x013D, 0x0115,\n    0x00E7, 0x00B5, 0x0082, 0x0052, 0x0025, 0x0000, 0xFFDE, 0xFFB9,\n    0xFF92, 0xFF6B, 0xFF44, 0xFF1F, 0xFEFC, 0xFEDD, 0xFEC2, 0xFEAC,\n    0xFE9D, 0xFE95, 0xFE96, 0xFEA3, 0xFEBA, 0xFEDA, 0xFF00, 0xFF29,\n    0xFF55, 0xFF80, 0xFFA9, 0xFFCD, 0xFFEB, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0xFFFD, 0xFFF7, 0xFFEF, 0xFFE7,\n    0xFFDF, 0xFFD7, 0xFFD0, 0xFFC9, 0xFFC4, 0xFFC0, 0xFFBD, 0xFFBD,\n    0xFFC0, 0xFFC5, 0xFFCB, 0xFFD3, 0xFFDC, 0xFFE6, 0xFFEF, 0xFFF8,\n    0x0000, 0x0008, 0x0012, 0x001D, 0x0028, 0x0033, 0x003E, 0x0048,\n    0x0051, 0x0058, 0x005D, 0x0061, 0x0061, 0x005E, 0x0059, 0x0052,\n    0x0049, 0x0040, 0x0035, 0x002A, 0x001F, 0x0015, 0x000C, 0x0005,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x40A1, 0x40A1, 0x40A1, 0x40A1,\n    0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1,\n    0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A0,\n    0x40A0, 0x40A0, 0x40A0, 0x40A0, 0x40A0, 0x40A0, 0x409F, 0x409F,\n    0x409F, 0x409F, 0x409F, 0x409F, 0x409E, 0x409E, 0x409E, 0x409E,\n    0x409E, 0x409E, 0x409E, 0x409E, 0x409D, 0x409D, 0x409D, 0x409D,\n    0x409D, 0x409E, 0x409E, 0x409E, 0x409E, 0x409E, 0x409E, 0x409E,\n    0x409F, 0x409F, 0x409F, 0x40A0, 0x40A0, 0x40A1, 0x40A1, 0x40BA,\n    0x40FD, 0x4149, 0x419C, 0x41F1, 0x4247, 0x4298, 0x42E1, 0x4321,\n    0x4351, 0x4371, 0x437B, 0x4365, 0x432B, 0x42D6, 0x4270, 0x4201,\n    0x4192, 0x412C, 0x40D9, 0x40A1, 0x407C, 0x405A, 0x403C, 0x4022,\n    0x400A, 0x3FF6, 0x3FE4, 0x3FD5, 0x3FC9, 0x3FBF, 0x3FB7, 0x3FB0,\n    0x3FAC, 0x3FA9, 0x3FA7, 0x3FA7, 0x3FB0, 0x3FC9, 0x3FED, 0x4017,\n    0x4042, 0x406B, 0x408C, 0x40A1, 0x40AC, 0x40B3, 0x40B6, 0x40B6,\n    0x40B5, 0x40B1, 0x40AD, 0x40A9, 0x40A5, 0x40A2, 0x40A1, 0x40A1,\n    0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1,\n    0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1,\n    0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1,\n    0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1,\n    0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_5F.inc.c",
    "content": "static const struct Animation anim_5F[] = {\n    9,\n    189,\n    0,\n    0,\n    0x3C,\n    ANIMINDEX_NUMPARTS(anim_5F_indices),\n    anim_5F_values,\n    anim_5F_indices,\n    0,\n};\n\n\nstatic const u16 anim_5F_indices[] = {\n    0x003C, 0x0001, 0x003C, 0x003D, 0x003C, 0x0079, 0x0001, 0x0000, 0x0001, 0x00B5, 0x0001, 0x0000,\n    0x003C, 0x092D, 0x003C, 0x0969, 0x003C, 0x09A5,\n    0x003C, 0x0879, 0x003C, 0x08B5, 0x003C, 0x08F1,\n    0x003C, 0x07C5, 0x003C, 0x0801, 0x003C, 0x083D,\n    0x0001, 0x07C1, 0x0001, 0x07C2, 0x0001, 0x07C3,\n    0x003C, 0x01A6, 0x003C, 0x01E2, 0x003C, 0x021E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x003C, 0x016A,\n    0x003C, 0x00B6, 0x003C, 0x00F2, 0x003C, 0x012E,\n    0x0001, 0x0746, 0x0001, 0x0747, 0x0001, 0x0748,\n    0x003C, 0x034A, 0x003C, 0x0386, 0x003C, 0x03C2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x003C, 0x030E,\n    0x003C, 0x025A, 0x003C, 0x0296, 0x003C, 0x02D2,\n    0x0001, 0x0000, 0x003C, 0x0749, 0x003C, 0x0785,\n    0x003C, 0x0692, 0x003C, 0x06CE, 0x003C, 0x070A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x003C, 0x0656,\n    0x003C, 0x05A2, 0x003C, 0x05DE, 0x003C, 0x061A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x07C4,\n    0x003C, 0x04EE, 0x003C, 0x052A, 0x003C, 0x0566,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x003C, 0x04B2,\n    0x003C, 0x03FE, 0x003C, 0x043A, 0x003C, 0x0476,\n};\n\nstatic const s16 anim_5F_values[] = {\n    0x0000, 0x0000, 0x0005, 0x0012, 0x0027, 0x0040, 0x005C, 0x008F,\n    0x00CA, 0x00F7, 0x011F, 0x0140, 0x014C, 0x014E, 0x014F, 0x0152,\n    0x0161, 0x0174, 0x017E, 0x017A, 0x016F, 0x0162, 0x0155, 0x014A,\n    0x013F, 0x012E, 0x0114, 0x00F7, 0x00D7, 0x00B8, 0x0097, 0x0074,\n    0x0053, 0x0039, 0x0028, 0x001D, 0x0015, 0x000B, 0xFFFF, 0xFFF3,\n    0xFFEE, 0xFFED, 0xFFED, 0xFFEE, 0xFFEE, 0xFFEB, 0xFFE7, 0xFFE3,\n    0xFFE0, 0xFFDE, 0xFFDD, 0xFFDC, 0xFFDC, 0xFFDC, 0xFFDF, 0xFFE8,\n    0xFFF4, 0xFFFE, 0x0002, 0x0002, 0x0002, 0x00AA, 0x00AB, 0x00AF,\n    0x00B5, 0x00BA, 0x00BF, 0x00C6, 0x00C8, 0x00C0, 0x00B4, 0x00AC,\n    0x00B1, 0x00B8, 0x00B8, 0x00B6, 0x00B2, 0x00AE, 0x00AB, 0x00AD,\n    0x00AF, 0x00B3, 0x00B5, 0x00B6, 0x00B6, 0x00B6, 0x00B5, 0x00B3,\n    0x00B2, 0x00B3, 0x00B7, 0x00BE, 0x00C4, 0x00C6, 0x00BF, 0x00B4,\n    0x00AA, 0x00A6, 0x00B9, 0x00C7, 0x00BD, 0x00AE, 0x00A7, 0x00B5,\n    0x00C8, 0x00C9, 0x00B9, 0x00AE, 0x00B5, 0x00C2, 0x00C9, 0x00C5,\n    0x00BB, 0x00B1, 0x00AA, 0x00A7, 0x00A8, 0x00A9, 0x00AA, 0x00AA,\n    0x00AA, 0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE49, 0xFE4A, 0xFE4D,\n    0xFE57, 0xFE71, 0xFE90, 0xFEA5, 0xFE9D, 0xFE88, 0xFE71, 0xFE5C,\n    0xFE4F, 0xFE44, 0xFE40, 0xFE3E, 0xFE3E, 0xFE44, 0xFE53, 0xFE5F,\n    0xFE64, 0xFE75, 0xFE99, 0xFEC7, 0xFEF7, 0xFF23, 0xFF4B, 0xFF72,\n    0xFF99, 0xFFC1, 0xFFEA, 0x000F, 0x0038, 0x006C, 0x00B0, 0x00F2,\n    0x0133, 0x0176, 0x01BC, 0x01F6, 0x022B, 0x0279, 0x02E4, 0x0348,\n    0x038C, 0x03BC, 0x03E8, 0x041D, 0x0457, 0x0487, 0x049C, 0x04A9,\n    0x04AF, 0x04B0, 0x04B0, 0x04B0, 0x04B0, 0x3FFF, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0027, 0x0082, 0x00EA,\n    0x0138, 0x0145, 0x00EA, 0x0000, 0xFE82, 0xFC98, 0xFA5C, 0xF7E9,\n    0xF559, 0xF2C6, 0xF04D, 0xEE06, 0xEC0C, 0xEA30, 0xE83F, 0xE650,\n    0xE479, 0xE2D1, 0xE16F, 0xE068, 0xDFD5, 0xDFCA, 0xE135, 0xE45F,\n    0xE869, 0xEC74, 0xEFA2, 0xF1C1, 0xF359, 0xF4A8, 0xF5EB, 0xF729,\n    0xF84C, 0xF95C, 0xFA65, 0xFB70, 0xFC83, 0xFD89, 0xFE68, 0xFF29,\n    0xFFC2, 0x0000, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C,\n    0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C,\n    0xF97C, 0xF96E, 0xF94F, 0xF92C, 0xF911, 0xF90C, 0xF92C, 0xF97C,\n    0xFA0B, 0xFAD1, 0xFBBC, 0xFCBA, 0xFDB9, 0xFEA6, 0xFF70, 0x0002,\n    0x004D, 0x0041, 0xFFEA, 0xFF5B, 0xFEA7, 0xFDE4, 0xFD25, 0xFC7D,\n    0xFC01, 0xFBC4, 0xFC05, 0xFCC4, 0xFDB7, 0xFE95, 0xFF14, 0xFF11,\n    0xFEB8, 0xFE35, 0xFDB3, 0xFD36, 0xFCAA, 0xFC19, 0xFB8C, 0xFB0B,\n    0xFA9E, 0xFA44, 0xF9FA, 0xF9BB, 0xF98E, 0xF97C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED98, 0xEDB6, 0xEDDD, 0xEE04,\n    0xEE22, 0xEE2E, 0xEE1F, 0xEDEC, 0xED8C, 0xECE0, 0xEBE3, 0xEAAF,\n    0xE960, 0xE812, 0xE6DE, 0xE5E1, 0xE535, 0xE4F6, 0xE5B0, 0xE77C,\n    0xE9C7, 0xEBFD, 0xED8C, 0xEE3F, 0xEE71, 0xEE61, 0xEE4D, 0xEE3D,\n    0xEE16, 0xEDE2, 0xEDB0, 0xED8C, 0xED7D, 0xED7C, 0xED7E, 0xED82,\n    0xED88, 0xED8C, 0xCA4F, 0xCA14, 0xC97D, 0xC8B2, 0xC7DA, 0xC71C,\n    0xC69F, 0xC68C, 0xC708, 0xC83C, 0xCA4F, 0xD176, 0xDDCE, 0xE95D,\n    0xEE2A, 0xE426, 0xD1A8, 0xC648, 0xC799, 0xCE35, 0xD63E, 0xDBD4,\n    0xDEF1, 0xE20E, 0xE50D, 0xE7D2, 0xEA40, 0xEC38, 0xED9E, 0xEE55,\n    0xEE3F, 0xEC5F, 0xE85D, 0xE311, 0xDD56, 0xD806, 0xD3F9, 0xD14E,\n    0xD04C, 0xD20D, 0xD722, 0xDE4B, 0xE5E8, 0xEC57, 0xEFF6, 0xEF0E,\n    0xEAA3, 0xE52C, 0xE121, 0xDF37, 0xDE15, 0xDD23, 0xDBC7, 0xD969,\n    0xD43D, 0xCD5E, 0xC890, 0xC7E6, 0xC94C, 0xCA4F, 0xFB1D, 0xFB1D,\n    0xFB1D, 0xFB1D, 0xFB1D, 0xFB1D, 0xFB1D, 0xFB1D, 0xFB1D, 0xFB1D,\n    0xFB1D, 0xFB1D, 0xFB1D, 0xFB1D, 0xFB1D, 0xFB4B, 0xFBB6, 0xFC31,\n    0xFC8D, 0xFC9D, 0xFC31, 0xFB1D, 0xF985, 0xF7B5, 0xF5B3, 0xF388,\n    0xF13D, 0xEED9, 0xEC65, 0xE9EA, 0xE76E, 0xE4FA, 0xE297, 0xE04D,\n    0xDE23, 0xDC23, 0xDA53, 0xD8BD, 0xD769, 0xD65F, 0xD67A, 0xD867,\n    0xDBEA, 0xE0C5, 0xE6BC, 0xF09E, 0xFE1D, 0x0A4F, 0x104C, 0x0EB2,\n    0x08C8, 0x00A2, 0xF855, 0xF1F2, 0xED8F, 0xEAA8, 0xEA71, 0xEF71,\n    0xF721, 0xFB1D, 0xD2DC, 0xD2DC, 0xD2DC, 0xD2DC, 0xD2DC, 0xD2DC,\n    0xD2DC, 0xD2DC, 0xD2DC, 0xD2DC, 0xD2DC, 0xD2DC, 0xD2DC, 0xD2DC,\n    0xD2DC, 0xD2D6, 0xD2C9, 0xD2BA, 0xD2AF, 0xD2AD, 0xD2BA, 0xD2DC,\n    0xD30B, 0xD33B, 0xD36D, 0xD3A1, 0xD3D8, 0xD410, 0xD44A, 0xD486,\n    0xD4C4, 0xD504, 0xD546, 0xD58A, 0xD5D1, 0xD619, 0xD664, 0xD6B1,\n    0xD700, 0xD751, 0xD7D4, 0xD894, 0xD95E, 0xD9FF, 0xDA43, 0xDA06,\n    0xD960, 0xD879, 0xD775, 0xD619, 0xD458, 0xD2A3, 0xD16A, 0xD11D,\n    0xD377, 0xD791, 0xD9E9, 0xD836, 0xD4C0, 0xD2DC, 0xD4B4, 0xD4B4,\n    0xD4B4, 0xD4B4, 0xD4B4, 0xD4B4, 0xD4B4, 0xD4B4, 0xD4B4, 0xD4B4,\n    0xD4B4, 0xD4B4, 0xD4B4, 0xD4B4, 0xD4B4, 0xD493, 0xD449, 0xD3F3,\n    0xD3B3, 0xD3A8, 0xD3F3, 0xD4B4, 0xD5D2, 0xD71F, 0xD892, 0xDA25,\n    0xDBD1, 0xDD8F, 0xDF58, 0xE126, 0xE2F1, 0xE4B3, 0xE665, 0xE801,\n    0xE97E, 0xEAD7, 0xEC05, 0xED00, 0xEDC2, 0xEE45, 0xEDDC, 0xEBEB,\n    0xE87B, 0xE39B, 0xDD56, 0xD24A, 0xC308, 0xB583, 0xAFAF, 0xB36D,\n    0xBCBC, 0xC8BD, 0xD48F, 0xDD54, 0xE1A3, 0xE2C9, 0xE1F2, 0xDDE0,\n    0xD7D1, 0xD4B4, 0x0000, 0x0014, 0x0050, 0x00B3, 0x013A, 0x01E4,\n    0x02AF, 0x039A, 0x04A4, 0x05C9, 0x0709, 0x0E4F, 0x164A, 0x1E55,\n    0x2559, 0x26D5, 0x26FA, 0x29B0, 0x2CD3, 0x3004, 0x32E1, 0x350C,\n    0x3680, 0x36B5, 0x3480, 0x2F86, 0x28F1, 0x21DC, 0x1B65, 0x16A8,\n    0x134C, 0x1036, 0x0D63, 0x0AD0, 0x087B, 0x0660, 0x047C, 0x02CC,\n    0x014F, 0x0000, 0xFEF8, 0xFE48, 0xFDE0, 0xFDB3, 0xFDB2, 0xFDCD,\n    0xFDF7, 0xFE21, 0xFE3C, 0xFE3A, 0xFE3C, 0xFE61, 0xFE98, 0xFECD,\n    0xFF03, 0xFF45, 0xFF89, 0xFFC5, 0xFFF0, 0x0000, 0x0000, 0x006C,\n    0x019A, 0x0367, 0x05B2, 0x0858, 0x0B37, 0x0E2C, 0x1117, 0x13D3,\n    0x1640, 0x1878, 0x173D, 0x1570, 0x14D2, 0x1ABC, 0x1F2D, 0x1B42,\n    0x15FC, 0x1083, 0x0C00, 0x099A, 0x0CA5, 0x136C, 0x178E, 0x175E,\n    0x15D4, 0x1389, 0x1118, 0x0F19, 0x0D7A, 0x0BC7, 0x0A0A, 0x084D,\n    0x069A, 0x04FA, 0x0378, 0x021C, 0x00F0, 0x0000, 0xFF51, 0xFEDB,\n    0xFE96, 0xFE78, 0xFE77, 0xFE89, 0xFEA5, 0xFEC1, 0xFED3, 0xFED2,\n    0xFED3, 0xFEEC, 0xFF10, 0xFF33, 0xFF58, 0xFF83, 0xFFB1, 0xFFD9,\n    0xFFF6, 0x0000, 0xF549, 0xF52F, 0xF4EA, 0xF486, 0xF412, 0xF39A,\n    0xF32A, 0xF2D1, 0xF29C, 0xF297, 0xF2D0, 0xF93D, 0xFDEF, 0x0243,\n    0x05E7, 0x05FC, 0x04C8, 0x044D, 0x03B1, 0x0340, 0x0348, 0x0417,\n    0x0803, 0x0D87, 0x0F24, 0x0B13, 0x0469, 0xFCF1, 0xF674, 0xF2BF,\n    0xF168, 0xF0C2, 0xF0AC, 0xF107, 0xF1B1, 0xF28A, 0xF373, 0xF44C,\n    0xF4F3, 0xF549, 0xF567, 0xF57B, 0xF586, 0xF58B, 0xF58C, 0xF588,\n    0xF584, 0xF57F, 0xF57C, 0xF57C, 0xF57C, 0xF578, 0xF572, 0xF56C,\n    0xF566, 0xF55E, 0xF557, 0xF550, 0xF54B, 0xF549, 0xC7DD, 0xC81F,\n    0xC8D8, 0xC9F5, 0xCB66, 0xCD17, 0xCEF7, 0xD0F4, 0xD2FC, 0xD4FD,\n    0xD6E4, 0xDC00, 0xDDE1, 0xDF26, 0xE050, 0xE121, 0xE18A, 0xE1DF,\n    0xE252, 0xE2B0, 0xE2C4, 0xE259, 0xE08D, 0xDDC2, 0xDBB0, 0xDAA3,\n    0xD9CD, 0xD93F, 0xD90B, 0xD941, 0xD9D3, 0xDA9A, 0xDB8A, 0xDC97,\n    0xDDB3, 0xDED1, 0xDFE4, 0xE0DF, 0xE1B5, 0xE259, 0xE2F1, 0xE3A0,\n    0xE453, 0xE4F9, 0xE57E, 0xE5D2, 0xE5E2, 0xE59C, 0xE4ED, 0xE3C4,\n    0xE026, 0xD9C4, 0xD30B, 0xCE67, 0xCBFB, 0xCA3A, 0xC90B, 0xC852,\n    0xC7F6, 0xC7DD, 0x054B, 0x0643, 0x082B, 0x0985, 0x08D4, 0x049A,\n    0xFB5A, 0xE7A0, 0xC9A1, 0xA84F, 0x8AA0, 0x7B9A, 0x7D53, 0x821B,\n    0x856F, 0x800C, 0xFBEF, 0xF3F5, 0xED11, 0xE687, 0xDF8A, 0xD74F,\n    0xCCC1, 0xC078, 0xB42A, 0xA508, 0x93A1, 0x86BE, 0x8526, 0x8CE6,\n    0x972F, 0xA37F, 0xB157, 0xC036, 0xCF9B, 0xDF07, 0xEDF8, 0xFBEE,\n    0x0867, 0x12E6, 0x198E, 0x1BF8, 0x1BD0, 0x1AC6, 0x1A85, 0x1B32,\n    0x1BB0, 0x1BC8, 0x1B41, 0x19E4, 0x16BC, 0x11FD, 0x0D30, 0x09E0,\n    0x081B, 0x06DB, 0x060A, 0x0591, 0x0559, 0x054B, 0x2BD6, 0x2E03,\n    0x3376, 0x3A91, 0x41B5, 0x4746, 0x49A5, 0x46B3, 0x3F44, 0x3628,\n    0x2E30, 0x2952, 0x263C, 0x2381, 0x211A, 0x2056, 0x5BC7, 0x5F7E,\n    0x5BFE, 0x5749, 0x52AD, 0x4F75, 0x4EDF, 0x4FFF, 0x50E7, 0x5150,\n    0x51CF, 0x51C2, 0x5084, 0x4E5B, 0x4BFD, 0x4972, 0x46C1, 0x43F2,\n    0x410B, 0x3E14, 0x3B14, 0x3811, 0x3514, 0x3224, 0x2F0C, 0x2BB3,\n    0x284B, 0x2502, 0x2209, 0x1F19, 0x1C12, 0x195E, 0x1768, 0x169B,\n    0x17D3, 0x1AD3, 0x1E61, 0x2141, 0x2384, 0x25E3, 0x2823, 0x2A0A,\n    0x2B59, 0x2BD6, 0xCCF6, 0xCBD3, 0xC845, 0xC20F, 0xB8F9, 0xACC6,\n    0x9D3D, 0x8472, 0x61F7, 0x3DDC, 0x2029, 0x2625, 0x22E6, 0x1DEB,\n    0x18D8, 0x13D4, 0x917F, 0x90C7, 0x8C07, 0x86D1, 0x8116, 0x7AC5,\n    0x7328, 0x6A8D, 0x6274, 0x5842, 0x4C59, 0x44B9, 0x4761, 0x52C2,\n    0x60E5, 0x712A, 0x82F5, 0x95A0, 0xA88E, 0xBB20, 0xCCB7, 0xDCB2,\n    0xEA72, 0xF557, 0xF911, 0xF460, 0xEB3D, 0xE1A4, 0xDB8D, 0xD941,\n    0xD81A, 0xD7AB, 0xD786, 0xD741, 0xD72C, 0xD785, 0xD7BB, 0xD73D,\n    0xD5C3, 0xD3A9, 0xD154, 0xCF2B, 0xCD94, 0xCCF6, 0x0000, 0x0011,\n    0x003D, 0x0076, 0x00AE, 0x00ED, 0x0133, 0x0166, 0x0115, 0x014D,\n    0x04FE, 0x004F, 0xFA2E, 0xF44A, 0xF054, 0xEFF2, 0xF1FE, 0xF3F5,\n    0xF50D, 0xF61D, 0xF719, 0xF7F5, 0xF895, 0xF902, 0xF96B, 0xF9D8,\n    0xFA3D, 0xFAAA, 0xFB30, 0xFC5E, 0xFCD6, 0xFD64, 0xFEB0, 0x0000,\n    0x003A, 0x0020, 0x0000, 0xFFFB, 0xFFFE, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x002A, 0x0055, 0x0000,\n    0xFEE5, 0xFD5D, 0xFBD7, 0xFABF, 0xFADB, 0xFB9C, 0xFC6E, 0xFDD8,\n    0xFF52, 0x0000, 0xFF30, 0xFF2F, 0xFF2D, 0xFF2A, 0xFF28, 0xFF25,\n    0xFF22, 0xFF20, 0xFF1F, 0xFF21, 0xFF32, 0xFFD7, 0x009E, 0x014A,\n    0x0198, 0x011D, 0x0023, 0xFF7B, 0xFF6B, 0xFF96, 0xFFD4, 0xFFFF,\n    0x000A, 0x000B, 0x000B, 0x0017, 0x002A, 0x002D, 0x0009, 0xFED6,\n    0xFF5B, 0x0005, 0x0015, 0x0000, 0x000A, 0x0005, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xFFFB, 0xFFF5, 0x0000, 0x002D, 0x006F, 0x00A6, 0x00B2,\n    0x0034, 0xFF91, 0xFF9B, 0xFF74, 0xFF46, 0xFF30, 0xC9D8, 0xC9C4,\n    0xC98E, 0xC940, 0xC8E1, 0xC860, 0xC7BE, 0xC721, 0xC6B6, 0xC622,\n    0xC48C, 0xC725, 0xCA8F, 0xCD9B, 0xCF1A, 0xCD60, 0xC998, 0xC6D4,\n    0xC61C, 0xC61C, 0xC663, 0xC681, 0xC65F, 0xC636, 0xC60A, 0xC64F,\n    0xC6DD, 0xC6D5, 0xC554, 0xB965, 0xBE4F, 0xC46A, 0xC4F8, 0xC1B2,\n    0xB3AD, 0xAF36, 0xAF5D, 0xB4BA, 0xBC70, 0xC353, 0xC503, 0xC696,\n    0xB5FD, 0xC938, 0xD967, 0xC9BA, 0xB6B2, 0xB3B5, 0xB588, 0xB8BB,\n    0xBCA3, 0xC1D3, 0xC6C6, 0xC9F3, 0xC780, 0xC36B, 0xC580, 0xC757,\n    0xC913, 0xC9D8, 0x1E4A, 0x245A, 0x31B7, 0x3F20, 0x4556, 0x3DA7,\n    0x2D75, 0x1FA7, 0x19E6, 0x1869, 0x1E4A, 0x1CB0, 0x19A1, 0x1738,\n    0x1791, 0x1D78, 0x2706, 0x2F49, 0x3571, 0x3B3D, 0x3F92, 0x4153,\n    0x3DE3, 0x3687, 0x2FF7, 0x2B16, 0x264E, 0x22AC, 0x213D, 0x24AC,\n    0x2B64, 0x300E, 0x2E11, 0x2A83, 0x2C35, 0x3C97, 0x469F, 0x3CB7,\n    0x2B76, 0x1B99, 0x159A, 0x24CE, 0x2738, 0x276D, 0x2AD0, 0x3A09,\n    0x469F, 0x435F, 0x3A99, 0x3240, 0x2BB3, 0x250C, 0x1F50, 0x1B87,\n    0x1E71, 0x236E, 0x2090, 0x1F66, 0x1E97, 0x1E4A, 0x1B09, 0x1636,\n    0x0B26, 0xFEF3, 0xF6B6, 0xF490, 0xF670, 0xFB20, 0x05E9, 0x132C,\n    0x1B09, 0x1C7D, 0x1CBC, 0x1CB0, 0x1B89, 0x18C5, 0x14E6, 0x10A8,\n    0x0BF8, 0x06CF, 0x01F8, 0xFE41, 0xFC81, 0xFC45, 0xFC62, 0xFC68,\n    0xFCA3, 0xFD0A, 0xFD93, 0xFE78, 0xFF9F, 0x007B, 0x0089, 0x003E,\n    0x0003, 0x0034, 0x0068, 0x0070, 0x006B, 0x0063, 0x0052, 0x0068,\n    0x007C, 0x0090, 0x00A1, 0x00A8, 0x00B5, 0x008E, 0x0070, 0x012F,\n    0x0315, 0x0597, 0x0856, 0x0AF2, 0x0D4F, 0x0FA6, 0x120F, 0x15A7,\n    0x1957, 0x1B09, 0x1144, 0x0D25, 0x03C3, 0xF99D, 0xF32E, 0xF30C,\n    0xF6DD, 0xFBB6, 0x01B8, 0x0920, 0x1144, 0x16D4, 0x15F5, 0x13F8,\n    0x1378, 0x1719, 0x1C35, 0x1D75, 0x189E, 0x10BD, 0x086B, 0x023F,\n    0xFFC1, 0xFF8B, 0xFFCF, 0xFFFD, 0x0086, 0x0127, 0x0195, 0x01CB,\n    0x01D3, 0x017F, 0x003A, 0xFEBD, 0xFE71, 0xFE8B, 0xFEC8, 0xFF29,\n    0xFF98, 0xFFE1, 0xFF58, 0xFEC8, 0xFEBF, 0xFED0, 0xFEE1, 0xFEE1,\n    0xFEED, 0xFF08, 0xFF2F, 0xFF80, 0xFFE3, 0x004C, 0x00EF, 0x0201,\n    0x047F, 0x0796, 0x09A1, 0x0CAF, 0x0FD3, 0x1144, 0xAC44, 0xA970,\n    0xA2FB, 0x9BF1, 0x975D, 0x968B, 0x984C, 0x9BF3, 0xA452, 0xAD3A,\n    0xAC44, 0xA98D, 0xA5CF, 0xA1DC, 0x9DB0, 0x98AF, 0x9374, 0x8FD6,\n    0x8E6E, 0x8E28, 0x8E55, 0x8E44, 0x8CDA, 0x8B6A, 0x8CEC, 0x91FD,\n    0x98E3, 0xA116, 0xAA0E, 0xB547, 0xC22E, 0xCD21, 0xD33B, 0xD5E1,\n    0xD2B1, 0xC11E, 0xAFFD, 0xA569, 0x9D52, 0x97F3, 0xA039, 0xA706,\n    0xB7AE, 0xC993, 0xD1C1, 0xBEE9, 0xA564, 0x9931, 0x90C5, 0x8D5B,\n    0x8F92, 0x957B, 0x9C75, 0xA1DF, 0xA380, 0xA3ED, 0xA5EC, 0xA87E,\n    0xAB16, 0xAC44, 0x0000, 0x00A1, 0x01FD, 0x0345, 0x03E7, 0x032E,\n    0x0254, 0x013F, 0xFFD7, 0xFD0A, 0xFA49, 0xF912, 0xF86B, 0xF84C,\n    0xFAD9, 0xFE20, 0x0192, 0x04E3, 0x032E, 0x005A, 0xFD0B, 0xFA4F,\n    0xF9F1, 0xFA67, 0xFAD6, 0xFB21, 0xFB64, 0xFBAD, 0xFC0C, 0xFC87,\n    0xFD1F, 0xFDD8, 0xFF03, 0x0000, 0x0031, 0x0018, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFC,\n    0xFFFB, 0x000B, 0x0081, 0x00E6, 0x0152, 0x01A6, 0x01C5, 0x0122,\n    0x0066, 0x0067, 0x009F, 0x00C4, 0x0077, 0xFFED, 0xFFB9, 0xFFE8,\n    0x0017, 0x002D, 0x0003, 0xFFA9, 0xFF07, 0xFE64, 0xFE4C, 0xFE69,\n    0xFE8E, 0xFEB7, 0xFEDF, 0xFF04, 0xFF2B, 0xFF5D, 0xFFB5, 0x0000,\n    0x000E, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xBF40, 0xBDCC, 0xBA7C, 0xB6E2, 0xB259, 0xB406,\n    0xB6C3, 0xB959, 0xBA92, 0xB5DC, 0xB32E, 0xBAD9, 0xC608, 0xCF9D,\n    0xCF7E, 0xCC1D, 0xC80B, 0xC449, 0xC39A, 0xC397, 0xC41F, 0xC3C2,\n    0xC003, 0xBBE8, 0xBBD6, 0xBD98, 0xBF94, 0xC1C1, 0xC417, 0xC745,\n    0xCAC0, 0xCCA9, 0xCAB9, 0xC696, 0xC0BF, 0xBA85, 0xB924, 0xC186,\n    0xCEC0, 0xD74A, 0xD195, 0xC837, 0xC431, 0xC0B6, 0xBDBC, 0xBB39,\n    0xB924, 0xB836, 0xB88B, 0xB924, 0xB9C1, 0xBAA2, 0xBB8F, 0xBCA0,\n    0xBDD7, 0xBED6, 0xBF40, 0xBF40, 0xBF40, 0xBF40, 0x2537, 0x2476,\n    0x22D5, 0x2149, 0x20C6, 0x2209, 0x2468, 0x26B6, 0x27C8, 0x264B,\n    0x2124, 0x16EC, 0x0AF3, 0x0377, 0x0404, 0x090E, 0x0E27, 0x1215,\n    0x101D, 0x0D17, 0x0A51, 0x091A, 0x0C3B, 0x120E, 0x1947, 0x2303,\n    0x2DB4, 0x36F3, 0x3C5B, 0x3B34, 0x34A4, 0x2C10, 0x1D0C, 0x1211,\n    0x16B0, 0x20EB, 0x2A1A, 0x2F78, 0x33CB, 0x38C5, 0x43F9, 0x4770,\n    0x3437, 0x1978, 0x08BD, 0x1649, 0x2A1A, 0x2CFA, 0x2B67, 0x2A1A,\n    0x2B14, 0x2C55, 0x2C91, 0x2B07, 0x288B, 0x263B, 0x2537, 0x2537,\n    0x2537, 0x2537, 0xD64A, 0xD60A, 0xD56C, 0xD4A6, 0xD3EC, 0xD227,\n    0xCF9C, 0xCE8D, 0xD138, 0xE1AA, 0xF3A5, 0xF976, 0xFB59, 0xFB0B,\n    0xF86B, 0xF399, 0xEEBC, 0xEA5A, 0xE7F0, 0xE692, 0xE588, 0xE7D3,\n    0xF22C, 0xFEB1, 0x06ED, 0x01EF, 0xFAB1, 0xF3BA, 0xEF96, 0xF0E3,\n    0xF5B4, 0xF9BC, 0xFA97, 0xFAA4, 0xFB39, 0xFBE0, 0xFCBE, 0xFEC3,\n    0x00FE, 0x00CE, 0xF8C9, 0xF156, 0xF2DB, 0xF74F, 0xFB1D, 0xFC6D,\n    0xFCBE, 0xFD55, 0xFDB1, 0xFC97, 0xF95D, 0xF4AD, 0xEF4C, 0xE850,\n    0xE00F, 0xD92C, 0xD64A, 0xD64A, 0xD64A, 0xD64A, 0xEC41, 0xEC88,\n    0xED7D, 0xEF54, 0xF23E, 0xF778, 0xFE83, 0x04F2, 0x085C, 0x00FE,\n    0xF8CD, 0xFB22, 0x00AC, 0x0597, 0x088D, 0x0AE3, 0x0CC3, 0x0C67,\n    0x0A3F, 0x07AE, 0x0574, 0x0256, 0xFC91, 0xF679, 0xF382, 0xF74E,\n    0xFC5C, 0x00FF, 0x0390, 0x01D0, 0xFD5D, 0xFA4F, 0xFBFD, 0xFE9D,\n    0xFEFF, 0xFED3, 0xFEC8, 0xFF30, 0xFFB9, 0x001F, 0x0045, 0x0000,\n    0xFF0F, 0xFDE1, 0xFD2A, 0xFDBC, 0xFEC8, 0xFFAA, 0x0081, 0x00B1,\n    0x002A, 0xFEFD, 0xFCBD, 0xF885, 0xF309, 0xEE48, 0xEC41, 0xEC41,\n    0xEC41, 0xEC41, 0xB59E, 0xB5E9, 0xB6BA, 0xB7FF, 0xB9A4, 0xBC53,\n    0xBFDC, 0xC2E3, 0xC40E, 0xBE73, 0xB855, 0xB96A, 0xBC8C, 0xBDD4,\n    0xBB4E, 0xB6EE, 0xB2AC, 0xAFA2, 0xB2C2, 0xB744, 0xBC50, 0xC0C8,\n    0xC301, 0xC3C9, 0xC189, 0xC41C, 0xC7F5, 0xCA7E, 0xC920, 0xBCC1,\n    0xAAFB, 0xA447, 0xBF43, 0xDEC1, 0xE7A9, 0xE980, 0xE6FD, 0xDF65,\n    0xD373, 0xC807, 0xBCBD, 0xB752, 0xBD61, 0xC821, 0xD312, 0xDD48,\n    0xE6FD, 0xF065, 0xF92A, 0xFDBA, 0xFCA9, 0xF763, 0xEE9B, 0xDFE8,\n    0xCCF6, 0xBC97, 0xB59E, 0xB59E, 0xB59E, 0xB59E, 0x8001, 0x8001,\n    0x4171, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00AB, 0x0157,\n    0x0000, 0xF7B6, 0xF0ED, 0xF232, 0xF554, 0xF957, 0xFD3A, 0x0000,\n    0x00D6, 0x006B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xBF5F, 0xBF5F, 0xBF5F,\n    0xBF60, 0xBF60, 0xBF61, 0xBF62, 0xBF62, 0xBF62, 0xBF62, 0xBF5F,\n    0xBF56, 0xBF4B, 0xBF3F, 0xBF31, 0xBF22, 0xBF15, 0xBF12, 0xBF20,\n    0xBF2D, 0xBF41, 0xBF5F, 0xBF9D, 0xBFF0, 0xC04A, 0xC0A2, 0xC0F7,\n    0xC153, 0xC1C1, 0xC514, 0xC881, 0xC3A4, 0xA549, 0x86BD, 0x7EFA,\n    0x7F58, 0x86BD, 0x9946, 0xB2D3, 0xC5E4, 0xC7B8, 0xBF5F, 0xB4D7,\n    0xA857, 0x9B71, 0x8FB7, 0x86BD, 0x82E7, 0x83C9, 0x86BD, 0x8B27,\n    0x91A3, 0x9960, 0xA3DD, 0xB06B, 0xBAF3, 0xBF5F, 0xBF5F, 0xBF5F,\n    0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x0000, 0xFE42, 0xF9B1,\n    0xF34D, 0xEC18, 0xE512, 0xDF3A, 0xDB92, 0xDDBC, 0xE486, 0xE9B4,\n    0xEAA0, 0xEA05, 0xE9BF, 0xEBA7, 0xEFB6, 0xF489, 0xF9EF, 0xFFB6,\n    0x05AD, 0x0BA5, 0x116B, 0x182C, 0x1F43, 0x23C9, 0x258A, 0x25FE,\n    0x24B9, 0x2151, 0x15E0, 0x081B, 0xFEF2, 0xF743, 0xF2EB, 0xF398,\n    0xF79B, 0xFBC5, 0xFFF1, 0x0456, 0x0656, 0x04A2, 0x00EA, 0xFC82,\n    0xF8BA, 0xF70D, 0xF869, 0xFADB, 0xFD75, 0xFF85, 0x0034, 0xFF1A,\n    0xFC54, 0xF932, 0xF727, 0xF80E, 0xFA34, 0xFBF0, 0xFDD7, 0xFF5F,\n    0x0000, 0x0000, 0xFFF8, 0xFFE1, 0xFFBD, 0xFF8F, 0xFF5A, 0xFF21,\n    0xFEE5, 0xFEA1, 0xFE3F, 0xFDAA, 0xFCA5, 0xFB58, 0xFA44, 0xF9E9,\n    0xFA45, 0xFAED, 0xFBCC, 0xFCCA, 0xFDD1, 0xFECB, 0xFFA1, 0x006A,\n    0x0114, 0x0144, 0x00BC, 0xFFC8, 0xFEDF, 0xFE77, 0xFFF1, 0x014E,\n    0x0041, 0xFE7C, 0xFD6D, 0xFDE7, 0xFF18, 0x0000, 0x0030, 0x0018,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0xFFFD, 0xFFF9, 0xFFF5, 0xFFF4, 0xFFEF, 0xFFEB, 0x0000, 0x0069,\n    0x00BE, 0x00A0, 0x005F, 0x001D, 0x0000, 0xFC62, 0xFBB3, 0xF9E2,\n    0xF74C, 0xF44A, 0xF138, 0xEE71, 0xEC50, 0xEB33, 0xEB09, 0xEB85,\n    0xECA4, 0xEE48, 0xEFFB, 0xF146, 0xF21C, 0xF2C7, 0xF357, 0xF3DD,\n    0xF46B, 0xF510, 0xF5DE, 0xF718, 0xF8B5, 0xFA57, 0xFBE2, 0xFD72,\n    0xFF01, 0x0089, 0x0227, 0x037B, 0x0439, 0x049B, 0x0469, 0x0388,\n    0x0256, 0x0147, 0x00B6, 0x008D, 0x00CD, 0x0208, 0x0337, 0x0371,\n    0x0355, 0x02E9, 0x01A8, 0x0069, 0xFFA3, 0xFF76, 0xFFBA, 0xFFBB,\n    0xFF0F, 0xFE3E, 0xFE00, 0xFFAD, 0x0148, 0x0076, 0xFEC9, 0xFD21,\n    0xFC62, 0x0000, 0x04EA, 0x0ED0, 0x166B, 0x196F, 0x1AEA, 0x1B9A,\n    0x1C41, 0x1D3A, 0x1DB1, 0x1C9A, 0x1996, 0x1576, 0x10F0, 0x0CBD,\n    0x091C, 0x05B6, 0x0263, 0xFEFF, 0xFB60, 0xF761, 0xF2DC, 0xEB14,\n    0xE188, 0xDC68, 0xDD0A, 0xE053, 0xE5C5, 0xECE2, 0xFB75, 0x0B1C,\n    0x14DF, 0x1C57, 0x1E9E, 0x1853, 0x0CD8, 0x0373, 0xFED8, 0xFC45,\n    0xFAD8, 0xFB2A, 0xFD9F, 0x01E8, 0x06E5, 0x0946, 0x0884, 0x068F,\n    0x02F6, 0x0013, 0x00BC, 0x02A4, 0x04E6, 0x06AA, 0x071E, 0x0667,\n    0x0508, 0x035B, 0x01B9, 0x007D, 0x0000, 0x0000, 0x0024, 0x0022,\n    0xFF57, 0xFD4C, 0xFA89, 0xF7E1, 0xF627, 0xF658, 0xF7B2, 0xF86E,\n    0xF7A7, 0xF63E, 0xF50D, 0xF4F0, 0xF5E3, 0xF73E, 0xF8E5, 0xFABB,\n    0xFCA4, 0xFE84, 0x003C, 0x0268, 0x0493, 0x0510, 0x0329, 0xFFFA,\n    0xFC87, 0xF9D9, 0xF8BD, 0xF957, 0xFBD0, 0xFF0C, 0x012B, 0x00FD,\n    0xFFB3, 0xFF03, 0xFFD4, 0x0140, 0x024B, 0x023E, 0x01A1, 0x00E4,\n    0x0009, 0xFF4D, 0xFEC2, 0xFE9C, 0xFF55, 0x000D, 0x002D, 0x002E,\n    0x001E, 0x000A, 0x0000, 0x0000, 0xFFFF, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0884, 0x083B, 0x07B0, 0x0756, 0x0792, 0x081A, 0x085C,\n    0x07C9, 0x04FF, 0x010E, 0xFF12, 0x0050, 0x031A, 0x0617, 0x07EF,\n    0x0890, 0x08DA, 0x08E3, 0x08C0, 0x0885, 0x0848, 0x081D, 0x07DE,\n    0x076B, 0x06E9, 0x0651, 0x05A1, 0x0502, 0x049C, 0x04F9, 0x05AF,\n    0x056F, 0x04C6, 0x0484, 0x0589, 0x076C, 0x0869, 0x0719, 0x051E,\n    0x04EE, 0x064C, 0x07BE, 0x07BB, 0x048C, 0x030E, 0x05D4, 0x078A,\n    0x05AC, 0x03D2, 0x03BD, 0x0402, 0x0473, 0x04E7, 0x0532, 0x058C,\n    0x0631, 0x06F8, 0x07B9, 0x084A, 0x0884, 0x0000, 0x0089, 0x01DA,\n    0x0386, 0x051C, 0x0726, 0x094D, 0x09D6, 0x071C, 0x02C5, 0x0000,\n    0x006C, 0x0256, 0x03EE, 0x0365, 0x0080, 0xFC84, 0xF7E1, 0xF30B,\n    0xEE75, 0xEA91, 0xE7D1, 0xE90D, 0xED43, 0xEF22, 0xEC5B, 0xE790,\n    0xE2DB, 0xE053, 0xE08D, 0xE269, 0xE572, 0xE933, 0xEE61, 0xF4F4,\n    0xFB59, 0x0000, 0x0172, 0x00B9, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xFE48, 0xFA7A, 0xF69E, 0xF4BC, 0xF6C0, 0xFB15,\n    0xFE7E, 0xFF34, 0xFF00, 0x0000, 0x0375, 0x0822, 0x0C6B, 0x0EB6,\n    0x0F1D, 0x0EDF, 0x0E1D, 0x0CF7, 0x0B8B, 0x09FA, 0x0863, 0x0580,\n    0x0197, 0xFF1F, 0xFEFB, 0xFFE9, 0x011D, 0x01CD, 0x01B5, 0x0148,\n    0x00C2, 0x0061, 0x0034, 0x001A, 0x000C, 0x0000, 0xFFFA, 0xFFFD,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x40A1, 0x408C, 0x406D,\n    0x4073, 0x40CB, 0x41CF, 0x434C, 0x4499, 0x458C, 0x4650, 0x46BE,\n    0x46D2, 0x46AF, 0x4669, 0x4614, 0x45B1, 0x453A, 0x44BA, 0x4438,\n    0x43BF, 0x4357, 0x430B, 0x4363, 0x440C, 0x43C6, 0x41F7, 0x3F60,\n    0x3CC7, 0x3AF4, 0x3A35, 0x3A17, 0x3A41, 0x3A5C, 0x3A50, 0x3A41,\n    0x3A36, 0x3A32, 0x3A3B, 0x3A55, 0x3A85, 0x3B5A, 0x3C7D, 0x3D5E,\n    0x3E50, 0x3F4E, 0x404F, 0x4150, 0x424A, 0x4337, 0x4411, 0x44D2,\n    0x4574, 0x45F1, 0x4644, 0x4602, 0x4502, 0x439F, 0x4231, 0x4114,\n    0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_60.inc.c",
    "content": "static const struct Animation anim_60[] = {\n    9,\n    189,\n    0,\n    0,\n    0x32,\n    ANIMINDEX_NUMPARTS(anim_60_indices),\n    anim_60_values,\n    anim_60_indices,\n    0,\n};\n\n\nstatic const u16 anim_60_indices[] = {\n    0x0032, 0x0001, 0x0032, 0x0033, 0x0032, 0x0065, 0x0001, 0x0000, 0x0001, 0x0097, 0x0001, 0x0000,\n    0x0032, 0x0744, 0x0032, 0x0776, 0x0032, 0x07A8,\n    0x0032, 0x06AE, 0x0032, 0x06E0, 0x0032, 0x0712,\n    0x0032, 0x0618, 0x0032, 0x064A, 0x0032, 0x067C,\n    0x0001, 0x0614, 0x0001, 0x0615, 0x0001, 0x0616,\n    0x0032, 0x0160, 0x0032, 0x0192, 0x0032, 0x01C4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x012E,\n    0x0032, 0x0098, 0x0032, 0x00CA, 0x0032, 0x00FC,\n    0x0001, 0x0610, 0x0001, 0x0611, 0x0001, 0x0612,\n    0x0032, 0x02BE, 0x0032, 0x02F0, 0x0032, 0x0322,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x028C,\n    0x0032, 0x01F6, 0x0032, 0x0228, 0x0032, 0x025A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0613,\n    0x0032, 0x057A, 0x0032, 0x05AC, 0x0032, 0x05DE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x0548,\n    0x0032, 0x04B2, 0x0032, 0x04E4, 0x0032, 0x0516,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0617,\n    0x0032, 0x041C, 0x0032, 0x044E, 0x0032, 0x0480,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x03EA,\n    0x0032, 0x0354, 0x0032, 0x0386, 0x0032, 0x03B8,\n};\n\nstatic const s16 anim_60_values[] = {\n    0x0000, 0x0000, 0xFFFD, 0xFFF8, 0xFFF0, 0xFFF0, 0x0000, 0x0016,\n    0x002E, 0x0043, 0x0058, 0x006A, 0x0075, 0x006D, 0x005E, 0x005D,\n    0x0060, 0x0061, 0x0054, 0x004F, 0x004E, 0x004D, 0x004C, 0x004B,\n    0x004A, 0x0049, 0x0048, 0x0046, 0x0042, 0x003C, 0x0032, 0x0029,\n    0x0024, 0x0023, 0x0023, 0x0024, 0x0025, 0x0027, 0x0029, 0x002B,\n    0x002A, 0x002A, 0x0029, 0x0027, 0x0021, 0x001A, 0x0013, 0x000C,\n    0x0007, 0x0003, 0x0000, 0x00AA, 0x00AB, 0x00AD, 0x00B0, 0x00B3,\n    0x00B5, 0x00B7, 0x00B8, 0x00BB, 0x00C2, 0x00C9, 0x00CD, 0x00C4,\n    0x00B8, 0x00B8, 0x00B8, 0x00AD, 0x00B3, 0x00C2, 0x00CC, 0x00C0,\n    0x00B0, 0x00AE, 0x00B2, 0x00BD, 0x00C9, 0x00D1, 0x00D1, 0x00C8,\n    0x00BD, 0x00B6, 0x00B8, 0x00BE, 0x00C4, 0x00C9, 0x00CA, 0x00BF,\n    0x00AD, 0x00A2, 0x00A0, 0x00A2, 0x00A5, 0x00A9, 0x00AB, 0x00AC,\n    0x00AC, 0x00AC, 0x00AC, 0x00AC, 0x00AC, 0x0168, 0x016D, 0x0172,\n    0x0175, 0x0168, 0x0144, 0x0118, 0x00E9, 0x00BB, 0x008E, 0x005F,\n    0x0031, 0x0004, 0xFFD7, 0xFFAA, 0xFF7C, 0xFF4D, 0xFF1E, 0xFEEF,\n    0xFEC0, 0xFE91, 0xFE61, 0xFE31, 0xFE02, 0xFDD2, 0xFDA3, 0xFD74,\n    0xFD45, 0xFD17, 0xFCE9, 0xFCBC, 0xFC8F, 0xFC62, 0xFC37, 0xFC0C,\n    0xFBE2, 0xFBB9, 0xFB91, 0xFB6A, 0xFB4F, 0xFB47, 0xFB49, 0xFB4F,\n    0xFB51, 0xFB4F, 0xFB4D, 0xFB4C, 0xFB4C, 0xFB4B, 0xFB4B, 0x3FFF,\n    0x0000, 0x00EC, 0x0349, 0x067E, 0x09F1, 0x0D06, 0x0F25, 0x0FB4,\n    0x0A5E, 0x00E0, 0xFBBA, 0x0093, 0x09C4, 0x0EC9, 0x0EAC, 0x0E2E,\n    0x0D5C, 0x0C44, 0x0AF4, 0x0979, 0x07E1, 0x0639, 0x0490, 0x02F2,\n    0x016E, 0x0011, 0xFEEA, 0xFE04, 0xFD6F, 0xFD14, 0xFCD3, 0xFCAB,\n    0xFC99, 0xFC9C, 0xFCAF, 0xFCD2, 0xFD02, 0xFD3D, 0xFD80, 0xFDC9,\n    0xFE16, 0xFE64, 0xFEB2, 0xFEFD, 0xFF43, 0xFF81, 0xFFB5, 0xFFDE,\n    0xFFF7, 0x0000, 0xF97C, 0xF92E, 0xF865, 0xF74E, 0xF618, 0xF4F0,\n    0xF405, 0xF385, 0xF481, 0xF673, 0xF72C, 0xF4FA, 0xF18F, 0xEFCF,\n    0xEFF2, 0xF03C, 0xF0A7, 0xF12E, 0xF1CB, 0xF27A, 0xF334, 0xF3F4,\n    0xF4B6, 0xF573, 0xF626, 0xF6CB, 0xF75A, 0xF7D0, 0xF826, 0xF867,\n    0xF89F, 0xF8D0, 0xF8FB, 0xF91E, 0xF93C, 0xF955, 0xF968, 0xF977,\n    0xF981, 0xF989, 0xF98D, 0xF98E, 0xF98E, 0xF98C, 0xF989, 0xF986,\n    0xF982, 0xF97F, 0xF97D, 0xF97C, 0xED8C, 0xED75, 0xED30, 0xECB9,\n    0xEC0E, 0xEB2C, 0xEA10, 0xE8B8, 0xE5E7, 0xE1E0, 0xDEE4, 0xDD96,\n    0xDD51, 0xDE68, 0xE075, 0xE2CD, 0xE563, 0xE825, 0xEB05, 0xEDF2,\n    0xF0DE, 0xF3B9, 0xF673, 0xF8FD, 0xFB47, 0xFD42, 0xFEDE, 0x000B,\n    0x00BB, 0x00FC, 0x00EE, 0x0098, 0x0002, 0xFF35, 0xFE37, 0xFD11,\n    0xFBCA, 0xFA6B, 0xF8FA, 0xF781, 0xF606, 0xF492, 0xF32D, 0xF1DD,\n    0xF0AC, 0xEFA1, 0xEEC3, 0xEE1B, 0xEDB1, 0xED8C, 0xCA4F, 0xCA7B,\n    0xCAFF, 0xCBDE, 0xCD1E, 0xCEBF, 0xD0C6, 0xD336, 0xD808, 0xDEFD,\n    0xE4C3, 0xE81D, 0xEA48, 0xEBAD, 0xECDF, 0xEE1C, 0xEF4C, 0xF059,\n    0xF12B, 0xF1AC, 0xF1C4, 0xF15C, 0xF025, 0xEE12, 0xEB70, 0xE88E,\n    0xE5B8, 0xE33D, 0xE16A, 0xE000, 0xDE8B, 0xDD10, 0xDB90, 0xDA10,\n    0xD891, 0xD716, 0xD5A3, 0xD439, 0xD2DC, 0xD18F, 0xD054, 0xCF2F,\n    0xCE21, 0xCD2F, 0xCC5A, 0xCBA5, 0xCB14, 0xCAA8, 0xCA66, 0xCA4F,\n    0xFB1D, 0xFC61, 0xFF67, 0x0305, 0x0611, 0x0761, 0x05CA, 0x0024,\n    0xE959, 0xC4E0, 0xAA6A, 0xA503, 0xA99F, 0xAEBA, 0xB0E3, 0xB306,\n    0xB531, 0xB774, 0xB9DB, 0xBC76, 0xBF53, 0xC280, 0xC882, 0xD014,\n    0xD393, 0xCDF7, 0xC449, 0xC002, 0xC1CD, 0xC3FF, 0xC68B, 0xC964,\n    0xCC80, 0xCFD1, 0xD34C, 0xD6E5, 0xDA8F, 0xDE3F, 0xE1E9, 0xE580,\n    0xE8F9, 0xEC47, 0xEF5F, 0xF234, 0xF4BB, 0xF6E7, 0xF8AD, 0xF9FF,\n    0xFAD4, 0xFB1D, 0xD2DC, 0xD3CB, 0xD609, 0xD8C5, 0xDB2B, 0xDC69,\n    0xDBAA, 0xD81B, 0xC8A7, 0xAFE2, 0x9E84, 0x9BD3, 0xA088, 0xA77A,\n    0xAE83, 0xB6A3, 0xBF61, 0xC849, 0xD0E4, 0xD8BA, 0xDF57, 0xE444,\n    0xE189, 0xD847, 0xD2A8, 0xD668, 0xDDCB, 0xE1D1, 0xE1BC, 0xE17C,\n    0xE114, 0xE089, 0xDFE0, 0xDF1D, 0xDE44, 0xDD59, 0xDC62, 0xDB61,\n    0xDA5C, 0xD957, 0xD857, 0xD75F, 0xD674, 0xD59A, 0xD4D5, 0xD42B,\n    0xD39F, 0xD336, 0xD2F3, 0xD2DC, 0xD4B4, 0xD357, 0xCFFB, 0xCBB4,\n    0xC799, 0xC4C0, 0xC43C, 0xC725, 0xD739, 0xF210, 0x0687, 0x0D8B,\n    0x0E30, 0x0C9A, 0x0B1A, 0x0941, 0x0715, 0x049A, 0x01D5, 0xFECC,\n    0xFB81, 0xF7FA, 0xF16B, 0xE8FB, 0xE497, 0xE8FA, 0xF16A, 0xF5A3,\n    0xF4DC, 0xF3D2, 0xF28B, 0xF111, 0xEF69, 0xED9B, 0xEBB0, 0xE9AE,\n    0xE79D, 0xE585, 0xE36C, 0xE15B, 0xDF58, 0xDD6C, 0xDB9E, 0xD9F5,\n    0xD879, 0xD732, 0xD626, 0xD55D, 0xD4DF, 0xD4B4, 0x0000, 0x00E8,\n    0x033C, 0x0669, 0x09D8, 0x0CF3, 0x0F27, 0x0AE2, 0x0037, 0xF7C0,\n    0x00AA, 0xFB5B, 0xF484, 0xF448, 0xF65A, 0xF92C, 0xFCF3, 0x014F,\n    0x04F5, 0x0698, 0x06C3, 0x06DC, 0x06E6, 0x06E1, 0x06CE, 0x06AE,\n    0x0683, 0x064D, 0x060E, 0x05C7, 0x0579, 0x0524, 0x04CB, 0x046D,\n    0x040D, 0x03AB, 0x0348, 0x02E6, 0x0286, 0x0228, 0x01CD, 0x0178,\n    0x0129, 0x00E1, 0x00A0, 0x0069, 0x003D, 0x001B, 0x0007, 0x0000,\n    0x0000, 0x007F, 0x01E6, 0x040F, 0x06D5, 0x0A12, 0x0DA3, 0x19BE,\n    0x1684, 0x1190, 0x1351, 0x1112, 0x0F88, 0x1584, 0x1A56, 0x1BB3,\n    0x169B, 0x0F07, 0x07F6, 0x0465, 0x039F, 0x02EC, 0x024B, 0x01BC,\n    0x013E, 0x00CF, 0x0070, 0x001F, 0xFFDB, 0xFFA4, 0xFF77, 0xFF55,\n    0xFF3D, 0xFF2D, 0xFF25, 0xFF25, 0xFF2A, 0xFF34, 0xFF43, 0xFF55,\n    0xFF6A, 0xFF80, 0xFF97, 0xFFAD, 0xFFC3, 0xFFD7, 0xFFE8, 0xFFF5,\n    0xFFFD, 0x0000, 0xF549, 0xF4EB, 0xF3EC, 0xF275, 0xF0B1, 0xEEC8,\n    0xECE4, 0xE882, 0xE8DD, 0xE996, 0xE76A, 0xE389, 0xDEB7, 0xD6DE,\n    0xD3E2, 0xD467, 0xD9F9, 0xE1AC, 0xE8B9, 0xEC55, 0xED44, 0xEE22,\n    0xEEEF, 0xEFAD, 0xF05B, 0xF0FA, 0xF18C, 0xF210, 0xF288, 0xF2F4,\n    0xF354, 0xF3AA, 0xF3F5, 0xF437, 0xF470, 0xF4A0, 0xF4C9, 0xF4EC,\n    0xF507, 0xF51D, 0xF52E, 0xF53B, 0xF543, 0xF549, 0xF54B, 0xF54C,\n    0xF54C, 0xF54B, 0xF54A, 0xF549, 0xC7DD, 0xC8FB, 0xCBDB, 0xCFC5,\n    0xD402, 0xD7DC, 0xDA9B, 0xD590, 0xD3CD, 0xD744, 0xD11E, 0xD07B,\n    0xD15A, 0xD444, 0xE815, 0xF555, 0xF07F, 0xE68E, 0xDAED, 0xD105,\n    0xCC42, 0xCD15, 0xD0E4, 0xD68A, 0xDCE4, 0xE2CD, 0xE71F, 0xE8B7,\n    0xE861, 0xE7B3, 0xE6B6, 0xE572, 0xE3F2, 0xE23D, 0xE05C, 0xDE5A,\n    0xDC3E, 0xDA13, 0xD7E0, 0xD5AE, 0xD388, 0xD175, 0xCF7F, 0xCDAF,\n    0xCC0D, 0xCAA3, 0xC97A, 0xC89B, 0xC80E, 0xC7DD, 0x054B, 0x0954,\n    0x1426, 0x23D7, 0x367C, 0x4A2B, 0x5CF9, 0x6CFC, 0x7519, 0xD887,\n    0x1B1F, 0xFE48, 0xFDB6, 0xE9EF, 0xD1A3, 0xC5B0, 0xCE84, 0xDBBB,\n    0xEB86, 0xFC15, 0x0B94, 0x1837, 0x202C, 0x2063, 0x1995, 0x0FA3,\n    0x066D, 0x01D5, 0x00F2, 0x0045, 0xFFC9, 0xFF79, 0xFF52, 0xFF4F,\n    0xFF6D, 0xFFA7, 0xFFF9, 0x005E, 0x00D3, 0x0155, 0x01DD, 0x0269,\n    0x02F4, 0x037A, 0x03F7, 0x0467, 0x04C4, 0x050D, 0x053B, 0x054B,\n    0x2BD6, 0x2B40, 0x29BF, 0x27B3, 0x257D, 0x237D, 0x2214, 0x21A2,\n    0x2D28, 0x3895, 0x3C57, 0x3650, 0x316A, 0x3BF7, 0x3204, 0x2838,\n    0x25D6, 0x2426, 0x2312, 0x2284, 0x2266, 0x22A1, 0x231F, 0x24BA,\n    0x27B6, 0x2B1E, 0x2DFE, 0x2F61, 0x2FA7, 0x2FD4, 0x2FEC, 0x2FEF,\n    0x2FE0, 0x2FC2, 0x2F95, 0x2F5C, 0x2F19, 0x2ECF, 0x2E7F, 0x2E2B,\n    0x2DD5, 0x2D80, 0x2D2D, 0x2CDE, 0x2C96, 0x2C56, 0x2C21, 0x2BF9,\n    0x2BDF, 0x2BD6, 0xCCF6, 0xCF81, 0xD64F, 0xE027, 0xEBCE, 0xF80A,\n    0x039E, 0x0D54, 0x0FD9, 0x7645, 0xB667, 0x96F8, 0x95D4, 0x8BBE,\n    0x7DA9, 0x7923, 0x8550, 0x957F, 0xA7D6, 0xBA7A, 0xCB8C, 0xD932,\n    0xE18F, 0xE072, 0xD661, 0xC88B, 0xBC21, 0xB654, 0xB5C5, 0xB599,\n    0xB5C5, 0xB642, 0xB707, 0xB80A, 0xB943, 0xBAA9, 0xBC32, 0xBDD6,\n    0xBF8C, 0xC14B, 0xC30A, 0xC4BF, 0xC663, 0xC7EC, 0xC951, 0xCA89,\n    0xCB8B, 0xCC4F, 0xCCCB, 0xCCF6, 0x0000, 0xFFF0, 0xFFD4, 0xFFCF,\n    0x0000, 0x0098, 0x017F, 0x026D, 0x0362, 0x0109, 0x0054, 0x0000,\n    0xFF89, 0xFEF7, 0xFE9A, 0xFEBC, 0xFF70, 0x0077, 0x01AC, 0x02E9,\n    0x0405, 0x04DA, 0x033F, 0x01E1, 0x0072, 0xFE75, 0xFE51, 0xFE60,\n    0xFE8A, 0xFEB8, 0xFED4, 0xFEDA, 0xFED8, 0xFED5, 0xFED4, 0xFEE7,\n    0xFF06, 0xFF12, 0xFEEA, 0xFE34, 0xFD37, 0xFCC5, 0xFE05, 0xFF6C,\n    0xFFBF, 0xFFEF, 0x0003, 0x0007, 0x0003, 0x0000, 0xFF30, 0xFF2F,\n    0xFF2E, 0xFF2E, 0xFF30, 0xFF28, 0xFF24, 0xFF4B, 0x0056, 0x00CA,\n    0x0044, 0xFF30, 0xFD11, 0xFA9C, 0xF897, 0xF7C6, 0xF832, 0xF93F,\n    0xFAB8, 0xFC68, 0xFE18, 0xFF93, 0x00EC, 0x00CA, 0x003F, 0xFF2F,\n    0xFF03, 0xFEEE, 0xFEE8, 0xFEE7, 0xFEE3, 0xFEDD, 0xFEDC, 0xFEDE,\n    0xFEE3, 0xFEED, 0xFEFB, 0xFF09, 0xFF13, 0xFF15, 0xFF11, 0xFF0F,\n    0xFF14, 0xFF1A, 0xFF1E, 0xFF23, 0xFF28, 0xFF2C, 0xFF2F, 0xFF30,\n    0xC9D8, 0xC9CA, 0xC9B3, 0xC9AE, 0xC9D8, 0xCB62, 0xCD2E, 0xCBE1,\n    0xB9F7, 0xBBD4, 0xC412, 0xC970, 0xC54C, 0xBF55, 0xBA1D, 0xB838,\n    0xBA2E, 0xBE2F, 0xC347, 0xC886, 0xCCF8, 0xCFAB, 0xC2C7, 0xBC0A,\n    0xBA36, 0xCAC8, 0xCAB9, 0xC8CF, 0xC5FA, 0xC32B, 0xC153, 0xC092,\n    0xC05E, 0xC0A5, 0xC153, 0xC2C2, 0xC4DC, 0xC6E9, 0xC82F, 0xC7EB,\n    0xC6B2, 0xC5D2, 0xC622, 0xC6D4, 0xC767, 0xC80F, 0xC8B7, 0xC949,\n    0xC9B1, 0xC9D8, 0x1E4A, 0x223A, 0x2A9F, 0x325A, 0x344A, 0x2318,\n    0x0E46, 0x168C, 0x19D6, 0x136E, 0x10DC, 0x1A13, 0x2543, 0x30D3,\n    0x3EAD, 0x47B4, 0x466F, 0x40DC, 0x39A2, 0x2B0A, 0x071F, 0x1486,\n    0x1699, 0x16C9, 0x171A, 0x1990, 0x209C, 0x2A45, 0x31F3, 0x33B1,\n    0x3358, 0x3597, 0x38BC, 0x3A4D, 0x37D3, 0x2552, 0x136E, 0x1C35,\n    0x2774, 0x27EE, 0x27C6, 0x271B, 0x260D, 0x24BC, 0x2348, 0x21D1,\n    0x2075, 0x1F56, 0x1E92, 0x1E4A, 0x1B09, 0x1AE0, 0x1A33, 0x18B2,\n    0x1611, 0x0EC1, 0x0746, 0x0B2A, 0x0771, 0x02E4, 0x053E, 0x02FB,\n    0x04CE, 0xFC7D, 0xFC83, 0xFDBC, 0xFF5B, 0x0091, 0x0033, 0x002E,\n    0x0039, 0x0039, 0xFFEE, 0xFF76, 0xFF45, 0xFFCB, 0x0164, 0x03BE,\n    0x0645, 0x0865, 0x098E, 0x0912, 0x0755, 0x0559, 0x0421, 0x04DF,\n    0x0696, 0x083D, 0x09F3, 0x0BA6, 0x0D8C, 0x0F91, 0x11A2, 0x13AC,\n    0x159B, 0x175B, 0x18DA, 0x1A03, 0x1AC4, 0x1B09, 0x1144, 0x11B1,\n    0x1282, 0x1306, 0x128B, 0x0E71, 0x0A05, 0x0D03, 0x097A, 0x04A7,\n    0x0299, 0x01BF, 0x08C2, 0x0DC0, 0x0B2E, 0x077D, 0x0385, 0x001D,\n    0xFF86, 0x0118, 0x0301, 0x03C1, 0x0296, 0x006A, 0xFE4C, 0xFD44,\n    0xFDA2, 0xFEBF, 0x0032, 0x0195, 0x0281, 0x02B5, 0x0279, 0x0230,\n    0x023C, 0x0320, 0x0491, 0x0664, 0x07FC, 0x0902, 0x0A1A, 0x0B3B,\n    0x0C5B, 0x0D73, 0x0E78, 0x0F62, 0x1027, 0x10C0, 0x1122, 0x1144,\n    0xAC44, 0xAABD, 0xA739, 0xA353, 0xA0A3, 0xA0C9, 0xA2FD, 0xA84D,\n    0xB444, 0xBC65, 0xC323, 0xC51A, 0xC905, 0xC8F6, 0xBEFE, 0xB357,\n    0xA7E6, 0x9E91, 0xA2BC, 0xA279, 0xA195, 0xA401, 0xAC08, 0xB70F,\n    0xC1AA, 0xC86B, 0xCB26, 0xCC0E, 0xCB46, 0xC8F1, 0xC533, 0xBE3E,\n    0xB403, 0xA948, 0xA0D5, 0x9E75, 0x9EE4, 0x9DE3, 0x9DC7, 0x9EF7,\n    0xA06B, 0xA20E, 0xA3CC, 0xA591, 0xA748, 0xA8DD, 0xAA3C, 0xAB4F,\n    0xAC03, 0xAC44, 0x0000, 0x01A4, 0x0349, 0x01D4, 0x0000, 0xFFD3,\n    0x000C, 0xFF98, 0xFD86, 0xFAC6, 0xF913, 0xFA86, 0xFCA3, 0xFCF0,\n    0xFCC7, 0xFCBF, 0xFD92, 0xFD1C, 0xFDC2, 0xFDE6, 0xFDF1, 0xFDFA,\n    0xFE15, 0xFE39, 0xFE4A, 0xFE2E, 0xFDD7, 0xFD58, 0xFCCA, 0xFC49,\n    0xFBED, 0xFBC4, 0xFBC1, 0xFBD3, 0xFBED, 0xFC07, 0xFC2B, 0xFC60,\n    0xFCAC, 0xFD1A, 0xFDA1, 0xFE30, 0xFEB3, 0xFF16, 0xFF5E, 0xFF98,\n    0xFFC6, 0xFFE6, 0xFFFA, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x000A, 0x0015, 0x0000, 0xFF8E,\n    0xFF0D, 0xFEE3, 0xFECC, 0xFE83, 0xFD25, 0xFD8B, 0xFE9B, 0xFEC5,\n    0xFEC4, 0xFEC0, 0xFEC7, 0xFECC, 0xFED1, 0xFED6, 0xFEDC, 0xFEE3,\n    0xFEE9, 0xFEEF, 0xFEF4, 0xFEF4, 0xFEF2, 0xFEF1, 0xFEF4, 0xFEFB,\n    0xFF06, 0xFF14, 0xFF25, 0xFF3B, 0xFF55, 0xFF70, 0xFF8A, 0xFFA0,\n    0xFFB5, 0xFFCB, 0xFFDF, 0xFFF0, 0xFFFC, 0x0000, 0xBF40, 0xBF2E,\n    0xBF1B, 0xBF12, 0xBF40, 0xBF47, 0xBF78, 0xC14A, 0xC666, 0xCD24,\n    0xD1FE, 0xD1C3, 0xCEF9, 0xCD36, 0xCB10, 0xC614, 0xB21A, 0xB743,\n    0xC3AE, 0xC4D2, 0xC3D9, 0xC2E3, 0xC29F, 0xC25A, 0xC21D, 0xC1EE,\n    0xC1CF, 0xC1BB, 0xC1AD, 0xC1A3, 0xC19B, 0xC198, 0xC19D, 0xC1A1,\n    0xC19B, 0xC1C1, 0xC205, 0xC1F8, 0xC12C, 0xBF2C, 0xBC4B, 0xB946,\n    0xB6DA, 0xB5C3, 0xB658, 0xB811, 0xBA60, 0xBCB7, 0xBE86, 0xBF40,\n    0x2537, 0x247F, 0x231E, 0x21C1, 0x1FEB, 0x1B14, 0x15F1, 0x17C5,\n    0x2E87, 0x468F, 0x3698, 0x1F6C, 0x0E42, 0x0BAA, 0x0F08, 0x14D4,\n    0x2599, 0x1F57, 0x1B4C, 0x2F03, 0x3FF7, 0x3EA0, 0x3982, 0x3222,\n    0x2A08, 0x22BB, 0x19C2, 0x1333, 0x1380, 0x168F, 0x1AE3, 0x1FB1,\n    0x2531, 0x2B72, 0x3285, 0x3DA9, 0x47E4, 0x4A1F, 0x493D, 0x48F2,\n    0x481C, 0x4520, 0x3B8E, 0x3249, 0x2E8C, 0x2B5A, 0x28C2, 0x26D4,\n    0x25A1, 0x2537, 0xD64A, 0xD521, 0xD445, 0xD4D3, 0xD8BB, 0xE2E5,\n    0xEF50, 0xF8C9, 0xFD06, 0xFE52, 0xFE57, 0xFC09, 0xF87C, 0xF5BE,\n    0xF32B, 0xF195, 0xF535, 0xF17E, 0xF3F0, 0xFC24, 0x053B, 0x0B61,\n    0x0D6B, 0x0D74, 0x0C84, 0x0BA4, 0x0AF8, 0x0A09, 0x08F6, 0x07DE,\n    0x06E0, 0x05E9, 0x04EC, 0x0413, 0x0385, 0x03FB, 0x0526, 0x05A2,\n    0x040F, 0xFFD6, 0xF9F2, 0xF359, 0xED04, 0xE7EB, 0xE3B9, 0xDFA6,\n    0xDBFB, 0xD903, 0xD705, 0xD64A, 0xEC41, 0xEC55, 0xECD5, 0xEDDB,\n    0xEF98, 0xF266, 0xF598, 0xF822, 0xF97C, 0xFA2F, 0xFAC2, 0xFB6B,\n    0xFB9C, 0xFB0A, 0xFA2C, 0xF992, 0xFA7B, 0xFB79, 0xFCF9, 0xFC86,\n    0xFBC4, 0xFBFE, 0xFDFD, 0x00EC, 0x03A3, 0x04FA, 0x0498, 0x033E,\n    0x016D, 0xFFA6, 0xFE67, 0xFDEE, 0xFDE5, 0xFDEF, 0xFDAD, 0xFD08,\n    0xFC31, 0xFB3B, 0xFA39, 0xF934, 0xF826, 0xF70B, 0xF5E1, 0xF4A6,\n    0xF325, 0xF158, 0xEF7F, 0xEDDD, 0xECB3, 0xEC41, 0xB59E, 0xB409,\n    0xB1BF, 0xAFB6, 0xAFF3, 0xB667, 0xBEA6, 0xC169, 0xB92B, 0xAB71,\n    0xA189, 0xA35F, 0xA8EF, 0xAAEE, 0xAC6D, 0xAE5D, 0xB2D3, 0xBEB4,\n    0xC601, 0xC0E4, 0xB979, 0xB266, 0xAB9B, 0xA46D, 0x9E99, 0x9BDB,\n    0x9C7A, 0x9F23, 0xA32F, 0xA7F7, 0xACD2, 0xB301, 0xBABA, 0xC1C7,\n    0xC5F3, 0xC62A, 0xC3C3, 0xC02B, 0xBCD0, 0xB985, 0xB59E, 0xB1CA,\n    0xAEBA, 0xAD1E, 0xAD4B, 0xAEBE, 0xB0E1, 0xB320, 0xB4E6, 0xB59E,\n    0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F,\n    0x0000, 0xFA6D, 0xED9C, 0xDF6E, 0xD5C3, 0xD3FC, 0xD6C0, 0xD9D9,\n    0xDBED, 0xDE56, 0xE0ED, 0xE449, 0xE700, 0xE7C2, 0xE7C2, 0xE795,\n    0xE769, 0xE6A7, 0xE364, 0xE29E, 0xECEC, 0xF595, 0xF476, 0xF110,\n    0xECA9, 0xE887, 0xE5EE, 0xE623, 0xE956, 0xEE6F, 0xF4CF, 0xFBD8,\n    0x02E9, 0x0964, 0x0EAA, 0x121C, 0x125D, 0x0F89, 0x0B33, 0x06EE,\n    0x044B, 0x0320, 0x022F, 0x0174, 0x00E8, 0x0083, 0x0040, 0x0018,\n    0x0004, 0x0000, 0x0000, 0xFF14, 0xFD06, 0xFAEE, 0xF9E1, 0xFAAD,\n    0xFCAE, 0xFED6, 0x0121, 0x0394, 0x051D, 0x0441, 0x0279, 0x0152,\n    0x0042, 0xFF92, 0xFF8C, 0x0064, 0x02A7, 0x04D7, 0x054B, 0x0513,\n    0x04E2, 0x04A6, 0x0462, 0x0419, 0x03CB, 0x037C, 0x032A, 0x02D2,\n    0x0278, 0x021C, 0x01C0, 0x0165, 0x010D, 0x00B9, 0x0064, 0x000C,\n    0xFFBD, 0xFF81, 0xFF61, 0xFF5C, 0xFF65, 0xFF79, 0xFF93, 0xFFB1,\n    0xFFCE, 0xFFE8, 0xFFFA, 0x0000, 0xFC62, 0xFAEF, 0xF7C7, 0xF4B4,\n    0xF37F, 0xF552, 0xF967, 0xFE9F, 0x05BA, 0x0DFA, 0x13F7, 0x145E,\n    0x1147, 0x0CDB, 0x0798, 0x03C4, 0x0401, 0x058E, 0x0567, 0x04E2,\n    0x0454, 0x03B6, 0x031A, 0x0276, 0x01D3, 0x0136, 0x00A7, 0x002C,\n    0xFFC4, 0xFF66, 0xFF11, 0xFEC2, 0xFE79, 0xFE33, 0xFDEE, 0xFDA9,\n    0xFD65, 0xFD25, 0xFCED, 0xFCC0, 0xFCA1, 0xFC8C, 0xFC7D, 0xFC72,\n    0xFC6A, 0xFC65, 0xFC63, 0xFC62, 0xFC62, 0xFC62, 0x0000, 0x0108,\n    0x038B, 0x06A1, 0x0968, 0x0B75, 0x0D4F, 0x0F82, 0x1296, 0x187B,\n    0x1FA0, 0x2349, 0x2336, 0x225E, 0x20D9, 0x1EC2, 0x1C31, 0x1940,\n    0x1608, 0x0F8F, 0x06DC, 0x0209, 0x0248, 0x043C, 0x0729, 0x0A4F,\n    0x0CF2, 0x0E52, 0x0D91, 0x0ABF, 0x068A, 0x00B0, 0xF96A, 0xF219,\n    0xEC23, 0xE8EA, 0xE966, 0xECA9, 0xF142, 0xF5BD, 0xF8A7, 0xFA35,\n    0xFB93, 0xFCC2, 0xFDC1, 0xFE91, 0xFF32, 0xFFA5, 0xFFEA, 0x0000,\n    0x0000, 0x0089, 0x01A7, 0x0299, 0x02A1, 0x00D1, 0xFDCE, 0xFB31,\n    0xFA94, 0xFE99, 0x053A, 0x0916, 0x0945, 0x089C, 0x075B, 0x05C3,\n    0x0413, 0x028D, 0x0170, 0x00EC, 0x00D3, 0x00DB, 0x00E8, 0x0107,\n    0x012E, 0x0153, 0x016D, 0x0170, 0x0117, 0x008F, 0x0079, 0x0112,\n    0x01FF, 0x0300, 0x03D5, 0x043E, 0x041A, 0x0391, 0x02D8, 0x0224,\n    0x01A9, 0x015D, 0x0115, 0x00D3, 0x0098, 0x0064, 0x003A, 0x001A,\n    0x0006, 0x0000, 0x0884, 0x07D7, 0x061E, 0x03CA, 0x0150, 0xFE71,\n    0xFB0D, 0xF7C8, 0xF545, 0xF3F4, 0xF39C, 0xF3DE, 0xF470, 0xF539,\n    0xF625, 0xF71F, 0xF816, 0xF8F5, 0xF9A8, 0xF9F3, 0xF9DF, 0xF9C5,\n    0xF9A8, 0xF96A, 0xF92A, 0xF909, 0xF928, 0xF9A8, 0xFB5E, 0xFE14,\n    0x005B, 0x01D4, 0x031B, 0x043F, 0x0550, 0x065D, 0x0781, 0x08B1,\n    0x09C6, 0x0A98, 0x0B01, 0x0B0A, 0x0AE0, 0x0A90, 0x0A28, 0x09B4,\n    0x0943, 0x08E2, 0x089D, 0x0884, 0x8001, 0x811E, 0x838A, 0x85E9,\n    0x86DD, 0x85D8, 0x83A4, 0x80EB, 0x7E53, 0x7B55, 0x77D0, 0x751A,\n    0x7486, 0x75E3, 0x77FD, 0x7A9F, 0x7D98, 0x80B7, 0x83C3, 0x868D,\n    0x88E0, 0x8A8A, 0x8B59, 0x8B97, 0x8BB3, 0x8BB1, 0x8B93, 0x8B5A,\n    0x8B0A, 0x8AA5, 0x8A2D, 0x89A5, 0x8910, 0x886E, 0x87C4, 0x8713,\n    0x865E, 0x85A7, 0x84F1, 0x843E, 0x8391, 0x82EB, 0x8250, 0x81C2,\n    0x8143, 0x80D6, 0x807D, 0x803A, 0x8010, 0x8001, 0x0000, 0x00C6,\n    0x0268, 0x03DE, 0x041F, 0x0261, 0xFF5E, 0xFC50, 0xFA77, 0xFA54,\n    0xFB30, 0xFC6E, 0xFD70, 0xFE2E, 0xFEFF, 0xFFDB, 0x00B7, 0x018E,\n    0x0255, 0x0303, 0x038F, 0x03F1, 0x041F, 0x042C, 0x042D, 0x0425,\n    0x0414, 0x03FB, 0x03DB, 0x03B3, 0x0387, 0x0355, 0x031E, 0x02E5,\n    0x02A9, 0x026B, 0x022C, 0x01EC, 0x01AE, 0x0170, 0x0135, 0x00FC,\n    0x00C7, 0x0097, 0x006C, 0x0047, 0x0029, 0x0012, 0x0004, 0x0000,\n    0x3FFF, 0x3F24, 0x3D2B, 0x3AFA, 0x3976, 0x38E6, 0x38CD, 0x38E9,\n    0x38F9, 0x38F8, 0x3904, 0x3914, 0x3922, 0x3927, 0x3927, 0x3923,\n    0x391F, 0x391C, 0x391D, 0x3924, 0x3933, 0x394E, 0x3976, 0x39A9,\n    0x39E2, 0x3A20, 0x3A63, 0x3AAB, 0x3AF6, 0x3B44, 0x3B94, 0x3BE6,\n    0x3C39, 0x3C8C, 0x3CE0, 0x3D32, 0x3D83, 0x3DD2, 0x3E1E, 0x3E67,\n    0x3EAC, 0x3EED, 0x3F28, 0x3F5D, 0x3F8C, 0x3FB4, 0x3FD4, 0x3FEB,\n    0x3FFA, 0x3FFF,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_61.inc.c",
    "content": "static const struct Animation anim_61[] = {\n    9,\n    189,\n    0,\n    0,\n    0x93,\n    ANIMINDEX_NUMPARTS(anim_61_indices),\n    anim_61_values,\n    anim_61_indices,\n    0,\n};\n\n\nstatic const u16 anim_61_indices[] = {\n    0x0093, 0x0001, 0x0093, 0x0094, 0x0093, 0x0127, 0x0093, 0x01BA, 0x0093, 0x024D, 0x0093, 0x02E0,\n    0x0093, 0x1701, 0x0093, 0x1794, 0x0093, 0x1827,\n    0x0093, 0x1548, 0x0093, 0x15DB, 0x0093, 0x166E,\n    0x0093, 0x138F, 0x0093, 0x1422, 0x0093, 0x14B5,\n    0x0001, 0x138B, 0x0001, 0x138C, 0x0001, 0x138D,\n    0x0093, 0x05BF, 0x0093, 0x0652, 0x0093, 0x06E5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0093, 0x052C,\n    0x0093, 0x0373, 0x0093, 0x0406, 0x0093, 0x0499,\n    0x0001, 0x1387, 0x0001, 0x1388, 0x0001, 0x1389,\n    0x0093, 0x09C4, 0x0093, 0x0A57, 0x0093, 0x0AEA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0093, 0x0931,\n    0x0093, 0x0778, 0x0093, 0x080B, 0x0093, 0x089E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x138A,\n    0x0093, 0x11CE, 0x0093, 0x1261, 0x0093, 0x12F4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0093, 0x113B,\n    0x0093, 0x0F82, 0x0093, 0x1015, 0x0093, 0x10A8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x138E,\n    0x0093, 0x0DC9, 0x0093, 0x0E5C, 0x0093, 0x0EEF,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0093, 0x0D36,\n    0x0093, 0x0B7D, 0x0093, 0x0C10, 0x0093, 0x0CA3,\n};\n\nstatic const s16 anim_61_values[] = {\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xFFFD, 0xFFFA, 0x0000, 0x0013, 0x002F,\n    0x004B, 0x0062, 0x006C, 0x006D, 0x0061, 0x0052, 0x0041, 0x0033,\n    0x002A, 0x0027, 0x0027, 0x002A, 0x002C, 0x002D, 0x002B, 0x001F,\n    0x000D, 0x0001, 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFF, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFE, 0xFFFC, 0xFFF7, 0xFFF0,\n    0xFF97, 0xFF2E, 0xFF0C, 0xFEF4, 0xFEE4, 0xFEDB, 0xFED7, 0xFED5,\n    0xFED4, 0xFED4, 0xFED4, 0xFED4, 0x00AA, 0x00AA, 0x00AA, 0x00AA,\n    0x00A9, 0x00A9, 0x00A9, 0x00A9, 0x00A8, 0x00A8, 0x00A7, 0x00A7,\n    0x00A7, 0x00A6, 0x00A6, 0x00A5, 0x00A5, 0x00A4, 0x00A3, 0x00A3,\n    0x00A2, 0x00A2, 0x00A1, 0x00A1, 0x00A0, 0x009F, 0x009F, 0x009E,\n    0x009D, 0x009D, 0x009C, 0x009B, 0x009B, 0x009A, 0x0099, 0x0098,\n    0x0097, 0x0097, 0x0096, 0x0095, 0x0093, 0x0091, 0x0090, 0x008F,\n    0x0090, 0x0092, 0x0094, 0x0097, 0x009A, 0x009C, 0x009F, 0x00A2,\n    0x00A4, 0x00A5, 0x00A7, 0x00A8, 0x00A9, 0x00A9, 0x00AA, 0x00AA,\n    0x00AA, 0x00AA, 0x00A9, 0x00A8, 0x00A7, 0x00A6, 0x00A2, 0x009C,\n    0x0095, 0x008E, 0x0088, 0x0085, 0x0095, 0x00A6, 0x00DC, 0x0124,\n    0x0167, 0x01A0, 0x01C4, 0x01D7, 0x01DF, 0x01E2, 0x01DE, 0x01CC,\n    0x01A3, 0x016D, 0x012F, 0x00EB, 0x00A3, 0x007D, 0x007E, 0x008B,\n    0x00AD, 0x00E0, 0x011F, 0x0165, 0x01AA, 0x01EB, 0x0220, 0x0244,\n    0x0252, 0x0252, 0x0252, 0x024F, 0x0248, 0x0229, 0x0223, 0x0217,\n    0x0207, 0x01F7, 0x01E7, 0x01D6, 0x01D3, 0x01D6, 0x01DA, 0x01DD,\n    0x01DD, 0x01D6, 0x01C2, 0x01A0, 0x0176, 0x013E, 0x00F9, 0x00BA,\n    0x0091, 0x0088, 0x0080, 0x0078, 0x0081, 0x0085, 0x0088, 0x008B,\n    0x008E, 0x0094, 0x009B, 0x00B9, 0x00B9, 0x00AF, 0x00A9, 0x00A3,\n    0x00A0, 0x00A3, 0x00A9, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0xFE48,\n    0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE48, 0xFE47,\n    0xFE47, 0xFE47, 0xFE47, 0xFE46, 0xFE46, 0xFE46, 0xFE45, 0xFE45,\n    0xFE45, 0xFE45, 0xFE44, 0xFE44, 0xFE44, 0xFE44, 0xFE43, 0xFE43,\n    0xFE43, 0xFE43, 0xFE42, 0xFE42, 0xFE42, 0xFE41, 0xFE41, 0xFE41,\n    0xFE41, 0xFE41, 0xFE40, 0xFE40, 0xFE40, 0xFE40, 0xFE40, 0xFE40,\n    0xFE40, 0xFE40, 0xFE40, 0xFE41, 0xFE41, 0xFE41, 0xFE42, 0xFE42,\n    0xFE42, 0xFE43, 0xFE43, 0xFE43, 0xFE43, 0xFE43, 0xFE43, 0xFE44,\n    0xFE44, 0xFE44, 0xFE44, 0xFE44, 0xFE44, 0xFE43, 0xFE43, 0xFE43,\n    0xFE42, 0xFE41, 0xFE3F, 0xFE3D, 0xFE3B, 0xFE3A, 0xFE3A, 0xFE3F,\n    0xFE49, 0xFE57, 0xFE67, 0xFE79, 0xFE89, 0xFE97, 0xFEA0, 0xFEA4,\n    0xFEA4, 0xFEA3, 0xFEA0, 0xFE9D, 0xFE99, 0xFE96, 0xFE92, 0xFE8F,\n    0xFE8D, 0xFE8D, 0xFE8E, 0xFE92, 0xFE97, 0xFE9C, 0xFEA1, 0xFEA4,\n    0xFE9E, 0xFEA5, 0xFEAF, 0xFEB8, 0xFEBE, 0xFEC4, 0xFEC9, 0xFECD,\n    0xFED0, 0xFED4, 0xFED6, 0xFED9, 0xFEDB, 0xFEDC, 0xFEDB, 0xFED9,\n    0xFED5, 0xFED0, 0xFEC9, 0xFEC3, 0xFEBE, 0xFEBC, 0xFEBA, 0xFEB7,\n    0xFEB2, 0xFEAC, 0xFEA6, 0xFEA0, 0xFE99, 0xFE93, 0xFE8D, 0xFE86,\n    0xFE7F, 0xFE79, 0xFE73, 0xFE6D, 0xFE66, 0xFE60, 0xFE5D, 0xFE5A,\n    0xFE57, 0xFE54, 0xFE51, 0xFE4E, 0xFE4B, 0xFE48, 0xFE48, 0xFE48,\n    0xFE48, 0xFE48, 0x0000, 0xFFFD, 0xFFF3, 0xFFE2, 0xFFCB, 0xFFAF,\n    0xFF8C, 0xFF65, 0xFF39, 0xFF09, 0xFED4, 0xFE9C, 0xFE60, 0xFE21,\n    0xFDDF, 0xFD9A, 0xFD53, 0xFD0B, 0xFCC1, 0xFC76, 0xFC29, 0xFBDD,\n    0xFB90, 0xFB43, 0xFAF7, 0xFAAB, 0xFA61, 0xFA18, 0xF9D0, 0xF98B,\n    0xF948, 0xF908, 0xF8CB, 0xF891, 0xF85B, 0xF829, 0xF7FC, 0xF7D3,\n    0xF7AF, 0xF791, 0xF778, 0xF765, 0xF759, 0xF753, 0xF754, 0xF75D,\n    0xF76D, 0xF785, 0xF7A5, 0xF7CE, 0xF800, 0xF83C, 0xF881, 0xF8D0,\n    0xF929, 0xF98C, 0xF9FB, 0xFA75, 0xFAFA, 0xFB8C, 0xFC29, 0xFCD4,\n    0xFD8B, 0xFE4F, 0xFF21, 0x0000, 0x047A, 0x0E8C, 0x1BE0, 0x2A1E,\n    0x36F0, 0x3FFF, 0x4399, 0x4332, 0x4132, 0x3FFF, 0x40AE, 0x420B,\n    0x4311, 0x42BA, 0x3FFF, 0x3AC0, 0x33E1, 0x2BE7, 0x2353, 0x1AAA,\n    0x126E, 0x0B22, 0x054A, 0x0168, 0x0000, 0x0378, 0x0C87, 0x1924,\n    0x2747, 0x34E8, 0x3FFF, 0x3FFF, 0x4033, 0x40AE, 0x413A, 0x41A3,\n    0x41B4, 0x413A, 0x3FFF, 0x3DF1, 0x3B3C, 0x380D, 0x348E, 0x30EC,\n    0x2D52, 0x29EC, 0x26E5, 0x240F, 0x2120, 0x1E21, 0x1B1A, 0x1811,\n    0x150F, 0x121B, 0x0F3D, 0x0C7C, 0x09DF, 0x076F, 0x0532, 0x0331,\n    0x0173, 0x0000, 0xFEDF, 0xFE0E, 0xFD83, 0xFD36, 0xFD1F, 0xFD34,\n    0xFD6C, 0xFDBE, 0xFE23, 0xFE90, 0xFEFD, 0xFF61, 0xFFB4, 0xFFEC,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x3FFE, 0x3FFE, 0x3FFD, 0x3FFD, 0x3FFC, 0x3FFB, 0x3FFA, 0x3FF9,\n    0x3FF8, 0x3FF7, 0x3FF6, 0x3FF5, 0x3FF3, 0x3FF2, 0x3FF1, 0x3FEF,\n    0x3FEE, 0x3FEC, 0x3FEB, 0x3FE9, 0x3FE8, 0x3FE6, 0x3FE5, 0x3FE3,\n    0x3FE2, 0x3FE1, 0x3FDF, 0x3FDE, 0x3FDD, 0x3FDC, 0x3FDB, 0x3FDA,\n    0x3FD9, 0x3FD8, 0x3FD7, 0x3FD6, 0x3FD6, 0x3FD5, 0x3FD5, 0x3FD5,\n    0x3FD5, 0x3FD5, 0x3FD5, 0x3FD5, 0x3FD6, 0x3FD6, 0x3FD7, 0x3FD8,\n    0x3FD9, 0x3FDA, 0x3FDC, 0x3FDE, 0x3FDF, 0x3FE2, 0x3FE4, 0x3FE6,\n    0x3FE9, 0x3FEC, 0x3FEF, 0x3FF3, 0x3FF7, 0x3FFB, 0x3FFF, 0x4015,\n    0x4046, 0x4087, 0x40CD, 0x410C, 0x4138, 0x4149, 0x4148, 0x413E,\n    0x4138, 0x413B, 0x4142, 0x4147, 0x4145, 0x4138, 0x411E, 0x40FD,\n    0x40D6, 0x40AC, 0x4081, 0x4059, 0x4035, 0x4019, 0x4006, 0x3FFF,\n    0x4010, 0x403C, 0x407A, 0x40BF, 0x4102, 0x4138, 0x4138, 0x4139,\n    0x413B, 0x413E, 0x4140, 0x4140, 0x413E, 0x4138, 0x412E, 0x4121,\n    0x4111, 0x4100, 0x40EE, 0x40DD, 0x40CC, 0x40BD, 0x40AF, 0x40A1,\n    0x4092, 0x4084, 0x4075, 0x4066, 0x4058, 0x404A, 0x403C, 0x402F,\n    0x4023, 0x4018, 0x400F, 0x4006, 0x3FFF, 0x3FF9, 0x3FF5, 0x3FF3,\n    0x3FF1, 0x3FF1, 0x3FF1, 0x3FF2, 0x3FF4, 0x3FF6, 0x3FF8, 0x3FFA,\n    0x3FFC, 0x3FFE, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF, 0x3FFF,\n    0x0000, 0xFFFD, 0xFFF3, 0xFFE2, 0xFFCB, 0xFFAF, 0xFF8C, 0xFF65,\n    0xFF39, 0xFF09, 0xFED4, 0xFE9C, 0xFE60, 0xFE21, 0xFDDF, 0xFD9A,\n    0xFD53, 0xFD0B, 0xFCC1, 0xFC76, 0xFC29, 0xFBDD, 0xFB90, 0xFB43,\n    0xFAF7, 0xFAAB, 0xFA61, 0xFA18, 0xF9D0, 0xF98B, 0xF948, 0xF908,\n    0xF8CB, 0xF891, 0xF85B, 0xF829, 0xF7FC, 0xF7D3, 0xF7AF, 0xF791,\n    0xF778, 0xF765, 0xF759, 0xF753, 0xF754, 0xF75D, 0xF76D, 0xF785,\n    0xF7A5, 0xF7CE, 0xF800, 0xF83C, 0xF881, 0xF8D0, 0xF929, 0xF98C,\n    0xF9FB, 0xFA75, 0xFAFA, 0xFB8C, 0xFC29, 0xFCD4, 0xFD8B, 0xFE4F,\n    0xFF21, 0x0000, 0x047A, 0x0E8C, 0x1BE0, 0x2A1E, 0x36F0, 0x3FFF,\n    0x4399, 0x4332, 0x4132, 0x3FFF, 0x40AE, 0x420B, 0x4311, 0x42BA,\n    0x3FFF, 0x3AC0, 0x33E1, 0x2BE7, 0x2353, 0x1AAA, 0x126E, 0x0B22,\n    0x054A, 0x0168, 0x0000, 0x0378, 0x0C87, 0x1924, 0x2747, 0x34E8,\n    0x3FFF, 0x3FFF, 0x4033, 0x40AE, 0x413A, 0x41A3, 0x41B4, 0x413A,\n    0x3FFF, 0x3DF1, 0x3B3C, 0x380D, 0x348E, 0x30EC, 0x2D52, 0x29EC,\n    0x26E5, 0x240F, 0x2120, 0x1E21, 0x1B1A, 0x1811, 0x150F, 0x121B,\n    0x0F3D, 0x0C7C, 0x09DF, 0x076F, 0x0532, 0x0331, 0x0173, 0x0000,\n    0xFEDF, 0xFE0E, 0xFD83, 0xFD36, 0xFD1F, 0xFD34, 0xFD6C, 0xFDBE,\n    0xFE23, 0xFE90, 0xFEFD, 0xFF61, 0xFFB4, 0xFFEC, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x000B, 0x002D, 0x005F, 0x009F,\n    0x00E8, 0x0137, 0x0187, 0x01D4, 0x021A, 0x0256, 0x0284, 0x029E,\n    0x02A2, 0x028C, 0x0256, 0x01FE, 0x0180, 0x00D7, 0x0000, 0xFE84,\n    0xFC17, 0xF8FB, 0xF56E, 0xF1B0, 0xEE00, 0xEA9D, 0xE7C6, 0xE5BC,\n    0xE488, 0xE3F5, 0xE3DD, 0xE419, 0xE486, 0xE4FD, 0xE55A, 0xE577,\n    0xE555, 0xE522, 0xE4FC, 0xE4FF, 0xE532, 0xE57F, 0xE5DB, 0xE638,\n    0xE68C, 0xE6CA, 0xE6E6, 0xE6E6, 0xE6D9, 0xE6C3, 0xE6A4, 0xE67F,\n    0xE656, 0xE62B, 0xE600, 0xE5D6, 0xE5B0, 0xE590, 0xE577, 0xE569,\n    0xE565, 0xE568, 0xE56E, 0xE574, 0xE577, 0xE577, 0xE577, 0xE577,\n    0xE577, 0xE577, 0xE577, 0xE56A, 0xE554, 0xE54F, 0xE577, 0xE59D,\n    0xE5AF, 0xE5EC, 0xE697, 0xE7EF, 0xEA0A, 0xECB4, 0xEFBC, 0xF2F4,\n    0xF62E, 0xF93A, 0xFBEB, 0xFE11, 0xFF7D, 0x0000, 0xFEB2, 0xFB4A,\n    0xF68C, 0xF13B, 0xEC1B, 0xE7EF, 0xE7EF, 0xE892, 0xE939, 0xE9E7,\n    0xEA9C, 0xEB5A, 0xEC25, 0xECFD, 0xEDF3, 0xEF0E, 0xF03B, 0xF16C,\n    0xF28F, 0xF395, 0xF46C, 0xF505, 0xF54A, 0xF542, 0xF504, 0xF4A8,\n    0xF445, 0xF3F3, 0xF3C9, 0xF392, 0xF352, 0xF377, 0xF46F, 0xF6D4,\n    0xFA43, 0xFDAC, 0x0000, 0x010E, 0x0180, 0x018D, 0x0172, 0x0166,\n    0x0160, 0x0138, 0x00FF, 0x00C6, 0x009F, 0x0087, 0x0071, 0x005E,\n    0x004D, 0x003E, 0x002E, 0x001F, 0x0010, 0x0000, 0xF97C, 0xF978,\n    0xF970, 0xF962, 0xF951, 0xF93D, 0xF928, 0xF913, 0xF8FE, 0xF8EB,\n    0xF8DB, 0xF8CF, 0xF8C8, 0xF8C7, 0xF8CD, 0xF8DB, 0xF8F3, 0xF915,\n    0xF942, 0xF97C, 0xF9DB, 0xFA6F, 0xFB2D, 0xFC09, 0xFCF8, 0xFDED,\n    0xFEDE, 0xFFBF, 0x0083, 0x0149, 0x0228, 0x030D, 0x03E6, 0x04A1,\n    0x052B, 0x0572, 0x0563, 0x03F1, 0x0121, 0xFE7D, 0xFD8F, 0xFE89,\n    0x005B, 0x02AE, 0x052D, 0x077E, 0x094C, 0x0A40, 0x0A85, 0x0A89,\n    0x0A56, 0x09F6, 0x0973, 0x08D8, 0x082D, 0x077F, 0x06D6, 0x063D,\n    0x05BE, 0x0563, 0x0533, 0x0526, 0x0530, 0x0545, 0x055A, 0x0563,\n    0x0563, 0x0563, 0x0563, 0x0563, 0x0563, 0x0563, 0x0569, 0x0573,\n    0x0575, 0x0563, 0x0552, 0x054A, 0x052F, 0x04E2, 0x0448, 0x0356,\n    0x0224, 0x00C8, 0xFF57, 0xFDE4, 0xFC86, 0xFB51, 0xFA5A, 0xF9B7,\n    0xF97C, 0xFA12, 0xFB99, 0xFDBA, 0x001C, 0x0269, 0x0448, 0x0448,\n    0x02BC, 0x00F9, 0xFF1F, 0xFD49, 0xFB97, 0xFA29, 0xF91C, 0xF871,\n    0xF80C, 0xF7DC, 0xF7D2, 0xF7E0, 0xF7F6, 0xF805, 0xF7FD, 0xF7E8,\n    0xF7D7, 0xF7CB, 0xF7C2, 0xF7BB, 0xF7B7, 0xF7B5, 0xF7B1, 0xF7B0,\n    0xF7BE, 0xF7E6, 0xF83C, 0xF8B4, 0xF92B, 0xF97C, 0xF9A1, 0xF9B0,\n    0xF9B2, 0xF9AE, 0xF9AD, 0xF9AC, 0xF9A6, 0xF99F, 0xF997, 0xF991,\n    0xF98E, 0xF98B, 0xF989, 0xF986, 0xF984, 0xF982, 0xF980, 0xF97E,\n    0xF97C, 0xED8C, 0xED8A, 0xED85, 0xED7E, 0xED74, 0xED69, 0xED5E,\n    0xED52, 0xED47, 0xED3D, 0xED34, 0xED2D, 0xED29, 0xED29, 0xED2C,\n    0xED34, 0xED41, 0xED53, 0xED6C, 0xED8C, 0xEDC9, 0xEE32, 0xEEB8,\n    0xEF50, 0xEFEA, 0xF07A, 0xF0F2, 0xF145, 0xF165, 0xF160, 0xF149,\n    0xF118, 0xF0C7, 0xF04E, 0xEFA7, 0xEECB, 0xEDB2, 0xEB31, 0xE753,\n    0xE3E7, 0xE2BD, 0xE409, 0xE67D, 0xE9A2, 0xED03, 0xF029, 0xF29F,\n    0xF3ED, 0xF450, 0xF45D, 0xF41F, 0xF3A5, 0xF2FC, 0xF232, 0xF154,\n    0xF071, 0xEF94, 0xEECD, 0xEE28, 0xEDB2, 0xED75, 0xED64, 0xED70,\n    0xED8B, 0xEDA6, 0xEDB2, 0xEDB2, 0xEDB2, 0xEDB2, 0xEDB2, 0xEDB2,\n    0xEDB2, 0xEDB3, 0xEDB3, 0xEDB3, 0xEDB2, 0xEDB2, 0xEDB2, 0xEDB2,\n    0xEDB1, 0xEDAF, 0xEDAC, 0xEDA8, 0xEDA3, 0xED9F, 0xED9A, 0xED95,\n    0xED92, 0xED8E, 0xED8C, 0xED8C, 0xED8D, 0xED92, 0xED99, 0xEDA1,\n    0xEDA9, 0xEDAF, 0xEDAF, 0xEEBE, 0xEFFB, 0xF14B, 0xF292, 0xF3B7,\n    0xF49F, 0xF52F, 0xF560, 0xF54A, 0xF4FE, 0xF491, 0xF415, 0xF39E,\n    0xF33E, 0xF30A, 0xF301, 0xF313, 0xF335, 0xF360, 0xF38B, 0xF3AE,\n    0xF3C1, 0xF3D9, 0xF3F3, 0xF3D8, 0xF357, 0xF222, 0xF06A, 0xEEB6,\n    0xED8C, 0xED04, 0xECCB, 0xECC4, 0xECD2, 0xECD8, 0xECDB, 0xECEF,\n    0xED0B, 0xED28, 0xED3C, 0xED48, 0xED53, 0xED5C, 0xED65, 0xED6D,\n    0xED74, 0xED7C, 0xED83, 0xED8C, 0xCA4F, 0xCA5B, 0xCA7B, 0xCAAD,\n    0xCAEB, 0xCB33, 0xCB80, 0xCBCE, 0xCC19, 0xCC5E, 0xCC98, 0xCCC5,\n    0xCCDF, 0xCCE2, 0xCCCC, 0xCC98, 0xCC43, 0xCBC7, 0xCB22, 0xCA4F,\n    0xC8EE, 0xC6C0, 0xC3F3, 0xC0B9, 0xBD40, 0xB9B9, 0xB652, 0xB33B,\n    0xB0A4, 0xAE35, 0xAB98, 0xA902, 0xA6A6, 0xA4BA, 0xA371, 0xA300,\n    0xA39B, 0xA4E7, 0xA665, 0xA811, 0xA9E5, 0xABDF, 0xADFA, 0xB032,\n    0xB282, 0xB4E7, 0xB75C, 0xB9DE, 0xBC67, 0xBEF4, 0xC181, 0xC40A,\n    0xC689, 0xC8FC, 0xCB5E, 0xCDAB, 0xCFDF, 0xD1F5, 0xD3E9, 0xD5B8,\n    0xD6EB, 0xD741, 0xD703, 0xD67C, 0xD5F5, 0xD5B8, 0xD5B8, 0xD5B8,\n    0xD5B8, 0xD5B8, 0xD5B8, 0xD5B8, 0xD5E8, 0xD638, 0xD648, 0xD5B8,\n    0xD41D, 0xD1BF, 0xCF48, 0xCD60, 0xCCB3, 0xCD04, 0xCDA1, 0xCE7D,\n    0xCF90, 0xD0CD, 0xD22B, 0xD39F, 0xD51E, 0xD69D, 0xD813, 0xD9AF,\n    0xDB95, 0xDDA4, 0xDFBB, 0xE1BB, 0xE384, 0xE384, 0xE430, 0xE503,\n    0xE5E4, 0xE6BA, 0xE76C, 0xE7E1, 0xE7FF, 0xE79D, 0xE6C3, 0xE5A0,\n    0xE464, 0xE340, 0xE264, 0xE1FF, 0xE243, 0xE3AD, 0xE640, 0xE974,\n    0xECBF, 0xEF98, 0xF177, 0xF1D2, 0xEEAB, 0xE82C, 0xE103, 0xDBE2,\n    0xD9A6, 0xD8D4, 0xD895, 0xD813, 0xD6DA, 0xD553, 0xD3F8, 0xD341,\n    0xD3A8, 0xD60F, 0xDA20, 0xDE83, 0xE1DE, 0xE2D7, 0xE1BB, 0xDFD8,\n    0xDD57, 0xDA60, 0xD71E, 0xD3B8, 0xD059, 0xCD28, 0xCA4F, 0xFB1D,\n    0xFB01, 0xFAB1, 0xFA35, 0xF995, 0xF8D8, 0xF804, 0xF723, 0xF63A,\n    0xF551, 0xF471, 0xF39F, 0xF2E4, 0xF248, 0xF1D0, 0xF185, 0xF16F,\n    0xF194, 0xF1FC, 0xF2AE, 0xF46E, 0xF7AB, 0xFBF5, 0x00DA, 0x05EA,\n    0x0AB4, 0x0EC4, 0x11AB, 0x12F7, 0x1231, 0x0F8F, 0x0BA1, 0x06FB,\n    0x022E, 0xFDCD, 0xFA68, 0xF892, 0xF7C7, 0xF71E, 0xF696, 0xF62C,\n    0xF5DE, 0xF5AA, 0xF58C, 0xF583, 0xF58C, 0xF5A4, 0xF5CA, 0xF5FA,\n    0xF632, 0xF671, 0xF6B2, 0xF6F5, 0xF736, 0xF773, 0xF7A9, 0xF7D7,\n    0xF7FA, 0xF80E, 0xF813, 0xF897, 0xF9BE, 0xFAE8, 0xFB70, 0xFAB5,\n    0xF813, 0xF2B3, 0xEAEC, 0xE1E2, 0xD8B7, 0xD08F, 0xCA8E, 0xC6B3,\n    0xC4D3, 0xC5D0, 0xCA8E, 0xD4C2, 0xE35D, 0xF316, 0x00A3, 0x08BD,\n    0x0B5D, 0x0B3C, 0x092E, 0x0609, 0x02A0, 0xFFCB, 0xFE5B, 0xFF26,\n    0x0301, 0x0AC2, 0x2E2A, 0x674B, 0x8A74, 0x806F, 0x606C, 0x4452,\n    0x4452, 0x483F, 0x4CEF, 0x51EA, 0x56BA, 0x5AE5, 0x5DF5, 0x5F73,\n    0x5CD6, 0x562C, 0x4EE1, 0x4A5E, 0x4A31, 0x4C52, 0x4EC7, 0x4F98,\n    0x4EDF, 0x4DF6, 0x4CC3, 0x4B2D, 0x491A, 0x4671, 0x4318, 0x3DDC,\n    0x367D, 0x2E4F, 0x26A4, 0x1F33, 0x177C, 0x1088, 0x0B5F, 0x08E4,\n    0x0850, 0x082C, 0x0705, 0x0364, 0xFB89, 0xF07C, 0xE502, 0xDBDC,\n    0xD7CE, 0xD82D, 0xDA3D, 0xDDA7, 0xE212, 0xE725, 0xEC88, 0xF1E3,\n    0xF6DD, 0xFB1D, 0xD2DC, 0xD302, 0xD370, 0xD41D, 0xD501, 0xD612,\n    0xD749, 0xD89E, 0xDA08, 0xDB7E, 0xDCF8, 0xDE6F, 0xDFD8, 0xE12D,\n    0xE264, 0xE375, 0xE459, 0xE505, 0xE573, 0xE599, 0xE512, 0xE3A5,\n    0xE189, 0xDEF7, 0xDC26, 0xD94E, 0xD6A8, 0xD46C, 0xD2D2, 0xD1C8,\n    0xD10D, 0xD098, 0xD05F, 0xD057, 0xD075, 0xD0B0, 0xD0FD, 0xD155,\n    0xD1B6, 0xD221, 0xD294, 0xD30F, 0xD390, 0xD417, 0xD4A2, 0xD532,\n    0xD5C5, 0xD65A, 0xD6F0, 0xD787, 0xD81E, 0xD8B3, 0xD946, 0xD9D7,\n    0xDA63, 0xDAEB, 0xDB6D, 0xDBE9, 0xDC5E, 0xDCCB, 0xDD2D, 0xDD7B,\n    0xDDA6, 0xDDA0, 0xDD5C, 0xDCCB, 0xDBC0, 0xDA3E, 0xD87D, 0xD6B6,\n    0xD522, 0xD3F8, 0xD395, 0xD3D4, 0xD424, 0xD3F8, 0xD2EC, 0xD156,\n    0xCFBC, 0xCEA1, 0xCE8B, 0xCF9C, 0xD172, 0xD3CA, 0xD664, 0xD8FD,\n    0xDB52, 0xDD24, 0xDE2F, 0xDE31, 0xDCE9, 0xD218, 0xBF9C, 0xB465,\n    0xB84C, 0xC377, 0xCD41, 0xCD41, 0xCF0C, 0xD129, 0xD367, 0xD595,\n    0xD781, 0xD8FC, 0xD9D4, 0xD914, 0xD6BF, 0xD415, 0xD256, 0xD1D6,\n    0xD1EB, 0xD25A, 0xD2E7, 0xD3B4, 0xD4E3, 0xD636, 0xD771, 0xD858,\n    0xD8B0, 0xD83B, 0xD550, 0xD016, 0xCB08, 0xC8A2, 0xCA56, 0xCE8E,\n    0xD33C, 0xD650, 0xD742, 0xD743, 0xD6DC, 0xD696, 0xD6FB, 0xD872,\n    0xDA9C, 0xDCDA, 0xDE8A, 0xDF0B, 0xDE85, 0xDD99, 0xDC5C, 0xDAE3,\n    0xD942, 0xD78F, 0xD5DF, 0xD447, 0xD2DC, 0xD4B4, 0xD4D3, 0xD52B,\n    0xD5B3, 0xD663, 0xD732, 0xD818, 0xD90D, 0xDA07, 0xDAFF, 0xDBEB,\n    0xDCC4, 0xDD81, 0xDE1A, 0xDE85, 0xDEBB, 0xDEB3, 0xDE65, 0xDDC7,\n    0xDCD2, 0xDA9E, 0xD69F, 0xD15F, 0xCB62, 0xC530, 0xBF4F, 0xBA46,\n    0xB69B, 0xB4D5, 0xB583, 0xB866, 0xBCCF, 0xC20E, 0xC776, 0xCC56,\n    0xD001, 0xD1C7, 0xD249, 0xD29D, 0xD2C7, 0xD2CB, 0xD2AB, 0xD26A,\n    0xD20D, 0xD196, 0xD109, 0xD069, 0xCFB9, 0xCEFD, 0xCE38, 0xCD6D,\n    0xCCA0, 0xCBD4, 0xCB0C, 0xCA4C, 0xC997, 0xC8F0, 0xC85A, 0xC7DA,\n    0xC771, 0xC6D5, 0xC5F6, 0xC536, 0xC4F4, 0xC593, 0xC771, 0xCB28,\n    0xD087, 0xD6C6, 0xDD1B, 0xE2BE, 0xE6E4, 0xE9CB, 0xEB7B, 0xEAE0,\n    0xE6E4, 0xDDFA, 0xD138, 0xC37C, 0xB7A4, 0xB08D, 0xAEC4, 0xB033,\n    0xB3C8, 0xB86F, 0xBD14, 0xC0A5, 0xC20D, 0xC039, 0xBA16, 0xAE90,\n    0x7B54, 0x2829, 0xF318, 0xFC60, 0x23C1, 0x4680, 0x4680, 0x41D9,\n    0x3C51, 0x3671, 0x30C2, 0x2BCC, 0x2819, 0x262F, 0x28F2, 0x304E,\n    0x3861, 0x3D48, 0x3D59, 0x3ADC, 0x37D9, 0x3658, 0x360C, 0x358B,\n    0x3531, 0x355A, 0x3661, 0x38A1, 0x3C77, 0x438D, 0x4E74, 0x5BE3,\n    0x6A8E, 0x7C62, 0x9151, 0xA50E, 0xB356, 0xBA6E, 0xBD32, 0xBE41,\n    0xC03B, 0xC5BF, 0xD110, 0xE051, 0xEFF0, 0xFC5B, 0x01FF, 0x01C4,\n    0xFF40, 0xFAE8, 0xF536, 0xEEA0, 0xE79D, 0xE0A5, 0xDA2F, 0xD4B4,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFF95, 0xFE8F, 0xFD4C,\n    0xFC28, 0xFB7F, 0xFBAD, 0xFD0F, 0x0000, 0x0431, 0x0904, 0x0E62,\n    0x1433, 0x1A62, 0x20D5, 0x2776, 0x2E2F, 0x34E7, 0x3B87, 0x41F9,\n    0x4824, 0x4DF3, 0x534D, 0x581C, 0x5C48, 0x5EF9, 0x5FBA, 0x5F0C,\n    0x5D6E, 0x5B60, 0x5962, 0x57F3, 0x56C7, 0x5553, 0x53B9, 0x521B,\n    0x509A, 0x4F58, 0x4E77, 0x4EBB, 0x501C, 0x5186, 0x51E8, 0x502E,\n    0x49DE, 0x3FFE, 0x36B7, 0x3231, 0x4C67, 0x3F63, 0x2C1F, 0x1891,\n    0x0AB3, 0x0790, 0x0AFE, 0x0D2A, 0x0BA6, 0x0977, 0x06F0, 0x0465,\n    0x022C, 0x0099, 0x0000, 0x0029, 0x009E, 0x0154, 0x023F, 0x0354,\n    0x0487, 0x05CE, 0x071D, 0x0868, 0x09A5, 0x0AC7, 0x0BC4, 0x0C90,\n    0x0D20, 0x0D5C, 0x0D40, 0x0CE0, 0x0C4C, 0x0B98, 0x0AD7, 0x0A1B,\n    0x0977, 0x08E0, 0x083E, 0x0795, 0x06E5, 0x0632, 0x057C, 0x04C7,\n    0x0413, 0x0363, 0x02B9, 0x0216, 0x017D, 0x00F0, 0x0070, 0x0000,\n    0xFFAC, 0xFF79, 0xFF62, 0xFF5F, 0xFF6C, 0xFF81, 0xFF98, 0xFFAA,\n    0xFFB2, 0xFFB3, 0xFFB8, 0xFFBE, 0xFFC6, 0xFFCF, 0xFFD9, 0xFFE4,\n    0xFFEE, 0xFFF8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0xFFCC, 0xFF4B, 0xFEAD, 0xFE1D, 0xFDCA, 0xFDE1, 0xFE8F, 0x0000,\n    0x0217, 0x048D, 0x0753, 0x0A5A, 0x0D93, 0x10EF, 0x145F, 0x17D5,\n    0x1B41, 0x1E95, 0x21C1, 0x24B8, 0x2769, 0x29C6, 0x2BC0, 0x2D49,\n    0x2DA7, 0x2C75, 0x2A1E, 0x270D, 0x23AE, 0x206E, 0x1DB7, 0x1B18,\n    0x180D, 0x14E1, 0x11E4, 0x0F61, 0x0DA7, 0x0D03, 0x0E69, 0x11DF,\n    0x164F, 0x1AA1, 0x1DBF, 0x1F1E, 0x1F79, 0x1F9F, 0x2060, 0x2464,\n    0x1D50, 0x148F, 0x0B7B, 0x036F, 0xFC11, 0xF5B9, 0xF2D7, 0xF341,\n    0xF4E4, 0xF74F, 0xFA12, 0xFCBB, 0xFEDB, 0x0000, 0x0068, 0x00A1,\n    0x00B1, 0x009D, 0x006D, 0x0025, 0xFFCD, 0xFF6A, 0xFF02, 0xFE9B,\n    0xFE3C, 0xFDEB, 0xFDAD, 0xFD89, 0xFD7E, 0xFD83, 0xFD95, 0xFDB1,\n    0xFDD3, 0xFDF7, 0xFE1A, 0xFE39, 0xFE56, 0xFE74, 0xFE94, 0xFEB5,\n    0xFED7, 0xFEF9, 0xFF1B, 0xFF3D, 0xFF5E, 0xFF7E, 0xFF9C, 0xFFB9,\n    0xFFD3, 0xFFEB, 0x0000, 0x000F, 0x0019, 0x001D, 0x001E, 0x001B,\n    0x0017, 0x0013, 0x0010, 0x000E, 0x000E, 0x000D, 0x000C, 0x000A,\n    0x0009, 0x0007, 0x0005, 0x0003, 0x0001, 0x0000, 0xF549, 0xF549,\n    0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549,\n    0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549,\n    0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549,\n    0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF54A, 0xF54A,\n    0xF54A, 0xF549, 0xF549, 0xF548, 0xF544, 0xF53E, 0xF537, 0xF52F,\n    0xF527, 0xF51F, 0xF518, 0xF513, 0xF50F, 0xF50F, 0xF511, 0xF516,\n    0xF520, 0xF52F, 0xF543, 0xF56A, 0xF5AC, 0xF600, 0xF65D, 0xF6BB,\n    0xF70F, 0xF753, 0xF761, 0xF736, 0xF6F8, 0xF6CE, 0xF6DF, 0xF752,\n    0xF84C, 0xFA9F, 0xFE4C, 0x0244, 0x0578, 0x06D8, 0x04C5, 0x0012,\n    0xFB5F, 0xF94B, 0x075E, 0x04C0, 0xFFA4, 0xF9FA, 0xF5B4, 0xF3AE,\n    0xF2FA, 0xF2E0, 0xF2F9, 0xF34A, 0xF3BE, 0xF440, 0xF4BB, 0xF51B,\n    0xF549, 0xF553, 0xF551, 0xF547, 0xF535, 0xF51D, 0xF500, 0xF4E0,\n    0xF4BE, 0xF49C, 0xF47A, 0xF45C, 0xF442, 0xF42D, 0xF41F, 0xF41A,\n    0xF41C, 0xF425, 0xF432, 0xF442, 0xF453, 0xF464, 0xF472, 0xF480,\n    0xF48E, 0xF49D, 0xF4AD, 0xF4BC, 0xF4CD, 0xF4DD, 0xF4ED, 0xF4FC,\n    0xF50B, 0xF51A, 0xF527, 0xF534, 0xF53F, 0xF549, 0xF551, 0xF555,\n    0xF557, 0xF558, 0xF556, 0xF555, 0xF553, 0xF551, 0xF550, 0xF550,\n    0xF550, 0xF54F, 0xF54E, 0xF54E, 0xF54D, 0xF54C, 0xF54B, 0xF54A,\n    0xF549, 0xC7DD, 0xC812, 0xC8A9, 0xC995, 0xCACC, 0xCC40, 0xCDE7,\n    0xCFB3, 0xD19A, 0xD38E, 0xD585, 0xD773, 0xD94A, 0xDB01, 0xDC89,\n    0xDDD8, 0xDEE2, 0xDF9A, 0xDFF5, 0xDFE7, 0xDEE9, 0xDCAB, 0xD970,\n    0xD57B, 0xD111, 0xCC76, 0xC7ED, 0xC3B9, 0xC020, 0xBCE5, 0xB9A9,\n    0xB67C, 0xB369, 0xB081, 0xADD1, 0xAB66, 0xA94F, 0xA728, 0xA4A0,\n    0xA1E0, 0x9F12, 0x9C5E, 0x99EF, 0x97ED, 0x9682, 0x95D8, 0x9618,\n    0x976B, 0x99FB, 0xA58A, 0xBB29, 0xD0F5, 0xDD0D, 0xE06A, 0xE2B3,\n    0xE40E, 0xE49D, 0xE486, 0xE3EA, 0xE2EF, 0xE1B8, 0xE06A, 0xDF27,\n    0xDE14, 0xDD55, 0xDD0D, 0xDD26, 0xDD5C, 0xDD92, 0xDDAB, 0xDD88,\n    0xDD0D, 0xDB78, 0xD8F3, 0xD6BF, 0xD620, 0xD7A9, 0xDA83, 0xDDD2,\n    0xE0B8, 0xE259, 0xE2DE, 0xE30E, 0xE2FB, 0xE2B5, 0xE24F, 0xE1D9,\n    0xE163, 0xE101, 0xE0C2, 0xE0B8, 0xE0D6, 0xE105, 0xE141, 0xE187,\n    0xE1D5, 0xE229, 0xE281, 0xE2D9, 0xE32F, 0xE380, 0xE3CB, 0xE40D,\n    0xE442, 0xE469, 0xE4AD, 0xE521, 0xE59F, 0xE600, 0xE61E, 0xE5D2,\n    0xE4F5, 0xE362, 0xD98B, 0xD092, 0xD0F4, 0xD263, 0xD497, 0xD745,\n    0xDA22, 0xDCE4, 0xDF41, 0xE0F0, 0xE1C6, 0xE1F2, 0xE1AD, 0xE132,\n    0xE0B8, 0xE059, 0xE003, 0xDFAB, 0xDF48, 0xDED0, 0xDE38, 0xDD79,\n    0xDC87, 0xDB59, 0xD9EC, 0xD847, 0xD674, 0xD47E, 0xD26D, 0xD04B,\n    0xCE22, 0xCBFC, 0xC9E2, 0xC7DD, 0x054B, 0x0547, 0x053A, 0x0525,\n    0x050A, 0x04EA, 0x04C5, 0x049D, 0x0473, 0x0448, 0x041D, 0x03F3,\n    0x03CB, 0x03A6, 0x0385, 0x036A, 0x0355, 0x0347, 0x0342, 0x0346,\n    0x039C, 0x046A, 0x057B, 0x069E, 0x079F, 0x084B, 0x0870, 0x07DA,\n    0x0656, 0x02D1, 0xFD00, 0xF5DC, 0xEE60, 0xE785, 0xE245, 0xDF9A,\n    0xE07F, 0xE75B, 0xF43B, 0x048A, 0x15B4, 0x2525, 0x3048, 0x35E1,\n    0x37B6, 0x37B4, 0x37C8, 0x39E0, 0x3F40, 0x469D, 0x4E14, 0x53BE,\n    0x55B6, 0x54FC, 0x53D8, 0x524E, 0x5062, 0x4E18, 0x4B75, 0x487D,\n    0x4535, 0x41A0, 0x3DC4, 0x39A3, 0x3544, 0x30A9, 0x2956, 0x1E55,\n    0x11FD, 0x06A0, 0xFE93, 0xFC29, 0x02A2, 0x119B, 0x25EE, 0x3C75,\n    0x59ED, 0x7F54, 0xA3E5, 0xBED7, 0xC766, 0xBFD5, 0xB155, 0x9D88,\n    0x860E, 0x6C84, 0x5291, 0x39D2, 0x23E8, 0x1273, 0x0714, 0x005E,\n    0xFBA8, 0xF8B7, 0xF750, 0xF73C, 0xF83F, 0xFA20, 0xFCA4, 0xFF93,\n    0x02B1, 0x05C6, 0x0898, 0x0AEC, 0x0C89, 0x0DF8, 0x0FDB, 0x1217,\n    0x1494, 0x1738, 0x19EA, 0x1C91, 0x1F14, 0x2159, 0x2347, 0x24C6,\n    0x25BB, 0x25CC, 0x24C7, 0x22CB, 0x1FFA, 0x1C73, 0x1857, 0x1234,\n    0x09C4, 0x00F3, 0xF9AA, 0xF5D3, 0xF4E8, 0xF4FF, 0xF5E5, 0xF769,\n    0xF95A, 0xFB86, 0xFDBA, 0xFFC7, 0x0178, 0x029F, 0x0354, 0x03D8,\n    0x0436, 0x0476, 0x04A2, 0x04C3, 0x04E5, 0x050F, 0x054B, 0x2BD6,\n    0x2BB8, 0x2B61, 0x2AD9, 0x2A25, 0x294C, 0x2855, 0x2746, 0x2625,\n    0x24F9, 0x23C9, 0x229A, 0x2174, 0x205D, 0x1F5A, 0x1E74, 0x1DAF,\n    0x1D13, 0x1CA6, 0x1C6F, 0x1CB2, 0x1D97, 0x1EF6, 0x20AB, 0x228E,\n    0x247A, 0x2648, 0x27D2, 0x28F2, 0x295A, 0x290E, 0x2864, 0x27B1,\n    0x2749, 0x2782, 0x28B1, 0x2B2B, 0x3067, 0x388F, 0x4208, 0x4B34,\n    0x5277, 0x5634, 0x54FF, 0x4FC4, 0x486A, 0x40DA, 0x3AFA, 0x36BA,\n    0x32D5, 0x2F63, 0x2C7F, 0x2A40, 0x2875, 0x26D5, 0x255B, 0x23FF,\n    0x22BC, 0x218A, 0x2064, 0x1F42, 0x1E1F, 0x1CF4, 0x1BBA, 0x1A6A,\n    0x18FF, 0x16D6, 0x13D0, 0x10AE, 0x0E30, 0x0D17, 0x0E23, 0x1453,\n    0x1F26, 0x2A1A, 0x30B0, 0x31E2, 0x3078, 0x2D9B, 0x2A74, 0x282E,\n    0x26A1, 0x24EC, 0x2323, 0x215A, 0x1FA5, 0x1E17, 0x1CC6, 0x1BC4,\n    0x1B25, 0x1AFF, 0x1B4C, 0x1BF4, 0x1CE6, 0x1E16, 0x1F75, 0x20F5,\n    0x2286, 0x241C, 0x25A7, 0x2719, 0x2864, 0x2979, 0x2A4B, 0x2ACB,\n    0x2ADF, 0x2A87, 0x29DA, 0x28EE, 0x27D9, 0x26B3, 0x2592, 0x248D,\n    0x23BA, 0x232F, 0x2305, 0x2350, 0x24E0, 0x27F6, 0x2BD6, 0x2FC1,\n    0x32FB, 0x34C6, 0x348C, 0x32C3, 0x3042, 0x2DE1, 0x2C78, 0x2BEB,\n    0x2B88, 0x2B4A, 0x2B29, 0x2B1F, 0x2B25, 0x2B33, 0x2B43, 0x2B4F,\n    0x2B4F, 0x2B4B, 0x2B50, 0x2B5D, 0x2B6E, 0x2B83, 0x2B9A, 0x2BB1,\n    0x2BC5, 0x2BD6, 0xCCF6, 0xCCF5, 0xCCF4, 0xCCF0, 0xCCEA, 0xCCE2,\n    0xCCD7, 0xCCC8, 0xCCB5, 0xCC9E, 0xCC82, 0xCC61, 0xCC3A, 0xCC0D,\n    0xCBDA, 0xCB9F, 0xCB5D, 0xCB14, 0xCAC2, 0xCA67, 0xCA02, 0xC98D,\n    0xC901, 0xC85A, 0xC78F, 0xC69C, 0xC579, 0xC420, 0xC28C, 0xBFFB,\n    0xBC1F, 0xB79B, 0xB311, 0xAF24, 0xAC78, 0xABAE, 0xAD6A, 0xB3C6,\n    0xBEF3, 0xCCB9, 0xDAE2, 0xE734, 0xEF78, 0xF1CD, 0xEFA6, 0xEBC6,\n    0xE8EF, 0xE9E5, 0xF115, 0xFCA9, 0x08F9, 0x1262, 0x153D, 0x1319,\n    0x1005, 0x0C1A, 0x0770, 0x0222, 0xFC4A, 0xF5FF, 0xEF5B, 0xE878,\n    0xE16E, 0xDA58, 0xD34E, 0xCC69, 0xC354, 0xB725, 0xAA1B, 0x9E75,\n    0x9671, 0x944E, 0x9CC2, 0xAF44, 0xC630, 0xDBE4, 0xF357, 0x0F3D,\n    0x298C, 0x3C37, 0x4132, 0x3A11, 0x2D58, 0x1C63, 0x0890, 0xF33C,\n    0xDDC4, 0xC984, 0xB7DA, 0xAA23, 0xA1BC, 0x9D7D, 0x9B2F, 0x9A95,\n    0x9B74, 0x9D92, 0xA0B2, 0xA499, 0xA90C, 0xADCF, 0xB2A7, 0xB759,\n    0xBBA9, 0xBF5C, 0xC237, 0xC4B5, 0xC76E, 0xCA4F, 0xCD45, 0xD03D,\n    0xD323, 0xD5E5, 0xD86F, 0xDAAE, 0xDC8F, 0xDDFF, 0xDEEB, 0xDEC6,\n    0xDD3B, 0xDA84, 0xD6DE, 0xD285, 0xCDB5, 0xC6B7, 0xBD32, 0xB36D,\n    0xABB1, 0xA845, 0xA888, 0xAA23, 0xACD0, 0xB048, 0xB445, 0xB880,\n    0xBCB3, 0xC097, 0xC3E6, 0xC659, 0xC808, 0xC947, 0xCA2B, 0xCACB,\n    0xCB3D, 0xCB97, 0xCBF0, 0xCC5E, 0xCCF6, 0x0000, 0x0000, 0x0000,\n    0x0001, 0x0002, 0x0003, 0x0005, 0x0006, 0x0008, 0x000A, 0x000C,\n    0x000E, 0x0010, 0x0012, 0x0013, 0x0015, 0x0017, 0x0018, 0x0019,\n    0x001A, 0x001B, 0x001C, 0x001C, 0x001D, 0x001D, 0x001D, 0x001D,\n    0x001D, 0x001D, 0x001D, 0x001D, 0x001D, 0x001D, 0x001D, 0x001E,\n    0x001E, 0x001F, 0x001F, 0x0020, 0x0021, 0x0025, 0x002B, 0x0032,\n    0x0037, 0x0038, 0x0035, 0x002F, 0x0028, 0x0020, 0x0018, 0x0010,\n    0x000A, 0x0007, 0x0002, 0xFFFC, 0xFFF3, 0xFFE8, 0xFFDE, 0xFFD5,\n    0xFFCD, 0xFFC9, 0xFFC9, 0xFFCE, 0xFFDA, 0xFFED, 0x0007, 0x0072,\n    0x0139, 0x0200, 0x02B9, 0x0373, 0x03FB, 0x0417, 0x03DA, 0x0338,\n    0x02AA, 0x0298, 0x02A9, 0x02C3, 0x02CC, 0x02AA, 0x0255, 0x01DF,\n    0x0157, 0x00CD, 0x004E, 0xFFEB, 0xFFE3, 0x0019, 0x0066, 0x0081,\n    0xFFE6, 0xFFBC, 0xFFF0, 0x00BD, 0x01C7, 0x02AA, 0x02AA, 0x02AC,\n    0x02B1, 0x02B7, 0x02BC, 0x02BC, 0x02B7, 0x02AA, 0x028E, 0x0262,\n    0x022D, 0x01F7, 0x01C7, 0x01A2, 0x0191, 0x019A, 0x01BF, 0x01FC,\n    0x0249, 0x02A3, 0x0302, 0x0361, 0x03BA, 0x0408, 0x0445, 0x046B,\n    0x0475, 0x0148, 0x0206, 0x037A, 0x0491, 0x00D8, 0xFEBB, 0xFCD3,\n    0xFB61, 0xFAA5, 0xFBCA, 0xFE72, 0x008D, 0x0077, 0x0064, 0x0270,\n    0x050B, 0x066E, 0x04B7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31,\n    0xFF31, 0xFF31, 0xFF32, 0xFF32, 0xFF32, 0xFF32, 0xFF32, 0xFF32,\n    0xFF32, 0xFF32, 0xFF32, 0xFF32, 0xFF32, 0xFF32, 0xFF32, 0xFF32,\n    0xFF32, 0xFF32, 0xFF32, 0xFF32, 0xFF32, 0xFF32, 0xFF32, 0xFF33,\n    0xFF33, 0xFF35, 0xFF36, 0xFF37, 0xFF38, 0xFF37, 0xFF36, 0xFF35,\n    0xFF34, 0xFF33, 0xFF32, 0xFF31, 0xFF30, 0xFF2F, 0xFF2E, 0xFF2B,\n    0xFF29, 0xFF27, 0xFF24, 0xFF23, 0xFF22, 0xFF22, 0xFF23, 0xFF25,\n    0xFF2A, 0xFF30, 0xFF4E, 0xFF82, 0xFFA7, 0xFFAE, 0xFFA6, 0xFF96,\n    0xFF99, 0xFF51, 0xFE16, 0xFD03, 0xFCC8, 0xFCB7, 0xFCC4, 0xFCE2,\n    0xFD03, 0xFD29, 0xFD5A, 0xFD93, 0xFDD3, 0xFE15, 0xFE56, 0xFEA7,\n    0xFF02, 0xFF58, 0xFF5D, 0xFE06, 0xFDCA, 0xFDB9, 0xFD7D, 0xFD3B,\n    0xFD03, 0xFD03, 0xFD01, 0xFCFE, 0xFCF9, 0xFCF6, 0xFCF6, 0xFCF9,\n    0xFD03, 0xFD14, 0xFD2A, 0xFD46, 0xFD63, 0xFD80, 0xFD9B, 0xFDB2,\n    0xFDC3, 0xFDCE, 0xFDD5, 0xFDD9, 0xFDDB, 0xFDDB, 0xFDDC, 0xFDDD,\n    0xFDE0, 0xFDE5, 0xFDED, 0xFDF9, 0xFE75, 0xFF1C, 0xFFBF, 0xFF8F,\n    0xFBA3, 0xFBCF, 0xFC38, 0xFCB8, 0xFD23, 0xFD8F, 0xFE11, 0xFE85,\n    0xFED6, 0xFF09, 0xFF1D, 0xFF25, 0xFF35, 0xFF6F, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xC9D8, 0xC9D0, 0xC9BA, 0xC996, 0xC967,\n    0xC92E, 0xC8EB, 0xC8A2, 0xC852, 0xC7FE, 0xC7A6, 0xC74D, 0xC6F4,\n    0xC69C, 0xC646, 0xC5F5, 0xC5A9, 0xC564, 0xC527, 0xC4F4, 0xC4CB,\n    0xC4A8, 0xC48C, 0xC475, 0xC462, 0xC453, 0xC447, 0xC43C, 0xC431,\n    0xC427, 0xC41C, 0xC40E, 0xC3FD, 0xC3E9, 0xC3D0, 0xC3B1, 0xC38C,\n    0xC35F, 0xC329, 0xC2EB, 0xC235, 0xC0EB, 0xBF88, 0xBE83, 0xBE57,\n    0xBF07, 0xC02A, 0xC19D, 0xC337, 0xC4D3, 0xC64C, 0xC779, 0xC837,\n    0xC8AA, 0xC912, 0xC96C, 0xC9B6, 0xC9EE, 0xCA13, 0xCA22, 0xCA18,\n    0xC9F4, 0xC9B5, 0xC956, 0xC8D8, 0xC837, 0xC590, 0xC0E4, 0xBD08,\n    0xBAEF, 0xB9A5, 0xB927, 0xB8F1, 0xBC89, 0xCACF, 0xD73A, 0xD9A6,\n    0xD9EB, 0xD8FA, 0xD7C4, 0xD73A, 0xD7C7, 0xD8DE, 0xD9FE, 0xDAA2,\n    0xDA48, 0xD86E, 0xCF5F, 0xC109, 0xB074, 0xAE8B, 0xBCDD, 0xD037,\n    0xDE3F, 0xDF29, 0xDB00, 0xD73A, 0xD73A, 0xD753, 0xD78D, 0xD7CF,\n    0xD800, 0xD809, 0xD7CF, 0xD73A, 0xD635, 0xD4D1, 0xD32C, 0xD165,\n    0xCF9A, 0xCDEB, 0xCC75, 0xCB59, 0xCAA1, 0xCA38, 0xCA06, 0xC9F8,\n    0xC9F6, 0xC9EA, 0xC9C0, 0xC960, 0xC8B5, 0xC7A9, 0xC626, 0xB616,\n    0xB21C, 0xB06A, 0xAEF6, 0xB06E, 0xB04E, 0xB049, 0xB0F5, 0xB2E7,\n    0xB894, 0xC0B6, 0xC649, 0xC448, 0xC005, 0xBE1B, 0xBCBE, 0xBCCE,\n    0xBFB8, 0xC9D8, 0xC9D8, 0xC9D8, 0xC9D8, 0xC9D8, 0x1E4A, 0x1E57,\n    0x1E7F, 0x1EBE, 0x1F12, 0x1F7A, 0x1FF2, 0x2079, 0x210D, 0x21AA,\n    0x2250, 0x22FB, 0x23A9, 0x2459, 0x2507, 0x25B3, 0x2658, 0x26F6,\n    0x2789, 0x2811, 0x2890, 0x290C, 0x2986, 0x29FD, 0x2A74, 0x2AE9,\n    0x2B5E, 0x2BD3, 0x2C48, 0x2CBD, 0x2D34, 0x2DAC, 0x2E26, 0x2EA3,\n    0x2F22, 0x2FA5, 0x302B, 0x30B5, 0x3144, 0x31D8, 0x32EB, 0x348E,\n    0x3626, 0x3716, 0x36C3, 0x351E, 0x32B1, 0x2FBF, 0x2C8F, 0x2965,\n    0x2687, 0x243B, 0x22C5, 0x21E0, 0x2119, 0x2074, 0x1FF1, 0x1F92,\n    0x1F5B, 0x1F4D, 0x1F69, 0x1FB3, 0x202C, 0x20D5, 0x21B3, 0x22C5,\n    0x271C, 0x2EDB, 0x35A0, 0x3B4D, 0x4000, 0x3FB2, 0x376A, 0x2A7F,\n    0x1E67, 0x1895, 0x1B24, 0x228B, 0x2BCD, 0x33EF, 0x37F5, 0x3719,\n    0x3374, 0x2E56, 0x290F, 0x24EC, 0x233E, 0x2A59, 0x37D2, 0x4963,\n    0x4A4A, 0x39CA, 0x2804, 0x1B99, 0x1AA8, 0x1E44, 0x218C, 0x218C,\n    0x2149, 0x20AB, 0x1FF7, 0x1F70, 0x1F5A, 0x1FF7, 0x218C, 0x249B,\n    0x2919, 0x2E72, 0x3413, 0x3967, 0x3DDA, 0x40DA, 0x41D3, 0x40C9,\n    0x3E5B, 0x3AD7, 0x368D, 0x31CE, 0x2CE7, 0x282B, 0x23E7, 0x206C,\n    0x1E08, 0x1D0D, 0x3FB8, 0x468E, 0x4833, 0x4A4A, 0x498B, 0x470B,\n    0x442C, 0x4048, 0x3AB9, 0x2F73, 0x20BE, 0x1778, 0x1E10, 0x28B8,\n    0x2C55, 0x2E20, 0x2E0C, 0x2A87, 0x1E4A, 0x1E4A, 0x1E4A, 0x1E4A,\n    0x1E4A, 0x1B09, 0x1B07, 0x1B01, 0x1AF8, 0x1AEC, 0x1ADD, 0x1ACA,\n    0x1AB6, 0x1A9F, 0x1A85, 0x1A6A, 0x1A4E, 0x1A2F, 0x1A10, 0x19EF,\n    0x19CE, 0x19AC, 0x198A, 0x1967, 0x1945, 0x1922, 0x18FD, 0x18D7,\n    0x18AF, 0x1886, 0x185C, 0x1831, 0x1805, 0x17D8, 0x17AA, 0x177C,\n    0x174D, 0x171E, 0x16EE, 0x16BE, 0x168E, 0x165E, 0x162E, 0x15FF,\n    0x15CF, 0x1586, 0x1520, 0x14C2, 0x148E, 0x14A9, 0x1517, 0x15B7,\n    0x1678, 0x1749, 0x1818, 0x18D3, 0x1969, 0x19C9, 0x1A05, 0x1A3A,\n    0x1A68, 0x1A8E, 0x1AAB, 0x1ABE, 0x1AC5, 0x1AC0, 0x1AAD, 0x1A8C,\n    0x1A5C, 0x1A1B, 0x19C9, 0x18AA, 0x1682, 0x1413, 0x10A4, 0x0CED,\n    0x0BD7, 0x0F09, 0x148B, 0x19DC, 0x1C7A, 0x1B83, 0x188D, 0x14CC,\n    0x1173, 0x0FB5, 0x0FC6, 0x10C9, 0x125B, 0x141A, 0x15A3, 0x1692,\n    0x15C1, 0x13C3, 0x1110, 0x1253, 0x0F50, 0x1111, 0x12E8, 0x12B8,\n    0x11E7, 0x112E, 0x112E, 0x0E71, 0x0B57, 0x0811, 0x04D4, 0x01D1,\n    0xFF3B, 0xFD44, 0xFBDB, 0xFAC7, 0xF9FF, 0xF97B, 0xF931, 0xF91A,\n    0xF92C, 0xF95F, 0xF9C0, 0xFA5D, 0xFB29, 0xFC1C, 0xFD28, 0xFE44,\n    0xFF64, 0x007D, 0x0186, 0x0260, 0x0436, 0x0A69, 0x0C81, 0x0DCD,\n    0x0EA8, 0x104E, 0x1471, 0x1892, 0x1C2E, 0x1EC4, 0x1FF1, 0x1F36,\n    0x1BE2, 0x110A, 0x067B, 0x0425, 0x04A9, 0x066E, 0x0901, 0x1B09,\n    0x1B09, 0x1B09, 0x1B09, 0x1B09, 0x1144, 0x1148, 0x1152, 0x1161,\n    0x1177, 0x1191, 0x11B0, 0x11D2, 0x11F8, 0x1222, 0x124D, 0x127B,\n    0x12AA, 0x12DA, 0x130B, 0x133B, 0x136B, 0x139B, 0x13C8, 0x13F4,\n    0x141F, 0x144C, 0x1479, 0x14A8, 0x14D7, 0x1508, 0x1539, 0x156A,\n    0x159C, 0x15CF, 0x1601, 0x1634, 0x1667, 0x1699, 0x16CC, 0x16FD,\n    0x172F, 0x1760, 0x1790, 0x17BF, 0x17FF, 0x1850, 0x1895, 0x18B0,\n    0x1884, 0x180D, 0x1765, 0x169D, 0x15C8, 0x14F5, 0x1437, 0x139E,\n    0x133C, 0x1303, 0x12D8, 0x12B9, 0x12A5, 0x129C, 0x129C, 0x12A3,\n    0x12B2, 0x12C7, 0x12E0, 0x12FD, 0x131C, 0x133C, 0x13A9, 0x1474,\n    0x1549, 0x1678, 0x17B0, 0x17AB, 0x15F3, 0x1354, 0x106C, 0x0DD8,\n    0x0B67, 0x08C4, 0x0658, 0x048D, 0x03CB, 0x040E, 0x04F8, 0x0669,\n    0x0843, 0x0A66, 0x0CB4, 0x10F7, 0x1694, 0x1BE0, 0x1C5E, 0x1A0A,\n    0x13D8, 0x0EF8, 0x0E8F, 0x0FCC, 0x10EE, 0x10EE, 0x109A, 0x101A,\n    0x0F8E, 0x0F15, 0x0ECD, 0x0ED6, 0x0F4E, 0x1075, 0x1249, 0x1481,\n    0x16D8, 0x1905, 0x1AC3, 0x1BCA, 0x1BD3, 0x1AC5, 0x18D9, 0x1648,\n    0x134D, 0x1020, 0x0CFA, 0x0A15, 0x07A8, 0x05EF, 0x0808, 0x0D80,\n    0x163D, 0x18F6, 0x1A91, 0x1C5E, 0x1B8F, 0x196F, 0x176B, 0x160E,\n    0x15E2, 0x1978, 0x1F5C, 0x2219, 0x1B26, 0x1292, 0x0FF5, 0x0F0D,\n    0x0E81, 0x0DF2, 0x1144, 0x1144, 0x1144, 0x1144, 0x1144, 0xAC44,\n    0xAC3F, 0xAC32, 0xAC1C, 0xABFE, 0xABD9, 0xABAE, 0xAB7C, 0xAB46,\n    0xAB0B, 0xAACC, 0xAA89, 0xAA44, 0xA9FC, 0xA9B3, 0xA969, 0xA91F,\n    0xA8D5, 0xA88C, 0xA844, 0xA7FC, 0xA7B1, 0xA764, 0xA715, 0xA6C3,\n    0xA66F, 0xA61A, 0xA5C3, 0xA56B, 0xA512, 0xA4B8, 0xA45D, 0xA401,\n    0xA3A6, 0xA34A, 0xA2EE, 0xA293, 0xA238, 0xA1DE, 0xA184, 0xA100,\n    0xA04D, 0x9FAB, 0x9F5A, 0x9F98, 0xA06D, 0xA1A1, 0xA313, 0xA4A1,\n    0xA62A, 0xA78E, 0xA8AC, 0xA962, 0xA9D5, 0xAA3F, 0xAA9D, 0xAAEC,\n    0xAB2A, 0xAB53, 0xAB66, 0xAB5F, 0xAB3C, 0xAAFA, 0xAA97, 0xAA10,\n    0xA962, 0xA6DD, 0xA226, 0x9D3E, 0x9694, 0x8FB8, 0x8F5D, 0x9943,\n    0xA8C8, 0xB806, 0xC117, 0xC27C, 0xBFE9, 0xBB47, 0xB67E, 0xB377,\n    0xB287, 0xB26C, 0xB2A7, 0xB2BA, 0xB227, 0xB070, 0xA9C3, 0x9FDA,\n    0x95B0, 0x959B, 0x9629, 0xA06B, 0xAAAB, 0xB0C0, 0xB565, 0xB93A,\n    0xB93A, 0xB977, 0xBA02, 0xBA9F, 0xBB17, 0xBB2E, 0xBAAD, 0xB958,\n    0xB6D9, 0xB342, 0xAEFE, 0xAA77, 0xA616, 0xA245, 0x9F6D, 0x9DF9,\n    0x9DE4, 0x9EC1, 0xA05D, 0xA287, 0xA50D, 0xA7BB, 0xAA61, 0xACCB,\n    0xAEC7, 0xB1BC, 0xB0BC, 0x9C2A, 0x9833, 0x974D, 0x959B, 0x950E,\n    0x988D, 0x9C41, 0x9FEB, 0xA34B, 0xA66F, 0xA93C, 0xAB37, 0xAB6B,\n    0xAA5C, 0xA8C1, 0xA6D8, 0xA5AD, 0xA5F4, 0xAC44, 0xAC44, 0xAC44,\n    0xAC44, 0xAC44, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0003,\n    0x000B, 0x0017, 0x0025, 0x0033, 0x0041, 0x004C, 0x0053, 0x0054,\n    0x004D, 0x003E, 0x0025, 0x0000, 0xFFB2, 0xFF2D, 0xFE89, 0xFDDB,\n    0xFD3B, 0xFCBF, 0xFCA4, 0xFCE9, 0xFD97, 0xFE2F, 0xFE46, 0xFE3B,\n    0xFE25, 0xFE1A, 0xFE2F, 0xFE65, 0xFEAB, 0xFEFD, 0xFF58, 0xFFB7,\n    0x0015, 0x0087, 0x010B, 0x0180, 0x01A1, 0xFCE0, 0xFDEF, 0xFF7C,\n    0xFF56, 0xFEB9, 0xFE2F, 0xFE2F, 0xFE31, 0xFE34, 0xFE38, 0xFE3B,\n    0xFE3C, 0xFE38, 0xFE2F, 0xFE18, 0xFDF5, 0xFDCD, 0xFDAB, 0xFD98,\n    0xFDA1, 0xFDC2, 0xFDF0, 0xFE20, 0xFE52, 0xFE86, 0xFEBD, 0xFEF6,\n    0xFF30, 0xFF6D, 0xFFDE, 0xFFEC, 0xFFF0, 0xFFEE, 0xFFEB, 0xFFEC,\n    0x0005, 0x0000, 0xFF9B, 0xFEF8, 0xFE43, 0xFDA4, 0xFD47, 0xFD54,\n    0xFDF7, 0x07CA, 0x03EC, 0x05E5, 0x0535, 0x03BA, 0x023C, 0x0117,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFE, 0xFFFE,\n    0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFE, 0xFFFF, 0x0000, 0x0001,\n    0x0002, 0x0005, 0x000A, 0x0013, 0x0021, 0x002D, 0x0084, 0x01B1,\n    0x02B4, 0x02EE, 0x0302, 0x02F9, 0x02DC, 0x02B4, 0x027E, 0x0236,\n    0x01E2, 0x0188, 0x0130, 0x00DE, 0x0092, 0x0049, 0x000B, 0x0000,\n    0x0191, 0x0188, 0x0161, 0x01C0, 0x0244, 0x02B4, 0x02B4, 0x02B6,\n    0x02B9, 0x02BC, 0x02BF, 0x02BF, 0x02BC, 0x02B4, 0x02A4, 0x028D,\n    0x0270, 0x0250, 0x0232, 0x020F, 0x01E9, 0x01C9, 0x01B2, 0x019C,\n    0x0188, 0x0175, 0x0162, 0x0150, 0x013D, 0x0134, 0x010D, 0x00E3,\n    0x00B7, 0x008B, 0x005E, 0x0026, 0x0000, 0xFFDA, 0xFF8B, 0xFF35,\n    0xFEF8, 0xFEF4, 0xFF48, 0x0015, 0x0891, 0xFE9C, 0xFCC8, 0xFCB7,\n    0xFDA4, 0xFE9C, 0xFF4D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0xBF40, 0xBF37, 0xBF1D, 0xBEF4, 0xBEBE, 0xBE7C, 0xBE31, 0xBDDD,\n    0xBD83, 0xBD24, 0xBCC2, 0xBC60, 0xBBFD, 0xBB9E, 0xBB42, 0xBAED,\n    0xBA9F, 0xBA5A, 0xBA21, 0xB9F4, 0xB9D3, 0xB9BA, 0xB9A7, 0xB99B,\n    0xB994, 0xB991, 0xB992, 0xB997, 0xB99D, 0xB9A5, 0xB9AD, 0xB9B5,\n    0xB9BC, 0xB9C1, 0xB9C4, 0xB9C3, 0xB9BD, 0xB9B3, 0xB9A3, 0xB98C,\n    0xB937, 0xB896, 0xB7E8, 0xB76B, 0xB75F, 0xB7C4, 0xB868, 0xB934,\n    0xBA15, 0xBAF6, 0xBBC3, 0xBC67, 0xBCCE, 0xBD0D, 0xBD43, 0xBD70,\n    0xBD94, 0xBDAE, 0xBDBD, 0xBDC1, 0xBDB9, 0xBDA5, 0xBD84, 0xBD56,\n    0xBD19, 0xBCCE, 0xBC22, 0xBAF1, 0xB984, 0xB825, 0xB71C, 0xB6B1,\n    0xB74D, 0xBCB3, 0xCE0E, 0xDCEF, 0xE001, 0xE09F, 0xDFB3, 0xDE2A,\n    0xDCEF, 0xDC70, 0xDC31, 0xDBBB, 0xDA97, 0xD84E, 0xD46A, 0xCB75,\n    0xBDEE, 0xB149, 0xAAE1, 0xB139, 0xBDE4, 0xC9C8, 0xD191, 0xD7C8,\n    0xDCEF, 0xDCEF, 0xDD08, 0xDD44, 0xDD88, 0xDDBB, 0xDDC4, 0xDD88,\n    0xDCEF, 0xDBBD, 0xD9F1, 0xD7C2, 0xD56C, 0xD326, 0xD06C, 0xCD77,\n    0xCBA2, 0xCADC, 0xCA35, 0xC9BE, 0xC986, 0xC99E, 0xCA16, 0xCAFD,\n    0xD4C2, 0xD02B, 0xCA09, 0xC312, 0xBBFB, 0xB579, 0xAE7A, 0xAAE1,\n    0xABFF, 0xADAD, 0xAFDE, 0xB284, 0xB590, 0xB8F3, 0xBCA1, 0xC90A,\n    0xCE10, 0xCCD0, 0xC7C1, 0xC15C, 0xBB52, 0xB590, 0xBF40, 0xBF40,\n    0xBF40, 0xBF40, 0xBF40, 0x2537, 0x2544, 0x2569, 0x25A4, 0x25F4,\n    0x2655, 0x26C7, 0x2746, 0x27D2, 0x2867, 0x2905, 0x29A8, 0x2A4E,\n    0x2AF6, 0x2B9E, 0x2C43, 0x2CE4, 0x2D7E, 0x2E0F, 0x2E96, 0x2F15,\n    0x2F94, 0x3012, 0x3090, 0x310D, 0x318A, 0x3207, 0x3284, 0x3302,\n    0x3380, 0x3400, 0x3480, 0x3502, 0x3585, 0x360A, 0x3691, 0x371A,\n    0x37A6, 0x3834, 0x38C5, 0x39C0, 0x3B2F, 0x3C8B, 0x3D49, 0x3CE2,\n    0x3B45, 0x38EC, 0x3618, 0x330B, 0x3005, 0x2D49, 0x2B18, 0x29B2,\n    0x28D3, 0x280D, 0x2763, 0x26D9, 0x2671, 0x2630, 0x2618, 0x262E,\n    0x2673, 0x26ED, 0x279D, 0x2889, 0x29B2, 0x2CD1, 0x3284, 0x3925,\n    0x3F0E, 0x429A, 0x4224, 0x38E4, 0x27F0, 0x1670, 0x0B8C, 0x0898,\n    0x093F, 0x0C27, 0x0FF3, 0x1349, 0x15DD, 0x1879, 0x1B63, 0x1EE3,\n    0x2340, 0x28C0, 0x3268, 0x3F83, 0x4AC8, 0x4B1B, 0x3F85, 0x2E1D,\n    0x1F8B, 0x191E, 0x15DC, 0x1349, 0x1349, 0x1636, 0x198A, 0x1D0C,\n    0x2084, 0x23BA, 0x2674, 0x2879, 0x2932, 0x28A5, 0x2787, 0x268E,\n    0x2670, 0x280D, 0x2ABA, 0x2CD3, 0x2DF2, 0x2ED4, 0x2F93, 0x3047,\n    0x310A, 0x31F4, 0x331E, 0x345D, 0x3597, 0x36FB, 0x38B9, 0x3AFE,\n    0x3DFA, 0x476D, 0x4E5D, 0x4C44, 0x4941, 0x456E, 0x40E1, 0x3BB2,\n    0x35F9, 0x2FCD, 0x1BE9, 0x1866, 0x1C17, 0x2100, 0x285D, 0x2EB0,\n    0x30AB, 0x2537, 0x2537, 0x2537, 0x2537, 0x2537, 0xD64A, 0xD64B,\n    0xD64F, 0xD655, 0xD65D, 0xD667, 0xD674, 0xD682, 0xD693, 0xD6A5,\n    0xD6B9, 0xD6CF, 0xD6E6, 0xD6FF, 0xD71A, 0xD736, 0xD753, 0xD772,\n    0xD792, 0xD7B3, 0xD7D6, 0xD7FA, 0xD821, 0xD849, 0xD873, 0xD89F,\n    0xD8CC, 0xD8FA, 0xD92A, 0xD95B, 0xD98D, 0xD9C0, 0xD9F3, 0xDA28,\n    0xDA5C, 0xDA92, 0xDAC8, 0xDAFE, 0xDB34, 0xDB6B, 0xDBC6, 0xDC4C,\n    0xDCCD, 0xDD1A, 0xDD03, 0xDC83, 0xDBC5, 0xDADE, 0xD9E4, 0xD8EB,\n    0xD80A, 0xD755, 0xD6E2, 0xD696, 0xD648, 0xD5FD, 0xD5B9, 0xD57F,\n    0xD553, 0xD538, 0xD533, 0xD548, 0xD579, 0xD5CC, 0xD643, 0xD6E2,\n    0xD907, 0xDD35, 0xE231, 0xE8B8, 0xF00C, 0xF4AD, 0xF53C, 0xF3BF,\n    0xF1CC, 0xF0FA, 0xF1D6, 0xF379, 0xF54C, 0xF6B4, 0xF719, 0xF659,\n    0xF4E7, 0xF307, 0xF0FF, 0xEF16, 0xED90, 0xECE8, 0xED2F, 0xEF6E,\n    0xEC3D, 0xEE7C, 0xEE23, 0xEE49, 0xF0C3, 0xF405, 0xF6CF, 0xF6CF,\n    0xF440, 0xF150, 0xEE36, 0xEB28, 0xE85D, 0xE60A, 0xE466, 0xE3EA,\n    0xE491, 0xE5D4, 0xE72C, 0xE810, 0xE84C, 0xE844, 0xE854, 0xE8A3,\n    0xE90D, 0xE982, 0xE9F0, 0xEA46, 0xEA72, 0xEA64, 0xE9D7, 0xE8CB,\n    0xE78E, 0xE671, 0xE5C2, 0xE5D2, 0xEA8C, 0xEEB6, 0xEDF2, 0xECCF,\n    0xEB46, 0xE951, 0xE6EA, 0xE40A, 0xE0AB, 0xD1F3, 0xE726, 0xEEC7,\n    0xEB99, 0xE66F, 0xE1B3, 0xDECA, 0xD64A, 0xD64A, 0xD64A, 0xD64A,\n    0xD64A, 0xEC41, 0xEC3C, 0xEC30, 0xEC1B, 0xEBFF, 0xEBDD, 0xEBB4,\n    0xEB86, 0xEB53, 0xEB1B, 0xEAE0, 0xEAA1, 0xEA5F, 0xEA1C, 0xE9D6,\n    0xE990, 0xE949, 0xE902, 0xE8BC, 0xE877, 0xE831, 0xE7E8, 0xE79C,\n    0xE74D, 0xE6FC, 0xE6A9, 0xE654, 0xE5FE, 0xE5A6, 0xE54D, 0xE4F4,\n    0xE49A, 0xE440, 0xE3E6, 0xE38C, 0xE333, 0xE2DB, 0xE284, 0xE22E,\n    0xE1DA, 0xE162, 0xE0C7, 0xE041, 0xE00B, 0xE05E, 0xE143, 0xE286,\n    0xE405, 0xE5A0, 0xE736, 0xE8A4, 0xE9CA, 0xEA85, 0xEAF5, 0xEB4E,\n    0xEB91, 0xEBC0, 0xEBDB, 0xEBE3, 0xEBDB, 0xEBC3, 0xEB9C, 0xEB67,\n    0xEB27, 0xEADB, 0xEA85, 0xE8E8, 0xE646, 0xE4E1, 0xE58E, 0xE776,\n    0xEA5F, 0xEEBD, 0xF42B, 0xF929, 0xFC34, 0xFD04, 0xFC9D, 0xFB6F,\n    0xF9E9, 0xF87B, 0xF726, 0xF5A8, 0xF406, 0xF249, 0xF077, 0xEE9A,\n    0xEC42, 0xE96E, 0xE609, 0xE8B4, 0xEBC0, 0xF250, 0xF847, 0xFB95,\n    0xFDE3, 0xFFC5, 0xFFC5, 0xFCD5, 0xF973, 0xF5E0, 0xF25D, 0xEF2A,\n    0xEC88, 0xEAB7, 0xEA14, 0xEA99, 0xEBF5, 0xEDD8, 0xEFF0, 0xF42B,\n    0xF991, 0xFB7C, 0xF945, 0xF5B8, 0xF15B, 0xECB3, 0xE848, 0xE49E,\n    0xE23D, 0xE16F, 0xE1DB, 0xE313, 0xE4A6, 0xE626, 0xE723, 0xE722,\n    0xE6E9, 0xE6FF, 0xE700, 0xE6FF, 0xE711, 0xE748, 0xE7B6, 0xE870,\n    0xEE04, 0xE67C, 0xE539, 0xE5C7, 0xE6B0, 0xE7D8, 0xE9A3, 0xEC41,\n    0xEC41, 0xEC41, 0xEC41, 0xEC41, 0xB59E, 0xB59B, 0xB593, 0xB586,\n    0xB573, 0xB55C, 0xB541, 0xB522, 0xB4FF, 0xB4D8, 0xB4AF, 0xB482,\n    0xB453, 0xB421, 0xB3EE, 0xB3B8, 0xB382, 0xB349, 0xB310, 0xB2D7,\n    0xB29B, 0xB25D, 0xB21B, 0xB1D7, 0xB191, 0xB148, 0xB0FD, 0xB0B0,\n    0xB062, 0xB012, 0xAFC1, 0xAF6E, 0xAF1B, 0xAEC7, 0xAE73, 0xAE1E,\n    0xADC9, 0xAD74, 0xAD20, 0xACCC, 0xAC45, 0xAB86, 0xAAD4, 0xAA73,\n    0xAAA7, 0xAB78, 0xACA9, 0xAE18, 0xAFA5, 0xB12E, 0xB291, 0xB3AF,\n    0xB464, 0xB4DB, 0xB550, 0xB5BC, 0xB61D, 0xB66D, 0xB6A8, 0xB6C8,\n    0xB6CA, 0xB6A9, 0xB660, 0xB5E9, 0xB542, 0xB464, 0xB149, 0xAB5B,\n    0xA4C4, 0x9BA7, 0x91E2, 0x8F2C, 0x973F, 0xA516, 0xB351, 0xBC8C,\n    0xBFF4, 0xC0CA, 0xBFD6, 0xBDDE, 0xBBA8, 0xB92D, 0xB600, 0xB24C,\n    0xAE3D, 0xA9FD, 0xA5B9, 0xA073, 0x99E6, 0x9160, 0x9749, 0x9CA5,\n    0xA9B4, 0xB500, 0xB95D, 0xBB26, 0xBC83, 0xBC83, 0xBC98, 0xBCBE,\n    0xBCE9, 0xBD0B, 0xBD18, 0xBD04, 0xBCC1, 0xBC41, 0xBB82, 0xBA8B,\n    0xB966, 0xB818, 0xB63F, 0xB3E8, 0xB1C9, 0xB002, 0xAE3D, 0xAC80,\n    0xAAD2, 0xA937, 0xA7B5, 0xA653, 0xA554, 0xA4C5, 0xA456, 0xA3B7,\n    0xA299, 0xA0AC, 0x98D1, 0x92DE, 0x9491, 0x96EA, 0x99EC, 0x9D9A,\n    0xA1F8, 0xA709, 0xACCF, 0xC383, 0xB2B9, 0xAD90, 0xADC4, 0xAF00,\n    0xB08C, 0xB2B1, 0xB59E, 0xB59E, 0xB59E, 0xB59E, 0xB59E, 0x8001,\n    0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x000A, 0x0025, 0x0047, 0x0069, 0x0084,\n    0x008F, 0x0081, 0x0054, 0x0000, 0xFF6D, 0xFE99, 0xFD98, 0xFC80,\n    0xFB66, 0xFA5F, 0xF981, 0xF8E0, 0xF867, 0xF7F5, 0xF790, 0xF741,\n    0xF70D, 0xF6FB, 0xF713, 0xF75B, 0xF7D9, 0xF888, 0xF959, 0xFA47,\n    0xFB4E, 0xFC67, 0xFD90, 0xFEC3, 0xFFFB, 0x0133, 0x0268, 0x0393,\n    0x04B1, 0x05BD, 0x06B1, 0x078A, 0x07EF, 0x07C8, 0x076F, 0x073D,\n    0x078A, 0x087E, 0x09DF, 0x0B6F, 0x0CF2, 0x0E2B, 0x0EDF, 0x0F6E,\n    0x0FAF, 0x0E9C, 0x0B2F, 0x0402, 0xF9F5, 0xEF6A, 0xE6C1, 0xE25F,\n    0xE162, 0xE147, 0xE1F6, 0xE359, 0xE558, 0xE7DD, 0xEACF, 0xEE19,\n    0xF1A2, 0xF554, 0xFA80, 0x01C8, 0x0A19, 0x125A, 0x1972, 0x1E4C,\n    0x1EFA, 0x1C24, 0x188B, 0x16F3, 0x18BD, 0x1C3A, 0x1F92, 0x20EF,\n    0x2066, 0x1F53, 0x1DD7, 0x1C0C, 0x1A11, 0x1803, 0x15FE, 0x1421,\n    0x1259, 0x1086, 0x0EA8, 0x0CC3, 0x0ADA, 0x08EF, 0x0705, 0x051E,\n    0x033D, 0x0165, 0xFF99, 0xFDDA, 0xFC2C, 0xFB2B, 0xFB79, 0xFC68,\n    0xFD53, 0xFE51, 0xFF76, 0x00D9, 0x0292, 0x04B6, 0x0B74, 0x110A,\n    0x10A9, 0x0F81, 0x0DC9, 0x0BB5, 0x097A, 0x074D, 0x0563, 0x03A0,\n    0x01D0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFF9, 0xFFE7,\n    0xFFD0, 0xFFB9, 0xFFA7, 0xFFA0, 0xFFA9, 0xFFC7, 0x0000, 0x0070,\n    0x0120, 0x01F6, 0x02D8, 0x03AB, 0x0457, 0x04C0, 0x04CE, 0x0474,\n    0x03C5, 0x02D8, 0x01C5, 0x00A3, 0xFF8A, 0xFE8E, 0xFDC7, 0xFD4E,\n    0xFD0D, 0xFCE1, 0xFCC6, 0xFCBB, 0xFCBD, 0xFCCA, 0xFCE0, 0xFCFC,\n    0xFD1D, 0xFD40, 0xFD62, 0xFD82, 0xFD9D, 0xFDB1, 0xFDBC, 0xFDA5,\n    0xFD71, 0xFD48, 0xFD53, 0xFDBC, 0xFE8B, 0xFF9D, 0x00DC, 0x0235,\n    0x038F, 0x04D6, 0x068B, 0x0898, 0x0A04, 0x09D8, 0x0784, 0x03BF,\n    0xFF7B, 0xFBA4, 0xF92C, 0xF7CE, 0xF6A3, 0xF5A9, 0xF4E0, 0xF446,\n    0xF3D8, 0xF397, 0xF37F, 0xF38F, 0xF3C7, 0xF492, 0xF627, 0xF832,\n    0xFA60, 0xFC5C, 0xFDD3, 0xFE30, 0xFDC6, 0xFD9E, 0xFEBE, 0x0255,\n    0x078A, 0x0C58, 0x0EBE, 0x0ED0, 0x0E1F, 0x0CDE, 0x0B3E, 0x0971,\n    0x07AA, 0x061A, 0x04F4, 0x0418, 0x0345, 0x027A, 0x01B8, 0x00FE,\n    0x004D, 0xFFA4, 0xFF03, 0xFE6A, 0xFDD9, 0xFD50, 0xFCCF, 0xFC55,\n    0xFD16, 0xFE10, 0xFDEC, 0xFD95, 0xFD23, 0xFCB0, 0xFC54, 0xFC27,\n    0xFC43, 0xFE5C, 0x009F, 0x0128, 0x018B, 0x01CD, 0x01F4, 0x0204,\n    0x0203, 0x01F7, 0x0193, 0x00C9, 0x0000, 0xFC62, 0xFC33, 0xFBAC,\n    0xFAD9, 0xF9C4, 0xF878, 0xF700, 0xF566, 0xF3B6, 0xF1F9, 0xF03A,\n    0xEE85, 0xECE4, 0xEB62, 0xEA09, 0xE8E4, 0xE7FF, 0xE762, 0xE71B,\n    0xE732, 0xE833, 0xEA71, 0xEDA2, 0xF17B, 0xF5B4, 0xFA01, 0xFE1A,\n    0x01B4, 0x0487, 0x06EE, 0x095B, 0x0BA3, 0x0D9A, 0x0F14, 0x0FE7,\n    0x0FE5, 0x0EE5, 0x0C8B, 0x08DB, 0x0438, 0xFF05, 0xF9A4, 0xF479,\n    0xEFE8, 0xEC52, 0xEA1C, 0xE8EC, 0xE821, 0xE7AF, 0xE78A, 0xE7A9,\n    0xE7FE, 0xE880, 0xE921, 0xE9D8, 0xEA98, 0xEB56, 0xEC07, 0xEC9F,\n    0xED13, 0xED58, 0xEDC9, 0xEE7A, 0xEEF3, 0xEEBA, 0xED58, 0xEA33,\n    0xE597, 0xE065, 0xDB7B, 0xD7BC, 0xD608, 0xD841, 0xDDF9, 0xE490,\n    0xE967, 0xEC5D, 0xEEEA, 0xF0D5, 0xF1E4, 0xF1DE, 0xF0D3, 0xEF1B,\n    0xECE6, 0xEA66, 0xE7CA, 0xE543, 0xE304, 0xE13B, 0xE01B, 0xDFD3,\n    0xE134, 0xE470, 0xE8C9, 0xED85, 0xF1E6, 0xF531, 0xF6E5, 0xF789,\n    0xF7EC, 0xF8DE, 0xFAE5, 0xFD79, 0xFFD0, 0x011C, 0x0193, 0x01E6,\n    0x020D, 0x0200, 0x01B7, 0x012A, 0x0051, 0xFF25, 0xFD95, 0xFBA6,\n    0xF96D, 0xF6FE, 0xF46D, 0xF1CF, 0xEF39, 0xECBD, 0xEA72, 0xE86B,\n    0xE6BC, 0xE57A, 0xE4B9, 0xED78, 0xF805, 0xFAC6, 0xFCD5, 0xFE4C,\n    0xFF45, 0xFFDC, 0x0028, 0x0046, 0xFC94, 0xF893, 0xF845, 0xF860,\n    0xF8C9, 0xF963, 0xFA10, 0xFAB4, 0xFB33, 0xFB96, 0xFBFC, 0xFC62,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0xFFE6, 0xFFA5, 0xFF51, 0xFEFC,\n    0xFEBB, 0xFEA1, 0xFEC1, 0xFF30, 0x0000, 0x016F, 0x0386, 0x060E,\n    0x08CD, 0x0B8B, 0x0E0E, 0x101F, 0x1184, 0x1264, 0x1308, 0x1370,\n    0x139B, 0x1389, 0x1338, 0x12A8, 0x11D8, 0x10C7, 0x0F2B, 0x0CE1,\n    0x0A21, 0x0724, 0x0422, 0x0154, 0xFEF3, 0xFD35, 0xFC30, 0xFBBB,\n    0xFBAE, 0xFBE4, 0xFC36, 0xFC7E, 0xFC96, 0xFCC7, 0xFD3B, 0xFD96,\n    0xFD7D, 0xFC96, 0xFAE4, 0xF8B8, 0xF626, 0xF345, 0xF02A, 0xECEA,\n    0xE7DF, 0xE154, 0xDC43, 0xDBA7, 0xE016, 0xE753, 0xF01A, 0xF928,\n    0x0139, 0x070B, 0x0AB0, 0x0D3F, 0x0EFE, 0x1032, 0x1120, 0x120D,\n    0x1340, 0x13FA, 0x13D4, 0x123C, 0x0EFA, 0x0BA2, 0x0832, 0x04AB,\n    0x010D, 0xFD59, 0xF8E7, 0xF418, 0xF071, 0xEE6E, 0xED38, 0xEC5B,\n    0xEB63, 0xEA28, 0xE8E2, 0xE7AD, 0xE6A3, 0xE5E1, 0xE57D, 0xE5AD,\n    0xE6BB, 0xE888, 0xEAB3, 0xED28, 0xEFCE, 0xF290, 0xF5A5, 0xF91F,\n    0xFCB7, 0x0023, 0x031D, 0x055B, 0x062D, 0x05AF, 0x04C7, 0x045B,\n    0x04A0, 0x051B, 0x05B0, 0x0640, 0x06AE, 0x06DB, 0x06AB, 0x0586,\n    0x0375, 0x0149, 0xFFD5, 0xFF62, 0xFF7D, 0xFFCF, 0x0000, 0x0003,\n    0x0002, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0008, 0x001D, 0x0037, 0x004E, 0x005B, 0x0058, 0x003B, 0x0000,\n    0xFF91, 0xFEED, 0xFE26, 0xFD50, 0xFC7D, 0xFBC0, 0xFB2D, 0xFAD6,\n    0xFACF, 0xFB2F, 0xFBF3, 0xFCFD, 0xFE33, 0xFF77, 0x00AE, 0x01BD,\n    0x0286, 0x030C, 0x0368, 0x03A4, 0x03C9, 0x03E1, 0x03F6, 0x0410,\n    0x0404, 0x03C4, 0x038A, 0x0391, 0x0410, 0x056D, 0x0789, 0x09DE,\n    0x0BE8, 0x0D1F, 0x0CFD, 0x09CF, 0x03EE, 0xFDE8, 0xFA47, 0xF960,\n    0xF98D, 0xFA6B, 0xFB95, 0xFCA7, 0xFD3D, 0xFD6B, 0xFD88, 0xFD94,\n    0xFD8E, 0xFD75, 0xFD49, 0xFD08, 0xFBDD, 0xFA98, 0xFB85, 0x0026,\n    0x058D, 0x0B21, 0x1048, 0x146A, 0x16ED, 0x146D, 0x0DD8, 0x090F,\n    0x0822, 0x088C, 0x0951, 0x0973, 0x0892, 0x0739, 0x05D2, 0x04C3,\n    0x0476, 0x05FE, 0x08DE, 0x0B24, 0x0CA0, 0x0E2B, 0x0F5B, 0x0FC7,\n    0x0F09, 0x0CC2, 0x0941, 0x0521, 0x00FB, 0xFD6A, 0xFB06, 0xFABC,\n    0xFC2F, 0xFE0F, 0xFF0B, 0xFF05, 0xFEC9, 0xFE63, 0xFDDF, 0xFD48,\n    0xFCAB, 0xFC13, 0xFB1E, 0xF9D1, 0xF8D2, 0xF8CA, 0xFA4A, 0xFCD9,\n    0xFF86, 0x0162, 0x0235, 0x0250, 0x019C, 0x0000, 0x0884, 0x0874,\n    0x0848, 0x0802, 0x07A7, 0x073A, 0x06C0, 0x063A, 0x05AE, 0x051F,\n    0x0490, 0x0405, 0x0383, 0x030B, 0x02A3, 0x024E, 0x020F, 0x01EB,\n    0x01E4, 0x01FF, 0x0260, 0x031E, 0x042A, 0x0574, 0x06ED, 0x0884,\n    0x0A2B, 0x0BD1, 0x0D67, 0x0F0A, 0x10D8, 0x12C2, 0x14BB, 0x16B4,\n    0x189F, 0x1A6D, 0x1C12, 0x1DC1, 0x1FA4, 0x2198, 0x237E, 0x2535,\n    0x269A, 0x278E, 0x27EF, 0x279D, 0x2645, 0x23DE, 0x20B4, 0x1D14,\n    0x194A, 0x15A2, 0x126A, 0x0FEC, 0x0E22, 0x0CC3, 0x0BB9, 0x0AEF,\n    0x0A50, 0x09C7, 0x093F, 0x089A, 0x07FB, 0x07AE, 0x0801, 0x093F,\n    0x0C08, 0x102E, 0x14D6, 0x1920, 0x1C2D, 0x1D21, 0x1992, 0x120B,\n    0x0A1F, 0x055D, 0x0439, 0x0471, 0x058B, 0x070B, 0x0876, 0x0951,\n    0x099A, 0x09B3, 0x09B5, 0x09B7, 0x09D4, 0x0A24, 0x0AC0, 0x0D34,\n    0x106A, 0x11AE, 0x0FB0, 0x0D6C, 0x0AFC, 0x087B, 0x0606, 0x03B8,\n    0x0158, 0xFF28, 0xFDF3, 0xFE68, 0xFFD7, 0x00FD, 0x009D, 0xFE15,\n    0xFA37, 0xF5F2, 0xF236, 0xEFF2, 0xF117, 0xF496, 0xF6E2, 0xF6AD,\n    0xF589, 0xF438, 0xF378, 0xF40C, 0xF616, 0xF905, 0xFC85, 0x0046,\n    0x03F6, 0x0743, 0x0A62, 0x0D7B, 0x102B, 0x120E, 0x1365, 0x14A4,\n    0x15B1, 0x1671, 0x16CA, 0x16A1, 0x15DD, 0x1313, 0x0E34, 0x092B,\n    0x05E4, 0x0523, 0x05CD, 0x06FD, 0x07CD, 0x0819, 0x0852, 0x0877,\n    0x0884, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xFFD4, 0xFF8A, 0xFF7C, 0x0000, 0x0174, 0x0395, 0x05D2,\n    0x0795, 0x084C, 0x082F, 0x07DB, 0x0755, 0x06A3, 0x05CA, 0x04CF,\n    0x03B8, 0x028B, 0x014B, 0x0000, 0xFE67, 0xFC59, 0xFA06, 0xF79E,\n    0xF550, 0xF34B, 0xF34B, 0xF34C, 0xF34D, 0xF34D, 0xF34D, 0xF34F,\n    0xF352, 0xF357, 0xF360, 0xF36C, 0xF37A, 0xF388, 0xF395, 0xF3A1,\n    0xF3A8, 0xF3AB, 0xF395, 0xF36B, 0xF352, 0xF360, 0xF383, 0xF3A5,\n    0xF3AE, 0xF389, 0xF269, 0xF0F0, 0xF12E, 0xF47E, 0xF977, 0xFE00,\n    0x0000, 0xFF8D, 0xFE40, 0xFC49, 0xF9D9, 0xF720, 0xF44D, 0xF191,\n    0xEB2C, 0xEFD6, 0xF68E, 0xFB6E, 0xFD1C, 0xFD76, 0xFD6F, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x003A, 0x009B, 0x00AF, 0x0000,\n    0xFE16, 0xFB46, 0xF854, 0xF601, 0xF50F, 0xF54C, 0xF5F5, 0xF6F4,\n    0xF832, 0xF999, 0xFB14, 0xFC8B, 0xFDE9, 0xFF17, 0x0000, 0x0092,\n    0x00DB, 0x00F2, 0x00F0, 0x00EC, 0x00FD, 0x00FD, 0x0328, 0x05D4,\n    0x08AE, 0x0B65, 0x0DA3, 0x0F17, 0x0F6E, 0x0E96, 0x0CDB, 0x0A75,\n    0x079C, 0x0488, 0x016F, 0xFE8C, 0xFC14, 0xF9DD, 0xF810, 0xF75F,\n    0xF7C3, 0xF8A6, 0xF9E2, 0xFB53, 0xFCD4, 0xFF0F, 0x01B8, 0x0342,\n    0x0307, 0x01EB, 0x00AA, 0x0000, 0xFFFA, 0x0021, 0x0069, 0x00C7,\n    0x012C, 0x018E, 0x01E0, 0x0229, 0x0220, 0x0205, 0x01B8, 0x0124,\n    0x0065, 0xFFA7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x40A1,\n    0x40A0, 0x409F, 0x409C, 0x4098, 0x4092, 0x408C, 0x4085, 0x407E,\n    0x4075, 0x406B, 0x4061, 0x4057, 0x404B, 0x4040, 0x4034, 0x4027,\n    0x401A, 0x400D, 0x3FFF, 0x3FF2, 0x3FE4, 0x3FD6, 0x3FC9, 0x3FBB,\n    0x3FAE, 0x3FA0, 0x3F93, 0x3F87, 0x3F7A, 0x3F6E, 0x3F63, 0x3F58,\n    0x3F4E, 0x3F44, 0x3F3B, 0x3F33, 0x3F2C, 0x3F25, 0x3F20, 0x3F1C,\n    0x3F18, 0x3F16, 0x3F15, 0x3F15, 0x3F17, 0x3F1A, 0x3F1E, 0x3F24,\n    0x3F2B, 0x3F34, 0x3F3F, 0x3F4B, 0x3F59, 0x3F69, 0x3F7B, 0x3F8E,\n    0x3FA4, 0x3FBC, 0x3FD6, 0x3FF2, 0x4010, 0x4031, 0x4054, 0x4079,\n    0x40A1, 0x4187, 0x438C, 0x4626, 0x48CA, 0x4AEE, 0x4C09, 0x4B49,\n    0x4904, 0x466C, 0x44B4, 0x440D, 0x43C9, 0x43C8, 0x43EE, 0x441D,\n    0x4454, 0x44A2, 0x4500, 0x4567, 0x45D1, 0x4637, 0x4693, 0x46DE,\n    0x4711, 0x4726, 0x4701, 0x469C, 0x460D, 0x456D, 0x44D2, 0x4455,\n    0x4455, 0x441C, 0x43E0, 0x43A1, 0x4360, 0x4320, 0x42E1, 0x42A4,\n    0x4259, 0x41F7, 0x418B, 0x4125, 0x40D3, 0x40A3, 0x40A4, 0x40E4,\n    0x429C, 0x456B, 0x46F7, 0x46BB, 0x45E8, 0x44B2, 0x434E, 0x41F0,\n    0x3FD8, 0x3D72, 0x3CB4, 0x3EA5, 0x4203, 0x4555, 0x4726, 0x4772,\n    0x4744, 0x46B6, 0x45E4, 0x44E8, 0x43DD, 0x42E0, 0x3FC4, 0x3F6C,\n    0x3F93, 0x3FCD, 0x3FF6, 0x402D, 0x4069, 0x40A1, 0x40A1, 0x40A1,\n    0x40A1, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_62.inc.c",
    "content": "static const struct Animation anim_62[] = {\n    1,\n    189,\n    0,\n    0,\n    0x0A,\n    ANIMINDEX_NUMPARTS(anim_62_indices),\n    anim_62_values,\n    anim_62_indices,\n    0,\n};\n\n\nstatic const u16 anim_62_indices[] = {\n    0x0001, 0x0000, 0x000A, 0x0001, 0x000A, 0x000B, 0x0001, 0x0000, 0x0001, 0x0015, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0169,\n    0x000A, 0x014B, 0x000A, 0x0155, 0x000A, 0x015F,\n    0x000A, 0x012D, 0x000A, 0x0137, 0x000A, 0x0141,\n    0x0001, 0x0129, 0x0001, 0x012A, 0x0001, 0x012B,\n    0x000A, 0x0035, 0x000A, 0x003F, 0x000A, 0x0049,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x002B,\n    0x000A, 0x0016, 0x000A, 0x0020, 0x0001, 0x002A,\n    0x0001, 0x0112, 0x0001, 0x0113, 0x0001, 0x0114,\n    0x000A, 0x0068, 0x000A, 0x0072, 0x000A, 0x007C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x005E,\n    0x000A, 0x0053, 0x0001, 0x0000, 0x0001, 0x005D,\n    0x0001, 0x0000, 0x000A, 0x0115, 0x000A, 0x011F,\n    0x000A, 0x00F4, 0x000A, 0x00FE, 0x000A, 0x0108,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x00EA,\n    0x000A, 0x00CC, 0x000A, 0x00D6, 0x000A, 0x00E0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x012C,\n    0x000A, 0x00AE, 0x000A, 0x00B8, 0x000A, 0x00C2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x00A4,\n    0x000A, 0x0086, 0x000A, 0x0090, 0x000A, 0x009A,\n};\n\nstatic const s16 anim_62_values[] = {\n    0x0000, 0x00AA, 0x00AC, 0x00AC, 0x00AB, 0x00AA, 0x00AB, 0x00AE,\n    0x00B1, 0x00AF, 0x00B0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FFF, 0x0000, 0xFC33,\n    0xF7DC, 0xF33C, 0xEE95, 0xEA28, 0xE637, 0xE303, 0xE0CD, 0xDFD6,\n    0xF97C, 0xFAC8, 0xFC44, 0xFDD9, 0xFF70, 0x00F2, 0x024B, 0x0363,\n    0x0425, 0x0479, 0xED8C, 0xCA4F, 0xC887, 0xC67F, 0xC454, 0xC227,\n    0xC014, 0xBE3C, 0xBCBB, 0xBBB2, 0xBB3F, 0xFB1D, 0xF9B5, 0xF81A,\n    0xF664, 0xF4AB, 0xF308, 0xF193, 0xF064, 0xEF92, 0xEF37, 0xD2DC,\n    0xD28B, 0xD22E, 0xD1CB, 0xD167, 0xD109, 0xD0B5, 0xD070, 0xD041,\n    0xD02C, 0xD4B4, 0xD357, 0xD1C9, 0xD022, 0xCE77, 0xCCE2, 0xCB79,\n    0xCA53, 0xC988, 0xC930, 0x0000, 0x00F6, 0x020F, 0x033B, 0x0468,\n    0x0587, 0x0687, 0x0756, 0x07E6, 0x0824, 0xF549, 0xC7DD, 0xC7D1,\n    0xC7C3, 0xC7B4, 0xC7A5, 0xC797, 0xC78A, 0xC780, 0xC778, 0xC775,\n    0x054B, 0xFF7C, 0xF8D9, 0xF1C7, 0xEAAA, 0xE3E7, 0xDDE0, 0xD8FA,\n    0xD598, 0xD41F, 0x2BD6, 0x2BA0, 0x2B63, 0x2B21, 0x2ADF, 0x2AA0,\n    0x2A68, 0x2A3A, 0x2A1B, 0x2A0D, 0xCCF6, 0xC1C6, 0xB500, 0xA765,\n    0x99B5, 0x8CB1, 0x8118, 0x77A7, 0x7126, 0x6E50, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xFFFF, 0x0000, 0x0008, 0x000E, 0x0000, 0x0000,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF28, 0xFF30, 0xFF59, 0xFF99,\n    0x0000, 0x0000, 0xC9D8, 0xC9D8, 0xC9D8, 0xC9D8, 0xCA8B, 0xC9D8,\n    0xC502, 0xC084, 0xC439, 0xC440, 0x1E4A, 0x1E4A, 0x1E4A, 0x1E4A,\n    0x1CFC, 0x1E4A, 0x2850, 0x2FAE, 0x1E09, 0x1DE6, 0x1B09, 0x1B09,\n    0x1B09, 0x1B09, 0x1BF5, 0x1B09, 0x15D3, 0x0EC0, 0x073F, 0x0730,\n    0x1144, 0x1144, 0x1144, 0x1144, 0x118C, 0x1144, 0x1071, 0x0D8D,\n    0x0348, 0x0334, 0xAC44, 0xAC44, 0xAC44, 0xAC44, 0xAD37, 0xAC44,\n    0xA5D1, 0x9F9E, 0xA37D, 0xA384, 0x0000, 0x02A5, 0x03FE, 0x04E3,\n    0x0535, 0x04E3, 0x0397, 0x0209, 0x00C8, 0x0005, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xFFFF, 0x0000, 0x000E, 0x001A, 0x000E, 0x0000,\n    0xBF40, 0xBE85, 0xBE25, 0xBDE6, 0xBE35, 0xBDE6, 0xBB22, 0xB84D,\n    0xB7A1, 0xB7C7, 0x2537, 0x2B69, 0x24ED, 0x1DDA, 0x1D01, 0x1DDA,\n    0x1DDA, 0x1DDA, 0x1DDA, 0x1DDA, 0xD64A, 0xDEDD, 0xE193, 0xE2E6,\n    0xE326, 0xE2E6, 0xE2E6, 0xE2E6, 0xE2E6, 0xE2E6, 0xEC41, 0xEED6,\n    0xF503, 0xFA83, 0xFB3E, 0xFA83, 0xFA83, 0xFA83, 0xFA83, 0xFA83,\n    0xB59E, 0xAA7E, 0xA988, 0xAA3E, 0xAA3A, 0xAA3E, 0xAA3E, 0xAA3E,\n    0xAA3E, 0xAA3E, 0x8001, 0x8001, 0x4171, 0x0000, 0xFEBA, 0xFE14,\n    0xFDA6, 0xFD94, 0xFDA6, 0xFDA6, 0xFDA6, 0xFDA6, 0xFDA6, 0xBF5F,\n    0xC310, 0xC4F1, 0xC630, 0xC662, 0xC630, 0xC630, 0xC630, 0xC630,\n    0xC630, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x0000, 0x0268, 0x0528,\n    0x0815, 0x0B07, 0x0DD5, 0x1054, 0x125B, 0x13C2, 0x145E, 0x0000,\n    0xFF4A, 0xFE79, 0xFD9B, 0xFCBB, 0xFBE7, 0xFB29, 0xFA8F, 0xFA25,\n    0xF9F6, 0xFC62, 0xFE06, 0xFFE5, 0x01E3, 0x03E4, 0x05CD, 0x0780,\n    0x08E2, 0x09D6, 0x0A41, 0x0000, 0x01B3, 0x03A4, 0x05B5, 0x07C9,\n    0x09C4, 0x0B87, 0x0CF6, 0x0DF3, 0x0E61, 0x0000, 0xFF32, 0xFE46,\n    0xFD4A, 0xFC4D, 0xFB5C, 0xFA86, 0xF9D8, 0xF95F, 0xF92B, 0x0884,\n    0x0AB8, 0x0D3D, 0x0FEB, 0x129E, 0x152E, 0x1778, 0x1953, 0x1A9C,\n    0x1B2A, 0x40A1, 0x41BF, 0x4306, 0x4462, 0x45C1, 0x470E, 0x4837,\n    0x4928, 0x49CE, 0x4A17,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_63.inc.c",
    "content": "static const struct Animation anim_63[] = {\n    0,\n    189,\n    0,\n    0,\n    0x21,\n    ANIMINDEX_NUMPARTS(anim_63_indices),\n    anim_63_values,\n    anim_63_indices,\n    0,\n};\n\n\nstatic const u16 anim_63_indices[] = {\n    0x0001, 0x0000, 0x0021, 0x0001, 0x0021, 0x0022, 0x0001, 0x0000, 0x0001, 0x0043, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x032C,\n    0x0021, 0x02C9, 0x0021, 0x02EA, 0x0021, 0x030B,\n    0x0021, 0x0266, 0x0021, 0x0287, 0x0021, 0x02A8,\n    0x0001, 0x0262, 0x0001, 0x0263, 0x0001, 0x0264,\n    0x0001, 0x00C8, 0x0001, 0x00C9, 0x0001, 0x00CA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0021, 0x00A7,\n    0x0021, 0x0044, 0x0021, 0x0065, 0x0021, 0x0086,\n    0x0001, 0x025D, 0x0001, 0x025E, 0x0001, 0x025F,\n    0x0001, 0x00EE, 0x0001, 0x00EF, 0x0001, 0x00F0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0021, 0x00CD,\n    0x0001, 0x00CB, 0x0001, 0x0000, 0x0001, 0x00CC,\n    0x0001, 0x0000, 0x0001, 0x0260, 0x0001, 0x0261,\n    0x0021, 0x01FA, 0x0021, 0x021B, 0x0021, 0x023C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0021, 0x01D9,\n    0x0021, 0x0176, 0x0021, 0x0197, 0x0021, 0x01B8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0265,\n    0x0021, 0x0113, 0x0021, 0x0134, 0x0021, 0x0155,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0021, 0x00F2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00F1,\n};\n\nstatic const s16 anim_63_values[] = {\n    0x0000, 0x00B0, 0x00B0, 0x00AF, 0x00AE, 0x00AE, 0x00AD, 0x00AE,\n    0x00AF, 0x00AF, 0x00B0, 0x00B1, 0x00B0, 0x00AF, 0x00AE, 0x00AD,\n    0x00AD, 0x00AD, 0x00AE, 0x00AF, 0x00AF, 0x00B0, 0x00AF, 0x00AF,\n    0x00AE, 0x00AD, 0x00AD, 0x00AD, 0x00AE, 0x00AF, 0x00B0, 0x00B0,\n    0x00B0, 0x00B0, 0x0000, 0x0000, 0xFFFE, 0xFFFC, 0xFFFA, 0xFFF9,\n    0xFFFA, 0xFFFC, 0xFFFE, 0x0000, 0x0000, 0x0000, 0xFFFD, 0xFFFB,\n    0xFFF9, 0xFFF8, 0xFFF9, 0xFFFB, 0xFFFD, 0x0000, 0x0000, 0x0000,\n    0xFFFF, 0xFFFE, 0xFFFC, 0xFFFB, 0xFFFB, 0xFFFC, 0xFFFF, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x3FFF, 0xDFD1, 0xE004, 0xE093, 0xE16C,\n    0xE27F, 0xE3B8, 0xE509, 0xE65E, 0xE7A8, 0xE8D4, 0xE9D1, 0xEA8F,\n    0xEAFB, 0xEB07, 0xEABC, 0xEA2B, 0xE965, 0xE87D, 0xE785, 0xE68D,\n    0xE5A8, 0xE4E8, 0xE42F, 0xE35F, 0xE287, 0xE1B4, 0xE0F7, 0xE05D,\n    0xDFF6, 0xDFD1, 0xDFD1, 0xDFD1, 0xDFD1, 0x047B, 0x0467, 0x042F,\n    0x03DA, 0x036F, 0x02F5, 0x0271, 0x01EC, 0x016B, 0x00F6, 0x0093,\n    0x0049, 0x001F, 0x001A, 0x0038, 0x0070, 0x00BE, 0x0118, 0x0179,\n    0x01DA, 0x0233, 0x027E, 0x02C6, 0x0317, 0x036C, 0x03BE, 0x0408,\n    0x0444, 0x046C, 0x047B, 0x047B, 0x047B, 0x047B, 0xED8C, 0xED78,\n    0xED41, 0xECED, 0xEC84, 0xEC0B, 0xEB8A, 0xEB07, 0xEA88, 0xEA14,\n    0xE9B3, 0xE96A, 0xE940, 0xE93C, 0xE959, 0xE991, 0xE9DD, 0xEA36,\n    0xEA95, 0xEAF5, 0xEB4D, 0xEB96, 0xEBDD, 0xEC2D, 0xEC81, 0xECD2,\n    0xED1A, 0xED56, 0xED7D, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xBB3C,\n    0xBB16, 0xBAB4, 0xBA30, 0xB9A4, 0xB928, 0xB8D7, 0xB8CA, 0xB922,\n    0xB9D2, 0xBAB3, 0xBB99, 0xBC5D, 0xBCD5, 0xBCD7, 0xBC4A, 0xBB4A,\n    0xBA00, 0xB893, 0xB72D, 0xB5F4, 0xB512, 0xB4AE, 0xB4CB, 0xB540,\n    0xB5F7, 0xB6DC, 0xB7D9, 0xB8D8, 0xB9C3, 0xBA86, 0xBB0B, 0xBB3C,\n    0xEF35, 0xD02C, 0xC92E, 0x0826, 0xF549, 0xC775, 0xC7A0, 0xC808,\n    0xC88B, 0xC904, 0xC94F, 0xC94B, 0xC8BF, 0xC7BF, 0xC697, 0xC595,\n    0xC503, 0xC50F, 0xC584, 0xC622, 0xC6A6, 0xC6CF, 0xC669, 0xC59E,\n    0xC4BE, 0xC419, 0xC3FD, 0xC4AD, 0xC5F3, 0xC76D, 0xC8B8, 0xC972,\n    0xC984, 0xC936, 0xC8B0, 0xC81D, 0xC7A6, 0xC775, 0xD417, 0x2A0D,\n    0x6E40, 0xC439, 0x1E09, 0x1E6B, 0x1F53, 0x2069, 0x2152, 0x21B4,\n    0x2152, 0x2069, 0x1F53, 0x1E6B, 0x1E09, 0x1E6B, 0x1F53, 0x2069,\n    0x2152, 0x21B4, 0x2152, 0x2069, 0x1F53, 0x1E6B, 0x1E09, 0x1E6B,\n    0x1F53, 0x2069, 0x2152, 0x21B4, 0x2180, 0x20FA, 0x2042, 0x1F7A,\n    0x1EC3, 0x1E3D, 0x1E09, 0x073F, 0x0738, 0x0726, 0x0710, 0x06FE,\n    0x06F7, 0x06FE, 0x0710, 0x0726, 0x0738, 0x073F, 0x0738, 0x0726,\n    0x0710, 0x06FE, 0x06F7, 0x06FE, 0x0710, 0x0726, 0x0738, 0x073F,\n    0x0738, 0x0726, 0x0710, 0x06FE, 0x06F7, 0x06FB, 0x0705, 0x0713,\n    0x0723, 0x0731, 0x073B, 0x073F, 0x0348, 0x0357, 0x037B, 0x03A6,\n    0x03CA, 0x03D9, 0x03CA, 0x03A6, 0x037B, 0x0357, 0x0348, 0x0357,\n    0x037B, 0x03A6, 0x03CA, 0x03D9, 0x03CA, 0x03A6, 0x037B, 0x0357,\n    0x0348, 0x0357, 0x037B, 0x03A6, 0x03CA, 0x03D9, 0x03D1, 0x03BC,\n    0x03A0, 0x0381, 0x0365, 0x0350, 0x0348, 0xA37D, 0xA327, 0xA25A,\n    0xA166, 0xA099, 0xA044, 0xA099, 0xA166, 0xA25A, 0xA327, 0xA37D,\n    0xA327, 0xA25A, 0xA166, 0xA099, 0xA044, 0xA099, 0xA166, 0xA25A,\n    0xA327, 0xA37D, 0xA327, 0xA25A, 0xA166, 0xA099, 0xA044, 0xA071,\n    0xA0E7, 0xA188, 0xA238, 0xA2D9, 0xA34F, 0xA37D, 0x0000, 0x0036,\n    0x00B7, 0x0151, 0x01D2, 0x0209, 0x01D2, 0x0151, 0x00B7, 0x0036,\n    0x0000, 0x0036, 0x00B7, 0x0151, 0x01D2, 0x0209, 0x01E2, 0x0181,\n    0x0104, 0x0087, 0x0026, 0x0000, 0x0036, 0x00B7, 0x0151, 0x01D2,\n    0x0209, 0x01E2, 0x0181, 0x0104, 0x0087, 0x0026, 0x0000, 0x0000,\n    0x0002, 0x0008, 0x000E, 0x0014, 0x0016, 0x0014, 0x000E, 0x0008,\n    0x0002, 0x0000, 0x0002, 0x0008, 0x000E, 0x0014, 0x0016, 0x0015,\n    0x0010, 0x000B, 0x0005, 0x0001, 0x0000, 0x0002, 0x0008, 0x000E,\n    0x0014, 0x0016, 0x0015, 0x0010, 0x000B, 0x0005, 0x0001, 0x0000,\n    0xB7C9, 0xB793, 0xB712, 0xB678, 0xB5F6, 0xB5C0, 0xB5F6, 0xB678,\n    0xB712, 0xB793, 0xB7C9, 0xB793, 0xB712, 0xB678, 0xB5F6, 0xB5C0,\n    0xB5E7, 0xB647, 0xB6C5, 0xB742, 0xB7A3, 0xB7C9, 0xB793, 0xB712,\n    0xB678, 0xB5F6, 0xB5C0, 0xB5E7, 0xB647, 0xB6C5, 0xB742, 0xB7A3,\n    0xB7C9, 0x1DDA, 0x1E67, 0x1FB7, 0x2148, 0x2299, 0x2326, 0x2299,\n    0x2148, 0x1FB7, 0x1E67, 0x1DDA, 0x1E67, 0x1FB7, 0x2148, 0x2299,\n    0x2326, 0x22C1, 0x21C6, 0x2080, 0x1F39, 0x1E3E, 0x1DDA, 0x1E67,\n    0x1FB7, 0x2148, 0x2299, 0x2326, 0x22C1, 0x21C6, 0x2080, 0x1F39,\n    0x1E3E, 0x1DDA, 0xE2E6, 0xE29E, 0xE1F3, 0xE126, 0xE07B, 0xE033,\n    0xE07B, 0xE126, 0xE1F3, 0xE29E, 0xE2E6, 0xE29E, 0xE1F3, 0xE126,\n    0xE07B, 0xE033, 0xE066, 0xE0E6, 0xE18C, 0xE233, 0xE2B3, 0xE2E6,\n    0xE29E, 0xE1F3, 0xE126, 0xE07B, 0xE033, 0xE066, 0xE0E6, 0xE18C,\n    0xE233, 0xE2B3, 0xE2E6, 0xFA83, 0xFA6D, 0xFA3A, 0xF9FD, 0xF9C9,\n    0xF9B4, 0xF9C9, 0xF9FD, 0xFA3A, 0xFA6D, 0xFA83, 0xFA6D, 0xFA3A,\n    0xF9FD, 0xF9C9, 0xF9B4, 0xF9C3, 0xF9E9, 0xFA1B, 0xFA4D, 0xFA73,\n    0xFA83, 0xFA6D, 0xFA3A, 0xF9FD, 0xF9C9, 0xF9B4, 0xF9C3, 0xF9E9,\n    0xFA1B, 0xFA4D, 0xFA73, 0xFA83, 0xAA3E, 0xA9EB, 0xA927, 0xA83C,\n    0xA777, 0xA724, 0xA777, 0xA83C, 0xA927, 0xA9EB, 0xAA3E, 0xA9EB,\n    0xA927, 0xA83C, 0xA777, 0xA724, 0xA75F, 0xA7F2, 0xA8B1, 0xA970,\n    0xAA03, 0xAA3E, 0xA9EB, 0xA927, 0xA83C, 0xA777, 0xA724, 0xA75F,\n    0xA7F2, 0xA8B1, 0xA970, 0xAA03, 0xAA3E, 0x8001, 0x8001, 0x4171,\n    0xFDA6, 0xC630, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x1461, 0x1448,\n    0x1400, 0x1392, 0x1306, 0x1263, 0x11B0, 0x10F6, 0x103C, 0x0F89,\n    0x0EE6, 0x0E5A, 0x0DEC, 0x0DA5, 0x0D8B, 0x0D9B, 0x0DC7, 0x0E0D,\n    0x0E68, 0x0ED5, 0x0F51, 0x0FD7, 0x1065, 0x10F6, 0x1187, 0x1215,\n    0x129B, 0x1317, 0x1384, 0x13DF, 0x1425, 0x1451, 0x1461, 0xF9F5,\n    0xF9F8, 0xFA01, 0xFA0E, 0xFA1F, 0xFA33, 0xFA48, 0xFA5F, 0xFA75,\n    0xFA8B, 0xFA9E, 0xFAAF, 0xFABD, 0xFAC5, 0xFAC8, 0xFAC6, 0xFAC1,\n    0xFAB9, 0xFAAE, 0xFAA0, 0xFA92, 0xFA81, 0xFA70, 0xFA5F, 0xFA4D,\n    0xFA3C, 0xFA2C, 0xFA1D, 0xFA10, 0xFA05, 0xF9FD, 0xF9F7, 0xF9F5,\n    0x0A43, 0x0A36, 0x0A10, 0x09D6, 0x098C, 0x0936, 0x08D8, 0x0875,\n    0x0813, 0x07B5, 0x075F, 0x0715, 0x06DB, 0x06B5, 0x06A8, 0x06B0,\n    0x06C7, 0x06EC, 0x071C, 0x0756, 0x0797, 0x07DE, 0x0829, 0x0875,\n    0x08C2, 0x090D, 0x0954, 0x0995, 0x09CF, 0x09FF, 0x0A24, 0x0A3B,\n    0x0A43, 0x0E64, 0x0E59, 0x0E41, 0x0E29, 0x0E1F, 0x0E29, 0x0E41,\n    0x0E59, 0x0E64, 0x0E59, 0x0E41, 0x0E29, 0x0E1F, 0x0E29, 0x0E41,\n    0x0E59, 0x0E64, 0x0E59, 0x0E41, 0x0E29, 0x0E1F, 0x0E29, 0x0E41,\n    0x0E59, 0x0E64, 0x0E59, 0x0E41, 0x0E29, 0x0E1F, 0x0E29, 0x0E41,\n    0x0E59, 0x0E64, 0xF92A, 0xF914, 0xF8E2, 0xF8B1, 0xF89B, 0xF8B1,\n    0xF8E2, 0xF914, 0xF92A, 0xF914, 0xF8E2, 0xF8B1, 0xF89B, 0xF8B1,\n    0xF8E2, 0xF914, 0xF92A, 0xF914, 0xF8E2, 0xF8B1, 0xF89B, 0xF8B1,\n    0xF8E2, 0xF914, 0xF92A, 0xF914, 0xF8E2, 0xF8B1, 0xF89B, 0xF8B1,\n    0xF8E2, 0xF914, 0xF92A, 0x1B2E, 0x1B6C, 0x1BF5, 0x1C7D, 0x1CBC,\n    0x1C7D, 0x1BF5, 0x1B6C, 0x1B2E, 0x1B6C, 0x1BF5, 0x1C7D, 0x1CBC,\n    0x1C7D, 0x1BF5, 0x1B6C, 0x1B2E, 0x1B6C, 0x1BF5, 0x1C7D, 0x1CBC,\n    0x1C7D, 0x1BF5, 0x1B6C, 0x1B2E, 0x1B6C, 0x1BF5, 0x1C7D, 0x1CBC,\n    0x1C7D, 0x1BF5, 0x1B6C, 0x1B2E, 0x4A19,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_64.inc.c",
    "content": "static const struct Animation anim_64[] = {\n    0,\n    189,\n    0,\n    0,\n    0x12,\n    ANIMINDEX_NUMPARTS(anim_64_indices),\n    anim_64_values,\n    anim_64_indices,\n    0,\n};\n\n\nstatic const u16 anim_64_indices[] = {\n    0x0001, 0x0000, 0x0012, 0x0001, 0x0012, 0x0013, 0x0001, 0x0000, 0x0001, 0x0025, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x025D,\n    0x0012, 0x0227, 0x0012, 0x0239, 0x0012, 0x024B,\n    0x0012, 0x01F1, 0x0012, 0x0203, 0x0012, 0x0215,\n    0x0001, 0x01ED, 0x0001, 0x01EE, 0x0001, 0x01EF,\n    0x0012, 0x005D, 0x0012, 0x006F, 0x0012, 0x0081,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x004B,\n    0x0012, 0x0026, 0x0012, 0x0038, 0x0001, 0x004A,\n    0x0001, 0x01C6, 0x0001, 0x01C7, 0x0001, 0x01C8,\n    0x0012, 0x00B8, 0x0012, 0x00CA, 0x0012, 0x00DC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x00A6,\n    0x0012, 0x0093, 0x0001, 0x0000, 0x0001, 0x00A5,\n    0x0001, 0x0000, 0x0012, 0x01C9, 0x0012, 0x01DB,\n    0x0012, 0x0190, 0x0012, 0x01A2, 0x0012, 0x01B4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x017E,\n    0x0012, 0x015A, 0x0001, 0x0000, 0x0012, 0x016C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01F0,\n    0x0012, 0x0124, 0x0012, 0x0136, 0x0012, 0x0148,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x0112,\n    0x0001, 0x0000, 0x0012, 0x00EE, 0x0012, 0x0100,\n};\n\nstatic const s16 anim_64_values[] = {\n    0x0000, 0x00B0, 0x00B0, 0x00AF, 0x00AE, 0x00AD, 0x00AD, 0x00AD,\n    0x00AE, 0x00AF, 0x00AE, 0x00AC, 0x00AB, 0x00AB, 0x00AC, 0x00AC,\n    0x00AC, 0x00AB, 0x00AA, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FFF, 0xDFD1, 0xE008,\n    0xE0A6, 0xE1A1, 0xE2F0, 0xE488, 0xE660, 0xE86D, 0xEAA5, 0xECFF,\n    0xEF71, 0xF1F0, 0xF474, 0xF6F1, 0xF95E, 0xFBB1, 0xFDDF, 0xFFE0,\n    0x047B, 0x0468, 0x0432, 0x03DC, 0x036A, 0x02DE, 0x023D, 0x018A,\n    0x00C7, 0xFFFB, 0xFF25, 0xFE4A, 0xFD6E, 0xFC95, 0xFBC0, 0xFAF5,\n    0xFA36, 0xF987, 0xED8C, 0xBB3C, 0xBB56, 0xBBA0, 0xBC16, 0xBCB2,\n    0xBD72, 0xBE4E, 0xBF44, 0xC04F, 0xC169, 0xC28E, 0xC3B9, 0xC4E6,\n    0xC611, 0xC734, 0xC84A, 0xC950, 0xCA40, 0xEF35, 0xEF49, 0xEF84,\n    0xEFE1, 0xF05D, 0xF0F4, 0xF1A2, 0xF264, 0xF337, 0xF415, 0xF4FD,\n    0xF5E9, 0xF6D7, 0xF7C3, 0xF8A9, 0xF985, 0xFA53, 0xFB11, 0xD02C,\n    0xD030, 0xD03E, 0xD053, 0xD06E, 0xD091, 0xD0B8, 0xD0E4, 0xD113,\n    0xD146, 0xD17A, 0xD1AF, 0xD1E5, 0xD21A, 0xD24E, 0xD280, 0xD2AE,\n    0xD2D9, 0xC92E, 0xC942, 0xC97A, 0xC9D4, 0xCA4C, 0xCADE, 0xCB87,\n    0xCC43, 0xCD0E, 0xCDE6, 0xCEC6, 0xCFAB, 0xD091, 0xD175, 0xD253,\n    0xD328, 0xD3F0, 0xD4A8, 0x0826, 0x0818, 0x07F0, 0x07B0, 0x075B,\n    0x06F4, 0x067C, 0x05F8, 0x0568, 0x04CF, 0x0431, 0x038F, 0x02EC,\n    0x024B, 0x01AE, 0x0117, 0x008A, 0x0008, 0xF549, 0xC775, 0xC776,\n    0xC778, 0xC77B, 0xC77F, 0xC784, 0xC78A, 0xC791, 0xC798, 0xC7A0,\n    0xC7A8, 0xC7B0, 0xC7B8, 0xC7C0, 0xC7C8, 0xC7CF, 0xC7D7, 0xC7DD,\n    0xD417, 0xD46B, 0xD55C, 0xD6DD, 0xD8DC, 0xDB4C, 0xDE1D, 0xE140,\n    0xE4A5, 0xE83E, 0xEBFB, 0xEFCC, 0xF3A4, 0xF772, 0xFB27, 0xFEB5,\n    0x020A, 0x051A, 0x2A0D, 0x2A10, 0x2A19, 0x2A27, 0x2A39, 0x2A50,\n    0x2A6A, 0x2A87, 0x2AA7, 0x2AC8, 0x2AEB, 0x2B0E, 0x2B32, 0x2B55,\n    0x2B78, 0x2B99, 0x2BB8, 0x2BD4, 0x6E40, 0x6EE2, 0x70B3, 0x7397,\n    0x7770, 0x7C20, 0x818F, 0x8797, 0x8E20, 0x950B, 0x9C3D, 0xA396,\n    0xAAFB, 0xB24D, 0xB970, 0xC046, 0xC6B2, 0xCC97, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0xFFF1, 0xFFCA, 0xFF98, 0xFF66,\n    0xFF3F, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xC439, 0xC439, 0xC439, 0xC439, 0xC439, 0xC439, 0xC4A3, 0xC5AE,\n    0xC708, 0xC863, 0xC96D, 0xC9D8, 0xC9D8, 0xC9D8, 0xC9D8, 0xC9D8,\n    0xC9D8, 0xC9D8, 0x1E09, 0x1E09, 0x1E09, 0x1E09, 0x1E09, 0x1E09,\n    0x1E0E, 0x1E1A, 0x1E29, 0x1E39, 0x1E45, 0x1E4A, 0x1E4A, 0x1E4A,\n    0x1E4A, 0x1E4A, 0x1E4A, 0x1E4A, 0x073F, 0x073F, 0x073F, 0x073F,\n    0x073F, 0x073F, 0x08B6, 0x0C60, 0x1124, 0x15E7, 0x1992, 0x1B09,\n    0x1B09, 0x1B09, 0x1B09, 0x1B09, 0x1B09, 0x1B09, 0x0348, 0x0348,\n    0x0348, 0x0348, 0x0348, 0x0348, 0x0451, 0x06E8, 0x0A46, 0x0DA4,\n    0x103B, 0x1144, 0x1144, 0x1144, 0x1144, 0x1144, 0x1144, 0x1144,\n    0xA37D, 0xA37D, 0xA37D, 0xA37D, 0xA37D, 0xA37D, 0xA423, 0xA5C3,\n    0xA7E0, 0xA9FD, 0xAB9D, 0xAC44, 0xAC44, 0xAC44, 0xAC44, 0xAC44,\n    0xAC44, 0xAC44, 0x0000, 0x001D, 0x006D, 0x00E4, 0x0178, 0x021C,\n    0x02C6, 0x036B, 0x03FF, 0x0476, 0x04C6, 0x04E3, 0x04A5, 0x0400,\n    0x0316, 0x020A, 0x00FB, 0x000D, 0xB7C9, 0xB7E4, 0xB830, 0xB8A4,\n    0xB938, 0xB9E2, 0xBA9B, 0xBB5A, 0xBC16, 0xBCC7, 0xBD65, 0xBDE6,\n    0xBE45, 0xBE89, 0xBEBB, 0xBEE4, 0xBF0C, 0xBF3D, 0x1DDA, 0x1DDA,\n    0x1DDA, 0x1DDA, 0x1DDA, 0x1DDA, 0x1DDA, 0x1DDA, 0x1DDA, 0x1DDA,\n    0x1DDA, 0x1DDA, 0x1E38, 0x1F30, 0x2090, 0x2224, 0x23BB, 0x2522,\n    0xE2E6, 0xE2E6, 0xE2E6, 0xE2E6, 0xE2E6, 0xE2E6, 0xE2E6, 0xE2E6,\n    0xE2E6, 0xE2E6, 0xE2E6, 0xE2E6, 0xE245, 0xE09C, 0xDE42, 0xDB8D,\n    0xD8D4, 0xD66E, 0xFA83, 0xFA83, 0xFA83, 0xFA83, 0xFA83, 0xFA83,\n    0xFA83, 0xFA83, 0xFA83, 0xFA83, 0xFA83, 0xFA83, 0xF9CD, 0xF7EC,\n    0xF543, 0xF233, 0xEF20, 0xEC69, 0xAA3E, 0xAA3E, 0xAA3E, 0xAA3E,\n    0xAA3E, 0xAA3E, 0xAA3E, 0xAA3E, 0xAA3E, 0xAA3E, 0xAA3E, 0xAA3E,\n    0xAACF, 0xAC4F, 0xAE6E, 0xB0DF, 0xB354, 0xB57E, 0x8001, 0x8001,\n    0x4171, 0xFDA6, 0xFDA6, 0xFDA6, 0xFDA6, 0xFDA6, 0xFDA6, 0xFDA6,\n    0xFDA6, 0xFDA6, 0xFDA6, 0xFDA6, 0xFDA6, 0xFDC4, 0xFE13, 0xFE83,\n    0xFF05, 0xFF87, 0xFFFA, 0xC630, 0xC630, 0xC630, 0xC630, 0xC630,\n    0xC630, 0xC630, 0xC630, 0xC630, 0xC630, 0xC630, 0xC630, 0xC5D9,\n    0xC4F3, 0xC3AD, 0xC237, 0xC0BE, 0xBF72, 0x8001, 0x8001, 0x4171,\n    0xBF5F, 0x1461, 0x143E, 0x13DA, 0x133B, 0x1267, 0x1165, 0x103A,\n    0x0EEE, 0x0D86, 0x0C08, 0x0A7C, 0x08E7, 0x0750, 0x05BC, 0x0433,\n    0x02BB, 0x0159, 0x0014, 0xF9F5, 0xFA00, 0xFA1D, 0xFA4D, 0xFA8B,\n    0xFAD8, 0xFB31, 0xFB93, 0xFBFE, 0xFC6F, 0xFCE4, 0xFD5D, 0xFDD5,\n    0xFE4D, 0xFEC2, 0xFF31, 0xFF9A, 0xFFFA, 0x0A43, 0x0A2C, 0x09E7,\n    0x097B, 0x08EA, 0x083A, 0x076F, 0x068D, 0x0597, 0x0494, 0x0386,\n    0x0272, 0x015C, 0x0049, 0xFF3F, 0xFE3E, 0xFD4D, 0xFC70, 0x0E64,\n    0x0E4B, 0x0E04, 0x0D94, 0x0CFE, 0x0C48, 0x0B75, 0x0A8A, 0x098C,\n    0x087F, 0x0767, 0x0649, 0x052A, 0x040D, 0x02F7, 0x01ED, 0x00F3,\n    0x000E, 0xF92A, 0xF936, 0xF957, 0xF98D, 0xF9D4, 0xFA2A, 0xFA8F,\n    0xFAFE, 0xFB77, 0xFBF7, 0xFC7C, 0xFD04, 0xFD8C, 0xFE14, 0xFE98,\n    0xFF16, 0xFF8D, 0xFFFA, 0x1B2E, 0x1B0E, 0x1AB2, 0x1A20, 0x195E,\n    0x1872, 0x1760, 0x1630, 0x14E6, 0x1389, 0x121E, 0x10AB, 0x0F36,\n    0x0DC5, 0x0C5D, 0x0B04, 0x09C0, 0x0896, 0x4A19, 0x4A08, 0x49DA,\n    0x4990, 0x492E, 0x48B6, 0x482B, 0x4790, 0x46E9, 0x4638, 0x4580,\n    0x44C4, 0x4407, 0x434B, 0x4295, 0x41E6, 0x4141, 0x40AB,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_65.inc.c",
    "content": "static const struct Animation anim_65[] = {\n    1,\n    189,\n    0,\n    0,\n    0x15,\n    ANIMINDEX_NUMPARTS(anim_65_indices),\n    anim_65_values,\n    anim_65_indices,\n    0,\n};\n\n\nstatic const u16 anim_65_indices[] = {\n    0x0015, 0x0001, 0x0015, 0x0016, 0x0015, 0x002B, 0x0001, 0x0000, 0x0001, 0x0040, 0x0001, 0x0000,\n    0x0015, 0x0313, 0x0015, 0x0328, 0x0015, 0x033D,\n    0x0015, 0x02D4, 0x0015, 0x02E9, 0x0015, 0x02FE,\n    0x0015, 0x0295, 0x0015, 0x02AA, 0x0015, 0x02BF,\n    0x0001, 0x0291, 0x0001, 0x0292, 0x0001, 0x0293,\n    0x0015, 0x0095, 0x0015, 0x00AA, 0x0015, 0x00BF,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0015, 0x0080,\n    0x0015, 0x0041, 0x0015, 0x0056, 0x0015, 0x006B,\n    0x0001, 0x028D, 0x0001, 0x028E, 0x0001, 0x028F,\n    0x0015, 0x0128, 0x0015, 0x013D, 0x0015, 0x0152,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0015, 0x0113,\n    0x0015, 0x00D4, 0x0015, 0x00E9, 0x0015, 0x00FE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0290,\n    0x0015, 0x024E, 0x0015, 0x0263, 0x0015, 0x0278,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0015, 0x0239,\n    0x0015, 0x01FA, 0x0015, 0x020F, 0x0015, 0x0224,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0294,\n    0x0015, 0x01BB, 0x0015, 0x01D0, 0x0015, 0x01E5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0015, 0x01A6,\n    0x0015, 0x0167, 0x0015, 0x017C, 0x0015, 0x0191,\n};\n\nstatic const s16 anim_65_values[] = {\n    0x0000, 0x000F, 0x000D, 0x0009, 0x0006, 0x0004, 0x0005, 0x0012,\n    0x0025, 0x002C, 0x0024, 0x0015, 0x0004, 0xFFF5, 0xFFE9, 0xFFEB,\n    0xFFF4, 0xFFF7, 0xFFFB, 0xFFFE, 0x0000, 0x0000, 0x0090, 0x0093,\n    0x009A, 0x00A4, 0x00AD, 0x00B4, 0x00B9, 0x00BC, 0x00BD, 0x00BA,\n    0x00B7, 0x00B3, 0x00AF, 0x00AC, 0x00AC, 0x00AD, 0x00AD, 0x00AC,\n    0x00AB, 0x00AA, 0x00AA, 0xFF6E, 0xFF73, 0xFF7F, 0xFF8F, 0xFFA0,\n    0xFFAC, 0xFFB3, 0xFFB7, 0xFFBD, 0xFFC5, 0xFFCF, 0xFFD9, 0xFFE3,\n    0xFFEC, 0xFFF1, 0xFFF4, 0xFFF7, 0xFFFB, 0xFFFE, 0x0000, 0x0000,\n    0x3FFF, 0xD385, 0xD37A, 0xD36A, 0xD36F, 0xD3A2, 0xD41C, 0xD4F7,\n    0xD64B, 0xD832, 0xDAD9, 0xDE3C, 0xE22B, 0xE679, 0xEAF4, 0xEF70,\n    0xF3BB, 0xF7A9, 0xFB09, 0xFDAC, 0xFF63, 0x0000, 0xF61E, 0xF560,\n    0xF36D, 0xF0AC, 0xED88, 0xEA68, 0xE7B8, 0xE5DF, 0xE547, 0xE5D1,\n    0xE702, 0xE8B8, 0xEAD0, 0xED2A, 0xEFA2, 0xF216, 0xF465, 0xF66C,\n    0xF808, 0xF919, 0xF97C, 0xEEA2, 0xEEA7, 0xEEB4, 0xEEC5, 0xEED9,\n    0xEEEA, 0xEEF6, 0xEEFA, 0xEEF3, 0xEEE0, 0xEEC5, 0xEEA3, 0xEE7D,\n    0xEE54, 0xEE2A, 0xEE02, 0xEDDC, 0xEDBC, 0xEDA2, 0xED92, 0xED8C,\n    0xC97F, 0xCAB2, 0xCDDC, 0xD256, 0xD778, 0xDC9C, 0xE119, 0xE44A,\n    0xE586, 0xE506, 0xE391, 0xE157, 0xDE8B, 0xDB5B, 0xD7FA, 0xD499,\n    0xD167, 0xCE96, 0xCC56, 0xCAD9, 0xCA4F, 0xD688, 0xD8D1, 0xDE95,\n    0xE638, 0xEE1A, 0xF49D, 0xF822, 0xF70B, 0xEFBA, 0xE1B2, 0xCE5F,\n    0xB6FE, 0x9CCE, 0x810C, 0x64F6, 0x49CA, 0x30C7, 0x1B29, 0x0A2E,\n    0xFF16, 0xFB1D, 0xC9F6, 0xCAAE, 0xCC97, 0xCF50, 0xD277, 0xD5AD,\n    0xD890, 0xDAC0, 0xDBDD, 0xDC0F, 0xDBD0, 0xDB35, 0xDA52, 0xD93C,\n    0xD807, 0xD6C9, 0xD597, 0xD484, 0xD3A6, 0xD312, 0xD2DC, 0xF7B2,\n    0xF6AF, 0xF443, 0xF15D, 0xEEEA, 0xEDD9, 0xEF17, 0xF394, 0xFC3B,\n    0x09C7, 0x1B9D, 0x30B4, 0x4800, 0x6076, 0x790B, 0x90B4, 0xA667,\n    0xB918, 0xC7BC, 0xD149, 0xD4B4, 0x50DE, 0x5460, 0x5C83, 0x65B0,\n    0x6C53, 0x6CD5, 0x5DBF, 0x4447, 0x32DB, 0x2BC2, 0x2503, 0x1EAA,\n    0x18C5, 0x1361, 0x0E8B, 0x0A4F, 0x06BC, 0x03DD, 0x01C0, 0x0072,\n    0x0000, 0x189A, 0x1691, 0x1194, 0x0B50, 0x0572, 0x01A7, 0x0218,\n    0x0532, 0x0707, 0x06CC, 0x065B, 0x05BE, 0x0502, 0x0432, 0x0359,\n    0x0282, 0x01B9, 0x0109, 0x007D, 0x0021, 0x0000, 0x11C8, 0x147B,\n    0x1ABF, 0x21D6, 0x2702, 0x2786, 0x1BC2, 0x0820, 0xFBF3, 0xF901,\n    0xF6CE, 0xF542, 0xF445, 0xF3BF, 0xF398, 0xF3B9, 0xF409, 0xF472,\n    0xF4D9, 0xF529, 0xF549, 0xD4E7, 0xD7AE, 0xDE89, 0xE741, 0xEF9E,\n    0xF569, 0xF726, 0xF5DA, 0xF30D, 0xEFA7, 0xEBA3, 0xE72E, 0xE275,\n    0xDDA4, 0xD8E7, 0xD46C, 0xD05D, 0xCCE8, 0xCA39, 0xC87C, 0xC7DD,\n    0x61AB, 0x6296, 0x6511, 0x68B0, 0x6D0B, 0x71B6, 0x772B, 0x7E45,\n    0x8729, 0x91E9, 0x9E2C, 0xAB79, 0xB95B, 0xC759, 0xD4FD, 0xE1CF,\n    0xED58, 0xF720, 0xFEB0, 0x0390, 0x054B, 0x3273, 0x307E, 0x2B85,\n    0x24E4, 0x1DF6, 0x1816, 0x124F, 0x0CF5, 0x0B52, 0x0D11, 0x0F8E,\n    0x129F, 0x1617, 0x19CA, 0x1D8D, 0x2134, 0x2494, 0x277F, 0x29CB,\n    0x2B4C, 0x2BD6, 0xD848, 0xDD3B, 0xEA02, 0xFB7F, 0x0E94, 0x2024,\n    0x32A5, 0x46B2, 0x5660, 0x6263, 0x6F29, 0x7C58, 0x899A, 0x9695,\n    0xA2F3, 0xAE5B, 0xB875, 0xC0E9, 0xC760, 0xCB82, 0xCCF6, 0x06C6,\n    0x061E, 0x0462, 0x01E7, 0xFF03, 0xFC0B, 0xF955, 0xF739, 0xF60A,\n    0xF5CB, 0xF628, 0xF6FE, 0xF826, 0xF97C, 0xFADB, 0xFC1E, 0xFD20,\n    0xFE0A, 0xFEFA, 0xFFB5, 0x0000, 0x0437, 0x0464, 0x04DA, 0x057F,\n    0x0638, 0x06EA, 0x077D, 0x07D4, 0x07D7, 0x077D, 0x06DC, 0x0606,\n    0x050D, 0x0403, 0x02F9, 0x0203, 0x0132, 0x007A, 0xFFD5, 0xFF5E,\n    0xFF30, 0xABDE, 0xACCB, 0xAF46, 0xB2DF, 0xB726, 0xBBA9, 0xBFF9,\n    0xC3A4, 0xC63B, 0xC7D4, 0xC8E4, 0xC988, 0xC9DD, 0xC9FE, 0xCA08,\n    0xCA19, 0xCA4B, 0xCA65, 0xCA38, 0xC9F9, 0xC9D8, 0x45CF, 0x45CC,\n    0x45C5, 0x45BD, 0x45B6, 0x45B1, 0x45B3, 0x45BC, 0x45CF, 0x464F,\n    0x4766, 0x48BB, 0x49FB, 0x4ACE, 0x4ADE, 0x49D6, 0x475F, 0x3F19,\n    0x312F, 0x2417, 0x1E4A, 0x08F4, 0x08B9, 0x081D, 0x0743, 0x064C,\n    0x055A, 0x048E, 0x040A, 0x03EE, 0x0425, 0x0483, 0x050E, 0x05CD,\n    0x06C4, 0x07FB, 0x0976, 0x0B3C, 0x0EC9, 0x1419, 0x18ED, 0x1B09,\n    0x1FE3, 0x1EF1, 0x1C71, 0x18E2, 0x14C3, 0x1093, 0x0CD1, 0x09FD,\n    0x0896, 0x08BE, 0x0A0D, 0x0C2D, 0x0EC9, 0x118E, 0x1426, 0x163C,\n    0x177C, 0x16EC, 0x14BD, 0x1260, 0x1144, 0x9F78, 0xA0FD, 0xA500,\n    0xAAA8, 0xB120, 0xB78F, 0xBD1F, 0xC0FA, 0xC249, 0xC0A1, 0xBCA2,\n    0xB703, 0xB07A, 0xA9BF, 0xA388, 0x9E8B, 0x9B80, 0x9D16, 0xA2F7,\n    0xA94D, 0xAC44, 0xFF00, 0xFEFD, 0xFEF5, 0xFEEA, 0xFEDC, 0xFECE,\n    0xFEC1, 0xFED8, 0xFE9F, 0xFDB0, 0xFC7D, 0xFB6B, 0xFA62, 0xF97B,\n    0xF95F, 0xFA38, 0xFB8B, 0xFD12, 0xFE82, 0xFF95, 0x0000, 0x0149,\n    0x013C, 0x011C, 0x00F1, 0x00C4, 0x009E, 0x0086, 0x00A4, 0x00DD,\n    0x0110, 0x0143, 0x0153, 0x0125, 0x00D6, 0x0097, 0x0072, 0x004E,\n    0x002F, 0x0016, 0x0006, 0x0000, 0xDE33, 0xDC46, 0xD761, 0xD0DA,\n    0xCA07, 0xC43E, 0xC0D4, 0xC753, 0xCFF1, 0xD088, 0xCEDC, 0xCD24,\n    0xCC34, 0xCB37, 0xC9EB, 0xC80E, 0xC5C8, 0xC36D, 0xC155, 0xBFD4,\n    0xBF40, 0x49E2, 0x47D7, 0x426D, 0x3AB8, 0x31C9, 0x28B5, 0x208E,\n    0x15F7, 0x0F36, 0x0FED, 0x114E, 0x1336, 0x1582, 0x180E, 0x1AB6,\n    0x1D58, 0x1FCE, 0x21F7, 0x23AD, 0x24CE, 0x2537, 0x0FC6, 0x0E7E,\n    0x0B1C, 0x0653, 0x00D5, 0xFB53, 0xF67E, 0xF19A, 0xEDB1, 0xEB4D,\n    0xE8C4, 0xE628, 0xE389, 0xE0FA, 0xDE8B, 0xDC4C, 0xDA50, 0xD8A7,\n    0xD762, 0xD693, 0xD64A, 0xE4C0, 0xE501, 0xE5AB, 0xE69C, 0xE7AF,\n    0xE8C1, 0xE9AE, 0xEA99, 0xEB34, 0xEB61, 0xEB8A, 0xEBAE, 0xEBCE,\n    0xEBEA, 0xEC01, 0xEC15, 0xEC25, 0xEC31, 0xEC3A, 0xEC3F, 0xEC41,\n    0x6D6E, 0x6F06, 0x733B, 0x7930, 0x800A, 0x86EA, 0x8CF6, 0x932C,\n    0x9829, 0x9B2E, 0x9E60, 0xA1AA, 0xA4F6, 0xA82F, 0xAB3F, 0xAE11,\n    0xB090, 0xB2A6, 0xB43E, 0xB543, 0xB59E, 0x7FFF, 0x7FFF, 0x4171,\n    0xBF5F, 0x7FFF, 0x7FFF, 0x4171, 0xBF5F, 0x387E, 0x35AD, 0x2E30,\n    0x2378, 0x16F5, 0x0A18, 0xFE52, 0xF511, 0xEFC8, 0xEDBA, 0xED0F,\n    0xED8C, 0xEEF7, 0xF114, 0xF3A8, 0xF678, 0xF949, 0xFBE1, 0xFE04,\n    0xFF78, 0x0000, 0xEEEF, 0xEEFA, 0xEF1C, 0xEF57, 0xEFAB, 0xF01A,\n    0xF0A6, 0xF151, 0xF21B, 0xF318, 0xF452, 0xF5B7, 0xF73A, 0xF8C9,\n    0xFA55, 0xFBD0, 0xFD28, 0xFE50, 0xFF36, 0xFFCB, 0x0000, 0xF6C2,\n    0xF5D1, 0xF359, 0xEFDD, 0xEBE6, 0xE7F7, 0xE497, 0xE24B, 0xE199,\n    0xE25D, 0xE3F9, 0xE642, 0xE90B, 0xEC27, 0xEF6A, 0xF2A6, 0xF5B0,\n    0xF85B, 0xFA7A, 0xFBE0, 0xFC62, 0xE2F9, 0xE748, 0xF235, 0x00BE,\n    0x0FE7, 0x1CAD, 0x28CD, 0x33DC, 0x37A7, 0x34F3, 0x30E0, 0x2BBB,\n    0x25D3, 0x1F77, 0x18F5, 0x129C, 0x0CBA, 0x079E, 0x0397, 0x00F2,\n    0x0000, 0x0EBF, 0x0C37, 0x05E7, 0xFDBB, 0xF59C, 0xEF75, 0xEBED,\n    0xEA51, 0xEA8A, 0xEBE3, 0xEDA9, 0xEFC1, 0xF211, 0xF47D, 0xF6ED,\n    0xF945, 0xFB6B, 0xFD45, 0xFEB8, 0xFFAA, 0x0000, 0xF69B, 0xF73E,\n    0xF8F3, 0xFB68, 0xFE4E, 0x0152, 0x05F0, 0x0B7A, 0x0E6D, 0x0EB7,\n    0x0EA8, 0x0E50, 0x0DBF, 0x0D05, 0x0C31, 0x0B52, 0x0A79, 0x09B5,\n    0x0916, 0x08AB, 0x0884, 0xBACE, 0xBC0D, 0xBF6A, 0xC455, 0xCA3F,\n    0xD097, 0xD6CE, 0xDC54, 0xE09A, 0xE420, 0xE7BC, 0xEB59, 0xEEE5,\n    0xF24D, 0xF57E, 0xF865, 0xFAF0, 0xFD0B, 0xFEA3, 0xFFA6, 0x0000,\n    0xFF09, 0xFF42, 0xFFD7, 0x00AA, 0x019E, 0x0294, 0x036C, 0x040A,\n    0x044D, 0x0442, 0x040D, 0x03B6, 0x0346, 0x02C4, 0x0239, 0x01AD,\n    0x0128, 0x00B3, 0x0055, 0x0016, 0x0000, 0x3511, 0x366C, 0x3A03,\n    0x3F1D, 0x4502, 0x4AF9, 0x504A, 0x543E, 0x561A, 0x562B, 0x5551,\n    0x53B9, 0x5190, 0x4F02, 0x4C3C, 0x4969, 0x46B6, 0x444F, 0x4261,\n    0x4119, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_66.inc.c",
    "content": "static const struct Animation anim_66[] = {\n    1,\n    189,\n    0,\n    0,\n    0x1A,\n    ANIMINDEX_NUMPARTS(anim_66_indices),\n    anim_66_values,\n    anim_66_indices,\n    0,\n};\n\n\nstatic const u16 anim_66_indices[] = {\n    0x001A, 0x0001, 0x001A, 0x001B, 0x001A, 0x0035, 0x0001, 0x0000, 0x0001, 0x004F, 0x0001, 0x0000,\n    0x001A, 0x0380, 0x001A, 0x039A, 0x001A, 0x03B4,\n    0x001A, 0x0332, 0x001A, 0x034C, 0x001A, 0x0366,\n    0x001A, 0x02E4, 0x001A, 0x02FE, 0x001A, 0x0318,\n    0x0001, 0x02E0, 0x0001, 0x02E1, 0x0001, 0x02E2,\n    0x001A, 0x006C, 0x001A, 0x0086, 0x001A, 0x00A0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001A, 0x0052,\n    0x0001, 0x0000, 0x0001, 0x0050, 0x0001, 0x0051,\n    0x0001, 0x02DC, 0x0001, 0x02DD, 0x0001, 0x02DE,\n    0x001A, 0x0122, 0x001A, 0x013C, 0x001A, 0x0156,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001A, 0x0108,\n    0x001A, 0x00BA, 0x001A, 0x00D4, 0x001A, 0x00EE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02DF,\n    0x001A, 0x028E, 0x001A, 0x02A8, 0x001A, 0x02C2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001A, 0x0274,\n    0x001A, 0x0226, 0x001A, 0x0240, 0x001A, 0x025A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02E3,\n    0x001A, 0x01D8, 0x001A, 0x01F2, 0x001A, 0x020C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001A, 0x01BE,\n    0x001A, 0x0170, 0x001A, 0x018A, 0x001A, 0x01A4,\n};\n\nstatic const s16 anim_66_values[] = {\n    0x0000, 0x0010, 0x0011, 0x0011, 0x0012, 0x0012, 0x0012, 0x0010,\n    0x000F, 0x000E, 0x000C, 0x000A, 0x0008, 0x0007, 0x0005, 0x0004,\n    0x0004, 0x0003, 0x0003, 0x0002, 0x0002, 0x0001, 0x0001, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x00C9, 0x013E, 0x0177, 0x01A4, 0x01C1,\n    0x01CA, 0x01C2, 0x01B0, 0x0194, 0x0172, 0x014B, 0x0121, 0x00F7,\n    0x007F, 0x0082, 0x0086, 0x008C, 0x0093, 0x0098, 0x009B, 0x009F,\n    0x00A2, 0x00A5, 0x00A8, 0x00A9, 0x00AA, 0x002B, 0x0030, 0x0034,\n    0x0037, 0x0039, 0x0038, 0x0035, 0x0031, 0x002C, 0x0027, 0x0021,\n    0x001B, 0x0015, 0x0010, 0x000F, 0x0008, 0x0004, 0x0000, 0xFFFF,\n    0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x3FFF,\n    0xF97C, 0xED8C, 0xE30F, 0xE59B, 0xE71B, 0xE79E, 0xE71F, 0xE59B,\n    0xE34A, 0xE07D, 0xDD57, 0xD9FD, 0xD690, 0xD334, 0xD00C, 0xCD3C,\n    0xCAE6, 0xC92E, 0xC81B, 0xC78D, 0xC76B, 0xC79D, 0xC80A, 0xC89A,\n    0xC935, 0xC9C1, 0xCA28, 0xCA4F, 0xABAC, 0xA63E, 0xA3A0, 0xA3B5,\n    0xA50D, 0xA63E, 0xA62E, 0xA539, 0xA420, 0xA3A0, 0xA479, 0xA76C,\n    0xAD35, 0xC0B9, 0xDE4B, 0xF0D4, 0xF5F9, 0xF992, 0xFBDC, 0xFD14,\n    0xFD76, 0xFD3F, 0xFCAB, 0xFBF6, 0xFB5D, 0xFB1D, 0xCA7F, 0xC90F,\n    0xC84C, 0xC838, 0xC890, 0xC90F, 0xC9BD, 0xCAB5, 0xCBD0, 0xCCE3,\n    0xCDC5, 0xCE4F, 0xCE57, 0xCC0F, 0xC82C, 0xC64D, 0xC6EF, 0xC80D,\n    0xC986, 0xCB39, 0xCD04, 0xCEC6, 0xD05E, 0xD1AA, 0xD28A, 0xD2DC,\n    0x2777, 0x2D22, 0x3025, 0x308A, 0x2F3B, 0x2D22, 0x2B47, 0x29BE,\n    0x2806, 0x259B, 0x21FB, 0x1CA4, 0x1512, 0x0185, 0xE58C, 0xD499,\n    0xD097, 0xCE45, 0xCD57, 0xCD81, 0xCE76, 0xCFE9, 0xD18F, 0xD31B,\n    0xD441, 0xD4B4, 0xFFA6, 0x0000, 0x001E, 0x001A, 0x000A, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0xFFF2, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xF48B, 0xF549,\n    0xF5A0, 0xF597, 0xF566, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549,\n    0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549,\n    0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549,\n    0xE039, 0xE2C1, 0xE40A, 0xE496, 0xE439, 0xE2C1, 0xE061, 0xDD81,\n    0xDA46, 0xD6D3, 0xD34F, 0xCFDD, 0xCCA3, 0xC9C5, 0xC768, 0xC5B0,\n    0xC4A9, 0xC432, 0xC42F, 0xC485, 0xC519, 0xC5CF, 0xC68C, 0xC735,\n    0xC7AF, 0xC7DD, 0x2317, 0x2751, 0x26B6, 0x26D8, 0x2737, 0x2751,\n    0x2779, 0x2816, 0x28CA, 0x2936, 0x28FD, 0x27C0, 0x251F, 0x1BC8,\n    0x0D92, 0x04E4, 0x02EB, 0x01CD, 0x0161, 0x0182, 0x0208, 0x02CD,\n    0x03AA, 0x0478, 0x0510, 0x054B, 0x2017, 0x1853, 0x16C2, 0x1685,\n    0x172F, 0x1853, 0x19A2, 0x1B1B, 0x1CC5, 0x1EA8, 0x20C9, 0x232F,\n    0x25E2, 0x2AF0, 0x316B, 0x34E0, 0x34FE, 0x3486, 0x3399, 0x325B,\n    0x30EE, 0x2F75, 0x2E14, 0x2CEC, 0x2C22, 0x2BD6, 0xE9CE, 0xF7D2,\n    0xF928, 0xF951, 0xF8BA, 0xF7D2, 0xF71C, 0xF6A0, 0xF616, 0xF535,\n    0xF3B3, 0xF147, 0xEDA8, 0xE3BF, 0xD562, 0xCCAD, 0xCAA5, 0xC97C,\n    0xC90A, 0xC927, 0xC9AC, 0xCA72, 0xCB50, 0xCC20, 0xCCBA, 0xCCF6,\n    0x0005, 0x0000, 0xFFF5, 0xFFE6, 0xFFE4, 0x0000, 0x0043, 0x00A3,\n    0x0113, 0x0189, 0x0200, 0x0287, 0x0332, 0x0491, 0x0483, 0x042F,\n    0x03CE, 0x036C, 0x02FC, 0x028B, 0x0210, 0x0182, 0x00F4, 0x0078,\n    0x0021, 0x0000, 0xFF31, 0xFF30, 0xFF32, 0xFF37, 0xFF38, 0xFF30,\n    0xFF19, 0xFEF8, 0xFED4, 0xFEB3, 0xFE88, 0xFE60, 0xFE64, 0xFF5A,\n    0xFF8C, 0xFF97, 0xFF90, 0xFF72, 0xFF42, 0xFF23, 0xFF1D, 0xFF1D,\n    0xFF21, 0xFF28, 0xFF2D, 0xFF30, 0xC8C9, 0xC9D8, 0xCA6D, 0xCA81,\n    0xCA41, 0xC9D8, 0xC951, 0xC894, 0xC79D, 0xC666, 0xC58D, 0xC445,\n    0xC06A, 0xAEF3, 0xAF08, 0xB273, 0xB6A9, 0xBBB5, 0xC18C, 0xC582,\n    0xC74F, 0xC887, 0xC946, 0xC9AB, 0xC9D2, 0xC9D8, 0x5948, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0068, 0x00AF, 0x030B, 0x09B7,\n    0x1949, 0x2F32, 0x42F3, 0x4911, 0x4632, 0x4197, 0x3C48, 0x35B4,\n    0x2E6A, 0x2928, 0x260A, 0x2361, 0x2139, 0x1FA0, 0x1EA1, 0x1E4A,\n    0xF588, 0xF1C7, 0xEFC7, 0xEF84, 0xF01E, 0xF0B2, 0xF0C1, 0xF0DB,\n    0xF1B2, 0xF3FA, 0xF8C6, 0xFFB7, 0x0758, 0x11F7, 0x1432, 0x14DA,\n    0x1574, 0x1695, 0x17A8, 0x1879, 0x1918, 0x19B0, 0x1A38, 0x1AA5,\n    0x1AEE, 0x1B09, 0x0DFC, 0x0F56, 0x1186, 0x1472, 0x16FA, 0x17FA,\n    0x1665, 0x1315, 0x0FC7, 0x0E36, 0x0FC7, 0x1367, 0x171F, 0x1A9E,\n    0x1B05, 0x1AD1, 0x1A4D, 0x1972, 0x1846, 0x1722, 0x1601, 0x14B9,\n    0x1373, 0x1258, 0x1190, 0x1144, 0x882B, 0x7D93, 0x77F5, 0x7744,\n    0x7870, 0x786C, 0x75A9, 0x7207, 0x6F9E, 0x7085, 0x7793, 0x834A,\n    0x8F3B, 0x9AE5, 0x9D8D, 0x9E86, 0x9F9A, 0xA184, 0xA389, 0xA53D,\n    0xA6BD, 0xA850, 0xA9CF, 0xAB12, 0xABF1, 0xAC44, 0x042D, 0x03EB,\n    0x03D1, 0x03C2, 0x039D, 0x033D, 0x029B, 0x01CF, 0x00EC, 0x0004,\n    0xFF29, 0xFE6A, 0xFDDC, 0xFD8F, 0xFDD2, 0xFEAC, 0xFFC4, 0x00C1,\n    0x014C, 0x0160, 0x0140, 0x00FC, 0x00A9, 0x0057, 0x0018, 0x0000,\n    0xFE72, 0xFC50, 0xFBAF, 0xFB6F, 0xFB77, 0xFBB4, 0xFC16, 0xFC98,\n    0xFD30, 0xFDD4, 0xFE78, 0xFF13, 0xFF99, 0x0000, 0x0036, 0x003D,\n    0x0029, 0x000F, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xC578, 0xD849, 0xDE57, 0xE16F, 0xE1AF, 0xDF38,\n    0xDA69, 0xD3F1, 0xCC64, 0xC45A, 0xBC65, 0xB51C, 0xAF14, 0xAAE1,\n    0xA9E8, 0xAC26, 0xB01A, 0xB442, 0xB71C, 0xB8CF, 0xBA75, 0xBBFA,\n    0xBD4B, 0xBE54, 0xBF02, 0xBF40, 0x13D5, 0x1127, 0x0DDF, 0x0A29,\n    0x0836, 0x0A3A, 0x1030, 0x1823, 0x215F, 0x2B2C, 0x34D6, 0x3DA6,\n    0x44E7, 0x49E2, 0x4AF0, 0x480C, 0x42F4, 0x3D66, 0x391F, 0x35C6,\n    0x320F, 0x2E4B, 0x2ACE, 0x27EA, 0x25F1, 0x2537, 0xF1E2, 0xF2BF,\n    0xF2E8, 0xF25D, 0xF143, 0xEFBF, 0xEDEB, 0xEBD8, 0xE999, 0xE744,\n    0xE4EC, 0xE2A5, 0xE084, 0xDE9E, 0xDD00, 0xDBA6, 0xDA87, 0xD99B,\n    0xD8D8, 0xD831, 0xD7A1, 0xD729, 0xD6C9, 0xD683, 0xD659, 0xD64A,\n    0xFA51, 0xF805, 0xF523, 0xF18F, 0xEE03, 0xEB3B, 0xE917, 0xE702,\n    0xE508, 0xE333, 0xE18D, 0xE022, 0xDEFC, 0xDE26, 0xDDFE, 0xDEAA,\n    0xDFDB, 0xE143, 0xE295, 0xE3FB, 0xE5B3, 0xE78A, 0xE94F, 0xEAD1,\n    0xEBDC, 0xEC41, 0xD28B, 0xDAD4, 0xE169, 0xE666, 0xE898, 0xE6C8,\n    0xE162, 0xDA08, 0xD15B, 0xC7FE, 0xBE92, 0xB5B9, 0xAE15, 0xA847,\n    0xA54A, 0xA4FC, 0xA65A, 0xA85E, 0xAA01, 0xAB77, 0xAD71, 0xAFAA,\n    0xB1DD, 0xB3C5, 0xB51C, 0xB59E, 0x8001, 0x8001, 0x4171, 0xBF5F,\n    0x8001, 0x8001, 0x4171, 0xBF5F, 0x1245, 0x16EF, 0x1BEE, 0x2096,\n    0x239F, 0x23C0, 0x2135, 0x1D56, 0x1888, 0x132D, 0x0DA8, 0x085C,\n    0x03AD, 0x01C5, 0x0107, 0x00AA, 0x0078, 0x005E, 0x0050, 0x0043,\n    0x0032, 0x0022, 0x0014, 0x0009, 0x0002, 0x0000, 0xF2A0, 0xEE34,\n    0xEAD5, 0xE7BC, 0xE5D5, 0xE60A, 0xE836, 0xEB61, 0xEF3D, 0xF37C,\n    0xF7CF, 0xFBE8, 0xFF79, 0xFFA1, 0xFF5F, 0xFF29, 0xFF31, 0xFF4B,\n    0xFF6A, 0xFF86, 0xFF9E, 0xFFB9, 0xFFD3, 0xFFEA, 0xFFFA, 0x0000,\n    0x111F, 0x16E7, 0x1965, 0x1A51, 0x19AC, 0x1779, 0x140A, 0x0FD2,\n    0x0B05, 0x05DA, 0x0085, 0xFB3D, 0xF634, 0xF0C4, 0xFB91, 0x0520,\n    0x05DC, 0x0423, 0x0192, 0xFFC7, 0xFEEB, 0xFE1E, 0xFD6C, 0xFCE0,\n    0xFC83, 0xFC62, 0xEA69, 0xE5EB, 0xDFD1, 0xD9C7, 0xD574, 0xD484,\n    0xD6B9, 0xDA78, 0xDF5E, 0xE505, 0xEB0B, 0xF10B, 0xF6A1, 0xFB69,\n    0xFE31, 0xFF09, 0xFF5F, 0xFFA0, 0xFFCE, 0xFFED, 0xFFFF, 0x0006,\n    0x0008, 0x0005, 0x0001, 0x0000, 0x0000, 0xFF6B, 0xFEF2, 0xFE9E,\n    0xFE77, 0xFE85, 0xFEC3, 0xFF23, 0xFF9C, 0x0023, 0x00B2, 0x013E,\n    0x01BF, 0x022B, 0x0258, 0x023E, 0x0209, 0x01C7, 0x017E, 0x0131,\n    0x00E5, 0x009D, 0x005F, 0x002C, 0x000B, 0x0000, 0xF700, 0xF599,\n    0xF46D, 0xF3CD, 0xF40A, 0xF574, 0xF7EF, 0xFB0E, 0xFEA9, 0x0296,\n    0x06AF, 0x0ACA, 0x0EBF, 0x1266, 0x1635, 0x17E2, 0x16C9, 0x153B,\n    0x135A, 0x114A, 0x0F2B, 0x0D22, 0x0B51, 0x09D9, 0x08DF, 0x0884,\n    0x11BF, 0x120B, 0x148D, 0x1803, 0x1AD7, 0x1B73, 0x19E1, 0x1769,\n    0x1454, 0x10EC, 0x0D78, 0x0A42, 0x0793, 0x05B3, 0x046F, 0x035F,\n    0x027E, 0x01C8, 0x0138, 0x00CA, 0x007A, 0x0042, 0x001E, 0x000A,\n    0x0001, 0x0000, 0xFF4E, 0x0359, 0x0259, 0xFFE8, 0xFD54, 0xFBEB,\n    0xFBB5, 0xFBD1, 0xFC2A, 0xFCAA, 0xFD3E, 0xFDD0, 0xFE4C, 0xFE9D,\n    0xFECF, 0xFF00, 0xFF2C, 0xFF56, 0xFF7B, 0xFF9D, 0xFFBA, 0xFFD3,\n    0xFFE6, 0xFFF5, 0xFFFD, 0x0000, 0x31B4, 0x240D, 0x1FBF, 0x1DAE,\n    0x1DA2, 0x1F68, 0x22C6, 0x2759, 0x2CB0, 0x325A, 0x37E6, 0x3CE2,\n    0x40DD, 0x4366, 0x44BD, 0x4580, 0x45C5, 0x45A2, 0x452F, 0x4481,\n    0x43B0, 0x42D3, 0x41FF, 0x414C, 0x40CF, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_67.inc.c",
    "content": "static const struct Animation anim_67[] = {\n    1,\n    189,\n    0,\n    0,\n    0x05,\n    ANIMINDEX_NUMPARTS(anim_67_indices),\n    anim_67_values,\n    anim_67_indices,\n    0,\n};\n\n\nstatic const u16 anim_67_indices[] = {\n    0x0005, 0x0001, 0x0005, 0x0006, 0x0001, 0x000B, 0x0001, 0x0000, 0x0001, 0x000C, 0x0001, 0x0000,\n    0x0005, 0x00B2, 0x0005, 0x00B7, 0x0005, 0x00BC,\n    0x0005, 0x00A3, 0x0005, 0x00A8, 0x0005, 0x00AD,\n    0x0005, 0x0094, 0x0005, 0x0099, 0x0005, 0x009E,\n    0x0001, 0x0090, 0x0001, 0x0091, 0x0001, 0x0092,\n    0x0005, 0x0014, 0x0005, 0x0019, 0x0005, 0x001E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0005, 0x000F,\n    0x0001, 0x0000, 0x0001, 0x000D, 0x0001, 0x000E,\n    0x0001, 0x008C, 0x0001, 0x008D, 0x0001, 0x008E,\n    0x0005, 0x0037, 0x0005, 0x003C, 0x0005, 0x0041,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0005, 0x0032,\n    0x0005, 0x0023, 0x0005, 0x0028, 0x0005, 0x002D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x008F,\n    0x0005, 0x007D, 0x0005, 0x0082, 0x0005, 0x0087,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0005, 0x0078,\n    0x0005, 0x0069, 0x0005, 0x006E, 0x0005, 0x0073,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0093,\n    0x0005, 0x005A, 0x0005, 0x005F, 0x0005, 0x0064,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0005, 0x0055,\n    0x0005, 0x0046, 0x0005, 0x004B, 0x0005, 0x0050,\n};\n\nstatic const s16 anim_67_values[] = {\n    0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0x0000, 0x00B2, 0x00B2,\n    0x0094, 0x008F, 0x0094, 0x0016, 0x3FFF, 0xF97C, 0xED8C, 0xDB6C,\n    0xDB6C, 0xDB6C, 0xDB6C, 0xD702, 0x4424, 0x4424, 0x4424, 0x4424,\n    0x2954, 0xDA67, 0xDA67, 0xDA67, 0xDA67, 0xD977, 0x879E, 0x879E,\n    0x879E, 0x879E, 0xA3C7, 0x0EAF, 0x1210, 0x17E6, 0x19C0, 0x1351,\n    0x0739, 0x09DD, 0x0E9A, 0x10AC, 0x0D1F, 0xE375, 0xE2C0, 0xE1B6,\n    0xE1F5, 0xE4B1, 0xDDDE, 0xE2B6, 0xEBE6, 0xF16C, 0xEF76, 0x6826,\n    0x64D5, 0x5C28, 0x4807, 0x5CAA, 0x2E3A, 0x295B, 0x2389, 0x2888,\n    0x2653, 0xED13, 0xFDDA, 0x1515, 0x13CF, 0x25CC, 0x0000, 0x0000,\n    0xFFFF, 0x0000, 0x000C, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF33,\n    0xC9D8, 0xC9FB, 0xCA1F, 0xC9D8, 0xC75E, 0x47D8, 0x4720, 0x4578,\n    0x43A4, 0x4138, 0x103A, 0x0FC5, 0x0E83, 0x0CA3, 0x07B9, 0x10A4,\n    0x1041, 0x0F96, 0x0F61, 0x11B4, 0xBAF8, 0xBDFC, 0xC3EB, 0xC81D,\n    0xC211, 0x0000, 0xFB5A, 0x00D4, 0xFFC4, 0xFDF0, 0x0000, 0xFFC3,\n    0xFCF4, 0xFE38, 0xFFF2, 0xBF40, 0xBDFF, 0xC680, 0xC36D, 0xBDF0,\n    0x1482, 0x1F55, 0x2C26, 0x2E3F, 0x2DC8, 0xED74, 0xF27F, 0xF80A,\n    0xF85B, 0xF782, 0xEF2B, 0xF728, 0x00E9, 0x03EB, 0x05AE, 0xAA21,\n    0xA104, 0x968F, 0x9545, 0x9617, 0x8001, 0x8001, 0x4171, 0xBF5F,\n    0x8001, 0x8001, 0x4171, 0xBF5F, 0x1B73, 0x0D8F, 0xF103, 0xD975,\n    0xCD8E, 0xF9F2, 0xFBDC, 0xFF68, 0x014D, 0xFF7C, 0x0679, 0x0329,\n    0xFC48, 0xF66B, 0xF2F7, 0xEA59, 0xF145, 0xFFEF, 0x0D2B, 0x1727,\n    0x0904, 0x02A1, 0xF5E8, 0xEC7D, 0xEA8B, 0xF42A, 0xF969, 0x0413,\n    0x0C90, 0x0F98, 0xEBBC, 0xF50B, 0x07A7, 0x159B, 0x191F, 0xFDDB,\n    0xFFED, 0x03CC, 0x05FA, 0x0453, 0x3CB1, 0x3F97, 0x45D8, 0x4BCB,\n    0x5144,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_68.inc.c",
    "content": "static const struct Animation anim_68[] = {\n    1,\n    189,\n    0,\n    0,\n    0x04,\n    ANIMINDEX_NUMPARTS(anim_68_indices),\n    anim_68_values,\n    anim_68_indices,\n    0,\n};\n\n\nstatic const u16 anim_68_indices[] = {\n    0x0004, 0x0001, 0x0004, 0x0005, 0x0004, 0x0009, 0x0001, 0x0000, 0x0001, 0x000D, 0x0001, 0x0000,\n    0x0004, 0x009E, 0x0004, 0x00A2, 0x0004, 0x00A6,\n    0x0004, 0x0092, 0x0004, 0x0096, 0x0004, 0x009A,\n    0x0004, 0x0086, 0x0004, 0x008A, 0x0004, 0x008E,\n    0x0001, 0x0082, 0x0001, 0x0083, 0x0001, 0x0084,\n    0x0004, 0x001E, 0x0004, 0x0022, 0x0004, 0x0026,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0004, 0x001A,\n    0x0004, 0x000E, 0x0004, 0x0012, 0x0004, 0x0016,\n    0x0001, 0x007E, 0x0001, 0x007F, 0x0001, 0x0080,\n    0x0004, 0x003A, 0x0004, 0x003E, 0x0004, 0x0042,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0004, 0x0036,\n    0x0004, 0x002A, 0x0004, 0x002E, 0x0004, 0x0032,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0081,\n    0x0004, 0x0072, 0x0004, 0x0076, 0x0004, 0x007A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0004, 0x006E,\n    0x0004, 0x0062, 0x0004, 0x0066, 0x0004, 0x006A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0085,\n    0x0004, 0x0056, 0x0004, 0x005A, 0x0004, 0x005E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0004, 0x0052,\n    0x0004, 0x0046, 0x0004, 0x004A, 0x0004, 0x004E,\n};\n\nstatic const s16 anim_68_values[] = {\n    0x0000, 0xFFF9, 0xFFF8, 0xFFF7, 0xFFF6, 0x009E, 0x00A1, 0x00A4,\n    0x00A7, 0x0020, 0x0021, 0x0023, 0x0024, 0x3FFF, 0xF37D, 0xE82F,\n    0xE9E1, 0xEFB8, 0xF6B8, 0xF443, 0xF1F9, 0xF128, 0xEAB7, 0xEB15,\n    0xEB82, 0xEC62, 0xC034, 0xD35E, 0xE6C8, 0xF498, 0xC4B4, 0xB9C6,\n    0x6EB7, 0x4A7E, 0xEF30, 0xEC2B, 0xCF70, 0xD913, 0xF334, 0xE152,\n    0x3B57, 0x5CF3, 0xFDE2, 0xFE02, 0xFE23, 0xFE44, 0xFFAD, 0xFFB2,\n    0xFFB5, 0xFFB3, 0xF0CB, 0xF10F, 0xF162, 0xF1CC, 0xC1A5, 0xB8E8,\n    0xB4BE, 0xB7DA, 0x3CAB, 0x2446, 0x1F05, 0x1EBA, 0x2448, 0x1E00,\n    0x178E, 0x18CC, 0xD92B, 0xBE4F, 0xBEBD, 0xC833, 0x039C, 0x03AF,\n    0x03B9, 0x03C4, 0xFE70, 0xFDDF, 0xFD4A, 0xFCBA, 0xB0F1, 0xB230,\n    0xB3BE, 0xB577, 0x43B7, 0x4323, 0x424D, 0x4118, 0x1311, 0x13C7,\n    0x14A0, 0x15AD, 0x10B3, 0x0F99, 0x0F2C, 0x0FF5, 0xBA09, 0xBBF2,\n    0xBDD7, 0xC018, 0xFF57, 0xFF72, 0xFF3B, 0xFE72, 0x00C2, 0x00B2,\n    0x00A3, 0x0092, 0xB456, 0xB53F, 0xB5E1, 0xB5FA, 0x32AB, 0x3197,\n    0x30A4, 0x2FF6, 0xE3E2, 0xE279, 0xE32F, 0xE73E, 0xEF3A, 0xEDE8,\n    0xEDFE, 0xF06A, 0xA33A, 0xA4B5, 0xA658, 0xA87B, 0x8001, 0x8001,\n    0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x0271, 0x1815,\n    0x2741, 0x2E11, 0x0313, 0x0598, 0x06FC, 0x06A6, 0xF214, 0xEFB6,\n    0xEE86, 0xEF31, 0xF681, 0xE3D6, 0xD672, 0xCFB2, 0xFE97, 0x04B1,\n    0x09D3, 0x0E0B, 0x1437, 0x0C08, 0x05CE, 0x0192, 0x05AD, 0x029A,\n    0x0079, 0xFFAD, 0xFE56, 0xFE65, 0xFEE7, 0x0062, 0x4CDE, 0x4BE9,\n    0x4AC4, 0x494C,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_69.inc.c",
    "content": "static const struct Animation anim_69[] = {\n    1,\n    189,\n    0,\n    0,\n    0x0A,\n    ANIMINDEX_NUMPARTS(anim_69_indices),\n    anim_69_values,\n    anim_69_indices,\n    0,\n};\n\n\nstatic const u16 anim_69_indices[] = {\n    0x000A, 0x0001, 0x000A, 0x000B, 0x000A, 0x0015, 0x0001, 0x0000, 0x0001, 0x001F, 0x0001, 0x0000,\n    0x000A, 0x0160, 0x000A, 0x016A, 0x000A, 0x0174,\n    0x000A, 0x0142, 0x000A, 0x014C, 0x000A, 0x0156,\n    0x000A, 0x0124, 0x000A, 0x012E, 0x000A, 0x0138,\n    0x0001, 0x0120, 0x0001, 0x0121, 0x0001, 0x0122,\n    0x000A, 0x002C, 0x000A, 0x0036, 0x000A, 0x0040,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0022,\n    0x0001, 0x0000, 0x0001, 0x0020, 0x0001, 0x0021,\n    0x0001, 0x011C, 0x0001, 0x011D, 0x0001, 0x011E,\n    0x000A, 0x0072, 0x000A, 0x007C, 0x000A, 0x0086,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0068,\n    0x000A, 0x004A, 0x000A, 0x0054, 0x000A, 0x005E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x011F,\n    0x000A, 0x00FE, 0x000A, 0x0108, 0x000A, 0x0112,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x00F4,\n    0x000A, 0x00D6, 0x000A, 0x00E0, 0x000A, 0x00EA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0123,\n    0x000A, 0x00B8, 0x000A, 0x00C2, 0x000A, 0x00CC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x00AE,\n    0x000A, 0x0090, 0x000A, 0x009A, 0x000A, 0x00A4,\n};\n\nstatic const s16 anim_69_values[] = {\n    0x0000, 0x0007, 0x000E, 0x000E, 0x000E, 0x000C, 0x0006, 0x0002,\n    0x0000, 0x0000, 0x0000, 0x0098, 0x009A, 0x009A, 0x009A, 0x009A,\n    0x009A, 0x009D, 0x00A1, 0x00A6, 0x00AA, 0x0014, 0x001B, 0x001A,\n    0x0018, 0x0015, 0x000A, 0x0004, 0x0000, 0x0000, 0x0000, 0x3FFF,\n    0xF97C, 0xED8C, 0xD2B6, 0xCFBD, 0xD140, 0xD4A2, 0xD887, 0xDB96,\n    0xDC74, 0xD772, 0xCEDD, 0xCA4F, 0xF645, 0xD708, 0xD37F, 0xD533,\n    0xDAAB, 0xE26F, 0xEB07, 0xF2FC, 0xF8D6, 0xFB1D, 0xD798, 0xD633,\n    0xD588, 0xD4E8, 0xD457, 0xD3D8, 0xD36F, 0xD320, 0xD2EE, 0xD2DC,\n    0xD968, 0xFA3D, 0xFDFE, 0xFC42, 0xF693, 0xEE7A, 0xE581, 0xDD32,\n    0xD715, 0xD4B4, 0x08E5, 0x00EB, 0xFE2C, 0xFDDE, 0xFE1D, 0xFE3C,\n    0xFEB2, 0xFF48, 0xFFC9, 0x0000, 0x06E6, 0x0211, 0x0056, 0x0000,\n    0xFFF5, 0xFFCC, 0xFFCA, 0xFFDD, 0xFFF5, 0x0000, 0xE8B6, 0xEC09,\n    0xEDCB, 0xEEDB, 0xEFD7, 0xF126, 0xF297, 0xF3ED, 0xF4E8, 0xF549,\n    0xE9D6, 0xE3FA, 0xDE97, 0xD8F9, 0xD476, 0xD0E7, 0xCD7F, 0xCA9D,\n    0xC89D, 0xC7DD, 0x78CB, 0x9272, 0xA705, 0xB91B, 0xC674, 0xBB5C,\n    0x46D3, 0x2E34, 0x144A, 0x054B, 0x22C7, 0x1F5A, 0x1AEB, 0x169C,\n    0x1746, 0x326B, 0x2CC5, 0x2691, 0x2920, 0x2BD6, 0x3B60, 0x5099,\n    0x65DD, 0x7AC5, 0x8A2A, 0x7C2C, 0xFFFA, 0xEB74, 0xD7F5, 0xCCF6,\n    0x000B, 0x002D, 0x0108, 0x0216, 0x0334, 0x043F, 0x0516, 0x0480,\n    0x01D3, 0x0000, 0xFF37, 0xFF3C, 0xFF48, 0xFF55, 0xFF63, 0xFF6F,\n    0xFF75, 0xFF56, 0xFF3D, 0xFF30, 0xC435, 0xC09B, 0xBB79, 0xB5E3,\n    0xAFEC, 0xAAC4, 0xA79E, 0xB2B9, 0xC123, 0xC9D8, 0x39F8, 0x34AF,\n    0x3E0F, 0x41EE, 0x4483, 0x42FA, 0x3AB0, 0x2E5D, 0x232B, 0x1E4A,\n    0x0971, 0x0C05, 0x0C46, 0x0E78, 0x111D, 0x13EC, 0x169A, 0x18E0,\n    0x1A72, 0x1B09, 0x119B, 0x1175, 0x1379, 0x1355, 0x1303, 0x1295,\n    0x121E, 0x11B2, 0x1163, 0x1144, 0xC39C, 0xC525, 0xBF0B, 0xBBB8,\n    0xB826, 0xB49B, 0xB15F, 0xAEB8, 0xACED, 0xAC44, 0xFDDC, 0xFE36,\n    0xFE6B, 0xFEA2, 0xFEDC, 0xFF17, 0xFF50, 0xFF98, 0xFFE0, 0x0000,\n    0x00A1, 0x00E0, 0x00EE, 0x00EA, 0x00D8, 0x00BE, 0x00A1, 0x006B,\n    0x0023, 0x0000, 0xB7A0, 0xB311, 0xB218, 0xB1D7, 0xB234, 0xB319,\n    0xB46F, 0xB7EA, 0xBCC9, 0xBF40, 0x2C93, 0x2C73, 0x2E2D, 0x30C1,\n    0x335D, 0x352C, 0x355B, 0x30C5, 0x2933, 0x2537, 0xF5CF, 0xF371,\n    0xF06A, 0xECB8, 0xE8A9, 0xE48B, 0xE0AD, 0xDC5D, 0xD82C, 0xD64A,\n    0x05E2, 0x046A, 0x00C0, 0xFB4D, 0xF52B, 0xEF77, 0xEB4E, 0xEA35,\n    0xEB56, 0xEC41, 0x97F3, 0x9A06, 0x9BFE, 0x9E41, 0xA0D5, 0xA3BF,\n    0xA703, 0xAC55, 0xB299, 0xB59E, 0x8001, 0x8001, 0x4171, 0xBF5F,\n    0x8001, 0x8001, 0x4171, 0xBF5F, 0xC6A6, 0xC470, 0xC84C, 0xD0DA,\n    0xD9A3, 0xE186, 0xE989, 0xF2C5, 0xFBE2, 0x0000, 0xFC03, 0xF9D2,\n    0xFA69, 0xFC48, 0xFDD9, 0xFE25, 0xFE37, 0xFEDF, 0xFFA2, 0x0000,\n    0xF089, 0xEF8A, 0xF149, 0xF478, 0xF593, 0xEF30, 0xEA08, 0xEF65,\n    0xF7ED, 0xFC62, 0x1FB6, 0x232F, 0x212A, 0x1C80, 0x1669, 0x101C,\n    0x0ACE, 0x060C, 0x01D3, 0x0000, 0xEBE8, 0xEDC3, 0xEEF8, 0xF050,\n    0xF1DB, 0xF3A6, 0xF5C1, 0xF96C, 0xFDDA, 0x0000, 0x1071, 0x1154,\n    0x1370, 0x1603, 0x1860, 0x19D9, 0x19C1, 0x14CC, 0x0CBD, 0x0884,\n    0x17F9, 0x1588, 0x131A, 0x0FF5, 0x0C6B, 0x08CD, 0x056E, 0x02A0,\n    0x00B5, 0x0000, 0x00F9, 0xFED9, 0xFE7B, 0xFE6B, 0xFE94, 0xFEE2,\n    0xFF41, 0xFF9E, 0xFFE5, 0x0000, 0x5670, 0x582E, 0x5664, 0x535C,\n    0x4F8A, 0x4B64, 0x475E, 0x43EE, 0x4188, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_6A.inc.c",
    "content": "static const struct Animation anim_6A[] = {\n    1,\n    189,\n    0,\n    0,\n    0x0D,\n    ANIMINDEX_NUMPARTS(anim_6A_indices),\n    anim_6A_values,\n    anim_6A_indices,\n    0,\n};\n\n\nstatic const u16 anim_6A_indices[] = {\n    0x000D, 0x0001, 0x000D, 0x000E, 0x000D, 0x001B, 0x0001, 0x0000, 0x0001, 0x0028, 0x0001, 0x0000,\n    0x000D, 0x01EB, 0x000D, 0x01F8, 0x000D, 0x0205,\n    0x000D, 0x01C4, 0x000D, 0x01D1, 0x000D, 0x01DE,\n    0x000D, 0x019D, 0x000D, 0x01AA, 0x000D, 0x01B7,\n    0x0001, 0x0199, 0x0001, 0x019A, 0x0001, 0x019B,\n    0x000D, 0x005D, 0x000D, 0x006A, 0x000D, 0x0077,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000D, 0x0050,\n    0x000D, 0x0029, 0x000D, 0x0036, 0x000D, 0x0043,\n    0x0001, 0x0195, 0x0001, 0x0196, 0x0001, 0x0197,\n    0x000D, 0x00B8, 0x000D, 0x00C5, 0x000D, 0x00D2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000D, 0x00AB,\n    0x000D, 0x0084, 0x000D, 0x0091, 0x000D, 0x009E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0198,\n    0x000D, 0x016E, 0x000D, 0x017B, 0x000D, 0x0188,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000D, 0x0161,\n    0x000D, 0x013A, 0x000D, 0x0147, 0x000D, 0x0154,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x019C,\n    0x000D, 0x0113, 0x000D, 0x0120, 0x000D, 0x012D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000D, 0x0106,\n    0x000D, 0x00DF, 0x000D, 0x00EC, 0x000D, 0x00F9,\n};\n\nstatic const s16 anim_6A_values[] = {\n    0x0000, 0xFFF5, 0xFFF5, 0xFFF4, 0xFFF5, 0xFFF7, 0xFFF9, 0xFFFA,\n    0xFFFB, 0xFFFC, 0xFFFE, 0xFFFF, 0x0000, 0x0000, 0x00AA, 0x00AC,\n    0x00AF, 0x00B0, 0x00B0, 0x00B0, 0x00AE, 0x00AB, 0x00A9, 0x00A9,\n    0x00A9, 0x00AA, 0x00AA, 0x0024, 0x0025, 0x0025, 0x0022, 0x001B,\n    0x0015, 0x0011, 0x000E, 0x000B, 0x0008, 0x0004, 0x0001, 0x0000,\n    0x3FFF, 0xF48E, 0xF985, 0xFC7B, 0xFD98, 0xFE73, 0xFF15, 0xFF86,\n    0xFFCF, 0xFFF7, 0x0007, 0x0008, 0x0003, 0x0000, 0xF387, 0xF706,\n    0xF92B, 0xF9B2, 0xFA05, 0xFA2D, 0xFA33, 0xFA20, 0xF9FD, 0xF9D2,\n    0xF9A8, 0xF988, 0xF97C, 0xEE36, 0xF04E, 0xF15B, 0xF153, 0xF113,\n    0xF0AA, 0xF025, 0xEF90, 0xEEF9, 0xEE6D, 0xEDF8, 0xEDA9, 0xED8C,\n    0xE074, 0xD1B0, 0xD7A2, 0xD6B7, 0xD563, 0xD3C4, 0xD1FA, 0xD022,\n    0xCE5B, 0xCCC4, 0xCB7B, 0xCA9F, 0xCA4F, 0x4638, 0x47BD, 0x4627,\n    0x3F1B, 0x3688, 0x2CF7, 0x22F2, 0x18FF, 0x0FA9, 0x0779, 0x00F6,\n    0xFCAA, 0xFB1D, 0xDCC0, 0xDF33, 0xDFD4, 0xDF14, 0xDDDE, 0xDC53,\n    0xDA93, 0xD8BF, 0xD6F7, 0xD55C, 0xD40E, 0xD32E, 0xD2DC, 0x6288,\n    0x6318, 0x6776, 0x71FB, 0x7E9D, 0x8C9B, 0x9B2F, 0xA99A, 0xB718,\n    0xC2E9, 0xCC4A, 0xD279, 0xD4B4, 0xFE76, 0xFEAA, 0xFED5, 0xFEF9,\n    0xFF1F, 0xFF47, 0xFF6F, 0xFF95, 0xFFB8, 0xFFD5, 0xFFEC, 0xFFFB,\n    0x0000, 0xFFB9, 0xFFC1, 0xFFC8, 0xFFCE, 0xFFD5, 0xFFDC, 0xFFE4,\n    0xFFEB, 0xFFF2, 0xFFF8, 0xFFFC, 0xFFFF, 0x0000, 0xF245, 0xF2B2,\n    0xF309, 0xF353, 0xF3A0, 0xF3EE, 0xF43B, 0xF482, 0xF4C3, 0xF4FA,\n    0xF524, 0xF540, 0xF549, 0xC026, 0xC8EC, 0xCDC1, 0xCEB2, 0xCEE4,\n    0xCE7E, 0xCDA6, 0xCC84, 0xCB40, 0xC9FF, 0xC8EA, 0xC827, 0xC7DD,\n    0x2240, 0x264D, 0x2738, 0x24C8, 0x2157, 0x1D31, 0x18A2, 0x13F6,\n    0x0F79, 0x0B77, 0x083C, 0x0614, 0x054B, 0x1C42, 0x2013, 0x22AD,\n    0x241B, 0x257C, 0x26C9, 0x27FD, 0x2911, 0x2A01, 0x2AC5, 0x2B59,\n    0x2BB6, 0x2BD6, 0xD874, 0xE7FB, 0xEF78, 0xEF53, 0xED2E, 0xE982,\n    0xE4C9, 0xDF7C, 0xDA15, 0xD50E, 0xD0E0, 0xCE05, 0xCCF6, 0x03DB,\n    0x0407, 0x0452, 0x04F7, 0x0605, 0x0741, 0x0952, 0x074C, 0x04E4,\n    0x0341, 0x01AB, 0x0079, 0x0000, 0xFC39, 0xFBD0, 0xFB87, 0xFBC0,\n    0xFC75, 0xFD17, 0xFD2D, 0xFDDD, 0xFE7C, 0xFEC9, 0xFF01, 0xFF24,\n    0xFF30, 0xB73A, 0xB8E3, 0xBA4F, 0xBB4B, 0xBC34, 0xBDC0, 0xC2BD,\n    0xC4B4, 0xC5E7, 0xC72F, 0xC877, 0xC973, 0xC9D8, 0x3E77, 0x3C85,\n    0x3A3D, 0x36AA, 0x3191, 0x2BFF, 0x2702, 0x22DE, 0x202C, 0x1F10,\n    0x1E81, 0x1E4F, 0x1E4A, 0x16FD, 0x182A, 0x1917, 0x19AF, 0x1A0E,\n    0x1A4E, 0x1A8A, 0x1AA6, 0x1AAA, 0x1AC5, 0x1AE4, 0x1AFE, 0x1B09,\n    0x1132, 0x12A8, 0x1392, 0x13CC, 0x13AB, 0x133D, 0x1290, 0x1096,\n    0x0EE4, 0x0F24, 0x0FF8, 0x10DB, 0x1144, 0xC34B, 0xC599, 0xC5E7,\n    0xC344, 0xBE93, 0xB947, 0xB4D2, 0xB22D, 0xB098, 0xAF1D, 0xADB7,\n    0xACAD, 0xAC44, 0xFD55, 0xFC38, 0xFB91, 0xFBC8, 0xFC91, 0xFD4B,\n    0xFDBA, 0xFE1B, 0xFE81, 0xFF02, 0xFF7B, 0xFFD6, 0x0000, 0x00FC,\n    0x012D, 0x0139, 0x00FA, 0x008C, 0x0038, 0x001F, 0x001F, 0x001F,\n    0x0014, 0x000A, 0x0003, 0x0000, 0xBA14, 0xBC49, 0xBDAF, 0xBD6A,\n    0xBC1A, 0xBB48, 0xBBA4, 0xBC7F, 0xBD57, 0xBE08, 0xBEA0, 0xBF0F,\n    0xBF40, 0x2958, 0x2556, 0x22E0, 0x232C, 0x256E, 0x27FB, 0x2AF2,\n    0x2E34, 0x2FB7, 0x2C66, 0x27CA, 0x25D8, 0x2537, 0xEB00, 0xF01A,\n    0xF3A0, 0xF48F, 0xF3BC, 0xF225, 0xF023, 0xED5C, 0xE9CA, 0xE481,\n    0xDE0D, 0xD897, 0xD64A, 0xF31B, 0xF67D, 0xF860, 0xF79C, 0xF519,\n    0xF268, 0xEFA2, 0xECAE, 0xEAD3, 0xEA8E, 0xEB1A, 0xEBDD, 0xEC41,\n    0xAB6A, 0xADE1, 0xAF65, 0xAF32, 0xADB6, 0xAC18, 0xAA08, 0xA7D4,\n    0xA78C, 0xAA83, 0xAF43, 0xB3AD, 0xB59E, 0x8001, 0x8001, 0x4171,\n    0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x2F93, 0x2DC2, 0x2A97,\n    0x2515, 0x1CB2, 0x140A, 0x0DBC, 0x09C2, 0x0663, 0x03AC, 0x01AB,\n    0x006D, 0x0000, 0x0525, 0x0363, 0x024E, 0x0247, 0x02C6, 0x0353,\n    0x0375, 0x030A, 0x025B, 0x018E, 0x00CB, 0x0039, 0x0000, 0xF0F6,\n    0xF2DF, 0xF3F9, 0xF3A6, 0xF287, 0xF186, 0xF18C, 0xF2EF, 0xF51A,\n    0xF798, 0xF9F2, 0xFBB2, 0xFC62, 0xCCFD, 0xCD34, 0xCF3A, 0xD5C8,\n    0xE035, 0xE84F, 0xED35, 0xF1FC, 0xF66A, 0xFA43, 0xFD4C, 0xFF49,\n    0x0000, 0x11CB, 0x149C, 0x1607, 0x149F, 0x1101, 0x0DC2, 0x0B60,\n    0x08C8, 0x062F, 0x03CB, 0x01D4, 0x007E, 0x0000, 0xFE26, 0xFC57,\n    0xFCF4, 0x03B9, 0x0E52, 0x1477, 0x14A7, 0x1347, 0x10E5, 0x0E11,\n    0x0B5B, 0x0951, 0x0884, 0xFFD5, 0x0058, 0x00A3, 0x0091, 0x0071,\n    0x0058, 0x0047, 0x0035, 0x0025, 0x0016, 0x000A, 0x0002, 0x0000,\n    0x0290, 0x0475, 0x0517, 0x02E1, 0xFF03, 0xFCAC, 0xFC7B, 0xFCD0,\n    0xFD7C, 0xFE51, 0xFF22, 0xFFC1, 0x0000, 0x47B2, 0x4620, 0x44BF,\n    0x43A0, 0x42BF, 0x422B, 0x41C8, 0x4172, 0x4129, 0x40EF, 0x40C4,\n    0x40AA, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_6B.inc.c",
    "content": "static const struct Animation anim_6B[] = {\n    1,\n    189,\n    0,\n    0,\n    0x0B,\n    ANIMINDEX_NUMPARTS(anim_6B_indices),\n    anim_6B_values,\n    anim_6B_indices,\n    0,\n};\n\n\nstatic const u16 anim_6B_indices[] = {\n    0x000B, 0x0001, 0x000B, 0x000C, 0x000B, 0x0017, 0x0001, 0x0000, 0x0001, 0x0022, 0x0001, 0x0000,\n    0x000B, 0x01B5, 0x000B, 0x01C0, 0x000B, 0x01CB,\n    0x000B, 0x0194, 0x000B, 0x019F, 0x000B, 0x01AA,\n    0x000B, 0x0173, 0x000B, 0x017E, 0x000B, 0x0189,\n    0x0001, 0x0165, 0x0001, 0x0166, 0x000B, 0x0167,\n    0x000B, 0x004F, 0x000B, 0x005A, 0x000B, 0x0065,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000B, 0x0044,\n    0x000B, 0x0023, 0x000B, 0x002E, 0x000B, 0x0039,\n    0x0001, 0x0157, 0x0001, 0x0158, 0x000B, 0x0159,\n    0x000B, 0x009C, 0x000B, 0x00A7, 0x000B, 0x00B2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000B, 0x0091,\n    0x000B, 0x0070, 0x000B, 0x007B, 0x000B, 0x0086,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0164,\n    0x000B, 0x0136, 0x000B, 0x0141, 0x000B, 0x014C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000B, 0x012B,\n    0x000B, 0x010A, 0x000B, 0x0115, 0x000B, 0x0120,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0172,\n    0x000B, 0x00E9, 0x000B, 0x00F4, 0x000B, 0x00FF,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000B, 0x00DE,\n    0x000B, 0x00BD, 0x000B, 0x00C8, 0x000B, 0x00D3,\n};\n\nstatic const s16 anim_6B_values[] = {\n    0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0002, 0x0002, 0x0003,\n    0x0003, 0x0002, 0x0000, 0x0000, 0x0098, 0x009A, 0x009B, 0x009B,\n    0x009A, 0x009A, 0x009A, 0x009A, 0x009A, 0x009A, 0x009A, 0x0015,\n    0x001A, 0x001F, 0x0020, 0x0019, 0x000F, 0x0004, 0xFFFE, 0xFFFF,\n    0x0003, 0x0007, 0x3FFF, 0xE573, 0xDAF2, 0xD9CB, 0xDA21, 0xDB97,\n    0xDDD2, 0xE074, 0xE321, 0xE57C, 0xE72A, 0xE7CE, 0xF15A, 0xEE82,\n    0xEEE3, 0xEFE6, 0xF15D, 0xF31A, 0xF4EE, 0xF6AA, 0xF821, 0xF924,\n    0xF984, 0xF250, 0xF3C6, 0xF326, 0xF20D, 0xF0A2, 0xEF08, 0xED66,\n    0xEBE0, 0xEA9B, 0xE9BD, 0xE96B, 0xDD73, 0xDFA1, 0xE26C, 0xE5C2,\n    0xE967, 0xED20, 0xF0B1, 0xF3DF, 0xF66E, 0xF823, 0xF8C2, 0x3561,\n    0x2DB6, 0x2978, 0x252E, 0x20FE, 0x1D0C, 0x197E, 0x167A, 0x1424,\n    0x12A2, 0x1219, 0xE841, 0xEEA5, 0xF10A, 0xF318, 0xF4D3, 0xF63F,\n    0xF75F, 0xF839, 0xF8CF, 0xF926, 0xF942, 0x8416, 0x82F8, 0x835E,\n    0x841A, 0x8511, 0x8629, 0x8748, 0x8854, 0x8934, 0x89CD, 0x8A06,\n    0x1EB5, 0x1CF7, 0x135E, 0x05FB, 0xFE1D, 0xFDA7, 0xFF9D, 0x02F2,\n    0x069F, 0x0997, 0x0ACF, 0x1399, 0x1264, 0x0CC6, 0x04EC, 0xFFF5,\n    0xFEDA, 0xFEE3, 0xFFA5, 0x00B3, 0x01A5, 0x020D, 0xF0F8, 0xF6A7,\n    0xF622, 0xF28F, 0xEFD7, 0xEF03, 0xEE72, 0xEE18, 0xEDE8, 0xEDD5,\n    0xEDD2, 0xE4C4, 0xDD75, 0xD884, 0xD4CB, 0xD476, 0xD7F6, 0xDD81,\n    0xE3E4, 0xE9EF, 0xEE6F, 0xF033, 0xF163, 0xF4DC, 0xF4EC, 0xF4D2,\n    0xF497, 0xF448, 0xF3EE, 0xF396, 0xF349, 0xF313, 0xF2FE, 0x1B87,\n    0x1AFD, 0x195D, 0x1778, 0x156F, 0x1360, 0x116B, 0x0FAE, 0x0E4A,\n    0x0D5D, 0x0D07, 0x882F, 0x8A3F, 0x8AF3, 0x8BAD, 0x8C64, 0x8D14,\n    0x8DB3, 0x8E3B, 0x8EA6, 0x8EEB, 0x8F03, 0x000B, 0x002D, 0x0108,\n    0x01DE, 0x02B6, 0x0386, 0x0444, 0x0480, 0x0310, 0x015D, 0x008C,\n    0xFF37, 0xFF3C, 0xFF48, 0xFEB7, 0xFE04, 0xFD6B, 0xFD2C, 0xFF56,\n    0x0059, 0x011E, 0x016D, 0xC435, 0xC09B, 0xBB79, 0xBB1D, 0xBB96,\n    0xBBE6, 0xBB0F, 0xB2B9, 0xB514, 0xB950, 0xBB94, 0x39F8, 0x34AF,\n    0x3E0F, 0x415B, 0x435C, 0x42FA, 0x3641, 0x33F8, 0x3312, 0x32F8,\n    0x3311, 0x08EE, 0x0B34, 0x0C46, 0x0AD0, 0x081E, 0x05DA, 0x05AF,\n    0x0951, 0x0F70, 0x1533, 0x17C1, 0x124E, 0x129E, 0x1379, 0x1578,\n    0x1811, 0x1A62, 0x1B8B, 0x1ACF, 0x18D1, 0x16C0, 0x15CC, 0xC174,\n    0xC1AD, 0xBF0B, 0xB723, 0xAC6B, 0xA281, 0x9D05, 0x9E9A, 0xA4C2,\n    0xAB6D, 0xAE8E, 0xFDBA, 0xFE36, 0xFF2B, 0x0066, 0x01A3, 0x029B,\n    0x0309, 0x026A, 0x00F7, 0xFF80, 0xFED4, 0x008F, 0x00E0, 0x0153,\n    0x01D5, 0x024A, 0x0296, 0x029E, 0x0213, 0x010E, 0x0012, 0xFFA2,\n    0xB78C, 0xB311, 0xB2C4, 0xB391, 0xB4DE, 0xB615, 0xB69E, 0xB60F,\n    0xB4D4, 0xB399, 0xB30A, 0x2C93, 0x2C73, 0x2DD5, 0x2FBB, 0x31D3,\n    0x33CE, 0x355B, 0x3664, 0x3712, 0x3770, 0x378C, 0xF5C7, 0xF371,\n    0xF067, 0xECA4, 0xE893, 0xE49D, 0xE12E, 0xDE10, 0xDB27, 0xD8FF,\n    0xD827, 0x05EF, 0x046A, 0x00A2, 0xFB08, 0xF4B8, 0xEED2, 0xEA76,\n    0xE82E, 0xE758, 0xE750, 0xE772, 0x9803, 0x9A06, 0x9BC9, 0x9DBC,\n    0xA000, 0xA2B5, 0xA5FF, 0xAB3F, 0xB219, 0xB80B, 0xBA94, 0x8001,\n    0x8001, 0x4171, 0x4171, 0x413B, 0x4104, 0x4171, 0x42BC, 0x4481,\n    0x466E, 0x4833, 0x497F, 0x49FF, 0xBF5F, 0x8001, 0x8001, 0x4118,\n    0x4171, 0x4261, 0x4391, 0x44E9, 0x4650, 0x47AD, 0x48E7, 0x49E6,\n    0x4A91, 0x4AD0, 0xBF5F, 0xD7EE, 0xDA08, 0xD6D5, 0xD2CD, 0xD31E,\n    0xD960, 0xE281, 0xECBA, 0xF63E, 0xFD43, 0x0000, 0xFC03, 0xF9D2,\n    0xFA74, 0xFC5E, 0xFDD9, 0xFE7C, 0xFF04, 0xFF70, 0xFFC0, 0xFFF0,\n    0x0000, 0xF089, 0xEF8A, 0xF039, 0xF258, 0xF593, 0xFA21, 0xFFD9,\n    0x05D7, 0x0B3A, 0x0F1C, 0x109A, 0x1F34, 0x232F, 0x2941, 0x2F6D,\n    0x30EF, 0x2A5B, 0x1F1E, 0x14B6, 0x0BB7, 0x038E, 0x0000, 0xEFAB,\n    0xEDC3, 0xF1A4, 0xF684, 0xF9FF, 0xFA91, 0xF9BD, 0xF9A8, 0xFBBF,\n    0xFE94, 0x0000, 0x184B, 0x1154, 0x0DC3, 0x0ADD, 0x088D, 0x0772,\n    0x06ED, 0x0507, 0xFF7B, 0xF88D, 0xF527, 0x17E6, 0x1588, 0x135F,\n    0x10A3, 0x0D8C, 0x0A54, 0x0733, 0x0461, 0x0218, 0x008F, 0x0000,\n    0x00F4, 0xFED9, 0xFE7F, 0xFE64, 0xFE7C, 0xFEB7, 0xFF07, 0xFF5F,\n    0xFFAF, 0xFFEA, 0x0000, 0x56B3, 0x582E, 0x55D4, 0x523F, 0x4DD7,\n    0x4902, 0x4428, 0x3FAE, 0x3BFD, 0x397A, 0x388D,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_6C.inc.c",
    "content": "static const struct Animation anim_6C[] = {\n    0,\n    189,\n    0,\n    0,\n    0x1B,\n    ANIMINDEX_NUMPARTS(anim_6C_indices),\n    anim_6C_values,\n    anim_6C_indices,\n    0,\n};\n\n\nstatic const u16 anim_6C_indices[] = {\n    0x0001, 0x0000, 0x001B, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x001C, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0281,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001B, 0x0266,\n    0x0001, 0x0263, 0x0001, 0x0264, 0x0001, 0x0265,\n    0x0001, 0x025F, 0x0001, 0x0260, 0x0001, 0x0261,\n    0x0001, 0x006F, 0x0001, 0x0070, 0x0001, 0x0071,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x006E,\n    0x001B, 0x001D, 0x001B, 0x0038, 0x001B, 0x0053,\n    0x0001, 0x0241, 0x0001, 0x0242, 0x0001, 0x0243,\n    0x0001, 0x00C4, 0x0001, 0x00C5, 0x0001, 0x00C6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00C3,\n    0x001B, 0x0072, 0x001B, 0x008D, 0x001B, 0x00A8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001B, 0x0244,\n    0x001B, 0x01F0, 0x001B, 0x020B, 0x001B, 0x0226,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001B, 0x01D5,\n    0x001B, 0x0184, 0x001B, 0x019F, 0x001B, 0x01BA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0262,\n    0x001B, 0x0133, 0x001B, 0x014E, 0x001B, 0x0169,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001B, 0x0118,\n    0x001B, 0x00C7, 0x001B, 0x00E2, 0x001B, 0x00FD,\n};\n\nstatic const s16 anim_6C_values[] = {\n    0x0000, 0x00A9, 0x00AD, 0x00B2, 0x00B5, 0x00B7, 0x00B9, 0x00BB,\n    0x00BC, 0x00BC, 0x00BC, 0x00BA, 0x00B9, 0x00B6, 0x00B4, 0x00B3,\n    0x00B1, 0x00B1, 0x00B3, 0x00B6, 0x00B9, 0x00BB, 0x00BB, 0x00B9,\n    0x00B4, 0x00AF, 0x00AA, 0x00A9, 0x3FFF, 0xD812, 0xD8AA, 0xDA35,\n    0xDC5A, 0xDEC1, 0xE110, 0xE42F, 0xE7B2, 0xE944, 0xE8B6, 0xE787,\n    0xE5EB, 0xE417, 0xE23F, 0xE098, 0xDF57, 0xDE79, 0xDDD1, 0xDD4D,\n    0xDCDE, 0xDC73, 0xDBFB, 0xDB66, 0xDA81, 0xD967, 0xD878, 0xD812,\n    0xD37E, 0xD2FC, 0xD1B3, 0xD001, 0xCE42, 0xCCD3, 0xCB90, 0xCA7F,\n    0xCA45, 0xCAE9, 0xCBED, 0xCD27, 0xCE6B, 0xCF90, 0xD06A, 0xD0D0,\n    0xD097, 0xCFD9, 0xCECB, 0xCDA7, 0xCCA3, 0xCBF7, 0xCBDB, 0xCD2F,\n    0xCFCC, 0xD258, 0xD37E, 0x0B50, 0x0AFD, 0x0A24, 0x08F5, 0x079E,\n    0x0651, 0x0499, 0x02A1, 0x018B, 0x0166, 0x0178, 0x01B7, 0x0219,\n    0x0293, 0x031C, 0x03A8, 0x0446, 0x0504, 0x05D6, 0x06B4, 0x0792,\n    0x0865, 0x0925, 0x09E0, 0x0A94, 0x0B1B, 0x0B50, 0xD32F, 0x39A6,\n    0xD182, 0x7DBF, 0x1FC8, 0x1FFD, 0x2088, 0x214C, 0x222A, 0x2304,\n    0x23BB, 0x2432, 0x244A, 0x23EB, 0x2325, 0x221A, 0x20EC, 0x1FBA,\n    0x1EA8, 0x1DD4, 0x1D32, 0x1CA1, 0x1C2A, 0x1BD7, 0x1BB0, 0x1BC0,\n    0x1C48, 0x1D4C, 0x1E72, 0x1F63, 0x1FC8, 0x233C, 0x2384, 0x243D,\n    0x253D, 0x265B, 0x276C, 0x2844, 0x28BA, 0x28A4, 0x27B8, 0x2603,\n    0x23D6, 0x2186, 0x1F63, 0x1DC2, 0x1CF4, 0x1D45, 0x1E86, 0x2050,\n    0x223F, 0x23ED, 0x24F4, 0x2524, 0x24C3, 0x241D, 0x2382, 0x233C,\n    0xF0A5, 0xF07C, 0xF00F, 0xEF71, 0xEEB9, 0xEDFB, 0xED4B, 0xECBE,\n    0xEC69, 0xEC5E, 0xEC91, 0xECE9, 0xED4B, 0xEDA0, 0xEDCD, 0xEDBA,\n    0xED34, 0xEC45, 0xEB2C, 0xEA28, 0xE979, 0xE95E, 0xEA4B, 0xEC1F,\n    0xEE36, 0xEFEE, 0xF0A5, 0xE243, 0xC789, 0x345A, 0x7C1D, 0x0480,\n    0x0422, 0x03C6, 0x03D7, 0x03F8, 0x0425, 0x0457, 0x0487, 0x04B0,\n    0x04D5, 0x04F6, 0x0502, 0x04E6, 0x04B5, 0x0499, 0x0498, 0x049C,\n    0x04A4, 0x04AE, 0x04B9, 0x04C4, 0x04CD, 0x04D2, 0x04D3, 0x04BD,\n    0x0495, 0x0480, 0xFD7B, 0xFCF9, 0xFC7C, 0xFC95, 0xFCC4, 0xFD02,\n    0xFD4A, 0xFD94, 0xFDD9, 0xFE35, 0xFE9A, 0xFEC5, 0xFE7B, 0xFDF7,\n    0xFDAA, 0xFDA5, 0xFDAC, 0xFDBE, 0xFDD5, 0xFDEF, 0xFE08, 0xFE1E,\n    0xFE2B, 0xFE2E, 0xFDFE, 0xFDA9, 0xFD7B, 0xC151, 0xC64B, 0xCB12,\n    0xCA27, 0xC85F, 0xC5FF, 0xC34F, 0xC093, 0xBE12, 0xBAFE, 0xB7BC,\n    0xB661, 0xB8D5, 0xBD2A, 0xBFB1, 0xBFD9, 0xBF93, 0xBEFD, 0xBE34,\n    0xBD54, 0xBC7C, 0xBBC7, 0xBB53, 0xBB3C, 0xBCDF, 0xBFC5, 0xC151,\n    0x22C5, 0x1B16, 0x12E1, 0x123C, 0x125D, 0x1340, 0x14DF, 0x1733,\n    0x1A37, 0x1FEB, 0x2876, 0x3107, 0x393B, 0x40C6, 0x44FE, 0x4696,\n    0x47FA, 0x4915, 0x49D1, 0x4A19, 0x49D8, 0x48F6, 0x4760, 0x44FE,\n    0x3AE0, 0x2B05, 0x22C5, 0x01CF, 0x035E, 0x0542, 0x05D2, 0x0637,\n    0x067F, 0x06BA, 0x06F5, 0x0740, 0x07B6, 0x082F, 0x0855, 0x0804,\n    0x0763, 0x0692, 0x059F, 0x048E, 0x036A, 0x0241, 0x011F, 0x0012,\n    0xFF26, 0xFE66, 0xFDE1, 0xFEBA, 0x00B3, 0x01CF, 0x098A, 0x08F4,\n    0x082E, 0x07D9, 0x0791, 0x0752, 0x0713, 0x06CE, 0x067D, 0x05EC,\n    0x0543, 0x0503, 0x058B, 0x067A, 0x072D, 0x0788, 0x07DA, 0x0824,\n    0x0867, 0x08A5, 0x08DF, 0x0915, 0x0948, 0x097A, 0x0994, 0x0991,\n    0x098A, 0x99B2, 0xA0C7, 0xA97E, 0xAC4C, 0xAE58, 0xAFEA, 0xB149,\n    0xB2BC, 0xB48B, 0xB79F, 0xBB04, 0xBC38, 0xB9CD, 0xB541, 0xB079,\n    0xABEC, 0xA6F5, 0xA1C5, 0x9C8D, 0x9782, 0x92D4, 0x8EB5, 0x8B58,\n    0x88F0, 0x8C73, 0x94EF, 0x99B2, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x002D, 0x005B, 0x0000,\n    0xFEAD, 0xFCE3, 0xFB85, 0xFAD9, 0xFA98, 0xFAD1, 0xFB94, 0xFCB6,\n    0xFDF0, 0xFEFC, 0xFFA9, 0x0000, 0x0017, 0x000B, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xFFFC, 0xFFF7, 0x0000, 0x0029, 0x0060,\n    0x007D, 0x0070, 0x0050, 0x002A, 0x000D, 0x0001, 0x0000, 0xFFFF,\n    0x0000, 0x0000, 0xBF40, 0xBFF9, 0xC1C3, 0xC40B, 0xC640, 0xC7CF,\n    0xC7E5, 0xC749, 0xC7CF, 0xCB48, 0xCFE4, 0xD1FE, 0xCF41, 0xCA0B,\n    0xC5C5, 0xC3FA, 0xC31F, 0xC205, 0xC03A, 0xBE35, 0xBC1A, 0xBA11,\n    0xB76E, 0xB64A, 0xB913, 0xBD28, 0xBF40, 0x37F4, 0x39E2, 0x3E9A,\n    0x4484, 0x4A08, 0x4D8C, 0x4ED3, 0x4D99, 0x4841, 0x3B98, 0x2AD1,\n    0x1DE1, 0x18D0, 0x1853, 0x1966, 0x1A53, 0x1B69, 0x1CAA, 0x1E17,\n    0x1FB2, 0x217D, 0x237A, 0x25AB, 0x2811, 0x2D4C, 0x3464, 0x37F4,\n    0xFC94, 0xFCE3, 0xFDA8, 0xFEA3, 0xFF95, 0x003F, 0x0083, 0x0079,\n    0x003F, 0xFFE5, 0xFF58, 0xFE8D, 0xFD48, 0xFBDA, 0xFB02, 0xFAC4,\n    0xFA9C, 0xFA88, 0xFA85, 0xFA8F, 0xFAA4, 0xFAC1, 0xFAE1, 0xFB02,\n    0xFB79, 0xFC33, 0xFC94, 0xF7D6, 0xF7C7, 0xF7A3, 0xF775, 0xF748,\n    0xF729, 0xF71E, 0xF722, 0xF729, 0xF723, 0xF721, 0xF746, 0xF7BC,\n    0xF853, 0xF8AE, 0xF8C8, 0xF8D9, 0xF8E2, 0xF8E5, 0xF8E2, 0xF8DA,\n    0xF8CE, 0xF8BF, 0xF8AE, 0xF86E, 0xF80A, 0xF7D6, 0xAE52, 0xACD8,\n    0xA930, 0xA486, 0xA005, 0x9CD6, 0x9B98, 0x9BC6, 0x9CD6, 0x9E75,\n    0xA0F5, 0xA4C3, 0xAB17, 0xB251, 0xB693, 0xB7D0, 0xB89B, 0xB901,\n    0xB913, 0xB8E0, 0xB877, 0xB7E8, 0xB741, 0xB693, 0xB422, 0xB04F,\n    0xAE52, 0x8001, 0x8001, 0x4171, 0xCB30, 0xCAAA, 0xC926, 0xC6B7,\n    0xC36E, 0xBF5F, 0xB7F9, 0xAE17, 0xA6ED, 0xA51D, 0xA605, 0xA6ED,\n    0xA66A, 0xA5E6, 0xA6ED, 0xA968, 0xAC30, 0xAF35, 0xB265, 0xB5B0,\n    0xB906, 0xBC56, 0xBF8F, 0xC2A1, 0xC62B, 0xC9A1, 0xCB30, 0x8001,\n    0x8001, 0x4171, 0xBF5F, 0xE052, 0x0BBB, 0x0081, 0x02EB, 0x0325,\n    0x03BE, 0x0498, 0x0593, 0x0691, 0x0774, 0x081B, 0x0869, 0x082C,\n    0x0771, 0x0671, 0x0568, 0x0490, 0x0424, 0x0428, 0x046A, 0x04D5,\n    0x0555, 0x05D6, 0x0644, 0x068B, 0x0696, 0x05F5, 0x04B4, 0x0379,\n    0x02EB, 0x47B4,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_6D.inc.c",
    "content": "static const struct Animation anim_6D[] = {\n    1,\n    189,\n    0,\n    0,\n    0x12,\n    ANIMINDEX_NUMPARTS(anim_6D_indices),\n    anim_6D_values,\n    anim_6D_indices,\n    0,\n};\n\n\nstatic const u16 anim_6D_indices[] = {\n    0x0001, 0x0000, 0x0012, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0013, 0x0001, 0x0000,\n    0x0012, 0x024D, 0x0012, 0x025F, 0x0012, 0x0271,\n    0x0012, 0x0217, 0x0012, 0x0229, 0x0012, 0x023B,\n    0x0012, 0x01E1, 0x0012, 0x01F3, 0x0012, 0x0205,\n    0x0001, 0x01DD, 0x0001, 0x01DE, 0x0001, 0x01DF,\n    0x0012, 0x005C, 0x0012, 0x006E, 0x0012, 0x0080,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x004A,\n    0x0012, 0x0014, 0x0012, 0x0026, 0x0012, 0x0038,\n    0x0001, 0x01D9, 0x0001, 0x01DA, 0x0001, 0x01DB,\n    0x0012, 0x00A7, 0x0012, 0x00B9, 0x0012, 0x00CB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x0095,\n    0x0001, 0x0092, 0x0001, 0x0093, 0x0001, 0x0094,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01DC,\n    0x0012, 0x01A3, 0x0012, 0x01B5, 0x0012, 0x01C7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x0191,\n    0x0012, 0x015B, 0x0012, 0x016D, 0x0012, 0x017F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01E0,\n    0x0012, 0x0125, 0x0012, 0x0137, 0x0012, 0x0149,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x0113,\n    0x0012, 0x00DD, 0x0012, 0x00EF, 0x0012, 0x0101,\n};\n\nstatic const s16 anim_6D_values[] = {\n    0x0000, 0x00D0, 0x00CD, 0x00C5, 0x00B9, 0x00AB, 0x009D, 0x0092,\n    0x0086, 0x0081, 0x0085, 0x008A, 0x0090, 0x0096, 0x009D, 0x00A3,\n    0x00A7, 0x00AB, 0x00AC, 0x3FFF, 0xF5E2, 0xF5A8, 0xF50A, 0xF425,\n    0xF313, 0xF1F0, 0xF0D9, 0xEFB2, 0xEE5C, 0xECE7, 0xEB62, 0xE9DD,\n    0xE868, 0xE714, 0xE5EF, 0xE50B, 0xE476, 0xE441, 0xEE00, 0xEE0F,\n    0xEE37, 0xEE70, 0xEEB6, 0xEEFF, 0xEF46, 0xEF90, 0xEFE6, 0xF044,\n    0xF0A7, 0xF109, 0xF167, 0xF1BD, 0xF207, 0xF240, 0xF266, 0xF273,\n    0xEB29, 0xEB60, 0xEBF6, 0xECCF, 0xEDD2, 0xEEE4, 0xEFED, 0xF104,\n    0xF248, 0xF3A9, 0xF519, 0xF689, 0xF7EA, 0xF92C, 0xFA41, 0xFB19,\n    0xFBA6, 0xFBD8, 0xEB9B, 0xE8DF, 0xE205, 0xD911, 0xD008, 0xC8F1,\n    0xC5D1, 0xC61E, 0xC7C6, 0xCA7F, 0xCDFE, 0xD1F7, 0xD621, 0xDA31,\n    0xDDDB, 0xE0D6, 0xE2D7, 0xE392, 0xD973, 0xD90F, 0xD811, 0xD6C1,\n    0xD568, 0xD44D, 0xD3B9, 0xD395, 0xD396, 0xD3B7, 0xD3EE, 0xD436,\n    0xD487, 0xD4D9, 0xD526, 0xD566, 0xD591, 0xD5A2, 0xDF38, 0xDFAA,\n    0xE0CD, 0xE258, 0xE3FF, 0xE577, 0xE676, 0xE719, 0xE7B0, 0xE83B,\n    0xE8B8, 0xE927, 0xE988, 0xE9D8, 0xEA18, 0xEA47, 0xEA63, 0xEA6D,\n    0xFE50, 0xFD86, 0xFB80, 0xF8C0, 0xF5CA, 0xF320, 0xF146, 0xF004,\n    0xEECE, 0xEDA9, 0xEC98, 0xEB9F, 0xEAC2, 0xEA05, 0xE96B, 0xE8F8,\n    0xE8B0, 0xE897, 0x13E1, 0x08D0, 0xF6A5, 0xEB65, 0xE86E, 0xE1DE,\n    0xDB36, 0xD7F7, 0xD7DD, 0xD842, 0xD90F, 0xDA30, 0xDB8E, 0xDD14,\n    0xDEAC, 0xE041, 0xE1BD, 0xE30A, 0xE413, 0xE4C2, 0xE501, 0x0F06,\n    0x0B11, 0x0073, 0xF110, 0xDECB, 0xCB88, 0xB929, 0xA994, 0x9EAB,\n    0x979C, 0x9230, 0x8E30, 0x8B64, 0x8995, 0x888D, 0x8815, 0x87F5,\n    0x87F6, 0x5988, 0x5A78, 0x5CF0, 0x6069, 0x645D, 0x6845, 0x6B9B,\n    0x6DD9, 0x6E78, 0x6D40, 0x6A9B, 0x66F3, 0x62B6, 0x5E4C, 0x5A23,\n    0x56A5, 0x543E, 0x5359, 0xB5D5, 0xB23C, 0xA89A, 0x9AAF, 0x8A38,\n    0x78F2, 0x68A0, 0x5AFE, 0x51CB, 0x4C6F, 0x48F1, 0x46FB, 0x463A,\n    0x4659, 0x4704, 0x47E7, 0x48AC, 0x4901, 0xFD89, 0xFDDC, 0xFEC6,\n    0x002D, 0x01FC, 0x0418, 0x0669, 0x08D8, 0x0B4C, 0x0E2A, 0x11B8,\n    0x15B0, 0x19CC, 0x1DC6, 0x2157, 0x243B, 0x262A, 0x26DE, 0xF92B,\n    0xF9D1, 0xFB90, 0xFE17, 0x0115, 0x043C, 0x073C, 0x09C3, 0x0B82,\n    0x0C9A, 0x0D66, 0x0DF2, 0x0E49, 0x0E78, 0x0E88, 0x0E85, 0x0E7C,\n    0x0E76, 0xD95A, 0xD8D0, 0xD75C, 0xD544, 0xD2C9, 0xD030, 0xCDBA,\n    0xCBAC, 0xCA49, 0xC979, 0xC8F1, 0xC8A3, 0xC884, 0xC886, 0xC89E,\n    0xC8BF, 0xC8DB, 0xC8E8, 0x18FE, 0x1B41, 0x213E, 0x29C1, 0x3395,\n    0x3D88, 0x4664, 0x4CF7, 0x500B, 0x4F71, 0x4C3C, 0x4723, 0x40DE,\n    0x3A23, 0x33A8, 0x2E25, 0x2A51, 0x28E1, 0x0DFA, 0x0E3C, 0x0EEF,\n    0x0FF2, 0x1124, 0x1265, 0x1395, 0x1494, 0x1541, 0x15A8, 0x15EE,\n    0x1618, 0x162C, 0x162F, 0x1629, 0x161D, 0x1611, 0x160C, 0x0615,\n    0x06F5, 0x0945, 0x0C8F, 0x105C, 0x1435, 0x17A4, 0x1A32, 0x1B68,\n    0x1B33, 0x1A00, 0x1814, 0x15B5, 0x1328, 0x10B2, 0x0E9B, 0x0D26,\n    0x0C9B, 0xB333, 0xB24A, 0xAFE2, 0xAC78, 0xA889, 0xA490, 0xA10C,\n    0x9E77, 0x9D50, 0x9DAE, 0x9F24, 0xA163, 0xA41F, 0xA709, 0xA9D5,\n    0xAC34, 0xADD9, 0xAE77, 0xFFA8, 0xFD15, 0xF748, 0xF129, 0xEA90,\n    0xE3A4, 0xDFB9, 0xDE9E, 0xDDE3, 0xDD7A, 0xDD53, 0xDD60, 0xDD94,\n    0xDDDE, 0xDE32, 0xDE7F, 0xDEB8, 0xDECF, 0xFF60, 0xFDBF, 0xFA41,\n    0xF6FD, 0xF450, 0xF1DC, 0xF0A5, 0xF07C, 0xF085, 0xF0B4, 0xF102,\n    0xF164, 0xF1D0, 0xF23F, 0xF2A5, 0xF2F9, 0xF333, 0xF348, 0xD31B,\n    0xCF1C, 0xC714, 0xC0EF, 0xBF2C, 0xBF4C, 0xBFC2, 0xBFE9, 0xC024,\n    0xC06D, 0xC0BF, 0xC117, 0xC16E, 0xC1C0, 0xC209, 0xC242, 0xC268,\n    0xC276, 0x173E, 0x1CF0, 0x299D, 0x36A5, 0x446D, 0x5290, 0x593F,\n    0x58D7, 0x571E, 0x545E, 0x50DE, 0x4CE9, 0x48C8, 0x44C3, 0x4124,\n    0x3E33, 0x3C39, 0x3B81, 0xE55D, 0xE6BF, 0xEA75, 0xEFD8, 0xF868,\n    0x02A5, 0x096A, 0x0B8D, 0x0BE3, 0x0B40, 0x0A78, 0x0A61, 0x0B1C,\n    0x0C1D, 0x0D37, 0x0E3A, 0x0EF7, 0x0F41, 0xF886, 0xF630, 0xF221,\n    0xF0C4, 0xF532, 0xFC52, 0x0142, 0x02CF, 0x0348, 0x031E, 0x02BE,\n    0x0299, 0x02AA, 0x02AA, 0x029F, 0x0290, 0x0281, 0x027B, 0xBBB3,\n    0xB931, 0xB32C, 0xABE1, 0xA24F, 0x9778, 0x909E, 0x8EC9, 0x8EF0,\n    0x9040, 0x91E7, 0x9310, 0x93DA, 0x94D4, 0x95DA, 0x96C4, 0x976C,\n    0x97AD, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171,\n    0xBF5F, 0x168D, 0x169D, 0x16C5, 0x16FC, 0x1736, 0x1769, 0x178B,\n    0x1792, 0x1773, 0x1721, 0x16A0, 0x1601, 0x1551, 0x14A0, 0x13FC,\n    0x1375, 0x1319, 0x12F7, 0xF943, 0xF9CE, 0xFB3E, 0xFD4B, 0xFFAB,\n    0x0215, 0x0442, 0x05E7, 0x06BD, 0x06BB, 0x0626, 0x0526, 0x03E1,\n    0x027F, 0x0127, 0x0001, 0xFF35, 0xFEE7, 0x0B57, 0x0AD6, 0x0982,\n    0x079C, 0x0569, 0x032B, 0x0126, 0xFF9E, 0xFED5, 0xFED0, 0xFF51,\n    0x0033, 0x0155, 0x0292, 0x03C6, 0x04CE, 0x0587, 0x05CC, 0x2715,\n    0x249C, 0x1E60, 0x162C, 0x0DCB, 0x0707, 0x03AB, 0x0333, 0x03C4,\n    0x0529, 0x072E, 0x099B, 0x0C3C, 0x0EDA, 0x1141, 0x133B, 0x1492,\n    0x1510, 0x032D, 0x016D, 0xFD07, 0xF73D, 0xF154, 0xEC90, 0xEA37,\n    0xE9EB, 0xEA5D, 0xEB67, 0xECE2, 0xEEA8, 0xF091, 0xF278, 0xF436,\n    0xF5A4, 0xF69C, 0xF6F7, 0x02C8, 0x047E, 0x08C2, 0x0E47, 0x13C3,\n    0x17E7, 0x1967, 0x1893, 0x16BB, 0x141C, 0x10EF, 0x0D70, 0x09D9,\n    0x0665, 0x0350, 0x00D3, 0xFF2B, 0xFE90, 0xC2F3, 0xC6F1, 0xCE9A,\n    0xD378, 0xD4B2, 0xD5BE, 0xD69F, 0xD759, 0xD7EF, 0xD866, 0xD8C2,\n    0xD905, 0xD933, 0xD951, 0xD962, 0xD969, 0xD96B, 0xD96B, 0xFB70,\n    0xFB89, 0xFBD6, 0xFC62, 0xFD1D, 0xFDF3, 0xFEDD, 0xFFD5, 0x00D3,\n    0x01D2, 0x02CC, 0x03B9, 0x0494, 0x0555, 0x05F7, 0x0672, 0x06C1,\n    0x06DD, 0x3D39, 0x3D4A, 0x3D80, 0x3DE1, 0x3E64, 0x3EFA, 0x3F9D,\n    0x404A, 0x40FC, 0x41AE, 0x425D, 0x4303, 0x439B, 0x4422, 0x4493,\n    0x44EA, 0x4521, 0x4534,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_6E.inc.c",
    "content": "static const struct Animation anim_6E[] = {\n    1,\n    189,\n    0,\n    0,\n    0x10,\n    ANIMINDEX_NUMPARTS(anim_6E_indices),\n    anim_6E_values,\n    anim_6E_indices,\n    0,\n};\n\n\nstatic const u16 anim_6E_indices[] = {\n    0x0001, 0x0000, 0x0010, 0x0001, 0x0010, 0x0011, 0x0001, 0x0000, 0x0001, 0x0021, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x0228,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x0218,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x0208,\n    0x0001, 0x01F5, 0x0001, 0x01F6, 0x0010, 0x01F7,\n    0x0010, 0x0062, 0x0010, 0x0072, 0x0010, 0x0082,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x0052,\n    0x0010, 0x0022, 0x0010, 0x0032, 0x0010, 0x0042,\n    0x0001, 0x01E2, 0x0001, 0x01E3, 0x0010, 0x01E4,\n    0x0010, 0x00D2, 0x0010, 0x00E2, 0x0010, 0x00F2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x00C2,\n    0x0010, 0x0092, 0x0010, 0x00A2, 0x0010, 0x00B2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01F4,\n    0x0010, 0x01B2, 0x0010, 0x01C2, 0x0010, 0x01D2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x01A2,\n    0x0010, 0x0172, 0x0010, 0x0182, 0x0010, 0x0192,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0207,\n    0x0010, 0x0142, 0x0010, 0x0152, 0x0010, 0x0162,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x0132,\n    0x0010, 0x0102, 0x0010, 0x0112, 0x0010, 0x0122,\n};\n\nstatic const s16 anim_6E_values[] = {\n    0x0000, 0x009E, 0x0099, 0x0095, 0x0090, 0x008C, 0x0088, 0x0083,\n    0x0083, 0x0084, 0x008B, 0x0093, 0x0099, 0x00A0, 0x00A6, 0x00AA,\n    0x00AC, 0x0007, 0x0003, 0xFFFF, 0xFFFA, 0xFFF4, 0xFFEF, 0xFFEB,\n    0xFFEA, 0xFFEB, 0xFFEE, 0xFFF1, 0xFFF4, 0xFFF8, 0xFFFB, 0xFFFE,\n    0xFFFF, 0x3FFF, 0xE7CE, 0xE7CE, 0xE7CE, 0xE7CE, 0xE7CE, 0xE7CE,\n    0xE7CE, 0xE722, 0xE7CE, 0xEB1F, 0xEF59, 0xF3F6, 0xF874, 0xFC4D,\n    0xFEFE, 0x0000, 0xF984, 0xF984, 0xF984, 0xF984, 0xF984, 0xF984,\n    0xF984, 0xF984, 0xF984, 0xF983, 0xF981, 0xF980, 0xF97E, 0xF97D,\n    0xF97C, 0xF97C, 0xE96B, 0xE96B, 0xE96B, 0xE96B, 0xE96B, 0xE96B,\n    0xE96B, 0xE94E, 0xE96B, 0xE9FC, 0xEAB4, 0xEB7E, 0xEC42, 0xECEA,\n    0xED5F, 0xED8C, 0xF8C2, 0xF831, 0xF772, 0xF699, 0xF5BC, 0xF4EF,\n    0xF446, 0xF54D, 0xF446, 0xEE86, 0xE732, 0xDF31, 0xD767, 0xD0BA,\n    0xCC10, 0xCA4F, 0x1219, 0x11CC, 0x1167, 0x10F4, 0x107F, 0x1012,\n    0x0FB9, 0x1038, 0x0FB9, 0x0CE6, 0x094C, 0x055D, 0x018A, 0xFE44,\n    0xFBF9, 0xFB1D, 0xF942, 0xF8AD, 0xF7E8, 0xF708, 0xF624, 0xF550,\n    0xF4A2, 0xF56D, 0xF4A2, 0xF001, 0xEA1B, 0xE3AA, 0xDD65, 0xD806,\n    0xD445, 0xD2DC, 0x8A06, 0x8B60, 0x8D28, 0x8F2C, 0x913C, 0x9326,\n    0x94B9, 0x9348, 0x94B9, 0x9D7D, 0xA8A9, 0xB4DE, 0xC0BE, 0xCAEB,\n    0xD207, 0xD4B4, 0x0ACF, 0x0ACF, 0x0ACF, 0x0ACF, 0x0ACF, 0x0ACF,\n    0x0ACF, 0x0B1C, 0x0ACF, 0x0954, 0x0771, 0x0561, 0x035F, 0x01A7,\n    0x0073, 0x0000, 0x020D, 0x020D, 0x020D, 0x020D, 0x020D, 0x020D,\n    0x020D, 0x021C, 0x020D, 0x01C5, 0x0169, 0x0105, 0x00A3, 0x0050,\n    0x0015, 0x0000, 0xEDD2, 0xEDD2, 0xEDD2, 0xEDD2, 0xEDD2, 0xEDD2,\n    0xEDD2, 0xED9D, 0xEDD2, 0xEED8, 0xF025, 0xF192, 0xF2F5, 0xF425,\n    0xF4F9, 0xF549, 0xF033, 0xEEB6, 0xECBE, 0xEA84, 0xE83C, 0xE61F,\n    0xE463, 0xE4CF, 0xE463, 0xE07A, 0xDB7F, 0xD60E, 0xD0C3, 0xCC3A,\n    0xC90F, 0xC7DD, 0xF2FE, 0xF379, 0xF41B, 0xF4D3, 0xF58F, 0xF63D,\n    0xF6CC, 0xF684, 0xF6CC, 0xF8C9, 0xFB51, 0xFE15, 0x00C5, 0x0314,\n    0x04B0, 0x054B, 0x0D07, 0x0D64, 0x0DDE, 0x0E69, 0x0EF7, 0x0F7A,\n    0x0FE6, 0x0F36, 0x0FE6, 0x13BA, 0x189B, 0x1DF0, 0x231F, 0x2791,\n    0x2AAB, 0x2BD6, 0x8F03, 0x9063, 0x9232, 0x9440, 0x9659, 0x984C,\n    0x99E5, 0x98D1, 0x99E5, 0xA0E4, 0xA9CF, 0xB38D, 0xBD08, 0xC527,\n    0xCAD4, 0xCCF6, 0x008C, 0xFFF3, 0xFF25, 0xFE39, 0xFD47, 0xFC67,\n    0xFBAF, 0xFB6A, 0xFBAF, 0xFC47, 0xFD08, 0xFDDB, 0xFEA8, 0xFF58,\n    0xFFD2, 0x0000, 0x016D, 0x0124, 0x00BE, 0x0047, 0xFFCD, 0xFF5A,\n    0xFEFD, 0xFEE8, 0xFEFD, 0xFF04, 0xFF0D, 0xFF17, 0xFF20, 0xFF28,\n    0xFF2E, 0xFF30, 0xBB94, 0xBB5E, 0xBBAC, 0xBC4E, 0xBD15, 0xBDD2,\n    0xBE56, 0xBE1A, 0xBE56, 0xBFEA, 0xC1EC, 0xC41E, 0xC641, 0xC816,\n    0xC95D, 0xC9D8, 0x3311, 0x35D0, 0x383D, 0x3A64, 0x3C52, 0x3E12,\n    0x3FB2, 0x4105, 0x3FB2, 0x3B1E, 0x3549, 0x2EE9, 0x28B6, 0x2365,\n    0x1FAF, 0x1E4A, 0x17C1, 0x164C, 0x149B, 0x12CF, 0x1107, 0x0F61,\n    0x0DFE, 0x0D53, 0x0DFE, 0x0FC7, 0x120E, 0x148B, 0x16F7, 0x190A,\n    0x1A7D, 0x1B09, 0x15CC, 0x15F9, 0x15B9, 0x1533, 0x148E, 0x13F2,\n    0x1384, 0x1382, 0x1384, 0x1335, 0x12D1, 0x1263, 0x11F8, 0x119C,\n    0x115C, 0x1144, 0xAE8E, 0xAAF3, 0xA6B9, 0xA232, 0x9DB0, 0x9986,\n    0x9604, 0x94A2, 0x9604, 0x9911, 0x9CF3, 0xA132, 0xA553, 0xA8DD,\n    0xAB56, 0xAC44, 0xFED4, 0xFF75, 0x0051, 0x0150, 0x0256, 0x0349,\n    0x040F, 0x0456, 0x040F, 0x0381, 0x02CB, 0x0205, 0x0144, 0x009E,\n    0x002B, 0x0000, 0xFFA2, 0xFFB0, 0xFFCB, 0xFFED, 0x0012, 0x0035,\n    0x0051, 0x0058, 0x0051, 0x0046, 0x0037, 0x0028, 0x0019, 0x000C,\n    0x0003, 0x0000, 0xB30A, 0xB28D, 0xB2F3, 0xB3EB, 0xB526, 0xB651,\n    0xB71E, 0xB705, 0xB71E, 0xB83B, 0xB9A7, 0xBB34, 0xBCB7, 0xBE02,\n    0xBEE9, 0xBF40, 0x378C, 0x3AA9, 0x3D22, 0x3F20, 0x40CA, 0x424A,\n    0x43C5, 0x4500, 0x43C5, 0x3F95, 0x3A3F, 0x346B, 0x2EBF, 0x29E3,\n    0x267E, 0x2537, 0xD827, 0xD9D1, 0xDBE9, 0xDE3A, 0xE092, 0xE2BE,\n    0xE48B, 0xE554, 0xE48B, 0xE297, 0xE01A, 0xDD62, 0xDABD, 0xD878,\n    0xD6E3, 0xD64A, 0xE772, 0xE60B, 0xE4B0, 0xE366, 0xE232, 0xE118,\n    0xE01C, 0xDF8B, 0xE01C, 0xE1C6, 0xE3E5, 0xE636, 0xE877, 0xEA65,\n    0xEBBF, 0xEC41, 0xBA94, 0xB707, 0xB28E, 0xAD97, 0xA891, 0xA3E8,\n    0xA00C, 0x9E9F, 0xA00C, 0xA301, 0xA6C5, 0xAAE3, 0xAEE4, 0xB252,\n    0xB4B7, 0xB59E, 0x7FFF, 0x7FFF, 0x49FF, 0x4983, 0x4841, 0x4685,\n    0x449C, 0x42D1, 0x4171, 0x412C, 0x4171, 0x4171, 0x4171, 0x4171,\n    0x4171, 0x4171, 0x4171, 0x4171, 0xBF5F, 0x7FFF, 0x7FFF, 0x4AD0,\n    0x4A48, 0x48E7, 0x4701, 0x44E9, 0x42F3, 0x4171, 0x4126, 0x4171,\n    0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0xBF5F,\n    0x109A, 0x102A, 0x0F4F, 0x0E1B, 0x0C9C, 0x0AE4, 0x0902, 0x0655,\n    0x02D4, 0xFF77, 0xFD31, 0xFC36, 0xFBE5, 0xFBFE, 0xFC3E, 0xFC62,\n    0xF527, 0xF9FA, 0x0051, 0x0781, 0x0ED8, 0x15A7, 0x1B40, 0x1CF9,\n    0x1B40, 0x18A0, 0x1548, 0x11A1, 0x0E13, 0x0B07, 0x08E7, 0x081A,\n    0x3979, 0x39EF, 0x3A75, 0x3B08, 0x3BA4, 0x3C45, 0x3CE8, 0x3D8A,\n    0x3E26, 0x3EB9, 0x3F3F, 0x3FB5, 0x4017, 0x4061, 0x4090, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_6F_70.inc.c",
    "content": "static const struct Animation anim_6F[] = {\n    0,\n    189,\n    0,\n    0,\n    0x0A,\n    ANIMINDEX_NUMPARTS(anim_6F_70_indices),\n    anim_6F_70_values,\n    anim_6F_70_indices,\n    0,\n};\n\nstatic const struct Animation anim_70[] = {\n    2,\n    189,\n    0,\n    0,\n    0x0A,\n    ANIMINDEX_NUMPARTS(anim_6F_70_indices),\n    anim_6F_70_values,\n    anim_6F_70_indices,\n    0,\n};\n\n\nstatic const u16 anim_6F_70_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0027,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0026,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0025,\n    0x0001, 0x0021, 0x0001, 0x0022, 0x0001, 0x0023,\n    0x0001, 0x0007, 0x0001, 0x0008, 0x0001, 0x0009,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0006,\n    0x0001, 0x0003, 0x0001, 0x0004, 0x0001, 0x0005,\n    0x0001, 0x001D, 0x0001, 0x001E, 0x0001, 0x001F,\n    0x0001, 0x000C, 0x0001, 0x000D, 0x0001, 0x000E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x000B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x000A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0020,\n    0x0001, 0x001A, 0x0001, 0x001B, 0x0001, 0x001C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0019,\n    0x0001, 0x0016, 0x0001, 0x0017, 0x0001, 0x0018,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0024,\n    0x0001, 0x0013, 0x0001, 0x0014, 0x0001, 0x0015,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0012,\n    0x0001, 0x000F, 0x0001, 0x0010, 0x0001, 0x0011,\n};\n\nstatic const s16 anim_6F_70_values[] = {\n    0x0000, 0x0090, 0x3FFF, 0x00A8, 0xF984, 0xE96B, 0xC898, 0x1106,\n    0xE692, 0xB427, 0xED8C, 0xC68E, 0xF40A, 0x1E67, 0xB4BD, 0x001B,\n    0x025B, 0xCB25, 0x5AFE, 0x008D, 0xFECB, 0x83AC, 0x0095, 0xFF09,\n    0xCC42, 0x5730, 0xFFBA, 0x0051, 0x85D1, 0x7FFF, 0x7FFF, 0x4171,\n    0xBF5F, 0x7FFF, 0x7FFF, 0x4171, 0xBF5F, 0x2A6B, 0x0F71, 0x3FFF,\n    0x5948, 0x7290, 0x8BD8, 0xA521, 0xBE69, 0xD7B2, 0xF0FA, 0x0A43,\n    0x238B,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_71.inc.c",
    "content": "static const struct Animation anim_71[] = {\n    1,\n    189,\n    0,\n    0,\n    0x18,\n    ANIMINDEX_NUMPARTS(anim_71_indices),\n    anim_71_values,\n    anim_71_indices,\n    0,\n};\n\n\nstatic const u16 anim_71_indices[] = {\n    0x0018, 0x0001, 0x0018, 0x0019, 0x0018, 0x0031, 0x0001, 0x0000, 0x0001, 0x0049, 0x0001, 0x0000,\n    0x0018, 0x03C7, 0x0018, 0x03DF, 0x0018, 0x03F7,\n    0x0018, 0x037F, 0x0018, 0x0397, 0x0018, 0x03AF,\n    0x0018, 0x0337, 0x0018, 0x034F, 0x0018, 0x0367,\n    0x0018, 0x02EE, 0x0018, 0x0306, 0x0018, 0x031E,\n    0x0018, 0x00AA, 0x0018, 0x00C2, 0x0018, 0x00DA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x0092,\n    0x0018, 0x004A, 0x0018, 0x0062, 0x0018, 0x007A,\n    0x0001, 0x02EA, 0x0001, 0x02EB, 0x0001, 0x02EC,\n    0x0018, 0x0152, 0x0018, 0x016A, 0x0018, 0x0182,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x013A,\n    0x0018, 0x00F2, 0x0018, 0x010A, 0x0018, 0x0122,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02ED,\n    0x0018, 0x02A2, 0x0018, 0x02BA, 0x0018, 0x02D2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x028A,\n    0x0018, 0x0242, 0x0018, 0x025A, 0x0018, 0x0272,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0336,\n    0x0018, 0x01FA, 0x0018, 0x0212, 0x0018, 0x022A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x01E2,\n    0x0018, 0x019A, 0x0018, 0x01B2, 0x0018, 0x01CA,\n};\n\nstatic const s16 anim_71_values[] = {\n    0x0000, 0xFFF4, 0x0008, 0xFFF8, 0xFFF3, 0xFFF6, 0xFFE1, 0xFFDB,\n    0xFFCE, 0xFFD3, 0xFFDE, 0xFFDD, 0xFFE8, 0xFFF0, 0x000D, 0x000E,\n    0x000D, 0x000B, 0x0009, 0x0006, 0x0005, 0x0003, 0x0001, 0x0000,\n    0x0000, 0x008D, 0x007B, 0x0080, 0x0097, 0x009C, 0x009D, 0x008D,\n    0x0080, 0x007F, 0x009A, 0x00A2, 0x00A1, 0x008F, 0x008B, 0x0088,\n    0x0087, 0x0082, 0x007D, 0x0078, 0x0073, 0x0070, 0x006C, 0x006A,\n    0x0069, 0x0045, 0x006B, 0x00B0, 0x00A5, 0x00AD, 0x00BF, 0x00C9,\n    0x00AF, 0x0077, 0x0054, 0x0056, 0x005B, 0x0046, 0x0016, 0xFFF3,\n    0xFFF9, 0xFFFD, 0x0000, 0x0002, 0x0001, 0xFFFA, 0xFFEE, 0xFFE2,\n    0xFFDD, 0x3FFF, 0xE53C, 0xE262, 0xD8D5, 0xCEB9, 0xCFC7, 0xEF05,\n    0x1719, 0x2476, 0x2AF7, 0x290F, 0x2F2C, 0x3594, 0x25CF, 0x3AC7,\n    0x2D73, 0x1C96, 0x0CA1, 0xFE48, 0xF06A, 0xE10B, 0xD1F8, 0xC4FB,\n    0xBBE0, 0xB870, 0xEA28, 0xE97A, 0xE7A4, 0xE5C9, 0xE711, 0xF20C,\n    0xFCFA, 0xF27D, 0xF9D1, 0x0135, 0x08D3, 0x1A28, 0x15D2, 0x1467,\n    0x004C, 0xF2FA, 0xEDF2, 0xEB85, 0xE9DC, 0xE85C, 0xE715, 0xE618,\n    0xE574, 0xE53A, 0xE4D0, 0xED22, 0xF496, 0xFB87, 0xFCDE, 0xF09E,\n    0xDD50, 0xC907, 0xCC5A, 0xD844, 0xD28A, 0xC8C2, 0xD94F, 0xE65C,\n    0xD9FB, 0xD81F, 0xDA6D, 0xDDC9, 0xE1B7, 0xE655, 0xEB02, 0xEF1F,\n    0xF20C, 0xF329, 0xE5B6, 0xD6D6, 0xD911, 0xDD41, 0xE25C, 0xE757,\n    0xEB29, 0xE832, 0xDDCC, 0xD60A, 0xD855, 0xDC2F, 0xE03D, 0xE326,\n    0xE4C0, 0xE160, 0xD099, 0xC2DF, 0xC29A, 0xC4F4, 0xC8C8, 0xCCF1,\n    0xD047, 0xD1A5, 0xE523, 0xD803, 0xDF7B, 0xF7C0, 0x1877, 0x0B31,\n    0x0537, 0x013F, 0xFA0E, 0xFB15, 0xF780, 0xF6A9, 0xFEB2, 0x0C7D,\n    0x2644, 0x4D09, 0x4E72, 0x47FD, 0x423E, 0x3B56, 0x3545, 0x3207,\n    0x4232, 0x4683, 0xE134, 0xFBF0, 0x0413, 0xE9A7, 0xD45E, 0xEEF0,\n    0xF902, 0xF3CE, 0xE5C7, 0xD85D, 0xD6BB, 0xDB5A, 0xEC2C, 0xFC7B,\n    0xF35F, 0xE9D2, 0xE132, 0xDA4D, 0xD603, 0xD29A, 0xCF93, 0xCC6E,\n    0xC972, 0xC85D, 0xDDB9, 0xEB4F, 0x0B0A, 0x0EFF, 0x020A, 0xF4F6,\n    0xF10C, 0xF921, 0xED44, 0xE0A9, 0xD777, 0xCB20, 0xB373, 0x9A03,\n    0x8B8D, 0x74B9, 0x6BAC, 0x626B, 0x52ED, 0x41AF, 0x3037, 0x200B,\n    0x1753, 0x1427, 0xC9D0, 0xCD41, 0xDDA7, 0xDD42, 0xD3C5, 0xD5D5,\n    0xD04E, 0xD67F, 0xE641, 0xF889, 0x0A6F, 0x190C, 0x2177, 0x0E2B,\n    0xF4FA, 0x0B29, 0x0E50, 0x103D, 0x1866, 0x2292, 0x2D32, 0x36B8,\n    0x3D93, 0x4035, 0x0A52, 0x1260, 0x17EC, 0x161A, 0x0345, 0xF112,\n    0xFDB6, 0xF9AD, 0xFAFE, 0xFC65, 0xFE6A, 0x0190, 0x0660, 0x1567,\n    0x2266, 0x0BA2, 0x0D5C, 0x12B3, 0x14BE, 0x16C8, 0x18A5, 0x1A2E,\n    0x1B37, 0x1B99, 0xD324, 0xD7F6, 0xDB3E, 0xDC28, 0xDD63, 0xEB34,\n    0xD608, 0xD224, 0xDAAB, 0xE596, 0xF090, 0xF945, 0xFD60, 0xEB8F,\n    0xD95A, 0xFE24, 0x0278, 0x0024, 0xFF7D, 0xFE75, 0xFD46, 0xFC27,\n    0xFB51, 0xFAFE, 0xD051, 0xCF46, 0xDEAF, 0xDE7A, 0xCFB2, 0xB3C5,\n    0xC4D4, 0xD814, 0xDE94, 0xE3CA, 0xE7C8, 0xEA9E, 0xEC60, 0xED1F,\n    0xE621, 0xDA2B, 0xCE16, 0xC670, 0xC6DB, 0xC926, 0xCC73, 0xCFE3,\n    0xD296, 0xD3AE, 0xC6D0, 0xCA2C, 0xBFDA, 0xB5C9, 0x7DC7, 0xA5C1,\n    0x9656, 0x8292, 0x95A3, 0xB95B, 0xA969, 0x7CD1, 0xE70F, 0xD80F,\n    0xD10A, 0xCE68, 0xCF7D, 0xD169, 0xD3E0, 0xD693, 0xD934, 0xDB76,\n    0xDD09, 0xDDA1, 0x1F8A, 0x234B, 0x2104, 0x2999, 0x4DE9, 0x65F5,\n    0x76AA, 0x7A50, 0x7147, 0x6BFF, 0x5D25, 0x5DC5, 0x203F, 0x25B8,\n    0x242D, 0x22B1, 0x23F1, 0x25AE, 0x27B4, 0x29D1, 0x2BCF, 0x2D7C,\n    0x2EA3, 0x2F11, 0x8791, 0x94DD, 0x9B46, 0x9A74, 0x5433, 0x7EBB,\n    0x7DE1, 0x6F2A, 0x853E, 0x8141, 0x5E21, 0x2D9B, 0xA2A0, 0x988F,\n    0x84AC, 0x739B, 0x693F, 0x5E84, 0x53F5, 0x4A1B, 0x4181, 0x3AB1,\n    0x3635, 0x3498, 0xFFBA, 0xFFCF, 0xFFB1, 0xFF85, 0xFF57, 0xFF47,\n    0xFFDA, 0xFFDE, 0xFFD0, 0xFFBC, 0xFFAE, 0xFFB1, 0xFFF1, 0x006B,\n    0x00ED, 0x0140, 0x0130, 0x0088, 0xF881, 0xFA0C, 0xFCF1, 0xFE6D,\n    0xFF99, 0x0012, 0xFF39, 0xFF31, 0xFF3B, 0xFF60, 0xFF88, 0xFF99,\n    0xFF30, 0xFF28, 0xFF28, 0xFF2F, 0xFF38, 0xFF40, 0xFF4F, 0xFF6C,\n    0xFF89, 0xFF9B, 0xFF95, 0xFF6A, 0xFD7A, 0xFDF2, 0xFEB4, 0xFEFB,\n    0xFF24, 0xFF31, 0xD7CA, 0xD3A2, 0xD9EE, 0xE541, 0xF10E, 0xF55B,\n    0xD183, 0xCFF8, 0xD2BD, 0xD719, 0xDA57, 0xD9BD, 0xD548, 0xCF08,\n    0xC75F, 0xBEB1, 0xB560, 0xABCF, 0x96D2, 0xA157, 0xAFEA, 0xB9E5,\n    0xC282, 0xC62D, 0x229B, 0x3C67, 0x4F41, 0x3379, 0x1605, 0x0DC9,\n    0x0EB9, 0x1178, 0x1539, 0x19E1, 0x1F55, 0x257B, 0x2D2F, 0x3696,\n    0x4085, 0x49D1, 0x514D, 0x55CE, 0x5662, 0x53C8, 0x4F5E, 0x4A85,\n    0x469A, 0x44FE, 0xEB40, 0xF434, 0xFDBC, 0x0846, 0x0B59, 0x0232,\n    0x0FBD, 0xFBA2, 0x02E2, 0x01FE, 0xFFD2, 0x017B, 0x0B6D, 0x1935,\n    0x229C, 0x23C0, 0x2081, 0x1C51, 0x16DD, 0x1105, 0x0C55, 0x079D,\n    0x03F9, 0x0283, 0x0075, 0xF8B4, 0xF7DB, 0xF46C, 0xFCFD, 0x07C5,\n    0x169F, 0x1FD4, 0x1F4A, 0x143C, 0x0770, 0xFE56, 0xFC07, 0xFD69,\n    0xFEA0, 0xFD60, 0xFBF5, 0xFD6E, 0x07DC, 0x1250, 0x1504, 0x15CA,\n    0x1591, 0x1549, 0xDA06, 0xD3CD, 0xC8C3, 0xB3E4, 0xA81E, 0xACCD,\n    0xA7DB, 0xA90D, 0xC7A5, 0xDC8B, 0xEEDF, 0xF518, 0xE6CF, 0xCC6A,\n    0xB596, 0xA8D6, 0x9FA6, 0x9628, 0x893F, 0x7EE5, 0x79D5, 0x763C,\n    0x7416, 0x735F, 0xFA89, 0xFAA0, 0xFA9D, 0xFA92, 0xFA80, 0xFA6C,\n    0xFA59, 0xFA49, 0xFA41, 0xFA42, 0xFA50, 0xFA6F, 0xFCDE, 0xFC7F,\n    0xEA0C, 0xE921, 0xE9F8, 0xEBE6, 0xEE44, 0xF067, 0xF2F7, 0xF641,\n    0xF917, 0xFA4C, 0x015B, 0x01C5, 0x01A7, 0x017D, 0x0148, 0x0108,\n    0x00BE, 0x006A, 0x000D, 0xFFA8, 0xFF39, 0xFEC3, 0xFD74, 0xFC0D,\n    0xFCC5, 0xFCC1, 0xFC9B, 0xFC73, 0xFC68, 0xFC9A, 0xFD56, 0xFE7B,\n    0xFF8A, 0x0000, 0xC4FE, 0xC805, 0xC734, 0xC61C, 0xC4BC, 0xC310,\n    0xC116, 0xBECC, 0xBC2F, 0xB93C, 0xB5F2, 0xB24C, 0xA66F, 0x9A1D,\n    0xA417, 0xA573, 0xA5A3, 0xA57A, 0xA5CE, 0xA770, 0xABF7, 0xB297,\n    0xB893, 0xBB2D, 0x59DD, 0x5F56, 0x6074, 0x6157, 0x61F7, 0x624B,\n    0x624B, 0x61EE, 0x612D, 0x5FFE, 0x5E5A, 0x5C37, 0x5420, 0x4769,\n    0x4040, 0x417B, 0x45EF, 0x4BC5, 0x5128, 0x5441, 0x53C5, 0x50F6,\n    0x4DD1, 0x4C54, 0x02F2, 0x0307, 0x02CB, 0x0282, 0x0230, 0x01D6,\n    0x0177, 0x0115, 0x00B3, 0x0054, 0xFFF9, 0xFFA5, 0xFF99, 0x0A09,\n    0x102E, 0x1121, 0x1108, 0x0FC6, 0x0B63, 0x06D1, 0x04DC, 0x0376,\n    0x02A0, 0x0259, 0xEB13, 0xEB09, 0xEC54, 0xEDE1, 0xEFA0, 0xF180,\n    0xF372, 0xF566, 0xF74C, 0xF914, 0xFAAE, 0xFC0A, 0xF86E, 0xEB2B,\n    0xEFA6, 0xF076, 0xF08E, 0xF03F, 0xEEF4, 0xED9C, 0xED3F, 0xED1E,\n    0xED1F, 0xED25, 0x969E, 0xA3D4, 0xA6F1, 0xA8C5, 0xA995, 0xA9A7,\n    0xA93E, 0xA8A0, 0xA810, 0xA7D5, 0xA832, 0xA96D, 0xB716, 0xA377,\n    0x817A, 0x7C6D, 0x7CD4, 0x7D7B, 0x7D18, 0x7CAF, 0x7B4E, 0x7991,\n    0x7815, 0x7774, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x7E15, 0x7AE6, 0x7A43, 0x8001, 0x9DE5, 0xBD23, 0xBD7F, 0xB396,\n    0xAA76, 0x9F6C, 0x9411, 0x89FB, 0x82C4, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8031, 0x807F, 0x808F, 0x8001, 0x7D1D, 0x7A1A, 0x7A11, 0x7B06,\n    0x7BE7, 0x7CF7, 0x7E0F, 0x7F08, 0x7FBA, 0x8001, 0x4171, 0x4171,\n    0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171,\n    0x4111, 0x4072, 0x4052, 0x4171, 0x4745, 0x4D5E, 0x4D70, 0x4B81,\n    0x49B9, 0x4792, 0x455A, 0x4363, 0x41FA, 0x4171, 0xBF5F, 0x23A0,\n    0x2883, 0x3464, 0x1DCF, 0x11CF, 0x0AA3, 0x067A, 0x0271, 0xFEB5,\n    0xFB72, 0xF8D4, 0xF729, 0xF6F7, 0xF8C3, 0x04AB, 0x0C86, 0x1036,\n    0x0EEF, 0x0C78, 0x0952, 0x05FF, 0x0300, 0x00D5, 0x0000, 0xFB90,\n    0xF5B2, 0xF48D, 0xF1E5, 0xF4A2, 0xF066, 0xF42A, 0xF91C, 0xFE52,\n    0x02DE, 0x05D5, 0x055C, 0x0233, 0xFF5A, 0xFF0D, 0xFCF0, 0xFB84,\n    0xFBD8, 0xFC83, 0xFD63, 0xFE50, 0xFF28, 0xFFC4, 0x0000, 0xD73D,\n    0xF15B, 0x0A3E, 0x186A, 0x1A18, 0x1C41, 0x1702, 0x115E, 0x0B0C,\n    0x03C1, 0xFB32, 0xEEBE, 0xDF4F, 0xD1EB, 0xD069, 0xD00C, 0xD08C,\n    0xD219, 0xD410, 0xD635, 0xD84B, 0xDA13, 0xDB52, 0xDBCA, 0xEFB4,\n    0xEF85, 0xF075, 0xF75E, 0xF33B, 0xF0E4, 0xF731, 0x005C, 0x0904,\n    0x0DC7, 0x0E90, 0x0DD8, 0x0C13, 0x09B2, 0x0729, 0x04EB, 0x036A,\n    0x0281, 0x01BC, 0x011B, 0x009F, 0x0046, 0x0011, 0x0000, 0x02E4,\n    0xF761, 0xEB75, 0xF388, 0xFCB4, 0x0478, 0x09F0, 0x0EDF, 0x12AE,\n    0x14C5, 0x1572, 0x1579, 0x14F6, 0x1409, 0x12CE, 0x1163, 0x0FE7,\n    0x0DEE, 0x0B3C, 0x0830, 0x052B, 0x028C, 0x00B2, 0x0000, 0x277E,\n    0x16BC, 0x06CC, 0x072A, 0x1203, 0x1BD5, 0x2018, 0x22FC, 0x2496,\n    0x24F8, 0x240E, 0x220E, 0x1F7B, 0x1CD7, 0x1AA6, 0x196A, 0x19A6,\n    0x1BFF, 0x2038, 0x2581, 0x2B08, 0x2FFD, 0x3390, 0x34EF, 0xE4B5,\n    0xCB3F, 0xBF9A, 0xC1CF, 0xD385, 0xE2F7, 0xF38C, 0x06AA, 0x19BA,\n    0x2A25, 0x3555, 0x38B1, 0x1111, 0x0D8A, 0x0470, 0xFDDD, 0xFCEB,\n    0xFCAD, 0xFCF4, 0xFD94, 0xFE60, 0xFF29, 0xFFC3, 0x0000, 0x28AE,\n    0x2503, 0x18F0, 0x11D5, 0x088F, 0xFDEE, 0xF639, 0xEE7A, 0xE6E6,\n    0xDFB2, 0xD914, 0xD341, 0xD86B, 0xE80A, 0xF3DA, 0xFB16, 0xFD21,\n    0xFE8C, 0xFF73, 0xFFF0, 0x0021, 0x0021, 0x000C, 0x0000, 0x3C1B,\n    0x1E3D, 0x0F8A, 0x0CC5, 0x0A3D, 0x0301, 0x0359, 0x0324, 0x0375,\n    0x0560, 0x09F9, 0x139C, 0x48A9, 0x5D6B, 0x6699, 0x69A7, 0x67A2,\n    0x6462, 0x605D, 0x5C0A, 0x57DF, 0x5452, 0x51DA, 0x50ED,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_72_73.inc.c",
    "content": "static const struct Animation anim_72[] = {\n    0,\n    189,\n    0,\n    0,\n    0x48,\n    ANIMINDEX_NUMPARTS(anim_72_73_indices),\n    anim_72_73_values,\n    anim_72_73_indices,\n    0,\n};\n\nstatic const struct Animation anim_73[] = {\n    0,\n    189,\n    0,\n    0,\n    0x48,\n    ANIMINDEX_NUMPARTS(anim_72_73_indices),\n    anim_72_73_values,\n    anim_72_73_indices,\n    0,\n};\n\n\nstatic const u16 anim_72_73_indices[] = {\n    0x0001, 0x0000, 0x0048, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0049, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0048, 0x0833,\n    0x0048, 0x07A3, 0x0001, 0x0000, 0x0048, 0x07EB,\n    0x0048, 0x0713, 0x0001, 0x0000, 0x0048, 0x075B,\n    0x0001, 0x070F, 0x0001, 0x0710, 0x0001, 0x0711,\n    0x0048, 0x0123, 0x0048, 0x016B, 0x0048, 0x01B3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0048, 0x00DB,\n    0x0048, 0x004A, 0x0048, 0x0092, 0x0001, 0x00DA,\n    0x0001, 0x067C, 0x0001, 0x067D, 0x0001, 0x067E,\n    0x0048, 0x031B, 0x0048, 0x0363, 0x0048, 0x03AB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0048, 0x02D3,\n    0x0048, 0x01FB, 0x0048, 0x0243, 0x0048, 0x028B,\n    0x0001, 0x0000, 0x0048, 0x067F, 0x0048, 0x06C7,\n    0x0048, 0x05A4, 0x0048, 0x05EC, 0x0048, 0x0634,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0048, 0x055C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0048, 0x0514,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0712,\n    0x0001, 0x0483, 0x0048, 0x0484, 0x0048, 0x04CC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0048, 0x043B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0048, 0x03F3,\n};\n\nstatic const s16 anim_72_73_values[] = {\n    0x0000, 0x00C0, 0x00BD, 0x00B8, 0x00B4, 0x00B1, 0x00AF, 0x00AD,\n    0x00AB, 0x00AC, 0x00AE, 0x00B0, 0x00B3, 0x00B7, 0x00BA, 0x00BE,\n    0x00C2, 0x00C5, 0x00C8, 0x00CB, 0x00CE, 0x00D1, 0x00D3, 0x00D6,\n    0x00D8, 0x00D9, 0x00D9, 0x00D9, 0x00D8, 0x00D7, 0x00D5, 0x00D2,\n    0x00D0, 0x00CD, 0x00CA, 0x00C8, 0x00C5, 0x00C1, 0x00BD, 0x00B9,\n    0x00B5, 0x00B2, 0x00B0, 0x00AE, 0x00AD, 0x00AC, 0x00AB, 0x00AB,\n    0x00AB, 0x00AC, 0x00AD, 0x00AF, 0x00B2, 0x00B6, 0x00BC, 0x00C2,\n    0x00C6, 0x00CA, 0x00CD, 0x00CF, 0x00D2, 0x00D4, 0x00D6, 0x00D8,\n    0x00D9, 0x00D9, 0x00D8, 0x00D5, 0x00D3, 0x00CF, 0x00CA, 0x00C5,\n    0x00C3, 0x3FFF, 0xDFD1, 0xDFF0, 0xE04B, 0xE0DE, 0xE1A2, 0xE295,\n    0xE3B1, 0xE4F1, 0xE651, 0xE7CD, 0xE95F, 0xEB03, 0xECB5, 0xEE70,\n    0xF02E, 0xF1EC, 0xF3A6, 0xF555, 0xF6F6, 0xF884, 0xF9FA, 0xFB54,\n    0xFC8E, 0xFDA1, 0xFE8B, 0xFF46, 0xFFCD, 0x001B, 0x002E, 0x0000,\n    0xFF9C, 0xFF12, 0xFE64, 0xFD94, 0xFCA4, 0xFB96, 0xFA6C, 0xF929,\n    0xF7CD, 0xF65C, 0xF4D6, 0xF33F, 0xF197, 0xEFE2, 0xEE21, 0xEC55,\n    0xEA82, 0xE8A8, 0xE6CB, 0xE4EB, 0xE30C, 0xE12E, 0xDF55, 0xDD81,\n    0xDBB5, 0xD9F3, 0xD83D, 0xD694, 0xD4FC, 0xD375, 0xD202, 0xD0A5,\n    0xCF60, 0xCE35, 0xCD25, 0xCC33, 0xCB61, 0xCAB1, 0xCA24, 0xC9BD,\n    0xC97E, 0xC968, 0x047B, 0x0472, 0x045A, 0x0432, 0x03FC, 0x03B9,\n    0x036A, 0x0311, 0x02AE, 0x0242, 0x01CF, 0x0155, 0x00D7, 0x0054,\n    0xFFCF, 0xFF48, 0xFEBF, 0xFE37, 0xFDB0, 0xFD2C, 0xFCAB, 0xFC2F,\n    0xFBB9, 0xFB49, 0xFAE2, 0xFA84, 0xFA30, 0xF9E7, 0xF9AA, 0xF97C,\n    0xF956, 0xF934, 0xF915, 0xF8FA, 0xF8E2, 0xF8CD, 0xF8BB, 0xF8AC,\n    0xF89F, 0xF895, 0xF88E, 0xF889, 0xF886, 0xF885, 0xF886, 0xF888,\n    0xF88D, 0xF892, 0xF89A, 0xF8A2, 0xF8AB, 0xF8B6, 0xF8C1, 0xF8CD,\n    0xF8D9, 0xF8E6, 0xF8F3, 0xF900, 0xF90D, 0xF91B, 0xF927, 0xF934,\n    0xF940, 0xF94B, 0xF955, 0xF95F, 0xF967, 0xF96E, 0xF974, 0xF978,\n    0xF97B, 0xF97C, 0xED8C, 0xDF7F, 0xDF42, 0xDEBF, 0xDE41, 0xDE14,\n    0xDE2A, 0xDE44, 0xDE61, 0xDE81, 0xDEA4, 0xDEC9, 0xDEF0, 0xDF18,\n    0xDF43, 0xDF6E, 0xDF9B, 0xDFC8, 0xDFF6, 0xE024, 0xE052, 0xE07F,\n    0xE0AC, 0xE0D8, 0xE103, 0xE12C, 0xE154, 0xE17A, 0xE19D, 0xE1BF,\n    0xE1DD, 0xE1FA, 0xE218, 0xE236, 0xE254, 0xE272, 0xE291, 0xE2B0,\n    0xE2CF, 0xE2EE, 0xE30E, 0xE32D, 0xE34C, 0xE36A, 0xE389, 0xE3A7,\n    0xE3C5, 0xE3E3, 0xE400, 0xE41C, 0xE438, 0xE454, 0xE46E, 0xE488,\n    0xE4A1, 0xE4BA, 0xE4D1, 0xE4E7, 0xE4FD, 0xE511, 0xE524, 0xE536,\n    0xE547, 0xE556, 0xE564, 0xE570, 0xE57C, 0xE585, 0xE58D, 0xE593,\n    0xE598, 0xE59A, 0xE59B, 0xDAEE, 0xDB0B, 0xDB60, 0xDBE9, 0xDCA3,\n    0xDD8A, 0xDE9A, 0xDFD0, 0xE128, 0xE29F, 0xE431, 0xE5DA, 0xE797,\n    0xE964, 0xEB3E, 0xED21, 0xEF08, 0xF0F2, 0xF2D9, 0xF4BB, 0xF694,\n    0xF860, 0xFA1C, 0xFBC3, 0xFD54, 0xFEC8, 0x001D, 0x0151, 0x025E,\n    0x0342, 0x040E, 0x04D4, 0x0595, 0x0651, 0x0708, 0x07BA, 0x0867,\n    0x090F, 0x09B3, 0x0A51, 0x0AEA, 0x0B7E, 0x0C0D, 0x0C97, 0x0D1D,\n    0x0D9D, 0x0E18, 0x0E8F, 0x0F00, 0x0F6D, 0x0FD5, 0x1038, 0x1096,\n    0x10EF, 0x1143, 0x1192, 0x11DD, 0x1222, 0x1263, 0x129F, 0x12D6,\n    0x1308, 0x1335, 0x135E, 0x1382, 0x13A1, 0x13BB, 0x13D1, 0x13E1,\n    0x13ED, 0x13F4, 0x13F7, 0xB6BF, 0xB6DC, 0xB72F, 0xB7B4, 0xB868,\n    0xB946, 0xBA4A, 0xBB70, 0xBCB3, 0xBE10, 0xBF83, 0xC108, 0xC299,\n    0xC434, 0xC5D5, 0xC776, 0xC914, 0xCAAB, 0xCC36, 0xCDB3, 0xCF1B,\n    0xD06D, 0xD1A2, 0xD2B8, 0xD3A9, 0xD473, 0xD510, 0xD57D, 0xD5B6,\n    0xD5B6, 0xD589, 0xD53F, 0xD4D8, 0xD457, 0xD3BC, 0xD30A, 0xD242,\n    0xD165, 0xD074, 0xCF73, 0xCE61, 0xCD41, 0xCC14, 0xCADB, 0xC999,\n    0xC84E, 0xC6FC, 0xC5A4, 0xC449, 0xC2EC, 0xC18D, 0xC030, 0xBED4,\n    0xBD7D, 0xBC2A, 0xBADF, 0xB99B, 0xB862, 0xB734, 0xB612, 0xB4FF,\n    0xB3FC, 0xB30B, 0xB22C, 0xB162, 0xB0AE, 0xB012, 0xAF8E, 0xAF25,\n    0xAED9, 0xAEA9, 0xAE99, 0xBB71, 0xBB9B, 0xBC14, 0xBCD7, 0xBDDE,\n    0xBF21, 0xC09B, 0xC246, 0xC41C, 0xC616, 0xC82E, 0xCA5E, 0xCCA0,\n    0xCEED, 0xD140, 0xD392, 0xD5DD, 0xD81B, 0xDA46, 0xDC57, 0xDE49,\n    0xE015, 0xE1B4, 0xE322, 0xE457, 0xE54D, 0xE5FF, 0xE665, 0xE67A,\n    0xE638, 0xE5AE, 0xE4F1, 0xE404, 0xE2EA, 0xE1A4, 0xE036, 0xDEA3,\n    0xDCED, 0xDB17, 0xD923, 0xD714, 0xD4EE, 0xD2B2, 0xD063, 0xCE04,\n    0xCB98, 0xC921, 0xC6A2, 0xC41D, 0xC196, 0xBF0F, 0xBC8A, 0xBA0B,\n    0xB794, 0xB527, 0xB2C8, 0xB079, 0xAE3D, 0xAC16, 0xAA07, 0xA813,\n    0xA63C, 0xA486, 0xA2F2, 0xA184, 0xA03E, 0x9F22, 0x9E35, 0x9D77,\n    0x9CEC, 0x9C97, 0x9C7A, 0x0000, 0x002C, 0x00AD, 0x017C, 0x0294,\n    0x03EF, 0x0587, 0x0756, 0x0956, 0x0B81, 0x0DD1, 0x1040, 0x12C9,\n    0x1565, 0x180F, 0x1AC0, 0x1D73, 0x2021, 0x22C6, 0x255A, 0x27D8,\n    0x2A3B, 0x2C7B, 0x2E94, 0x307F, 0x3236, 0x33B3, 0x34F2, 0x35EA,\n    0x3698, 0x3710, 0x376D, 0x37B0, 0x37DB, 0x37EF, 0x37ED, 0x37D6,\n    0x37AB, 0x376D, 0x371F, 0x36C0, 0x3652, 0x35D6, 0x354D, 0x34B9,\n    0x341B, 0x3374, 0x32C5, 0x320F, 0x3153, 0x3094, 0x2FD1, 0x2F0C,\n    0x2E46, 0x2D80, 0x2CBC, 0x2BFB, 0x2B3E, 0x2A86, 0x29D4, 0x2929,\n    0x2887, 0x27EF, 0x2762, 0x26E1, 0x266E, 0x2609, 0x25B3, 0x256F,\n    0x253D, 0x251D, 0x2513, 0x0000, 0x000F, 0x003B, 0x0083, 0x00E4,\n    0x015C, 0x01E9, 0x0288, 0x0339, 0x03F8, 0x04C3, 0x0599, 0x0678,\n    0x075C, 0x0845, 0x0930, 0x0A1B, 0x0B04, 0x0BE9, 0x0CC7, 0x0D9D,\n    0x0E69, 0x0F28, 0x0FD9, 0x1079, 0x1106, 0x117E, 0x11E0, 0x1228,\n    0x1255, 0x126E, 0x127D, 0x1280, 0x127A, 0x126B, 0x1252, 0x1232,\n    0x1209, 0x11D9, 0x11A2, 0x1165, 0x1122, 0x10D9, 0x108C, 0x103B,\n    0x0FE5, 0x0F8D, 0x0F31, 0x0ED4, 0x0E74, 0x0E13, 0x0DB2, 0x0D50,\n    0x0CEF, 0x0C8F, 0x0C2F, 0x0BD2, 0x0B77, 0x0B1F, 0x0ACA, 0x0A79,\n    0x0A2C, 0x09E4, 0x09A2, 0x0965, 0x092F, 0x0900, 0x08D8, 0x08B8,\n    0x08A1, 0x0893, 0x088E, 0xF549, 0xF54D, 0xF558, 0xF56A, 0xF582,\n    0xF5A1, 0xF5C4, 0xF5EC, 0xF619, 0xF649, 0xF67D, 0xF6B3, 0xF6EC,\n    0xF726, 0xF762, 0xF79F, 0xF7DC, 0xF819, 0xF855, 0xF890, 0xF8C9,\n    0xF900, 0xF934, 0xF965, 0xF993, 0xF9BC, 0xF9E0, 0xFA00, 0xFA19,\n    0xFA2D, 0xFA3C, 0xFA4A, 0xFA55, 0xFA5F, 0xFA68, 0xFA6E, 0xFA74,\n    0xFA78, 0xFA7A, 0xFA7C, 0xFA7C, 0xFA7B, 0xFA79, 0xFA76, 0xFA73,\n    0xFA6E, 0xFA69, 0xFA63, 0xFA5C, 0xFA55, 0xFA4E, 0xFA46, 0xFA3D,\n    0xFA35, 0xFA2C, 0xFA23, 0xFA1B, 0xFA12, 0xFA09, 0xFA01, 0xF9F9,\n    0xF9F1, 0xF9E9, 0xF9E2, 0xF9DC, 0xF9D6, 0xF9D1, 0xF9CD, 0xF9C9,\n    0xF9C7, 0xF9C5, 0xF9C5, 0xE259, 0xE258, 0xE255, 0xE24F, 0xE247,\n    0xE23B, 0xE22D, 0xE21B, 0xE205, 0xE1EB, 0xE1CD, 0xE1AA, 0xE183,\n    0xE156, 0xE124, 0xE0ED, 0xE0AF, 0xE06C, 0xE022, 0xDFD1, 0xDF7A,\n    0xDF1B, 0xDEB5, 0xDE47, 0xDDD1, 0xDD53, 0xDCCD, 0xDC3D, 0xDBA5,\n    0xDB04, 0xD9E1, 0xD7F4, 0xD57D, 0xD2BF, 0xCFFC, 0xCD78, 0xCB73,\n    0xCA30, 0xC9F1, 0xCA5C, 0xCAE6, 0xCB8E, 0xCC50, 0xCD2C, 0xCE1F,\n    0xCF26, 0xD03F, 0xD169, 0xD2A0, 0xD3E4, 0xD530, 0xD684, 0xD7DD,\n    0xD939, 0xDA95, 0xDBF0, 0xDD47, 0xDE98, 0xDFE0, 0xE11E, 0xE250,\n    0xE372, 0xE484, 0xE582, 0xE66A, 0xE73B, 0xE7F1, 0xE88C, 0xE907,\n    0xE963, 0xE99B, 0xE9AE, 0x12E6, 0x1305, 0x1360, 0x13F2, 0x14B8,\n    0x15AD, 0x16CE, 0x1816, 0x1981, 0x1B0C, 0x1CB2, 0x1E6F, 0x2040,\n    0x221F, 0x2409, 0x25FB, 0x27F0, 0x29E3, 0x2BD1, 0x2DB7, 0x2F8F,\n    0x3156, 0x3307, 0x34A0, 0x361B, 0x3774, 0x38A8, 0x39B3, 0x3A90,\n    0x3B3C, 0x3BC7, 0x3C44, 0x3CB4, 0x3D18, 0x3D71, 0x3DBD, 0x3DFF,\n    0x3E37, 0x3E65, 0x3E89, 0x3EA4, 0x3EB7, 0x3EC2, 0x3EC5, 0x3EC2,\n    0x3EB8, 0x3EA9, 0x3E93, 0x3E79, 0x3E5B, 0x3E38, 0x3E12, 0x3DE9,\n    0x3DBD, 0x3D90, 0x3D61, 0x3D31, 0x3D01, 0x3CD0, 0x3CA0, 0x3C71,\n    0x3C44, 0x3C18, 0x3BF0, 0x3BC9, 0x3BA7, 0x3B88, 0x3B6E, 0x3B59,\n    0x3B49, 0x3B3F, 0x3B3C, 0x3224, 0x3230, 0x3252, 0x3288, 0x32D2,\n    0x332E, 0x339A, 0x3414, 0x349C, 0x3530, 0x35CD, 0x3674, 0x3721,\n    0x37D4, 0x388C, 0x3946, 0x3A01, 0x3ABB, 0x3B74, 0x3C2A, 0x3CDA,\n    0x3D84, 0x3E26, 0x3EBF, 0x3F4C, 0x3FCE, 0x4041, 0x40A4, 0x40F7,\n    0x4137, 0x416B, 0x419A, 0x41C4, 0x41E9, 0x420A, 0x4227, 0x4240,\n    0x4254, 0x4265, 0x4273, 0x427D, 0x4284, 0x4288, 0x428A, 0x4288,\n    0x4285, 0x427F, 0x4277, 0x426D, 0x4262, 0x4255, 0x4247, 0x4237,\n    0x4227, 0x4216, 0x4204, 0x41F2, 0x41E0, 0x41CE, 0x41BC, 0x41AB,\n    0x419A, 0x418A, 0x417A, 0x416C, 0x415F, 0x4154, 0x414A, 0x4142,\n    0x413C, 0x4138, 0x4137, 0xF557, 0xF542, 0xF506, 0xF4A6, 0xF425,\n    0xF387, 0xF2D0, 0xF202, 0xF121, 0xF030, 0xEF34, 0xEE2E, 0xED23,\n    0xEC16, 0xEB0B, 0xEA04, 0xE906, 0xE813, 0xE72F, 0xE65D, 0xE5A1,\n    0xE4FF, 0xE479, 0xE413, 0xE3D0, 0xE3B4, 0xE3C2, 0xE3FD, 0xE46A,\n    0xE50B, 0xE5DB, 0xE6D3, 0xE7F1, 0xE931, 0xEA93, 0xEC13, 0xEDAF,\n    0xEF66, 0xF135, 0xF31A, 0xF512, 0xF71D, 0xF936, 0xFB5C, 0xFD8E,\n    0xFFC8, 0x0207, 0x044C, 0x0693, 0x08DA, 0x0B1F, 0x0D5F, 0x0F98,\n    0x11C9, 0x13EF, 0x1607, 0x1810, 0x1A07, 0x1BEA, 0x1DB7, 0x1F6C,\n    0x2107, 0x2284, 0x23E3, 0x2521, 0x263C, 0x2731, 0x27FF, 0x28A2,\n    0x291A, 0x2963, 0x297C, 0xC353, 0xC361, 0xC389, 0xC3CB, 0xC428,\n    0xC49E, 0xC52D, 0xC5D5, 0xC696, 0xC76E, 0xC85A, 0xC958, 0xCA63,\n    0xCB78, 0xCC95, 0xCDB5, 0xCED5, 0xCFF3, 0xD10A, 0xD217, 0xD318,\n    0xD408, 0xD4E4, 0xD5AD, 0xD666, 0xD710, 0xD7B0, 0xD847, 0xD8D9,\n    0xD967, 0xDA6E, 0xDBB7, 0xDC3C, 0xDAF5, 0xD826, 0xD4D6, 0xD121,\n    0xCD25, 0xC8FF, 0xC4CB, 0xC0A6, 0xBCAD, 0xB8FE, 0xB5B4, 0xB2EE,\n    0xB0C7, 0xAF5D, 0xAED1, 0xAF1B, 0xB018, 0xB1A4, 0xB39D, 0xB5DE,\n    0xB846, 0xBAB0, 0xBCF9, 0xBEFF, 0xC09E, 0xC1B2, 0xC25C, 0xC2D8,\n    0xC32A, 0xC358, 0xC36A, 0xC363, 0xC34A, 0xC326, 0xC2FA, 0xC2CF,\n    0xC2A8, 0xC28D, 0xC283, 0x1B99, 0x1BF7, 0x1CF1, 0x1E56, 0x1FF5,\n    0x219B, 0x2317, 0x2439, 0x24CE, 0x24E3, 0x24AF, 0x243F, 0x23A6,\n    0x22F1, 0x2230, 0x2173, 0x20CA, 0x2043, 0x1FEF, 0x1FDC, 0x201B,\n    0x20BB, 0x220F, 0x2439, 0x2700, 0x2A2A, 0x2D7E, 0x30C2, 0x33BE,\n    0x3638, 0x3816, 0x3981, 0x3AA1, 0x3B9F, 0x3C9D, 0x3D9F, 0x3EA1,\n    0x3FA1, 0x409D, 0x4191, 0x427C, 0x435B, 0x442A, 0x44E8, 0x4592,\n    0x4625, 0x469F, 0x471F, 0x47BC, 0x4866, 0x490C, 0x499F, 0x4A0E,\n    0x4A49, 0x4A41, 0x49E5, 0x4924, 0x47F0, 0x4637, 0x43AC, 0x402F,\n    0x3BF2, 0x3728, 0x3206, 0x2CBE, 0x2784, 0x228B, 0x1E07, 0x1A2A,\n    0x1728, 0x1534, 0x1482, 0x0068, 0x0000, 0xFFF5, 0xFFD5, 0xFFA8,\n    0xFF73, 0xFF3C, 0xFF09, 0xFEE1, 0xFEC8, 0xFEBB, 0xFEB2, 0xFEAD,\n    0xFEAB, 0xFEAB, 0xFEAE, 0xFEB1, 0xFEB6, 0xFEBB, 0xFEC0, 0xFEC4,\n    0xFEC7, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0x8B51, 0x8C34, 0x8E9A, 0x921F,\n    0x9661, 0x9AFC, 0x9F8E, 0xA3B2, 0xA706, 0xA9BF, 0xAC57, 0xAED2,\n    0xB137, 0xB388, 0xB5CB, 0xB804, 0xBA38, 0xBC6C, 0xBEA4, 0xC0E5,\n    0xC334, 0xC594, 0xC831, 0xCB15, 0xCE19, 0xD114, 0xD3DE, 0xD64E,\n    0xD83C, 0xD980, 0xD90A, 0xD6A6, 0xD374, 0xD095, 0xCE4B, 0xCC15,\n    0xC9EB, 0xC7C6, 0xC59D, 0xC369, 0xC121, 0xBEBE, 0xBC38, 0xB947,\n    0xB5F6, 0xB2B7, 0xAFFD, 0xADAB, 0xAB5C, 0xA910, 0xA6C7, 0xA483,\n    0xA245, 0xA00D, 0x9DDE, 0x9BB7, 0x999A, 0x9787, 0x9581, 0x9367,\n    0x9122, 0x8EC2, 0x8C55, 0x89EB, 0x8791, 0x8558, 0x834E, 0x8181,\n    0x8001, 0x7EDC, 0x7E21, 0x7DE0, 0xD74A, 0xD6C6, 0xD561, 0xD35B,\n    0xD0F1, 0xCE61, 0xCBE9, 0xC9C6, 0xC837, 0xC70A, 0xC5E7, 0xC4D0,\n    0xC3C7, 0xC2CF, 0xC1EA, 0xC11A, 0xC061, 0xBFC1, 0xBF3D, 0xBED8,\n    0xBE92, 0xBE70, 0xBE8F, 0xBF02, 0xBFB8, 0xC09F, 0xC1A6, 0xC2BB,\n    0xC3CD, 0xC4CA, 0xC5A2, 0xC642, 0xC699, 0xC696, 0xC622, 0xC541,\n    0xC40C, 0xC297, 0xC0FA, 0xBF4C, 0xBDA4, 0xBC18, 0xBABF, 0xB9B1,\n    0xB902, 0xB8CC, 0xB924, 0xBA2A, 0xBBD9, 0xBE14, 0xC0BC, 0xC3B2,\n    0xC6D7, 0xCA0D, 0xCD34, 0xD02F, 0xD2DF, 0xD525, 0xD6E2, 0xD834,\n    0xD952, 0xDA40, 0xDB02, 0xDB9C, 0xDC13, 0xDC6D, 0xDCAC, 0xDCD5,\n    0xDCEE, 0xDCFA, 0xDCFE, 0xDCFE, 0x3C70, 0x3CE6, 0x3E1E, 0x3FD9,\n    0x41D7, 0x43D8, 0x459C, 0x46E4, 0x4770, 0x4793, 0x47C1, 0x47ED,\n    0x480B, 0x480F, 0x47EB, 0x4793, 0x46FA, 0x4614, 0x44D4, 0x432D,\n    0x4113, 0x3E79, 0x3A5E, 0x343D, 0x2CC6, 0x24AC, 0x1C9C, 0x1549,\n    0x0F62, 0x0B97, 0x0CE3, 0x132E, 0x1A8E, 0x1F1A, 0x20D2, 0x2255,\n    0x23A7, 0x24CC, 0x25CA, 0x26A4, 0x275E, 0x27FD, 0x2885, 0x28FB,\n    0x2963, 0x29C2, 0x2A1A, 0x2A4E, 0x2A43, 0x2A06, 0x29A4, 0x292C,\n    0x28A9, 0x282A, 0x27BA, 0x2769, 0x2742, 0x2752, 0x27A8, 0x2852,\n    0x294B, 0x2A82, 0x2BE8, 0x2D6C, 0x2EFF, 0x3090, 0x3210, 0x336E,\n    0x349A, 0x3585, 0x361D, 0x3653, 0x00D0, 0x002B, 0xFE79, 0xFC0E,\n    0xF945, 0xF676, 0xF3F9, 0xF226, 0xF156, 0xF152, 0xF1A2, 0xF23A,\n    0xF30E, 0xF40F, 0xF532, 0xF66B, 0xF7AC, 0xF8EA, 0xFA17, 0xFB27,\n    0xFC0E, 0xFCBE, 0xFD32, 0xFD72, 0xFD8A, 0xFD85, 0xFD6E, 0xFD50,\n    0xFD35, 0xFD2A, 0xFD1B, 0xFCF7, 0xFCD3, 0xFCBE, 0xFCB9, 0xFCB5,\n    0xFCB3, 0xFCB2, 0xFCB2, 0xFCB3, 0xFCB4, 0xFCB6, 0xFCB9, 0xFCBB,\n    0xFCBC, 0xFCBE, 0xFCBE, 0xFCBB, 0xFCB4, 0xFCA9, 0xFC9D, 0xFC91,\n    0xFC86, 0xFC7E, 0xFC7B, 0xFC7F, 0xFC8A, 0xFC9F, 0xFCBE, 0xFCEE,\n    0xFD30, 0xFD80, 0xFDDA, 0xFE3B, 0xFE9F, 0xFF01, 0xFF5F, 0xFFB5,\n    0xFFFE, 0x0036, 0x005B, 0x0068, 0x0000, 0x0006, 0x0014, 0x0026,\n    0x0036, 0x0040, 0x003D, 0x002A, 0x0000, 0xFFC3, 0xFF78, 0xFF24,\n    0xFEC7, 0xFE65, 0xFDFF, 0xFD97, 0xFD30, 0xFCCC, 0xFC6D, 0xFC16,\n    0xFBC8, 0xFB85, 0xFB53, 0xFB31, 0xFB1E, 0xFB15, 0xFB14, 0xFB17,\n    0xFB1B, 0xFB1D, 0xFB23, 0xFB35, 0xFB55, 0xFB85, 0xFBC1, 0xFC02,\n    0xFC48, 0xFC91, 0xFCDC, 0xFD26, 0xFD70, 0xFDB8, 0xFDFB, 0xFE3A,\n    0xFE71, 0xFEA1, 0xFEC8, 0xFEE4, 0xFEF6, 0xFF00, 0xFF03, 0xFF00,\n    0xFEFA, 0xFEF0, 0xFEE5, 0xFEDA, 0xFED1, 0xFECA, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8,\n    0xFEC8, 0xFEC8, 0xFEC8, 0xFEC8, 0xCE23, 0xCD36, 0xCAC3, 0xC746,\n    0xC33C, 0xBF22, 0xBB75, 0xB8B0, 0xB752, 0xB712, 0xB74A, 0xB7E7,\n    0xB8D7, 0xBA05, 0xBB60, 0xBCD5, 0xBE50, 0xBFBF, 0xC110, 0xC22E,\n    0xC308, 0xC38B, 0xC38C, 0xC309, 0xC22B, 0xC118, 0xBFF9, 0xBEF6,\n    0xBE36, 0xBDE2, 0xBE25, 0xBF0B, 0xC093, 0xC2BA, 0xC542, 0xC7E8,\n    0xCAA8, 0xCD7C, 0xD05F, 0xD34B, 0xD63B, 0xD929, 0xDC11, 0xDEEC,\n    0xE1B5, 0xE467, 0xE6FD, 0xE982, 0xEC03, 0xEE7E, 0xF0F0, 0xF356,\n    0xF5AE, 0xF7F3, 0xFA24, 0xFC3E, 0xFE3D, 0x001E, 0x01E0, 0x0394,\n    0x0549, 0x06F9, 0x089D, 0x0A30, 0x0BAB, 0x0D08, 0x0E40, 0x0F4E,\n    0x102A, 0x10D0, 0x1137, 0x115B, 0x7FFF, 0x7FFF, 0x4171, 0x0000,\n    0xFF5B, 0xFDA6, 0xFB3B, 0xF877, 0xF5B2, 0xF348, 0xF193, 0xF0ED,\n    0xF123, 0xF1BB, 0xF2A5, 0xF3D1, 0xF531, 0xF6B3, 0xF849, 0xF9E3,\n    0xFB72, 0xFCE5, 0xFE2E, 0xFF3C, 0x0000, 0x0081, 0x00D6, 0x0104,\n    0x0111, 0x0106, 0x00E7, 0x00BB, 0x0088, 0x0056, 0x002A, 0x000B,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xC5E4,\n    0xC5F1, 0xC602, 0xC5F4, 0xC5A8, 0xC4FB, 0xC3CB, 0xC1F8, 0xBF5F,\n    0xBC00, 0xB805, 0xB38C, 0xAEB6, 0xA9A1, 0xA46C, 0x9F37, 0x9A21,\n    0x9548, 0x90CC, 0x8CCC, 0x8968, 0x86BD, 0x84D7, 0x8399, 0x82EC,\n    0x82B8, 0x82E4, 0x8359, 0x83FE, 0x84BB, 0x8578, 0x861C, 0x8691,\n    0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD,\n    0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD,\n    0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD,\n    0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD,\n    0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x86BD, 0x7FFF,\n    0x7FFF, 0x4171, 0xBF5F, 0x142B, 0x140F, 0x13BD, 0x1339, 0x1287,\n    0x11A9, 0x10A4, 0x0F7A, 0x0E30, 0x0CC9, 0x0B49, 0x09B2, 0x0809,\n    0x0651, 0x048E, 0x02C2, 0x00F2, 0xFF22, 0xFD54, 0xFB8C, 0xF9CE,\n    0xF81D, 0xF67C, 0xF4F0, 0xF37C, 0xF222, 0xF0E8, 0xEFD0, 0xEEDD,\n    0xEE15, 0xED78, 0xED0D, 0xECD5, 0xECD5, 0xED08, 0xED69, 0xEDF3,\n    0xEEA6, 0xEF7D, 0xF077, 0xF191, 0xF2C9, 0xF41C, 0xF587, 0xF709,\n    0xF89D, 0xFA43, 0xFBF7, 0xFDB7, 0xFF81, 0x0150, 0x0324, 0x04FB,\n    0x06D0, 0x08A2, 0x0A6F, 0x0C33, 0x0DEC, 0x0F98, 0x1134, 0x12BD,\n    0x1432, 0x158F, 0x16D2, 0x17F8, 0x1900, 0x19E6, 0x1AA7, 0x1B42,\n    0x1BB4, 0x1BFB, 0x1C13, 0x0188, 0x01A0, 0x01D8, 0x021E, 0x025D,\n    0x029D, 0x02E8, 0x0324, 0x033A, 0x032D, 0x0316, 0x02F5, 0x02CF,\n    0x02A6, 0x027C, 0x0255, 0x0233, 0x021A, 0x0205, 0x01F0, 0x01DB,\n    0x01C7, 0x01B5, 0x01A5, 0x0197, 0x018D, 0x0186, 0x0184, 0x0187,\n    0x0190, 0x01A1, 0x01BA, 0x01DB, 0x0202, 0x022C, 0x0259, 0x0286,\n    0x02B1, 0x02DA, 0x02FE, 0x031C, 0x0331, 0x033D, 0x033E, 0x0336,\n    0x0326, 0x0310, 0x02F5, 0x02D6, 0x02B6, 0x0295, 0x0276, 0x0259,\n    0x0241, 0x022E, 0x021E, 0x020F, 0x01FF, 0x01F0, 0x01E1, 0x01D3,\n    0x01C5, 0x01B8, 0x01AB, 0x01A0, 0x0196, 0x018D, 0x0186, 0x0180,\n    0x017B, 0x0178, 0x0177, 0xEC0A, 0xED01, 0xEE16, 0xEF46, 0xF08F,\n    0xF1EE, 0xF361, 0xF4E5, 0xF679, 0xF819, 0xF9C3, 0xFB76, 0xFD2D,\n    0xFEE8, 0x00A2, 0x025B, 0x0410, 0x05BE, 0x0763, 0x08FD, 0x0A88,\n    0x0C03, 0x0D6B, 0x0EBE, 0x0FFA, 0x111B, 0x121F, 0x1305, 0x13C9,\n    0x146A, 0x14E4, 0x1535, 0x155C, 0x1555, 0x1523, 0x14CD, 0x1453,\n    0x13B8, 0x12FE, 0x1226, 0x1132, 0x1024, 0x0EFD, 0x0DC0, 0x0C6E,\n    0x0B09, 0x0993, 0x080D, 0x067A, 0x04DB, 0x0332, 0x0180, 0xFFC9,\n    0xFE0C, 0xFC4D, 0xFA8C, 0xF8CB, 0xF70E, 0xF554, 0xF3A0, 0xF1F4,\n    0xF052, 0xEEBB, 0xED31, 0xEBB6, 0xEA4B, 0xE8F3, 0xE7B0, 0xE682,\n    0xE56C, 0xE470, 0xE38F, 0xFF6E, 0xFF85, 0xFFC1, 0x0014, 0x0073,\n    0x00D0, 0x011E, 0x014F, 0x0156, 0x013F, 0x011F, 0x00F7, 0x00C8,\n    0x0092, 0x0057, 0x0019, 0xFFD9, 0xFF95, 0xFF51, 0xFF0E, 0xFECC,\n    0xFE8C, 0xFE50, 0xFE18, 0xFDE6, 0xFDBB, 0xFD98, 0xFD7E, 0xFD6D,\n    0xFD68, 0xFD72, 0xFD8F, 0xFDBC, 0xFDF6, 0xFE3B, 0xFE89, 0xFEDD,\n    0xFF35, 0xFF8F, 0xFFE7, 0x003B, 0x008B, 0x00D2, 0x010E, 0x013E,\n    0x015E, 0x016D, 0x016D, 0x0166, 0x0157, 0x0142, 0x0126, 0x0106,\n    0x00E0, 0x00B7, 0x008A, 0x005B, 0x002A, 0xFFF9, 0xFFC6, 0xFF93,\n    0xFF61, 0xFF31, 0xFF03, 0xFED7, 0xFEB0, 0xFE8C, 0xFE6E, 0xFE55,\n    0xFE42, 0xFE36, 0xFE32, 0x3A85, 0x3AA5, 0x3AFB, 0x3B75, 0x3C01,\n    0x3C8C, 0x3D06, 0x3D5C, 0x3D7D, 0x3D7A, 0x3D70, 0x3D60, 0x3D4B,\n    0x3D30, 0x3D11, 0x3CEE, 0x3CC8, 0x3CA0, 0x3C75, 0x3C49, 0x3C1C,\n    0x3BEF, 0x3BC2, 0x3B96, 0x3B6C, 0x3B43, 0x3B1D, 0x3AFB, 0x3ADC,\n    0x3AC2, 0x3AAC, 0x3A9C, 0x3A92, 0x3A8F, 0x3AAA, 0x3AF0, 0x3B55,\n    0x3BCD, 0x3C4B, 0x3CC4, 0x3D2A, 0x3D71, 0x3D8D, 0x3D8D, 0x3D89,\n    0x3D7F, 0x3D72, 0x3D61, 0x3D4C, 0x3D35, 0x3D1B, 0x3CFE, 0x3CDF,\n    0x3CBF, 0x3C9E, 0x3C7B, 0x3C58, 0x3C34, 0x3C11, 0x3BEE, 0x3BCC,\n    0x3BAB, 0x3B8C, 0x3B6E, 0x3B53, 0x3B3A, 0x3B24, 0x3B11, 0x3B02,\n    0x3AF6, 0x3AEF, 0x3AED,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_74.inc.c",
    "content": "static const struct Animation anim_74[] = {\n    1,\n    189,\n    0,\n    0,\n    0x18,\n    ANIMINDEX_NUMPARTS(anim_74_indices),\n    anim_74_values,\n    anim_74_indices,\n    0,\n};\n\n\nstatic const u16 anim_74_indices[] = {\n    0x0018, 0x0001, 0x0018, 0x0019, 0x0018, 0x0031, 0x0001, 0x0000, 0x0001, 0x0049, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x0382,\n    0x0018, 0x033A, 0x0018, 0x0352, 0x0018, 0x036A,\n    0x0018, 0x02F2, 0x0018, 0x030A, 0x0018, 0x0322,\n    0x0001, 0x02EE, 0x0001, 0x02EF, 0x0001, 0x02F0,\n    0x0018, 0x00AA, 0x0018, 0x00C2, 0x0018, 0x00DA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x0092,\n    0x0018, 0x004A, 0x0018, 0x0062, 0x0018, 0x007A,\n    0x0001, 0x02EA, 0x0001, 0x02EB, 0x0001, 0x02EC,\n    0x0018, 0x0152, 0x0018, 0x016A, 0x0018, 0x0182,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x013A,\n    0x0018, 0x00F2, 0x0018, 0x010A, 0x0018, 0x0122,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02ED,\n    0x0018, 0x02A2, 0x0018, 0x02BA, 0x0018, 0x02D2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x028A,\n    0x0018, 0x0242, 0x0018, 0x025A, 0x0018, 0x0272,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02F1,\n    0x0018, 0x01FA, 0x0018, 0x0212, 0x0018, 0x022A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x01E2,\n    0x0018, 0x019A, 0x0018, 0x01B2, 0x0018, 0x01CA,\n};\n\nstatic const s16 anim_74_values[] = {\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0003, 0x0007,\n    0x0004, 0x0000, 0xFFFB, 0xFFF5, 0xFFF0, 0xFFEE, 0xFFEE, 0xFFF0,\n    0xFFF1, 0xFFF4, 0xFFF6, 0xFFF8, 0xFFFB, 0xFFFD, 0xFFFF, 0x0000,\n    0x0000, 0x00AA, 0x00A8, 0x00A5, 0x00A1, 0x00A0, 0x00A5, 0x00AB,\n    0x00AD, 0x00AD, 0x00AB, 0x00A9, 0x00A6, 0x00A5, 0x00A5, 0x00A5,\n    0x00A5, 0x00A6, 0x00A7, 0x00A7, 0x00A8, 0x00A9, 0x00A9, 0x00AA,\n    0x00AA, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0x0000,\n    0x000D, 0x0018, 0x0014, 0x000C, 0x0004, 0x0000, 0xFFFF, 0xFFFE,\n    0xFFFE, 0xFFFE, 0xFFFE, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x3FFF, 0xE6BE, 0xE707, 0xE7D3, 0xE90B, 0xEA9A, 0xEC7E,\n    0xEEAB, 0xF103, 0xF363, 0xF5AC, 0xF7BC, 0xF97D, 0xFADF, 0xFBC7,\n    0xFC6A, 0xFD08, 0xFDA0, 0xFE2E, 0xFEB0, 0xFF20, 0xFF7E, 0xFFC4,\n    0xFFF1, 0x0000, 0xF97C, 0xF91D, 0xF840, 0xF746, 0xF690, 0xF61F,\n    0xF5BC, 0xF567, 0xF526, 0xF4FA, 0xF4E6, 0xF530, 0xF5CF, 0xF659,\n    0xF6B9, 0xF720, 0xF78B, 0xF7F6, 0xF85B, 0xF8B8, 0xF907, 0xF945,\n    0xF96D, 0xF97C, 0xED8C, 0xED0A, 0xEBC8, 0xEA28, 0xE88D, 0xE6E7,\n    0xE503, 0xE313, 0xE148, 0xDFD2, 0xDEE4, 0xDF79, 0xE166, 0xE323,\n    0xE457, 0xE5A9, 0xE70A, 0xE86C, 0xE9C0, 0xEAF6, 0xEC02, 0xECD3,\n    0xED5B, 0xED8C, 0xF517, 0xF261, 0xEC68, 0xE665, 0xE392, 0xE471,\n    0xE6EC, 0xEA58, 0xEE09, 0xF154, 0xF38E, 0xF435, 0xF344, 0xF0D1,\n    0xED2C, 0xE8C1, 0xE3D6, 0xDEB2, 0xD999, 0xD4D2, 0xD0A1, 0xCD4D,\n    0xCB1A, 0xCA4F, 0x3882, 0x476E, 0x676B, 0x854F, 0x8DE9, 0x7DE5,\n    0x6228, 0x3FCD, 0x1BF3, 0xFBBA, 0xE43F, 0xDF81, 0xE943, 0xF14B,\n    0xF2FE, 0xF491, 0xF600, 0xF748, 0xF867, 0xF958, 0xFA1A, 0xFAA8,\n    0xFAFF, 0xFB1D, 0xDAF7, 0xD8EB, 0xD43B, 0xCF11, 0xCB98, 0xC9A0,\n    0xC7C0, 0xC64E, 0xC5A1, 0xC60E, 0xC7EB, 0xD02C, 0xDCD6, 0xE3DA,\n    0xE40F, 0xE32A, 0xE16B, 0xDF15, 0xDC68, 0xD9A6, 0xD70F, 0xD4E5,\n    0xD369, 0xD2DC, 0x8E88, 0x81D9, 0x66B9, 0x4D94, 0x46CD, 0x5548,\n    0x6DFC, 0x8C6F, 0xAC1D, 0xC88E, 0xDD43, 0xE107, 0xD7D2, 0xD0EB,\n    0xD07E, 0xD078, 0xD0C5, 0xD14D, 0xD1FD, 0xD2BD, 0xD378, 0xD419,\n    0xD489, 0xD4B4, 0x1619, 0x15EE, 0x156F, 0x14A4, 0x1393, 0x1243,\n    0x10C1, 0x0F1F, 0x0D6F, 0x0BC3, 0x0A2C, 0x088B, 0x06DF, 0x0563,\n    0x0451, 0x038D, 0x02D3, 0x0227, 0x018D, 0x0107, 0x0099, 0x0046,\n    0x0012, 0x0000, 0x1127, 0x1105, 0x10A3, 0x1005, 0x0F31, 0x0E2C,\n    0x0D01, 0x0BBD, 0x0A6D, 0x0921, 0x07E5, 0x06A2, 0x0555, 0x042E,\n    0x035A, 0x02C1, 0x0231, 0x01AC, 0x0134, 0x00CC, 0x0076, 0x0036,\n    0x000E, 0x0000, 0xE8AE, 0xE8C7, 0xE90F, 0xE983, 0xEA1F, 0xEADF,\n    0xEBBB, 0xECA9, 0xED9F, 0xEE94, 0xEF7C, 0xF069, 0xF15E, 0xF237,\n    0xF2D3, 0xF342, 0xF3AC, 0xF40E, 0xF467, 0xF4B3, 0xF4F2, 0xF521,\n    0xF53F, 0xF549, 0xD13C, 0xD6FD, 0xE3D0, 0xF110, 0xF818, 0xF7F1,\n    0xF4D9, 0xEFFA, 0xEA7C, 0xE589, 0xE24A, 0xE1CF, 0xE329, 0xE481,\n    0xE401, 0xE16F, 0xDDFF, 0xDA00, 0xD5C3, 0xD198, 0xCDCE, 0xCAB7,\n    0xC8A1, 0xC7DD, 0x266D, 0x22F9, 0x19C4, 0x0C89, 0xFD02, 0xE618,\n    0xCA12, 0xB5B9, 0xAC86, 0xAB01, 0xB387, 0xCA70, 0xEAD3, 0x0932,\n    0x1A12, 0x1E54, 0x1F0F, 0x1D12, 0x192C, 0x142C, 0x0EE0, 0x0A17,\n    0x06A1, 0x054B, 0x2576, 0x25A8, 0x264E, 0x277D, 0x294C, 0x2CE7,\n    0x3191, 0x3487, 0x33E5, 0x318E, 0x3064, 0x31BD, 0x342B, 0x366A,\n    0x3736, 0x368B, 0x355A, 0x33CC, 0x3209, 0x303C, 0x2E8D, 0x2D27,\n    0x2C31, 0x2BD6, 0xF542, 0xF65F, 0xF740, 0xF42F, 0xE979, 0xCDCE,\n    0xA6BF, 0x86E8, 0x71D2, 0x63F9, 0x655A, 0x7C6B, 0xA0CF, 0xC443,\n    0xD88F, 0xDE75, 0xE0BC, 0xE02D, 0xDD8F, 0xD9AB, 0xD548, 0xD12E,\n    0xCE25, 0xCCF6, 0x0000, 0x0014, 0x0037, 0x0086, 0x0078, 0xFF05,\n    0xFDCC, 0xFECA, 0xFFEE, 0xFFE6, 0xFF98, 0xFF2A, 0xFEC5, 0xFE58,\n    0xFDD6, 0xFD70, 0xFD56, 0xFD91, 0xFDFB, 0xFE7F, 0xFF09, 0xFF85,\n    0xFFDE, 0x0000, 0xFF30, 0xFF35, 0xFF40, 0xFF4D, 0xFF56, 0xFF53,\n    0xFF4A, 0xFF42, 0xFF31, 0xFF0A, 0xFEDB, 0xFEB1, 0xFE99, 0xFE9C,\n    0xFEB1, 0xFECB, 0xFEE0, 0xFEEE, 0xFEFE, 0xFF0D, 0xFF1B, 0xFF26,\n    0xFF2D, 0xFF30, 0xC9D8, 0xC5B5, 0xBE69, 0xB5AB, 0xB094, 0xB7E0,\n    0xC258, 0xCA47, 0xCDEB, 0xCA87, 0xC489, 0xBE77, 0xBAD8, 0xBABF,\n    0xBCB1, 0xBF5F, 0xC177, 0xC2EE, 0xC484, 0xC619, 0xC78C, 0xC8BD,\n    0xC98C, 0xC9D8, 0x1E4A, 0x2BCC, 0x3C1B, 0x3B3B, 0x34B2, 0x2D68,\n    0x24BC, 0x1D51, 0x19CE, 0x1C59, 0x230C, 0x2A7D, 0x2F41, 0x3054,\n    0x2F92, 0x2DDB, 0x2C10, 0x2A2B, 0x27C2, 0x2521, 0x2293, 0x2064,\n    0x1EDD, 0x1E4A, 0x0D67, 0x0CE4, 0x0C97, 0x0DFF, 0x0F1F, 0x0E90,\n    0x0D7C, 0x0C67, 0x0BD6, 0x0BD6, 0x0C27, 0x0CDD, 0x0E09, 0x100E,\n    0x12C3, 0x1569, 0x173F, 0x1853, 0x1934, 0x19E5, 0x1A69, 0x1AC4,\n    0x1AF8, 0x1B09, 0x0E7F, 0x0ED1, 0x0E8C, 0x0C34, 0x09CF, 0x08BD,\n    0x07FB, 0x076C, 0x06F5, 0x0651, 0x05A5, 0x056D, 0x0628, 0x0895,\n    0x0C3C, 0x0FCB, 0x11F2, 0x12A6, 0x12D7, 0x12AB, 0x1247, 0x11D0,\n    0x116E, 0x1144, 0x9B5E, 0x9CB5, 0xA119, 0xABB2, 0xB3CC, 0xB305,\n    0xAF9C, 0xAB4C, 0xA7D3, 0xA537, 0xA2AF, 0xA0C4, 0x9FFA, 0xA0E9,\n    0xA323, 0xA5A7, 0xA775, 0xA88B, 0xA98D, 0xAA72, 0xAB32, 0xABC5,\n    0xAC23, 0xAC44, 0x048E, 0x0452, 0x03B2, 0x02CF, 0x01C7, 0x0005,\n    0xFE2B, 0xFD57, 0xFCBF, 0xFBCB, 0xFAA9, 0xF999, 0xF8DD, 0xF8B5,\n    0xF916, 0xF9BE, 0xFA9A, 0xFB96, 0xFCA0, 0xFDA4, 0xFE90, 0xFF50,\n    0xFFD1, 0x0000, 0x009A, 0x009A, 0x0097, 0x008E, 0x007A, 0x0041,\n    0x0000, 0xFFCA, 0xFFD7, 0x005A, 0x010D, 0x01C4, 0x0253, 0x028F,\n    0x027F, 0x024E, 0x0205, 0x01AC, 0x014B, 0x00E9, 0x008F, 0x0045,\n    0x0012, 0x0000, 0xC1BE, 0xC3AD, 0xC7EA, 0xCC18, 0xCDDE, 0xC864,\n    0xC070, 0xBB9F, 0xB925, 0xB929, 0xB9F0, 0xBB17, 0xBC3B, 0xBCF7,\n    0xBD5C, 0xBDBA, 0xBE0F, 0xBE5B, 0xBE9E, 0xBED6, 0xBF04, 0xBF25,\n    0xBF39, 0xBF40, 0x2537, 0x2427, 0x2225, 0x20F5, 0x225E, 0x2E45,\n    0x38FC, 0x303A, 0x2607, 0x254F, 0x2672, 0x2875, 0x2A5C, 0x2B2D,\n    0x2AF7, 0x2A7D, 0x29CF, 0x2900, 0x2821, 0x2743, 0x2678, 0x25D1,\n    0x2560, 0x2537, 0xEC17, 0xED78, 0xF0D9, 0xF514, 0xF905, 0xFE8A,\n    0x0092, 0xF5A4, 0xEAC8, 0xE897, 0xE838, 0xE8BC, 0xE930, 0xE8A3,\n    0xE704, 0xE4FB, 0xE2AA, 0xE036, 0xDDC1, 0xDB70, 0xD964, 0xD7C3,\n    0xD6AE, 0xD64A, 0xF7DB, 0xF7C1, 0xF78D, 0xF76C, 0xF786, 0xF8C6,\n    0xF982, 0xF760, 0xF480, 0xF209, 0xEF5F, 0xECDF, 0xEAE3, 0xE9C7,\n    0xE967, 0xE955, 0xE981, 0xE9DB, 0xEA54, 0xEADB, 0xEB5F, 0xEBD2,\n    0xEC22, 0xEC41, 0xB0EC, 0xAFA6, 0xACA1, 0xA90C, 0xA618, 0xA301,\n    0xA37B, 0xAF50, 0xB9B8, 0xBA41, 0xB88C, 0xB5C9, 0xB327, 0xB1D4,\n    0xB1B7, 0xB1E0, 0xB23F, 0xB2C5, 0xB362, 0xB406, 0xB4A1, 0xB523,\n    0xB57D, 0xB59E, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001,\n    0x4171, 0xBF5F, 0x0000, 0x0006, 0x000D, 0x0005, 0xFFFB, 0x0000,\n    0x00D3, 0x0074, 0xFC52, 0xF70D, 0xF46A, 0xF6FC, 0xFC2F, 0x0005,\n    0x0133, 0x0171, 0x0144, 0x0130, 0x011E, 0x00E1, 0x00A1, 0x0057,\n    0x0019, 0x0000, 0x0000, 0x006F, 0x0151, 0x026D, 0x03A5, 0x047B,\n    0x0493, 0x03C1, 0x0202, 0xFFD5, 0xFDCB, 0xFBCF, 0xF9F7, 0xF913,\n    0xF924, 0xF98B, 0xFA2F, 0xFAF7, 0xFBC8, 0xFC8A, 0xFD78, 0xFE9E,\n    0xFF97, 0x0000, 0x10C0, 0x1193, 0x1064, 0x0A47, 0x0276, 0xFCB3,\n    0xFD2E, 0xFEF6, 0xFCDD, 0xF9DF, 0xF84D, 0xF9F8, 0xFD10, 0xFE6B,\n    0xFCCB, 0xF9CE, 0xF69E, 0xF461, 0xF49A, 0xF62D, 0xF7E6, 0xF9F2,\n    0xFBAA, 0xFC62, 0x025A, 0x027E, 0x020F, 0xFFB8, 0xFDC5, 0xFE0E,\n    0xFF23, 0x004C, 0x0181, 0x02CC, 0x038B, 0x035B, 0x02A0, 0x01EE,\n    0x0168, 0x00EB, 0x0099, 0x006C, 0x0048, 0x002C, 0x0017, 0x000A,\n    0x0002, 0x0000, 0xF846, 0xFA4D, 0xFE0B, 0x029A, 0x05F9, 0x0639,\n    0x052D, 0x0349, 0xFFF0, 0xFBBD, 0xF8F9, 0xF8EC, 0xFA4E, 0xFB88,\n    0xFC02, 0xFC54, 0xFCB0, 0xFD33, 0xFDCD, 0xFE6E, 0xFF07, 0xFF87,\n    0xFFE0, 0x0000, 0x14E9, 0x0EEF, 0x06AC, 0x0382, 0x029C, 0x0310,\n    0x0467, 0x0676, 0x09B2, 0x0DA7, 0x10D7, 0x1287, 0x1371, 0x1443,\n    0x159F, 0x16E3, 0x16CD, 0x1526, 0x12C5, 0x1007, 0x0D46, 0x0ADE,\n    0x0929, 0x0884, 0x387B, 0x388F, 0x38C7, 0x391E, 0x398F, 0x3A14,\n    0x3AA8, 0x3B46, 0x3BE8, 0x3C88, 0x3D23, 0x3DB2, 0x3E30, 0x3E98,\n    0x3EF0, 0x3F42, 0x3F8D, 0x3FD2, 0x400E, 0x4041, 0x406A, 0x4088,\n    0x409B, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_75.inc.c",
    "content": "static const struct Animation anim_75[] = {\n    1,\n    189,\n    0,\n    0,\n    0x18,\n    ANIMINDEX_NUMPARTS(anim_75_indices),\n    anim_75_values,\n    anim_75_indices,\n    0,\n};\n\n\nstatic const u16 anim_75_indices[] = {\n    0x0018, 0x0001, 0x0018, 0x0019, 0x0018, 0x0031, 0x0001, 0x0000, 0x0001, 0x0049, 0x0001, 0x0000,\n    0x0018, 0x036A, 0x0018, 0x0382, 0x0018, 0x039A,\n    0x0018, 0x0322, 0x0018, 0x033A, 0x0018, 0x0352,\n    0x0018, 0x02DA, 0x0018, 0x02F2, 0x0018, 0x030A,\n    0x0001, 0x02D6, 0x0001, 0x02D7, 0x0001, 0x02D8,\n    0x0018, 0x00AA, 0x0018, 0x00C2, 0x0018, 0x00DA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x0092,\n    0x0018, 0x004A, 0x0018, 0x0062, 0x0018, 0x007A,\n    0x0001, 0x02D2, 0x0001, 0x02D3, 0x0001, 0x02D4,\n    0x0018, 0x013A, 0x0018, 0x0152, 0x0018, 0x016A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x0122,\n    0x0018, 0x00F2, 0x0001, 0x0000, 0x0018, 0x010A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02D5,\n    0x0018, 0x028A, 0x0018, 0x02A2, 0x0018, 0x02BA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x0272,\n    0x0018, 0x022A, 0x0018, 0x0242, 0x0018, 0x025A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02D9,\n    0x0018, 0x01E2, 0x0018, 0x01FA, 0x0018, 0x0212,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x01CA,\n    0x0018, 0x0182, 0x0018, 0x019A, 0x0018, 0x01B2,\n};\n\nstatic const s16 anim_75_values[] = {\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0xFFFF, 0xFFFD, 0xFFFE, 0xFFFF, 0x0000, 0x0001, 0x0001, 0xFFFB,\n    0xFFFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x00B4, 0x00B5, 0x00B6, 0x00B0, 0x00AC, 0x00B1, 0x00B5,\n    0x00B2, 0x00AE, 0x00AF, 0x00B2, 0x00B3, 0x00B4, 0x00B2, 0x00AD,\n    0x00A6, 0x009F, 0x009B, 0x009C, 0x009F, 0x00A3, 0x00A6, 0x00A9,\n    0x00AA, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0004, 0x000B, 0x0010, 0x0015, 0x0017, 0x0015,\n    0x000C, 0x0001, 0xFFFE, 0xFFFA, 0xFFFB, 0xFFFD, 0xFFFE, 0x0000,\n    0x0000, 0x3FFF, 0x0000, 0xFBAE, 0xF21A, 0xE856, 0xE378, 0xE34F,\n    0xE42A, 0xE5D9, 0xE829, 0xEAEA, 0xEDEA, 0xF0FA, 0xF3E8, 0xF683,\n    0xF9D1, 0xFDA6, 0x0000, 0x00B2, 0x00F7, 0x00EE, 0x00B2, 0x0063,\n    0x001D, 0x0000, 0xF97C, 0xF645, 0xEF29, 0xE7FA, 0xE486, 0xE4AD,\n    0xE5A9, 0xE74C, 0xE96D, 0xEBDD, 0xEE73, 0xF101, 0xF35D, 0xF55A,\n    0xF71C, 0xF89E, 0xF97C, 0xF9C9, 0xF9E8, 0xF9E3, 0xF9C9, 0xF9A7,\n    0xF989, 0xF97C, 0xED8C, 0xEC88, 0xEA48, 0xE7FE, 0xE6DE, 0xE6DC,\n    0xE719, 0xE789, 0xE81F, 0xE8D0, 0xE98E, 0xEA4E, 0xEB03, 0xEBA1,\n    0xEC55, 0xED16, 0xED8C, 0xEDB0, 0xEDBE, 0xEDBC, 0xEDB0, 0xEDA0,\n    0xED92, 0xED8C, 0xE120, 0xE35C, 0xE815, 0xEC55, 0xED26, 0xE950,\n    0xE2C0, 0xDB33, 0xD469, 0xD01F, 0xCFD1, 0xD257, 0xD57D, 0xD710,\n    0xD5AA, 0xD2C5, 0xD07C, 0xCF35, 0xCDF6, 0xCCCE, 0xCBCE, 0xCB03,\n    0xCA7F, 0xCA4F, 0xF59C, 0xF55B, 0xF4C4, 0xF41B, 0xF3A2, 0xF39B,\n    0xF44B, 0xF596, 0xF730, 0xF8CB, 0xFA1C, 0xFAD4, 0xFAA8, 0xF94A,\n    0xF0FA, 0xE3BB, 0xDCE9, 0xDEB8, 0xE316, 0xE8FA, 0xEF5C, 0xF533,\n    0xF976, 0xFB1D, 0xE52F, 0xE555, 0xE59A, 0xE5BD, 0xE57B, 0xE491,\n    0xE2F0, 0xE0D1, 0xDE63, 0xDBD5, 0xD954, 0xD70F, 0xD534, 0xD3F2,\n    0xD54D, 0xD8C0, 0xDAA3, 0xDA20, 0xD8FC, 0xD778, 0xD5D7, 0xD45B,\n    0xD347, 0xD2DC, 0xD706, 0xDB79, 0xE612, 0xF2B4, 0xFD40, 0x0197,\n    0xFFD0, 0xFB49, 0xF4DB, 0xED5A, 0xE59C, 0xDE77, 0xD8C2, 0xD552,\n    0xDA22, 0xE52F, 0xEB4F, 0xEA03, 0xE6C4, 0xE25A, 0xDD8E, 0xD929,\n    0xD5F2, 0xD4B4, 0x0000, 0xFF98, 0xFEEA, 0xFEC8, 0x0000, 0x0333,\n    0x07C8, 0x0CB7, 0x10FB, 0x138E, 0x1412, 0x1337, 0x1188, 0x0F90,\n    0x0DDA, 0x0C46, 0x0A6A, 0x0866, 0x065A, 0x0465, 0x02A9, 0x0143,\n    0x0056, 0x0000, 0xF549, 0xF388, 0xEF8D, 0xEB49, 0xE8A8, 0xE808,\n    0xE844, 0xE907, 0xE9FD, 0xEAD2, 0xEB95, 0xEC7E, 0xED77, 0xEE69,\n    0xEF3F, 0xF00B, 0xF0E9, 0xF1CF, 0xF2B0, 0xF381, 0xF438, 0xF4C8,\n    0xF527, 0xF549, 0xE0B8, 0xE29E, 0xE6E9, 0xEB7A, 0xEE35, 0xEEB8,\n    0xEE47, 0xED39, 0xEBE8, 0xEAAC, 0xE99E, 0xE883, 0xE736, 0xE592,\n    0xE371, 0xDFEA, 0xDB4F, 0xD759, 0xD413, 0xD09C, 0xCD4F, 0xCA84,\n    0xC896, 0xC7DD, 0x107B, 0x1294, 0x178B, 0x1D5D, 0x2209, 0x251C,\n    0x27AD, 0x2A09, 0x2C7D, 0x2F57, 0x33BA, 0x3973, 0x3ECD, 0x4210,\n    0x4187, 0x3D17, 0x364B, 0x2DE9, 0x24B4, 0x1B72, 0x12E9, 0x0BDC,\n    0x0710, 0x054B, 0x13E2, 0x1529, 0x1858, 0x1C72, 0x207A, 0x242D,\n    0x27FC, 0x2BFE, 0x3045, 0x34E8, 0x3B05, 0x428D, 0x49D4, 0x4F2A,\n    0x50E3, 0x4F1A, 0x4B6D, 0x466B, 0x40A3, 0x3AA5, 0x3503, 0x304A,\n    0x2D0B, 0x2BD6, 0xD9CE, 0xDEC4, 0xEA34, 0xF6F4, 0xFFD9, 0x0429,\n    0x06DF, 0x0855, 0x08EA, 0x08FA, 0x0895, 0x077E, 0x059B, 0x02D5,\n    0xFF13, 0xF9F8, 0xF390, 0xEC5D, 0xE4E2, 0xDDA0, 0xD718, 0xD1CD,\n    0xCE41, 0xCCF6, 0x004C, 0xFF2A, 0xFD0E, 0xFBEF, 0x0063, 0xFE20,\n    0xFC11, 0xFE93, 0x0235, 0x04EA, 0x06E8, 0x078C, 0x0755, 0x0698,\n    0x052A, 0x0288, 0x0000, 0x003E, 0xFFAF, 0xFFB1, 0xFFC4, 0xFFDF,\n    0xFFF6, 0x0000, 0xFF3F, 0xFF33, 0xFF1F, 0xFF16, 0xFF49, 0xFEF4,\n    0xFEB2, 0xFF06, 0xFF5F, 0xFF30, 0xFEF6, 0xFF25, 0xFF42, 0xFEBA,\n    0xFE48, 0xFEB1, 0xFF42, 0xFF3B, 0xFF6C, 0xFF65, 0xFF56, 0xFF44,\n    0xFF36, 0xFF30, 0xBA5C, 0xB879, 0xB4BD, 0xB20A, 0xB578, 0xC2E1,\n    0xCD25, 0xC846, 0xC07A, 0xBF8C, 0xC0B8, 0xC326, 0xC4DA, 0xC292,\n    0xBF4C, 0xBCFE, 0xBB83, 0xBD39, 0xBF03, 0xC17C, 0xC457, 0xC70B,\n    0xC90E, 0xC9D8, 0x23FE, 0x29CD, 0x35C5, 0x3FB8, 0x3CD8, 0x2739,\n    0x157C, 0x1AEA, 0x2395, 0x21B7, 0x1D57, 0x18CE, 0x1674, 0x1A18,\n    0x20B7, 0x27AC, 0x2ECB, 0x31E9, 0x3045, 0x2C95, 0x27E5, 0x2341,\n    0x1FB4, 0x1E4A, 0x19CA, 0x16B1, 0x0FE8, 0x0936, 0x042F, 0x0E89,\n    0x18C3, 0x1961, 0x17E2, 0x18F8, 0x1A8F, 0x1C41, 0x1E58, 0x2073,\n    0x2135, 0x1ED0, 0x1B51, 0x1928, 0x18D1, 0x1908, 0x1995, 0x1A3E,\n    0x1ACD, 0x1B09, 0x02D9, 0x030E, 0x0386, 0x0408, 0x04AD, 0x07EA,\n    0x0B87, 0x0F0A, 0x11AA, 0x129F, 0x12E0, 0x12EE, 0x122C, 0x1111,\n    0x10B3, 0x1256, 0x149F, 0x15D0, 0x1585, 0x14B0, 0x1396, 0x1279,\n    0x119D, 0x1144, 0xC8E7, 0xC39F, 0xB829, 0xAD1C, 0xA649, 0xA7AB,\n    0xA994, 0xA798, 0xA5D4, 0xA6F9, 0xA919, 0xAB37, 0xACF9, 0xAE69,\n    0xAE29, 0xA9BF, 0xA402, 0xA10B, 0xA1BA, 0xA3C4, 0xA67F, 0xA943,\n    0xAB68, 0xAC44, 0x0000, 0xFDEE, 0xFB05, 0xF9BA, 0xF94D, 0xF96B,\n    0xF9A0, 0xF9E7, 0xFA3B, 0xFA97, 0xFAF7, 0xFB56, 0xFBAE, 0xFC06,\n    0xFC64, 0xFCC6, 0xFD2A, 0xFD8F, 0xFE09, 0xFE81, 0xFF06, 0xFF81,\n    0xFFDD, 0x0000, 0x0000, 0x0001, 0xFFF0, 0xFFA6, 0xFF61, 0xFF41,\n    0xFF1D, 0xFEFA, 0xFEDA, 0xFEC2, 0xFEB6, 0xFEB9, 0xFECF, 0xFF10,\n    0xFF80, 0x000A, 0x0097, 0x0111, 0x0143, 0x0104, 0x00B0, 0x005B,\n    0x001A, 0x0000, 0xC21A, 0xBDAC, 0xB6D2, 0xB17E, 0xAEBC, 0xAF4D,\n    0xB056, 0xB1B8, 0xB356, 0xB511, 0xB6CC, 0xB869, 0xB9C9, 0xBAE8,\n    0xBBE2, 0xBCC6, 0xBDA8, 0xBE99, 0xBFC0, 0xBFC4, 0xBFA7, 0xBF7B,\n    0xBF52, 0xBF40, 0x1A9F, 0x1ADA, 0x1B93, 0x1CD8, 0x1EB7, 0x21A0,\n    0x2573, 0x2960, 0x2C96, 0x2E47, 0x2BD4, 0x26A7, 0x23F6, 0x2573,\n    0x2893, 0x2C3A, 0x2F48, 0x30A0, 0x2FDC, 0x2DC4, 0x2B01, 0x2839,\n    0x2613, 0x2537, 0xEEC9, 0xF134, 0xF676, 0xFB92, 0xFD89, 0xFA70,\n    0xF43F, 0xEDCF, 0xE9F7, 0xEA1D, 0xEC87, 0xEF5C, 0xF0C5, 0xF093,\n    0xEFD9, 0xEE9D, 0xECE4, 0xEAB4, 0xE785, 0xE346, 0xDEB1, 0xDA83,\n    0xD778, 0xD64A, 0xFA12, 0xFA71, 0xFB30, 0xFBC1, 0xFB95, 0xFA15,\n    0xF7B3, 0xF56D, 0xF441, 0xF51B, 0xF73C, 0xF91F, 0xF941, 0xF6F2,\n    0xF32F, 0xEEF2, 0xEB37, 0xE8F7, 0xE863, 0xE8C4, 0xE9B9, 0xEAE0,\n    0xEBD8, 0xEC41, 0xB277, 0xB441, 0xB85E, 0xBCEA, 0xC004, 0xC191,\n    0xC272, 0xC238, 0xC075, 0xBC32, 0xB5F4, 0xAF81, 0xAAA5, 0xA746,\n    0xA454, 0xA21F, 0xA0F7, 0xA12D, 0xA362, 0xA75D, 0xAC25, 0xB0C3,\n    0xB43E, 0xB59E, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001,\n    0x4171, 0xBF5F, 0xF71C, 0xF941, 0xFE43, 0x0400, 0x085B, 0x0984,\n    0x08CF, 0x07CD, 0x067A, 0x0508, 0x03AA, 0x025A, 0x0110, 0x0000,\n    0xFF35, 0xFEA2, 0xFE5D, 0xFE6D, 0xFEB3, 0xFF0E, 0xFF5C, 0xFFA1,\n    0xFFE3, 0x0000, 0x0734, 0x05F6, 0x0313, 0xFFCF, 0xFD6C, 0xFD3E,\n    0xFE0B, 0xFE8A, 0xFF19, 0xFF9E, 0x0000, 0x001F, 0x000F, 0x0000,\n    0xFFF7, 0xFFED, 0x0000, 0x004A, 0x00B2, 0x0110, 0x0138, 0x00E7,\n    0x0051, 0x0000, 0x1612, 0x1220, 0x08FE, 0xFEB5, 0xF74F, 0xF6DB,\n    0xFA69, 0xFE77, 0x0341, 0x07F5, 0x0BC0, 0x0E3B, 0x0F92, 0x0FCE,\n    0x0E9F, 0x0C54, 0x09DF, 0x077A, 0x04E8, 0x026A, 0x003E, 0xFE63,\n    0xFCF4, 0xFC62, 0x09E0, 0x05B7, 0xFCD5, 0xF497, 0xF15E, 0xF3C5,\n    0xF70B, 0xFA6B, 0xFD1D, 0xFF1D, 0x00DF, 0x0259, 0x0380, 0x0448,\n    0x041F, 0x0303, 0x01C5, 0x0066, 0xFEE5, 0xFE0C, 0xFE36, 0xFEE6,\n    0xFFA6, 0x0000, 0xFB91, 0xFC9F, 0xFEE2, 0x0101, 0x01FE, 0x0242,\n    0x0283, 0x0280, 0x01FC, 0x00B7, 0xFEE5, 0xFCF1, 0xFB49, 0xFA59,\n    0xFAC2, 0xFC63, 0xFE8B, 0x01C9, 0x058F, 0x077C, 0x066F, 0x03D8,\n    0x0135, 0x0000, 0x05C3, 0x008A, 0xF5DB, 0xED31, 0xF11E, 0xF8CE,\n    0x017B, 0x0929, 0x0DDA, 0x0F22, 0x0E6A, 0x0C77, 0x0A0D, 0x07EF,\n    0x054D, 0x0216, 0x002D, 0x00AB, 0x0277, 0x042C, 0x0585, 0x06F0,\n    0x080F, 0x0884, 0x0000, 0xFFFA, 0xFFED, 0xFFDF, 0xFFD9, 0xFFDA,\n    0xFFDF, 0xFFE5, 0xFFED, 0xFFF4, 0xFFFB, 0x0000, 0x0002, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0002, 0x0002, 0x0001, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0023, 0x007B, 0x00F1, 0x0169, 0x01F4,\n    0x02A2, 0x035B, 0x0408, 0x0493, 0x04E4, 0x04E3, 0x037F, 0x0109,\n    0xFF81, 0xFF33, 0xFF13, 0xFF17, 0xFF35, 0xFF64, 0xFF9A, 0xFFCC,\n    0xFFF2, 0x0000, 0x40A1, 0x404C, 0x3FB6, 0x3F7D, 0x403D, 0x4212,\n    0x4481, 0x4747, 0x4A20, 0x4CCA, 0x4F02, 0x5085, 0x4FD6, 0x4D34,\n    0x4AED, 0x4987, 0x4806, 0x467E, 0x44FF, 0x439D, 0x426A, 0x4178,\n    0x40DA, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_76.inc.c",
    "content": "static const struct Animation anim_76[] = {\n    1,\n    189,\n    0,\n    0,\n    0x64,\n    ANIMINDEX_NUMPARTS(anim_76_indices),\n    anim_76_values,\n    anim_76_indices,\n    0,\n};\n\n\nstatic const u16 anim_76_indices[] = {\n    0x0001, 0x0000, 0x0064, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0065, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0064, 0x084C, 0x0064, 0x08B0,\n    0x0064, 0x0720, 0x0064, 0x0784, 0x0064, 0x07E8,\n    0x0064, 0x05F4, 0x0064, 0x0658, 0x0064, 0x06BC,\n    0x0001, 0x05F0, 0x0001, 0x05F1, 0x0001, 0x05F2,\n    0x0064, 0x01F6, 0x0064, 0x025A, 0x0064, 0x02BE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0064, 0x0192,\n    0x0064, 0x0066, 0x0064, 0x00CA, 0x0064, 0x012E,\n    0x0001, 0x05EC, 0x0001, 0x05ED, 0x0001, 0x05EE,\n    0x0064, 0x04B2, 0x0064, 0x0516, 0x0064, 0x057A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0064, 0x044E,\n    0x0064, 0x0322, 0x0064, 0x0386, 0x0064, 0x03EA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x05EF,\n    0x0001, 0x05E9, 0x0001, 0x05EA, 0x0001, 0x05EB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x05E8,\n    0x0001, 0x05E5, 0x0001, 0x05E6, 0x0001, 0x05E7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x05F3,\n    0x0001, 0x05E2, 0x0001, 0x05E3, 0x0001, 0x05E4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x05E1,\n    0x0001, 0x05DE, 0x0001, 0x05DF, 0x0001, 0x05E0,\n};\n\nstatic const s16 anim_76_values[] = {\n    0x0000, 0x00BD, 0x00BD, 0x00BD, 0x00BD, 0x00BD, 0x00BD, 0x00BD,\n    0x00BD, 0x00BD, 0x00BD, 0x00BD, 0x00BD, 0x00BD, 0x00BD, 0x00BF,\n    0x00C2, 0x00C6, 0x00CA, 0x00CF, 0x00D4, 0x00D9, 0x00DE, 0x00E2,\n    0x00E6, 0x00E9, 0x00EB, 0x00EC, 0x00EA, 0x00E6, 0x00E0, 0x00D9,\n    0x00D1, 0x00CA, 0x00C3, 0x00BF, 0x00BD, 0x00BD, 0x00BF, 0x00C2,\n    0x00C6, 0x00CB, 0x00CF, 0x00D4, 0x00D8, 0x00DC, 0x00DE, 0x00DF,\n    0x00DE, 0x00DA, 0x00D4, 0x00CE, 0x00C8, 0x00C2, 0x00BE, 0x00BD,\n    0x00BD, 0x00BE, 0x00BF, 0x00C1, 0x00C4, 0x00C6, 0x00C9, 0x00CC,\n    0x00CF, 0x00D2, 0x00D4, 0x00D6, 0x00D8, 0x00D9, 0x00D9, 0x00D9,\n    0x00D9, 0x00D9, 0x00D9, 0x00D9, 0x00D9, 0x00D9, 0x00D9, 0x00D9,\n    0x00D9, 0x00D9, 0x00D9, 0x00D9, 0x00D9, 0x00D9, 0x00D9, 0x00D9,\n    0x00D9, 0x00D9, 0x00D9, 0x00D9, 0x00D9, 0x00D9, 0x00D9, 0x00D9,\n    0x00D9, 0x00D9, 0x00D9, 0x00D9, 0x00D9, 0x3FFF, 0xFF8A, 0xFF9B,\n    0xFFCD, 0x001B, 0x0084, 0x0106, 0x019E, 0x0248, 0x0303, 0x03CB,\n    0x049E, 0x0579, 0x065A, 0x073E, 0x0822, 0x097C, 0x0B7A, 0x0DAE,\n    0x0FAB, 0x1104, 0x114A, 0x10DA, 0x105A, 0x0FCA, 0x0F2B, 0x0E7F,\n    0x0DC7, 0x0D03, 0x0C36, 0x0B5F, 0x0A80, 0x0999, 0x08AE, 0x07BD,\n    0x06C8, 0x05D1, 0x04D9, 0x03DF, 0x02E7, 0x01F0, 0x00FB, 0x000B,\n    0xFF20, 0xFE3A, 0xFD5C, 0xFC85, 0xFBB8, 0xFAF4, 0xFA3D, 0xF991,\n    0xF8F3, 0xF864, 0xF7E4, 0xF775, 0xF717, 0xF6CD, 0xF697, 0xF675,\n    0xF66A, 0xF66A, 0xF66A, 0xF66A, 0xF66A, 0xF66A, 0xF66A, 0xF66A,\n    0xF66A, 0xF66A, 0xF66A, 0xF66A, 0xF66A, 0xF66A, 0xF66A, 0xF66A,\n    0xF66A, 0xF66A, 0xF66A, 0xF66A, 0xF66A, 0xF66A, 0xF66A, 0xF66A,\n    0xF66A, 0xF66A, 0xF66A, 0xF66A, 0xF66A, 0xF66A, 0xF66A, 0xF66A,\n    0xF66A, 0xF66A, 0xF66A, 0xF66A, 0xF66A, 0xF66A, 0xF66A, 0xF66A,\n    0xF66A, 0xF66A, 0xF980, 0xF97F, 0xF97B, 0xF96F, 0xF95A, 0xF937,\n    0xF904, 0xF8BD, 0xF860, 0xF7E9, 0xF755, 0xF6A0, 0xF5C8, 0xF4CA,\n    0xF3A2, 0xF15C, 0xED99, 0xE932, 0xE501, 0xE1DF, 0xE0A6, 0xE0B4,\n    0xE0D6, 0xE10A, 0xE14F, 0xE1A4, 0xE209, 0xE27B, 0xE2FB, 0xE386,\n    0xE41C, 0xE4BC, 0xE564, 0xE613, 0xE6CA, 0xE785, 0xE845, 0xE907,\n    0xE9CC, 0xEA92, 0xEB58, 0xEC1C, 0xECDF, 0xED9E, 0xEE58, 0xEF0D,\n    0xEFBB, 0xF062, 0xF0FF, 0xF193, 0xF21C, 0xF299, 0xF309, 0xF36B,\n    0xF3BD, 0xF3FF, 0xF42F, 0xF44D, 0xF457, 0xF457, 0xF457, 0xF457,\n    0xF457, 0xF457, 0xF457, 0xF457, 0xF457, 0xF457, 0xF457, 0xF457,\n    0xF457, 0xF457, 0xF457, 0xF457, 0xF457, 0xF457, 0xF457, 0xF457,\n    0xF457, 0xF457, 0xF457, 0xF457, 0xF457, 0xF457, 0xF457, 0xF457,\n    0xF457, 0xF457, 0xF457, 0xF457, 0xF457, 0xF457, 0xF457, 0xF457,\n    0xF457, 0xF457, 0xF457, 0xF457, 0xF457, 0xF457, 0xF06F, 0xF099,\n    0xF10D, 0xF1C1, 0xF2A6, 0xF3B1, 0xF4D6, 0xF607, 0xF739, 0xF85E,\n    0xF96B, 0xFA53, 0xFB09, 0xFB81, 0xFBAF, 0xFB03, 0xF943, 0xF6E8,\n    0xF466, 0xF236, 0xF0CD, 0xEFEE, 0xEF09, 0xEE20, 0xED34, 0xEC44,\n    0xEB52, 0xEA5D, 0xE968, 0xE871, 0xE77A, 0xE684, 0xE58F, 0xE49C,\n    0xE3AA, 0xE2BC, 0xE1D1, 0xE0EA, 0xE007, 0xDF2A, 0xDE52, 0xDD81,\n    0xDCB7, 0xDBF5, 0xDB3B, 0xDA89, 0xD9E1, 0xD943, 0xD8B0, 0xD828,\n    0xD7AB, 0xD73B, 0xD6D8, 0xD683, 0xD63C, 0xD603, 0xD5DA, 0xD5C1,\n    0xD5B9, 0xD5B9, 0xD5B9, 0xD5B9, 0xD5B9, 0xD5B9, 0xD5B9, 0xD5B9,\n    0xD5B9, 0xD5B9, 0xD5B9, 0xD5B9, 0xD5B9, 0xD5B9, 0xD5B9, 0xD5B9,\n    0xD5B9, 0xD5B9, 0xD5B9, 0xD5B9, 0xD5B9, 0xD5B9, 0xD5B9, 0xD5B9,\n    0xD5B9, 0xD5B9, 0xD5B9, 0xD5B9, 0xD5B9, 0xD5B9, 0xD5B9, 0xD5B9,\n    0xD5B9, 0xD5B9, 0xD5B9, 0xD5B9, 0xD5B9, 0xD5B9, 0xD5B9, 0xD5B9,\n    0xD5B9, 0xD5B9, 0xD1F7, 0xD1D8, 0xD181, 0xD0F8, 0xD043, 0xCF6A,\n    0xCE71, 0xCD61, 0xCC3E, 0xCB11, 0xC9DF, 0xC8AF, 0xC787, 0xC66D,\n    0xC569, 0xC481, 0xC3BB, 0xC31E, 0xC2B0, 0xC277, 0xC27B, 0xC2AA,\n    0xC2EC, 0xC342, 0xC3A9, 0xC421, 0xC4A9, 0xC53F, 0xC5E2, 0xC691,\n    0xC74B, 0xC80E, 0xC8DA, 0xC9AD, 0xCA86, 0xCB64, 0xCC46, 0xCD2B,\n    0xCE11, 0xCEF7, 0xCFDC, 0xD0BF, 0xD19F, 0xD27A, 0xD34F, 0xD41E,\n    0xD4E5, 0xD5A3, 0xD656, 0xD6FE, 0xD799, 0xD826, 0xD8A4, 0xD912,\n    0xD96F, 0xD9B9, 0xD9F0, 0xDA11, 0xDA1D, 0xDA1D, 0xDA1D, 0xDA1D,\n    0xDA1D, 0xDA1D, 0xDA1D, 0xDA1D, 0xDA1D, 0xDA1D, 0xDA1D, 0xDA1D,\n    0xDA1D, 0xDA1D, 0xDA1D, 0xDA1D, 0xDA1D, 0xDA1D, 0xDA1D, 0xDA1D,\n    0xDA1D, 0xDA1D, 0xDA1D, 0xDA1D, 0xDA1D, 0xDA1D, 0xDA1D, 0xDA1D,\n    0xDA1D, 0xDA1D, 0xDA1D, 0xDA1D, 0xDA1D, 0xDA1D, 0xDA1D, 0xDA1D,\n    0xDA1D, 0xDA1D, 0xDA1D, 0xDA1D, 0xDA1D, 0xDA1D, 0xFD1F, 0xFCC7,\n    0xFBD2, 0xFA5A, 0xF87D, 0xF654, 0xF3FD, 0xF192, 0xEF2F, 0xECEF,\n    0xEA85, 0xE7A9, 0xE481, 0xE132, 0xDDE3, 0xDAB9, 0xD7DB, 0xD56D,\n    0xD397, 0xD27D, 0xD246, 0xD2B8, 0xD37C, 0xD489, 0xD5D8, 0xD763,\n    0xD920, 0xDB09, 0xDD16, 0xDF3F, 0xE17E, 0xE3C9, 0xE61B, 0xE86A,\n    0xEAB0, 0xECE5, 0xEF02, 0xF0FE, 0xF2D3, 0xF478, 0xF5E7, 0xF717,\n    0xF802, 0xF89E, 0xF8E6, 0xF8D1, 0xF858, 0xF773, 0xF4CB, 0xEF72,\n    0xE800, 0xDF0D, 0xD52F, 0xCAFF, 0xC113, 0xB804, 0xB069, 0xAAD9,\n    0xA7EC, 0xA73D, 0xA7E3, 0xA9AC, 0xAC67, 0xAFE6, 0xB3F5, 0xB866,\n    0xBD08, 0xC1A9, 0xC619, 0xCA27, 0xCDA4, 0xD05D, 0xD224, 0xD2C6,\n    0xD2C6, 0xD2C6, 0xD2C6, 0xD2C6, 0xD2C6, 0xD2C6, 0xD2C6, 0xD2C6,\n    0xD2C6, 0xD2C6, 0xD2C6, 0xD2C6, 0xD2C6, 0xD2C6, 0xD2C6, 0xD2C6,\n    0xD2C6, 0xD2C6, 0xD2C6, 0xD2C6, 0xD2C6, 0xD2C6, 0xD2C6, 0xD2C6,\n    0xD2C6, 0xD2C6, 0xD1A4, 0xD0E5, 0xCEE6, 0xCC09, 0xC8AE, 0xC534,\n    0xC1FC, 0xBF66, 0xBDD2, 0xBDA1, 0xBED2, 0xC100, 0xC3F5, 0xC77C,\n    0xCB5C, 0xCF61, 0xD353, 0xD6FC, 0xDA27, 0xDC9B, 0xDE24, 0xDF17,\n    0xDFED, 0xE0A8, 0xE14B, 0xE1D6, 0xE24C, 0xE2AD, 0xE2FC, 0xE33B,\n    0xE36A, 0xE38C, 0xE3A2, 0xE3AE, 0xE3B2, 0xE3AE, 0xE3A6, 0xE39A,\n    0xE38C, 0xE37D, 0xE370, 0xE366, 0xE361, 0xE362, 0xE36B, 0xE37E,\n    0xE39C, 0xE3C7, 0xE423, 0xE4C3, 0xE58D, 0xE667, 0xE737, 0xE7E2,\n    0xE84F, 0xE863, 0xE804, 0xE719, 0xE588, 0xE330, 0xE01C, 0xDC6D,\n    0xD846, 0xD3C8, 0xCF16, 0xCA52, 0xC59E, 0xC11C, 0xBCEE, 0xB936,\n    0xB616, 0xB3B1, 0xB228, 0xB19D, 0xB19D, 0xB19D, 0xB19D, 0xB19D,\n    0xB19D, 0xB19D, 0xB19D, 0xB19D, 0xB19D, 0xB19D, 0xB19D, 0xB19D,\n    0xB19D, 0xB19D, 0xB19D, 0xB19D, 0xB19D, 0xB19D, 0xB19D, 0xB19D,\n    0xB19D, 0xB19D, 0xB19D, 0xB19D, 0xB19D, 0xB19D, 0xC40D, 0xC3B5,\n    0xC2D0, 0xC195, 0xC03B, 0xBEF8, 0xBE04, 0xBD95, 0xBDE2, 0xBF21,\n    0xC17F, 0xC4DB, 0xC8F8, 0xCD97, 0xD27A, 0xD763, 0xDC16, 0xE053,\n    0xE3DD, 0xE677, 0xE7E1, 0xE873, 0xE8AF, 0xE89E, 0xE847, 0xE7B2,\n    0xE6E7, 0xE5EE, 0xE4CE, 0xE390, 0xE23B, 0xE0D7, 0xDF6C, 0xDE01,\n    0xDC9E, 0xDB4C, 0xDA11, 0xD8F6, 0xD803, 0xD73F, 0xD6B2, 0xD663,\n    0xD65C, 0xD6A3, 0xD740, 0xD83C, 0xD99D, 0xDB6C, 0xDF17, 0xE59A,\n    0xEE50, 0xF890, 0x03B5, 0x0F1B, 0x1A1A, 0x240D, 0x2C4C, 0x3233,\n    0x351B, 0x3565, 0x340A, 0x3149, 0x2D5E, 0x2887, 0x2302, 0x1D0C,\n    0x16E3, 0x10C5, 0x0AEE, 0x059D, 0x0110, 0xFD84, 0xFB36, 0xFA63,\n    0xFA63, 0xFA63, 0xFA63, 0xFA63, 0xFA63, 0xFA63, 0xFA63, 0xFA63,\n    0xFA63, 0xFA63, 0xFA63, 0xFA63, 0xFA63, 0xFA63, 0xFA63, 0xFA63,\n    0xFA63, 0xFA63, 0xFA63, 0xFA63, 0xFA63, 0xFA63, 0xFA63, 0xFA63,\n    0xFA63, 0xFA63, 0xF992, 0xF976, 0xF92B, 0xF8BC, 0xF836, 0xF7A3,\n    0xF710, 0xF687, 0xF616, 0xF5C7, 0xF5A6, 0xF5BF, 0xF61E, 0xF6CF,\n    0xF7DC, 0xF95F, 0xFB5E, 0xFDC3, 0x007C, 0x0375, 0x069C, 0x09DC,\n    0x0D22, 0x105A, 0x1372, 0x1655, 0x18F0, 0x1B30, 0x1D01, 0x1E50,\n    0x1F09, 0x1B3E, 0x11ED, 0x0766, 0xFFFA, 0xFE02, 0xFEFF, 0xFFFB,\n    0xFFFB, 0xFFFB, 0xFFFB, 0xFFFB, 0xFFFA, 0xFFFA, 0xFFF9, 0xFFF8,\n    0xFFF7, 0xFFF7, 0xFFF6, 0xFFF5, 0xFFF4, 0xFFF3, 0xFFF2, 0xFFF1,\n    0xFFF0, 0xFFEF, 0xFFEE, 0xFFED, 0xFFEC, 0xFFEB, 0xFFEA, 0xFFE9,\n    0xFFE8, 0xFFE8, 0xFFE7, 0xFFE7, 0xFFE6, 0xFFE6, 0xFFE6, 0xFFE6,\n    0xFFE6, 0xFFE6, 0xFFE6, 0xFFE7, 0xFFE7, 0xFFE8, 0xFFE9, 0xFFEA,\n    0xFFEC, 0xFFED, 0xFFEF, 0xFFF1, 0xFFF3, 0xFFF6, 0xFFF8, 0xFFFB,\n    0x0000, 0x0009, 0x0016, 0x0026, 0x0038, 0x004B, 0x005F, 0x0072,\n    0x0084, 0x0095, 0x00A3, 0x00AE, 0x00B6, 0x00B8, 0x0CE2, 0x0CC4,\n    0x0C6F, 0x0BEE, 0x0B4E, 0x0A99, 0x09DA, 0x091C, 0x086B, 0x07D0,\n    0x0758, 0x070E, 0x06FC, 0x072D, 0x07AD, 0x088E, 0x09D0, 0x0B63,\n    0x0D37, 0x0F3E, 0x1167, 0x13A2, 0x15E1, 0x1813, 0x1A29, 0x1C13,\n    0x1DC2, 0x1F26, 0x202F, 0x20CE, 0x20F3, 0x1D3C, 0x14DB, 0x0BA4,\n    0x0568, 0x04B2, 0x0706, 0x08AB, 0x08BA, 0x08C9, 0x08D7, 0x08E4,\n    0x08F0, 0x08FB, 0x0906, 0x090F, 0x0918, 0x091F, 0x0926, 0x092C,\n    0x0932, 0x0936, 0x093A, 0x093D, 0x0940, 0x0942, 0x0943, 0x0944,\n    0x0944, 0x0943, 0x0942, 0x0940, 0x093E, 0x093B, 0x0938, 0x0935,\n    0x0930, 0x092C, 0x0927, 0x0922, 0x091C, 0x0916, 0x0910, 0x0909,\n    0x0902, 0x08FB, 0x08F4, 0x08EC, 0x08E5, 0x08DD, 0x08D5, 0x08CC,\n    0x08C4, 0x08BC, 0x08B3, 0x08AB, 0x089B, 0x0881, 0x085C, 0x0830,\n    0x07FE, 0x07C9, 0x0792, 0x075C, 0x0728, 0x06FA, 0x06D2, 0x06B2,\n    0x069E, 0x0697, 0xE291, 0xE271, 0xE217, 0xE18C, 0xE0DC, 0xE00F,\n    0xDF2F, 0xDE46, 0xDD5E, 0xDC81, 0xDBB8, 0xDB0D, 0xDA8A, 0xDA39,\n    0xDA24, 0xDA48, 0xDA9B, 0xDB15, 0xDBB0, 0xDC65, 0xDD2F, 0xDE07,\n    0xDEE6, 0xDFC6, 0xE0A1, 0xE170, 0xE22D, 0xE2D1, 0xE357, 0xE3B6,\n    0xE3EB, 0xE2FF, 0xE0B8, 0xDE26, 0xDC55, 0xDBDA, 0xDC17, 0xDC55,\n    0xDC54, 0xDC53, 0xDC51, 0xDC4F, 0xDC4C, 0xDC48, 0xDC44, 0xDC40,\n    0xDC3B, 0xDC36, 0xDC30, 0xDC2A, 0xDC25, 0xDC1E, 0xDC18, 0xDC12,\n    0xDC0C, 0xDC06, 0xDBFF, 0xDBFA, 0xDBF4, 0xDBEE, 0xDBE9, 0xDBE4,\n    0xDBE0, 0xDBDC, 0xDBD8, 0xDBD5, 0xDBD3, 0xDBD1, 0xDBD0, 0xDBCF,\n    0xDBD0, 0xDBD1, 0xDBD3, 0xDBD6, 0xDBDA, 0xDBDF, 0xDBE5, 0xDBED,\n    0xDBF5, 0xDBFF, 0xDC09, 0xDC16, 0xDC23, 0xDC32, 0xDC43, 0xDC55,\n    0xDC76, 0xDCB1, 0xDD01, 0xDD61, 0xDDCE, 0xDE43, 0xDEBB, 0xDF31,\n    0xDFA2, 0xE008, 0xE060, 0xE0A4, 0xE0D0, 0xE0DF, 0xD6DA, 0xD6F4,\n    0xD73C, 0xD7AD, 0xD840, 0xD8ED, 0xD9AE, 0xDA7D, 0xDB52, 0xDC28,\n    0xDCF7, 0xDDB8, 0xDE65, 0xDEF8, 0xDF68, 0xDFB7, 0xDFEB, 0xE009,\n    0xE015, 0xE013, 0xE00A, 0xDFFC, 0xDFF0, 0xDFE9, 0xDFEC, 0xDFFF,\n    0xE024, 0xE062, 0xE0BC, 0xE138, 0xE1DA, 0xE406, 0xE7EA, 0xEBBA,\n    0xEDAB, 0xEB90, 0xE732, 0xE4B4, 0xE488, 0xE45D, 0xE433, 0xE40A,\n    0xE3E3, 0xE3BD, 0xE398, 0xE375, 0xE354, 0xE334, 0xE315, 0xE2F9,\n    0xE2DE, 0xE2C4, 0xE2AD, 0xE297, 0xE283, 0xE271, 0xE262, 0xE254,\n    0xE248, 0xE23E, 0xE236, 0xE231, 0xE22E, 0xE22D, 0xE22E, 0xE232,\n    0xE238, 0xE241, 0xE24C, 0xE25A, 0xE26A, 0xE27D, 0xE293, 0xE2AB,\n    0xE2C6, 0xE2E4, 0xE305, 0xE329, 0xE34F, 0xE379, 0xE3A6, 0xE3D5,\n    0xE408, 0xE43E, 0xE478, 0xE4B4, 0xE522, 0xE5E6, 0xE6EF, 0xE830,\n    0xE99A, 0xEB1D, 0xECAB, 0xEE34, 0xEFAA, 0xF0FD, 0xF21F, 0xF301,\n    0xF393, 0xF3C7, 0x0BC6, 0x0C91, 0x0ECB, 0x1235, 0x1694, 0x1BAA,\n    0x213A, 0x2709, 0x2CD8, 0x326B, 0x3785, 0x3BE9, 0x3F5B, 0x419D,\n    0x4273, 0x41D3, 0x3FFC, 0x3D1C, 0x3963, 0x3500, 0x3021, 0x2AF4,\n    0x25AA, 0x2071, 0x1B78, 0x16ED, 0x12FF, 0x0FDE, 0x0DB8, 0x0CBC,\n    0x0D19, 0x18AB, 0x3121, 0x4A67, 0x586B, 0x4E64, 0x3781, 0x2B9B,\n    0x2EBA, 0x3486, 0x3C45, 0x453F, 0x4EBC, 0x5801, 0x6056, 0x6703,\n    0x6B4F, 0x6C80, 0x6B90, 0x69FE, 0x67D6, 0x6526, 0x61FE, 0x5E69,\n    0x5A78, 0x5636, 0x51B3, 0x4CFC, 0x4820, 0x432B, 0x3E2C, 0x3931,\n    0x3448, 0x2F7F, 0x2AE3, 0x2682, 0x226C, 0x1EAC, 0x1B52, 0x186B,\n    0x15CD, 0x1348, 0x10E3, 0x0EA3, 0x0C8F, 0x0AAC, 0x0900, 0x0791,\n    0x0664, 0x0581, 0x04EC, 0x04AC, 0x04C6, 0x0541, 0x0622, 0x076F,\n    0x09A8, 0x0D22, 0x11A4, 0x16F2, 0x1CD3, 0x230C, 0x2964, 0x2FA0,\n    0x3586, 0x3ADB, 0x3F67, 0x42EE, 0x4537, 0x4606, 0x29C2, 0x298D,\n    0x28FC, 0x2820, 0x270E, 0x25D8, 0x2492, 0x234E, 0x221F, 0x2119,\n    0x204E, 0x1FD2, 0x1FB7, 0x2011, 0x20F2, 0x224F, 0x2409, 0x2615,\n    0x286B, 0x2B00, 0x2DCB, 0x30C1, 0x33DA, 0x370B, 0x3A4B, 0x3D90,\n    0x40D0, 0x4402, 0x471B, 0x4A12, 0x4CDE, 0x4FD0, 0x52DB, 0x556B,\n    0x56E7, 0x55F5, 0x5373, 0x5222, 0x527D, 0x531E, 0x53F3, 0x54EA,\n    0x55F0, 0x56F2, 0x57DF, 0x58A4, 0x592F, 0x596C, 0x5977, 0x5975,\n    0x5968, 0x5951, 0x592F, 0x5905, 0x58D3, 0x5899, 0x5859, 0x5814,\n    0x57C9, 0x577B, 0x5729, 0x56D5, 0x567F, 0x5629, 0x55D2, 0x557D,\n    0x5529, 0x54D8, 0x548A, 0x5441, 0x53F3, 0x5399, 0x5336, 0x52CD,\n    0x525E, 0x51EC, 0x517A, 0x510A, 0x509E, 0x5038, 0x4FDB, 0x4F88,\n    0x4F43, 0x4F0C, 0x4EE7, 0x4ED5, 0x4EE1, 0x4F0C, 0x4F54, 0x4FB1,\n    0x501F, 0x5098, 0x5116, 0x5196, 0x5210, 0x5280, 0x52E1, 0x532D,\n    0x535E, 0x5370, 0xD5E7, 0xD691, 0xD86A, 0xDB3F, 0xDEDE, 0xE312,\n    0xE7A8, 0xEC6C, 0xF12C, 0xF5B4, 0xF9D0, 0xFD4C, 0xFFF6, 0x0198,\n    0x0202, 0x0142, 0xFF9E, 0xFD34, 0xFA23, 0xF689, 0xF285, 0xEE36,\n    0xE9BA, 0xE531, 0xE0B8, 0xDC6E, 0xD871, 0xD4E2, 0xD1DD, 0xCF82,\n    0xCDEE, 0xD183, 0xDB0F, 0xE558, 0xEB24, 0xE62A, 0xDC4F, 0xDA9C,\n    0xE2ED, 0xEDE2, 0xFAAA, 0x0872, 0x166C, 0x23C6, 0x2FAD, 0x3951,\n    0x3FE1, 0x428B, 0x428D, 0x41BD, 0x4029, 0x3DE5, 0x3AFF, 0x3789,\n    0x3393, 0x2F2F, 0x2A6C, 0x255D, 0x2010, 0x1A98, 0x1504, 0x0F65,\n    0x09CD, 0x044C, 0xFEF3, 0xF9D2, 0xF4FA, 0xF07B, 0xEC67, 0xE8CF,\n    0xE588, 0xE25F, 0xDF55, 0xDC6A, 0xD99F, 0xD6F4, 0xD46B, 0xD203,\n    0xCFBE, 0xCD9D, 0xCB9E, 0xC9C4, 0xC810, 0xC680, 0xC518, 0xC3D6,\n    0xC2D7, 0xC22F, 0xC1D4, 0xC1BB, 0xC1D8, 0xC221, 0xC28A, 0xC309,\n    0xC392, 0xC41C, 0xC499, 0xC501, 0xC547, 0xC561, 0xFF34, 0x0238,\n    0xBB3B, 0x344A, 0x0F9B, 0x0761, 0xB184, 0x00AB, 0xFF17, 0xC898,\n    0x29F6, 0xFCDC, 0xFA51, 0xAB16, 0x8001, 0x8001, 0x4171, 0xBF5F,\n    0x8001, 0x8001, 0x4171, 0xBF5F, 0x0000, 0xFFB2, 0xFF30, 0xFF16,\n    0x0000, 0x0286, 0x0630, 0x0A04, 0x0D0A, 0x0F41, 0x114D, 0x1331,\n    0x14EE, 0x1684, 0x17F3, 0x193F, 0x1A74, 0x1B81, 0x1C33, 0x1C56,\n    0x1BBA, 0x1A9C, 0x195B, 0x17F5, 0x1668, 0x14B2, 0x12D1, 0x10C3,\n    0x0E86, 0x0C17, 0x0975, 0x05EB, 0x0134, 0xFBEE, 0xF6B7, 0xF231,\n    0xEEF9, 0xEDA3, 0xED1E, 0xECBD, 0xEC81, 0xEC66, 0xEC6A, 0xEC8D,\n    0xECCC, 0xED25, 0xED97, 0xEE20, 0xEEBE, 0xEF6F, 0xF032, 0xF104,\n    0xF1E5, 0xF2D1, 0xF3C8, 0xF4C7, 0xF5CD, 0xF6D8, 0xF7E6, 0xF981,\n    0xFC00, 0xFF19, 0x027E, 0x05E7, 0x0907, 0x0B93, 0x0D3E, 0x0DBF,\n    0x0D7E, 0x0D19, 0x0C93, 0x0BEE, 0x0B2E, 0x0A53, 0x0961, 0x085B,\n    0x0741, 0x0619, 0x04E2, 0x03A1, 0x0258, 0x0108, 0xFFB6, 0xFE62,\n    0xFD0F, 0xFBC0, 0xFA78, 0xF939, 0xF804, 0xF6DE, 0xF5C8, 0xF4C5,\n    0xF3D7, 0xF300, 0xF244, 0xF1A5, 0xF125, 0xF0C6, 0xF08B, 0xF077,\n    0x0000, 0xFFFE, 0xFFFA, 0xFFFA, 0x0000, 0x0011, 0x0029, 0x0045,\n    0x0060, 0x0081, 0x00AD, 0x00DC, 0x0106, 0x0123, 0x012B, 0x0116,\n    0x00B6, 0x000A, 0xFF4F, 0xFEC0, 0xFE99, 0xFEC1, 0xFEF4, 0xFF32,\n    0xFF78, 0xFFC6, 0x0019, 0x0072, 0x00CF, 0x012E, 0x018F, 0x01F0,\n    0x0250, 0x02AD, 0x0307, 0x035B, 0x03AA, 0x03F1, 0x0431, 0x0470,\n    0x04B0, 0x04EF, 0x052D, 0x056A, 0x05A6, 0x05E1, 0x061A, 0x0652,\n    0x0688, 0x06BB, 0x06EC, 0x071B, 0x0747, 0x0770, 0x0796, 0x07B8,\n    0x07D7, 0x07F2, 0x080A, 0x0807, 0x07DE, 0x079B, 0x0748, 0x06F3,\n    0x06A8, 0x0672, 0x065E, 0x0678, 0x06B1, 0x06F1, 0x0738, 0x0786,\n    0x07DA, 0x0833, 0x0891, 0x08F3, 0x0958, 0x09C0, 0x0A2A, 0x0A96,\n    0x0B02, 0x0B6F, 0x0BDB, 0x0C46, 0x0CB0, 0x0D17, 0x0D7C, 0x0DDD,\n    0x0E39, 0x0E91, 0x0EE4, 0x0F31, 0x0F77, 0x0FB5, 0x0FEC, 0x101A,\n    0x103F, 0x105A, 0x106B, 0x1071, 0xEE88, 0xEFF5, 0xF340, 0xF6F0,\n    0xF988, 0xFAA0, 0xFB03, 0xFB05, 0xFAFB, 0xFB09, 0xFB19, 0xFB20,\n    0xFB11, 0xFAE3, 0xFA8A, 0xF9FC, 0xF8DF, 0xF72C, 0xF552, 0xF3BF,\n    0xF2E2, 0xF28B, 0xF23F, 0xF1FD, 0xF1C5, 0xF198, 0xF175, 0xF15C,\n    0xF14D, 0xF149, 0xF14F, 0xF15E, 0xF178, 0xF19C, 0xF1CA, 0xF202,\n    0xF243, 0xF295, 0xF303, 0xF38B, 0xF429, 0xF4D9, 0xF599, 0xF663,\n    0xF734, 0xF80A, 0xF8DF, 0xF9B1, 0xFA7B, 0xFB3B, 0xFBEC, 0xFC8B,\n    0xFD14, 0xFD84, 0xFDD6, 0xFE08, 0xFE15, 0xFDFA, 0xFDB3, 0xFCC7,\n    0xFAE6, 0xF84F, 0xF53D, 0xF1EE, 0xEE9E, 0xEB89, 0xE8ED, 0xE706,\n    0xE58A, 0xE406, 0xE27B, 0xE0EB, 0xDF56, 0xDDBF, 0xDC27, 0xDA8E,\n    0xD8F7, 0xD762, 0xD5D1, 0xD446, 0xD2C0, 0xD143, 0xCFCF, 0xCE65,\n    0xCD07, 0xCBB6, 0xCA73, 0xC940, 0xC81E, 0xC70E, 0xC612, 0xC52B,\n    0xC45A, 0xC3A1, 0xC300, 0xC27A, 0xC20F, 0xC1C2, 0xC192, 0xC182,\n    0x0000, 0x0048, 0x00C0, 0x00D8, 0x0000, 0xFDC2, 0xFA86, 0xF704,\n    0xF3F9, 0xF149, 0xEE78, 0xEBAC, 0xE90C, 0xE6BF, 0xE4EA, 0xE3B4,\n    0xE30B, 0xE2BB, 0xE2B8, 0xE2F6, 0xE369, 0xE406, 0xE4C2, 0xE58F,\n    0xE663, 0xE779, 0xE8FA, 0xEABF, 0xEC9F, 0xEE75, 0xF017, 0xF058,\n    0xEFB5, 0xF08C, 0xF539, 0x03B5, 0x179E, 0x23BC, 0x2709, 0x2962,\n    0x2AE2, 0x2BA6, 0x2BC8, 0x2B65, 0x2A99, 0x297F, 0x2833, 0x26D1,\n    0x2530, 0x2321, 0x20B2, 0x1DF1, 0x1AED, 0x17B5, 0x1457, 0x10E1,\n    0x0D64, 0x09EC, 0x068A, 0x02DE, 0xFEA7, 0xFA1C, 0xF576, 0xF0EC,\n    0xECB8, 0xE912, 0xE631, 0xE44E, 0xE31F, 0xE231, 0xE17E, 0xE101,\n    0xE0B2, 0xE08D, 0xE08C, 0xE0A7, 0xE0DB, 0xE120, 0xE170, 0xE1C6,\n    0xE21D, 0xE26D, 0xE2B1, 0xE2E3, 0xE2FD, 0xE2FA, 0xE2E4, 0xE2CB,\n    0xE2B0, 0xE294, 0xE276, 0xE259, 0xE23C, 0xE221, 0xE208, 0xE1F2,\n    0xE1E0, 0xE1D2, 0xE1C9, 0xE1C6, 0x0000, 0x0006, 0x0011, 0x0013,\n    0x0000, 0xFF9B, 0xFEFF, 0xFE9D, 0xFEE7, 0xFFFE, 0x0190, 0x0362,\n    0x0539, 0x06D8, 0x0804, 0x0882, 0x087A, 0x083A, 0x07C2, 0x0710,\n    0x0624, 0x04FC, 0x0397, 0x01F5, 0x0015, 0xFD63, 0xF9A4, 0xF55D,\n    0xF111, 0xED46, 0xEA7E, 0xE92D, 0xE922, 0xE9EB, 0xEB15, 0xED76,\n    0xF0C8, 0xF2F1, 0xF3AA, 0xF41D, 0xF45D, 0xF47C, 0xF48C, 0xF4A1,\n    0xF4CB, 0xF51E, 0xF5AB, 0xF685, 0xF7B0, 0xF91B, 0xFAB8, 0xFC7A,\n    0xFE54, 0x0037, 0x0219, 0x03EB, 0x059F, 0x0728, 0x087A, 0x09AB,\n    0x0AD4, 0x0BEB, 0x0CE2, 0x0DB0, 0x0E47, 0x0E9E, 0x0EA7, 0x0E57,\n    0x0DC5, 0x0D12, 0x0C41, 0x0B55, 0x0A52, 0x093C, 0x0815, 0x06E1,\n    0x05A3, 0x045F, 0x0319, 0x01D3, 0x0091, 0xFF58, 0xFE29, 0xFD08,\n    0xFBF9, 0xFAFE, 0xFA0A, 0xF90C, 0xF809, 0xF705, 0xF605, 0xF50D,\n    0xF422, 0xF348, 0xF284, 0xF1D9, 0xF14D, 0xF0E3, 0xF0A0, 0xF089,\n    0x0F09, 0x0CAE, 0x073A, 0x0118, 0xFCB5, 0xFA73, 0xF920, 0xF8BD,\n    0xF94A, 0xFA9B, 0xFC6A, 0xFE93, 0x00F2, 0x0365, 0x05C9, 0x07FA,\n    0x0A43, 0x0CE6, 0x0FB4, 0x1281, 0x151D, 0x1759, 0x1908, 0x19FC,\n    0x1A05, 0x184C, 0x1497, 0x0FA4, 0x0A30, 0x04F9, 0x00BE, 0xFD34,\n    0xF9FB, 0xF7BB, 0xF717, 0xFA90, 0x0084, 0x0368, 0x029B, 0x0141,\n    0xFF7A, 0xFD61, 0xFB16, 0xF8B5, 0xF65E, 0xF42D, 0xF241, 0xF0B8,\n    0xEF5D, 0xEDF1, 0xEC84, 0xEB25, 0xE9E2, 0xE8CC, 0xE7F1, 0xE760,\n    0xE728, 0xE759, 0xE802, 0xE985, 0xEC0E, 0xEF54, 0xF311, 0xF6FD,\n    0xFAD0, 0xFE45, 0x0111, 0x02F1, 0x042B, 0x053A, 0x0621, 0x06E5,\n    0x0789, 0x0812, 0x0882, 0x08DF, 0x092B, 0x096C, 0x09A4, 0x09D8,\n    0x0A0B, 0x0A42, 0x0A80, 0x0ACA, 0x0B22, 0x0B8E, 0x0C0C, 0x0C95,\n    0x0D26, 0x0DBC, 0x0E53, 0x0EE9, 0x0F7A, 0x1002, 0x107E, 0x10EB,\n    0x1146, 0x118B, 0x11B6, 0x11C6, 0x0000, 0xFFF9, 0xFFE2, 0xFFBD,\n    0xFF8B, 0xFF4D, 0xFF04, 0xFEB0, 0xFE53, 0xFDEE, 0xFD81, 0xFD0E,\n    0xFC95, 0xFC18, 0xFB97, 0xFB13, 0xFA8E, 0xFA07, 0xF981, 0xF8FC,\n    0xF879, 0xF7F9, 0xF77C, 0xF705, 0xF693, 0xF628, 0xF5C5, 0xF56A,\n    0xF519, 0xF4D3, 0xF498, 0xF469, 0xF447, 0xF434, 0xF430, 0xF430,\n    0xF430, 0xF430, 0xF430, 0xF430, 0xF430, 0xF430, 0xF430, 0xF430,\n    0xF430, 0xF430, 0xF430, 0xF430, 0xF430, 0xF430, 0xF430, 0xF430,\n    0xF430, 0xF430, 0xF430, 0xF430, 0xF430, 0xF430, 0xF430, 0xF430,\n    0xF430, 0xF430, 0xF430, 0xF430, 0xF430, 0xF430, 0xF430, 0xF430,\n    0xF430, 0xF430, 0xF430, 0xF430, 0xF430, 0xF430, 0xF430, 0xF430,\n    0xF430, 0xF430, 0xF430, 0xF430, 0xF430, 0xF430, 0xF430, 0xF430,\n    0xF430, 0xF430, 0xF430, 0xF430, 0xF430, 0xF430, 0xF430, 0xF430,\n    0xF430, 0xF430, 0xF430, 0xF430, 0xF430, 0xF430, 0xF430, 0xF430,\n    0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF,\n    0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF,\n    0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF,\n    0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF,\n    0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF,\n    0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF,\n    0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF,\n    0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF,\n    0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF,\n    0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF,\n    0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF,\n    0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF, 0x46AF,\n    0x46AF, 0x46AF, 0x46AF, 0x46AF,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_77.inc.c",
    "content": "static const struct Animation anim_77[] = {\n    0,\n    189,\n    0,\n    0,\n    0x64,\n    ANIMINDEX_NUMPARTS(anim_77_indices),\n    anim_77_values,\n    anim_77_indices,\n    0,\n};\n\n\nstatic const u16 anim_77_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x04CF,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0064, 0x046B,\n    0x0064, 0x033F, 0x0064, 0x03A3, 0x0064, 0x0407,\n    0x0001, 0x033B, 0x0001, 0x033C, 0x0001, 0x033D,\n    0x0064, 0x006A, 0x0064, 0x00CE, 0x0064, 0x0132,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0064, 0x0006,\n    0x0001, 0x0003, 0x0001, 0x0004, 0x0001, 0x0005,\n    0x0001, 0x0337, 0x0001, 0x0338, 0x0001, 0x0339,\n    0x0064, 0x01FD, 0x0064, 0x0261, 0x0064, 0x02C5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0064, 0x0199,\n    0x0001, 0x0196, 0x0001, 0x0197, 0x0001, 0x0198,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x033A,\n    0x0001, 0x0334, 0x0001, 0x0335, 0x0001, 0x0336,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0333,\n    0x0001, 0x0330, 0x0001, 0x0331, 0x0001, 0x0332,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x033E,\n    0x0001, 0x032D, 0x0001, 0x032E, 0x0001, 0x032F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x032C,\n    0x0001, 0x0329, 0x0001, 0x032A, 0x0001, 0x032B,\n};\n\nstatic const s16 anim_77_values[] = {\n    0x0000, 0x00BD, 0x3FFF, 0xFF8A, 0xF980, 0xF06F, 0xD1F7, 0xD1E6,\n    0xD1B9, 0xD174, 0xD11E, 0xD0BD, 0xD055, 0xCFEE, 0xCF8C, 0xCF37,\n    0xCEF2, 0xCEC5, 0xCEB4, 0xCEC5, 0xCEF2, 0xCF37, 0xCF8C, 0xCFEE,\n    0xD055, 0xD0BD, 0xD11E, 0xD174, 0xD1B9, 0xD1E6, 0xD1F7, 0xD1E6,\n    0xD1B9, 0xD174, 0xD11E, 0xD0BD, 0xD055, 0xCFEE, 0xCF8C, 0xCF37,\n    0xCEF2, 0xCEC5, 0xCEB4, 0xCEC5, 0xCEF2, 0xCF37, 0xCF8C, 0xCFEE,\n    0xD055, 0xD0BD, 0xD11E, 0xD174, 0xD1B9, 0xD1E6, 0xD1F7, 0xD1E8,\n    0xD1C1, 0xD186, 0xD13A, 0xD0E3, 0xD085, 0xD025, 0xCFC7, 0xCF71,\n    0xCF25, 0xCEE9, 0xCEC2, 0xCEB4, 0xCEC2, 0xCEE9, 0xCF25, 0xCF71,\n    0xCFC7, 0xD025, 0xD085, 0xD0E3, 0xD13A, 0xD186, 0xD1C1, 0xD1E8,\n    0xD1F7, 0xD1E8, 0xD1C1, 0xD186, 0xD13A, 0xD0E3, 0xD085, 0xD025,\n    0xCFC7, 0xCF71, 0xCF25, 0xCEE9, 0xCEC2, 0xCEB4, 0xCEC5, 0xCEF2,\n    0xCF37, 0xCF8C, 0xCFEE, 0xD055, 0xD0BD, 0xD11E, 0xD174, 0xD1B9,\n    0xD1E6, 0xD1F7, 0xFD1F, 0xFCFC, 0xFC9D, 0xFC0C, 0xFB57, 0xFA8A,\n    0xF9B0, 0xF8D7, 0xF809, 0xF754, 0xF6C4, 0xF664, 0xF641, 0xF664,\n    0xF6C4, 0xF754, 0xF809, 0xF8D7, 0xF9B0, 0xFA8A, 0xFB57, 0xFC0C,\n    0xFC9D, 0xFCFC, 0xFD1F, 0xFCFC, 0xFC9D, 0xFC0C, 0xFB57, 0xFA8A,\n    0xF9B0, 0xF8D7, 0xF809, 0xF754, 0xF6C4, 0xF664, 0xF641, 0xF664,\n    0xF6C4, 0xF754, 0xF809, 0xF8D7, 0xF9B0, 0xFA8A, 0xFB57, 0xFC0C,\n    0xFC9D, 0xFCFC, 0xFD1F, 0xFD01, 0xFCAF, 0xFC31, 0xFB92, 0xFADB,\n    0xFA15, 0xF94B, 0xF885, 0xF7CE, 0xF72F, 0xF6B1, 0xF65F, 0xF641,\n    0xF65F, 0xF6B1, 0xF72F, 0xF7CE, 0xF885, 0xF94B, 0xFA15, 0xFADB,\n    0xFB92, 0xFC31, 0xFCAF, 0xFD01, 0xFD1F, 0xFD01, 0xFCAF, 0xFC31,\n    0xFB92, 0xFADB, 0xFA15, 0xF94B, 0xF885, 0xF7CE, 0xF72F, 0xF6B1,\n    0xF65F, 0xF641, 0xF664, 0xF6C4, 0xF754, 0xF809, 0xF8D7, 0xF9B0,\n    0xFA8A, 0xFB57, 0xFC0C, 0xFC9D, 0xFCFC, 0xFD1F, 0xD1A4, 0xD1A7,\n    0xD1AE, 0xD1B8, 0xD1C6, 0xD1D5, 0xD1E5, 0xD1F5, 0xD204, 0xD211,\n    0xD21C, 0xD223, 0xD225, 0xD223, 0xD21C, 0xD211, 0xD204, 0xD1F5,\n    0xD1E5, 0xD1D5, 0xD1C6, 0xD1B8, 0xD1AE, 0xD1A7, 0xD1A4, 0xD1A7,\n    0xD1AE, 0xD1B8, 0xD1C6, 0xD1D5, 0xD1E5, 0xD1F5, 0xD204, 0xD211,\n    0xD21C, 0xD223, 0xD225, 0xD223, 0xD21C, 0xD211, 0xD204, 0xD1F5,\n    0xD1E5, 0xD1D5, 0xD1C6, 0xD1B8, 0xD1AE, 0xD1A7, 0xD1A4, 0xD1A6,\n    0xD1AC, 0xD1B6, 0xD1C1, 0xD1CF, 0xD1DD, 0xD1EC, 0xD1FB, 0xD208,\n    0xD214, 0xD21D, 0xD223, 0xD225, 0xD223, 0xD21D, 0xD214, 0xD208,\n    0xD1FB, 0xD1EC, 0xD1DD, 0xD1CF, 0xD1C1, 0xD1B6, 0xD1AC, 0xD1A6,\n    0xD1A4, 0xD1A6, 0xD1AC, 0xD1B6, 0xD1C1, 0xD1CF, 0xD1DD, 0xD1EC,\n    0xD1FB, 0xD208, 0xD214, 0xD21D, 0xD223, 0xD225, 0xD223, 0xD21C,\n    0xD211, 0xD204, 0xD1F5, 0xD1E5, 0xD1D5, 0xD1C6, 0xD1B8, 0xD1AE,\n    0xD1A7, 0xD1A4, 0xC40D, 0xC434, 0xC49D, 0xC53D, 0xC605, 0xC6E8,\n    0xC7D8, 0xC8C9, 0xC9AC, 0xCA74, 0xCB13, 0xCB7D, 0xCBA3, 0xCB7D,\n    0xCB13, 0xCA74, 0xC9AC, 0xC8C9, 0xC7D8, 0xC6E8, 0xC605, 0xC53D,\n    0xC49D, 0xC434, 0xC40D, 0xC434, 0xC49D, 0xC53D, 0xC605, 0xC6E8,\n    0xC7D8, 0xC8C9, 0xC9AC, 0xCA74, 0xCB13, 0xCB7D, 0xCBA3, 0xCB7D,\n    0xCB13, 0xCA74, 0xC9AC, 0xC8C9, 0xC7D8, 0xC6E8, 0xC605, 0xC53D,\n    0xC49D, 0xC434, 0xC40D, 0xC42E, 0xC489, 0xC514, 0xC5C4, 0xC68E,\n    0xC768, 0xC848, 0xC922, 0xC9ED, 0xCA9C, 0xCB27, 0xCB82, 0xCBA3,\n    0xCB82, 0xCB27, 0xCA9C, 0xC9ED, 0xC922, 0xC848, 0xC768, 0xC68E,\n    0xC5C4, 0xC514, 0xC489, 0xC42E, 0xC40D, 0xC42E, 0xC489, 0xC514,\n    0xC5C4, 0xC68E, 0xC768, 0xC848, 0xC922, 0xC9ED, 0xCA9C, 0xCB27,\n    0xCB82, 0xCBA3, 0xCB7D, 0xCB13, 0xCA74, 0xC9AC, 0xC8C9, 0xC7D8,\n    0xC6E8, 0xC605, 0xC53D, 0xC49D, 0xC434, 0xC40D, 0xF992, 0x0CE2,\n    0xE291, 0xD6DA, 0xD6BF, 0xD676, 0xD606, 0xD57B, 0xD4DC, 0xD434,\n    0xD38C, 0xD2EE, 0xD262, 0xD1F3, 0xD1A9, 0xD18E, 0xD1A9, 0xD1F3,\n    0xD262, 0xD2EE, 0xD38C, 0xD434, 0xD4DC, 0xD57B, 0xD606, 0xD676,\n    0xD6BF, 0xD6DA, 0xD6C3, 0xD684, 0xD623, 0xD5A8, 0xD51B, 0xD482,\n    0xD3E6, 0xD34E, 0xD2C0, 0xD246, 0xD1E5, 0xD1A5, 0xD18E, 0xD1A9,\n    0xD1F3, 0xD262, 0xD2EE, 0xD38C, 0xD434, 0xD4DC, 0xD57B, 0xD606,\n    0xD676, 0xD6BF, 0xD6DA, 0xD6C3, 0xD684, 0xD623, 0xD5A8, 0xD51B,\n    0xD482, 0xD3E6, 0xD34E, 0xD2C0, 0xD246, 0xD1E5, 0xD1A5, 0xD18E,\n    0xD1A9, 0xD1F3, 0xD262, 0xD2EE, 0xD38C, 0xD434, 0xD4DC, 0xD57B,\n    0xD606, 0xD676, 0xD6BF, 0xD6DA, 0xD6BF, 0xD676, 0xD606, 0xD57B,\n    0xD4DC, 0xD434, 0xD38C, 0xD2EE, 0xD262, 0xD1F3, 0xD1A9, 0xD18E,\n    0xD1A5, 0xD1E5, 0xD246, 0xD2C0, 0xD34E, 0xD3E6, 0xD482, 0xD51B,\n    0xD5A8, 0xD623, 0xD684, 0xD6C3, 0xD6DA, 0x0BC6, 0x0BE7, 0x0C43,\n    0x0CCE, 0x0D7C, 0x0E41, 0x0F12, 0x0FE3, 0x10A8, 0x1156, 0x11E1,\n    0x123D, 0x125E, 0x123D, 0x11E1, 0x1156, 0x10A8, 0x0FE3, 0x0F12,\n    0x0E41, 0x0D7C, 0x0CCE, 0x0C43, 0x0BE7, 0x0BC6, 0x0BE2, 0x0C32,\n    0x0CAA, 0x0D43, 0x0DF3, 0x0EB1, 0x0F73, 0x1031, 0x10E1, 0x117A,\n    0x11F2, 0x1241, 0x125E, 0x123D, 0x11E1, 0x1156, 0x10A8, 0x0FE3,\n    0x0F12, 0x0E41, 0x0D7C, 0x0CCE, 0x0C43, 0x0BE7, 0x0BC6, 0x0BE2,\n    0x0C32, 0x0CAA, 0x0D43, 0x0DF3, 0x0EB1, 0x0F73, 0x1031, 0x10E1,\n    0x117A, 0x11F2, 0x1241, 0x125E, 0x123D, 0x11E1, 0x1156, 0x10A8,\n    0x0FE3, 0x0F12, 0x0E41, 0x0D7C, 0x0CCE, 0x0C43, 0x0BE7, 0x0BC6,\n    0x0BE7, 0x0C43, 0x0CCE, 0x0D7C, 0x0E41, 0x0F12, 0x0FE3, 0x10A8,\n    0x1156, 0x11E1, 0x123D, 0x125E, 0x1241, 0x11F2, 0x117A, 0x10E1,\n    0x1031, 0x0F73, 0x0EB1, 0x0DF3, 0x0D43, 0x0CAA, 0x0C32, 0x0BE2,\n    0x0BC6, 0x29C2, 0x29BA, 0x29A3, 0x2981, 0x2956, 0x2925, 0x28F2,\n    0x28BE, 0x288D, 0x2863, 0x2840, 0x282A, 0x2821, 0x282A, 0x2840,\n    0x2863, 0x288D, 0x28BE, 0x28F2, 0x2925, 0x2956, 0x2981, 0x29A3,\n    0x29BA, 0x29C2, 0x29BB, 0x29A7, 0x298A, 0x2964, 0x2939, 0x290A,\n    0x28DA, 0x28AB, 0x2880, 0x285A, 0x283C, 0x2829, 0x2821, 0x282A,\n    0x2840, 0x2863, 0x288D, 0x28BE, 0x28F2, 0x2925, 0x2956, 0x2981,\n    0x29A3, 0x29BA, 0x29C2, 0x29BB, 0x29A7, 0x298A, 0x2964, 0x2939,\n    0x290A, 0x28DA, 0x28AB, 0x2880, 0x285A, 0x283C, 0x2829, 0x2821,\n    0x282A, 0x2840, 0x2863, 0x288D, 0x28BE, 0x28F2, 0x2925, 0x2956,\n    0x2981, 0x29A3, 0x29BA, 0x29C2, 0x29BA, 0x29A3, 0x2981, 0x2956,\n    0x2925, 0x28F2, 0x28BE, 0x288D, 0x2863, 0x2840, 0x282A, 0x2821,\n    0x2829, 0x283C, 0x285A, 0x2880, 0x28AB, 0x28DA, 0x290A, 0x2939,\n    0x2964, 0x298A, 0x29A7, 0x29BB, 0x29C2, 0xD5E7, 0xD60F, 0xD67B,\n    0xD720, 0xD7ED, 0xD8D7, 0xD9CE, 0xDAC6, 0xDBAF, 0xDC7D, 0xDD21,\n    0xDD8E, 0xDDB5, 0xDD8E, 0xDD21, 0xDC7D, 0xDBAF, 0xDAC6, 0xD9CE,\n    0xD8D7, 0xD7ED, 0xD720, 0xD67B, 0xD60F, 0xD5E7, 0xD609, 0xD667,\n    0xD6F5, 0xD7AA, 0xD87B, 0xD95B, 0xDA41, 0xDB22, 0xDBF2, 0xDCA7,\n    0xDD36, 0xDD93, 0xDDB5, 0xDD8E, 0xDD21, 0xDC7D, 0xDBAF, 0xDAC6,\n    0xD9CE, 0xD8D7, 0xD7ED, 0xD720, 0xD67B, 0xD60F, 0xD5E7, 0xD609,\n    0xD667, 0xD6F5, 0xD7AA, 0xD87B, 0xD95B, 0xDA41, 0xDB22, 0xDBF2,\n    0xDCA7, 0xDD36, 0xDD93, 0xDDB5, 0xDD8E, 0xDD21, 0xDC7D, 0xDBAF,\n    0xDAC6, 0xD9CE, 0xD8D7, 0xD7ED, 0xD720, 0xD67B, 0xD60F, 0xD5E7,\n    0xD60F, 0xD67B, 0xD720, 0xD7ED, 0xD8D7, 0xD9CE, 0xDAC6, 0xDBAF,\n    0xDC7D, 0xDD21, 0xDD8E, 0xDDB5, 0xDD93, 0xDD36, 0xDCA7, 0xDBF2,\n    0xDB22, 0xDA41, 0xD95B, 0xD87B, 0xD7AA, 0xD6F5, 0xD667, 0xD609,\n    0xD5E7, 0xFF34, 0x0238, 0xBB3B, 0x344A, 0x0F9B, 0x0761, 0xB184,\n    0x00AB, 0xFF17, 0xC898, 0x29F6, 0xFCDC, 0xFA51, 0xAB16, 0x8001,\n    0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x0000,\n    0x000C, 0x0030, 0x006A, 0x00BA, 0x011E, 0x0194, 0x021D, 0x02B7,\n    0x0360, 0x0417, 0x04DB, 0x05AC, 0x0687, 0x076C, 0x085A, 0x094F,\n    0x0A4A, 0x0B4A, 0x0C4E, 0x0D55, 0x0E5D, 0x0F66, 0x106E, 0x1174,\n    0x1277, 0x1376, 0x146F, 0x1562, 0x164D, 0x172F, 0x1807, 0x18D4,\n    0x1994, 0x1A47, 0x1AEB, 0x1B7F, 0x1C02, 0x1C73, 0x1CD1, 0x1D1A,\n    0x1D4D, 0x1D69, 0x1D6D, 0x1D59, 0x1D29, 0x1CDF, 0x1C77, 0x1BF2,\n    0x1B4D, 0x1A48, 0x18A8, 0x167C, 0x13D2, 0x10B9, 0x0D3F, 0x0971,\n    0x055E, 0x0115, 0xFCA3, 0xF816, 0xF37C, 0xEEE5, 0xEA5D, 0xE5F2,\n    0xE1B5, 0xDDB1, 0xD9F6, 0xD691, 0xD391, 0xD105, 0xCEF9, 0xCD7C,\n    0xCC9D, 0xCC55, 0xCC8C, 0xCD3A, 0xCE53, 0xCFCD, 0xD19F, 0xD3BE,\n    0xD61F, 0xD8B9, 0xDB81, 0xDE6D, 0xE173, 0xE488, 0xE7A3, 0xEAB9,\n    0xEDC0, 0xF0AE, 0xF378, 0xF615, 0xF879, 0xFA9B, 0xFC71, 0xFDF1,\n    0xFF0F, 0xFFC2, 0x0000, 0x0000, 0x0002, 0x0008, 0x0013, 0x0022,\n    0x0034, 0x004A, 0x0063, 0x007F, 0x009E, 0x00BF, 0x00E3, 0x010A,\n    0x0132, 0x015C, 0x0188, 0x01B5, 0x01E3, 0x0212, 0x0242, 0x0272,\n    0x02A3, 0x02D4, 0x0304, 0x0335, 0x0365, 0x0394, 0x03C2, 0x03EF,\n    0x041A, 0x0444, 0x046C, 0x0493, 0x04B6, 0x04D8, 0x04F7, 0x0513,\n    0x052C, 0x0541, 0x0553, 0x0562, 0x056C, 0x0573, 0x0575, 0x0572,\n    0x056B, 0x055F, 0x054D, 0x0536, 0x051A, 0x04EC, 0x04A2, 0x0440,\n    0x03C7, 0x033A, 0x029C, 0x01EE, 0x0135, 0x0071, 0xFFA7, 0xFED8,\n    0xFE06, 0xFD34, 0xFC65, 0xFB9B, 0xFAD9, 0xFA21, 0xF976, 0xF8DB,\n    0xF851, 0xF7DC, 0xF77E, 0xF739, 0xF710, 0xF702, 0xF70A, 0xF727,\n    0xF757, 0xF798, 0xF7E8, 0xF847, 0xF8B0, 0xF924, 0xF9A0, 0xFA23,\n    0xFAA9, 0xFB33, 0xFBBE, 0xFC48, 0xFCCF, 0xFD52, 0xFDCF, 0xFE44,\n    0xFEAF, 0xFF0F, 0xFF61, 0xFFA4, 0xFFD6, 0xFFF6, 0x0000, 0xEE88,\n    0xEE86, 0xEE80, 0xEE78, 0xEE6C, 0xEE5D, 0xEE4B, 0xEE36, 0xEE1E,\n    0xEE04, 0xEDE8, 0xEDC9, 0xEDA8, 0xED85, 0xED61, 0xED3A, 0xED12,\n    0xECE9, 0xECBF, 0xEC93, 0xEC66, 0xEC39, 0xEC0B, 0xEBDC, 0xEBAD,\n    0xEB7D, 0xEB4E, 0xEB1E, 0xEAEF, 0xEAC0, 0xEA91, 0xEA63, 0xEA36,\n    0xEA09, 0xE9DE, 0xE9B3, 0xE98A, 0xE962, 0xE93C, 0xE918, 0xE8F5,\n    0xE8D5, 0xE8B6, 0xE89A, 0xE880, 0xE869, 0xE855, 0xE843, 0xE834,\n    0xE829, 0xE823, 0xE825, 0xE82E, 0xE83E, 0xE854, 0xE870, 0xE891,\n    0xE8B6, 0xE8E0, 0xE90D, 0xE93C, 0xE96E, 0xE9A2, 0xE9D7, 0xEA0D,\n    0xEA42, 0xEA78, 0xEAAC, 0xEADF, 0xEB10, 0xEB3E, 0xEB69, 0xEB90,\n    0xEBB3, 0xEBD4, 0xEBF7, 0xEC1A, 0xEC3E, 0xEC63, 0xEC88, 0xECAE,\n    0xECD3, 0xECF9, 0xED1D, 0xED42, 0xED65, 0xED87, 0xEDA8, 0xEDC8,\n    0xEDE6, 0xEE02, 0xEE1B, 0xEE33, 0xEE48, 0xEE5B, 0xEE6A, 0xEE77,\n    0xEE80, 0xEE86, 0xEE88, 0x0F09, 0x0F1A, 0x0F4A, 0x0F93, 0x0FEE,\n    0x1055, 0x10C2, 0x112F, 0x1196, 0x11F1, 0x123A, 0x1269, 0x127B,\n    0x126A, 0x123C, 0x11F6, 0x119E, 0x1139, 0x10CE, 0x1063, 0x0FFC,\n    0x0FA1, 0x0F56, 0x0F21, 0x0F09, 0x0F10, 0x0F30, 0x0F66, 0x0FAC,\n    0x0FFC, 0x1052, 0x10A9, 0x10FC, 0x1145, 0x1180, 0x11A7, 0x11B5,\n    0x11A9, 0x118A, 0x115B, 0x111E, 0x10D8, 0x108D, 0x103F, 0x0FF3,\n    0x0FAC, 0x0F6D, 0x0F3B, 0x0F18, 0x0F09, 0x0F11, 0x0F2E, 0x0F5C,\n    0x0F97, 0x0FDA, 0x1022, 0x106B, 0x10AF, 0x10EC, 0x111C, 0x113D,\n    0x1148, 0x113E, 0x1123, 0x10F9, 0x10C5, 0x1088, 0x1047, 0x1004,\n    0x0FC3, 0x0F87, 0x0F53, 0x0F2B, 0x0F11, 0x0F09, 0x0F17, 0x0F3A,\n    0x0F6E, 0x0FAF, 0x0FF8, 0x1045, 0x1092, 0x10DA, 0x111A, 0x114D,\n    0x116F, 0x117B, 0x1170, 0x1153, 0x1126, 0x10EE, 0x10AC, 0x1066,\n    0x101E, 0x0FD8, 0x0F96, 0x0F5E, 0x0F31, 0x0F14, 0x0F09, 0x46AF,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_78.inc.c",
    "content": "static const struct Animation anim_78[] = {\n    0,\n    189,\n    0,\n    0,\n    0x95,\n    ANIMINDEX_NUMPARTS(anim_78_indices),\n    anim_78_values,\n    anim_78_indices,\n    0,\n};\n\n\nstatic const u16 anim_78_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x0095, 0x13D5, 0x0001, 0x0000, 0x0001, 0x146A,\n    0x0095, 0x1216, 0x0095, 0x12AB, 0x0095, 0x1340,\n    0x0095, 0x1057, 0x0095, 0x10EC, 0x0095, 0x1181,\n    0x0001, 0x1053, 0x0001, 0x1054, 0x0001, 0x1055,\n    0x0095, 0x0257, 0x0095, 0x02EC, 0x0095, 0x0381,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0095, 0x01C2,\n    0x0095, 0x0003, 0x0095, 0x0098, 0x0095, 0x012D,\n    0x0001, 0x104F, 0x0001, 0x1050, 0x0001, 0x1051,\n    0x0095, 0x066A, 0x0095, 0x06FF, 0x0095, 0x0794,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0095, 0x05D5,\n    0x0095, 0x0416, 0x0095, 0x04AB, 0x0095, 0x0540,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x1052,\n    0x0095, 0x0E90, 0x0095, 0x0F25, 0x0095, 0x0FBA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0095, 0x0DFB,\n    0x0095, 0x0C3C, 0x0095, 0x0CD1, 0x0095, 0x0D66,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x1056,\n    0x0095, 0x0A7D, 0x0095, 0x0B12, 0x0095, 0x0BA7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0095, 0x09E8,\n    0x0095, 0x0829, 0x0095, 0x08BE, 0x0095, 0x0953,\n};\n\nstatic const s16 anim_78_values[] = {\n    0x0000, 0x00BF, 0x3FFF, 0xFFEC, 0xFFF7, 0x0017, 0x004D, 0x0096,\n    0x00F2, 0x015F, 0x01DD, 0x026B, 0x0307, 0x03B0, 0x0466, 0x0527,\n    0x05F2, 0x06C6, 0x07A3, 0x0887, 0x0970, 0x0A5F, 0x0B52, 0x0C48,\n    0x0D3F, 0x0E38, 0x0F30, 0x1027, 0x111C, 0x120E, 0x12FB, 0x13E3,\n    0x14C4, 0x159E, 0x166F, 0x1737, 0x1804, 0x18E3, 0x19D0, 0x1AC6,\n    0x1BBF, 0x1CB6, 0x1DA8, 0x1E8F, 0x1F65, 0x2027, 0x20D0, 0x215A,\n    0x21D4, 0x2250, 0x22CD, 0x234B, 0x23C7, 0x2442, 0x24BB, 0x2530,\n    0x25A2, 0x260F, 0x2676, 0x26D7, 0x2730, 0x2782, 0x27CA, 0x2809,\n    0x283E, 0x2867, 0x2883, 0x2893, 0x2895, 0x2888, 0x286C, 0x283F,\n    0x2807, 0x27C7, 0x2780, 0x2732, 0x26DE, 0x2683, 0x2623, 0x25BD,\n    0x2552, 0x24E2, 0x246D, 0x23F3, 0x2376, 0x22F4, 0x226F, 0x21E7,\n    0x215B, 0x20CD, 0x203D, 0x1FAA, 0x1F15, 0x1E7F, 0x1DE7, 0x1D4E,\n    0x1CB5, 0x1C1B, 0x1B80, 0x1AE6, 0x1A4D, 0x19B3, 0x191B, 0x1884,\n    0x17EF, 0x175B, 0x16CA, 0x163B, 0x15AE, 0x1525, 0x149E, 0x141B,\n    0x1397, 0x130D, 0x127D, 0x11E8, 0x114F, 0x10B2, 0x1011, 0x0F6D,\n    0x0EC6, 0x0E1E, 0x0D73, 0x0CC8, 0x0C1C, 0x0B70, 0x0AC4, 0x0A19,\n    0x096F, 0x08C7, 0x0821, 0x077E, 0x06DE, 0x0642, 0x05AA, 0x0517,\n    0x0488, 0x0400, 0x037E, 0x0302, 0x028D, 0x0220, 0x01BB, 0x015F,\n    0x010C, 0x00C2, 0x0082, 0x004D, 0x0023, 0x0004, 0xFFF2, 0xFFEC,\n    0x050E, 0x050B, 0x0503, 0x04F7, 0x04E6, 0x04CF, 0x04B5, 0x0496,\n    0x0473, 0x044B, 0x0420, 0x03F1, 0x03BE, 0x0388, 0x034E, 0x0311,\n    0x02D1, 0x028D, 0x0247, 0x01FE, 0x01B3, 0x0165, 0x0115, 0x00C2,\n    0x006E, 0x0017, 0xFFC0, 0xFF66, 0xFF0B, 0xFEAE, 0xFE50, 0xFDF1,\n    0xFD91, 0xFD07, 0xFC35, 0xFB2E, 0xFA04, 0xF8CA, 0xF792, 0xF66F,\n    0xF573, 0xF4B1, 0xF43A, 0xF423, 0xF47C, 0xF529, 0xF5FC, 0xF6F1,\n    0xF806, 0xF937, 0xFA80, 0xFBDF, 0xFD4F, 0xFECE, 0x0057, 0x01E8,\n    0x037E, 0x0515, 0x06A9, 0x0837, 0x09BB, 0x0B33, 0x0C9B, 0x0DEF,\n    0x0F2C, 0x104F, 0x1154, 0x1238, 0x12F7, 0x13A2, 0x1449, 0x14EE,\n    0x158E, 0x162C, 0x16C6, 0x175C, 0x17EE, 0x187C, 0x1907, 0x198D,\n    0x1A0F, 0x1A8C, 0x1B05, 0x1B79, 0x1BE8, 0x1C53, 0x1CB8, 0x1D18,\n    0x1D73, 0x1DC9, 0x1E19, 0x1E63, 0x1EA8, 0x1EE6, 0x1F1F, 0x1F51,\n    0x1F7E, 0x1FA3, 0x1FC3, 0x1FDB, 0x1FED, 0x1FF8, 0x1FFC, 0x1FF9,\n    0x1FEF, 0x1FDD, 0x1FC4, 0x1FA3, 0x1F7A, 0x1F43, 0x1EF9, 0x1E9C,\n    0x1E2D, 0x1DAD, 0x1D1E, 0x1C81, 0x1BD7, 0x1B20, 0x1A5F, 0x1993,\n    0x18BF, 0x17E3, 0x1701, 0x1619, 0x152D, 0x143D, 0x134B, 0x1258,\n    0x1165, 0x1074, 0x0F84, 0x0E98, 0x0DB0, 0x0CCE, 0x0BF2, 0x0B1E,\n    0x0A53, 0x0991, 0x08DB, 0x0831, 0x0794, 0x0706, 0x0687, 0x0618,\n    0x05BB, 0x0571, 0x053B, 0x0519, 0x050E, 0xF069, 0xF066, 0xF05D,\n    0xF04F, 0xF03C, 0xF023, 0xF005, 0xEFE3, 0xEFBC, 0xEF91, 0xEF61,\n    0xEF2E, 0xEEF7, 0xEEBD, 0xEE7F, 0xEE3F, 0xEDFB, 0xEDB5, 0xED6C,\n    0xED21, 0xECD4, 0xEC86, 0xEC35, 0xEBE4, 0xEB91, 0xEB3D, 0xEAE8,\n    0xEA93, 0xEA3E, 0xE9E8, 0xE992, 0xE93D, 0xE8E8, 0xE873, 0xE7C7,\n    0xE6F4, 0xE607, 0xE50E, 0xE41A, 0xE338, 0xE276, 0xE1E4, 0xE191,\n    0xE189, 0xE1DD, 0xE277, 0xE336, 0xE416, 0xE513, 0xE62A, 0xE758,\n    0xE899, 0xE9E9, 0xEB45, 0xECAA, 0xEE13, 0xEF7D, 0xF0E6, 0xF248,\n    0xF3A1, 0xF4EC, 0xF628, 0xF74F, 0xF85F, 0xF954, 0xFA2A, 0xFADE,\n    0xFB6C, 0xFBD1, 0xFC1A, 0xFC57, 0xFC89, 0xFCB1, 0xFCCE, 0xFCE2,\n    0xFCED, 0xFCEE, 0xFCE7, 0xFCD9, 0xFCC3, 0xFCA5, 0xFC82, 0xFC58,\n    0xFC29, 0xFBF4, 0xFBBB, 0xFB7D, 0xFB3C, 0xFAF7, 0xFAAF, 0xFA65,\n    0xFA19, 0xF9CC, 0xF97D, 0xF92E, 0xF8DF, 0xF890, 0xF842, 0xF7F5,\n    0xF7A9, 0xF760, 0xF71A, 0xF6D6, 0xF696, 0xF65A, 0xF623, 0xF5F0,\n    0xF5C3, 0xF59B, 0xF576, 0xF54F, 0xF528, 0xF500, 0xF4D6, 0xF4AC,\n    0xF481, 0xF456, 0xF42A, 0xF3FE, 0xF3D2, 0xF3A5, 0xF379, 0xF34C,\n    0xF320, 0xF2F5, 0xF2C9, 0xF29F, 0xF275, 0xF24C, 0xF223, 0xF1FC,\n    0xF1D6, 0xF1B1, 0xF18E, 0xF16C, 0xF14B, 0xF12C, 0xF10F, 0xF0F4,\n    0xF0DC, 0xF0C5, 0xF0B0, 0xF09E, 0xF08E, 0xF081, 0xF077, 0xF06F,\n    0xF06B, 0xF069, 0xC94C, 0xC94E, 0xC957, 0xC964, 0xC976, 0xC98E,\n    0xC9AA, 0xC9CB, 0xC9F0, 0xCA1A, 0xCA48, 0xCA7A, 0xCAB0, 0xCAEA,\n    0xCB28, 0xCB69, 0xCBAD, 0xCBF5, 0xCC40, 0xCC8E, 0xCCDE, 0xCD32,\n    0xCD87, 0xCDE0, 0xCE3A, 0xCE97, 0xCEF5, 0xCF55, 0xCFB7, 0xD01B,\n    0xD080, 0xD0E6, 0xD14D, 0xD1BB, 0xD235, 0xD2BB, 0xD34A, 0xD3E3,\n    0xD484, 0xD52C, 0xD5DB, 0xD690, 0xD74A, 0xD807, 0xD8C7, 0xD989,\n    0xDA4C, 0xDB0F, 0xDBD2, 0xDC92, 0xDD50, 0xDE0B, 0xDEC1, 0xDF72,\n    0xE01C, 0xE0C0, 0xE15B, 0xE1ED, 0xE275, 0xE2F3, 0xE364, 0xE3C9,\n    0xE420, 0xE469, 0xE4A3, 0xE4CC, 0xE4E3, 0xE4E9, 0xE4DC, 0xE4BB,\n    0xE489, 0xE445, 0xE3F2, 0xE38F, 0xE31E, 0xE29F, 0xE214, 0xE17D,\n    0xE0DA, 0xE02E, 0xDF78, 0xDEBA, 0xDDF4, 0xDD28, 0xDC56, 0xDB7E,\n    0xDAA3, 0xD9C4, 0xD8E2, 0xD7FF, 0xD71B, 0xD638, 0xD555, 0xD474,\n    0xD396, 0xD2BB, 0xD1E4, 0xD113, 0xD048, 0xCF83, 0xCEC7, 0xCE13,\n    0xCD68, 0xCCC8, 0xCC33, 0xCBAA, 0xCB2E, 0xCAC0, 0xCA60, 0xCA0C,\n    0xC9BF, 0xC979, 0xC93B, 0xC903, 0xC8D1, 0xC8A5, 0xC880, 0xC860,\n    0xC845, 0xC82F, 0xC81E, 0xC811, 0xC808, 0xC804, 0xC803, 0xC805,\n    0xC80A, 0xC812, 0xC81D, 0xC82A, 0xC838, 0xC849, 0xC85A, 0xC86D,\n    0xC881, 0xC895, 0xC8A9, 0xC8BD, 0xC8D1, 0xC8E5, 0xC8F8, 0xC909,\n    0xC919, 0xC927, 0xC934, 0xC93E, 0xC945, 0xC94A, 0xC94C, 0xF791,\n    0xF791, 0xF791, 0xF792, 0xF793, 0xF795, 0xF798, 0xF79C, 0xF7A1,\n    0xF7A8, 0xF7B1, 0xF7BC, 0xF7CA, 0xF7D9, 0xF7EC, 0xF802, 0xF81A,\n    0xF837, 0xF856, 0xF87A, 0xF8A2, 0xF8CE, 0xF8FE, 0xF933, 0xF96D,\n    0xF9AC, 0xF9F1, 0xFA3B, 0xFA8B, 0xFAE0, 0xFB3C, 0xFB9F, 0xFC08,\n    0xFC7D, 0xFD03, 0xFD98, 0xFE3A, 0xFEEA, 0xFFA6, 0x006B, 0x013A,\n    0x0212, 0x02F1, 0x03D6, 0x04BF, 0x05AC, 0x069C, 0x078D, 0x087E,\n    0x096E, 0x0A5B, 0x0B46, 0x0C2B, 0x0D0B, 0x0DE4, 0x0EB6, 0x0F7D,\n    0x103B, 0x10ED, 0x1192, 0x122A, 0x12B2, 0x132A, 0x1391, 0x13E5,\n    0x1426, 0x1452, 0x1467, 0x1466, 0x144E, 0x1422, 0x13E2, 0x1391,\n    0x132D, 0x12BA, 0x1237, 0x11A5, 0x1106, 0x105A, 0x0FA2, 0x0EE0,\n    0x0E15, 0x0D40, 0x0C64, 0x0B81, 0x0A98, 0x09AA, 0x08B9, 0x07C4,\n    0x06CD, 0x05D6, 0x04DE, 0x03E8, 0x02F3, 0x0201, 0x0113, 0x002A,\n    0xFF47, 0xFE6A, 0xFD95, 0xFCC8, 0xFC05, 0xFB4D, 0xFAA0, 0xFA00,\n    0xF96D, 0xF8E8, 0xF873, 0xF80E, 0xF7B6, 0xF767, 0xF71F, 0xF6E0,\n    0xF6A8, 0xF677, 0xF64C, 0xF629, 0xF60B, 0xF5F4, 0xF5E2, 0xF5D5,\n    0xF5CD, 0xF5C9, 0xF5CA, 0xF5CF, 0xF5D7, 0xF5E3, 0xF5F1, 0xF602,\n    0xF616, 0xF62B, 0xF642, 0xF65B, 0xF674, 0xF68F, 0xF6A9, 0xF6C4,\n    0xF6DE, 0xF6F8, 0xF711, 0xF728, 0xF73E, 0xF752, 0xF764, 0xF774,\n    0xF780, 0xF789, 0xF78F, 0xF791, 0xC794, 0xC794, 0xC793, 0xC793,\n    0xC792, 0xC792, 0xC791, 0xC790, 0xC78F, 0xC78E, 0xC78C, 0xC78B,\n    0xC78A, 0xC788, 0xC787, 0xC785, 0xC783, 0xC782, 0xC780, 0xC77E,\n    0xC77D, 0xC77B, 0xC779, 0xC777, 0xC776, 0xC774, 0xC773, 0xC771,\n    0xC770, 0xC76E, 0xC76D, 0xC76C, 0xC76B, 0xC76A, 0xC768, 0xC766,\n    0xC764, 0xC762, 0xC75F, 0xC75C, 0xC759, 0xC756, 0xC753, 0xC750,\n    0xC74C, 0xC749, 0xC746, 0xC743, 0xC740, 0xC73D, 0xC73A, 0xC738,\n    0xC736, 0xC734, 0xC732, 0xC731, 0xC730, 0xC72F, 0xC72F, 0xC730,\n    0xC731, 0xC732, 0xC734, 0xC737, 0xC73B, 0xC73F, 0xC743, 0xC749,\n    0xC74F, 0xC756, 0xC75F, 0xC769, 0xC774, 0xC77F, 0xC78C, 0xC79A,\n    0xC7A8, 0xC7B7, 0xC7C7, 0xC7D7, 0xC7E8, 0xC7FA, 0xC80B, 0xC81D,\n    0xC82F, 0xC842, 0xC854, 0xC866, 0xC879, 0xC88B, 0xC89D, 0xC8AE,\n    0xC8C0, 0xC8D1, 0xC8E1, 0xC8F1, 0xC900, 0xC90E, 0xC91C, 0xC928,\n    0xC934, 0xC93F, 0xC949, 0xC951, 0xC958, 0xC95E, 0xC963, 0xC966,\n    0xC968, 0xC968, 0xC966, 0xC963, 0xC95E, 0xC957, 0xC94F, 0xC946,\n    0xC93C, 0xC930, 0xC924, 0xC916, 0xC908, 0xC8F9, 0xC8E9, 0xC8D9,\n    0xC8C8, 0xC8B7, 0xC8A6, 0xC894, 0xC882, 0xC870, 0xC85F, 0xC84D,\n    0xC83C, 0xC82B, 0xC81A, 0xC80A, 0xC7FB, 0xC7EC, 0xC7DF, 0xC7D2,\n    0xC7C6, 0xC7BB, 0xC7B1, 0xC7A8, 0xC7A1, 0xC79B, 0xC797, 0xC795,\n    0xC794, 0xC308, 0xC30C, 0xC317, 0xC329, 0xC341, 0xC360, 0xC385,\n    0xC3B0, 0xC3E0, 0xC415, 0xC450, 0xC48E, 0xC4D1, 0xC518, 0xC562,\n    0xC5B0, 0xC601, 0xC654, 0xC6AA, 0xC702, 0xC75C, 0xC7B7, 0xC813,\n    0xC870, 0xC8CE, 0xC92C, 0xC98A, 0xC9E7, 0xCA44, 0xCAA0, 0xCAFB,\n    0xCB54, 0xCBAB, 0xCC05, 0xCC66, 0xCCCD, 0xCD3B, 0xCDAE, 0xCE26,\n    0xCEA2, 0xCF22, 0xCFA5, 0xD02B, 0xD0B2, 0xD13B, 0xD1C5, 0xD24F,\n    0xD2D9, 0xD362, 0xD3E9, 0xD46E, 0xD4F1, 0xD571, 0xD5ED, 0xD664,\n    0xD6D7, 0xD744, 0xD7AC, 0xD80C, 0xD866, 0xD8B7, 0xD901, 0xD941,\n    0xD978, 0xD9A5, 0xD9C7, 0xD9DE, 0xD9EA, 0xD9E9, 0xD9DC, 0xD9C4,\n    0xD9A2, 0xD975, 0xD940, 0xD901, 0xD8BA, 0xD86B, 0xD815, 0xD7B8,\n    0xD754, 0xD6EA, 0xD67A, 0xD606, 0xD58D, 0xD510, 0xD48F, 0xD40B,\n    0xD384, 0xD2FC, 0xD272, 0xD1E6, 0xD15A, 0xD0CE, 0xD042, 0xCFB7,\n    0xCF2D, 0xCEA4, 0xCE1F, 0xCD9B, 0xCD1B, 0xCC9F, 0xCC27, 0xCBB4,\n    0xCB45, 0xCADD, 0xCA7A, 0xCA1E, 0xC9CA, 0xC97C, 0xC934, 0xC8EC,\n    0xC8A6, 0xC861, 0xC81D, 0xC7DB, 0xC799, 0xC75A, 0xC71B, 0xC6DE,\n    0xC6A3, 0xC669, 0xC631, 0xC5FA, 0xC5C5, 0xC591, 0xC55F, 0xC52F,\n    0xC501, 0xC4D4, 0xC4A9, 0xC480, 0xC459, 0xC434, 0xC411, 0xC3F0,\n    0xC3D1, 0xC3B4, 0xC399, 0xC381, 0xC36A, 0xC356, 0xC344, 0xC334,\n    0xC327, 0xC31C, 0xC313, 0xC30D, 0xC309, 0xC308, 0xE09E, 0xE066,\n    0xDFC9, 0xDED6, 0xDD9C, 0xDC29, 0xDA8C, 0xD8D4, 0xD710, 0xD54E,\n    0xD39E, 0xD20E, 0xD0AD, 0xCF8A, 0xCEB3, 0xCE38, 0xCE27, 0xCE82,\n    0xCF38, 0xD03F, 0xD18B, 0xD310, 0xD4C3, 0xD698, 0xD884, 0xDA7C,\n    0xDC74, 0xDE61, 0xE037, 0xE1EA, 0xE370, 0xE4BD, 0xE5C5, 0xE6A9,\n    0xE790, 0xE879, 0xE965, 0xEA52, 0xEB40, 0xEC2E, 0xED1C, 0xEE08,\n    0xEEF3, 0xEFDB, 0xF0C0, 0xF1A1, 0xF27E, 0xF355, 0xF427, 0xF4F3,\n    0xF5B8, 0xF675, 0xF72A, 0xF7D6, 0xF879, 0xF911, 0xF99F, 0xFA21,\n    0xFA97, 0xFB00, 0xFB5C, 0xFBAA, 0xFBE9, 0xFC19, 0xFC39, 0xFC49,\n    0xFC47, 0xFC34, 0xFC0D, 0xFBD3, 0xFB82, 0xFB1C, 0xFAA2, 0xFA16,\n    0xF978, 0xF8C8, 0xF809, 0xF73C, 0xF660, 0xF578, 0xF484, 0xF386,\n    0xF27E, 0xF16D, 0xF055, 0xEF36, 0xEE12, 0xECE9, 0xEBBD, 0xEA8E,\n    0xE95E, 0xE82E, 0xE6FE, 0xE5D0, 0xE4A5, 0xE37E, 0xE25B, 0xE13E,\n    0xE028, 0xDF1A, 0xDE15, 0xDD1A, 0xDC2A, 0xDB46, 0xDA6F, 0xD9A5,\n    0xD8EB, 0xD841, 0xD7A9, 0xD723, 0xD6B0, 0xD650, 0xD602, 0xD5C3,\n    0xD594, 0xD573, 0xD560, 0xD559, 0xD55E, 0xD56C, 0xD585, 0xD5A5,\n    0xD5CD, 0xD5FC, 0xD62F, 0xD667, 0xD6A3, 0xD6E1, 0xD720, 0xD760,\n    0xD79F, 0xD7DD, 0xD817, 0xD862, 0xD8CD, 0xD952, 0xD9ED, 0xDA99,\n    0xDB50, 0xDC0E, 0xDCCD, 0xDD89, 0xDE3C, 0xDEE1, 0xDF74, 0xDFEE,\n    0xE04C, 0xE088, 0xE09E, 0xED11, 0xECD8, 0xEC36, 0xEB3C, 0xE9F8,\n    0xE879, 0xE6D0, 0xE50A, 0xE337, 0xE168, 0xDFA9, 0xDE0C, 0xDC9F,\n    0xDB72, 0xDA94, 0xDA13, 0xDA00, 0xDA5E, 0xDB20, 0xDC38, 0xDD9A,\n    0xDF38, 0xE105, 0xE2F5, 0xE4FB, 0xE709, 0xE913, 0xEB0C, 0xECE6,\n    0xEE96, 0xF00D, 0xF13F, 0xF21F, 0xF2CC, 0xF36F, 0xF407, 0xF497,\n    0xF51D, 0xF59B, 0xF610, 0xF67E, 0xF6E5, 0xF746, 0xF7A0, 0xF7F5,\n    0xF845, 0xF890, 0xF8D7, 0xF91A, 0xF95A, 0xF997, 0xF9D3, 0xFA0C,\n    0xFA44, 0xFA7C, 0xFAB3, 0xFAEB, 0xFB23, 0xFB5C, 0xFB97, 0xFBD4,\n    0xFC14, 0xFC57, 0xFC9E, 0xFCE9, 0xFD38, 0xFD8D, 0xFDE7, 0xFE47,\n    0xFEAF, 0xFF20, 0xFF9A, 0x001A, 0x00A2, 0x0131, 0x01C5, 0x025F,\n    0x02FC, 0x039D, 0x0441, 0x04E8, 0x058F, 0x0638, 0x06E1, 0x0789,\n    0x082F, 0x08D4, 0x0977, 0x0A15, 0x0AB0, 0x0B46, 0x0BD7, 0x0C62,\n    0x0CE5, 0x0D62, 0x0DD6, 0x0E41, 0x0EA3, 0x0EFA, 0x0F47, 0x0F88,\n    0x0FBC, 0x0FE4, 0x0FFE, 0x1009, 0x1006, 0x0FF2, 0x0FCE, 0x0F99,\n    0x0F3F, 0x0EAE, 0x0DEB, 0x0CFA, 0x0BE0, 0x0AA1, 0x0941, 0x07C5,\n    0x0631, 0x048A, 0x02D3, 0x0111, 0xFF49, 0xFD7E, 0xFBB5, 0xF9F3,\n    0xF83B, 0xF692, 0xF4FD, 0xF380, 0xF21E, 0xF0DD, 0xEFC1, 0xEECE,\n    0xEE07, 0xED69, 0xECEF, 0xEC97, 0xEC5D, 0xEC3B, 0xEC30, 0xEC35,\n    0xEC49, 0xEC67, 0xEC8B, 0xECB1, 0xECD5, 0xECF4, 0xED09, 0xED11,\n    0xED95, 0xEDF7, 0xEF0F, 0xF0C3, 0xF2FA, 0xF59A, 0xF88C, 0xFBB5,\n    0xFEFD, 0x024A, 0x0585, 0x0893, 0x0B5C, 0x0DC7, 0x0FBA, 0x111D,\n    0x11D6, 0x11EA, 0x117A, 0x1096, 0x0F4E, 0x0DB3, 0x0BD6, 0x09C6,\n    0x0796, 0x0554, 0x0312, 0x00E0, 0xFED0, 0xFCF0, 0xFB52, 0xFA06,\n    0xF91D, 0xF871, 0xF7CF, 0xF738, 0xF6AB, 0xF627, 0xF5AC, 0xF539,\n    0xF4CE, 0xF46A, 0xF40D, 0xF3B6, 0xF366, 0xF31B, 0xF2D4, 0xF292,\n    0xF254, 0xF219, 0xF1E2, 0xF1AC, 0xF179, 0xF147, 0xF116, 0xF0E5,\n    0xF0B4, 0xF083, 0xF051, 0xF01D, 0xEFE7, 0xEFAE, 0xEF73, 0xEF34,\n    0xEEF1, 0xEEA9, 0xEE5D, 0xEE0B, 0xEDB3, 0xED55, 0xECF1, 0xEC89,\n    0xEC1B, 0xEBAA, 0xEB34, 0xEABC, 0xEA40, 0xE9C1, 0xE941, 0xE8BE,\n    0xE83A, 0xE7B5, 0xE730, 0xE6AA, 0xE625, 0xE5A0, 0xE51C, 0xE49A,\n    0xE419, 0xE39B, 0xE320, 0xE2A7, 0xE233, 0xE1C2, 0xE155, 0xE0ED,\n    0xE08A, 0xE02D, 0xDFD5, 0xDF84, 0xDF3A, 0xDEF7, 0xDEBB, 0xDE88,\n    0xDE5D, 0xDE3A, 0xDE21, 0xDE12, 0xDE0C, 0xDE13, 0xDE28, 0xDE4B,\n    0xDE7A, 0xDEB6, 0xDEFC, 0xDF4D, 0xDFA8, 0xE00B, 0xE077, 0xE0EB,\n    0xE165, 0xE1E5, 0xE26A, 0xE2F4, 0xE382, 0xE412, 0xE4A5, 0xE539,\n    0xE5CE, 0xE664, 0xE6F8, 0xE78B, 0xE81B, 0xE8A9, 0xE933, 0xE9B8,\n    0xEA39, 0xEAB3, 0xEB27, 0xEB93, 0xEBF7, 0xEC51, 0xECA3, 0xECEA,\n    0xED25, 0xED55, 0xED78, 0xED8D, 0xED95, 0xDDDA, 0xDDCE, 0xDDAC,\n    0xDD76, 0xDD2B, 0xDCCF, 0xDC61, 0xDBE4, 0xDB59, 0xDAC0, 0xDA1C,\n    0xD96D, 0xD8B6, 0xD7F6, 0xD730, 0xD665, 0xD596, 0xD4C4, 0xD3F2,\n    0xD31F, 0xD24E, 0xD17F, 0xD0B5, 0xCFF0, 0xCF31, 0xCE7B, 0xCDCE,\n    0xCD2B, 0xCC94, 0xCC0B, 0xCB90, 0xCB25, 0xCACB, 0xCA7C, 0xCA30,\n    0xC9E9, 0xC9A5, 0xC965, 0xC929, 0xC8F0, 0xC8BB, 0xC88A, 0xC85C,\n    0xC832, 0xC80B, 0xC7E8, 0xC7C8, 0xC7AC, 0xC793, 0xC77E, 0xC76C,\n    0xC75E, 0xC753, 0xC74B, 0xC747, 0xC746, 0xC748, 0xC74D, 0xC756,\n    0xC762, 0xC771, 0xC783, 0xC798, 0xC7B1, 0xC7CC, 0xC7EB, 0xC80D,\n    0xC831, 0xC859, 0xC885, 0xC8B8, 0xC8F1, 0xC92F, 0xC972, 0xC9BB,\n    0xCA08, 0xCA5A, 0xCAB0, 0xCB0A, 0xCB68, 0xCBC9, 0xCC2D, 0xCC93,\n    0xCCFC, 0xCD68, 0xCDD5, 0xCE43, 0xCEB3, 0xCF24, 0xCF96, 0xD008,\n    0xD07A, 0xD0EC, 0xD15D, 0xD1CE, 0xD23E, 0xD2AC, 0xD319, 0xD383,\n    0xD3EC, 0xD452, 0xD4B5, 0xD515, 0xD572, 0xD5CB, 0xD620, 0xD670,\n    0xD6BC, 0xD704, 0xD748, 0xD78D, 0xD7D0, 0xD814, 0xD856, 0xD898,\n    0xD8DA, 0xD91A, 0xD95A, 0xD998, 0xD9D6, 0xDA12, 0xDA4E, 0xDA88,\n    0xDAC1, 0xDAF8, 0xDB2E, 0xDB63, 0xDB95, 0xDBC7, 0xDBF6, 0xDC24,\n    0xDC50, 0xDC7A, 0xDCA2, 0xDCC8, 0xDCEB, 0xDD0D, 0xDD2C, 0xDD49,\n    0xDD64, 0xDD7C, 0xDD91, 0xDDA4, 0xDDB4, 0xDDC1, 0xDDCC, 0xDDD3,\n    0xDDD8, 0xDDDA, 0x0D47, 0x0D45, 0x0D3F, 0x0D35, 0x0D28, 0x0D18,\n    0x0D06, 0x0CF1, 0x0CDA, 0x0CC2, 0x0CA8, 0x0C8E, 0x0C72, 0x0C57,\n    0x0C3B, 0x0C20, 0x0C06, 0x0BED, 0x0BD5, 0x0BBF, 0x0BAB, 0x0B99,\n    0x0B8A, 0x0B7E, 0x0B76, 0x0B71, 0x0B70, 0x0B74, 0x0B7C, 0x0B89,\n    0x0B9C, 0x0BB5, 0x0BD3, 0x0BF9, 0x0C27, 0x0C5D, 0x0C99, 0x0CDC,\n    0x0D25, 0x0D73, 0x0DC6, 0x0E1E, 0x0E79, 0x0ED8, 0x0F39, 0x0F9D,\n    0x1002, 0x1069, 0x10D0, 0x1137, 0x119E, 0x1204, 0x1269, 0x12CB,\n    0x132B, 0x1388, 0x13E1, 0x1437, 0x1487, 0x14D3, 0x1518, 0x1558,\n    0x1591, 0x15C2, 0x15EC, 0x160D, 0x1625, 0x1635, 0x163A, 0x1635,\n    0x1629, 0x1615, 0x15F9, 0x15D7, 0x15AE, 0x157F, 0x1549, 0x150F,\n    0x14CF, 0x148B, 0x1443, 0x13F6, 0x13A7, 0x1354, 0x12FE, 0x12A7,\n    0x124D, 0x11F2, 0x1196, 0x1139, 0x10DB, 0x107E, 0x1021, 0x0FC5,\n    0x0F6B, 0x0F12, 0x0EBB, 0x0E66, 0x0E14, 0x0DC6, 0x0D7B, 0x0D34,\n    0x0CF1, 0x0CB3, 0x0C7B, 0x0C47, 0x0C1A, 0x0BF3, 0x0BD3, 0x0BB9,\n    0x0BA2, 0x0B90, 0x0B81, 0x0B76, 0x0B6E, 0x0B69, 0x0B67, 0x0B68,\n    0x0B6C, 0x0B72, 0x0B7B, 0x0B86, 0x0B92, 0x0BA1, 0x0BB1, 0x0BC3,\n    0x0BD5, 0x0BE9, 0x0BFE, 0x0C13, 0x0C29, 0x0C3F, 0x0C56, 0x0C6C,\n    0x0C83, 0x0C99, 0x0CAE, 0x0CC3, 0x0CD7, 0x0CEA, 0x0CFB, 0x0D0C,\n    0x0D1A, 0x0D27, 0x0D32, 0x0D3B, 0x0D41, 0x0D45, 0x0D47, 0x2C31,\n    0x2C2E, 0x2C25, 0x2C18, 0x2C07, 0x2BF1, 0x2BD8, 0x2BBB, 0x2B9C,\n    0x2B7B, 0x2B57, 0x2B33, 0x2B0D, 0x2AE7, 0x2AC1, 0x2A9B, 0x2A76,\n    0x2A52, 0x2A30, 0x2A11, 0x29F3, 0x29D9, 0x29C3, 0x29B0, 0x29A1,\n    0x2998, 0x2994, 0x2995, 0x299C, 0x29AB, 0x29C0, 0x29DC, 0x2A01,\n    0x2A2F, 0x2A67, 0x2AA9, 0x2AF4, 0x2B46, 0x2BA1, 0x2C02, 0x2C69,\n    0x2CD6, 0x2D48, 0x2DBE, 0x2E38, 0x2EB4, 0x2F33, 0x2FB3, 0x3034,\n    0x30B6, 0x3136, 0x31B6, 0x3234, 0x32AF, 0x3328, 0x339C, 0x340C,\n    0x3477, 0x34DC, 0x353B, 0x3592, 0x35E2, 0x3629, 0x3667, 0x369C,\n    0x36C6, 0x36E4, 0x36F7, 0x36FE, 0x36F8, 0x36E9, 0x36D0, 0x36AD,\n    0x3682, 0x364E, 0x3613, 0x35D0, 0x3587, 0x3537, 0x34E1, 0x3487,\n    0x3427, 0x33C3, 0x335B, 0x32F0, 0x3282, 0x3212, 0x31A0, 0x312C,\n    0x30B8, 0x3043, 0x2FCE, 0x2F5A, 0x2EE7, 0x2E76, 0x2E07, 0x2D9A,\n    0x2D31, 0x2CCB, 0x2C69, 0x2C0C, 0x2BB3, 0x2B61, 0x2B14, 0x2ACE,\n    0x2A8F, 0x2A57, 0x2A28, 0x2A01, 0x29E1, 0x29C7, 0x29B1, 0x29A1,\n    0x2995, 0x298D, 0x298A, 0x298A, 0x298E, 0x2996, 0x29A1, 0x29AF,\n    0x29BF, 0x29D2, 0x29E7, 0x29FF, 0x2A18, 0x2A33, 0x2A4F, 0x2A6C,\n    0x2A8A, 0x2AA9, 0x2AC8, 0x2AE7, 0x2B06, 0x2B25, 0x2B43, 0x2B61,\n    0x2B7D, 0x2B98, 0x2BB2, 0x2BCA, 0x2BE0, 0x2BF4, 0x2C06, 0x2C14,\n    0x2C20, 0x2C29, 0x2C2F, 0x2C31, 0xE11D, 0xE117, 0xE104, 0xE0E4,\n    0xE0BA, 0xE086, 0xE047, 0xE000, 0xDFB1, 0xDF5A, 0xDEFD, 0xDE9A,\n    0xDE31, 0xDDC5, 0xDD55, 0xDCE2, 0xDC6D, 0xDBF6, 0xDB80, 0xDB09,\n    0xDA93, 0xDA1F, 0xD9AE, 0xD93F, 0xD8D5, 0xD870, 0xD810, 0xD7B6,\n    0xD763, 0xD718, 0xD6D6, 0xD69C, 0xD66D, 0xD645, 0xD622, 0xD602,\n    0xD5E5, 0xD5CC, 0xD5B7, 0xD5A4, 0xD595, 0xD588, 0xD57E, 0xD577,\n    0xD572, 0xD56F, 0xD56E, 0xD56F, 0xD571, 0xD575, 0xD57A, 0xD581,\n    0xD588, 0xD590, 0xD599, 0xD5A3, 0xD5AD, 0xD5B7, 0xD5C1, 0xD5CA,\n    0xD5D4, 0xD5DD, 0xD5E5, 0xD5ED, 0xD5F3, 0xD5F8, 0xD5FD, 0xD5FF,\n    0xD600, 0xD5FF, 0xD5FD, 0xD5FA, 0xD5F6, 0xD5F1, 0xD5EB, 0xD5E5,\n    0xD5DE, 0xD5D6, 0xD5CE, 0xD5C6, 0xD5BE, 0xD5B6, 0xD5AD, 0xD5A5,\n    0xD59E, 0xD597, 0xD590, 0xD58A, 0xD585, 0xD580, 0xD57D, 0xD57B,\n    0xD57A, 0xD57A, 0xD57C, 0xD57F, 0xD585, 0xD58B, 0xD594, 0xD59F,\n    0xD5AC, 0xD5BB, 0xD5CC, 0xD5E0, 0xD5F7, 0xD610, 0xD62C, 0xD64B,\n    0xD66D, 0xD694, 0xD6C1, 0xD6F4, 0xD72D, 0xD76B, 0xD7AE, 0xD7F5,\n    0xD840, 0xD88F, 0xD8E1, 0xD936, 0xD98D, 0xD9E7, 0xDA43, 0xDA9F,\n    0xDAFD, 0xDB5C, 0xDBBB, 0xDC19, 0xDC77, 0xDCD4, 0xDD30, 0xDD8B,\n    0xDDE3, 0xDE39, 0xDE8C, 0xDEDC, 0xDF28, 0xDF71, 0xDFB5, 0xDFF4,\n    0xE02E, 0xE063, 0xE092, 0xE0BB, 0xE0DE, 0xE0F9, 0xE10D, 0xE119,\n    0xE11D, 0xFEF1, 0xFEF1, 0xFEF2, 0xFEF3, 0xFEF5, 0xFEF7, 0xFEFA,\n    0xFEFE, 0xFF01, 0xFF06, 0xFF0A, 0xFF0F, 0xFF15, 0xFF1A, 0xFF21,\n    0xFF27, 0xFF2E, 0xFF35, 0xFF3C, 0xFF43, 0xFF4B, 0xFF53, 0xFF5B,\n    0xFF63, 0xFF6B, 0xFF74, 0xFF7C, 0xFF85, 0xFF8E, 0xFF97, 0xFF9F,\n    0xFFA8, 0xFFB1, 0xFFBA, 0xFFC3, 0xFFCB, 0xFFD4, 0xFFDD, 0xFFE5,\n    0xFFED, 0xFFF5, 0xFFFD, 0x0004, 0x000B, 0x0013, 0x001A, 0x0020,\n    0x0027, 0x002D, 0x0033, 0x0038, 0x003D, 0x0042, 0x0046, 0x0048,\n    0x0049, 0x0049, 0x0047, 0x0045, 0x0042, 0x003F, 0x003B, 0x0037,\n    0x0033, 0x002F, 0x002B, 0x0028, 0x0025, 0x0024, 0x0023, 0x0021,\n    0x0021, 0x0020, 0x001F, 0x001F, 0x001E, 0x001E, 0x001E, 0x001D,\n    0x001D, 0x001D, 0x001D, 0x001D, 0x001D, 0x001D, 0x001D, 0x001D,\n    0x001D, 0x001C, 0x001C, 0x001C, 0x001B, 0x001B, 0x001A, 0x0019,\n    0x0018, 0x0017, 0x0016, 0x0015, 0x0013, 0x0011, 0x0010, 0x000D,\n    0x000B, 0x0008, 0x0005, 0x0002, 0x0000, 0xFFFC, 0xFFF8, 0xFFF3,\n    0xFFEE, 0xFFE8, 0xFFE2, 0xFFDB, 0xFFD4, 0xFFCD, 0xFFC5, 0xFFBD,\n    0xFFB4, 0xFFAC, 0xFFA3, 0xFF9A, 0xFF91, 0xFF88, 0xFF7F, 0xFF75,\n    0xFF6C, 0xFF63, 0xFF5A, 0xFF51, 0xFF49, 0xFF40, 0xFF38, 0xFF30,\n    0xFF28, 0xFF21, 0xFF1A, 0xFF13, 0xFF0D, 0xFF07, 0xFF02, 0xFEFE,\n    0xFEFA, 0xFEF7, 0xFEF4, 0xFEF2, 0xFEF1, 0xFEF1, 0x021A, 0x021A,\n    0x021A, 0x021A, 0x021A, 0x0219, 0x0219, 0x0219, 0x0218, 0x0218,\n    0x0217, 0x0217, 0x0216, 0x0215, 0x0215, 0x0214, 0x0213, 0x0212,\n    0x0212, 0x0211, 0x0210, 0x020F, 0x020E, 0x020D, 0x020D, 0x020C,\n    0x020B, 0x020A, 0x020A, 0x0209, 0x0208, 0x0208, 0x0207, 0x0206,\n    0x0206, 0x0205, 0x0205, 0x0205, 0x0204, 0x0204, 0x0204, 0x0204,\n    0x0204, 0x0204, 0x0204, 0x0204, 0x0204, 0x0205, 0x0205, 0x0206,\n    0x0206, 0x0207, 0x0208, 0x020A, 0x020D, 0x0211, 0x0216, 0x021C,\n    0x0222, 0x0229, 0x0230, 0x0237, 0x023E, 0x0244, 0x024B, 0x0250,\n    0x0254, 0x0258, 0x025A, 0x025B, 0x025D, 0x025E, 0x025F, 0x0260,\n    0x0261, 0x0262, 0x0263, 0x0263, 0x0264, 0x0264, 0x0265, 0x0265,\n    0x0266, 0x0266, 0x0266, 0x0266, 0x0266, 0x0266, 0x0266, 0x0266,\n    0x0265, 0x0265, 0x0265, 0x0265, 0x0264, 0x0264, 0x0263, 0x0263,\n    0x0262, 0x0262, 0x0261, 0x0260, 0x0260, 0x025F, 0x025E, 0x025D,\n    0x025D, 0x025C, 0x025B, 0x025A, 0x0259, 0x0258, 0x0257, 0x0255,\n    0x0254, 0x0252, 0x0250, 0x024E, 0x024C, 0x024A, 0x0248, 0x0246,\n    0x0244, 0x0242, 0x0240, 0x023D, 0x023B, 0x0239, 0x0237, 0x0235,\n    0x0232, 0x0230, 0x022E, 0x022C, 0x022A, 0x0228, 0x0226, 0x0225,\n    0x0223, 0x0221, 0x0220, 0x021F, 0x021E, 0x021D, 0x021C, 0x021B,\n    0x021B, 0x021A, 0x021A, 0xB635, 0xB63A, 0xB648, 0xB660, 0xB680,\n    0xB6AA, 0xB6DB, 0xB714, 0xB756, 0xB79E, 0xB7ED, 0xB844, 0xB8A0,\n    0xB903, 0xB96B, 0xB9D8, 0xBA4B, 0xBAC3, 0xBB3F, 0xBBBF, 0xBC43,\n    0xBCCA, 0xBD55, 0xBDE2, 0xBE72, 0xBF04, 0xBF98, 0xC02D, 0xC0C4,\n    0xC15C, 0xC1F4, 0xC28D, 0xC326, 0xC3BE, 0xC455, 0xC4EC, 0xC581,\n    0xC615, 0xC6A6, 0xC736, 0xC7C3, 0xC84D, 0xC8D3, 0xC956, 0xC9D6,\n    0xCA51, 0xCAC7, 0xCB39, 0xCBA5, 0xCC0C, 0xCC6E, 0xCCC9, 0xCD1E,\n    0xCD63, 0xCD90, 0xCDA9, 0xCDB0, 0xCDA6, 0xCD8F, 0xCD6D, 0xCD42,\n    0xCD11, 0xCCDC, 0xCCA5, 0xCC70, 0xCC3E, 0xCC12, 0xCBEE, 0xCBD5,\n    0xCBC3, 0xCBB4, 0xCBA7, 0xCB9C, 0xCB93, 0xCB8B, 0xCB85, 0xCB80,\n    0xCB7D, 0xCB7A, 0xCB77, 0xCB76, 0xCB74, 0xCB73, 0xCB72, 0xCB70,\n    0xCB6E, 0xCB6B, 0xCB67, 0xCB62, 0xCB5C, 0xCB55, 0xCB4C, 0xCB41,\n    0xCB34, 0xCB24, 0xCB13, 0xCAFF, 0xCAE7, 0xCACD, 0xCAB0, 0xCA8F,\n    0xCA6B, 0xCA43, 0xCA17, 0xC9E7, 0xC9B3, 0xC97A, 0xC93C, 0xC8F9,\n    0xC8AF, 0xC85A, 0xC7FB, 0xC793, 0xC722, 0xC6A9, 0xC62A, 0xC5A3,\n    0xC517, 0xC485, 0xC3EF, 0xC355, 0xC2B7, 0xC216, 0xC174, 0xC0D0,\n    0xC02B, 0xBF85, 0xBEE1, 0xBE3D, 0xBD9B, 0xBCFC, 0xBC5F, 0xBBC6,\n    0xBB32, 0xBAA2, 0xBA18, 0xB994, 0xB917, 0xB8A2, 0xB834, 0xB7D0,\n    0xB775, 0xB724, 0xB6DD, 0xB6A2, 0xB673, 0xB651, 0xB63C, 0xB635,\n    0x2EF3, 0x2EED, 0x2EDD, 0x2EC1, 0x2E9C, 0x2E6D, 0x2E35, 0x2DF5,\n    0x2DAC, 0x2D5D, 0x2D07, 0x2CAA, 0x2C47, 0x2BE0, 0x2B73, 0x2B03,\n    0x2A8E, 0x2A17, 0x299D, 0x2921, 0x28A4, 0x2825, 0x27A6, 0x2727,\n    0x26A9, 0x262C, 0x25B1, 0x2538, 0x24C1, 0x244E, 0x23DF, 0x2374,\n    0x230E, 0x22AD, 0x2252, 0x21FE, 0x21B1, 0x2165, 0x2115, 0x20C2,\n    0x206C, 0x2014, 0x1FBB, 0x1F60, 0x1F04, 0x1EA9, 0x1E4E, 0x1DF4,\n    0x1D9C, 0x1D46, 0x1CF2, 0x1CA3, 0x1C56, 0x1C0F, 0x1BCC, 0x1B8F,\n    0x1B58, 0x1B27, 0x1AFE, 0x1ADC, 0x1AC3, 0x1AB2, 0x1AAB, 0x1AAE,\n    0x1ABB, 0x1AD4, 0x1AF8, 0x1B28, 0x1B65, 0x1BAF, 0x1C07, 0x1C6C,\n    0x1CDE, 0x1D5A, 0x1DE2, 0x1E73, 0x1F0E, 0x1FB2, 0x205D, 0x210F,\n    0x21C8, 0x2287, 0x234A, 0x2412, 0x24DD, 0x25AB, 0x267B, 0x274C,\n    0x281E, 0x28F0, 0x29C1, 0x2A90, 0x2B5D, 0x2C28, 0x2CEE, 0x2DB0,\n    0x2E6C, 0x2F23, 0x2FD3, 0x307C, 0x311D, 0x31B4, 0x3243, 0x32C7,\n    0x3340, 0x33AD, 0x340E, 0x3462, 0x34A7, 0x34E0, 0x350E, 0x3531,\n    0x3549, 0x3558, 0x355E, 0x355B, 0x3550, 0x353D, 0x3523, 0x3503,\n    0x34DC, 0x34B0, 0x347E, 0x3448, 0x340E, 0x33D0, 0x338F, 0x334C,\n    0x3306, 0x32BF, 0x3277, 0x322E, 0x31E5, 0x319D, 0x3156, 0x3110,\n    0x30CC, 0x308B, 0x304D, 0x3012, 0x2FDB, 0x2FA9, 0x2F7C, 0x2F54,\n    0x2F32, 0x2F18, 0x2F04, 0x2EF7, 0x2EF3, 0x0B08, 0x0B09, 0x0B0E,\n    0x0B14, 0x0B1E, 0x0B2A, 0x0B39, 0x0B4A, 0x0B5D, 0x0B73, 0x0B8B,\n    0x0BA4, 0x0BC0, 0x0BDE, 0x0BFE, 0x0C1F, 0x0C42, 0x0C67, 0x0C8D,\n    0x0CB5, 0x0CDE, 0x0D08, 0x0D34, 0x0D61, 0x0D8F, 0x0DBD, 0x0DED,\n    0x0E1E, 0x0E4F, 0x0E81, 0x0EB3, 0x0EE6, 0x0F1A, 0x0F4E, 0x0F82,\n    0x0FB6, 0x0FEA, 0x101F, 0x1053, 0x1088, 0x10BC, 0x10F0, 0x1123,\n    0x1156, 0x1188, 0x11BA, 0x11EC, 0x121C, 0x124C, 0x127B, 0x12A8,\n    0x12D5, 0x1300, 0x132B, 0x1354, 0x137B, 0x13A2, 0x13C6, 0x13E9,\n    0x140B, 0x142A, 0x1448, 0x1464, 0x147D, 0x1495, 0x14AA, 0x14BE,\n    0x14CF, 0x14DD, 0x14E8, 0x14F0, 0x14F4, 0x14F5, 0x14F2, 0x14ED,\n    0x14E4, 0x14D8, 0x14CA, 0x14B9, 0x14A6, 0x1490, 0x1478, 0x145E,\n    0x1442, 0x1424, 0x1405, 0x13E4, 0x13C2, 0x139E, 0x1379, 0x1354,\n    0x132D, 0x1306, 0x12DE, 0x12B6, 0x128D, 0x1265, 0x123C, 0x1213,\n    0x11EB, 0x11C3, 0x119B, 0x1174, 0x114E, 0x1129, 0x1105, 0x10E2,\n    0x10C0, 0x10A0, 0x107F, 0x105D, 0x1038, 0x1012, 0x0FEA, 0x0FC1,\n    0x0F96, 0x0F6A, 0x0F3D, 0x0F0F, 0x0EE1, 0x0EB2, 0x0E82, 0x0E52,\n    0x0E22, 0x0DF3, 0x0DC3, 0x0D94, 0x0D65, 0x0D37, 0x0D09, 0x0CDD,\n    0x0CB1, 0x0C87, 0x0C5E, 0x0C37, 0x0C12, 0x0BEE, 0x0BCC, 0x0BAD,\n    0x0B8F, 0x0B75, 0x0B5C, 0x0B47, 0x0B34, 0x0B25, 0x0B18, 0x0B0F,\n    0x0B0A, 0x0B08, 0x0CDF, 0x0CDF, 0x0CDE, 0x0CDC, 0x0CD9, 0x0CD6,\n    0x0CD2, 0x0CCD, 0x0CC8, 0x0CC2, 0x0CBC, 0x0CB5, 0x0CAD, 0x0CA5,\n    0x0C9D, 0x0C94, 0x0C8B, 0x0C81, 0x0C77, 0x0C6D, 0x0C62, 0x0C57,\n    0x0C4C, 0x0C41, 0x0C35, 0x0C2A, 0x0C1E, 0x0C12, 0x0C06, 0x0BFA,\n    0x0BEE, 0x0BE2, 0x0BD5, 0x0BC9, 0x0BBD, 0x0BB1, 0x0BA6, 0x0B9A,\n    0x0B8F, 0x0B83, 0x0B78, 0x0B6E, 0x0B63, 0x0B59, 0x0B4F, 0x0B46,\n    0x0B3D, 0x0B34, 0x0B2C, 0x0B24, 0x0B1D, 0x0B16, 0x0B10, 0x0B0B,\n    0x0B06, 0x0B01, 0x0AFE, 0x0AFB, 0x0AF9, 0x0AF7, 0x0AF6, 0x0AF6,\n    0x0AF7, 0x0AF9, 0x0AFB, 0x0AFF, 0x0B03, 0x0B09, 0x0B0F, 0x0B17,\n    0x0B23, 0x0B32, 0x0B44, 0x0B59, 0x0B71, 0x0B8B, 0x0BA7, 0x0BC5,\n    0x0BE6, 0x0C08, 0x0C2B, 0x0C50, 0x0C77, 0x0C9E, 0x0CC6, 0x0CEF,\n    0x0D18, 0x0D42, 0x0D6C, 0x0D95, 0x0DBF, 0x0DE8, 0x0E11, 0x0E39,\n    0x0E60, 0x0E86, 0x0EAA, 0x0ECD, 0x0EEF, 0x0F0F, 0x0F2D, 0x0F48,\n    0x0F61, 0x0F78, 0x0F8C, 0x0F9E, 0x0FAC, 0x0FB7, 0x0FBE, 0x0FC3,\n    0x0FC4, 0x0FC1, 0x0FBD, 0x0FB5, 0x0FAB, 0x0F9E, 0x0F90, 0x0F7F,\n    0x0F6C, 0x0F58, 0x0F42, 0x0F2A, 0x0F12, 0x0EF8, 0x0EDD, 0x0EC2,\n    0x0EA5, 0x0E89, 0x0E6C, 0x0E4F, 0x0E32, 0x0E15, 0x0DF8, 0x0DDC,\n    0x0DC1, 0x0DA6, 0x0D8D, 0x0D74, 0x0D5D, 0x0D47, 0x0D33, 0x0D21,\n    0x0D11, 0x0D02, 0x0CF6, 0x0CEC, 0x0CE5, 0x0CE1, 0x0CDF, 0xA6C4,\n    0xA6C7, 0xA6D1, 0xA6E1, 0xA6F8, 0xA714, 0xA737, 0xA75F, 0xA78C,\n    0xA7BF, 0xA7F7, 0xA834, 0xA875, 0xA8BB, 0xA906, 0xA954, 0xA9A7,\n    0xA9FD, 0xAA57, 0xAAB5, 0xAB16, 0xAB79, 0xABE0, 0xAC4A, 0xACB6,\n    0xAD24, 0xAD94, 0xAE07, 0xAE7B, 0xAEF1, 0xAF68, 0xAFE1, 0xB05A,\n    0xB0D4, 0xB150, 0xB1CB, 0xB247, 0xB2C3, 0xB33F, 0xB3BB, 0xB436,\n    0xB4B1, 0xB52B, 0xB5A4, 0xB61C, 0xB692, 0xB707, 0xB77A, 0xB7EC,\n    0xB85B, 0xB8C8, 0xB933, 0xB99B, 0xBA00, 0xBA62, 0xBAC1, 0xBB1D,\n    0xBB75, 0xBBC9, 0xBC19, 0xBC66, 0xBCAE, 0xBCF1, 0xBD30, 0xBD6A,\n    0xBDA0, 0xBDCF, 0xBDFA, 0xBE1F, 0xBE3D, 0xBE53, 0xBE61, 0xBE68,\n    0xBE67, 0xBE60, 0xBE52, 0xBE3E, 0xBE24, 0xBE03, 0xBDDE, 0xBDB3,\n    0xBD83, 0xBD4F, 0xBD16, 0xBCD9, 0xBC98, 0xBC54, 0xBC0C, 0xBBC2,\n    0xBB74, 0xBB24, 0xBAD2, 0xBA7F, 0xBA29, 0xB9D2, 0xB97B, 0xB922,\n    0xB8C9, 0xB870, 0xB816, 0xB7BD, 0xB765, 0xB70E, 0xB6B8, 0xB663,\n    0xB610, 0xB5BF, 0xB570, 0xB524, 0xB4D6, 0xB482, 0xB429, 0xB3CB,\n    0xB368, 0xB300, 0xB295, 0xB227, 0xB1B5, 0xB141, 0xB0CA, 0xB052,\n    0xAFD8, 0xAF5D, 0xAEE2, 0xAE66, 0xADEB, 0xAD70, 0xACF6, 0xAC7E,\n    0xAC08, 0xAB94, 0xAB22, 0xAAB4, 0xAA49, 0xA9E3, 0xA980, 0xA922,\n    0xA8CA, 0xA877, 0xA829, 0xA7E3, 0xA7A3, 0xA76A, 0xA739, 0xA710,\n    0xA6EF, 0xA6D7, 0xA6C9, 0xA6C4, 0x00BE, 0x00BE, 0x00BD, 0x00BD,\n    0x00BC, 0x00BB, 0x00BA, 0x00B8, 0x00B7, 0x00B5, 0x00B3, 0x00B2,\n    0x00B0, 0x00AE, 0x00AC, 0x00A9, 0x00A7, 0x00A5, 0x00A3, 0x00A1,\n    0x009F, 0x009D, 0x009B, 0x0099, 0x0098, 0x0096, 0x0095, 0x0094,\n    0x0093, 0x0092, 0x0091, 0x0091, 0x0091, 0x0091, 0x0091, 0x0092,\n    0x0093, 0x0094, 0x0096, 0x0098, 0x009A, 0x009C, 0x009E, 0x00A1,\n    0x00A3, 0x00A6, 0x00A9, 0x00AC, 0x00AF, 0x00B2, 0x00B5, 0x00B8,\n    0x00BB, 0x00BF, 0x00C2, 0x00C5, 0x00C8, 0x00CB, 0x00CE, 0x00D0,\n    0x00D3, 0x00D5, 0x00D8, 0x00DA, 0x00DC, 0x00DD, 0x00DF, 0x00E0,\n    0x00E1, 0x00E2, 0x00E2, 0x00E3, 0x00E3, 0x00E4, 0x00E4, 0x00E4,\n    0x00E4, 0x00E4, 0x00E4, 0x00E4, 0x00E3, 0x00E3, 0x00E3, 0x00E2,\n    0x00E2, 0x00E1, 0x00E0, 0x00E0, 0x00DF, 0x00DE, 0x00DD, 0x00DD,\n    0x00DC, 0x00DB, 0x00DA, 0x00D9, 0x00D8, 0x00D7, 0x00D7, 0x00D6,\n    0x00D5, 0x00D4, 0x00D4, 0x00D3, 0x00D2, 0x00D2, 0x00D1, 0x00D0,\n    0x00D0, 0x00CF, 0x00CF, 0x00CF, 0x00CE, 0x00CD, 0x00CD, 0x00CC,\n    0x00CC, 0x00CB, 0x00CB, 0x00CA, 0x00C9, 0x00C9, 0x00C8, 0x00C8,\n    0x00C7, 0x00C6, 0x00C6, 0x00C5, 0x00C5, 0x00C4, 0x00C4, 0x00C3,\n    0x00C3, 0x00C2, 0x00C2, 0x00C1, 0x00C1, 0x00C0, 0x00C0, 0x00C0,\n    0x00BF, 0x00BF, 0x00BF, 0x00BE, 0x00BE, 0x00BE, 0x00BE, 0x00BE,\n    0x00BE, 0xFF28, 0xFF28, 0xFF27, 0xFF27, 0xFF26, 0xFF25, 0xFF25,\n    0xFF24, 0xFF23, 0xFF21, 0xFF20, 0xFF1F, 0xFF1D, 0xFF1C, 0xFF1A,\n    0xFF19, 0xFF17, 0xFF16, 0xFF14, 0xFF13, 0xFF11, 0xFF10, 0xFF0F,\n    0xFF0D, 0xFF0C, 0xFF0B, 0xFF0A, 0xFF09, 0xFF08, 0xFF08, 0xFF07,\n    0xFF07, 0xFF07, 0xFF07, 0xFF08, 0xFF08, 0xFF09, 0xFF0A, 0xFF0C,\n    0xFF0D, 0xFF0F, 0xFF11, 0xFF13, 0xFF15, 0xFF17, 0xFF1A, 0xFF1C,\n    0xFF1F, 0xFF21, 0xFF24, 0xFF27, 0xFF2A, 0xFF2C, 0xFF2F, 0xFF32,\n    0xFF34, 0xFF37, 0xFF39, 0xFF3C, 0xFF3E, 0xFF41, 0xFF43, 0xFF45,\n    0xFF46, 0xFF48, 0xFF49, 0xFF4B, 0xFF4C, 0xFF4C, 0xFF4D, 0xFF4E,\n    0xFF4E, 0xFF4E, 0xFF4E, 0xFF4E, 0xFF4E, 0xFF4E, 0xFF4E, 0xFF4E,\n    0xFF4E, 0xFF4D, 0xFF4D, 0xFF4C, 0xFF4C, 0xFF4B, 0xFF4A, 0xFF4A,\n    0xFF49, 0xFF48, 0xFF47, 0xFF47, 0xFF46, 0xFF45, 0xFF44, 0xFF43,\n    0xFF42, 0xFF41, 0xFF41, 0xFF40, 0xFF3F, 0xFF3E, 0xFF3D, 0xFF3D,\n    0xFF3C, 0xFF3B, 0xFF3A, 0xFF3A, 0xFF39, 0xFF39, 0xFF38, 0xFF38,\n    0xFF37, 0xFF37, 0xFF36, 0xFF36, 0xFF35, 0xFF35, 0xFF34, 0xFF34,\n    0xFF33, 0xFF32, 0xFF32, 0xFF31, 0xFF31, 0xFF30, 0xFF30, 0xFF2F,\n    0xFF2E, 0xFF2E, 0xFF2D, 0xFF2D, 0xFF2C, 0xFF2C, 0xFF2B, 0xFF2B,\n    0xFF2B, 0xFF2A, 0xFF2A, 0xFF29, 0xFF29, 0xFF29, 0xFF29, 0xFF28,\n    0xFF28, 0xFF28, 0xFF28, 0xFF28, 0xFF28, 0xFF28, 0xC4CA, 0xC4D0,\n    0xC4E1, 0xC4FE, 0xC524, 0xC553, 0xC58A, 0xC5CA, 0xC610, 0xC65C,\n    0xC6AE, 0xC704, 0xC75E, 0xC7BB, 0xC81B, 0xC87B, 0xC8DD, 0xC93F,\n    0xC9A0, 0xC9FF, 0xCA5C, 0xCAB6, 0xCB0C, 0xCB5E, 0xCBAA, 0xCBF0,\n    0xCC30, 0xCC67, 0xCC97, 0xCCBD, 0xCCD9, 0xCCEA, 0xCCF0, 0xCCE9,\n    0xCCD2, 0xCCAD, 0xCC7B, 0xCC3D, 0xCBF2, 0xCB9D, 0xCB3E, 0xCAD6,\n    0xCA65, 0xC9ED, 0xC96E, 0xC8E9, 0xC85F, 0xC7D1, 0xC73F, 0xC6AA,\n    0xC614, 0xC57C, 0xC4E4, 0xC44D, 0xC3B7, 0xC323, 0xC292, 0xC206,\n    0xC17D, 0xC0FA, 0xC07E, 0xC008, 0xBF9B, 0xBF36, 0xBEDB, 0xBE8A,\n    0xBE44, 0xBE0A, 0xBDDD, 0xBDBA, 0xBD9C, 0xBD85, 0xBD73, 0xBD66,\n    0xBD5E, 0xBD5C, 0xBD5D, 0xBD64, 0xBD6E, 0xBD7C, 0xBD8E, 0xBDA3,\n    0xBDBB, 0xBDD7, 0xBDF5, 0xBE15, 0xBE38, 0xBE5D, 0xBE83, 0xBEAB,\n    0xBED5, 0xBEFF, 0xBF2A, 0xBF56, 0xBF82, 0xBFAE, 0xBFDA, 0xC005,\n    0xC030, 0xC05A, 0xC083, 0xC0AB, 0xC0D1, 0xC0F5, 0xC118, 0xC138,\n    0xC155, 0xC170, 0xC188, 0xC19E, 0xC1B6, 0xC1CE, 0xC1E7, 0xC200,\n    0xC21A, 0xC235, 0xC250, 0xC26B, 0xC287, 0xC2A2, 0xC2BE, 0xC2DA,\n    0xC2F6, 0xC311, 0xC32D, 0xC348, 0xC363, 0xC37E, 0xC398, 0xC3B1,\n    0xC3CA, 0xC3E2, 0xC3F9, 0xC410, 0xC425, 0xC43A, 0xC44E, 0xC460,\n    0xC471, 0xC481, 0xC490, 0xC49D, 0xC4A8, 0xC4B2, 0xC4BB, 0xC4C1,\n    0xC4C6, 0xC4C9, 0xC4CA, 0x2B82, 0x2B93, 0x2BC4, 0x2C14, 0x2C80,\n    0x2D05, 0x2DA3, 0x2E57, 0x2F1F, 0x2FF8, 0x30E0, 0x31D7, 0x32D8,\n    0x33E3, 0x34F4, 0x360B, 0x3725, 0x383F, 0x3958, 0x3A6E, 0x3B7E,\n    0x3C86, 0x3D84, 0x3E77, 0x3F5C, 0x4030, 0x40F3, 0x41A1, 0x4238,\n    0x42B7, 0x431B, 0x4363, 0x438C, 0x439B, 0x4398, 0x4385, 0x4361,\n    0x432E, 0x42ED, 0x429E, 0x4242, 0x41DB, 0x4168, 0x40EC, 0x4067,\n    0x3FD9, 0x3F44, 0x3EA8, 0x3E07, 0x3D61, 0x3CB6, 0x3C09, 0x3B5A,\n    0x3AAA, 0x39F9, 0x3948, 0x3899, 0x37EC, 0x3742, 0x369C, 0x35FA,\n    0x355F, 0x34CA, 0x343C, 0x33B7, 0x333B, 0x32C9, 0x3262, 0x3207,\n    0x31B3, 0x3161, 0x3111, 0x30C3, 0x3077, 0x302D, 0x2FE6, 0x2FA0,\n    0x2F5C, 0x2F1A, 0x2ED9, 0x2E9B, 0x2E5E, 0x2E24, 0x2DEA, 0x2DB3,\n    0x2D7E, 0x2D4A, 0x2D17, 0x2CE7, 0x2CB8, 0x2C8A, 0x2C5E, 0x2C34,\n    0x2C0B, 0x2BE4, 0x2BBE, 0x2B99, 0x2B76, 0x2B54, 0x2B34, 0x2B15,\n    0x2AF7, 0x2ADB, 0x2ABF, 0x2AA5, 0x2A8D, 0x2A75, 0x2A5E, 0x2A49,\n    0x2A36, 0x2A26, 0x2A18, 0x2A0E, 0x2A07, 0x2A02, 0x29FF, 0x29FF,\n    0x2A01, 0x2A05, 0x2A0A, 0x2A12, 0x2A1B, 0x2A26, 0x2A32, 0x2A3F,\n    0x2A4D, 0x2A5C, 0x2A6C, 0x2A7D, 0x2A8E, 0x2AA0, 0x2AB2, 0x2AC4,\n    0x2AD6, 0x2AE7, 0x2AF9, 0x2B0A, 0x2B1A, 0x2B2A, 0x2B39, 0x2B47,\n    0x2B53, 0x2B5F, 0x2B69, 0x2B72, 0x2B79, 0x2B7E, 0x2B81, 0x2B82,\n    0xFEB0, 0xFEA6, 0xFE89, 0xFE59, 0xFE1A, 0xFDCA, 0xFD6D, 0xFD02,\n    0xFC8C, 0xFC0C, 0xFB83, 0xFAF2, 0xFA5B, 0xF9BF, 0xF91E, 0xF87C,\n    0xF7D8, 0xF733, 0xF691, 0xF5F0, 0xF554, 0xF4BD, 0xF42C, 0xF3A3,\n    0xF323, 0xF2AD, 0xF242, 0xF1E5, 0xF196, 0xF156, 0xF126, 0xF109,\n    0xF0FF, 0xF107, 0xF120, 0xF148, 0xF17E, 0xF1C1, 0xF211, 0xF26C,\n    0xF2D2, 0xF341, 0xF3B9, 0xF438, 0xF4BF, 0xF54B, 0xF5DC, 0xF670,\n    0xF708, 0xF7A2, 0xF83D, 0xF8D8, 0xF972, 0xFA0A, 0xFAA0, 0xFB32,\n    0xFBC0, 0xFC48, 0xFCC9, 0xFD43, 0xFDB5, 0xFE1D, 0xFE7B, 0xFECE,\n    0xFF15, 0xFF4F, 0xFF7A, 0xFF97, 0xFFA4, 0xFFA2, 0xFF94, 0xFF7A,\n    0xFF55, 0xFF25, 0xFEEB, 0xFEA9, 0xFE5D, 0xFE0A, 0xFDB0, 0xFD4F,\n    0xFCE8, 0xFC7B, 0xFC0A, 0xFB95, 0xFB1C, 0xFAA1, 0xFA23, 0xF9A5,\n    0xF925, 0xF8A5, 0xF825, 0xF7A7, 0xF72A, 0xF6B0, 0xF639, 0xF5C5,\n    0xF556, 0xF4EC, 0xF487, 0xF428, 0xF3D1, 0xF381, 0xF339, 0xF2FA,\n    0xF2C4, 0xF299, 0xF278, 0xF263, 0xF25A, 0xF25D, 0xF26B, 0xF284,\n    0xF2A8, 0xF2D6, 0xF30C, 0xF34B, 0xF392, 0xF3E1, 0xF436, 0xF491,\n    0xF4F2, 0xF558, 0xF5C1, 0xF62F, 0xF6A0, 0xF713, 0xF788, 0xF7FF,\n    0xF876, 0xF8ED, 0xF963, 0xF9D9, 0xFA4D, 0xFABE, 0xFB2D, 0xFB97,\n    0xFBFE, 0xFC60, 0xFCBD, 0xFD14, 0xFD64, 0xFDAD, 0xFDEE, 0xFE27,\n    0xFE57, 0xFE7D, 0xFE99, 0xFEAA, 0xFEB0, 0xF1F4, 0xF1EB, 0xF1D0,\n    0xF1A6, 0xF16C, 0xF125, 0xF0D1, 0xF071, 0xF007, 0xEF93, 0xEF18,\n    0xEE96, 0xEE0E, 0xED81, 0xECF1, 0xEC5E, 0xEBCA, 0xEB37, 0xEAA4,\n    0xEA14, 0xE987, 0xE8FF, 0xE87D, 0xE802, 0xE78E, 0xE724, 0xE6C4,\n    0xE670, 0xE629, 0xE5EF, 0xE5C5, 0xE5AA, 0xE5A1, 0xE5A8, 0xE5BD,\n    0xE5DF, 0xE60C, 0xE645, 0xE688, 0xE6D6, 0xE72C, 0xE78A, 0xE7F0,\n    0xE85D, 0xE8CF, 0xE947, 0xE9C3, 0xEA43, 0xEAC6, 0xEB4B, 0xEBD1,\n    0xEC58, 0xECDE, 0xED64, 0xEDE8, 0xEE69, 0xEEE8, 0xEF62, 0xEFD7,\n    0xF047, 0xF0B1, 0xF114, 0xF16E, 0xF1C1, 0xF209, 0xF248, 0xF27C,\n    0xF2A4, 0xF2C0, 0xF2D1, 0xF2DA, 0xF2DB, 0xF2D5, 0xF2C8, 0xF2B4,\n    0xF29A, 0xF27B, 0xF256, 0xF22C, 0xF1FD, 0xF1CB, 0xF194, 0xF15B,\n    0xF11E, 0xF0DF, 0xF09D, 0xF05A, 0xF015, 0xEFCF, 0xEF89, 0xEF43,\n    0xEEFC, 0xEEB7, 0xEE72, 0xEE2F, 0xEDED, 0xEDAE, 0xED71, 0xED38,\n    0xED01, 0xECCF, 0xECA0, 0xEC76, 0xEC51, 0xEC32, 0xEC18, 0xEC04,\n    0xEBF7, 0xEBF1, 0xEBF1, 0xEBF8, 0xEC03, 0xEC14, 0xEC29, 0xEC43,\n    0xEC62, 0xEC84, 0xECAA, 0xECD3, 0xECFF, 0xED2E, 0xED60, 0xED93,\n    0xEDC9, 0xEE00, 0xEE38, 0xEE71, 0xEEAB, 0xEEE6, 0xEF20, 0xEF5A,\n    0xEF94, 0xEFCC, 0xF004, 0xF03A, 0xF06E, 0xF0A1, 0xF0D1, 0xF0FE,\n    0xF129, 0xF150, 0xF174, 0xF194, 0xF1B0, 0xF1C8, 0xF1DA, 0xF1E8,\n    0xF1F1, 0xF1F4, 0xB490, 0xB48B, 0xB47E, 0xB467, 0xB449, 0xB424,\n    0xB3F8, 0xB3C6, 0xB38E, 0xB352, 0xB312, 0xB2CE, 0xB286, 0xB23D,\n    0xB1F2, 0xB1A5, 0xB158, 0xB10B, 0xB0BE, 0xB073, 0xB029, 0xAFE2,\n    0xAF9E, 0xAF5D, 0xAF21, 0xAEEA, 0xAEB8, 0xAE8C, 0xAE66, 0xAE48,\n    0xAE32, 0xAE24, 0xAE20, 0xAE19, 0xAE05, 0xADE5, 0xADBA, 0xAD84,\n    0xAD45, 0xACFD, 0xACAD, 0xAC56, 0xABF9, 0xAB97, 0xAB30, 0xAAC5,\n    0xAA57, 0xA9E8, 0xA977, 0xA906, 0xA895, 0xA826, 0xA7B9, 0xA74F,\n    0xA6E9, 0xA688, 0xA62C, 0xA5D7, 0xA589, 0xA543, 0xA506, 0xA4D3,\n    0xA4AB, 0xA48E, 0xA47E, 0xA47A, 0xA485, 0xA49F, 0xA4C8, 0xA501,\n    0xA549, 0xA59F, 0xA603, 0xA673, 0xA6EE, 0xA775, 0xA805, 0xA89F,\n    0xA942, 0xA9EC, 0xAA9E, 0xAB55, 0xAC12, 0xACD4, 0xAD9A, 0xAE63,\n    0xAF2E, 0xAFFB, 0xB0C9, 0xB197, 0xB263, 0xB32F, 0xB3F8, 0xB4BE,\n    0xB580, 0xB63E, 0xB6F6, 0xB7A7, 0xB852, 0xB8F5, 0xB990, 0xBA21,\n    0xBAA8, 0xBB25, 0xBB95, 0xBBF9, 0xBC50, 0xBC99, 0xBCD3, 0xBCFF,\n    0xBD1F, 0xBD33, 0xBD3C, 0xBD3A, 0xBD2E, 0xBD18, 0xBCFA, 0xBCD3,\n    0xBCA5, 0xBC6F, 0xBC33, 0xBBF1, 0xBBAA, 0xBB5E, 0xBB0E, 0xBABA,\n    0xBA63, 0xBA09, 0xB9AE, 0xB952, 0xB8F5, 0xB897, 0xB83B, 0xB7DF,\n    0xB785, 0xB72D, 0xB6D8, 0xB687, 0xB639, 0xB5F0, 0xB5AD, 0xB56F,\n    0xB537, 0xB507, 0xB4DD, 0xB4BC, 0xB4A4, 0xB495, 0xB490, 0x8001,\n    0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x04E5,\n    0x04E4, 0x04E0, 0x04DA, 0x04D2, 0x04C7, 0x04B9, 0x04A9, 0x0497,\n    0x0482, 0x046B, 0x0451, 0x0435, 0x0416, 0x03F5, 0x03D2, 0x03AC,\n    0x0383, 0x0358, 0x032B, 0x02FB, 0x02C9, 0x0294, 0x025D, 0x0224,\n    0x01E8, 0x01A9, 0x0168, 0x0125, 0x00DF, 0x0097, 0x004D, 0x0000,\n    0xFFAD, 0xFF51, 0xFEEB, 0xFE7E, 0xFE09, 0xFD8D, 0xFD0B, 0xFC84,\n    0xFBF8, 0xFB69, 0xFAD5, 0xFA40, 0xF9A8, 0xF90F, 0xF876, 0xF7DD,\n    0xF744, 0xF6AD, 0xF618, 0xF587, 0xF4F8, 0xF46E, 0xF3E9, 0xF369,\n    0xF2F0, 0xF27D, 0xF212, 0xF1B0, 0xF157, 0xF107, 0xF0C2, 0xF087,\n    0xF059, 0xF037, 0xF022, 0xF01B, 0xF021, 0xF032, 0xF04E, 0xF075,\n    0xF0A5, 0xF0DF, 0xF122, 0xF16D, 0xF1C0, 0xF21A, 0xF27B, 0xF2E2,\n    0xF34F, 0xF3C1, 0xF438, 0xF4B4, 0xF533, 0xF5B5, 0xF63A, 0xF6C1,\n    0xF74A, 0xF7D3, 0xF85E, 0xF8E9, 0xF973, 0xF9FC, 0xFA84, 0xFB0A,\n    0xFB8E, 0xFC0E, 0xFC8B, 0xFD05, 0xFD79, 0xFDE9, 0xFE53, 0xFEB7,\n    0xFF14, 0xFF6B, 0xFFBA, 0x0000, 0x0041, 0x0081, 0x00BE, 0x00FA,\n    0x0134, 0x016C, 0x01A2, 0x01D7, 0x0209, 0x023A, 0x0269, 0x0296,\n    0x02C1, 0x02EA, 0x0312, 0x0338, 0x035C, 0x037F, 0x03A0, 0x03BF,\n    0x03DD, 0x03F9, 0x0413, 0x042C, 0x0443, 0x0458, 0x046C, 0x047E,\n    0x048F, 0x049E, 0x04AC, 0x04B8, 0x04C3, 0x04CC, 0x04D4, 0x04DA,\n    0x04DF, 0x04E3, 0x04E5, 0x04E5, 0x026D, 0x026C, 0x026B, 0x0268,\n    0x0264, 0x025F, 0x0259, 0x0252, 0x0249, 0x0240, 0x0235, 0x0229,\n    0x021C, 0x020E, 0x01FE, 0x01ED, 0x01DB, 0x01C7, 0x01B3, 0x019C,\n    0x0185, 0x016C, 0x0152, 0x0137, 0x011A, 0x00FC, 0x00DC, 0x00BB,\n    0x0098, 0x0074, 0x004F, 0x0028, 0x0000, 0xFFD5, 0xFFA4, 0xFF6E,\n    0xFF34, 0xFEF6, 0xFEB4, 0xFE6F, 0xFE27, 0xFDDC, 0xFD8F, 0xFD41,\n    0xFCF1, 0xFC9F, 0xFC4E, 0xFBFC, 0xFBA9, 0xFB58, 0xFB07, 0xFAB7,\n    0xFA69, 0xFA1C, 0xF9D2, 0xF98B, 0xF946, 0xF905, 0xF8C7, 0xF88E,\n    0xF859, 0xF829, 0xF7FE, 0xF7D9, 0xF7BA, 0xF7A1, 0xF78E, 0xF783,\n    0xF77F, 0xF783, 0xF78C, 0xF79B, 0xF7B0, 0xF7CA, 0xF7E9, 0xF80D,\n    0xF835, 0xF862, 0xF892, 0xF8C6, 0xF8FD, 0xF938, 0xF975, 0xF9B5,\n    0xF9F7, 0xFA3C, 0xFA81, 0xFAC9, 0xFB11, 0xFB5A, 0xFBA4, 0xFBEE,\n    0xFC39, 0xFC83, 0xFCCC, 0xFD15, 0xFD5D, 0xFDA3, 0xFDE8, 0xFE2A,\n    0xFE6B, 0xFEA9, 0xFEE5, 0xFF1D, 0xFF52, 0xFF84, 0xFFB2, 0xFFDB,\n    0x0000, 0x0022, 0x0043, 0x0063, 0x0082, 0x00A0, 0x00BD, 0x00D9,\n    0x00F3, 0x010D, 0x0125, 0x013D, 0x0153, 0x0169, 0x017D, 0x0191,\n    0x01A4, 0x01B5, 0x01C6, 0x01D6, 0x01E5, 0x01F3, 0x0200, 0x020D,\n    0x0218, 0x0223, 0x022D, 0x0236, 0x023F, 0x0246, 0x024D, 0x0253,\n    0x0259, 0x025E, 0x0262, 0x0265, 0x0268, 0x026A, 0x026C, 0x026D,\n    0x026D, 0xEEF6, 0xEEF6, 0xEEF4, 0xEEF2, 0xEEEE, 0xEEEB, 0xEEE6,\n    0xEEE1, 0xEEDC, 0xEED6, 0xEED0, 0xEECA, 0xEEC4, 0xEEBE, 0xEEB8,\n    0xEEB3, 0xEEAD, 0xEEA9, 0xEEA4, 0xEEA1, 0xEE9E, 0xEE9C, 0xEE9B,\n    0xEE9B, 0xEE9C, 0xEE9E, 0xEEA2, 0xEEA7, 0xEEAD, 0xEEB5, 0xEEBF,\n    0xEECB, 0xEED8, 0xEEE8, 0xEEFB, 0xEF11, 0xEF29, 0xEF43, 0xEF60,\n    0xEF7E, 0xEF9F, 0xEFC0, 0xEFE3, 0xF008, 0xF02D, 0xF053, 0xF079,\n    0xF0A0, 0xF0C7, 0xF0EE, 0xF115, 0xF13B, 0xF161, 0xF186, 0xF1AA,\n    0xF1CD, 0xF1EF, 0xF20F, 0xF22D, 0xF249, 0xF263, 0xF27B, 0xF290,\n    0xF2A3, 0xF2B2, 0xF2BF, 0xF2C8, 0xF2CD, 0xF2CF, 0xF2CE, 0xF2C9,\n    0xF2C2, 0xF2B7, 0xF2AA, 0xF29B, 0xF289, 0xF275, 0xF260, 0xF248,\n    0xF22E, 0xF213, 0xF1F6, 0xF1D9, 0xF1B9, 0xF199, 0xF178, 0xF157,\n    0xF134, 0xF111, 0xF0EE, 0xF0CB, 0xF0A8, 0xF085, 0xF062, 0xF03F,\n    0xF01D, 0xEFFC, 0xEFDC, 0xEFBC, 0xEF9E, 0xEF81, 0xEF65, 0xEF4B,\n    0xEF33, 0xEF1D, 0xEF08, 0xEEF6, 0xEEE6, 0xEED8, 0xEECD, 0xEEC2,\n    0xEEB9, 0xEEB1, 0xEEAB, 0xEEA5, 0xEEA0, 0xEE9C, 0xEE9A, 0xEE98,\n    0xEE97, 0xEE96, 0xEE97, 0xEE98, 0xEE9A, 0xEE9C, 0xEE9F, 0xEEA2,\n    0xEEA6, 0xEEAA, 0xEEAE, 0xEEB3, 0xEEB7, 0xEEBC, 0xEEC1, 0xEEC6,\n    0xEECC, 0xEED1, 0xEED6, 0xEEDA, 0xEEDF, 0xEEE3, 0xEEE7, 0xEEEB,\n    0xEEEE, 0xEEF1, 0xEEF3, 0xEEF5, 0xEEF6, 0xEEF6, 0xEE78, 0xEE80,\n    0xEE98, 0xEEBE, 0xEEF3, 0xEF34, 0xEF83, 0xEFDD, 0xF043, 0xF0B4,\n    0xF12E, 0xF1B2, 0xF23E, 0xF2D2, 0xF36D, 0xF40F, 0xF4B6, 0xF563,\n    0xF613, 0xF6C8, 0xF77F, 0xF839, 0xF8F4, 0xF9B0, 0xFA6C, 0xFB28,\n    0xFBE2, 0xFC9B, 0xFD51, 0xFE04, 0xFEB2, 0xFF5C, 0x0000, 0x00A7,\n    0x015A, 0x0217, 0x02DD, 0x03AC, 0x0482, 0x055F, 0x0641, 0x0728,\n    0x0813, 0x0901, 0x09F1, 0x0AE2, 0x0BD3, 0x0CC4, 0x0DB2, 0x0E9E,\n    0x0F87, 0x106B, 0x1149, 0x1221, 0x12F2, 0x13BB, 0x147B, 0x1530,\n    0x15DB, 0x167A, 0x170C, 0x1790, 0x1806, 0x186C, 0x18C1, 0x1905,\n    0x1937, 0x1956, 0x1960, 0x1958, 0x193E, 0x1915, 0x18DC, 0x1894,\n    0x183F, 0x17DC, 0x176C, 0x16F1, 0x166B, 0x15DA, 0x153F, 0x149B,\n    0x13EF, 0x133B, 0x1281, 0x11C0, 0x10F9, 0x102E, 0x0F5E, 0x0E8C,\n    0x0DB6, 0x0CDE, 0x0C05, 0x0B2C, 0x0A52, 0x0979, 0x08A2, 0x07CD,\n    0x06FB, 0x062C, 0x0562, 0x049D, 0x03DD, 0x0324, 0x0272, 0x01C8,\n    0x0126, 0x008E, 0x0000, 0xFF76, 0xFEE8, 0xFE58, 0xFDC6, 0xFD32,\n    0xFC9D, 0xFC06, 0xFB6F, 0xFAD7, 0xFA3F, 0xF9A7, 0xF910, 0xF879,\n    0xF7E4, 0xF750, 0xF6BE, 0xF62E, 0xF5A0, 0xF516, 0xF48E, 0xF40A,\n    0xF389, 0xF30D, 0xF295, 0xF222, 0xF1B4, 0xF14B, 0xF0E8, 0xF08B,\n    0xF034, 0xEFE4, 0xEF9B, 0xEF5A, 0xEF20, 0xEEEE, 0xEEC5, 0xEEA4,\n    0xEE8C, 0xEE7D, 0xEE78, 0xFE85, 0xFE86, 0xFE87, 0xFE8A, 0xFE8D,\n    0xFE91, 0xFE97, 0xFE9D, 0xFEA3, 0xFEAB, 0xFEB4, 0xFEBD, 0xFEC7,\n    0xFED1, 0xFEDD, 0xFEE9, 0xFEF5, 0xFF03, 0xFF10, 0xFF1F, 0xFF2E,\n    0xFF3D, 0xFF4D, 0xFF5D, 0xFF6E, 0xFF7F, 0xFF91, 0xFFA3, 0xFFB5,\n    0xFFC7, 0xFFDA, 0xFFED, 0x0000, 0x0014, 0x002A, 0x0043, 0x005D,\n    0x0079, 0x0096, 0x00B4, 0x00D4, 0x00F4, 0x0115, 0x0137, 0x015A,\n    0x017D, 0x01A0, 0x01C3, 0x01E6, 0x0209, 0x022C, 0x024E, 0x026F,\n    0x028F, 0x02AF, 0x02CD, 0x02EA, 0x0305, 0x031F, 0x0338, 0x034E,\n    0x0362, 0x0374, 0x0384, 0x0391, 0x039B, 0x03A3, 0x03A8, 0x03A9,\n    0x03A8, 0x03A4, 0x039E, 0x0395, 0x038A, 0x037D, 0x036E, 0x035D,\n    0x034A, 0x0336, 0x0320, 0x0308, 0x02F0, 0x02D6, 0x02BB, 0x029E,\n    0x0282, 0x0264, 0x0246, 0x0227, 0x0208, 0x01E8, 0x01C8, 0x01A8,\n    0x0189, 0x0169, 0x014A, 0x012B, 0x010C, 0x00EF, 0x00D2, 0x00B5,\n    0x009A, 0x0080, 0x0067, 0x004F, 0x0039, 0x0024, 0x0011, 0x0000,\n    0xFFF0, 0xFFE0, 0xFFD0, 0xFFC1, 0xFFB1, 0xFFA2, 0xFF93, 0xFF85,\n    0xFF77, 0xFF69, 0xFF5B, 0xFF4E, 0xFF41, 0xFF34, 0xFF28, 0xFF1C,\n    0xFF11, 0xFF06, 0xFEFB, 0xFEF1, 0xFEE7, 0xFEDD, 0xFED4, 0xFECC,\n    0xFEC3, 0xFEBC, 0xFEB4, 0xFEAE, 0xFEA7, 0xFEA2, 0xFE9C, 0xFE98,\n    0xFE93, 0xFE90, 0xFE8D, 0xFE8A, 0xFE88, 0xFE86, 0xFE86, 0xFE85,\n    0x0FAB, 0x0FAB, 0x0FA8, 0x0FA5, 0x0FA0, 0x0F9A, 0x0F94, 0x0F8C,\n    0x0F83, 0x0F7A, 0x0F71, 0x0F66, 0x0F5C, 0x0F51, 0x0F47, 0x0F3C,\n    0x0F31, 0x0F27, 0x0F1C, 0x0F13, 0x0F0A, 0x0F01, 0x0EF9, 0x0EF2,\n    0x0EED, 0x0EE8, 0x0EE4, 0x0EE2, 0x0EE1, 0x0EE2, 0x0EE4, 0x0EE8,\n    0x0EEE, 0x0EF6, 0x0F01, 0x0F0D, 0x0F1B, 0x0F2B, 0x0F3C, 0x0F4F,\n    0x0F63, 0x0F79, 0x0F8F, 0x0FA7, 0x0FBF, 0x0FD8, 0x0FF1, 0x100B,\n    0x1025, 0x103F, 0x1058, 0x1072, 0x108C, 0x10A4, 0x10BD, 0x10D4,\n    0x10EB, 0x1101, 0x1115, 0x1128, 0x113A, 0x114A, 0x1159, 0x1165,\n    0x1170, 0x1179, 0x117F, 0x1183, 0x1184, 0x1183, 0x1180, 0x117B,\n    0x1174, 0x116B, 0x1160, 0x1154, 0x1147, 0x1138, 0x1128, 0x1116,\n    0x1104, 0x10F1, 0x10DC, 0x10C7, 0x10B2, 0x109C, 0x1085, 0x106E,\n    0x1057, 0x103F, 0x1028, 0x1011, 0x0FF9, 0x0FE2, 0x0FCC, 0x0FB6,\n    0x0FA0, 0x0F8B, 0x0F77, 0x0F64, 0x0F51, 0x0F40, 0x0F30, 0x0F21,\n    0x0F14, 0x0F08, 0x0EFE, 0x0EF5, 0x0EEE, 0x0EE9, 0x0EE5, 0x0EE2,\n    0x0EE1, 0x0EE0, 0x0EE0, 0x0EE2, 0x0EE4, 0x0EE7, 0x0EEB, 0x0EEF,\n    0x0EF4, 0x0EFA, 0x0F01, 0x0F08, 0x0F0F, 0x0F17, 0x0F1F, 0x0F27,\n    0x0F2F, 0x0F38, 0x0F41, 0x0F49, 0x0F52, 0x0F5B, 0x0F63, 0x0F6C,\n    0x0F74, 0x0F7B, 0x0F83, 0x0F8A, 0x0F90, 0x0F96, 0x0F9B, 0x0FA0,\n    0x0FA4, 0x0FA7, 0x0FA9, 0x0FAB, 0x0FAB, 0x095E, 0x095C, 0x0955,\n    0x094A, 0x093A, 0x0926, 0x090D, 0x08F1, 0x08D1, 0x08AD, 0x0886,\n    0x085B, 0x082D, 0x07FC, 0x07C8, 0x0790, 0x0756, 0x0719, 0x06DA,\n    0x0698, 0x0654, 0x060E, 0x05C6, 0x057C, 0x0530, 0x04E2, 0x0493,\n    0x0443, 0x03F2, 0x039F, 0x034B, 0x02F7, 0x02A1, 0x024C, 0x01F5,\n    0x019F, 0x0148, 0x00F1, 0x009A, 0x0043, 0xFFEE, 0xFF98, 0xFF43,\n    0xFEEF, 0xFE9B, 0xFE48, 0xFDF7, 0xFDA6, 0xFD57, 0xFD0A, 0xFCBE,\n    0xFC74, 0xFC2B, 0xFBE5, 0xFBA1, 0xFB5F, 0xFB20, 0xFAE3, 0xFAA9,\n    0xFA72, 0xFA3D, 0xFA0C, 0xF9DE, 0xF9B3, 0xF98C, 0xF968, 0xF948,\n    0xF92C, 0xF913, 0xF900, 0xF8F3, 0xF8EC, 0xF8EA, 0xF8EE, 0xF8F7,\n    0xF905, 0xF917, 0xF92E, 0xF94A, 0xF969, 0xF98C, 0xF9B3, 0xF9DE,\n    0xFA0B, 0xFA3B, 0xFA6E, 0xFAA4, 0xFADC, 0xFB16, 0xFB52, 0xFB90,\n    0xFBCF, 0xFC0F, 0xFC50, 0xFC92, 0xFCD4, 0xFD17, 0xFD5A, 0xFD9C,\n    0xFDDF, 0xFE21, 0xFE62, 0xFEA2, 0xFEE1, 0xFF1E, 0xFF5A, 0xFF93,\n    0xFFCB, 0x0000, 0x0035, 0x006F, 0x00AC, 0x00EC, 0x012E, 0x0173,\n    0x01BB, 0x0204, 0x024F, 0x029C, 0x02E9, 0x0338, 0x0388, 0x03D8,\n    0x0428, 0x0478, 0x04C8, 0x0518, 0x0566, 0x05B4, 0x0600, 0x064B,\n    0x0693, 0x06DA, 0x071F, 0x0761, 0x07A0, 0x07DC, 0x0814, 0x0849,\n    0x087B, 0x08A8, 0x08D0, 0x08F5, 0x0914, 0x092E, 0x0943, 0x0952,\n    0x095B, 0x095E, 0x469B,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_79.inc.c",
    "content": "static const struct Animation anim_79[] = {\n    1,\n    189,\n    0,\n    0,\n    0x35,\n    ANIMINDEX_NUMPARTS(anim_79_indices),\n    anim_79_values,\n    anim_79_indices,\n    0,\n};\n\n\nstatic const u16 anim_79_indices[] = {\n    0x0035, 0x0001, 0x0035, 0x0036, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x006B, 0x0001, 0x0000,\n    0x0035, 0x067A, 0x0035, 0x06AF, 0x0035, 0x06E4,\n    0x0035, 0x05DB, 0x0035, 0x0610, 0x0035, 0x0645,\n    0x0035, 0x053C, 0x0035, 0x0571, 0x0035, 0x05A6,\n    0x0001, 0x0538, 0x0001, 0x0539, 0x0001, 0x053A,\n    0x0035, 0x0070, 0x0035, 0x00A5, 0x0035, 0x00DA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x006F,\n    0x0001, 0x006C, 0x0001, 0x006D, 0x0001, 0x006E,\n    0x0035, 0x0498, 0x0035, 0x04CD, 0x0035, 0x0502,\n    0x0035, 0x01E3, 0x0035, 0x0218, 0x0035, 0x024D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0035, 0x01AE,\n    0x0035, 0x010F, 0x0035, 0x0144, 0x0035, 0x0179,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0537,\n    0x0035, 0x03F9, 0x0035, 0x042E, 0x0035, 0x0463,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0035, 0x03C4,\n    0x0035, 0x0325, 0x0035, 0x035A, 0x0035, 0x038F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x053B,\n    0x0035, 0x0286, 0x0035, 0x02BB, 0x0035, 0x02F0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0285,\n    0x0001, 0x0282, 0x0001, 0x0283, 0x0001, 0x0284,\n};\n\nstatic const s16 anim_79_values[] = {\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFD,\n    0xFFF9, 0xFFF5, 0xFFF1, 0xFFEC, 0xFFE7, 0xFFE2, 0xFFDC, 0xFFD6,\n    0xFFCF, 0xFFC8, 0xFFC0, 0xFFB7, 0xFFAE, 0xFFA4, 0xFF98, 0xFF84,\n    0xFF63, 0xFF3F, 0xFF20, 0xFF10, 0xFF0C, 0xFF09, 0xFF07, 0xFF06,\n    0xFF06, 0xFF07, 0xFF08, 0xFF0A, 0xFF0D, 0xFF10, 0xFF12, 0xFF15,\n    0xFF18, 0xFF1B, 0xFF1D, 0xFF1F, 0xFF20, 0xFF20, 0x00B4, 0x00B4,\n    0x00B4, 0x00B4, 0x00B4, 0x00B4, 0x00B4, 0x00B4, 0x00B4, 0x00B4,\n    0x00B4, 0x00B4, 0x00B4, 0x00B4, 0x00B5, 0x00B5, 0x00B6, 0x00B8,\n    0x00B9, 0x00BA, 0x00BC, 0x00BD, 0x00BE, 0x00BF, 0x00BF, 0x00BF,\n    0x00BE, 0x00BD, 0x00BB, 0x00B8, 0x00AF, 0x009E, 0x008A, 0x0079,\n    0x0070, 0x006D, 0x006A, 0x0068, 0x0066, 0x0065, 0x0064, 0x0063,\n    0x0063, 0x0063, 0x0063, 0x0063, 0x0064, 0x0064, 0x0065, 0x0065,\n    0x0065, 0x0066, 0x0066, 0x3FFF, 0xF43C, 0xF0B3, 0xEF35, 0xE930,\n    0xB613, 0xB613, 0xB613, 0xB613, 0xB613, 0xB613, 0xB613, 0xB613,\n    0xB613, 0xB613, 0xB613, 0xB613, 0xB613, 0xB613, 0xB12A, 0xAB9C,\n    0xA577, 0x9ECD, 0x97AC, 0x9025, 0x8847, 0x8023, 0x77C5, 0x6F43,\n    0x66A9, 0x5E09, 0x5570, 0x4CF1, 0x4499, 0x3C79, 0x34A1, 0x2D21,\n    0x2609, 0x1F67, 0x198A, 0x149A, 0x1070, 0x0CE7, 0x09D7, 0x071C,\n    0x048E, 0x0208, 0xFF64, 0xFF33, 0x006D, 0x0070, 0x0044, 0xFFE6,\n    0xFF07, 0xFE2A, 0xFDC7, 0xFD8E, 0xFD7B, 0xD647, 0xD647, 0xD647,\n    0xD647, 0xD647, 0xD647, 0xD647, 0xD647, 0xD647, 0xD647, 0xD647,\n    0xD647, 0xD647, 0xD647, 0xD5A2, 0xD4C8, 0xD3C2, 0xD296, 0xD14D,\n    0xCFEF, 0xCE82, 0xCD0F, 0xCB9D, 0xCA35, 0xC8DD, 0xC79E, 0xC680,\n    0xC589, 0xC4C2, 0xC432, 0xC3E1, 0xC3D7, 0xC41B, 0xC4B6, 0xC684,\n    0xCA0F, 0xCEE1, 0xD483, 0xDA7F, 0xE05E, 0xE5AB, 0xE9EF, 0xECB3,\n    0xE45C, 0xD9B3, 0xDA09, 0xDD3D, 0xDE47, 0xD75D, 0xD188, 0xD5A0,\n    0xDCC3, 0xE08F, 0x270B, 0x270B, 0x270B, 0x270B, 0x270B, 0x270B,\n    0x270B, 0x270B, 0x270B, 0x270B, 0x270B, 0x270B, 0x270B, 0x270B,\n    0x2C5E, 0x3257, 0x38E8, 0x4002, 0x4796, 0x4F95, 0x57F1, 0x609B,\n    0x6985, 0x729E, 0x7BDA, 0x852B, 0x8E7E, 0x97C7, 0xA0F6, 0xA9FD,\n    0xB2CE, 0xBB59, 0xC390, 0xCB64, 0xD2CD, 0xD9D0, 0xE071, 0xE6B5,\n    0xECA1, 0xF23B, 0xF786, 0xFC88, 0x0145, 0x0183, 0xFF4C, 0xFF29,\n    0xFF4F, 0xFFA5, 0x0069, 0x0129, 0x016A, 0x0180, 0x0182, 0x0523,\n    0x0523, 0x0523, 0x0523, 0x0523, 0x0523, 0x0523, 0x0523, 0x0523,\n    0x0523, 0x0523, 0x0523, 0x0523, 0x0523, 0x04C6, 0x0461, 0x03F3,\n    0x037F, 0x0303, 0x0282, 0x01FA, 0x016E, 0x00DE, 0x0049, 0xFFB2,\n    0xFF18, 0xFE7C, 0xFDDE, 0xFD3F, 0xFC9F, 0xFC00, 0xFB62, 0xFAC5,\n    0xFA2B, 0xF992, 0xF8FD, 0xF86C, 0xF7DF, 0xF756, 0xF6D4, 0xF657,\n    0xF5E1, 0xF572, 0xF50B, 0xF4AC, 0xF456, 0xF40A, 0xF3C8, 0xF391,\n    0xF365, 0xF345, 0xF331, 0xF32A, 0x1CCE, 0x1CCE, 0x1CCE, 0x1CCE,\n    0x1CCE, 0x1CCE, 0x1CCE, 0x1CCE, 0x1CCE, 0x1CCE, 0x1CCE, 0x1CCE,\n    0x1CCE, 0x1CCE, 0x1C58, 0x1BD6, 0x1B4B, 0x1AB6, 0x1A19, 0x1974,\n    0x18C8, 0x1815, 0x175D, 0x169F, 0x15DE, 0x1519, 0x1452, 0x1389,\n    0x12BE, 0x11F3, 0x1128, 0x105F, 0x0F97, 0x0ED2, 0x0E10, 0x0D51,\n    0x0C98, 0x0BE4, 0x0B37, 0x0A90, 0x09F1, 0x095B, 0x08CD, 0x084A,\n    0x07D1, 0x0764, 0x0703, 0x06AF, 0x0668, 0x0630, 0x0607, 0x05EE,\n    0x05E5, 0xDE1E, 0xDE1E, 0xDE1E, 0xDE1E, 0xDE1E, 0xDE1E, 0xDE1E,\n    0xDE1E, 0xDE1E, 0xDE1E, 0xDE1E, 0xDE1E, 0xDE1E, 0xDE1E, 0xDE87,\n    0xDEFA, 0xDF76, 0xDFFA, 0xE085, 0xE118, 0xE1B1, 0xE24F, 0xE2F3,\n    0xE39A, 0xE446, 0xE4F5, 0xE5A5, 0xE658, 0xE70C, 0xE7C0, 0xE874,\n    0xE927, 0xE9D8, 0xEA87, 0xEB33, 0xEBDC, 0xEC80, 0xED20, 0xEDBA,\n    0xEE4E, 0xEEDB, 0xEF60, 0xEFDE, 0xF052, 0xF0BD, 0xF11E, 0xF174,\n    0xF1BF, 0xF1FE, 0xF22F, 0xF254, 0xF26A, 0xF272, 0xEC72, 0xEC72,\n    0xEC72, 0xEC72, 0xEC72, 0xEC72, 0xEC72, 0xEC72, 0xEC72, 0xEC72,\n    0xEC72, 0xEC72, 0xEC72, 0xEC72, 0xED17, 0xEDDD, 0xEEBF, 0xEFBA,\n    0xF0CA, 0xF1EB, 0xF318, 0xF44E, 0xF589, 0xF6C4, 0xF7FC, 0xF92C,\n    0xFA52, 0xFB67, 0xFC6A, 0xFD55, 0xFE24, 0xFED5, 0xFF61, 0xFFC7,\n    0x0000, 0xFFFF, 0xFFBA, 0xFF3B, 0xFE88, 0xFDAB, 0xFCAB, 0xFB91,\n    0xFA64, 0xF92D, 0xF7F5, 0xF6C3, 0xF59F, 0xF491, 0xF3A3, 0xF2DB,\n    0xF242, 0xF1E0, 0xF1BE, 0x3185, 0x3185, 0x3185, 0x3185, 0x3185,\n    0x3185, 0x3185, 0x3185, 0x3185, 0x3185, 0x3185, 0x3185, 0x3185,\n    0x3185, 0x2DD4, 0x296A, 0x245C, 0x1EC1, 0x18B0, 0x1240, 0x0B88,\n    0x049D, 0xFD99, 0xF690, 0xEF99, 0xE8CC, 0xE23E, 0xDC08, 0xD63F,\n    0xD0FB, 0xCC52, 0xC85A, 0xC52C, 0xC2DD, 0xC185, 0xC17B, 0xC2EC,\n    0xC5AA, 0xC986, 0xCE53, 0xD3E3, 0xDA08, 0xE095, 0xE75B, 0xEE2E,\n    0xF4DE, 0xFB3F, 0x0121, 0x0659, 0x0AB7, 0x0E0F, 0x1032, 0x10F3,\n    0x33A3, 0x33A3, 0x33A3, 0x33A3, 0x33A3, 0x33A3, 0x33A3, 0x33A3,\n    0x33A3, 0x33A3, 0x33A3, 0x33A3, 0x33A3, 0x33A3, 0x32D3, 0x31DC,\n    0x30C4, 0x2F8E, 0x2E3F, 0x2CDC, 0x2B69, 0x29EC, 0x2867, 0x26E2,\n    0x255E, 0x23E3, 0x2273, 0x2114, 0x1FCA, 0x1E9A, 0x1D88, 0x1C9A,\n    0x1BD3, 0x1B38, 0x1ACE, 0x1AA3, 0x1ABF, 0x1B17, 0x1BA5, 0x1C60,\n    0x1D40, 0x1E3D, 0x1F4F, 0x206D, 0x2190, 0x22AF, 0x23C2, 0x24C1,\n    0x25A4, 0x2663, 0x26F5, 0x2753, 0x2774, 0x1462, 0x1462, 0x1462,\n    0x1462, 0x1462, 0x1462, 0x1462, 0x1462, 0x1462, 0x1462, 0x1462,\n    0x1462, 0x1462, 0x1462, 0x111B, 0x0D2D, 0x08AB, 0x03AB, 0xFE42,\n    0xF883, 0xF282, 0xEC56, 0xE612, 0xDFCC, 0xD997, 0xD388, 0xCDB5,\n    0xC831, 0xC311, 0xBE6A, 0xBA51, 0xB6D9, 0xB419, 0xB223, 0xB10E,\n    0xB12C, 0xB2A7, 0xB554, 0xB909, 0xBD9C, 0xC2E2, 0xC8B0, 0xCEDC,\n    0xD53C, 0xDBA4, 0xE1EA, 0xE7E4, 0xED68, 0xF24A, 0xF661, 0xF981,\n    0xFB80, 0xFC34, 0x01ED, 0x04A0, 0xAEA8, 0x2537, 0x1714, 0x1714,\n    0x1714, 0x1714, 0x1714, 0x1714, 0x1714, 0x1714, 0x1714, 0x1714,\n    0x1714, 0x1714, 0x1714, 0x1714, 0x16A4, 0x162B, 0x15A8, 0x151C,\n    0x1489, 0x13ED, 0x134C, 0x12A4, 0x11F7, 0x1145, 0x108F, 0x0FD6,\n    0x0F1B, 0x0E5E, 0x0DA0, 0x0CE1, 0x0C23, 0x0B65, 0x0AA9, 0x09F0,\n    0x093A, 0x0887, 0x07D9, 0x0730, 0x068D, 0x05F0, 0x055B, 0x04CE,\n    0x0449, 0x03CE, 0x035C, 0x02F6, 0x029B, 0x024B, 0x0209, 0x01D4,\n    0x01AE, 0x0196, 0x018E, 0x112E, 0x112E, 0x112E, 0x112E, 0x112E,\n    0x112E, 0x112E, 0x112E, 0x112E, 0x112E, 0x112E, 0x112E, 0x112E,\n    0x112E, 0x10ED, 0x10A7, 0x105B, 0x100A, 0x0FB4, 0x0F5A, 0x0EFC,\n    0x0E9B, 0x0E37, 0x0DCF, 0x0D66, 0x0CFB, 0x0C8E, 0x0C20, 0x0BB2,\n    0x0B43, 0x0AD5, 0x0A67, 0x09FA, 0x098F, 0x0925, 0x08BD, 0x0858,\n    0x07F6, 0x0798, 0x073D, 0x06E6, 0x0694, 0x0647, 0x0600, 0x05BE,\n    0x0582, 0x054D, 0x0520, 0x04F9, 0x04DB, 0x04C4, 0x04B6, 0x04B2,\n    0xBAFA, 0xBAFA, 0xBAFA, 0xBAFA, 0xBAFA, 0xBAFA, 0xBAFA, 0xBAFA,\n    0xBAFA, 0xBAFA, 0xBAFA, 0xBAFA, 0xBAFA, 0xBAFA, 0xBB35, 0xBB75,\n    0xBBBA, 0xBC04, 0xBC52, 0xBCA4, 0xBCFA, 0xBD53, 0xBDAF, 0xBE0D,\n    0xBE6D, 0xBECE, 0xBF32, 0xBF96, 0xBFFA, 0xC05F, 0xC0C4, 0xC128,\n    0xC18C, 0xC1EE, 0xC24E, 0xC2AD, 0xC309, 0xC362, 0xC3B9, 0xC40B,\n    0xC45A, 0xC4A5, 0xC4EB, 0xC52D, 0xC569, 0xC59F, 0xC5CF, 0xC5F9,\n    0xC61C, 0xC638, 0xC64D, 0xC659, 0xC65D, 0xF6E3, 0xF6E3, 0xF6E3,\n    0xF6E3, 0xF6E3, 0xF6E3, 0xF6E3, 0xF6E3, 0xF6E3, 0xF6E3, 0xF6E3,\n    0xF6E3, 0xF6E3, 0xF6E3, 0xF6DD, 0xF6D6, 0xF6CE, 0xF6C5, 0xF6BB,\n    0xF6B1, 0xF6A6, 0xF69B, 0xF68F, 0xF684, 0xF678, 0xF66D, 0xF662,\n    0xF658, 0xF64F, 0xF646, 0xF63E, 0xF637, 0xF632, 0xF62E, 0xF62B,\n    0xF62B, 0xF62B, 0xF62B, 0xF62B, 0xF62B, 0xF62B, 0xF62B, 0xF62B,\n    0xF62B, 0xF62B, 0xF62B, 0xF62B, 0xF62B, 0xF62B, 0xF62B, 0xF62B,\n    0xF62B, 0xF62B, 0x03C3, 0x03C3, 0x03C3, 0x03C3, 0x03C3, 0x03C3,\n    0x03C3, 0x03C3, 0x03C3, 0x03C3, 0x03C3, 0x03C3, 0x03C3, 0x03C3,\n    0x03A0, 0x0376, 0x0345, 0x0310, 0x02D5, 0x0297, 0x0256, 0x0213,\n    0x01CF, 0x018B, 0x0147, 0x0105, 0x00C5, 0x0088, 0x004F, 0x001B,\n    0xFFEE, 0xFFC6, 0xFFA5, 0xFF8D, 0xFF7E, 0xFF79, 0xFF79, 0xFF79,\n    0xFF79, 0xFF79, 0xFF79, 0xFF79, 0xFF79, 0xFF79, 0xFF79, 0xFF79,\n    0xFF79, 0xFF79, 0xFF79, 0xFF79, 0xFF79, 0xFF79, 0xFF79, 0xD4BE,\n    0xD4BE, 0xD4BE, 0xD4BE, 0xD4BE, 0xD4BE, 0xD4BE, 0xD4BE, 0xD4BE,\n    0xD4BE, 0xD4BE, 0xD4BE, 0xD4BE, 0xD4BE, 0xD42C, 0xD37D, 0xD2B4,\n    0xD1D4, 0xD0E2, 0xCFE0, 0xCED2, 0xCDBC, 0xCCA2, 0xCB86, 0xCA6D,\n    0xC959, 0xC84F, 0xC752, 0xC666, 0xC58D, 0xC4CC, 0xC426, 0xC39F,\n    0xC33B, 0xC2FB, 0xC2E6, 0xC2E6, 0xC2E6, 0xC2E6, 0xC2E6, 0xC2E6,\n    0xC2E6, 0xC2E6, 0xC2E6, 0xC2E6, 0xC2E6, 0xC2E6, 0xC2E6, 0xC2E6,\n    0xC2E6, 0xC2E6, 0xC2E6, 0xC2E6, 0x52B4, 0x52B4, 0x52B4, 0x52B4,\n    0x52B4, 0x52B4, 0x52B4, 0x52B4, 0x52B4, 0x52B4, 0x52B4, 0x52B4,\n    0x52B4, 0x52B4, 0x50A8, 0x4E49, 0x4BA0, 0x48B7, 0x4596, 0x4246,\n    0x3ED1, 0x3B3E, 0x3797, 0x33E5, 0x3030, 0x2C82, 0x28E3, 0x255C,\n    0x21F6, 0x1EBA, 0x1BB1, 0x18E4, 0x165B, 0x141F, 0x123A, 0x10B4,\n    0x0FAB, 0x0F2F, 0x0F2E, 0x0F99, 0x105F, 0x1172, 0x12C0, 0x143B,\n    0x15D1, 0x1773, 0x1912, 0x1A9C, 0x1C03, 0x1D35, 0x1E24, 0x1EBF,\n    0x1EF6, 0x8AC1, 0x8AC1, 0x8AC1, 0x8AC1, 0x8AC1, 0x8AC1, 0x8AC1,\n    0x8AC1, 0x8AC1, 0x8AC1, 0x8AC1, 0x8AC1, 0x8AC1, 0x8AC1, 0x896F,\n    0x87C6, 0x85D3, 0x83A3, 0x8144, 0x7EC0, 0x7C2A, 0x798D, 0x76F7,\n    0x7474, 0x7212, 0x6FDF, 0x6DE8, 0x6C3A, 0x6AE3, 0x69E3, 0x6931,\n    0x68C4, 0x6894, 0x6898, 0x68C7, 0x691A, 0x6989, 0x6A14, 0x6ABA,\n    0x6B7A, 0x6C53, 0x6D44, 0x6E4D, 0x6F6B, 0x709E, 0x71E6, 0x7341,\n    0x75D0, 0x7978, 0x7C5C, 0x7DFD, 0x7F0B, 0x7F6B, 0x9169, 0x9169,\n    0x9169, 0x9169, 0x9169, 0x9169, 0x9169, 0x9169, 0x9169, 0x9169,\n    0x9169, 0x9169, 0x9169, 0x9169, 0x9190, 0x919B, 0x9192, 0x9180,\n    0x916F, 0x9169, 0x9178, 0x91A6, 0x91FD, 0x9286, 0x934D, 0x945A,\n    0x95B8, 0x9771, 0x9ABE, 0xA035, 0xA6EF, 0xAE04, 0xB48C, 0xB9A0,\n    0xBC58, 0xBBCB, 0xB848, 0xB2F4, 0xAC24, 0xA431, 0x9B72, 0x923E,\n    0x88ED, 0x7FD3, 0x774E, 0x6FB2, 0x6956, 0x6818, 0x6BA0, 0x6DF2,\n    0x6C26, 0x691D, 0x6782, 0x0EAC, 0x0EAC, 0x0EAC, 0x0EAC, 0x0EAC,\n    0x0EAC, 0x0EAC, 0x0EAC, 0x0EAC, 0x0EAC, 0x0EAC, 0x0EAC, 0x0EAC,\n    0x0EAC, 0x10CD, 0x1398, 0x16EE, 0x1AB1, 0x1EC5, 0x230A, 0x2763,\n    0x2BB1, 0x2FD8, 0x33B8, 0x3734, 0x3A2E, 0x3C88, 0x3E25, 0x3E7C,\n    0x3D53, 0x3AFE, 0x37D1, 0x3420, 0x303F, 0x2C82, 0x293E, 0x2638,\n    0x2309, 0x1FBF, 0x1C66, 0x190D, 0x15C1, 0x1290, 0x0F87, 0x0CB4,\n    0x0A24, 0x07E5, 0x07E8, 0x0A56, 0x0C8D, 0x0DF3, 0x0F41, 0x0FD5,\n    0x8001, 0x8001, 0x8002, 0x8002, 0x8002, 0x8002, 0x8002, 0x8002,\n    0x8002, 0x8002, 0x8002, 0x8002, 0x8002, 0x8001, 0x7FFE, 0x7FFE,\n    0x7FFE, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFD, 0x7FFD, 0x7FFD, 0x7FFD,\n    0x7FFD, 0x7FFC, 0x7FFC, 0x7FFC, 0x7FFC, 0x7FFC, 0x7FFB, 0x7FFB,\n    0x7FFB, 0x7FFB, 0x7FFA, 0x7FFA, 0x7FFA, 0x7FFA, 0x7FFA, 0x7FFA,\n    0x7FF9, 0x7FF9, 0x7FF9, 0x7FF9, 0x7FF9, 0x7FF9, 0x7FF9, 0x7FF8,\n    0x7FF8, 0x7FF8, 0x7FF8, 0x7FF8, 0x7FF8, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x7F6F, 0x7ED3, 0x7E2A, 0x7D77, 0x7CB8,\n    0x7BF1, 0x7B20, 0x7A48, 0x7969, 0x7885, 0x779B, 0x76AD, 0x75BC,\n    0x74C8, 0x73D3, 0x72DE, 0x71E9, 0x70F5, 0x7003, 0x6F14, 0x6E2A,\n    0x6D44, 0x6C64, 0x6B8A, 0x6AB8, 0x69EF, 0x692F, 0x6879, 0x67CE,\n    0x672F, 0x669D, 0x6619, 0x65A3, 0x653E, 0x64E8, 0x64A4, 0x6473,\n    0x6454, 0x644A, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171,\n    0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171,\n    0x4171, 0x4171, 0x4171, 0x4170, 0x4170, 0x4170, 0x4170, 0x4170,\n    0x4170, 0x4170, 0x4170, 0x4170, 0x4170, 0x4170, 0x4170, 0x4170,\n    0x4170, 0x4170, 0x416F, 0x416F, 0x416F, 0x416F, 0x416F, 0x416F,\n    0x416F, 0x416F, 0x416F, 0x416F, 0x416F, 0x416F, 0x416F, 0x416F,\n    0x416F, 0x416F, 0x416F, 0x416F, 0x416F, 0x416F, 0x416F, 0xBF5F,\n    0x8001, 0x8001, 0x4171, 0xBF5F, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0002, 0x0008, 0x0011, 0x001C, 0x0029, 0x0035,\n    0x0040, 0x0049, 0x004F, 0x0052, 0x0050, 0x0048, 0x0039, 0x0022,\n    0x0003, 0xFDC3, 0xFB77, 0xF939, 0xF6F1, 0xF488, 0xF1E6, 0xEEEC,\n    0xEBB3, 0xE879, 0xE57C, 0xE2D8, 0xE06A, 0xDE0B, 0xDB99, 0xD8ED,\n    0xD5AA, 0xD22D, 0xCF66, 0xCD3C, 0xCB11, 0xC912, 0xC76D, 0xC64F,\n    0xC5E5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFD2,\n    0xFFA7, 0xFF7C, 0xFF50, 0xFF21, 0xFEEC, 0xFEAF, 0xFE69, 0xFE16,\n    0xFDB6, 0xFD45, 0xFCC2, 0xFC2A, 0xFB7C, 0xFAB5, 0xF2BF, 0xF565,\n    0xF9A7, 0xFE3B, 0x01D2, 0x0323, 0x0050, 0xFA50, 0xF411, 0xF083,\n    0xF05D, 0xF1DC, 0xF42F, 0xF689, 0xF81B, 0xF81B, 0xF764, 0xF79A,\n    0xF94D, 0xFBAD, 0xFE49, 0x00B0, 0x0273, 0x0323, 0x0074, 0x0074,\n    0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074, 0x0074,\n    0x0074, 0x0074, 0x0074, 0x0074, 0x0073, 0x006F, 0x006B, 0x0065,\n    0x005F, 0x0059, 0x0053, 0x004F, 0x004C, 0x004A, 0x004C, 0x0050,\n    0x0058, 0x0063, 0x0074, 0x019E, 0x0231, 0x0298, 0x0308, 0x03B4,\n    0x04CF, 0x06F3, 0x09DF, 0x0C83, 0x0DD1, 0x0D63, 0x0BED, 0x0A09,\n    0x084F, 0x0757, 0x0821, 0x09F2, 0x0ACE, 0x0A2B, 0x0900, 0x0799,\n    0x063D, 0x0537, 0x04CF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xFFED, 0xFFB7, 0xFF68, 0xFF09, 0xFEA0, 0xFE38, 0xFDD8,\n    0xFD89, 0xFD54, 0xFD40, 0xFD57, 0xFDA1, 0xFE26, 0xFEEF, 0x0003,\n    0x0254, 0x0659, 0x0B67, 0x10D3, 0x15F1, 0x1A18, 0x1CEF, 0x1ED9,\n    0x2041, 0x2193, 0x2310, 0x24AA, 0x2657, 0x280E, 0x29C7, 0x2B78,\n    0x2D18, 0x2E9E, 0x3001, 0x3138, 0x323A, 0x32FD, 0x3379, 0x33A4,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFF7B, 0xFECE,\n    0xFE01, 0xFD1A, 0xFC20, 0xFB18, 0xFA0A, 0xF8FD, 0xF7F6, 0xF6FC,\n    0xF616, 0xF54B, 0xF4A0, 0xF41D, 0xF3C7, 0xF418, 0xF544, 0xF6EB,\n    0xF8AF, 0xFA31, 0xFB12, 0xFAD3, 0xF9B8, 0xF88C, 0xF81B, 0xF85B,\n    0xF8B9, 0xF92F, 0xF9B9, 0xFA50, 0xFAEF, 0xFB8F, 0xFC2D, 0xFCC2,\n    0xFD48, 0xFDBA, 0xFE12, 0xFE4B, 0xFE60, 0xF697, 0xF697, 0xF697,\n    0xF697, 0xF697, 0xF697, 0xF697, 0xF697, 0xF697, 0xF697, 0xF697,\n    0xF697, 0xF697, 0xF697, 0xF697, 0xF697, 0xF697, 0xF697, 0xF697,\n    0xF697, 0xF697, 0xF697, 0xF697, 0xF697, 0xF697, 0xF697, 0xF697,\n    0xF697, 0xF697, 0xF696, 0xF692, 0xF68F, 0xF68D, 0xF690, 0xF698,\n    0xF6AC, 0xF6CB, 0xF6EC, 0xF709, 0xF721, 0xF73C, 0xF758, 0xF775,\n    0xF792, 0xF7AE, 0xF7CA, 0xF7E4, 0xF7FB, 0xF810, 0xF821, 0xF82E,\n    0xF837, 0xF83A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFD, 0xFFFD, 0xFFFC,\n    0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFD, 0xFFFF, 0x0000, 0x0003,\n    0x000A, 0x0012, 0x001B, 0x0024, 0x002B, 0x002F, 0x0032, 0x0035,\n    0x0037, 0x0039, 0x003A, 0x003C, 0x003D, 0x003E, 0x003F, 0x0040,\n    0x0041, 0x0042, 0x0042, 0x0042, 0x0043, 0x0043, 0x0043, 0x0D09,\n    0x0D09, 0x0D09, 0x0D09, 0x0D09, 0x0D09, 0x0D09, 0x0D09, 0x0D09,\n    0x0D09, 0x0D09, 0x0D09, 0x0D09, 0x0D09, 0x0DE1, 0x0EC7, 0x0FBF,\n    0x10CA, 0x11EC, 0x1325, 0x1479, 0x15E9, 0x1779, 0x1929, 0x1AFD,\n    0x1CF6, 0x1F17, 0x2162, 0x23DA, 0x2770, 0x2C9E, 0x32AE, 0x38EC,\n    0x3EA4, 0x431F, 0x45AB, 0x46D7, 0x47B2, 0x4843, 0x4894, 0x48AB,\n    0x4892, 0x4851, 0x47EF, 0x4774, 0x46EA, 0x4658, 0x45C5, 0x453B,\n    0x44C2, 0x4461, 0x4421, 0x440A, 0x40A1, 0x40A1, 0x40A1, 0x40A1,\n    0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1,\n    0x40A1, 0x40A1, 0x40A1, 0x40A0, 0x40A0, 0x409F, 0x409E, 0x409D,\n    0x409C, 0x409C, 0x409B, 0x409B, 0x409B, 0x409C, 0x409C, 0x409E,\n    0x40A0, 0x40A4, 0x40AB, 0x40B4, 0x40BE, 0x40C7, 0x40CF, 0x40D4,\n    0x40D6, 0x40D9, 0x40DB, 0x40DD, 0x40DF, 0x40E1, 0x40E2, 0x40E3,\n    0x40E4, 0x40E5, 0x40E6, 0x40E6, 0x40E7, 0x40E7, 0x40E7, 0x40E7,\n    0x40E7,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_7A.inc.c",
    "content": "static const struct Animation anim_7A[] = {\n    0,\n    189,\n    0,\n    0,\n    0x06,\n    ANIMINDEX_NUMPARTS(anim_7A_indices),\n    anim_7A_values,\n    anim_7A_indices,\n    0,\n};\n\n\nstatic const u16 anim_7A_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0006, 0x0002, 0x0001, 0x0000, 0x0001, 0x0008, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0006, 0x00BD, 0x0006, 0x00C3,\n    0x0006, 0x00AB, 0x0006, 0x00B1, 0x0006, 0x00B7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0006, 0x00A5,\n    0x0001, 0x00A1, 0x0001, 0x00A2, 0x0001, 0x00A3,\n    0x0006, 0x0021, 0x0006, 0x0027, 0x0006, 0x002D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0006, 0x001B,\n    0x0006, 0x0009, 0x0006, 0x000F, 0x0006, 0x0015,\n    0x0001, 0x009D, 0x0001, 0x009E, 0x0001, 0x009F,\n    0x0006, 0x003C, 0x0006, 0x0042, 0x0006, 0x0048,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0006, 0x0036,\n    0x0001, 0x0033, 0x0001, 0x0034, 0x0001, 0x0035,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00A0,\n    0x0006, 0x008B, 0x0006, 0x0091, 0x0006, 0x0097,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x008A,\n    0x0006, 0x0078, 0x0006, 0x007E, 0x0006, 0x0084,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00A4,\n    0x0006, 0x0066, 0x0006, 0x006C, 0x0006, 0x0072,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0006, 0x0060,\n    0x0006, 0x004E, 0x0006, 0x0054, 0x0006, 0x005A,\n};\n\nstatic const s16 anim_7A_values[] = {\n    0x0000, 0x00B4, 0x0000, 0x0020, 0x001D, 0x0008, 0xFFF7, 0xFFFF,\n    0x3FFF, 0xF43C, 0xF066, 0xEF29, 0xEE78, 0xEEC7, 0xF43C, 0xF0B3,\n    0xE82E, 0xE730, 0xE7AF, 0xE957, 0xF0B3, 0xEF35, 0xF2F1, 0xEEDE,\n    0xE976, 0xE641, 0xEF35, 0xE930, 0xCFED, 0xF16B, 0xE998, 0xD94C,\n    0xE707, 0xB613, 0xBC17, 0xC743, 0xCD47, 0xC1AD, 0xB613, 0xD647,\n    0xD8EE, 0xDDDB, 0xE082, 0xDB65, 0xD647, 0x270B, 0x20D8, 0x1555,\n    0x0F22, 0x1B17, 0x270B, 0x0523, 0x1CCE, 0xDE1E, 0xEC72, 0xCEB4,\n    0xD181, 0xDBC3, 0xEAC0, 0xEC72, 0x3185, 0x4F4E, 0x75C9, 0x5C8D,\n    0x5FD9, 0x3185, 0x33A3, 0x2452, 0x3819, 0x35DF, 0x30D1, 0x33A3,\n    0x1462, 0x34B3, 0x4E41, 0x3072, 0x33CF, 0x1462, 0x01ED, 0x039A,\n    0x046C, 0x03B4, 0xFC22, 0x01ED, 0x04A0, 0x0497, 0x0488, 0x045D,\n    0x03AF, 0x04A0, 0xAEA8, 0xAF10, 0xB1C9, 0xB4CC, 0xB6F9, 0xAEA8,\n    0x2537, 0x2B53, 0x2A7D, 0x2897, 0x268D, 0x254C, 0x1714, 0x1AE5,\n    0x190C, 0x12D1, 0x0E60, 0x15DE, 0x112E, 0x16A9, 0x1B5D, 0x16CB,\n    0x1189, 0x1110, 0xBAFA, 0xC3D2, 0xBF29, 0xB249, 0xA937, 0xB882,\n    0xF6E3, 0xF659, 0xF575, 0xF672, 0xF77C, 0xF6E3, 0x03C3, 0xFE06,\n    0x00BA, 0xFD60, 0xFB06, 0x03C3, 0xD4BE, 0xBCF5, 0xC69F, 0xB8F0,\n    0xAFCD, 0xD4BE, 0x52B4, 0x8AC1, 0x8412, 0x7C48, 0x7D5F, 0x81FB,\n    0x8AC1, 0x9169, 0x90B7, 0x8F4F, 0x8CFE, 0x8BBC, 0x9169, 0x0EAC,\n    0x1263, 0x1619, 0x1A32, 0x1CA4, 0x0EAC, 0x8001, 0x8001, 0x4171,\n    0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x0074, 0x1332, 0x00F9,\n    0xEFB6, 0x0831, 0x0074, 0x0000, 0x0000, 0xF548, 0x02DB, 0x0F7A,\n    0x0243, 0x0000, 0x0000, 0x024B, 0x0378, 0x03AF, 0x0076, 0xF697,\n    0xF21C, 0xF95E, 0xFA2A, 0xF956, 0xF6EB, 0x0D09, 0x0F47, 0x1184,\n    0x1184, 0x1184, 0x1184, 0x40A1, 0x3C5A, 0x3FC9, 0x448A, 0x478E,\n    0x4194,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_7B.inc.c",
    "content": "static const struct Animation anim_7B[] = {\n    1,\n    189,\n    0,\n    0,\n    0x1E,\n    ANIMINDEX_NUMPARTS(anim_7B_indices),\n    anim_7B_values,\n    anim_7B_indices,\n    0,\n};\n\n\nstatic const u16 anim_7B_indices[] = {\n    0x0001, 0x0000, 0x001E, 0x0001, 0x001E, 0x001F, 0x0001, 0x0000, 0x0001, 0x003D, 0x0001, 0x0000,\n    0x001E, 0x0442, 0x001E, 0x0460, 0x001E, 0x047E,\n    0x001E, 0x03E8, 0x001E, 0x0406, 0x001E, 0x0424,\n    0x001E, 0x038E, 0x001E, 0x03AC, 0x001E, 0x03CA,\n    0x0001, 0x034F, 0x0001, 0x0350, 0x0001, 0x0351,\n    0x001E, 0x005E, 0x001E, 0x007C, 0x001E, 0x009A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0040,\n    0x0001, 0x0000, 0x0001, 0x003E, 0x0001, 0x003F,\n    0x0001, 0x032E, 0x0001, 0x032F, 0x0001, 0x0330,\n    0x001E, 0x0130, 0x001E, 0x014E, 0x001E, 0x016C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0112,\n    0x001E, 0x00B8, 0x001E, 0x00D6, 0x001E, 0x00F4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0331,\n    0x001E, 0x02D4, 0x001E, 0x02F2, 0x001E, 0x0310,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x02B6,\n    0x001E, 0x025C, 0x001E, 0x027A, 0x001E, 0x0298,\n    0x001E, 0x0352, 0x0001, 0x0000, 0x001E, 0x0370,\n    0x001E, 0x0202, 0x001E, 0x0220, 0x001E, 0x023E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x01E4,\n    0x001E, 0x018A, 0x001E, 0x01A8, 0x001E, 0x01C6,\n};\n\nstatic const s16 anim_7B_values[] = {\n    0x0000, 0x00AA, 0x006D, 0x0030, 0x0036, 0x0042, 0x0047, 0x003D,\n    0x0034, 0x0038, 0x003A, 0x0034, 0x0034, 0x0038, 0x0038, 0x0036,\n    0x0036, 0x0037, 0x0039, 0x003C, 0x003F, 0x004C, 0x006C, 0x0076,\n    0x0081, 0x008B, 0x0095, 0x009D, 0x00A3, 0x00A8, 0x00AA, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FFF, 0xF97C, 0xED8C,\n    0xD517, 0xD517, 0xCCC1, 0xC911, 0xC65B, 0xC569, 0xC97A, 0xCDC0,\n    0xCAD2, 0xC7E3, 0xCF96, 0xD12A, 0xD28D, 0xD399, 0xD42A, 0xD41B,\n    0xD346, 0xCE14, 0xC65F, 0xC432, 0xD491, 0xE39B, 0xE2FC, 0xE057,\n    0xDC51, 0xD792, 0xD2BE, 0xCE7E, 0xCB77, 0xCA4F, 0xD16E, 0xD16E,\n    0xCE74, 0xCF0B, 0xCF9A, 0xD026, 0xD0B4, 0xD149, 0xD1E9, 0xD297,\n    0xD35A, 0xD435, 0xD52D, 0xD647, 0xD786, 0xD8EF, 0xDA88, 0xDD4D,\n    0xE19E, 0xE68E, 0xEB32, 0xEE9E, 0xF113, 0xF364, 0xF582, 0xF75F,\n    0xF8EC, 0xFA1A, 0xFADA, 0xFB1D, 0xDE5F, 0xDE5F, 0xE001, 0xE1D6,\n    0xE3E7, 0xE626, 0xE880, 0xEAE6, 0xED46, 0xEF90, 0xF1B3, 0xF39F,\n    0xF543, 0xF68E, 0xF770, 0xF7D8, 0xF7B5, 0xF493, 0xED8D, 0xE4E8,\n    0xDCEC, 0xD7DD, 0xD57A, 0xD3E4, 0xD2F5, 0xD287, 0xD273, 0xD294,\n    0xD2C4, 0xD2DC, 0x098D, 0x098D, 0x0DB0, 0x0BE9, 0x0A07, 0x080D,\n    0x05FF, 0x03E0, 0x01B2, 0xFF7A, 0xFD39, 0xFAF4, 0xF8AC, 0xF667,\n    0xF426, 0xF1ED, 0xEFBE, 0xED8E, 0xEB52, 0xE915, 0xE6E1, 0xE4BF,\n    0xE277, 0xDFE6, 0xDD3B, 0xDAA5, 0xD851, 0xD66E, 0xD52A, 0xD4B4,\n    0x0000, 0x0000, 0x0000, 0xFFF6, 0xFFD9, 0xFFAF, 0xFF7C, 0xFF46,\n    0xFF12, 0xFEE5, 0xFEC3, 0xFEB1, 0xFEB5, 0xFED4, 0xFF12, 0xFF75,\n    0x0000, 0x0223, 0x0605, 0x09BE, 0x0B68, 0x0000, 0xFF08, 0xFE93,\n    0xFE84, 0xFEBC, 0xFF1C, 0xFF87, 0xFFDD, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xFFED, 0xFFB8, 0xFF6B, 0xFF0F, 0xFEAD, 0xFE4E, 0xFDFB,\n    0xFDBE, 0xFD9E, 0xFDA5, 0xFDDD, 0xFE4E, 0xFF02, 0x0000, 0x03E5,\n    0x0AF7, 0x11BF, 0x14C7, 0x0000, 0xFE3C, 0xFD68, 0xFD4C, 0xFDB1,\n    0xFE61, 0xFF23, 0xFFC0, 0x0000, 0xEB59, 0xEB59, 0xE7D7, 0xE79C,\n    0xE761, 0xE72A, 0xE6F8, 0xE6CE, 0xE6AC, 0xE696, 0xE68D, 0xE693,\n    0xE6AA, 0xE6D4, 0xE713, 0xE769, 0xE7D7, 0xE91B, 0xEB74, 0xEE2C,\n    0xF08C, 0xF1AA, 0xF239, 0xF2D2, 0xF36D, 0xF400, 0xF483, 0xF4EB,\n    0xF530, 0xF549, 0xDDE7, 0xDDE7, 0xDD0D, 0xD88F, 0xD377, 0xCFBE,\n    0xD380, 0xCF21, 0xC96E, 0xC6D3, 0xD52B, 0xD6F0, 0xD798, 0xD797,\n    0xD762, 0xD76C, 0xD829, 0xDA45, 0xDD6B, 0xE095, 0xE2BC, 0xE2D8,\n    0xE0BA, 0xDD38, 0xD8D7, 0xD41A, 0xCF85, 0xCB9C, 0xC8E3, 0xC7DD,\n    0x97D3, 0x97D3, 0xA71F, 0xA756, 0xA75D, 0xA736, 0xA6E4, 0xA668,\n    0xA5C7, 0xA502, 0xA41B, 0xA316, 0xA1F6, 0xA0BB, 0x9F6B, 0x9E06,\n    0x9C8F, 0x9A70, 0x9603, 0x8DBA, 0x7199, 0xFAE8, 0xEA1B, 0xEF9E,\n    0xF220, 0xF664, 0xFB6E, 0x0040, 0x03DE, 0x054B, 0x2FF3, 0x2FF3,\n    0x3101, 0x342A, 0x3769, 0x3AB8, 0x3E13, 0x4177, 0x44DF, 0x4847,\n    0x4BAA, 0x4F04, 0x5251, 0x558D, 0x58B4, 0x5BC0, 0x5EAF, 0x6199,\n    0x6349, 0x61C3, 0x4F86, 0x27E7, 0x2764, 0x2CE6, 0x2D29, 0x2D0F,\n    0x2CBC, 0x2C55, 0x2BFC, 0x2BD6, 0x5725, 0x5725, 0x633A, 0x65E7,\n    0x6892, 0x6B35, 0x6DCA, 0x704B, 0x72B1, 0x74F6, 0x7714, 0x7904,\n    0x7AC0, 0x7C42, 0x7D83, 0x7E7D, 0x7F2A, 0x7C31, 0x749E, 0x6C00,\n    0x5F59, 0xD6DD, 0xC26A, 0xC6C7, 0xC661, 0xC748, 0xC8F1, 0xCACF,\n    0xCC55, 0xCCF6, 0xFFAC, 0xFFAC, 0xFFB6, 0xFFC9, 0xFFDD, 0xFFFB,\n    0x0038, 0x0073, 0x0077, 0x0079, 0x00C7, 0x00D3, 0x0104, 0x012F,\n    0x012A, 0x00C9, 0xFFE1, 0xFD7E, 0xF9CC, 0xF64A, 0xF478, 0xFD79,\n    0xFF00, 0xFF7F, 0xFF83, 0xFF9B, 0xFFD8, 0xFFF6, 0x0000, 0x0000,\n    0xFF3D, 0xFF3D, 0xFF3E, 0xFF3D, 0xFF3C, 0xFF3E, 0xFF4B, 0xFF53,\n    0xFF44, 0xFF35, 0xFF54, 0xFF53, 0xFF52, 0xFF4F, 0xFF4A, 0xFF40,\n    0xFF32, 0xFF4C, 0xFF7C, 0xFF66, 0xFEAE, 0xF96F, 0xF92F, 0xF99D,\n    0xFA66, 0xFB36, 0xFC3C, 0xFD8F, 0xFEB3, 0xFF30, 0xDABB, 0xDABB,\n    0xD884, 0xD858, 0xD87D, 0xD78C, 0xD2AC, 0xCEBF, 0xD2DE, 0xD757,\n    0xD0BA, 0xD06D, 0xD127, 0xD230, 0xD2D0, 0xD24F, 0xCFF5, 0xC9D6,\n    0xC049, 0xB5FA, 0xAD92, 0xAF26, 0xB0A8, 0xB201, 0xB3BF, 0xB66D,\n    0xBB56, 0xC1CE, 0xC770, 0xC9D8, 0x286A, 0x286A, 0x1CA8, 0x1F50,\n    0x248E, 0x27F5, 0x2511, 0x21B5, 0x24AA, 0x283F, 0x25AF, 0x2758,\n    0x28D2, 0x2A8B, 0x2CF2, 0x3075, 0x3583, 0x3EA0, 0x4B80, 0x5859,\n    0x615F, 0x52C2, 0x4ACC, 0x422D, 0x396C, 0x3112, 0x29A6, 0x23B1,\n    0x1FBA, 0x1E4A, 0x0FB6, 0x0FB6, 0x0F7F, 0x0FD3, 0x1045, 0x10CE,\n    0x1165, 0x1203, 0x12A0, 0x1333, 0x13B5, 0x141D, 0x1463, 0x1480,\n    0x146B, 0x141C, 0x138C, 0x0FCF, 0x08FC, 0x038A, 0x067A, 0x0A09,\n    0x0C83, 0x0F43, 0x1217, 0x14D1, 0x1743, 0x193C, 0x1A8E, 0x1B09,\n    0x15FE, 0x15FE, 0x1AEC, 0x1A70, 0x19CC, 0x1906, 0x1826, 0x1734,\n    0x1636, 0x1533, 0x1434, 0x1340, 0x125C, 0x1192, 0x10E9, 0x1066,\n    0x1013, 0x115F, 0x1460, 0x1718, 0x17B2, 0x18CB, 0x17EC, 0x16D0,\n    0x1593, 0x1451, 0x1325, 0x122D, 0x1183, 0x1144, 0x8F57, 0x8F57,\n    0x86FA, 0x86B0, 0x869D, 0x86B9, 0x86F9, 0x8755, 0x87C2, 0x8837,\n    0x88AA, 0x8913, 0x8967, 0x899D, 0x89AB, 0x8988, 0x892B, 0x861E,\n    0x810D, 0x7E9B, 0x8AE7, 0x8EF0, 0x9309, 0x97B0, 0x9C8F, 0xA14F,\n    0xA597, 0xA913, 0xAB69, 0xAC44, 0x0000, 0x0000, 0x0000, 0xFFD3,\n    0xFF9D, 0xFF69, 0xFF39, 0xFF0F, 0xFEEF, 0xFED4, 0xFEBF, 0xFEB9,\n    0xFE7C, 0xFE42, 0xFE47, 0xFEC8, 0x0000, 0x02F8, 0x078A, 0x0C2A,\n    0x0F4F, 0x096F, 0x06CD, 0x0489, 0x02AD, 0x0143, 0x0067, 0x000A,\n    0xFFFA, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFD, 0xFFF3,\n    0xFFCA, 0xFFAB, 0xFFD3, 0xFFF2, 0xFF7B, 0xFF80, 0xFF8B, 0xFF9D,\n    0xFFB6, 0xFFD7, 0x0000, 0x004C, 0x00B9, 0x0119, 0x013F, 0xFFE5,\n    0xFFC7, 0xFFD6, 0xFFF6, 0x0008, 0x0009, 0x0005, 0x0001, 0x0000,\n    0xCBE2, 0xD062, 0xDA8C, 0xDE5C, 0xE0D3, 0xE0CE, 0xD96E, 0xD253,\n    0xD75C, 0xDC5E, 0xCED8, 0xCF96, 0xD1D3, 0xD4CD, 0xD7C0, 0xD9EC,\n    0xDA8C, 0xD8D9, 0xD51C, 0xD02B, 0xCAE2, 0xC0A6, 0xBEAA, 0xBDC7,\n    0xBD86, 0xBD6D, 0xBD9D, 0xBE40, 0xBEEF, 0xBF40, 0x392D, 0x38B3,\n    0x2670, 0x2C21, 0x3623, 0x3D4F, 0x3B06, 0x374D, 0x3B72, 0x3F45,\n    0x36D3, 0x3684, 0x36B6, 0x3757, 0x3858, 0x39A8, 0x3B37, 0x3DA1,\n    0x4102, 0x448A, 0x4766, 0x467A, 0x4223, 0x3D01, 0x3780, 0x320C,\n    0x2D11, 0x28FD, 0x263A, 0x2537, 0xEFEA, 0xEFEA, 0xE00A, 0xDFA9,\n    0xDF82, 0xDF90, 0xDFCF, 0xE039, 0xE0CA, 0xE17C, 0xE24B, 0xE331,\n    0xE42A, 0xE530, 0xE63E, 0xE750, 0xE860, 0xEA7E, 0xEDDC, 0xF122,\n    0xF2FB, 0xEBD5, 0xE877, 0xE4E1, 0xE147, 0xDDDF, 0xDADD, 0xD876,\n    0xD6DE, 0xD64A, 0xEACB, 0xEACB, 0xE5CB, 0xE457, 0xE2DB, 0xE15A,\n    0xDFDB, 0xDE61, 0xDCF2, 0xDB94, 0xDA4A, 0xD91B, 0xD80A, 0xD71E,\n    0xD65B, 0xD5C6, 0xD564, 0xD6D2, 0xDA6E, 0xDE61, 0xE0D5, 0xDAD1,\n    0xDC8A, 0xDEF8, 0xE1D2, 0xE4CE, 0xE7A1, 0xEA01, 0xEBA5, 0xEC41,\n    0x99D9, 0x99D9, 0x81E4, 0x7FCB, 0x7E1F, 0x7CD0, 0x7BCF, 0x7B10,\n    0x7A85, 0x7A21, 0x79D6, 0x7996, 0x7956, 0x7906, 0x7899, 0x7803,\n    0x7736, 0x74F2, 0x719A, 0x6F8D, 0x712D, 0x8C85, 0x941B, 0x9B7E,\n    0xA26F, 0xA8AC, 0xADF6, 0xB20C, 0xB4AF, 0xB59E, 0x8001, 0x8001,\n    0x4171, 0xBF5F, 0xBF33, 0xBF5F, 0xC07C, 0xC1B9, 0xC30D, 0xC471,\n    0xC5DC, 0xC747, 0xC8A9, 0xC9FC, 0xCB36, 0xCC50, 0xCD42, 0xCE05,\n    0xCE8F, 0xCEDA, 0xCD8C, 0xCA2A, 0xC5F7, 0xC238, 0xBF5F, 0xBF21,\n    0xBF04, 0xBF00, 0xBF0E, 0xBF26, 0xBF41, 0xBF56, 0xBF5F, 0x8001,\n    0x8001, 0x4171, 0x0038, 0x0038, 0x0000, 0xFFFD, 0xFFFB, 0xFFFA,\n    0xFFF9, 0xFFF9, 0xFFF9, 0xFFFA, 0xFFFB, 0xFFFC, 0xFFFD, 0xFFFF,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0xBF3B, 0xBF3B, 0xBF5F, 0xBF6B, 0xBF87, 0xBFB0, 0xBFDF, 0xC011,\n    0xC041, 0xC06B, 0xC08A, 0xC099, 0xC094, 0xC077, 0xC03D, 0xBFE1,\n    0xBF5F, 0xBD63, 0xB9C8, 0xB653, 0xB4C7, 0xBF5F, 0xC046, 0xC0B2,\n    0xC0C0, 0xC08C, 0xC033, 0xBFD0, 0xBF80, 0xBF5F, 0x0321, 0xFF01,\n    0xF6AD, 0xF55D, 0xF565, 0xF5E0, 0xF728, 0xF8B3, 0xF927, 0xF98D,\n    0xFA76, 0xFB83, 0xFC92, 0xFD82, 0xFE6B, 0xFF30, 0xFF62, 0xFEE6,\n    0xFE12, 0xFD1B, 0xFC36, 0xFB99, 0xFB70, 0xFBAB, 0xFC25, 0xFCE5,\n    0xFDE6, 0xFEE8, 0xFFB0, 0x0000, 0xFA28, 0xF99C, 0xF8C6, 0xFA4C,\n    0xFC3A, 0xFD95, 0xFD18, 0xFC7A, 0xFDEE, 0xFF8B, 0x003F, 0x00C3,\n    0x0121, 0x0167, 0x0192, 0x018B, 0x013E, 0x009D, 0xFFC7, 0xFEE5,\n    0xFE26, 0xFDB7, 0xFE03, 0xFED9, 0xFF7B, 0xFFB8, 0xFFDF, 0xFFF5,\n    0xFFFE, 0x0000, 0x0F2A, 0x17C3, 0x28F4, 0x3016, 0x3522, 0x3700,\n    0x2FEF, 0x287E, 0x2DB6, 0x33A2, 0x336D, 0x31DD, 0x2F40, 0x2BE0,\n    0x26AB, 0x1FEE, 0x1A09, 0x152E, 0x104F, 0x0BE6, 0x0870, 0x0667,\n    0x08D9, 0x0E5F, 0x10C2, 0x0DD6, 0x08AE, 0x02F3, 0xFE4D, 0xFC62,\n    0xF869, 0xFC59, 0x04A0, 0x051B, 0x0575, 0x05B2, 0x05D4, 0x05E0,\n    0x05D9, 0x05C2, 0x05A0, 0x0575, 0x0546, 0x0516, 0x04E8, 0x04C0,\n    0x04A2, 0x0483, 0x0451, 0x0400, 0x0385, 0x02D5, 0x015B, 0xFF63,\n    0xFE35, 0xFE2B, 0xFE95, 0xFF33, 0xFFC2, 0x0000, 0x0083, 0x0045,\n    0xFFB4, 0xFFA3, 0xFF79, 0xFF3E, 0xFEF9, 0xFEB1, 0xFE6D, 0xFE33,\n    0xFE0B, 0xFDFC, 0xFE0E, 0xFE46, 0xFEAC, 0xFF47, 0x001D, 0x0292,\n    0x070B, 0x0C16, 0x103F, 0x1215, 0x0E68, 0x06F3, 0x01A4, 0x0006,\n    0xFF70, 0xFF7F, 0xFFD0, 0x0000, 0x0435, 0x0465, 0x044A, 0x03EF,\n    0x0369, 0x02C1, 0x0206, 0x0142, 0x0081, 0xFFD2, 0xFF3D, 0xFECF,\n    0xFE96, 0xFE9C, 0xFEEE, 0xFF98, 0x00A5, 0x0402, 0x0A52, 0x11B8,\n    0x1857, 0x1C51, 0x1ACF, 0x1568, 0x10E5, 0x0E70, 0x0C2A, 0x0A47,\n    0x08FD, 0x0884, 0xFF85, 0xFF69, 0xFF4C, 0xFF49, 0xFF47, 0xFF44,\n    0xFF41, 0xFF3E, 0xFF3B, 0xFF38, 0xFF37, 0xFF36, 0xFF36, 0xFF37,\n    0xFF39, 0xFF3E, 0xFF44, 0xFF4C, 0xFF69, 0xFF9E, 0xFFD5, 0xFFF6,\n    0x0001, 0x0008, 0x000A, 0x0009, 0x0007, 0x0004, 0x0001, 0x0000,\n    0x02CF, 0x02CA, 0x02C3, 0x02C4, 0x02C8, 0x02CF, 0x02D7, 0x02E0,\n    0x02E9, 0x02F1, 0x02F8, 0x02FC, 0x02FE, 0x02FC, 0x02F6, 0x02EB,\n    0x02DA, 0x02C3, 0x026F, 0x01D4, 0x0130, 0x00C4, 0x008E, 0x0063,\n    0x0041, 0x0027, 0x0014, 0x0008, 0x0002, 0x0000, 0x28FB, 0x2762,\n    0x25B7, 0x2588, 0x2538, 0x24D0, 0x2458, 0x23DB, 0x2362, 0x22F5,\n    0x229E, 0x2267, 0x2259, 0x227C, 0x22DB, 0x237E, 0x246F, 0x25B7,\n    0x2A77, 0x333B, 0x3C31, 0x4186, 0x4334, 0x43E8, 0x43DF, 0x4352,\n    0x427D, 0x419C, 0x40EA, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_7C.inc.c",
    "content": "static const struct Animation anim_7C[] = {\n    1,\n    189,\n    0,\n    0,\n    0x1E,\n    ANIMINDEX_NUMPARTS(anim_7C_indices),\n    anim_7C_values,\n    anim_7C_indices,\n    0,\n};\n\n\nstatic const u16 anim_7C_indices[] = {\n    0x0001, 0x0000, 0x001E, 0x0001, 0x001E, 0x001F, 0x0001, 0x0000, 0x0001, 0x003D, 0x0001, 0x0000,\n    0x001E, 0x0424, 0x001E, 0x0442, 0x001E, 0x0460,\n    0x001E, 0x03CA, 0x001E, 0x03E8, 0x001E, 0x0406,\n    0x001E, 0x038E, 0x0001, 0x0000, 0x001E, 0x03AC,\n    0x0001, 0x038A, 0x0001, 0x038B, 0x0001, 0x038C,\n    0x001E, 0x00B6, 0x001E, 0x00D4, 0x001E, 0x00F2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0098,\n    0x001E, 0x003E, 0x001E, 0x005C, 0x001E, 0x007A,\n    0x0001, 0x0386, 0x0001, 0x0387, 0x0001, 0x0388,\n    0x001E, 0x0188, 0x001E, 0x01A6, 0x001E, 0x01C4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x016A,\n    0x001E, 0x0110, 0x001E, 0x012E, 0x001E, 0x014C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0389,\n    0x001E, 0x032C, 0x001E, 0x034A, 0x001E, 0x0368,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x030E,\n    0x001E, 0x02B4, 0x001E, 0x02D2, 0x001E, 0x02F0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x038D,\n    0x001E, 0x025A, 0x001E, 0x0278, 0x001E, 0x0296,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x023C,\n    0x001E, 0x01E2, 0x001E, 0x0200, 0x001E, 0x021E,\n};\n\nstatic const s16 anim_7C_values[] = {\n    0x0000, 0x00CA, 0x009E, 0x0075, 0x005A, 0x0051, 0x004B, 0x0065,\n    0x0075, 0x006E, 0x005E, 0x004E, 0x0054, 0x0052, 0x0051, 0x0055,\n    0x0057, 0x0059, 0x006F, 0x0087, 0x00A0, 0x00B6, 0x00BE, 0x00A3,\n    0x00A2, 0x00A3, 0x00A5, 0x00A8, 0x00AA, 0x00AA, 0x00AA, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0008, 0x0013, 0x001D, 0x0024, 0x0015, 0x001C, 0x0018, 0x0012,\n    0x000B, 0x0005, 0x0000, 0xFFFF, 0x0000, 0x3FFF, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0xFFD0, 0xFF59, 0xFEC6, 0xFE41,\n    0xFDF4, 0xFE09, 0xFEAA, 0x0000, 0x102A, 0x2483, 0x20C1, 0x1A91,\n    0x1321, 0x0B9F, 0x0537, 0x0116, 0xFF0F, 0xFE01, 0xFDB5, 0xFDF4,\n    0xFE86, 0xFF33, 0xFFC4, 0x0000, 0xF97C, 0xF97C, 0xF97C, 0xF97C,\n    0xF97C, 0xF97C, 0xF97D, 0xF97F, 0xF982, 0xF985, 0xF987, 0xF986,\n    0xF983, 0xF97C, 0xF924, 0xFFE4, 0xFA94, 0xF37A, 0xEBC7, 0xE4AC,\n    0xDF5A, 0xDD02, 0xDDE2, 0xE0F2, 0xE57C, 0xEACB, 0xF027, 0xF4DD,\n    0xF836, 0xF97C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED99, 0xEDB8, 0xEDDF, 0xEE02, 0xEE17, 0xEE11, 0xEDE6, 0xED8C,\n    0xE942, 0xF229, 0xF161, 0xEFA0, 0xED5F, 0xEB15, 0xE93C, 0xE84B,\n    0xE845, 0xE8BF, 0xE992, 0xEA98, 0xEBA7, 0xEC9A, 0xED49, 0xED8C,\n    0xCF33, 0xD114, 0xD58A, 0xDACD, 0xDF16, 0xE09E, 0xDF55, 0xDCA7,\n    0xD90D, 0xD4FD, 0xD0ED, 0xCD54, 0xCAAA, 0xC965, 0xDCC1, 0xF152,\n    0xF1D6, 0xF0E8, 0xEEE9, 0xEC39, 0xE93A, 0xE64C, 0xE2F9, 0xDECE,\n    0xDA31, 0xD588, 0xD137, 0xCDA5, 0xCB36, 0xCA4F, 0xDA74, 0xD081,\n    0xB7B1, 0x978D, 0x779D, 0x5F71, 0x58FA, 0x5E00, 0x63D9, 0x6AC8,\n    0x727D, 0x7AA7, 0x82FB, 0x8B21, 0x96EE, 0x8029, 0x8811, 0x92C0,\n    0x9F0A, 0xABC3, 0xB7BF, 0xC1D4, 0xCAFA, 0xD49B, 0xDE31, 0xE735,\n    0xEF21, 0xF570, 0xF99B, 0xFB1D, 0xE189, 0xDCC2, 0xD0B6, 0xC0D3,\n    0xB089, 0xA344, 0x9AAF, 0x9740, 0x97C8, 0x9998, 0x9C08, 0x9E70,\n    0xA027, 0xA084, 0x937A, 0x871C, 0x8776, 0x8854, 0x89E5, 0x8C54,\n    0x8FD1, 0x9486, 0x9B53, 0xA452, 0xAE8E, 0xB913, 0xC2EC, 0xCB23,\n    0xD0C5, 0xD2DC, 0xFBD5, 0x002E, 0x0AE5, 0x1878, 0x2567, 0x2E2F,\n    0x2AAD, 0x2299, 0x1ED5, 0x1AEB, 0x172B, 0x13E5, 0x1166, 0x0FFE,\n    0x1D2A, 0x287F, 0x2335, 0x1C72, 0x14CF, 0x0CE8, 0x0557, 0xFEB8,\n    0xF85B, 0xF174, 0xEA72, 0xE3C1, 0xDDCF, 0xD909, 0xD5DB, 0xD4B4,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0001, 0x0002, 0x0002, 0x0003, 0x0003, 0x0003, 0x0000, 0xD898,\n    0xD565, 0xD4CB, 0xD61F, 0xD8B4, 0xDBDE, 0xDEF0, 0xE280, 0xE741,\n    0xECAE, 0xF245, 0xF782, 0xFBE3, 0xFEE3, 0x0000, 0x0000, 0xFFCE,\n    0xFF6A, 0xFF1F, 0xFF38, 0x0000, 0x0177, 0x0354, 0x057A, 0x07C9,\n    0x0A24, 0x0C6D, 0x0E84, 0x104C, 0x0EAA, 0xFA90, 0xFBB3, 0xFEF0,\n    0x0346, 0x07B9, 0x0B47, 0x0CF1, 0x0CAE, 0x0B5A, 0x094C, 0x06DB,\n    0x045D, 0x022A, 0x0099, 0x0000, 0xF549, 0xF549, 0xF549, 0xF549,\n    0xF549, 0xF549, 0xF537, 0xF50A, 0xF4D3, 0xF4A0, 0xF483, 0xF48B,\n    0xF4C8, 0xF54A, 0xFB66, 0xECA1, 0xE8C4, 0xE553, 0xE27B, 0xE069,\n    0xDF4A, 0xDF49, 0xE0B3, 0xE36A, 0xE6F8, 0xEAE7, 0xEEC2, 0xF214,\n    0xF468, 0xF549, 0xC775, 0xC92E, 0xCD3F, 0xD200, 0xD5CC, 0xD6FB,\n    0xD566, 0xD256, 0xCE54, 0xC9E6, 0xC593, 0xC1E4, 0xBF5E, 0xBE89,\n    0xD8C0, 0xF4B9, 0xF31B, 0xF098, 0xED5A, 0xE98C, 0xE555, 0xE0E0,\n    0xDC56, 0xD7E0, 0xD3A8, 0xCFD8, 0xCC99, 0xCA13, 0xC872, 0xC7DD,\n    0x24EE, 0x2526, 0x25A7, 0x2633, 0x2690, 0x267F, 0x2512, 0x2271,\n    0x20BA, 0x2037, 0x1F8F, 0x1D69, 0x186F, 0x0F46, 0xCED0, 0xFEF4,\n    0x00D5, 0xFE8F, 0xF9DB, 0xF479, 0xF026, 0xEE9F, 0xEFF1, 0xF2AC,\n    0xF653, 0xFA69, 0xFE71, 0x01EC, 0x045F, 0x054B, 0x1C98, 0x1D57,\n    0x1F18, 0x2118, 0x2299, 0x22DB, 0x1D6A, 0x1848, 0x1916, 0x1B16,\n    0x1DAD, 0x203D, 0x222B, 0x22DB, 0x1747, 0x095F, 0x08C8, 0x090A,\n    0x0A02, 0x0B90, 0x0D92, 0x0FE7, 0x12FA, 0x1705, 0x1B9C, 0x2051,\n    0x24B8, 0x2864, 0x2AE8, 0x2BD6, 0xF3E1, 0xEEB5, 0xE1AE, 0xD084,\n    0xBEF0, 0xB0AC, 0xA7A3, 0xA44A, 0xA5AD, 0xA902, 0xAD06, 0xB07A,\n    0xB21C, 0xB0AC, 0x8C0D, 0xA26B, 0xA124, 0x9D0E, 0x97C5, 0x92E0,\n    0x8FF9, 0x90AA, 0x9592, 0x9D7D, 0xA749, 0xB1D6, 0xBC02, 0xC4AC,\n    0xCAB3, 0xCCF6, 0xFFC2, 0xFFC3, 0xFFC4, 0xFFC5, 0xFFC7, 0xFFC9,\n    0xFFCB, 0xFFCD, 0xFFCE, 0xFFD0, 0xFFD1, 0xFFD1, 0xFFCF, 0xFFC9,\n    0xFFA4, 0xFF88, 0xFEF9, 0xFE0D, 0xFDFB, 0xFFFD, 0x097C, 0x1441,\n    0x11F7, 0x0C3C, 0x0C24, 0x0C08, 0x0857, 0x042F, 0x015A, 0x0000,\n    0xFF39, 0xFF39, 0xFF39, 0xFF39, 0xFF39, 0xFF38, 0xFF37, 0xFF37,\n    0xFF36, 0xFF35, 0xFF34, 0xFF34, 0xFF35, 0xFF38, 0xFEA4, 0xFF58,\n    0x0315, 0x07FF, 0x0C4F, 0x0E43, 0x0892, 0x0070, 0x0026, 0x001B,\n    0xFDEE, 0xFC38, 0xFD29, 0xFEA5, 0xFF19, 0xFF30, 0xD612, 0xD5FD,\n    0xD5C6, 0xD579, 0xD522, 0xD4CC, 0xD440, 0xD3DD, 0xD3AC, 0xD347,\n    0xD2EF, 0xD2E6, 0xD36F, 0xD4CC, 0xDCCC, 0xE30F, 0xDF6D, 0xD902,\n    0xD1B4, 0xCB6B, 0xC821, 0xC438, 0xB848, 0xAF73, 0xB5B7, 0xBDCA,\n    0xC224, 0xC540, 0xC849, 0xC9D8, 0x4A4A, 0x4E1A, 0x4F1F, 0x4606,\n    0x397E, 0x2EE6, 0x29DC, 0x28BD, 0x2839, 0x2739, 0x2690, 0x2713,\n    0x2994, 0x2EE6, 0x48CE, 0x61D3, 0x6363, 0x5F11, 0x5708, 0x4D74,\n    0x3F08, 0x2C94, 0x1E6D, 0x2887, 0x28F4, 0x27C0, 0x2813, 0x2481,\n    0x204F, 0x1E4A, 0x04C5, 0x0513, 0x05C5, 0x068D, 0x0718, 0x0716,\n    0x047B, 0x0211, 0x027B, 0x0381, 0x04CE, 0x060E, 0x06ED, 0x0716,\n    0x03E4, 0xFF98, 0xFD20, 0xFAEC, 0xF941, 0xF868, 0xF97E, 0xFBDE,\n    0xFD27, 0xF831, 0x00B4, 0x09F4, 0x0FD9, 0x155D, 0x1971, 0x1B09,\n    0x1482, 0x1475, 0x1457, 0x1437, 0x1424, 0x142C, 0x14BB, 0x153D,\n    0x1523, 0x14E5, 0x1497, 0x1450, 0x1425, 0x142C, 0x15E0, 0x167E,\n    0x134A, 0x0ECB, 0x0A9F, 0x0868, 0x0A52, 0x0EBF, 0x119F, 0x0B68,\n    0x0E4C, 0x11AA, 0x1225, 0x11F3, 0x1182, 0x1144, 0xADF9, 0xAE34,\n    0xAEA8, 0xAEFA, 0xAECF, 0xADCB, 0xA80C, 0xA315, 0xA3F2, 0xA616,\n    0xA8D3, 0xAB79, 0xAD5B, 0xADCB, 0xA871, 0x9EE3, 0x94A2, 0x895A,\n    0x7F84, 0x79A1, 0x7B35, 0x8254, 0x894C, 0x8DAD, 0x921A, 0x96CC,\n    0x9CFC, 0xA40D, 0xA9DB, 0xAC44, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x005F, 0x0000, 0xFE06, 0xFB6F, 0xF8C8, 0xF619,\n    0xF346, 0xF09F, 0xEE78, 0xEFC8, 0xF32C, 0xF698, 0xF8DE, 0xFAE7,\n    0xFE07, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x007F, 0x0000, 0xFC81, 0xF82F, 0xF64F, 0xF813, 0xFBA3, 0xFFBA,\n    0x030F, 0x02FD, 0x03A6, 0x03FE, 0x0305, 0x01B8, 0x009D, 0x0000,\n    0xCB79, 0xCB68, 0xCB38, 0xCAF0, 0xCA97, 0xCA34, 0xC956, 0xC8AC,\n    0xC858, 0xC7A7, 0xC70C, 0xC6F9, 0xC7E0, 0xCA34, 0xD66F, 0xE2A6,\n    0xE317, 0xDF65, 0xD982, 0xD1CA, 0xC853, 0xBEA7, 0xB64E, 0xB5A1,\n    0xB85B, 0xBB63, 0xBD73, 0xBED6, 0xBF48, 0xBF40, 0x38C5, 0x38B2,\n    0x388C, 0x386F, 0x3879, 0x38C6, 0x3A89, 0x3C11, 0x3B4B, 0x3986,\n    0x3793, 0x3641, 0x3662, 0x38C6, 0x4B23, 0x5AFF, 0x520C, 0x40FE,\n    0x32DF, 0x2AEC, 0x24C1, 0x1FF9, 0x1C2D, 0x21B3, 0x232F, 0x23E5,\n    0x2465, 0x24DD, 0x2521, 0x2537, 0xEAE4, 0xEC17, 0xEF1E, 0xF31C,\n    0xF734, 0xFA89, 0xFCB5, 0xFD8B, 0xFD2A, 0xFC42, 0xFB2F, 0xFA4D,\n    0xF9F7, 0xFA89, 0x00B4, 0x06D2, 0x058A, 0x01F4, 0xFF8A, 0xFFBB,\n    0x00F0, 0x0217, 0x021E, 0xFB14, 0xF40D, 0xEC08, 0xE409, 0xDD13,\n    0xD828, 0xD64A, 0xEF5D, 0xEFEB, 0xF14C, 0xF316, 0xF4DD, 0xF638,\n    0xF68E, 0xF663, 0xF690, 0xF6F3, 0xF753, 0xF779, 0xF72D, 0xF638,\n    0xF123, 0xEB50, 0xE933, 0xE859, 0xE86F, 0xE96E, 0xEB23, 0xED01,\n    0xEE79, 0xEDDF, 0xED89, 0xED2C, 0xECD4, 0xEC88, 0xEC54, 0xEC41,\n    0xCFCD, 0xCD2F, 0xC683, 0xBD8B, 0xB409, 0xABC0, 0xA330, 0x9E2B,\n    0x9F15, 0xA164, 0xA474, 0xA7A0, 0xAA46, 0xABC0, 0xA81F, 0xA3AF,\n    0xA4EF, 0xA795, 0xA725, 0xA1B4, 0x99CD, 0x919B, 0x8B4A, 0x8FE2,\n    0x96D5, 0x9EFC, 0xA73D, 0xAE7E, 0xB3A7, 0xB59E, 0x8001, 0x8001,\n    0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0023, 0x0069,\n    0x009D, 0x008C, 0x0000, 0xFE91, 0xFC60, 0xFA0C, 0xF833, 0xF772,\n    0xF8C8, 0xFBB9, 0xFEAA, 0x0000, 0xF7E6, 0x01E7, 0x0B1B, 0x03E9,\n    0xF7C6, 0xF009, 0xEDE9, 0xEC5F, 0xEB6E, 0xEB19, 0xEB62, 0xEC4B,\n    0xEDD8, 0xF009, 0x0755, 0xF3C2, 0xEB2A, 0xE299, 0xDB63, 0xD6DD,\n    0xD65B, 0xDC01, 0xE6ED, 0xF3E7, 0xFFB9, 0x072B, 0x07D7, 0x03DE,\n    0xFEDB, 0xFC62, 0x0000, 0xFFD3, 0xFFA5, 0xFFB9, 0xFFE0, 0x0000,\n    0x0006, 0x0003, 0x0003, 0x0002, 0x0002, 0x0001, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xFFEA, 0xFFB2, 0xFF6E, 0xFF30, 0xFF0C, 0xFF16,\n    0xFF61, 0x0000, 0x0447, 0x0826, 0x06E0, 0x0413, 0x0145, 0x0000,\n    0xF639, 0xF71A, 0xF8F9, 0xFB20, 0xFD81, 0x0000, 0x0346, 0x054B,\n    0x04FE, 0x0436, 0x0322, 0x01F3, 0x00D7, 0x0000, 0xFFD7, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x012E, 0x015E,\n    0x0102, 0xFF17, 0xFCC0, 0xFBD6, 0xFF8B, 0x030A, 0x027A, 0x0113,\n    0xFF47, 0xFD83, 0xFC38, 0xFBD6, 0xFFBC, 0x04CC, 0x074C, 0x09B1,\n    0x0BF7, 0x0E19, 0x1015, 0x11E5, 0x1386, 0x14F4, 0x1457, 0x120A,\n    0x0F67, 0x0C41, 0x099E, 0x0884, 0x0003, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0B68, 0x0000, 0xFEB1, 0xFED7, 0xFF91, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x36DA, 0x492F, 0x5699, 0x6373, 0x6F17, 0x78DB, 0x7B44, 0x7961,\n    0x7A07, 0x7B73, 0x7CD7, 0x7D67, 0x7C57, 0x78DB, 0x6596, 0x50ED,\n    0x524B, 0x5B01, 0x63DB, 0x6CA1, 0x7425, 0x7617, 0x7073, 0x68D3,\n    0x600F, 0x56FE, 0x4E79, 0x4758, 0x4273, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_7D.inc.c",
    "content": "static const struct Animation anim_7D[] = {\n    0,\n    189,\n    0,\n    0,\n    0x28,\n    ANIMINDEX_NUMPARTS(anim_7D_indices),\n    anim_7D_values,\n    anim_7D_indices,\n    0,\n};\n\n\nstatic const u16 anim_7D_indices[] = {\n    0x0001, 0x0001, 0x0028, 0x0002, 0x0028, 0x002A, 0x0001, 0x0000, 0x0001, 0x0052, 0x0001, 0x0000,\n    0x0001, 0x022A, 0x0001, 0x022B, 0x0001, 0x022C,\n    0x0001, 0x0227, 0x0001, 0x0228, 0x0001, 0x0229,\n    0x0001, 0x0224, 0x0001, 0x0225, 0x0001, 0x0226,\n    0x0001, 0x0220, 0x0001, 0x0221, 0x0001, 0x0222,\n    0x0001, 0x0057, 0x0001, 0x0058, 0x0001, 0x0059,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0056,\n    0x0001, 0x0053, 0x0001, 0x0054, 0x0001, 0x0055,\n    0x0001, 0x021C, 0x0001, 0x021D, 0x0001, 0x021E,\n    0x0001, 0x005E, 0x0001, 0x005F, 0x0001, 0x0060,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x005D,\n    0x0001, 0x005A, 0x0001, 0x005B, 0x0001, 0x005C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x021F,\n    0x0028, 0x01A4, 0x0028, 0x01CC, 0x0028, 0x01F4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x017C,\n    0x0001, 0x0179, 0x0001, 0x017A, 0x0001, 0x017B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0223,\n    0x0028, 0x0101, 0x0028, 0x0129, 0x0028, 0x0151,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x00D9,\n    0x0028, 0x0061, 0x0028, 0x0089, 0x0028, 0x00B1,\n};\n\nstatic const s16 anim_7D_values[] = {\n    0x0000, 0xFFEC, 0x00A3, 0x00A3, 0x00A2, 0x00A2, 0x00A1, 0x00A0,\n    0x009F, 0x009E, 0x009D, 0x009C, 0x009B, 0x0099, 0x0098, 0x0097,\n    0x0096, 0x0095, 0x0095, 0x0094, 0x0094, 0x0094, 0x0094, 0x0094,\n    0x0094, 0x0095, 0x0096, 0x0097, 0x0098, 0x0099, 0x009A, 0x009B,\n    0x009C, 0x009D, 0x009F, 0x00A0, 0x00A0, 0x00A1, 0x00A2, 0x00A2,\n    0x00A3, 0x00A3, 0x0039, 0x0039, 0x0038, 0x0038, 0x0038, 0x0037,\n    0x0037, 0x0036, 0x0036, 0x0035, 0x0035, 0x0034, 0x0034, 0x0033,\n    0x0033, 0x0032, 0x0032, 0x0032, 0x0032, 0x0031, 0x0032, 0x0032,\n    0x0032, 0x0032, 0x0033, 0x0033, 0x0033, 0x0034, 0x0035, 0x0035,\n    0x0036, 0x0036, 0x0037, 0x0037, 0x0038, 0x0038, 0x0038, 0x0038,\n    0x0039, 0x0039, 0x3FFF, 0xE7CE, 0xF984, 0xE96B, 0xEC20, 0x17E9,\n    0xCAB2, 0x7623, 0x0ACF, 0x020D, 0xEDD2, 0xF09C, 0xEE04, 0x132B,\n    0x7137, 0x0791, 0x0791, 0x078F, 0x078E, 0x078B, 0x0788, 0x0785,\n    0x0781, 0x077D, 0x0779, 0x0775, 0x0770, 0x076D, 0x0769, 0x0765,\n    0x0762, 0x0760, 0x075E, 0x075D, 0x075C, 0x075D, 0x075E, 0x075F,\n    0x0762, 0x0765, 0x0768, 0x076B, 0x076F, 0x0773, 0x0777, 0x077B,\n    0x077E, 0x0782, 0x0786, 0x0789, 0x078C, 0x078E, 0x0790, 0x0791,\n    0x0791, 0xFFE7, 0xFFEB, 0xFFF6, 0x0006, 0x001D, 0x0038, 0x0057,\n    0x0079, 0x009D, 0x00C2, 0x00E8, 0x010D, 0x0131, 0x0153, 0x0172,\n    0x018D, 0x01A4, 0x01B5, 0x01C0, 0x01C4, 0x01C0, 0x01B7, 0x01A7,\n    0x0192, 0x0179, 0x015D, 0x013D, 0x011C, 0x00F9, 0x00D5, 0x00B1,\n    0x008E, 0x006D, 0x004D, 0x0031, 0x0018, 0x0003, 0xFFF5, 0xFFEB,\n    0xFFE7, 0xAA57, 0xAA42, 0xAA08, 0xA9AB, 0xA932, 0xA8A0, 0xA7F9,\n    0xA743, 0xA682, 0xA5BA, 0xA4F0, 0xA428, 0xA366, 0xA2B0, 0xA20A,\n    0xA178, 0xA0FE, 0xA0A2, 0xA067, 0xA053, 0xA065, 0xA09B, 0xA0EF,\n    0xA15D, 0xA1E3, 0xA27D, 0xA325, 0xA3D9, 0xA495, 0xA555, 0xA615,\n    0xA6D0, 0xA784, 0xA82D, 0xA8C6, 0xA94C, 0xA9BB, 0xAA0F, 0xAA44,\n    0xAA57, 0x2670, 0x2696, 0x2704, 0x27B1, 0x2894, 0x29A5, 0x2ADD,\n    0x2C31, 0x2D9B, 0x2F11, 0x308C, 0x3202, 0x336C, 0x34C0, 0x35F7,\n    0x3709, 0x37EC, 0x3899, 0x3907, 0x392D, 0x390B, 0x38A7, 0x380A,\n    0x373A, 0x3640, 0x3521, 0x33E6, 0x3295, 0x3135, 0x2FCE, 0x2E68,\n    0x2D08, 0x2BB7, 0x2A7C, 0x295D, 0x2863, 0x2793, 0x26F6, 0x2692,\n    0x2670, 0x07D3, 0x07CE, 0x07C0, 0x07AA, 0x078D, 0x076A, 0x0742,\n    0x0717, 0x06E9, 0x06B9, 0x0688, 0x0659, 0x062A, 0x05FF, 0x05D7,\n    0x05B4, 0x0597, 0x0581, 0x0573, 0x056E, 0x0573, 0x057F, 0x0593,\n    0x05AE, 0x05CE, 0x05F3, 0x061B, 0x0646, 0x0673, 0x06A1, 0x06CE,\n    0x06FB, 0x0726, 0x074F, 0x0773, 0x0793, 0x07AE, 0x07C2, 0x07CF,\n    0x07D3, 0x09FE, 0x0A01, 0x0A0A, 0x0A17, 0x0A29, 0x0A3E, 0x0A57,\n    0x0A71, 0x0A8D, 0x0AAA, 0x0AC8, 0x0AE5, 0x0B01, 0x0B1C, 0x0B34,\n    0x0B49, 0x0B5B, 0x0B68, 0x0B71, 0x0B74, 0x0B71, 0x0B69, 0x0B5D,\n    0x0B4D, 0x0B39, 0x0B23, 0x0B0B, 0x0AF0, 0x0AD5, 0x0AB9, 0x0A9D,\n    0x0A82, 0x0A68, 0x0A4F, 0x0A39, 0x0A25, 0x0A15, 0x0A09, 0x0A01,\n    0x09FE, 0xB8CC, 0xB8B9, 0xB884, 0xB82F, 0xB7C0, 0xB73A, 0xB6A2,\n    0xB5FC, 0xB54B, 0xB494, 0xB3DB, 0xB324, 0xB273, 0xB1CD, 0xB135,\n    0xB0AF, 0xB040, 0xAFEB, 0xAFB6, 0xAFA3, 0xAFB4, 0xAFE5, 0xB031,\n    0xB097, 0xB111, 0xB19E, 0xB238, 0xB2DC, 0xB388, 0xB438, 0xB4E7,\n    0xB593, 0xB637, 0xB6D2, 0xB75E, 0xB7D8, 0xB83E, 0xB88B, 0xB8BB,\n    0xB8CC, 0x0019, 0x0141, 0xC822, 0x2395, 0x23A7, 0x23D9, 0x2428,\n    0x2490, 0x250D, 0x259B, 0x2636, 0x26DB, 0x2786, 0x2833, 0x28DE,\n    0x2983, 0x2A1E, 0x2AAD, 0x2B29, 0x2B91, 0x2BE0, 0x2C12, 0x2C24,\n    0x2C14, 0x2BE6, 0x2B9F, 0x2B40, 0x2ACE, 0x2A4B, 0x29BB, 0x2921,\n    0x2880, 0x27DD, 0x2739, 0x2698, 0x25FF, 0x256F, 0x24EC, 0x2479,\n    0x241B, 0x23D3, 0x23A5, 0x2395, 0xE385, 0xE38D, 0xE3A3, 0xE3C6,\n    0xE3F4, 0xE42B, 0xE46A, 0xE4AF, 0xE4F8, 0xE544, 0xE590, 0xE5DC,\n    0xE625, 0xE66A, 0xE6A9, 0xE6E0, 0xE70E, 0xE731, 0xE748, 0xE74F,\n    0xE748, 0xE734, 0xE714, 0xE6EA, 0xE6B8, 0xE67E, 0xE63E, 0xE5FA,\n    0xE5B3, 0xE56A, 0xE522, 0xE4DB, 0xE496, 0xE457, 0xE41D, 0xE3EA,\n    0xE3C0, 0xE3A0, 0xE38C, 0xE385, 0xEDF5, 0xEDEA, 0xEDCC, 0xED9C,\n    0xED5C, 0xED10, 0xECBA, 0xEC5B, 0xEBF6, 0xEB8E, 0xEB25, 0xEABD,\n    0xEA58, 0xE9FA, 0xE9A3, 0xE957, 0xE918, 0xE8E8, 0xE8C9, 0xE8BE,\n    0xE8C8, 0xE8E4, 0xE90F, 0xE949, 0xE98F, 0xE9DF, 0xEA36, 0xEA94,\n    0xEAF6, 0xEB5A, 0xEBBD, 0xEC1F, 0xEC7D, 0xECD5, 0xED24, 0xED6A,\n    0xEDA4, 0xEDD0, 0xEDEB, 0xEDF5, 0xA3FD, 0xA3ED, 0xA3BF, 0xA378,\n    0xA319, 0xA2A8, 0xA227, 0xA199, 0xA103, 0xA068, 0x9FCB, 0x9F30,\n    0x9E9A, 0x9E0D, 0x9D8C, 0x9D1A, 0x9CBC, 0x9C74, 0x9C47, 0x9C37,\n    0x9C45, 0x9C6E, 0x9CB0, 0x9D06, 0x9D6E, 0x9DE5, 0x9E67, 0x9EF3,\n    0x9F85, 0xA01A, 0xA0AE, 0xA140, 0xA1CC, 0xA24F, 0xA2C6, 0xA32E,\n    0xA384, 0xA3C5, 0xA3EE, 0xA3FD, 0x8001, 0x8001, 0x4171, 0xBF5F,\n    0x8001, 0x8001, 0x4AD0, 0xBF5F, 0x3A73, 0x020F, 0xFD2E, 0xF9E5,\n    0xFF99, 0xDBAE, 0xF3D9, 0x04C2, 0x4630,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_7E.inc.c",
    "content": "static const struct Animation anim_7E[] = {\n    0,\n    189,\n    0,\n    0,\n    0x5A,\n    ANIMINDEX_NUMPARTS(anim_7E_indices),\n    anim_7E_values,\n    anim_7E_indices,\n    0,\n};\n\n\nstatic const u16 anim_7E_indices[] = {\n    0x0001, 0x0000, 0x005A, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x005B, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x08DC,\n    0x005A, 0x07CE, 0x005A, 0x0828, 0x005A, 0x0882,\n    0x005A, 0x06C0, 0x005A, 0x071A, 0x005A, 0x0774,\n    0x0001, 0x06BC, 0x0001, 0x06BD, 0x0001, 0x06BE,\n    0x005A, 0x0060, 0x005A, 0x00BA, 0x005A, 0x0114,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x005F,\n    0x0001, 0x005C, 0x0001, 0x005D, 0x0001, 0x005E,\n    0x0001, 0x06B8, 0x0001, 0x06B9, 0x0001, 0x06BA,\n    0x005A, 0x0172, 0x005A, 0x01CC, 0x005A, 0x0226,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0171,\n    0x0001, 0x016E, 0x0001, 0x016F, 0x0001, 0x0170,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x06BB,\n    0x005A, 0x05AA, 0x005A, 0x0604, 0x005A, 0x065E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005A, 0x0550,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005A, 0x04F6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x06BF,\n    0x005A, 0x03E8, 0x005A, 0x0442, 0x005A, 0x049C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005A, 0x038E,\n    0x005A, 0x0280, 0x005A, 0x02DA, 0x005A, 0x0334,\n};\n\nstatic const s16 anim_7E_values[] = {\n    0x0000, 0x00AA, 0x00AA, 0x00A9, 0x00A9, 0x00A8, 0x00A8, 0x00A7,\n    0x00A6, 0x00A5, 0x00A4, 0x00A3, 0x00A2, 0x00A1, 0x00A0, 0x00A0,\n    0x009F, 0x009F, 0x009F, 0x009F, 0x009F, 0x00A0, 0x00A0, 0x00A1,\n    0x00A2, 0x00A3, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, 0x00A8,\n    0x00A9, 0x00A9, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00A9,\n    0x00A9, 0x00A8, 0x00A7, 0x00A6, 0x00A5, 0x00A4, 0x00A3, 0x00A3,\n    0x00A2, 0x00A1, 0x00A0, 0x00A0, 0x009F, 0x009F, 0x009F, 0x009F,\n    0x009F, 0x00A0, 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A3, 0x00A4,\n    0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x00A9, 0x00AA, 0x00AA,\n    0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA,\n    0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA,\n    0x00AA, 0x00AA, 0x00AA, 0x3FFF, 0x268B, 0x119F, 0xE81F, 0xF5E7,\n    0xF8EB, 0xF8E0, 0xF8C3, 0xF893, 0xF852, 0xF801, 0xF7A1, 0xF734,\n    0xF6BA, 0xF635, 0xF5A7, 0xF50F, 0xF470, 0xF3CB, 0xF320, 0xF272,\n    0xF1C1, 0xF10E, 0xF05B, 0xEFA9, 0xEEF9, 0xEE4C, 0xEDA4, 0xED01,\n    0xEC65, 0xEBD1, 0xEB47, 0xEAC7, 0xEA52, 0xE9EB, 0xE991, 0xE946,\n    0xE90C, 0xE8E4, 0xE8CF, 0xE8CD, 0xE8E0, 0xE907, 0xE941, 0xE98C,\n    0xE9E8, 0xEA53, 0xEACB, 0xEB51, 0xEBE2, 0xEC7D, 0xED22, 0xEDCE,\n    0xEE82, 0xEF3B, 0xEFF8, 0xF0B9, 0xF17C, 0xF240, 0xF304, 0xF3C6,\n    0xF486, 0xF542, 0xF5F9, 0xF6A9, 0xF753, 0xF7F4, 0xF88B, 0xF917,\n    0xF997, 0xFA0A, 0xFA6F, 0xFAC4, 0xFB08, 0xFB3A, 0xFB59, 0xFB63,\n    0xFB5E, 0xFB4E, 0xFB34, 0xFB13, 0xFAEC, 0xFABF, 0xFA8F, 0xFA5B,\n    0xFA27, 0xF9F2, 0xF9BF, 0xF98F, 0xF962, 0xF93A, 0xF919, 0xF900,\n    0xF8F0, 0xF8EB, 0xDC09, 0xDC07, 0xDC03, 0xDBFC, 0xDBF2, 0xDBE6,\n    0xDBD7, 0xDBC7, 0xDBB5, 0xDBA1, 0xDB8B, 0xDB74, 0xDB5C, 0xDB43,\n    0xDB2A, 0xDB0F, 0xDAF4, 0xDAD9, 0xDABE, 0xDAA2, 0xDA87, 0xDA6D,\n    0xDA53, 0xDA39, 0xDA21, 0xDA0A, 0xD9F4, 0xD9DF, 0xD9CC, 0xD9BB,\n    0xD9AC, 0xD99F, 0xD995, 0xD98D, 0xD987, 0xD985, 0xD985, 0xD988,\n    0xD98D, 0xD995, 0xD99F, 0xD9AB, 0xD9B8, 0xD9C7, 0xD9D8, 0xD9EB,\n    0xD9FE, 0xDA13, 0xDA28, 0xDA3F, 0xDA55, 0xDA6D, 0xDA85, 0xDA9D,\n    0xDAB5, 0xDACC, 0xDAE4, 0xDAFB, 0xDB12, 0xDB28, 0xDB3D, 0xDB51,\n    0xDB63, 0xDB75, 0xDB85, 0xDB93, 0xDB9F, 0xDBAA, 0xDBB3, 0xDBB9,\n    0xDBBD, 0xDBBE, 0xDBBF, 0xDBC1, 0xDBC4, 0xDBC7, 0xDBCC, 0xDBD1,\n    0xDBD7, 0xDBDD, 0xDBE3, 0xDBEA, 0xDBF0, 0xDBF5, 0xDBFB, 0xDBFF,\n    0xDC03, 0xDC06, 0xDC08, 0xDC09, 0xD5A4, 0xD5B0, 0xD5D2, 0xD60A,\n    0xD657, 0xD6B6, 0xD726, 0xD7A5, 0xD834, 0xD8CF, 0xD976, 0xDA27,\n    0xDAE1, 0xDBA2, 0xDC6A, 0xDD36, 0xDE05, 0xDED6, 0xDFA7, 0xE077,\n    0xE145, 0xE20F, 0xE2D3, 0xE391, 0xE447, 0xE4F4, 0xE596, 0xE62B,\n    0xE6B3, 0xE72B, 0xE794, 0xE7EA, 0xE82D, 0xE85B, 0xE873, 0xE874,\n    0xE85C, 0xE82D, 0xE7E8, 0xE78F, 0xE722, 0xE6A3, 0xE614, 0xE576,\n    0xE4CA, 0xE412, 0xE34F, 0xE282, 0xE1AE, 0xE0D3, 0xDFF3, 0xDF0E,\n    0xDE28, 0xDD40, 0xDC58, 0xDB73, 0xDA90, 0xD9B2, 0xD8DA, 0xD809,\n    0xD741, 0xD683, 0xD5D0, 0xD52A, 0xD493, 0xD40B, 0xD394, 0xD330,\n    0xD2DF, 0xD2A4, 0xD280, 0xD273, 0xD27A, 0xD28F, 0xD2B0, 0xD2DA,\n    0xD30D, 0xD347, 0xD386, 0xD3C8, 0xD40B, 0xD44F, 0xD491, 0xD4D0,\n    0xD50A, 0xD53D, 0xD567, 0xD588, 0xD59C, 0xD5A4, 0xD7CE, 0xF12D,\n    0xF18E, 0xF8EA, 0x07C7, 0x07BF, 0x07A6, 0x077F, 0x074A, 0x0707,\n    0x06B9, 0x065F, 0x05FA, 0x058D, 0x0516, 0x0499, 0x0414, 0x038A,\n    0x02FB, 0x0268, 0x01D3, 0x013B, 0x00A2, 0x0009, 0xFF72, 0xFEDC,\n    0xFE48, 0xFDB8, 0xFD2C, 0xFCA6, 0xFC26, 0xFBAE, 0xFB3E, 0xFAD7,\n    0xFA7A, 0xFA28, 0xF9E2, 0xF9A9, 0xF97D, 0xF961, 0xF952, 0xF94F,\n    0xF958, 0xF96B, 0xF987, 0xF9AD, 0xF9DC, 0xFA12, 0xFA50, 0xFA94,\n    0xFADE, 0xFB2E, 0xFB82, 0xFBDA, 0xFC35, 0xFC92, 0xFCF2, 0xFD52,\n    0xFDB4, 0xFE15, 0xFE76, 0xFED5, 0xFF32, 0xFF8C, 0xFFE3, 0x0035,\n    0x0083, 0x00CB, 0x010E, 0x014A, 0x017E, 0x01AB, 0x01CF, 0x01E9,\n    0x01F9, 0x01FF, 0x020C, 0x0232, 0x026C, 0x02BA, 0x0316, 0x037F,\n    0x03F0, 0x0468, 0x04E3, 0x055E, 0x05D5, 0x0647, 0x06B0, 0x070C,\n    0x0759, 0x0794, 0x07BA, 0x07C7, 0x2335, 0x233C, 0x234F, 0x236F,\n    0x239A, 0x23CF, 0x240E, 0x2457, 0x24A7, 0x24FF, 0x255D, 0x25C1,\n    0x262B, 0x2699, 0x270A, 0x277E, 0x27F4, 0x286B, 0x28E3, 0x295A,\n    0x29D1, 0x2A45, 0x2AB7, 0x2B25, 0x2B8F, 0x2BF4, 0x2C54, 0x2CAD,\n    0x2CFE, 0x2D48, 0x2D88, 0x2DBF, 0x2DEC, 0x2E0D, 0x2E23, 0x2E2B,\n    0x2E27, 0x2E18, 0x2DFD, 0x2DD7, 0x2DA8, 0x2D70, 0x2D2F, 0x2CE7,\n    0x2C97, 0x2C42, 0x2BE6, 0x2B86, 0x2B22, 0x2ABA, 0x2A4F, 0x29E2,\n    0x2974, 0x2905, 0x2896, 0x2827, 0x27BA, 0x274F, 0x26E7, 0x2682,\n    0x2621, 0x25C5, 0x256E, 0x251E, 0x24D4, 0x2492, 0x2458, 0x2427,\n    0x2400, 0x23E3, 0x23D1, 0x23CB, 0x23CA, 0x23C6, 0x23C0, 0x23B8,\n    0x23AF, 0x23A4, 0x2399, 0x238D, 0x2380, 0x2374, 0x2368, 0x235C,\n    0x2351, 0x2348, 0x2340, 0x233A, 0x2336, 0x2335, 0xCCB8, 0xCCAF,\n    0xCC92, 0xCC64, 0xCC26, 0xCBD8, 0xCB7C, 0xCB13, 0xCA9E, 0xCA1D,\n    0xC993, 0xC8FF, 0xC864, 0xC7C2, 0xC71B, 0xC66F, 0xC5BF, 0xC50D,\n    0xC45A, 0xC3A6, 0xC2F3, 0xC242, 0xC195, 0xC0EB, 0xC047, 0xBFA8,\n    0xBF11, 0xBE83, 0xBDFE, 0xBD83, 0xBD15, 0xBCB3, 0xBC5F, 0xBC19,\n    0xBBE4, 0xBBC0, 0xBBAC, 0xBBA5, 0xBBAB, 0xBBBD, 0xBBDA, 0xBC02,\n    0xBC33, 0xBC6D, 0xBCAF, 0xBCF9, 0xBD4A, 0xBDA0, 0xBDFC, 0xBE5D,\n    0xBEC1, 0xBF28, 0xBF91, 0xBFFC, 0xC067, 0xC0D3, 0xC13E, 0xC1A7,\n    0xC20E, 0xC273, 0xC2D3, 0xC32F, 0xC386, 0xC3D6, 0xC421, 0xC463,\n    0xC49E, 0xC4CF, 0xC4F7, 0xC514, 0xC526, 0xC52D, 0xC53E, 0xC56F,\n    0xC5BC, 0xC620, 0xC699, 0xC721, 0xC7B6, 0xC852, 0xC8F2, 0xC993,\n    0xCA2F, 0xCAC4, 0xCB4C, 0xCBC5, 0xCC29, 0xCC76, 0xCCA7, 0xCCB8,\n    0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6F, 0xFD70, 0xFD70, 0xFD71,\n    0xFD72, 0xFD73, 0xFD73, 0xFD74, 0xFD75, 0xFD75, 0xFD76, 0xFD76,\n    0xFD77, 0xFD77, 0xFD77, 0xFD76, 0xFD76, 0xFD76, 0xFD75, 0xFD74,\n    0xFD74, 0xFD73, 0xFD72, 0xFD71, 0xFD71, 0xFD70, 0xFD6F, 0xFD6F,\n    0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6F,\n    0xFD6F, 0xFD70, 0xFD71, 0xFD71, 0xFD72, 0xFD73, 0xFD74, 0xFD74,\n    0xFD75, 0xFD76, 0xFD76, 0xFD76, 0xFD77, 0xFD77, 0xFD77, 0xFD76,\n    0xFD76, 0xFD76, 0xFD75, 0xFD74, 0xFD74, 0xFD73, 0xFD72, 0xFD71,\n    0xFD71, 0xFD70, 0xFD6F, 0xFD6F, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E,\n    0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E,\n    0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E,\n    0xFD6E, 0xFD6E, 0x000E, 0x000D, 0x000A, 0x0004, 0xFFFE, 0xFFF5,\n    0xFFEC, 0xFFE1, 0xFFD7, 0xFFCC, 0xFFC1, 0xFFB6, 0xFFAD, 0xFFA4,\n    0xFF9D, 0xFF97, 0xFF94, 0xFF93, 0xFF94, 0xFF97, 0xFF9C, 0xFFA2,\n    0xFFAA, 0xFFB3, 0xFFBD, 0xFFC7, 0xFFD1, 0xFFDB, 0xFFE5, 0xFFEF,\n    0xFFF8, 0x0000, 0x0005, 0x000A, 0x000D, 0x000E, 0x000D, 0x000A,\n    0x0005, 0x0000, 0xFFF8, 0xFFEF, 0xFFE5, 0xFFDB, 0xFFD1, 0xFFC7,\n    0xFFBD, 0xFFB3, 0xFFAA, 0xFFA2, 0xFF9C, 0xFF97, 0xFF94, 0xFF93,\n    0xFF94, 0xFF97, 0xFF9C, 0xFFA2, 0xFFAA, 0xFFB3, 0xFFBD, 0xFFC7,\n    0xFFD1, 0xFFDB, 0xFFE5, 0xFFEF, 0xFFF8, 0x0000, 0x0005, 0x000A,\n    0x000D, 0x000E, 0x000E, 0x000E, 0x000E, 0x000E, 0x000E, 0x000E,\n    0x000E, 0x000E, 0x000E, 0x000E, 0x000E, 0x000E, 0x000E, 0x000E,\n    0x000E, 0x000E, 0x000E, 0x000E, 0xC079, 0xC066, 0xC02E, 0xBFD6,\n    0xBF64, 0xBEDD, 0xBE44, 0xBD9F, 0xBCF4, 0xBC45, 0xBB99, 0xBAF5,\n    0xBA5C, 0xB9D4, 0xB962, 0xB90B, 0xB8D3, 0xB8BF, 0xB8D1, 0xB903,\n    0xB952, 0xB9B9, 0xBA34, 0xBAC0, 0xBB58, 0xBBF8, 0xBC9C, 0xBD40,\n    0xBDE1, 0xBE78, 0xBF04, 0xBF80, 0xBFE7, 0xC035, 0xC068, 0xC079,\n    0xC068, 0xC035, 0xBFE7, 0xBF80, 0xBF04, 0xBE78, 0xBDE1, 0xBD40,\n    0xBC9C, 0xBBF8, 0xBB58, 0xBAC0, 0xBA34, 0xB9B9, 0xB952, 0xB903,\n    0xB8D1, 0xB8BF, 0xB8D1, 0xB903, 0xB952, 0xB9B9, 0xBA34, 0xBAC0,\n    0xBB58, 0xBBF8, 0xBC9C, 0xBD40, 0xBDE1, 0xBE78, 0xBF04, 0xBF80,\n    0xBFE7, 0xC035, 0xC068, 0xC079, 0xC079, 0xC079, 0xC079, 0xC079,\n    0xC079, 0xC079, 0xC079, 0xC079, 0xC079, 0xC079, 0xC079, 0xC079,\n    0xC079, 0xC079, 0xC079, 0xC079, 0xC079, 0xC079, 0x248D, 0x24AF,\n    0x2510, 0x25A8, 0x266F, 0x275B, 0x2864, 0x2983, 0x2AAE, 0x2BDD,\n    0x2D08, 0x2E27, 0x2F30, 0x301C, 0x30E3, 0x317B, 0x31DC, 0x31FE,\n    0x31E0, 0x3188, 0x3100, 0x304C, 0x2F75, 0x2E82, 0x2D7A, 0x2C63,\n    0x2B46, 0x2A28, 0x2911, 0x2809, 0x2716, 0x263F, 0x258B, 0x2503,\n    0x24AB, 0x248D, 0x24AB, 0x2503, 0x258B, 0x263F, 0x2716, 0x2809,\n    0x2911, 0x2A28, 0x2B46, 0x2C63, 0x2D7A, 0x2E82, 0x2F75, 0x304C,\n    0x3100, 0x3188, 0x31E0, 0x31FE, 0x31E0, 0x3188, 0x3100, 0x304C,\n    0x2F75, 0x2E82, 0x2D7A, 0x2C63, 0x2B46, 0x2A28, 0x2911, 0x2809,\n    0x2716, 0x263F, 0x258C, 0x2503, 0x24AB, 0x248D, 0x248D, 0x248D,\n    0x248D, 0x248D, 0x248D, 0x248D, 0x248D, 0x248D, 0x248D, 0x248D,\n    0x248D, 0x248D, 0x248D, 0x248D, 0x248D, 0x248D, 0x248D, 0x248D,\n    0x3319, 0x3315, 0x330C, 0x32FD, 0x32EA, 0x32D3, 0x32B9, 0x329E,\n    0x3281, 0x3263, 0x3246, 0x322A, 0x3211, 0x31FA, 0x31E7, 0x31D8,\n    0x31CE, 0x31CB, 0x31CE, 0x31D7, 0x31E4, 0x31F5, 0x320A, 0x3222,\n    0x323B, 0x3256, 0x3272, 0x328E, 0x32A9, 0x32C2, 0x32DA, 0x32EE,\n    0x3300, 0x330D, 0x3316, 0x3319, 0x3316, 0x330D, 0x3300, 0x32EE,\n    0x32DA, 0x32C2, 0x32A9, 0x328E, 0x3272, 0x3256, 0x323B, 0x3222,\n    0x320A, 0x31F5, 0x31E4, 0x31D7, 0x31CE, 0x31CB, 0x31CE, 0x31D7,\n    0x31E4, 0x31F5, 0x320A, 0x3222, 0x323B, 0x3256, 0x3272, 0x328E,\n    0x32A9, 0x32C2, 0x32DA, 0x32EE, 0x3300, 0x330D, 0x3316, 0x3319,\n    0x3319, 0x3319, 0x3319, 0x3319, 0x3319, 0x3319, 0x3319, 0x3319,\n    0x3319, 0x3319, 0x3319, 0x3319, 0x3319, 0x3319, 0x3319, 0x3319,\n    0x3319, 0x3319, 0x14A2, 0x14B0, 0x14DA, 0x151C, 0x1571, 0x15D6,\n    0x1648, 0x16C4, 0x1744, 0x17C6, 0x1847, 0x18C2, 0x1934, 0x199A,\n    0x19EF, 0x1A30, 0x1A5A, 0x1A69, 0x1A5C, 0x1A36, 0x19FB, 0x19AE,\n    0x1952, 0x18E9, 0x1878, 0x1800, 0x1785, 0x170B, 0x1693, 0x1621,\n    0x15B9, 0x155C, 0x150F, 0x14D4, 0x14AF, 0x14A2, 0x14AF, 0x14D4,\n    0x150F, 0x155C, 0x15B9, 0x1621, 0x1693, 0x170B, 0x1785, 0x1800,\n    0x1878, 0x18E9, 0x1952, 0x19AE, 0x19FB, 0x1A36, 0x1A5C, 0x1A69,\n    0x1A5C, 0x1A36, 0x19FB, 0x19AE, 0x1952, 0x18E9, 0x1878, 0x1800,\n    0x1785, 0x170B, 0x1693, 0x1621, 0x15B9, 0x155C, 0x150F, 0x14D4,\n    0x14AF, 0x14A2, 0x14A2, 0x14A2, 0x14A2, 0x14A2, 0x14A2, 0x14A2,\n    0x14A2, 0x14A2, 0x14A2, 0x14A2, 0x14A2, 0x14A2, 0x14A2, 0x14A2,\n    0x14A2, 0x14A2, 0x14A2, 0x14A2, 0xB8A0, 0xB89A, 0xB889, 0xB86E,\n    0xB84B, 0xB821, 0xB7F2, 0xB7C0, 0xB78B, 0xB755, 0xB720, 0xB6ED,\n    0xB6BE, 0xB694, 0xB671, 0xB656, 0xB645, 0xB63F, 0xB645, 0xB654,\n    0xB66C, 0xB68C, 0xB6B2, 0xB6DD, 0xB70C, 0xB73D, 0xB770, 0xB7A2,\n    0xB7D4, 0xB802, 0xB82D, 0xB853, 0xB873, 0xB88B, 0xB89B, 0xB8A0,\n    0xB89B, 0xB88B, 0xB873, 0xB853, 0xB82D, 0xB802, 0xB7D4, 0xB7A2,\n    0xB770, 0xB73D, 0xB70C, 0xB6DD, 0xB6B2, 0xB68C, 0xB66C, 0xB654,\n    0xB645, 0xB63F, 0xB645, 0xB654, 0xB66C, 0xB68C, 0xB6B2, 0xB6DD,\n    0xB70C, 0xB73D, 0xB770, 0xB7A2, 0xB7D4, 0xB802, 0xB82D, 0xB853,\n    0xB873, 0xB88B, 0xB89B, 0xB8A0, 0xB8A0, 0xB8A0, 0xB8A0, 0xB8A0,\n    0xB8A0, 0xB8A0, 0xB8A0, 0xB8A0, 0xB8A0, 0xB8A0, 0xB8A0, 0xB8A0,\n    0xB8A0, 0xB8A0, 0xB8A0, 0xB8A0, 0xB8A0, 0xB8A0, 0xBF40, 0xBF32,\n    0xBF08, 0xBEC8, 0xBE74, 0xBE10, 0xBD9F, 0xBD25, 0xBCA7, 0xBC26,\n    0xBBA7, 0xBB2D, 0xBABD, 0xBA59, 0xBA04, 0xB9C4, 0xB99B, 0xB98C,\n    0xB999, 0xB9BE, 0xB9F8, 0xBA44, 0xBAA0, 0xBB07, 0xBB77, 0xBBED,\n    0xBC66, 0xBCDF, 0xBD56, 0xBDC6, 0xBE2D, 0xBE88, 0xBED4, 0xBF0E,\n    0xBF33, 0xBF40, 0xBF33, 0xBF0E, 0xBED4, 0xBE88, 0xBE2D, 0xBDC6,\n    0xBD56, 0xBCDF, 0xBC66, 0xBBED, 0xBB77, 0xBB07, 0xBAA0, 0xBA44,\n    0xB9F8, 0xB9BE, 0xB999, 0xB98C, 0xB999, 0xB9BE, 0xB9F8, 0xBA44,\n    0xBAA0, 0xBB07, 0xBB77, 0xBBED, 0xBC66, 0xBCDF, 0xBD56, 0xBDC6,\n    0xBE2D, 0xBE88, 0xBED4, 0xBF0E, 0xBF33, 0xBF40, 0xBF40, 0xBF40,\n    0xBF40, 0xBF40, 0xBF40, 0xBF40, 0xBF40, 0xBF40, 0xBF40, 0xBF40,\n    0xBF40, 0xBF40, 0xBF40, 0xBF40, 0xBF40, 0xBF40, 0xBF40, 0xBF40,\n    0x2537, 0x2555, 0x25AA, 0x2630, 0x26DE, 0x27AE, 0x2897, 0x2993,\n    0x2A9A, 0x2BA4, 0x2CAB, 0x2DA7, 0x2E90, 0x2F60, 0x300E, 0x3094,\n    0x30E9, 0x3107, 0x30EC, 0x30A0, 0x3027, 0x2F8A, 0x2ECD, 0x2DF7,\n    0x2D0F, 0x2C1A, 0x2B1F, 0x2A24, 0x292F, 0x2847, 0x2771, 0x26B4,\n    0x2617, 0x259E, 0x2552, 0x2537, 0x2552, 0x259E, 0x2617, 0x26B4,\n    0x2771, 0x2847, 0x292F, 0x2A24, 0x2B1F, 0x2C1A, 0x2D0F, 0x2DF7,\n    0x2ECD, 0x2F8A, 0x3027, 0x30A0, 0x30EC, 0x3107, 0x30EC, 0x30A0,\n    0x3027, 0x2F8A, 0x2ECD, 0x2DF7, 0x2D0F, 0x2C1A, 0x2B1F, 0x2A24,\n    0x292F, 0x2847, 0x2771, 0x26B4, 0x2617, 0x259E, 0x2552, 0x2537,\n    0x2537, 0x2537, 0x2537, 0x2537, 0x2537, 0x2537, 0x2537, 0x2537,\n    0x2537, 0x2537, 0x2537, 0x2537, 0x2537, 0x2537, 0x2537, 0x2537,\n    0x2537, 0x2537, 0xCDB1, 0xCDB4, 0xCDBD, 0xCDCA, 0xCDDC, 0xCDF2,\n    0xCE0A, 0xCE24, 0xCE40, 0xCE5B, 0xCE76, 0xCE91, 0xCEA9, 0xCEBE,\n    0xCED0, 0xCEDE, 0xCEE7, 0xCEEA, 0xCEE7, 0xCEE0, 0xCED3, 0xCEC3,\n    0xCEAF, 0xCE99, 0xCE81, 0xCE67, 0xCE4D, 0xCE33, 0xCE1A, 0xCE02,\n    0xCDEC, 0xCDD8, 0xCDC8, 0xCDBB, 0xCDB3, 0xCDB1, 0xCDB3, 0xCDBB,\n    0xCDC8, 0xCDD8, 0xCDEC, 0xCE02, 0xCE1A, 0xCE33, 0xCE4D, 0xCE67,\n    0xCE81, 0xCE99, 0xCEAF, 0xCEC3, 0xCED3, 0xCEE0, 0xCEE7, 0xCEEA,\n    0xCEE7, 0xCEE0, 0xCED3, 0xCEC3, 0xCEAF, 0xCE99, 0xCE81, 0xCE67,\n    0xCE4D, 0xCE33, 0xCE1A, 0xCE02, 0xCDEC, 0xCDD8, 0xCDC8, 0xCDBB,\n    0xCDB3, 0xCDB1, 0xCDB1, 0xCDB1, 0xCDB1, 0xCDB1, 0xCDB1, 0xCDB1,\n    0xCDB1, 0xCDB1, 0xCDB1, 0xCDB1, 0xCDB1, 0xCDB1, 0xCDB1, 0xCDB1,\n    0xCDB1, 0xCDB1, 0xCDB1, 0xCDB1, 0xEA61, 0xEA54, 0xEA30, 0xE9F8,\n    0xE9AF, 0xE957, 0xE8F5, 0xE88B, 0xE81C, 0xE7AC, 0xE73E, 0xE6D3,\n    0xE671, 0xE61A, 0xE5D0, 0xE598, 0xE574, 0xE567, 0xE573, 0xE593,\n    0xE5C6, 0xE608, 0xE658, 0xE6B2, 0xE714, 0xE77B, 0xE7E4, 0xE84E,\n    0xE8B5, 0xE917, 0xE971, 0xE9C0, 0xEA03, 0xEA35, 0xEA56, 0xEA61,\n    0xEA56, 0xEA35, 0xEA03, 0xE9C0, 0xE971, 0xE917, 0xE8B5, 0xE84E,\n    0xE7E4, 0xE77B, 0xE714, 0xE6B2, 0xE658, 0xE608, 0xE5C6, 0xE593,\n    0xE573, 0xE567, 0xE573, 0xE593, 0xE5C6, 0xE608, 0xE658, 0xE6B2,\n    0xE714, 0xE77B, 0xE7E4, 0xE84E, 0xE8B5, 0xE917, 0xE971, 0xE9C0,\n    0xEA03, 0xEA35, 0xEA56, 0xEA61, 0xEA61, 0xEA61, 0xEA61, 0xEA61,\n    0xEA61, 0xEA61, 0xEA61, 0xEA61, 0xEA61, 0xEA61, 0xEA61, 0xEA61,\n    0xEA61, 0xEA61, 0xEA61, 0xEA61, 0xEA61, 0xEA61, 0xB9D0, 0xB9CA,\n    0xB9BB, 0xB9A2, 0xB981, 0xB95B, 0xB930, 0xB901, 0xB8D0, 0xB89F,\n    0xB86E, 0xB83F, 0xB814, 0xB7ED, 0xB7CD, 0xB7B4, 0xB7A4, 0xB79F,\n    0xB7A4, 0xB7B2, 0xB7C8, 0xB7E6, 0xB809, 0xB830, 0xB85B, 0xB889,\n    0xB8B7, 0xB8E6, 0xB913, 0xB93E, 0xB966, 0xB989, 0xB9A6, 0xB9BD,\n    0xB9CB, 0xB9D0, 0xB9CB, 0xB9BD, 0xB9A6, 0xB989, 0xB966, 0xB93E,\n    0xB913, 0xB8E6, 0xB8B7, 0xB889, 0xB85B, 0xB830, 0xB809, 0xB7E6,\n    0xB7C8, 0xB7B2, 0xB7A4, 0xB79F, 0xB7A4, 0xB7B2, 0xB7C8, 0xB7E6,\n    0xB809, 0xB830, 0xB85B, 0xB889, 0xB8B7, 0xB8E6, 0xB913, 0xB93E,\n    0xB966, 0xB989, 0xB9A6, 0xB9BD, 0xB9CB, 0xB9D0, 0xB9D0, 0xB9D0,\n    0xB9D0, 0xB9D0, 0xB9D0, 0xB9D0, 0xB9D0, 0xB9D0, 0xB9D0, 0xB9D0,\n    0xB9D0, 0xB9D0, 0xB9D0, 0xB9D0, 0xB9D0, 0xB9D0, 0xB9D0, 0xB9D0,\n    0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F,\n    0x0000, 0x001D, 0x0072, 0x00F7, 0x01A6, 0x0278, 0x0367, 0x046C,\n    0x0582, 0x06A0, 0x07C1, 0x08DD, 0x09F0, 0x0AF1, 0x0BDB, 0x0CA7,\n    0x0D4E, 0x0DCA, 0x0E14, 0x0E26, 0x0DF9, 0x0D92, 0x0CFB, 0x0C39,\n    0x0B50, 0x0A44, 0x091A, 0x07D6, 0x067B, 0x050F, 0x0395, 0x0211,\n    0x0088, 0xFF00, 0xFD79, 0xFBFA, 0xFA86, 0xF922, 0xF7D2, 0xF69B,\n    0xF580, 0xF485, 0xF3AF, 0xF302, 0xF283, 0xF235, 0xF209, 0xF1EC,\n    0xF1DD, 0xF1DC, 0xF1E8, 0xF200, 0xF224, 0xF253, 0xF28D, 0xF2D0,\n    0xF31C, 0xF371, 0xF3CD, 0xF431, 0xF49B, 0xF50A, 0xF57F, 0xF5F9,\n    0xF676, 0xF6F6, 0xF779, 0xF7FE, 0xF883, 0xF90A, 0xF990, 0xFA15,\n    0xFA99, 0xFB1B, 0xFB9A, 0xFC16, 0xFC8E, 0xFD00, 0xFD6E, 0xFDD5,\n    0xFE36, 0xFE8F, 0xFEE0, 0xFF29, 0xFF68, 0xFF9D, 0xFFC8, 0xFFE7,\n    0xFFFA, 0x0000, 0x0000, 0xFFF0, 0xFFC2, 0xFF7A, 0xFF19, 0xFEA5,\n    0xFE1F, 0xFD8C, 0xFCEF, 0xFC4A, 0xFBA1, 0xFAF8, 0xFA51, 0xF9B1,\n    0xF919, 0xF88E, 0xF812, 0xF7A9, 0xF757, 0xF71D, 0xF701, 0xF6FC,\n    0xF705, 0xF71C, 0xF740, 0xF76F, 0xF7A8, 0xF7EB, 0xF836, 0xF887,\n    0xF8DE, 0xF93A, 0xF99A, 0xF9FC, 0xFA5F, 0xFAC2, 0xFB24, 0xFB85,\n    0xFBE2, 0xFC3B, 0xFC8E, 0xFCDB, 0xFD20, 0xFD5C, 0xFD8F, 0xFDB6,\n    0xFDD7, 0xFDF6, 0xFE15, 0xFE32, 0xFE4E, 0xFE69, 0xFE83, 0xFE9C,\n    0xFEB4, 0xFECA, 0xFEE0, 0xFEF5, 0xFF09, 0xFF1B, 0xFF2D, 0xFF3E,\n    0xFF4F, 0xFF5E, 0xFF6C, 0xFF7A, 0xFF87, 0xFF93, 0xFF9E, 0xFFA9,\n    0xFFB2, 0xFFBC, 0xFFC4, 0xFFCC, 0xFFD3, 0xFFDA, 0xFFDF, 0xFFE5,\n    0xFFEA, 0xFFEE, 0xFFF2, 0xFFF5, 0xFFF8, 0xFFFA, 0xFFFC, 0xFFFE,\n    0xFFFF, 0x0000, 0x0000, 0x0000, 0x0F87, 0x0F8F, 0x0FA7, 0x0FCC,\n    0x0FFE, 0x103A, 0x107E, 0x10CA, 0x111B, 0x116F, 0x11C5, 0x121C,\n    0x1271, 0x12C2, 0x130F, 0x1355, 0x1393, 0x13C7, 0x13EF, 0x140A,\n    0x1415, 0x1415, 0x140C, 0x13FB, 0x13E3, 0x13C6, 0x13A2, 0x137A,\n    0x134D, 0x131C, 0x12E8, 0x12B2, 0x127A, 0x1241, 0x1208, 0x11CE,\n    0x1196, 0x115E, 0x1129, 0x10F7, 0x10C8, 0x109D, 0x1077, 0x1056,\n    0x103B, 0x1026, 0x1016, 0x1007, 0x0FF8, 0x0FEB, 0x0FDE, 0x0FD3,\n    0x0FC8, 0x0FBE, 0x0FB5, 0x0FAC, 0x0FA5, 0x0F9E, 0x0F98, 0x0F92,\n    0x0F8D, 0x0F89, 0x0F85, 0x0F82, 0x0F7F, 0x0F7D, 0x0F7B, 0x0F7A,\n    0x0F79, 0x0F78, 0x0F78, 0x0F78, 0x0F78, 0x0F78, 0x0F79, 0x0F7A,\n    0x0F7B, 0x0F7C, 0x0F7D, 0x0F7E, 0x0F7F, 0x0F81, 0x0F82, 0x0F83,\n    0x0F84, 0x0F85, 0x0F86, 0x0F86, 0x0F87, 0x0F87, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xFFFE, 0xFFF9, 0xFFEF, 0xFFE1, 0xFFCD, 0xFFB2,\n    0xFF8F, 0xFF63, 0xFF2E, 0xFEF3, 0xFEB0, 0xFE68, 0xFE1C, 0xFDCB,\n    0xFD78, 0xFD22, 0xFCCB, 0xFC74, 0xFC1C, 0xFBC7, 0xFB73, 0xFB22,\n    0xFAD5, 0xFA8D, 0xFA4A, 0xFA0E, 0xF9D9, 0xF9AC, 0xF988, 0xF96E,\n    0xF95E, 0xF95A, 0xF95E, 0xF965, 0xF96F, 0xF97C, 0xF98C, 0xF99E,\n    0xF9B3, 0xF9CB, 0xF9E5, 0xFA01, 0xFA1F, 0xFA40, 0xFA62, 0xFA86,\n    0xFAAB, 0xFAD2, 0xFAFA, 0xFB24, 0xFB4E, 0xFB7A, 0xFBA6, 0xFBD3,\n    0xFC01, 0xFC2F, 0xFC5D, 0xFC8C, 0xFCBB, 0xFCEA, 0xFD18, 0xFD47,\n    0xFD74, 0xFDA2, 0xFDCE, 0xFDFA, 0xFE25, 0xFE4F, 0xFE78, 0xFE9F,\n    0xFEC5, 0xFEEA, 0xFF0D, 0xFF2E, 0xFF4D, 0xFF6A, 0xFF85, 0xFF9E,\n    0xFFB4, 0xFFC7, 0xFFD8, 0xFFE6, 0xFFF2, 0xFFFA, 0xFFFF, 0x0000,\n    0x0000, 0xFFDA, 0xFF71, 0xFED5, 0xFE17, 0xFD46, 0xFC73, 0xFBAC,\n    0xFB03, 0xFA87, 0xFA47, 0xFA55, 0xFA9A, 0xFAF6, 0xFB67, 0xFBEA,\n    0xFC7D, 0xFD1D, 0xFDCA, 0xFE80, 0xFF3D, 0xFFFF, 0x00C3, 0x0188,\n    0x024C, 0x030C, 0x03C6, 0x0478, 0x051F, 0x05BA, 0x0646, 0x06C1,\n    0x0728, 0x077A, 0x07B4, 0x07D5, 0x07E4, 0x07EF, 0x07F5, 0x07F5,\n    0x07F1, 0x07E8, 0x07DB, 0x07CA, 0x07B4, 0x079B, 0x077F, 0x075F,\n    0x073B, 0x0715, 0x06EC, 0x06C0, 0x0692, 0x0662, 0x062F, 0x05FB,\n    0x05C5, 0x058D, 0x0554, 0x051A, 0x04DF, 0x04A4, 0x0468, 0x042B,\n    0x03EF, 0x03B2, 0x0376, 0x033A, 0x02FE, 0x02C4, 0x028A, 0x0252,\n    0x021B, 0x01E5, 0x01B2, 0x0180, 0x0150, 0x0123, 0x00F8, 0x00D0,\n    0x00AB, 0x0089, 0x006B, 0x004F, 0x0038, 0x0024, 0x0014, 0x0009,\n    0x0002, 0x0000, 0xF9DA, 0xF9EE, 0xFA26, 0xFA7C, 0xFAE9, 0xFB67,\n    0xFBF0, 0xFC7D, 0xFD09, 0xFD8C, 0xFE01, 0xFE60, 0xFEB6, 0xFF11,\n    0xFF6F, 0xFFD1, 0x0034, 0x009A, 0x0101, 0x0167, 0x01CD, 0x0231,\n    0x0293, 0x02F1, 0x034B, 0x03A0, 0x03F0, 0x0439, 0x047B, 0x04B5,\n    0x04E5, 0x050C, 0x0529, 0x053A, 0x053F, 0x0537, 0x0525, 0x050F,\n    0x04F5, 0x04D6, 0x04B3, 0x048C, 0x0462, 0x0434, 0x0402, 0x03CE,\n    0x0396, 0x035C, 0x031F, 0x02DF, 0x029E, 0x025A, 0x0214, 0x01CD,\n    0x0185, 0x013B, 0x00F0, 0x00A4, 0x0058, 0x000B, 0xFFBF, 0xFF72,\n    0xFF24, 0xFED8, 0xFE8B, 0xFE3F, 0xFDF4, 0xFDAA, 0xFD62, 0xFD1A,\n    0xFCD5, 0xFC91, 0xFC4F, 0xFC0F, 0xFBD2, 0xFB97, 0xFB5F, 0xFB2A,\n    0xFAF8, 0xFACA, 0xFA9F, 0xFA77, 0xFA54, 0xFA35, 0xFA1A, 0xFA03,\n    0xF9F1, 0xF9E4, 0xF9DC, 0xF9DA, 0x3F00,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_7F.inc.c",
    "content": "static const struct Animation anim_7F[] = {\n    0,\n    189,\n    0,\n    0,\n    0x40,\n    ANIMINDEX_NUMPARTS(anim_7F_indices),\n    anim_7F_values,\n    anim_7F_indices,\n    0,\n};\n\n\nstatic const u16 anim_7F_indices[] = {\n    0x0001, 0x0000, 0x0040, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0041, 0x0001, 0x0000,\n    0x0040, 0x0653, 0x0040, 0x0693, 0x0040, 0x06D3,\n    0x0040, 0x0593, 0x0040, 0x05D3, 0x0040, 0x0613,\n    0x0040, 0x04D3, 0x0040, 0x0513, 0x0040, 0x0553,\n    0x0001, 0x04CF, 0x0001, 0x04D0, 0x0001, 0x04D1,\n    0x0040, 0x0046, 0x0040, 0x0086, 0x0040, 0x00C6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0045,\n    0x0001, 0x0042, 0x0001, 0x0043, 0x0001, 0x0044,\n    0x0001, 0x04CB, 0x0001, 0x04CC, 0x0001, 0x04CD,\n    0x0040, 0x010A, 0x0040, 0x014A, 0x0040, 0x018A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0109,\n    0x0001, 0x0106, 0x0001, 0x0107, 0x0001, 0x0108,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x04CE,\n    0x0040, 0x040B, 0x0040, 0x044B, 0x0040, 0x048B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0040, 0x03CB,\n    0x0040, 0x038A, 0x0001, 0x0000, 0x0001, 0x03CA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x04D2,\n    0x0040, 0x02CA, 0x0040, 0x030A, 0x0040, 0x034A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0040, 0x028A,\n    0x0040, 0x01CA, 0x0040, 0x020A, 0x0040, 0x024A,\n};\n\nstatic const s16 anim_7F_values[] = {\n    0x0000, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA,\n    0x00AA, 0x00AB, 0x00AB, 0x00AB, 0x00AB, 0x00AC, 0x00AC, 0x00AC,\n    0x00AC, 0x00AC, 0x00AC, 0x00AC, 0x00AC, 0x00AC, 0x00AC, 0x00AB,\n    0x00AB, 0x00AA, 0x00A9, 0x00A7, 0x00A6, 0x00A4, 0x00A2, 0x00A0,\n    0x009E, 0x009C, 0x009A, 0x0098, 0x0097, 0x0096, 0x0095, 0x0094,\n    0x0094, 0x0094, 0x0094, 0x0095, 0x0095, 0x0096, 0x0097, 0x0098,\n    0x0099, 0x009B, 0x009C, 0x009D, 0x009F, 0x00A0, 0x00A1, 0x00A3,\n    0x00A4, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x00A9, 0x00AA,\n    0x00AA, 0x3FFF, 0x268B, 0x119F, 0xE81F, 0xF5E7, 0xF8EB, 0xF8EB,\n    0xF8EB, 0xF8EB, 0xF8E6, 0xF8DA, 0xF8C5, 0xF8A9, 0xF886, 0xF85D,\n    0xF82E, 0xF7F9, 0xF7C0, 0xF782, 0xF740, 0xF6FB, 0xF6B2, 0xF668,\n    0xF61B, 0xF5CD, 0xF57E, 0xF52E, 0xF4DE, 0xF48F, 0xF441, 0xF3F5,\n    0xF3AA, 0xF362, 0xF31C, 0xF2DA, 0xF29C, 0xF263, 0xF22E, 0xF1FF,\n    0xF1D6, 0xF1B3, 0xF197, 0xF183, 0xF176, 0xF172, 0xF17B, 0xF197,\n    0xF1C4, 0xF1FF, 0xF248, 0xF29C, 0xF2FB, 0xF362, 0xF3CF, 0xF441,\n    0xF4B7, 0xF52E, 0xF5A5, 0xF61B, 0xF68D, 0xF6FB, 0xF761, 0xF7C0,\n    0xF814, 0xF85D, 0xF898, 0xF8C5, 0xF8E1, 0xF8EB, 0xDC09, 0xDC09,\n    0xDC09, 0xDC09, 0xDC03, 0xDBF3, 0xDBDA, 0xDBB7, 0xDB8B, 0xDB58,\n    0xDB1D, 0xDADB, 0xDA93, 0xDA46, 0xD9F3, 0xD99D, 0xD942, 0xD8E5,\n    0xD885, 0xD824, 0xD7C1, 0xD75D, 0xD6FA, 0xD697, 0xD635, 0xD5D5,\n    0xD578, 0xD51D, 0xD4C7, 0xD474, 0xD427, 0xD3DF, 0xD39E, 0xD363,\n    0xD32F, 0xD303, 0xD2E1, 0xD2C7, 0xD2B7, 0xD2B1, 0xD2BE, 0xD2E1,\n    0xD318, 0xD363, 0xD3BE, 0xD427, 0xD49D, 0xD51D, 0xD5A6, 0xD635,\n    0xD6C8, 0xD75D, 0xD7F2, 0xD885, 0xD914, 0xD99D, 0xDA1D, 0xDA93,\n    0xDAFD, 0xDB58, 0xDBA2, 0xDBDA, 0xDBFD, 0xDC09, 0xD5A4, 0xD5A4,\n    0xD5A4, 0xD5A4, 0xD5A9, 0xD5B7, 0xD5CF, 0xD5EE, 0xD616, 0xD645,\n    0xD67B, 0xD6B7, 0xD6F9, 0xD73F, 0xD78A, 0xD7D9, 0xD82C, 0xD881,\n    0xD8D9, 0xD932, 0xD98C, 0xD9E7, 0xDA42, 0xDA9C, 0xDAF5, 0xDB4D,\n    0xDBA2, 0xDBF4, 0xDC43, 0xDC8E, 0xDCD5, 0xDD17, 0xDD53, 0xDD88,\n    0xDDB8, 0xDDDF, 0xDDFF, 0xDE17, 0xDE25, 0xDE2A, 0xDE1F, 0xDDFF,\n    0xDDCC, 0xDD88, 0xDD35, 0xDCD5, 0xDC69, 0xDBF4, 0xDB78, 0xDAF5,\n    0xDA6F, 0xD9E7, 0xD95F, 0xD8D9, 0xD856, 0xD7D9, 0xD764, 0xD6F9,\n    0xD698, 0xD645, 0xD601, 0xD5CF, 0xD5AF, 0xD5A4, 0xD7CE, 0xF12D,\n    0xF18E, 0xF8EA, 0x07C7, 0x07C7, 0x07C7, 0x07C7, 0x07CC, 0x07D9,\n    0x07EF, 0x080C, 0x082E, 0x0856, 0x0882, 0x08B0, 0x08E1, 0x0912,\n    0x0944, 0x0974, 0x09A3, 0x09CF, 0x09F6, 0x0A19, 0x0A36, 0x0A4B,\n    0x0A59, 0x0A5E, 0x0A5D, 0x0A59, 0x0A53, 0x0A4B, 0x0A41, 0x0A36,\n    0x0A28, 0x0A19, 0x0A08, 0x09F6, 0x09E3, 0x09CF, 0x09B9, 0x09A3,\n    0x098C, 0x0974, 0x095C, 0x0944, 0x092B, 0x0912, 0x08FA, 0x08E1,\n    0x08C8, 0x08B0, 0x0899, 0x0882, 0x086B, 0x0856, 0x0842, 0x082E,\n    0x081C, 0x080C, 0x07FD, 0x07EF, 0x07E3, 0x07D9, 0x07D2, 0x07CC,\n    0x07C8, 0x07C7, 0x2335, 0x2335, 0x2335, 0x2335, 0x2344, 0x236E,\n    0x23B1, 0x2409, 0x2473, 0x24ED, 0x2573, 0x2602, 0x2697, 0x272F,\n    0x27C7, 0x285C, 0x28EB, 0x2971, 0x29EB, 0x2A55, 0x2AAD, 0x2AF0,\n    0x2B1A, 0x2B29, 0x2B25, 0x2B1A, 0x2B08, 0x2AF0, 0x2AD1, 0x2AAD,\n    0x2A84, 0x2A55, 0x2A22, 0x29EB, 0x29B0, 0x2971, 0x2930, 0x28EB,\n    0x28A5, 0x285C, 0x2812, 0x27C7, 0x277B, 0x272F, 0x26E3, 0x2697,\n    0x264C, 0x2602, 0x25B9, 0x2573, 0x252E, 0x24ED, 0x24AE, 0x2473,\n    0x243C, 0x2409, 0x23DA, 0x23B1, 0x238D, 0x236E, 0x2356, 0x2344,\n    0x2339, 0x2335, 0xCCB8, 0xCCB8, 0xCCB8, 0xCCB8, 0xCCBE, 0xCCCF,\n    0xCCE9, 0xCD0C, 0xCD36, 0xCD66, 0xCD9B, 0xCDD3, 0xCE0E, 0xCE4A,\n    0xCE87, 0xCEC2, 0xCEFA, 0xCF2F, 0xCF5F, 0xCF89, 0xCFAC, 0xCFC6,\n    0xCFD7, 0xCFDD, 0xCFDB, 0xCFD7, 0xCFD0, 0xCFC6, 0xCFBA, 0xCFAC,\n    0xCF9B, 0xCF89, 0xCF75, 0xCF5F, 0xCF48, 0xCF2F, 0xCF15, 0xCEFA,\n    0xCEDE, 0xCEC2, 0xCEA4, 0xCE87, 0xCE69, 0xCE4A, 0xCE2C, 0xCE0E,\n    0xCDF1, 0xCDD3, 0xCDB7, 0xCD9B, 0xCD80, 0xCD66, 0xCD4D, 0xCD36,\n    0xCD20, 0xCD0C, 0xCCFA, 0xCCE9, 0xCCDB, 0xCCCF, 0xCCC5, 0xCCBE,\n    0xCCBA, 0xCCB8, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E,\n    0xFD6F, 0xFD70, 0xFD71, 0xFD72, 0xFD74, 0xFD76, 0xFD77, 0xFD79,\n    0xFD7B, 0xFD7D, 0xFD7F, 0xFD81, 0xFD83, 0xFD85, 0xFD87, 0xFD89,\n    0xFD8B, 0xFD8C, 0xFD8E, 0xFD8F, 0xFD90, 0xFD91, 0xFD92, 0xFD93,\n    0xFD94, 0xFD95, 0xFD96, 0xFD97, 0xFD98, 0xFD9A, 0xFD9B, 0xFD9D,\n    0xFDA0, 0xFDA2, 0xFDA6, 0xFDAB, 0xFDB1, 0xFDB8, 0xFDBE, 0xFDC4,\n    0xFDC9, 0xFDCC, 0xFDCD, 0xFDCE, 0xFDCE, 0xFDCD, 0xFDCB, 0xFDC8,\n    0xFDC4, 0xFDBF, 0xFDB7, 0xFDAC, 0xFD9E, 0xFD90, 0xFD83, 0xFD78,\n    0xFD70, 0xFD6E, 0x000E, 0x000E, 0x000E, 0x000E, 0x000F, 0x0011,\n    0x0014, 0x0019, 0x001E, 0x0024, 0x002C, 0x0033, 0x003C, 0x0044,\n    0x004D, 0x0057, 0x0060, 0x006A, 0x0073, 0x007C, 0x0085, 0x008D,\n    0x0095, 0x009C, 0x00A3, 0x00A9, 0x00B0, 0x00B6, 0x00BC, 0x00C2,\n    0x00C9, 0x00CF, 0x00D5, 0x00DB, 0x00E1, 0x00E7, 0x00EE, 0x00F4,\n    0x00FB, 0x0102, 0x0109, 0x0113, 0x011D, 0x0127, 0x0130, 0x0138,\n    0x013D, 0x013F, 0x013F, 0x013D, 0x013A, 0x0135, 0x012D, 0x0123,\n    0x0115, 0x0104, 0x00EB, 0x00C8, 0x00A0, 0x0076, 0x004F, 0x002E,\n    0x0017, 0x000E, 0xC079, 0xC079, 0xC079, 0xC079, 0xC085, 0xC0A6,\n    0xC0DB, 0xC123, 0xC17B, 0xC1E1, 0xC254, 0xC2D2, 0xC359, 0xC3E8,\n    0xC47C, 0xC513, 0xC5AD, 0xC646, 0xC6DE, 0xC773, 0xC801, 0xC889,\n    0xC908, 0xC97C, 0xC9E8, 0xCA51, 0xCAB8, 0xCB1D, 0xCB80, 0xCBE2,\n    0xCC44, 0xCCA6, 0xCD08, 0xCD6B, 0xCDD0, 0xCE36, 0xCE9F, 0xCF0B,\n    0xCF7A, 0xCFEE, 0xD078, 0xD122, 0xD1DD, 0xD29A, 0xD34A, 0xD3DF,\n    0xD449, 0xD47B, 0xD483, 0xD476, 0xD44E, 0xD403, 0xD38E, 0xD2E8,\n    0xD209, 0xD0EB, 0xCF41, 0xCCF1, 0xCA40, 0xC772, 0xC4CC, 0xC293,\n    0xC10B, 0xC079, 0x248D, 0x248D, 0x248D, 0x248D, 0x2480, 0x245D,\n    0x2426, 0x23DD, 0x2385, 0x2321, 0x22B2, 0x223C, 0x21C1, 0x2144,\n    0x20C8, 0x204E, 0x1FD9, 0x1F6D, 0x1F0B, 0x1EB6, 0x1E71, 0x1E3E,\n    0x1E20, 0x1E19, 0x1E34, 0x1E75, 0x1ED7, 0x1F53, 0x1FE5, 0x2087,\n    0x2133, 0x21E3, 0x2292, 0x233A, 0x23D6, 0x245F, 0x24D0, 0x2524,\n    0x2555, 0x255D, 0x2507, 0x2439, 0x2313, 0x21B7, 0x2046, 0x1EE1,\n    0x1DAB, 0x1CC3, 0x1C0E, 0x1B5E, 0x1ABE, 0x1A39, 0x19DB, 0x19AE,\n    0x19BC, 0x1A12, 0x1AE4, 0x1C41, 0x1DF5, 0x1FCC, 0x2193, 0x2318,\n    0x2427, 0x248D, 0x3319, 0x3319, 0x3319, 0x3319, 0x3318, 0x3318,\n    0x3316, 0x3315, 0x3312, 0x330F, 0x330B, 0x3306, 0x3301, 0x32FA,\n    0x32F3, 0x32EB, 0x32E1, 0x32D7, 0x32CB, 0x32BE, 0x32B0, 0x32A1,\n    0x3290, 0x327E, 0x3268, 0x324E, 0x322F, 0x320C, 0x31E7, 0x31C0,\n    0x3197, 0x316E, 0x3146, 0x311E, 0x30F8, 0x30D5, 0x30B5, 0x309A,\n    0x3083, 0x3072, 0x306D, 0x3077, 0x308D, 0x30AC, 0x30CF, 0x30F3,\n    0x3114, 0x3130, 0x3146, 0x315B, 0x316F, 0x3184, 0x3199, 0x31B0,\n    0x31C9, 0x31E6, 0x320B, 0x3238, 0x326B, 0x329E, 0x32CD, 0x32F4,\n    0x330F, 0x3319, 0x14A2, 0x14A2, 0x14A2, 0x14A2, 0x14A2, 0x14A3,\n    0x14A5, 0x14A9, 0x14AE, 0x14B5, 0x14BF, 0x14CB, 0x14DB, 0x14ED,\n    0x1503, 0x151D, 0x153B, 0x155D, 0x1584, 0x15B1, 0x15E2, 0x161A,\n    0x1657, 0x169B, 0x16ED, 0x1753, 0x17CA, 0x1850, 0x18E1, 0x197A,\n    0x1A18, 0x1AB8, 0x1B57, 0x1BF2, 0x1C86, 0x1D11, 0x1D8E, 0x1DFB,\n    0x1E55, 0x1E99, 0x1EAE, 0x1E89, 0x1E36, 0x1DC4, 0x1D40, 0x1CB9,\n    0x1C3C, 0x1BD7, 0x1B87, 0x1B3E, 0x1AF9, 0x1AB4, 0x1A6B, 0x1A1A,\n    0x19BE, 0x1953, 0x18C7, 0x1816, 0x1750, 0x1687, 0x15CD, 0x1532,\n    0x14C9, 0x14A2, 0xB8A0, 0xB8A0, 0xB8A0, 0xB8A0, 0xB8A0, 0xB89F,\n    0xB89E, 0xB89C, 0xB898, 0xB894, 0xB88F, 0xB888, 0xB880, 0xB877,\n    0xB86C, 0xB85F, 0xB851, 0xB840, 0xB82E, 0xB819, 0xB802, 0xB7E9,\n    0xB7CD, 0xB7AF, 0xB78A, 0xB75C, 0xB727, 0xB6EC, 0xB6AC, 0xB669,\n    0xB623, 0xB5DC, 0xB596, 0xB552, 0xB511, 0xB4D4, 0xB49D, 0xB46D,\n    0xB446, 0xB428, 0xB41F, 0xB430, 0xB455, 0xB488, 0xB4C3, 0xB500,\n    0xB538, 0xB566, 0xB58B, 0xB5AD, 0xB5CD, 0xB5EE, 0xB610, 0xB636,\n    0xB660, 0xB690, 0xB6CE, 0xB71D, 0xB774, 0xB7CC, 0xB81D, 0xB861,\n    0xB88F, 0xB8A0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001,\n    0x0004, 0x0007, 0x000A, 0x000F, 0x0014, 0x001A, 0x0020, 0x0027,\n    0x002E, 0x0036, 0x003D, 0x0046, 0x004E, 0x0056, 0x005F, 0x0068,\n    0x0070, 0x0079, 0x0082, 0x008A, 0x0092, 0x009A, 0x00A2, 0x00A9,\n    0x00B0, 0x00B6, 0x00BC, 0x00C1, 0x00C5, 0x00C9, 0x00CC, 0x00CE,\n    0x00D0, 0x00D0, 0x00CF, 0x00CC, 0x00C7, 0x00C1, 0x00B9, 0x00B0,\n    0x00A5, 0x009A, 0x008E, 0x0082, 0x0075, 0x0068, 0x005B, 0x004E,\n    0x0042, 0x0036, 0x002A, 0x0020, 0x0017, 0x000F, 0x0008, 0x0004,\n    0x0001, 0x0000, 0xBF40, 0x2537, 0x2537, 0x2537, 0x2537, 0x2538,\n    0x253D, 0x2545, 0x2551, 0x2562, 0x2578, 0x2593, 0x25B5, 0x25DD,\n    0x260C, 0x2643, 0x2682, 0x26C9, 0x2719, 0x2773, 0x27D6, 0x2845,\n    0x28BE, 0x2942, 0x29D3, 0x2A89, 0x2B76, 0x2C92, 0x2DD3, 0x2F2F,\n    0x309C, 0x3211, 0x3385, 0x34ED, 0x3641, 0x3776, 0x3883, 0x395E,\n    0x39FE, 0x3A59, 0x3A66, 0x3A30, 0x39CA, 0x3939, 0x3883, 0x37AA,\n    0x36B3, 0x35A4, 0x347F, 0x334A, 0x320A, 0x30C1, 0x2F76, 0x2E2C,\n    0x2CE7, 0x2BAC, 0x2A80, 0x2967, 0x2865, 0x277E, 0x26B8, 0x2616,\n    0x259D, 0x2551, 0x2537, 0xCDB1, 0xCDB1, 0xCDB1, 0xCDB1, 0xCDB9,\n    0xCDD1, 0xCDF7, 0xCE2C, 0xCE6E, 0xCEBB, 0xCF14, 0xCF77, 0xCFE3,\n    0xD057, 0xD0D3, 0xD156, 0xD1DE, 0xD26A, 0xD2FA, 0xD38D, 0xD422,\n    0xD4B8, 0xD54E, 0xD5E3, 0xD676, 0xD706, 0xD793, 0xD81B, 0xD89D,\n    0xD919, 0xD98D, 0xD9FA, 0xDA5C, 0xDAB5, 0xDB03, 0xDB44, 0xDB79,\n    0xDBA0, 0xDBB8, 0xDBC0, 0xDBAE, 0xDB79, 0xDB25, 0xDAB5, 0xDA2C,\n    0xD98D, 0xD8DC, 0xD81B, 0xD74D, 0xD676, 0xD599, 0xD4B8, 0xD3D8,\n    0xD2FA, 0xD223, 0xD156, 0xD094, 0xCFE3, 0xCF44, 0xCEBB, 0xCE4B,\n    0xCDF7, 0xCDC3, 0xCDB1, 0xEA61, 0xEA61, 0xEA61, 0xEA61, 0xEA54,\n    0xEA2C, 0xE9EC, 0xE995, 0xE928, 0xE8A8, 0xE815, 0xE771, 0xE6BE,\n    0xE5FD, 0xE52F, 0xE458, 0xE376, 0xE28E, 0xE19F, 0xE0AB, 0xDFB4,\n    0xDEBC, 0xDDC4, 0xDCCE, 0xDBDA, 0xDAEB, 0xDA02, 0xD921, 0xD849,\n    0xD77C, 0xD6BB, 0xD608, 0xD564, 0xD4D1, 0xD451, 0xD3E4, 0xD38D,\n    0xD34D, 0xD325, 0xD318, 0xD336, 0xD38D, 0xD418, 0xD4D1, 0xD5B4,\n    0xD6BB, 0xD7E1, 0xD921, 0xDA76, 0xDBDA, 0xDD49, 0xDEBC, 0xE030,\n    0xE19F, 0xE303, 0xE458, 0xE598, 0xE6BE, 0xE7C5, 0xE8A8, 0xE961,\n    0xE9EC, 0xEA43, 0xEA61, 0xB9D0, 0xB9D0, 0xB9D0, 0xB9D0, 0xB9C5,\n    0xB9A6, 0xB973, 0xB92F, 0xB8D9, 0xB873, 0xB800, 0xB77E, 0xB6F1,\n    0xB659, 0xB5B7, 0xB50C, 0xB45B, 0xB3A3, 0xB2E6, 0xB226, 0xB163,\n    0xB0A0, 0xAFDC, 0xAF19, 0xAE59, 0xAD9C, 0xACE5, 0xAC33, 0xAB89,\n    0xAAE7, 0xAA4E, 0xA9C1, 0xA940, 0xA8CC, 0xA866, 0xA811, 0xA7CC,\n    0xA799, 0xA77A, 0xA76F, 0xA787, 0xA7CC, 0xA839, 0xA8CC, 0xA97F,\n    0xAA4E, 0xAB36, 0xAC33, 0xAD40, 0xAE59, 0xAF7A, 0xB0A0, 0xB1C5,\n    0xB2E6, 0xB3FF, 0xB50C, 0xB609, 0xB6F1, 0xB7C0, 0xB873, 0xB906,\n    0xB973, 0xB9B8, 0xB9D0, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001,\n    0x8001, 0x4171, 0xBF5F, 0x248C, 0x248C, 0x248C, 0x248C, 0x248C,\n    0x248A, 0x2488, 0x2485, 0x2481, 0x247D, 0x2479, 0x2474, 0x246F,\n    0x246A, 0x2465, 0x2460, 0x245C, 0x2458, 0x2454, 0x2451, 0x244F,\n    0x244E, 0x244E, 0x244E, 0x2451, 0x2455, 0x245A, 0x2461, 0x2469,\n    0x2472, 0x247B, 0x2484, 0x248E, 0x2497, 0x24A0, 0x24A8, 0x24AF,\n    0x24B5, 0x24B9, 0x24BB, 0x24BD, 0x24BD, 0x24BD, 0x24BC, 0x24BB,\n    0x24B9, 0x24B7, 0x24B5, 0x24B2, 0x24AF, 0x24AC, 0x24A8, 0x24A5,\n    0x24A2, 0x249E, 0x249B, 0x2498, 0x2495, 0x2493, 0x2491, 0x248F,\n    0x248D, 0x248D, 0x248C, 0xFBA8, 0xFBA8, 0xFBA8, 0xFBA8, 0xFBA3,\n    0xFB95, 0xFB7F, 0xFB62, 0xFB40, 0xFB19, 0xFAF0, 0xFAC4, 0xFA98,\n    0xFA6C, 0xFA41, 0xFA19, 0xF9F6, 0xF9D7, 0xF9BF, 0xF9AE, 0xF9A6,\n    0xF9A8, 0xF9B5, 0xF9CE, 0xF9FC, 0xFA42, 0xFA9D, 0xFB0A, 0xFB84,\n    0xFC08, 0xFC92, 0xFD1F, 0xFDAA, 0xFE31, 0xFEAF, 0xFF20, 0xFF82,\n    0xFFCF, 0x0004, 0x001F, 0x0024, 0x001C, 0x0009, 0xFFEC, 0xFFC5,\n    0xFF95, 0xFF5E, 0xFF21, 0xFEDF, 0xFE9A, 0xFE51, 0xFE07, 0xFDBD,\n    0xFD73, 0xFD2B, 0xFCE5, 0xFCA4, 0xFC68, 0xFC32, 0xFC03, 0xFBDD,\n    0xFBC0, 0xFBAE, 0xFBA8, 0x0A20, 0x0A20, 0x0A20, 0x0A20, 0x0A24,\n    0x0A2F, 0x0A41, 0x0A58, 0x0A74, 0x0A93, 0x0AB5, 0x0AD8, 0x0AFD,\n    0x0B20, 0x0B43, 0x0B63, 0x0B80, 0x0B99, 0x0BAD, 0x0BBB, 0x0BC2,\n    0x0BC1, 0x0BB7, 0x0BA3, 0x0B7E, 0x0B46, 0x0AFD, 0x0AA6, 0x0A45,\n    0x09DB, 0x096C, 0x08FB, 0x088C, 0x0820, 0x07BB, 0x0760, 0x0712,\n    0x06D4, 0x06A8, 0x0693, 0x068E, 0x0694, 0x06A3, 0x06BB, 0x06DA,\n    0x0700, 0x072C, 0x075C, 0x0790, 0x07C8, 0x0801, 0x083C, 0x0877,\n    0x08B2, 0x08EC, 0x0923, 0x0957, 0x0987, 0x09B2, 0x09D7, 0x09F6,\n    0x0A0C, 0x0A1B, 0x0A20, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0002, 0x0002, 0x0001, 0x0001, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007,\n    0x001E, 0x0041, 0x0070, 0x00A9, 0x00EB, 0x0134, 0x0182, 0x01D4,\n    0x0229, 0x027F, 0x02D4, 0x0327, 0x0377, 0x03C1, 0x0405, 0x0441,\n    0x0473, 0x049A, 0x04B5, 0x04BE, 0x04B6, 0x049D, 0x0477, 0x0445,\n    0x040B, 0x03CA, 0x0384, 0x033D, 0x02F5, 0x02B1, 0x0271, 0x0231,\n    0x01EA, 0x019E, 0x014D, 0x00F9, 0x00A4, 0x004F, 0xFFFC, 0xFFAA,\n    0xFF5B, 0xFF12, 0xFECF, 0xFE94, 0xFE61, 0xFE39, 0xFE1D, 0xFE13,\n    0xFE22, 0xFE43, 0xFE72, 0xFEAD, 0xFEED, 0xFF2F, 0xFF6F, 0xFFA8,\n    0xFFD6, 0xFFF5, 0x0000, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA,\n    0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA,\n    0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA,\n    0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA,\n    0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA,\n    0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA,\n    0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA,\n    0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA,\n    0xF9DA, 0xF9DA, 0xF9DA, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001,\n    0x0001, 0x0001, 0x0002, 0x0002, 0x0002, 0x0002, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0001, 0x0001,\n    0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xFFFF, 0xFFFD, 0xFFF9, 0xFFF5, 0xFFEF, 0xFFE8,\n    0xFFDE, 0xFFD2, 0xFFC4, 0xFFB3, 0xFFA0, 0xFF89, 0xFF6F, 0xFF52,\n    0xFF31, 0xFF0C, 0xFEE2, 0xFEAD, 0xFE67, 0xFE13, 0xFDB3, 0xFD4B,\n    0xFCDE, 0xFC6E, 0xFBFE, 0xFB91, 0xFB2B, 0xFACD, 0xFA7B, 0xFA38,\n    0xFA06, 0xF9EA, 0xF9E4, 0xF9F2, 0xFA0F, 0xFA38, 0xFA6C, 0xFAAA,\n    0xFAF1, 0xFB3F, 0xFB93, 0xFBEC, 0xFC49, 0xFCA8, 0xFD08, 0xFD67,\n    0xFDC5, 0xFE21, 0xFE78, 0xFEC9, 0xFF14, 0xFF57, 0xFF91, 0xFFC0,\n    0xFFE3, 0xFFF9, 0x0000, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00,\n    0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00,\n    0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00,\n    0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00,\n    0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00,\n    0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00,\n    0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00,\n    0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00,\n    0x3F00, 0x3F00, 0x3F00,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_80.inc.c",
    "content": "static const struct Animation anim_80[] = {\n    0,\n    189,\n    0,\n    0,\n    0x40,\n    ANIMINDEX_NUMPARTS(anim_80_indices),\n    anim_80_values,\n    anim_80_indices,\n    0,\n};\n\n\nstatic const u16 anim_80_indices[] = {\n    0x0001, 0x0000, 0x0040, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0041, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0040, 0x07CC, 0x0040, 0x080C,\n    0x0040, 0x070C, 0x0040, 0x074C, 0x0040, 0x078C,\n    0x0040, 0x064C, 0x0040, 0x068C, 0x0040, 0x06CC,\n    0x0001, 0x0648, 0x0001, 0x0649, 0x0001, 0x064A,\n    0x0040, 0x0103, 0x0040, 0x0143, 0x0040, 0x0183,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0102,\n    0x0040, 0x0042, 0x0040, 0x0082, 0x0040, 0x00C2,\n    0x0001, 0x0644, 0x0001, 0x0645, 0x0001, 0x0646,\n    0x0040, 0x0284, 0x0040, 0x02C4, 0x0040, 0x0304,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0283,\n    0x0040, 0x01C3, 0x0040, 0x0203, 0x0040, 0x0243,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0647,\n    0x0040, 0x0584, 0x0040, 0x05C4, 0x0040, 0x0604,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0040, 0x0544,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0040, 0x0504,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x064B,\n    0x0040, 0x0444, 0x0040, 0x0484, 0x0040, 0x04C4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0040, 0x0404,\n    0x0040, 0x0344, 0x0040, 0x0384, 0x0040, 0x03C4,\n};\n\nstatic const s16 anim_80_values[] = {\n    0x0000, 0x00AC, 0x00AC, 0x00AC, 0x00AC, 0x00AC, 0x00AC, 0x00AB,\n    0x00AB, 0x00AB, 0x00AA, 0x00A9, 0x00A9, 0x00A8, 0x00A7, 0x00A6,\n    0x00A5, 0x00A4, 0x00A3, 0x00A2, 0x00A1, 0x00A0, 0x009F, 0x009D,\n    0x009C, 0x009B, 0x009A, 0x0099, 0x0098, 0x0097, 0x0096, 0x0095,\n    0x0094, 0x0094, 0x0093, 0x0093, 0x0092, 0x0092, 0x0091, 0x0091,\n    0x0091, 0x0091, 0x0092, 0x0092, 0x0093, 0x0094, 0x0095, 0x0097,\n    0x0098, 0x009A, 0x009B, 0x009D, 0x009F, 0x00A0, 0x00A2, 0x00A3,\n    0x00A5, 0x00A6, 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AB, 0x00AC,\n    0x00AC, 0x3FFF, 0x268B, 0x268B, 0x268B, 0x268B, 0x268B, 0x268D,\n    0x2691, 0x2695, 0x269A, 0x26A1, 0x26A8, 0x26B1, 0x26BA, 0x26C4,\n    0x26CF, 0x26DA, 0x26E6, 0x26F2, 0x26FF, 0x270C, 0x2719, 0x2727,\n    0x2734, 0x2742, 0x2750, 0x275D, 0x276B, 0x2778, 0x2785, 0x2792,\n    0x279E, 0x27AA, 0x27B5, 0x27C0, 0x27CA, 0x27D3, 0x27DB, 0x27E3,\n    0x27E9, 0x27EF, 0x27F3, 0x27F7, 0x27F9, 0x27F9, 0x27F7, 0x27EF,\n    0x27E3, 0x27D3, 0x27C0, 0x27AA, 0x2792, 0x2778, 0x275D, 0x2742,\n    0x2727, 0x270C, 0x26F2, 0x26DA, 0x26C4, 0x26B1, 0x26A1, 0x2695,\n    0x268D, 0x268B, 0x119F, 0x119F, 0x119F, 0x119F, 0x119C, 0x1195,\n    0x1189, 0x1178, 0x1164, 0x114B, 0x112F, 0x1110, 0x10EE, 0x10C8,\n    0x10A1, 0x1076, 0x104A, 0x101C, 0x0FED, 0x0FBC, 0x0F8A, 0x0F57,\n    0x0F24, 0x0EF1, 0x0EBD, 0x0E8A, 0x0E58, 0x0E26, 0x0DF5, 0x0DC5,\n    0x0D97, 0x0D6B, 0x0D41, 0x0D19, 0x0CF4, 0x0CD2, 0x0CB2, 0x0C96,\n    0x0C7E, 0x0C69, 0x0C59, 0x0C4D, 0x0C46, 0x0C43, 0x0C4D, 0x0C69,\n    0x0C96, 0x0CD2, 0x0D19, 0x0D6B, 0x0DC5, 0x0E26, 0x0E8A, 0x0EF1,\n    0x0F57, 0x0FBC, 0x101C, 0x1076, 0x10C8, 0x1110, 0x114B, 0x1178,\n    0x1195, 0x119F, 0xE81F, 0xE81F, 0xE81F, 0xE81F, 0xE821, 0xE827,\n    0xE830, 0xE83C, 0xE84B, 0xE85D, 0xE872, 0xE889, 0xE8A3, 0xE8BE,\n    0xE8DC, 0xE8FB, 0xE91C, 0xE93E, 0xE962, 0xE986, 0xE9AB, 0xE9D1,\n    0xE9F7, 0xEA1D, 0xEA43, 0xEA69, 0xEA8F, 0xEAB4, 0xEAD8, 0xEAFB,\n    0xEB1E, 0xEB3E, 0xEB5E, 0xEB7B, 0xEB97, 0xEBB1, 0xEBC8, 0xEBDD,\n    0xEBEF, 0xEBFE, 0xEC0A, 0xEC13, 0xEC19, 0xEC1B, 0xEC13, 0xEBFE,\n    0xEBDD, 0xEBB1, 0xEB7B, 0xEB3E, 0xEAFB, 0xEAB4, 0xEA69, 0xEA1D,\n    0xE9D1, 0xE986, 0xE93E, 0xE8FB, 0xE8BE, 0xE889, 0xE85D, 0xE83C,\n    0xE827, 0xE81F, 0xF5E7, 0xF8EB, 0xF8EB, 0xF8EB, 0xF8EB, 0xF8E9,\n    0xF8E5, 0xF8DE, 0xF8D5, 0xF8C9, 0xF8BC, 0xF8AC, 0xF89B, 0xF887,\n    0xF873, 0xF85D, 0xF846, 0xF82E, 0xF815, 0xF7FC, 0xF7E2, 0xF7C8,\n    0xF7AD, 0xF793, 0xF779, 0xF75F, 0xF745, 0xF72D, 0xF715, 0xF6FE,\n    0xF6E8, 0xF6D3, 0xF6C0, 0xF6AF, 0xF69F, 0xF692, 0xF686, 0xF67D,\n    0xF676, 0xF672, 0xF670, 0xF673, 0xF67D, 0xF68B, 0xF69F, 0xF6B7,\n    0xF6D3, 0xF6F3, 0xF715, 0xF739, 0xF75F, 0xF786, 0xF7AD, 0xF7D5,\n    0xF7FC, 0xF822, 0xF846, 0xF868, 0xF887, 0xF8A3, 0xF8BC, 0xF8CF,\n    0xF8DE, 0xF8E7, 0xF8EB, 0xDC09, 0xDC09, 0xDC09, 0xDC09, 0xDC04,\n    0xDBF6, 0xDBE0, 0xDBC3, 0xDB9D, 0xDB71, 0xDB3F, 0xDB07, 0xDAC9,\n    0xDA87, 0xDA41, 0xD9F7, 0xD9AA, 0xD95A, 0xD908, 0xD8B4, 0xD860,\n    0xD80B, 0xD7B6, 0xD761, 0xD70E, 0xD6BC, 0xD66C, 0xD61F, 0xD5D5,\n    0xD58E, 0xD54C, 0xD50F, 0xD4D7, 0xD4A4, 0xD478, 0xD453, 0xD435,\n    0xD41F, 0xD411, 0xD40D, 0xD417, 0xD435, 0xD465, 0xD4A4, 0xD4F2,\n    0xD54C, 0xD5B1, 0xD61F, 0xD694, 0xD70E, 0xD78B, 0xD80B, 0xD88A,\n    0xD908, 0xD982, 0xD9F7, 0xDA64, 0xDAC9, 0xDB24, 0xDB71, 0xDBB1,\n    0xDBE0, 0xDBFE, 0xDC09, 0xD5A4, 0xD5A4, 0xD5A4, 0xD5A4, 0xD5A5,\n    0xD5AA, 0xD5B3, 0xD5BE, 0xD5CC, 0xD5DC, 0xD5EF, 0xD604, 0xD61A,\n    0xD633, 0xD64D, 0xD669, 0xD685, 0xD6A3, 0xD6C1, 0xD6E0, 0xD700,\n    0xD71F, 0xD73F, 0xD75F, 0xD77E, 0xD79C, 0xD7BA, 0xD7D6, 0xD7F2,\n    0xD80C, 0xD825, 0xD83B, 0xD850, 0xD863, 0xD873, 0xD881, 0xD88C,\n    0xD895, 0xD89A, 0xD89B, 0xD897, 0xD88C, 0xD87B, 0xD863, 0xD846,\n    0xD825, 0xD7FF, 0xD7D6, 0xD7AB, 0xD77E, 0xD74F, 0xD71F, 0xD6F0,\n    0xD6C1, 0xD694, 0xD669, 0xD640, 0xD61A, 0xD5F9, 0xD5DC, 0xD5C4,\n    0xD5B3, 0xD5A8, 0xD5A4, 0xD7CE, 0xD7CE, 0xD7CE, 0xD7CE, 0xD7CC,\n    0xD7C4, 0xD7B8, 0xD7A8, 0xD794, 0xD77C, 0xD762, 0xD744, 0xD724,\n    0xD701, 0xD6DC, 0xD6B6, 0xD68F, 0xD666, 0xD63D, 0xD614, 0xD5EA,\n    0xD5C1, 0xD599, 0xD571, 0xD54B, 0xD527, 0xD504, 0xD4E4, 0xD4C6,\n    0xD4AB, 0xD493, 0xD47F, 0xD46F, 0xD463, 0xD45C, 0xD459, 0xD45D,\n    0xD466, 0xD476, 0xD48A, 0xD4A4, 0xD4C2, 0xD4E4, 0xD509, 0xD531,\n    0xD55B, 0xD588, 0xD5B6, 0xD5E4, 0xD614, 0xD643, 0xD672, 0xD6A0,\n    0xD6CC, 0xD6F7, 0xD71F, 0xD744, 0xD766, 0xD784, 0xD79D, 0xD7B2,\n    0xD7C1, 0xD7CB, 0xD7CE, 0xF12D, 0xF12D, 0xF12D, 0xF12D, 0xF134,\n    0xF146, 0xF164, 0xF18C, 0xF1BD, 0xF1F8, 0xF23A, 0xF284, 0xF2D4,\n    0xF32A, 0xF385, 0xF3E3, 0xF445, 0xF4AA, 0xF50F, 0xF576, 0xF5DD,\n    0xF643, 0xF6A7, 0xF709, 0xF768, 0xF7C2, 0xF818, 0xF868, 0xF8B2,\n    0xF8F4, 0xF92F, 0xF961, 0xF989, 0xF9A6, 0xF9B9, 0xF9BF, 0xF9B7,\n    0xF99F, 0xF979, 0xF945, 0xF906, 0xF8BC, 0xF868, 0xF80C, 0xF7A9,\n    0xF73F, 0xF6D1, 0xF660, 0xF5EB, 0xF576, 0xF501, 0xF48D, 0xF41B,\n    0xF3AD, 0xF344, 0xF2E0, 0xF284, 0xF230, 0xF1E6, 0xF1A7, 0xF174,\n    0xF14D, 0xF136, 0xF12D, 0xF18E, 0xF18E, 0xF18E, 0xF18E, 0xF196,\n    0xF1AC, 0xF1D1, 0xF203, 0xF241, 0xF289, 0xF2DC, 0xF338, 0xF39C,\n    0xF406, 0xF477, 0xF4ED, 0xF566, 0xF5E3, 0xF662, 0xF6E1, 0xF761,\n    0xF7E0, 0xF85C, 0xF8D6, 0xF94C, 0xF9BC, 0xFA27, 0xFA8B, 0xFAE6,\n    0xFB39, 0xFB82, 0xFBC0, 0xFBF1, 0xFC16, 0xFC2D, 0xFC35, 0xFC2B,\n    0xFC0D, 0xFBDE, 0xFB9E, 0xFB4F, 0xFAF3, 0xFA8B, 0xFA18, 0xF99D,\n    0xF91A, 0xF891, 0xF804, 0xF773, 0xF6E1, 0xF64F, 0xF5BF, 0xF532,\n    0xF4A9, 0xF426, 0xF3AA, 0xF338, 0xF2D0, 0xF274, 0xF225, 0xF1E5,\n    0xF1B6, 0xF198, 0xF18E, 0xF8EA, 0x07C7, 0x07C7, 0x07C7, 0x07C7,\n    0x07C8, 0x07CC, 0x07D3, 0x07DC, 0x07E7, 0x07F5, 0x0804, 0x0815,\n    0x0827, 0x083B, 0x0850, 0x0867, 0x087E, 0x0896, 0x08AF, 0x08C8,\n    0x08E2, 0x08FB, 0x0915, 0x092F, 0x0948, 0x0961, 0x0979, 0x0990,\n    0x09A6, 0x09BC, 0x09D0, 0x09E2, 0x09F3, 0x0A02, 0x0A10, 0x0A1B,\n    0x0A24, 0x0A2A, 0x0A2F, 0x0A30, 0x0A2D, 0x0A24, 0x0A15, 0x0A02,\n    0x09EB, 0x09D0, 0x09B1, 0x0990, 0x096D, 0x0948, 0x0922, 0x08FB,\n    0x08D5, 0x08AF, 0x088A, 0x0867, 0x0846, 0x0827, 0x080C, 0x07F5,\n    0x07E1, 0x07D3, 0x07CA, 0x07C7, 0x2335, 0x2335, 0x2335, 0x2335,\n    0x2339, 0x2346, 0x235B, 0x2377, 0x239B, 0x23C4, 0x23F4, 0x2429,\n    0x2463, 0x24A2, 0x24E5, 0x252B, 0x2574, 0x25BF, 0x260D, 0x265C,\n    0x26AC, 0x26FC, 0x274D, 0x279D, 0x27EC, 0x283A, 0x2885, 0x28CE,\n    0x2914, 0x2957, 0x2996, 0x29D0, 0x2A05, 0x2A35, 0x2A5E, 0x2A82,\n    0x2A9E, 0x2AB3, 0x2ABF, 0x2AC4, 0x2ABA, 0x2A9E, 0x2A71, 0x2A35,\n    0x29EB, 0x2996, 0x2936, 0x28CE, 0x2860, 0x27EC, 0x2775, 0x26FC,\n    0x2684, 0x260D, 0x2599, 0x252B, 0x24C3, 0x2463, 0x240E, 0x23C4,\n    0x2388, 0x235B, 0x233F, 0x2335, 0xCCB8, 0xCCB8, 0xCCB8, 0xCCB8,\n    0xCCBA, 0xCCBF, 0xCCC7, 0xCCD2, 0xCCE0, 0xCCF0, 0xCD03, 0xCD17,\n    0xCD2E, 0xCD46, 0xCD60, 0xCD7B, 0xCD98, 0xCDB5, 0xCDD3, 0xCDF2,\n    0xCE11, 0xCE30, 0xCE4F, 0xCE6E, 0xCE8D, 0xCEAB, 0xCEC9, 0xCEE5,\n    0xCF00, 0xCF1A, 0xCF32, 0xCF49, 0xCF5E, 0xCF70, 0xCF80, 0xCF8E,\n    0xCF99, 0xCFA1, 0xCFA6, 0xCFA8, 0xCFA4, 0xCF99, 0xCF88, 0xCF70,\n    0xCF54, 0xCF32, 0xCF0D, 0xCEE5, 0xCEBA, 0xCE8D, 0xCE5F, 0xCE30,\n    0xCE01, 0xCDD3, 0xCDA6, 0xCD7B, 0xCD53, 0xCD2E, 0xCD0D, 0xCCF0,\n    0xCCD9, 0xCCC7, 0xCCBC, 0xCCB8, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E,\n    0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E,\n    0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E,\n    0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E,\n    0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6F, 0xFD6F,\n    0xFD6F, 0xFD6F, 0xFD6F, 0xFD6F, 0xFD6F, 0xFD6E, 0xFD6E, 0xFD6E,\n    0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E,\n    0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E,\n    0xFD6E, 0xFD6E, 0xFD6E, 0xFD6E, 0x000E, 0x000E, 0x000E, 0x000E,\n    0x000E, 0x000E, 0x000D, 0x000C, 0x000B, 0x000A, 0x0008, 0x0006,\n    0x0005, 0x0003, 0x0001, 0x0000, 0xFFFE, 0xFFFC, 0xFFFA, 0xFFF8,\n    0xFFF6, 0xFFF4, 0xFFF2, 0xFFF1, 0xFFEF, 0xFFED, 0xFFEB, 0xFFE9,\n    0xFFE7, 0xFFE5, 0xFFE3, 0xFFE1, 0xFFDF, 0xFFDE, 0xFFDC, 0xFFDB,\n    0xFFDA, 0xFFDA, 0xFFDA, 0xFFDB, 0xFFDC, 0xFFDD, 0xFFDF, 0xFFE1,\n    0xFFE3, 0xFFE5, 0xFFE8, 0xFFEB, 0xFFEE, 0xFFF1, 0xFFF4, 0xFFF7,\n    0xFFFA, 0xFFFD, 0x0000, 0x0002, 0x0005, 0x0007, 0x0009, 0x000B,\n    0x000C, 0x000D, 0x000E, 0x000E, 0xC079, 0xC079, 0xC079, 0xC079,\n    0xC077, 0xC070, 0xC065, 0xC056, 0xC043, 0xC02E, 0xC015, 0xBFFB,\n    0xBFDE, 0xBFC0, 0xBFA1, 0xBF81, 0xBF61, 0xBF41, 0xBF21, 0xBF01,\n    0xBEE3, 0xBEC7, 0xBEAC, 0xBE94, 0xBE7B, 0xBE5F, 0xBE40, 0xBE20,\n    0xBE00, 0xBDDF, 0xBDBE, 0xBDA0, 0xBD83, 0xBD69, 0xBD54, 0xBD42,\n    0xBD36, 0xBD30, 0xBD30, 0xBD39, 0xBD48, 0xBD5D, 0xBD78, 0xBD98,\n    0xBDBC, 0xBDE4, 0xBE0E, 0xBE3C, 0xBE6B, 0xBE9B, 0xBECC, 0xBEFD,\n    0xBF2E, 0xBF5E, 0xBF8B, 0xBFB7, 0xBFE0, 0xC005, 0xC026, 0xC042,\n    0xC059, 0xC06B, 0xC076, 0xC079, 0x248D, 0x248D, 0x248D, 0x248D,\n    0x249E, 0x24D1, 0x2523, 0x2590, 0x2616, 0x26B3, 0x2763, 0x2823,\n    0x28F2, 0x29CC, 0x2AAE, 0x2B96, 0x2C81, 0x2D6B, 0x2E54, 0x2F36,\n    0x3011, 0x30E0, 0x31A2, 0x3253, 0x3309, 0x33D4, 0x34B1, 0x359A,\n    0x3688, 0x3777, 0x3861, 0x3941, 0x3A11, 0x3ACB, 0x3B6A, 0x3BE8,\n    0x3C41, 0x3C6D, 0x3C69, 0x3C2E, 0x3BBE, 0x3B23, 0x3A60, 0x3979,\n    0x3873, 0x3753, 0x361D, 0x34D4, 0x337E, 0x321E, 0x30BA, 0x2F55,\n    0x2DF3, 0x2C9A, 0x2B4D, 0x2A10, 0x28E9, 0x27DB, 0x26EA, 0x261C,\n    0x2574, 0x24F6, 0x24A8, 0x248D, 0x3319, 0x3319, 0x3319, 0x3319,\n    0x3309, 0x32DD, 0x3296, 0x3238, 0x31C5, 0x3141, 0x30AD, 0x300D,\n    0x2F63, 0x2EB2, 0x2DFD, 0x2D46, 0x2C91, 0x2BE0, 0x2B36, 0x2A95,\n    0x2A01, 0x297C, 0x2909, 0x28AA, 0x285A, 0x280E, 0x27C9, 0x278A,\n    0x2752, 0x2721, 0x26F9, 0x26DA, 0x26C4, 0x26B8, 0x26B7, 0x26C1,\n    0x26D6, 0x26F8, 0x2726, 0x2762, 0x27AF, 0x280D, 0x287C, 0x28FA,\n    0x2983, 0x2A18, 0x2AB5, 0x2B59, 0x2C01, 0x2CAD, 0x2D5A, 0x2E06,\n    0x2EAF, 0x2F53, 0x2FF1, 0x3086, 0x3111, 0x318F, 0x31FF, 0x3260,\n    0x32AE, 0x32E8, 0x330C, 0x3319, 0x14A2, 0x14A2, 0x14A2, 0x14A2,\n    0x14BC, 0x1508, 0x1580, 0x1621, 0x16E6, 0x17CA, 0x18C8, 0x19DC,\n    0x1B02, 0x1C34, 0x1D6F, 0x1EAD, 0x1FEA, 0x2122, 0x224F, 0x236E,\n    0x2479, 0x256C, 0x2643, 0x26F9, 0x279D, 0x2840, 0x28E0, 0x297B,\n    0x2A0E, 0x2A96, 0x2B12, 0x2B7F, 0x2BDA, 0x2C21, 0x2C52, 0x2C69,\n    0x2C66, 0x2C45, 0x2C04, 0x2BA1, 0x2B17, 0x2A68, 0x2996, 0x28A7,\n    0x279D, 0x267D, 0x254A, 0x2409, 0x22BE, 0x216B, 0x2016, 0x1EC1,\n    0x1D72, 0x1C2B, 0x1AF1, 0x19C7, 0x18B2, 0x17B5, 0x16D5, 0x1615,\n    0x1578, 0x1504, 0x14BB, 0x14A2, 0xB8A0, 0xB8A0, 0xB8A0, 0xB8A0,\n    0xB88C, 0xB852, 0xB7F5, 0xB779, 0xB6E2, 0xB633, 0xB570, 0xB49D,\n    0xB3BC, 0xB2D3, 0xB1E4, 0xB0F3, 0xB004, 0xAF19, 0xAE38, 0xAD63,\n    0xAC9E, 0xABED, 0xAB54, 0xAAD5, 0xAA68, 0xAA00, 0xA9A0, 0xA948,\n    0xA8F8, 0xA8B2, 0xA877, 0xA848, 0xA825, 0xA80F, 0xA808, 0xA810,\n    0xA828, 0xA852, 0xA88D, 0xA8DC, 0xA941, 0xA9C0, 0xAA54, 0xAAFC,\n    0xABB5, 0xAC7C, 0xAD50, 0xAE2C, 0xAF0F, 0xAFF7, 0xB0DF, 0xB1C7,\n    0xB2AB, 0xB389, 0xB45D, 0xB527, 0xB5E2, 0xB68D, 0xB725, 0xB7A6,\n    0xB810, 0xB85E, 0xB88F, 0xB8A0, 0xBF40, 0xBF40, 0xBF40, 0xBF40,\n    0xBF5E, 0xBFB4, 0xC03E, 0xC0F5, 0xC1D5, 0xC2D9, 0xC3FC, 0xC539,\n    0xC68A, 0xC7EA, 0xC955, 0xCAC5, 0xCC35, 0xCDA0, 0xCF00, 0xD052,\n    0xD18F, 0xD2B3, 0xD3B8, 0xD499, 0xD562, 0xD621, 0xD6D7, 0xD783,\n    0xD824, 0xD8BB, 0xD948, 0xD9C9, 0xDA3F, 0xDAAA, 0xDB09, 0xDB5D,\n    0xDBA4, 0xDBDE, 0xDC0C, 0xDC2E, 0xDC44, 0xDC50, 0xDC4E, 0xDC3A,\n    0xDC12, 0xDBD1, 0xDB73, 0xDAF7, 0xDA58, 0xD992, 0xD8A2, 0xD786,\n    0xD608, 0xD40D, 0xD1B2, 0xCF16, 0xCC57, 0xC994, 0xC6EA, 0xC479,\n    0xC25E, 0xC0B7, 0xBFA3, 0xBF40, 0x2537, 0x2537, 0x2537, 0x2537,\n    0x252D, 0x2510, 0x24E2, 0x24A5, 0x2459, 0x2401, 0x239E, 0x2331,\n    0x22BC, 0x2240, 0x21BF, 0x213B, 0x20B5, 0x202E, 0x1FA8, 0x1F25,\n    0x1EA5, 0x1E2C, 0x1DB9, 0x1D4F, 0x1CE7, 0x1C7C, 0x1C0E, 0x1B9E,\n    0x1B2C, 0x1ABB, 0x1A4A, 0x19DA, 0x196D, 0x1902, 0x189C, 0x183A,\n    0x17DE, 0x1788, 0x173A, 0x16F4, 0x16AD, 0x165F, 0x160E, 0x15C1,\n    0x157B, 0x1543, 0x151C, 0x150D, 0x151B, 0x1549, 0x159E, 0x161F,\n    0x16EB, 0x1810, 0x197B, 0x1B17, 0x1CCF, 0x1E8F, 0x2042, 0x21D4,\n    0x2331, 0x2443, 0x24F6, 0x2537, 0xCDB1, 0xCDB1, 0xCDB1, 0xCDB1,\n    0xCDB7, 0xCDCB, 0xCDEB, 0xCE15, 0xCE48, 0xCE82, 0xCEC3, 0xCF09,\n    0xCF52, 0xCF9E, 0xCFEB, 0xD037, 0xD081, 0xD0C9, 0xD10C, 0xD149,\n    0xD17F, 0xD1AD, 0xD1D1, 0xD1EA, 0xD1F7, 0xD1FB, 0xD1F5, 0xD1E8,\n    0xD1D3, 0xD1B9, 0xD19A, 0xD177, 0xD151, 0xD12A, 0xD102, 0xD0DB,\n    0xD0B5, 0xD092, 0xD072, 0xD057, 0xD03F, 0xD028, 0xD012, 0xCFFC,\n    0xCFE7, 0xCFD1, 0xCFBB, 0xCFA4, 0xCF8D, 0xCF75, 0xCF5B, 0xCF3F,\n    0xCF20, 0xCEFB, 0xCED1, 0xCEA6, 0xCE79, 0xCE4E, 0xCE24, 0xCDFF,\n    0xCDDF, 0xCDC6, 0xCDB6, 0xCDB1, 0xEA61, 0xEA61, 0xEA61, 0xEA61,\n    0xEA4E, 0xEA16, 0xE9BE, 0xE949, 0xE8BB, 0xE818, 0xE762, 0xE69F,\n    0xE5D0, 0xE4FB, 0xE423, 0xE34B, 0xE277, 0xE1AA, 0xE0EA, 0xE038,\n    0xDF99, 0xDF10, 0xDEA1, 0xDE50, 0xDE1C, 0xDE00, 0xDDFA, 0xDE07,\n    0xDE25, 0xDE52, 0xDE8B, 0xDECF, 0xDF1A, 0xDF6B, 0xDFBF, 0xE013,\n    0xE066, 0xE0B6, 0xE0FF, 0xE13F, 0xE17C, 0xE1BA, 0xE1FC, 0xE23F,\n    0xE286, 0xE2CF, 0xE31C, 0xE36C, 0xE3BF, 0xE417, 0xE472, 0xE4D1,\n    0xE53F, 0xE5C2, 0xE654, 0xE6EF, 0xE78F, 0xE82B, 0xE8C0, 0xE947,\n    0xE9B9, 0xEA13, 0xEA4D, 0xEA61, 0xB9D0, 0xB9D0, 0xB9D0, 0xB9D0,\n    0xB9C5, 0xB9A7, 0xB977, 0xB937, 0xB8E9, 0xB890, 0xB82D, 0xB7C2,\n    0xB752, 0xB6DE, 0xB669, 0xB5F4, 0xB581, 0xB513, 0xB4AC, 0xB44D,\n    0xB3F9, 0xB3B1, 0xB378, 0xB350, 0xB339, 0xB330, 0xB334, 0xB344,\n    0xB35D, 0xB380, 0xB3A9, 0xB3D9, 0xB40C, 0xB442, 0xB479, 0xB4B0,\n    0xB4E6, 0xB518, 0xB545, 0xB56C, 0xB58F, 0xB5B2, 0xB5D4, 0xB5F7,\n    0xB619, 0xB63D, 0xB662, 0xB687, 0xB6AF, 0xB6D8, 0xB703, 0xB731,\n    0xB765, 0xB7A3, 0xB7E8, 0xB832, 0xB87D, 0xB8C7, 0xB90C, 0xB94C,\n    0xB981, 0xB9AB, 0xB9C6, 0xB9D0, 0x8001, 0x8001, 0x4171, 0xBF5F,\n    0x8001, 0x8001, 0x4171, 0xBF5F, 0xD4A6, 0xD4A6, 0xD4A6, 0xD4A6,\n    0xD49B, 0xD490, 0xD486, 0xD47B, 0xD471, 0xD466, 0xD45C, 0xD451,\n    0xD447, 0xD43C, 0xD431, 0xD427, 0xD41C, 0xD412, 0xD407, 0xD3FD,\n    0xD3F2, 0xD3E8, 0xD3DD, 0xD3D2, 0xD3C7, 0xD3BB, 0xD3AD, 0xD39F,\n    0xD391, 0xD382, 0xD374, 0xD366, 0xD358, 0xD34C, 0xD341, 0xD338,\n    0xD331, 0xD32B, 0xD328, 0xD328, 0xD32C, 0xD335, 0xD342, 0xD352,\n    0xD364, 0xD379, 0xD38F, 0xD3A5, 0xD3BB, 0xD3D1, 0xD3E4, 0xD3F6,\n    0xD406, 0xD419, 0xD42C, 0xD440, 0xD453, 0xD465, 0xD477, 0xD486,\n    0xD493, 0xD49D, 0xD4A3, 0xD4A6, 0x0207, 0x0207, 0x0207, 0x0207,\n    0x01E4, 0x01C0, 0x019C, 0x0179, 0x0155, 0x0131, 0x010E, 0x00EA,\n    0x00C6, 0x00A3, 0x007F, 0x005B, 0x0037, 0x0014, 0xFFF1, 0xFFCD,\n    0xFFAA, 0xFF86, 0xFF62, 0xFF3F, 0xFF29, 0xFF12, 0xFEFD, 0xFEE8,\n    0xFED5, 0xFEC4, 0xFEB5, 0xFEA9, 0xFEA1, 0xFE9D, 0xFE9D, 0xFEA3,\n    0xFEAE, 0xFEBF, 0xFED7, 0xFEF5, 0xFF24, 0xFF69, 0xFFBF, 0x0022,\n    0x008E, 0x00FE, 0x016E, 0x01DA, 0x023C, 0x0292, 0x02D5, 0x0303,\n    0x0319, 0x031D, 0x0313, 0x02FC, 0x02DC, 0x02B6, 0x028E, 0x0266,\n    0x0241, 0x0223, 0x020F, 0x0207, 0x0E98, 0x0E98, 0x0E98, 0x0E98,\n    0x0E81, 0x0E6A, 0x0E53, 0x0E3C, 0x0E26, 0x0E0F, 0x0DF8, 0x0DE1,\n    0x0DCA, 0x0DB4, 0x0D9D, 0x0D86, 0x0D6F, 0x0D58, 0x0D42, 0x0D2B,\n    0x0D14, 0x0CFD, 0x0CE7, 0x0CD0, 0x0CC0, 0x0CB0, 0x0C9F, 0x0C8F,\n    0x0C80, 0x0C71, 0x0C64, 0x0C59, 0x0C50, 0x0C49, 0x0C45, 0x0C45,\n    0x0C48, 0x0C4F, 0x0C5A, 0x0C6A, 0x0C84, 0x0CAC, 0x0CDE, 0x0D18,\n    0x0D58, 0x0D9A, 0x0DDD, 0x0E1E, 0x0E5A, 0x0E8F, 0x0EBA, 0x0ED8,\n    0x0EEA, 0x0EF4, 0x0EF5, 0x0EF1, 0x0EE7, 0x0EDB, 0x0ECC, 0x0EBD,\n    0x0EAF, 0x0EA3, 0x0E9B, 0x0E98, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002,\n    0x0002, 0x0002, 0x0003, 0x0003, 0x0003, 0x0004, 0x0004, 0x0004,\n    0x0004, 0x0004, 0x0005, 0x0005, 0x0005, 0x0004, 0x0004, 0x0003,\n    0x0003, 0x0002, 0x0002, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0003, 0x000E, 0x001F, 0x0036, 0x0050, 0x006E, 0x008E, 0x00AF,\n    0x00D0, 0x00F1, 0x0111, 0x012E, 0x0147, 0x015C, 0x016C, 0x0175,\n    0x0179, 0x017A, 0x0178, 0x0174, 0x016D, 0x0165, 0x015B, 0x014F,\n    0x0143, 0x0136, 0x0128, 0x011B, 0x010D, 0x0101, 0x00F5, 0x00EA,\n    0x00E0, 0x00D9, 0x00D3, 0x00D0, 0x00D1, 0x00D8, 0x00E2, 0x00EF,\n    0x00FF, 0x010E, 0x011E, 0x012B, 0x0136, 0x013C, 0x013E, 0x0138,\n    0x012B, 0x0115, 0x00F9, 0x00D8, 0x00B4, 0x008F, 0x006B, 0x0049,\n    0x002B, 0x0014, 0x0005, 0x0000, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA,\n    0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA,\n    0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA,\n    0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA,\n    0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA,\n    0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA,\n    0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA,\n    0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA,\n    0xF9DA, 0xF9DA, 0xF9DA, 0xF9DA, 0x0000, 0x0000, 0x0000, 0x0000,\n    0xFFFE, 0xFFF7, 0xFFED, 0xFFDF, 0xFFD0, 0xFFBE, 0xFFAC, 0xFF99,\n    0xFF87, 0xFF75, 0xFF66, 0xFF59, 0xFF4E, 0xFF48, 0xFF46, 0xFF4A,\n    0xFF53, 0xFF62, 0xFF79, 0xFF98, 0xFFC5, 0x0006, 0x0058, 0x00B7,\n    0x0121, 0x0192, 0x0207, 0x027D, 0x02F2, 0x0361, 0x03C8, 0x0423,\n    0x0471, 0x04AC, 0x04D4, 0x04E3, 0x04DF, 0x04CF, 0x04B3, 0x048E,\n    0x045F, 0x0428, 0x03EB, 0x03A8, 0x0360, 0x0315, 0x02C8, 0x0279,\n    0x022A, 0x01DD, 0x0191, 0x0149, 0x0105, 0x00C6, 0x008E, 0x005E,\n    0x0036, 0x0019, 0x0006, 0x0000, 0x3F00, 0x3F00, 0x3F00, 0x3F00,\n    0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00,\n    0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00,\n    0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00,\n    0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00,\n    0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00,\n    0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00,\n    0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00, 0x3F00,\n    0x3F00, 0x3F00, 0x3F00, 0x3F00,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_81.inc.c",
    "content": "static const struct Animation anim_81[] = {\n    1,\n    189,\n    0,\n    0,\n    0x32,\n    ANIMINDEX_NUMPARTS(anim_81_indices),\n    anim_81_values,\n    anim_81_indices,\n    0,\n};\n\n\nstatic const u16 anim_81_indices[] = {\n    0x0001, 0x0000, 0x0032, 0x0001, 0x0032, 0x0033, 0x0001, 0x0000, 0x0001, 0x0065, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x0838,\n    0x0032, 0x07A2, 0x0032, 0x07D4, 0x0032, 0x0806,\n    0x0032, 0x070C, 0x0032, 0x073E, 0x0032, 0x0770,\n    0x0032, 0x0675, 0x0032, 0x06A7, 0x0032, 0x06D9,\n    0x0032, 0x012E, 0x0032, 0x0160, 0x0032, 0x0192,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x00FC,\n    0x0032, 0x0066, 0x0032, 0x0098, 0x0032, 0x00CA,\n    0x0032, 0x05DE, 0x0032, 0x0610, 0x0032, 0x0642,\n    0x0032, 0x028C, 0x0032, 0x02BE, 0x0032, 0x02F0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x025A,\n    0x0032, 0x01C4, 0x0032, 0x01F6, 0x0032, 0x0228,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0674,\n    0x0032, 0x0548, 0x0032, 0x057A, 0x0032, 0x05AC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x0516,\n    0x0032, 0x0480, 0x0032, 0x04B2, 0x0032, 0x04E4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x070B,\n    0x0032, 0x03EA, 0x0032, 0x041C, 0x0032, 0x044E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x03B8,\n    0x0032, 0x0322, 0x0032, 0x0354, 0x0032, 0x0386,\n};\n\nstatic const s16 anim_81_values[] = {\n    0x0000, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA,\n    0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA,\n    0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA,\n    0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA,\n    0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA,\n    0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AB,\n    0x00AB, 0x00AB, 0x00AB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000,\n    0x0000, 0x0000, 0x0001, 0x0001, 0x0002, 0x0002, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0002, 0x0002, 0x0001,\n    0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF,\n    0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n    0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n    0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x3FFF, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001,\n    0x0001, 0x0002, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0008,\n    0x0009, 0x000A, 0x000B, 0x000D, 0x000E, 0x0010, 0x0011, 0x0013,\n    0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C,\n    0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C,\n    0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C,\n    0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C,\n    0xF97C, 0xF97C, 0xF97B, 0xF97B, 0xF97B, 0xF97B, 0xF97B, 0xF97B,\n    0xF97B, 0xF97B, 0xF97A, 0xF97A, 0xF97A, 0xF97A, 0xF97A, 0xF97A,\n    0xF979, 0xF979, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED8B, 0xED8A, 0xED88, 0xED85, 0xED82, 0xED7D, 0xED79, 0xED73,\n    0xED6D, 0xED67, 0xED60, 0xED58, 0xED51, 0xED48, 0xED40, 0xED37,\n    0xED2E, 0xED24, 0xED1B, 0xED11, 0xCA4F, 0xCA42, 0xCA1E, 0xC9EA,\n    0xC9AC, 0xC969, 0xC929, 0xC8F0, 0xC8C7, 0xC8B1, 0xC8B6, 0xC8DC,\n    0xC929, 0xC9A2, 0xCA4F, 0xCB44, 0xCC88, 0xCE0F, 0xCFC9, 0xD1AB,\n    0xD3A6, 0xD5AC, 0xD7B0, 0xD9A5, 0xDB7D, 0xDD29, 0xDE9E, 0xDFCC,\n    0xE0A7, 0xE120, 0xE161, 0xE19B, 0xE1CF, 0xE1FD, 0xE225, 0xE246,\n    0xE262, 0xE279, 0xE28B, 0xE297, 0xE29F, 0xE2A3, 0xE2A2, 0xE29C,\n    0xE293, 0xE286, 0xE276, 0xE263, 0xE24C, 0xE232, 0xFB1D, 0xFB2B,\n    0xFB52, 0xFB8F, 0xFBDC, 0xFC36, 0xFC98, 0xFCFE, 0xFD65, 0xFDC7,\n    0xFE21, 0xFE6E, 0xFEAA, 0xFED1, 0xFEDF, 0xFED4, 0xFEB3, 0xFE81,\n    0xFE3F, 0xFDF2, 0xFD9D, 0xFD42, 0xFCE5, 0xFC88, 0xFC2F, 0xFBDE,\n    0xFB97, 0xFB5D, 0xFB33, 0xFB1D, 0xFB0D, 0xFAF4, 0xFAD2, 0xFAA9,\n    0xFA77, 0xFA3E, 0xF9FF, 0xF9B8, 0xF96C, 0xF91A, 0xF8C3, 0xF867,\n    0xF806, 0xF7A2, 0xF739, 0xF6CE, 0xF660, 0xF5F0, 0xF57D, 0xF50A,\n    0xD2DC, 0xD2FE, 0xD35F, 0xD3F3, 0xD4B1, 0xD58D, 0xD67F, 0xD77A,\n    0xD876, 0xD967, 0xDA44, 0xDB01, 0xDB95, 0xDBF6, 0xDC18, 0xDBFC,\n    0xDBAC, 0xDB30, 0xDA8F, 0xD9D2, 0xD900, 0xD820, 0xD73B, 0xD658,\n    0xD57E, 0xD4B6, 0xD407, 0xD378, 0xD312, 0xD2DC, 0xD2C0, 0xD2A4,\n    0xD288, 0xD26C, 0xD250, 0xD234, 0xD217, 0xD1FB, 0xD1DF, 0xD1C4,\n    0xD1A8, 0xD18D, 0xD172, 0xD157, 0xD13D, 0xD123, 0xD10A, 0xD0F1,\n    0xD0D9, 0xD0C1, 0xD4B4, 0xD4A4, 0xD478, 0xD434, 0xD3DD, 0xD378,\n    0xD309, 0xD296, 0xD223, 0xD1B4, 0xD14F, 0xD0F8, 0xD0B4, 0xD088,\n    0xD078, 0xD085, 0xD0AA, 0xD0E3, 0xD12C, 0xD183, 0xD1E3, 0xD24A,\n    0xD2B3, 0xD31B, 0xD37F, 0xD3DA, 0xD42B, 0xD46C, 0xD49B, 0xD4B4,\n    0xD4C6, 0xD4E4, 0xD50C, 0xD53F, 0xD57B, 0xD5C0, 0xD60E, 0xD664,\n    0xD6C1, 0xD726, 0xD791, 0xD802, 0xD879, 0xD8F5, 0xD975, 0xD9F9,\n    0xDA80, 0xDB0B, 0xDB98, 0xDC26, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xFFFD, 0xFFF4, 0xFFE4, 0xFFCF, 0xFFB5, 0xFF95,\n    0xFF71, 0xFF49, 0xFF1C, 0xFEEC, 0xFEB9, 0xFE83, 0xFE4A, 0xFE0E,\n    0xFDD1, 0xFD92, 0xFD52, 0xFD11, 0xFCCF, 0xFC8D, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE,\n    0xFFFE, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFC, 0xFFFC, 0xFFFB, 0xFFFB,\n    0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549,\n    0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549,\n    0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549,\n    0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549,\n    0xF548, 0xF546, 0xF545, 0xF543, 0xF541, 0xF53F, 0xF53C, 0xF539,\n    0xF536, 0xF533, 0xF530, 0xF52D, 0xF529, 0xF526, 0xF522, 0xF51E,\n    0xF51A, 0xF517, 0xC7DD, 0xC7D7, 0xC7C5, 0xC7AB, 0xC78C, 0xC76A,\n    0xC74A, 0xC72E, 0xC719, 0xC70E, 0xC711, 0xC724, 0xC74A, 0xC787,\n    0xC7DD, 0xC858, 0xC8F9, 0xC9BB, 0xCA97, 0xCB86, 0xCC82, 0xCD84,\n    0xCE85, 0xCF7F, 0xD06A, 0xD141, 0xD1FC, 0xD295, 0xD305, 0xD346,\n    0xD36D, 0xD394, 0xD3BC, 0xD3E3, 0xD40B, 0xD432, 0xD45A, 0xD481,\n    0xD4A8, 0xD4CF, 0xD4F5, 0xD51B, 0xD540, 0xD564, 0xD588, 0xD5AA,\n    0xD5CC, 0xD5ED, 0xD60C, 0xD62B, 0x054B, 0x0539, 0x0505, 0x04B7,\n    0x0454, 0x03E5, 0x036E, 0x02F8, 0x0287, 0x0224, 0x01D4, 0x019E,\n    0x0189, 0x019B, 0x01DB, 0x0252, 0x02FF, 0x03D9, 0x04D7, 0x05F1,\n    0x071E, 0x0856, 0x098F, 0x0AC1, 0x0BE2, 0x0CEC, 0x0DD3, 0x0E91,\n    0x0F1B, 0x0F6A, 0x0F96, 0x0FC0, 0x0FE6, 0x100A, 0x102B, 0x1049,\n    0x1065, 0x107E, 0x1094, 0x10A8, 0x10BA, 0x10C9, 0x10D7, 0x10E2,\n    0x10EB, 0x10F3, 0x10F8, 0x10FC, 0x10FE, 0x10FE, 0x2BD6, 0x2BD6,\n    0x2BD4, 0x2BCE, 0x2BC3, 0x2BB3, 0x2B9A, 0x2B78, 0x2B4B, 0x2B11,\n    0x2ACA, 0x2A73, 0x2A0B, 0x2991, 0x2903, 0x2852, 0x2775, 0x2673,\n    0x2555, 0x2423, 0x22E4, 0x219F, 0x205E, 0x1F28, 0x1E04, 0x1CFB,\n    0x1C14, 0x1B57, 0x1ACC, 0x1A7B, 0x1A4C, 0x1A1F, 0x19F6, 0x19CF,\n    0x19AC, 0x198C, 0x196E, 0x1953, 0x193B, 0x1925, 0x1912, 0x1901,\n    0x18F3, 0x18E7, 0x18DD, 0x18D4, 0x18CE, 0x18CA, 0x18C8, 0x18C7,\n    0xCCF6, 0xCCEC, 0xCCD0, 0xCCA6, 0xCC72, 0xCC39, 0xCBFF, 0xCBC6,\n    0xCB94, 0xCB6D, 0xCB54, 0xCB4E, 0xCB5F, 0xCB8A, 0xCBD4, 0xCC46,\n    0xCCE2, 0xCDA1, 0xCE7C, 0xCF6C, 0xD069, 0xD16E, 0xD273, 0xD370,\n    0xD460, 0xD53B, 0xD5FA, 0xD697, 0xD709, 0xD74B, 0xD770, 0xD793,\n    0xD7B4, 0xD7D2, 0xD7ED, 0xD807, 0xD81E, 0xD833, 0xD846, 0xD856,\n    0xD865, 0xD872, 0xD87D, 0xD886, 0xD88E, 0xD894, 0xD898, 0xD89B,\n    0xD89C, 0xD89C, 0x0000, 0x0006, 0x0017, 0x0032, 0x0054, 0x007B,\n    0x00A7, 0x00D4, 0x0101, 0x012D, 0x0154, 0x0176, 0x0191, 0x01A2,\n    0x01A8, 0x01A3, 0x0194, 0x017E, 0x0160, 0x013D, 0x0117, 0x00EE,\n    0x00C4, 0x009B, 0x0074, 0x0050, 0x0031, 0x0018, 0x0007, 0x0000,\n    0xFFFE, 0xFFFB, 0xFFF9, 0xFFF7, 0xFFF4, 0xFFF2, 0xFFF0, 0xFFEE,\n    0xFFEB, 0xFFE9, 0xFFE7, 0xFFE6, 0xFFE4, 0xFFE2, 0xFFE0, 0xFFDE,\n    0xFFDD, 0xFFDB, 0xFFDA, 0xFFD8, 0xFF30, 0xFF30, 0xFF30, 0xFF31,\n    0xFF31, 0xFF32, 0xFF32, 0xFF33, 0xFF34, 0xFF34, 0xFF35, 0xFF36,\n    0xFF36, 0xFF36, 0xFF36, 0xFF36, 0xFF36, 0xFF36, 0xFF35, 0xFF35,\n    0xFF34, 0xFF33, 0xFF33, 0xFF32, 0xFF32, 0xFF31, 0xFF31, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF2F, 0xFF2F, 0xFF2F, 0xFF2F,\n    0xFF2F, 0xFF2F, 0xFF2F, 0xFF2F, 0xFF2F, 0xFF2F, 0xC9D8, 0xC9D4,\n    0xC9C7, 0xC9B3, 0xC99A, 0xC97D, 0xC95D, 0xC93C, 0xC91A, 0xC8FB,\n    0xC8DD, 0xC8C4, 0xC8B1, 0xC8A4, 0xC89F, 0xC8A3, 0xC8AE, 0xC8BF,\n    0xC8D5, 0xC8EE, 0xC90B, 0xC929, 0xC947, 0xC966, 0xC983, 0xC99D,\n    0xC9B4, 0xC9C6, 0xC9D2, 0xC9D8, 0xC9DA, 0xC9DC, 0xC9DF, 0xC9E2,\n    0xC9E5, 0xC9E8, 0xC9EB, 0xC9EE, 0xC9F2, 0xC9F6, 0xC9FA, 0xC9FE,\n    0xCA03, 0xCA07, 0xCA0C, 0xCA11, 0xCA16, 0xCA1B, 0xCA20, 0xCA26,\n    0x1E4A, 0x1E50, 0x1E61, 0x1E7B, 0x1E9C, 0x1EC3, 0x1EEE, 0x1F1A,\n    0x1F47, 0x1F71, 0x1F98, 0x1FBA, 0x1FD4, 0x1FE5, 0x1FEB, 0x1FE6,\n    0x1FD7, 0x1FC1, 0x1FA4, 0x1F81, 0x1F5C, 0x1F33, 0x1F0A, 0x1EE2,\n    0x1EBB, 0x1E98, 0x1E7A, 0x1E62, 0x1E51, 0x1E4A, 0x1E47, 0x1E43,\n    0x1E3E, 0x1E39, 0x1E33, 0x1E2C, 0x1E25, 0x1E1C, 0x1E14, 0x1E0A,\n    0x1E00, 0x1DF5, 0x1DEA, 0x1DDE, 0x1DD1, 0x1DC4, 0x1DB6, 0x1DA8,\n    0x1D99, 0x1D8A, 0x1B09, 0x1B07, 0x1B02, 0x1AFB, 0x1AF2, 0x1AE7,\n    0x1ADC, 0x1AD0, 0x1AC3, 0x1AB8, 0x1AAD, 0x1AA4, 0x1A9D, 0x1A98,\n    0x1A96, 0x1A98, 0x1A9C, 0x1AA2, 0x1AAA, 0x1AB3, 0x1ABE, 0x1AC9,\n    0x1AD4, 0x1ADF, 0x1AEA, 0x1AF3, 0x1AFC, 0x1B02, 0x1B07, 0x1B09,\n    0x1B0A, 0x1B0B, 0x1B0D, 0x1B0F, 0x1B11, 0x1B14, 0x1B17, 0x1B1A,\n    0x1B1E, 0x1B21, 0x1B26, 0x1B2A, 0x1B2F, 0x1B34, 0x1B3A, 0x1B3F,\n    0x1B45, 0x1B4B, 0x1B52, 0x1B58, 0x1144, 0x1147, 0x114F, 0x115B,\n    0x116A, 0x117C, 0x1190, 0x11A4, 0x11B8, 0x11CC, 0x11DE, 0x11ED,\n    0x11F9, 0x1201, 0x1204, 0x1201, 0x11FB, 0x11F0, 0x11E3, 0x11D3,\n    0x11C2, 0x11B0, 0x119D, 0x118A, 0x1179, 0x1168, 0x115B, 0x114F,\n    0x1148, 0x1144, 0x1143, 0x1142, 0x1141, 0x1140, 0x113F, 0x113E,\n    0x113D, 0x113C, 0x113B, 0x113A, 0x1139, 0x1138, 0x1137, 0x1136,\n    0x1136, 0x1135, 0x1134, 0x1133, 0x1133, 0x1132, 0xAC44, 0xAC40,\n    0xAC35, 0xAC24, 0xAC0E, 0xABF4, 0xABD9, 0xABBC, 0xAB9F, 0xAB83,\n    0xAB69, 0xAB53, 0xAB42, 0xAB37, 0xAB33, 0xAB37, 0xAB40, 0xAB4F,\n    0xAB62, 0xAB78, 0xAB91, 0xABAB, 0xABC6, 0xABE0, 0xABF9, 0xAC10,\n    0xAC24, 0xAC34, 0xAC3F, 0xAC44, 0xAC46, 0xAC49, 0xAC4C, 0xAC50,\n    0xAC54, 0xAC59, 0xAC5F, 0xAC65, 0xAC6C, 0xAC73, 0xAC7B, 0xAC84,\n    0xAC8C, 0xAC96, 0xACA0, 0xACAA, 0xACB4, 0xACBF, 0xACCB, 0xACD7,\n    0x0000, 0xFFFA, 0xFFE9, 0xFFCF, 0xFFAE, 0xFF87, 0xFF5C, 0xFF30,\n    0xFF04, 0xFED9, 0xFEB2, 0xFE91, 0xFE76, 0xFE65, 0xFE5F, 0xFE65,\n    0xFE75, 0xFE8D, 0xFEAC, 0xFED1, 0xFEF9, 0xFF24, 0xFF4F, 0xFF79,\n    0xFFA0, 0xFFC2, 0xFFDF, 0xFFF4, 0x0000, 0x0000, 0xFFFB, 0xFFF5,\n    0xFFEE, 0xFFE7, 0xFFDF, 0xFFD7, 0xFFCE, 0xFFC4, 0xFFBA, 0xFFB0,\n    0xFFA5, 0xFF99, 0xFF8E, 0xFF81, 0xFF75, 0xFF68, 0xFF5A, 0xFF4D,\n    0xFF3F, 0xFF30, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xFFFF, 0xFFFE, 0xFFFD, 0xFFFB, 0xFFF9, 0xFFF8,\n    0xFFF7, 0xFFF6, 0xFFF5, 0xFFF6, 0xFFF7, 0xFFF9, 0xFFFC, 0x0000,\n    0x0005, 0x000A, 0x000F, 0x0015, 0x001B, 0x0021, 0x0027, 0x002E,\n    0x0034, 0x003B, 0x0042, 0x0049, 0x0050, 0x0057, 0x005E, 0x0066,\n    0x006D, 0x0075, 0x007D, 0x0084, 0xBF40, 0xBF40, 0xBF40, 0xBF40,\n    0xBF40, 0xBF40, 0xBF40, 0xBF40, 0xBF40, 0xBF40, 0xBF40, 0xBF40,\n    0xBF40, 0xBF40, 0xBF40, 0xBF40, 0xBF3E, 0xBF3C, 0xBF39, 0xBF36,\n    0xBF33, 0xBF30, 0xBF2E, 0xBF2C, 0xBF2C, 0xBF2C, 0xBF2E, 0xBF32,\n    0xBF38, 0xBF40, 0xBF4A, 0xBF54, 0xBF5E, 0xBF68, 0xBF73, 0xBF7F,\n    0xBF8A, 0xBF96, 0xBFA2, 0xBFAF, 0xBFBB, 0xBFC8, 0xBFD5, 0xBFE3,\n    0xBFF0, 0xBFFE, 0xC00C, 0xC01A, 0xC028, 0xC037, 0x2537, 0x253D,\n    0x254E, 0x2568, 0x2589, 0x25B0, 0x25DB, 0x2607, 0x2634, 0x265E,\n    0x2685, 0x26A7, 0x26C1, 0x26D2, 0x26D8, 0x26D3, 0x26C4, 0x26AE,\n    0x2691, 0x266F, 0x2649, 0x2621, 0x25F8, 0x25CF, 0x25A9, 0x2585,\n    0x2567, 0x254F, 0x253E, 0x2537, 0x2534, 0x2530, 0x252C, 0x2527,\n    0x2522, 0x251C, 0x2516, 0x250F, 0x2507, 0x24FF, 0x24F7, 0x24EE,\n    0x24E4, 0x24DA, 0x24D0, 0x24C5, 0x24BA, 0x24AE, 0x24A2, 0x2495,\n    0xD64A, 0xD64C, 0xD651, 0xD658, 0xD662, 0xD66D, 0xD67A, 0xD686,\n    0xD693, 0xD69F, 0xD6AB, 0xD6B4, 0xD6BC, 0xD6C1, 0xD6C2, 0xD6C1,\n    0xD6BD, 0xD6B6, 0xD6AE, 0xD6A4, 0xD699, 0xD68E, 0xD682, 0xD676,\n    0xD66B, 0xD661, 0xD658, 0xD651, 0xD64C, 0xD64A, 0xD649, 0xD647,\n    0xD645, 0xD642, 0xD63E, 0xD63A, 0xD635, 0xD630, 0xD62A, 0xD623,\n    0xD61C, 0xD614, 0xD60C, 0xD603, 0xD5FA, 0xD5F1, 0xD5E7, 0xD5DC,\n    0xD5D1, 0xD5C6, 0xEC41, 0xEC3C, 0xEC2D, 0xEC17, 0xEBFA, 0xEBD9,\n    0xEBB5, 0xEB8F, 0xEB69, 0xEB45, 0xEB24, 0xEB08, 0xEAF1, 0xEAE3,\n    0xEADE, 0xEAE2, 0xEAEE, 0xEB02, 0xEB1A, 0xEB37, 0xEB58, 0xEB7A,\n    0xEB9D, 0xEBBF, 0xEBE0, 0xEBFE, 0xEC18, 0xEC2C, 0xEC3A, 0xEC41,\n    0xEC43, 0xEC45, 0xEC47, 0xEC49, 0xEC4A, 0xEC4C, 0xEC4D, 0xEC4F,\n    0xEC50, 0xEC51, 0xEC52, 0xEC53, 0xEC54, 0xEC54, 0xEC55, 0xEC56,\n    0xEC56, 0xEC56, 0xEC57, 0xEC57, 0xB59E, 0xB59B, 0xB590, 0xB581,\n    0xB56D, 0xB555, 0xB53C, 0xB521, 0xB507, 0xB4ED, 0xB4D6, 0xB4C2,\n    0xB4B2, 0xB4A8, 0xB4A4, 0xB4A7, 0xB4B0, 0xB4BE, 0xB4CF, 0xB4E3,\n    0xB4FA, 0xB512, 0xB52B, 0xB543, 0xB55A, 0xB56F, 0xB581, 0xB590,\n    0xB59A, 0xB59E, 0xB5A0, 0xB5A3, 0xB5A7, 0xB5AB, 0xB5B1, 0xB5B7,\n    0xB5BE, 0xB5C6, 0xB5CE, 0xB5D7, 0xB5E1, 0xB5EC, 0xB5F7, 0xB603,\n    0xB610, 0xB61D, 0xB62B, 0xB639, 0xB648, 0xB658, 0x7FFF, 0x7FFF,\n    0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF,\n    0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF,\n    0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF,\n    0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFD, 0x7FFA, 0x7FF4, 0x7FEC,\n    0x7FE3, 0x7FD7, 0x7FCA, 0x7FBB, 0x7FAB, 0x7F9A, 0x7F87, 0x7F74,\n    0x7F60, 0x7F4B, 0x7F35, 0x7F1F, 0x7F09, 0x7EF2, 0x7EDC, 0x7EC5,\n    0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF,\n    0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF,\n    0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF,\n    0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x8000, 0x8006,\n    0x800E, 0x801A, 0x8028, 0x8039, 0x804D, 0x8062, 0x807A, 0x8094,\n    0x80AF, 0x80CC, 0x80EA, 0x8109, 0x8129, 0x814A, 0x816B, 0x818C,\n    0x81AE, 0x81CF, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171,\n    0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171,\n    0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171,\n    0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171,\n    0x416C, 0x4160, 0x414C, 0x4130, 0x410E, 0x40E5, 0x40B6, 0x4082,\n    0x4049, 0x400C, 0x3FCB, 0x3F86, 0x3F3E, 0x3EF3, 0x3EA7, 0x3E59,\n    0x3E0A, 0x3DBA, 0x3D6A, 0x3D1B, 0xBF5F, 0x7FFF, 0x7FF5, 0x7FDA,\n    0x7FB4, 0x7F86, 0x7F56, 0x7F26, 0x7EFD, 0x7EDE, 0x7ECE, 0x7ED2,\n    0x7EEE, 0x7F26, 0x7F80, 0x7FFF, 0x80B2, 0x81A0, 0x82BF, 0x8404,\n    0x8565, 0x86D9, 0x8856, 0x89D1, 0x8B40, 0x8C9A, 0x8DD5, 0x8EE6,\n    0x8FC4, 0x9065, 0x90BE, 0x90EE, 0x911C, 0x9148, 0x9170, 0x9196,\n    0x91B9, 0x91DA, 0x91F9, 0x9215, 0x922F, 0x9246, 0x925B, 0x926E,\n    0x927F, 0x928F, 0x929C, 0x92A7, 0x92B0, 0x92B8, 0x92BE, 0x7FFF,\n    0x8002, 0x800C, 0x801B, 0x802D, 0x8040, 0x8052, 0x8062, 0x806E,\n    0x8074, 0x8072, 0x8068, 0x8052, 0x8030, 0x7FFF, 0x7FB9, 0x7F5D,\n    0x7EEE, 0x7E71, 0x7DE8, 0x7D59, 0x7CC6, 0x7C34, 0x7BA6, 0x7B20,\n    0x7AA6, 0x7A3D, 0x79E7, 0x79A9, 0x7987, 0x7974, 0x7962, 0x7951,\n    0x7942, 0x7933, 0x7925, 0x7919, 0x790D, 0x7902, 0x78F8, 0x78EF,\n    0x78E7, 0x78E0, 0x78D9, 0x78D3, 0x78CE, 0x78CA, 0x78C6, 0x78C3,\n    0x78C1, 0x4171, 0x416B, 0x415B, 0x4144, 0x4128, 0x410B, 0x40EE,\n    0x40D5, 0x40C3, 0x40B9, 0x40BB, 0x40CC, 0x40EE, 0x4124, 0x4171,\n    0x41DD, 0x426D, 0x431A, 0x43DE, 0x44B3, 0x4594, 0x4679, 0x475E,\n    0x483C, 0x490D, 0x49CB, 0x4A70, 0x4AF5, 0x4B56, 0x4B8C, 0x4BAA,\n    0x4BC5, 0x4BDF, 0x4BF8, 0x4C0F, 0x4C24, 0x4C38, 0x4C4A, 0x4C5B,\n    0x4C6B, 0x4C79, 0x4C86, 0x4C91, 0x4C9C, 0x4CA5, 0x4CAD, 0x4CB3,\n    0x4CB9, 0x4CBE, 0x4CC1, 0xBF5F, 0x0000, 0x0000, 0xFFFF, 0xFFFE,\n    0xFFFD, 0xFFFB, 0xFFFA, 0xFFF8, 0xFFF7, 0xFFF7, 0xFFF7, 0xFFF8,\n    0xFFFA, 0xFFFC, 0x0000, 0x0008, 0x0017, 0x002B, 0x0043, 0x005D,\n    0x0078, 0x0092, 0x00A9, 0x00BC, 0x00CA, 0x00D1, 0x00CF, 0x00C3,\n    0x00AC, 0x0087, 0x0054, 0x0014, 0xFFC8, 0xFF72, 0xFF13, 0xFEAD,\n    0xFE42, 0xFDD4, 0xFD64, 0xFCF4, 0xFC86, 0xFC1B, 0xFBB5, 0xFB57,\n    0xFB00, 0xFAB5, 0xFA75, 0xFA42, 0xFA20, 0xFA0E, 0x0000, 0x0000,\n    0xFFFE, 0xFFFB, 0xFFF8, 0xFFF4, 0xFFF1, 0xFFEE, 0xFFEC, 0xFFEA,\n    0xFFEB, 0xFFED, 0xFFF1, 0xFFF7, 0x0000, 0x000C, 0x001B, 0x002D,\n    0x0040, 0x0056, 0x006D, 0x0084, 0x009D, 0x00B5, 0x00CD, 0x00E5,\n    0x00FB, 0x0110, 0x0124, 0x0135, 0x0146, 0x015A, 0x016F, 0x0187,\n    0x019F, 0x01B8, 0x01D0, 0x01E9, 0x0200, 0x0215, 0x0229, 0x023A,\n    0x0248, 0x0252, 0x0258, 0x025A, 0x0257, 0x024E, 0x023E, 0x0228,\n    0xFC62, 0xFC5F, 0xFC57, 0xFC4B, 0xFC3C, 0xFC2C, 0xFC1A, 0xFC09,\n    0xFBFA, 0xFBED, 0xFBE4, 0xFBDF, 0xFBE0, 0xFBE9, 0xFBF9, 0xFC13,\n    0xFC36, 0xFC61, 0xFC92, 0xFCC9, 0xFD03, 0xFD3F, 0xFD7B, 0xFDB7,\n    0xFDF0, 0xFE25, 0xFE55, 0xFE7E, 0xFE9F, 0xFEB7, 0xFEC4, 0xFEC9,\n    0xFEC7, 0xFEBF, 0xFEB1, 0xFEA0, 0xFE8B, 0xFE75, 0xFE5F, 0xFE48,\n    0xFE33, 0xFE21, 0xFE12, 0xFE08, 0xFE04, 0xFE06, 0xFE11, 0xFE25,\n    0xFE43, 0xFE6C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFD,\n    0xFFFC, 0xFFFB, 0xFFFA, 0xFFF9, 0xFFF8, 0xFFF7, 0xFFF6, 0xFFF5,\n    0xFFF4, 0xFFF2, 0xFFF1, 0xFFF0, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0001, 0x0003, 0x0007, 0x000C, 0x0012,\n    0x0017, 0x001C, 0x0020, 0x0023, 0x0024, 0x0023, 0x001F, 0x0018,\n    0x000E, 0x0000, 0xFFEF, 0xFFDB, 0xFFC6, 0xFFAE, 0xFF94, 0xFF78,\n    0xFF5B, 0xFF3D, 0xFF1D, 0xFEFB, 0xFED9, 0xFEB5, 0xFE91, 0xFE6C,\n    0xFE46, 0xFE1F, 0xFDF8, 0xFDD1, 0xFDAA, 0xFD82, 0x0884, 0x0890,\n    0x08B2, 0x08E4, 0x0922, 0x0966, 0x09AC, 0x09EF, 0x0A29, 0x0A55,\n    0x0A70, 0x0A72, 0x0A59, 0x0A1E, 0x09BD, 0x0925, 0x0850, 0x0749,\n    0x061C, 0x04D2, 0x0376, 0x0213, 0x00B5, 0xFF65, 0xFE2F, 0xFD1C,\n    0xFC39, 0xFB8F, 0xFB29, 0xFB13, 0xFB2B, 0xFB4C, 0xFB74, 0xFBA4,\n    0xFBDA, 0xFC17, 0xFC5A, 0xFCA4, 0xFCF3, 0xFD47, 0xFDA1, 0xFE00,\n    0xFE63, 0xFECA, 0xFF36, 0xFFA5, 0x0016, 0x008C, 0x0104, 0x017F,\n    0x40A1, 0x40A7, 0x40B8, 0x40D2, 0x40F4, 0x411B, 0x4145, 0x4172,\n    0x419E, 0x41C9, 0x41F0, 0x4211, 0x422B, 0x423C, 0x4242, 0x423D,\n    0x422F, 0x4219, 0x41FC, 0x41DA, 0x41B4, 0x418D, 0x4164, 0x413B,\n    0x4115, 0x40F2, 0x40D3, 0x40BB, 0x40A9, 0x40A1, 0x409E, 0x409A,\n    0x4097, 0x4094, 0x4091, 0x408E, 0x408C, 0x4089, 0x4087, 0x4084,\n    0x4082, 0x4080, 0x407E, 0x407C, 0x407B, 0x4079, 0x4077, 0x4076,\n    0x4075, 0x4073,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_82.inc.c",
    "content": "static const struct Animation anim_82[] = {\n    1,\n    189,\n    0,\n    0,\n    0x43,\n    ANIMINDEX_NUMPARTS(anim_82_indices),\n    anim_82_values,\n    anim_82_indices,\n    0,\n};\n\n\nstatic const u16 anim_82_indices[] = {\n    0x0001, 0x0000, 0x0043, 0x0001, 0x0043, 0x0044, 0x0001, 0x0000, 0x0001, 0x0087, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0043, 0x0B02,\n    0x0043, 0x0A39, 0x0043, 0x0A7C, 0x0043, 0x0ABF,\n    0x0043, 0x0970, 0x0043, 0x09B3, 0x0043, 0x09F6,\n    0x0043, 0x08A6, 0x0043, 0x08E9, 0x0043, 0x092C,\n    0x0043, 0x0194, 0x0043, 0x01D7, 0x0043, 0x021A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0043, 0x0151,\n    0x0043, 0x0088, 0x0043, 0x00CB, 0x0043, 0x010E,\n    0x0043, 0x07DC, 0x0043, 0x081F, 0x0043, 0x0862,\n    0x0043, 0x0369, 0x0043, 0x03AC, 0x0043, 0x03EF,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0043, 0x0326,\n    0x0043, 0x025D, 0x0043, 0x02A0, 0x0043, 0x02E3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x08A5,\n    0x0043, 0x0713, 0x0043, 0x0756, 0x0043, 0x0799,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0043, 0x06D0,\n    0x0043, 0x0607, 0x0043, 0x064A, 0x0043, 0x068D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x096F,\n    0x0043, 0x053E, 0x0043, 0x0581, 0x0043, 0x05C4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0043, 0x04FB,\n    0x0043, 0x0432, 0x0043, 0x0475, 0x0043, 0x04B8,\n};\n\nstatic const s16 anim_82_values[] = {\n    0x0000, 0x00AB, 0x00AB, 0x00AB, 0x00AB, 0x00AB, 0x00AB, 0x00AB,\n    0x00AB, 0x00AB, 0x00AC, 0x00AC, 0x00AC, 0x00AC, 0x00AC, 0x00AC,\n    0x00AC, 0x00AC, 0x00AC, 0x00AC, 0x00AD, 0x00AD, 0x00AD, 0x00AD,\n    0x00AD, 0x00AD, 0x00AD, 0x00AD, 0x00AD, 0x00AE, 0x00AE, 0x00AE,\n    0x00AE, 0x00AE, 0x00AE, 0x00AE, 0x00AE, 0x00AE, 0x00AE, 0x00AF,\n    0x00AF, 0x00AF, 0x00AF, 0x00AF, 0x00AF, 0x00AF, 0x00AF, 0x00AF,\n    0x00AF, 0x00B0, 0x00B0, 0x00B0, 0x00B0, 0x00B0, 0x00B0, 0x00B0,\n    0x00B0, 0x00B0, 0x00B0, 0x00B0, 0x00B0, 0x00B1, 0x00B1, 0x00B1,\n    0x00B1, 0x00B1, 0x00B1, 0x00B1, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n    0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001,\n    0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0002, 0x0002, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0004, 0x0004,\n    0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,\n    0x0004, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x3FFF,\n    0x0014, 0x0016, 0x0017, 0x0019, 0x001B, 0x001C, 0x001E, 0x001F,\n    0x0021, 0x0022, 0x0024, 0x0025, 0x0026, 0x0028, 0x0029, 0x002A,\n    0x002B, 0x002C, 0x002D, 0x002E, 0x002F, 0x002F, 0x0030, 0x0030,\n    0x0030, 0x0031, 0x0031, 0x0030, 0x0030, 0x0030, 0x002F, 0x002E,\n    0x002E, 0x002D, 0x002B, 0x002A, 0x0028, 0x0026, 0x0024, 0x0022,\n    0x0020, 0x001D, 0x001A, 0x0017, 0x0014, 0x0010, 0x000C, 0x0008,\n    0x0004, 0x0000, 0xFFFA, 0xFFF1, 0xFFE4, 0xFFD6, 0xFFC5, 0xFFB2,\n    0xFF9D, 0xFF87, 0xFF6F, 0xFF57, 0xFF3E, 0xFF25, 0xFF0B, 0xFEF2,\n    0xFEDA, 0xFEC2, 0xFEAB, 0xF979, 0xF979, 0xF979, 0xF978, 0xF978,\n    0xF978, 0xF978, 0xF978, 0xF977, 0xF977, 0xF977, 0xF977, 0xF977,\n    0xF976, 0xF976, 0xF976, 0xF976, 0xF976, 0xF976, 0xF976, 0xF976,\n    0xF975, 0xF975, 0xF975, 0xF975, 0xF975, 0xF975, 0xF975, 0xF975,\n    0xF975, 0xF975, 0xF976, 0xF976, 0xF976, 0xF976, 0xF976, 0xF976,\n    0xF977, 0xF977, 0xF977, 0xF977, 0xF978, 0xF978, 0xF979, 0xF979,\n    0xF979, 0xF97A, 0xF97B, 0xF97B, 0xF97C, 0xF97D, 0xF97E, 0xF97F,\n    0xF981, 0xF984, 0xF986, 0xF989, 0xF98C, 0xF98F, 0xF992, 0xF995,\n    0xF998, 0xF99C, 0xF99F, 0xF9A2, 0xF9A5, 0xF9A8, 0xED07, 0xECFD,\n    0xECF3, 0xECE9, 0xECDF, 0xECD5, 0xECCB, 0xECC2, 0xECB8, 0xECAF,\n    0xECA6, 0xEC9D, 0xEC95, 0xEC8D, 0xEC85, 0xEC7E, 0xEC77, 0xEC70,\n    0xEC6B, 0xEC65, 0xEC61, 0xEC5D, 0xEC5A, 0xEC57, 0xEC55, 0xEC54,\n    0xEC54, 0xEC55, 0xEC57, 0xEC59, 0xEC5D, 0xEC61, 0xEC67, 0xEC6E,\n    0xEC76, 0xEC7F, 0xEC89, 0xEC94, 0xECA1, 0xECAF, 0xECBE, 0xECCF,\n    0xECE1, 0xECF5, 0xED0A, 0xED21, 0xED39, 0xED53, 0xED6E, 0xED8C,\n    0xEDB4, 0xEDF0, 0xEE3E, 0xEE9B, 0xEF08, 0xEF80, 0xF004, 0xF091,\n    0xF126, 0xF1C0, 0xF25E, 0xF2FE, 0xF39F, 0xF43F, 0xF4DC, 0xF574,\n    0xF606, 0xE216, 0xE1F7, 0xE1D7, 0xE1B4, 0xE18F, 0xE169, 0xE141,\n    0xE118, 0xE0EE, 0xE0C3, 0xE098, 0xE06D, 0xE041, 0xE015, 0xDFEA,\n    0xDFBF, 0xDF95, 0xDF6C, 0xDF44, 0xDF1E, 0xDEF9, 0xDED5, 0xDEB4,\n    0xDE95, 0xDE78, 0xDE5E, 0xDE47, 0xDE33, 0xDE22, 0xDE14, 0xDE0A,\n    0xDE04, 0xDE02, 0xDE05, 0xDE0C, 0xDE17, 0xDE28, 0xDE3D, 0xDE59,\n    0xDE79, 0xDEA0, 0xDECC, 0xDEFF, 0xDF38, 0xDF77, 0xDFBE, 0xE00B,\n    0xE060, 0xE0BC, 0xE120, 0xE1AC, 0xE27B, 0xE388, 0xE4CC, 0xE642,\n    0xE7E4, 0xE9AB, 0xEB92, 0xED94, 0xEFA8, 0xF1CB, 0xF3F6, 0xF623,\n    0xF84B, 0xFA6A, 0xFC78, 0xFE71, 0xF495, 0xF41F, 0xF3AA, 0xF334,\n    0xF2BF, 0xF24B, 0xF1D9, 0xF168, 0xF0FA, 0xF08E, 0xF026, 0xEFC1,\n    0xEF60, 0xEF03, 0xEEAB, 0xEE58, 0xEE0B, 0xEDC4, 0xED83, 0xED4A,\n    0xED17, 0xECED, 0xECCA, 0xECB0, 0xEC9F, 0xEC97, 0xEC99, 0xECA6,\n    0xECBD, 0xECDF, 0xED0C, 0xED45, 0xED8B, 0xEDDE, 0xEE3D, 0xEEAA,\n    0xEF25, 0xEFAF, 0xF047, 0xF0EF, 0xF1A6, 0xF26D, 0xF345, 0xF42E,\n    0xF528, 0xF634, 0xF752, 0xF882, 0xF9C6, 0xFB1D, 0xFCF8, 0xFFBC,\n    0x0351, 0x07A6, 0x0CA5, 0x1239, 0x184E, 0x1ECF, 0x25A7, 0x2CC2,\n    0x340C, 0x3B6F, 0x42D8, 0x4A30, 0x5165, 0x5861, 0x5F10, 0xD0AA,\n    0xD094, 0xD07E, 0xD069, 0xD055, 0xD042, 0xD030, 0xD01F, 0xD00E,\n    0xCFFF, 0xCFF1, 0xCFE4, 0xCFD8, 0xCFCD, 0xCFC4, 0xCFBC, 0xCFB5,\n    0xCFB0, 0xCFAC, 0xCFA9, 0xCFA8, 0xCFA8, 0xCFAB, 0xCFAE, 0xCFB4,\n    0xCFBB, 0xCFC4, 0xCFCF, 0xCFDB, 0xCFEA, 0xCFFA, 0xD00D, 0xD021,\n    0xD038, 0xD050, 0xD06B, 0xD088, 0xD0A7, 0xD0C9, 0xD0EC, 0xD113,\n    0xD13B, 0xD166, 0xD194, 0xD1C4, 0xD1F7, 0xD22C, 0xD264, 0xD29F,\n    0xD2DC, 0xD334, 0xD3BB, 0xD46C, 0xD543, 0xD63B, 0xD750, 0xD87D,\n    0xD9BD, 0xDB0D, 0xDC67, 0xDDC7, 0xDF28, 0xE086, 0xE1DC, 0xE326,\n    0xE45E, 0xE581, 0xDCB7, 0xDD47, 0xDDD9, 0xDE6A, 0xDEFA, 0xDF89,\n    0xE017, 0xE0A2, 0xE12A, 0xE1AF, 0xE230, 0xE2AD, 0xE325, 0xE398,\n    0xE405, 0xE46B, 0xE4CB, 0xE523, 0xE573, 0xE5BB, 0xE5F9, 0xE62E,\n    0xE659, 0xE67A, 0xE690, 0xE699, 0xE697, 0xE688, 0xE66D, 0xE643,\n    0xE60B, 0xE5C5, 0xE56F, 0xE50A, 0xE494, 0xE40E, 0xE376, 0xE2CD,\n    0xE211, 0xE142, 0xE061, 0xDF6B, 0xDE61, 0xDD42, 0xDC0D, 0xDAC3,\n    0xD962, 0xD7EA, 0xD65B, 0xD4B4, 0xD268, 0xCEFE, 0xCA8E, 0xC532,\n    0xBF04, 0xB81E, 0xB098, 0xA88D, 0xA016, 0x974D, 0x8E4B, 0x8529,\n    0x7C03, 0x72F0, 0x6A0B, 0x616D, 0x5930, 0xFC4B, 0xFC09, 0xFBC7,\n    0xFB87, 0xFB48, 0xFB0B, 0xFAD0, 0xFA97, 0xFA60, 0xFA2D, 0xF9FD,\n    0xF9D1, 0xF9A8, 0xF984, 0xF965, 0xF94A, 0xF935, 0xF926, 0xF91C,\n    0xF919, 0xF91C, 0xF927, 0xF938, 0xF952, 0xF973, 0xF99C, 0xF9CE,\n    0xFA09, 0xFA4E, 0xFA9C, 0xFAF4, 0xFB56, 0xFBC2, 0xFC3A, 0xFCBD,\n    0xFD4C, 0xFDE6, 0xFE8D, 0xFF40, 0x0000, 0x00E1, 0x01F4, 0x0337,\n    0x04A7, 0x0641, 0x0802, 0x09E8, 0x0BEF, 0x0E14, 0x1055, 0x12B0,\n    0x1520, 0x17A4, 0x1A38, 0x1CDA, 0x1F87, 0x223B, 0x24F5, 0x27B1,\n    0x2A6C, 0x2D25, 0x2FD7, 0x327F, 0x351C, 0x37AB, 0x3A27, 0x3C90,\n    0xFFFB, 0xFFFA, 0xFFFA, 0xFFF9, 0xFFF9, 0xFFF8, 0xFFF8, 0xFFF8,\n    0xFFF7, 0xFFF7, 0xFFF7, 0xFFF7, 0xFFF6, 0xFFF6, 0xFFF6, 0xFFF6,\n    0xFFF6, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF6, 0xFFF6,\n    0xFFF6, 0xFFF6, 0xFFF7, 0xFFF7, 0xFFF7, 0xFFF8, 0xFFF8, 0xFFF9,\n    0xFFFA, 0xFFFA, 0xFFFB, 0xFFFC, 0xFFFD, 0xFFFE, 0xFFFF, 0x0000,\n    0xFFFF, 0xFFFA, 0xFFF0, 0xFFE3, 0xFFD2, 0xFFC0, 0xFFAB, 0xFF94,\n    0xFF7C, 0xFF64, 0xFF4B, 0xFF33, 0xFF1C, 0xFF06, 0xFEF1, 0xFEDF,\n    0xFECF, 0xFEC3, 0xFEBA, 0xFEB6, 0xFEB6, 0xFEBB, 0xFEC6, 0xFED7,\n    0xFEEF, 0xFF0D, 0xFF33, 0xF513, 0xF50F, 0xF50B, 0xF508, 0xF504,\n    0xF500, 0xF4FD, 0xF4FA, 0xF4F7, 0xF4F4, 0xF4F1, 0xF4EE, 0xF4EC,\n    0xF4EA, 0xF4E8, 0xF4E7, 0xF4E5, 0xF4E5, 0xF4E4, 0xF4E4, 0xF4E4,\n    0xF4E5, 0xF4E6, 0xF4E7, 0xF4E9, 0xF4EB, 0xF4EE, 0xF4F2, 0xF4F6,\n    0xF4FA, 0xF4FF, 0xF505, 0xF50B, 0xF512, 0xF519, 0xF521, 0xF52A,\n    0xF534, 0xF53E, 0xF549, 0xF557, 0xF569, 0xF57F, 0xF599, 0xF5B7,\n    0xF5D8, 0xF5FB, 0xF621, 0xF649, 0xF673, 0xF69F, 0xF6CC, 0xF6F9,\n    0xF727, 0xF756, 0xF784, 0xF7B2, 0xF7E0, 0xF80C, 0xF837, 0xF860,\n    0xF888, 0xF8AD, 0xF8CF, 0xF8EF, 0xF90B, 0xF923, 0xD648, 0xD664,\n    0xD67E, 0xD697, 0xD6AE, 0xD6C3, 0xD6D7, 0xD6E8, 0xD6F8, 0xD706,\n    0xD711, 0xD71A, 0xD721, 0xD726, 0xD728, 0xD728, 0xD725, 0xD71F,\n    0xD717, 0xD70B, 0xD6FD, 0xD6EB, 0xD6D7, 0xD6BF, 0xD6A4, 0xD685,\n    0xD663, 0xD63D, 0xD614, 0xD5E7, 0xD5B6, 0xD582, 0xD549, 0xD50C,\n    0xD4CB, 0xD486, 0xD43D, 0xD3EF, 0xD39D, 0xD346, 0xCFA0, 0xC805,\n    0xC071, 0xBCDD, 0xBFCB, 0xC69F, 0xCDAA, 0xD13C, 0xCF24, 0xC9C0,\n    0xC43B, 0xC1C1, 0xC383, 0xC790, 0xCC5D, 0xD05F, 0xD20D, 0xCFBC,\n    0xCA83, 0xC4FC, 0xC1C1, 0xC0A1, 0xBFAE, 0xBEEB, 0xBE58, 0xBDF4,\n    0xBDC2, 0x10FD, 0x10FA, 0x10F7, 0x10F1, 0x10EB, 0x10E3, 0x10DA,\n    0x10D1, 0x10C6, 0x10BB, 0x10AF, 0x10A2, 0x1094, 0x1086, 0x1078,\n    0x1069, 0x105A, 0x104B, 0x103C, 0x102C, 0x101D, 0x100E, 0x0FFF,\n    0x0FF0, 0x0FE2, 0x0FD4, 0x0FC6, 0x0FBA, 0x0FAD, 0x0FA2, 0x0F97,\n    0x0F8E, 0x0F85, 0x0F7D, 0x0F77, 0x0F71, 0x0F6D, 0x0F6B, 0x0F6A,\n    0x0F6A, 0x0F5E, 0x0F50, 0x0F61, 0x0FB3, 0x10BF, 0x124F, 0x137C,\n    0x1362, 0x10E9, 0x0CD3, 0x0903, 0x075C, 0x0883, 0x0B3D, 0x0EA4,\n    0x11D1, 0x13DC, 0x1409, 0x12E5, 0x1179, 0x10D1, 0x10F3, 0x1134,\n    0x118E, 0x11FA, 0x1272, 0x12F0, 0x18C8, 0x18CB, 0x18CF, 0x18D4,\n    0x18DB, 0x18E3, 0x18EC, 0x18F6, 0x1902, 0x190E, 0x191B, 0x1928,\n    0x1936, 0x1945, 0x1955, 0x1964, 0x1974, 0x1984, 0x1995, 0x19A5,\n    0x19B6, 0x19C6, 0x19D6, 0x19E6, 0x19F6, 0x1A05, 0x1A13, 0x1A21,\n    0x1A2E, 0x1A3B, 0x1A47, 0x1A51, 0x1A5B, 0x1A64, 0x1A6B, 0x1A71,\n    0x1A76, 0x1A79, 0x1A7B, 0x1A7B, 0x1A84, 0x1A90, 0x1A88, 0x1A54,\n    0x19A8, 0x18A8, 0x17E4, 0x17F2, 0x1981, 0x1C17, 0x1E81, 0x1F8B,\n    0x1ECD, 0x1D0D, 0x1AE0, 0x18DB, 0x1791, 0x1744, 0x17AA, 0x188D,\n    0x19B2, 0x1B03, 0x1C82, 0x1E24, 0x1FD9, 0x2197, 0x234E, 0xD89B,\n    0xD899, 0xD895, 0xD890, 0xD88A, 0xD884, 0xD87C, 0xD874, 0xD86A,\n    0xD860, 0xD856, 0xD84B, 0xD83F, 0xD833, 0xD827, 0xD81B, 0xD80E,\n    0xD801, 0xD7F4, 0xD7E7, 0xD7DA, 0xD7CD, 0xD7C1, 0xD7B4, 0xD7A8,\n    0xD79D, 0xD791, 0xD787, 0xD77D, 0xD774, 0xD76B, 0xD763, 0xD75C,\n    0xD756, 0xD752, 0xD74E, 0xD74B, 0xD74A, 0xD749, 0xD74B, 0xD736,\n    0xD71B, 0xD737, 0xD7C4, 0xD8F1, 0xDA94, 0xDC66, 0xDE1F, 0xDFFB,\n    0xE207, 0xE3B5, 0xE476, 0xE42D, 0xE342, 0xE1EF, 0xE06F, 0xDEFD,\n    0xDDDE, 0xDCE6, 0xDBA3, 0xD9A3, 0xD6E9, 0xD3D4, 0xD080, 0xCD05,\n    0xC97E, 0xC605, 0xFFD7, 0xFFD6, 0xFFD4, 0xFFD3, 0xFFD2, 0xFFD1,\n    0xFFD0, 0xFFCF, 0xFFCE, 0xFFCD, 0xFFCC, 0xFFCB, 0xFFCA, 0xFFC9,\n    0xFFC9, 0xFFC8, 0xFFC7, 0xFFC7, 0xFFC6, 0xFFC6, 0xFFC5, 0xFFC5,\n    0xFFC4, 0xFFC4, 0xFFC4, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3,\n    0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3,\n    0xFFC3, 0xFFC3, 0xFFC4, 0xFFC4, 0xFFC4, 0xFFC5, 0xFFC5, 0xFFC5,\n    0xFFC6, 0xFFC6, 0xFFC7, 0xFFC7, 0xFFC7, 0xFFC8, 0xFFC9, 0xFFC9,\n    0xFFCA, 0xFFCA, 0xFFCB, 0xFFCB, 0xFFCC, 0xFFCD, 0xFFCD, 0xFFCE,\n    0xFFCF, 0xFFD0, 0xFFD0, 0xFFD1, 0xFFD2, 0xFF2F, 0xFF2F, 0xFF2F,\n    0xFF2F, 0xFF2F, 0xFF2F, 0xFF2F, 0xFF2F, 0xFF2F, 0xFF2F, 0xFF2F,\n    0xFF2F, 0xFF2F, 0xFF2F, 0xFF2F, 0xFF2F, 0xFF2F, 0xFF2F, 0xFF2F,\n    0xFF2F, 0xFF2F, 0xFF2F, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E,\n    0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E,\n    0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E,\n    0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E,\n    0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E,\n    0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E,\n    0xCA2B, 0xCA31, 0xCA37, 0xCA3D, 0xCA43, 0xCA49, 0xCA4F, 0xCA55,\n    0xCA5C, 0xCA62, 0xCA69, 0xCA6F, 0xCA76, 0xCA7C, 0xCA83, 0xCA8A,\n    0xCA91, 0xCA98, 0xCA9F, 0xCAA6, 0xCAAD, 0xCAB4, 0xCABB, 0xCAC2,\n    0xCAC8, 0xCACF, 0xCAD6, 0xCADD, 0xCAE4, 0xCAEB, 0xCAF2, 0xCAF9,\n    0xCB00, 0xCB06, 0xCB0D, 0xCB14, 0xCB1A, 0xCB21, 0xCB27, 0xCB2E,\n    0xCB34, 0xCB3A, 0xCB40, 0xCB46, 0xCB4C, 0xCB52, 0xCB58, 0xCB5D,\n    0xCB63, 0xCB68, 0xCB6D, 0xCB72, 0xCB77, 0xCB7C, 0xCB80, 0xCB84,\n    0xCB89, 0xCB8D, 0xCB91, 0xCB94, 0xCB98, 0xCB9B, 0xCB9E, 0xCBA1,\n    0xCBA4, 0xCBA6, 0xCBA9, 0x1D7B, 0x1D6B, 0x1D5A, 0x1D49, 0x1D38,\n    0x1D26, 0x1D14, 0x1D02, 0x1CEF, 0x1CDC, 0x1CC9, 0x1CB5, 0x1CA1,\n    0x1C8D, 0x1C79, 0x1C64, 0x1C4F, 0x1C3A, 0x1C25, 0x1C10, 0x1BFB,\n    0x1BE5, 0x1BD0, 0x1BBA, 0x1BA5, 0x1B8F, 0x1B79, 0x1B64, 0x1B4E,\n    0x1B38, 0x1B23, 0x1B0D, 0x1AF8, 0x1AE3, 0x1ACD, 0x1AB8, 0x1AA3,\n    0x1A8F, 0x1A7A, 0x1A66, 0x1A52, 0x1A3E, 0x1A2A, 0x1A17, 0x1A04,\n    0x19F1, 0x19DF, 0x19CD, 0x19BB, 0x19AA, 0x1999, 0x1988, 0x1978,\n    0x1969, 0x195A, 0x194B, 0x193D, 0x192F, 0x1922, 0x1916, 0x190A,\n    0x18FE, 0x18F4, 0x18E9, 0x18E0, 0x18D7, 0x18CF, 0x1B5F, 0x1B66,\n    0x1B6D, 0x1B75, 0x1B7C, 0x1B84, 0x1B8C, 0x1B94, 0x1B9C, 0x1BA5,\n    0x1BAD, 0x1BB6, 0x1BBF, 0x1BC8, 0x1BD1, 0x1BDA, 0x1BE3, 0x1BED,\n    0x1BF6, 0x1BFF, 0x1C09, 0x1C13, 0x1C1C, 0x1C26, 0x1C30, 0x1C39,\n    0x1C43, 0x1C4D, 0x1C57, 0x1C60, 0x1C6A, 0x1C74, 0x1C7D, 0x1C87,\n    0x1C91, 0x1C9A, 0x1CA4, 0x1CAD, 0x1CB6, 0x1CC0, 0x1CC9, 0x1CD2,\n    0x1CDB, 0x1CE3, 0x1CEC, 0x1CF4, 0x1CFD, 0x1D05, 0x1D0D, 0x1D15,\n    0x1D1D, 0x1D24, 0x1D2C, 0x1D33, 0x1D3A, 0x1D40, 0x1D47, 0x1D4D,\n    0x1D53, 0x1D59, 0x1D5E, 0x1D64, 0x1D69, 0x1D6D, 0x1D72, 0x1D76,\n    0x1D7A, 0x1131, 0x1131, 0x1130, 0x1130, 0x112F, 0x112F, 0x112E,\n    0x112E, 0x112D, 0x112D, 0x112C, 0x112C, 0x112C, 0x112B, 0x112B,\n    0x112B, 0x112A, 0x112A, 0x112A, 0x1129, 0x1129, 0x1129, 0x1129,\n    0x1129, 0x1128, 0x1128, 0x1128, 0x1128, 0x1128, 0x1128, 0x1128,\n    0x1128, 0x1128, 0x1128, 0x1128, 0x1128, 0x1128, 0x1128, 0x1128,\n    0x1128, 0x1128, 0x1128, 0x1128, 0x1129, 0x1129, 0x1129, 0x1129,\n    0x1129, 0x1129, 0x112A, 0x112A, 0x112A, 0x112A, 0x112A, 0x112B,\n    0x112B, 0x112B, 0x112C, 0x112C, 0x112C, 0x112C, 0x112D, 0x112D,\n    0x112D, 0x112E, 0x112E, 0x112E, 0xACE3, 0xACF0, 0xACFD, 0xAD0A,\n    0xAD18, 0xAD26, 0xAD34, 0xAD43, 0xAD51, 0xAD60, 0xAD70, 0xAD7F,\n    0xAD8F, 0xAD9F, 0xADAF, 0xADBF, 0xADD0, 0xADE1, 0xADF1, 0xAE02,\n    0xAE13, 0xAE24, 0xAE35, 0xAE46, 0xAE58, 0xAE69, 0xAE7A, 0xAE8C,\n    0xAE9D, 0xAEAE, 0xAEBF, 0xAED0, 0xAEE2, 0xAEF3, 0xAF04, 0xAF14,\n    0xAF25, 0xAF36, 0xAF46, 0xAF56, 0xAF66, 0xAF76, 0xAF86, 0xAF95,\n    0xAFA5, 0xAFB4, 0xAFC2, 0xAFD1, 0xAFDF, 0xAFED, 0xAFFB, 0xB008,\n    0xB015, 0xB021, 0xB02D, 0xB039, 0xB044, 0xB04F, 0xB05A, 0xB064,\n    0xB06E, 0xB077, 0xB080, 0xB088, 0xB08F, 0xB097, 0xB09D, 0xFF22,\n    0xFF13, 0xFF04, 0xFEF5, 0xFEE5, 0xFED5, 0xFEC6, 0xFEB6, 0xFEA6,\n    0xFE95, 0xFE85, 0xFE75, 0xFE65, 0xFE54, 0xFE44, 0xFE34, 0xFE23,\n    0xFE13, 0xFE03, 0xFDF3, 0xFDE3, 0xFDD3, 0xFDC3, 0xFDB4, 0xFDA5,\n    0xFD96, 0xFD87, 0xFD78, 0xFD6A, 0xFD5C, 0xFD4E, 0xFD41, 0xFD34,\n    0xFD27, 0xFD1B, 0xFD0F, 0xFD04, 0xFCF9, 0xFCEE, 0xFCE4, 0xFCDB,\n    0xFCD2, 0xFCC9, 0xFCC1, 0xFCBA, 0xFCB3, 0xFCAD, 0xFCA8, 0xFCA3,\n    0xFC9F, 0xFC9C, 0xFC99, 0xFC97, 0xFC96, 0xFC95, 0xFC96, 0xFC97,\n    0xFC98, 0xFC9B, 0xFC9E, 0xFCA2, 0xFCA6, 0xFCAB, 0xFCB0, 0xFCB6,\n    0xFCBD, 0xFCC4, 0x008C, 0x0094, 0x009C, 0x00A4, 0x00AC, 0x00B4,\n    0x00BC, 0x00C4, 0x00CC, 0x00D4, 0x00DC, 0x00E4, 0x00EC, 0x00F4,\n    0x00FC, 0x0104, 0x010C, 0x0114, 0x011B, 0x0123, 0x012A, 0x0132,\n    0x0139, 0x0140, 0x0148, 0x014F, 0x0155, 0x015C, 0x0163, 0x0169,\n    0x016F, 0x0175, 0x017B, 0x0181, 0x0187, 0x018C, 0x0191, 0x0196,\n    0x019B, 0x019F, 0x01A4, 0x01A8, 0x01AB, 0x01AF, 0x01B2, 0x01B5,\n    0x01B8, 0x01BA, 0x01BC, 0x01BE, 0x01BF, 0x01C1, 0x01C1, 0x01C2,\n    0x01C2, 0x01C2, 0x01C1, 0x01C1, 0x01BF, 0x01BE, 0x01BC, 0x01BA,\n    0x01B7, 0x01B4, 0x01B1, 0x01AE, 0x01AA, 0xC045, 0xC054, 0xC062,\n    0xC071, 0xC080, 0xC08F, 0xC09E, 0xC0AD, 0xC0BC, 0xC0CA, 0xC0D9,\n    0xC0E8, 0xC0F7, 0xC106, 0xC115, 0xC123, 0xC132, 0xC140, 0xC14E,\n    0xC15C, 0xC16A, 0xC178, 0xC186, 0xC193, 0xC1A0, 0xC1AD, 0xC1BA,\n    0xC1C6, 0xC1D3, 0xC1DE, 0xC1EA, 0xC1F5, 0xC200, 0xC20B, 0xC215,\n    0xC21F, 0xC229, 0xC232, 0xC23B, 0xC243, 0xC24B, 0xC252, 0xC259,\n    0xC260, 0xC266, 0xC26B, 0xC270, 0xC274, 0xC278, 0xC27C, 0xC27E,\n    0xC281, 0xC282, 0xC283, 0xC283, 0xC283, 0xC282, 0xC280, 0xC27E,\n    0xC27B, 0xC278, 0xC274, 0xC26F, 0xC26A, 0xC264, 0xC25E, 0xC257,\n    0x2489, 0x247B, 0x246E, 0x2460, 0x2452, 0x2444, 0x2435, 0x2426,\n    0x2417, 0x2407, 0x23F7, 0x23E7, 0x23D7, 0x23C7, 0x23B7, 0x23A6,\n    0x2395, 0x2384, 0x2373, 0x2362, 0x2351, 0x2340, 0x232E, 0x231D,\n    0x230B, 0x22FA, 0x22E9, 0x22D7, 0x22C6, 0x22B4, 0x22A3, 0x2292,\n    0x2280, 0x226F, 0x225E, 0x224D, 0x223D, 0x222C, 0x221C, 0x220B,\n    0x21FB, 0x21EB, 0x21DC, 0x21CC, 0x21BD, 0x21AE, 0x219F, 0x2191,\n    0x2183, 0x2175, 0x2168, 0x215A, 0x214E, 0x2141, 0x2135, 0x212A,\n    0x211E, 0x2114, 0x2109, 0x20FF, 0x20F6, 0x20ED, 0x20E4, 0x20DC,\n    0x20D5, 0x20CE, 0x20C7, 0xD5BA, 0xD5AE, 0xD5A1, 0xD594, 0xD587,\n    0xD57A, 0xD56C, 0xD55E, 0xD54F, 0xD540, 0xD531, 0xD522, 0xD513,\n    0xD503, 0xD4F3, 0xD4E3, 0xD4D3, 0xD4C2, 0xD4B2, 0xD4A1, 0xD490,\n    0xD480, 0xD46F, 0xD45D, 0xD44C, 0xD43B, 0xD42A, 0xD419, 0xD408,\n    0xD3F6, 0xD3E5, 0xD3D4, 0xD3C3, 0xD3B2, 0xD3A1, 0xD390, 0xD37F,\n    0xD36F, 0xD35E, 0xD34E, 0xD33E, 0xD32E, 0xD31E, 0xD30E, 0xD2FF,\n    0xD2F0, 0xD2E1, 0xD2D2, 0xD2C4, 0xD2B6, 0xD2A8, 0xD29B, 0xD28E,\n    0xD281, 0xD275, 0xD269, 0xD25D, 0xD252, 0xD247, 0xD23D, 0xD233,\n    0xD22A, 0xD221, 0xD218, 0xD210, 0xD209, 0xD202, 0xEC57, 0xEC57,\n    0xEC57, 0xEC57, 0xEC57, 0xEC56, 0xEC56, 0xEC55, 0xEC55, 0xEC54,\n    0xEC54, 0xEC53, 0xEC52, 0xEC51, 0xEC51, 0xEC50, 0xEC4F, 0xEC4E,\n    0xEC4C, 0xEC4B, 0xEC4A, 0xEC49, 0xEC48, 0xEC46, 0xEC45, 0xEC44,\n    0xEC42, 0xEC41, 0xEC3F, 0xEC3E, 0xEC3C, 0xEC3A, 0xEC39, 0xEC37,\n    0xEC36, 0xEC34, 0xEC32, 0xEC30, 0xEC2F, 0xEC2D, 0xEC2B, 0xEC2A,\n    0xEC28, 0xEC26, 0xEC24, 0xEC23, 0xEC21, 0xEC1F, 0xEC1D, 0xEC1C,\n    0xEC1A, 0xEC18, 0xEC16, 0xEC15, 0xEC13, 0xEC11, 0xEC10, 0xEC0E,\n    0xEC0D, 0xEC0B, 0xEC0A, 0xEC08, 0xEC07, 0xEC05, 0xEC04, 0xEC02,\n    0xEC01, 0xB668, 0xB678, 0xB689, 0xB69B, 0xB6AD, 0xB6BF, 0xB6D2,\n    0xB6E5, 0xB6F9, 0xB70D, 0xB721, 0xB735, 0xB74A, 0xB75F, 0xB775,\n    0xB78A, 0xB7A0, 0xB7B6, 0xB7CD, 0xB7E3, 0xB7FA, 0xB810, 0xB827,\n    0xB83E, 0xB855, 0xB86C, 0xB883, 0xB89A, 0xB8B1, 0xB8C8, 0xB8DF,\n    0xB8F6, 0xB90D, 0xB924, 0xB93A, 0xB951, 0xB967, 0xB97D, 0xB993,\n    0xB9A9, 0xB9BF, 0xB9D4, 0xB9E9, 0xB9FE, 0xBA12, 0xBA27, 0xBA3A,\n    0xBA4E, 0xBA61, 0xBA74, 0xBA86, 0xBA98, 0xBAA9, 0xBABA, 0xBACA,\n    0xBADA, 0xBAEA, 0xBAF9, 0xBB07, 0xBB14, 0xBB22, 0xBB2E, 0xBB3A,\n    0xBB45, 0xBB4F, 0xBB59, 0xBB62, 0x7EAF, 0x7E99, 0x7E84, 0x7E6F,\n    0x7E5B, 0x7E48, 0x7E36, 0x7E25, 0x7E15, 0x7E07, 0x7DFA, 0x7DF0,\n    0x7DE6, 0x7DDF, 0x7DDA, 0x7DD8, 0x7DD7, 0x7DD9, 0x7DDE, 0x7DE6,\n    0x7DF0, 0x7DFD, 0x7E0E, 0x7E22, 0x7E39, 0x7E54, 0x7E73, 0x7E96,\n    0x7EBC, 0x7EE7, 0x7F16, 0x7F49, 0x7F81, 0x7FBD, 0x7FFF, 0x81D1,\n    0x85C8, 0x8A6D, 0x8E4C, 0x8FEF, 0x8FEB, 0x8FCF, 0x8F9D, 0x8F58,\n    0x8EFF, 0x8E96, 0x8E1D, 0x8D97, 0x8D04, 0x8C66, 0x8BC0, 0x8B12,\n    0x8A5F, 0x89A7, 0x88ED, 0x8832, 0x8777, 0x86BF, 0x860B, 0x855C,\n    0x84B5, 0x8416, 0x8381, 0x82F9, 0x827E, 0x8212, 0x81B7, 0x81F0,\n    0x8211, 0x8230, 0x824F, 0x826D, 0x8289, 0x82A4, 0x82BD, 0x82D4,\n    0x82E9, 0x82FC, 0x830C, 0x831A, 0x8324, 0x832C, 0x8330, 0x8330,\n    0x832D, 0x8326, 0x831B, 0x830C, 0x82F8, 0x82DF, 0x82C1, 0x829F,\n    0x8277, 0x8249, 0x8216, 0x81DD, 0x819D, 0x8158, 0x810C, 0x80B9,\n    0x805F, 0x7FFF, 0x7D53, 0x7784, 0x70AC, 0x6AEA, 0x685A, 0x6829,\n    0x6817, 0x6823, 0x684A, 0x688B, 0x68E2, 0x694F, 0x69CF, 0x6A60,\n    0x6B00, 0x6BAC, 0x6C63, 0x6D22, 0x6DE8, 0x6EB2, 0x6F7E, 0x704B,\n    0x7115, 0x71DB, 0x729A, 0x7351, 0x73FE, 0x749E, 0x752F, 0x75B0,\n    0x761D, 0x7676, 0x3CCC, 0x3C7E, 0x3C32, 0x3BE9, 0x3BA2, 0x3B5E,\n    0x3B1E, 0x3AE2, 0x3AAB, 0x3A79, 0x3A4C, 0x3A25, 0x3A05, 0x39EC,\n    0x39DA, 0x39D0, 0x39CF, 0x39D6, 0x39E7, 0x3A02, 0x3A27, 0x3A56,\n    0x3A91, 0x3AD8, 0x3B2B, 0x3B8B, 0x3BF7, 0x3C72, 0x3CFA, 0x3D92,\n    0x3E38, 0x3EED, 0x3FB3, 0x4089, 0x4171, 0x47F8, 0x562A, 0x66BF,\n    0x746D, 0x79EC, 0x796D, 0x78A8, 0x77A1, 0x765D, 0x74DF, 0x732C,\n    0x7149, 0x6F39, 0x6D00, 0x6AA4, 0x6828, 0x6590, 0x62E1, 0x601E,\n    0x5D4D, 0x5A72, 0x5790, 0x54AC, 0x51CA, 0x4EEF, 0x4C1E, 0x495C,\n    0x46AE, 0x4416, 0x419B, 0x3F3F, 0x3D08, 0xBF5F, 0x92C2, 0x92C5,\n    0x92C6, 0x92C6, 0x92C4, 0x92C1, 0x92BD, 0x92B8, 0x92B1, 0x92A9,\n    0x92A1, 0x9297, 0x928D, 0x9281, 0x9275, 0x9268, 0x925B, 0x924C,\n    0x923E, 0x922F, 0x921F, 0x920F, 0x91FF, 0x91EE, 0x91DE, 0x91CD,\n    0x91BC, 0x91AC, 0x919B, 0x918B, 0x917A, 0x916A, 0x915B, 0x914B,\n    0x913C, 0x912E, 0x9120, 0x9113, 0x9107, 0x90FB, 0x90F0, 0x90E6,\n    0x90DD, 0x90D5, 0x90CE, 0x90C9, 0x90C4, 0x90C1, 0x90BE, 0x90BE,\n    0x90BE, 0x90BE, 0x90BE, 0x90BE, 0x90BE, 0x90BE, 0x90BE, 0x90BE,\n    0x90BE, 0x90BE, 0x90BE, 0x90BE, 0x90BE, 0x90BE, 0x90BE, 0x90BE,\n    0x90BE, 0x78BF, 0x78BE, 0x78BE, 0x78BE, 0x78BE, 0x78C0, 0x78C1,\n    0x78C3, 0x78C6, 0x78C9, 0x78CC, 0x78D0, 0x78D4, 0x78D8, 0x78DD,\n    0x78E2, 0x78E7, 0x78ED, 0x78F2, 0x78F8, 0x78FE, 0x7904, 0x790B,\n    0x7911, 0x7917, 0x791E, 0x7924, 0x792B, 0x7931, 0x7938, 0x793E,\n    0x7944, 0x794A, 0x7950, 0x7956, 0x795B, 0x7961, 0x7966, 0x796A,\n    0x796F, 0x7973, 0x7977, 0x797A, 0x797E, 0x7980, 0x7983, 0x7984,\n    0x7986, 0x7986, 0x7987, 0x7987, 0x7987, 0x7987, 0x7987, 0x7987,\n    0x7987, 0x7987, 0x7987, 0x7987, 0x7987, 0x7987, 0x7987, 0x7987,\n    0x7987, 0x7987, 0x7987, 0x7987, 0x4CC4, 0x4CC6, 0x4CC6, 0x4CC6,\n    0x4CC5, 0x4CC3, 0x4CC1, 0x4CBE, 0x4CBA, 0x4CB5, 0x4CB0, 0x4CAA,\n    0x4CA3, 0x4C9D, 0x4C95, 0x4C8D, 0x4C85, 0x4C7D, 0x4C74, 0x4C6B,\n    0x4C61, 0x4C58, 0x4C4E, 0x4C44, 0x4C3A, 0x4C30, 0x4C26, 0x4C1C,\n    0x4C12, 0x4C08, 0x4BFE, 0x4BF4, 0x4BEB, 0x4BE2, 0x4BD9, 0x4BD0,\n    0x4BC8, 0x4BC0, 0x4BB8, 0x4BB1, 0x4BAB, 0x4BA5, 0x4B9F, 0x4B9A,\n    0x4B96, 0x4B93, 0x4B90, 0x4B8E, 0x4B8D, 0x4B8C, 0x4B8C, 0x4B8C,\n    0x4B8C, 0x4B8C, 0x4B8C, 0x4B8C, 0x4B8C, 0x4B8C, 0x4B8C, 0x4B8C,\n    0x4B8C, 0x4B8C, 0x4B8C, 0x4B8C, 0x4B8C, 0x4B8C, 0x4B8C, 0xBF5F,\n    0xFA0D, 0xFA19, 0xFA32, 0xFA56, 0xFA84, 0xFABB, 0xFAF9, 0xFB3E,\n    0xFB88, 0xFBD5, 0xFC26, 0xFC78, 0xFCCB, 0xFD1C, 0xFD6C, 0xFDB8,\n    0xFDFF, 0xFE41, 0xFE7C, 0xFEAF, 0xFED8, 0xFEF7, 0xFF0A, 0xFF10,\n    0xFEF0, 0xFE9C, 0xFE1D, 0xFD82, 0xFCD4, 0xFC21, 0xFB75, 0xFADA,\n    0xFA5D, 0xFA0A, 0xF9ED, 0xF9F1, 0xF9F9, 0xFA05, 0xFA14, 0xFA28,\n    0xFA3E, 0xFA58, 0xFA75, 0xFA94, 0xFAB6, 0xFADB, 0xFB02, 0xFB2B,\n    0xFB55, 0xFB81, 0xFBAF, 0xFBDE, 0xFC0E, 0xFC3F, 0xFC70, 0xFCA2,\n    0xFCD4, 0xFD06, 0xFD38, 0xFD6A, 0xFD9B, 0xFDCB, 0xFDFB, 0xFE29,\n    0xFE56, 0xFE82, 0xFEAC, 0x020E, 0x01F3, 0x01D6, 0x01B7, 0x0196,\n    0x0173, 0x014E, 0x0126, 0x00FC, 0x00CF, 0x009F, 0x006C, 0x0036,\n    0xFFFD, 0xFFBF, 0xFF7E, 0xFF39, 0xFEF0, 0xFEA3, 0xFE51, 0xFDFB,\n    0xFDA0, 0xFD3F, 0xFCDA, 0xFC50, 0xFB89, 0xFA96, 0xF985, 0xF868,\n    0xF74C, 0xF642, 0xF558, 0xF49F, 0xF426, 0xF3FC, 0xF403, 0xF410,\n    0xF425, 0xF440, 0xF462, 0xF489, 0xF4B6, 0xF4E8, 0xF51F, 0xF55B,\n    0xF59A, 0xF5DE, 0xF625, 0xF66F, 0xF6BC, 0xF70B, 0xF75C, 0xF7B0,\n    0xF804, 0xF85A, 0xF8B0, 0xF907, 0xF95E, 0xF9B4, 0xFA0A, 0xFA5F,\n    0xFAB2, 0xFB04, 0xFB54, 0xFBA1, 0xFBEC, 0xFC33, 0xFE9F, 0xFEDB,\n    0xFF1E, 0xFF67, 0xFFB7, 0x000A, 0x0064, 0x00C2, 0x0124, 0x0188,\n    0x01EF, 0x0257, 0x02C0, 0x032A, 0x0393, 0x03FC, 0x0463, 0x04C8,\n    0x052A, 0x0588, 0x05E2, 0x0638, 0x0689, 0x06D3, 0x0718, 0x075A,\n    0x0796, 0x07CC, 0x07FA, 0x081E, 0x0839, 0x0849, 0x084B, 0x0840,\n    0x0826, 0x0803, 0x07DE, 0x07B7, 0x078E, 0x0763, 0x0737, 0x0709,\n    0x06D9, 0x06A9, 0x0676, 0x0643, 0x060F, 0x05D9, 0x05A2, 0x056B,\n    0x0533, 0x04FA, 0x04C1, 0x0487, 0x044D, 0x0412, 0x03D8, 0x039D,\n    0x0362, 0x0327, 0x02ED, 0x02B2, 0x0278, 0x023F, 0x0206, 0x01CD,\n    0x0195, 0xFFEF, 0xFFEE, 0xFFED, 0xFFEC, 0xFFEB, 0xFFEA, 0xFFE9,\n    0xFFE8, 0xFFE7, 0xFFE6, 0xFFE5, 0xFFE5, 0xFFE4, 0xFFE4, 0xFFE4,\n    0xFFE4, 0xFFE4, 0xFFE4, 0xFFE4, 0xFFE4, 0xFFE5, 0xFFE6, 0xFFE6,\n    0xFFE8, 0xFFE9, 0xFFEA, 0xFFEC, 0xFFEE, 0xFFF0, 0xFFF2, 0xFFF4,\n    0xFFF7, 0xFFFA, 0xFFFD, 0x0000, 0x0004, 0x000A, 0x0012, 0x001B,\n    0x0025, 0x0031, 0x003D, 0x004B, 0x0059, 0x0068, 0x0078, 0x0088,\n    0x0099, 0x00A9, 0x00BA, 0x00CB, 0x00DB, 0x00EB, 0x00FB, 0x010A,\n    0x0119, 0x0127, 0x0134, 0x0140, 0x014A, 0x0154, 0x015C, 0x0162,\n    0x0167, 0x016A, 0x016B, 0x016B, 0xFD5B, 0xFD33, 0xFD0C, 0xFCE6,\n    0xFCBF, 0xFC9A, 0xFC75, 0xFC51, 0xFC2E, 0xFC0C, 0xFBEC, 0xFBCD,\n    0xFBAF, 0xFB93, 0xFB78, 0xFB5F, 0xFB49, 0xFB34, 0xFB22, 0xFB12,\n    0xFB04, 0xFAF9, 0xFAF0, 0xFAEA, 0xFAE8, 0xFAE8, 0xFAEB, 0xFAF2,\n    0xFAFC, 0xFB09, 0xFB1A, 0xFB2F, 0xFB48, 0xFB64, 0xFB85, 0xFBAD,\n    0xFBDF, 0xFC1B, 0xFC60, 0xFCAD, 0xFD02, 0xFD5F, 0xFDC3, 0xFE2E,\n    0xFE9E, 0xFF15, 0xFF90, 0x000F, 0x0093, 0x011B, 0x01A6, 0x0233,\n    0x02C3, 0x0354, 0x03E6, 0x047A, 0x050D, 0x05A0, 0x0632, 0x06C3,\n    0x0752, 0x07DF, 0x0869, 0x08EF, 0x0972, 0x09F1, 0x0A6B, 0x01FC,\n    0x027B, 0x02FC, 0x037D, 0x0400, 0x0484, 0x0508, 0x058C, 0x0610,\n    0x0694, 0x0716, 0x0798, 0x0818, 0x0897, 0x0914, 0x098E, 0x0A06,\n    0x0A7B, 0x0AED, 0x0B5C, 0x0BC7, 0x0C2D, 0x0C90, 0x0CEE, 0x0D47,\n    0x0D9A, 0x0DE9, 0x0E31, 0x0E73, 0x0EAF, 0x0EE5, 0x0F13, 0x0F3A,\n    0x0F59, 0x0F71, 0x0F7F, 0x0F85, 0x0F81, 0x0F74, 0x0F5F, 0x0F42,\n    0x0F1D, 0x0EF0, 0x0EBC, 0x0E81, 0x0E3F, 0x0DF6, 0x0DA8, 0x0D53,\n    0x0CF9, 0x0C9A, 0x0C36, 0x0BCD, 0x0B5F, 0x0AEE, 0x0A78, 0x09FF,\n    0x0983, 0x0904, 0x0882, 0x07FE, 0x0778, 0x06EF, 0x0666, 0x05DB,\n    0x054F, 0x04C3, 0x4072, 0x4071, 0x4070, 0x406F, 0x406E, 0x406E,\n    0x406D, 0x406C, 0x406C, 0x406C, 0x406B, 0x406B, 0x406B, 0x406B,\n    0x406B, 0x406B, 0x406B, 0x406B, 0x406B, 0x406C, 0x406C, 0x406C,\n    0x406D, 0x406D, 0x406E, 0x406E, 0x406F, 0x4070, 0x4070, 0x4071,\n    0x4072, 0x4073, 0x4074, 0x4075, 0x4076, 0x4076, 0x4077, 0x4078,\n    0x407A, 0x407B, 0x407C, 0x407D, 0x407E, 0x407F, 0x4080, 0x4081,\n    0x4082, 0x4084, 0x4085, 0x4086, 0x4087, 0x4088, 0x4089, 0x408B,\n    0x408C, 0x408D, 0x408E, 0x408F, 0x4090, 0x4091, 0x4092, 0x4093,\n    0x4094, 0x4095, 0x4096, 0x4097, 0x4098,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_83.inc.c",
    "content": "static const struct Animation anim_83[] = {\n    1,\n    189,\n    0,\n    0,\n    0x3B,\n    ANIMINDEX_NUMPARTS(anim_83_indices),\n    anim_83_values,\n    anim_83_indices,\n    0,\n};\n\n\nstatic const u16 anim_83_indices[] = {\n    0x0001, 0x0000, 0x003B, 0x0001, 0x003B, 0x003C, 0x0001, 0x0000, 0x0001, 0x0077, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x003B, 0x0904,\n    0x003B, 0x0853, 0x003B, 0x088E, 0x003B, 0x08C9,\n    0x003B, 0x07A2, 0x003B, 0x07DD, 0x003B, 0x0818,\n    0x0001, 0x079E, 0x0001, 0x079F, 0x0001, 0x07A0,\n    0x003B, 0x0164, 0x003B, 0x019F, 0x003B, 0x01DA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x003B, 0x0129,\n    0x003B, 0x0078, 0x003B, 0x00B3, 0x003B, 0x00EE,\n    0x003B, 0x06EC, 0x003B, 0x0727, 0x003B, 0x0762,\n    0x003B, 0x0301, 0x003B, 0x033C, 0x003B, 0x0377,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x003B, 0x02C6,\n    0x003B, 0x0215, 0x003B, 0x0250, 0x003B, 0x028B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x079D,\n    0x003B, 0x063B, 0x003B, 0x0676, 0x003B, 0x06B1,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x003B, 0x0600,\n    0x003B, 0x054F, 0x003B, 0x058A, 0x003B, 0x05C5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x07A1,\n    0x003B, 0x049E, 0x003B, 0x04D9, 0x003B, 0x0514,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x003B, 0x0463,\n    0x003B, 0x03B2, 0x003B, 0x03ED, 0x003B, 0x0428,\n};\n\nstatic const s16 anim_83_values[] = {\n    0x0000, 0x00B1, 0x00B1, 0x00B1, 0x00B1, 0x00B1, 0x00B1, 0x00B1,\n    0x00B1, 0x00B1, 0x00B1, 0x00B1, 0x00B1, 0x00B1, 0x00B1, 0x00B1,\n    0x00B1, 0x00B1, 0x00B1, 0x00B1, 0x00B1, 0x00B1, 0x00B1, 0x00B1,\n    0x00B1, 0x00B1, 0x00B1, 0x00B1, 0x00B1, 0x00B1, 0x00B1, 0x00B0,\n    0x00B0, 0x00B0, 0x00B0, 0x00B0, 0x00B0, 0x00B0, 0x00B0, 0x00AF,\n    0x00AF, 0x00AF, 0x00AF, 0x00AF, 0x00AF, 0x00AF, 0x00AE, 0x00AE,\n    0x00AE, 0x00AE, 0x00AE, 0x00AD, 0x00AD, 0x00AD, 0x00AD, 0x00AC,\n    0x00AC, 0x00AC, 0x00AC, 0x00AB, 0x0005, 0x0005, 0x0005, 0x0005,\n    0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,\n    0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,\n    0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,\n    0x0005, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,\n    0x0004, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0002,\n    0x0002, 0x0002, 0x0002, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0x3FFF,\n    0xFE95, 0xFE81, 0xFE6E, 0xFE5E, 0xFE50, 0xFE45, 0xFE3E, 0xFE3A,\n    0xFE38, 0xFE38, 0xFE3A, 0xFE3D, 0xFE41, 0xFE45, 0xFE49, 0xFE4D,\n    0xFE4F, 0xFE50, 0xFE50, 0xFE50, 0xFE50, 0xFE50, 0xFE50, 0xFE50,\n    0xFE50, 0xFE50, 0xFE50, 0xFE50, 0xFE50, 0xFE50, 0xFE50, 0xFE50,\n    0xFE50, 0xFE50, 0xFE50, 0xFE50, 0xFE50, 0xFE50, 0xFE50, 0xFE50,\n    0xFE50, 0xFE50, 0xFE50, 0xFE50, 0xFE50, 0xFE50, 0xFE50, 0xFE50,\n    0xFE50, 0xFE50, 0xFE50, 0xFE50, 0xFE50, 0xFE50, 0xFE50, 0xFE50,\n    0xFE50, 0xFE50, 0xFE50, 0xF9AB, 0xF9AE, 0xF9B0, 0xF9B2, 0xF9B4,\n    0xF9B6, 0xF9B7, 0xF9B7, 0xF9B7, 0xF9B7, 0xF9B7, 0xF9B7, 0xF9B6,\n    0xF9B6, 0xF9B5, 0xF9B5, 0xF9B4, 0xF9B4, 0xF9B4, 0xF9B4, 0xF9B4,\n    0xF9B4, 0xF9B4, 0xF9B4, 0xF9B4, 0xF9B4, 0xF9B4, 0xF9B4, 0xF9B4,\n    0xF9B4, 0xF9B4, 0xF9B4, 0xF9B4, 0xF9B4, 0xF9B4, 0xF9B4, 0xF9B4,\n    0xF9B4, 0xF9B4, 0xF9B4, 0xF9B4, 0xF9B4, 0xF9B4, 0xF9B4, 0xF9B4,\n    0xF9B4, 0xF9B4, 0xF9B4, 0xF9B4, 0xF9B4, 0xF9B4, 0xF9B4, 0xF9B4,\n    0xF9B4, 0xF9B4, 0xF9B4, 0xF9B4, 0xF9B4, 0xF9B4, 0xF690, 0xF710,\n    0xF785, 0xF7EC, 0xF845, 0xF889, 0xF8B8, 0xF8D4, 0xF8DF, 0xF8DD,\n    0xF8D1, 0xF8BD, 0xF8A4, 0xF889, 0xF870, 0xF85A, 0xF84B, 0xF845,\n    0xF845, 0xF845, 0xF845, 0xF845, 0xF845, 0xF845, 0xF845, 0xF845,\n    0xF845, 0xF845, 0xF845, 0xF845, 0xF845, 0xF845, 0xF845, 0xF845,\n    0xF845, 0xF845, 0xF845, 0xF845, 0xF845, 0xF845, 0xF845, 0xF845,\n    0xF845, 0xF845, 0xF845, 0xF845, 0xF845, 0xF845, 0xF845, 0xF845,\n    0xF845, 0xF845, 0xF845, 0xF845, 0xF845, 0xF845, 0xF845, 0xF845,\n    0xF845, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFE83, 0xFCCD, 0xFB04,\n    0xF92B, 0xF748, 0xF55F, 0xF374, 0xF18C, 0xEFAC, 0xEDD7, 0xEC12,\n    0xEA62, 0xE8CC, 0xE752, 0xE5FB, 0x655D, 0x6B33, 0x707E, 0x752A,\n    0x7921, 0x7C1B, 0x7DF9, 0x7EE2, 0x7EFE, 0x7E74, 0x7D6E, 0x7C12,\n    0x7A88, 0x78F9, 0x778B, 0x7668, 0x75B7, 0x759F, 0x75EB, 0x7648,\n    0x76B5, 0x7731, 0x77B9, 0x784C, 0x78E9, 0x798E, 0x7A39, 0x7AE9,\n    0x7B9D, 0x7C52, 0x7D08, 0x7DBC, 0x7E6D, 0x7F1A, 0x7FC1, 0x8060,\n    0x80F6, 0x8181, 0x8200, 0x8273, 0x82DD, 0x833F, 0x839A, 0x83EF,\n    0x843F, 0x848B, 0x84D4, 0x851C, 0x8562, 0x85AA, 0x85F2, 0x863D,\n    0x868C, 0x86DF, 0x8738, 0x8798, 0x87FF, 0x8870, 0x88EA, 0xE68A,\n    0xE775, 0xE83C, 0xE8DB, 0xE94E, 0xE976, 0xE940, 0xE8BB, 0xE7F5,\n    0xE6FE, 0xE5E3, 0xE4B3, 0xE37C, 0xE24E, 0xE137, 0xE045, 0xDF86,\n    0xDF0B, 0xDECB, 0xDEB4, 0xDEC1, 0xDEEB, 0xDF2C, 0xDF80, 0xDFE1,\n    0xE048, 0xE0B0, 0xE114, 0xE16D, 0xE1B7, 0xE1EB, 0xE203, 0xE1FB,\n    0xE1CD, 0xE172, 0xE0E5, 0xE020, 0xDF1F, 0xDDDA, 0xDC42, 0xDA51,\n    0xD810, 0xD589, 0xD2C4, 0xCFCC, 0xCCA9, 0xC964, 0xC608, 0xC29D,\n    0xBF2D, 0xBBC1, 0xB863, 0xB51B, 0xB1F3, 0xAEF5, 0xAC29, 0xA999,\n    0xA74F, 0xA553, 0x516E, 0x4A3F, 0x43BE, 0x3E04, 0x392B, 0x3590,\n    0x335E, 0x3261, 0x3267, 0x333D, 0x34B0, 0x368C, 0x389F, 0x3AB5,\n    0x3C9B, 0x3E1E, 0x3F0C, 0x3F31, 0x3ECE, 0x3E47, 0x3DA2, 0x3CE0,\n    0x3C08, 0x3B1C, 0x3A20, 0x3918, 0x3808, 0x36F5, 0x35E1, 0x34D1,\n    0x33C9, 0x32CC, 0x31DF, 0x3105, 0x3042, 0x2F9B, 0x2F12, 0x2EAD,\n    0x2E6E, 0x2E59, 0x2E6A, 0x2E9F, 0x2EF2, 0x2F60, 0x2FE5, 0x307E,\n    0x3126, 0x31DA, 0x3295, 0x3354, 0x3414, 0x34CF, 0x3582, 0x362A,\n    0x36C2, 0x3747, 0x37B4, 0x3807, 0x383A, 0x3EE1, 0x4118, 0x4332,\n    0x452D, 0x4705, 0x48A3, 0x49F8, 0x4B0B, 0x4BE3, 0x4C8A, 0x4D07,\n    0x4D60, 0x4D9F, 0x4DCB, 0x4DEC, 0x4E0A, 0x4E2C, 0x4E5A, 0x4E9E,\n    0x4EF9, 0x4F67, 0x4FE3, 0x5067, 0x50F0, 0x5178, 0x51FB, 0x5274,\n    0x52DF, 0x5336, 0x5374, 0x5396, 0x5396, 0x5370, 0x531E, 0x529D,\n    0x51E7, 0x50F8, 0x4FCA, 0x4E5A, 0x4C96, 0x4A75, 0x4802, 0x4544,\n    0x4244, 0x3F0D, 0x3BA5, 0x3817, 0x346A, 0x30A9, 0x2CDC, 0x290B,\n    0x2540, 0x2184, 0x1DDF, 0x1A5A, 0x16FF, 0x13D5, 0x10E7, 0x0E3C,\n    0xFF61, 0xFF98, 0xFFD7, 0x001F, 0x0072, 0x00F5, 0x01C4, 0x02D2,\n    0x0411, 0x0574, 0x06ED, 0x086E, 0x09EB, 0x0B55, 0x0C9E, 0x0DBA,\n    0x0E9A, 0x0F32, 0x0F99, 0x0FF2, 0x103D, 0x107B, 0x10AC, 0x10D2,\n    0x10EC, 0x10FC, 0x1102, 0x10FF, 0x10F3, 0x10DF, 0x10C4, 0x10A2,\n    0x107B, 0x104E, 0x101C, 0x0FE6, 0x0FAC, 0x0F70, 0x0F32, 0x0EEB,\n    0x0E96, 0x0E33, 0x0DC5, 0x0D4D, 0x0CCC, 0x0C44, 0x0BB5, 0x0B22,\n    0x0A8B, 0x09F3, 0x095A, 0x08C2, 0x082C, 0x079A, 0x070D, 0x0686,\n    0x0607, 0x0592, 0x0527, 0xF938, 0xF949, 0xF954, 0xF95C, 0xF95D,\n    0xF94D, 0xF920, 0xF8DB, 0xF883, 0xF81C, 0xF7AD, 0xF738, 0xF6C4,\n    0xF654, 0xF5EE, 0xF596, 0xF551, 0xF524, 0xF506, 0xF4EB, 0xF4D3,\n    0xF4BE, 0xF4AD, 0xF49E, 0xF492, 0xF48A, 0xF484, 0xF481, 0xF482,\n    0xF485, 0xF48B, 0xF494, 0xF4A0, 0xF4AF, 0xF4C1, 0xF4D5, 0xF4ED,\n    0xF507, 0xF524, 0xF546, 0xF570, 0xF59F, 0xF5D4, 0xF60E, 0xF64D,\n    0xF68F, 0xF6D4, 0xF71B, 0xF764, 0xF7AD, 0xF7F7, 0xF841, 0xF889,\n    0xF8D0, 0xF914, 0xF955, 0xF992, 0xF9CB, 0xF9FF, 0xBDC1, 0xBDF2,\n    0xBE55, 0xBEEC, 0xBFB7, 0xC0D4, 0xC253, 0xC422, 0xC62E, 0xC864,\n    0xCAB3, 0xCD06, 0xCF4D, 0xD173, 0xD367, 0xD516, 0xD66C, 0xD759,\n    0xD7F3, 0xD860, 0xD8A7, 0xD8CB, 0xD8D0, 0xD8BB, 0xD891, 0xD857,\n    0xD810, 0xD7C1, 0xD76E, 0xD71D, 0xD6D1, 0xD690, 0xD65D, 0xD63D,\n    0xD634, 0xD648, 0xD67D, 0xD6D6, 0xD759, 0xD805, 0xD8D4, 0xD9C2,\n    0xDACD, 0xDBF0, 0xDD29, 0xDE75, 0xDFCE, 0xE134, 0xE2A1, 0xE413,\n    0xE586, 0xE6F7, 0xE862, 0xE9C5, 0xEB1B, 0xEC61, 0xED95, 0xEEB2,\n    0xEFB6, 0x136C, 0x13E2, 0x144A, 0x149E, 0x14D8, 0x1503, 0x152D,\n    0x1555, 0x1578, 0x1596, 0x15AB, 0x15B7, 0x15B8, 0x15AC, 0x1592,\n    0x1567, 0x1529, 0x14D8, 0x1471, 0x13F5, 0x1366, 0x12C6, 0x121A,\n    0x1163, 0x10A3, 0x0FDE, 0x0F16, 0x0E4E, 0x0D89, 0x0CC9, 0x0C10,\n    0x0B62, 0x0AC1, 0x0A30, 0x09B1, 0x0947, 0x08F4, 0x08BC, 0x08A1,\n    0x08A3, 0x08BE, 0x08F1, 0x0939, 0x0994, 0x0A00, 0x0A7C, 0x0B04,\n    0x0B98, 0x0C34, 0x0CD8, 0x0D80, 0x0E2A, 0x0ED6, 0x0F80, 0x1026,\n    0x10C7, 0x1160, 0x11EF, 0x1272, 0x24F2, 0x2676, 0x27CC, 0x28E6,\n    0x29B9, 0x2A49, 0x2AA8, 0x2ADD, 0x2AEF, 0x2AE4, 0x2AC4, 0x2A95,\n    0x2A5D, 0x2A24, 0x29F1, 0x29C9, 0x29B4, 0x29B9, 0x29D9, 0x2A0F,\n    0x2A58, 0x2AB0, 0x2B14, 0x2B80, 0x2BF1, 0x2C63, 0x2CD2, 0x2D3C,\n    0x2D9C, 0x2DF0, 0x2E33, 0x2E62, 0x2E7A, 0x2E77, 0x2E56, 0x2E13,\n    0x2DAA, 0x2D19, 0x2C5B, 0x2B63, 0x2A2A, 0x28B7, 0x2711, 0x253F,\n    0x2348, 0x2132, 0x1F04, 0x1CC6, 0x1A7E, 0x1834, 0x15ED, 0x13B1,\n    0x1187, 0x0F75, 0x0D83, 0x0BB7, 0x0A19, 0x08AF, 0x0780, 0xC2B5,\n    0xBFA7, 0xBCF5, 0xBAB9, 0xB90E, 0xB7EF, 0xB73A, 0xB6E0, 0xB6D1,\n    0xB6FC, 0xB751, 0xB7C1, 0xB83C, 0xB8B1, 0xB910, 0xB94A, 0xB94F,\n    0xB90E, 0xB893, 0xB7F5, 0xB73A, 0xB665, 0xB57C, 0xB484, 0xB381,\n    0xB277, 0xB16C, 0xB064, 0xAF64, 0xAE70, 0xAD8E, 0xACC1, 0xAC0E,\n    0xAB7B, 0xAB0B, 0xAAC4, 0xAAAA, 0xAAC2, 0xAB11, 0xAB98, 0xAC55,\n    0xAD42, 0xAE5C, 0xAF9E, 0xB104, 0xB288, 0xB427, 0xB5DC, 0xB7A3,\n    0xB977, 0xBB53, 0xBD34, 0xBF14, 0xC0F0, 0xC2C3, 0xC488, 0xC63B,\n    0xC7D7, 0xC959, 0xFFD3, 0xFFD3, 0xFFD4, 0xFFD5, 0xFFD6, 0xFFD7,\n    0xFFD8, 0xFFD8, 0xFFD9, 0xFFDA, 0xFFDB, 0xFFDC, 0xFFDD, 0xFFDE,\n    0xFFDF, 0xFFE0, 0xFFE0, 0xFFE1, 0xFFE2, 0xFFE3, 0xFFE4, 0xFFE5,\n    0xFFE6, 0xFFE7, 0xFFE8, 0xFFE8, 0xFFE9, 0xFFEA, 0xFFEB, 0xFFEC,\n    0xFFED, 0xFFEE, 0xFFEF, 0xFFEF, 0xFFF0, 0xFFF1, 0xFFF2, 0xFFF3,\n    0xFFF4, 0xFFF4, 0xFFF5, 0xFFF6, 0xFFF7, 0xFFF7, 0xFFF8, 0xFFF9,\n    0xFFF9, 0xFFFA, 0xFFFB, 0xFFFB, 0xFFFC, 0xFFFD, 0xFFFD, 0xFFFE,\n    0xFFFE, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0xFF2E, 0xFF2E, 0xFF2E,\n    0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E,\n    0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E,\n    0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E, 0xFF2E,\n    0xFF2E, 0xFF2E, 0xFF2F, 0xFF2F, 0xFF2F, 0xFF2F, 0xFF2F, 0xFF2F,\n    0xFF2F, 0xFF2F, 0xFF2F, 0xFF2F, 0xFF2F, 0xFF2F, 0xFF2F, 0xFF2F,\n    0xFF2F, 0xFF2F, 0xFF2F, 0xFF2F, 0xFF2F, 0xFF2F, 0xFF2F, 0xFF2F,\n    0xFF2F, 0xFF2F, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xCBAB, 0xCBAC, 0xCBAE, 0xCBAF, 0xCBB0, 0xCBB1, 0xCBB2, 0xCBB2,\n    0xCBB2, 0xCBB2, 0xCBB1, 0xCBB1, 0xCBB0, 0xCBAE, 0xCBAC, 0xCBAB,\n    0xCBA8, 0xCBA6, 0xCBA3, 0xCB9F, 0xCB9C, 0xCB98, 0xCB94, 0xCB8F,\n    0xCB8A, 0xCB85, 0xCB7F, 0xCB79, 0xCB73, 0xCB6C, 0xCB65, 0xCB5D,\n    0xCB56, 0xCB4D, 0xCB44, 0xCB3B, 0xCB32, 0xCB28, 0xCB1D, 0xCB13,\n    0xCB07, 0xCAFC, 0xCAF0, 0xCAE3, 0xCAD6, 0xCAC8, 0xCABA, 0xCAAC,\n    0xCA9D, 0xCA8E, 0xCA7E, 0xCA6D, 0xCA5D, 0xCA4B, 0xCA39, 0xCA27,\n    0xCA14, 0xCA01, 0xC9ED, 0x18C7, 0x18C1, 0x18BB, 0x18B5, 0x18B1,\n    0x18AD, 0x18AA, 0x18A8, 0x18A7, 0x18A6, 0x18A7, 0x18A8, 0x18AA,\n    0x18AD, 0x18B1, 0x18B6, 0x18BC, 0x18C3, 0x18CB, 0x18D4, 0x18DE,\n    0x18EA, 0x18F6, 0x1903, 0x1911, 0x1921, 0x1931, 0x1943, 0x1956,\n    0x196A, 0x1980, 0x1996, 0x19AE, 0x19C7, 0x19E2, 0x19FE, 0x1A1B,\n    0x1A39, 0x1A59, 0x1A7A, 0x1A9C, 0x1AC0, 0x1AE5, 0x1B0C, 0x1B34,\n    0x1B5E, 0x1B89, 0x1BB6, 0x1BE4, 0x1C14, 0x1C45, 0x1C78, 0x1CAC,\n    0x1CE2, 0x1D1A, 0x1D53, 0x1D8E, 0x1DCB, 0x1E09, 0x1D7D, 0x1D80,\n    0x1D83, 0x1D86, 0x1D88, 0x1D8A, 0x1D8B, 0x1D8C, 0x1D8D, 0x1D8D,\n    0x1D8D, 0x1D8D, 0x1D8C, 0x1D8B, 0x1D89, 0x1D87, 0x1D85, 0x1D82,\n    0x1D7E, 0x1D7A, 0x1D76, 0x1D71, 0x1D6C, 0x1D66, 0x1D5F, 0x1D59,\n    0x1D51, 0x1D49, 0x1D41, 0x1D38, 0x1D2F, 0x1D24, 0x1D1A, 0x1D0F,\n    0x1D03, 0x1CF7, 0x1CEA, 0x1CDC, 0x1CCE, 0x1CBF, 0x1CB0, 0x1CA0,\n    0x1C8F, 0x1C7D, 0x1C6B, 0x1C59, 0x1C45, 0x1C31, 0x1C1D, 0x1C07,\n    0x1BF1, 0x1BDA, 0x1BC3, 0x1BAA, 0x1B91, 0x1B78, 0x1B5D, 0x1B42,\n    0x1B26, 0x112F, 0x112F, 0x112F, 0x1130, 0x1130, 0x1130, 0x1131,\n    0x1131, 0x1132, 0x1132, 0x1132, 0x1133, 0x1133, 0x1134, 0x1134,\n    0x1134, 0x1135, 0x1135, 0x1136, 0x1136, 0x1136, 0x1137, 0x1137,\n    0x1138, 0x1138, 0x1139, 0x1139, 0x1139, 0x113A, 0x113A, 0x113B,\n    0x113B, 0x113B, 0x113C, 0x113C, 0x113D, 0x113D, 0x113D, 0x113E,\n    0x113E, 0x113E, 0x113F, 0x113F, 0x1140, 0x1140, 0x1140, 0x1141,\n    0x1141, 0x1141, 0x1142, 0x1142, 0x1142, 0x1142, 0x1143, 0x1143,\n    0x1143, 0x1144, 0x1144, 0x1144, 0xB0A3, 0xB0A9, 0xB0AE, 0xB0B2,\n    0xB0B6, 0xB0B9, 0xB0BB, 0xB0BD, 0xB0BE, 0xB0BF, 0xB0BF, 0xB0BE,\n    0xB0BC, 0xB0BA, 0xB0B7, 0xB0B3, 0xB0AE, 0xB0A9, 0xB0A2, 0xB09B,\n    0xB093, 0xB08B, 0xB081, 0xB077, 0xB06B, 0xB05F, 0xB052, 0xB044,\n    0xB035, 0xB025, 0xB014, 0xB002, 0xAFEF, 0xAFDB, 0xAFC6, 0xAFB0,\n    0xAF99, 0xAF81, 0xAF68, 0xAF4D, 0xAF32, 0xAF15, 0xAEF8, 0xAED9,\n    0xAEB9, 0xAE98, 0xAE75, 0xAE52, 0xAE2D, 0xAE07, 0xADE0, 0xADB7,\n    0xAD8D, 0xAD62, 0xAD36, 0xAD08, 0xACD9, 0xACA9, 0xAC77, 0xFCCC,\n    0xFCD4, 0xFCDD, 0xFCE6, 0xFCF0, 0xFCFA, 0xFD04, 0xFD0F, 0xFD1A,\n    0xFD26, 0xFD32, 0xFD3F, 0xFD4B, 0xFD58, 0xFD66, 0xFD74, 0xFD82,\n    0xFD90, 0xFD9E, 0xFDAD, 0xFDBC, 0xFDCB, 0xFDDA, 0xFDEA, 0xFDF9,\n    0xFE09, 0xFE19, 0xFE29, 0xFE39, 0xFE49, 0xFE59, 0xFE69, 0xFE7A,\n    0xFE8A, 0xFE9A, 0xFEAA, 0xFEBB, 0xFECB, 0xFEDB, 0xFEEB, 0xFEFB,\n    0xFF0A, 0xFF1A, 0xFF29, 0xFF39, 0xFF48, 0xFF57, 0xFF66, 0xFF74,\n    0xFF82, 0xFF90, 0xFF9E, 0xFFAC, 0xFFB9, 0xFFC6, 0xFFD2, 0xFFDE,\n    0xFFEA, 0xFFF5, 0x01A6, 0x01A2, 0x019D, 0x0199, 0x0194, 0x018F,\n    0x0189, 0x0183, 0x017E, 0x0178, 0x0171, 0x016B, 0x0164, 0x015E,\n    0x0157, 0x0150, 0x0149, 0x0141, 0x013A, 0x0132, 0x012B, 0x0123,\n    0x011B, 0x0113, 0x010B, 0x0103, 0x00FB, 0x00F2, 0x00EA, 0x00E2,\n    0x00D9, 0x00D1, 0x00C9, 0x00C0, 0x00B8, 0x00B0, 0x00A7, 0x009F,\n    0x0097, 0x008F, 0x0086, 0x007E, 0x0076, 0x006E, 0x0066, 0x005F,\n    0x0057, 0x004F, 0x0048, 0x0040, 0x0039, 0x0032, 0x002B, 0x0024,\n    0x001E, 0x0017, 0x0011, 0x000B, 0x0005, 0xC24F, 0xC248, 0xC23F,\n    0xC237, 0xC22D, 0xC224, 0xC21A, 0xC20F, 0xC204, 0xC1F9, 0xC1EE,\n    0xC1E2, 0xC1D6, 0xC1C9, 0xC1BC, 0xC1AF, 0xC1A2, 0xC194, 0xC187,\n    0xC179, 0xC16A, 0xC15C, 0xC14D, 0xC13F, 0xC130, 0xC121, 0xC112,\n    0xC102, 0xC0F3, 0xC0E4, 0xC0D4, 0xC0C5, 0xC0B5, 0xC0A6, 0xC096,\n    0xC087, 0xC077, 0xC068, 0xC059, 0xC049, 0xC03A, 0xC02B, 0xC01C,\n    0xC00D, 0xBFFF, 0xBFF0, 0xBFE2, 0xBFD4, 0xBFC6, 0xBFB9, 0xBFAB,\n    0xBF9E, 0xBF91, 0xBF85, 0xBF78, 0xBF6D, 0xBF61, 0xBF56, 0xBF4B,\n    0x20C2, 0x20BC, 0x20B8, 0x20B4, 0x20B0, 0x20AD, 0x20AB, 0x20AA,\n    0x20A9, 0x20A8, 0x20A9, 0x20AA, 0x20AC, 0x20AF, 0x20B2, 0x20B6,\n    0x20BB, 0x20C1, 0x20C8, 0x20CF, 0x20D7, 0x20E0, 0x20EA, 0x20F5,\n    0x2101, 0x210E, 0x211B, 0x212A, 0x2139, 0x2149, 0x215B, 0x216D,\n    0x2180, 0x2195, 0x21AA, 0x21C0, 0x21D8, 0x21F0, 0x220A, 0x2225,\n    0x2241, 0x225E, 0x227C, 0x229B, 0x22BB, 0x22DD, 0x2300, 0x2324,\n    0x2349, 0x236F, 0x2397, 0x23C0, 0x23EA, 0x2416, 0x2443, 0x2471,\n    0x24A0, 0x24D1, 0x2503, 0xD1FB, 0xD1F6, 0xD1F0, 0xD1EC, 0xD1E8,\n    0xD1E4, 0xD1E2, 0xD1E0, 0xD1DE, 0xD1DD, 0xD1DD, 0xD1DE, 0xD1DF,\n    0xD1E1, 0xD1E4, 0xD1E7, 0xD1EC, 0xD1F1, 0xD1F7, 0xD1FE, 0xD205,\n    0xD20E, 0xD217, 0xD221, 0xD22C, 0xD238, 0xD245, 0xD253, 0xD261,\n    0xD271, 0xD282, 0xD293, 0xD2A6, 0xD2B9, 0xD2CE, 0xD2E4, 0xD2FB,\n    0xD312, 0xD32B, 0xD345, 0xD360, 0xD37D, 0xD39A, 0xD3B9, 0xD3D8,\n    0xD3F9, 0xD41B, 0xD43F, 0xD463, 0xD489, 0xD4B0, 0xD4D8, 0xD502,\n    0xD52D, 0xD559, 0xD587, 0xD5B5, 0xD5E6, 0xD617, 0xEC00, 0xEBFF,\n    0xEBFD, 0xEBFC, 0xEBFB, 0xEBFA, 0xEBF9, 0xEBF8, 0xEBF7, 0xEBF6,\n    0xEBF6, 0xEBF5, 0xEBF4, 0xEBF4, 0xEBF3, 0xEBF3, 0xEBF2, 0xEBF2,\n    0xEBF2, 0xEBF2, 0xEBF2, 0xEBF2, 0xEBF2, 0xEBF2, 0xEBF2, 0xEBF3,\n    0xEBF3, 0xEBF4, 0xEBF4, 0xEBF5, 0xEBF6, 0xEBF7, 0xEBF8, 0xEBF9,\n    0xEBFA, 0xEBFC, 0xEBFD, 0xEBFF, 0xEC00, 0xEC02, 0xEC04, 0xEC06,\n    0xEC08, 0xEC0A, 0xEC0D, 0xEC0F, 0xEC12, 0xEC15, 0xEC18, 0xEC1B,\n    0xEC1E, 0xEC21, 0xEC25, 0xEC28, 0xEC2C, 0xEC30, 0xEC34, 0xEC38,\n    0xEC3C, 0xBB6B, 0xBB72, 0xBB79, 0xBB7F, 0xBB84, 0xBB89, 0xBB8C,\n    0xBB8F, 0xBB91, 0xBB91, 0xBB91, 0xBB90, 0xBB8E, 0xBB8C, 0xBB88,\n    0xBB83, 0xBB7D, 0xBB76, 0xBB6E, 0xBB64, 0xBB5A, 0xBB4F, 0xBB42,\n    0xBB34, 0xBB25, 0xBB15, 0xBB04, 0xBAF1, 0xBADD, 0xBAC8, 0xBAB2,\n    0xBA9A, 0xBA81, 0xBA67, 0xBA4B, 0xBA2E, 0xBA0F, 0xB9EF, 0xB9CD,\n    0xB9AA, 0xB986, 0xB960, 0xB939, 0xB910, 0xB8E5, 0xB8B9, 0xB88B,\n    0xB85C, 0xB82B, 0xB7F8, 0xB7C4, 0xB78E, 0xB756, 0xB71C, 0xB6E1,\n    0xB6A4, 0xB665, 0xB625, 0xB5E2, 0x816F, 0x813A, 0x811B, 0x8114,\n    0x8125, 0x818A, 0x826F, 0x83BF, 0x8563, 0x8746, 0x8952, 0x8B73,\n    0x8D92, 0x8F9A, 0x9176, 0x930F, 0x9450, 0x9524, 0x95AC, 0x9619,\n    0x966E, 0x96AC, 0x96D7, 0x96EE, 0x96F6, 0x96EF, 0x96DC, 0x96BF,\n    0x9699, 0x966E, 0x963E, 0x960D, 0x95DB, 0x95AC, 0x9580, 0x955B,\n    0x953D, 0x952A, 0x9524, 0x9524, 0x9524, 0x9524, 0x9524, 0x9524,\n    0x9524, 0x9524, 0x9524, 0x9524, 0x9524, 0x9524, 0x9524, 0x9524,\n    0x9524, 0x9524, 0x9524, 0x9524, 0x9524, 0x9524, 0x9524, 0x76B7,\n    0x76DF, 0x76EC, 0x76DB, 0x76AB, 0x7613, 0x74DF, 0x7329, 0x710D,\n    0x6EA5, 0x6C0B, 0x695A, 0x66AC, 0x641D, 0x61C6, 0x5FC3, 0x5E2E,\n    0x5D21, 0x5C74, 0x5BE8, 0x5B7C, 0x5B2C, 0x5AF6, 0x5AD8, 0x5ACE,\n    0x5AD7, 0x5AEF, 0x5B14, 0x5B44, 0x5B7C, 0x5BB8, 0x5BF8, 0x5C37,\n    0x5C74, 0x5CAB, 0x5CDB, 0x5D01, 0x5D19, 0x5D21, 0x5D21, 0x5D21,\n    0x5D21, 0x5D21, 0x5D21, 0x5D21, 0x5D21, 0x5D21, 0x5D21, 0x5D21,\n    0x5D21, 0x5D21, 0x5D21, 0x5D21, 0x5D21, 0x5D21, 0x5D21, 0x5D21,\n    0x5D21, 0x5D21, 0x3AF9, 0x3916, 0x3765, 0x35E9, 0x34A6, 0x33F3,\n    0x3410, 0x34DB, 0x3637, 0x3803, 0x3A1F, 0x3C6D, 0x3ECC, 0x411D,\n    0x4341, 0x4517, 0x4681, 0x475E, 0x47DD, 0x4843, 0x4893, 0x48CD,\n    0x48F5, 0x490B, 0x4912, 0x490C, 0x48FA, 0x48DF, 0x48BC, 0x4893,\n    0x4866, 0x4838, 0x4809, 0x47DD, 0x47B4, 0x4791, 0x4776, 0x4764,\n    0x475E, 0x475E, 0x475E, 0x475E, 0x475E, 0x475E, 0x475E, 0x475E,\n    0x475E, 0x475E, 0x475E, 0x475E, 0x475E, 0x475E, 0x475E, 0x475E,\n    0x475E, 0x475E, 0x475E, 0x475E, 0x475E, 0xBF5F, 0x90BE, 0x7987,\n    0x4B8C, 0xBF5F, 0xFED3, 0xFEF9, 0xFF1D, 0xFF3E, 0xFF5C, 0xFF75,\n    0xFF87, 0xFF92, 0xFF98, 0xFF99, 0xFF97, 0xFF93, 0xFF8D, 0xFF87,\n    0xFF81, 0xFF7D, 0xFF7C, 0xFF7E, 0xFF82, 0xFF87, 0xFF8C, 0xFF91,\n    0xFF97, 0xFF9C, 0xFFA2, 0xFFA8, 0xFFAE, 0xFFB4, 0xFFBA, 0xFFBF,\n    0xFFC5, 0xFFCB, 0xFFD0, 0xFFD6, 0xFFDB, 0xFFE0, 0xFFE4, 0xFFE8,\n    0xFFEC, 0xFFF0, 0xFFF3, 0xFFF6, 0xFFF9, 0xFFFB, 0xFFFE, 0x0000,\n    0x0001, 0x0003, 0x0005, 0x0007, 0x0009, 0x000A, 0x000C, 0x000D,\n    0x000F, 0x0010, 0x0011, 0x0013, 0x0014, 0xFC78, 0xFCB8, 0xFCF4,\n    0xFD2C, 0xFD60, 0xFD89, 0xFDA5, 0xFDB5, 0xFDBC, 0xFDBA, 0xFDB2,\n    0xFDA5, 0xFD95, 0xFD84, 0xFD74, 0xFD66, 0xFD5C, 0xFD58, 0xFD58,\n    0xFD57, 0xFD56, 0xFD56, 0xFD55, 0xFD54, 0xFD54, 0xFD53, 0xFD52,\n    0xFD52, 0xFD51, 0xFD50, 0xFD50, 0xFD4F, 0xFD4F, 0xFD4E, 0xFD4E,\n    0xFD4D, 0xFD4D, 0xFD4C, 0xFD4C, 0xFD4C, 0xFD4C, 0xFD4B, 0xFD4B,\n    0xFD4B, 0xFD4B, 0xFD4B, 0xFD4B, 0xFD4B, 0xFD4B, 0xFD4B, 0xFD4B,\n    0xFD4C, 0xFD4C, 0xFD4C, 0xFD4C, 0xFD4C, 0xFD4C, 0xFD4C, 0xFD4C,\n    0x015E, 0x0128, 0x00F3, 0x00C0, 0x008D, 0x005E, 0x0034, 0x000F,\n    0xFFEF, 0xFFCF, 0xFFAF, 0xFF90, 0xFF6E, 0xFF4A, 0xFF21, 0xFEF4,\n    0xFEBF, 0xFE83, 0xFE41, 0xFDF9, 0xFDAD, 0xFD5E, 0xFD0B, 0xFCB6,\n    0xFC5F, 0xFC06, 0xFBAC, 0xFB53, 0xFAF9, 0xFAA0, 0xFA48, 0xF9F2,\n    0xF99F, 0xF94E, 0xF901, 0xF8B8, 0xF874, 0xF835, 0xF7FB, 0xF7C6,\n    0xF795, 0xF768, 0xF73D, 0xF716, 0xF6F1, 0xF6CF, 0xF6AF, 0xF692,\n    0xF676, 0xF65C, 0xF644, 0xF62C, 0xF616, 0xF601, 0xF5EC, 0xF5D8,\n    0xF5C4, 0xF5B0, 0xF59C, 0x0168, 0x0162, 0x015B, 0x0151, 0x0144,\n    0x012A, 0x00FC, 0x00BB, 0x006D, 0x0013, 0xFFB3, 0xFF4D, 0xFEE7,\n    0xFE82, 0xFE24, 0xFDCE, 0xFD85, 0xFD4B, 0xFD1A, 0xFCEA, 0xFCBA,\n    0xFC8B, 0xFC5E, 0xFC31, 0xFC06, 0xFBDD, 0xFBB6, 0xFB91, 0xFB6E,\n    0xFB4D, 0xFB30, 0xFB15, 0xFAFE, 0xFAEA, 0xFAD9, 0xFACC, 0xFAC3,\n    0xFABF, 0xFABE, 0xFAC3, 0xFACD, 0xFADC, 0xFAF0, 0xFB08, 0xFB24,\n    0xFB43, 0xFB66, 0xFB8B, 0xFBB3, 0xFBDD, 0xFC08, 0xFC35, 0xFC63,\n    0xFC91, 0xFCC0, 0xFCEE, 0xFD1C, 0xFD49, 0xFD75, 0x0ADF, 0x0B4E,\n    0x0BB7, 0x0C19, 0x0C73, 0x0CBD, 0x0CEE, 0x0D0A, 0x0D14, 0x0D0E,\n    0x0CFD, 0x0CE3, 0x0CC3, 0x0CA0, 0x0C7E, 0x0C5F, 0x0C48, 0x0C3A,\n    0x0C33, 0x0C2F, 0x0C2D, 0x0C2D, 0x0C2E, 0x0C2F, 0x0C31, 0x0C32,\n    0x0C33, 0x0C33, 0x0C31, 0x0C2D, 0x0C27, 0x0C1D, 0x0C11, 0x0C00,\n    0x0BEB, 0x0BD1, 0x0BB2, 0x0B8E, 0x0B63, 0x0B32, 0x0AFB, 0x0ABF,\n    0x0A7E, 0x0A38, 0x09EE, 0x09A0, 0x094F, 0x08FB, 0x08A4, 0x084B,\n    0x07F0, 0x0793, 0x0735, 0x06D6, 0x0677, 0x0618, 0x05BA, 0x055C,\n    0x04FF, 0x0436, 0x03AA, 0x031D, 0x0291, 0x0206, 0x0163, 0x0093,\n    0xFF9F, 0xFE8E, 0xFD67, 0xFC32, 0xFAF8, 0xF9BF, 0xF890, 0xF771,\n    0xF66C, 0xF587, 0xF4CB, 0xF41E, 0xF365, 0xF2A3, 0xF1DB, 0xF110,\n    0xF044, 0xEF7B, 0xEEB7, 0xEDFB, 0xED4B, 0xECA9, 0xEC19, 0xEB9C,\n    0xEB36, 0xEAEB, 0xEABC, 0xEAAD, 0xEAC0, 0xEAF9, 0xEB5B, 0xEBE8,\n    0xECA7, 0xED9A, 0xEEBD, 0xF00B, 0xF180, 0xF318, 0xF4CF, 0xF69F,\n    0xF885, 0xFA7D, 0xFC81, 0xFE8E, 0x009F, 0x02B1, 0x04BF, 0x06C4,\n    0x08BC, 0x0AA3, 0x0C75, 0x0E2D, 0x4099, 0x409A, 0x409B, 0x409B,\n    0x409C, 0x409D, 0x409D, 0x409E, 0x409F, 0x409F, 0x40A0, 0x40A0,\n    0x40A0, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1,\n    0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1,\n    0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1,\n    0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1,\n    0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1,\n    0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_84.inc.c",
    "content": "static const struct Animation anim_84[] = {\n    1,\n    189,\n    0,\n    0,\n    0x40,\n    ANIMINDEX_NUMPARTS(anim_84_indices),\n    anim_84_values,\n    anim_84_indices,\n    0,\n};\n\n\nstatic const u16 anim_84_indices[] = {\n    0x0001, 0x0000, 0x0040, 0x0001, 0x0040, 0x0041, 0x0001, 0x0000, 0x0001, 0x0081, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0040, 0x090A,\n    0x0040, 0x084A, 0x0040, 0x088A, 0x0040, 0x08CA,\n    0x0040, 0x078A, 0x0040, 0x07CA, 0x0040, 0x080A,\n    0x0001, 0x0786, 0x0001, 0x0787, 0x0001, 0x0788,\n    0x0040, 0x0182, 0x0040, 0x01C2, 0x0040, 0x0202,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0040, 0x0142,\n    0x0040, 0x0082, 0x0040, 0x00C2, 0x0040, 0x0102,\n    0x0001, 0x0782, 0x0001, 0x0783, 0x0001, 0x0784,\n    0x0040, 0x0342, 0x0040, 0x0382, 0x0040, 0x03C2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0040, 0x0302,\n    0x0040, 0x0242, 0x0040, 0x0282, 0x0040, 0x02C2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0785,\n    0x0040, 0x06C2, 0x0040, 0x0702, 0x0040, 0x0742,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0040, 0x0682,\n    0x0040, 0x05C2, 0x0040, 0x0602, 0x0040, 0x0642,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0789,\n    0x0040, 0x0502, 0x0040, 0x0542, 0x0040, 0x0582,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0040, 0x04C2,\n    0x0040, 0x0402, 0x0040, 0x0442, 0x0040, 0x0482,\n};\n\nstatic const s16 anim_84_values[] = {\n    0x0000, 0x00AB, 0x00AA, 0x00A7, 0x00A3, 0x009F, 0x0099, 0x0092,\n    0x008B, 0x0084, 0x007C, 0x0073, 0x0068, 0x005B, 0x004E, 0x0043,\n    0x0039, 0x0032, 0x002F, 0x002D, 0x002E, 0x002F, 0x0031, 0x0033,\n    0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,\n    0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,\n    0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,\n    0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,\n    0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035, 0x0035,\n    0x0035, 0xFFFF, 0xFFFE, 0xFFFB, 0xFFF6, 0xFFF0, 0xFFEA, 0xFFE2,\n    0xFFD9, 0xFFD0, 0xFFC7, 0xFFBB, 0xFFAC, 0xFF9B, 0xFF8A, 0xFF7A,\n    0xFF6D, 0xFF63, 0xFF5D, 0xFF5A, 0xFF58, 0xFF57, 0xFF58, 0xFF58,\n    0xFF59, 0xFF5A, 0xFF5A, 0xFF5A, 0xFF5A, 0xFF5A, 0xFF5A, 0xFF5A,\n    0xFF5A, 0xFF5A, 0xFF5A, 0xFF5A, 0xFF5A, 0xFF5A, 0xFF5A, 0xFF5A,\n    0xFF5A, 0xFF5A, 0xFF5A, 0xFF5A, 0xFF5A, 0xFF5A, 0xFF5A, 0xFF5A,\n    0xFF5A, 0xFF5A, 0xFF5A, 0xFF5A, 0xFF5A, 0xFF5A, 0xFF5A, 0xFF5A,\n    0xFF5A, 0xFF5A, 0xFF5A, 0xFF5A, 0xFF5A, 0xFF5A, 0xFF5A, 0xFF5A,\n    0xFF5A, 0x3FFF, 0xFE50, 0xFE40, 0xFE17, 0xFDE1, 0xFDAC, 0xFD83,\n    0xFD73, 0xFD87, 0xFDCD, 0xFE50, 0xFF66, 0x0122, 0x0333, 0x0543,\n    0x0700, 0x0816, 0x0899, 0x08DF, 0x08F3, 0x08E3, 0x08BA, 0x0885,\n    0x084F, 0x0826, 0x0816, 0x0816, 0x0816, 0x0816, 0x0816, 0x0816,\n    0x0816, 0x0816, 0x0816, 0x0816, 0x0816, 0x0816, 0x0816, 0x0816,\n    0x0816, 0x0816, 0x0816, 0x0816, 0x0816, 0x0816, 0x0816, 0x0816,\n    0x0816, 0x0816, 0x0816, 0x0816, 0x0816, 0x0816, 0x0816, 0x0816,\n    0x0816, 0x0816, 0x0816, 0x0816, 0x0816, 0x0816, 0x0816, 0x0816,\n    0x0816, 0x0816, 0xF9B4, 0xF9DB, 0xFA3C, 0xFABB, 0xFB39, 0xFB9A,\n    0xFBC1, 0xFB91, 0xFAEB, 0xF9B4, 0xF722, 0xF302, 0xEE1C, 0xE937,\n    0xE517, 0xE285, 0xE14D, 0xE0A8, 0xE078, 0xE09E, 0xE100, 0xE17E,\n    0xE1FC, 0xE25E, 0xE285, 0xE285, 0xE285, 0xE285, 0xE285, 0xE285,\n    0xE285, 0xE285, 0xE285, 0xE285, 0xE285, 0xE285, 0xE285, 0xE285,\n    0xE285, 0xE285, 0xE285, 0xE285, 0xE285, 0xE285, 0xE285, 0xE285,\n    0xE285, 0xE285, 0xE285, 0xE285, 0xE285, 0xE285, 0xE285, 0xE285,\n    0xE285, 0xE285, 0xE285, 0xE285, 0xE285, 0xE285, 0xE285, 0xE285,\n    0xE285, 0xE285, 0xF845, 0xF85D, 0xF898, 0xF8E4, 0xF931, 0xF96C,\n    0xF984, 0xF966, 0xF902, 0xF845, 0xF6B5, 0xF434, 0xF13A, 0xEE40,\n    0xEBBF, 0xEA2F, 0xE972, 0xE90D, 0xE8F0, 0xE907, 0xE943, 0xE98F,\n    0xE9DC, 0xEA17, 0xEA2F, 0xEA2F, 0xEA2F, 0xEA2F, 0xEA2F, 0xEA2F,\n    0xEA2F, 0xEA2F, 0xEA2F, 0xEA2F, 0xEA2F, 0xEA2F, 0xEA2F, 0xEA2F,\n    0xEA2F, 0xEA2F, 0xEA2F, 0xEA2F, 0xEA2F, 0xEA2F, 0xEA2F, 0xEA2F,\n    0xEA2F, 0xEA2F, 0xEA2F, 0xEA2F, 0xEA2F, 0xEA2F, 0xEA2F, 0xEA2F,\n    0xEA2F, 0xEA2F, 0xEA2F, 0xEA2F, 0xEA2F, 0xEA2F, 0xEA2F, 0xEA2F,\n    0xEA2F, 0xEA2F, 0xE4CB, 0xE3E1, 0xE352, 0xE310, 0xE30D, 0xE33B,\n    0xE38C, 0xE3F4, 0xE462, 0xE4CB, 0xE552, 0xE61A, 0xE714, 0xE82D,\n    0xE956, 0xEA7F, 0xEBC9, 0xED4F, 0xEEF8, 0xF0A8, 0xF245, 0xF3B4,\n    0xF4DB, 0xF5A0, 0xF5E7, 0xF5E7, 0xF5E7, 0xF5E7, 0xF5E7, 0xF5E7,\n    0xF5E7, 0xF5E7, 0xF5E7, 0xF5E7, 0xF5E7, 0xF5E7, 0xF5E7, 0xF5E7,\n    0xF5E7, 0xF5E7, 0xF5E7, 0xF5E7, 0xF5E7, 0xF5E7, 0xF5E7, 0xF5E7,\n    0xF5E7, 0xF5E7, 0xF5E7, 0xF5E7, 0xF5E7, 0xF5E7, 0xF5E7, 0xF5E7,\n    0xF5E7, 0xF5E7, 0xF5E7, 0xF5E7, 0xF5E7, 0xF5E7, 0xF5E7, 0xF5E7,\n    0xF5E7, 0xF5E7, 0x896F, 0x8A49, 0x8B9F, 0x8D40, 0x8EFB, 0x909E,\n    0x91F8, 0x92D8, 0x930B, 0x9262, 0x8FF5, 0x8B93, 0x861C, 0x8071,\n    0x7B72, 0x7800, 0x75CB, 0x73EC, 0x725E, 0x711B, 0x701E, 0x6F62,\n    0x6EE3, 0x6E9A, 0x6E83, 0x6E83, 0x6E83, 0x6E83, 0x6E83, 0x6E83,\n    0x6E83, 0x6E83, 0x6E83, 0x6E83, 0x6E83, 0x6E83, 0x6E83, 0x6E83,\n    0x6E83, 0x6E83, 0x6E83, 0x6E83, 0x6E83, 0x6E83, 0x6E83, 0x6E83,\n    0x6E83, 0x6E83, 0x6E83, 0x6E83, 0x6E83, 0x6E83, 0x6E83, 0x6E83,\n    0x6E83, 0x6E83, 0x6E83, 0x6E83, 0x6E83, 0x6E83, 0x6E83, 0x6E83,\n    0x6E83, 0x6E83, 0xA3B0, 0xA309, 0xA3C2, 0xA581, 0xA7EE, 0xAAAE,\n    0xAD69, 0xAFC6, 0xB16B, 0xB1FE, 0xB0F8, 0xAE7A, 0xAB26, 0xA7A1,\n    0xA490, 0xA296, 0xA187, 0xA0C0, 0xA036, 0x9FDF, 0x9FB0, 0x9F9E,\n    0x9F9F, 0x9FA7, 0x9FAC, 0x9FAC, 0x9FAC, 0x9FAC, 0x9FAC, 0x9FAC,\n    0x9FAC, 0x9FAC, 0x9FAC, 0x9FAC, 0x9FAC, 0x9FAC, 0x9FAC, 0x9FAC,\n    0x9FAC, 0x9FAC, 0x9FAC, 0x9FAC, 0x9FAC, 0x9FAC, 0x9FAC, 0x9FAC,\n    0x9FAC, 0x9FAC, 0x9FAC, 0x9FAC, 0x9FAC, 0x9FAC, 0x9FAC, 0x9FAC,\n    0x9FAC, 0x9FAC, 0x9FAC, 0x9FAC, 0x9FAC, 0x9FAC, 0x9FAC, 0x9FAC,\n    0x9FAC, 0x9FAC, 0x384A, 0x37DB, 0x36B9, 0x351E, 0x3344, 0x3163,\n    0x2FB7, 0x2E77, 0x2DDF, 0x2E27, 0x3005, 0x338F, 0x380F, 0x3CD2,\n    0x4120, 0x4446, 0x468F, 0x48BB, 0x4AC0, 0x4C92, 0x4E27, 0x4F75,\n    0x5070, 0x510E, 0x5146, 0x5146, 0x5146, 0x5146, 0x5146, 0x5146,\n    0x5146, 0x5146, 0x5146, 0x5146, 0x5146, 0x5146, 0x5146, 0x5146,\n    0x5146, 0x5146, 0x5146, 0x5146, 0x5146, 0x5146, 0x5146, 0x5146,\n    0x5146, 0x5146, 0x5146, 0x5146, 0x5146, 0x5146, 0x5146, 0x5146,\n    0x5146, 0x5146, 0x5146, 0x5146, 0x5146, 0x5146, 0x5146, 0x5146,\n    0x5146, 0x5146, 0x0BDE, 0x0A32, 0x0973, 0x096A, 0x09DD, 0x0A97,\n    0x0B5E, 0x0BFD, 0x0C3A, 0x0BDE, 0x0AC6, 0x0918, 0x070C, 0x04DA,\n    0x02B9, 0x00E0, 0xFF1F, 0xFD30, 0xFB2C, 0xF930, 0xF755, 0xF5B5,\n    0xF46C, 0xF393, 0xF345, 0xF345, 0xF345, 0xF345, 0xF345, 0xF345,\n    0xF345, 0xF345, 0xF345, 0xF345, 0xF345, 0xF345, 0xF345, 0xF345,\n    0xF345, 0xF345, 0xF345, 0xF345, 0xF345, 0xF345, 0xF345, 0xF345,\n    0xF345, 0xF345, 0xF345, 0xF345, 0xF345, 0xF345, 0xF345, 0xF345,\n    0xF345, 0xF345, 0xF345, 0xF345, 0xF345, 0xF345, 0xF345, 0xF345,\n    0xF345, 0xF345, 0x04C8, 0x0445, 0x0386, 0x02B4, 0x01F6, 0x0172,\n    0x0151, 0x01BA, 0x02D5, 0x04C8, 0x08E3, 0x0F81, 0x1757, 0x1F1D,\n    0x2588, 0x294E, 0x2AB3, 0x2B00, 0x2A74, 0x294F, 0x27D1, 0x2638,\n    0x24C6, 0x23B9, 0x2351, 0x2351, 0x2351, 0x2351, 0x2351, 0x2351,\n    0x2351, 0x2351, 0x2351, 0x2351, 0x2351, 0x2351, 0x2351, 0x2351,\n    0x2351, 0x2351, 0x2351, 0x2351, 0x2351, 0x2351, 0x2351, 0x2351,\n    0x2351, 0x2351, 0x2351, 0x2351, 0x2351, 0x2351, 0x2351, 0x2351,\n    0x2351, 0x2351, 0x2351, 0x2351, 0x2351, 0x2351, 0x2351, 0x2351,\n    0x2351, 0x2351, 0xFA2D, 0xFA60, 0xFA9F, 0xFADE, 0xFB14, 0xFB35,\n    0xFB3A, 0xFB16, 0xFABF, 0xFA2D, 0xF925, 0xF795, 0xF5AA, 0xF392,\n    0xF17A, 0xEF8F, 0xED9D, 0xEB66, 0xE90C, 0xE6B1, 0xE477, 0xE281,\n    0xE0F0, 0xDFE6, 0xDF86, 0xDF86, 0xDF86, 0xDF86, 0xDF86, 0xDF86,\n    0xDF86, 0xDF86, 0xDF86, 0xDF86, 0xDF86, 0xDF86, 0xDF86, 0xDF86,\n    0xDF86, 0xDF86, 0xDF86, 0xDF86, 0xDF86, 0xDF86, 0xDF86, 0xDF86,\n    0xDF86, 0xDF86, 0xDF86, 0xDF86, 0xDF86, 0xDF86, 0xDF86, 0xDF86,\n    0xDF86, 0xDF86, 0xDF86, 0xDF86, 0xDF86, 0xDF86, 0xDF86, 0xDF86,\n    0xDF86, 0xDF86, 0xF09C, 0xF145, 0xF19F, 0xF1BA, 0xF1A5, 0xF170,\n    0xF12B, 0xF0E6, 0xF0B1, 0xF09C, 0xF085, 0xF052, 0xF01F, 0xF008,\n    0xF029, 0xF09C, 0xF175, 0xF2A1, 0xF402, 0xF57D, 0xF6F3, 0xF849,\n    0xF961, 0xFA1E, 0xFA63, 0xFA63, 0xFA63, 0xFA63, 0xFA63, 0xFA63,\n    0xFA63, 0xFA63, 0xFA63, 0xFA63, 0xFA63, 0xFA63, 0xFA63, 0xFA63,\n    0xFA63, 0xFA63, 0xFA63, 0xFA63, 0xFA63, 0xFA63, 0xFA63, 0xFA63,\n    0xFA63, 0xFA63, 0xFA63, 0xFA63, 0xFA63, 0xFA63, 0xFA63, 0xFA63,\n    0xFA63, 0xFA63, 0xFA63, 0xFA63, 0xFA63, 0xFA63, 0xFA63, 0xFA63,\n    0xFA63, 0xFA63, 0x12E8, 0x1350, 0x13AD, 0x1401, 0x144E, 0x1494,\n    0x14D6, 0x1515, 0x1552, 0x1590, 0x15D4, 0x161C, 0x165E, 0x168F,\n    0x16A3, 0x1690, 0x1651, 0x15EE, 0x1574, 0x14EC, 0x1464, 0x13E6,\n    0x137D, 0x1336, 0x131C, 0x131C, 0x131C, 0x131C, 0x131C, 0x131C,\n    0x131C, 0x131C, 0x131C, 0x131C, 0x131C, 0x131C, 0x131C, 0x131C,\n    0x131C, 0x131C, 0x131C, 0x131C, 0x131C, 0x131C, 0x131C, 0x131C,\n    0x131C, 0x131C, 0x131C, 0x131C, 0x131C, 0x131C, 0x131C, 0x131C,\n    0x131C, 0x131C, 0x131C, 0x131C, 0x131C, 0x131C, 0x131C, 0x131C,\n    0x131C, 0x131C, 0x0693, 0x0694, 0x07E5, 0x0A22, 0x0CE5, 0x0FC7,\n    0x1262, 0x1452, 0x1531, 0x1497, 0x1145, 0x0B1F, 0x0373, 0xFB95,\n    0xF4D4, 0xF080, 0xEE3E, 0xECBC, 0xEBD9, 0xEB72, 0xEB69, 0xEB9B,\n    0xEBE7, 0xEC2D, 0xEC4C, 0xEC4C, 0xEC4C, 0xEC4C, 0xEC4C, 0xEC4C,\n    0xEC4C, 0xEC4C, 0xEC4C, 0xEC4C, 0xEC4C, 0xEC4C, 0xEC4C, 0xEC4C,\n    0xEC4C, 0xEC4C, 0xEC4C, 0xEC4C, 0xEC4C, 0xEC4C, 0xEC4C, 0xEC4C,\n    0xEC4C, 0xEC4C, 0xEC4C, 0xEC4C, 0xEC4C, 0xEC4C, 0xEC4C, 0xEC4C,\n    0xEC4C, 0xEC4C, 0xEC4C, 0xEC4C, 0xEC4C, 0xEC4C, 0xEC4C, 0xEC4C,\n    0xEC4C, 0xEC4C, 0xCABB, 0xCBF3, 0xCD03, 0xCDF1, 0xCEC7, 0xCF8D,\n    0xD04C, 0xD10C, 0xD1D7, 0xD2B4, 0xD3A3, 0xD499, 0xD593, 0xD68F,\n    0xD787, 0xD879, 0xD97D, 0xDAA1, 0xDBD7, 0xDD0B, 0xDE2D, 0xDF2D,\n    0xDFF8, 0xE07F, 0xE0B0, 0xE0B0, 0xE0B0, 0xE0B0, 0xE0B0, 0xE0B0,\n    0xE0B0, 0xE0B0, 0xE0B0, 0xE0B0, 0xE0B0, 0xE0B0, 0xE0B0, 0xE0B0,\n    0xE0B0, 0xE0B0, 0xE0B0, 0xE0B0, 0xE0B0, 0xE0B0, 0xE0B0, 0xE0B0,\n    0xE0B0, 0xE0B0, 0xE0B0, 0xE0B0, 0xE0B0, 0xE0B0, 0xE0B0, 0xE0B0,\n    0xE0B0, 0xE0B0, 0xE0B0, 0xE0B0, 0xE0B0, 0xE0B0, 0xE0B0, 0xE0B0,\n    0xE0B0, 0xE0B0, 0x0000, 0x0002, 0x0007, 0x000E, 0x0016, 0x0020,\n    0x0029, 0x0032, 0x0039, 0x003F, 0x0043, 0x0046, 0x0048, 0x0048,\n    0x0045, 0x003F, 0x0033, 0x0023, 0x000F, 0xFFFC, 0xFFE8, 0xFFD5,\n    0xFFC6, 0xFFBC, 0xFFB8, 0xFFB8, 0xFFB8, 0xFFB8, 0xFFB8, 0xFFB8,\n    0xFFB8, 0xFFB8, 0xFFB8, 0xFFB8, 0xFFB8, 0xFFB8, 0xFFB8, 0xFFB8,\n    0xFFB8, 0xFFB8, 0xFFB8, 0xFFB8, 0xFFB8, 0xFFB8, 0xFFB8, 0xFFB8,\n    0xFFB8, 0xFFB8, 0xFFB8, 0xFFB8, 0xFFB8, 0xFFB8, 0xFFB8, 0xFFB8,\n    0xFFB8, 0xFFB8, 0xFFB8, 0xFFB8, 0xFFB8, 0xFFB8, 0xFFB8, 0xFFB8,\n    0xFFB8, 0xFFB8, 0xFF30, 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF35,\n    0xFF36, 0xFF38, 0xFF39, 0xFF3A, 0xFF3A, 0xFF3A, 0xFF3A, 0xFF3A,\n    0xFF3A, 0xFF3A, 0xFF3A, 0xFF3A, 0xFF3B, 0xFF3B, 0xFF3C, 0xFF3C,\n    0xFF3D, 0xFF3D, 0xFF3D, 0xFF3D, 0xFF3D, 0xFF3D, 0xFF3D, 0xFF3D,\n    0xFF3D, 0xFF3D, 0xFF3D, 0xFF3D, 0xFF3D, 0xFF3D, 0xFF3D, 0xFF3D,\n    0xFF3D, 0xFF3D, 0xFF3D, 0xFF3D, 0xFF3D, 0xFF3D, 0xFF3D, 0xFF3D,\n    0xFF3D, 0xFF3D, 0xFF3D, 0xFF3D, 0xFF3D, 0xFF3D, 0xFF3D, 0xFF3D,\n    0xFF3D, 0xFF3D, 0xFF3D, 0xFF3D, 0xFF3D, 0xFF3D, 0xFF3D, 0xFF3D,\n    0xFF3D, 0xFF3D, 0xC9D8, 0xC96E, 0xC871, 0xC705, 0xC54E, 0xC36F,\n    0xC18D, 0xBFCB, 0xBE4D, 0xBD36, 0xBC62, 0xBBAC, 0xBB3F, 0xBB41,\n    0xBBDB, 0xBD36, 0xBF8B, 0xC2C4, 0xC690, 0xCAA1, 0xCEA7, 0xD253,\n    0xD554, 0xD75C, 0xD81B, 0xD81B, 0xD81B, 0xD81B, 0xD81B, 0xD81B,\n    0xD81B, 0xD81B, 0xD81B, 0xD81B, 0xD81B, 0xD81B, 0xD81B, 0xD81B,\n    0xD81B, 0xD81B, 0xD81B, 0xD81B, 0xD81B, 0xD81B, 0xD81B, 0xD81B,\n    0xD81B, 0xD81B, 0xD81B, 0xD81B, 0xD81B, 0xD81B, 0xD81B, 0xD81B,\n    0xD81B, 0xD81B, 0xD81B, 0xD81B, 0xD81B, 0xD81B, 0xD81B, 0xD81B,\n    0xD81B, 0xD81B, 0x1E4A, 0x1FB6, 0x231D, 0x27F8, 0x2DBF, 0x33E9,\n    0x39EE, 0x3F46, 0x4369, 0x45CF, 0x45F1, 0x4401, 0x408D, 0x3C24,\n    0x3753, 0x32A9, 0x2D8E, 0x275D, 0x2088, 0x1983, 0x12C1, 0x0CB6,\n    0x07D7, 0x0495, 0x0366, 0x0366, 0x0366, 0x0366, 0x0366, 0x0366,\n    0x0366, 0x0366, 0x0366, 0x0366, 0x0366, 0x0366, 0x0366, 0x0366,\n    0x0366, 0x0366, 0x0366, 0x0366, 0x0366, 0x0366, 0x0366, 0x0366,\n    0x0366, 0x0366, 0x0366, 0x0366, 0x0366, 0x0366, 0x0366, 0x0366,\n    0x0366, 0x0366, 0x0366, 0x0366, 0x0366, 0x0366, 0x0366, 0x0366,\n    0x0366, 0x0366, 0x1B09, 0x1A7E, 0x1933, 0x1753, 0x150A, 0x1281,\n    0x0FE4, 0x0D5E, 0x0B18, 0x093E, 0x07A8, 0x0625, 0x04D2, 0x03CE,\n    0x0334, 0x0324, 0x03AB, 0x04AA, 0x05FD, 0x0781, 0x090F, 0x0A85,\n    0x0BBD, 0x0C93, 0x0CE2, 0x0CE2, 0x0CE2, 0x0CE2, 0x0CE2, 0x0CE2,\n    0x0CE2, 0x0CE2, 0x0CE2, 0x0CE2, 0x0CE2, 0x0CE2, 0x0CE2, 0x0CE2,\n    0x0CE2, 0x0CE2, 0x0CE2, 0x0CE2, 0x0CE2, 0x0CE2, 0x0CE2, 0x0CE2,\n    0x0CE2, 0x0CE2, 0x0CE2, 0x0CE2, 0x0CE2, 0x0CE2, 0x0CE2, 0x0CE2,\n    0x0CE2, 0x0CE2, 0x0CE2, 0x0CE2, 0x0CE2, 0x0CE2, 0x0CE2, 0x0CE2,\n    0x0CE2, 0x0CE2, 0x1144, 0x1142, 0x113D, 0x1136, 0x1131, 0x112E,\n    0x1130, 0x1139, 0x114B, 0x1168, 0x11AB, 0x121A, 0x1299, 0x130B,\n    0x1354, 0x1357, 0x1310, 0x1299, 0x1200, 0x1154, 0x10A5, 0x1003,\n    0x0F7C, 0x0F20, 0x0EFE, 0x0EFE, 0x0EFE, 0x0EFE, 0x0EFE, 0x0EFE,\n    0x0EFE, 0x0EFE, 0x0EFE, 0x0EFE, 0x0EFE, 0x0EFE, 0x0EFE, 0x0EFE,\n    0x0EFE, 0x0EFE, 0x0EFE, 0x0EFE, 0x0EFE, 0x0EFE, 0x0EFE, 0x0EFE,\n    0x0EFE, 0x0EFE, 0x0EFE, 0x0EFE, 0x0EFE, 0x0EFE, 0x0EFE, 0x0EFE,\n    0x0EFE, 0x0EFE, 0x0EFE, 0x0EFE, 0x0EFE, 0x0EFE, 0x0EFE, 0x0EFE,\n    0x0EFE, 0x0EFE, 0xAC44, 0xAB52, 0xA915, 0xA5D5, 0xA1D9, 0x9D68,\n    0x98CC, 0x944C, 0x902F, 0x8CBE, 0x898A, 0x8631, 0x8314, 0x8092,\n    0x7F0A, 0x7EDC, 0x8026, 0x828C, 0x85B8, 0x8953, 0x8D08, 0x9080,\n    0x9364, 0x9560, 0x961D, 0x961D, 0x961D, 0x961D, 0x961D, 0x961D,\n    0x961D, 0x961D, 0x961D, 0x961D, 0x961D, 0x961D, 0x961D, 0x961D,\n    0x961D, 0x961D, 0x961D, 0x961D, 0x961D, 0x961D, 0x961D, 0x961D,\n    0x961D, 0x961D, 0x961D, 0x961D, 0x961D, 0x961D, 0x961D, 0x961D,\n    0x961D, 0x961D, 0x961D, 0x961D, 0x961D, 0x961D, 0x961D, 0x961D,\n    0x961D, 0x961D, 0x0000, 0x0008, 0x000D, 0x000E, 0x000D, 0x000A,\n    0x0007, 0x0003, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xFFFC, 0xFFFA, 0xFFF9, 0xFFFA, 0xFFFB,\n    0xFFFD, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xBF40, 0xBF38, 0xBF34, 0xBF33, 0xBF34, 0xBF36,\n    0xBF39, 0xBF3D, 0xBF3F, 0xBF40, 0xBF1C, 0xBECB, 0xBE7B, 0xBE57,\n    0xBE8A, 0xBF40, 0xC098, 0xC273, 0xC4A2, 0xC6FA, 0xC94B, 0xCB67,\n    0xCD22, 0xCE4E, 0xCEBC, 0xCEBC, 0xCEBC, 0xCEBC, 0xCEBC, 0xCEBC,\n    0xCEBC, 0xCEBC, 0xCEBC, 0xCEBC, 0xCEBC, 0xCEBC, 0xCEBC, 0xCEBC,\n    0xCEBC, 0xCEBC, 0xCEBC, 0xCEBC, 0xCEBC, 0xCEBC, 0xCEBC, 0xCEBC,\n    0xCEBC, 0xCEBC, 0xCEBC, 0xCEBC, 0xCEBC, 0xCEBC, 0xCEBC, 0xCEBC,\n    0xCEBC, 0xCEBC, 0xCEBC, 0xCEBC, 0xCEBC, 0xCEBC, 0xCEBC, 0xCEBC,\n    0xCEBC, 0xCEBC, 0x2537, 0x266B, 0x2950, 0x2D6B, 0x3244, 0x3760,\n    0x3C47, 0x407F, 0x438F, 0x44FE, 0x440B, 0x40C9, 0x3BFE, 0x3671,\n    0x30E6, 0x2C24, 0x279F, 0x227D, 0x1D0D, 0x179B, 0x1277, 0x0DF0,\n    0x0A53, 0x07EE, 0x0710, 0x0710, 0x0710, 0x0710, 0x0710, 0x0710,\n    0x0710, 0x0710, 0x0710, 0x0710, 0x0710, 0x0710, 0x0710, 0x0710,\n    0x0710, 0x0710, 0x0710, 0x0710, 0x0710, 0x0710, 0x0710, 0x0710,\n    0x0710, 0x0710, 0x0710, 0x0710, 0x0710, 0x0710, 0x0710, 0x0710,\n    0x0710, 0x0710, 0x0710, 0x0710, 0x0710, 0x0710, 0x0710, 0x0710,\n    0x0710, 0x0710, 0xD64A, 0xD74E, 0xD9B7, 0xDD32, 0xE167, 0xE602,\n    0xEAAD, 0xEF13, 0xF2DD, 0xF5B7, 0xF789, 0xF893, 0xF903, 0xF906,\n    0xF8CA, 0xF87B, 0xF803, 0xF73E, 0xF644, 0xF52E, 0xF413, 0xF30D,\n    0xF234, 0xF1A0, 0xF169, 0xF169, 0xF169, 0xF169, 0xF169, 0xF169,\n    0xF169, 0xF169, 0xF169, 0xF169, 0xF169, 0xF169, 0xF169, 0xF169,\n    0xF169, 0xF169, 0xF169, 0xF169, 0xF169, 0xF169, 0xF169, 0xF169,\n    0xF169, 0xF169, 0xF169, 0xF169, 0xF169, 0xF169, 0xF169, 0xF169,\n    0xF169, 0xF169, 0xF169, 0xF169, 0xF169, 0xF169, 0xF169, 0xF169,\n    0xF169, 0xF169, 0xEC41, 0xEC5A, 0xEC97, 0xECEE, 0xED56, 0xEDC4,\n    0xEE30, 0xEE8F, 0xEEDA, 0xEF05, 0xEEF4, 0xEEA8, 0xEE41, 0xEDE0,\n    0xEDA5, 0xEDB1, 0xEE09, 0xEE92, 0xEF3C, 0xEFF8, 0xF0B5, 0xF163,\n    0xF1F3, 0xF255, 0xF279, 0xF279, 0xF279, 0xF279, 0xF279, 0xF279,\n    0xF279, 0xF279, 0xF279, 0xF279, 0xF279, 0xF279, 0xF279, 0xF279,\n    0xF279, 0xF279, 0xF279, 0xF279, 0xF279, 0xF279, 0xF279, 0xF279,\n    0xF279, 0xF279, 0xF279, 0xF279, 0xF279, 0xF279, 0xF279, 0xF279,\n    0xF279, 0xF279, 0xF279, 0xF279, 0xF279, 0xF279, 0xF279, 0xF279,\n    0xF279, 0xF279, 0xB59E, 0xB448, 0xB119, 0xAC80, 0xA6ED, 0xA0CE,\n    0x9A92, 0x94A9, 0x8F81, 0x8B8A, 0x88B4, 0x869F, 0x8540, 0x848B,\n    0x8477, 0x84F7, 0x8634, 0x8835, 0x8ABC, 0x8D8A, 0x9061, 0x9303,\n    0x9532, 0x96AE, 0x973B, 0x973B, 0x973B, 0x973B, 0x973B, 0x973B,\n    0x973B, 0x973B, 0x973B, 0x973B, 0x973B, 0x973B, 0x973B, 0x973B,\n    0x973B, 0x973B, 0x973B, 0x973B, 0x973B, 0x973B, 0x973B, 0x973B,\n    0x973B, 0x973B, 0x973B, 0x973B, 0x973B, 0x973B, 0x973B, 0x973B,\n    0x973B, 0x973B, 0x973B, 0x973B, 0x973B, 0x973B, 0x973B, 0x973B,\n    0x973B, 0x973B, 0x9524, 0x5D21, 0x475E, 0xBF5F, 0x90BE, 0x7987,\n    0x4B8C, 0xBF5F, 0x0015, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017,\n    0x0016, 0x0016, 0x0016, 0x0015, 0x0017, 0x001C, 0x0021, 0x0023,\n    0x0020, 0x0015, 0x0003, 0xFFEC, 0xFFD0, 0xFFB1, 0xFF93, 0xFF75,\n    0xFF5A, 0xFF44, 0xFF35, 0xFF2C, 0xFF2A, 0xFF2B, 0xFF30, 0xFF36,\n    0xFF3C, 0xFF41, 0xFF42, 0xFF3E, 0xFF35, 0xFF26, 0xFF16, 0xFF05,\n    0xFEF2, 0xFEDD, 0xFEC8, 0xFEB2, 0xFE9C, 0xFE85, 0xFE6D, 0xFE56,\n    0xFE3F, 0xFE28, 0xFE12, 0xFDFC, 0xFDE8, 0xFDD4, 0xFDC2, 0xFDB1,\n    0xFDA2, 0xFD95, 0xFD89, 0xFD80, 0xFD7A, 0xFD75, 0xFD72, 0xFD71,\n    0xFD71, 0xFD73, 0xFD4C, 0xFD4C, 0xFD4C, 0xFD4C, 0xFD4C, 0xFD4C,\n    0xFD4C, 0xFD4C, 0xFD4C, 0xFD4C, 0xFD4C, 0xFD4B, 0xFD4B, 0xFD4A,\n    0xFD4B, 0xFD4C, 0xFD4F, 0xFD52, 0xFD56, 0xFD5A, 0xFD5E, 0xFD62,\n    0xFD65, 0xFD68, 0xFD6A, 0xFD6B, 0xFD69, 0xFD65, 0xFD61, 0xFD5D,\n    0xFD5A, 0xFD5A, 0xFD5B, 0xFD61, 0xFD6A, 0xFD78, 0xFD86, 0xFD97,\n    0xFDA8, 0xFDBB, 0xFDCF, 0xFDE3, 0xFDF8, 0xFE0E, 0xFE23, 0xFE39,\n    0xFE4E, 0xFE63, 0xFE78, 0xFE8C, 0xFE9F, 0xFEB0, 0xFEC1, 0xFECF,\n    0xFEDD, 0xFEE8, 0xFEF1, 0xFEF8, 0xFEFC, 0xFEFE, 0xFEFF, 0xFEFD,\n    0xFEF9, 0xFEF4, 0xF588, 0xF577, 0xF56E, 0xF56C, 0xF56E, 0xF573,\n    0xF57A, 0xF580, 0xF586, 0xF588, 0xF568, 0xF522, 0xF4DC, 0xF4BC,\n    0xF4E9, 0xF588, 0xF6A1, 0xF811, 0xF9BE, 0xFB8D, 0xFD64, 0xFF29,\n    0x00C0, 0x0210, 0x0300, 0x0379, 0x038E, 0x0359, 0x02F7, 0x0283,\n    0x0219, 0x01D5, 0x01D2, 0x022C, 0x0300, 0x042D, 0x0581, 0x06F6,\n    0x088A, 0x0A37, 0x0BF9, 0x0DCD, 0x0FAD, 0x1197, 0x1385, 0x1574,\n    0x175F, 0x1942, 0x1B19, 0x1CE0, 0x1E93, 0x202D, 0x21AB, 0x2307,\n    0x243E, 0x254C, 0x262D, 0x26DC, 0x2757, 0x27A3, 0x27C2, 0x27BA,\n    0x278D, 0x2740, 0xFD9F, 0xFDCE, 0xFE05, 0xFE42, 0xFE83, 0xFEC4,\n    0xFF03, 0xFF3E, 0xFF71, 0xFF9B, 0xFFB7, 0xFFC5, 0xFFCA, 0xFFC8,\n    0xFFC2, 0xFFBE, 0xFFB9, 0xFFB0, 0xFFA4, 0xFF98, 0xFF8B, 0xFF7F,\n    0xFF75, 0xFF6F, 0xFF6C, 0xFF6C, 0xFF6C, 0xFF6C, 0xFF6C, 0xFF6C,\n    0xFF6C, 0xFF6C, 0xFF6C, 0xFF6C, 0xFF6C, 0xFF6C, 0xFF6C, 0xFF6C,\n    0xFF6C, 0xFF6C, 0xFF6C, 0xFF6C, 0xFF6C, 0xFF6C, 0xFF6C, 0xFF6C,\n    0xFF6C, 0xFF6C, 0xFF6C, 0xFF6C, 0xFF6C, 0xFF6C, 0xFF6C, 0xFF6C,\n    0xFF6C, 0xFF6C, 0xFF6C, 0xFF6C, 0xFF6C, 0xFF6C, 0xFF6C, 0xFF6C,\n    0xFF6C, 0xFF6C, 0x04A4, 0x0441, 0x03D0, 0x0356, 0x02D7, 0x0259,\n    0x01DF, 0x0170, 0x0110, 0x00C4, 0x0098, 0x008F, 0x009C, 0x00B3,\n    0x00C9, 0x00D2, 0x00CF, 0x00C9, 0x00C3, 0x00BC, 0x00B4, 0x00AE,\n    0x00A8, 0x00A4, 0x00A3, 0x00A3, 0x00A3, 0x00A3, 0x00A3, 0x00A3,\n    0x00A3, 0x00A3, 0x00A3, 0x00A3, 0x00A3, 0x00A3, 0x00A3, 0x00A3,\n    0x00A3, 0x00A3, 0x00A3, 0x00A3, 0x00A3, 0x00A3, 0x00A3, 0x00A3,\n    0x00A3, 0x00A3, 0x00A3, 0x00A3, 0x00A3, 0x00A3, 0x00A3, 0x00A3,\n    0x00A3, 0x00A3, 0x00A3, 0x00A3, 0x00A3, 0x00A3, 0x00A3, 0x00A3,\n    0x00A3, 0x00A3, 0x0FC6, 0x113B, 0x128D, 0x13C1, 0x14E0, 0x15F1,\n    0x16FA, 0x1803, 0x1913, 0x1A30, 0x1B99, 0x1D52, 0x1F0B, 0x2075,\n    0x2140, 0x211E, 0x1FF6, 0x1E0E, 0x1BA3, 0x18F1, 0x1635, 0x13AB,\n    0x1190, 0x1020, 0x0F98, 0x0F98, 0x0F98, 0x0F98, 0x0F98, 0x0F98,\n    0x0F98, 0x0F98, 0x0F98, 0x0F98, 0x0F98, 0x0F98, 0x0F98, 0x0F98,\n    0x0F98, 0x0F98, 0x0F98, 0x0F98, 0x0F98, 0x0F98, 0x0F98, 0x0F98,\n    0x0F98, 0x0F98, 0x0F98, 0x0F98, 0x0F98, 0x0F98, 0x0F98, 0x0F98,\n    0x0F98, 0x0F98, 0x0F98, 0x0F98, 0x0F98, 0x0F98, 0x0F98, 0x0F98,\n    0x0F98, 0x0F98, 0x40A1, 0x40C8, 0x4129, 0x41A8, 0x4227, 0x4288,\n    0x42AF, 0x427E, 0x41D9, 0x40A1, 0x3E0E, 0x39EC, 0x3504, 0x301D,\n    0x2BFB, 0x2968, 0x2830, 0x278B, 0x275A, 0x2781, 0x27E2, 0x2861,\n    0x28E0, 0x2941, 0x2968, 0x2968, 0x2968, 0x2968, 0x2968, 0x2968,\n    0x2968, 0x2968, 0x2968, 0x2968, 0x2968, 0x2968, 0x2968, 0x2968,\n    0x2968, 0x2968, 0x2968, 0x2968, 0x2968, 0x2968, 0x2968, 0x2968,\n    0x2968, 0x2968, 0x2968, 0x2968, 0x2968, 0x2968, 0x2968, 0x2968,\n    0x2968, 0x2968, 0x2968, 0x2968, 0x2968, 0x2968, 0x2968, 0x2968,\n    0x2968, 0x2968,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_85.inc.c",
    "content": "static const struct Animation anim_85[] = {\n    0,\n    189,\n    0,\n    0,\n    0x28,\n    ANIMINDEX_NUMPARTS(anim_85_indices),\n    anim_85_values,\n    anim_85_indices,\n    0,\n};\n\n\nstatic const u16 anim_85_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0000, 0x0001, 0x0003, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00A1,\n    0x0001, 0x009E, 0x0001, 0x009F, 0x0001, 0x00A0,\n    0x0028, 0x0026, 0x0028, 0x004E, 0x0028, 0x0076,\n    0x0001, 0x0022, 0x0001, 0x0023, 0x0001, 0x0024,\n    0x0001, 0x0008, 0x0001, 0x0009, 0x0001, 0x000A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0007,\n    0x0001, 0x0004, 0x0001, 0x0005, 0x0001, 0x0006,\n    0x0001, 0x001E, 0x0001, 0x001F, 0x0001, 0x0020,\n    0x0001, 0x000F, 0x0001, 0x0010, 0x0001, 0x0011,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x000E,\n    0x0001, 0x000B, 0x0001, 0x000C, 0x0001, 0x000D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0021,\n    0x0001, 0x001B, 0x0001, 0x001C, 0x0001, 0x001D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x001A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0019,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0025,\n    0x0001, 0x0016, 0x0001, 0x0017, 0x0001, 0x0018,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0015,\n    0x0001, 0x0012, 0x0001, 0x0013, 0x0001, 0x0014,\n};\n\nstatic const s16 anim_85_values[] = {\n    0x0000, 0x0035, 0xFF5A, 0x3FFF, 0x0816, 0xE285, 0xEA2F, 0xF5E7,\n    0x6E83, 0x9FAC, 0x5146, 0xF345, 0x2351, 0xDF86, 0xFA63, 0x131C,\n    0xEC4C, 0xE0B0, 0xFFB8, 0xFF3D, 0xD81B, 0x0366, 0x0CE2, 0x0EFE,\n    0x961D, 0xCEBC, 0x0710, 0xF169, 0xF279, 0x973B, 0x9524, 0x5D21,\n    0x475E, 0xBF5F, 0x90BE, 0x7987, 0x4B8C, 0xBF5F, 0xFD76, 0xFD7A,\n    0xFD7F, 0xFD85, 0xFD8B, 0xFD92, 0xFD99, 0xFDA0, 0xFDA7, 0xFDAE,\n    0xFDB4, 0xFDBA, 0xFDBF, 0xFDC3, 0xFDC7, 0xFDC9, 0xFDC9, 0xFDC9,\n    0xFDC8, 0xFDC6, 0xFDC3, 0xFDC1, 0xFDBD, 0xFDB9, 0xFDB5, 0xFDB1,\n    0xFDAC, 0xFDA7, 0xFDA2, 0xFD9E, 0xFD99, 0xFD95, 0xFD90, 0xFD8D,\n    0xFD89, 0xFD86, 0xFD84, 0xFD82, 0xFD81, 0xFD80, 0xFEEE, 0xFEE6,\n    0xFEDE, 0xFED4, 0xFECB, 0xFEC0, 0xFEB6, 0xFEAC, 0xFEA2, 0xFE99,\n    0xFE90, 0xFE88, 0xFE81, 0xFE7B, 0xFE76, 0xFE74, 0xFE73, 0xFE73,\n    0xFE75, 0xFE79, 0xFE7D, 0xFE83, 0xFE89, 0xFE90, 0xFE98, 0xFEA0,\n    0xFEA8, 0xFEB1, 0xFEBA, 0xFEC2, 0xFECB, 0xFED3, 0xFEDA, 0xFEE1,\n    0xFEE8, 0xFEED, 0xFEF2, 0xFEF5, 0xFEF7, 0xFEF8, 0x26D8, 0x2656,\n    0x25C1, 0x251C, 0x2469, 0x23AF, 0x22F0, 0x2231, 0x2174, 0x20C0,\n    0x2016, 0x1F7C, 0x1EF5, 0x1E85, 0x1E30, 0x1DFB, 0x1DE8, 0x1DF4,\n    0x1E19, 0x1E53, 0x1EA0, 0x1EFE, 0x1F6A, 0x1FE3, 0x2067, 0x20F2,\n    0x2183, 0x2217, 0x22AC, 0x2341, 0x23D1, 0x245D, 0x24E0, 0x2559,\n    0x25C6, 0x2624, 0x2671, 0x26AB, 0x26CF, 0x26DC, 0xFF6C, 0x00A3,\n    0x0F98, 0x2968,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_86.inc.c",
    "content": "static const struct Animation anim_86[] = {\n    1,\n    189,\n    0,\n    0,\n    0x28,\n    ANIMINDEX_NUMPARTS(anim_86_indices),\n    anim_86_values,\n    anim_86_indices,\n    0,\n};\n\n\nstatic const u16 anim_86_indices[] = {\n    0x0001, 0x0000, 0x0028, 0x0001, 0x0001, 0x0029, 0x0001, 0x0000, 0x0001, 0x002A, 0x0001, 0x0000,\n    0x0028, 0x0533, 0x0028, 0x055B, 0x0028, 0x0583,\n    0x0028, 0x04BB, 0x0028, 0x04E3, 0x0028, 0x050B,\n    0x0028, 0x0443, 0x0028, 0x046B, 0x0028, 0x0493,\n    0x0001, 0x043F, 0x0001, 0x0440, 0x0001, 0x0441,\n    0x0028, 0x00CB, 0x0028, 0x00F3, 0x0028, 0x011B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x00A3,\n    0x0028, 0x002B, 0x0028, 0x0053, 0x0028, 0x007B,\n    0x0001, 0x043B, 0x0001, 0x043C, 0x0001, 0x043D,\n    0x0028, 0x01E3, 0x0028, 0x020B, 0x0028, 0x0233,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x01BB,\n    0x0028, 0x0143, 0x0028, 0x016B, 0x0028, 0x0193,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x043E,\n    0x0028, 0x03C3, 0x0028, 0x03EB, 0x0028, 0x0413,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x039B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x0373,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0442,\n    0x0028, 0x02FB, 0x0028, 0x0323, 0x0028, 0x034B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x02D3,\n    0x0028, 0x025B, 0x0028, 0x0283, 0x0028, 0x02AB,\n};\n\nstatic const s16 anim_86_values[] = {\n    0x0000, 0x0035, 0x0035, 0x0035, 0x0034, 0x0034, 0x0034, 0x0034,\n    0x0035, 0x0037, 0x0039, 0x003C, 0x003F, 0x0043, 0x0047, 0x004B,\n    0x004E, 0x0052, 0x0056, 0x005A, 0x005D, 0x0060, 0x0062, 0x0064,\n    0x0066, 0x0067, 0x0068, 0x0068, 0x0069, 0x0069, 0x0069, 0x0069,\n    0x0069, 0x0068, 0x0068, 0x0068, 0x0067, 0x0067, 0x0067, 0x0066,\n    0x0066, 0xFF5A, 0x3FFF, 0x0816, 0x0804, 0x07F2, 0x07DC, 0x07C2,\n    0x07A2, 0x077B, 0x074A, 0x070E, 0x06C6, 0x066F, 0x0609, 0x0591,\n    0x0506, 0x0466, 0x0397, 0x0289, 0x0149, 0xFFE9, 0xFE75, 0xFCFD,\n    0xFB90, 0xFA3D, 0xF912, 0xF81F, 0xF772, 0xF700, 0xF6AF, 0xF67C,\n    0xF663, 0xF660, 0xF66E, 0xF68A, 0xF6AF, 0xF6DA, 0xF706, 0xF72F,\n    0xF752, 0xF769, 0xF772, 0xE285, 0xE365, 0xE4DB, 0xE6CE, 0xE923,\n    0xEBC4, 0xEE96, 0xF180, 0xF46A, 0xF73B, 0xF9DA, 0xFC2F, 0xFE1F,\n    0xFF92, 0x006F, 0x008E, 0xFFEE, 0xFEB2, 0xFCFF, 0xFAFA, 0xF8C7,\n    0xF68A, 0xF468, 0xF285, 0xF105, 0xF00D, 0xEF7C, 0xEF17, 0xEED6,\n    0xEEB7, 0xEEB2, 0xEEC4, 0xEEE8, 0xEF17, 0xEF4D, 0xEF84, 0xEFB8,\n    0xEFE4, 0xF002, 0xF00D, 0xEA2F, 0xEA6D, 0xEADB, 0xEB70, 0xEC23,\n    0xECEA, 0xEDBC, 0xEE90, 0xEF5B, 0xF016, 0xF0B6, 0xF133, 0xF182,\n    0xF19B, 0xF174, 0xF0EC, 0xEFF8, 0xEEAF, 0xED27, 0xEB77, 0xE9B5,\n    0xE7F7, 0xE654, 0xE4E2, 0xE3B9, 0xE2ED, 0xE26D, 0xE213, 0xE1DA,\n    0xE1BE, 0xE1BA, 0xE1CA, 0xE1E9, 0xE213, 0xE243, 0xE274, 0xE2A2,\n    0xE2C9, 0xE2E3, 0xE2ED, 0xF5E7, 0xF4D9, 0xF317, 0xF0C1, 0xEDF4,\n    0xEACD, 0xE76A, 0xE3E7, 0xE064, 0xDCFC, 0xD9CE, 0xD6F8, 0xD495,\n    0xD2C5, 0xD1A5, 0xD2EB, 0xD732, 0xDCE8, 0xE27D, 0xE65F, 0xE6FD,\n    0xE25B, 0xD967, 0xCEF1, 0xC5CC, 0xC0C8, 0xBF0C, 0xBDD3, 0xBD0E,\n    0xBCAD, 0xBCA0, 0xBCD7, 0xBD43, 0xBDD3, 0xBE79, 0xBF23, 0xBFC4,\n    0xC04A, 0xC0A5, 0xC0C8, 0x6E83, 0x6E09, 0x6D3E, 0x6C2E, 0x6AE9,\n    0x697B, 0x67F3, 0x665D, 0x64C8, 0x6342, 0x61D7, 0x6096, 0x5F8C,\n    0x5EC7, 0x5E55, 0x5E43, 0x5E8D, 0x5F25, 0x5FFB, 0x6100, 0x6227,\n    0x6360, 0x649D, 0x65CE, 0x66E6, 0x67D6, 0x68B9, 0x69B3, 0x6ABD,\n    0x6BD0, 0x6CE7, 0x6DFB, 0x6F06, 0x7001, 0x70E7, 0x71B1, 0x725A,\n    0x72D9, 0x732B, 0x7347, 0x9FAC, 0x9F5D, 0x9ED8, 0x9E26, 0x9D50,\n    0x9C61, 0x9B60, 0x9A58, 0x9952, 0x9857, 0x9771, 0x96A9, 0x9608,\n    0x9599, 0x9563, 0x958C, 0x9623, 0x970B, 0x982C, 0x996B, 0x9AAD,\n    0x9BD8, 0x9CD2, 0x9D80, 0x9DC9, 0x9D91, 0x9CD5, 0x9BAE, 0x9A30,\n    0x986E, 0x967B, 0x946B, 0x9251, 0x9040, 0x8E4C, 0x8C87, 0x8B06,\n    0x89DA, 0x8919, 0x88D4, 0x5143, 0x51B1, 0x525F, 0x5346, 0x545A,\n    0x5593, 0x56E7, 0x584D, 0x59BB, 0x5B29, 0x5C8C, 0x5DDC, 0x5F0E,\n    0x601A, 0x60F6, 0x61AB, 0x6247, 0x62CB, 0x6339, 0x6392, 0x63D6,\n    0x6407, 0x6425, 0x6433, 0x6430, 0x641D, 0x63F3, 0x63A8, 0x6344,\n    0x62CC, 0x6245, 0x61B4, 0x6120, 0x608E, 0x6003, 0x5F85, 0x5F19,\n    0x5EC6, 0x5E8F, 0x5E7C, 0xF345, 0xF56F, 0xFA08, 0xFFF4, 0x0614,\n    0x0B50, 0x0E8A, 0x0EA7, 0x0AC7, 0x039A, 0xFA60, 0xF058, 0xE6C1,\n    0xDEDA, 0xD9E2, 0xD84E, 0xD93D, 0xDBE7, 0xDF86, 0xE354, 0xE68B,\n    0xEA18, 0xEEB7, 0xF357, 0xF6E6, 0xF852, 0xF852, 0xF852, 0xF852,\n    0xF852, 0xF852, 0xF852, 0xF852, 0xF852, 0xF852, 0xF852, 0xF852,\n    0xF852, 0xF852, 0xF852, 0x2351, 0x232B, 0x22DB, 0x2273, 0x2203,\n    0x219C, 0x214F, 0x212D, 0x2120, 0x2113, 0x2115, 0x2136, 0x2185,\n    0x2212, 0x22EC, 0x24AE, 0x2771, 0x2A81, 0x2D2B, 0x2EBB, 0x2E7D,\n    0x2AC3, 0x23E0, 0x1C1E, 0x15C8, 0x1329, 0x1329, 0x1329, 0x1329,\n    0x1329, 0x1329, 0x1329, 0x1329, 0x1329, 0x1329, 0x1329, 0x1329,\n    0x1329, 0x1329, 0x1329, 0xDF86, 0xE021, 0xE167, 0xE30F, 0xE4D1,\n    0xE663, 0xE77C, 0xE7D5, 0xE7AB, 0xE756, 0xE6AF, 0xE58C, 0xE3C9,\n    0xE13C, 0xDDBF, 0xD82F, 0xD05B, 0xC787, 0xBEF8, 0xB7F4, 0xB3BE,\n    0xB3C0, 0xB738, 0xBC29, 0xC095, 0xC27F, 0xC27F, 0xC27F, 0xC27F,\n    0xC27F, 0xC27F, 0xC27F, 0xC27F, 0xC27F, 0xC27F, 0xC27F, 0xC27F,\n    0xC27F, 0xC27F, 0xC27F, 0xFA63, 0xF8FD, 0xF6C5, 0xF3DA, 0xF059,\n    0xEC61, 0xE80F, 0xE382, 0xDED7, 0xDA2D, 0xD5A1, 0xD151, 0xCD5B,\n    0xC9DE, 0xC6F6, 0xC52D, 0xC4AD, 0xC509, 0xC5D2, 0xC69B, 0xC6F6,\n    0xC6F6, 0xC6F6, 0xC6F6, 0xC6F6, 0xC6F6, 0xC6F6, 0xC6F6, 0xC6F6,\n    0xC6F6, 0xC6F6, 0xC6F6, 0xC6F6, 0xC6F6, 0xC6F6, 0xC6F6, 0xC6F6,\n    0xC6F6, 0xC6F6, 0xC6F6, 0x131C, 0x12B9, 0x11D7, 0x1096, 0x0F16,\n    0x0D76, 0x0BD7, 0x0A58, 0x091A, 0x083B, 0x07DD, 0x0820, 0x0922,\n    0x0B04, 0x0DE6, 0x146A, 0x1FD4, 0x2E31, 0x3D91, 0x4C03, 0x5795,\n    0x6146, 0x6AAA, 0x72B1, 0x784A, 0x7A64, 0x7A64, 0x7A64, 0x7A64,\n    0x7A64, 0x7A64, 0x7A64, 0x7A64, 0x7A64, 0x7A64, 0x7A64, 0x7A64,\n    0x7A64, 0x7A64, 0x7A64, 0xEC4C, 0xEC7C, 0xEC9A, 0xECB2, 0xECCF,\n    0xECFD, 0xED48, 0xEDBB, 0xEE63, 0xEF4A, 0xF07D, 0xF208, 0xF3F5,\n    0xF651, 0xF928, 0xFE39, 0x0655, 0x1024, 0x1A48, 0x2367, 0x2A26,\n    0x2E66, 0x3126, 0x32B6, 0x336A, 0x3394, 0x3394, 0x3394, 0x3394,\n    0x3394, 0x3394, 0x3394, 0x3394, 0x3394, 0x3394, 0x3394, 0x3394,\n    0x3394, 0x3394, 0x3394, 0xE0B0, 0xE146, 0xE239, 0xE379, 0xE4F9,\n    0xE6AB, 0xE882, 0xEA6F, 0xEC64, 0xEE53, 0xF030, 0xF1EA, 0xF376,\n    0xF4C5, 0xF5C8, 0xF5EA, 0xF4FA, 0xF388, 0xF221, 0xF152, 0xF1AA,\n    0xF41C, 0xF859, 0xFD0A, 0x00D5, 0x0265, 0x0265, 0x0265, 0x0265,\n    0x0265, 0x0265, 0x0265, 0x0265, 0x0265, 0x0265, 0x0265, 0x0265,\n    0x0265, 0x0265, 0x0265, 0xFFB8, 0xFFB8, 0xFFB8, 0xFFB9, 0xFFB9,\n    0xFFB9, 0xFFB9, 0xFFB9, 0xFFB8, 0xFFB7, 0xFFB6, 0xFFB5, 0xFFB5,\n    0xFFB6, 0xFFB8, 0xFFBB, 0xFFBF, 0xFFC4, 0xFFC8, 0xFFCE, 0xFFD3,\n    0xFFD9, 0xFFDF, 0xFFE4, 0xFFEA, 0xFFEF, 0xFFEF, 0xFFEF, 0xFFEF,\n    0xFFEF, 0xFFEF, 0xFFEF, 0xFFEF, 0xFFEF, 0xFFEF, 0xFFEF, 0xFFEF,\n    0xFFEF, 0xFFEF, 0xFFEF, 0xFF3D, 0xFF3D, 0xFF3D, 0xFF3D, 0xFF3D,\n    0xFF3C, 0xFF3C, 0xFF3D, 0xFF3D, 0xFF3D, 0xFF3D, 0xFF3D, 0xFF3E,\n    0xFF3D, 0xFF3D, 0xFF3C, 0xFF3B, 0xFF3A, 0xFF39, 0xFF38, 0xFF37,\n    0xFF36, 0xFF34, 0xFF33, 0xFF32, 0xFF31, 0xFF31, 0xFF31, 0xFF31,\n    0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31,\n    0xFF31, 0xFF31, 0xFF31, 0xD81B, 0xD816, 0xD80A, 0xD7FC, 0xD7ED,\n    0xD7E2, 0xD7DE, 0xD7F0, 0xD81E, 0xD857, 0xD88E, 0xD8B2, 0xD8B5,\n    0xD888, 0xD81B, 0xD777, 0xD6B0, 0xD5CB, 0xD4CF, 0xD3C0, 0xD2A5,\n    0xD182, 0xD05D, 0xCF3C, 0xCE24, 0xCD1B, 0xCD1B, 0xCD1B, 0xCD1B,\n    0xCD1B, 0xCD1B, 0xCD1B, 0xCD1B, 0xCD1B, 0xCD1B, 0xCD1B, 0xCD1B,\n    0xCD1B, 0xCD1B, 0xCD1B, 0x0366, 0x0609, 0x0B9D, 0x12D5, 0x1A64,\n    0x20FF, 0x2559, 0x277B, 0x2883, 0x28C9, 0x28A1, 0x2863, 0x2865,\n    0x28FE, 0x2A83, 0x2CCA, 0x2F65, 0x3248, 0x3565, 0x38AF, 0x3C18,\n    0x3F93, 0x4312, 0x4688, 0x49E8, 0x4D24, 0x4D24, 0x4D24, 0x4D24,\n    0x4D24, 0x4D24, 0x4D24, 0x4D24, 0x4D24, 0x4D24, 0x4D24, 0x4D24,\n    0x4D24, 0x4D24, 0x4D24, 0x0CE2, 0x0EC2, 0x12B9, 0x17D3, 0x1D1F,\n    0x21A9, 0x247E, 0x25F4, 0x2700, 0x27A0, 0x27D3, 0x2796, 0x26E7,\n    0x25C5, 0x242C, 0x221E, 0x1FA8, 0x1CDA, 0x19C3, 0x1676, 0x1303,\n    0x0F79, 0x0BEA, 0x0866, 0x04FD, 0x01C0, 0x01C0, 0x01C0, 0x01C0,\n    0x01C0, 0x01C0, 0x01C0, 0x01C0, 0x01C0, 0x01C0, 0x01C0, 0x01C0,\n    0x01C0, 0x01C0, 0x01C0, 0x0EFE, 0x1063, 0x135B, 0x1715, 0x1AC4,\n    0x1D9A, 0x1EC8, 0x1E57, 0x1D05, 0x1B0F, 0x18B3, 0x1630, 0x13C2,\n    0x11A8, 0x1020, 0x0F0B, 0x0E1C, 0x0D4F, 0x0C9B, 0x0BFD, 0x0B6C,\n    0x0AE4, 0x0A5E, 0x09D4, 0x093F, 0x089B, 0x089B, 0x089B, 0x089B,\n    0x089B, 0x089B, 0x089B, 0x089B, 0x089B, 0x089B, 0x089B, 0x089B,\n    0x089B, 0x089B, 0x089B, 0x961D, 0x9486, 0x9125, 0x8CEA, 0x88C3,\n    0x85A0, 0x846E, 0x852F, 0x870D, 0x89B5, 0x8CD2, 0x9012, 0x9322,\n    0x95AD, 0x9760, 0x9865, 0x9924, 0x99A9, 0x99FD, 0x9A2C, 0x9A42,\n    0x9A49, 0x9A4C, 0x9A57, 0x9A74, 0x9AAE, 0x9AAE, 0x9AAE, 0x9AAE,\n    0x9AAE, 0x9AAE, 0x9AAE, 0x9AAE, 0x9AAE, 0x9AAE, 0x9AAE, 0x9AAE,\n    0x9AAE, 0x9AAE, 0x9AAE, 0xCEBC, 0xCEAB, 0xCE87, 0xCE5D, 0xCE3A,\n    0xCE2C, 0xCE27, 0xCE1D, 0xCE11, 0xCE09, 0xCE09, 0xCE17, 0xCE36,\n    0xCE6B, 0xCEBC, 0xCF31, 0xCFCB, 0xD081, 0xD149, 0xD21A, 0xD2EA,\n    0xD3B0, 0xD463, 0xD4F9, 0xD568, 0xD5A9, 0xD5BD, 0xD5B2, 0xD58C,\n    0xD550, 0xD503, 0xD4AA, 0xD449, 0xD3E6, 0xD385, 0xD32B, 0xD2DC,\n    0xD29E, 0xD275, 0xD266, 0x0710, 0x084D, 0x0AF5, 0x0E5C, 0x11D7,\n    0x14B8, 0x1710, 0x195E, 0x1BA3, 0x1DDB, 0x2006, 0x2223, 0x242F,\n    0x262A, 0x2811, 0x29F0, 0x2BD0, 0x2DAD, 0x2F82, 0x314A, 0x3302,\n    0x34A4, 0x362C, 0x3796, 0x38DE, 0x39FE, 0x3B03, 0x3BFA, 0x3CE3,\n    0x3DBC, 0x3E86, 0x3F3E, 0x3FE4, 0x4077, 0x40F6, 0x4160, 0x41B5,\n    0x41F2, 0x4217, 0x4224, 0xF169, 0xF32C, 0xF6E9, 0xFB54, 0xFF22,\n    0x0108, 0x0174, 0x01A5, 0x0190, 0x0128, 0x0063, 0xFF34, 0xFD8F,\n    0xFB67, 0xF8B3, 0xF3BA, 0xEC0A, 0xE378, 0xDBDF, 0xD715, 0xD55F,\n    0xD55F, 0xD679, 0xD80F, 0xD984, 0xDA3C, 0xDA5A, 0xDA6E, 0xDA77,\n    0xDA78, 0xDA72, 0xDA67, 0xDA58, 0xDA46, 0xDA32, 0xDA1F, 0xDA0E,\n    0xDA00, 0xD9F7, 0xD9F3, 0xF279, 0xF47D, 0xF8BF, 0xFDB9, 0x01E3,\n    0x03B7, 0x0363, 0x023F, 0x007E, 0xFE56, 0xFBF9, 0xF99C, 0xF773,\n    0xF5B3, 0xF48F, 0xF438, 0xF4A2, 0xF5AA, 0xF72C, 0xF903, 0xFB88,\n    0xFED9, 0x0275, 0x05DF, 0x0897, 0x0A20, 0x0AC5, 0x0B2C, 0x0B5E,\n    0x0B62, 0x0B40, 0x0B00, 0x0AAA, 0x0A46, 0x09DB, 0x0972, 0x0913,\n    0x08C5, 0x0891, 0x087E, 0x973B, 0x9592, 0x9213, 0x8E0C, 0x8ACF,\n    0x89AC, 0x8A2C, 0x8AFB, 0x8C23, 0x8DAB, 0x8F9D, 0x9200, 0x94DD,\n    0x983C, 0x9C26, 0xA278, 0xABB0, 0xB5C5, 0xBEAF, 0xC467, 0xC6A5,\n    0xC6ED, 0xC5EF, 0xC455, 0xC2CE, 0xC206, 0xC1DA, 0xC1B0, 0xC18B,\n    0xC168, 0xC149, 0xC12E, 0xC115, 0xC100, 0xC0EF, 0xC0E0, 0xC0D5,\n    0xC0CD, 0xC0C8, 0xC0C7, 0x9527, 0x5D21, 0x475E, 0xBF5F, 0x90C1,\n    0x7987, 0x4B8C, 0xBF5F, 0xFD76, 0xFCB8, 0xFBD6, 0xFAD5, 0xF9BD,\n    0xF894, 0xF75F, 0xF627, 0xF4F1, 0xF3C3, 0xF2A5, 0xF19D, 0xF085,\n    0xEF4C, 0xEE12, 0xECFA, 0xEC25, 0xEBB5, 0xEBCB, 0xEC42, 0xECDC,\n    0xED95, 0xEE6A, 0xEF54, 0xF051, 0xF15C, 0xF271, 0xF38C, 0xF4A8,\n    0xF5C2, 0xF6D5, 0xF7DD, 0xF8D5, 0xF9BA, 0xFA87, 0xFB38, 0xFBCA,\n    0xFC37, 0xFC7B, 0xFC93, 0xFEEE, 0xFEC4, 0xFE96, 0xFE63, 0xFE2C,\n    0xFDF0, 0xFDB1, 0xFD6D, 0xFD26, 0xFCDB, 0xFC8C, 0xFC3A, 0xFBCF,\n    0xFB42, 0xFAA5, 0xFA0C, 0xF988, 0xF92D, 0xF90E, 0xF918, 0xF92E,\n    0xF94D, 0xF974, 0xF9A3, 0xF9D8, 0xFA12, 0xFA50, 0xFA90, 0xFAD2,\n    0xFB14, 0xFB56, 0xFB95, 0xFBD2, 0xFC0A, 0xFC3C, 0xFC68, 0xFC8D,\n    0xFCA8, 0xFCB9, 0xFCBF, 0x26D8, 0x2621, 0x2544, 0x2448, 0x2335,\n    0x2211, 0x20E5, 0x1FB8, 0x1E92, 0x1D7A, 0x1C79, 0x1B94, 0x1AC7,\n    0x1A0B, 0x1963, 0x18D6, 0x1868, 0x181F, 0x17FE, 0x17F9, 0x17FD,\n    0x180A, 0x181F, 0x183A, 0x185B, 0x1881, 0x18AB, 0x18D7, 0x1906,\n    0x1935, 0x1965, 0x1993, 0x19C0, 0x19EA, 0x1A10, 0x1A31, 0x1A4D,\n    0x1A61, 0x1A6F, 0x1A73, 0xFF6C, 0xFEB7, 0xFD73, 0xFBBC, 0xF9AE,\n    0xF764, 0xF4FA, 0xF28C, 0xF036, 0xEE14, 0xEC40, 0xEAD8, 0xE9F6,\n    0xE9B6, 0xEA35, 0xEBD6, 0xEEBD, 0xF2A8, 0xF750, 0xFC73, 0x01CB,\n    0x0715, 0x0C0D, 0x106E, 0x13F5, 0x165B, 0x17DD, 0x18EA, 0x1990,\n    0x19DE, 0x19E1, 0x19A8, 0x1940, 0x18B9, 0x1820, 0x1783, 0x16F0,\n    0x1676, 0x1622, 0x1603, 0x00A3, 0x0062, 0xFFF6, 0xFF65, 0xFEB6,\n    0xFDF2, 0xFD20, 0xFC48, 0xFB71, 0xFAA3, 0xF9E6, 0xF942, 0xF8BD,\n    0xF85F, 0xF831, 0xF843, 0xF898, 0xF923, 0xF9D6, 0xFAA4, 0xFB7E,\n    0xFC57, 0xFD22, 0xFDD0, 0xFE55, 0xFEA2, 0xFEC1, 0xFEC7, 0xFEB7,\n    0xFE96, 0xFE66, 0xFE2B, 0xFDEA, 0xFDA6, 0xFD62, 0xFD22, 0xFCEA,\n    0xFCBD, 0xFCA0, 0xFC95, 0x0F98, 0x0FBB, 0x0FF3, 0x103D, 0x1096,\n    0x10FB, 0x1168, 0x11DA, 0x124F, 0x12C2, 0x1332, 0x139B, 0x13FA,\n    0x144B, 0x148B, 0x14B8, 0x14D1, 0x14DC, 0x14DC, 0x14D5, 0x14CD,\n    0x14C6, 0x14C7, 0x14D2, 0x14EC, 0x1519, 0x155C, 0x15B3, 0x1618,\n    0x1688, 0x1700, 0x177C, 0x17F7, 0x186E, 0x18DE, 0x1941, 0x1996,\n    0x19D6, 0x1A00, 0x1A0F, 0x0000, 0x010D, 0x030C, 0x05CA, 0x0914,\n    0x0CB5, 0x107B, 0x1431, 0x17A5, 0x1AA3, 0x1CF8, 0x1E70, 0x1ED7,\n    0x1DFB, 0x1BA7, 0x1692, 0x0E20, 0x031F, 0xF661, 0xE8B3, 0xDAE6,\n    0xCDCA, 0xC22E, 0xB8E2, 0xB2B6, 0xB079, 0xB079, 0xB079, 0xB079,\n    0xB079, 0xB079, 0xB079, 0xB079, 0xB079, 0xB079, 0xB079, 0xB079,\n    0xB079, 0xB079, 0xB079, 0x0000, 0x00FB, 0x0280, 0x047E, 0x06E2,\n    0x0999, 0x0C93, 0x0FBC, 0x1302, 0x1654, 0x199F, 0x1CD2, 0x1FD9,\n    0x22A3, 0x251D, 0x2784, 0x2A10, 0x2CAC, 0x2F46, 0x31C9, 0x3420,\n    0x3637, 0x37FB, 0x3957, 0x3A36, 0x3A85, 0x3A85, 0x3A85, 0x3A85,\n    0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85,\n    0x3A85, 0x3A85, 0x3A85, 0x2968, 0x29EE, 0x2AF9, 0x2C6B, 0x2E27,\n    0x300E, 0x3202, 0x33E6, 0x359C, 0x3705, 0x3804, 0x387A, 0x384A,\n    0x3756, 0x3580, 0x31EE, 0x2C34, 0x24DA, 0x1C65, 0x135C, 0x0A46,\n    0x01A9, 0xFA0C, 0xF3F5, 0xEFEB, 0xEE75, 0xEE75, 0xEE75, 0xEE75,\n    0xEE75, 0xEE75, 0xEE75, 0xEE75, 0xEE75, 0xEE75, 0xEE75, 0xEE75,\n    0xEE75, 0xEE75, 0xEE75,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_87.inc.c",
    "content": "static const struct Animation anim_87[] = {\n    0,\n    189,\n    0,\n    0,\n    0x32,\n    ANIMINDEX_NUMPARTS(anim_87_indices),\n    anim_87_values,\n    anim_87_indices,\n    0,\n};\n\n\nstatic const u16 anim_87_indices[] = {\n    0x0001, 0x0000, 0x0032, 0x0001, 0x0001, 0x0033, 0x0001, 0x0000, 0x0001, 0x0034, 0x0001, 0x0000,\n    0x0001, 0x030B, 0x0001, 0x030C, 0x0001, 0x030D,\n    0x0032, 0x0275, 0x0032, 0x02A7, 0x0032, 0x02D9,\n    0x0032, 0x01DF, 0x0032, 0x0211, 0x0032, 0x0243,\n    0x0001, 0x01DB, 0x0001, 0x01DC, 0x0001, 0x01DD,\n    0x0032, 0x0039, 0x0032, 0x006B, 0x0032, 0x009D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0038,\n    0x0001, 0x0035, 0x0001, 0x0036, 0x0001, 0x0037,\n    0x0001, 0x01D7, 0x0001, 0x01D8, 0x0001, 0x01D9,\n    0x0001, 0x00D3, 0x0001, 0x00D4, 0x0001, 0x00D5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00D2,\n    0x0001, 0x00CF, 0x0001, 0x00D0, 0x0001, 0x00D1,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01DA,\n    0x0032, 0x0141, 0x0032, 0x0173, 0x0032, 0x01A5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x010F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x00DD,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01DE,\n    0x0001, 0x00DA, 0x0001, 0x00DB, 0x0001, 0x00DC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00D9,\n    0x0001, 0x00D6, 0x0001, 0x00D7, 0x0001, 0x00D8,\n};\n\nstatic const s16 anim_87_values[] = {\n    0x0000, 0x0066, 0x0066, 0x0066, 0x0067, 0x0067, 0x0067, 0x0067,\n    0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067,\n    0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067,\n    0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067,\n    0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0067, 0x0066,\n    0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066, 0x0066,\n    0x0066, 0x0066, 0x0066, 0xFF5A, 0x3FFF, 0xF772, 0xF00D, 0xE2ED,\n    0xC0C8, 0x7347, 0x7389, 0x73BB, 0x73E0, 0x73F7, 0x7402, 0x7403,\n    0x73FA, 0x73E9, 0x73D1, 0x73B3, 0x7390, 0x736B, 0x7343, 0x731A,\n    0x72F1, 0x72CA, 0x72A5, 0x7285, 0x7269, 0x7254, 0x7247, 0x7242,\n    0x7243, 0x7246, 0x724B, 0x7251, 0x7259, 0x7263, 0x726D, 0x7279,\n    0x7286, 0x7293, 0x72A1, 0x72AF, 0x72BD, 0x72CC, 0x72DA, 0x72E8,\n    0x72F6, 0x7303, 0x7310, 0x731B, 0x7326, 0x732F, 0x7338, 0x733E,\n    0x7343, 0x7346, 0x7347, 0x88D4, 0x8871, 0x882F, 0x880A, 0x8800,\n    0x880F, 0x8833, 0x886A, 0x88B1, 0x8905, 0x8964, 0x89CC, 0x8A38,\n    0x8AA7, 0x8B16, 0x8B82, 0x8BE8, 0x8C47, 0x8C9A, 0x8CDF, 0x8D14,\n    0x8D36, 0x8D41, 0x8D3D, 0x8D30, 0x8D1B, 0x8CFE, 0x8CDB, 0x8CB2,\n    0x8C84, 0x8C52, 0x8C1C, 0x8BE2, 0x8BA6, 0x8B69, 0x8B2A, 0x8AEB,\n    0x8AAD, 0x8A6F, 0x8A33, 0x89FA, 0x89C3, 0x8991, 0x8963, 0x893A,\n    0x8917, 0x88FB, 0x88E6, 0x88D8, 0x88D4, 0x5E7C, 0x5E67, 0x5E5B,\n    0x5E58, 0x5E5E, 0x5E6B, 0x5E7E, 0x5E97, 0x5EB4, 0x5ED6, 0x5EFA,\n    0x5F21, 0x5F48, 0x5F70, 0x5F98, 0x5FBE, 0x5FE2, 0x6002, 0x601F,\n    0x6037, 0x6049, 0x6054, 0x6058, 0x6056, 0x6051, 0x6048, 0x603C,\n    0x602D, 0x601C, 0x6009, 0x5FF4, 0x5FDD, 0x5FC5, 0x5FAC, 0x5F92,\n    0x5F77, 0x5F5D, 0x5F43, 0x5F29, 0x5F10, 0x5EF8, 0x5EE1, 0x5ECC,\n    0x5EB8, 0x5EA7, 0x5E98, 0x5E8C, 0x5E84, 0x5E7E, 0x5E7C, 0xF852,\n    0x1329, 0xC27F, 0xC6F6, 0x7A64, 0x3394, 0x0265, 0xFFEF, 0xFF31,\n    0xCD1B, 0x4D24, 0x01C0, 0x089B, 0x9AAE, 0xD266, 0xD25A, 0xD24E,\n    0xD243, 0xD23A, 0xD231, 0xD229, 0xD222, 0xD21C, 0xD217, 0xD213,\n    0xD20F, 0xD20C, 0xD209, 0xD208, 0xD207, 0xD206, 0xD206, 0xD207,\n    0xD208, 0xD20A, 0xD20C, 0xD20E, 0xD211, 0xD214, 0xD217, 0xD21B,\n    0xD21E, 0xD222, 0xD226, 0xD22B, 0xD22F, 0xD233, 0xD238, 0xD23C,\n    0xD241, 0xD245, 0xD249, 0xD24D, 0xD251, 0xD255, 0xD258, 0xD25B,\n    0xD25E, 0xD260, 0xD262, 0xD264, 0xD265, 0xD266, 0xD266, 0x4224,\n    0x4244, 0x4261, 0x427C, 0x4294, 0x42AA, 0x42BD, 0x42CE, 0x42DD,\n    0x42EB, 0x42F6, 0x42FF, 0x4307, 0x430C, 0x4311, 0x4313, 0x4314,\n    0x4314, 0x4313, 0x4310, 0x430C, 0x4307, 0x4301, 0x42FA, 0x42F3,\n    0x42EB, 0x42E2, 0x42D8, 0x42CE, 0x42C4, 0x42B9, 0x42AF, 0x42A4,\n    0x4298, 0x428E, 0x4283, 0x4278, 0x426D, 0x4263, 0x425A, 0x4251,\n    0x4248, 0x4240, 0x4239, 0x4233, 0x422E, 0x422A, 0x4227, 0x4225,\n    0x4224, 0xD9F3, 0xD9F2, 0xD9F1, 0xD9F0, 0xD9EF, 0xD9EE, 0xD9EE,\n    0xD9ED, 0xD9ED, 0xD9EC, 0xD9EC, 0xD9EC, 0xD9EB, 0xD9EB, 0xD9EB,\n    0xD9EB, 0xD9EB, 0xD9EB, 0xD9EB, 0xD9EB, 0xD9EB, 0xD9EB, 0xD9EB,\n    0xD9EC, 0xD9EC, 0xD9EC, 0xD9ED, 0xD9ED, 0xD9ED, 0xD9EE, 0xD9EE,\n    0xD9EE, 0xD9EF, 0xD9EF, 0xD9EF, 0xD9F0, 0xD9F0, 0xD9F1, 0xD9F1,\n    0xD9F1, 0xD9F2, 0xD9F2, 0xD9F2, 0xD9F2, 0xD9F3, 0xD9F3, 0xD9F3,\n    0xD9F3, 0xD9F3, 0xD9F3, 0x087E, 0x0877, 0x0872, 0x086C, 0x0867,\n    0x0863, 0x085F, 0x085C, 0x0859, 0x0856, 0x0854, 0x0852, 0x0850,\n    0x084F, 0x084E, 0x084E, 0x084E, 0x084E, 0x084E, 0x084E, 0x084F,\n    0x0850, 0x0851, 0x0853, 0x0854, 0x0856, 0x0858, 0x085A, 0x085C,\n    0x085E, 0x0860, 0x0862, 0x0864, 0x0866, 0x0869, 0x086B, 0x086D,\n    0x086F, 0x0871, 0x0873, 0x0875, 0x0876, 0x0878, 0x0879, 0x087B,\n    0x087C, 0x087D, 0x087D, 0x087E, 0x087E, 0xC0C7, 0xC0C2, 0xC0BD,\n    0xC0B9, 0xC0B5, 0xC0B2, 0xC0AF, 0xC0AC, 0xC0AA, 0xC0A8, 0xC0A6,\n    0xC0A5, 0xC0A4, 0xC0A3, 0xC0A2, 0xC0A2, 0xC0A2, 0xC0A2, 0xC0A2,\n    0xC0A2, 0xC0A3, 0xC0A4, 0xC0A5, 0xC0A6, 0xC0A7, 0xC0A8, 0xC0A9,\n    0xC0AB, 0xC0AC, 0xC0AE, 0xC0B0, 0xC0B1, 0xC0B3, 0xC0B5, 0xC0B6,\n    0xC0B8, 0xC0BA, 0xC0BB, 0xC0BD, 0xC0BE, 0xC0C0, 0xC0C1, 0xC0C2,\n    0xC0C3, 0xC0C4, 0xC0C5, 0xC0C6, 0xC0C6, 0xC0C6, 0xC0C7, 0x9527,\n    0x5D21, 0x475E, 0xBF5F, 0x90C1, 0x7987, 0x4B8C, 0xBF5F, 0xFC93,\n    0xFCF2, 0xFD46, 0xFD8E, 0xFDCB, 0xFDFF, 0xFE29, 0xFE4B, 0xFE65,\n    0xFE78, 0xFE84, 0xFE8B, 0xFE8C, 0xFE89, 0xFE83, 0xFE79, 0xFE6D,\n    0xFE60, 0xFE51, 0xFE42, 0xFE34, 0xFE26, 0xFE1B, 0xFE12, 0xFE0C,\n    0xFE09, 0xFE08, 0xFE05, 0xFE00, 0xFDF9, 0xFDF1, 0xFDE6, 0xFDDB,\n    0xFDCD, 0xFDBF, 0xFDAF, 0xFD9E, 0xFD8D, 0xFD7A, 0xFD67, 0xFD53,\n    0xFD3E, 0xFD29, 0xFD14, 0xFCFE, 0xFCE8, 0xFCD3, 0xFCBD, 0xFCA8,\n    0xFC93, 0xFCBF, 0xFCD5, 0xFCE8, 0xFCF8, 0xFD07, 0xFD13, 0xFD1D,\n    0xFD26, 0xFD2C, 0xFD32, 0xFD35, 0xFD38, 0xFD39, 0xFD3A, 0xFD39,\n    0xFD38, 0xFD37, 0xFD35, 0xFD32, 0xFD30, 0xFD2D, 0xFD2B, 0xFD29,\n    0xFD27, 0xFD26, 0xFD26, 0xFD25, 0xFD23, 0xFD21, 0xFD1D, 0xFD19,\n    0xFD14, 0xFD0E, 0xFD08, 0xFD01, 0xFCFB, 0xFCF4, 0xFCED, 0xFCE6,\n    0xFCE0, 0xFCD9, 0xFCD3, 0xFCCE, 0xFCC9, 0xFCC5, 0xFCC2, 0xFCBF,\n    0xFCBE, 0xFCBE, 0xFCBF, 0x1A73, 0x1AA2, 0x1AD7, 0x1B12, 0x1B50,\n    0x1B92, 0x1BD8, 0x1C20, 0x1C69, 0x1CB4, 0x1D00, 0x1D4B, 0x1D95,\n    0x1DDE, 0x1E25, 0x1E6A, 0x1EAA, 0x1EE7, 0x1F1F, 0x1F52, 0x1F7E,\n    0x1FA5, 0x1FC3, 0x1FDA, 0x1FE8, 0x1FED, 0x1FE6, 0x1FD0, 0x1FAF,\n    0x1F81, 0x1F4A, 0x1F0A, 0x1EC3, 0x1E76, 0x1E24, 0x1DCE, 0x1D75,\n    0x1D1C, 0x1CC3, 0x1C6C, 0x1C18, 0x1BC7, 0x1B7C, 0x1B38, 0x1AFC,\n    0x1AC9, 0x1AA0, 0x1A84, 0x1A74, 0x1A73, 0x1603, 0x15DB, 0x15AC,\n    0x1577, 0x153E, 0x1500, 0x14BE, 0x1479, 0x1432, 0x13EA, 0x13A0,\n    0x1357, 0x130D, 0x12C5, 0x127F, 0x123B, 0x11FA, 0x11BE, 0x1186,\n    0x1153, 0x1126, 0x1100, 0x10E1, 0x10CA, 0x10BB, 0x10B6, 0x10BD,\n    0x10CE, 0x10EB, 0x1111, 0x1140, 0x1177, 0x11B5, 0x11F8, 0x1240,\n    0x128B, 0x12DA, 0x132A, 0x137A, 0x13CB, 0x141A, 0x1467, 0x14B0,\n    0x14F6, 0x1536, 0x156F, 0x15A2, 0x15CC, 0x15ED, 0x1603, 0xFC95,\n    0xFC77, 0xFC58, 0xFC37, 0xFC16, 0xFBF5, 0xFBD3, 0xFBB1, 0xFB90,\n    0xFB6E, 0xFB4D, 0xFB2D, 0xFB0D, 0xFAEF, 0xFAD2, 0xFAB6, 0xFA9D,\n    0xFA85, 0xFA6F, 0xFA5B, 0xFA4A, 0xFA3B, 0xFA30, 0xFA27, 0xFA22,\n    0xFA20, 0xFA23, 0xFA2B, 0xFA39, 0xFA4B, 0xFA61, 0xFA7A, 0xFA97,\n    0xFAB7, 0xFAD8, 0xFAFC, 0xFB20, 0xFB45, 0xFB6B, 0xFB91, 0xFBB5,\n    0xFBD9, 0xFBFB, 0xFC1B, 0xFC39, 0xFC53, 0xFC6A, 0xFC7D, 0xFC8B,\n    0xFC95, 0x1A0F, 0x1A21, 0x1A2D, 0x1A32, 0x1A32, 0x1A2C, 0x1A21,\n    0x1A12, 0x19FF, 0x19E9, 0x19D0, 0x19B5, 0x1998, 0x197A, 0x195C,\n    0x193D, 0x191F, 0x1902, 0x18E6, 0x18CD, 0x18B5, 0x18A1, 0x1891,\n    0x1884, 0x187C, 0x187A, 0x187B, 0x187E, 0x1884, 0x188C, 0x1896,\n    0x18A2, 0x18AF, 0x18BE, 0x18CE, 0x18E0, 0x18F3, 0x1906, 0x191B,\n    0x1930, 0x1946, 0x195C, 0x1973, 0x198A, 0x19A1, 0x19B8, 0x19CE,\n    0x19E4, 0x19FA, 0x1A0F, 0xB079, 0x3A85, 0xEE75,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_88_89.inc.c",
    "content": "static const struct Animation anim_88[] = {\n    1,\n    189,\n    0,\n    0,\n    0x14,\n    ANIMINDEX_NUMPARTS(anim_88_89_indices),\n    anim_88_89_values,\n    anim_88_89_indices,\n    0,\n};\n\nstatic const struct Animation anim_89[] = {\n    1,\n    189,\n    20,\n    0,\n    0x14,\n    ANIMINDEX_NUMPARTS(anim_88_89_indices),\n    anim_88_89_values,\n    anim_88_89_indices,\n    0,\n};\n\n\nstatic const u16 anim_88_89_indices[] = {\n    0x0001, 0x0000, 0x0014, 0x0001, 0x0014, 0x0015, 0x0001, 0x0000, 0x0001, 0x0029, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x0262,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x024E,\n    0x0014, 0x0212, 0x0014, 0x0226, 0x0014, 0x023A,\n    0x0001, 0x020E, 0x0001, 0x020F, 0x0001, 0x0210,\n    0x0014, 0x007A, 0x0014, 0x008E, 0x0014, 0x00A2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x0066,\n    0x0014, 0x002A, 0x0014, 0x003E, 0x0014, 0x0052,\n    0x0001, 0x020A, 0x0001, 0x020B, 0x0001, 0x020C,\n    0x0014, 0x0106, 0x0014, 0x011A, 0x0014, 0x012E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x00F2,\n    0x0014, 0x00B6, 0x0014, 0x00CA, 0x0014, 0x00DE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x020D,\n    0x0014, 0x01CE, 0x0014, 0x01E2, 0x0014, 0x01F6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x01BA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x01A6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0211,\n    0x0014, 0x016A, 0x0014, 0x017E, 0x0014, 0x0192,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x0156,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x0142,\n};\n\nstatic const s16 anim_88_89_values[] = {\n    0x0000, 0x0109, 0x0103, 0x00F4, 0x00E1, 0x00CE, 0x00B7, 0x009F,\n    0x008A, 0x0077, 0x006C, 0x006D, 0x0075, 0x0079, 0x0061, 0x0064,\n    0x0068, 0x005C, 0x0051, 0x0053, 0x0056, 0x0000, 0x0000, 0x0001,\n    0x0002, 0x0003, 0x0004, 0x0004, 0x0003, 0x0001, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x3FFF, 0xFA8C, 0xFAE6, 0xFBAE, 0xFC75, 0xFCD0, 0xFC51,\n    0xFA8C, 0xF6B2, 0xF0F2, 0xEA58, 0xE3F2, 0xDECE, 0xDBF8, 0xDACB,\n    0xD9E6, 0xD944, 0xD8DC, 0xD8A9, 0xD8A1, 0xD8C0, 0x0985, 0x09AE,\n    0x0A08, 0x0A62, 0x0A8A, 0x0A51, 0x0985, 0x07C8, 0x052F, 0x0234,\n    0xFF52, 0xFCFF, 0xFBB8, 0xFB30, 0xFAC8, 0xFA7F, 0xFA50, 0xFA39,\n    0xFA36, 0xFA44, 0xF483, 0xF482, 0xF47F, 0xF47C, 0xF47B, 0xF47D,\n    0xF483, 0xF490, 0xF4A4, 0xF4BB, 0xF4D1, 0xF4E2, 0xF4EC, 0xF4F0,\n    0xF4F3, 0xF4F5, 0xF4F7, 0xF4F7, 0xF4F7, 0xF4F7, 0xE876, 0xE85B,\n    0xE821, 0xE7E6, 0xE7CC, 0xE7F1, 0xE876, 0xE996, 0xEB46, 0xED35,\n    0xEF16, 0xF097, 0xF16C, 0xF1D0, 0xF231, 0xF28E, 0xF2E5, 0xF333,\n    0xF378, 0xF3AF, 0x8268, 0x832E, 0x853F, 0x8837, 0x8BB2, 0x8F4D,\n    0x92A6, 0x9617, 0x9A0A, 0x9E2B, 0xA2E7, 0xA7D2, 0xAB51, 0xAD7E,\n    0xAF79, 0xB137, 0xB2A9, 0xB3C1, 0xB474, 0xB4B2, 0xA7FF, 0xA6D2,\n    0xA3E0, 0xA00F, 0x9C40, 0x9958, 0x9839, 0x9CCA, 0xA4F4, 0xA8A1,\n    0xA257, 0x978F, 0x909E, 0x8F0F, 0x8EA5, 0x8F0C, 0x8FEF, 0x90F9,\n    0x91D8, 0x9234, 0xFB6C, 0xFA25, 0xF6C3, 0xF1F0, 0xEC58, 0xE6A5,\n    0xE184, 0xDC68, 0xD6E4, 0xD1CF, 0xCCCA, 0xC834, 0xC603, 0xC61B,\n    0xC6EC, 0xC83F, 0xC9DE, 0xCB95, 0xCD2E, 0xCE72, 0x1904, 0x189A,\n    0x17B1, 0x16C8, 0x165E, 0x16F2, 0x1904, 0x1D85, 0x2440, 0x2BF9,\n    0x3375, 0x3979, 0x3CCA, 0x3E2B, 0x3F36, 0x3FF4, 0x406E, 0x40AA,\n    0x40B2, 0x408F, 0x0E48, 0x0E3E, 0x0E27, 0x0E10, 0x0E05, 0x0E14,\n    0x0E48, 0x0EBA, 0x0F63, 0x1026, 0x10E2, 0x117A, 0x11CD, 0x11F0,\n    0x120A, 0x121D, 0x1229, 0x122F, 0x1230, 0x122C, 0xE984, 0xE912,\n    0xE816, 0xE71A, 0xE6A7, 0xE748, 0xE984, 0xEE62, 0xF5A7, 0xFDFF,\n    0x0614, 0x0C94, 0x1029, 0x11A6, 0x12C6, 0x1394, 0x1417, 0x1458,\n    0x1461, 0x143B, 0xE80D, 0xE8A0, 0xEA0B, 0xEBDF, 0xEDAA, 0xEEFC,\n    0xEF63, 0xEE94, 0xECDC, 0xEAAA, 0xE86E, 0xE699, 0xE59B, 0xE540,\n    0xE505, 0xE4E5, 0xE4DE, 0xE4EA, 0xE505, 0xE52D, 0xE9A2, 0xE7CA,\n    0xE2FA, 0xDC47, 0xD4C7, 0xCD8F, 0xC7B6, 0xC371, 0xC04E, 0xBE5F,\n    0xBDBB, 0xBDFD, 0xBE7C, 0xBE91, 0xBE0F, 0xBD52, 0xBC7D, 0xBBB8,\n    0xBB26, 0xBAEE, 0x2A96, 0x29BA, 0x2784, 0x2481, 0x213D, 0x1E46,\n    0x1C27, 0x1BE7, 0x1CD8, 0x1CFB, 0x1B85, 0x1967, 0x173E, 0x15A7,\n    0x149E, 0x13B9, 0x12FD, 0x1271, 0x1218, 0x11FA, 0x809C, 0x7E2B,\n    0x77C8, 0x6EDF, 0x64DB, 0x5B26, 0x532A, 0x4CED, 0x47EC, 0x44C6,\n    0x438D, 0x438B, 0x443D, 0x451D, 0x4617, 0x4759, 0x48C4, 0x4A36,\n    0x4B92, 0x4CB6, 0xDF08, 0xE260, 0xE5C3, 0xE380, 0xDF5C, 0xDBAF,\n    0xD70B, 0xD02B, 0xC8A7, 0xC353, 0xC1DD, 0xC298, 0xC353, 0xC32A,\n    0xC2D8, 0xC29A, 0xC2AE, 0xC353, 0xC465, 0xC596, 0x1927, 0x12C2,\n    0x0B42, 0x0C70, 0x1054, 0x13B5, 0x1826, 0x1EBC, 0x25F5, 0x2B14,\n    0x2C55, 0x2B7C, 0x2B14, 0x2BCB, 0x2CA3, 0x2DA8, 0x2EE3, 0x3060,\n    0x31FA, 0x3388, 0x03D0, 0x036C, 0x02BE, 0x01E6, 0x0181, 0x02A9,\n    0x0401, 0x048F, 0x04DF, 0x04F5, 0x0473, 0x03EB, 0x03EF, 0x0415,\n    0x0447, 0x0472, 0x0481, 0x0460, 0x0413, 0x03AC, 0x03AB, 0x0401,\n    0x047C, 0x04DC, 0x04D2, 0x0393, 0x024E, 0x01DE, 0x01B9, 0x01D9,\n    0x02BD, 0x0392, 0x037B, 0x0316, 0x029C, 0x0248, 0x0253, 0x02F9,\n    0x041F, 0x057F, 0xBE38, 0xBA48, 0xB3CF, 0xAC53, 0xA9F6, 0xB8B7,\n    0xC890, 0xCDE3, 0xCFB0, 0xCEDD, 0xC6F2, 0xBF58, 0xBF38, 0xC0B2,\n    0xC2E7, 0xC4F5, 0xC5FE, 0xC522, 0xC2AA, 0xBF8B, 0xE454, 0xE874,\n    0xED3F, 0xEC5A, 0xE9AC, 0xE757, 0xE44A, 0xDFC4, 0xDACE, 0xD74A,\n    0xD654, 0xD6CF, 0xD74A, 0xD74A, 0xD74A, 0xD74A, 0xD74A, 0xD74A,\n    0xD738, 0xD709, 0x1553, 0x109D, 0x0BA8, 0x0E43, 0x135C, 0x17DE,\n    0x1D97, 0x2611, 0x2F58, 0x35EB, 0x3750, 0x3601, 0x35EB, 0x3877,\n    0x3BF1, 0x3F9D, 0x42BD, 0x4496, 0x454F, 0x45A0, 0xF54A, 0xF5EE,\n    0xF760, 0xF9FC, 0xFBBF, 0xF9B9, 0xF70F, 0xF5F4, 0xF54A, 0xF4F3,\n    0xF54F, 0xF5FF, 0xF66B, 0xF6D1, 0xF735, 0xF799, 0xF800, 0xF86D,\n    0xF8E5, 0xF96B, 0xFC6A, 0xFAF6, 0xF8AE, 0xF6A1, 0xF5C3, 0xF864,\n    0xFB78, 0xFCCC, 0xFD90, 0xFDB5, 0xFC40, 0xFA82, 0xF9E4, 0xF97C,\n    0xF92B, 0xF8D4, 0xF858, 0xF797, 0xF69A, 0xF581, 0xBD45, 0xB7BF,\n    0xADDF, 0xA15E, 0x9A7B, 0xA7EC, 0xB80B, 0xBE38, 0xC157, 0xC1FF,\n    0xBCCC, 0xB62E, 0xB338, 0xB0AA, 0xAE69, 0xAC5A, 0xAA62, 0xA865,\n    0xA64E, 0xA420, 0x7FFF, 0x7FFF, 0x4171, 0xC5E4, 0x7FFF, 0x7FFF,\n    0x4171, 0xBF5F, 0x01EE, 0x01ED, 0x01EC, 0x01E9, 0x01E7, 0x01E3,\n    0x01E0, 0x01DB, 0x01D6, 0x01D0, 0x01CA, 0x01C3, 0x01B6, 0x019C,\n    0x018C, 0x0197, 0x01AB, 0x01B6, 0x01B5, 0x01B4, 0x010C, 0x010D,\n    0x0110, 0x0114, 0x0119, 0x011E, 0x0124, 0x012B, 0x0133, 0x013C,\n    0x0145, 0x014E, 0x015E, 0x017B, 0x018E, 0x0182, 0x016C, 0x0160,\n    0x0161, 0x0165, 0xE07C, 0xE067, 0xE02F, 0xDFDB, 0xDF70, 0xDEF5,\n    0xDE72, 0xDDDF, 0xDD33, 0xDC72, 0xDBA2, 0xDAC8, 0xD946, 0xD678,\n    0xD4AC, 0xD5D3, 0xD7FC, 0xD927, 0xD90E, 0xD8CB, 0x1995, 0x17DB,\n    0x135F, 0x0D31, 0x065F, 0xFFF7, 0xFB08, 0xF86A, 0xF776, 0xF6F5,\n    0xF677, 0xF66D, 0xF6F5, 0xF7D0, 0xF8AB, 0xF987, 0xFA65, 0xFB46,\n    0xFC2B, 0xFD15, 0x52E9, 0x5839, 0x61ED, 0x6C23, 0x7609, 0x7D26,\n    0x8294, 0x875D, 0x8B7D, 0x8DFC, 0x8E27, 0x8CB0, 0x8ABA, 0x885E,\n    0x8564, 0x8274, 0x8036, 0x7F52, 0x7F58, 0x7F62,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_8A.inc.c",
    "content": "static const struct Animation anim_8A[] = {\n    1,\n    189,\n    0,\n    0,\n    0x28,\n    ANIMINDEX_NUMPARTS(anim_8A_indices),\n    anim_8A_values,\n    anim_8A_indices,\n    0,\n};\n\n\nstatic const u16 anim_8A_indices[] = {\n    0x0001, 0x0000, 0x0028, 0x0001, 0x0028, 0x0029, 0x0001, 0x0000, 0x0001, 0x0051, 0x0001, 0x0000,\n    0x0028, 0x055A, 0x0028, 0x0582, 0x0028, 0x05AA,\n    0x0028, 0x04E2, 0x0028, 0x050A, 0x0028, 0x0532,\n    0x0028, 0x046A, 0x0028, 0x0492, 0x0028, 0x04BA,\n    0x0001, 0x0417, 0x0001, 0x0418, 0x0001, 0x0419,\n    0x0028, 0x007C, 0x0028, 0x00A4, 0x0028, 0x00CC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x0054,\n    0x0001, 0x0000, 0x0001, 0x0052, 0x0001, 0x0053,\n    0x0001, 0x03EC, 0x0001, 0x03ED, 0x0001, 0x03EE,\n    0x0028, 0x0144, 0x0028, 0x016C, 0x0028, 0x0194,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x011C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x00F4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x03EF,\n    0x0028, 0x0374, 0x0028, 0x039C, 0x0028, 0x03C4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x034C,\n    0x0028, 0x02D4, 0x0028, 0x02FC, 0x0028, 0x0324,\n    0x0028, 0x041A, 0x0001, 0x0000, 0x0028, 0x0442,\n    0x0028, 0x025C, 0x0028, 0x0284, 0x0028, 0x02AC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x0234,\n    0x0028, 0x01BC, 0x0028, 0x01E4, 0x0028, 0x020C,\n};\n\nstatic const s16 anim_8A_values[] = {\n    0x0000, 0x00A6, 0x00AA, 0x00AA, 0x009F, 0x0091, 0x0082, 0x0072,\n    0x0063, 0x0054, 0x0049, 0x0041, 0x003E, 0x0043, 0x0050, 0x005D,\n    0x0062, 0x0052, 0x0042, 0x0049, 0x0050, 0x004A, 0x0042, 0x0042,\n    0x0045, 0x0046, 0x0043, 0x0041, 0x0040, 0x0040, 0x0042, 0x0046,\n    0x0057, 0x006C, 0x0079, 0x0083, 0x008E, 0x0099, 0x00A0, 0x00A6,\n    0x00AA, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x3FFF, 0xF97C, 0xED8C, 0xD517, 0xD517, 0xD517, 0xD4EF,\n    0xD47D, 0xD3CD, 0xD2E7, 0xD1D8, 0xD0A8, 0xCF63, 0xCE12, 0xCCC1,\n    0xCA3C, 0xC6F4, 0xC569, 0xC78A, 0xCB68, 0xCDC0, 0xCAD4, 0xC7E3,\n    0xCB7F, 0xCF96, 0xD094, 0xD0F3, 0xD10C, 0xD13C, 0xD1DB, 0xD346,\n    0xD674, 0xDB32, 0xE01B, 0xE3C8, 0xE4D4, 0xE2E0, 0xDF05, 0xDA08,\n    0xD4B1, 0xCFC7, 0xCC12, 0xCA59, 0xD16E, 0xD16E, 0xD16E, 0xD14B,\n    0xD0EE, 0xD06B, 0xCFD4, 0xCF3F, 0xCEBE, 0xCE64, 0xCE45, 0xCE74,\n    0xCEDE, 0xCF60, 0xCFF7, 0xD0A1, 0xD15B, 0xD223, 0xD2F5, 0xD3CF,\n    0xD4AE, 0xD591, 0xD673, 0xD754, 0xD82F, 0xD902, 0xD9CC, 0xDA88,\n    0xDAD7, 0xDAB9, 0xDABB, 0xDB67, 0xDD4A, 0xE0DA, 0xE5BF, 0xEB4F,\n    0xF0E2, 0xF5CF, 0xF96D, 0xFB13, 0xDE5F, 0xDE5F, 0xDE5F, 0xDE54,\n    0xDE3A, 0xDE1F, 0xDE0D, 0xDE13, 0xDE3B, 0xDE93, 0xDF26, 0xE001,\n    0xE11E, 0xE269, 0xE3DB, 0xE56C, 0xE716, 0xE8D1, 0xEA96, 0xEC5F,\n    0xEE23, 0xEFDC, 0xF183, 0xF310, 0xF47C, 0xF5C1, 0xF6D6, 0xF7B5,\n    0xF7DC, 0xF6F2, 0xF52D, 0xF2BF, 0xEFE0, 0xEC18, 0xE735, 0xE1CF,\n    0xDC7C, 0xD7D4, 0xD46F, 0xD2E5, 0x098D, 0x098D, 0x098D, 0x09CC,\n    0x0A6E, 0x0B50, 0x0C4C, 0x0D3D, 0x0DFE, 0x0E6A, 0x0E5C, 0x0DB0,\n    0x0C81, 0x0B0B, 0x0958, 0x0772, 0x0564, 0x0338, 0x00F8, 0xFEAF,\n    0xFC65, 0xFA25, 0xF7FB, 0xF5EF, 0xF40C, 0xF25C, 0xF0E9, 0xEFBE,\n    0xF059, 0xF31E, 0xF673, 0xF8BD, 0xF860, 0xF4D7, 0xEF48, 0xE89A,\n    0xE1B5, 0xDB7F, 0xD6E0, 0xD4C0, 0xEB59, 0xEB59, 0xEB59, 0xEB3E,\n    0xEAF4, 0xEA88, 0xEA06, 0xE97A, 0xE8F0, 0xE874, 0xE813, 0xE7D7,\n    0xE7B1, 0xE786, 0xE75A, 0xE72D, 0xE702, 0xE6DB, 0xE6BA, 0xE6A0,\n    0xE690, 0xE68C, 0xE696, 0xE6AF, 0xE6DA, 0xE718, 0xE76C, 0xE7D7,\n    0xE8FC, 0xEB1B, 0xEDA2, 0xF002, 0xF1AA, 0xF2AC, 0xF380, 0xF428,\n    0xF4A7, 0xF4FF, 0xF535, 0xF549, 0xDDE7, 0xDDE7, 0xDDE7, 0xDDFE,\n    0xDE34, 0xDE78, 0xDEB7, 0xDEDD, 0xDED9, 0xDE96, 0xDE03, 0xDD0D,\n    0xD980, 0xD3C7, 0xCFBE, 0xD197, 0xD380, 0xCF59, 0xC991, 0xC6D3,\n    0xCD89, 0xD52B, 0xD6D1, 0xD79D, 0xD7DC, 0xD7D6, 0xD7D7, 0xD829,\n    0xD918, 0xDA66, 0xDB93, 0xDC1D, 0xDB83, 0xD97A, 0xD662, 0xD2B5,\n    0xCEF0, 0xCB8E, 0xC90B, 0xC7E4, 0x97D3, 0x97D3, 0x97D3, 0x9855,\n    0x99B1, 0x9BAA, 0x9E04, 0xA082, 0xA2E7, 0xA4F6, 0xA672, 0xA71F,\n    0xA781, 0xA838, 0xA927, 0xAA38, 0xAB4F, 0xAC54, 0xAD2C, 0xADBF,\n    0xADF2, 0xADAD, 0xACD5, 0xAB52, 0xA909, 0xA5E1, 0xA1C1, 0x9C8F,\n    0x8F5F, 0x777B, 0x5B27, 0x409B, 0x2E15, 0x22B8, 0x1967, 0x1205,\n    0x0C70, 0x088B, 0x0635, 0x0550, 0x2FF3, 0x2FF3, 0x2FF3, 0x2FCD,\n    0x2F6F, 0x2EFA, 0x2E8B, 0x2E41, 0x2E3D, 0x2E9C, 0x2F7D, 0x3101,\n    0x3342, 0x3635, 0x39B6, 0x3DA4, 0x41DF, 0x4645, 0x4AB3, 0x4F0A,\n    0x5327, 0x56E9, 0x5A2E, 0x5CD6, 0x5EBF, 0x5FC7, 0x5FCD, 0x5EAF,\n    0x55B9, 0x4297, 0x2BBF, 0x17A2, 0x0CB6, 0x0B44, 0x0E49, 0x1445,\n    0x1BB6, 0x231D, 0x28F7, 0x2BC5, 0x5725, 0x5725, 0x5725, 0x5766,\n    0x581D, 0x5935, 0x5A9A, 0x5C36, 0x5DF6, 0x5FC4, 0x618C, 0x633A,\n    0x654C, 0x6830, 0x6BB5, 0x6FAD, 0x73E8, 0x7838, 0x7C6D, 0x805C,\n    0x83CD, 0x8697, 0x8889, 0x8974, 0x8929, 0x8779, 0x8435, 0x7F2A,\n    0x6DBB, 0x4BE5, 0x2370, 0xFE24, 0xE5C5, 0xD99C, 0xD1D3, 0xCD83,\n    0xCBC6, 0xCBB3, 0xCC64, 0xCCF2, 0x009A, 0x008C, 0x007D, 0x0069,\n    0x003E, 0x0013, 0xFFEE, 0xFFC9, 0xFFB0, 0xFFAA, 0xFFB0, 0xFFB6,\n    0xFFBD, 0xFFCB, 0xFFDE, 0xFFF5, 0x000D, 0x0026, 0x003F, 0x0055,\n    0x0066, 0x0072, 0x0076, 0x0070, 0x0061, 0x0044, 0x001A, 0xFFE1,\n    0xFEFC, 0xFD50, 0xFB95, 0xFA86, 0xFD79, 0xFE55, 0xFEE3, 0xFF45,\n    0xFF9B, 0xFFDD, 0xFFFA, 0x0000, 0xFF6D, 0xFF61, 0xFF54, 0xFF4C,\n    0xFF3D, 0xFF32, 0xFF33, 0xFF39, 0xFF3D, 0xFF3E, 0xFF3E, 0xFF3E,\n    0xFF3C, 0xFF39, 0xFF34, 0xFF2E, 0xFF28, 0xFF21, 0xFF1B, 0xFF16,\n    0xFF11, 0xFF0E, 0xFF0D, 0xFF0F, 0xFF13, 0xFF1A, 0xFF24, 0xFF32,\n    0xFFA8, 0x0077, 0x00FA, 0x0086, 0xF96F, 0xF8F1, 0xF95F, 0xFA46,\n    0xFB36, 0xFC86, 0xFE2F, 0xFF29, 0xA904, 0xACAF, 0xB05A, 0xB46B,\n    0xBD4A, 0xC5F9, 0xCD85, 0xD4DF, 0xD9DE, 0xDB01, 0xD9C8, 0xD884,\n    0xD80E, 0xD7B5, 0xD772, 0xD73D, 0xD711, 0xD6E7, 0xD6B7, 0xD67D,\n    0xD630, 0xD5CB, 0xD546, 0xD49C, 0xD3C5, 0xD2BC, 0xD178, 0xCFF5,\n    0xCC73, 0xC638, 0xBEC2, 0xB790, 0xAF26, 0xAF74, 0xB0CF, 0xB326,\n    0xB66D, 0xBCC2, 0xC4E4, 0xC9B8, 0x4EB6, 0x51B4, 0x52C9, 0x4E65,\n    0x4912, 0x4318, 0x3CC0, 0x3655, 0x301E, 0x28B4, 0x20F8, 0x1CA8,\n    0x1ECC, 0x245A, 0x27F5, 0x26B3, 0x237D, 0x21B5, 0x24BE, 0x283F,\n    0x26CD, 0x25AF, 0x2763, 0x2947, 0x2B7F, 0x2E2E, 0x3178, 0x3583,\n    0x3B6C, 0x4336, 0x4B58, 0x524C, 0x52C2, 0x4B44, 0x4229, 0x386A,\n    0x2EFF, 0x26DD, 0x20FE, 0x1E59, 0x13BD, 0x13BD, 0x13BD, 0x0D04,\n    0x001E, 0xF7F2, 0xF9B6, 0x0032, 0x06A5, 0x0C60, 0x1210, 0x14F9,\n    0x158A, 0x1608, 0x1672, 0x16C6, 0x1703, 0x1727, 0x1731, 0x1720,\n    0x16F3, 0x16A7, 0x163B, 0x15AF, 0x1501, 0x142E, 0x1337, 0x1219,\n    0x0E74, 0x07D1, 0x0114, 0xFD1F, 0x0A09, 0x0DA6, 0x1113, 0x1431,\n    0x16DF, 0x18FD, 0x1A69, 0x1B05, 0x128B, 0x128B, 0x128B, 0x140E,\n    0x1729, 0x19B5, 0x1B0C, 0x1BD5, 0x1BDC, 0x1A95, 0x188D, 0x1733,\n    0x16AA, 0x1622, 0x159C, 0x1519, 0x149A, 0x1422, 0x13B0, 0x1346,\n    0x12E6, 0x1290, 0x1247, 0x120A, 0x11DC, 0x11BE, 0x11B1, 0x11B5,\n    0x1282, 0x1455, 0x167F, 0x1851, 0x18CB, 0x17C1, 0x1677, 0x1511,\n    0x13B4, 0x1285, 0x11AA, 0x1147, 0x97C0, 0x97C0, 0x97C0, 0x8BFD,\n    0x7543, 0x6676, 0x688F, 0x7290, 0x7C5C, 0x8492, 0x8C91, 0x906D,\n    0x90CB, 0x90F2, 0x90E4, 0x90A7, 0x903F, 0x8FB1, 0x8F00, 0x8E31,\n    0x8D49, 0x8C4C, 0x8B3E, 0x8A23, 0x8901, 0x87DB, 0x86B5, 0x8595,\n    0x82D5, 0x7E66, 0x7AB9, 0x7A36, 0x8EF0, 0x9507, 0x9AE2, 0xA044,\n    0xA4EF, 0xA8A5, 0xAB29, 0xAC3E, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0xFFF5, 0xFFD6, 0xFFA7, 0xFF6E, 0xFF2E, 0xFEED, 0xFEAF, 0xFE79,\n    0xFE4E, 0xFE35, 0xFE31, 0xFE48, 0xFE7C, 0xFED4, 0xFF54, 0x0000,\n    0x0278, 0x0717, 0x0BFF, 0x0F4F, 0x096F, 0x06C5, 0x048E, 0x02BC,\n    0x0143, 0x0059, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xFFFD, 0xFFF9, 0xFFF5, 0xFFEF, 0xFFEA, 0xFFE5, 0xFFE1,\n    0xFFDD, 0xFFDB, 0xFFDB, 0xFFDD, 0xFFE1, 0xFFE8, 0xFFF2, 0x0000,\n    0x003B, 0x00AA, 0x0113, 0x013F, 0xFFE5, 0xFFC6, 0xFFD5, 0xFFF5,\n    0x0008, 0x0008, 0x0003, 0x0000, 0xCBE2, 0xCC88, 0xCB7E, 0xC558,\n    0xBDC7, 0xBAFE, 0xC170, 0xCCA9, 0xD580, 0xD916, 0xDA4A, 0xDA8C,\n    0xDAD4, 0xDB20, 0xDB6F, 0xDBBC, 0xDC05, 0xDC46, 0xDC7D, 0xDCA6,\n    0xDCBE, 0xDCC2, 0xDCAF, 0xDC83, 0xDC39, 0xDBCE, 0xDB41, 0xDA8C,\n    0xD8A2, 0xD4EA, 0xD019, 0xCAE2, 0xC0A6, 0xBE9D, 0xBDBE, 0xBD85,\n    0xBD6D, 0xBDC4, 0xBEA3, 0xBF3C, 0x4AB2, 0x4FDF, 0x5396, 0x4FDE,\n    0x4ADD, 0x450A, 0x3EDE, 0x38D0, 0x3358, 0x2D66, 0x27EE, 0x2670,\n    0x2C7B, 0x367F, 0x3D4F, 0x3CE9, 0x394F, 0x374D, 0x3B6A, 0x3F45,\n    0x3B25, 0x36D3, 0x3691, 0x36C6, 0x3765, 0x3861, 0x39AB, 0x3B37,\n    0x3DA1, 0x4102, 0x448A, 0x4766, 0x467A, 0x419D, 0x3BCD, 0x35A0,\n    0x2FB0, 0x2A95, 0x26E8, 0x2540, 0x039B, 0x039B, 0x039B, 0x0588,\n    0x08CE, 0x09AD, 0x0679, 0x00DE, 0xFA19, 0xF077, 0xE5AB, 0xE00A,\n    0xDF42, 0xDEC3, 0xDE87, 0xDE89, 0xDEC0, 0xDF29, 0xDFBB, 0xE072,\n    0xE148, 0xE235, 0xE333, 0xE43E, 0xE54D, 0xE65C, 0xE764, 0xE860,\n    0xEA6F, 0xEDCE, 0xF11D, 0xF2FB, 0xEBD5, 0xE817, 0xE415, 0xE01B,\n    0xDC72, 0xD966, 0xD742, 0xD650, 0xE60D, 0xE60D, 0xE60D, 0xE69B,\n    0xE771, 0xE74F, 0xE4F9, 0xE1AB, 0xDFDA, 0xE167, 0xE471, 0xE5CB,\n    0xE523, 0xE44C, 0xE34D, 0xE22D, 0xE0F4, 0xDFA9, 0xDE54, 0xDCFD,\n    0xDBAA, 0xDA63, 0xD931, 0xD819, 0xD725, 0xD65B, 0xD5C3, 0xD564,\n    0xD6D6, 0xDA72, 0xDE63, 0xE0D5, 0xDAD1, 0xDCC7, 0xDF96, 0xE2D8,\n    0xE624, 0xE913, 0xEB3D, 0xEC3B, 0x7762, 0x7762, 0x7762, 0x73E1,\n    0x6D43, 0x6961, 0x6AF8, 0x6F4A, 0x73FA, 0x795C, 0x7F1B, 0x81E4,\n    0x81F8, 0x81E0, 0x81A0, 0x813B, 0x80B7, 0x8016, 0x7F5B, 0x7E8E,\n    0x7DB1, 0x7CC8, 0x7BD7, 0x7AE2, 0x79ED, 0x78FC, 0x7813, 0x7736,\n    0x7500, 0x71A5, 0x6F91, 0x712D, 0x8C85, 0x94E6, 0x9D0B, 0xA497,\n    0xAB2E, 0xB073, 0xB40A, 0xB596, 0x8001, 0x8001, 0x4171, 0xBF5F,\n    0xBF4D, 0xBF33, 0xBF23, 0xBF11, 0xBF00, 0xBEF3, 0xBEEB, 0xBEEB,\n    0xBEDC, 0xBEE3, 0xBF5F, 0xC046, 0xC14A, 0xC265, 0xC392, 0xC4CA,\n    0xC609, 0xC748, 0xC881, 0xC9AF, 0xCACD, 0xCBD4, 0xCCBE, 0xCD87,\n    0xCE27, 0xCE9A, 0xCEDA, 0xCD8A, 0xCA28, 0xC5F6, 0xC238, 0xBF5F,\n    0xBF1D, 0xBF02, 0xBF04, 0xBF19, 0xBF36, 0xBF51, 0xBF5F, 0x8001,\n    0x8001, 0x4171, 0x0038, 0x0038, 0x0038, 0x0037, 0x0034, 0x002F,\n    0x002A, 0x0024, 0x001D, 0x0013, 0x0007, 0x0000, 0xFFFF, 0xFFFE,\n    0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFE, 0xFFFE,\n    0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xBF3B, 0xBF3B, 0xBF3B, 0xBF3C, 0xBF3E, 0xBF40,\n    0xBF44, 0xBF48, 0xBF4C, 0xBF52, 0xBF5B, 0xBF5F, 0xBF68, 0xBF7E,\n    0xBF9F, 0xBFC7, 0xBFF3, 0xC020, 0xC04B, 0xC070, 0xC08D, 0xC09E,\n    0xC0A0, 0xC091, 0xC06C, 0xC02F, 0xBFD6, 0xBF5F, 0xBD6B, 0xB9CF,\n    0xB655, 0xB4C7, 0xBF5F, 0xC055, 0xC0B8, 0xC0B0, 0xC062, 0xBFF7,\n    0xBF94, 0xBF60, 0x02D5, 0x04A2, 0x069F, 0x06AD, 0x060E, 0x04AE,\n    0x02A4, 0x0035, 0xFD96, 0xFAFC, 0xF89C, 0xF6AD, 0xF5A9, 0xF591,\n    0xF5E0, 0xF698, 0xF7B7, 0xF8B3, 0xF923, 0xF98D, 0xFA49, 0xFB16,\n    0xFBEB, 0xFCBD, 0xFD82, 0xFE60, 0xFF2C, 0xFF62, 0xFED9, 0xFDEF,\n    0xFCE4, 0xFBFC, 0xFB78, 0xFBC1, 0xFCA5, 0xFD82, 0xFE3C, 0xFF06,\n    0xFFAC, 0xFFFF, 0xFA02, 0xFC32, 0xFE84, 0xFDF2, 0xFC7D, 0xFB52,\n    0xFAA7, 0xF9FB, 0xF961, 0xF8EE, 0xF8B3, 0xF8C6, 0xF9FF, 0xFC1E,\n    0xFD95, 0xFD7C, 0xFCBA, 0xFC7A, 0xFDEF, 0xFF8B, 0x0026, 0x009A,\n    0x00EE, 0x012F, 0x0167, 0x018D, 0x0185, 0x013E, 0x00B5, 0x0005,\n    0xFF48, 0xFE92, 0xFDFC, 0xFD87, 0xFD3F, 0xFD4E, 0xFDDC, 0xFEBA,\n    0xFF8D, 0xFFFE, 0x1138, 0xFE8F, 0xE914, 0xE818, 0xED86, 0xF508,\n    0xFCC9, 0x058A, 0x0ED0, 0x1821, 0x2100, 0x28F4, 0x2FDE, 0x3505,\n    0x3700, 0x335B, 0x2C89, 0x287E, 0x2DC6, 0x33A2, 0x33A6, 0x32C9,\n    0x3124, 0x2ECF, 0x2BE0, 0x26CD, 0x1FE5, 0x1A09, 0x1636, 0x1320,\n    0x103C, 0x0CFD, 0x08D6, 0x019F, 0xF8E9, 0xF3BA, 0xF3FB, 0xF6DB,\n    0xFA51, 0xFC55, 0xF901, 0xFA6A, 0xFC59, 0xFD6F, 0xFE8F, 0xFFAF,\n    0x00C6, 0x01CE, 0x02BD, 0x038B, 0x042F, 0x04A0, 0x04ED, 0x052C,\n    0x055D, 0x0581, 0x059A, 0x05A8, 0x05AC, 0x05A7, 0x0599, 0x0584,\n    0x0569, 0x0549, 0x0524, 0x04FB, 0x04CF, 0x04A2, 0x042F, 0x035A,\n    0x025D, 0x0174, 0x00D8, 0x0084, 0x0049, 0x0023, 0x000D, 0x0002,\n    0x0000, 0x0000, 0x0301, 0x01B6, 0x0045, 0x0003, 0xFFD7, 0xFFBA,\n    0xFFAB, 0xFFA7, 0xFFA8, 0xFFAE, 0xFFB2, 0xFFB4, 0xFFB4, 0xFFB8,\n    0xFFBE, 0xFFC7, 0xFFD1, 0xFFDC, 0xFFE9, 0xFFF5, 0x0000, 0x000B,\n    0x0015, 0x001D, 0x0022, 0x0024, 0x0023, 0x001D, 0xFFFE, 0xFFBC,\n    0xFF70, 0xFF30, 0xFF14, 0xFF1F, 0xFF3F, 0xFF6B, 0xFF9D, 0xFFCC,\n    0xFFEF, 0x0000, 0x11DA, 0x0B6E, 0x0465, 0x036E, 0x02F1, 0x02D2,\n    0x02FA, 0x034C, 0x03B1, 0x040E, 0x044A, 0x044A, 0x0403, 0x0383,\n    0x02D7, 0x020C, 0x012D, 0x0048, 0xFF69, 0xFE9C, 0xFDEE, 0xFD6B,\n    0xFD20, 0xFD1A, 0xFD64, 0xFE0C, 0xFF1E, 0x00A5, 0x05F2, 0x100D,\n    0x1B9C, 0x2543, 0x29A8, 0x2861, 0x2407, 0x1DC1, 0x16B7, 0x1011,\n    0x0AF7, 0x0892, 0x0280, 0x0258, 0x01FC, 0x0199, 0x013A, 0x00CF,\n    0x005E, 0xFFF0, 0xFF88, 0xFF2F, 0xFEEB, 0xFEC3, 0xFEAE, 0xFEA0,\n    0xFE98, 0xFE96, 0xFE98, 0xFEA0, 0xFEAB, 0xFEB9, 0xFEC9, 0xFEDB,\n    0xFEEF, 0xFF03, 0xFF17, 0xFF2A, 0xFF3C, 0xFF4C, 0xFF64, 0xFF8B,\n    0xFFB7, 0xFFDD, 0xFFF6, 0x0001, 0x0007, 0x0008, 0x0007, 0x0004,\n    0x0001, 0x0000, 0x015E, 0x0180, 0x01C4, 0x01F9, 0x0214, 0x022D,\n    0x0244, 0x0258, 0x026A, 0x027A, 0x0287, 0x0291, 0x029A, 0x02A5,\n    0x02B0, 0x02BC, 0x02C8, 0x02D3, 0x02DE, 0x02E7, 0x02EE, 0x02F2,\n    0x02F4, 0x02F3, 0x02EE, 0x02E4, 0x02D6, 0x02C3, 0x0289, 0x021B,\n    0x0197, 0x011B, 0x00C4, 0x008F, 0x0062, 0x003F, 0x0023, 0x0010,\n    0x0004, 0x0000, 0x5B90, 0x584E, 0x5130, 0x4A2D, 0x441C, 0x3D6E,\n    0x3685, 0x2FBF, 0x297D, 0x241E, 0x2004, 0x1D8D, 0x1C35, 0x1B33,\n    0x1A83, 0x1A20, 0x1A04, 0x1A2A, 0x1A8E, 0x1B2B, 0x1BFC, 0x1CFB,\n    0x1E24, 0x1F72, 0x20E0, 0x2269, 0x2407, 0x25B7, 0x2959, 0x2FAD,\n    0x36F7, 0x3D7E, 0x4186, 0x431D, 0x43A7, 0x436E, 0x42BA, 0x41D6,\n    0x410B, 0x40A4,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_8B.inc.c",
    "content": "static const struct Animation anim_8B[] = {\n    1,\n    189,\n    0,\n    0,\n    0x25,\n    ANIMINDEX_NUMPARTS(anim_8B_indices),\n    anim_8B_values,\n    anim_8B_indices,\n    0,\n};\n\n\nstatic const u16 anim_8B_indices[] = {\n    0x0001, 0x0000, 0x0025, 0x0001, 0x0025, 0x0026, 0x0001, 0x0000, 0x0001, 0x004B, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0025, 0x05A8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0025, 0x0583,\n    0x0025, 0x0514, 0x0025, 0x0539, 0x0025, 0x055E,\n    0x0025, 0x04A4, 0x0025, 0x04C9, 0x0025, 0x04EE,\n    0x0025, 0x00E0, 0x0025, 0x0105, 0x0025, 0x012A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0025, 0x00BB,\n    0x0025, 0x004C, 0x0025, 0x0071, 0x0025, 0x0096,\n    0x0001, 0x0458, 0x0001, 0x0459, 0x0025, 0x045A,\n    0x0025, 0x01E3, 0x0025, 0x0208, 0x0025, 0x022D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0025, 0x01BE,\n    0x0025, 0x014F, 0x0025, 0x0174, 0x0025, 0x0199,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0025, 0x047F,\n    0x0025, 0x03E9, 0x0025, 0x040E, 0x0025, 0x0433,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0025, 0x03C4,\n    0x0025, 0x0355, 0x0025, 0x037A, 0x0025, 0x039F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0513,\n    0x0025, 0x02E6, 0x0025, 0x030B, 0x0025, 0x0330,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0025, 0x02C1,\n    0x0025, 0x0252, 0x0025, 0x0277, 0x0025, 0x029C,\n};\n\nstatic const s16 anim_8B_values[] = {\n    0x0000, 0x0056, 0x0056, 0x0056, 0x0057, 0x0057, 0x0057, 0x0058,\n    0x0058, 0x0059, 0x0059, 0x005A, 0x005A, 0x005A, 0x0058, 0x0055,\n    0x005B, 0x008D, 0x00AA, 0x00B3, 0x00AF, 0x00A1, 0x007D, 0x0059,\n    0x0060, 0x0068, 0x0071, 0x007A, 0x0084, 0x008D, 0x0095, 0x009A,\n    0x009B, 0x009C, 0x009C, 0x009B, 0x009B, 0x009A, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0002, 0x0003,\n    0x0001, 0x0000, 0x0000, 0x0003, 0x0007, 0x0006, 0x0005, 0x0003,\n    0x0001, 0x0000, 0x0000, 0x3FFF, 0xD8C0, 0xD8FD, 0xD952, 0xD9B7,\n    0xDA26, 0xDA97, 0xDB03, 0xDB64, 0xDBB2, 0xDBE6, 0xDBF8, 0xDBE6,\n    0xDBC0, 0xDBA4, 0xDBAE, 0xDBF8, 0xDC76, 0xDD04, 0xDDA1, 0xDE4A,\n    0xDEFC, 0xDFB6, 0xE074, 0xE136, 0xE1F7, 0xE2B7, 0xE372, 0xE427,\n    0xE4D2, 0xE572, 0xE604, 0xE687, 0xE6F6, 0xE751, 0xE795, 0xE7C0,\n    0xE7CE, 0xFA44, 0xFA5F, 0xFA85, 0xFAB3, 0xFAE5, 0xFB18, 0xFB49,\n    0xFB75, 0xFB98, 0xFBAF, 0xFBB8, 0xFBBB, 0xFBC2, 0xFBC7, 0xFBC6,\n    0xFBB8, 0xFBA0, 0xFB86, 0xFB69, 0xFB49, 0xFB28, 0xFB06, 0xFAE2,\n    0xFABE, 0xFA9A, 0xFA77, 0xFA54, 0xFA32, 0xFA12, 0xF9F4, 0xF9D9,\n    0xF9C1, 0xF9AC, 0xF99B, 0xF98F, 0xF987, 0xF984, 0xF4F7, 0xF4F6,\n    0xF4F5, 0xF4F4, 0xF4F2, 0xF4F1, 0xF4EF, 0xF4EE, 0xF4ED, 0xF4EC,\n    0xF4EC, 0xF4FE, 0xF522, 0xF53E, 0xF534, 0xF4EC, 0xF472, 0xF3E7,\n    0xF34F, 0xF2AB, 0xF1FE, 0xF149, 0xF090, 0xEFD4, 0xEF18, 0xEE5E,\n    0xEDA8, 0xECF9, 0xEC52, 0xEBB6, 0xEB28, 0xEAAA, 0xEA3D, 0xE9E5,\n    0xE9A3, 0xE979, 0xE96B, 0xF3AF, 0xF3D9, 0xF3F1, 0xF3F8, 0xF3E9,\n    0xF3C4, 0xF386, 0xF32D, 0xF2B7, 0xF222, 0xF16C, 0xEF1A, 0xEAB4,\n    0xE5C2, 0xE1C9, 0xE050, 0xE0BA, 0xE165, 0xE249, 0xE35F, 0xE4A0,\n    0xE605, 0xE787, 0xE91E, 0xEAC3, 0xEC6F, 0xEE1C, 0xEFC2, 0xF159,\n    0xF2DB, 0xF441, 0xF584, 0xF69B, 0xF781, 0xF82F, 0xF89C, 0xF8C2,\n    0xB4B2, 0xB4AE, 0xB49A, 0xB467, 0xB409, 0xB372, 0xB295, 0xB163,\n    0xAFD1, 0xADCF, 0xAB51, 0xA75E, 0xA17F, 0x9A68, 0x92D0, 0x8B6A,\n    0x80F7, 0x76E5, 0x6F35, 0x6DA7, 0x6DFA, 0x69CB, 0x5C53, 0x4A57,\n    0x3BBD, 0x323D, 0x2A20, 0x2325, 0x1D0B, 0x1791, 0x13E7, 0x1272,\n    0x11C2, 0x115F, 0x1189, 0x11E6, 0x1219, 0x9234, 0x922F, 0x9221,\n    0x920A, 0x91EA, 0x91C3, 0x9194, 0x915F, 0x9124, 0x90E4, 0x909E,\n    0x8FD7, 0x8E82, 0x8D4F, 0x8CEA, 0x8E02, 0x9CFA, 0x9DA2, 0x9C53,\n    0x9CC1, 0x9DB4, 0xA13F, 0xA993, 0xB47E, 0xBD7D, 0xC33E, 0xC7E0,\n    0xCC07, 0xD058, 0xD576, 0xDC8D, 0xE4AF, 0xEB5C, 0xF068, 0xF4DD,\n    0xF80C, 0xF942, 0xCE72, 0xCF23, 0xCF4C, 0xCF25, 0xCEE6, 0xCEC5,\n    0xCEFA, 0xCFBE, 0xD147, 0xD3CD, 0xD788, 0xDE59, 0xE8FA, 0xF5E5,\n    0x0396, 0x1089, 0x1FF3, 0x2E17, 0x384C, 0x39C0, 0x3830, 0x3AE5,\n    0x4689, 0x5671, 0x63E3, 0x6D76, 0x7632, 0x7E05, 0x84DF, 0x8AAF,\n    0x8DEF, 0x8E6C, 0x8E18, 0x8D67, 0x8C03, 0x8AA4, 0x8A06, 0x408F,\n    0x4047, 0x3FE4, 0x3F6D, 0x3EEC, 0x3E67, 0x3DE9, 0x3D78, 0x3D1D,\n    0x3CE0, 0x3CCA, 0x3D31, 0x3DFD, 0x3E97, 0x3E64, 0x3CCA, 0x3A20,\n    0x3728, 0x33F0, 0x3082, 0x2CEC, 0x293A, 0x2577, 0x21B1, 0x1DF2,\n    0x1A48, 0x16BE, 0x1361, 0x103C, 0x0D5D, 0x0ACF, 0x0928, 0x08B2,\n    0x0906, 0x09C1, 0x0A7B, 0x0ACF, 0x122C, 0x1225, 0x121B, 0x1210,\n    0x1203, 0x11F6, 0x11E9, 0x11DE, 0x11D5, 0x11CF, 0x11CD, 0x11EE,\n    0x122E, 0x125E, 0x124E, 0x11CD, 0x10F6, 0x1007, 0x0F03, 0x0DEF,\n    0x0CCD, 0x0BA3, 0x0A74, 0x0943, 0x0815, 0x06ED, 0x05D0, 0x04C0,\n    0x03C3, 0x02DB, 0x020D, 0x0188, 0x0162, 0x017D, 0x01B8, 0x01F2,\n    0x020D, 0x143B, 0x13ED, 0x1382, 0x1302, 0x1276, 0x11E7, 0x115E,\n    0x10E4, 0x1082, 0x1040, 0x1029, 0x106F, 0x10FC, 0x1165, 0x1142,\n    0x1029, 0x0E54, 0x0C4A, 0x0A13, 0x07B8, 0x0542, 0x02B7, 0x0022,\n    0xFD8A, 0xFAF8, 0xF873, 0xF605, 0xF3B5, 0xF18C, 0xEF93, 0xEDD2,\n    0xECAF, 0xEC5E, 0xEC98, 0xED18, 0xED98, 0xEDD2, 0xE52D, 0xE55B,\n    0xE58D, 0xE5BD, 0xE5E9, 0xE60B, 0xE620, 0xE623, 0xE611, 0xE5E5,\n    0xE59B, 0xE47E, 0xE260, 0xE00A, 0xDE47, 0xDDDE, 0xDE82, 0xDF5A,\n    0xE05F, 0xE18A, 0xE2D4, 0xE435, 0xE5A7, 0xE722, 0xE8A0, 0xEA18,\n    0xEB85, 0xECDF, 0xEE1F, 0xEF3D, 0xF033, 0xF0CE, 0xF0FA, 0xF0DB,\n    0xF097, 0xF052, 0xF033, 0xBAEE, 0xBADE, 0xBAB9, 0xBA91, 0xBA76,\n    0xBA78, 0xBAA9, 0xBB1A, 0xBBDB, 0xBCFD, 0xBE91, 0xC1C8, 0xC6F7,\n    0xCCEB, 0xD26C, 0xD646, 0xD8D6, 0xDB4A, 0xDDA3, 0xDFE1, 0xE206,\n    0xE413, 0xE609, 0xE7E9, 0xE9B4, 0xEB6C, 0xED10, 0xEEA4, 0xF026,\n    0xF199, 0xF2FE, 0xF3F1, 0xF436, 0xF405, 0xF39A, 0xF32F, 0xF2FE,\n    0x11FA, 0x121E, 0x127D, 0x1307, 0x13A9, 0x1453, 0x14F2, 0x1575,\n    0x15CB, 0x15E1, 0x15A7, 0x1472, 0x1220, 0x0F6F, 0x0D1B, 0x0BE1,\n    0x0B83, 0x0B46, 0x0B25, 0x0B1C, 0x0B28, 0x0B46, 0x0B71, 0x0BA6,\n    0x0BE2, 0x0C21, 0x0C5F, 0x0C99, 0x0CCA, 0x0CF1, 0x0D07, 0x0D11,\n    0x0D14, 0x0D12, 0x0D0E, 0x0D09, 0x0D07, 0x4CB6, 0x4D69, 0x4DA2,\n    0x4D94, 0x4D6D, 0x4D5E, 0x4D96, 0x4E46, 0x4F9D, 0x51CB, 0x5501,\n    0x5C02, 0x676A, 0x742A, 0x7F37, 0x8582, 0x8821, 0x8A39, 0x8BD9,\n    0x8D10, 0x8DEA, 0x8E78, 0x8EC6, 0x8EE3, 0x8EDE, 0x8EC4, 0x8EA4,\n    0x8E8C, 0x8E8B, 0x8EAD, 0x8F03, 0x8F54, 0x8F6A, 0x8F5A, 0x8F37,\n    0x8F13, 0x8F03, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFDD, 0xFF97, 0xFF62,\n    0xFF74, 0x0000, 0x012A, 0x02CC, 0x04AE, 0x0697, 0x084F, 0x099E,\n    0x0A4C, 0x0979, 0x0739, 0x04BA, 0x032E, 0x031B, 0x03CE, 0x049C,\n    0x04DA, 0x045A, 0x0380, 0x0281, 0x018C, 0x00D4, 0x008C, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x000B, 0x0022, 0x0033, 0x002D, 0x0000, 0xFF9B,\n    0xFF0A, 0xFE62, 0xFDBB, 0xFD2A, 0xFCC6, 0xFCA5, 0xFD11, 0xFE0C,\n    0xFF41, 0x0056, 0x0167, 0x0290, 0x0386, 0x03FB, 0x03DE, 0x036A,\n    0x02C9, 0x0223, 0x01A1, 0x016D, 0xC596, 0xC6E0, 0xC840, 0xC9B3,\n    0xCB33, 0xCCBD, 0xCE4C, 0xCFDD, 0xD16B, 0xD2F3, 0xD470, 0xD683,\n    0xD938, 0xDBAA, 0xDCF3, 0xDC2E, 0xD93E, 0xD4F0, 0xCFBB, 0xCA18,\n    0xC47F, 0xBF68, 0xBB4C, 0xB89E, 0xB72E, 0xB67F, 0xB611, 0xB5F1,\n    0xB653, 0xB6F5, 0xB798, 0xB845, 0xB91D, 0xB9FF, 0xBACA, 0xBB5C,\n    0xBB94, 0x3388, 0x3514, 0x36A2, 0x383A, 0x39E4, 0x3BA5, 0x3D86,\n    0x3F8C, 0x41C0, 0x4427, 0x46C9, 0x4AE6, 0x50CD, 0x5717, 0x5C5E,\n    0x5F3B, 0x5FC9, 0x5F41, 0x5DE1, 0x5BEB, 0x59A0, 0x5740, 0x550B,\n    0x52B9, 0x4FDE, 0x4C8D, 0x48D7, 0x441A, 0x3E86, 0x395F, 0x35EB,\n    0x3432, 0x333E, 0x32DC, 0x32D6, 0x32FA, 0x3311, 0x03AC, 0x0332,\n    0x02AB, 0x021D, 0x018E, 0x0105, 0x0086, 0x0019, 0xFFC5, 0xFF8C,\n    0xFF78, 0x001C, 0x0199, 0x0340, 0x0461, 0x044E, 0x02C2, 0x003C,\n    0xFD2F, 0xFA0B, 0xF744, 0xF54B, 0xF494, 0xF658, 0xFA98, 0xFFEE,\n    0x04F3, 0x0A02, 0x0F9C, 0x1495, 0x17C1, 0x1910, 0x196D, 0x192B,\n    0x1897, 0x1804, 0x17C1, 0x057F, 0x070D, 0x08BE, 0x0A87, 0x0C5D,\n    0x0E34, 0x1002, 0x11BB, 0x1354, 0x14C1, 0x15F9, 0x16AC, 0x16BE,\n    0x166D, 0x15F7, 0x1598, 0x1549, 0x14E2, 0x146F, 0x13FB, 0x1390,\n    0x133C, 0x1308, 0x1315, 0x1365, 0x13D3, 0x143B, 0x14A4, 0x151C,\n    0x1588, 0x15CC, 0x15E8, 0x15F0, 0x15EB, 0x15DE, 0x15D2, 0x15CC,\n    0xBF8B, 0xBBE8, 0xB7E2, 0xB39A, 0xAF33, 0xAACD, 0xA68B, 0xA28F,\n    0x9EF9, 0x9BED, 0x998A, 0x9989, 0x9C50, 0xA00A, 0xA2E2, 0xA302,\n    0xA009, 0x9B51, 0x9595, 0x8F95, 0x8A0E, 0x85BF, 0x8366, 0x84C4,\n    0x89C5, 0x9068, 0x96AA, 0x9CFB, 0xA41C, 0xAA7D, 0xAE8E, 0xB036,\n    0xB0AD, 0xB058, 0xAF9E, 0xAEE3, 0xAE8E, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0020, 0x0060, 0x0090, 0x0080, 0x0000, 0xFEEE, 0xFD6C, 0xFBAF,\n    0xF9ED, 0xF85A, 0xF72B, 0xF695, 0xF76A, 0xF999, 0xFC09, 0xFD9D,\n    0xFDEB, 0xFD93, 0xFD10, 0xFCDE, 0xFD19, 0xFD7C, 0xFDF0, 0xFE60,\n    0xFEB3, 0xFED4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFE9, 0xFFBA, 0xFF96,\n    0xFFA2, 0x0000, 0x00C9, 0x01E4, 0x032B, 0x0475, 0x059D, 0x067B,\n    0x06E8, 0x0658, 0x04D2, 0x030A, 0x01B7, 0x0100, 0x0087, 0x0039,\n    0x0000, 0xFFD5, 0xFFB9, 0xFFAA, 0xFFA3, 0xFFA2, 0xFFA2, 0xD709,\n    0xD6C7, 0xD67B, 0xD62F, 0xD5EC, 0xD5BD, 0xD5AC, 0xD5C1, 0xD606,\n    0xD686, 0xD74A, 0xDA13, 0xDF2C, 0xE46D, 0xE7AD, 0xE6C5, 0xE15E,\n    0xD93C, 0xCF61, 0xC4CE, 0xBA86, 0xB18A, 0xAADC, 0xA83E, 0xA94F,\n    0xABDA, 0xADAC, 0xAE73, 0xAF45, 0xB00A, 0xB0AD, 0xB139, 0xB1C4,\n    0xB243, 0xB2AA, 0xB2F1, 0xB30A, 0x45A0, 0x459F, 0x4564, 0x4506,\n    0x449C, 0x443D, 0x4401, 0x43FE, 0x444C, 0x4502, 0x4637, 0x494F,\n    0x4EA8, 0x54D3, 0x5A5E, 0x5DD8, 0x5F7E, 0x6085, 0x60F8, 0x60E3,\n    0x604F, 0x5F48, 0x5DD8, 0x5B08, 0x567A, 0x5121, 0x4BF2, 0x4673,\n    0x405F, 0x3AFC, 0x378C, 0x3622, 0x35BC, 0x3605, 0x36A4, 0x3744,\n    0x378C, 0xF96B, 0xF9FB, 0xFA8F, 0xFB25, 0xFBB6, 0xFC40, 0xFCBD,\n    0xFD2A, 0xFD82, 0xFDC1, 0xFDE3, 0xFD62, 0xFC1F, 0xFAAD, 0xF9A2,\n    0xF991, 0xFABA, 0xFCB9, 0xFF27, 0x019D, 0x03B7, 0x050C, 0x0538,\n    0x0336, 0xFEF2, 0xF966, 0xF393, 0xECA3, 0xE46B, 0xDCED, 0xD827,\n    0xD640, 0xD5B7, 0xD619, 0xD6EF, 0xD7C6, 0xD827, 0xF581, 0xF452,\n    0xF312, 0xF1CA, 0xF07E, 0xEF36, 0xEDF8, 0xECCA, 0xEBB3, 0xEAB9,\n    0xE9E2, 0xE979, 0xE997, 0xE9FE, 0xEA6E, 0xEAA8, 0xEAB7, 0xEACB,\n    0xEADC, 0xEAE2, 0xEAD3, 0xEAA9, 0xEA5B, 0xE996, 0xE85D, 0xE726,\n    0xE666, 0xE656, 0xE6B0, 0xE728, 0xE772, 0xE785, 0xE78A, 0xE787,\n    0xE77E, 0xE776, 0xE772, 0xA420, 0xA1E3, 0x9FA2, 0x9D67, 0x9B3B,\n    0x9929, 0x973A, 0x9578, 0x93ED, 0x92A3, 0x91A3, 0x922C, 0x9496,\n    0x9794, 0x99DB, 0x9A1D, 0x97F9, 0x945E, 0x8FF4, 0x8B64, 0x8756,\n    0x8475, 0x8367, 0x85D9, 0x8BCE, 0x9377, 0x9B05, 0xA33D, 0xACAC,\n    0xB52B, 0xBA94, 0xBCC5, 0xBD63, 0xBCF2, 0xBBFC, 0xBB05, 0xBA94,\n    0x7FFF, 0x7FFF, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171,\n    0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x415F, 0x413C, 0x4122,\n    0x412B, 0x4171, 0x41E5, 0x4267, 0x42F5, 0x438B, 0x4428, 0x44CA,\n    0x456F, 0x4614, 0x46B8, 0x4759, 0x47F4, 0x4887, 0x4911, 0x498F,\n    0x49FF, 0x4A47, 0x4A5C, 0x4A4D, 0x4A2D, 0x4A0D, 0x49FF, 0xC5E4,\n    0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4,\n    0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5E4, 0xC5ED,\n    0xC602, 0xC61B, 0xC62D, 0xC630, 0xC61B, 0xC5E4, 0xC560, 0xC489,\n    0xC392, 0xC2A9, 0xC1C0, 0xC0C6, 0xBFEB, 0xBF5F, 0xBF24, 0xBF14,\n    0xBF20, 0xBF3A, 0xBF53, 0xBF5F, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF,\n    0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x8005,\n    0x8012, 0x801B, 0x8018, 0x7FFF, 0x7F77, 0x7EE8, 0x7DE0, 0x7CFE,\n    0x7EE8, 0x85D7, 0x8FA7, 0x986F, 0x9C47, 0x9BC7, 0x9A46, 0x97F9,\n    0x9510, 0x91C1, 0x8E3D, 0x8AB7, 0x8763, 0x8474, 0x821C, 0x808E,\n    0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF,\n    0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7F64, 0x7E2E, 0x7D46, 0x7D94,\n    0x7FFF, 0x8CD5, 0x9A6D, 0x9C2E, 0x9A69, 0x9A6D, 0x9F2E, 0xA5FB,\n    0xABB2, 0xAD32, 0xAAEB, 0xA78E, 0xA359, 0x9E8A, 0x9962, 0x941E,\n    0x8EFD, 0x8A3F, 0x8621, 0x82E2, 0x80C2, 0x7FFF, 0x4171, 0x4171,\n    0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171, 0x4171,\n    0x4171, 0x41CC, 0x4283, 0x430D, 0x42DF, 0x4171, 0x39D6, 0x31C9,\n    0x3021, 0x308F, 0x31C9, 0x3378, 0x35C6, 0x382C, 0x3A22, 0x3BC7,\n    0x3D8B, 0x3F61, 0x413D, 0x4312, 0x44D2, 0x4670, 0x47E1, 0x4916,\n    0x4A03, 0x4A9A, 0x4AD0, 0xBF5F, 0x01B4, 0x01B2, 0x01AF, 0x01AD,\n    0x01AB, 0x01AA, 0x01A9, 0x01AA, 0x01AC, 0x01B0, 0x01B6, 0x01C3,\n    0x01DA, 0x01F7, 0x0214, 0x022D, 0x0234, 0x0234, 0x0236, 0x0237,\n    0x0236, 0x0233, 0x022B, 0x01E7, 0x019E, 0x014F, 0x00FF, 0x00B1,\n    0x006A, 0x002E, 0x0000, 0xFFE6, 0xFFDF, 0xFFE4, 0xFFF0, 0xFFFB,\n    0x0000, 0x0165, 0x0169, 0x016F, 0x0174, 0x0179, 0x017C, 0x017D,\n    0x017C, 0x0177, 0x016E, 0x0160, 0x0141, 0x010B, 0x00CA, 0x0087,\n    0x004D, 0x0038, 0x0020, 0x000A, 0xFFF5, 0xFFDD, 0xFFC3, 0xFFA6,\n    0xFF5A, 0xFF6A, 0xFF82, 0xFF9E, 0xFFBB, 0xFFD7, 0xFFEF, 0x0000,\n    0x0008, 0x000B, 0x0009, 0x0005, 0x0001, 0x0000, 0xD8CB, 0xD86D,\n    0xD801, 0xD795, 0xD737, 0xD6F4, 0xD6DB, 0xD6F9, 0xD75C, 0xD811,\n    0xD927, 0xDBA3, 0xDFEF, 0xE52F, 0xEA89, 0xEF22, 0xF0C5, 0xF263,\n    0xF3D9, 0xF550, 0xF6F2, 0xF8E6, 0xFB57, 0x03E5, 0x066F, 0x08BA,\n    0x0AC8, 0x0C99, 0x0E2C, 0x0F81, 0x109A, 0x1148, 0x1178, 0x1156,\n    0x1109, 0x10BD, 0x109A, 0xFD15, 0xFE05, 0xFEFB, 0xFFFA, 0x00FF,\n    0x0210, 0x032A, 0x0450, 0x0583, 0x06C3, 0x0811, 0x0A6E, 0x0E0D,\n    0x11B6, 0x1432, 0x144A, 0xFF04, 0xFF11, 0x0139, 0x047D, 0x07DC,\n    0x0A57, 0x0AEB, 0x099D, 0x074E, 0x044C, 0x00E2, 0xFD5E, 0xFA0A,\n    0xF733, 0xF527, 0xF413, 0xF3C5, 0xF3FC, 0xF476, 0xF4F0, 0xF527,\n    0x7F62, 0x7F64, 0x7F51, 0x7F1D, 0x7EBB, 0x7E1F, 0x7D3C, 0x7C06,\n    0x7A70, 0x786E, 0x75F3, 0x711D, 0x693E, 0x6015, 0x5760, 0x50DF,\n    0x4C6F, 0x48AD, 0x457D, 0x42C0, 0x405A, 0x3E2C, 0x3C18, 0x405C,\n    0x3F8A, 0x3DE4, 0x3CD9, 0x3C18, 0x3B97, 0x3B0F, 0x3A87, 0x3A04,\n    0x398C, 0x3925, 0x38D4, 0x38A0, 0x388D,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_8C.inc.c",
    "content": "static const struct Animation anim_8C[] = {\n    1,\n    189,\n    0,\n    0,\n    0x08,\n    ANIMINDEX_NUMPARTS(anim_8C_indices),\n    anim_8C_values,\n    anim_8C_indices,\n    0,\n};\n\n\nstatic const u16 anim_8C_indices[] = {\n    0x0008, 0x0001, 0x0008, 0x0009, 0x0001, 0x0011, 0x0001, 0x0000, 0x0001, 0x0012, 0x0001, 0x0000,\n    0x0008, 0x012B, 0x0008, 0x0133, 0x0008, 0x013B,\n    0x0008, 0x0113, 0x0008, 0x011B, 0x0008, 0x0123,\n    0x0008, 0x00FB, 0x0008, 0x0103, 0x0008, 0x010B,\n    0x0001, 0x00F7, 0x0001, 0x00F8, 0x0001, 0x00F9,\n    0x0008, 0x0033, 0x0008, 0x003B, 0x0008, 0x0043,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x002B,\n    0x0008, 0x0013, 0x0008, 0x001B, 0x0008, 0x0023,\n    0x0001, 0x00F3, 0x0001, 0x00F4, 0x0001, 0x00F5,\n    0x0008, 0x006B, 0x0008, 0x0073, 0x0008, 0x007B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x0063,\n    0x0008, 0x004B, 0x0008, 0x0053, 0x0008, 0x005B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00F6,\n    0x0008, 0x00DB, 0x0008, 0x00E3, 0x0008, 0x00EB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x00D3,\n    0x0008, 0x00BB, 0x0008, 0x00C3, 0x0008, 0x00CB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00FA,\n    0x0008, 0x00A3, 0x0008, 0x00AB, 0x0008, 0x00B3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x009B,\n    0x0008, 0x0083, 0x0008, 0x008B, 0x0008, 0x0093,\n};\n\nstatic const s16 anim_8C_values[] = {\n    0x0000, 0xFFF4, 0x0008, 0xFFF8, 0xFFF3, 0xFFF2, 0xFFF7, 0xFFFE,\n    0x0000, 0x008D, 0x007B, 0x0080, 0x0097, 0x009C, 0x0086, 0x005F,\n    0x004A, 0xFFDD, 0x3FFF, 0xE53C, 0xE262, 0xDBB8, 0xD47F, 0xCFC7,\n    0xD00B, 0xD2D0, 0xD3BC, 0xEA28, 0xE97A, 0xE81C, 0xE6B9, 0xE711,\n    0xEB50, 0xF14A, 0xF442, 0xE4D0, 0xED22, 0xF3C0, 0xF9DB, 0xFCDE,\n    0xFA22, 0xF44E, 0xF0C3, 0xE5B6, 0xD6D6, 0xD97E, 0xDF44, 0xE25C,\n    0xDF3C, 0xD96D, 0xD5BB, 0xE523, 0xD803, 0xDF7B, 0xF7C0, 0x1877,\n    0xFCA8, 0xE781, 0xE897, 0xE134, 0xFBF0, 0x0413, 0xE9A7, 0xD45E,\n    0xE440, 0xE6F6, 0xE6FA, 0xDDB9, 0xEB4F, 0x0B0A, 0x0EFF, 0x020A,\n    0x09EB, 0x1882, 0x1770, 0xC9D0, 0xCD41, 0xDDA7, 0xDD42, 0xD25D,\n    0xD136, 0xD89B, 0xE0EB, 0x0A52, 0x1260, 0x17EC, 0x161A, 0x0842,\n    0x00D7, 0x023C, 0x03F5, 0xD324, 0xD7F6, 0xDB3E, 0xDC28, 0xD37A,\n    0xDD1D, 0xDFA5, 0xE246, 0xD051, 0xCF46, 0xDEAF, 0xCBBC, 0xCFB2,\n    0xCE00, 0xCE4A, 0xCEA6, 0xC6D0, 0xCA2C, 0xBFDA, 0x760F, 0x456A,\n    0x5929, 0x4F8A, 0x49A0, 0x1F8A, 0x234B, 0x2104, 0x3917, 0x2B9E,\n    0x14E1, 0x137B, 0x167A, 0x8791, 0x94DD, 0x9B46, 0x584B, 0x16E6,\n    0x1F55, 0x21E9, 0x2327, 0xFFBA, 0xFFCF, 0xFFB1, 0xFF76, 0xFF57,\n    0xFF84, 0xFFCC, 0xFFF8, 0xFF39, 0xFF31, 0xFF3B, 0xFF69, 0xFF88,\n    0xFF71, 0xFF49, 0xFF30, 0xD7CA, 0xD3A2, 0xD9EE, 0xE8A4, 0xF10E,\n    0xE6CC, 0xD629, 0xCBFA, 0x229B, 0x3C67, 0x4F41, 0x324D, 0x1605,\n    0x1048, 0x122C, 0x1605, 0xEB40, 0xF434, 0xFDBC, 0x0846, 0x0B59,\n    0x0A00, 0x07DF, 0x0675, 0x0075, 0xF8B4, 0xF7DB, 0xF46C, 0xFCFD,\n    0xFD9B, 0xFCCA, 0xFCFD, 0xDA06, 0xD3CD, 0xC8C3, 0xB3E4, 0xA81E,\n    0xA78A, 0xA8ED, 0xA81E, 0xFA86, 0xFAA0, 0xFA98, 0xFA82, 0xFA80,\n    0xFAAC, 0xFAEC, 0xFB0A, 0x0137, 0x01C5, 0x01E8, 0x01C9, 0x0148,\n    0xFFF0, 0xFE34, 0xFD4D, 0xC3FB, 0xC805, 0xC917, 0xC85E, 0xC4BC,\n    0xBACB, 0xADF1, 0xA73E, 0x58CE, 0x5F56, 0x6186, 0x61E4, 0x61F7,\n    0x6276, 0x62AA, 0x61F7, 0x02DD, 0x0307, 0x030E, 0x02E9, 0x0230,\n    0x0019, 0xFD6E, 0xFC1D, 0xEB66, 0xEB09, 0xEC67, 0xEE84, 0xEFA0,\n    0xEE87, 0xEC6E, 0xEB36, 0x949D, 0xA3D4, 0xA9E0, 0xABA2, 0xA995,\n    0xA134, 0x9504, 0x8D13, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001,\n    0x8001, 0x4171, 0xBF5F, 0x23A0, 0x2883, 0x3464, 0x1DCF, 0x11CF,\n    0x10B9, 0x11A3, 0x11CF, 0xFB90, 0xF5B2, 0xF48D, 0xF1E5, 0xF4A2,\n    0xF4C8, 0xF478, 0xF4A2, 0xD73D, 0xF15B, 0x0A3E, 0x186A, 0x1A18,\n    0x1B25, 0x1BEB, 0x1A18, 0xEFB4, 0xEF85, 0xF075, 0xF75E, 0xF33B,\n    0xF298, 0xF2A6, 0xF33B, 0x02E4, 0xF761, 0xEB75, 0xF388, 0xFCB4,\n    0xFDAD, 0xFD1F, 0xFCB4, 0x277E, 0x16BC, 0x06CC, 0x072A, 0x1203,\n    0x12BB, 0x11A5, 0x1203, 0xE4B5, 0xCB3F, 0xBF9A, 0xC1CF, 0xD385,\n    0xE009, 0xEB47, 0xF1AC, 0x28AE, 0x2503, 0x18F0, 0x11D5, 0x088F,\n    0x042E, 0x00D4, 0xFF34, 0x3C1B, 0x1E3D, 0x0F8A, 0x0CC5, 0x0A3D,\n    0x0A19, 0x0A8B, 0x0D43,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_8D.inc.c",
    "content": "static const struct Animation anim_8D[] = {\n    1,\n    189,\n    0,\n    0,\n    0x0E,\n    ANIMINDEX_NUMPARTS(anim_8D_indices),\n    anim_8D_values,\n    anim_8D_indices,\n    0,\n};\n\n\nstatic const u16 anim_8D_indices[] = {\n    0x0001, 0x0000, 0x000E, 0x0001, 0x0001, 0x000F, 0x0001, 0x0000, 0x0001, 0x0010, 0x0001, 0x0000,\n    0x000E, 0x01F5, 0x000E, 0x0203, 0x000E, 0x0211,\n    0x000E, 0x01CB, 0x000E, 0x01D9, 0x000E, 0x01E7,\n    0x000E, 0x01A1, 0x000E, 0x01AF, 0x000E, 0x01BD,\n    0x0001, 0x019D, 0x0001, 0x019E, 0x0001, 0x019F,\n    0x000E, 0x0049, 0x000E, 0x0057, 0x000E, 0x0065,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x003B,\n    0x000E, 0x0011, 0x000E, 0x001F, 0x000E, 0x002D,\n    0x0001, 0x0199, 0x0001, 0x019A, 0x0001, 0x019B,\n    0x000E, 0x00AB, 0x000E, 0x00B9, 0x000E, 0x00C7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x009D,\n    0x000E, 0x0073, 0x000E, 0x0081, 0x000E, 0x008F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x019C,\n    0x000E, 0x016F, 0x000E, 0x017D, 0x000E, 0x018B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x0161,\n    0x000E, 0x0137, 0x000E, 0x0145, 0x000E, 0x0153,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01A0,\n    0x000E, 0x010D, 0x000E, 0x011B, 0x000E, 0x0129,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x00FF,\n    0x000E, 0x00D5, 0x000E, 0x00E3, 0x000E, 0x00F1,\n};\n\nstatic const s16 anim_8D_values[] = {\n    0x0000, 0x004A, 0x004B, 0x004C, 0x004E, 0x0051, 0x0054, 0x0058,\n    0x005B, 0x005F, 0x0062, 0x0065, 0x0067, 0x0068, 0x0069, 0xFFDD,\n    0x3FFF, 0xD3BC, 0xE7CA, 0xFC94, 0x04DD, 0xFABD, 0xE6BE, 0xD163,\n    0xC32E, 0xBCF8, 0xB977, 0xB7F6, 0xB7C2, 0xB827, 0xB870, 0xF442,\n    0xF96E, 0xFD80, 0xFE71, 0xFB2D, 0xF56D, 0xEF5C, 0xEB24, 0xE8EB,\n    0xE752, 0xE641, 0xE59E, 0xE54E, 0xE53A, 0xF0C3, 0xE8C2, 0xDF17,\n    0xDA82, 0xDDDC, 0xE535, 0xED23, 0xF237, 0xF408, 0xF4B2, 0xF493,\n    0xF408, 0xF370, 0xF329, 0xD5BB, 0xDA65, 0xDFDF, 0xE4FC, 0xEA7B,\n    0xF07C, 0xF4DC, 0xF57A, 0xF173, 0xEA6E, 0xE214, 0xDA0E, 0xD406,\n    0xD1A5, 0xE897, 0xEC3E, 0xFC1F, 0x04CD, 0x1B03, 0x3619, 0x4E8B,\n    0x5CD5, 0x5FD6, 0x5D01, 0x56B3, 0x4F47, 0x4919, 0x4683, 0xE6FA,\n    0xE83C, 0xFEA4, 0xF8B7, 0xF21E, 0xEAC0, 0xE39E, 0xDDBA, 0xD8B8,\n    0xD3CD, 0xCF58, 0xCBB5, 0xC943, 0xC85D, 0x1770, 0x0EEF, 0x033F,\n    0xF0D5, 0xE25B, 0xD3C5, 0xC34E, 0xAF33, 0x9414, 0x72FA, 0x50C8,\n    0x3257, 0x1C82, 0x1427, 0xE0EB, 0xE88F, 0xFCC2, 0x042C, 0x0A4C,\n    0x0FB5, 0x14FB, 0x1AB3, 0x21BD, 0x29E0, 0x320D, 0x3935, 0x3E48,\n    0x4035, 0x03F5, 0x028E, 0x0500, 0x075D, 0x0A2B, 0x0D1E, 0x0FEC,\n    0x124B, 0x1469, 0x1688, 0x187D, 0x1A19, 0x1B32, 0x1B99, 0xE246,\n    0xE0CF, 0xE35E, 0xE5D7, 0xE8C5, 0xEBDA, 0xEEC9, 0xF143, 0xF37A,\n    0xF5B2, 0xF7BD, 0xF96C, 0xFA92, 0xFAFE, 0xCEA6, 0xD466, 0xDC19,\n    0xE4BD, 0xED4F, 0xF4CC, 0xFA31, 0xFC7B, 0xF9BC, 0xF242, 0xE861,\n    0xDE6F, 0xD6C2, 0xD3AE, 0x49A0, 0x39BB, 0x3739, 0x1D2A, 0x07C8,\n    0xFC14, 0x007E, 0xD53A, 0xEBC9, 0xF37C, 0xF11F, 0xE97E, 0xE165,\n    0xDDA1, 0x167A, 0x18C2, 0x1F8C, 0x25E2, 0x1BF1, 0x153D, 0x11E0,\n    0x198D, 0x1E0B, 0x22D6, 0x2770, 0x2B58, 0x2E0E, 0x2F11, 0x2327,\n    0x1F4C, 0x1583, 0xE848, 0xC6BF, 0xC4D5, 0xBE7F, 0xB24C, 0xB4B4,\n    0xA0B5, 0x801B, 0x5CAE, 0x403F, 0x3498, 0xFFF8, 0xFFF7, 0xFFF9,\n    0xFFFC, 0xFFFF, 0x0000, 0x0003, 0x0006, 0x0009, 0x000C, 0x000E,\n    0x0010, 0x0012, 0x0012, 0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31, 0xFF31,\n    0xFF31, 0xCBFA, 0xCC34, 0xCBCA, 0xCB17, 0xCA79, 0xC9F6, 0xC95F,\n    0xC8BF, 0xC81D, 0xC783, 0xC6FC, 0xC68F, 0xC647, 0xC62D, 0x1605,\n    0x1AFD, 0x277C, 0x35F2, 0x40CF, 0x45E6, 0x47E4, 0x4882, 0x4898,\n    0x480A, 0x471F, 0x4620, 0x4552, 0x44FE, 0x0675, 0x0642, 0x057E,\n    0x0497, 0x03FC, 0x03AF, 0x036B, 0x032F, 0x02FC, 0x02D1, 0x02AF,\n    0x0297, 0x0288, 0x0283, 0xFCFD, 0xFC70, 0xFEBB, 0x0224, 0x04F3,\n    0x0708, 0x0958, 0x0BC1, 0x0E24, 0x1060, 0x1256, 0x13E4, 0x14EA,\n    0x1549, 0xA81E, 0xA6B9, 0x9E32, 0x93A6, 0x8C35, 0x880D, 0x8403,\n    0x8031, 0x7CAD, 0x7997, 0x7704, 0x750F, 0x73CF, 0x735F, 0xFB0A,\n    0xFB08, 0xFAFB, 0xFAE5, 0xFACA, 0xFAAE, 0xFA95, 0xFA82, 0xFA73,\n    0xFA66, 0xFA5C, 0xFA53, 0xFA4E, 0xFA4C, 0xFD4D, 0xFD5C, 0xFD9B,\n    0xFDF9, 0xFE69, 0xFEDB, 0xFF40, 0xFF8A, 0xFFB8, 0xFFD9, 0xFFEE,\n    0xFFFA, 0xFFFF, 0x0000, 0xA73E, 0xA7B1, 0xA97F, 0xAC39, 0xAF72,\n    0xB2BB, 0xB5A6, 0xB7C6, 0xB920, 0xBA10, 0xBAA9, 0xBAFF, 0xBB25,\n    0xBB2D, 0x61F7, 0x62F4, 0x62E6, 0x6206, 0x6090, 0x5EBF, 0x5CCD,\n    0x5AF4, 0x58AE, 0x55A3, 0x525A, 0x4F5B, 0x4D2C, 0x4C54, 0xFC1D,\n    0xFC11, 0xFC64, 0xFCFA, 0xFDBA, 0xFE88, 0xFF4A, 0xFFE5, 0x006B,\n    0x00F8, 0x017E, 0x01EE, 0x023C, 0x0259, 0xEB36, 0xEB32, 0xEB4C,\n    0xEB7B, 0xEBB6, 0xEBF6, 0xEC32, 0xEC62, 0xEC8C, 0xECB8, 0xECE1,\n    0xED04, 0xED1C, 0xED25, 0x8D13, 0x8D3D, 0x8C1F, 0x8A15, 0x877D,\n    0x84B2, 0x8212, 0x7FF6, 0x7E23, 0x7C3B, 0x7A6C, 0x78E6, 0x77D9,\n    0x7774, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171,\n    0xBF5F, 0x11CF, 0x11E8, 0x114D, 0x1023, 0x0E8D, 0x0CB0, 0x0AAE,\n    0x08AC, 0x06CC, 0x0533, 0x0397, 0x01E4, 0x008C, 0x0000, 0xF4A2,\n    0xF4BF, 0xF558, 0xF651, 0xF791, 0xF8FD, 0xFA79, 0xFBEB, 0xFD3A,\n    0xFE49, 0xFF10, 0xFF98, 0xFFE7, 0x0000, 0x1A18, 0x191A, 0x1563,\n    0x0F8E, 0x0835, 0xFFF4, 0xF761, 0xEF19, 0xE7B5, 0xE1D0, 0xDE17,\n    0xDC54, 0xDBCD, 0xDBCA, 0xF33B, 0xF372, 0xF40B, 0xF4F5, 0xF61D,\n    0xF772, 0xF8E2, 0xFA5A, 0xFBCA, 0xFD1E, 0xFE47, 0xFF30, 0xFFC9,\n    0x0000, 0xFCB4, 0xFCC2, 0xFCEA, 0xFD26, 0xFD72, 0xFDCA, 0xFE29,\n    0xFE8B, 0xFEEA, 0xFF42, 0xFF8E, 0xFFCB, 0xFFF2, 0x0000, 0x1203,\n    0x1299, 0x143C, 0x16BB, 0x19E5, 0x1D89, 0x2176, 0x257B, 0x2969,\n    0x2D0C, 0x3036, 0x32B5, 0x3458, 0x34EF, 0xF1AC, 0xF1EA, 0xF296,\n    0xF39C, 0xF4E9, 0xF667, 0xF803, 0xF9AA, 0xFB46, 0xFCC4, 0xFE11,\n    0xFF17, 0xFFC3, 0x0000, 0xFF34, 0xFF37, 0xFF41, 0xFF4F, 0xFF62,\n    0xFF77, 0xFF8E, 0xFFA6, 0xFFBD, 0xFFD2, 0xFFE5, 0xFFF3, 0xFFFD,\n    0x0000, 0x0D43, 0x0E67, 0x1193, 0x1669, 0x1C8A, 0x2397, 0x2B33,\n    0x32FE, 0x3A99, 0x41A6, 0x47C7, 0x4C9D, 0x4FC9, 0x50ED,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_8E_8F.inc.c",
    "content": "static const struct Animation anim_8E[] = {\n    1,\n    189,\n    0,\n    0,\n    0x01,\n    ANIMINDEX_NUMPARTS(anim_8E_8F_indices),\n    anim_8E_8F_values,\n    anim_8E_8F_indices,\n    0,\n};\n\nstatic const struct Animation anim_8F[] = {\n    1,\n    189,\n    1,\n    0,\n    0x14,\n    ANIMINDEX_NUMPARTS(anim_8E_8F_indices),\n    anim_8E_8F_values,\n    anim_8E_8F_indices,\n    0,\n};\n\n\nstatic const u16 anim_8E_8F_indices[] = {\n    0x0001, 0x0000, 0x0014, 0x0001, 0x0014, 0x0015, 0x0001, 0x0000, 0x0001, 0x0029, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x0315,\n    0x0014, 0x02D9, 0x0014, 0x02ED, 0x0014, 0x0301,\n    0x0014, 0x029D, 0x0014, 0x02B1, 0x0014, 0x02C5,\n    0x0001, 0x0299, 0x0001, 0x029A, 0x0001, 0x029B,\n    0x0014, 0x007A, 0x0014, 0x008E, 0x0014, 0x00A2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x0066,\n    0x0014, 0x002A, 0x0014, 0x003E, 0x0014, 0x0052,\n    0x0001, 0x025A, 0x0001, 0x025B, 0x0001, 0x025C,\n    0x0014, 0x0106, 0x0014, 0x011A, 0x0014, 0x012E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x00F2,\n    0x0014, 0x00B6, 0x0014, 0x00CA, 0x0014, 0x00DE,\n    0x0014, 0x025D, 0x0014, 0x0271, 0x0014, 0x0285,\n    0x0014, 0x021E, 0x0014, 0x0232, 0x0014, 0x0246,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x020A,\n    0x0014, 0x01CE, 0x0014, 0x01E2, 0x0014, 0x01F6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x029C,\n    0x0014, 0x0192, 0x0014, 0x01A6, 0x0014, 0x01BA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x017E,\n    0x0014, 0x0142, 0x0014, 0x0156, 0x0014, 0x016A,\n};\n\nstatic const s16 anim_8E_8F_values[] = {\n    0x0000, 0x0036, 0x0036, 0x0036, 0x0036, 0x0036, 0x0042, 0x005B,\n    0x0072, 0x0077, 0x0085, 0x0095, 0x009E, 0x00A3, 0x00A5, 0x00A7,\n    0x00A9, 0x00AA, 0x00AB, 0x00AB, 0x00AC, 0x0000, 0xFFFF, 0xFFFD,\n    0xFFF8, 0xFFF4, 0xFFEF, 0xFFEB, 0xFFE7, 0xFFE6, 0xFFFA, 0xFFFE,\n    0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x3FFF, 0xFF8A, 0x022A, 0x0856, 0x0F7B, 0x1506, 0x1772,\n    0x16D6, 0x1176, 0x0C4C, 0x0A8F, 0x08E0, 0x0744, 0x05C2, 0x045F,\n    0x0322, 0x0212, 0x0133, 0x008C, 0x0024, 0x0000, 0xF980, 0xF7BC,\n    0xF3C8, 0xEFA9, 0xED62, 0xF0E7, 0xF565, 0xF426, 0xF26D, 0xF2DA,\n    0xF377, 0xF437, 0xF50F, 0xF5F1, 0xF6D3, 0xF7A7, 0xF862, 0xF8F6,\n    0xF958, 0xF97C, 0xF06F, 0xF018, 0xEF09, 0xED38, 0xEA98, 0xE38D,\n    0xDE26, 0xE49D, 0xEB8D, 0xEC93, 0xED4F, 0xEDCB, 0xEE11, 0xEE2C,\n    0xEE27, 0xEE0B, 0xEDE3, 0xEDB9, 0xED99, 0xED8C, 0xD60A, 0xD4BA,\n    0xD28A, 0xD21A, 0xD60A, 0xEA25, 0x0000, 0x0000, 0x0000, 0xFB57,\n    0xF5CB, 0xEFA5, 0xE92D, 0xE2AA, 0xDC63, 0xD69F, 0xD1A8, 0xCDC3,\n    0xCB38, 0xCA4F, 0xA150, 0x9E76, 0x9775, 0x8E9C, 0x863B, 0x7CC9,\n    0x750C, 0x7212, 0x763F, 0x81DF, 0x8FA4, 0x9EE0, 0xAEE3, 0xBEFE,\n    0xCE80, 0xDCBB, 0xE8FE, 0xF29A, 0xF8DF, 0xFB1D, 0xCC95, 0xC608,\n    0xB687, 0xA444, 0x9577, 0x8DB5, 0x8A8D, 0x8A8F, 0x8E40, 0x9472,\n    0x9BAD, 0xA39A, 0xABE1, 0xB42A, 0xBC1E, 0xC364, 0xC9A5, 0xCE89,\n    0xD1B9, 0xD2DC, 0x4B26, 0x4C83, 0x4F71, 0x5233, 0x5309, 0x4EFB,\n    0x46EA, 0x3B8A, 0x3022, 0x26BE, 0x1C67, 0x1180, 0x066C, 0xFB91,\n    0xF150, 0xE80C, 0xE02B, 0xDA0E, 0xD61B, 0xD4B4, 0x0000, 0xFEDA,\n    0xFBEA, 0xF7F7, 0xF3C7, 0xEBC5, 0xF534, 0xF7ED, 0xF8E0, 0xF9BB,\n    0xFA9C, 0xFB7F, 0xFC5D, 0xFD31, 0xFDF4, 0xFEA1, 0xFF32, 0xFFA1,\n    0xFFE8, 0x0000, 0x0000, 0x003E, 0x00A5, 0x00BA, 0x0000, 0xF98A,\n    0x0000, 0x0089, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xED8C, 0xEE45,\n    0xEF7A, 0xEFB7, 0xED8C, 0xDA3F, 0xEF58, 0xF240, 0xF182, 0xF1F9,\n    0xF273, 0xF2EC, 0xF362, 0xF3D2, 0xF439, 0xF493, 0xF4DE, 0xF518,\n    0xF53C, 0xF549, 0xDBBE, 0xDA9C, 0xD8B8, 0xD857, 0xDBBE, 0xEDE1,\n    0x0000, 0xFC7A, 0xF3CA, 0xEF32, 0xEA2E, 0xE4EB, 0xDF98, 0xDA64,\n    0xD57D, 0xD111, 0xCD51, 0xCA69, 0xC888, 0xC7DD, 0x3127, 0x292C,\n    0x16DC, 0x02AA, 0xF50C, 0xF9EF, 0x0409, 0x04B8, 0x00BD, 0xF0D9,\n    0xEEEB, 0xEE2B, 0xEE6E, 0xEF87, 0xF14B, 0xF4AF, 0xF9CF, 0xFF3D,\n    0x038B, 0x054B, 0x319A, 0x2EA7, 0x278A, 0x1EDB, 0x1734, 0x1025,\n    0x0BF6, 0x0ED4, 0x1510, 0x1E96, 0x24F4, 0x2B8E, 0x319D, 0x365A,\n    0x38FC, 0x3877, 0x3550, 0x311A, 0x2D6B, 0x2BD6, 0x18A1, 0x0F37,\n    0xF908, 0xDF21, 0xCA96, 0xC2C0, 0xBF99, 0xBB6F, 0xB4AC, 0x9F91,\n    0x9FAB, 0xA1C1, 0xA53F, 0xA994, 0xAE2D, 0xB448, 0xBC48, 0xC44E,\n    0xCA7C, 0xCCF6, 0x001B, 0x0051, 0x00A9, 0x00BB, 0x001B, 0xFD55,\n    0xF976, 0xF639, 0xF734, 0xF843, 0xFBCF, 0xFE86, 0xFF2E, 0xFFA0,\n    0xFFE6, 0x0008, 0x0013, 0x000F, 0x0005, 0x0000, 0x025B, 0x025C,\n    0x025E, 0x025E, 0x025B, 0x0271, 0x023F, 0x00A2, 0xF75B, 0xF571,\n    0xF886, 0xFB6B, 0xFC53, 0xFD1A, 0xFDC1, 0xFE47, 0xFEAE, 0xFEF7,\n    0xFF22, 0xFF30, 0xCB25, 0xCBCE, 0xCCE7, 0xCD20, 0xCB25, 0xC250,\n    0xB60B, 0xABF3, 0xB02E, 0xA943, 0xB313, 0xBC78, 0xBF89, 0xC239,\n    0xC485, 0xC66A, 0xC7E7, 0xC8FA, 0xC9A0, 0xC9D8, 0x0640, 0x0C90,\n    0x1BD6, 0x2E94, 0x3F4A, 0x4E7B, 0x5970, 0x4F7A, 0x4DCA, 0x4735,\n    0x395B, 0x2EA6, 0x2AD0, 0x277D, 0x24AD, 0x2260, 0x2096, 0x1F4F,\n    0x1E8B, 0x1E4A, 0xFFC5, 0xFF98, 0xFF60, 0xFF94, 0x00AA, 0x0497,\n    0x09E6, 0x0E04, 0x0EBA, 0x12E8, 0x160E, 0x180E, 0x18CE, 0x196F,\n    0x19F3, 0x1A5B, 0x1AAA, 0x1AE0, 0x1AFF, 0x1B09, 0xFEB1, 0xFE95,\n    0xFE6B, 0xFE6E, 0xFEDA, 0x004B, 0x02EF, 0x0821, 0x0F6B, 0x0E01,\n    0x0F33, 0x1065, 0x10AF, 0x10E6, 0x110E, 0x1128, 0x1139, 0x1141,\n    0x1144, 0x1144, 0x9C21, 0x97FF, 0x8EBB, 0x8508, 0x7F95, 0x8694,\n    0x91B7, 0x9351, 0x8C02, 0x9AC3, 0xA1E0, 0xA598, 0xA738, 0xA89B,\n    0xA9C1, 0xAAAE, 0xAB63, 0xABE1, 0xAC2C, 0xAC44, 0x0095, 0x0069,\n    0x0020, 0x0012, 0x0095, 0x0361, 0x060D, 0x0290, 0x01F5, 0xFEAB,\n    0x01A0, 0x0444, 0x042F, 0x03BF, 0x0312, 0x0244, 0x0171, 0x00B7,\n    0x0032, 0x0000, 0xFF09, 0xFEF9, 0xFEDE, 0xFED9, 0xFF09, 0xFFDA,\n    0x010C, 0x0257, 0x015B, 0x0236, 0x0244, 0x0217, 0x01D5, 0x0184,\n    0x012B, 0x00D3, 0x0081, 0x003E, 0x0010, 0x0000, 0xCC42, 0xCCE0,\n    0xCDE6, 0xCE1B, 0xCC42, 0xC41E, 0xB891, 0xADF2, 0xB1DD, 0xAE99,\n    0xB207, 0xB5A9, 0xB759, 0xB908, 0xBAA5, 0xBC1F, 0xBD63, 0xBE61,\n    0xBF05, 0xBF40, 0x09C7, 0x0F7C, 0x1D58, 0x2E75, 0x3DED, 0x4C93,\n    0x57E1, 0x50E8, 0x4ADD, 0x4421, 0x395C, 0x3108, 0x2E28, 0x2BB5,\n    0x29AB, 0x2808, 0x26C7, 0x25E7, 0x2562, 0x2537, 0x0000, 0xFFF3,\n    0xFFD5, 0xFFB9, 0xFFB3, 0xFFF8, 0x003C, 0xFFD7, 0xFBE0, 0xFFE3,\n    0xF31C, 0xE7A0, 0xE3B2, 0xE03D, 0xDD44, 0xDACC, 0xD8DA, 0xD770,\n    0xD694, 0xD64A, 0x006C, 0x0069, 0x0062, 0x0058, 0x004B, 0x002C,\n    0x0017, 0x0058, 0x0228, 0x005E, 0xF9E1, 0xF4A3, 0xF2BC, 0xF110,\n    0xEFA0, 0xEE6F, 0xED7E, 0xECCF, 0xEC65, 0xEC41, 0xA137, 0x9CB5,\n    0x9284, 0x87A0, 0x8107, 0x86CC, 0x907C, 0x902B, 0x8954, 0x94BE,\n    0xA048, 0xA84D, 0xAB64, 0xAE15, 0xB05E, 0xB23F, 0xB3B7, 0xB4C5,\n    0xB568, 0xB59E, 0x8001, 0x8001, 0x4171, 0x0000, 0xFFFE, 0xFFF9,\n    0xFFF8, 0x0000, 0x0024, 0x0058, 0x0089, 0x00B4, 0x00C7, 0x0091,\n    0x0058, 0x0045, 0x0034, 0x0024, 0x0018, 0x000D, 0x0006, 0x0001,\n    0x0000, 0x0000, 0xFFB7, 0xFF3C, 0xFF23, 0x0000, 0x03CD, 0x093A,\n    0x0E57, 0x12E0, 0x14D5, 0x0F3A, 0x0938, 0x073A, 0x056F, 0x03DC,\n    0x0286, 0x0173, 0x00A8, 0x002B, 0x0000, 0xBF5F, 0xBF5D, 0xBF5A,\n    0xBF5A, 0xBF5F, 0xBF76, 0xBF98, 0xBFB7, 0xBFD3, 0xBFDF, 0xBFBD,\n    0xBF98, 0xBF8C, 0xBF80, 0xBF77, 0xBF6F, 0xBF68, 0xBF63, 0xBF60,\n    0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xFFE4, 0xFFAF, 0xFF92, 0xFF94, 0xFF9A, 0xFFA3,\n    0xFFAF, 0xFFBB, 0xFFC9, 0xFFD7, 0xFFE4, 0xFFEF, 0xFFF8, 0xFFFE,\n    0x0000, 0x0342, 0x0342, 0x0342, 0x0342, 0x0342, 0x0314, 0x02B3,\n    0x0260, 0x0225, 0x01E5, 0x01A3, 0x015F, 0x011C, 0x00DC, 0x00A1,\n    0x006C, 0x003F, 0x001D, 0x0007, 0x0000, 0x1815, 0x1815, 0x1815,\n    0x1815, 0x1815, 0x14BA, 0x0E24, 0x098E, 0x07BE, 0x0603, 0x0461,\n    0x02DB, 0x0175, 0x0032, 0xFF18, 0xFE28, 0xFD67, 0xFCD8, 0xFC80,\n    0xFC62, 0x0000, 0xFFE8, 0xFFAE, 0xFF6C, 0xFF3A, 0xFF22, 0xFF18,\n    0xFF16, 0xFF20, 0xFF34, 0xFF49, 0xFF62, 0xFF7D, 0xFF98, 0xFFB2,\n    0xFFCB, 0xFFE1, 0xFFF1, 0xFFFD, 0x0000, 0xFCBE, 0xFCB5, 0xFCA7,\n    0xFCAB, 0xFCD6, 0xFD4F, 0xFE00, 0xFEA7, 0xFF37, 0xFF90, 0xFFAB,\n    0xFFC1, 0xFFD3, 0xFFE1, 0xFFEC, 0xFFF5, 0xFFFA, 0xFFFE, 0x0000,\n    0x0000, 0x13EC, 0x151D, 0x17EB, 0x1B2D, 0x1DBB, 0x1EE6, 0x1F81,\n    0x20A4, 0x2489, 0x268C, 0x2414, 0x20DA, 0x1D1B, 0x1915, 0x1505,\n    0x1128, 0x0DBC, 0x0AFF, 0x092D, 0x0884, 0x1E68, 0x1E7C, 0x1EEB,\n    0x2004, 0x2212, 0x2654, 0x2E3C, 0x3FE6, 0x4862, 0x4755, 0x448C,\n    0x4295, 0x41F5, 0x417C, 0x4123, 0x40E7, 0x40C0, 0x40AB, 0x40A3,\n    0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_90.inc.c",
    "content": "static const struct Animation anim_90[] = {\n    1,\n    189,\n    0,\n    0,\n    0x0F,\n    ANIMINDEX_NUMPARTS(anim_90_indices),\n    anim_90_values,\n    anim_90_indices,\n    0,\n};\n\n\nstatic const u16 anim_90_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000F, 0x01EB,\n    0x000F, 0x01BE, 0x000F, 0x01CD, 0x000F, 0x01DC,\n    0x000F, 0x0191, 0x000F, 0x01A0, 0x000F, 0x01AF,\n    0x0001, 0x018D, 0x0001, 0x018E, 0x0001, 0x018F,\n    0x000F, 0x003F, 0x000F, 0x004E, 0x000F, 0x005D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000F, 0x0030,\n    0x000F, 0x0003, 0x000F, 0x0012, 0x000F, 0x0021,\n    0x0001, 0x0189, 0x0001, 0x018A, 0x0001, 0x018B,\n    0x000F, 0x008A, 0x000F, 0x0099, 0x000F, 0x00A8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000F, 0x007B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000F, 0x006C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x018C,\n    0x000F, 0x015C, 0x000F, 0x016B, 0x000F, 0x017A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000F, 0x014D,\n    0x000F, 0x0120, 0x000F, 0x012F, 0x000F, 0x013E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0190,\n    0x000F, 0x00F3, 0x000F, 0x0102, 0x000F, 0x0111,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000F, 0x00E4,\n    0x000F, 0x00B7, 0x000F, 0x00C6, 0x000F, 0x00D5,\n};\n\nstatic const s16 anim_90_values[] = {\n    0x0000, 0x0036, 0x3FFF, 0xFF8A, 0xFF8C, 0xFF91, 0xFF98, 0xFFA2,\n    0xFFAD, 0xFFB9, 0xFFC5, 0xFFD2, 0xFFDE, 0xFFE9, 0xFFF3, 0xFFFA,\n    0xFFFF, 0x0000, 0xF980, 0xF980, 0xF980, 0xF97F, 0xF97F, 0xF97F,\n    0xF97E, 0xF97E, 0xF97D, 0xF97D, 0xF97D, 0xF97C, 0xF97C, 0xF97C,\n    0xF97C, 0xF06F, 0xF064, 0xF046, 0xF018, 0xEFDC, 0xEF97, 0xEF4C,\n    0xEEFD, 0xEEAF, 0xEE63, 0xEE1E, 0xEDE3, 0xEDB5, 0xED96, 0xED8C,\n    0xD60A, 0xD61E, 0xD656, 0xD6AC, 0xD71B, 0xD79B, 0xD828, 0xD8BB,\n    0xD94D, 0xD9DA, 0xDA5B, 0xDAC9, 0xDB20, 0xDB58, 0xDB6C, 0xA150,\n    0x9F9F, 0x9AE4, 0x93A0, 0x8A54, 0x7F80, 0x73AC, 0x6756, 0x5B00,\n    0x4F2C, 0x445B, 0x3B10, 0x33CC, 0x2F10, 0x2D60, 0xCC95, 0xCC8F,\n    0xCC7E, 0xCC64, 0xCC42, 0xCC1B, 0xCBF0, 0xCBC4, 0xCB97, 0xCB6D,\n    0xCB46, 0xCB24, 0xCB0A, 0xCAF9, 0xCAF3, 0x4B26, 0x4BFF, 0x4E5E,\n    0x5203, 0x56AD, 0x5C19, 0x6208, 0x6838, 0x6E68, 0x7457, 0x79C3,\n    0x7E6D, 0x8215, 0x8474, 0x854D, 0xED8C, 0xEDA8, 0xEDF9, 0xEE76,\n    0xEF14, 0xEFCD, 0xF098, 0xF16A, 0xF23D, 0xF308, 0xF3C0, 0xF45F,\n    0xF4DC, 0xF52C, 0xF549, 0xDBBE, 0xDC0F, 0xDCF1, 0xDE4D, 0xE00A,\n    0xE210, 0xE446, 0xE695, 0xE8E4, 0xEB1A, 0xED20, 0xEEDD, 0xF039,\n    0xF11B, 0xF16C, 0x3127, 0x332B, 0x38CF, 0x4179, 0x4C8D, 0x5972,\n    0x678C, 0x7641, 0x84F9, 0x9313, 0x9FF8, 0xAB0C, 0xB3B6, 0xB95A,\n    0xBB5D, 0x319A, 0x319C, 0x31A2, 0x31AA, 0x31B5, 0x31C2, 0x31D0,\n    0x31DE, 0x31ED, 0x31FA, 0x3207, 0x3212, 0x321A, 0x3220, 0x3222,\n    0x18A1, 0x195D, 0x1B6C, 0x1E94, 0x229E, 0x2752, 0x2C76, 0x31D3,\n    0x3730, 0x3C54, 0x4108, 0x4512, 0x483B, 0x4A4A, 0x4B06, 0x001B,\n    0x0019, 0x0013, 0x0009, 0xFFFE, 0xFFEF, 0xFFDF, 0xFFCF, 0xFFBE,\n    0xFFAE, 0xFFA0, 0xFF93, 0xFF8A, 0xFF83, 0xFF81, 0x025B, 0x0250,\n    0x0231, 0x0201, 0x01C3, 0x017B, 0x012D, 0x00DB, 0x0089, 0x003B,\n    0xFFF4, 0xFFB6, 0xFF86, 0xFF67, 0xFF5B, 0xCB25, 0xCB85, 0xCC90,\n    0xCE2B, 0xD038, 0xD29B, 0xD538, 0xD7F1, 0xDAAA, 0xDD47, 0xDFAA,\n    0xE1B7, 0xE352, 0xE45D, 0xE4BD, 0x0640, 0x067B, 0x0721, 0x0820,\n    0x0966, 0x0AE2, 0x0C81, 0x0E32, 0x0FE3, 0x1182, 0x12FD, 0x1443,\n    0x1542, 0x15E8, 0x1624, 0xFFC5, 0xFFF8, 0x0083, 0x015B, 0x026F,\n    0x03B0, 0x050F, 0x067D, 0x07EC, 0x094B, 0x0A8C, 0x0BA0, 0x0C78,\n    0x0D04, 0x0D37, 0xFEB1, 0xFECF, 0xFF21, 0xFF9F, 0x0040, 0x00FD,\n    0x01CB, 0x02A1, 0x0378, 0x0446, 0x0503, 0x05A4, 0x0623, 0x0675,\n    0x0693, 0x9C21, 0x9C7C, 0x9D7B, 0x9F03, 0xA0F9, 0xA340, 0xA5BE,\n    0xA858, 0xAAF2, 0xAD70, 0xAFB7, 0xB1AD, 0xB335, 0xB434, 0xB48F,\n    0x0095, 0x0093, 0x008D, 0x0083, 0x0077, 0x0069, 0x005A, 0x004A,\n    0x003A, 0x002B, 0x001D, 0x0011, 0x0008, 0x0002, 0x0000, 0xFF09,\n    0xFF0C, 0xFF17, 0xFF26, 0xFF3A, 0xFF51, 0xFF6A, 0xFF85, 0xFF9F,\n    0xFFB8, 0xFFCF, 0xFFE3, 0xFFF3, 0xFFFD, 0x0000, 0xCC42, 0xCC8D,\n    0xCD5E, 0xCE9F, 0xD039, 0xD217, 0xD421, 0xD641, 0xD862, 0xDA6C,\n    0xDC4A, 0xDDE4, 0xDF25, 0xDFF6, 0xE041, 0x09C7, 0x0ABF, 0x0D76,\n    0x11A2, 0x16F8, 0x1D2E, 0x23F8, 0x2B0D, 0x3222, 0x38ED, 0x3F22,\n    0x4478, 0x48A4, 0x4B5B, 0x4C54, 0x0000, 0x0000, 0x0000, 0x0001,\n    0x0003, 0x0004, 0x0006, 0x0007, 0x0009, 0x000A, 0x000C, 0x000D,\n    0x000E, 0x000F, 0x000F, 0x006C, 0x001D, 0xFF41, 0xFDEE, 0xFC3D,\n    0xFA45, 0xF81D, 0xF5DE, 0xF39F, 0xF177, 0xEF7F, 0xEDCE, 0xEC7B,\n    0xEB9E, 0xEB50, 0xA137, 0xA08A, 0x9EA6, 0x9BBE, 0x9807, 0x93B5,\n    0x8EFB, 0x8A0C, 0x851E, 0x8064, 0x7C0F, 0x7858, 0x7570, 0x738C,\n    0x72DF, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171,\n    0xBF5F, 0x0000, 0xFFE1, 0xFF89, 0xFF01, 0xFE53, 0xFD89, 0xFCAC,\n    0xFBC6, 0xFADF, 0xFA02, 0xF938, 0xF88B, 0xF803, 0xF7AB, 0xF78B,\n    0x0342, 0x0345, 0x034F, 0x035E, 0x0371, 0x0387, 0x039F, 0x03B8,\n    0x03D2, 0x03EA, 0x0400, 0x0413, 0x0422, 0x042B, 0x042F, 0x1815,\n    0x1820, 0x183D, 0x186A, 0x18A4, 0x18E8, 0x1931, 0x197E, 0x19CB,\n    0x1A15, 0x1A58, 0x1A92, 0x1ABF, 0x1ADD, 0x1AE7, 0x0000, 0x0024,\n    0x008A, 0x0126, 0x01ED, 0x02D6, 0x03D4, 0x04DD, 0x05E6, 0x06E5,\n    0x07CD, 0x0895, 0x0931, 0x0997, 0x09BB, 0xFCBE, 0xFCCD, 0xFCF7,\n    0xFD37, 0xFD89, 0xFDE9, 0xFE51, 0xFEBE, 0xFF2C, 0xFF94, 0xFFF4,\n    0x0045, 0x0085, 0x00AF, 0x00BE, 0x13EC, 0x13A1, 0x12CE, 0x118A,\n    0x0FEC, 0x0E0A, 0x0BFA, 0x09D4, 0x07AF, 0x059F, 0x03BD, 0x021F,\n    0x00DB, 0x0008, 0xFFBE, 0x1E69, 0x1EFF, 0x2075, 0x22A4, 0x2567,\n    0x2899, 0x2C14, 0x2FB3, 0x3350, 0x36C5, 0x39EE, 0x3CA4, 0x3EC2,\n    0x4023, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_91.inc.c",
    "content": "static const struct Animation anim_91[] = {\n    0,\n    189,\n    0,\n    0,\n    0x08,\n    ANIMINDEX_NUMPARTS(anim_91_indices),\n    anim_91_values,\n    anim_91_indices,\n    0,\n};\n\n\nstatic const u16 anim_91_indices[] = {\n    0x0001, 0x0000, 0x0008, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0009, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0084,\n    0x0001, 0x0000, 0x0001, 0x0082, 0x0001, 0x0083,\n    0x0008, 0x006A, 0x0008, 0x0072, 0x0008, 0x007A,\n    0x0001, 0x0066, 0x0001, 0x0067, 0x0001, 0x0068,\n    0x0008, 0x0015, 0x0008, 0x001D, 0x0008, 0x0025,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x000D,\n    0x0001, 0x000A, 0x0001, 0x000B, 0x0001, 0x000C,\n    0x0001, 0x0062, 0x0001, 0x0063, 0x0001, 0x0064,\n    0x0008, 0x003D, 0x0008, 0x0045, 0x0008, 0x004D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x0035,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x002D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0065,\n    0x0001, 0x0000, 0x0001, 0x0060, 0x0001, 0x0061,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x005F,\n    0x0001, 0x005C, 0x0001, 0x005D, 0x0001, 0x005E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0069,\n    0x0001, 0x0059, 0x0001, 0x005A, 0x0001, 0x005B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0058,\n    0x0001, 0x0055, 0x0001, 0x0056, 0x0001, 0x0057,\n};\n\nstatic const s16 anim_91_values[] = {\n    0x0000, 0x0036, 0x0037, 0x003B, 0x003C, 0x003B, 0x0039, 0x0037,\n    0x0036, 0x3FFF, 0xFF8A, 0xF980, 0xF06F, 0xD60A, 0xD19A, 0xC95D,\n    0xC4ED, 0xC752, 0xCCBA, 0xD278, 0xD5DE, 0xA150, 0xA55B, 0xACDC,\n    0xB0E7, 0xAEB8, 0xA9CB, 0xA490, 0xA177, 0xCC95, 0xCFC7, 0xD5B6,\n    0xD8E8, 0xD72E, 0xD349, 0xCF27, 0xCCB4, 0x4B26, 0x46B3, 0x3E70,\n    0x39FD, 0x3C65, 0x41D0, 0x4791, 0x4AFA, 0xED8C, 0xECB3, 0xEB21,\n    0xEA49, 0xEABE, 0xEBC6, 0xECDD, 0xED83, 0xDBBE, 0xD6C7, 0xCD8F,\n    0xC898, 0xCB46, 0xD153, 0xD7BF, 0xDB8D, 0x3127, 0x3220, 0x33EE,\n    0x34E7, 0x3460, 0x3331, 0x31F0, 0x3131, 0x319A, 0x2DEE, 0x271C,\n    0x2370, 0x256C, 0x29E5, 0x2EA6, 0x3176, 0x18A1, 0x1AB3, 0x1E8A,\n    0x209C, 0x1F7E, 0x1CF8, 0x1A4B, 0x18B5, 0x001B, 0x025B, 0xCB25,\n    0x0640, 0xFFC5, 0xFEB1, 0x9C21, 0x0095, 0xFF09, 0xCC42, 0x09C7,\n    0x006C, 0xA137, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001,\n    0x4171, 0xBF5F, 0x0000, 0x001C, 0x0053, 0x007A, 0x0070, 0x0048,\n    0x001C, 0x0001, 0x0342, 0x033E, 0x0338, 0x0333, 0x0334, 0x0338,\n    0x033E, 0x0342, 0x1815, 0x18E8, 0x1A85, 0x1BA8, 0x1B61, 0x1A3C,\n    0x18EC, 0x1820, 0xFCBE, 0x13EC, 0x1E68,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_92.inc.c",
    "content": "static const struct Animation anim_92[] = {\n    0,\n    189,\n    27,\n    0,\n    0x74,\n    ANIMINDEX_NUMPARTS(anim_92_indices),\n    anim_92_values,\n    anim_92_indices,\n    0,\n};\n\n\nstatic const u16 anim_92_indices[] = {\n    0x0001, 0x0000, 0x0074, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0075, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0074, 0x0A7C,\n    0x0074, 0x0920, 0x0074, 0x0994, 0x0074, 0x0A08,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0074, 0x08AC,\n    0x0001, 0x08A8, 0x0001, 0x08A9, 0x0001, 0x08AA,\n    0x0074, 0x00ED, 0x0074, 0x0161, 0x0074, 0x01D5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0074, 0x0079,\n    0x0001, 0x0076, 0x0001, 0x0077, 0x0001, 0x0078,\n    0x0001, 0x08A4, 0x0001, 0x08A5, 0x0001, 0x08A6,\n    0x0074, 0x02C0, 0x0074, 0x0334, 0x0074, 0x03A8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0074, 0x024C,\n    0x0001, 0x0249, 0x0001, 0x024A, 0x0001, 0x024B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x08A7,\n    0x0074, 0x0748, 0x0074, 0x07BC, 0x0074, 0x0830,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0074, 0x06D4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0074, 0x0660,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x08AB,\n    0x0074, 0x0504, 0x0074, 0x0578, 0x0074, 0x05EC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0074, 0x0490,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0074, 0x041C,\n};\n\nstatic const s16 anim_92_values[] = {\n    0x0000, 0x00CC, 0x00CB, 0x00CB, 0x00CB, 0x00CA, 0x00CA, 0x00C9,\n    0x00C9, 0x00C8, 0x00C7, 0x00C6, 0x00C5, 0x00C4, 0x00C3, 0x00C2,\n    0x00C0, 0x00BF, 0x00BE, 0x00BD, 0x00BC, 0x00BB, 0x00B9, 0x00B8,\n    0x00B7, 0x00B6, 0x00B5, 0x00B4, 0x00B4, 0x00B3, 0x00B2, 0x00B2,\n    0x00B1, 0x00B1, 0x00B1, 0x00B1, 0x00B1, 0x00B1, 0x00B2, 0x00B3,\n    0x00B3, 0x00B4, 0x00B5, 0x00B5, 0x00B6, 0x00B7, 0x00B8, 0x00B8,\n    0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, 0x00C0,\n    0x00C1, 0x00C1, 0x00C2, 0x00C2, 0x00C2, 0x00C2, 0x00C1, 0x00C1,\n    0x00C0, 0x00BF, 0x00BF, 0x00BE, 0x00BD, 0x00BC, 0x00BB, 0x00BA,\n    0x00B9, 0x00B8, 0x00B7, 0x00B6, 0x00B5, 0x00B4, 0x00B3, 0x00B2,\n    0x00B2, 0x00B1, 0x00B0, 0x00B0, 0x00AF, 0x00AF, 0x00AE, 0x00AE,\n    0x00AE, 0x00AF, 0x00AF, 0x00AF, 0x00B0, 0x00B1, 0x00B2, 0x00B3,\n    0x00B5, 0x00B6, 0x00B7, 0x00B9, 0x00BA, 0x00BC, 0x00BD, 0x00BF,\n    0x00C0, 0x00C1, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, 0x00C8,\n    0x00C9, 0x00CA, 0x00CB, 0x00CB, 0x00CB, 0x3FFF, 0xFC68, 0x01E7,\n    0xF112, 0xCB20, 0xCB12, 0xCAEC, 0xCAAD, 0xCA58, 0xC9EF, 0xC973,\n    0xC8E7, 0xC84B, 0xC7A3, 0xC6EE, 0xC631, 0xC56B, 0xC49F, 0xC3CF,\n    0xC2FC, 0xC228, 0xC155, 0xC084, 0xBFB8, 0xBEF3, 0xBE35, 0xBD81,\n    0xBCD8, 0xBC3C, 0xBBB0, 0xBB34, 0xBACB, 0xBA76, 0xBA38, 0xBA11,\n    0xBA03, 0xBA14, 0xBA43, 0xBA8F, 0xBAF6, 0xBB74, 0xBC08, 0xBCB0,\n    0xBD68, 0xBE2E, 0xBF00, 0xBFDC, 0xC0BF, 0xC1A7, 0xC292, 0xC37C,\n    0xC464, 0xC547, 0xC623, 0xC6F5, 0xC7BB, 0xC873, 0xC91B, 0xC9AF,\n    0xCA2D, 0xCA94, 0xCAE0, 0xCB10, 0xCB20, 0xCB0A, 0xCACA, 0xCA64,\n    0xC9DB, 0xC935, 0xC873, 0xC79B, 0xC6B0, 0xC5B6, 0xC4B0, 0xC3A3,\n    0xC292, 0xC180, 0xC073, 0xBF6D, 0xBE73, 0xBD88, 0xBCB0, 0xBBEE,\n    0xBB48, 0xBABF, 0xBA59, 0xBA19, 0xBA03, 0xBA10, 0xBA34, 0xBA70,\n    0xBABF, 0xBB23, 0xBB98, 0xBC1C, 0xBCB0, 0xBD50, 0xBDFB, 0xBEB0,\n    0xBF6D, 0xC031, 0xC0F9, 0xC1C4, 0xC292, 0xC35F, 0xC42A, 0xC4F2,\n    0xC5B6, 0xC673, 0xC728, 0xC7D3, 0xC873, 0xC907, 0xC98C, 0xCA00,\n    0xCA64, 0xCAB4, 0xCAEF, 0xCB13, 0xCB20, 0xF569, 0xF55D, 0xF53A,\n    0xF502, 0xF4B7, 0xF459, 0xF3EB, 0xF36E, 0xF2E3, 0xF24D, 0xF1AC,\n    0xF103, 0xF052, 0xEF9C, 0xEEE2, 0xEE26, 0xED69, 0xECAD, 0xEBF3,\n    0xEB3C, 0xEA8C, 0xE9E2, 0xE941, 0xE8AA, 0xE81F, 0xE7A1, 0xE733,\n    0xE6D4, 0xE688, 0xE64F, 0xE62B, 0xE61F, 0xE62C, 0xE656, 0xE698,\n    0xE6F3, 0xE762, 0xE7E5, 0xE879, 0xE91C, 0xE9CB, 0xEA85, 0xEB48,\n    0xEC11, 0xECDE, 0xEDAD, 0xEE7D, 0xEF4A, 0xF012, 0xF0D5, 0xF18E,\n    0xF23D, 0xF2DF, 0xF372, 0xF3F4, 0xF463, 0xF4BC, 0xF4FD, 0xF525,\n    0xF532, 0xF51B, 0xF4DF, 0xF480, 0xF403, 0xF36A, 0xF2B9, 0xF1F3,\n    0xF11D, 0xF039, 0xEF4A, 0xEE55, 0xED5D, 0xEC64, 0xEB70, 0xEA82,\n    0xE99F, 0xE8CA, 0xE806, 0xE757, 0xE6C0, 0xE645, 0xE5E9, 0xE5B0,\n    0xE59D, 0xE5A9, 0xE5CC, 0xE603, 0xE64D, 0xE6AA, 0xE716, 0xE791,\n    0xE819, 0xE8AD, 0xE94B, 0xE9F2, 0xEAA1, 0xEB55, 0xEC0E, 0xECCA,\n    0xED87, 0xEE44, 0xEEFF, 0xEFB8, 0xF06C, 0xF11A, 0xF1C1, 0xF25F,\n    0xF2F3, 0xF37A, 0xF3F5, 0xF460, 0xF4BC, 0xF505, 0xF53C, 0xF55E,\n    0xF569, 0xDFE8, 0xDFF3, 0xE011, 0xE042, 0xE084, 0xE0D6, 0xE136,\n    0xE1A3, 0xE21C, 0xE2A0, 0xE32C, 0xE3BF, 0xE459, 0xE4F7, 0xE599,\n    0xE63D, 0xE6E1, 0xE784, 0xE826, 0xE8C3, 0xE95C, 0xE9EE, 0xEA79,\n    0xEAFB, 0xEB72, 0xEBDD, 0xEC3B, 0xEC8B, 0xECCA, 0xECF8, 0xED13,\n    0xED1B, 0xED0A, 0xECE1, 0xECA2, 0xEC4D, 0xEBE6, 0xEB6E, 0xEAE6,\n    0xEA51, 0xE9B1, 0xE908, 0xE856, 0xE79F, 0xE6E4, 0xE627, 0xE56A,\n    0xE4AF, 0xE3F7, 0xE345, 0xE29B, 0xE1F9, 0xE163, 0xE0DA, 0xE060,\n    0xDFF6, 0xDFA0, 0xDF5E, 0xDF32, 0xDF1F, 0xDF29, 0xDF53, 0xDF9A,\n    0xDFFB, 0xE074, 0xE100, 0xE19E, 0xE24B, 0xE304, 0xE3C5, 0xE48D,\n    0xE558, 0xE623, 0xE6EC, 0xE7AF, 0xE86B, 0xE91B, 0xE9BE, 0xEA50,\n    0xEACE, 0xEB36, 0xEB85, 0xEBB8, 0xEBCC, 0xEBC7, 0xEBB0, 0xEB8A,\n    0xEB55, 0xEB11, 0xEAC2, 0xEA66, 0xEA01, 0xE992, 0xE91B, 0xE89E,\n    0xE81A, 0xE792, 0xE706, 0xE678, 0xE5E9, 0xE559, 0xE4CB, 0xE43F,\n    0xE3B6, 0xE331, 0xE2B2, 0xE23A, 0xE1C9, 0xE162, 0xE105, 0xE0B2,\n    0xE06D, 0xE035, 0xE00B, 0xDFF1, 0xDFE8, 0xDA71, 0xDA77, 0xDA88,\n    0xDAA3, 0xDAC8, 0xDAF6, 0xDB2B, 0xDB68, 0xDBAB, 0xDBF4, 0xDC42,\n    0xDC95, 0xDCEB, 0xDD43, 0xDD9E, 0xDDF9, 0xDE55, 0xDEB1, 0xDF0C,\n    0xDF64, 0xDFBA, 0xE00D, 0xE05C, 0xE0A5, 0xE0E9, 0xE127, 0xE15D,\n    0xE18C, 0xE1B2, 0xE1CE, 0xE1E0, 0xE1E7, 0xE1E1, 0xE1CE, 0xE1AE,\n    0xE183, 0xE14D, 0xE10E, 0xE0C7, 0xE078, 0xE023, 0xDFCA, 0xDF6C,\n    0xDF0B, 0xDEA8, 0xDE44, 0xDDE1, 0xDD7E, 0xDD1E, 0xDCC1, 0xDC69,\n    0xDC16, 0xDBC9, 0xDB84, 0xDB47, 0xDB15, 0xDAEC, 0xDAD0, 0xDAC0,\n    0xDABE, 0xDACE, 0xDAF1, 0xDB26, 0xDB6B, 0xDBBD, 0xDC1C, 0xDC86,\n    0xDCF8, 0xDD71, 0xDDEF, 0xDE71, 0xDEF4, 0xDF76, 0xDFF7, 0xE074,\n    0xE0EB, 0xE15B, 0xE1C1, 0xE21C, 0xE26B, 0xE2AB, 0xE2DA, 0xE2F7,\n    0xE301, 0xE2F9, 0xE2E6, 0xE2C7, 0xE29E, 0xE26C, 0xE231, 0xE1EE,\n    0xE1A4, 0xE154, 0xE0FE, 0xE0A3, 0xE045, 0xDFE3, 0xDF7F, 0xDF1A,\n    0xDEB3, 0xDE4D, 0xDDE8, 0xDD84, 0xDD23, 0xDCC5, 0xDC6B, 0xDC15,\n    0xDBC6, 0xDB7C, 0xDB3A, 0xDB00, 0xDACF, 0xDAA7, 0xDA8A, 0xDA78,\n    0xDA71, 0x1064, 0xF5CB, 0xDFBE, 0xD126, 0xD11D, 0xD103, 0xD0D9,\n    0xD0A1, 0xD05B, 0xD008, 0xCFAA, 0xCF43, 0xCED2, 0xCE5A, 0xCDDC,\n    0xCD58, 0xCCD0, 0xCC45, 0xCBB8, 0xCB2B, 0xCA9E, 0xCA14, 0xC98C,\n    0xC908, 0xC889, 0xC811, 0xC7A1, 0xC739, 0xC6DB, 0xC689, 0xC643,\n    0xC60A, 0xC5E0, 0xC5C6, 0xC5BE, 0xC5C8, 0xC5E8, 0xC61B, 0xC65F,\n    0xC6B4, 0xC716, 0xC786, 0xC800, 0xC885, 0xC911, 0xC9A4, 0xCA3B,\n    0xCAD6, 0xCB72, 0xCC0E, 0xCCA9, 0xCD40, 0xCDD3, 0xCE5F, 0xCEE3,\n    0xCF5E, 0xCFCD, 0xD030, 0xD084, 0xD0C9, 0xD0FB, 0xD11B, 0xD126,\n    0xD11B, 0xD0FB, 0xD0C9, 0xD084, 0xD030, 0xCFCD, 0xCF5E, 0xCEE3,\n    0xCE5F, 0xCDD3, 0xCD40, 0xCCA9, 0xCC0E, 0xCB72, 0xCAD6, 0xCA3B,\n    0xC9A4, 0xC911, 0xC885, 0xC800, 0xC786, 0xC716, 0xC6B4, 0xC65F,\n    0xC61B, 0xC5E8, 0xC5C8, 0xC5BE, 0xC5C8, 0xC5E8, 0xC61A, 0xC65F,\n    0xC6B3, 0xC715, 0xC784, 0xC7FE, 0xC882, 0xC90E, 0xC9A0, 0xCA37,\n    0xCAD1, 0xCB6D, 0xCC08, 0xCCA3, 0xCD3A, 0xCDCC, 0xCE59, 0xCEDD,\n    0xCF58, 0xCFC8, 0xD02B, 0xD080, 0xD0C5, 0xD0F9, 0xD11A, 0xD126,\n    0x14F5, 0x14FC, 0x1510, 0x1530, 0x155B, 0x1591, 0x15D0, 0x1618,\n    0x1667, 0x16BE, 0x171A, 0x177B, 0x17E1, 0x184A, 0x18B6, 0x1923,\n    0x1991, 0x19FF, 0x1A6C, 0x1AD7, 0x1B40, 0x1BA4, 0x1C04, 0x1C5F,\n    0x1CB3, 0x1D01, 0x1D46, 0x1D82, 0x1DB5, 0x1DDD, 0x1DF9, 0x1E09,\n    0x1E0B, 0x1E00, 0x1DE8, 0x1DC4, 0x1D95, 0x1D5D, 0x1D1C, 0x1CD4,\n    0x1C85, 0x1C30, 0x1BD7, 0x1B7B, 0x1B1C, 0x1ABC, 0x1A5B, 0x19FB,\n    0x199D, 0x1941, 0x18E9, 0x1896, 0x1849, 0x1803, 0x17C4, 0x178F,\n    0x1763, 0x1743, 0x172E, 0x1726, 0x172C, 0x173F, 0x175E, 0x1788,\n    0x17BC, 0x17F9, 0x183D, 0x1889, 0x18DA, 0x1930, 0x1989, 0x19E6,\n    0x1A44, 0x1AA3, 0x1B01, 0x1B5E, 0x1BB9, 0x1C11, 0x1C64, 0x1CB1,\n    0x1CF8, 0x1D38, 0x1D6F, 0x1D9C, 0x1DBF, 0x1DD7, 0x1DE1, 0x1DDF,\n    0x1DCD, 0x1DAC, 0x1D7E, 0x1D43, 0x1CFD, 0x1CAD, 0x1C54, 0x1BF3,\n    0x1B8C, 0x1B1F, 0x1AAD, 0x1A39, 0x19C2, 0x194B, 0x18D4, 0x185E,\n    0x17EB, 0x177C, 0x1712, 0x16AE, 0x1651, 0x15FD, 0x15B2, 0x1572,\n    0x153E, 0x1517, 0x14FF, 0x14F5, 0x2447, 0x243E, 0x2424, 0x23FA,\n    0x23C1, 0x237B, 0x2327, 0x22C7, 0x225D, 0x21E8, 0x216B, 0x20E7,\n    0x205B, 0x1FCA, 0x1F35, 0x1E9C, 0x1E00, 0x1D63, 0x1CC5, 0x1C28,\n    0x1B8D, 0x1AF4, 0x1A5F, 0x19CE, 0x1944, 0x18C0, 0x1844, 0x17D1,\n    0x1768, 0x170A, 0x16B8, 0x1673, 0x1639, 0x1607, 0x15DB, 0x15B7,\n    0x1598, 0x1580, 0x156D, 0x155F, 0x1556, 0x1552, 0x1551, 0x1553,\n    0x1558, 0x1560, 0x156B, 0x1577, 0x1584, 0x1592, 0x15A1, 0x15B0,\n    0x15BE, 0x15CC, 0x15D8, 0x15E3, 0x15EC, 0x15F3, 0x15F6, 0x15F7,\n    0x15F3, 0x15EC, 0x15E2, 0x15D5, 0x15C6, 0x15B5, 0x15A3, 0x1590,\n    0x157C, 0x1569, 0x1556, 0x1544, 0x1533, 0x1525, 0x1519, 0x150F,\n    0x1509, 0x1507, 0x1509, 0x1510, 0x151B, 0x152D, 0x1545, 0x1563,\n    0x1588, 0x15B4, 0x15E9, 0x1626, 0x1670, 0x16CB, 0x1736, 0x17AE,\n    0x1832, 0x18C2, 0x195B, 0x19FB, 0x1AA3, 0x1B4F, 0x1BFF, 0x1CB1,\n    0x1D64, 0x1E16, 0x1EC6, 0x1F72, 0x2018, 0x20B8, 0x2150, 0x21DE,\n    0x2262, 0x22D8, 0x2341, 0x239A, 0x23E3, 0x2418, 0x243A, 0x2447,\n    0xD5AB, 0xD5B3, 0xD5CC, 0xD5F4, 0xD62B, 0xD66E, 0xD6BD, 0xD718,\n    0xD77C, 0xD7E9, 0xD85E, 0xD8DA, 0xD95C, 0xD9E2, 0xDA6C, 0xDAF8,\n    0xDB85, 0xDC13, 0xDCA1, 0xDD2C, 0xDDB5, 0xDE3A, 0xDEBA, 0xDF34,\n    0xDFA7, 0xE011, 0xE073, 0xE0CA, 0xE116, 0xE156, 0xE188, 0xE1AC,\n    0xE1C1, 0xE1C8, 0xE1C2, 0xE1B1, 0xE195, 0xE16F, 0xE140, 0xE109,\n    0xE0CB, 0xE087, 0xE03F, 0xDFF2, 0xDFA2, 0xDF51, 0xDEFE, 0xDEAB,\n    0xDE59, 0xDE09, 0xDDBC, 0xDD72, 0xDD2E, 0xDCEF, 0xDCB7, 0xDC87,\n    0xDC5F, 0xDC41, 0xDC2E, 0xDC26, 0xDC2B, 0xDC3B, 0xDC56, 0xDC7A,\n    0xDCA7, 0xDCDC, 0xDD18, 0xDD59, 0xDD9F, 0xDDE8, 0xDE35, 0xDE84,\n    0xDED3, 0xDF23, 0xDF71, 0xDFBE, 0xE007, 0xE04D, 0xE08E, 0xE0C9,\n    0xE0FD, 0xE129, 0xE14D, 0xE167, 0xE176, 0xE17A, 0xE171, 0xE15A,\n    0xE133, 0xE0FC, 0xE0B4, 0xE05E, 0xDFFB, 0xDF8D, 0xDF14, 0xDE93,\n    0xDE0A, 0xDD7B, 0xDCE7, 0xDC51, 0xDBB9, 0xDB20, 0xDA88, 0xD9F3,\n    0xD961, 0xD8D5, 0xD84F, 0xD7D1, 0xD75D, 0xD6F3, 0xD696, 0xD646,\n    0xD605, 0xD5D5, 0xD5B6, 0xD5AB, 0xDC96, 0xDC73, 0xDC0F, 0xDB6D,\n    0xDA92, 0xD982, 0xD843, 0xD6D7, 0xD544, 0xD38E, 0xD1BA, 0xCFCC,\n    0xCDC8, 0xCBB3, 0xC991, 0xC767, 0xC53A, 0xC30D, 0xC0E5, 0xBEC6,\n    0xBCB5, 0xBAB7, 0xB8D0, 0xB704, 0xB557, 0xB3CF, 0xB26F, 0xB13C,\n    0xB03B, 0xAF6F, 0xAEDE, 0xAE8C, 0xAE7F, 0xAEB9, 0xAF33, 0xAFE8,\n    0xB0D4, 0xB1F0, 0xB339, 0xB4A8, 0xB638, 0xB7E3, 0xB9A6, 0xBB7A,\n    0xBD5A, 0xBF41, 0xC129, 0xC30E, 0xC4EA, 0xC6B7, 0xC872, 0xCA13,\n    0xCB97, 0xCCF7, 0xCE2F, 0xCF39, 0xD010, 0xD0AE, 0xD10F, 0xD12E,\n    0xD117, 0xD0DD, 0xD083, 0xD009, 0xCF73, 0xCEC2, 0xCDF7, 0xCD15,\n    0xCC1E, 0xCB13, 0xC9F6, 0xC8CA, 0xC790, 0xC64B, 0xC4FB, 0xC3A3,\n    0xC245, 0xC0E3, 0xBF7E, 0xBE19, 0xBCB5, 0xBB55, 0xB9FA, 0xB8A5,\n    0xB75A, 0xB61A, 0xB4E7, 0xB3C3, 0xB2AF, 0xB1AD, 0xB0C1, 0xAFEA,\n    0xAF2C, 0xAE88, 0xADFF, 0xAD95, 0xAD4B, 0xAD22, 0xAD1E, 0xAD3E,\n    0xADF3, 0xAF93, 0xB1FB, 0xB50B, 0xB8A1, 0xBC99, 0xC0D3, 0xC52D,\n    0xC985, 0xCDB9, 0xD1A7, 0xD52E, 0xD82B, 0xDA7C, 0xDC00, 0xDC95,\n    0x1C69, 0x1C7A, 0x1CAC, 0x1CFB, 0x1D66, 0x1DEC, 0x1E88, 0x1F3A,\n    0x1FFF, 0x20D5, 0x21BA, 0x22AB, 0x23A7, 0x24AA, 0x25B3, 0x26C0,\n    0x27CE, 0x28DC, 0x29E6, 0x2AEB, 0x2BE9, 0x2CDD, 0x2DC5, 0x2E9F,\n    0x2F69, 0x3020, 0x30C2, 0x314E, 0x31C0, 0x3217, 0x3250, 0x326A,\n    0x325A, 0x321A, 0x31B0, 0x311F, 0x306B, 0x2F98, 0x2EAA, 0x2DA4,\n    0x2C8C, 0x2B65, 0x2A33, 0x28FA, 0x27BD, 0x2682, 0x254C, 0x241F,\n    0x22FF, 0x21F0, 0x20F6, 0x2015, 0x1F51, 0x1EAE, 0x1E30, 0x1DDB,\n    0x1DB3, 0x1DBD, 0x1DFB, 0x1E72, 0x1FB5, 0x222B, 0x2599, 0x29C4,\n    0x2E6F, 0x3360, 0x385C, 0x3D26, 0x4184, 0x4539, 0x480C, 0x49BF,\n    0x4AC5, 0x4BB6, 0x4C91, 0x4D57, 0x4E09, 0x4EA6, 0x4F2E, 0x4FA2,\n    0x5002, 0x504D, 0x5085, 0x50AA, 0x50BA, 0x50B8, 0x50A2, 0x507A,\n    0x503E, 0x4FF0, 0x4F90, 0x4F1D, 0x4E98, 0x4E01, 0x4D59, 0x4C9F,\n    0x4BD3, 0x4AF6, 0x4A08, 0x4909, 0x47A2, 0x458E, 0x42E8, 0x3FCB,\n    0x3C52, 0x3897, 0x34B6, 0x30CA, 0x2CED, 0x293A, 0x25CD, 0x22C0,\n    0x202E, 0x1E33, 0x1CE8, 0x1C6A, 0x02E7, 0x02EB, 0x02F6, 0x0308,\n    0x0321, 0x0340, 0x0365, 0x038E, 0x03BD, 0x03F0, 0x0426, 0x0460,\n    0x049C, 0x04DB, 0x051C, 0x055E, 0x05A2, 0x05E5, 0x0629, 0x066D,\n    0x06AF, 0x06F1, 0x0730, 0x076E, 0x07A8, 0x07E0, 0x0813, 0x0843,\n    0x086E, 0x0895, 0x08B5, 0x08D0, 0x08E6, 0x08F9, 0x0908, 0x0914,\n    0x091E, 0x0924, 0x0929, 0x092B, 0x092A, 0x0928, 0x0924, 0x091E,\n    0x0916, 0x090D, 0x0903, 0x08F8, 0x08EC, 0x08DF, 0x08D1, 0x08C3,\n    0x08B5, 0x08A7, 0x0899, 0x088B, 0x087E, 0x0871, 0x0865, 0x085A,\n    0x084F, 0x0843, 0x0835, 0x0827, 0x0818, 0x0808, 0x07F7, 0x07E5,\n    0x07D3, 0x07C1, 0x07AD, 0x079A, 0x0786, 0x0772, 0x075D, 0x0749,\n    0x0734, 0x071F, 0x070B, 0x06F6, 0x06E2, 0x06CE, 0x06BA, 0x06A7,\n    0x0695, 0x0683, 0x0671, 0x0660, 0x064E, 0x063D, 0x062C, 0x0619,\n    0x0607, 0x05F3, 0x05DE, 0x05C8, 0x05B1, 0x0598, 0x057D, 0x0560,\n    0x053F, 0x0517, 0x04EB, 0x04BA, 0x0487, 0x0452, 0x041D, 0x03E9,\n    0x03B6, 0x0387, 0x035B, 0x0335, 0x0315, 0x02FD, 0x02ED, 0x02E7,\n    0x00D0, 0x00D2, 0x00D9, 0x00E5, 0x00F5, 0x0108, 0x011F, 0x0139,\n    0x0156, 0x0175, 0x0197, 0x01BA, 0x01DF, 0x0204, 0x022B, 0x0253,\n    0x027A, 0x02A1, 0x02C8, 0x02EF, 0x0314, 0x0337, 0x0359, 0x0379,\n    0x0397, 0x03B1, 0x03C9, 0x03DD, 0x03EE, 0x03FB, 0x0403, 0x0407,\n    0x0405, 0x03FB, 0x03EC, 0x03D6, 0x03BC, 0x039D, 0x0379, 0x0353,\n    0x032A, 0x02FE, 0x02D1, 0x02A3, 0x0274, 0x0246, 0x0218, 0x01EC,\n    0x01C2, 0x019A, 0x0176, 0x0155, 0x0139, 0x0121, 0x010F, 0x0104,\n    0x00FE, 0x0101, 0x010B, 0x011E, 0x013B, 0x0164, 0x0198, 0x01D6,\n    0x021C, 0x026B, 0x02C0, 0x031B, 0x037B, 0x03DF, 0x0445, 0x04AE,\n    0x0517, 0x0580, 0x05E8, 0x064E, 0x06B1, 0x0710, 0x0769, 0x07BD,\n    0x0809, 0x084D, 0x0889, 0x08BA, 0x08E2, 0x0902, 0x091C, 0x092D,\n    0x0938, 0x093C, 0x0938, 0x092E, 0x091E, 0x0906, 0x08E8, 0x08C4,\n    0x089A, 0x0869, 0x0833, 0x07F7, 0x07AB, 0x0748, 0x06D2, 0x064C,\n    0x05BB, 0x0523, 0x0486, 0x03E9, 0x0351, 0x02C0, 0x023A, 0x01C4,\n    0x0160, 0x0114, 0x00E3, 0x00D0, 0x9BE8, 0x9BFF, 0x9C44, 0x9CB2,\n    0x9D49, 0x9E05, 0x9EE2, 0x9FE0, 0xA0FA, 0xA22F, 0xA37C, 0xA4DD,\n    0xA651, 0xA7D4, 0xA964, 0xAAFF, 0xACA1, 0xAE48, 0xAFF1, 0xB19A,\n    0xB33F, 0xB4DF, 0xB676, 0xB802, 0xB980, 0xBAEE, 0xBC48, 0xBD8D,\n    0xBEB9, 0xBFC9, 0xC0BC, 0xC18E, 0xC24E, 0xC30B, 0xC3C5, 0xC47A,\n    0xC52B, 0xC5D5, 0xC679, 0xC715, 0xC7A9, 0xC834, 0xC8B5, 0xC92B,\n    0xC996, 0xC9F5, 0xCA46, 0xCA8A, 0xCABF, 0xCAE5, 0xCAFB, 0xCB00,\n    0xCAF3, 0xCAD3, 0xCAA0, 0xCA59, 0xC9FD, 0xC98C, 0xC904, 0xC864,\n    0xC79F, 0xC6A8, 0xC583, 0xC435, 0xC2C0, 0xC129, 0xBF74, 0xBDA4,\n    0xBBBD, 0xB9C4, 0xB7BB, 0xB5A7, 0xB38C, 0xB16D, 0xAF4F, 0xAD34,\n    0xAB22, 0xA91B, 0xA724, 0xA541, 0xA374, 0xA1C3, 0xA031, 0x9EC1,\n    0x9D6B, 0x9C22, 0x9AE8, 0x99BE, 0x98A5, 0x979D, 0x96A7, 0x95C5,\n    0x94F8, 0x943F, 0x939D, 0x9312, 0x92A0, 0x9246, 0x9206, 0x91E2,\n    0x91EA, 0x922C, 0x92A0, 0x933D, 0x93FB, 0x94D3, 0x95BC, 0x96AF,\n    0x97A4, 0x9892, 0x9972, 0x9A3C, 0x9AE8, 0x9B6E, 0x9BC6, 0x9BE8,\n    0xDC2E, 0xDC19, 0xDBDD, 0xDB7C, 0xDAF8, 0xDA53, 0xD98E, 0xD8AD,\n    0xD7B1, 0xD69C, 0xD571, 0xD431, 0xD2DF, 0xD17D, 0xD00C, 0xCE90,\n    0xCD09, 0xCB7B, 0xC9E7, 0xC850, 0xC6B6, 0xC51E, 0xC388, 0xC1F7,\n    0xC06D, 0xBEEC, 0xBD77, 0xBC0E, 0xBAB5, 0xB96D, 0xB839, 0xB71A,\n    0xB60E, 0xB513, 0xB432, 0xB371, 0xB2D8, 0xB26F, 0xB23D, 0xB249,\n    0xB28A, 0xB2F7, 0xB393, 0xB462, 0xB568, 0xB6AB, 0xB82E, 0xB9F5,\n    0xBC18, 0xBE9B, 0xC169, 0xC469, 0xC784, 0xCAA3, 0xCDAF, 0xD091,\n    0xD331, 0xD578, 0xD74F, 0xD89E, 0xD91E, 0xD8B5, 0xD796, 0xD5F5,\n    0xD404, 0xD1F5, 0xCFFB, 0xCE49, 0xCCC8, 0xCB40, 0xC9B0, 0xC81B,\n    0xC681, 0xC4E4, 0xC345, 0xC1A4, 0xC003, 0xBE62, 0xBCC3, 0xBB27,\n    0xB98F, 0xB7FC, 0xB66F, 0xB4E9, 0xB342, 0xB19C, 0xB06A, 0xB01E,\n    0xB08A, 0xB12F, 0xB207, 0xB30E, 0xB43D, 0xB590, 0xB700, 0xB887,\n    0xBA34, 0xBC11, 0xBE16, 0xC03D, 0xC27E, 0xC4D0, 0xC72D, 0xC98D,\n    0xCBE8, 0xCE37, 0xD072, 0xD292, 0xD48F, 0xD662, 0xD802, 0xD969,\n    0xDA8F, 0xDB6C, 0xDBF9, 0xDC2D, 0x1F1A, 0x1F4C, 0x1FDB, 0x20C3,\n    0x21FC, 0x237F, 0x2547, 0x274C, 0x2988, 0x2BF4, 0x2E8A, 0x3143,\n    0x3419, 0x3705, 0x3A01, 0x3D05, 0x400B, 0x430E, 0x4605, 0x48EB,\n    0x4BB9, 0x4E68, 0x50F2, 0x5351, 0x557D, 0x5770, 0x5924, 0x5A91,\n    0x5BB2, 0x5C80, 0x5CF4, 0x5D08, 0x5CAE, 0x5BE3, 0x5AB0, 0x591D,\n    0x5733, 0x54F9, 0x5279, 0x4FBA, 0x4CC5, 0x49A2, 0x465A, 0x42F6,\n    0x3F7C, 0x3BF7, 0x386E, 0x34E9, 0x3171, 0x2E0F, 0x2ACA, 0x27AC,\n    0x24BC, 0x2203, 0x1F89, 0x1D57, 0x1B75, 0x19EC, 0x18C3, 0x1803,\n    0x17A9, 0x17A6, 0x17F5, 0x188E, 0x196D, 0x1A8A, 0x1BE0, 0x1D67,\n    0x1F1B, 0x20F3, 0x22EB, 0x24FC, 0x271F, 0x294E, 0x2B84, 0x2DB9,\n    0x2FE8, 0x320A, 0x3419, 0x360E, 0x37E4, 0x3994, 0x3B18, 0x3C69,\n    0x3D81, 0x3E5A, 0x3EEE, 0x3F37, 0x3F36, 0x3EF7, 0x3E7E, 0x3DD0,\n    0x3CF2, 0x3BE8, 0x3AB7, 0x3964, 0x37F3, 0x366A, 0x34CC, 0x331F,\n    0x3167, 0x2FA9, 0x2DEA, 0x2C2E, 0x2A7A, 0x28D3, 0x273E, 0x25BE,\n    0x245A, 0x2316, 0x21F5, 0x20FE, 0x2035, 0x1F9E, 0x1F3E, 0x1F1A,\n    0xFC3A, 0xFC38, 0xFC31, 0xFC25, 0xFC16, 0xFC04, 0xFBEE, 0xFBD5,\n    0xFBBA, 0xFB9D, 0xFB7E, 0xFB5D, 0xFB3C, 0xFB1A, 0xFAF8, 0xFAD6,\n    0xFAB5, 0xFA94, 0xFA75, 0xFA57, 0xFA3B, 0xFA22, 0xFA0B, 0xF9F7,\n    0xF9E7, 0xF9DA, 0xF9D1, 0xF9CD, 0xF9CE, 0xF9D4, 0xF9E0, 0xF9F2,\n    0xFA0B, 0xFA2F, 0xFA5B, 0xFA8F, 0xFACA, 0xFB0C, 0xFB53, 0xFBA0,\n    0xFBF0, 0xFC44, 0xFC9B, 0xFCF3, 0xFD4D, 0xFDA7, 0xFE00, 0xFE58,\n    0xFEAE, 0xFF02, 0xFF52, 0xFF9D, 0xFFE3, 0x0023, 0x005D, 0x008F,\n    0x00BA, 0x00DB, 0x00F3, 0x0100, 0x0103, 0x00FC, 0x00ED, 0x00D5,\n    0x00B6, 0x0090, 0x0064, 0x0032, 0xFFFD, 0xFFC2, 0xFF83, 0xFF42,\n    0xFEFE, 0xFEB9, 0xFE72, 0xFE2B, 0xFDE4, 0xFD9E, 0xFD5A, 0xFD18,\n    0xFCD9, 0xFC9D, 0xFC65, 0xFC32, 0xFC04, 0xFBDC, 0xFBBB, 0xFBA2,\n    0xFB8E, 0xFB7E, 0xFB72, 0xFB6A, 0xFB65, 0xFB63, 0xFB63, 0xFB67,\n    0xFB6C, 0xFB74, 0xFB7D, 0xFB88, 0xFB94, 0xFBA1, 0xFBAF, 0xFBBD,\n    0xFBCC, 0xFBDB, 0xFBEA, 0xFBF8, 0xFC05, 0xFC12, 0xFC1D, 0xFC27,\n    0xFC2F, 0xFC35, 0xFC39, 0xFC3A, 0xFC52, 0xFC4F, 0xFC46, 0xFC36,\n    0xFC22, 0xFC08, 0xFBEA, 0xFBC8, 0xFBA3, 0xFB7A, 0xFB4F, 0xFB21,\n    0xFAF2, 0xFAC1, 0xFA8F, 0xFA5D, 0xFA2B, 0xF9F9, 0xF9C8, 0xF998,\n    0xF96A, 0xF93E, 0xF915, 0xF8EE, 0xF8CC, 0xF8AD, 0xF892, 0xF87D,\n    0xF86C, 0xF861, 0xF85D, 0xF85F, 0xF868, 0xF87A, 0xF893, 0xF8B3,\n    0xF8D9, 0xF904, 0xF935, 0xF96A, 0xF9A3, 0xF9DF, 0xFA1E, 0xFA5E,\n    0xFAA1, 0xFAE3, 0xFB26, 0xFB69, 0xFBAB, 0xFBEB, 0xFC29, 0xFC64,\n    0xFC9C, 0xFCCF, 0xFCFE, 0xFD28, 0xFD4C, 0xFD6A, 0xFD80, 0xFD8F,\n    0xFD97, 0xFD98, 0xFD94, 0xFD8A, 0xFD7C, 0xFD69, 0xFD52, 0xFD37,\n    0xFD19, 0xFCF9, 0xFCD6, 0xFCB1, 0xFC8B, 0xFC63, 0xFC3B, 0xFC13,\n    0xFBEB, 0xFBC4, 0xFB9E, 0xFB7A, 0xFB58, 0xFB38, 0xFB1B, 0xFB01,\n    0xFAEB, 0xFAD9, 0xFACC, 0xFAC3, 0xFABF, 0xFABF, 0xFAC2, 0xFAC9,\n    0xFAD2, 0xFADD, 0xFAEB, 0xFAFB, 0xFB0D, 0xFB20, 0xFB34, 0xFB49,\n    0xFB60, 0xFB76, 0xFB8D, 0xFBA4, 0xFBBA, 0xFBD0, 0xFBE5, 0xFBF9,\n    0xFC0C, 0xFC1D, 0xFC2C, 0xFC39, 0xFC43, 0xFC4B, 0xFC50, 0xFC52,\n    0xBAF6, 0xBADE, 0xBA99, 0xBA29, 0xB992, 0xB8D6, 0xB7F8, 0xB6FA,\n    0xB5E0, 0xB4AC, 0xB361, 0xB202, 0xB092, 0xAF14, 0xAD89, 0xABF6,\n    0xAA5D, 0xA8C0, 0xA723, 0xA588, 0xA3F3, 0xA265, 0xA0E2, 0x9F6D,\n    0x9E08, 0x9CB6, 0x9B7A, 0x9A57, 0x994F, 0x9866, 0x979E, 0x96FA,\n    0x9671, 0x95F9, 0x9590, 0x9536, 0x94EB, 0x94AE, 0x947F, 0x945D,\n    0x9448, 0x943F, 0x9441, 0x944F, 0x9468, 0x948B, 0x94B7, 0x94ED,\n    0x952B, 0x9571, 0x95C0, 0x9615, 0x9671, 0x96D3, 0x973B, 0x97A9,\n    0x981B, 0x9891, 0x990A, 0x9987, 0x9A10, 0x9AAB, 0x9B57, 0x9C14,\n    0x9CDF, 0x9DB8, 0x9E9D, 0x9F8C, 0xA084, 0xA184, 0xA28B, 0xA397,\n    0xA4A6, 0xA5B8, 0xA6CB, 0xA7DD, 0xA8ED, 0xA9FB, 0xAB03, 0xAC06,\n    0xAD01, 0xADF4, 0xAEDD, 0xAFBA, 0xB08A, 0xB14C, 0xB1FF, 0xB2A1,\n    0xB336, 0xB3C7, 0xB452, 0xB4D7, 0xB557, 0xB5D1, 0xB646, 0xB6B6,\n    0xB720, 0xB784, 0xB7E3, 0xB83D, 0xB891, 0xB8E0, 0xB929, 0xB96D,\n    0xB9AC, 0xB9E5, 0xBA18, 0xBA46, 0xBA6F, 0xBA93, 0xBAB0, 0xBAC9,\n    0xBADC, 0xBAEA, 0xBAF2, 0xBAF6, 0x7FFF, 0x7FFF, 0x4171, 0xC5E4,\n    0x7FFF, 0x7FFF, 0x4171, 0xBF5F, 0x0E42, 0x0E34, 0x0E0A, 0x0DC7,\n    0x0D6C, 0x0CFB, 0x0C77, 0x0BE0, 0x0B3A, 0x0A85, 0x09C4, 0x08F9,\n    0x0825, 0x074A, 0x066B, 0x0589, 0x04A6, 0x03C4, 0x02E4, 0x020A,\n    0x0136, 0x006B, 0xFFAB, 0xFEF6, 0xFE4F, 0xFDB9, 0xFD34, 0xFCC4,\n    0xFC69, 0xFC26, 0xFBFC, 0xFBEE, 0xFBFF, 0xFC32, 0xFC84, 0xFCF1,\n    0xFD79, 0xFE18, 0xFECB, 0xFF90, 0x0064, 0x0145, 0x0230, 0x0324,\n    0x041C, 0x0517, 0x0612, 0x070B, 0x07FE, 0x08EA, 0x09CB, 0x0AA0,\n    0x0B65, 0x0C18, 0x0CB6, 0x0D3E, 0x0DAC, 0x0DFE, 0x0E30, 0x0E42,\n    0x0E30, 0x0DFC, 0x0DA9, 0x0D38, 0x0CAE, 0x0C0B, 0x0B54, 0x0A8B,\n    0x09B2, 0x08CB, 0x07DA, 0x06E2, 0x05E4, 0x04E3, 0x03E3, 0x02E5,\n    0x01EC, 0x00FB, 0x0015, 0xFF3C, 0xFE73, 0xFDBC, 0xFD1A, 0xFC8F,\n    0xFC1F, 0xFBCB, 0xFB97, 0xFB85, 0xFB97, 0xFBCB, 0xFC1F, 0xFC8F,\n    0xFD1A, 0xFDBC, 0xFE73, 0xFF3C, 0x0015, 0x00FB, 0x01EC, 0x02E5,\n    0x03E3, 0x04E3, 0x05E4, 0x06E2, 0x07DA, 0x08CB, 0x09B2, 0x0A8B,\n    0x0B54, 0x0C0B, 0x0CAE, 0x0D38, 0x0DA9, 0x0DFC, 0x0E30, 0x0E42,\n    0xFF1F, 0xFF20, 0xFF21, 0xFF23, 0xFF26, 0xFF29, 0xFF2E, 0xFF32,\n    0xFF38, 0xFF3E, 0xFF44, 0xFF4B, 0xFF53, 0xFF5B, 0xFF63, 0xFF6B,\n    0xFF74, 0xFF7D, 0xFF87, 0xFF90, 0xFF9A, 0xFFA3, 0xFFAD, 0xFFB7,\n    0xFFC1, 0xFFCA, 0xFFD4, 0xFFDD, 0xFFE6, 0xFFEF, 0xFFF8, 0x0000,\n    0x0008, 0x0012, 0x001C, 0x0028, 0x0033, 0x003F, 0x004C, 0x0059,\n    0x0065, 0x0072, 0x007F, 0x008B, 0x0097, 0x00A3, 0x00AE, 0x00B9,\n    0x00C2, 0x00CB, 0x00D2, 0x00D9, 0x00DE, 0x00E2, 0x00E5, 0x00E5,\n    0x00E5, 0x00E4, 0x00E2, 0x00DF, 0x00DB, 0x00D7, 0x00D2, 0x00CD,\n    0x00C7, 0x00C0, 0x00B9, 0x00B2, 0x00AA, 0x00A2, 0x009A, 0x0091,\n    0x0088, 0x007F, 0x0075, 0x006C, 0x0062, 0x0059, 0x004F, 0x0046,\n    0x003C, 0x0033, 0x002A, 0x0021, 0x0018, 0x000F, 0x0007, 0x0000,\n    0xFFF9, 0xFFF0, 0xFFE7, 0xFFDE, 0xFFD4, 0xFFCA, 0xFFBF, 0xFFB5,\n    0xFFAA, 0xFFA0, 0xFF95, 0xFF8A, 0xFF80, 0xFF75, 0xFF6B, 0xFF62,\n    0xFF58, 0xFF50, 0xFF47, 0xFF40, 0xFF39, 0xFF32, 0xFF2D, 0xFF28,\n    0xFF24, 0xFF22, 0xFF20, 0xFF1F, 0x03FA, 0x03F8, 0x03F2, 0x03E8,\n    0x03DA, 0x03C9, 0x03B5, 0x039E, 0x0384, 0x0368, 0x0349, 0x0328,\n    0x0305, 0x02E0, 0x02B9, 0x0291, 0x0268, 0x023E, 0x0214, 0x01E8,\n    0x01BD, 0x0191, 0x0165, 0x013A, 0x010F, 0x00E4, 0x00BB, 0x0092,\n    0x006B, 0x0046, 0x0022, 0x0000, 0xFFDE, 0xFFB9, 0xFF92, 0xFF69,\n    0xFF3F, 0xFF13, 0xFEE7, 0xFEBB, 0xFE8E, 0xFE62, 0xFE37, 0xFE0C,\n    0xFDE3, 0xFDBC, 0xFD96, 0xFD73, 0xFD53, 0xFD36, 0xFD1D, 0xFD07,\n    0xFCF6, 0xFCE9, 0xFCE1, 0xFCDE, 0xFCE0, 0xFCE4, 0xFCEA, 0xFCF3,\n    0xFCFF, 0xFD0D, 0xFD1C, 0xFD2E, 0xFD42, 0xFD57, 0xFD6E, 0xFD87,\n    0xFDA1, 0xFDBC, 0xFDD9, 0xFDF6, 0xFE14, 0xFE34, 0xFE54, 0xFE74,\n    0xFE96, 0xFEB7, 0xFED9, 0xFEFB, 0xFF1C, 0xFF3E, 0xFF60, 0xFF81,\n    0xFFA2, 0xFFC2, 0xFFE2, 0x0000, 0x0020, 0x0043, 0x0069, 0x0091,\n    0x00BC, 0x00E8, 0x0116, 0x0145, 0x0175, 0x01A6, 0x01D7, 0x0207,\n    0x0237, 0x0267, 0x0295, 0x02C2, 0x02EE, 0x0317, 0x033E, 0x0362,\n    0x0383, 0x03A0, 0x03BA, 0x03D0, 0x03E2, 0x03EF, 0x03F7, 0x03FA,\n    0xF702, 0xF71C, 0xF766, 0xF7DE, 0xF87F, 0xF947, 0xFA32, 0xFB3D,\n    0xFC65, 0xFDA5, 0xFEFC, 0x0063, 0x01DB, 0x035E, 0x04E9, 0x0679,\n    0x080A, 0x0999, 0x0B23, 0x0CA4, 0x0E19, 0x0F7F, 0x10D1, 0x120E,\n    0x1330, 0x1436, 0x151B, 0x15DD, 0x1677, 0x16E6, 0x1728, 0x1739,\n    0x1704, 0x167C, 0x15AB, 0x1496, 0x1345, 0x11C0, 0x100E, 0x0E38,\n    0x0C43, 0x0A39, 0x081F, 0x05FF, 0x03DF, 0x01C7, 0xFFC0, 0xFDCE,\n    0xFBFB, 0xFA4E, 0xF8CE, 0xF783, 0xF674, 0xF5AA, 0xF52B, 0xF4FF,\n    0xF518, 0xF560, 0xF5D5, 0xF674, 0xF738, 0xF820, 0xF927, 0xFA4B,\n    0xFB89, 0xFCDD, 0xFE44, 0xFFBB, 0x013F, 0x02CD, 0x0461, 0x05F9,\n    0x0791, 0x0927, 0x0AB6, 0x0C3C, 0x0DB6, 0x0F20, 0x1077, 0x11B9,\n    0x12E1, 0x13EE, 0x14DB, 0x15A6, 0x164B, 0x16C7, 0x1717, 0x1739,\n    0x1722, 0x16CF, 0x1645, 0x1589, 0x149F, 0x138B, 0x1252, 0x10F9,\n    0x0F84, 0x0DF8, 0x0C59, 0x0AAC, 0x08F6, 0x073B, 0x0580, 0x03C9,\n    0x021A, 0x0079, 0xFEEC, 0xFD73, 0xFC16, 0xFAD9, 0xF9C0, 0xF8CF,\n    0xF80C, 0xF77C, 0xF721, 0xF702, 0x4A08, 0x49F8, 0x49CB, 0x4984,\n    0x4923, 0x48AC, 0x4821, 0x4784, 0x46D8, 0x461F, 0x455C, 0x4490,\n    0x43BF, 0x42E9, 0x4213, 0x413E, 0x406C, 0x3FA1, 0x3EDD, 0x3E24,\n    0x3D78, 0x3CDC, 0x3C51, 0x3BDA, 0x3B79, 0x3B31, 0x3B04, 0x3AF5,\n    0x3B03, 0x3B2D, 0x3B70, 0x3BCB, 0x3C3A, 0x3CBC, 0x3D50, 0x3DF2,\n    0x3EA1, 0x3F5A, 0x401C, 0x40E4, 0x41B0, 0x427E, 0x434D, 0x4419,\n    0x44E1, 0x45A3, 0x465C, 0x470B, 0x47AD, 0x4840, 0x48C3, 0x4932,\n    0x498C, 0x49D0, 0x49F9, 0x4A08, 0x49F9, 0x49D0, 0x498C, 0x4932,\n    0x48C3, 0x4840, 0x47AD, 0x470B, 0x465C, 0x45A3, 0x44E1, 0x4419,\n    0x434D, 0x427E, 0x41B0, 0x40E4, 0x401C, 0x3F5A, 0x3EA1, 0x3DF2,\n    0x3D50, 0x3CBC, 0x3C3A, 0x3BCB, 0x3B70, 0x3B2D, 0x3B03, 0x3AF5,\n    0x3B00, 0x3B20, 0x3B54, 0x3B9A, 0x3BF1, 0x3C58, 0x3CCC, 0x3D4D,\n    0x3DDA, 0x3E71, 0x3F10, 0x3FB6, 0x4061, 0x4111, 0x41C4, 0x4278,\n    0x432D, 0x43E0, 0x4490, 0x453C, 0x45E2, 0x4682, 0x4719, 0x47A6,\n    0x4828, 0x489E, 0x4905, 0x495D, 0x49A5, 0x49DA, 0x49FB, 0x4A08,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_93.inc.c",
    "content": "static const struct Animation anim_93[] = {\n    1,\n    189,\n    0,\n    0,\n    0x0A,\n    ANIMINDEX_NUMPARTS(anim_93_indices),\n    anim_93_values,\n    anim_93_indices,\n    0,\n};\n\n\nstatic const u16 anim_93_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0123,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0119,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x010F,\n    0x0001, 0x010B, 0x0001, 0x010C, 0x0001, 0x010D,\n    0x000A, 0x002B, 0x000A, 0x0035, 0x000A, 0x003F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0021,\n    0x000A, 0x0003, 0x000A, 0x000D, 0x000A, 0x0017,\n    0x0001, 0x0107, 0x0001, 0x0108, 0x0001, 0x0109,\n    0x000A, 0x005D, 0x000A, 0x0067, 0x000A, 0x0071,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0053,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0049,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x010A,\n    0x000A, 0x00E9, 0x000A, 0x00F3, 0x000A, 0x00FD,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x00DF,\n    0x000A, 0x00C1, 0x000A, 0x00CB, 0x000A, 0x00D5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x010E,\n    0x000A, 0x00A3, 0x000A, 0x00AD, 0x000A, 0x00B7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0099,\n    0x000A, 0x007B, 0x000A, 0x0085, 0x000A, 0x008F,\n};\n\nstatic const s16 anim_93_values[] = {\n    0x0000, 0x00AA, 0x3FFF, 0xFF8A, 0xFF8F, 0xFF99, 0xFFA9, 0xFFBC,\n    0xFFCF, 0xFFE2, 0xFFF2, 0xFFFC, 0x0000, 0xF980, 0xF980, 0xF97F,\n    0xF97F, 0xF97E, 0xF97D, 0xF97D, 0xF97C, 0xF97C, 0xF97C, 0xF06F,\n    0xF056, 0xF012, 0xEFAF, 0xEF3B, 0xEEC0, 0xEE4B, 0xEDE9, 0xEDA5,\n    0xED8C, 0xF9E4, 0xF842, 0xF3E3, 0xED8E, 0xE60D, 0xDE27, 0xD6A5,\n    0xD050, 0xCBF1, 0xCA4F, 0x3E29, 0x44A3, 0x5601, 0x6F26, 0x8CF4,\n    0xAC51, 0xCA20, 0xE344, 0xF4A2, 0xFB1D, 0xB6E4, 0xB7D9, 0xBA6C,\n    0xBE24, 0xC28E, 0xC732, 0xCB9C, 0xCF54, 0xD1E6, 0xD2DC, 0x9220,\n    0x8BA1, 0x7A38, 0x6104, 0x4322, 0x23B1, 0x05CF, 0xEC9B, 0xDB33,\n    0xD4B4, 0xED8C, 0xEDD0, 0xEE86, 0xEF8D, 0xF0C6, 0xF20F, 0xF347,\n    0xF44F, 0xF505, 0xF549, 0xFB1D, 0xF95B, 0xF4A5, 0xEDD4, 0xE5BE,\n    0xDD3C, 0xD527, 0xCE55, 0xC99F, 0xC7DD, 0x4ED2, 0x4C4D, 0x458B,\n    0x3BC2, 0x3029, 0x23F5, 0x185B, 0x0E93, 0x07D1, 0x054B, 0x35F4,\n    0x359B, 0x34AD, 0x3355, 0x31BC, 0x300E, 0x2E76, 0x2D1D, 0x2C2F,\n    0x2BD6, 0x1B41, 0x1891, 0x115F, 0x06F4, 0xFA9B, 0xED9C, 0xE142,\n    0xD6D7, 0xCFA5, 0xCCF6, 0x01E6, 0x01D6, 0x01A9, 0x0168, 0x011B,\n    0x00CB, 0x007E, 0x003D, 0x0010, 0x0000, 0x0166, 0x0152, 0x011E,\n    0x00D3, 0x0079, 0x001B, 0xFFC3, 0xFF77, 0xFF43, 0xFF30, 0xEF70,\n    0xEE26, 0xEAB1, 0xE5B1, 0xDFC2, 0xD985, 0xD397, 0xCE97, 0xCB22,\n    0xC9D8, 0x0640, 0x0713, 0x0948, 0x0C7B, 0x1046, 0x1443, 0x180E,\n    0x1B41, 0x1D77, 0x1E4A, 0xFEE9, 0xFFDF, 0x0274, 0x0633, 0x0AA3,\n    0x0F4E, 0x13BE, 0x177C, 0x1A12, 0x1B09, 0xFF3F, 0xFFDD, 0x0184,\n    0x03EA, 0x06C2, 0x09C0, 0x0C98, 0x0EFE, 0x10A6, 0x1144, 0xBC52,\n    0xBBC5, 0xBA4B, 0xB828, 0xB5A0, 0xB2F6, 0xB06E, 0xAE4B, 0xACD1,\n    0xAC44, 0xFF9E, 0xFFA1, 0xFFAB, 0xFFB8, 0xFFC7, 0xFFD7, 0xFFE7,\n    0xFFF4, 0xFFFD, 0x0000, 0xFEF0, 0xFEFA, 0xFF13, 0xFF37, 0xFF62,\n    0xFF8F, 0xFFBA, 0xFFDE, 0xFFF7, 0x0000, 0xF088, 0xEED8, 0xEA50,\n    0xE3C1, 0xDBFB, 0xD3CD, 0xCC07, 0xC578, 0xC0F1, 0xBF40, 0x054B,\n    0x0664, 0x0953, 0x0D92, 0x129B, 0x17E7, 0x1CF0, 0x212F, 0x241E,\n    0x2537, 0x0040, 0xFED1, 0xFAF5, 0xF560, 0xEEC1, 0xE7CA, 0xE12B,\n    0xDB96, 0xD7BB, 0xD64A, 0x0056, 0xFFA7, 0xFDCE, 0xFB22, 0xF7F7,\n    0xF4A1, 0xF176, 0xEECA, 0xECF1, 0xEC41, 0xBCD3, 0xBC93, 0xBBEA,\n    0xBAF4, 0xB9D1, 0xB89F, 0xB77C, 0xB687, 0xB5DD, 0xB59E, 0x7FFF,\n    0x7FFF, 0x4171, 0xBF5F, 0x7FFF, 0x7FFF, 0x4171, 0xBF5F, 0xF50C,\n    0xF54D, 0xF5F9, 0xF6F3, 0xF81B, 0xF953, 0xFA7B, 0xFB75, 0xFC21,\n    0xFC62, 0xFF26, 0xFF78, 0x0053, 0x0193, 0x030D, 0x049B, 0x0616,\n    0x0755, 0x0831, 0x0884, 0x3FFF, 0x4005, 0x4013, 0x4029, 0x4043,\n    0x405D, 0x4077, 0x408D, 0x409B, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_94.inc.c",
    "content": "static const struct Animation anim_94[] = {\n    1,\n    189,\n    0,\n    0,\n    0x01,\n    ANIMINDEX_NUMPARTS(anim_94_indices),\n    anim_94_values,\n    anim_94_indices,\n    0,\n};\n\n\nstatic const u16 anim_94_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0027,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0026,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0025,\n    0x0001, 0x0021, 0x0001, 0x0022, 0x0001, 0x0023,\n    0x0001, 0x0007, 0x0001, 0x0008, 0x0001, 0x0009,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0006,\n    0x0001, 0x0003, 0x0001, 0x0004, 0x0001, 0x0005,\n    0x0001, 0x001D, 0x0001, 0x001E, 0x0001, 0x001F,\n    0x0001, 0x000C, 0x0001, 0x000D, 0x0001, 0x000E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x000B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x000A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0020,\n    0x0001, 0x001A, 0x0001, 0x001B, 0x0001, 0x001C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0019,\n    0x0001, 0x0016, 0x0001, 0x0017, 0x0001, 0x0018,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0024,\n    0x0001, 0x0013, 0x0001, 0x0014, 0x0001, 0x0015,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0012,\n    0x0001, 0x000F, 0x0001, 0x0010, 0x0001, 0x0011,\n};\n\nstatic const s16 anim_94_values[] = {\n    0x0000, 0x00BD, 0x3FFF, 0xFF8A, 0xF980, 0xF06F, 0xF9E4, 0x3E29,\n    0xB6E4, 0x9220, 0xED8C, 0xFB1D, 0x4ED2, 0x35F4, 0x1B41, 0x01E6,\n    0x0166, 0xEF70, 0x0640, 0xFEE9, 0xFF3F, 0xBC52, 0xFF9E, 0xFEF0,\n    0xF088, 0x054B, 0x0040, 0x0056, 0xBCD3, 0x7FFF, 0x7FFF, 0x4171,\n    0xBF5F, 0x7FFF, 0x7FFF, 0x4171, 0xBF5F, 0xF50C, 0xFF26, 0x3FFF,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_95.inc.c",
    "content": "static const struct Animation anim_95[] = {\n    1,\n    189,\n    0,\n    0,\n    0x05,\n    ANIMINDEX_NUMPARTS(anim_95_indices),\n    anim_95_values,\n    anim_95_indices,\n    0,\n};\n\n\nstatic const u16 anim_95_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0005, 0x0087,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0005, 0x0082,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0005, 0x007D,\n    0x0001, 0x0079, 0x0001, 0x007A, 0x0001, 0x007B,\n    0x0005, 0x000B, 0x0005, 0x0010, 0x0005, 0x0015,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0005, 0x0006,\n    0x0001, 0x0003, 0x0001, 0x0004, 0x0001, 0x0005,\n    0x0001, 0x0075, 0x0001, 0x0076, 0x0001, 0x0077,\n    0x0005, 0x0020, 0x0005, 0x0025, 0x0005, 0x002A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0005, 0x001B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x001A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0078,\n    0x0005, 0x0066, 0x0005, 0x006B, 0x0005, 0x0070,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0005, 0x0061,\n    0x0005, 0x0052, 0x0005, 0x0057, 0x0005, 0x005C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x007C,\n    0x0005, 0x0043, 0x0005, 0x0048, 0x0005, 0x004D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0005, 0x003E,\n    0x0005, 0x002F, 0x0005, 0x0034, 0x0005, 0x0039,\n};\n\nstatic const s16 anim_95_values[] = {\n    0x0000, 0x00BD, 0x3FFF, 0xFF8A, 0xF980, 0xF06F, 0xFB85, 0xFB4B,\n    0xFAC7, 0xFA3B, 0xF9E8, 0x85E8, 0x7BDC, 0x6532, 0x4D21, 0x3EE0,\n    0x94B7, 0x9980, 0xA44C, 0xAFC3, 0xB68D, 0x3403, 0x4131, 0x5EEC,\n    0x7E7E, 0x9130, 0xED8C, 0xF913, 0xF95C, 0xFA01, 0xFAB0, 0xFB18,\n    0x031B, 0x0DB6, 0x25A1, 0x3F06, 0x4E11, 0x1597, 0x1A1F, 0x2458,\n    0x2F34, 0x35A2, 0xB412, 0xC285, 0xE31E, 0x05B9, 0x1A39, 0xFFEC,\n    0x0032, 0x00D2, 0x017C, 0x01E1, 0x025C, 0x0239, 0x01EC, 0x0199,\n    0x0168, 0xC7E1, 0xCD6B, 0xD9EA, 0xE72F, 0xEF0B, 0x4AB2, 0x411D,\n    0x2B7D, 0x1488, 0x06EF, 0xFFD8, 0xFFB6, 0xFF6B, 0xFF1A, 0xFEEB,\n    0xFEAE, 0xFEC3, 0xFEF0, 0xFF20, 0xFF3D, 0x99AF, 0x9E88, 0xA97A,\n    0xB518, 0xBBFA, 0x00A8, 0x0083, 0x002E, 0xFFD6, 0xFFA1, 0xFF16,\n    0xFF10, 0xFF05, 0xFEF8, 0xFEF1, 0xC900, 0xCE89, 0xDB06, 0xE849,\n    0xF023, 0x4613, 0x3D01, 0x288A, 0x12CF, 0x05F1, 0xFFEE, 0xFFFA,\n    0x0013, 0x002F, 0x003F, 0x006A, 0x0067, 0x0061, 0x005B, 0x0057,\n    0x9C3A, 0xA0CB, 0xAB17, 0xB606, 0xBC7F, 0x7FFF, 0x7FFF, 0x4171,\n    0xBF5F, 0x7FFF, 0x7FFF, 0x4171, 0xBF5F, 0x07C9, 0x0529, 0xFF3F,\n    0xF8F5, 0xF53C, 0x13EC, 0x1103, 0x0A73, 0x037A, 0xFF5B, 0x4A97,\n    0x4911, 0x45A6, 0x4212, 0x400F,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_96.inc.c",
    "content": "static const struct Animation anim_96[] = {\n    1,\n    189,\n    0,\n    0,\n    0x0A,\n    ANIMINDEX_NUMPARTS(anim_96_indices),\n    anim_96_values,\n    anim_96_indices,\n    0,\n};\n\n\nstatic const u16 anim_96_indices[] = {\n    0x0001, 0x0000, 0x000A, 0x0001, 0x000A, 0x000B, 0x0001, 0x0000, 0x0001, 0x0015, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x014A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0140,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0136,\n    0x0001, 0x0132, 0x0001, 0x0133, 0x0001, 0x0134,\n    0x000A, 0x003E, 0x000A, 0x0048, 0x000A, 0x0052,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0034,\n    0x000A, 0x0016, 0x000A, 0x0020, 0x000A, 0x002A,\n    0x0001, 0x012E, 0x0001, 0x012F, 0x0001, 0x0130,\n    0x000A, 0x0084, 0x000A, 0x008E, 0x000A, 0x0098,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x007A,\n    0x000A, 0x005C, 0x000A, 0x0066, 0x000A, 0x0070,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0131,\n    0x000A, 0x0110, 0x000A, 0x011A, 0x000A, 0x0124,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0106,\n    0x000A, 0x00E8, 0x000A, 0x00F2, 0x000A, 0x00FC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0135,\n    0x000A, 0x00CA, 0x000A, 0x00D4, 0x000A, 0x00DE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x00C0,\n    0x000A, 0x00A2, 0x000A, 0x00AC, 0x000A, 0x00B6,\n};\n\nstatic const s16 anim_96_values[] = {\n    0x0000, 0x0069, 0x0069, 0x006B, 0x0070, 0x007C, 0x008C, 0x0099,\n    0x00A3, 0x00A8, 0x00AA, 0xFFDD, 0xFFDE, 0xFFE1, 0xFFE5, 0xFFE8,\n    0xFFED, 0xFFF3, 0xFFF9, 0xFFFE, 0x0000, 0x3FFF, 0xB870, 0xC8B8,\n    0xE8E8, 0x0000, 0x05C0, 0x051C, 0x01EA, 0x0000, 0x0000, 0x0000,\n    0xE53A, 0xE9D6, 0xF2F2, 0xF97C, 0xFB1C, 0xFAEE, 0xFA07, 0xF97C,\n    0xF97C, 0xF97C, 0xF329, 0xF1E2, 0xEF5B, 0xED8C, 0xED18, 0xED25,\n    0xED65, 0xED8C, 0xED8C, 0xED8C, 0xD1A5, 0xCA9C, 0xBDAA, 0xB70A,\n    0xBB9C, 0xC531, 0xCF6C, 0xD5F1, 0xD0EE, 0xCA4F, 0x4683, 0x7072,\n    0xC343, 0xFE6F, 0x0C9D, 0x0A28, 0x0119, 0xFB7C, 0xFB29, 0xFB1D,\n    0xC85D, 0xC976, 0xCBC6, 0xCDD2, 0xCF29, 0xD059, 0xD164, 0xD24C,\n    0xD2CA, 0xD2DC, 0x1427, 0xFE27, 0xD378, 0xB71B, 0xB4ED, 0xBD03,\n    0xC8B9, 0xD164, 0xD447, 0xD4B4, 0x4035, 0x3199, 0x14B9, 0x0000,\n    0xFAD8, 0xFB6A, 0xFE48, 0x0000, 0x0000, 0x0000, 0x1B99, 0x1552,\n    0x08E8, 0x0000, 0xFDC9, 0xFE08, 0xFF43, 0x0000, 0x0000, 0x0000,\n    0xFAFE, 0xF9B1, 0xF721, 0xF549, 0xF4D4, 0xF4E1, 0xF522, 0xF549,\n    0xF549, 0xF549, 0xD3AE, 0xCB80, 0xBC52, 0xB42D, 0xB88F, 0xC279,\n    0xCD32, 0xD401, 0xCEC1, 0xC7DD, 0xDDA1, 0xB169, 0x5973, 0x18D6,\n    0x0587, 0x027E, 0x064A, 0x077B, 0x0593, 0x054B, 0x2F11, 0x2D59,\n    0x2A0D, 0x27FB, 0x281A, 0x291C, 0x2A69, 0x2B68, 0x2BC8, 0x2BD6,\n    0x3498, 0x1A22, 0xE623, 0xC1AF, 0xBA78, 0xBE42, 0xC644, 0xCBB3,\n    0xCCCD, 0xCCF6, 0x0012, 0x0008, 0xFFE3, 0xFF93, 0xFEB8, 0xFE00,\n    0xFE58, 0xFF02, 0xFFA1, 0x0000, 0xFF31, 0xFF30, 0xFF2F, 0xFF2D,\n    0xFF27, 0xFF22, 0xFF21, 0xFF24, 0xFF2B, 0xFF30, 0xC62D, 0xC659,\n    0xC6BE, 0xC72D, 0xC7A9, 0xC826, 0xC874, 0xC8C6, 0xC96A, 0xC9D8,\n    0x44FE, 0x4518, 0x4498, 0x4245, 0x3BA1, 0x32D0, 0x29D9, 0x2250,\n    0x1F04, 0x1E4A, 0x0283, 0x0273, 0x02C4, 0x043D, 0x0872, 0x0E08,\n    0x13B6, 0x187C, 0x1A92, 0x1B09, 0x1549, 0x154B, 0x153E, 0x1500,\n    0x1450, 0x1366, 0x1278, 0x11AF, 0x1158, 0x1144, 0x735F, 0x7339,\n    0x73F6, 0x775F, 0x8124, 0x8E1A, 0x9B46, 0xA659, 0xAB31, 0xAC44,\n    0xFA4C, 0xFA6F, 0xFB0D, 0xFC7C, 0x0063, 0x040D, 0x03CF, 0x0255,\n    0x00E9, 0x0000, 0x0000, 0xFFED, 0xFFCE, 0xFFD0, 0x003E, 0x00A7,\n    0x0072, 0x001F, 0x0005, 0x0000, 0xBB2D, 0xBA99, 0xB960, 0xB849,\n    0xB74A, 0xB755, 0xBA42, 0xBD86, 0xBEE2, 0xBF40, 0x4C54, 0x4C8E,\n    0x4C6C, 0x4AAF, 0x454C, 0x3D93, 0x347E, 0x2C2E, 0x272C, 0x2537,\n    0x0259, 0x0224, 0x00D6, 0xFD6C, 0xF4B3, 0xEA46, 0xE29D, 0xDC91,\n    0xD82E, 0xD64A, 0xED25, 0xED3B, 0xED2E, 0xEC86, 0xE9D6, 0xE792,\n    0xE921, 0xEB69, 0xEC20, 0xEC41, 0x7774, 0x77B5, 0x7963, 0x7DDA,\n    0x8923, 0x970E, 0xA2A9, 0xAC48, 0xB2DC, 0xB59E, 0x8001, 0x8001,\n    0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F, 0xDBCA, 0xDE3D,\n    0xE456, 0xEC35, 0xF3FA, 0xF9C4, 0xFA42, 0xF8FE, 0xFADA, 0xFC62,\n    0x34EF, 0x316A, 0x29BF, 0x2245, 0x1C2A, 0x1603, 0x1046, 0x0B65,\n    0x08E2, 0x0884, 0x50ED, 0x5118, 0x5101, 0x4FC8, 0x4CFA, 0x4945,\n    0x4575, 0x4253, 0x40D8, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_97.inc.c",
    "content": "static const struct Animation anim_97[] = {\n    1,\n    189,\n    0,\n    0,\n    0x06,\n    ANIMINDEX_NUMPARTS(anim_97_indices),\n    anim_97_values,\n    anim_97_indices,\n    0,\n};\n\n\nstatic const u16 anim_97_indices[] = {\n    0x0001, 0x0000, 0x0006, 0x0001, 0x0006, 0x0007, 0x0001, 0x0000, 0x0001, 0x000D, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0006, 0x00CA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0006, 0x00C4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0006, 0x00BE,\n    0x0001, 0x00BA, 0x0001, 0x00BB, 0x0001, 0x00BC,\n    0x0006, 0x0026, 0x0006, 0x002C, 0x0006, 0x0032,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0006, 0x0020,\n    0x0006, 0x000E, 0x0006, 0x0014, 0x0006, 0x001A,\n    0x0001, 0x00B6, 0x0001, 0x00B7, 0x0001, 0x00B8,\n    0x0006, 0x0050, 0x0006, 0x0056, 0x0006, 0x005C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0006, 0x004A,\n    0x0006, 0x0038, 0x0006, 0x003E, 0x0006, 0x0044,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00B9,\n    0x0006, 0x00A4, 0x0006, 0x00AA, 0x0006, 0x00B0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0006, 0x009E,\n    0x0006, 0x008C, 0x0006, 0x0092, 0x0006, 0x0098,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00BD,\n    0x0006, 0x007A, 0x0006, 0x0080, 0x0006, 0x0086,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0006, 0x0074,\n    0x0006, 0x0062, 0x0006, 0x0068, 0x0006, 0x006E,\n};\n\nstatic const s16 anim_97_values[] = {\n    0x0000, 0x00AA, 0x00A3, 0x008C, 0x0070, 0x0069, 0x0069, 0x0000,\n    0xFFF9, 0xFFED, 0xFFE5, 0xFFE0, 0xFFDD, 0x3FFF, 0x0000, 0x0000,\n    0x0479, 0x0000, 0xD7BF, 0xB870, 0xF97C, 0xF97C, 0xFAC0, 0xF97C,\n    0xEE17, 0xE53A, 0xED8C, 0xED8C, 0xED32, 0xED8C, 0xF0B4, 0xF329,\n    0xCA4F, 0xD5F1, 0xDE85, 0xB70A, 0xC345, 0xD1A5, 0xFB1D, 0xFB7C,\n    0x088B, 0xFE6F, 0x972B, 0x4683, 0xD2DC, 0xD24C, 0xD042, 0xCDD2,\n    0xCA78, 0xC85D, 0xD4B4, 0xD164, 0xBD9C, 0xB71B, 0xE9CE, 0x1427,\n    0x0000, 0x0000, 0xFBFD, 0x0000, 0x241E, 0x4035, 0x0000, 0x0000,\n    0xFE47, 0x0000, 0x0F86, 0x1B99, 0xF549, 0xF549, 0xF4EE, 0xF549,\n    0xF87F, 0xFAFE, 0xC7DD, 0xD401, 0xDD02, 0xB42D, 0xC326, 0xD3AE,\n    0x054B, 0x077B, 0x0467, 0x18D6, 0x889F, 0xDDA1, 0x2BD6, 0x2B68,\n    0x2925, 0x27FB, 0x2BC1, 0x2F11, 0xCCF6, 0xCBB3, 0xBF32, 0xC1AF,\n    0x01B1, 0x3498, 0x0000, 0xFF02, 0xFE00, 0xFF93, 0xFFFF, 0x0012,\n    0xFF30, 0xFF24, 0xFF22, 0xFF2D, 0xFF30, 0xFF31, 0xC9D8, 0xC8C6,\n    0xC826, 0xC72D, 0xC683, 0xC62D, 0x1E4A, 0x2250, 0x32D0, 0x4245,\n    0x4526, 0x44FE, 0x1B09, 0x187C, 0x0E08, 0x043D, 0x026A, 0x0283,\n    0x1144, 0x11AF, 0x1366, 0x1500, 0x154D, 0x1549, 0xAC44, 0xA659,\n    0x8E1A, 0x775F, 0x7325, 0x735F, 0x0000, 0x0255, 0x040D, 0xFC7C,\n    0xFA94, 0xFA4C, 0x0000, 0x001F, 0x00A7, 0xFFD0, 0xFFDB, 0x0000,\n    0xBF40, 0xBD86, 0xB755, 0xB849, 0xBA0D, 0xBB2D, 0x2537, 0x2C2E,\n    0x3D93, 0x4AAF, 0x4CBC, 0x4C54, 0xD64A, 0xDC91, 0xEA46, 0xFD6C,\n    0x01E4, 0x0259, 0xEC41, 0xEB69, 0xE792, 0xEC86, 0xED4C, 0xED25,\n    0xB59E, 0xAC48, 0x970E, 0x7DDA, 0x7805, 0x7774, 0x8001, 0x8001,\n    0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F, 0xFC62, 0xF8FE,\n    0xEAD6, 0xDE15, 0xDB1C, 0xDBCA, 0x0884, 0x0B65, 0x1662, 0x2245,\n    0x2E33, 0x34EF, 0x40A1, 0x4253, 0x4967, 0x4FC8, 0x5144, 0x50ED,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_98.inc.c",
    "content": "static const struct Animation anim_98[] = {\n    0,\n    189,\n    0,\n    0,\n    0x5A,\n    ANIMINDEX_NUMPARTS(anim_98_indices),\n    anim_98_values,\n    anim_98_indices,\n    0,\n};\n\n\nstatic const u16 anim_98_indices[] = {\n    0x0001, 0x0000, 0x005A, 0x0001, 0x0001, 0x005B, 0x0001, 0x0000, 0x0001, 0x005C, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005A, 0x0509,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005A, 0x04AF,\n    0x005A, 0x03A1, 0x005A, 0x03FB, 0x005A, 0x0455,\n    0x0001, 0x039D, 0x0001, 0x039E, 0x0001, 0x039F,\n    0x0001, 0x00BA, 0x0001, 0x00BB, 0x0001, 0x00BC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005A, 0x0060,\n    0x0001, 0x005D, 0x0001, 0x005E, 0x0001, 0x005F,\n    0x0001, 0x0399, 0x0001, 0x039A, 0x0001, 0x039B,\n    0x0001, 0x011A, 0x0001, 0x011B, 0x0001, 0x011C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005A, 0x00C0,\n    0x0001, 0x00BD, 0x0001, 0x00BE, 0x0001, 0x00BF,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x039C,\n    0x005A, 0x028B, 0x005A, 0x02E5, 0x005A, 0x033F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x028A,\n    0x0001, 0x0288, 0x0001, 0x0000, 0x0001, 0x0289,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x03A0,\n    0x005A, 0x017A, 0x005A, 0x01D4, 0x005A, 0x022E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0179,\n    0x005A, 0x011D, 0x0001, 0x0177, 0x0001, 0x0178,\n};\n\nstatic const s16 anim_98_values[] = {\n    0x0000, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x006A,\n    0x006A, 0x006A, 0x006B, 0x006B, 0x006B, 0x006B, 0x006B, 0x006B,\n    0x006B, 0x006B, 0x006B, 0x006B, 0x006B, 0x006A, 0x006A, 0x006A,\n    0x006A, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069,\n    0x0069, 0x0069, 0x0069, 0x0069, 0x006A, 0x006A, 0x006A, 0x006A,\n    0x006B, 0x006B, 0x006B, 0x006B, 0x006B, 0x006B, 0x006B, 0x006B,\n    0x006B, 0x006B, 0x006B, 0x006A, 0x006A, 0x006A, 0x006A, 0x0069,\n    0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069, 0x0069,\n    0x0069, 0x0069, 0x006A, 0x006A, 0x006A, 0x006A, 0x006B, 0x006B,\n    0x006B, 0x006B, 0x006B, 0x006B, 0x006B, 0x006B, 0x006B, 0x006B,\n    0x006B, 0x006A, 0x006A, 0x006A, 0x006A, 0x0069, 0x0069, 0x0069,\n    0x0069, 0x0069, 0x0069, 0xFFDD, 0x3FFF, 0xB870, 0xE53A, 0xF329,\n    0xD1A5, 0xD1B2, 0xD1D9, 0xD214, 0xD25F, 0xD2B6, 0xD316, 0xD37A,\n    0xD3DE, 0xD43E, 0xD495, 0xD4E1, 0xD51B, 0xD542, 0xD54F, 0xD543,\n    0xD522, 0xD4EE, 0xD4AB, 0xD45C, 0xD405, 0xD3A9, 0xD34B, 0xD2EF,\n    0xD298, 0xD249, 0xD206, 0xD1D2, 0xD1B1, 0xD1A5, 0xD1B1, 0xD1D2,\n    0xD206, 0xD249, 0xD298, 0xD2EF, 0xD34B, 0xD3A9, 0xD405, 0xD45C,\n    0xD4AB, 0xD4EE, 0xD522, 0xD543, 0xD54F, 0xD543, 0xD522, 0xD4EE,\n    0xD4AB, 0xD45C, 0xD405, 0xD3A9, 0xD34B, 0xD2EF, 0xD298, 0xD249,\n    0xD206, 0xD1D2, 0xD1B1, 0xD1A5, 0xD1B1, 0xD1D2, 0xD206, 0xD249,\n    0xD298, 0xD2EF, 0xD34B, 0xD3A9, 0xD405, 0xD45C, 0xD4AB, 0xD4EE,\n    0xD522, 0xD543, 0xD54F, 0xD543, 0xD522, 0xD4EE, 0xD4AB, 0xD45C,\n    0xD405, 0xD3A9, 0xD34B, 0xD2EF, 0xD298, 0xD249, 0xD206, 0xD1D2,\n    0xD1B1, 0xD1A5, 0x4683, 0xC85D, 0x1427, 0x4035, 0x1B99, 0xFAFE,\n    0xD3AE, 0xD3B6, 0xD3CB, 0xD3EC, 0xD416, 0xD446, 0xD47B, 0xD4B3,\n    0xD4EA, 0xD520, 0xD550, 0xD57A, 0xD59B, 0xD5B0, 0xD5B8, 0xD5B1,\n    0xD59E, 0xD581, 0xD55C, 0xD530, 0xD500, 0xD4CD, 0xD499, 0xD466,\n    0xD435, 0xD40A, 0xD3E4, 0xD3C8, 0xD3B5, 0xD3AE, 0xD3B6, 0xD3CD,\n    0xD3EF, 0xD41C, 0xD450, 0xD48A, 0xD4C8, 0xD506, 0xD544, 0xD57E,\n    0xD5B2, 0xD5DF, 0xD602, 0xD618, 0xD620, 0xD618, 0xD602, 0xD5DF,\n    0xD5B2, 0xD57E, 0xD544, 0xD506, 0xD4C8, 0xD48A, 0xD450, 0xD41C,\n    0xD3EF, 0xD3CD, 0xD3B6, 0xD3AE, 0xD3BB, 0xD3E1, 0xD41B, 0xD465,\n    0xD4BD, 0xD51D, 0xD584, 0xD5EC, 0xD652, 0xD6B3, 0xD70A, 0xD755,\n    0xD78F, 0xD7B4, 0xD7C1, 0xD7B4, 0xD78F, 0xD755, 0xD70A, 0xD6B3,\n    0xD652, 0xD5EC, 0xD584, 0xD51D, 0xD4BD, 0xD465, 0xD41B, 0xD3E1,\n    0xD3BB, 0xD3AE, 0xDDA1, 0x2F11, 0x3498, 0x0012, 0x000C, 0xFFFC,\n    0xFFE2, 0xFFC0, 0xFF9A, 0xFF6F, 0xFF43, 0xFF16, 0xFEEC, 0xFEC5,\n    0xFEA3, 0xFE89, 0xFE78, 0xFE72, 0xFE77, 0xFE86, 0xFE9D, 0xFEBB,\n    0xFEDE, 0xFF05, 0xFF2E, 0xFF57, 0xFF80, 0xFFA7, 0xFFCA, 0xFFE8,\n    0xFFFF, 0x000D, 0x0012, 0x000D, 0xFFFF, 0xFFE8, 0xFFCA, 0xFFA7,\n    0xFF80, 0xFF57, 0xFF2E, 0xFF05, 0xFEDE, 0xFEBB, 0xFE9D, 0xFE86,\n    0xFE77, 0xFE72, 0xFE77, 0xFE86, 0xFE9D, 0xFEBB, 0xFEDE, 0xFF05,\n    0xFF2E, 0xFF57, 0xFF80, 0xFFA7, 0xFFCA, 0xFFE8, 0xFFFF, 0x000D,\n    0x0012, 0x000D, 0xFFFF, 0xFFE8, 0xFFCA, 0xFFA7, 0xFF80, 0xFF57,\n    0xFF2E, 0xFF05, 0xFEDE, 0xFEBB, 0xFE9D, 0xFE86, 0xFE77, 0xFE72,\n    0xFE77, 0xFE86, 0xFE9D, 0xFEBB, 0xFEDE, 0xFF05, 0xFF2E, 0xFF57,\n    0xFF80, 0xFFA7, 0xFFCA, 0xFFE8, 0xFFFF, 0x000D, 0x0012, 0xFF31,\n    0xC62D, 0x44FE, 0x0283, 0x0288, 0x0294, 0x02A7, 0x02BE, 0x02DA,\n    0x02F9, 0x0318, 0x0338, 0x0357, 0x0372, 0x038A, 0x039D, 0x03A9,\n    0x03AD, 0x03AA, 0x039F, 0x038E, 0x0379, 0x0360, 0x0345, 0x0327,\n    0x0309, 0x02EC, 0x02D1, 0x02B8, 0x02A2, 0x0292, 0x0287, 0x0283,\n    0x0287, 0x0292, 0x02A2, 0x02B8, 0x02D1, 0x02EC, 0x0309, 0x0327,\n    0x0345, 0x0360, 0x0379, 0x038E, 0x039F, 0x03AA, 0x03AD, 0x03AA,\n    0x039F, 0x038E, 0x0379, 0x0360, 0x0345, 0x0327, 0x0309, 0x02EC,\n    0x02D1, 0x02B8, 0x02A2, 0x0292, 0x0287, 0x0283, 0x0287, 0x0292,\n    0x02A2, 0x02B8, 0x02D1, 0x02EC, 0x0309, 0x0327, 0x0345, 0x0360,\n    0x0379, 0x038E, 0x039F, 0x03AA, 0x03AD, 0x03AA, 0x039F, 0x038E,\n    0x0379, 0x0360, 0x0345, 0x0327, 0x0309, 0x02EC, 0x02D1, 0x02B8,\n    0x02A2, 0x0292, 0x0287, 0x0283, 0x1549, 0x1548, 0x1547, 0x1544,\n    0x1541, 0x153D, 0x1539, 0x1535, 0x1531, 0x152D, 0x1529, 0x1526,\n    0x1523, 0x1522, 0x1521, 0x1522, 0x1523, 0x1525, 0x1528, 0x152B,\n    0x152F, 0x1533, 0x1537, 0x153B, 0x153E, 0x1542, 0x1545, 0x1547,\n    0x1548, 0x1549, 0x1548, 0x1547, 0x1545, 0x1542, 0x153E, 0x153B,\n    0x1537, 0x1533, 0x152F, 0x152B, 0x1528, 0x1525, 0x1523, 0x1522,\n    0x1521, 0x1522, 0x1523, 0x1525, 0x1528, 0x152B, 0x152F, 0x1533,\n    0x1537, 0x153B, 0x153E, 0x1542, 0x1545, 0x1547, 0x1548, 0x1549,\n    0x1548, 0x1547, 0x1545, 0x1542, 0x153E, 0x153B, 0x1537, 0x1533,\n    0x152F, 0x152B, 0x1528, 0x1525, 0x1523, 0x1522, 0x1521, 0x1522,\n    0x1523, 0x1525, 0x1528, 0x152B, 0x152F, 0x1533, 0x1537, 0x153B,\n    0x153E, 0x1542, 0x1545, 0x1547, 0x1548, 0x1549, 0x735F, 0x7368,\n    0x7380, 0x73A6, 0x73D6, 0x740E, 0x744B, 0x748B, 0x74CB, 0x7508,\n    0x7540, 0x7570, 0x7595, 0x75AE, 0x75B7, 0x75AF, 0x7599, 0x7578,\n    0x754D, 0x751B, 0x74E4, 0x74A9, 0x746D, 0x7432, 0x73FB, 0x73C8,\n    0x739D, 0x737C, 0x7367, 0x735F, 0x7367, 0x737C, 0x739D, 0x73C8,\n    0x73FB, 0x7432, 0x746D, 0x74A9, 0x74E4, 0x751B, 0x754D, 0x7578,\n    0x7599, 0x75AF, 0x75B7, 0x75AF, 0x7599, 0x7578, 0x754D, 0x751B,\n    0x74E4, 0x74A9, 0x746D, 0x7432, 0x73FB, 0x73C8, 0x739D, 0x737C,\n    0x7367, 0x735F, 0x7367, 0x737C, 0x739D, 0x73C8, 0x73FB, 0x7432,\n    0x746D, 0x74A9, 0x74E4, 0x751B, 0x754D, 0x7578, 0x7599, 0x75AF,\n    0x75B7, 0x75AF, 0x7599, 0x7578, 0x754D, 0x751B, 0x74E4, 0x74A9,\n    0x746D, 0x7432, 0x73FB, 0x73C8, 0x739D, 0x737C, 0x7367, 0x735F,\n    0xFA4C, 0xBB2D, 0x4C54, 0x0259, 0x0256, 0x024D, 0x0240, 0x0230,\n    0x021C, 0x0207, 0x01F1, 0x01DA, 0x01C5, 0x01B2, 0x01A1, 0x0194,\n    0x018B, 0x0188, 0x018B, 0x0192, 0x019E, 0x01AD, 0x01BE, 0x01D2,\n    0x01E6, 0x01FB, 0x020F, 0x0223, 0x0234, 0x0243, 0x024F, 0x0256,\n    0x0259, 0x0256, 0x024F, 0x0243, 0x0234, 0x0223, 0x020F, 0x01FB,\n    0x01E6, 0x01D2, 0x01BE, 0x01AD, 0x019E, 0x0192, 0x018B, 0x0188,\n    0x018B, 0x0192, 0x019E, 0x01AD, 0x01BE, 0x01D2, 0x01E6, 0x01FB,\n    0x020F, 0x0223, 0x0234, 0x0243, 0x024F, 0x0256, 0x0259, 0x0256,\n    0x024F, 0x0243, 0x0234, 0x0223, 0x020F, 0x01FB, 0x01E6, 0x01D2,\n    0x01BE, 0x01AD, 0x019E, 0x0192, 0x018B, 0x0188, 0x018B, 0x0192,\n    0x019E, 0x01AD, 0x01BE, 0x01D2, 0x01E6, 0x01FB, 0x020F, 0x0223,\n    0x0234, 0x0243, 0x024F, 0x0256, 0x0259, 0xED25, 0xED25, 0xED24,\n    0xED23, 0xED21, 0xED1F, 0xED1D, 0xED1B, 0xED19, 0xED17, 0xED15,\n    0xED14, 0xED12, 0xED12, 0xED11, 0xED12, 0xED12, 0xED13, 0xED15,\n    0xED17, 0xED18, 0xED1A, 0xED1C, 0xED1E, 0xED20, 0xED22, 0xED23,\n    0xED24, 0xED25, 0xED25, 0xED25, 0xED24, 0xED23, 0xED22, 0xED20,\n    0xED1E, 0xED1C, 0xED1A, 0xED18, 0xED17, 0xED15, 0xED13, 0xED12,\n    0xED12, 0xED11, 0xED12, 0xED12, 0xED13, 0xED15, 0xED17, 0xED18,\n    0xED1A, 0xED1C, 0xED1E, 0xED20, 0xED22, 0xED23, 0xED24, 0xED25,\n    0xED25, 0xED25, 0xED24, 0xED23, 0xED22, 0xED20, 0xED1E, 0xED1C,\n    0xED1A, 0xED18, 0xED17, 0xED15, 0xED13, 0xED12, 0xED12, 0xED11,\n    0xED12, 0xED12, 0xED13, 0xED15, 0xED17, 0xED18, 0xED1A, 0xED1C,\n    0xED1E, 0xED20, 0xED22, 0xED23, 0xED24, 0xED25, 0xED25, 0x7774,\n    0x777B, 0x778E, 0x77AB, 0x77D1, 0x77FC, 0x782C, 0x785D, 0x788F,\n    0x78BE, 0x78EA, 0x790F, 0x792C, 0x793F, 0x7946, 0x7940, 0x7930,\n    0x7916, 0x78F4, 0x78CD, 0x78A2, 0x7874, 0x7846, 0x7818, 0x77ED,\n    0x77C6, 0x77A5, 0x778B, 0x777A, 0x7774, 0x777A, 0x778B, 0x77A5,\n    0x77C6, 0x77ED, 0x7818, 0x7846, 0x7874, 0x78A2, 0x78CD, 0x78F4,\n    0x7916, 0x7930, 0x7940, 0x7946, 0x7940, 0x7930, 0x7916, 0x78F4,\n    0x78CD, 0x78A2, 0x7874, 0x7846, 0x7818, 0x77ED, 0x77C6, 0x77A5,\n    0x778B, 0x777A, 0x7774, 0x777A, 0x778B, 0x77A5, 0x77C6, 0x77ED,\n    0x7818, 0x7846, 0x7874, 0x78A2, 0x78CD, 0x78F4, 0x7916, 0x7930,\n    0x7940, 0x7946, 0x7940, 0x7930, 0x7916, 0x78F4, 0x78CD, 0x78A2,\n    0x7874, 0x7846, 0x7818, 0x77ED, 0x77C6, 0x77A5, 0x778B, 0x777A,\n    0x7774, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171,\n    0xBF5F, 0x0000, 0xFFB0, 0xFECD, 0xFD6D, 0xFBA2, 0xF983, 0xF724,\n    0xF499, 0xF1F6, 0xEF52, 0xECBF, 0xEA54, 0xE823, 0xE643, 0xE4C7,\n    0xE3C4, 0xE34E, 0xE37B, 0xE424, 0xE50F, 0xE639, 0xE79C, 0xE932,\n    0xEAF8, 0xECE6, 0xEEFA, 0xF12D, 0xF379, 0xF5DB, 0xF84E, 0xFACA,\n    0xFD4D, 0xFFD0, 0x024E, 0x04C3, 0x072A, 0x097C, 0x0BB6, 0x0DD2,\n    0x0FCA, 0x119A, 0x133C, 0x14AC, 0x15E4, 0x16E0, 0x1786, 0x17CA,\n    0x17B5, 0x1753, 0x16AD, 0x15CE, 0x14C0, 0x138E, 0x1243, 0x10E8,\n    0x0F88, 0x0E2E, 0x0CE3, 0x0BB3, 0x0AA8, 0x09CC, 0x092A, 0x08A8,\n    0x0827, 0x07A7, 0x0729, 0x06AD, 0x0633, 0x05BB, 0x0545, 0x04D3,\n    0x0464, 0x03F8, 0x0390, 0x032C, 0x02CD, 0x0272, 0x021C, 0x01CC,\n    0x0181, 0x013B, 0x00FC, 0x00C3, 0x0091, 0x0066, 0x0042, 0x0025,\n    0x0010, 0x0004, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFD,\n    0xFFFB, 0xFFF8, 0xFFF4, 0xFFF1, 0xFFED, 0xFFE9, 0xFFE5, 0xFFE1,\n    0xFFDE, 0xFFDA, 0xFFD7, 0xFFD5, 0xFFD3, 0xFFD2, 0xFFD2, 0xFFD2,\n    0xFFD3, 0xFFD6, 0xFFDA, 0xFFDE, 0xFFE5, 0xFFEC, 0xFFF6, 0x0000,\n    0x000F, 0x0026, 0x0042, 0x0063, 0x0089, 0x00B1, 0x00DB, 0x0105,\n    0x0130, 0x0159, 0x0181, 0x01A5, 0x01C4, 0x01DF, 0x01F3, 0x0200,\n    0x0204, 0x0202, 0x01FD, 0x01F4, 0x01E7, 0x01D9, 0x01C7, 0x01B3,\n    0x019E, 0x0186, 0x016D, 0x0154, 0x0139, 0x011D, 0x0102, 0x00E6,\n    0x00CB, 0x00B0, 0x0096, 0x007D, 0x0066, 0x0050, 0x003D, 0x002B,\n    0x001C, 0x0010, 0x0007, 0x0001, 0x0000, 0xDBCA, 0xDBCA, 0xDBCA,\n    0xDBCA, 0xDBCA, 0xDBCA, 0xDBCA, 0xDBCA, 0xDBCA, 0xDBCA, 0xDBCA,\n    0xDBCA, 0xDBCA, 0xDBCA, 0xDBCA, 0xDBCA, 0xDBCA, 0xDBCA, 0xDBCC,\n    0xDBD3, 0xDBDD, 0xDBEA, 0xDBFA, 0xDC0C, 0xDC20, 0xDC35, 0xDC4A,\n    0xDC5F, 0xDC74, 0xDC88, 0xDC9A, 0xDCAA, 0xDCB7, 0xDCC2, 0xDCC8,\n    0xDCCA, 0xDCC8, 0xDCC0, 0xDCB3, 0xDC9F, 0xDC84, 0xDC62, 0xDC38,\n    0xDC05, 0xDBCA, 0xDB75, 0xDAFA, 0xDA5F, 0xD9A8, 0xD8DD, 0xD802,\n    0xD71D, 0xD633, 0xD54A, 0xD468, 0xD392, 0xD2CD, 0xD220, 0xD190,\n    0xD122, 0xD0DC, 0xD0C3, 0xD0CE, 0xD0EC, 0xD11D, 0xD160, 0xD1B1,\n    0xD210, 0xD27C, 0xD2F3, 0xD373, 0xD3FA, 0xD488, 0xD51A, 0xD5AF,\n    0xD646, 0xD6DD, 0xD773, 0xD805, 0xD893, 0xD91A, 0xD99A, 0xDA11,\n    0xDA7C, 0xDADC, 0xDB2D, 0xDB6F, 0xDBA1, 0xDBBF, 0xDBCA, 0x34EF,\n    0x34EC, 0x34E3, 0x34D6, 0x34C5, 0x34B2, 0x349D, 0x3486, 0x3470,\n    0x345B, 0x3447, 0x3437, 0x342A, 0x3421, 0x341E, 0x3421, 0x3428,\n    0x3434, 0x3443, 0x3454, 0x3468, 0x347C, 0x3491, 0x34A5, 0x34B9,\n    0x34CA, 0x34D9, 0x34E5, 0x34EC, 0x34EF, 0x34EC, 0x34E5, 0x34D9,\n    0x34CA, 0x34B9, 0x34A5, 0x3491, 0x347C, 0x3468, 0x3454, 0x3443,\n    0x3434, 0x3428, 0x3421, 0x341E, 0x3421, 0x3428, 0x3434, 0x3443,\n    0x3454, 0x3468, 0x347C, 0x3491, 0x34A5, 0x34B9, 0x34CA, 0x34D9,\n    0x34E5, 0x34EC, 0x34EF, 0x34EC, 0x34E5, 0x34D9, 0x34CA, 0x34B9,\n    0x34A5, 0x3491, 0x347C, 0x3468, 0x3454, 0x3443, 0x3434, 0x3428,\n    0x3421, 0x341E, 0x3421, 0x3428, 0x3434, 0x3443, 0x3454, 0x3468,\n    0x347C, 0x3491, 0x34A5, 0x34B9, 0x34CA, 0x34D9, 0x34E5, 0x34EC,\n    0x34EF, 0x50ED, 0x50E7, 0x50D6, 0x50BC, 0x509A, 0x5073, 0x5049,\n    0x501C, 0x4FF0, 0x4FC5, 0x4F9F, 0x4F7D, 0x4F63, 0x4F52, 0x4F4C,\n    0x4F51, 0x4F60, 0x4F77, 0x4F95, 0x4FB8, 0x4FDF, 0x5008, 0x5031,\n    0x505A, 0x5081, 0x50A4, 0x50C2, 0x50D9, 0x50E8, 0x50ED, 0x50E8,\n    0x50D9, 0x50C2, 0x50A4, 0x5081, 0x505A, 0x5031, 0x5008, 0x4FDF,\n    0x4FB8, 0x4F95, 0x4F77, 0x4F60, 0x4F51, 0x4F4C, 0x4F51, 0x4F60,\n    0x4F77, 0x4F95, 0x4FB8, 0x4FDF, 0x5008, 0x5031, 0x505A, 0x5081,\n    0x50A4, 0x50C2, 0x50D9, 0x50E8, 0x50ED, 0x50E8, 0x50D9, 0x50C2,\n    0x50A4, 0x5081, 0x505A, 0x5031, 0x5008, 0x4FDF, 0x4FB8, 0x4F95,\n    0x4F77, 0x4F60, 0x4F51, 0x4F4C, 0x4F51, 0x4F60, 0x4F77, 0x4F95,\n    0x4FB8, 0x4FDF, 0x5008, 0x5031, 0x505A, 0x5081, 0x50A4, 0x50C2,\n    0x50D9, 0x50E8, 0x50ED,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_99.inc.c",
    "content": "static const struct Animation anim_99[] = {\n    0,\n    189,\n    0,\n    0,\n    0x5C,\n    ANIMINDEX_NUMPARTS(anim_99_indices),\n    anim_99_values,\n    anim_99_indices,\n    0,\n};\n\n\nstatic const u16 anim_99_indices[] = {\n    0x0001, 0x0000, 0x005C, 0x0001, 0x0001, 0x005D, 0x0001, 0x0000, 0x0001, 0x005E, 0x0001, 0x0000,\n    0x005C, 0x0C9F, 0x005C, 0x0CFB, 0x005C, 0x0D57,\n    0x005C, 0x0B8B, 0x005C, 0x0BE7, 0x005C, 0x0C43,\n    0x005C, 0x0A77, 0x005C, 0x0AD3, 0x005C, 0x0B2F,\n    0x0001, 0x0A73, 0x0001, 0x0A74, 0x0001, 0x0A75,\n    0x005C, 0x01CF, 0x005C, 0x022B, 0x005C, 0x0287,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005C, 0x0173,\n    0x005C, 0x005F, 0x005C, 0x00BB, 0x005C, 0x0117,\n    0x0001, 0x0A6F, 0x0001, 0x0A70, 0x0001, 0x0A71,\n    0x005C, 0x0453, 0x005C, 0x04AF, 0x005C, 0x050B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005C, 0x03F7,\n    0x005C, 0x02E3, 0x005C, 0x033F, 0x005C, 0x039B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0A72,\n    0x005C, 0x095B, 0x005C, 0x09B7, 0x005C, 0x0A13,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005C, 0x08FF,\n    0x005C, 0x07EB, 0x005C, 0x0847, 0x005C, 0x08A3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0A76,\n    0x005C, 0x06D7, 0x005C, 0x0733, 0x005C, 0x078F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005C, 0x067B,\n    0x005C, 0x0567, 0x005C, 0x05C3, 0x005C, 0x061F,\n};\n\nstatic const s16 anim_99_values[] = {\n    0x0000, 0x005B, 0x005B, 0x005B, 0x005B, 0x005B, 0x005B, 0x005B,\n    0x005B, 0x005B, 0x005B, 0x005B, 0x005B, 0x005B, 0x005B, 0x005B,\n    0x005B, 0x005B, 0x005B, 0x005A, 0x005A, 0x005A, 0x005A, 0x005A,\n    0x005A, 0x005A, 0x005A, 0x005A, 0x005A, 0x005A, 0x005A, 0x0059,\n    0x0059, 0x0059, 0x0059, 0x0059, 0x0058, 0x0058, 0x0058, 0x0058,\n    0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,\n    0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057, 0x0057,\n    0x0057, 0x0058, 0x0058, 0x0058, 0x0058, 0x0059, 0x0059, 0x0059,\n    0x0059, 0x0059, 0x005A, 0x005A, 0x005A, 0x005A, 0x005A, 0x005A,\n    0x005A, 0x005A, 0x005A, 0x005A, 0x005A, 0x005A, 0x005B, 0x005B,\n    0x005B, 0x005B, 0x005B, 0x005B, 0x005B, 0x005B, 0x005B, 0x005B,\n    0x005B, 0x005B, 0x005B, 0x005B, 0x005B, 0xFFDD, 0x3FFF, 0x18A4,\n    0x18A4, 0x18A4, 0x18A4, 0x1899, 0x187C, 0x184F, 0x1816, 0x17D4,\n    0x178B, 0x1740, 0x16F5, 0x16AE, 0x166E, 0x1637, 0x160D, 0x15EC,\n    0x15CC, 0x15AE, 0x1592, 0x157B, 0x1567, 0x1559, 0x1550, 0x154E,\n    0x1552, 0x155F, 0x1574, 0x1592, 0x15B7, 0x15E3, 0x1615, 0x164C,\n    0x1687, 0x16C5, 0x1705, 0x1746, 0x1787, 0x17C7, 0x1805, 0x1841,\n    0x1878, 0x18AB, 0x18D8, 0x18EC, 0x18E1, 0x18CB, 0x18BF, 0x18BE,\n    0x18BC, 0x18BB, 0x18BA, 0x18B9, 0x18B8, 0x18B7, 0x18B6, 0x18B5,\n    0x18B4, 0x18B4, 0x18B3, 0x18B2, 0x18B1, 0x18B0, 0x18AF, 0x18AF,\n    0x18AE, 0x18AD, 0x18AC, 0x18AC, 0x18AB, 0x18AA, 0x18AA, 0x18A9,\n    0x18A9, 0x18A8, 0x18A8, 0x18A7, 0x18A7, 0x18A6, 0x18A6, 0x18A6,\n    0x18A5, 0x18A5, 0x18A5, 0x18A4, 0x18A4, 0x18A4, 0x18A4, 0x18A4,\n    0x18A4, 0x18A4, 0x18A4, 0xFA05, 0xFA05, 0xFA05, 0xFA05, 0xFA21,\n    0xFA6C, 0xFADF, 0xFB6E, 0xFC11, 0xFCBE, 0xFD6B, 0xFE0E, 0xFE9E,\n    0xFF11, 0xFF5D, 0xFF79, 0xFF66, 0xFF2E, 0xFED7, 0xFE68, 0xFDE5,\n    0xFD55, 0xFCBD, 0xFC22, 0xFB8C, 0xFAFE, 0xFA7F, 0xFA15, 0xF9B4,\n    0xF94F, 0xF8E8, 0xF87E, 0xF815, 0xF7AD, 0xF749, 0xF6E8, 0xF68E,\n    0xF63B, 0xF5F0, 0xF5B0, 0xF57B, 0xF554, 0xF53B, 0xF533, 0xF5F0,\n    0xF795, 0xF940, 0xFA11, 0xFA2A, 0xFA40, 0xFA54, 0xFA66, 0xFA76,\n    0xFA84, 0xFA90, 0xFA9A, 0xFAA2, 0xFAA9, 0xFAAE, 0xFAB2, 0xFAB5,\n    0xFAB6, 0xFAB5, 0xFAB4, 0xFAB2, 0xFAAE, 0xFAAA, 0xFAA5, 0xFA9F,\n    0xFA99, 0xFA91, 0xFA8A, 0xFA82, 0xFA79, 0xFA71, 0xFA68, 0xFA5F,\n    0xFA56, 0xFA4D, 0xFA45, 0xFA3C, 0xFA34, 0xFA2C, 0xFA25, 0xFA1E,\n    0xFA18, 0xFA12, 0xFA0E, 0xFA0A, 0xFA07, 0xFA06, 0xFA05, 0xE39B,\n    0xE39B, 0xE39B, 0xE39B, 0xE3D4, 0xE470, 0xE55B, 0xE682, 0xE7D1,\n    0xE932, 0xEA92, 0xEBDE, 0xECFF, 0xEDE4, 0xEE77, 0xEEA4, 0xEE67,\n    0xEDD4, 0xECF8, 0xEBE5, 0xEAA8, 0xE951, 0xE7EF, 0xE691, 0xE546,\n    0xE41F, 0xE329, 0xE274, 0xE1EC, 0xE172, 0xE105, 0xE0A4, 0xE04F,\n    0xE005, 0xDFC6, 0xDF91, 0xDF65, 0xDF41, 0xDF25, 0xDF11, 0xDF03,\n    0xDEFB, 0xDEF8, 0xDEF9, 0xDF8E, 0xE0D1, 0xE21A, 0xE2BE, 0xE2D6,\n    0xE2EC, 0xE301, 0xE315, 0xE327, 0xE338, 0xE347, 0xE355, 0xE363,\n    0xE36F, 0xE379, 0xE383, 0xE38C, 0xE394, 0xE39A, 0xE3A0, 0xE3A6,\n    0xE3AA, 0xE3AE, 0xE3B0, 0xE3B3, 0xE3B4, 0xE3B5, 0xE3B6, 0xE3B6,\n    0xE3B6, 0xE3B5, 0xE3B4, 0xE3B3, 0xE3B1, 0xE3AF, 0xE3AE, 0xE3AC,\n    0xE3A9, 0xE3A7, 0xE3A5, 0xE3A3, 0xE3A1, 0xE3A0, 0xE39E, 0xE39D,\n    0xE39C, 0xE39B, 0xE39B, 0xCD92, 0xCD92, 0xCD92, 0xCD92, 0xCD89,\n    0xCD70, 0xCD4A, 0xCD1C, 0xCCEA, 0xCCB5, 0xCC83, 0xCC56, 0xCC33,\n    0xCC1C, 0xCC16, 0xCC24, 0xCC3E, 0xCC5A, 0xCC7B, 0xCCA3, 0xCCD5,\n    0xCD12, 0xCD5C, 0xCDB7, 0xCE24, 0xCEA6, 0xCF3F, 0xCFF1, 0xD0C4,\n    0xD1B9, 0xD2CC, 0xD3F9, 0xD539, 0xD688, 0xD7E2, 0xD940, 0xDA9E,\n    0xDBF7, 0xDD46, 0xDE86, 0xDFB2, 0xE0C5, 0xE1BA, 0xE28C, 0xE336,\n    0xE3B2, 0xE3FD, 0xE411, 0xE3FF, 0xE3DD, 0xE3AB, 0xE36B, 0xE31D,\n    0xE2C2, 0xE25B, 0xE1E8, 0xE16B, 0xE0E3, 0xE052, 0xDFB9, 0xDF19,\n    0xDE71, 0xDDC3, 0xDD11, 0xDC59, 0xDB9E, 0xDAE0, 0xDA20, 0xD95F,\n    0xD89D, 0xD7DB, 0xD71B, 0xD65C, 0xD59F, 0xD4E6, 0xD431, 0xD381,\n    0xD2D7, 0xD233, 0xD197, 0xD102, 0xD076, 0xCFF4, 0xCF7C, 0xCF10,\n    0xCEAF, 0xCE5B, 0xCE15, 0xCDDD, 0xCDB3, 0xCD9A, 0xCD92, 0x0B54,\n    0x0B54, 0x0B54, 0x0B54, 0x0B58, 0x0B64, 0x0B78, 0x0B93, 0x0BB4,\n    0x0BDC, 0x0C09, 0x0C3C, 0x0C73, 0x0CAF, 0x0CEE, 0x0D30, 0x0D76,\n    0x0DBD, 0x0E07, 0x0E51, 0x0E9D, 0x0EE9, 0x0F35, 0x0F81, 0x0FCB,\n    0x1014, 0x105B, 0x10A0, 0x10E9, 0x113D, 0x119A, 0x11FF, 0x126A,\n    0x12D8, 0x134A, 0x13BB, 0x142C, 0x149B, 0x1504, 0x1568, 0x15C4,\n    0x1616, 0x165D, 0x1697, 0x16C3, 0x16DE, 0x16E7, 0x16DC, 0x16C3,\n    0x16A4, 0x167E, 0x1651, 0x161F, 0x15E8, 0x15AB, 0x1569, 0x1523,\n    0x14D9, 0x148C, 0x143B, 0x13E6, 0x1390, 0x1337, 0x12DB, 0x127F,\n    0x1221, 0x11C2, 0x1163, 0x1103, 0x10A3, 0x1044, 0x0FE6, 0x0F89,\n    0x0F2D, 0x0ED4, 0x0E7C, 0x0E28, 0x0DD6, 0x0D87, 0x0D3C, 0x0CF5,\n    0x0CB3, 0x0C75, 0x0C3C, 0x0C08, 0x0BDA, 0x0BB3, 0x0B91, 0x0B77,\n    0x0B64, 0x0B58, 0x0B54, 0xE6E0, 0xE6E0, 0xE6E0, 0xE6E0, 0xE6E9,\n    0xE703, 0xE72C, 0xE764, 0xE7A8, 0xE7F9, 0xE854, 0xE8B9, 0xE926,\n    0xE99A, 0xEA14, 0xEA92, 0xEB14, 0xEB97, 0xEC1C, 0xECA0, 0xED22,\n    0xEDA1, 0xEE1D, 0xEE93, 0xEF02, 0xEF6A, 0xEFC9, 0xF01D, 0xF06E,\n    0xF0C2, 0xF119, 0xF171, 0xF1CA, 0xF221, 0xF278, 0xF2CB, 0xF31B,\n    0xF366, 0xF3AB, 0xF3E9, 0xF420, 0xF44D, 0xF471, 0xF48A, 0xF497,\n    0xF497, 0xF489, 0xF46C, 0xF443, 0xF414, 0xF3DD, 0xF3A1, 0xF35E,\n    0xF317, 0xF2CA, 0xF278, 0xF221, 0xF1C7, 0xF169, 0xF108, 0xF0A4,\n    0xF03E, 0xEFD5, 0xEF6A, 0xEEFE, 0xEE91, 0xEE24, 0xEDB6, 0xED48,\n    0xECDB, 0xEC6E, 0xEC03, 0xEB99, 0xEB32, 0xEACC, 0xEA69, 0xEA0A,\n    0xE9AE, 0xE955, 0xE901, 0xE8B2, 0xE867, 0xE822, 0xE7E2, 0xE7A9,\n    0xE776, 0xE74A, 0xE725, 0xE707, 0xE6F2, 0xE6E5, 0xE6E0, 0x9B42,\n    0x9B42, 0x9B42, 0x9B42, 0x9B2D, 0x9AF0, 0x9A8F, 0x9A0B, 0x9969,\n    0x98AB, 0x97D5, 0x96E9, 0x95EA, 0x94DC, 0x93C2, 0x929E, 0x9174,\n    0x9046, 0x8F18, 0x8DED, 0x8CC8, 0x8BAC, 0x8A9C, 0x899A, 0x88AB,\n    0x87D1, 0x870F, 0x8668, 0x85D1, 0x853C, 0x84AB, 0x841E, 0x8398,\n    0x8318, 0x82A0, 0x8230, 0x81CB, 0x8170, 0x8121, 0x80DE, 0x80AA,\n    0x8084, 0x806F, 0x806A, 0x8076, 0x8096, 0x80CA, 0x8113, 0x816D,\n    0x81D3, 0x8245, 0x82C2, 0x834A, 0x83DC, 0x8476, 0x851A, 0x85C4,\n    0x8676, 0x872E, 0x87EC, 0x88AF, 0x8976, 0x8A40, 0x8B0E, 0x8BDD,\n    0x8CAF, 0x8D81, 0x8E53, 0x8F25, 0x8FF5, 0x90C4, 0x9190, 0x9258,\n    0x931D, 0x93DD, 0x9498, 0x954D, 0x95FB, 0x96A2, 0x9741, 0x97D7,\n    0x9863, 0x98E5, 0x995D, 0x99C9, 0x9A29, 0x9A7C, 0x9AC1, 0x9AF9,\n    0x9B21, 0x9B3A, 0x9B42, 0xED57, 0xED57, 0xED57, 0xED57, 0xED57,\n    0xED57, 0xED56, 0xED56, 0xED55, 0xED54, 0xED53, 0xED52, 0xED50,\n    0xED4F, 0xED4D, 0xED4A, 0xED48, 0xED45, 0xED42, 0xED3E, 0xED3A,\n    0xED36, 0xED32, 0xED2D, 0xED28, 0xED22, 0xED1C, 0xED16, 0xED0F,\n    0xED07, 0xED00, 0xECF7, 0xECEF, 0xECE5, 0xECDC, 0xECD1, 0xECC7,\n    0xECBB, 0xECB0, 0xECA3, 0xEC96, 0xEC88, 0xEC7A, 0xEC6B, 0xEC5C,\n    0xEC4C, 0xEC3B, 0xEC2A, 0xEC10, 0xEBEA, 0xEBB7, 0xEB7C, 0xEB3A,\n    0xEAF4, 0xEAAB, 0xEA63, 0xEA1E, 0xE9DE, 0xE9A5, 0xE976, 0xE94D,\n    0xE927, 0xE906, 0xE8EB, 0xE8D9, 0xE8D2, 0xE8D6, 0xE8E8, 0xE906,\n    0xE92E, 0xE95D, 0xE993, 0xE9CE, 0xEA0C, 0xEA4C, 0xEA8C, 0xEACB,\n    0xEB07, 0xEB3F, 0xEB72, 0xEBA3, 0xEBD7, 0xEC0D, 0xEC44, 0xEC79,\n    0xECAB, 0xECDA, 0xED03, 0xED26, 0xED40, 0xED51, 0xED57, 0xFE53,\n    0xFE53, 0xFE53, 0xFE53, 0xFE53, 0xFE50, 0xFE4C, 0xFE46, 0xFE3F,\n    0xFE36, 0xFE2C, 0xFE20, 0xFE13, 0xFE05, 0xFDF5, 0xFDE3, 0xFDD0,\n    0xFDBC, 0xFDA7, 0xFD90, 0xFD78, 0xFD5F, 0xFD44, 0xFD29, 0xFD0C,\n    0xFCEE, 0xFCCF, 0xFCAE, 0xFC8D, 0xFC6B, 0xFC48, 0xFC23, 0xFBFE,\n    0xFBD8, 0xFBB1, 0xFB88, 0xFB5F, 0xFB36, 0xFB0B, 0xFAE0, 0xFAB3,\n    0xFA86, 0xFA59, 0xFA2A, 0xF9FB, 0xF9CC, 0xF99B, 0xF96A, 0xF923,\n    0xF8B5, 0xF829, 0xF789, 0xF6DB, 0xF629, 0xF57C, 0xF4DD, 0xF452,\n    0xF3E7, 0xF3A2, 0xF38D, 0xF3C2, 0xF448, 0xF50D, 0xF5FC, 0xF702,\n    0xF80B, 0xF903, 0xF9D7, 0xFA9A, 0xFB6B, 0xFC44, 0xFD20, 0xFDFB,\n    0xFECF, 0xFF98, 0x004F, 0x00F1, 0x0179, 0x01E2, 0x0225, 0x023A,\n    0x021F, 0x01DD, 0x017D, 0x0107, 0x0084, 0xFFFE, 0xFF7C, 0xFF07,\n    0xFEA9, 0xFE6A, 0xFE53, 0xEC6A, 0xEC6A, 0xEC6A, 0xEC6A, 0xEC67,\n    0xEC5B, 0xEC49, 0xEC2F, 0xEC10, 0xEBEA, 0xEBBF, 0xEB8E, 0xEB59,\n    0xEB1F, 0xEAE1, 0xEA9F, 0xEA5A, 0xEA12, 0xE9C7, 0xE979, 0xE92A,\n    0xE8D9, 0xE888, 0xE835, 0xE7E2, 0xE78E, 0xE73C, 0xE6E9, 0xE698,\n    0xE648, 0xE5FA, 0xE5AE, 0xE565, 0xE51F, 0xE4DC, 0xE49C, 0xE461,\n    0xE42A, 0xE3F7, 0xE3CA, 0xE3A3, 0xE381, 0xE365, 0xE350, 0xE342,\n    0xE33C, 0xE33D, 0xE346, 0xE37D, 0xE3FF, 0xE4C1, 0xE5B7, 0xE6D6,\n    0xE811, 0xE95F, 0xEAB3, 0xEC02, 0xED3F, 0xEE61, 0xEF5B, 0xF04E,\n    0xF157, 0xF262, 0xF35A, 0xF42B, 0xF4C2, 0xF50B, 0xF4F0, 0xF476,\n    0xF3B4, 0xF2B8, 0xF192, 0xF04F, 0xEEFC, 0xEDA9, 0xEC64, 0xEB3A,\n    0xEA39, 0xE971, 0xE8EE, 0xE8B3, 0xE8B2, 0xE8E0, 0xE934, 0xE9A3,\n    0xEA24, 0xEAAC, 0xEB32, 0xEBAC, 0xEC0F, 0xEC52, 0xEC6A, 0xE1F1,\n    0xE1F1, 0xE1F1, 0xE1F1, 0xE1E7, 0xE1CA, 0xE19A, 0xE159, 0xE107,\n    0xE0A5, 0xE035, 0xDFB6, 0xDF2A, 0xDE91, 0xDDEC, 0xDD3D, 0xDC84,\n    0xDBC1, 0xDAF7, 0xDA25, 0xD94C, 0xD86D, 0xD78A, 0xD6A3, 0xD5B8,\n    0xD4CB, 0xD3DC, 0xD2ED, 0xD1FE, 0xD10F, 0xD023, 0xCF39, 0xCE53,\n    0xCD71, 0xCC94, 0xCBBD, 0xCAEE, 0xCA25, 0xC966, 0xC8B0, 0xC804,\n    0xC763, 0xC6CE, 0xC646, 0xC5CC, 0xC560, 0xC503, 0xC4B6, 0xC487,\n    0xC480, 0xC49F, 0xC4DF, 0xC53E, 0xC5B8, 0xC64B, 0xC6F4, 0xC7AF,\n    0xC878, 0xC94E, 0xCA2C, 0xCB10, 0xCBF7, 0xCCDD, 0xCDBF, 0xCE9A,\n    0xCF6B, 0xD02E, 0xD0E2, 0xD194, 0xD255, 0xD324, 0xD3FE, 0xD4E0,\n    0xD5CA, 0xD6B9, 0xD7AB, 0xD89D, 0xD98F, 0xDA7E, 0xDB67, 0xDC4A,\n    0xDD23, 0xDDF2, 0xDEB3, 0xDF65, 0xE006, 0xE093, 0xE10C, 0xE16D,\n    0xE1B5, 0xE1E1, 0xE1F1, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE3, 0xEFE9,\n    0xEFFA, 0xF016, 0xF03C, 0xF06D, 0xF0A6, 0xF0E8, 0xF132, 0xF184,\n    0xF1DD, 0xF23C, 0xF2A1, 0xF30C, 0xF37B, 0xF3EF, 0xF466, 0xF4E1,\n    0xF55E, 0xF5DD, 0xF65E, 0xF6E0, 0xF762, 0xF7E5, 0xF866, 0xF8E7,\n    0xF966, 0xF9E2, 0xFA5C, 0xFAD2, 0xFB44, 0xFBB2, 0xFC1B, 0xFC7F,\n    0xFCDC, 0xFD33, 0xFD82, 0xFDCA, 0xFE0A, 0xFE40, 0xFE6E, 0xFE91,\n    0xFEAA, 0xFEB8, 0xFEBA, 0xFE9E, 0xFE53, 0xFDDE, 0xFD45, 0xFC8B,\n    0xFBB6, 0xFAC9, 0xF9CB, 0xF8BE, 0xF7A9, 0xF690, 0xF578, 0xF465,\n    0xF35B, 0xF261, 0xF179, 0xF0AA, 0xEFF7, 0xEF66, 0xEEFB, 0xEEAD,\n    0xEE6F, 0xEE3F, 0xEE1D, 0xEE07, 0xEDFC, 0xEDFC, 0xEE04, 0xEE15,\n    0xEE2D, 0xEE4A, 0xEE6C, 0xEE92, 0xEEBA, 0xEEE3, 0xEF0D, 0xEF36,\n    0xEF5D, 0xEF82, 0xEFA2, 0xEFBC, 0xEFD1, 0xEFDE, 0xEFE3, 0x11CD,\n    0x11CD, 0x11CD, 0x11CD, 0x11D1, 0x11DC, 0x11EF, 0x1208, 0x1228,\n    0x124E, 0x127A, 0x12AB, 0x12E1, 0x131C, 0x135B, 0x139F, 0x13E5,\n    0x142F, 0x147C, 0x14CB, 0x151D, 0x1570, 0x15C5, 0x161B, 0x1671,\n    0x16C8, 0x171F, 0x1776, 0x17CB, 0x1820, 0x1873, 0x18C5, 0x1914,\n    0x1961, 0x19AB, 0x19F2, 0x1A35, 0x1A74, 0x1AAE, 0x1AE5, 0x1B16,\n    0x1B41, 0x1B67, 0x1B87, 0x1BA0, 0x1BB3, 0x1BBE, 0x1BC2, 0x1BB2,\n    0x1B85, 0x1B3C, 0x1ADD, 0x1A68, 0x19E2, 0x194D, 0x18AC, 0x1803,\n    0x1753, 0x16A1, 0x15EF, 0x153F, 0x1496, 0x13F6, 0x1362, 0x12DC,\n    0x1269, 0x120A, 0x11C4, 0x118E, 0x1162, 0x113F, 0x1123, 0x110F,\n    0x1101, 0x10FA, 0x10F8, 0x10FB, 0x1102, 0x110D, 0x111A, 0x112B,\n    0x113C, 0x1150, 0x1163, 0x1177, 0x118A, 0x119C, 0x11AC, 0x11B9,\n    0x11C4, 0x11CA, 0x11CD, 0x7D14, 0x7D14, 0x7D14, 0x7D14, 0x7D24,\n    0x7D51, 0x7D9A, 0x7DFE, 0x7E7B, 0x7F11, 0x7FBD, 0x8081, 0x8156,\n    0x823E, 0x8336, 0x843F, 0x8555, 0x8678, 0x87A7, 0x88E0, 0x8A21,\n    0x8B6A, 0x8CB9, 0x8E0B, 0x8F61, 0x90B9, 0x9211, 0x9368, 0x94BC,\n    0x960C, 0x9757, 0x989B, 0x99D7, 0x9B09, 0x9C31, 0x9D4C, 0x9E59,\n    0x9F57, 0xA045, 0xA121, 0xA1E9, 0xA29C, 0xA33A, 0xA3C0, 0xA42D,\n    0xA47F, 0xA4B6, 0xA4D0, 0xA49F, 0xA401, 0xA2FE, 0xA1A4, 0x9FFB,\n    0x9E10, 0x9BED, 0x999E, 0x972C, 0x94A3, 0x920E, 0x8F78, 0x8CEC,\n    0x8A75, 0x881D, 0x85F0, 0x83F8, 0x8240, 0x80D4, 0x7FBB, 0x7EE4,\n    0x7E29, 0x7D8B, 0x7D07, 0x7C9B, 0x7C45, 0x7C04, 0x7BD6, 0x7BB8,\n    0x7BAA, 0x7BA8, 0x7BB3, 0x7BC6, 0x7BE2, 0x7C04, 0x7C2A, 0x7C52,\n    0x7C7A, 0x7CA2, 0x7CC6, 0x7CE6, 0x7CFE, 0x7D0F, 0x7D14, 0xFFAD,\n    0xFFAD, 0xFFAD, 0xFFAD, 0xFFAE, 0xFFAE, 0xFFB0, 0xFFB1, 0xFFB3,\n    0xFFB6, 0xFFB9, 0xFFBC, 0xFFBF, 0xFFC2, 0xFFC6, 0xFFCA, 0xFFCE,\n    0xFFD2, 0xFFD6, 0xFFDA, 0xFFDE, 0xFFE1, 0xFFE5, 0xFFE9, 0xFFEC,\n    0xFFEF, 0xFFF2, 0xFFF5, 0xFFF7, 0xFFF9, 0xFFFA, 0xFFFB, 0xFFFB,\n    0xFFFB, 0xFFFB, 0xFFF9, 0xFFF7, 0xFFF5, 0xFFF1, 0xFFED, 0xFFE9,\n    0xFFE3, 0xFFDC, 0xFFD5, 0xFFCD, 0xFFC3, 0xFFB9, 0xFFAD, 0xFF9D,\n    0xFF85, 0xFF65, 0xFF3F, 0xFF14, 0xFEE5, 0xFEB2, 0xFE7E, 0xFE47,\n    0xFE11, 0xFDDB, 0xFDA6, 0xFD75, 0xFD46, 0xFD1C, 0xFCF8, 0xFCDA,\n    0xFCC3, 0xFCB5, 0xFCB0, 0xFCB4, 0xFCBF, 0xFCD1, 0xFCE9, 0xFD06,\n    0xFD28, 0xFD4D, 0xFD76, 0xFDA2, 0xFDD0, 0xFDFF, 0xFE2F, 0xFE5E,\n    0xFE8D, 0xFEBB, 0xFEE7, 0xFF10, 0xFF36, 0xFF58, 0xFF75, 0xFF8C,\n    0xFF9E, 0xFFA9, 0xFFAD, 0x03BB, 0x03BB, 0x03BB, 0x03BB, 0x03BB,\n    0x03BA, 0x03B9, 0x03B7, 0x03B5, 0x03B2, 0x03AF, 0x03AB, 0x03A8,\n    0x03A4, 0x03A0, 0x039C, 0x0397, 0x0393, 0x038E, 0x038A, 0x0386,\n    0x0381, 0x037D, 0x0379, 0x0375, 0x0372, 0x036F, 0x036C, 0x0369,\n    0x0367, 0x0366, 0x0365, 0x0364, 0x0364, 0x0365, 0x0367, 0x0369,\n    0x036C, 0x036F, 0x0374, 0x0379, 0x0380, 0x0387, 0x038F, 0x0399,\n    0x03A3, 0x03AF, 0x03BB, 0x03CE, 0x03E9, 0x040C, 0x0436, 0x0467,\n    0x049B, 0x04D4, 0x050F, 0x054B, 0x0588, 0x05C5, 0x05FF, 0x0637,\n    0x066B, 0x0699, 0x06C2, 0x06E4, 0x06FD, 0x070D, 0x0712, 0x070E,\n    0x0702, 0x06EE, 0x06D3, 0x06B2, 0x068D, 0x0663, 0x0635, 0x0604,\n    0x05D1, 0x059C, 0x0567, 0x0532, 0x04FD, 0x04CA, 0x0499, 0x046B,\n    0x0441, 0x041B, 0x03FB, 0x03E0, 0x03CC, 0x03C0, 0x03BB, 0xDA84,\n    0xDA84, 0xDA84, 0xDA84, 0xDA86, 0xDA8B, 0xDA93, 0xDA9D, 0xDAAB,\n    0xDABA, 0xDACC, 0xDADF, 0xDAF4, 0xDB0A, 0xDB22, 0xDB3A, 0xDB53,\n    0xDB6C, 0xDB85, 0xDB9F, 0xDBB8, 0xDBD0, 0xDBE8, 0xDBFF, 0xDC14,\n    0xDC28, 0xDC3A, 0xDC4A, 0xDC58, 0xDC64, 0xDC6D, 0xDC73, 0xDC76,\n    0xDC75, 0xDC71, 0xDC69, 0xDC5C, 0xDC4C, 0xDC37, 0xDC1D, 0xDBFE,\n    0xDBDA, 0xDBB0, 0xDB80, 0xDB4B, 0xDB0F, 0xDACD, 0xDA84, 0xDA1C,\n    0xD980, 0xD8B6, 0xD7C5, 0xD6B2, 0xD584, 0xD442, 0xD2F0, 0xD197,\n    0xD03A, 0xCEE2, 0xCD93, 0xCC55, 0xCB2D, 0xCA22, 0xC939, 0xC87A,\n    0xC7E9, 0xC78E, 0xC76E, 0xC787, 0xC7CE, 0xC840, 0xC8D8, 0xC992,\n    0xCA6A, 0xCB5B, 0xCC61, 0xCD78, 0xCE9C, 0xCFC8, 0xD0F9, 0xD22A,\n    0xD356, 0xD47A, 0xD591, 0xD698, 0xD789, 0xD860, 0xD91A, 0xD9B2,\n    0xDA24, 0xDA6B, 0xDA84, 0x4C54, 0x4C54, 0x4C54, 0x4C54, 0x4C56,\n    0x4C5C, 0x4C67, 0x4C76, 0x4C88, 0x4C9E, 0x4CB7, 0x4CD3, 0x4CF2,\n    0x4D14, 0x4D39, 0x4D60, 0x4D89, 0x4DB4, 0x4DE0, 0x4E0E, 0x4E3E,\n    0x4E6F, 0x4EA0, 0x4ED3, 0x4F06, 0x4F39, 0x4F6D, 0x4FA0, 0x4FD4,\n    0x5006, 0x5039, 0x506A, 0x509B, 0x50CA, 0x50F7, 0x5124, 0x514E,\n    0x5176, 0x519C, 0x51C0, 0x51E1, 0x5200, 0x521B, 0x5233, 0x5248,\n    0x5259, 0x5267, 0x5270, 0x5270, 0x5264, 0x524B, 0x5228, 0x51FB,\n    0x51C6, 0x518A, 0x5149, 0x5102, 0x50B9, 0x506D, 0x5020, 0x4FD4,\n    0x4F89, 0x4F41, 0x4EFC, 0x4EBD, 0x4E84, 0x4E53, 0x4E2B, 0x4E08,\n    0x4DE6, 0x4DC5, 0x4DA5, 0x4D87, 0x4D69, 0x4D4D, 0x4D32, 0x4D19,\n    0x4D01, 0x4CEA, 0x4CD5, 0x4CC1, 0x4CAE, 0x4C9E, 0x4C8F, 0x4C81,\n    0x4C75, 0x4C6B, 0x4C63, 0x4C5C, 0x4C57, 0x4C54, 0x4C54, 0xFF1D,\n    0xFF1D, 0xFF1D, 0xFF1D, 0xFF1B, 0xFF16, 0xFF0D, 0xFF01, 0xFEF2,\n    0xFEE0, 0xFECC, 0xFEB5, 0xFE9B, 0xFE80, 0xFE63, 0xFE44, 0xFE23,\n    0xFE01, 0xFDDD, 0xFDB9, 0xFD93, 0xFD6D, 0xFD47, 0xFD20, 0xFCF8,\n    0xFCD1, 0xFCAA, 0xFC83, 0xFC5D, 0xFC38, 0xFC13, 0xFBF0, 0xFBCD,\n    0xFBAC, 0xFB8D, 0xFB6F, 0xFB54, 0xFB3A, 0xFB23, 0xFB0E, 0xFAFC,\n    0xFAED, 0xFAE0, 0xFAD7, 0xFAD1, 0xFACF, 0xFAD1, 0xFAD6, 0xFAE7,\n    0xFB09, 0xFB3B, 0xFB7B, 0xFBC7, 0xFC1E, 0xFC7C, 0xFCE1, 0xFD4B,\n    0xFDB8, 0xFE25, 0xFE91, 0xFEFB, 0xFF60, 0xFFBE, 0x0013, 0x005E,\n    0x009D, 0x00CF, 0x00F0, 0x0105, 0x0111, 0x0115, 0x0113, 0x010A,\n    0x00FB, 0x00E7, 0x00CF, 0x00B3, 0x0095, 0x0074, 0x0051, 0x002D,\n    0x0009, 0xFFE6, 0xFFC3, 0xFFA1, 0xFF82, 0xFF66, 0xFF4D, 0xFF39,\n    0xFF2A, 0xFF20, 0xFF1D, 0x13FB, 0x13FB, 0x13FB, 0x13FB, 0x13FA,\n    0x13F9, 0x13F7, 0x13F4, 0x13F1, 0x13ED, 0x13E9, 0x13E4, 0x13DF,\n    0x13D9, 0x13D3, 0x13CC, 0x13C5, 0x13BE, 0x13B7, 0x13B0, 0x13A8,\n    0x13A1, 0x1399, 0x1391, 0x138A, 0x1383, 0x137C, 0x1375, 0x136E,\n    0x1368, 0x1362, 0x135C, 0x1357, 0x1353, 0x134E, 0x134B, 0x1348,\n    0x1346, 0x1344, 0x1344, 0x1344, 0x1345, 0x1347, 0x1349, 0x134D,\n    0x1352, 0x1358, 0x135F, 0x136A, 0x137D, 0x1395, 0x13B3, 0x13D6,\n    0x13FC, 0x1425, 0x1451, 0x147E, 0x14AB, 0x14D9, 0x1505, 0x152F,\n    0x1557, 0x157C, 0x159C, 0x15B7, 0x15CD, 0x15DC, 0x15E3, 0x15E4,\n    0x15DF, 0x15D6, 0x15C9, 0x15B7, 0x15A3, 0x158B, 0x1571, 0x1555,\n    0x1537, 0x1519, 0x14F9, 0x14DA, 0x14BB, 0x149D, 0x147F, 0x1464,\n    0x144B, 0x1434, 0x1421, 0x1411, 0x1405, 0x13FD, 0x13FB, 0x9575,\n    0x9575, 0x9575, 0x9575, 0x9571, 0x9566, 0x9553, 0x953A, 0x951B,\n    0x94F5, 0x94CA, 0x9499, 0x9464, 0x942A, 0x93EC, 0x93AA, 0x9365,\n    0x931D, 0x92D2, 0x9285, 0x9236, 0x91E5, 0x9193, 0x9140, 0x90ED,\n    0x909A, 0x9047, 0x8FF4, 0x8FA3, 0x8F53, 0x8F05, 0x8EB9, 0x8E6F,\n    0x8E28, 0x8DE5, 0x8DA5, 0x8D69, 0x8D32, 0x8CFF, 0x8CD1, 0x8CA9,\n    0x8C87, 0x8C6A, 0x8C55, 0x8C46, 0x8C3F, 0x8C3F, 0x8C47, 0x8C67,\n    0x8CAA, 0x8D0D, 0x8D8C, 0x8E24, 0x8ED0, 0x8F8E, 0x9058, 0x912D,\n    0x9207, 0x92E3, 0x93BD, 0x9492, 0x955E, 0x961D, 0x96CB, 0x9765,\n    0x97E6, 0x984C, 0x9893, 0x98C0, 0x98DD, 0x98EB, 0x98EC, 0x98E1,\n    0x98CA, 0x98AA, 0x9882, 0x9852, 0x981D, 0x97E2, 0x97A4, 0x9764,\n    0x9723, 0x96E2, 0x96A3, 0x9666, 0x962E, 0x95FB, 0x95CE, 0x95A9,\n    0x958D, 0x957B, 0x9575, 0xF769, 0xF769, 0xF769, 0xF769, 0xF771,\n    0xF785, 0xF7A5, 0xF7D0, 0xF804, 0xF83F, 0xF880, 0xF8C5, 0xF90D,\n    0xF957, 0xF9A1, 0xF9E9, 0xFA2F, 0xFA70, 0xFAAB, 0xFADE, 0xFB09,\n    0xFB29, 0xFB3E, 0xFB45, 0xFB41, 0xFB34, 0xFB1F, 0xFB04, 0xFAE2,\n    0xFABB, 0xFA8F, 0xFA5F, 0xFA2B, 0xF9F5, 0xF9BD, 0xF983, 0xF949,\n    0xF90E, 0xF8D5, 0xF89D, 0xF868, 0xF835, 0xF806, 0xF7DB, 0xF7B5,\n    0xF795, 0xF77C, 0xF769, 0xF75C, 0xF74F, 0xF744, 0xF739, 0xF730,\n    0xF728, 0xF722, 0xF71C, 0xF717, 0xF713, 0xF710, 0xF70D, 0xF70C,\n    0xF70B, 0xF70B, 0xF70B, 0xF70C, 0xF70E, 0xF710, 0xF713, 0xF716,\n    0xF71A, 0xF71D, 0xF721, 0xF726, 0xF72A, 0xF72F, 0xF734, 0xF739,\n    0xF73D, 0xF742, 0xF747, 0xF74B, 0xF750, 0xF754, 0xF758, 0xF75C,\n    0xF75F, 0xF762, 0xF765, 0xF767, 0xF768, 0xF769, 0xF769, 0xF7BB,\n    0xF7BB, 0xF7BB, 0xF7BB, 0xF7B5, 0xF7A3, 0xF787, 0xF762, 0xF735,\n    0xF702, 0xF6CA, 0xF68D, 0xF64F, 0xF60E, 0xF5CE, 0xF58F, 0xF553,\n    0xF51B, 0xF4E7, 0xF4BB, 0xF496, 0xF479, 0xF468, 0xF461, 0xF465,\n    0xF470, 0xF482, 0xF49A, 0xF4B7, 0xF4D9, 0xF500, 0xF529, 0xF556,\n    0xF585, 0xF5B6, 0xF5E9, 0xF61B, 0xF64E, 0xF680, 0xF6B0, 0xF6DF,\n    0xF70B, 0xF734, 0xF759, 0xF77A, 0xF795, 0xF7AC, 0xF7BB, 0xF7C7,\n    0xF7D2, 0xF7DC, 0xF7E5, 0xF7ED, 0xF7F4, 0xF7FA, 0xF7FF, 0xF803,\n    0xF807, 0xF80A, 0xF80C, 0xF80D, 0xF80E, 0xF80E, 0xF80D, 0xF80C,\n    0xF80B, 0xF809, 0xF807, 0xF804, 0xF801, 0xF7FE, 0xF7FA, 0xF7F6,\n    0xF7F2, 0xF7EE, 0xF7EA, 0xF7E6, 0xF7E2, 0xF7DE, 0xF7D9, 0xF7D5,\n    0xF7D2, 0xF7CE, 0xF7CA, 0xF7C7, 0xF7C4, 0xF7C2, 0xF7C0, 0xF7BE,\n    0xF7BD, 0xF7BC, 0xF7BB, 0xD553, 0xD553, 0xD553, 0xD553, 0xD539,\n    0xD4EF, 0xD479, 0xD3DE, 0xD322, 0xD24C, 0xD160, 0xD063, 0xCF5C,\n    0xCE50, 0xCD44, 0xCC3D, 0xCB40, 0xCA54, 0xC97E, 0xC8C2, 0xC827,\n    0xC7B1, 0xC767, 0xC74D, 0xC75D, 0xC78B, 0xC7D6, 0xC839, 0xC8B4,\n    0xC942, 0xC9E2, 0xCA92, 0xCB4D, 0xCC13, 0xCCE0, 0xCDB2, 0xCE85,\n    0xCF59, 0xD02A, 0xD0F5, 0xD1B8, 0xD270, 0xD31B, 0xD3B7, 0xD440,\n    0xD4B4, 0xD511, 0xD553, 0xD586, 0xD5B3, 0xD5DD, 0xD602, 0xD623,\n    0xD640, 0xD659, 0xD66E, 0xD680, 0xD68F, 0xD69A, 0xD6A2, 0xD6A8,\n    0xD6AB, 0xD6AB, 0xD6A9, 0xD6A5, 0xD69F, 0xD697, 0xD68D, 0xD682,\n    0xD676, 0xD668, 0xD659, 0xD649, 0xD639, 0xD628, 0xD617, 0xD605,\n    0xD5F4, 0xD5E2, 0xD5D1, 0xD5C0, 0xD5B0, 0xD5A1, 0xD592, 0xD585,\n    0xD579, 0xD56E, 0xD565, 0xD55D, 0xD558, 0xD554, 0xD553, 0x4FFE,\n    0x4FFE, 0x4FFE, 0x4FFE, 0x4FFC, 0x4FF6, 0x4FEC, 0x4FDF, 0x4FCE,\n    0x4FB9, 0x4FA2, 0x4F88, 0x4F6B, 0x4F4C, 0x4F2A, 0x4F07, 0x4EE1,\n    0x4EBA, 0x4E91, 0x4E67, 0x4E3B, 0x4E0F, 0x4DE2, 0x4DB4, 0x4D86,\n    0x4D58, 0x4D2A, 0x4CFC, 0x4CCE, 0x4CA1, 0x4C75, 0x4C4A, 0x4C20,\n    0x4BF7, 0x4BCF, 0x4BAA, 0x4B86, 0x4B65, 0x4B45, 0x4B28, 0x4B0E,\n    0x4AF7, 0x4AE3, 0x4AD2, 0x4AC4, 0x4ABA, 0x4AB4, 0x4AB2, 0x4AB4,\n    0x4ABA, 0x4AC4, 0x4AD2, 0x4AE3, 0x4AF7, 0x4B0E, 0x4B28, 0x4B45,\n    0x4B65, 0x4B86, 0x4BAA, 0x4BCF, 0x4BF7, 0x4C20, 0x4C4A, 0x4C75,\n    0x4CA1, 0x4CCE, 0x4CFC, 0x4D2A, 0x4D58, 0x4D86, 0x4DB4, 0x4DE2,\n    0x4E0F, 0x4E3B, 0x4E67, 0x4E91, 0x4EBA, 0x4EE1, 0x4F07, 0x4F2A,\n    0x4F4C, 0x4F6B, 0x4F88, 0x4FA2, 0x4FB9, 0x4FCE, 0x4FDF, 0x4FEC,\n    0x4FF6, 0x4FFC, 0x4FFE, 0xFCEF, 0xFCEF, 0xFCEF, 0xFCEF, 0xFCED,\n    0xFCE8, 0xFCE1, 0xFCD7, 0xFCCA, 0xFCBB, 0xFCA9, 0xFC95, 0xFC80,\n    0xFC68, 0xFC4F, 0xFC34, 0xFC18, 0xFBFA, 0xFBDB, 0xFBBB, 0xFB9B,\n    0xFB79, 0xFB57, 0xFB35, 0xFB12, 0xFAF0, 0xFACD, 0xFAAA, 0xFA88,\n    0xFA66, 0xFA44, 0xFA24, 0xFA04, 0xF9E5, 0xF9C8, 0xF9AB, 0xF990,\n    0xF977, 0xF95F, 0xF94A, 0xF936, 0xF925, 0xF915, 0xF908, 0xF8FE,\n    0xF8F7, 0xF8F2, 0xF8F1, 0xF8F2, 0xF8F7, 0xF8FE, 0xF908, 0xF915,\n    0xF925, 0xF936, 0xF94A, 0xF95F, 0xF977, 0xF990, 0xF9AB, 0xF9C8,\n    0xF9E5, 0xFA04, 0xFA24, 0xFA44, 0xFA66, 0xFA88, 0xFAAA, 0xFACD,\n    0xFAF0, 0xFB12, 0xFB35, 0xFB57, 0xFB79, 0xFB9B, 0xFBBB, 0xFBDB,\n    0xFBFA, 0xFC18, 0xFC34, 0xFC4F, 0xFC68, 0xFC80, 0xFC95, 0xFCA9,\n    0xFCBB, 0xFCCA, 0xFCD7, 0xFCE1, 0xFCE8, 0xFCED, 0xFCEF, 0xE6A9,\n    0xE6A9, 0xE6A9, 0xE6A9, 0xE6A9, 0xE6AA, 0xE6AC, 0xE6AD, 0xE6B0,\n    0xE6B2, 0xE6B5, 0xE6B9, 0xE6BD, 0xE6C1, 0xE6C6, 0xE6CA, 0xE6CF,\n    0xE6D5, 0xE6DA, 0xE6E0, 0xE6E6, 0xE6EB, 0xE6F1, 0xE6F8, 0xE6FE,\n    0xE704, 0xE70A, 0xE710, 0xE716, 0xE71C, 0xE722, 0xE728, 0xE72E,\n    0xE733, 0xE739, 0xE73E, 0xE742, 0xE747, 0xE74B, 0xE74F, 0xE752,\n    0xE756, 0xE758, 0xE75B, 0xE75C, 0xE75E, 0xE75E, 0xE75F, 0xE75E,\n    0xE75E, 0xE75C, 0xE75B, 0xE758, 0xE756, 0xE752, 0xE74F, 0xE74B,\n    0xE747, 0xE742, 0xE73E, 0xE739, 0xE733, 0xE72E, 0xE728, 0xE722,\n    0xE71C, 0xE716, 0xE710, 0xE70A, 0xE704, 0xE6FE, 0xE6F8, 0xE6F1,\n    0xE6EB, 0xE6E6, 0xE6E0, 0xE6DA, 0xE6D5, 0xE6CF, 0xE6CA, 0xE6C6,\n    0xE6C1, 0xE6BD, 0xE6B9, 0xE6B5, 0xE6B2, 0xE6B0, 0xE6AD, 0xE6AC,\n    0xE6AA, 0xE6A9, 0xE6A9, 0x8E9B, 0x8E9B, 0x8E9B, 0x8E9B, 0x8E9E,\n    0x8EA6, 0x8EB3, 0x8EC5, 0x8EDB, 0x8EF5, 0x8F14, 0x8F36, 0x8F5B,\n    0x8F84, 0x8FB0, 0x8FDF, 0x9010, 0x9043, 0x9079, 0x90B0, 0x90E9,\n    0x9122, 0x915D, 0x9199, 0x91D5, 0x9212, 0x924E, 0x928A, 0x92C6,\n    0x9301, 0x933A, 0x9373, 0x93AA, 0x93E0, 0x9413, 0x9444, 0x9473,\n    0x949F, 0x94C8, 0x94ED, 0x950F, 0x952E, 0x9548, 0x955E, 0x9570,\n    0x957D, 0x9585, 0x9588, 0x9585, 0x957D, 0x9570, 0x955E, 0x9548,\n    0x952E, 0x950F, 0x94ED, 0x94C8, 0x949F, 0x9473, 0x9444, 0x9413,\n    0x93E0, 0x93AA, 0x9373, 0x933A, 0x9301, 0x92C6, 0x928A, 0x924E,\n    0x9212, 0x91D5, 0x9199, 0x915D, 0x9122, 0x90E9, 0x90B0, 0x9079,\n    0x9043, 0x9010, 0x8FDF, 0x8FB0, 0x8F84, 0x8F5B, 0x8F36, 0x8F14,\n    0x8EF5, 0x8EDB, 0x8EC5, 0x8EB3, 0x8EA6, 0x8E9E, 0x8E9B, 0x8001,\n    0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F, 0xF53F,\n    0xF53F, 0xF53F, 0xF53F, 0xF547, 0xF55E, 0xF583, 0xF5B5, 0xF5F3,\n    0xF63C, 0xF690, 0xF6EC, 0xF751, 0xF7BD, 0xF82F, 0xF8A6, 0xF921,\n    0xF99F, 0xFA20, 0xFAA2, 0xFB24, 0xFBA5, 0xFC24, 0xFCA0, 0xFD19,\n    0xFD8D, 0xFDFB, 0xFE62, 0xFECB, 0xFF3E, 0xFFB9, 0x003A, 0x00C0,\n    0x0149, 0x01D4, 0x025E, 0x02E7, 0x036B, 0x03EB, 0x0463, 0x04D2,\n    0x0537, 0x0590, 0x05DB, 0x0616, 0x0640, 0x0657, 0x0659, 0x0645,\n    0x061B, 0x05DC, 0x058B, 0x052A, 0x04BB, 0x043F, 0x03B9, 0x032B,\n    0x0295, 0x01FC, 0x0160, 0x00C3, 0x0027, 0xFF90, 0xFEFD, 0xFE71,\n    0xFDEE, 0xFD76, 0xFD0C, 0xFCA6, 0xFC3D, 0xFBD1, 0xFB63, 0xFAF4,\n    0xFA84, 0xFA14, 0xF9A4, 0xF936, 0xF8CA, 0xF860, 0xF7FB, 0xF799,\n    0xF73C, 0xF6E5, 0xF693, 0xF649, 0xF607, 0xF5CD, 0xF59B, 0xF574,\n    0xF557, 0xF545, 0xF53F, 0x0253, 0x0253, 0x0253, 0x0253, 0x0252,\n    0x024D, 0x0245, 0x023A, 0x022D, 0x021E, 0x020C, 0x01F8, 0x01E3,\n    0x01CC, 0x01B4, 0x019A, 0x0180, 0x0165, 0x014A, 0x012E, 0x0112,\n    0x00F7, 0x00DB, 0x00C1, 0x00A7, 0x008E, 0x0076, 0x0060, 0x0049,\n    0x0030, 0x0015, 0xFFF9, 0xFFDC, 0xFFBD, 0xFF9F, 0xFF80, 0xFF62,\n    0xFF44, 0xFF28, 0xFF0D, 0xFEF4, 0xFEDE, 0xFECA, 0xFEB9, 0xFEAC,\n    0xFEA3, 0xFE9E, 0xFE9D, 0xFEA2, 0xFEAB, 0xFEB9, 0xFECB, 0xFEE0,\n    0xFEF9, 0xFF15, 0xFF32, 0xFF52, 0xFF73, 0xFF95, 0xFFB8, 0xFFDB,\n    0xFFFD, 0x001E, 0x003E, 0x005D, 0x007A, 0x0094, 0x00AB, 0x00C1,\n    0x00D8, 0x00EF, 0x0106, 0x011E, 0x0136, 0x014E, 0x0166, 0x017D,\n    0x0194, 0x01AA, 0x01C0, 0x01D5, 0x01E8, 0x01FB, 0x020C, 0x021B,\n    0x0229, 0x0236, 0x0240, 0x0248, 0x024E, 0x0252, 0x0253, 0xD9D9,\n    0xD9D9, 0xD9D9, 0xD9D9, 0xD9D9, 0xD9D9, 0xD9D8, 0xD9D8, 0xD9D7,\n    0xD9D5, 0xD9D4, 0xD9D3, 0xD9D2, 0xD9D0, 0xD9CF, 0xD9CE, 0xD9CC,\n    0xD9CB, 0xD9CA, 0xD9C9, 0xD9C8, 0xD9C7, 0xD9C7, 0xD9C7, 0xD9C7,\n    0xD9C7, 0xD9C7, 0xD9C8, 0xD9CA, 0xD9CB, 0xD9CD, 0xD9CF, 0xD9D1,\n    0xD9D4, 0xD9D7, 0xD9DA, 0xD9DD, 0xD9E0, 0xD9E4, 0xD9E8, 0xD9EC,\n    0xD9F0, 0xD9F4, 0xD9F8, 0xD9FD, 0xDA02, 0xDA06, 0xDA0B, 0xDA11,\n    0xDA17, 0xDA1F, 0xDA27, 0xDA2F, 0xDA38, 0xDA41, 0xDA4B, 0xDA54,\n    0xDA5D, 0xDA66, 0xDA6E, 0xDA76, 0xDA7D, 0xDA83, 0xDA88, 0xDA8C,\n    0xDA8F, 0xDA90, 0xDA90, 0xDA8E, 0xDA8A, 0xDA86, 0xDA7F, 0xDA78,\n    0xDA70, 0xDA66, 0xDA5D, 0xDA52, 0xDA47, 0xDA3C, 0xDA31, 0xDA26,\n    0xDA1B, 0xDA11, 0xDA07, 0xD9FD, 0xD9F5, 0xD9ED, 0xD9E6, 0xD9E1,\n    0xD9DD, 0xD9DA, 0xD9D9, 0x070C, 0x070C, 0x070C, 0x070C, 0x0706,\n    0x06F3, 0x06D4, 0x06AB, 0x0677, 0x063A, 0x05F6, 0x05A9, 0x0556,\n    0x04FD, 0x04A0, 0x043E, 0x03D8, 0x0371, 0x0308, 0x029E, 0x0234,\n    0x01CB, 0x0163, 0x00FF, 0x009D, 0x0040, 0xFFE9, 0xFF97, 0xFF44,\n    0xFEEA, 0xFE8B, 0xFE26, 0xFDBE, 0xFD54, 0xFCE9, 0xFC7F, 0xFC17,\n    0xFBB2, 0xFB51, 0xFAF6, 0xFAA1, 0xFA55, 0xFA13, 0xF9DB, 0xF9B0,\n    0xF991, 0xF982, 0xF982, 0xF994, 0xF9B8, 0xF9EC, 0xFA2D, 0xFA7C,\n    0xFAD6, 0xFB3A, 0xFBA5, 0xFC18, 0xFC8F, 0xFD0A, 0xFD87, 0xFE04,\n    0xFE80, 0xFEFA, 0xFF6F, 0xFFDE, 0x0045, 0x00A4, 0x00F9, 0x0149,\n    0x019C, 0x01F1, 0x0247, 0x029E, 0x02F6, 0x034D, 0x03A4, 0x03FA,\n    0x044E, 0x04A0, 0x04EF, 0x053B, 0x0583, 0x05C6, 0x0605, 0x063E,\n    0x0672, 0x069F, 0x06C5, 0x06E3, 0x06FA, 0x0708, 0x070C, 0xF13C,\n    0xF13C, 0xF13C, 0xF13C, 0xF14A, 0xF171, 0xF1B1, 0xF207, 0xF272,\n    0xF2F1, 0xF380, 0xF41F, 0xF4CC, 0xF585, 0xF648, 0xF714, 0xF7E7,\n    0xF8BF, 0xF99A, 0xFA78, 0xFB55, 0xFC30, 0xFD08, 0xFDDA, 0xFEA6,\n    0xFF68, 0x0020, 0x00CC, 0x017A, 0x0237, 0x0301, 0x03D5, 0x04B0,\n    0x058F, 0x0670, 0x0750, 0x082D, 0x0903, 0x09D0, 0x0A91, 0x0B43,\n    0x0BE5, 0x0C72, 0x0CE9, 0x0D46, 0x0D88, 0x0DAA, 0x0DAB, 0x0D87,\n    0x0D3F, 0x0CD5, 0x0C4E, 0x0BAC, 0x0AF2, 0x0A25, 0x0946, 0x0859,\n    0x0762, 0x0663, 0x0560, 0x045C, 0x035A, 0x025D, 0x0169, 0x0081,\n    0xFFA9, 0xFEE3, 0xFE32, 0xFD89, 0xFCDA, 0xFC27, 0xFB70, 0xFAB7,\n    0xF9FD, 0xF942, 0xF889, 0xF7D2, 0xF71F, 0xF670, 0xF5C6, 0xF524,\n    0xF48A, 0xF3F9, 0xF372, 0xF2F7, 0xF288, 0xF228, 0xF1D6, 0xF194,\n    0xF164, 0xF146, 0xF13C, 0xF8F7, 0xF8F7, 0xF8F7, 0xF8F7, 0xF8F2,\n    0xF8E4, 0xF8CE, 0xF8B1, 0xF88E, 0xF865, 0xF837, 0xF805, 0xF7CF,\n    0xF798, 0xF75E, 0xF724, 0xF6EA, 0xF6B1, 0xF67A, 0xF645, 0xF613,\n    0xF5E6, 0xF5BD, 0xF59A, 0xF57E, 0xF569, 0xF55D, 0xF559, 0xF560,\n    0xF573, 0xF591, 0xF5B8, 0xF5E6, 0xF61C, 0xF657, 0xF696, 0xF6D9,\n    0xF71E, 0xF763, 0xF7A7, 0xF7EA, 0xF82A, 0xF866, 0xF89D, 0xF8CD,\n    0xF8F5, 0xF914, 0xF929, 0xF934, 0xF937, 0xF934, 0xF92A, 0xF91B,\n    0xF908, 0xF8F0, 0xF8D6, 0xF8B9, 0xF89B, 0xF87C, 0xF85C, 0xF83E,\n    0xF821, 0xF806, 0xF7EE, 0xF7DA, 0xF7CA, 0xF7C0, 0xF7BB, 0xF7BC,\n    0xF7BF, 0xF7C6, 0xF7CF, 0xF7DB, 0xF7E9, 0xF7F8, 0xF809, 0xF81B,\n    0xF82E, 0xF842, 0xF855, 0xF869, 0xF87D, 0xF890, 0xF8A3, 0xF8B4,\n    0xF8C4, 0xF8D2, 0xF8DF, 0xF8E9, 0xF8F0, 0xF8F5, 0xF8F7, 0xFDEB,\n    0xFDEB, 0xFDEB, 0xFDEB, 0xFDED, 0xFDF2, 0xFDFA, 0xFE06, 0xFE14,\n    0xFE26, 0xFE39, 0xFE50, 0xFE68, 0xFE83, 0xFEA0, 0xFEBE, 0xFEDE,\n    0xFF00, 0xFF23, 0xFF47, 0xFF6C, 0xFF92, 0xFFB8, 0xFFDF, 0x0006,\n    0x002D, 0x0055, 0x007C, 0x00A3, 0x00C9, 0x00EF, 0x0114, 0x0138,\n    0x015B, 0x017D, 0x019D, 0x01BB, 0x01D8, 0x01F3, 0x020C, 0x0222,\n    0x0236, 0x0247, 0x0256, 0x0261, 0x026A, 0x026F, 0x0271, 0x026F,\n    0x026A, 0x0261, 0x0256, 0x0247, 0x0236, 0x0222, 0x020C, 0x01F3,\n    0x01D8, 0x01BB, 0x019D, 0x017D, 0x015B, 0x0138, 0x0114, 0x00EF,\n    0x00C9, 0x00A3, 0x007C, 0x0055, 0x002D, 0x0006, 0xFFDF, 0xFFB8,\n    0xFF92, 0xFF6C, 0xFF47, 0xFF23, 0xFF00, 0xFEDE, 0xFEBE, 0xFEA0,\n    0xFE83, 0xFE68, 0xFE50, 0xFE39, 0xFE26, 0xFE14, 0xFE06, 0xFDFA,\n    0xFDF2, 0xFDED, 0xFDEB, 0x0708, 0x0708, 0x0708, 0x0708, 0x0702,\n    0x06F1, 0x06D4, 0x06AD, 0x067D, 0x0642, 0x05FF, 0x05B4, 0x0561,\n    0x0507, 0x04A7, 0x0440, 0x03D4, 0x0363, 0x02ED, 0x0274, 0x01F7,\n    0x0178, 0x00F6, 0x0073, 0xFFF0, 0xFF6B, 0xFEE6, 0xFE61, 0xFDDE,\n    0xFD5C, 0xFCDD, 0xFC60, 0xFBE7, 0xFB72, 0xFB00, 0xFA94, 0xFA2E,\n    0xF9CD, 0xF973, 0xF920, 0xF8D5, 0xF892, 0xF858, 0xF827, 0xF800,\n    0xF7E3, 0xF7D2, 0xF7CC, 0xF7D2, 0xF7E3, 0xF800, 0xF827, 0xF858,\n    0xF892, 0xF8D5, 0xF920, 0xF973, 0xF9CD, 0xFA2E, 0xFA94, 0xFB00,\n    0xFB72, 0xFBE7, 0xFC60, 0xFCDD, 0xFD5C, 0xFDDE, 0xFE61, 0xFEE6,\n    0xFF6B, 0xFFF0, 0x0073, 0x00F6, 0x0178, 0x01F7, 0x0274, 0x02ED,\n    0x0363, 0x03D4, 0x0440, 0x04A7, 0x0507, 0x0561, 0x05B4, 0x05FF,\n    0x0642, 0x067D, 0x06AD, 0x06D4, 0x06F1, 0x0702, 0x0708, 0x7431,\n    0x7431, 0x7431, 0x7431, 0x7431, 0x7431, 0x7431, 0x7431, 0x7430,\n    0x7430, 0x7430, 0x7430, 0x742F, 0x742F, 0x742E, 0x742E, 0x742D,\n    0x742D, 0x742C, 0x742C, 0x742B, 0x742B, 0x742A, 0x742A, 0x7429,\n    0x7429, 0x7428, 0x7427, 0x7427, 0x7426, 0x7426, 0x7425, 0x7425,\n    0x7424, 0x7424, 0x7423, 0x7423, 0x7422, 0x7422, 0x7422, 0x7421,\n    0x7421, 0x7421, 0x7420, 0x7420, 0x7420, 0x7420, 0x7420, 0x7420,\n    0x7420, 0x7420, 0x7420, 0x7421, 0x7421, 0x7421, 0x7422, 0x7422,\n    0x7422, 0x7423, 0x7423, 0x7424, 0x7424, 0x7425, 0x7425, 0x7426,\n    0x7426, 0x7427, 0x7427, 0x7428, 0x7429, 0x7429, 0x742A, 0x742A,\n    0x742B, 0x742B, 0x742C, 0x742C, 0x742D, 0x742D, 0x742E, 0x742E,\n    0x742F, 0x742F, 0x7430, 0x7430, 0x7430, 0x7430, 0x7431, 0x7431,\n    0x7431, 0x7431, 0x7431,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_9A.inc.c",
    "content": "static const struct Animation anim_9A[] = {\n    1,\n    189,\n    0,\n    0,\n    0x08,\n    ANIMINDEX_NUMPARTS(anim_9A_indices),\n    anim_9A_values,\n    anim_9A_indices,\n    0,\n};\n\n\nstatic const u16 anim_9A_indices[] = {\n    0x0001, 0x0000, 0x0008, 0x0001, 0x0008, 0x0009, 0x0001, 0x0000, 0x0001, 0x0011, 0x0001, 0x0000,\n    0x0008, 0x012A, 0x0008, 0x0132, 0x0008, 0x013A,\n    0x0008, 0x0112, 0x0008, 0x011A, 0x0008, 0x0122,\n    0x0008, 0x00FA, 0x0008, 0x0102, 0x0008, 0x010A,\n    0x0001, 0x00F6, 0x0001, 0x00F7, 0x0001, 0x00F8,\n    0x0008, 0x0032, 0x0008, 0x003A, 0x0008, 0x0042,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x002A,\n    0x0008, 0x0012, 0x0008, 0x001A, 0x0008, 0x0022,\n    0x0001, 0x00F2, 0x0001, 0x00F3, 0x0001, 0x00F4,\n    0x0008, 0x006A, 0x0008, 0x0072, 0x0008, 0x007A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x0062,\n    0x0008, 0x004A, 0x0008, 0x0052, 0x0008, 0x005A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00F5,\n    0x0008, 0x00DA, 0x0008, 0x00E2, 0x0008, 0x00EA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x00D2,\n    0x0008, 0x00BA, 0x0008, 0x00C2, 0x0008, 0x00CA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00F9,\n    0x0008, 0x00A2, 0x0008, 0x00AA, 0x0008, 0x00B2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x009A,\n    0x0008, 0x0082, 0x0008, 0x008A, 0x0008, 0x0092,\n};\n\nstatic const s16 anim_9A_values[] = {\n    0x0000, 0x005B, 0x005B, 0x006C, 0x0071, 0x0073, 0x0078, 0x006F,\n    0x0069, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFFD, 0x0018, 0x0000, 0xFFE9,\n    0xFFDD, 0x3FFF, 0x18A4, 0x18A4, 0x16A9, 0x13DA, 0x09AE, 0xED7E,\n    0xC9F0, 0xB870, 0xFA05, 0xFA05, 0xFAAB, 0xFB4D, 0xF9B2, 0xF2D9,\n    0xE9C3, 0xE53A, 0xE39B, 0xE39B, 0xE544, 0xE742, 0xE9A4, 0xED43,\n    0xF144, 0xF329, 0xCD92, 0xCD92, 0xD2A4, 0xD87F, 0xDBAB, 0xD95F,\n    0xD465, 0xD1A5, 0x0B54, 0x0B54, 0x19E7, 0x2991, 0x1EFF, 0xD84C,\n    0x7759, 0x4683, 0xE6E0, 0xE6E0, 0xE85C, 0xE9E5, 0xE7D4, 0xDD69,\n    0xCF64, 0xC85D, 0x9B42, 0x9B42, 0x8FBD, 0x832B, 0x8840, 0xB57A,\n    0xF45D, 0x1427, 0xED57, 0xED57, 0xF001, 0xF35F, 0xF8AC, 0x13C0,\n    0x31EE, 0x4035, 0xFE53, 0xFE53, 0x0D07, 0x123A, 0xFF58, 0x07B5,\n    0x14CB, 0x1B99, 0xEC6A, 0xEC6A, 0xE847, 0xE93A, 0xF1CD, 0xF628,\n    0xF998, 0xFAFE, 0xE1F1, 0xE1F1, 0xDD8C, 0xD86B, 0xD4A8, 0xD359,\n    0xD368, 0xD3AE, 0xEFE3, 0xEFE3, 0xEF79, 0xF051, 0x068A, 0x4FE9,\n    0xAEAC, 0xDDA1, 0x11CD, 0x11CD, 0x15E0, 0x1ABA, 0x1FBC, 0x25E1,\n    0x2C2D, 0x2F11, 0x7D14, 0x7D14, 0x83E0, 0x8CB3, 0xA1C3, 0xD56D,\n    0x1552, 0x3498, 0xFFAD, 0xFFAD, 0x0705, 0x0B19, 0x0D0A, 0x0792,\n    0x02BE, 0x0012, 0x03BB, 0x03BB, 0x125A, 0x0901, 0xFD58, 0xFE0C,\n    0xFEC6, 0xFF31, 0xDA84, 0xDA84, 0xBFA7, 0xA9D6, 0x9B60, 0xACA1,\n    0xBCF8, 0xC62D, 0x4C54, 0x4C54, 0x4DF5, 0x4FCA, 0x4FFE, 0x4C99,\n    0x4793, 0x44FE, 0xFF1D, 0xFF1D, 0xFF9E, 0x0036, 0x00D0, 0x0181,\n    0x0233, 0x0283, 0x13FB, 0x13FB, 0x142C, 0x1467, 0x14A2, 0x14E6,\n    0x152A, 0x1549, 0x9575, 0x9575, 0x9069, 0x8A6A, 0x846C, 0x7D78,\n    0x7687, 0x735F, 0xF769, 0xF769, 0xF438, 0xEF3C, 0xEC30, 0xF49F,\n    0xF8A3, 0xFA4C, 0xF7BB, 0xF7BB, 0xEA56, 0xF197, 0xFB93, 0xFE95,\n    0xFFA9, 0x0000, 0xD553, 0xD553, 0xC4A4, 0xB39E, 0xA6DA, 0xAFB9,\n    0xB725, 0xBB2D, 0x4FFE, 0x4FFE, 0x4EC4, 0x4D4D, 0x4BB7, 0x4991,\n    0x4AFF, 0x4C54, 0xFCEF, 0xFCEF, 0xFDC9, 0xFECB, 0xFFA4, 0xFF9B,\n    0x0133, 0x0259, 0xE6A9, 0xE6A9, 0xE79C, 0xE8BD, 0xE9E7, 0xEB37,\n    0xEC73, 0xED25, 0x8E9B, 0x8E9B, 0x8B19, 0x86F1, 0x8309, 0x80A8,\n    0x7B16, 0x7774, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001,\n    0x4171, 0xBF5F, 0xF53F, 0xF53F, 0xF71C, 0xF966, 0xFBC7, 0xFDE5,\n    0xFF6B, 0x0000, 0x0253, 0x0253, 0x01EC, 0x016D, 0x00EA, 0x0074,\n    0x0020, 0x0000, 0xD9D9, 0xD9D9, 0xDA2F, 0xDA99, 0xDB07, 0xDB69,\n    0xDBAF, 0xDBCA, 0x070C, 0x070C, 0x04EC, 0x02E7, 0x01CA, 0x00DD,\n    0x003B, 0x0000, 0xF13C, 0xF13C, 0xF3A1, 0xF665, 0xF948, 0xFC6E,\n    0xFEF6, 0x0000, 0xF8F7, 0xF8F7, 0x03DB, 0x0FEB, 0x1B53, 0x276C,\n    0x3106, 0x34EF, 0xFDEB, 0xFDEB, 0xFEBA, 0xFEE8, 0xFF08, 0xFF65,\n    0xFFCF, 0x0000, 0x0708, 0x0708, 0x060E, 0x04DF, 0x03A5, 0x0229,\n    0x00AD, 0x0000, 0x7431, 0x7431, 0x70CE, 0x6957, 0x61C2, 0x5A8F,\n    0x53DF, 0x50ED,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_9B.inc.c",
    "content": "static const struct Animation anim_9B[] = {\n    1,\n    189,\n    0,\n    0,\n    0x08,\n    ANIMINDEX_NUMPARTS(anim_9B_indices),\n    anim_9B_values,\n    anim_9B_indices,\n    0,\n};\n\n\nstatic const u16 anim_9B_indices[] = {\n    0x0001, 0x0000, 0x0008, 0x0001, 0x0001, 0x0009, 0x0001, 0x0000, 0x0001, 0x000A, 0x0001, 0x0000,\n    0x0008, 0x0123, 0x0008, 0x012B, 0x0008, 0x0133,\n    0x0008, 0x010B, 0x0008, 0x0113, 0x0008, 0x011B,\n    0x0008, 0x00F3, 0x0008, 0x00FB, 0x0008, 0x0103,\n    0x0001, 0x00EF, 0x0001, 0x00F0, 0x0001, 0x00F1,\n    0x0008, 0x002B, 0x0008, 0x0033, 0x0008, 0x003B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x0023,\n    0x0008, 0x000B, 0x0008, 0x0013, 0x0008, 0x001B,\n    0x0001, 0x00EB, 0x0001, 0x00EC, 0x0001, 0x00ED,\n    0x0008, 0x0063, 0x0008, 0x006B, 0x0008, 0x0073,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x005B,\n    0x0008, 0x0043, 0x0008, 0x004B, 0x0008, 0x0053,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00EE,\n    0x0008, 0x00D3, 0x0008, 0x00DB, 0x0008, 0x00E3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x00CB,\n    0x0008, 0x00B3, 0x0008, 0x00BB, 0x0008, 0x00C3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00F2,\n    0x0008, 0x009B, 0x0008, 0x00A3, 0x0008, 0x00AB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0008, 0x0093,\n    0x0008, 0x007B, 0x0008, 0x0083, 0x0008, 0x008B,\n};\n\nstatic const s16 anim_9B_values[] = {\n    0x0000, 0x0069, 0x006B, 0x0073, 0x0088, 0x0099, 0x0082, 0x0069,\n    0x005B, 0xFFDD, 0x3FFF, 0xB870, 0xBDC5, 0xCB83, 0xDE4E, 0xF2C7,\n    0x0591, 0x134F, 0x18A4, 0xE53A, 0xE661, 0xE959, 0xED69, 0xF1D6,\n    0xF5E6, 0xF8DE, 0xFA05, 0xF329, 0xF24C, 0xF013, 0xED0A, 0xE9BA,\n    0xE6B1, 0xE478, 0xE39B, 0xD1A5, 0xD16B, 0xD0D6, 0xD00A, 0xCF2C,\n    0xCE60, 0xCDCB, 0xCD92, 0x4683, 0x516A, 0x6D87, 0x93FC, 0xBDDF,\n    0xE450, 0x006D, 0x0B54, 0xC85D, 0xCA0E, 0xCE69, 0xD45F, 0xDADE,\n    0xE0D4, 0xE52F, 0xE6E0, 0x1427, 0x0D75, 0xFC30, 0xE493, 0xCAD7,\n    0xB33A, 0xA1F4, 0x9B42, 0x4035, 0x3B9E, 0x2FC7, 0x1F97, 0x0DF4,\n    0xFDC5, 0xF1EE, 0xED57, 0x1B99, 0x19FA, 0x15CB, 0x1013, 0x09D8,\n    0x0420, 0xFFF3, 0xFE53, 0xFAFE, 0xFA2F, 0xF81A, 0xF541, 0xF227,\n    0xEF4E, 0xED39, 0xEC6A, 0xD3AE, 0xD478, 0xD682, 0xD94B, 0xDC54,\n    0xDF1D, 0xE126, 0xE1F1, 0xDDA1, 0xD076, 0xAE80, 0x800F, 0x4D74,\n    0x1F03, 0xFD0E, 0xEFE3, 0x2F11, 0x2D72, 0x2944, 0x238C, 0x1D52,\n    0x179A, 0x136C, 0x11CD, 0x3498, 0x2A6E, 0x1037, 0xEC5F, 0xC551,\n    0xA179, 0x8742, 0x7D14, 0x0012, 0x000D, 0xFFFF, 0xFFEB, 0xFFD5,\n    0xFFC2, 0xFFB3, 0xFFAD, 0xFF31, 0xFF71, 0x0016, 0x00FA, 0x01F1,\n    0x02D5, 0x037B, 0x03BB, 0xC62D, 0xC74E, 0xCA35, 0xCE2F, 0xD283,\n    0xD67C, 0xD964, 0xDA84, 0x44FE, 0x4566, 0x4672, 0x47E1, 0x4971,\n    0x4ADF, 0x4BEC, 0x4C54, 0x0283, 0x0253, 0x01D7, 0x012C, 0x0073,\n    0xFFCA, 0xFF4D, 0xFF1D, 0x1549, 0x1536, 0x1506, 0x14C5, 0x147E,\n    0x143D, 0x140D, 0x13FB, 0x735F, 0x7542, 0x7A20, 0x80CB, 0x880C,\n    0x8EB4, 0x9392, 0x9575, 0xFA4C, 0xFA23, 0xF9BA, 0xF92A, 0xF88C,\n    0xF7FC, 0xF792, 0xF769, 0x0000, 0xFF8B, 0xFE5D, 0xFCBF, 0xFAFD,\n    0xF95F, 0xF831, 0xF7BB, 0xBB2D, 0xBCA0, 0xC05C, 0xC578, 0xCB09,\n    0xD024, 0xD3E0, 0xD553, 0x4C54, 0x4C88, 0x4D0E, 0x4DC5, 0x4E8D,\n    0x4F44, 0x4FCA, 0x4FFE, 0x0259, 0x020C, 0x0146, 0x0037, 0xFF11,\n    0xFE02, 0xFD3B, 0xFCEF, 0xED25, 0xECC9, 0xEBDC, 0xEA98, 0xE937,\n    0xE7F2, 0xE705, 0xE6A9, 0x7774, 0x78BC, 0x7C0B, 0x8093, 0x8580,\n    0x8A05, 0x8D53, 0x8E9B, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001,\n    0x8001, 0x4171, 0xBF5F, 0x0000, 0x0049, 0x00C4, 0x00DD, 0x0000,\n    0xFC88, 0xF7B1, 0xF53F, 0x0000, 0xFFF1, 0xFFD6, 0xFFD1, 0x0000,\n    0x00C0, 0x01CC, 0x0253, 0xDBCA, 0xDD40, 0xE06F, 0xE38D, 0xE4CE,\n    0xE1D8, 0xDCA1, 0xD9D9, 0x0000, 0xFFD7, 0xFF85, 0xFF47, 0xFF5B,\n    0x0000, 0x03C6, 0x070C, 0x0000, 0x0056, 0x0103, 0x0184, 0x0159,\n    0x0000, 0xF817, 0xF13C, 0x34EF, 0x31D4, 0x29E6, 0x1F39, 0x13DE,\n    0x09E8, 0xFF4C, 0xF8F7, 0x0000, 0x000E, 0x0026, 0x002A, 0x0000,\n    0xFF54, 0xFE64, 0xFDEB, 0x0000, 0xFFD0, 0xFF80, 0xFF70, 0x0000,\n    0x0245, 0x056F, 0x0708, 0x50ED, 0x5242, 0x55B1, 0x5A62, 0x5F7F,\n    0x671A, 0x6FF2, 0x7431,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_9C.inc.c",
    "content": "static const struct Animation anim_9C[] = {\n    9,\n    189,\n    0,\n    0,\n    0x40,\n    ANIMINDEX_NUMPARTS(anim_9C_indices),\n    anim_9C_values,\n    anim_9C_indices,\n    0,\n};\n\n\nstatic const u16 anim_9C_indices[] = {\n    0x0001, 0x0000, 0x0040, 0x0001, 0x0040, 0x0041, 0x0001, 0x0000, 0x0001, 0x0081, 0x0001, 0x0000,\n    0x0040, 0x090A, 0x0001, 0x0000, 0x0040, 0x094A,\n    0x0040, 0x084A, 0x0040, 0x088A, 0x0040, 0x08CA,\n    0x0040, 0x078A, 0x0040, 0x07CA, 0x0040, 0x080A,\n    0x0001, 0x0786, 0x0001, 0x0787, 0x0001, 0x0788,\n    0x0040, 0x0182, 0x0040, 0x01C2, 0x0040, 0x0202,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0040, 0x0142,\n    0x0040, 0x0082, 0x0040, 0x00C2, 0x0040, 0x0102,\n    0x0001, 0x0782, 0x0001, 0x0783, 0x0001, 0x0784,\n    0x0040, 0x0342, 0x0040, 0x0382, 0x0040, 0x03C2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0040, 0x0302,\n    0x0040, 0x0242, 0x0040, 0x0282, 0x0040, 0x02C2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0785,\n    0x0040, 0x06C2, 0x0040, 0x0702, 0x0040, 0x0742,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0040, 0x0682,\n    0x0040, 0x05C2, 0x0040, 0x0602, 0x0040, 0x0642,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0789,\n    0x0040, 0x0502, 0x0040, 0x0542, 0x0040, 0x0582,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0040, 0x04C2,\n    0x0040, 0x0402, 0x0040, 0x0442, 0x0040, 0x0482,\n};\n\nstatic const s16 anim_9C_values[] = {\n    0x0000, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA,\n    0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA, 0x00AA,\n    0x00AA, 0x00AA, 0x00AA, 0x00A9, 0x00A8, 0x00A6, 0x00A3, 0x00A0,\n    0x009D, 0x009A, 0x0097, 0x0095, 0x0093, 0x0093, 0x0093, 0x0094,\n    0x0094, 0x0095, 0x0096, 0x0096, 0x0097, 0x0098, 0x0099, 0x009A,\n    0x009C, 0x009D, 0x009E, 0x009F, 0x00A1, 0x00A2, 0x00A3, 0x00A5,\n    0x00A6, 0x00A7, 0x00A8, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE,\n    0x00AF, 0x00B0, 0x00B1, 0x00B1, 0x00B2, 0x00B2, 0x00B3, 0x00B3,\n    0x00B3, 0x0000, 0x0000, 0xFFFF, 0xFFFC, 0xFFF6, 0xFFEF, 0xFFE8,\n    0xFFDF, 0xFFD3, 0xFFBE, 0xFFA0, 0xFF7E, 0xFF5C, 0xFF3F, 0xFF2A,\n    0xFF22, 0xFF22, 0xFF22, 0xFF22, 0xFF21, 0xFF21, 0xFF20, 0xFF1F,\n    0xFF1E, 0xFF1D, 0xFF1C, 0xFF1C, 0xFF1B, 0xFF1B, 0xFF1B, 0xFF1B,\n    0xFF1B, 0xFF1B, 0xFF1C, 0xFF1C, 0xFF1C, 0xFF1C, 0xFF1C, 0xFF1D,\n    0xFF1D, 0xFF1D, 0xFF1D, 0xFF1E, 0xFF1E, 0xFF1E, 0xFF1E, 0xFF1F,\n    0xFF1F, 0xFF1F, 0xFF1F, 0xFF20, 0xFF20, 0xFF20, 0xFF20, 0xFF21,\n    0xFF21, 0xFF21, 0xFF21, 0xFF21, 0xFF22, 0xFF22, 0xFF22, 0xFF22,\n    0xFF22, 0x3FFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0xFFA6, 0xFEAE, 0xFD38, 0xFB67,\n    0xF95B, 0xF736, 0xF51A, 0xF328, 0xF180, 0xF045, 0xEF98, 0xEF42,\n    0xEEF6, 0xEEB4, 0xEE7B, 0xEE4A, 0xEE22, 0xEE01, 0xEDE8, 0xEDD6,\n    0xEDCA, 0xEDC4, 0xEDC4, 0xEDC9, 0xEDD2, 0xEDE0, 0xEDF1, 0xEE05,\n    0xEE1D, 0xEE37, 0xEE52, 0xEE70, 0xEE8E, 0xEEAD, 0xEECC, 0xEEEA,\n    0xEF08, 0xEF25, 0xEF40, 0xEF58, 0xEF6F, 0xEF82, 0xEF91, 0xEF9D,\n    0xEFA5, 0xEFA7, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C,\n    0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C,\n    0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF9CE, 0xFAB1, 0xFC04, 0xFDA7,\n    0xFF7A, 0x015C, 0x032E, 0x04D1, 0x0624, 0x0707, 0x0759, 0x0750,\n    0x0737, 0x070F, 0x06D8, 0x0693, 0x0643, 0x05E6, 0x0580, 0x0510,\n    0x0497, 0x0417, 0x0390, 0x0304, 0x0274, 0x01E0, 0x014A, 0x00B2,\n    0x0019, 0xFF82, 0xFEEC, 0xFE58, 0xFDC8, 0xFD3C, 0xFCB5, 0xFC35,\n    0xFBBD, 0xFB4D, 0xFAE6, 0xFA8A, 0xFA39, 0xF9F5, 0xF9BE, 0xF996,\n    0xF97D, 0xF974, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED7A, 0xED4A, 0xED02, 0xECAA,\n    0xEC48, 0xEBE5, 0xEB87, 0xEB35, 0xEAF7, 0xEAD3, 0xEAD1, 0xEAE6,\n    0xEAFF, 0xEB1D, 0xEB3F, 0xEB65, 0xEB8F, 0xEBBC, 0xEBEC, 0xEC1F,\n    0xEC55, 0xEC8C, 0xECC5, 0xECFF, 0xED3B, 0xED77, 0xEDB3, 0xEDEF,\n    0xEE2B, 0xEE67, 0xEEA1, 0xEEDA, 0xEF11, 0xEF47, 0xEF7A, 0xEFAA,\n    0xEFD7, 0xF001, 0xF027, 0xF04A, 0xF068, 0xF081, 0xF095, 0xF0A4,\n    0xF0AD, 0xF0B0, 0xCA4F, 0xCB46, 0xCDB1, 0xD0D4, 0xD3F8, 0xD662,\n    0xD759, 0xD6E6, 0xD5B4, 0xD3F8, 0xD1E9, 0xCFBF, 0xCDB1, 0xCBF4,\n    0xCAC2, 0xCA4F, 0xCA4F, 0xCA4F, 0xC9C8, 0xC855, 0xC62F, 0xC38C,\n    0xC0A4, 0xBDAD, 0xBADF, 0xB870, 0xB698, 0xB58E, 0xB588, 0xB62C,\n    0xB6F6, 0xB7E6, 0xB8F7, 0xBA28, 0xBB76, 0xBCDE, 0xBE5D, 0xBFF1,\n    0xC197, 0xC34D, 0xC510, 0xC6DE, 0xC8B3, 0xCA8D, 0xCC69, 0xCE46,\n    0xD020, 0xD1F4, 0xD3C0, 0xD582, 0xD736, 0xD8DA, 0xDA6C, 0xDBE9,\n    0xDD4E, 0xDE98, 0xDFC6, 0xE0D4, 0xE1BF, 0xE286, 0xE325, 0xE39A,\n    0xE3E2, 0xE3FA, 0xFB1D, 0xFA70, 0xF8BF, 0xF68C, 0xF45A, 0xF2A9,\n    0xF1FC, 0xF24C, 0xF323, 0xF45A, 0xF5CA, 0xF74E, 0xF8BF, 0xF9F6,\n    0xFACD, 0xFB1D, 0xFB1D, 0xFB1D, 0xFBE2, 0xFDFE, 0x0121, 0x04FD,\n    0x0944, 0x0DA5, 0x11D2, 0x157D, 0x1856, 0x1A0E, 0x1A57, 0x19B4,\n    0x18DD, 0x17D7, 0x16A5, 0x1549, 0x13C8, 0x1225, 0x1062, 0x0E84,\n    0x0C8D, 0x0A82, 0x0865, 0x0639, 0x0402, 0x01C4, 0xFF82, 0xFD3E,\n    0xFAFC, 0xF8C0, 0xF68D, 0xF466, 0xF24F, 0xF04A, 0xEE5C, 0xEC87,\n    0xEACF, 0xE937, 0xE7C3, 0xE676, 0xE552, 0xE45D, 0xE398, 0xE307,\n    0xE2AE, 0xE28F, 0xD2DC, 0xD1F1, 0xCFA7, 0xCCAC, 0xC9B2, 0xC767,\n    0xC67C, 0xC6E9, 0xC80C, 0xC9B2, 0xCBA5, 0xCDB3, 0xCFA7, 0xD14C,\n    0xD26F, 0xD2DC, 0xD2DC, 0xD2DC, 0xD32F, 0xD413, 0xD56B, 0xD71A,\n    0xD901, 0xDB04, 0xDD05, 0xDEE6, 0xE089, 0xE1D2, 0xE2A2, 0xE329,\n    0xE3AC, 0xE42B, 0xE4A5, 0xE51B, 0xE58D, 0xE5FA, 0xE663, 0xE6C7,\n    0xE728, 0xE784, 0xE7DC, 0xE830, 0xE880, 0xE8CB, 0xE913, 0xE957,\n    0xE997, 0xE9D3, 0xEA0B, 0xEA3F, 0xEA6F, 0xEA9C, 0xEAC4, 0xEAE9,\n    0xEB0B, 0xEB28, 0xEB42, 0xEB59, 0xEB6C, 0xEB7B, 0xEB87, 0xEB90,\n    0xEB95, 0xEB96, 0xD4B4, 0xD567, 0xD728, 0xD971, 0xDBB9, 0xDD7A,\n    0xDE2E, 0xDDDA, 0xDCFB, 0xDBB9, 0xDA3A, 0xD8A7, 0xD728, 0xD5E6,\n    0xD507, 0xD4B4, 0xD4B4, 0xD4B4, 0xD37B, 0xD024, 0xCB28, 0xC503,\n    0xBE2F, 0xB727, 0xB066, 0xAA66, 0xA5A3, 0xA297, 0xA1BC, 0xA249,\n    0xA31C, 0xA431, 0xA585, 0xA712, 0xA8D4, 0xAAC6, 0xACE4, 0xAF2A,\n    0xB193, 0xB41B, 0xB6BD, 0xB974, 0xBC3D, 0xBF12, 0xC1EF, 0xC4D1,\n    0xC7B1, 0xCA8D, 0xCD5E, 0xD022, 0xD2D3, 0xD56D, 0xD7EB, 0xDA49,\n    0xDC83, 0xDE94, 0xE077, 0xE229, 0xE3A4, 0xE4E4, 0xE5E5, 0xE6A1,\n    0xE716, 0xE73E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0xFFFA, 0xFFE8, 0xFFCF, 0xFFB4,\n    0xFF99, 0xFF85, 0xFF7A, 0xFF7D, 0xFF91, 0xFFBC, 0x0000, 0x005E,\n    0x00D2, 0x0157, 0x01EB, 0x028B, 0x0334, 0x03E2, 0x0493, 0x0543,\n    0x05F0, 0x0696, 0x0733, 0x07C3, 0x0850, 0x08E5, 0x0981, 0x0A23,\n    0x0AC8, 0x0B70, 0x0C1A, 0x0CC2, 0x0D69, 0x0E0D, 0x0EAB, 0x0F44,\n    0x0FD5, 0x105D, 0x10DA, 0x114B, 0x11AF, 0x1204, 0x1249, 0x127C,\n    0x129B, 0x12A6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0xFFF1, 0xFFC7, 0xFF8E, 0xFF4F,\n    0xFF13, 0xFEE3, 0xFECA, 0xFED0, 0xFF00, 0xFF62, 0x0000, 0x00DA,\n    0x01E5, 0x0319, 0x046F, 0x05E1, 0x0766, 0x08F9, 0x0A91, 0x0C28,\n    0x0DB7, 0x0F37, 0x10A1, 0x11ED, 0x1333, 0x148B, 0x15F4, 0x1769,\n    0x18E8, 0x1A6C, 0x1BF2, 0x1D78, 0x1EF9, 0x2073, 0x21E2, 0x2342,\n    0x2491, 0x25CB, 0x26EC, 0x27F2, 0x28D8, 0x299C, 0x2A3B, 0x2AB0,\n    0x2AF9, 0x2B12, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549,\n    0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549,\n    0xF549, 0xF549, 0xF549, 0xF549, 0xF514, 0xF481, 0xF3A4, 0xF291,\n    0xF15B, 0xF016, 0xEED5, 0xEDAB, 0xECAD, 0xEBEF, 0xEB82, 0xEB5A,\n    0xEB57, 0xEB75, 0xEBAE, 0xEC00, 0xEC64, 0xECD5, 0xED50, 0xEDD0,\n    0xEE50, 0xEECA, 0xEF3C, 0xEF9F, 0xEFFD, 0xF065, 0xF0D3, 0xF148,\n    0xF1C1, 0xF23E, 0xF2BC, 0xF33C, 0xF3BB, 0xF439, 0xF4B4, 0xF52B,\n    0xF59C, 0xF607, 0xF66A, 0xF6C4, 0xF713, 0xF757, 0xF78E, 0xF7B7,\n    0xF7D0, 0xF7D9, 0xC7DD, 0xC7DD, 0xC7DD, 0xC7DD, 0xC7DD, 0xC7DD,\n    0xC7DD, 0xC7DD, 0xC7DD, 0xC7DD, 0xC7DD, 0xC7DD, 0xC7DD, 0xC7DD,\n    0xC7DD, 0xC7DD, 0xC7DD, 0xC7DD, 0xC782, 0xC684, 0xC508, 0xC32E,\n    0xC119, 0xBEEB, 0xBCC5, 0xBAC9, 0xB91A, 0xB7DA, 0xB729, 0xB6DA,\n    0xB6A6, 0xB693, 0xB6A2, 0xB6D7, 0xB734, 0xB7BD, 0xB875, 0xB95E,\n    0xBA7C, 0xBBD2, 0xBD62, 0xBF30, 0xC14E, 0xC3C4, 0xC687, 0xC98B,\n    0xCCC7, 0xD02E, 0xD3B6, 0xD754, 0xDAFC, 0xDEA4, 0xE241, 0xE5C7,\n    0xE92C, 0xEC64, 0xEF65, 0xF223, 0xF493, 0xF6AB, 0xF85E, 0xF9A3,\n    0xFA6E, 0xFAB5, 0x054B, 0x0682, 0x098B, 0x0D7E, 0x1170, 0x1479,\n    0x15B0, 0x1520, 0x139E, 0x1170, 0x0EDA, 0x0C21, 0x098B, 0x075D,\n    0x05DB, 0x054B, 0x054B, 0x054B, 0x04F9, 0x0407, 0x027C, 0x005D,\n    0xFDB4, 0xFA83, 0xF6D2, 0xF2A9, 0xEE0E, 0xE906, 0xE399, 0xDD80,\n    0xD68C, 0xCEE7, 0xC6B8, 0xBE27, 0xB55E, 0xAC86, 0xA3C6, 0x9B47,\n    0x9332, 0x8BB0, 0x84E8, 0x7F01, 0x7A4C, 0x76E9, 0x74CB, 0x73E0,\n    0x741A, 0x7567, 0x77B9, 0x7B0C, 0x7F4B, 0x844E, 0x89E2, 0x8FDF,\n    0x9619, 0x9C65, 0xA297, 0xA883, 0xADFE, 0xB2DC, 0xB6F1, 0xBA11,\n    0xBC11, 0xBCC6, 0x2BD6, 0x2B96, 0x2AF5, 0x2A24, 0x2952, 0x28B1,\n    0x2871, 0x288F, 0x28DF, 0x2952, 0x29DB, 0x2A6C, 0x2AF5, 0x2B69,\n    0x2BB8, 0x2BD6, 0x2BD6, 0x2BD6, 0x2B8E, 0x2ACA, 0x29A6, 0x283E,\n    0x26B0, 0x2517, 0x2390, 0x2239, 0x212C, 0x2088, 0x2068, 0x20C9,\n    0x2187, 0x2294, 0x23DE, 0x2556, 0x26EB, 0x288E, 0x2A2E, 0x2BBC,\n    0x2D26, 0x2E5D, 0x2F52, 0x2FF3, 0x300C, 0x2F8D, 0x2E9C, 0x2D5D,\n    0x2BF8, 0x2A90, 0x294D, 0x2811, 0x26AE, 0x252D, 0x2396, 0x21F4,\n    0x204E, 0x1EAE, 0x1D1D, 0x1BA4, 0x1A4D, 0x191F, 0x1825, 0x1767,\n    0x16EE, 0x16C4, 0xCCF6, 0xCE5E, 0xD1E1, 0xD672, 0xDB03, 0xDE86,\n    0xDFED, 0xDF47, 0xDD89, 0xDB03, 0xD805, 0xD4DF, 0xD1E1, 0xCF5B,\n    0xCD9C, 0xCCF6, 0xCCF6, 0xCCF6, 0xCC73, 0xCAF9, 0xC89D, 0xC574,\n    0xC192, 0xBD0D, 0xB7FA, 0xB26D, 0xAC7C, 0xA63C, 0x9FC1, 0x98C2,\n    0x90FE, 0x8898, 0x7FB1, 0x7671, 0x6CF8, 0x6369, 0x59E8, 0x5097,\n    0x4799, 0x3F12, 0x3724, 0x2FF2, 0x2982, 0x23D9, 0x1F1B, 0x1B6C,\n    0x18F1, 0x17CC, 0x1822, 0x19BC, 0x1C2F, 0x1F58, 0x2312, 0x2739,\n    0x2BA7, 0x303A, 0x34CB, 0x3937, 0x3D59, 0x410D, 0x442E, 0x4697,\n    0x4824, 0x48B0, 0x0000, 0xFFFF, 0xFFFA, 0xFFF3, 0xFFEB, 0xFFE3,\n    0xFFDC, 0xFFD7, 0xFFD5, 0xFFDF, 0xFFF3, 0x0000, 0x0003, 0x0002,\n    0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFE, 0xFFFD,\n    0xFFFB, 0xFFF9, 0xFFF8, 0xFFF6, 0xFFF5, 0xFFF3, 0xFFF3, 0xFFF2,\n    0xFFF1, 0xFFF1, 0xFFF0, 0xFFF0, 0xFFEF, 0xFFEF, 0xFFEE, 0xFFED,\n    0xFFED, 0xFFEC, 0xFFEC, 0xFFEB, 0xFFEB, 0xFFEB, 0xFFEA, 0xFFEA,\n    0xFFE9, 0xFFE9, 0xFFE9, 0xFFE8, 0xFFE8, 0xFFE8, 0xFFE7, 0xFFE7,\n    0xFFE7, 0xFFE6, 0xFFE6, 0xFFE6, 0xFFE6, 0xFFE6, 0xFFE6, 0xFFE6,\n    0xFFE6, 0xFFE6, 0xFF30, 0xFF30, 0xFF31, 0xFF31, 0xFF32, 0xFF33,\n    0xFF34, 0xFF34, 0xFF34, 0xFF33, 0xFF31, 0xFF30, 0xFF30, 0xFF30,\n    0xFF30, 0xFF30, 0xFF30, 0xFF30, 0xFF32, 0xFF39, 0xFF43, 0xFF50,\n    0xFF5E, 0xFF6C, 0xFF7B, 0xFF88, 0xFF94, 0xFF9C, 0xFFA1, 0xFFA3,\n    0xFFA5, 0xFFA7, 0xFFA9, 0xFFAA, 0xFFAB, 0xFFAC, 0xFFAD, 0xFFAE,\n    0xFFAE, 0xFFAF, 0xFFAF, 0xFFAF, 0xFFAF, 0xFFAE, 0xFFAE, 0xFFAE,\n    0xFFAD, 0xFFAC, 0xFFAC, 0xFFAB, 0xFFAA, 0xFFAA, 0xFFA9, 0xFFA8,\n    0xFFA8, 0xFFA7, 0xFFA6, 0xFFA6, 0xFFA5, 0xFFA5, 0xFFA4, 0xFFA4,\n    0xFFA4, 0xFFA4, 0xC9D8, 0xCA32, 0xCB1E, 0xCC6C, 0xCDEB, 0xCF6A,\n    0xD0B9, 0xD1A5, 0xD1FF, 0xD021, 0xCC73, 0xC9D8, 0xC939, 0xC94A,\n    0xC9A3, 0xC9D8, 0xC9D8, 0xC9D8, 0xC993, 0xC8D3, 0xC7B5, 0xC651,\n    0xC4C2, 0xC322, 0xC18C, 0xC019, 0xBEE4, 0xBE07, 0xBD9C, 0xBD78,\n    0xBD5F, 0xBD4F, 0xBD49, 0xBD4B, 0xBD55, 0xBD67, 0xBD7F, 0xBD9E,\n    0xBDC3, 0xBDED, 0xBE1C, 0xBE4F, 0xBE86, 0xBEC0, 0xBEFD, 0xBF3B,\n    0xBF7B, 0xBFBC, 0xBFFD, 0xC03E, 0xC07E, 0xC0BC, 0xC0F9, 0xC134,\n    0xC16C, 0xC1A0, 0xC1D0, 0xC1FB, 0xC221, 0xC242, 0xC25C, 0xC270,\n    0xC27C, 0xC280, 0x1E4A, 0x1DC2, 0x1C67, 0x1A90, 0x1897, 0x16D5,\n    0x15A2, 0x1557, 0x164D, 0x1DBC, 0x29F9, 0x3107, 0x2EBE, 0x283A,\n    0x216E, 0x1E4A, 0x1EA0, 0x1F8D, 0x20EE, 0x22A0, 0x2481, 0x2670,\n    0x28CB, 0x2BC9, 0x2F0A, 0x322E, 0x34D4, 0x369B, 0x3724, 0x36E1,\n    0x3685, 0x3612, 0x358B, 0x34EF, 0x3442, 0x3384, 0x32B7, 0x31DD,\n    0x30F6, 0x3006, 0x2F0D, 0x2E0D, 0x2D08, 0x2BFE, 0x2AF2, 0x29E6,\n    0x28DA, 0x27D0, 0x26CA, 0x25CA, 0x24D1, 0x23E1, 0x22FB, 0x2220,\n    0x2153, 0x2095, 0x1FE7, 0x1F4C, 0x1EC4, 0x1E51, 0x1DF5, 0x1DB1,\n    0x1D87, 0x1D79, 0x1B09, 0x1B13, 0x1B29, 0x1B41, 0x1B50, 0x1B4B,\n    0x1B27, 0x1AD9, 0x1A56, 0x185B, 0x155A, 0x13DB, 0x1507, 0x177E,\n    0x19EE, 0x1B09, 0x1B09, 0x1B09, 0x1AD8, 0x1A53, 0x198B, 0x1895,\n    0x1782, 0x1665, 0x1552, 0x145A, 0x1391, 0x130A, 0x12D6, 0x12D9,\n    0x12E4, 0x12F8, 0x1315, 0x1339, 0x1365, 0x1397, 0x13CF, 0x140C,\n    0x144E, 0x1495, 0x14E0, 0x152D, 0x157D, 0x15D0, 0x1623, 0x1678,\n    0x16CD, 0x1722, 0x1776, 0x17C9, 0x181A, 0x1868, 0x18B4, 0x18FB,\n    0x193F, 0x197E, 0x19B8, 0x19EB, 0x1A19, 0x1A3F, 0x1A5E, 0x1A75,\n    0x1A83, 0x1A87, 0x1144, 0x1135, 0x1112, 0x10E9, 0x10C8, 0x10BE,\n    0x10D8, 0x1126, 0x11B5, 0x1403, 0x178C, 0x1957, 0x180C, 0x1546,\n    0x1284, 0x1144, 0x1144, 0x1144, 0x1165, 0x11BC, 0x123F, 0x12DF,\n    0x138F, 0x1443, 0x14EE, 0x1581, 0x15F1, 0x1631, 0x1632, 0x160C,\n    0x15DC, 0x15A3, 0x1563, 0x151B, 0x14CC, 0x1477, 0x141C, 0x13BD,\n    0x1359, 0x12F2, 0x1287, 0x121A, 0x11AB, 0x113B, 0x10CA, 0x105A,\n    0x0FEA, 0x0F7B, 0x0F0E, 0x0EA4, 0x0E3D, 0x0DD9, 0x0D7A, 0x0D20,\n    0x0CCC, 0x0C7E, 0x0C36, 0x0BF7, 0x0BBF, 0x0B90, 0x0B6A, 0x0B4F,\n    0x0B3E, 0x0B38, 0xAC44, 0xAC5B, 0xAC91, 0xACCF, 0xACFC, 0xAD02,\n    0xACC9, 0xAC38, 0xAB3A, 0xA73C, 0xA124, 0x9E11, 0xA05D, 0xA53D,\n    0xAA13, 0xAC44, 0xAC44, 0xAC44, 0xABD3, 0xAA9C, 0xA8CE, 0xA695,\n    0xA41D, 0xA193, 0x9F25, 0x9CFF, 0x9B4E, 0x9A3E, 0x99FD, 0x9A40,\n    0x9A9E, 0x9B16, 0x9BA5, 0x9C4A, 0x9D03, 0x9DCF, 0x9EAB, 0x9F96,\n    0xA08E, 0xA192, 0xA2A0, 0xA3B5, 0xA4D1, 0xA5F1, 0xA714, 0xA839,\n    0xA95C, 0xAA7D, 0xAB9B, 0xACB2, 0xADC1, 0xAEC8, 0xAFC3, 0xB0B2,\n    0xB192, 0xB262, 0xB31F, 0xB3CA, 0xB45E, 0xB4DC, 0xB541, 0xB58B,\n    0xB5B8, 0xB5C8, 0x0000, 0xFF90, 0xFE69, 0xFCC7, 0xFAE9, 0xF90A,\n    0xF768, 0xF641, 0xF5D1, 0xF661, 0xF7D6, 0xF9D3, 0xFBFE, 0xFDFC,\n    0xFF70, 0x0000, 0x0000, 0x0000, 0x0009, 0x0021, 0x0045, 0x0072,\n    0x00A1, 0x00D1, 0x00FD, 0x0122, 0x013A, 0x0143, 0x0138, 0x0121,\n    0x0106, 0x00E7, 0x00C5, 0x00A1, 0x0079, 0x0050, 0x0024, 0xFFF8,\n    0xFFC8, 0xFF98, 0xFF66, 0xFF34, 0xFF01, 0xFECE, 0xFE9B, 0xFE68,\n    0xFE35, 0xFE03, 0xFDD3, 0xFDA3, 0xFD75, 0xFD49, 0xFD1F, 0xFCF7,\n    0xFCD2, 0xFCAF, 0xFC90, 0xFC74, 0xFC5B, 0xFC47, 0xFC36, 0xFC2A,\n    0xFC23, 0xFC20, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0005, 0x000B, 0x0011,\n    0x0016, 0x001B, 0x001D, 0x001C, 0x0017, 0x000D, 0xFFFD, 0xFFE9,\n    0xFFD2, 0xFFBA, 0xFF9F, 0xFF84, 0xFF67, 0xFF48, 0xFF29, 0xFF09,\n    0xFEE8, 0xFEC6, 0xFEA4, 0xFE82, 0xFE5F, 0xFE3D, 0xFE1A, 0xFDF8,\n    0xFDD7, 0xFDB6, 0xFD96, 0xFD77, 0xFD59, 0xFD3C, 0xFD21, 0xFD07,\n    0xFCEF, 0xFCD8, 0xFCC4, 0xFCB2, 0xFCA3, 0xFC96, 0xFC8B, 0xFC83,\n    0xFC7F, 0xFC7D, 0xBF40, 0xBEAC, 0xBD26, 0xBAFF, 0xB887, 0xB60F,\n    0xB3E8, 0xB262, 0xB1CE, 0xB28D, 0xB479, 0xB719, 0xB9F6, 0xBC96,\n    0xBE82, 0xBF40, 0xBF40, 0xBF40, 0xBEFF, 0xBE4D, 0xBD43, 0xBBFB,\n    0xBA8E, 0xB918, 0xB7B0, 0xB671, 0xB574, 0xB4D3, 0xB4A8, 0xB4C9,\n    0xB4F8, 0xB535, 0xB580, 0xB5D7, 0xB638, 0xB6A5, 0xB71A, 0xB798,\n    0xB81D, 0xB8A9, 0xB93A, 0xB9D0, 0xBA69, 0xBB05, 0xBBA3, 0xBC41,\n    0xBCDF, 0xBD7C, 0xBE17, 0xBEAF, 0xBF43, 0xBFD1, 0xC05A, 0xC0DC,\n    0xC156, 0xC1C7, 0xC22F, 0xC28C, 0xC2DD, 0xC321, 0xC358, 0xC381,\n    0xC39A, 0xC3A2, 0x2537, 0x2537, 0x2537, 0x2537, 0x2537, 0x2537,\n    0x2537, 0x2537, 0x2537, 0x2537, 0x2537, 0x2537, 0x2537, 0x2537,\n    0x2537, 0x2537, 0x2537, 0x2537, 0x25C5, 0x2749, 0x298C, 0x2C57,\n    0x2F72, 0x32A4, 0x35B7, 0x3873, 0x3AA0, 0x3C07, 0x3C70, 0x3C36,\n    0x3BDD, 0x3B67, 0x3AD4, 0x3A28, 0x3965, 0x388B, 0x379E, 0x369F,\n    0x3590, 0x3474, 0x334C, 0x321A, 0x30E0, 0x2FA1, 0x2E5D, 0x2D18,\n    0x2BD3, 0x2A91, 0x2952, 0x2819, 0x26E9, 0x25C3, 0x24A9, 0x239D,\n    0x22A1, 0x21B7, 0x20E1, 0x2021, 0x1F7A, 0x1EEC, 0x1E7A, 0x1E27,\n    0x1DF3, 0x1DE1, 0xD64A, 0xD7ED, 0xDC3D, 0xE255, 0xE952, 0xF04F,\n    0xF668, 0xFAB8, 0xFC5A, 0xFA3F, 0xF4CF, 0xED5F, 0xE545, 0xDDD6,\n    0xD866, 0xD64A, 0xD64A, 0xD64A, 0xD69D, 0xD782, 0xD8D8, 0xDA81,\n    0xDC5D, 0xDE4D, 0xE031, 0xE1E9, 0xE357, 0xE45C, 0xE4D6, 0xE4FC,\n    0xE514, 0xE520, 0xE521, 0xE517, 0xE504, 0xE4E7, 0xE4C2, 0xE494,\n    0xE460, 0xE425, 0xE3E5, 0xE39F, 0xE355, 0xE307, 0xE2B6, 0xE263,\n    0xE20F, 0xE1B9, 0xE163, 0xE10E, 0xE0BA, 0xE068, 0xE018, 0xDFCC,\n    0xDF84, 0xDF40, 0xDF02, 0xDEC9, 0xDE98, 0xDE6E, 0xDE4C, 0xDE33,\n    0xDE23, 0xDE1E, 0xEC41, 0xEC58, 0xEC94, 0xECEA, 0xED4C, 0xEDAE,\n    0xEE04, 0xEE40, 0xEE57, 0xEE3A, 0xEDED, 0xED85, 0xED13, 0xECAB,\n    0xEC5E, 0xEC41, 0xEC41, 0xEC41, 0xEC23, 0xEBD1, 0xEB58, 0xEAC3,\n    0xEA1F, 0xE977, 0xE8D7, 0xE84C, 0xE7E1, 0xE7A3, 0xE79E, 0xE7BD,\n    0xE7E4, 0xE814, 0xE84A, 0xE887, 0xE8CA, 0xE912, 0xE95F, 0xE9B1,\n    0xEA07, 0xEA60, 0xEABB, 0xEB19, 0xEB79, 0xEBDA, 0xEC3B, 0xEC9D,\n    0xECFE, 0xED5E, 0xEDBC, 0xEE18, 0xEE72, 0xEEC8, 0xEF1B, 0xEF69,\n    0xEFB2, 0xEFF6, 0xF034, 0xF06C, 0xF09C, 0xF0C5, 0xF0E6, 0xF0FE,\n    0xF10D, 0xF112, 0xB59E, 0xB5F2, 0xB6CE, 0xB805, 0xB96A, 0xBACF,\n    0xBC06, 0xBCE2, 0xBD35, 0xBCCA, 0xBBB4, 0xBA39, 0xB89B, 0xB71F,\n    0xB60A, 0xB59E, 0xB59E, 0xB59E, 0xB51F, 0xB3C2, 0xB1B9, 0xAF36,\n    0xAC6A, 0xA986, 0xA6BC, 0xA43D, 0xA23B, 0xA0E8, 0xA074, 0xA08F,\n    0xA0C3, 0xA111, 0xA176, 0xA1F0, 0xA27E, 0xA31E, 0xA3CF, 0xA48E,\n    0xA55C, 0xA635, 0xA718, 0xA803, 0xA8F6, 0xA9EE, 0xAAEA, 0xABE7,\n    0xACE5, 0xADE2, 0xAEDC, 0xAFD2, 0xB0C2, 0xB1AA, 0xB288, 0xB35C,\n    0xB424, 0xB4DD, 0xB586, 0xB61F, 0xB6A4, 0xB714, 0xB76F, 0xB7B1,\n    0xB7DB, 0xB7E9, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001,\n    0x4171, 0xBF5F, 0x0000, 0xFFB5, 0xFEE7, 0xFDB2, 0xFC35, 0xFA8B,\n    0xF8D4, 0xF72A, 0xF5AD, 0xF478, 0xF3AA, 0xF35F, 0xF52A, 0xF935,\n    0xFD7D, 0x0000, 0x005C, 0xFFC5, 0xFE99, 0xFD36, 0xFBFB, 0xFACE,\n    0xF96D, 0xF7F0, 0xF673, 0xF510, 0xF3E2, 0xF304, 0xF28F, 0xF25B,\n    0xF22D, 0xF205, 0xF1E3, 0xF1C6, 0xF1AE, 0xF19B, 0xF18D, 0xF183,\n    0xF17D, 0xF17A, 0xF17B, 0xF17F, 0xF186, 0xF18F, 0xF19B, 0xF1A9,\n    0xF1B8, 0xF1C9, 0xF1DB, 0xF1EE, 0xF201, 0xF215, 0xF229, 0xF23D,\n    0xF250, 0xF262, 0xF273, 0xF283, 0xF291, 0xF29D, 0xF2A7, 0xF2AF,\n    0xF2B3, 0xF2B5, 0x0000, 0x0004, 0x0011, 0x0024, 0x003B, 0x0055,\n    0x0070, 0x008A, 0x00A2, 0x00B5, 0x00C2, 0x00C6, 0x00B2, 0x007F,\n    0x003E, 0x0000, 0xFFBC, 0xFF6B, 0xFF1D, 0xFEE2, 0xFECB, 0xFEDB,\n    0xFF07, 0xFF43, 0xFF85, 0xFFC3, 0xFFF3, 0x000A, 0x0000, 0xFFDF,\n    0xFFBA, 0xFF90, 0xFF63, 0xFF33, 0xFF00, 0xFECA, 0xFE91, 0xFE57,\n    0xFE1B, 0xFDDD, 0xFD9F, 0xFD5F, 0xFD1F, 0xFCDF, 0xFC9F, 0xFC60,\n    0xFC21, 0xFBE3, 0xFBA6, 0xFB6C, 0xFB33, 0xFAFC, 0xFAC8, 0xFA97,\n    0xFA69, 0xFA3F, 0xFA19, 0xF9F6, 0xF9D8, 0xF9BF, 0xF9AB, 0xF99C,\n    0xF993, 0xF990, 0xFC62, 0xFC48, 0xFC05, 0xFBA8, 0xFB40, 0xFADC,\n    0xFA8B, 0xFA5C, 0xFA5E, 0xFAA1, 0xFB32, 0xFC22, 0xFF95, 0x05A1,\n    0x0B45, 0x0D7D, 0x0B3B, 0x0670, 0x0097, 0xFB2B, 0xF7A7, 0xF5DE,\n    0xF495, 0xF3B7, 0xF32D, 0xF2E2, 0xF2C0, 0xF2AF, 0xF29B, 0xF27E,\n    0xF266, 0xF250, 0xF23D, 0xF22E, 0xF221, 0xF216, 0xF20E, 0xF208,\n    0xF205, 0xF203, 0xF203, 0xF205, 0xF208, 0xF20D, 0xF213, 0xF21A,\n    0xF222, 0xF22B, 0xF234, 0xF23E, 0xF248, 0xF252, 0xF25D, 0xF267,\n    0xF271, 0xF27A, 0xF283, 0xF28C, 0xF293, 0xF29A, 0xF29F, 0xF2A3,\n    0xF2A5, 0xF2A6, 0x0000, 0xFF37, 0xFD42, 0xFABD, 0xF842, 0xF66D,\n    0xF5D9, 0xF72B, 0xFA07, 0xFD85, 0x00BA, 0x02C0, 0x02F5, 0x01F0,\n    0x00A4, 0x0000, 0x0000, 0x0000, 0xFFC5, 0xFF4E, 0xFEF5, 0xFF13,\n    0x0000, 0x022B, 0x055B, 0x08F1, 0x0C4D, 0x0ECF, 0x0FD7, 0x0FE4,\n    0x0FE0, 0x0FCD, 0x0FAA, 0x0F7A, 0x0F3C, 0x0EF3, 0x0E9E, 0x0E40,\n    0x0DD8, 0x0D69, 0x0CF2, 0x0C75, 0x0BF3, 0x0B6D, 0x0AE4, 0x0A59,\n    0x09CD, 0x0940, 0x08B5, 0x082B, 0x07A4, 0x0721, 0x06A3, 0x062A,\n    0x05B8, 0x054E, 0x04ED, 0x0496, 0x0449, 0x0408, 0x03D4, 0x03AD,\n    0x0395, 0x038D, 0x0000, 0x0023, 0x0082, 0x010B, 0x01AC, 0x0255,\n    0x02F4, 0x03BB, 0x04BA, 0x05AD, 0x064F, 0x065C, 0x052E, 0x0304,\n    0x00EE, 0x0000, 0x0000, 0x0000, 0x000E, 0x002C, 0x0042, 0x003B,\n    0x0000, 0xFF7B, 0xFEBB, 0xFDE2, 0xFD11, 0xFC6C, 0xFC12, 0xFBEB,\n    0xFBC5, 0xFBA1, 0xFB7E, 0xFB5C, 0xFB3C, 0xFB1D, 0xFB00, 0xFAE4,\n    0xFAC9, 0xFAB0, 0xFA97, 0xFA80, 0xFA6A, 0xFA56, 0xFA42, 0xFA30,\n    0xFA1F, 0xFA0F, 0xFA00, 0xF9F3, 0xF9E6, 0xF9DA, 0xF9D0, 0xF9C6,\n    0xF9BE, 0xF9B6, 0xF9AF, 0xF9AA, 0xF9A5, 0xF9A1, 0xF99E, 0xF99C,\n    0xF99B, 0xF99B, 0x0884, 0x08D8, 0x09BF, 0x0B18, 0x0CC1, 0x0E99,\n    0x107F, 0x1329, 0x16BF, 0x1A44, 0x1CBE, 0x1D32, 0x1977, 0x1269,\n    0x0B94, 0x0884, 0x0884, 0x0884, 0x08EE, 0x0A09, 0x0B9F, 0x0D7E,\n    0x0F6F, 0x11DF, 0x1501, 0x1845, 0x1B1E, 0x1CFD, 0x1D55, 0x1CAB,\n    0x1BE4, 0x1B02, 0x1A07, 0x18F5, 0x17CE, 0x1695, 0x154B, 0x13F3,\n    0x128D, 0x111D, 0x0FA4, 0x0E25, 0x0CA1, 0x0B1A, 0x0993, 0x080D,\n    0x068A, 0x050D, 0x0398, 0x022C, 0x00CB, 0xFF79, 0xFE35, 0xFD03,\n    0xFBE5, 0xFADC, 0xF9EB, 0xF913, 0xF857, 0xF7B9, 0xF73A, 0xF6DD,\n    0xF6A4, 0xF690, 0x0000, 0x007E, 0x01D8, 0x03DE, 0x065D, 0x0927,\n    0x0C08, 0x0ED1, 0x1151, 0x1356, 0x14B1, 0x152F, 0x11E0, 0x0A97,\n    0x034F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1,\n    0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40A1,\n    0x40A1, 0x40A1, 0x40A1, 0x40A1, 0x40C2, 0x411C, 0x41A2, 0x4247,\n    0x42FE, 0x43BB, 0x446F, 0x450F, 0x458C, 0x45DA, 0x45ED, 0x45D9,\n    0x45BD, 0x459A, 0x4570, 0x453F, 0x4509, 0x44CD, 0x448C, 0x4447,\n    0x43FE, 0x43B2, 0x4363, 0x4312, 0x42BF, 0x426A, 0x4215, 0x41BF,\n    0x416A, 0x4115, 0x40C2, 0x4070, 0x4020, 0x3FD3, 0x3F8A, 0x3F44,\n    0x3F02, 0x3EC6, 0x3E8E, 0x3E5C, 0x3E31, 0x3E0C, 0x3DEF, 0x3DD9,\n    0x3DCB, 0x3DC7,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_9D.inc.c",
    "content": "static const struct Animation anim_9D[] = {\n    9,\n    189,\n    0,\n    0,\n    0x1A,\n    ANIMINDEX_NUMPARTS(anim_9D_indices),\n    anim_9D_values,\n    anim_9D_indices,\n    0,\n};\n\n\nstatic const u16 anim_9D_indices[] = {\n    0x0001, 0x0000, 0x001A, 0x0001, 0x001A, 0x001B, 0x0001, 0x0000, 0x0001, 0x0035, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001A, 0x03B2,\n    0x001A, 0x0364, 0x001A, 0x037E, 0x001A, 0x0398,\n    0x001A, 0x0316, 0x001A, 0x0330, 0x001A, 0x034A,\n    0x0001, 0x0312, 0x0001, 0x0313, 0x0001, 0x0314,\n    0x001A, 0x009E, 0x001A, 0x00B8, 0x001A, 0x00D2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001A, 0x0084,\n    0x001A, 0x0036, 0x001A, 0x0050, 0x001A, 0x006A,\n    0x0001, 0x030E, 0x0001, 0x030F, 0x0001, 0x0310,\n    0x001A, 0x0154, 0x001A, 0x016E, 0x001A, 0x0188,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001A, 0x013A,\n    0x001A, 0x00EC, 0x001A, 0x0106, 0x001A, 0x0120,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0311,\n    0x001A, 0x02C0, 0x001A, 0x02DA, 0x001A, 0x02F4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001A, 0x02A6,\n    0x001A, 0x0258, 0x001A, 0x0272, 0x001A, 0x028C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0315,\n    0x001A, 0x020A, 0x001A, 0x0224, 0x001A, 0x023E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001A, 0x01F0,\n    0x001A, 0x01A2, 0x001A, 0x01BC, 0x001A, 0x01D6,\n};\n\nstatic const s16 anim_9D_values[] = {\n    0x0000, 0x00B3, 0x00B3, 0x00B3, 0x00B3, 0x00B2, 0x00B2, 0x00B1,\n    0x00B0, 0x00B0, 0x00AF, 0x00AF, 0x00AF, 0x00B1, 0x00B4, 0x00B8,\n    0x00BA, 0x00BB, 0x00B5, 0x00AB, 0x00A1, 0x009B, 0x009B, 0x009F,\n    0x00A4, 0x00A8, 0x00AA, 0xFF22, 0xFF22, 0xFF22, 0xFF22, 0xFF22,\n    0xFF22, 0xFF22, 0xFF22, 0xFF22, 0xFF22, 0xFF22, 0xFF22, 0xFF35,\n    0xFF5D, 0xFF80, 0xFF96, 0xFFAB, 0xFFBE, 0xFFD1, 0xFFE3, 0xFFF5,\n    0x0000, 0x0002, 0x0002, 0x0001, 0x0000, 0x3FFF, 0xEFA7, 0xEFF5,\n    0xF074, 0xF11E, 0xF1E9, 0xF2CF, 0xF3C5, 0xF4C5, 0xF5C5, 0xF6BE,\n    0xF7A7, 0xF879, 0xF938, 0xF9F1, 0xFA9F, 0xFB40, 0xFBD2, 0xFC64,\n    0xFD00, 0xFD9F, 0xFE3A, 0xFECA, 0xFF47, 0xFFA9, 0xFFE9, 0x0000,\n    0xF974, 0xF92F, 0xF8FF, 0xF8E0, 0xF8CF, 0xF8CA, 0xF8CD, 0xF8D5,\n    0xF8E0, 0xF8E9, 0xF8EE, 0xF8ED, 0xF8EB, 0xF8F1, 0xF8FB, 0xF907,\n    0xF912, 0xF91E, 0xF92C, 0xF93B, 0xF94B, 0xF95A, 0xF967, 0xF972,\n    0xF979, 0xF97C, 0xF0B0, 0xF0BE, 0xF0BB, 0xF0A7, 0xF087, 0xF05E,\n    0xF02D, 0xEFF9, 0xEFC3, 0xEF90, 0xEF61, 0xEF39, 0xEF15, 0xEEF0,\n    0xEECA, 0xEEA6, 0xEE85, 0xEE64, 0xEE40, 0xEE1B, 0xEDF7, 0xEDD5,\n    0xEDB8, 0xEDA0, 0xED91, 0xED8C, 0xE3FA, 0xE446, 0xE3C9, 0xE2AD,\n    0xE11F, 0xDF49, 0xDD58, 0xDB76, 0xD9D0, 0xD891, 0xD7E4, 0xD7F5,\n    0xDA81, 0xDFCD, 0xE5D1, 0xEA86, 0xEBE5, 0xE9F9, 0xE67A, 0xE1E3,\n    0xDCAF, 0xD75A, 0xD25E, 0xCE36, 0xCB5D, 0xCA4F, 0xE28F, 0xE1FC,\n    0xE21E, 0xE2D3, 0xE3FB, 0xE574, 0xE71C, 0xE8D2, 0xEA75, 0xEBE4,\n    0xECFC, 0xED9D, 0xED1E, 0xEB7D, 0xE990, 0xE82D, 0xE82C, 0xE995,\n    0xEBBB, 0xEE5E, 0xF143, 0xF42B, 0xF6D8, 0xF90E, 0xFA8F, 0xFB1D,\n    0xEB96, 0xEB49, 0xEA99, 0xE998, 0xE858, 0xE6EC, 0xE564, 0xE3D4,\n    0xE24C, 0xE0DE, 0xDF9D, 0xDE9B, 0xDE19, 0xDE16, 0xDE3D, 0xDE3D,\n    0xDDC0, 0xDCB7, 0xDB5C, 0xD9CF, 0xD82C, 0xD693, 0xD520, 0xD3F2,\n    0xD326, 0xD2DC, 0xE73E, 0xE82E, 0xE860, 0xE7FA, 0xE71D, 0xE5EF,\n    0xE493, 0xE32D, 0xE1E0, 0xE0D0, 0xE022, 0xDFF8, 0xE130, 0xE3D6,\n    0xE6D4, 0xE918, 0xE98E, 0xE834, 0xE5F3, 0xE313, 0xDFDD, 0xDC9A,\n    0xD992, 0xD70E, 0xD556, 0xD4B4, 0x12A6, 0x1283, 0x1212, 0x115F,\n    0x1078, 0x0F6C, 0x0E46, 0x0D15, 0x0BE5, 0x0AC6, 0x09C3, 0x08EA,\n    0x0824, 0x0753, 0x067B, 0x05A0, 0x04C6, 0x03F2, 0x0327, 0x0269,\n    0x01BE, 0x0128, 0x00AD, 0x004F, 0x0014, 0x0000, 0x2B12, 0x2AC1,\n    0x29BB, 0x281E, 0x260A, 0x239D, 0x20F7, 0x1E36, 0x1B7A, 0x18E1,\n    0x168B, 0x1497, 0x12CE, 0x10EB, 0x0EF8, 0x0CFE, 0x0B07, 0x091C,\n    0x0747, 0x0592, 0x0406, 0x02AD, 0x018F, 0x00B8, 0x002F, 0x0000,\n    0xF7D9, 0xF804, 0xF816, 0xF814, 0xF801, 0xF7E1, 0xF7B7, 0xF788,\n    0xF757, 0xF727, 0xF6FE, 0xF6DE, 0xF6C1, 0xF6A1, 0xF67D, 0xF658,\n    0xF631, 0xF60B, 0xF5E6, 0xF5C2, 0xF5A1, 0xF584, 0xF56C, 0xF559,\n    0xF54D, 0xF549, 0xFAB5, 0xFB28, 0xFA89, 0xF905, 0xF6C8, 0xF400,\n    0xF0D9, 0xED82, 0xEA26, 0xE6F4, 0xE417, 0xE1BE, 0xDF9C, 0xDD52,\n    0xDAEC, 0xD876, 0xD5FF, 0xD393, 0xD13F, 0xCF10, 0xCD13, 0xCB56,\n    0xC9E5, 0xC8CD, 0xC81C, 0xC7DD, 0xBCC6, 0xC13A, 0xC5C2, 0xCA51,\n    0xCEDC, 0xD356, 0xD7B3, 0xDBE7, 0xDFE5, 0xE3A3, 0xE714, 0xEA2B,\n    0xED11, 0xEFEF, 0xF2BF, 0xF578, 0xF813, 0xFA88, 0xFCCF, 0xFEE2,\n    0x00B7, 0x0249, 0x038E, 0x0481, 0x0517, 0x054B, 0x16C4, 0x16B2,\n    0x170B, 0x17BD, 0x18B6, 0x19E5, 0x1B37, 0x1C9B, 0x1DFF, 0x1F50,\n    0x207E, 0x2177, 0x2258, 0x2347, 0x2440, 0x253E, 0x263B, 0x2733,\n    0x2820, 0x28FE, 0x29C8, 0x2A78, 0x2B0A, 0x2B78, 0x2BBE, 0x2BD6,\n    0x48B0, 0x4E14, 0x5466, 0x5B74, 0x630B, 0x6AF7, 0x7308, 0x7B08,\n    0x82CA, 0x8A14, 0x90B6, 0x967F, 0x9BDA, 0xA149, 0xA6B9, 0xAC17,\n    0xB14E, 0xB64C, 0xBAFC, 0xBF4C, 0xC328, 0xC67B, 0xC934, 0xCB3D,\n    0xCC84, 0xCCF6, 0xFFE6, 0xFFD6, 0xFFAC, 0xFF73, 0xFF34, 0xFEF8,\n    0xFEC9, 0xFEB1, 0xFEB9, 0xFEEB, 0xFF51, 0xFFF4, 0x051A, 0x09E2,\n    0x07A6, 0x0338, 0x0012, 0xFF60, 0xFF98, 0x0024, 0x0073, 0x0066,\n    0x0049, 0x0027, 0x000B, 0x0000, 0xFFA4, 0xFFA0, 0xFF9A, 0xFF91,\n    0xFF87, 0xFF7C, 0xFF72, 0xFF69, 0xFF62, 0xFF5F, 0xFF5F, 0xFF65,\n    0xFFC1, 0x0014, 0xFFE5, 0xFF8B, 0xFF4D, 0xFF42, 0xFF4B, 0xFF59,\n    0xFF5F, 0xFF58, 0xFF4C, 0xFF3F, 0xFF34, 0xFF30, 0xC280, 0xC2CC,\n    0xC344, 0xC3DA, 0xC481, 0xC52C, 0xC5CE, 0xC65A, 0xC6C3, 0xC6FC,\n    0xC6F6, 0xC6A7, 0xC190, 0xBC56, 0xBE1D, 0xC1DB, 0xC2E7, 0xBEAA,\n    0xB7D4, 0xB1A5, 0xAF60, 0xB29F, 0xB93F, 0xC0E6, 0xC737, 0xC9D8,\n    0x1D79, 0x1D0E, 0x1CE7, 0x1CF4, 0x1D23, 0x1D65, 0x1DA9, 0x1DE0,\n    0x1DF8, 0x1DE2, 0x1D8C, 0x1CE8, 0x1A3D, 0x1564, 0x109F, 0x0E31,\n    0x105D, 0x1C55, 0x3004, 0x42C7, 0x4BFC, 0x4838, 0x3D03, 0x2F1D,\n    0x234A, 0x1E4A, 0x1A87, 0x1AB6, 0x1AE6, 0x1B13, 0x1B3C, 0x1B5E,\n    0x1B77, 0x1B85, 0x1B85, 0x1B75, 0x1B52, 0x1B1A, 0x1981, 0x1724,\n    0x1576, 0x13DE, 0x1227, 0x0FB0, 0x0CC5, 0x0A8F, 0x0A39, 0x0C9A,\n    0x10DA, 0x1597, 0x1972, 0x1B09, 0x0B38, 0x0B2B, 0x0B54, 0x0BA8,\n    0x0C19, 0x0C9A, 0x0D1D, 0x0D96, 0x0DF8, 0x0E35, 0x0E40, 0x0E0D,\n    0x0ABD, 0x06CA, 0x05A3, 0x0561, 0x05EF, 0x075F, 0x0973, 0x0B9C,\n    0x0D4B, 0x0E83, 0x0F99, 0x1079, 0x110E, 0x1144, 0xB5C8, 0xB606,\n    0xB5CB, 0xB535, 0xB462, 0xB370, 0xB27D, 0xB1A6, 0xB10A, 0xB0C5,\n    0xB0F7, 0xB1BD, 0xB95C, 0xC419, 0xCD20, 0xD557, 0xD67A, 0xCD0F,\n    0xBDB3, 0xAE4A, 0xA4B7, 0xA280, 0xA3FF, 0xA75B, 0xAABB, 0xAC44,\n    0xFC20, 0xFC19, 0xFC23, 0xFC3E, 0xFC65, 0xFC97, 0xFCD0, 0xFD0E,\n    0xFD4F, 0xFD8F, 0xFDCD, 0xFE04, 0xFE63, 0xFEC0, 0xFF02, 0xFF2F,\n    0xFEEE, 0xFCDE, 0xFBCD, 0xFFFF, 0x048E, 0x023D, 0x0160, 0x00A9,\n    0x002D, 0x0000, 0xFC7D, 0xFC7D, 0xFC8D, 0xFCAB, 0xFCD5, 0xFD07,\n    0xFD3E, 0xFD77, 0xFDB1, 0xFDE7, 0xFE17, 0xFE3F, 0xFE3A, 0xFE38,\n    0xFE3B, 0xFE53, 0xFF0F, 0x0209, 0x0475, 0x026D, 0xFF99, 0x000B,\n    0x0015, 0x0010, 0x0005, 0x0000, 0xC3A2, 0xC3D9, 0xC3ED, 0xC3E3,\n    0xC3C2, 0xC38D, 0xC34A, 0xC2FE, 0xC2AE, 0xC260, 0xC218, 0xC1DC,\n    0xC168, 0xC0F2, 0xC09D, 0xC061, 0xC0B6, 0xC367, 0xC4C7, 0xBFAC,\n    0xB947, 0xB778, 0xB95C, 0xBBF5, 0xBE42, 0xBF40, 0x1DE1, 0x1D4F,\n    0x1CD3, 0x1C74, 0x1C38, 0x1C26, 0x1C45, 0x1C9B, 0x1D2F, 0x1E08,\n    0x1F2C, 0x20A3, 0x2AE9, 0x3319, 0x2B16, 0x1DD7, 0x13F4, 0x12D4,\n    0x185F, 0x27B1, 0x33EE, 0x3393, 0x3012, 0x2B46, 0x270A, 0x2537,\n    0xDE1E, 0xDDAD, 0xDCEA, 0xDBF2, 0xDADF, 0xD9CD, 0xD8D9, 0xD81F,\n    0xD7BA, 0xD7C6, 0xD85F, 0xD9A2, 0xE436, 0xF342, 0xF952, 0xF6A4,\n    0xF2E2, 0xF195, 0xF032, 0xECF2, 0xE912, 0xE4C0, 0xDFCC, 0xDB20,\n    0xD7A7, 0xD64A, 0xF112, 0xF120, 0xF102, 0xF0C2, 0xF06A, 0xF005,\n    0xEF9D, 0xEF3C, 0xEEEE, 0xEEBC, 0xEEB1, 0xEED8, 0xF0BA, 0xF475,\n    0xFAAF, 0xFA88, 0xF91A, 0xF831, 0xF6A9, 0xF330, 0xF01A, 0xEEC0,\n    0xEDAD, 0xECE5, 0xEC6A, 0xEC41, 0xB7E9, 0xB87A, 0xB91F, 0xB9C9,\n    0xBA65, 0xBAE3, 0xBB32, 0xBB3F, 0xBAFB, 0xBA54, 0xB938, 0xB798,\n    0xADCD, 0x9F16, 0x9452, 0x9967, 0x9FB0, 0xA001, 0x9EB8, 0x9D01,\n    0x9D3C, 0xA1DD, 0xA82C, 0xAE9B, 0xB39B, 0xB59E, 0x8001, 0x8001,\n    0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F, 0xF2B5, 0xF303,\n    0xF391, 0xF44F, 0xF52F, 0xF621, 0xF715, 0xF7FC, 0xF8C7, 0xF965,\n    0xF9C9, 0xF9E2, 0xF8E7, 0xF6B2, 0xF427, 0xF228, 0xF19B, 0xF2FD,\n    0xF5B8, 0xF90C, 0xFC3B, 0xFE86, 0xFFA8, 0x000F, 0x0011, 0x0000,\n    0xF990, 0xF98E, 0xF9AA, 0xF9DE, 0xFA27, 0xFA7E, 0xFAE0, 0xFB49,\n    0xFBB2, 0xFC18, 0xFC77, 0xFCC8, 0xFD11, 0xFD59, 0xFD9F, 0xFDE5,\n    0xFE2B, 0xFE72, 0xFEBC, 0xFF03, 0xFF45, 0xFF7F, 0xFFB1, 0xFFDA,\n    0xFFF6, 0x0000, 0xF2A6, 0xF2D4, 0xF320, 0xF385, 0xF3FE, 0xF487,\n    0xF519, 0xF5B2, 0xF64A, 0xF6DE, 0xF769, 0xF7E6, 0xF857, 0xF8C3,\n    0xF929, 0xF98A, 0xF9E5, 0xFA38, 0xFA85, 0xFACD, 0xFB13, 0xFB58,\n    0xFBAA, 0xFC00, 0xFC46, 0xFC62, 0x038D, 0x032C, 0x02B3, 0x022C,\n    0x01A4, 0x0123, 0x00B6, 0x0066, 0x003F, 0x004B, 0x0095, 0x0127,\n    0x0317, 0x06A6, 0x0AA6, 0x0DE5, 0x0F35, 0x0DEE, 0x0ADB, 0x06F6,\n    0x033B, 0x00A5, 0xFF98, 0xFF7B, 0xFFC9, 0x0000, 0xF99B, 0xF9A9,\n    0xF9C9, 0xF9F9, 0xFA38, 0xFA83, 0xFAD9, 0xFB39, 0xFBA1, 0xFC0E,\n    0xFC80, 0xFCF5, 0xFD9B, 0xFE84, 0xFF7F, 0x005E, 0x00F2, 0x012C,\n    0x012B, 0x0105, 0x00D3, 0x00AC, 0x0081, 0x0048, 0x0015, 0x0000,\n    0xF690, 0xF623, 0xF623, 0xF681, 0xF72C, 0xF812, 0xF924, 0xFA50,\n    0xFB86, 0xFCB4, 0xFDCB, 0xFEBA, 0xFF99, 0x008C, 0x0193, 0x02AC,\n    0x03D6, 0x053A, 0x06D9, 0x0874, 0x09CE, 0x0AA8, 0x0A9D, 0x09D9,\n    0x08F2, 0x0884, 0x3DC7, 0x3DA4, 0x3D89, 0x3D78, 0x3D72, 0x3D79,\n    0x3D8E, 0x3DB2, 0x3DE8, 0x3E30, 0x3E8D, 0x3EFF, 0x3FB9, 0x40D5,\n    0x422B, 0x4398, 0x44F4, 0x461A, 0x472D, 0x4800, 0x47F4, 0x46C1,\n    0x44E2, 0x42E1, 0x4148, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_9E.inc.c",
    "content": "static const struct Animation anim_9E[] = {\n    1,\n    189,\n    0,\n    0,\n    0x32,\n    ANIMINDEX_NUMPARTS(anim_9E_indices),\n    anim_9E_values,\n    anim_9E_indices,\n    0,\n};\n\n\nstatic const u16 anim_9E_indices[] = {\n    0x0001, 0x0000, 0x0032, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0033, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x07A2,\n    0x0032, 0x070C, 0x0032, 0x073E, 0x0032, 0x0770,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x06DA,\n    0x0032, 0x0643, 0x0032, 0x0675, 0x0032, 0x06A7,\n    0x0032, 0x00FC, 0x0032, 0x012E, 0x0032, 0x0160,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x00CA,\n    0x0032, 0x0034, 0x0032, 0x0066, 0x0032, 0x0098,\n    0x0032, 0x05AC, 0x0032, 0x05DE, 0x0032, 0x0610,\n    0x0032, 0x025A, 0x0032, 0x028C, 0x0032, 0x02BE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x0228,\n    0x0032, 0x0192, 0x0032, 0x01C4, 0x0032, 0x01F6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0642,\n    0x0032, 0x0516, 0x0032, 0x0548, 0x0032, 0x057A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x04E4,\n    0x0032, 0x044E, 0x0032, 0x0480, 0x0032, 0x04B2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x06D9,\n    0x0032, 0x03B8, 0x0032, 0x03EA, 0x0032, 0x041C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x0386,\n    0x0032, 0x02F0, 0x0032, 0x0322, 0x0032, 0x0354,\n};\n\nstatic const s16 anim_9E_values[] = {\n    0x0000, 0x00BD, 0x00BF, 0x00C4, 0x00C9, 0x00CC, 0x00CC, 0x00CA,\n    0x00C7, 0x00C5, 0x00C4, 0x00C4, 0x00C6, 0x00CA, 0x00CF, 0x00D3,\n    0x00D7, 0x00DA, 0x00DA, 0x00DA, 0x00D9, 0x00D8, 0x00D7, 0x00D6,\n    0x00D4, 0x00D2, 0x00D1, 0x00CF, 0x00CD, 0x00CB, 0x00C9, 0x00C7,\n    0x00C5, 0x00C4, 0x00C2, 0x00C0, 0x00BF, 0x00BE, 0x00BD, 0x00BC,\n    0x00BB, 0x00BB, 0x00BB, 0x00BB, 0x00BB, 0x00BC, 0x00BC, 0x00BC,\n    0x00BC, 0x00BD, 0x00BD, 0x3FFF, 0xFE5D, 0xFEDF, 0x004B, 0x027A,\n    0x0543, 0x087D, 0x0C00, 0x0FA4, 0x1341, 0x16AE, 0x19C3, 0x1C58,\n    0x1E44, 0x1F5F, 0x1FFA, 0x2082, 0x20F8, 0x215C, 0x21B0, 0x21F4,\n    0x222A, 0x2251, 0x226B, 0x2279, 0x227B, 0x2273, 0x2261, 0x2246,\n    0x2224, 0x21FA, 0x21C9, 0x2194, 0x2159, 0x211B, 0x20DA, 0x2097,\n    0x2053, 0x200F, 0x1FCB, 0x1F88, 0x1F48, 0x1F0B, 0x1ED2, 0x1E9E,\n    0x1E6F, 0x1E47, 0x1E27, 0x1E0E, 0x1DFF, 0x1DFA, 0x02DF, 0x0316,\n    0x03B0, 0x049B, 0x05C4, 0x0718, 0x0887, 0x09FE, 0x0B6A, 0x0CB9,\n    0x0DDA, 0x0EBA, 0x0F46, 0x0F6D, 0x0F53, 0x0F28, 0x0EEF, 0x0EA8,\n    0x0E54, 0x0DF3, 0x0D88, 0x0D12, 0x0C93, 0x0C0C, 0x0B7E, 0x0AE9,\n    0x0A4F, 0x09B1, 0x090F, 0x086B, 0x07C6, 0x0720, 0x067A, 0x05D6,\n    0x0534, 0x0496, 0x03FC, 0x0368, 0x02DA, 0x0253, 0x01D4, 0x015F,\n    0x00F3, 0x0093, 0x003F, 0xFFF9, 0xFFC1, 0xFF97, 0xFF7D, 0xFF74,\n    0xE0CE, 0xE117, 0xE1E3, 0xE31C, 0xE4A9, 0xE675, 0xE867, 0xEA69,\n    0xEC64, 0xEE41, 0xEFE8, 0xF143, 0xF23A, 0xF2B6, 0xF2E7, 0xF309,\n    0xF31E, 0xF326, 0xF322, 0xF313, 0xF2FA, 0xF2D7, 0xF2AC, 0xF278,\n    0xF23D, 0xF1FB, 0xF1B3, 0xF165, 0xF114, 0xF0BE, 0xF066, 0xF00B,\n    0xEFAF, 0xEF52, 0xEEF5, 0xEE98, 0xEE3D, 0xEDE4, 0xED8E, 0xED3C,\n    0xECEE, 0xECA5, 0xEC61, 0xEC25, 0xEBEF, 0xEBC2, 0xEB9E, 0xEB83,\n    0xEB72, 0xEB6C, 0xCBDA, 0xCBDC, 0xCBE3, 0xCBEE, 0xCBFF, 0xCC16,\n    0xCC34, 0xCC59, 0xCC85, 0xCCB9, 0xCCF6, 0xCD3B, 0xCD8A, 0xCDE4,\n    0xCE46, 0xCEB0, 0xCF22, 0xCF9A, 0xD019, 0xD09C, 0xD125, 0xD1B2,\n    0xD242, 0xD2D5, 0xD36A, 0xD402, 0xD49A, 0xD533, 0xD5CB, 0xD663,\n    0xD6FA, 0xD78E, 0xD820, 0xD8AF, 0xD93A, 0xD9C0, 0xDA41, 0xDABD,\n    0xDB32, 0xDBA0, 0xDC07, 0xDC65, 0xDCBB, 0xDD07, 0xDD49, 0xDD81,\n    0xDDAD, 0xDDCD, 0xDDE1, 0xDDE8, 0xFD1F, 0xFD4D, 0xFDC5, 0xFE6D,\n    0xFF2B, 0xFFE6, 0x0081, 0x00E6, 0x00FA, 0x00A1, 0xFFC4, 0xFE46,\n    0xFC0F, 0xF904, 0xF53F, 0xF0F4, 0xEC31, 0xE705, 0xE17E, 0xDBAB,\n    0xD598, 0xCF55, 0xC8F0, 0xC277, 0xBBF9, 0xB583, 0xAF23, 0xA8E9,\n    0xA2E2, 0x9D1C, 0x97A6, 0x928E, 0x8DE2, 0x89B1, 0x8608, 0x82F6,\n    0x80DB, 0x7FF0, 0x8012, 0x810F, 0x82BE, 0x84F4, 0x8787, 0x8A4D,\n    0x8D1B, 0x8FC6, 0x9223, 0x9408, 0x954B, 0x95C0, 0xD1A4, 0xD1DC,\n    0xD276, 0xD35B, 0xD477, 0xD5B4, 0xD6FC, 0xD83A, 0xD958, 0xDA41,\n    0xDADF, 0xDB1D, 0xDAE5, 0xDA21, 0xD8F4, 0xD790, 0xD5FB, 0xD439,\n    0xD250, 0xD043, 0xCE19, 0xCBD5, 0xC97C, 0xC715, 0xC4A2, 0xC22A,\n    0xBFB1, 0xBD3C, 0xBACF, 0xB870, 0xB624, 0xB3EE, 0xB1D5, 0xAFDD,\n    0xAE0B, 0xAC64, 0xAAE3, 0xA982, 0xA83F, 0xA71B, 0xA614, 0xA52B,\n    0xA45F, 0xA3AF, 0xA31C, 0xA2A4, 0xA248, 0xA207, 0xA1E0, 0xA1D3,\n    0xC40D, 0xC3F7, 0xC3BC, 0xC36D, 0xC318, 0xC2CA, 0xC294, 0xC284,\n    0xC2A7, 0xC30E, 0xC3C7, 0xC4E0, 0xC667, 0xC86D, 0xCAE0, 0xCDA0,\n    0xD0A7, 0xD3EB, 0xD765, 0xDB0C, 0xDED9, 0xE2C3, 0xE6C3, 0xEAD0,\n    0xEEE3, 0xF2F3, 0xF6F8, 0xFAEA, 0xFEC1, 0x0275, 0x05FE, 0x0955,\n    0x0C70, 0x0F48, 0x11D5, 0x140F, 0x15CE, 0x16FB, 0x17A8, 0x17E7,\n    0x17CB, 0x1766, 0x16C8, 0x1606, 0x152F, 0x1457, 0x1390, 0x12EC,\n    0x127C, 0x1252, 0xE763, 0xE80E, 0xE9EA, 0xECC1, 0xF059, 0xF47C,\n    0xF8F2, 0xFD83, 0x01F7, 0x0619, 0x09AF, 0x0C82, 0x0E5B, 0x0F02,\n    0x0EE6, 0x0E9D, 0x0E29, 0x0D8F, 0x0CCF, 0x0BED, 0x0AEB, 0x09CD,\n    0x0894, 0x0743, 0x05DE, 0x0466, 0x02DE, 0x0149, 0xFFAB, 0xFE04,\n    0xFC57, 0xFAA8, 0xF8FA, 0xF74E, 0xF5A7, 0xF409, 0xF275, 0xF0EF,\n    0xEF78, 0xEE15, 0xECC6, 0xEB90, 0xEA74, 0xE976, 0xE897, 0xE7DB,\n    0xE744, 0xE6D5, 0xE690, 0xE679, 0x2612, 0x2564, 0x237D, 0x2093,\n    0x1CDC, 0x188D, 0x13DD, 0x0F01, 0x0A2F, 0x059D, 0x0181, 0xFE10,\n    0xFB80, 0xFA07, 0xF938, 0xF883, 0xF7E6, 0xF761, 0xF6F1, 0xF697,\n    0xF651, 0xF61D, 0xF5FB, 0xF5E9, 0xF5E7, 0xF5F2, 0xF60B, 0xF630,\n    0xF65F, 0xF698, 0xF6D9, 0xF721, 0xF770, 0xF7C4, 0xF81B, 0xF875,\n    0xF8D1, 0xF92C, 0xF988, 0xF9E1, 0xFA37, 0xFA89, 0xFAD6, 0xFB1C,\n    0xFB5A, 0xFB90, 0xFBBC, 0xFBDC, 0xFBF1, 0xFBF8, 0xDC30, 0xDC67,\n    0xDCFF, 0xDDE8, 0xDF12, 0xE069, 0xE1DF, 0xE362, 0xE4E0, 0xE64A,\n    0xE78D, 0xE899, 0xE95D, 0xE9C8, 0xE9FC, 0xEA27, 0xEA49, 0xEA64,\n    0xEA76, 0xEA81, 0xEA85, 0xEA83, 0xEA7B, 0xEA6D, 0xEA5A, 0xEA42,\n    0xEA26, 0xEA07, 0xE9E4, 0xE9BE, 0xE996, 0xE96B, 0xE93F, 0xE912,\n    0xE8E4, 0xE8B6, 0xE889, 0xE85B, 0xE82F, 0xE805, 0xE7DC, 0xE7B6,\n    0xE792, 0xE772, 0xE756, 0xE73E, 0xE72A, 0xE71B, 0xE712, 0xE70F,\n    0xE172, 0xE122, 0xE045, 0xDEF4, 0xDD49, 0xDB5E, 0xD94D, 0xD72F,\n    0xD51E, 0xD335, 0xD18D, 0xD03F, 0xCF66, 0xCF1C, 0xCF2D, 0xCF53,\n    0xCF8D, 0xCFDA, 0xD038, 0xD0A6, 0xD122, 0xD1AD, 0xD244, 0xD2E6,\n    0xD392, 0xD446, 0xD502, 0xD5C4, 0xD68B, 0xD756, 0xD822, 0xD8F0,\n    0xD9BE, 0xDA8A, 0xDB54, 0xDC1A, 0xDCDA, 0xDD94, 0xDE47, 0xDEF0,\n    0xDF90, 0xE023, 0xE0AB, 0xE124, 0xE18E, 0xE1E7, 0xE22F, 0xE264,\n    0xE285, 0xE290, 0x0BC6, 0x0AE6, 0x0884, 0x0500, 0x00BA, 0xFC11,\n    0xF763, 0xF310, 0xEF77, 0xECF9, 0xEBF3, 0xECC5, 0xEFCE, 0xF56F,\n    0xFD2A, 0x062F, 0x105E, 0x1B95, 0x27B2, 0x3495, 0x421D, 0x5028,\n    0x5E96, 0x6D45, 0x7C15, 0x8AE7, 0x9993, 0xA7FD, 0xB603, 0xC383,\n    0xD05E, 0xDC71, 0xE79B, 0xF1BC, 0xFAB2, 0x025C, 0x081D, 0x0B9F,\n    0x0D2D, 0x0D10, 0x0B95, 0x0904, 0x05AA, 0x01CF, 0xFDC1, 0xF9C8,\n    0xF62F, 0xF340, 0xF147, 0xF08E, 0x29C2, 0x29BE, 0x29B3, 0x29A2,\n    0x298C, 0x2971, 0x2952, 0x2930, 0x290D, 0x28E8, 0x28C2, 0x289D,\n    0x2879, 0x2857, 0x2837, 0x2816, 0x27F4, 0x27D2, 0x27B0, 0x278E,\n    0x276C, 0x2749, 0x2726, 0x2702, 0x26DF, 0x26BB, 0x2697, 0x2673,\n    0x264F, 0x262B, 0x2606, 0x25E1, 0x25BD, 0x2598, 0x2573, 0x254E,\n    0x2527, 0x24FA, 0x24C9, 0x2496, 0x2462, 0x242D, 0x23FB, 0x23CA,\n    0x239E, 0x2377, 0x2356, 0x233D, 0x232D, 0x2328, 0xD5E7, 0xD52B,\n    0xD329, 0xD031, 0xCC92, 0xC899, 0xC495, 0xC0D6, 0xBDAA, 0xBB5E,\n    0xBA43, 0xBAA6, 0xBCD6, 0xC122, 0xC71E, 0xCE1B, 0xD5FF, 0xDEB2,\n    0xE81A, 0xF21D, 0xFCA3, 0x0791, 0x12D0, 0x1E47, 0x29DB, 0x3573,\n    0x40F7, 0x4C4D, 0x575C, 0x620B, 0x6C40, 0x75E3, 0x7ED9, 0x870E,\n    0x8E61, 0x94BD, 0x99C2, 0x9D41, 0x9F68, 0xA069, 0xA070, 0x9FAF,\n    0x9E53, 0x9C8C, 0x9A8A, 0x987C, 0x9690, 0x94F7, 0x93DE, 0x9376,\n    0xFFF2, 0xFFF3, 0xFFF8, 0xFFFF, 0x0007, 0x0011, 0x001B, 0x0026,\n    0x0031, 0x003A, 0x0043, 0x004B, 0x0054, 0x005C, 0x0065, 0x006F,\n    0x0079, 0x0084, 0x0091, 0x00A2, 0x00B9, 0x00D3, 0x00EB, 0x00FF,\n    0x010B, 0x010A, 0x00FF, 0x00EE, 0x00D8, 0x00BE, 0x00A2, 0x0085,\n    0x0068, 0x004B, 0x0031, 0x001A, 0x0008, 0xFFFC, 0xFFF5, 0xFFF2,\n    0xFFF3, 0xFFF7, 0xFFFC, 0x0003, 0x000B, 0x0013, 0x001A, 0x0021,\n    0x0025, 0x0027, 0x025C, 0x0259, 0x0253, 0x0249, 0x023D, 0x0231,\n    0x0226, 0x021C, 0x0215, 0x0212, 0x0213, 0x0219, 0x0221, 0x022B,\n    0x0236, 0x0240, 0x0249, 0x0250, 0x0252, 0x0250, 0x0249, 0x023E,\n    0x0233, 0x0228, 0x0221, 0x021E, 0x0220, 0x0223, 0x0227, 0x022D,\n    0x0234, 0x023B, 0x0242, 0x0249, 0x024F, 0x0254, 0x0258, 0x025B,\n    0x025C, 0x025C, 0x025B, 0x0259, 0x0256, 0x0253, 0x0250, 0x024E,\n    0x024B, 0x0249, 0x0247, 0x0247, 0xC84A, 0xC864, 0xC8AE, 0xC91F,\n    0xC9AE, 0xCA54, 0xCB07, 0xCBC0, 0xCC76, 0xCD21, 0xCDC4, 0xCE69,\n    0xCF11, 0xCFBF, 0xD074, 0xD132, 0xD1FC, 0xD2D1, 0xD3B5, 0xD4E8,\n    0xD680, 0xD83D, 0xD9E4, 0xDB35, 0xDBF3, 0xDBE0, 0xDB14, 0xD9DE,\n    0xD855, 0xD68C, 0xD497, 0xD28C, 0xD080, 0xCE86, 0xCCB4, 0xCB1E,\n    0xC9D9, 0xC8F9, 0xC87F, 0xC852, 0xC867, 0xC8B0, 0xC921, 0xC9AD,\n    0xCA46, 0xCAE0, 0xCB6F, 0xCBE4, 0xCC34, 0xCC52, 0x344A, 0x3457,\n    0x347D, 0x34B8, 0x3506, 0x3563, 0x35CC, 0x363E, 0x36B7, 0x3732,\n    0x37AE, 0x3826, 0x3899, 0x3902, 0x395F, 0x39AC, 0x39E7, 0x3A0D,\n    0x3A1A, 0x39D1, 0x3911, 0x3806, 0x36DC, 0x35BC, 0x34D2, 0x344A,\n    0x340C, 0x33E3, 0x33CD, 0x33C8, 0x33D0, 0x33E2, 0x33FD, 0x341E,\n    0x3442, 0x3467, 0x3489, 0x34A7, 0x34C9, 0x34F5, 0x352A, 0x3565,\n    0x35A3, 0x35E1, 0x361E, 0x3655, 0x3685, 0x36AA, 0x36C3, 0x36CB,\n    0x11A5, 0x11A2, 0x119A, 0x118D, 0x117C, 0x1168, 0x1151, 0x1138,\n    0x111D, 0x1103, 0x10E8, 0x10CD, 0x10B4, 0x109E, 0x1089, 0x1078,\n    0x106C, 0x1063, 0x1060, 0x1070, 0x109A, 0x10D3, 0x1114, 0x1153,\n    0x1186, 0x11A5, 0x11B6, 0x11C6, 0x11D4, 0x11E0, 0x11E9, 0x11EF,\n    0x11F1, 0x11EE, 0x11E6, 0x11D8, 0x11C4, 0x11A9, 0x1180, 0x1147,\n    0x1100, 0x10B1, 0x105C, 0x1005, 0x0FB2, 0x0F65, 0x0F22, 0x0EED,\n    0x0ECB, 0x0EBF, 0x147F, 0x1470, 0x1446, 0x1405, 0x13AF, 0x1348,\n    0x12D4, 0x1255, 0x11D0, 0x1148, 0x10BF, 0x103A, 0x0FBC, 0x0F47,\n    0x0EE1, 0x0E8B, 0x0E49, 0x0E20, 0x0E11, 0x0E61, 0x0F33, 0x1058,\n    0x11A1, 0x12DF, 0x13E3, 0x147F, 0x14C9, 0x14FB, 0x1517, 0x1522,\n    0x151E, 0x1510, 0x14FA, 0x14E0, 0x14C5, 0x14AE, 0x149C, 0x1494,\n    0x1491, 0x148D, 0x1487, 0x1480, 0x1478, 0x1470, 0x1469, 0x1461,\n    0x145B, 0x1456, 0x1453, 0x1452, 0xB77F, 0xB778, 0xB764, 0xB744,\n    0xB71B, 0xB6E9, 0xB6B1, 0xB674, 0xB634, 0xB5F2, 0xB5B0, 0xB570,\n    0xB533, 0xB4FB, 0xB4CA, 0xB4A0, 0xB481, 0xB46D, 0xB465, 0xB48C,\n    0xB4F2, 0xB57F, 0xB61D, 0xB6B7, 0xB734, 0xB77F, 0xB7A8, 0xB7CE,\n    0xB7EF, 0xB80A, 0xB81F, 0xB82B, 0xB82E, 0xB827, 0xB814, 0xB7F4,\n    0xB7C7, 0xB78A, 0xB72F, 0xB6AE, 0xB611, 0xB55F, 0xB4A1, 0xB3E1,\n    0xB326, 0xB27A, 0xB1E5, 0xB16F, 0xB122, 0xB107, 0x0095, 0x0096,\n    0x0097, 0x0098, 0x009A, 0x009C, 0x009E, 0x00A0, 0x00A0, 0x00A0,\n    0x00A0, 0x00A0, 0x009F, 0x009E, 0x009D, 0x009A, 0x0096, 0x0091,\n    0x008A, 0x007E, 0x006D, 0x0058, 0x0044, 0x0032, 0x0025, 0x0020,\n    0x0023, 0x0028, 0x0031, 0x003B, 0x0047, 0x0054, 0x0061, 0x006E,\n    0x007A, 0x0084, 0x008C, 0x0091, 0x0093, 0x0093, 0x0091, 0x008E,\n    0x008A, 0x0086, 0x0081, 0x007C, 0x0077, 0x0074, 0x0071, 0x0071,\n    0xFF09, 0xFF0A, 0xFF0D, 0xFF11, 0xFF16, 0xFF1B, 0xFF20, 0xFF24,\n    0xFF26, 0xFF27, 0xFF25, 0xFF21, 0xFF1D, 0xFF17, 0xFF11, 0xFF0A,\n    0xFF04, 0xFEFE, 0xFEF9, 0xFEF4, 0xFEF0, 0xFEEB, 0xFEE7, 0xFEE3,\n    0xFEE1, 0xFEE1, 0xFEE2, 0xFEE5, 0xFEE8, 0xFEEB, 0xFEEF, 0xFEF3,\n    0xFEF8, 0xFEFC, 0xFEFF, 0xFF03, 0xFF05, 0xFF07, 0xFF08, 0xFF08,\n    0xFF08, 0xFF07, 0xFF06, 0xFF05, 0xFF04, 0xFF02, 0xFF01, 0xFF00,\n    0xFF00, 0xFEFF, 0xCC42, 0xCC1B, 0xCBB2, 0xCB1D, 0xCA6D, 0xC9B9,\n    0xC913, 0xC88F, 0xC843, 0xC841, 0xC87C, 0xC8DC, 0xC95F, 0xCA05,\n    0xCACC, 0xCBB5, 0xCCBF, 0xCDE9, 0xCF32, 0xD101, 0xD382, 0xD657,\n    0xD925, 0xDB90, 0xDD3A, 0xDDC9, 0xDD64, 0xDC82, 0xDB3B, 0xD9A6,\n    0xD7DA, 0xD5EE, 0xD3FA, 0xD216, 0xD058, 0xCED8, 0xCDAE, 0xCCF0,\n    0xCC9E, 0xCC9C, 0xCCDD, 0xCD53, 0xCDF0, 0xCEA5, 0xCF64, 0xD021,\n    0xD0CB, 0xD157, 0xD1B5, 0xD1D7, 0x52B5, 0x528E, 0x5220, 0x5171,\n    0x508A, 0x4F70, 0x4E2C, 0x4CC5, 0x4B43, 0x49AC, 0x4808, 0x465F,\n    0x44B7, 0x4318, 0x418A, 0x4013, 0x3EBC, 0x3D8B, 0x3C88, 0x3BD4,\n    0x3B7B, 0x3B66, 0x3B7D, 0x3BA9, 0x3BD3, 0x3BE4, 0x3BE4, 0x3BED,\n    0x3BFB, 0x3C0E, 0x3C22, 0x3C36, 0x3C48, 0x3C56, 0x3C5D, 0x3C5B,\n    0x3C4F, 0x3C36, 0x3C0B, 0x3BCB, 0x3B7C, 0x3B21, 0x3AC1, 0x3A5E,\n    0x39FE, 0x39A5, 0x3958, 0x391C, 0x38F4, 0x38E6, 0xFBCB, 0xFBB7,\n    0xFB80, 0xFB29, 0xFAB5, 0xFA29, 0xF988, 0xF8D5, 0xF815, 0xF74B,\n    0xF67A, 0xF5A8, 0xF4D6, 0xF40A, 0xF346, 0xF28F, 0xF1E8, 0xF155,\n    0xF0DA, 0xF08A, 0xF070, 0xF07B, 0xF09E, 0xF0CA, 0xF0F0, 0xF101,\n    0xF103, 0xF107, 0xF10A, 0xF10E, 0xF111, 0xF114, 0xF116, 0xF116,\n    0xF114, 0xF110, 0xF109, 0xF0FF, 0xF0F0, 0xF0DA, 0xF0C0, 0xF0A3,\n    0xF083, 0xF064, 0xF045, 0xF028, 0xF010, 0xEFFC, 0xEFEF, 0xEFEB,\n    0xE289, 0xE2A1, 0xE2E4, 0xE34D, 0xE3D7, 0xE47D, 0xE53A, 0xE608,\n    0xE6E2, 0xE7C3, 0xE8A7, 0xE986, 0xEA5E, 0xEB27, 0xEBDE, 0xEC7C,\n    0xECFD, 0xED5B, 0xED91, 0xED47, 0xEC50, 0xEAEA, 0xE951, 0xE7C3,\n    0xE67D, 0xE5BB, 0xE55E, 0xE519, 0xE4EB, 0xE4D2, 0xE4C9, 0xE4D0,\n    0xE4E3, 0xE500, 0xE524, 0xE54C, 0xE577, 0xE5A1, 0xE5D8, 0xE626,\n    0xE686, 0xE6F2, 0xE765, 0xE7DB, 0xE84D, 0xE8B6, 0xE911, 0xE959,\n    0xE988, 0xE999, 0x9D39, 0x9D5B, 0x9DBC, 0x9E56, 0x9F22, 0xA01A,\n    0xA136, 0xA26F, 0xA3C0, 0xA521, 0xA68C, 0xA7F9, 0xA963, 0xAAC2,\n    0xAC10, 0xAD46, 0xAE5D, 0xAF4F, 0xB014, 0xB07B, 0xB06D, 0xB00D,\n    0xAF7F, 0xAEE7, 0xAE67, 0xAE23, 0xAE0B, 0xADFA, 0xADEE, 0xADE7,\n    0xADE5, 0xADE6, 0xADEA, 0xADF2, 0xADFB, 0xAE06, 0xAE13, 0xAE20,\n    0xAE31, 0xAE4A, 0xAE68, 0xAE8A, 0xAEAE, 0xAED3, 0xAEF7, 0xAF18,\n    0xAF34, 0xAF4B, 0xAF59, 0xAF5F, 0x8001, 0x7FFC, 0x7FF7, 0x7FEF,\n    0x7FE5, 0x7FDB, 0x7FD2, 0x7FCB, 0x7FC6, 0x7FC6, 0x7FCA, 0x7FD4,\n    0x7FE5, 0x8001, 0x8021, 0x8043, 0x8069, 0x8091, 0x80BC, 0x80E9,\n    0x8118, 0x8148, 0x817B, 0x81AE, 0x81E3, 0x8219, 0x824F, 0x8285,\n    0x82BC, 0x82F2, 0x8328, 0x835E, 0x8392, 0x83C6, 0x83F8, 0x8429,\n    0x8458, 0x8485, 0x84B0, 0x84D8, 0x84FE, 0x8521, 0x8540, 0x855C,\n    0x8574, 0x8589, 0x8599, 0x85A5, 0x85AD, 0x85AF, 0x8001, 0x8002,\n    0x8002, 0x8002, 0x8002, 0x8002, 0x8002, 0x8002, 0x8002, 0x8002,\n    0x8002, 0x8002, 0x8002, 0x8001, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFD,\n    0x7FFD, 0x7FFD, 0x7FFC, 0x7FFC, 0x7FFB, 0x7FFB, 0x7FFB, 0x7FFA,\n    0x7FFA, 0x7FF9, 0x7FF9, 0x7FF8, 0x7FF8, 0x7FF7, 0x7FF7, 0x7FF7,\n    0x7FF6, 0x7FF6, 0x7FF5, 0x7FF5, 0x7FF5, 0x7FF4, 0x7FF4, 0x7FF4,\n    0x7FF3, 0x7FF3, 0x7FF3, 0x7FF3, 0x7FF3, 0x7FF3, 0x7FF3, 0x7FF3,\n    0x4171, 0x4171, 0x4172, 0x4174, 0x4177, 0x4179, 0x417B, 0x417D,\n    0x417E, 0x417E, 0x417D, 0x417B, 0x4177, 0x4171, 0x4169, 0x4161,\n    0x4158, 0x414E, 0x4144, 0x4139, 0x412E, 0x4123, 0x4117, 0x410A,\n    0x40FE, 0x40F1, 0x40E4, 0x40D7, 0x40CA, 0x40BD, 0x40B0, 0x40A3,\n    0x4097, 0x408B, 0x407F, 0x4073, 0x4068, 0x405D, 0x4053, 0x4049,\n    0x4040, 0x4038, 0x4030, 0x402A, 0x4024, 0x401F, 0x401B, 0x4018,\n    0x4017, 0x4016, 0xBF5F, 0x8001, 0x8003, 0x8009, 0x8010, 0x8019,\n    0x8023, 0x802B, 0x8032, 0x8036, 0x8037, 0x8033, 0x8029, 0x8019,\n    0x8001, 0x7FE1, 0x7FC0, 0x7F9D, 0x7F77, 0x7F4F, 0x7F25, 0x7EF9,\n    0x7ECB, 0x7E9B, 0x7E6B, 0x7E39, 0x7E07, 0x7DD4, 0x7DA1, 0x7D6D,\n    0x7D3A, 0x7D07, 0x7CD5, 0x7CA3, 0x7C73, 0x7C43, 0x7C15, 0x7BE9,\n    0x7BBF, 0x7B97, 0x7B71, 0x7B4D, 0x7B2D, 0x7B0F, 0x7AF5, 0x7ADE,\n    0x7ACB, 0x7ABB, 0x7AB0, 0x7AA9, 0x7AA7, 0x8001, 0x7FFE, 0x7FFE,\n    0x7FFE, 0x7FFD, 0x7FFD, 0x7FFC, 0x7FFC, 0x7FFB, 0x7FFB, 0x7FFC,\n    0x7FFC, 0x7FFD, 0x8001, 0x8003, 0x8005, 0x8007, 0x8009, 0x800C,\n    0x800E, 0x8011, 0x8013, 0x8016, 0x8019, 0x801C, 0x801F, 0x8022,\n    0x8025, 0x8028, 0x802B, 0x802E, 0x8031, 0x8034, 0x8037, 0x8039,\n    0x803C, 0x803F, 0x8041, 0x8043, 0x8046, 0x8048, 0x804A, 0x804B,\n    0x804D, 0x804E, 0x804F, 0x8050, 0x8051, 0x8051, 0x8051, 0x4171,\n    0x4171, 0x4173, 0x4174, 0x4177, 0x4179, 0x417B, 0x417D, 0x417E,\n    0x417E, 0x417D, 0x417B, 0x4177, 0x4171, 0x4169, 0x4161, 0x4158,\n    0x414E, 0x4143, 0x4138, 0x412D, 0x4121, 0x4115, 0x4108, 0x40FC,\n    0x40EF, 0x40E1, 0x40D4, 0x40C7, 0x40BA, 0x40AC, 0x409F, 0x4093,\n    0x4086, 0x407A, 0x406E, 0x4063, 0x4058, 0x404D, 0x4043, 0x403A,\n    0x4032, 0x402A, 0x4023, 0x401D, 0x4018, 0x4015, 0x4012, 0x4010,\n    0x400F, 0xBF5F, 0x041E, 0x0416, 0x0400, 0x03DB, 0x03A7, 0x0366,\n    0x0316, 0x02B9, 0x024E, 0x01D7, 0x0152, 0x00C1, 0x0024, 0xFF7B,\n    0xFEC6, 0xFE05, 0xFD39, 0xFC62, 0xFB80, 0xFA94, 0xF99D, 0xF89D,\n    0xF792, 0xF67F, 0xF562, 0xF43C, 0xF2AB, 0xF06B, 0xEDAA, 0xEA96,\n    0xE75C, 0xE42C, 0xE132, 0xDE9C, 0xDC9A, 0xDB57, 0xDAB5, 0xDA6A,\n    0xDA6C, 0xDAAD, 0xDB22, 0xDBBE, 0xDC76, 0xDD3D, 0xDE06, 0xDEC7,\n    0xDF71, 0xDFFB, 0xE056, 0xE077, 0x121A, 0x106F, 0x0C06, 0x05C4,\n    0xFE8F, 0xF749, 0xF0D9, 0xEC21, 0xEA09, 0xE9A3, 0xE96B, 0xE95D,\n    0xE977, 0xE9B6, 0xEA18, 0xEA99, 0xEB38, 0xEBF1, 0xECC2, 0xEDA8,\n    0xEEA1, 0xEFA9, 0xF0BF, 0xF1DE, 0xF306, 0xF432, 0xF561, 0xF690,\n    0xF7BB, 0xF8E1, 0xF9FF, 0xFB11, 0xFC16, 0xFD0A, 0xFDEB, 0xFEB6,\n    0xFF69, 0x0000, 0x0073, 0x00BE, 0x00E7, 0x00F3, 0x00E9, 0x00CD,\n    0x00A6, 0x0079, 0x004D, 0x0026, 0x000A, 0x0000, 0xFD00, 0xFD89,\n    0xFEF1, 0x00EE, 0x0339, 0x0587, 0x078D, 0x0902, 0x099D, 0x09AA,\n    0x09A7, 0x0996, 0x0977, 0x094C, 0x0916, 0x08D4, 0x0889, 0x0835,\n    0x07D9, 0x0777, 0x070E, 0x06A0, 0x062D, 0x05B8, 0x0540, 0x04C7,\n    0x044D, 0x03D4, 0x035C, 0x02E7, 0x0275, 0x0207, 0x019E, 0x013B,\n    0x00E0, 0x008C, 0x0041, 0x0000, 0xFFCE, 0xFFAD, 0xFF9B, 0xFF96,\n    0xFF9A, 0xFFA6, 0xFFB8, 0xFFCB, 0xFFDF, 0xFFF0, 0xFFFC, 0x0000,\n    0x2E8B, 0x2BDF, 0x24CF, 0x1AC8, 0x0F39, 0x038E, 0xF936, 0xF19D,\n    0xEE32, 0xED7E, 0xED15, 0xECF3, 0xED13, 0xED70, 0xEE06, 0xEECF,\n    0xEFC8, 0xF0EB, 0xF235, 0xF3A0, 0xF528, 0xF6C8, 0xF87C, 0xFA3F,\n    0xFC0C, 0xFDDF, 0xFFB3, 0x0183, 0x034B, 0x0507, 0x06B1, 0x0845,\n    0x09BF, 0x0B1A, 0x0C50, 0x0D5E, 0x0E3F, 0x0EEE, 0x0F3F, 0x0F14,\n    0x0E85, 0x0DA8, 0x0C92, 0x0B5A, 0x0A15, 0x08DA, 0x07BE, 0x06D9,\n    0x063F, 0x0606, 0x46AF, 0x4077, 0x32A9, 0x248A, 0x1CEC, 0x1811,\n    0x1315, 0x0DFA, 0x08C3, 0x0374, 0xFE10, 0xF898, 0xF310, 0xED7A,\n    0xE7DA, 0xE231, 0xDC84, 0xD6D4, 0xD125, 0xCB79, 0xC5D4, 0xC037,\n    0xBAA6, 0xB524, 0xAFB3, 0xAA57, 0xA511, 0x9FE6, 0x9AD7, 0x95E7,\n    0x911A, 0x8C71, 0x87F1, 0x839B, 0x7F70, 0x7B78, 0x77B3, 0x7425,\n    0x70CE, 0x6DB4, 0x6AD8, 0x683D, 0x65E5, 0x63D5, 0x620E, 0x6094,\n    0x5F69, 0x5E8F, 0x5E0B, 0x5DDE,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_9F.inc.c",
    "content": "static const struct Animation anim_9F[] = {\n    1,\n    189,\n    0,\n    0,\n    0x10,\n    ANIMINDEX_NUMPARTS(anim_9F_indices),\n    anim_9F_values,\n    anim_9F_indices,\n    0,\n};\n\n\nstatic const u16 anim_9F_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x0173,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x0163,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x0153,\n    0x0001, 0x014F, 0x0001, 0x0150, 0x0001, 0x0151,\n    0x0010, 0x0007, 0x0010, 0x0017, 0x0010, 0x0027,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0006,\n    0x0001, 0x0003, 0x0001, 0x0004, 0x0001, 0x0005,\n    0x0001, 0x014B, 0x0001, 0x014C, 0x0001, 0x014D,\n    0x0010, 0x003B, 0x0010, 0x004B, 0x0010, 0x005B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x003A,\n    0x0001, 0x0037, 0x0001, 0x0038, 0x0001, 0x0039,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x014E,\n    0x0010, 0x011B, 0x0010, 0x012B, 0x0010, 0x013B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x010B,\n    0x0010, 0x00DB, 0x0010, 0x00EB, 0x0010, 0x00FB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0152,\n    0x0010, 0x00AB, 0x0010, 0x00BB, 0x0010, 0x00CB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0010, 0x009B,\n    0x0010, 0x006B, 0x0010, 0x007B, 0x0010, 0x008B,\n};\n\nstatic const s16 anim_9F_values[] = {\n    0x0000, 0x00BD, 0x3FFF, 0xFEDE, 0xFE52, 0xD86E, 0xDA85, 0xD85D,\n    0xD85F, 0xD865, 0xD86E, 0xD87A, 0xD887, 0xD897, 0xD8A7, 0xD8B7,\n    0xD8C8, 0xD8D7, 0xD8E5, 0xD8F1, 0xD8FA, 0xD900, 0xD902, 0x791B,\n    0x7903, 0x78BE, 0x7854, 0x77CB, 0x772A, 0x7678, 0x75BC, 0x74FD,\n    0x7440, 0x738F, 0x72EE, 0x7265, 0x71FB, 0x71B6, 0x719D, 0x077F,\n    0x0798, 0x07DE, 0x084A, 0x08D6, 0x097A, 0x0A2F, 0x0AEF, 0x0BB2,\n    0x0C72, 0x0D28, 0x0DCC, 0x0E57, 0x0EC4, 0x0F0A, 0x0F23, 0x123D,\n    0x154D, 0xE450, 0xDC26, 0x8942, 0x893D, 0x892F, 0x891A, 0x88FE,\n    0x88DE, 0x88BA, 0x8894, 0x886D, 0x8847, 0x8823, 0x8803, 0x87E7,\n    0x87D2, 0x87C4, 0x87BF, 0xE972, 0xE95E, 0xE926, 0xE8CF, 0xE85F,\n    0xE7DB, 0xE749, 0xE6AF, 0xE612, 0xE578, 0xE4E6, 0xE463, 0xE3F2,\n    0xE39B, 0xE363, 0xE34F, 0x84B7, 0x84D6, 0x852D, 0x85B3, 0x865F,\n    0x872A, 0x880B, 0x88F8, 0x89E9, 0x8AD6, 0x8BB7, 0x8C81, 0x8D2E,\n    0x8DB4, 0x8E0B, 0x8E2A, 0xFF6E, 0xFF84, 0xFF84, 0xFF2B, 0xFEBA,\n    0xFE92, 0xFEEE, 0xFF92, 0x0028, 0x0097, 0x00FD, 0x0160, 0x01C4,\n    0x01C4, 0x01C4, 0x01C4, 0x0235, 0x0236, 0x0226, 0x01F1, 0x01B0,\n    0x018E, 0x01AE, 0x01ED, 0x020F, 0x0201, 0x01E0, 0x01B6, 0x0190,\n    0x0190, 0x0190, 0x0190, 0xBF43, 0xC0BC, 0xC02B, 0xB87F, 0xAED0,\n    0xAAE4, 0xB173, 0xBDC5, 0xC979, 0xD270, 0xDAF8, 0xE354, 0xEBC5,\n    0xEBC5, 0xEBC5, 0xEBC5, 0x5489, 0x556F, 0x538F, 0x4DD4, 0x47C1,\n    0x4165, 0x3AD1, 0x3413, 0x2D3C, 0x265A, 0x1F7D, 0x18B4, 0x1211,\n    0x1211, 0x1211, 0x1211, 0x0EF3, 0x0D2E, 0x0AAC, 0x08D8, 0x06B9,\n    0x04E8, 0x03FF, 0x0498, 0x0724, 0x0B3D, 0x1039, 0x156D, 0x1A30,\n    0x1A30, 0x1A30, 0x1A30, 0x142D, 0x1546, 0x16D7, 0x1821, 0x19BE,\n    0x1B1A, 0x1B9D, 0x1AB4, 0x17F4, 0x13C0, 0x0EB8, 0x097B, 0x04A8,\n    0x04A8, 0x04A8, 0x04A8, 0xB176, 0xAE00, 0xAB05, 0xAC61, 0xAE79,\n    0xB134, 0xB47A, 0xB833, 0xBC94, 0xC1AC, 0xC72E, 0xCCC9, 0xD230,\n    0xD230, 0xD230, 0xD230, 0x00BC, 0x00B9, 0x00BB, 0x00D2, 0x00EE,\n    0x00F3, 0x00D4, 0x009D, 0x0061, 0x0023, 0xFFE2, 0xFF9E, 0xFF5B,\n    0xFF5B, 0xFF5B, 0xFF5B, 0xFF30, 0xFF32, 0xFF45, 0xFF7B, 0xFFBC,\n    0xFFD8, 0xFFAE, 0xFF60, 0xFF27, 0xFF15, 0xFF11, 0xFF14, 0xFF13,\n    0xFF13, 0xFF13, 0xFF13, 0xC4CD, 0xC4E7, 0xC23C, 0xB8EB, 0xADB7,\n    0xA921, 0xB02A, 0xBDD1, 0xCB9D, 0xD766, 0xE34A, 0xEF38, 0xFB21,\n    0xFB21, 0xFB21, 0xFB21, 0x5361, 0x5553, 0x5435, 0x4DD3, 0x46FF,\n    0x3FCD, 0x3852, 0x30A1, 0x28CE, 0x20EE, 0x1915, 0x1156, 0x09C7,\n    0x09C7, 0x09C7, 0x09C7, 0xEC5E, 0xEDB3, 0xEFB3, 0xF162, 0xF366,\n    0xF52C, 0xF61F, 0xF5AE, 0xF371, 0xEFCA, 0xEB53, 0xE6A9, 0xE267,\n    0xE267, 0xE267, 0xE267, 0xEC8B, 0xEBFE, 0xEAD9, 0xE920, 0xE6D4,\n    0xE4BD, 0xE3A4, 0xE453, 0xE749, 0xEC01, 0xF1BA, 0xF7B3, 0xFD2B,\n    0xFD2B, 0xFD2B, 0xFD2B, 0xB692, 0xB468, 0xB2C7, 0xB41C, 0xB5F1,\n    0xB83C, 0xBAF4, 0xBE10, 0xC1BB, 0xC5FA, 0xCA8E, 0xCF37, 0xD3B5,\n    0xD3B5, 0xD3B5, 0xD3B5, 0x19CB, 0x80D8, 0x59D2, 0xBF5F, 0xE02F,\n    0x7A60, 0x5A4B, 0xBF5F, 0xE1B0, 0xE0E6, 0xDF6E, 0xDEA4, 0xDE51,\n    0xDD6C, 0xDC13, 0xDA62, 0xD877, 0xD66E, 0xD466, 0xD27B, 0xD0CA,\n    0xD0CA, 0xD0CA, 0xD0CA, 0x0606, 0x0691, 0x0792, 0x081C, 0x0852,\n    0x08E5, 0x09C5, 0x0ADD, 0x0C1B, 0x0D6C, 0x0EBD, 0x0FFA, 0x1113,\n    0x1113, 0x1113, 0x1113, 0x5FE8, 0x6005, 0x6058, 0x60D9, 0x617F,\n    0x6245, 0x6321, 0x640C, 0x6500, 0x65F3, 0x66DE, 0x67BB, 0x6880,\n    0x6880, 0x6880, 0x6880,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_A0.inc.c",
    "content": "static const struct Animation anim_A0[] = {\n    1,\n    189,\n    0,\n    0,\n    0x0A,\n    ANIMINDEX_NUMPARTS(anim_A0_indices),\n    anim_A0_values,\n    anim_A0_indices,\n    0,\n};\n\n\nstatic const u16 anim_A0_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x00B9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x00AF,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x00A5,\n    0x0001, 0x00A1, 0x0001, 0x00A2, 0x0001, 0x00A3,\n    0x0001, 0x0007, 0x0001, 0x0008, 0x0001, 0x0009,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0006,\n    0x0001, 0x0003, 0x0001, 0x0004, 0x0001, 0x0005,\n    0x0001, 0x009D, 0x0001, 0x009E, 0x0001, 0x009F,\n    0x0001, 0x000E, 0x0001, 0x000F, 0x0001, 0x0010,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x000D,\n    0x0001, 0x000A, 0x0001, 0x000B, 0x0001, 0x000C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00A0,\n    0x000A, 0x007F, 0x000A, 0x0089, 0x000A, 0x0093,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0075,\n    0x000A, 0x0057, 0x000A, 0x0061, 0x000A, 0x006B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00A4,\n    0x000A, 0x0039, 0x000A, 0x0043, 0x000A, 0x004D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x002F,\n    0x000A, 0x0011, 0x000A, 0x001B, 0x000A, 0x0025,\n};\n\nstatic const s16 anim_A0_values[] = {\n    0x0000, 0x00BD, 0x3FFF, 0xFEDE, 0xFE52, 0xD86E, 0xDA85, 0xD85D,\n    0x791B, 0x077F, 0x123D, 0x154D, 0xE450, 0xDC26, 0x8942, 0xE972,\n    0x84B7, 0x01EB, 0x01EE, 0x01E9, 0x01C4, 0x017F, 0x012F, 0x00D6,\n    0x0079, 0x001C, 0xFFC4, 0x0186, 0x0185, 0x0188, 0x0190, 0x019F,\n    0x01B0, 0x01C3, 0x01D6, 0x01EA, 0x01FD, 0xEEE4, 0xEF19, 0xEE9B,\n    0xEBC5, 0xE6AC, 0xE0B2, 0xDA22, 0xD346, 0xCC6B, 0xC5DA, 0x0EA9,\n    0x0E70, 0x0EF9, 0x1211, 0x179F, 0x1E23, 0x254B, 0x2CC4, 0x343E,\n    0x3B65, 0x1B98, 0x1B58, 0x1AC7, 0x1A30, 0x19AD, 0x1927, 0x18A0,\n    0x1819, 0x1791, 0x170A, 0x0320, 0x0348, 0x03C8, 0x04A8, 0x05D1,\n    0x071F, 0x0885, 0x09F7, 0x0B68, 0x0CCE, 0xD40B, 0xD3EA, 0xD35F,\n    0xD230, 0xD077, 0xCE80, 0xCC60, 0xCA2C, 0xC7F8, 0xC5D8, 0xFF43,\n    0xFF42, 0xFF46, 0xFF5B, 0xFF7F, 0xFFA9, 0xFFD8, 0x0008, 0x0038,\n    0x0067, 0xFF12, 0xFF12, 0xFF12, 0xFF13, 0xFF16, 0xFF1A, 0xFF1E,\n    0xFF22, 0xFF26, 0xFF2A, 0xFF3D, 0xFF4B, 0xFE6E, 0xFB21, 0xF58A,\n    0xEF08, 0xE7EB, 0xE07F, 0xD914, 0xD1F7, 0x05FD, 0x05D4, 0x0682,\n    0x09C7, 0x0F83, 0x1638, 0x1D92, 0x253F, 0x2CEC, 0x3446, 0xE121,\n    0xE157, 0xE1D5, 0xE267, 0xE2F4, 0xE389, 0xE423, 0xE4BF, 0xE55B,\n    0xE5F5, 0xFEED, 0xFEC7, 0xFE3E, 0xFD2B, 0xFBA7, 0xF9EF, 0xF815,\n    0xF629, 0xF43D, 0xF263, 0xD552, 0xD548, 0xD4E3, 0xD3B5, 0xD1D1,\n    0xCFA1, 0xCD3E, 0xCAC3, 0xC848, 0xC5E6, 0x19CB, 0x80D8, 0x59D2,\n    0xBF5F, 0xE02F, 0x7A60, 0x5A4B, 0xBF5F, 0xD17C, 0xD1E8, 0xD314,\n    0xD4D9, 0xD711, 0xD995, 0xDC40, 0xDEEA, 0xE16E, 0xE3A6, 0x109A,\n    0x1053, 0x0F8D, 0x0E62, 0x0CEB, 0x0B42, 0x097F, 0x07BD, 0x0614,\n    0x049D, 0x6843, 0x680F, 0x6781, 0x66AB, 0x659E, 0x646D, 0x632A,\n    0x61E6, 0x60B5, 0x5FA8,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_A1.inc.c",
    "content": "static const struct Animation anim_A1[] = {\n    0,\n    189,\n    0,\n    0,\n    0x18,\n    ANIMINDEX_NUMPARTS(anim_A1_indices),\n    anim_A1_values,\n    anim_A1_indices,\n    0,\n};\n\n\nstatic const u16 anim_A1_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x0018, 0x0184, 0x0018, 0x019C, 0x0018, 0x01B4,\n    0x0018, 0x013C, 0x0018, 0x0154, 0x0018, 0x016C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x013B,\n    0x0001, 0x0137, 0x0001, 0x0138, 0x0001, 0x0139,\n    0x0001, 0x0007, 0x0001, 0x0008, 0x0001, 0x0009,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0006,\n    0x0001, 0x0003, 0x0001, 0x0004, 0x0001, 0x0005,\n    0x0001, 0x011C, 0x0001, 0x011D, 0x0001, 0x011E,\n    0x0001, 0x000E, 0x0001, 0x000F, 0x0001, 0x0010,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x000D,\n    0x0001, 0x000A, 0x0001, 0x000B, 0x0001, 0x000C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x011F,\n    0x0018, 0x0102, 0x0001, 0x011A, 0x0001, 0x011B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x00EA,\n    0x0018, 0x00A2, 0x0018, 0x00BA, 0x0018, 0x00D2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x013A,\n    0x0018, 0x0071, 0x0001, 0x0089, 0x0018, 0x008A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x0059,\n    0x0018, 0x0011, 0x0018, 0x0029, 0x0018, 0x0041,\n};\n\nstatic const s16 anim_A1_values[] = {\n    0x0000, 0x00BD, 0x3FFF, 0xFF2B, 0xFE27, 0xD180, 0xDA85, 0xDAF2,\n    0x6B33, 0x168E, 0x0B18, 0x159D, 0xEE68, 0xDA1D, 0x7E3F, 0xDDD8,\n    0x9FDC, 0x01C4, 0x01C5, 0x01C8, 0x01CC, 0x01D0, 0x01D5, 0x01D8,\n    0x01DA, 0x01D9, 0x01D6, 0x01CF, 0x01C4, 0x01AA, 0x017F, 0x014A,\n    0x0117, 0x00EE, 0x00C9, 0x00A3, 0x008E, 0x0099, 0x00F4, 0x017E,\n    0x01C4, 0x0190, 0x0190, 0x018E, 0x018B, 0x0187, 0x0184, 0x0182,\n    0x0181, 0x0181, 0x0183, 0x0188, 0x0190, 0x01A4, 0x01C5, 0x01EC,\n    0x0211, 0x022B, 0x023C, 0x0247, 0x0249, 0x023B, 0x0204, 0x01B7,\n    0x0190, 0xEBC5, 0xEBDD, 0xEC1B, 0xEC70, 0xECCF, 0xED29, 0xED70,\n    0xED96, 0xED8D, 0xED45, 0xECB2, 0xEBC5, 0xE999, 0xE5E0, 0xE173,\n    0xDD28, 0xD9D6, 0xD6F8, 0xD441, 0xD2DA, 0xD3EC, 0xDB4D, 0xE62F,\n    0xEBC5, 0x1211, 0x1385, 0x1746, 0x1C68, 0x2200, 0x2722, 0x2AE3,\n    0x2C58, 0x288B, 0x2006, 0x1718, 0x1211, 0x10AF, 0x0FC9, 0x0F4B,\n    0x0F25, 0x0F45, 0x0F9A, 0x1012, 0x109B, 0x1124, 0x119C, 0x11F0,\n    0x1211, 0x0500, 0x0505, 0x0512, 0x0526, 0x053F, 0x055A, 0x0577,\n    0x0592, 0x05AA, 0x05BE, 0x05CC, 0x05D0, 0x05CC, 0x05C1, 0x05B0,\n    0x059A, 0x0582, 0x0568, 0x054F, 0x0536, 0x0521, 0x0510, 0x0504,\n    0x0500, 0x04A8, 0xF127, 0xEFC7, 0xEC01, 0xE65E, 0xDF66, 0xD7A2,\n    0xCF99, 0xC7D4, 0xC0DD, 0xBB39, 0xB774, 0xB613, 0xB73D, 0xBA74,\n    0xBF4F, 0xC564, 0xCC4C, 0xD39D, 0xDAEE, 0xE1D6, 0xE7EC, 0xECC7,\n    0xEFFD, 0xF127, 0xFF5B, 0xFF72, 0xFFA7, 0xFFE2, 0x000B, 0x001B,\n    0x0019, 0x0006, 0xFFDF, 0xFFA9, 0xFF77, 0xFF5B, 0xFF52, 0xFF4C,\n    0xFF48, 0xFF47, 0xFF48, 0xFF4A, 0xFF4E, 0xFF51, 0xFF55, 0xFF58,\n    0xFF5A, 0xFF5B, 0xFF13, 0xFF0C, 0xFEFC, 0xFEEB, 0xFEDF, 0xFEDE,\n    0xFEE4, 0xFEEC, 0xFEF6, 0xFF03, 0xFF0D, 0xFF13, 0xFF16, 0xFF17,\n    0xFF18, 0xFF18, 0xFF18, 0xFF17, 0xFF16, 0xFF16, 0xFF15, 0xFF14,\n    0xFF14, 0xFF13, 0xFB21, 0xF7AB, 0xEFAA, 0xE6AB, 0xE03B, 0xDDAB,\n    0xDDD8, 0xE0A0, 0xE6B9, 0xEF11, 0xF6D0, 0xFB21, 0xFC85, 0xFD6E,\n    0xFDEC, 0xFE12, 0xFDF2, 0xFD9D, 0xFD24, 0xFC99, 0xFC0F, 0xFB96,\n    0xFB41, 0xFB21, 0x09C7, 0x09A7, 0x0954, 0x08E1, 0x0862, 0x07E9,\n    0x0789, 0x0756, 0x0763, 0x07C3, 0x0888, 0x09C7, 0x0C23, 0x0FDD,\n    0x1470, 0x1957, 0x1E0D, 0x2210, 0x24D8, 0x25E3, 0x217F, 0x17D5,\n    0x0E2B, 0x09C7, 0x0366, 0x0357, 0x032F, 0x02F4, 0x02AA, 0x0258,\n    0x0202, 0x01B0, 0x0166, 0x012B, 0x0103, 0x00F4, 0x0100, 0x0122,\n    0x0156, 0x0196, 0x01DF, 0x022D, 0x027A, 0x02C4, 0x0304, 0x0337,\n    0x035A, 0x0366, 0xFD2B, 0xBADB, 0x19CB, 0x80D8, 0x59D2, 0xBF5F,\n    0xC09D, 0xC406, 0xC91E, 0xCF69, 0xD66E, 0xDDB0, 0xE4B4, 0xEB00,\n    0xF018, 0xF380, 0xF4BE, 0xF3B2, 0xF0CA, 0xEC67, 0xE6E8, 0xE0AB,\n    0xDA0F, 0xD373, 0xCD35, 0xC7B6, 0xC353, 0xC06C, 0xBF5F, 0xE02F,\n    0x7A60, 0x5A4B, 0xBF5F, 0xD0CA, 0xF990, 0xF9D4, 0xFA83, 0xFB70,\n    0xFC7E, 0xFDA8, 0xFEE2, 0x0020, 0x0159, 0x0280, 0x038B, 0x046D,\n    0x04E6, 0x04C7, 0x041E, 0x030B, 0x01B1, 0x002D, 0xFE9A, 0xFD12,\n    0xFBB2, 0xFA95, 0xF9D6, 0xF990, 0xFEFC, 0xFF0F, 0xFF3A, 0xFF68,\n    0xFF92, 0xFFC0, 0xFFEE, 0x001C, 0x0049, 0x0072, 0x0096, 0x00B3,\n    0x00B8, 0x009F, 0x007A, 0x0050, 0x001D, 0xFFE7, 0xFFAE, 0xFF77,\n    0xFF47, 0xFF1F, 0xFF05, 0xFEFC, 0x1127, 0x1124, 0x111F, 0x111B,\n    0x111A, 0x111A, 0x111A, 0x111B, 0x111B, 0x111C, 0x111C, 0x111C,\n    0x111B, 0x111A, 0x1119, 0x111B, 0x111C, 0x111E, 0x1120, 0x1122,\n    0x1124, 0x1126, 0x1127, 0x1127, 0x057A, 0x0541, 0x04A4, 0x03BA,\n    0x0299, 0x0156, 0x0009, 0xFEC7, 0xFDA6, 0xFCBC, 0xFC1F, 0xFBE6,\n    0xFC16, 0xFC9B, 0xFD65, 0xFE62, 0xFF81, 0x00AF, 0x01DF, 0x02FE,\n    0x03FB, 0x04C4, 0x054A, 0x057A, 0x038B, 0x0366, 0x0300, 0x0269,\n    0x01AD, 0x00DC, 0x0004, 0xFF35, 0xFE79, 0xFDE2, 0xFD7C, 0xFD57,\n    0xFD76, 0xFDCD, 0xFE4F, 0xFEF3, 0xFFAD, 0x0070, 0x0135, 0x01EF,\n    0x0292, 0x0315, 0x036B, 0x038B, 0x68BD, 0x68BC, 0x68BB, 0x68B8,\n    0x68B5, 0x68B2, 0x68AE, 0x68AA, 0x68A7, 0x68A5, 0x68A3, 0x68A2,\n    0x68A3, 0x68A4, 0x68A7, 0x68A9, 0x68AC, 0x68B0, 0x68B3, 0x68B6,\n    0x68B9, 0x68BB, 0x68BD, 0x68BD,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_A2.inc.c",
    "content": "static const struct Animation anim_A2[] = {\n    1,\n    189,\n    0,\n    0,\n    0x17,\n    ANIMINDEX_NUMPARTS(anim_A2_indices),\n    anim_A2_values,\n    anim_A2_indices,\n    0,\n};\n\n\nstatic const u16 anim_A2_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0017, 0x02BD,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0017, 0x02A6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0017, 0x028F,\n    0x0001, 0x028B, 0x0001, 0x028C, 0x0001, 0x028D,\n    0x0017, 0x005F, 0x0017, 0x0076, 0x0017, 0x008D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0017, 0x0048,\n    0x0017, 0x0003, 0x0017, 0x001A, 0x0017, 0x0031,\n    0x0001, 0x0287, 0x0001, 0x0288, 0x0001, 0x0289,\n    0x0017, 0x0100, 0x0017, 0x0117, 0x0017, 0x012E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0017, 0x00E9,\n    0x0017, 0x00A4, 0x0017, 0x00BB, 0x0017, 0x00D2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x028A,\n    0x0017, 0x0242, 0x0017, 0x0259, 0x0017, 0x0270,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0017, 0x022B,\n    0x0017, 0x01E6, 0x0017, 0x01FD, 0x0017, 0x0214,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x028E,\n    0x0017, 0x01A1, 0x0017, 0x01B8, 0x0017, 0x01CF,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0017, 0x018A,\n    0x0017, 0x0145, 0x0017, 0x015C, 0x0017, 0x0173,\n};\n\nstatic const s16 anim_A2_values[] = {\n    0x0000, 0x00BD, 0x3FFF, 0xFEDE, 0xFEDD, 0xFED8, 0xFED2, 0xFEC9,\n    0xFEBF, 0xFEB2, 0xFEA5, 0xFE96, 0xFE87, 0xFE77, 0xFE67, 0xFE57,\n    0xFE47, 0xFE37, 0xFE29, 0xFE1B, 0xFE0F, 0xFE04, 0xFDFC, 0xFDF5,\n    0xFDF1, 0xFDF0, 0xFE52, 0xFE3C, 0xFDFD, 0xFD98, 0xFD12, 0xFC70,\n    0xFBB4, 0xFAE4, 0xFA03, 0xF916, 0xF821, 0xF727, 0xF62E, 0xF538,\n    0xF44B, 0xF36A, 0xF29A, 0xF1DF, 0xF13C, 0xF0B6, 0xF052, 0xF012,\n    0xEFFC, 0xD86E, 0xD885, 0xD8C5, 0xD92C, 0xD9B4, 0xDA5A, 0xDB19,\n    0xDBED, 0xDCD2, 0xDDC3, 0xDEBE, 0xDFBC, 0xE0BA, 0xE1B4, 0xE2A6,\n    0xE38B, 0xE45F, 0xE51E, 0xE5C3, 0xE64C, 0xE6B2, 0xE6F3, 0xE709,\n    0xDA85, 0xDA8B, 0xDA9B, 0xDAB4, 0xDAD7, 0xDB00, 0xDB30, 0xDB66,\n    0xDB9F, 0xDBDC, 0xDC1A, 0xDC5A, 0xDC9A, 0xDCD9, 0xDD15, 0xDD4F,\n    0xDD84, 0xDDB4, 0xDDDE, 0xDE00, 0xDE1A, 0xDE2A, 0xDE30, 0xD85D,\n    0xD98E, 0xDABF, 0xDBF1, 0xDD22, 0xDE53, 0xDF85, 0xE0B6, 0xE1E7,\n    0xE319, 0xE44A, 0xE57C, 0xE6AD, 0xE7DE, 0xE910, 0xEA41, 0xEB72,\n    0xECA4, 0xEDD5, 0xEF06, 0xF038, 0xF169, 0xF29A, 0x791B, 0x7886,\n    0x77F1, 0x775C, 0x76C6, 0x7631, 0x759C, 0x7506, 0x7471, 0x73DC,\n    0x7347, 0x72B1, 0x721C, 0x7187, 0x70F1, 0x705C, 0x6FC7, 0x6F32,\n    0x6E9C, 0x6E07, 0x6D72, 0x6CDD, 0x6C47, 0x077F, 0x0760, 0x0740,\n    0x0721, 0x0702, 0x06E3, 0x06C4, 0x06A5, 0x0686, 0x0666, 0x0647,\n    0x0628, 0x0609, 0x05EA, 0x05CB, 0x05AC, 0x058C, 0x056D, 0x054E,\n    0x052F, 0x0510, 0x04F1, 0x04D2, 0x123D, 0x1229, 0x11EE, 0x1190,\n    0x1114, 0x107C, 0x0FCE, 0x0F0C, 0x0E3B, 0x0D5E, 0x0C7A, 0x0B92,\n    0x0AAA, 0x09C5, 0x08E9, 0x0818, 0x0756, 0x06A8, 0x0610, 0x0594,\n    0x0536, 0x04FB, 0x04E7, 0x154D, 0x153D, 0x150E, 0x14C5, 0x1463,\n    0x13EC, 0x1363, 0x12CB, 0x1227, 0x117A, 0x10C6, 0x1010, 0x0F5A,\n    0x0EA6, 0x0DF9, 0x0D55, 0x0CBD, 0x0C34, 0x0BBD, 0x0B5B, 0x0B11,\n    0x0AE3, 0x0AD3, 0xE450, 0xE447, 0xE42C, 0xE403, 0xE3CB, 0xE388,\n    0xE33A, 0xE2E4, 0xE286, 0xE224, 0xE1BE, 0xE157, 0xE0EF, 0xE089,\n    0xE027, 0xDFCA, 0xDF73, 0xDF25, 0xDEE2, 0xDEAB, 0xDE81, 0xDE66,\n    0xDE5D, 0xDC26, 0xDC2F, 0xDC48, 0xDC70, 0xDCA5, 0xDCE6, 0xDD31,\n    0xDD83, 0xDDDD, 0xDE3B, 0xDE9D, 0xDF00, 0xDF63, 0xDFC5, 0xE023,\n    0xE07D, 0xE0D0, 0xE11A, 0xE15B, 0xE190, 0xE1B8, 0xE1D1, 0xE1DA,\n    0x8942, 0x8949, 0x8950, 0x8957, 0x895D, 0x8964, 0x896B, 0x8972,\n    0x8979, 0x8980, 0x8987, 0x898E, 0x8994, 0x899B, 0x89A2, 0x89A9,\n    0x89B0, 0x89B7, 0x89BE, 0x89C5, 0x89CB, 0x89D2, 0x89D9, 0xE972,\n    0xE92B, 0xE8E3, 0xE89B, 0xE853, 0xE80B, 0xE7C3, 0xE77B, 0xE733,\n    0xE6EB, 0xE6A3, 0xE65B, 0xE613, 0xE5CB, 0xE583, 0xE53B, 0xE4F4,\n    0xE4AC, 0xE464, 0xE41C, 0xE3D4, 0xE38C, 0xE344, 0x84B7, 0x84A0,\n    0x8489, 0x8472, 0x845B, 0x8444, 0x842C, 0x8415, 0x83FE, 0x83E7,\n    0x83D0, 0x83B9, 0x83A1, 0x838A, 0x8373, 0x835C, 0x8345, 0x832E,\n    0x8317, 0x82FF, 0x82E8, 0x82D1, 0x82BA, 0xFFC4, 0xFFC4, 0xFFC6,\n    0xFFC9, 0xFFCC, 0xFFD1, 0xFFD6, 0xFFDB, 0xFFE2, 0xFFE8, 0xFFEF,\n    0xFFF5, 0xFFFC, 0x0002, 0x0008, 0x000E, 0x0014, 0x0019, 0x001E,\n    0x0021, 0x0024, 0x0026, 0x0027, 0x01FD, 0x01FD, 0x01FE, 0x0200,\n    0x0203, 0x0206, 0x020A, 0x020E, 0x0213, 0x0218, 0x021C, 0x0221,\n    0x0226, 0x022B, 0x0230, 0x0235, 0x0239, 0x023D, 0x0240, 0x0243,\n    0x0245, 0x0246, 0x0247, 0xC5DA, 0xC5E4, 0xC601, 0xC62E, 0xC669,\n    0xC6B2, 0xC706, 0xC763, 0xC7C7, 0xC832, 0xC8A0, 0xC910, 0xC980,\n    0xC9EE, 0xCA59, 0xCABE, 0xCB1C, 0xCB71, 0xCBBB, 0xCBF8, 0xCC27,\n    0xCC46, 0xCC52, 0x3B65, 0x3B5E, 0x3B4A, 0x3B2A, 0x3B00, 0x3ACC,\n    0x3A90, 0x3A4E, 0x3A06, 0x39BB, 0x396D, 0x391D, 0x38CD, 0x387F,\n    0x3833, 0x37EB, 0x37A8, 0x376B, 0x3737, 0x370B, 0x36EA, 0x36D4,\n    0x36CB, 0x170A, 0x16FE, 0x16D9, 0x16A0, 0x1653, 0x15F6, 0x158A,\n    0x1513, 0x1492, 0x1409, 0x137C, 0x12ED, 0x125D, 0x11D0, 0x1147,\n    0x10C5, 0x104C, 0x0FDF, 0x0F80, 0x0F31, 0x0EF5, 0x0ECE, 0x0EBF,\n    0x0CCE, 0x0CDA, 0x0CFB, 0x0D2F, 0x0D74, 0x0DC9, 0x0E2A, 0x0E96,\n    0x0F0B, 0x0F87, 0x1006, 0x1088, 0x110A, 0x118B, 0x1207, 0x127C,\n    0x12EA, 0x134C, 0x13A3, 0x13EA, 0x1420, 0x1443, 0x1452, 0xC5D8,\n    0xC5B8, 0xC55D, 0xC4CC, 0xC40C, 0xC322, 0xC214, 0xC0E8, 0xBFA5,\n    0xBE4F, 0xBCED, 0xBB84, 0xBA1C, 0xB8B9, 0xB761, 0xB61B, 0xB4EC,\n    0xB3DB, 0xB2EC, 0xB227, 0xB190, 0xB12E, 0xB107, 0x0067, 0x0067,\n    0x0067, 0x0067, 0x0068, 0x0068, 0x0069, 0x0069, 0x006A, 0x006A,\n    0x006B, 0x006C, 0x006C, 0x006D, 0x006E, 0x006E, 0x006F, 0x006F,\n    0x0070, 0x0070, 0x0070, 0x0071, 0x0071, 0xFF2A, 0xFF2A, 0xFF29,\n    0xFF28, 0xFF26, 0xFF24, 0xFF22, 0xFF20, 0xFF1D, 0xFF1A, 0xFF18,\n    0xFF15, 0xFF12, 0xFF0F, 0xFF0C, 0xFF0A, 0xFF07, 0xFF05, 0xFF03,\n    0xFF02, 0xFF00, 0xFF00, 0xFEFF, 0xD1F7, 0xD1F6, 0xD1F6, 0xD1F5,\n    0xD1F4, 0xD1F2, 0xD1F1, 0xD1EF, 0xD1ED, 0xD1EB, 0xD1E9, 0xD1E7,\n    0xD1E5, 0xD1E3, 0xD1E1, 0xD1DF, 0xD1DD, 0xD1DB, 0xD1DA, 0xD1D9,\n    0xD1D8, 0xD1D7, 0xD1D7, 0x3446, 0x344D, 0x3461, 0x3481, 0x34AC,\n    0x34E0, 0x351C, 0x355E, 0x35A6, 0x35F2, 0x3641, 0x3691, 0x36E1,\n    0x3730, 0x377C, 0x37C5, 0x3808, 0x3845, 0x387A, 0x38A6, 0x38C7,\n    0x38DD, 0x38E5, 0xE5F5, 0xE604, 0xE630, 0xE675, 0xE6D1, 0xE741,\n    0xE7C2, 0xE851, 0xE8EC, 0xE990, 0xEA39, 0xEAE6, 0xEB92, 0xEC3C,\n    0xECE1, 0xED7D, 0xEE0E, 0xEE91, 0xEF03, 0xEF61, 0xEFA9, 0xEFD8,\n    0xEFEB, 0xF263, 0xF256, 0xF22F, 0xF1F2, 0xF1A1, 0xF13E, 0xF0CC,\n    0xF04D, 0xEFC5, 0xEF34, 0xEE9F, 0xEE07, 0xED6E, 0xECD9, 0xEC48,\n    0xEBBE, 0xEB3E, 0xEACA, 0xEA66, 0xEA12, 0xE9D3, 0xE9A9, 0xE999,\n    0xC5E6, 0xC5C3, 0xC561, 0xC4C4, 0xC3F4, 0xC2F7, 0xC1D3, 0xC08E,\n    0xBF30, 0xBDBE, 0xBC3F, 0xBAB9, 0xB933, 0xB7B2, 0xB63F, 0xB4DE,\n    0xB396, 0xB26E, 0xB16C, 0xB096, 0xAFF3, 0xAF89, 0xAF5F, 0x19CB,\n    0x80D8, 0x59D2, 0xBF5F, 0xE02F, 0x7A60, 0x5A4B, 0xBF5F, 0xE3A6,\n    0xE3A1, 0xE393, 0xE37D, 0xE360, 0xE33C, 0xE313, 0xE2E5, 0xE2B3,\n    0xE27F, 0xE249, 0xE212, 0xE1DB, 0xE1A4, 0xE170, 0xE13E, 0xE10F,\n    0xE0E6, 0xE0C1, 0xE0A3, 0xE08C, 0xE07D, 0xE077, 0x049D, 0x049F,\n    0x04A5, 0x04AF, 0x04BC, 0x04CC, 0x04DE, 0x04F2, 0x0508, 0x0520,\n    0x0538, 0x0550, 0x0569, 0x0581, 0x0598, 0x05AE, 0x05C3, 0x05D5,\n    0x05E5, 0x05F3, 0x05FD, 0x0604, 0x0606, 0x5FA8, 0x5FA6, 0x5F9E,\n    0x5F91, 0x5F81, 0x5F6D, 0x5F55, 0x5F3C, 0x5F20, 0x5F03, 0x5EE4,\n    0x5EC5, 0x5EA6, 0x5E88, 0x5E6A, 0x5E4E, 0x5E34, 0x5E1D, 0x5E08,\n    0x5DF7, 0x5DEA, 0x5DE2, 0x5DDE,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_A3.inc.c",
    "content": "static const struct Animation anim_A3[] = {\n    1,\n    189,\n    0,\n    0,\n    0x1E,\n    ANIMINDEX_NUMPARTS(anim_A3_indices),\n    anim_A3_values,\n    anim_A3_indices,\n    0,\n};\n\n\nstatic const u16 anim_A3_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x001E, 0x04B5, 0x001E, 0x04D3, 0x001E, 0x04F1,\n    0x001E, 0x045B, 0x001E, 0x0479, 0x001E, 0x0497,\n    0x001E, 0x0401, 0x001E, 0x041F, 0x001E, 0x043D,\n    0x001E, 0x03A6, 0x001E, 0x03C4, 0x001E, 0x03E2,\n    0x001E, 0x007B, 0x001E, 0x0099, 0x001E, 0x00B7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x005D,\n    0x001E, 0x0003, 0x001E, 0x0021, 0x001E, 0x003F,\n    0x001E, 0x034B, 0x001E, 0x0369, 0x001E, 0x0387,\n    0x001E, 0x014D, 0x001E, 0x016B, 0x001E, 0x0189,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x012F,\n    0x001E, 0x00D5, 0x001E, 0x00F3, 0x001E, 0x0111,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x03A5,\n    0x001E, 0x02F1, 0x001E, 0x030F, 0x001E, 0x032D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x02D3,\n    0x001E, 0x0279, 0x001E, 0x0297, 0x001E, 0x02B5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0400,\n    0x001E, 0x021F, 0x001E, 0x023D, 0x001E, 0x025B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0201,\n    0x001E, 0x01A7, 0x001E, 0x01C5, 0x001E, 0x01E3,\n};\n\nstatic const s16 anim_A3_values[] = {\n    0x0000, 0x00BD, 0x3FFF, 0xFEDE, 0xFEDE, 0xFEDD, 0xFEDC, 0xFEDB,\n    0xFED9, 0xFED7, 0xFED4, 0xFED2, 0xFECF, 0xFECC, 0xFEC9, 0xFEC5,\n    0xFEC2, 0xFEBF, 0xFEBB, 0xFEB8, 0xFEB4, 0xFEB1, 0xFEAE, 0xFEAB,\n    0xFEA8, 0xFEA5, 0xFEA3, 0xFEA1, 0xFE9F, 0xFE9E, 0xFE9D, 0xFE9C,\n    0xFE9C, 0xFE52, 0xFE45, 0xFE21, 0xFDE6, 0xFD97, 0xFD34, 0xFCC1,\n    0xFC3F, 0xFBB0, 0xFB15, 0xFA70, 0xF9C3, 0xF910, 0xF859, 0xF79F,\n    0xF6E4, 0xF629, 0xF572, 0xF4BF, 0xF412, 0xF36D, 0xF2D2, 0xF243,\n    0xF1C1, 0xF14E, 0xF0EC, 0xF09C, 0xF061, 0xF03D, 0xF030, 0xD86E,\n    0xD87C, 0xD8A2, 0xD8E1, 0xD935, 0xD99D, 0xDA17, 0xDAA1, 0xDB3A,\n    0xDBDE, 0xDC8D, 0xDD44, 0xDE02, 0xDEC5, 0xDF8B, 0xE051, 0xE117,\n    0xE1DA, 0xE298, 0xE34F, 0xE3FE, 0xE4A2, 0xE53B, 0xE5C5, 0xE63F,\n    0xE6A7, 0xE6FB, 0xE73A, 0xE760, 0xE76E, 0xDA85, 0xDA88, 0xDA91,\n    0xDA9F, 0xDAB2, 0xDAC9, 0xDAE5, 0xDB04, 0xDB26, 0xDB4C, 0xDB73,\n    0xDB9D, 0xDBC7, 0xDBF3, 0xDC20, 0xDC4D, 0xDC7A, 0xDCA6, 0xDCD0,\n    0xDCFA, 0xDD21, 0xDD47, 0xDD69, 0xDD88, 0xDDA4, 0xDDBB, 0xDDCE,\n    0xDDDC, 0xDDE5, 0xDDE8, 0xDAF2, 0xD7A2, 0xD4A4, 0xD1E9, 0xCF63,\n    0xCD05, 0xCAC0, 0xC889, 0xC64F, 0xC406, 0xC1A0, 0xBF0F, 0xBC46,\n    0xB924, 0xB585, 0xB194, 0xAD7B, 0xA968, 0xA587, 0xA204, 0x9F0B,\n    0x9C6F, 0x99C6, 0x9731, 0x94D1, 0x92C9, 0x913A, 0x9048, 0x9012,\n    0x90BD, 0x6B33, 0x6D1D, 0x6EB7, 0x7011, 0x7135, 0x7233, 0x7317,\n    0x73EF, 0x74C9, 0x75B1, 0x76B5, 0x77E3, 0x7948, 0x7AE6, 0x7C9C,\n    0x7E60, 0x802F, 0x81FB, 0x83C3, 0x8580, 0x872B, 0x88BD, 0x8A31,\n    0x8B81, 0x8CA5, 0x8D97, 0x8E51, 0x8ECD, 0x8F04, 0x8EF0, 0x168E,\n    0x126A, 0x0E72, 0x0AA9, 0x0711, 0x03AB, 0x0079, 0xFD7E, 0xFABA,\n    0xF82F, 0xF5E0, 0xF3CE, 0xF1FB, 0xF068, 0xEF7C, 0xEFF8, 0xF185,\n    0xF3C4, 0xF651, 0xF8CD, 0xFAD5, 0xFC95, 0xFE7F, 0x007E, 0x0282,\n    0x0474, 0x0641, 0x07D5, 0x091C, 0x0A01, 0x123D, 0x1231, 0x120E,\n    0x11D7, 0x118B, 0x112E, 0x10C1, 0x1046, 0x0FBE, 0x0F2B, 0x0E8F,\n    0x0DEB, 0x0D41, 0x0C93, 0x0BE3, 0x0B32, 0x0A81, 0x09D3, 0x0929,\n    0x0886, 0x07E9, 0x0756, 0x06CE, 0x0653, 0x05E6, 0x0589, 0x053E,\n    0x0506, 0x04E3, 0x04D7, 0x154D, 0x1544, 0x1528, 0x14FC, 0x14C1,\n    0x1478, 0x1423, 0x13C2, 0x1357, 0x12E3, 0x1269, 0x11E8, 0x1162,\n    0x10DA, 0x104F, 0x0FC4, 0x0F39, 0x0EB0, 0x0E2B, 0x0DAA, 0x0D2F,\n    0x0CBC, 0x0C51, 0x0BF0, 0x0B9B, 0x0B52, 0x0B16, 0x0AEB, 0x0ACF,\n    0x0AC6, 0xE450, 0xE44A, 0xE439, 0xE41F, 0xE3FB, 0xE3CE, 0xE39A,\n    0xE35E, 0xE31D, 0xE2D7, 0xE28C, 0xE23D, 0xE1EB, 0xE198, 0xE143,\n    0xE0EE, 0xE099, 0xE046, 0xDFF4, 0xDFA6, 0xDF5B, 0xDF14, 0xDED3,\n    0xDE98, 0xDE63, 0xDE37, 0xDE13, 0xDDF8, 0xDDE7, 0xDDE1, 0xDC26,\n    0xDC2C, 0xDC3C, 0xDC57, 0xDC7B, 0xDCA8, 0xDCDC, 0xDD17, 0xDD58,\n    0xDD9E, 0xDDE9, 0xDE38, 0xDE89, 0xDEDC, 0xDF30, 0xDF85, 0xDFDA,\n    0xE02D, 0xE07E, 0xE0CD, 0xE118, 0xE15E, 0xE19F, 0xE1DA, 0xE20E,\n    0xE23B, 0xE25F, 0xE279, 0xE28A, 0xE290, 0x8770, 0x8724, 0x8837,\n    0x8A7D, 0x8DCA, 0x91F2, 0x96C9, 0x9C22, 0xA1D0, 0xA7A9, 0xAD7F,\n    0xB326, 0xB873, 0xBD38, 0xC14A, 0xC51C, 0xC931, 0xCD74, 0xD1D2,\n    0xD635, 0xDA8A, 0xDEBB, 0xE2B3, 0xE660, 0xE9AB, 0xEC81, 0xEECC,\n    0xF079, 0xF173, 0xF1A5, 0xE2A0, 0xE487, 0xE66B, 0xE84C, 0xEA2A,\n    0xEC05, 0xEDDC, 0xEFB1, 0xF182, 0xF34F, 0xF51A, 0xF6E0, 0xF8A4,\n    0xFA63, 0xFC20, 0xFE08, 0x003F, 0x02B1, 0x0549, 0x07F3, 0x0A9A,\n    0x0D29, 0x0F8C, 0x11AF, 0x137D, 0x14E1, 0x15C7, 0x161B, 0x15C7,\n    0x14B9, 0x8F59, 0x8A55, 0x85E1, 0x81F3, 0x7E81, 0x7B88, 0x78FD,\n    0x76D8, 0x7511, 0x739E, 0x7278, 0x7196, 0x70F1, 0x707F, 0x7047,\n    0x70B7, 0x71CF, 0x7372, 0x7582, 0x77E3, 0x7A77, 0x7D20, 0x7FC2,\n    0x8242, 0x847D, 0x8658, 0x87B7, 0x887C, 0x888A, 0x87C3, 0x0183,\n    0x0182, 0x017E, 0x0179, 0x0171, 0x0168, 0x015C, 0x0150, 0x0142,\n    0x0133, 0x0123, 0x0113, 0x0101, 0x00F0, 0x00DE, 0x00CC, 0x00BA,\n    0x00A8, 0x0097, 0x0086, 0x0076, 0x0068, 0x005A, 0x004D, 0x0042,\n    0x0039, 0x0031, 0x002B, 0x0028, 0x0027, 0x01D0, 0x01D0, 0x01D1,\n    0x01D3, 0x01D6, 0x01D9, 0x01DD, 0x01E1, 0x01E6, 0x01EB, 0x01F0,\n    0x01F6, 0x01FC, 0x0202, 0x0208, 0x020E, 0x0214, 0x021A, 0x0220,\n    0x0226, 0x022C, 0x0231, 0x0235, 0x023A, 0x023D, 0x0241, 0x0243,\n    0x0245, 0x0246, 0x0247, 0xE5A9, 0xE592, 0xE550, 0xE4E7, 0xE458,\n    0xE3A9, 0xE2DA, 0xE1F1, 0xE0F0, 0xDFDA, 0xDEB3, 0xDD7D, 0xDC3C,\n    0xDAF3, 0xD9A5, 0xD855, 0xD708, 0xD5BF, 0xD47E, 0xD348, 0xD220,\n    0xD10A, 0xD009, 0xCF20, 0xCE52, 0xCDA2, 0xCD14, 0xCCAA, 0xCC68,\n    0xCC52, 0x1D11, 0x1D28, 0x1D6A, 0x1DD6, 0x1E66, 0x1F19, 0x1FEA,\n    0x20D7, 0x21DC, 0x22F6, 0x2422, 0x255D, 0x26A3, 0x27F1, 0x2944,\n    0x2A98, 0x2BEB, 0x2D39, 0x2E7F, 0x2FBA, 0x30E6, 0x3200, 0x3305,\n    0x33F2, 0x34C3, 0x3576, 0x3607, 0x3672, 0x36B4, 0x36CB, 0xFE7A,\n    0xFE89, 0xFEB3, 0xFEF7, 0xFF52, 0xFFC3, 0x0047, 0x00DC, 0x0181,\n    0x0234, 0x02F2, 0x03B9, 0x0487, 0x055A, 0x0630, 0x0708, 0x07DE,\n    0x08B1, 0x097F, 0x0A46, 0x0B04, 0x0BB7, 0x0C5C, 0x0CF1, 0x0D76,\n    0x0DE7, 0x0E42, 0x0E86, 0x0EB0, 0x0EBF, 0x06A8, 0x06B4, 0x06D7,\n    0x0710, 0x075D, 0x07BC, 0x082B, 0x08A9, 0x0933, 0x09C9, 0x0A69,\n    0x0B10, 0x0BBD, 0x0C6E, 0x0D22, 0x0DD7, 0x0E8B, 0x0F3D, 0x0FEA,\n    0x1091, 0x1130, 0x11C6, 0x1251, 0x12CE, 0x133E, 0x139C, 0x13E9,\n    0x1422, 0x1446, 0x1452, 0xC65F, 0xC64C, 0xC614, 0xC5BB, 0xC543,\n    0xC4AF, 0xC402, 0xC33D, 0xC265, 0xC17B, 0xC082, 0xBF7D, 0xBE6E,\n    0xBD59, 0xBC40, 0xBB26, 0xBA0C, 0xB8F7, 0xB7E9, 0xB6E4, 0xB5EB,\n    0xB501, 0xB428, 0xB364, 0xB2B6, 0xB222, 0xB1AA, 0xB151, 0xB11A,\n    0xB107, 0xFFD9, 0xFFD9, 0xFFDB, 0xFFDD, 0xFFE0, 0xFFE5, 0xFFEA,\n    0xFFEF, 0xFFF5, 0xFFFC, 0x0002, 0x0009, 0x0010, 0x0018, 0x0020,\n    0x0028, 0x0030, 0x0038, 0x003F, 0x0047, 0x004E, 0x0054, 0x005A,\n    0x0060, 0x0064, 0x0069, 0x006C, 0x006E, 0x0070, 0x0071, 0xFEE2,\n    0xFEE2, 0xFEE2, 0xFEE3, 0xFEE3, 0xFEE4, 0xFEE5, 0xFEE6, 0xFEE7,\n    0xFEE9, 0xFEEA, 0xFEEB, 0xFEED, 0xFEEE, 0xFEF0, 0xFEF1, 0xFEF3,\n    0xFEF4, 0xFEF6, 0xFEF7, 0xFEF9, 0xFEFA, 0xFEFB, 0xFEFC, 0xFEFD,\n    0xFEFE, 0xFEFE, 0xFEFF, 0xFEFF, 0xFEFF, 0xE7F9, 0xE7E5, 0xE7AC,\n    0xE750, 0xE6D3, 0xE63A, 0xE586, 0xE4BA, 0xE3D9, 0xE2E7, 0xE1E5,\n    0xE0D6, 0xDFBE, 0xDE9E, 0xDD7B, 0xDC56, 0xDB32, 0xDA13, 0xD8FA,\n    0xD7EC, 0xD6EA, 0xD5F7, 0xD516, 0xD44A, 0xD396, 0xD2FD, 0xD281,\n    0xD224, 0xD1EB, 0xD1D7, 0x1CED, 0x1D06, 0x1D4E, 0x1DC3, 0x1E60,\n    0x1F22, 0x2006, 0x2107, 0x2223, 0x2356, 0x249C, 0x25F2, 0x2754,\n    0x28C0, 0x2A30, 0x2BA2, 0x2D13, 0x2E7E, 0x2FE0, 0x3136, 0x327D,\n    0x33AF, 0x34CB, 0x35CD, 0x36B0, 0x3772, 0x3810, 0x3884, 0x38CD,\n    0x38E6, 0x02A1, 0x0290, 0x025F, 0x0211, 0x01A8, 0x0127, 0x008E,\n    0xFFE3, 0xFF25, 0xFE58, 0xFD7E, 0xFC99, 0xFBAC, 0xFAB9, 0xF9C2,\n    0xF8CA, 0xF7D4, 0xF6E1, 0xF5F4, 0xF50F, 0xF435, 0xF367, 0xF2AA,\n    0xF1FD, 0xF165, 0xF0E3, 0xF07A, 0xF02C, 0xEFFC, 0xEFEB, 0xFC71,\n    0xFC61, 0xFC30, 0xFBE1, 0xFB77, 0xFAF5, 0xFA5B, 0xF9AE, 0xF8EE,\n    0xF820, 0xF744, 0xF65D, 0xF56F, 0xF47A, 0xF382, 0xF288, 0xF190,\n    0xF09B, 0xEFAD, 0xEEC6, 0xEDEA, 0xED1C, 0xEC5C, 0xEBAF, 0xEB16,\n    0xEA93, 0xEA29, 0xE9DA, 0xE9AA, 0xE999, 0xC4A3, 0xC490, 0xC459,\n    0xC400, 0xC389, 0xC2F5, 0xC248, 0xC184, 0xC0AD, 0xBFC3, 0xBECB,\n    0xBDC7, 0xBCBA, 0xBBA6, 0xBA8E, 0xB974, 0xB85C, 0xB748, 0xB63A,\n    0xB536, 0xB43E, 0xB355, 0xB27D, 0xB1B9, 0xB10C, 0xB079, 0xB001,\n    0xAFA9, 0xAF72, 0xAF5F, 0x19CB, 0x1A2B, 0x1B43, 0x1D04, 0x1F62,\n    0x224F, 0x25BC, 0x299D, 0x2DE4, 0x3284, 0x376E, 0x3C95, 0x41EC,\n    0x4764, 0x4CF2, 0x5285, 0x5813, 0x5D8B, 0x62E2, 0x6809, 0x6CF3,\n    0x7193, 0x75DA, 0x79BB, 0x7D28, 0x8018, 0x8276, 0x8437, 0x854F,\n    0x85AF, 0x80D8, 0x80D7, 0x80D5, 0x80D1, 0x80CC, 0x80C6, 0x80BF,\n    0x80B7, 0x80AE, 0x80A4, 0x809A, 0x808F, 0x8084, 0x8078, 0x806D,\n    0x8061, 0x8055, 0x804A, 0x803F, 0x8034, 0x8029, 0x8020, 0x8017,\n    0x800F, 0x8007, 0x7FFE, 0x7FF9, 0x7FF6, 0x7FF3, 0x7FF3, 0x59D2,\n    0x59BB, 0x5978, 0x590D, 0x587D, 0x57CA, 0x56F9, 0x560C, 0x5507,\n    0x53EC, 0x52C0, 0x5185, 0x503F, 0x4EF1, 0x4D9E, 0x4C4A, 0x4AF7,\n    0x49A9, 0x4862, 0x4728, 0x45FC, 0x44E1, 0x43DC, 0x42EF, 0x421E,\n    0x416B, 0x40DB, 0x4070, 0x402D, 0x4016, 0xBF5F, 0xE02F, 0xDFD4,\n    0xDECD, 0xDD26, 0xDAEC, 0xD82C, 0xD4F2, 0xD14B, 0xCD45, 0xC8EB,\n    0xC44B, 0xBF72, 0xBA6C, 0xB546, 0xB00C, 0xAACC, 0xA593, 0xA06D,\n    0x9B67, 0x968D, 0x91ED, 0x8D94, 0x898D, 0x85E7, 0x82AD, 0x7FEA,\n    0x7DAF, 0x7C08, 0x7B01, 0x7AA7, 0x7A60, 0x7A65, 0x7A75, 0x7A8D,\n    0x7AAF, 0x7AD8, 0x7B08, 0x7B3F, 0x7B7B, 0x7BBC, 0x7C01, 0x7C4A,\n    0x7C95, 0x7CE2, 0x7D30, 0x7D7E, 0x7DCD, 0x7E1A, 0x7E65, 0x7EAD,\n    0x7EF2, 0x7F33, 0x7F70, 0x7FA6, 0x7FD7, 0x8003, 0x8024, 0x803D,\n    0x804C, 0x8051, 0x5A4B, 0x5A33, 0x59EF, 0x5982, 0x58EF, 0x5839,\n    0x5763, 0x5672, 0x5568, 0x5448, 0x5316, 0x51D5, 0x5089, 0x4F34,\n    0x4DDB, 0x4C7F, 0x4B26, 0x49D1, 0x4885, 0x4744, 0x4612, 0x44F2,\n    0x43E8, 0x42F7, 0x4221, 0x416B, 0x40D8, 0x406B, 0x4027, 0x400F,\n    0xBF5F, 0x0171, 0x0170, 0x016C, 0x0166, 0x015E, 0x0154, 0x0148,\n    0x013B, 0x012D, 0x011D, 0x010C, 0x00FA, 0x00E8, 0x00D5, 0x00C2,\n    0x00AF, 0x009C, 0x0089, 0x0077, 0x0065, 0x0054, 0x0044, 0x0036,\n    0x0028, 0x001D, 0x0013, 0x000B, 0x0005, 0x0001, 0x0000, 0x0584,\n    0x057F, 0x0571, 0x055A, 0x053B, 0x0515, 0x04E8, 0x04B5, 0x047D,\n    0x0441, 0x0400, 0x03BD, 0x0377, 0x032F, 0x02E6, 0x029D, 0x0255,\n    0x020D, 0x01C7, 0x0184, 0x0143, 0x0107, 0x00CF, 0x009C, 0x006F,\n    0x0049, 0x002A, 0x0013, 0x0004, 0x0000, 0xD0E3, 0xD0F1, 0xD119,\n    0xD15A, 0xD1B1, 0xD21D, 0xD29C, 0xD32C, 0xD3CA, 0xD475, 0xD52A,\n    0xD5E9, 0xD6AE, 0xD778, 0xD846, 0xD914, 0xD9E1, 0xDAAB, 0xDB71,\n    0xDC2F, 0xDCE5, 0xDD90, 0xDE2E, 0xDEBD, 0xDF3C, 0xDFA8, 0xE000,\n    0xE041, 0xE069, 0xE077, 0xF990, 0xF996, 0xF9A6, 0xF9C1, 0xF9E5,\n    0xFA12, 0xFA47, 0xFA82, 0xFAC3, 0xFB0A, 0xFB55, 0xFBA4, 0xFBF5,\n    0xFC49, 0xFC9E, 0xFCF3, 0xFD48, 0xFD9B, 0xFDED, 0xFE3C, 0xFE87,\n    0xFECD, 0xFF0F, 0xFF4A, 0xFF7E, 0xFFAB, 0xFFCF, 0xFFEA, 0xFFFB,\n    0x0000, 0xFEFC, 0xFEFD, 0xFEFF, 0xFF04, 0xFF09, 0xFF10, 0xFF19,\n    0xFF22, 0xFF2C, 0xFF37, 0xFF43, 0xFF50, 0xFF5D, 0xFF6A, 0xFF77,\n    0xFF85, 0xFF92, 0xFFA0, 0xFFAC, 0xFFB9, 0xFFC5, 0xFFD0, 0xFFDA,\n    0xFFE4, 0xFFEC, 0xFFF3, 0xFFF9, 0xFFFD, 0x0000, 0x0000, 0x1127,\n    0x111D, 0x1100, 0x10D2, 0x1094, 0x1046, 0x0FEC, 0x0F85, 0x0F14,\n    0x0E9A, 0x0E19, 0x0D91, 0x0D04, 0x0C73, 0x0BE0, 0x0B4D, 0x0ABB,\n    0x0A2A, 0x099D, 0x0915, 0x0893, 0x0819, 0x07A8, 0x0742, 0x06E7,\n    0x069A, 0x065B, 0x062D, 0x0610, 0x0606, 0x0106, 0x0105, 0x0102,\n    0x00FE, 0x00F8, 0x00F1, 0x00E9, 0x00DF, 0x00D5, 0x00CA, 0x00BE,\n    0x00B1, 0x00A4, 0x0097, 0x0089, 0x007C, 0x006E, 0x0061, 0x0054,\n    0x0048, 0x003C, 0x0030, 0x0026, 0x001D, 0x0014, 0x000D, 0x0007,\n    0x0003, 0x0000, 0x0000, 0x00AA, 0x00A9, 0x00A8, 0x00A5, 0x00A1,\n    0x009D, 0x0097, 0x0091, 0x008A, 0x0083, 0x007B, 0x0073, 0x006B,\n    0x0062, 0x0059, 0x0050, 0x0048, 0x003F, 0x0037, 0x002E, 0x0027,\n    0x001F, 0x0019, 0x0012, 0x000D, 0x0008, 0x0005, 0x0002, 0x0000,\n    0x0000, 0x6882, 0x6879, 0x685D, 0x6831, 0x67F5, 0x67AB, 0x6755,\n    0x66F3, 0x6687, 0x6612, 0x6596, 0x6514, 0x648D, 0x6403, 0x6377,\n    0x62EA, 0x625E, 0x61D4, 0x614D, 0x60CB, 0x604F, 0x5FDA, 0x5F6E,\n    0x5F0C, 0x5EB5, 0x5E6C, 0x5E30, 0x5E03, 0x5DE8, 0x5DDE,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_A4.inc.c",
    "content": "static const struct Animation anim_A4[] = {\n    0,\n    189,\n    0,\n    0,\n    0x1E,\n    ANIMINDEX_NUMPARTS(anim_A4_indices),\n    anim_A4_values,\n    anim_A4_indices,\n    0,\n};\n\n\nstatic const u16 anim_A4_indices[] = {\n    0x0001, 0x0000, 0x001E, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x001F, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x031B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x031A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0319,\n    0x0001, 0x0315, 0x0001, 0x0316, 0x0001, 0x0317,\n    0x001E, 0x0098, 0x001E, 0x00B6, 0x001E, 0x00D4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x007A,\n    0x001E, 0x0020, 0x001E, 0x003E, 0x001E, 0x005C,\n    0x0001, 0x0311, 0x0001, 0x0312, 0x0001, 0x0313,\n    0x0001, 0x016A, 0x0001, 0x016B, 0x0001, 0x016C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x014C,\n    0x001E, 0x00F2, 0x001E, 0x0110, 0x001E, 0x012E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0314,\n    0x001E, 0x02B7, 0x001E, 0x02D5, 0x001E, 0x02F3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0299,\n    0x001E, 0x023F, 0x001E, 0x025D, 0x001E, 0x027B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0318,\n    0x001E, 0x01E5, 0x001E, 0x0203, 0x001E, 0x0221,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x01C7,\n    0x001E, 0x016D, 0x001E, 0x018B, 0x001E, 0x01A9,\n};\n\nstatic const s16 anim_A4_values[] = {\n    0x0000, 0x00BD, 0x00BC, 0x00BC, 0x00BA, 0x00B9, 0x00B7, 0x00B5,\n    0x00B3, 0x00B2, 0x00B0, 0x00B0, 0x00AF, 0x00AF, 0x00B0, 0x00B0,\n    0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, 0x00B8,\n    0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BC, 0x00BD, 0x00BD, 0x3FFF,\n    0xFE9C, 0xFE8E, 0xFE69, 0xFE31, 0xFDE9, 0xFD96, 0xFD3D, 0xFCE2,\n    0xFC89, 0xFC36, 0xFBEF, 0xFBB6, 0xFB91, 0xFB84, 0xFB8D, 0xFBA6,\n    0xFBCD, 0xFBFF, 0xFC3B, 0xFC7E, 0xFCC6, 0xFD10, 0xFD5A, 0xFDA1,\n    0xFDE4, 0xFE20, 0xFE53, 0xFE7A, 0xFE93, 0xFE9C, 0xF030, 0xF030,\n    0xF02F, 0xF02F, 0xF02D, 0xF02C, 0xF02B, 0xF02A, 0xF028, 0xF027,\n    0xF026, 0xF025, 0xF025, 0xF024, 0xF025, 0xF025, 0xF026, 0xF026,\n    0xF027, 0xF028, 0xF029, 0xF02A, 0xF02B, 0xF02C, 0xF02D, 0xF02E,\n    0xF02F, 0xF030, 0xF030, 0xF030, 0xE76E, 0xE76C, 0xE767, 0xE75F,\n    0xE755, 0xE749, 0xE73C, 0xE72F, 0xE723, 0xE717, 0xE70D, 0xE705,\n    0xE700, 0xE6FE, 0xE6FF, 0xE703, 0xE708, 0xE70F, 0xE718, 0xE721,\n    0xE72B, 0xE736, 0xE740, 0xE74A, 0xE754, 0xE75C, 0xE764, 0xE769,\n    0xE76D, 0xE76E, 0xDDE8, 0xDDC1, 0xDD56, 0xDCB2, 0xDBE2, 0xDAF3,\n    0xD9F1, 0xD8E9, 0xD7E7, 0xD6F8, 0xD628, 0xD584, 0xD518, 0xD4F1,\n    0xD50B, 0xD554, 0xD5C5, 0xD658, 0xD706, 0xD7C8, 0xD897, 0xD96D,\n    0xDA43, 0xDB12, 0xDBD4, 0xDC82, 0xDD14, 0xDD86, 0xDDCE, 0xDDE8,\n    0x90BD, 0x908B, 0x9001, 0x8F30, 0x8E26, 0x8CF4, 0x8BA9, 0x8A57,\n    0x890D, 0x87DB, 0x86D1, 0x85FF, 0x8576, 0x8544, 0x8565, 0x85C2,\n    0x8653, 0x870F, 0x87ED, 0x88E5, 0x89EF, 0x8B00, 0x8C12, 0x8D1C,\n    0x8E14, 0x8EF2, 0x8FAE, 0x903E, 0x909C, 0x90BD, 0x8EF0, 0x8EF6,\n    0x8F06, 0x8F1E, 0x8F3D, 0x8F60, 0x8F86, 0x8FAD, 0x8FD3, 0x8FF6,\n    0x9014, 0x902C, 0x903C, 0x9042, 0x903E, 0x9034, 0x9023, 0x900D,\n    0x8FF4, 0x8FD7, 0x8FB9, 0x8F99, 0x8F7A, 0x8F5B, 0x8F3F, 0x8F25,\n    0x8F10, 0x8EFF, 0x8EF4, 0x8EF0, 0x0A01, 0x09FB, 0x09E9, 0x09CD,\n    0x09A9, 0x0981, 0x0955, 0x0928, 0x08FC, 0x08D4, 0x08B1, 0x0895,\n    0x0883, 0x087C, 0x0880, 0x088D, 0x08A0, 0x08B9, 0x08D6, 0x08F7,\n    0x091A, 0x093F, 0x0963, 0x0986, 0x09A7, 0x09C5, 0x09DD, 0x09F1,\n    0x09FD, 0x0A01, 0x04D7, 0x0506, 0x0588, 0x064E, 0x0748, 0x0869,\n    0x09A0, 0x0ADF, 0x0C16, 0x0D36, 0x0E31, 0x0EF7, 0x0F79, 0x0FA7,\n    0x0F88, 0x0F30, 0x0EA8, 0x0DF7, 0x0D25, 0x0C3C, 0x0B42, 0x0A3F,\n    0x093D, 0x0843, 0x0759, 0x0688, 0x05D7, 0x054E, 0x04F6, 0x04D7,\n    0x0AC6, 0x0AE6, 0x0B40, 0x0BC9, 0x0C76, 0x0D3E, 0x0E16, 0x0EF2,\n    0x0FCA, 0x1091, 0x113F, 0x11C8, 0x1222, 0x1242, 0x122D, 0x11F0,\n    0x1191, 0x1117, 0x1086, 0x0FE4, 0x0F37, 0x0E84, 0x0DD1, 0x0D24,\n    0x0C82, 0x0BF1, 0x0B77, 0x0B18, 0x0ADB, 0x0AC6, 0xDDE1, 0xDDE1,\n    0xDDE0, 0xDDDF, 0xDDDD, 0xDDDC, 0xDDDA, 0xDDD8, 0xDDD6, 0xDDD4,\n    0xDDD3, 0xDDD1, 0xDDD1, 0xDDD0, 0xDDD0, 0xDDD1, 0xDDD2, 0xDDD3,\n    0xDDD4, 0xDDD6, 0xDDD7, 0xDDD9, 0xDDDA, 0xDDDC, 0xDDDD, 0xDDDF,\n    0xDDE0, 0xDDE1, 0xDDE1, 0xDDE1, 0xE290, 0xE272, 0xE21F, 0xE1A0,\n    0xE100, 0xE047, 0xDF7F, 0xDEB3, 0xDDEC, 0xDD33, 0xDC92, 0xDC14,\n    0xDBC1, 0xDBA3, 0xDBB7, 0xDBEF, 0xDC46, 0xDCB8, 0xDD3E, 0xDDD4,\n    0xDE74, 0xDF19, 0xDFBF, 0xE05F, 0xE0F5, 0xE17B, 0xE1EC, 0xE244,\n    0xE27C, 0xE290, 0xF1A5, 0x14B9, 0x87C3, 0x0027, 0x0022, 0x0015,\n    0x0002, 0xFFEB, 0xFFD1, 0xFFB7, 0xFF9E, 0xFF88, 0xFF77, 0xFF6D,\n    0xFF6B, 0xFF79, 0xFF95, 0xFFBC, 0xFFE8, 0x0015, 0x003E, 0x005F,\n    0x0071, 0x0078, 0x0077, 0x0071, 0x0066, 0x0059, 0x004B, 0x003D,\n    0x0032, 0x002A, 0x0027, 0x0247, 0x0246, 0x0245, 0x0244, 0x0242,\n    0x023F, 0x023D, 0x023A, 0x0238, 0x0236, 0x0234, 0x0234, 0x0233,\n    0x0234, 0x0235, 0x0237, 0x0238, 0x023A, 0x023C, 0x023D, 0x023E,\n    0x023F, 0x0241, 0x0242, 0x0243, 0x0244, 0x0245, 0x0246, 0x0247,\n    0x0247, 0xCC52, 0xCBFD, 0xCB15, 0xC9BB, 0xC813, 0xC63F, 0xC45F,\n    0xC297, 0xC109, 0xBFD7, 0xBF23, 0xBF0F, 0xBFFD, 0xC1FF, 0xC4BE,\n    0xC7E2, 0xCB15, 0xCE00, 0xD04B, 0xD1A0, 0xD213, 0xD204, 0xD190,\n    0xD0D1, 0xCFE5, 0xCEE5, 0xCDEE, 0xCD1B, 0xCC89, 0xCC52, 0x36CB,\n    0x36E2, 0x3722, 0x3784, 0x3802, 0x3897, 0x393C, 0x39E9, 0x3A9A,\n    0x3B48, 0x3BED, 0x3C81, 0x3D00, 0x3D62, 0x3DA2, 0x3DB8, 0x3D9F,\n    0x3D56, 0x3CE7, 0x3C59, 0x3BB4, 0x3AFF, 0x3A42, 0x3985, 0x38D0,\n    0x382B, 0x379D, 0x372E, 0x36E5, 0x36CB, 0x0EBF, 0x0EB1, 0x0E8C,\n    0x0E52, 0x0E08, 0x0DB0, 0x0D50, 0x0CEA, 0x0C82, 0x0C1B, 0x0BBB,\n    0x0B64, 0x0B19, 0x0ADF, 0x0ABA, 0x0AAD, 0x0ABC, 0x0AE6, 0x0B28,\n    0x0B7B, 0x0BDC, 0x0C47, 0x0CB6, 0x0D25, 0x0D8F, 0x0DF0, 0x0E44,\n    0x0E85, 0x0EAF, 0x0EBF, 0x1452, 0x1459, 0x146E, 0x148E, 0x14B7,\n    0x14E8, 0x151D, 0x1556, 0x1590, 0x15C9, 0x15FE, 0x162F, 0x1658,\n    0x1678, 0x168D, 0x1694, 0x168C, 0x1674, 0x1650, 0x1621, 0x15EC,\n    0x15B0, 0x1573, 0x1535, 0x14FA, 0x14C4, 0x1496, 0x1472, 0x145A,\n    0x1452, 0xB107, 0xB0ED, 0xB0A3, 0xB030, 0xAF9C, 0xAEEF, 0xAE2F,\n    0xAD65, 0xAC96, 0xABCB, 0xAB0C, 0xAA5E, 0xA9CB, 0xA958, 0xA90E,\n    0xA8F4, 0xA912, 0xA966, 0xA9E8, 0xAA8E, 0xAB4E, 0xAC21, 0xACFD,\n    0xADD9, 0xAEAC, 0xAF6D, 0xB013, 0xB094, 0xB0E9, 0xB107, 0x0071,\n    0x0072, 0x0077, 0x007F, 0x0088, 0x0092, 0x009D, 0x00A8, 0x00B1,\n    0x00B9, 0x00BF, 0x00C2, 0x00C1, 0x00BB, 0x00B3, 0x00A9, 0x009E,\n    0x0094, 0x008B, 0x0085, 0x0081, 0x007D, 0x007A, 0x0077, 0x0075,\n    0x0073, 0x0072, 0x0071, 0x0071, 0x0071, 0xFEFF, 0xFF01, 0xFF04,\n    0xFF09, 0xFF0F, 0xFF16, 0xFF1E, 0xFF25, 0xFF2B, 0xFF30, 0xFF34,\n    0xFF36, 0xFF35, 0xFF31, 0xFF2A, 0xFF23, 0xFF1B, 0xFF14, 0xFF0D,\n    0xFF09, 0xFF06, 0xFF04, 0xFF03, 0xFF01, 0xFF00, 0xFF00, 0xFF00,\n    0xFEFF, 0xFEFF, 0xFEFF, 0xD1D7, 0xD186, 0xD0A6, 0xCF57, 0xCDB7,\n    0xCBE4, 0xC9FF, 0xC825, 0xC674, 0xC50D, 0xC40D, 0xC394, 0xC3D5,\n    0xC4CF, 0xC64D, 0xC81E, 0xCA0D, 0xCBE8, 0xCD7B, 0xCE95, 0xCF50,\n    0xCFEF, 0xD073, 0xD0DE, 0xD133, 0xD174, 0xD1A3, 0xD1C1, 0xD1D2,\n    0xD1D7, 0x38E6, 0x38FF, 0x3946, 0x39B4, 0x3A41, 0x3AE7, 0x3B9F,\n    0x3C61, 0x3D27, 0x3DEA, 0x3EA1, 0x3F48, 0x3FD5, 0x4043, 0x408A,\n    0x40A3, 0x4086, 0x4035, 0x3FB9, 0x3F1A, 0x3E61, 0x3D97, 0x3CC4,\n    0x3BF2, 0x3B27, 0x3A6E, 0x39D0, 0x3953, 0x3902, 0x38E6, 0xEFEB,\n    0xEFF6, 0xF016, 0xF047, 0xF087, 0xF0D1, 0xF124, 0xF17B, 0xF1D3,\n    0xF22A, 0xF27D, 0xF2C7, 0xF307, 0xF338, 0xF358, 0xF363, 0xF356,\n    0xF332, 0xF2FA, 0xF2B3, 0xF260, 0xF206, 0xF1A7, 0xF148, 0xF0EE,\n    0xF09B, 0xF054, 0xF01C, 0xEFF8, 0xEFEB, 0xE999, 0xE992, 0xE980,\n    0xE964, 0xE940, 0xE916, 0xE8E7, 0xE8B5, 0xE883, 0xE852, 0xE823,\n    0xE7F8, 0xE7D4, 0xE7B8, 0xE7A6, 0xE7A0, 0xE7A7, 0xE7BC, 0xE7DB,\n    0xE804, 0xE833, 0xE867, 0xE89C, 0xE8D2, 0xE906, 0xE935, 0xE95D,\n    0xE97D, 0xE991, 0xE999, 0xAF5F, 0xAF4A, 0xAF0F, 0xAEB5, 0xAE40,\n    0xADB7, 0xAD20, 0xAC80, 0xABDD, 0xAB3D, 0xAAA5, 0xAA1C, 0xA9A8,\n    0xA94D, 0xA913, 0xA8FE, 0xA916, 0xA958, 0xA9BF, 0xAA42, 0xAADA,\n    0xAB81, 0xAC2E, 0xACDC, 0xAD83, 0xAE1B, 0xAE9E, 0xAF04, 0xAF47,\n    0xAF5F, 0x85AF, 0x7FF3, 0x4016, 0xBF5F, 0x7AA7, 0x8051, 0x400F,\n    0xBF5F, 0xE077, 0x0606, 0x5DDE, 0x5DD6, 0x5DBD, 0x5D98, 0x5D69,\n    0x5D32, 0x5CF8, 0x5CBC, 0x5C81, 0x5C4B, 0x5C1B, 0x5BF6, 0x5BDE,\n    0x5BD5, 0x5BDB, 0x5BEB, 0x5C05, 0x5C26, 0x5C4E, 0x5C7A, 0x5CA9,\n    0x5CDA, 0x5D0A, 0x5D39, 0x5D65, 0x5D8D, 0x5DAE, 0x5DC8, 0x5DD9,\n    0x5DDE,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_A5.inc.c",
    "content": "static const struct Animation anim_A5[] = {\n    1,\n    189,\n    0,\n    0,\n    0x50,\n    ANIMINDEX_NUMPARTS(anim_A5_indices),\n    anim_A5_values,\n    anim_A5_indices,\n    0,\n};\n\n\nstatic const u16 anim_A5_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x0050, 0x091E, 0x0050, 0x096E, 0x0050, 0x09BE,\n    0x0050, 0x082E, 0x0050, 0x087E, 0x0050, 0x08CE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x082D,\n    0x0001, 0x0829, 0x0001, 0x082A, 0x0001, 0x082B,\n    0x0050, 0x00F4, 0x0050, 0x0144, 0x0050, 0x0194,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00F3,\n    0x0050, 0x0003, 0x0050, 0x0053, 0x0050, 0x00A3,\n    0x0001, 0x0825, 0x0001, 0x0826, 0x0001, 0x0827,\n    0x0050, 0x02D5, 0x0050, 0x0325, 0x0050, 0x0375,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02D4,\n    0x0050, 0x01E4, 0x0050, 0x0234, 0x0050, 0x0284,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0828,\n    0x0050, 0x0735, 0x0050, 0x0785, 0x0050, 0x07D5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0050, 0x06E5,\n    0x0050, 0x05F5, 0x0050, 0x0645, 0x0050, 0x0695,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x082C,\n    0x0050, 0x0505, 0x0050, 0x0555, 0x0050, 0x05A5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0050, 0x04B5,\n    0x0050, 0x03C5, 0x0050, 0x0415, 0x0050, 0x0465,\n};\n\nstatic const s16 anim_A5_values[] = {\n    0x0000, 0x00BD, 0x3FFF, 0xFF8A, 0xFBC4, 0xF28C, 0xE70D, 0xDC71,\n    0xD5E4, 0xD357, 0xD259, 0xD27D, 0xD357, 0xD479, 0xD577, 0xD5E4,\n    0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4,\n    0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4,\n    0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4,\n    0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4,\n    0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4,\n    0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4,\n    0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4,\n    0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4, 0xD5E4,\n    0xD5E4, 0xD5E4, 0xD5E4, 0xF980, 0xF812, 0xF494, 0xF039, 0xEC34,\n    0xE9B9, 0xE8C2, 0xE861, 0xE86F, 0xE8C2, 0xE92F, 0xE990, 0xE9B9,\n    0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9,\n    0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9,\n    0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9,\n    0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9,\n    0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9,\n    0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9,\n    0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9,\n    0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9, 0xE9B9,\n    0xE9B9, 0xE9B9, 0xE9B9, 0xF06F, 0xEF14, 0xEBC5, 0xE7A5, 0xE3D7,\n    0xE17D, 0xE093, 0xE037, 0xE044, 0xE093, 0xE0FB, 0xE156, 0xE17D,\n    0xE17D, 0xE17D, 0xE17D, 0xE17D, 0xE17D, 0xE17D, 0xE17D, 0xE17D,\n    0xE17D, 0xE17D, 0xE17D, 0xE17D, 0xE17D, 0xE17D, 0xE17D, 0xE17D,\n    0xE17D, 0xE17D, 0xE17D, 0xE17D, 0xE17D, 0xE17D, 0xE17D, 0xE17D,\n    0xE17D, 0xE17D, 0xE17D, 0xE17D, 0xE17D, 0xE17D, 0xE17D, 0xE17D,\n    0xE17D, 0xE17D, 0xE17D, 0xE17D, 0xE17D, 0xE17D, 0xE17D, 0xE17D,\n    0xE17D, 0xE17D, 0xE17D, 0xE17D, 0xE17D, 0xE17D, 0xE17D, 0xE17D,\n    0xE17D, 0xE17D, 0xE17D, 0xE17D, 0xE17D, 0xE17D, 0xE17D, 0xE17D,\n    0xE17D, 0xE17D, 0xE17D, 0xE17D, 0xE17D, 0xE17D, 0xE17D, 0xE17D,\n    0xE17D, 0xE17D, 0xE17D, 0xC0DA, 0x1A6F, 0x1B70, 0x1DE2, 0x20EF,\n    0x23C0, 0x257D, 0x262A, 0x266E, 0x2664, 0x262A, 0x25DD, 0x259A,\n    0x257D, 0x257D, 0x257D, 0x257D, 0x257D, 0x257D, 0x257D, 0x257D,\n    0x257D, 0x257D, 0x257D, 0x257D, 0x257D, 0x257D, 0x257D, 0x257D,\n    0x257D, 0x257D, 0x257D, 0x257D, 0x257D, 0x257D, 0x257D, 0x257D,\n    0x257D, 0x257D, 0x257D, 0x257D, 0x257D, 0x257D, 0x257D, 0x257D,\n    0x257D, 0x257D, 0x257D, 0x257D, 0x257D, 0x257D, 0x257D, 0x257D,\n    0x257D, 0x257D, 0x257D, 0x257D, 0x257D, 0x257D, 0x257D, 0x257D,\n    0x257D, 0x257D, 0x257D, 0x257D, 0x257D, 0x257D, 0x257D, 0x257D,\n    0x257D, 0x257D, 0x257D, 0x257D, 0x257D, 0x257D, 0x257D, 0x257D,\n    0x257D, 0x257D, 0x257D, 0x257D, 0xDAF3, 0xDB0E, 0xDB50, 0xDBA2,\n    0xDBEE, 0xDC1D, 0xDC2F, 0xDC36, 0xDC35, 0xDC2F, 0xDC27, 0xDC20,\n    0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D,\n    0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D,\n    0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D,\n    0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D,\n    0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D,\n    0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D,\n    0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D,\n    0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D,\n    0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0x94A3, 0x934D, 0x9009, 0x8BF6,\n    0x8833, 0x85E1, 0x84F9, 0x849F, 0x84AC, 0x84F9, 0x8560, 0x85BA,\n    0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1,\n    0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1,\n    0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1,\n    0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1,\n    0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1,\n    0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1,\n    0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1,\n    0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1,\n    0x85E1, 0x85E1, 0x85E1, 0x85E1, 0xF992, 0xFC1D, 0x0252, 0x0A12,\n    0x1137, 0x15A2, 0x175A, 0x1805, 0x17ED, 0x175A, 0x1696, 0x15EB,\n    0x15A2, 0x15A2, 0x15A2, 0x15A2, 0x15A2, 0x15A2, 0x15A2, 0x15A2,\n    0x15A2, 0x15A2, 0x15A2, 0x15A2, 0x15A2, 0x15A2, 0x15A2, 0x15A2,\n    0x15A2, 0x15A2, 0x15A2, 0x15A2, 0x15A2, 0x15A2, 0x15A2, 0x15A2,\n    0x15A2, 0x15A2, 0x15A2, 0x15A2, 0x15A2, 0x15A2, 0x15A2, 0x15A2,\n    0x15A2, 0x15A2, 0x15A2, 0x15A2, 0x15A2, 0x15A2, 0x15A2, 0x15A2,\n    0x15A2, 0x15A2, 0x15A2, 0x15A2, 0x15A2, 0x15A2, 0x15A2, 0x15A2,\n    0x15A2, 0x15A2, 0x15A2, 0x15A2, 0x15A2, 0x15A2, 0x15A2, 0x15A2,\n    0x15A2, 0x15A2, 0x15A2, 0x15A2, 0x15A2, 0x15A2, 0x15A2, 0x15A2,\n    0x15A2, 0x15A2, 0x15A2, 0x15A2, 0x0CE2, 0x0D20, 0x0DB8, 0x0E74,\n    0x0F23, 0x0F8E, 0x0FB8, 0x0FC8, 0x0FC6, 0x0FB8, 0x0FA6, 0x0F95,\n    0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E,\n    0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E,\n    0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E,\n    0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E,\n    0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E,\n    0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E,\n    0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E,\n    0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E,\n    0x0F8E, 0x0F8E, 0x0F8E, 0x0F8E, 0xE291, 0xE110, 0xDD65, 0xD8D1,\n    0xD498, 0xD1FD, 0xD0F9, 0xD094, 0xD0A2, 0xD0F9, 0xD16C, 0xD1D1,\n    0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD,\n    0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD,\n    0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD,\n    0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD,\n    0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD,\n    0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD,\n    0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD,\n    0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD,\n    0xD1FD, 0xD1FD, 0xD1FD, 0xD1FD, 0xC4ED, 0xEC0F, 0xEB89, 0xEA44,\n    0xE8AE, 0xE738, 0xE650, 0xE5F6, 0xE5D3, 0xE5D8, 0xE5F6, 0xE61E,\n    0xE641, 0xE650, 0xE650, 0xE650, 0xE650, 0xE650, 0xE650, 0xE650,\n    0xE650, 0xE650, 0xE650, 0xE650, 0xE650, 0xE650, 0xE650, 0xE650,\n    0xE650, 0xE650, 0xE650, 0xE650, 0xE650, 0xE650, 0xE650, 0xE650,\n    0xE650, 0xE650, 0xE650, 0xE650, 0xE650, 0xE650, 0xE650, 0xE650,\n    0xE650, 0xE650, 0xE650, 0xE650, 0xE650, 0xE650, 0xE650, 0xE650,\n    0xE650, 0xE650, 0xE650, 0xE650, 0xE650, 0xE650, 0xE650, 0xE650,\n    0xE650, 0xE650, 0xE650, 0xE650, 0xE650, 0xE650, 0xE650, 0xE650,\n    0xE650, 0xE650, 0xE650, 0xE650, 0xE650, 0xE650, 0xE650, 0xE650,\n    0xE650, 0xE650, 0xE650, 0xE650, 0xE650, 0x24F9, 0x24B2, 0x2406,\n    0x232F, 0x2269, 0x21EE, 0x21BE, 0x21AC, 0x21AF, 0x21BE, 0x21D4,\n    0x21E6, 0x21EE, 0x21EE, 0x21EE, 0x21EE, 0x21EE, 0x21EE, 0x21EE,\n    0x21EE, 0x21EE, 0x21EE, 0x21EE, 0x21EE, 0x21EE, 0x21EE, 0x21EE,\n    0x21EE, 0x21EE, 0x21EE, 0x21EE, 0x21EE, 0x21EE, 0x21EE, 0x21EE,\n    0x21EE, 0x21EE, 0x21EE, 0x21EE, 0x21EE, 0x21EE, 0x21EE, 0x21EE,\n    0x21EE, 0x21EE, 0x21EE, 0x21EE, 0x21EE, 0x21EE, 0x21EE, 0x21EE,\n    0x21EE, 0x21EE, 0x21EE, 0x21EE, 0x21EE, 0x21EE, 0x21EE, 0x21EE,\n    0x21EE, 0x21EE, 0x21EE, 0x21EE, 0x21EE, 0x21EE, 0x21EE, 0x21EE,\n    0x21EE, 0x21EE, 0x21EE, 0x21EE, 0x21EE, 0x21EE, 0x21EE, 0x21EE,\n    0x21EE, 0x21EE, 0x21EE, 0x21EE, 0x21EE, 0x996F, 0x98C1, 0x9718,\n    0x9506, 0x931D, 0x91EF, 0x917A, 0x914C, 0x9152, 0x917A, 0x91AE,\n    0x91DC, 0x91EF, 0x91EF, 0x91EF, 0x91EF, 0x91EF, 0x91EF, 0x91EF,\n    0x91EF, 0x91EF, 0x91EF, 0x91EF, 0x91EF, 0x91EF, 0x91EF, 0x91EF,\n    0x91EF, 0x91EF, 0x91EF, 0x91EF, 0x91EF, 0x91EF, 0x91EF, 0x91EF,\n    0x91EF, 0x91EF, 0x91EF, 0x91EF, 0x91EF, 0x91EF, 0x91EF, 0x91EF,\n    0x91EF, 0x91EF, 0x91EF, 0x91EF, 0x91EF, 0x91EF, 0x91EF, 0x91EF,\n    0x91EF, 0x91EF, 0x91EF, 0x91EF, 0x91EF, 0x91EF, 0x91EF, 0x91EF,\n    0x91EF, 0x91EF, 0x91EF, 0x91EF, 0x91EF, 0x91EF, 0x91EF, 0x91EF,\n    0x91EF, 0x91EF, 0x91EF, 0x91EF, 0x91EF, 0x91EF, 0x91EF, 0x91EF,\n    0x91EF, 0x91EF, 0x91EF, 0x91EF, 0x91EF, 0xFFF2, 0xFFF2, 0xFFF2,\n    0xFFF2, 0xFFF2, 0xFFF2, 0xFFF2, 0xFFF2, 0xFFF2, 0xFFF2, 0xFFF2,\n    0xFFF2, 0xFFF2, 0xFFF2, 0xFFF2, 0xFFF2, 0xFFF2, 0xFFF2, 0xFFF2,\n    0xFFF2, 0xFFF2, 0xFFF2, 0xFFF2, 0xFFF2, 0xFFF2, 0xFFF2, 0xFFF2,\n    0xFFF2, 0xFFF2, 0xFFF2, 0xFFF2, 0xFFF2, 0xFFF2, 0xFFF2, 0xFFF2,\n    0xFFF2, 0xFFF2, 0xFFF2, 0xFFF2, 0xFFF2, 0xFFF2, 0xFFF2, 0xFFF2,\n    0xFFF2, 0xFFEA, 0xFFDB, 0xFFD0, 0xFFD4, 0xFFF2, 0x0047, 0x00CB,\n    0x014A, 0x0191, 0x0191, 0x016C, 0x0135, 0x00FE, 0x00DD, 0x00EA,\n    0x010E, 0x0111, 0x00A7, 0x0045, 0x0068, 0x00B3, 0x00D4, 0x0063,\n    0xFFF4, 0xFFE7, 0xFFDE, 0xFFD9, 0xFFD8, 0xFFD9, 0xFFDC, 0xFFE1,\n    0xFFE6, 0xFFEB, 0xFFF0, 0xFFF3, 0xFFF4, 0x025C, 0x025C, 0x025C,\n    0x025C, 0x025C, 0x025C, 0x025C, 0x025C, 0x025C, 0x025C, 0x025C,\n    0x025C, 0x025C, 0x025C, 0x025C, 0x025C, 0x025C, 0x025C, 0x025C,\n    0x025C, 0x025C, 0x025C, 0x025C, 0x025C, 0x025C, 0x025C, 0x025C,\n    0x025C, 0x025C, 0x025C, 0x025C, 0x025C, 0x025C, 0x025C, 0x025C,\n    0x025C, 0x025C, 0x025C, 0x025C, 0x025C, 0x025C, 0x025C, 0x025C,\n    0x025C, 0x025F, 0x0264, 0x0268, 0x0267, 0x025C, 0x023B, 0x020A,\n    0x01DB, 0x01C4, 0x01CB, 0x01E2, 0x0201, 0x021F, 0x0232, 0x022F,\n    0x021F, 0x021A, 0x0239, 0x0258, 0x0252, 0x0240, 0x0236, 0x0249,\n    0x025C, 0x025E, 0x0260, 0x0260, 0x0261, 0x0260, 0x0260, 0x025F,\n    0x025E, 0x025D, 0x025D, 0x025C, 0x025C, 0xC84A, 0xC84A, 0xC84A,\n    0xC84A, 0xC84A, 0xC84A, 0xC84A, 0xC84A, 0xC84A, 0xC84A, 0xC84A,\n    0xC84A, 0xC84A, 0xC84A, 0xC84A, 0xC84A, 0xC84A, 0xC84A, 0xC84A,\n    0xC84A, 0xC84A, 0xC84A, 0xC84A, 0xC84A, 0xC84A, 0xC84A, 0xC84A,\n    0xC84A, 0xC84A, 0xC84A, 0xC84A, 0xC84A, 0xC84A, 0xC84A, 0xC84A,\n    0xC84A, 0xC84A, 0xC84A, 0xC84A, 0xC84A, 0xC84A, 0xC84A, 0xC84A,\n    0xC84A, 0xC7BF, 0xC6A8, 0xC5D7, 0xC61D, 0xC84A, 0xCEA4, 0xD861,\n    0xE1B8, 0xE6E2, 0xE6C4, 0xE3CA, 0xDF72, 0xDB38, 0xD89C, 0xD97F,\n    0xDC1B, 0xDC72, 0xD4ED, 0xCE01, 0xD062, 0xD58F, 0xD7CC, 0xD009,\n    0xC84A, 0xC75C, 0xC6C0, 0xC66B, 0xC652, 0xC667, 0xC6A0, 0xC6F1,\n    0xC74E, 0xC7AA, 0xC7FB, 0xC834, 0xC84A, 0x344A, 0x3751, 0x3EB6,\n    0x47EF, 0x5071, 0x55B2, 0x57BE, 0x588A, 0x586D, 0x57BE, 0x56D5,\n    0x560A, 0x55B2, 0x55E9, 0x5663, 0x56DC, 0x5713, 0x56C6, 0x55B2,\n    0x53FD, 0x51FA, 0x4FB3, 0x4D32, 0x4A7F, 0x47A3, 0x44A9, 0x4198,\n    0x3E79, 0x3AB8, 0x3610, 0x3107, 0x2C24, 0x27EC, 0x24E5, 0x2395,\n    0x2408, 0x25B9, 0x2859, 0x2B96, 0x2F20, 0x32A7, 0x35D9, 0x3866,\n    0x39FE, 0x39CB, 0x37DA, 0x352F, 0x32CC, 0x31B4, 0x326C, 0x3457,\n    0x36C5, 0x390A, 0x3B8E, 0x3E2F, 0x3F66, 0x3C3B, 0x390A, 0x3A9A,\n    0x3D8E, 0x3F26, 0x3C1D, 0x390A, 0x3A7A, 0x3D3C, 0x3EBB, 0x3BFC,\n    0x390A, 0x38B2, 0x3879, 0x385A, 0x3851, 0x3858, 0x386D, 0x388B,\n    0x38AD, 0x38CF, 0x38ED, 0x3902, 0x390A, 0x11A5, 0x1111, 0x0FA8,\n    0x0DE5, 0x0C46, 0x0B45, 0x0AE1, 0x0ABA, 0x0AC0, 0x0AE1, 0x0B0D,\n    0x0B34, 0x0B45, 0x0B3A, 0x0B21, 0x0B08, 0x0AFD, 0x0B0D, 0x0B45,\n    0x0B9E, 0x0C09, 0x0C80, 0x0D03, 0x0D8F, 0x0E20, 0x0EB3, 0x0F48,\n    0x0FD9, 0x1066, 0x10EB, 0x1166, 0x11D3, 0x1230, 0x127B, 0x12B1,\n    0x12CF, 0x12D2, 0x1249, 0x10FB, 0x0F3B, 0x0D5B, 0x0BAD, 0x0A83,\n    0x0A2F, 0x0B35, 0x0D74, 0x104A, 0x1317, 0x1537, 0x16C1, 0x1800,\n    0x18A8, 0x186D, 0x17A1, 0x16CE, 0x15F2, 0x150F, 0x1425, 0x1334,\n    0x123E, 0x1142, 0x1042, 0x0F3D, 0x0E34, 0x0D27, 0x0C18, 0x0B06,\n    0x09F2, 0x08DC, 0x07C6, 0x06AF, 0x0598, 0x0482, 0x036D, 0x0259,\n    0x0147, 0x0037, 0xFF2C, 0xFE23, 0xFD1E, 0x147F, 0x14D8, 0x15B2,\n    0x16C3, 0x17BE, 0x1859, 0x1896, 0x18AD, 0x18AA, 0x1896, 0x187B,\n    0x1863, 0x1859, 0x1861, 0x1871, 0x1881, 0x1888, 0x187E, 0x1859,\n    0x181F, 0x17DB, 0x178D, 0x1739, 0x16DF, 0x1682, 0x1622, 0x15C3,\n    0x1565, 0x150A, 0x14B4, 0x1464, 0x141D, 0x13E0, 0x13AE, 0x138A,\n    0x1374, 0x1370, 0x13C6, 0x149A, 0x15B8, 0x16E8, 0x17F4, 0x18A5,\n    0x18C6, 0x180A, 0x1684, 0x148E, 0x1283, 0x10BE, 0x0F07, 0x0D38,\n    0x0BC2, 0x0B16, 0x0AF8, 0x0AE1, 0x0AD0, 0x0AC6, 0x0AC1, 0x0AC1,\n    0x0AC6, 0x0ACF, 0x0ADD, 0x0AEE, 0x0B02, 0x0B19, 0x0B33, 0x0B4E,\n    0x0B6B, 0x0B8A, 0x0BA9, 0x0BC8, 0x0BE8, 0x0C07, 0x0C25, 0x0C42,\n    0x0C5E, 0x0C77, 0x0C8E, 0x0CA3, 0x0CB4, 0xB77F, 0xB666, 0xB3B8,\n    0xB060, 0xAD4B, 0xAB63, 0xAAA5, 0xAA5B, 0xAA66, 0xAAA5, 0xAAF9,\n    0xAB43, 0xAB63, 0xAB4D, 0xAB1E, 0xAAEE, 0xAAD8, 0xAAF7, 0xAB63,\n    0xAC10, 0xACDD, 0xADC5, 0xAEC1, 0xAFCE, 0xB0E6, 0xB204, 0xB322,\n    0xB43B, 0xB54B, 0xB64C, 0xB739, 0xB80C, 0xB8C2, 0xB953, 0xB9BC,\n    0xB9F7, 0xB9FE, 0xB8F7, 0xB674, 0xB314, 0xAF77, 0xAC3F, 0xAA0A,\n    0xA97A, 0xAB82, 0xAFE6, 0xB57C, 0xBB18, 0xBF90, 0xC32A, 0xC672,\n    0xC8AB, 0xC915, 0xC850, 0xC77A, 0xC695, 0xC5A1, 0xC49F, 0xC391,\n    0xC277, 0xC152, 0xC024, 0xBEED, 0xBDAE, 0xBC68, 0xBB1D, 0xB9CC,\n    0xB878, 0xB721, 0xB5C8, 0xB46E, 0xB313, 0xB1BA, 0xB063, 0xAF0F,\n    0xADBE, 0xAC73, 0xAB2D, 0xA9EE, 0xA8B7, 0x0095, 0x0095, 0x0095,\n    0x0095, 0x0095, 0x0095, 0x0095, 0x0095, 0x0095, 0x0095, 0x0095,\n    0x0095, 0x0095, 0x0095, 0x0094, 0x0094, 0x0093, 0x0094, 0x0095,\n    0x0097, 0x009A, 0x009D, 0x00A0, 0x00A4, 0x00A8, 0x00AC, 0x00B0,\n    0x00B5, 0x00B9, 0x00BD, 0x00C2, 0x00C6, 0x00CB, 0x00CF, 0x00D3,\n    0x00D6, 0x00DA, 0x00DD, 0x00E0, 0x00E2, 0x00E4, 0x00E5, 0x00E6,\n    0x00E6, 0x00E6, 0x00E5, 0x00E3, 0x00E1, 0x00DD, 0x00D0, 0x00B3,\n    0x008C, 0x0062, 0x003B, 0x001C, 0x000C, 0x0006, 0x0001, 0xFFFD,\n    0xFFFA, 0xFFF8, 0xFFF6, 0xFFF5, 0xFFF5, 0xFFF5, 0xFFF6, 0xFFF7,\n    0xFFF9, 0xFFFB, 0xFFFD, 0xFFFF, 0x0000, 0x0002, 0x0004, 0x0006,\n    0x0008, 0x000A, 0x000B, 0x000C, 0x000C, 0xFF09, 0xFF09, 0xFF09,\n    0xFF09, 0xFF09, 0xFF09, 0xFF09, 0xFF09, 0xFF09, 0xFF09, 0xFF09,\n    0xFF09, 0xFF09, 0xFF09, 0xFF08, 0xFF08, 0xFF07, 0xFF08, 0xFF09,\n    0xFF0B, 0xFF0D, 0xFF0F, 0xFF12, 0xFF14, 0xFF17, 0xFF1A, 0xFF1D,\n    0xFF20, 0xFF23, 0xFF26, 0xFF29, 0xFF2C, 0xFF30, 0xFF32, 0xFF35,\n    0xFF38, 0xFF3B, 0xFF3D, 0xFF40, 0xFF42, 0xFF43, 0xFF45, 0xFF46,\n    0xFF47, 0xFF48, 0xFF48, 0xFF48, 0xFF48, 0xFF47, 0xFF41, 0xFF33,\n    0xFF1F, 0xFF0B, 0xFEF7, 0xFEE8, 0xFEDF, 0xFEDC, 0xFEDA, 0xFED8,\n    0xFED6, 0xFED5, 0xFED4, 0xFED4, 0xFED4, 0xFED4, 0xFED4, 0xFED5,\n    0xFED5, 0xFED6, 0xFED7, 0xFED8, 0xFEDA, 0xFEDB, 0xFEDC, 0xFEDD,\n    0xFEDE, 0xFEDE, 0xFEDF, 0xFEDF, 0xFEDF, 0xCC42, 0xCC42, 0xCC42,\n    0xCC42, 0xCC42, 0xCC42, 0xCC42, 0xCC42, 0xCC42, 0xCC42, 0xCC42,\n    0xCC42, 0xCC42, 0xCC50, 0xCC6D, 0xCC8A, 0xCC97, 0xCC85, 0xCC42,\n    0xCBD9, 0xCB5E, 0xCAD4, 0xCA3B, 0xC995, 0xC8E6, 0xC82E, 0xC76F,\n    0xC6AB, 0xC5E4, 0xC51B, 0xC454, 0xC38E, 0xC2CD, 0xC212, 0xC15F,\n    0xC0B5, 0xC017, 0xBF87, 0xBF06, 0xBE95, 0xBE38, 0xBDEF, 0xBDBD,\n    0xBDA3, 0xBDA4, 0xBDC0, 0xBDFB, 0xBE55, 0xBED0, 0xC0F5, 0xC5A3,\n    0xCBDD, 0xD2A9, 0xD90B, 0xDE07, 0xE0A3, 0xE1A3, 0xE278, 0xE325,\n    0xE3AB, 0xE40E, 0xE452, 0xE478, 0xE484, 0xE479, 0xE459, 0xE428,\n    0xE3E9, 0xE39E, 0xE34A, 0xE2F0, 0xE294, 0xE237, 0xE1DD, 0xE189,\n    0xE13E, 0xE0FF, 0xE0CE, 0xE0AE, 0xE0A3, 0x3BE4, 0x3E25, 0x43A5,\n    0x4A81, 0x50D5, 0x54BE, 0x5644, 0x56DB, 0x56C5, 0x5644, 0x5596,\n    0x54FF, 0x54BE, 0x550D, 0x55BB, 0x566A, 0x56B9, 0x564A, 0x54BE,\n    0x51D4, 0x4DCC, 0x490C, 0x43F7, 0x3EF2, 0x3A61, 0x36A9, 0x342F,\n    0x3355, 0x33D5, 0x350F, 0x36E8, 0x3946, 0x3C0C, 0x3F20, 0x4266,\n    0x45C4, 0x491E, 0x4C58, 0x4F58, 0x5202, 0x543B, 0x55E8, 0x56ED,\n    0x5730, 0x536B, 0x4A7F, 0x3F8D, 0x35B4, 0x3013, 0x2EDB, 0x2FAF,\n    0x31D7, 0x349C, 0x3747, 0x3921, 0x3972, 0x34EC, 0x2D40, 0x2930,\n    0x30FF, 0x3972, 0x3776, 0x3270, 0x2F99, 0x31E9, 0x3668, 0x3972,\n    0x3A34, 0x3A6B, 0x3A44, 0x39EE, 0x3999, 0x3972, 0x3972, 0x3972,\n    0x3972, 0x3972, 0x3972, 0x3972, 0x3972, 0xF101, 0xF22D, 0xF50B,\n    0xF89E, 0xFBEB, 0xFDF4, 0xFEBF, 0xFF0E, 0xFF03, 0xFEBF, 0xFE65,\n    0xFE16, 0xFDF4, 0xFE30, 0xFEB4, 0xFF38, 0xFF74, 0xFF20, 0xFDF4,\n    0xFBF3, 0xF96A, 0xF67C, 0xF34E, 0xF004, 0xECC3, 0xE9B0, 0xE6EF,\n    0xE4A4, 0xE361, 0xE338, 0xE38E, 0xE3C6, 0xE3B0, 0xE386, 0xE34D,\n    0xE309, 0xE2BE, 0xE272, 0xE229, 0xE1E7, 0xE1B1, 0xE18B, 0xE17A,\n    0xE182, 0xE1A8, 0xE1F0, 0xE260, 0xE2FB, 0xE3C6, 0xE573, 0xE862,\n    0xEC17, 0xF01A, 0xF3F0, 0xF720, 0xF92F, 0xFA47, 0xFAEC, 0xFB33,\n    0xFB2D, 0xFAEE, 0xFA89, 0xFA10, 0xF997, 0xF92F, 0xF8C7, 0xF843,\n    0xF7A8, 0xF6FC, 0xF644, 0xF588, 0xF4CB, 0xF414, 0xF369, 0xF2D0,\n    0xF24D, 0xF20B, 0xF212, 0xF237, 0xF24D, 0xE5BB, 0xE56D, 0xE4AD,\n    0xE3BE, 0xE2E1, 0xE259, 0xE224, 0xE20F, 0xE212, 0xE224, 0xE23C,\n    0xE250, 0xE259, 0xE231, 0xE1D8, 0xE17F, 0xE156, 0xE18F, 0xE259,\n    0xE3E1, 0xE60B, 0xE89B, 0xEB56, 0xEE01, 0xF061, 0xF239, 0xF34F,\n    0xF366, 0xEFB2, 0xE810, 0xE045, 0xDC18, 0xDB11, 0xDA34, 0xD980,\n    0xD8F1, 0xD887, 0xD840, 0xD819, 0xD812, 0xD827, 0xD858, 0xD8A3,\n    0xD905, 0xD97E, 0xDA0B, 0xDAAA, 0xDB59, 0xDC18, 0xDD8B, 0xE013,\n    0xE347, 0xE6BE, 0xEA0E, 0xECCF, 0xEE96, 0xEF7A, 0xEFE8, 0xEFFA,\n    0xEFCA, 0xEF72, 0xEF0E, 0xEEB6, 0xEE85, 0xEE96, 0xEEDB, 0xEF32,\n    0xEF99, 0xF00B, 0xF084, 0xF101, 0xF17D, 0xF1F6, 0xF267, 0xF2CD,\n    0xF323, 0xF34F, 0xF34A, 0xF332, 0xF323, 0xAE23, 0xAC4E, 0xA7D7,\n    0xA246, 0x9D23, 0x99F7, 0x98BB, 0x9840, 0x9851, 0x98BB, 0x9947,\n    0x99C2, 0x99F7, 0x998A, 0x989A, 0x97AA, 0x973D, 0x97D5, 0x99F7,\n    0x9DBD, 0xA2AE, 0xA86F, 0xAEA4, 0xB4F2, 0xBAFE, 0xC06B, 0xC4DE,\n    0xC7FC, 0xC6FB, 0xC1AA, 0xBB94, 0xB844, 0xB7AA, 0xB755, 0xB73C,\n    0xB754, 0xB792, 0xB7EF, 0xB85E, 0xB8D7, 0xB94E, 0xB9BC, 0xBA14,\n    0xBA4E, 0xBA5F, 0xBA3D, 0xB9DE, 0xB939, 0xB844, 0xB623, 0xB26D,\n    0xADB9, 0xA8A4, 0xA3C8, 0x9FBF, 0x9D22, 0x9BB4, 0x9AC3, 0x9A40,\n    0x9A1F, 0x9A4F, 0x9AC3, 0x9B6C, 0x9C3B, 0x9D22, 0x9E3C, 0x9FA3,\n    0xA147, 0xA319, 0xA509, 0xA708, 0xA907, 0xAAF5, 0xACC5, 0xAE65,\n    0xAFC8, 0xB07B, 0xB067, 0xB003, 0xAFC8, 0x8001, 0x8001, 0x4171,\n    0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F, 0xEE88, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x00A6, 0x0000, 0xFBE0, 0xF698, 0xF2F7,\n    0xF138, 0xF02D, 0xF086, 0xF2F7, 0xF9BD, 0x03C8, 0x0CDC, 0x10B5,\n    0x0D53, 0x0583, 0xFC43, 0xF48D, 0xF15E, 0xF5C1, 0xFFA9, 0x0A6C,\n    0x1165, 0x1359, 0x12C3, 0x1086, 0x0D83, 0x0968, 0x03F5, 0xFE29,\n    0xF901, 0xF57A, 0xF3F5, 0xF3C7, 0xF463, 0xF53B, 0xF5C0, 0xF5F7,\n    0xF63D, 0xF68D, 0xF6E5, 0xF73E, 0xF7CC, 0xF82E, 0xF80E, 0xF7C3,\n    0xF772, 0xF73E, 0xF726, 0xF718, 0xF715, 0xF720, 0xF73E, 0xF78B,\n    0xF803, 0xF870, 0xF8A1, 0xF87D, 0xF827, 0xF7C0, 0xF768, 0xF73E,\n    0xF746, 0xF769, 0xF79E, 0xF7DB, 0xF818, 0xF84D, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0016, 0x003C, 0x0044, 0x0000, 0xFF1E, 0xFDCD, 0xFCA3, 0xFC36,\n    0xFCBD, 0xFDD4, 0xFF29, 0x0066, 0x013A, 0x0139, 0x00AC, 0x0049,\n    0x00CA, 0x02CC, 0x05C9, 0x08C0, 0x0AB2, 0x0BA9, 0x0C44, 0x0C63,\n    0x0BE8, 0x0AB2, 0x0845, 0x04B7, 0x00C2, 0xFD1E, 0xFA85, 0xF931,\n    0xF8A6, 0xF88E, 0xF891, 0xF858, 0xF7BC, 0xF75A, 0xF77C, 0xF7CB,\n    0xF821, 0xF858, 0xF870, 0xF87F, 0xF882, 0xF875, 0xF858, 0xF80C,\n    0xF797, 0xF72C, 0xF6FD, 0xF720, 0xF774, 0xF7D9, 0xF830, 0xF858,\n    0xF84F, 0xF82C, 0xF7F7, 0xF7BA, 0xF77C, 0xF748, 0x0F09, 0x10A0,\n    0x1480, 0x1956, 0x1DCC, 0x208E, 0x21A1, 0x220B, 0x21FC, 0x21A1,\n    0x2127, 0x20BC, 0x208E, 0x208E, 0x208E, 0x208E, 0x208E, 0x208E,\n    0x205B, 0x2005, 0x1FF4, 0x208E, 0x2293, 0x2594, 0x2838, 0x2923,\n    0x2819, 0x2604, 0x233C, 0x201B, 0x1CFC, 0x1982, 0x157A, 0x117C,\n    0x0E20, 0x0B76, 0x0933, 0x076F, 0x063E, 0x059E, 0x0569, 0x0585,\n    0x05D6, 0x063E, 0x0707, 0x0843, 0x0986, 0x0A64, 0x0A70, 0x097A,\n    0x07C9, 0x05A8, 0x035E, 0x0133, 0xFE4C, 0xFC64, 0xFD0B, 0xFE88,\n    0x0026, 0x0133, 0x01AA, 0x01F3, 0x0201, 0x01C6, 0x0133, 0xFFB5,\n    0xFD67, 0xFB4A, 0xFA5D, 0xFB0D, 0xFCB4, 0xFEB2, 0x0066, 0x0133,\n    0x0107, 0x0058, 0xFF53, 0xFE21, 0xFCEF, 0xFBE9, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0002,\n    0x0003, 0x0003, 0xFFFA, 0xFFE1, 0xFFC1, 0xFFA5, 0xFF95, 0xFF99,\n    0xFFBB, 0x0003, 0x011C, 0x02F0, 0x046C, 0x0479, 0x0344, 0x01B9,\n    0xFFED, 0xFDF0, 0xFBD4, 0xF9AB, 0xF789, 0xF57F, 0xF39F, 0xF1FC,\n    0xF0A7, 0xEFB3, 0xEF14, 0xEEAE, 0xEE79, 0xEE6E, 0xEE87, 0xEEBD,\n    0xEF09, 0xEF64, 0xEFC7, 0xF02B, 0xF08A, 0xF0DC, 0xF11A, 0xF13E,\n    0xF151, 0xF161, 0xF16F, 0xF17A, 0xF184, 0xF18C, 0xF192, 0xF197,\n    0xF19B, 0xF19E, 0xF1A0, 0xF1A1, 0xF1A0, 0xF19E, 0xF19B, 0xF197,\n    0xF193, 0xF18F, 0xF18A, 0xF186, 0xF182, 0xF17F, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0xFFF4, 0xFFD6, 0xFFB4, 0xFF9A,\n    0xFF96, 0xFFB4, 0x0000, 0x0091, 0x0164, 0x025D, 0x0362, 0x0459,\n    0x0528, 0x05B4, 0x0623, 0x069F, 0x0712, 0x0766, 0x0782, 0x0753,\n    0x06C0, 0x05B4, 0x02AF, 0xFDA8, 0xF8B5, 0xF5EF, 0xF51A, 0xF48E,\n    0xF440, 0xF426, 0xF437, 0xF467, 0xF4AD, 0xF4FF, 0xF552, 0xF59C,\n    0xF5D4, 0xF5EF, 0xF5F4, 0xF5F3, 0xF5ED, 0xF5E5, 0xF5DD, 0xF5D7,\n    0xF5D4, 0xF5D8, 0xF5E3, 0xF5F8, 0xF61A, 0xF649, 0xF688, 0xF6DA,\n    0xF74B, 0xF7E4, 0xF89C, 0xF96B, 0xFA4A, 0xFB31, 0xFC18, 0xFCF6,\n    0xFDC5, 0xFE7D, 0xFF22, 0xFFC1, 0x0059, 0x00EE, 0x017F, 0x020D,\n    0x029A, 0x0325, 0x03B1, 0x043D, 0x04CC, 0x055D, 0x46AF, 0x479B,\n    0x49DD, 0x4CAC, 0x4F44, 0x50DF, 0x517E, 0x51BC, 0x51B3, 0x517E,\n    0x5137, 0x50F9, 0x50DF, 0x50DF, 0x50DF, 0x50DF, 0x50DF, 0x50DF,\n    0x50DF, 0x50DF, 0x5107, 0x5169, 0x51E2, 0x524F, 0x528E, 0x527D,\n    0x51F9, 0x50DF, 0x4D91, 0x480F, 0x42A4, 0x3F9B, 0x3EB6, 0x3E27,\n    0x3DE1, 0x3DD6, 0x3DF9, 0x3E3D, 0x3E95, 0x3EF2, 0x3F48, 0x3F8A,\n    0x3FAA, 0x3F9B, 0x3F6A, 0x3F30, 0x3EEC, 0x3EA2, 0x3E52, 0x3DFC,\n    0x3DA3, 0x3D48, 0x3CEB, 0x3C8E, 0x3C33, 0x3BDA, 0x3B84, 0x3B34,\n    0x3AE6, 0x3A98, 0x3A4B, 0x39FE, 0x39B2, 0x3968, 0x391F, 0x38D9,\n    0x3895, 0x3854, 0x3817, 0x37DC, 0x37A3, 0x376C, 0x3736, 0x3701,\n    0x36CE, 0x369A, 0x3667, 0x3633, 0x35FE, 0x35C9,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_A6.inc.c",
    "content": "static const struct Animation anim_A6[] = {\n    1,\n    189,\n    0,\n    0,\n    0x46,\n    ANIMINDEX_NUMPARTS(anim_A6_indices),\n    anim_A6_values,\n    anim_A6_indices,\n    0,\n};\n\n\nstatic const u16 anim_A6_indices[] = {\n    0x0001, 0x0000, 0x0046, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0047, 0x0001, 0x0000,\n    0x0046, 0x0841, 0x0046, 0x0887, 0x0046, 0x08CD,\n    0x0046, 0x076F, 0x0046, 0x07B5, 0x0046, 0x07FB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0046, 0x0729,\n    0x0001, 0x0725, 0x0001, 0x0726, 0x0001, 0x0727,\n    0x0046, 0x0160, 0x0046, 0x01A6, 0x0046, 0x01EC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0046, 0x011A,\n    0x0046, 0x0048, 0x0046, 0x008E, 0x0046, 0x00D4,\n    0x0001, 0x0721, 0x0001, 0x0722, 0x0001, 0x0723,\n    0x0046, 0x034A, 0x0046, 0x0390, 0x0046, 0x03D6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0046, 0x0304,\n    0x0046, 0x0232, 0x0046, 0x0278, 0x0046, 0x02BE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0724,\n    0x0046, 0x064F, 0x0046, 0x0695, 0x0046, 0x06DB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0046, 0x0609,\n    0x0001, 0x0606, 0x0001, 0x0607, 0x0001, 0x0608,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0728,\n    0x0046, 0x0534, 0x0046, 0x057A, 0x0046, 0x05C0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0046, 0x04EE,\n    0x0046, 0x041C, 0x0046, 0x0462, 0x0046, 0x04A8,\n};\n\nstatic const s16 anim_A6_values[] = {\n    0x0000, 0x00BD, 0x00BD, 0x00BD, 0x00BD, 0x00BD, 0x00BE, 0x00BE,\n    0x00BE, 0x00BF, 0x00BF, 0x00C0, 0x00C1, 0x00C1, 0x00C2, 0x00C3,\n    0x00C4, 0x00C4, 0x00C5, 0x00C6, 0x00C7, 0x00C8, 0x00C9, 0x00CA,\n    0x00CB, 0x00CC, 0x00CE, 0x00CF, 0x00D0, 0x00D1, 0x00D2, 0x00D3,\n    0x00D5, 0x00D6, 0x00D7, 0x00D8, 0x00DA, 0x00DB, 0x00DC, 0x00DD,\n    0x00DE, 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E7,\n    0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EE,\n    0x00EF, 0x00F0, 0x00F1, 0x00F1, 0x00F2, 0x00F3, 0x00F3, 0x00F4,\n    0x00F4, 0x00F4, 0x00F5, 0x00F5, 0x00F5, 0x00F5, 0x00F5, 0x3FFF,\n    0xD5E4, 0xD5F5, 0xD626, 0xD674, 0xD6DB, 0xD759, 0xD7E8, 0xD886,\n    0xD930, 0xD9E2, 0xDA99, 0xDB51, 0xDC07, 0xDCB8, 0xDD5F, 0xDDFA,\n    0xDE85, 0xDEFD, 0xDF5E, 0xDFA5, 0xDFD9, 0xE006, 0xE02B, 0xE048,\n    0xE060, 0xE071, 0xE07C, 0xE082, 0xE084, 0xE081, 0xE07B, 0xE071,\n    0xE064, 0xE056, 0xE045, 0xE033, 0xE020, 0xE00D, 0xDFFA, 0xDFE8,\n    0xDFD6, 0xDFC6, 0xDFB8, 0xDFAD, 0xDFA5, 0xDF9D, 0xDF93, 0xDF88,\n    0xDF7B, 0xDF6C, 0xDF5D, 0xDF4C, 0xDF3B, 0xDF29, 0xDF16, 0xDF04,\n    0xDEF1, 0xDEDE, 0xDECC, 0xDEBB, 0xDEAA, 0xDE9A, 0xDE8B, 0xDE7E,\n    0xDE72, 0xDE68, 0xDE60, 0xDE5A, 0xDE56, 0xDE55, 0xE9B9, 0xE9BD,\n    0xE9CA, 0xE9DF, 0xE9FA, 0xEA1B, 0xEA41, 0xEA6A, 0xEA97, 0xEAC6,\n    0xEAF6, 0xEB26, 0xEB56, 0xEB85, 0xEBB1, 0xEBDA, 0xEBFE, 0xEC1E,\n    0xEC37, 0xEC4A, 0xEC54, 0xEC54, 0xEC4B, 0xEC3C, 0xEC26, 0xEC0B,\n    0xEBEC, 0xEBCB, 0xEBA8, 0xEB85, 0xEB62, 0xEB41, 0xEB23, 0xEB0A,\n    0xEAF5, 0xEAE7, 0xEAE1, 0xEAE3, 0xEAF0, 0xEB07, 0xEB2B, 0xEB5C,\n    0xEB9B, 0xEBEA, 0xEC4A, 0xECC3, 0xED5A, 0xEE0D, 0xEED8, 0xEFB9,\n    0xF0AC, 0xF1AE, 0xF2BD, 0xF3D5, 0xF4F4, 0xF616, 0xF738, 0xF857,\n    0xF971, 0xFA82, 0xFB88, 0xFC7F, 0xFD63, 0xFE34, 0xFEEC, 0xFF8A,\n    0x0009, 0x0068, 0x00A3, 0x00B7, 0xE17D, 0xE199, 0xE1EA, 0xE269,\n    0xE312, 0xE3DF, 0xE4CA, 0xE5CD, 0xE6E3, 0xE807, 0xE932, 0xEA60,\n    0xEB89, 0xECAA, 0xEDBC, 0xEEBA, 0xEF9D, 0xF061, 0xF100, 0xF174,\n    0xF1CB, 0xF216, 0xF255, 0xF289, 0xF2B3, 0xF2D4, 0xF2EC, 0xF2FB,\n    0xF303, 0xF303, 0xF2FE, 0xF2F2, 0xF2E2, 0xF2CD, 0xF2B4, 0xF298,\n    0xF27A, 0xF259, 0xF237, 0xF215, 0xF1F2, 0xF1D0, 0xF1B0, 0xF191,\n    0xF174, 0xF155, 0xF12E, 0xF100, 0xF0CC, 0xF092, 0xF054, 0xF011,\n    0xEFCC, 0xEF84, 0xEF3A, 0xEEEF, 0xEEA5, 0xEE5B, 0xEE12, 0xEDCC,\n    0xED89, 0xED49, 0xED0F, 0xECD9, 0xECAA, 0xEC81, 0xEC60, 0xEC48,\n    0xEC38, 0xEC33, 0xC0DA, 0xC0D1, 0xC0B7, 0xC08F, 0xC05D, 0xC024,\n    0xBFE7, 0xBFA9, 0xBF6D, 0xBF36, 0xBF07, 0xBEE4, 0xBECF, 0xBECC,\n    0xBEDE, 0xBF07, 0xBF4C, 0xBFAE, 0xC032, 0xC0DA, 0xC1A5, 0xC28D,\n    0xC391, 0xC4AD, 0xC5E0, 0xC726, 0xC87D, 0xC9E4, 0xCB56, 0xCCD2,\n    0xCE55, 0xCFDD, 0xD167, 0xD2F1, 0xD479, 0xD5FB, 0xD775, 0xD8E6,\n    0xDA49, 0xDB9E, 0xDCE0, 0xDE0F, 0xDF27, 0xE026, 0xE10A, 0xE1D9,\n    0xE29D, 0xE357, 0xE407, 0xE4AC, 0xE547, 0xE5D9, 0xE660, 0xE6DF,\n    0xE754, 0xE7C0, 0xE824, 0xE87E, 0xE8D1, 0xE91B, 0xE95D, 0xE997,\n    0xE9CA, 0xE9F5, 0xEA19, 0xEA36, 0xEA4D, 0xEA5C, 0xEA66, 0xEA69,\n    0x257D, 0x257D, 0x257D, 0x257D, 0x257D, 0x257D, 0x257D, 0x257D,\n    0x257D, 0x257D, 0x257D, 0x257D, 0x257D, 0x257D, 0x257D, 0x257D,\n    0x257D, 0x257D, 0x257D, 0x257D, 0x2581, 0x258C, 0x259E, 0x25B4,\n    0x25CF, 0x25EE, 0x260E, 0x2630, 0x2652, 0x2674, 0x2694, 0x26B1,\n    0x26CB, 0x26E0, 0x26F0, 0x26F9, 0x26FA, 0x26F3, 0x26E2, 0x26C6,\n    0x26A0, 0x266C, 0x262B, 0x25DC, 0x257D, 0x2506, 0x2471, 0x23C1,\n    0x22F9, 0x221C, 0x212D, 0x202E, 0x1F24, 0x1E10, 0x1CF6, 0x1BD8,\n    0x1ABB, 0x19A0, 0x188A, 0x177D, 0x167C, 0x1589, 0x14A8, 0x13DB,\n    0x1325, 0x128A, 0x120C, 0x11AE, 0x1174, 0x1160, 0xDC1D, 0xDC1D,\n    0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D,\n    0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D, 0xDC1D,\n    0xDC1D, 0xDC1D, 0xDC1F, 0xDC25, 0xDC2D, 0xDC39, 0xDC47, 0xDC56,\n    0xDC67, 0xDC79, 0xDC8A, 0xDC9B, 0xDCAC, 0xDCBB, 0xDCC8, 0xDCD3,\n    0xDCDB, 0xDCDF, 0xDCE0, 0xDCDC, 0xDCD3, 0xDCC5, 0xDCB2, 0xDC97,\n    0xDC76, 0xDC4D, 0xDC1D, 0xDBE0, 0xDB94, 0xDB3A, 0xDAD3, 0xDA62,\n    0xD9E8, 0xD965, 0xD8DD, 0xD850, 0xD7BF, 0xD72D, 0xD69B, 0xD60A,\n    0xD57C, 0xD4F2, 0xD46F, 0xD3F2, 0xD37F, 0xD316, 0xD2B9, 0xD26A,\n    0xD229, 0xD1F9, 0xD1DC, 0xD1D1, 0x85E1, 0x85E1, 0x85E1, 0x85E1,\n    0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1,\n    0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1, 0x85E1,\n    0x85DC, 0x85CF, 0x85BB, 0x85A0, 0x8581, 0x855E, 0x8538, 0x8510,\n    0x84E8, 0x84C1, 0x849C, 0x847A, 0x845C, 0x8443, 0x8431, 0x8427,\n    0x8425, 0x842E, 0x8441, 0x8461, 0x848E, 0x84CA, 0x8516, 0x8572,\n    0x85E1, 0x866B, 0x8719, 0x87E6, 0x88CF, 0x89D0, 0x8AE7, 0x8C0F,\n    0x8D46, 0x8E87, 0x8FD0, 0x911C, 0x9269, 0x93B3, 0x94F6, 0x962F,\n    0x975B, 0x9876, 0x997C, 0x9A6B, 0x9B3E, 0x9BF3, 0x9C86, 0x9CF3,\n    0x9D37, 0x9D4E, 0x15A2, 0x15AE, 0x15D1, 0x1609, 0x1653, 0x16AC,\n    0x1713, 0x1784, 0x17FE, 0x187D, 0x1900, 0x1983, 0x1A05, 0x1A83,\n    0x1AFB, 0x1B69, 0x1BCD, 0x1C22, 0x1C68, 0x1C9B, 0x1CC0, 0x1CDF,\n    0x1CF9, 0x1D0D, 0x1D1C, 0x1D27, 0x1D2E, 0x1D31, 0x1D30, 0x1D2D,\n    0x1D26, 0x1D1E, 0x1D14, 0x1D08, 0x1CFC, 0x1CEF, 0x1CE1, 0x1CD4,\n    0x1CC7, 0x1CBB, 0x1CB0, 0x1CA7, 0x1CA1, 0x1C9C, 0x1C9B, 0x1C9B,\n    0x1C9B, 0x1C9B, 0x1C9B, 0x1C9B, 0x1C9B, 0x1C9B, 0x1C9B, 0x1C9B,\n    0x1C9B, 0x1C9B, 0x1C9B, 0x1C9B, 0x1C9B, 0x1C9B, 0x1C9B, 0x1C9B,\n    0x1C9B, 0x1C9B, 0x1C9B, 0x1C9B, 0x1C9B, 0x1C9B, 0x1C9B, 0x1C9B,\n    0x0F8E, 0x0F8A, 0x0F7C, 0x0F67, 0x0F4A, 0x0F28, 0x0F01, 0x0ED5,\n    0x0EA7, 0x0E76, 0x0E44, 0x0E12, 0x0DE0, 0x0DB0, 0x0D82, 0x0D57,\n    0x0D31, 0x0D10, 0x0CF6, 0x0CE2, 0x0CD4, 0x0CC8, 0x0CBE, 0x0CB6,\n    0x0CB1, 0x0CAC, 0x0CAA, 0x0CA9, 0x0CA9, 0x0CAA, 0x0CAD, 0x0CB0,\n    0x0CB4, 0x0CB8, 0x0CBD, 0x0CC2, 0x0CC7, 0x0CCC, 0x0CD1, 0x0CD6,\n    0x0CDA, 0x0CDD, 0x0CE0, 0x0CE2, 0x0CE2, 0x0CE2, 0x0CE2, 0x0CE2,\n    0x0CE2, 0x0CE2, 0x0CE2, 0x0CE2, 0x0CE2, 0x0CE2, 0x0CE2, 0x0CE2,\n    0x0CE2, 0x0CE2, 0x0CE2, 0x0CE2, 0x0CE2, 0x0CE2, 0x0CE2, 0x0CE2,\n    0x0CE2, 0x0CE2, 0x0CE2, 0x0CE2, 0x0CE2, 0x0CE2, 0xD1FD, 0xD21A,\n    0xD26E, 0xD2F2, 0xD3A2, 0xD476, 0xD56A, 0xD677, 0xD798, 0xD8C7,\n    0xD9FE, 0xDB36, 0xDC6C, 0xDD97, 0xDEB4, 0xDFBB, 0xE0A8, 0xE173,\n    0xE218, 0xE291, 0xE2EA, 0xE334, 0xE371, 0xE3A1, 0xE3C6, 0xE3DF,\n    0xE3EF, 0xE3F6, 0xE3F4, 0xE3EC, 0xE3DE, 0xE3CA, 0xE3B2, 0xE396,\n    0xE378, 0xE359, 0xE339, 0xE319, 0xE2FA, 0xE2DE, 0xE2C5, 0xE2AF,\n    0xE29F, 0xE295, 0xE291, 0xE291, 0xE291, 0xE291, 0xE291, 0xE291,\n    0xE291, 0xE291, 0xE291, 0xE291, 0xE291, 0xE291, 0xE291, 0xE291,\n    0xE291, 0xE291, 0xE291, 0xE291, 0xE291, 0xE291, 0xE291, 0xE291,\n    0xE291, 0xE291, 0xE291, 0xE291, 0xC4ED, 0xC4E2, 0xC4C3, 0xC494,\n    0xC459, 0xC415, 0xC3CC, 0xC382, 0xC33A, 0xC2F9, 0xC2C1, 0xC297,\n    0xC27F, 0xC27B, 0xC290, 0xC2C1, 0xC313, 0xC388, 0xC425, 0xC4ED,\n    0xC5E0, 0xC6F8, 0xC834, 0xC98E, 0xCB04, 0xCC93, 0xCE37, 0xCFED,\n    0xD1B2, 0xD382, 0xD55A, 0xD736, 0xD914, 0xDAF1, 0xDCC8, 0xDE96,\n    0xE059, 0xE20D, 0xE3AE, 0xE53A, 0xE6AC, 0xE802, 0xE939, 0xEA4C,\n    0xEB39, 0xEC06, 0xECBB, 0xED5B, 0xEDE5, 0xEE5C, 0xEEC0, 0xEF14,\n    0xEF58, 0xEF8D, 0xEFB5, 0xEFD2, 0xEFE3, 0xEFEC, 0xEFEC, 0xEFE6,\n    0xEFDA, 0xEFCA, 0xEFB7, 0xEFA2, 0xEF8D, 0xEF79, 0xEF67, 0xEF59,\n    0xEF50, 0xEF4C, 0xE650, 0xE654, 0xE660, 0xE673, 0xE68A, 0xE6A4,\n    0xE6C0, 0xE6DD, 0xE6F9, 0xE712, 0xE728, 0xE738, 0xE741, 0xE743,\n    0xE73B, 0xE728, 0xE708, 0xE6DB, 0xE69E, 0xE650, 0xE5EF, 0xE57A,\n    0xE4F4, 0xE45D, 0xE3B9, 0xE309, 0xE24F, 0xE18D, 0xE0C5, 0xDFFA,\n    0xDF2C, 0xDE5E, 0xDD93, 0xDCCB, 0xDC09, 0xDB4F, 0xDAA0, 0xD9FC,\n    0xD966, 0xD8E0, 0xD86C, 0xD80B, 0xD7C1, 0xD78E, 0xD775, 0xD77A,\n    0xD79D, 0xD7DB, 0xD833, 0xD8A2, 0xD924, 0xD9B7, 0xDA59, 0xDB08,\n    0xDBC0, 0xDC7E, 0xDD42, 0xDE06, 0xDECB, 0xDF8B, 0xE046, 0xE0F8,\n    0xE19F, 0xE237, 0xE2C0, 0xE335, 0xE395, 0xE3DD, 0xE40A, 0xE41A,\n    0x21EE, 0x21EC, 0x21E5, 0x21DA, 0x21CD, 0x21BE, 0x21AE, 0x219D,\n    0x218D, 0x217E, 0x2172, 0x2169, 0x2163, 0x2162, 0x2167, 0x2172,\n    0x2184, 0x219E, 0x21C1, 0x21EE, 0x2223, 0x225E, 0x22A0, 0x22E6,\n    0x2332, 0x2382, 0x23D6, 0x242E, 0x2489, 0x24E7, 0x2547, 0x25A9,\n    0x260C, 0x2670, 0x26D5, 0x273A, 0x279E, 0x2801, 0x2863, 0x28C3,\n    0x2921, 0x297D, 0x29D5, 0x2A29, 0x2A7A, 0x2ACA, 0x2B1E, 0x2B75,\n    0x2BCE, 0x2C29, 0x2C85, 0x2CE2, 0x2D3F, 0x2D9B, 0x2DF6, 0x2E50,\n    0x2EA7, 0x2EFB, 0x2F4C, 0x2F99, 0x2FE1, 0x3024, 0x3062, 0x3099,\n    0x30C9, 0x30F2, 0x3112, 0x312A, 0x3139, 0x313E, 0x91EF, 0x91F4,\n    0x9203, 0x9219, 0x9235, 0x9255, 0x9277, 0x929A, 0x92BB, 0x92DA,\n    0x92F4, 0x9308, 0x9313, 0x9315, 0x930B, 0x92F4, 0x92CE, 0x9297,\n    0x924D, 0x91EF, 0x917A, 0x90EE, 0x904C, 0x8F98, 0x8ED3, 0x8E00,\n    0x8D21, 0x8C39, 0x8B49, 0x8A55, 0x895F, 0x8868, 0x8773, 0x8683,\n    0x859A, 0x84BA, 0x83E5, 0x831F, 0x8268, 0x81C4, 0x8135, 0x80BD,\n    0x805F, 0x801C, 0x7FF4, 0x7FF2, 0x8015, 0x8055, 0x80B2, 0x8128,\n    0x81B6, 0x8257, 0x8309, 0x83C9, 0x8495, 0x8568, 0x8641, 0x871C,\n    0x87F7, 0x88CD, 0x899E, 0x8A65, 0x8B1F, 0x8BCA, 0x8C63, 0x8CE7,\n    0x8D52, 0x8DA3, 0x8DD5, 0x8DE7, 0xFFF4, 0xFFF4, 0xFFF2, 0xFFF1,\n    0xFFEE, 0xFFEC, 0xFFE9, 0xFFE6, 0xFFE3, 0xFFE0, 0xFFDE, 0xFFDD,\n    0xFFDC, 0xFFDC, 0xFFDC, 0xFFDE, 0xFFE2, 0xFFE6, 0xFFEC, 0xFFF4,\n    0xFFFE, 0x0009, 0x0016, 0x0026, 0x0037, 0x0049, 0x005C, 0x0070,\n    0x0084, 0x0099, 0x00AE, 0x00C3, 0x00D8, 0x00EC, 0x0100, 0x0113,\n    0x0125, 0x0135, 0x0144, 0x0151, 0x015C, 0x0165, 0x016C, 0x0171,\n    0x0172, 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, 0x0172,\n    0x0172, 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, 0x0172,\n    0x0172, 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, 0x0172, 0x0172,\n    0x0172, 0x0172, 0x025C, 0x025C, 0x025C, 0x025D, 0x025E, 0x025F,\n    0x0260, 0x0261, 0x0262, 0x0262, 0x0263, 0x0264, 0x0264, 0x0264,\n    0x0264, 0x0263, 0x0262, 0x0260, 0x025E, 0x025C, 0x0259, 0x0255,\n    0x0250, 0x024B, 0x0246, 0x0240, 0x0239, 0x0233, 0x022C, 0x0225,\n    0x021E, 0x0217, 0x0210, 0x0209, 0x0203, 0x01FD, 0x01F7, 0x01F1,\n    0x01ED, 0x01E8, 0x01E4, 0x01E1, 0x01DF, 0x01DE, 0x01DD, 0x01DD,\n    0x01DD, 0x01DD, 0x01DD, 0x01DD, 0x01DD, 0x01DD, 0x01DD, 0x01DD,\n    0x01DD, 0x01DD, 0x01DD, 0x01DD, 0x01DD, 0x01DD, 0x01DD, 0x01DD,\n    0x01DD, 0x01DD, 0x01DD, 0x01DD, 0x01DD, 0x01DD, 0x01DD, 0x01DD,\n    0xC84A, 0xC842, 0xC82B, 0xC80A, 0xC7DF, 0xC7AD, 0xC779, 0xC743,\n    0xC70F, 0xC6E0, 0xC6B8, 0xC699, 0xC687, 0xC685, 0xC694, 0xC6B8,\n    0xC6F3, 0xC747, 0xC7B9, 0xC84A, 0xC900, 0xC9DC, 0xCADB, 0xCBF9,\n    0xCD31, 0xCE80, 0xCFE2, 0xD153, 0xD2CF, 0xD453, 0xD5D9, 0xD75F,\n    0xD8E1, 0xDA5A, 0xDBC7, 0xDD23, 0xDE6C, 0xDF9C, 0xE0B1, 0xE1A6,\n    0xE277, 0xE320, 0xE39E, 0xE3EC, 0xE407, 0xE407, 0xE407, 0xE407,\n    0xE407, 0xE407, 0xE407, 0xE407, 0xE407, 0xE407, 0xE407, 0xE407,\n    0xE407, 0xE407, 0xE407, 0xE407, 0xE407, 0xE407, 0xE407, 0xE407,\n    0xE407, 0xE407, 0xE407, 0xE407, 0xE407, 0xE407, 0x390A, 0x3914,\n    0x3932, 0x3960, 0x3999, 0x39DB, 0x3A21, 0x3A69, 0x3AAE, 0x3AEE,\n    0x3B23, 0x3B4C, 0x3B64, 0x3B67, 0x3B53, 0x3B23, 0x3AD4, 0x3A63,\n    0x39CB, 0x390A, 0x3822, 0x371B, 0x35F8, 0x34BB, 0x3366, 0x31FC,\n    0x307F, 0x2EF2, 0x2D57, 0x2BB1, 0x2A01, 0x284B, 0x2691, 0x24D5,\n    0x2319, 0x2160, 0x1FAD, 0x1E01, 0x1C60, 0x1ACB, 0x1946, 0x17D2,\n    0x1671, 0x1527, 0x13F6, 0x12D1, 0x11AB, 0x1085, 0x0F5F, 0x0E3C,\n    0x0D1C, 0x0C01, 0x0AEB, 0x09DB, 0x08D4, 0x07D5, 0x06E0, 0x05F7,\n    0x051A, 0x044A, 0x0388, 0x02D6, 0x0235, 0x01A6, 0x0129, 0x00C1,\n    0x006E, 0x0031, 0x000C, 0x0000, 0xFD1E, 0xFD19, 0xFD0B, 0xFCF7,\n    0xFCDC, 0xFCBF, 0xFC9E, 0xFC7E, 0xFC5E, 0xFC41, 0xFC29, 0xFC17,\n    0xFC0C, 0xFC0A, 0xFC13, 0xFC29, 0xFC4D, 0xFC81, 0xFCC6, 0xFD1E,\n    0xFD89, 0xFE06, 0xFE92, 0xFF2C, 0xFFD4, 0x0085, 0x0141, 0x0205,\n    0x02CF, 0x039F, 0x0471, 0x0546, 0x061B, 0x06EE, 0x07BF, 0x088C,\n    0x0952, 0x0A12, 0x0AC8, 0x0B74, 0x0C13, 0x0CA5, 0x0D28, 0x0D9A,\n    0x0DFA, 0x0E4A, 0x0E8D, 0x0EC3, 0x0EEE, 0x0F0F, 0x0F26, 0x0F34,\n    0x0F3A, 0x0F39, 0x0F31, 0x0F24, 0x0F13, 0x0EFD, 0x0EE4, 0x0ECA,\n    0x0EAD, 0x0E91, 0x0E74, 0x0E59, 0x0E3F, 0x0E29, 0x0E16, 0x0E07,\n    0x0DFE, 0x0DFA, 0x0CB4, 0x0CB0, 0x0CA5, 0x0C95, 0x0C81, 0x0C69,\n    0x0C50, 0x0C37, 0x0C1E, 0x0C07, 0x0BF4, 0x0BE6, 0x0BDD, 0x0BDC,\n    0x0BE3, 0x0BF4, 0x0C10, 0x0C39, 0x0C6F, 0x0CB4, 0x0D08, 0x0D69,\n    0x0DD7, 0x0E50, 0x0ED2, 0x0F5E, 0x0FF1, 0x108A, 0x1128, 0x11CA,\n    0x126F, 0x1315, 0x13BC, 0x1461, 0x1505, 0x15A5, 0x1640, 0x16D6,\n    0x1764, 0x17EA, 0x1867, 0x18D9, 0x1940, 0x1999, 0x19E4, 0x1A22,\n    0x1A57, 0x1A81, 0x1AA3, 0x1ABC, 0x1ACE, 0x1AD9, 0x1ADE, 0x1ADD,\n    0x1AD7, 0x1ACD, 0x1ABF, 0x1AAF, 0x1A9B, 0x1A86, 0x1A70, 0x1A5A,\n    0x1A44, 0x1A2E, 0x1A1A, 0x1A09, 0x19FA, 0x19EE, 0x19E7, 0x19E4,\n    0xA8B7, 0xA8B7, 0xA8B5, 0xA8B2, 0xA8AF, 0xA8AB, 0xA8A6, 0xA8A2,\n    0xA89E, 0xA89A, 0xA897, 0xA895, 0xA893, 0xA893, 0xA894, 0xA897,\n    0xA89C, 0xA8A3, 0xA8AC, 0xA8B7, 0xA8C5, 0xA8D6, 0xA8E8, 0xA8FD,\n    0xA913, 0xA92A, 0xA943, 0xA95D, 0xA978, 0xA993, 0xA9AF, 0xA9CB,\n    0xA9E7, 0xAA03, 0xAA1F, 0xAA3A, 0xAA54, 0xAA6D, 0xAA85, 0xAA9C,\n    0xAAB1, 0xAAC4, 0xAAD6, 0xAAE5, 0xAAF1, 0xAAFC, 0xAB05, 0xAB0C,\n    0xAB12, 0xAB16, 0xAB19, 0xAB1B, 0xAB1C, 0xAB1B, 0xAB1A, 0xAB19,\n    0xAB16, 0xAB14, 0xAB10, 0xAB0D, 0xAB09, 0xAB05, 0xAB01, 0xAAFE,\n    0xAAFA, 0xAAF7, 0xAAF5, 0xAAF3, 0xAAF2, 0xAAF1, 0x000C, 0xFEDF,\n    0xE0A3, 0x3972, 0x397E, 0x399F, 0x39D1, 0x3A11, 0x3A5A, 0x3AA8,\n    0x3AF8, 0x3B45, 0x3B8B, 0x3BC7, 0x3BF4, 0x3C0E, 0x3C12, 0x3BFC,\n    0x3BC7, 0x3B6F, 0x3AF1, 0x3A49, 0x3972, 0x3864, 0x371D, 0x35A3,\n    0x33FB, 0x322C, 0x303B, 0x2E2E, 0x2C0A, 0x29D7, 0x2798, 0x2554,\n    0x2312, 0x20D6, 0x1EA6, 0x1C89, 0x1A84, 0x189D, 0x16D9, 0x153F,\n    0x13D4, 0x129E, 0x11A2, 0x10E8, 0x1074, 0x104C, 0x104C, 0x104C,\n    0x104C, 0x104C, 0x104C, 0x104C, 0x104C, 0x104C, 0x104C, 0x104C,\n    0x104C, 0x104C, 0x104C, 0x104C, 0x104C, 0x104C, 0x104C, 0x104C,\n    0x104C, 0x104C, 0x104C, 0x104C, 0x104C, 0x104C, 0x104C, 0xF24D,\n    0xF24C, 0xF24A, 0xF246, 0xF242, 0xF23D, 0xF237, 0xF232, 0xF22D,\n    0xF228, 0xF224, 0xF221, 0xF21F, 0xF21F, 0xF220, 0xF224, 0xF22A,\n    0xF232, 0xF23E, 0xF24D, 0xF25F, 0xF276, 0xF28F, 0xF2AC, 0xF2CC,\n    0xF2EE, 0xF312, 0xF338, 0xF35E, 0xF386, 0xF3AE, 0xF3D5, 0xF3FC,\n    0xF423, 0xF448, 0xF46B, 0xF48D, 0xF4AC, 0xF4C8, 0xF4E1, 0xF4F6,\n    0xF507, 0xF514, 0xF51C, 0xF51F, 0xF51F, 0xF51F, 0xF51F, 0xF51F,\n    0xF51F, 0xF51F, 0xF51F, 0xF51F, 0xF51F, 0xF51F, 0xF51F, 0xF51F,\n    0xF51F, 0xF51F, 0xF51F, 0xF51F, 0xF51F, 0xF51F, 0xF51F, 0xF51F,\n    0xF51F, 0xF51F, 0xF51F, 0xF51F, 0xF51F, 0xF323, 0xF320, 0xF317,\n    0xF309, 0xF2F7, 0xF2E3, 0xF2CD, 0xF2B7, 0xF2A1, 0xF28E, 0xF27D,\n    0xF270, 0xF269, 0xF268, 0xF26E, 0xF27D, 0xF295, 0xF2B8, 0xF2E7,\n    0xF323, 0xF36E, 0xF3C9, 0xF433, 0xF4A9, 0xF52A, 0xF5B4, 0xF647,\n    0xF6DF, 0xF77C, 0xF81C, 0xF8BE, 0xF95F, 0xF9FE, 0xFA9A, 0xFB31,\n    0xFBC1, 0xFC48, 0xFCC6, 0xFD39, 0xFD9E, 0xFDF4, 0xFE3A, 0xFE6E,\n    0xFE8E, 0xFE99, 0xFE99, 0xFE99, 0xFE99, 0xFE99, 0xFE99, 0xFE99,\n    0xFE99, 0xFE99, 0xFE99, 0xFE99, 0xFE99, 0xFE99, 0xFE99, 0xFE99,\n    0xFE99, 0xFE99, 0xFE99, 0xFE99, 0xFE99, 0xFE99, 0xFE99, 0xFE99,\n    0xFE99, 0xFE99, 0xFE99, 0xAFC8, 0xAFCA, 0xAFD3, 0xAFDF, 0xAFEE,\n    0xB000, 0xB013, 0xB026, 0xB039, 0xB04A, 0xB059, 0xB064, 0xB06A,\n    0xB06B, 0xB066, 0xB059, 0xB043, 0xB025, 0xAFFC, 0xAFC8, 0xAF86,\n    0xAF36, 0xAEDA, 0xAE73, 0xAE03, 0xAD8A, 0xAD0A, 0xAC85, 0xABFC,\n    0xAB70, 0xAAE3, 0xAA56, 0xA9CB, 0xA943, 0xA8C0, 0xA842, 0xA7CB,\n    0xA75D, 0xA6FA, 0xA6A1, 0xA656, 0xA619, 0xA5EB, 0xA5CF, 0xA5C5,\n    0xA5C5, 0xA5C5, 0xA5C5, 0xA5C5, 0xA5C5, 0xA5C5, 0xA5C5, 0xA5C5,\n    0xA5C5, 0xA5C5, 0xA5C5, 0xA5C5, 0xA5C5, 0xA5C5, 0xA5C5, 0xA5C5,\n    0xA5C5, 0xA5C5, 0xA5C5, 0xA5C5, 0xA5C5, 0xA5C5, 0xA5C5, 0xA5C5,\n    0xA5C5, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171,\n    0xBF5F, 0xEE88, 0xEE86, 0xEE83, 0xEE7E, 0xEE77, 0xEE6F, 0xEE67,\n    0xEE5F, 0xEE57, 0xEE50, 0xEE4A, 0xEE45, 0xEE42, 0xEE42, 0xEE44,\n    0xEE4A, 0xEE53, 0xEE60, 0xEE71, 0xEE88, 0xEE93, 0xEE89, 0xEE6F,\n    0xEE4C, 0xEE27, 0xEE06, 0xEDF0, 0xEDEB, 0xEDFE, 0xEE30, 0xEE86,\n    0xEF08, 0xEFBC, 0xF0A9, 0xF1D5, 0xF38F, 0xF605, 0xF909, 0xFC6F,\n    0x000A, 0x03AF, 0x0730, 0x0A60, 0x0D14, 0x0F1F, 0x10C6, 0x126F,\n    0x1417, 0x15BD, 0x175F, 0x18FC, 0x1A92, 0x1C1F, 0x1DA3, 0x1F1B,\n    0x2086, 0x21E2, 0x232F, 0x2469, 0x2590, 0x26A3, 0x279F, 0x2884,\n    0x294F, 0x29FF, 0x2A92, 0x2B07, 0x2B5D, 0x2B92, 0x2BA4, 0xF84D,\n    0xF84D, 0xF84E, 0xF850, 0xF852, 0xF855, 0xF858, 0xF85B, 0xF85D,\n    0xF860, 0xF862, 0xF863, 0xF864, 0xF864, 0xF864, 0xF862, 0xF85F,\n    0xF85A, 0xF854, 0xF84D, 0xF844, 0xF83B, 0xF831, 0xF826, 0xF81A,\n    0xF80F, 0xF802, 0xF7F5, 0xF7E8, 0xF7DB, 0xF7CD, 0xF7BE, 0xF7B0,\n    0xF7A1, 0xF792, 0xF782, 0xF773, 0xF763, 0xF754, 0xF744, 0xF734,\n    0xF724, 0xF715, 0xF705, 0xF6F6, 0xF6E7, 0xF6D8, 0xF6C9, 0xF6BA,\n    0xF6AC, 0xF69E, 0xF691, 0xF684, 0xF677, 0xF66B, 0xF65F, 0xF654,\n    0xF64A, 0xF640, 0xF637, 0xF62F, 0xF627, 0xF620, 0xF61A, 0xF615,\n    0xF610, 0xF60D, 0xF60A, 0xF609, 0xF608, 0xF748, 0xF747, 0xF746,\n    0xF744, 0xF741, 0xF73E, 0xF73B, 0xF737, 0xF734, 0xF731, 0xF72E,\n    0xF72C, 0xF72B, 0xF72B, 0xF72C, 0xF72E, 0xF732, 0xF737, 0xF73F,\n    0xF748, 0xF752, 0xF75E, 0xF76A, 0xF777, 0xF785, 0xF793, 0xF7A2,\n    0xF7B1, 0xF7C1, 0xF7D2, 0xF7E3, 0xF7F4, 0xF806, 0xF818, 0xF82A,\n    0xF83C, 0xF84F, 0xF862, 0xF875, 0xF888, 0xF89B, 0xF8AE, 0xF8C1,\n    0xF8D3, 0xF8E6, 0xF8F8, 0xF90B, 0xF91C, 0xF92E, 0xF93F, 0xF950,\n    0xF960, 0xF970, 0xF97F, 0xF98E, 0xF99C, 0xF9A9, 0xF9B6, 0xF9C1,\n    0xF9CC, 0xF9D7, 0xF9E0, 0xF9E8, 0xF9F0, 0xF9F6, 0xF9FB, 0xFA00,\n    0xFA03, 0xFA04, 0xFA05, 0xFBE9, 0xFBE6, 0xFBE0, 0xFBD6, 0xFBCA,\n    0xFBBC, 0xFBAC, 0xFB9D, 0xFB8E, 0xFB80, 0xFB75, 0xFB6C, 0xFB67,\n    0xFB66, 0xFB6A, 0xFB75, 0xFB86, 0xFB9E, 0xFBBF, 0xFBE9, 0xFC19,\n    0xFC4D, 0xFC85, 0xFCC1, 0xFCFF, 0xFD40, 0xFD85, 0xFDCC, 0xFE15,\n    0xFE60, 0xFEAE, 0xFEFD, 0xFF4E, 0xFFA0, 0xFFF4, 0x0048, 0x009D,\n    0x00F3, 0x014A, 0x01A0, 0x01F7, 0x024E, 0x02A4, 0x02FA, 0x034F,\n    0x03A3, 0x03F6, 0x0448, 0x0498, 0x04E7, 0x0533, 0x057E, 0x05C6,\n    0x060C, 0x064F, 0x068F, 0x06CC, 0x0705, 0x073B, 0x076E, 0x079D,\n    0x07C7, 0x07ED, 0x080F, 0x082C, 0x0845, 0x0858, 0x0866, 0x086E,\n    0x0871, 0xF17F, 0xF17C, 0xF171, 0xF162, 0xF14E, 0xF137, 0xF11F,\n    0xF106, 0xF0EF, 0xF0D9, 0xF0C6, 0xF0B8, 0xF0B0, 0xF0AF, 0xF0B6,\n    0xF0C6, 0xF0E1, 0xF109, 0xF13D, 0xF17F, 0xF1CF, 0xF22A, 0xF28F,\n    0xF2FD, 0xF373, 0xF3F0, 0xF474, 0xF4FE, 0xF58D, 0xF61F, 0xF6B5,\n    0xF74C, 0xF7E5, 0xF87F, 0xF918, 0xF9B0, 0xFA46, 0xFAD9, 0xFB68,\n    0xFBF3, 0xFC78, 0xFCF7, 0xFD6E, 0xFDDD, 0xFE43, 0xFEA5, 0xFF06,\n    0xFF66, 0xFFC5, 0x0022, 0x007E, 0x00D8, 0x0130, 0x0185, 0x01D8,\n    0x0227, 0x0273, 0x02BB, 0x02FF, 0x033F, 0x037A, 0x03B0, 0x03E1,\n    0x040C, 0x0431, 0x0451, 0x046A, 0x047C, 0x0487, 0x048B, 0x055D,\n    0x055A, 0x0552, 0x0546, 0x0536, 0x0525, 0x0512, 0x04FE, 0x04EC,\n    0x04DB, 0x04CC, 0x04C1, 0x04BB, 0x04BA, 0x04BF, 0x04CC, 0x04E1,\n    0x0500, 0x0529, 0x055D, 0x059E, 0x05ED, 0x0649, 0x06AF, 0x0720,\n    0x0798, 0x0817, 0x089C, 0x0924, 0x09B0, 0x0A3C, 0x0AC8, 0x0B52,\n    0x0BDA, 0x0C5D, 0x0CDA, 0x0D50, 0x0DBE, 0x0E21, 0x0E79, 0x0EC4,\n    0x0F01, 0x0F2E, 0x0F4B, 0x0F54, 0x0F48, 0x0F26, 0x0EEF, 0x0EA6,\n    0x0E4B, 0x0DE3, 0x0D6D, 0x0CED, 0x0C64, 0x0BD4, 0x0B3F, 0x0AA7,\n    0x0A0E, 0x0976, 0x08E1, 0x0851, 0x07C8, 0x0748, 0x06D2, 0x0669,\n    0x060F, 0x05C5, 0x058F, 0x056C, 0x0560, 0x35C9, 0x35BB, 0x3597,\n    0x355F, 0x3519, 0x34C8, 0x3472, 0x341A, 0x33C5, 0x3377, 0x3335,\n    0x3304, 0x32E6, 0x32E2, 0x32FB, 0x3335, 0x3396, 0x3421, 0x34DB,\n    0x35C9, 0x36E6, 0x382C, 0x3997, 0x3B23, 0x3CCE, 0x3E93, 0x4071,\n    0x4263, 0x4466, 0x4677, 0x4892, 0x4AB5, 0x4CDC, 0x4F04, 0x5129,\n    0x5348, 0x555E, 0x5768, 0x5962, 0x5B49, 0x5D1A, 0x5ED1, 0x606B,\n    0x61E5, 0x633C, 0x647C, 0x65B4, 0x66E2, 0x6808, 0x6924, 0x6A36,\n    0x6B3D, 0x6C3A, 0x6D2C, 0x6E12, 0x6EEC, 0x6FB9, 0x707A, 0x712E,\n    0x71D4, 0x726C, 0x72F6, 0x7371, 0x73DD, 0x743A, 0x7486, 0x74C3,\n    0x74EE, 0x7508, 0x7511,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_A7.inc.c",
    "content": "static const struct Animation anim_A7[] = {\n    1,\n    189,\n    0,\n    0,\n    0x28,\n    ANIMINDEX_NUMPARTS(anim_A7_indices),\n    anim_A7_values,\n    anim_A7_indices,\n    0,\n};\n\n\nstatic const u16 anim_A7_indices[] = {\n    0x0001, 0x0000, 0x0028, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0029, 0x0001, 0x0000,\n    0x0028, 0x0582, 0x0028, 0x05AA, 0x0028, 0x05D2,\n    0x0028, 0x050A, 0x0028, 0x0532, 0x0028, 0x055A,\n    0x0028, 0x0492, 0x0028, 0x04BA, 0x0028, 0x04E2,\n    0x0001, 0x048E, 0x0001, 0x048F, 0x0001, 0x0490,\n    0x0028, 0x00CA, 0x0028, 0x00F2, 0x0028, 0x011A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x00A2,\n    0x0028, 0x002A, 0x0028, 0x0052, 0x0028, 0x007A,\n    0x0001, 0x048A, 0x0001, 0x048B, 0x0001, 0x048C,\n    0x0028, 0x01E2, 0x0028, 0x020A, 0x0028, 0x0232,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x01BA,\n    0x0028, 0x0142, 0x0028, 0x016A, 0x0028, 0x0192,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x048D,\n    0x0028, 0x0412, 0x0028, 0x043A, 0x0028, 0x0462,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x03EA,\n    0x0028, 0x0372, 0x0028, 0x039A, 0x0028, 0x03C2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0491,\n    0x0028, 0x02FA, 0x0028, 0x0322, 0x0028, 0x034A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x02D2,\n    0x0028, 0x025A, 0x0028, 0x0282, 0x0028, 0x02AA,\n};\n\nstatic const s16 anim_A7_values[] = {\n    0x0000, 0x00BD, 0x00BD, 0x00BD, 0x00BD, 0x00BD, 0x00BD, 0x00BD,\n    0x00BD, 0x00BD, 0x00BD, 0x00BD, 0x00BD, 0x00BD, 0x00BD, 0x00BD,\n    0x00BD, 0x00BD, 0x00BD, 0x00BD, 0x00BD, 0x00BD, 0x00BD, 0x00BD,\n    0x00BD, 0x00BD, 0x00BD, 0x00BD, 0x00BD, 0x00BD, 0x00BD, 0x00BD,\n    0x00BD, 0x00BD, 0x00BD, 0x00BD, 0x00BD, 0x00BD, 0x00BD, 0x00BD,\n    0x00BD, 0x3FFF, 0xFF12, 0xFF8A, 0xFFF7, 0x0056, 0x00A9, 0x00F2,\n    0x0132, 0x016B, 0x019C, 0x01C9, 0x01F2, 0x0219, 0x023F, 0x0266,\n    0x028E, 0x02BA, 0x02E6, 0x030E, 0x0331, 0x0350, 0x036B, 0x0382,\n    0x0394, 0x03A1, 0x03AA, 0x03AF, 0x03B1, 0x03AF, 0x03AB, 0x03A5,\n    0x039D, 0x0394, 0x038B, 0x0381, 0x0377, 0x036E, 0x0367, 0x0360,\n    0x035C, 0x035B, 0xF93F, 0xF980, 0xF9D9, 0xFA5C, 0xFB01, 0xFBBC,\n    0xFC85, 0xFD53, 0xFE1B, 0xFED4, 0xFF75, 0xFFF4, 0x0047, 0x0065,\n    0x0045, 0xFFDE, 0xFEBA, 0xFCA3, 0xF9E3, 0xF6CA, 0xF3A3, 0xF0BD,\n    0xEE65, 0xECE7, 0xEC92, 0xED37, 0xEE69, 0xF00F, 0xF215, 0xF464,\n    0xF6E6, 0xF985, 0xFC2A, 0xFEBF, 0x012E, 0x0360, 0x0541, 0x06B9,\n    0x07B1, 0x0815, 0xF02C, 0xF06F, 0xF0AD, 0xF0E7, 0xF11C, 0xF14C,\n    0xF178, 0xF19E, 0xF1C1, 0xF1DE, 0xF1F7, 0xF20C, 0xF21C, 0xF228,\n    0xF22F, 0xF232, 0xF223, 0xF1FA, 0xF1BF, 0xF17A, 0xF130, 0xF0EB,\n    0xF0B1, 0xF08B, 0xF07E, 0xF087, 0xF09C, 0xF0B9, 0xF0DE, 0xF109,\n    0xF138, 0xF16A, 0xF19C, 0xF1CD, 0xF1FC, 0xF226, 0xF24A, 0xF266,\n    0xF279, 0xF280, 0xD220, 0xD1F7, 0xD1B6, 0xD14F, 0xD0CC, 0xD037,\n    0xCF9A, 0xCEFF, 0xCE70, 0xCDF8, 0xCDA0, 0xCD73, 0xCD7B, 0xCDC1,\n    0xCE50, 0xCF32, 0xD0E1, 0xD39E, 0xD719, 0xDB04, 0xDF10, 0xE2EE,\n    0xE64F, 0xE8E6, 0xEA62, 0xEB04, 0xEB49, 0xEB3C, 0xEAEA, 0xEA5F,\n    0xE9A7, 0xE8CE, 0xE7E0, 0xE6EA, 0xE5F7, 0xE513, 0xE44B, 0xE3AB,\n    0xE33F, 0xE314, 0xFC62, 0xFD1F, 0xFDAD, 0xFE26, 0xFE8C, 0xFEDF,\n    0xFF1F, 0xFF4D, 0xFF6B, 0xFF78, 0xFF75, 0xFF63, 0xFF43, 0xFF14,\n    0xFED9, 0xFE91, 0xFDE4, 0xFCA1, 0xFB00, 0xF93C, 0xF78C, 0xF62B,\n    0xF552, 0xF53A, 0xF61D, 0xF7ED, 0xFA61, 0xFD5E, 0x00C4, 0x047A,\n    0x0861, 0x0C5D, 0x1050, 0x141D, 0x17A7, 0x1AD3, 0x1D82, 0x1F97,\n    0x20F6, 0x2182, 0xD179, 0xD1A4, 0xD1B3, 0xD1A4, 0xD17B, 0xD13D,\n    0xD0EF, 0xD096, 0xD037, 0xCFD7, 0xCF7A, 0xCF26, 0xCEE0, 0xCEAC,\n    0xCE8F, 0xCE8E, 0xCEB4, 0xCF01, 0xCF6F, 0xCFF6, 0xD08D, 0xD12E,\n    0xD1D1, 0xD26F, 0xD2FF, 0xD38F, 0xD430, 0xD4DC, 0xD591, 0xD64B,\n    0xD706, 0xD7BD, 0xD86E, 0xD914, 0xD9AC, 0xDA31, 0xDAA1, 0xDAF6,\n    0xDB2D, 0xDB43, 0xC4E3, 0xC40D, 0xC325, 0xC1FD, 0xC09F, 0xBF19,\n    0xBD75, 0xBBBF, 0xBA02, 0xB84B, 0xB6A4, 0xB51A, 0xB3B7, 0xB287,\n    0xB197, 0xB0F1, 0xB0FC, 0xB1E6, 0xB368, 0xB537, 0xB70A, 0xB899,\n    0xB99B, 0xB9C6, 0xB8D2, 0xB6D4, 0xB429, 0xB0ED, 0xAD41, 0xA942,\n    0xA511, 0xA0CB, 0x9C8F, 0x987C, 0x94B2, 0x914D, 0x8E6F, 0x8C34,\n    0x8ABD, 0x8A28, 0xF982, 0xF992, 0xF99C, 0xF9A0, 0xF99D, 0xF996,\n    0xF98A, 0xF97C, 0xF96B, 0xF95A, 0xF948, 0xF937, 0xF929, 0xF91D,\n    0xF915, 0xF912, 0xF913, 0xF915, 0xF918, 0xF91C, 0xF921, 0xF926,\n    0xF92C, 0xF933, 0xF93A, 0xF942, 0xF94A, 0xF952, 0xF95A, 0xF961,\n    0xF969, 0xF970, 0xF977, 0xF97D, 0xF983, 0xF988, 0xF98C, 0xF98F,\n    0xF991, 0xF992, 0x0CAC, 0x0CE2, 0x0D34, 0x0DB3, 0x0E58, 0x0F1A,\n    0x0FF2, 0x10D6, 0x11BE, 0x12A3, 0x137B, 0x143F, 0x14E5, 0x1567,\n    0x15BA, 0x15D8, 0x15CD, 0x15AB, 0x1576, 0x1530, 0x14D9, 0x1474,\n    0x1404, 0x138A, 0x1307, 0x127F, 0x11F3, 0x1164, 0x10D6, 0x1049,\n    0x0FC1, 0x0F3E, 0x0EC2, 0x0E51, 0x0DEB, 0x0D93, 0x0D4B, 0x0D14,\n    0x0CF0, 0x0CE2, 0xE257, 0xE291, 0xE2BC, 0xE2D2, 0xE2D7, 0xE2CC,\n    0xE2B6, 0xE295, 0xE26E, 0xE244, 0xE218, 0xE1EE, 0xE1C8, 0xE1AA,\n    0xE196, 0xE18E, 0xE18F, 0xE193, 0xE199, 0xE1A1, 0xE1AB, 0xE1B6,\n    0xE1C3, 0xE1D1, 0xE1DF, 0xE1EF, 0xE1FF, 0xE20F, 0xE21F, 0xE22F,\n    0xE23E, 0xE24D, 0xE25B, 0xE268, 0xE273, 0xE27D, 0xE285, 0xE28B,\n    0xE28F, 0xE291, 0xD6F0, 0xD6DA, 0xD6EF, 0xD745, 0xD7D4, 0xD891,\n    0xD972, 0xDA6F, 0xDB7C, 0xDC91, 0xDDA4, 0xDEAA, 0xDF9B, 0xE06B,\n    0xE113, 0xE187, 0xE1DA, 0xE226, 0xE26A, 0xE2A6, 0xE2DD, 0xE30C,\n    0xE336, 0xE35B, 0xE37A, 0xE394, 0xE3AA, 0xE3BC, 0xE3CA, 0xE3D5,\n    0xE3DD, 0xE3E3, 0xE3E6, 0xE3E8, 0xE3E8, 0xE3E8, 0xE3E7, 0xE3E5,\n    0xE3E4, 0xE3E4, 0x0A22, 0x0BC6, 0x0D94, 0x0FBB, 0x122B, 0x14D9,\n    0x17B6, 0x1AB7, 0x1DCD, 0x20EC, 0x2406, 0x270F, 0x29F8, 0x2CB5,\n    0x2F39, 0x3177, 0x3364, 0x3508, 0x366D, 0x379D, 0x38A2, 0x3989,\n    0x3A5A, 0x3B20, 0x3BE6, 0x3CB1, 0x3D7D, 0x3E47, 0x3F0E, 0x3FCF,\n    0x4089, 0x4138, 0x41DB, 0x4270, 0x42F4, 0x4366, 0x43C3, 0x4409,\n    0x4436, 0x4447, 0x2A57, 0x29C2, 0x291B, 0x284F, 0x2765, 0x2664,\n    0x2553, 0x2436, 0x2316, 0x21F8, 0x20E3, 0x1FDE, 0x1EEF, 0x1E1B,\n    0x1D6B, 0x1CE4, 0x1C7B, 0x1C29, 0x1BF6, 0x1BEE, 0x1C1A, 0x1C85,\n    0x1D39, 0x1E3F, 0x1FA3, 0x2176, 0x23B4, 0x264B, 0x2925, 0x2C2C,\n    0x2F4E, 0x3275, 0x358C, 0x387F, 0x3B3A, 0x3DA7, 0x3FB2, 0x4146,\n    0x424F, 0x42B9, 0xD3A6, 0xD5E7, 0xD831, 0xDAA5, 0xDD3A, 0xDFE5,\n    0xE29F, 0xE55D, 0xE816, 0xEAC0, 0xED53, 0xEFC3, 0xF209, 0xF41A,\n    0xF5ED, 0xF778, 0xF88C, 0xF912, 0xF925, 0xF8E0, 0xF85D, 0xF7B9,\n    0xF70D, 0xF675, 0xF60D, 0xF5BD, 0xF560, 0xF4F8, 0xF488, 0xF412,\n    0xF39A, 0xF323, 0xF2AE, 0xF240, 0xF1DB, 0xF181, 0xF135, 0xF0FB,\n    0xF0D5, 0xF0C6, 0xFFF0, 0xFFF2, 0xFFF4, 0xFFF7, 0xFFFB, 0xFFFF,\n    0x0002, 0x0007, 0x000C, 0x0011, 0x0017, 0x001D, 0x0024, 0x002A,\n    0x0031, 0x0038, 0x003E, 0x0045, 0x004C, 0x0053, 0x005A, 0x0061,\n    0x0068, 0x006F, 0x0076, 0x007C, 0x0082, 0x0088, 0x008E, 0x0093,\n    0x0098, 0x009D, 0x00A1, 0x00A5, 0x00A8, 0x00AB, 0x00AD, 0x00AE,\n    0x00AF, 0x00B0, 0x025C, 0x025C, 0x025C, 0x025B, 0x025B, 0x025A,\n    0x0259, 0x0259, 0x0258, 0x0257, 0x0257, 0x0256, 0x0255, 0x0254,\n    0x0253, 0x0252, 0x0251, 0x0250, 0x024F, 0x024E, 0x024D, 0x024C,\n    0x024C, 0x024B, 0x024A, 0x0249, 0x0248, 0x0247, 0x0246, 0x0246,\n    0x0245, 0x0244, 0x0244, 0x0243, 0x0243, 0x0242, 0x0242, 0x0242,\n    0x0242, 0x0242, 0xC825, 0xC84A, 0xC875, 0xC8AA, 0xC8E8, 0xC92D,\n    0xC97A, 0xC9CE, 0xCA28, 0xCA88, 0xCAED, 0xCB57, 0xCBC5, 0xCC36,\n    0xCCAB, 0xCD22, 0xCD9A, 0xCE14, 0xCE8F, 0xCF0A, 0xCF84, 0xCFFD,\n    0xD075, 0xD0EB, 0xD15E, 0xD1CE, 0xD23A, 0xD2A1, 0xD304, 0xD361,\n    0xD3B8, 0xD408, 0xD452, 0xD493, 0xD4CC, 0xD4FC, 0xD523, 0xD540,\n    0xD552, 0xD559, 0x34BE, 0x344A, 0x3382, 0x322B, 0x305D, 0x2E2C,\n    0x2BB2, 0x2903, 0x2637, 0x2365, 0x20A2, 0x1E07, 0x1BA9, 0x199F,\n    0x1800, 0x16E3, 0x161C, 0x1571, 0x14DF, 0x1465, 0x1402, 0x13B4,\n    0x1378, 0x134E, 0x1333, 0x1326, 0x1326, 0x1330, 0x1343, 0x135E,\n    0x137E, 0x13A1, 0x13C7, 0x13EE, 0x1413, 0x1436, 0x1454, 0x146C,\n    0x147C, 0x1482, 0x11AB, 0x11A5, 0x1190, 0x116A, 0x1135, 0x10F0,\n    0x109D, 0x103C, 0x0FD0, 0x0F58, 0x0ED6, 0x0E4B, 0x0DB7, 0x0D1C,\n    0x0C7A, 0x0BD3, 0x0B27, 0x0A78, 0x09C6, 0x0913, 0x085F, 0x07AB,\n    0x06F8, 0x0647, 0x059A, 0x04F1, 0x044C, 0x03AE, 0x0317, 0x0288,\n    0x0201, 0x0185, 0x0113, 0x00AD, 0x0054, 0x0009, 0xFFCD, 0xFFA0,\n    0xFF83, 0xFF78, 0x146B, 0x147F, 0x148A, 0x148D, 0x1488, 0x147C,\n    0x1469, 0x144F, 0x142F, 0x140A, 0x13E0, 0x13B0, 0x137D, 0x1345,\n    0x130A, 0x12CC, 0x128C, 0x1249, 0x1205, 0x11BF, 0x1178, 0x1131,\n    0x10EA, 0x10A4, 0x105E, 0x101A, 0x0FD7, 0x0F97, 0x0F59, 0x0F1E,\n    0x0EE6, 0x0EB3, 0x0E84, 0x0E5A, 0x0E34, 0x0E15, 0x0DFB, 0x0DE8,\n    0x0DDC, 0x0DD8, 0xB747, 0xB77F, 0xB7A7, 0xB7C1, 0xB7CB, 0xB7C8,\n    0xB7B7, 0xB79B, 0xB773, 0xB740, 0xB703, 0xB6BE, 0xB670, 0xB61A,\n    0xB5BE, 0xB55B, 0xB4F4, 0xB487, 0xB418, 0xB3A5, 0xB331, 0xB2BB,\n    0xB244, 0xB1CE, 0xB159, 0xB0E5, 0xB074, 0xB007, 0xAF9E, 0xAF39,\n    0xAEDB, 0xAE83, 0xAE32, 0xADE9, 0xADA9, 0xAD73, 0xAD47, 0xAD26,\n    0xAD11, 0xAD09, 0x0096, 0x0095, 0x0094, 0x0092, 0x0091, 0x008F,\n    0x008D, 0x008A, 0x0088, 0x0085, 0x0082, 0x007F, 0x007C, 0x0079,\n    0x0076, 0x0072, 0x006F, 0x006B, 0x0068, 0x0064, 0x0061, 0x005E,\n    0x005A, 0x0057, 0x0054, 0x0051, 0x004E, 0x004B, 0x0048, 0x0045,\n    0x0043, 0x0041, 0x003E, 0x003D, 0x003B, 0x003A, 0x0039, 0x0038,\n    0x0037, 0x0037, 0xFF09, 0xFF09, 0xFF08, 0xFF08, 0xFF07, 0xFF06,\n    0xFF06, 0xFF05, 0xFF04, 0xFF03, 0xFF02, 0xFF00, 0xFEFF, 0xFEFE,\n    0xFEFD, 0xFEFB, 0xFEFA, 0xFEF9, 0xFEF7, 0xFEF6, 0xFEF5, 0xFEF3,\n    0xFEF2, 0xFEF1, 0xFEF0, 0xFEEE, 0xFEED, 0xFEEC, 0xFEEB, 0xFEEA,\n    0xFEE9, 0xFEE8, 0xFEE7, 0xFEE7, 0xFEE6, 0xFEE6, 0xFEE5, 0xFEE5,\n    0xFEE5, 0xFEE5, 0xCC1A, 0xCC42, 0xCC72, 0xCCAC, 0xCCEF, 0xCD3B,\n    0xCD8F, 0xCDEA, 0xCE4D, 0xCEB5, 0xCF24, 0xCF98, 0xD010, 0xD08C,\n    0xD10B, 0xD18D, 0xD210, 0xD296, 0xD31C, 0xD3A2, 0xD427, 0xD4AC,\n    0xD52F, 0xD5AF, 0xD62D, 0xD6A7, 0xD71D, 0xD78E, 0xD7FA, 0xD85F,\n    0xD8BE, 0xD916, 0xD966, 0xD9AE, 0xD9EC, 0xDA21, 0xDA4B, 0xDA6A,\n    0xDA7E, 0xDA86, 0x3C34, 0x3BE4, 0x3B5B, 0x3A72, 0x3938, 0x37BC,\n    0x360D, 0x3439, 0x3251, 0x3063, 0x2E7D, 0x2CB0, 0x2B0B, 0x299B,\n    0x2871, 0x279B, 0x26FC, 0x266C, 0x25EA, 0x2576, 0x250E, 0x24B2,\n    0x2461, 0x241B, 0x23DF, 0x23AC, 0x2381, 0x235E, 0x2342, 0x232C,\n    0x231C, 0x2310, 0x2308, 0x2304, 0x2303, 0x2303, 0x2305, 0x2307,\n    0x2308, 0x2309, 0xF167, 0xF101, 0xF0AB, 0xF062, 0xF027, 0xEFF9,\n    0xEFD7, 0xEFC0, 0xEFB4, 0xEFB2, 0xEFBA, 0xEFCA, 0xEFE3, 0xF003,\n    0xF02A, 0xF058, 0xF08B, 0xF0C3, 0xF0FF, 0xF140, 0xF183, 0xF1C9,\n    0xF211, 0xF25A, 0xF2A3, 0xF2EC, 0xF335, 0xF37D, 0xF3C2, 0xF405,\n    0xF444, 0xF480, 0xF4B7, 0xF4E9, 0xF515, 0xF53B, 0xF55A, 0xF571,\n    0xF580, 0xF585, 0xE5C0, 0xE5BB, 0xE5C1, 0xE5D1, 0xE5ED, 0xE612,\n    0xE640, 0xE677, 0xE6B6, 0xE6FC, 0xE749, 0xE79D, 0xE7F6, 0xE854,\n    0xE8B6, 0xE91C, 0xE985, 0xE9F1, 0xEA5E, 0xEACD, 0xEB3D, 0xEBAC,\n    0xEC1B, 0xEC89, 0xECF5, 0xED5E, 0xEDC4, 0xEE27, 0xEE86, 0xEEDF,\n    0xEF33, 0xEF81, 0xEFC9, 0xF009, 0xF041, 0xF070, 0xF096, 0xF0B2,\n    0xF0C4, 0xF0CB, 0xADD5, 0xAE23, 0xAE59, 0xAE79, 0xAE84, 0xAE7B,\n    0xAE5F, 0xAE31, 0xADF3, 0xADA5, 0xAD48, 0xACDF, 0xAC69, 0xABE8,\n    0xAB5E, 0xAACB, 0xAA31, 0xA990, 0xA8EA, 0xA83F, 0xA792, 0xA6E3,\n    0xA634, 0xA585, 0xA4D7, 0xA42D, 0xA386, 0xA2E4, 0xA249, 0xA1B5,\n    0xA129, 0xA0A7, 0xA030, 0x9FC4, 0x9F66, 0x9F16, 0x9ED5, 0x9EA5,\n    0x9E87, 0x9E7B, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001,\n    0x4171, 0xBF5F, 0x0027, 0x0000, 0xFFBD, 0xFF4C, 0xFEB5, 0xFE01,\n    0xFD36, 0xFC5F, 0xFB82, 0xFAA8, 0xF9D9, 0xF91E, 0xF87E, 0xF801,\n    0xF7B1, 0xF794, 0xF79F, 0xF7BE, 0xF7F0, 0xF832, 0xF884, 0xF8E2,\n    0xF94C, 0xF9BF, 0xFA3A, 0xFABA, 0xFB3E, 0xFBC3, 0xFC49, 0xFCCE,\n    0xFD4E, 0xFDC9, 0xFE3D, 0xFEA8, 0xFF08, 0xFF5A, 0xFF9F, 0xFFD2,\n    0xFFF3, 0x0000, 0x0049, 0x0000, 0xFF82, 0xFEAE, 0xFD92, 0xFC3E,\n    0xFAC2, 0xF92D, 0xF78D, 0xF5F4, 0xF46F, 0xF30E, 0xF1E2, 0xF0F8,\n    0xF060, 0xF02A, 0xF03E, 0xF079, 0xF0D7, 0xF154, 0xF1ED, 0xF29F,\n    0xF365, 0xF43E, 0xF524, 0xF615, 0xF70D, 0xF808, 0xF904, 0xF9FD,\n    0xFAEF, 0xFBD6, 0xFCB0, 0xFD78, 0xFE2C, 0xFEC8, 0xFF48, 0xFFA9,\n    0xFFE8, 0x0000, 0xEF34, 0xEE88, 0xEDB9, 0xECB0, 0xEB7B, 0xEA28,\n    0xE8C8, 0xE768, 0xE617, 0xE4E5, 0xE3DF, 0xE316, 0xE298, 0xE272,\n    0xE2B6, 0xE370, 0xE496, 0xE60A, 0xE7C4, 0xE9BD, 0xEBED, 0xEE4B,\n    0xF0CF, 0xF372, 0xF62B, 0xF8F2, 0xFBBF, 0xFE8A, 0x014A, 0x03FA,\n    0x068F, 0x0902, 0x0B4A, 0x0D60, 0x0F3C, 0x10D6, 0x1225, 0x1321,\n    0x13C3, 0x1402, 0xFF63, 0x0000, 0x00F6, 0x0287, 0x0498, 0x070E,\n    0x09CE, 0x0CBD, 0x0FC1, 0x12BF, 0x159C, 0x183C, 0x1A85, 0x1C5D,\n    0x1DA8, 0x1E4C, 0x1E74, 0x1E61, 0x1E18, 0x1D9F, 0x1CFA, 0x1C2E,\n    0x1B41, 0x1A37, 0x1916, 0x17E2, 0x16A2, 0x1559, 0x140C, 0x12C2,\n    0x117E, 0x1047, 0x0F20, 0x0E10, 0x0D1B, 0x0C45, 0x0B96, 0x0B10,\n    0x0ABA, 0x0A98, 0x004C, 0x0000, 0xFFC2, 0xFF9A, 0xFF86, 0xFF83,\n    0xFF8F, 0xFFA8, 0xFFCA, 0xFFF5, 0x0024, 0x0057, 0x008B, 0x00BD,\n    0x00EB, 0x0112, 0x0138, 0x0163, 0x0192, 0x01C4, 0x01FA, 0x0232,\n    0x026B, 0x02A7, 0x02E3, 0x031F, 0x035B, 0x0396, 0x03D0, 0x0407,\n    0x043C, 0x046E, 0x049C, 0x04C6, 0x04EC, 0x050B, 0x0525, 0x0539,\n    0x0545, 0x054A, 0x0FA7, 0x0F09, 0x0E4F, 0x0D62, 0x0C4B, 0x0B17,\n    0x09CF, 0x087F, 0x0732, 0x05F2, 0x04CB, 0x03C6, 0x02F0, 0x0252,\n    0x01F9, 0x01EE, 0x0222, 0x027D, 0x02FA, 0x0397, 0x044F, 0x051F,\n    0x0604, 0x06F9, 0x07FC, 0x0908, 0x0A1B, 0x0B30, 0x0C43, 0x0D52,\n    0x0E59, 0x0F54, 0x103F, 0x1117, 0x11D8, 0x127F, 0x1309, 0x1370,\n    0x13B3, 0x13CD, 0xFFEF, 0x0000, 0x0014, 0x002B, 0x0044, 0x0060,\n    0x007E, 0x009E, 0x00C0, 0x00E4, 0x0109, 0x0130, 0x0157, 0x0180,\n    0x01A9, 0x01D3, 0x01FD, 0x0228, 0x0253, 0x027D, 0x02A7, 0x02D1,\n    0x02FA, 0x0322, 0x0349, 0x036F, 0x0394, 0x03B7, 0x03D8, 0x03F8,\n    0x0415, 0x0430, 0x0449, 0x045E, 0x0472, 0x0482, 0x048F, 0x0498,\n    0x049E, 0x04A0, 0x0009, 0x0000, 0xFFF5, 0xFFE8, 0xFFDA, 0xFFCB,\n    0xFFBA, 0xFFA8, 0xFF95, 0xFF81, 0xFF6C, 0xFF57, 0xFF41, 0xFF2A,\n    0xFF13, 0xFEFC, 0xFEE4, 0xFECD, 0xFEB5, 0xFE9D, 0xFE86, 0xFE6E,\n    0xFE57, 0xFE41, 0xFE2B, 0xFE16, 0xFE02, 0xFDEE, 0xFDDC, 0xFDCA,\n    0xFDBA, 0xFDAB, 0xFD9D, 0xFD91, 0xFD86, 0xFD7D, 0xFD76, 0xFD71,\n    0xFD6D, 0xFD6C, 0x4515, 0x46AF, 0x485E, 0x4A14, 0x4BD0, 0x4D91,\n    0x4F55, 0x511D, 0x52E7, 0x54B2, 0x567D, 0x5847, 0x5A0E, 0x5BD3,\n    0x5D93, 0x5F4F, 0x6104, 0x62B2, 0x6458, 0x65F5, 0x6788, 0x6910,\n    0x6A8B, 0x6BFA, 0x6D5A, 0x6EAB, 0x6FEB, 0x711B, 0x7238, 0x7342,\n    0x7438, 0x7518, 0x75E3, 0x7696, 0x7730, 0x77B2, 0x7819, 0x7865,\n    0x7894, 0x78A6,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_A8.inc.c",
    "content": "static const struct Animation anim_A8[] = {\n    1,\n    189,\n    0,\n    0,\n    0x32,\n    ANIMINDEX_NUMPARTS(anim_A8_indices),\n    anim_A8_values,\n    anim_A8_indices,\n    0,\n};\n\n\nstatic const u16 anim_A8_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x0771,\n    0x0032, 0x06DB, 0x0032, 0x070D, 0x0032, 0x073F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x06A9,\n    0x0032, 0x0612, 0x0032, 0x0644, 0x0032, 0x0676,\n    0x0032, 0x00CB, 0x0032, 0x00FD, 0x0032, 0x012F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x0099,\n    0x0032, 0x0003, 0x0032, 0x0035, 0x0032, 0x0067,\n    0x0032, 0x057B, 0x0032, 0x05AD, 0x0032, 0x05DF,\n    0x0032, 0x0229, 0x0032, 0x025B, 0x0032, 0x028D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x01F7,\n    0x0032, 0x0161, 0x0032, 0x0193, 0x0032, 0x01C5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0611,\n    0x0032, 0x04E5, 0x0032, 0x0517, 0x0032, 0x0549,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x04B3,\n    0x0032, 0x041D, 0x0032, 0x044F, 0x0032, 0x0481,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x06A8,\n    0x0032, 0x0387, 0x0032, 0x03B9, 0x0032, 0x03EB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x0355,\n    0x0032, 0x02BF, 0x0032, 0x02F1, 0x0032, 0x0323,\n};\n\nstatic const s16 anim_A8_values[] = {\n    0x0000, 0x00BD, 0x3FFF, 0xFF8A, 0xFF8A, 0xFF8A, 0xFF8A, 0xFEE9,\n    0xFD34, 0xFAB6, 0xF7B7, 0xF47F, 0xF159, 0xEE8D, 0xEC63, 0xEB25,\n    0xEB1C, 0xEBD9, 0xECBE, 0xEDC7, 0xEEF2, 0xF03C, 0xF1A2, 0xF323,\n    0xF4BB, 0xF668, 0xF828, 0xF9F7, 0xFBD3, 0xFDBB, 0xFFAA, 0x019E,\n    0x0396, 0x058E, 0x0785, 0x0976, 0x0B60, 0x0D41, 0x0F15, 0x10DA,\n    0x128D, 0x142D, 0x15B5, 0x1725, 0x1878, 0x19AE, 0x1AC2, 0x1BB3,\n    0x1C7E, 0x1D20, 0x1D97, 0x1DE1, 0x1DFA, 0xF980, 0xF980, 0xF980,\n    0xF980, 0xF94C, 0xF8BF, 0xF7F1, 0xF6F9, 0xF5EC, 0xF4E3, 0xF3F5,\n    0xF337, 0xF2C2, 0xF2AC, 0xF2D3, 0xF304, 0xF340, 0xF385, 0xF3D3,\n    0xF428, 0xF485, 0xF4E9, 0xF553, 0xF5C2, 0xF635, 0xF6AD, 0xF728,\n    0xF7A5, 0xF824, 0xF8A4, 0xF925, 0xF9A5, 0xFA25, 0xFAA3, 0xFB1E,\n    0xFB97, 0xFC0C, 0xFC7C, 0xFCE8, 0xFD4E, 0xFDAD, 0xFE05, 0xFE56,\n    0xFE9E, 0xFEDC, 0xFF11, 0xFF3B, 0xFF5B, 0xFF6E, 0xFF74, 0xF06F,\n    0xF06F, 0xF06F, 0xF06F, 0xF01F, 0xEF47, 0xEE07, 0xEC81, 0xEAD7,\n    0xE92A, 0xE79C, 0xE64E, 0xE562, 0xE4F9, 0xE4E2, 0xE4D6, 0xE4D3,\n    0xE4D9, 0xE4E8, 0xE4FF, 0xE51D, 0xE542, 0xE56E, 0xE59F, 0xE5D5,\n    0xE610, 0xE64F, 0xE692, 0xE6D8, 0xE720, 0xE76A, 0xE7B5, 0xE801,\n    0xE84D, 0xE899, 0xE8E5, 0xE92E, 0xE976, 0xE9BB, 0xE9FD, 0xEA3B,\n    0xEA75, 0xEAAB, 0xEADB, 0xEB05, 0xEB29, 0xEB45, 0xEB5B, 0xEB68,\n    0xEB6C, 0xE10A, 0xE10A, 0xE10A, 0xE10A, 0xE0C9, 0xE01A, 0xDF17,\n    0xDDDB, 0xDC83, 0xDB29, 0xD9E8, 0xD8DC, 0xD821, 0xD7D1, 0xD7C4,\n    0xD7BF, 0xD7C3, 0xD7CF, 0xD7E2, 0xD7FC, 0xD81B, 0xD841, 0xD86C,\n    0xD89C, 0xD8D0, 0xD908, 0xD943, 0xD982, 0xD9C2, 0xDA05, 0xDA49,\n    0xDA8E, 0xDAD3, 0xDB19, 0xDB5E, 0xDBA2, 0xDBE5, 0xDC25, 0xDC64,\n    0xDC9F, 0xDCD7, 0xDD0B, 0xDD3B, 0xDD66, 0xDD8C, 0xDDAC, 0xDDC5,\n    0xDDD8, 0xDDE4, 0xDDE8, 0xE935, 0xE935, 0xE935, 0xE935, 0xEB60,\n    0xF143, 0xF9F1, 0x0479, 0x0FF1, 0x1B69, 0x25F4, 0x2EA3, 0x3489,\n    0x36B8, 0x3636, 0x34B8, 0x3258, 0x2F2D, 0x2B50, 0x26DA, 0x21E3,\n    0x1C83, 0x16D4, 0x10ED, 0x0AE8, 0x04DC, 0xFEE4, 0xF915, 0xF38A,\n    0xEE5B, 0xE99F, 0xE4F0, 0xDFDF, 0xDA7F, 0xD4E3, 0xCF1E, 0xC941,\n    0xC35F, 0xBD8C, 0xB7D9, 0xB258, 0xAD1E, 0xA83B, 0xA3C3, 0x9FC8,\n    0x9C5D, 0x9994, 0x9780, 0x9633, 0x95C0, 0xD958, 0xD958, 0xD958,\n    0xD958, 0xD94C, 0xD92A, 0xD8F4, 0xD8AB, 0xD852, 0xD7EB, 0xD777,\n    0xD6F9, 0xD672, 0xD5E4, 0xD55B, 0xD4DE, 0xD468, 0xD3F8, 0xD38A,\n    0xD31A, 0xD2A5, 0xD228, 0xD19F, 0xD107, 0xD05C, 0xCF9D, 0xCEC4,\n    0xCDCF, 0xCCBA, 0xCB82, 0xCA24, 0xC885, 0xC694, 0xC45E, 0xC1ED,\n    0xBF4F, 0xBC8E, 0xB9B8, 0xB6D7, 0xB3F8, 0xB126, 0xAE6D, 0xABDA,\n    0xA979, 0xA754, 0xA579, 0xA3F2, 0xA2CC, 0xA213, 0xA1D3, 0xE470,\n    0xE470, 0xE470, 0xE470, 0xE18D, 0xD9B7, 0xCE22, 0xC008, 0xB09F,\n    0xA11F, 0x92BF, 0x86B7, 0x7E3A, 0x7A87, 0x7A4E, 0x7B5B, 0x7D8E,\n    0x80C9, 0x84E3, 0x89BF, 0x8F3C, 0x9538, 0x9B91, 0xA228, 0xA8D9,\n    0xAF84, 0xB608, 0xBC43, 0xC214, 0xC759, 0xCBF2, 0xD04B, 0xD4DF,\n    0xD9A0, 0xDE80, 0xE373, 0xE869, 0xED57, 0xF22D, 0xF6DF, 0xFB5F,\n    0xFF9F, 0x0392, 0x072A, 0x0A5A, 0x0D14, 0x0F4B, 0x10F1, 0x11F8,\n    0x1252, 0xF992, 0xF992, 0xF992, 0xF992, 0xF983, 0xF958, 0xF916,\n    0xF8C1, 0xF85D, 0xF7EF, 0xF77A, 0xF703, 0xF68E, 0xF620, 0xF5B2,\n    0xF53E, 0xF4C5, 0xF446, 0xF3C3, 0xF33C, 0xF2B1, 0xF224, 0xF194,\n    0xF102, 0xF06E, 0xEFDA, 0xEF46, 0xEEB1, 0xEE1E, 0xED8C, 0xECFC,\n    0xEC6E, 0xEBE3, 0xEB5C, 0xEAD9, 0xEA5A, 0xE9E0, 0xE96C, 0xE8FF,\n    0xE897, 0xE838, 0xE7E0, 0xE790, 0xE749, 0xE70C, 0xE6D8, 0xE6AF,\n    0xE692, 0xE67F, 0xE679, 0x0CE2, 0x0CE2, 0x0CE2, 0x0CE2, 0x0CDA,\n    0x0CC1, 0x0C9B, 0x0C67, 0x0C29, 0x0BE1, 0x0B92, 0x0B3C, 0x0AE2,\n    0x0A84, 0x0A23, 0x09BB, 0x094E, 0x08DB, 0x0864, 0x07E8, 0x0769,\n    0x06E6, 0x0662, 0x05DA, 0x0552, 0x04C8, 0x043E, 0x03B4, 0x032A,\n    0x02A2, 0x021B, 0x0196, 0x0114, 0x0094, 0x0019, 0xFFA3, 0xFF30,\n    0xFEC3, 0xFE5B, 0xFDFA, 0xFD9F, 0xFD4C, 0xFD00, 0xFCBD, 0xFC83,\n    0xFC53, 0xFC2C, 0xFC0F, 0xFBFE, 0xFBF8, 0xE291, 0xE291, 0xE291,\n    0xE291, 0xE238, 0xE147, 0xDFE5, 0xDE39, 0xDC68, 0xDA9A, 0xD8F4,\n    0xD79F, 0xD6C0, 0xD67D, 0xD69F, 0xD6D0, 0xD710, 0xD75E, 0xD7B9,\n    0xD820, 0xD892, 0xD90E, 0xD993, 0xDA20, 0xDAB4, 0xDB4F, 0xDBEE,\n    0xDC92, 0xDD39, 0xDDE2, 0xDE8C, 0xDF37, 0xDFE1, 0xE089, 0xE12F,\n    0xE1D1, 0xE26E, 0xE306, 0xE398, 0xE421, 0xE4A3, 0xE51B, 0xE588,\n    0xE5EA, 0xE63F, 0xE688, 0xE6C2, 0xE6EC, 0xE706, 0xE70F, 0xD6DA,\n    0xD6DA, 0xD6DA, 0xD6DA, 0xD738, 0xD836, 0xD9AF, 0xDB7C, 0xDD76,\n    0xDF76, 0xE157, 0xE2F0, 0xE41C, 0xE4B4, 0xE4F1, 0xE524, 0xE54E,\n    0xE56F, 0xE589, 0xE59B, 0xE5A6, 0xE5AB, 0xE5A9, 0xE5A1, 0xE594,\n    0xE582, 0xE56B, 0xE551, 0xE533, 0xE511, 0xE4ED, 0xE4C7, 0xE49F,\n    0xE476, 0xE44C, 0xE421, 0xE3F6, 0xE3CC, 0xE3A2, 0xE37A, 0xE353,\n    0xE32F, 0xE30D, 0xE2EF, 0xE2D4, 0xE2BC, 0xE2AA, 0xE29C, 0xE293,\n    0xE290, 0x1D7A, 0x1D7A, 0x1D7A, 0x1D7A, 0x1B44, 0x1552, 0x0CB1,\n    0x026C, 0xF791, 0xED28, 0xE43E, 0xDDDF, 0xDB17, 0xDCF1, 0xE260,\n    0xE985, 0xF22A, 0xFC1B, 0x0725, 0x1314, 0x1FB5, 0x2CD2, 0x3A39,\n    0x47B6, 0x5513, 0x621E, 0x6EA3, 0x7A6E, 0x854D, 0x8F07, 0x976B,\n    0x9F01, 0xA66F, 0xADAC, 0xB4B2, 0xBB79, 0xC1FA, 0xC82E, 0xCE0C,\n    0xD38F, 0xD8AE, 0xDD63, 0xE1A5, 0xE56E, 0xE8B5, 0xEB75, 0xEDA5,\n    0xEF3E, 0xF039, 0xF08E, 0x226A, 0x226A, 0x226A, 0x226A, 0x2309,\n    0x24BB, 0x2741, 0x2A59, 0x2DC4, 0x3141, 0x3490, 0x3771, 0x39A3,\n    0x3AE7, 0x3B86, 0x3BF5, 0x3C38, 0x3C54, 0x3C4A, 0x3C20, 0x3BD8,\n    0x3B76, 0x3AFE, 0x3A72, 0x39D8, 0x3931, 0x3882, 0x37CF, 0x371A,\n    0x3667, 0x35BA, 0x34FC, 0x3419, 0x3314, 0x31F5, 0x30C1, 0x2F7D,\n    0x2E2E, 0x2CDA, 0x2B87, 0x2A3A, 0x28F9, 0x27C9, 0x26B0, 0x25B2,\n    0x24D7, 0x2422, 0x239B, 0x2345, 0x2328, 0xEBA4, 0xEBA4, 0xEBA4,\n    0xEBA4, 0xE86B, 0xDFBA, 0xD307, 0xC3CA, 0xB378, 0xA38A, 0x9575,\n    0x8AB1, 0x84B3, 0x84F4, 0x8A06, 0x9154, 0x9A9A, 0xA591, 0xB1F6,\n    0xBF83, 0xCDF3, 0xDD02, 0xEC6B, 0xFBE8, 0x0B33, 0x1A0A, 0x2827,\n    0x3544, 0x411D, 0x4B6D, 0x53EE, 0x5B2F, 0x61ED, 0x682B, 0x6DED,\n    0x7336, 0x780A, 0x7C6D, 0x8064, 0x83EE, 0x8711, 0x89D1, 0x8C30,\n    0x8E33, 0x8FDD, 0x9132, 0x9235, 0x92EA, 0x9354, 0x9376, 0xFFF2,\n    0xFFF1, 0xFFF1, 0xFFF2, 0xFFF3, 0xFFF4, 0xFFF5, 0xFFF6, 0xFFF8,\n    0xFFF9, 0xFFFB, 0xFFFC, 0xFFFD, 0xFFFF, 0x0000, 0x0001, 0x0003,\n    0x0004, 0x0006, 0x0007, 0x0009, 0x000A, 0x000C, 0x000D, 0x000F,\n    0x0010, 0x0012, 0x0013, 0x0015, 0x0016, 0x0018, 0x0019, 0x001A,\n    0x001C, 0x001D, 0x001E, 0x001F, 0x0020, 0x0021, 0x0022, 0x0023,\n    0x0024, 0x0024, 0x0025, 0x0025, 0x0026, 0x0026, 0x0026, 0x0027,\n    0x0027, 0x025C, 0x025C, 0x025C, 0x025C, 0x025B, 0x025B, 0x025A,\n    0x025A, 0x0259, 0x0259, 0x0258, 0x0258, 0x0257, 0x0257, 0x0256,\n    0x0255, 0x0255, 0x0254, 0x0254, 0x0253, 0x0252, 0x0252, 0x0251,\n    0x0251, 0x0250, 0x024F, 0x024F, 0x024E, 0x024E, 0x024D, 0x024D,\n    0x024C, 0x024C, 0x024B, 0x024B, 0x024A, 0x024A, 0x0249, 0x0249,\n    0x0249, 0x0248, 0x0248, 0x0248, 0x0248, 0x0247, 0x0247, 0x0247,\n    0x0247, 0x0247, 0x0247, 0xC84A, 0xC845, 0xC841, 0xC84A, 0xC85F,\n    0xC876, 0xC88E, 0xC8A6, 0xC8BF, 0xC8DA, 0xC8F4, 0xC910, 0xC92C,\n    0xC948, 0xC965, 0xC982, 0xC99F, 0xC9BD, 0xC9DB, 0xC9F9, 0xCA17,\n    0xCA35, 0xCA52, 0xCA70, 0xCA8D, 0xCAAA, 0xCAC7, 0xCAE3, 0xCAFF,\n    0xCB1A, 0xCB34, 0xCB4E, 0xCB67, 0xCB7F, 0xCB96, 0xCBAC, 0xCBC1,\n    0xCBD5, 0xCBE7, 0xCBF9, 0xCC09, 0xCC17, 0xCC24, 0xCC30, 0xCC3A,\n    0xCC42, 0xCC49, 0xCC4E, 0xCC51, 0xCC52, 0x344A, 0x3447, 0x3444,\n    0x344A, 0x3457, 0x3465, 0x3474, 0x3483, 0x3493, 0x34A3, 0x34B4,\n    0x34C5, 0x34D6, 0x34E8, 0x34FA, 0x350C, 0x351E, 0x3531, 0x3543,\n    0x3556, 0x3568, 0x357B, 0x358D, 0x35A0, 0x35B2, 0x35C4, 0x35D6,\n    0x35E7, 0x35F9, 0x3609, 0x361A, 0x362A, 0x3639, 0x3648, 0x3656,\n    0x3664, 0x3671, 0x367D, 0x3689, 0x3694, 0x369E, 0x36A7, 0x36AF,\n    0x36B6, 0x36BD, 0x36C2, 0x36C6, 0x36C9, 0x36CB, 0x36CB, 0x11A5,\n    0x11A5, 0x11A5, 0x11A5, 0x0DF2, 0x0710, 0x0352, 0x0347, 0x0347,\n    0x0351, 0x0364, 0x0380, 0x03A5, 0x03D2, 0x0406, 0x0442, 0x0484,\n    0x04CC, 0x0519, 0x056C, 0x05C3, 0x061F, 0x067D, 0x06DF, 0x0744,\n    0x07AB, 0x0813, 0x087C, 0x08E6, 0x0951, 0x09BA, 0x0A23, 0x0A8B,\n    0x0AF1, 0x0B54, 0x0BB5, 0x0C12, 0x0C6B, 0x0CC0, 0x0D11, 0x0D5C,\n    0x0DA1, 0x0DE0, 0x0E18, 0x0E49, 0x0E72, 0x0E93, 0x0EAB, 0x0EBA,\n    0x0EBF, 0x147F, 0x147F, 0x147F, 0x147F, 0x1178, 0x0BD9, 0x08D2,\n    0x08D6, 0x08E3, 0x08F9, 0x0917, 0x093D, 0x096A, 0x099E, 0x09D9,\n    0x0A1A, 0x0A60, 0x0AAC, 0x0AFC, 0x0B50, 0x0BA9, 0x0C05, 0x0C63,\n    0x0CC5, 0x0D28, 0x0D8D, 0x0DF3, 0x0E59, 0x0EC0, 0x0F27, 0x0F8D,\n    0x0FF2, 0x1055, 0x10B7, 0x1116, 0x1172, 0x11CB, 0x1220, 0x1270,\n    0x12BC, 0x1303, 0x1345, 0x1380, 0x13B5, 0x13E3, 0x140A, 0x1429,\n    0x143F, 0x144D, 0x1452, 0xB77F, 0xB77F, 0xB77F, 0xB77F, 0xB0BF,\n    0xA42E, 0x9D56, 0x9D3B, 0x9D34, 0x9D3E, 0x9D5A, 0x9D86, 0x9DC1,\n    0x9E0A, 0x9E61, 0x9EC5, 0x9F35, 0x9FAF, 0xA034, 0xA0C2, 0xA158,\n    0xA1F5, 0xA299, 0xA343, 0xA3F1, 0xA4A4, 0xA559, 0xA611, 0xA6C9,\n    0xA783, 0xA83B, 0xA8F3, 0xA9A8, 0xAA5A, 0xAB08, 0xABB1, 0xAC55,\n    0xACF1, 0xAD87, 0xAE14, 0xAE97, 0xAF11, 0xAF7F, 0xAFE2, 0xB038,\n    0xB080, 0xB0BA, 0xB0E4, 0xB0FE, 0xB107, 0x0095, 0x0095, 0x0095,\n    0x0095, 0x0094, 0x0094, 0x0093, 0x0092, 0x0091, 0x0090, 0x008F,\n    0x008E, 0x008D, 0x008C, 0x008B, 0x008A, 0x0089, 0x0088, 0x0087,\n    0x0086, 0x0085, 0x0084, 0x0083, 0x0082, 0x0081, 0x0080, 0x007F,\n    0x007E, 0x007D, 0x007C, 0x007B, 0x007A, 0x0079, 0x0078, 0x0077,\n    0x0076, 0x0076, 0x0075, 0x0074, 0x0074, 0x0073, 0x0073, 0x0072,\n    0x0072, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0x0071, 0xFF09,\n    0xFF09, 0xFF09, 0xFF09, 0xFF09, 0xFF08, 0xFF08, 0xFF08, 0xFF08,\n    0xFF08, 0xFF07, 0xFF07, 0xFF07, 0xFF07, 0xFF06, 0xFF06, 0xFF06,\n    0xFF05, 0xFF05, 0xFF05, 0xFF05, 0xFF04, 0xFF04, 0xFF04, 0xFF04,\n    0xFF03, 0xFF03, 0xFF03, 0xFF02, 0xFF02, 0xFF02, 0xFF02, 0xFF01,\n    0xFF01, 0xFF01, 0xFF01, 0xFF01, 0xFF00, 0xFF00, 0xFF00, 0xFF00,\n    0xFF00, 0xFF00, 0xFF00, 0xFF00, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF,\n    0xFEFF, 0xCC42, 0xCC3C, 0xCC35, 0xCC42, 0xCC60, 0xCC80, 0xCCA0,\n    0xCCC2, 0xCCE5, 0xCD09, 0xCD2E, 0xCD54, 0xCD7B, 0xCDA2, 0xCDCA,\n    0xCDF2, 0xCE1B, 0xCE44, 0xCE6E, 0xCE97, 0xCEC1, 0xCEEA, 0xCF13,\n    0xCF3C, 0xCF65, 0xCF8D, 0xCFB4, 0xCFDB, 0xD002, 0xD027, 0xD04C,\n    0xD06F, 0xD091, 0xD0B3, 0xD0D3, 0xD0F1, 0xD10E, 0xD12A, 0xD143,\n    0xD15C, 0xD172, 0xD186, 0xD198, 0xD1A8, 0xD1B6, 0xD1C2, 0xD1CB,\n    0xD1D2, 0xD1D6, 0xD1D7, 0x3BE4, 0x3BE7, 0x3BEB, 0x3BE4, 0x3BD4,\n    0x3BC3, 0x3BB1, 0x3B9F, 0x3B8C, 0x3B79, 0x3B65, 0x3B51, 0x3B3C,\n    0x3B27, 0x3B12, 0x3AFC, 0x3AE6, 0x3AD0, 0x3ABA, 0x3AA4, 0x3A8D,\n    0x3A77, 0x3A61, 0x3A4B, 0x3A35, 0x3A20, 0x3A0B, 0x39F6, 0x39E1,\n    0x39CD, 0x39BA, 0x39A7, 0x3994, 0x3982, 0x3971, 0x3961, 0x3951,\n    0x3943, 0x3935, 0x3928, 0x391C, 0x3911, 0x3907, 0x38FF, 0x38F7,\n    0x38F1, 0x38EC, 0x38E8, 0x38E6, 0x38E6, 0xF101, 0xF101, 0xF101,\n    0xF101, 0xFA09, 0x0ACD, 0x13D1, 0x13BC, 0x138C, 0x1341, 0x12DD,\n    0x1261, 0x11CF, 0x1128, 0x106D, 0x0F9F, 0x0EC1, 0x0DD3, 0x0CD7,\n    0x0BCE, 0x0ABA, 0x099B, 0x0874, 0x0745, 0x0611, 0x04D7, 0x039B,\n    0x025C, 0x011D, 0xFFE0, 0xFEA4, 0xFD6C, 0xFC38, 0xFB0B, 0xF9E5,\n    0xF8C9, 0xF7B7, 0xF6B0, 0xF5B7, 0xF4CC, 0xF3F1, 0xF328, 0xF271,\n    0xF1CD, 0xF140, 0xF0C9, 0xF06A, 0xF024, 0xEFF9, 0xEFEB, 0xE5BB,\n    0xE5BB, 0xE5BB, 0xE5BB, 0xE899, 0xEDF1, 0xF0DD, 0xF0EF, 0xF0F9,\n    0xF0FB, 0xF0F7, 0xF0EC, 0xF0DA, 0xF0C3, 0xF0A6, 0xF084, 0xF05D,\n    0xF031, 0xF002, 0xEFCE, 0xEF97, 0xEF5D, 0xEF20, 0xEEE1, 0xEE9F,\n    0xEE5C, 0xEE17, 0xEDD2, 0xED8B, 0xED45, 0xECFE, 0xECB8, 0xEC73,\n    0xEC2E, 0xEBEB, 0xEBAA, 0xEB6B, 0xEB2F, 0xEAF5, 0xEABE, 0xEA8B,\n    0xEA5C, 0xEA31, 0xEA0B, 0xE9E9, 0xE9CD, 0xE9B7, 0xE9A6, 0xE99C,\n    0xE999, 0xAE23, 0xAE23, 0xAE23, 0xAE23, 0xA482, 0x92A3, 0x8907,\n    0x891E, 0x8952, 0x89A2, 0x8A0D, 0x8A92, 0x8B2E, 0x8BE1, 0x8CA9,\n    0x8D84, 0x8E72, 0x8F70, 0x907D, 0x9198, 0x92BF, 0x93F1, 0x952C,\n    0x966F, 0x97B9, 0x9908, 0x9A5A, 0x9BAE, 0x9D02, 0x9E56, 0x9FA7,\n    0xA0F5, 0xA23D, 0xA37F, 0xA4B8, 0xA5E8, 0xA70D, 0xA825, 0xA92F,\n    0xAA29, 0xAB13, 0xABEA, 0xACAE, 0xAD5C, 0xADF3, 0xAE72, 0xAED7,\n    0xAF21, 0xAF4F, 0xAF5F, 0x8001, 0x8001, 0x8001, 0x8001, 0x7FFC,\n    0x7FF4, 0x7FEB, 0x7FE0, 0x7FD7, 0x7FD1, 0x7FD0, 0x7FD6, 0x7FE5,\n    0x8001, 0x8023, 0x8047, 0x806E, 0x8097, 0x80C3, 0x80F1, 0x8121,\n    0x8152, 0x8185, 0x81B8, 0x81ED, 0x8223, 0x8259, 0x828F, 0x82C6,\n    0x82FC, 0x8331, 0x8366, 0x839B, 0x83CE, 0x83FF, 0x8430, 0x845E,\n    0x848A, 0x84B5, 0x84DC, 0x8501, 0x8523, 0x8542, 0x855E, 0x8576,\n    0x858A, 0x859A, 0x85A5, 0x85AD, 0x85AF, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8002, 0x8002, 0x8002, 0x8002, 0x8002, 0x8002, 0x8002,\n    0x8002, 0x8002, 0x8001, 0x7FFE, 0x7FFE, 0x7FFE, 0x7FFD, 0x7FFD,\n    0x7FFD, 0x7FFC, 0x7FFC, 0x7FFB, 0x7FFB, 0x7FFA, 0x7FFA, 0x7FFA,\n    0x7FF9, 0x7FF9, 0x7FF8, 0x7FF8, 0x7FF7, 0x7FF7, 0x7FF7, 0x7FF6,\n    0x7FF6, 0x7FF5, 0x7FF5, 0x7FF5, 0x7FF4, 0x7FF4, 0x7FF4, 0x7FF3,\n    0x7FF3, 0x7FF3, 0x7FF3, 0x7FF3, 0x7FF3, 0x7FF3, 0x7FF3, 0x4171,\n    0x4171, 0x4171, 0x4171, 0x4171, 0x4173, 0x4175, 0x4178, 0x417A,\n    0x417B, 0x417C, 0x417A, 0x4177, 0x4171, 0x4169, 0x4160, 0x4157,\n    0x414D, 0x4143, 0x4138, 0x412C, 0x4120, 0x4114, 0x4108, 0x40FB,\n    0x40EF, 0x40E2, 0x40D5, 0x40C8, 0x40BB, 0x40AE, 0x40A1, 0x4095,\n    0x4089, 0x407D, 0x4071, 0x4066, 0x405C, 0x4052, 0x4048, 0x403F,\n    0x4037, 0x4030, 0x4029, 0x4024, 0x401F, 0x401B, 0x4018, 0x4016,\n    0x4016, 0xBF5F, 0x8001, 0x8001, 0x8001, 0x8001, 0x8004, 0x800B,\n    0x8014, 0x801E, 0x8027, 0x802C, 0x802D, 0x8028, 0x801A, 0x8001,\n    0x7FDF, 0x7FBD, 0x7F99, 0x7F72, 0x7F48, 0x7F1D, 0x7EF0, 0x7EC2,\n    0x7E92, 0x7E61, 0x7E30, 0x7DFD, 0x7DCA, 0x7D97, 0x7D64, 0x7D31,\n    0x7CFF, 0x7CCD, 0x7C9C, 0x7C6C, 0x7C3D, 0x7C0F, 0x7BE4, 0x7BBA,\n    0x7B92, 0x7B6D, 0x7B4A, 0x7B2A, 0x7B0D, 0x7AF3, 0x7ADD, 0x7ACA,\n    0x7ABB, 0x7AB0, 0x7AA9, 0x7AA7, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x7FFE, 0x7FFE, 0x7FFD, 0x7FFD, 0x7FFC, 0x7FFC, 0x7FFC, 0x7FFC,\n    0x7FFD, 0x8001, 0x8003, 0x8005, 0x8007, 0x800A, 0x800C, 0x800F,\n    0x8011, 0x8014, 0x8017, 0x801A, 0x801D, 0x801F, 0x8022, 0x8025,\n    0x8028, 0x802B, 0x802E, 0x8031, 0x8034, 0x8037, 0x803A, 0x803C,\n    0x803F, 0x8041, 0x8044, 0x8046, 0x8048, 0x804A, 0x804B, 0x804D,\n    0x804E, 0x804F, 0x8050, 0x8051, 0x8051, 0x8051, 0x4171, 0x4171,\n    0x4171, 0x4171, 0x4171, 0x4173, 0x4175, 0x4178, 0x417A, 0x417C,\n    0x417C, 0x417A, 0x4177, 0x4171, 0x4169, 0x4160, 0x4156, 0x414C,\n    0x4142, 0x4136, 0x412B, 0x411F, 0x4113, 0x4106, 0x40F9, 0x40EC,\n    0x40DF, 0x40D2, 0x40C4, 0x40B7, 0x40AA, 0x409D, 0x4091, 0x4084,\n    0x4078, 0x406C, 0x4061, 0x4056, 0x404C, 0x4042, 0x4039, 0x4031,\n    0x402A, 0x4023, 0x401D, 0x4018, 0x4014, 0x4012, 0x4010, 0x400F,\n    0xBF5F, 0xE93C, 0xEB00, 0xEF85, 0xF598, 0xFC0D, 0x01B1, 0x0557,\n    0x072B, 0x083C, 0x08A9, 0x0894, 0x081E, 0x0766, 0x0690, 0x05AA,\n    0x04B1, 0x03A6, 0x028B, 0x0162, 0x002A, 0xFEE9, 0xFD9B, 0xFC45,\n    0xFAE8, 0xF985, 0xF81D, 0xF6B3, 0xF547, 0xF3DB, 0xF271, 0xF10A,\n    0xEFA8, 0xEE4C, 0xECF7, 0xEBAB, 0xEA6A, 0xE936, 0xE80E, 0xE6F6,\n    0xE5EE, 0xE4F8, 0xE416, 0xE349, 0xE292, 0xE1F4, 0xE16F, 0xE104,\n    0xE0B7, 0xE087, 0xE077, 0x1031, 0x09D6, 0xFDFA, 0xF768, 0xF71A,\n    0xF6D9, 0xF6A5, 0xF67D, 0xF660, 0xF64E, 0xF647, 0xF64A, 0xF657,\n    0xF66C, 0xF68A, 0xF6B0, 0xF6DE, 0xF712, 0xF74D, 0xF78D, 0xF7D4,\n    0xF81F, 0xF86E, 0xF8C1, 0xF918, 0xF972, 0xF9CE, 0xFA2B, 0xFA8A,\n    0xFAEA, 0xFB4B, 0xFBAB, 0xFC0A, 0xFC68, 0xFCC4, 0xFD1E, 0xFD76,\n    0xFDCA, 0xFE1A, 0xFE66, 0xFEAD, 0xFEEF, 0xFF2B, 0xFF60, 0xFF8F,\n    0xFFB7, 0xFFD6, 0xFFED, 0xFFFC, 0x0000, 0x01E6, 0x0659, 0x0E9B,\n    0x1307, 0x12F7, 0x12DA, 0x12B2, 0x127E, 0x123F, 0x11F7, 0x11A5,\n    0x114A, 0x10E7, 0x107C, 0x1009, 0x0F90, 0x0F11, 0x0E8D, 0x0E03,\n    0x0D75, 0x0CE4, 0x0C4F, 0x0BB7, 0x0B1E, 0x0A83, 0x09E7, 0x094A,\n    0x08AE, 0x0813, 0x0779, 0x06E1, 0x064B, 0x05B8, 0x052A, 0x049F,\n    0x0419, 0x0399, 0x031E, 0x02AA, 0x023D, 0x01D8, 0x017B, 0x0127,\n    0x00DC, 0x009B, 0x0064, 0x0039, 0x0019, 0x0006, 0x0000, 0x0A87,\n    0x122A, 0x2052, 0x27E5, 0x27C2, 0x278A, 0x273D, 0x26DD, 0x266A,\n    0x25E6, 0x2551, 0x24AD, 0x23FA, 0x2339, 0x226D, 0x2194, 0x20B1,\n    0x1FC5, 0x1ED0, 0x1DD3, 0x1CD0, 0x1BC8, 0x1ABB, 0x19AB, 0x1898,\n    0x1783, 0x166E, 0x155A, 0x1447, 0x1336, 0x122A, 0x1121, 0x101E,\n    0x0F22, 0x0E2D, 0x0D41, 0x0C5E, 0x0B86, 0x0ABA, 0x09F9, 0x0947,\n    0x08A3, 0x080E, 0x078A, 0x0718, 0x06B8, 0x066C, 0x0634, 0x0612,\n    0x0606, 0x46AF, 0x5397, 0x6053, 0x6CDA, 0x7923, 0x8529, 0x90DC,\n    0x9C36, 0xA730, 0xB1C0, 0xBBDE, 0xC580, 0xCE9F, 0xD730, 0xDF2C,\n    0xE68A, 0xED40, 0xF347, 0xF8ED, 0xFE7B, 0x03F0, 0x094A, 0x0E89,\n    0x13AA, 0x18AC, 0x1D8D, 0x224D, 0x26E9, 0x2B60, 0x2FB1, 0x33DA,\n    0x37DA, 0x3BB0, 0x3F59, 0x42D5, 0x4621, 0x493E, 0x4C28, 0x4EDF,\n    0x5161, 0x53AD, 0x55C1, 0x579C, 0x593C, 0x5AA1, 0x5BC8, 0x5CAF,\n    0x5D57, 0x5DBC, 0x5DDE,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_A9.inc.c",
    "content": "static const struct Animation anim_A9[] = {\n    1,\n    189,\n    0,\n    0,\n    0x14,\n    ANIMINDEX_NUMPARTS(anim_A9_indices),\n    anim_A9_values,\n    anim_A9_indices,\n    0,\n};\n\n\nstatic const u16 anim_A9_indices[] = {\n    0x0001, 0x0000, 0x0014, 0x0001, 0x0014, 0x0015, 0x0001, 0x0000, 0x0001, 0x0029, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x034C,\n    0x0014, 0x0310, 0x0014, 0x0324, 0x0014, 0x0338,\n    0x0014, 0x02D4, 0x0014, 0x02E8, 0x0014, 0x02FC,\n    0x0014, 0x0297, 0x0014, 0x02AB, 0x0014, 0x02BF,\n    0x0014, 0x007A, 0x0014, 0x008E, 0x0014, 0x00A2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x0066,\n    0x0014, 0x002A, 0x0014, 0x003E, 0x0014, 0x0052,\n    0x0014, 0x025A, 0x0014, 0x026E, 0x0014, 0x0282,\n    0x0014, 0x0106, 0x0014, 0x011A, 0x0014, 0x012E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x00F2,\n    0x0014, 0x00B6, 0x0014, 0x00CA, 0x0014, 0x00DE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0296,\n    0x0014, 0x021E, 0x0014, 0x0232, 0x0014, 0x0246,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x020A,\n    0x0014, 0x01CE, 0x0014, 0x01E2, 0x0014, 0x01F6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02D3,\n    0x0014, 0x0192, 0x0014, 0x01A6, 0x0014, 0x01BA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x017E,\n    0x0014, 0x0142, 0x0014, 0x0156, 0x0014, 0x016A,\n};\n\nstatic const s16 anim_A9_values[] = {\n    0x0000, 0x00BD, 0x00BD, 0x00BC, 0x00BC, 0x00BC, 0x00BB, 0x00BB,\n    0x00BA, 0x00B9, 0x00B9, 0x00B8, 0x00B7, 0x00B6, 0x00B6, 0x00B5,\n    0x00B5, 0x00B4, 0x00B4, 0x00B4, 0x00B4, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x3FFF, 0x1DFA, 0x1DBC, 0x1D0D, 0x1BF8, 0x1A8D, 0x18D7,\n    0x16E5, 0x14C4, 0x1282, 0x102B, 0x0DCE, 0x0B77, 0x0935, 0x0714,\n    0x0522, 0x036D, 0x0201, 0x00ED, 0x003D, 0x0000, 0xFF74, 0xFF68,\n    0xFF45, 0xFF0E, 0xFEC6, 0xFE6E, 0xFE0B, 0xFD9F, 0xFD2C, 0xFCB4,\n    0xFC3C, 0xFBC4, 0xFB51, 0xFAE5, 0xFA82, 0xFA2A, 0xF9E2, 0xF9AB,\n    0xF988, 0xF97C, 0xEB6C, 0xEB71, 0xEB7D, 0xEB91, 0xEBAA, 0xEBC9,\n    0xEBED, 0xEC13, 0xEC3C, 0xEC67, 0xEC91, 0xECBC, 0xECE5, 0xED0B,\n    0xED2E, 0xED4D, 0xED67, 0xED7B, 0xED87, 0xED8C, 0xDDE8, 0xDDE3,\n    0xDDD4, 0xDDBE, 0xDD9F, 0xDD7B, 0xDD52, 0xDD25, 0xDCF5, 0xDCC3,\n    0xDC91, 0xDC5F, 0xDC2F, 0xDC02, 0xDBD9, 0xDBB5, 0xDB96, 0xDB80,\n    0xDB71, 0xDB6C, 0x95C0, 0x94E9, 0x9286, 0x8EC4, 0x89D2, 0x83DF,\n    0x7D17, 0x75AE, 0x6DD0, 0x65AC, 0x5D71, 0x554D, 0x4D6F, 0x4606,\n    0x3F41, 0x394E, 0x345C, 0x309A, 0x2E36, 0x2D60, 0xA1D3, 0xA227,\n    0xA318, 0xA494, 0xA686, 0xA8DF, 0xAB8A, 0xAE75, 0xB18F, 0xB4C4,\n    0xB802, 0xBB37, 0xBE51, 0xC13C, 0xC3E7, 0xC640, 0xC832, 0xC9AE,\n    0xCA9F, 0xCAF3, 0x1252, 0x133E, 0x15E0, 0x1A04, 0x1F76, 0x2604,\n    0x2D7A, 0x35A3, 0x3E4E, 0x4746, 0x5057, 0x594F, 0x61F9, 0x6A23,\n    0x7198, 0x7826, 0x7D99, 0x81BF, 0x8461, 0x854D, 0xE679, 0xE6AD,\n    0xE743, 0xE82E, 0xE964, 0xEAD9, 0xEC81, 0xEE51, 0xF03D, 0xF23B,\n    0xF43E, 0xF63C, 0xF829, 0xF9F9, 0xFBA1, 0xFD15, 0xFE4B, 0xFF36,\n    0xFFCC, 0x0000, 0xFBF8, 0xFC00, 0xFC18, 0xFC3D, 0xFC6E, 0xFCA9,\n    0xFCEC, 0xFD35, 0xFD83, 0xFDD4, 0xFE25, 0xFE75, 0xFEC3, 0xFF0D,\n    0xFF50, 0xFF8A, 0xFFBB, 0xFFE1, 0xFFF8, 0x0000, 0xE70F, 0xE72C,\n    0xE780, 0xE803, 0xE8B0, 0xE97F, 0xEA6B, 0xEB6E, 0xEC81, 0xED9D,\n    0xEEBC, 0xEFD8, 0xF0EA, 0xF1ED, 0xF2D9, 0xF3A9, 0xF456, 0xF4D9,\n    0xF52C, 0xF549, 0xE290, 0xE2AE, 0xE305, 0xE38E, 0xE443, 0xE51C,\n    0xE612, 0xE720, 0xE83F, 0xE968, 0xEA94, 0xEBBD, 0xECDC, 0xEDEA,\n    0xEEE0, 0xEFB9, 0xF06E, 0xF0F7, 0xF14E, 0xF16C, 0xF08E, 0xF021,\n    0xEEEA, 0xECFF, 0xEA7A, 0xE772, 0xE3FE, 0xE037, 0xDC35, 0xD80F,\n    0xD3DD, 0xCFB7, 0xCBB4, 0xC7EE, 0xC47A, 0xC172, 0xBEED, 0xBD02,\n    0xBBCB, 0xBB5D, 0x2328, 0x2346, 0x239E, 0x2428, 0x24DE, 0x25B9,\n    0x26B1, 0x27C2, 0x28E3, 0x2A0E, 0x2B3C, 0x2C67, 0x2D88, 0x2E98,\n    0x2F91, 0x306C, 0x3121, 0x31AB, 0x3203, 0x3222, 0x9376, 0x92E1,\n    0x9139, 0x8E9D, 0x8B2F, 0x870E, 0x825B, 0x7D33, 0x77BE, 0x7218,\n    0x6C61, 0x66BB, 0x6145, 0x5C21, 0x576E, 0x534D, 0x4FDE, 0x4D43,\n    0x4B9A, 0x4B06, 0x0027, 0x0025, 0x0021, 0x001B, 0x0014, 0x000A,\n    0x0000, 0xFFF4, 0xFFE8, 0xFFDB, 0xFFCE, 0xFFC1, 0xFFB4, 0xFFA8,\n    0xFF9E, 0xFF94, 0xFF8C, 0xFF86, 0xFF82, 0xFF81, 0x0247, 0x0241,\n    0x0230, 0x0215, 0x01F1, 0x01C7, 0x0196, 0x0161, 0x0129, 0x00EE,\n    0x00B3, 0x0079, 0x0040, 0x000B, 0xFFDC, 0xFFB1, 0xFF8E, 0xFF73,\n    0xFF61, 0xFF5B, 0xCC52, 0xCC84, 0xCD13, 0xCDF4, 0xCF1C, 0xD081,\n    0xD216, 0xD3D2, 0xD5A9, 0xD791, 0xD97E, 0xDB66, 0xDD3D, 0xDEF9,\n    0xE08E, 0xE1F2, 0xE31B, 0xE3FC, 0xE48B, 0xE4BD, 0x36CB, 0x3688,\n    0x35C9, 0x349C, 0x3310, 0x3133, 0x2F15, 0x2CC3, 0x2A4D, 0x27C1,\n    0x252E, 0x22A2, 0x202C, 0x1DDA, 0x1BBC, 0x19DF, 0x1853, 0x1726,\n    0x1667, 0x1624, 0x0EBF, 0x0EBB, 0x0EB2, 0x0EA4, 0x0E92, 0x0E7B,\n    0x0E62, 0x0E46, 0x0E29, 0x0E0A, 0x0DEB, 0x0DCD, 0x0DAF, 0x0D93,\n    0x0D7A, 0x0D63, 0x0D51, 0x0D43, 0x0D3A, 0x0D37, 0x1452, 0x1436,\n    0x13E5, 0x1366, 0x12BF, 0x11F7, 0x1113, 0x1019, 0x0F0F, 0x0DFD,\n    0x0CE7, 0x0BD5, 0x0ACC, 0x09D2, 0x08EE, 0x0825, 0x077E, 0x06FF,\n    0x06AF, 0x0693, 0xB107, 0xB10E, 0xB123, 0xB143, 0xB16E, 0xB1A2,\n    0xB1DD, 0xB21D, 0xB261, 0xB2A8, 0xB2EF, 0xB335, 0xB37A, 0xB3BA,\n    0xB3F4, 0xB428, 0xB453, 0xB473, 0xB488, 0xB48F, 0x0071, 0x0070,\n    0x006D, 0x0069, 0x0064, 0x005D, 0x0056, 0x004E, 0x0045, 0x003D,\n    0x0034, 0x002B, 0x0022, 0x001A, 0x0013, 0x000C, 0x0007, 0x0003,\n    0x0000, 0x0000, 0xFEFF, 0xFF01, 0xFF07, 0xFF11, 0xFF1D, 0xFF2B,\n    0xFF3C, 0xFF4E, 0xFF62, 0xFF76, 0xFF8A, 0xFF9E, 0xFFB1, 0xFFC4,\n    0xFFD4, 0xFFE3, 0xFFEF, 0xFFF9, 0xFFFE, 0x0000, 0xD1D7, 0xD1F5,\n    0xD249, 0xD2CE, 0xD37D, 0xD44F, 0xD53F, 0xD645, 0xD75B, 0xD87A,\n    0xD99D, 0xDABD, 0xDBD3, 0xDCD9, 0xDDC9, 0xDE9B, 0xDF4A, 0xDFCF,\n    0xE023, 0xE041, 0x38E6, 0x390D, 0x397F, 0x3A32, 0x3B1E, 0x3C3A,\n    0x3D7C, 0x3EDD, 0x4054, 0x41D8, 0x4361, 0x44E5, 0x465C, 0x47BD,\n    0x48FF, 0x4A1B, 0x4B07, 0x4BBA, 0x4C2C, 0x4C54, 0xEFEB, 0xF00C,\n    0xF06B, 0xF0FF, 0xF1C3, 0xF2AF, 0xF3BB, 0xF4E0, 0xF618, 0xF75A,\n    0xF8A0, 0xF9E3, 0xFB1A, 0xFC40, 0xFD4C, 0xFE37, 0xFEFB, 0xFF90,\n    0xFFEF, 0x000F, 0xE999, 0xE99C, 0xE9A6, 0xE9B6, 0xE9CB, 0xE9E4,\n    0xEA00, 0xEA20, 0xEA41, 0xEA63, 0xEA86, 0xEAA8, 0xEAC9, 0xEAE8,\n    0xEB04, 0xEB1D, 0xEB32, 0xEB42, 0xEB4C, 0xEB50, 0xAF5F, 0xAEE2,\n    0xAD80, 0xAB52, 0xA875, 0xA502, 0xA115, 0x9CCA, 0x983B, 0x9383,\n    0x8EBE, 0x8A06, 0x8577, 0x812B, 0x7D3C, 0x79C9, 0x76EB, 0x74BE,\n    0x735B, 0x72DF, 0x85AF, 0x85A3, 0x8582, 0x854E, 0x8509, 0x84B6,\n    0x8458, 0x83F1, 0x8383, 0x8312, 0x829F, 0x822E, 0x81C0, 0x8159,\n    0x80FA, 0x80A8, 0x8063, 0x802E, 0x800D, 0x8001, 0x7FF3, 0x7FF3,\n    0x7FF3, 0x7FF3, 0x7FF4, 0x7FF5, 0x7FF5, 0x7FF6, 0x7FF7, 0x7FF8,\n    0x7FF9, 0x7FFA, 0x7FFB, 0x7FFC, 0x7FFC, 0x7FFD, 0x7FFE, 0x7FFE,\n    0x7FFE, 0x8001, 0x4016, 0x4019, 0x4021, 0x402D, 0x403E, 0x4051,\n    0x4068, 0x4080, 0x409B, 0x40B6, 0x40D1, 0x40EC, 0x4106, 0x411F,\n    0x4135, 0x4149, 0x4159, 0x4166, 0x416E, 0x4171, 0xBF5F, 0x7AA7,\n    0x7AB2, 0x7AD1, 0x7B02, 0x7B43, 0x7B91, 0x7BEA, 0x7C4B, 0x7CB2,\n    0x7D1D, 0x7D89, 0x7DF3, 0x7E5A, 0x7EBB, 0x7F14, 0x7F62, 0x7FA3,\n    0x7FD4, 0x7FF4, 0x8001, 0x8051, 0x8051, 0x804F, 0x804C, 0x8048,\n    0x8044, 0x803F, 0x8039, 0x8033, 0x802D, 0x8026, 0x8020, 0x801A,\n    0x8014, 0x800F, 0x800B, 0x8007, 0x8004, 0x8002, 0x8001, 0x400F,\n    0x4012, 0x401A, 0x4027, 0x4038, 0x404C, 0x4063, 0x407C, 0x4096,\n    0x40B2, 0x40CE, 0x40E9, 0x4104, 0x411D, 0x4134, 0x4148, 0x4159,\n    0x4166, 0x416E, 0x4171, 0xBF5F, 0x0000, 0xFFEF, 0xFFBE, 0xFF70,\n    0xFF09, 0xFE8E, 0xFE01, 0xFD67, 0xFCC4, 0xFC1B, 0xFB70, 0xFAC7,\n    0xFA24, 0xF98A, 0xF8FE, 0xF882, 0xF81C, 0xF7CE, 0xF79C, 0xF78B,\n    0x0000, 0x0008, 0x0021, 0x0047, 0x007A, 0x00B7, 0x00FC, 0x0149,\n    0x0199, 0x01ED, 0x0241, 0x0295, 0x02E6, 0x0332, 0x0377, 0x03B4,\n    0x03E7, 0x040E, 0x0426, 0x042F, 0xE077, 0xE0EF, 0xE245, 0xE460,\n    0xE725, 0xEA7A, 0xEE45, 0xF26B, 0xF6D2, 0xFB61, 0xFFFE, 0x048B,\n    0x08F3, 0x0D19, 0x10E4, 0x1439, 0x16FE, 0x1919, 0x1A6F, 0x1AE7,\n    0x0000, 0x0013, 0x004D, 0x00A6, 0x011C, 0x01AA, 0x024C, 0x02FD,\n    0x03B9, 0x047B, 0x053F, 0x0602, 0x06BE, 0x076E, 0x0810, 0x089E,\n    0x0914, 0x096E, 0x09A7, 0x09BB, 0x0000, 0x0001, 0x0005, 0x000C,\n    0x0015, 0x0020, 0x002C, 0x003A, 0x0048, 0x0057, 0x0066, 0x0075,\n    0x0083, 0x0091, 0x009D, 0x00A8, 0x00B1, 0x00B8, 0x00BC, 0x00BE,\n    0x0606, 0x05F9, 0x05D5, 0x059B, 0x054E, 0x04F3, 0x048A, 0x0418,\n    0x039F, 0x0321, 0x02A2, 0x0225, 0x01AB, 0x0139, 0x00D1, 0x0075,\n    0x0029, 0xFFF0, 0xFFCB, 0xFFBE, 0x5DDE, 0x5DA2, 0x5CF7, 0x5BE9,\n    0x5A87, 0x58DC, 0x56F6, 0x54E3, 0x52AF, 0x5067, 0x4E19, 0x4BD1,\n    0x499C, 0x4789, 0x45A3, 0x43F9, 0x4296, 0x4188, 0x40DD, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_AA.inc.c",
    "content": "static const struct Animation anim_AA[] = {\n    1,\n    189,\n    0,\n    0,\n    0x0D,\n    ANIMINDEX_NUMPARTS(anim_AA_indices),\n    anim_AA_values,\n    anim_AA_indices,\n    0,\n};\n\n\nstatic const u16 anim_AA_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000D, 0x01D9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000D, 0x01CC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000D, 0x01BF,\n    0x000D, 0x0197, 0x000D, 0x01A4, 0x000D, 0x01B1,\n    0x000D, 0x0037, 0x000D, 0x0044, 0x000D, 0x0051,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000D, 0x002A,\n    0x000D, 0x0003, 0x000D, 0x0010, 0x000D, 0x001D,\n    0x000D, 0x016F, 0x000D, 0x017C, 0x000D, 0x0189,\n    0x000D, 0x0092, 0x000D, 0x009F, 0x000D, 0x00AC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000D, 0x0085,\n    0x000D, 0x005E, 0x000D, 0x006B, 0x000D, 0x0078,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0196,\n    0x000D, 0x0148, 0x000D, 0x0155, 0x000D, 0x0162,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000D, 0x013B,\n    0x000D, 0x0114, 0x000D, 0x0121, 0x000D, 0x012E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01BE,\n    0x000D, 0x00ED, 0x000D, 0x00FA, 0x000D, 0x0107,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000D, 0x00E0,\n    0x000D, 0x00B9, 0x000D, 0x00C6, 0x000D, 0x00D3,\n};\n\nstatic const s16 anim_AA_values[] = {\n    0x0000, 0x00BD, 0x3FFF, 0x1DFA, 0x2375, 0x2998, 0x2ABD, 0x2B93,\n    0x2C29, 0x2C8D, 0x2CCC, 0x2CF3, 0x2D12, 0x2D35, 0x2D6A, 0x2DC0,\n    0xFF74, 0x00B2, 0x023C, 0x02C8, 0x0346, 0x03B9, 0x0422, 0x0485,\n    0x04E3, 0x0540, 0x059E, 0x05FF, 0x0666, 0xEB6C, 0xEC22, 0xED46,\n    0xEE21, 0xEEFB, 0xEFD4, 0xF0AC, 0xF184, 0xF25B, 0xF332, 0xF409,\n    0xF4E0, 0xF5B8, 0xDDE8, 0xE575, 0xEE13, 0xEFFA, 0xF179, 0xF2A3,\n    0xF38A, 0xF440, 0xF4D7, 0xF563, 0xF5F4, 0xF69E, 0xF772, 0xA354,\n    0xAB27, 0xB3A8, 0xB4C2, 0xB566, 0xB5A8, 0xB59D, 0xB55B, 0xB4F6,\n    0xB483, 0xB417, 0xB3C7, 0xB3A8, 0xA07F, 0x9B5A, 0x95C3, 0x9509,\n    0x949D, 0x9472, 0x9479, 0x94A4, 0x94E7, 0x9532, 0x9579, 0x95AE,\n    0x95C3, 0xE7CF, 0xE04D, 0xD825, 0xD716, 0xD679, 0xD63A, 0xD644,\n    0xD683, 0xD6E4, 0xD752, 0xD7BA, 0xD807, 0xD825, 0xE679, 0xDEE3,\n    0xD646, 0xD473, 0xD309, 0xD1F6, 0xD127, 0xD089, 0xD00A, 0xCF98,\n    0xCF1F, 0xCE8E, 0xCDD1, 0xFBF8, 0xF83E, 0xF431, 0xF3A9, 0xF35A,\n    0xF339, 0xF33C, 0xF35B, 0xF389, 0xF3BE, 0xF3F0, 0xF415, 0xF423,\n    0xE70F, 0xE847, 0xEA27, 0xEB74, 0xECBE, 0xEE05, 0xEF48, 0xF08A,\n    0xF1CB, 0xF30B, 0xF44C, 0xF58D, 0xF6D0, 0xE290, 0xE972, 0xF0ED,\n    0xF1E6, 0xF276, 0xF2B0, 0xF2A7, 0xF26C, 0xF214, 0xF1AE, 0xF14F,\n    0xF109, 0xF0ED, 0xD0C1, 0xCAE4, 0xC485, 0xC3B1, 0xC337, 0xC305,\n    0xC30D, 0xC33E, 0xC38A, 0xC3E0, 0xC431, 0xC46D, 0xC485, 0x1C37,\n    0x183A, 0x13E4, 0x1354, 0x1301, 0x12DF, 0x12E4, 0x1306, 0x1339,\n    0x1374, 0x13AB, 0x13D4, 0x13E4, 0x60B0, 0x5AE2, 0x5492, 0x53C1,\n    0x5347, 0x5316, 0x531E, 0x534F, 0x539A, 0x53EF, 0x543F, 0x547B,\n    0x5492, 0xFF6E, 0xFF84, 0xFF84, 0xFF2B, 0xFEBA, 0xFE92, 0xFEEE,\n    0xFF92, 0x0028, 0x0097, 0x00FD, 0x0160, 0x01C4, 0x0235, 0x0236,\n    0x0226, 0x01F1, 0x01B0, 0x018E, 0x01AE, 0x01ED, 0x020F, 0x0201,\n    0x01E0, 0x01B6, 0x0190, 0xBF43, 0xC0BC, 0xC02B, 0xB87F, 0xAED0,\n    0xAAE4, 0xB173, 0xBDC5, 0xC979, 0xD270, 0xDAF8, 0xE354, 0xEBC5,\n    0x5489, 0x556F, 0x538F, 0x4DD4, 0x47C1, 0x4165, 0x3AD1, 0x3413,\n    0x2D3C, 0x265A, 0x1F7D, 0x18B4, 0x1211, 0x0EF3, 0x0D2E, 0x0AAC,\n    0x08D8, 0x06B9, 0x04E8, 0x03FF, 0x0498, 0x0724, 0x0B3D, 0x1039,\n    0x156D, 0x1A30, 0x142D, 0x1546, 0x16D7, 0x1821, 0x19BE, 0x1B1A,\n    0x1B9D, 0x1AB4, 0x17F4, 0x13C0, 0x0EB8, 0x097B, 0x04A8, 0xB176,\n    0xAE00, 0xAB05, 0xAC61, 0xAE79, 0xB134, 0xB47A, 0xB833, 0xBC94,\n    0xC1AC, 0xC72E, 0xCCC9, 0xD230, 0x00BC, 0x00B9, 0x00BB, 0x00D2,\n    0x00EE, 0x00F3, 0x00D4, 0x009D, 0x0061, 0x0023, 0xFFE2, 0xFF9E,\n    0xFF5B, 0xFF30, 0xFF32, 0xFF45, 0xFF7B, 0xFFBC, 0xFFD8, 0xFFAE,\n    0xFF60, 0xFF27, 0xFF15, 0xFF11, 0xFF14, 0xFF13, 0xC4CD, 0xC4E7,\n    0xC23C, 0xB8EB, 0xADB7, 0xA921, 0xB02A, 0xBDD1, 0xCB9D, 0xD766,\n    0xE34A, 0xEF38, 0xFB21, 0x5361, 0x5553, 0x5435, 0x4DD3, 0x46FF,\n    0x3FCD, 0x3852, 0x30A1, 0x28CE, 0x20EE, 0x1915, 0x1156, 0x09C7,\n    0xEC5E, 0xEDB3, 0xEFB3, 0xF162, 0xF366, 0xF52C, 0xF61F, 0xF5AE,\n    0xF371, 0xEFCA, 0xEB53, 0xE6A9, 0xE267, 0xEC8B, 0xEBFE, 0xEAD9,\n    0xE920, 0xE6D4, 0xE4BD, 0xE3A4, 0xE453, 0xE749, 0xEC01, 0xF1BA,\n    0xF7B3, 0xFD2B, 0xB692, 0xB468, 0xB2C7, 0xB41C, 0xB5F1, 0xB83C,\n    0xBAF4, 0xBE10, 0xC1BB, 0xC5FA, 0xCA8E, 0xCF37, 0xD3B5, 0x85AC,\n    0x8515, 0x7FFF, 0x76C5, 0x6D21, 0x6324, 0x58E3, 0x4E6E, 0x43DB,\n    0x393A, 0x2EA0, 0x2420, 0x19CB, 0x7FF3, 0x7FF4, 0x7FFF, 0x8012,\n    0x8026, 0x803B, 0x8051, 0x8067, 0x807D, 0x8093, 0x80A9, 0x80BF,\n    0x80D5, 0x4016, 0x403A, 0x4171, 0x43A4, 0x45F1, 0x4853, 0x4AC5,\n    0x4D43, 0x4FC9, 0x5252, 0x54DA, 0x575B, 0x59D2, 0xBF5F, 0x7AA7,\n    0x7B35, 0x7FFF, 0x88AD, 0x91BF, 0x9B25, 0xA4CC, 0xAEA3, 0xB897,\n    0xC297, 0xCC91, 0xD673, 0xE02C, 0x804E, 0x8046, 0x7FFF, 0x7F7D,\n    0x7EF5, 0x7E68, 0x7DD8, 0x7D45, 0x7CB0, 0x7C1A, 0x7B85, 0x7AF1,\n    0x7A60, 0x400F, 0x4034, 0x4171, 0x43AF, 0x4607, 0x4875, 0x4AF3,\n    0x4D7E, 0x5010, 0x52A6, 0x553A, 0x57C8, 0x5A4B, 0xBF5F, 0xE1B0,\n    0xE0E6, 0xDF6E, 0xDEA4, 0xDE51, 0xDD6C, 0xDC13, 0xDA62, 0xD877,\n    0xD66E, 0xD466, 0xD27B, 0xD0CA, 0x0606, 0x0691, 0x0792, 0x081C,\n    0x0852, 0x08E5, 0x09C5, 0x0ADD, 0x0C1B, 0x0D6C, 0x0EBD, 0x0FFA,\n    0x1113, 0x5FE8, 0x6005, 0x6058, 0x60D9, 0x617F, 0x6245, 0x6321,\n    0x640C, 0x6500, 0x65F3, 0x66DE, 0x67BB, 0x6880,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_AB.inc.c",
    "content": "static const struct Animation anim_AB[] = {\n    1,\n    189,\n    0,\n    0,\n    0x0A,\n    ANIMINDEX_NUMPARTS(anim_AB_indices),\n    anim_AB_values,\n    anim_AB_indices,\n    0,\n};\n\n\nstatic const u16 anim_AB_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x016D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0163,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0159,\n    0x000A, 0x013A, 0x000A, 0x0144, 0x000A, 0x014E,\n    0x000A, 0x002B, 0x000A, 0x0035, 0x000A, 0x003F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0021,\n    0x000A, 0x0003, 0x000A, 0x000D, 0x000A, 0x0017,\n    0x000A, 0x011B, 0x000A, 0x0125, 0x000A, 0x012F,\n    0x000A, 0x0071, 0x000A, 0x007B, 0x000A, 0x0085,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0067,\n    0x000A, 0x0049, 0x000A, 0x0053, 0x000A, 0x005D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0139,\n    0x000A, 0x00FD, 0x000A, 0x0107, 0x000A, 0x0111,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x00F3,\n    0x000A, 0x00D5, 0x000A, 0x00DF, 0x000A, 0x00E9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0158,\n    0x000A, 0x00B7, 0x000A, 0x00C1, 0x000A, 0x00CB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x00AD,\n    0x000A, 0x008F, 0x000A, 0x0099, 0x000A, 0x00A3,\n};\n\nstatic const s16 anim_AB_values[] = {\n    0x0000, 0x00BD, 0x3FFF, 0x2C14, 0x2B29, 0x28B2, 0x251B, 0x20D0,\n    0x1C3D, 0x17D0, 0x13F3, 0x0FDF, 0x0D27, 0x0606, 0x05C0, 0x0500,\n    0x03EA, 0x029D, 0x013A, 0xFFE2, 0xFEB5, 0xFD72, 0xFC97, 0xF585,\n    0xF53B, 0xF475, 0xF353, 0xF1F9, 0xF086, 0xEF1F, 0xEDE3, 0xEC89,\n    0xEB9B, 0xF36E, 0xF125, 0xEB0E, 0xE250, 0xD811, 0xCD78, 0xC3AC,\n    0xBBD3, 0xB8CC, 0xB907, 0xAFBB, 0xADCE, 0xA89D, 0xA10D, 0x9803,\n    0x8E64, 0x8514, 0x7CF8, 0x7478, 0x6ED3, 0x9739, 0x97F1, 0x99E0,\n    0x9CB1, 0xA010, 0xA3A5, 0xA71E, 0xAA24, 0xAD4E, 0xAF69, 0xDC21,\n    0xDE17, 0xE35D, 0xEB0B, 0xF43A, 0xFE00, 0x0775, 0x0FB2, 0x1855,\n    0x1E11, 0xD021, 0xD174, 0xD505, 0xDA38, 0xE06F, 0xE70E, 0xED78,\n    0xF310, 0xF8FD, 0xFCF4, 0xF547, 0xF5D7, 0xF75C, 0xF991, 0xFC35,\n    0xFF04, 0x01BB, 0x041A, 0x0696, 0x083C, 0xF677, 0xF603, 0xF4CA,\n    0xF301, 0xF0DD, 0xEE95, 0xEC5E, 0xEA6D, 0xE84B, 0xE6D6, 0xEDB3,\n    0xEC0C, 0xE7A5, 0xE150, 0xD9E1, 0xD22B, 0xCB02, 0xC539, 0xC292,\n    0xC248, 0xC805, 0xC9BE, 0xCE61, 0xD521, 0xDD33, 0xE5CA, 0xEE1B,\n    0xF559, 0xFCF0, 0x01FA, 0x1573, 0x1637, 0x1847, 0x1B49, 0x1EE0,\n    0x22B3, 0x2666, 0x299F, 0x2D01, 0x2F3B, 0x584E, 0x5A25, 0x5F16,\n    0x6649, 0x6EE4, 0x780D, 0x80EB, 0x88A4, 0x90BB, 0x961B, 0x01EB,\n    0x01EE, 0x01E9, 0x01C4, 0x0178, 0x0116, 0x00AC, 0x0047, 0xFFF6,\n    0xFFC4, 0x0186, 0x0185, 0x0188, 0x0190, 0x01A1, 0x01B6, 0x01CC,\n    0x01E1, 0x01F2, 0x01FD, 0xEEE4, 0xEF19, 0xEE9B, 0xEBC5, 0xE619,\n    0xDEDA, 0xD706, 0xCF97, 0xC98A, 0xC5DA, 0x0EA9, 0x0E70, 0x0EF9,\n    0x1211, 0x183F, 0x2024, 0x28AD, 0x30C7, 0x3760, 0x3B65, 0x1B98,\n    0x1B58, 0x1AC7, 0x1A30, 0x19A0, 0x1900, 0x185F, 0x17CB, 0x1754,\n    0x170A, 0x0320, 0x0348, 0x03C8, 0x04A8, 0x05F1, 0x0784, 0x092F,\n    0x0AC1, 0x0C06, 0x0CCE, 0xD40B, 0xD3EA, 0xD35F, 0xD230, 0xD047,\n    0xCDE7, 0xCB5E, 0xC8FA, 0xC708, 0xC5D8, 0xFF43, 0xFF42, 0xFF46,\n    0xFF5B, 0xFF83, 0xFFB6, 0xFFEE, 0x0022, 0x004D, 0x0067, 0xFF12,\n    0xFF12, 0xFF12, 0xFF13, 0xFF17, 0xFF1B, 0xFF20, 0xFF24, 0xFF28,\n    0xFF2A, 0xFF3D, 0xFF4B, 0xFE6E, 0xFB21, 0xF4EA, 0xED08, 0xE48B,\n    0xDC7F, 0xD5F4, 0xD1F7, 0x05FD, 0x05D4, 0x0682, 0x09C7, 0x1028,\n    0x1847, 0x210C, 0x295E, 0x3024, 0x3446, 0xE121, 0xE157, 0xE1D5,\n    0xE267, 0xE302, 0xE3B5, 0xE46D, 0xE517, 0xE5A0, 0xE5F5, 0xFEED,\n    0xFEC7, 0xFE3E, 0xFD2B, 0xFB7D, 0xF969, 0xF733, 0xF51D, 0xF36C,\n    0xF263, 0xD552, 0xD548, 0xD4E3, 0xD3B5, 0xD19B, 0xCEF5, 0xCC1D,\n    0xC96C, 0xC73C, 0xC5E6, 0x1C50, 0x1FFF, 0x29D3, 0x37F8, 0x4898,\n    0x59DF, 0x69F8, 0x770E, 0x7DAD, 0x7F0A, 0x8053, 0x8007, 0x7F3F,\n    0x7E25, 0x7CE4, 0x7BA6, 0x7A95, 0x79DB, 0x7AA4, 0x7BD4, 0x5B45,\n    0x5B84, 0x5C21, 0x5CEA, 0x5DAB, 0x5E32, 0x5E4E, 0x5DCB, 0x58AC,\n    0x5349, 0xBF5F, 0xDEF0, 0xDC19, 0xD47E, 0xC97E, 0xBC78, 0xAECB,\n    0xA1D7, 0x96F9, 0x8EC6, 0x8AAE, 0x7BE2, 0x7CD6, 0x7F5A, 0x82E8,\n    0x86F9, 0x8B07, 0x8E8D, 0x9103, 0x8F03, 0x8BB5, 0x5ADC, 0x5A9D,\n    0x59EE, 0x58E3, 0x5790, 0x560B, 0x5467, 0x52BA, 0x4F13, 0x4BD4,\n    0xBF5F, 0xD17C, 0xD20F, 0xD39C, 0xD5DE, 0xD894, 0xDB79, 0xDE4A,\n    0xE0C4, 0xE2A4, 0xE3A6, 0x109A, 0x1039, 0x0F33, 0x0DB4, 0x0BEA,\n    0x0A00, 0x0824, 0x0682, 0x0546, 0x049D, 0x6843, 0x67FC, 0x673D,\n    0x6628, 0x64DC, 0x637A, 0x6223, 0x60F8, 0x601A, 0x5FA8,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_AC.inc.c",
    "content": "static const struct Animation anim_AC[] = {\n    0,\n    189,\n    8,\n    0,\n    0x18,\n    ANIMINDEX_NUMPARTS(anim_AC_indices),\n    anim_AC_values,\n    anim_AC_indices,\n    0,\n};\n\n\nstatic const u16 anim_AC_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x0018, 0x030D, 0x0018, 0x0325, 0x0018, 0x033D,\n    0x0018, 0x02C5, 0x0018, 0x02DD, 0x0018, 0x02F5,\n    0x0018, 0x027D, 0x0018, 0x0295, 0x0018, 0x02AD,\n    0x0001, 0x0279, 0x0001, 0x027A, 0x0001, 0x027B,\n    0x0018, 0x0063, 0x0018, 0x007B, 0x0018, 0x0093,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x004B,\n    0x0018, 0x0003, 0x0018, 0x001B, 0x0018, 0x0033,\n    0x0001, 0x025E, 0x0001, 0x025F, 0x0001, 0x0260,\n    0x0018, 0x010B, 0x0018, 0x0123, 0x0018, 0x013B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x00F3,\n    0x0018, 0x00AB, 0x0018, 0x00C3, 0x0018, 0x00DB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x0261,\n    0x0018, 0x0244, 0x0001, 0x025C, 0x0001, 0x025D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x022C,\n    0x0018, 0x01E4, 0x0018, 0x01FC, 0x0018, 0x0214,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x027C,\n    0x0018, 0x01B3, 0x0001, 0x01CB, 0x0018, 0x01CC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x019B,\n    0x0018, 0x0153, 0x0018, 0x016B, 0x0018, 0x0183,\n};\n\nstatic const s16 anim_AC_values[] = {\n    0x0000, 0x00BD, 0x3FFF, 0x2DC0, 0x2DC5, 0x2DD0, 0x2DDF, 0x2DED,\n    0x2DF9, 0x2DFD, 0x2DFB, 0x2DF5, 0x2DEA, 0x2DD8, 0x2DC0, 0x2D96,\n    0x2D5A, 0x2D1B, 0x2CEA, 0x2CD6, 0x2CE3, 0x2D05, 0x2D32, 0x2D64,\n    0x2D92, 0x2DB3, 0x2DC0, 0x0666, 0x05F6, 0x04DF, 0x0375, 0x020A,\n    0x00F3, 0x0083, 0x00ED, 0x01FE, 0x0370, 0x04FF, 0x0666, 0x07F3,\n    0x09DD, 0x0BBB, 0x0D26, 0x0DB5, 0x0D4E, 0x0C42, 0x0AD5, 0x0947,\n    0x07D9, 0x06CE, 0x0666, 0xF5B8, 0xF5EE, 0xF673, 0xF720, 0xF7CE,\n    0xF853, 0xF888, 0xF857, 0xF7D6, 0xF727, 0xF668, 0xF5B8, 0xF4F1,\n    0xF3F8, 0xF304, 0xF24A, 0xF200, 0xF235, 0xF2BD, 0xF377, 0xF442,\n    0xF4FC, 0xF584, 0xF5B8, 0xF913, 0xF931, 0xF97C, 0xF9DF, 0xFA48,\n    0xFAA0, 0xFAD4, 0xFAD0, 0xFA3E, 0xF929, 0xF810, 0xF772, 0xF745,\n    0xF727, 0xF717, 0xF712, 0xF717, 0xF721, 0xF731, 0xF742, 0xF754,\n    0xF763, 0xF76E, 0xF772, 0xB490, 0xB490, 0xB491, 0xB492, 0xB494,\n    0xB497, 0xB499, 0xB49B, 0xB49E, 0xB4A0, 0xB4A3, 0xB4A5, 0xB4A6,\n    0xB4A7, 0xB4A7, 0xB4A7, 0xB4A4, 0xB4A1, 0xB49D, 0xB49A, 0xB496,\n    0xB493, 0xB490, 0xB490, 0x92C7, 0x92A8, 0x9251, 0x91CB, 0x9120,\n    0x9059, 0x8F7F, 0x8E9C, 0x8DB9, 0x8CDF, 0x8C18, 0x8B6D, 0x8AE8,\n    0x8A90, 0x8A71, 0x8ABB, 0x8B7F, 0x8C9A, 0x8DEB, 0x8F4D, 0x909E,\n    0x91BA, 0x927E, 0x92C7, 0xD684, 0xD688, 0xD694, 0xD6A5, 0xD6BC,\n    0xD6D6, 0xD6F3, 0xD711, 0xD72F, 0xD74C, 0xD766, 0xD77D, 0xD78F,\n    0xD79A, 0xD79E, 0xD795, 0xD77B, 0xD755, 0xD729, 0xD6FA, 0xD6CD,\n    0xD6A8, 0xD68E, 0xD684, 0xCDD1, 0xCE09, 0xCE82, 0xCEFC, 0xCF34,\n    0xCF26, 0xCF00, 0xCEC9, 0xCE89, 0xCE46, 0xCE06, 0xCDD1, 0xCDA4,\n    0xCD7A, 0xCD5C, 0xCD51, 0xCD56, 0xCD65, 0xCD79, 0xCD91, 0xCDA9,\n    0xCDBD, 0xCDCC, 0xCDD1, 0xF423, 0xF2C3, 0xEFBE, 0xECB8, 0xEB59,\n    0xEBA7, 0xEC7D, 0xEDB9, 0xEF3B, 0xF0E3, 0xF291, 0xF423, 0xF60C,\n    0xF857, 0xFA43, 0xFB11, 0xFAC5, 0xF9FC, 0xF8E0, 0xF79A, 0xF654,\n    0xF538, 0xF46F, 0xF423, 0xF6D0, 0xF642, 0xF50B, 0xF3D4, 0xF346,\n    0xF367, 0xF3BF, 0xF441, 0xF4DF, 0xF58A, 0xF634, 0xF6D0, 0xF783,\n    0xF851, 0xF8FB, 0xF942, 0xF927, 0xF8E0, 0xF87C, 0xF809, 0xF796,\n    0xF732, 0xF6EB, 0xF6D0, 0xFF30, 0xFF0E, 0xFEB5, 0xFE3D, 0xFDB9,\n    0xFD40, 0xFCE8, 0xFCC6, 0xFCCD, 0xFCE0, 0xFCFF, 0xFD26, 0xFD55,\n    0xFD89, 0xFDC1, 0xFDFB, 0xFE34, 0xFE6C, 0xFEA1, 0xFECF, 0xFEF7,\n    0xFF15, 0xFF29, 0xFF30, 0xC412, 0xC44F, 0xC48D, 0xC4CA, 0xC584,\n    0xC669, 0xC766, 0xC86A, 0xC965, 0xCA43, 0xCAF5, 0xCB69, 0xCB8E,\n    0xCB59, 0xCADA, 0xCA21, 0xC93F, 0xC844, 0xC742, 0xC649, 0xC56A,\n    0xC4B6, 0xC43E, 0xC412, 0x0824, 0x0802, 0x07E0, 0x07BE, 0x07D3,\n    0x07F3, 0x0819, 0x0843, 0x086D, 0x0895, 0x08B7, 0x08CF, 0x08DC,\n    0x08DC, 0x08D3, 0x08C2, 0x08AD, 0x0894, 0x087A, 0x0860, 0x0848,\n    0x0835, 0x0828, 0x0824, 0x5341, 0x547E, 0x55BB, 0x56F8, 0x56BF,\n    0x564E, 0x55B4, 0x5502, 0x5445, 0x538D, 0x52EA, 0x5269, 0x521B,\n    0x51FB, 0x51F5, 0x5206, 0x5227, 0x5253, 0x5287, 0x52BD, 0x52EF,\n    0x5319, 0x5336, 0x5341, 0x01C4, 0x01C5, 0x01C8, 0x01CC, 0x01D0,\n    0x01D5, 0x01D8, 0x01DA, 0x01D9, 0x01D6, 0x01CF, 0x01C4, 0x01AA,\n    0x017F, 0x014A, 0x0117, 0x00EE, 0x00C9, 0x00A3, 0x008E, 0x0099,\n    0x00F4, 0x017E, 0x01C4, 0x0190, 0x0190, 0x018E, 0x018B, 0x0187,\n    0x0184, 0x0182, 0x0181, 0x0181, 0x0183, 0x0188, 0x0190, 0x01A4,\n    0x01C5, 0x01EC, 0x0211, 0x022B, 0x023C, 0x0247, 0x0249, 0x023B,\n    0x0204, 0x01B7, 0x0190, 0xEBC5, 0xEBDD, 0xEC1B, 0xEC70, 0xECCF,\n    0xED29, 0xED70, 0xED96, 0xED8D, 0xED45, 0xECB2, 0xEBC5, 0xE999,\n    0xE5E0, 0xE173, 0xDD28, 0xD9D6, 0xD6F8, 0xD441, 0xD2DA, 0xD3EC,\n    0xDB4D, 0xE62F, 0xEBC5, 0x1211, 0x1385, 0x1746, 0x1C68, 0x2200,\n    0x2722, 0x2AE3, 0x2C58, 0x288B, 0x2006, 0x1718, 0x1211, 0x10AF,\n    0x0FC9, 0x0F4B, 0x0F25, 0x0F45, 0x0F9A, 0x1012, 0x109B, 0x1124,\n    0x119C, 0x11F0, 0x1211, 0x0500, 0x0505, 0x0512, 0x0526, 0x053F,\n    0x055A, 0x0577, 0x0592, 0x05AA, 0x05BE, 0x05CC, 0x05D0, 0x05CC,\n    0x05C1, 0x05B0, 0x059A, 0x0582, 0x0568, 0x054F, 0x0536, 0x0521,\n    0x0510, 0x0504, 0x0500, 0x04A8, 0xF127, 0xEFC7, 0xEC01, 0xE65E,\n    0xDF66, 0xD7A2, 0xCF99, 0xC7D4, 0xC0DD, 0xBB39, 0xB774, 0xB613,\n    0xB73D, 0xBA74, 0xBF4F, 0xC564, 0xCC4C, 0xD39D, 0xDAEE, 0xE1D6,\n    0xE7EC, 0xECC7, 0xEFFD, 0xF127, 0xFF5B, 0xFF72, 0xFFA7, 0xFFE2,\n    0x000B, 0x001B, 0x0019, 0x0006, 0xFFDF, 0xFFA9, 0xFF77, 0xFF5B,\n    0xFF52, 0xFF4C, 0xFF48, 0xFF47, 0xFF48, 0xFF4A, 0xFF4E, 0xFF51,\n    0xFF55, 0xFF58, 0xFF5A, 0xFF5B, 0xFF13, 0xFF0C, 0xFEFC, 0xFEEB,\n    0xFEDF, 0xFEDE, 0xFEE4, 0xFEEC, 0xFEF6, 0xFF03, 0xFF0D, 0xFF13,\n    0xFF16, 0xFF17, 0xFF18, 0xFF18, 0xFF18, 0xFF17, 0xFF16, 0xFF16,\n    0xFF15, 0xFF14, 0xFF14, 0xFF13, 0xFB21, 0xF7AB, 0xEFAA, 0xE6AB,\n    0xE03B, 0xDDAB, 0xDDD8, 0xE0A0, 0xE6B9, 0xEF11, 0xF6D0, 0xFB21,\n    0xFC85, 0xFD6E, 0xFDEC, 0xFE12, 0xFDF2, 0xFD9D, 0xFD24, 0xFC99,\n    0xFC0F, 0xFB96, 0xFB41, 0xFB21, 0x09C7, 0x09A7, 0x0954, 0x08E1,\n    0x0862, 0x07E9, 0x0789, 0x0756, 0x0763, 0x07C3, 0x0888, 0x09C7,\n    0x0C23, 0x0FDD, 0x1470, 0x1957, 0x1E0D, 0x2210, 0x24D8, 0x25E3,\n    0x217F, 0x17D5, 0x0E2B, 0x09C7, 0x0366, 0x0357, 0x032F, 0x02F4,\n    0x02AA, 0x0258, 0x0202, 0x01B0, 0x0166, 0x012B, 0x0103, 0x00F4,\n    0x0100, 0x0122, 0x0156, 0x0196, 0x01DF, 0x022D, 0x027A, 0x02C4,\n    0x0304, 0x0337, 0x035A, 0x0366, 0xFD2B, 0xBADB, 0x19CB, 0x80D5,\n    0x59D2, 0xBF5F, 0xC09D, 0xC406, 0xC91E, 0xCF69, 0xD66E, 0xDDB0,\n    0xE4B4, 0xEB00, 0xF018, 0xF380, 0xF4BE, 0xF3B2, 0xF0CA, 0xEC67,\n    0xE6E8, 0xE0AB, 0xDA0F, 0xD373, 0xCD35, 0xC7B6, 0xC353, 0xC06C,\n    0xBF5F, 0xE02C, 0x7A60, 0x5A4B, 0xBF5F, 0x0000, 0x0021, 0x006A,\n    0x00B3, 0x00D4, 0x00CE, 0x00BB, 0x00A0, 0x007D, 0x0055, 0x002A,\n    0x0000, 0xFFC3, 0xFF74, 0xFF2E, 0xFF11, 0xFF1B, 0xFF36, 0xFF5D,\n    0xFF89, 0xFFB5, 0xFFDB, 0xFFF6, 0x0000, 0x0000, 0x007E, 0x0193,\n    0x02A8, 0x0326, 0x030D, 0x02C8, 0x025F, 0x01DA, 0x0143, 0x00A2,\n    0x0000, 0xFF18, 0xFDEA, 0xFCE4, 0xFC75, 0xFC9C, 0xFD03, 0xFD94,\n    0xFE3B, 0xFEE1, 0xFF73, 0xFFD9, 0x0000, 0xD0CA, 0xD0CB, 0xD0CE,\n    0xD0D1, 0xD0D2, 0xD0D1, 0xD0D0, 0xD0CF, 0xD0CD, 0xD0CB, 0xD0CA,\n    0xD0CA, 0xD0CB, 0xD0CF, 0xD0D3, 0xD0D4, 0xD0D4, 0xD0D3, 0xD0D1,\n    0xD0CF, 0xD0CD, 0xD0CB, 0xD0CA, 0xD0CA, 0x0000, 0x0047, 0x00CB,\n    0x0112, 0x010D, 0x00FE, 0x00E7, 0x00C7, 0x009F, 0x0070, 0x003B,\n    0x0000, 0xFF80, 0xFED4, 0xFE7D, 0xFE8A, 0xFEAE, 0xFEE1, 0xFF1F,\n    0xFF5F, 0xFF9C, 0xFFD0, 0xFFF3, 0x0000, 0x0000, 0x0012, 0x0035,\n    0x0048, 0x0047, 0x0043, 0x003C, 0x0034, 0x002A, 0x001D, 0x000F,\n    0x0000, 0xFFDF, 0xFFB1, 0xFF9A, 0xFF9D, 0xFFA7, 0xFFB4, 0xFFC5,\n    0xFFD6, 0xFFE6, 0xFFF4, 0xFFFD, 0x0000, 0x1113, 0x1113, 0x1115,\n    0x1116, 0x1115, 0x1115, 0x1114, 0x1114, 0x1113, 0x1113, 0x1113,\n    0x1113, 0x1114, 0x1117, 0x1118, 0x1118, 0x1117, 0x1117, 0x1116,\n    0x1115, 0x1114, 0x1113, 0x1113, 0x1113, 0x057A, 0x0541, 0x04A4,\n    0x03BA, 0x0299, 0x0156, 0x0009, 0xFEC7, 0xFDA6, 0xFCBC, 0xFC1F,\n    0xFBE6, 0xFC16, 0xFC9B, 0xFD65, 0xFE62, 0xFF81, 0x00AF, 0x01DF,\n    0x02FE, 0x03FB, 0x04C4, 0x054A, 0x057A, 0x038B, 0x0366, 0x0300,\n    0x0269, 0x01AD, 0x00DC, 0x0004, 0xFF35, 0xFE79, 0xFDE2, 0xFD7C,\n    0xFD57, 0xFD76, 0xFDCD, 0xFE4F, 0xFEF3, 0xFFAD, 0x0070, 0x0135,\n    0x01EF, 0x0292, 0x0315, 0x036B, 0x038B, 0x68BD, 0x68BC, 0x68BB,\n    0x68B8, 0x68B5, 0x68B2, 0x68AE, 0x68AA, 0x68A7, 0x68A5, 0x68A3,\n    0x68A2, 0x68A3, 0x68A4, 0x68A7, 0x68A9, 0x68AC, 0x68B0, 0x68B3,\n    0x68B6, 0x68B9, 0x68BB, 0x68BD, 0x68BD,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_AD.inc.c",
    "content": "static const struct Animation anim_AD[] = {\n    1,\n    189,\n    0,\n    0,\n    0x19,\n    ANIMINDEX_NUMPARTS(anim_AD_indices),\n    anim_AD_values,\n    anim_AD_indices,\n    0,\n};\n\n\nstatic const u16 anim_AD_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0019, 0x0389,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0019, 0x0370,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0019, 0x0357,\n    0x0019, 0x030B, 0x0019, 0x0324, 0x0019, 0x033D,\n    0x0019, 0x0067, 0x0019, 0x0080, 0x0019, 0x0099,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0019, 0x004E,\n    0x0019, 0x0003, 0x0019, 0x001C, 0x0019, 0x0035,\n    0x0019, 0x02BF, 0x0019, 0x02D8, 0x0019, 0x02F1,\n    0x0019, 0x0116, 0x0019, 0x012F, 0x0019, 0x0148,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0019, 0x00FD,\n    0x0019, 0x00B2, 0x0019, 0x00CB, 0x0019, 0x00E4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x030A,\n    0x0019, 0x0274, 0x0019, 0x028D, 0x0019, 0x02A6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0019, 0x025B,\n    0x0019, 0x0210, 0x0019, 0x0229, 0x0019, 0x0242,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0356,\n    0x0019, 0x01C5, 0x0019, 0x01DE, 0x0019, 0x01F7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0019, 0x01AC,\n    0x0019, 0x0161, 0x0019, 0x017A, 0x0019, 0x0193,\n};\n\nstatic const s16 anim_AD_values[] = {\n    0x0000, 0x00BD, 0x3FFF, 0x0D27, 0x0D3C, 0x0D7B, 0x0DE0, 0x0E66,\n    0x0F09, 0x0FC8, 0x109C, 0x1183, 0x1279, 0x137B, 0x1484, 0x1590,\n    0x169D, 0x17A6, 0x18A7, 0x199D, 0x1A84, 0x1B59, 0x1C17, 0x1CBB,\n    0x1D41, 0x1DA5, 0x1DE4, 0x1DFA, 0xFC97, 0xFC9B, 0xFCA6, 0xFCB7,\n    0xFCCE, 0xFCE9, 0xFD0A, 0xFD2E, 0xFD55, 0xFD7F, 0xFDAB, 0xFDD8,\n    0xFE06, 0xFE34, 0xFE61, 0xFE8C, 0xFEB6, 0xFEDE, 0xFF02, 0xFF22,\n    0xFF3E, 0xFF55, 0xFF66, 0xFF71, 0xFF74, 0xEB9B, 0xEB9B, 0xEB9A,\n    0xEB99, 0xEB98, 0xEB96, 0xEB94, 0xEB92, 0xEB8F, 0xEB8C, 0xEB8A,\n    0xEB87, 0xEB84, 0xEB81, 0xEB7E, 0xEB7B, 0xEB78, 0xEB76, 0xEB74,\n    0xEB72, 0xEB70, 0xEB6E, 0xEB6D, 0xEB6D, 0xEB6C, 0xB907, 0xB936,\n    0xB9C0, 0xBA9C, 0xBBC2, 0xBD29, 0xBECA, 0xC09C, 0xC296, 0xC4B2,\n    0xC6E6, 0xC92B, 0xCB77, 0xCDC4, 0xD009, 0xD23D, 0xD458, 0xD653,\n    0xD825, 0xD9C5, 0xDB2D, 0xDC52, 0xDD2E, 0xDDB8, 0xDDE8, 0x6ED0,\n    0x6F03, 0x6F94, 0x707C, 0x71B2, 0x732D, 0x74E5, 0x76D1, 0x78E8,\n    0x7B21, 0x7D74, 0x7FD9, 0x8249, 0x84B7, 0x871B, 0x896F, 0x8BA8,\n    0x8DBF, 0x8FAB, 0x9162, 0x92DE, 0x9414, 0x94FC, 0x958D, 0x95C0,\n    0xAF69, 0xAF57, 0xAF24, 0xAED3, 0xAE67, 0xADE3, 0xAD49, 0xAC9E,\n    0xABE3, 0xAB1C, 0xAA4D, 0xA977, 0xA89E, 0xA7C5, 0xA6EF, 0xA61F,\n    0xA559, 0xA49E, 0xA3F2, 0xA359, 0xA2D5, 0xA268, 0xA217, 0xA1E5,\n    0xA1D3, 0x1E11, 0x1E01, 0x1DD6, 0x1D90, 0x1D32, 0x1CC0, 0x1C3B,\n    0x1BA7, 0x1B05, 0x1A59, 0x19A6, 0x18ED, 0x1832, 0x1776, 0x16BD,\n    0x160A, 0x155E, 0x14BC, 0x1428, 0x13A3, 0x1331, 0x12D3, 0x128D,\n    0x1262, 0x1252, 0xFCF4, 0xFCD7, 0xFC83, 0xFBFD, 0xFB4A, 0xFA6F,\n    0xF971, 0xF855, 0xF720, 0xF5D7, 0xF47F, 0xF31D, 0xF1B7, 0xF050,\n    0xEEEE, 0xED96, 0xEC4D, 0xEB18, 0xE9FC, 0xE8FE, 0xE823, 0xE770,\n    0xE6EA, 0xE696, 0xE679, 0x083C, 0x082C, 0x07FE, 0x07B5, 0x0753,\n    0x06DC, 0x0651, 0x05B6, 0x050E, 0x045A, 0x039E, 0x02DD, 0x0219,\n    0x0156, 0x0094, 0xFFDA, 0xFF26, 0xFE7E, 0xFDE3, 0xFD58, 0xFCE1,\n    0xFC7F, 0xFC36, 0xFC08, 0xFBF8, 0xE6D6, 0xE6D7, 0xE6D7, 0xE6D9,\n    0xE6DA, 0xE6DD, 0xE6DF, 0xE6E2, 0xE6E5, 0xE6E8, 0xE6EC, 0xE6EF,\n    0xE6F3, 0xE6F6, 0xE6FA, 0xE6FD, 0xE700, 0xE704, 0xE706, 0xE709,\n    0xE70B, 0xE70D, 0xE70E, 0xE70F, 0xE70F, 0xC248, 0xC272, 0xC2EB,\n    0xC3AB, 0xC4AC, 0xC5E7, 0xC753, 0xC8EB, 0xCAA7, 0xCC7F, 0xCE6D,\n    0xD069, 0xD26C, 0xD46F, 0xD66B, 0xD859, 0xDA31, 0xDBED, 0xDD85,\n    0xDEF1, 0xE02C, 0xE12D, 0xE1ED, 0xE266, 0xE290, 0x01FC, 0x01E6,\n    0x01A5, 0x013D, 0x00B2, 0x0008, 0xFF44, 0xFE68, 0xFD78, 0xFC79,\n    0xFB6F, 0xFA5C, 0xF946, 0xF830, 0xF71D, 0xF613, 0xF513, 0xF424,\n    0xF348, 0xF283, 0xF1D9, 0xF14E, 0xF0E6, 0xF0A5, 0xF08E, 0x2F3B,\n    0x2F2B, 0x2EFE, 0x2EB6, 0x2E56, 0x2DE0, 0x2D58, 0x2CBF, 0x2C19,\n    0x2B69, 0x2AB0, 0x29F2, 0x2931, 0x2870, 0x27B2, 0x26FA, 0x2649,\n    0x25A3, 0x250B, 0x2482, 0x240D, 0x23AD, 0x2365, 0x2337, 0x2328,\n    0x961E, 0x961B, 0x9611, 0x9601, 0x95EC, 0x95D2, 0x95B4, 0x9592,\n    0x956E, 0x9547, 0x951E, 0x94F5, 0x94CA, 0x94A0, 0x9476, 0x944D,\n    0x9426, 0x9402, 0x93E0, 0x93C2, 0x93A9, 0x9393, 0x9384, 0x937A,\n    0x9376, 0xFFC4, 0xFFC4, 0xFFC6, 0xFFC8, 0xFFCB, 0xFFCF, 0xFFD3,\n    0xFFD8, 0xFFDE, 0xFFE3, 0xFFE9, 0xFFEF, 0xFFF6, 0xFFFC, 0x0001,\n    0x0007, 0x000D, 0x0012, 0x0017, 0x001B, 0x001F, 0x0022, 0x0025,\n    0x0026, 0x0027, 0x01FD, 0x01FD, 0x01FE, 0x0200, 0x0202, 0x0205,\n    0x0208, 0x020C, 0x0210, 0x0214, 0x0219, 0x021D, 0x0222, 0x0226,\n    0x022B, 0x022F, 0x0234, 0x0238, 0x023B, 0x023F, 0x0241, 0x0244,\n    0x0245, 0x0246, 0x0247, 0xC5DA, 0xC5E3, 0xC5FB, 0xC622, 0xC655,\n    0xC694, 0xC6DD, 0xC72F, 0xC788, 0xC7E6, 0xC849, 0xC8AF, 0xC916,\n    0xC97D, 0xC9E3, 0xCA46, 0xCAA5, 0xCAFD, 0xCB4F, 0xCB98, 0xCBD7,\n    0xCC0B, 0xCC31, 0xCC49, 0xCC52, 0x3B65, 0x3B5F, 0x3B4E, 0x3B33,\n    0x3B0E, 0x3AE1, 0x3AAD, 0x3A73, 0x3A34, 0x39F1, 0x39AA, 0x3962,\n    0x3918, 0x38CF, 0x3886, 0x3840, 0x37FD, 0x37BE, 0x3783, 0x374F,\n    0x3723, 0x36FE, 0x36E3, 0x36D1, 0x36CB, 0x170A, 0x1700, 0x16E1,\n    0x16AF, 0x166D, 0x161C, 0x15BE, 0x1556, 0x14E4, 0x146A, 0x13EB,\n    0x1369, 0x12E4, 0x1260, 0x11DD, 0x115F, 0x10E5, 0x1073, 0x100A,\n    0x0FAD, 0x0F5C, 0x0F1A, 0x0EE8, 0x0EC9, 0x0EBF, 0x0CCE, 0x0CD8,\n    0x0CF4, 0x0D21, 0x0D5D, 0x0DA6, 0x0DFB, 0x0E5A, 0x0EC1, 0x0F2F,\n    0x0FA2, 0x1018, 0x1090, 0x1108, 0x117E, 0x11F1, 0x125F, 0x12C6,\n    0x1325, 0x137A, 0x13C3, 0x13FF, 0x142C, 0x1448, 0x1452, 0xC5D8,\n    0xC5BD, 0xC56F, 0xC4F3, 0xC44D, 0xC382, 0xC297, 0xC190, 0xC072,\n    0xBF42, 0xBE03, 0xBCBC, 0xBB6F, 0xBA23, 0xB8DB, 0xB79D, 0xB66D,\n    0xB54E, 0xB448, 0xB35C, 0xB292, 0xB1EC, 0xB170, 0xB122, 0xB107,\n    0x0067, 0x0067, 0x0067, 0x0067, 0x0068, 0x0068, 0x0068, 0x0069,\n    0x0069, 0x006A, 0x006A, 0x006B, 0x006C, 0x006C, 0x006D, 0x006D,\n    0x006E, 0x006F, 0x006F, 0x006F, 0x0070, 0x0070, 0x0070, 0x0071,\n    0x0071, 0xFF2A, 0xFF2A, 0xFF29, 0xFF28, 0xFF27, 0xFF25, 0xFF23,\n    0xFF21, 0xFF1F, 0xFF1C, 0xFF1A, 0xFF17, 0xFF15, 0xFF12, 0xFF0F,\n    0xFF0D, 0xFF0A, 0xFF08, 0xFF06, 0xFF04, 0xFF02, 0xFF01, 0xFF00,\n    0xFF00, 0xFEFF, 0xD1F7, 0xD1F6, 0xD1F6, 0xD1F5, 0xD1F4, 0xD1F3,\n    0xD1F2, 0xD1F0, 0xD1EE, 0xD1ED, 0xD1EB, 0xD1E9, 0xD1E7, 0xD1E5,\n    0xD1E3, 0xD1E1, 0xD1DF, 0xD1DE, 0xD1DC, 0xD1DB, 0xD1D9, 0xD1D9,\n    0xD1D8, 0xD1D7, 0xD1D7, 0x3446, 0x344C, 0x345D, 0x3479, 0x349D,\n    0x34CA, 0x34FF, 0x3539, 0x3579, 0x35BC, 0x3603, 0x364C, 0x3696,\n    0x36DF, 0x3728, 0x376F, 0x37B3, 0x37F2, 0x382D, 0x3861, 0x388E,\n    0x38B3, 0x38CE, 0x38E0, 0x38E6, 0xE5F5, 0xE602, 0xE627, 0xE662,\n    0xE6B2, 0xE713, 0xE783, 0xE801, 0xE88A, 0xE91C, 0xE9B4, 0xEA51,\n    0xEAF0, 0xEB8F, 0xEC2C, 0xECC4, 0xED56, 0xEDDF, 0xEE5C, 0xEECD,\n    0xEF2E, 0xEF7D, 0xEFB9, 0xEFDE, 0xEFEB, 0xF263, 0xF258, 0xF237,\n    0xF202, 0xF1BC, 0xF167, 0xF103, 0xF094, 0xF01C, 0xEF9B, 0xEF15,\n    0xEE8A, 0xEDFE, 0xED72, 0xECE7, 0xEC61, 0xEBE0, 0xEB67, 0xEAF8,\n    0xEA95, 0xEA3F, 0xE9F9, 0xE9C5, 0xE9A4, 0xE999, 0xC5E6, 0xC5C8,\n    0xC574, 0xC4EE, 0xC43A, 0xC35F, 0xC261, 0xC144, 0xC00E, 0xBEC5,\n    0xBD6C, 0xBC0A, 0xBAA2, 0xB93B, 0xB7D8, 0xB67F, 0xB536, 0xB400,\n    0xB2E4, 0xB1E5, 0xB10A, 0xB056, 0xAFD0, 0xAF7C, 0xAF5F, 0x7F0A,\n    0x7F13, 0x7F2C, 0x7F53, 0x7F88, 0x7FC9, 0x8016, 0x806A, 0x80C5,\n    0x8126, 0x818C, 0x81F4, 0x825E, 0x82C8, 0x8330, 0x8396, 0x83F7,\n    0x8452, 0x84A6, 0x84F1, 0x8531, 0x8566, 0x858E, 0x85A6, 0x85AF,\n    0x7BD4, 0x7BD9, 0x7BE8, 0x7C01, 0x7C22, 0x7C4A, 0x7C79, 0x7CAD,\n    0x7CE5, 0x7D22, 0x7D61, 0x7DA1, 0x7DE3, 0x7E25, 0x7E66, 0x7EA5,\n    0x7EE1, 0x7F1A, 0x7F4E, 0x7F7C, 0x7FA4, 0x7FC5, 0x7FDE, 0x7FED,\n    0x7FF3, 0x5349, 0x5331, 0x52E9, 0x5276, 0x51DD, 0x5122, 0x5049,\n    0x4F57, 0x4E4F, 0x4D36, 0x4C10, 0x4AE2, 0x49B0, 0x487D, 0x474F,\n    0x4629, 0x4510, 0x4408, 0x4316, 0x423D, 0x4182, 0x40E9, 0x4077,\n    0x402F, 0x4016, 0xBF5F, 0x8AB1, 0x8A9D, 0x8A61, 0x8A01, 0x8981,\n    0x88E5, 0x8830, 0x8766, 0x8689, 0x859F, 0x84AA, 0x83AD, 0x82AD,\n    0x81AE, 0x80B1, 0x7FB9, 0x7ECF, 0x7DF2, 0x7D28, 0x7C73, 0x7BD7,\n    0x7B57, 0x7AF7, 0x7ABB, 0x7AA7, 0x8BB8, 0x8BA9, 0x8B7F, 0x8B3B,\n    0x8AE0, 0x8A71, 0x89F0, 0x8960, 0x88C4, 0x881D, 0x876E, 0x86BB,\n    0x8605, 0x854F, 0x849B, 0x83ED, 0x8346, 0x82A9, 0x8219, 0x8199,\n    0x812A, 0x80CF, 0x808B, 0x8060, 0x8051, 0x4BD4, 0x4BC5, 0x4B99,\n    0x4B52, 0x4AF5, 0x4A82, 0x49FD, 0x4968, 0x48C7, 0x481B, 0x4767,\n    0x46AD, 0x45F2, 0x4536, 0x447C, 0x43C8, 0x431C, 0x427B, 0x41E6,\n    0x4161, 0x40EE, 0x4091, 0x404A, 0x401E, 0x400F, 0xBF5F, 0xE3A6,\n    0xE3A2, 0xE396, 0xE383, 0xE36A, 0xE34B, 0xE327, 0xE2FF, 0xE2D3,\n    0xE2A4, 0xE273, 0xE241, 0xE20F, 0xE1DC, 0xE1AA, 0xE179, 0xE14A,\n    0xE11E, 0xE0F6, 0xE0D2, 0xE0B3, 0xE09A, 0xE087, 0xE07B, 0xE077,\n    0x049D, 0x049F, 0x04A4, 0x04AC, 0x04B8, 0x04C5, 0x04D5, 0x04E7,\n    0x04FB, 0x050F, 0x0525, 0x053B, 0x0552, 0x0568, 0x057E, 0x0594,\n    0x05A9, 0x05BC, 0x05CE, 0x05DE, 0x05EC, 0x05F7, 0x05FF, 0x0604,\n    0x0606, 0x5FA8, 0x5FA6, 0x5F9F, 0x5F95, 0x5F86, 0x5F75, 0x5F61,\n    0x5F4A, 0x5F32, 0x5F17, 0x5EFC, 0x5EE0, 0x5EC3, 0x5EA7, 0x5E8B,\n    0x5E6F, 0x5E55, 0x5E3D, 0x5E26, 0x5E12, 0x5E00, 0x5DF2, 0x5DE7,\n    0x5DE1, 0x5DDE,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_AE.inc.c",
    "content": "static const struct Animation anim_AE[] = {\n    1,\n    189,\n    0,\n    0,\n    0x0B,\n    ANIMINDEX_NUMPARTS(anim_AE_indices),\n    anim_AE_values,\n    anim_AE_indices,\n    0,\n};\n\n\nstatic const u16 anim_AE_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x000B, 0x01BD, 0x000B, 0x01C8, 0x000B, 0x01D3,\n    0x000B, 0x019C, 0x000B, 0x01A7, 0x000B, 0x01B2,\n    0x000B, 0x017B, 0x000B, 0x0186, 0x000B, 0x0191,\n    0x000B, 0x0159, 0x000B, 0x0164, 0x000B, 0x016F,\n    0x000B, 0x002F, 0x000B, 0x003A, 0x000B, 0x0045,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000B, 0x0024,\n    0x000B, 0x0003, 0x000B, 0x000E, 0x000B, 0x0019,\n    0x000B, 0x0137, 0x000B, 0x0142, 0x000B, 0x014D,\n    0x000B, 0x007C, 0x000B, 0x0087, 0x000B, 0x0092,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000B, 0x0071,\n    0x000B, 0x0050, 0x000B, 0x005B, 0x000B, 0x0066,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0158,\n    0x000B, 0x0116, 0x000B, 0x0121, 0x000B, 0x012C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000B, 0x010B,\n    0x000B, 0x00EA, 0x000B, 0x00F5, 0x000B, 0x0100,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x017A,\n    0x000B, 0x00C9, 0x000B, 0x00D4, 0x000B, 0x00DF,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000B, 0x00BE,\n    0x000B, 0x009D, 0x000B, 0x00A8, 0x000B, 0x00B3,\n};\n\nstatic const s16 anim_AE_values[] = {\n    0x0000, 0x00BD, 0x3FFF, 0xEC3D, 0xEC92, 0xEDE0, 0xEFEB, 0xF275,\n    0xF542, 0xF815, 0xFAB2, 0xFCDB, 0xFE53, 0xFEDE, 0xF289, 0xF34F,\n    0xF476, 0xF5E3, 0xF779, 0xF91D, 0xFAB3, 0xFC1F, 0xFD45, 0xFE0A,\n    0xFE52, 0xE228, 0xE0DE, 0xDF8B, 0xDE37, 0xDCEE, 0xDBBA, 0xDAA7,\n    0xD9BE, 0xD90B, 0xD897, 0xD86E, 0xF337, 0xF298, 0xF0C2, 0xEE02,\n    0xEAA6, 0xE6FA, 0xE34C, 0xDFE8, 0xDD1D, 0xDB38, 0xDA85, 0xAA64,\n    0xB1B0, 0xB7BB, 0xBCED, 0xC1A9, 0xC655, 0xCB57, 0xD16B, 0xD78A,\n    0xDB76, 0xDAF2, 0x89A5, 0x81E8, 0x7986, 0x7126, 0x6968, 0x62EF,\n    0x5E5E, 0x5E10, 0x6209, 0x6762, 0x6B33, 0xD45A, 0xD66B, 0xDBDF,\n    0xE382, 0xEC21, 0xF489, 0xFB86, 0x03D8, 0x0E17, 0x15D0, 0x168E,\n    0x2DF6, 0x2C03, 0x2939, 0x25D7, 0x221D, 0x1E49, 0x1A9B, 0x1750,\n    0x14A8, 0x12E2, 0x123D, 0x2002, 0x1EB1, 0x1D4A, 0x1BDA, 0x1A6F,\n    0x1916, 0x17DD, 0x16D3, 0x1603, 0x157D, 0x154D, 0xF9E9, 0xF803,\n    0xF59F, 0xF2E6, 0xF002, 0xED1E, 0xEA62, 0xE7F9, 0xE60C, 0xE4C6,\n    0xE450, 0xEAF0, 0xEA51, 0xE913, 0xE75F, 0xE55E, 0xE33A, 0xE11C,\n    0xDF2F, 0xDD9B, 0xDC8A, 0xDC26, 0xB84C, 0xB47B, 0xB00E, 0xAB38,\n    0xA628, 0xA111, 0x9C22, 0x95F3, 0x8EB5, 0x8901, 0x8770, 0x0902,\n    0x009A, 0xF863, 0xF09B, 0xE981, 0xE356, 0xDE59, 0xDC3C, 0xDD60,\n    0xE013, 0xE2A0, 0x52F8, 0x587B, 0x5EAC, 0x6547, 0x6C09, 0x72AF,\n    0x78F4, 0x7FC8, 0x870B, 0x8CDA, 0x8F59, 0x0220, 0x0232, 0x0234,\n    0x0227, 0x0211, 0x01F4, 0x01D5, 0x01B7, 0x019C, 0x018A, 0x0183,\n    0x0131, 0x0141, 0x0154, 0x0169, 0x017E, 0x0193, 0x01A6, 0x01B7,\n    0x01C4, 0x01CC, 0x01D0, 0xF78A, 0xF8D8, 0xF888, 0xF6F3, 0xF474,\n    0xF162, 0xEE17, 0xEAED, 0xE83B, 0xE65C, 0xE5A9, 0x11DE, 0x109D,\n    0x108D, 0x1170, 0x1305, 0x150B, 0x1743, 0x196D, 0x1B48, 0x1C94,\n    0x1D11, 0x10AE, 0x1003, 0x0F01, 0x0DB9, 0x0C3C, 0x0A9A, 0x0844,\n    0x0520, 0x01F0, 0xFF79, 0xFE7A, 0x10AA, 0x1138, 0x11D5, 0x1249,\n    0x125D, 0x11D9, 0x101E, 0x0D45, 0x0A2C, 0x07AD, 0x06A8, 0xC721,\n    0xC86F, 0xC91A, 0xC95B, 0xC966, 0xC973, 0xC936, 0xC875, 0xC784,\n    0xC6B6, 0xC65F, 0xFFAE, 0xFFA6, 0xFFA4, 0xFFA7, 0xFFAD, 0xFFB5,\n    0xFFBF, 0xFFC8, 0xFFD1, 0xFFD6, 0xFFD9, 0xFEE3, 0xFEDB, 0xFED6,\n    0xFED4, 0xFED4, 0xFED6, 0xFED9, 0xFEDC, 0xFEDF, 0xFEE1, 0xFEE2,\n    0xEF83, 0xF145, 0xF1D7, 0xF175, 0xF05C, 0xEEC8, 0xECF6, 0xEB22,\n    0xE989, 0xE867, 0xE7F9, 0x0BDC, 0x0AEA, 0x0B64, 0x0CF8, 0x0F57,\n    0x1233, 0x153C, 0x1822, 0x1A97, 0x1C4A, 0x1CED, 0xE998, 0xEA48,\n    0xEB97, 0xED5E, 0xEF75, 0xF1B3, 0xF4E9, 0xF94B, 0xFDC2, 0x013B,\n    0x02A1, 0xF089, 0xF026, 0xEF95, 0xEF21, 0xEF15, 0xEFBB, 0xF1C0,\n    0xF4FD, 0xF87E, 0xFB4B, 0xFC71, 0xC84F, 0xC9F9, 0xCAC2, 0xCAF2,\n    0xCAD2, 0xCAAA, 0xC9FD, 0xC87D, 0xC6B9, 0xC540, 0xC4A3, 0x61DC,\n    0x5944, 0x4FF9, 0x465C, 0x3CCD, 0x33AE, 0x2B5E, 0x243F, 0x1EB1,\n    0x1B15, 0x19CB, 0x8041, 0x8053, 0x8066, 0x807A, 0x808F, 0x80A2,\n    0x80B3, 0x80C2, 0x80CE, 0x80D5, 0x80D8, 0x48A1, 0x4AAE, 0x4CE5,\n    0x4F30, 0x5178, 0x53A5, 0x55A1, 0x5754, 0x58A7, 0x5983, 0x59D2,\n    0xBF5F, 0x9D43, 0xA53E, 0xADDF, 0xB6CD, 0xBFAD, 0xC826, 0xCFDD,\n    0xD67A, 0xDBA3, 0xDEFD, 0xE02F, 0x7E49, 0x7DD1, 0x7D50, 0x7CCB,\n    0x7C46, 0x7BC7, 0x7B54, 0x7AF1, 0x7AA4, 0x7A72, 0x7A60, 0x4900,\n    0x4B10, 0x4D4B, 0x4F99, 0x51E4, 0x5415, 0x5613, 0x57C9, 0x591E,\n    0x59FC, 0x5A4B, 0xBF5F, 0xFF0A, 0xFF69, 0x004B, 0x00DC, 0x00FD,\n    0x011C, 0x0138, 0x0150, 0x0162, 0x016D, 0x0171, 0x00E3, 0x014D,\n    0x018A, 0x01E5, 0x0278, 0x0322, 0x03D2, 0x0477, 0x0502, 0x0561,\n    0x0584, 0xD6F1, 0xD601, 0xD525, 0xD46A, 0xD3BE, 0xD30E, 0xD264,\n    0xD1CC, 0xD152, 0xD100, 0xD0E3, 0xFF7C, 0xFED9, 0xFE1F, 0xFD59,\n    0xFC8F, 0xFBCB, 0xFB16, 0xFA79, 0xF9FE, 0xF9AD, 0xF990, 0xFEBC,\n    0xFDE6, 0xFD6D, 0xFD42, 0xFD53, 0xFD8F, 0xFDE5, 0xFE46, 0xFEA0,\n    0xFEE2, 0xFEFC, 0x020D, 0x02DD, 0x043D, 0x0605, 0x080F, 0x0A34,\n    0x0C4D, 0x0E32, 0x0FBD, 0x10C6, 0x1127, 0x0014, 0x002E, 0x004C,\n    0x006B, 0x008B, 0x00AB, 0x00C8, 0x00E1, 0x00F4, 0x0101, 0x0106,\n    0x000D, 0x001E, 0x0031, 0x0046, 0x005B, 0x006F, 0x0082, 0x0092,\n    0x009F, 0x00A7, 0x00AA, 0x755B, 0x752C, 0x744C, 0x72E6, 0x7125,\n    0x6F34, 0x6D3D, 0x6B6B, 0x69EA, 0x68E3, 0x6882,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_AF.inc.c",
    "content": "static const struct Animation anim_AF[] = {\n    1,\n    189,\n    0,\n    0,\n    0x19,\n    ANIMINDEX_NUMPARTS(anim_AF_indices),\n    anim_AF_values,\n    anim_AF_indices,\n    0,\n};\n\n\nstatic const u16 anim_AF_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x0019, 0x03ED, 0x0019, 0x0406, 0x0019, 0x041F,\n    0x0019, 0x03A2, 0x0019, 0x03BB, 0x0019, 0x03D4,\n    0x0019, 0x0357, 0x0019, 0x0370, 0x0019, 0x0389,\n    0x0019, 0x030B, 0x0019, 0x0324, 0x0019, 0x033D,\n    0x0019, 0x0067, 0x0019, 0x0080, 0x0019, 0x0099,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0019, 0x004E,\n    0x0019, 0x0003, 0x0019, 0x001C, 0x0019, 0x0035,\n    0x0019, 0x02BF, 0x0019, 0x02D8, 0x0019, 0x02F1,\n    0x0019, 0x0116, 0x0019, 0x012F, 0x0019, 0x0148,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0019, 0x00FD,\n    0x0019, 0x00B2, 0x0019, 0x00CB, 0x0019, 0x00E4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x030A,\n    0x0019, 0x0274, 0x0019, 0x028D, 0x0019, 0x02A6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0019, 0x025B,\n    0x0019, 0x0210, 0x0019, 0x0229, 0x0019, 0x0242,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0356,\n    0x0019, 0x01C5, 0x0019, 0x01DE, 0x0019, 0x01F7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0019, 0x01AC,\n    0x0019, 0x0161, 0x0019, 0x017A, 0x0019, 0x0193,\n};\n\nstatic const s16 anim_AF_values[] = {\n    0x0000, 0x00BD, 0x3FFF, 0xEB8C, 0xEBF6, 0xEDCC, 0xF07E, 0xF37B,\n    0xF633, 0xF815, 0xF96A, 0xFAD5, 0xFC50, 0xFDD8, 0xFF66, 0x00F6,\n    0x0283, 0x0408, 0x0580, 0x06E5, 0x0833, 0x0965, 0x0A76, 0x0B61,\n    0x0C20, 0x0CAE, 0x0D08, 0x0D27, 0xF26E, 0xF36E, 0xF4F5, 0xF6BB,\n    0xF878, 0xF9E3, 0xFAB3, 0xFB15, 0xFB6B, 0xFBB3, 0xFBF0, 0xFC22,\n    0xFC4B, 0xFC6A, 0xFC82, 0xFC93, 0xFC9E, 0xFCA5, 0xFCA7, 0xFCA6,\n    0xFCA3, 0xFCA0, 0xFC9C, 0xFC99, 0xFC97, 0xE1D5, 0xE01B, 0xDE5A,\n    0xDCC1, 0xDB7C, 0xDABA, 0xDAA7, 0xDB19, 0xDBC1, 0xDC98, 0xDD97,\n    0xDEB6, 0xDFED, 0xE136, 0xE289, 0xE3DF, 0xE530, 0xE675, 0xE7A7,\n    0xE8BD, 0xE9B2, 0xEA7D, 0xEB17, 0xEB79, 0xEB9B, 0xF41D, 0xF388,\n    0xF137, 0xEDCC, 0xE9EA, 0xE634, 0xE34C, 0xE0E0, 0xDE39, 0xDB64,\n    0xD86A, 0xD558, 0xD23A, 0xCF19, 0xCC03, 0xC901, 0xC620, 0xC36B,\n    0xC0EE, 0xBEB3, 0xBCC7, 0xBB34, 0xBA06, 0xB948, 0xB907, 0xA99A,\n    0xAE6B, 0xB222, 0xB6F9, 0xBF29, 0xD867, 0xEBB7, 0xE7C9, 0xDF95,\n    0xD4C3, 0xC8FE, 0xBDF0, 0xB542, 0xAE0A, 0xA667, 0x9E8B, 0x96A9,\n    0x8EF5, 0x87A2, 0x80E3, 0x7AE8, 0x75EA, 0x721A, 0x6FAB, 0x6ED0,\n    0x867F, 0x7A15, 0x6CC5, 0x606B, 0x56EA, 0x559A, 0x5BE1, 0x64CA,\n    0x6F60, 0x7A8A, 0x8535, 0x8E42, 0x949C, 0x9909, 0x9D0A, 0xA0A1,\n    0xA3CF, 0xA696, 0xA8F8, 0xAAF8, 0xAC96, 0xADD5, 0xAEB7, 0xAF3D,\n    0xAF69, 0xCF16, 0xCBD8, 0xCC98, 0xD0CC, 0xD7E8, 0xF5E0, 0x118D,\n    0x1218, 0x0D9A, 0x0654, 0xFE8A, 0xF87C, 0xF66D, 0xF7CB, 0xFA54,\n    0xFDCB, 0x01F0, 0x0685, 0x0B49, 0x1000, 0x1468, 0x1843, 0x1B52,\n    0x1D57, 0x1E11, 0x2E61, 0x2C39, 0x28E6, 0x24F1, 0x20E2, 0x1D43,\n    0x1A9B, 0x188F, 0x166F, 0x1440, 0x1209, 0x0FCF, 0x0D98, 0x0B6C,\n    0x0950, 0x074A, 0x0560, 0x0399, 0x01FA, 0x008B, 0xFF51, 0xFE52,\n    0xFD93, 0xFD1D, 0xFCF4, 0x1FD8, 0x1E6E, 0x1CFD, 0x1B91, 0x1A35,\n    0x18F5, 0x17DD, 0x16D6, 0x15C0, 0x14A1, 0x137A, 0x1250, 0x1127,\n    0x1001, 0x0EE2, 0x0DCE, 0x0CC8, 0x0BD4, 0x0AF5, 0x0A2E, 0x0984,\n    0x08FA, 0x0893, 0x0852, 0x083C, 0xF9E9, 0xF795, 0xF498, 0xF15D,\n    0xEE4E, 0xEBD7, 0xEA62, 0xE9A0, 0xE8FA, 0xE86D, 0xE7F8, 0xE798,\n    0xE74C, 0xE711, 0xE6E6, 0xE6C8, 0xE6B6, 0xE6AD, 0xE6AC, 0xE6B1,\n    0xE6B9, 0xE6C3, 0xE6CC, 0xE6D3, 0xE6D6, 0xEB61, 0xEAD5, 0xE96C,\n    0xE772, 0xE534, 0xE2FE, 0xE11C, 0xDF64, 0xDD7E, 0xDB74, 0xD94D,\n    0xD712, 0xD4CD, 0xD284, 0xD041, 0xCE0D, 0xCBF0, 0xC9F3, 0xC81D,\n    0xC679, 0xC50D, 0xC3E4, 0xC305, 0xC279, 0xC248, 0xABC8, 0x9495,\n    0x7C36, 0x6932, 0x6205, 0x6632, 0x6FDD, 0x7D7D, 0x8D8B, 0x9E7A,\n    0xAEC2, 0xBCD9, 0xC738, 0xCF19, 0xD6AF, 0xDDE6, 0xE4AD, 0xEAEF,\n    0xF09A, 0xF59A, 0xF9DD, 0xFD4E, 0xFFDC, 0x0171, 0x01FC, 0x0384,\n    0xF2F5, 0xE2DD, 0xD66C, 0xD0D5, 0xD1A1, 0xD5AB, 0xDC1B, 0xE41D,\n    0xECD8, 0xF578, 0xFD25, 0x0308, 0x07DE, 0x0CDC, 0x11E7, 0x16E2,\n    0x1BB0, 0x2036, 0x2457, 0x27F7, 0x2AFA, 0x2D44, 0x2EB8, 0x2F3B,\n    0x5A50, 0x6BB2, 0x7DE7, 0x8C4F, 0x9241, 0x8F8D, 0x8823, 0x7D92,\n    0x7172, 0x6553, 0x5AC6, 0x535F, 0x50AF, 0x5236, 0x5618, 0x5BDB,\n    0x6306, 0x6B20, 0x73AF, 0x7C3A, 0x844B, 0x8B61, 0x9108, 0x94C4,\n    0x961E, 0x023D, 0x025D, 0x0263, 0x0255, 0x023C, 0x021E, 0x0203,\n    0x01EA, 0x01CB, 0x01A9, 0x0183, 0x015B, 0x0131, 0x0106, 0x00DB,\n    0x00B0, 0x0086, 0x005F, 0x003A, 0x0019, 0xFFFD, 0xFFE5, 0xFFD3,\n    0xFFC8, 0xFFC4, 0x0130, 0x0140, 0x0153, 0x0166, 0x0179, 0x0189,\n    0x0194, 0x019D, 0x01A6, 0x01AE, 0x01B7, 0x01BF, 0x01C7, 0x01CE,\n    0x01D5, 0x01DC, 0x01E2, 0x01E8, 0x01ED, 0x01F2, 0x01F6, 0x01F9,\n    0x01FB, 0x01FC, 0x01FD, 0xF9FE, 0xFC5E, 0xFC30, 0xFA40, 0xF75A,\n    0xF449, 0xF1DA, 0xEFCD, 0xED68, 0xEAB9, 0xE7CE, 0xE4B6, 0xE17E,\n    0xDE36, 0xDAEB, 0xD7AD, 0xD488, 0xD18D, 0xCEC9, 0xCC4A, 0xCA1F,\n    0xC857, 0xC6FF, 0xC626, 0xC5DA, 0x103E, 0x0E22, 0x0DC4, 0x0EA9,\n    0x1057, 0x1251, 0x141F, 0x15DB, 0x17EC, 0x1A44, 0x1CD5, 0x1F94,\n    0x2271, 0x2561, 0x2855, 0x2B40, 0x2E16, 0x30C7, 0x3348, 0x358C,\n    0x3783, 0x3922, 0x3A5B, 0x3B20, 0x3B65, 0x109F, 0x0FD4, 0x0EB1,\n    0x0D5A, 0x0BF1, 0x0A9A, 0x0820, 0x08D7, 0x09AC, 0x0A98, 0x0B97,\n    0x0CA5, 0x0DBD, 0x0ED9, 0x0FF6, 0x110E, 0x121D, 0x131E, 0x140C,\n    0x14E2, 0x159C, 0x1635, 0x16A8, 0x16F1, 0x170A, 0x108C, 0x10D7,\n    0x1131, 0x1187, 0x11C5, 0x11D9, 0x102D, 0x0FE9, 0x0FA4, 0x0F5F,\n    0x0F1C, 0x0ED9, 0x0E98, 0x0E59, 0x0E1D, 0x0DE5, 0x0DB0, 0x0D7F,\n    0x0D53, 0x0D2D, 0x0D0C, 0x0CF2, 0x0CDE, 0x0CD2, 0x0CCE, 0xC710,\n    0xC838, 0xC8BD, 0xC8EC, 0xC910, 0xC973, 0xC941, 0xC90D, 0xC8D6,\n    0xC89B, 0xC85D, 0xC81D, 0xC7DD, 0xC79C, 0xC75D, 0xC71F, 0xC6E4,\n    0xC6AC, 0xC679, 0xC64C, 0xC624, 0xC604, 0xC5EC, 0xC5DD, 0xC5D8,\n    0xFFA5, 0xFF98, 0xFF94, 0xFF98, 0xFFA0, 0xFFA9, 0xFFB1, 0xFFB9,\n    0xFFC2, 0xFFCD, 0xFFD9, 0xFFE5, 0xFFF3, 0x0000, 0x000D, 0x001B,\n    0x0028, 0x0035, 0x0041, 0x004B, 0x0054, 0x005C, 0x0062, 0x0066,\n    0x0067, 0xFEDD, 0xFED2, 0xFECD, 0xFECC, 0xFECE, 0xFED1, 0xFED4,\n    0xFED7, 0xFEDB, 0xFEDF, 0xFEE4, 0xFEEA, 0xFEF0, 0xFEF7, 0xFEFD,\n    0xFF04, 0xFF0B, 0xFF11, 0xFF17, 0xFF1C, 0xFF21, 0xFF24, 0xFF27,\n    0xFF29, 0xFF2A, 0xF169, 0xF3F9, 0xF497, 0xF3D7, 0xF24A, 0xF084,\n    0xEF18, 0xEDE5, 0xEC6E, 0xEABE, 0xE8DE, 0xE6DA, 0xE4BB, 0xE28C,\n    0xE058, 0xDE28, 0xDC07, 0xDA00, 0xD81C, 0xD666, 0xD4E9, 0xD3AE,\n    0xD2C1, 0xD22B, 0xD1F7, 0x0A2F, 0x0895, 0x090B, 0x0AE7, 0x0D7E,\n    0x1024, 0x122D, 0x13D4, 0x15BC, 0x17D9, 0x1A22, 0x1C8C, 0x1F0B,\n    0x2195, 0x2420, 0x269F, 0x2909, 0x2B53, 0x2D72, 0x2F5B, 0x3103,\n    0x3260, 0x3367, 0x340C, 0x3446, 0xE9AF, 0xEA91, 0xEC13, 0xEDF1,\n    0xEFE7, 0xF1B3, 0xF50B, 0xF45C, 0xF38D, 0xF2A4, 0xF1A5, 0xF096,\n    0xEF7C, 0xEE5C, 0xED3A, 0xEC1C, 0xEB07, 0xEA00, 0xE90B, 0xE82F,\n    0xE76F, 0xE6D1, 0xE65A, 0xE60F, 0xE5F5, 0xF0AA, 0xF08D, 0xF044,\n    0xEFF0, 0xEFB7, 0xEFBB, 0xF1B8, 0xF1D9, 0xF1F6, 0xF20F, 0xF224,\n    0xF236, 0xF244, 0xF24F, 0xF258, 0xF25E, 0xF262, 0xF265, 0xF266,\n    0xF267, 0xF266, 0xF265, 0xF264, 0xF263, 0xF263, 0xC835, 0xC9A6,\n    0xCA36, 0xCA4C, 0xCA50, 0xCAAA, 0xCA0B, 0xC9C8, 0xC981, 0xC936,\n    0xC8E9, 0xC89B, 0xC84C, 0xC7FE, 0xC7B2, 0xC768, 0xC721, 0xC6DF,\n    0xC6A3, 0xC66D, 0xC63F, 0xC619, 0xC5FD, 0xC5EC, 0xC5E6, 0x6025,\n    0x54D3, 0x48BF, 0x3D3B, 0x339D, 0x2D37, 0x2B5E, 0x2CE3, 0x2F9B,\n    0x335F, 0x3806, 0x3D69, 0x435F, 0x49C1, 0x5066, 0x5727, 0x5DDC,\n    0x645C, 0x6A81, 0x7021, 0x7514, 0x7934, 0x7C57, 0x7E57, 0x7F0A,\n    0x804A, 0x806E, 0x8095, 0x80B7, 0x80CD, 0x80CF, 0x80B3, 0x8080,\n    0x8042, 0x7FF7, 0x7FA7, 0x7F51, 0x7EF7, 0x7E99, 0x7E3B, 0x7DDE,\n    0x7D83, 0x7D2C, 0x7CDB, 0x7C92, 0x7C52, 0x7C1D, 0x7BF6, 0x7BDC,\n    0x7BD4, 0x48F4, 0x4B73, 0x4E1A, 0x50AD, 0x52F1, 0x54AB, 0x55A1,\n    0x560D, 0x5656, 0x567E, 0x568A, 0x567C, 0x5659, 0x5625, 0x55E2,\n    0x5594, 0x553F, 0x54E7, 0x548F, 0x543A, 0x53ED, 0x53AB, 0x5377,\n    0x5355, 0x5349, 0xBF5F, 0x9ED0, 0xA93A, 0xB455, 0xBEF1, 0xC7DC,\n    0xCDE6, 0xCFDD, 0xCED6, 0xCCC3, 0xC9C6, 0xC603, 0xC19C, 0xBCB2,\n    0xB768, 0xB1E0, 0xAC3C, 0xA69F, 0xA12B, 0x9C02, 0x9746, 0x931A,\n    0x8FA0, 0x8CF9, 0x8B49, 0x8AB1, 0x7E22, 0x7D62, 0x7C93, 0x7BD5,\n    0x7B4B, 0x7B15, 0x7B54, 0x7BF0, 0x7CB6, 0x7DA0, 0x7EA8, 0x7FC6,\n    0x80FA, 0x8235, 0x8375, 0x84B3, 0x85EB, 0x8715, 0x882B, 0x8927,\n    0x8A03, 0x8AB9, 0x8B43, 0x8B9A, 0x8BB8, 0x495D, 0x4BF8, 0x4EBD,\n    0x5167, 0x53B2, 0x5558, 0x5613, 0x5626, 0x5604, 0x55B4, 0x553B,\n    0x54A0, 0x53EA, 0x531E, 0x5242, 0x515E, 0x5077, 0x4F94, 0x4EBB,\n    0x4DF2, 0x4D40, 0x4CAA, 0x4C37, 0x4BEE, 0x4BD4, 0xBF5F, 0xFF02,\n    0xFF5E, 0x0042, 0x00DC, 0x0144, 0x01A5, 0x0142, 0xFF97, 0xFD1F,\n    0xFAA3, 0xF8EE, 0xF8C8, 0xFBC5, 0x0139, 0x0699, 0x0954, 0x0973,\n    0x08D3, 0x07A6, 0x0620, 0x0470, 0x02CA, 0x015E, 0x005F, 0x0000,\n    0x00E4, 0x014A, 0x0184, 0x01E5, 0x02AE, 0x038A, 0x03E8, 0x03A8,\n    0x0323, 0x027D, 0x01D7, 0x0155, 0x00FA, 0x00B4, 0x0080, 0x005D,\n    0x0045, 0x0032, 0x0022, 0x0016, 0x000D, 0x0006, 0x0002, 0x0000,\n    0x0000, 0xD6FA, 0xD61D, 0xD547, 0xD46A, 0xD2B9, 0xD104, 0xD1B1,\n    0xD581, 0xDAE4, 0xE0C7, 0xE617, 0xE9C3, 0xEAFD, 0xEA67, 0xE914,\n    0xE816, 0xE790, 0xE6F5, 0xE64F, 0xE5A8, 0xE509, 0xE47C, 0xE40C,\n    0xE3C1, 0xE3A6, 0xFF63, 0xFE8D, 0xFD9C, 0xFCAE, 0xFBDF, 0xFB4D,\n    0xFB16, 0xFB21, 0xFB41, 0xFB73, 0xFBB5, 0xFC04, 0xFC5C, 0xFCBD,\n    0xFD23, 0xFD8B, 0xFDF4, 0xFE5A, 0xFEBA, 0xFF13, 0xFF62, 0xFFA3,\n    0xFFD5, 0xFFF5, 0x0000, 0xFE4E, 0xFD64, 0xFD11, 0xFD25, 0xFD70,\n    0xFDC0, 0xFDE5, 0xFDEA, 0xFDF8, 0xFE0D, 0xFE29, 0xFE4B, 0xFE71,\n    0xFE9B, 0xFEC6, 0xFEF3, 0xFF20, 0xFF4B, 0xFF75, 0xFF9B, 0xFFBC,\n    0xFFD9, 0xFFEE, 0xFFFC, 0x0000, 0x01DA, 0x0304, 0x04FF, 0x0758,\n    0x099B, 0x0B56, 0x0C15, 0x0C1D, 0x0BFF, 0x0BC1, 0x0B66, 0x0AF4,\n    0x0A6E, 0x09DA, 0x093B, 0x0896, 0x07F0, 0x074D, 0x06B1, 0x0621,\n    0x05A1, 0x0536, 0x04E4, 0x04AF, 0x049D, 0x0018, 0x003A, 0x0061,\n    0x0087, 0x00A8, 0x00BF, 0x00C8, 0x00C6, 0x00C1, 0x00B9, 0x00AE,\n    0x00A2, 0x0094, 0x0084, 0x0074, 0x0064, 0x0053, 0x0043, 0x0033,\n    0x0025, 0x0019, 0x000E, 0x0006, 0x0001, 0x0000, 0x0010, 0x0026,\n    0x003F, 0x0058, 0x006D, 0x007C, 0x0082, 0x0081, 0x007D, 0x0078,\n    0x0071, 0x0069, 0x0060, 0x0056, 0x004B, 0x0041, 0x0036, 0x002B,\n    0x0021, 0x0018, 0x0010, 0x0009, 0x0004, 0x0001, 0x0000, 0x760F,\n    0x7618, 0x7529, 0x739D, 0x71D2, 0x7024, 0x6EF1, 0x6E0E, 0x6D16,\n    0x6C0F, 0x6AFA, 0x69DD, 0x68BC, 0x679B, 0x667E, 0x6568, 0x645F,\n    0x6365, 0x6280, 0x61B2, 0x6101, 0x6070, 0x6004, 0x5FC0, 0x5FA8,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_B0.inc.c",
    "content": "static const struct Animation anim_B0[] = {\n    1,\n    189,\n    0,\n    0,\n    0x05,\n    ANIMINDEX_NUMPARTS(anim_B0_indices),\n    anim_B0_values,\n    anim_B0_indices,\n    0,\n};\n\n\nstatic const u16 anim_B0_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x0005, 0x00CD, 0x0005, 0x00D2, 0x0005, 0x00D7,\n    0x0005, 0x00BE, 0x0005, 0x00C3, 0x0005, 0x00C8,\n    0x0005, 0x00AF, 0x0005, 0x00B4, 0x0005, 0x00B9,\n    0x0005, 0x009F, 0x0005, 0x00A4, 0x0005, 0x00A9,\n    0x0005, 0x0017, 0x0005, 0x001C, 0x0005, 0x0021,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0005, 0x0012,\n    0x0005, 0x0003, 0x0005, 0x0008, 0x0005, 0x000D,\n    0x0005, 0x008F, 0x0005, 0x0094, 0x0005, 0x0099,\n    0x0005, 0x003A, 0x0005, 0x003F, 0x0005, 0x0044,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0005, 0x0035,\n    0x0005, 0x0026, 0x0005, 0x002B, 0x0005, 0x0030,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x009E,\n    0x0005, 0x0080, 0x0005, 0x0085, 0x0005, 0x008A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0005, 0x007B,\n    0x0005, 0x006C, 0x0005, 0x0071, 0x0005, 0x0076,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00AE,\n    0x0005, 0x005D, 0x0005, 0x0062, 0x0005, 0x0067,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0005, 0x0058,\n    0x0005, 0x0049, 0x0005, 0x004E, 0x0005, 0x0053,\n};\n\nstatic const s16 anim_B0_values[] = {\n    0x0000, 0x00BD, 0x3FFF, 0x165C, 0x106F, 0x031D, 0xF51D, 0xED1F,\n    0xFE3D, 0xFC6D, 0xF868, 0xF44E, 0xF240, 0xE9A6, 0xE8EC, 0xE72F,\n    0xE51C, 0xE35C, 0xC035, 0xC770, 0xD7AB, 0xE8B2, 0xF252, 0x601D,\n    0x687E, 0x7BE7, 0x91C2, 0xA173, 0x9B40, 0x9A8C, 0x9872, 0x94F6,\n    0x901C, 0x3400, 0x2669, 0x0800, 0xE84F, 0xD6DF, 0xFE96, 0x071D,\n    0x156F, 0x24E2, 0x2ED5, 0x0C9F, 0x16CB, 0x236F, 0x23DD, 0x212F,\n    0xE561, 0xE91F, 0xEF79, 0xF6C3, 0xFB27, 0xD2F4, 0xD66F, 0xDE38,\n    0xE653, 0xEAC6, 0xB7D6, 0xB8DA, 0xBAD6, 0xBC30, 0xBB51, 0x377E,\n    0x330D, 0x2879, 0x1BDF, 0x115A, 0x4D79, 0x4CE0, 0x4BF5, 0x4C07,\n    0x4E65, 0xFF40, 0xFEF3, 0xFEFA, 0x008E, 0x01FA, 0x01EF, 0x01A5,\n    0x0144, 0x0125, 0x0124, 0xBB29, 0xB09B, 0xACE8, 0xD219, 0xF445,\n    0x51B6, 0x4935, 0x35F1, 0x2146, 0x1492, 0x0AE5, 0x0BD8, 0x0DEE,\n    0x1002, 0x10EF, 0x112B, 0x1108, 0x10BE, 0x1078, 0x1063, 0xAF11,\n    0xB1FF, 0xB8B5, 0xC014, 0xC4FC, 0x00D8, 0x00E4, 0x00CE, 0x003C,\n    0xFFBD, 0xFF60, 0xFF87, 0xFF9F, 0xFF46, 0xFEF0, 0xBCC5, 0xB5B2,\n    0xB455, 0xD18E, 0xEC55, 0x536B, 0x49C4, 0x33F0, 0x1CA0, 0x0E86,\n    0xF70F, 0xF512, 0xF0A4, 0xEC14, 0xE9B0, 0xEBAE, 0xEC5A, 0xEDDE,\n    0xEF7C, 0xF076, 0xA7A0, 0xABA2, 0xB4CD, 0xBED8, 0xC57B, 0x8098,\n    0x7E68, 0x78DA, 0x715C, 0x6960, 0x7FFD, 0x8005, 0x8010, 0x8020,\n    0x8031, 0x414D, 0x41D1, 0x4325, 0x44EE, 0x46D6, 0xBF5F, 0x80BC,\n    0x82C1, 0x87E9, 0x8EDF, 0x9648, 0x7FF4, 0x7FD5, 0x7F88, 0x7F20,\n    0x7EB1, 0x41A1, 0x4226, 0x437C, 0x4548, 0x4732, 0xBF5F, 0x1071,\n    0x0E3B, 0x092D, 0x03A4, 0x0000, 0xF7E8, 0xF8F2, 0xFB58, 0xFE0D,\n    0x0000, 0xDC4C, 0xDBCB, 0xDA96, 0xD923, 0xD7E9, 0x0037, 0x0045,\n    0x0057, 0x004B, 0x0000, 0x158F, 0x1297, 0x0BDA, 0x0494, 0x0000,\n    0x15C6, 0x12D8, 0x0C4E, 0x058B, 0x01F3, 0xFFFA, 0xFFF8, 0xFFF4,\n    0xFFF5, 0x0000, 0xFFFA, 0xFFF8, 0xFFF7, 0xFFF8, 0x0000, 0x5729,\n    0x5B5E, 0x64D7, 0x6EDB, 0x74AF,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_B1.inc.c",
    "content": "static const struct Animation anim_B1[] = {\n    1,\n    189,\n    0,\n    0,\n    0x1C,\n    ANIMINDEX_NUMPARTS(anim_B1_indices),\n    anim_B1_values,\n    anim_B1_indices,\n    0,\n};\n\n\nstatic const u16 anim_B1_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x001C, 0x0465, 0x001C, 0x0481, 0x001C, 0x049D,\n    0x001C, 0x0411, 0x001C, 0x042D, 0x001C, 0x0449,\n    0x001C, 0x03BD, 0x001C, 0x03D9, 0x001C, 0x03F5,\n    0x001C, 0x0368, 0x001C, 0x0384, 0x001C, 0x03A0,\n    0x001C, 0x0073, 0x001C, 0x008F, 0x001C, 0x00AB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001C, 0x0057,\n    0x001C, 0x0003, 0x001C, 0x001F, 0x001C, 0x003B,\n    0x001C, 0x0313, 0x001C, 0x032F, 0x001C, 0x034B,\n    0x001C, 0x0137, 0x001C, 0x0153, 0x001C, 0x016F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001C, 0x011B,\n    0x001C, 0x00C7, 0x001C, 0x00E3, 0x001C, 0x00FF,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0367,\n    0x001C, 0x02BF, 0x001C, 0x02DB, 0x001C, 0x02F7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001C, 0x02A3,\n    0x001C, 0x024F, 0x001C, 0x026B, 0x001C, 0x0287,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x03BC,\n    0x001C, 0x01FB, 0x001C, 0x0217, 0x001C, 0x0233,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001C, 0x01DF,\n    0x001C, 0x018B, 0x001C, 0x01A7, 0x001C, 0x01C3,\n};\n\nstatic const s16 anim_B1_values[] = {\n    0x0000, 0x00BD, 0x3FFF, 0xF8D9, 0xF75C, 0xF36B, 0xEDCE, 0xE74F,\n    0xE0B6, 0xDACD, 0xD65B, 0xD28F, 0xD111, 0xD65B, 0xE603, 0xFBDE,\n    0x10C5, 0x1D93, 0x22AD, 0x258E, 0x26AF, 0x268B, 0x259D, 0x245D,\n    0x2347, 0x22D4, 0x2258, 0x2125, 0x1FB3, 0x1E7C, 0x1DFA, 0xFA23,\n    0xF8D0, 0xF54D, 0xF04D, 0xEA84, 0xE4A3, 0xDF5F, 0xDB69, 0xD8B8,\n    0xD814, 0xDB69, 0xE4A7, 0xF192, 0xFDD8, 0x0523, 0x07B5, 0x08E3,\n    0x08FB, 0x084B, 0x0721, 0x05CB, 0x0498, 0x03D6, 0x031A, 0x01FA,\n    0x00C9, 0xFFD7, 0xFF74, 0xD5DC, 0xD971, 0xE2F0, 0xF073, 0x0017,\n    0x0FFA, 0x1E38, 0x28EC, 0x2DF6, 0x2D77, 0x28EC, 0x1FCE, 0x1322,\n    0x06BE, 0xFE75, 0xFA17, 0xF6C4, 0xF449, 0xF272, 0xF10B, 0xEFDF,\n    0xEEBC, 0xED6C, 0xEC47, 0xEBAA, 0xEB6D, 0xEB66, 0xEB6C, 0xE8E2,\n    0xE5E7, 0xDE3E, 0xD3D5, 0xC897, 0xBE72, 0xB752, 0xB523, 0xB92D,\n    0xC226, 0xCE24, 0xDB3B, 0xE781, 0xF10A, 0xF5EB, 0xF609, 0xF320,\n    0xEE0B, 0xE7A3, 0xE0C3, 0xDA45, 0xD502, 0xD1D6, 0xD1E8, 0xD4C1,\n    0xD8C5, 0xDC5B, 0xDDE8, 0xF1E1, 0xF265, 0xF3DC, 0xF62C, 0xF935,\n    0xFCDC, 0x0103, 0x058F, 0x0B92, 0x1383, 0x1C56, 0x2503, 0x2C7F,\n    0x31BF, 0x33BA, 0x2933, 0x10AE, 0xF4C7, 0xE015, 0xD621, 0xD108,\n    0xCD42, 0xC747, 0xBCD7, 0xAFE6, 0xA338, 0x9994, 0x95C0, 0x7C16,\n    0x7B72, 0x79BC, 0x773E, 0x7445, 0x711E, 0x6E16, 0x6B78, 0x68E6,\n    0x65FF, 0x6305, 0x603E, 0x5DED, 0x5C58, 0x5BC1, 0x5AA5, 0x5935,\n    0x5A44, 0x60A8, 0x70A7, 0x8796, 0x9DD2, 0xABBF, 0xAF59, 0xAD78,\n    0xA8CB, 0xA404, 0xA1D3, 0xF108, 0xF052, 0xEEA1, 0xEC9A, 0xEAE7,\n    0xEA2D, 0xEB16, 0xEE48, 0xF552, 0x0020, 0x0CF1, 0x19FD, 0x2580,\n    0x2DB5, 0x30D6, 0x2892, 0x155F, 0xFFA3, 0xEFC3, 0xE6D3, 0xE0BB,\n    0xDE22, 0xDFAF, 0xE768, 0xF446, 0x0257, 0x0DAB, 0x1252, 0x1666,\n    0x177C, 0x1A5A, 0x1E70, 0x232B, 0x27F9, 0x2C47, 0x2F84, 0x330B,\n    0x34E5, 0x2F84, 0x1E5C, 0x0648, 0xEFD9, 0xE39A, 0xDFFD, 0xDDA2,\n    0xDC5D, 0xDC03, 0xDC6A, 0xDD66, 0xDECC, 0xE071, 0xE22A, 0xE3CC,\n    0xE52C, 0xE61F, 0xE679, 0x11DB, 0x12BF, 0x151A, 0x1876, 0x1C58,\n    0x204A, 0x23D4, 0x267C, 0x2846, 0x28AF, 0x267C, 0x2078, 0x1813,\n    0x1009, 0x0B15, 0x08B2, 0x0689, 0x0499, 0x02DF, 0x015B, 0x000B,\n    0xFEED, 0xFDFF, 0xFD40, 0xFCAE, 0xFC48, 0xFC0C, 0xFBF8, 0xE1DB,\n    0xE4F3, 0xED24, 0xF8CE, 0x064D, 0x1402, 0x204C, 0x2989, 0x2E78,\n    0x2EA1, 0x2989, 0x1D39, 0x0BFC, 0xFBBE, 0xF267, 0xEEE2, 0xEC15,\n    0xE9EE, 0xE859, 0xE742, 0xE695, 0xE63F, 0xE62D, 0xE64A, 0xE683,\n    0xE6C4, 0xE6F9, 0xE70F, 0xDC26, 0xD9F2, 0xD453, 0xCCC7, 0xC4CB,\n    0xBDDC, 0xB978, 0xB91C, 0xBE28, 0xC7BE, 0xD3FF, 0xE10D, 0xED08,\n    0xF612, 0xFA4C, 0xF8B8, 0xF2A9, 0xE9BF, 0xDF97, 0xD5D0, 0xCE07,\n    0xC9DB, 0xCA6B, 0xCEA3, 0xD4D7, 0xDB58, 0xE07A, 0xE290, 0x79A3,\n    0x79AB, 0x79A5, 0x7964, 0x78BB, 0x777D, 0x757D, 0x728F, 0x6DBC,\n    0x66D9, 0x5EEB, 0x56FA, 0x500A, 0x4B20, 0x4943, 0x527E, 0x688F,\n    0x8306, 0x996D, 0xAA2B, 0xB8B4, 0xC431, 0xCE34, 0xD84D, 0xE1A3,\n    0xE95C, 0xEE9D, 0xF08E, 0xF0B5, 0xF039, 0xEEEF, 0xED12, 0xEAE0,\n    0xE897, 0xE673, 0xE4B1, 0xE31D, 0xE16F, 0xDFC8, 0xDE46, 0xDD0B,\n    0xDC37, 0xDBE9, 0xDB06, 0xDA3B, 0xDC5A, 0xE432, 0xFACC, 0x19E7,\n    0x2D67, 0x3181, 0x30F7, 0x2D87, 0x28EC, 0x24E3, 0x2328, 0x689A,\n    0x683A, 0x6769, 0x66A0, 0x6656, 0x6703, 0x691F, 0x6D23, 0x74A0,\n    0x7FB0, 0x8C9E, 0x99A9, 0xA51D, 0xAD40, 0xB058, 0xA695, 0x9029,\n    0x7763, 0x6699, 0x6371, 0x6858, 0x6EC1, 0x74EF, 0x7CB2, 0x84DA,\n    0x8C2A, 0x916F, 0x9376, 0xFFDE, 0xFFDC, 0xFFD5, 0xFFCB, 0xFFBE,\n    0xFFB0, 0xFFA1, 0xFF91, 0xFF82, 0xFF75, 0xFF6A, 0xFF62, 0xFF5E,\n    0xFF5E, 0xFF79, 0xFFB3, 0xFFEF, 0x0012, 0x001E, 0x0026, 0x002B,\n    0x002E, 0x002E, 0x002D, 0x002B, 0x0029, 0x0027, 0x0027, 0x0233,\n    0x0233, 0x0231, 0x0230, 0x022D, 0x022B, 0x0228, 0x0225, 0x0223,\n    0x0220, 0x021E, 0x021D, 0x021C, 0x021C, 0x0221, 0x022B, 0x0236,\n    0x023C, 0x023F, 0x0241, 0x0243, 0x0244, 0x0245, 0x0246, 0x0246,\n    0x0247, 0x0247, 0x0247, 0xC719, 0xC6ED, 0xC672, 0xC5B8, 0xC4CD,\n    0xC3C1, 0xC2A2, 0xC180, 0xC06A, 0xBF6E, 0xBE9C, 0xBE03, 0xBDB2,\n    0xBDB7, 0xBFA8, 0xC3C4, 0xC816, 0xCAA8, 0xCB8C, 0xCC2A, 0xCC8C,\n    0xCCBE, 0xCCCB, 0xCCBC, 0xCC9E, 0xCC7B, 0xCC5E, 0xCC52, 0x460E,\n    0x46AD, 0x484F, 0x4A98, 0x4D2E, 0x4FB4, 0x51D1, 0x5328, 0x5360,\n    0x521C, 0x4F03, 0x3E52, 0x2273, 0x1046, 0x0F04, 0x14CD, 0x1CDE,\n    0x2273, 0x253F, 0x2816, 0x2AE3, 0x2D93, 0x3010, 0x3246, 0x3422,\n    0x358F, 0x3679, 0x36CB, 0xFEE5, 0xFF28, 0xFFE6, 0x010C, 0x028C,\n    0x0451, 0x064C, 0x086A, 0x0A9B, 0x0CCC, 0x0EEC, 0x10EA, 0x12B4,\n    0x1439, 0x1558, 0x1600, 0x1638, 0x1607, 0x1582, 0x14C5, 0x13E1,\n    0x12E6, 0x11E6, 0x10EF, 0x1012, 0x0F60, 0x0EEA, 0x0EBF, 0x09DB,\n    0x09CC, 0x09A4, 0x0968, 0x091B, 0x08C2, 0x0862, 0x0800, 0x07A0,\n    0x0746, 0x06F8, 0x06BA, 0x0691, 0x0681, 0x06D1, 0x079D, 0x08A8,\n    0x09B7, 0x0AD0, 0x0C15, 0x0D75, 0x0EDF, 0x1040, 0x1189, 0x12A7,\n    0x1388, 0x141C, 0x1452, 0x99BB, 0x9996, 0x992F, 0x9894, 0x97D2,\n    0x96F5, 0x960A, 0x951E, 0x943F, 0x9379, 0x92D9, 0x926D, 0x9240,\n    0x9260, 0x940F, 0x979A, 0x9B9E, 0x9EB9, 0xA102, 0xA36E, 0xA5E5,\n    0xA851, 0xAA9C, 0xACAF, 0xAE74, 0xAFD3, 0xB0B6, 0xB107, 0x007C,\n    0x007D, 0x007E, 0x0080, 0x0082, 0x0085, 0x0089, 0x008D, 0x0090,\n    0x0094, 0x0098, 0x009B, 0x009E, 0x00A0, 0x00A2, 0x00A3, 0x00A3,\n    0x00A1, 0x009D, 0x0097, 0x0091, 0x008B, 0x0084, 0x007E, 0x0079,\n    0x0075, 0x0072, 0x0071, 0xFF05, 0xFF05, 0xFF06, 0xFF07, 0xFF09,\n    0xFF0B, 0xFF0D, 0xFF0F, 0xFF11, 0xFF13, 0xFF16, 0xFF17, 0xFF19,\n    0xFF1A, 0xFF1B, 0xFF1A, 0xFF19, 0xFF17, 0xFF15, 0xFF13, 0xFF0F,\n    0xFF0C, 0xFF09, 0xFF06, 0xFF03, 0xFF01, 0xFF00, 0xFEFF, 0xCFB7,\n    0xCFA3, 0xCF6A, 0xCF13, 0xCEA2, 0xCE1D, 0xCD89, 0xCCEB, 0xCC49,\n    0xCBA8, 0xCB0D, 0xCA7E, 0xCA01, 0xC99A, 0xC950, 0xC933, 0xC951,\n    0xC9BC, 0xCA70, 0xCB55, 0xCC5A, 0xCD6F, 0xCE86, 0xCF8D, 0xD076,\n    0xD130, 0xD1AB, 0xD1D7, 0x3BC7, 0x3CC7, 0x3F5F, 0x42F8, 0x46F8,\n    0x4AC8, 0x4DCD, 0x4F70, 0x4F0F, 0x4B78, 0x433E, 0x3101, 0x1A22,\n    0x0D55, 0x106F, 0x1B48, 0x27A0, 0x2F35, 0x31FF, 0x3432, 0x35E0,\n    0x3719, 0x37F1, 0x3879, 0x38C4, 0x38E2, 0x38E8, 0x38E6, 0xFDC2,\n    0xFD91, 0xFD08, 0xFC32, 0xFB1E, 0xF9D8, 0xF86D, 0xF6EB, 0xF55D,\n    0xF3D2, 0xF256, 0xF0F7, 0xEFC0, 0xEEC0, 0xEE41, 0xEE4F, 0xEE9C,\n    0xEED5, 0xEEEE, 0xEF0D, 0xEF31, 0xEF56, 0xEF7B, 0xEF9E, 0xEFBC,\n    0xEFD5, 0xEFE5, 0xEFEB, 0xEFA8, 0xEFC1, 0xF008, 0xF075, 0xF101,\n    0xF1A5, 0xF259, 0xF317, 0xF3D7, 0xF491, 0xF53E, 0xF5D8, 0xF657,\n    0xF6B3, 0xF6B0, 0xF633, 0xF568, 0xF47B, 0xF36B, 0xF227, 0xF0C1,\n    0xEF4D, 0xEDDE, 0xEC88, 0xEB5C, 0xEA6E, 0xE9D1, 0xE999, 0x9B9F,\n    0x9B68, 0x9AD0, 0x99E7, 0x98BF, 0x976A, 0x95F8, 0x947B, 0x9304,\n    0x91A5, 0x906E, 0x8F72, 0x8EC0, 0x8E6B, 0x8FA1, 0x92B2, 0x9661,\n    0x9973, 0x9BF8, 0x9EBE, 0xA1A5, 0xA48E, 0xA75A, 0xA9EA, 0xAC1E,\n    0xADD8, 0xAEF8, 0xAF5F, 0x19CB, 0x19CB, 0x19CB, 0x19CB, 0x19CB,\n    0x19CB, 0x19CB, 0x19CB, 0x19CB, 0x19CB, 0x19CB, 0x19CB, 0x19CB,\n    0x19CB, 0x19CB, 0x1B9C, 0x20AB, 0x2860, 0x3226, 0x3D64, 0x4985,\n    0x55F2, 0x6213, 0x6D51, 0x7717, 0x7ECC, 0x83DE, 0x85AF, 0x80D8,\n    0x80D8, 0x80D8, 0x80D8, 0x80D8, 0x80D8, 0x80D8, 0x80D8, 0x80D8,\n    0x80D8, 0x80D8, 0x80D8, 0x80D8, 0x80D8, 0x80D8, 0x80D4, 0x80CA,\n    0x80B9, 0x80A5, 0x808D, 0x8074, 0x805A, 0x8040, 0x8029, 0x8014,\n    0x8004, 0x7FF6, 0x7FF3, 0x59D2, 0x59D2, 0x59D2, 0x59D2, 0x59D2,\n    0x59D2, 0x59D2, 0x59D2, 0x59D2, 0x59D2, 0x59D2, 0x59D2, 0x59D2,\n    0x59D2, 0x59D2, 0x5963, 0x582E, 0x5657, 0x5403, 0x5154, 0x4E6F,\n    0x4B79, 0x4894, 0x45E5, 0x4391, 0x41BA, 0x4085, 0x4016, 0xBF5F,\n    0xE02F, 0xE02F, 0xE02F, 0xE02F, 0xE02F, 0xE02F, 0xE02F, 0xE02F,\n    0xE02F, 0xE02F, 0xE02F, 0xE02F, 0xE02F, 0xE02F, 0xE02F, 0xDE1E,\n    0xD87C, 0xD027, 0xC5FC, 0xBAD6, 0xAF94, 0xA511, 0x9C2A, 0x93AF,\n    0x8AC0, 0x82B5, 0x7CE3, 0x7AA7, 0x7A60, 0x7A60, 0x7A60, 0x7A60,\n    0x7A60, 0x7A60, 0x7A60, 0x7A60, 0x7A60, 0x7A60, 0x7A60, 0x7A60,\n    0x7A60, 0x7A60, 0x7A60, 0x7A7F, 0x7AD3, 0x7B50, 0x7BE8, 0x7C8E,\n    0x7D37, 0x7DD4, 0x7E59, 0x7ED8, 0x7F5E, 0x7FD6, 0x8030, 0x8051,\n    0x5A4B, 0x5A4B, 0x5A4B, 0x5A4B, 0x5A4B, 0x5A4B, 0x5A4B, 0x5A4B,\n    0x5A4B, 0x5A4B, 0x5A4B, 0x5A4B, 0x5A4B, 0x5A4B, 0x5A4B, 0x59C2,\n    0x584D, 0x5626, 0x5386, 0x50A4, 0x4DBB, 0x4B04, 0x48B7, 0x4686,\n    0x4437, 0x4223, 0x40A3, 0x400F, 0xBF5F, 0xFE45, 0xFE46, 0xFE4A,\n    0xFE50, 0xFE57, 0xFE5F, 0xFE66, 0xFE6C, 0xFE6F, 0xFE6F, 0xFE6E,\n    0xFE6F, 0xFE72, 0xFE7B, 0xFE8B, 0xFEA3, 0xFEC0, 0xFEE2, 0xFF06,\n    0xFF2D, 0xFF54, 0xFF7A, 0xFF9D, 0xFFBE, 0xFFD9, 0xFFEE, 0xFFFC,\n    0x0000, 0xFFED, 0xFFFA, 0x001A, 0x0047, 0x0076, 0x009F, 0x00B7,\n    0x00B7, 0x0095, 0x0056, 0x0007, 0xFFB4, 0xFF66, 0xFF2B, 0xFF0F,\n    0xFF0B, 0xFF11, 0xFF1F, 0xFF34, 0xFF4D, 0xFF6A, 0xFF88, 0xFFA6,\n    0xFFC2, 0xFFDB, 0xFFEF, 0xFFFC, 0x0000, 0xF62D, 0xF76D, 0xFA99,\n    0xFED7, 0x0349, 0x0716, 0x0961, 0x094E, 0x062B, 0x007F, 0xF947,\n    0xF17D, 0xEA20, 0xE42A, 0xE099, 0xDEDB, 0xDDAA, 0xDCF4, 0xDCA7,\n    0xDCB0, 0xDCFC, 0xDD7A, 0xDE17, 0xDEC1, 0xDF65, 0xDFF1, 0xE052,\n    0xE077, 0x0191, 0x017C, 0x0170, 0x018B, 0x01B4, 0x01DE, 0x01FD,\n    0x0205, 0x01F6, 0x01DA, 0x01B5, 0x018A, 0x0160, 0x0139, 0x011A,\n    0x00FF, 0x00E3, 0x00C6, 0x00A8, 0x008C, 0x0070, 0x0056, 0x003E,\n    0x0029, 0x0018, 0x000B, 0x0002, 0x0000, 0xFEB8, 0xFE9E, 0xFE9D,\n    0xFEE8, 0xFF4E, 0xFFB6, 0x0005, 0x0021, 0x0002, 0xFFBF, 0xFF64,\n    0xFF02, 0xFEA9, 0xFE67, 0xFE4D, 0xFE53, 0xFE66, 0xFE85, 0xFEAC,\n    0xFEDA, 0xFF0B, 0xFF3D, 0xFF6F, 0xFF9D, 0xFFC5, 0xFFE4, 0xFFF9,\n    0x0000, 0x0A2F, 0x0CEE, 0x0D80, 0x0710, 0xFE13, 0xF4EA, 0xEDFB,\n    0xEBA7, 0xEE74, 0xF477, 0xFC6F, 0x051A, 0x0D39, 0x138C, 0x16CF,\n    0x17A7, 0x17A1, 0x16E2, 0x158D, 0x13C5, 0x11AE, 0x0F6B, 0x0D20,\n    0x0AF0, 0x08FF, 0x0770, 0x0667, 0x0606, 0x002E, 0x0029, 0x001A,\n    0x0008, 0xFFF6, 0xFFE6, 0xFFDE, 0xFFE1, 0xFFF6, 0x0018, 0x0043,\n    0x0071, 0x0099, 0x00B7, 0x00C4, 0x00C2, 0x00B9, 0x00AC, 0x009A,\n    0x0086, 0x0070, 0x0059, 0x0042, 0x002D, 0x001B, 0x000C, 0x0003,\n    0x0000, 0x0135, 0x0136, 0x0137, 0x0139, 0x013B, 0x013B, 0x013A,\n    0x0137, 0x0132, 0x012B, 0x0123, 0x011A, 0x010F, 0x0102, 0x00F3,\n    0x00E2, 0x00CD, 0x00B7, 0x009E, 0x0085, 0x006C, 0x0054, 0x003E,\n    0x0029, 0x0018, 0x000B, 0x0003, 0x0000, 0x4647, 0x4587, 0x43A1,\n    0x4123, 0x3E97, 0x3C89, 0x3B85, 0x3C17, 0x3EC7, 0x4347, 0x48DF,\n    0x4ED9, 0x547C, 0x5911, 0x5BE1, 0x5D5A, 0x5E6D, 0x5F25, 0x5F91,\n    0x5FBC, 0x5FB3, 0x5F82, 0x5F36, 0x5EDC, 0x5E80, 0x5E2E, 0x5DF5,\n    0x5DDE,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_B2.inc.c",
    "content": "static const struct Animation anim_B2[] = {\n    0,\n    189,\n    0,\n    0,\n    0x1E,\n    ANIMINDEX_NUMPARTS(anim_B2_indices),\n    anim_B2_values,\n    anim_B2_indices,\n    0,\n};\n\n\nstatic const u16 anim_B2_indices[] = {\n    0x0001, 0x0000, 0x001E, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x001F, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0372,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0371,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0370,\n    0x0001, 0x036C, 0x0001, 0x036D, 0x0001, 0x036E,\n    0x001E, 0x0098, 0x001E, 0x00B6, 0x001E, 0x00D4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x007A,\n    0x001E, 0x0020, 0x001E, 0x003E, 0x001E, 0x005C,\n    0x0001, 0x0368, 0x0001, 0x0369, 0x0001, 0x036A,\n    0x001E, 0x016A, 0x001E, 0x0188, 0x001E, 0x01A6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x014C,\n    0x001E, 0x00F2, 0x001E, 0x0110, 0x001E, 0x012E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x036B,\n    0x001E, 0x030E, 0x001E, 0x032C, 0x001E, 0x034A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x02F0,\n    0x001E, 0x0296, 0x001E, 0x02B4, 0x001E, 0x02D2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x036F,\n    0x001E, 0x023C, 0x001E, 0x025A, 0x001E, 0x0278,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x021E,\n    0x001E, 0x01C4, 0x001E, 0x01E2, 0x001E, 0x0200,\n};\n\nstatic const s16 anim_B2_values[] = {\n    0x0000, 0x00BD, 0x00BC, 0x00BC, 0x00BA, 0x00B9, 0x00B7, 0x00B5,\n    0x00B3, 0x00B2, 0x00B0, 0x00B0, 0x00AF, 0x00AF, 0x00B0, 0x00B0,\n    0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7, 0x00B8,\n    0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BC, 0x00BD, 0x00BD, 0x3FFF,\n    0x1DFA, 0x1E1E, 0x1E78, 0x1EEF, 0x1F6A, 0x1FCF, 0x2004, 0x1FF0,\n    0x1F79, 0x1E86, 0x1CDE, 0x1A7C, 0x1798, 0x1466, 0x111C, 0x0DF2,\n    0x0B1C, 0x08D1, 0x0746, 0x06B2, 0x0753, 0x0915, 0x0BAF, 0x0EDA,\n    0x124D, 0x15C1, 0x18EE, 0x1B8C, 0x1D52, 0x1DFA, 0xFF74, 0xFFC0,\n    0x0087, 0x01A6, 0x02F4, 0x044C, 0x0585, 0x0679, 0x0702, 0x06F9,\n    0x064C, 0x0519, 0x0383, 0x01A9, 0xFFAF, 0xFDB4, 0xFBDB, 0xFA43,\n    0xF910, 0xF862, 0xF847, 0xF8A3, 0xF95C, 0xFA55, 0xFB73, 0xFC9B,\n    0xFDB1, 0xFE99, 0xFF39, 0xFF74, 0xEB6C, 0xEBB3, 0xEC6E, 0xED78,\n    0xEEAF, 0xEFED, 0xF10D, 0xF1EC, 0xF264, 0xF252, 0xF1A3, 0xF073,\n    0xEEE3, 0xED12, 0xEB22, 0xE933, 0xE765, 0xE5DA, 0xE4B2, 0xE40D,\n    0xE3FA, 0xE460, 0xE523, 0xE626, 0xE74E, 0xE87F, 0xE99D, 0xEA8C,\n    0xEB2F, 0xEB6C, 0xDDE8, 0xDD2B, 0xDB32, 0xD858, 0xD4F7, 0xD16C,\n    0xCE12, 0xCB44, 0xC95D, 0xC8B8, 0xC95D, 0xCAEF, 0xCD3A, 0xD008,\n    0xD324, 0xD659, 0xD970, 0xDC35, 0xDE72, 0xDFF2, 0xE0BF, 0xE116,\n    0xE110, 0xE0C1, 0xE040, 0xDFA4, 0xDF04, 0xDE75, 0xDE0F, 0xDDE8,\n    0x95C0, 0x9590, 0x950B, 0x943E, 0x9339, 0x920A, 0x90BF, 0x8F67,\n    0x8E10, 0x8CC9, 0x8B59, 0x8993, 0x8798, 0x8587, 0x8381, 0x81A6,\n    0x8016, 0x7EEE, 0x7E55, 0x7E67, 0x7F6B, 0x816A, 0x841D, 0x8746,\n    0x8AA4, 0x8DF7, 0x90FE, 0x9377, 0x9523, 0x95C0, 0xA1D3, 0xA1D0,\n    0xA1C8, 0xA1BE, 0xA1B3, 0xA1AB, 0xA1A8, 0xA1AC, 0xA1BA, 0xA1D3,\n    0xA1FE, 0xA23C, 0xA286, 0xA2D9, 0xA32D, 0xA37E, 0xA3C7, 0xA401,\n    0xA428, 0xA436, 0xA425, 0xA3F7, 0xA3B2, 0xA35F, 0xA305, 0xA2AA,\n    0xA257, 0xA213, 0xA1E4, 0xA1D3, 0x1252, 0x124F, 0x1246, 0x123A,\n    0x122E, 0x1225, 0x1221, 0x1226, 0x1235, 0x1252, 0x1284, 0x12CA,\n    0x1320, 0x137E, 0x13DE, 0x143B, 0x148E, 0x14D1, 0x14FE, 0x150E,\n    0x14FB, 0x14C5, 0x1477, 0x1418, 0x13B0, 0x1349, 0x12E9, 0x129B,\n    0x1266, 0x1252, 0xE679, 0xE669, 0xE63B, 0xE5F5, 0xE59A, 0xE531,\n    0xE4BD, 0xE443, 0xE3C9, 0xE352, 0xE2CA, 0xE221, 0xE163, 0xE09D,\n    0xDFDA, 0xDF26, 0xDE8E, 0xDE1F, 0xDDE3, 0xDDE7, 0xDE45, 0xDEFF,\n    0xDFFC, 0xE125, 0xE262, 0xE39B, 0xE4B9, 0xE5A2, 0xE63F, 0xE679,\n    0xFBF8, 0xFB83, 0xFA48, 0xF87E, 0xF65A, 0xF412, 0xF1DC, 0xEFEF,\n    0xEE80, 0xEDC5, 0xEDB0, 0xEE04, 0xEEAC, 0xEF94, 0xF0AB, 0xF1DB,\n    0xF312, 0xF43D, 0xF547, 0xF61D, 0xF6DA, 0xF7A1, 0xF86C, 0xF932,\n    0xF9EE, 0xFA97, 0xFB27, 0xFB96, 0xFBDE, 0xFBF8, 0xE70F, 0xE766,\n    0xE851, 0xE9AA, 0xEB4C, 0xED10, 0xEED0, 0xF067, 0xF1AE, 0xF27F,\n    0xF2F4, 0xF33F, 0xF364, 0xF366, 0xF349, 0xF310, 0xF2BD, 0xF254,\n    0xF1D8, 0xF14C, 0xF08C, 0xEF80, 0xEE3F, 0xECDF, 0xEB77, 0xEA1D,\n    0xE8E9, 0xE7F1, 0xE74B, 0xE70F, 0xE290, 0xE1E7, 0xE020, 0xDD88,\n    0xDA6D, 0xD71C, 0xD3E3, 0xD10E, 0xCEEB, 0xCDC8, 0xCD8D, 0xCDDE,\n    0xCEA1, 0xCFBE, 0xD11C, 0xD2A3, 0xD439, 0xD5C6, 0xD731, 0xD860,\n    0xD981, 0xDAC4, 0xDC1B, 0xDD75, 0xDEC5, 0xDFF9, 0xE104, 0xE1D6,\n    0xE25F, 0xE290, 0xF08E, 0xF079, 0xF044, 0xF003, 0xEFC7, 0xEFA4,\n    0xEFAC, 0xEFF0, 0xF085, 0xF17B, 0xF30A, 0xF53C, 0xF7E0, 0xFAC6,\n    0xFDBE, 0x0094, 0x031C, 0x0524, 0x067B, 0x06F0, 0x0646, 0x048D,\n    0x0209, 0xFEFF, 0xFBB1, 0xF864, 0xF55D, 0xF2DF, 0xF12E, 0xF08E,\n    0x2328, 0x234C, 0x23AD, 0x2434, 0x24CD, 0x2563, 0x25E1, 0x2633,\n    0x2644, 0x25FE, 0x254D, 0x243A, 0x22DF, 0x2157, 0x1FBD, 0x1E2C,\n    0x1CBD, 0x1B8C, 0x1AB3, 0x1A4C, 0x1A6E, 0x1B09, 0x1C01, 0x1D36,\n    0x1E8C, 0x1FE7, 0x2127, 0x2230, 0x22E5, 0x2328, 0x9376, 0x9314,\n    0x920C, 0x908C, 0x8EC0, 0x8CD7, 0x8AFE, 0x8962, 0x8831, 0x8798,\n    0x878D, 0x87DB, 0x8872, 0x893F, 0x8A33, 0x8B3D, 0x8C4B, 0x8D4C,\n    0x8E2F, 0x8EE4, 0x8F80, 0x9020, 0x90C0, 0x915B, 0x91EB, 0x926C,\n    0x92D9, 0x932D, 0x9363, 0x9376, 0x0027, 0x0022, 0x0015, 0x0002,\n    0xFFEB, 0xFFD1, 0xFFB7, 0xFF9E, 0xFF88, 0xFF77, 0xFF6D, 0xFF6B,\n    0xFF79, 0xFF95, 0xFFBC, 0xFFE8, 0x0015, 0x003E, 0x005F, 0x0071,\n    0x0078, 0x0077, 0x0071, 0x0066, 0x0059, 0x004B, 0x003D, 0x0032,\n    0x002A, 0x0027, 0x0247, 0x0246, 0x0245, 0x0244, 0x0242, 0x023F,\n    0x023D, 0x023A, 0x0238, 0x0236, 0x0234, 0x0234, 0x0233, 0x0234,\n    0x0235, 0x0237, 0x0238, 0x023A, 0x023C, 0x023D, 0x023E, 0x023F,\n    0x0241, 0x0242, 0x0243, 0x0244, 0x0245, 0x0246, 0x0247, 0x0247,\n    0xCC52, 0xCBFD, 0xCB15, 0xC9BB, 0xC813, 0xC63F, 0xC45F, 0xC297,\n    0xC109, 0xBFD7, 0xBF23, 0xBF0F, 0xBFFD, 0xC1FF, 0xC4BE, 0xC7E2,\n    0xCB15, 0xCE00, 0xD04B, 0xD1A0, 0xD213, 0xD204, 0xD190, 0xD0D1,\n    0xCFE5, 0xCEE5, 0xCDEE, 0xCD1B, 0xCC89, 0xCC52, 0x36CB, 0x36E2,\n    0x3722, 0x3784, 0x3802, 0x3897, 0x393C, 0x39E9, 0x3A9A, 0x3B48,\n    0x3BED, 0x3C81, 0x3D00, 0x3D62, 0x3DA2, 0x3DB8, 0x3D9F, 0x3D56,\n    0x3CE7, 0x3C59, 0x3BB4, 0x3AFF, 0x3A42, 0x3985, 0x38D0, 0x382B,\n    0x379D, 0x372E, 0x36E5, 0x36CB, 0x0EBF, 0x0EB1, 0x0E8C, 0x0E52,\n    0x0E08, 0x0DB0, 0x0D50, 0x0CEA, 0x0C82, 0x0C1B, 0x0BBB, 0x0B64,\n    0x0B19, 0x0ADF, 0x0ABA, 0x0AAD, 0x0ABC, 0x0AE6, 0x0B28, 0x0B7B,\n    0x0BDC, 0x0C47, 0x0CB6, 0x0D25, 0x0D8F, 0x0DF0, 0x0E44, 0x0E85,\n    0x0EAF, 0x0EBF, 0x1452, 0x1459, 0x146E, 0x148E, 0x14B7, 0x14E8,\n    0x151D, 0x1556, 0x1590, 0x15C9, 0x15FE, 0x162F, 0x1658, 0x1678,\n    0x168D, 0x1694, 0x168C, 0x1674, 0x1650, 0x1621, 0x15EC, 0x15B0,\n    0x1573, 0x1535, 0x14FA, 0x14C4, 0x1496, 0x1472, 0x145A, 0x1452,\n    0xB107, 0xB0ED, 0xB0A3, 0xB030, 0xAF9C, 0xAEEF, 0xAE2F, 0xAD65,\n    0xAC96, 0xABCB, 0xAB0C, 0xAA5E, 0xA9CB, 0xA958, 0xA90E, 0xA8F4,\n    0xA912, 0xA966, 0xA9E8, 0xAA8E, 0xAB4E, 0xAC21, 0xACFD, 0xADD9,\n    0xAEAC, 0xAF6D, 0xB013, 0xB094, 0xB0E9, 0xB107, 0x0071, 0x0072,\n    0x0077, 0x007F, 0x0088, 0x0092, 0x009D, 0x00A8, 0x00B1, 0x00B9,\n    0x00BF, 0x00C2, 0x00C1, 0x00BB, 0x00B3, 0x00A9, 0x009E, 0x0094,\n    0x008B, 0x0085, 0x0081, 0x007D, 0x007A, 0x0077, 0x0075, 0x0073,\n    0x0072, 0x0071, 0x0071, 0x0071, 0xFEFF, 0xFF01, 0xFF04, 0xFF09,\n    0xFF0F, 0xFF16, 0xFF1E, 0xFF25, 0xFF2B, 0xFF30, 0xFF34, 0xFF36,\n    0xFF35, 0xFF31, 0xFF2A, 0xFF23, 0xFF1B, 0xFF14, 0xFF0D, 0xFF09,\n    0xFF06, 0xFF04, 0xFF03, 0xFF01, 0xFF00, 0xFF00, 0xFF00, 0xFEFF,\n    0xFEFF, 0xFEFF, 0xD1D7, 0xD186, 0xD0A6, 0xCF57, 0xCDB7, 0xCBE4,\n    0xC9FF, 0xC825, 0xC674, 0xC50D, 0xC40D, 0xC394, 0xC3D5, 0xC4CF,\n    0xC64D, 0xC81E, 0xCA0D, 0xCBE8, 0xCD7B, 0xCE95, 0xCF50, 0xCFEF,\n    0xD073, 0xD0DE, 0xD133, 0xD174, 0xD1A3, 0xD1C1, 0xD1D2, 0xD1D7,\n    0x38E6, 0x38FF, 0x3946, 0x39B4, 0x3A41, 0x3AE7, 0x3B9F, 0x3C61,\n    0x3D27, 0x3DEA, 0x3EA1, 0x3F48, 0x3FD5, 0x4043, 0x408A, 0x40A3,\n    0x4086, 0x4035, 0x3FB9, 0x3F1A, 0x3E61, 0x3D97, 0x3CC4, 0x3BF2,\n    0x3B27, 0x3A6E, 0x39D0, 0x3953, 0x3902, 0x38E6, 0xEFEB, 0xEFF6,\n    0xF016, 0xF047, 0xF087, 0xF0D1, 0xF124, 0xF17B, 0xF1D3, 0xF22A,\n    0xF27D, 0xF2C7, 0xF307, 0xF338, 0xF358, 0xF363, 0xF356, 0xF332,\n    0xF2FA, 0xF2B3, 0xF260, 0xF206, 0xF1A7, 0xF148, 0xF0EE, 0xF09B,\n    0xF054, 0xF01C, 0xEFF8, 0xEFEB, 0xE999, 0xE992, 0xE980, 0xE964,\n    0xE940, 0xE916, 0xE8E7, 0xE8B5, 0xE883, 0xE852, 0xE823, 0xE7F8,\n    0xE7D4, 0xE7B8, 0xE7A6, 0xE7A0, 0xE7A7, 0xE7BC, 0xE7DB, 0xE804,\n    0xE833, 0xE867, 0xE89C, 0xE8D2, 0xE906, 0xE935, 0xE95D, 0xE97D,\n    0xE991, 0xE999, 0xAF5F, 0xAF4A, 0xAF0F, 0xAEB5, 0xAE40, 0xADB7,\n    0xAD20, 0xAC80, 0xABDD, 0xAB3D, 0xAAA5, 0xAA1C, 0xA9A8, 0xA94D,\n    0xA913, 0xA8FE, 0xA916, 0xA958, 0xA9BF, 0xAA42, 0xAADA, 0xAB81,\n    0xAC2E, 0xACDC, 0xAD83, 0xAE1B, 0xAE9E, 0xAF04, 0xAF47, 0xAF5F,\n    0x85AF, 0x7FF3, 0x4016, 0xBF5F, 0x7AA7, 0x8051, 0x400F, 0xBF5F,\n    0xE077, 0x0606, 0x5DDE, 0x5DD6, 0x5DBD, 0x5D98, 0x5D69, 0x5D32,\n    0x5CF8, 0x5CBC, 0x5C81, 0x5C4B, 0x5C1B, 0x5BF6, 0x5BDE, 0x5BD5,\n    0x5BDB, 0x5BEB, 0x5C05, 0x5C26, 0x5C4E, 0x5C7A, 0x5CA9, 0x5CDA,\n    0x5D0A, 0x5D39, 0x5D65, 0x5D8D, 0x5DAE, 0x5DC8, 0x5DD9, 0x5DDE,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_B3.inc.c",
    "content": "static const struct Animation anim_B3[] = {\n    1,\n    189,\n    0,\n    0,\n    0x53,\n    ANIMINDEX_NUMPARTS(anim_B3_indices),\n    anim_B3_values,\n    anim_B3_indices,\n    0,\n};\n\n\nstatic const u16 anim_B3_indices[] = {\n    0x0001, 0x0000, 0x0053, 0x0001, 0x0053, 0x0054, 0x0001, 0x0000, 0x0001, 0x00A7, 0x0001, 0x0000,\n    0x0053, 0x0BB6, 0x0053, 0x0C09, 0x0053, 0x0C5C,\n    0x0053, 0x0ABD, 0x0053, 0x0B10, 0x0053, 0x0B63,\n    0x0053, 0x09C4, 0x0053, 0x0A17, 0x0053, 0x0A6A,\n    0x0001, 0x09C0, 0x0001, 0x09C1, 0x0001, 0x09C2,\n    0x0053, 0x01F4, 0x0053, 0x0247, 0x0053, 0x029A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0053, 0x01A1,\n    0x0053, 0x00A8, 0x0053, 0x00FB, 0x0053, 0x014E,\n    0x0001, 0x09BC, 0x0001, 0x09BD, 0x0001, 0x09BE,\n    0x0053, 0x0439, 0x0053, 0x048C, 0x0053, 0x04DF,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0053, 0x03E6,\n    0x0053, 0x02ED, 0x0053, 0x0340, 0x0053, 0x0393,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x09BF,\n    0x0053, 0x08C3, 0x0053, 0x0916, 0x0053, 0x0969,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0053, 0x0870,\n    0x0053, 0x0777, 0x0053, 0x07CA, 0x0053, 0x081D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x09C3,\n    0x0053, 0x067E, 0x0053, 0x06D1, 0x0053, 0x0724,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0053, 0x062B,\n    0x0053, 0x0532, 0x0053, 0x0585, 0x0053, 0x05D8,\n};\n\nstatic const s16 anim_B3_values[] = {\n    0x0000, 0x00BD, 0x00BD, 0x00BC, 0x00BC, 0x00BB, 0x00BA, 0x00BA,\n    0x00B9, 0x00B8, 0x00B8, 0x00B8, 0x00B8, 0x00B8, 0x00B9, 0x00B9,\n    0x00BB, 0x00BD, 0x00BF, 0x00C2, 0x00C6, 0x00CB, 0x00D1, 0x00D9,\n    0x00E3, 0x00F0, 0x0105, 0x0124, 0x0145, 0x0160, 0x0174, 0x0181,\n    0x0187, 0x0185, 0x017C, 0x016C, 0x0155, 0x013A, 0x011D, 0x0100,\n    0x00E3, 0x00C6, 0x00AB, 0x0091, 0x007E, 0x0073, 0x006D, 0x006B,\n    0x006A, 0x006A, 0x006B, 0x006C, 0x006E, 0x0070, 0x0073, 0x0075,\n    0x0078, 0x007A, 0x007C, 0x007D, 0x007E, 0x007F, 0x007F, 0x007F,\n    0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F,\n    0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F,\n    0x007F, 0x007F, 0x007F, 0x007F, 0x0000, 0x0000, 0xFFFF, 0xFFFE,\n    0xFFFC, 0xFFFA, 0xFFF8, 0xFFF7, 0xFFF5, 0xFFF4, 0xFFF3, 0xFFF3,\n    0xFFF3, 0xFFF5, 0xFFF8, 0xFFFC, 0x0000, 0x0009, 0x0019, 0x002E,\n    0x0044, 0x005B, 0x0070, 0x0081, 0x008C, 0x0088, 0x0072, 0x0056,\n    0x0036, 0x0014, 0xFFF0, 0xFFCC, 0xFFAA, 0xFF8D, 0xFF73, 0xFF5C,\n    0xFF48, 0xFF3A, 0xFF32, 0xFF37, 0xFF47, 0xFF5D, 0xFF72, 0xFF89,\n    0xFFA2, 0xFFBA, 0xFFD1, 0xFFE5, 0xFFF6, 0x0001, 0x000B, 0x0012,\n    0x0017, 0x001A, 0x001C, 0x001C, 0x001B, 0x001A, 0x0019, 0x0018,\n    0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017,\n    0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017,\n    0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x0017, 0x3FFF,\n    0x1DFA, 0x1DF6, 0x1DEA, 0x1DD8, 0x1DC3, 0x1DAA, 0x1D91, 0x1D78,\n    0x1D62, 0x1D4E, 0x1D41, 0x1D3A, 0x1D3B, 0x1D47, 0x1D5E, 0x1D83,\n    0x1DB6, 0x1DFA, 0x20CC, 0x23A5, 0x2399, 0x22F5, 0x2204, 0x2113,\n    0x206F, 0x2009, 0x1FA3, 0x1F3E, 0x1ED8, 0x1E72, 0x1E0D, 0x1DA8,\n    0x1D43, 0x1CDE, 0x1C7A, 0x1C16, 0x1BB3, 0x1B50, 0x1AED, 0x1A8C,\n    0x1A2B, 0x19CB, 0x196B, 0x190D, 0x18AF, 0x1853, 0x17F7, 0x179D,\n    0x1743, 0x16EB, 0x1695, 0x163F, 0x15EB, 0x1598, 0x1547, 0x14F8,\n    0x14AA, 0x145D, 0x1413, 0x13CA, 0x1390, 0x1370, 0x1365, 0x136A,\n    0x137A, 0x1391, 0x13A9, 0x13BD, 0x13CA, 0x13CA, 0x13BF, 0x13B2,\n    0x13A1, 0x138E, 0x137B, 0x1366, 0x1352, 0x133F, 0x132E, 0x131F,\n    0x1314, 0x130C, 0x130A, 0xFF74, 0xFF82, 0xFFA9, 0xFFE3, 0x002B,\n    0x007C, 0x00D0, 0x0123, 0x016F, 0x01AE, 0x01DC, 0x01F3, 0x01EE,\n    0x01C7, 0x0179, 0x0100, 0x0055, 0xFF74, 0xF53B, 0xEC8F, 0xF158,\n    0xF9B9, 0x0313, 0x0ACD, 0x0E4A, 0x0EBB, 0x0F12, 0x0F50, 0x0F76,\n    0x0F86, 0x0F81, 0x0F67, 0x0F3B, 0x0EFD, 0x0EAF, 0x0E51, 0x0DE6,\n    0x0D6E, 0x0CEB, 0x0C5E, 0x0BC7, 0x0B29, 0x0A84, 0x09DB, 0x092D,\n    0x087C, 0x07C9, 0x0717, 0x0665, 0x05B5, 0x0509, 0x0461, 0x03BF,\n    0x0324, 0x0292, 0x0208, 0x018A, 0x0117, 0x00B2, 0x005B, 0x0016,\n    0xFFE4, 0xFFC3, 0xFFB2, 0xFFB0, 0xFFBC, 0xFFD4, 0xFFF8, 0x0025,\n    0x005B, 0x00A4, 0x0105, 0x0179, 0x01FC, 0x0287, 0x0315, 0x03A1,\n    0x0427, 0x04A0, 0x0507, 0x0557, 0x058B, 0x059E, 0xEB6C, 0xEB7B,\n    0xEBA4, 0xEBE1, 0xEC2D, 0xEC82, 0xECDB, 0xED32, 0xED82, 0xEDC5,\n    0xEDF5, 0xEE0D, 0xEE08, 0xEDDF, 0xED8D, 0xED0D, 0xEC5A, 0xEB6C,\n    0xE0B7, 0xD78B, 0xDC50, 0xE4C6, 0xEE43, 0xF61E, 0xF9AC, 0xFA23,\n    0xFA7F, 0xFAC3, 0xFAEE, 0xFB03, 0xFB02, 0xFAED, 0xFAC6, 0xFA8C,\n    0xFA42, 0xF9E9, 0xF982, 0xF90E, 0xF88E, 0xF804, 0xF771, 0xF6D7,\n    0xF635, 0xF58F, 0xF4E4, 0xF436, 0xF387, 0xF2D8, 0xF229, 0xF17C,\n    0xF0D2, 0xF02E, 0xEF8E, 0xEEF6, 0xEE66, 0xEDE0, 0xED64, 0xECF5,\n    0xEC92, 0xEC3E, 0xEC0B, 0xEC01, 0xEC15, 0xEC3D, 0xEC6C, 0xEC98,\n    0xECB4, 0xECB7, 0xEC93, 0xEC3E, 0xEBB2, 0xEAF7, 0xEA16, 0xE91B,\n    0xE80E, 0xE6FB, 0xE5EC, 0xE4EA, 0xE401, 0xE339, 0xE29E, 0xE23A,\n    0xE216, 0xDDE8, 0xDDA7, 0xDCF1, 0xDBD8, 0xDA6E, 0xD8C7, 0xD6F4,\n    0xD508, 0xD316, 0xD131, 0xCF69, 0xCDD3, 0xCC81, 0xCB85, 0xCAF1,\n    0xCAD9, 0xCB4E, 0xCC63, 0xD043, 0xD7FB, 0xE1EF, 0xEC84, 0xF620,\n    0xFD28, 0x0000, 0x0000, 0x0000, 0xFFCC, 0xFF5F, 0xFEC9, 0xFE0C,\n    0xFD2B, 0xFC29, 0xFB09, 0xF9CC, 0xF876, 0xF709, 0xF588, 0xF3F6,\n    0xF255, 0xF0A8, 0xEEF1, 0xED34, 0xEB73, 0xE9B0, 0xE7EE, 0xE630,\n    0xE479, 0xE2CB, 0xE129, 0xDF95, 0xDE12, 0xDCA3, 0xDB4A, 0xDA0A,\n    0xD8E7, 0xD7E1, 0xD6FD, 0xD63C, 0xD5A1, 0xD5A8, 0xD6A7, 0xD867,\n    0xDAB5, 0xDD59, 0xE01F, 0xE2D2, 0xE53C, 0xE727, 0xE85F, 0xE90B,\n    0xE97D, 0xE9BB, 0xE9CF, 0xE9BF, 0xE994, 0xE955, 0xE90B, 0xE8BC,\n    0xE872, 0xE833, 0xE807, 0xE7F7, 0x95C0, 0x95D7, 0x9618, 0x9678,\n    0x96ED, 0x976D, 0x97EE, 0x9867, 0x98CD, 0x9917, 0x993A, 0x992D,\n    0x98E5, 0x985A, 0x9780, 0x964E, 0x94BA, 0x92BA, 0x8DFD, 0x8499,\n    0x7807, 0x69CF, 0x5B6D, 0x4E63, 0x4431, 0x3E57, 0x3E3B, 0x40BF,\n    0x43CA, 0x4756, 0x4B59, 0x4FCB, 0x54A5, 0x59DF, 0x5F70, 0x6550,\n    0x6B77, 0x71DD, 0x787B, 0x7F48, 0x863E, 0x8D51, 0x947A, 0x9BB2,\n    0xA2F1, 0xAA2E, 0xB162, 0xB884, 0xBF8D, 0xC674, 0xCD31, 0xD3BD,\n    0xDA0F, 0xE01F, 0xE5E5, 0xEB59, 0xF073, 0xF52A, 0xF978, 0xFD53,\n    0xFF6C, 0xFED7, 0xFC1C, 0xF7C6, 0xF25F, 0xEC71, 0xE687, 0xE12A,\n    0xDCE4, 0xDA3F, 0xD8CC, 0xD7B6, 0xD6F2, 0xD675, 0xD634, 0xD624,\n    0xD63A, 0xD66B, 0xD6AC, 0xD6F2, 0xD731, 0xD75F, 0xD771, 0xA1D3,\n    0xA1F9, 0xA262, 0xA306, 0xA3D9, 0xA4D3, 0xA5E8, 0xA70E, 0xA83B,\n    0xA966, 0xAA84, 0xAB8A, 0xAC6F, 0xAD28, 0xADAC, 0xADF0, 0xADEA,\n    0xAD90, 0xAC42, 0xA8D8, 0xA402, 0x9E8A, 0x9938, 0x94D6, 0x922D,\n    0x9206, 0x9368, 0x94D4, 0x964A, 0x97CA, 0x9952, 0x9AE3, 0x9C7C,\n    0x9E1C, 0x9FC3, 0xA170, 0xA323, 0xA4DB, 0xA698, 0xA85A, 0xAA1F,\n    0xABE7, 0xADB2, 0xAF7F, 0xB14E, 0xB31E, 0xB4EF, 0xB6C0, 0xB890,\n    0xBA60, 0xBC2E, 0xBDFB, 0xBFC5, 0xC18C, 0xC34F, 0xC50F, 0xC6CA,\n    0xC880, 0xCA31, 0xCBDC, 0xCD92, 0xCF5D, 0xD130, 0xD300, 0xD4BF,\n    0xD661, 0xD7DA, 0xD91D, 0xDA1F, 0xDAD1, 0xDB38, 0xDB65, 0xDB5F,\n    0xDB31, 0xDAE3, 0xDA7D, 0xDA08, 0xD98D, 0xD915, 0xD8A9, 0xD851,\n    0xD815, 0xD7FF, 0x1252, 0x11C6, 0x103D, 0x0DDF, 0x0AD4, 0x0745,\n    0x0359, 0xFF3B, 0xFB10, 0xF702, 0xF339, 0xEFDC, 0xED16, 0xEB0D,\n    0xE9EA, 0xE9D6, 0xEAF8, 0xED78, 0xF4E7, 0x03E1, 0x17BB, 0x2DC0,\n    0x433E, 0x5582, 0x61DA, 0x6594, 0x63CF, 0x617B, 0x5EA3, 0x5B4C,\n    0x5780, 0x5347, 0x4EA8, 0x49AC, 0x445B, 0x3EBC, 0x38D9, 0x32B8,\n    0x2C63, 0x25E0, 0x1F39, 0x1875, 0x119C, 0x0AB7, 0x03CD, 0xFCE8,\n    0xF60D, 0xEF46, 0xE89B, 0xE214, 0xDBB8, 0xD591, 0xCFA6, 0xC9FE,\n    0xC4A3, 0xBF9C, 0xBAF2, 0xB6AB, 0xB2D2, 0xAF6D, 0xADDC, 0xAF1B,\n    0xB29A, 0xB7C8, 0xBE14, 0xC4F0, 0xCBC9, 0xD211, 0xD737, 0xDAAB,\n    0xDCF0, 0xDEEB, 0xE0A1, 0xE217, 0xE351, 0xE455, 0xE527, 0xE5CC,\n    0xE649, 0xE6A1, 0xE6DA, 0xE6F9, 0xE703, 0xE679, 0xE67B, 0xE681,\n    0xE68A, 0xE695, 0xE6A2, 0xE6AF, 0xE6BC, 0xE6C7, 0xE6D1, 0xE6D8,\n    0xE6DC, 0xE6DB, 0xE6D5, 0xE6C9, 0xE6B6, 0xE69C, 0xE679, 0xE519,\n    0xE390, 0xE323, 0xE2D6, 0xE2B6, 0xE2CE, 0xE32A, 0xE3B4, 0xE44A,\n    0xE4EC, 0xE59A, 0xE651, 0xE711, 0xE7D9, 0xE8A7, 0xE97C, 0xEA55,\n    0xEB32, 0xEC12, 0xECF4, 0xEDD6, 0xEEB8, 0xEF99, 0xF077, 0xF152,\n    0xF228, 0xF2F9, 0xF3C4, 0xF487, 0xF542, 0xF5F3, 0xF699, 0xF734,\n    0xF7C3, 0xF844, 0xF8B6, 0xF918, 0xF96A, 0xF9AB, 0xF9D8, 0xF9F2,\n    0xF9F7, 0xF9E6, 0xF9BE, 0xF97F, 0xF74E, 0xF222, 0xEB2F, 0xE3AD,\n    0xDCD0, 0xD7CE, 0xD5DE, 0xD5DE, 0xD5DE, 0xD5DE, 0xD5DE, 0xD5DE,\n    0xD5DE, 0xD5DE, 0xD5DE, 0xD5DE, 0xD5DE, 0xD5DE, 0xD5DE, 0xD5DE,\n    0xFBF8, 0xFBDF, 0xFB9C, 0xFB37, 0xFABA, 0xFA2D, 0xF99A, 0xF90A,\n    0xF887, 0xF819, 0xF7C9, 0xF7A1, 0xF7AB, 0xF7EE, 0xF875, 0xF948,\n    0xFA70, 0xFBF8, 0x0D4A, 0x1CC7, 0x16DA, 0x0B7B, 0xFE6F, 0xF377,\n    0xEE58, 0xED72, 0xEC9F, 0xEBDF, 0xEB33, 0xEA98, 0xEA10, 0xE999,\n    0xE933, 0xE8DE, 0xE899, 0xE864, 0xE83F, 0xE829, 0xE821, 0xE828,\n    0xE83C, 0xE85E, 0xE88D, 0xE8C8, 0xE910, 0xE963, 0xE9C2, 0xEA2C,\n    0xEAA0, 0xEB1E, 0xEBA6, 0xEC38, 0xECD2, 0xED74, 0xEE1F, 0xEED1,\n    0xEF8A, 0xF04B, 0xF111, 0xF1DE, 0xF2B0, 0xF387, 0xF463, 0xF6DA,\n    0xFBD1, 0x023A, 0x090A, 0x0F34, 0x13AC, 0x1564, 0x1564, 0x1564,\n    0x1564, 0x1564, 0x1564, 0x1564, 0x1564, 0x1564, 0x1564, 0x1564,\n    0x1564, 0x1564, 0x1564, 0xE70F, 0xE71A, 0xE739, 0xE768, 0xE7A1,\n    0xE7E2, 0xE825, 0xE867, 0xE8A3, 0xE8D6, 0xE8FA, 0xE90D, 0xE908,\n    0xE8E9, 0xE8AC, 0xE84B, 0xE7C3, 0xE70F, 0xDEC8, 0xD804, 0xDCAA,\n    0xE482, 0xED19, 0xF3FB, 0xF6B7, 0xF684, 0xF63C, 0xF5E1, 0xF573,\n    0xF4F3, 0xF461, 0xF3C0, 0xF30E, 0xF24E, 0xF180, 0xF0A4, 0xEFBC,\n    0xEEC8, 0xEDC9, 0xECC0, 0xEBAE, 0xEA94, 0xE971, 0xE848, 0xE718,\n    0xE5E3, 0xE4AA, 0xE36D, 0xE22C, 0xE0EA, 0xDFA6, 0xDE62, 0xDD1D,\n    0xDBDA, 0xDA98, 0xD959, 0xD81D, 0xD6E6, 0xD5B3, 0xD486, 0xD35F,\n    0xD240, 0xD129, 0xCFC6, 0xCDEE, 0xCBDF, 0xC9D7, 0xC817, 0xC6DB,\n    0xC664, 0xC664, 0xC664, 0xC664, 0xC664, 0xC664, 0xC664, 0xC664,\n    0xC664, 0xC664, 0xC664, 0xC664, 0xC664, 0xC664, 0xE290, 0xE25C,\n    0xE1C8, 0xE0E4, 0xDFBC, 0xDE5F, 0xDCDA, 0xDB3B, 0xD991, 0xD7E9,\n    0xD651, 0xD4D6, 0xD387, 0xD272, 0xD1A5, 0xD12C, 0xD117, 0xD173,\n    0xD3B5, 0xD88D, 0xDEE0, 0xE594, 0xEB8F, 0xEFB5, 0xF0ED, 0xF039,\n    0xEF59, 0xEE4F, 0xED1E, 0xEBC9, 0xEA52, 0xE8BD, 0xE70B, 0xE541,\n    0xE35F, 0xE16A, 0xDF63, 0xDD4E, 0xDB2E, 0xD904, 0xD6D3, 0xD4A0,\n    0xD26B, 0xD038, 0xCE09, 0xCBE2, 0xC9C5, 0xC7B4, 0xC5B2, 0xC3C3,\n    0xC1E9, 0xC025, 0xBE7D, 0xBCF1, 0xBB84, 0xBA3A, 0xB915, 0xB818,\n    0xB746, 0xB6A0, 0xB62A, 0xB5E7, 0xB5DA, 0xB94C, 0xC21A, 0xCE1E,\n    0xDB33, 0xE733, 0xEFF8, 0xF35F, 0xF35F, 0xF35F, 0xF35F, 0xF35F,\n    0xF35F, 0xF35F, 0xF35F, 0xF35F, 0xF35F, 0xF35F, 0xF35F, 0xF35F,\n    0xF35F, 0xF08E, 0xF081, 0xF05D, 0xF027, 0xEFE4, 0xEF99, 0xEF4C,\n    0xEF03, 0xEEC1, 0xEE8C, 0xEE6A, 0xEE60, 0xEE73, 0xEEA8, 0xEF04,\n    0xEF8C, 0xF046, 0xF138, 0xF333, 0xF6A7, 0xFB01, 0xFFAD, 0x0419,\n    0x07B2, 0x09E4, 0x0B34, 0x0C87, 0x0DDB, 0x0F30, 0x1086, 0x11DB,\n    0x1330, 0x1483, 0x15D3, 0x1721, 0x186A, 0x19B0, 0x1AF0, 0x1C2B,\n    0x1D5F, 0x1E8C, 0x1FB1, 0x20CE, 0x21E2, 0x22EC, 0x23EB, 0x24DF,\n    0x25C8, 0x26A4, 0x2772, 0x2833, 0x28E5, 0x2988, 0x2A1B, 0x2A9D,\n    0x2B0E, 0x2B6D, 0x2BBA, 0x2BF3, 0x2C18, 0x2C28, 0x2C23, 0x2C08,\n    0x29A8, 0x23C6, 0x1BCB, 0x1321, 0x0B31, 0x0565, 0x0326, 0x0326,\n    0x0326, 0x0326, 0x0326, 0x0326, 0x0326, 0x0326, 0x0326, 0x0326,\n    0x0326, 0x0326, 0x0326, 0x0326, 0x2328, 0x235E, 0x23F7, 0x24E4,\n    0x2617, 0x2781, 0x2913, 0x2AC0, 0x2C78, 0x2E2C, 0x2FD0, 0x3152,\n    0x32A7, 0x33BD, 0x3488, 0x34F9, 0x3500, 0x3490, 0x3247, 0x2D78,\n    0x2722, 0x2047, 0x19E7, 0x1501, 0x1297, 0x11C5, 0x1101, 0x1048,\n    0x0F9C, 0x0EFC, 0x0E68, 0x0DDF, 0x0D61, 0x0CEE, 0x0C86, 0x0C29,\n    0x0BD6, 0x0B8D, 0x0B4E, 0x0B19, 0x0AED, 0x0ACB, 0x0AB1, 0x0AA0,\n    0x0A97, 0x0A97, 0x0A9F, 0x0AAE, 0x0AC5, 0x0AE4, 0x0B09, 0x0B36,\n    0x0B69, 0x0BA2, 0x0BE2, 0x0C28, 0x0C73, 0x0CC4, 0x0D1A, 0x0D75,\n    0x0DD5, 0x0E39, 0x0EA2, 0x1033, 0x1392, 0x17FF, 0x1CBC, 0x210B,\n    0x242C, 0x2562, 0x2562, 0x2562, 0x2562, 0x2562, 0x2562, 0x2562,\n    0x2562, 0x2562, 0x2562, 0x2562, 0x2562, 0x2562, 0x2562, 0x9376,\n    0x9300, 0x91B3, 0x8FB2, 0x8D20, 0x8A1F, 0x86D2, 0x835B, 0x7FD9,\n    0x7C75, 0x794E, 0x7686, 0x7441, 0x72A0, 0x71C7, 0x71D6, 0x72F2,\n    0x753C, 0x7CB2, 0x8B4E, 0x9E23, 0xB24A, 0xC4DC, 0xD2F0, 0xD99F,\n    0xDB89, 0xDD43, 0xDECF, 0xE02E, 0xE160, 0xE269, 0xE349, 0xE402,\n    0xE495, 0xE504, 0xE550, 0xE57B, 0xE587, 0xE574, 0xE545, 0xE4FB,\n    0xE497, 0xE41C, 0xE389, 0xE2E2, 0xE227, 0xE15A, 0xE07D, 0xDF91,\n    0xDE97, 0xDD92, 0xDC81, 0xDB68, 0xDA48, 0xD922, 0xD7F7, 0xD6C9,\n    0xD59A, 0xD46B, 0xD33E, 0xD214, 0xD0EF, 0xCFCF, 0xCCC7, 0xC6BE,\n    0xBEF7, 0xB6B6, 0xAF41, 0xA9D9, 0xA7C4, 0xA7C4, 0xA7C4, 0xA7C4,\n    0xA7C4, 0xA7C4, 0xA7C4, 0xA7C4, 0xA7C4, 0xA7C4, 0xA7C4, 0xA7C4,\n    0xA7C4, 0xA7C4, 0x0027, 0x0022, 0x0015, 0x0001, 0xFFE8, 0xFFC9,\n    0xFFA6, 0xFF81, 0xFF5A, 0xFF33, 0xFF0D, 0xFEE8, 0xFEC7, 0xFEA9,\n    0xFE91, 0xFE80, 0xFE76, 0xFE75, 0xFE90, 0xFED1, 0xFF2B, 0xFF91,\n    0xFFF4, 0x0047, 0x007E, 0x00A0, 0x00BE, 0x00D9, 0x00F1, 0x0106,\n    0x0118, 0x0128, 0x0136, 0x0141, 0x014C, 0x0154, 0x015C, 0x0163,\n    0x016A, 0x016F, 0x0174, 0x0178, 0x017B, 0x017D, 0x017F, 0x017F,\n    0x0180, 0x017F, 0x017F, 0x017E, 0x017C, 0x017B, 0x0179, 0x0177,\n    0x0175, 0x0173, 0x0171, 0x016F, 0x016D, 0x016C, 0x016B, 0x016A,\n    0x016A, 0x016A, 0x016C, 0x016E, 0x016F, 0x016F, 0x016E, 0x016A,\n    0x0163, 0x015A, 0x0150, 0x0145, 0x0139, 0x012D, 0x0121, 0x0116,\n    0x010C, 0x0104, 0x00FD, 0x00F9, 0x00F7, 0x0247, 0x0245, 0x0241,\n    0x023A, 0x0232, 0x0228, 0x021C, 0x020F, 0x0202, 0x01F5, 0x01E8,\n    0x01DB, 0x01CF, 0x01C5, 0x01BC, 0x01B5, 0x01B0, 0x01AE, 0x01B5,\n    0x01C9, 0x01E4, 0x0201, 0x021D, 0x0232, 0x023A, 0x023A, 0x0237,\n    0x0231, 0x0229, 0x0220, 0x0215, 0x020A, 0x01FE, 0x01F3, 0x01E8,\n    0x01DE, 0x01D5, 0x01CF, 0x01CB, 0x01C8, 0x01C6, 0x01C4, 0x01C2,\n    0x01C1, 0x01C1, 0x01C0, 0x01C0, 0x01C0, 0x01C1, 0x01C1, 0x01C2,\n    0x01C3, 0x01C3, 0x01C4, 0x01C5, 0x01C6, 0x01C7, 0x01C8, 0x01C9,\n    0x01CA, 0x01CA, 0x01CA, 0x01CB, 0x01CA, 0x01C9, 0x01C8, 0x01C7,\n    0x01C7, 0x01C8, 0x01CB, 0x01CF, 0x01D4, 0x01DA, 0x01E1, 0x01E9,\n    0x01F0, 0x01F7, 0x01FE, 0x0204, 0x0209, 0x020D, 0x0210, 0x0211,\n    0xCC52, 0xCBFA, 0xCB01, 0xC97C, 0xC782, 0xC52A, 0xC287, 0xBFB2,\n    0xBCC0, 0xB9C6, 0xB6DB, 0xB415, 0xB18A, 0xAF50, 0xAD7D, 0xAC26,\n    0xAB63, 0xAB48, 0xAD4E, 0xB230, 0xB8EF, 0xC088, 0xC7FD, 0xCE4A,\n    0xD271, 0xD509, 0xD75D, 0xD96F, 0xDB46, 0xDCE5, 0xDE52, 0xDF90,\n    0xE0A6, 0xE196, 0xE267, 0xE31D, 0xE3BC, 0xE44A, 0xE4CB, 0xE53C,\n    0xE59A, 0xE5E7, 0xE622, 0xE64E, 0xE66C, 0xE67D, 0xE682, 0xE67D,\n    0xE66F, 0xE65A, 0xE63E, 0xE61C, 0xE5F7, 0xE5CF, 0xE5A7, 0xE57E,\n    0xE556, 0xE531, 0xE50F, 0xE4F3, 0xE4DE, 0xE4D0, 0xE4CB, 0xE4D9,\n    0xE4FC, 0xE523, 0xE540, 0xE545, 0xE523, 0xE4CB, 0xE43C, 0xE386,\n    0xE2B1, 0xE1C7, 0xE0CF, 0xDFD4, 0xDEDD, 0xDDF4, 0xDD22, 0xDC6F,\n    0xDBE4, 0xDB8A, 0xDB6A, 0x36CB, 0x3745, 0x389E, 0x3AB3, 0x3D65,\n    0x4093, 0x441D, 0x47E0, 0x4BBD, 0x4F94, 0x5342, 0x56A7, 0x59A3,\n    0x5C15, 0x5DDC, 0x5ED8, 0x5EE7, 0x5DE8, 0x5906, 0x4ED3, 0x4148,\n    0x3261, 0x2419, 0x186A, 0x1150, 0x0D8A, 0x0A7D, 0x0817, 0x0648,\n    0x0501, 0x0430, 0x03C6, 0x03B2, 0x03E3, 0x044B, 0x04D7, 0x0578,\n    0x061E, 0x06B8, 0x075A, 0x0820, 0x0907, 0x0A0D, 0x0B2F, 0x0C6A,\n    0x0DBA, 0x0F1E, 0x1092, 0x1214, 0x13A0, 0x1535, 0x16CE, 0x1869,\n    0x1A04, 0x1B9B, 0x1D2C, 0x1EB3, 0x202F, 0x219B, 0x22F6, 0x243C,\n    0x256B, 0x267F, 0x274A, 0x27AD, 0x27BE, 0x2792, 0x2740, 0x26DD,\n    0x267F, 0x261C, 0x259E, 0x250A, 0x2467, 0x23BB, 0x230C, 0x2260,\n    0x21BF, 0x212C, 0x20B0, 0x204F, 0x2011, 0x1FFB, 0x0EBF, 0x0EB8,\n    0x0EA6, 0x0E88, 0x0E60, 0x0E30, 0x0DF7, 0x0DB8, 0x0D73, 0x0D29,\n    0x0CDB, 0x0C8C, 0x0C3A, 0x0BE8, 0x0B97, 0x0B48, 0x0AFB, 0x0AB3,\n    0x0A71, 0x0A32, 0x09F0, 0x09A2, 0x0941, 0x08C4, 0x0825, 0x0760,\n    0x067B, 0x057D, 0x046D, 0x0353, 0x0234, 0x0119, 0x0009, 0xFF0A,\n    0xFE23, 0xFD5B, 0xFCBA, 0xFC46, 0xFC07, 0xFBEE, 0xFBE8, 0xFBF4,\n    0xFC0F, 0xFC3A, 0xFC71, 0xFCB5, 0xFD02, 0xFD59, 0xFDB8, 0xFE1D,\n    0xFE87, 0xFEF4, 0xFF64, 0xFFD4, 0x0042, 0x00B0, 0x011A, 0x017F,\n    0x01DE, 0x0236, 0x0284, 0x02C8, 0x0300, 0x0318, 0x0305, 0x02D4,\n    0x0296, 0x0256, 0x0225, 0x020F, 0x020F, 0x0216, 0x0222, 0x0232,\n    0x0245, 0x025A, 0x026F, 0x0284, 0x0298, 0x02AA, 0x02B7, 0x02C0,\n    0x02C4, 0x1452, 0x144D, 0x1440, 0x1428, 0x1407, 0x13DA, 0x13A2,\n    0x135F, 0x130F, 0x12B2, 0x1247, 0x11CF, 0x1147, 0x10B1, 0x100C,\n    0x0F56, 0x0E8F, 0x0DB7, 0x0C5B, 0x0A3D, 0x07AE, 0x04FD, 0x027B,\n    0x0078, 0xFF44, 0xFEA6, 0xFE2E, 0xFDD8, 0xFDA1, 0xFD86, 0xFD82,\n    0xFD92, 0xFDB4, 0xFDE2, 0xFE1B, 0xFE59, 0xFE9A, 0xFEDA, 0xFF16,\n    0xFF52, 0xFF94, 0xFFDD, 0x002A, 0x007E, 0x00D6, 0x0132, 0x0191,\n    0x01F4, 0x0259, 0x02BF, 0x0327, 0x038F, 0x03F8, 0x0460, 0x04C7,\n    0x052D, 0x0591, 0x05F2, 0x0650, 0x06AA, 0x0700, 0x0751, 0x079D,\n    0x07D8, 0x07F9, 0x0806, 0x0806, 0x07FE, 0x07F3, 0x07EB, 0x07E5,\n    0x07DB, 0x07CE, 0x07BF, 0x07AF, 0x079D, 0x078C, 0x077B, 0x076C,\n    0x075F, 0x0754, 0x074E, 0x074B, 0xB107, 0xB084, 0xAF13, 0xACD8,\n    0xA9F6, 0xA692, 0xA2CE, 0x9ECE, 0x9AB7, 0x96AB, 0x92CF, 0x8F46,\n    0x8C33, 0x89BB, 0x8802, 0x872A, 0x8757, 0x88AE, 0x8EC5, 0x9B5D,\n    0xABD7, 0xBD95, 0xCDF8, 0xDA62, 0xE034, 0xE0F3, 0xE00B, 0xDDB8,\n    0xDA39, 0xD5CB, 0xD0AB, 0xCB16, 0xC54A, 0xBF83, 0xBA00, 0xB4FE,\n    0xB0BA, 0xAD71, 0xAB60, 0xAA20, 0xA91A, 0xA84B, 0xA7AF, 0xA742,\n    0xA6FF, 0xA6E2, 0xA6E7, 0xA70A, 0xA747, 0xA799, 0xA7FD, 0xA86E,\n    0xA8E8, 0xA966, 0xA9E5, 0xAA61, 0xAAD5, 0xAB3D, 0xAB95, 0xABD9,\n    0xAC04, 0xAC13, 0xAC00, 0xABA2, 0xAAE6, 0xA9F5, 0xA8F2, 0xA806,\n    0xA756, 0xA708, 0xA70A, 0xA72D, 0xA76B, 0xA7BF, 0xA822, 0xA88F,\n    0xA900, 0xA970, 0xA9D8, 0xAA33, 0xAA7B, 0xAAAA, 0xAABC, 0x0071,\n    0x0072, 0x0078, 0x0080, 0x008A, 0x0097, 0x00A4, 0x00B3, 0x00C3,\n    0x00D2, 0x00E1, 0x00EF, 0x00FC, 0x0107, 0x0110, 0x0116, 0x0119,\n    0x0118, 0x0109, 0x00E8, 0x00BC, 0x008B, 0x005E, 0x003C, 0x002B,\n    0x0025, 0x0021, 0x001D, 0x0019, 0x0016, 0x0014, 0x0012, 0x0010,\n    0x000F, 0x000E, 0x000D, 0x000D, 0x000D, 0x000E, 0x000F, 0x000F,\n    0x0011, 0x0012, 0x0013, 0x0015, 0x0017, 0x0018, 0x001A, 0x001C,\n    0x001E, 0x0020, 0x0021, 0x0023, 0x0025, 0x0026, 0x0027, 0x0029,\n    0x0029, 0x002A, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B,\n    0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B,\n    0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B, 0x002B,\n    0x002B, 0x002B, 0xFEFF, 0xFF02, 0xFF0A, 0xFF16, 0xFF26, 0xFF3A,\n    0xFF4F, 0xFF66, 0xFF7E, 0xFF97, 0xFFAF, 0xFFC6, 0xFFDB, 0xFFEE,\n    0xFFFD, 0x0008, 0x000F, 0x0011, 0x0001, 0xFFDA, 0xFFA2, 0xFF65,\n    0xFF2C, 0xFF00, 0xFEEB, 0xFEE4, 0xFEDF, 0xFEDA, 0xFED5, 0xFED1,\n    0xFECE, 0xFECC, 0xFECA, 0xFEC8, 0xFEC7, 0xFEC6, 0xFEC6, 0xFEC6,\n    0xFEC7, 0xFEC8, 0xFEC9, 0xFECA, 0xFECC, 0xFECE, 0xFED0, 0xFED2,\n    0xFED4, 0xFED6, 0xFED9, 0xFEDB, 0xFEDD, 0xFEDF, 0xFEE1, 0xFEE3,\n    0xFEE5, 0xFEE7, 0xFEE8, 0xFEE9, 0xFEEA, 0xFEEB, 0xFEEB, 0xFEEB,\n    0xFEEB, 0xFEEB, 0xFEEB, 0xFEEB, 0xFEEB, 0xFEEB, 0xFEEB, 0xFEEB,\n    0xFEEB, 0xFEEB, 0xFEEB, 0xFEEB, 0xFEEB, 0xFEEB, 0xFEEB, 0xFEEB,\n    0xFEEB, 0xFEEB, 0xFEEB, 0xFEEB, 0xFEEB, 0xD1D7, 0xD152, 0xCFD9,\n    0xCD8D, 0xCA90, 0xC703, 0xC308, 0xBEC0, 0xBA4D, 0xB5D0, 0xB169,\n    0xAD3C, 0xA969, 0xA611, 0xA357, 0xA15B, 0xA03F, 0xA024, 0xA3A2,\n    0xABF9, 0xB746, 0xC3A8, 0xCF3B, 0xD81F, 0xDC70, 0xDDC3, 0xDEF0,\n    0xDFF9, 0xE0DE, 0xE1A3, 0xE247, 0xE2CE, 0xE339, 0xE389, 0xE3C0,\n    0xE3E0, 0xE3EA, 0xE3E1, 0xE3C5, 0xE398, 0xE35C, 0xE314, 0xE2BF,\n    0xE261, 0xE1FA, 0xE18D, 0xE11A, 0xE0A4, 0xE02D, 0xDFB6, 0xDF40,\n    0xDECE, 0xDE60, 0xDDF9, 0xDD9B, 0xDD46, 0xDCFE, 0xDCC2, 0xDC95,\n    0xDC79, 0xDC70, 0xDC70, 0xDC70, 0xDC70, 0xDC70, 0xDC70, 0xDC70,\n    0xDC70, 0xDC70, 0xDC70, 0xDC70, 0xDC70, 0xDC70, 0xDC70, 0xDC70,\n    0xDC70, 0xDC70, 0xDC70, 0xDC70, 0xDC70, 0xDC70, 0xDC70, 0xDC70,\n    0x38E6, 0x3967, 0x3AD6, 0x3D0D, 0x3FEA, 0x4349, 0x4707, 0x4B01,\n    0x4F13, 0x531B, 0x56F4, 0x5A7B, 0x5D8E, 0x6008, 0x61C6, 0x62A6,\n    0x6283, 0x613B, 0x5B60, 0x4F41, 0x3F57, 0x2E1D, 0x1E0A, 0x119A,\n    0x0B44, 0x0943, 0x081C, 0x07B9, 0x0805, 0x08E9, 0x0A4F, 0x0C22,\n    0x0E4C, 0x10B7, 0x134D, 0x15F8, 0x18A2, 0x1B35, 0x1D9C, 0x1FC1,\n    0x218D, 0x22EC, 0x23C6, 0x2440, 0x248E, 0x24B5, 0x24BA, 0x249F,\n    0x246A, 0x241E, 0x23BF, 0x2352, 0x22DB, 0x225E, 0x21DF, 0x2162,\n    0x20EC, 0x207F, 0x2022, 0x1FD7, 0x1FA3, 0x1F84, 0x1F73, 0x1F6F,\n    0x1F72, 0x1F7C, 0x1F89, 0x1F95, 0x1F9F, 0x1FA3, 0x1FA3, 0x1FA3,\n    0x1FA3, 0x1FA3, 0x1FA3, 0x1FA3, 0x1FA3, 0x1FA3, 0x1FA3, 0x1FA3,\n    0x1FA3, 0x1FA3, 0x1FA3, 0xEFEB, 0xF00E, 0xF073, 0xF112, 0xF1E4,\n    0xF2E0, 0xF400, 0xF53C, 0xF68C, 0xF7E9, 0xF94B, 0xFAAC, 0xFC02,\n    0xFD47, 0xFE73, 0xFF7F, 0x0062, 0x0116, 0x0164, 0x0133, 0x00AD,\n    0xFFFA, 0xFF41, 0xFEAA, 0xFE5E, 0xFE47, 0xFE35, 0xFE26, 0xFE1B,\n    0xFE13, 0xFE0E, 0xFE0C, 0xFE0C, 0xFE0E, 0xFE12, 0xFE17, 0xFE1E,\n    0xFE25, 0xFE2E, 0xFE36, 0xFE3E, 0xFE46, 0xFE4E, 0xFE55, 0xFE5A,\n    0xFE5E, 0xFE62, 0xFE67, 0xFE6E, 0xFE75, 0xFE7D, 0xFE86, 0xFE8F,\n    0xFE99, 0xFEA2, 0xFEAB, 0xFEB4, 0xFEBC, 0xFEC4, 0xFECA, 0xFECF,\n    0xFED3, 0xFED5, 0xFED6, 0xFED5, 0xFED4, 0xFED3, 0xFED1, 0xFED0,\n    0xFECF, 0xFECF, 0xFECF, 0xFECF, 0xFECF, 0xFECF, 0xFECF, 0xFECF,\n    0xFECF, 0xFECF, 0xFECF, 0xFECF, 0xFECF, 0xFECF, 0xE999, 0xE9A7,\n    0xE9D0, 0xEA12, 0xEA6B, 0xEADA, 0xEB5D, 0xEBF1, 0xEC96, 0xED49,\n    0xEE08, 0xEED2, 0xEFA5, 0xF07F, 0xF15E, 0xF241, 0xF325, 0xF409,\n    0xF53E, 0xF6F0, 0xF8E5, 0xFAE6, 0xFCB7, 0xFE20, 0xFEE7, 0xFF42,\n    0xFF8B, 0xFFC4, 0xFFEE, 0x000A, 0x001B, 0x0021, 0x001D, 0x0012,\n    0x0000, 0xFFE8, 0xFFCC, 0xFFAD, 0xFF8C, 0xFF6B, 0xFF4B, 0xFF2D,\n    0xFF13, 0xFEFE, 0xFEEF, 0xFEE7, 0xFEE3, 0xFEDE, 0xFED7, 0xFECF,\n    0xFEC6, 0xFEBD, 0xFEB3, 0xFEA9, 0xFE9F, 0xFE96, 0xFE8C, 0xFE84,\n    0xFE7C, 0xFE75, 0xFE6F, 0xFE6B, 0xFE69, 0xFE68, 0xFE69, 0xFE6A,\n    0xFE6C, 0xFE6D, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F,\n    0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F, 0xFE6F,\n    0xFE6F, 0xAF5F, 0xAEF0, 0xADB7, 0xABD4, 0xA967, 0xA68D, 0xA366,\n    0xA012, 0x9CAE, 0x995C, 0x9639, 0x9364, 0x90FE, 0x8F24, 0x8DF6,\n    0x8D94, 0x8E1C, 0x8FAD, 0x9575, 0xA10A, 0xB025, 0xC082, 0xCFDA,\n    0xDBE8, 0xE266, 0xE518, 0xE74C, 0xE90C, 0xEA5F, 0xEB4F, 0xEBE6,\n    0xEC2B, 0xEC29, 0xEBE7, 0xEB6F, 0xEACA, 0xEA02, 0xE91E, 0xE827,\n    0xE728, 0xE629, 0xE533, 0xE44E, 0xE384, 0xE2DF, 0xE266, 0xE1EF,\n    0xE150, 0xE08D, 0xDFAC, 0xDEB4, 0xDDAA, 0xDC94, 0xDB78, 0xDA5B,\n    0xD945, 0xD839, 0xD73F, 0xD65C, 0xD597, 0xD4F4, 0xD483, 0xD446,\n    0xD435, 0xD443, 0xD466, 0xD494, 0xD4C2, 0xD4E6, 0xD4F4, 0xD4F4,\n    0xD4F4, 0xD4F4, 0xD4F4, 0xD4F4, 0xD4F4, 0xD4F4, 0xD4F4, 0xD4F4,\n    0xD4F4, 0xD4F4, 0xD4F4, 0xD4F4, 0x85AF, 0x7FF3, 0x4016, 0xBF5F,\n    0x7AA7, 0x8051, 0x400F, 0xBF5F, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFD, 0xFFF1,\n    0xFFE0, 0xFFC9, 0xFFAD, 0xFF8E, 0xFF6D, 0xFF4A, 0xFF26, 0xFF03,\n    0xFEE1, 0xFEC1, 0xFEA4, 0xFE8C, 0xFE78, 0xFE6B, 0xFE64, 0xFE66,\n    0xFE70, 0xFE84, 0xFEA3, 0xFECE, 0xFF05, 0xFF4A, 0xFF9D, 0x0000,\n    0x008E, 0x015E, 0x0265, 0x039A, 0x04F5, 0x066B, 0x07F4, 0x0986,\n    0x0B18, 0x0CA0, 0x0E16, 0x0F71, 0x10A6, 0x11AD, 0x127C, 0x130A,\n    0x134E, 0x133E, 0x12D2, 0x0E9D, 0x0578, 0xFAC1, 0xF1D6, 0xEB0A,\n    0xE571, 0xE28F, 0xE1AB, 0xE107, 0xE099, 0xE05C, 0xE045, 0xE04F,\n    0xE070, 0xE0A2, 0xE0DC, 0xE117, 0xE14B, 0xE16F, 0xE17D, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0002, 0x0007, 0x0011, 0x001D, 0x002B, 0x003B, 0x004D,\n    0x005F, 0x0071, 0x0084, 0x0096, 0x00A6, 0x00B5, 0x00C2, 0x00CC,\n    0x00D3, 0x00D7, 0x00D6, 0x00D1, 0x00C6, 0x00B6, 0x00A0, 0x0083,\n    0x005F, 0x0033, 0x0000, 0xFFBD, 0xFF63, 0xFEF5, 0xFE77, 0xFDEB,\n    0xFD53, 0xFCB2, 0xFC0A, 0xFB5F, 0xFAB4, 0xFA09, 0xF963, 0xF8C4,\n    0xF82E, 0xF7A4, 0xF72A, 0xF6C0, 0xF66B, 0xF62C, 0xF812, 0xFBDA,\n    0x0044, 0x046A, 0x075D, 0x09C1, 0x0AFF, 0x0B68, 0x0BB7, 0x0BEF,\n    0x0C14, 0x0C28, 0x0C2E, 0x0C29, 0x0C1D, 0x0C0C, 0x0BFA, 0x0BE9,\n    0x0BDD, 0x0BD8, 0xE077, 0xE099, 0xE0FB, 0xE195, 0xE260, 0xE352,\n    0xE465, 0xE591, 0xE6CE, 0xE815, 0xE95C, 0xEA9E, 0xEBD2, 0xECF0,\n    0xEDF0, 0xEECB, 0xEF79, 0xEFF2, 0xF045, 0xF086, 0xF0B7, 0xF0D8,\n    0xF0EC, 0xF0F4, 0xF0F1, 0xF0E5, 0xF0D0, 0xF0B5, 0xF095, 0xF071,\n    0xF04A, 0xF022, 0xEFFB, 0xEFD6, 0xEFB3, 0xEF95, 0xEF7E, 0xEF6D,\n    0xEF65, 0xEF68, 0xEF75, 0xEF90, 0xEFB9, 0xEFF2, 0xF038, 0xF085,\n    0xF0DC, 0xF13B, 0xF1A3, 0xF215, 0xF290, 0xF314, 0xF3A2, 0xF439,\n    0xF4DB, 0xF587, 0xF63E, 0xF6FF, 0xF7CA, 0xF8A1, 0xF983, 0xFA70,\n    0xFB68, 0xFD5F, 0x0099, 0x0414, 0x06C8, 0x084B, 0x090A, 0x0944,\n    0x0949, 0x093F, 0x0926, 0x0903, 0x08D9, 0x08A9, 0x0876, 0x0844,\n    0x0815, 0x07EB, 0x07CA, 0x07B4, 0x07AC, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0007, 0x001D,\n    0x003E, 0x0069, 0x009B, 0x00D2, 0x010D, 0x0147, 0x0181, 0x01B7,\n    0x01E7, 0x020F, 0x022C, 0x023D, 0x0240, 0x0232, 0x0210, 0x01DA,\n    0x018C, 0x0124, 0x00A1, 0x0000, 0xFEF9, 0xFD59, 0xFB40, 0xF8CB,\n    0xF61A, 0xF34C, 0xF07F, 0xEDD2, 0xEB63, 0xE952, 0xE7BD, 0xE6C2,\n    0xE681, 0xE717, 0xE99B, 0xEE8E, 0xF537, 0xFCDA, 0x04BC, 0x0C24,\n    0x1255, 0x1695, 0x1829, 0x1829, 0x1829, 0x1829, 0x1829, 0x1829,\n    0x1829, 0x1829, 0x1829, 0x1829, 0x1829, 0x1829, 0x1829, 0x1829,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xFFFE, 0xFFF8, 0xFFEE, 0xFFE1, 0xFFD2, 0xFFC2, 0xFFB1,\n    0xFF9F, 0xFF8E, 0xFF7E, 0xFF70, 0xFF64, 0xFF5C, 0xFF57, 0xFF56,\n    0xFF5A, 0xFF64, 0xFF74, 0xFF8B, 0xFFAA, 0xFFD1, 0x0000, 0x004D,\n    0x00C8, 0x0166, 0x021F, 0x02EA, 0x03BE, 0x0491, 0x055C, 0x0614,\n    0x06B1, 0x0729, 0x0775, 0x078A, 0x0760, 0x06A7, 0x0538, 0x034A,\n    0x0112, 0xFEC9, 0xFCA3, 0xFAD6, 0xF99A, 0xF925, 0xF925, 0xF925,\n    0xF925, 0xF925, 0xF925, 0xF925, 0xF925, 0xF925, 0xF925, 0xF925,\n    0xF925, 0xF925, 0xF925, 0x0606, 0x0628, 0x0688, 0x071B, 0x07D8,\n    0x08B5, 0x09A8, 0x0AA8, 0x0BAB, 0x0CA7, 0x0D92, 0x0E63, 0x0F10,\n    0x0F8F, 0x0FD7, 0x0FDC, 0x0F97, 0x0EFD, 0x0D05, 0x092B, 0x042A,\n    0xFEBF, 0xF9A3, 0xF593, 0xF349, 0xF237, 0xF14D, 0xF087, 0xEFE2,\n    0xEF5D, 0xEEF3, 0xEEA1, 0xEE66, 0xEE3D, 0xEE24, 0xEE18, 0xEE16,\n    0xEE1B, 0xEE23, 0xEE2D, 0xEE35, 0xEE38, 0xEE33, 0xEE23, 0xEE06,\n    0xEDD7, 0xED95, 0xED46, 0xECF1, 0xEC97, 0xEC3A, 0xEBDB, 0xEB79,\n    0xEB15, 0xEAB1, 0xEA4E, 0xE9EB, 0xE989, 0xE92B, 0xE8CF, 0xE877,\n    0xE81D, 0xE7BD, 0xE75B, 0xE6FC, 0xE6A4, 0xE657, 0xE61C, 0xE5F4,\n    0xE5E6, 0xE5E6, 0xE5E6, 0xE5E6, 0xE5E6, 0xE5E6, 0xE5E6, 0xE5E6,\n    0xE5E6, 0xE5E6, 0xE5E6, 0xE5E6, 0xE5E6, 0xE5E6, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0002, 0x0005, 0x0008, 0x000C, 0x0011, 0x0015, 0x001A, 0x001E,\n    0x0023, 0x0026, 0x0029, 0x002B, 0x002B, 0x002B, 0x0028, 0x0024,\n    0x001E, 0x0017, 0x000C, 0x0000, 0xFFE9, 0xFFC0, 0xFF8A, 0xFF4A,\n    0xFF04, 0xFEBB, 0xFE74, 0xFE31, 0xFDF5, 0xFDC6, 0xFDA6, 0xFD99,\n    0xFDA2, 0xFDC6, 0xFE07, 0xFE8C, 0xFF69, 0x0086, 0x01CF, 0x032C,\n    0x0485, 0x05C4, 0x06D2, 0x0798, 0x082C, 0x08B1, 0x0929, 0x0995,\n    0x09F3, 0x0A45, 0x0A8B, 0x0AC6, 0x0AF5, 0x0B19, 0x0B32, 0x0B41,\n    0x0B46, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xFFFC, 0xFFF1, 0xFFE0, 0xFFCA, 0xFFB0, 0xFF94,\n    0xFF76, 0xFF59, 0xFF3D, 0xFF23, 0xFF0D, 0xFEFB, 0xFEF0, 0xFEEC,\n    0xFEF1, 0xFEFF, 0xFF18, 0xFF3D, 0xFF6F, 0xFFB0, 0x0000, 0x0077,\n    0x0125, 0x0200, 0x02FE, 0x0417, 0x0540, 0x0670, 0x079E, 0x08C0,\n    0x09CC, 0x0ABA, 0x0B7F, 0x0C12, 0x0C6A, 0x0C7E, 0x0C0B, 0x0AF1,\n    0x095A, 0x076C, 0x0551, 0x0331, 0x0134, 0xFF84, 0xFE45, 0xFD55,\n    0xFC72, 0xFB9D, 0xFAD8, 0xFA23, 0xF97F, 0xF8EF, 0xF871, 0xF808,\n    0xF7B5, 0xF778, 0xF753, 0xF746, 0x5DDE, 0x5DE2, 0x5DEC, 0x5DFC,\n    0x5E0F, 0x5E23, 0x5E38, 0x5E4D, 0x5E5E, 0x5E6B, 0x5E73, 0x5E73,\n    0x5E6B, 0x5E59, 0x5E3A, 0x5E0F, 0x5DD4, 0x5D6A, 0x5C48, 0x59D1,\n    0x53A4, 0x4AEE, 0x4476, 0x3C23, 0x323C, 0x272E, 0x1B61, 0x0F42,\n    0x033C, 0xF7BA, 0xED24, 0xE3E8, 0xDB93, 0xD362, 0xCB5C, 0xC388,\n    0xBBEB, 0xB48D, 0xAD74, 0xA6A7, 0xA02B, 0x9A08, 0x9444, 0x8EE5,\n    0x89F2, 0x8569, 0x813C, 0x7D60, 0x79D4, 0x768D, 0x7383, 0x70AF,\n    0x6E09, 0x6B89, 0x6927, 0x66DC, 0x64A0, 0x626C, 0x6037, 0x5DFB,\n    0x5BAF, 0x5979, 0x5780, 0x55C1, 0x543A, 0x52E5, 0x51C1, 0x50C8,\n    0x4FF9, 0x4F4F, 0x4ECA, 0x4E69, 0x4E28, 0x4E01, 0x4DF2, 0x4DF4,\n    0x4E05, 0x4E1F, 0x4E3E, 0x4E5E, 0x4E7A, 0x4E8F, 0x4E96,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_B4.inc.c",
    "content": "static const struct Animation anim_B4[] = {\n    1,\n    189,\n    0,\n    0,\n    0x18,\n    ANIMINDEX_NUMPARTS(anim_B4_indices),\n    anim_B4_values,\n    anim_B4_indices,\n    0,\n};\n\n\nstatic const u16 anim_B4_indices[] = {\n    0x0001, 0x0000, 0x0018, 0x0001, 0x0018, 0x0019, 0x0001, 0x0000, 0x0001, 0x0031, 0x0001, 0x0000,\n    0x0018, 0x0353, 0x0018, 0x036B, 0x0018, 0x0383,\n    0x0018, 0x030B, 0x0018, 0x0323, 0x0018, 0x033B,\n    0x0018, 0x02C3, 0x0018, 0x02DB, 0x0018, 0x02F3,\n    0x0001, 0x02BF, 0x0001, 0x02C0, 0x0001, 0x02C1,\n    0x0018, 0x0092, 0x0018, 0x00AA, 0x0018, 0x00C2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x007A,\n    0x0018, 0x0032, 0x0018, 0x004A, 0x0018, 0x0062,\n    0x0001, 0x02BB, 0x0001, 0x02BC, 0x0001, 0x02BD,\n    0x0018, 0x0123, 0x0018, 0x013B, 0x0018, 0x0153,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0122,\n    0x0018, 0x00DA, 0x0018, 0x00F2, 0x0018, 0x010A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02BE,\n    0x0018, 0x0273, 0x0018, 0x028B, 0x0018, 0x02A3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x025B,\n    0x0018, 0x0213, 0x0018, 0x022B, 0x0018, 0x0243,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02C2,\n    0x0018, 0x01CB, 0x0018, 0x01E3, 0x0018, 0x01FB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x01B3,\n    0x0018, 0x016B, 0x0018, 0x0183, 0x0018, 0x019B,\n};\n\nstatic const s16 anim_B4_values[] = {\n    0x0000, 0x007F, 0x007F, 0x0080, 0x0081, 0x0083, 0x0086, 0x0089,\n    0x008C, 0x0090, 0x0093, 0x0097, 0x009B, 0x009F, 0x00A3, 0x00A7,\n    0x00AB, 0x00AF, 0x00B2, 0x00B5, 0x00B8, 0x00BA, 0x00BB, 0x00BC,\n    0x00BD, 0x0017, 0x0017, 0x0017, 0x0016, 0x0015, 0x0014, 0x0013,\n    0x0012, 0x0011, 0x000F, 0x000E, 0x000C, 0x000B, 0x0009, 0x0008,\n    0x0006, 0x0005, 0x0004, 0x0003, 0x0002, 0x0001, 0x0000, 0x0000,\n    0x0000, 0x3FFF, 0x130A, 0x1319, 0x1345, 0x138B, 0x13E9, 0x145B,\n    0x14DE, 0x1571, 0x1611, 0x16BA, 0x176A, 0x181E, 0x18D4, 0x1988,\n    0x1A39, 0x1AE2, 0x1B83, 0x1C17, 0x1C9D, 0x1D10, 0x1D70, 0x1DB9,\n    0x1DE7, 0x1DFA, 0x059E, 0x0595, 0x057C, 0x0555, 0x0520, 0x04E0,\n    0x0496, 0x0443, 0x03E9, 0x038A, 0x0327, 0x02C1, 0x025A, 0x01F5,\n    0x0191, 0x0131, 0x00D7, 0x0083, 0x0038, 0xFFF8, 0xFFC2, 0xFF99,\n    0xFF7F, 0xFF74, 0xE216, 0xE223, 0xE249, 0xE284, 0xE2D4, 0xE335,\n    0xE3A6, 0xE423, 0xE4AC, 0xE53C, 0xE5D2, 0xE66C, 0xE707, 0xE7A1,\n    0xE838, 0xE8C9, 0xE952, 0xE9D0, 0xEA42, 0xEAA5, 0xEAF7, 0xEB35,\n    0xEB5D, 0xEB6C, 0xE7F7, 0xE7E9, 0xE7C0, 0xE780, 0xE72A, 0xE6C1,\n    0xE648, 0xE5C1, 0xE52E, 0xE493, 0xE3F1, 0xE34B, 0xE2A4, 0xE1FE,\n    0xE15C, 0xE0C0, 0xE02C, 0xDFA4, 0xDF29, 0xDEBF, 0xDE67, 0xDE24,\n    0xDDF9, 0xDDE8, 0xD771, 0xD715, 0xD60D, 0xD468, 0xD237, 0xCF8B,\n    0xCC73, 0xC900, 0xC543, 0xC14C, 0xBD2B, 0xB8F1, 0xB4AD, 0xB071,\n    0xAC4D, 0xA851, 0xA48D, 0xA113, 0x9DF1, 0x9B39, 0x98FB, 0x9747,\n    0x962E, 0x95C1, 0xD7FF, 0xD7B4, 0xD6DA, 0xD57E, 0xD3B0, 0xD17B,\n    0xCEEF, 0xCC17, 0xC901, 0xC5BC, 0xC255, 0xBED8, 0xBB54, 0xB7D6,\n    0xB46C, 0xB123, 0xAE08, 0xAB2A, 0xA895, 0xA657, 0xA47D, 0xA316,\n    0xA22E, 0xA1D4, 0xE703, 0xE73F, 0xE7EE, 0xE903, 0xEA75, 0xEC38,\n    0xEE42, 0xF088, 0xF2FF, 0xF59D, 0xF856, 0xFB1F, 0xFDEF, 0x00B9,\n    0x0374, 0x0614, 0x0890, 0x0ADB, 0x0CEB, 0x0EB6, 0x1031, 0x1150,\n    0x1209, 0x1252, 0xD5DE, 0xD5F6, 0xD638, 0xD6A3, 0xD731, 0xD7DE,\n    0xD8A6, 0xD985, 0xDA77, 0xDB77, 0xDC82, 0xDD94, 0xDEA8, 0xDFBA,\n    0xE0C6, 0xE1C8, 0xE2BB, 0xE39C, 0xE467, 0xE517, 0xE5A8, 0xE616,\n    0xE65D, 0xE679, 0x1564, 0x1541, 0x14DA, 0x1438, 0x135E, 0x1256,\n    0x1123, 0x0FCD, 0x0E5B, 0x0CD2, 0x0B39, 0x0996, 0x07F0, 0x064C,\n    0x04B2, 0x0327, 0x01B2, 0x0059, 0xFF24, 0xFE16, 0xFD38, 0xFC90,\n    0xFC23, 0xFBF8, 0xC664, 0xC692, 0xC716, 0xC7E7, 0xC8FE, 0xCA52,\n    0xCBDC, 0xCD93, 0xCF6F, 0xD168, 0xD375, 0xD58F, 0xD7AE, 0xD9C9,\n    0xDBD8, 0xDDD4, 0xDFB3, 0xE16E, 0xE2FC, 0xE456, 0xE574, 0xE64C,\n    0xE6D8, 0xE70F, 0xF35F, 0x0326, 0x030C, 0x02C1, 0x024A, 0x01AB,\n    0x00EA, 0x000A, 0xFF11, 0xFE02, 0xFCE2, 0xFBB7, 0xFA85, 0xF950,\n    0xF81D, 0xF6F1, 0xF5D0, 0xF4BF, 0xF3C3, 0xF2E0, 0xF21B, 0xF179,\n    0xF0FD, 0xF0AE, 0xF08F, 0x2562, 0x255F, 0x2556, 0x2548, 0x2535,\n    0x251D, 0x2502, 0x24E5, 0x24C4, 0x24A2, 0x247E, 0x2459, 0x2434,\n    0x240F, 0x23EB, 0x23C9, 0x23A8, 0x238A, 0x236F, 0x2357, 0x2344,\n    0x2335, 0x232B, 0x2328, 0xA7C4, 0xA7A8, 0xA756, 0xA6D4, 0xA626,\n    0xA553, 0xA45E, 0xA34D, 0xA226, 0xA0EC, 0x9FA5, 0x9E57, 0x9D05,\n    0x9BB6, 0x9A6F, 0x9933, 0x9809, 0x96F6, 0x95FE, 0x9527, 0x9476,\n    0x93EF, 0x9398, 0x9376, 0x00F7, 0x00F6, 0x00F3, 0x00EE, 0x00E7,\n    0x00DE, 0x00D4, 0x00C9, 0x00BE, 0x00B1, 0x00A4, 0x0096, 0x0089,\n    0x007B, 0x006E, 0x0062, 0x0056, 0x004B, 0x0041, 0x0038, 0x0031,\n    0x002B, 0x0028, 0x0027, 0x0211, 0x0211, 0x0212, 0x0214, 0x0215,\n    0x0218, 0x021A, 0x021D, 0x0220, 0x0223, 0x0227, 0x022A, 0x022E,\n    0x0231, 0x0234, 0x0238, 0x023B, 0x023E, 0x0240, 0x0242, 0x0244,\n    0x0246, 0x0246, 0x0247, 0xDB6A, 0xDB55, 0xDB18, 0xDAB8, 0xDA37,\n    0xD999, 0xD8E3, 0xD819, 0xD73D, 0xD653, 0xD561, 0xD468, 0xD36D,\n    0xD274, 0xD180, 0xD096, 0xCFB9, 0xCEEC, 0xCE34, 0xCD94, 0xCD10,\n    0xCCAC, 0xCC6B, 0xCC52, 0x1FFB, 0x201A, 0x2076, 0x2108, 0x21CB,\n    0x22B9, 0x23CC, 0x24FF, 0x264B, 0x27AC, 0x291B, 0x2A93, 0x2C0E,\n    0x2D86, 0x2EF6, 0x3059, 0x31A7, 0x32DD, 0x33F3, 0x34E5, 0x35AC,\n    0x3643, 0x36A5, 0x36CB, 0x02C4, 0x02D4, 0x0305, 0x0351, 0x03B8,\n    0x0435, 0x04C5, 0x0566, 0x0614, 0x06CE, 0x078E, 0x0854, 0x091B,\n    0x09E0, 0x0AA2, 0x0B5C, 0x0C0B, 0x0CAE, 0x0D40, 0x0DBF, 0x0E28,\n    0x0E77, 0x0EAA, 0x0EBE, 0x074B, 0x075E, 0x0792, 0x07E5, 0x0855,\n    0x08DC, 0x0979, 0x0A28, 0x0AE6, 0x0BAF, 0x0C81, 0x0D58, 0x0E30,\n    0x0F07, 0x0FD9, 0x10A3, 0x1162, 0x1213, 0x12B2, 0x133C, 0x13AE,\n    0x1404, 0x143C, 0x1452, 0xAABC, 0xAAC4, 0xAADE, 0xAB06, 0xAB3C,\n    0xAB7D, 0xABC9, 0xAC1E, 0xAC79, 0xACDB, 0xAD40, 0xADA8, 0xAE10,\n    0xAE78, 0xAEDE, 0xAF40, 0xAF9C, 0xAFF1, 0xB03E, 0xB081, 0xB0B8,\n    0xB0E1, 0xB0FC, 0xB107, 0x002B, 0x002B, 0x002C, 0x002E, 0x0030,\n    0x0033, 0x0036, 0x003A, 0x003E, 0x0042, 0x0047, 0x004B, 0x0050,\n    0x0054, 0x0059, 0x005D, 0x0061, 0x0065, 0x0068, 0x006B, 0x006D,\n    0x006F, 0x0070, 0x0071, 0xFEEB, 0xFEEB, 0xFEEB, 0xFEEC, 0xFEED,\n    0xFEED, 0xFEEE, 0xFEEF, 0xFEF1, 0xFEF2, 0xFEF3, 0xFEF4, 0xFEF6,\n    0xFEF7, 0xFEF8, 0xFEFA, 0xFEFB, 0xFEFC, 0xFEFD, 0xFEFE, 0xFEFE,\n    0xFEFF, 0xFEFF, 0xFEFF, 0xDC70, 0xDC61, 0xDC36, 0xDBF2, 0xDB98,\n    0xDB2A, 0xDAAA, 0xDA1B, 0xD981, 0xD8DD, 0xD833, 0xD784, 0xD6D4,\n    0xD625, 0xD57A, 0xD4D6, 0xD43A, 0xD3AB, 0xD329, 0xD2B9, 0xD25D,\n    0xD216, 0xD1E9, 0xD1D7, 0x1FA3, 0x1FC6, 0x202C, 0x20CE, 0x21A5,\n    0x22AD, 0x23DD, 0x2530, 0x26A0, 0x2827, 0x29BD, 0x2B5D, 0x2D01,\n    0x2EA2, 0x303A, 0x31C2, 0x3334, 0x348B, 0x35BF, 0x36CB, 0x37A7,\n    0x384F, 0x38BB, 0x38E5, 0xFECF, 0xFEBB, 0xFE7F, 0xFE1F, 0xFDA0,\n    0xFD05, 0xFC51, 0xFB89, 0xFAB0, 0xF9CA, 0xF8DB, 0xF7E5, 0xF6EE,\n    0xF5F8, 0xF508, 0xF420, 0xF346, 0xF27C, 0xF1C6, 0xF129, 0xF0A6,\n    0xF044, 0xF004, 0xEFEB, 0xFE6F, 0xFE52, 0xFDFE, 0xFD79, 0xFCC7,\n    0xFBEE, 0xFAF2, 0xF9DA, 0xF8AB, 0xF769, 0xF61A, 0xF4C2, 0xF368,\n    0xF210, 0xF0C0, 0xEF7C, 0xEE4B, 0xED30, 0xEC32, 0xEB55, 0xEA9F,\n    0xEA15, 0xE9BC, 0xE999, 0xD4F4, 0xD4BF, 0xD428, 0xD337, 0xD1F6,\n    0xD06F, 0xCEAA, 0xCCB1, 0xCA8D, 0xC848, 0xC5EC, 0xC381, 0xC110,\n    0xBEA4, 0xBC46, 0xB9FE, 0xB7D7, 0xB5D9, 0xB40E, 0xB280, 0xB138,\n    0xB03F, 0xAF9E, 0xAF5F, 0x85AF, 0x7FF3, 0x4016, 0xBF5F, 0x7AA7,\n    0x8051, 0x400F, 0xBF5F, 0xE17D, 0xE1A8, 0xE223, 0xE2E6, 0xE3EB,\n    0xE529, 0xE699, 0xE833, 0xE9EF, 0xEBC7, 0xEDB2, 0xEFA8, 0xF1A3,\n    0xF39B, 0xF587, 0xF761, 0xF920, 0xFABE, 0xFC32, 0xFD76, 0xFE80,\n    0xFF4B, 0xFFCD, 0x0000, 0x0BD8, 0x0BC8, 0x0B98, 0x0B4C, 0x0AE7,\n    0x0A6B, 0x09DD, 0x093D, 0x0891, 0x07DA, 0x071B, 0x0658, 0x0593,\n    0x04D0, 0x0411, 0x0359, 0x02AB, 0x020A, 0x017A, 0x00FC, 0x0095,\n    0x0046, 0x0013, 0x0000, 0x07AC, 0x0776, 0x06D8, 0x05DC, 0x048E,\n    0x02F5, 0x011C, 0xFF0F, 0xFCD3, 0xFA75, 0xF7FE, 0xF578, 0xF2ED,\n    0xF066, 0xEDED, 0xEB8C, 0xE94D, 0xE739, 0xE55B, 0xE3BB, 0xE265,\n    0xE161, 0xE0B9, 0xE077, 0x1829, 0x1808, 0x17A6, 0x170C, 0x163D,\n    0x1541, 0x141E, 0x12DA, 0x117A, 0x1004, 0x0E7F, 0x0CF1, 0x0B60,\n    0x09D1, 0x084B, 0x06D4, 0x0571, 0x042A, 0x0303, 0x0203, 0x0130,\n    0x0090, 0x0028, 0x0000, 0xF925, 0xF92E, 0xF94A, 0xF976, 0xF9B1,\n    0xF9F8, 0xFA4B, 0xFAA7, 0xFB0B, 0xFB75, 0xFBE3, 0xFC54, 0xFCC6,\n    0xFD37, 0xFDA6, 0xFE10, 0xFE75, 0xFED2, 0xFF26, 0xFF6E, 0xFFAA,\n    0xFFD8, 0xFFF5, 0x0000, 0xE5E6, 0xE613, 0xE694, 0xE762, 0xE875,\n    0xE9C3, 0xEB47, 0xECF6, 0xEECA, 0xF0BB, 0xF2C0, 0xF4D1, 0xF6E7,\n    0xF8F9, 0xFB00, 0xFCF3, 0xFECA, 0x007D, 0x0205, 0x0359, 0x0472,\n    0x0547, 0x05D0, 0x0606, 0x0B46, 0x0B37, 0x0B09, 0x0AC1, 0x0A61,\n    0x09EB, 0x0963, 0x08CC, 0x0827, 0x0779, 0x06C4, 0x060A, 0x054F,\n    0x0495, 0x03DF, 0x032F, 0x028A, 0x01F1, 0x0168, 0x00F0, 0x008E,\n    0x0043, 0x0013, 0x0000, 0xF746, 0xF753, 0xF776, 0xF7AE, 0xF7F8,\n    0xF853, 0xF8BC, 0xF931, 0xF9B1, 0xFA38, 0xFAC4, 0xFB54, 0xFBE5,\n    0xFC75, 0xFD02, 0xFD89, 0xFE09, 0xFE7F, 0xFEEA, 0xFF46, 0xFF93,\n    0xFFCC, 0xFFF2, 0x0000, 0x4E75, 0x4E8B, 0x4EC9, 0x4F2C, 0x4FAF,\n    0x5050, 0x5109, 0x51D9, 0x52B9, 0x53A7, 0x549F, 0x559D, 0x569D,\n    0x579B, 0x5894, 0x5983, 0x5A65, 0x5B36, 0x5BF2, 0x5C96, 0x5D1C,\n    0x5D82, 0x5DC4, 0x5DDE,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_B5_B6.inc.c",
    "content": "static const struct Animation anim_B5[] = {\n    1,\n    189,\n    0,\n    0,\n    0x14,\n    ANIMINDEX_NUMPARTS(anim_B5_B6_indices),\n    anim_B5_B6_values,\n    anim_B5_B6_indices,\n    0,\n};\n\nstatic const struct Animation anim_B6[] = {\n    1,\n    189,\n    19,\n    0,\n    0x14,\n    ANIMINDEX_NUMPARTS(anim_B5_B6_indices),\n    anim_B5_B6_values,\n    anim_B5_B6_indices,\n    0,\n};\n\n\nstatic const u16 anim_B5_B6_indices[] = {\n    0x0001, 0x0000, 0x0014, 0x0001, 0x0014, 0x0015, 0x0001, 0x0000, 0x0001, 0x0029, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x029F,\n    0x0014, 0x0263, 0x0014, 0x0277, 0x0014, 0x028B,\n    0x0014, 0x0227, 0x0014, 0x023B, 0x0014, 0x024F,\n    0x0001, 0x0223, 0x0001, 0x0224, 0x0001, 0x0225,\n    0x0014, 0x007A, 0x0014, 0x008E, 0x0014, 0x00A2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x0066,\n    0x0014, 0x002A, 0x0014, 0x003E, 0x0014, 0x0052,\n    0x0001, 0x021F, 0x0001, 0x0220, 0x0001, 0x0221,\n    0x0014, 0x00CB, 0x0014, 0x00DF, 0x0014, 0x00F3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x00B7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x00B6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0222,\n    0x0014, 0x01E3, 0x0014, 0x01F7, 0x0014, 0x020B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x01CF,\n    0x0014, 0x0193, 0x0014, 0x01A7, 0x0014, 0x01BB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0226,\n    0x0014, 0x0157, 0x0014, 0x016B, 0x0014, 0x017F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x0143,\n    0x0014, 0x0107, 0x0014, 0x011B, 0x0014, 0x012F,\n};\n\nstatic const s16 anim_B5_B6_values[] = {\n    0x0000, 0x008A, 0x008B, 0x0090, 0x0097, 0x009F, 0x00A8, 0x00B1,\n    0x00BA, 0x00C0, 0x00C4, 0x00C5, 0x00C2, 0x00BD, 0x00B7, 0x00B1,\n    0x00A6, 0x0099, 0x008D, 0x0080, 0x0073, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xFFFF, 0xFFFD, 0xFFFB, 0xFFF6, 0xFFF1, 0xFFE7,\n    0xFFD9, 0xFFC7, 0xFFB6, 0xFFA6, 0xFF99, 0xFF94, 0xFF91, 0xFF8D,\n    0xFF8A, 0x3FFF, 0x0000, 0xFFEC, 0xFFB1, 0xFF52, 0xFED3, 0xFE38,\n    0xFD83, 0xFCB7, 0xFBD9, 0xFAEC, 0xF9F2, 0xF8F0, 0xF7E7, 0xF6DD,\n    0xF5D4, 0xF4CF, 0xF3D2, 0xF2E0, 0xF1FD, 0xF12B, 0xF97C, 0xF979,\n    0xF973, 0xF968, 0xF959, 0xF947, 0xF933, 0xF91B, 0xF902, 0xF8E7,\n    0xF8CA, 0xF8AC, 0xF88E, 0xF870, 0xF851, 0xF833, 0xF816, 0xF7FB,\n    0xF7E0, 0xF7C8, 0xED8C, 0xED9B, 0xEDC9, 0xEE13, 0xEE75, 0xEEEE,\n    0xEF7A, 0xF018, 0xF0C4, 0xF17D, 0xF23E, 0xF307, 0xF3D4, 0xF4A2,\n    0xF570, 0xF63B, 0xF6FF, 0xF7BB, 0xF86B, 0xF90E, 0xF16C, 0xF175,\n    0xF18E, 0xF1B7, 0xF1ED, 0xF230, 0xF27D, 0xF2D4, 0xF333, 0xF399,\n    0xF403, 0xF472, 0xF4E3, 0xF555, 0xF5C7, 0xF636, 0xF6A2, 0xF70A,\n    0xF76B, 0xF7C5, 0x1CDF, 0x1CB4, 0x1C41, 0x1B9B, 0x1AD9, 0x1A10,\n    0x1956, 0x18C1, 0x1867, 0x185D, 0x18C6, 0x19A2, 0x1AD0, 0x1C31,\n    0x1DA6, 0x1F0E, 0x208B, 0x223E, 0x2406, 0x25C4, 0xFBFE, 0xFC05,\n    0xFC17, 0xFC36, 0xFC60, 0xFC96, 0xFCD5, 0xFD1F, 0xFD73, 0xFDD0,\n    0xFE49, 0xFEE7, 0xFF9C, 0x0058, 0x010F, 0x01B1, 0x0237, 0x02AC,\n    0x0319, 0x0389, 0x84A3, 0x85D2, 0x8900, 0x8DA0, 0x9325, 0x9902,\n    0x9EA9, 0xA38D, 0xA721, 0xA8D8, 0xA7BF, 0xA3EB, 0x9E62, 0x9825,\n    0x9238, 0x8D9D, 0x8AA0, 0x8883, 0x86C0, 0x84CF, 0xF549, 0xEE2A,\n    0xEE2B, 0xEE2E, 0xEE33, 0xEE3A, 0xEE43, 0xEE4D, 0xEE58, 0xEE64,\n    0xEE71, 0xEE7F, 0xEE8D, 0xEE9C, 0xEEAA, 0xEEB9, 0xEEC7, 0xEED5,\n    0xEEE3, 0xEEEF, 0xEEFB, 0xE264, 0xE2D0, 0xE3F3, 0xE59E, 0xE79F,\n    0xE9C7, 0xEBE6, 0xEDCB, 0xEF46, 0xF027, 0xF00A, 0xEEEF, 0xED3A,\n    0xEB50, 0xE997, 0xE805, 0xE658, 0xE49C, 0xE2DC, 0xE124, 0x0BFE,\n    0x0BC1, 0x0B1E, 0x0A2F, 0x090E, 0x07D7, 0x06A5, 0x0591, 0x04B8,\n    0x0434, 0x042C, 0x049F, 0x056C, 0x0673, 0x0791, 0x08DA, 0x0A64,\n    0x0C13, 0x0DCB, 0x0F70, 0x7FE1, 0x8138, 0x84CC, 0x8A07, 0x904D,\n    0x9706, 0x9D96, 0xA364, 0xA7D5, 0xAA50, 0xA945, 0xA4A9, 0x9E25,\n    0x9761, 0x9206, 0x8E32, 0x8ACA, 0x87A1, 0x8487, 0x814E, 0x0584,\n    0x058C, 0x05A0, 0x05B6, 0x05C6, 0x05C8, 0x05B2, 0x057D, 0x051F,\n    0x0491, 0x03CF, 0x02E1, 0x01D0, 0x00A2, 0xFF61, 0xFE12, 0xFCBD,\n    0xFB6C, 0xFA24, 0xF8EF, 0xFF7B, 0xFF66, 0xFF2C, 0xFED8, 0xFE73,\n    0xFE07, 0xFD9F, 0xFD44, 0xFD00, 0xFCDC, 0xFCD7, 0xFCE3, 0xFCFE,\n    0xFD25, 0xFD55, 0xFD89, 0xFDC0, 0xFDF6, 0xFE27, 0xFE51, 0xA5FD,\n    0xA674, 0xA7BF, 0xA9B6, 0xAC2F, 0xAF02, 0xB205, 0xB511, 0xB7FD,\n    0xBAA0, 0xBD17, 0xBF99, 0xC225, 0xC4B9, 0xC751, 0xC9EE, 0xCC8B,\n    0xCF28, 0xD1C2, 0xD457, 0x4637, 0x44FE, 0x41B0, 0x3CD9, 0x3707,\n    0x30C4, 0x2A9D, 0x251E, 0x20D3, 0x1E4A, 0x1D50, 0x1D3F, 0x1DEC,\n    0x1F2F, 0x20DF, 0x22D3, 0x24E2, 0x26E4, 0x28AF, 0x2A1B, 0x1C6D,\n    0x1C6D, 0x1C6C, 0x1C68, 0x1C5F, 0x1C50, 0x1C37, 0x1C14, 0x1BE4,\n    0x1BA6, 0x1B57, 0x1AFA, 0x1A91, 0x1A1E, 0x19A4, 0x1926, 0x18A7,\n    0x1828, 0x17AC, 0x1737, 0x1844, 0x17C8, 0x1677, 0x148D, 0x123F,\n    0x0FC9, 0x0D61, 0x0B40, 0x09A0, 0x08B8, 0x0877, 0x0898, 0x090A,\n    0x09BC, 0x0A9C, 0x0B99, 0x0CA2, 0x0DA5, 0x0E91, 0x0F54, 0xA826,\n    0xA8DD, 0xAABE, 0xAD65, 0xB06D, 0xB372, 0xB60D, 0xB7DC, 0xB879,\n    0xB77F, 0xB4FA, 0xB15B, 0xACD3, 0xA794, 0xA1D1, 0x9BBA, 0x9582,\n    0x8F5B, 0x8976, 0x8405, 0xF779, 0xF774, 0xF769, 0xF760, 0xF75F,\n    0xF76D, 0xF790, 0xF7D1, 0xF836, 0xF8C5, 0xF981, 0xFA66, 0xFB6B,\n    0xFC8A, 0xFDBB, 0xFEF9, 0x003A, 0x0179, 0x02AF, 0x03D5, 0x00AD,\n    0x00CE, 0x0125, 0x01A4, 0x023C, 0x02DE, 0x037A, 0x0402, 0x0466,\n    0x0497, 0x049B, 0x0482, 0x0452, 0x0410, 0x03C1, 0x0369, 0x030E,\n    0x02B5, 0x0262, 0x021B, 0xB0EC, 0xB17C, 0xB304, 0xB546, 0xB804,\n    0xBB00, 0xBDFC, 0xC0BC, 0xC300, 0xC48C, 0xC577, 0xC60E, 0xC660,\n    0xC67B, 0xC66E, 0xC648, 0xC619, 0xC5EE, 0xC5D7, 0xC5E3, 0x4083,\n    0x3EE9, 0x3A9C, 0x345A, 0x2CE4, 0x24F7, 0x1D55, 0x16BB, 0x11E9,\n    0x0F9F, 0x0FA4, 0x1115, 0x13B4, 0x173E, 0x1B73, 0x2014, 0x24E0,\n    0x2997, 0x2DF7, 0x31C2, 0xF2E8, 0xF2CB, 0xF27E, 0xF214, 0xF19C,\n    0xF129, 0xF0CB, 0xF093, 0xF093, 0xF0DB, 0xF16B, 0xF230, 0xF320,\n    0xF433, 0xF55E, 0xF699, 0xF7DA, 0xF919, 0xFA4A, 0xFB66, 0xE7FE,\n    0xE86A, 0xE98E, 0xEB3D, 0xED49, 0xEF84, 0xF1C2, 0xF3D3, 0xF58A,\n    0xF6BA, 0xF776, 0xF7F4, 0xF841, 0xF866, 0xF86F, 0xF866, 0xF856,\n    0xF849, 0xF84B, 0xF866, 0x9DB4, 0x9EEF, 0xA236, 0xA6E8, 0xAC64,\n    0xB209, 0xB737, 0xBB4D, 0xBDA9, 0xBDAC, 0xBB75, 0xB7BC, 0xB2C5,\n    0xACD4, 0xA62E, 0x9F16, 0x97D1, 0x90A2, 0x89CE, 0x839A, 0x8001,\n    0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x002B, 0x008A, 0x00EA, 0x0115, 0x00D8, 0x0000, 0xFDFC,\n    0xFAD2, 0xF734, 0xF3D0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x000E, 0x0019,\n    0x001D, 0x0017, 0x0000, 0xFFC9, 0xFF72, 0xFF0E, 0xFEB1, 0x027D,\n    0x025C, 0x01BE, 0x004A, 0xFDA6, 0xF944, 0xF381, 0xED68, 0xE801,\n    0xE458, 0xE234, 0xE0B9, 0xDFF7, 0xE001, 0xE0E7, 0xE2BC, 0xE6C1,\n    0xED34, 0xF49E, 0xFB8D, 0x0000, 0xFFF1, 0xFFCC, 0xFF9A, 0xFF69,\n    0xFF43, 0xFF34, 0xFF47, 0xFF87, 0x0000, 0x00B3, 0x0195, 0x029F,\n    0x03C6, 0x0504, 0x064F, 0x07A0, 0x08EE, 0x0A31, 0x0B61, 0x0000,\n    0xFFFC, 0xFFF1, 0xFFE4, 0xFFD6, 0xFFCB, 0xFFC7, 0xFFCC, 0xFFDE,\n    0x0000, 0x0032, 0x0072, 0x00BE, 0x0111, 0x016B, 0x01C9, 0x0228,\n    0x0287, 0x02E3, 0x0339, 0x215E, 0x2044, 0x1D47, 0x18E0, 0x138A,\n    0x0DBF, 0x07F7, 0x02AD, 0xFE5C, 0xFB7B, 0xF9DC, 0xF8EA, 0xF887,\n    0xF894, 0xF8F3, 0xF984, 0xFA2A, 0xFAC6, 0xFB38, 0xFB64, 0x46BE,\n    0x4653, 0x4532, 0x4388, 0x4184, 0x3F54, 0x3D27, 0x3B2A, 0x398C,\n    0x387B, 0x37E5, 0x3792, 0x3776, 0x3786, 0x37B5, 0x37F7, 0x3842,\n    0x3888, 0x38BF, 0x38DA,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_B7.inc.c",
    "content": "static const struct Animation anim_B7[] = {\n    1,\n    189,\n    0,\n    0,\n    0x28,\n    ANIMINDEX_NUMPARTS(anim_B7_indices),\n    anim_B7_values,\n    anim_B7_indices,\n    0,\n};\n\n\nstatic const u16 anim_B7_indices[] = {\n    0x0001, 0x0000, 0x0028, 0x0001, 0x0028, 0x0029, 0x0001, 0x0000, 0x0001, 0x0051, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x05AA,\n    0x0028, 0x0532, 0x0028, 0x055A, 0x0028, 0x0582,\n    0x0028, 0x04BA, 0x0028, 0x04E2, 0x0028, 0x050A,\n    0x0001, 0x04B6, 0x0001, 0x04B7, 0x0001, 0x04B8,\n    0x0028, 0x00F2, 0x0028, 0x011A, 0x0028, 0x0142,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x00CA,\n    0x0028, 0x0052, 0x0028, 0x007A, 0x0028, 0x00A2,\n    0x0001, 0x04B2, 0x0001, 0x04B3, 0x0001, 0x04B4,\n    0x0028, 0x020A, 0x0028, 0x0232, 0x0028, 0x025A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x01E2,\n    0x0028, 0x016A, 0x0028, 0x0192, 0x0028, 0x01BA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x04B5,\n    0x0028, 0x043A, 0x0028, 0x0462, 0x0028, 0x048A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x0412,\n    0x0028, 0x039A, 0x0028, 0x03C2, 0x0028, 0x03EA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x04B9,\n    0x0028, 0x0322, 0x0028, 0x034A, 0x0028, 0x0372,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0028, 0x02FA,\n    0x0028, 0x0282, 0x0028, 0x02AA, 0x0028, 0x02D2,\n};\n\nstatic const s16 anim_B7_values[] = {\n    0x0000, 0x0070, 0x0072, 0x0074, 0x0076, 0x0075, 0x0073, 0x006D,\n    0x0063, 0x0053, 0x003B, 0x0047, 0x0052, 0x005B, 0x005E, 0x005A,\n    0x0052, 0x0046, 0x0038, 0x0041, 0x0048, 0x004D, 0x004F, 0x004D,\n    0x004A, 0x0042, 0x0036, 0x004C, 0x0052, 0x0052, 0x0055, 0x005E,\n    0x0068, 0x0073, 0x007F, 0x008A, 0x0094, 0x009D, 0x00A4, 0x00A8,\n    0x00AA, 0xFF8C, 0xFF8E, 0xFF93, 0xFF98, 0xFF9B, 0xFF9C, 0xFF9D,\n    0xFF9E, 0xFF9E, 0xFF9F, 0xFF9F, 0xFFA0, 0xFFA0, 0xFFA0, 0xFFA0,\n    0xFFA1, 0xFFA1, 0xFFA1, 0xFFA2, 0xFFA2, 0xFFA3, 0xFFA4, 0xFFA4,\n    0xFFA5, 0xFFA7, 0xFFA8, 0xFFAA, 0xFFAC, 0xFFAE, 0xFFD5, 0xFFDD,\n    0xFFE3, 0xFFEA, 0xFFEF, 0xFFF4, 0xFFF8, 0xFFFC, 0xFFFE, 0x0000,\n    0x0000, 0x3FFF, 0xF0D0, 0xF0EB, 0xF130, 0xF190, 0xF1FE, 0xF26F,\n    0xF2E0, 0xF354, 0xF3C8, 0xF43E, 0xF4B4, 0xF52C, 0xF5A4, 0xF61D,\n    0xF696, 0xF710, 0xF789, 0xF803, 0xF87C, 0xF8F5, 0xF96E, 0xF9E6,\n    0xFA5D, 0xFAD4, 0xFB49, 0xFBBD, 0xFC30, 0xFCA1, 0xFD11, 0xFD7F,\n    0xFDEB, 0xFE54, 0xFEBC, 0xFF19, 0xFF65, 0xFFA0, 0xFFCC, 0xFFEA,\n    0xFFFB, 0x0000, 0xF7BE, 0xF7C1, 0xF7C9, 0xF7D4, 0xF7E1, 0xF7EE,\n    0xF7FB, 0xF808, 0xF815, 0xF823, 0xF830, 0xF83E, 0xF84C, 0xF85A,\n    0xF867, 0xF875, 0xF883, 0xF891, 0xF89F, 0xF8AD, 0xF8BB, 0xF8C9,\n    0xF8D6, 0xF8E4, 0xF8F1, 0xF8FF, 0xF90C, 0xF919, 0xF926, 0xF932,\n    0xF93E, 0xF94B, 0xF957, 0xF961, 0xF96A, 0xF971, 0xF976, 0xF979,\n    0xF97B, 0xF97C, 0xF954, 0xF940, 0xF90A, 0xF8BF, 0xF86A, 0xF813,\n    0xF7BA, 0xF761, 0xF707, 0xF6AB, 0xF64F, 0xF5F2, 0xF595, 0xF537,\n    0xF4D9, 0xF47B, 0xF41D, 0xF3BF, 0xF360, 0xF302, 0xF2A5, 0xF248,\n    0xF1EB, 0xF18F, 0xF134, 0xF0DA, 0xF081, 0xF029, 0xEFD3, 0xEF7E,\n    0xEF2A, 0xEED8, 0xEE87, 0xEE3F, 0xEE04, 0xEDD6, 0xEDB4, 0xED9D,\n    0xED90, 0xED8C, 0xF59B, 0xF31F, 0xED8C, 0xE7B0, 0xE45D, 0xEA72,\n    0xEEE1, 0xE6C5, 0xDA96, 0xCF4B, 0xC9DA, 0xCC34, 0xD31C, 0xDBC5,\n    0xE362, 0xE727, 0xE472, 0xDD45, 0xD5C3, 0xD211, 0xD4C5, 0xDB2A,\n    0xE178, 0xE3E6, 0xDD82, 0xD278, 0xCCAB, 0xCE91, 0xD321, 0xD901,\n    0xDED4, 0xE340, 0xE4E7, 0xE34C, 0xDF72, 0xDA42, 0xD4A5, 0xCF82,\n    0xCBC3, 0xCA4F, 0x24F8, 0x2416, 0x21E5, 0x1F11, 0x1C4A, 0x19BE,\n    0x172B, 0x148F, 0x11EA, 0x0F3B, 0x0C81, 0x09BC, 0x06EB, 0x040D,\n    0x00B5, 0xFCAE, 0xF84A, 0xF3DA, 0xEFB0, 0xEC1E, 0xE977, 0xE80C,\n    0xE82E, 0xEA3A, 0xEE0A, 0xF32D, 0xF933, 0xFFAD, 0x0627, 0x0C35,\n    0x1164, 0x1545, 0x1767, 0x16A7, 0x12EE, 0x0D5B, 0x0710, 0x012C,\n    0xFCD1, 0xFB1D, 0x026F, 0x01AE, 0xFFAF, 0xFCDA, 0xF996, 0xF5ED,\n    0xF1C5, 0xED50, 0xE8BE, 0xE441, 0xE009, 0xDC48, 0xD92E, 0xD6ED,\n    0xD59A, 0xD50F, 0xD524, 0xD5B0, 0xD689, 0xD787, 0xD881, 0xD94F,\n    0xD9C8, 0xDA13, 0xDA6F, 0xDAD2, 0xDB35, 0xDB90, 0xDBDA, 0xDC0B,\n    0xDC1A, 0xDC00, 0xDBB3, 0xDAE9, 0xD988, 0xD7D2, 0xD60A, 0xD472,\n    0xD34D, 0xD2DC, 0x801A, 0x7D05, 0x767A, 0x7070, 0x6EE5, 0x7173,\n    0x74F3, 0x793C, 0x7E25, 0x8388, 0x8936, 0x8F0A, 0x94DB, 0x9A7F,\n    0xA09D, 0xA7B1, 0xAF52, 0xB719, 0xBE9D, 0xC577, 0xCB3E, 0xCF89,\n    0xD1F2, 0xD229, 0xD074, 0xCD46, 0xC913, 0xC44F, 0xBF6C, 0xBADF,\n    0xB71C, 0xB496, 0xB3C0, 0xB5B2, 0xBA73, 0xC0E1, 0xC7DA, 0xCE3C,\n    0xD2E5, 0xD4B4, 0x0042, 0x004D, 0x006E, 0x00A3, 0x00EA, 0x0141,\n    0x01A6, 0x0218, 0x0295, 0x031C, 0x03A9, 0x043C, 0x04D3, 0x056C,\n    0x0605, 0x069C, 0x0730, 0x07BF, 0x0847, 0x08C7, 0x093C, 0x09A4,\n    0x09FF, 0x09D9, 0x091F, 0x085E, 0x07C8, 0x072F, 0x0695, 0x05FA,\n    0x055F, 0x04C5, 0x042B, 0x037F, 0x02BB, 0x01F1, 0x0133, 0x0095,\n    0x0028, 0x0000, 0x0024, 0x0029, 0x0039, 0x0053, 0x0075, 0x00A0,\n    0x00D3, 0x010C, 0x014B, 0x018F, 0x01D8, 0x0225, 0x0274, 0x02C6,\n    0x0319, 0x036D, 0x03C1, 0x0415, 0x0466, 0x04B6, 0x0503, 0x054B,\n    0x0590, 0x0603, 0x0684, 0x0693, 0x0629, 0x0598, 0x04ED, 0x0437,\n    0x0382, 0x02DC, 0x0251, 0x01D8, 0x0161, 0x00F2, 0x0091, 0x0044,\n    0x0012, 0x0000, 0xF4D0, 0xF4BE, 0xF48A, 0xF436, 0xF3C5, 0xF339,\n    0xF294, 0xF1D9, 0xF109, 0xF028, 0xEF37, 0xEE39, 0xED30, 0xEC1E,\n    0xEB06, 0xE9EA, 0xE8CC, 0xE7AF, 0xE696, 0xE581, 0xE474, 0xE370,\n    0xE279, 0xE07D, 0xDDFE, 0xDD5D, 0xDEDA, 0xE0F9, 0xE383, 0xE63F,\n    0xE8F5, 0xEB6E, 0xED71, 0xEF22, 0xF0BE, 0xF234, 0xF374, 0xF46E,\n    0xF510, 0xF549, 0xEEC0, 0xEEB6, 0xEE83, 0xEE09, 0xED29, 0xEBC5,\n    0xE9BE, 0xE6F6, 0xDF75, 0xD4B4, 0xCEC3, 0xD372, 0xDCF1, 0xE1DE,\n    0xDF6D, 0xDA32, 0xD3E4, 0xCE3A, 0xCAE9, 0xCB0A, 0xCD91, 0xD0F6,\n    0xD3B4, 0xD455, 0xD4B2, 0xD83C, 0xE65E, 0xF30E, 0xF57B, 0xF624,\n    0xF547, 0xF324, 0xEFF9, 0xEB1C, 0xE45A, 0xDCA9, 0xD502, 0xCE59,\n    0xC9A5, 0xC7DD, 0xE208, 0xE316, 0xE5B2, 0xE909, 0xEC48, 0xEF08,\n    0xF191, 0xF418, 0xF6D1, 0xF9EF, 0xFDA7, 0x022C, 0x084B, 0x1010,\n    0x188E, 0x20DA, 0x2807, 0x2D29, 0x2FBA, 0x303F, 0x2F5F, 0x2DBF,\n    0x2C05, 0x295B, 0x2536, 0x20AA, 0x1BD7, 0x1614, 0x0ED7, 0x068C,\n    0xFE8E, 0xF835, 0xF4DC, 0xF4BE, 0xF6B1, 0xF9F6, 0xFDCD, 0x0177,\n    0x0436, 0x054B, 0x11B5, 0x12EB, 0x15CA, 0x1928, 0x1BDD, 0x1DFA,\n    0x2038, 0x226C, 0x246E, 0x2614, 0x2734, 0x27A4, 0x2736, 0x25F7,\n    0x2414, 0x21BC, 0x1F1D, 0x1C66, 0x1942, 0x157B, 0x116D, 0x0D72,\n    0x09E5, 0x06E9, 0x0477, 0x02AE, 0x0171, 0x02D0, 0x0775, 0x0D3D,\n    0x1359, 0x18F9, 0x1D4F, 0x20A0, 0x23AD, 0x2660, 0x28A1, 0x2A5A,\n    0x2B73, 0x2BD6, 0x7CD7, 0x7A30, 0x74A3, 0x6FD2, 0x6F5D, 0x72EC,\n    0x77AA, 0x7D78, 0x843E, 0x8BD7, 0x9429, 0x9D16, 0xA7F2, 0xB536,\n    0xC384, 0xD17B, 0xDDBC, 0xE6E6, 0xEC1C, 0xEE23, 0xEE0E, 0xECF4,\n    0xEBE9, 0xE9EB, 0xE616, 0xE1AE, 0xDCDC, 0xD689, 0xCDDC, 0xC3A9,\n    0xB9CF, 0xB233, 0xAEB7, 0xAFCE, 0xB3E5, 0xB9D6, 0xC078, 0xC6A3,\n    0xCB30, 0xCCF6, 0xF885, 0xF88F, 0xF8AB, 0xF8D3, 0xF903, 0xF938,\n    0xF96D, 0xF99F, 0xF9C7, 0xF9E4, 0xF9EF, 0xF9EC, 0xF9E1, 0xF9D2,\n    0xF9C5, 0xF9C0, 0xF9C9, 0xF9E4, 0xFA41, 0xFADE, 0xFB70, 0xFBB1,\n    0xFBC4, 0xFBBE, 0xFB3E, 0xF9E4, 0xF705, 0xF306, 0xEF18, 0xEC6E,\n    0xED64, 0xF017, 0xF1E9, 0xF3B9, 0xF592, 0xF780, 0xF9F3, 0xFCBF,\n    0xFF0C, 0x0000, 0xFE68, 0xFE6A, 0xFE72, 0xFE7C, 0xFE89, 0xFE97,\n    0xFEA4, 0xFEB1, 0xFEBC, 0xFEC3, 0xFECB, 0xFED4, 0xFEDD, 0xFEE5,\n    0xFEE8, 0xFEE5, 0xFED9, 0xFEC3, 0xFE7F, 0xFE0D, 0xFDA2, 0xFD72,\n    0xFDD9, 0xFEA1, 0xFF25, 0xFEC3, 0xFCE5, 0xFA05, 0xF719, 0xF515,\n    0xF59B, 0xF751, 0xF87E, 0xF9B3, 0xFADD, 0xFBEC, 0xFCFC, 0xFE0C,\n    0xFEDD, 0xFF30, 0xD55A, 0xD550, 0xD532, 0xD507, 0xD4D3, 0xD499,\n    0xD460, 0xD42B, 0xD3FF, 0xD3E0, 0xD3F6, 0xD44E, 0xD4C3, 0xD532,\n    0xD576, 0xD56D, 0xD4F1, 0xD3E0, 0xD072, 0xCABB, 0xC55E, 0xC2FF,\n    0xC59D, 0xCB63, 0xD12F, 0xD3E0, 0xD232, 0xCDF7, 0xC8A6, 0xC3BC,\n    0xBE49, 0xBA84, 0xBA4B, 0xBB20, 0xBCA8, 0xBE85, 0xC15E, 0xC524,\n    0xC86F, 0xC9D8, 0x25AF, 0x2041, 0x15C3, 0x0EE9, 0x0D7F, 0x0D4F,\n    0x0E08, 0x0F57, 0x10EC, 0x1274, 0x1461, 0x170F, 0x1A0D, 0x1CE9,\n    0x1FB2, 0x2295, 0x2550, 0x27A4, 0x29A9, 0x2B73, 0x2CBA, 0x2D38,\n    0x2B6B, 0x27F3, 0x25B9, 0x27A4, 0x31A1, 0x4116, 0x4F22, 0x54E6,\n    0x52D4, 0x4E5D, 0x481F, 0x40B7, 0x38C2, 0x30DF, 0x29AA, 0x23C1,\n    0x1FC2, 0x1E4A, 0x181F, 0x1956, 0x1B98, 0x1CCC, 0x1CB0, 0x1C5E,\n    0x1BC9, 0x1AE3, 0x19A0, 0x17F1, 0x14A6, 0x0FE1, 0x0B96, 0x09B9,\n    0x0C1B, 0x1144, 0x1635, 0x17F1, 0x1427, 0x0CEF, 0x05F0, 0x02CB,\n    0x05DA, 0x0CB7, 0x13E7, 0x17F1, 0x16F8, 0x1326, 0x0F0F, 0x0D45,\n    0x0DD5, 0x0EFC, 0x1091, 0x126F, 0x146D, 0x1667, 0x1833, 0x19AC,\n    0x1AAB, 0x1B09, 0x0E89, 0x0D53, 0x0B1F, 0x0A12, 0x0AA3, 0x0BB5,\n    0x0D10, 0x0E7E, 0x0FC7, 0x10B3, 0x1117, 0x1113, 0x10E4, 0x10C7,\n    0x10C3, 0x10BB, 0x10B4, 0x10B3, 0x10BF, 0x10D3, 0x10E6, 0x10EF,\n    0x10F8, 0x1102, 0x10F4, 0x10B3, 0x1008, 0x0F11, 0x0E34, 0x0DDA,\n    0x0DFB, 0x0E43, 0x0EA6, 0x0F1D, 0x0F9C, 0x101B, 0x108E, 0x10ED,\n    0x112D, 0x1144, 0x8565, 0x899D, 0x9152, 0x9517, 0x9325, 0x8F46,\n    0x8A6C, 0x8585, 0x8183, 0x7F52, 0x806D, 0x8438, 0x88A0, 0x8B8B,\n    0x8C4E, 0x8C11, 0x8B77, 0x8B25, 0x8B45, 0x8B80, 0x8BB8, 0x8BD2,\n    0x8BEE, 0x8C0E, 0x8BE5, 0x8B25, 0x88BC, 0x8528, 0x8274, 0x82AC,\n    0x85C1, 0x8A07, 0x8F23, 0x94B8, 0x9A6D, 0x9FE5, 0xA4C6, 0xA8B2,\n    0xAB50, 0xAC44, 0x047C, 0x049B, 0x04D1, 0x04E4, 0x04C7, 0x0498,\n    0x0460, 0x0428, 0x03F9, 0x03DA, 0x03CC, 0x03C5, 0x03C4, 0x03C7,\n    0x03CD, 0x03D3, 0x03D8, 0x03DA, 0x03BE, 0x037A, 0x0327, 0x02DB,\n    0x02AF, 0x02BB, 0x0317, 0x03DA, 0x0600, 0x0994, 0x0D48, 0x0FCD,\n    0x0F0F, 0x0CCC, 0x0B42, 0x09B7, 0x0827, 0x0692, 0x04A4, 0x027C,\n    0x00BA, 0x0000, 0x01A6, 0x0148, 0x0096, 0x002F, 0x0035, 0x005A,\n    0x0092, 0x00D0, 0x0105, 0x0125, 0x0133, 0x0139, 0x013A, 0x0137,\n    0x0132, 0x012C, 0x0127, 0x0125, 0x011A, 0x00FF, 0x00DE, 0x00C0,\n    0x00AF, 0x00B3, 0x00D8, 0x0125, 0x01F7, 0x0353, 0x04C9, 0x05E6,\n    0x0626, 0x05E5, 0x05B2, 0x057B, 0x0523, 0x048E, 0x036E, 0x01E9,\n    0x0092, 0x0000, 0xC829, 0xCA8E, 0xCEE8, 0xD0FD, 0xCFD2, 0xCD97,\n    0xCACB, 0xC7EB, 0xC575, 0xC3E7, 0xC330, 0xC2DA, 0xC2CF, 0xC2F8,\n    0xC33F, 0xC38E, 0xC3CD, 0xC3E7, 0xC3FB, 0xC42A, 0xC465, 0xC49A,\n    0xC4B8, 0xC4B0, 0xC470, 0xC3E7, 0xC2B2, 0xC0B0, 0xBE31, 0xBB8B,\n    0xB765, 0xB430, 0xB3F7, 0xB494, 0xB5BA, 0xB719, 0xB926, 0xBBDE,\n    0xBE3D, 0xBF40, 0x2E88, 0x293A, 0x1E95, 0x1685, 0x13B7, 0x12C6,\n    0x1277, 0x1191, 0x0D7E, 0x0CEB, 0x150E, 0x204D, 0x2B1F, 0x31F6,\n    0x318F, 0x2C30, 0x26A0, 0x21B2, 0x22C0, 0x2486, 0x269A, 0x2892,\n    0x2A04, 0x2A85, 0x23CE, 0x20E1, 0x2D8F, 0x3FC0, 0x5026, 0x5771,\n    0x5649, 0x529D, 0x4D0C, 0x4635, 0x3EB7, 0x3731, 0x3042, 0x2A89,\n    0x26A6, 0x2537, 0xFAF3, 0xF9E7, 0xF7BD, 0xF5EE, 0xF4CC, 0xF3B6,\n    0xF2B7, 0xF1D8, 0xF124, 0xF0A6, 0xF05C, 0xF039, 0xF035, 0xF045,\n    0xF062, 0xF082, 0xF09B, 0xF0A6, 0xF09E, 0xF08B, 0xF073, 0xF05D,\n    0xF050, 0xF054, 0xF06E, 0xF0A6, 0xF1B2, 0xF371, 0xF4A6, 0xF412,\n    0xF1B6, 0xEE90, 0xEADE, 0xE6E0, 0xE2D3, 0xDEF7, 0xDB89, 0xD8C9,\n    0xD6F4, 0xD64A, 0xF824, 0xF7C6, 0xF705, 0xF665, 0xF604, 0xF5A9,\n    0xF557, 0xF510, 0xF4D6, 0xF4AD, 0xF495, 0xF48A, 0xF489, 0xF48E,\n    0xF497, 0xF4A2, 0xF4AA, 0xF4AD, 0xF4D1, 0xF528, 0xF593, 0xF5F5,\n    0xF62D, 0xF61E, 0xF5A8, 0xF4AD, 0xF1AD, 0xECAC, 0xE7D6, 0xE558,\n    0xE50D, 0xE54B, 0xE5F3, 0xE6E9, 0xE80C, 0xE93E, 0xEA62, 0xEB58,\n    0xEC01, 0xEC41, 0x83C6, 0x870B, 0x8CDC, 0x8F40, 0x8CA2, 0x881B,\n    0x82B9, 0x7D85, 0x7993, 0x77ED, 0x7893, 0x7A91, 0x7D85, 0x810E,\n    0x84C3, 0x8844, 0x8B2F, 0x8D1F, 0x8E37, 0x8EE2, 0x8F2E, 0x8F2A,\n    0x8EE5, 0x8E6E, 0x8DD1, 0x8D1F, 0x8AD4, 0x8701, 0x8416, 0x8480,\n    0x8838, 0x8D4F, 0x935C, 0x99F4, 0xA0AD, 0xA71B, 0xACD5, 0xB16F,\n    0xB481, 0xB59E, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001,\n    0x4171, 0xBF5F, 0xF34F, 0xF365, 0xF3A1, 0xF3F9, 0xF464, 0xF4D9,\n    0xF54E, 0xF5BB, 0xF615, 0xF653, 0xF676, 0xF686, 0xF688, 0xF680,\n    0xF673, 0xF664, 0xF658, 0xF653, 0xF629, 0xF5C4, 0xF547, 0xF4D6,\n    0xF495, 0xF4A7, 0xF530, 0xF653, 0xF8B8, 0xFC7D, 0x00F7, 0x057B,\n    0x0960, 0x0BFB, 0x0CA0, 0x098C, 0x02E6, 0xFAE6, 0xF3C0, 0xEFAC,\n    0xF763, 0x0000, 0xFEC7, 0xFED4, 0xFEFA, 0xFF32, 0xFF77, 0xFFC1,\n    0x000A, 0x004F, 0x0088, 0x00B0, 0x00C6, 0x00D0, 0x00D2, 0x00CD,\n    0x00C4, 0x00BB, 0x00B3, 0x00B0, 0x00B1, 0x00B2, 0x00B4, 0x00B6,\n    0x00B7, 0x00B7, 0x00B5, 0x00B0, 0x00A8, 0x009C, 0x008E, 0x007F,\n    0x006F, 0x005F, 0x0051, 0x0044, 0x0037, 0x002A, 0x001D, 0x0011,\n    0x0005, 0x0000, 0xFDD9, 0xFE16, 0xFEBC, 0xFFB1, 0x00D9, 0x021D,\n    0x0363, 0x048F, 0x0589, 0x0636, 0x0696, 0x06C4, 0x06CA, 0x06B4,\n    0x068F, 0x0665, 0x0644, 0x0636, 0x0640, 0x0658, 0x0675, 0x0690,\n    0x06A0, 0x069B, 0x067B, 0x0636, 0x05C0, 0x051B, 0x0455, 0x037A,\n    0x0297, 0x01BA, 0x00EF, 0x0032, 0xFF76, 0xFEBC, 0xFE08, 0xFD5D,\n    0xFCB6, 0xFC62, 0x0B8D, 0x0B0F, 0x0A39, 0x0966, 0x0890, 0x081C,\n    0x0832, 0x0891, 0x0902, 0x094B, 0x095B, 0x0951, 0x093D, 0x092E,\n    0x0922, 0x0913, 0x090B, 0x0917, 0x0994, 0x0A5E, 0x0ABC, 0x09F2,\n    0x0792, 0x0414, 0x0018, 0xFC41, 0xF7B4, 0xF307, 0xF107, 0xF199,\n    0xF2B1, 0xF430, 0xF5F6, 0xF7E5, 0xF9DE, 0xFBC0, 0xFD6D, 0xFEC7,\n    0xFFAD, 0x0000, 0x03B5, 0x0428, 0x04CA, 0x0545, 0x05AC, 0x058C,\n    0x04B0, 0x036B, 0x0215, 0x0104, 0x0052, 0xFFD1, 0xFF69, 0xFF07,\n    0xFE97, 0xFE29, 0xFDDC, 0xFDCC, 0xFE0B, 0xFE85, 0xFF23, 0xFFCD,\n    0x0081, 0x014C, 0x0226, 0x0307, 0x0439, 0x057C, 0x05F3, 0x05A2,\n    0x0524, 0x0485, 0x03D0, 0x030F, 0x024D, 0x0196, 0x00F5, 0x0074,\n    0x001E, 0x0000, 0xFA89, 0xF959, 0xF752, 0xF4D6, 0xF253, 0xF228,\n    0xF553, 0xFA49, 0xFF9F, 0x03E8, 0x06C5, 0x08F7, 0x0AC6, 0x0C79,\n    0x0E59, 0x102D, 0x117D, 0x11CD, 0x1043, 0x0D5D, 0x0AAA, 0x09B9,\n    0x0BA2, 0x0F57, 0x1329, 0x156B, 0x14A5, 0x1216, 0x1018, 0x0F28,\n    0x0E33, 0x0D3F, 0x0C53, 0x0B73, 0x0AA5, 0x09F0, 0x0959, 0x08E7,\n    0x089D, 0x0884, 0x3799, 0x3711, 0x359E, 0x337B, 0x30E2, 0x2E0D,\n    0x2B35, 0x2895, 0x2666, 0x24E3, 0x240C, 0x23A6, 0x2399, 0x23CA,\n    0x241D, 0x247A, 0x24C4, 0x24E3, 0x24AD, 0x242A, 0x2388, 0x22F6,\n    0x22A1, 0x22B8, 0x2369, 0x24E3, 0x286A, 0x2E27, 0x34A2, 0x3A65,\n    0x3DF6, 0x3F9E, 0x40B2, 0x414B, 0x4185, 0x4179, 0x4142, 0x40FA,\n    0x40BC, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_B8.inc.c",
    "content": "static const struct Animation anim_B8[] = {\n    0,\n    189,\n    0,\n    0,\n    0x32,\n    ANIMINDEX_NUMPARTS(anim_B8_indices),\n    anim_B8_values,\n    anim_B8_indices,\n    0,\n};\n\n\nstatic const u16 anim_B8_indices[] = {\n    0x0001, 0x0000, 0x0032, 0x0001, 0x0001, 0x0033, 0x0001, 0x0000, 0x0001, 0x0034, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0183,\n    0x0001, 0x014F, 0x0001, 0x0150, 0x0032, 0x0151,\n    0x0001, 0x011B, 0x0001, 0x011C, 0x0032, 0x011D,\n    0x0001, 0x0117, 0x0001, 0x0118, 0x0001, 0x0119,\n    0x0001, 0x0039, 0x0001, 0x003A, 0x0001, 0x003B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0038,\n    0x0001, 0x0035, 0x0001, 0x0036, 0x0001, 0x0037,\n    0x0001, 0x0113, 0x0001, 0x0114, 0x0001, 0x0115,\n    0x0001, 0x003E, 0x0001, 0x003F, 0x0001, 0x0040,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x003D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x003C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0116,\n    0x0001, 0x00DF, 0x0001, 0x00E0, 0x0032, 0x00E1,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x00AD,\n    0x0001, 0x0079, 0x0001, 0x007A, 0x0032, 0x007B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x011A,\n    0x0001, 0x0076, 0x0001, 0x0077, 0x0001, 0x0078,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0075,\n    0x0001, 0x0041, 0x0001, 0x0042, 0x0032, 0x0043,\n};\n\nstatic const s16 anim_B8_values[] = {\n    0x0000, 0x0073, 0x0073, 0x0073, 0x0073, 0x0072, 0x0072, 0x0071,\n    0x0071, 0x0070, 0x0070, 0x006F, 0x006F, 0x006E, 0x006D, 0x006D,\n    0x006C, 0x006B, 0x006B, 0x006A, 0x006A, 0x006A, 0x006A, 0x0069,\n    0x0069, 0x0069, 0x0069, 0x006A, 0x006A, 0x006A, 0x006B, 0x006B,\n    0x006C, 0x006C, 0x006D, 0x006D, 0x006E, 0x006E, 0x006F, 0x006F,\n    0x0070, 0x0070, 0x0071, 0x0071, 0x0072, 0x0072, 0x0072, 0x0073,\n    0x0073, 0x0073, 0x0073, 0xFF8A, 0x3FFF, 0xF12B, 0xF7C8, 0xF90E,\n    0xF7C5, 0x25C4, 0x0389, 0x84CF, 0xF549, 0xEEFB, 0xE124, 0x0F70,\n    0x814E, 0xF8EF, 0xFE51, 0xD457, 0xD454, 0xD44B, 0xD43C, 0xD429,\n    0xD411, 0xD3F6, 0xD3D7, 0xD3B5, 0xD391, 0xD36C, 0xD345, 0xD31E,\n    0xD2F7, 0xD2D1, 0xD2AC, 0xD288, 0xD266, 0xD247, 0xD22C, 0xD214,\n    0xD200, 0xD1F2, 0xD1E9, 0xD1E6, 0xD1E8, 0xD1F1, 0xD1FE, 0xD210,\n    0xD227, 0xD240, 0xD25D, 0xD27D, 0xD29E, 0xD2C2, 0xD2E6, 0xD30C,\n    0xD331, 0xD357, 0xD37B, 0xD39E, 0xD3C0, 0xD3E0, 0xD3FD, 0xD416,\n    0xD42C, 0xD43E, 0xD44C, 0xD454, 0xD457, 0x2A1B, 0x1737, 0x0F54,\n    0x8405, 0x03D5, 0x021B, 0xC5E3, 0xC5E1, 0xC5D9, 0xC5CD, 0xC5BD,\n    0xC5A9, 0xC592, 0xC578, 0xC55C, 0xC53E, 0xC51F, 0xC4FF, 0xC4DF,\n    0xC4BE, 0xC49E, 0xC47F, 0xC461, 0xC445, 0xC42B, 0xC414, 0xC401,\n    0xC3F0, 0xC3E4, 0xC3DD, 0xC3DA, 0xC3DC, 0xC3E3, 0xC3EF, 0xC3FE,\n    0xC410, 0xC426, 0xC43E, 0xC458, 0xC474, 0xC492, 0xC4B0, 0xC4CF,\n    0xC4EE, 0xC50D, 0xC52C, 0xC549, 0xC565, 0xC580, 0xC598, 0xC5AD,\n    0xC5C0, 0xC5CF, 0xC5DA, 0xC5E1, 0xC5E3, 0x31C2, 0x31C6, 0x31D4,\n    0x31EA, 0x3207, 0x322B, 0x3254, 0x3283, 0x32B5, 0x32EB, 0x3323,\n    0x335D, 0x3397, 0x33D2, 0x340B, 0x3443, 0x3479, 0x34AB, 0x34DA,\n    0x3503, 0x3527, 0x3544, 0x355A, 0x3568, 0x356C, 0x3568, 0x355B,\n    0x3547, 0x352C, 0x350B, 0x34E4, 0x34B9, 0x348A, 0x3457, 0x3422,\n    0x33EB, 0x33B3, 0x337B, 0x3343, 0x330C, 0x32D7, 0x32A5, 0x3275,\n    0x324A, 0x3223, 0x3202, 0x31E7, 0x31D3, 0x31C6, 0x31C2, 0xFB66,\n    0xF866, 0x839A, 0x8396, 0x838D, 0x837F, 0x836B, 0x8353, 0x8338,\n    0x8319, 0x82F7, 0x82D4, 0x82AE, 0x8288, 0x8261, 0x823A, 0x8213,\n    0x81EE, 0x81CA, 0x81A8, 0x8189, 0x816E, 0x8156, 0x8143, 0x8134,\n    0x812B, 0x8128, 0x812B, 0x8133, 0x8141, 0x8153, 0x8169, 0x8183,\n    0x819F, 0x81BF, 0x81E1, 0x8204, 0x8229, 0x824E, 0x8273, 0x8299,\n    0x82BD, 0x82E1, 0x8302, 0x8322, 0x833F, 0x8358, 0x836F, 0x8381,\n    0x838E, 0x8397, 0x839A, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001,\n    0x8001, 0x4171, 0xBF5F, 0xF3D0, 0xFEB1, 0xFB8D, 0xFB9B, 0xFBC2,\n    0xFC02, 0xFC56, 0xFCBC, 0xFD33, 0xFDB7, 0xFE47, 0xFEDF, 0xFF7D,\n    0x001E, 0x00C1, 0x0163, 0x0201, 0x0299, 0x0329, 0x03AD, 0x0424,\n    0x048A, 0x04DF, 0x051E, 0x0545, 0x0553, 0x0548, 0x0529, 0x04F7,\n    0x04B4, 0x0461, 0x0401, 0x0395, 0x031E, 0x029F, 0x0219, 0x018E,\n    0x0100, 0x0070, 0xFFE0, 0xFF52, 0xFEC7, 0xFE41, 0xFDC2, 0xFD4C,\n    0xFCDF, 0xFC7F, 0xFC2C, 0xFBE9, 0xFBB7, 0xFB98, 0xFB8D, 0x0B61,\n    0x0339, 0xFB64, 0xFB62, 0xFB5E, 0xFB57, 0xFB4D, 0xFB41, 0xFB33,\n    0xFB24, 0xFB13, 0xFB01, 0xFAEE, 0xFADB, 0xFAC8, 0xFAB4, 0xFAA1,\n    0xFA8E, 0xFA7C, 0xFA6B, 0xFA5C, 0xFA4E, 0xFA42, 0xFA39, 0xFA31,\n    0xFA2D, 0xFA2B, 0xFA2D, 0xFA31, 0xFA38, 0xFA41, 0xFA4C, 0xFA58,\n    0xFA67, 0xFA77, 0xFA88, 0xFA99, 0xFAAB, 0xFABE, 0xFAD1, 0xFAE4,\n    0xFAF6, 0xFB08, 0xFB18, 0xFB28, 0xFB37, 0xFB43, 0xFB4F, 0xFB58,\n    0xFB5E, 0xFB63, 0xFB64, 0x38DA,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_B9.inc.c",
    "content": "static const struct Animation anim_B9[] = {\n    1,\n    189,\n    0,\n    0,\n    0x19,\n    ANIMINDEX_NUMPARTS(anim_B9_indices),\n    anim_B9_values,\n    anim_B9_indices,\n    0,\n};\n\n\nstatic const u16 anim_B9_indices[] = {\n    0x0019, 0x0001, 0x0019, 0x001A, 0x0019, 0x0033, 0x0001, 0x0000, 0x0001, 0x004C, 0x0001, 0x0000,\n    0x0019, 0x03BF, 0x0019, 0x03D8, 0x0019, 0x03F1,\n    0x0019, 0x0374, 0x0019, 0x038D, 0x0019, 0x03A6,\n    0x0019, 0x0329, 0x0019, 0x0342, 0x0019, 0x035B,\n    0x0001, 0x030D, 0x0001, 0x030E, 0x0019, 0x030F,\n    0x0019, 0x00B1, 0x0019, 0x00CA, 0x0019, 0x00E3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0019, 0x0098,\n    0x0019, 0x004D, 0x0019, 0x0066, 0x0019, 0x007F,\n    0x0001, 0x0309, 0x0001, 0x030A, 0x0001, 0x030B,\n    0x0019, 0x0160, 0x0019, 0x0179, 0x0019, 0x0192,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0019, 0x0147,\n    0x0019, 0x00FC, 0x0019, 0x0115, 0x0019, 0x012E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x030C,\n    0x0019, 0x02BE, 0x0019, 0x02D7, 0x0019, 0x02F0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0019, 0x02A5,\n    0x0019, 0x025A, 0x0019, 0x0273, 0x0019, 0x028C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0328,\n    0x0019, 0x020F, 0x0019, 0x0228, 0x0019, 0x0241,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0019, 0x01F6,\n    0x0019, 0x01AB, 0x0019, 0x01C4, 0x0019, 0x01DD,\n};\n\nstatic const s16 anim_B9_values[] = {\n    0x0000, 0xFFEC, 0xFFEC, 0xFFEC, 0xFFEC, 0xFFEB, 0xFFEA, 0xFFE8,\n    0xFFE4, 0xFFE1, 0xFFE2, 0xFFE7, 0xFFEF, 0xFFF8, 0xFFFD, 0xFFFF,\n    0xFFFF, 0xFFFE, 0xFFFD, 0xFFFC, 0xFFFD, 0xFFFD, 0xFFFE, 0xFFFF,\n    0x0000, 0x0000, 0x00A3, 0x00A4, 0x00A6, 0x00A8, 0x00AB, 0x00AD,\n    0x00AE, 0x00AE, 0x00AE, 0x00AD, 0x00AB, 0x00A8, 0x00A6, 0x00A5,\n    0x00A7, 0x00AA, 0x00AE, 0x00B1, 0x00B3, 0x00B2, 0x00B1, 0x00AF,\n    0x00AC, 0x00AB, 0x00AA, 0x0039, 0x0039, 0x0039, 0x0039, 0x0039,\n    0x0039, 0x0038, 0x0037, 0x0037, 0x0039, 0x003F, 0x0048, 0x0050,\n    0x0052, 0x004D, 0x0044, 0x0039, 0x002E, 0x0025, 0x001D, 0x0015,\n    0x000D, 0x0006, 0x0001, 0x0000, 0x3FFF, 0xE7CE, 0xE7CE, 0xE7CE,\n    0xE7CE, 0xE7CE, 0xE7CE, 0xE7CE, 0xE7CE, 0xE7CE, 0xE7CE, 0xE7CE,\n    0xE7CE, 0xE945, 0xEC59, 0xEF14, 0xF117, 0xF344, 0xF586, 0xF7C5,\n    0xF9E9, 0xFBDE, 0xFD8B, 0xFED9, 0xFFB3, 0x0000, 0xF984, 0xF984,\n    0xF984, 0xF984, 0xF984, 0xF984, 0xF984, 0xF984, 0xF984, 0xF984,\n    0xF984, 0xF984, 0xF984, 0xF983, 0xF982, 0xF981, 0xF980, 0xF97F,\n    0xF97F, 0xF97E, 0xF97D, 0xF97D, 0xF97C, 0xF97C, 0xF97C, 0xE96B,\n    0xE96B, 0xE96B, 0xE96B, 0xE96B, 0xE96B, 0xE96B, 0xE96B, 0xE96B,\n    0xE96B, 0xE96B, 0xE96B, 0xE9AB, 0xEA31, 0xEAA9, 0xEB00, 0xEB60,\n    0xEBC2, 0xEC24, 0xEC82, 0xECD7, 0xED20, 0xED59, 0xED7E, 0xED8C,\n    0xEC20, 0xEC20, 0xEC20, 0xEC20, 0xEC20, 0xEC20, 0xEC20, 0xEC20,\n    0xEC20, 0xEC20, 0xEC20, 0xEC20, 0xF15E, 0xFA9A, 0xFE13, 0xFA7A,\n    0xF54C, 0xEEFF, 0xE809, 0xE0E1, 0xD9FC, 0xD3D2, 0xCED8, 0xCB85,\n    0xCA4F, 0x17E9, 0x17E9, 0x17E9, 0x17E9, 0x17E9, 0x17E9, 0x17E9,\n    0x17E9, 0x17E9, 0x17E9, 0x17E9, 0x17E9, 0x1FF9, 0x2DC7, 0x31C3,\n    0x200B, 0x0481, 0xF339, 0xEFA5, 0xEF36, 0xF0F9, 0xF3FE, 0xF751,\n    0xFA02, 0xFB1D, 0xCAB2, 0xCAB2, 0xCAB2, 0xCAB2, 0xCAB2, 0xCAB2,\n    0xCAB2, 0xCAB2, 0xCAB2, 0xCAB2, 0xCAB2, 0xCAB2, 0xD200, 0xE056,\n    0xEA59, 0xEACA, 0xE6E7, 0xE311, 0xE071, 0xDD75, 0xDA63, 0xD783,\n    0xD51D, 0xD378, 0xD2DC, 0x7623, 0x7623, 0x7623, 0x7623, 0x7623,\n    0x7623, 0x7623, 0x7623, 0x7623, 0x7623, 0x7623, 0x7623, 0x700B,\n    0x6741, 0x6A00, 0x854E, 0xAC22, 0xC5B3, 0xCE5E, 0xD38F, 0xD60E,\n    0xD6A3, 0xD615, 0xD52D, 0xD4B4, 0x0ACF, 0x0ACF, 0x0ACF, 0x0ACF,\n    0x0ACF, 0x0ACF, 0x0ACF, 0x0ACF, 0x0ACF, 0x0ACF, 0x0ACF, 0x0ACF,\n    0x0A28, 0x08C8, 0x0790, 0x06A9, 0x05B0, 0x04AE, 0x03AD, 0x02B8,\n    0x01D9, 0x0119, 0x0083, 0x0022, 0x0000, 0x020D, 0x020D, 0x020D,\n    0x020D, 0x020D, 0x020D, 0x020D, 0x020D, 0x020D, 0x020D, 0x020D,\n    0x020D, 0x01ED, 0x01AA, 0x016F, 0x0143, 0x0114, 0x00E3, 0x00B2,\n    0x0084, 0x0059, 0x0035, 0x0019, 0x0006, 0x0000, 0xEDD2, 0xEDD2,\n    0xEDD2, 0xEDD2, 0xEDD2, 0xEDD2, 0xEDD2, 0xEDD2, 0xEDD2, 0xEDD2,\n    0xEDD2, 0xEDD2, 0xEE45, 0xEF39, 0xF010, 0xF0AF, 0xF15B, 0xF20D,\n    0xF2BF, 0xF368, 0xF403, 0xF487, 0xF4EE, 0xF531, 0xF549, 0xF09C,\n    0xF09C, 0xF09C, 0xF09C, 0xF09C, 0xF09C, 0xF09C, 0xF09C, 0xF09C,\n    0xF09C, 0xF09C, 0xF09C, 0xF388, 0xF85A, 0xF924, 0xF52D, 0xEFED,\n    0xE9CD, 0xE332, 0xDC82, 0xD625, 0xD07F, 0xCBF8, 0xC8F5, 0xC7DD,\n    0xEE04, 0xEE04, 0xEE04, 0xEE04, 0xEE04, 0xEE04, 0xEE04, 0xEE04,\n    0xEE04, 0xEE04, 0xEE04, 0xEE04, 0xEC7D, 0xE99C, 0xE7EE, 0xE99B,\n    0xECDE, 0xF02B, 0xF3FD, 0xF80A, 0xFC05, 0xFFA2, 0x0294, 0x0491,\n    0x054B, 0x132B, 0x132B, 0x132B, 0x132B, 0x132B, 0x132B, 0x132B,\n    0x132B, 0x132B, 0x132B, 0x132B, 0x132B, 0x114C, 0x0EC2, 0x102D,\n    0x1E8D, 0x2BD8, 0x2DF6, 0x2EF5, 0x2F16, 0x2E9B, 0x2DC9, 0x2CE0,\n    0x2C24, 0x2BD6, 0x7137, 0x7137, 0x7137, 0x7137, 0x7137, 0x7137,\n    0x7137, 0x7137, 0x7137, 0x7137, 0x7137, 0x7137, 0x6F66, 0x6E16,\n    0x7380, 0x8DFB, 0xA77E, 0xAFF3, 0xB768, 0xBDD4, 0xC32C, 0xC765,\n    0xCA76, 0xCC54, 0xCCF6, 0x0791, 0x0791, 0x0790, 0x078F, 0x078F,\n    0x078F, 0x0753, 0x06EF, 0x06DB, 0x0791, 0x09F1, 0x0D7C, 0x1095,\n    0x11A0, 0x100B, 0x0CEA, 0x091E, 0x0589, 0x030E, 0x01B0, 0x00CE,\n    0x004C, 0x0010, 0x0000, 0x0000, 0xFFE7, 0xFFDF, 0xFFCC, 0xFFB5,\n    0xFFA2, 0xFF9A, 0xFFD0, 0x002E, 0x0056, 0xFFE7, 0xFE61, 0xFC1A,\n    0xF9ED, 0xF8B4, 0xF8A4, 0xF933, 0xFA1B, 0xFB16, 0xFBE0, 0xFC8A,\n    0xFD45, 0xFDFC, 0xFE99, 0xFF07, 0xFF30, 0xAA57, 0xAA82, 0xAAE7,\n    0xAB61, 0xABC6, 0xABF1, 0xAB40, 0xA9F7, 0xA944, 0xAA57, 0xAE44,\n    0xB428, 0xBA40, 0xBEC8, 0xC164, 0xC31A, 0xC43C, 0xC518, 0xC5FF,\n    0xC6FF, 0xC7E9, 0xC8B1, 0xC94E, 0xC9B4, 0xC9D8, 0x2670, 0x270E,\n    0x28B1, 0x2B04, 0x2DB5, 0x306E, 0x32DC, 0x34AA, 0x3586, 0x351A,\n    0x3012, 0x265E, 0x1C91, 0x1740, 0x1623, 0x15CB, 0x1615, 0x16DC,\n    0x17FD, 0x1955, 0x1ABE, 0x1C15, 0x1D37, 0x1DFF, 0x1E4A, 0x07D3,\n    0x0761, 0x0633, 0x0487, 0x0299, 0x00A5, 0xFEE9, 0xFDA1, 0xFD09,\n    0xFD5F, 0x00E7, 0x07BD, 0x0EDB, 0x133D, 0x1515, 0x169D, 0x17DB,\n    0x18D7, 0x1999, 0x1A29, 0x1A8E, 0x1ACF, 0x1AF4, 0x1B05, 0x1B09,\n    0x09FE, 0x0A73, 0x0BB0, 0x0D85, 0x0FBF, 0x122D, 0x149F, 0x16E3,\n    0x18C8, 0x1A1B, 0x1A3E, 0x1935, 0x17C8, 0x16BB, 0x161C, 0x1574,\n    0x14C8, 0x141E, 0x137B, 0x12E2, 0x125B, 0x11E8, 0x1191, 0x1158,\n    0x1144, 0xB8CC, 0xB859, 0xB71E, 0xB54B, 0xB30E, 0xB097, 0xAE16,\n    0xABB8, 0xA9AD, 0xA824, 0xA788, 0xA7CD, 0xA872, 0xA8F5, 0xA944,\n    0xA99F, 0xAA01, 0xAA68, 0xAACD, 0xAB2F, 0xAB88, 0xABD4, 0xAC0F,\n    0xAC36, 0xAC44, 0x0019, 0x0029, 0x0050, 0x0082, 0x00B5, 0x00DB,\n    0x00EB, 0x00D8, 0x0096, 0x0019, 0xFD1D, 0xF958, 0xF995, 0xF990,\n    0xF93F, 0xF967, 0xF9F1, 0xFB27, 0xFC9B, 0xFDBA, 0xFE72, 0xFF12,\n    0xFF90, 0xFFE3, 0x0000, 0x0141, 0x013B, 0x012D, 0x011A, 0x0107,\n    0x00F8, 0x00F2, 0x00FA, 0x0112, 0x0141, 0x0248, 0x03CB, 0x04DD,\n    0x0411, 0x0446, 0x0527, 0x057B, 0x0437, 0x0267, 0x011B, 0x008D,\n    0x0039, 0x000F, 0x0001, 0x0000, 0xC822, 0xC827, 0xC832, 0xC842,\n    0xC851, 0xC85D, 0xC862, 0xC85C, 0xC848, 0xC822, 0xC706, 0xC611,\n    0xC87B, 0xC162, 0xC22F, 0xC840, 0xCC53, 0xC978, 0xC434, 0xC07C,\n    0xBF4F, 0xBEDF, 0xBEE6, 0xBF1E, 0xBF40, 0x2395, 0x25E4, 0x2B5D,\n    0x31D3, 0x3719, 0x3901, 0x35DB, 0x2EF1, 0x2696, 0x1F1A, 0x1796,\n    0x135B, 0x19F9, 0x2053, 0x1C96, 0x15DE, 0x1239, 0x152C, 0x1B33,\n    0x1FCA, 0x21E0, 0x2369, 0x2472, 0x2508, 0x2537, 0xE385, 0xE3A8,\n    0xE407, 0xE492, 0xE53B, 0xE5F3, 0xE6AA, 0xE751, 0xE7D9, 0xE833,\n    0xE75B, 0xE62F, 0xE667, 0xE686, 0xE5A7, 0xE46E, 0xE31E, 0xE1CE,\n    0xE066, 0xDEDE, 0xDCF3, 0xDAB2, 0xD88A, 0xD6ED, 0xD64A, 0xEDF5,\n    0xEDBE, 0xED2C, 0xEC59, 0xEB5F, 0xEA58, 0xE960, 0xE890, 0xE804,\n    0xE7D4, 0xEA9C, 0xEE51, 0xEF11, 0xEF59, 0xF082, 0xF1DB, 0xF305,\n    0xF425, 0xF516, 0xF504, 0xF390, 0xF153, 0xEEEF, 0xED07, 0xEC41,\n    0xA3FD, 0xA3B4, 0xA2F0, 0xA1D0, 0xA075, 0x9EFF, 0x9D8E, 0x9C42,\n    0x9B3B, 0x9A99, 0x9CC7, 0x9FAF, 0x9F2A, 0x9ED5, 0xA0F1, 0xA3DF,\n    0xA6D5, 0xA9C1, 0xACB4, 0xAF0E, 0xB0EC, 0xB2B2, 0xB432, 0xB53B,\n    0xB59E, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001, 0x4AD0,\n    0x4AD0, 0x4AD0, 0x4AD0, 0x4AD0, 0x4AD0, 0x4AD0, 0x4AD0, 0x4AD0,\n    0x4AD0, 0x4AD0, 0x4AD0, 0x4A3E, 0x490D, 0x47FF, 0x4737, 0x465F,\n    0x4580, 0x44A1, 0x43CC, 0x430B, 0x4265, 0x41E3, 0x418F, 0x4171,\n    0xBF5F, 0x3A73, 0x3ACA, 0x3BAE, 0x3CE8, 0x3E46, 0x3F93, 0x4099,\n    0x4125, 0x4102, 0x3FFC, 0x3DDD, 0x3A73, 0x2188, 0x04B7, 0xFD31,\n    0xFBA3, 0xFBC6, 0xFB9F, 0xFBF1, 0xFC99, 0xFD73, 0xFE5B, 0xFF2D,\n    0xFFC6, 0x0000, 0x020F, 0x020C, 0x0203, 0x01F8, 0x01EA, 0x01DE,\n    0x01D4, 0x01CE, 0x01D0, 0x01DA, 0x01EE, 0x020F, 0x032D, 0x0418,\n    0x0338, 0x01C6, 0x00CE, 0x007B, 0x0040, 0x001B, 0x0005, 0xFFFD,\n    0xFFFC, 0xFFFF, 0x0000, 0xFD2E, 0xFD47, 0xFD88, 0xFDE2, 0xFE47,\n    0xFEA6, 0xFEF1, 0xFF19, 0xFF0F, 0xFEC4, 0xFE28, 0xFD2E, 0xF693,\n    0xEDC9, 0xE775, 0xE1C5, 0xE00C, 0xE24D, 0xE600, 0xEA9A, 0xEF92,\n    0xF45F, 0xF877, 0xFB50, 0xFC62, 0xF9E5, 0xF9CC, 0xF98E, 0xF93A,\n    0xF8E3, 0xF899, 0xF86D, 0xF872, 0xF8B7, 0xF94E, 0xFA48, 0xFE75,\n    0x0531, 0x0966, 0x083B, 0x0498, 0x0204, 0x0143, 0x00B8, 0x005A,\n    0x0022, 0x0006, 0xFFFD, 0xFFFE, 0x0000, 0xFF99, 0xFFCE, 0x0057,\n    0x011C, 0x0201, 0x02E8, 0x03B9, 0x0455, 0x04A3, 0x0486, 0x03E4,\n    0xFFC3, 0xF89A, 0xF37B, 0xF280, 0xF36D, 0xF4D4, 0xF633, 0xF7E2,\n    0xF9BA, 0xFB94, 0xFD49, 0xFEB1, 0xFFA6, 0x0000, 0xDBAE, 0xDB58,\n    0xDA7A, 0xD94B, 0xD802, 0xD6D6, 0xD5FF, 0xD5B3, 0xD62A, 0xD79A,\n    0xDA3B, 0xE4B1, 0xF6CC, 0x0681, 0x120A, 0x1BCD, 0x2004, 0x1F27,\n    0x1C8E, 0x18CD, 0x1474, 0x1015, 0x0C42, 0x098B, 0x0884, 0xF3D9,\n    0xF362, 0xF21F, 0xF048, 0xEE10, 0xEBAD, 0xE954, 0xE73B, 0xE597,\n    0xE49E, 0xE52A, 0xE74D, 0xEA0C, 0xEC6A, 0xEE68, 0xF09C, 0xF2F0,\n    0xF54F, 0xF7A3, 0xF9D7, 0xFBD6, 0xFD88, 0xFED9, 0xFFB3, 0x0000,\n    0x04C2, 0x051E, 0x0619, 0x078A, 0x094A, 0x0B33, 0x0D1E, 0x0EE2,\n    0x1059, 0x115B, 0x1181, 0x10C3, 0x0F8B, 0x0E42, 0x0CF4, 0x0B71,\n    0x09CA, 0x0811, 0x0659, 0x04B3, 0x0332, 0x01E7, 0x00E4, 0x003C,\n    0x0000, 0x4630, 0x45A3, 0x442F, 0x421F, 0x3FBC, 0x3D51, 0x3B29,\n    0x398F, 0x38CC, 0x392C, 0x3DCE, 0x46B2, 0x4F73, 0x53AF, 0x53A8,\n    0x52B3, 0x5101, 0x4EC6, 0x4C34, 0x497D, 0x46D3, 0x4469, 0x4271,\n    0x411D, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_BA.inc.c",
    "content": "static const struct Animation anim_BA[] = {\n    0,\n    189,\n    0,\n    0,\n    0x14,\n    ANIMINDEX_NUMPARTS(anim_BA_indices),\n    anim_BA_values,\n    anim_BA_indices,\n    0,\n};\n\n\nstatic const u16 anim_BA_indices[] = {\n    0x0001, 0x0000, 0x0014, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0015, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x01D9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x01C5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x01B1,\n    0x0001, 0x01AD, 0x0001, 0x01AE, 0x0001, 0x01AF,\n    0x0014, 0x002C, 0x0014, 0x0040, 0x0014, 0x0054,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x0018,\n    0x0001, 0x0000, 0x0001, 0x0016, 0x0001, 0x0017,\n    0x0001, 0x01A9, 0x0001, 0x01AA, 0x0001, 0x01AB,\n    0x0014, 0x007D, 0x0014, 0x0091, 0x0014, 0x00A5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x0069,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0068,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01AC,\n    0x0014, 0x016D, 0x0014, 0x0181, 0x0014, 0x0195,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x0159,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x0145,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01B0,\n    0x0014, 0x0109, 0x0014, 0x011D, 0x0014, 0x0131,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x00F5,\n    0x0014, 0x00B9, 0x0014, 0x00CD, 0x0014, 0x00E1,\n};\n\nstatic const s16 anim_BA_values[] = {\n    0x0000, 0x00AA, 0x00AA, 0x00A9, 0x00A8, 0x00A7, 0x00A5, 0x00A4,\n    0x00A3, 0x00A1, 0x00A1, 0x00A0, 0x00A1, 0x00A1, 0x00A3, 0x00A4,\n    0x00A5, 0x00A7, 0x00A8, 0x00A9, 0x00AA, 0x3FFF, 0xF97C, 0xED8C,\n    0xEC20, 0xEC2F, 0xEC56, 0xEC91, 0xECD8, 0xED25, 0xED72, 0xEDB9,\n    0xEDF3, 0xEE1B, 0xEE2A, 0xEE1B, 0xEDF3, 0xEDB9, 0xED72, 0xED25,\n    0xECD8, 0xEC91, 0xEC56, 0xEC2F, 0x2D12, 0x2D37, 0x2D9C, 0x2E32,\n    0x2EE7, 0x2FAC, 0x3072, 0x3127, 0x31BC, 0x3222, 0x3247, 0x3222,\n    0x31BC, 0x3127, 0x3072, 0x2FAC, 0x2EE7, 0x2E32, 0x2D9C, 0x2D37,\n    0xEBCE, 0xEBB4, 0xEB6C, 0xEB03, 0xEA83, 0xE9F8, 0xE96C, 0xE8EC,\n    0xE883, 0xE83B, 0xE821, 0xE83B, 0xE883, 0xE8EC, 0xE96C, 0xE9F8,\n    0xEA83, 0xEB03, 0xEB6C, 0xEBB4, 0x9631, 0x95E9, 0x9525, 0x9405,\n    0x92A6, 0x9129, 0x8FAB, 0x8E4C, 0x8D2C, 0x8C68, 0x8C20, 0x8C68,\n    0x8D2C, 0x8E4C, 0x8FAB, 0x9129, 0x92A6, 0x9405, 0x9525, 0x95E9,\n    0xF549, 0xE3FA, 0xE429, 0xE4A8, 0xE563, 0xE646, 0xE73D, 0xE834,\n    0xE917, 0xE9D1, 0xEA50, 0xEA7F, 0xEA50, 0xE9D1, 0xE917, 0xE834,\n    0xE73D, 0xE646, 0xE563, 0xE4A8, 0xE429, 0xD331, 0xD310, 0xD2B5,\n    0xD22F, 0xD18C, 0xD0DB, 0xD02A, 0xCF87, 0xCF01, 0xCEA6, 0xCE84,\n    0xCEA6, 0xCF01, 0xCF87, 0xD02A, 0xD0DB, 0xD18C, 0xD22F, 0xD2B5,\n    0xD310, 0x18EF, 0x18E0, 0x18B9, 0x187F, 0x1838, 0x17EB, 0x179F,\n    0x1758, 0x171E, 0x16F7, 0x16E8, 0x16F7, 0x171E, 0x1758, 0x179F,\n    0x17EB, 0x1838, 0x187F, 0x18B9, 0x18E0, 0x92E2, 0x92A1, 0x91F1,\n    0x90EC, 0x8FB1, 0x8E59, 0x8D01, 0x8BC5, 0x8AC1, 0x8A10, 0x89CF,\n    0x8A10, 0x8AC1, 0x8BC5, 0x8D01, 0x8E59, 0x8FB1, 0x90EC, 0x91F1,\n    0x92A1, 0x0000, 0x0001, 0x0004, 0x0009, 0x000F, 0x0015, 0x001B,\n    0x0020, 0x0023, 0x0024, 0x0023, 0x0021, 0x001E, 0x0019, 0x0014,\n    0x000F, 0x000B, 0x0006, 0x0003, 0x0000, 0xFF30, 0xFF30, 0xFF30,\n    0xFF31, 0xFF31, 0xFF32, 0xFF32, 0xFF33, 0xFF33, 0xFF33, 0xFF33,\n    0xFF33, 0xFF33, 0xFF32, 0xFF32, 0xFF31, 0xFF31, 0xFF31, 0xFF30,\n    0xFF30, 0xC9D8, 0xC998, 0xC8EB, 0xC7F1, 0xC6C9, 0xC591, 0xC469,\n    0xC36F, 0xC2C3, 0xC282, 0xC2AE, 0xC326, 0xC3D9, 0xC4B7, 0xC5AE,\n    0xC6AD, 0xC7A4, 0xC881, 0xC934, 0xC9AC, 0x1E4A, 0x1EB7, 0x1FDD,\n    0x2186, 0x237E, 0x2590, 0x2788, 0x2932, 0x2A57, 0x2AC5, 0x2A7A,\n    0x29AE, 0x287E, 0x2705, 0x2561, 0x23AE, 0x220A, 0x2091, 0x1F60,\n    0x1E94, 0x1B09, 0x1AF5, 0x1AC0, 0x1A74, 0x1A19, 0x19BA, 0x195F,\n    0x1913, 0x18DE, 0x18CA, 0x18D7, 0x18FC, 0x1933, 0x1977, 0x19C2,\n    0x1A10, 0x1A5C, 0x1AA0, 0x1AD7, 0x1AFB, 0x1144, 0x1161, 0x11AF,\n    0x121F, 0x12A4, 0x1330, 0x13B5, 0x1425, 0x1473, 0x1490, 0x147C,\n    0x1446, 0x13F6, 0x1392, 0x1323, 0x12B1, 0x1242, 0x11DE, 0x118E,\n    0x1158, 0xA486, 0xA43F, 0xA37F, 0xA269, 0xA11F, 0x9FC4, 0x9E7B,\n    0x9D65, 0x9CA5, 0x9C5D, 0x9C8E, 0x9D13, 0x9DDA, 0x9ED1, 0x9FE3,\n    0xA100, 0xA212, 0xA309, 0xA3D0, 0xA456, 0xBF40, 0xBF23, 0xBED4,\n    0xBE5F, 0xBDD1, 0xBD37, 0xBC9C, 0xBC0F, 0xBB9A, 0xBB4B, 0xBB2D,\n    0xBB4B, 0xBB9A, 0xBC0F, 0xBC9C, 0xBD37, 0xBDD1, 0xBE5F, 0xBED4,\n    0xBF23, 0x2537, 0x2574, 0x261A, 0x2710, 0x283A, 0x297E, 0x2AC2,\n    0x2BEC, 0x2CE1, 0x2D88, 0x2DC5, 0x2D88, 0x2CE1, 0x2BEC, 0x2AC2,\n    0x297E, 0x283A, 0x2710, 0x261A, 0x2574, 0xD64A, 0xD653, 0xD66C,\n    0xD690, 0xD6BC, 0xD6EC, 0xD71C, 0xD748, 0xD76C, 0xD785, 0xD78E,\n    0xD785, 0xD76C, 0xD748, 0xD71C, 0xD6EC, 0xD6BC, 0xD690, 0xD66C,\n    0xD653, 0xEC41, 0xEC28, 0xEBE5, 0xEB82, 0xEB0A, 0xEA87, 0xEA05,\n    0xE98D, 0xE92A, 0xE8E7, 0xE8CE, 0xE8E7, 0xE92A, 0xE98D, 0xEA05,\n    0xEA87, 0xEB0A, 0xEB82, 0xEBE5, 0xEC28, 0xAC3F, 0xAC16, 0xABA6,\n    0xAB00, 0xAA37, 0xA95C, 0xA882, 0xA7B9, 0xA713, 0xA6A3, 0xA679,\n    0xA6A3, 0xA713, 0xA7B9, 0xA882, 0xA95C, 0xAA37, 0xAB00, 0xABA6,\n    0xAC16, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171,\n    0xBF5F, 0xE732, 0xE68E, 0xE4E4, 0xE299, 0xE012, 0xDDB1, 0xDBDD,\n    0xDAF9, 0xDB18, 0xDBE7, 0xDD31, 0xDEC3, 0xE069, 0xE1EE, 0xE31F,\n    0xE416, 0xE507, 0xE5E0, 0xE691, 0xE707, 0x1C7A, 0x1CC3, 0x1D8A,\n    0x1EAE, 0x2010, 0x2192, 0x2314, 0x2477, 0x259B, 0x2661, 0x26AA,\n    0x2661, 0x259B, 0x2477, 0x2314, 0x2192, 0x2010, 0x1EAE, 0x1D8A,\n    0x1CC3, 0x48C7, 0x48DE, 0x491E, 0x497B, 0x49ED, 0x4A68, 0x4AE4,\n    0x4B55, 0x4BB3, 0x4BF2, 0x4C09, 0x4BF2, 0x4BB3, 0x4B55, 0x4AE4,\n    0x4A68, 0x49ED, 0x497B, 0x491E, 0x48DE,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_BB.inc.c",
    "content": "static const struct Animation anim_BB[] = {\n    0,\n    189,\n    0,\n    0,\n    0x61,\n    ANIMINDEX_NUMPARTS(anim_BB_indices),\n    anim_BB_values,\n    anim_BB_indices,\n    0,\n};\n\n\nstatic const u16 anim_BB_indices[] = {\n    0x0001, 0x0001, 0x0061, 0x0002, 0x0001, 0x0063, 0x0001, 0x0000, 0x0001, 0x0064, 0x0001, 0x0000,\n    0x0061, 0x06EF, 0x0061, 0x0750, 0x0061, 0x07B1,\n    0x0061, 0x05CC, 0x0061, 0x062D, 0x0061, 0x068E,\n    0x0001, 0x05C9, 0x0001, 0x05CA, 0x0001, 0x05CB,\n    0x0001, 0x05C5, 0x0001, 0x05C6, 0x0001, 0x05C7,\n    0x0001, 0x0069, 0x0001, 0x006A, 0x0001, 0x006B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0068,\n    0x0001, 0x0065, 0x0001, 0x0066, 0x0001, 0x0067,\n    0x0001, 0x05C1, 0x0001, 0x05C2, 0x0001, 0x05C3,\n    0x0001, 0x0070, 0x0001, 0x0071, 0x0001, 0x0072,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x006F,\n    0x0001, 0x006C, 0x0001, 0x006D, 0x0001, 0x006E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x05C4,\n    0x0061, 0x049E, 0x0061, 0x04FF, 0x0061, 0x0560,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0061, 0x043D,\n    0x0061, 0x031A, 0x0061, 0x037B, 0x0061, 0x03DC,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x05C8,\n    0x0061, 0x01F7, 0x0061, 0x0258, 0x0061, 0x02B9,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0061, 0x0196,\n    0x0061, 0x0073, 0x0061, 0x00D4, 0x0061, 0x0135,\n};\n\nstatic const s16 anim_BB_values[] = {\n    0x0000, 0xFFEC, 0x00A3, 0x00A3, 0x00A3, 0x00A3, 0x00A4, 0x00A4,\n    0x00A5, 0x00A5, 0x00A6, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x00A9,\n    0x00AA, 0x00AB, 0x00AB, 0x00AC, 0x00AC, 0x00AD, 0x00AD, 0x00AE,\n    0x00AE, 0x00AE, 0x00AE, 0x00AE, 0x00AE, 0x00AE, 0x00AE, 0x00AD,\n    0x00AD, 0x00AC, 0x00AC, 0x00AB, 0x00AA, 0x00AA, 0x00A9, 0x00A8,\n    0x00A8, 0x00A7, 0x00A7, 0x00A6, 0x00A5, 0x00A5, 0x00A4, 0x00A4,\n    0x00A4, 0x00A4, 0x00A3, 0x00A3, 0x00A4, 0x00A4, 0x00A5, 0x00A5,\n    0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x00AA, 0x00AA, 0x00AB, 0x00AB,\n    0x00AC, 0x00AC, 0x00AD, 0x00AD, 0x00AE, 0x00AE, 0x00AE, 0x00AE,\n    0x00AE, 0x00AE, 0x00AE, 0x00AE, 0x00AE, 0x00AD, 0x00AD, 0x00AC,\n    0x00AC, 0x00AB, 0x00AB, 0x00AA, 0x00A9, 0x00A9, 0x00A8, 0x00A7,\n    0x00A7, 0x00A6, 0x00A5, 0x00A5, 0x00A4, 0x00A4, 0x00A4, 0x00A3,\n    0x00A3, 0x00A3, 0x00A3, 0x0039, 0x3FFF, 0xE7CE, 0xF984, 0xE96B,\n    0xEC20, 0x17E9, 0xCAB2, 0x7623, 0x0ACF, 0x020D, 0xEDD2, 0xF09C,\n    0xEE04, 0x132B, 0x7137, 0x0791, 0x0790, 0x078C, 0x0786, 0x077D,\n    0x0773, 0x0766, 0x0756, 0x0745, 0x0732, 0x071C, 0x0705, 0x06EC,\n    0x06D1, 0x06B4, 0x0695, 0x0675, 0x0653, 0x062F, 0x060A, 0x05E4,\n    0x05BC, 0x0593, 0x0569, 0x053D, 0x050E, 0x04D8, 0x049D, 0x045C,\n    0x0418, 0x03D0, 0x0385, 0x0338, 0x02E9, 0x0299, 0x0249, 0x01FA,\n    0x01AB, 0x015E, 0x0113, 0x00CC, 0x0088, 0x0048, 0x000D, 0xFFD9,\n    0xFFAA, 0xFF82, 0xFF61, 0xFF49, 0xFF38, 0xFF2C, 0xFF26, 0xFF24,\n    0xFF26, 0xFF2E, 0xFF39, 0xFF48, 0xFF5B, 0xFF71, 0xFF8A, 0xFFA7,\n    0xFFC6, 0xFFE7, 0x0009, 0x002F, 0x0056, 0x007F, 0x00A8, 0x00D3,\n    0x00FF, 0x012B, 0x0157, 0x0183, 0x01B4, 0x01EC, 0x022B, 0x0271,\n    0x02BC, 0x030B, 0x035D, 0x03B2, 0x0409, 0x0461, 0x04B8, 0x050F,\n    0x0564, 0x05B6, 0x0604, 0x064E, 0x0692, 0x06D1, 0x0708, 0x0737,\n    0x075D, 0x0779, 0x078B, 0x0791, 0xFFE7, 0xFFE4, 0xFFDB, 0xFFCC,\n    0xFFB9, 0xFFA0, 0xFF84, 0xFF63, 0xFF40, 0xFF19, 0xFEF0, 0xFEC5,\n    0xFE98, 0xFE6A, 0xFE3B, 0xFE0C, 0xFDDE, 0xFDAF, 0xFD82, 0xFD56,\n    0xFD2D, 0xFD05, 0xFCE0, 0xFCBF, 0xFCA1, 0xFC85, 0xFC68, 0xFC4B,\n    0xFC2D, 0xFC10, 0xFBF2, 0xFBD5, 0xFBB8, 0xFB9C, 0xFB81, 0xFB66,\n    0xFB4D, 0xFB35, 0xFB1E, 0xFB09, 0xFAF6, 0xFAE4, 0xFAD5, 0xFAC8,\n    0xFABD, 0xFAB5, 0xFAAF, 0xFAAD, 0xFAAE, 0xFAB2, 0xFAB9, 0xFAC4,\n    0xFAD1, 0xFAE2, 0xFAF5, 0xFB0A, 0xFB21, 0xFB3B, 0xFB56, 0xFB72,\n    0xFB90, 0xFBAF, 0xFBCF, 0xFBEF, 0xFC10, 0xFC31, 0xFC52, 0xFC73,\n    0xFC93, 0xFCB3, 0xFCD2, 0xFCF0, 0xFD0C, 0xFD2A, 0xFD4A, 0xFD6C,\n    0xFD90, 0xFDB6, 0xFDDD, 0xFE05, 0xFE2D, 0xFE56, 0xFE7E, 0xFEA6,\n    0xFECD, 0xFEF4, 0xFF18, 0xFF3B, 0xFF5B, 0xFF79, 0xFF94, 0xFFAC,\n    0xFFC1, 0xFFD1, 0xFFDD, 0xFFE5, 0xFFE7, 0xAA57, 0xAA63, 0xAA84,\n    0xAABB, 0xAB05, 0xAB61, 0xABCE, 0xAC4A, 0xACD4, 0xAD6A, 0xAE0B,\n    0xAEB6, 0xAF6A, 0xB024, 0xB0E3, 0xB1A7, 0xB26E, 0xB336, 0xB3FE,\n    0xB4C4, 0xB587, 0xB647, 0xB700, 0xB7B3, 0xB85D, 0xB90B, 0xB9CA,\n    0xBA97, 0xBB70, 0xBC53, 0xBD3D, 0xBE2E, 0xBF21, 0xC016, 0xC10A,\n    0xC1FC, 0xC2E8, 0xC3CD, 0xC4A8, 0xC578, 0xC63A, 0xC6ED, 0xC78D,\n    0xC819, 0xC88F, 0xC8ED, 0xC930, 0xC956, 0xC95E, 0xC944, 0xC90B,\n    0xC8B3, 0xC841, 0xC7B5, 0xC712, 0xC65B, 0xC591, 0xC4B8, 0xC3D1,\n    0xC2DF, 0xC1E4, 0xC0E3, 0xBFDD, 0xBED6, 0xBDCF, 0xBCCB, 0xBBCB,\n    0xBAD4, 0xB9E6, 0xB904, 0xB830, 0xB76D, 0xB6BE, 0xB616, 0xB569,\n    0xB4B9, 0xB407, 0xB353, 0xB29F, 0xB1EC, 0xB13A, 0xB08B, 0xAFE0,\n    0xAF3A, 0xAE9A, 0xAE00, 0xAD6F, 0xACE6, 0xAC68, 0xABF4, 0xAB8D,\n    0xAB32, 0xAAE6, 0xAAA9, 0xAA7C, 0xAA60, 0xAA57, 0x2670, 0x267A,\n    0x2697, 0x26C5, 0x2702, 0x274E, 0x27A5, 0x2807, 0x2871, 0x28E3,\n    0x2959, 0x29D3, 0x2A4E, 0x2ACA, 0x2B44, 0x2BBA, 0x2C2C, 0x2C96,\n    0x2CF8, 0x2D4F, 0x2D9A, 0x2DD8, 0x2E06, 0x2E23, 0x2E2D, 0x2E24,\n    0x2E0A, 0x2DE1, 0x2DAA, 0x2D66, 0x2D17, 0x2CBE, 0x2C5C, 0x2BF4,\n    0x2B87, 0x2B15, 0x2AA1, 0x2A2C, 0x29B7, 0x2943, 0x28D3, 0x2868,\n    0x2802, 0x27A4, 0x274F, 0x2704, 0x26C5, 0x2693, 0x2670, 0x2655,\n    0x263D, 0x2627, 0x2613, 0x2601, 0x25F1, 0x25E3, 0x25D7, 0x25CC,\n    0x25C3, 0x25BC, 0x25B6, 0x25B1, 0x25AE, 0x25AC, 0x25AC, 0x25AC,\n    0x25AE, 0x25B1, 0x25B4, 0x25B9, 0x25BE, 0x25C4, 0x25CA, 0x25D2,\n    0x25D9, 0x25E1, 0x25EA, 0x25F2, 0x25FB, 0x2605, 0x260E, 0x2617,\n    0x2620, 0x2629, 0x2632, 0x263A, 0x2642, 0x264A, 0x2651, 0x2658,\n    0x265D, 0x2663, 0x2667, 0x266B, 0x266D, 0x266F, 0x2670, 0x07D3,\n    0x07CE, 0x07C0, 0x07A9, 0x078A, 0x0763, 0x0736, 0x0703, 0x06CA,\n    0x068D, 0x064C, 0x0607, 0x05BF, 0x0576, 0x052B, 0x04DF, 0x0493,\n    0x0448, 0x03FD, 0x03B5, 0x036F, 0x032D, 0x02EE, 0x02B4, 0x027F,\n    0x024B, 0x0213, 0x01D9, 0x019C, 0x015D, 0x011E, 0x00DD, 0x009D,\n    0x005D, 0x001E, 0xFFE2, 0xFFA8, 0xFF70, 0xFF3B, 0xFF0B, 0xFEDF,\n    0xFEB9, 0xFE98, 0xFE7E, 0xFE6A, 0xFE5F, 0xFE5B, 0xFE60, 0xFE6E,\n    0xFE83, 0xFE9D, 0xFEBB, 0xFEDD, 0xFF03, 0xFF2C, 0xFF59, 0xFF89,\n    0xFFBC, 0xFFF2, 0x002A, 0x0065, 0x00A2, 0x00E0, 0x0121, 0x0163,\n    0x01A7, 0x01EB, 0x0231, 0x0277, 0x02BD, 0x0304, 0x034B, 0x0391,\n    0x03D8, 0x041D, 0x0462, 0x04A6, 0x04E8, 0x052A, 0x0569, 0x05A6,\n    0x05E2, 0x061B, 0x0652, 0x0686, 0x06B7, 0x06E4, 0x070F, 0x0736,\n    0x0759, 0x0778, 0x0793, 0x07A9, 0x07BB, 0x07C8, 0x07D0, 0x07D3,\n    0x09FE, 0x09FC, 0x09F5, 0x09E9, 0x09DA, 0x09C6, 0x09AF, 0x0995,\n    0x0978, 0x0958, 0x0936, 0x0912, 0x08EC, 0x08C5, 0x089C, 0x0873,\n    0x0849, 0x081F, 0x07F5, 0x07CC, 0x07A3, 0x077B, 0x0755, 0x0730,\n    0x070C, 0x06E8, 0x06C0, 0x0695, 0x0666, 0x0636, 0x0604, 0x05D0,\n    0x059B, 0x0567, 0x0533, 0x04FF, 0x04CD, 0x049D, 0x046F, 0x0444,\n    0x041C, 0x03F8, 0x03D9, 0x03BF, 0x03AA, 0x039C, 0x0394, 0x0392,\n    0x0399, 0x03A5, 0x03B4, 0x03C7, 0x03DC, 0x03F5, 0x040F, 0x042D,\n    0x044C, 0x046E, 0x0492, 0x04B8, 0x04DF, 0x0509, 0x0533, 0x055F,\n    0x058C, 0x05BA, 0x05E9, 0x0618, 0x0648, 0x0679, 0x06A9, 0x06DA,\n    0x070B, 0x073B, 0x076B, 0x079B, 0x07C9, 0x07F7, 0x0825, 0x0850,\n    0x087B, 0x08A4, 0x08CC, 0x08F2, 0x0916, 0x0938, 0x0958, 0x0976,\n    0x0991, 0x09A9, 0x09BF, 0x09D2, 0x09E1, 0x09EE, 0x09F7, 0x09FD,\n    0x09FE, 0xB8CC, 0xB8B9, 0xB883, 0xB82B, 0xB7B4, 0xB721, 0xB675,\n    0xB5B1, 0xB4DA, 0xB3F1, 0xB2F9, 0xB1F5, 0xB0E6, 0xAFD1, 0xAEB7,\n    0xAD9B, 0xAC80, 0xAB68, 0xAA56, 0xA94D, 0xA84F, 0xA75E, 0xA67E,\n    0xA5B1, 0xA4F9, 0xA449, 0xA38F, 0xA2CF, 0xA20A, 0xA141, 0xA076,\n    0x9FAB, 0x9EE2, 0x9E1C, 0x9D5B, 0x9CA1, 0x9BEF, 0x9B48, 0x9AAC,\n    0x9A1D, 0x999E, 0x9930, 0x98D4, 0x988C, 0x985B, 0x9841, 0x9841,\n    0x985C, 0x9893, 0x98E1, 0x993E, 0x99AA, 0x9A22, 0x9AA8, 0x9B39,\n    0x9BD6, 0x9C7E, 0x9D2F, 0x9DEA, 0x9EAD, 0x9F78, 0xA04A, 0xA122,\n    0xA200, 0xA2E3, 0xA3CA, 0xA4B5, 0xA5A2, 0xA692, 0xA783, 0xA874,\n    0xA966, 0xAA57, 0xAB46, 0xAC33, 0xAD1D, 0xAE04, 0xAEE6, 0xAFC3,\n    0xB09B, 0xB16C, 0xB236, 0xB2F8, 0xB3B2, 0xB462, 0xB508, 0xB5A4,\n    0xB634, 0xB6B7, 0xB72F, 0xB798, 0xB7F3, 0xB83F, 0xB87C, 0xB8A8,\n    0xB8C3, 0xB8CC, 0x0019, 0x0013, 0x0000, 0xFFE2, 0xFFB9, 0xFF86,\n    0xFF4B, 0xFF08, 0xFEBD, 0xFE6D, 0xFE18, 0xFDBE, 0xFD61, 0xFD02,\n    0xFCA2, 0xFC41, 0xFBE0, 0xFB81, 0xFB25, 0xFACB, 0xFA75, 0xFA25,\n    0xF9DA, 0xF997, 0xF95B, 0xF923, 0xF8EB, 0xF8B3, 0xF87B, 0xF844,\n    0xF80D, 0xF7D7, 0xF7A2, 0xF76F, 0xF73D, 0xF70D, 0xF6DF, 0xF6B4,\n    0xF68B, 0xF664, 0xF641, 0xF621, 0xF604, 0xF5EB, 0xF5D6, 0xF5C5,\n    0xF5B8, 0xF5B0, 0xF5AC, 0xF5AE, 0xF5B4, 0xF5BF, 0xF5CE, 0xF5E1,\n    0xF5F8, 0xF613, 0xF631, 0xF652, 0xF676, 0xF69D, 0xF6C7, 0xF6F2,\n    0xF720, 0xF750, 0xF782, 0xF7B5, 0xF7EA, 0xF81F, 0xF855, 0xF88C,\n    0xF8C4, 0xF8FC, 0xF933, 0xF96F, 0xF9B3, 0xF9FF, 0xFA51, 0xFAA8,\n    0xFB03, 0xFB62, 0xFBC3, 0xFC26, 0xFC89, 0xFCEC, 0xFD4E, 0xFDAD,\n    0xFE09, 0xFE60, 0xFEB3, 0xFEFF, 0xFF45, 0xFF82, 0xFFB6, 0xFFE1,\n    0x0000, 0x0012, 0x0019, 0x0141, 0x0141, 0x0140, 0x013E, 0x013C,\n    0x0139, 0x0136, 0x0132, 0x012E, 0x012B, 0x0127, 0x0123, 0x011F,\n    0x011B, 0x0118, 0x0115, 0x0112, 0x0110, 0x010F, 0x010E, 0x010E,\n    0x010F, 0x0110, 0x0113, 0x0117, 0x011C, 0x0123, 0x012B, 0x0134,\n    0x013E, 0x014A, 0x0156, 0x0162, 0x016F, 0x017D, 0x018B, 0x0199,\n    0x01A6, 0x01B4, 0x01C1, 0x01CE, 0x01DA, 0x01E6, 0x01F0, 0x01FA,\n    0x0202, 0x0209, 0x020F, 0x0213, 0x0216, 0x0217, 0x0218, 0x0217,\n    0x0216, 0x0214, 0x0211, 0x020E, 0x0209, 0x0205, 0x01FF, 0x01FA,\n    0x01F4, 0x01EE, 0x01E7, 0x01E1, 0x01DB, 0x01D4, 0x01CE, 0x01C8,\n    0x01C2, 0x01BC, 0x01B7, 0x01B3, 0x01AE, 0x01A9, 0x01A4, 0x019E,\n    0x0198, 0x0192, 0x018C, 0x0186, 0x017F, 0x0179, 0x0173, 0x016D,\n    0x0167, 0x0161, 0x015C, 0x0157, 0x0152, 0x014E, 0x014A, 0x0147,\n    0x0145, 0x0143, 0x0141, 0x0141, 0xC822, 0xC81A, 0xC801, 0xC7DA,\n    0xC7A5, 0xC763, 0xC715, 0xC6BC, 0xC659, 0xC5ED, 0xC578, 0xC4FD,\n    0xC47B, 0xC3F5, 0xC36A, 0xC2DB, 0xC24B, 0xC1B9, 0xC127, 0xC095,\n    0xC005, 0xBF78, 0xBEEE, 0xBE69, 0xBDE9, 0xBD66, 0xBCD6, 0xBC3B,\n    0xBB96, 0xBAEA, 0xBA38, 0xB981, 0xB8C7, 0xB80C, 0xB751, 0xB698,\n    0xB5E3, 0xB532, 0xB489, 0xB3E8, 0xB351, 0xB2C6, 0xB248, 0xB1D9,\n    0xB17A, 0xB12E, 0xB0F5, 0xB0D1, 0xB0C5, 0xB0D0, 0xB0F3, 0xB12B,\n    0xB176, 0xB1D4, 0xB241, 0xB2BE, 0xB348, 0xB3DE, 0xB47E, 0xB526,\n    0xB5D5, 0xB689, 0xB741, 0xB7FB, 0xB8B5, 0xB96E, 0xBA24, 0xBAD6,\n    0xBB82, 0xBC26, 0xBCC0, 0xBD50, 0xBDD4, 0xBE53, 0xBED9, 0xBF63,\n    0xBFF1, 0xC082, 0xC114, 0xC1A8, 0xC23B, 0xC2CC, 0xC35C, 0xC3E8,\n    0xC471, 0xC4F3, 0xC570, 0xC5E6, 0xC653, 0xC6B8, 0xC712, 0xC761,\n    0xC7A4, 0xC7D9, 0xC801, 0xC819, 0xC822, 0x2395, 0x2391, 0x2384,\n    0x236F, 0x2353, 0x232F, 0x2304, 0x22D3, 0x229B, 0x225D, 0x221A,\n    0x21D2, 0x2185, 0x2134, 0x20DF, 0x2086, 0x202A, 0x1FCB, 0x1F69,\n    0x1F05, 0x1EA0, 0x1E39, 0x1DD1, 0x1D68, 0x1CFF, 0x1C96, 0x1C2E,\n    0x1BC6, 0x1B60, 0x1AFB, 0x1A98, 0x1A37, 0x19D9, 0x197D, 0x1926,\n    0x18D2, 0x1882, 0x1836, 0x17F0, 0x17AF, 0x1773, 0x173D, 0x170E,\n    0x16E5, 0x16C4, 0x16AA, 0x1697, 0x168D, 0x168C, 0x169E, 0x16CC,\n    0x1714, 0x1774, 0x17E9, 0x1871, 0x190B, 0x19B2, 0x1A65, 0x1B23,\n    0x1BE7, 0x1CB1, 0x1D7E, 0x1E4B, 0x1F16, 0x1FDD, 0x209D, 0x2155,\n    0x2201, 0x22A0, 0x232F, 0x23AC, 0x2414, 0x2466, 0x24A5, 0x24D7,\n    0x24FD, 0x2518, 0x2529, 0x2530, 0x252F, 0x2527, 0x2519, 0x2504,\n    0x24EB, 0x24CE, 0x24AF, 0x248D, 0x246A, 0x2447, 0x2425, 0x2404,\n    0x23E6, 0x23CC, 0x23B5, 0x23A4, 0x2399, 0x2395, 0xE385, 0xE388,\n    0xE38F, 0xE39B, 0xE3AC, 0xE3C1, 0xE3DA, 0xE3F8, 0xE418, 0xE43D,\n    0xE465, 0xE490, 0xE4BE, 0xE4EF, 0xE522, 0xE558, 0xE58F, 0xE5C9,\n    0xE605, 0xE642, 0xE681, 0xE6C1, 0xE702, 0xE743, 0xE785, 0xE7C8,\n    0xE80B, 0xE84E, 0xE891, 0xE8D3, 0xE915, 0xE956, 0xE996, 0xE9D5,\n    0xEA12, 0xEA4E, 0xEA89, 0xEAC1, 0xEAF7, 0xEB2B, 0xEB5C, 0xEB8B,\n    0xEBB7, 0xEBDF, 0xEC04, 0xEC26, 0xEC44, 0xEC5E, 0xEC74, 0xEC84,\n    0xEC8C, 0xEC8D, 0xEC86, 0xEC7A, 0xEC67, 0xEC4F, 0xEC31, 0xEC0F,\n    0xEBE9, 0xEBBF, 0xEB92, 0xEB62, 0xEB30, 0xEAFC, 0xEAC6, 0xEA8F,\n    0xEA58, 0xEA21, 0xE9EA, 0xE9B4, 0xE97F, 0xE94C, 0xE91B, 0xE8E8,\n    0xE8AF, 0xE870, 0xE82D, 0xE7E5, 0xE79B, 0xE74E, 0xE6FF, 0xE6AF,\n    0xE65F, 0xE610, 0xE5C1, 0xE575, 0xE52B, 0xE4E5, 0xE4A3, 0xE466,\n    0xE42F, 0xE3FE, 0xE3D5, 0xE3B3, 0xE39A, 0xE38A, 0xE385, 0xEDF5,\n    0xEDF9, 0xEE07, 0xEE1D, 0xEE3B, 0xEE61, 0xEE8E, 0xEEC2, 0xEEFD,\n    0xEF3E, 0xEF85, 0xEFD2, 0xF024, 0xF07A, 0xF0D5, 0xF134, 0xF197,\n    0xF1FD, 0xF266, 0xF2D2, 0xF340, 0xF3B0, 0xF421, 0xF493, 0xF506,\n    0xF57A, 0xF5ED, 0xF660, 0xF6D3, 0xF744, 0xF7B4, 0xF822, 0xF88D,\n    0xF8F6, 0xF95D, 0xF9C0, 0xFA1F, 0xFA7A, 0xFAD1, 0xFB22, 0xFB6F,\n    0xFBB6, 0xFBF8, 0xFC33, 0xFC67, 0xFC95, 0xFCBB, 0xFCD9, 0xFCEF,\n    0xFCF6, 0xFCE7, 0xFCC5, 0xFC91, 0xFC4C, 0xFBF8, 0xFB97, 0xFB2A,\n    0xFAB2, 0xFA32, 0xF9AA, 0xF91D, 0xF88C, 0xF7F8, 0xF764, 0xF6D0,\n    0xF63E, 0xF5B0, 0xF527, 0xF4A5, 0xF42B, 0xF3BC, 0xF358, 0xF301,\n    0xF2B1, 0xF261, 0xF212, 0xF1C3, 0xF176, 0xF129, 0xF0DF, 0xF096,\n    0xF04F, 0xF00B, 0xEFCA, 0xEF8B, 0xEF50, 0xEF19, 0xEEE5, 0xEEB6,\n    0xEE8B, 0xEE65, 0xEE44, 0xEE28, 0xEE12, 0xEE02, 0xEDF8, 0xEDF5,\n    0xA3FD, 0xA407, 0xA424, 0xA454, 0xA495, 0xA4E8, 0xA54A, 0xA5BC,\n    0xA63D, 0xA6CB, 0xA766, 0xA80D, 0xA8C0, 0xA97D, 0xAA43, 0xAB13,\n    0xABEB, 0xACCA, 0xADB0, 0xAE9B, 0xAF8C, 0xB080, 0xB178, 0xB273,\n    0xB36F, 0xB46C, 0xB569, 0xB665, 0xB760, 0xB859, 0xB94F, 0xBA41,\n    0xBB2E, 0xBC16, 0xBCF7, 0xBDD1, 0xBEA4, 0xBF6E, 0xC02E, 0xC0E4,\n    0xC18F, 0xC22E, 0xC2C1, 0xC346, 0xC3BD, 0xC424, 0xC47C, 0xC4C3,\n    0xC4F9, 0xC50F, 0xC4F8, 0xC4B9, 0xC454, 0xC3CC, 0xC325, 0xC262,\n    0xC186, 0xC094, 0xBF8F, 0xBE7B, 0xBD5A, 0xBC30, 0xBB00, 0xB9CD,\n    0xB89B, 0xB76C, 0xB644, 0xB525, 0xB414, 0xB312, 0xB224, 0xB14D,\n    0xB08F, 0xAFDD, 0xAF28, 0xAE71, 0xADB8, 0xACFF, 0xAC46, 0xAB8F,\n    0xAADB, 0xAA2A, 0xA97E, 0xA8D7, 0xA836, 0xA79D, 0xA70C, 0xA684,\n    0xA606, 0xA594, 0xA52E, 0xA4D4, 0xA489, 0xA44D, 0xA421, 0xA406,\n    0xA3FD, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001, 0x4AD0,\n    0xBF5F, 0x3A73, 0x020F, 0xFD2E, 0xF9E5, 0xF9E6, 0xF9E8, 0xF9EB,\n    0xF9EF, 0xF9F4, 0xF9FA, 0xFA00, 0xFA08, 0xFA0F, 0xFA17, 0xFA1F,\n    0xFA28, 0xFA30, 0xFA38, 0xFA40, 0xFA48, 0xFA4F, 0xFA56, 0xFA5B,\n    0xFA60, 0xFA65, 0xFA68, 0xFA6A, 0xFA6A, 0xFA6A, 0xFA69, 0xFA67,\n    0xFA64, 0xFA61, 0xFA5D, 0xFA58, 0xFA53, 0xFA4D, 0xFA46, 0xFA3F,\n    0xFA37, 0xFA2F, 0xFA26, 0xFA1C, 0xFA12, 0xFA08, 0xF9FD, 0xF9F1,\n    0xF9E5, 0xF9D8, 0xF9C8, 0xF9B7, 0xF9A5, 0xF991, 0xF97C, 0xF966,\n    0xF950, 0xF939, 0xF922, 0xF90B, 0xF8F5, 0xF8DF, 0xF8C9, 0xF8B5,\n    0xF8A2, 0xF890, 0xF880, 0xF872, 0xF865, 0xF85C, 0xF854, 0xF850,\n    0xF84E, 0xF850, 0xF854, 0xF85B, 0xF865, 0xF870, 0xF87E, 0xF88E,\n    0xF89F, 0xF8B1, 0xF8C5, 0xF8D9, 0xF8EE, 0xF904, 0xF91A, 0xF92F,\n    0xF945, 0xF95A, 0xF96E, 0xF982, 0xF994, 0xF9A5, 0xF9B5, 0xF9C3,\n    0xF9CF, 0xF9D8, 0xF9DF, 0xF9E4, 0xF9E5, 0xFF99, 0xFF99, 0xFF97,\n    0xFF93, 0xFF8F, 0xFF89, 0xFF82, 0xFF7B, 0xFF73, 0xFF6B, 0xFF62,\n    0xFF59, 0xFF50, 0xFF47, 0xFF3E, 0xFF35, 0xFF2C, 0xFF25, 0xFF1D,\n    0xFF17, 0xFF11, 0xFF0D, 0xFF09, 0xFF07, 0xFF06, 0xFF07, 0xFF08,\n    0xFF0A, 0xFF0D, 0xFF10, 0xFF15, 0xFF1A, 0xFF20, 0xFF26, 0xFF2D,\n    0xFF35, 0xFF3E, 0xFF47, 0xFF51, 0xFF5C, 0xFF67, 0xFF73, 0xFF7F,\n    0xFF8C, 0xFF99, 0xFFA8, 0xFFBA, 0xFFCD, 0xFFE2, 0xFFF8, 0x000F,\n    0x0028, 0x0041, 0x005B, 0x0075, 0x008F, 0x00A8, 0x00C1, 0x00D9,\n    0x00F0, 0x0106, 0x011A, 0x012D, 0x013D, 0x014B, 0x0156, 0x015E,\n    0x0163, 0x0165, 0x0163, 0x015E, 0x0156, 0x014C, 0x013E, 0x012F,\n    0x011D, 0x010A, 0x00F5, 0x00DF, 0x00C8, 0x00B0, 0x0097, 0x007F,\n    0x0066, 0x004E, 0x0036, 0x001F, 0x0009, 0xFFF5, 0xFFE1, 0xFFD0,\n    0xFFC0, 0xFFB3, 0xFFA8, 0xFFA0, 0xFF9B, 0xFF99, 0xDBAE, 0xDBAE,\n    0xDBAD, 0xDBAB, 0xDBA9, 0xDBA7, 0xDBA4, 0xDBA1, 0xDB9D, 0xDB99,\n    0xDB95, 0xDB91, 0xDB8D, 0xDB89, 0xDB85, 0xDB81, 0xDB7D, 0xDB79,\n    0xDB76, 0xDB73, 0xDB71, 0xDB6F, 0xDB6D, 0xDB6C, 0xDB6C, 0xDB6C,\n    0xDB6D, 0xDB6E, 0xDB6F, 0xDB71, 0xDB73, 0xDB75, 0xDB78, 0xDB7B,\n    0xDB7E, 0xDB82, 0xDB86, 0xDB8A, 0xDB8E, 0xDB93, 0xDB98, 0xDB9D,\n    0xDBA3, 0xDBA8, 0xDBAE, 0xDBB5, 0xDBBC, 0xDBC4, 0xDBCD, 0xDBD6,\n    0xDBE0, 0xDBEB, 0xDBF5, 0xDC00, 0xDC0B, 0xDC16, 0xDC21, 0xDC2B,\n    0xDC35, 0xDC3F, 0xDC48, 0xDC51, 0xDC58, 0xDC5F, 0xDC65, 0xDC6A,\n    0xDC6D, 0xDC6F, 0xDC70, 0xDC6F, 0xDC6D, 0xDC6A, 0xDC65, 0xDC60,\n    0xDC59, 0xDC52, 0xDC4A, 0xDC41, 0xDC37, 0xDC2E, 0xDC24, 0xDC19,\n    0xDC0F, 0xDC05, 0xDBFA, 0xDBF0, 0xDBE7, 0xDBDD, 0xDBD5, 0xDBCC,\n    0xDBC5, 0xDBBF, 0xDBB9, 0xDBB4, 0xDBB1, 0xDBAF, 0xDBAE, 0xF3D9,\n    0xF3D8, 0xF3D7, 0xF3D5, 0xF3D2, 0xF3CF, 0xF3CB, 0xF3C7, 0xF3C3,\n    0xF3BE, 0xF3B9, 0xF3B4, 0xF3B0, 0xF3AB, 0xF3A7, 0xF3A3, 0xF3A0,\n    0xF39D, 0xF39B, 0xF39A, 0xF39A, 0xF39A, 0xF39A, 0xF39C, 0xF39D,\n    0xF39F, 0xF3A1, 0xF3A3, 0xF3A6, 0xF3A9, 0xF3AC, 0xF3AF, 0xF3B2,\n    0xF3B6, 0xF3B9, 0xF3BD, 0xF3C0, 0xF3C4, 0xF3C7, 0xF3CB, 0xF3CE,\n    0xF3D1, 0xF3D4, 0xF3D6, 0xF3D9, 0xF3DB, 0xF3DD, 0xF3E0, 0xF3E2,\n    0xF3E5, 0xF3E7, 0xF3EA, 0xF3EC, 0xF3EF, 0xF3F1, 0xF3F4, 0xF3F6,\n    0xF3F9, 0xF3FB, 0xF3FD, 0xF3FF, 0xF402, 0xF403, 0xF405, 0xF407,\n    0xF408, 0xF40A, 0xF40B, 0xF40C, 0xF40D, 0xF40D, 0xF40E, 0xF40E,\n    0xF40D, 0xF40D, 0xF40B, 0xF40A, 0xF408, 0xF405, 0xF403, 0xF400,\n    0xF3FD, 0xF3FA, 0xF3F7, 0xF3F3, 0xF3F0, 0xF3ED, 0xF3EA, 0xF3E7,\n    0xF3E4, 0xF3E1, 0xF3DF, 0xF3DD, 0xF3DB, 0xF3DA, 0xF3D9, 0xF3D9,\n    0x04C2, 0x04BF, 0x04B7, 0x04A9, 0x0497, 0x0482, 0x0469, 0x044E,\n    0x0431, 0x0413, 0x03F4, 0x03D5, 0x03B7, 0x039A, 0x037F, 0x0366,\n    0x0351, 0x033F, 0x0332, 0x0329, 0x0326, 0x0327, 0x032C, 0x0333,\n    0x033C, 0x0348, 0x0356, 0x0366, 0x0377, 0x038A, 0x039E, 0x03B3,\n    0x03C9, 0x03DF, 0x03F6, 0x040D, 0x0424, 0x043B, 0x0451, 0x0467,\n    0x047C, 0x048F, 0x04A2, 0x04B3, 0x04C2, 0x04D1, 0x04E0, 0x04F0,\n    0x0500, 0x0510, 0x0520, 0x0531, 0x0541, 0x0552, 0x0562, 0x0572,\n    0x0582, 0x0591, 0x05A0, 0x05AE, 0x05BC, 0x05C9, 0x05D6, 0x05E1,\n    0x05EC, 0x05F6, 0x05FE, 0x0606, 0x060C, 0x0611, 0x0615, 0x0617,\n    0x0618, 0x0616, 0x0611, 0x0609, 0x05FF, 0x05F2, 0x05E3, 0x05D2,\n    0x05BF, 0x05AC, 0x0598, 0x0583, 0x056D, 0x0558, 0x0543, 0x052E,\n    0x051B, 0x0509, 0x04F8, 0x04E9, 0x04DC, 0x04D1, 0x04C9, 0x04C4,\n    0x04C2, 0x4630, 0x4630, 0x462F, 0x462F, 0x462F, 0x462F, 0x462E,\n    0x462E, 0x462D, 0x462D, 0x462D, 0x462C, 0x462C, 0x462B, 0x462B,\n    0x462A, 0x462A, 0x462A, 0x462A, 0x462A, 0x4629, 0x462A, 0x462A,\n    0x462A, 0x462A, 0x462A, 0x462A, 0x462A, 0x462B, 0x462B, 0x462B,\n    0x462B, 0x462C, 0x462C, 0x462C, 0x462D, 0x462D, 0x462D, 0x462E,\n    0x462E, 0x462E, 0x462F, 0x462F, 0x462F, 0x4630, 0x4630, 0x4630,\n    0x4630, 0x4631, 0x4631, 0x4631, 0x4632, 0x4632, 0x4632, 0x4633,\n    0x4633, 0x4633, 0x4634, 0x4634, 0x4634, 0x4635, 0x4635, 0x4635,\n    0x4635, 0x4636, 0x4636, 0x4636, 0x4636, 0x4636, 0x4636, 0x4636,\n    0x4637, 0x4637, 0x4637, 0x4636, 0x4636, 0x4636, 0x4636, 0x4635,\n    0x4635, 0x4635, 0x4634, 0x4634, 0x4634, 0x4633, 0x4633, 0x4632,\n    0x4632, 0x4631, 0x4631, 0x4631, 0x4630, 0x4630, 0x4630, 0x4630,\n    0x4630, 0x4630,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_BC_BD.inc.c",
    "content": "static const struct Animation anim_BC[] = {\n    1,\n    189,\n    0,\n    0,\n    0x01,\n    ANIMINDEX_NUMPARTS(anim_BC_BD_indices),\n    anim_BC_BD_values,\n    anim_BC_BD_indices,\n    0,\n};\n\nstatic const struct Animation anim_BD[] = {\n    1,\n    189,\n    1,\n    0,\n    0x12,\n    ANIMINDEX_NUMPARTS(anim_BC_BD_indices),\n    anim_BC_BD_values,\n    anim_BC_BD_indices,\n    0,\n};\n\n\nstatic const u16 anim_BC_BD_indices[] = {\n    0x0001, 0x0000, 0x0012, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0013, 0x0001, 0x0000,\n    0x0012, 0x02C6, 0x0012, 0x02D8, 0x0012, 0x02EA,\n    0x0012, 0x0290, 0x0012, 0x02A2, 0x0012, 0x02B4,\n    0x0012, 0x025A, 0x0012, 0x026C, 0x0012, 0x027E,\n    0x0001, 0x0221, 0x0001, 0x0222, 0x0001, 0x0223,\n    0x0012, 0x005C, 0x0012, 0x006E, 0x0012, 0x0080,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x004A,\n    0x0012, 0x0014, 0x0012, 0x0026, 0x0012, 0x0038,\n    0x0001, 0x020C, 0x0001, 0x020D, 0x0001, 0x020E,\n    0x0012, 0x00DA, 0x0012, 0x00EC, 0x0012, 0x00FE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x00C8,\n    0x0012, 0x0092, 0x0012, 0x00A4, 0x0012, 0x00B6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x020F,\n    0x0012, 0x01D6, 0x0012, 0x01E8, 0x0012, 0x01FA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x01C4,\n    0x0012, 0x018E, 0x0012, 0x01A0, 0x0012, 0x01B2,\n    0x0012, 0x0224, 0x0012, 0x0236, 0x0012, 0x0248,\n    0x0012, 0x0158, 0x0012, 0x016A, 0x0012, 0x017C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x0146,\n    0x0012, 0x0110, 0x0012, 0x0122, 0x0012, 0x0134,\n};\n\nstatic const s16 anim_BC_BD_values[] = {\n    0x0000, 0x0057, 0x0058, 0x005A, 0x005D, 0x0060, 0x0065, 0x006C,\n    0x0083, 0x00A5, 0x00CC, 0x00F1, 0x010F, 0x011E, 0x0118, 0x0101,\n    0x00E4, 0x00CB, 0x00C0, 0x3FFF, 0xFF8A, 0x00F6, 0x0489, 0x0939,\n    0x0DF9, 0x11C0, 0x1382, 0x1233, 0x0D95, 0x068E, 0xFDCD, 0xF3FF,\n    0xE9D3, 0xDFFA, 0xD720, 0xCFF6, 0xCB29, 0xC968, 0xF980, 0xFA09,\n    0xFB6C, 0xFD51, 0xFF61, 0x0145, 0x02A7, 0x0331, 0x02EB, 0x022E,\n    0x0117, 0xFFC6, 0xFE56, 0xFCE7, 0xFB94, 0xFA7E, 0xF9C1, 0xF97C,\n    0xF06F, 0xEF5A, 0xEC8E, 0xE8B8, 0xE485, 0xE0A3, 0xDDBE, 0xDC83,\n    0xDCDA, 0xDE11, 0xDFF1, 0xE243, 0xE4D1, 0xE763, 0xE9C2, 0xEBB8,\n    0xED0E, 0xED8C, 0xC485, 0xC6B8, 0xCC72, 0xD468, 0xDD4B, 0xE5CF,\n    0xECA7, 0xF085, 0xF1CA, 0xF1E0, 0xF106, 0xEF7B, 0xED7F, 0xEB51,\n    0xE931, 0xE75D, 0xE616, 0xE59B, 0xE000, 0xDE6C, 0xDA71, 0xD531,\n    0xCFD0, 0xCB70, 0xC934, 0xCA3F, 0xCEC9, 0xD5D3, 0xDEAA, 0xE899,\n    0xF2ED, 0xFCF4, 0x05F7, 0x0D46, 0x122D, 0x13F7, 0xECD9, 0xEDDC,\n    0xF05B, 0xF388, 0xF696, 0xF8B7, 0xF91E, 0xF6FD, 0xF1FF, 0xEAC6,\n    0xE1F8, 0xD83C, 0xCE37, 0xC491, 0xBBEE, 0xB4F5, 0xB04C, 0xAE99,\n    0xE26A, 0xE4C1, 0xEAAB, 0xF27D, 0xFA8D, 0x0131, 0x04C0, 0x0391,\n    0xFD5A, 0xF395, 0xE741, 0xD95B, 0xCAE1, 0xBCD1, 0xB027, 0xA5E2,\n    0x9EFE, 0x9C7A, 0x0000, 0xFFBC, 0xFF1D, 0xFE66, 0xFDDE, 0xFDC7,\n    0xFE66, 0x0000, 0x02CD, 0x06A5, 0x0B36, 0x1030, 0x1543, 0x1A1E,\n    0x1E70, 0x21EA, 0x243B, 0x2513, 0x0000, 0xFFF1, 0xFFCC, 0xFFA2,\n    0xFF82, 0xFF7D, 0xFFA2, 0x0000, 0x00A5, 0x0188, 0x0296, 0x03BC,\n    0x04E8, 0x0607, 0x0706, 0x07D3, 0x085C, 0x088E, 0xED8C, 0xEC49,\n    0xE90D, 0xE4AE, 0xDFFE, 0xDBD3, 0xD901, 0xD85C, 0xD9E1, 0xDCC1,\n    0xE0A2, 0xE528, 0xE9F6, 0xEEB3, 0xF301, 0xF686, 0xF8E6, 0xF9C5,\n    0xC898, 0xC86C, 0xC80A, 0xC7A5, 0xC76D, 0xC796, 0xC851, 0xC9D1,\n    0xCC49, 0xCF9F, 0xD38F, 0xD7D6, 0xDC2E, 0xE055, 0xE406, 0xE6FD,\n    0xE8F7, 0xE9AE, 0x4CE0, 0x4613, 0x3482, 0x1C6B, 0x020E, 0xE9AD,\n    0xD784, 0xCFD3, 0xD1FE, 0xD9AB, 0xE580, 0xF424, 0x043B, 0x146E,\n    0x2361, 0x2FBB, 0x3822, 0x3B3C, 0x2C94, 0x2C25, 0x2B10, 0x29A9,\n    0x2845, 0x2737, 0x26D4, 0x276F, 0x2924, 0x2BAB, 0x2ECA, 0x3242,\n    0x35D8, 0x394E, 0x3C69, 0x3EEC, 0x409A, 0x4137, 0x0951, 0x01B1,\n    0xEE17, 0xD367, 0xB688, 0x9C62, 0x89DC, 0x83DB, 0x8A06, 0x9781,\n    0xAA6A, 0xC0E2, 0xD909, 0xF101, 0x06E6, 0x18DD, 0x2505, 0x297C,\n    0xFF57, 0xFF3B, 0xFF03, 0xFED7, 0xFEAB, 0xFE79, 0xFE68, 0xFEA4,\n    0xFFA6, 0x0116, 0x01E6, 0x00B8, 0xFF57, 0xFF3C, 0xFF61, 0xFFA4,\n    0xFFE4, 0x0000, 0xFC91, 0xFD51, 0xFEDA, 0x001C, 0x00CB, 0x0150,\n    0x01B0, 0x01EE, 0x01D8, 0x0183, 0x015A, 0x01E0, 0x0244, 0x01E8,\n    0x0154, 0x00B4, 0x0034, 0x0000, 0xBDC5, 0xBFE7, 0xC37D, 0xC454,\n    0xBEED, 0xB630, 0xAF7D, 0xB038, 0xC2EE, 0xDFA7, 0xF000, 0xD923,\n    0xBDAE, 0xBA06, 0xBAB3, 0xBDB1, 0xC0F8, 0xC283, 0x091A, 0x1015,\n    0x1F1F, 0x2D5C, 0x38C4, 0x4437, 0x4E39, 0x554A, 0x5644, 0x52E7,\n    0x5113, 0x5485, 0x59C5, 0x5EA1, 0x4B41, 0x32A5, 0x1D7E, 0x1482,\n    0x1711, 0x179D, 0x1925, 0x1B80, 0x2026, 0x2665, 0x2AD6, 0x2A14,\n    0x1DF3, 0x0A95, 0xFC06, 0xFC7D, 0x0156, 0x01A4, 0x0176, 0x0109,\n    0x009A, 0x0068, 0x1373, 0x1868, 0x2234, 0x293D, 0x2BAA, 0x2C97,\n    0x2BDC, 0x2952, 0x23AC, 0x1AE6, 0x10C7, 0x01A2, 0xF64E, 0xF58B,\n    0xF770, 0xFA90, 0xFD7D, 0xFEC8, 0xA1B6, 0xA41A, 0xA9BF, 0xB058,\n    0xB8F5, 0xC378, 0xCBC9, 0xCDD2, 0xC35B, 0xB025, 0x9F05, 0x9551,\n    0x8F7C, 0x8A9F, 0x85E0, 0x81CD, 0x7EEF, 0x7DDD, 0x011B, 0x02DD,\n    0x062E, 0x0825, 0x0759, 0x0533, 0x02FA, 0x00D0, 0x0050, 0x0044,\n    0x006A, 0x00AF, 0x00D0, 0x00B5, 0x0080, 0x0045, 0x0014, 0x0000,\n    0xFFC8, 0xFF20, 0xFDE7, 0xFD3E, 0xFDC6, 0xFEDE, 0xFFBC, 0xFF38,\n    0xFF3F, 0xFF56, 0xFF4A, 0xFF36, 0xFF38, 0xFF5A, 0xFF8E, 0xFFC4,\n    0xFFEF, 0x0000, 0xAA72, 0xAFB9, 0xB9CC, 0xC009, 0xBD3E, 0xB69E,\n    0xB321, 0xC1AA, 0xC230, 0xC07C, 0xC000, 0xBFC6, 0xC1AA, 0xC6CA,\n    0xCDDA, 0xD516, 0xDAB9, 0xDCFE, 0x5730, 0x56C3, 0x562A, 0x5666,\n    0x593D, 0x5CEA, 0x5D1F, 0x4A8E, 0x37D3, 0x2886, 0x1E62, 0x170F,\n    0x152F, 0x19BC, 0x2218, 0x2B7D, 0x3328, 0x3653, 0xFFB8, 0xFF48,\n    0xFE6A, 0xFDC9, 0xFD9A, 0xFDA8, 0xFDFD, 0xFFBC, 0x0701, 0x0D26,\n    0x0EE3, 0x0EE2, 0x0DB3, 0x0B4C, 0x07DF, 0x0452, 0x0188, 0x0068,\n    0x0050, 0x023F, 0x0646, 0x09BC, 0x0B91, 0x0CD4, 0x0E13, 0x0F6A,\n    0x1124, 0x114E, 0x0DC7, 0x08EC, 0x0536, 0x030F, 0x0147, 0xFFEF,\n    0xFF14, 0xFEC8, 0x82F7, 0x82BA, 0x8244, 0x81F7, 0x81BD, 0x81AC,\n    0x8268, 0x875A, 0x9B45, 0xAE87, 0xB8EF, 0xC096, 0xCA4D, 0xD999,\n    0xEC36, 0xFE47, 0x0BF1, 0x115B, 0x8001, 0x8001, 0x4171, 0xBF5F,\n    0xBF61, 0xBF64, 0xBF5F, 0xBF49, 0xBF2C, 0xBF1E, 0xBF5F, 0xC0FA,\n    0xC217, 0xC309, 0xC35F, 0xBF5F, 0xB4BC, 0xA618, 0x971D, 0x8B71,\n    0x86BD, 0x8001, 0x8001, 0x4171, 0x0000, 0xFE1F, 0xFA44, 0xF719,\n    0xF52E, 0xF388, 0xF283, 0xF27C, 0xF46B, 0xF7E7, 0xFB3E, 0xFE21,\n    0x0000, 0x006F, 0x007D, 0x0053, 0x001B, 0x0000, 0x0000, 0x0317,\n    0x0971, 0x0EA7, 0x11CF, 0x1486, 0x1634, 0x163E, 0x1310, 0x0D54,\n    0x07D4, 0x0315, 0x0000, 0xFF49, 0xFF32, 0xFF77, 0xFFD3, 0x0000,\n    0xBF5F, 0xBB66, 0xB33F, 0xAC8D, 0xA87F, 0xA503, 0xA2DB, 0xA2CD,\n    0xA6E3, 0xAE41, 0xB551, 0xBB6A, 0xBF5F, 0xC04A, 0xC068, 0xC010,\n    0xBF9A, 0xBF5F, 0xE0EA, 0xDF08, 0xDD10, 0xE08A, 0xEBE4, 0xFB80,\n    0x0BC8, 0x192E, 0x2075, 0x211E, 0x1AE6, 0x11D2, 0x0CD4, 0x0E03,\n    0x11BE, 0x1667, 0x1A63, 0x1C13, 0xF9D5, 0xFC05, 0x0039, 0x02EC,\n    0x02D9, 0x01A6, 0x0026, 0xFF2B, 0xFF33, 0x0033, 0x0286, 0x0547,\n    0x0698, 0x05E4, 0x0441, 0x024F, 0x00AE, 0x0000, 0x02C2, 0x04FC,\n    0x094B, 0x0C21, 0x0C73, 0x0BD4, 0x0A9B, 0x0922, 0x06DB, 0x0337,\n    0xFD77, 0xF728, 0xF412, 0xF553, 0xF8A1, 0xFCA6, 0x000A, 0x0177,\n    0x0000, 0x00E6, 0x02CF, 0x0488, 0x05BA, 0x06D4, 0x07CC, 0x0898,\n    0x09DB, 0x0BA3, 0x0D01, 0x0D06, 0x0AC5, 0x04D9, 0xFBE2, 0xF1F4,\n    0xE926, 0xE38F, 0x06ED, 0x0520, 0x0194, 0xFF0D, 0xFE5B, 0xFE4E,\n    0xFEAE, 0xFF40, 0x0028, 0x0176, 0x02D4, 0x03ED, 0x046A, 0x0401,\n    0x02EA, 0x0197, 0x0078, 0x0000, 0x0CFE, 0x0B38, 0x07EE, 0x062D,\n    0x074B, 0x09B5, 0x0C1D, 0x0D34, 0x0CB4, 0x0B6D, 0x09B1, 0x07D1,\n    0x061F, 0x0456, 0x0240, 0x0043, 0xFEC8, 0xFE32, 0x257D, 0x2639,\n    0x2840, 0x2B4B, 0x2F17, 0x335F, 0x3806, 0x3D12, 0x427A, 0x4830,\n    0x4E28, 0x5456, 0x5AAF, 0x62B4, 0x6C8E, 0x7629, 0x7D73, 0x8059,\n    0xF72C, 0xF790, 0xF894, 0xF9F7, 0xFB7C, 0xFCE5, 0xFE54, 0xFFFC,\n    0x01B6, 0x035F, 0x04D0, 0x05E4, 0x0674, 0x05F2, 0x045E, 0x0265,\n    0x00B6, 0x0000, 0x3380, 0x3335, 0x3278, 0x317E, 0x307E, 0x2FAD,\n    0x2EDC, 0x2DD5, 0x2CC5, 0x2BD9, 0x2B3D, 0x2B1F, 0x2BAA, 0x2DDA,\n    0x31B6, 0x3601, 0x397D, 0x3AED,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_BE.inc.c",
    "content": "static const struct Animation anim_BE[] = {\n    1,\n    189,\n    0,\n    0,\n    0x0A,\n    ANIMINDEX_NUMPARTS(anim_BE_indices),\n    anim_BE_values,\n    anim_BE_indices,\n    0,\n};\n\n\nstatic const u16 anim_BE_indices[] = {\n    0x0001, 0x0000, 0x000A, 0x0001, 0x000A, 0x000B, 0x0001, 0x0000, 0x0001, 0x0015, 0x0001, 0x0000,\n    0x000A, 0x015E, 0x000A, 0x0168, 0x000A, 0x0172,\n    0x000A, 0x0140, 0x000A, 0x014A, 0x000A, 0x0154,\n    0x000A, 0x0122, 0x000A, 0x012C, 0x000A, 0x0136,\n    0x0001, 0x011E, 0x0001, 0x011F, 0x0001, 0x0120,\n    0x000A, 0x003E, 0x000A, 0x0048, 0x000A, 0x0052,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0034,\n    0x000A, 0x0016, 0x000A, 0x0020, 0x000A, 0x002A,\n    0x0001, 0x011A, 0x0001, 0x011B, 0x0001, 0x011C,\n    0x000A, 0x0070, 0x000A, 0x007A, 0x000A, 0x0084,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x0066,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x005C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x011D,\n    0x000A, 0x00FC, 0x000A, 0x0106, 0x000A, 0x0110,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x00F2,\n    0x000A, 0x00D4, 0x000A, 0x00DE, 0x000A, 0x00E8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0121,\n    0x000A, 0x00B6, 0x000A, 0x00C0, 0x000A, 0x00CA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000A, 0x00AC,\n    0x000A, 0x008E, 0x000A, 0x0098, 0x000A, 0x00A2,\n};\n\nstatic const s16 anim_BE_values[] = {\n    0x0000, 0x00A6, 0x0097, 0x0084, 0x0078, 0x007F, 0x008D, 0x009A,\n    0x00A2, 0x00A9, 0x00AB, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FFF, 0x0311, 0x0279,\n    0x01EF, 0x0173, 0x0107, 0x00AB, 0x0062, 0x002C, 0x000B, 0x0000,\n    0xFB1E, 0xFACE, 0xFA84, 0xFA42, 0xFA08, 0xF9D7, 0xF9B0, 0xF993,\n    0xF982, 0xF97C, 0xEAAD, 0xEB3B, 0xEBBC, 0xEC30, 0xEC96, 0xECEB,\n    0xED2F, 0xED62, 0xED81, 0xED8C, 0xD8F1, 0xD641, 0xD3BF, 0xD175,\n    0xCF6C, 0xCDAD, 0xCC42, 0xCB33, 0xCA8A, 0xCA4F, 0x9D7A, 0xA913,\n    0xB623, 0xC3E8, 0xD1A2, 0xDE8D, 0xE9EA, 0xF2F7, 0xF8F3, 0xFB1D,\n    0xCDEC, 0xCE4B, 0xCEDA, 0xCF8A, 0xD04B, 0xD10D, 0xD1C0, 0xD253,\n    0xD2B7, 0xD2DC, 0x2A3A, 0x1FDE, 0x140F, 0x0785, 0xFAF6, 0xEF15,\n    0xE49C, 0xDC3F, 0xD6B5, 0xD4B4, 0xF066, 0xF157, 0xF234, 0xF2F9,\n    0xF3A6, 0xF438, 0xF4AC, 0xF502, 0xF537, 0xF549, 0xD5D3, 0xD347,\n    0xD0E5, 0xCEB7, 0xCCC5, 0xCB1A, 0xC9BD, 0xC8B9, 0xC816, 0xC7DD,\n    0x5659, 0x4C1F, 0x40B8, 0x34C5, 0x28EA, 0x1DCA, 0x1407, 0x0C44,\n    0x0725, 0x054B, 0x2C3A, 0x2C20, 0x2C0A, 0x2BF9, 0x2BED, 0x2BE3,\n    0x2BDD, 0x2BD9, 0x2BD7, 0x2BD6, 0x1C40, 0x1266, 0x0753, 0xFBAA,\n    0xF00C, 0xE51D, 0xDB81, 0xD3D9, 0xCECA, 0xCCF6, 0x037F, 0xFF8C,\n    0xFA48, 0xF71C, 0xF7CF, 0xF977, 0xFB99, 0xFDB9, 0xFF5A, 0x0000,\n    0x00E9, 0xFF1E, 0xFD6F, 0xFC7E, 0xFCB2, 0xFD32, 0xFDD8, 0xFE7E,\n    0xFEFD, 0xFF30, 0xBE0A, 0xB491, 0xB087, 0xB024, 0xB3E4, 0xB92B,\n    0xBEFD, 0xC45D, 0xC84F, 0xC9D8, 0x2765, 0x37AF, 0x44ED, 0x4AB2,\n    0x4534, 0x3C5C, 0x321C, 0x2864, 0x2123, 0x1E4A, 0x023E, 0x0AC3,\n    0x11CD, 0x167D, 0x183D, 0x197A, 0x1A49, 0x1AC2, 0x1AFB, 0x1B09,\n    0x0418, 0x09BC, 0x11C6, 0x171D, 0x1755, 0x166F, 0x14E5, 0x1333,\n    0x11D5, 0x1144, 0x9404, 0x8FDC, 0x8B64, 0x8A51, 0x8F4C, 0x9647,\n    0x9DF4, 0xA50B, 0xAA3E, 0xAC44, 0xFF11, 0x03C4, 0x096A, 0x0C93,\n    0x0B51, 0x08E5, 0x05EF, 0x030D, 0x00DD, 0x0000, 0x0002, 0x0189,\n    0x02BA, 0x0347, 0x02E7, 0x0242, 0x017F, 0x00C3, 0x0037, 0x0000,\n    0xBD93, 0xB396, 0xAD1B, 0xAA87, 0xAD13, 0xB132, 0xB5FB, 0xBA87,\n    0xBDEB, 0xBF40, 0x28E2, 0x38F4, 0x457F, 0x4B1B, 0x4695, 0x3F16,\n    0x364F, 0x2DF1, 0x27AD, 0x2537, 0xFCA1, 0xEF74, 0xE23F, 0xD958,\n    0xD6EF, 0xD5C2, 0xD575, 0xD5AF, 0xD614, 0xD64A, 0xFC33, 0xF4C4,\n    0xEB47, 0xE51B, 0xE4E5, 0xE603, 0xE7E1, 0xE9ED, 0xEB93, 0xEC41,\n    0x92AA, 0x9050, 0x91C1, 0x951E, 0x9AC3, 0xA1B0, 0xA8DD, 0xAF44,\n    0xB3DC, 0xB59E, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001,\n    0x4171, 0xBF5F, 0x00EF, 0x00D5, 0x004F, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0083, 0x0074, 0x002B, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x138A, 0x13F8,\n    0x12FD, 0x1128, 0x0E2D, 0x09EC, 0x0535, 0x00D7, 0xFDA2, 0xFC62,\n    0xFFE8, 0xFFEB, 0xFFF8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xFFDD, 0xFFE1, 0xFFF5, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0FE0, 0x0FE1, 0x0F0E, 0x0E38,\n    0x0D66, 0x0C3B, 0x0AF0, 0x09BD, 0x08DC, 0x0884, 0x81A2, 0x8174,\n    0x808C, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x001C, 0x0019, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x2D82, 0x2D80, 0x2F9D, 0x31BC, 0x33C8, 0x36B3,\n    0x39F0, 0x3CEF, 0x3F23, 0x3FFF,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_BF.inc.c",
    "content": "static const struct Animation anim_BF[] = {\n    1,\n    189,\n    0,\n    0,\n    0x18,\n    ANIMINDEX_NUMPARTS(anim_BF_indices),\n    anim_BF_values,\n    anim_BF_indices,\n    0,\n};\n\n\nstatic const u16 anim_BF_indices[] = {\n    0x0001, 0x0000, 0x0018, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0019, 0x0001, 0x0000,\n    0x0018, 0x0380, 0x0018, 0x0398, 0x0018, 0x03B0,\n    0x0018, 0x0338, 0x0018, 0x0350, 0x0018, 0x0368,\n    0x0018, 0x02F0, 0x0018, 0x0308, 0x0018, 0x0320,\n    0x0001, 0x02A5, 0x0001, 0x02A6, 0x0001, 0x02A7,\n    0x0018, 0x007A, 0x0018, 0x0092, 0x0018, 0x00AA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x0062,\n    0x0018, 0x001A, 0x0018, 0x0032, 0x0018, 0x004A,\n    0x0001, 0x028A, 0x0001, 0x028B, 0x0001, 0x028C,\n    0x0018, 0x00F2, 0x0018, 0x010A, 0x0018, 0x0122,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x00DA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x00C2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x028D,\n    0x0018, 0x0242, 0x0018, 0x025A, 0x0018, 0x0272,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x022A,\n    0x0018, 0x01E2, 0x0018, 0x01FA, 0x0018, 0x0212,\n    0x0018, 0x02A8, 0x0018, 0x02C0, 0x0018, 0x02D8,\n    0x0018, 0x019A, 0x0018, 0x01B2, 0x0018, 0x01CA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0018, 0x0182,\n    0x0018, 0x013A, 0x0018, 0x0152, 0x0018, 0x016A,\n};\n\nstatic const s16 anim_BF_values[] = {\n    0x0000, 0x006C, 0x0070, 0x0074, 0x0078, 0x007C, 0x0080, 0x0084,\n    0x0088, 0x008C, 0x0091, 0x0095, 0x0099, 0x009D, 0x00A1, 0x00A5,\n    0x00A9, 0x00AD, 0x00B1, 0x00B4, 0x00B7, 0x00BB, 0x00BD, 0x00C0,\n    0x00C3, 0x3FFF, 0x1233, 0x12DA, 0x129F, 0x125B, 0x126E, 0x1233,\n    0x1192, 0x10E4, 0x102C, 0x0F6A, 0x0EA0, 0x0DCF, 0x0CF9, 0x0C1F,\n    0x0B43, 0x0A65, 0x0987, 0x08AA, 0x07D1, 0x06FB, 0x062B, 0x0562,\n    0x04A2, 0x03EA, 0x0331, 0x0387, 0x0368, 0x0345, 0x034F, 0x0331,\n    0x02DA, 0x027E, 0x021C, 0x01B4, 0x0148, 0x00D9, 0x0067, 0xFFF4,\n    0xFF7E, 0xFF07, 0xFE91, 0xFE1B, 0xFDA7, 0xFD35, 0xFCC7, 0xFC5B,\n    0xFBF4, 0xFB93, 0xDC83, 0xDBD1, 0xDC11, 0xDC59, 0xDC4A, 0xDC83,\n    0xDD1A, 0xDDBD, 0xDE6A, 0xDF1F, 0xDFDC, 0xE0A0, 0xE168, 0xE234,\n    0xE302, 0xE3D2, 0xE4A2, 0xE570, 0xE63C, 0xE703, 0xE7C6, 0xE882,\n    0xE936, 0xE9E1, 0xF085, 0xF619, 0xFBFE, 0xFEBB, 0xF7A8, 0xF085,\n    0xF19B, 0xF474, 0xF812, 0xFB7B, 0xFDB1, 0xFDB9, 0xFC27, 0xFA3C,\n    0xF804, 0xF588, 0xF2D3, 0xEFF0, 0xECE9, 0xE9C8, 0xE698, 0xE363,\n    0xE034, 0xDD15, 0xCA3F, 0xD325, 0xE26C, 0xE8E9, 0xE564, 0xE0E0,\n    0xDB84, 0xD575, 0xCED9, 0xC7D7, 0xC096, 0xB93A, 0xB1EC, 0xAAD0,\n    0xA40C, 0x9DC9, 0x982A, 0x9358, 0x8F77, 0x8CAF, 0x8B25, 0x8AFF,\n    0x8DB5, 0x9423, 0xF6FD, 0xF490, 0xEFC2, 0xEC1A, 0xEA31, 0xE842,\n    0xE650, 0xE45D, 0xE26C, 0xE080, 0xDE9C, 0xDCC1, 0xDAF3, 0xD934,\n    0xD787, 0xD5EE, 0xD46C, 0xD304, 0xD1B7, 0xD08A, 0xCF7E, 0xCE96,\n    0xCDF9, 0xCDBF, 0x0391, 0xF3DA, 0xD8DE, 0xCBF0, 0xCF29, 0xD3A4,\n    0xD936, 0xDFB3, 0xE6ED, 0xEEB8, 0xF6E9, 0xFF52, 0x07C7, 0x101D,\n    0x1826, 0x1FB7, 0x26A3, 0x2CBE, 0x31DB, 0x35CE, 0x386B, 0x3985,\n    0x37C7, 0x3274, 0xD85C, 0xD7AC, 0xD804, 0xD85C, 0xD81F, 0xD85C,\n    0xD95B, 0xDA6D, 0xDB91, 0xDCC4, 0xDE04, 0xDF4F, 0xE0A2, 0xE1FD,\n    0xE35B, 0xE4BC, 0xE61D, 0xE77B, 0xE8D5, 0xEA29, 0xEB74, 0xECB4,\n    0xEDE7, 0xEF0B, 0xC9D1, 0xD509, 0xE7E6, 0xF639, 0xF845, 0xF639,\n    0xF62E, 0xF657, 0xF692, 0xF6BF, 0xF6BD, 0xF669, 0xF5A3, 0xF449,\n    0xF272, 0xF051, 0xEDF1, 0xEB5C, 0xE89D, 0xE5BF, 0xE2CC, 0xDFCE,\n    0xDCD1, 0xD9DF, 0xCFD3, 0xD60F, 0xE8D4, 0x010B, 0x17A0, 0x257A,\n    0x2C8D, 0x337C, 0x3A39, 0x40B7, 0x46E7, 0x4CBC, 0x5228, 0x571D,\n    0x5B8D, 0x5F6B, 0x62A9, 0x6538, 0x670C, 0x6815, 0x6847, 0x6793,\n    0x64A9, 0x5EAC, 0x276F, 0x2899, 0x2AF9, 0x2DC0, 0x301C, 0x313E,\n    0x316B, 0x3177, 0x3165, 0x313A, 0x30F9, 0x30A6, 0x3044, 0x2FD7,\n    0x2F63, 0x2EEC, 0x2E75, 0x2E03, 0x2D98, 0x2D39, 0x2CE9, 0x2CAC,\n    0x2C7D, 0x2C56, 0x83DB, 0x8A32, 0x9DA9, 0xB6E9, 0xCE9A, 0xDD66,\n    0xE542, 0xED01, 0xF493, 0xFBE9, 0x02F3, 0x09A3, 0x0FEA, 0x15B8,\n    0x1AFF, 0x1FAE, 0x23B7, 0x270A, 0x2999, 0x2B54, 0x2C2B, 0x2C11,\n    0x29B1, 0x2431, 0xFEA4, 0xFED4, 0xFF1F, 0xFF57, 0xFF5F, 0xFF57,\n    0xFF54, 0xFF4C, 0xFF3F, 0xFF30, 0xFF1E, 0xFF0B, 0xFEF8, 0xFEE6,\n    0xFED6, 0xFECA, 0xFEC1, 0xFEBE, 0xFEC2, 0xFECD, 0xFEE0, 0xFEFD,\n    0xFF24, 0xFF57, 0x01EE, 0x0225, 0x0239, 0x0244, 0x0248, 0x0244,\n    0x0245, 0x0248, 0x024C, 0x0251, 0x0257, 0x025D, 0x0263, 0x0269,\n    0x026E, 0x0272, 0x0275, 0x0276, 0x0275, 0x0271, 0x026B, 0x0261,\n    0x0255, 0x0244, 0xB038, 0xB2BA, 0xB8E4, 0xBDAE, 0xBE49, 0xBDAE,\n    0xBDAD, 0xBDAD, 0xBDAC, 0xBDAA, 0xBDA9, 0xBDA7, 0xBDA5, 0xBDA4,\n    0xBDA3, 0xBDA1, 0xBDA1, 0xBDA0, 0xBDA1, 0xBDA2, 0xBDA3, 0xBDA6,\n    0xBDA9, 0xBDAE, 0x554A, 0x5EA1, 0x6135, 0x5EA1, 0x4DC6, 0x3E71,\n    0x3A9B, 0x36E7, 0x3355, 0x2FE6, 0x2C9A, 0x2972, 0x266E, 0x238F,\n    0x20D5, 0x1E41, 0x1BD3, 0x198C, 0x176C, 0x1574, 0x13A5, 0x11FF,\n    0x1082, 0x0F2E, 0x2A14, 0x1F8C, 0x0E94, 0x0156, 0xFD64, 0xFDAE,\n    0xFE58, 0xFF4E, 0x0077, 0x01C1, 0x0313, 0x045A, 0x057E, 0x066A,\n    0x0708, 0x0742, 0x06E9, 0x05F9, 0x04A0, 0x030A, 0x0161, 0xFFD5,\n    0xFE8F, 0xFDBD, 0x2952, 0x1ABB, 0x05E6, 0xF64E, 0xF3EE, 0xF67E,\n    0xF743, 0xF81D, 0xF907, 0xF9FA, 0xFAEE, 0xFBDF, 0xFCC5, 0xFD99,\n    0xFE56, 0xFEF5, 0xFF5F, 0xFF91, 0xFF9C, 0xFF95, 0xFF8D, 0xFF99,\n    0xFFCB, 0x0034, 0xCDD2, 0xBD57, 0xA24B, 0x8F7C, 0x9471, 0x9EFD,\n    0xA1B9, 0xA461, 0xA6E7, 0xA93F, 0xAB5C, 0xAD30, 0xAEAF, 0xAFCB,\n    0xB077, 0xB0A6, 0xB01B, 0xAEBE, 0xACB4, 0xAA23, 0xA733, 0xA408,\n    0xA0CB, 0x9DA0, 0x00D0, 0x006A, 0xFFCD, 0xFFF1, 0x003E, 0x00D0,\n    0x00CB, 0x00BC, 0x00A6, 0x008C, 0x0073, 0x005D, 0x004D, 0x0047,\n    0x004E, 0x005E, 0x0076, 0x0092, 0x00AE, 0x00C8, 0x00DB, 0x00E5,\n    0x00E3, 0x00D0, 0xFF38, 0xFF13, 0xFEF7, 0xFEE6, 0xFEE6, 0xFF38,\n    0xFF2D, 0xFF1C, 0xFF06, 0xFEEE, 0xFED7, 0xFEC3, 0xFEB5, 0xFEB0,\n    0xFEB1, 0xFEB4, 0xFEBA, 0xFEC2, 0xFECE, 0xFEDC, 0xFEEE, 0xFF03,\n    0xFF1B, 0xFF38, 0xC1AA, 0xC9BA, 0xE469, 0xE2C3, 0xD992, 0xC1AA,\n    0xC314, 0xC641, 0xCA96, 0xCF7B, 0xD456, 0xD88C, 0xDB83, 0xDCA3,\n    0xDC22, 0xDAB9, 0xD891, 0xD5D1, 0xD2A2, 0xCF2C, 0xCB96, 0xC809,\n    0xC4AD, 0xC1AA, 0x4A8E, 0x1FCC, 0x051C, 0x0994, 0x1298, 0x152F,\n    0x151B, 0x14DB, 0x147C, 0x140E, 0x139E, 0x133D, 0x12F8, 0x12DD,\n    0x12C0, 0x1279, 0x121F, 0x11C9, 0x118E, 0x1186, 0x11C8, 0x126A,\n    0x1385, 0x152F, 0xFFBC, 0x0730, 0x05E8, 0x0350, 0x003C, 0xFD5D,\n    0xFA89, 0xF74B, 0xF3E6, 0xF09D, 0xEDB1, 0xEB64, 0xE9F8, 0xE9AF,\n    0xEA91, 0xEC57, 0xEED1, 0xF1CF, 0xF51F, 0xF892, 0xFBF6, 0xFF1A,\n    0x01CE, 0x03E1, 0x0F6A, 0x0481, 0xFD88, 0xF772, 0xF124, 0xEDE7,\n    0xEDB3, 0xEE34, 0xEF40, 0xF0AB, 0xF24B, 0xF3F5, 0xF57E, 0xF6BB,\n    0xF7CA, 0xF8E0, 0xF9F8, 0xFB0D, 0xFC1A, 0xFD19, 0xFE04, 0xFED7,\n    0xFF8C, 0x001C, 0x875A, 0xB361, 0xC2F3, 0xC3F5, 0xC28B, 0xC09B,\n    0xBEFE, 0xBD48, 0xBB7D, 0xB99E, 0xB7AF, 0xB5B0, 0xB3A6, 0xB191,\n    0xAF81, 0xAD7F, 0xAB83, 0xA984, 0xA77C, 0xA563, 0xA331, 0xA0DE,\n    0x9E62, 0x9BB7, 0x8001, 0x8001, 0x4171, 0xBF5F, 0xBF66, 0xBF65,\n    0xBF62, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F,\n    0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F,\n    0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0x8001, 0x8001, 0x4171,\n    0xF27C, 0xF60B, 0xFBB7, 0x0000, 0x009B, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x163E, 0x1064, 0x070E, 0x0000, 0xFF00, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0xA2CD, 0xAA52, 0xB64E, 0xBF5F, 0xC0A8, 0xBF5F, 0xBF5F, 0xBF5F,\n    0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F,\n    0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F,\n    0x1331, 0x1DE4, 0x1D42, 0x1622, 0x10E1, 0x0B29, 0x053B, 0xFF5B,\n    0xF9C9, 0xF4CA, 0xEFE3, 0xEB31, 0xE7DC, 0xE707, 0xE839, 0xEA18,\n    0xEC80, 0xEF4A, 0xF251, 0xF572, 0xF886, 0xFB67, 0xFDF2, 0x0000,\n    0x0D7A, 0x0F0A, 0x0D0A, 0x090E, 0x05D0, 0x0250, 0xFEC1, 0xFB53,\n    0xF83B, 0xF5AA, 0xF3BF, 0xF27F, 0xF1FF, 0xF24F, 0xF335, 0xF460,\n    0xF5C0, 0xF745, 0xF8E0, 0xFA80, 0xFC17, 0xFD94, 0xFEE7, 0x0000,\n    0xF113, 0xEC1C, 0xF1B6, 0xF7F0, 0xF51C, 0xF0AA, 0xEB55, 0xE5D8,\n    0xE0EB, 0xDD49, 0xDAD8, 0xD968, 0xD997, 0xDC01, 0xE02E, 0xE51C,\n    0xEA9C, 0xF07D, 0xF68E, 0xFCA0, 0x0281, 0x0804, 0x0CF6, 0x1128,\n    0x0898, 0x091B, 0x0986, 0x09CA, 0x09D9, 0x09A5, 0x0944, 0x08D9,\n    0x0864, 0x07E7, 0x0763, 0x06D9, 0x064A, 0x05B6, 0x051F, 0x0487,\n    0x03ED, 0x0353, 0x02BB, 0x0224, 0x0191, 0x0103, 0x0069, 0x0000,\n    0xFF40, 0x007F, 0x0256, 0x0448, 0x05D8, 0x068B, 0x069A, 0x0692,\n    0x0675, 0x0645, 0x0605, 0x05B7, 0x055D, 0x04F9, 0x048E, 0x041D,\n    0x03A8, 0x0333, 0x02BF, 0x024E, 0x01E2, 0x017E, 0x00B8, 0x0000,\n    0x0D34, 0x0B24, 0x0779, 0x034A, 0xFFB0, 0xFDC2, 0xFD11, 0xFC70,\n    0xFBE3, 0xFB6A, 0xFB06, 0xFAB9, 0xFA84, 0xFA68, 0xFA68, 0xFA82,\n    0xFABB, 0xFB11, 0xFB87, 0xFC1F, 0xFCD9, 0xFDB6, 0x057C, 0x0E38,\n    0x3519, 0x35C2, 0x36C3, 0x3876, 0x3AB0, 0x3D09, 0x3F83, 0x4223,\n    0x44E9, 0x47D8, 0x4AF3, 0x4E3D, 0x51B7, 0x557E, 0x599F, 0x5E01,\n    0x6290, 0x6734, 0x6BD8, 0x7066, 0x74C7, 0x78E5, 0x7CA9, 0x8001,\n    0xFDC4, 0xFE52, 0xFEC4, 0xFEF4, 0xFEE0, 0xFEAC, 0xFE61, 0xFE08,\n    0xFDAC, 0xFD56, 0xFD11, 0xFCE5, 0xFCDD, 0xFCF7, 0xFD25, 0xFD65,\n    0xFDB3, 0xFE0A, 0xFE67, 0xFEC5, 0xFF21, 0xFF77, 0xFFC3, 0x0000,\n    0x2C37, 0x293E, 0x24A8, 0x1DE0, 0x15AD, 0x0CDE, 0x0380, 0xF9A0,\n    0xEF49, 0xE48A, 0xD96F, 0xCE05, 0xC258, 0xB5D1, 0xA80F, 0x996F,\n    0x8A51, 0x7B10, 0x6C12, 0x5DB1, 0x504C, 0x4443, 0x39F3, 0x31BC,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_C0.inc.c",
    "content": "static const struct Animation anim_C0[] = {\n    1,\n    189,\n    0,\n    0,\n    0x20,\n    ANIMINDEX_NUMPARTS(anim_C0_indices),\n    anim_C0_values,\n    anim_C0_indices,\n    0,\n};\n\n\nstatic const u16 anim_C0_indices[] = {\n    0x0020, 0x0001, 0x0020, 0x0021, 0x0020, 0x0041, 0x0001, 0x0000, 0x0001, 0x0061, 0x0001, 0x0000,\n    0x0020, 0x046A, 0x0020, 0x048A, 0x0020, 0x04AA,\n    0x0020, 0x040A, 0x0020, 0x042A, 0x0020, 0x044A,\n    0x0020, 0x03AA, 0x0020, 0x03CA, 0x0020, 0x03EA,\n    0x0001, 0x03A6, 0x0001, 0x03A7, 0x0001, 0x03A8,\n    0x0020, 0x00E2, 0x0020, 0x0102, 0x0020, 0x0122,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0020, 0x00C2,\n    0x0020, 0x0062, 0x0020, 0x0082, 0x0020, 0x00A2,\n    0x0001, 0x03A2, 0x0001, 0x03A3, 0x0001, 0x03A4,\n    0x0020, 0x0182, 0x0020, 0x01A2, 0x0020, 0x01C2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0020, 0x0162,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0020, 0x0142,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x03A5,\n    0x0020, 0x0342, 0x0020, 0x0362, 0x0020, 0x0382,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0020, 0x0322,\n    0x0020, 0x02C2, 0x0020, 0x02E2, 0x0020, 0x0302,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x03A9,\n    0x0020, 0x0262, 0x0020, 0x0282, 0x0020, 0x02A2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0020, 0x0242,\n    0x0020, 0x01E2, 0x0020, 0x0202, 0x0020, 0x0222,\n};\n\nstatic const s16 anim_C0_values[] = {\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFD, 0xFFF6,\n    0xFFF0, 0xFFEB, 0xFFEC, 0xFFF2, 0xFFF8, 0xFFFE, 0x0000, 0x0000,\n    0x0000, 0x007A, 0x005F, 0x005A, 0x0067, 0x0074, 0x0082, 0x0090,\n    0x009D, 0x00A7, 0x00B0, 0x00B7, 0x00BA, 0x00BB, 0x00BB, 0x00BB,\n    0x00BB, 0x00BA, 0x00BA, 0x00BA, 0x00BB, 0x00BB, 0x00BC, 0x00BD,\n    0x00B8, 0x00AF, 0x00AD, 0x00AB, 0x00AB, 0x00AA, 0x00AA, 0x00AA,\n    0x00AA, 0xFFE8, 0xFFE6, 0xFFEA, 0xFFE9, 0xFFE9, 0xFFEA, 0xFFEC,\n    0xFFF4, 0xFFFD, 0x0005, 0x000B, 0x0017, 0x0017, 0x0017, 0x0017,\n    0x0017, 0x0017, 0x0017, 0x0017, 0x0016, 0x0012, 0x000D, 0x000A,\n    0x000D, 0x0014, 0x0011, 0x0009, 0x0005, 0x0001, 0x0000, 0x0000,\n    0x0000, 0x3FFF, 0x00AB, 0x00B3, 0x00B8, 0x00B9, 0x00B3, 0x00A9,\n    0x009C, 0x008D, 0x007E, 0x0070, 0x0064, 0x005C, 0x0058, 0x0058,\n    0x005A, 0x005C, 0x005E, 0x005F, 0x005C, 0x0056, 0x004F, 0x0047,\n    0x003E, 0x0035, 0x002B, 0x0021, 0x0018, 0x0010, 0x0009, 0x0004,\n    0x0001, 0x0000, 0xF985, 0xF986, 0xF986, 0xF986, 0xF986, 0xF985,\n    0xF984, 0xF983, 0xF983, 0xF982, 0xF981, 0xF981, 0xF981, 0xF981,\n    0xF981, 0xF981, 0xF981, 0xF981, 0xF981, 0xF980, 0xF980, 0xF980,\n    0xF97F, 0xF97F, 0xF97E, 0xF97E, 0xF97D, 0xF97D, 0xF97C, 0xF97C,\n    0xF97C, 0xF97C, 0xE957, 0xE924, 0xE902, 0xE8FF, 0xE921, 0xE960,\n    0xE9B3, 0xEA10, 0xEA70, 0xEAC9, 0xEB14, 0xEB47, 0xEB5D, 0xEB5F,\n    0xEB54, 0xEB44, 0xEB37, 0xEB35, 0xEB47, 0xEB69, 0xEB96, 0xEBC9,\n    0xEC02, 0xEC3E, 0xEC7B, 0xECB6, 0xECEF, 0xED21, 0xED4D, 0xED6E,\n    0xED84, 0xED8C, 0xDDCD, 0xDA71, 0xD986, 0xDB0F, 0xDE3F, 0xE2AD,\n    0xE7ED, 0xED96, 0xF33D, 0xF878, 0xFCDD, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFB0D, 0xF3B3, 0xEB13,\n    0xE24C, 0xDA81, 0xD4D0, 0xD11A, 0xCE62, 0xCC81, 0xCB50, 0xCAA7,\n    0xCA5F, 0xCA4F, 0xE392, 0xD662, 0xCCF0, 0xCA09, 0xC7BE, 0xC5F4,\n    0xC496, 0xC38A, 0xC2B8, 0xC208, 0xC163, 0xC0B1, 0xBFC6, 0xBEB7,\n    0xBDC8, 0xBD3F, 0xBD5F, 0xBE6E, 0xC0B1, 0xC430, 0xC8A3, 0xCDD3,\n    0xD389, 0xD98E, 0xDFAC, 0xE5AA, 0xEB53, 0xF070, 0xF4C9, 0xF828,\n    0xFA57, 0xFB1D, 0xC69C, 0xD296, 0xD99F, 0xDA34, 0xD9CA, 0xD898,\n    0xD6DA, 0xD4C9, 0xD29F, 0xD096, 0xCEE9, 0xCDD0, 0xCD3F, 0xCCF7,\n    0xCCEA, 0xCD07, 0xCD42, 0xCD8A, 0xCDD0, 0xCE1E, 0xCE80, 0xCEF3,\n    0xCF71, 0xCFF6, 0xD07D, 0xD102, 0xD17F, 0xD1F0, 0xD250, 0xD29B,\n    0xD2CB, 0xD2DC, 0xE8D2, 0xF76E, 0x01C9, 0x0566, 0x0858, 0x0AB9,\n    0x0CA1, 0x0E29, 0x0F6A, 0x107B, 0x1177, 0x1275, 0x1398, 0x14C7,\n    0x15C1, 0x1644, 0x160F, 0x14DF, 0x1275, 0x0EC2, 0x0A0E, 0x0492,\n    0xFE89, 0xF82C, 0xF1B6, 0xEB60, 0xE564, 0xDFFC, 0xDB64, 0xD7D3,\n    0xD585, 0xD4B4, 0xE9FF, 0xE9D4, 0xE9E1, 0xEA2C, 0xEAAE, 0xEB59,\n    0xEC1E, 0xECEF, 0xEDBF, 0xEE7F, 0xEF20, 0xEF95, 0xEFCE, 0xEFD3,\n    0xEFB7, 0xEF8F, 0xEF6F, 0xEF6A, 0xEF95, 0xEFED, 0xF05C, 0xF0DD,\n    0xF16C, 0xF203, 0xF29B, 0xF331, 0xF3BF, 0xF43E, 0xF4AB, 0xF4FF,\n    0xF536, 0xF549, 0xD616, 0xD129, 0xCF98, 0xD15D, 0xD549, 0xDAD5,\n    0xE175, 0xE8A1, 0xEFCF, 0xF674, 0xFC08, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xF9CD, 0xF082, 0xE5A6,\n    0xDABD, 0xD14C, 0xCAD8, 0xC768, 0xC5B5, 0xC54F, 0xC5C4, 0xC6A3,\n    0xC77C, 0xC7DD, 0x52EE, 0x46BD, 0x3FBD, 0x3F09, 0x3F61, 0x4088,\n    0x4243, 0x4455, 0x4682, 0x4890, 0x4A40, 0x4B58, 0x4C3D, 0x4D4F,\n    0x4E45, 0x4ED5, 0x4EB9, 0x4DA7, 0x4B58, 0x4363, 0x36B8, 0x2D13,\n    0x2775, 0x21D2, 0x1C4F, 0x1711, 0x123C, 0x0DF6, 0x0A63, 0x07A7,\n    0x05E8, 0x054B, 0x3612, 0x299A, 0x226F, 0x21DF, 0x2264, 0x23BE,\n    0x25AF, 0x27F8, 0x2A5B, 0x2C98, 0x2E72, 0x2FA9, 0x3044, 0x3083,\n    0x307E, 0x304E, 0x300A, 0x2FCB, 0x2FA9, 0x2F98, 0x2F75, 0x2F38,\n    0x2EE0, 0x2E7A, 0x2E0A, 0x2D97, 0x2D26, 0x2CBC, 0x2C60, 0x2C17,\n    0x2BE7, 0x2BD6, 0x1A14, 0x0E1A, 0x0770, 0x074D, 0x0846, 0x0A19,\n    0x0C82, 0x0F41, 0x1212, 0x14B4, 0x16E3, 0x185F, 0x1989, 0x1AC0,\n    0x1BC2, 0x1C4A, 0x1C15, 0x1ADD, 0x185F, 0x0FEF, 0x027F, 0xF837,\n    0xF228, 0xEC0E, 0xE613, 0xE05F, 0xDB1B, 0xD671, 0xD288, 0xCF8B,\n    0xCDA2, 0xCCF6, 0x006A, 0x0080, 0x0058, 0xFFBE, 0xFEFC, 0xFE33,\n    0xFD82, 0xFD09, 0xFD4D, 0xFE1A, 0xFF38, 0x0010, 0x0010, 0x0010,\n    0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0xFEA1, 0xFCE0, 0xFC0C,\n    0xFBD5, 0xFC5B, 0xFD36, 0xFDFC, 0xFEA2, 0xFF4A, 0xFFCC, 0x0000,\n    0x0000, 0x0000, 0xFF43, 0xFF43, 0xFF49, 0xFF56, 0xFF68, 0xFF79,\n    0xFF88, 0xFF8F, 0xFF7C, 0xFF5C, 0xFF44, 0xFF35, 0xFF3E, 0xFF5A,\n    0xFF7B, 0xFF95, 0xFF9A, 0xFF7F, 0xFF35, 0xFDC8, 0xFBD2, 0xFA0E,\n    0xF904, 0xF984, 0xFAA1, 0xFBBB, 0xFCC4, 0xFDE6, 0xFED0, 0xFF30,\n    0xFF30, 0xFF30, 0xB937, 0xB893, 0xB836, 0xB8E2, 0xB9C2, 0xBAC9,\n    0xBBEC, 0xBD1D, 0xBE8F, 0xC0AC, 0xC470, 0xC74A, 0xC74A, 0xC74A,\n    0xC74A, 0xC74A, 0xC74A, 0xC74A, 0xC74A, 0xC652, 0xC493, 0xC1A8,\n    0xBF76, 0xBFBB, 0xC0F3, 0xC27C, 0xC478, 0xC6E8, 0xC8F9, 0xC9D8,\n    0xC9D8, 0xC9D8, 0x484B, 0x5326, 0x5703, 0x52D4, 0x4C0E, 0x4389,\n    0x3A1B, 0x309C, 0x27E2, 0x1E46, 0x1464, 0x0E7D, 0x0E7D, 0x0E7D,\n    0x0E7D, 0x0E7D, 0x0E7D, 0x0E7D, 0x0E7D, 0x0F0A, 0x11E7, 0x1907,\n    0x21A1, 0x27A4, 0x2665, 0x22B0, 0x2120, 0x1FB6, 0x1EAF, 0x1E4A,\n    0x1E4A, 0x1E4A, 0x02F5, 0x005E, 0xFF8D, 0x00D2, 0x028C, 0x0498,\n    0x06D8, 0x0929, 0x0B6B, 0x0D7D, 0x0F3E, 0x108F, 0x108F, 0x108F,\n    0x108F, 0x108F, 0x108F, 0x108F, 0x108F, 0x11F6, 0x1390, 0x13A5,\n    0x13B2, 0x149D, 0x15CF, 0x16F9, 0x1833, 0x1987, 0x1A99, 0x1B09,\n    0x1B09, 0x1B09, 0x0722, 0x05FA, 0x0509, 0x0491, 0x041C, 0x03AD,\n    0x0343, 0x02E1, 0x0287, 0x0236, 0x01F0, 0x01B6, 0x01B6, 0x01B6,\n    0x01B6, 0x01B6, 0x01B6, 0x01B6, 0x01B6, 0x0154, 0x0163, 0x02F8,\n    0x053F, 0x07C3, 0x0A6B, 0x0C96, 0x0E48, 0x0FC9, 0x10DB, 0x1144,\n    0x1144, 0x1144, 0x8D4C, 0x82E8, 0x7F85, 0x8378, 0x8921, 0x900A,\n    0x97BB, 0x9FBA, 0xA790, 0xAEC3, 0xB4DB, 0xB95F, 0xB95F, 0xB95F,\n    0xB95F, 0xB95F, 0xB95F, 0xB95F, 0xB95F, 0xB911, 0xB7E3, 0xB4AD,\n    0xB14C, 0xAF3D, 0xADA5, 0xAC9D, 0xAC28, 0xAC15, 0xAC2F, 0xAC44,\n    0xAC44, 0xAC44, 0xFFFD, 0xFFFA, 0x0000, 0x0018, 0x0035, 0x0054,\n    0x0072, 0x008D, 0x00AB, 0x00AA, 0x0050, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFF9C, 0xFEF9, 0xFE16,\n    0xFCEF, 0xFA92, 0xF846, 0xF97A, 0xFB5E, 0xFD83, 0xFF46, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xFFFF, 0x0000, 0x0004, 0x000A, 0x0010,\n    0x0017, 0x001E, 0x0029, 0x002D, 0x0016, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFF95, 0xFEE7, 0xFE49,\n    0xFE0E, 0xFF17, 0x0076, 0x0053, 0x0038, 0x001D, 0x0008, 0x0000,\n    0x0000, 0x0000, 0xB529, 0xB44F, 0xB3EA, 0xB50D, 0xB689, 0xB837,\n    0xB9F1, 0xBB91, 0xBCE3, 0xBE93, 0xC1FF, 0xC49E, 0xC49E, 0xC49E,\n    0xC49E, 0xC49E, 0xC49E, 0xC49E, 0xC49E, 0xC57B, 0xC6E4, 0xC813,\n    0xC843, 0xC53D, 0xC135, 0xC082, 0xC018, 0xBFAF, 0xBF60, 0xBF40,\n    0xBF40, 0xBF40, 0x49C7, 0x5530, 0x59AB, 0x5551, 0x4E64, 0x45BB,\n    0x3C2E, 0x3294, 0x29C1, 0x2019, 0x1638, 0x1055, 0x1055, 0x1055,\n    0x1055, 0x1055, 0x1055, 0x1055, 0x1055, 0x10DF, 0x11B8, 0x1207,\n    0x1372, 0x18B5, 0x1DBC, 0x2023, 0x2232, 0x23CD, 0x24D8, 0x2537,\n    0x2537, 0x2537, 0xFF6C, 0x00E9, 0x013C, 0x0059, 0xFF2A, 0xFDC3,\n    0xFC3A, 0xFAA6, 0xF91D, 0xF7B5, 0xF683, 0xF59D, 0xF59D, 0xF59D,\n    0xF59D, 0xF59D, 0xF59D, 0xF59D, 0xF59D, 0xF405, 0xF171, 0xEE59,\n    0xEB36, 0xE769, 0xE39D, 0xE051, 0xDCC5, 0xD98C, 0xD733, 0xD64A,\n    0xD64A, 0xD64A, 0xFAAA, 0xFA82, 0xFAA9, 0xFB1B, 0xFBA6, 0xFC40,\n    0xFCE4, 0xFD88, 0xFE27, 0xFEB7, 0xFF33, 0xFF91, 0xFF91, 0xFF91,\n    0xFF91, 0xFF91, 0xFF91, 0xFF91, 0xFF91, 0xFD72, 0xFA01, 0xF634,\n    0xF2FE, 0xF117, 0xF001, 0xEEFF, 0xEDFE, 0xED1C, 0xEC7D, 0xEC41,\n    0xEC41, 0xEC41, 0x8F75, 0x8489, 0x80C9, 0x84A3, 0x8A3D, 0x911D,\n    0x98CA, 0xA0C8, 0xA89F, 0xAFD4, 0xB5EC, 0xBA6F, 0xBA6F, 0xBA6F,\n    0xBA6F, 0xBA6F, 0xBA6F, 0xBA6F, 0xBA6F, 0xB999, 0xB83D, 0xB6EC,\n    0xB63B, 0xB7BA, 0xB946, 0xB8D6, 0xB7ED, 0xB6DD, 0xB5FC, 0xB59E,\n    0xB59E, 0xB59E, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001,\n    0x4171, 0xBF5F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFF9, 0xFFE7,\n    0xFFD3, 0xFFC3, 0xFFC1, 0xFFD3, 0x0000, 0x0067, 0x0109, 0x01C3,\n    0x0274, 0x02F8, 0x032D, 0x02DB, 0x0211, 0x0120, 0x0055, 0x0000,\n    0x0000, 0x0000, 0xFFDB, 0xFFEE, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0006,\n    0x000B, 0x000F, 0x0010, 0x000B, 0x0000, 0xFFE6, 0xFFBD, 0xFF8D,\n    0xFF60, 0xFF3D, 0xFF2D, 0xFF40, 0xFF74, 0xFFB3, 0xFFEA, 0x0000,\n    0x0000, 0x0000, 0x0557, 0x05BF, 0x0627, 0x0627, 0x0627, 0x0627,\n    0x0627, 0x0627, 0x0627, 0x0627, 0x0627, 0x0627, 0x0634, 0x0653,\n    0x0676, 0x0690, 0x0695, 0x0676, 0x0627, 0x0591, 0x04B5, 0x03AF,\n    0x0296, 0x0186, 0x0093, 0xFF88, 0xFE6A, 0xFD66, 0xFCAA, 0xFC62,\n    0xFC62, 0xFC62, 0x002B, 0x0017, 0x000B, 0x000E, 0x0013, 0x0019,\n    0x001F, 0x0027, 0x002E, 0x0034, 0x003A, 0x003E, 0x0041, 0x0042,\n    0x0042, 0x0042, 0x0041, 0x003F, 0x003E, 0x003B, 0x0036, 0x0030,\n    0x002A, 0x0024, 0x001D, 0x0017, 0x0010, 0x000A, 0x0004, 0x0000,\n    0x0000, 0x0000, 0xFFE9, 0xFFD2, 0xFFC2, 0xFFC8, 0xFFCF, 0xFFD8,\n    0xFFE2, 0xFFEB, 0xFFF5, 0xFFFD, 0x0004, 0x0009, 0x0003, 0xFFF1,\n    0xFFD9, 0xFFC6, 0xFFC2, 0xFFD5, 0x0009, 0x00F3, 0x024E, 0x02E1,\n    0x0221, 0x00BD, 0xFF51, 0xFE78, 0xFE75, 0xFEED, 0xFF8D, 0x0000,\n    0x0010, 0x0000, 0x1E92, 0x2990, 0x2D38, 0x28E3, 0x22BD, 0x1B47,\n    0x1300, 0x0A69, 0x0201, 0xFA49, 0xF3BE, 0xEEE3, 0xEBFE, 0xEABA,\n    0xEAB3, 0xEB80, 0xECBC, 0xEDFF, 0xEEE3, 0xF01F, 0xF23E, 0xF49E,\n    0xF70B, 0xF9A9, 0xFC53, 0xFEE7, 0x0180, 0x0426, 0x0694, 0x0884,\n    0x08EA, 0x0884, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x002A, 0x0070, 0x007F,\n    0x0000, 0xFD22, 0xFAB5, 0xFB00, 0xFBC1, 0xFCCA, 0xFDEB, 0xFEF4,\n    0xFFB5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000F, 0x0032,\n    0x005A, 0x0079, 0x007E, 0x005A, 0x0000, 0xFEE1, 0xFD0D, 0xFB5F,\n    0xFAB2, 0xFD83, 0x00A7, 0x0115, 0x0103, 0x00A9, 0x003F, 0x0000,\n    0xFFFB, 0x0000, 0x411C, 0x4192, 0x41CF, 0x41DD, 0x41C4, 0x418F,\n    0x4148, 0x40F7, 0x40A6, 0x4060, 0x402D, 0x4017, 0x4014, 0x4012,\n    0x4011, 0x4012, 0x4013, 0x4015, 0x4017, 0x401B, 0x4022, 0x4029,\n    0x4031, 0x4038, 0x403F, 0x4046, 0x404D, 0x4055, 0x405C, 0x4062,\n    0x4066, 0x4067,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_C1.inc.c",
    "content": "static const struct Animation anim_C1[] = {\n    1,\n    189,\n    0,\n    0,\n    0x24,\n    ANIMINDEX_NUMPARTS(anim_C1_indices),\n    anim_C1_values,\n    anim_C1_indices,\n    0,\n};\n\n\nstatic const u16 anim_C1_indices[] = {\n    0x0001, 0x0000, 0x0024, 0x0001, 0x0024, 0x0025, 0x0001, 0x0000, 0x0001, 0x0049, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0024, 0x04AE,\n    0x0024, 0x0466, 0x0001, 0x0000, 0x0024, 0x048A,\n    0x0024, 0x03FA, 0x0024, 0x041E, 0x0024, 0x0442,\n    0x0001, 0x03F6, 0x0001, 0x03F7, 0x0001, 0x03F8,\n    0x0024, 0x00DA, 0x0024, 0x00FE, 0x0024, 0x0122,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0024, 0x00B6,\n    0x0024, 0x004A, 0x0024, 0x006E, 0x0024, 0x0092,\n    0x0001, 0x03F2, 0x0001, 0x03F3, 0x0001, 0x03F4,\n    0x0024, 0x018E, 0x0024, 0x01B2, 0x0024, 0x01D6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0024, 0x016A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0024, 0x0146,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x03F5,\n    0x0024, 0x0386, 0x0024, 0x03AA, 0x0024, 0x03CE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0024, 0x0362,\n    0x0024, 0x02F6, 0x0024, 0x031A, 0x0024, 0x033E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x03F9,\n    0x0024, 0x028A, 0x0024, 0x02AE, 0x0024, 0x02D2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0024, 0x0266,\n    0x0024, 0x01FA, 0x0024, 0x021E, 0x0024, 0x0242,\n};\n\nstatic const s16 anim_C1_values[] = {\n    0x0000, 0x007C, 0x007D, 0x007E, 0x0080, 0x0082, 0x0085, 0x0087,\n    0x008A, 0x008C, 0x008E, 0x008F, 0x0090, 0x0090, 0x0091, 0x0091,\n    0x0093, 0x0095, 0x0095, 0x0095, 0x0095, 0x0094, 0x0094, 0x0094,\n    0x0094, 0x0093, 0x0093, 0x0092, 0x0092, 0x0092, 0x0091, 0x0091,\n    0x0090, 0x008F, 0x008F, 0x008E, 0x008D, 0x002B, 0x0035, 0x0038,\n    0x0032, 0x0027, 0x0018, 0x0007, 0xFFF9, 0xFFED, 0xFFE6, 0xFFE8,\n    0xFFF2, 0x0000, 0x000C, 0x0016, 0x001D, 0x0021, 0x0021, 0x0020,\n    0x001F, 0x001D, 0x001B, 0x001A, 0x0018, 0x0016, 0x0014, 0x0013,\n    0x0011, 0x000F, 0x000D, 0x000A, 0x0008, 0x0006, 0x0004, 0x0002,\n    0x0000, 0x3FFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFD, 0xFFFB, 0xFFFC,\n    0x0000, 0x0008, 0x0011, 0x001A, 0x0025, 0x0030, 0x003B, 0x0047,\n    0x0052, 0x005E, 0x0069, 0x0074, 0x007E, 0x0087, 0xF97C, 0xF97C,\n    0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C,\n    0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C,\n    0xF97C, 0xF97B, 0xF97B, 0xF97B, 0xF97C, 0xF97C, 0xF97D, 0xF97D,\n    0xF97E, 0xF97E, 0xF97F, 0xF980, 0xF980, 0xF981, 0xF981, 0xF982,\n    0xF983, 0xF983, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED93, 0xEDA2, 0xEDAE, 0xEDAA,\n    0xED8C, 0xED59, 0xED20, 0xECE2, 0xECA1, 0xEC5C, 0xEC15, 0xEBCC,\n    0xEB84, 0xEB3C, 0xEAF5, 0xEAB1, 0xEA71, 0xEA35, 0xFABA, 0xFB09,\n    0xFB95, 0xFC50, 0xFD2D, 0xFE1F, 0xFF18, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFF2A, 0xFD12,\n    0xF5A2, 0xE759, 0xD71F, 0xC9DB, 0xC474, 0xC585, 0xC835, 0xCC3C,\n    0xD152, 0xD72D, 0xDD87, 0xE415, 0xEA91, 0xF0B2, 0xF630, 0xFAC1,\n    0xFE1F, 0x0000, 0x2438, 0x1DA2, 0x169D, 0x0F31, 0x0766, 0xFF44,\n    0xF6D1, 0xEE16, 0xE51A, 0xDBE5, 0xD27E, 0xC8ED, 0xBF3A, 0xB56C,\n    0xAB8A, 0xA19E, 0x97AD, 0x8DC0, 0x81FF, 0x7397, 0x6423, 0x5536,\n    0x4865, 0x3B9D, 0x2F44, 0x28A4, 0x2D05, 0x3FB9, 0x5CA1, 0x7DDA,\n    0x9D88, 0xB5C3, 0xC4DC, 0xCE99, 0xD54A, 0xDB40, 0xEF8D, 0xEEB4,\n    0xED9E, 0xEC52, 0xEAD8, 0xE939, 0xE77D, 0xE5AD, 0xE3D0, 0xE1F0,\n    0xE013, 0xDE44, 0xDC89, 0xDAEC, 0xD975, 0xD82B, 0xD718, 0xD643,\n    0xD78C, 0xDB5A, 0xDF82, 0xE1DA, 0xE038, 0xD762, 0xC90F, 0xBA78,\n    0xB0D7, 0xACFA, 0xAB9B, 0xABD3, 0xACBD, 0xAD75, 0xAE30, 0xAF9F,\n    0xB191, 0xB3D4, 0x5BBC, 0x633F, 0x6BB2, 0x7501, 0x7F18, 0x89E6,\n    0x9553, 0xA14C, 0xADBF, 0xBA98, 0xC7C3, 0xD52C, 0xE2C1, 0xF06D,\n    0xFE1D, 0x0BBC, 0x1938, 0x267D, 0x362F, 0x496C, 0x5DD8, 0x7118,\n    0x80D3, 0x8E1B, 0x98FE, 0x9D8E, 0x97DC, 0x84C7, 0x67B0, 0x4674,\n    0x26E5, 0x0EDB, 0x001A, 0xF6EC, 0xF0E9, 0xEBAB, 0xF549, 0xF549,\n    0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549,\n    0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549,\n    0xF55C, 0xF583, 0xF59F, 0xF596, 0xF549, 0xF4CA, 0xF43B, 0xF3A0,\n    0xF2FB, 0xF24E, 0xF19B, 0xF0E5, 0xF02F, 0xEF7A, 0xEEC9, 0xEE1E,\n    0xED7C, 0xECE5, 0xF0EF, 0xF0E5, 0xF12A, 0xF1AF, 0xF265, 0xF33D,\n    0xF42A, 0xF51D, 0xF606, 0xF6D9, 0xF785, 0xF7FD, 0xF832, 0xF815,\n    0xF798, 0xF6AC, 0xF543, 0xF34F, 0xEC4B, 0xDED5, 0xCF8E, 0xC319,\n    0xBE15, 0xBF35, 0xC1E6, 0xC5E1, 0xCADF, 0xD099, 0xD6CA, 0xDD2A,\n    0xE372, 0xE95D, 0xEEA4, 0xF2FF, 0xF629, 0xF7DA, 0xCEB4, 0xD4D5,\n    0xDBD2, 0xE398, 0xEC16, 0xF537, 0xFEEA, 0x0919, 0x13B6, 0x1EAB,\n    0x29E6, 0x3554, 0x40E2, 0x4C7E, 0x5815, 0x6393, 0x6EE7, 0x79FC,\n    0x8911, 0x9CFF, 0xB0B0, 0xBF0D, 0xC2FC, 0xB448, 0x9689, 0x7659,\n    0x6059, 0x5645, 0x5089, 0x4DC4, 0x4C96, 0x4B9E, 0x4BD0, 0x4E25,\n    0x514E, 0x53F6, 0x1730, 0x17AD, 0x185F, 0x1942, 0x1A4E, 0x1B7C,\n    0x1CC6, 0x1E25, 0x1F91, 0x2105, 0x2279, 0x23E7, 0x2547, 0x2693,\n    0x27C5, 0x28D5, 0x29BC, 0x2A75, 0x2A4D, 0x2907, 0x274C, 0x25C2,\n    0x2511, 0x25E5, 0x27BC, 0x297D, 0x2A0E, 0x28C8, 0x265B, 0x23B4,\n    0x21BD, 0x2161, 0x2391, 0x27C7, 0x2CB7, 0x3114, 0x59AB, 0x5F16,\n    0x65E4, 0x6DF8, 0x7734, 0x817C, 0x8CAD, 0x98AC, 0xA55A, 0xB29A,\n    0xC04D, 0xCE56, 0xDC95, 0xEAEF, 0xF943, 0x0774, 0x1565, 0x22F7,\n    0x35E2, 0x4FAB, 0x69EA, 0x7E33, 0x8620, 0x784D, 0x5922, 0x36CB,\n    0x1F76, 0x151B, 0x0F4B, 0x0CA0, 0x0BB1, 0x0B16, 0x0BE0, 0x0F17,\n    0x1341, 0x16E6, 0xFFD7, 0xFFFE, 0x001A, 0x002D, 0x0037, 0x003A,\n    0x0037, 0x002E, 0x0021, 0x0012, 0x0000, 0xFFEE, 0xFFDB, 0xFFCA,\n    0xFFBB, 0xFFAF, 0xFFA8, 0xFFA6, 0xFFAA, 0xFFB1, 0xFFB9, 0xFFC1,\n    0xFFC7, 0xFFC7, 0xFFC5, 0xFFC3, 0xFFC7, 0xFFCF, 0xFFD9, 0xFFE4,\n    0xFFF0, 0xFFFC, 0x0008, 0x0014, 0x0021, 0x002C, 0xFF43, 0xFF41,\n    0xFF40, 0xFF3F, 0xFF3F, 0xFF3F, 0xFF3F, 0xFF3F, 0xFF40, 0xFF41,\n    0xFF42, 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF46, 0xFF46, 0xFF46,\n    0xFF45, 0xFF44, 0xFF42, 0xFF40, 0xFF3E, 0xFF3E, 0xFF3D, 0xFF3E,\n    0xFF3E, 0xFF3F, 0xFF40, 0xFF40, 0xFF41, 0xFF42, 0xFF43, 0xFF44,\n    0xFF45, 0xFF46, 0xDF06, 0xE0F4, 0xE26A, 0xE375, 0xE41F, 0xE473,\n    0xE47D, 0xE446, 0xE3DA, 0xE344, 0xE28F, 0xE1C6, 0xE0F4, 0xE024,\n    0xDF60, 0xDEB4, 0xDE2B, 0xDDCF, 0xDD0C, 0xDB8D, 0xD9BB, 0xD801,\n    0xD6CB, 0xD6A2, 0xD72E, 0xD787, 0xD6C6, 0xD4FE, 0xD2EB, 0xD09C,\n    0xCE21, 0xCB8B, 0xC8E8, 0xC64B, 0xC3C2, 0xC15D, 0x1D4E, 0x1BEE,\n    0x1AF2, 0x1A53, 0x1A08, 0x1A09, 0x1A4F, 0x1AD2, 0x1B89, 0x1C6E,\n    0x1D78, 0x1E9F, 0x1FDB, 0x2125, 0x2275, 0x23C2, 0x2506, 0x2637,\n    0x28EC, 0x2DBA, 0x3314, 0x3771, 0x3944, 0x3670, 0x3021, 0x29B7,\n    0x2693, 0x2690, 0x2734, 0x2861, 0x29FA, 0x2BE2, 0x2DFA, 0x3026,\n    0x3249, 0x3444, 0x06E3, 0x067D, 0x0634, 0x05FB, 0x05C5, 0x0596,\n    0x056E, 0x0550, 0x053D, 0x0539, 0x0555, 0x0599, 0x05F1, 0x064C,\n    0x0697, 0x06BF, 0x06B2, 0x065F, 0x0592, 0x0440, 0x0291, 0x00AC,\n    0xFEB9, 0xFC39, 0xF93D, 0xF6C3, 0xF5CC, 0xF624, 0xF6E1, 0xF7EF,\n    0xF939, 0xFAA9, 0xFC2B, 0xFDAA, 0xFF11, 0x0049, 0xFFCA, 0xFF49,\n    0xFF31, 0xFF57, 0xFFA3, 0x0007, 0x0075, 0x00DD, 0x012F, 0x015E,\n    0x0167, 0x0157, 0x0136, 0x010C, 0x00DE, 0x00B5, 0x0096, 0x008A,\n    0x009E, 0x00CD, 0x0108, 0x013C, 0x0158, 0x014A, 0x011F, 0x00F2,\n    0x00E1, 0x00E0, 0x00D6, 0x00C9, 0x00C0, 0x00C0, 0x00D1, 0x00FA,\n    0x0140, 0x01AA, 0xC4ED, 0xC730, 0xC716, 0xC5C7, 0xC390, 0xC0D0,\n    0xBDE2, 0xBB25, 0xB8F3, 0xB7AB, 0xB77D, 0xB826, 0xB959, 0xBAC6,\n    0xBC1E, 0xBD14, 0xBD58, 0xBC9C, 0xB955, 0xB37A, 0xACFB, 0xA7CD,\n    0xA5DF, 0xAA14, 0xB2E4, 0xBBA0, 0xBF9C, 0xBF1A, 0xBD97, 0xBB44,\n    0xB84F, 0xB4E8, 0xB140, 0xAD84, 0xA9E6, 0xA695, 0x0030, 0x0056,\n    0x0072, 0x0084, 0x008F, 0x0093, 0x0090, 0x0089, 0x007D, 0x006E,\n    0x005E, 0x004C, 0x003B, 0x002A, 0x001B, 0x0010, 0x0008, 0x0006,\n    0x0006, 0x0005, 0x0005, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004,\n    0x0004, 0x0004, 0x0003, 0x0003, 0x0003, 0x0002, 0x0002, 0x0002,\n    0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xDD4C, 0xDF2D,\n    0xE0A0, 0xE1B0, 0xE265, 0xE2CA, 0xE2E8, 0xE2C9, 0xE275, 0xE1F8,\n    0xE15A, 0xE0A4, 0xDFE2, 0xDF1B, 0xDE5B, 0xDDA9, 0xDD11, 0xDC9B,\n    0xDB7B, 0xD946, 0xD698, 0xD40F, 0xD246, 0xD1E4, 0xD275, 0xD2ED,\n    0xD23F, 0xD07B, 0xCE6B, 0xCC20, 0xC9AA, 0xC719, 0xC47C, 0xC1E3,\n    0xBF5F, 0xBCFF, 0x2050, 0x214F, 0x22D7, 0x24D8, 0x2742, 0x2A03,\n    0x2D0B, 0x304A, 0x33AF, 0x372A, 0x3AA9, 0x3E1D, 0x4176, 0x44A1,\n    0x478F, 0x4A30, 0x4C72, 0x4E46, 0x4F06, 0x4E37, 0x4C04, 0x489A,\n    0x4426, 0x3C22, 0x3101, 0x2765, 0x23EF, 0x2640, 0x2A89, 0x3044,\n    0x36E9, 0x3DF4, 0x44DC, 0x4B1C, 0x502D, 0x5389, 0xF9E3, 0xFA5A,\n    0xFABD, 0xFAF3, 0xFB23, 0xFB4F, 0xFB79, 0xFBA0, 0xFBC7, 0xFBEE,\n    0xFC16, 0xFC42, 0xFC71, 0xFCA5, 0xFCDF, 0xFD20, 0xFD69, 0xFDBC,\n    0xFE71, 0xFF97, 0x00C2, 0x0186, 0x0177, 0xFFCC, 0xFCDF, 0xF9FE,\n    0xF873, 0xF82B, 0xF82B, 0xF866, 0xF8CE, 0xF955, 0xF9EE, 0xFA8C,\n    0xFB1F, 0xFB9C, 0x0049, 0x00D8, 0x00D9, 0x00A7, 0x0061, 0x000A,\n    0xFFA7, 0xFF39, 0xFEC6, 0xFE51, 0xFDDE, 0xFD70, 0xFD0A, 0xFCB1,\n    0xFC68, 0xFC33, 0xFC15, 0xFC13, 0xFCAA, 0xFE06, 0xFFA7, 0x0110,\n    0x01C5, 0x0154, 0x0010, 0xFEA4, 0xFDB4, 0xFD48, 0xFCF1, 0xFCAA,\n    0xFC71, 0xFC40, 0xFC15, 0xFBEB, 0xFBBF, 0xFB8D, 0xC4AB, 0xC5FB,\n    0xC49B, 0xC236, 0xBF7A, 0xBC75, 0xB936, 0xB5CD, 0xB247, 0xAEB4,\n    0xAB23, 0xA7A2, 0xA440, 0xA10C, 0x9E14, 0x9B68, 0x9917, 0x972E,\n    0x96CA, 0x9887, 0x9BB6, 0x9FA7, 0xA3AB, 0xA8FC, 0xAFB8, 0xB58A,\n    0xB81B, 0xB7D8, 0xB6D1, 0xB52B, 0xB308, 0xB08B, 0xADD8, 0xAB11,\n    0xA85A, 0xA5D6, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001,\n    0x4171, 0xBF5F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0xFFE7, 0xFFB4, 0xFF8D, 0xFF9A,\n    0x0000, 0x014E, 0x0354, 0x0518, 0x05A2, 0x04FE, 0x03F0, 0x0296,\n    0x010F, 0xFF79, 0xFDF0, 0xFC92, 0xFB7E, 0xFAD2, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x000E, 0x002C, 0x0043, 0x003B, 0x0000, 0xFF40, 0xFE16, 0xFD0F,\n    0xFCB8, 0xFD08, 0xFD90, 0xFE42, 0xFF0D, 0xFFE1, 0x00AF, 0x0169,\n    0x01FE, 0x025E, 0xEB56, 0xED2B, 0xEF1F, 0xF12E, 0xF352, 0xF586,\n    0xF7C8, 0xFA11, 0xFC5D, 0xFEA9, 0x00ED, 0x0329, 0x0555, 0x076E,\n    0x096F, 0x0B54, 0x0D17, 0x0EB5, 0x0F6F, 0x0EF6, 0x0DEC, 0x0CF3,\n    0x0CAD, 0x0D76, 0x0EDE, 0x1054, 0x1149, 0x11D9, 0x1277, 0x1314,\n    0x13A1, 0x140F, 0x144E, 0x144F, 0x1403, 0x135B, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0xFFFF, 0xFFFF, 0x0000, 0x0002, 0x0004, 0x0007,\n    0x000A, 0x000D, 0x0010, 0x0013, 0x0017, 0x001A, 0x001D, 0x0020,\n    0x0023, 0x0025, 0xF3C6, 0xEAC3, 0xEA5E, 0xEA50, 0xEA8E, 0xEB10,\n    0xEBCB, 0xECB6, 0xEDC8, 0xEEF7, 0xF03A, 0xF187, 0xF2D4, 0xF419,\n    0xF54C, 0xF662, 0xF753, 0xF816, 0xFE42, 0x0C17, 0x1C87, 0x2A81,\n    0x30F5, 0x31AA, 0x31D1, 0x317A, 0x30B7, 0x2F97, 0x2E2B, 0x2C83,\n    0x2AB0, 0x2888, 0x23BE, 0x1D96, 0x17C6, 0x1326, 0x4563, 0x4622,\n    0x48CC, 0x4D46, 0x5376, 0x5B40, 0x648C, 0x6F3E, 0x7B3C, 0x886F,\n    0x96B6, 0xA5FA, 0xB621, 0xC711, 0xD8AE, 0xEADF, 0xFD89, 0x1090,\n    0x23DE, 0x3755, 0x4ADC, 0x5E59, 0x71B1, 0x84CC, 0x978B, 0xA9D5,\n    0xBB91, 0xCCA4, 0xDCF5, 0xEC67, 0xFAE2, 0x084A, 0x1485, 0x1F7A,\n    0x290E, 0x3126,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_C2.inc.c",
    "content": "static const struct Animation anim_C2[] = {\n    0,\n    189,\n    0,\n    0,\n    0x5A,\n    ANIMINDEX_NUMPARTS(anim_C2_indices),\n    anim_C2_values,\n    anim_C2_indices,\n    0,\n};\n\n\nstatic const u16 anim_C2_indices[] = {\n    0x0001, 0x0000, 0x005A, 0x0001, 0x005A, 0x005B, 0x0001, 0x0000, 0x0001, 0x00B5, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005A, 0x0A3D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0A3C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005A, 0x09E2,\n    0x0001, 0x09DE, 0x0001, 0x09DF, 0x0001, 0x09E0,\n    0x005A, 0x021E, 0x005A, 0x0278, 0x005A, 0x02D2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005A, 0x01C4,\n    0x005A, 0x00B6, 0x005A, 0x0110, 0x005A, 0x016A,\n    0x0001, 0x09DA, 0x0001, 0x09DB, 0x0001, 0x09DC,\n    0x005A, 0x03E0, 0x005A, 0x043A, 0x005A, 0x0494,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005A, 0x0386,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005A, 0x032C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x09DD,\n    0x005A, 0x08CC, 0x005A, 0x0926, 0x005A, 0x0980,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005A, 0x0872,\n    0x005A, 0x0764, 0x005A, 0x07BE, 0x005A, 0x0818,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x09E1,\n    0x005A, 0x0656, 0x005A, 0x06B0, 0x005A, 0x070A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x005A, 0x05FC,\n    0x005A, 0x04EE, 0x005A, 0x0548, 0x005A, 0x05A2,\n};\n\nstatic const s16 anim_C2_values[] = {\n    0x0000, 0x00AC, 0x00AB, 0x00AB, 0x00A9, 0x00A8, 0x00A6, 0x00A4,\n    0x00A2, 0x00A0, 0x009E, 0x009D, 0x009B, 0x009A, 0x0099, 0x0099,\n    0x0099, 0x009A, 0x009B, 0x009C, 0x009E, 0x00A0, 0x00A1, 0x00A3,\n    0x00A5, 0x00A7, 0x00A8, 0x00AA, 0x00AB, 0x00AB, 0x00AC, 0x00AB,\n    0x00AB, 0x00A9, 0x00A8, 0x00A6, 0x00A4, 0x00A2, 0x00A0, 0x009E,\n    0x009C, 0x009B, 0x0099, 0x0098, 0x0097, 0x0097, 0x0097, 0x0098,\n    0x0099, 0x009B, 0x009C, 0x009E, 0x00A0, 0x00A2, 0x00A4, 0x00A6,\n    0x00A8, 0x00A9, 0x00AB, 0x00AB, 0x00AC, 0x00AB, 0x00AB, 0x00A9,\n    0x00A8, 0x00A6, 0x00A4, 0x00A2, 0x00A0, 0x009E, 0x009C, 0x009B,\n    0x0099, 0x0098, 0x0097, 0x0097, 0x0097, 0x0098, 0x0099, 0x009A,\n    0x009B, 0x009C, 0x009E, 0x00A0, 0x00A1, 0x00A3, 0x00A5, 0x00A7,\n    0x00A8, 0x00AA, 0x00AB, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000,\n    0x0000, 0x0000, 0x0001, 0x0001, 0x0002, 0x0002, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0002, 0x0002, 0x0001,\n    0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF,\n    0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0001, 0x0001, 0x0002, 0x0002, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0003, 0x0002, 0x0002, 0x0001, 0x0001, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n    0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001,\n    0x0002, 0x0002, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0003, 0x0002, 0x0002, 0x0002, 0x0001, 0x0001, 0x0000,\n    0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0x3FFF, 0x0000, 0x0003,\n    0x000D, 0x001D, 0x0031, 0x0049, 0x0063, 0x007D, 0x0098, 0x00B2,\n    0x00C9, 0x00DD, 0x00ED, 0x00F7, 0x00FB, 0x00F8, 0x00EF, 0x00E1,\n    0x00CF, 0x00BA, 0x00A2, 0x008A, 0x0071, 0x0058, 0x0041, 0x002C,\n    0x001A, 0x000C, 0x0003, 0x0000, 0x0003, 0x000C, 0x001A, 0x002C,\n    0x0041, 0x0058, 0x0071, 0x008A, 0x00A2, 0x00BA, 0x00CF, 0x00E1,\n    0x00EF, 0x00F8, 0x00FB, 0x00F8, 0x00EF, 0x00E1, 0x00CF, 0x00BA,\n    0x00A2, 0x008A, 0x0071, 0x0058, 0x0041, 0x002C, 0x001A, 0x000C,\n    0x0003, 0x0000, 0x0003, 0x000C, 0x001A, 0x002C, 0x0041, 0x0058,\n    0x0071, 0x008A, 0x00A2, 0x00BA, 0x00CF, 0x00E1, 0x00EF, 0x00F8,\n    0x00FB, 0x00F8, 0x00EF, 0x00E1, 0x00D0, 0x00BB, 0x00A4, 0x008B,\n    0x0073, 0x005A, 0x0043, 0x002E, 0x001D, 0x000F, 0x0006, 0x0003,\n    0xF97C, 0xF97C, 0xF97D, 0xF97E, 0xF97F, 0xF981, 0xF983, 0xF985,\n    0xF987, 0xF989, 0xF98B, 0xF98C, 0xF98E, 0xF98E, 0xF98F, 0xF98E,\n    0xF98E, 0xF98D, 0xF98B, 0xF98A, 0xF988, 0xF986, 0xF984, 0xF982,\n    0xF981, 0xF97F, 0xF97E, 0xF97D, 0xF97C, 0xF97C, 0xF97C, 0xF97D,\n    0xF97E, 0xF97F, 0xF981, 0xF982, 0xF984, 0xF986, 0xF988, 0xF98A,\n    0xF98B, 0xF98D, 0xF98E, 0xF98E, 0xF98F, 0xF98E, 0xF98E, 0xF98D,\n    0xF98B, 0xF98A, 0xF988, 0xF986, 0xF984, 0xF982, 0xF981, 0xF97F,\n    0xF97E, 0xF97D, 0xF97C, 0xF97C, 0xF97C, 0xF97D, 0xF97E, 0xF97F,\n    0xF981, 0xF982, 0xF984, 0xF986, 0xF988, 0xF98A, 0xF98B, 0xF98D,\n    0xF98E, 0xF98E, 0xF98F, 0xF98E, 0xF98E, 0xF98D, 0xF98B, 0xF98A,\n    0xF988, 0xF986, 0xF984, 0xF983, 0xF981, 0xF97F, 0xF97E, 0xF97D,\n    0xF97C, 0xF97C, 0xED8C, 0xED74, 0xED34, 0xECD0, 0xEC51, 0xEBBE,\n    0xEB1C, 0xEA73, 0xE9CB, 0xE929, 0xE895, 0xE816, 0xE7B3, 0xE772,\n    0xE75B, 0xE76F, 0xE7A8, 0xE800, 0xE871, 0xE8F6, 0xE989, 0xEA24,\n    0xEAC2, 0xEB5E, 0xEBF1, 0xEC76, 0xECE7, 0xED3F, 0xED77, 0xED8C,\n    0xED77, 0xED3F, 0xECE7, 0xEC76, 0xEBF1, 0xEB5E, 0xEAC2, 0xEA24,\n    0xE989, 0xE8F6, 0xE871, 0xE800, 0xE7A8, 0xE76F, 0xE75B, 0xE76F,\n    0xE7A8, 0xE800, 0xE871, 0xE8F6, 0xE989, 0xEA24, 0xEAC2, 0xEB5E,\n    0xEBF1, 0xEC76, 0xECE7, 0xED3F, 0xED77, 0xED8C, 0xED77, 0xED3F,\n    0xECE7, 0xEC76, 0xEBF2, 0xEB5F, 0xEAC4, 0xEA26, 0xE98A, 0xE8F7,\n    0xE872, 0xE801, 0xE7A9, 0xE770, 0xE75B, 0xE76E, 0xE7A6, 0xE7FD,\n    0xE86C, 0xE8EF, 0xE980, 0xEA1A, 0xEAB6, 0xEB50, 0xEBE1, 0xEC64,\n    0xECD4, 0xED2B, 0xED63, 0xED77, 0xCA4F, 0xCA3D, 0xCA0A, 0xC9BB,\n    0xC957, 0xC8E2, 0xC863, 0xC7DD, 0xC758, 0xC6D9, 0xC664, 0xC5FF,\n    0xC5B1, 0xC57E, 0xC56C, 0xC57C, 0xC5A8, 0xC5EE, 0xC647, 0xC6B0,\n    0xC724, 0xC79F, 0xC81C, 0xC897, 0xC90B, 0xC974, 0xC9CD, 0xCA12,\n    0xCA3F, 0xCA4F, 0xCA3F, 0xCA12, 0xC9CD, 0xC974, 0xC90B, 0xC897,\n    0xC81C, 0xC79F, 0xC724, 0xC6B0, 0xC647, 0xC5EE, 0xC5A8, 0xC57C,\n    0xC56C, 0xC57C, 0xC5A8, 0xC5EE, 0xC647, 0xC6B0, 0xC724, 0xC79F,\n    0xC81C, 0xC897, 0xC90B, 0xC974, 0xC9CD, 0xCA12, 0xCA3F, 0xCA4F,\n    0xCA3F, 0xCA12, 0xC9CD, 0xC973, 0xC90A, 0xC896, 0xC81B, 0xC79E,\n    0xC723, 0xC6AF, 0xC646, 0xC5ED, 0xC5A8, 0xC57B, 0xC56C, 0xC57C,\n    0xC5AA, 0xC5F1, 0xC64B, 0xC6B6, 0xC72C, 0xC7A8, 0xC826, 0xC8A3,\n    0xC918, 0xC982, 0xC9DD, 0xCA23, 0xCA50, 0xCA61, 0xFB1D, 0xFAF0,\n    0xFA72, 0xF9B0, 0xF8B8, 0xF798, 0xF65D, 0xF514, 0xF3CB, 0xF290,\n    0xF16F, 0xF078, 0xEFB6, 0xEF38, 0xEF0B, 0xEF32, 0xEFA1, 0xF04C,\n    0xF129, 0xF22C, 0xF34A, 0xF47A, 0xF5AE, 0xF6DD, 0xF7FC, 0xF8FF,\n    0xF9DC, 0xFA87, 0xFAF6, 0xFB1D, 0xFAF6, 0xFA87, 0xF9DC, 0xF8FF,\n    0xF7FC, 0xF6DD, 0xF5AE, 0xF47A, 0xF34A, 0xF22C, 0xF129, 0xF04C,\n    0xEFA1, 0xEF32, 0xEF0B, 0xEF32, 0xEFA1, 0xF04C, 0xF129, 0xF22C,\n    0xF34A, 0xF47A, 0xF5AE, 0xF6DD, 0xF7FC, 0xF8FF, 0xF9DC, 0xFA87,\n    0xFAF6, 0xFB1D, 0xFAF6, 0xFA87, 0xF9DC, 0xF900, 0xF7FD, 0xF6DF,\n    0xF5B0, 0xF47C, 0xF34D, 0xF22F, 0xF12C, 0xF04F, 0xEFA3, 0xEF33,\n    0xEF0B, 0xEF30, 0xEF9D, 0xF045, 0xF11F, 0xF21F, 0xF33A, 0xF465,\n    0xF596, 0xF6C2, 0xF7DD, 0xF8DD, 0xF9B8, 0xFA61, 0xFACF, 0xFAF6,\n    0xD2DC, 0xD30B, 0xD38D, 0xD455, 0xD555, 0xD67E, 0xD7C4, 0xD918,\n    0xDA6B, 0xDBB1, 0xDCDB, 0xDDDB, 0xDEA3, 0xDF25, 0xDF54, 0xDF2B,\n    0xDEB8, 0xDE08, 0xDD24, 0xDC18, 0xDAF0, 0xD9B7, 0xD878, 0xD73F,\n    0xD617, 0xD50C, 0xD428, 0xD377, 0xD305, 0xD2DC, 0xD305, 0xD377,\n    0xD428, 0xD50C, 0xD617, 0xD73F, 0xD878, 0xD9B7, 0xDAF0, 0xDC18,\n    0xDD24, 0xDE08, 0xDEB8, 0xDF2B, 0xDF54, 0xDF2B, 0xDEB8, 0xDE08,\n    0xDD24, 0xDC18, 0xDAF0, 0xD9B7, 0xD878, 0xD73F, 0xD617, 0xD50C,\n    0xD428, 0xD377, 0xD305, 0xD2DC, 0xD305, 0xD377, 0xD427, 0xD50B,\n    0xD616, 0xD73D, 0xD876, 0xD9B4, 0xDAED, 0xDC15, 0xDD21, 0xDE05,\n    0xDEB6, 0xDF2A, 0xDF54, 0xDF2D, 0xDEBC, 0xDE0E, 0xDD2E, 0xDC26,\n    0xDB01, 0xD9CC, 0xD891, 0xD75C, 0xD637, 0xD52E, 0xD44D, 0xD39E,\n    0xD32D, 0xD305, 0xD4B4, 0xD4F2, 0xD5A1, 0xD6AF, 0xD807, 0xD997,\n    0xDB4E, 0xDD16, 0xDEDF, 0xE095, 0xE226, 0xE37E, 0xE48B, 0xE53B,\n    0xE579, 0xE543, 0xE4A9, 0xE3BB, 0xE288, 0xE120, 0xDF92, 0xDDED,\n    0xDC40, 0xDA9B, 0xD90D, 0xD7A5, 0xD672, 0xD584, 0xD4EA, 0xD4B4,\n    0xD4EA, 0xD584, 0xD672, 0xD7A5, 0xD90D, 0xDA9B, 0xDC40, 0xDDED,\n    0xDF92, 0xE120, 0xE288, 0xE3BB, 0xE4A9, 0xE543, 0xE579, 0xE543,\n    0xE4A9, 0xE3BB, 0xE288, 0xE120, 0xDF92, 0xDDED, 0xDC40, 0xDA9B,\n    0xD90D, 0xD7A5, 0xD672, 0xD584, 0xD4EA, 0xD4B4, 0xD4EA, 0xD584,\n    0xD671, 0xD7A3, 0xD90B, 0xDA98, 0xDC3D, 0xDDE9, 0xDF8E, 0xE11C,\n    0xE284, 0xE3B7, 0xE4A6, 0xE541, 0xE579, 0xE545, 0xE4AE, 0xE3C4,\n    0xE296, 0xE132, 0xDFA9, 0xDE09, 0xDC61, 0xDAC1, 0xD937, 0xD7D3,\n    0xD6A4, 0xD5B9, 0xD520, 0xD4EA, 0xF549, 0xF516, 0xF485, 0xF3A7,\n    0xF28A, 0xF13F, 0xEFD6, 0xEE5C, 0xECE3, 0xEB79, 0xEA2E, 0xE912,\n    0xE833, 0xE7A3, 0xE76F, 0xE79C, 0xE81B, 0xE8E0, 0xE9DD, 0xEB06,\n    0xEC4F, 0xEDAB, 0xEF0D, 0xF069, 0xF1B2, 0xF2DB, 0xF3D8, 0xF49D,\n    0xF51C, 0xF549, 0xF51C, 0xF49D, 0xF3D8, 0xF2DB, 0xF1B2, 0xF069,\n    0xEF0D, 0xEDAB, 0xEC4F, 0xEB06, 0xE9DD, 0xE8E0, 0xE81B, 0xE79C,\n    0xE76F, 0xE79C, 0xE81B, 0xE8E0, 0xE9DD, 0xEB06, 0xEC4F, 0xEDAB,\n    0xEF0D, 0xF069, 0xF1B2, 0xF2DB, 0xF3D8, 0xF49D, 0xF51C, 0xF549,\n    0xF51C, 0xF49D, 0xF3D9, 0xF2DC, 0xF1B4, 0xF06B, 0xEF10, 0xEDAE,\n    0xEC53, 0xEB0A, 0xE9E0, 0xE8E3, 0xE81E, 0xE79E, 0xE76F, 0xE79A,\n    0xE817, 0xE8D8, 0xE9D2, 0xEAF7, 0xEC3C, 0xED94, 0xEEF2, 0xF04A,\n    0xF18F, 0xF2B5, 0xF3AF, 0xF472, 0xF4EF, 0xF51C, 0xC7DD, 0xC7E2,\n    0xC7EF, 0xC802, 0xC81B, 0xC839, 0xC859, 0xC87A, 0xC89B, 0xC8BB,\n    0xC8D8, 0xC8F1, 0xC905, 0xC912, 0xC916, 0xC912, 0xC907, 0xC8F6,\n    0xC8DF, 0xC8C5, 0xC8A8, 0xC88A, 0xC86A, 0xC84C, 0xC82F, 0xC814,\n    0xC7FE, 0xC7ED, 0xC7E1, 0xC7DD, 0xC7E1, 0xC7ED, 0xC7FE, 0xC814,\n    0xC82F, 0xC84C, 0xC86A, 0xC88A, 0xC8A8, 0xC8C5, 0xC8DF, 0xC8F6,\n    0xC907, 0xC912, 0xC916, 0xC912, 0xC907, 0xC8F6, 0xC8DF, 0xC8C5,\n    0xC8A8, 0xC88A, 0xC86A, 0xC84C, 0xC82F, 0xC814, 0xC7FE, 0xC7ED,\n    0xC7E1, 0xC7DD, 0xC7E1, 0xC7EC, 0xC7FD, 0xC813, 0xC82D, 0xC84A,\n    0xC868, 0xC887, 0xC8A6, 0xC8C3, 0xC8DD, 0xC8F4, 0xC905, 0xC911,\n    0xC916, 0xC914, 0xC90B, 0xC8FC, 0xC8E8, 0xC8D1, 0xC8B7, 0xC89B,\n    0xC87F, 0xC864, 0xC849, 0xC832, 0xC81E, 0xC80E, 0xC804, 0xC800,\n    0x054B, 0x057F, 0x0611, 0x06F1, 0x0810, 0x095D, 0x0ACA, 0x0C46,\n    0x0DC2, 0x0F2E, 0x107C, 0x119A, 0x127A, 0x130C, 0x1340, 0x1313,\n    0x1292, 0x11CC, 0x10CD, 0x0FA2, 0x0E56, 0x0CF8, 0x0B93, 0x0A35,\n    0x08EA, 0x07BE, 0x06BF, 0x05F9, 0x0579, 0x054B, 0x0579, 0x05F9,\n    0x06BF, 0x07BE, 0x08EA, 0x0A35, 0x0B93, 0x0CF8, 0x0E56, 0x0FA2,\n    0x10CD, 0x11CC, 0x1292, 0x1313, 0x1340, 0x1313, 0x1292, 0x11CC,\n    0x10CD, 0x0FA2, 0x0E56, 0x0CF8, 0x0B93, 0x0A35, 0x08EA, 0x07BE,\n    0x06BF, 0x05F9, 0x0579, 0x054B, 0x0579, 0x05F9, 0x06BE, 0x07BD,\n    0x08E8, 0x0A33, 0x0B91, 0x0CF5, 0x0E53, 0x0F9E, 0x10CA, 0x11CA,\n    0x1290, 0x1311, 0x1340, 0x1314, 0x1297, 0x11D4, 0x10D9, 0x0FB1,\n    0x0E6A, 0x0D10, 0x0BAF, 0x0A55, 0x090D, 0x07E5, 0x06E8, 0x0625,\n    0x05A6, 0x0579, 0x2BD6, 0x2BC0, 0x2B80, 0x2B1F, 0x2AA3, 0x2A13,\n    0x2975, 0x28D0, 0x282B, 0x278D, 0x26FC, 0x2680, 0x261F, 0x25E0,\n    0x25C9, 0x25DD, 0x2615, 0x266A, 0x26D9, 0x275B, 0x27EB, 0x2882,\n    0x291D, 0x29B5, 0x2A45, 0x2AC7, 0x2B35, 0x2B8B, 0x2BC3, 0x2BD6,\n    0x2BC3, 0x2B8B, 0x2B35, 0x2AC7, 0x2A45, 0x29B5, 0x291D, 0x2882,\n    0x27EB, 0x275B, 0x26D9, 0x266A, 0x2615, 0x25DD, 0x25C9, 0x25DD,\n    0x2615, 0x266A, 0x26D9, 0x275B, 0x27EB, 0x2882, 0x291D, 0x29B5,\n    0x2A45, 0x2AC7, 0x2B35, 0x2B8B, 0x2BC3, 0x2BD6, 0x2BC3, 0x2B8B,\n    0x2B35, 0x2AC7, 0x2A45, 0x29B6, 0x291E, 0x2884, 0x27EC, 0x275C,\n    0x26DA, 0x266C, 0x2616, 0x25DE, 0x25C9, 0x25DC, 0x2613, 0x2667,\n    0x26D4, 0x2754, 0x27E2, 0x2878, 0x2911, 0x29A7, 0x2A35, 0x2AB6,\n    0x2B23, 0x2B78, 0x2BAF, 0x2BC3, 0xCCF6, 0xCD40, 0xCE0F, 0xCF4D,\n    0xD0E4, 0xD2BE, 0xD4C4, 0xD6E1, 0xD8FD, 0xDB03, 0xDCDD, 0xDE74,\n    0xDFB2, 0xE081, 0xE0CB, 0xE08B, 0xDFD5, 0xDEBB, 0xDD51, 0xDBA7,\n    0xD9D0, 0xD7DE, 0xD5E3, 0xD3F1, 0xD21A, 0xD070, 0xCF06, 0xCDED,\n    0xCD37, 0xCCF6, 0xCD37, 0xCDED, 0xCF06, 0xD070, 0xD21A, 0xD3F1,\n    0xD5E3, 0xD7DE, 0xD9D0, 0xDBA7, 0xDD51, 0xDEBB, 0xDFD5, 0xE08B,\n    0xE0CB, 0xE08B, 0xDFD5, 0xDEBB, 0xDD51, 0xDBA7, 0xD9D0, 0xD7DE,\n    0xD5E3, 0xD3F1, 0xD21A, 0xD070, 0xCF06, 0xCDED, 0xCD37, 0xCCF6,\n    0xCD36, 0xCDEC, 0xCF05, 0xD06F, 0xD218, 0xD3EE, 0xD5DF, 0xD7DA,\n    0xD9CB, 0xDBA2, 0xDD4C, 0xDEB7, 0xDFD1, 0xE089, 0xE0CB, 0xE08D,\n    0xDFDB, 0xDEC6, 0xDD61, 0xDBBC, 0xD9EB, 0xD7FF, 0xD60A, 0xD41E,\n    0xD24D, 0xD0A7, 0xCF41, 0xCE2B, 0xCD77, 0xCD37, 0x0000, 0x0006,\n    0x0019, 0x0036, 0x005C, 0x0087, 0x00B7, 0x00E8, 0x0119, 0x0149,\n    0x0174, 0x019A, 0x01B7, 0x01CA, 0x01D1, 0x01CB, 0x01BA, 0x01A0,\n    0x017F, 0x0158, 0x012D, 0x00FF, 0x00D1, 0x00A3, 0x0078, 0x0051,\n    0x0030, 0x0016, 0x0005, 0x0000, 0x0005, 0x0016, 0x0030, 0x0051,\n    0x0078, 0x00A3, 0x00D1, 0x00FF, 0x012D, 0x0158, 0x017F, 0x01A0,\n    0x01BA, 0x01CB, 0x01D1, 0x01CB, 0x01BA, 0x01A0, 0x017F, 0x0158,\n    0x012D, 0x00FF, 0x00D1, 0x00A3, 0x0078, 0x0051, 0x0030, 0x0016,\n    0x0005, 0x0000, 0x0005, 0x0016, 0x0030, 0x0051, 0x0078, 0x00A3,\n    0x00D0, 0x00FF, 0x012C, 0x0158, 0x017F, 0x01A0, 0x01BA, 0x01CA,\n    0x01D1, 0x01CD, 0x01C2, 0x01B0, 0x0198, 0x017C, 0x015B, 0x0138,\n    0x0111, 0x00E9, 0x00C1, 0x0098, 0x0070, 0x004A, 0x0026, 0x0005,\n    0xFF30, 0xFF32, 0xFF37, 0xFF40, 0xFF4B, 0xFF58, 0xFF66, 0xFF74,\n    0xFF83, 0xFF90, 0xFF9D, 0xFFA8, 0xFFB1, 0xFFB6, 0xFFB8, 0xFFB6,\n    0xFFB2, 0xFFAA, 0xFFA0, 0xFF95, 0xFF88, 0xFF7B, 0xFF6D, 0xFF60,\n    0xFF53, 0xFF48, 0xFF3E, 0xFF37, 0xFF32, 0xFF30, 0xFF32, 0xFF37,\n    0xFF3E, 0xFF48, 0xFF53, 0xFF60, 0xFF6D, 0xFF7B, 0xFF88, 0xFF95,\n    0xFFA0, 0xFFAA, 0xFFB2, 0xFFB6, 0xFFB8, 0xFFB6, 0xFFB2, 0xFFAA,\n    0xFFA0, 0xFF95, 0xFF88, 0xFF7B, 0xFF6D, 0xFF60, 0xFF53, 0xFF48,\n    0xFF3E, 0xFF37, 0xFF32, 0xFF30, 0xFF32, 0xFF37, 0xFF3E, 0xFF48,\n    0xFF53, 0xFF60, 0xFF6D, 0xFF7B, 0xFF88, 0xFF95, 0xFFA0, 0xFFAA,\n    0xFFB1, 0xFFB6, 0xFFB8, 0xFFB7, 0xFFB4, 0xFFAF, 0xFFA8, 0xFF9F,\n    0xFF96, 0xFF8B, 0xFF80, 0xFF74, 0xFF69, 0xFF5D, 0xFF51, 0xFF46,\n    0xFF3B, 0xFF32, 0xC9D8, 0xC9A7, 0xC91F, 0xC84E, 0xC743, 0xC60C,\n    0xC4B7, 0xC355, 0xC1F2, 0xC09D, 0xBF66, 0xBE5B, 0xBD8A, 0xBD02,\n    0xBCD1, 0xBCFC, 0xBD73, 0xBE2C, 0xBF1A, 0xC032, 0xC167, 0xC2AE,\n    0xC3FB, 0xC542, 0xC677, 0xC78F, 0xC87D, 0xC936, 0xC9AE, 0xC9D8,\n    0xC9AE, 0xC936, 0xC87D, 0xC78F, 0xC677, 0xC542, 0xC3FB, 0xC2AE,\n    0xC167, 0xC032, 0xBF1A, 0xBE2C, 0xBD73, 0xBCFC, 0xBCD1, 0xBCFC,\n    0xBD73, 0xBE2C, 0xBF1A, 0xC032, 0xC167, 0xC2AE, 0xC3FB, 0xC542,\n    0xC677, 0xC78F, 0xC87D, 0xC936, 0xC9AE, 0xC9D8, 0xC9AE, 0xC936,\n    0xC87E, 0xC790, 0xC679, 0xC544, 0xC3FE, 0xC2B1, 0xC16A, 0xC035,\n    0xBF1D, 0xBE2F, 0xBD75, 0xBCFD, 0xBCD1, 0xBCEC, 0xBD3C, 0xBDBB,\n    0xBE64, 0xBF30, 0xC019, 0xC11A, 0xC22C, 0xC34A, 0xC46F, 0xC593,\n    0xC6B1, 0xC7C4, 0xC8C4, 0xC9AE, 0x1E4A, 0x1E9C, 0x1F82, 0x20E3,\n    0x22A6, 0x24B4, 0x26F2, 0x294A, 0x2BA1, 0x2DE0, 0x2FED, 0x31B1,\n    0x3312, 0x33F8, 0x344A, 0x3402, 0x3338, 0x3200, 0x306E, 0x2E96,\n    0x2C8B, 0x2A63, 0x2830, 0x2608, 0x23FE, 0x2225, 0x2093, 0x1F5B,\n    0x1E91, 0x1E4A, 0x1E91, 0x1F5B, 0x2093, 0x2225, 0x23FE, 0x2608,\n    0x2830, 0x2A63, 0x2C8B, 0x2E96, 0x306E, 0x3200, 0x3338, 0x3402,\n    0x344A, 0x3402, 0x3338, 0x3200, 0x306E, 0x2E96, 0x2C8B, 0x2A63,\n    0x2830, 0x2608, 0x23FE, 0x2225, 0x2093, 0x1F5B, 0x1E91, 0x1E4A,\n    0x1E91, 0x1F5B, 0x2092, 0x2224, 0x23FB, 0x2605, 0x282C, 0x2A5E,\n    0x2C86, 0x2E90, 0x3069, 0x31FB, 0x3335, 0x3400, 0x344A, 0x341C,\n    0x3395, 0x32BE, 0x31A2, 0x3049, 0x2EBF, 0x2D0E, 0x2B3E, 0x295B,\n    0x276D, 0x2580, 0x239C, 0x21CD, 0x201B, 0x1E91, 0x1B09, 0x1AF8,\n    0x1AC8, 0x1A7F, 0x1A22, 0x19B5, 0x193F, 0x18C3, 0x1847, 0x17D0,\n    0x1764, 0x1706, 0x16BD, 0x168E, 0x167D, 0x168C, 0x16B5, 0x16F6,\n    0x1749, 0x17AB, 0x1817, 0x1889, 0x18FD, 0x196F, 0x19DB, 0x1A3D,\n    0x1A90, 0x1AD0, 0x1AFA, 0x1B09, 0x1AFA, 0x1AD0, 0x1A90, 0x1A3D,\n    0x19DB, 0x196F, 0x18FD, 0x1889, 0x1817, 0x17AB, 0x1749, 0x16F6,\n    0x16B5, 0x168C, 0x167D, 0x168C, 0x16B5, 0x16F6, 0x1749, 0x17AB,\n    0x1817, 0x1889, 0x18FD, 0x196F, 0x19DB, 0x1A3D, 0x1A90, 0x1AD0,\n    0x1AFA, 0x1B09, 0x1AFA, 0x1AD0, 0x1A90, 0x1A3D, 0x19DC, 0x1970,\n    0x18FE, 0x188A, 0x1818, 0x17AC, 0x174A, 0x16F7, 0x16B6, 0x168C,\n    0x167D, 0x1686, 0x16A2, 0x16CF, 0x1709, 0x1751, 0x17A2, 0x17FC,\n    0x185B, 0x18BF, 0x1925, 0x198B, 0x19EF, 0x1A4F, 0x1AA9, 0x1AFA,\n    0x1144, 0x115A, 0x1197, 0x11F5, 0x126D, 0x12F9, 0x1391, 0x1431,\n    0x14D0, 0x1569, 0x15F4, 0x166C, 0x16CA, 0x1707, 0x171D, 0x170A,\n    0x16D4, 0x1681, 0x1616, 0x1599, 0x150E, 0x147B, 0x13E6, 0x1353,\n    0x12C8, 0x124B, 0x11E0, 0x118D, 0x1157, 0x1144, 0x1157, 0x118D,\n    0x11E0, 0x124B, 0x12C8, 0x1353, 0x13E6, 0x147B, 0x150E, 0x1599,\n    0x1616, 0x1681, 0x16D4, 0x170A, 0x171D, 0x170A, 0x16D4, 0x1681,\n    0x1616, 0x1599, 0x150E, 0x147B, 0x13E6, 0x1353, 0x12C8, 0x124B,\n    0x11E0, 0x118D, 0x1157, 0x1144, 0x1157, 0x118D, 0x11E0, 0x124A,\n    0x12C8, 0x1352, 0x13E5, 0x147A, 0x150D, 0x1598, 0x1615, 0x1680,\n    0x16D3, 0x1709, 0x171D, 0x1711, 0x16ED, 0x16B4, 0x1668, 0x160D,\n    0x15A4, 0x1531, 0x14B6, 0x1435, 0x13B2, 0x132F, 0x12AE, 0x1233,\n    0x11C0, 0x1157, 0xAC44, 0xAC20, 0xABBD, 0xAB25, 0xAA62, 0xA97F,\n    0xA887, 0xA784, 0xA681, 0xA589, 0xA4A6, 0xA3E3, 0xA34A, 0xA2E7,\n    0xA2C3, 0xA2E2, 0xA33A, 0xA3C0, 0xA46E, 0xA53A, 0xA61C, 0xA70A,\n    0xA7FD, 0xA8EC, 0xA9CD, 0xAA99, 0xAB47, 0xABCE, 0xAC25, 0xAC44,\n    0xAC25, 0xABCE, 0xAB47, 0xAA99, 0xA9CD, 0xA8EC, 0xA7FD, 0xA70A,\n    0xA61C, 0xA53A, 0xA46E, 0xA3C0, 0xA33A, 0xA2E2, 0xA2C3, 0xA2E2,\n    0xA33A, 0xA3C0, 0xA46E, 0xA53A, 0xA61C, 0xA70A, 0xA7FD, 0xA8EC,\n    0xA9CD, 0xAA99, 0xAB47, 0xABCE, 0xAC25, 0xAC44, 0xAC25, 0xABCE,\n    0xAB47, 0xAA9A, 0xA9CE, 0xA8ED, 0xA7FF, 0xA70C, 0xA61E, 0xA53C,\n    0xA470, 0xA3C2, 0xA33B, 0xA2E3, 0xA2C3, 0xA2D7, 0xA312, 0xA36E,\n    0xA3E9, 0xA47E, 0xA528, 0xA5E3, 0xA6AC, 0xA77C, 0xA851, 0xA926,\n    0xA9F7, 0xAABF, 0xAB7B, 0xAC25, 0x0000, 0xFFFB, 0xFFEA, 0xFFD1,\n    0xFFB0, 0xFF8B, 0xFF61, 0xFF36, 0xFF0B, 0xFEE2, 0xFEBC, 0xFE9C,\n    0xFE83, 0xFE72, 0xFE6C, 0xFE71, 0xFE80, 0xFE96, 0xFEB3, 0xFED5,\n    0xFEFB, 0xFF22, 0xFF4B, 0xFF72, 0xFF98, 0xFFBA, 0xFFD6, 0xFFED,\n    0xFFFB, 0x0000, 0xFFFB, 0xFFED, 0xFFD6, 0xFFBA, 0xFF98, 0xFF72,\n    0xFF4B, 0xFF22, 0xFEFB, 0xFED5, 0xFEB3, 0xFE96, 0xFE80, 0xFE71,\n    0xFE6C, 0xFE71, 0xFE80, 0xFE96, 0xFEB3, 0xFED5, 0xFEFB, 0xFF22,\n    0xFF4B, 0xFF72, 0xFF98, 0xFFBA, 0xFFD6, 0xFFED, 0xFFFB, 0x0000,\n    0xFFFB, 0xFFED, 0xFFD7, 0xFFBA, 0xFF98, 0xFF72, 0xFF4B, 0xFF23,\n    0xFEFB, 0xFED5, 0xFEB4, 0xFE97, 0xFE80, 0xFE72, 0xFE6C, 0xFE70,\n    0xFE79, 0xFE89, 0xFE9D, 0xFEB6, 0xFED2, 0xFEF1, 0xFF12, 0xFF35,\n    0xFF59, 0xFF7C, 0xFF9F, 0xFFC0, 0xFFDF, 0xFFFB, 0x0000, 0xFFFF,\n    0xFFFB, 0xFFF4, 0xFFEC, 0xFFE2, 0xFFD8, 0xFFCD, 0xFFC2, 0xFFB7,\n    0xFFAE, 0xFFA5, 0xFF9F, 0xFF9B, 0xFF99, 0xFF9B, 0xFF9E, 0xFFA4,\n    0xFFAB, 0xFFB4, 0xFFBE, 0xFFC8, 0xFFD2, 0xFFDC, 0xFFE6, 0xFFEE,\n    0xFFF6, 0xFFFB, 0xFFFF, 0x0000, 0xFFFF, 0xFFFB, 0xFFF6, 0xFFEE,\n    0xFFE6, 0xFFDC, 0xFFD2, 0xFFC8, 0xFFBE, 0xFFB4, 0xFFAB, 0xFFA4,\n    0xFF9E, 0xFF9B, 0xFF99, 0xFF9B, 0xFF9E, 0xFFA4, 0xFFAB, 0xFFB4,\n    0xFFBE, 0xFFC8, 0xFFD2, 0xFFDC, 0xFFE6, 0xFFEE, 0xFFF6, 0xFFFB,\n    0xFFFF, 0x0000, 0xFFFF, 0xFFFB, 0xFFF6, 0xFFEE, 0xFFE6, 0xFFDC,\n    0xFFD2, 0xFFC8, 0xFFBE, 0xFFB4, 0xFFAC, 0xFFA4, 0xFF9E, 0xFF9B,\n    0xFF99, 0xFF9A, 0xFF9D, 0xFFA1, 0xFFA6, 0xFFAC, 0xFFB3, 0xFFBB,\n    0xFFC4, 0xFFCD, 0xFFD6, 0xFFDF, 0xFFE8, 0xFFF0, 0xFFF8, 0xFFFF,\n    0xBF40, 0xBF1A, 0xBEB0, 0xBE0D, 0xBD3C, 0xBC49, 0xBB3F, 0xBA2A,\n    0xB914, 0xB80A, 0xB717, 0xB646, 0xB5A3, 0xB539, 0xB513, 0xB534,\n    0xB591, 0xB622, 0xB6DC, 0xB7B6, 0xB8A8, 0xB9A7, 0xBAAC, 0xBBAB,\n    0xBC9D, 0xBD77, 0xBE31, 0xBEC2, 0xBF1F, 0xBF40, 0xBF1F, 0xBEC2,\n    0xBE31, 0xBD77, 0xBC9D, 0xBBAB, 0xBAAC, 0xB9A7, 0xB8A8, 0xB7B6,\n    0xB6DC, 0xB622, 0xB591, 0xB534, 0xB513, 0xB534, 0xB591, 0xB622,\n    0xB6DC, 0xB7B6, 0xB8A8, 0xB9A7, 0xBAAC, 0xBBAB, 0xBC9D, 0xBD77,\n    0xBE31, 0xBEC2, 0xBF1F, 0xBF40, 0xBF1F, 0xBEC2, 0xBE32, 0xBD78,\n    0xBC9E, 0xBBAD, 0xBAAE, 0xB9AA, 0xB8AA, 0xB7B9, 0xB6DE, 0xB624,\n    0xB593, 0xB535, 0xB513, 0xB528, 0xB566, 0xB5CA, 0xB64D, 0xB6ED,\n    0xB7A3, 0xB86C, 0xB942, 0xBA22, 0xBB06, 0xBBEA, 0xBCCA, 0xBDA0,\n    0xBE69, 0xBF1F, 0x2537, 0x257A, 0x2635, 0x2755, 0x28C4, 0x2A71,\n    0x2C45, 0x2E2D, 0x3016, 0x31EA, 0x3396, 0x3506, 0x3626, 0x36E1,\n    0x3724, 0x36E9, 0x3645, 0x3547, 0x33FF, 0x327E, 0x30D4, 0x2F12,\n    0x2D48, 0x2B86, 0x29DC, 0x285C, 0x2714, 0x2616, 0x2571, 0x2537,\n    0x2571, 0x2616, 0x2714, 0x285C, 0x29DC, 0x2B86, 0x2D48, 0x2F12,\n    0x30D4, 0x327E, 0x33FF, 0x3547, 0x3645, 0x36E9, 0x3724, 0x36E9,\n    0x3645, 0x3547, 0x33FF, 0x327E, 0x30D4, 0x2F12, 0x2D48, 0x2B86,\n    0x29DC, 0x285C, 0x2714, 0x2616, 0x2571, 0x2537, 0x2571, 0x2615,\n    0x2713, 0x285A, 0x29DA, 0x2B83, 0x2D45, 0x2F0F, 0x30D0, 0x327A,\n    0x33FB, 0x3543, 0x3642, 0x36E8, 0x3724, 0x36FF, 0x3690, 0x35E1,\n    0x34FA, 0x33E1, 0x32A0, 0x313F, 0x2FC5, 0x2E3B, 0x2CA9, 0x2B17,\n    0x298D, 0x2813, 0x26B2, 0x2571, 0xD64A, 0xD656, 0xD676, 0xD6A7,\n    0xD6E5, 0xD72E, 0xD77E, 0xD7D1, 0xD824, 0xD874, 0xD8BD, 0xD8FC,\n    0xD92D, 0xD94D, 0xD958, 0xD94E, 0xD932, 0xD907, 0xD8CF, 0xD88D,\n    0xD845, 0xD7F8, 0xD7AA, 0xD75D, 0xD715, 0xD6D3, 0xD69C, 0xD670,\n    0xD654, 0xD64A, 0xD654, 0xD670, 0xD69C, 0xD6D3, 0xD715, 0xD75D,\n    0xD7AA, 0xD7F8, 0xD845, 0xD88D, 0xD8CF, 0xD907, 0xD932, 0xD94E,\n    0xD958, 0xD94E, 0xD932, 0xD907, 0xD8CF, 0xD88D, 0xD845, 0xD7F8,\n    0xD7AA, 0xD75D, 0xD715, 0xD6D3, 0xD69C, 0xD670, 0xD654, 0xD64A,\n    0xD654, 0xD670, 0xD69B, 0xD6D3, 0xD715, 0xD75D, 0xD7AA, 0xD7F8,\n    0xD844, 0xD88D, 0xD8CE, 0xD906, 0xD932, 0xD94E, 0xD958, 0xD952,\n    0xD93F, 0xD921, 0xD8FA, 0xD8CA, 0xD893, 0xD857, 0xD817, 0xD7D4,\n    0xD78F, 0xD74B, 0xD707, 0xD6C7, 0xD68B, 0xD654, 0xEC41, 0xEC26,\n    0xEBDB, 0xEB69, 0xEAD6, 0xEA2B, 0xE971, 0xE8AE, 0xE7EB, 0xE730,\n    0xE686, 0xE5F3, 0xE580, 0xE535, 0xE51B, 0xE532, 0xE574, 0xE5D9,\n    0xE65C, 0xE6F5, 0xE79F, 0xE852, 0xE909, 0xE9BD, 0xEA66, 0xEB00,\n    0xEB82, 0xEBE8, 0xEC29, 0xEC41, 0xEC29, 0xEBE8, 0xEB82, 0xEB00,\n    0xEA66, 0xE9BD, 0xE909, 0xE852, 0xE79F, 0xE6F5, 0xE65C, 0xE5D9,\n    0xE574, 0xE532, 0xE51B, 0xE532, 0xE574, 0xE5D9, 0xE65C, 0xE6F5,\n    0xE79F, 0xE852, 0xE909, 0xE9BD, 0xEA66, 0xEB00, 0xEB82, 0xEBE8,\n    0xEC29, 0xEC41, 0xEC2A, 0xEBE8, 0xEB83, 0xEB00, 0xEA67, 0xE9BE,\n    0xE90B, 0xE854, 0xE7A1, 0xE6F7, 0xE65D, 0xE5DB, 0xE575, 0xE533,\n    0xE51B, 0xE52A, 0xE556, 0xE59B, 0xE5F8, 0xE668, 0xE6E8, 0xE775,\n    0xE80B, 0xE8A8, 0xE949, 0xE9E9, 0xEA86, 0xEB1D, 0xEBA9, 0xEC29,\n    0xB59E, 0xB589, 0xB54F, 0xB4F5, 0xB481, 0xB3FB, 0xB369, 0xB2D0,\n    0xB237, 0xB1A5, 0xB11F, 0xB0AC, 0xB052, 0xB017, 0xB002, 0xB014,\n    0xB048, 0xB097, 0xB0FE, 0xB176, 0xB1FC, 0xB288, 0xB318, 0xB3A5,\n    0xB42A, 0xB4A2, 0xB509, 0xB558, 0xB58C, 0xB59E, 0xB58C, 0xB558,\n    0xB509, 0xB4A2, 0xB42A, 0xB3A5, 0xB318, 0xB288, 0xB1FC, 0xB176,\n    0xB0FE, 0xB097, 0xB048, 0xB014, 0xB002, 0xB014, 0xB048, 0xB097,\n    0xB0FE, 0xB176, 0xB1FC, 0xB288, 0xB318, 0xB3A5, 0xB42A, 0xB4A2,\n    0xB509, 0xB558, 0xB58C, 0xB59E, 0xB58C, 0xB559, 0xB509, 0xB4A3,\n    0xB42B, 0xB3A6, 0xB319, 0xB28A, 0xB1FD, 0xB178, 0xB0FF, 0xB099,\n    0xB049, 0xB015, 0xB002, 0xB00E, 0xB030, 0xB067, 0xB0AF, 0xB107,\n    0xB16C, 0xB1DA, 0xB250, 0xB2CC, 0xB34A, 0xB3C7, 0xB443, 0xB4B9,\n    0xB527, 0xB58C, 0x7FFF, 0x7FFF, 0x4171, 0xBF5F, 0x7FFF, 0x7FFF,\n    0x4171, 0xBF5F, 0x0215, 0x01F5, 0x019A, 0x010E, 0x005C, 0xFF8D,\n    0xFEAA, 0xFDBD, 0xFCD0, 0xFBED, 0xFB1D, 0xFA6B, 0xF9DF, 0xF984,\n    0xF964, 0xF980, 0xF9D0, 0xFA4B, 0xFAEA, 0xFBA5, 0xFC73, 0xFD4E,\n    0xFE2C, 0xFF06, 0xFFD5, 0x008E, 0x012D, 0x01A9, 0x01F9, 0x0215,\n    0x01F9, 0x01A9, 0x012D, 0x008E, 0xFFD5, 0xFF06, 0xFE2C, 0xFD4E,\n    0xFC73, 0xFBA5, 0xFAEA, 0xFA4B, 0xF9D0, 0xF980, 0xF964, 0xF980,\n    0xF9D0, 0xFA4B, 0xFAEA, 0xFBA5, 0xFC73, 0xFD4E, 0xFE2C, 0xFF06,\n    0xFFD5, 0x008E, 0x012D, 0x01A9, 0x01F9, 0x0215, 0x01F9, 0x01A9,\n    0x012D, 0x008E, 0xFFD5, 0xFF06, 0xFE2C, 0xFD4E, 0xFC73, 0xFBA5,\n    0xFAEA, 0xFA4B, 0xF9D0, 0xF980, 0xF964, 0xF980, 0xF9D0, 0xFA4B,\n    0xFAEA, 0xFBA5, 0xFC73, 0xFD4E, 0xFE2C, 0xFF06, 0xFFD5, 0x008E,\n    0x012D, 0x01A9, 0x01F9, 0x0215, 0x081A, 0x40A1, 0x40A7, 0x40B8,\n    0x40D2, 0x40F4, 0x411B, 0x4145, 0x4172, 0x419E, 0x41C9, 0x41F0,\n    0x4211, 0x422B, 0x423C, 0x4242, 0x423D, 0x422E, 0x4217, 0x41F9,\n    0x41D6, 0x41AF, 0x4186, 0x415D, 0x4134, 0x410D, 0x40EA, 0x40CC,\n    0x40B5, 0x40A6, 0x40A1, 0x40A6, 0x40B5, 0x40CC, 0x40EA, 0x410D,\n    0x4134, 0x415D, 0x4186, 0x41AF, 0x41D6, 0x41F9, 0x4217, 0x422E,\n    0x423D, 0x4242, 0x423D, 0x422E, 0x4217, 0x41F9, 0x41D6, 0x41AF,\n    0x4186, 0x415D, 0x4134, 0x410D, 0x40EA, 0x40CC, 0x40B5, 0x40A6,\n    0x40A1, 0x40A6, 0x40B5, 0x40CC, 0x40EA, 0x410D, 0x4134, 0x415C,\n    0x4186, 0x41AF, 0x41D6, 0x41F9, 0x4217, 0x422E, 0x423D, 0x4242,\n    0x423F, 0x4235, 0x4225, 0x4210, 0x41F6, 0x41D9, 0x41B9, 0x4197,\n    0x4173, 0x414E, 0x412A, 0x4106, 0x40E4, 0x40C4, 0x40A6,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_C3.inc.c",
    "content": "static const struct Animation anim_C3[] = {\n    1,\n    189,\n    0,\n    0,\n    0x1E,\n    ANIMINDEX_NUMPARTS(anim_C3_indices),\n    anim_C3_values,\n    anim_C3_indices,\n    0,\n};\n\n\nstatic const u16 anim_C3_indices[] = {\n    0x0001, 0x0000, 0x001E, 0x0001, 0x001E, 0x001F, 0x0001, 0x0000, 0x0001, 0x003D, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x03AD,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x03AC,\n    0x001E, 0x0352, 0x001E, 0x0370, 0x001E, 0x038E,\n    0x0001, 0x034E, 0x0001, 0x034F, 0x0001, 0x0350,\n    0x001E, 0x00B6, 0x001E, 0x00D4, 0x001E, 0x00F2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0098,\n    0x001E, 0x003E, 0x001E, 0x005C, 0x001E, 0x007A,\n    0x0001, 0x034A, 0x0001, 0x034B, 0x0001, 0x034C,\n    0x001E, 0x014C, 0x001E, 0x016A, 0x001E, 0x0188,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x012E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0110,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x034D,\n    0x001E, 0x02F0, 0x001E, 0x030E, 0x001E, 0x032C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x02D2,\n    0x001E, 0x0278, 0x001E, 0x0296, 0x001E, 0x02B4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0351,\n    0x001E, 0x021E, 0x001E, 0x023C, 0x001E, 0x025A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0200,\n    0x001E, 0x01A6, 0x001E, 0x01C4, 0x001E, 0x01E2,\n};\n\nstatic const s16 anim_C3_values[] = {\n    0x0000, 0x00AA, 0x00AA, 0x00A9, 0x00A8, 0x00A6, 0x00A5, 0x00A3,\n    0x00A1, 0x009F, 0x009E, 0x009C, 0x009B, 0x009A, 0x0099, 0x0099,\n    0x0099, 0x009A, 0x009B, 0x009C, 0x009E, 0x00A0, 0x00A2, 0x00A3,\n    0x00A5, 0x00A7, 0x00A8, 0x00AA, 0x00AB, 0x00AB, 0x00AC, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0002, 0x0002,\n    0x0002, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0002, 0x0002, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x3FFF, 0x0000, 0x0003,\n    0x000D, 0x001D, 0x0031, 0x0049, 0x0063, 0x007D, 0x0098, 0x00B2,\n    0x00C9, 0x00DD, 0x00ED, 0x00F7, 0x00FB, 0x00F8, 0x00EF, 0x00E1,\n    0x00CF, 0x00BA, 0x00A2, 0x008A, 0x0071, 0x0058, 0x0041, 0x002C,\n    0x001A, 0x000C, 0x0003, 0x0000, 0xF97C, 0xF97C, 0xF97D, 0xF97E,\n    0xF97F, 0xF981, 0xF983, 0xF985, 0xF987, 0xF989, 0xF98B, 0xF98C,\n    0xF98E, 0xF98E, 0xF98F, 0xF98E, 0xF98E, 0xF98D, 0xF98B, 0xF98A,\n    0xF988, 0xF986, 0xF984, 0xF982, 0xF981, 0xF97F, 0xF97E, 0xF97D,\n    0xF97C, 0xF97C, 0xED8C, 0xED74, 0xED34, 0xECD0, 0xEC51, 0xEBBE,\n    0xEB1C, 0xEA73, 0xE9CB, 0xE929, 0xE895, 0xE816, 0xE7B3, 0xE772,\n    0xE75B, 0xE76F, 0xE7A8, 0xE800, 0xE871, 0xE8F6, 0xE989, 0xEA24,\n    0xEAC2, 0xEB5E, 0xEBF1, 0xEC76, 0xECE7, 0xED3F, 0xED77, 0xED8C,\n    0xCA4F, 0xCA3D, 0xCA0A, 0xC9BB, 0xC957, 0xC8E2, 0xC863, 0xC7DD,\n    0xC758, 0xC6D9, 0xC664, 0xC5FF, 0xC5B1, 0xC57E, 0xC56C, 0xC57C,\n    0xC5A8, 0xC5EE, 0xC647, 0xC6B0, 0xC724, 0xC79F, 0xC81C, 0xC897,\n    0xC90B, 0xC974, 0xC9CD, 0xCA12, 0xCA3F, 0xCA4F, 0xFB1D, 0xFAF0,\n    0xFA72, 0xF9B0, 0xF8B8, 0xF798, 0xF65D, 0xF514, 0xF3CB, 0xF290,\n    0xF16F, 0xF078, 0xEFB6, 0xEF38, 0xEF0B, 0xEF32, 0xEFA1, 0xF04C,\n    0xF129, 0xF22C, 0xF34A, 0xF47A, 0xF5AE, 0xF6DD, 0xF7FC, 0xF8FF,\n    0xF9DC, 0xFA87, 0xFAF6, 0xFB1D, 0xD2DC, 0xD30B, 0xD38D, 0xD455,\n    0xD555, 0xD67E, 0xD7C4, 0xD918, 0xDA6B, 0xDBB1, 0xDCDB, 0xDDDB,\n    0xDEA3, 0xDF25, 0xDF54, 0xDF2B, 0xDEB8, 0xDE08, 0xDD24, 0xDC18,\n    0xDAF0, 0xD9B7, 0xD878, 0xD73F, 0xD617, 0xD50C, 0xD428, 0xD377,\n    0xD305, 0xD2DC, 0xD4B4, 0xD4F2, 0xD5A1, 0xD6AF, 0xD807, 0xD997,\n    0xDB4E, 0xDD16, 0xDEDF, 0xE095, 0xE226, 0xE37E, 0xE48B, 0xE53B,\n    0xE579, 0xE543, 0xE4A9, 0xE3BB, 0xE288, 0xE120, 0xDF92, 0xDDED,\n    0xDC40, 0xDA9B, 0xD90D, 0xD7A5, 0xD672, 0xD584, 0xD4EA, 0xD4B4,\n    0xF549, 0xF516, 0xF485, 0xF3A7, 0xF28A, 0xF13F, 0xEFD6, 0xEE5C,\n    0xECE3, 0xEB79, 0xEA2E, 0xE912, 0xE833, 0xE7A3, 0xE76F, 0xE79C,\n    0xE81B, 0xE8E0, 0xE9DD, 0xEB06, 0xEC4F, 0xEDAB, 0xEF0D, 0xF069,\n    0xF1B2, 0xF2DB, 0xF3D8, 0xF49D, 0xF51C, 0xF549, 0xC7DD, 0xC7E2,\n    0xC7EF, 0xC802, 0xC81B, 0xC839, 0xC859, 0xC87A, 0xC89B, 0xC8BB,\n    0xC8D8, 0xC8F1, 0xC905, 0xC912, 0xC916, 0xC912, 0xC907, 0xC8F6,\n    0xC8DF, 0xC8C5, 0xC8A8, 0xC88A, 0xC86A, 0xC84C, 0xC82F, 0xC814,\n    0xC7FE, 0xC7ED, 0xC7E1, 0xC7DD, 0x054B, 0x057F, 0x0611, 0x06F1,\n    0x0810, 0x095D, 0x0ACA, 0x0C46, 0x0DC2, 0x0F2E, 0x107C, 0x119A,\n    0x127A, 0x130C, 0x1340, 0x1313, 0x1292, 0x11CC, 0x10CD, 0x0FA2,\n    0x0E56, 0x0CF8, 0x0B93, 0x0A35, 0x08EA, 0x07BE, 0x06BF, 0x05F9,\n    0x0579, 0x054B, 0x2BD6, 0x2BC0, 0x2B80, 0x2B1F, 0x2AA3, 0x2A13,\n    0x2975, 0x28D0, 0x282B, 0x278D, 0x26FC, 0x2680, 0x261F, 0x25E0,\n    0x25C9, 0x25DD, 0x2615, 0x266A, 0x26D9, 0x275B, 0x27EB, 0x2882,\n    0x291D, 0x29B5, 0x2A45, 0x2AC7, 0x2B35, 0x2B8B, 0x2BC3, 0x2BD6,\n    0xCCF6, 0xCD40, 0xCE0F, 0xCF4D, 0xD0E4, 0xD2BE, 0xD4C4, 0xD6E1,\n    0xD8FD, 0xDB03, 0xDCDD, 0xDE74, 0xDFB2, 0xE081, 0xE0CB, 0xE08B,\n    0xDFD5, 0xDEBB, 0xDD51, 0xDBA7, 0xD9D0, 0xD7DE, 0xD5E3, 0xD3F1,\n    0xD21A, 0xD070, 0xCF06, 0xCDED, 0xCD37, 0xCCF6, 0x0000, 0x0006,\n    0x0019, 0x0036, 0x005C, 0x0087, 0x00B7, 0x00E8, 0x0119, 0x0149,\n    0x0174, 0x019A, 0x01B7, 0x01CA, 0x01D1, 0x01CB, 0x01BA, 0x01A0,\n    0x017F, 0x0158, 0x012D, 0x00FF, 0x00D1, 0x00A3, 0x0078, 0x0051,\n    0x0030, 0x0016, 0x0005, 0x0000, 0xFF30, 0xFF32, 0xFF37, 0xFF40,\n    0xFF4B, 0xFF58, 0xFF66, 0xFF74, 0xFF83, 0xFF90, 0xFF9D, 0xFFA8,\n    0xFFB1, 0xFFB6, 0xFFB8, 0xFFB6, 0xFFB2, 0xFFAA, 0xFFA0, 0xFF95,\n    0xFF88, 0xFF7B, 0xFF6D, 0xFF60, 0xFF53, 0xFF48, 0xFF3E, 0xFF37,\n    0xFF32, 0xFF30, 0xC9D8, 0xC9A7, 0xC91F, 0xC84E, 0xC743, 0xC60C,\n    0xC4B7, 0xC355, 0xC1F2, 0xC09D, 0xBF66, 0xBE5B, 0xBD8A, 0xBD02,\n    0xBCD1, 0xBCFC, 0xBD73, 0xBE2C, 0xBF1A, 0xC032, 0xC167, 0xC2AE,\n    0xC3FB, 0xC542, 0xC677, 0xC78F, 0xC87D, 0xC936, 0xC9AE, 0xC9D8,\n    0x1E4A, 0x1E9C, 0x1F82, 0x20E3, 0x22A6, 0x24B4, 0x26F2, 0x294A,\n    0x2BA1, 0x2DE0, 0x2FED, 0x31B1, 0x3312, 0x33F8, 0x344A, 0x3402,\n    0x3338, 0x3200, 0x306E, 0x2E96, 0x2C8B, 0x2A63, 0x2830, 0x2608,\n    0x23FE, 0x2225, 0x2093, 0x1F5B, 0x1E91, 0x1E4A, 0x1B09, 0x1AF8,\n    0x1AC8, 0x1A7F, 0x1A22, 0x19B5, 0x193F, 0x18C3, 0x1847, 0x17D0,\n    0x1764, 0x1706, 0x16BD, 0x168E, 0x167D, 0x168C, 0x16B5, 0x16F6,\n    0x1749, 0x17AB, 0x1817, 0x1889, 0x18FD, 0x196F, 0x19DB, 0x1A3D,\n    0x1A90, 0x1AD0, 0x1AFA, 0x1B09, 0x1144, 0x115A, 0x1197, 0x11F5,\n    0x126D, 0x12F9, 0x1391, 0x1431, 0x14D0, 0x1569, 0x15F4, 0x166C,\n    0x16CA, 0x1707, 0x171D, 0x170A, 0x16D4, 0x1681, 0x1616, 0x1599,\n    0x150E, 0x147B, 0x13E6, 0x1353, 0x12C8, 0x124B, 0x11E0, 0x118D,\n    0x1157, 0x1144, 0xAC44, 0xAC20, 0xABBD, 0xAB25, 0xAA62, 0xA97F,\n    0xA887, 0xA784, 0xA681, 0xA589, 0xA4A6, 0xA3E3, 0xA34A, 0xA2E7,\n    0xA2C3, 0xA2E2, 0xA33A, 0xA3C0, 0xA46E, 0xA53A, 0xA61C, 0xA70A,\n    0xA7FD, 0xA8EC, 0xA9CD, 0xAA99, 0xAB47, 0xABCE, 0xAC25, 0xAC44,\n    0x0000, 0xFFFB, 0xFFEA, 0xFFD1, 0xFFB0, 0xFF8B, 0xFF61, 0xFF36,\n    0xFF0B, 0xFEE2, 0xFEBC, 0xFE9C, 0xFE83, 0xFE72, 0xFE6C, 0xFE71,\n    0xFE80, 0xFE96, 0xFEB3, 0xFED5, 0xFEFB, 0xFF22, 0xFF4B, 0xFF72,\n    0xFF98, 0xFFBA, 0xFFD6, 0xFFED, 0xFFFB, 0x0000, 0x0000, 0xFFFF,\n    0xFFFB, 0xFFF4, 0xFFEC, 0xFFE2, 0xFFD8, 0xFFCD, 0xFFC2, 0xFFB7,\n    0xFFAE, 0xFFA5, 0xFF9F, 0xFF9B, 0xFF99, 0xFF9B, 0xFF9E, 0xFFA4,\n    0xFFAB, 0xFFB4, 0xFFBE, 0xFFC8, 0xFFD2, 0xFFDC, 0xFFE6, 0xFFEE,\n    0xFFF6, 0xFFFB, 0xFFFF, 0x0000, 0xBF40, 0xBF1A, 0xBEB0, 0xBE0D,\n    0xBD3C, 0xBC49, 0xBB3F, 0xBA2A, 0xB914, 0xB80A, 0xB717, 0xB646,\n    0xB5A3, 0xB539, 0xB513, 0xB534, 0xB591, 0xB622, 0xB6DC, 0xB7B6,\n    0xB8A8, 0xB9A7, 0xBAAC, 0xBBAB, 0xBC9D, 0xBD77, 0xBE31, 0xBEC2,\n    0xBF1F, 0xBF40, 0x2537, 0x257A, 0x2635, 0x2755, 0x28C4, 0x2A71,\n    0x2C45, 0x2E2D, 0x3016, 0x31EA, 0x3396, 0x3506, 0x3626, 0x36E1,\n    0x3724, 0x36E9, 0x3645, 0x3547, 0x33FF, 0x327E, 0x30D4, 0x2F12,\n    0x2D48, 0x2B86, 0x29DC, 0x285C, 0x2714, 0x2616, 0x2571, 0x2537,\n    0xD64A, 0xD656, 0xD676, 0xD6A7, 0xD6E5, 0xD72E, 0xD77E, 0xD7D1,\n    0xD824, 0xD874, 0xD8BD, 0xD8FC, 0xD92D, 0xD94D, 0xD958, 0xD94E,\n    0xD932, 0xD907, 0xD8CF, 0xD88D, 0xD845, 0xD7F8, 0xD7AA, 0xD75D,\n    0xD715, 0xD6D3, 0xD69C, 0xD670, 0xD654, 0xD64A, 0xEC41, 0xEC26,\n    0xEBDB, 0xEB69, 0xEAD6, 0xEA2B, 0xE971, 0xE8AE, 0xE7EB, 0xE730,\n    0xE686, 0xE5F3, 0xE580, 0xE535, 0xE51B, 0xE532, 0xE574, 0xE5D9,\n    0xE65C, 0xE6F5, 0xE79F, 0xE852, 0xE909, 0xE9BD, 0xEA66, 0xEB00,\n    0xEB82, 0xEBE8, 0xEC29, 0xEC41, 0xB59E, 0xB589, 0xB54F, 0xB4F5,\n    0xB481, 0xB3FB, 0xB369, 0xB2D0, 0xB237, 0xB1A5, 0xB11F, 0xB0AC,\n    0xB052, 0xB017, 0xB002, 0xB014, 0xB048, 0xB097, 0xB0FE, 0xB176,\n    0xB1FC, 0xB288, 0xB318, 0xB3A5, 0xB42A, 0xB4A2, 0xB509, 0xB558,\n    0xB58C, 0xB59E, 0x7FFF, 0x7FFF, 0x4171, 0xBF5F, 0x7FFF, 0x7FFF,\n    0x4171, 0xBF5F, 0x0000, 0x0034, 0x00CA, 0x01B5, 0x02EA, 0x045B,\n    0x05FE, 0x07C6, 0x09A7, 0x0B96, 0x0D85, 0x0F6A, 0x1138, 0x12E3,\n    0x145F, 0x15E8, 0x17B6, 0x19B7, 0x1BD9, 0x1E0B, 0x203B, 0x2256,\n    0x244B, 0x2608, 0x277A, 0x2891, 0x2939, 0x2962, 0x28F9, 0x27ED,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001,\n    0x0006, 0x000D, 0x0015, 0x001F, 0x0028, 0x0030, 0x0037, 0x003C,\n    0x003E, 0x003C, 0x0035, 0x002A, 0x0018, 0x0000, 0xFC62, 0xFC53,\n    0xFC2B, 0xFBEE, 0xFBA1, 0xFB49, 0xFAEA, 0xFA8B, 0xFA2F, 0xF9DB,\n    0xF995, 0xF961, 0xF944, 0xF943, 0xF964, 0xF9AF, 0xFA27, 0xFAC3,\n    0xFB7C, 0xFC4A, 0xFD25, 0xFE06, 0xFEE3, 0xFFB7, 0x0077, 0x011D,\n    0x01A2, 0x01FD, 0x0226, 0x0215, 0x0884, 0x40A1, 0x40A7, 0x40B8,\n    0x40D2, 0x40F4, 0x411B, 0x4145, 0x4172, 0x419E, 0x41C9, 0x41F0,\n    0x4211, 0x422B, 0x423C, 0x4242, 0x423D, 0x422E, 0x4217, 0x41F9,\n    0x41D6, 0x41AF, 0x4186, 0x415D, 0x4134, 0x410D, 0x40EA, 0x40CC,\n    0x40B5, 0x40A6, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_C4.inc.c",
    "content": "static const struct Animation anim_C4[] = {\n    1,\n    189,\n    0,\n    0,\n    0x1E,\n    ANIMINDEX_NUMPARTS(anim_C4_indices),\n    anim_C4_values,\n    anim_C4_indices,\n    0,\n};\n\n\nstatic const u16 anim_C4_indices[] = {\n    0x0001, 0x0000, 0x001E, 0x0001, 0x001E, 0x001F, 0x0001, 0x0000, 0x0001, 0x003D, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x03AD,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x03AC,\n    0x001E, 0x0352, 0x001E, 0x0370, 0x001E, 0x038E,\n    0x0001, 0x034E, 0x0001, 0x034F, 0x0001, 0x0350,\n    0x001E, 0x00B6, 0x001E, 0x00D4, 0x001E, 0x00F2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0098,\n    0x001E, 0x003E, 0x001E, 0x005C, 0x001E, 0x007A,\n    0x0001, 0x034A, 0x0001, 0x034B, 0x0001, 0x034C,\n    0x001E, 0x014C, 0x001E, 0x016A, 0x001E, 0x0188,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x012E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0110,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x034D,\n    0x001E, 0x02F0, 0x001E, 0x030E, 0x001E, 0x032C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x02D2,\n    0x001E, 0x0278, 0x001E, 0x0296, 0x001E, 0x02B4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0351,\n    0x001E, 0x021E, 0x001E, 0x023C, 0x001E, 0x025A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0200,\n    0x001E, 0x01A6, 0x001E, 0x01C4, 0x001E, 0x01E2,\n};\n\nstatic const s16 anim_C4_values[] = {\n    0x0000, 0x00AB, 0x00AB, 0x00A9, 0x00A8, 0x00A6, 0x00A4, 0x00A2,\n    0x00A0, 0x009E, 0x009C, 0x009B, 0x0099, 0x0098, 0x0097, 0x0097,\n    0x0097, 0x0098, 0x0099, 0x009B, 0x009C, 0x009E, 0x00A0, 0x00A2,\n    0x00A4, 0x00A6, 0x00A8, 0x00A9, 0x00AB, 0x00AB, 0x00AC, 0xFFFF,\n    0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001,\n    0x0002, 0x0002, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0002, 0x0002, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x3FFF, 0x0003, 0x000C,\n    0x001A, 0x002C, 0x0041, 0x0058, 0x0071, 0x008A, 0x00A2, 0x00BA,\n    0x00CF, 0x00E1, 0x00EF, 0x00F8, 0x00FB, 0x00F8, 0x00EF, 0x00E1,\n    0x00CF, 0x00BA, 0x00A2, 0x008A, 0x0071, 0x0058, 0x0041, 0x002C,\n    0x001A, 0x000C, 0x0003, 0x0000, 0xF97C, 0xF97D, 0xF97E, 0xF97F,\n    0xF981, 0xF982, 0xF984, 0xF986, 0xF988, 0xF98A, 0xF98B, 0xF98D,\n    0xF98E, 0xF98E, 0xF98F, 0xF98E, 0xF98E, 0xF98D, 0xF98B, 0xF98A,\n    0xF988, 0xF986, 0xF984, 0xF982, 0xF981, 0xF97F, 0xF97E, 0xF97D,\n    0xF97C, 0xF97C, 0xED77, 0xED3F, 0xECE7, 0xEC76, 0xEBF1, 0xEB5E,\n    0xEAC2, 0xEA24, 0xE989, 0xE8F6, 0xE871, 0xE800, 0xE7A8, 0xE76F,\n    0xE75B, 0xE76F, 0xE7A8, 0xE800, 0xE871, 0xE8F6, 0xE989, 0xEA24,\n    0xEAC2, 0xEB5E, 0xEBF1, 0xEC76, 0xECE7, 0xED3F, 0xED77, 0xED8C,\n    0xCA3F, 0xCA12, 0xC9CD, 0xC974, 0xC90B, 0xC897, 0xC81C, 0xC79F,\n    0xC724, 0xC6B0, 0xC647, 0xC5EE, 0xC5A8, 0xC57C, 0xC56C, 0xC57C,\n    0xC5A8, 0xC5EE, 0xC647, 0xC6B0, 0xC724, 0xC79F, 0xC81C, 0xC897,\n    0xC90B, 0xC974, 0xC9CD, 0xCA12, 0xCA3F, 0xCA4F, 0xFAF6, 0xFA87,\n    0xF9DC, 0xF8FF, 0xF7FC, 0xF6DD, 0xF5AE, 0xF47A, 0xF34A, 0xF22C,\n    0xF129, 0xF04C, 0xEFA1, 0xEF32, 0xEF0B, 0xEF32, 0xEFA1, 0xF04C,\n    0xF129, 0xF22C, 0xF34A, 0xF47A, 0xF5AE, 0xF6DD, 0xF7FC, 0xF8FF,\n    0xF9DC, 0xFA87, 0xFAF6, 0xFB1D, 0xD305, 0xD377, 0xD428, 0xD50C,\n    0xD617, 0xD73F, 0xD878, 0xD9B7, 0xDAF0, 0xDC18, 0xDD24, 0xDE08,\n    0xDEB8, 0xDF2B, 0xDF54, 0xDF2B, 0xDEB8, 0xDE08, 0xDD24, 0xDC18,\n    0xDAF0, 0xD9B7, 0xD878, 0xD73F, 0xD617, 0xD50C, 0xD428, 0xD377,\n    0xD305, 0xD2DC, 0xD4EA, 0xD584, 0xD672, 0xD7A5, 0xD90D, 0xDA9B,\n    0xDC40, 0xDDED, 0xDF92, 0xE120, 0xE288, 0xE3BB, 0xE4A9, 0xE543,\n    0xE579, 0xE543, 0xE4A9, 0xE3BB, 0xE288, 0xE120, 0xDF92, 0xDDED,\n    0xDC40, 0xDA9B, 0xD90D, 0xD7A5, 0xD672, 0xD584, 0xD4EA, 0xD4B4,\n    0xF51C, 0xF49D, 0xF3D8, 0xF2DB, 0xF1B2, 0xF069, 0xEF0D, 0xEDAB,\n    0xEC4F, 0xEB06, 0xE9DD, 0xE8E0, 0xE81B, 0xE79C, 0xE76F, 0xE79C,\n    0xE81B, 0xE8E0, 0xE9DD, 0xEB06, 0xEC4F, 0xEDAB, 0xEF0D, 0xF069,\n    0xF1B2, 0xF2DB, 0xF3D8, 0xF49D, 0xF51C, 0xF549, 0xC7E1, 0xC7ED,\n    0xC7FE, 0xC814, 0xC82F, 0xC84C, 0xC86A, 0xC88A, 0xC8A8, 0xC8C5,\n    0xC8DF, 0xC8F6, 0xC907, 0xC912, 0xC916, 0xC912, 0xC907, 0xC8F6,\n    0xC8DF, 0xC8C5, 0xC8A8, 0xC88A, 0xC86A, 0xC84C, 0xC82F, 0xC814,\n    0xC7FE, 0xC7ED, 0xC7E1, 0xC7DD, 0x0579, 0x05F9, 0x06BF, 0x07BE,\n    0x08EA, 0x0A35, 0x0B93, 0x0CF8, 0x0E56, 0x0FA2, 0x10CD, 0x11CC,\n    0x1292, 0x1313, 0x1340, 0x1313, 0x1292, 0x11CC, 0x10CD, 0x0FA2,\n    0x0E56, 0x0CF8, 0x0B93, 0x0A35, 0x08EA, 0x07BE, 0x06BF, 0x05F9,\n    0x0579, 0x054B, 0x2BC3, 0x2B8B, 0x2B35, 0x2AC7, 0x2A45, 0x29B5,\n    0x291D, 0x2882, 0x27EB, 0x275B, 0x26D9, 0x266A, 0x2615, 0x25DD,\n    0x25C9, 0x25DD, 0x2615, 0x266A, 0x26D9, 0x275B, 0x27EB, 0x2882,\n    0x291D, 0x29B5, 0x2A45, 0x2AC7, 0x2B35, 0x2B8B, 0x2BC3, 0x2BD6,\n    0xCD37, 0xCDED, 0xCF06, 0xD070, 0xD21A, 0xD3F1, 0xD5E3, 0xD7DE,\n    0xD9D0, 0xDBA7, 0xDD51, 0xDEBB, 0xDFD5, 0xE08B, 0xE0CB, 0xE08B,\n    0xDFD5, 0xDEBB, 0xDD51, 0xDBA7, 0xD9D0, 0xD7DE, 0xD5E3, 0xD3F1,\n    0xD21A, 0xD070, 0xCF06, 0xCDED, 0xCD37, 0xCCF6, 0x0005, 0x0016,\n    0x0030, 0x0051, 0x0078, 0x00A3, 0x00D1, 0x00FF, 0x012D, 0x0158,\n    0x017F, 0x01A0, 0x01BA, 0x01CB, 0x01D1, 0x01CB, 0x01BA, 0x01A0,\n    0x017F, 0x0158, 0x012D, 0x00FF, 0x00D1, 0x00A3, 0x0078, 0x0051,\n    0x0030, 0x0016, 0x0005, 0x0000, 0xFF32, 0xFF37, 0xFF3E, 0xFF48,\n    0xFF53, 0xFF60, 0xFF6D, 0xFF7B, 0xFF88, 0xFF95, 0xFFA0, 0xFFAA,\n    0xFFB2, 0xFFB6, 0xFFB8, 0xFFB6, 0xFFB2, 0xFFAA, 0xFFA0, 0xFF95,\n    0xFF88, 0xFF7B, 0xFF6D, 0xFF60, 0xFF53, 0xFF48, 0xFF3E, 0xFF37,\n    0xFF32, 0xFF30, 0xC9AE, 0xC936, 0xC87D, 0xC78F, 0xC677, 0xC542,\n    0xC3FB, 0xC2AE, 0xC167, 0xC032, 0xBF1A, 0xBE2C, 0xBD73, 0xBCFC,\n    0xBCD1, 0xBCFC, 0xBD73, 0xBE2C, 0xBF1A, 0xC032, 0xC167, 0xC2AE,\n    0xC3FB, 0xC542, 0xC677, 0xC78F, 0xC87D, 0xC936, 0xC9AE, 0xC9D8,\n    0x1E91, 0x1F5B, 0x2093, 0x2225, 0x23FE, 0x2608, 0x2830, 0x2A63,\n    0x2C8B, 0x2E96, 0x306E, 0x3200, 0x3338, 0x3402, 0x344A, 0x3402,\n    0x3338, 0x3200, 0x306E, 0x2E96, 0x2C8B, 0x2A63, 0x2830, 0x2608,\n    0x23FE, 0x2225, 0x2093, 0x1F5B, 0x1E91, 0x1E4A, 0x1AFA, 0x1AD0,\n    0x1A90, 0x1A3D, 0x19DB, 0x196F, 0x18FD, 0x1889, 0x1817, 0x17AB,\n    0x1749, 0x16F6, 0x16B5, 0x168C, 0x167D, 0x168C, 0x16B5, 0x16F6,\n    0x1749, 0x17AB, 0x1817, 0x1889, 0x18FD, 0x196F, 0x19DB, 0x1A3D,\n    0x1A90, 0x1AD0, 0x1AFA, 0x1B09, 0x1157, 0x118D, 0x11E0, 0x124B,\n    0x12C8, 0x1353, 0x13E6, 0x147B, 0x150E, 0x1599, 0x1616, 0x1681,\n    0x16D4, 0x170A, 0x171D, 0x170A, 0x16D4, 0x1681, 0x1616, 0x1599,\n    0x150E, 0x147B, 0x13E6, 0x1353, 0x12C8, 0x124B, 0x11E0, 0x118D,\n    0x1157, 0x1144, 0xAC25, 0xABCE, 0xAB47, 0xAA99, 0xA9CD, 0xA8EC,\n    0xA7FD, 0xA70A, 0xA61C, 0xA53A, 0xA46E, 0xA3C0, 0xA33A, 0xA2E2,\n    0xA2C3, 0xA2E2, 0xA33A, 0xA3C0, 0xA46E, 0xA53A, 0xA61C, 0xA70A,\n    0xA7FD, 0xA8EC, 0xA9CD, 0xAA99, 0xAB47, 0xABCE, 0xAC25, 0xAC44,\n    0xFFFB, 0xFFED, 0xFFD6, 0xFFBA, 0xFF98, 0xFF72, 0xFF4B, 0xFF22,\n    0xFEFB, 0xFED5, 0xFEB3, 0xFE96, 0xFE80, 0xFE71, 0xFE6C, 0xFE71,\n    0xFE80, 0xFE96, 0xFEB3, 0xFED5, 0xFEFB, 0xFF22, 0xFF4B, 0xFF72,\n    0xFF98, 0xFFBA, 0xFFD6, 0xFFED, 0xFFFB, 0x0000, 0xFFFF, 0xFFFB,\n    0xFFF6, 0xFFEE, 0xFFE6, 0xFFDC, 0xFFD2, 0xFFC8, 0xFFBE, 0xFFB4,\n    0xFFAB, 0xFFA4, 0xFF9E, 0xFF9B, 0xFF99, 0xFF9B, 0xFF9E, 0xFFA4,\n    0xFFAB, 0xFFB4, 0xFFBE, 0xFFC8, 0xFFD2, 0xFFDC, 0xFFE6, 0xFFEE,\n    0xFFF6, 0xFFFB, 0xFFFF, 0x0000, 0xBF1F, 0xBEC2, 0xBE31, 0xBD77,\n    0xBC9D, 0xBBAB, 0xBAAC, 0xB9A7, 0xB8A8, 0xB7B6, 0xB6DC, 0xB622,\n    0xB591, 0xB534, 0xB513, 0xB534, 0xB591, 0xB622, 0xB6DC, 0xB7B6,\n    0xB8A8, 0xB9A7, 0xBAAC, 0xBBAB, 0xBC9D, 0xBD77, 0xBE31, 0xBEC2,\n    0xBF1F, 0xBF40, 0x2571, 0x2616, 0x2714, 0x285C, 0x29DC, 0x2B86,\n    0x2D48, 0x2F12, 0x30D4, 0x327E, 0x33FF, 0x3547, 0x3645, 0x36E9,\n    0x3724, 0x36E9, 0x3645, 0x3547, 0x33FF, 0x327E, 0x30D4, 0x2F12,\n    0x2D48, 0x2B86, 0x29DC, 0x285C, 0x2714, 0x2616, 0x2571, 0x2537,\n    0xD654, 0xD670, 0xD69C, 0xD6D3, 0xD715, 0xD75D, 0xD7AA, 0xD7F8,\n    0xD845, 0xD88D, 0xD8CF, 0xD907, 0xD932, 0xD94E, 0xD958, 0xD94E,\n    0xD932, 0xD907, 0xD8CF, 0xD88D, 0xD845, 0xD7F8, 0xD7AA, 0xD75D,\n    0xD715, 0xD6D3, 0xD69C, 0xD670, 0xD654, 0xD64A, 0xEC29, 0xEBE8,\n    0xEB82, 0xEB00, 0xEA66, 0xE9BD, 0xE909, 0xE852, 0xE79F, 0xE6F5,\n    0xE65C, 0xE5D9, 0xE574, 0xE532, 0xE51B, 0xE532, 0xE574, 0xE5D9,\n    0xE65C, 0xE6F5, 0xE79F, 0xE852, 0xE909, 0xE9BD, 0xEA66, 0xEB00,\n    0xEB82, 0xEBE8, 0xEC29, 0xEC41, 0xB58C, 0xB558, 0xB509, 0xB4A2,\n    0xB42A, 0xB3A5, 0xB318, 0xB288, 0xB1FC, 0xB176, 0xB0FE, 0xB097,\n    0xB048, 0xB014, 0xB002, 0xB014, 0xB048, 0xB097, 0xB0FE, 0xB176,\n    0xB1FC, 0xB288, 0xB318, 0xB3A5, 0xB42A, 0xB4A2, 0xB509, 0xB558,\n    0xB58C, 0xB59E, 0x7FFF, 0x7FFF, 0x4171, 0xBF5F, 0x7FFF, 0x7FFF,\n    0x4171, 0xBF5F, 0x2617, 0x2370, 0x2016, 0x1C26, 0x17BD, 0x12F7,\n    0x0DF3, 0x08CD, 0x03A2, 0xFE91, 0xF9B5, 0xF52B, 0xF112, 0xED85,\n    0xEAA3, 0xE839, 0xE602, 0xE400, 0xE232, 0xE099, 0xDF36, 0xDE09,\n    0xDD12, 0xDC53, 0xDBCC, 0xDB7E, 0xDB68, 0xDB8C, 0xDBEA, 0xDC83,\n    0xFFE1, 0xFFB9, 0xFF8C, 0xFF58, 0xFF21, 0xFEE5, 0xFEA7, 0xFE66,\n    0xFE25, 0xFDE3, 0xFDA2, 0xFD63, 0xFD26, 0xFCED, 0xFCB8, 0xFC81,\n    0xFC44, 0xFC02, 0xFBBD, 0xFB77, 0xFB31, 0xFAEE, 0xFAB0, 0xFA77,\n    0xFA47, 0xFA21, 0xFA06, 0xF9F8, 0xF9FA, 0xFA0D, 0x01BF, 0x0124,\n    0x004F, 0xFF4C, 0xFE23, 0xFCE0, 0xFB8D, 0xFA35, 0xF8E3, 0xF7A1,\n    0xF67A, 0xF579, 0xF4A8, 0xF411, 0xF3C1, 0xF3B7, 0xF3EA, 0xF452,\n    0xF4E4, 0xF59B, 0xF66C, 0xF750, 0xF83E, 0xF92D, 0xFA17, 0xFAF1,\n    0xFBB4, 0xFC58, 0xFCD3, 0xFD1E, 0x0884, 0x40A6, 0x40B5, 0x40CC,\n    0x40EA, 0x410D, 0x4134, 0x415D, 0x4186, 0x41AF, 0x41D6, 0x41F9,\n    0x4217, 0x422E, 0x423D, 0x4242, 0x423D, 0x422E, 0x4217, 0x41F9,\n    0x41D6, 0x41AF, 0x4186, 0x415D, 0x4134, 0x410D, 0x40EA, 0x40CC,\n    0x40B5, 0x40A6, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_C5.inc.c",
    "content": "static const struct Animation anim_C5[] = {\n    1,\n    189,\n    0,\n    0,\n    0x1E,\n    ANIMINDEX_NUMPARTS(anim_C5_indices),\n    anim_C5_values,\n    anim_C5_indices,\n    0,\n};\n\n\nstatic const u16 anim_C5_indices[] = {\n    0x0001, 0x0000, 0x001E, 0x0001, 0x001E, 0x001F, 0x0001, 0x0000, 0x0001, 0x003D, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x03AD,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x03AC,\n    0x001E, 0x0352, 0x001E, 0x0370, 0x001E, 0x038E,\n    0x0001, 0x034E, 0x0001, 0x034F, 0x0001, 0x0350,\n    0x001E, 0x00B6, 0x001E, 0x00D4, 0x001E, 0x00F2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0098,\n    0x001E, 0x003E, 0x001E, 0x005C, 0x001E, 0x007A,\n    0x0001, 0x034A, 0x0001, 0x034B, 0x0001, 0x034C,\n    0x001E, 0x014C, 0x001E, 0x016A, 0x001E, 0x0188,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x012E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0110,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x034D,\n    0x001E, 0x02F0, 0x001E, 0x030E, 0x001E, 0x032C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x02D2,\n    0x001E, 0x0278, 0x001E, 0x0296, 0x001E, 0x02B4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0351,\n    0x001E, 0x021E, 0x001E, 0x023C, 0x001E, 0x025A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x0200,\n    0x001E, 0x01A6, 0x001E, 0x01C4, 0x001E, 0x01E2,\n};\n\nstatic const s16 anim_C5_values[] = {\n    0x0000, 0x00AB, 0x00AB, 0x00A9, 0x00A8, 0x00A6, 0x00A4, 0x00A2,\n    0x00A0, 0x009E, 0x009C, 0x009B, 0x0099, 0x0098, 0x0097, 0x0097,\n    0x0097, 0x0098, 0x0099, 0x009B, 0x009C, 0x009E, 0x00A0, 0x00A2,\n    0x00A4, 0x00A6, 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AB, 0xFFFF,\n    0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001,\n    0x0002, 0x0002, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003,\n    0x0003, 0x0002, 0x0002, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x3FFF, 0x0003, 0x000C,\n    0x001A, 0x002C, 0x0041, 0x0058, 0x0071, 0x008A, 0x00A2, 0x00BA,\n    0x00CF, 0x00E1, 0x00EF, 0x00F8, 0x00FB, 0x00F8, 0x00EF, 0x00E1,\n    0x00D0, 0x00BB, 0x00A4, 0x008B, 0x0073, 0x005A, 0x0043, 0x002E,\n    0x001D, 0x000F, 0x0006, 0x0003, 0xF97C, 0xF97D, 0xF97E, 0xF97F,\n    0xF981, 0xF982, 0xF984, 0xF986, 0xF988, 0xF98A, 0xF98B, 0xF98D,\n    0xF98E, 0xF98E, 0xF98F, 0xF98E, 0xF98E, 0xF98D, 0xF98B, 0xF98A,\n    0xF988, 0xF986, 0xF984, 0xF983, 0xF981, 0xF97F, 0xF97E, 0xF97D,\n    0xF97C, 0xF97C, 0xED77, 0xED3F, 0xECE7, 0xEC76, 0xEBF2, 0xEB5F,\n    0xEAC4, 0xEA26, 0xE98A, 0xE8F7, 0xE872, 0xE801, 0xE7A9, 0xE770,\n    0xE75B, 0xE76E, 0xE7A6, 0xE7FD, 0xE86C, 0xE8EF, 0xE980, 0xEA1A,\n    0xEAB6, 0xEB50, 0xEBE1, 0xEC64, 0xECD4, 0xED2B, 0xED63, 0xED77,\n    0xCA3F, 0xCA12, 0xC9CD, 0xC973, 0xC90A, 0xC896, 0xC81B, 0xC79E,\n    0xC723, 0xC6AF, 0xC646, 0xC5ED, 0xC5A8, 0xC57B, 0xC56C, 0xC57C,\n    0xC5AA, 0xC5F1, 0xC64B, 0xC6B6, 0xC72C, 0xC7A8, 0xC826, 0xC8A3,\n    0xC918, 0xC982, 0xC9DD, 0xCA23, 0xCA50, 0xCA61, 0xFAF6, 0xFA87,\n    0xF9DC, 0xF900, 0xF7FD, 0xF6DF, 0xF5B0, 0xF47C, 0xF34D, 0xF22F,\n    0xF12C, 0xF04F, 0xEFA3, 0xEF33, 0xEF0B, 0xEF30, 0xEF9D, 0xF045,\n    0xF11F, 0xF21F, 0xF33A, 0xF465, 0xF596, 0xF6C2, 0xF7DD, 0xF8DD,\n    0xF9B8, 0xFA61, 0xFACF, 0xFAF6, 0xD305, 0xD377, 0xD427, 0xD50B,\n    0xD616, 0xD73D, 0xD876, 0xD9B4, 0xDAED, 0xDC15, 0xDD21, 0xDE05,\n    0xDEB6, 0xDF2A, 0xDF54, 0xDF2D, 0xDEBC, 0xDE0E, 0xDD2E, 0xDC26,\n    0xDB01, 0xD9CC, 0xD891, 0xD75C, 0xD637, 0xD52E, 0xD44D, 0xD39E,\n    0xD32D, 0xD305, 0xD4EA, 0xD584, 0xD671, 0xD7A3, 0xD90B, 0xDA98,\n    0xDC3D, 0xDDE9, 0xDF8E, 0xE11C, 0xE284, 0xE3B7, 0xE4A6, 0xE541,\n    0xE579, 0xE545, 0xE4AE, 0xE3C4, 0xE296, 0xE132, 0xDFA9, 0xDE09,\n    0xDC61, 0xDAC1, 0xD937, 0xD7D3, 0xD6A4, 0xD5B9, 0xD520, 0xD4EA,\n    0xF51C, 0xF49D, 0xF3D9, 0xF2DC, 0xF1B4, 0xF06B, 0xEF10, 0xEDAE,\n    0xEC53, 0xEB0A, 0xE9E0, 0xE8E3, 0xE81E, 0xE79E, 0xE76F, 0xE79A,\n    0xE817, 0xE8D8, 0xE9D2, 0xEAF7, 0xEC3C, 0xED94, 0xEEF2, 0xF04A,\n    0xF18F, 0xF2B5, 0xF3AF, 0xF472, 0xF4EF, 0xF51C, 0xC7E1, 0xC7EC,\n    0xC7FD, 0xC813, 0xC82D, 0xC84A, 0xC868, 0xC887, 0xC8A6, 0xC8C3,\n    0xC8DD, 0xC8F4, 0xC905, 0xC911, 0xC916, 0xC914, 0xC90B, 0xC8FC,\n    0xC8E8, 0xC8D1, 0xC8B7, 0xC89B, 0xC87F, 0xC864, 0xC849, 0xC832,\n    0xC81E, 0xC80E, 0xC804, 0xC800, 0x0579, 0x05F9, 0x06BE, 0x07BD,\n    0x08E8, 0x0A33, 0x0B91, 0x0CF5, 0x0E53, 0x0F9E, 0x10CA, 0x11CA,\n    0x1290, 0x1311, 0x1340, 0x1314, 0x1297, 0x11D4, 0x10D9, 0x0FB1,\n    0x0E6A, 0x0D10, 0x0BAF, 0x0A55, 0x090D, 0x07E5, 0x06E8, 0x0625,\n    0x05A6, 0x0579, 0x2BC3, 0x2B8B, 0x2B35, 0x2AC7, 0x2A45, 0x29B6,\n    0x291E, 0x2884, 0x27EC, 0x275C, 0x26DA, 0x266C, 0x2616, 0x25DE,\n    0x25C9, 0x25DC, 0x2613, 0x2667, 0x26D4, 0x2754, 0x27E2, 0x2878,\n    0x2911, 0x29A7, 0x2A35, 0x2AB6, 0x2B23, 0x2B78, 0x2BAF, 0x2BC3,\n    0xCD36, 0xCDEC, 0xCF05, 0xD06F, 0xD218, 0xD3EE, 0xD5DF, 0xD7DA,\n    0xD9CB, 0xDBA2, 0xDD4C, 0xDEB7, 0xDFD1, 0xE089, 0xE0CB, 0xE08D,\n    0xDFDB, 0xDEC6, 0xDD61, 0xDBBC, 0xD9EB, 0xD7FF, 0xD60A, 0xD41E,\n    0xD24D, 0xD0A7, 0xCF41, 0xCE2B, 0xCD77, 0xCD37, 0x0005, 0x0016,\n    0x0030, 0x0051, 0x0078, 0x00A3, 0x00D0, 0x00FF, 0x012C, 0x0158,\n    0x017F, 0x01A0, 0x01BA, 0x01CA, 0x01D1, 0x01CD, 0x01C2, 0x01B0,\n    0x0198, 0x017C, 0x015B, 0x0138, 0x0111, 0x00E9, 0x00C1, 0x0098,\n    0x0070, 0x004A, 0x0026, 0x0005, 0xFF32, 0xFF37, 0xFF3E, 0xFF48,\n    0xFF53, 0xFF60, 0xFF6D, 0xFF7B, 0xFF88, 0xFF95, 0xFFA0, 0xFFAA,\n    0xFFB1, 0xFFB6, 0xFFB8, 0xFFB7, 0xFFB4, 0xFFAF, 0xFFA8, 0xFF9F,\n    0xFF96, 0xFF8B, 0xFF80, 0xFF74, 0xFF69, 0xFF5D, 0xFF51, 0xFF46,\n    0xFF3B, 0xFF32, 0xC9AE, 0xC936, 0xC87E, 0xC790, 0xC679, 0xC544,\n    0xC3FE, 0xC2B1, 0xC16A, 0xC035, 0xBF1D, 0xBE2F, 0xBD75, 0xBCFD,\n    0xBCD1, 0xBCEC, 0xBD3C, 0xBDBB, 0xBE64, 0xBF30, 0xC019, 0xC11A,\n    0xC22C, 0xC34A, 0xC46F, 0xC593, 0xC6B1, 0xC7C4, 0xC8C4, 0xC9AE,\n    0x1E91, 0x1F5B, 0x2092, 0x2224, 0x23FB, 0x2605, 0x282C, 0x2A5E,\n    0x2C86, 0x2E90, 0x3069, 0x31FB, 0x3335, 0x3400, 0x344A, 0x341C,\n    0x3395, 0x32BE, 0x31A2, 0x3049, 0x2EBF, 0x2D0E, 0x2B3E, 0x295B,\n    0x276D, 0x2580, 0x239C, 0x21CD, 0x201B, 0x1E91, 0x1AFA, 0x1AD0,\n    0x1A90, 0x1A3D, 0x19DC, 0x1970, 0x18FE, 0x188A, 0x1818, 0x17AC,\n    0x174A, 0x16F7, 0x16B6, 0x168C, 0x167D, 0x1686, 0x16A2, 0x16CF,\n    0x1709, 0x1751, 0x17A2, 0x17FC, 0x185B, 0x18BF, 0x1925, 0x198B,\n    0x19EF, 0x1A4F, 0x1AA9, 0x1AFA, 0x1157, 0x118D, 0x11E0, 0x124A,\n    0x12C8, 0x1352, 0x13E5, 0x147A, 0x150D, 0x1598, 0x1615, 0x1680,\n    0x16D3, 0x1709, 0x171D, 0x1711, 0x16ED, 0x16B4, 0x1668, 0x160D,\n    0x15A4, 0x1531, 0x14B6, 0x1435, 0x13B2, 0x132F, 0x12AE, 0x1233,\n    0x11C0, 0x1157, 0xAC25, 0xABCE, 0xAB47, 0xAA9A, 0xA9CE, 0xA8ED,\n    0xA7FF, 0xA70C, 0xA61E, 0xA53C, 0xA470, 0xA3C2, 0xA33B, 0xA2E3,\n    0xA2C3, 0xA2D7, 0xA312, 0xA36E, 0xA3E9, 0xA47E, 0xA528, 0xA5E3,\n    0xA6AC, 0xA77C, 0xA851, 0xA926, 0xA9F7, 0xAABF, 0xAB7B, 0xAC25,\n    0xFFFB, 0xFFED, 0xFFD7, 0xFFBA, 0xFF98, 0xFF72, 0xFF4B, 0xFF23,\n    0xFEFB, 0xFED5, 0xFEB4, 0xFE97, 0xFE80, 0xFE72, 0xFE6C, 0xFE70,\n    0xFE79, 0xFE89, 0xFE9D, 0xFEB6, 0xFED2, 0xFEF1, 0xFF12, 0xFF35,\n    0xFF59, 0xFF7C, 0xFF9F, 0xFFC0, 0xFFDF, 0xFFFB, 0xFFFF, 0xFFFB,\n    0xFFF6, 0xFFEE, 0xFFE6, 0xFFDC, 0xFFD2, 0xFFC8, 0xFFBE, 0xFFB4,\n    0xFFAC, 0xFFA4, 0xFF9E, 0xFF9B, 0xFF99, 0xFF9A, 0xFF9D, 0xFFA1,\n    0xFFA6, 0xFFAC, 0xFFB3, 0xFFBB, 0xFFC4, 0xFFCD, 0xFFD6, 0xFFDF,\n    0xFFE8, 0xFFF0, 0xFFF8, 0xFFFF, 0xBF1F, 0xBEC2, 0xBE32, 0xBD78,\n    0xBC9E, 0xBBAD, 0xBAAE, 0xB9AA, 0xB8AA, 0xB7B9, 0xB6DE, 0xB624,\n    0xB593, 0xB535, 0xB513, 0xB528, 0xB566, 0xB5CA, 0xB64D, 0xB6ED,\n    0xB7A3, 0xB86C, 0xB942, 0xBA22, 0xBB06, 0xBBEA, 0xBCCA, 0xBDA0,\n    0xBE69, 0xBF1F, 0x2571, 0x2615, 0x2713, 0x285A, 0x29DA, 0x2B83,\n    0x2D45, 0x2F0F, 0x30D0, 0x327A, 0x33FB, 0x3543, 0x3642, 0x36E8,\n    0x3724, 0x36FF, 0x3690, 0x35E1, 0x34FA, 0x33E1, 0x32A0, 0x313F,\n    0x2FC5, 0x2E3B, 0x2CA9, 0x2B17, 0x298D, 0x2813, 0x26B2, 0x2571,\n    0xD654, 0xD670, 0xD69B, 0xD6D3, 0xD715, 0xD75D, 0xD7AA, 0xD7F8,\n    0xD844, 0xD88D, 0xD8CE, 0xD906, 0xD932, 0xD94E, 0xD958, 0xD952,\n    0xD93F, 0xD921, 0xD8FA, 0xD8CA, 0xD893, 0xD857, 0xD817, 0xD7D4,\n    0xD78F, 0xD74B, 0xD707, 0xD6C7, 0xD68B, 0xD654, 0xEC2A, 0xEBE8,\n    0xEB83, 0xEB00, 0xEA67, 0xE9BE, 0xE90B, 0xE854, 0xE7A1, 0xE6F7,\n    0xE65D, 0xE5DB, 0xE575, 0xE533, 0xE51B, 0xE52A, 0xE556, 0xE59B,\n    0xE5F8, 0xE668, 0xE6E8, 0xE775, 0xE80B, 0xE8A8, 0xE949, 0xE9E9,\n    0xEA86, 0xEB1D, 0xEBA9, 0xEC29, 0xB58C, 0xB559, 0xB509, 0xB4A3,\n    0xB42B, 0xB3A6, 0xB319, 0xB28A, 0xB1FD, 0xB178, 0xB0FF, 0xB099,\n    0xB049, 0xB015, 0xB002, 0xB00E, 0xB030, 0xB067, 0xB0AF, 0xB107,\n    0xB16C, 0xB1DA, 0xB250, 0xB2CC, 0xB34A, 0xB3C7, 0xB443, 0xB4B9,\n    0xB527, 0xB58C, 0x7FFF, 0x7FFF, 0x4171, 0xBF5F, 0x7FFF, 0x7FFF,\n    0x4171, 0xBF5F, 0xDD83, 0xDF09, 0xE101, 0xE358, 0xE5FB, 0xE8D7,\n    0xEBD8, 0xEEEA, 0xF1FB, 0xF4F7, 0xF7CA, 0xFA62, 0xFCAA, 0xFE90,\n    0x0000, 0x0107, 0x01C6, 0x0245, 0x028B, 0x02A0, 0x028E, 0x025A,\n    0x020F, 0x01B4, 0x0150, 0x00EC, 0x0091, 0x0045, 0x0012, 0x0000,\n    0xFA36, 0xFA75, 0xFAC9, 0xFB2D, 0xFB9E, 0xFC19, 0xFC9A, 0xFD1E,\n    0xFDA3, 0xFE24, 0xFE9E, 0xFF0E, 0xFF71, 0xFFC3, 0x0000, 0x002C,\n    0x004C, 0x0061, 0x006D, 0x0070, 0x006D, 0x0065, 0x0058, 0x0049,\n    0x0038, 0x0027, 0x0018, 0x000B, 0x0003, 0x0000, 0xFD3C, 0xFD3A,\n    0xFD1A, 0xFCE3, 0xFC99, 0xFC3F, 0xFBDB, 0xFB72, 0xFB07, 0xFA9F,\n    0xFA3E, 0xF9EA, 0xF9A7, 0xF978, 0xF964, 0xF968, 0xF980, 0xF9A7,\n    0xF9DD, 0xFA1C, 0xFA64, 0xFAB0, 0xFAFE, 0xFB4B, 0xFB94, 0xFBD6,\n    0xFC0F, 0xFC3B, 0xFC58, 0xFC62, 0x0884, 0x40A6, 0x40B5, 0x40CC,\n    0x40EA, 0x410D, 0x4134, 0x415C, 0x4186, 0x41AF, 0x41D6, 0x41F9,\n    0x4217, 0x422E, 0x423D, 0x4242, 0x423F, 0x4235, 0x4225, 0x4210,\n    0x41F6, 0x41D9, 0x41B9, 0x4197, 0x4173, 0x414E, 0x412A, 0x4106,\n    0x40E4, 0x40C4, 0x40A6,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_C6.inc.c",
    "content": "static const struct Animation anim_C6[] = {\n    0,\n    189,\n    0,\n    0,\n    0x32,\n    ANIMINDEX_NUMPARTS(anim_C6_indices),\n    anim_C6_values,\n    anim_C6_indices,\n    0,\n};\n\n\nstatic const u16 anim_C6_indices[] = {\n    0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0003, 0x0001, 0x0000,\n    0x0032, 0x02AB, 0x0032, 0x02DD, 0x0032, 0x030F,\n    0x0032, 0x0215, 0x0032, 0x0247, 0x0032, 0x0279,\n    0x0032, 0x01E1, 0x0001, 0x0213, 0x0001, 0x0214,\n    0x0001, 0x01DD, 0x0001, 0x01DE, 0x0001, 0x01DF,\n    0x0032, 0x0008, 0x0032, 0x003A, 0x0032, 0x006C,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0007,\n    0x0001, 0x0004, 0x0001, 0x0005, 0x0001, 0x0006,\n    0x0001, 0x01D9, 0x0001, 0x01DA, 0x0001, 0x01DB,\n    0x0032, 0x00D3, 0x0032, 0x0105, 0x0032, 0x0137,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x00A1,\n    0x0001, 0x009E, 0x0001, 0x009F, 0x0001, 0x00A0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01DC,\n    0x0001, 0x01D6, 0x0001, 0x01D7, 0x0001, 0x01D8,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x01A4,\n    0x0001, 0x01A1, 0x0001, 0x01A2, 0x0001, 0x01A3,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01E0,\n    0x0001, 0x019E, 0x0001, 0x019F, 0x0001, 0x01A0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x016C,\n    0x0001, 0x0169, 0x0001, 0x016A, 0x0001, 0x016B,\n};\n\nstatic const s16 anim_C6_values[] = {\n    0x0000, 0xFFBB, 0x00BD, 0x3FFF, 0xFF8A, 0xF980, 0xF06F, 0xF085,\n    0x4B74, 0x4B53, 0x4AF8, 0x4A70, 0x49C9, 0x490D, 0x484C, 0x4791,\n    0x46E9, 0x4661, 0x4606, 0x45E5, 0x45F9, 0x462F, 0x4684, 0x46F1,\n    0x4771, 0x47FE, 0x4892, 0x4928, 0x49BB, 0x4A45, 0x4AC0, 0x4B27,\n    0x4B74, 0x4BAD, 0x4BDB, 0x4BFE, 0x4C1A, 0x4C2D, 0x4C3A, 0x4C42,\n    0x4C45, 0x4C46, 0x4C44, 0x4C41, 0x4C3F, 0x4C3E, 0x4C3A, 0x4C2F,\n    0x4C1E, 0x4C0A, 0x4BF2, 0x4BD9, 0x4BC0, 0x4BA9, 0x4B94, 0x4B83,\n    0x4B78, 0x4B74, 0xD899, 0xD88B, 0xD863, 0xD826, 0xD7DC, 0xD789,\n    0xD734, 0xD6E1, 0xD697, 0xD65B, 0xD632, 0xD624, 0xD62D, 0xD647,\n    0xD66F, 0xD6A2, 0xD6DE, 0xD71F, 0xD763, 0xD7A7, 0xD7E8, 0xD824,\n    0xD857, 0xD87F, 0xD899, 0xD8A7, 0xD8AA, 0xD8A6, 0xD89B, 0xD88B,\n    0xD877, 0xD861, 0xD84B, 0xD835, 0xD822, 0xD812, 0xD807, 0xD804,\n    0xD807, 0xD80F, 0xD81B, 0xD82A, 0xD83C, 0xD84F, 0xD861, 0xD873,\n    0xD882, 0xD88E, 0xD897, 0xD899, 0x3DBE, 0x3DE6, 0x3E54, 0x3EF8,\n    0x3FC2, 0x40A4, 0x418E, 0x426F, 0x433A, 0x43DE, 0x444B, 0x4473,\n    0x445C, 0x441A, 0x43B3, 0x4330, 0x4296, 0x41EC, 0x4139, 0x4084,\n    0x3FD2, 0x3F2C, 0x3E98, 0x3E1B, 0x3DBE, 0x3D7A, 0x3D43, 0x3D17,\n    0x3CF7, 0x3CDF, 0x3CCF, 0x3CC6, 0x3CC2, 0x3CC1, 0x3CC3, 0x3CC7,\n    0x3CC9, 0x3CCB, 0x3CD0, 0x3CDD, 0x3CF1, 0x3D0A, 0x3D26, 0x3D44,\n    0x3D63, 0x3D7F, 0x3D98, 0x3DAC, 0x3DB9, 0x3DBE, 0x0F57, 0x0217,\n    0xF7EF, 0xF913, 0xF907, 0xF8E3, 0xF8AA, 0xF85C, 0xF7FB, 0xF78A,\n    0xF709, 0xF67A, 0xF5DF, 0xF539, 0xF48A, 0xF3D4, 0xF318, 0xF258,\n    0xF196, 0xF0D2, 0xF00F, 0xEF4F, 0xEE92, 0xEDDB, 0xED2A, 0xEC83,\n    0xEBE6, 0xEB55, 0xEAD1, 0xEA4A, 0xE9B3, 0xE912, 0xE86E, 0xE7CE,\n    0xE73A, 0xE6B7, 0xE64D, 0xE602, 0xE5DE, 0xE5E7, 0xE624, 0xE69D,\n    0xE789, 0xE904, 0xEAED, 0xED20, 0xEF79, 0xF1D6, 0xF414, 0xF60F,\n    0xF7A5, 0xF8B2, 0xF913, 0x1E40, 0x1E5A, 0x1EA0, 0x1F09, 0x1F8A,\n    0x2018, 0x20A9, 0x2133, 0x21AB, 0x2207, 0x223D, 0x2242, 0x220E,\n    0x21A7, 0x2118, 0x206B, 0x1FAE, 0x1EEB, 0x1E2D, 0x1D7F, 0x1CEE,\n    0x1C84, 0x1C4C, 0x1C50, 0x1C89, 0x1CEB, 0x1D6A, 0x1DF9, 0x1E8D,\n    0x1F19, 0x1F92, 0x1FEA, 0x2017, 0x2023, 0x2022, 0x2016, 0x2000,\n    0x1FE3, 0x1FBF, 0x1F96, 0x1F6A, 0x1F3C, 0x1F0D, 0x1EE0, 0x1EB6,\n    0x1E8F, 0x1E6F, 0x1E56, 0x1E46, 0x1E40, 0x2243, 0x224C, 0x2264,\n    0x2285, 0x22AA, 0x22CC, 0x22E8, 0x22F6, 0x22F2, 0x22D5, 0x229B,\n    0x223E, 0x21AA, 0x20DA, 0x1FDC, 0x1EC0, 0x1D95, 0x1C69, 0x1B4C,\n    0x1A4D, 0x197A, 0x18E3, 0x1897, 0x18A5, 0x1906, 0x19A9, 0x1A7B,\n    0x1B6C, 0x1C69, 0x1D61, 0x1E42, 0x1EFB, 0x1F7A, 0x1FD2, 0x2024,\n    0x206F, 0x20B4, 0x20F3, 0x212C, 0x215F, 0x218D, 0x21B5, 0x21D7,\n    0x21F5, 0x220E, 0x2221, 0x2230, 0x223B, 0x2241, 0x2243, 0xD907,\n    0xD929, 0xD984, 0xDA0D, 0xDAB4, 0xDB6D, 0xDC29, 0xDCDC, 0xDD77,\n    0xDDEE, 0xDE32, 0xDE35, 0xDDEE, 0xDD61, 0xDCA0, 0xDBB9, 0xDABC,\n    0xD9B6, 0xD8B8, 0xD7D0, 0xD70E, 0xD680, 0xD637, 0xD63D, 0xD68B,\n    0xD70F, 0xD7BB, 0xD87D, 0xD945, 0xDA02, 0xDAA6, 0xDB1E, 0xDB5C,\n    0xDB6E, 0xDB6F, 0xDB61, 0xDB47, 0xDB22, 0xDAF5, 0xDAC0, 0xDA88,\n    0xDA4C, 0xDA11, 0xD9D6, 0xD99F, 0xD96E, 0xD944, 0xD924, 0xD90F,\n    0xD907, 0x001B, 0x025B, 0xCB25, 0x41BC, 0x41C5, 0x41E0, 0x420A,\n    0x4243, 0x4288, 0x42D7, 0x4330, 0x438F, 0x43F3, 0x445C, 0x44C6,\n    0x4530, 0x4599, 0x45FE, 0x465E, 0x46B7, 0x4708, 0x474F, 0x4789,\n    0x47B6, 0x47D3, 0x47DF, 0x47D8, 0x47B1, 0x4761, 0x46EE, 0x465E,\n    0x45B7, 0x44FF, 0x443B, 0x4371, 0x42A8, 0x41E4, 0x412C, 0x4085,\n    0x3FF5, 0x3F83, 0x3F33, 0x3F11, 0x3F1B, 0x3F4A, 0x3F95, 0x3FF2,\n    0x4059, 0x40C1, 0x4122, 0x4171, 0x41A8, 0x41BC, 0x0FA0, 0x09D7,\n    0xB72D, 0x001D, 0xFEE1, 0xDE31, 0x12BD, 0x12EA, 0x1365, 0x1421,\n    0x150F, 0x1621, 0x1747, 0x1875, 0x199B, 0x1AAB, 0x1B97, 0x1C4F,\n    0x1CC6, 0x1CED, 0x1CBB, 0x1C3A, 0x1B77, 0x1A83, 0x1969, 0x183A,\n    0x1702, 0x15D1, 0x14B4, 0x13BA, 0x12F0, 0x1266, 0x1229, 0x123A,\n    0x128B, 0x1312, 0x13C3, 0x1495, 0x157E, 0x1672, 0x1768, 0x1856,\n    0x1930, 0x19EE, 0x1A84, 0x1AE8, 0x1B10, 0x1ACC, 0x1A0B, 0x18F0,\n    0x179F, 0x163C, 0x14EA, 0x13CC, 0x1307, 0x12BD, 0xEB85, 0xFDA0,\n    0xCD0E, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171,\n    0xBF5F, 0x0B13, 0x0AF9, 0x0AB2, 0x0A43, 0x09B6, 0x0910, 0x085A,\n    0x079B, 0x06D9, 0x061D, 0x056D, 0x04D1, 0x0451, 0x03F3, 0x03C0,\n    0x03BD, 0x03E8, 0x0435, 0x04A1, 0x0526, 0x05C1, 0x066F, 0x072A,\n    0x07EF, 0x08B9, 0x0986, 0x0A50, 0x0B14, 0x0BCD, 0x0C77, 0x0D0F,\n    0x0D91, 0x0DF7, 0x0E3F, 0x0E67, 0x0E71, 0x0E62, 0x0E3D, 0x0E05,\n    0x0DC0, 0x0D6F, 0x0D17, 0x0CBC, 0x0C61, 0x0C0A, 0x0BBB, 0x0B77,\n    0x0B42, 0x0B1F, 0x0B13, 0x0183, 0x195D, 0xEFE6, 0xEFED, 0xEFFE,\n    0xF019, 0xF03A, 0xF05E, 0xF084, 0xF0A9, 0xF0CA, 0xF0E4, 0xF0F6,\n    0xF0FC, 0xF0F6, 0xF0E5, 0xF0CC, 0xF0AC, 0xF088, 0xF063, 0xF03F,\n    0xF01E, 0xF002, 0xEFEE, 0xEFE4, 0xEFE6, 0xEFF7, 0xF015, 0xF03C,\n    0xF06C, 0xF0A2, 0xF0DA, 0xF113, 0xF14A, 0xF17C, 0xF1A8, 0xF1CA,\n    0xF1E0, 0xF1E8, 0xF1E0, 0xF1C8, 0xF1A3, 0xF174, 0xF13F, 0xF105,\n    0xF0CA, 0xF090, 0xF05A, 0xF02C, 0xF007, 0xEFEF, 0xEFE6, 0x11D7,\n    0x11CC, 0x11AE, 0x1180, 0x1148, 0x1109, 0x10C8, 0x1089, 0x1050,\n    0x1023, 0x1004, 0x0FF9, 0x1004, 0x1020, 0x104B, 0x1080, 0x10BC,\n    0x10FB, 0x1139, 0x1172, 0x11A2, 0x11C5, 0x11D9, 0x11D7, 0x11C0,\n    0x1193, 0x1156, 0x110D, 0x10BB, 0x1064, 0x100C, 0x0FB7, 0x0F68,\n    0x0F25, 0x0EF0, 0x0ECD, 0x0EC1, 0x0ECE, 0x0EF3, 0x0F2B, 0x0F73,\n    0x0FC6, 0x101E, 0x107A, 0x10D2, 0x1125, 0x116D, 0x11A5, 0x11CA,\n    0x11D7, 0xFA39, 0xFA4B, 0xFA7B, 0xFAC3, 0xFB1C, 0xFB80, 0xFBE6,\n    0xFC4A, 0xFCA3, 0xFCEB, 0xFD1B, 0xFD2D, 0xFD1E, 0xFCF6, 0xFCBA,\n    0xFC6E, 0xFC18, 0xFBBC, 0xFB60, 0xFB08, 0xFAB9, 0xFA79, 0xFA4D,\n    0xFA39, 0xFA3E, 0xFA57, 0xFA80, 0xFAB6, 0xFAF6, 0xFB3B, 0xFB82,\n    0xFBC8, 0xFC09, 0xFC42, 0xFC6F, 0xFC8C, 0xFC97, 0xFC8D, 0xFC70,\n    0xFC45, 0xFC0E, 0xFBCF, 0xFB8B, 0xFB45, 0xFB01, 0xFAC2, 0xFA8B,\n    0xFA60, 0xFA43, 0xFA39, 0xF889, 0xF883, 0xF874, 0xF85C, 0xF83F,\n    0xF81F, 0xF7FE, 0xF7DE, 0xF7C2, 0xF7AC, 0xF79D, 0xF799, 0xF7A0,\n    0xF7B2, 0xF7CB, 0xF7EA, 0xF80D, 0xF831, 0xF854, 0xF875, 0xF891,\n    0xF8A5, 0xF8B1, 0xF8B1, 0xF8A4, 0xF88A, 0xF866, 0xF83A, 0xF809,\n    0xF7D7, 0xF7A4, 0xF774, 0xF74B, 0xF729, 0xF712, 0xF709, 0xF70D,\n    0xF71C, 0xF733, 0xF752, 0xF776, 0xF79D, 0xF7C6, 0xF7F0, 0xF817,\n    0xF83C, 0xF85B, 0xF873, 0xF883, 0xF889, 0xFEAC, 0xFEB7, 0xFED6,\n    0xFF03, 0xFF3B, 0xFF79, 0xFFB9, 0xFFF7, 0x002C, 0x0057, 0x0073,\n    0x007A, 0x006B, 0x0048, 0x0015, 0xFFD8, 0xFF94, 0xFF4C, 0xFF05,\n    0xFEC5, 0xFE8D, 0xFE64, 0xFE4D, 0xFE4C, 0xFE66, 0xFE99, 0xFEE0,\n    0xFF36, 0xFF96, 0xFFFA, 0x005D, 0x00BB, 0x010D, 0x0150, 0x017D,\n    0x0190, 0x0188, 0x016C, 0x013F, 0x0105, 0x00C0, 0x0074, 0x0024,\n    0xFFD5, 0xFF88, 0xFF42, 0xFF05, 0xFED6, 0xFEB7, 0xFEAC, 0x2FC5,\n    0x2FB1, 0x2F7C, 0x2F2D, 0x2ECB, 0x2E5D, 0x2DEC, 0x2D7F, 0x2D1D,\n    0x2CCD, 0x2C98, 0x2C85, 0x2C95, 0x2CC2, 0x2D06, 0x2D5C, 0x2DBD,\n    0x2E24, 0x2E8B, 0x2EEC, 0x2F42, 0x2F86, 0x2FB3, 0x2FC3, 0x2FB3,\n    0x2F85, 0x2F40, 0x2EEB, 0x2E89, 0x2E22, 0x2DBB, 0x2D59, 0x2D03,\n    0x2CBF, 0x2C91, 0x2C81, 0x2C8D, 0x2CAF, 0x2CE4, 0x2D27, 0x2D75,\n    0x2DCA, 0x2E23, 0x2E7C, 0x2ED1, 0x2F1F, 0x2F62, 0x2F96, 0x2FB8,\n    0x2FC5,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_C7.inc.c",
    "content": "static const struct Animation anim_C7[] = {\n    0,\n    189,\n    0,\n    0,\n    0x32,\n    ANIMINDEX_NUMPARTS(anim_C7_indices),\n    anim_C7_values,\n    anim_C7_indices,\n    0,\n};\n\n\nstatic const u16 anim_C7_indices[] = {\n    0x0001, 0x0001, 0x0001, 0x0002, 0x0032, 0x0003, 0x0001, 0x0000, 0x0001, 0x0035, 0x0001, 0x0000,\n    0x0032, 0x04F8, 0x0032, 0x052A, 0x0032, 0x055C,\n    0x0032, 0x0462, 0x0032, 0x0494, 0x0032, 0x04C6,\n    0x0032, 0x03CC, 0x0032, 0x03FE, 0x0032, 0x0430,\n    0x0001, 0x03C8, 0x0001, 0x03C9, 0x0001, 0x03CA,\n    0x0032, 0x006B, 0x0032, 0x009D, 0x0032, 0x00CF,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x0039,\n    0x0001, 0x0036, 0x0001, 0x0037, 0x0001, 0x0038,\n    0x0001, 0x03C4, 0x0001, 0x03C5, 0x0001, 0x03C6,\n    0x0032, 0x0105, 0x0032, 0x0137, 0x0032, 0x0169,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0104,\n    0x0001, 0x0101, 0x0001, 0x0102, 0x0001, 0x0103,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x03C7,\n    0x0032, 0x032E, 0x0032, 0x0360, 0x0032, 0x0392,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x02FC,\n    0x0032, 0x0266, 0x0032, 0x0298, 0x0032, 0x02CA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x03CB,\n    0x0001, 0x0263, 0x0001, 0x0264, 0x0001, 0x0265,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0032, 0x0231,\n    0x0032, 0x019B, 0x0032, 0x01CD, 0x0032, 0x01FF,\n};\n\nstatic const s16 anim_C7_values[] = {\n    0x0000, 0x001B, 0x00BD, 0x0000, 0x0000, 0xFFFF, 0xFFFE, 0xFFFC,\n    0xFFFA, 0xFFF8, 0xFFF6, 0xFFF5, 0xFFF4, 0xFFF4, 0xFFF4, 0xFFF5,\n    0xFFF7, 0xFFF8, 0xFFFA, 0xFFFC, 0xFFFE, 0x0000, 0x0001, 0x0002,\n    0x0003, 0x0004, 0x0004, 0x0004, 0x0003, 0x0001, 0x0000, 0xFFFE,\n    0xFFFC, 0xFFFA, 0xFFF8, 0xFFF6, 0xFFF4, 0xFFF2, 0xFFF1, 0xFFF0,\n    0xFFEF, 0xFFEF, 0xFFF0, 0xFFF2, 0xFFF3, 0xFFF5, 0xFFF8, 0xFFFA,\n    0xFFFC, 0xFFFE, 0xFFFF, 0x0000, 0x0000, 0x3FFF, 0xFF8A, 0xF980,\n    0xF06F, 0xF085, 0xF072, 0xF03C, 0xEFE6, 0xEF73, 0xEEE8, 0xEE48,\n    0xED97, 0xECD8, 0xEC0F, 0xEB3F, 0xEA6D, 0xE99B, 0xE8CE, 0xE809,\n    0xE74F, 0xE6A5, 0xE60E, 0xE58D, 0xE527, 0xE4DE, 0xE4B7, 0xE4B4,\n    0xE4F9, 0xE598, 0xE684, 0xE7AC, 0xE901, 0xEA75, 0xEBF8, 0xED7A,\n    0xEEED, 0xF041, 0xF167, 0xF24F, 0xF2EA, 0xF342, 0xF36D, 0xF371,\n    0xF355, 0xF31F, 0xF2D4, 0xF27C, 0xF21B, 0xF1B8, 0xF15A, 0xF106,\n    0xF0C2, 0xF095, 0xF085, 0xF955, 0xF944, 0xF918, 0xF8DC, 0xF89C,\n    0xF861, 0xF838, 0xF82B, 0xF846, 0xF893, 0xF928, 0xFA06, 0xFB18,\n    0xFC49, 0xFD81, 0xFEAD, 0xFFB6, 0x0086, 0x010A, 0x012A, 0x00E5,\n    0x0050, 0xFF7B, 0xFE75, 0xFD4C, 0xFC11, 0xFAD2, 0xF99F, 0xF886,\n    0xF798, 0xF6E4, 0xF677, 0xF642, 0xF627, 0xF622, 0xF632, 0xF653,\n    0xF683, 0xF6BF, 0xF704, 0xF750, 0xF79F, 0xF7EF, 0xF83E, 0xF888,\n    0xF8CA, 0xF903, 0xF92F, 0xF94B, 0xF955, 0xCD9D, 0xCDB9, 0xCE05,\n    0xCE78, 0xCF06, 0xCFA6, 0xD04C, 0xD0EF, 0xD184, 0xD201, 0xD274,\n    0xD2F1, 0xD372, 0xD3F1, 0xD46A, 0xD4D8, 0xD536, 0xD57D, 0xD5AA,\n    0xD5B8, 0xD5A5, 0xD577, 0xD533, 0xD4DE, 0xD47A, 0xD40D, 0xD39A,\n    0xD327, 0xD2B6, 0xD24D, 0xD1EF, 0xD1A0, 0xD159, 0xD110, 0xD0C4,\n    0xD077, 0xD02A, 0xCFDE, 0xCF92, 0xCF49, 0xCF03, 0xCEC1, 0xCE83,\n    0xCE4B, 0xCE1A, 0xCDEF, 0xCDCD, 0xCDB3, 0xCDA3, 0xCD9D, 0xD6A1,\n    0xD6A9, 0xD6BA, 0xD6CD, 0xD6DD, 0xD6E0, 0xD6D1, 0xD6A8, 0xD65E,\n    0xD5EB, 0xD535, 0xD434, 0xD2FF, 0xD1AD, 0xD056, 0xCF10, 0xCDF3,\n    0xCD15, 0xCC8E, 0xCC74, 0xCCCD, 0xCD80, 0xCE7C, 0xCFB1, 0xD10D,\n    0xD27E, 0xD3F3, 0xD55B, 0xD6A4, 0xD7BE, 0xD896, 0xD91C, 0xD964,\n    0xD990, 0xD9A2, 0xD99E, 0xD987, 0xD95F, 0xD92A, 0xD8EA, 0xD8A2,\n    0xD855, 0xD807, 0xD7BA, 0xD770, 0xD72D, 0xD6F4, 0xD6C8, 0xD6AB,\n    0xD6A1, 0x0F57, 0x0217, 0xF7EF, 0xF913, 0x0DB8, 0x0DA2, 0x0D66,\n    0x0D0D, 0x0C9E, 0x0C22, 0x0BA3, 0x0B27, 0x0AB8, 0x0A5F, 0x0A23,\n    0x0A0D, 0x0A0F, 0x0A14, 0x0A1D, 0x0A2A, 0x0A39, 0x0A4C, 0x0A61,\n    0x0A78, 0x0A92, 0x0AAE, 0x0ACB, 0x0AEB, 0x0B0B, 0x0B2D, 0x0B50,\n    0x0B74, 0x0B99, 0x0BBD, 0x0BE2, 0x0C07, 0x0C2C, 0x0C51, 0x0C75,\n    0x0C98, 0x0CBA, 0x0CDA, 0x0CFA, 0x0D17, 0x0D33, 0x0D4D, 0x0D64,\n    0x0D79, 0x0D8C, 0x0D9B, 0x0DA7, 0x0DB1, 0x0DB6, 0x0DB8, 0x1A58,\n    0x1A60, 0x1A77, 0x1A99, 0x1AC4, 0x1AF3, 0x1B24, 0x1B54, 0x1B7E,\n    0x1BA1, 0x1BB8, 0x1BC0, 0x1BC0, 0x1BBD, 0x1BBA, 0x1BB5, 0x1BAF,\n    0x1BA8, 0x1BA0, 0x1B97, 0x1B8D, 0x1B82, 0x1B77, 0x1B6B, 0x1B5F,\n    0x1B51, 0x1B44, 0x1B36, 0x1B28, 0x1B1A, 0x1B0C, 0x1AFE, 0x1AF0,\n    0x1AE2, 0x1AD4, 0x1AC6, 0x1AB9, 0x1AAD, 0x1AA1, 0x1A95, 0x1A8B,\n    0x1A81, 0x1A78, 0x1A70, 0x1A69, 0x1A63, 0x1A5E, 0x1A5A, 0x1A58,\n    0x1A58, 0x5C3E, 0x5C1B, 0x5BBA, 0x5B28, 0x5A75, 0x59AD, 0x58DE,\n    0x5815, 0x5762, 0x56D1, 0x566F, 0x564C, 0x564F, 0x5658, 0x5667,\n    0x567B, 0x5694, 0x56B2, 0x56D4, 0x56FA, 0x5724, 0x5751, 0x5781,\n    0x57B3, 0x57E9, 0x5820, 0x5858, 0x5892, 0x58CD, 0x5909, 0x5945,\n    0x5981, 0x59BD, 0x59F8, 0x5A32, 0x5A6B, 0x5AA2, 0x5AD7, 0x5B09,\n    0x5B3A, 0x5B67, 0x5B90, 0x5BB6, 0x5BD8, 0x5BF6, 0x5C0F, 0x5C23,\n    0x5C32, 0x5C3B, 0x5C3E, 0x001B, 0x001A, 0x0016, 0x0011, 0x0009,\n    0x0001, 0xFFF8, 0xFFEE, 0xFFE4, 0xFFDA, 0xFFD0, 0xFFC7, 0xFFC0,\n    0xFFBA, 0xFFB6, 0xFFB5, 0xFFB6, 0xFFBA, 0xFFBF, 0xFFC7, 0xFFD1,\n    0xFFDB, 0xFFE7, 0xFFF4, 0x0000, 0x000E, 0x001C, 0x002A, 0x0037,\n    0x0044, 0x0050, 0x005B, 0x0065, 0x006D, 0x0073, 0x0077, 0x0079,\n    0x0077, 0x0072, 0x006B, 0x0063, 0x0059, 0x004F, 0x0044, 0x003A,\n    0x0030, 0x0028, 0x0021, 0x001D, 0x001B, 0x025B, 0x025B, 0x025B,\n    0x025B, 0x025B, 0x025B, 0x025B, 0x025A, 0x025A, 0x025A, 0x025A,\n    0x0259, 0x0259, 0x0259, 0x0258, 0x0258, 0x0257, 0x0257, 0x0256,\n    0x0256, 0x0255, 0x0255, 0x0254, 0x0253, 0x0253, 0x0252, 0x0251,\n    0x0251, 0x0250, 0x024F, 0x024F, 0x024E, 0x024E, 0x024E, 0x024E,\n    0x024E, 0x024E, 0x024F, 0x0250, 0x0251, 0x0252, 0x0253, 0x0255,\n    0x0256, 0x0258, 0x0259, 0x025A, 0x025B, 0x025B, 0x025B, 0xCB25,\n    0xCB0F, 0xCACF, 0xCA6C, 0xC9ED, 0xC958, 0xC8B3, 0xC804, 0xC751,\n    0xC6A2, 0xC5FB, 0xC564, 0xC4E3, 0xC47E, 0xC43B, 0xC421, 0xC435,\n    0xC477, 0xC4DD, 0xC564, 0xC607, 0xC6C2, 0xC791, 0xC86E, 0xC957,\n    0xCA47, 0xCB39, 0xCC2A, 0xCD14, 0xCDF4, 0xCEC6, 0xCF85, 0xD02D,\n    0xD0BA, 0xD127, 0xD170, 0xD187, 0xD166, 0xD115, 0xD09E, 0xD009,\n    0xCF5F, 0xCEA9, 0xCDEE, 0xCD39, 0xCC90, 0xCBFF, 0xCB8C, 0xCB40,\n    0xCB25, 0x4F2E, 0x4F43, 0x4F7E, 0x4FD9, 0x504C, 0x50D0, 0x515E,\n    0x51F0, 0x527F, 0x5304, 0x5377, 0x53D3, 0x5410, 0x5427, 0x5411,\n    0x53CF, 0x536A, 0x52E5, 0x5247, 0x5193, 0x50CF, 0x4FFF, 0x4F29,\n    0x4E50, 0x4D7B, 0x4CAE, 0x4BEE, 0x4B3F, 0x4AA6, 0x4A29, 0x49CC,\n    0x4994, 0x4981, 0x498D, 0x49B4, 0x49F3, 0x4A45, 0x4AA9, 0x4B18,\n    0x4B92, 0x4C10, 0x4C91, 0x4D10, 0x4D8A, 0x4DFB, 0x4E60, 0x4EB5,\n    0x4EF5, 0x4F1F, 0x4F2E, 0x0F26, 0xFFFD, 0xB340, 0x001D, 0x001E,\n    0x0021, 0x0026, 0x002C, 0x0032, 0x0039, 0x0040, 0x0047, 0x004E,\n    0x0054, 0x0058, 0x005B, 0x005E, 0x0060, 0x0061, 0x0063, 0x0065,\n    0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006B, 0x006B,\n    0x006B, 0x006B, 0x006B, 0x006A, 0x0069, 0x0068, 0x0067, 0x0065,\n    0x0063, 0x0060, 0x005B, 0x0056, 0x0051, 0x004B, 0x0044, 0x003E,\n    0x0038, 0x0032, 0x002C, 0x0027, 0x0023, 0x0020, 0x001E, 0x001D,\n    0xFEE1, 0xFEE1, 0xFEE2, 0xFEE3, 0xFEE4, 0xFEE5, 0xFEE7, 0xFEE8,\n    0xFEEA, 0xFEEB, 0xFEEC, 0xFEED, 0xFEEE, 0xFEEF, 0xFEEF, 0xFEF0,\n    0xFEF0, 0xFEF1, 0xFEF1, 0xFEF2, 0xFEF2, 0xFEF3, 0xFEF3, 0xFEF3,\n    0xFEF4, 0xFEF4, 0xFEF4, 0xFEF4, 0xFEF4, 0xFEF4, 0xFEF4, 0xFEF4,\n    0xFEF4, 0xFEF3, 0xFEF3, 0xFEF2, 0xFEF1, 0xFEF0, 0xFEEE, 0xFEED,\n    0xFEEB, 0xFEE9, 0xFEE8, 0xFEE6, 0xFEE5, 0xFEE3, 0xFEE2, 0xFEE1,\n    0xFEE1, 0xFEE1, 0xDE31, 0xDE0A, 0xDD9E, 0xDCF8, 0xDC26, 0xDB35,\n    0xDA30, 0xD924, 0xD81E, 0xD72A, 0xD655, 0xD5AB, 0xD53A, 0xD4EA,\n    0xD49F, 0xD459, 0xD418, 0xD3DC, 0xD3A6, 0xD375, 0xD34A, 0xD326,\n    0xD308, 0xD2F0, 0xD2E0, 0xD2D7, 0xD2D5, 0xD2DB, 0xD2E9, 0xD2FF,\n    0xD31E, 0xD345, 0xD375, 0xD3AF, 0xD404, 0xD481, 0xD522, 0xD5DF,\n    0xD6B1, 0xD793, 0xD87E, 0xD96C, 0xDA56, 0xDB35, 0xDC04, 0xDCBB,\n    0xDD55, 0xDDCB, 0xDE16, 0xDE31, 0x12BD, 0x1311, 0x13FA, 0x155A,\n    0x1715, 0x190C, 0x1B22, 0x1D3B, 0x1F39, 0x20FF, 0x226F, 0x236D,\n    0x23DA, 0x23A4, 0x22E0, 0x21A9, 0x201C, 0x1E55, 0x1C72, 0x1A8E,\n    0x18C6, 0x1738, 0x15FE, 0x1537, 0x14D0, 0x14A1, 0x14A1, 0x14C8,\n    0x150D, 0x1566, 0x15CD, 0x1638, 0x169E, 0x16F7, 0x173A, 0x175F,\n    0x175D, 0x1734, 0x16EE, 0x1692, 0x1623, 0x15A8, 0x1527, 0x14A5,\n    0x1427, 0x13B4, 0x1350, 0x1302, 0x12D0, 0x12BD, 0xFD5C, 0xFD5D,\n    0xFD5F, 0xFD62, 0xFD65, 0xFD67, 0xFD69, 0xFD6A, 0xFD69, 0xFD66,\n    0xFD60, 0xFD57, 0xFD4A, 0xFD39, 0xFD1B, 0xFCEA, 0xFCAE, 0xFC6E,\n    0xFC30, 0xFBFC, 0xFBD9, 0xFBCE, 0xFBD6, 0xFBE7, 0xFBFF, 0xFC1E,\n    0xFC41, 0xFC68, 0xFC91, 0xFCBB, 0xFCE5, 0xFD0C, 0xFD30, 0xFD50,\n    0xFD6A, 0xFD7C, 0xFD88, 0xFD8F, 0xFD92, 0xFD93, 0xFD90, 0xFD8B,\n    0xFD85, 0xFD7E, 0xFD76, 0xFD6E, 0xFD67, 0xFD62, 0xFD5E, 0xFD5C,\n    0xF385, 0xF372, 0xF33D, 0xF2EB, 0xF281, 0xF206, 0xF17E, 0xF0EF,\n    0xF05F, 0xEFD3, 0xEF51, 0xEEDE, 0xEE80, 0xEE3D, 0xEE1A, 0xEE18,\n    0xEE2F, 0xEE58, 0xEE8E, 0xEEC8, 0xEF00, 0xEF2E, 0xEF58, 0xEF83,\n    0xEFB1, 0xEFDF, 0xF00F, 0xF03F, 0xF070, 0xF0A1, 0xF0D1, 0xF101,\n    0xF12F, 0xF15C, 0xF187, 0xF1B0, 0xF1D9, 0xF204, 0xF231, 0xF25E,\n    0xF28B, 0xF2B7, 0xF2E0, 0xF307, 0xF32A, 0xF349, 0xF362, 0xF375,\n    0xF381, 0xF385, 0xCC7D, 0xCC7B, 0xCC77, 0xCC71, 0xCC6A, 0xCC65,\n    0xCC61, 0xCC61, 0xCC64, 0xCC6D, 0xCC7D, 0xCC94, 0xCCB4, 0xCCDE,\n    0xCD2A, 0xCDA4, 0xCE3A, 0xCEDA, 0xCF72, 0xCFF2, 0xD047, 0xD05E,\n    0xD045, 0xD014, 0xCFCF, 0xCF7A, 0xCF18, 0xCEAE, 0xCE3E, 0xCDCC,\n    0xCD5C, 0xCCF2, 0xCC92, 0xCC3E, 0xCBFB, 0xCBCC, 0xCBB0, 0xCBA2,\n    0xCB9F, 0xCBA7, 0xCBB6, 0xCBCC, 0xCBE6, 0xCC03, 0xCC21, 0xCC3D,\n    0xCC56, 0xCC6A, 0xCC78, 0xCC7D, 0x8001, 0x8001, 0x4171, 0xBF5F,\n    0x8001, 0x8001, 0x4171, 0xBF5F, 0x04C2, 0x04B6, 0x0495, 0x0463,\n    0x0423, 0x03D9, 0x038A, 0x0337, 0x02E7, 0x029B, 0x0258, 0x0222,\n    0x01FC, 0x01EA, 0x01F0, 0x0212, 0x0253, 0x02B7, 0x034A, 0x0411,\n    0x0503, 0x061B, 0x0751, 0x089E, 0x09FA, 0x0B5F, 0x0CC5, 0x0E26,\n    0x0F7A, 0x10BA, 0x11DE, 0x12E1, 0x13BA, 0x1463, 0x14D3, 0x1506,\n    0x14E1, 0x145C, 0x1385, 0x1269, 0x1117, 0x0F9D, 0x0E09, 0x0C69,\n    0x0ACB, 0x093D, 0x07CE, 0x068B, 0x0582, 0x04C2, 0xFFB2, 0xFFB5,\n    0xFFBD, 0xFFCB, 0xFFDD, 0xFFF2, 0x0009, 0x0024, 0x0040, 0x005D,\n    0x007A, 0x0096, 0x00B2, 0x00CC, 0x00E3, 0x00F8, 0x0108, 0x0114,\n    0x011D, 0x0125, 0x012B, 0x0130, 0x0134, 0x0137, 0x0138, 0x0139,\n    0x0138, 0x0136, 0x0133, 0x012F, 0x012A, 0x0123, 0x011C, 0x0113,\n    0x010A, 0x00FF, 0x00F1, 0x00DC, 0x00C3, 0x00A6, 0x0086, 0x0065,\n    0x0043, 0x0023, 0x0004, 0xFFEA, 0xFFD2, 0xFFC1, 0xFFB5, 0xFFB2,\n    0x148E, 0x14A9, 0x14F5, 0x156B, 0x1605, 0x16BD, 0x178A, 0x1868,\n    0x194F, 0x1A39, 0x1B1E, 0x1BF9, 0x1CC2, 0x1D73, 0x1E06, 0x1E74,\n    0x1EB5, 0x1EC4, 0x1EA2, 0x1E57, 0x1DEA, 0x1D5D, 0x1CB5, 0x1BF7,\n    0x1B28, 0x1A4D, 0x1968, 0x1880, 0x1799, 0x16B7, 0x15DE, 0x1514,\n    0x145D, 0x13BD, 0x1339, 0x12D6, 0x128F, 0x125E, 0x1241, 0x1236,\n    0x123C, 0x1252, 0x1277, 0x12A8, 0x12E4, 0x132B, 0x137A, 0x13D1,\n    0x142D, 0x148E, 0xFF37, 0xFF3C, 0xFF4A, 0xFF60, 0xFF79, 0xFF96,\n    0xFFB2, 0xFFCC, 0xFFE1, 0xFFEF, 0xFFF5, 0xFFF4, 0xFFF3, 0xFFF1,\n    0xFFEF, 0xFFEC, 0xFFE8, 0xFFE4, 0xFFE0, 0xFFDB, 0xFFD6, 0xFFD0,\n    0xFFCA, 0xFFC3, 0xFFBD, 0xFFB6, 0xFFAF, 0xFFA8, 0xFFA1, 0xFF99,\n    0xFF92, 0xFF8B, 0xFF83, 0xFF7C, 0xFF75, 0xFF6E, 0xFF68, 0xFF61,\n    0xFF5B, 0xFF56, 0xFF50, 0xFF4B, 0xFF47, 0xFF43, 0xFF3F, 0xFF3C,\n    0xFF3A, 0xFF38, 0xFF37, 0xFF37, 0xF64F, 0xF651, 0xF655, 0xF65C,\n    0xF664, 0xF66C, 0xF675, 0xF67D, 0xF683, 0xF688, 0xF689, 0xF689,\n    0xF689, 0xF688, 0xF688, 0xF687, 0xF686, 0xF684, 0xF683, 0xF682,\n    0xF680, 0xF67E, 0xF67C, 0xF67A, 0xF678, 0xF676, 0xF674, 0xF672,\n    0xF670, 0xF66D, 0xF66B, 0xF669, 0xF667, 0xF665, 0xF662, 0xF660,\n    0xF65E, 0xF65C, 0xF65A, 0xF659, 0xF657, 0xF655, 0xF654, 0xF653,\n    0xF652, 0xF651, 0xF650, 0xF650, 0xF64F, 0xF64F, 0x042B, 0x0437,\n    0x0459, 0x048A, 0x04C6, 0x0507, 0x0548, 0x0584, 0x05B5, 0x05D6,\n    0x05E3, 0x05E2, 0x05DF, 0x05DB, 0x05D6, 0x05CF, 0x05C7, 0x05BD,\n    0x05B3, 0x05A7, 0x059B, 0x058D, 0x057F, 0x0571, 0x0561, 0x0552,\n    0x0541, 0x0531, 0x0520, 0x050F, 0x04FE, 0x04EE, 0x04DD, 0x04CC,\n    0x04BC, 0x04AC, 0x049D, 0x048E, 0x0480, 0x0473, 0x0466, 0x045B,\n    0x0450, 0x0447, 0x043F, 0x0438, 0x0432, 0x042E, 0x042C, 0x042B,\n    0x068D, 0x068E, 0x0692, 0x0696, 0x069C, 0x06A3, 0x06A9, 0x06AF,\n    0x06B4, 0x06B7, 0x06B8, 0x06B8, 0x06B6, 0x06B2, 0x06AF, 0x06AA,\n    0x06A5, 0x06A0, 0x069B, 0x0697, 0x0693, 0x0690, 0x068E, 0x068D,\n    0x068E, 0x0690, 0x0693, 0x0697, 0x069B, 0x06A0, 0x06A5, 0x06AA,\n    0x06AF, 0x06B2, 0x06B6, 0x06B8, 0x06B8, 0x06B8, 0x06B6, 0x06B2,\n    0x06AF, 0x06AA, 0x06A5, 0x06A0, 0x069B, 0x0697, 0x0693, 0x0690,\n    0x068E, 0x068D, 0xF3BE, 0xF3B1, 0xF38E, 0xF35A, 0xF31B, 0xF2D6,\n    0xF291, 0xF252, 0xF21E, 0xF1FB, 0xF1EE, 0xF1F6, 0xF20B, 0xF22D,\n    0xF257, 0xF287, 0xF2BB, 0xF2F1, 0xF325, 0xF356, 0xF380, 0xF3A1,\n    0xF3B7, 0xF3BE, 0xF3B7, 0xF3A1, 0xF380, 0xF356, 0xF325, 0xF2F1,\n    0xF2BB, 0xF287, 0xF257, 0xF22D, 0xF20B, 0xF1F6, 0xF1EE, 0xF1F6,\n    0xF20B, 0xF22D, 0xF257, 0xF287, 0xF2BB, 0xF2F1, 0xF325, 0xF356,\n    0xF380, 0xF3A1, 0xF3B7, 0xF3BE, 0x298D, 0x29A1, 0x29D8, 0x2A29,\n    0x2A8B, 0x2AF5, 0x2B60, 0x2BC2, 0x2C13, 0x2C49, 0x2C5E, 0x2C52,\n    0x2C30, 0x2BFC, 0x2BBB, 0x2B70, 0x2B1F, 0x2ACC, 0x2A7B, 0x2A30,\n    0x29EE, 0x29BB, 0x2999, 0x298D, 0x2999, 0x29BB, 0x29EE, 0x2A30,\n    0x2A7B, 0x2ACC, 0x2B1F, 0x2B70, 0x2BBB, 0x2BFC, 0x2C30, 0x2C52,\n    0x2C5E, 0x2C52, 0x2C30, 0x2BFC, 0x2BBB, 0x2B70, 0x2B1F, 0x2ACC,\n    0x2A7B, 0x2A30, 0x29EE, 0x29BB, 0x2999, 0x298D,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_C8.inc.c",
    "content": "static const struct Animation anim_C8[] = {\n    1,\n    189,\n    6,\n    0,\n    0x14,\n    ANIMINDEX_NUMPARTS(anim_C8_indices),\n    anim_C8_values,\n    anim_C8_indices,\n    0,\n};\n\n\nstatic const u16 anim_C8_indices[] = {\n    0x0001, 0x0000, 0x0014, 0x0001, 0x0014, 0x0015, 0x0001, 0x0000, 0x0001, 0x0029, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x0324,\n    0x0014, 0x02E8, 0x0014, 0x02FC, 0x0014, 0x0310,\n    0x0014, 0x02AC, 0x0014, 0x02C0, 0x0014, 0x02D4,\n    0x0014, 0x026F, 0x0014, 0x0283, 0x0014, 0x0297,\n    0x0014, 0x007A, 0x0014, 0x008E, 0x0014, 0x00A2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x0066,\n    0x0014, 0x002A, 0x0014, 0x003E, 0x0014, 0x0052,\n    0x0014, 0x0232, 0x0014, 0x0246, 0x0014, 0x025A,\n    0x0014, 0x0106, 0x0014, 0x011A, 0x0014, 0x012E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x00F2,\n    0x0014, 0x00B6, 0x0014, 0x00CA, 0x0014, 0x00DE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x026E,\n    0x0014, 0x01F6, 0x0014, 0x020A, 0x0014, 0x021E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x01E2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x01CE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02AB,\n    0x0014, 0x0192, 0x0014, 0x01A6, 0x0014, 0x01BA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0014, 0x017E,\n    0x0014, 0x0142, 0x0014, 0x0156, 0x0014, 0x016A,\n};\n\nstatic const s16 anim_C8_values[] = {\n    0x0000, 0x0035, 0x0035, 0x0033, 0x0030, 0x002E, 0x002D, 0x002D,\n    0x002F, 0x0034, 0x0046, 0x0065, 0x007B, 0x0085, 0x008E, 0x0096,\n    0x009D, 0x00A2, 0x00A7, 0x00A9, 0x00AA, 0xFF5A, 0xFF5B, 0xFF5E,\n    0xFF63, 0xFF6A, 0xFF72, 0xFF7C, 0xFF86, 0xFF92, 0xFFA7, 0xFFC6,\n    0xFFDA, 0xFFE4, 0xFFEB, 0xFFF2, 0xFFF7, 0xFFFA, 0xFFFD, 0xFFFE,\n    0xFFFF, 0x3FFF, 0x0816, 0x0816, 0x0816, 0x0816, 0x0816, 0x0816,\n    0x0816, 0x0816, 0x0816, 0x06F9, 0x04B6, 0x02E5, 0x0208, 0x0175,\n    0x010F, 0x00B6, 0x0065, 0x002C, 0x000B, 0x0000, 0xE285, 0xE285,\n    0xE285, 0xE285, 0xE285, 0xE285, 0xE285, 0xE285, 0xE285, 0xE90D,\n    0xF5F0, 0xFF1F, 0x0160, 0x0118, 0xFFA6, 0xFE64, 0xFD3A, 0xFB96,\n    0xFA1E, 0xF97C, 0xEA2F, 0xEA2F, 0xEA2F, 0xEA2F, 0xEA2F, 0xEA2F,\n    0xEA2F, 0xEA2F, 0xEA2F, 0xEED0, 0xF7BB, 0xFD79, 0xFD95, 0xFB78,\n    0xF871, 0xF5D0, 0xF367, 0xF0AF, 0xEE77, 0xED8C, 0xF5E7, 0xF5E7,\n    0xF5E7, 0xF5E7, 0xF5E7, 0xF5E7, 0xF5E7, 0xF5E7, 0xF5E7, 0xF5E7,\n    0xF5E7, 0xF5E7, 0xF20E, 0xE90B, 0xDEAC, 0xD6BC, 0xD1BB, 0xCDCC,\n    0xCB3B, 0xCA4F, 0x6E83, 0x6E83, 0x6E83, 0x6E83, 0x6E83, 0x6E83,\n    0x6E83, 0x6E83, 0x6E83, 0x6E83, 0x6E83, 0x6E83, 0x6833, 0x58E0,\n    0x45F1, 0x34CF, 0x23AE, 0x10BF, 0x016C, 0xFB1D, 0x9FAC, 0x9FAC,\n    0x9FAC, 0x9FAC, 0x9FAC, 0x9FAC, 0x9FAC, 0x9FAC, 0x9FAC, 0x9FAC,\n    0x9FAC, 0x9FAC, 0xA279, 0xA945, 0xB1AB, 0xB944, 0xC0DD, 0xC943,\n    0xD00F, 0xD2DC, 0x5146, 0x5146, 0x5146, 0x5146, 0x5146, 0x5146,\n    0x5146, 0x5146, 0x5146, 0x5146, 0x5146, 0x5146, 0x5876, 0x69EA,\n    0x7F7A, 0x92FD, 0xA67F, 0xBC0F, 0xCD84, 0xD4B4, 0xF345, 0xF345,\n    0xF345, 0xF345, 0xF345, 0xF345, 0xF345, 0xF345, 0xF345, 0xF59A,\n    0xFA49, 0xFDD7, 0xFF2B, 0xFFBD, 0xFFEB, 0x0013, 0x0037, 0x002C,\n    0x0010, 0x0000, 0x2351, 0x2351, 0x2351, 0x2351, 0x2351, 0x2351,\n    0x2351, 0x2351, 0x2351, 0x1DD2, 0x12B4, 0x0A05, 0x0646, 0x0424,\n    0x02E3, 0x01CC, 0x00D0, 0x0045, 0x000B, 0x0000, 0xDF86, 0xDF86,\n    0xDF86, 0xDF86, 0xDF86, 0xDF86, 0xDF86, 0xDF86, 0xDF86, 0xE291,\n    0xE8C1, 0xEDB1, 0xF005, 0xF187, 0xF291, 0xF378, 0xF449, 0xF4DA,\n    0xF52E, 0xF549, 0xFA63, 0xFA63, 0xFA63, 0xFA63, 0xFA63, 0xFA63,\n    0xFA63, 0xFA63, 0xFA63, 0xFA63, 0xFA63, 0xFA63, 0xF619, 0xEC06,\n    0xE060, 0xD759, 0xD160, 0xCC73, 0xC91A, 0xC7DD, 0x131C, 0x131C,\n    0x131C, 0x131C, 0x131C, 0x131C, 0x131C, 0x131C, 0x131C, 0x131C,\n    0x131C, 0x131C, 0x1566, 0x1A42, 0x1EB0, 0x1FAE, 0x1A96, 0x11A0,\n    0x0918, 0x054B, 0xEC4C, 0xEC4C, 0xEC4C, 0xEC4C, 0xEC4C, 0xEC4C,\n    0xEC4C, 0xEC4C, 0xEC4C, 0xEC4C, 0xEC4C, 0xEC4C, 0xF47B, 0x0745,\n    0x1C0C, 0x2A30, 0x2EEA, 0x2EFC, 0x2D12, 0x2BD6, 0xE0B0, 0xE0B0,\n    0xE0B0, 0xE0B0, 0xE0B0, 0xE0B0, 0xE0B0, 0xE0B0, 0xE0B0, 0xE0B0,\n    0xE0B0, 0xE0B0, 0xE44F, 0xEC07, 0xF321, 0xF4E7, 0xED46, 0xDFB3,\n    0xD2BD, 0xCCF6, 0xFFB8, 0xFFB7, 0xFFB4, 0xFFB1, 0xFFAE, 0xFFAC,\n    0xFFAC, 0xFFB0, 0xFFB8, 0xFFD8, 0x000A, 0x0028, 0x002C, 0x0029,\n    0x0023, 0x001A, 0x0011, 0x0008, 0x0002, 0x0000, 0xFF3D, 0xFF48,\n    0xFF64, 0xFF87, 0xFFA6, 0xFFB8, 0xFFB3, 0xFF8D, 0xFF3D, 0xFDE3,\n    0xFBCD, 0xFAB8, 0xFAE9, 0xFB6A, 0xFC21, 0xFCF3, 0xFDC5, 0xFE7D,\n    0xFEFF, 0xFF30, 0xD81B, 0xD853, 0xD8DB, 0xD984, 0xDA1C, 0xDA74,\n    0xDA5C, 0xD9A4, 0xD81B, 0xD1CC, 0xC7ED, 0xC216, 0xC16D, 0xC1D7,\n    0xC305, 0xC4AB, 0xC67A, 0xC825, 0xC95E, 0xC9D8, 0x0366, 0x052F,\n    0x0A05, 0x111A, 0x19A4, 0x22D5, 0x2BE3, 0x3402, 0x3A66, 0x3E0B,\n    0x3ED1, 0x3D40, 0x39F7, 0x358A, 0x3076, 0x2B37, 0x264A, 0x222B,\n    0x1F57, 0x1E4A, 0x0CE2, 0x0C9B, 0x0BD9, 0x0ABD, 0x0968, 0x07FB,\n    0x0695, 0x0557, 0x0462, 0x0395, 0x034C, 0x0462, 0x06EF, 0x0A3D,\n    0x0DF7, 0x11C5, 0x1551, 0x1844, 0x1A49, 0x1B09, 0x0EFE, 0x0F21,\n    0x0F7F, 0x1008, 0x10AE, 0x115F, 0x120C, 0x12A7, 0x131D, 0x1352,\n    0x1346, 0x131D, 0x12E8, 0x12A3, 0x1255, 0x1206, 0x11BC, 0x117E,\n    0x1154, 0x1144, 0x961D, 0x956F, 0x939B, 0x90EE, 0x8DB8, 0x8A46,\n    0x86E6, 0x83E7, 0x8198, 0x7FE7, 0x7F75, 0x8198, 0x8666, 0x8CA0,\n    0x93A4, 0x9ACF, 0xA17E, 0xA70D, 0xAADB, 0xAC44, 0xCEBC, 0xCEF2,\n    0xCF75, 0xD016, 0xD0A9, 0xD0FE, 0xD0E6, 0xD035, 0xCEBC, 0xC8B3,\n    0xBF3D, 0xB98C, 0xB8B7, 0xB8DB, 0xB9B4, 0xBAFE, 0xBC75, 0xBDD5,\n    0xBEDA, 0xBF40, 0x0710, 0x090A, 0x0E60, 0x162F, 0x1F95, 0x29B0,\n    0x339C, 0x3C76, 0x435D, 0x46E6, 0x470A, 0x44FE, 0x4187, 0x3CF2,\n    0x37BA, 0x325D, 0x2D57, 0x2927, 0x2647, 0x2537, 0xF169, 0xF1B0,\n    0xF271, 0xF38B, 0xF4DD, 0xF649, 0xF7AC, 0xF8E8, 0xF9DB, 0xFAEB,\n    0xFB77, 0xF9DB, 0xF5DA, 0xF0AA, 0xEAD0, 0xE4D7, 0xDF45, 0xDAA3,\n    0xD777, 0xD64A, 0xF279, 0xF24D, 0xF1D5, 0xF125, 0xF052, 0xEF70,\n    0xEE93, 0xEDCE, 0xED37, 0xED05, 0xED26, 0xED37, 0xED1B, 0xECF7,\n    0xECCF, 0xECA5, 0xEC7F, 0xEC5F, 0xEC49, 0xEC41, 0x973B, 0x9686,\n    0x949E, 0x91D4, 0x8E7A, 0x8AE2, 0x875D, 0x843E, 0x81D5, 0x7FEC,\n    0x7F4F, 0x81D5, 0x87AA, 0x8F38, 0x97BC, 0xA06F, 0xA88B, 0xAF4B,\n    0xB3E8, 0xB59E, 0x9524, 0x9524, 0x9524, 0x9524, 0x9524, 0x9524,\n    0x9524, 0x9524, 0x9524, 0x9524, 0x9524, 0x9524, 0x93FC, 0x912D,\n    0x8DB5, 0x8A91, 0x876E, 0x83F5, 0x8127, 0x7FFF, 0x5D21, 0x5D21,\n    0x5D21, 0x5D21, 0x5D21, 0x5D21, 0x5D21, 0x5D21, 0x5D21, 0x5D21,\n    0x5D21, 0x5D21, 0x5F0A, 0x63AB, 0x6963, 0x6E90, 0x73BD, 0x7975,\n    0x7E16, 0x7FFF, 0x475E, 0x475E, 0x475E, 0x475E, 0x475E, 0x475E,\n    0x475E, 0x475E, 0x475E, 0x475E, 0x475E, 0x475E, 0x470B, 0x4641,\n    0x4548, 0x4467, 0x4386, 0x428D, 0x41C4, 0x4171, 0xBF5F, 0x90BE,\n    0x90BE, 0x90BE, 0x90BE, 0x90BE, 0x90BE, 0x90BE, 0x90BE, 0x90BE,\n    0x90BE, 0x90BE, 0x90BE, 0x8FD3, 0x8D9A, 0x8ADA, 0x885E, 0x85E2,\n    0x8322, 0x80E9, 0x7FFF, 0x7987, 0x7987, 0x7987, 0x7987, 0x7987,\n    0x7987, 0x7987, 0x7987, 0x7987, 0x7987, 0x7987, 0x7987, 0x79E1,\n    0x7ABD, 0x7BCD, 0x7CC3, 0x7DB8, 0x7EC8, 0x7FA4, 0x7FFF, 0x4B8C,\n    0x4B8C, 0x4B8C, 0x4B8C, 0x4B8C, 0x4B8C, 0x4B8C, 0x4B8C, 0x4B8C,\n    0x4B8C, 0x4B8C, 0x4B8C, 0x4AFF, 0x49A7, 0x47FE, 0x467E, 0x44FE,\n    0x4356, 0x41FE, 0x4171, 0xBF5F, 0xFD80, 0xFDA5, 0xFE03, 0xFE87,\n    0xFF19, 0xFFA6, 0x0017, 0x0058, 0x0073, 0x0081, 0x0083, 0x007D,\n    0x0070, 0x005F, 0x004A, 0x0035, 0x0020, 0x000F, 0x0004, 0x0000,\n    0xFEF8, 0xFEDF, 0xFEA0, 0xFE4B, 0xFDF0, 0xFD9F, 0xFD68, 0xFD5B,\n    0xFD74, 0xFDA1, 0xFDDC, 0xFE24, 0xFE72, 0xFEC3, 0xFF13, 0xFF5D,\n    0xFF9E, 0xFFD2, 0xFFF4, 0x0000, 0x26DC, 0x2434, 0x1D4C, 0x13B5,\n    0x0902, 0xFEC9, 0xF699, 0xF207, 0xF05A, 0xEFB0, 0xEFDF, 0xF0BD,\n    0xF21E, 0xF3DA, 0xF5C5, 0xF7B6, 0xF982, 0xFAFE, 0xFC02, 0xFC62,\n    0xFF6C, 0xFF6F, 0xFF78, 0xFF84, 0xFF92, 0xFFA1, 0xFFAE, 0xFFB7,\n    0xFFBF, 0xFFC8, 0xFFD0, 0xFFD8, 0xFFE0, 0xFFE8, 0xFFEF, 0xFFF5,\n    0xFFF9, 0xFFFD, 0x0000, 0x0000, 0x00A3, 0x00A7, 0x00AF, 0x00BB,\n    0x00C7, 0x00D0, 0x00D4, 0x00D0, 0x00C5, 0x00B4, 0x00A1, 0x008B,\n    0x0073, 0x005B, 0x0043, 0x002E, 0x001B, 0x000D, 0x0003, 0x0000,\n    0x0F98, 0x108B, 0x12FA, 0x1648, 0x19D8, 0x1D0B, 0x1F44, 0x1FE5,\n    0x1F1F, 0x1DA5, 0x1B9D, 0x192B, 0x1677, 0x13A5, 0x10DB, 0x0E3F,\n    0x0BF5, 0x0A24, 0x08F2, 0x0884, 0x2968, 0x2968, 0x2968, 0x2968,\n    0x2968, 0x2968, 0x2968, 0x2968, 0x2968, 0x32C3, 0x4489, 0x4F4C,\n    0x5048, 0x4F61, 0x4D21, 0x4A13, 0x46C1, 0x43B6, 0x417D, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_C9.inc.c",
    "content": "static const struct Animation anim_C9[] = {\n    1,\n    189,\n    0,\n    0,\n    0x15,\n    ANIMINDEX_NUMPARTS(anim_C9_indices),\n    anim_C9_values,\n    anim_C9_indices,\n    0,\n};\n\n\nstatic const u16 anim_C9_indices[] = {\n    0x0015, 0x0001, 0x0015, 0x0016, 0x0015, 0x002B, 0x0001, 0x0000, 0x0001, 0x0040, 0x0001, 0x0000,\n    0x0015, 0x038B, 0x0015, 0x03A0, 0x0015, 0x03B5,\n    0x0015, 0x034C, 0x0015, 0x0361, 0x0015, 0x0376,\n    0x0015, 0x030D, 0x0015, 0x0322, 0x0015, 0x0337,\n    0x0015, 0x02CD, 0x0015, 0x02E2, 0x0015, 0x02F7,\n    0x0015, 0x0095, 0x0015, 0x00AA, 0x0015, 0x00BF,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0015, 0x0080,\n    0x0015, 0x0041, 0x0015, 0x0056, 0x0015, 0x006B,\n    0x0015, 0x028D, 0x0015, 0x02A2, 0x0015, 0x02B7,\n    0x0015, 0x0128, 0x0015, 0x013D, 0x0015, 0x0152,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0015, 0x0113,\n    0x0015, 0x00D4, 0x0015, 0x00E9, 0x0015, 0x00FE,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x02CC,\n    0x0015, 0x024E, 0x0015, 0x0263, 0x0015, 0x0278,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0015, 0x0239,\n    0x0015, 0x01FA, 0x0015, 0x020F, 0x0015, 0x0224,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x030C,\n    0x0015, 0x01BB, 0x0015, 0x01D0, 0x0015, 0x01E5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0015, 0x01A6,\n    0x0015, 0x0167, 0x0015, 0x017C, 0x0015, 0x0191,\n};\n\nstatic const s16 anim_C9_values[] = {\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xFFFF, 0xFFFC, 0xFFF9, 0xFFF7, 0xFFF6, 0xFFF6, 0xFFF7,\n    0xFFF8, 0xFFFA, 0xFFFC, 0xFFFE, 0x0000, 0x0000, 0x0066, 0x0067,\n    0x0068, 0x0068, 0x0066, 0x005F, 0x0055, 0x0051, 0x0054, 0x0059,\n    0x0061, 0x0068, 0x006F, 0x0075, 0x007B, 0x0082, 0x0089, 0x0092,\n    0x009D, 0x00A6, 0x00AA, 0xFF5A, 0xFF59, 0xFF58, 0xFF58, 0xFF5A,\n    0xFF5E, 0xFF65, 0xFF6E, 0xFF7B, 0xFF89, 0xFF99, 0xFFA8, 0xFFB5,\n    0xFFC0, 0xFFCA, 0xFFD4, 0xFFDE, 0xFFE8, 0xFFF3, 0xFFFB, 0xFFFF,\n    0x3FFF, 0xF772, 0xF709, 0xF65B, 0xF638, 0xF772, 0xFBD2, 0x01FB,\n    0x0609, 0x0748, 0x07B1, 0x0763, 0x0679, 0x0512, 0x022B, 0xFDD2,\n    0xF9B7, 0xF78D, 0xF875, 0xFB4D, 0xFE60, 0xFFFD, 0xF00D, 0xEFB6,\n    0xEF25, 0xEF08, 0xF00D, 0xF3A9, 0xF8C1, 0xFC2F, 0xFD66, 0xFDFD,\n    0xFDFD, 0xFD73, 0xFC68, 0xF9ED, 0xF617, 0xF27B, 0xF0AF, 0xF1CC,\n    0xF4BD, 0xF7DA, 0xF978, 0xE2ED, 0xE287, 0xE1DC, 0xE1BA, 0xE2ED,\n    0xE72E, 0xED2D, 0xF133, 0xF284, 0xF301, 0xF2D6, 0xF232, 0xF141,\n    0xEF4D, 0xEC4C, 0xE970, 0xE7EA, 0xE87F, 0xEA64, 0xEC74, 0xED89,\n    0xC0C8, 0xC028, 0xBF1F, 0xBEE9, 0xC0C8, 0xC71E, 0xD02D, 0xD6F8,\n    0xD847, 0xD716, 0xD7B0, 0xDF91, 0xE5A3, 0xE30F, 0xDDF2, 0xD828,\n    0xD390, 0xD040, 0xCD55, 0xCB38, 0xCA51, 0x7347, 0x7423, 0x74EE,\n    0x74E6, 0x7347, 0x6EDE, 0x6816, 0x6096, 0x5BE2, 0x5677, 0x476F,\n    0x1913, 0xEE94, 0xE590, 0xE57A, 0xE98B, 0xECFE, 0xEFFE, 0xF49E,\n    0xF8F4, 0xFB18, 0x88D4, 0x87CF, 0x8743, 0x8780, 0x88D4, 0x8B9C,\n    0x9027, 0x96A9, 0xA15A, 0xAE03, 0xB638, 0xB08D, 0xA9DA, 0xAD81,\n    0xB3BB, 0xBAC7, 0xC0E5, 0xC67A, 0xCC37, 0xD0C7, 0xD2D7, 0x5E7C,\n    0x5E53, 0x5E60, 0x5E7A, 0x5E7C, 0x5D9D, 0x5CAA, 0x5DDC, 0x5F10,\n    0x626A, 0x7086, 0xA03E, 0xCDAA, 0xD9A3, 0xDCEF, 0xDC00, 0xDB47,\n    0xDACB, 0xD890, 0xD60D, 0xD4B7, 0xF852, 0xF6AD, 0xF3A0, 0xF00C,\n    0xECD2, 0xEABD, 0xE8F5, 0xE5E3, 0xDDF4, 0xD88D, 0xE028, 0xE9BF,\n    0xEE1B, 0xF1BC, 0xF4CF, 0xF782, 0xF9FF, 0xFC4B, 0xFE2D, 0xFF78,\n    0xFFFF, 0x1329, 0x107B, 0x0BAA, 0x075C, 0x0636, 0x0B97, 0x14EC,\n    0x1BF4, 0x1BDB, 0x1850, 0x12AF, 0x0D1F, 0x0A70, 0x0843, 0x0675,\n    0x04E6, 0x0372, 0x021B, 0x0107, 0x004C, 0x0000, 0xC27F, 0xC841,\n    0xD2C8, 0xDDC5, 0xE4E7, 0xE52E, 0xE0E6, 0xDBB5, 0xD441, 0xCFC0,\n    0xD865, 0xE2AA, 0xE6CD, 0xE9FF, 0xEC84, 0xEEA6, 0xF0A9, 0xF286,\n    0xF3F7, 0xF4E9, 0xF549, 0xC6F6, 0xC666, 0xC575, 0xC545, 0xC6F6,\n    0xCD52, 0xD624, 0xDB18, 0xD1E2, 0xCB49, 0xE133, 0xF861, 0xEC6C,\n    0xE2EE, 0xD967, 0xD106, 0xCAF5, 0xC7EA, 0xC71A, 0xC771, 0xC7DC,\n    0x7A64, 0x6F06, 0x59F3, 0x4186, 0x2C17, 0x1BA9, 0x0E0D, 0x0356,\n    0xFF59, 0xFFFD, 0x011F, 0x036E, 0x0645, 0x09A4, 0x0CE6, 0x0F68,\n    0x1085, 0x0EF5, 0x0B36, 0x0752, 0x0550, 0x3394, 0x2C36, 0x1E8F,\n    0x0EBA, 0x00D5, 0xF528, 0xEB4C, 0xE662, 0xEE3E, 0xFA2C, 0x00CF,\n    0x0691, 0x0B6D, 0x1013, 0x1488, 0x18D4, 0x1CFD, 0x218D, 0x264C,\n    0x2A19, 0x2BD2, 0x0265, 0x0084, 0xFD13, 0xF972, 0xF702, 0xF670,\n    0xF744, 0xF925, 0xFFA8, 0x01F1, 0xEE8E, 0xDBC6, 0xD93F, 0xDA43,\n    0xDCE7, 0xDF3E, 0xDF5D, 0xDBAE, 0xD5A2, 0xCFDC, 0xCCFD, 0xFFEF,\n    0xFFFE, 0x0019, 0x0035, 0x0046, 0x0041, 0x002E, 0x001C, 0xFFF7,\n    0xFFD0, 0xFFF8, 0x012B, 0x027B, 0x0314, 0x0388, 0x03BE, 0x039E,\n    0x02E5, 0x01B4, 0x0091, 0x0001, 0xFF31, 0xFF33, 0xFF37, 0xFF3A,\n    0xFF3C, 0xFF3A, 0xFF35, 0xFF31, 0xFF30, 0xFF2F, 0xFF2F, 0xFF2C,\n    0xFF2F, 0xFF43, 0xFF5D, 0xFF74, 0xFF7E, 0xFF72, 0xFF58, 0xFF3E,\n    0xFF30, 0xCD1B, 0xCA0F, 0xC482, 0xBEE0, 0xBB95, 0xBCBD, 0xC0B7,\n    0xC452, 0xC70B, 0xC9C1, 0xCB56, 0xCA4F, 0xC804, 0xC5BA, 0xC32F,\n    0xC12B, 0xC07B, 0xC205, 0xC51F, 0xC83E, 0xC9D4, 0x4D24, 0x4DE6,\n    0x4F29, 0x4F69, 0x4D24, 0x448F, 0x38AD, 0x322A, 0x3365, 0x37B9,\n    0x3D57, 0x426C, 0x4527, 0x4516, 0x4332, 0x3FCE, 0x3B3E, 0x3407,\n    0x2AA2, 0x2251, 0x1E53, 0x01C0, 0x017F, 0x00FA, 0xFFF3, 0xFE2C,\n    0xFA8C, 0xF5E5, 0xF2D4, 0xF18C, 0xF0A0, 0xF049, 0xF0BB, 0xF22F,\n    0xF572, 0xFA86, 0x006A, 0x0623, 0x0C4B, 0x12FE, 0x187C, 0x1B03,\n    0x089B, 0x071C, 0x0484, 0x030A, 0x04E7, 0x0E7D, 0x1C63, 0x2526,\n    0x26AD, 0x25D8, 0x23A1, 0x2106, 0x1F01, 0x1D6F, 0x1B9D, 0x19B2,\n    0x17D5, 0x15D5, 0x13BB, 0x120B, 0x1146, 0x9AAE, 0x9698, 0x8F03,\n    0x8624, 0x7E2F, 0x7733, 0x7107, 0x6D9B, 0x6CA0, 0x6C87, 0x6D60,\n    0x6F3B, 0x722A, 0x7736, 0x7E88, 0x86DF, 0x8EF3, 0x97A5, 0xA10A,\n    0xA8B6, 0xAC3C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0025,\n    0x004B, 0x0000, 0xFF0A, 0xFDB0, 0xFC3E, 0xFB04, 0xFA4E, 0xFA58,\n    0xFAF3, 0xFBD4, 0xFCAE, 0xFD9A, 0xFEAB, 0xFF93, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0003, 0x0000, 0xFFF4,\n    0xFFE3, 0xFFD0, 0xFFC1, 0xFFB8, 0xFFB8, 0xFFC0, 0xFFCB, 0xFFD6,\n    0xFFE2, 0xFFEF, 0xFFFB, 0x0000, 0xD266, 0xD0A0, 0xCD97, 0xCA83,\n    0xC89F, 0xC955, 0xCB7D, 0xCC75, 0xCB7B, 0xC9CC, 0xC7CA, 0xC5D6,\n    0xC451, 0xC34D, 0xC286, 0xC1E0, 0xC13F, 0xC092, 0xBFF1, 0xBF76,\n    0xBF41, 0x4224, 0x4240, 0x41F9, 0x41C8, 0x4224, 0x441E, 0x46BD,\n    0x4770, 0x457A, 0x424E, 0x3E9F, 0x3B1F, 0x3881, 0x3752, 0x36FC,\n    0x3682, 0x34E7, 0x3120, 0x2C06, 0x2772, 0x253C, 0xD9F3, 0xD6E5,\n    0xD177, 0xCD11, 0xCD17, 0xD65A, 0xE53A, 0xF076, 0xF681, 0xFBBF,\n    0xFFE0, 0x028E, 0x037B, 0x017B, 0xFC94, 0xF638, 0xEFDE, 0xE8B1,\n    0xE076, 0xD98C, 0xD652, 0x087E, 0x076E, 0x057D, 0x0292, 0xFE96,\n    0xF7EA, 0xEFB9, 0xEA15, 0xE7B1, 0xE64D, 0xE593, 0xE52F, 0xE4CC,\n    0xE46B, 0xE454, 0xE49B, 0xE553, 0xE6EA, 0xE92C, 0xEB3D, 0xEC3E,\n    0xC0C7, 0xC085, 0xBFFD, 0xBE46, 0xBA76, 0xB1A4, 0xA5FF, 0x9E47,\n    0x9BCD, 0x9AFC, 0x9B35, 0x9BDA, 0x9C4D, 0x9C49, 0x9C66, 0x9D4C,\n    0x9FA4, 0xA4CE, 0xABF6, 0xB272, 0xB597, 0x9527, 0x9527, 0x9527,\n    0x9527, 0x9527, 0x9555, 0x9583, 0x9527, 0x936E, 0x9142, 0x8F21,\n    0x8CEB, 0x8B00, 0x8917, 0x873E, 0x8585, 0x83FC, 0x8294, 0x8152,\n    0x8067, 0x8002, 0x5D21, 0x5D21, 0x5D21, 0x5D21, 0x5D21, 0x5CD5,\n    0x5C88, 0x5D21, 0x5FF7, 0x638D, 0x670F, 0x6AB5, 0x6DDE, 0x7105,\n    0x7411, 0x76E8, 0x796F, 0x7BC1, 0x7DD3, 0x7F57, 0x7FFD, 0x475E,\n    0x475E, 0x475E, 0x475E, 0x475E, 0x476B, 0x4778, 0x475E, 0x46E2,\n    0x4646, 0x45AE, 0x450F, 0x4485, 0x43FC, 0x4378, 0x42FC, 0x428E,\n    0x4229, 0x41CF, 0x418D, 0x4171, 0xBF5F, 0x90C1, 0x90C1, 0x90C1,\n    0x90C1, 0x90C1, 0x90F6, 0x912A, 0x90C1, 0x8FA0, 0x8E2F, 0x8C90,\n    0x8AE6, 0x8955, 0x87CB, 0x8639, 0x84BB, 0x8371, 0x8245, 0x812E,\n    0x805D, 0x8002, 0x7987, 0x7987, 0x7987, 0x7987, 0x7987, 0x7972,\n    0x795E, 0x7987, 0x79F6, 0x7A85, 0x7B25, 0x7BC9, 0x7C65, 0x7CFC,\n    0x7D98, 0x7E2B, 0x7EAB, 0x7F1F, 0x7F8A, 0x7FDB, 0x7FFE, 0x4B8C,\n    0x4B8C, 0x4B8C, 0x4B8C, 0x4B8C, 0x4BAC, 0x4BCC, 0x4B8C, 0x4ADE,\n    0x49FF, 0x4905, 0x4804, 0x4711, 0x4624, 0x4531, 0x444B, 0x4384,\n    0x42CE, 0x4226, 0x41A8, 0x4171, 0xBF5F, 0xFC93, 0xFC5B, 0xFB1C,\n    0xF961, 0xF7B8, 0xF508, 0xF23D, 0xF2EB, 0xF7C4, 0xFE77, 0x0607,\n    0x0D7A, 0x13D5, 0x181D, 0x1757, 0x1231, 0x0D2D, 0x092E, 0x04DD,\n    0x0169, 0x0000, 0xFCBF, 0xFA75, 0xF5E4, 0xF148, 0xEEDC, 0xF0CB,\n    0xF556, 0xF8D7, 0xFA6D, 0xFBAF, 0xFCAE, 0xFD7D, 0xFE2D, 0xFED1,\n    0xFF00, 0xFEB5, 0xFE95, 0xFEE6, 0xFF60, 0xFFD0, 0x0000, 0x1A73,\n    0x170A, 0x105C, 0x098B, 0x05B9, 0x0882, 0x0EDA, 0x11E2, 0x1041,\n    0x0D6F, 0x09C9, 0x05AD, 0x0175, 0xFD81, 0xF885, 0xF31F, 0xF081,\n    0xF245, 0xF65D, 0xFA7F, 0xFC62, 0x1603, 0x15DF, 0x157E, 0x13D8,\n    0x0FE8, 0x093F, 0x00D1, 0xF7AB, 0xEEDA, 0xE76D, 0xE2D8, 0xE02C,\n    0xDCDB, 0xD57B, 0xDB11, 0xE265, 0xEA85, 0xF27F, 0xF95E, 0xFE2F,\n    0x0000, 0xFC95, 0xFA18, 0xF5B9, 0xF1B0, 0xF035, 0xF1B5, 0xF4BF,\n    0xF8BB, 0xFD11, 0x0129, 0x0596, 0x0A71, 0x0E71, 0x0DBE, 0x0BA7,\n    0x092D, 0x0690, 0x0415, 0x01FC, 0x008A, 0x0000, 0x1A0F, 0x1955,\n    0x1798, 0x14BF, 0x10B5, 0x0A66, 0x0225, 0xF9FB, 0xF3EA, 0xF1F9,\n    0xF9D6, 0x0969, 0x1716, 0x1807, 0x15D5, 0x1318, 0x1023, 0x0D48,\n    0x0AD9, 0x0927, 0x0884, 0xB079, 0xB910, 0xC912, 0xDC52, 0xEEA3,\n    0x0148, 0x1396, 0x1E70, 0x2121, 0x2085, 0x1DE1, 0x1A76, 0x1788,\n    0x14CE, 0x115D, 0x0D8A, 0x09A8, 0x0609, 0x0301, 0x00E3, 0x0001,\n    0x3A85, 0x3A0B, 0x390F, 0x3710, 0x338C, 0x2CE4, 0x2426, 0x1CD2,\n    0x1728, 0x116B, 0x0C18, 0x07AE, 0x04AB, 0x02D3, 0x0185, 0x00AB,\n    0x002E, 0xFFF6, 0xFFEB, 0xFFF6, 0x0000, 0xEE75, 0xF837, 0x0A30,\n    0x1E0C, 0x2D76, 0x3480, 0x3699, 0x387A, 0x3C5B, 0x40D0, 0x4519,\n    0x4876, 0x4A27, 0x4A38, 0x4962, 0x47EB, 0x4619, 0x4430, 0x4275,\n    0x412F, 0x40A2,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_CA.inc.c",
    "content": "static const struct Animation anim_CA[] = {\n    0,\n    189,\n    25,\n    0,\n    0x1E,\n    ANIMINDEX_NUMPARTS(anim_CA_indices),\n    anim_CA_values,\n    anim_CA_indices,\n    0,\n};\n\n\nstatic const u16 anim_CA_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x03C9,\n    0x001E, 0x038D, 0x0001, 0x0000, 0x001E, 0x03AB,\n    0x001E, 0x0333, 0x001E, 0x0351, 0x001E, 0x036F,\n    0x0001, 0x032F, 0x0001, 0x0330, 0x0001, 0x0331,\n    0x001E, 0x007B, 0x001E, 0x0099, 0x001E, 0x00B7,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x005D,\n    0x001E, 0x0003, 0x001E, 0x0021, 0x001E, 0x003F,\n    0x0001, 0x02D3, 0x0001, 0x02D4, 0x001E, 0x02D5,\n    0x001E, 0x014D, 0x001E, 0x016B, 0x001E, 0x0189,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x012F,\n    0x001E, 0x00D5, 0x001E, 0x00F3, 0x001E, 0x0111,\n    0x0001, 0x0000, 0x001E, 0x02F3, 0x001E, 0x0311,\n    0x001E, 0x0279, 0x001E, 0x0297, 0x001E, 0x02B5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x025B,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x023D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0332,\n    0x001E, 0x01E3, 0x001E, 0x0201, 0x001E, 0x021F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x01C5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001E, 0x01A7,\n};\n\nstatic const s16 anim_CA_values[] = {\n    0x0000, 0x00C0, 0x3FFF, 0xDFD1, 0xDFAA, 0xDF41, 0xDEA3, 0xDDE0,\n    0xDD07, 0xDC27, 0xDB4E, 0xDA8B, 0xD9ED, 0xD984, 0xD95D, 0xD970,\n    0xD9A4, 0xD9F6, 0xDA5F, 0xDADC, 0xDB68, 0xDBFD, 0xDC97, 0xDD31,\n    0xDDC6, 0xDE52, 0xDECF, 0xDF38, 0xDF8A, 0xDFBE, 0xDFD1, 0xDFD1,\n    0xDFD1, 0x047B, 0x0437, 0x037F, 0x026B, 0x0116, 0xFF9B, 0xFE12,\n    0xFC96, 0xFB41, 0xFA2D, 0xF975, 0xF931, 0xF952, 0xF9AE, 0xFA3C,\n    0xFAF5, 0xFBD0, 0xFCC4, 0xFDC9, 0xFED7, 0xFFE4, 0x00E8, 0x01DC,\n    0x02B7, 0x0370, 0x03FF, 0x045A, 0x047B, 0x047B, 0x047B, 0xED8C,\n    0xED63, 0xECF6, 0xEC51, 0xEB87, 0xEAA4, 0xE9BA, 0xE8D8, 0xE80D,\n    0xE769, 0xE6FB, 0xE6D3, 0xE6E6, 0xE71D, 0xE772, 0xE7E0, 0xE862,\n    0xE8F3, 0xE98F, 0xEA2F, 0xEAD0, 0xEB6B, 0xEBFD, 0xEC7F, 0xECED,\n    0xED42, 0xED78, 0xED8C, 0xED8C, 0xED8C, 0xDF7F, 0xDFAB, 0xE023,\n    0xE0D6, 0xE1B3, 0xE2AA, 0xE3A9, 0xE4A0, 0xE57E, 0xE631, 0xE6A9,\n    0xE6D4, 0xE6BF, 0xE684, 0xE627, 0xE5AF, 0xE521, 0xE482, 0xE3D9,\n    0xE32A, 0xE27B, 0xE1D1, 0xE132, 0xE0A4, 0xE02C, 0xDFD0, 0xDF94,\n    0xDF7F, 0xDF7F, 0xDF7F, 0x0B0D, 0x0A9F, 0x096F, 0x07AA, 0x057A,\n    0x030A, 0x0084, 0xFE15, 0xFBE5, 0xFA20, 0xF8F1, 0xF882, 0xF8B7,\n    0xF94E, 0xFA38, 0xFB68, 0xFCCF, 0xFE60, 0x000C, 0x01C7, 0x0382,\n    0x052F, 0x06C0, 0x0827, 0x0957, 0x0A41, 0x0AD8, 0x0B0D, 0x0B0D,\n    0x0B0D, 0xDC8D, 0xDCD4, 0xDD97, 0xDEBB, 0xE024, 0xE1B7, 0xE357,\n    0xE4E9, 0xE652, 0xE776, 0xE839, 0xE881, 0xE85E, 0xE7FD, 0xE766,\n    0xE6A2, 0xE5BB, 0xE4B8, 0xE3A4, 0xE287, 0xE169, 0xE055, 0xDF52,\n    0xDE6B, 0xDDA7, 0xDD10, 0xDCAF, 0xDC8D, 0xDC8D, 0xDC8D, 0xC35A,\n    0xC43C, 0xC6A9, 0xCA49, 0xCEC3, 0xD3C1, 0xD8EB, 0xDDE9, 0xE264,\n    0xE603, 0xE870, 0xE952, 0xE8E5, 0xE7B1, 0xE5D1, 0xE364, 0xE084,\n    0xDD4F, 0xD9E1, 0xD656, 0xD2CC, 0xCF5E, 0xCC28, 0xC949, 0xC6DB,\n    0xC4FC, 0xC3C7, 0xC35A, 0xC35A, 0xC35A, 0x0000, 0x0081, 0x01E2,\n    0x03F3, 0x0680, 0x0959, 0x0C4A, 0x0F22, 0x11B0, 0x13C1, 0x1522,\n    0x15A3, 0x1565, 0x14B5, 0x13A4, 0x1242, 0x109E, 0x0ECA, 0x0CD6,\n    0x0AD1, 0x08CD, 0x06D8, 0x0504, 0x0361, 0x01FF, 0x00EE, 0x003E,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0055, 0x013E, 0x029A, 0x0448,\n    0x0628, 0x0819, 0x09F9, 0x0BA7, 0x0D04, 0x0DED, 0x0E42, 0x0E19,\n    0x0DA5, 0x0CF1, 0x0C07, 0x0AF3, 0x09BF, 0x0875, 0x0721, 0x05CC,\n    0x0482, 0x034E, 0x023A, 0x0150, 0x009C, 0x0028, 0x0000, 0x0000,\n    0x0000, 0xF549, 0xF510, 0xF472, 0xF387, 0xF264, 0xF120, 0xEFD1,\n    0xEE8D, 0xED6A, 0xEC7F, 0xEBE2, 0xEBA8, 0xEBC4, 0xEC12, 0xEC8C,\n    0xED29, 0xEDE4, 0xEEB4, 0xEF93, 0xF079, 0xF15F, 0xF23D, 0xF30E,\n    0xF3C8, 0xF466, 0xF4DF, 0xF52E, 0xF549, 0xF549, 0xF549, 0xD47F,\n    0xD4D4, 0xD5BD, 0xD719, 0xD8C8, 0xDAA8, 0xDC98, 0xDE78, 0xE027,\n    0xE183, 0xE26C, 0xE2C1, 0xE298, 0xE224, 0xE170, 0xE087, 0xDF73,\n    0xDE3E, 0xDCF5, 0xDBA0, 0xDA4C, 0xD902, 0xD7CD, 0xD6B9, 0xD5D0,\n    0xD51C, 0xD4A8, 0xD47F, 0xD47F, 0xD47F, 0xF9E1, 0xF929, 0xF732,\n    0xF443, 0xF0A2, 0xEC96, 0xE867, 0xE45B, 0xE0BA, 0xDDCA, 0xDBD3,\n    0xDB1C, 0xDB74, 0xDC6E, 0xDDF3, 0xDFEA, 0xE23F, 0xE4D8, 0xE7A0,\n    0xEA7E, 0xED5D, 0xF024, 0xF2BE, 0xF512, 0xF70A, 0xF88E, 0xF988,\n    0xF9E1, 0xF9E1, 0xF9E1, 0x2329, 0x2336, 0x2359, 0x238C, 0x23CC,\n    0x2413, 0x245C, 0x24A3, 0x24E3, 0x2516, 0x2539, 0x2545, 0x253F,\n    0x252E, 0x2514, 0x24F1, 0x24C8, 0x249B, 0x246A, 0x2437, 0x2405,\n    0x23D4, 0x23A7, 0x237E, 0x235B, 0x2341, 0x2330, 0x2329, 0x2329,\n    0x2329, 0xE1B6, 0xE047, 0xDC59, 0xD67B, 0xCF39, 0xC723, 0xBEC6,\n    0xB6AF, 0xAF6E, 0xA98F, 0xA5A2, 0xA433, 0xA4E4, 0xA6D8, 0xA9E0,\n    0xADCF, 0xB277, 0xB7A9, 0xBD38, 0xC2F4, 0xC8B1, 0xCE3F, 0xD372,\n    0xD819, 0xDC09, 0xDF11, 0xE105, 0xE1B6, 0xE1B6, 0xE1B6, 0xC4F4,\n    0xC591, 0xC6FA, 0xC88D, 0xC9A8, 0xC9AA, 0xC79E, 0xC3FF, 0xC04C,\n    0xBE07, 0xBE77, 0xC06F, 0xC1C5, 0xC1E5, 0xC1BC, 0xC169, 0xC109,\n    0xC0B8, 0xC095, 0xC0BB, 0xC14A, 0xC330, 0xC660, 0xC977, 0xCB11,\n    0xCAB0, 0xC934, 0xC74C, 0xC5A8, 0xC4F4, 0x1101, 0x10FE, 0x10F8,\n    0x10EF, 0x10E5, 0x10DB, 0x10D3, 0x10CF, 0x10D0, 0x10D8, 0x0FD6,\n    0x0EF5, 0x118D, 0x1813, 0x2031, 0x2910, 0x31D5, 0x39AA, 0x4054,\n    0x4527, 0x469F, 0x4474, 0x4006, 0x3A4F, 0x344A, 0x2CE0, 0x23A8,\n    0x1A9E, 0x13BD, 0x1101, 0x0040, 0x0041, 0x0043, 0x0045, 0x0049,\n    0x004E, 0x0053, 0x0059, 0x0060, 0x0068, 0x007A, 0x0094, 0x00A1,\n    0x009B, 0x008C, 0x007A, 0x006C, 0x0068, 0x0080, 0x00A8, 0x00B5,\n    0x0090, 0x0053, 0x0016, 0xFFF5, 0xFFF4, 0x0005, 0x001F, 0x0036,\n    0x0040, 0xFFAF, 0xFFA8, 0xFF97, 0xFF7E, 0xFF5F, 0xFF3C, 0xFF19,\n    0xFEF9, 0xFEDD, 0xFEC8, 0xFEC7, 0xFED7, 0xFEE1, 0xFEDE, 0xFED7,\n    0xFECF, 0xFEC9, 0xFEC8, 0xFED2, 0xFEE5, 0xFEED, 0xFEDF, 0xFEC6,\n    0xFEB3, 0xFEB7, 0xFEDE, 0xFF1D, 0xFF62, 0xFF98, 0xFFAF, 0xAFFC,\n    0xB076, 0xB1C7, 0xB3C8, 0xB653, 0xB93D, 0xBC61, 0xBF96, 0xC2B4,\n    0xC594, 0xCA37, 0xCFC1, 0xD1C1, 0xCFAA, 0xCC1D, 0xC776, 0xC20C,\n    0xBC38, 0xB462, 0xAB6B, 0xA564, 0xA32E, 0xA29A, 0xA31E, 0xA42E,\n    0xA625, 0xA92B, 0xAC62, 0xAEF1, 0xAFFC, 0xC079, 0xC250, 0xC5DF,\n    0xC837, 0xC83C, 0xC756, 0xC65E, 0xC62D, 0xC724, 0xC8BE, 0xCA83,\n    0xCBF7, 0xCCA0, 0xCC45, 0xCB39, 0xC9CF, 0xC85D, 0xC736, 0xC766,\n    0xC45B, 0xC208, 0xC179, 0xC10F, 0xC0C6, 0xC097, 0xC07E, 0xC073,\n    0xC073, 0xC077, 0xC079, 0x2670, 0x2E92, 0x3E09, 0x4770, 0x46CD,\n    0x4248, 0x3BA7, 0x34B2, 0x2CD8, 0x2355, 0x19A2, 0x113A, 0x0B97,\n    0x08DF, 0x07E9, 0x0839, 0x0953, 0x0ABB, 0x0BF4, 0x0F0C, 0x12E1,\n    0x157B, 0x184E, 0x1B35, 0x1E0D, 0x20B2, 0x22FF, 0x24D0, 0x2602,\n    0x2670, 0x00CE, 0xFCFB, 0xF5B6, 0xF156, 0xF227, 0xF51C, 0xF884,\n    0xFAAF, 0xFB41, 0xFB33, 0xFAD4, 0xFA72, 0xFA5E, 0xFA9A, 0xFAF2,\n    0xFB5A, 0xFBC7, 0xFC2F, 0xFC88, 0xFC8D, 0xFC9E, 0xFD13, 0xFDA0,\n    0xFE3B, 0xFEDB, 0xFF74, 0xFFFD, 0x006A, 0x00B4, 0x00CE, 0x001B,\n    0x0020, 0x0020, 0x0000, 0xFFA5, 0xFF23, 0xFEAD, 0xFE74, 0xFE85,\n    0xFEC1, 0xFF12, 0xFF63, 0xFF9F, 0xFFC7, 0xFFE9, 0x0005, 0x001D,\n    0x0030, 0x003E, 0x0020, 0xFFFB, 0xFFFA, 0xFFFB, 0xFFFF, 0x0004,\n    0x000A, 0x0010, 0x0015, 0x0019, 0x001B, 0xC8D7, 0xC3A9, 0xBA96,\n    0xB752, 0xBE16, 0xC9BE, 0xD5F3, 0xDE5B, 0xE1F7, 0xE36A, 0xE3C9,\n    0xE42D, 0xE5AB, 0xE852, 0xEB5C, 0xEEA4, 0xF204, 0xF556, 0xF873,\n    0xFC02, 0xFBE3, 0xF6AA, 0xF021, 0xE8CB, 0xE12D, 0xD9C9, 0xD325,\n    0xCDC3, 0xCA28, 0xC8D7, 0x8001, 0x8001, 0x4171, 0x419C, 0x4214,\n    0x42C7, 0x43A5, 0x449C, 0x459B, 0x4692, 0x476F, 0x4822, 0x489A,\n    0x48C6, 0x48B5, 0x4886, 0x483B, 0x47D9, 0x4764, 0x46DF, 0x464F,\n    0x45B7, 0x451B, 0x4480, 0x43E8, 0x4357, 0x42D3, 0x425E, 0x41FC,\n    0x41B1, 0x4181, 0x4171, 0x0000, 0xFC18, 0xF4D6, 0xF0ED, 0xF2F7,\n    0xF79D, 0xFCB1, 0x0000, 0x0124, 0x0167, 0x0126, 0x00BB, 0x0083,\n    0x007C, 0x006A, 0x0050, 0x0032, 0x0016, 0x0000, 0xFFF7, 0xFFF7,\n    0xFFF7, 0xFFF8, 0xFFF9, 0xFFFB, 0xFFFC, 0xFFFE, 0xFFFF, 0x0000,\n    0x0000, 0xC5E4, 0xC612, 0xC4CE, 0xBF5F, 0xB2FC, 0xA20A, 0x919A,\n    0x86BD, 0x8273, 0x8175, 0x826B, 0x83FB, 0x84CE, 0x84E8, 0x852F,\n    0x8590, 0x85FE, 0x8667, 0x86BD, 0x856C, 0x86E1, 0x8DA6, 0x95E2,\n    0x9EFD, 0xA85A, 0xB15F, 0xB971, 0xBFF4, 0xC44E, 0xC5E4, 0x8001,\n    0x8001, 0x4171, 0xBF5F, 0x04B0, 0x048D, 0x042D, 0x039A, 0x02EB,\n    0x022D, 0x0165, 0x0096, 0xFFC7, 0xFEF7, 0xFE2D, 0xFD6D, 0xFCBA,\n    0xFC18, 0xFB8C, 0xFB75, 0xFBEE, 0xFC94, 0xFD40, 0xFE07, 0xFEE0,\n    0xFFC4, 0x00AA, 0x018B, 0x0260, 0x0320, 0x03C3, 0x0441, 0x0493,\n    0x04B0, 0x0000, 0x0009, 0x001B, 0x0024, 0x001C, 0x000B, 0x0000,\n    0xFFFE, 0xFFFE, 0xFFFF, 0x0000, 0x0001, 0x0000, 0xFFFC, 0xFFF6,\n    0xFFEE, 0xFFE9, 0xFFE6, 0xFFE8, 0xFFEC, 0xFFF2, 0xFFF8, 0xFFFD,\n    0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0107,\n    0x00E3, 0x00A3, 0x0089, 0x00C7, 0x012C, 0x0168, 0x016D, 0x0162,\n    0x014D, 0x0134, 0x011C, 0x010C, 0x0101, 0x00F7, 0x00F0, 0x00EE,\n    0x00F4, 0x0104, 0x011D, 0x013B, 0x0157, 0x016C, 0x0176, 0x016E,\n    0x015A, 0x013F, 0x0124, 0x010F, 0x0107, 0xFC58, 0xFC71, 0xFCB8,\n    0xFD27, 0xFDB6, 0xFE5E, 0xFF19, 0xFFDF, 0x00AA, 0x0173, 0x0234,\n    0x02E6, 0x0381, 0x0408, 0x0413, 0x039C, 0x0311, 0x0276, 0x01D0,\n    0x0122, 0x0071, 0xFFC2, 0xFF17, 0xFE76, 0xFDE2, 0xFD5F, 0xFCF2,\n    0xFC9F, 0xFC6A, 0xFC58, 0x07C5, 0x07FC, 0x085E, 0x0889, 0x0871,\n    0x084C, 0x081D, 0x07E9, 0x07B1, 0x077A, 0x0746, 0x0719, 0x06F5,\n    0x0703, 0x0743, 0x079D, 0x0809, 0x0866, 0x0893, 0x0895, 0x088C,\n    0x087B, 0x0863, 0x0847, 0x0828, 0x080B, 0x07F0, 0x07D9, 0x07CA,\n    0x07C5, 0x3B05, 0x3B67, 0x3C1C, 0x3C7D, 0x3C74, 0x3C5C, 0x3C39,\n    0x3C0C, 0x3BDB, 0x3BA8, 0x3B76, 0x3B4A, 0x3B26, 0x3B0E, 0x3B05,\n    0x3B67, 0x3C1C, 0x3C7D, 0x3C76, 0x3C61, 0x3C42, 0x3C1C, 0x3BF0,\n    0x3BC1, 0x3B93, 0x3B67, 0x3B40, 0x3B21, 0x3B0D, 0x3B05,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_CB_CC.inc.c",
    "content": "static const struct Animation anim_CB[] = {\n    1,\n    189,\n    0,\n    0,\n    0x11,\n    ANIMINDEX_NUMPARTS(anim_CB_CC_indices),\n    anim_CB_CC_values,\n    anim_CB_CC_indices,\n    0,\n};\n\nstatic const struct Animation anim_CC[] = {\n    1,\n    189,\n    0,\n    0,\n    0x01,\n    ANIMINDEX_NUMPARTS(anim_CB_CC_indices),\n    anim_CB_CC_values,\n    anim_CB_CC_indices,\n    0,\n};\n\n\nstatic const u16 anim_CB_CC_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0000, 0x0001, 0x0003, 0x0001, 0x0000,\n    0x0011, 0x0280, 0x0011, 0x0291, 0x0011, 0x02A2,\n    0x0011, 0x024D, 0x0011, 0x025E, 0x0011, 0x026F,\n    0x0011, 0x021A, 0x0011, 0x022B, 0x0011, 0x023C,\n    0x0011, 0x01E4, 0x0011, 0x01F5, 0x0011, 0x0206,\n    0x0011, 0x0048, 0x0011, 0x0059, 0x0011, 0x006A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0011, 0x0037,\n    0x0011, 0x0004, 0x0011, 0x0015, 0x0011, 0x0026,\n    0x0001, 0x01E0, 0x0001, 0x01E1, 0x0001, 0x01E2,\n    0x0011, 0x00BF, 0x0011, 0x00D0, 0x0011, 0x00E1,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0011, 0x00AE,\n    0x0011, 0x007B, 0x0011, 0x008C, 0x0011, 0x009D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x01E3,\n    0x0011, 0x01AD, 0x0011, 0x01BE, 0x0011, 0x01CF,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0011, 0x019C,\n    0x0011, 0x0169, 0x0011, 0x017A, 0x0011, 0x018B,\n    0x0001, 0x0217, 0x0001, 0x0218, 0x0001, 0x0219,\n    0x0011, 0x0136, 0x0011, 0x0147, 0x0011, 0x0158,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0011, 0x0125,\n    0x0011, 0x00F2, 0x0011, 0x0103, 0x0011, 0x0114,\n};\n\nstatic const s16 anim_CB_CC_values[] = {\n    0x0000, 0x00C3, 0xFFBD, 0x3FFF, 0x1292, 0x12A8, 0x12DE, 0x1321,\n    0x135D, 0x1380, 0x1377, 0x132E, 0x1292, 0x116A, 0x0FB0, 0x0D9D,\n    0x0B6A, 0x0951, 0x078A, 0x064F, 0x05DA, 0x0362, 0x037C, 0x03BB,\n    0x0409, 0x0450, 0x0479, 0x046E, 0x0418, 0x0362, 0x0207, 0x0001,\n    0xFD94, 0xFB01, 0xF88B, 0xF676, 0xF505, 0xF47B, 0xDC1E, 0xDC2B,\n    0xDC4A, 0xDC6F, 0xDC92, 0xDCA5, 0xDCA0, 0xDC77, 0xDC1E, 0xDB77,\n    0xDA7D, 0xD950, 0xD811, 0xD6E1, 0xD5DF, 0xD52D, 0xD4EA, 0xF163,\n    0xF0C6, 0xEF1D, 0xECAC, 0xE9B9, 0xE689, 0xE361, 0xE086, 0xDE3D,\n    0xDC49, 0xDA4F, 0xD864, 0xD6A0, 0xD519, 0xD3E6, 0xD31D, 0xD2D5,\n    0x2209, 0x2210, 0x2221, 0x2236, 0x2249, 0x2254, 0x2251, 0x223A,\n    0x2209, 0x21AB, 0x2120, 0x2078, 0x1FC7, 0x1F1D, 0x1E8E, 0x1E2A,\n    0x1E05, 0x065B, 0x0683, 0x06E5, 0x075E, 0x07CC, 0x080C, 0x07FA,\n    0x0776, 0x065B, 0x0442, 0x0120, 0xFD5E, 0xF961, 0xF592, 0xF259,\n    0xF01E, 0xEF48, 0x86DD, 0x86D2, 0x86B8, 0x8699, 0x867C, 0x866B,\n    0x866F, 0x8692, 0x86DD, 0x876A, 0x883E, 0x893C, 0x8A49, 0x8B4A,\n    0x8C23, 0x8CBA, 0x8CF2, 0xE2F8, 0xE323, 0xE36C, 0xE37A, 0xE2F8,\n    0xE12D, 0xDE7D, 0xDC3C, 0xDBBE, 0xDD1E, 0xDF5D, 0xE229, 0xE52D,\n    0xE817, 0xEA92, 0xEC4D, 0xECF3, 0x147F, 0x1500, 0x15D6, 0x1601,\n    0x147F, 0x0FED, 0x0933, 0x02C3, 0xFF11, 0xFE0A, 0xFDDA, 0xFE4A,\n    0xFF23, 0x002B, 0x012E, 0x01F2, 0x023F, 0xDCAB, 0xDC50, 0xDBB8,\n    0xDB9A, 0xDCAB, 0xE004, 0xE4F8, 0xE98E, 0xEBD1, 0xEBBB, 0xEAC6,\n    0xE938, 0xE756, 0xE566, 0xE3AD, 0xE271, 0xE1F9, 0xD87F, 0xD57D,\n    0xCF52, 0xCA47, 0xCAA1, 0xD49C, 0xE4E8, 0xF47E, 0xFC56, 0xFC4A,\n    0xF975, 0xF4B5, 0xEEE4, 0xE8DF, 0xE382, 0xDFA9, 0xDE30, 0x464D,\n    0x4509, 0x421F, 0x3EE7, 0x3CB8, 0x3C3D, 0x3CA4, 0x3D09, 0x3C89,\n    0x3AF3, 0x38D5, 0x366A, 0x33EB, 0x3195, 0x2FA1, 0x2E4A, 0x2DCA,\n    0x27A4, 0x21A4, 0x141D, 0x05C6, 0xFD55, 0xFD7E, 0x025E, 0x08C9,\n    0x0D92, 0x1099, 0x13C1, 0x16E0, 0x19CC, 0x1C5B, 0x1E63, 0x1FBA,\n    0x2036, 0xD360, 0xD358, 0xD340, 0xD319, 0xD2E4, 0xD222, 0xD0FD,\n    0xD075, 0xD18B, 0xD475, 0xD871, 0xDD0C, 0xE1D3, 0xE652, 0xEA17,\n    0xECAF, 0xEDA6, 0xEACE, 0xEBF5, 0xEED1, 0xF27A, 0xF60C, 0xF8A0,\n    0xF97F, 0xF946, 0xF90F, 0xF933, 0xF952, 0xF971, 0xF997, 0xF9CA,\n    0xFA0F, 0xFAE6, 0xFB94, 0x023F, 0x01D4, 0x00CF, 0xFF8F, 0xFE6D,\n    0xFDC7, 0xFE40, 0xFF65, 0xFFF4, 0xFFB1, 0xFF3F, 0xFEA7, 0xFDF4,\n    0xFD30, 0xFC67, 0xFAD9, 0xF9B0, 0xB9FE, 0xBC20, 0xC181, 0xC89A,\n    0xCFE4, 0xD5D8, 0xDAEC, 0xDF1D, 0xE02A, 0xDE53, 0xDB7C, 0xD7DB,\n    0xD3A9, 0xCF1C, 0xCA6C, 0xC162, 0xBAB0, 0x5EA1, 0x54DA, 0x3E60,\n    0x257D, 0x147A, 0x0E1D, 0x0CE5, 0x0EB8, 0x1178, 0x1566, 0x1B52,\n    0x21F7, 0x2812, 0x2C5D, 0x2D95, 0x1C5D, 0x0B84, 0x0B6D, 0x0BA4,\n    0x0C33, 0x0CF7, 0x0DD1, 0x0E9F, 0x0FE9, 0x114E, 0x114F, 0x0F96,\n    0x0D17, 0x0A3F, 0x077B, 0x0536, 0x03DD, 0x076E, 0x0B5D, 0x01E2,\n    0x020F, 0x0283, 0x0322, 0x03CE, 0x046B, 0x0503, 0x05A6, 0x063E,\n    0x06E2, 0x07A4, 0x0863, 0x08FE, 0x0955, 0x0945, 0x0679, 0x03D3,\n    0x9CFC, 0x9F6D, 0xA5A7, 0xAE03, 0xB6D9, 0xBE83, 0xC67C, 0xCE42,\n    0xD134, 0xCEAE, 0xC9DC, 0xC3D5, 0xBDAF, 0xB880, 0xB55E, 0xBBDD,\n    0xC33B, 0xF4EA, 0xF573, 0xF6B5, 0xF829, 0xF948, 0xFA19, 0xFAF8,\n    0xFBDF, 0xFCC8, 0xFDAC, 0xFE86, 0xFF4F, 0x0000, 0x0095, 0x0107,\n    0x0150, 0x016A, 0xF1ED, 0xF2F5, 0xF541, 0xF79F, 0xF8DC, 0xF90B,\n    0xF90E, 0xF8ED, 0xF8B1, 0xF85F, 0xF801, 0xF79C, 0xF739, 0xF6DF,\n    0xF696, 0xF664, 0xF652, 0xD482, 0xD5F2, 0xD8ED, 0xDB6F, 0xDB76,\n    0xD927, 0xD61C, 0xD281, 0xCE86, 0xCA57, 0xC622, 0xC215, 0xBE5E,\n    0xBB2B, 0xB8A9, 0xB706, 0xB671, 0x1FFC, 0x2678, 0x34F5, 0x4403,\n    0x4C30, 0x4DEB, 0x4EB6, 0x4EB7, 0x4E14, 0x4CF4, 0x4B7E, 0x49D7,\n    0x4827, 0x4694, 0x4544, 0x445F, 0x440A, 0x0C64, 0x0B07, 0x079B,\n    0x0321, 0xFE9B, 0xFB06, 0xF96A, 0xF8FB, 0xF88F, 0xF825, 0xF7BF,\n    0xF760, 0xF70D, 0xF6C6, 0xF690, 0xF66E, 0xF662, 0x089E, 0x07FC,\n    0x0664, 0x0447, 0x0217, 0x0046, 0xFF3E, 0xFE42, 0xFCB6, 0xFAEB,\n    0xF8FD, 0xF70B, 0xF532, 0xF38F, 0xF23F, 0xF160, 0xF10F, 0xBD10,\n    0xB86B, 0xACD9, 0x9DE1, 0x8F0E, 0x83E9, 0x81F0, 0x8428, 0x8474,\n    0x84CE, 0x852F, 0x8592, 0x85F1, 0x8646, 0x8689, 0x86B6, 0x86C7,\n    0x7FFF, 0x7FFF, 0x4171, 0xBF62, 0x7FFF, 0x7FFF, 0x8000, 0x8002,\n    0x8004, 0x8006, 0x8008, 0x8009, 0x800A, 0x800B, 0x800B, 0x800B,\n    0x800B, 0x800B, 0x800B, 0x800B, 0x800A, 0x7FFF, 0x7CDC, 0x7478,\n    0x685A, 0x5A07, 0x4B07, 0x3CE0, 0x3118, 0x2936, 0x250F, 0x231C,\n    0x22DB, 0x23CA, 0x2566, 0x272E, 0x289F, 0x2936, 0x4171, 0x4172,\n    0x4177, 0x417E, 0x4185, 0x418D, 0x4195, 0x419C, 0x41A0, 0x41A2,\n    0x41A3, 0x41A3, 0x41A3, 0x41A2, 0x41A1, 0x41A0, 0x41A0, 0xFCC9,\n    0x054B, 0xB893, 0x1DE4, 0x1D1E, 0x1B13, 0x1830, 0x14E1, 0x1194,\n    0x0EB4, 0x0CAF, 0x0B54, 0x0A2A, 0x092F, 0x0860, 0x07BB, 0x073E,\n    0x06E8, 0x06B6, 0x06A6, 0x0F0A, 0x0E4F, 0x0C63, 0x09AE, 0x0699,\n    0x038D, 0x00F2, 0xFF32, 0xFE24, 0xFD58, 0xFCC3, 0xFC5F, 0xFC20,\n    0xFBFF, 0xFBF3, 0xFBF2, 0xFBF4, 0xEC1C, 0xEC91, 0xEDCA, 0xEF92,\n    0xF1B1, 0xF3F1, 0xF61A, 0xF7F7, 0xF9C3, 0xFBC7, 0xFDE6, 0x0003,\n    0x0200, 0x03C0, 0x0525, 0x0611, 0x0666, 0xFD44, 0xFD7A, 0xFE08,\n    0xFECF, 0xFFB0, 0x008C, 0x0144, 0x01BA, 0x01F6, 0x021A, 0x0229,\n    0x0229, 0x021E, 0x020D, 0x01FB, 0x01ED, 0x01E7, 0xFB67, 0xFBB0,\n    0xFC6F, 0xFD78, 0xFE9F, 0xFFB9, 0x009A, 0x0118, 0x0139, 0x0127,\n    0x00F0, 0x009F, 0x0042, 0xFFE4, 0xFF92, 0xFF57, 0xFF41, 0x3308,\n    0x2FB0, 0x2705, 0x1B11, 0x0DDD, 0x0174, 0xF7E0, 0xF329, 0xF335,\n    0xF60D, 0xFAF2, 0x0122, 0x07E1, 0x0E6D, 0x1408, 0x17F1, 0x196A,\n    0xD07F, 0xD236, 0xD6B4, 0xDCFC, 0xE413, 0xEAFB, 0xF0B8, 0xF44E,\n    0xF600, 0xF6D6, 0xF6FD, 0xF6A2, 0xF5F3, 0xF51C, 0xF44A, 0xF3AC,\n    0xF36D, 0xFAF9, 0xFB6A, 0xFC97, 0xFE50, 0x005E, 0x0291, 0x04B3,\n    0x0693, 0x057F, 0x0426, 0x02B7, 0x0148, 0xFFED, 0xFEBB, 0xFDC6,\n    0xFD24, 0xFCEA, 0x50F2, 0x50BD, 0x502F, 0x4F5E, 0x4E66, 0x4D5C,\n    0x4C5C, 0x4B7C, 0x486D, 0x44EF, 0x413D, 0x3D8B, 0x3A0D, 0x36FA,\n    0x3486, 0x32E6, 0x324F,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_CD.inc.c",
    "content": "static const struct Animation anim_CD[] = {\n    1,\n    189,\n    0,\n    0,\n    0x3F,\n    ANIMINDEX_NUMPARTS(anim_CD_indices),\n    anim_CD_values,\n    anim_CD_indices,\n    0,\n};\n\n\nstatic const u16 anim_CD_indices[] = {\n    0x003F, 0x0001, 0x003F, 0x0040, 0x003F, 0x007F, 0x0001, 0x0000, 0x0001, 0x00BE, 0x0001, 0x0000,\n    0x003F, 0x0963, 0x003F, 0x09A2, 0x003F, 0x09E1,\n    0x003F, 0x08A6, 0x003F, 0x08E5, 0x003F, 0x0924,\n    0x003F, 0x07E9, 0x003F, 0x0828, 0x003F, 0x0867,\n    0x0001, 0x07E5, 0x0001, 0x07E6, 0x0001, 0x07E7,\n    0x003F, 0x01BB, 0x003F, 0x01FA, 0x003F, 0x0239,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x003F, 0x017C,\n    0x003F, 0x00BF, 0x003F, 0x00FE, 0x003F, 0x013D,\n    0x0001, 0x07A3, 0x0001, 0x07A4, 0x0001, 0x07A5,\n    0x003F, 0x0374, 0x003F, 0x03B3, 0x003F, 0x03F2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x003F, 0x0335,\n    0x003F, 0x0278, 0x003F, 0x02B7, 0x003F, 0x02F6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x003F, 0x07A6,\n    0x003F, 0x06E6, 0x003F, 0x0725, 0x003F, 0x0764,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x003F, 0x06A7,\n    0x003F, 0x05EA, 0x003F, 0x0629, 0x003F, 0x0668,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x07E8,\n    0x003F, 0x052D, 0x003F, 0x056C, 0x003F, 0x05AB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x003F, 0x04EE,\n    0x003F, 0x0431, 0x003F, 0x0470, 0x003F, 0x04AF,\n};\n\nstatic const s16 anim_CD_values[] = {\n    0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0002, 0x0003, 0x0000,\n    0xFFFA, 0xFFF3, 0xFFE5, 0xFFCB, 0xFFAA, 0xFF8A, 0xFF75, 0xFF75,\n    0xFF79, 0xFF7E, 0xFF82, 0xFF8B, 0xFF9A, 0xFFB5, 0xFFF3, 0xFFFF,\n    0x0000, 0x0001, 0x0002, 0x0002, 0x0002, 0x0001, 0x0001, 0x0001,\n    0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001,\n    0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001,\n    0x00AA, 0x00A9, 0x00A6, 0x00A2, 0x009F, 0x009C, 0x009C, 0x00B0,\n    0x00C8, 0x00DB, 0x00E5, 0x00EB, 0x00EF, 0x00F2, 0x00F1, 0x00EF,\n    0x00EC, 0x00E7, 0x00DE, 0x00CB, 0x00B7, 0x00AE, 0x00A3, 0x0076,\n    0x007D, 0x0077, 0x0071, 0x0070, 0x0070, 0x0070, 0x0070, 0x0070,\n    0x0070, 0x0071, 0x0071, 0x0071, 0x0072, 0x0072, 0x0072, 0x0073,\n    0x0073, 0x0073, 0x0073, 0x0073, 0x0074, 0x0073, 0x0073, 0x0073,\n    0x0073, 0x0073, 0x0073, 0x0072, 0x0072, 0x0072, 0x0072, 0x0071,\n    0x0071, 0x0071, 0x0071, 0x0071, 0x0070, 0x0070, 0x0070, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0004, 0x000A, 0x0014,\n    0x001E, 0x0028, 0x002E, 0x002F, 0x0028, 0x0019, 0x0007, 0xFFF6,\n    0xFFE9, 0xFFE4, 0xFFEC, 0xFFFF, 0x0018, 0x0034, 0x005B, 0x0086,\n    0x00A9, 0x00BC, 0x00BF, 0x00C0, 0x00C2, 0x00C3, 0x00C3, 0x00C3,\n    0x00C3, 0x00C3, 0x00C2, 0x00C2, 0x00C1, 0x00C0, 0x00BF, 0x00BE,\n    0x00BD, 0x00BD, 0x00BC, 0x00BC, 0x00BC, 0x00BC, 0x00BC, 0x00BC,\n    0x00BC, 0x00BC, 0x00BC, 0x00BC, 0x00BC, 0x00BC, 0x00BC, 0x00BC,\n    0x00BC, 0x00BC, 0x00BC, 0x00BC, 0x00BC, 0x00BC, 0x3FFF, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0012, 0x0044, 0x008D, 0x00E7, 0x0148, 0x01A9, 0x0202, 0x024C,\n    0x027E, 0x0290, 0x027B, 0x0237, 0x01BB, 0x0101, 0x0000, 0xFDFA,\n    0xFA8F, 0xF641, 0xF194, 0xED0C, 0xE92D, 0xE67A, 0xE576, 0xE576,\n    0xE576, 0xE576, 0xE576, 0xE576, 0xE576, 0xE576, 0xE576, 0xE576,\n    0xE576, 0xE576, 0xE576, 0xE576, 0xE576, 0xE576, 0xE576, 0xE576,\n    0xE576, 0xE576, 0xE576, 0xE576, 0xE576, 0xE576, 0xF97C, 0xF97C,\n    0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C,\n    0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF97C, 0xF983,\n    0xF996, 0xF9B3, 0xF9D6, 0xF9FC, 0xFA22, 0xFA45, 0xFA62, 0xFA76,\n    0xFA7D, 0xFA75, 0xFA5A, 0xFA2A, 0xF9E1, 0xF97C, 0xF8B1, 0xF75A,\n    0xF5AA, 0xF3D5, 0xF20F, 0xF08A, 0xEF7C, 0xEF16, 0xEF16, 0xEF16,\n    0xEF16, 0xEF16, 0xEF16, 0xEF16, 0xEF16, 0xEF16, 0xEF16, 0xEF16,\n    0xEF16, 0xEF16, 0xEF16, 0xEF16, 0xEF16, 0xEF16, 0xEF16, 0xEF16,\n    0xEF16, 0xEF16, 0xEF16, 0xEF16, 0xEF16, 0xED8C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8E, 0xED96,\n    0xEDA1, 0xEDAE, 0xEDBD, 0xEDCB, 0xEDD9, 0xEDE4, 0xEDEB, 0xEDEE,\n    0xEDEB, 0xEDE1, 0xEDCE, 0xEDB2, 0xED8C, 0xED3E, 0xECBA, 0xEC15,\n    0xEB61, 0xEAB3, 0xEA1E, 0xE9B6, 0xE98F, 0xE98F, 0xE98F, 0xE98F,\n    0xE98F, 0xE98F, 0xE98F, 0xE98F, 0xE98F, 0xE98F, 0xE98F, 0xE98F,\n    0xE98F, 0xE98F, 0xE98F, 0xE98F, 0xE98F, 0xE98F, 0xE98F, 0xE98F,\n    0xE98F, 0xE98F, 0xE98F, 0xE98F, 0xCA4F, 0xCCDE, 0xD36C, 0xDC49,\n    0xE5C8, 0xEE3A, 0xF3F0, 0xF65C, 0xF6A9, 0xF5C1, 0xF48B, 0xF3F0,\n    0xF40B, 0xF441, 0xF469, 0xF45B, 0xF3F0, 0xF348, 0xF29F, 0xF1F3,\n    0xF140, 0xF084, 0xEFBC, 0xEEE6, 0xEDFF, 0xED04, 0xEBF3, 0xEAC9,\n    0xE983, 0xE81F, 0xE413, 0xDE24, 0xD857, 0xD1BA, 0xCAC6, 0xC3F8,\n    0xBDCA, 0xB8B8, 0xB53D, 0xB3D3, 0xB59B, 0xBA9B, 0xC1A7, 0xC994,\n    0xD134, 0xD75C, 0xDAE0, 0xDC7E, 0xDDC0, 0xDEB0, 0xDF55, 0xDFBA,\n    0xDFE7, 0xDFE6, 0xDFBE, 0xDF7A, 0xDF21, 0xDEBE, 0xDE58, 0xDDFA,\n    0xDDAB, 0xDD75, 0xDD62, 0xFB1D, 0xFB8D, 0xFC39, 0xFC27, 0xFA60,\n    0xF5E9, 0xEDCC, 0xDEE3, 0xC966, 0xB168, 0x9AFB, 0x8A34, 0x7F67,\n    0x77E4, 0x7322, 0x709A, 0x6FC7, 0x703C, 0x71C8, 0x743F, 0x7774,\n    0x7B3D, 0x7F6C, 0x83D9, 0x8851, 0x8DBB, 0x948E, 0x9BFE, 0xA341,\n    0xA98B, 0xA98B, 0xB1A9, 0xB96E, 0xC239, 0xCB67, 0xD457, 0xDC66,\n    0xE2F1, 0xE755, 0xE8F0, 0xE8F0, 0xE8F0, 0xE8F0, 0xE8F0, 0xE8F0,\n    0xE8F0, 0xE8F0, 0xE8F0, 0xE8F0, 0xE8F0, 0xE8F0, 0xE8F0, 0xE8F0,\n    0xE8F0, 0xE8F0, 0xE8F0, 0xE8F0, 0xE8F0, 0xE8F0, 0xE8F0, 0xE8F0,\n    0xE8F0, 0xE8F0, 0xD2DC, 0xD582, 0xDBEE, 0xE3D8, 0xEAFB, 0xEF0E,\n    0xEDC9, 0xE38C, 0xD18F, 0xBCD5, 0xAA60, 0x9F31, 0x9D39, 0xA120,\n    0xA800, 0xAEEF, 0xB306, 0xB4A0, 0xB5FC, 0xB70A, 0xB7B6, 0xB7F1,\n    0xB7A7, 0xB6C7, 0xB53F, 0xB1FB, 0xACA3, 0xA642, 0x9FE4, 0x9A92,\n    0x9A92, 0xA159, 0xA7D5, 0xAF2D, 0xB6D8, 0xBE4E, 0xC508, 0xCA7F,\n    0xCE29, 0xCF80, 0xCF80, 0xCF80, 0xCF80, 0xCF80, 0xCF80, 0xCF80,\n    0xCF80, 0xCF80, 0xCF80, 0xCF80, 0xCF80, 0xCF80, 0xCF80, 0xCF80,\n    0xCF80, 0xCF80, 0xCF80, 0xCF80, 0xCF80, 0xCF80, 0xCF80, 0xCF80,\n    0xCF80, 0xD4B4, 0xD4F4, 0xD5C2, 0xD734, 0xD95D, 0xDC52, 0xE027,\n    0xE5A2, 0xECDD, 0xF4F1, 0xFCF5, 0x0400, 0x0A9B, 0x1160, 0x1785,\n    0x1C3F, 0x1EC2, 0x1F5D, 0x1F01, 0x1DDE, 0x1C23, 0x19FD, 0x179C,\n    0x152D, 0x12E0, 0x1037, 0x0CD9, 0x092D, 0x0596, 0x027B, 0x027B,\n    0xFD63, 0xF883, 0xF2FD, 0xED39, 0xE79C, 0xE28D, 0xDE72, 0xDBB0,\n    0xDAAE, 0xDAAE, 0xDAAE, 0xDAAE, 0xDAAE, 0xDAAE, 0xDAAE, 0xDAAE,\n    0xDAAE, 0xDAAE, 0xDAAE, 0xDAAE, 0xDAAE, 0xDAAE, 0xDAAE, 0xDAAE,\n    0xDAAE, 0xDAAE, 0xDAAE, 0xDAAE, 0xDAAE, 0xDAAE, 0xDAAE, 0xDAAE,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0xFFF7, 0xFFDE, 0xFFB8, 0xFF8B, 0xFF5A, 0xFF28, 0xFEFB,\n    0xFED6, 0xFEBC, 0xFEB3, 0xFEBD, 0xFEE0, 0xFF1F, 0xFF7E, 0x0000,\n    0x009A, 0x0194, 0x036C, 0x06A4, 0x0BBB, 0x1745, 0x2715, 0x318D,\n    0x3284, 0x2F10, 0x2B6E, 0x2BDD, 0x33E4, 0x4074, 0x4BE8, 0x509A,\n    0x4F81, 0x4D72, 0x4A95, 0x4710, 0x430B, 0x3EAD, 0x3A1E, 0x3585,\n    0x3109, 0x2CD1, 0x2906, 0x25CE, 0x2351, 0x21B6, 0x2124, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0xFFF4, 0xFFD2, 0xFFA0, 0xFF62, 0xFF20, 0xFEDE, 0xFEA0, 0xFE6E,\n    0xFE4C, 0xFE3F, 0xFE4E, 0xFE7D, 0xFED1, 0xFF50, 0x0000, 0x011D,\n    0x0307, 0x05F6, 0x0A24, 0x0FC9, 0x1AE9, 0x29B1, 0x339A, 0x3595,\n    0x33F9, 0x3153, 0x3034, 0x318C, 0x33E8, 0x363F, 0x3789, 0x37E9,\n    0x3833, 0x3868, 0x388D, 0x38A2, 0x38AA, 0x38A8, 0x389E, 0x388D,\n    0x3879, 0x3863, 0x384E, 0x383D, 0x3830, 0x382C, 0xF549, 0xF549,\n    0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549,\n    0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF549, 0xF544,\n    0xF536, 0xF520, 0xF506, 0xF4EA, 0xF4CE, 0xF4B4, 0xF49F, 0xF491,\n    0xF48B, 0xF491, 0xF4A5, 0xF4C9, 0xF4FF, 0xF549, 0xF5F7, 0xF730,\n    0xF8BE, 0xFA68, 0xFBF8, 0xFDA4, 0xFF6D, 0x00C8, 0x0046, 0xFEA0,\n    0xFE8C, 0x02C3, 0x0F97, 0x2263, 0x336B, 0x3AF6, 0x3A7F, 0x38C8,\n    0x3600, 0x3258, 0x2E02, 0x292E, 0x240E, 0x1ED0, 0x19A8, 0x14C5,\n    0x1057, 0x0C91, 0x09A3, 0x07BC, 0x0710, 0xC7DD, 0xC75C, 0xC650,\n    0xC571, 0xC572, 0xC70A, 0xCAEE, 0xD3CD, 0xE173, 0xF044, 0xFCA3,\n    0xFCA3, 0xFCB5, 0xFCE8, 0xFD34, 0xFD92, 0xFDFC, 0xFE6A, 0xFED6,\n    0xFF39, 0xFF8C, 0xFFC8, 0xFFE6, 0xFFDF, 0xFFAC, 0xFF47, 0xFEA8,\n    0xFDC9, 0xFCA3, 0xF777, 0xED63, 0xE2AB, 0xD70D, 0xC952, 0xBC4D,\n    0xB2CE, 0xAFAA, 0xBED4, 0xDA68, 0xEA6F, 0xEC81, 0xEE34, 0xEF90,\n    0xF09B, 0xF15B, 0xF1D8, 0xF217, 0xF220, 0xF1F9, 0xF1A8, 0xF134,\n    0xF0A3, 0xEFFD, 0xEF48, 0xEE89, 0xEDC9, 0xED0D, 0xEC5B, 0xEBBC,\n    0xEB34, 0xEACB, 0xEA87, 0xEA6F, 0x054B, 0x028E, 0xFB6C, 0xF184,\n    0xE676, 0xDBE2, 0xD368, 0xCD48, 0xC861, 0xC440, 0xC072, 0xC072,\n    0xC29F, 0xC512, 0xC7B7, 0xCA78, 0xCD3F, 0xCFF9, 0xD291, 0xD4F0,\n    0xD703, 0xD8B4, 0xD9EF, 0xDA9D, 0xDA28, 0xD849, 0xD566, 0xD1E7,\n    0xCE30, 0xCAAA, 0xC7BA, 0xC688, 0xC6A9, 0xC6DE, 0xC76E, 0xC8A1,\n    0xCA5F, 0xCC58, 0xCE83, 0xD0D4, 0xD33F, 0xD5B9, 0xD837, 0xDAAD,\n    0xDD12, 0xDF58, 0xE175, 0xE35E, 0xE507, 0xE665, 0xE76E, 0xE814,\n    0xE84E, 0xE84E, 0xE84E, 0xE84E, 0xE84E, 0xE84E, 0xE84E, 0xE84E,\n    0xE84E, 0xE84E, 0xE84E, 0x2BD6, 0x288C, 0x2079, 0x164D, 0x0CBC,\n    0x0675, 0x062A, 0x10EE, 0x256A, 0x3CAF, 0x4FCD, 0x4FCD, 0x4EDF,\n    0x4DC5, 0x4C8D, 0x4B44, 0x49F8, 0x48B7, 0x478E, 0x468C, 0x45BD,\n    0x4530, 0x44F3, 0x4512, 0x45EB, 0x47AB, 0x4A16, 0x4CF3, 0x5007,\n    0x5316, 0x55E7, 0x59FE, 0x5D4C, 0x60D7, 0x636C, 0x63DA, 0x6299,\n    0x60FD, 0x5F14, 0x5CEB, 0x5A91, 0x5814, 0x5584, 0x52ED, 0x5060,\n    0x4DE9, 0x4B98, 0x497A, 0x479F, 0x4614, 0x44E9, 0x442A, 0x43E8,\n    0x43E8, 0x43E8, 0x43E8, 0x43E8, 0x43E8, 0x43E8, 0x43E8, 0x43E8,\n    0x43E8, 0x43E8, 0xCCF6, 0xC92A, 0xBF55, 0xB1CA, 0xA2DD, 0x94E2,\n    0x8A2E, 0x8399, 0x7F91, 0x7CCF, 0x7A07, 0x7A07, 0x7C40, 0x7EC0,\n    0x8175, 0x8444, 0x8719, 0x89E1, 0x8C86, 0x8EF2, 0x9111, 0x92CD,\n    0x9411, 0x94C8, 0x944F, 0x925D, 0x8F62, 0x8BCD, 0x880F, 0x8496,\n    0x81D3, 0x82AE, 0x8523, 0x87DF, 0x8A92, 0x8CEC, 0x8F18, 0x916E,\n    0x93E4, 0x9672, 0x990C, 0x9BA9, 0x9E40, 0xA0C5, 0xA331, 0xA579,\n    0xA792, 0xA974, 0xAB14, 0xAC69, 0xAD68, 0xAE09, 0xAE41, 0xAE41,\n    0xAE41, 0xAE41, 0xAE41, 0xAE41, 0xAE41, 0xAE41, 0xAE41, 0xAE41,\n    0xAE41, 0x0000, 0x0024, 0x0082, 0x00FE, 0x0180, 0x01EE, 0x022D,\n    0x0230, 0x0208, 0x01C9, 0x018B, 0x0164, 0x0155, 0x0150, 0x0151,\n    0x0159, 0x0164, 0x0178, 0x0196, 0x01B7, 0x01D4, 0x01E5, 0x01F8,\n    0x0229, 0x022C, 0x022C, 0x022B, 0x0228, 0x0224, 0x0221, 0x021E,\n    0x021D, 0x021C, 0x021C, 0x021B, 0x021B, 0x021A, 0x021A, 0x021A,\n    0x021A, 0x021A, 0x021A, 0x021A, 0x021A, 0x021A, 0x021A, 0x021A,\n    0x021A, 0x021A, 0x021A, 0x021B, 0x021B, 0x021B, 0x021B, 0x021C,\n    0x021C, 0x021C, 0x021C, 0x021C, 0x021D, 0x021D, 0x021D, 0x021D,\n    0xFF30, 0xFF3E, 0xFF62, 0xFF8E, 0xFFB7, 0xFFD0, 0xFFCD, 0xFF9F,\n    0xFF4B, 0xFEE8, 0xFE8D, 0xFE50, 0xFE34, 0xFE2A, 0xFE2E, 0xFE3C,\n    0xFE50, 0xFE67, 0xFE88, 0xFEBF, 0xFF16, 0x0003, 0x00D4, 0xFFAC,\n    0xFF8B, 0xFF77, 0xFF6D, 0xFF69, 0xFF6B, 0xFF6E, 0xFF71, 0xFF70,\n    0xFF6D, 0xFF6A, 0xFF68, 0xFF67, 0xFF66, 0xFF65, 0xFF65, 0xFF64,\n    0xFF64, 0xFF65, 0xFF65, 0xFF65, 0xFF65, 0xFF65, 0xFF65, 0xFF66,\n    0xFF66, 0xFF67, 0xFF68, 0xFF69, 0xFF69, 0xFF6A, 0xFF6B, 0xFF6C,\n    0xFF6D, 0xFF6E, 0xFF6E, 0xFF6F, 0xFF6F, 0xFF70, 0xFF70, 0xC9D8,\n    0xC8B6, 0xC5F4, 0xC289, 0xBF6E, 0xBD98, 0xBE00, 0xC203, 0xC91B,\n    0xD169, 0xD90E, 0xDE29, 0xE085, 0xE161, 0xE10F, 0xDFE1, 0xDE29,\n    0xDC17, 0xD91C, 0xD46E, 0xCD46, 0xBAA7, 0xAA38, 0xC071, 0xC2E0,\n    0xC462, 0xC528, 0xC565, 0xC54A, 0xC50C, 0xC4DB, 0xC4EA, 0xC525,\n    0xC554, 0xC579, 0xC595, 0xC5A9, 0xC5B7, 0xC5BF, 0xC5C2, 0xC5C3,\n    0xC5C1, 0xC5BE, 0xC5BC, 0xC5BB, 0xC5B9, 0xC5B4, 0xC5AB, 0xC5A1,\n    0xC594, 0xC585, 0xC575, 0xC564, 0xC553, 0xC541, 0xC530, 0xC520,\n    0xC512, 0xC505, 0xC4FA, 0xC4F2, 0xC4EC, 0xC4EA, 0x1E4A, 0x1FA0,\n    0x22FA, 0x275B, 0x2BC3, 0x2F36, 0x30B6, 0x2F67, 0x2BE5, 0x276B,\n    0x232F, 0x206A, 0x1EA4, 0x1D0C, 0x1C58, 0x1D3B, 0x206A, 0x2810,\n    0x33AB, 0x3FED, 0x4984, 0x4EE3, 0x517C, 0x5287, 0x5300, 0x531F,\n    0x52FA, 0x52A3, 0x522E, 0x51B0, 0x513C, 0x50E6, 0x509F, 0x504D,\n    0x4FF4, 0x4F96, 0x4F36, 0x4ED6, 0x4E7A, 0x4E24, 0x4DD8, 0x4D98,\n    0x4D66, 0x4D46, 0x4D3B, 0x4D43, 0x4D5B, 0x4D81, 0x4DB1, 0x4DEC,\n    0x4E2E, 0x4E76, 0x4EC2, 0x4F10, 0x4F5E, 0x4FAA, 0x4FF2, 0x5035,\n    0x506F, 0x50A0, 0x50C6, 0x50DD, 0x50E6, 0x1B09, 0x1AA1, 0x19A0,\n    0x1858, 0x171C, 0x163E, 0x1610, 0x16F1, 0x18AF, 0x1ACA, 0x1CBF,\n    0x1E0B, 0x1ED7, 0x1F7C, 0x1FBA, 0x1F53, 0x1E0B, 0x1ABB, 0x15AA,\n    0x10B9, 0x0DC9, 0x0EE7, 0x1278, 0x14E6, 0x156A, 0x15AD, 0x15BC,\n    0x15A8, 0x157E, 0x154F, 0x152A, 0x151C, 0x1520, 0x1524, 0x1527,\n    0x152A, 0x152D, 0x152F, 0x1531, 0x1533, 0x1535, 0x1536, 0x1537,\n    0x1538, 0x1538, 0x1537, 0x1537, 0x1536, 0x1534, 0x1533, 0x1531,\n    0x152F, 0x152C, 0x152A, 0x1528, 0x1526, 0x1523, 0x1522, 0x1520,\n    0x151E, 0x151D, 0x151D, 0x151C, 0x1144, 0x11C7, 0x1302, 0x1483,\n    0x15D7, 0x168B, 0x162D, 0x140C, 0x1066, 0x0C29, 0x0846, 0x05AB,\n    0x0454, 0x03A1, 0x0399, 0x0445, 0x05AB, 0x0930, 0x0E9D, 0x138F,\n    0x15A4, 0x118C, 0x09C6, 0x04AC, 0x035E, 0x02A9, 0x026C, 0x0284,\n    0x02CD, 0x0325, 0x0369, 0x0378, 0x035F, 0x0347, 0x0330, 0x031A,\n    0x0305, 0x02F1, 0x02E0, 0x02D0, 0x02C2, 0x02B7, 0x02AF, 0x02AA,\n    0x02A9, 0x02AA, 0x02B0, 0x02B8, 0x02C3, 0x02D0, 0x02DE, 0x02EE,\n    0x02FF, 0x0310, 0x0321, 0x0332, 0x0342, 0x0351, 0x035E, 0x0368,\n    0x0371, 0x0376, 0x0378, 0xAC44, 0xAB62, 0xA93B, 0xA68A, 0xA40C,\n    0xA27D, 0xA299, 0xA55E, 0xAA62, 0xB04C, 0xB5BF, 0xB962, 0xBB64,\n    0xBCAE, 0xBCF5, 0xBBF4, 0xB962, 0xB28C, 0xA804, 0x9E69, 0x9A5A,\n    0xA245, 0xB14F, 0xBB2D, 0xBDAE, 0xBF05, 0xBF75, 0xBF41, 0xBEAC,\n    0xBDFB, 0xBD70, 0xBD50, 0xBD7B, 0xBDA5, 0xBDCE, 0xBDF5, 0xBE1A,\n    0xBE3C, 0xBE5B, 0xBE77, 0xBE8E, 0xBEA1, 0xBEAF, 0xBEB8, 0xBEBB,\n    0xBEB8, 0xBEAF, 0xBEA0, 0xBE8D, 0xBE77, 0xBE5D, 0xBE41, 0xBE24,\n    0xBE05, 0xBDE7, 0xBDCA, 0xBDAE, 0xBD94, 0xBD7E, 0xBD6B, 0xBD5C,\n    0xBD53, 0xBD50, 0x0000, 0xFE3D, 0xF9D4, 0xF419, 0xEE5D, 0xE9F4,\n    0xE831, 0xEDB4, 0xF881, 0x0000, 0x01D9, 0x01F8, 0x012C, 0x003F,\n    0x0000, 0x007B, 0x012B, 0x01F7, 0x02C9, 0x038D, 0x0453, 0x0524,\n    0x05DB, 0x0655, 0x0665, 0x061E, 0x05B8, 0x0525, 0x0475, 0x0410,\n    0x03F8, 0x03E9, 0x03E0, 0x03DE, 0x03E0, 0x03E6, 0x03EE, 0x03F7,\n    0x0400, 0x0408, 0x040E, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410,\n    0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410,\n    0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410, 0x0410,\n    0x0410, 0x0000, 0xFF71, 0xFE0A, 0xFC38, 0xFA65, 0xF8FF, 0xF86F,\n    0xFA30, 0xFD9F, 0x0000, 0x009A, 0x00AB, 0x0070, 0x0023, 0x0000,\n    0x0007, 0x0012, 0x001E, 0x002B, 0x0037, 0x0043, 0x004F, 0x005A,\n    0x0060, 0x005D, 0x0053, 0x004B, 0x0049, 0x0048, 0x0048, 0x0048,\n    0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048,\n    0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048,\n    0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048,\n    0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048, 0x0048,\n    0xBF40, 0xBEEC, 0xBE45, 0xBDCE, 0xBE0C, 0xBF7F, 0xC2AB, 0xCD35,\n    0xDC97, 0xE517, 0xE3A9, 0xDE6C, 0xD75F, 0xD082, 0xCBD4, 0xC99F,\n    0xC88C, 0xC830, 0xC81C, 0xC7E4, 0xC7A7, 0xC7B0, 0xC7D6, 0xC7F1,\n    0xC7F2, 0xC7F6, 0xC811, 0xC85F, 0xC8C3, 0xC8FE, 0xC90B, 0xC914,\n    0xC918, 0xC91A, 0xC918, 0xC915, 0xC911, 0xC90C, 0xC906, 0xC902,\n    0xC8FF, 0xC8FE, 0xC8FE, 0xC8FE, 0xC8FE, 0xC8FE, 0xC8FE, 0xC8FE,\n    0xC8FE, 0xC8FE, 0xC8FE, 0xC8FE, 0xC8FE, 0xC8FE, 0xC8FE, 0xC8FE,\n    0xC8FE, 0xC8FE, 0xC8FE, 0xC8FE, 0xC8FE, 0xC8FE, 0xC8FE, 0x2537,\n    0x24DD, 0x2414, 0x2346, 0x22DA, 0x233A, 0x24CE, 0x2C10, 0x3680,\n    0x3A0D, 0x32D4, 0x2667, 0x18DC, 0x0E4A, 0x0ACA, 0x114F, 0x1F1F,\n    0x2FCC, 0x3EE7, 0x4801, 0x499C, 0x46AC, 0x4170, 0x3C25, 0x3909,\n    0x3B7C, 0x3F1F, 0x3F83, 0x3F0B, 0x3E88, 0x3E40, 0x3DEF, 0x3D97,\n    0x3D3B, 0x3CDE, 0x3C84, 0x3C30, 0x3BE3, 0x3BA3, 0x3B71, 0x3B51,\n    0x3B45, 0x3B5D, 0x3B9C, 0x3BFA, 0x3C6B, 0x3CE7, 0x3D62, 0x3DD4,\n    0x3E31, 0x3E70, 0x3E88, 0x3E88, 0x3E88, 0x3E88, 0x3E88, 0x3E88,\n    0x3E88, 0x3E88, 0x3E88, 0x3E88, 0x3E88, 0x3E88, 0xD64A, 0xD69C,\n    0xD798, 0xD946, 0xDBAF, 0xDED9, 0xE2CF, 0xE86C, 0xEFD6, 0xF803,\n    0xFFE8, 0x067A, 0x0AB1, 0x0C88, 0x0CEC, 0x0C3A, 0x0ACC, 0x0900,\n    0x0730, 0x05B9, 0x040E, 0x01C9, 0xFF83, 0xFDD4, 0xFD34, 0xFD47,\n    0xFD67, 0xFD58, 0xFD4E, 0xFD49, 0xFD46, 0xFD46, 0xFD47, 0xFD4B,\n    0xFD51, 0xFD57, 0xFD5D, 0xFD63, 0xFD68, 0xFD6B, 0xFD6D, 0xFD6E,\n    0xFD6E, 0xFD6E, 0xFD6E, 0xFD6D, 0xFD6C, 0xFD6C, 0xFD6B, 0xFD6B,\n    0xFD6B, 0xFD6B, 0xFD6B, 0xFD6B, 0xFD6B, 0xFD6B, 0xFD6B, 0xFD6B,\n    0xFD6B, 0xFD6B, 0xFD6B, 0xFD6B, 0xFD6B, 0xEC41, 0xEC2C, 0xEBE9,\n    0xEB76, 0xEACD, 0xE9E9, 0xE8C8, 0xE6AD, 0xE378, 0xE009, 0xDD41,\n    0xDC00, 0xDD28, 0xE11C, 0xE72D, 0xEE9C, 0xF6AD, 0xFEA1, 0x05BA,\n    0x0B3C, 0x0E2E, 0x0EE0, 0x0E80, 0x0E3D, 0x0DEB, 0x0D18, 0x0C86,\n    0x0C6D, 0x0C77, 0x0C92, 0x0CAE, 0x0CB9, 0x0CB2, 0x0CA6, 0x0C97,\n    0x0C87, 0x0C76, 0x0C66, 0x0C59, 0x0C51, 0x0C4C, 0x0C49, 0x0C49,\n    0x0C49, 0x0C4B, 0x0C4D, 0x0C4F, 0x0C50, 0x0C51, 0x0C51, 0x0C51,\n    0x0C51, 0x0C51, 0x0C51, 0x0C51, 0x0C51, 0x0C51, 0x0C51, 0x0C51,\n    0x0C51, 0x0C51, 0x0C51, 0x0C51, 0xB59E, 0xB71E, 0xBAB7, 0xBF0E,\n    0xC2C8, 0xC489, 0xC2F7, 0xBCA3, 0xB259, 0xA616, 0x99D9, 0x8F9F,\n    0x8967, 0x878F, 0x887D, 0x8B38, 0x8EC9, 0x9237, 0x9489, 0x94C8,\n    0x9135, 0x8A64, 0x82DC, 0x7D21, 0x7A6C, 0x7970, 0x78FA, 0x788A,\n    0x7859, 0x7851, 0x785B, 0x7860, 0x785E, 0x7864, 0x786F, 0x787E,\n    0x788D, 0x789C, 0x78A9, 0x78B1, 0x78B4, 0x78B6, 0x78B7, 0x78B6,\n    0x78B5, 0x78B4, 0x78B2, 0x78B1, 0x78B1, 0x78B1, 0x78B1, 0x78B1,\n    0x78B1, 0x78B1, 0x78B1, 0x78B1, 0x78B1, 0x78B1, 0x78B1, 0x78B1,\n    0x78B1, 0x78B1, 0x78B1, 0x8001, 0x8001, 0x4171, 0xBF5F, 0xBF5F,\n    0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F,\n    0xBF60, 0xBF61, 0xBF61, 0xBF61, 0xBF5F, 0xBF5A, 0xBF53, 0xBF4B,\n    0xBF43, 0xBF3D, 0xBF36, 0xBF2F, 0xBF29, 0xBF22, 0xBF1E, 0xBF1C,\n    0xBF1E, 0xBF23, 0xBF34, 0xBF5F, 0xBFA2, 0xBFF0, 0xC047, 0xC0A2,\n    0xC0FF, 0xC15A, 0xC1B0, 0xC1FE, 0xC241, 0xC274, 0xC296, 0xC2A1,\n    0xC28A, 0xC24B, 0xC1ED, 0xC17C, 0xC100, 0xC085, 0xC013, 0xBFB6,\n    0xBF76, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F,\n    0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0xBF5F, 0x8001, 0x8001, 0x4171,\n    0xBF5F, 0x0000, 0xFE18, 0xF962, 0xF363, 0xED9E, 0xE998, 0xE8D4,\n    0xEDB2, 0xF783, 0x0334, 0x0DB7, 0x154D, 0x13F5, 0x11D8, 0x0F19,\n    0x0BDB, 0x0843, 0x0384, 0xFD86, 0xF77C, 0xF29B, 0xF017, 0xF7A3,\n    0x01BC, 0x05F7, 0x0A32, 0x0E41, 0x11F6, 0x1525, 0x17A1, 0x193C,\n    0x19C9, 0x18E0, 0x1660, 0x1286, 0x0D90, 0x07BD, 0x014A, 0xF375,\n    0xE461, 0xDE7B, 0xDCAD, 0xDBD7, 0xDB3C, 0xDAD6, 0xDA9B, 0xDA83,\n    0xDA86, 0xDA9D, 0xDABF, 0xDAF3, 0xDB43, 0xDBAA, 0xDC21, 0xDCA4,\n    0xDD2C, 0xDDB4, 0xDE37, 0xDEAE, 0xDF14, 0xDF65, 0xDF99, 0xDFAB,\n    0x0000, 0x000D, 0x002B, 0x004D, 0x0065, 0x0066, 0x0041, 0xFFDA,\n    0xFF31, 0xFE6B, 0xFDAD, 0xFCE0, 0xFCBE, 0xFCA3, 0xFC9A, 0xFCAB,\n    0xFCE0, 0xFD2B, 0xFD85, 0xFE04, 0xFEBE, 0xFFC8, 0x02C3, 0x056E,\n    0x05E4, 0x0621, 0x0632, 0x0623, 0x0602, 0x05DA, 0x05B9, 0x05AD,\n    0x05AB, 0x05A6, 0x059E, 0x0594, 0x0589, 0x057F, 0x0571, 0x055B,\n    0x056A, 0x0513, 0x040C, 0x02D2, 0x017C, 0x0021, 0xFEDB, 0xFDBF,\n    0xFCE6, 0xFC67, 0xFC34, 0xFC28, 0xFC3F, 0xFC71, 0xFCB8, 0xFD0F,\n    0xFD6F, 0xFDD1, 0xFE2F, 0xFE83, 0xFEC7, 0xFEF5, 0xFF05, 0xFC62,\n    0xFB4A, 0xF885, 0xF4D6, 0xF100, 0xEDC6, 0xEBEB, 0xEC2E, 0xEE26,\n    0xF0D3, 0xF338, 0xF588, 0xF5E9, 0xF635, 0xF64F, 0xF61F, 0xF588,\n    0xF474, 0xF2F4, 0xF12B, 0xEF3D, 0xED4A, 0xEA46, 0xE829, 0xE830,\n    0xE872, 0xE8E5, 0xE97A, 0xEA26, 0xEADD, 0xEB92, 0xEC39, 0xECDE,\n    0xED92, 0xEE51, 0xEF18, 0xEFE2, 0xF0AC, 0xF191, 0xF279, 0xF370,\n    0xF3EA, 0xF3AA, 0xF348, 0xF2CE, 0xF24B, 0xF1CB, 0xF15A, 0xF107,\n    0xF0DD, 0xF0D6, 0xF0E0, 0xF0F9, 0xF11D, 0xF14A, 0xF17D, 0xF1B2,\n    0xF1E7, 0xF219, 0xF245, 0xF268, 0xF27F, 0xF288, 0x0000, 0x0371,\n    0x0BF4, 0x16CE, 0x2145, 0x289E, 0x2A1F, 0x2143, 0x0F5E, 0xFA82,\n    0xE8BA, 0xE305, 0xDF18, 0xDAD6, 0xD701, 0xD45C, 0xD3A9, 0xD72A,\n    0xDE28, 0xE4EB, 0xE7BB, 0xE6BF, 0xE4BF, 0xE1FA, 0xDEAB, 0xDB11,\n    0xD768, 0xD3EE, 0xD0E1, 0xCE7E, 0xCF29, 0xD1FB, 0xD36E, 0xD40A,\n    0xD535, 0xD856, 0xDED2, 0xF03F, 0x0867, 0x1707, 0x1AAC, 0x1CE6,\n    0x1DF4, 0x1E11, 0x1D7B, 0x1C6F, 0x1B2B, 0x19EC, 0x18EE, 0x186F,\n    0x1833, 0x17DA, 0x176A, 0x16E9, 0x165D, 0x15CB, 0x153A, 0x14AF,\n    0x1430, 0x13C3, 0x136E, 0x1336, 0x1323, 0x0000, 0xFFAD, 0xFEDC,\n    0xFDCC, 0xFCBD, 0xFBED, 0xFB9B, 0xFC23, 0xFD65, 0xFEDF, 0x0011,\n    0x0011, 0x01B3, 0x03AC, 0x05A4, 0x0741, 0x082D, 0x07BF, 0x063D,\n    0x04B5, 0x0432, 0x04AD, 0x0564, 0x0649, 0x0751, 0x086E, 0x0993,\n    0x0AB4, 0x0BC5, 0x0CB9, 0x0D85, 0x0DD7, 0x0E2B, 0x0EDB, 0x0F35,\n    0x0E89, 0x0C26, 0x043A, 0xF8D2, 0xF206, 0xF0A6, 0xF000, 0xEFF3,\n    0xF05C, 0xF118, 0xF204, 0xF300, 0xF3E7, 0xF499, 0xF4F1, 0xF50D,\n    0xF51F, 0xF52A, 0xF52F, 0xF52E, 0xF529, 0xF521, 0xF517, 0xF50D,\n    0xF502, 0xF4F9, 0xF4F3, 0xF4F1, 0x0884, 0x09A5, 0x0C7A, 0x1032,\n    0x13F8, 0x16F9, 0x1861, 0x1715, 0x138A, 0x0F4A, 0x0BDD, 0x0BDD,\n    0x08DA, 0x052E, 0x018B, 0xFEA4, 0xFD2A, 0xFE26, 0x0124, 0x04A2,\n    0x071A, 0x087A, 0x09B6, 0x0AD3, 0x0BD5, 0x0CC3, 0x0DA1, 0x0E74,\n    0x0F42, 0x1010, 0x1054, 0x1006, 0x0FF7, 0x1026, 0x1023, 0x0F7E,\n    0x0DC6, 0x08AE, 0x016B, 0xFCD2, 0xFB5D, 0xFA47, 0xF981, 0xF8FD,\n    0xF8AD, 0xF883, 0xF86F, 0xF864, 0xF853, 0xF82F, 0xF803, 0xF7E5,\n    0xF7D3, 0xF7CC, 0xF7CD, 0xF7D5, 0xF7E2, 0xF7F2, 0xF803, 0xF813,\n    0xF821, 0xF82B, 0xF82F, 0x0000, 0x0010, 0x0034, 0x0059, 0x0069,\n    0x0052, 0x0000, 0x003B, 0x00B3, 0xFFA8, 0xFB5A, 0xDF68, 0xC869,\n    0xB1CD, 0x9C4A, 0x8898, 0x766D, 0x652C, 0x54FB, 0x4603, 0x386D,\n    0x2C73, 0x2261, 0x1A7C, 0x150C, 0x1198, 0x0F4A, 0x0DD9, 0x0CFD,\n    0x0C70, 0x0BE8, 0x0B1F, 0x0AA2, 0x0AC9, 0x0AF8, 0x0AF8, 0x0AF8,\n    0x0AF8, 0x0AF8, 0x0AF8, 0x0AF8, 0x0AF8, 0x0AF8, 0x0AF8, 0x0AF8,\n    0x0AF8, 0x0AF8, 0x0AF8, 0x0AF8, 0x0AF8, 0x0AF8, 0x0AF8, 0x0AF8,\n    0x0AF8, 0x0AF8, 0x0AF8, 0x0AF8, 0x0AF8, 0x0AF8, 0x0AF8, 0x0AF8,\n    0x0AF8, 0x0AF8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0033, 0x0099,\n    0x00E5, 0x00CC, 0x0000, 0xFDC3, 0xFA56, 0xF6F0, 0xF4C8, 0xF4F5,\n    0xF69F, 0xF80F, 0xF8CE, 0xF984, 0xFA33, 0xFAD9, 0xFB78, 0xFC0E,\n    0xFC9B, 0xFD1F, 0xFD76, 0xFD90, 0xFD90, 0xFD90, 0xFD90, 0xFD90,\n    0xFD90, 0xFD90, 0xFD90, 0xFD90, 0xFD90, 0xFD90, 0xFD90, 0xFD90,\n    0xFD90, 0xFD90, 0xFD90, 0xFD90, 0xFD90, 0xFD90, 0xFD90, 0xFD90,\n    0xFD90, 0xFD90, 0xFD90, 0xFD90, 0xFD90, 0xFD90, 0xFD90, 0xFD90,\n    0xFD90, 0x40A1, 0x4107, 0x4202, 0x433D, 0x4462, 0x451E, 0x451C,\n    0x43B9, 0x411E, 0x3E2B, 0x3BBD, 0x3BBD, 0x3BB4, 0x3BA1, 0x3B93,\n    0x3B98, 0x3BBD, 0x3BBF, 0x3BB3, 0x3C32, 0x3DD2, 0x4257, 0x4885,\n    0x4C78, 0x4DB9, 0x4E7C, 0x4EDC, 0x4EF5, 0x4EE3, 0x4EC1, 0x4EAC,\n    0x4EBE, 0x4EC5, 0x4E9F, 0x4E85, 0x4E85, 0x4E85, 0x4E85, 0x4E85,\n    0x4E85, 0x4E85, 0x4E85, 0x4E85, 0x4E85, 0x4E85, 0x4E85, 0x4E85,\n    0x4E85, 0x4E85, 0x4E85, 0x4E85, 0x4E85, 0x4E85, 0x4E85, 0x4E85,\n    0x4E85, 0x4E85, 0x4E85, 0x4E85, 0x4E85, 0x4E85, 0x4E85, 0x4E85,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_CE.inc.c",
    "content": "static const struct Animation anim_CE[] = {\n    1,\n    189,\n    0,\n    0,\n    0x12,\n    ANIMINDEX_NUMPARTS(anim_CE_indices),\n    anim_CE_values,\n    anim_CE_indices,\n    0,\n};\n\n\nstatic const u16 anim_CE_indices[] = {\n    0x0012, 0x0001, 0x0012, 0x0013, 0x0012, 0x0025, 0x0001, 0x0000, 0x0001, 0x0037, 0x0001, 0x0000,\n    0x0012, 0x02A4, 0x0012, 0x02B6, 0x0012, 0x02C8,\n    0x0012, 0x026E, 0x0012, 0x0280, 0x0012, 0x0292,\n    0x0012, 0x0238, 0x0012, 0x024A, 0x0012, 0x025C,\n    0x0001, 0x0234, 0x0001, 0x0235, 0x0001, 0x0236,\n    0x0012, 0x0080, 0x0012, 0x0092, 0x0012, 0x00A4,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x006E,\n    0x0012, 0x0038, 0x0012, 0x004A, 0x0012, 0x005C,\n    0x0001, 0x0230, 0x0001, 0x0231, 0x0001, 0x0232,\n    0x0012, 0x00FE, 0x0012, 0x0110, 0x0012, 0x0122,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x00EC,\n    0x0012, 0x00B6, 0x0012, 0x00C8, 0x0012, 0x00DA,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0233,\n    0x0012, 0x01FA, 0x0012, 0x020C, 0x0012, 0x021E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x01E8,\n    0x0012, 0x01B2, 0x0012, 0x01C4, 0x0012, 0x01D6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0237,\n    0x0012, 0x017C, 0x0012, 0x018E, 0x0012, 0x01A0,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0012, 0x016A,\n    0x0012, 0x0134, 0x0012, 0x0146, 0x0012, 0x0158,\n};\n\nstatic const s16 anim_CE_values[] = {\n    0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000,\n    0xFFFE, 0xFFFC, 0xFFFB, 0xFFFC, 0xFFFF, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0070, 0x0075, 0x007F, 0x008B, 0x0097,\n    0x009F, 0x00A4, 0x00A7, 0x00A8, 0x00A8, 0x00A7, 0x00A4, 0x00A3,\n    0x00A3, 0x00A5, 0x00A7, 0x00A9, 0x00AA, 0x00BC, 0x00B1, 0x009A,\n    0x007F, 0x0065, 0x004C, 0x0031, 0x001B, 0x000F, 0x0008, 0x0004,\n    0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FFF,\n    0xE576, 0xE67F, 0xE809, 0xE9FD, 0xEC46, 0xEECD, 0xF17C, 0xF43D,\n    0xF6F9, 0xF99B, 0xFC0B, 0xFE35, 0x0000, 0x0103, 0x0124, 0x00C2,\n    0x0040, 0x0000, 0xEF16, 0xEF7E, 0xF018, 0xF0DC, 0xF1C1, 0xF2BE,\n    0xF3CC, 0xF4E0, 0xF5F2, 0xF6FA, 0xF7EF, 0xF8C8, 0xF97C, 0xF9E1,\n    0xF9EE, 0xF9C8, 0xF995, 0xF97C, 0xE98F, 0xE9B7, 0xE9F2, 0xEA3D,\n    0xEA95, 0xEAF6, 0xEB5D, 0xEBC7, 0xEC30, 0xEC96, 0xECF3, 0xED47,\n    0xED8C, 0xEDB3, 0xEDB7, 0xEDA9, 0xED95, 0xED8C, 0xDD62, 0xDDA2,\n    0xDE07, 0xDE64, 0xDE8B, 0xDE4F, 0xDD82, 0xDC1F, 0xDA50, 0xD833,\n    0xD5E5, 0xD385, 0xD131, 0xCF07, 0xCD23, 0xCBA5, 0xCAAA, 0xCA4F,\n    0xE8F0, 0xE986, 0xEA58, 0xEB5D, 0xEC8D, 0xEDDE, 0xEF47, 0xF0C0,\n    0xF240, 0xF3BD, 0xF52E, 0xF68B, 0xF7CC, 0xF8E5, 0xF9D0, 0xFA83,\n    0xFAF5, 0xFB1D, 0xCF80, 0xCF9C, 0xCFC3, 0xCFF3, 0xD02B, 0xD06A,\n    0xD0AC, 0xD0F2, 0xD139, 0xD17F, 0xD1C3, 0xD204, 0xD23F, 0xD273,\n    0xD29F, 0xD2C0, 0xD2D5, 0xD2DC, 0xDAAE, 0xDA7C, 0xDA37, 0xD9E1,\n    0xD97D, 0xD90F, 0xD898, 0xD81C, 0xD79E, 0xD721, 0xD6A7, 0xD634,\n    0xD5CB, 0xD56E, 0xD521, 0xD4E6, 0xD4C1, 0xD4B4, 0x2124, 0x1E28,\n    0x1B21, 0x1816, 0x150D, 0x120C, 0x0F1A, 0x0C3D, 0x097B, 0x06DA,\n    0x0461, 0x0216, 0x0000, 0xFEBC, 0xFE94, 0xFF0D, 0xFFAF, 0x0000,\n    0x382C, 0x359C, 0x321C, 0x2DD7, 0x28F7, 0x23A6, 0x1E0F, 0x185B,\n    0x12B6, 0x0D4A, 0x0840, 0x03C4, 0x0000, 0xFDDB, 0xFD96, 0xFE64,\n    0xFF77, 0x0000, 0x0710, 0x04A5, 0x027D, 0x0091, 0xFEDA, 0xFD51,\n    0xFBEF, 0xFAAC, 0xF982, 0xF86B, 0xF75E, 0xF655, 0xF549, 0xF49B,\n    0xF486, 0xF4C7, 0xF51E, 0xF549, 0xEA6F, 0xE94D, 0xE728, 0xE45F,\n    0xE153, 0xDE65, 0xDBF5, 0xD9C9, 0xD772, 0xD504, 0xD294, 0xD035,\n    0xCDFD, 0xCBFE, 0xCA4E, 0xC901, 0xC82A, 0xC7DD, 0xE84E, 0xE98E,\n    0xEB1A, 0xECE7, 0xEEE7, 0xF10E, 0xF350, 0xF5A1, 0xF7F4, 0xFA3D,\n    0xFC70, 0xFE80, 0x005F, 0x0204, 0x0361, 0x0469, 0x0511, 0x054B,\n    0x43E8, 0x42DE, 0x4195, 0x4017, 0x3E6E, 0x3CA4, 0x3AC4, 0x38D8,\n    0x36EA, 0x3504, 0x3331, 0x317B, 0x2FED, 0x2E8F, 0x2D6E, 0x2C92,\n    0x2C07, 0x2BD6, 0xAE41, 0xAF93, 0xB137, 0xB31F, 0xB53D, 0xB785,\n    0xB9E9, 0xBC5D, 0xBED4, 0xC13F, 0xC393, 0xC5C2, 0xC7BF, 0xC97C,\n    0xCAEE, 0xCC06, 0xCCB8, 0xCCF6, 0x021D, 0x01AA, 0x00D0, 0xFFD3,\n    0xFEF6, 0xFE7D, 0x00FF, 0x00A7, 0x0002, 0xFF37, 0xFE6E, 0xFDCF,\n    0xFD82, 0xFDB5, 0xFE52, 0xFF15, 0xFFBA, 0x0000, 0xFF70, 0xFF8B,\n    0xFFBD, 0xFFF9, 0x002E, 0x0050, 0xFFDD, 0xFF8A, 0xFF31, 0xFEDA,\n    0xFE8E, 0xFE54, 0xFE34, 0xFE44, 0xFE81, 0xFED0, 0xFF13, 0xFF30,\n    0xC4EA, 0xC1BC, 0xBBC0, 0xB48E, 0xADBD, 0xA8E2, 0xB0DC, 0xB3D6,\n    0xB670, 0xB8C6, 0xBAF5, 0xBD18, 0xBF4B, 0xC1D8, 0xC4A5, 0xC739,\n    0xC91C, 0xC9D8, 0x50E6, 0x4F75, 0x4D6C, 0x4AE1, 0x47EC, 0x44A3,\n    0x411B, 0x3D6C, 0x39AB, 0x35EF, 0x324F, 0x2EE1, 0x2BBB, 0x286E,\n    0x24DB, 0x2197, 0x1F36, 0x1E4A, 0x151C, 0x148A, 0x138F, 0x124D,\n    0x10E6, 0x0F7A, 0x0E2B, 0x0D1A, 0x0C04, 0x0ACF, 0x09DD, 0x0993,\n    0x0A52, 0x0CF3, 0x1135, 0x15D2, 0x1985, 0x1B09, 0x0378, 0x03BF,\n    0x0434, 0x04C6, 0x0561, 0x05F3, 0x0669, 0x06B2, 0x0681, 0x05E0,\n    0x0538, 0x04F2, 0x0578, 0x075F, 0x0A62, 0x0D9F, 0x1035, 0x1144,\n    0xBD50, 0xBC8C, 0xBB5A, 0xB9CD, 0xB7FC, 0xB5FC, 0xB3E3, 0xB1C7,\n    0xAF1D, 0xABC2, 0xA861, 0xA5A3, 0xA436, 0xA4B2, 0xA6A6, 0xA92A,\n    0xAB57, 0xAC44, 0x0410, 0x03F1, 0x03CC, 0x03A2, 0x0372, 0x033E,\n    0x0307, 0x02CD, 0x0292, 0x0255, 0x0218, 0x01DC, 0x01A0, 0x0146,\n    0x00E0, 0x0081, 0x0027, 0x0000, 0x0048, 0x0045, 0x0041, 0x003D,\n    0x0038, 0x0032, 0x002D, 0x0027, 0x0021, 0x001C, 0x0017, 0x0013,\n    0x000F, 0x0016, 0x001D, 0x0014, 0x0006, 0x0000, 0xC8FE, 0xC875,\n    0xC7D1, 0xC714, 0xC641, 0xC55C, 0xC468, 0xC366, 0xC25B, 0xC149,\n    0xC033, 0xBF1C, 0xBE08, 0xBBAC, 0xB9F9, 0xBB73, 0xBDF0, 0xBF40,\n    0x3E88, 0x3926, 0x3009, 0x252D, 0x1A8E, 0x1227, 0x0DF5, 0x0EFF,\n    0x13E3, 0x1B00, 0x22B5, 0x295E, 0x2D5D, 0x2DDE, 0x2C04, 0x2919,\n    0x2666, 0x2537, 0xFD6B, 0xFD6F, 0xFD82, 0xFD8B, 0xFD73, 0xFD22,\n    0xFC80, 0xFBBF, 0xFAFD, 0xFA01, 0xF895, 0xF680, 0xF38A, 0xEE46,\n    0xE6BE, 0xDEEB, 0xD8C7, 0xD64A, 0x0C51, 0x0B2E, 0x0940, 0x06D3,\n    0x0435, 0x01B5, 0xFFA1, 0xFE01, 0xFC9C, 0xFB54, 0xFA0C, 0xF8A8,\n    0xF70C, 0xF4CC, 0xF1FA, 0xEF35, 0xED18, 0xEC41, 0x78B1, 0x7B30,\n    0x7F74, 0x84CE, 0x8A88, 0x8FF5, 0x9464, 0x97CA, 0x9AB2, 0x9D4C,\n    0x9FCA, 0xA25A, 0xA52D, 0xA8D2, 0xAD24, 0xB148, 0xB464, 0xB59E,\n    0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001, 0x8001, 0x4171, 0xBF5F,\n    0xDFAB, 0xE350, 0xE94E, 0xF08A, 0xF7E6, 0xFE45, 0x0288, 0x048B,\n    0x052C, 0x04DA, 0x0404, 0x031A, 0x028B, 0x0220, 0x017A, 0x00C8,\n    0x003A, 0x0000, 0xFF05, 0xFEED, 0xFE9E, 0xFE33, 0xFDCA, 0xFD7D,\n    0xFD6A, 0xFD9E, 0xFE07, 0xFE8C, 0xFF19, 0xFF97, 0xFFEF, 0x0017,\n    0x0020, 0x0017, 0x0008, 0x0000, 0xF288, 0xF507, 0xF956, 0xFE77,\n    0x036A, 0x0736, 0x08DA, 0x07BD, 0x048B, 0x0030, 0xFB9A, 0xF7B5,\n    0xF56E, 0xF569, 0xF70A, 0xF961, 0xFB79, 0xFC62, 0x1323, 0x0F9B,\n    0x0999, 0x02B9, 0xFC9A, 0xF8D6, 0xF7A6, 0xF7DB, 0xF8FB, 0xFA8E,\n    0xFC17, 0xFD1D, 0xFDC1, 0xFE68, 0xFF04, 0xFF86, 0xFFDF, 0x0000,\n    0xF4F1, 0xF6BE, 0xF9F5, 0xFDBB, 0x0134, 0x0389, 0x04B0, 0x054C,\n    0x057B, 0x055E, 0x0516, 0x04C4, 0x0434, 0x0343, 0x0228, 0x011A,\n    0x004F, 0x0000, 0xF82F, 0xFA8F, 0xFEBC, 0x03E0, 0x0928, 0x0DBD,\n    0x1219, 0x16E2, 0x1B83, 0x1F69, 0x21FE, 0x22B0, 0x2071, 0x1B82,\n    0x1544, 0x0F1A, 0x0A64, 0x0884, 0x0AF8, 0x0A8F, 0x09BA, 0x08A6,\n    0x0783, 0x067F, 0x058C, 0x0485, 0x0378, 0x0271, 0x017C, 0x00A8,\n    0x0000, 0xFFA6, 0xFF9B, 0xFFBD, 0xFFEA, 0x0000, 0xFD90, 0xFDD3,\n    0xFE5B, 0xFEFF, 0xFF94, 0xFFF1, 0x0016, 0x0026, 0x0027, 0x001D,\n    0x0010, 0x0004, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x4E85, 0x4CF0, 0x49B8, 0x45DC, 0x425C, 0x4037, 0x3F66, 0x3F20,\n    0x3F3E, 0x3F99, 0x400C, 0x4071, 0x40A1, 0x40A7, 0x40A8, 0x40A5,\n    0x40A2, 0x40A1,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_CF.inc.c",
    "content": "static const struct Animation anim_CF[] = {\n    1,\n    189,\n    0,\n    0,\n    0x2A,\n    ANIMINDEX_NUMPARTS(anim_CF_indices),\n    anim_CF_values,\n    anim_CF_indices,\n    0,\n};\n\n\nstatic const u16 anim_CF_indices[] = {\n    0x0001, 0x0000, 0x002A, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x002B, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002A, 0x0520,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002A, 0x04F6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002A, 0x04CC,\n    0x0001, 0x04C8, 0x0001, 0x04C9, 0x0001, 0x04CA,\n    0x002A, 0x00D4, 0x002A, 0x00FE, 0x002A, 0x0128,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002A, 0x00AA,\n    0x002A, 0x002C, 0x002A, 0x0056, 0x002A, 0x0080,\n    0x0001, 0x04C4, 0x0001, 0x04C5, 0x0001, 0x04C6,\n    0x002A, 0x01FA, 0x002A, 0x0224, 0x002A, 0x024E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002A, 0x01D0,\n    0x002A, 0x0152, 0x002A, 0x017C, 0x002A, 0x01A6,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x04C7,\n    0x002A, 0x0446, 0x002A, 0x0470, 0x002A, 0x049A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002A, 0x041C,\n    0x002A, 0x039E, 0x002A, 0x03C8, 0x002A, 0x03F2,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x04CB,\n    0x002A, 0x0320, 0x002A, 0x034A, 0x002A, 0x0374,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x002A, 0x02F6,\n    0x002A, 0x0278, 0x002A, 0x02A2, 0x002A, 0x02CC,\n};\n\nstatic const s16 anim_CF_values[] = {\n    0x0000, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090, 0x0090,\n    0x0090, 0x0090, 0x0090, 0x008C, 0x0082, 0x0073, 0x0061, 0x004D,\n    0x0039, 0x0025, 0x0014, 0x0007, 0x0000, 0xFFFC, 0xFFF9, 0xFFF6,\n    0xFFF4, 0xFFF3, 0xFFF2, 0xFFF2, 0xFFF2, 0xFFF2, 0xFFF3, 0xFFF4,\n    0xFFF5, 0xFFF7, 0xFFF8, 0xFFFA, 0xFFFB, 0xFFFD, 0xFFFE, 0xFFFF,\n    0x0000, 0x0000, 0x0000, 0x3FFF, 0x00A8, 0x00A8, 0x00A8, 0x00A8,\n    0x00A8, 0x00A8, 0x00A8, 0x00A8, 0x00A8, 0x00A8, 0x00A7, 0x00A5,\n    0x00A2, 0x009E, 0x009A, 0x0096, 0x0092, 0x008E, 0x008C, 0x008A,\n    0x0089, 0x0089, 0x0088, 0x0088, 0x0087, 0x0087, 0x0087, 0x0087,\n    0x0087, 0x0087, 0x0088, 0x0088, 0x0088, 0x0088, 0x0089, 0x0089,\n    0x0089, 0x008A, 0x008A, 0x008A, 0x008A, 0x008A, 0xF984, 0xF984,\n    0xF984, 0xF984, 0xF984, 0xF984, 0xF984, 0xF984, 0xF984, 0xF984,\n    0xF962, 0xF904, 0xF879, 0xF7CF, 0xF712, 0xF651, 0xF599, 0xF4F9,\n    0xF47E, 0xF435, 0xF40F, 0xF3EF, 0xF3D6, 0xF3C4, 0xF3B7, 0xF3AF,\n    0xF3AB, 0xF3AC, 0xF3B0, 0xF3B7, 0xF3C1, 0xF3CC, 0xF3D9, 0xF3E7,\n    0xF3F5, 0xF403, 0xF410, 0xF41C, 0xF426, 0xF42E, 0xF433, 0xF435,\n    0xE96B, 0xE96B, 0xE96B, 0xE96B, 0xE96B, 0xE96B, 0xE96B, 0xE96B,\n    0xE96B, 0xE96B, 0xE970, 0xE97D, 0xE991, 0xE9A9, 0xE9C4, 0xE9E0,\n    0xE9FA, 0xEA10, 0xEA22, 0xEA2C, 0xEA32, 0xEA36, 0xEA3A, 0xEA3C,\n    0xEA3E, 0xEA3F, 0xEA40, 0xEA40, 0xEA3F, 0xEA3E, 0xEA3D, 0xEA3B,\n    0xEA39, 0xEA37, 0xEA35, 0xEA33, 0xEA32, 0xEA30, 0xEA2E, 0xEA2D,\n    0xEA2C, 0xEA2C, 0xC898, 0xC898, 0xC898, 0xC898, 0xC898, 0xC898,\n    0xC898, 0xC898, 0xC898, 0xC898, 0xC9D0, 0xCD26, 0xD21C, 0xD834,\n    0xDEF1, 0xE5D4, 0xEC60, 0xF218, 0xF67E, 0xF913, 0xFA75, 0xFB95,\n    0xFC77, 0xFD22, 0xFD99, 0xFDE2, 0xFE02, 0xFDFC, 0xFDD6, 0xFD95,\n    0xFD3E, 0xFCD5, 0xFC5F, 0xFBE1, 0xFB60, 0xFAE1, 0xFA68, 0xF9FA,\n    0xF99C, 0xF954, 0xF924, 0xF913, 0x1106, 0x1106, 0x1106, 0x1106,\n    0x1106, 0x1106, 0x1106, 0x1106, 0x1106, 0x1106, 0x0D99, 0x0445,\n    0xF673, 0xE588, 0xD2ED, 0xC00D, 0xAE4D, 0x9F18, 0x93D5, 0x8DED,\n    0x8BAA, 0x8A5A, 0x89E9, 0x8A40, 0x8B4B, 0x8CF4, 0x8F28, 0x91CF,\n    0x94D7, 0x9828, 0x9BAF, 0x9F55, 0xA307, 0xA6AF, 0xAA38, 0xAD8C,\n    0xB098, 0xB344, 0xB57E, 0xB72E, 0xB842, 0xB8A2, 0xE692, 0xE692,\n    0xE692, 0xE692, 0xE692, 0xE692, 0xE692, 0xE692, 0xE692, 0xE692,\n    0xE5F2, 0xE43E, 0xE1B3, 0xDE8F, 0xDB12, 0xD779, 0xD403, 0xD0EF,\n    0xCE7A, 0xCCE5, 0xCBDE, 0xCAED, 0xCA10, 0xC948, 0xC892, 0xC7EF,\n    0xC75D, 0xC6DA, 0xC667, 0xC602, 0xC5AB, 0xC560, 0xC521, 0xC4EC,\n    0xC4C1, 0xC49E, 0xC484, 0xC470, 0xC463, 0xC45A, 0xC455, 0xC454,\n    0xB427, 0xB427, 0xB427, 0xB427, 0xB427, 0xB427, 0xB427, 0xB427,\n    0xB427, 0xB427, 0xB5F2, 0xBAD3, 0xC20A, 0xCAD4, 0xD472, 0xDE23,\n    0xE725, 0xEEB8, 0xF41B, 0xF68C, 0xF6F2, 0xF6BB, 0xF5F7, 0xF4B4,\n    0xF302, 0xF0EE, 0xEE88, 0xEBDE, 0xE900, 0xE5FC, 0xE2E0, 0xDFBD,\n    0xDC9F, 0xD997, 0xD6B2, 0xD401, 0xD191, 0xCF71, 0xCDB0, 0xCC5E,\n    0xCB87, 0xCB3D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0005, 0x0013, 0x0029, 0x0044,\n    0x0061, 0x007F, 0x009C, 0x00B5, 0x00C8, 0x00D4, 0x00DA, 0x00DF,\n    0x00E3, 0x00E6, 0x00E8, 0x00E9, 0x00E9, 0x00E9, 0x00E9, 0x00E7,\n    0x00E6, 0x00E4, 0x00E2, 0x00E0, 0x00DE, 0x00DC, 0x00DA, 0x00D8,\n    0x00D6, 0x00D5, 0x00D4, 0x00D4, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0062, 0x016F,\n    0x0300, 0x04EC, 0x070B, 0x0937, 0x0B48, 0x0D15, 0x0E78, 0x0F49,\n    0x0FB8, 0x1013, 0x105A, 0x1090, 0x10B6, 0x10CD, 0x10D7, 0x10D5,\n    0x10C9, 0x10B4, 0x1099, 0x1078, 0x1053, 0x102B, 0x1002, 0x0FDA,\n    0x0FB4, 0x0F91, 0x0F74, 0x0F5D, 0x0F4E, 0x0F49, 0xED8C, 0xED8C,\n    0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C, 0xED8C,\n    0xED76, 0xED3B, 0xECE4, 0xEC79, 0xEC02, 0xEB89, 0xEB15, 0xEAB1,\n    0xEA63, 0xEA36, 0xEA1E, 0xEA0A, 0xE9FA, 0xE9EE, 0xE9E6, 0xE9E1,\n    0xE9DF, 0xE9DF, 0xE9E2, 0xE9E7, 0xE9ED, 0xE9F4, 0xE9FC, 0xEA04,\n    0xEA0D, 0xEA16, 0xEA1E, 0xEA26, 0xEA2C, 0xEA31, 0xEA35, 0xEA36,\n    0xC68E, 0xC68E, 0xC68E, 0xC68E, 0xC68E, 0xC68E, 0xC68E, 0xC68E,\n    0xC68E, 0xC68E, 0xC7C4, 0xCB13, 0xCFFE, 0xD609, 0xDCB7, 0xE38C,\n    0xEA0A, 0xEFB5, 0xF411, 0xF6A2, 0xF800, 0xF91D, 0xF9FE, 0xFAA7,\n    0xFB1E, 0xFB66, 0xFB85, 0xFB80, 0xFB5A, 0xFB1A, 0xFAC3, 0xFA5B,\n    0xF9E6, 0xF96A, 0xF8EA, 0xF86B, 0xF7F3, 0xF786, 0xF729, 0xF6E1,\n    0xF6B2, 0xF6A2, 0xF40A, 0xF40A, 0xF40A, 0xF40A, 0xF40A, 0xF40A,\n    0xF40A, 0xF40A, 0xF40A, 0xF40A, 0xF73D, 0xFFF6, 0x0CE3, 0x1CB6,\n    0x2E1E, 0x3FCA, 0x506B, 0x5EAE, 0x6945, 0x6EDE, 0x7113, 0x7267,\n    0x72EF, 0x72BE, 0x71E6, 0x707C, 0x6E93, 0x6C3D, 0x698F, 0x669A,\n    0x6374, 0x602F, 0x5CDD, 0x5994, 0x5665, 0x5364, 0x50A5, 0x4E3A,\n    0x4C37, 0x4AAF, 0x49B6, 0x495F, 0x1E67, 0x1E67, 0x1E67, 0x1E67,\n    0x1E67, 0x1E67, 0x1E67, 0x1E67, 0x1E67, 0x1E67, 0x1ED9, 0x2014,\n    0x21EA, 0x2430, 0x26B7, 0x2955, 0x2BDD, 0x2E21, 0x2FF6, 0x312E,\n    0x3204, 0x32CE, 0x338C, 0x343E, 0x34E5, 0x3580, 0x3610, 0x3696,\n    0x3711, 0x3781, 0x37E7, 0x3844, 0x3896, 0x38DF, 0x391E, 0x3955,\n    0x3982, 0x39A7, 0x39C3, 0x39D7, 0x39E3, 0x39E6, 0xB4BD, 0xB4BD,\n    0xB4BD, 0xB4BD, 0xB4BD, 0xB4BD, 0xB4BD, 0xB4BD, 0xB4BD, 0xB4BD,\n    0xB667, 0xBAEE, 0xC1A0, 0xC9CA, 0xD2B9, 0xDBBB, 0xE41D, 0xEB2D,\n    0xF037, 0xF28A, 0xF2F9, 0xF2DA, 0xF23A, 0xF126, 0xEFAC, 0xEDD9,\n    0xEBBB, 0xE95E, 0xE6D1, 0xE420, 0xE159, 0xDE8A, 0xDBC0, 0xD908,\n    0xD670, 0xD405, 0xD1D5, 0xCFEC, 0xCE58, 0xCD28, 0xCC67, 0xCC24,\n    0x001B, 0x001B, 0x001B, 0x001B, 0x001B, 0x001B, 0x001B, 0x001B,\n    0x001B, 0x001B, 0x0022, 0x0036, 0x0053, 0x0076, 0x009D, 0x00C5,\n    0x00EB, 0x010C, 0x0126, 0x0135, 0x013D, 0x0143, 0x0148, 0x014C,\n    0x014F, 0x0150, 0x0151, 0x0151, 0x0150, 0x014F, 0x014D, 0x014A,\n    0x0148, 0x0145, 0x0142, 0x013F, 0x013C, 0x013A, 0x0138, 0x0136,\n    0x0135, 0x0135, 0x025B, 0x025B, 0x025B, 0x025B, 0x025B, 0x025B,\n    0x025B, 0x025B, 0x025B, 0x025B, 0x0259, 0x0253, 0x024B, 0x0240,\n    0x0235, 0x0229, 0x021D, 0x0213, 0x020C, 0x0207, 0x0205, 0x0203,\n    0x0201, 0x0200, 0x01FF, 0x01FF, 0x01FF, 0x01FF, 0x01FF, 0x01FF,\n    0x0200, 0x0201, 0x0201, 0x0202, 0x0203, 0x0204, 0x0205, 0x0206,\n    0x0206, 0x0207, 0x0207, 0x0207, 0xCB25, 0xCB25, 0xCB25, 0xCB25,\n    0xCB25, 0xCB25, 0xCB25, 0xCB25, 0xCB25, 0xCB25, 0xCBA6, 0xCD06,\n    0xCF12, 0xD195, 0xD45C, 0xD733, 0xD9E6, 0xDC42, 0xDE12, 0xDF23,\n    0xDFB5, 0xE02B, 0xE089, 0xE0CF, 0xE100, 0xE11E, 0xE12B, 0xE129,\n    0xE119, 0xE0FF, 0xE0DB, 0xE0AF, 0xE07F, 0xE04B, 0xE016, 0xDFE1,\n    0xDFAF, 0xDF82, 0xDF5B, 0xDF3D, 0xDF2A, 0xDF23, 0x5AFE, 0x5AFE,\n    0x5AFE, 0x5AFE, 0x5AFE, 0x5AFE, 0x5AFE, 0x5AFE, 0x5AFE, 0x5AFE,\n    0x5920, 0x5406, 0x4C70, 0x431E, 0x38D1, 0x2E48, 0x2444, 0x1B85,\n    0x14CC, 0x10D8, 0x0EBB, 0x0D03, 0x0BA8, 0x0AA3, 0x09ED, 0x097D,\n    0x094D, 0x0956, 0x098F, 0x09F3, 0x0A78, 0x0B19, 0x0BCD, 0x0C8D,\n    0x0D53, 0x0E16, 0x0ECF, 0x0F77, 0x1006, 0x1076, 0x10BE, 0x10D8,\n    0x008D, 0x008D, 0x008D, 0x008D, 0x008D, 0x008D, 0x008D, 0x008D,\n    0x008D, 0x008D, 0x00F7, 0x0217, 0x03C4, 0x05D3, 0x081A, 0x0A6D,\n    0x0CA3, 0x0E92, 0x100F, 0x10EF, 0x1167, 0x11C8, 0x1216, 0x1250,\n    0x1279, 0x1293, 0x129F, 0x129E, 0x1292, 0x127D, 0x1261, 0x123E,\n    0x1217, 0x11EE, 0x11C3, 0x1199, 0x1170, 0x114C, 0x112D, 0x1114,\n    0x1105, 0x10FF, 0xFECB, 0xFECB, 0xFECB, 0xFECB, 0xFECB, 0xFECB,\n    0xFECB, 0xFECB, 0xFECB, 0xFECB, 0xFF9B, 0x01CF, 0x0511, 0x0908,\n    0x0D5C, 0x11B5, 0x15BB, 0x1917, 0x1B6F, 0x1C6D, 0x1C78, 0x1C37,\n    0x1BB2, 0x1AEF, 0x19F7, 0x18D1, 0x1783, 0x1616, 0x1490, 0x12FA,\n    0x1159, 0x0FB7, 0x0E19, 0x0C88, 0x0B0B, 0x09A8, 0x0868, 0x0752,\n    0x066C, 0x05C0, 0x0553, 0x052D, 0x83AC, 0x83AC, 0x83AC, 0x83AC,\n    0x83AC, 0x83AC, 0x83AC, 0x83AC, 0x83AC, 0x83AC, 0x853F, 0x898D,\n    0x8FF2, 0x97CB, 0xA076, 0xA950, 0xB1B4, 0xB902, 0xBE95, 0xC1CA,\n    0xC36B, 0xC4B2, 0xC5A5, 0xC64B, 0xC6AC, 0xC6CF, 0xC6B9, 0xC673,\n    0xC602, 0xC56F, 0xC4C0, 0xC3FC, 0xC329, 0xC24F, 0xC175, 0xC0A2,\n    0xBFDC, 0xBF2A, 0xBE94, 0xBE20, 0xBDD6, 0xBDBB, 0x0095, 0x0095,\n    0x0095, 0x0095, 0x0095, 0x0095, 0x0095, 0x0095, 0x0095, 0x0095,\n    0x0092, 0x0089, 0x007C, 0x006B, 0x0059, 0x0047, 0x0035, 0x0026,\n    0x001A, 0x0013, 0x000F, 0x000C, 0x000A, 0x0008, 0x0007, 0x0006,\n    0x0006, 0x0006, 0x0006, 0x0007, 0x0008, 0x0009, 0x000A, 0x000B,\n    0x000D, 0x000E, 0x000F, 0x0010, 0x0011, 0x0012, 0x0013, 0x0013,\n    0xFF09, 0xFF09, 0xFF09, 0xFF09, 0xFF09, 0xFF09, 0xFF09, 0xFF09,\n    0xFF09, 0xFF09, 0xFF08, 0xFF05, 0xFF01, 0xFEFC, 0xFEF6, 0xFEF0,\n    0xFEEB, 0xFEE6, 0xFEE2, 0xFEE0, 0xFEDF, 0xFEDE, 0xFEDD, 0xFEDC,\n    0xFEDC, 0xFEDC, 0xFEDC, 0xFEDC, 0xFEDC, 0xFEDC, 0xFEDC, 0xFEDD,\n    0xFEDD, 0xFEDD, 0xFEDE, 0xFEDE, 0xFEDF, 0xFEDF, 0xFEDF, 0xFEE0,\n    0xFEE0, 0xFEE0, 0xCC42, 0xCC42, 0xCC42, 0xCC42, 0xCC42, 0xCC42,\n    0xCC42, 0xCC42, 0xCC42, 0xCC42, 0xCCBE, 0xCE0F, 0xD005, 0xD26D,\n    0xD517, 0xD7CF, 0xDA66, 0xDCA8, 0xDE65, 0xDF6A, 0xDFF6, 0xE067,\n    0xE0C1, 0xE104, 0xE133, 0xE150, 0xE15D, 0xE15A, 0xE14C, 0xE132,\n    0xE10F, 0xE0E6, 0xE0B7, 0xE086, 0xE053, 0xE020, 0xDFF1, 0xDFC5,\n    0xDFA0, 0xDF83, 0xDF71, 0xDF6A, 0x5730, 0x5730, 0x5730, 0x5730,\n    0x5730, 0x5730, 0x5730, 0x5730, 0x5730, 0x5730, 0x555F, 0x5068,\n    0x4908, 0x3FF7, 0x35F2, 0x2BB4, 0x21F6, 0x1975, 0x12EB, 0x0F13,\n    0x0D05, 0x0B59, 0x0A08, 0x090A, 0x0858, 0x07EC, 0x07BD, 0x07C6,\n    0x07FE, 0x085E, 0x08E0, 0x097C, 0x0A2B, 0x0AE7, 0x0BA7, 0x0C64,\n    0x0D18, 0x0DBB, 0x0E47, 0x0EB3, 0x0EFA, 0x0F13, 0xFFBA, 0xFFBA,\n    0xFFBA, 0xFFBA, 0xFFBA, 0xFFBA, 0xFFBA, 0xFFBA, 0xFFBA, 0xFFBA,\n    0xFF66, 0xFE81, 0xFD2D, 0xFB8D, 0xF9C3, 0xF7F1, 0xF63A, 0xF4BF,\n    0xF3A4, 0xF30A, 0xF2C8, 0xF29B, 0xF283, 0xF27C, 0xF286, 0xF29E,\n    0xF2C3, 0xF2F3, 0xF32B, 0xF36B, 0xF3B0, 0xF3F9, 0xF444, 0xF48E,\n    0xF4D6, 0xF51B, 0xF55A, 0xF592, 0xF5C0, 0xF5E4, 0xF5FA, 0xF602,\n    0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x0051,\n    0x0051, 0x0051, 0xFFD0, 0xFE6E, 0xFC63, 0xF9E6, 0xF72F, 0xF474,\n    0xF1ED, 0xEFD0, 0xEE56, 0xEDB4, 0xEDAB, 0xEDD0, 0xEE21, 0xEE97,\n    0xEF2E, 0xEFE3, 0xF0B0, 0xF190, 0xF280, 0xF37A, 0xF47B, 0xF57D,\n    0xF67D, 0xF774, 0xF860, 0xF93B, 0xFA01, 0xFAAD, 0xFB3A, 0xFBA5,\n    0xFBE9, 0xFC00, 0x85D1, 0x85D1, 0x85D1, 0x85D1, 0x85D1, 0x85D1,\n    0x85D1, 0x85D1, 0x85D1, 0x85D1, 0x876E, 0x8BD3, 0x925A, 0x9A5B,\n    0xA330, 0xAC30, 0xB4B5, 0xBC18, 0xC1B0, 0xC4D8, 0xC65B, 0xC77D,\n    0xC844, 0xC8B9, 0xC8E4, 0xC8CB, 0xC878, 0xC7F2, 0xC741, 0xC66C,\n    0xC57B, 0xC476, 0xC365, 0xC250, 0xC13E, 0xC037, 0xBF44, 0xBE6B,\n    0xBDB5, 0xBD29, 0xBCCF, 0xBCB0, 0x8001, 0x8001, 0x4171, 0xBF5F,\n    0x8001, 0x8001, 0x4171, 0xBF5F, 0x2A6B, 0x29C5, 0x27F8, 0x2539,\n    0x21BE, 0x1DBD, 0x196B, 0x14FF, 0x10AD, 0x0CAD, 0x0898, 0x0405,\n    0xFF20, 0xFA16, 0xF514, 0xF048, 0xEBDF, 0xE806, 0xE4E9, 0xE2B7,\n    0xE11D, 0xDFA9, 0xDE5B, 0xDD2F, 0xDC25, 0xDB39, 0xDA6B, 0xD9B8,\n    0xD91E, 0xD89C, 0xD82F, 0xD7D6, 0xD78E, 0xD757, 0xD72D, 0xD70E,\n    0xD6FA, 0xD6EE, 0xD6E7, 0xD6E5, 0xD6E6, 0xD6E6, 0x0F71, 0x0F71,\n    0x0F71, 0x0F71, 0x0F71, 0x0F71, 0x0F71, 0x0F71, 0x0F71, 0x0F71,\n    0x0EA9, 0x0C89, 0x0963, 0x0586, 0x0146, 0xFCF4, 0xF8E0, 0xF55C,\n    0xF2BA, 0xF14B, 0xF0AD, 0xF042, 0xF006, 0xEFF5, 0xF00A, 0xF042,\n    0xF097, 0xF106, 0xF18B, 0xF221, 0xF2C3, 0xF36E, 0xF41D, 0xF4CC,\n    0xF576, 0xF618, 0xF6AC, 0xF72F, 0xF79D, 0xF7F1, 0xF826, 0xF839,\n    0x3FFF, 0x5BFE, 0x77FD, 0x93FF, 0xAFFE, 0xCBFD, 0xE7FC, 0x03FA,\n    0x1FF9, 0x3BF8, 0x4FC8, 0x5E75, 0x6925, 0x7081, 0x7535, 0x77EA,\n    0x794B, 0x7A02, 0x7ABA, 0x7C1D, 0x7DE2, 0x7F53, 0x8079, 0x8154,\n    0x81ED, 0x824A, 0x8272, 0x826B, 0x823B, 0x81E8, 0x8178, 0x80F1,\n    0x805A, 0x7FB6, 0x7F10, 0x7E6D, 0x7DD2, 0x7D45, 0x7CCD, 0x7C6F,\n    0x7C33, 0x7C1D,\n};\n\n"
  },
  {
    "path": "assets/anims/anim_D0.inc.c",
    "content": "static const struct Animation anim_D0[] = {\n    1,\n    189,\n    0,\n    0,\n    0x0E,\n    ANIMINDEX_NUMPARTS(anim_D0_indices),\n    anim_D0_values,\n    anim_D0_indices,\n    0,\n};\n\n\nstatic const u16 anim_D0_indices[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x015F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x0151,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x0143,\n    0x0001, 0x013F, 0x0001, 0x0140, 0x0001, 0x0141,\n    0x000E, 0x0014, 0x000E, 0x0022, 0x000E, 0x0030,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x0006,\n    0x0001, 0x0003, 0x0001, 0x0004, 0x0001, 0x0005,\n    0x0001, 0x013B, 0x0001, 0x013C, 0x0001, 0x013D,\n    0x000E, 0x004D, 0x000E, 0x005B, 0x000E, 0x0069,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x003F,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x003E,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x013E,\n    0x000E, 0x0111, 0x000E, 0x011F, 0x000E, 0x012D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x0103,\n    0x000E, 0x00D9, 0x000E, 0x00E7, 0x000E, 0x00F5,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x0001, 0x0142,\n    0x000E, 0x00AF, 0x000E, 0x00BD, 0x000E, 0x00CB,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x000E, 0x00A1,\n    0x000E, 0x0077, 0x000E, 0x0085, 0x000E, 0x0093,\n};\n\nstatic const s16 anim_D0_values[] = {\n    0x0000, 0x0090, 0x3FFF, 0x00A8, 0xF984, 0xE96B, 0xC7C7, 0xC7CB,\n    0xC7D4, 0xC7E3, 0xC7F6, 0xC80C, 0xC823, 0xC83B, 0xC853, 0xC869,\n    0xC87B, 0xC88A, 0xC894, 0xC898, 0x4DD9, 0x4CD3, 0x49F9, 0x45A0,\n    0x401E, 0x39C6, 0x32F0, 0x2BEF, 0x2518, 0x1EC1, 0x193F, 0x14E6,\n    0x120C, 0x1106, 0x9FD9, 0xA10A, 0xA45B, 0xA968, 0xAFD0, 0xB72F,\n    0xBF23, 0xC748, 0xCF3B, 0xD69A, 0xDD02, 0xE210, 0xE561, 0xE692,\n    0x6AA4, 0x6BE0, 0x6F53, 0x7493, 0x7B3B, 0x82E8, 0x8B2B, 0x93A2,\n    0x9BE5, 0xA38F, 0xAA37, 0xAF78, 0xB2EA, 0xB427, 0xED8C, 0xBED0,\n    0xBEF2, 0xBF4F, 0xBFDC, 0xC090, 0xC15E, 0xC23D, 0xC321, 0xC400,\n    0xC4CF, 0xC582, 0xC610, 0xC66D, 0xC68E, 0x30C8, 0x2FC2, 0x2CE9,\n    0x2892, 0x2311, 0x1CBC, 0x15E8, 0x0EE9, 0x0815, 0x01C0, 0xFC40,\n    0xF7E9, 0xF510, 0xF40A, 0x1F17, 0x1F14, 0x1F0C, 0x1EFF, 0x1EEF,\n    0x1EDD, 0x1EC9, 0x1EB5, 0x1EA1, 0x1E8E, 0x1E7E, 0x1E72, 0x1E6A,\n    0x1E67, 0xE456, 0xE389, 0xE14E, 0xDDE7, 0xD997, 0xD4A1, 0xCF47,\n    0xC9CC, 0xC472, 0xBF7C, 0xBB2C, 0xB7C5, 0xB58A, 0xB4BD, 0xFF7F,\n    0xFF8F, 0xFFB5, 0xFFE0, 0xFFFD, 0x000A, 0x0014, 0x0019, 0x001B,\n    0x001B, 0x001B, 0x001B, 0x001B, 0x001B, 0x024E, 0x024F, 0x0253,\n    0x0256, 0x0259, 0x025A, 0x025B, 0x025B, 0x025B, 0x025B, 0x025B,\n    0x025B, 0x025B, 0x025B, 0xC089, 0xC1A5, 0xC435, 0xC70F, 0xC90B,\n    0xCA01, 0xCA9F, 0xCAF7, 0xCB1D, 0xCB25, 0xCB25, 0xCB25, 0xCB25,\n    0xCB25, 0x5208, 0x4D20, 0x41C9, 0x350E, 0x2BFE, 0x273C, 0x25FF,\n    0x2B33, 0x4572, 0x5AFE, 0x5AFE, 0x5AFE, 0x5AFE, 0x5AFE, 0x009D,\n    0x0089, 0x005D, 0x0030, 0x001B, 0x0026, 0x0042, 0x0064, 0x0081,\n    0x008D, 0x008D, 0x008D, 0x008D, 0x008D, 0xFED2, 0xFECD, 0xFEC0,\n    0xFEB3, 0xFEAD, 0xFEB0, 0xFEB7, 0xFEC0, 0xFEC8, 0xFECB, 0xFECB,\n    0xFECB, 0xFECB, 0xFECB, 0x81A2, 0x8413, 0x8978, 0x8EEC, 0x9188,\n    0x903C, 0x8CD1, 0x88A9, 0x8526, 0x83AC, 0x83AC, 0x83AC, 0x83AC,\n    0x83AC, 0x0121, 0x00FF, 0x00B3, 0x0063, 0x0036, 0x0036, 0x004C,\n    0x006C, 0x0089, 0x0095, 0x0095, 0x0095, 0x0095, 0x0095, 0xFFF9,\n    0xFFD6, 0xFF87, 0xFF31, 0xFEFB, 0xFEEB, 0xFEED, 0xFEF7, 0xFF03,\n    0xFF09, 0xFF09, 0xFF09, 0xFF09, 0xFF09, 0xA386, 0xAB1A, 0xBC37,\n    0xCE73, 0xD960, 0xDADE, 0xD7F9, 0xD305, 0xCE56, 0xCC42, 0xCC42,\n    0xCC42, 0xCC42, 0xCC42, 0x4A26, 0x4393, 0x3476, 0x23BB, 0x184E,\n    0x13D0, 0x14A6, 0x1CDB, 0x3D2A, 0x5730, 0x5730, 0x5730, 0x5730,\n    0x5730, 0xFFF1, 0xFFF2, 0xFFF4, 0xFFF4, 0xFFF0, 0xFFE7, 0xFFD9,\n    0xFFCA, 0xFFBE, 0xFFBA, 0xFFBA, 0xFFBA, 0xFFBA, 0xFFBA, 0x006B,\n    0x006B, 0x006B, 0x006A, 0x0068, 0x0064, 0x005E, 0x0058, 0x0053,\n    0x0051, 0x0051, 0x0051, 0x0051, 0x0051, 0x9CA2, 0x9D1C, 0x9DE8,\n    0x9E13, 0x9CAD, 0x98B3, 0x92D4, 0x8CAA, 0x87CC, 0x85D1, 0x85D1,\n    0x85D1, 0x85D1, 0x85D1, 0x8001, 0x8001, 0x4171, 0xBF5F, 0x8001,\n    0x8001, 0x4171, 0xBF5F, 0x0690, 0x0021, 0xF4B6, 0xF01E, 0xF3FC,\n    0xF9B6, 0x00C3, 0x089B, 0x10B6, 0x188B, 0x1F90, 0x253C, 0x2908,\n    0x2A6B, 0x165E, 0x1749, 0x1932, 0x1AD9, 0x1AFC, 0x1786, 0x1233,\n    0x0F71, 0x1454, 0x1938, 0x17B1, 0x1454, 0x10F8, 0x0F71, 0x4BD0,\n    0x4FAC, 0x536E, 0x57B1, 0x5D10, 0x6427, 0x6D91, 0x79E9, 0x89CE,\n    0x9DD6, 0xB69E, 0xD4C3, 0xF8DF, 0x238D,\n};\n\n"
  },
  {
    "path": "assets/demo_data.json",
    "content": "/*\n * This file defines the demo data. It's parsed by tools/demo_data_converter.py.\n *\n * The \"table\" array declares the order of the demos and will be generated\n * as pairs of (offset, size).\n * Each item has a \"demofile\" property, which must reference a demofile\n * in the \"demofiles\" array.\n * \"ifdef\" is an optional array property which can be used to specify\n * requirement of SM64 version.\n * \"extraSize\" is an optional property which will be added the size of the\n * demofile.\n *\n * The \"demofiles\" array declares the inclusion order of the demofiles.\n * A file with the \".bin\" extension with the \"name\" property as basename\n * should exist in the assets/demos/ directory.\n * \"ifdef\" is an optional array property which can be used to specify\n * requirement of SM64 version.\n */\n\n{\n    \"table\": [\n        {\"demofile\":\"bitdw\", \"ifdef\":[\"VERSION_US\", \"VERSION_SH\", \"VERSION_CN\"]},\n        \n        /* Whomp's Fortress has the wrong size.\n           The original entries probably manually input the sizes. */\n        {\"demofile\":\"wf\", \"extraSize\":368},\n        \n        {\"demofile\":\"ccm\"},\n        {\"demofile\":\"bbh\"},\n        {\"demofile\":\"jrb\"},\n        {\"demofile\":\"hmc\"},\n        {\"demofile\":\"pss\"}\n    ],\n    \"demofiles\": [\n        {\"name\":\"bbh\"},\n        {\"name\":\"ccm\"},\n        {\"name\":\"hmc\"},\n        {\"name\":\"jrb\"},\n        {\"name\":\"wf\"},\n        {\"name\":\"pss\"},\n        \n        /* Might be an unused demo, but it doesn't define a header,\n           so it can't be normally called. Speculation: \"blooper\" take for CCM.\n           Mario runs into the sign and aligns himself as if it were a mistake. */\n        {\"name\":\"unused\"},\n        \n        {\"name\":\"bitdw\", \"ifdef\":[\"VERSION_US\", \"VERSION_SH\", \"VERSION_CN\"]}\n    ]\n}\n"
  },
  {
    "path": "assets.json",
    "content": "{\n\"@comment\": \"This file was generated by tools/gen_asset_list.cpp. When renaming a file, either change its name in this file directly, or regenerate this file using that script.\",\n\n\"@sound ctl eu\": [97856,{\"eu\":[5626032]}],\n\"@sound ctl jp\": [94400,{\"jp\":[5738816]}],\n\"@sound ctl us\": [97856,{\"us\":[5748512]}],\n\"@sound ctl sh\": [89472,{\"sh\":[5596480],\"cn\":[5669504]}],\n\"@sound tbl eu\": [2216704,{\"us\":[5846368],\"eu\":[5723888]}],\n\"@sound tbl jp\": [1793408,{\"jp\":[5833216]}],\n\"@sound tbl us\": [2216704,{\"us\":[5846368],\"eu\":[5723888]}],\n\"@sound tbl sh\": [2184688,{\"sh\":[5685952],\"cn\":[5758976]}],\n\"@sound ctl header sh\": [624,{\"sh\":[864272],\"cn\":[876656]}],\n\"@sound tbl header sh\": [192,{\"sh\":[865056],\"cn\":[877440]}],\n\"textures/ipl3_raw/ipl3_font_00.ia1.png\": [13,14,23,{\"jp\":[2928],\"us\":[2928],\"eu\":[2928],\"sh\":[2928],\"cn\":[2928]}],\n\"textures/ipl3_raw/ipl3_font_01.ia1.png\": [13,14,23,{\"jp\":[2951],\"us\":[2951],\"eu\":[2951],\"sh\":[2951],\"cn\":[2951]}],\n\"textures/ipl3_raw/ipl3_font_02.ia1.png\": [13,14,23,{\"jp\":[2974],\"us\":[2974],\"eu\":[2974],\"sh\":[2974],\"cn\":[2974]}],\n\"textures/ipl3_raw/ipl3_font_03.ia1.png\": [13,14,23,{\"jp\":[2997],\"us\":[2997],\"eu\":[2997],\"sh\":[2997],\"cn\":[2997]}],\n\"textures/ipl3_raw/ipl3_font_04.ia1.png\": [13,14,23,{\"jp\":[3020],\"us\":[3020],\"eu\":[3020],\"sh\":[3020],\"cn\":[3020]}],\n\"textures/ipl3_raw/ipl3_font_05.ia1.png\": [13,14,23,{\"jp\":[3043],\"us\":[3043],\"eu\":[3043],\"sh\":[3043],\"cn\":[3043]}],\n\"textures/ipl3_raw/ipl3_font_06.ia1.png\": [13,14,23,{\"jp\":[3066],\"us\":[3066],\"eu\":[3066],\"sh\":[3066],\"cn\":[3066]}],\n\"textures/ipl3_raw/ipl3_font_07.ia1.png\": [13,14,23,{\"jp\":[3089],\"us\":[3089],\"eu\":[3089],\"sh\":[3089],\"cn\":[3089]}],\n\"textures/ipl3_raw/ipl3_font_08.ia1.png\": [13,14,23,{\"jp\":[3112],\"us\":[3112],\"eu\":[3112],\"sh\":[3112],\"cn\":[3112]}],\n\"textures/ipl3_raw/ipl3_font_09.ia1.png\": [13,14,23,{\"jp\":[3135],\"us\":[3135],\"eu\":[3135],\"sh\":[3135],\"cn\":[3135]}],\n\"textures/ipl3_raw/ipl3_font_10.ia1.png\": [13,14,23,{\"jp\":[3158],\"us\":[3158],\"eu\":[3158],\"sh\":[3158],\"cn\":[3158]}],\n\"textures/ipl3_raw/ipl3_font_11.ia1.png\": [13,14,23,{\"jp\":[3181],\"us\":[3181],\"eu\":[3181],\"sh\":[3181],\"cn\":[3181]}],\n\"textures/ipl3_raw/ipl3_font_12.ia1.png\": [13,14,23,{\"jp\":[3204],\"us\":[3204],\"eu\":[3204],\"sh\":[3204],\"cn\":[3204]}],\n\"textures/ipl3_raw/ipl3_font_13.ia1.png\": [13,14,23,{\"jp\":[3227],\"us\":[3227],\"eu\":[3227],\"sh\":[3227],\"cn\":[3227]}],\n\"textures/ipl3_raw/ipl3_font_14.ia1.png\": [13,14,23,{\"jp\":[3250],\"us\":[3250],\"eu\":[3250],\"sh\":[3250],\"cn\":[3250]}],\n\"textures/ipl3_raw/ipl3_font_15.ia1.png\": [13,14,23,{\"jp\":[3273],\"us\":[3273],\"eu\":[3273],\"sh\":[3273],\"cn\":[3273]}],\n\"textures/ipl3_raw/ipl3_font_16.ia1.png\": [13,14,23,{\"jp\":[3296],\"us\":[3296],\"eu\":[3296],\"sh\":[3296],\"cn\":[3296]}],\n\"textures/ipl3_raw/ipl3_font_17.ia1.png\": [13,14,23,{\"jp\":[3319],\"us\":[3319],\"eu\":[3319],\"sh\":[3319],\"cn\":[3319]}],\n\"textures/ipl3_raw/ipl3_font_18.ia1.png\": [13,14,23,{\"jp\":[3342],\"us\":[3342],\"eu\":[3342],\"sh\":[3342],\"cn\":[3342]}],\n\"textures/ipl3_raw/ipl3_font_19.ia1.png\": [13,14,23,{\"jp\":[3365],\"us\":[3365],\"eu\":[3365],\"sh\":[3365],\"cn\":[3365]}],\n\"textures/ipl3_raw/ipl3_font_20.ia1.png\": [13,14,23,{\"jp\":[3388],\"us\":[3388],\"eu\":[3388],\"sh\":[3388],\"cn\":[3388]}],\n\"textures/ipl3_raw/ipl3_font_21.ia1.png\": [13,14,23,{\"jp\":[3411],\"us\":[3411],\"eu\":[3411],\"sh\":[3411],\"cn\":[3411]}],\n\"textures/ipl3_raw/ipl3_font_22.ia1.png\": [13,14,23,{\"jp\":[3434],\"us\":[3434],\"eu\":[3434],\"sh\":[3434],\"cn\":[3434]}],\n\"textures/ipl3_raw/ipl3_font_23.ia1.png\": [13,14,23,{\"jp\":[3457],\"us\":[3457],\"eu\":[3457],\"sh\":[3457],\"cn\":[3457]}],\n\"textures/ipl3_raw/ipl3_font_24.ia1.png\": [13,14,23,{\"jp\":[3480],\"us\":[3480],\"eu\":[3480],\"sh\":[3480],\"cn\":[3480]}],\n\"textures/ipl3_raw/ipl3_font_25.ia1.png\": [13,14,23,{\"jp\":[3503],\"us\":[3503],\"eu\":[3503],\"sh\":[3503],\"cn\":[3503]}],\n\"textures/ipl3_raw/ipl3_font_26.ia1.png\": [13,14,23,{\"jp\":[3526],\"us\":[3526],\"eu\":[3526],\"sh\":[3526],\"cn\":[3526]}],\n\"textures/ipl3_raw/ipl3_font_27.ia1.png\": [13,14,23,{\"jp\":[3549],\"us\":[3549],\"eu\":[3549],\"sh\":[3549],\"cn\":[3549]}],\n\"textures/ipl3_raw/ipl3_font_28.ia1.png\": [13,14,23,{\"jp\":[3572],\"us\":[3572],\"eu\":[3572],\"sh\":[3572],\"cn\":[3572]}],\n\"textures/ipl3_raw/ipl3_font_29.ia1.png\": [13,14,23,{\"jp\":[3595],\"us\":[3595],\"eu\":[3595],\"sh\":[3595],\"cn\":[3595]}],\n\"textures/ipl3_raw/ipl3_font_30.ia1.png\": [13,14,23,{\"jp\":[3618],\"us\":[3618],\"eu\":[3618],\"sh\":[3618],\"cn\":[3618]}],\n\"textures/ipl3_raw/ipl3_font_31.ia1.png\": [13,14,23,{\"jp\":[3641],\"us\":[3641],\"eu\":[3641],\"sh\":[3641],\"cn\":[3641]}],\n\"textures/ipl3_raw/ipl3_font_32.ia1.png\": [13,14,23,{\"jp\":[3664],\"us\":[3664],\"eu\":[3664],\"sh\":[3664],\"cn\":[3664]}],\n\"textures/ipl3_raw/ipl3_font_33.ia1.png\": [13,14,23,{\"jp\":[3687],\"us\":[3687],\"eu\":[3687],\"sh\":[3687],\"cn\":[3687]}],\n\"textures/ipl3_raw/ipl3_font_34.ia1.png\": [13,14,23,{\"jp\":[3710],\"us\":[3710],\"eu\":[3710],\"sh\":[3710],\"cn\":[3710]}],\n\"textures/ipl3_raw/ipl3_font_35.ia1.png\": [13,14,23,{\"jp\":[3733],\"us\":[3733],\"eu\":[3733],\"sh\":[3733],\"cn\":[3733]}],\n\"textures/ipl3_raw/ipl3_font_36.ia1.png\": [13,14,23,{\"jp\":[3756],\"us\":[3756],\"eu\":[3756],\"sh\":[3756],\"cn\":[3756]}],\n\"textures/ipl3_raw/ipl3_font_37.ia1.png\": [13,14,23,{\"jp\":[3779],\"us\":[3779],\"eu\":[3779],\"sh\":[3779],\"cn\":[3779]}],\n\"textures/ipl3_raw/ipl3_font_38.ia1.png\": [13,14,23,{\"jp\":[3802],\"us\":[3802],\"eu\":[3802],\"sh\":[3802],\"cn\":[3802]}],\n\"textures/ipl3_raw/ipl3_font_39.ia1.png\": [13,14,23,{\"jp\":[3825],\"us\":[3825],\"eu\":[3825],\"sh\":[3825],\"cn\":[3825]}],\n\"textures/ipl3_raw/ipl3_font_40.ia1.png\": [13,14,23,{\"jp\":[3848],\"us\":[3848],\"eu\":[3848],\"sh\":[3848],\"cn\":[3848]}],\n\"textures/ipl3_raw/ipl3_font_41.ia1.png\": [13,14,23,{\"jp\":[3871],\"us\":[3871],\"eu\":[3871],\"sh\":[3871],\"cn\":[3871]}],\n\"textures/ipl3_raw/ipl3_font_42.ia1.png\": [13,14,23,{\"jp\":[3894],\"us\":[3894],\"eu\":[3894],\"sh\":[3894],\"cn\":[3894]}],\n\"textures/ipl3_raw/ipl3_font_43.ia1.png\": [13,14,23,{\"jp\":[3917],\"us\":[3917],\"eu\":[3917],\"sh\":[3917],\"cn\":[3917]}],\n\"textures/ipl3_raw/ipl3_font_44.ia1.png\": [13,14,23,{\"jp\":[3940],\"us\":[3940],\"eu\":[3940],\"sh\":[3940],\"cn\":[3940]}],\n\"textures/ipl3_raw/ipl3_font_45.ia1.png\": [13,14,23,{\"jp\":[3963],\"us\":[3963],\"eu\":[3963],\"sh\":[3963],\"cn\":[3963]}],\n\"textures/ipl3_raw/ipl3_font_46.ia1.png\": [13,14,23,{\"jp\":[3986],\"us\":[3986],\"eu\":[3986],\"sh\":[3986],\"cn\":[3986]}],\n\"textures/ipl3_raw/ipl3_font_47.ia1.png\": [13,14,23,{\"jp\":[4009],\"us\":[4009],\"eu\":[4009],\"sh\":[4009],\"cn\":[4009]}],\n\"textures/ipl3_raw/ipl3_font_48.ia1.png\": [13,14,23,{\"jp\":[4032],\"us\":[4032],\"eu\":[4032],\"sh\":[4032],\"cn\":[4032]}],\n\"textures/ipl3_raw/ipl3_font_49.ia1.png\": [13,14,23,{\"jp\":[4055],\"us\":[4055],\"eu\":[4055],\"sh\":[4055],\"cn\":[4055]}],\n\"textures/crash_screen/crash_screen_font.ia1.png\": [32,63,252,{\"eu\":[757168],\"sh\":[805680],\"cn\":[815248]}],\n\"actors/amp/amp_body.rgba16.png\": [32,32,2048,{\"jp\":[2032944,6936],\"us\":[2040320,6936],\"eu\":[1912288,6936],\"sh\":[1888800,6936],\"cn\":[1955632,6936]}],\n\"actors/amp/amp_electricity.rgba16.png\": [16,32,1024,{\"jp\":[2032944,3864],\"us\":[2040320,3864],\"eu\":[1912288,3864],\"sh\":[1888800,3864],\"cn\":[1955632,3864]}],\n\"actors/amp/amp_eyes.rgba16.png\": [32,32,2048,{\"jp\":[2032944,4888],\"us\":[2040320,4888],\"eu\":[1912288,4888],\"sh\":[1888800,4888],\"cn\":[1955632,4888]}],\n\"actors/amp/amp_mouth.rgba16.png\": [32,32,2048,{\"jp\":[2032944,8984],\"us\":[2040320,8984],\"eu\":[1912288,8984],\"sh\":[1888800,8984],\"cn\":[1955632,8984]}],\n\"actors/blue_coin_switch/blue_coin_switch_side.rgba16.png\": [32,16,1024,{\"jp\":[2032944,24],\"us\":[2040320,24],\"eu\":[1912288,24],\"sh\":[1888800,24],\"cn\":[1955632,24]}],\n\"actors/blue_coin_switch/blue_coin_switch_top.rgba16.png\": [32,32,2048,{\"jp\":[2032944,1048],\"us\":[2040320,1048],\"eu\":[1912288,1048],\"sh\":[1888800,1048],\"cn\":[1955632,1048]}],\n\"actors/blue_fish/blue_fish.rgba16.png\": [32,32,2048,{\"jp\":[2094912,112096],\"us\":[2102288,112096],\"eu\":[1974256,112096],\"sh\":[1950768,112096],\"cn\":[2017600,112096]}],\n\"actors/bobomb/bob-omb_buddy_left_side.rgba16.png\": [32,64,4096,{\"jp\":[1257760,120],\"us\":[1264928,120],\"eu\":[1136896,120],\"sh\":[1113408,120],\"cn\":[1180240,120]}],\n\"actors/bobomb/bob-omb_buddy_right_side.rgba16.png\": [32,64,4096,{\"jp\":[1257760,4216],\"us\":[1264928,4216],\"eu\":[1136896,4216],\"sh\":[1113408,4216],\"cn\":[1180240,4216]}],\n\"actors/bobomb/bob-omb_eyes.rgba16.png\": [32,32,2048,{\"jp\":[1257760,18552],\"us\":[1264928,18552],\"eu\":[1136896,18552],\"sh\":[1113408,18552],\"cn\":[1180240,18552]}],\n\"actors/bobomb/bob-omb_eyes_blink.rgba16.png\": [32,32,2048,{\"jp\":[1257760,20600],\"us\":[1264928,20600],\"eu\":[1136896,20600],\"sh\":[1113408,20600],\"cn\":[1180240,20600]}],\n\"actors/bobomb/bob-omb_left_side.rgba16.png\": [32,64,4096,{\"jp\":[2032944,121440],\"us\":[2040320,121440],\"eu\":[1912288,121440],\"sh\":[1888800,121440],\"cn\":[1955632,121440]}],\n\"actors/bobomb/bob-omb_right_side.rgba16.png\": [32,64,4096,{\"jp\":[2032944,125536],\"us\":[2040320,125536],\"eu\":[1912288,125536],\"sh\":[1888800,125536],\"cn\":[1955632,125536]}],\n\"actors/bomb/bomb_left_side.rgba16.png\": [32,64,4096,{\"jp\":[1599504,359104],\"us\":[1606720,359440],\"eu\":[1478688,359440],\"sh\":[1455200,359440],\"cn\":[1522032,359440]}],\n\"actors/bomb/bomb_right_side.rgba16.png\": [32,64,4096,{\"jp\":[1599504,363200],\"us\":[1606720,363536],\"eu\":[1478688,363536],\"sh\":[1455200,363536],\"cn\":[1522032,363536]}],\n\"actors/bomb/bomb_spike.rgba16.png\": [32,32,2048,{\"jp\":[1599504,367296],\"us\":[1606720,367632],\"eu\":[1478688,367632],\"sh\":[1455200,367632],\"cn\":[1522032,367632]}],\n\"actors/boo/boo_eyes.rgba16.png\": [64,32,4096,{\"jp\":[1462368,39744],\"us\":[1469536,39744],\"eu\":[1341504,39744],\"sh\":[1318016,39744],\"cn\":[1384848,39744]}],\n\"actors/boo/boo_mouth.rgba16.png\": [32,32,2048,{\"jp\":[1462368,43840],\"us\":[1469536,43840],\"eu\":[1341504,43840],\"sh\":[1318016,43840],\"cn\":[1384848,43840]}],\n\"actors/boo_castle/bbh_boo_eyes.rgba16.png\": [64,32,4096,{\"jp\":[1462368,39744],\"us\":[1469536,39744],\"eu\":[1341504,39744],\"sh\":[1318016,39744],\"cn\":[1384848,39744]}],\n\"actors/boo_castle/bbh_boo_mouth.rgba16.png\": [32,32,2048,{\"jp\":[1462368,43840],\"us\":[1469536,43840],\"eu\":[1341504,43840],\"sh\":[1318016,43840],\"cn\":[1384848,43840]}],\n\"actors/book/book_cover.rgba16.png\": [32,32,2048,{\"jp\":[1462368,4192],\"us\":[1469536,4192],\"eu\":[1341504,4192],\"sh\":[1318016,4192],\"cn\":[1384848,4192]}],\n\"actors/bookend/bookend_cover.rgba16.png\": [32,32,2048,{\"jp\":[1462368,4192],\"us\":[1469536,4192],\"eu\":[1341504,4192],\"sh\":[1318016,4192],\"cn\":[1384848,4192]}],\n\"actors/bookend/bookend_mouth.rgba16.png\": [16,32,1024,{\"jp\":[1462368,2144],\"us\":[1469536,2144],\"eu\":[1341504,2144],\"sh\":[1318016,2144],\"cn\":[1384848,2144]}],\n\"actors/bookend/bookend_pages.rgba16.png\": [16,32,1024,{\"jp\":[1462368,3168],\"us\":[1469536,3168],\"eu\":[1341504,3168],\"sh\":[1318016,3168],\"cn\":[1384848,3168]}],\n\"actors/bookend/bookend_spine.rgba16.png\": [16,32,1024,{\"jp\":[1462368,96],\"us\":[1469536,96],\"eu\":[1341504,96],\"sh\":[1318016,96],\"cn\":[1384848,96]}],\n\"actors/bookend/bookend_tooth.rgba16.png\": [16,32,1024,{\"jp\":[1462368,1120],\"us\":[1469536,1120],\"eu\":[1341504,1120],\"sh\":[1318016,1120],\"cn\":[1384848,1120]}],\n\"actors/bowser/bowser_armband.rgba16.png\": [32,32,2048,{\"jp\":[1599504,146488],\"us\":[1606720,146488],\"eu\":[1478688,146488],\"sh\":[1455200,146488],\"cn\":[1522032,146488]}],\n\"actors/bowser/bowser_armband_spike.rgba16.png\": [64,32,4096,{\"jp\":[1599504,142392],\"us\":[1606720,142392],\"eu\":[1478688,142392],\"sh\":[1455200,142392],\"cn\":[1522032,142392]}],\n\"actors/bowser/bowser_blue_eye_unused.rgba16.png\": [64,32,4096,{\"jp\":[1599504,156728],\"us\":[1606720,156728],\"eu\":[1478688,156728],\"sh\":[1455200,156728],\"cn\":[1522032,156728]}],\n\"actors/bowser/bowser_body.rgba16.png\": [32,32,2048,{\"jp\":[1599504,140344],\"us\":[1606720,140344],\"eu\":[1478688,140344],\"sh\":[1455200,140344],\"cn\":[1522032,140344]}],\n\"actors/bowser/bowser_chest.rgba16.png\": [32,32,2048,{\"jp\":[1599504,152632],\"us\":[1606720,152632],\"eu\":[1478688,152632],\"sh\":[1455200,152632],\"cn\":[1522032,152632]}],\n\"actors/bowser/bowser_claw_edge.rgba16.png\": [32,64,4096,{\"jp\":[1599504,171064],\"us\":[1606720,171064],\"eu\":[1478688,171064],\"sh\":[1455200,171064],\"cn\":[1522032,171064]}],\n\"actors/bowser/bowser_claw_horn_angle.rgba16.png\": [32,64,4096,{\"jp\":[1599504,179256],\"us\":[1606720,179256],\"eu\":[1478688,179256],\"sh\":[1455200,179256],\"cn\":[1522032,179256]}],\n\"actors/bowser/bowser_claw_horn_tooth.rgba16.png\": [32,64,4096,{\"jp\":[1599504,175160],\"us\":[1606720,175160],\"eu\":[1478688,175160],\"sh\":[1455200,175160],\"cn\":[1522032,175160]}],\n\"actors/bowser/bowser_eye_center_0.rgba16.png\": [64,32,4096,{\"jp\":[1599504,195640],\"us\":[1606720,195640],\"eu\":[1478688,195640],\"sh\":[1455200,195640],\"cn\":[1522032,195640]}],\n\"actors/bowser/bowser_eye_center_1.rgba16.png\": [64,32,4096,{\"jp\":[1599504,195640],\"us\":[1606720,195640],\"eu\":[1478688,195640],\"sh\":[1455200,195640],\"cn\":[1522032,195640]}],\n\"actors/bowser/bowser_eye_closed_0.rgba16.png\": [64,32,4096,{\"jp\":[1599504,191544],\"us\":[1606720,191544],\"eu\":[1478688,191544],\"sh\":[1455200,191544],\"cn\":[1522032,191544]}],\n\"actors/bowser/bowser_eye_closed_1.rgba16.png\": [64,32,4096,{\"jp\":[1599504,191544],\"us\":[1606720,191544],\"eu\":[1478688,191544],\"sh\":[1455200,191544],\"cn\":[1522032,191544]}],\n\"actors/bowser/bowser_eye_far_left_0.rgba16.png\": [64,32,4096,{\"jp\":[1599504,203832],\"us\":[1606720,203832],\"eu\":[1478688,203832],\"sh\":[1455200,203832],\"cn\":[1522032,203832]}],\n\"actors/bowser/bowser_eye_far_left_1.rgba16.png\": [64,32,4096,{\"jp\":[1599504,203832],\"us\":[1606720,203832],\"eu\":[1478688,203832],\"sh\":[1455200,203832],\"cn\":[1522032,203832]}],\n\"actors/bowser/bowser_eye_half_closed_0.rgba16.png\": [64,32,4096,{\"jp\":[1599504,187448],\"us\":[1606720,187448],\"eu\":[1478688,187448],\"sh\":[1455200,187448],\"cn\":[1522032,187448]}],\n\"actors/bowser/bowser_eye_half_closed_1.rgba16.png\": [64,32,4096,{\"jp\":[1599504,187448],\"us\":[1606720,187448],\"eu\":[1478688,187448],\"sh\":[1455200,187448],\"cn\":[1522032,187448]}],\n\"actors/bowser/bowser_eye_left_0.rgba16.png\": [64,32,4096,{\"jp\":[1599504,183352],\"us\":[1606720,183352],\"eu\":[1478688,183352],\"sh\":[1455200,183352],\"cn\":[1522032,183352]}],\n\"actors/bowser/bowser_eye_left_1.rgba16.png\": [64,32,4096,{\"jp\":[1599504,183352],\"us\":[1606720,183352],\"eu\":[1478688,183352],\"sh\":[1455200,183352],\"cn\":[1522032,183352]}],\n\"actors/bowser/bowser_eye_right_0.rgba16.png\": [64,32,4096,{\"jp\":[1599504,199736],\"us\":[1606720,199736],\"eu\":[1478688,199736],\"sh\":[1455200,199736],\"cn\":[1522032,199736]}],\n\"actors/bowser/bowser_eye_right_1.rgba16.png\": [64,32,4096,{\"jp\":[1599504,199736],\"us\":[1606720,199736],\"eu\":[1478688,199736],\"sh\":[1455200,199736],\"cn\":[1522032,199736]}],\n\"actors/bowser/bowser_eyebrow.rgba16.png\": [64,32,4096,{\"jp\":[1599504,130104],\"us\":[1606720,130104],\"eu\":[1478688,130104],\"sh\":[1455200,130104],\"cn\":[1522032,130104]}],\n\"actors/bowser/bowser_hair.rgba16.png\": [32,64,4096,{\"jp\":[1599504,166968],\"us\":[1606720,166968],\"eu\":[1478688,166968],\"sh\":[1455200,166968],\"cn\":[1522032,166968]}],\n\"actors/bowser/bowser_mouth_unused.rgba16.png\": [64,32,4096,{\"jp\":[1599504,160824],\"us\":[1606720,160824],\"eu\":[1478688,160824],\"sh\":[1455200,160824],\"cn\":[1522032,160824]}],\n\"actors/bowser/bowser_muzzle.rgba16.png\": [32,32,2048,{\"jp\":[1599504,134200],\"us\":[1606720,134200],\"eu\":[1478688,134200],\"sh\":[1455200,134200],\"cn\":[1522032,134200]}],\n\"actors/bowser/bowser_nostrils.rgba16.png\": [64,32,4096,{\"jp\":[1599504,136248],\"us\":[1606720,136248],\"eu\":[1478688,136248],\"sh\":[1455200,136248],\"cn\":[1522032,136248]}],\n\"actors/bowser/bowser_shell.rgba16.png\": [32,32,2048,{\"jp\":[1599504,128056],\"us\":[1606720,128056],\"eu\":[1478688,128056],\"sh\":[1455200,128056],\"cn\":[1522032,128056]}],\n\"actors/bowser/bowser_shell_edge.rgba16.png\": [32,32,2048,{\"jp\":[1599504,154680],\"us\":[1606720,154680],\"eu\":[1478688,154680],\"sh\":[1455200,154680],\"cn\":[1522032,154680]}],\n\"actors/bowser/bowser_tongue.rgba16.png\": [32,64,4096,{\"jp\":[1599504,148536],\"us\":[1606720,148536],\"eu\":[1478688,148536],\"sh\":[1455200,148536],\"cn\":[1522032,148536]}],\n\"actors/bowser/bowser_upper_face.rgba16.png\": [32,32,2048,{\"jp\":[1599504,164920],\"us\":[1606720,164920],\"eu\":[1478688,164920],\"sh\":[1455200,164920],\"cn\":[1522032,164920]}],\n\"actors/bowser_flame/bowser_flame_0.rgba16.png\": [64,64,8192,{\"jp\":[1599504,0],\"us\":[1606720,0],\"eu\":[1478688,0],\"sh\":[1455200,0],\"cn\":[1522032,0]}],\n\"actors/bowser_flame/bowser_flame_1.rgba16.png\": [64,64,8192,{\"jp\":[1599504,8192],\"us\":[1606720,8192],\"eu\":[1478688,8192],\"sh\":[1455200,8192],\"cn\":[1522032,8192]}],\n\"actors/bowser_flame/bowser_flame_10.rgba16.png\": [64,64,8192,{\"jp\":[1599504,81920],\"us\":[1606720,81920],\"eu\":[1478688,81920],\"sh\":[1455200,81920],\"cn\":[1522032,81920]}],\n\"actors/bowser_flame/bowser_flame_11.rgba16.png\": [64,64,8192,{\"jp\":[1599504,90112],\"us\":[1606720,90112],\"eu\":[1478688,90112],\"sh\":[1455200,90112],\"cn\":[1522032,90112]}],\n\"actors/bowser_flame/bowser_flame_12.rgba16.png\": [64,64,8192,{\"jp\":[1599504,98304],\"us\":[1606720,98304],\"eu\":[1478688,98304],\"sh\":[1455200,98304],\"cn\":[1522032,98304]}],\n\"actors/bowser_flame/bowser_flame_13.rgba16.png\": [64,64,8192,{\"jp\":[1599504,106496],\"us\":[1606720,106496],\"eu\":[1478688,106496],\"sh\":[1455200,106496],\"cn\":[1522032,106496]}],\n\"actors/bowser_flame/bowser_flame_2.rgba16.png\": [64,64,8192,{\"jp\":[1599504,16384],\"us\":[1606720,16384],\"eu\":[1478688,16384],\"sh\":[1455200,16384],\"cn\":[1522032,16384]}],\n\"actors/bowser_flame/bowser_flame_3.rgba16.png\": [64,64,8192,{\"jp\":[1599504,24576],\"us\":[1606720,24576],\"eu\":[1478688,24576],\"sh\":[1455200,24576],\"cn\":[1522032,24576]}],\n\"actors/bowser_flame/bowser_flame_4.rgba16.png\": [64,64,8192,{\"jp\":[1599504,32768],\"us\":[1606720,32768],\"eu\":[1478688,32768],\"sh\":[1455200,32768],\"cn\":[1522032,32768]}],\n\"actors/bowser_flame/bowser_flame_5.rgba16.png\": [64,64,8192,{\"jp\":[1599504,40960],\"us\":[1606720,40960],\"eu\":[1478688,40960],\"sh\":[1455200,40960],\"cn\":[1522032,40960]}],\n\"actors/bowser_flame/bowser_flame_6.rgba16.png\": [64,64,8192,{\"jp\":[1599504,49152],\"us\":[1606720,49152],\"eu\":[1478688,49152],\"sh\":[1455200,49152],\"cn\":[1522032,49152]}],\n\"actors/bowser_flame/bowser_flame_7.rgba16.png\": [64,64,8192,{\"jp\":[1599504,57344],\"us\":[1606720,57344],\"eu\":[1478688,57344],\"sh\":[1455200,57344],\"cn\":[1522032,57344]}],\n\"actors/bowser_flame/bowser_flame_8.rgba16.png\": [64,64,8192,{\"jp\":[1599504,65536],\"us\":[1606720,65536],\"eu\":[1478688,65536],\"sh\":[1455200,65536],\"cn\":[1522032,65536]}],\n\"actors/bowser_flame/bowser_flame_9.rgba16.png\": [64,64,8192,{\"jp\":[1599504,73728],\"us\":[1606720,73728],\"eu\":[1478688,73728],\"sh\":[1455200,73728],\"cn\":[1522032,73728]}],\n\"actors/breakable_box/cork_box_surface.rgba16.png\": [32,32,2048,{\"jp\":[2032944,74384],\"us\":[2040320,74384],\"eu\":[1912288,74384],\"sh\":[1888800,74384],\"cn\":[1955632,74384]}],\n\"actors/breakable_box/crazy_box_surface.rgba16.png\": [32,32,2048,{\"jp\":[2032944,72336],\"us\":[2040320,72336],\"eu\":[1912288,72336],\"sh\":[1888800,72336],\"cn\":[1955632,72336]}],\n\"actors/bub/bub_eye_border.rgba16.png\": [32,32,2048,{\"jp\":[1568640,5128],\"us\":[1575856,5128],\"eu\":[1447824,5128],\"sh\":[1424336,5128],\"cn\":[1491168,5128]}],\n\"actors/bub/bub_eyes.rgba16.png\": [64,32,4096,{\"jp\":[1568640,1032],\"us\":[1575856,1032],\"eu\":[1447824,1032],\"sh\":[1424336,1032],\"cn\":[1491168,1032]}],\n\"actors/bub/bub_fins.rgba16.png\": [32,32,2048,{\"jp\":[1568640,7176],\"us\":[1575856,7176],\"eu\":[1447824,7176],\"sh\":[1424336,7176],\"cn\":[1491168,7176]}],\n\"actors/bub/bub_scales.rgba16.png\": [64,32,4096,{\"jp\":[1568640,9224],\"us\":[1575856,9224],\"eu\":[1447824,9224],\"sh\":[1424336,9224],\"cn\":[1491168,9224]}],\n\"actors/bubba/bubba_eye_border.rgba16.png\": [32,32,2048,{\"jp\":[1568640,5128],\"us\":[1575856,5128],\"eu\":[1447824,5128],\"sh\":[1424336,5128],\"cn\":[1491168,5128]}],\n\"actors/bubba/bubba_eyes_unused.rgba16.png\": [64,32,4096,{\"jp\":[1568640,1032],\"us\":[1575856,1032],\"eu\":[1447824,1032],\"sh\":[1424336,1032],\"cn\":[1491168,1032]}],\n\"actors/bubba/bubba_fins.rgba16.png\": [32,32,2048,{\"jp\":[1568640,7176],\"us\":[1575856,7176],\"eu\":[1447824,7176],\"sh\":[1424336,7176],\"cn\":[1491168,7176]}],\n\"actors/bubba/bubba_scales.rgba16.png\": [64,64,8192,{\"jp\":[1568640,9224],\"us\":[1575856,9224],\"eu\":[1447824,9224],\"sh\":[1424336,9224],\"cn\":[1491168,9224]}],\n\"actors/bubba/bubba_sunglasses.rgba16.png\": [16,32,1024,{\"jp\":[1568640,8],\"us\":[1575856,8],\"eu\":[1447824,8],\"sh\":[1424336,8],\"cn\":[1491168,8]}],\n\"actors/bubble/bubble.rgba16.png\": [32,32,2048,{\"jp\":[1125200,118112],\"us\":[1132368,118112],\"eu\":[1004336,118112],\"sh\":[980848,118112],\"cn\":[1047664,118112]}],\n\"actors/bubble/mr_i_bubble.rgba16.png\": [32,32,2048,{\"jp\":[1125200,120160],\"us\":[1132368,120160],\"eu\":[1004336,120160],\"sh\":[980848,120160],\"cn\":[1047664,120160]}],\n\"actors/bullet_bill/bullet_bill_eye.rgba16.png\": [64,32,4096,{\"jp\":[1215456,47784],\"us\":[1222624,47784],\"eu\":[1094592,47784],\"sh\":[1071104,47784],\"cn\":[1137936,47784]}],\n\"actors/bullet_bill/bullet_bill_mouth.rgba16.png\": [64,32,4096,{\"jp\":[1215456,51880],\"us\":[1222624,51880],\"eu\":[1094592,51880],\"sh\":[1071104,51880],\"cn\":[1137936,51880]}],\n\"actors/bully/bully_eye.rgba16.png\": [32,32,2048,{\"jp\":[1249376,9320],\"us\":[1256544,9320],\"eu\":[1128512,9320],\"sh\":[1105024,9320],\"cn\":[1171856,9320]}],\n\"actors/bully/bully_horn.rgba16.png\": [16,16,512,{\"jp\":[1249376,224],\"us\":[1256544,224],\"eu\":[1128512,224],\"sh\":[1105024,224],\"cn\":[1171856,224]}],\n\"actors/bully/bully_left_side.rgba16.png\": [32,64,4096,{\"jp\":[1249376,1128],\"us\":[1256544,1128],\"eu\":[1128512,1128],\"sh\":[1105024,1128],\"cn\":[1171856,1128]}],\n\"actors/bully/bully_right_side.rgba16.png\": [32,64,4096,{\"jp\":[1249376,5224],\"us\":[1256544,5224],\"eu\":[1128512,5224],\"sh\":[1105024,5224],\"cn\":[1171856,5224]}],\n\"actors/burn_smoke/burn_smoke.ia16.png\": [32,32,2048,{\"jp\":[1125200,137216],\"us\":[1132368,137216],\"eu\":[1004336,137216],\"sh\":[980848,137216],\"cn\":[1047664,137216]}],\n\"actors/butterfly/butterfly_wing.rgba16.png\": [32,64,4096,{\"jp\":[2094912,17320],\"us\":[2102288,17320],\"eu\":[1974256,17320],\"sh\":[1950768,17320],\"cn\":[2017600,17320]}],\n\"actors/cannon_barrel/cannon_barrel.rgba16.png\": [32,32,2048,{\"jp\":[2032944,22696],\"us\":[2040320,22696],\"eu\":[1912288,22696],\"sh\":[1888800,22696],\"cn\":[1955632,22696]}],\n\"actors/cannon_base/cannon_base.rgba16.png\": [32,32,2048,{\"jp\":[2032944,18872],\"us\":[2040320,18872],\"eu\":[1912288,18872],\"sh\":[1888800,18872],\"cn\":[1955632,18872]}],\n\"actors/cannon_lid/cannon_lid.rgba16.png\": [32,32,2048,{\"jp\":[2032944,16472],\"us\":[2040320,16472],\"eu\":[1912288,16472],\"sh\":[1888800,16472],\"cn\":[1955632,16472]}],\n\"actors/capswitch/cap_switch_base.rgba16.png\": [16,4,128,{\"jp\":[1457744,11336],\"us\":[1464912,11336],\"eu\":[1336880,11336],\"sh\":[1313392,11336],\"cn\":[1380224,11336]}],\n\"actors/capswitch/cap_switch_head.ia16.png\": [32,64,4096,{\"jp\":[1457744,7240],\"us\":[1464912,7240],\"eu\":[1336880,7240],\"sh\":[1313392,7240],\"cn\":[1380224,7240]}],\n\"actors/chain_ball/chain_ball.rgba16.png\": [32,32,2048,{\"jp\":[1844608,133864],\"us\":[1851952,133864],\"eu\":[1723920,133864],\"sh\":[1700432,133864],\"cn\":[1767264,133864]}],\n\"actors/chain_chomp/chain_chomp_bright_shine.rgba16.png\": [32,32,2048,{\"jp\":[1844608,136144],\"us\":[1851952,136144],\"eu\":[1723920,136144],\"sh\":[1700432,136144],\"cn\":[1767264,136144]}],\n\"actors/chain_chomp/chain_chomp_dull_shine.rgba16.png\": [32,32,2048,{\"jp\":[1844608,138192],\"us\":[1851952,138192],\"eu\":[1723920,138192],\"sh\":[1700432,138192],\"cn\":[1767264,138192]}],\n\"actors/chain_chomp/chain_chomp_eye.rgba16.png\": [32,32,2048,{\"jp\":[1844608,144336],\"us\":[1851952,144336],\"eu\":[1723920,144336],\"sh\":[1700432,144336],\"cn\":[1767264,144336]}],\n\"actors/chain_chomp/chain_chomp_tongue.rgba16.png\": [32,32,2048,{\"jp\":[1844608,140240],\"us\":[1851952,140240],\"eu\":[1723920,140240],\"sh\":[1700432,140240],\"cn\":[1767264,140240]}],\n\"actors/chain_chomp/chain_chomp_tooth.rgba16.png\": [32,32,2048,{\"jp\":[1462368,27376],\"us\":[1469536,27376],\"eu\":[1341504,27376],\"sh\":[1318016,27376],\"cn\":[1384848,27376]}],\n\"actors/chair/chair_bottom.rgba16.png\": [32,16,1024,{\"jp\":[1462368,16480],\"us\":[1469536,16480],\"eu\":[1341504,16480],\"sh\":[1318016,16480],\"cn\":[1384848,16480]}],\n\"actors/chair/chair_front.rgba16.png\": [32,32,2048,{\"jp\":[1462368,12384],\"us\":[1469536,12384],\"eu\":[1341504,12384],\"sh\":[1318016,12384],\"cn\":[1384848,12384]}],\n\"actors/chair/chair_leg.rgba16.png\": [32,32,2048,{\"jp\":[1462368,14432],\"us\":[1469536,14432],\"eu\":[1341504,14432],\"sh\":[1318016,14432],\"cn\":[1384848,14432]}],\n\"actors/chair/chair_surface_unused.rgba16.png\": [32,32,2048,{\"jp\":[1462368,17504],\"us\":[1469536,17504],\"eu\":[1341504,17504],\"sh\":[1318016,17504],\"cn\":[1384848,17504]}],\n\"actors/checkerboard_platform/checkerboard_platform.rgba16.png\": [32,32,2048,{\"jp\":[2032944,52288],\"us\":[2040320,52288],\"eu\":[1912288,52288],\"sh\":[1888800,52288],\"cn\":[1955632,52288]}],\n\"actors/checkerboard_platform/checkerboard_platform_side.rgba16.png\": [32,16,1024,{\"jp\":[2032944,51264],\"us\":[2040320,51264],\"eu\":[1912288,51264],\"sh\":[1888800,51264],\"cn\":[1955632,51264]}],\n\"actors/chillychief/chill_bully_eye.rgba16.png\": [32,32,2048,{\"jp\":[1249376,9320],\"us\":[1256544,9320],\"eu\":[1128512,9320],\"sh\":[1105024,9320],\"cn\":[1171856,9320]}],\n\"actors/chillychief/chill_bully_left_side.rgba16.png\": [32,64,4096,{\"jp\":[1979680,96],\"us\":[1987056,96],\"eu\":[1859024,96],\"sh\":[1835536,96],\"cn\":[1902368,96]}],\n\"actors/chillychief/chill_bully_right_side.rgba16.png\": [32,64,4096,{\"jp\":[1979680,4192],\"us\":[1987056,4192],\"eu\":[1859024,4192],\"sh\":[1835536,4192],\"cn\":[1902368,4192]}],\n\"actors/chuckya/chuckya_body_arm_left_side.rgba16.png\": [32,64,4096,{\"jp\":[2032944,32632],\"us\":[2040320,32632],\"eu\":[1912288,32632],\"sh\":[1888800,32632],\"cn\":[1955632,32632]}],\n\"actors/chuckya/chuckya_body_arm_right_side.rgba16.png\": [32,64,4096,{\"jp\":[2032944,36728],\"us\":[2040320,36728],\"eu\":[1912288,36728],\"sh\":[1888800,36728],\"cn\":[1955632,36728]}],\n\"actors/chuckya/chuckya_eyes.rgba16.png\": [32,64,4096,{\"jp\":[2032944,26488],\"us\":[2040320,26488],\"eu\":[1912288,26488],\"sh\":[1888800,26488],\"cn\":[1955632,26488]}],\n\"actors/chuckya/chuckya_hand_antenna.rgba16.png\": [32,32,2048,{\"jp\":[2032944,30584],\"us\":[2040320,30584],\"eu\":[1912288,30584],\"sh\":[1888800,30584],\"cn\":[1955632,30584]}],\n\"actors/clam_shell/clam_shell.rgba16.png\": [32,32,2048,{\"jp\":[1285392,48],\"us\":[1292560,48],\"eu\":[1164528,48],\"sh\":[1141040,48],\"cn\":[1207872,48]}],\n\"actors/clam_shell/clam_shell_mouth.rgba16.png\": [32,32,2048,{\"jp\":[1285392,2096],\"us\":[1292560,2096],\"eu\":[1164528,2096],\"sh\":[1141040,2096],\"cn\":[1207872,2096]}],\n\"actors/coin/coin_front.ia16.png\": [32,32,2048,{\"jp\":[2094912,22400],\"us\":[2102288,22400],\"eu\":[1974256,22400],\"sh\":[1950768,22400],\"cn\":[2017600,22400]}],\n\"actors/coin/coin_side.ia16.png\": [32,32,2048,{\"jp\":[2094912,26496],\"us\":[2102288,26496],\"eu\":[1974256,26496],\"sh\":[1950768,26496],\"cn\":[2017600,26496]}],\n\"actors/coin/coin_tilt_left.ia16.png\": [32,32,2048,{\"jp\":[2094912,28544],\"us\":[2102288,28544],\"eu\":[1974256,28544],\"sh\":[1950768,28544],\"cn\":[2017600,28544]}],\n\"actors/coin/coin_tilt_right.ia16.png\": [32,32,2048,{\"jp\":[2094912,24448],\"us\":[2102288,24448],\"eu\":[1974256,24448],\"sh\":[1950768,24448],\"cn\":[2017600,24448]}],\n\"actors/cyan_fish/cyan_fish.rgba16.png\": [32,32,2048,{\"jp\":[1802256,54376],\"us\":[1809600,54376],\"eu\":[1681568,54376],\"sh\":[1658080,54376],\"cn\":[1724912,54376]}],\n\"actors/dirt/dirt_particle.rgba16.png\": [16,16,512,{\"jp\":[2094912,179704],\"us\":[2102288,179704],\"eu\":[1974256,179704],\"sh\":[1950768,179704],\"cn\":[2017600,179704]}],\n\"actors/door/bbh_door.rgba16.png\": [32,64,4096,{\"jp\":[2094912,66832],\"us\":[2102288,66832],\"eu\":[1974256,66832],\"sh\":[1950768,66832],\"cn\":[2017600,66832]}],\n\"actors/door/bbh_door_overlay.rgba16.png\": [32,32,2048,{\"jp\":[2094912,70928],\"us\":[2102288,70928],\"eu\":[1974256,70928],\"sh\":[1950768,70928],\"cn\":[2017600,70928]}],\n\"actors/door/door_lock.rgba16.png\": [16,32,1024,{\"jp\":[2094912,79120],\"us\":[2102288,79120],\"eu\":[1974256,79120],\"sh\":[1950768,79120],\"cn\":[2017600,79120]}],\n\"actors/door/hmc_mural_door.rgba16.png\": [32,64,4096,{\"jp\":[2094912,60688],\"us\":[2102288,60688],\"eu\":[1974256,60688],\"sh\":[1950768,60688],\"cn\":[2017600,60688]}],\n\"actors/door/hmc_mural_door_overlay.rgba16.png\": [32,32,2048,{\"jp\":[2094912,64784],\"us\":[2102288,64784],\"eu\":[1974256,64784],\"sh\":[1950768,64784],\"cn\":[2017600,64784]}],\n\"actors/door/metal_door.rgba16.png\": [32,64,4096,{\"jp\":[2094912,54544],\"us\":[2102288,54544],\"eu\":[1974256,54544],\"sh\":[1950768,54544],\"cn\":[2017600,54544]}],\n\"actors/door/metal_door_overlay.rgba16.png\": [32,32,2048,{\"jp\":[2094912,58640],\"us\":[2102288,58640],\"eu\":[1974256,58640],\"sh\":[1950768,58640],\"cn\":[2017600,58640]}],\n\"actors/door/one_star_door_sign.rgba16.png\": [32,32,2048,{\"jp\":[2094912,75024],\"us\":[2102288,75024],\"eu\":[1974256,75024],\"sh\":[1950768,75024],\"cn\":[2017600,75024]}],\n\"actors/door/polished_wooden_door.rgba16.png\": [32,64,4096,{\"jp\":[2094912,40208],\"us\":[2102288,40208],\"eu\":[1974256,40208],\"sh\":[1950768,40208],\"cn\":[2017600,40208]}],\n\"actors/door/polished_wooden_door_overlay.rgba16.png\": [32,64,4096,{\"jp\":[2094912,44304],\"us\":[2102288,44304],\"eu\":[1974256,44304],\"sh\":[1950768,44304],\"cn\":[2017600,44304]}],\n\"actors/door/rough_wooden_door.rgba16.png\": [32,64,4096,{\"jp\":[2094912,48400],\"us\":[2102288,48400],\"eu\":[1974256,48400],\"sh\":[1950768,48400],\"cn\":[2017600,48400]}],\n\"actors/door/rough_wooden_door_overlay.rgba16.png\": [32,32,2048,{\"jp\":[2094912,52496],\"us\":[2102288,52496],\"eu\":[1974256,52496],\"sh\":[1950768,52496],\"cn\":[2017600,52496]}],\n\"actors/door/three_star_door_sign.rgba16.png\": [32,32,2048,{\"jp\":[2094912,77072],\"us\":[2102288,77072],\"eu\":[1974256,77072],\"sh\":[1950768,77072],\"cn\":[2017600,77072]}],\n\"actors/door/zero_star_door_sign.rgba16.png\": [32,32,2048,{\"jp\":[2094912,72976],\"us\":[2102288,72976],\"eu\":[1974256,72976],\"sh\":[1950768,72976],\"cn\":[2017600,72976]}],\n\"actors/dorrie/dorrie_eye.rgba16.png\": [16,16,512,{\"jp\":[1991184,39840],\"us\":[1998560,39840],\"eu\":[1870528,39840],\"sh\":[1847040,39840],\"cn\":[1913872,39840]}],\n\"actors/dorrie/dorrie_skin.rgba16.png\": [32,64,4096,{\"jp\":[1991184,40352],\"us\":[1998560,40352],\"eu\":[1870528,40352],\"sh\":[1847040,40352],\"cn\":[1913872,40352]}],\n\"actors/dorrie/dorrie_tongue.rgba16.png\": [32,32,2048,{\"jp\":[1844608,140240],\"us\":[1851952,140240],\"eu\":[1723920,140240],\"sh\":[1700432,140240],\"cn\":[1767264,140240]}],\n\"actors/exclamation_box/exclamation_box_front.rgba16.png\": [32,32,2048,{\"jp\":[2032944,95784],\"us\":[2040320,95784],\"eu\":[1912288,95784],\"sh\":[1888800,95784],\"cn\":[1955632,95784]}],\n\"actors/exclamation_box/exclamation_box_side.rgba16.png\": [64,32,4096,{\"jp\":[2032944,97832],\"us\":[2040320,97832],\"eu\":[1912288,97832],\"sh\":[1888800,97832],\"cn\":[1955632,97832]}],\n\"actors/exclamation_box/metal_cap_box_front.rgba16.png\": [32,32,2048,{\"jp\":[2032944,83496],\"us\":[2040320,83496],\"eu\":[1912288,83496],\"sh\":[1888800,83496],\"cn\":[1955632,83496]}],\n\"actors/exclamation_box/metal_cap_box_side.rgba16.png\": [64,32,4096,{\"jp\":[2032944,85544],\"us\":[2040320,85544],\"eu\":[1912288,85544],\"sh\":[1888800,85544],\"cn\":[1955632,85544]}],\n\"actors/exclamation_box/vanish_cap_box_front.rgba16.png\": [32,32,2048,{\"jp\":[2032944,77352],\"us\":[2040320,77352],\"eu\":[1912288,77352],\"sh\":[1888800,77352],\"cn\":[1955632,77352]}],\n\"actors/exclamation_box/vanish_cap_box_side.rgba16.png\": [32,64,4096,{\"jp\":[2032944,79400],\"us\":[2040320,79400],\"eu\":[1912288,79400],\"sh\":[1888800,79400],\"cn\":[1955632,79400]}],\n\"actors/exclamation_box/wing_cap_box_front.rgba16.png\": [32,32,2048,{\"jp\":[2032944,89640],\"us\":[2040320,89640],\"eu\":[1912288,89640],\"sh\":[1888800,89640],\"cn\":[1955632,89640]}],\n\"actors/exclamation_box/wing_cap_box_side.rgba16.png\": [32,64,4096,{\"jp\":[2032944,91688],\"us\":[2040320,91688],\"eu\":[1912288,91688],\"sh\":[1888800,91688],\"cn\":[1955632,91688]}],\n\"actors/exclamation_box_outline/exclamation_box_outline.rgba16.png\": [32,32,2048,{\"jp\":[2032944,151912],\"us\":[2040320,151912],\"eu\":[1912288,151912],\"sh\":[1888800,151912],\"cn\":[1955632,151912]}],\n\"actors/exclamation_box_outline/exclamation_point.rgba16.png\": [16,32,1024,{\"jp\":[2032944,154240],\"us\":[2040320,154240],\"eu\":[1912288,154240],\"sh\":[1888800,154240],\"cn\":[1955632,154240]}],\n\"actors/explosion/explosion_0.rgba16.png\": [32,32,2048,{\"jp\":[2094912,2568],\"us\":[2102288,2568],\"eu\":[1974256,2568],\"sh\":[1950768,2568],\"cn\":[2017600,2568]}],\n\"actors/explosion/explosion_1.rgba16.png\": [32,32,2048,{\"jp\":[2094912,4616],\"us\":[2102288,4616],\"eu\":[1974256,4616],\"sh\":[1950768,4616],\"cn\":[2017600,4616]}],\n\"actors/explosion/explosion_2.rgba16.png\": [32,32,2048,{\"jp\":[2094912,6664],\"us\":[2102288,6664],\"eu\":[1974256,6664],\"sh\":[1950768,6664],\"cn\":[2017600,6664]}],\n\"actors/explosion/explosion_3.rgba16.png\": [32,32,2048,{\"jp\":[2094912,8712],\"us\":[2102288,8712],\"eu\":[1974256,8712],\"sh\":[1950768,8712],\"cn\":[2017600,8712]}],\n\"actors/explosion/explosion_4.rgba16.png\": [32,32,2048,{\"jp\":[2094912,10760],\"us\":[2102288,10760],\"eu\":[1974256,10760],\"sh\":[1950768,10760],\"cn\":[2017600,10760]}],\n\"actors/explosion/explosion_5.rgba16.png\": [32,32,2048,{\"jp\":[2094912,12808],\"us\":[2102288,12808],\"eu\":[1974256,12808],\"sh\":[1950768,12808],\"cn\":[2017600,12808]}],\n\"actors/explosion/explosion_6.rgba16.png\": [32,32,2048,{\"jp\":[2094912,14856],\"us\":[2102288,14856],\"eu\":[1974256,14856],\"sh\":[1950768,14856],\"cn\":[2017600,14856]}],\n\"actors/eyerok/eyerok_bricks.rgba16.png\": [32,32,2048,{\"jp\":[1327760,36160],\"us\":[1334928,36160],\"eu\":[1206896,36160],\"sh\":[1183408,36160],\"cn\":[1250240,36160]}],\n\"actors/eyerok/eyerok_eye_closed.rgba16.png\": [32,32,2048,{\"jp\":[1327760,44352],\"us\":[1334928,44352],\"eu\":[1206896,44352],\"sh\":[1183408,44352],\"cn\":[1250240,44352]}],\n\"actors/eyerok/eyerok_eye_mostly_closed.rgba16.png\": [32,32,2048,{\"jp\":[1327760,42304],\"us\":[1334928,42304],\"eu\":[1206896,42304],\"sh\":[1183408,42304],\"cn\":[1250240,42304]}],\n\"actors/eyerok/eyerok_eye_mostly_open.rgba16.png\": [32,32,2048,{\"jp\":[1327760,40256],\"us\":[1334928,40256],\"eu\":[1206896,40256],\"sh\":[1183408,40256],\"cn\":[1250240,40256]}],\n\"actors/eyerok/eyerok_eye_open.rgba16.png\": [32,32,2048,{\"jp\":[1327760,38208],\"us\":[1334928,38208],\"eu\":[1206896,38208],\"sh\":[1183408,38208],\"cn\":[1250240,38208]}],\n\"actors/flame/flame_0.ia16.png\": [32,32,2048,{\"jp\":[2094912,95008],\"us\":[2102288,95008],\"eu\":[1974256,95008],\"sh\":[1950768,95008],\"cn\":[2017600,95008]}],\n\"actors/flame/flame_1.ia16.png\": [32,32,2048,{\"jp\":[2094912,97056],\"us\":[2102288,97056],\"eu\":[1974256,97056],\"sh\":[1950768,97056],\"cn\":[2017600,97056]}],\n\"actors/flame/flame_2.ia16.png\": [32,32,2048,{\"jp\":[2094912,99104],\"us\":[2102288,99104],\"eu\":[1974256,99104],\"sh\":[1950768,99104],\"cn\":[2017600,99104]}],\n\"actors/flame/flame_3.ia16.png\": [32,32,2048,{\"jp\":[2094912,101152],\"us\":[2102288,101152],\"eu\":[1974256,101152],\"sh\":[1950768,101152],\"cn\":[2017600,101152]}],\n\"actors/flame/flame_4.ia16.png\": [32,32,2048,{\"jp\":[2094912,103200],\"us\":[2102288,103200],\"eu\":[1974256,103200],\"sh\":[1950768,103200],\"cn\":[2017600,103200]}],\n\"actors/flame/flame_5.ia16.png\": [32,32,2048,{\"jp\":[2094912,105248],\"us\":[2102288,105248],\"eu\":[1974256,105248],\"sh\":[1950768,105248],\"cn\":[2017600,105248]}],\n\"actors/flame/flame_6.ia16.png\": [32,32,2048,{\"jp\":[2094912,107296],\"us\":[2102288,107296],\"eu\":[1974256,107296],\"sh\":[1950768,107296],\"cn\":[2017600,107296]}],\n\"actors/flame/flame_7.ia16.png\": [32,32,2048,{\"jp\":[2094912,109344],\"us\":[2102288,109344],\"eu\":[1974256,109344],\"sh\":[1950768,109344],\"cn\":[2017600,109344]}],\n\"actors/flyguy/flyguy_cloth_wrinkle.rgba16.png\": [64,32,4096,{\"jp\":[2032944,57480],\"us\":[2040320,57480],\"eu\":[1912288,57480],\"sh\":[1888800,57480],\"cn\":[1955632,57480]}],\n\"actors/flyguy/flyguy_face.rgba16.png\": [32,32,2048,{\"jp\":[2032944,61576],\"us\":[2040320,61576],\"eu\":[1912288,61576],\"sh\":[1888800,61576],\"cn\":[1955632,61576]}],\n\"actors/flyguy/flyguy_propeller.ia16.png\": [32,32,2048,{\"jp\":[2032944,63624],\"us\":[2040320,63624],\"eu\":[1912288,63624],\"sh\":[1888800,63624],\"cn\":[1955632,63624]}],\n\"actors/fwoosh/fwoosh_face.ia16.png\": [32,32,2048,{\"jp\":[1377744,88072],\"us\":[1384912,88072],\"eu\":[1256880,88072],\"sh\":[1233392,88072],\"cn\":[1300224,88072]}],\n\"actors/goomba/goomba_body.rgba16.png\": [32,32,2048,{\"jp\":[2032944,103728],\"us\":[2040320,103728],\"eu\":[1912288,103728],\"sh\":[1888800,103728],\"cn\":[1955632,103728]}],\n\"actors/goomba/goomba_face.rgba16.png\": [32,32,2048,{\"jp\":[2032944,105776],\"us\":[2040320,105776],\"eu\":[1912288,105776],\"sh\":[1888800,105776],\"cn\":[1955632,105776]}],\n\"actors/goomba/goomba_face_blink.rgba16.png\": [32,32,2048,{\"jp\":[2032944,107824],\"us\":[2040320,107824],\"eu\":[1912288,107824],\"sh\":[1888800,107824],\"cn\":[1955632,107824]}],\n\"actors/haunted_cage/bbh_cage_bars.rgba16.png\": [32,32,2048,{\"jp\":[1462368,55944],\"us\":[1469536,55944],\"eu\":[1341504,55944],\"sh\":[1318016,55944],\"cn\":[1384848,55944]}],\n\"actors/haunted_cage/bbh_cage_double_ornament.rgba16.png\": [32,32,2048,{\"jp\":[1462368,51848],\"us\":[1469536,51848],\"eu\":[1341504,51848],\"sh\":[1318016,51848],\"cn\":[1384848,51848]}],\n\"actors/haunted_cage/bbh_cage_floor.rgba16.png\": [32,32,2048,{\"jp\":[1462368,49800],\"us\":[1469536,49800],\"eu\":[1341504,49800],\"sh\":[1318016,49800],\"cn\":[1384848,49800]}],\n\"actors/haunted_cage/bbh_cage_garbage.rgba16.png\": [32,32,2048,{\"jp\":[1462368,57992],\"us\":[1469536,57992],\"eu\":[1341504,57992],\"sh\":[1318016,57992],\"cn\":[1384848,57992]}],\n\"actors/haunted_cage/bbh_cage_ornament.rgba16.png\": [32,16,1024,{\"jp\":[1462368,53896],\"us\":[1469536,53896],\"eu\":[1341504,53896],\"sh\":[1318016,53896],\"cn\":[1384848,53896]}],\n\"actors/haunted_cage/bbh_cage_wooden_base.rgba16.png\": [32,16,1024,{\"jp\":[1462368,54920],\"us\":[1469536,54920],\"eu\":[1341504,54920],\"sh\":[1318016,54920],\"cn\":[1384848,54920]}],\n\"actors/heart/spinning_heart.rgba16.png\": [32,32,2048,{\"jp\":[2032944,55264],\"us\":[2040320,55264],\"eu\":[1912288,55264],\"sh\":[1888800,55264],\"cn\":[1955632,55264]}],\n\"actors/heave_ho/heave-ho_arm_ornament.rgba16.png\": [32,32,2048,{\"jp\":[1215456,68040],\"us\":[1222624,68040],\"eu\":[1094592,68040],\"sh\":[1071104,68040],\"cn\":[1137936,68040]}],\n\"actors/heave_ho/heave-ho_face.rgba16.png\": [32,32,2048,{\"jp\":[1215456,59848],\"us\":[1222624,59848],\"eu\":[1094592,59848],\"sh\":[1071104,59848],\"cn\":[1137936,59848]}],\n\"actors/heave_ho/heave-ho_logo.rgba16.png\": [64,32,4096,{\"jp\":[1215456,63944],\"us\":[1222624,63944],\"eu\":[1094592,63944],\"sh\":[1071104,63944],\"cn\":[1137936,63944]}],\n\"actors/heave_ho/heave-ho_platform.rgba16.png\": [32,32,2048,{\"jp\":[1215456,61896],\"us\":[1222624,61896],\"eu\":[1094592,61896],\"sh\":[1071104,61896],\"cn\":[1137936,61896]}],\n\"actors/heave_ho/heave-ho_roller.rgba16.png\": [16,16,512,{\"jp\":[1215456,70088],\"us\":[1222624,70088],\"eu\":[1094592,70088],\"sh\":[1071104,70088],\"cn\":[1137936,70088]}],\n\"actors/heave_ho/heave-ho_turnkey.rgba16.png\": [32,32,2048,{\"jp\":[1215456,70600],\"us\":[1222624,70600],\"eu\":[1094592,70600],\"sh\":[1071104,70600],\"cn\":[1137936,70600]}],\n\"actors/hoot/hoot_eyes.rgba16.png\": [32,32,2048,{\"jp\":[1215456,2592],\"us\":[1222624,2592],\"eu\":[1094592,2592],\"sh\":[1071104,2592],\"cn\":[1137936,2592]}],\n\"actors/hoot/hoot_wing.rgba16.png\": [32,32,2048,{\"jp\":[1215456,7760],\"us\":[1222624,7760],\"eu\":[1094592,7760],\"sh\":[1071104,7760],\"cn\":[1137936,7760]}],\n\"actors/hoot/hoot_wing_tip.rgba16.png\": [32,32,2048,{\"jp\":[1215456,9808],\"us\":[1222624,9808],\"eu\":[1094592,9808],\"sh\":[1071104,9808],\"cn\":[1137936,9808]}],\n\"actors/impact_ring/impact_ring_left_side.ia16.png\": [32,64,4096,{\"jp\":[1599504,117328],\"us\":[1606720,117328],\"eu\":[1478688,117328],\"sh\":[1455200,117328],\"cn\":[1522032,117328]}],\n\"actors/impact_ring/impact_ring_right_side.ia16.png\": [32,64,4096,{\"jp\":[1599504,121424],\"us\":[1606720,121424],\"eu\":[1478688,121424],\"sh\":[1455200,121424],\"cn\":[1522032,121424]}],\n\"actors/impact_smoke/impact_smoke_0.ia16.png\": [64,64,8192,{\"jp\":[1599504,371240],\"us\":[1606720,371576],\"eu\":[1478688,371576],\"sh\":[1455200,371576],\"cn\":[1522032,371576]}],\n\"actors/impact_smoke/impact_smoke_1.ia16.png\": [64,64,8192,{\"jp\":[1599504,379432],\"us\":[1606720,379768],\"eu\":[1478688,379768],\"sh\":[1455200,379768],\"cn\":[1522032,379768]}],\n\"actors/impact_smoke/impact_smoke_2.ia16.png\": [64,64,8192,{\"jp\":[1599504,387624],\"us\":[1606720,387960],\"eu\":[1478688,387960],\"sh\":[1455200,387960],\"cn\":[1522032,387960]}],\n\"actors/impact_smoke/impact_smoke_3.ia16.png\": [64,64,8192,{\"jp\":[1599504,395816],\"us\":[1606720,396152],\"eu\":[1478688,396152],\"sh\":[1455200,396152],\"cn\":[1522032,396152]}],\n\"actors/king_bobomb/bob-omb_buddy_body_unused.rgba16.png\": [64,64,8192,{\"jp\":[1257760,25720],\"us\":[1264928,25720],\"eu\":[1136896,25720],\"sh\":[1113408,25720],\"cn\":[1180240,25720]}],\n\"actors/king_bobomb/bob-omb_buddy_left_side_unused.rgba16.png\": [32,64,4096,{\"jp\":[1257760,120],\"us\":[1264928,120],\"eu\":[1136896,120],\"sh\":[1113408,120],\"cn\":[1180240,120]}],\n\"actors/king_bobomb/bob-omb_buddy_right_side_unused.rgba16.png\": [32,64,4096,{\"jp\":[1257760,4216],\"us\":[1264928,4216],\"eu\":[1136896,4216],\"sh\":[1113408,4216],\"cn\":[1180240,4216]}],\n\"actors/king_bobomb/king_bob-omb_arm.rgba16.png\": [32,32,2048,{\"jp\":[1257760,8312],\"us\":[1264928,8312],\"eu\":[1136896,8312],\"sh\":[1113408,8312],\"cn\":[1180240,8312]}],\n\"actors/king_bobomb/king_bob-omb_body_unused.rgba16.png\": [64,64,8192,{\"jp\":[1257760,10360],\"us\":[1264928,10360],\"eu\":[1136896,10360],\"sh\":[1113408,10360],\"cn\":[1180240,10360]}],\n\"actors/king_bobomb/king_bob-omb_crown_rim.rgba16.png\": [32,16,1024,{\"jp\":[1257760,24696],\"us\":[1264928,24696],\"eu\":[1136896,24696],\"sh\":[1113408,24696],\"cn\":[1180240,24696]}],\n\"actors/king_bobomb/king_bob-omb_eyes.rgba16.png\": [32,32,2048,{\"jp\":[1257760,18552],\"us\":[1264928,18552],\"eu\":[1136896,18552],\"sh\":[1113408,18552],\"cn\":[1180240,18552]}],\n\"actors/king_bobomb/king_bob-omb_eyes_blink.rgba16.png\": [32,32,2048,{\"jp\":[1257760,20600],\"us\":[1264928,20600],\"eu\":[1136896,20600],\"sh\":[1113408,20600],\"cn\":[1180240,20600]}],\n\"actors/king_bobomb/king_bob-omb_hand.rgba16.png\": [32,32,2048,{\"jp\":[1257760,22648],\"us\":[1264928,22648],\"eu\":[1136896,22648],\"sh\":[1113408,22648],\"cn\":[1180240,22648]}],\n\"actors/king_bobomb/king_bob-omb_left_side.rgba16.png\": [32,64,4096,{\"jp\":[1257760,33912],\"us\":[1264928,33912],\"eu\":[1136896,33912],\"sh\":[1113408,33912],\"cn\":[1180240,33912]}],\n\"actors/king_bobomb/king_bob-omb_right_side.rgba16.png\": [32,64,4096,{\"jp\":[1257760,38008],\"us\":[1264928,38008],\"eu\":[1136896,38008],\"sh\":[1113408,38008],\"cn\":[1180240,38008]}],\n\"actors/klepto/klepto_beak.rgba16.png\": [32,64,4096,{\"jp\":[1327760,4104],\"us\":[1334928,4104],\"eu\":[1206896,4104],\"sh\":[1183408,4104],\"cn\":[1250240,4104]}],\n\"actors/klepto/klepto_chest_tuft.rgba16.png\": [32,32,2048,{\"jp\":[1327760,8],\"us\":[1334928,8],\"eu\":[1206896,8],\"sh\":[1183408,8],\"cn\":[1250240,8]}],\n\"actors/klepto/klepto_eye.rgba16.png\": [32,32,2048,{\"jp\":[1327760,2056],\"us\":[1334928,2056],\"eu\":[1206896,2056],\"sh\":[1183408,2056],\"cn\":[1250240,2056]}],\n\"actors/klepto/klepto_wing.rgba16.png\": [64,32,4096,{\"jp\":[1327760,8200],\"us\":[1334928,8200],\"eu\":[1206896,8200],\"sh\":[1183408,8200],\"cn\":[1250240,8200]}],\n\"actors/klepto/klepto_wing_flap.rgba16.png\": [32,32,2048,{\"jp\":[1327760,12296],\"us\":[1334928,12296],\"eu\":[1206896,12296],\"sh\":[1183408,12296],\"cn\":[1250240,12296]}],\n\"actors/koopa/koopa_eye_border.rgba16.png\": [32,32,2048,{\"jp\":[1844608,22088],\"us\":[1851952,22088],\"eu\":[1723920,22088],\"sh\":[1700432,22088],\"cn\":[1767264,22088]}],\n\"actors/koopa/koopa_eyes_closed.rgba16.png\": [32,32,2048,{\"jp\":[1844608,20040],\"us\":[1851952,20040],\"eu\":[1723920,20040],\"sh\":[1700432,20040],\"cn\":[1767264,20040]}],\n\"actors/koopa/koopa_eyes_open.rgba16.png\": [32,32,2048,{\"jp\":[1844608,17992],\"us\":[1851952,17992],\"eu\":[1723920,17992],\"sh\":[1700432,17992],\"cn\":[1767264,17992]}],\n\"actors/koopa/koopa_nostrils.rgba16.png\": [64,32,4096,{\"jp\":[1844608,24136],\"us\":[1851952,24136],\"eu\":[1723920,24136],\"sh\":[1700432,24136],\"cn\":[1767264,24136]}],\n\"actors/koopa/koopa_shell_back.rgba16.png\": [32,32,2048,{\"jp\":[1844608,11848],\"us\":[1851952,11848],\"eu\":[1723920,11848],\"sh\":[1700432,11848],\"cn\":[1767264,11848]}],\n\"actors/koopa/koopa_shell_front.rgba16.png\": [32,32,2048,{\"jp\":[1844608,9800],\"us\":[1851952,9800],\"eu\":[1723920,9800],\"sh\":[1700432,9800],\"cn\":[1767264,9800]}],\n\"actors/koopa/koopa_shell_front_top.rgba16.png\": [32,32,2048,{\"jp\":[1844608,15944],\"us\":[1851952,15944],\"eu\":[1723920,15944],\"sh\":[1700432,15944],\"cn\":[1767264,15944]}],\n\"actors/koopa/koopa_shoe.rgba16.png\": [32,32,2048,{\"jp\":[1844608,13896],\"us\":[1851952,13896],\"eu\":[1723920,13896],\"sh\":[1700432,13896],\"cn\":[1767264,13896]}],\n\"actors/koopa_flag/koopa_flag_banner.rgba16.png\": [32,32,2048,{\"jp\":[1844608,72],\"us\":[1851952,72],\"eu\":[1723920,72],\"sh\":[1700432,72],\"cn\":[1767264,72]}],\n\"actors/koopa_shell/koopa_shell_back.rgba16.png\": [32,32,2048,{\"jp\":[1844608,11848],\"us\":[1851952,11848],\"eu\":[1723920,11848],\"sh\":[1700432,11848],\"cn\":[1767264,11848]}],\n\"actors/koopa_shell/koopa_shell_front.rgba16.png\": [32,32,2048,{\"jp\":[1844608,9800],\"us\":[1851952,9800],\"eu\":[1723920,9800],\"sh\":[1700432,9800],\"cn\":[1767264,9800]}],\n\"actors/lakitu_cameraman/lakitu_camera_lens.rgba16.png\": [16,16,512,{\"jp\":[1926752,14336],\"us\":[1934096,14336],\"eu\":[1806064,14336],\"sh\":[1782576,14336],\"cn\":[1849408,14336]}],\n\"actors/lakitu_cameraman/lakitu_cameraman_cloud_face_unused.rgba16.png\": [32,32,2048,{\"jp\":[1568640,60640],\"us\":[1575856,60640],\"eu\":[1447824,60640],\"sh\":[1424336,60640],\"cn\":[1491168,60640]}],\n\"actors/lakitu_cameraman/lakitu_cameraman_eyes_closed.rgba16.png\": [64,32,4096,{\"jp\":[1568640,66784],\"us\":[1575856,66784],\"eu\":[1447824,66784],\"sh\":[1424336,66784],\"cn\":[1491168,66784]}],\n\"actors/lakitu_cameraman/lakitu_cameraman_eyes_open.rgba16.png\": [64,32,4096,{\"jp\":[1568640,62688],\"us\":[1575856,62688],\"eu\":[1447824,62688],\"sh\":[1424336,62688],\"cn\":[1491168,62688]}],\n\"actors/lakitu_cameraman/lakitu_cameraman_frown.rgba16.png\": [32,32,2048,{\"jp\":[1568640,72928],\"us\":[1575856,72928],\"eu\":[1447824,72928],\"sh\":[1424336,72928],\"cn\":[1491168,72928]}],\n\"actors/lakitu_cameraman/lakitu_cameraman_shell.rgba16.png\": [32,32,2048,{\"jp\":[1568640,70880],\"us\":[1575856,70880],\"eu\":[1447824,70880],\"sh\":[1424336,70880],\"cn\":[1491168,70880]}],\n\"actors/lakitu_enemy/lakitu_enemy_cloud_face_unused.rgba16.png\": [32,32,2048,{\"jp\":[1568640,60640],\"us\":[1575856,60640],\"eu\":[1447824,60640],\"sh\":[1424336,60640],\"cn\":[1491168,60640]}],\n\"actors/lakitu_enemy/lakitu_enemy_eyes_closed.rgba16.png\": [64,32,4096,{\"jp\":[1568640,66784],\"us\":[1575856,66784],\"eu\":[1447824,66784],\"sh\":[1424336,66784],\"cn\":[1491168,66784]}],\n\"actors/lakitu_enemy/lakitu_enemy_eyes_open.rgba16.png\": [64,32,4096,{\"jp\":[1568640,62688],\"us\":[1575856,62688],\"eu\":[1447824,62688],\"sh\":[1424336,62688],\"cn\":[1491168,62688]}],\n\"actors/lakitu_enemy/lakitu_enemy_frown.rgba16.png\": [32,32,2048,{\"jp\":[1568640,72928],\"us\":[1575856,72928],\"eu\":[1447824,72928],\"sh\":[1424336,72928],\"cn\":[1491168,72928]}],\n\"actors/lakitu_enemy/lakitu_enemy_shell.rgba16.png\": [32,32,2048,{\"jp\":[1568640,70880],\"us\":[1575856,70880],\"eu\":[1447824,70880],\"sh\":[1424336,70880],\"cn\":[1491168,70880]}],\n\"actors/leaves/leaf.rgba16.png\": [16,16,512,{\"jp\":[2094912,117728],\"us\":[2102288,117728],\"eu\":[1974256,117728],\"sh\":[1950768,117728],\"cn\":[2017600,117728]}],\n\"actors/mad_piano/mad_piano_body.rgba16.png\": [16,32,1024,{\"jp\":[1462368,29424],\"us\":[1469536,29424],\"eu\":[1341504,29424],\"sh\":[1318016,29424],\"cn\":[1384848,29424]}],\n\"actors/mad_piano/mad_piano_keys.rgba16.png\": [32,16,1024,{\"jp\":[1462368,32496],\"us\":[1469536,32496],\"eu\":[1341504,32496],\"sh\":[1318016,32496],\"cn\":[1384848,32496]}],\n\"actors/mad_piano/mad_piano_keys_corner.rgba16.png\": [32,16,1024,{\"jp\":[1462368,30448],\"us\":[1469536,30448],\"eu\":[1341504,30448],\"sh\":[1318016,30448],\"cn\":[1384848,30448]}],\n\"actors/mad_piano/mad_piano_keys_edge.rgba16.png\": [32,16,1024,{\"jp\":[1462368,33520],\"us\":[1469536,33520],\"eu\":[1341504,33520],\"sh\":[1318016,33520],\"cn\":[1384848,33520]}],\n\"actors/mad_piano/mad_piano_mouth.rgba16.png\": [16,32,1024,{\"jp\":[1462368,31472],\"us\":[1469536,31472],\"eu\":[1341504,31472],\"sh\":[1318016,31472],\"cn\":[1384848,31472]}],\n\"actors/mad_piano/mad_piano_tooth.rgba16.png\": [32,32,2048,{\"jp\":[1462368,27376],\"us\":[1469536,27376],\"eu\":[1341504,27376],\"sh\":[1318016,27376],\"cn\":[1384848,27376]}],\n\"actors/manta/manta_eye.rgba16.png\": [32,32,2048,{\"jp\":[1285392,12192],\"us\":[1292560,12192],\"eu\":[1164528,12192],\"sh\":[1141040,12192],\"cn\":[1207872,12192]}],\n\"actors/manta/manta_fin_corner.rgba16.png\": [32,32,2048,{\"jp\":[1285392,6048],\"us\":[1292560,6048],\"eu\":[1164528,6048],\"sh\":[1141040,6048],\"cn\":[1207872,6048]}],\n\"actors/manta/manta_fin_edge.rgba16.png\": [64,32,4096,{\"jp\":[1285392,14240],\"us\":[1292560,14240],\"eu\":[1164528,14240],\"sh\":[1141040,14240],\"cn\":[1207872,14240]}],\n\"actors/manta/manta_gills.rgba16.png\": [32,64,4096,{\"jp\":[1285392,8096],\"us\":[1292560,8096],\"eu\":[1164528,8096],\"sh\":[1141040,8096],\"cn\":[1207872,8096]}],\n\"actors/mario/mario_eyes_center.rgba16.png\": [32,32,2048,{\"jp\":[1125200,12432],\"us\":[1132368,12432],\"eu\":[1004336,12432],\"sh\":[980848,12432],\"cn\":[1047664,12432]}],\n\"actors/mario/mario_eyes_closed.rgba16.png\": [32,32,2048,{\"jp\":[1125200,16528],\"us\":[1132368,16528],\"eu\":[1004336,16528],\"sh\":[980848,16528],\"cn\":[1047664,16528]}],\n\"actors/mario/mario_eyes_closed_unused_0.rgba16.png\": [32,32,2048,{\"jp\":[1125200,16528],\"us\":[1132368,16528],\"eu\":[1004336,16528],\"sh\":[980848,16528],\"cn\":[1047664,16528]}],\n\"actors/mario/mario_eyes_closed_unused_1.rgba16.png\": [32,32,2048,{\"jp\":[1125200,16528],\"us\":[1132368,16528],\"eu\":[1004336,16528],\"sh\":[980848,16528],\"cn\":[1047664,16528]}],\n\"actors/mario/mario_eyes_dead.rgba16.png\": [32,32,2048,{\"jp\":[1125200,30864],\"us\":[1132368,30864],\"eu\":[1004336,30864],\"sh\":[980848,30864],\"cn\":[1047664,30864]}],\n\"actors/mario/mario_eyes_down_unused.rgba16.png\": [32,32,2048,{\"jp\":[1125200,28816],\"us\":[1132368,28816],\"eu\":[1004336,28816],\"sh\":[980848,28816],\"cn\":[1047664,28816]}],\n\"actors/mario/mario_eyes_half_closed.rgba16.png\": [32,32,2048,{\"jp\":[1125200,14480],\"us\":[1132368,14480],\"eu\":[1004336,14480],\"sh\":[980848,14480],\"cn\":[1047664,14480]}],\n\"actors/mario/mario_eyes_left_unused.rgba16.png\": [32,32,2048,{\"jp\":[1125200,22672],\"us\":[1132368,22672],\"eu\":[1004336,22672],\"sh\":[980848,22672],\"cn\":[1047664,22672]}],\n\"actors/mario/mario_eyes_right_unused.rgba16.png\": [32,32,2048,{\"jp\":[1125200,24720],\"us\":[1132368,24720],\"eu\":[1004336,24720],\"sh\":[980848,24720],\"cn\":[1047664,24720]}],\n\"actors/mario/mario_eyes_up_unused.rgba16.png\": [32,32,2048,{\"jp\":[1125200,26768],\"us\":[1132368,26768],\"eu\":[1004336,26768],\"sh\":[980848,26768],\"cn\":[1047664,26768]}],\n\"actors/mario/mario_logo.rgba16.png\": [32,32,2048,{\"jp\":[1125200,6288],\"us\":[1132368,6288],\"eu\":[1004336,6288],\"sh\":[980848,6288],\"cn\":[1047664,6288]}],\n\"actors/mario/mario_metal.rgba16.png\": [64,32,4096,{\"jp\":[1125200,144],\"us\":[1132368,144],\"eu\":[1004336,144],\"sh\":[980848,144],\"cn\":[1047664,144]}],\n\"actors/mario/mario_metal_wing_tip_unused.rgba16.png\": [32,64,4096,{\"jp\":[1125200,45200],\"us\":[1132368,45200],\"eu\":[1004336,45200],\"sh\":[980848,45200],\"cn\":[1047664,45200]}],\n\"actors/mario/mario_metal_wing_unused.rgba16.png\": [32,64,4096,{\"jp\":[1125200,41104],\"us\":[1132368,41104],\"eu\":[1004336,41104],\"sh\":[980848,41104],\"cn\":[1047664,41104]}],\n\"actors/mario/mario_mustache.rgba16.png\": [32,32,2048,{\"jp\":[1125200,10384],\"us\":[1132368,10384],\"eu\":[1004336,10384],\"sh\":[980848,10384],\"cn\":[1047664,10384]}],\n\"actors/mario/mario_overalls_button.rgba16.png\": [32,32,2048,{\"jp\":[1125200,4240],\"us\":[1132368,4240],\"eu\":[1004336,4240],\"sh\":[980848,4240],\"cn\":[1047664,4240]}],\n\"actors/mario/mario_sideburn.rgba16.png\": [32,32,2048,{\"jp\":[1125200,8336],\"us\":[1132368,8336],\"eu\":[1004336,8336],\"sh\":[980848,8336],\"cn\":[1047664,8336]}],\n\"actors/mario/mario_wing.rgba16.png\": [32,64,4096,{\"jp\":[1125200,32912],\"us\":[1132368,32912],\"eu\":[1004336,32912],\"sh\":[980848,32912],\"cn\":[1047664,32912]}],\n\"actors/mario/mario_wing_tip.rgba16.png\": [32,64,4096,{\"jp\":[1125200,37008],\"us\":[1132368,37008],\"eu\":[1004336,37008],\"sh\":[980848,37008],\"cn\":[1047664,37008]}],\n\"actors/mario_cap/mario_cap_logo.rgba16.png\": [32,32,2048,{\"jp\":[1125200,6288],\"us\":[1132368,6288],\"eu\":[1004336,6288],\"sh\":[980848,6288],\"cn\":[1047664,6288]}],\n\"actors/mario_cap/mario_cap_metal.rgba16.png\": [64,32,4096,{\"jp\":[1125200,144],\"us\":[1132368,144],\"eu\":[1004336,144],\"sh\":[980848,144],\"cn\":[1047664,144]}],\n\"actors/mario_cap/mario_cap_metal_wing_tip_unused.rgba16.png\": [32,64,4096,{\"jp\":[1125200,45200],\"us\":[1132368,45200],\"eu\":[1004336,45200],\"sh\":[980848,45200],\"cn\":[1047664,45200]}],\n\"actors/mario_cap/mario_cap_metal_wing_unused.rgba16.png\": [32,64,4096,{\"jp\":[1125200,41104],\"us\":[1132368,41104],\"eu\":[1004336,41104],\"sh\":[980848,41104],\"cn\":[1047664,41104]}],\n\"actors/mario_cap/mario_cap_wing.rgba16.png\": [32,64,4096,{\"jp\":[1125200,32912],\"us\":[1132368,32912],\"eu\":[1004336,32912],\"sh\":[980848,32912],\"cn\":[1047664,32912]}],\n\"actors/mario_cap/mario_cap_wing_tip.rgba16.png\": [32,64,4096,{\"jp\":[1125200,37008],\"us\":[1132368,37008],\"eu\":[1004336,37008],\"sh\":[980848,37008],\"cn\":[1047664,37008]}],\n\"actors/metal_box/metal_box_side.rgba16.png\": [32,64,4096,{\"jp\":[2032944,145816],\"us\":[2040320,145816],\"eu\":[1912288,145816],\"sh\":[1888800,145816],\"cn\":[1955632,145816]}],\n\"actors/mips/mips_eyes.rgba16.png\": [32,32,2048,{\"jp\":[1926752,64384],\"us\":[1934096,64624],\"eu\":[1806064,64624],\"sh\":[1782576,64624],\"cn\":[1849408,64624]}],\n\"actors/mist/mist.ia16.png\": [32,32,2048,{\"jp\":[2094912,128],\"us\":[2102288,128],\"eu\":[1974256,128],\"sh\":[1950768,128],\"cn\":[2017600,128]}],\n\"actors/moneybag/moneybag_eyes.rgba16.png\": [32,32,2048,{\"jp\":[1979680,18864],\"us\":[1987056,18864],\"eu\":[1859024,18864],\"sh\":[1835536,18864],\"cn\":[1902368,18864]}],\n\"actors/moneybag/moneybag_mouth.rgba16.png\": [64,32,4096,{\"jp\":[1979680,14768],\"us\":[1987056,14768],\"eu\":[1859024,14768],\"sh\":[1835536,14768],\"cn\":[1902368,14768]}],\n\"actors/monty_mole/monty_mole_cheek.rgba16.png\": [32,32,2048,{\"jp\":[1377744,2416],\"us\":[1384912,2416],\"eu\":[1256880,2416],\"sh\":[1233392,2416],\"cn\":[1300224,2416]}],\n\"actors/monty_mole/monty_mole_claw.rgba16.png\": [32,32,2048,{\"jp\":[1377744,10608],\"us\":[1384912,10608],\"eu\":[1256880,10608],\"sh\":[1233392,10608],\"cn\":[1300224,10608]}],\n\"actors/monty_mole/monty_mole_eye.rgba16.png\": [32,32,2048,{\"jp\":[1377744,4464],\"us\":[1384912,4464],\"eu\":[1256880,4464],\"sh\":[1233392,4464],\"cn\":[1300224,4464]}],\n\"actors/monty_mole/monty_mole_nose.rgba16.png\": [32,32,2048,{\"jp\":[1377744,6512],\"us\":[1384912,6512],\"eu\":[1256880,6512],\"sh\":[1233392,6512],\"cn\":[1300224,6512]}],\n\"actors/monty_mole/monty_mole_tooth.rgba16.png\": [32,32,2048,{\"jp\":[1377744,8560],\"us\":[1384912,8560],\"eu\":[1256880,8560],\"sh\":[1233392,8560],\"cn\":[1300224,8560]}],\n\"actors/monty_mole_hole/monty_mole_hole.ia16.png\": [32,32,2048,{\"jp\":[1377744,64],\"us\":[1384912,64],\"eu\":[1256880,64],\"sh\":[1233392,64],\"cn\":[1300224,64]}],\n\"actors/mr_i_eyeball/mr_i_eyeball_left_side.rgba16.png\": [32,64,4096,{\"jp\":[1991184,128],\"us\":[1998560,128],\"eu\":[1870528,128],\"sh\":[1847040,128],\"cn\":[1913872,128]}],\n\"actors/mr_i_eyeball/mr_i_eyeball_right_side.rgba16.png\": [32,64,4096,{\"jp\":[1991184,4224],\"us\":[1998560,4224],\"eu\":[1870528,4224],\"sh\":[1847040,4224],\"cn\":[1913872,4224]}],\n\"actors/mr_i_iris/mr_i_iris_closed.rgba16.png\": [32,32,2048,{\"jp\":[1991184,14704],\"us\":[1998560,14704],\"eu\":[1870528,14704],\"sh\":[1847040,14704],\"cn\":[1913872,14704]}],\n\"actors/mr_i_iris/mr_i_iris_mostly_closed.rgba16.png\": [32,32,2048,{\"jp\":[1991184,12656],\"us\":[1998560,12656],\"eu\":[1870528,12656],\"sh\":[1847040,12656],\"cn\":[1913872,12656]}],\n\"actors/mr_i_iris/mr_i_iris_mostly_open.rgba16.png\": [32,32,2048,{\"jp\":[1991184,10608],\"us\":[1998560,10608],\"eu\":[1870528,10608],\"sh\":[1847040,10608],\"cn\":[1913872,10608]}],\n\"actors/mr_i_iris/mr_i_iris_open.rgba16.png\": [32,32,2048,{\"jp\":[1991184,8560],\"us\":[1998560,8560],\"eu\":[1870528,8560],\"sh\":[1847040,8560],\"cn\":[1913872,8560]}],\n\"actors/mushroom_1up/1-up_mushroom.rgba16.png\": [32,64,4096,{\"jp\":[2094912,169512],\"us\":[2102288,169512],\"eu\":[1974256,169512],\"sh\":[1950768,169512],\"cn\":[2017600,169512]}],\n\"actors/peach/peach_chest_jewel.rgba16.png\": [16,16,512,{\"jp\":[1490032,11304],\"us\":[1497200,11304],\"eu\":[1369168,11304],\"sh\":[1345680,11304],\"cn\":[1412512,11304]}],\n\"actors/peach/peach_crown_jewel.rgba16.png\": [16,16,512,{\"jp\":[1490032,10792],\"us\":[1497200,10792],\"eu\":[1369168,10792],\"sh\":[1345680,10792],\"cn\":[1412512,10792]}],\n\"actors/peach/peach_dress.rgba16.png\": [32,32,2048,{\"jp\":[1490032,16424],\"us\":[1497200,16424],\"eu\":[1369168,16424],\"sh\":[1345680,16424],\"cn\":[1412512,16424]}],\n\"actors/peach/peach_eye_closed.rgba16.png\": [32,32,2048,{\"jp\":[1490032,8744],\"us\":[1497200,8744],\"eu\":[1369168,8744],\"sh\":[1345680,8744],\"cn\":[1412512,8744]}],\n\"actors/peach/peach_eye_mostly_closed.rgba16.png\": [32,32,2048,{\"jp\":[1490032,6696],\"us\":[1497200,6696],\"eu\":[1369168,6696],\"sh\":[1345680,6696],\"cn\":[1412512,6696]}],\n\"actors/peach/peach_eye_mostly_open.rgba16.png\": [32,32,2048,{\"jp\":[1490032,4648],\"us\":[1497200,4648],\"eu\":[1369168,4648],\"sh\":[1345680,4648],\"cn\":[1412512,4648]}],\n\"actors/peach/peach_eye_open.rgba16.png\": [32,32,2048,{\"jp\":[1490032,2600],\"us\":[1497200,2600],\"eu\":[1369168,2600],\"sh\":[1345680,2600],\"cn\":[1412512,2600]}],\n\"actors/peach/peach_lips.rgba16.png\": [32,32,2048,{\"jp\":[1490032,13864],\"us\":[1497200,13864],\"eu\":[1369168,13864],\"sh\":[1345680,13864],\"cn\":[1412512,13864]}],\n\"actors/peach/peach_lips_scrunched.rgba16.png\": [32,32,2048,{\"jp\":[1490032,11816],\"us\":[1497200,11816],\"eu\":[1369168,11816],\"sh\":[1345680,11816],\"cn\":[1412512,11816]}],\n\"actors/peach/peach_nostril.rgba16.png\": [16,16,512,{\"jp\":[1490032,15912],\"us\":[1497200,15912],\"eu\":[1369168,15912],\"sh\":[1345680,15912],\"cn\":[1412512,15912]}],\n\"actors/pebble/pebble.rgba16.png\": [32,32,2048,{\"jp\":[2094912,115456],\"us\":[2102288,115456],\"eu\":[1974256,115456],\"sh\":[1950768,115456],\"cn\":[2017600,115456]}],\n\"actors/penguin/penguin_beak.rgba16.png\": [32,32,2048,{\"jp\":[1436272,21984],\"us\":[1443440,21984],\"eu\":[1315408,21984],\"sh\":[1291920,21984],\"cn\":[1358752,21984]}],\n\"actors/penguin/penguin_eye_angry.rgba16.png\": [32,32,2048,{\"jp\":[1436272,17888],\"us\":[1443440,17888],\"eu\":[1315408,17888],\"sh\":[1291920,17888],\"cn\":[1358752,17888]}],\n\"actors/penguin/penguin_eye_angry_unused.rgba16.png\": [32,32,2048,{\"jp\":[1436272,19936],\"us\":[1443440,19936],\"eu\":[1315408,19936],\"sh\":[1291920,19936],\"cn\":[1358752,19936]}],\n\"actors/penguin/penguin_eye_closed.rgba16.png\": [32,32,2048,{\"jp\":[1436272,15840],\"us\":[1443440,15840],\"eu\":[1315408,15840],\"sh\":[1291920,15840],\"cn\":[1358752,15840]}],\n\"actors/penguin/penguin_eye_half_closed.rgba16.png\": [32,32,2048,{\"jp\":[1436272,13792],\"us\":[1443440,13792],\"eu\":[1315408,13792],\"sh\":[1291920,13792],\"cn\":[1358752,13792]}],\n\"actors/penguin/penguin_eye_open.rgba16.png\": [32,32,2048,{\"jp\":[1436272,11744],\"us\":[1443440,11744],\"eu\":[1315408,11744],\"sh\":[1291920,11744],\"cn\":[1358752,11744]}],\n\"actors/piranha_plant/piranha_plant_bottom_lip.rgba16.png\": [32,32,2048,{\"jp\":[1844608,78840],\"us\":[1851952,78840],\"eu\":[1723920,78840],\"sh\":[1700432,78840],\"cn\":[1767264,78840]}],\n\"actors/piranha_plant/piranha_plant_leaf.rgba16.png\": [32,64,4096,{\"jp\":[1844608,82936],\"us\":[1851952,82936],\"eu\":[1723920,82936],\"sh\":[1700432,82936],\"cn\":[1767264,82936]}],\n\"actors/piranha_plant/piranha_plant_skin.rgba16.png\": [32,32,2048,{\"jp\":[1844608,74744],\"us\":[1851952,74744],\"eu\":[1723920,74744],\"sh\":[1700432,74744],\"cn\":[1767264,74744]}],\n\"actors/piranha_plant/piranha_plant_stem.rgba16.png\": [32,32,2048,{\"jp\":[1844608,76792],\"us\":[1851952,76792],\"eu\":[1723920,76792],\"sh\":[1700432,76792],\"cn\":[1767264,76792]}],\n\"actors/piranha_plant/piranha_plant_tongue.rgba16.png\": [32,64,4096,{\"jp\":[1599504,148536],\"us\":[1606720,148536],\"eu\":[1478688,148536],\"sh\":[1455200,148536],\"cn\":[1522032,148536]}],\n\"actors/piranha_plant/piranha_plant_tooth.rgba16.png\": [32,32,2048,{\"jp\":[1844608,80888],\"us\":[1851952,80888],\"eu\":[1723920,80888],\"sh\":[1700432,80888],\"cn\":[1767264,80888]}],\n\"actors/pokey/pokey_body.rgba16.png\": [32,32,2048,{\"jp\":[1327760,75896],\"us\":[1334928,75896],\"eu\":[1206896,75896],\"sh\":[1183408,75896],\"cn\":[1250240,75896]}],\n\"actors/pokey/pokey_face.rgba16.png\": [32,32,2048,{\"jp\":[1327760,71504],\"us\":[1334928,71504],\"eu\":[1206896,71504],\"sh\":[1183408,71504],\"cn\":[1250240,71504]}],\n\"actors/pokey/pokey_face_blink.rgba16.png\": [32,32,2048,{\"jp\":[1327760,73552],\"us\":[1334928,73552],\"eu\":[1206896,73552],\"sh\":[1183408,73552],\"cn\":[1250240,73552]}],\n\"actors/poundable_pole/poundable_pole_side.rgba16.png\": [32,32,2048,{\"jp\":[1844608,6224],\"us\":[1851952,6224],\"eu\":[1723920,6224],\"sh\":[1700432,6224],\"cn\":[1767264,6224]}],\n\"actors/poundable_pole/poundable_pole_top.rgba16.png\": [32,32,2048,{\"jp\":[1844608,4176],\"us\":[1851952,4176],\"eu\":[1723920,4176],\"sh\":[1700432,4176],\"cn\":[1767264,4176]}],\n\"actors/power_meter/power_meter_five_segments.rgba16.png\": [32,32,2048,{\"jp\":[2094912,158688],\"us\":[2102288,158688],\"eu\":[1974256,158688],\"sh\":[1950768,158688],\"cn\":[2017600,158688]}],\n\"actors/power_meter/power_meter_four_segments.rgba16.png\": [32,32,2048,{\"jp\":[2094912,160736],\"us\":[2102288,160736],\"eu\":[1974256,160736],\"sh\":[1950768,160736],\"cn\":[2017600,160736]}],\n\"actors/power_meter/power_meter_full.rgba16.png\": [32,32,2048,{\"jp\":[2094912,152544],\"us\":[2102288,152544],\"eu\":[1974256,152544],\"sh\":[1950768,152544],\"cn\":[2017600,152544]}],\n\"actors/power_meter/power_meter_left_side.rgba16.png\": [32,64,4096,{\"jp\":[2094912,144352],\"us\":[2102288,144352],\"eu\":[1974256,144352],\"sh\":[1950768,144352]}],\n\"actors/power_meter/power_meter_left_side_cn.rgba16.png\": [32,64,4096,{\"cn\":[2017600,144352]}],\n\"actors/power_meter/power_meter_one_segment.rgba16.png\": [32,32,2048,{\"jp\":[2094912,166880],\"us\":[2102288,166880],\"eu\":[1974256,166880],\"sh\":[1950768,166880],\"cn\":[2017600,166880]}],\n\"actors/power_meter/power_meter_right_side.rgba16.png\": [32,64,4096,{\"jp\":[2094912,148448],\"us\":[2102288,148448],\"eu\":[1974256,148448],\"sh\":[1950768,148448]}],\n\"actors/power_meter/power_meter_right_side_cn.rgba16.png\": [32,64,4096,{\"cn\":[2017600,148448]}],\n\"actors/power_meter/power_meter_seven_segments.rgba16.png\": [32,32,2048,{\"jp\":[2094912,154592],\"us\":[2102288,154592],\"eu\":[1974256,154592],\"sh\":[1950768,154592],\"cn\":[2017600,154592]}],\n\"actors/power_meter/power_meter_six_segments.rgba16.png\": [32,32,2048,{\"jp\":[2094912,156640],\"us\":[2102288,156640],\"eu\":[1974256,156640],\"sh\":[1950768,156640],\"cn\":[2017600,156640]}],\n\"actors/power_meter/power_meter_three_segments.rgba16.png\": [32,32,2048,{\"jp\":[2094912,162784],\"us\":[2102288,162784],\"eu\":[1974256,162784],\"sh\":[1950768,162784],\"cn\":[2017600,162784]}],\n\"actors/power_meter/power_meter_two_segments.rgba16.png\": [32,32,2048,{\"jp\":[2094912,164832],\"us\":[2102288,164832],\"eu\":[1974256,164832],\"sh\":[1950768,164832],\"cn\":[2017600,164832]}],\n\"actors/purple_switch/purple_switch_base.rgba16.png\": [16,4,128,{\"jp\":[2032944,49320],\"us\":[2040320,49320],\"eu\":[1912288,49320],\"sh\":[1888800,49320],\"cn\":[1955632,49320]}],\n\"actors/purple_switch/purple_switch_exclamation_point.rgba16.png\": [16,32,1024,{\"jp\":[2032944,49448],\"us\":[2040320,49448],\"eu\":[1912288,49448],\"sh\":[1888800,49448],\"cn\":[1955632,49448]}],\n\"actors/sand/sand_particle.rgba16.png\": [16,16,512,{\"jp\":[2094912,178896],\"us\":[2102288,178896],\"eu\":[1974256,178896],\"sh\":[1950768,178896],\"cn\":[2017600,178896]}],\n\"actors/scuttlebug/scuttlebug_eye.rgba16.png\": [32,32,2048,{\"jp\":[1991184,65800],\"us\":[1998560,65800],\"eu\":[1870528,65800],\"sh\":[1847040,65800],\"cn\":[1913872,65800]}],\n\"actors/scuttlebug/scuttlebug_iris.rgba16.png\": [32,32,2048,{\"jp\":[1991184,76040],\"us\":[1998560,76040],\"eu\":[1870528,76040],\"sh\":[1847040,76040],\"cn\":[1913872,76040]}],\n\"actors/scuttlebug/scuttlebug_left_side.rgba16.png\": [32,64,4096,{\"jp\":[1991184,67848],\"us\":[1998560,67848],\"eu\":[1870528,67848],\"sh\":[1847040,67848],\"cn\":[1913872,67848]}],\n\"actors/scuttlebug/scuttlebug_leg.rgba16.png\": [32,32,2048,{\"jp\":[1991184,78088],\"us\":[1998560,78088],\"eu\":[1870528,78088],\"sh\":[1847040,78088],\"cn\":[1913872,78088]}],\n\"actors/scuttlebug/scuttlebug_right_side.rgba16.png\": [32,64,4096,{\"jp\":[1991184,71944],\"us\":[1998560,71944],\"eu\":[1870528,71944],\"sh\":[1847040,71944],\"cn\":[1913872,71944]}],\n\"actors/seaweed/seaweed_base.rgba16.png\": [32,32,2048,{\"jp\":[1802256,38416],\"us\":[1809600,38416],\"eu\":[1681568,38416],\"sh\":[1658080,38416],\"cn\":[1724912,38416]}],\n\"actors/seaweed/seaweed_lower_center.rgba16.png\": [32,32,2048,{\"jp\":[1802256,36368],\"us\":[1809600,36368],\"eu\":[1681568,36368],\"sh\":[1658080,36368],\"cn\":[1724912,36368]}],\n\"actors/seaweed/seaweed_tip.rgba16.png\": [32,32,2048,{\"jp\":[1802256,32272],\"us\":[1809600,32272],\"eu\":[1681568,32272],\"sh\":[1658080,32272],\"cn\":[1724912,32272]}],\n\"actors/seaweed/seaweed_upper_center.rgba16.png\": [32,32,2048,{\"jp\":[1802256,34320],\"us\":[1809600,34320],\"eu\":[1681568,34320],\"sh\":[1658080,34320],\"cn\":[1724912,34320]}],\n\"actors/skeeter/skeeter_eye.rgba16.png\": [32,32,2048,{\"jp\":[1802256,144],\"us\":[1809600,144],\"eu\":[1681568,144],\"sh\":[1658080,144],\"cn\":[1724912,144]}],\n\"actors/skeeter/skeeter_iris.rgba16.png\": [16,8,256,{\"jp\":[1802256,2192],\"us\":[1809600,2192],\"eu\":[1681568,2192],\"sh\":[1658080,2192],\"cn\":[1724912,2192]}],\n\"actors/smoke/smoke.ia16.png\": [32,32,2048,{\"jp\":[1377744,29376],\"us\":[1384912,29376],\"eu\":[1256880,29376],\"sh\":[1233392,29376],\"cn\":[1300224,29376]}],\n\"actors/snowman/mr_blizzard_eye.rgba16.png\": [32,32,2048,{\"jp\":[1436272,46192],\"us\":[1443440,46192],\"eu\":[1315408,46192],\"sh\":[1291920,46192],\"cn\":[1358752,46192]}],\n\"actors/snowman/mr_blizzard_left_side.rgba16.png\": [32,64,4096,{\"jp\":[1436272,38000],\"us\":[1443440,38000],\"eu\":[1315408,38000],\"sh\":[1291920,38000],\"cn\":[1358752,38000]}],\n\"actors/snowman/mr_blizzard_mitten.rgba16.png\": [32,32,2048,{\"jp\":[1436272,35952],\"us\":[1443440,35952],\"eu\":[1315408,35952],\"sh\":[1291920,35952],\"cn\":[1358752,35952]}],\n\"actors/snowman/mr_blizzard_mouth.rgba16.png\": [32,32,2048,{\"jp\":[1436272,48240],\"us\":[1443440,48240],\"eu\":[1315408,48240],\"sh\":[1291920,48240],\"cn\":[1358752,48240]}],\n\"actors/snowman/mr_blizzard_right_side.rgba16.png\": [32,64,4096,{\"jp\":[1436272,42096],\"us\":[1443440,42096],\"eu\":[1315408,42096],\"sh\":[1291920,42096],\"cn\":[1358752,42096]}],\n\"actors/snufit/snufit_body.rgba16.png\": [32,32,2048,{\"jp\":[1991184,28896],\"us\":[1998560,28896],\"eu\":[1870528,28896],\"sh\":[1847040,28896],\"cn\":[1913872,28896]}],\n\"actors/snufit/snufit_eye.rgba16.png\": [32,32,2048,{\"jp\":[1991184,30944],\"us\":[1998560,30944],\"eu\":[1870528,30944],\"sh\":[1847040,30944],\"cn\":[1913872,30944]}],\n\"actors/snufit/snufit_mask_strap.rgba16.png\": [16,32,1024,{\"jp\":[1991184,32992],\"us\":[1998560,32992],\"eu\":[1870528,32992],\"sh\":[1847040,32992],\"cn\":[1913872,32992]}],\n\"actors/snufit/snufit_mouth.rgba16.png\": [32,32,2048,{\"jp\":[1991184,34016],\"us\":[1998560,34016],\"eu\":[1870528,34016],\"sh\":[1847040,34016],\"cn\":[1913872,34016]}],\n\"actors/sparkle/sparkle_0.rgba16.png\": [32,32,2048,{\"jp\":[1125200,160912],\"us\":[1132368,160912],\"eu\":[1004336,160912],\"sh\":[980848,160912],\"cn\":[1047664,160912]}],\n\"actors/sparkle/sparkle_1.rgba16.png\": [32,32,2048,{\"jp\":[1125200,162960],\"us\":[1132368,162960],\"eu\":[1004336,162960],\"sh\":[980848,162960],\"cn\":[1047664,162960]}],\n\"actors/sparkle/sparkle_2.rgba16.png\": [32,32,2048,{\"jp\":[1125200,165008],\"us\":[1132368,165008],\"eu\":[1004336,165008],\"sh\":[980848,165008],\"cn\":[1047664,165008]}],\n\"actors/sparkle/sparkle_3.rgba16.png\": [32,32,2048,{\"jp\":[1125200,167056],\"us\":[1132368,167056],\"eu\":[1004336,167056],\"sh\":[980848,167056],\"cn\":[1047664,167056]}],\n\"actors/sparkle/sparkle_4.rgba16.png\": [32,32,2048,{\"jp\":[1125200,169104],\"us\":[1132368,169104],\"eu\":[1004336,169104],\"sh\":[980848,169104],\"cn\":[1047664,169104]}],\n\"actors/sparkle/sparkle_5.rgba16.png\": [32,32,2048,{\"jp\":[1125200,171152],\"us\":[1132368,171152],\"eu\":[1004336,171152],\"sh\":[980848,171152],\"cn\":[1047664,171152]}],\n\"actors/sparkle_animation/sparkle_animation_0.ia16.png\": [32,32,2048,{\"jp\":[1125200,207496],\"us\":[1132368,207496],\"eu\":[1004336,207496],\"sh\":[980848,207496],\"cn\":[1047664,207496]}],\n\"actors/sparkle_animation/sparkle_animation_1.ia16.png\": [32,32,2048,{\"jp\":[1125200,209544],\"us\":[1132368,209544],\"eu\":[1004336,209544],\"sh\":[980848,209544],\"cn\":[1047664,209544]}],\n\"actors/sparkle_animation/sparkle_animation_2.ia16.png\": [32,32,2048,{\"jp\":[1125200,211592],\"us\":[1132368,211592],\"eu\":[1004336,211592],\"sh\":[980848,211592],\"cn\":[1047664,211592]}],\n\"actors/sparkle_animation/sparkle_animation_3.ia16.png\": [32,32,2048,{\"jp\":[1125200,213640],\"us\":[1132368,213640],\"eu\":[1004336,213640],\"sh\":[980848,213640],\"cn\":[1047664,213640]}],\n\"actors/sparkle_animation/sparkle_animation_4.ia16.png\": [32,32,2048,{\"jp\":[1125200,215688],\"us\":[1132368,215688],\"eu\":[1004336,215688],\"sh\":[980848,215688],\"cn\":[1047664,215688]}],\n\"actors/spindrift/spindrift_face.rgba16.png\": [32,32,2048,{\"jp\":[1436272,1744],\"us\":[1443440,1744],\"eu\":[1315408,1744],\"sh\":[1291920,1744],\"cn\":[1358752,1744]}],\n\"actors/spindrift/spindrift_head.rgba16.png\": [32,32,2048,{\"jp\":[1436272,7888],\"us\":[1443440,7888],\"eu\":[1315408,7888],\"sh\":[1291920,7888],\"cn\":[1358752,7888]}],\n\"actors/spindrift/spindrift_leaf.rgba16.png\": [32,32,2048,{\"jp\":[1436272,5840],\"us\":[1443440,5840],\"eu\":[1315408,5840],\"sh\":[1291920,5840],\"cn\":[1358752,5840]}],\n\"actors/spindrift/spindrift_petal.rgba16.png\": [32,32,2048,{\"jp\":[1436272,3792],\"us\":[1443440,3792],\"eu\":[1315408,3792],\"sh\":[1291920,3792],\"cn\":[1358752,3792]}],\n\"actors/springboard/springboard_base_unused.rgba16.png\": [32,32,2048,{\"jp\":[1457744,2072],\"us\":[1464912,2072],\"eu\":[1336880,2072],\"sh\":[1313392,2072],\"cn\":[1380224,2072]}],\n\"actors/springboard/springboard_top_unused.rgba16.png\": [32,32,2048,{\"jp\":[1457744,24],\"us\":[1464912,24],\"eu\":[1336880,24],\"sh\":[1313392,24],\"cn\":[1380224,24]}],\n\"actors/star/star_eye.rgba16.png\": [32,32,2048,{\"jp\":[1568640,31280],\"us\":[1575856,31280],\"eu\":[1447824,31280],\"sh\":[1424336,31280],\"cn\":[1491168,31280]}],\n\"actors/star/star_surface.rgba16.png\": [32,32,2048,{\"jp\":[2094912,173808],\"us\":[2102288,173808],\"eu\":[1974256,173808],\"sh\":[1950768,173808],\"cn\":[2017600,173808]}],\n\"actors/stomp_smoke/stomp_smoke_0.ia16.png\": [32,32,2048,{\"jp\":[1125200,139592],\"us\":[1132368,139592],\"eu\":[1004336,139592],\"sh\":[980848,139592],\"cn\":[1047664,139592]}],\n\"actors/stomp_smoke/stomp_smoke_1.ia16.png\": [32,32,2048,{\"jp\":[1125200,141640],\"us\":[1132368,141640],\"eu\":[1004336,141640],\"sh\":[980848,141640],\"cn\":[1047664,141640]}],\n\"actors/stomp_smoke/stomp_smoke_2.ia16.png\": [32,32,2048,{\"jp\":[1125200,143688],\"us\":[1132368,143688],\"eu\":[1004336,143688],\"sh\":[980848,143688],\"cn\":[1047664,143688]}],\n\"actors/stomp_smoke/stomp_smoke_3.ia16.png\": [32,32,2048,{\"jp\":[1125200,145736],\"us\":[1132368,145736],\"eu\":[1004336,145736],\"sh\":[980848,145736],\"cn\":[1047664,145736]}],\n\"actors/stomp_smoke/stomp_smoke_4.ia16.png\": [32,32,2048,{\"jp\":[1125200,147784],\"us\":[1132368,147784],\"eu\":[1004336,147784],\"sh\":[980848,147784],\"cn\":[1047664,147784]}],\n\"actors/stomp_smoke/stomp_smoke_5.ia16.png\": [32,32,2048,{\"jp\":[1125200,149832],\"us\":[1132368,149832],\"eu\":[1004336,149832],\"sh\":[980848,149832],\"cn\":[1047664,149832]}],\n\"actors/sushi/sushi_eye.rgba16.png\": [32,16,1024,{\"jp\":[1285392,38608],\"us\":[1292560,38608],\"eu\":[1164528,38608],\"sh\":[1141040,38608],\"cn\":[1207872,38608]}],\n\"actors/sushi/sushi_snout.rgba16.png\": [32,32,2048,{\"jp\":[1285392,36560],\"us\":[1292560,36560],\"eu\":[1164528,36560],\"sh\":[1141040,36560],\"cn\":[1207872,36560]}],\n\"actors/sushi/sushi_tooth.rgba16.png\": [8,8,128,{\"jp\":[1285392,39632],\"us\":[1292560,39632],\"eu\":[1164528,39632],\"sh\":[1141040,39632],\"cn\":[1207872,39632]}],\n\"actors/swoop/swoop_body.rgba16.png\": [32,32,2048,{\"jp\":[1991184,17008],\"us\":[1998560,17008],\"eu\":[1870528,17008],\"sh\":[1847040,17008],\"cn\":[1913872,17008]}],\n\"actors/swoop/swoop_eye.rgba16.png\": [32,32,2048,{\"jp\":[1991184,19056],\"us\":[1998560,19056],\"eu\":[1870528,19056],\"sh\":[1847040,19056],\"cn\":[1913872,19056]}],\n\"actors/swoop/swoop_nose.rgba16.png\": [32,32,2048,{\"jp\":[1991184,21104],\"us\":[1998560,21104],\"eu\":[1870528,21104],\"sh\":[1847040,21104],\"cn\":[1913872,21104]}],\n\"actors/swoop/swoop_wing.rgba16.png\": [32,32,2048,{\"jp\":[1991184,23152],\"us\":[1998560,23152],\"eu\":[1870528,23152],\"sh\":[1847040,23152],\"cn\":[1913872,23152]}],\n\"actors/thwomp/thwomp_face.rgba16.png\": [32,64,4096,{\"jp\":[1215456,39168],\"us\":[1222624,39168],\"eu\":[1094592,39168],\"sh\":[1071104,39168],\"cn\":[1137936,39168]}],\n\"actors/thwomp/thwomp_surface.rgba16.png\": [32,32,2048,{\"jp\":[1215456,43264],\"us\":[1222624,43264],\"eu\":[1094592,43264],\"sh\":[1071104,43264],\"cn\":[1137936,43264]}],\n\"actors/toad/toad_face.rgba16.png\": [32,32,2048,{\"jp\":[1926752,22816],\"us\":[1934096,22816],\"eu\":[1806064,22816],\"sh\":[1782576,22816],\"cn\":[1849408,22816]}],\n\"actors/toad/toad_head.rgba16.png\": [32,32,2048,{\"jp\":[1926752,24864],\"us\":[1934096,24864],\"eu\":[1806064,24864],\"sh\":[1782576,24864],\"cn\":[1849408,24864]}],\n\"actors/tornado/tornado.ia16.png\": [32,64,4096,{\"jp\":[1285392,75848],\"us\":[1292560,75848],\"eu\":[1164528,75848],\"sh\":[1141040,75848],\"cn\":[1207872,75848]}],\n\"actors/treasure_chest/treasure_chest_front.rgba16.png\": [64,32,4096,{\"jp\":[1802256,87976],\"us\":[1809600,87976],\"eu\":[1681568,87976],\"sh\":[1658080,87976],\"cn\":[1724912,87976]}],\n\"actors/treasure_chest/treasure_chest_lock.rgba16.png\": [32,32,2048,{\"jp\":[1802256,81832],\"us\":[1809600,81832],\"eu\":[1681568,81832],\"sh\":[1658080,81832],\"cn\":[1724912,81832]}],\n\"actors/treasure_chest/treasure_chest_lock_top.rgba16.png\": [32,32,2048,{\"jp\":[1802256,85928],\"us\":[1809600,85928],\"eu\":[1681568,85928],\"sh\":[1658080,85928],\"cn\":[1724912,85928]}],\n\"actors/treasure_chest/treasure_chest_side.rgba16.png\": [32,32,2048,{\"jp\":[1802256,83880],\"us\":[1809600,83880],\"eu\":[1681568,83880],\"sh\":[1658080,83880],\"cn\":[1724912,83880]}],\n\"actors/tree/palm_tree.rgba16.png\": [32,64,4096,{\"jp\":[2094912,205336],\"us\":[2102288,205336],\"eu\":[1974256,205336],\"sh\":[1950768,205336],\"cn\":[2017600,205336]}],\n\"actors/tree/pine_tree.rgba16.png\": [32,64,4096,{\"jp\":[2094912,196448],\"us\":[2102288,196448],\"eu\":[1974256,196448],\"sh\":[1950768,196448],\"cn\":[2017600,196448]}],\n\"actors/tree/snowy_pine_tree.rgba16.png\": [32,64,4096,{\"jp\":[2094912,200776],\"us\":[2102288,200776],\"eu\":[1974256,200776],\"sh\":[1950768,200776],\"cn\":[2017600,200776]}],\n\"actors/tree/tree_left_side.rgba16.png\": [32,64,4096,{\"jp\":[2094912,187944],\"us\":[2102288,187944],\"eu\":[1974256,187944],\"sh\":[1950768,187944],\"cn\":[2017600,187944]}],\n\"actors/tree/tree_right_side.rgba16.png\": [32,64,4096,{\"jp\":[2094912,192040],\"us\":[2102288,192040],\"eu\":[1974256,192040],\"sh\":[1950768,192040],\"cn\":[2017600,192040]}],\n\"actors/ukiki/ukiki_butt.rgba16.png\": [32,32,2048,{\"jp\":[1377744,39872],\"us\":[1384912,39872],\"eu\":[1256880,39872],\"sh\":[1233392,39872],\"cn\":[1300224,39872]}],\n\"actors/ukiki/ukiki_face.rgba16.png\": [64,32,4096,{\"jp\":[1377744,31680],\"us\":[1384912,31680],\"eu\":[1256880,31680],\"sh\":[1233392,31680],\"cn\":[1300224,31680]}],\n\"actors/ukiki/ukiki_face_blink.rgba16.png\": [64,32,4096,{\"jp\":[1377744,35776],\"us\":[1384912,35776],\"eu\":[1256880,35776],\"sh\":[1233392,35776],\"cn\":[1300224,35776]}],\n\"actors/ukiki/ukiki_fur.rgba16.png\": [32,32,2048,{\"jp\":[1377744,41920],\"us\":[1384912,41920],\"eu\":[1256880,41920],\"sh\":[1233392,41920],\"cn\":[1300224,41920]}],\n\"actors/unagi/unagi_body.rgba16.png\": [32,32,2048,{\"jp\":[1285392,44832],\"us\":[1292560,44832],\"eu\":[1164528,44832],\"sh\":[1141040,44832],\"cn\":[1207872,44832]}],\n\"actors/unagi/unagi_eye.rgba16.png\": [16,16,512,{\"jp\":[1285392,46880],\"us\":[1292560,46880],\"eu\":[1164528,46880],\"sh\":[1141040,46880],\"cn\":[1207872,46880]}],\n\"actors/unagi/unagi_head_base.rgba16.png\": [32,32,2048,{\"jp\":[1285392,47392],\"us\":[1292560,47392],\"eu\":[1164528,47392],\"sh\":[1141040,47392],\"cn\":[1207872,47392]}],\n\"actors/unagi/unagi_mouth.rgba16.png\": [8,8,128,{\"jp\":[1285392,49952],\"us\":[1292560,49952],\"eu\":[1164528,49952],\"sh\":[1141040,49952],\"cn\":[1207872,49952]}],\n\"actors/unagi/unagi_tail.rgba16.png\": [32,32,2048,{\"jp\":[1285392,50080],\"us\":[1292560,50080],\"eu\":[1164528,50080],\"sh\":[1141040,50080],\"cn\":[1207872,50080]}],\n\"actors/unagi/unagi_tooth.rgba16.png\": [16,16,512,{\"jp\":[1285392,49440],\"us\":[1292560,49440],\"eu\":[1164528,49440],\"sh\":[1141040,49440],\"cn\":[1207872,49440]}],\n\"actors/walk_smoke/walk_smoke_0.ia16.png\": [32,32,2048,{\"jp\":[1125200,122528],\"us\":[1132368,122528],\"eu\":[1004336,122528],\"sh\":[980848,122528],\"cn\":[1047664,122528]}],\n\"actors/walk_smoke/walk_smoke_1.ia16.png\": [32,32,2048,{\"jp\":[1125200,124576],\"us\":[1132368,124576],\"eu\":[1004336,124576],\"sh\":[980848,124576],\"cn\":[1047664,124576]}],\n\"actors/walk_smoke/walk_smoke_2.ia16.png\": [32,32,2048,{\"jp\":[1125200,126624],\"us\":[1132368,126624],\"eu\":[1004336,126624],\"sh\":[980848,126624],\"cn\":[1047664,126624]}],\n\"actors/walk_smoke/walk_smoke_3.ia16.png\": [32,32,2048,{\"jp\":[1125200,128672],\"us\":[1132368,128672],\"eu\":[1004336,128672],\"sh\":[980848,128672],\"cn\":[1047664,128672]}],\n\"actors/walk_smoke/walk_smoke_4.ia16.png\": [32,32,2048,{\"jp\":[1125200,130720],\"us\":[1132368,130720],\"eu\":[1004336,130720],\"sh\":[980848,130720],\"cn\":[1047664,130720]}],\n\"actors/walk_smoke/walk_smoke_5.ia16.png\": [32,32,2048,{\"jp\":[1125200,132768],\"us\":[1132368,132768],\"eu\":[1004336,132768],\"sh\":[980848,132768],\"cn\":[1047664,132768]}],\n\"actors/walk_smoke/walk_smoke_6.ia16.png\": [32,32,2048,{\"jp\":[1125200,134816],\"us\":[1132368,134816],\"eu\":[1004336,134816],\"sh\":[980848,134816],\"cn\":[1047664,134816]}],\n\"actors/warp_pipe/warp_pipe_side.rgba16.png\": [32,64,4096,{\"jp\":[2094912,32320],\"us\":[2102288,32320],\"eu\":[1974256,32320],\"sh\":[1950768,32320],\"cn\":[2017600,32320]}],\n\"actors/warp_pipe/warp_pipe_top.rgba16.png\": [32,32,2048,{\"jp\":[2094912,37224],\"us\":[2102288,37224],\"eu\":[1974256,37224],\"sh\":[1950768,37224],\"cn\":[2017600,37224]}],\n\"actors/water_bubble/water_bubble.rgba16.png\": [32,32,2048,{\"jp\":[1257760,65152],\"us\":[1264928,65152],\"eu\":[1136896,65152],\"sh\":[1113408,65152],\"cn\":[1180240,65152]}],\n\"actors/water_mine/water_mine_left_side_unused.rgba16.png\": [32,64,4096,{\"jp\":[1599504,359104],\"us\":[1606720,359440],\"eu\":[1478688,359440],\"sh\":[1455200,359440],\"cn\":[1522032,359440]}],\n\"actors/water_mine/water_mine_right_side_unused.rgba16.png\": [32,64,4096,{\"jp\":[1599504,363200],\"us\":[1606720,363536],\"eu\":[1478688,363536],\"sh\":[1455200,363536],\"cn\":[1522032,363536]}],\n\"actors/water_mine/water_mine_spike_unused.rgba16.png\": [32,32,2048,{\"jp\":[1599504,367296],\"us\":[1606720,367632],\"eu\":[1478688,367632],\"sh\":[1455200,367632],\"cn\":[1522032,367632]}],\n\"actors/water_ring/water_ring.rgba16.png\": [64,32,4096,{\"jp\":[1802256,74624],\"us\":[1809600,74624],\"eu\":[1681568,74624],\"sh\":[1658080,74624],\"cn\":[1724912,74624]}],\n\"actors/water_splash/water_splash_0.rgba16.png\": [32,64,4096,{\"jp\":[1125200,173512],\"us\":[1132368,173512],\"eu\":[1004336,173512],\"sh\":[980848,173512],\"cn\":[1047664,173512]}],\n\"actors/water_splash/water_splash_1.rgba16.png\": [32,64,4096,{\"jp\":[1125200,177608],\"us\":[1132368,177608],\"eu\":[1004336,177608],\"sh\":[980848,177608],\"cn\":[1047664,177608]}],\n\"actors/water_splash/water_splash_2.rgba16.png\": [32,64,4096,{\"jp\":[1125200,181704],\"us\":[1132368,181704],\"eu\":[1004336,181704],\"sh\":[980848,181704],\"cn\":[1047664,181704]}],\n\"actors/water_splash/water_splash_3.rgba16.png\": [32,64,4096,{\"jp\":[1125200,185800],\"us\":[1132368,185800],\"eu\":[1004336,185800],\"sh\":[980848,185800],\"cn\":[1047664,185800]}],\n\"actors/water_splash/water_splash_4.rgba16.png\": [32,64,4096,{\"jp\":[1125200,189896],\"us\":[1132368,189896],\"eu\":[1004336,189896],\"sh\":[980848,189896],\"cn\":[1047664,189896]}],\n\"actors/water_splash/water_splash_5.rgba16.png\": [32,64,4096,{\"jp\":[1125200,193992],\"us\":[1132368,193992],\"eu\":[1004336,193992],\"sh\":[980848,193992],\"cn\":[1047664,193992]}],\n\"actors/water_splash/water_splash_6.rgba16.png\": [32,64,4096,{\"jp\":[1125200,198088],\"us\":[1132368,198088],\"eu\":[1004336,198088],\"sh\":[980848,198088],\"cn\":[1047664,198088]}],\n\"actors/water_splash/water_splash_7.rgba16.png\": [32,64,4096,{\"jp\":[1125200,202184],\"us\":[1132368,202184],\"eu\":[1004336,202184],\"sh\":[980848,202184],\"cn\":[1047664,202184]}],\n\"actors/water_wave/water_wave_0.ia16.png\": [32,32,2048,{\"jp\":[1125200,152408],\"us\":[1132368,152408],\"eu\":[1004336,152408],\"sh\":[980848,152408],\"cn\":[1047664,152408]}],\n\"actors/water_wave/water_wave_1.ia16.png\": [32,32,2048,{\"jp\":[1125200,154456],\"us\":[1132368,154456],\"eu\":[1004336,154456],\"sh\":[980848,154456],\"cn\":[1047664,154456]}],\n\"actors/water_wave/water_wave_2.ia16.png\": [32,32,2048,{\"jp\":[1125200,156504],\"us\":[1132368,156504],\"eu\":[1004336,156504],\"sh\":[980848,156504],\"cn\":[1047664,156504]}],\n\"actors/water_wave/water_wave_3.ia16.png\": [32,32,2048,{\"jp\":[1125200,158552],\"us\":[1132368,158552],\"eu\":[1004336,158552],\"sh\":[980848,158552],\"cn\":[1047664,158552]}],\n\"actors/whirlpool/whirlpool.ia16.png\": [32,64,4096,{\"jp\":[1285392,75848],\"us\":[1292560,75848],\"eu\":[1164528,75848],\"sh\":[1141040,75848],\"cn\":[1207872,75848]}],\n\"actors/white_particle/snow_particle.rgba16.png\": [16,16,512,{\"jp\":[2094912,181920],\"us\":[2102288,181920],\"eu\":[1974256,181920],\"sh\":[1950768,181920],\"cn\":[2017600,181920]}],\n\"actors/white_particle_small/small_snow_particle.rgba16.png\": [16,16,512,{\"jp\":[1125200,206720],\"us\":[1132368,206720],\"eu\":[1004336,206720],\"sh\":[980848,206720],\"cn\":[1047664,206720]}],\n\"actors/whomp/whomp_back.rgba16.png\": [32,64,4096,{\"jp\":[1844608,115552],\"us\":[1851952,115552],\"eu\":[1723920,115552],\"sh\":[1700432,115552],\"cn\":[1767264,115552]}],\n\"actors/whomp/whomp_face.rgba16.png\": [32,64,4096,{\"jp\":[1844608,119648],\"us\":[1851952,119648],\"eu\":[1723920,119648],\"sh\":[1700432,119648],\"cn\":[1767264,119648]}],\n\"actors/whomp/whomp_hand.rgba16.png\": [32,32,2048,{\"jp\":[1844608,123744],\"us\":[1851952,123744],\"eu\":[1723920,123744],\"sh\":[1700432,123744],\"cn\":[1767264,123744]}],\n\"actors/whomp/whomp_surface.rgba16.png\": [32,32,2048,{\"jp\":[1844608,125792],\"us\":[1851952,125792],\"eu\":[1723920,125792],\"sh\":[1700432,125792],\"cn\":[1767264,125792]}],\n\"actors/wiggler/wiggler_eye.rgba16.png\": [32,32,2048,{\"jp\":[1568640,31280],\"us\":[1575856,31280],\"eu\":[1447824,31280],\"sh\":[1424336,31280],\"cn\":[1491168,31280]}],\n\"actors/wiggler/wiggler_flower.rgba16.png\": [32,32,2048,{\"jp\":[1568640,33328],\"us\":[1575856,33328],\"eu\":[1447824,33328],\"sh\":[1424336,33328],\"cn\":[1491168,33328]}],\n\"actors/wiggler/wiggler_frown.rgba16.png\": [32,32,2048,{\"jp\":[1568640,35376],\"us\":[1575856,35376],\"eu\":[1447824,35376],\"sh\":[1424336,35376],\"cn\":[1491168,35376]}],\n\"actors/wiggler/wiggler_nose_left_side.rgba16.png\": [32,64,4096,{\"jp\":[1568640,37424],\"us\":[1575856,37424],\"eu\":[1447824,37424],\"sh\":[1424336,37424],\"cn\":[1491168,37424]}],\n\"actors/wiggler/wiggler_nose_right_side.rgba16.png\": [32,64,4096,{\"jp\":[1568640,41520],\"us\":[1575856,41520],\"eu\":[1447824,41520],\"sh\":[1424336,41520],\"cn\":[1491168,41520]}],\n\"actors/wiggler/wiggler_segment_left_side.rgba16.png\": [32,64,4096,{\"jp\":[1568640,23088],\"us\":[1575856,23088],\"eu\":[1447824,23088],\"sh\":[1424336,23088],\"cn\":[1491168,23088]}],\n\"actors/wiggler/wiggler_segment_right_side.rgba16.png\": [32,64,4096,{\"jp\":[1568640,27184],\"us\":[1575856,27184],\"eu\":[1447824,27184],\"sh\":[1424336,27184],\"cn\":[1491168,27184]}],\n\"actors/wooden_signpost/wooden_signpost_back.rgba16.png\": [32,32,2048,{\"jp\":[2094912,182728],\"us\":[2102288,182728],\"eu\":[1974256,182728],\"sh\":[1950768,182728],\"cn\":[2017600,182728]}],\n\"actors/wooden_signpost/wooden_signpost_front.rgba16.png\": [32,32,2048,{\"jp\":[2094912,184776],\"us\":[2102288,184776],\"eu\":[1974256,184776],\"sh\":[1950768,184776],\"cn\":[2017600,184776]}],\n\"actors/yellow_sphere/yellow_sphere.rgba16.png\": [32,32,2048,{\"jp\":[1215456,64],\"us\":[1222624,64],\"eu\":[1094592,64],\"sh\":[1071104,64],\"cn\":[1137936,64]}],\n\"actors/yellow_sphere_small/small_yellow_sphere.rgba16.png\": [32,32,2048,{\"jp\":[1215456,64],\"us\":[1222624,64],\"eu\":[1094592,64],\"sh\":[1071104,64],\"cn\":[1137936,64]}],\n\"actors/yoshi/yoshi_eye.rgba16.png\": [16,16,512,{\"jp\":[1490032,115872],\"us\":[1497200,116104],\"eu\":[1369168,116104],\"sh\":[1345680,116104],\"cn\":[1412512,116104]}],\n\"actors/yoshi/yoshi_eye_blink.rgba16.png\": [16,16,512,{\"jp\":[1490032,116384],\"us\":[1497200,116616],\"eu\":[1369168,116616],\"sh\":[1345680,116616],\"cn\":[1412512,116616]}],\n\"actors/yoshi/yoshi_nostril.rgba16.png\": [16,16,512,{\"jp\":[1490032,116896],\"us\":[1497200,117128],\"eu\":[1369168,117128],\"sh\":[1345680,117128],\"cn\":[1412512,117128]}],\n\"actors/yoshi_egg/yoshi_egg_0_unused.rgba16.png\": [32,32,2048,{\"jp\":[1215456,22456],\"us\":[1222624,22456],\"eu\":[1094592,22456],\"sh\":[1071104,22456],\"cn\":[1137936,22456]}],\n\"actors/yoshi_egg/yoshi_egg_1_unused.rgba16.png\": [32,32,2048,{\"jp\":[1215456,24504],\"us\":[1222624,24504],\"eu\":[1094592,24504],\"sh\":[1071104,24504],\"cn\":[1137936,24504]}],\n\"actors/yoshi_egg/yoshi_egg_2_unused.rgba16.png\": [32,32,2048,{\"jp\":[1215456,26552],\"us\":[1222624,26552],\"eu\":[1094592,26552],\"sh\":[1071104,26552],\"cn\":[1137936,26552]}],\n\"actors/yoshi_egg/yoshi_egg_3_unused.rgba16.png\": [32,32,2048,{\"jp\":[1215456,28600],\"us\":[1222624,28600],\"eu\":[1094592,28600],\"sh\":[1071104,28600],\"cn\":[1137936,28600]}],\n\"actors/yoshi_egg/yoshi_egg_4_unused.rgba16.png\": [32,32,2048,{\"jp\":[1215456,30648],\"us\":[1222624,30648],\"eu\":[1094592,30648],\"sh\":[1071104,30648],\"cn\":[1137936,30648]}],\n\"actors/yoshi_egg/yoshi_egg_5_unused.rgba16.png\": [32,32,2048,{\"jp\":[1215456,32696],\"us\":[1222624,32696],\"eu\":[1094592,32696],\"sh\":[1071104,32696],\"cn\":[1137936,32696]}],\n\"actors/yoshi_egg/yoshi_egg_6_unused.rgba16.png\": [32,32,2048,{\"jp\":[1215456,34744],\"us\":[1222624,34744],\"eu\":[1094592,34744],\"sh\":[1071104,34744],\"cn\":[1137936,34744]}],\n\"actors/yoshi_egg/yoshi_egg_7_unused.rgba16.png\": [32,32,2048,{\"jp\":[1215456,36792],\"us\":[1222624,36792],\"eu\":[1094592,36792],\"sh\":[1071104,36792],\"cn\":[1137936,36792]}],\n\"assets/demos/bbh.bin\": [988,{\"jp\":[5733368],\"us\":[5741664],\"eu\":[5620584],\"sh\":[5589632],\"cn\":[5662656]}],\n\"assets/demos/bitdw.bin\": [1412,{\"us\":[5747100],\"sh\":[5595068],\"cn\":[5668092]}],\n\"assets/demos/ccm.bin\": [1320,{\"jp\":[5734356],\"us\":[5742652],\"eu\":[5621572],\"sh\":[5590620],\"cn\":[5663644]}],\n\"assets/demos/hmc.bin\": [980,{\"jp\":[5735676],\"us\":[5743972],\"eu\":[5622892],\"sh\":[5591940],\"cn\":[5664964]}],\n\"assets/demos/jrb.bin\": [620,{\"jp\":[5736656],\"us\":[5744952],\"eu\":[5623872],\"sh\":[5592920],\"cn\":[5665944]}],\n\"assets/demos/pss.bin\": [748,{\"jp\":[5737948],\"us\":[5746244],\"eu\":[5625164],\"sh\":[5594212],\"cn\":[5667236]}],\n\"assets/demos/unused.bin\": [108,{\"jp\":[5738696],\"us\":[5746992],\"eu\":[5625912],\"sh\":[5594960],\"cn\":[5667984]}],\n\"assets/demos/wf.bin\": [672,{\"jp\":[5737276],\"us\":[5745572],\"eu\":[5624492],\"sh\":[5593540],\"cn\":[5666564]}],\n\"levels/bbh/0.rgba16.png\": [32,64,4096,{\"jp\":[3604960,0],\"us\":[3611712,0],\"eu\":[3485312,0],\"sh\":[3459680,0],\"cn\":[3533440,0]}],\n\"levels/bbh/1.rgba16.png\": [32,32,2048,{\"jp\":[3604960,4096],\"us\":[3611712,4096],\"eu\":[3485312,4096],\"sh\":[3459680,4096],\"cn\":[3533440,4096]}],\n\"levels/bbh/2.rgba16.png\": [32,32,2048,{\"jp\":[3604960,6144],\"us\":[3611712,6144],\"eu\":[3485312,6144],\"sh\":[3459680,6144],\"cn\":[3533440,6144]}],\n\"levels/bbh/3.rgba16.png\": [32,64,4096,{\"jp\":[3604960,8192],\"us\":[3611712,8192],\"eu\":[3485312,8192],\"sh\":[3459680,8192],\"cn\":[3533440,8192]}],\n\"levels/bbh/4.rgba16.png\": [16,32,1024,{\"jp\":[3604960,12288],\"us\":[3611712,12288],\"eu\":[3485312,12288],\"sh\":[3459680,12288],\"cn\":[3533440,12288]}],\n\"levels/bbh/5.rgba16.png\": [32,64,4096,{\"jp\":[3604960,13312],\"us\":[3611712,13312],\"eu\":[3485312,13312],\"sh\":[3459680,13312],\"cn\":[3533440,13312]}],\n\"levels/bbh/6.rgba16.png\": [16,32,1024,{\"jp\":[3604960,17408],\"us\":[3611712,17408],\"eu\":[3485312,17408],\"sh\":[3459680,17408],\"cn\":[3533440,17408]}],\n\"levels/bitdw/0.rgba16.png\": [32,32,2048,{\"jp\":[4533568,0],\"us\":[4541952,0],\"eu\":[4415552,0],\"sh\":[4389920,0],\"cn\":[4463696,0]}],\n\"levels/bitdw/1.rgba16.png\": [32,32,2048,{\"jp\":[4533568,2048],\"us\":[4541952,2048],\"eu\":[4415552,2048],\"sh\":[4389920,2048],\"cn\":[4463696,2048]}],\n\"levels/bitdw/2.rgba16.png\": [32,32,2048,{\"jp\":[4533568,4096],\"us\":[4541952,4096],\"eu\":[4415552,4096],\"sh\":[4389920,4096],\"cn\":[4463696,4096]}],\n\"levels/bitdw/3.rgba16.png\": [32,32,2048,{\"jp\":[4533568,6144],\"us\":[4541952,6144],\"eu\":[4415552,6144],\"sh\":[4389920,6144],\"cn\":[4463696,6144]}],\n\"levels/bitfs/0.rgba16.png\": [32,64,4096,{\"jp\":[4584464,0],\"us\":[4592848,0],\"eu\":[4466448,0],\"sh\":[4440816,0],\"cn\":[4514592,0]}],\n\"levels/bitfs/1.rgba16.png\": [32,32,2048,{\"jp\":[4584464,4096],\"us\":[4592848,4096],\"eu\":[4466448,4096],\"sh\":[4440816,4096],\"cn\":[4514592,4096]}],\n\"levels/bitfs/2.rgba16.png\": [32,32,2048,{\"jp\":[4584464,6144],\"us\":[4592848,6144],\"eu\":[4466448,6144],\"sh\":[4440816,6144],\"cn\":[4514592,6144]}],\n\"levels/bits/0.rgba16.png\": [32,64,4096,{\"jp\":[4629216,0],\"us\":[4637600,0],\"eu\":[4511200,0],\"sh\":[4485568,0],\"cn\":[4559344,0]}],\n\"levels/bits/1.rgba16.png\": [64,32,4096,{\"jp\":[4629216,4096],\"us\":[4637600,4096],\"eu\":[4511200,4096],\"sh\":[4485568,4096],\"cn\":[4559344,4096]}],\n\"levels/bits/2.rgba16.png\": [32,32,2048,{\"jp\":[4629216,8192],\"us\":[4637600,8192],\"eu\":[4511200,8192],\"sh\":[4485568,8192],\"cn\":[4559344,8192]}],\n\"levels/bob/0.rgba16.png\": [32,32,2048,{\"jp\":[4170512,0],\"us\":[4178608,0],\"eu\":[4052208,0],\"sh\":[4026576,0],\"cn\":[4100352,0]}],\n\"levels/bob/1.rgba16.png\": [32,32,2048,{\"jp\":[4170512,2048],\"us\":[4178608,2048],\"eu\":[4052208,2048],\"sh\":[4026576,2048],\"cn\":[4100352,2048]}],\n\"levels/bob/2.rgba16.png\": [32,32,2048,{\"jp\":[4170512,4096],\"us\":[4178608,4096],\"eu\":[4052208,4096],\"sh\":[4026576,4096],\"cn\":[4100352,4096]}],\n\"levels/bob/3.rgba16.png\": [32,32,2048,{\"jp\":[4170512,6144],\"us\":[4178608,6144],\"eu\":[4052208,6144],\"sh\":[4026576,6144],\"cn\":[4100352,6144]}],\n\"levels/bob/4.rgba16.png\": [32,32,2048,{\"jp\":[4170512,8192],\"us\":[4178608,8192],\"eu\":[4052208,8192],\"sh\":[4026576,8192],\"cn\":[4100352,8192]}],\n\"levels/bowser_1/0.rgba16.png\": [32,64,4096,{\"jp\":[4982976,0],\"us\":[4991264,0],\"eu\":[4870192,0],\"sh\":[4839232,0],\"cn\":[4912256,0]}],\n\"levels/bowser_1/1.rgba16.png\": [32,32,2048,{\"jp\":[4982976,4096],\"us\":[4991264,4096],\"eu\":[4870192,4096],\"sh\":[4839232,4096],\"cn\":[4912256,4096]}],\n\"levels/bowser_1/2.rgba16.png\": [32,32,2048,{\"jp\":[4982976,6144],\"us\":[4991264,6144],\"eu\":[4870192,6144],\"sh\":[4839232,6144],\"cn\":[4912256,6144]}],\n\"levels/bowser_2/0.rgba16.png\": [32,32,2048,{\"jp\":[5028720,0],\"us\":[5037008,0],\"eu\":[4915936,0],\"sh\":[4884976,0],\"cn\":[4958000,0]}],\n\"levels/bowser_3/0.rgba16.png\": [32,32,2048,{\"jp\":[5032864,0],\"us\":[5041152,0],\"eu\":[4920080,0],\"sh\":[4889120,0],\"cn\":[4962144,0]}],\n\"levels/bowser_3/1.rgba16.png\": [32,32,2048,{\"jp\":[5032864,2048],\"us\":[5041152,2048],\"eu\":[4920080,2048],\"sh\":[4889120,2048],\"cn\":[4962144,2048]}],\n\"levels/bowser_3/2.rgba16.png\": [32,64,4096,{\"jp\":[5032864,4096],\"us\":[5041152,4096],\"eu\":[4920080,4096],\"sh\":[4889120,4096],\"cn\":[4962144,4096]}],\n\"levels/castle_grounds/0.rgba16.png\": [32,64,4096,{\"jp\":[4492416,0],\"us\":[4500416,0],\"eu\":[4374016,0],\"sh\":[4348384,0],\"cn\":[4422160,0]}],\n\"levels/castle_grounds/1.rgba16.png\": [64,32,4096,{\"jp\":[4492416,4096],\"us\":[4500416,4096],\"eu\":[4374016,4096],\"sh\":[4348384,4096],\"cn\":[4422160,4096]}],\n\"levels/castle_grounds/2.rgba16.png\": [64,32,4096,{\"jp\":[4492416,8192],\"us\":[4500416,8192],\"eu\":[4374016,8192],\"sh\":[4348384,8192],\"cn\":[4422160,8192]}],\n\"levels/castle_grounds/3.rgba16.png\": [32,64,4096,{\"jp\":[4492416,51688],\"us\":[4500416,51688],\"eu\":[4374016,51688],\"sh\":[4348384,51688],\"cn\":[4422160,51688]}],\n\"levels/castle_grounds/4.rgba16.png\": [32,64,4096,{\"jp\":[4492416,55784],\"us\":[4500416,55784],\"eu\":[4374016,55784],\"sh\":[4348384,55784],\"cn\":[4422160,55784]}],\n\"levels/castle_grounds/5.ia8.png\": [64,32,2048,{\"us\":[4500416,60136],\"eu\":[4374016,60136],\"sh\":[4348384,60136],\"cn\":[4422160,60136]}],\n\"levels/castle_inside/1.rgba16.png\": [32,32,2048,{\"jp\":[3754192,2048],\"us\":[3760960,2048],\"eu\":[3634560,2048],\"sh\":[3608928,2048],\"cn\":[3682704,2048]}],\n\"levels/castle_inside/10.rgba16.png\": [32,32,2048,{\"jp\":[3754192,28672],\"us\":[3760960,28672],\"eu\":[3634560,28672],\"sh\":[3608928,28672],\"cn\":[3682704,28672]}],\n\"levels/castle_inside/11.rgba16.png\": [32,32,2048,{\"jp\":[3754192,30720],\"us\":[3760960,30720],\"eu\":[3634560,30720],\"sh\":[3608928,30720],\"cn\":[3682704,30720]}],\n\"levels/castle_inside/12.rgba16.png\": [32,32,2048,{\"jp\":[3754192,32768],\"us\":[3760960,32768],\"eu\":[3634560,32768],\"sh\":[3608928,32768],\"cn\":[3682704,32768]}],\n\"levels/castle_inside/13.rgba16.png\": [32,32,2048,{\"jp\":[3754192,34816],\"us\":[3760960,34816],\"eu\":[3634560,34816],\"sh\":[3608928,34816],\"cn\":[3682704,34816]}],\n\"levels/castle_inside/14.rgba16.png\": [32,32,2048,{\"jp\":[3754192,36864],\"us\":[3760960,36864],\"eu\":[3634560,36864],\"sh\":[3608928,36864],\"cn\":[3682704,36864]}],\n\"levels/castle_inside/15.rgba16.png\": [32,32,2048,{\"jp\":[3754192,38912],\"us\":[3760960,38912],\"eu\":[3634560,38912],\"sh\":[3608928,38912],\"cn\":[3682704,38912]}],\n\"levels/castle_inside/16.ia16.png\": [32,32,2048,{\"jp\":[3754192,40960],\"us\":[3760960,40960],\"eu\":[3634560,40960],\"sh\":[3608928,40960],\"cn\":[3682704,40960]}],\n\"levels/castle_inside/17.rgba16.png\": [64,32,4096,{\"jp\":[3754192,43008],\"us\":[3760960,43008],\"eu\":[3634560,43008],\"sh\":[3608928,43008],\"cn\":[3682704,43008]}],\n\"levels/castle_inside/18.rgba16.png\": [64,32,4096,{\"jp\":[3754192,47104],\"us\":[3760960,47104],\"eu\":[3634560,47104],\"sh\":[3608928,47104],\"cn\":[3682704,47104]}],\n\"levels/castle_inside/19.rgba16.png\": [64,32,4096,{\"jp\":[3754192,51200],\"us\":[3760960,51200],\"eu\":[3634560,51200],\"sh\":[3608928,51200],\"cn\":[3682704,51200]}],\n\"levels/castle_inside/2.ia16.png\": [32,64,4096,{\"jp\":[3298272,47104],\"us\":[3305024,47104],\"eu\":[3178624,47104],\"sh\":[3152992,47104],\"cn\":[3226752,47104]}],\n\"levels/castle_inside/20.rgba16.png\": [64,32,4096,{\"jp\":[3754192,55296],\"us\":[3760960,55296],\"eu\":[3634560,55296],\"sh\":[3608928,55296],\"cn\":[3682704,55296]}],\n\"levels/castle_inside/21.rgba16.png\": [64,32,4096,{\"jp\":[3754192,59392],\"us\":[3760960,59392],\"eu\":[3634560,59392],\"sh\":[3608928,59392],\"cn\":[3682704,59392]}],\n\"levels/castle_inside/22.rgba16.png\": [64,32,4096,{\"jp\":[3754192,63488],\"us\":[3760960,63488],\"eu\":[3634560,63488],\"sh\":[3608928,63488],\"cn\":[3682704,63488]}],\n\"levels/castle_inside/23.rgba16.png\": [64,32,4096,{\"jp\":[3754192,67584]}],\n\"levels/castle_inside/23_us.rgba16.png\": [64,32,4096,{\"us\":[3760960,67584],\"eu\":[3634560,67584],\"sh\":[3608928,67584],\"cn\":[3682704,67584]}],\n\"levels/castle_inside/24.rgba16.png\": [64,32,4096,{\"jp\":[3754192,71680]}],\n\"levels/castle_inside/24_us.rgba16.png\": [64,32,4096,{\"us\":[3760960,71680],\"eu\":[3634560,71680],\"sh\":[3608928,71680],\"cn\":[3682704,71680]}],\n\"levels/castle_inside/25.rgba16.png\": [64,32,4096,{\"jp\":[3754192,75776],\"us\":[3760960,75776],\"eu\":[3634560,75776],\"sh\":[3608928,75776],\"cn\":[3682704,75776]}],\n\"levels/castle_inside/26.rgba16.png\": [64,32,4096,{\"jp\":[3754192,79872],\"us\":[3760960,79872],\"eu\":[3634560,79872],\"sh\":[3608928,79872],\"cn\":[3682704,79872]}],\n\"levels/castle_inside/27.rgba16.png\": [64,32,4096,{\"jp\":[3754192,83968],\"us\":[3760960,83968],\"eu\":[3634560,83968],\"sh\":[3608928,83968],\"cn\":[3682704,83968]}],\n\"levels/castle_inside/28.rgba16.png\": [64,32,4096,{\"jp\":[3754192,88064],\"us\":[3760960,88064],\"eu\":[3634560,88064],\"sh\":[3608928,88064],\"cn\":[3682704,88064]}],\n\"levels/castle_inside/29.rgba16.png\": [32,32,2048,{\"jp\":[3754192,92160],\"us\":[3760960,92160],\"eu\":[3634560,92160],\"sh\":[3608928,92160],\"cn\":[3682704,92160]}],\n\"levels/castle_inside/3.rgba16.png\": [32,64,4096,{\"jp\":[3754192,8192],\"us\":[3760960,8192],\"eu\":[3634560,8192],\"sh\":[3608928,8192],\"cn\":[3682704,8192]}],\n\"levels/castle_inside/30.rgba16.png\": [32,32,2048,{\"jp\":[3754192,94208],\"us\":[3760960,94208],\"eu\":[3634560,94208],\"sh\":[3608928,94208],\"cn\":[3682704,94208]}],\n\"levels/castle_inside/31.rgba16.png\": [64,32,4096,{\"jp\":[3754192,96256],\"us\":[3760960,96256],\"eu\":[3634560,96256],\"sh\":[3608928,96256],\"cn\":[3682704,96256]}],\n\"levels/castle_inside/32.rgba16.png\": [64,32,4096,{\"jp\":[3754192,100352],\"us\":[3760960,100352],\"eu\":[3634560,100352],\"sh\":[3608928,100352],\"cn\":[3682704,100352]}],\n\"levels/castle_inside/33.rgba16.png\": [64,32,4096,{\"jp\":[3754192,104448],\"us\":[3760960,104448],\"eu\":[3634560,104448],\"sh\":[3608928,104448],\"cn\":[3682704,104448]}],\n\"levels/castle_inside/34.rgba16.png\": [64,32,4096,{\"jp\":[3754192,108544],\"us\":[3760960,108544],\"eu\":[3634560,108544],\"sh\":[3608928,108544],\"cn\":[3682704,108544]}],\n\"levels/castle_inside/35.rgba16.png\": [64,32,4096,{\"jp\":[3754192,112640],\"us\":[3760960,112640],\"eu\":[3634560,112640],\"sh\":[3608928,112640],\"cn\":[3682704,112640]}],\n\"levels/castle_inside/36.rgba16.png\": [64,32,4096,{\"jp\":[3754192,116736],\"us\":[3760960,116736],\"eu\":[3634560,116736],\"sh\":[3608928,116736],\"cn\":[3682704,116736]}],\n\"levels/castle_inside/37.rgba16.png\": [64,32,4096,{\"jp\":[3754192,120832],\"us\":[3760960,120832],\"eu\":[3634560,120832],\"sh\":[3608928,120832],\"cn\":[3682704,120832]}],\n\"levels/castle_inside/38.rgba16.png\": [64,32,4096,{\"jp\":[3754192,124928],\"us\":[3760960,124928],\"eu\":[3634560,124928],\"sh\":[3608928,124928],\"cn\":[3682704,124928]}],\n\"levels/castle_inside/39.rgba16.png\": [64,32,4096,{\"jp\":[3754192,129024],\"us\":[3760960,129024],\"eu\":[3634560,129024],\"sh\":[3608928,129024],\"cn\":[3682704,129024]}],\n\"levels/castle_inside/4.rgba16.png\": [32,32,2048,{\"jp\":[3754192,12288],\"us\":[3760960,12288],\"eu\":[3634560,12288],\"sh\":[3608928,12288],\"cn\":[3682704,12288]}],\n\"levels/castle_inside/40.rgba16.png\": [64,32,4096,{\"jp\":[3754192,133120],\"us\":[3760960,133120],\"eu\":[3634560,133120],\"sh\":[3608928,133120],\"cn\":[3682704,133120]}],\n\"levels/castle_inside/5.rgba16.png\": [32,64,4096,{\"jp\":[3754192,14336],\"us\":[3760960,14336],\"eu\":[3634560,14336],\"sh\":[3608928,14336],\"cn\":[3682704,14336]}],\n\"levels/castle_inside/6.rgba16.png\": [32,64,4096,{\"jp\":[3754192,18432],\"us\":[3760960,18432],\"eu\":[3634560,18432],\"sh\":[3608928,18432],\"cn\":[3682704,18432]}],\n\"levels/castle_inside/7.rgba16.png\": [32,32,2048,{\"jp\":[3754192,22528],\"us\":[3760960,22528],\"eu\":[3634560,22528],\"sh\":[3608928,22528],\"cn\":[3682704,22528]}],\n\"levels/castle_inside/8.rgba16.png\": [32,32,2048,{\"jp\":[3754192,24576],\"us\":[3760960,24576],\"eu\":[3634560,24576],\"sh\":[3608928,24576],\"cn\":[3682704,24576]}],\n\"levels/castle_inside/9.rgba16.png\": [32,32,2048,{\"jp\":[3754192,26624],\"us\":[3760960,26624],\"eu\":[3634560,26624],\"sh\":[3608928,26624],\"cn\":[3682704,26624]}],\n\"levels/castle_inside/castle_light.ia16.png\": [32,32,2048,{\"jp\":[3432432,47104],\"us\":[3439184,47104],\"eu\":[3312784,47104],\"sh\":[3287152,47104],\"cn\":[3360912,47104]}],\n\"levels/ccm/0.rgba16.png\": [32,32,2048,{\"jp\":[3677936,0],\"us\":[3684688,0],\"eu\":[3558288,0],\"sh\":[3532656,0],\"cn\":[3606416,0]}],\n\"levels/ccm/1.rgba16.png\": [32,4,256,{\"jp\":[3677936,2048],\"us\":[3684688,2048],\"eu\":[3558288,2048],\"sh\":[3532656,2048],\"cn\":[3606416,2048]}],\n\"levels/ccm/10.rgba16.png\": [32,32,2048,{\"jp\":[3677936,17152],\"us\":[3684688,17152],\"eu\":[3558288,17152],\"sh\":[3532656,17152],\"cn\":[3606416,17152]}],\n\"levels/ccm/11.rgba16.png\": [32,32,2048,{\"jp\":[3677936,19200],\"us\":[3684688,19200],\"eu\":[3558288,19200],\"sh\":[3532656,19200],\"cn\":[3606416,19200]}],\n\"levels/ccm/12.rgba16.png\": [32,32,2048,{\"jp\":[3677936,72024],\"us\":[3684688,72024],\"eu\":[3558288,72024],\"sh\":[3532656,72024],\"cn\":[3606416,72024]}],\n\"levels/ccm/2.rgba16.png\": [32,32,2048,{\"jp\":[3677936,2304],\"us\":[3684688,2304],\"eu\":[3558288,2304],\"sh\":[3532656,2304],\"cn\":[3606416,2304]}],\n\"levels/ccm/3.rgba16.png\": [32,32,2048,{\"jp\":[3677936,4352],\"us\":[3684688,4352],\"eu\":[3558288,4352],\"sh\":[3532656,4352],\"cn\":[3606416,4352]}],\n\"levels/ccm/4.rgba16.png\": [32,32,2048,{\"jp\":[3677936,6400],\"us\":[3684688,6400],\"eu\":[3558288,6400],\"sh\":[3532656,6400],\"cn\":[3606416,6400]}],\n\"levels/ccm/5.rgba16.png\": [32,32,2048,{\"jp\":[1436272,48240],\"us\":[1443440,48240],\"eu\":[1315408,48240],\"sh\":[1291920,48240],\"cn\":[1358752,48240]}],\n\"levels/ccm/6.rgba16.png\": [32,32,2048,{\"jp\":[1436272,46192],\"us\":[1443440,46192],\"eu\":[1315408,46192],\"sh\":[1291920,46192],\"cn\":[1358752,46192]}],\n\"levels/ccm/7.rgba16.png\": [32,32,2048,{\"jp\":[3677936,12544],\"us\":[3684688,12544],\"eu\":[3558288,12544],\"sh\":[3532656,12544],\"cn\":[3606416,12544]}],\n\"levels/ccm/8.ia16.png\": [16,16,512,{\"jp\":[3677936,14592],\"us\":[3684688,14592],\"eu\":[3558288,14592],\"sh\":[3532656,14592],\"cn\":[3606416,14592]}],\n\"levels/ccm/9.ia16.png\": [32,32,2048,{\"jp\":[3677936,15104],\"us\":[3684688,15104],\"eu\":[3558288,15104],\"sh\":[3532656,15104],\"cn\":[3606416,15104]}],\n\"levels/cotmc/0.rgba16.png\": [64,32,4096,{\"jp\":[4939888,0],\"us\":[4948176,0],\"eu\":[4827104,0],\"sh\":[4796144,0],\"cn\":[4869152,0]}],\n\"levels/cotmc/1.rgba16.png\": [32,32,2048,{\"jp\":[4939888,4096],\"us\":[4948176,4096],\"eu\":[4827104,4096],\"sh\":[4796144,4096],\"cn\":[4869152,4096]}],\n\"levels/cotmc/2.rgba16.png\": [32,32,2048,{\"jp\":[4939888,6144],\"us\":[4948176,6144],\"eu\":[4827104,6144],\"sh\":[4796144,6144],\"cn\":[4869152,6144]}],\n\"levels/cotmc/3.rgba16.png\": [32,32,2048,{\"jp\":[4939888,8192],\"us\":[4948176,8192],\"eu\":[4827104,8192],\"sh\":[4796144,8192],\"cn\":[4869152,8192]}],\n\"levels/cotmc/4.rgba16.png\": [64,16,2048,{\"jp\":[4939888,10240],\"us\":[4948176,10240],\"eu\":[4827104,10240],\"sh\":[4796144,10240],\"cn\":[4869152,10240]}],\n\"levels/ddd/0.rgba16.png\": [32,64,4096,{\"jp\":[4765904,0],\"us\":[4774192,0],\"eu\":[4647792,0],\"sh\":[4622160,0],\"cn\":[4695936,0]}],\n\"levels/ddd/1.rgba16.png\": [32,32,2048,{\"jp\":[3432432,4096],\"us\":[3439184,4096],\"eu\":[3312784,4096],\"sh\":[3287152,4096],\"cn\":[3360912,4096]}],\n\"levels/ddd/2.rgba16.png\": [32,32,2048,{\"jp\":[4765904,6144],\"us\":[4774192,6144],\"eu\":[4647792,6144],\"sh\":[4622160,6144],\"cn\":[4695936,6144]}],\n\"levels/ddd/3.rgba16.png\": [64,32,4096,{\"jp\":[4765904,8192],\"us\":[4774192,8192],\"eu\":[4647792,8192],\"sh\":[4622160,8192],\"cn\":[4695936,8192]}],\n\"levels/ddd/4.rgba16.png\": [32,32,2048,{\"jp\":[4765904,12288],\"us\":[4774192,12288],\"eu\":[4647792,12288],\"sh\":[4622160,12288],\"cn\":[4695936,12288]}],\n\"levels/ending/cake.png\": [153600,{\"jp\":[4834992,0],\"us\":[4843280,0],\"sh\":[4691248,0]}],\n\"levels/ending/cake_eu.png\": [143360,{\"eu\":[4716880,0]}],\n\"levels/ending/cake_cn.png\": [153600,{\"cn\":[4765024,0]}],\n\"levels/ending/eu_023000.rgba16.png\": [64,32,4096,{\"eu\":[4716880,143360]}],\n\"levels/ending/eu_024000.rgba16.png\": [64,32,4096,{\"eu\":[4716880,147456]}],\n\"levels/ending/eu_025000.rgba16.png\": [64,32,4096,{\"eu\":[4716880,151552]}],\n\"levels/ending/eu_026000.rgba16.png\": [64,32,4096,{\"eu\":[4716880,155648]}],\n\"levels/ending/eu_027000.rgba16.png\": [64,32,4096,{\"eu\":[4716880,159744]}],\n\"levels/ending/eu_028000.rgba16.png\": [64,32,4096,{\"eu\":[4716880,163840]}],\n\"levels/hmc/0.rgba16.png\": [32,64,4096,{\"jp\":[3993136,0],\"us\":[4001216,0],\"eu\":[3874816,0],\"sh\":[3849184,0],\"cn\":[3922960,0]}],\n\"levels/hmc/1.rgba16.png\": [32,64,4096,{\"jp\":[3993136,4096],\"us\":[4001216,4096],\"eu\":[3874816,4096],\"sh\":[3849184,4096],\"cn\":[3922960,4096]}],\n\"levels/hmc/2.rgba16.png\": [32,64,4096,{\"jp\":[3993136,8192],\"us\":[4001216,8192],\"eu\":[3874816,8192],\"sh\":[3849184,8192],\"cn\":[3922960,8192]}],\n\"levels/hmc/3.rgba16.png\": [32,32,2048,{\"jp\":[3993136,12288],\"us\":[4001216,12288],\"eu\":[3874816,12288],\"sh\":[3849184,12288],\"cn\":[3922960,12288]}],\n\"levels/hmc/4.rgba16.png\": [32,32,2048,{\"jp\":[3993136,14336],\"us\":[4001216,14336],\"eu\":[3874816,14336],\"sh\":[3849184,14336],\"cn\":[3922960,14336]}],\n\"levels/hmc/5.rgba16.png\": [32,32,2048,{\"jp\":[3993136,16384],\"us\":[4001216,16384],\"eu\":[3874816,16384],\"sh\":[3849184,16384],\"cn\":[3922960,16384]}],\n\"levels/hmc/6.rgba16.png\": [32,64,4096,{\"jp\":[3993136,18432],\"us\":[4001216,18432],\"eu\":[3874816,18432],\"sh\":[3849184,18432],\"cn\":[3922960,18432]}],\n\"levels/hmc/7.rgba16.png\": [32,32,2048,{\"jp\":[3754192,92160],\"us\":[3760960,92160],\"eu\":[3634560,92160],\"sh\":[3608928,92160],\"cn\":[3682704,92160]}],\n\"levels/intro/0.rgba16.png\": [32,32,2048,{\"jp\":[2524448,32416],\"us\":[2532256,32416],\"eu\":[2401056,32416],\"sh\":[2377888,32416],\"cn\":[2448576,31392]}],\n\"levels/intro/1.rgba16.png\": [32,32,2048,{\"jp\":[2524448,34464],\"us\":[2532256,34464],\"eu\":[2401056,34464],\"sh\":[2377888,34464],\"cn\":[2448576,33440]}],\n\"levels/intro/2_copyright.rgba16.png\": [128,16,4096,{\"jp\":[2524448,46240],\"us\":[2532256,46240]}],\n\"levels/intro/2_cn_copyright.rgba16.png\": [128,16,4096,{\"cn\":[2448576,47392]}],\n\"levels/intro/2_cn_copyright_ique.rgba16.png\": [128,16,4096,{\"cn\":[2448576,51488]}],\n\"levels/intro/2_eu_copyright.rgba16.png\": [128,16,4096,{\"eu\":[2401056,46240],\"sh\":[2377888,46240]}],\n\"levels/intro/3_eu_tm.rgba16.png\": [16,16,512,{\"eu\":[2401056,50336]}],\n\"levels/intro/3_tm.rgba16.png\": [16,16,512,{\"jp\":[2524448,50336],\"us\":[2532256,50336]}],\n\"levels/intro/3_sh_tm.rgba16.png\": [16,16,512,{\"sh\":[2377888,50336],\"cn\":[2448576,55584]}],\n\"levels/jrb/0.rgba16.png\": [32,32,2048,{\"jp\":[3432432,4096],\"us\":[3439184,4096],\"eu\":[3312784,4096],\"sh\":[3287152,4096],\"cn\":[3360912,4096]}],\n\"levels/jrb/1.rgba16.png\": [64,32,4096,{\"jp\":[4294592,2048],\"us\":[4302688,2048],\"eu\":[4176288,2048],\"sh\":[4150656,2048],\"cn\":[4224432,2048]}],\n\"levels/jrb/2.rgba16.png\": [32,32,2048,{\"jp\":[4294592,6144],\"us\":[4302688,6144],\"eu\":[4176288,6144],\"sh\":[4150656,6144],\"cn\":[4224432,6144]}],\n\"levels/jrb/3.rgba16.png\": [32,32,2048,{\"jp\":[4294592,8192],\"us\":[4302688,8192],\"eu\":[4176288,8192],\"sh\":[4150656,8192],\"cn\":[4224432,8192]}],\n\"levels/lll/0.rgba16.png\": [32,32,2048,{\"jp\":[4678592,0],\"us\":[4687008,0],\"eu\":[4560608,0],\"sh\":[4534976,0],\"cn\":[4608752,0]}],\n\"levels/lll/1.rgba16.png\": [32,32,2048,{\"jp\":[4678592,2048],\"us\":[4687008,2048],\"eu\":[4560608,2048],\"sh\":[4534976,2048],\"cn\":[4608752,2048]}],\n\"levels/lll/10.rgba16.png\": [32,32,2048,{\"jp\":[4678592,20480],\"us\":[4687008,20480],\"eu\":[4560608,20480],\"sh\":[4534976,20480],\"cn\":[4608752,20480]}],\n\"levels/lll/11.rgba16.png\": [32,32,2048,{\"jp\":[4678592,22528],\"us\":[4687008,22528],\"eu\":[4560608,22528],\"sh\":[4534976,22528],\"cn\":[4608752,22528]}],\n\"levels/lll/12.rgba16.png\": [32,32,2048,{\"jp\":[4678592,24576],\"us\":[4687008,24576],\"eu\":[4560608,24576],\"sh\":[4534976,24576],\"cn\":[4608752,24576]}],\n\"levels/lll/13.rgba16.png\": [32,32,2048,{\"jp\":[4678592,26624],\"us\":[4687008,26624],\"eu\":[4560608,26624],\"sh\":[4534976,26624],\"cn\":[4608752,26624]}],\n\"levels/lll/14.rgba16.png\": [32,32,2048,{\"jp\":[4678592,28672],\"us\":[4687008,28672],\"eu\":[4560608,28672],\"sh\":[4534976,28672],\"cn\":[4608752,28672]}],\n\"levels/lll/15.rgba16.png\": [32,32,2048,{\"jp\":[4678592,30720],\"us\":[4687008,30720],\"eu\":[4560608,30720],\"sh\":[4534976,30720],\"cn\":[4608752,30720]}],\n\"levels/lll/16.rgba16.png\": [32,32,2048,{\"jp\":[4678592,32768],\"us\":[4687008,32768],\"eu\":[4560608,32768],\"sh\":[4534976,32768],\"cn\":[4608752,32768]}],\n\"levels/lll/17.rgba16.png\": [32,32,2048,{\"jp\":[4678592,34816],\"us\":[4687008,34816],\"eu\":[4560608,34816],\"sh\":[4534976,34816],\"cn\":[4608752,34816]}],\n\"levels/lll/18.rgba16.png\": [32,32,2048,{\"jp\":[4678592,36864],\"us\":[4687008,36864],\"eu\":[4560608,36864],\"sh\":[4534976,36864],\"cn\":[4608752,36864]}],\n\"levels/lll/19.rgba16.png\": [32,32,2048,{\"jp\":[4678592,38912],\"us\":[4687008,38912],\"eu\":[4560608,38912],\"sh\":[4534976,38912],\"cn\":[4608752,38912]}],\n\"levels/lll/2.rgba16.png\": [32,32,2048,{\"jp\":[4678592,4096],\"us\":[4687008,4096],\"eu\":[4560608,4096],\"sh\":[4534976,4096],\"cn\":[4608752,4096]}],\n\"levels/lll/20.rgba16.png\": [32,32,2048,{\"jp\":[4678592,40960],\"us\":[4687008,40960],\"eu\":[4560608,40960],\"sh\":[4534976,40960],\"cn\":[4608752,40960]}],\n\"levels/lll/21.rgba16.png\": [32,32,2048,{\"jp\":[4678592,43008],\"us\":[4687008,43008],\"eu\":[4560608,43008],\"sh\":[4534976,43008],\"cn\":[4608752,43008]}],\n\"levels/lll/22.rgba16.png\": [32,32,2048,{\"jp\":[4678592,45056],\"us\":[4687008,45056],\"eu\":[4560608,45056],\"sh\":[4534976,45056],\"cn\":[4608752,45056]}],\n\"levels/lll/23.rgba16.png\": [32,32,2048,{\"jp\":[4678592,47104],\"us\":[4687008,47104],\"eu\":[4560608,47104],\"sh\":[4534976,47104],\"cn\":[4608752,47104]}],\n\"levels/lll/24.rgba16.png\": [32,32,2048,{\"jp\":[4678592,49152],\"us\":[4687008,49152],\"eu\":[4560608,49152],\"sh\":[4534976,49152],\"cn\":[4608752,49152]}],\n\"levels/lll/25.rgba16.png\": [32,32,2048,{\"jp\":[4678592,51200],\"us\":[4687008,51200],\"eu\":[4560608,51200],\"sh\":[4534976,51200],\"cn\":[4608752,51200]}],\n\"levels/lll/26.rgba16.png\": [16,16,512,{\"jp\":[4678592,53248],\"us\":[4687008,53248],\"eu\":[4560608,53248],\"sh\":[4534976,53248],\"cn\":[4608752,53248]}],\n\"levels/lll/27.ia16.png\": [16,16,512,{\"jp\":[3677936,14592],\"us\":[3684688,14592],\"eu\":[3558288,14592],\"sh\":[3532656,14592],\"cn\":[3606416,14592]}],\n\"levels/lll/28.rgba16.png\": [32,32,2048,{\"jp\":[4678592,54272],\"us\":[4687008,54272],\"eu\":[4560608,54272],\"sh\":[4534976,54272],\"cn\":[4608752,54272]}],\n\"levels/lll/29.rgba16.png\": [32,32,2048,{\"jp\":[4678592,56320],\"us\":[4687008,56320],\"eu\":[4560608,56320],\"sh\":[4534976,56320],\"cn\":[4608752,56320]}],\n\"levels/lll/3.rgba16.png\": [32,32,2048,{\"jp\":[4678592,6144],\"us\":[4687008,6144],\"eu\":[4560608,6144],\"sh\":[4534976,6144],\"cn\":[4608752,6144]}],\n\"levels/lll/30.rgba16.png\": [32,32,2048,{\"jp\":[4678592,58368],\"us\":[4687008,58368],\"eu\":[4560608,58368],\"sh\":[4534976,58368],\"cn\":[4608752,58368]}],\n\"levels/lll/31.rgba16.png\": [32,32,2048,{\"jp\":[4678592,60416],\"us\":[4687008,60416],\"eu\":[4560608,60416],\"sh\":[4534976,60416],\"cn\":[4608752,60416]}],\n\"levels/lll/32.rgba16.png\": [64,16,2048,{\"jp\":[4678592,62464],\"us\":[4687008,62464],\"eu\":[4560608,62464],\"sh\":[4534976,62464],\"cn\":[4608752,62464]}],\n\"levels/lll/4.rgba16.png\": [32,32,2048,{\"jp\":[4678592,8192],\"us\":[4687008,8192],\"eu\":[4560608,8192],\"sh\":[4534976,8192],\"cn\":[4608752,8192]}],\n\"levels/lll/5.rgba16.png\": [32,32,2048,{\"jp\":[4678592,10240],\"us\":[4687008,10240],\"eu\":[4560608,10240],\"sh\":[4534976,10240],\"cn\":[4608752,10240]}],\n\"levels/lll/6.rgba16.png\": [32,32,2048,{\"jp\":[4678592,12288],\"us\":[4687008,12288],\"eu\":[4560608,12288],\"sh\":[4534976,12288],\"cn\":[4608752,12288]}],\n\"levels/lll/7.rgba16.png\": [32,32,2048,{\"jp\":[3262320,6144],\"us\":[3269072,6144],\"eu\":[3142672,6144],\"sh\":[3117040,6144],\"cn\":[3190800,6144]}],\n\"levels/lll/8.rgba16.png\": [32,32,2048,{\"jp\":[4678592,16384],\"us\":[4687008,16384],\"eu\":[4560608,16384],\"sh\":[4534976,16384],\"cn\":[4608752,16384]}],\n\"levels/lll/9.rgba16.png\": [32,32,2048,{\"jp\":[4678592,18432],\"us\":[4687008,18432],\"eu\":[4560608,18432],\"sh\":[4534976,18432],\"cn\":[4608752,18432]}],\n\"levels/menu/main_menu_seg7.00018.rgba16.png\": [32,32,2048,{\"jp\":[2770736,24],\"us\":[2778544,24],\"eu\":[2647072,24],\"sh\":[2625456,24],\"cn\":[2700128,24]}],\n\"levels/menu/main_menu_seg7.00818.rgba16.png\": [32,32,2048,{\"jp\":[2770736,2072],\"us\":[2778544,2072],\"eu\":[2647072,2072],\"sh\":[2625456,2072],\"cn\":[2700128,2072]}],\n\"levels/menu/main_menu_seg7.01018.rgba16.png\": [64,32,4096,{\"jp\":[2770736,4120],\"us\":[2778544,4120],\"eu\":[2647072,4120],\"sh\":[2625456,4120],\"cn\":[2700128,4120]}],\n\"levels/menu/main_menu_seg7.02018.rgba16.png\": [64,32,4096,{\"jp\":[2770736,8216],\"us\":[2778544,8216],\"eu\":[2647072,8216],\"sh\":[2625456,8216],\"cn\":[2700128,8216]}],\n\"levels/menu/main_menu_seg7.03468.rgba16.png\": [32,32,2048,{\"jp\":[2770736,13416],\"us\":[2778544,13416],\"eu\":[2647072,13416],\"sh\":[2625456,13416],\"cn\":[2700128,13416]}],\n\"levels/menu/main_menu_seg7.03C68.rgba16.png\": [32,32,2048,{\"jp\":[2770736,15464],\"us\":[2778544,15464],\"eu\":[2647072,15464],\"sh\":[2625456,15464],\"cn\":[2700128,15464]}],\n\"levels/menu/main_menu_seg7.04468.rgba16.png\": [32,32,2048,{\"jp\":[2770736,17512],\"us\":[2778544,17512],\"eu\":[2647072,17512],\"sh\":[2625456,17512],\"cn\":[2700128,17512]}],\n\"levels/menu/main_menu_seg7.04C68.rgba16.png\": [32,32,2048,{\"jp\":[2770736,19560],\"us\":[2778544,19560],\"eu\":[2647072,19560],\"sh\":[2625456,19560],\"cn\":[2700128,19560]}],\n\"levels/menu/main_menu_seg7.05468.rgba16.png\": [32,32,2048,{\"jp\":[2770736,21608],\"us\":[2778544,21608],\"eu\":[2647072,21608],\"sh\":[2625456,21608],\"cn\":[2700128,21608]}],\n\"levels/menu/main_menu_seg7.06328.rgba16.png\": [32,32,2048,{\"jp\":[2770736,25384],\"us\":[2778544,25384],\"eu\":[2647072,25384],\"sh\":[2625456,25384],\"cn\":[2700128,25384]}],\n\"levels/menu/main_menu_seg7.06B28.rgba16.png\": [32,32,2048,{\"jp\":[2770736,27432],\"us\":[2778544,27432],\"eu\":[2647072,27432],\"sh\":[2625456,27432],\"cn\":[2700128,27432]}],\n\"levels/menu/main_menu_seg7.073D0.rgba16.png\": [16,16,512,{\"jp\":[2770736,29648],\"us\":[2778544,29648],\"eu\":[2647072,29648],\"sh\":[2625456,29648],\"cn\":[2700128,29648]}],\n\"levels/menu/main_menu_seg7.075D0.rgba16.png\": [16,16,512,{\"jp\":[2770736,30160],\"us\":[2778544,30160],\"eu\":[2647072,30160],\"sh\":[2625456,30160],\"cn\":[2700128,30160]}],\n\"levels/menu/main_menu_seg7.077D0.rgba16.png\": [16,16,512,{\"jp\":[2770736,30672],\"us\":[2778544,30672],\"eu\":[2647072,30672],\"sh\":[2625456,30672],\"cn\":[2700128,30672]}],\n\"levels/menu/main_menu_seg7.079D0.rgba16.png\": [16,16,512,{\"jp\":[2770736,31184],\"us\":[2778544,31184],\"eu\":[2647072,31184],\"sh\":[2625456,31184],\"cn\":[2700128,31184]}],\n\"levels/menu/main_menu_seg7.07BD0.rgba16.png\": [16,16,512,{\"jp\":[2770736,31696],\"us\":[2778544,31696],\"eu\":[2647072,31696],\"sh\":[2625456,31696],\"cn\":[2700128,31696]}],\n\"levels/menu/main_menu_seg7.07DD0.rgba16.png\": [16,16,512,{\"jp\":[2770736,32208],\"us\":[2778544,32208],\"eu\":[2647072,32208],\"sh\":[2625456,32208],\"cn\":[2700128,32208]}],\n\"levels/menu/main_menu_seg7.07FD0.rgba16.png\": [16,16,512,{\"jp\":[2770736,32720],\"us\":[2778544,32720],\"eu\":[2647072,32720],\"sh\":[2625456,32720],\"cn\":[2700128,32720]}],\n\"levels/menu/main_menu_seg7.081D0.rgba16.png\": [16,16,512,{\"jp\":[2770736,33232],\"us\":[2778544,33232],\"eu\":[2647072,33232],\"sh\":[2625456,33232],\"cn\":[2700128,33232]}],\n\"levels/menu/main_menu_seg7.083D0.rgba16.png\": [16,16,512,{\"jp\":[2770736,33744],\"us\":[2778544,33744],\"eu\":[2647072,33744],\"sh\":[2625456,33744],\"cn\":[2700128,33744]}],\n\"levels/menu/main_menu_seg7.085D0.rgba16.png\": [16,16,512,{\"jp\":[2770736,34256],\"us\":[2778544,34256],\"eu\":[2647072,34256],\"sh\":[2625456,34256],\"cn\":[2700128,34256]}],\n\"levels/menu/main_menu_seg7.087D0.rgba16.png\": [16,16,512,{\"jp\":[2770736,34768],\"us\":[2778544,34768],\"eu\":[2647072,34768],\"sh\":[2625456,34768],\"cn\":[2700128,34768]}],\n\"levels/menu/main_menu_seg7.089D0.rgba16.png\": [16,16,512,{\"jp\":[2770736,35280],\"us\":[2778544,35280],\"eu\":[2647072,35280],\"sh\":[2625456,35280],\"cn\":[2700128,35280]}],\n\"levels/menu/main_menu_seg7.08BD0.rgba16.png\": [16,16,512,{\"jp\":[2770736,35792],\"us\":[2778544,35792],\"eu\":[2647072,35792],\"sh\":[2625456,35792],\"cn\":[2700128,35792]}],\n\"levels/menu/main_menu_seg7.08DD0.rgba16.png\": [16,16,512,{\"jp\":[2770736,36304],\"us\":[2778544,36304],\"eu\":[2647072,36304],\"sh\":[2625456,36304],\"cn\":[2700128,36304]}],\n\"levels/menu/main_menu_seg7.08FD0.rgba16.png\": [16,16,512,{\"jp\":[2770736,36816],\"us\":[2778544,36816],\"eu\":[2647072,36816],\"sh\":[2625456,36816],\"cn\":[2700128,36816]}],\n\"levels/menu/main_menu_seg7.091D0.rgba16.png\": [16,16,512,{\"jp\":[2770736,37328],\"us\":[2778544,37328],\"eu\":[2647072,37328],\"sh\":[2625456,37328],\"cn\":[2700128,37328]}],\n\"levels/menu/main_menu_seg7.093D0.rgba16.png\": [16,16,512,{\"jp\":[2770736,37840],\"us\":[2778544,37840],\"eu\":[2647072,37840],\"sh\":[2625456,37840],\"cn\":[2700128,37840]}],\n\"levels/menu/main_menu_seg7.095D0.rgba16.png\": [16,16,512,{\"jp\":[2770736,38352],\"us\":[2778544,38352],\"eu\":[2647072,38352],\"sh\":[2625456,38352],\"cn\":[2700128,38352]}],\n\"levels/menu/main_menu_seg7.097D0.rgba16.png\": [16,16,512,{\"jp\":[2770736,38864],\"us\":[2778544,38864],\"eu\":[2647072,38864],\"sh\":[2625456,38864],\"cn\":[2700128,38864]}],\n\"levels/menu/main_menu_seg7.099D0.rgba16.png\": [16,16,512,{\"jp\":[2770736,39376],\"us\":[2778544,39376],\"eu\":[2647072,39376],\"sh\":[2625456,39376],\"cn\":[2700128,39376]}],\n\"levels/menu/main_menu_seg7.09BD0.rgba16.png\": [16,16,512,{\"jp\":[2770736,39888],\"us\":[2778544,39888],\"eu\":[2647072,39888],\"sh\":[2625456,39888],\"cn\":[2700128,39888]}],\n\"levels/menu/main_menu_seg7.09DD0.rgba16.png\": [16,16,512,{\"jp\":[2770736,40400],\"us\":[2778544,40400],\"eu\":[2647072,40400],\"sh\":[2625456,40400],\"cn\":[2700128,40400]}],\n\"levels/menu/main_menu_seg7.09FD0.rgba16.png\": [16,16,512,{\"jp\":[2770736,40912],\"us\":[2778544,40912],\"eu\":[2647072,40912],\"sh\":[2625456,40912],\"cn\":[2700128,40912]}],\n\"levels/menu/main_menu_seg7.0A1D0.rgba16.png\": [16,16,512,{\"jp\":[1078992,20480],\"us\":[2778544,41424],\"eu\":[2647072,41424],\"sh\":[934640,20480],\"cn\":[2700128,41424]}],\n\"levels/menu/main_menu_seg7.0A3D0.rgba16.png\": [16,16,512,{\"jp\":[2770736,41936],\"us\":[2778544,41936],\"eu\":[2647072,41936],\"sh\":[2625456,41936],\"cn\":[2700128,41936]}],\n\"levels/menu/main_menu_seg7.0A5D0.rgba16.png\": [16,16,512,{\"jp\":[2770736,42448],\"us\":[2778544,42448],\"eu\":[2647072,42448],\"sh\":[2625456,42448],\"cn\":[2700128,42448]}],\n\"levels/menu/main_menu_seg7.0A7D0.rgba16.png\": [16,16,512,{\"jp\":[2770736,42960],\"us\":[2778544,42960],\"eu\":[2647072,42960],\"sh\":[2625456,42960],\"cn\":[2700128,42960]}],\n\"levels/menu/main_menu_seg7.0A9D0.rgba16.png\": [16,16,512,{\"jp\":[2770736,43472],\"us\":[2778544,43472],\"eu\":[2647072,43472],\"sh\":[2625456,43472],\"cn\":[2700128,43472]}],\n\"levels/menu/main_menu_seg7.0AC48.ia8.png\": [8,8,64,{\"jp\":[2770736,44104],\"sh\":[2625456,44104]}],\n\"levels/menu/main_menu_seg7.0AC88.ia8.png\": [8,8,64,{\"jp\":[2770736,44168],\"sh\":[2625456,44168]}],\n\"levels/menu/main_menu_seg7.0ACC8.ia8.png\": [8,8,64,{\"jp\":[2770736,44232],\"sh\":[2625456,44232]}],\n\"levels/menu/main_menu_seg7.0AD08.ia8.png\": [8,8,64,{\"jp\":[2770736,44296],\"sh\":[2625456,44296]}],\n\"levels/menu/main_menu_seg7.0AD48.ia8.png\": [8,8,64,{\"jp\":[2770736,44360],\"sh\":[2625456,44360]}],\n\"levels/menu/main_menu_seg7.0AD88.ia8.png\": [8,8,64,{\"jp\":[2770736,44424],\"sh\":[2625456,44424]}],\n\"levels/menu/main_menu_seg7.0ADC8.ia8.png\": [8,8,64,{\"jp\":[2770736,44488],\"sh\":[2625456,44488]}],\n\"levels/menu/main_menu_seg7.0AE08.ia8.png\": [8,8,64,{\"jp\":[2770736,44552],\"sh\":[2625456,44552]}],\n\"levels/menu/main_menu_seg7.0AE48.ia8.png\": [8,8,64,{\"jp\":[2770736,44616],\"sh\":[2625456,44616]}],\n\"levels/menu/main_menu_seg7.0AE88.ia8.png\": [8,8,64,{\"jp\":[2770736,44680],\"sh\":[2625456,44680]}],\n\"levels/menu/main_menu_seg7.0AEC8.ia8.png\": [8,8,64,{\"jp\":[2770736,44744],\"sh\":[2625456,44744]}],\n\"levels/menu/main_menu_seg7.0AF08.ia8.png\": [8,8,64,{\"jp\":[2770736,44808],\"sh\":[2625456,44808]}],\n\"levels/menu/main_menu_seg7.0AF48.ia8.png\": [8,8,64,{\"jp\":[2770736,44872],\"sh\":[2625456,44872]}],\n\"levels/menu/main_menu_seg7.0AF88.ia8.png\": [8,8,64,{\"jp\":[2770736,44936],\"sh\":[2625456,44936]}],\n\"levels/menu/main_menu_seg7.0AFC8.ia8.png\": [8,8,64,{\"jp\":[2770736,45000],\"sh\":[2625456,45000]}],\n\"levels/menu/main_menu_seg7.0B008.ia8.png\": [8,8,64,{\"jp\":[2770736,45064],\"sh\":[2625456,45064]}],\n\"levels/menu/main_menu_seg7.0B048.ia8.png\": [8,8,64,{\"jp\":[2770736,45128],\"sh\":[2625456,45128]}],\n\"levels/menu/main_menu_seg7.0B088.ia8.png\": [8,8,64,{\"jp\":[2770736,45192],\"sh\":[2625456,45192]}],\n\"levels/menu/main_menu_seg7.0B0C8.ia8.png\": [8,8,64,{\"jp\":[2770736,45256],\"sh\":[2625456,45256]}],\n\"levels/menu/main_menu_seg7.0B108.ia8.png\": [8,8,64,{\"jp\":[2770736,45320],\"sh\":[2625456,45320]}],\n\"levels/menu/main_menu_seg7.0B148.ia8.png\": [8,8,64,{\"jp\":[2770736,45384],\"sh\":[2625456,45384]}],\n\"levels/menu/main_menu_seg7.0B188.ia8.png\": [8,8,64,{\"jp\":[2770736,45448],\"sh\":[2625456,45448]}],\n\"levels/menu/main_menu_seg7.0B1C8.ia8.png\": [8,8,64,{\"jp\":[2770736,45512],\"sh\":[2625456,45512]}],\n\"levels/menu/main_menu_seg7.0B208.ia8.png\": [8,8,64,{\"jp\":[2770736,45576],\"sh\":[2625456,45576]}],\n\"levels/menu/main_menu_seg7.0B248.ia8.png\": [8,8,64,{\"jp\":[2770736,45640],\"sh\":[2625456,45640]}],\n\"levels/menu/main_menu_seg7.0B288.ia8.png\": [8,8,64,{\"jp\":[2770736,45704],\"sh\":[2625456,45704]}],\n\"levels/menu/main_menu_seg7.0B2C8.ia8.png\": [8,8,64,{\"jp\":[2770736,45768],\"sh\":[2625456,45768]}],\n\"levels/menu/main_menu_seg7.0B308.ia8.png\": [8,8,64,{\"jp\":[2770736,45832],\"sh\":[2625456,45832]}],\n\"levels/menu/main_menu_seg7.0B348.ia8.png\": [8,8,64,{\"jp\":[2770736,45896],\"sh\":[2625456,45896]}],\n\"levels/menu/main_menu_seg7.0B388.ia8.png\": [8,8,64,{\"jp\":[2770736,45960],\"sh\":[2625456,45960]}],\n\"levels/menu/main_menu_seg7.0B3C8.ia8.png\": [8,8,64,{\"jp\":[2770736,46024],\"sh\":[2625456,46024]}],\n\"levels/menu/main_menu_seg7.0B408.ia8.png\": [8,8,64,{\"jp\":[2770736,46088],\"sh\":[2625456,46088]}],\n\"levels/menu/main_menu_seg7.0B448.ia8.png\": [8,8,64,{\"jp\":[2770736,46152],\"sh\":[2625456,46152]}],\n\"levels/menu/main_menu_seg7.0B488.ia8.png\": [8,8,64,{\"jp\":[2770736,46216],\"sh\":[2625456,46216]}],\n\"levels/menu/main_menu_seg7.0B4C8.ia8.png\": [8,8,64,{\"jp\":[2770736,46280],\"sh\":[2625456,46280]}],\n\"levels/menu/main_menu_seg7.0B508.ia8.png\": [8,8,64,{\"jp\":[2770736,46344],\"sh\":[2625456,46344]}],\n\"levels/menu/main_menu_seg7.0B548.ia8.png\": [8,8,64,{\"jp\":[2770736,46408],\"sh\":[2625456,46408]}],\n\"levels/menu/main_menu_seg7.0B588.ia8.png\": [8,8,64,{\"jp\":[2770736,46472],\"sh\":[2625456,46472]}],\n\"levels/menu/main_menu_seg7.0B5C8.ia8.png\": [8,8,64,{\"jp\":[2770736,46536],\"sh\":[2625456,46536]}],\n\"levels/menu/main_menu_seg7.0B608.ia8.png\": [8,8,64,{\"jp\":[2770736,46600],\"sh\":[2625456,46600]}],\n\"levels/menu/main_menu_seg7.0B648.ia8.png\": [8,8,64,{\"jp\":[2770736,46664],\"sh\":[2625456,46664]}],\n\"levels/menu/main_menu_seg7.0B688.ia8.png\": [8,8,64,{\"jp\":[2770736,46728],\"sh\":[2625456,46728]}],\n\"levels/menu/main_menu_seg7.0B6C8.ia8.png\": [8,8,64,{\"jp\":[2770736,46792],\"sh\":[2625456,46792]}],\n\"levels/menu/main_menu_seg7.0B708.ia8.png\": [8,8,64,{\"jp\":[2770736,46856],\"sh\":[2625456,46856]}],\n\"levels/menu/main_menu_seg7.0B748.ia8.png\": [8,8,64,{\"jp\":[2770736,46920],\"sh\":[2625456,46920]}],\n\"levels/menu/main_menu_seg7.0B788.ia8.png\": [8,8,64,{\"jp\":[2770736,46984],\"sh\":[2625456,46984]}],\n\"levels/menu/main_menu_seg7.0B7C8.ia8.png\": [8,8,64,{\"jp\":[2770736,47048],\"sh\":[2625456,47048]}],\n\"levels/menu/main_menu_seg7.0B808.ia8.png\": [8,8,64,{\"jp\":[2770736,47112],\"sh\":[2625456,47112]}],\n\"levels/menu/main_menu_seg7.0B848.ia8.png\": [8,8,64,{\"jp\":[2770736,47176],\"sh\":[2625456,47176]}],\n\"levels/menu/main_menu_seg7.0B888.ia8.png\": [8,8,64,{\"jp\":[2770736,47240],\"sh\":[2625456,47240]}],\n\"levels/menu/main_menu_seg7.0B8C8.ia8.png\": [8,8,64,{\"jp\":[2770736,47304],\"sh\":[2625456,47304]}],\n\"levels/menu/main_menu_seg7.0B908.ia8.png\": [8,8,64,{\"jp\":[2770736,47368],\"sh\":[2625456,47368]}],\n\"levels/menu/main_menu_seg7.0B948.ia8.png\": [8,8,64,{\"jp\":[2770736,47432],\"sh\":[2625456,47432]}],\n\"levels/menu/main_menu_seg7.0B988.ia8.png\": [8,8,64,{\"jp\":[2770736,47496],\"sh\":[2625456,47496]}],\n\"levels/menu/main_menu_seg7.0B9C8.ia8.png\": [8,8,64,{\"jp\":[2770736,47560],\"sh\":[2625456,47560]}],\n\"levels/menu/main_menu_seg7.0BA08.ia8.png\": [8,8,64,{\"jp\":[2770736,47624],\"sh\":[2625456,47624]}],\n\"levels/menu/main_menu_seg7.0BA48.ia8.png\": [8,8,64,{\"jp\":[2770736,47688],\"sh\":[2625456,47688]}],\n\"levels/menu/main_menu_seg7.0BA88.ia8.png\": [8,8,64,{\"jp\":[2770736,47752],\"sh\":[2625456,47752]}],\n\"levels/menu/main_menu_seg7.0BAC8.ia8.png\": [8,8,64,{\"jp\":[2770736,47816],\"sh\":[2625456,47816]}],\n\"levels/menu/main_menu_seg7.0BB08.ia8.png\": [8,8,64,{\"jp\":[2770736,47880],\"sh\":[2625456,47880]}],\n\"levels/menu/main_menu_seg7.0BB48.ia8.png\": [8,8,64,{\"jp\":[2770736,47944],\"sh\":[2625456,47944]}],\n\"levels/menu/main_menu_seg7.0BB88.ia8.png\": [8,8,64,{\"jp\":[2770736,48008],\"sh\":[2625456,48008]}],\n\"levels/menu/main_menu_seg7.0BBC8.ia8.png\": [8,8,64,{\"jp\":[2770736,48072],\"sh\":[2625456,48072]}],\n\"levels/menu/main_menu_seg7.0BC08.ia8.png\": [8,8,64,{\"jp\":[2770736,48136],\"sh\":[2625456,48136]}],\n\"levels/menu/main_menu_seg7.0BC48.ia8.png\": [8,8,64,{\"jp\":[2770736,48200],\"sh\":[2625456,48200]}],\n\"levels/menu/main_menu_seg7.0BC88.ia8.png\": [8,8,64,{\"jp\":[2770736,48264],\"sh\":[2625456,48264]}],\n\"levels/menu/main_menu_seg7.0BCC8.ia8.png\": [8,8,64,{\"jp\":[2770736,48328],\"sh\":[2625456,48328]}],\n\"levels/menu/main_menu_seg7.0BD08.ia8.png\": [8,8,64,{\"jp\":[2770736,48392],\"sh\":[2625456,48392]}],\n\"levels/menu/main_menu_seg7.0BD48.ia8.png\": [8,8,64,{\"jp\":[2770736,48456],\"sh\":[2625456,48456]}],\n\"levels/menu/main_menu_seg7.0BD88.ia8.png\": [8,8,64,{\"jp\":[2770736,48520],\"sh\":[2625456,48520]}],\n\"levels/menu/main_menu_seg7.0BDC8.ia8.png\": [8,8,64,{\"jp\":[2770736,48584],\"sh\":[2625456,48584]}],\n\"levels/menu/main_menu_seg7.0BE08.ia8.png\": [8,8,64,{\"jp\":[2770736,48648],\"sh\":[2625456,48648]}],\n\"levels/menu/main_menu_seg7.0BE48.ia8.png\": [8,8,64,{\"jp\":[2770736,48712],\"sh\":[2625456,48712]}],\n\"levels/menu/main_menu_seg7.0BE88.ia8.png\": [8,8,64,{\"jp\":[2770736,48776],\"sh\":[2625456,48776]}],\n\"levels/menu/main_menu_seg7.0BEC8.ia8.png\": [8,8,64,{\"jp\":[2770736,48840],\"sh\":[2625456,48840]}],\n\"levels/menu/main_menu_seg7.0BF08.ia8.png\": [8,8,64,{\"jp\":[2770736,48904],\"sh\":[2625456,48904]}],\n\"levels/menu/main_menu_seg7.0BF48.ia8.png\": [8,8,64,{\"jp\":[2770736,48968],\"sh\":[2625456,48968]}],\n\"levels/menu/main_menu_seg7.0BF88.ia8.png\": [8,8,64,{\"jp\":[2770736,49032],\"sh\":[2625456,49032]}],\n\"levels/menu/main_menu_seg7.0BFC8.ia8.png\": [8,8,64,{\"jp\":[2770736,49096],\"sh\":[2625456,49096]}],\n\"levels/menu/main_menu_seg7.0C008.ia8.png\": [8,8,64,{\"jp\":[2770736,49160],\"sh\":[2625456,49160]}],\n\"levels/menu/main_menu_seg7.0C048.ia8.png\": [8,8,64,{\"jp\":[2770736,49224],\"sh\":[2625456,49224]}],\n\"levels/menu/main_menu_seg7.0C088.ia8.png\": [8,8,64,{\"jp\":[2770736,49288],\"sh\":[2625456,49288]}],\n\"levels/menu/main_menu_seg7.0C0C8.ia8.png\": [8,8,64,{\"jp\":[2770736,49352],\"sh\":[2625456,49352]}],\n\"levels/menu/main_menu_seg7.0C108.ia8.png\": [8,8,64,{\"jp\":[2770736,49416],\"sh\":[2625456,49416]}],\n\"levels/menu/main_menu_seg7.0C148.ia8.png\": [8,8,64,{\"jp\":[2770736,49480],\"sh\":[2625456,49480]}],\n\"levels/menu/main_menu_seg7.0C188.ia8.png\": [8,8,64,{\"jp\":[2770736,49544],\"sh\":[2625456,49544]}],\n\"levels/menu/main_menu_seg7.0C1C8.ia8.png\": [8,8,64,{\"jp\":[2770736,49608],\"sh\":[2625456,49608]}],\n\"levels/menu/main_menu_seg7.0C208.ia8.png\": [8,8,64,{\"jp\":[2770736,49672],\"sh\":[2625456,49672]}],\n\"levels/menu/main_menu_seg7.0C248.ia8.png\": [8,8,64,{\"jp\":[2770736,49736],\"sh\":[2625456,49736]}],\n\"levels/menu/main_menu_seg7.0C288.ia8.png\": [8,8,64,{\"jp\":[2770736,49800],\"sh\":[2625456,49800]}],\n\"levels/menu/main_menu_seg7.0C2C8.ia8.png\": [8,8,64,{\"jp\":[2770736,49864],\"sh\":[2625456,49864]}],\n\"levels/menu/main_menu_seg7.0C308.ia8.png\": [8,8,64,{\"jp\":[2770736,49928],\"sh\":[2625456,49928]}],\n\"levels/menu/main_menu_seg7.0C348.ia8.png\": [8,8,64,{\"jp\":[2770736,49992],\"sh\":[2625456,49992]}],\n\"levels/menu/main_menu_seg7.0C388.ia8.png\": [8,8,64,{\"jp\":[2770736,50056],\"sh\":[2625456,50056]}],\n\"levels/menu/main_menu_seg7.0C3C8.ia8.png\": [8,8,64,{\"jp\":[2770736,50120],\"sh\":[2625456,50120]}],\n\"levels/menu/main_menu_seg7.0C408.ia8.png\": [8,8,64,{\"jp\":[2770736,50184],\"sh\":[2625456,50184]}],\n\"levels/menu/main_menu_seg7.0C448.ia8.png\": [8,8,64,{\"jp\":[2770736,46536],\"sh\":[2625456,46536]}],\n\"levels/menu/main_menu_seg7.0C488.ia8.png\": [8,8,64,{\"jp\":[2770736,50312],\"sh\":[2625456,50312]}],\n\"levels/menu/main_menu_seg7.0C4C8.ia8.png\": [8,8,64,{\"jp\":[2770736,50376],\"sh\":[2625456,50376]}],\n\"levels/menu/main_menu_seg7.0C508.ia8.png\": [8,8,64,{\"jp\":[2770736,50440],\"sh\":[2625456,50440]}],\n\"levels/menu/main_menu_seg7.0C548.ia8.png\": [8,8,64,{\"jp\":[2770736,50504],\"sh\":[2625456,50504]}],\n\"levels/menu/main_menu_seg7.0C588.ia8.png\": [8,8,64,{\"jp\":[2770736,50568],\"sh\":[2625456,50568]}],\n\"levels/menu/main_menu_seg7.0C5C8.ia8.png\": [8,8,64,{\"jp\":[2770736,50632],\"sh\":[2625456,50632]}],\n\"levels/menu/main_menu_seg7.0C608.ia8.png\": [8,8,64,{\"jp\":[2770736,50696],\"sh\":[2625456,50696]}],\n\"levels/menu/main_menu_seg7.0C648.ia8.png\": [8,8,64,{\"jp\":[2770736,50760],\"sh\":[2625456,50760]}],\n\"levels/menu/main_menu_seg7.0C688.ia8.png\": [8,8,64,{\"jp\":[2770736,50824],\"sh\":[2625456,50824]}],\n\"levels/menu/main_menu_seg7.0C6C8.ia8.png\": [8,8,64,{\"jp\":[2770736,50888],\"sh\":[2625456,50888]}],\n\"levels/menu/main_menu_seg7.0C708.ia8.png\": [8,8,64,{\"jp\":[2770736,50952],\"sh\":[2625456,50952]}],\n\"levels/menu/main_menu_seg7.0C748.ia8.png\": [8,8,64,{\"jp\":[2770736,51016],\"sh\":[2625456,51016]}],\n\"levels/menu/main_menu_seg7.0C788.ia8.png\": [8,8,64,{\"jp\":[2770736,51080],\"sh\":[2625456,51080]}],\n\"levels/menu/main_menu_seg7.0C7C8.ia8.png\": [8,8,64,{\"jp\":[2770736,51144],\"sh\":[2625456,51144]}],\n\"levels/menu/main_menu_seg7.0C808.ia8.png\": [8,8,64,{\"jp\":[2770736,51208],\"sh\":[2625456,51208]}],\n\"levels/menu/main_menu_seg7.0C848.ia8.png\": [8,8,64,{\"jp\":[2770736,51272],\"sh\":[2625456,51272]}],\n\"levels/menu/main_menu_seg7.0C888.ia8.png\": [8,8,64,{\"jp\":[2770736,51336],\"sh\":[2625456,51336]}],\n\"levels/menu/main_menu_seg7.0C8C8.ia8.png\": [8,8,64,{\"jp\":[2770736,51400],\"sh\":[2625456,51400]}],\n\"levels/menu/main_menu_seg7.0C908.ia8.png\": [8,8,64,{\"jp\":[2770736,51464],\"sh\":[2625456,51464]}],\n\"levels/menu/main_menu_seg7.0C948.ia8.png\": [8,8,64,{\"jp\":[2770736,51528],\"sh\":[2625456,51528]}],\n\"levels/menu/main_menu_seg7.0C988.ia8.png\": [8,8,64,{\"jp\":[2770736,51592],\"sh\":[2625456,51592]}],\n\"levels/menu/main_menu_seg7.0C9C8.ia8.png\": [8,8,64,{\"jp\":[2770736,51656],\"sh\":[2625456,51656]}],\n\"levels/menu/main_menu_seg7.0CA08.ia8.png\": [8,8,64,{\"jp\":[2770736,51720],\"sh\":[2625456,51720]}],\n\"levels/menu/main_menu_seg7.0CA48.ia8.png\": [8,8,64,{\"jp\":[2770736,51784],\"sh\":[2625456,51784]}],\n\"levels/menu/main_menu_seg7.0CA88.ia8.png\": [8,8,64,{\"jp\":[2770736,51848],\"sh\":[2625456,51848]}],\n\"levels/menu/main_menu_seg7.0CAC8.ia8.png\": [8,8,64,{\"jp\":[2770736,51912],\"sh\":[2625456,51912]}],\n\"levels/menu/main_menu_seg7.0CB08.ia8.png\": [8,8,64,{\"jp\":[2770736,51976],\"sh\":[2625456,51976]}],\n\"levels/menu/main_menu_seg7.0CB48.ia8.png\": [8,8,64,{\"jp\":[2770736,52040],\"sh\":[2625456,52040]}],\n\"levels/menu/main_menu_seg7.0CB88.ia8.png\": [8,8,64,{\"jp\":[2770736,52104],\"sh\":[2625456,52104]}],\n\"levels/menu/main_menu_seg7.0CBC8.ia8.png\": [8,8,64,{\"jp\":[2770736,52168],\"sh\":[2625456,52168]}],\n\"levels/menu/main_menu_seg7.0CC08.ia8.png\": [8,8,64,{\"jp\":[2770736,52232],\"sh\":[2625456,52232]}],\n\"levels/menu/main_menu_seg7.0CC48.ia8.png\": [8,8,64,{\"jp\":[2770736,52296],\"sh\":[2625456,52296]}],\n\"levels/menu/main_menu_seg7.0CC88.ia8.png\": [8,8,64,{\"jp\":[2770736,52360],\"sh\":[2625456,52360]}],\n\"levels/menu/main_menu_seg7.0CCC8.ia8.png\": [8,8,64,{\"jp\":[2770736,52424],\"sh\":[2625456,52424]}],\n\"levels/menu/main_menu_seg7.0D1A8.rgba16.png\": [64,32,4096,{\"jp\":[2770736,53672],\"us\":[2778544,48352],\"sh\":[2625456,53672]}],\n\"levels/menu/main_menu_seg7.0E1A8.rgba16.png\": [64,32,4096,{\"jp\":[2770736,57768],\"us\":[2778544,52448],\"sh\":[2625456,57768]}],\n\"levels/menu/main_menu_seg7_cn.0BCE0.rgba16.png\": [64,32,4096,{\"cn\":[2700128,48352]}],\n\"levels/menu/main_menu_seg7_cn.0CCE0.rgba16.png\": [64,32,4096,{\"cn\":[2700128,52448]}],\n\"levels/menu/main_menu_seg7_eu.0AF80.ia8.png\": [8,8,64,{\"eu\":[2647072,44928]}],\n\"levels/menu/main_menu_seg7_eu.0B640.ia8.png\": [8,8,64,{\"eu\":[2647072,46656]}],\n\"levels/menu/main_menu_seg7_eu.0B680.ia8.png\": [8,8,64,{\"eu\":[2647072,46720]}],\n\"levels/menu/main_menu_seg7_eu.0B840.ia8.png\": [8,8,64,{\"eu\":[2647072,47168]}],\n\"levels/menu/main_menu_seg7_eu.0B880.ia8.png\": [8,8,64,{\"eu\":[2647072,47232]}],\n\"levels/menu/main_menu_seg7_eu.0B8C0.ia8.png\": [8,8,64,{\"eu\":[2647072,47296]}],\n\"levels/menu/main_menu_seg7_eu.0BDA0.rgba16.png\": [64,32,4096,{\"eu\":[2647072,48544]}],\n\"levels/menu/main_menu_seg7_eu.0CDA0.rgba16.png\": [64,32,4096,{\"eu\":[2647072,52640]}],\n\"levels/menu/main_menu_seg7_eu.0DDA0.rgba16.png\": [64,32,4096,{\"eu\":[2647072,56736]}],\n\"levels/menu/main_menu_seg7_eu.0EDA0.rgba16.png\": [64,32,4096,{\"eu\":[2647072,60832]}],\n\"levels/menu/main_menu_seg7_us.0AC40.ia8.png\": [8,8,64,{\"us\":[2778544,44096],\"eu\":[2647072,44096],\"cn\":[2700128,44096]}],\n\"levels/menu/main_menu_seg7_us.0AC80.ia8.png\": [8,8,64,{\"us\":[2778544,44160],\"eu\":[2647072,44160],\"cn\":[2700128,44160]}],\n\"levels/menu/main_menu_seg7_us.0ACC0.ia8.png\": [8,8,64,{\"us\":[2778544,44224],\"eu\":[2647072,44224],\"cn\":[2700128,44224]}],\n\"levels/menu/main_menu_seg7_us.0AD00.ia8.png\": [8,8,64,{\"us\":[2778544,44288],\"eu\":[2647072,44288],\"cn\":[2700128,44288]}],\n\"levels/menu/main_menu_seg7_us.0AD40.ia8.png\": [8,8,64,{\"us\":[2778544,44352],\"eu\":[2647072,44352],\"cn\":[2700128,44352]}],\n\"levels/menu/main_menu_seg7_us.0AD80.ia8.png\": [8,8,64,{\"us\":[2778544,44416],\"eu\":[2647072,44416],\"cn\":[2700128,44416]}],\n\"levels/menu/main_menu_seg7_us.0ADC0.ia8.png\": [8,8,64,{\"us\":[2778544,44480],\"eu\":[2647072,44480],\"cn\":[2700128,44480]}],\n\"levels/menu/main_menu_seg7_us.0AE00.ia8.png\": [8,8,64,{\"us\":[2778544,44544],\"eu\":[2647072,44544],\"cn\":[2700128,44544]}],\n\"levels/menu/main_menu_seg7_us.0AE40.ia8.png\": [8,8,64,{\"us\":[2778544,44608],\"eu\":[2647072,44608],\"cn\":[2700128,44608]}],\n\"levels/menu/main_menu_seg7_us.0AE80.ia8.png\": [8,8,64,{\"us\":[2778544,44672],\"eu\":[2647072,44672],\"cn\":[2700128,44672]}],\n\"levels/menu/main_menu_seg7_us.0AEC0.ia8.png\": [8,8,64,{\"us\":[2778544,44736],\"eu\":[2647072,44736],\"cn\":[2700128,44736]}],\n\"levels/menu/main_menu_seg7_us.0AF00.ia8.png\": [8,8,64,{\"us\":[2778544,44800],\"eu\":[2647072,44800],\"cn\":[2700128,44800]}],\n\"levels/menu/main_menu_seg7_us.0AF40.ia8.png\": [8,8,64,{\"us\":[2778544,44864],\"eu\":[2647072,44864],\"cn\":[2700128,44864]}],\n\"levels/menu/main_menu_seg7_us.0AF80.ia8.png\": [8,8,64,{\"us\":[2778544,44928],\"cn\":[2700128,44928]}],\n\"levels/menu/main_menu_seg7_us.0AFC0.ia8.png\": [8,8,64,{\"us\":[2778544,44992],\"eu\":[2647072,44992],\"cn\":[2700128,44992]}],\n\"levels/menu/main_menu_seg7_us.0B000.ia8.png\": [8,8,64,{\"us\":[2778544,45056],\"eu\":[2647072,45056],\"cn\":[2700128,45056]}],\n\"levels/menu/main_menu_seg7_us.0B040.ia8.png\": [8,8,64,{\"us\":[2778544,45120],\"eu\":[2647072,45120],\"cn\":[2700128,45120]}],\n\"levels/menu/main_menu_seg7_us.0B080.ia8.png\": [8,8,64,{\"us\":[2778544,45184],\"eu\":[2647072,45184],\"cn\":[2700128,45184]}],\n\"levels/menu/main_menu_seg7_us.0B0C0.ia8.png\": [8,8,64,{\"us\":[2778544,45248],\"eu\":[2647072,45248],\"cn\":[2700128,45248]}],\n\"levels/menu/main_menu_seg7_us.0B100.ia8.png\": [8,8,64,{\"us\":[2778544,45312],\"eu\":[2647072,45312],\"cn\":[2700128,45312]}],\n\"levels/menu/main_menu_seg7_us.0B140.ia8.png\": [8,8,64,{\"us\":[2778544,45376],\"eu\":[2647072,45376],\"cn\":[2700128,45376]}],\n\"levels/menu/main_menu_seg7_us.0B180.ia8.png\": [8,8,64,{\"us\":[2778544,45440],\"eu\":[2647072,45440],\"cn\":[2700128,45440]}],\n\"levels/menu/main_menu_seg7_us.0B1C0.ia8.png\": [8,8,64,{\"us\":[2778544,45504],\"eu\":[2647072,45504],\"cn\":[2700128,45504]}],\n\"levels/menu/main_menu_seg7_us.0B200.ia8.png\": [8,8,64,{\"us\":[2778544,45568],\"eu\":[2647072,45568],\"cn\":[2700128,45568]}],\n\"levels/menu/main_menu_seg7_us.0B240.ia8.png\": [8,8,64,{\"us\":[2778544,45632],\"eu\":[2647072,45632],\"cn\":[2700128,45632]}],\n\"levels/menu/main_menu_seg7_us.0B280.ia8.png\": [8,8,64,{\"us\":[2778544,45696],\"eu\":[2647072,45696],\"cn\":[2700128,45696]}],\n\"levels/menu/main_menu_seg7_us.0B2C0.ia8.png\": [8,8,64,{\"us\":[2778544,45760],\"eu\":[2647072,45760],\"cn\":[2700128,45760]}],\n\"levels/menu/main_menu_seg7_us.0B300.ia8.png\": [8,8,64,{\"us\":[2778544,45824],\"eu\":[2647072,45824],\"cn\":[2700128,45824]}],\n\"levels/menu/main_menu_seg7_us.0B340.ia8.png\": [8,8,64,{\"us\":[2778544,45888],\"eu\":[2647072,45888],\"cn\":[2700128,45888]}],\n\"levels/menu/main_menu_seg7_us.0B380.ia8.png\": [8,8,64,{\"us\":[2778544,45952],\"eu\":[2647072,45952],\"cn\":[2700128,45952]}],\n\"levels/menu/main_menu_seg7_us.0B3C0.ia8.png\": [8,8,64,{\"us\":[2778544,46016],\"eu\":[2647072,46016],\"cn\":[2700128,46016]}],\n\"levels/menu/main_menu_seg7_us.0B400.ia8.png\": [8,8,64,{\"us\":[2778544,46080],\"eu\":[2647072,46080],\"cn\":[2700128,46080]}],\n\"levels/menu/main_menu_seg7_us.0B440.ia8.png\": [8,8,64,{\"us\":[2778544,46144],\"eu\":[2647072,46144],\"cn\":[2700128,46144]}],\n\"levels/menu/main_menu_seg7_us.0B480.ia8.png\": [8,8,64,{\"us\":[2778544,46208],\"eu\":[2647072,46208],\"cn\":[2700128,46208]}],\n\"levels/menu/main_menu_seg7_us.0B4C0.ia8.png\": [8,8,64,{\"us\":[2778544,46272],\"eu\":[2647072,46272],\"cn\":[2700128,46272]}],\n\"levels/menu/main_menu_seg7_us.0B500.ia8.png\": [8,8,64,{\"us\":[2778544,46336],\"eu\":[2647072,46336],\"cn\":[2700128,46336]}],\n\"levels/menu/main_menu_seg7_us.0B540.ia8.png\": [8,8,64,{\"us\":[2778544,46400],\"eu\":[2647072,46400],\"cn\":[2700128,46400]}],\n\"levels/menu/main_menu_seg7_us.0B580.ia8.png\": [8,8,64,{\"us\":[2778544,46464],\"eu\":[2647072,46464],\"cn\":[2700128,46464]}],\n\"levels/menu/main_menu_seg7_us.0B5C0.ia8.png\": [8,8,64,{\"us\":[2778544,46528],\"eu\":[2647072,46528],\"cn\":[2700128,46528]}],\n\"levels/menu/main_menu_seg7_us.0B600.ia8.png\": [8,8,64,{\"us\":[2778544,46592],\"eu\":[2647072,46592],\"cn\":[2700128,46592]}],\n\"levels/menu/main_menu_seg7_us.0B640.ia8.png\": [8,8,64,{\"us\":[2778544,46656],\"cn\":[2700128,46656]}],\n\"levels/menu/main_menu_seg7_us.0B680.ia8.png\": [8,8,64,{\"us\":[2778544,46720],\"cn\":[2700128,46720]}],\n\"levels/menu/main_menu_seg7_us.0B6C0.ia8.png\": [8,8,64,{\"us\":[2778544,46784],\"eu\":[2647072,46784],\"cn\":[2700128,46784]}],\n\"levels/menu/main_menu_seg7_us.0B700.ia8.png\": [8,8,64,{\"us\":[2778544,46848],\"eu\":[2647072,46848],\"cn\":[2700128,46848]}],\n\"levels/menu/main_menu_seg7_us.0B740.ia8.png\": [8,8,64,{\"us\":[2778544,46912],\"eu\":[2647072,46912],\"cn\":[2700128,46912]}],\n\"levels/menu/main_menu_seg7_us.0B780.ia8.png\": [8,8,64,{\"us\":[2778544,46976],\"eu\":[2647072,46976],\"cn\":[2700128,46976]}],\n\"levels/menu/main_menu_seg7_us.0B7C0.ia8.png\": [8,8,64,{\"us\":[2778544,46648],\"eu\":[2647072,47040],\"cn\":[2700128,46648]}],\n\"levels/menu/main_menu_seg7_us.0B800.ia8.png\": [8,8,64,{\"us\":[2778544,47104],\"eu\":[2647072,47104],\"cn\":[2700128,47104]}],\n\"levels/pss/0.rgba16.png\": [32,32,2048,{\"jp\":[4905168,0],\"us\":[4913456,0],\"eu\":[4792384,0],\"sh\":[4761424,0],\"cn\":[4834432,0]}],\n\"levels/pss/1.ia16.png\": [32,32,2048,{\"jp\":[4905168,2048],\"us\":[4913456,2048],\"eu\":[4792384,2048],\"sh\":[4761424,2048],\"cn\":[4834432,2048]}],\n\"levels/pss/2.rgba16.png\": [32,32,2048,{\"jp\":[4905168,4096],\"us\":[4913456,4096],\"eu\":[4792384,4096],\"sh\":[4761424,4096],\"cn\":[4834432,4096]}],\n\"levels/rr/1.rgba16.png\": [64,32,4096,{\"jp\":[4413648,2048],\"us\":[4421744,2048],\"eu\":[4295344,2048],\"sh\":[4269712,2048],\"cn\":[4343488,2048]}],\n\"levels/rr/2.rgba16.png\": [32,32,2048,{\"jp\":[4413648,6144],\"us\":[4421744,6144],\"eu\":[4295344,6144],\"sh\":[4269712,6144],\"cn\":[4343488,6144]}],\n\"levels/rr/quarter_flying_carpet.rgba16.png\": [32,32,2048,{\"jp\":[4413648,0],\"us\":[4421744,0],\"eu\":[4295344,0],\"sh\":[4269712,0],\"cn\":[4343488,0]}],\n\"levels/sl/0.rgba16.png\": [32,32,2048,{\"jp\":[4210704,0],\"us\":[4218800,0],\"eu\":[4092400,0],\"sh\":[4066768,0],\"cn\":[4140544,0]}],\n\"levels/sl/1.rgba16.png\": [32,32,2048,{\"jp\":[4210704,2048],\"us\":[4218800,2048],\"eu\":[4092400,2048],\"sh\":[4066768,2048],\"cn\":[4140544,2048]}],\n\"levels/sl/2.rgba16.png\": [32,32,2048,{\"jp\":[4210704,4096],\"us\":[4218800,4096],\"eu\":[4092400,4096],\"sh\":[4066768,4096],\"cn\":[4140544,4096]}],\n\"levels/sl/3.rgba16.png\": [32,32,2048,{\"jp\":[4210704,6144],\"us\":[4218800,6144],\"eu\":[4092400,6144],\"sh\":[4066768,6144],\"cn\":[4140544,6144]}],\n\"levels/sl/4.rgba16.png\": [32,32,2048,{\"jp\":[4210704,8192],\"us\":[4218800,8192],\"eu\":[4092400,8192],\"sh\":[4066768,8192],\"cn\":[4140544,8192]}],\n\"levels/ssl/0.rgba16.png\": [32,32,2048,{\"jp\":[4085520,0],\"us\":[4093616,0],\"eu\":[3967216,0],\"sh\":[3941584,0],\"cn\":[4015360,0]}],\n\"levels/ssl/1.ia16.png\": [32,32,2048,{\"jp\":[4085520,2048],\"us\":[4093616,2048],\"eu\":[3967216,2048],\"sh\":[3941584,2048],\"cn\":[4015360,2048]}],\n\"levels/ssl/10.rgba16.png\": [32,64,4096,{\"jp\":[4085520,55208],\"us\":[4093616,55208],\"eu\":[3967216,55208],\"sh\":[3941584,55208],\"cn\":[4015360,55208]}],\n\"levels/ssl/11.rgba16.png\": [32,64,4096,{\"jp\":[4085520,59304],\"us\":[4093616,59304],\"eu\":[3967216,59304],\"sh\":[3941584,59304],\"cn\":[4015360,59304]}],\n\"levels/ssl/2.rgba16.png\": [32,32,2048,{\"jp\":[4085520,4096],\"us\":[4093616,4096],\"eu\":[3967216,4096],\"sh\":[3941584,4096],\"cn\":[4015360,4096]}],\n\"levels/ssl/3.rgba16.png\": [32,32,2048,{\"jp\":[4085520,6144],\"us\":[4093616,6144],\"eu\":[3967216,6144],\"sh\":[3941584,6144],\"cn\":[4015360,6144]}],\n\"levels/ssl/4.rgba16.png\": [32,32,2048,{\"jp\":[4085520,8192],\"us\":[4093616,8192],\"eu\":[3967216,8192],\"sh\":[3941584,8192],\"cn\":[4015360,8192]}],\n\"levels/ssl/5.rgba16.png\": [32,64,4096,{\"jp\":[4085520,10240],\"us\":[4093616,10240],\"eu\":[3967216,10240],\"sh\":[3941584,10240],\"cn\":[4015360,10240]}],\n\"levels/ssl/6.rgba16.png\": [32,32,2048,{\"jp\":[4085520,14336],\"us\":[4093616,14336],\"eu\":[3967216,14336],\"sh\":[3941584,14336],\"cn\":[4015360,14336]}],\n\"levels/ssl/7.rgba16.png\": [32,32,2048,{\"jp\":[3323408,32768],\"us\":[3330160,32768],\"eu\":[3203760,32768],\"sh\":[3178128,32768],\"cn\":[3251888,32768]}],\n\"levels/ssl/8.rgba16.png\": [32,32,2048,{\"jp\":[4085520,49064],\"us\":[4093616,49064],\"eu\":[3967216,49064],\"sh\":[3941584,49064],\"cn\":[4015360,49064]}],\n\"levels/ssl/9.rgba16.png\": [32,64,4096,{\"jp\":[4085520,51112],\"us\":[4093616,51112],\"eu\":[3967216,51112],\"sh\":[3941584,51112],\"cn\":[4015360,51112]}],\n\"levels/thi/0.rgba16.png\": [32,32,2048,{\"jp\":[4335408,0],\"us\":[4343504,0],\"eu\":[4217104,0],\"sh\":[4191472,0],\"cn\":[4265248,0]}],\n\"levels/thi/1.rgba16.png\": [32,32,2048,{\"jp\":[4335408,2048],\"us\":[4343504,2048],\"eu\":[4217104,2048],\"sh\":[4191472,2048],\"cn\":[4265248,2048]}],\n\"levels/totwc/0.rgba16.png\": [32,64,4096,{\"jp\":[4967376,0],\"us\":[4975664,0],\"eu\":[4854592,0],\"sh\":[4823632,0],\"cn\":[4896640,0]}],\n\"levels/totwc/1.rgba16.png\": [32,32,2048,{\"jp\":[4967376,4096],\"us\":[4975664,4096],\"eu\":[4854592,4096],\"sh\":[4823632,4096],\"cn\":[4896640,4096]}],\n\"levels/totwc/2.rgba16.png\": [32,32,2048,{\"jp\":[4967376,6144],\"us\":[4975664,6144],\"eu\":[4854592,6144],\"sh\":[4823632,6144],\"cn\":[4896640,6144]}],\n\"levels/totwc/3.ia16.png\": [32,32,2048,{\"jp\":[4967376,8192],\"us\":[4975664,8192],\"eu\":[4854592,8192],\"sh\":[4823632,8192],\"cn\":[4896640,8192]}],\n\"levels/ttc/0.rgba16.png\": [32,32,2048,{\"jp\":[4370304,0],\"us\":[4378400,0],\"eu\":[4252000,0],\"sh\":[4226368,0],\"cn\":[4300144,0]}],\n\"levels/ttc/1.rgba16.png\": [16,64,2048,{\"jp\":[4370304,2048],\"us\":[4378400,2048],\"eu\":[4252000,2048],\"sh\":[4226368,2048],\"cn\":[4300144,2048]}],\n\"levels/ttc/2.rgba16.png\": [32,32,2048,{\"jp\":[4370304,90000],\"us\":[4378400,90000],\"eu\":[4252000,90000],\"sh\":[4226368,90000],\"cn\":[4300144,90000]}],\n\"levels/ttm/0.ia16.png\": [32,32,2048,{\"jp\":[5044400,0],\"us\":[5052688,0],\"eu\":[4931616,0],\"sh\":[4900656,0],\"cn\":[4973680,0]}],\n\"levels/ttm/1.rgba16.png\": [32,32,2048,{\"jp\":[5044400,2048],\"us\":[5052688,2048],\"eu\":[4931616,2048],\"sh\":[4900656,2048],\"cn\":[4973680,2048]}],\n\"levels/ttm/2.rgba16.png\": [32,32,2048,{\"jp\":[5044400,4096],\"us\":[5052688,4096],\"eu\":[4931616,4096],\"sh\":[4900656,4096],\"cn\":[4973680,4096]}],\n\"levels/ttm/3.rgba16.png\": [32,32,2048,{\"jp\":[5044400,6144],\"us\":[5052688,6144],\"eu\":[4931616,6144],\"sh\":[4900656,6144],\"cn\":[4973680,6144]}],\n\"levels/ttm/4.rgba16.png\": [32,32,2048,{\"jp\":[5044400,8192],\"us\":[5052688,8192],\"eu\":[4931616,8192],\"sh\":[4900656,8192],\"cn\":[4973680,8192]}],\n\"levels/ttm/5.rgba16.png\": [32,32,2048,{\"jp\":[5044400,10240],\"us\":[5052688,10240],\"eu\":[4931616,10240],\"sh\":[4900656,10240],\"cn\":[4973680,10240]}],\n\"levels/ttm/6.rgba16.png\": [64,32,4096,{\"jp\":[5044400,12288],\"us\":[5052688,12288],\"eu\":[4931616,12288],\"sh\":[4900656,12288],\"cn\":[4973680,12288]}],\n\"levels/ttm/7.rgba16.png\": [64,32,4096,{\"jp\":[5044400,16384],\"us\":[5052688,16384],\"eu\":[4931616,16384],\"sh\":[4900656,16384],\"cn\":[4973680,16384]}],\n\"levels/ttm/8.rgba16.png\": [32,32,2048,{\"jp\":[3473152,43008],\"us\":[3479904,43008],\"eu\":[3353504,43008],\"sh\":[3327872,43008],\"cn\":[3401632,43008]}],\n\"levels/vcutm/0.rgba16.png\": [32,32,2048,{\"jp\":[4564288,0],\"us\":[4572672,0],\"eu\":[4446272,0],\"sh\":[4420640,0],\"cn\":[4494416,0]}],\n\"levels/vcutm/1.rgba16.png\": [64,32,4096,{\"jp\":[4564288,2048],\"us\":[4572672,2048],\"eu\":[4446272,2048],\"sh\":[4420640,2048],\"cn\":[4494416,2048]}],\n\"levels/vcutm/2.rgba16.png\": [32,64,4096,{\"jp\":[4564288,6144],\"us\":[4572672,6144],\"eu\":[4446272,6144],\"sh\":[4420640,6144],\"cn\":[4494416,6144]}],\n\"levels/vcutm/3.rgba16.png\": [32,32,2048,{\"jp\":[4564288,10240],\"us\":[4572672,10240],\"eu\":[4446272,10240],\"sh\":[4420640,10240],\"cn\":[4494416,10240]}],\n\"levels/wdw/0.rgba16.png\": [32,32,2048,{\"jp\":[4246992,0],\"us\":[4255088,0],\"eu\":[4128688,0],\"sh\":[4103056,0],\"cn\":[4176832,0]}],\n\"levels/wdw/1.rgba16.png\": [32,32,2048,{\"jp\":[4246992,2048],\"us\":[4255088,2048],\"eu\":[4128688,2048],\"sh\":[4103056,2048],\"cn\":[4176832,2048]}],\n\"levels/wdw/2.rgba16.png\": [32,32,2048,{\"jp\":[4246992,4096],\"us\":[4255088,4096],\"eu\":[4128688,4096],\"sh\":[4103056,4096],\"cn\":[4176832,4096]}],\n\"levels/wdw/3.rgba16.png\": [32,32,2048,{\"jp\":[4246992,6144],\"us\":[4255088,6144],\"eu\":[4128688,6144],\"sh\":[4103056,6144],\"cn\":[4176832,6144]}],\n\"levels/wdw/4.rgba16.png\": [32,32,2048,{\"jp\":[4246992,8192],\"us\":[4255088,8192],\"eu\":[4128688,8192],\"sh\":[4103056,8192],\"cn\":[4176832,8192]}],\n\"levels/wf/0.rgba16.png\": [32,32,2048,{\"jp\":[4800560,0],\"us\":[4808848,0],\"eu\":[4682448,0],\"sh\":[4656816,0],\"cn\":[4730592,0]}],\n\"levels/wf/1.rgba16.png\": [32,32,2048,{\"jp\":[4800560,2048],\"us\":[4808848,2048],\"eu\":[4682448,2048],\"sh\":[4656816,2048],\"cn\":[4730592,2048]}],\n\"levels/wf/2.rgba16.png\": [32,32,2048,{\"jp\":[4800560,4096],\"us\":[4808848,4096],\"eu\":[4682448,4096],\"sh\":[4656816,4096],\"cn\":[4730592,4096]}],\n\"levels/wf/3.rgba16.png\": [32,32,2048,{\"jp\":[4800560,6144],\"us\":[4808848,6144],\"eu\":[4682448,6144],\"sh\":[4656816,6144],\"cn\":[4730592,6144]}],\n\"levels/wf/4.rgba16.png\": [32,32,2048,{\"jp\":[4800560,8192],\"us\":[4808848,8192],\"eu\":[4682448,8192],\"sh\":[4656816,8192],\"cn\":[4730592,8192]}],\n\"levels/wf/5.ia8.png\": [16,16,256,{\"jp\":[1078992,62296],\"us\":[1083968,74168],\"eu\":[909712,30840],\"sh\":[934640,62296],\"cn\":[947456,174632]}],\n\"levels/wmotr/0.rgba16.png\": [32,32,2048,{\"jp\":[4989632,0],\"us\":[4997920,0],\"eu\":[4876848,0],\"sh\":[4845888,0],\"cn\":[4918912,0]}],\n\"levels/wmotr/1.rgba16.png\": [32,16,1024,{\"jp\":[4989632,2048],\"us\":[4997920,2048],\"eu\":[4876848,2048],\"sh\":[4845888,2048],\"cn\":[4918912,2048]}],\n\"levels/wmotr/2.rgba16.png\": [32,32,2048,{\"jp\":[4989632,3072],\"us\":[4997920,3072],\"eu\":[4876848,3072],\"sh\":[4845888,3072],\"cn\":[4918912,3072]}],\n\"levels/wmotr/3.rgba16.png\": [32,8,512,{\"jp\":[4989632,5120],\"us\":[4997920,5120],\"eu\":[4876848,5120],\"sh\":[4845888,5120],\"cn\":[4918912,5120]}],\n\"levels/wmotr/4.rgba16.png\": [8,32,512,{\"jp\":[4989632,5632],\"us\":[4997920,5632],\"eu\":[4876848,5632],\"sh\":[4845888,5632],\"cn\":[4918912,5632]}],\n\"sound/sequences/eu/01_cutscene_collect_star.m64\": [626,{\"eu\":[7954384]}],\n\"sound/sequences/eu/02_menu_title_screen.m64\": [8282,{\"eu\":[7955024]}],\n\"sound/sequences/eu/03_level_grass.m64\": [5131,{\"eu\":[7963312]}],\n\"sound/sequences/eu/04_level_inside_castle.m64\": [2505,{\"eu\":[7968448]}],\n\"sound/sequences/eu/05_level_water.m64\": [4788,{\"eu\":[7970960]}],\n\"sound/sequences/eu/06_level_hot.m64\": [2455,{\"eu\":[7975760]}],\n\"sound/sequences/eu/07_level_boss_koopa.m64\": [3424,{\"eu\":[7978224]}],\n\"sound/sequences/eu/08_level_snow.m64\": [8150,{\"eu\":[7981648]}],\n\"sound/sequences/eu/09_level_slide.m64\": [7445,{\"eu\":[7989808]}],\n\"sound/sequences/eu/0A_level_spooky.m64\": [5681,{\"eu\":[7997264]}],\n\"sound/sequences/eu/0B_event_piranha_plant.m64\": [1400,{\"eu\":[8002960]}],\n\"sound/sequences/eu/0C_level_underground.m64\": [4899,{\"eu\":[8004368]}],\n\"sound/sequences/eu/0D_menu_star_select.m64\": [138,{\"eu\":[8009280]}],\n\"sound/sequences/eu/0E_event_powerup.m64\": [3137,{\"eu\":[8009424]}],\n\"sound/sequences/eu/0F_event_metal_cap.m64\": [2779,{\"eu\":[8012576]}],\n\"sound/sequences/eu/10_event_koopa_message.m64\": [558,{\"eu\":[8015360]}],\n\"sound/sequences/eu/11_level_koopa_road.m64\": [4753,{\"eu\":[8015920]}],\n\"sound/sequences/eu/12_event_high_score.m64\": [275,{\"eu\":[8020688]}],\n\"sound/sequences/eu/13_event_merry_go_round.m64\": [1660,{\"eu\":[8020976]}],\n\"sound/sequences/eu/14_event_race.m64\": [200,{\"eu\":[8022640]}],\n\"sound/sequences/eu/15_cutscene_star_spawn.m64\": [649,{\"eu\":[8022848]}],\n\"sound/sequences/eu/16_event_boss.m64\": [3444,{\"eu\":[8023504]}],\n\"sound/sequences/eu/17_cutscene_collect_key.m64\": [677,{\"eu\":[8026960]}],\n\"sound/sequences/eu/18_event_endless_stairs.m64\": [1783,{\"eu\":[8027648]}],\n\"sound/sequences/eu/19_level_boss_koopa_final.m64\": [3521,{\"eu\":[8029440]}],\n\"sound/sequences/eu/1A_cutscene_credits.m64\": [14328,{\"eu\":[8032976]}],\n\"sound/sequences/eu/1B_event_solve_puzzle.m64\": [219,{\"eu\":[8047312]}],\n\"sound/sequences/eu/1C_event_toad_message.m64\": [211,{\"eu\":[8047536]}],\n\"sound/sequences/eu/1D_event_peach_message.m64\": [436,{\"eu\":[8047760]}],\n\"sound/sequences/eu/1E_cutscene_intro.m64\": [1770,{\"eu\":[8048208]}],\n\"sound/sequences/eu/1F_cutscene_victory.m64\": [2066,{\"eu\":[8049984]}],\n\"sound/sequences/eu/20_cutscene_ending.m64\": [1887,{\"eu\":[8052064]}],\n\"sound/sequences/eu/21_menu_file_select.m64\": [786,{\"eu\":[8053952]}],\n\"sound/sequences/eu/22_cutscene_lakitu.m64\": [317,{\"eu\":[8054752]}],\n\"sound/sequences/jp/01_cutscene_collect_star.m64\": [633,{\"jp\":[7639712]}],\n\"sound/sequences/jp/02_menu_title_screen.m64\": [8276,{\"jp\":[7640352]}],\n\"sound/sequences/jp/03_level_grass.m64\": [5134,{\"jp\":[7648640]}],\n\"sound/sequences/jp/04_level_inside_castle.m64\": [2504,{\"jp\":[7653776]}],\n\"sound/sequences/jp/05_level_water.m64\": [4816,{\"jp\":[7656288]}],\n\"sound/sequences/jp/06_level_hot.m64\": [2459,{\"jp\":[7661104]}],\n\"sound/sequences/jp/07_level_boss_koopa.m64\": [3430,{\"jp\":[7663568]}],\n\"sound/sequences/jp/08_level_snow.m64\": [8157,{\"jp\":[7667008]}],\n\"sound/sequences/jp/09_level_slide.m64\": [7452,{\"jp\":[7675168]}],\n\"sound/sequences/jp/0A_level_spooky.m64\": [5686,{\"jp\":[7682624]}],\n\"sound/sequences/jp/0B_event_piranha_plant.m64\": [1405,{\"jp\":[7688320]}],\n\"sound/sequences/jp/0C_level_underground.m64\": [4905,{\"jp\":[7689728]}],\n\"sound/sequences/jp/0D_menu_star_select.m64\": [138,{\"jp\":[7694640]}],\n\"sound/sequences/jp/0E_event_powerup.m64\": [3143,{\"jp\":[7694784]}],\n\"sound/sequences/jp/0F_event_metal_cap.m64\": [2786,{\"jp\":[7697936]}],\n\"sound/sequences/jp/10_event_koopa_message.m64\": [564,{\"jp\":[7700736]}],\n\"sound/sequences/jp/11_level_koopa_road.m64\": [4763,{\"jp\":[7701312]}],\n\"sound/sequences/jp/12_event_high_score.m64\": [279,{\"jp\":[7706080]}],\n\"sound/sequences/jp/13_event_merry_go_round.m64\": [1663,{\"jp\":[7706368]}],\n\"sound/sequences/jp/14_event_race.m64\": [203,{\"jp\":[7708032]}],\n\"sound/sequences/jp/15_cutscene_star_spawn.m64\": [654,{\"jp\":[7708240]}],\n\"sound/sequences/jp/16_event_boss.m64\": [3451,{\"jp\":[7708896]}],\n\"sound/sequences/jp/17_cutscene_collect_key.m64\": [683,{\"jp\":[7712352]}],\n\"sound/sequences/jp/18_event_endless_stairs.m64\": [1789,{\"jp\":[7713040]}],\n\"sound/sequences/jp/19_level_boss_koopa_final.m64\": [3527,{\"jp\":[7714832]}],\n\"sound/sequences/jp/1A_cutscene_credits.m64\": [14341,{\"jp\":[7718368]}],\n\"sound/sequences/jp/1B_event_solve_puzzle.m64\": [222,{\"jp\":[7732720]}],\n\"sound/sequences/jp/1C_event_toad_message.m64\": [214,{\"jp\":[7732944]}],\n\"sound/sequences/jp/1D_event_peach_message.m64\": [440,{\"jp\":[7733168]}],\n\"sound/sequences/jp/1E_cutscene_intro.m64\": [1774,{\"jp\":[7733616]}],\n\"sound/sequences/jp/1F_cutscene_victory.m64\": [2074,{\"jp\":[7735392]}],\n\"sound/sequences/jp/20_cutscene_ending.m64\": [1892,{\"jp\":[7737472]}],\n\"sound/sequences/jp/21_menu_file_select.m64\": [789,{\"jp\":[7739376]}],\n\"sound/sequences/sh/01_cutscene_collect_star.m64\": [626,{\"sh\":[7884144],\"cn\":[7957168]}],\n\"sound/sequences/sh/02_menu_title_screen.m64\": [8282,{\"sh\":[7884784],\"cn\":[7957808]}],\n\"sound/sequences/sh/03_level_grass.m64\": [5129,{\"sh\":[7893072],\"cn\":[7966096]}],\n\"sound/sequences/sh/04_level_inside_castle.m64\": [2503,{\"sh\":[7898208],\"cn\":[7971232]}],\n\"sound/sequences/sh/05_level_water.m64\": [4788,{\"sh\":[7900720],\"cn\":[7973744]}],\n\"sound/sequences/sh/06_level_hot.m64\": [2455,{\"sh\":[7905520],\"cn\":[7978544]}],\n\"sound/sequences/sh/07_level_boss_koopa.m64\": [3424,{\"sh\":[7907984],\"cn\":[7981008]}],\n\"sound/sequences/sh/08_level_snow.m64\": [8150,{\"sh\":[7911408],\"cn\":[7984432]}],\n\"sound/sequences/sh/09_level_slide.m64\": [7443,{\"sh\":[7919568],\"cn\":[7992592]}],\n\"sound/sequences/sh/0A_level_spooky.m64\": [5681,{\"sh\":[7927024],\"cn\":[8000048]}],\n\"sound/sequences/sh/0B_event_piranha_plant.m64\": [1400,{\"sh\":[7932720],\"cn\":[8005744]}],\n\"sound/sequences/sh/0C_level_underground.m64\": [4899,{\"sh\":[7934128],\"cn\":[8007152]}],\n\"sound/sequences/sh/0D_menu_star_select.m64\": [136,{\"sh\":[7939040],\"cn\":[8012064]}],\n\"sound/sequences/sh/0E_event_powerup.m64\": [3137,{\"sh\":[7939184],\"cn\":[8012208]}],\n\"sound/sequences/sh/0F_event_metal_cap.m64\": [2779,{\"sh\":[7942336],\"cn\":[8015360]}],\n\"sound/sequences/sh/10_event_koopa_message.m64\": [558,{\"sh\":[7945120],\"cn\":[8018144]}],\n\"sound/sequences/sh/11_level_koopa_road.m64\": [4753,{\"sh\":[7945680],\"cn\":[8018704]}],\n\"sound/sequences/sh/12_event_high_score.m64\": [275,{\"sh\":[7950448],\"cn\":[8023472]}],\n\"sound/sequences/sh/13_event_merry_go_round.m64\": [1660,{\"sh\":[7950736],\"cn\":[8023760]}],\n\"sound/sequences/sh/14_event_race.m64\": [200,{\"sh\":[7952400],\"cn\":[8025424]}],\n\"sound/sequences/sh/15_cutscene_star_spawn.m64\": [649,{\"sh\":[7952608],\"cn\":[8025632]}],\n\"sound/sequences/sh/16_event_boss.m64\": [3444,{\"sh\":[7953264],\"cn\":[8026288]}],\n\"sound/sequences/sh/17_cutscene_collect_key.m64\": [677,{\"sh\":[7956720],\"cn\":[8029744]}],\n\"sound/sequences/sh/18_event_endless_stairs.m64\": [1783,{\"sh\":[7957408],\"cn\":[8030432]}],\n\"sound/sequences/sh/19_level_boss_koopa_final.m64\": [3521,{\"sh\":[7959200],\"cn\":[8032224]}],\n\"sound/sequences/sh/1A_cutscene_credits.m64\": [14328,{\"sh\":[7962736],\"cn\":[8035760]}],\n\"sound/sequences/sh/1B_event_solve_puzzle.m64\": [219,{\"sh\":[7977072],\"cn\":[8050096]}],\n\"sound/sequences/sh/1C_event_toad_message.m64\": [211,{\"sh\":[7977296],\"cn\":[8050320]}],\n\"sound/sequences/sh/1D_event_peach_message.m64\": [436,{\"sh\":[7977520],\"cn\":[8050544]}],\n\"sound/sequences/sh/1E_cutscene_intro.m64\": [1770,{\"sh\":[7977968],\"cn\":[8050992]}],\n\"sound/sequences/sh/1F_cutscene_victory.m64\": [2066,{\"sh\":[7979744],\"cn\":[8052768]}],\n\"sound/sequences/sh/20_cutscene_ending.m64\": [1887,{\"sh\":[7981824],\"cn\":[8054848]}],\n\"sound/sequences/sh/21_menu_file_select.m64\": [786,{\"sh\":[7983712],\"cn\":[8056736]}],\n\"sound/sequences/sh/22_cutscene_lakitu.m64\": [317,{\"sh\":[7984512],\"cn\":[8057536]}],\n\"sound/sequences/us/01_cutscene_collect_star.m64\": [619,{\"us\":[8076816]}],\n\"sound/sequences/us/02_menu_title_screen.m64\": [8254,{\"us\":[8077440]}],\n\"sound/sequences/us/03_level_grass.m64\": [5122,{\"us\":[8085696]}],\n\"sound/sequences/us/04_level_inside_castle.m64\": [2494,{\"us\":[8090832]}],\n\"sound/sequences/us/05_level_water.m64\": [4780,{\"us\":[8093328]}],\n\"sound/sequences/us/06_level_hot.m64\": [2451,{\"us\":[8098112]}],\n\"sound/sequences/us/07_level_boss_koopa.m64\": [3418,{\"us\":[8100576]}],\n\"sound/sequences/us/08_level_snow.m64\": [8143,{\"us\":[8104000]}],\n\"sound/sequences/us/09_level_slide.m64\": [7432,{\"us\":[8112144]}],\n\"sound/sequences/us/0A_level_spooky.m64\": [5674,{\"us\":[8119584]}],\n\"sound/sequences/us/0B_event_piranha_plant.m64\": [1395,{\"us\":[8125264]}],\n\"sound/sequences/us/0C_level_underground.m64\": [4887,{\"us\":[8126672]}],\n\"sound/sequences/us/0D_menu_star_select.m64\": [134,{\"us\":[8131568]}],\n\"sound/sequences/us/0E_event_powerup.m64\": [3129,{\"us\":[8131712]}],\n\"sound/sequences/us/0F_event_metal_cap.m64\": [2770,{\"us\":[8134848]}],\n\"sound/sequences/us/10_event_koopa_message.m64\": [552,{\"us\":[8137632]}],\n\"sound/sequences/us/11_level_koopa_road.m64\": [4741,{\"us\":[8138192]}],\n\"sound/sequences/us/12_event_high_score.m64\": [271,{\"us\":[8142944]}],\n\"sound/sequences/us/13_event_merry_go_round.m64\": [1657,{\"us\":[8143216]}],\n\"sound/sequences/us/14_event_race.m64\": [197,{\"us\":[8144880]}],\n\"sound/sequences/us/15_cutscene_star_spawn.m64\": [644,{\"us\":[8145088]}],\n\"sound/sequences/us/16_event_boss.m64\": [3435,{\"us\":[8145744]}],\n\"sound/sequences/us/17_cutscene_collect_key.m64\": [671,{\"us\":[8149184]}],\n\"sound/sequences/us/18_event_endless_stairs.m64\": [1777,{\"us\":[8149856]}],\n\"sound/sequences/us/19_level_boss_koopa_final.m64\": [3515,{\"us\":[8151648]}],\n\"sound/sequences/us/1A_cutscene_credits.m64\": [14313,{\"us\":[8155168]}],\n\"sound/sequences/us/1B_event_solve_puzzle.m64\": [216,{\"us\":[8169488]}],\n\"sound/sequences/us/1C_event_toad_message.m64\": [208,{\"us\":[8169712]}],\n\"sound/sequences/us/1D_event_peach_message.m64\": [432,{\"us\":[8169920]}],\n\"sound/sequences/us/1E_cutscene_intro.m64\": [1764,{\"us\":[8170352]}],\n\"sound/sequences/us/1F_cutscene_victory.m64\": [2058,{\"us\":[8172128]}],\n\"sound/sequences/us/20_cutscene_ending.m64\": [1882,{\"us\":[8174192]}],\n\"sound/sequences/us/21_menu_file_select.m64\": [781,{\"us\":[8176080]}],\n\"sound/sequences/us/22_cutscene_lakitu.m64\": [313,{\"us\":[8176864]}],\n\"textures/cave/hmc_textures.00000.rgba16.png\": [32,64,4096,{\"jp\":[3432432,0],\"us\":[3439184,0],\"eu\":[3312784,0],\"sh\":[3287152,0],\"cn\":[3360912,0]}],\n\"textures/cave/hmc_textures.01000.rgba16.png\": [32,32,2048,{\"jp\":[3432432,4096],\"us\":[3439184,4096],\"eu\":[3312784,4096],\"sh\":[3287152,4096],\"cn\":[3360912,4096]}],\n\"textures/cave/hmc_textures.01800.rgba16.png\": [32,64,4096,{\"jp\":[3432432,6144],\"us\":[3439184,6144],\"eu\":[3312784,6144],\"sh\":[3287152,6144],\"cn\":[3360912,6144]}],\n\"textures/cave/hmc_textures.02800.rgba16.png\": [32,32,2048,{\"jp\":[3432432,10240],\"us\":[3439184,10240],\"eu\":[3312784,10240],\"sh\":[3287152,10240],\"cn\":[3360912,10240]}],\n\"textures/cave/hmc_textures.03000.rgba16.png\": [32,32,2048,{\"jp\":[3432432,12288],\"us\":[3439184,12288],\"eu\":[3312784,12288],\"sh\":[3287152,12288],\"cn\":[3360912,12288]}],\n\"textures/cave/hmc_textures.03800.rgba16.png\": [32,64,4096,{\"jp\":[3432432,14336],\"us\":[3439184,14336],\"eu\":[3312784,14336],\"sh\":[3287152,14336],\"cn\":[3360912,14336]}],\n\"textures/cave/hmc_textures.04800.rgba16.png\": [64,32,4096,{\"jp\":[3432432,18432],\"us\":[3439184,18432],\"eu\":[3312784,18432],\"sh\":[3287152,18432],\"cn\":[3360912,18432]}],\n\"textures/cave/hmc_textures.05800.rgba16.png\": [32,64,4096,{\"jp\":[3432432,22528],\"us\":[3439184,22528],\"eu\":[3312784,22528],\"sh\":[3287152,22528],\"cn\":[3360912,22528]}],\n\"textures/cave/hmc_textures.06800.rgba16.png\": [32,32,2048,{\"jp\":[3432432,26624],\"us\":[3439184,26624],\"eu\":[3312784,26624],\"sh\":[3287152,26624],\"cn\":[3360912,26624]}],\n\"textures/cave/hmc_textures.07000.rgba16.png\": [32,32,2048,{\"jp\":[3432432,28672],\"us\":[3439184,28672],\"eu\":[3312784,28672],\"sh\":[3287152,28672],\"cn\":[3360912,28672]}],\n\"textures/cave/hmc_textures.07800.rgba16.png\": [32,64,4096,{\"jp\":[3432432,30720],\"us\":[3439184,30720],\"eu\":[3312784,30720],\"sh\":[3287152,30720],\"cn\":[3360912,30720]}],\n\"textures/cave/hmc_textures.08800.rgba16.png\": [32,64,4096,{\"jp\":[3432432,34816],\"us\":[3439184,34816],\"eu\":[3312784,34816],\"sh\":[3287152,34816],\"cn\":[3360912,34816]}],\n\"textures/cave/hmc_textures.09800.rgba16.png\": [32,32,2048,{\"jp\":[3432432,38912],\"us\":[3439184,38912],\"eu\":[3312784,38912],\"sh\":[3287152,38912],\"cn\":[3360912,38912]}],\n\"textures/cave/hmc_textures.0A000.rgba16.png\": [32,32,2048,{\"jp\":[3432432,40960],\"us\":[3439184,40960],\"eu\":[3312784,40960],\"sh\":[3287152,40960],\"cn\":[3360912,40960]}],\n\"textures/cave/hmc_textures.0A800.rgba16.png\": [32,64,4096,{\"jp\":[3432432,43008],\"us\":[3439184,43008],\"eu\":[3312784,43008],\"sh\":[3287152,43008],\"cn\":[3360912,43008]}],\n\"textures/cave/hmc_textures.0B800.ia16.png\": [32,32,2048,{\"jp\":[3432432,47104],\"us\":[3439184,47104],\"eu\":[3312784,47104],\"sh\":[3287152,47104],\"cn\":[3360912,47104]}],\n\"textures/cave/hmc_textures.0C000.ia16.png\": [32,32,2048,{\"jp\":[3298272,43008],\"us\":[3305024,43008],\"eu\":[3178624,43008],\"sh\":[3152992,43008],\"cn\":[3226752,43008]}],\n\"textures/skyboxes/bbh.png\": [84288,{\"jp\":[3118928,0],\"us\":[3125680,0],\"eu\":[2999280,0],\"sh\":[2973648,0],\"cn\":[3047408,0]}],\n\"textures/skyboxes/bidw.png\": [131392,{\"jp\":[3146352,0],\"us\":[3153104,0],\"eu\":[3026704,0],\"sh\":[3001072,0],\"cn\":[3074832,0]}],\n\"textures/skyboxes/bitfs.png\": [102720,{\"jp\":[2942432,0],\"us\":[2949184,0],\"eu\":[2822784,0],\"sh\":[2797152,0],\"cn\":[2870912,0]}],\n\"textures/skyboxes/bits.png\": [131392,{\"jp\":[3191904,0],\"us\":[3198656,0],\"eu\":[3072256,0],\"sh\":[3046624,0],\"cn\":[3120384,0]}],\n\"textures/skyboxes/ccm.png\": [131392,{\"jp\":[2847920,0],\"us\":[2854672,0],\"eu\":[2728272,0],\"sh\":[2702640,0],\"cn\":[2776400,0]}],\n\"textures/skyboxes/cloud_floor.png\": [131392,{\"jp\":[3038752,0],\"us\":[3045504,0],\"eu\":[2919104,0],\"sh\":[2893472,0],\"cn\":[2967232,0]}],\n\"textures/skyboxes/clouds.png\": [84288,{\"jp\":[2906480,0],\"us\":[2913232,0],\"eu\":[2786832,0],\"sh\":[2761200,0],\"cn\":[2834960,0]}],\n\"textures/skyboxes/ssl.png\": [131392,{\"jp\":[3078784,0],\"us\":[3085536,0],\"eu\":[2959136,0],\"sh\":[2933504,0],\"cn\":[3007264,0]}],\n\"textures/skyboxes/water.png\": [131392,{\"jp\":[2796624,0],\"us\":[2803376,0],\"eu\":[2676976,0],\"sh\":[2651344,0],\"cn\":[2725104,0]}],\n\"textures/skyboxes/wdw.png\": [131392,{\"jp\":[2968208,0],\"us\":[2974960,0],\"eu\":[2848560,0],\"sh\":[2822928,0],\"cn\":[2896688,0]}],\n\"textures/effect/bubble.06048.rgba16.png\": [32,32,2048,{\"jp\":[3594960,24648],\"us\":[3601712,24648],\"eu\":[3475312,24648],\"sh\":[3449680,24648],\"cn\":[3523440,24648]}],\n\"textures/effect/flower.00008.rgba16.png\": [32,32,2048,{\"jp\":[3594960,8],\"us\":[3601712,8],\"eu\":[3475312,8],\"sh\":[3449680,8],\"cn\":[3523440,8]}],\n\"textures/effect/flower.00808.rgba16.png\": [32,32,2048,{\"jp\":[3594960,2056],\"us\":[3601712,2056],\"eu\":[3475312,2056],\"sh\":[3449680,2056],\"cn\":[3523440,2056]}],\n\"textures/effect/flower.01008.rgba16.png\": [32,32,2048,{\"jp\":[3594960,4104],\"us\":[3601712,4104],\"eu\":[3475312,4104],\"sh\":[3449680,4104],\"cn\":[3523440,4104]}],\n\"textures/effect/flower.01808.rgba16.png\": [32,32,2048,{\"jp\":[3594960,6152],\"us\":[3601712,6152],\"eu\":[3475312,6152],\"sh\":[3449680,6152],\"cn\":[3523440,6152]}],\n\"textures/effect/lava_bubble.02020.rgba16.png\": [32,32,2048,{\"jp\":[3594960,8224],\"us\":[3601712,8224],\"eu\":[3475312,8224],\"sh\":[3449680,8224],\"cn\":[3523440,8224]}],\n\"textures/effect/lava_bubble.02820.rgba16.png\": [32,32,2048,{\"jp\":[3594960,10272],\"us\":[3601712,10272],\"eu\":[3475312,10272],\"sh\":[3449680,10272],\"cn\":[3523440,10272]}],\n\"textures/effect/lava_bubble.03020.rgba16.png\": [32,32,2048,{\"jp\":[3594960,12320],\"us\":[3601712,12320],\"eu\":[3475312,12320],\"sh\":[3449680,12320],\"cn\":[3523440,12320]}],\n\"textures/effect/lava_bubble.03820.rgba16.png\": [32,32,2048,{\"jp\":[3594960,14368],\"us\":[3601712,14368],\"eu\":[3475312,14368],\"sh\":[3449680,14368],\"cn\":[3523440,14368]}],\n\"textures/effect/lava_bubble.04020.rgba16.png\": [32,32,2048,{\"jp\":[3594960,16416],\"us\":[3601712,16416],\"eu\":[3475312,16416],\"sh\":[3449680,16416],\"cn\":[3523440,16416]}],\n\"textures/effect/lava_bubble.04820.rgba16.png\": [32,32,2048,{\"jp\":[3594960,18464],\"us\":[3601712,18464],\"eu\":[3475312,18464],\"sh\":[3449680,18464],\"cn\":[3523440,18464]}],\n\"textures/effect/lava_bubble.05020.rgba16.png\": [32,32,2048,{\"jp\":[3594960,20512],\"us\":[3601712,20512],\"eu\":[3475312,20512],\"sh\":[3449680,20512],\"cn\":[3523440,20512]}],\n\"textures/effect/lava_bubble.05820.rgba16.png\": [32,32,2048,{\"jp\":[3594960,22560],\"us\":[3601712,22560],\"eu\":[3475312,22560],\"sh\":[3449680,22560],\"cn\":[3523440,22560]}],\n\"textures/effect/tiny_bubble.0684C.rgba16.png\": [16,16,512,{\"jp\":[3594960,26700],\"us\":[3601712,26700],\"eu\":[3475312,26700],\"sh\":[3449680,26700],\"cn\":[3523440,26700]}],\n\"textures/effect/tiny_bubble.06AD8.rgba16.png\": [16,16,512,{\"jp\":[3594960,27352],\"us\":[3601712,27352],\"eu\":[3475312,27352],\"sh\":[3449680,27352],\"cn\":[3523440,27352]}],\n\"textures/fire/lll_textures.00000.rgba16.png\": [32,32,2048,{\"jp\":[3262320,0],\"us\":[3269072,0],\"eu\":[3142672,0],\"sh\":[3117040,0],\"cn\":[3190800,0]}],\n\"textures/fire/lll_textures.00800.rgba16.png\": [32,32,2048,{\"jp\":[3262320,2048],\"us\":[3269072,2048],\"eu\":[3142672,2048],\"sh\":[3117040,2048],\"cn\":[3190800,2048]}],\n\"textures/fire/lll_textures.01000.rgba16.png\": [32,32,2048,{\"jp\":[3262320,4096],\"us\":[3269072,4096],\"eu\":[3142672,4096],\"sh\":[3117040,4096],\"cn\":[3190800,4096]}],\n\"textures/fire/lll_textures.01800.rgba16.png\": [32,32,2048,{\"jp\":[3262320,6144],\"us\":[3269072,6144],\"eu\":[3142672,6144],\"sh\":[3117040,6144],\"cn\":[3190800,6144]}],\n\"textures/fire/lll_textures.02000.rgba16.png\": [32,32,2048,{\"jp\":[3262320,8192],\"us\":[3269072,8192],\"eu\":[3142672,8192],\"sh\":[3117040,8192],\"cn\":[3190800,8192]}],\n\"textures/fire/lll_textures.02800.rgba16.png\": [32,32,2048,{\"jp\":[3262320,10240],\"us\":[3269072,10240],\"eu\":[3142672,10240],\"sh\":[3117040,10240],\"cn\":[3190800,10240]}],\n\"textures/fire/lll_textures.03000.rgba16.png\": [32,32,2048,{\"jp\":[3262320,12288],\"us\":[3269072,12288],\"eu\":[3142672,12288],\"sh\":[3117040,12288],\"cn\":[3190800,12288]}],\n\"textures/fire/lll_textures.03800.rgba16.png\": [32,32,2048,{\"jp\":[3262320,14336],\"us\":[3269072,14336],\"eu\":[3142672,14336],\"sh\":[3117040,14336],\"cn\":[3190800,14336]}],\n\"textures/fire/lll_textures.04000.rgba16.png\": [32,32,2048,{\"jp\":[3262320,16384],\"us\":[3269072,16384],\"eu\":[3142672,16384],\"sh\":[3117040,16384],\"cn\":[3190800,16384]}],\n\"textures/fire/lll_textures.04800.rgba16.png\": [32,32,2048,{\"jp\":[3262320,18432],\"us\":[3269072,18432],\"eu\":[3142672,18432],\"sh\":[3117040,18432],\"cn\":[3190800,18432]}],\n\"textures/fire/lll_textures.05000.rgba16.png\": [32,32,2048,{\"jp\":[3262320,20480],\"us\":[3269072,20480],\"eu\":[3142672,20480],\"sh\":[3117040,20480],\"cn\":[3190800,20480]}],\n\"textures/fire/lll_textures.05800.rgba16.png\": [32,32,2048,{\"jp\":[3262320,22528],\"us\":[3269072,22528],\"eu\":[3142672,22528],\"sh\":[3117040,22528],\"cn\":[3190800,22528]}],\n\"textures/fire/lll_textures.06000.rgba16.png\": [32,32,2048,{\"jp\":[3262320,24576],\"us\":[3269072,24576],\"eu\":[3142672,24576],\"sh\":[3117040,24576],\"cn\":[3190800,24576]}],\n\"textures/fire/lll_textures.06800.rgba16.png\": [32,32,2048,{\"jp\":[3262320,26624],\"us\":[3269072,26624],\"eu\":[3142672,26624],\"sh\":[3117040,26624],\"cn\":[3190800,26624]}],\n\"textures/fire/lll_textures.07000.rgba16.png\": [32,32,2048,{\"jp\":[3262320,28672],\"us\":[3269072,28672],\"eu\":[3142672,28672],\"sh\":[3117040,28672],\"cn\":[3190800,28672]}],\n\"textures/fire/lll_textures.07800.rgba16.png\": [32,32,2048,{\"jp\":[3262320,30720],\"us\":[3269072,30720],\"eu\":[3142672,30720],\"sh\":[3117040,30720],\"cn\":[3190800,30720]}],\n\"textures/fire/lll_textures.08000.rgba16.png\": [32,32,2048,{\"jp\":[3262320,32768],\"us\":[3269072,32768],\"eu\":[3142672,32768],\"sh\":[3117040,32768],\"cn\":[3190800,32768]}],\n\"textures/fire/lll_textures.08800.rgba16.png\": [32,32,2048,{\"jp\":[3262320,34816],\"us\":[3269072,34816],\"eu\":[3142672,34816],\"sh\":[3117040,34816],\"cn\":[3190800,34816]}],\n\"textures/fire/lll_textures.09000.rgba16.png\": [32,32,2048,{\"jp\":[1078992,80984],\"us\":[1083968,92856],\"eu\":[909712,49528],\"sh\":[934640,80984],\"cn\":[947456,193320]}],\n\"textures/fire/lll_textures.09800.rgba16.png\": [32,32,2048,{\"jp\":[3262320,38912],\"us\":[3269072,38912],\"eu\":[3142672,38912],\"sh\":[3117040,38912],\"cn\":[3190800,38912]}],\n\"textures/fire/lll_textures.0A000.rgba16.png\": [32,32,2048,{\"jp\":[3262320,40960],\"us\":[3269072,40960],\"eu\":[3142672,40960],\"sh\":[3117040,40960],\"cn\":[3190800,40960]}],\n\"textures/fire/lll_textures.0A800.rgba16.png\": [32,32,2048,{\"jp\":[3262320,43008],\"us\":[3269072,43008],\"eu\":[3142672,43008],\"sh\":[3117040,43008],\"cn\":[3190800,43008]}],\n\"textures/fire/lll_textures.0B000.rgba16.png\": [32,32,2048,{\"jp\":[3262320,45056],\"us\":[3269072,45056],\"eu\":[3142672,45056],\"sh\":[3117040,45056],\"cn\":[3190800,45056]}],\n\"textures/fire/lll_textures.0B800.rgba16.png\": [32,32,2048,{\"jp\":[3262320,47104],\"us\":[3269072,47104],\"eu\":[3142672,47104],\"sh\":[3117040,47104],\"cn\":[3190800,47104]}],\n\"textures/generic/bob_textures.00000.rgba16.png\": [32,32,2048,{\"jp\":[3323408,0],\"us\":[3330160,0],\"eu\":[3203760,0],\"sh\":[3178128,0],\"cn\":[3251888,0]}],\n\"textures/generic/bob_textures.00800.rgba16.png\": [32,32,2048,{\"jp\":[1327760,36160],\"us\":[1334928,36160],\"eu\":[1206896,36160],\"sh\":[1183408,36160],\"cn\":[1250240,36160]}],\n\"textures/generic/bob_textures.01000.rgba16.png\": [32,32,2048,{\"jp\":[3323408,4096],\"us\":[3330160,4096],\"eu\":[3203760,4096],\"sh\":[3178128,4096],\"cn\":[3251888,4096]}],\n\"textures/generic/bob_textures.01800.rgba16.png\": [32,32,2048,{\"jp\":[3323408,6144],\"us\":[3330160,6144],\"eu\":[3203760,6144],\"sh\":[3178128,6144],\"cn\":[3251888,6144]}],\n\"textures/generic/bob_textures.02000.rgba16.png\": [32,32,2048,{\"jp\":[3323408,8192],\"us\":[3330160,8192],\"eu\":[3203760,8192],\"sh\":[3178128,8192],\"cn\":[3251888,8192]}],\n\"textures/generic/bob_textures.02800.rgba16.png\": [32,32,2048,{\"jp\":[3323408,10240],\"us\":[3330160,10240],\"eu\":[3203760,10240],\"sh\":[3178128,10240],\"cn\":[3251888,10240]}],\n\"textures/generic/bob_textures.03000.rgba16.png\": [32,32,2048,{\"jp\":[3323408,12288],\"us\":[3330160,12288],\"eu\":[3203760,12288],\"sh\":[3178128,12288],\"cn\":[3251888,12288]}],\n\"textures/generic/bob_textures.03800.rgba16.png\": [32,32,2048,{\"jp\":[3323408,14336],\"us\":[3330160,14336],\"eu\":[3203760,14336],\"sh\":[3178128,14336],\"cn\":[3251888,14336]}],\n\"textures/generic/bob_textures.04000.rgba16.png\": [32,32,2048,{\"jp\":[3323408,16384],\"us\":[3330160,16384],\"eu\":[3203760,16384],\"sh\":[3178128,16384],\"cn\":[3251888,16384]}],\n\"textures/generic/bob_textures.04800.rgba16.png\": [32,32,2048,{\"jp\":[3323408,18432],\"us\":[3330160,18432],\"eu\":[3203760,18432],\"sh\":[3178128,18432],\"cn\":[3251888,18432]}],\n\"textures/generic/bob_textures.05000.rgba16.png\": [32,32,2048,{\"jp\":[3323408,20480],\"us\":[3330160,20480],\"eu\":[3203760,20480],\"sh\":[3178128,20480],\"cn\":[3251888,20480]}],\n\"textures/generic/bob_textures.05800.rgba16.png\": [32,32,2048,{\"jp\":[3323408,22528],\"us\":[3330160,22528],\"eu\":[3203760,22528],\"sh\":[3178128,22528],\"cn\":[3251888,22528]}],\n\"textures/generic/bob_textures.06000.rgba16.png\": [32,64,4096,{\"jp\":[3323408,24576],\"us\":[3330160,24576],\"eu\":[3203760,24576],\"sh\":[3178128,24576],\"cn\":[3251888,24576]}],\n\"textures/generic/bob_textures.07000.rgba16.png\": [32,32,2048,{\"jp\":[3323408,28672],\"us\":[3330160,28672],\"eu\":[3203760,28672],\"sh\":[3178128,28672],\"cn\":[3251888,28672]}],\n\"textures/generic/bob_textures.07800.rgba16.png\": [32,32,2048,{\"jp\":[3323408,30720],\"us\":[3330160,30720],\"eu\":[3203760,30720],\"sh\":[3178128,30720],\"cn\":[3251888,30720]}],\n\"textures/generic/bob_textures.08000.rgba16.png\": [32,32,2048,{\"jp\":[3323408,32768],\"us\":[3330160,32768],\"eu\":[3203760,32768],\"sh\":[3178128,32768],\"cn\":[3251888,32768]}],\n\"textures/generic/bob_textures.08800.rgba16.png\": [32,32,2048,{\"jp\":[3323408,34816],\"us\":[3330160,34816],\"eu\":[3203760,34816],\"sh\":[3178128,34816],\"cn\":[3251888,34816]}],\n\"textures/generic/bob_textures.09000.rgba16.png\": [32,32,2048,{\"jp\":[3323408,36864],\"us\":[3330160,36864],\"eu\":[3203760,36864],\"sh\":[3178128,36864],\"cn\":[3251888,36864]}],\n\"textures/generic/bob_textures.09800.rgba16.png\": [32,32,2048,{\"jp\":[3323408,38912],\"us\":[3330160,38912],\"eu\":[3203760,38912],\"sh\":[3178128,38912],\"cn\":[3251888,38912]}],\n\"textures/generic/bob_textures.0A000.rgba16.png\": [32,32,2048,{\"jp\":[3323408,40960],\"us\":[3330160,40960],\"eu\":[3203760,40960],\"sh\":[3178128,40960],\"cn\":[3251888,40960]}],\n\"textures/generic/bob_textures.0A800.rgba16.png\": [32,32,2048,{\"jp\":[3323408,43008],\"us\":[3330160,43008],\"eu\":[3203760,43008],\"sh\":[3178128,43008],\"cn\":[3251888,43008]}],\n\"textures/generic/bob_textures.0B000.ia16.png\": [32,32,2048,{\"jp\":[3323408,45056],\"us\":[3330160,45056],\"eu\":[3203760,45056],\"sh\":[3178128,45056],\"cn\":[3251888,45056]}],\n\"textures/grass/wf_textures.00000.rgba16.png\": [32,32,2048,{\"jp\":[3496176,0],\"us\":[3502928,0],\"eu\":[3376528,0],\"sh\":[3350896,0],\"cn\":[3424656,0]}],\n\"textures/grass/wf_textures.00800.rgba16.png\": [32,32,2048,{\"jp\":[3496176,2048],\"us\":[3502928,2048],\"eu\":[3376528,2048],\"sh\":[3350896,2048],\"cn\":[3424656,2048]}],\n\"textures/grass/wf_textures.01000.rgba16.png\": [32,32,2048,{\"jp\":[3496176,4096],\"us\":[3502928,4096],\"eu\":[3376528,4096],\"sh\":[3350896,4096],\"cn\":[3424656,4096]}],\n\"textures/grass/wf_textures.01800.rgba16.png\": [32,32,2048,{\"jp\":[3496176,6144],\"us\":[3502928,6144],\"eu\":[3376528,6144],\"sh\":[3350896,6144],\"cn\":[3424656,6144]}],\n\"textures/grass/wf_textures.02000.rgba16.png\": [32,32,2048,{\"jp\":[3496176,8192],\"us\":[3502928,8192],\"eu\":[3376528,8192],\"sh\":[3350896,8192],\"cn\":[3424656,8192]}],\n\"textures/grass/wf_textures.02800.rgba16.png\": [32,32,2048,{\"jp\":[3496176,10240],\"us\":[3502928,10240],\"eu\":[3376528,10240],\"sh\":[3350896,10240],\"cn\":[3424656,10240]}],\n\"textures/grass/wf_textures.03000.rgba16.png\": [32,32,2048,{\"jp\":[3496176,12288],\"us\":[3502928,12288],\"eu\":[3376528,12288],\"sh\":[3350896,12288],\"cn\":[3424656,12288]}],\n\"textures/grass/wf_textures.03800.rgba16.png\": [32,32,2048,{\"jp\":[3496176,14336],\"us\":[3502928,14336],\"eu\":[3376528,14336],\"sh\":[3350896,14336],\"cn\":[3424656,14336]}],\n\"textures/grass/wf_textures.04000.rgba16.png\": [32,32,2048,{\"jp\":[3496176,16384],\"us\":[3502928,16384],\"eu\":[3376528,16384],\"sh\":[3350896,16384],\"cn\":[3424656,16384]}],\n\"textures/grass/wf_textures.04800.rgba16.png\": [32,32,2048,{\"jp\":[3496176,18432],\"us\":[3502928,18432],\"eu\":[3376528,18432],\"sh\":[3350896,18432],\"cn\":[3424656,18432]}],\n\"textures/grass/wf_textures.05000.rgba16.png\": [32,32,2048,{\"jp\":[3496176,20480],\"us\":[3502928,20480],\"eu\":[3376528,20480],\"sh\":[3350896,20480],\"cn\":[3424656,20480]}],\n\"textures/grass/wf_textures.05800.rgba16.png\": [32,32,2048,{\"jp\":[3496176,22528],\"us\":[3502928,22528],\"eu\":[3376528,22528],\"sh\":[3350896,22528],\"cn\":[3424656,22528]}],\n\"textures/grass/wf_textures.06000.rgba16.png\": [32,32,2048,{\"jp\":[3390640,20480],\"us\":[3397392,20480],\"eu\":[3270992,20480],\"sh\":[3245360,20480],\"cn\":[3319120,20480]}],\n\"textures/grass/wf_textures.06800.rgba16.png\": [32,32,2048,{\"jp\":[3496176,26624],\"us\":[3502928,26624],\"eu\":[3376528,26624],\"sh\":[3350896,26624],\"cn\":[3424656,26624]}],\n\"textures/grass/wf_textures.07000.rgba16.png\": [32,32,2048,{\"jp\":[3496176,28672],\"us\":[3502928,28672],\"eu\":[3376528,28672],\"sh\":[3350896,28672],\"cn\":[3424656,28672]}],\n\"textures/grass/wf_textures.07800.rgba16.png\": [32,32,2048,{\"jp\":[3496176,30720],\"us\":[3502928,30720],\"eu\":[3376528,30720],\"sh\":[3350896,30720],\"cn\":[3424656,30720]}],\n\"textures/grass/wf_textures.08000.rgba16.png\": [32,32,2048,{\"jp\":[3496176,32768],\"us\":[3502928,32768],\"eu\":[3376528,32768],\"sh\":[3350896,32768],\"cn\":[3424656,32768]}],\n\"textures/grass/wf_textures.08800.rgba16.png\": [32,32,2048,{\"jp\":[3496176,34816],\"us\":[3502928,34816],\"eu\":[3376528,34816],\"sh\":[3350896,34816],\"cn\":[3424656,34816]}],\n\"textures/grass/wf_textures.09000.rgba16.png\": [32,32,2048,{\"jp\":[3496176,36864],\"us\":[3502928,36864],\"eu\":[3376528,36864],\"sh\":[3350896,36864],\"cn\":[3424656,36864]}],\n\"textures/grass/wf_textures.09800.rgba16.png\": [32,32,2048,{\"jp\":[3496176,38912],\"us\":[3502928,38912],\"eu\":[3376528,38912],\"sh\":[3350896,38912],\"cn\":[3424656,38912]}],\n\"textures/grass/wf_textures.0A000.rgba16.png\": [32,32,2048,{\"jp\":[3496176,40960],\"us\":[3502928,40960],\"eu\":[3376528,40960],\"sh\":[3350896,40960],\"cn\":[3424656,40960]}],\n\"textures/grass/wf_textures.0A800.rgba16.png\": [32,32,2048,{\"jp\":[3496176,43008],\"us\":[3502928,43008],\"eu\":[3376528,43008],\"sh\":[3350896,43008],\"cn\":[3424656,43008]}],\n\"textures/grass/wf_textures.0B000.ia16.png\": [32,32,2048,{\"jp\":[3323408,45056],\"us\":[3330160,45056],\"eu\":[3203760,45056],\"sh\":[3178128,45056],\"cn\":[3251888,45056]}],\n\"textures/grass/wf_textures.0B800.ia16.png\": [32,32,2048,{\"jp\":[3496176,47104],\"us\":[3502928,47104],\"eu\":[3376528,47104],\"sh\":[3350896,47104],\"cn\":[3424656,47104]}],\n\"textures/inside/inside_castle_textures.00000.rgba16.png\": [64,32,4096,{\"jp\":[3555104,0],\"us\":[3561856,0],\"eu\":[3435456,0],\"sh\":[3409824,0],\"cn\":[3483584,0]}],\n\"textures/inside/inside_castle_textures.01000.rgba16.png\": [64,32,4096,{\"jp\":[3555104,4096],\"us\":[3561856,4096],\"eu\":[3435456,4096],\"sh\":[3409824,4096],\"cn\":[3483584,4096]}],\n\"textures/inside/inside_castle_textures.02000.rgba16.png\": [32,64,4096,{\"jp\":[3555104,8192],\"us\":[3561856,8192],\"eu\":[3435456,8192],\"sh\":[3409824,8192],\"cn\":[3483584,8192]}],\n\"textures/inside/inside_castle_textures.03000.rgba16.png\": [32,32,2048,{\"jp\":[3555104,12288],\"us\":[3561856,12288],\"eu\":[3435456,12288],\"sh\":[3409824,12288],\"cn\":[3483584,12288]}],\n\"textures/inside/inside_castle_textures.03800.rgba16.png\": [32,32,2048,{\"jp\":[3555104,14336],\"us\":[3561856,14336],\"eu\":[3435456,14336],\"sh\":[3409824,14336],\"cn\":[3483584,14336]}],\n\"textures/inside/inside_castle_textures.04000.rgba16.png\": [32,32,2048,{\"jp\":[3555104,16384],\"us\":[3561856,16384],\"eu\":[3435456,16384],\"sh\":[3409824,16384],\"cn\":[3483584,16384]}],\n\"textures/inside/inside_castle_textures.04800.rgba16.png\": [32,32,2048,{\"jp\":[3460352,2048],\"us\":[3467104,2048],\"eu\":[3340704,2048],\"sh\":[3315072,2048],\"cn\":[3388832,2048]}],\n\"textures/inside/inside_castle_textures.05000.rgba16.png\": [32,32,2048,{\"jp\":[3555104,20480],\"us\":[3561856,20480],\"eu\":[3435456,20480],\"sh\":[3409824,20480],\"cn\":[3483584,20480]}],\n\"textures/inside/inside_castle_textures.05800.rgba16.png\": [32,32,2048,{\"jp\":[3555104,22528],\"us\":[3561856,22528],\"eu\":[3435456,22528],\"sh\":[3409824,22528],\"cn\":[3483584,22528]}],\n\"textures/inside/inside_castle_textures.06000.rgba16.png\": [32,64,4096,{\"jp\":[3555104,24576],\"us\":[3561856,24576],\"eu\":[3435456,24576],\"sh\":[3409824,24576],\"cn\":[3483584,24576]}],\n\"textures/inside/inside_castle_textures.07000.rgba16.png\": [32,64,4096,{\"jp\":[3555104,28672],\"us\":[3561856,28672],\"eu\":[3435456,28672],\"sh\":[3409824,28672],\"cn\":[3483584,28672]}],\n\"textures/inside/inside_castle_textures.08000.rgba16.png\": [32,32,2048,{\"jp\":[3555104,32768],\"us\":[3561856,32768],\"eu\":[3435456,32768],\"sh\":[3409824,32768],\"cn\":[3483584,32768]}],\n\"textures/inside/inside_castle_textures.08800.rgba16.png\": [32,32,2048,{\"jp\":[3555104,34816],\"us\":[3561856,34816],\"eu\":[3435456,34816],\"sh\":[3409824,34816],\"cn\":[3483584,34816]}],\n\"textures/inside/inside_castle_textures.09000.rgba16.png\": [32,64,4096,{\"jp\":[3555104,36864],\"us\":[3561856,36864],\"eu\":[3435456,36864],\"sh\":[3409824,36864],\"cn\":[3483584,36864]}],\n\"textures/inside/inside_castle_textures.0A000.rgba16.png\": [32,64,4096,{\"jp\":[3555104,40960],\"us\":[3561856,40960],\"eu\":[3435456,40960],\"sh\":[3409824,40960],\"cn\":[3483584,40960]}],\n\"textures/inside/inside_castle_textures.0B000.rgba16.png\": [32,32,2048,{\"jp\":[3555104,45056],\"us\":[3561856,45056],\"eu\":[3435456,45056],\"sh\":[3409824,45056],\"cn\":[3483584,45056]}],\n\"textures/inside/inside_castle_textures.0B800.rgba16.png\": [64,32,4096,{\"jp\":[3555104,47104],\"us\":[3561856,47104],\"eu\":[3435456,47104],\"sh\":[3409824,47104],\"cn\":[3483584,47104]}],\n\"textures/intro_raw/hand_closed.rgba16.png\": [32,32,2048,{\"jp\":[2455304],\"us\":[2463112],\"eu\":[2331912],\"sh\":[2308680],\"cn\":[2379416]}],\n\"textures/intro_raw/hand_open.rgba16.png\": [32,32,2048,{\"jp\":[2453248],\"us\":[2461056],\"eu\":[2329856],\"sh\":[2306624],\"cn\":[2377360]}],\n\"textures/intro_raw/mario_face_shine.ia8.png\": [32,32,1024,{\"jp\":[2503888],\"us\":[2511696],\"eu\":[2380496],\"sh\":[2357264],\"cn\":[2428000]}],\n\"textures/intro_raw/red_star_0.rgba16.png\": [32,32,2048,{\"jp\":[2457352],\"us\":[2465160],\"eu\":[2333960],\"sh\":[2310728],\"cn\":[2381464]}],\n\"textures/intro_raw/red_star_1.rgba16.png\": [32,32,2048,{\"jp\":[2459400],\"us\":[2467208],\"eu\":[2336008],\"sh\":[2312776],\"cn\":[2383512]}],\n\"textures/intro_raw/red_star_2.rgba16.png\": [32,32,2048,{\"jp\":[2461448],\"us\":[2469256],\"eu\":[2338056],\"sh\":[2314824],\"cn\":[2385560]}],\n\"textures/intro_raw/red_star_3.rgba16.png\": [32,32,2048,{\"jp\":[2463496],\"us\":[2471304],\"eu\":[2340104],\"sh\":[2316872],\"cn\":[2387608]}],\n\"textures/intro_raw/red_star_4.rgba16.png\": [32,32,2048,{\"jp\":[2465544],\"us\":[2473352],\"eu\":[2342152],\"sh\":[2318920],\"cn\":[2389656]}],\n\"textures/intro_raw/red_star_5.rgba16.png\": [32,32,2048,{\"jp\":[2467592],\"us\":[2475400],\"eu\":[2344200],\"sh\":[2320968],\"cn\":[2391704]}],\n\"textures/intro_raw/red_star_6.rgba16.png\": [32,32,2048,{\"jp\":[2469640],\"us\":[2477448],\"eu\":[2346248],\"sh\":[2323016],\"cn\":[2393752]}],\n\"textures/intro_raw/red_star_7.rgba16.png\": [32,32,2048,{\"jp\":[2471688],\"us\":[2479496],\"eu\":[2348296],\"sh\":[2325064],\"cn\":[2395800]}],\n\"textures/intro_raw/sparkle_0.rgba16.png\": [32,32,2048,{\"jp\":[2490888],\"us\":[2498696],\"eu\":[2367496],\"sh\":[2344264],\"cn\":[2415000]}],\n\"textures/intro_raw/sparkle_1.rgba16.png\": [32,32,2048,{\"jp\":[2492936],\"us\":[2500744],\"eu\":[2369544],\"sh\":[2346312],\"cn\":[2417048]}],\n\"textures/intro_raw/sparkle_2.rgba16.png\": [32,32,2048,{\"jp\":[2494984],\"us\":[2502792],\"eu\":[2371592],\"sh\":[2348360],\"cn\":[2419096]}],\n\"textures/intro_raw/sparkle_3.rgba16.png\": [32,32,2048,{\"jp\":[2497032],\"us\":[2504840],\"eu\":[2373640],\"sh\":[2350408],\"cn\":[2421144]}],\n\"textures/intro_raw/sparkle_4.rgba16.png\": [32,32,2048,{\"jp\":[2499080],\"us\":[2506888],\"eu\":[2375688],\"sh\":[2352456],\"cn\":[2423192]}],\n\"textures/intro_raw/sparkle_5.rgba16.png\": [32,32,2048,{\"jp\":[2501128],\"us\":[2508936],\"eu\":[2377736],\"sh\":[2354504],\"cn\":[2425240]}],\n\"textures/intro_raw/white_star_0.rgba16.png\": [32,32,2048,{\"jp\":[2473736],\"us\":[2481544],\"eu\":[2350344],\"sh\":[2327112],\"cn\":[2397848]}],\n\"textures/intro_raw/white_star_1.rgba16.png\": [32,32,2048,{\"jp\":[2475784],\"us\":[2483592],\"eu\":[2352392],\"sh\":[2329160],\"cn\":[2399896]}],\n\"textures/intro_raw/white_star_2.rgba16.png\": [32,32,2048,{\"jp\":[2477832],\"us\":[2485640],\"eu\":[2354440],\"sh\":[2331208],\"cn\":[2401944]}],\n\"textures/intro_raw/white_star_3.rgba16.png\": [32,32,2048,{\"jp\":[2479880],\"us\":[2487688],\"eu\":[2356488],\"sh\":[2333256],\"cn\":[2403992]}],\n\"textures/intro_raw/white_star_4.rgba16.png\": [32,32,2048,{\"jp\":[2481928],\"us\":[2489736],\"eu\":[2358536],\"sh\":[2335304],\"cn\":[2406040]}],\n\"textures/intro_raw/white_star_5.rgba16.png\": [32,32,2048,{\"jp\":[2483976],\"us\":[2491784],\"eu\":[2360584],\"sh\":[2337352],\"cn\":[2408088]}],\n\"textures/intro_raw/white_star_6.rgba16.png\": [32,32,2048,{\"jp\":[2486024],\"us\":[2493832],\"eu\":[2362632],\"sh\":[2339400],\"cn\":[2410136]}],\n\"textures/intro_raw/white_star_7.rgba16.png\": [32,32,2048,{\"jp\":[2488072],\"us\":[2495880],\"eu\":[2364680],\"sh\":[2341448],\"cn\":[2412184]}],\n\"textures/machine/ttc_textures.00000.rgba16.png\": [32,32,2048,{\"jp\":[3460352,0],\"us\":[3467104,0],\"eu\":[3340704,0],\"sh\":[3315072,0],\"cn\":[3388832,0]}],\n\"textures/machine/ttc_textures.00800.rgba16.png\": [32,32,2048,{\"jp\":[3460352,2048],\"us\":[3467104,2048],\"eu\":[3340704,2048],\"sh\":[3315072,2048],\"cn\":[3388832,2048]}],\n\"textures/machine/ttc_textures.01000.rgba16.png\": [32,32,2048,{\"jp\":[3460352,4096],\"us\":[3467104,4096],\"eu\":[3340704,4096],\"sh\":[3315072,4096],\"cn\":[3388832,4096]}],\n\"textures/machine/ttc_textures.01800.rgba16.png\": [32,32,2048,{\"jp\":[3460352,6144],\"us\":[3467104,6144],\"eu\":[3340704,6144],\"sh\":[3315072,6144],\"cn\":[3388832,6144]}],\n\"textures/machine/ttc_textures.02000.rgba16.png\": [32,32,2048,{\"jp\":[3460352,8192],\"us\":[3467104,8192],\"eu\":[3340704,8192],\"sh\":[3315072,8192],\"cn\":[3388832,8192]}],\n\"textures/machine/ttc_textures.02800.rgba16.png\": [32,32,2048,{\"jp\":[3460352,10240],\"us\":[3467104,10240],\"eu\":[3340704,10240],\"sh\":[3315072,10240],\"cn\":[3388832,10240]}],\n\"textures/machine/ttc_textures.03000.rgba16.png\": [32,32,2048,{\"jp\":[3460352,12288],\"us\":[3467104,12288],\"eu\":[3340704,12288],\"sh\":[3315072,12288],\"cn\":[3388832,12288]}],\n\"textures/machine/ttc_textures.03800.rgba16.png\": [32,32,2048,{\"jp\":[3460352,14336],\"us\":[3467104,14336],\"eu\":[3340704,14336],\"sh\":[3315072,14336],\"cn\":[3388832,14336]}],\n\"textures/machine/ttc_textures.04000.rgba16.png\": [32,64,4096,{\"jp\":[3460352,16384],\"us\":[3467104,16384],\"eu\":[3340704,16384],\"sh\":[3315072,16384],\"cn\":[3388832,16384]}],\n\"textures/machine/ttc_textures.05000.rgba16.png\": [32,32,2048,{\"jp\":[3460352,20480],\"us\":[3467104,20480],\"eu\":[3340704,20480],\"sh\":[3315072,20480],\"cn\":[3388832,20480]}],\n\"textures/machine/ttc_textures.05800.rgba16.png\": [32,32,2048,{\"jp\":[3460352,22528],\"us\":[3467104,22528],\"eu\":[3340704,22528],\"sh\":[3315072,22528],\"cn\":[3388832,22528]}],\n\"textures/machine/ttc_textures.06000.rgba16.png\": [32,32,2048,{\"jp\":[3460352,24576],\"us\":[3467104,24576],\"eu\":[3340704,24576],\"sh\":[3315072,24576],\"cn\":[3388832,24576]}],\n\"textures/machine/ttc_textures.06800.rgba16.png\": [32,32,2048,{\"jp\":[3460352,26624],\"us\":[3467104,26624],\"eu\":[3340704,26624],\"sh\":[3315072,26624],\"cn\":[3388832,26624]}],\n\"textures/machine/ttc_textures.07000.rgba16.png\": [32,32,2048,{\"jp\":[3460352,28672],\"us\":[3467104,28672],\"eu\":[3340704,28672],\"sh\":[3315072,28672],\"cn\":[3388832,28672]}],\n\"textures/machine/ttc_textures.07800.rgba16.png\": [16,64,2048,{\"jp\":[3460352,30720],\"us\":[3467104,30720],\"eu\":[3340704,30720],\"sh\":[3315072,30720],\"cn\":[3388832,30720]}],\n\"textures/machine/ttc_textures.08000.rgba16.png\": [64,8,1024,{\"jp\":[3460352,32768],\"us\":[3467104,32768],\"eu\":[3340704,32768],\"sh\":[3315072,32768],\"cn\":[3388832,32768]}],\n\"textures/machine/ttc_textures.08400.rgba16.png\": [32,32,2048,{\"jp\":[3460352,33792],\"us\":[3467104,33792],\"eu\":[3340704,33792],\"sh\":[3315072,33792],\"cn\":[3388832,33792]}],\n\"textures/mountain/ttm_textures.00000.rgba16.png\": [32,32,2048,{\"jp\":[3473152,0],\"us\":[3479904,0],\"eu\":[3353504,0],\"sh\":[3327872,0],\"cn\":[3401632,0]}],\n\"textures/mountain/ttm_textures.00800.rgba16.png\": [64,32,4096,{\"jp\":[3473152,2048],\"us\":[3479904,2048],\"eu\":[3353504,2048],\"sh\":[3327872,2048],\"cn\":[3401632,2048]}],\n\"textures/mountain/ttm_textures.01800.rgba16.png\": [32,64,4096,{\"jp\":[3473152,6144],\"us\":[3479904,6144],\"eu\":[3353504,6144],\"sh\":[3327872,6144],\"cn\":[3401632,6144]}],\n\"textures/mountain/ttm_textures.02800.rgba16.png\": [32,32,2048,{\"jp\":[3473152,10240],\"us\":[3479904,10240],\"eu\":[3353504,10240],\"sh\":[3327872,10240],\"cn\":[3401632,10240]}],\n\"textures/mountain/ttm_textures.03000.rgba16.png\": [32,32,2048,{\"jp\":[3473152,12288],\"us\":[3479904,12288],\"eu\":[3353504,12288],\"sh\":[3327872,12288],\"cn\":[3401632,12288]}],\n\"textures/mountain/ttm_textures.03800.rgba16.png\": [32,32,2048,{\"jp\":[3473152,14336],\"us\":[3479904,14336],\"eu\":[3353504,14336],\"sh\":[3327872,14336],\"cn\":[3401632,14336]}],\n\"textures/mountain/ttm_textures.04000.rgba16.png\": [32,32,2048,{\"jp\":[3473152,16384],\"us\":[3479904,16384],\"eu\":[3353504,16384],\"sh\":[3327872,16384],\"cn\":[3401632,16384]}],\n\"textures/mountain/ttm_textures.04800.rgba16.png\": [32,32,2048,{\"jp\":[3473152,18432],\"us\":[3479904,18432],\"eu\":[3353504,18432],\"sh\":[3327872,18432],\"cn\":[3401632,18432]}],\n\"textures/mountain/ttm_textures.05000.rgba16.png\": [32,32,2048,{\"jp\":[3473152,20480],\"us\":[3479904,20480],\"eu\":[3353504,20480],\"sh\":[3327872,20480],\"cn\":[3401632,20480]}],\n\"textures/mountain/ttm_textures.05800.rgba16.png\": [32,64,4096,{\"jp\":[3473152,22528],\"us\":[3479904,22528],\"eu\":[3353504,22528],\"sh\":[3327872,22528],\"cn\":[3401632,22528]}],\n\"textures/mountain/ttm_textures.06800.rgba16.png\": [32,32,2048,{\"jp\":[3473152,26624],\"us\":[3479904,26624],\"eu\":[3353504,26624],\"sh\":[3327872,26624],\"cn\":[3401632,26624]}],\n\"textures/mountain/ttm_textures.07000.rgba16.png\": [32,32,2048,{\"jp\":[3473152,28672],\"us\":[3479904,28672],\"eu\":[3353504,28672],\"sh\":[3327872,28672],\"cn\":[3401632,28672]}],\n\"textures/mountain/ttm_textures.07800.rgba16.png\": [32,32,2048,{\"jp\":[3473152,30720],\"us\":[3479904,30720],\"eu\":[3353504,30720],\"sh\":[3327872,30720],\"cn\":[3401632,30720]}],\n\"textures/mountain/ttm_textures.08000.rgba16.png\": [32,32,2048,{\"jp\":[3473152,32768],\"us\":[3479904,32768],\"eu\":[3353504,32768],\"sh\":[3327872,32768],\"cn\":[3401632,32768]}],\n\"textures/mountain/ttm_textures.08800.rgba16.png\": [64,32,4096,{\"jp\":[3473152,34816],\"us\":[3479904,34816],\"eu\":[3353504,34816],\"sh\":[3327872,34816],\"cn\":[3401632,34816]}],\n\"textures/mountain/ttm_textures.09800.rgba16.png\": [32,32,2048,{\"jp\":[3473152,38912],\"us\":[3479904,38912],\"eu\":[3353504,38912],\"sh\":[3327872,38912],\"cn\":[3401632,38912]}],\n\"textures/mountain/ttm_textures.0A000.rgba16.png\": [32,32,2048,{\"jp\":[3390640,24576],\"us\":[3397392,24576],\"eu\":[3270992,24576],\"sh\":[3245360,24576],\"cn\":[3319120,24576]}],\n\"textures/mountain/ttm_textures.0A800.rgba16.png\": [32,32,2048,{\"jp\":[3473152,43008],\"us\":[3479904,43008],\"eu\":[3353504,43008],\"sh\":[3327872,43008],\"cn\":[3401632,43008]}],\n\"textures/mountain/ttm_textures.0B000.rgba16.png\": [32,32,2048,{\"jp\":[3473152,45056],\"us\":[3479904,45056],\"eu\":[3353504,45056],\"sh\":[3327872,45056],\"cn\":[3401632,45056]}],\n\"textures/mountain/ttm_textures.0B800.rgba16.png\": [32,32,2048,{\"jp\":[3473152,47104],\"us\":[3479904,47104],\"eu\":[3353504,47104],\"sh\":[3327872,47104],\"cn\":[3401632,47104]}],\n\"textures/mountain/ttm_textures.0C000.rgba16.png\": [32,32,2048,{\"jp\":[3473152,49152],\"us\":[3479904,49152],\"eu\":[3353504,49152],\"sh\":[3327872,49152],\"cn\":[3401632,49152]}],\n\"textures/outside/castle_grounds_textures.00000.rgba16.png\": [32,32,2048,{\"jp\":[3527344,0],\"us\":[3534096,0],\"eu\":[3407696,0],\"sh\":[3382064,0],\"cn\":[3455824,0]}],\n\"textures/outside/castle_grounds_textures.00800.rgba16.png\": [32,32,2048,{\"jp\":[3527344,2048],\"us\":[3534096,2048],\"eu\":[3407696,2048],\"sh\":[3382064,2048],\"cn\":[3455824,2048]}],\n\"textures/outside/castle_grounds_textures.01000.rgba16.png\": [64,32,4096,{\"jp\":[3527344,4096],\"us\":[3534096,4096],\"eu\":[3407696,4096],\"sh\":[3382064,4096],\"cn\":[3455824,4096]}],\n\"textures/outside/castle_grounds_textures.02000.rgba16.png\": [32,64,4096,{\"jp\":[3527344,8192],\"us\":[3534096,8192],\"eu\":[3407696,8192],\"sh\":[3382064,8192],\"cn\":[3455824,8192]}],\n\"textures/outside/castle_grounds_textures.03000.rgba16.png\": [32,32,2048,{\"jp\":[3527344,12288],\"us\":[3534096,12288],\"eu\":[3407696,12288],\"sh\":[3382064,12288],\"cn\":[3455824,12288]}],\n\"textures/outside/castle_grounds_textures.03800.rgba16.png\": [32,32,2048,{\"jp\":[3527344,14336],\"us\":[3534096,14336],\"eu\":[3407696,14336],\"sh\":[3382064,14336],\"cn\":[3455824,14336]}],\n\"textures/outside/castle_grounds_textures.04000.rgba16.png\": [32,32,2048,{\"jp\":[3527344,16384],\"us\":[3534096,16384],\"eu\":[3407696,16384],\"sh\":[3382064,16384],\"cn\":[3455824,16384]}],\n\"textures/outside/castle_grounds_textures.04800.rgba16.png\": [32,64,4096,{\"jp\":[3527344,18432],\"us\":[3534096,18432],\"eu\":[3407696,18432],\"sh\":[3382064,18432],\"cn\":[3455824,18432]}],\n\"textures/outside/castle_grounds_textures.05800.rgba16.png\": [32,32,2048,{\"jp\":[3527344,22528],\"us\":[3534096,22528],\"eu\":[3407696,22528],\"sh\":[3382064,22528],\"cn\":[3455824,22528]}],\n\"textures/outside/castle_grounds_textures.06000.rgba16.png\": [32,32,2048,{\"jp\":[3527344,24576],\"us\":[3534096,24576],\"eu\":[3407696,24576],\"sh\":[3382064,24576],\"cn\":[3455824,24576]}],\n\"textures/outside/castle_grounds_textures.06800.rgba16.png\": [64,32,4096,{\"jp\":[3527344,26624],\"us\":[3534096,26624],\"eu\":[3407696,26624],\"sh\":[3382064,26624],\"cn\":[3455824,26624]}],\n\"textures/outside/castle_grounds_textures.07800.rgba16.png\": [32,32,2048,{\"jp\":[3527344,30720],\"us\":[3534096,30720],\"eu\":[3407696,30720],\"sh\":[3382064,30720],\"cn\":[3455824,30720]}],\n\"textures/outside/castle_grounds_textures.08000.rgba16.png\": [32,32,2048,{\"jp\":[3527344,32768],\"us\":[3534096,32768],\"eu\":[3407696,32768],\"sh\":[3382064,32768],\"cn\":[3455824,32768]}],\n\"textures/outside/castle_grounds_textures.08800.rgba16.png\": [32,32,2048,{\"jp\":[3527344,34816],\"us\":[3534096,34816],\"eu\":[3407696,34816],\"sh\":[3382064,34816],\"cn\":[3455824,34816]}],\n\"textures/outside/castle_grounds_textures.09000.rgba16.png\": [32,32,2048,{\"jp\":[3527344,36864],\"us\":[3534096,36864],\"eu\":[3407696,36864],\"sh\":[3382064,36864],\"cn\":[3455824,36864]}],\n\"textures/outside/castle_grounds_textures.09800.rgba16.png\": [32,32,2048,{\"jp\":[3527344,38912],\"us\":[3534096,38912],\"eu\":[3407696,38912],\"sh\":[3382064,38912],\"cn\":[3455824,38912]}],\n\"textures/outside/castle_grounds_textures.0A000.rgba16.png\": [32,32,2048,{\"jp\":[3527344,40960],\"us\":[3534096,40960],\"eu\":[3407696,40960],\"sh\":[3382064,40960],\"cn\":[3455824,40960]}],\n\"textures/outside/castle_grounds_textures.0A800.rgba16.png\": [32,32,2048,{\"jp\":[3527344,43008],\"us\":[3534096,43008],\"eu\":[3407696,43008],\"sh\":[3382064,43008],\"cn\":[3455824,43008]}],\n\"textures/outside/castle_grounds_textures.0B000.rgba16.png\": [16,32,1024,{\"jp\":[3527344,45056],\"us\":[3534096,45056],\"eu\":[3407696,45056],\"sh\":[3382064,45056],\"cn\":[3455824,45056]}],\n\"textures/outside/castle_grounds_textures.0B400.rgba16.png\": [32,32,2048,{\"jp\":[3527344,46080],\"us\":[3534096,46080],\"eu\":[3407696,46080],\"sh\":[3382064,46080],\"cn\":[3455824,46080]}],\n\"textures/outside/castle_grounds_textures.0BC00.ia16.png\": [32,32,2048,{\"jp\":[3323408,45056],\"us\":[3330160,45056],\"eu\":[3203760,45056],\"sh\":[3178128,45056],\"cn\":[3251888,45056]}],\n\"textures/segment2/font_graphics.05900.ia4.png\": [16,8,64,{\"us\":[1083968,22784],\"cn\":[947456,86272]}],\n\"textures/segment2/font_graphics.05940.ia4.png\": [16,8,64,{\"us\":[1083968,22848],\"cn\":[947456,86336]}],\n\"textures/segment2/font_graphics.05980.ia4.png\": [16,8,64,{\"us\":[1083968,22912],\"cn\":[947456,86400]}],\n\"textures/segment2/font_graphics.059C0.ia4.png\": [16,8,64,{\"us\":[1083968,22976],\"cn\":[947456,86464]}],\n\"textures/segment2/font_graphics.05A00.ia4.png\": [16,8,64,{\"us\":[1083968,23040],\"cn\":[947456,86528]}],\n\"textures/segment2/font_graphics.05A40.ia4.png\": [16,8,64,{\"us\":[1083968,23104],\"cn\":[947456,86592]}],\n\"textures/segment2/font_graphics.05A80.ia4.png\": [16,8,64,{\"us\":[1083968,23168],\"cn\":[947456,86656]}],\n\"textures/segment2/font_graphics.05AC0.ia4.png\": [16,8,64,{\"us\":[1083968,23232],\"cn\":[947456,86720]}],\n\"textures/segment2/font_graphics.05B00.ia4.png\": [16,8,64,{\"us\":[1083968,23296],\"cn\":[947456,86784]}],\n\"textures/segment2/font_graphics.05B40.ia4.png\": [16,8,64,{\"us\":[1083968,23360],\"cn\":[947456,86848]}],\n\"textures/segment2/font_graphics.05B80.ia4.png\": [16,8,64,{\"us\":[1083968,23424],\"cn\":[947456,86912]}],\n\"textures/segment2/font_graphics.05BC0.ia4.png\": [16,8,64,{\"us\":[1083968,23488],\"cn\":[947456,86976]}],\n\"textures/segment2/font_graphics.05C00.ia4.png\": [16,8,64,{\"us\":[1083968,23552],\"cn\":[947456,87040]}],\n\"textures/segment2/font_graphics.05C40.ia4.png\": [16,8,64,{\"us\":[1083968,23616],\"cn\":[947456,87104]}],\n\"textures/segment2/font_graphics.05C80.ia4.png\": [16,8,64,{\"us\":[1083968,23680],\"cn\":[947456,87168]}],\n\"textures/segment2/font_graphics.05CC0.ia4.png\": [16,8,64,{\"us\":[1083968,23744],\"cn\":[947456,87232]}],\n\"textures/segment2/font_graphics.05D00.ia4.png\": [16,8,64,{\"us\":[1083968,23808],\"cn\":[947456,87296]}],\n\"textures/segment2/font_graphics.05D40.ia4.png\": [16,8,64,{\"us\":[1083968,23872],\"cn\":[947456,87360]}],\n\"textures/segment2/font_graphics.05D80.ia4.png\": [16,8,64,{\"us\":[1083968,23936],\"cn\":[947456,87424]}],\n\"textures/segment2/font_graphics.05DC0.ia4.png\": [16,8,64,{\"us\":[1083968,24000],\"cn\":[947456,87488]}],\n\"textures/segment2/font_graphics.05E00.ia4.png\": [16,8,64,{\"us\":[1083968,24064],\"cn\":[947456,87552]}],\n\"textures/segment2/font_graphics.05E40.ia4.png\": [16,8,64,{\"us\":[1083968,24128],\"cn\":[947456,87616]}],\n\"textures/segment2/font_graphics.05E80.ia4.png\": [16,8,64,{\"us\":[1083968,24192],\"cn\":[947456,87680]}],\n\"textures/segment2/font_graphics.05EC0.ia4.png\": [16,8,64,{\"us\":[1083968,24256],\"cn\":[947456,87744]}],\n\"textures/segment2/font_graphics.05F00.ia1.png\": [16,8,16,{\"eu\":[909712,24320]}],\n\"textures/segment2/font_graphics.05F00.ia4.png\": [16,8,64,{\"us\":[1083968,24320],\"cn\":[947456,87808]}],\n\"textures/segment2/font_graphics.05F10.ia1.png\": [16,8,16,{\"eu\":[909712,24336]}],\n\"textures/segment2/font_graphics.05F20.ia1.png\": [16,8,16,{\"eu\":[909712,24352]}],\n\"textures/segment2/font_graphics.05F30.ia1.png\": [16,8,16,{\"eu\":[909712,24368]}],\n\"textures/segment2/font_graphics.05F40.ia1.png\": [16,8,16,{\"eu\":[909712,24384]}],\n\"textures/segment2/font_graphics.05F40.ia4.png\": [16,8,64,{\"us\":[1083968,24384],\"cn\":[947456,87872]}],\n\"textures/segment2/font_graphics.05F50.ia1.png\": [16,8,16,{\"eu\":[909712,24400]}],\n\"textures/segment2/font_graphics.05F60.ia1.png\": [16,8,16,{\"eu\":[909712,24416]}],\n\"textures/segment2/font_graphics.05F70.ia1.png\": [16,8,16,{\"eu\":[909712,24432]}],\n\"textures/segment2/font_graphics.05F80.ia1.png\": [16,8,16,{\"eu\":[909712,24448]}],\n\"textures/segment2/font_graphics.05F80.ia4.png\": [16,8,64,{\"us\":[1083968,24448],\"cn\":[947456,87936]}],\n\"textures/segment2/font_graphics.05F90.ia1.png\": [16,8,16,{\"eu\":[909712,24464]}],\n\"textures/segment2/font_graphics.05FA0.ia1.png\": [16,8,16,{\"eu\":[909712,24480]}],\n\"textures/segment2/font_graphics.05FB0.ia1.png\": [16,8,16,{\"eu\":[909712,24496]}],\n\"textures/segment2/font_graphics.05FC0.ia1.png\": [16,8,16,{\"eu\":[909712,24512]}],\n\"textures/segment2/font_graphics.05FC0.ia4.png\": [16,8,64,{\"us\":[1083968,24512],\"cn\":[947456,88000]}],\n\"textures/segment2/font_graphics.05FD0.ia1.png\": [16,8,16,{\"eu\":[909712,24528]}],\n\"textures/segment2/font_graphics.05FE0.ia1.png\": [16,8,16,{\"eu\":[909712,24544]}],\n\"textures/segment2/font_graphics.05FF0.ia1.png\": [16,8,16,{\"eu\":[909712,24560]}],\n\"textures/segment2/font_graphics.06000.ia1.png\": [16,8,16,{\"eu\":[909712,24576]}],\n\"textures/segment2/font_graphics.06000.ia4.png\": [16,8,64,{\"us\":[1083968,24576],\"cn\":[947456,88064]}],\n\"textures/segment2/font_graphics.06010.ia1.png\": [16,8,16,{\"eu\":[909712,24592]}],\n\"textures/segment2/font_graphics.06020.ia1.png\": [16,8,16,{\"eu\":[909712,24608]}],\n\"textures/segment2/font_graphics.06030.ia1.png\": [16,8,16,{\"eu\":[909712,24624]}],\n\"textures/segment2/font_graphics.06040.ia1.png\": [16,8,16,{\"eu\":[909712,24640]}],\n\"textures/segment2/font_graphics.06040.ia4.png\": [16,8,64,{\"us\":[1083968,24640],\"cn\":[947456,88128]}],\n\"textures/segment2/font_graphics.06050.ia1.png\": [16,8,16,{\"eu\":[909712,24656]}],\n\"textures/segment2/font_graphics.06060.ia1.png\": [16,8,16,{\"eu\":[909712,24672]}],\n\"textures/segment2/font_graphics.06070.ia1.png\": [16,8,16,{\"eu\":[909712,24688]}],\n\"textures/segment2/font_graphics.06080.ia1.png\": [16,8,16,{\"eu\":[909712,24704]}],\n\"textures/segment2/font_graphics.06080.ia4.png\": [16,8,64,{\"us\":[1083968,24704],\"cn\":[947456,88192]}],\n\"textures/segment2/font_graphics.06090.ia1.png\": [16,8,16,{\"eu\":[909712,24720]}],\n\"textures/segment2/font_graphics.060A0.ia1.png\": [16,8,16,{\"eu\":[909712,24736]}],\n\"textures/segment2/font_graphics.060B0.ia1.png\": [16,8,16,{\"eu\":[909712,24752]}],\n\"textures/segment2/font_graphics.060C0.ia1.png\": [16,8,16,{\"eu\":[909712,24768]}],\n\"textures/segment2/font_graphics.060C0.ia4.png\": [16,8,64,{\"us\":[1083968,24768],\"cn\":[947456,88256]}],\n\"textures/segment2/font_graphics.060D0.ia1.png\": [16,8,16,{\"eu\":[909712,24784]}],\n\"textures/segment2/font_graphics.060E0.ia1.png\": [16,8,16,{\"eu\":[909712,24800]}],\n\"textures/segment2/font_graphics.060F0.ia1.png\": [16,8,16,{\"eu\":[909712,24816]}],\n\"textures/segment2/font_graphics.06100.ia1.png\": [16,8,16,{\"eu\":[909712,24832]}],\n\"textures/segment2/font_graphics.06100.ia4.png\": [16,8,64,{\"us\":[1083968,24832],\"cn\":[947456,88320]}],\n\"textures/segment2/font_graphics.06110.ia1.png\": [16,8,16,{\"eu\":[909712,24848]}],\n\"textures/segment2/font_graphics.06120.ia1.png\": [16,8,16,{\"eu\":[909712,24864]}],\n\"textures/segment2/font_graphics.06130.ia1.png\": [16,8,16,{\"eu\":[909712,24880]}],\n\"textures/segment2/font_graphics.06140.ia1.png\": [16,8,16,{\"eu\":[909712,24896]}],\n\"textures/segment2/font_graphics.06140.ia4.png\": [16,8,64,{\"us\":[1083968,24896],\"cn\":[947456,88384]}],\n\"textures/segment2/font_graphics.06150.ia1.png\": [16,8,16,{\"eu\":[909712,24912]}],\n\"textures/segment2/font_graphics.06160.ia1.png\": [16,8,16,{\"eu\":[909712,24928]}],\n\"textures/segment2/font_graphics.06170.ia1.png\": [16,8,16,{\"eu\":[909712,24944]}],\n\"textures/segment2/font_graphics.06180.ia1.png\": [16,8,16,{\"eu\":[909712,24960]}],\n\"textures/segment2/font_graphics.06180.ia4.png\": [16,8,64,{\"us\":[1083968,24960],\"cn\":[947456,88448]}],\n\"textures/segment2/font_graphics.06190.ia1.png\": [16,8,16,{\"eu\":[909712,24976]}],\n\"textures/segment2/font_graphics.061A0.ia1.png\": [16,8,16,{\"eu\":[909712,24992]}],\n\"textures/segment2/font_graphics.061B0.ia1.png\": [16,8,16,{\"eu\":[909712,25008]}],\n\"textures/segment2/font_graphics.061C0.ia1.png\": [16,8,16,{\"eu\":[909712,25024]}],\n\"textures/segment2/font_graphics.061C0.ia4.png\": [16,8,64,{\"us\":[1083968,25024],\"cn\":[947456,88512]}],\n\"textures/segment2/font_graphics.061D0.ia1.png\": [16,8,16,{\"eu\":[909712,25040]}],\n\"textures/segment2/font_graphics.061E0.ia1.png\": [16,8,16,{\"eu\":[909712,25056]}],\n\"textures/segment2/font_graphics.061F0.ia1.png\": [16,8,16,{\"eu\":[909712,25072]}],\n\"textures/segment2/font_graphics.06200.ia1.png\": [16,8,16,{\"eu\":[909712,25088]}],\n\"textures/segment2/font_graphics.06200.ia4.png\": [16,8,64,{\"us\":[1083968,25088],\"cn\":[947456,88576]}],\n\"textures/segment2/font_graphics.06210.ia1.png\": [16,8,16,{\"eu\":[909712,25104]}],\n\"textures/segment2/font_graphics.06220.ia1.png\": [16,8,16,{\"eu\":[909712,25120]}],\n\"textures/segment2/font_graphics.06230.ia1.png\": [16,8,16,{\"eu\":[909712,25136]}],\n\"textures/segment2/font_graphics.06240.ia1.png\": [16,8,16,{\"eu\":[909712,25152]}],\n\"textures/segment2/font_graphics.06240.ia4.png\": [16,8,64,{\"us\":[1083968,25152],\"cn\":[947456,88640]}],\n\"textures/segment2/font_graphics.06250.ia1.png\": [16,8,16,{\"eu\":[909712,25168]}],\n\"textures/segment2/font_graphics.06260.ia1.png\": [16,8,16,{\"eu\":[909712,25184]}],\n\"textures/segment2/font_graphics.06270.ia1.png\": [16,8,16,{\"eu\":[909712,25200]}],\n\"textures/segment2/font_graphics.06280.ia1.png\": [16,8,16,{\"eu\":[909712,25216]}],\n\"textures/segment2/font_graphics.06280.ia4.png\": [16,8,64,{\"us\":[1083968,25216],\"cn\":[947456,88704]}],\n\"textures/segment2/font_graphics.06290.ia1.png\": [16,8,16,{\"eu\":[909712,25232]}],\n\"textures/segment2/font_graphics.062A0.ia1.png\": [16,8,16,{\"eu\":[909712,25248]}],\n\"textures/segment2/font_graphics.062B0.ia1.png\": [16,8,16,{\"eu\":[909712,25264]}],\n\"textures/segment2/font_graphics.062C0.ia1.png\": [16,8,16,{\"eu\":[909712,25280]}],\n\"textures/segment2/font_graphics.062C0.ia4.png\": [16,8,64,{\"us\":[1083968,25280],\"cn\":[947456,88768]}],\n\"textures/segment2/font_graphics.062D0.ia1.png\": [16,8,16,{\"eu\":[909712,25296]}],\n\"textures/segment2/font_graphics.062E0.ia1.png\": [16,8,16,{\"eu\":[909712,25312]}],\n\"textures/segment2/font_graphics.062F0.ia1.png\": [16,8,16,{\"eu\":[909712,25328]}],\n\"textures/segment2/font_graphics.06300.ia1.png\": [16,8,16,{\"eu\":[909712,25344]}],\n\"textures/segment2/font_graphics.06300.ia4.png\": [16,8,64,{\"us\":[1083968,25344],\"cn\":[947456,88832]}],\n\"textures/segment2/font_graphics.06310.ia1.png\": [16,8,16,{\"eu\":[909712,25360]}],\n\"textures/segment2/font_graphics.06320.ia1.png\": [16,8,16,{\"eu\":[909712,25376]}],\n\"textures/segment2/font_graphics.06330.ia1.png\": [16,8,16,{\"eu\":[909712,25392]}],\n\"textures/segment2/font_graphics.06340.ia1.png\": [16,8,16,{\"eu\":[909712,25408]}],\n\"textures/segment2/font_graphics.06340.ia4.png\": [16,8,64,{\"us\":[1083968,25408],\"cn\":[947456,88896]}],\n\"textures/segment2/font_graphics.06350.ia1.png\": [16,8,16,{\"eu\":[909712,25424]}],\n\"textures/segment2/font_graphics.06360.ia1.png\": [16,8,16,{\"eu\":[909712,25440]}],\n\"textures/segment2/font_graphics.06370.ia1.png\": [16,8,16,{\"eu\":[909712,25456]}],\n\"textures/segment2/font_graphics.06380.ia1.png\": [16,8,16,{\"eu\":[909712,25472]}],\n\"textures/segment2/font_graphics.06380.ia4.png\": [16,8,64,{\"us\":[1083968,25472],\"cn\":[947456,88960]}],\n\"textures/segment2/font_graphics.06390.ia1.png\": [16,8,16,{\"eu\":[909712,25488]}],\n\"textures/segment2/font_graphics.063A0.ia1.png\": [16,8,16,{\"eu\":[909712,25504]}],\n\"textures/segment2/font_graphics.063B0.ia1.png\": [16,8,16,{\"eu\":[909712,25520]}],\n\"textures/segment2/font_graphics.063C0.ia1.png\": [16,8,16,{\"eu\":[909712,25536]}],\n\"textures/segment2/font_graphics.063C0.ia4.png\": [16,8,64,{\"us\":[1083968,25536],\"cn\":[947456,89024]}],\n\"textures/segment2/font_graphics.063D0.ia1.png\": [16,8,16,{\"eu\":[909712,25552]}],\n\"textures/segment2/font_graphics.063E0.ia1.png\": [16,8,16,{\"eu\":[909712,25568]}],\n\"textures/segment2/font_graphics.063F0.ia1.png\": [16,8,16,{\"eu\":[909712,25584]}],\n\"textures/segment2/font_graphics.06400.ia1.png\": [16,8,16,{\"eu\":[909712,25600]}],\n\"textures/segment2/font_graphics.06400.ia4.png\": [16,8,64,{\"us\":[1083968,25600],\"cn\":[947456,89088]}],\n\"textures/segment2/font_graphics.06410.ia1.png\": [16,8,16,{\"jp\":[1599504,83574],\"us\":[1606720,83574],\"eu\":[909712,25616],\"sh\":[1455200,83574],\"cn\":[1522032,83574]}],\n\"textures/segment2/font_graphics.06420.ia1.png\": [16,8,16,{\"jp\":[1844608,133979],\"us\":[1851952,133979],\"eu\":[909712,25632],\"sh\":[1700432,133979],\"cn\":[1767264,133979]}],\n\"textures/segment2/font_graphics.06430.ia1.png\": [16,8,16,{\"eu\":[909712,25648]}],\n\"textures/segment2/font_graphics.06440.ia1.png\": [16,8,16,{\"eu\":[909712,25664]}],\n\"textures/segment2/font_graphics.06440.ia4.png\": [16,8,64,{\"us\":[1083968,25664],\"cn\":[947456,89152]}],\n\"textures/segment2/font_graphics.06450.ia1.png\": [16,8,16,{\"eu\":[909712,25680]}],\n\"textures/segment2/font_graphics.06460.ia1.png\": [16,8,16,{\"eu\":[909712,25696]}],\n\"textures/segment2/font_graphics.06470.ia1.png\": [16,8,16,{\"eu\":[909712,25712]}],\n\"textures/segment2/font_graphics.06480.ia1.png\": [16,8,16,{\"eu\":[909712,25728]}],\n\"textures/segment2/font_graphics.06480.ia4.png\": [16,8,64,{\"us\":[1083968,25728],\"cn\":[947456,89216]}],\n\"textures/segment2/font_graphics.06490.ia1.png\": [16,8,16,{\"eu\":[909712,25744]}],\n\"textures/segment2/font_graphics.064A0.ia1.png\": [16,8,16,{\"eu\":[909712,25760]}],\n\"textures/segment2/font_graphics.064B0.ia1.png\": [16,8,16,{\"eu\":[909712,25776]}],\n\"textures/segment2/font_graphics.064C0.ia1.png\": [16,8,16,{\"eu\":[909712,25792]}],\n\"textures/segment2/font_graphics.064C0.ia4.png\": [16,8,64,{\"us\":[1083968,25792],\"cn\":[947456,89280]}],\n\"textures/segment2/font_graphics.064D0.ia1.png\": [16,8,16,{\"eu\":[909712,25808]}],\n\"textures/segment2/font_graphics.064E0.ia1.png\": [16,8,16,{\"eu\":[909712,25824]}],\n\"textures/segment2/font_graphics.064F0.ia1.png\": [16,8,16,{\"eu\":[909712,25840]}],\n\"textures/segment2/font_graphics.06500.ia1.png\": [16,8,16,{\"eu\":[909712,25856]}],\n\"textures/segment2/font_graphics.06500.ia4.png\": [16,8,64,{\"us\":[1083968,25856],\"cn\":[947456,89344]}],\n\"textures/segment2/font_graphics.06510.ia1.png\": [16,8,16,{\"eu\":[909712,25872]}],\n\"textures/segment2/font_graphics.06520.ia1.png\": [16,8,16,{\"eu\":[909712,25888]}],\n\"textures/segment2/font_graphics.06530.ia1.png\": [16,8,16,{\"eu\":[909712,25904]}],\n\"textures/segment2/font_graphics.06540.ia4.png\": [16,8,64,{\"us\":[1083968,25920],\"cn\":[947456,89408]}],\n\"textures/segment2/font_graphics.06580.ia4.png\": [16,8,64,{\"us\":[1083968,25984],\"cn\":[947456,89472]}],\n\"textures/segment2/font_graphics.065C0.ia4.png\": [16,8,64,{\"us\":[1083968,26048],\"cn\":[947456,89536]}],\n\"textures/segment2/font_graphics.06600.ia4.png\": [16,8,64,{\"us\":[1083968,26112],\"cn\":[947456,89600]}],\n\"textures/segment2/font_graphics.06640.ia4.png\": [16,8,64,{\"us\":[1083968,26176],\"cn\":[947456,89664]}],\n\"textures/segment2/font_graphics.06680.ia4.png\": [16,8,64,{\"us\":[1083968,26240],\"cn\":[947456,89728]}],\n\"textures/segment2/font_graphics.066C0.ia4.png\": [16,8,64,{\"us\":[1083968,26304],\"cn\":[947456,89792]}],\n\"textures/segment2/font_graphics.06700.ia4.png\": [16,8,64,{\"us\":[1083968,26368],\"cn\":[947456,89856]}],\n\"textures/segment2/font_graphics.06740.ia4.png\": [16,8,64,{\"us\":[1083968,26432],\"cn\":[947456,89920]}],\n\"textures/segment2/font_graphics.06780.ia4.png\": [16,8,64,{\"us\":[1083968,26496],\"cn\":[947456,89984]}],\n\"textures/segment2/font_graphics.067C0.ia4.png\": [16,8,64,{\"us\":[1083968,26560],\"cn\":[947456,90048]}],\n\"textures/segment2/font_graphics.06800.ia4.png\": [16,8,64,{\"us\":[1083968,26624],\"cn\":[947456,90112]}],\n\"textures/segment2/font_graphics.06840.ia4.png\": [16,8,64,{\"us\":[1083968,26688],\"cn\":[947456,90176]}],\n\"textures/segment2/font_graphics.06880.ia4.png\": [16,8,64,{\"us\":[1083968,26752],\"cn\":[947456,90240]}],\n\"textures/segment2/font_graphics.068C0.ia4.png\": [16,8,64,{\"us\":[1083968,26816],\"cn\":[947456,90304]}],\n\"textures/segment2/font_graphics.06900.ia4.png\": [16,8,64,{\"us\":[1083968,26880],\"cn\":[947456,90368]}],\n\"textures/segment2/font_graphics.06940.ia4.png\": [16,8,64,{\"us\":[1083968,26944],\"cn\":[947456,90432]}],\n\"textures/segment2/font_graphics.06980.ia4.png\": [16,8,64,{\"us\":[1083968,27008],\"cn\":[947456,90496]}],\n\"textures/segment2/font_graphics.069C0.ia4.png\": [16,8,64,{\"us\":[1083968,27072],\"cn\":[947456,90560]}],\n\"textures/segment2/font_graphics.06A00.ia4.png\": [16,8,64,{\"us\":[1083968,27136],\"cn\":[947456,90624]}],\n\"textures/segment2/font_graphics.06A40.ia4.png\": [16,8,64,{\"us\":[1083968,27200],\"cn\":[947456,90688]}],\n\"textures/segment2/font_graphics.06A80.ia4.png\": [16,8,64,{\"us\":[1083968,27264],\"cn\":[947456,90752]}],\n\"textures/segment2/font_graphics.06AC0.ia4.png\": [16,8,64,{\"us\":[1083968,27328],\"cn\":[947456,90816]}],\n\"textures/segment2/font_graphics.06B00.ia4.png\": [16,8,64,{\"us\":[1083968,27392],\"cn\":[947456,90880]}],\n\"textures/segment2/font_graphics.06B40.ia4.png\": [16,8,64,{\"us\":[1083968,27456],\"cn\":[947456,90944]}],\n\"textures/segment2/font_graphics.06B80.ia4.png\": [16,8,64,{\"us\":[1083968,27520],\"cn\":[947456,91008]}],\n\"textures/segment2/font_graphics.06BC0.ia4.png\": [16,8,64,{\"us\":[1083968,27584],\"cn\":[947456,91072]}],\n\"textures/segment2/font_graphics.06C00.ia4.png\": [16,8,64,{\"us\":[1083968,27648],\"cn\":[947456,91136]}],\n\"textures/segment2/font_graphics.06C40.ia4.png\": [16,8,64,{\"us\":[1083968,27712],\"cn\":[947456,91200]}],\n\"textures/segment2/font_graphics.06C80.ia4.png\": [16,8,64,{\"us\":[1083968,27776],\"cn\":[947456,91264]}],\n\"textures/segment2/font_graphics.06CC0.ia4.png\": [16,8,64,{\"us\":[1083968,27840],\"cn\":[947456,91328]}],\n\"textures/segment2/font_graphics.06D00.ia4.png\": [16,8,64,{\"us\":[1083968,27904],\"cn\":[947456,91392]}],\n\"textures/segment2/font_graphics.06D40.ia4.png\": [16,8,64,{\"us\":[1083968,27968],\"cn\":[947456,91456]}],\n\"textures/segment2/font_graphics.06D80.ia4.png\": [16,8,64,{\"us\":[1083968,28032],\"cn\":[947456,91520]}],\n\"textures/segment2/font_graphics.06DC0.ia4.png\": [16,8,64,{\"us\":[1083968,28096],\"cn\":[947456,91584]}],\n\"textures/segment2/font_graphics.06E00.ia4.png\": [16,8,64,{\"us\":[1083968,28160],\"cn\":[947456,91648]}],\n\"textures/segment2/font_graphics.06E40.ia4.png\": [16,8,64,{\"us\":[1083968,28224],\"cn\":[947456,91712]}],\n\"textures/segment2/font_graphics.06E80.ia4.png\": [16,8,64,{\"us\":[1083968,28288],\"cn\":[947456,91776]}],\n\"textures/segment2/font_graphics.06EC0.ia4.png\": [16,8,64,{\"us\":[1083968,28352],\"cn\":[947456,91840]}],\n\"textures/segment2/font_graphics.06F00.ia4.png\": [16,8,64,{\"us\":[1083968,28416],\"cn\":[947456,91904]}],\n\"textures/segment2/font_graphics.06F40.ia4.png\": [16,8,64,{\"us\":[1083968,28480],\"cn\":[947456,91968]}],\n\"textures/segment2/font_graphics.06F80.ia4.png\": [16,8,64,{\"us\":[1083968,28544],\"cn\":[947456,92032]}],\n\"textures/segment2/font_graphics.06FC0.ia4.png\": [16,8,64,{\"us\":[1083968,28608],\"cn\":[947456,92096]}],\n\"textures/segment2/segment2.00000.rgba16.png\": [16,16,512,{\"jp\":[1078992,0],\"us\":[1083968,0],\"eu\":[909712,0],\"sh\":[934640,0],\"cn\":[947456,0]}],\n\"textures/segment2/segment2.00200.rgba16.png\": [16,16,512,{\"jp\":[1078992,512],\"us\":[1083968,512],\"eu\":[909712,512],\"sh\":[934640,512],\"cn\":[947456,512]}],\n\"textures/segment2/segment2.00400.rgba16.png\": [16,16,512,{\"jp\":[1078992,1024],\"us\":[1083968,1024],\"eu\":[909712,1024],\"sh\":[934640,1024],\"cn\":[947456,1024]}],\n\"textures/segment2/segment2.00600.rgba16.png\": [16,16,512,{\"jp\":[1078992,1536],\"us\":[1083968,1536],\"eu\":[909712,1536],\"sh\":[934640,1536],\"cn\":[947456,1536]}],\n\"textures/segment2/segment2.00800.rgba16.png\": [16,16,512,{\"jp\":[1078992,2048],\"us\":[1083968,2048],\"eu\":[909712,2048],\"sh\":[934640,2048],\"cn\":[947456,2048]}],\n\"textures/segment2/segment2.00A00.rgba16.png\": [16,16,512,{\"jp\":[1078992,2560],\"us\":[1083968,2560],\"eu\":[909712,2560],\"sh\":[934640,2560],\"cn\":[947456,2560]}],\n\"textures/segment2/segment2.00C00.rgba16.png\": [16,16,512,{\"jp\":[1078992,3072],\"us\":[1083968,3072],\"eu\":[909712,3072],\"sh\":[934640,3072],\"cn\":[947456,3072]}],\n\"textures/segment2/segment2.00E00.rgba16.png\": [16,16,512,{\"jp\":[1078992,3584],\"us\":[1083968,3584],\"eu\":[909712,3584],\"sh\":[934640,3584],\"cn\":[947456,3584]}],\n\"textures/segment2/segment2.01000.rgba16.png\": [16,16,512,{\"jp\":[1078992,4096],\"us\":[1083968,4096],\"eu\":[909712,4096],\"sh\":[934640,4096],\"cn\":[947456,4096]}],\n\"textures/segment2/segment2.01200.rgba16.png\": [16,16,512,{\"jp\":[1078992,4608],\"us\":[1083968,4608],\"eu\":[909712,4608],\"sh\":[934640,4608],\"cn\":[947456,4608]}],\n\"textures/segment2/segment2.01400.rgba16.png\": [16,16,512,{\"jp\":[1078992,5120],\"us\":[1083968,5120],\"eu\":[909712,5120],\"sh\":[934640,5120],\"cn\":[947456,5120]}],\n\"textures/segment2/segment2.01600.rgba16.png\": [16,16,512,{\"jp\":[1078992,5632],\"us\":[1083968,5632],\"eu\":[909712,5632],\"sh\":[934640,5632],\"cn\":[947456,5632]}],\n\"textures/segment2/segment2.01800.rgba16.png\": [16,16,512,{\"jp\":[1078992,6144],\"us\":[1083968,6144],\"eu\":[909712,6144],\"sh\":[934640,6144],\"cn\":[947456,6144]}],\n\"textures/segment2/segment2.01A00.rgba16.png\": [16,16,512,{\"jp\":[1078992,6656],\"us\":[1083968,6656],\"eu\":[909712,6656],\"sh\":[934640,6656],\"cn\":[947456,6656]}],\n\"textures/segment2/segment2.01C00.rgba16.png\": [16,16,512,{\"jp\":[1078992,7168],\"us\":[1083968,7168],\"eu\":[909712,7168],\"sh\":[934640,7168],\"cn\":[947456,7168]}],\n\"textures/segment2/segment2.01E00.rgba16.png\": [16,16,512,{\"jp\":[1078992,7680],\"us\":[1083968,7680],\"eu\":[909712,7680],\"sh\":[934640,7680],\"cn\":[947456,7680]}],\n\"textures/segment2/segment2.02000.rgba16.png\": [16,16,512,{\"jp\":[1078992,8192],\"us\":[1083968,8192],\"eu\":[909712,8192],\"sh\":[934640,8192],\"cn\":[947456,8192]}],\n\"textures/segment2/segment2.02200.rgba16.png\": [16,16,512,{\"jp\":[1078992,8704],\"us\":[1083968,8704],\"eu\":[909712,8704],\"sh\":[934640,8704],\"cn\":[947456,8704]}],\n\"textures/segment2/segment2.02400.rgba16.png\": [16,16,512,{\"jp\":[1078992,9216],\"us\":[1083968,9216],\"eu\":[909712,9216],\"sh\":[934640,9216],\"cn\":[947456,9216]}],\n\"textures/segment2/segment2.02600.rgba16.png\": [16,16,512,{\"jp\":[1078992,9728],\"sh\":[934640,9728]}],\n\"textures/segment2/segment2.02800.rgba16.png\": [16,16,512,{\"jp\":[1078992,10240],\"us\":[1083968,9728],\"eu\":[909712,9728],\"sh\":[934640,10240],\"cn\":[947456,9728]}],\n\"textures/segment2/segment2.02A00.rgba16.png\": [16,16,512,{\"jp\":[1078992,10752],\"us\":[1083968,10240],\"eu\":[909712,10240],\"sh\":[934640,10752],\"cn\":[947456,10240]}],\n\"textures/segment2/segment2.02C00.rgba16.png\": [16,16,512,{\"jp\":[1078992,11264],\"us\":[1083968,10752],\"eu\":[909712,10752],\"sh\":[934640,11264],\"cn\":[947456,10752]}],\n\"textures/segment2/segment2.02E00.rgba16.png\": [16,16,512,{\"jp\":[1078992,11776],\"us\":[1083968,11264],\"eu\":[909712,11264],\"sh\":[934640,11776],\"cn\":[947456,11264]}],\n\"textures/segment2/segment2.03000.rgba16.png\": [16,16,512,{\"jp\":[1078992,12288],\"us\":[1083968,11776],\"eu\":[909712,11776],\"sh\":[934640,12288],\"cn\":[947456,11776]}],\n\"textures/segment2/segment2.03200.rgba16.png\": [16,16,512,{\"jp\":[1078992,12800],\"us\":[1083968,12288],\"eu\":[909712,12288],\"sh\":[934640,12800],\"cn\":[947456,12288]}],\n\"textures/segment2/segment2.03400.rgba16.png\": [16,16,512,{\"jp\":[1078992,13312],\"sh\":[934640,13312]}],\n\"textures/segment2/segment2.03600.rgba16.png\": [16,16,512,{\"jp\":[1078992,13824],\"us\":[1083968,12800],\"eu\":[909712,12800],\"sh\":[934640,13824],\"cn\":[947456,12800]}],\n\"textures/segment2/segment2.03800.rgba16.png\": [16,16,512,{\"jp\":[1078992,14336],\"us\":[1083968,13312],\"eu\":[909712,13312],\"sh\":[934640,14336],\"cn\":[947456,13312]}],\n\"textures/segment2/segment2.03A00.rgba16.png\": [16,16,512,{\"jp\":[1078992,14848],\"us\":[1083968,13824],\"eu\":[909712,13824],\"sh\":[934640,14848],\"cn\":[947456,13824]}],\n\"textures/segment2/segment2.03C00.rgba16.png\": [16,16,512,{\"jp\":[1078992,15360],\"us\":[1083968,14336],\"eu\":[909712,14336],\"sh\":[934640,15360],\"cn\":[947456,14336]}],\n\"textures/segment2/segment2.03E00.rgba16.png\": [16,16,512,{\"jp\":[1078992,15872],\"eu\":[909712,14848],\"sh\":[934640,15872]}],\n\"textures/segment2/segment2.04000.rgba16.png\": [16,16,512,{\"jp\":[1078992,16384],\"us\":[1083968,14848],\"eu\":[909712,15360],\"sh\":[934640,16384],\"cn\":[947456,14848]}],\n\"textures/segment2/segment2.04200.rgba16.png\": [16,16,512,{\"jp\":[1078992,16896],\"sh\":[934640,16896]}],\n\"textures/segment2/segment2.04400.rgba16.png\": [16,16,512,{\"jp\":[1078992,17408],\"us\":[1083968,15360],\"eu\":[909712,15872],\"sh\":[934640,17408],\"cn\":[947456,15360]}],\n\"textures/segment2/segment2.04600.rgba16.png\": [16,16,512,{\"jp\":[1078992,17920],\"eu\":[909712,16384],\"sh\":[934640,17920]}],\n\"textures/segment2/segment2.04800.rgba16.png\": [16,16,512,{\"jp\":[1078992,18432],\"us\":[1083968,15872],\"eu\":[909712,16896],\"sh\":[934640,18432],\"cn\":[947456,15872]}],\n\"textures/segment2/segment2.04A00.rgba16.png\": [16,16,512,{\"jp\":[1078992,18944],\"us\":[1083968,16384],\"eu\":[909712,17408],\"sh\":[934640,18944],\"cn\":[947456,16384]}],\n\"textures/segment2/segment2.04C00.rgba16.png\": [16,16,512,{\"jp\":[1078992,19456],\"sh\":[934640,19456]}],\n\"textures/segment2/segment2.04E00.rgba16.png\": [16,16,512,{\"jp\":[1078992,19968],\"sh\":[934640,19968]}],\n\"textures/segment2/segment2.05000.rgba16.png\": [16,16,512,{\"jp\":[1078992,20480],\"us\":[2778544,41424],\"eu\":[2647072,41424],\"sh\":[934640,20480],\"cn\":[2700128,41424]}],\n\"textures/segment2/segment2.05200.rgba16.png\": [16,16,512,{\"jp\":[1078992,20992],\"sh\":[934640,20992]}],\n\"textures/segment2/segment2.05400.rgba16.png\": [16,16,512,{\"jp\":[1078992,21504],\"sh\":[934640,21504]}],\n\"textures/segment2/segment2.05600.rgba16.png\": [16,16,512,{\"jp\":[1078992,22016],\"us\":[1083968,16896],\"eu\":[909712,18432],\"sh\":[934640,22016],\"cn\":[947456,16896]}],\n\"textures/segment2/segment2.05800.rgba16.png\": [16,16,512,{\"jp\":[1078992,22528],\"us\":[1083968,17408],\"eu\":[909712,18944],\"sh\":[934640,22528],\"cn\":[947456,17408]}],\n\"textures/segment2/segment2.05A00.rgba16.png\": [16,16,512,{\"jp\":[1078992,23040],\"us\":[1083968,17920],\"eu\":[909712,19456],\"sh\":[934640,23040],\"cn\":[947456,17920]}],\n\"textures/segment2/segment2.05C00.rgba16.png\": [16,16,512,{\"jp\":[1078992,23552],\"us\":[1083968,18432],\"eu\":[909712,19968],\"sh\":[934640,23552],\"cn\":[947456,18432]}],\n\"textures/segment2/segment2.05E00.rgba16.png\": [16,16,512,{\"jp\":[1078992,24064],\"sh\":[934640,24064]}],\n\"textures/segment2/segment2.06000.rgba16.png\": [16,16,512,{\"jp\":[1078992,24576],\"sh\":[934640,24576]}],\n\"textures/segment2/segment2.06200.rgba16.png\": [8,8,128,{\"jp\":[1078992,25088],\"us\":[1083968,18944],\"eu\":[909712,20480],\"sh\":[934640,25088],\"cn\":[947456,82432]}],\n\"textures/segment2/segment2.06280.rgba16.png\": [8,8,128,{\"jp\":[1078992,25216],\"us\":[1083968,19072],\"eu\":[909712,20608],\"sh\":[934640,25216],\"cn\":[947456,82560]}],\n\"textures/segment2/segment2.06300.rgba16.png\": [8,8,128,{\"jp\":[1078992,25344],\"us\":[1083968,19200],\"eu\":[909712,20736],\"sh\":[934640,25344],\"cn\":[947456,82688]}],\n\"textures/segment2/segment2.06380.rgba16.png\": [8,8,128,{\"jp\":[1078992,25472],\"us\":[1083968,19328],\"eu\":[909712,20864],\"sh\":[934640,25472],\"cn\":[947456,82816]}],\n\"textures/segment2/segment2.06400.rgba16.png\": [8,8,128,{\"jp\":[1078992,25600],\"us\":[1083968,19456],\"eu\":[909712,20992],\"sh\":[934640,25600],\"cn\":[947456,82944]}],\n\"textures/segment2/segment2.06480.rgba16.png\": [8,8,128,{\"jp\":[1078992,25728],\"us\":[1083968,19584],\"eu\":[909712,21120],\"sh\":[934640,25728],\"cn\":[947456,83072]}],\n\"textures/segment2/segment2.06500.rgba16.png\": [8,8,128,{\"jp\":[1078992,25856],\"us\":[1083968,19712],\"eu\":[909712,21248],\"sh\":[934640,25856],\"cn\":[947456,83200]}],\n\"textures/segment2/segment2.06580.rgba16.png\": [8,8,128,{\"jp\":[1078992,25984],\"us\":[1083968,19840],\"eu\":[909712,21376],\"sh\":[934640,25984],\"cn\":[947456,83328]}],\n\"textures/segment2/segment2.06600.rgba16.png\": [8,8,128,{\"jp\":[1078992,26112],\"us\":[1083968,19968],\"eu\":[909712,21504],\"sh\":[934640,26112],\"cn\":[947456,83456]}],\n\"textures/segment2/segment2.06680.rgba16.png\": [8,8,128,{\"jp\":[1078992,26240],\"us\":[1083968,20096],\"eu\":[909712,21632],\"sh\":[934640,26240],\"cn\":[947456,83584]}],\n\"textures/segment2/segment2.06700.rgba16.png\": [8,8,128,{\"jp\":[1078992,26368],\"us\":[1083968,20224],\"eu\":[909712,21760],\"sh\":[934640,26368],\"cn\":[947456,83712]}],\n\"textures/segment2/segment2.06780.rgba16.png\": [8,8,128,{\"jp\":[1078992,26496],\"us\":[1083968,20352],\"eu\":[909712,21888],\"sh\":[934640,26496],\"cn\":[947456,83840]}],\n\"textures/segment2/segment2.06800.rgba16.png\": [8,8,128,{\"jp\":[1078992,26624],\"us\":[1083968,20480],\"eu\":[909712,22016],\"sh\":[934640,26624],\"cn\":[947456,83968]}],\n\"textures/segment2/segment2.06880.rgba16.png\": [8,8,128,{\"jp\":[1078992,26752],\"us\":[1083968,20608],\"eu\":[909712,22144],\"sh\":[934640,26752],\"cn\":[947456,84096]}],\n\"textures/segment2/segment2.06900.rgba16.png\": [8,8,128,{\"jp\":[1078992,26880],\"us\":[1083968,20736],\"eu\":[909712,22272],\"sh\":[934640,26880],\"cn\":[947456,84224]}],\n\"textures/segment2/segment2.06980.rgba16.png\": [8,8,128,{\"jp\":[1078992,27008],\"us\":[1083968,20864],\"eu\":[909712,22400],\"sh\":[934640,27008],\"cn\":[947456,84352]}],\n\"textures/segment2/segment2.06A00.rgba16.png\": [8,8,128,{\"jp\":[1078992,27136],\"us\":[1083968,20992],\"eu\":[909712,22528],\"sh\":[934640,27136],\"cn\":[947456,84480]}],\n\"textures/segment2/segment2.06A80.rgba16.png\": [8,8,128,{\"jp\":[1078992,27264],\"us\":[1083968,21120],\"eu\":[909712,22656],\"sh\":[934640,27264],\"cn\":[947456,84608]}],\n\"textures/segment2/segment2.06B00.rgba16.png\": [8,8,128,{\"jp\":[1078992,27392],\"us\":[1083968,21248],\"eu\":[909712,22784],\"sh\":[934640,27392],\"cn\":[947456,84736]}],\n\"textures/segment2/segment2.06B80.rgba16.png\": [8,8,128,{\"jp\":[1078992,27520],\"us\":[1083968,21376],\"eu\":[909712,22912],\"sh\":[934640,27520],\"cn\":[947456,84864]}],\n\"textures/segment2/segment2.06C00.rgba16.png\": [8,8,128,{\"jp\":[1078992,27648],\"us\":[1083968,21504],\"eu\":[909712,23040],\"sh\":[934640,27648],\"cn\":[947456,84992]}],\n\"textures/segment2/segment2.06C80.rgba16.png\": [8,8,128,{\"jp\":[1078992,27776],\"us\":[1083968,21632],\"eu\":[909712,23168],\"sh\":[934640,27776],\"cn\":[947456,85120]}],\n\"textures/segment2/segment2.06D00.rgba16.png\": [8,8,128,{\"jp\":[1078992,27904],\"us\":[1083968,21760],\"eu\":[909712,23296],\"sh\":[934640,27904],\"cn\":[947456,85248]}],\n\"textures/segment2/segment2.06D80.rgba16.png\": [8,8,128,{\"jp\":[1078992,28032],\"us\":[1083968,21888],\"eu\":[909712,23424],\"sh\":[934640,28032],\"cn\":[947456,85376]}],\n\"textures/segment2/segment2.06E00.rgba16.png\": [8,8,128,{\"jp\":[1078992,28160],\"us\":[1083968,22016],\"eu\":[909712,23552],\"sh\":[934640,28160],\"cn\":[947456,85504]}],\n\"textures/segment2/segment2.06E80.rgba16.png\": [8,8,128,{\"jp\":[1078992,28288],\"us\":[1083968,22144],\"eu\":[909712,23680],\"sh\":[934640,28288],\"cn\":[947456,85632]}],\n\"textures/segment2/segment2.06F00.rgba16.png\": [8,8,128,{\"jp\":[1078992,28416],\"us\":[1083968,22272],\"eu\":[909712,23808],\"sh\":[934640,28416],\"cn\":[947456,85760]}],\n\"textures/segment2/segment2.06F80.rgba16.png\": [8,8,128,{\"jp\":[1078992,28544],\"us\":[1083968,22400],\"eu\":[909712,23936],\"sh\":[934640,28544],\"cn\":[947456,85888]}],\n\"textures/segment2/segment2.07000.rgba16.png\": [8,8,128,{\"jp\":[1078992,28672],\"us\":[1083968,22528],\"eu\":[909712,24064],\"sh\":[934640,28672],\"cn\":[947456,86016]}],\n\"textures/segment2/segment2.07080.rgba16.png\": [8,8,128,{\"jp\":[1078992,28800],\"us\":[1083968,22656],\"eu\":[909712,24192],\"sh\":[934640,28800],\"cn\":[947456,86144]}],\n\"textures/segment2/segment2.07100.ia1.png\": [8,16,16,{\"jp\":[1078992,28928],\"sh\":[934640,28928]}],\n\"textures/segment2/segment2.07110.ia1.png\": [8,16,16,{\"jp\":[1078992,28944],\"sh\":[934640,28944]}],\n\"textures/segment2/segment2.07120.ia1.png\": [8,16,16,{\"jp\":[1078992,28960],\"sh\":[934640,28960]}],\n\"textures/segment2/segment2.07130.ia1.png\": [8,16,16,{\"jp\":[1078992,28976],\"sh\":[934640,28976]}],\n\"textures/segment2/segment2.07140.ia1.png\": [8,16,16,{\"jp\":[1078992,28992],\"sh\":[934640,28992]}],\n\"textures/segment2/segment2.07150.ia1.png\": [8,16,16,{\"jp\":[1078992,29008],\"sh\":[934640,29008]}],\n\"textures/segment2/segment2.07160.ia1.png\": [8,16,16,{\"jp\":[1078992,29024],\"sh\":[934640,29024]}],\n\"textures/segment2/segment2.07170.ia1.png\": [8,16,16,{\"jp\":[1078992,29040],\"sh\":[934640,29040]}],\n\"textures/segment2/segment2.07180.ia1.png\": [8,16,16,{\"jp\":[1078992,29056],\"sh\":[934640,29056]}],\n\"textures/segment2/segment2.07190.ia1.png\": [8,16,16,{\"jp\":[1078992,29072],\"sh\":[934640,29072]}],\n\"textures/segment2/segment2.071A0.ia1.png\": [8,16,16,{\"jp\":[1078992,29088],\"sh\":[934640,29088]}],\n\"textures/segment2/segment2.071B0.ia1.png\": [8,16,16,{\"jp\":[1078992,29104],\"sh\":[934640,29104]}],\n\"textures/segment2/segment2.071C0.ia1.png\": [8,16,16,{\"jp\":[1078992,29120],\"sh\":[934640,29120]}],\n\"textures/segment2/segment2.071D0.ia1.png\": [8,16,16,{\"jp\":[1078992,29136],\"sh\":[934640,29136]}],\n\"textures/segment2/segment2.071E0.ia1.png\": [8,16,16,{\"jp\":[1078992,29152],\"sh\":[934640,29152]}],\n\"textures/segment2/segment2.071F0.ia1.png\": [8,16,16,{\"jp\":[1078992,29168],\"sh\":[934640,29168]}],\n\"textures/segment2/segment2.07200.ia1.png\": [8,16,16,{\"jp\":[1078992,29184],\"sh\":[934640,29184]}],\n\"textures/segment2/segment2.07210.ia1.png\": [8,16,16,{\"jp\":[1078992,29200],\"sh\":[934640,29200]}],\n\"textures/segment2/segment2.07220.ia1.png\": [8,16,16,{\"jp\":[1078992,29216],\"sh\":[934640,29216]}],\n\"textures/segment2/segment2.07230.ia1.png\": [8,16,16,{\"jp\":[1078992,29232],\"sh\":[934640,29232]}],\n\"textures/segment2/segment2.07240.ia1.png\": [8,16,16,{\"jp\":[1078992,29248],\"sh\":[934640,29248]}],\n\"textures/segment2/segment2.07250.ia1.png\": [8,16,16,{\"jp\":[1078992,29264],\"sh\":[934640,29264]}],\n\"textures/segment2/segment2.07260.ia1.png\": [8,16,16,{\"jp\":[1078992,29280],\"sh\":[934640,29280]}],\n\"textures/segment2/segment2.07270.ia1.png\": [8,16,16,{\"jp\":[1078992,29296],\"sh\":[934640,29296]}],\n\"textures/segment2/segment2.07280.ia1.png\": [8,16,16,{\"jp\":[1078992,29312],\"sh\":[934640,29312]}],\n\"textures/segment2/segment2.07290.ia1.png\": [8,16,16,{\"jp\":[1078992,29328],\"sh\":[934640,29328]}],\n\"textures/segment2/segment2.072A0.ia1.png\": [8,16,16,{\"jp\":[1078992,29344],\"sh\":[934640,29344]}],\n\"textures/segment2/segment2.072B0.ia1.png\": [8,16,16,{\"jp\":[1078992,29360],\"sh\":[934640,29360]}],\n\"textures/segment2/segment2.072C0.ia1.png\": [8,16,16,{\"jp\":[1078992,29376],\"sh\":[934640,29376]}],\n\"textures/segment2/segment2.072D0.ia1.png\": [8,16,16,{\"jp\":[1078992,29392],\"sh\":[934640,29392]}],\n\"textures/segment2/segment2.072E0.ia1.png\": [8,16,16,{\"jp\":[1078992,29408],\"sh\":[934640,29408]}],\n\"textures/segment2/segment2.072F0.ia1.png\": [8,16,16,{\"jp\":[1078992,29424],\"sh\":[934640,29424]}],\n\"textures/segment2/segment2.07300.ia1.png\": [8,16,16,{\"jp\":[1078992,29440],\"sh\":[934640,29440]}],\n\"textures/segment2/segment2.07310.ia1.png\": [8,16,16,{\"jp\":[1078992,29456],\"sh\":[934640,29456]}],\n\"textures/segment2/segment2.07320.ia1.png\": [8,16,16,{\"jp\":[1078992,29472],\"sh\":[934640,29472]}],\n\"textures/segment2/segment2.07330.ia1.png\": [8,16,16,{\"jp\":[1078992,29488],\"sh\":[934640,29488]}],\n\"textures/segment2/segment2.07340.ia1.png\": [8,16,16,{\"jp\":[1078992,29504],\"us\":[1083968,24050],\"eu\":[2647072,44317],\"sh\":[934640,29504],\"cn\":[947456,87538]}],\n\"textures/segment2/segment2.07350.ia1.png\": [8,16,16,{\"jp\":[1078992,29520],\"sh\":[934640,29520]}],\n\"textures/segment2/segment2.07360.ia1.png\": [8,16,16,{\"jp\":[1078992,29536],\"sh\":[934640,29536]}],\n\"textures/segment2/segment2.07370.ia1.png\": [8,16,16,{\"jp\":[1078992,29552],\"sh\":[934640,29552]}],\n\"textures/segment2/segment2.07380.ia1.png\": [8,16,16,{\"jp\":[1078992,29568],\"sh\":[934640,29568]}],\n\"textures/segment2/segment2.07390.ia1.png\": [8,16,16,{\"jp\":[1078992,29584],\"sh\":[934640,29584]}],\n\"textures/segment2/segment2.073A0.ia1.png\": [8,16,16,{\"jp\":[1078992,29600],\"sh\":[934640,29600]}],\n\"textures/segment2/segment2.073B0.ia1.png\": [8,16,16,{\"jp\":[1078992,29616],\"sh\":[934640,29616]}],\n\"textures/segment2/segment2.073C0.ia1.png\": [8,16,16,{\"jp\":[1078992,29632],\"sh\":[934640,29632]}],\n\"textures/segment2/segment2.073D0.ia1.png\": [8,16,16,{\"jp\":[1078992,29648],\"sh\":[934640,29648]}],\n\"textures/segment2/segment2.073E0.ia1.png\": [8,16,16,{\"jp\":[1078992,29664],\"sh\":[934640,29664]}],\n\"textures/segment2/segment2.073F0.ia1.png\": [8,16,16,{\"jp\":[1078992,29680],\"sh\":[934640,29680]}],\n\"textures/segment2/segment2.07400.ia1.png\": [8,16,16,{\"jp\":[1078992,29696],\"sh\":[934640,29696]}],\n\"textures/segment2/segment2.07410.ia1.png\": [8,16,16,{\"jp\":[1078992,29712],\"sh\":[934640,29712]}],\n\"textures/segment2/segment2.07420.ia1.png\": [8,16,16,{\"jp\":[1078992,29728],\"sh\":[934640,29728]}],\n\"textures/segment2/segment2.07430.ia1.png\": [8,16,16,{\"jp\":[1078992,29744],\"sh\":[934640,29744]}],\n\"textures/segment2/segment2.07440.ia1.png\": [8,16,16,{\"jp\":[1078992,29760],\"sh\":[934640,29760]}],\n\"textures/segment2/segment2.07450.ia1.png\": [8,16,16,{\"jp\":[1078992,29776],\"sh\":[934640,29776]}],\n\"textures/segment2/segment2.07460.ia1.png\": [8,16,16,{\"jp\":[1078992,29792],\"sh\":[934640,29792]}],\n\"textures/segment2/segment2.07470.ia1.png\": [8,16,16,{\"jp\":[1078992,29808],\"sh\":[934640,29808]}],\n\"textures/segment2/segment2.07480.ia1.png\": [8,16,16,{\"jp\":[1078992,29824],\"sh\":[934640,29824]}],\n\"textures/segment2/segment2.07490.ia1.png\": [8,16,16,{\"jp\":[1078992,29840],\"sh\":[934640,29840]}],\n\"textures/segment2/segment2.074A0.ia1.png\": [8,16,16,{\"jp\":[1078992,29856],\"sh\":[934640,29856]}],\n\"textures/segment2/segment2.074B0.ia1.png\": [8,16,16,{\"jp\":[1078992,29872],\"sh\":[934640,29872]}],\n\"textures/segment2/segment2.074C0.ia1.png\": [8,16,16,{\"jp\":[1078992,29888],\"sh\":[934640,29888]}],\n\"textures/segment2/segment2.074D0.ia1.png\": [8,16,16,{\"jp\":[1078992,29904],\"sh\":[934640,29904]}],\n\"textures/segment2/segment2.074E0.ia1.png\": [8,16,16,{\"jp\":[1078992,29920],\"sh\":[934640,29920]}],\n\"textures/segment2/segment2.074F0.ia1.png\": [8,16,16,{\"jp\":[1078992,29936],\"sh\":[934640,29936]}],\n\"textures/segment2/segment2.07500.ia1.png\": [8,16,16,{\"jp\":[1078992,29952],\"sh\":[934640,29952]}],\n\"textures/segment2/segment2.07510.ia1.png\": [8,16,16,{\"jp\":[1078992,29968],\"sh\":[934640,29968]}],\n\"textures/segment2/segment2.07520.ia1.png\": [8,16,16,{\"jp\":[1078992,29984],\"sh\":[934640,29984]}],\n\"textures/segment2/segment2.07530.ia1.png\": [8,16,16,{\"jp\":[1078992,30000],\"sh\":[934640,30000]}],\n\"textures/segment2/segment2.07540.ia1.png\": [8,16,16,{\"jp\":[1078992,30016],\"sh\":[934640,30016]}],\n\"textures/segment2/segment2.07550.ia1.png\": [8,16,16,{\"jp\":[1078992,30032],\"sh\":[934640,30032]}],\n\"textures/segment2/segment2.07560.ia1.png\": [8,16,16,{\"jp\":[1078992,30048],\"sh\":[934640,30048]}],\n\"textures/segment2/segment2.07570.ia1.png\": [8,16,16,{\"jp\":[1078992,30064],\"sh\":[934640,30064]}],\n\"textures/segment2/segment2.07580.ia1.png\": [8,16,16,{\"jp\":[1078992,30080],\"sh\":[934640,30080]}],\n\"textures/segment2/segment2.07590.ia1.png\": [8,16,16,{\"jp\":[1078992,30096],\"sh\":[934640,30096]}],\n\"textures/segment2/segment2.075A0.ia1.png\": [8,16,16,{\"jp\":[1078992,30112],\"sh\":[934640,30112]}],\n\"textures/segment2/segment2.075B0.ia1.png\": [8,16,16,{\"jp\":[1078992,30128],\"sh\":[934640,30128]}],\n\"textures/segment2/segment2.075C0.ia1.png\": [8,16,16,{\"jp\":[1078992,30144],\"sh\":[934640,30144]}],\n\"textures/segment2/segment2.075D0.ia1.png\": [8,16,16,{\"jp\":[1078992,30160],\"sh\":[934640,30160]}],\n\"textures/segment2/segment2.075E0.ia1.png\": [8,16,16,{\"jp\":[1078992,30176],\"sh\":[934640,30176]}],\n\"textures/segment2/segment2.075F0.ia1.png\": [8,16,16,{\"jp\":[1078992,30192],\"sh\":[934640,30192]}],\n\"textures/segment2/segment2.07600.ia1.png\": [8,16,16,{\"jp\":[1078992,30208],\"sh\":[934640,30208]}],\n\"textures/segment2/segment2.07610.ia1.png\": [8,16,16,{\"jp\":[1078992,30224],\"sh\":[934640,30224]}],\n\"textures/segment2/segment2.07620.ia1.png\": [8,16,16,{\"jp\":[1078992,30240],\"sh\":[934640,30240]}],\n\"textures/segment2/segment2.07630.ia1.png\": [8,16,16,{\"jp\":[1078992,30256],\"sh\":[934640,30256]}],\n\"textures/segment2/segment2.07640.ia1.png\": [8,16,16,{\"jp\":[1078992,30272],\"sh\":[934640,30272]}],\n\"textures/segment2/segment2.07650.ia1.png\": [8,16,16,{\"jp\":[1078992,30288],\"sh\":[934640,30288]}],\n\"textures/segment2/segment2.07660.ia1.png\": [8,16,16,{\"jp\":[1078992,30304],\"sh\":[934640,30304]}],\n\"textures/segment2/segment2.07670.ia1.png\": [8,16,16,{\"jp\":[1078992,30320],\"sh\":[934640,30320]}],\n\"textures/segment2/segment2.07680.ia1.png\": [8,16,16,{\"jp\":[1078992,30336],\"sh\":[934640,30336]}],\n\"textures/segment2/segment2.07690.ia1.png\": [8,16,16,{\"jp\":[1078992,30352],\"sh\":[934640,30352]}],\n\"textures/segment2/segment2.076A0.ia1.png\": [8,16,16,{\"jp\":[1078992,30368],\"sh\":[934640,30368]}],\n\"textures/segment2/segment2.076B0.ia1.png\": [8,16,16,{\"jp\":[1078992,30384],\"sh\":[934640,30384]}],\n\"textures/segment2/segment2.076C0.ia1.png\": [8,16,16,{\"jp\":[1078992,30400],\"sh\":[934640,30400]}],\n\"textures/segment2/segment2.076D0.ia1.png\": [8,16,16,{\"jp\":[1078992,30416],\"sh\":[934640,30416]}],\n\"textures/segment2/segment2.076E0.ia1.png\": [8,16,16,{\"jp\":[1078992,30432],\"sh\":[934640,30432]}],\n\"textures/segment2/segment2.076F0.ia1.png\": [8,16,16,{\"jp\":[1078992,30448],\"sh\":[934640,30448]}],\n\"textures/segment2/segment2.07700.ia1.png\": [8,16,16,{\"jp\":[1078992,30464],\"sh\":[934640,30464]}],\n\"textures/segment2/segment2.07710.ia1.png\": [8,16,16,{\"jp\":[1078992,30480],\"sh\":[934640,30480]}],\n\"textures/segment2/segment2.07720.ia1.png\": [8,16,16,{\"jp\":[1078992,30496],\"sh\":[934640,30496]}],\n\"textures/segment2/segment2.07730.ia1.png\": [8,16,16,{\"jp\":[1078992,30512],\"sh\":[934640,30512]}],\n\"textures/segment2/segment2.07740.ia1.png\": [8,16,16,{\"jp\":[1078992,30528],\"sh\":[934640,30528]}],\n\"textures/segment2/segment2.07750.ia1.png\": [8,16,16,{\"jp\":[1078992,30544],\"sh\":[934640,30544]}],\n\"textures/segment2/segment2.07760.ia1.png\": [8,16,16,{\"jp\":[1078992,30560],\"sh\":[934640,30560]}],\n\"textures/segment2/segment2.07770.ia1.png\": [8,16,16,{\"jp\":[1078992,30576],\"sh\":[934640,30576]}],\n\"textures/segment2/segment2.07780.ia1.png\": [8,16,16,{\"jp\":[1078992,30592],\"sh\":[934640,30592]}],\n\"textures/segment2/segment2.07790.ia1.png\": [8,16,16,{\"jp\":[1078992,30608],\"sh\":[934640,30608]}],\n\"textures/segment2/segment2.077A0.ia1.png\": [8,16,16,{\"jp\":[1078992,30624],\"sh\":[934640,30624]}],\n\"textures/segment2/segment2.077B0.ia1.png\": [8,16,16,{\"jp\":[1078992,30640],\"sh\":[934640,30640]}],\n\"textures/segment2/segment2.077C0.ia1.png\": [8,16,16,{\"jp\":[1078992,30656],\"sh\":[934640,30656]}],\n\"textures/segment2/segment2.077D0.ia1.png\": [8,16,16,{\"jp\":[1078992,30672],\"sh\":[934640,30672]}],\n\"textures/segment2/segment2.077E0.ia1.png\": [8,16,16,{\"jp\":[1078992,30688],\"sh\":[934640,30688]}],\n\"textures/segment2/segment2.077F0.ia1.png\": [8,16,16,{\"jp\":[1078992,30704],\"sh\":[934640,30704]}],\n\"textures/segment2/segment2.07800.ia1.png\": [8,16,16,{\"jp\":[1078992,30720],\"sh\":[934640,30720]}],\n\"textures/segment2/segment2.07810.ia1.png\": [8,16,16,{\"jp\":[1078992,30736],\"sh\":[934640,30736]}],\n\"textures/segment2/segment2.07820.ia1.png\": [8,16,16,{\"jp\":[1078992,30752],\"sh\":[934640,30752]}],\n\"textures/segment2/segment2.07830.ia1.png\": [8,16,16,{\"jp\":[1078992,30768],\"sh\":[934640,30768]}],\n\"textures/segment2/segment2.07840.ia1.png\": [8,16,16,{\"jp\":[1078992,30784],\"sh\":[934640,30784]}],\n\"textures/segment2/segment2.07850.ia1.png\": [8,16,16,{\"jp\":[1078992,30800],\"sh\":[934640,30800]}],\n\"textures/segment2/segment2.07860.ia1.png\": [8,16,16,{\"jp\":[1078992,30816],\"sh\":[934640,30816]}],\n\"textures/segment2/segment2.07870.ia1.png\": [8,16,16,{\"jp\":[1078992,30832],\"sh\":[934640,30832]}],\n\"textures/segment2/segment2.07880.ia1.png\": [8,16,16,{\"jp\":[1078992,30848],\"sh\":[934640,30848]}],\n\"textures/segment2/segment2.07890.ia1.png\": [8,16,16,{\"jp\":[1078992,30864],\"sh\":[934640,30864]}],\n\"textures/segment2/segment2.078A0.ia1.png\": [8,16,16,{\"jp\":[1078992,30880],\"sh\":[934640,30880]}],\n\"textures/segment2/segment2.078B0.ia1.png\": [8,16,16,{\"jp\":[1078992,30896],\"sh\":[934640,30896]}],\n\"textures/segment2/segment2.078C0.ia1.png\": [8,16,16,{\"jp\":[1078992,30912],\"sh\":[934640,30912]}],\n\"textures/segment2/segment2.078D0.ia1.png\": [8,16,16,{\"jp\":[1078992,30928],\"sh\":[934640,30928]}],\n\"textures/segment2/segment2.078E0.ia1.png\": [8,16,16,{\"jp\":[1078992,30944],\"sh\":[934640,30944]}],\n\"textures/segment2/segment2.078F0.ia1.png\": [8,16,16,{\"jp\":[1078992,30960],\"sh\":[934640,30960]}],\n\"textures/segment2/segment2.07900.ia1.png\": [8,16,16,{\"jp\":[1078992,30976],\"sh\":[934640,30976]}],\n\"textures/segment2/segment2.07910.ia1.png\": [8,16,16,{\"jp\":[1078992,30992],\"sh\":[934640,30992]}],\n\"textures/segment2/segment2.07920.ia1.png\": [8,16,16,{\"jp\":[1078992,31008],\"sh\":[934640,31008]}],\n\"textures/segment2/segment2.07930.ia1.png\": [8,16,16,{\"jp\":[1078992,31024],\"sh\":[934640,31024]}],\n\"textures/segment2/segment2.07940.ia1.png\": [8,16,16,{\"jp\":[1078992,31040],\"sh\":[934640,31040]}],\n\"textures/segment2/segment2.07950.ia1.png\": [8,16,16,{\"jp\":[1078992,31056],\"sh\":[934640,31056]}],\n\"textures/segment2/segment2.07960.ia1.png\": [8,16,16,{\"jp\":[1078992,31072],\"sh\":[934640,31072]}],\n\"textures/segment2/segment2.07970.ia1.png\": [8,16,16,{\"jp\":[1078992,31088],\"sh\":[934640,31088]}],\n\"textures/segment2/segment2.07980.ia1.png\": [8,16,16,{\"jp\":[1078992,31104],\"sh\":[934640,31104]}],\n\"textures/segment2/segment2.07990.ia1.png\": [8,16,16,{\"jp\":[1078992,31120],\"sh\":[934640,31120]}],\n\"textures/segment2/segment2.079A0.ia1.png\": [8,16,16,{\"jp\":[1078992,31136],\"sh\":[934640,31136]}],\n\"textures/segment2/segment2.079B0.ia1.png\": [8,16,16,{\"jp\":[1078992,31152],\"sh\":[934640,31152]}],\n\"textures/segment2/segment2.079C0.ia1.png\": [8,16,16,{\"jp\":[1078992,31168],\"sh\":[934640,31168]}],\n\"textures/segment2/segment2.079D0.ia1.png\": [8,16,16,{\"jp\":[1078992,31184],\"sh\":[934640,31184]}],\n\"textures/segment2/segment2.079E0.ia1.png\": [8,16,16,{\"jp\":[1078992,31200],\"sh\":[934640,31200]}],\n\"textures/segment2/segment2.079F0.ia1.png\": [8,16,16,{\"jp\":[1078992,31216],\"sh\":[934640,31216]}],\n\"textures/segment2/segment2.07A00.ia1.png\": [8,16,16,{\"jp\":[1078992,31232],\"sh\":[934640,31232]}],\n\"textures/segment2/segment2.07A10.ia1.png\": [8,16,16,{\"jp\":[1078992,31248],\"sh\":[934640,31248]}],\n\"textures/segment2/segment2.07A20.ia1.png\": [8,16,16,{\"jp\":[1078992,31264],\"sh\":[934640,31264]}],\n\"textures/segment2/segment2.07A30.ia1.png\": [8,16,16,{\"jp\":[1078992,31280],\"sh\":[934640,31280]}],\n\"textures/segment2/segment2.07A40.ia1.png\": [8,16,16,{\"jp\":[1078992,31296],\"sh\":[934640,31296]}],\n\"textures/segment2/segment2.07A50.ia1.png\": [8,16,16,{\"jp\":[1078992,31312],\"sh\":[934640,31312]}],\n\"textures/segment2/segment2.07A60.ia1.png\": [8,16,16,{\"jp\":[1078992,31328],\"sh\":[934640,31328]}],\n\"textures/segment2/segment2.07A70.ia1.png\": [8,16,16,{\"jp\":[1078992,31344],\"sh\":[934640,31344]}],\n\"textures/segment2/segment2.07A80.ia1.png\": [8,16,16,{\"jp\":[1078992,31360],\"sh\":[934640,31360]}],\n\"textures/segment2/segment2.07A90.ia1.png\": [8,16,16,{\"jp\":[1078992,31376],\"sh\":[934640,31376]}],\n\"textures/segment2/segment2.07AA0.ia1.png\": [8,16,16,{\"jp\":[1078992,31392],\"sh\":[934640,31392]}],\n\"textures/segment2/segment2.07AB0.ia1.png\": [8,16,16,{\"jp\":[1078992,31408],\"sh\":[934640,31408]}],\n\"textures/segment2/segment2.07AC0.ia1.png\": [8,16,16,{\"jp\":[1078992,31424],\"sh\":[934640,31424]}],\n\"textures/segment2/segment2.07AD0.ia1.png\": [8,16,16,{\"jp\":[1078992,31440],\"sh\":[934640,31440]}],\n\"textures/segment2/segment2.07AE0.ia1.png\": [8,16,16,{\"jp\":[1078992,31456],\"sh\":[934640,31456]}],\n\"textures/segment2/segment2.07AF0.ia1.png\": [8,16,16,{\"jp\":[1078992,31472],\"sh\":[934640,31472]}],\n\"textures/segment2/segment2.07B00.ia1.png\": [8,16,16,{\"jp\":[1078992,31488],\"sh\":[934640,31488]}],\n\"textures/segment2/segment2.07B10.ia1.png\": [8,16,16,{\"jp\":[1078992,31504],\"sh\":[934640,31504]}],\n\"textures/segment2/segment2.07B20.ia1.png\": [8,16,16,{\"jp\":[1078992,31520],\"sh\":[934640,31520]}],\n\"textures/segment2/segment2.07B30.ia1.png\": [8,16,16,{\"jp\":[1078992,31536],\"sh\":[934640,31536]}],\n\"textures/segment2/segment2.07B40.ia1.png\": [8,16,16,{\"jp\":[1078992,31552],\"sh\":[934640,31552]}],\n\"textures/segment2/segment2.07B50.rgba16.png\": [16,16,512,{\"jp\":[1078992,31568],\"us\":[1083968,28672],\"eu\":[909712,25920],\"sh\":[934640,31568],\"cn\":[947456,126592]}],\n\"textures/segment2/segment2.07D50.rgba16.png\": [16,16,512,{\"jp\":[1078992,32080],\"us\":[1083968,29184],\"eu\":[909712,26432],\"sh\":[934640,32080],\"cn\":[947456,127104]}],\n\"textures/segment2/segment2.07F50.rgba16.png\": [16,16,512,{\"jp\":[1078992,32592],\"us\":[1083968,29696],\"eu\":[909712,26944],\"sh\":[934640,32592],\"cn\":[947456,127616]}],\n\"textures/segment2/segment2.08150.rgba16.png\": [8,8,128,{\"jp\":[1078992,33104],\"us\":[1083968,30208],\"eu\":[909712,27456],\"sh\":[934640,33104],\"cn\":[947456,128128]}],\n\"textures/segment2/segment2.081D0.rgba16.png\": [8,8,128,{\"jp\":[1078992,33232],\"us\":[1083968,30336],\"eu\":[909712,27584],\"sh\":[934640,33232],\"cn\":[947456,128256]}],\n\"textures/segment2/segment2.0F458.ia8.png\": [32,64,2048,{\"jp\":[1078992,62552],\"us\":[1083968,74424],\"eu\":[909712,31096],\"sh\":[934640,62552],\"cn\":[947456,174888]}],\n\"textures/segment2/segment2.0FC58.ia8.png\": [32,64,2048,{\"jp\":[1078992,64600],\"us\":[1083968,76472],\"eu\":[909712,33144],\"sh\":[934640,64600],\"cn\":[947456,176936]}],\n\"textures/segment2/segment2.10458.ia8.png\": [64,64,4096,{\"jp\":[1078992,66648],\"us\":[1083968,78520],\"eu\":[909712,35192],\"sh\":[934640,66648],\"cn\":[947456,178984]}],\n\"textures/segment2/segment2.11458.ia8.png\": [32,64,2048,{\"jp\":[1078992,70744],\"us\":[1083968,82616],\"eu\":[909712,39288],\"sh\":[934640,70744],\"cn\":[947456,183080]}],\n\"textures/segment2/segment2.11C58.rgba16.png\": [32,32,2048,{\"jp\":[1078992,72792],\"us\":[1083968,84664],\"eu\":[909712,41336],\"sh\":[934640,72792],\"cn\":[947456,185128]}],\n\"textures/segment2/segment2.12458.rgba16.png\": [32,32,2048,{\"jp\":[1078992,74840],\"us\":[1083968,86712],\"eu\":[909712,43384],\"sh\":[934640,74840],\"cn\":[947456,187176]}],\n\"textures/segment2/segment2.12C58.rgba16.png\": [32,32,2048,{\"jp\":[1078992,76888],\"us\":[1083968,88760],\"eu\":[909712,45432],\"sh\":[934640,76888],\"cn\":[947456,189224]}],\n\"textures/segment2/segment2.13458.ia16.png\": [32,32,2048,{\"jp\":[1078992,78936],\"us\":[1083968,90808],\"eu\":[909712,47480],\"sh\":[934640,78936],\"cn\":[947456,191272]}],\n\"textures/segment2/segment2.13C58.rgba16.png\": [32,32,2048,{\"jp\":[1078992,80984],\"us\":[1083968,92856],\"eu\":[909712,49528],\"sh\":[934640,80984],\"cn\":[947456,193320]}],\n\"textures/segment2/segment2.14838.ia8.png\": [8,8,64,{\"jp\":[1078992,84024],\"us\":[1083968,95896],\"eu\":[909712,52568],\"sh\":[934640,84024],\"cn\":[947456,196360]}],\n\"textures/segment2/segment2.umlaut.rgba16.png\": [16,16,512,{\"eu\":[909712,17920]}],\n\"textures/segment2/segment2_cn.04A00.rgba16.png\": [16,16,512,{\"cn\":[947456,18944]}],\n\"textures/segment2/segment2_cn.04C00.rgba16.png\": [16,16,512,{\"cn\":[947456,19456]}],\n\"textures/segment2/segment2_cn.04E00.rgba16.png\": [16,16,512,{\"cn\":[947456,19968]}],\n\"textures/segment2/segment2_cn.05000.rgba16.png\": [16,16,512,{\"cn\":[947456,20480]}],\n\"textures/segment2/segment2_cn.05200.rgba16.png\": [16,16,512,{\"cn\":[947456,20992]}],\n\"textures/segment2/segment2_cn.05400.rgba16.png\": [16,16,512,{\"cn\":[947456,21504]}],\n\"textures/segment2/segment2_cn.05600.rgba16.png\": [16,16,512,{\"cn\":[947456,22016]}],\n\"textures/segment2/segment2_cn.05800.rgba16.png\": [16,16,512,{\"cn\":[947456,22528]}],\n\"textures/segment2/segment2_cn.05A00.rgba16.png\": [16,16,512,{\"cn\":[947456,23040]}],\n\"textures/segment2/segment2_cn.05C00.rgba16.png\": [16,16,512,{\"cn\":[947456,23552]}],\n\"textures/segment2/segment2_cn.05E00.rgba16.png\": [16,16,512,{\"cn\":[947456,24064]}],\n\"textures/segment2/segment2_cn.06000.rgba16.png\": [16,16,512,{\"cn\":[947456,24576]}],\n\"textures/segment2/segment2_cn.06200.rgba16.png\": [16,16,512,{\"cn\":[947456,25088]}],\n\"textures/segment2/segment2_cn.06400.rgba16.png\": [16,16,512,{\"cn\":[947456,25600]}],\n\"textures/segment2/segment2_cn.06600.rgba16.png\": [16,16,512,{\"cn\":[947456,26112]}],\n\"textures/segment2/segment2_cn.06800.rgba16.png\": [16,16,512,{\"cn\":[947456,26624]}],\n\"textures/segment2/segment2_cn.06A00.rgba16.png\": [16,16,512,{\"cn\":[947456,27136]}],\n\"textures/segment2/segment2_cn.06C00.rgba16.png\": [16,16,512,{\"cn\":[947456,27648]}],\n\"textures/segment2/segment2_cn.06E00.rgba16.png\": [16,16,512,{\"cn\":[947456,28160]}],\n\"textures/segment2/segment2_cn.07000.rgba16.png\": [16,16,512,{\"cn\":[947456,28672]}],\n\"textures/segment2/segment2_cn.07200.rgba16.png\": [16,16,512,{\"cn\":[947456,29184]}],\n\"textures/segment2/segment2_cn.07400.rgba16.png\": [16,16,512,{\"cn\":[947456,29696]}],\n\"textures/segment2/segment2_cn.07600.rgba16.png\": [16,16,512,{\"cn\":[947456,30208]}],\n\"textures/segment2/segment2_cn.07800.rgba16.png\": [16,16,512,{\"cn\":[947456,30720]}],\n\"textures/segment2/segment2_cn.07A00.rgba16.png\": [16,16,512,{\"cn\":[947456,31232]}],\n\"textures/segment2/segment2_cn.07C00.rgba16.png\": [16,16,512,{\"cn\":[947456,31744]}],\n\"textures/segment2/segment2_cn.07E00.rgba16.png\": [16,16,512,{\"cn\":[947456,32256]}],\n\"textures/segment2/segment2_cn.08000.rgba16.png\": [16,16,512,{\"cn\":[947456,32768]}],\n\"textures/segment2/segment2_cn.08200.rgba16.png\": [16,16,512,{\"cn\":[947456,33280]}],\n\"textures/segment2/segment2_cn.08400.rgba16.png\": [16,16,512,{\"cn\":[947456,33792]}],\n\"textures/segment2/segment2_cn.08600.rgba16.png\": [16,16,512,{\"cn\":[947456,34304]}],\n\"textures/segment2/segment2_cn.08800.rgba16.png\": [16,16,512,{\"cn\":[947456,34816]}],\n\"textures/segment2/segment2_cn.08A00.rgba16.png\": [16,16,512,{\"cn\":[947456,35328]}],\n\"textures/segment2/segment2_cn.08C00.rgba16.png\": [16,16,512,{\"cn\":[947456,35840]}],\n\"textures/segment2/segment2_cn.08E00.rgba16.png\": [16,16,512,{\"cn\":[947456,36352]}],\n\"textures/segment2/segment2_cn.09000.rgba16.png\": [16,16,512,{\"cn\":[947456,36864]}],\n\"textures/segment2/segment2_cn.09200.rgba16.png\": [16,16,512,{\"cn\":[947456,37376]}],\n\"textures/segment2/segment2_cn.09400.rgba16.png\": [16,16,512,{\"cn\":[947456,37888]}],\n\"textures/segment2/segment2_cn.09600.rgba16.png\": [16,16,512,{\"cn\":[947456,38400]}],\n\"textures/segment2/segment2_cn.09800.rgba16.png\": [16,16,512,{\"cn\":[947456,38912]}],\n\"textures/segment2/segment2_cn.09A00.rgba16.png\": [16,16,512,{\"cn\":[947456,39424]}],\n\"textures/segment2/segment2_cn.09C00.rgba16.png\": [16,16,512,{\"cn\":[947456,39936]}],\n\"textures/segment2/segment2_cn.09E00.rgba16.png\": [16,16,512,{\"cn\":[947456,40448]}],\n\"textures/segment2/segment2_cn.0A000.rgba16.png\": [16,16,512,{\"cn\":[947456,40960]}],\n\"textures/segment2/segment2_cn.0A200.rgba16.png\": [16,16,512,{\"cn\":[947456,41472]}],\n\"textures/segment2/segment2_cn.0A400.rgba16.png\": [16,16,512,{\"cn\":[947456,41984]}],\n\"textures/segment2/segment2_cn.0A600.rgba16.png\": [16,16,512,{\"cn\":[947456,42496]}],\n\"textures/segment2/segment2_cn.0A800.rgba16.png\": [16,16,512,{\"cn\":[947456,43008]}],\n\"textures/segment2/segment2_cn.0AA00.rgba16.png\": [16,16,512,{\"cn\":[947456,43520]}],\n\"textures/segment2/segment2_cn.0AC00.rgba16.png\": [16,16,512,{\"cn\":[947456,44032]}],\n\"textures/segment2/segment2_cn.0AE00.rgba16.png\": [16,16,512,{\"cn\":[947456,44544]}],\n\"textures/segment2/segment2_cn.0B000.rgba16.png\": [16,16,512,{\"cn\":[947456,45056]}],\n\"textures/segment2/segment2_cn.0B200.rgba16.png\": [16,16,512,{\"cn\":[947456,45568]}],\n\"textures/segment2/segment2_cn.0B400.rgba16.png\": [16,16,512,{\"cn\":[947456,46080]}],\n\"textures/segment2/segment2_cn.0B600.rgba16.png\": [16,16,512,{\"cn\":[947456,46592]}],\n\"textures/segment2/segment2_cn.0B800.rgba16.png\": [16,16,512,{\"cn\":[947456,47104]}],\n\"textures/segment2/segment2_cn.0BA00.rgba16.png\": [16,16,512,{\"cn\":[947456,47616]}],\n\"textures/segment2/segment2_cn.0BC00.rgba16.png\": [16,16,512,{\"cn\":[947456,48128]}],\n\"textures/segment2/segment2_cn.0BE00.rgba16.png\": [16,16,512,{\"cn\":[947456,48640]}],\n\"textures/segment2/segment2_cn.0C000.rgba16.png\": [16,16,512,{\"cn\":[947456,49152]}],\n\"textures/segment2/segment2_cn.0C200.rgba16.png\": [16,16,512,{\"cn\":[947456,49664]}],\n\"textures/segment2/segment2_cn.0C400.rgba16.png\": [16,16,512,{\"cn\":[947456,50176]}],\n\"textures/segment2/segment2_cn.0C600.rgba16.png\": [16,16,512,{\"cn\":[947456,50688]}],\n\"textures/segment2/segment2_cn.0C800.rgba16.png\": [16,16,512,{\"cn\":[947456,51200]}],\n\"textures/segment2/segment2_cn.0CA00.rgba16.png\": [16,16,512,{\"cn\":[947456,51712]}],\n\"textures/segment2/segment2_cn.0CC00.rgba16.png\": [16,16,512,{\"cn\":[947456,52224]}],\n\"textures/segment2/segment2_cn.0CE00.rgba16.png\": [16,16,512,{\"cn\":[947456,52736]}],\n\"textures/segment2/segment2_cn.0D000.rgba16.png\": [16,16,512,{\"cn\":[947456,53248]}],\n\"textures/segment2/segment2_cn.0D200.rgba16.png\": [16,16,512,{\"cn\":[947456,53760]}],\n\"textures/segment2/segment2_cn.0D400.rgba16.png\": [16,16,512,{\"cn\":[947456,54272]}],\n\"textures/segment2/segment2_cn.0D600.rgba16.png\": [16,16,512,{\"cn\":[947456,54784]}],\n\"textures/segment2/segment2_cn.0D800.rgba16.png\": [16,16,512,{\"cn\":[947456,55296]}],\n\"textures/segment2/segment2_cn.0DA00.rgba16.png\": [16,16,512,{\"cn\":[947456,55808]}],\n\"textures/segment2/segment2_cn.0DC00.rgba16.png\": [16,16,512,{\"cn\":[947456,56320]}],\n\"textures/segment2/segment2_cn.0DE00.rgba16.png\": [16,16,512,{\"cn\":[947456,56832]}],\n\"textures/segment2/segment2_cn.0E000.rgba16.png\": [16,16,512,{\"cn\":[947456,57344]}],\n\"textures/segment2/segment2_cn.0E200.rgba16.png\": [16,16,512,{\"cn\":[947456,57856]}],\n\"textures/segment2/segment2_cn.0E400.rgba16.png\": [16,16,512,{\"cn\":[947456,58368]}],\n\"textures/segment2/segment2_cn.0E600.rgba16.png\": [16,16,512,{\"cn\":[947456,58880]}],\n\"textures/segment2/segment2_cn.0E800.rgba16.png\": [16,16,512,{\"cn\":[947456,59392]}],\n\"textures/segment2/segment2_cn.0EA00.rgba16.png\": [16,16,512,{\"cn\":[947456,59904]}],\n\"textures/segment2/segment2_cn.0EC00.rgba16.png\": [16,16,512,{\"cn\":[947456,60416]}],\n\"textures/segment2/segment2_cn.0EE00.rgba16.png\": [16,16,512,{\"cn\":[947456,60928]}],\n\"textures/segment2/segment2_cn.0F000.rgba16.png\": [16,16,512,{\"cn\":[947456,61440]}],\n\"textures/segment2/segment2_cn.0F200.rgba16.png\": [16,16,512,{\"cn\":[947456,61952]}],\n\"textures/segment2/segment2_cn.0F400.rgba16.png\": [16,16,512,{\"cn\":[947456,62464]}],\n\"textures/segment2/segment2_cn.0F600.rgba16.png\": [16,16,512,{\"cn\":[947456,62976]}],\n\"textures/segment2/segment2_cn.0F800.rgba16.png\": [16,16,512,{\"cn\":[947456,63488]}],\n\"textures/segment2/segment2_cn.0FA00.rgba16.png\": [16,16,512,{\"cn\":[947456,64000]}],\n\"textures/segment2/segment2_cn.0FC00.rgba16.png\": [16,16,512,{\"cn\":[947456,64512]}],\n\"textures/segment2/segment2_cn.0FE00.rgba16.png\": [16,16,512,{\"cn\":[947456,65024]}],\n\"textures/segment2/segment2_cn.10000.rgba16.png\": [16,16,512,{\"cn\":[947456,65536]}],\n\"textures/segment2/segment2_cn.10200.rgba16.png\": [16,16,512,{\"cn\":[947456,66048]}],\n\"textures/segment2/segment2_cn.10400.rgba16.png\": [16,16,512,{\"cn\":[947456,66560]}],\n\"textures/segment2/segment2_cn.10600.rgba16.png\": [16,16,512,{\"cn\":[947456,67072]}],\n\"textures/segment2/segment2_cn.10800.rgba16.png\": [16,16,512,{\"cn\":[947456,67584]}],\n\"textures/segment2/segment2_cn.10A00.rgba16.png\": [16,16,512,{\"cn\":[947456,68096]}],\n\"textures/segment2/segment2_cn.10C00.rgba16.png\": [16,16,512,{\"cn\":[947456,68608]}],\n\"textures/segment2/segment2_cn.10E00.rgba16.png\": [16,16,512,{\"cn\":[947456,69120]}],\n\"textures/segment2/segment2_cn.11000.rgba16.png\": [16,16,512,{\"cn\":[947456,69632]}],\n\"textures/segment2/segment2_cn.11200.rgba16.png\": [16,16,512,{\"cn\":[947456,70144]}],\n\"textures/segment2/segment2_cn.11400.rgba16.png\": [16,16,512,{\"cn\":[947456,70656]}],\n\"textures/segment2/segment2_cn.11600.rgba16.png\": [16,16,512,{\"cn\":[947456,71168]}],\n\"textures/segment2/segment2_cn.11800.rgba16.png\": [16,16,512,{\"cn\":[947456,71680]}],\n\"textures/segment2/segment2_cn.11A00.rgba16.png\": [16,16,512,{\"cn\":[947456,72192]}],\n\"textures/segment2/segment2_cn.11C00.rgba16.png\": [16,16,512,{\"cn\":[947456,72704]}],\n\"textures/segment2/segment2_cn.11E00.rgba16.png\": [16,16,512,{\"cn\":[947456,73216]}],\n\"textures/segment2/segment2_cn.12000.rgba16.png\": [16,16,512,{\"cn\":[947456,73728]}],\n\"textures/segment2/segment2_cn.12200.rgba16.png\": [16,16,512,{\"cn\":[947456,74240]}],\n\"textures/segment2/segment2_cn.12400.rgba16.png\": [16,16,512,{\"cn\":[947456,74752]}],\n\"textures/segment2/segment2_cn.12600.rgba16.png\": [16,16,512,{\"cn\":[947456,75264]}],\n\"textures/segment2/segment2_cn.12800.rgba16.png\": [16,16,512,{\"cn\":[947456,75776]}],\n\"textures/segment2/segment2_cn.12A00.rgba16.png\": [16,16,512,{\"cn\":[947456,76288]}],\n\"textures/segment2/segment2_cn.12C00.rgba16.png\": [16,16,512,{\"cn\":[947456,76800]}],\n\"textures/segment2/segment2_cn.12E00.rgba16.png\": [16,16,512,{\"cn\":[947456,77312]}],\n\"textures/segment2/segment2_cn.13000.rgba16.png\": [16,16,512,{\"cn\":[947456,77824]}],\n\"textures/segment2/segment2_cn.13200.rgba16.png\": [16,16,512,{\"cn\":[947456,78336]}],\n\"textures/segment2/segment2_cn.13400.rgba16.png\": [16,16,512,{\"cn\":[947456,78848]}],\n\"textures/segment2/segment2_cn.13600.rgba16.png\": [16,16,512,{\"cn\":[947456,79360]}],\n\"textures/segment2/segment2_cn.13800.rgba16.png\": [16,16,512,{\"cn\":[947456,79872]}],\n\"textures/segment2/segment2_cn.13A00.rgba16.png\": [16,16,512,{\"cn\":[947456,80384]}],\n\"textures/segment2/segment2_cn.13C00.rgba16.png\": [16,16,512,{\"cn\":[947456,80896]}],\n\"textures/segment2/segment2_cn.13E00.rgba16.png\": [16,16,512,{\"cn\":[947456,81408]}],\n\"textures/segment2/segment2_cn.14000.rgba16.png\": [16,16,512,{\"cn\":[947456,81920]}],\n\"textures/segment2/segment2_cn.16800.ia1.png\": [16,8,16,{\"cn\":[947456,92160]}],\n\"textures/segment2/segment2_cn.16810.ia1.png\": [16,8,16,{\"cn\":[947456,92176]}],\n\"textures/segment2/segment2_cn.16820.ia1.png\": [16,8,16,{\"cn\":[947456,92192]}],\n\"textures/segment2/segment2_cn.16830.ia1.png\": [16,8,16,{\"cn\":[947456,92208]}],\n\"textures/segment2/segment2_cn.16840.ia1.png\": [16,8,16,{\"cn\":[947456,92224]}],\n\"textures/segment2/segment2_cn.16850.ia1.png\": [16,8,16,{\"cn\":[947456,92240]}],\n\"textures/segment2/segment2_cn.16860.ia1.png\": [16,8,16,{\"cn\":[947456,92256]}],\n\"textures/segment2/segment2_cn.16870.ia1.png\": [16,8,16,{\"cn\":[947456,92272]}],\n\"textures/segment2/segment2_cn.16880.ia1.png\": [16,8,16,{\"cn\":[947456,92288]}],\n\"textures/segment2/segment2_cn.16890.ia1.png\": [16,8,16,{\"cn\":[947456,92304]}],\n\"textures/segment2/segment2_cn.168A0.ia1.png\": [16,8,16,{\"cn\":[947456,92320]}],\n\"textures/segment2/segment2_cn.168B0.ia1.png\": [16,8,16,{\"cn\":[947456,92336]}],\n\"textures/segment2/segment2_cn.168C0.ia1.png\": [16,8,16,{\"cn\":[947456,92352]}],\n\"textures/segment2/segment2_cn.168D0.ia1.png\": [16,8,16,{\"cn\":[947456,92368]}],\n\"textures/segment2/segment2_cn.168E0.ia1.png\": [16,8,16,{\"cn\":[947456,92384]}],\n\"textures/segment2/segment2_cn.168F0.ia1.png\": [16,8,16,{\"cn\":[947456,92400]}],\n\"textures/segment2/segment2_cn.16900.ia1.png\": [16,8,16,{\"cn\":[947456,92416]}],\n\"textures/segment2/segment2_cn.16910.ia1.png\": [16,8,16,{\"cn\":[947456,92432]}],\n\"textures/segment2/segment2_cn.16920.ia1.png\": [16,8,16,{\"cn\":[947456,92448]}],\n\"textures/segment2/segment2_cn.16930.ia1.png\": [16,8,16,{\"cn\":[947456,92464]}],\n\"textures/segment2/segment2_cn.16940.ia1.png\": [16,8,16,{\"cn\":[947456,92480]}],\n\"textures/segment2/segment2_cn.16950.ia1.png\": [16,8,16,{\"cn\":[947456,92496]}],\n\"textures/segment2/segment2_cn.16960.ia1.png\": [16,8,16,{\"cn\":[947456,92512]}],\n\"textures/segment2/segment2_cn.16970.ia1.png\": [16,8,16,{\"cn\":[947456,92528]}],\n\"textures/segment2/segment2_cn.16980.ia1.png\": [16,8,16,{\"cn\":[947456,92544]}],\n\"textures/segment2/segment2_cn.16990.ia1.png\": [16,8,16,{\"cn\":[947456,92560]}],\n\"textures/segment2/segment2_cn.169A0.ia1.png\": [16,8,16,{\"cn\":[947456,92576]}],\n\"textures/segment2/segment2_cn.169B0.ia1.png\": [16,8,16,{\"cn\":[947456,92592]}],\n\"textures/segment2/segment2_cn.169C0.ia1.png\": [16,8,16,{\"cn\":[947456,92608]}],\n\"textures/segment2/segment2_cn.169D0.ia1.png\": [16,8,16,{\"cn\":[947456,92624]}],\n\"textures/segment2/segment2_cn.169E0.ia1.png\": [16,8,16,{\"cn\":[947456,92640]}],\n\"textures/segment2/segment2_cn.169F0.ia1.png\": [16,8,16,{\"cn\":[947456,92656]}],\n\"textures/segment2/segment2_cn.16A00.ia1.png\": [16,8,16,{\"cn\":[947456,92672]}],\n\"textures/segment2/segment2_cn.16A10.ia1.png\": [16,8,16,{\"cn\":[947456,92688]}],\n\"textures/segment2/segment2_cn.16A20.ia1.png\": [16,8,16,{\"cn\":[947456,92704]}],\n\"textures/segment2/segment2_cn.16A30.ia1.png\": [16,8,16,{\"cn\":[947456,92720]}],\n\"textures/segment2/segment2_cn.16A40.ia1.png\": [16,8,16,{\"cn\":[947456,92736]}],\n\"textures/segment2/segment2_cn.16A50.ia1.png\": [16,8,16,{\"cn\":[947456,92752]}],\n\"textures/segment2/segment2_cn.16A60.ia1.png\": [16,8,16,{\"cn\":[947456,92768]}],\n\"textures/segment2/segment2_cn.16A70.ia1.png\": [16,8,16,{\"cn\":[947456,92784]}],\n\"textures/segment2/segment2_cn.16A80.ia1.png\": [16,8,16,{\"cn\":[947456,92800]}],\n\"textures/segment2/segment2_cn.16A90.ia1.png\": [16,8,16,{\"cn\":[947456,92816]}],\n\"textures/segment2/segment2_cn.16AA0.ia1.png\": [16,8,16,{\"cn\":[947456,92832]}],\n\"textures/segment2/segment2_cn.16AB0.ia1.png\": [16,8,16,{\"cn\":[947456,92848]}],\n\"textures/segment2/segment2_cn.16AC0.ia1.png\": [16,8,16,{\"cn\":[947456,92864]}],\n\"textures/segment2/segment2_cn.16AD0.ia1.png\": [16,8,16,{\"cn\":[947456,92880]}],\n\"textures/segment2/segment2_cn.16AE0.ia1.png\": [16,8,16,{\"cn\":[947456,92896]}],\n\"textures/segment2/segment2_cn.16AF0.ia1.png\": [16,8,16,{\"cn\":[947456,92912]}],\n\"textures/segment2/segment2_cn.16B00.ia1.png\": [16,8,16,{\"cn\":[947456,92928]}],\n\"textures/segment2/segment2_cn.16B10.ia1.png\": [16,8,16,{\"cn\":[947456,92944]}],\n\"textures/segment2/segment2_cn.16B20.ia1.png\": [16,8,16,{\"cn\":[947456,92960]}],\n\"textures/segment2/segment2_cn.16B30.ia1.png\": [16,8,16,{\"cn\":[947456,92976]}],\n\"textures/segment2/segment2_cn.16B40.ia1.png\": [16,8,16,{\"cn\":[947456,92992]}],\n\"textures/segment2/segment2_cn.16B50.ia1.png\": [16,8,16,{\"cn\":[947456,93008]}],\n\"textures/segment2/segment2_cn.16B60.ia1.png\": [16,8,16,{\"cn\":[947456,93024]}],\n\"textures/segment2/segment2_cn.16B70.ia1.png\": [16,8,16,{\"cn\":[947456,93040]}],\n\"textures/segment2/segment2_cn.16B80.ia1.png\": [16,8,16,{\"cn\":[947456,93056]}],\n\"textures/segment2/segment2_cn.16B90.ia1.png\": [16,8,16,{\"cn\":[947456,93072]}],\n\"textures/segment2/segment2_cn.16BA0.ia1.png\": [16,8,16,{\"cn\":[947456,93088]}],\n\"textures/segment2/segment2_cn.16BB0.ia1.png\": [16,8,16,{\"cn\":[947456,93104]}],\n\"textures/segment2/segment2_cn.16BC0.ia1.png\": [16,8,16,{\"cn\":[947456,93120]}],\n\"textures/segment2/segment2_cn.16BD0.ia1.png\": [16,8,16,{\"cn\":[947456,93136]}],\n\"textures/segment2/segment2_cn.16BE0.ia1.png\": [16,8,16,{\"cn\":[947456,93152]}],\n\"textures/segment2/segment2_cn.16BF0.ia1.png\": [16,8,16,{\"cn\":[947456,93168]}],\n\"textures/segment2/segment2_cn.16C00.ia1.png\": [16,8,16,{\"cn\":[947456,93184]}],\n\"textures/segment2/segment2_cn.16C10.ia1.png\": [16,8,16,{\"cn\":[947456,93200]}],\n\"textures/segment2/segment2_cn.16C20.ia1.png\": [16,8,16,{\"cn\":[947456,93216]}],\n\"textures/segment2/segment2_cn.16C30.ia1.png\": [16,8,16,{\"cn\":[947456,93232]}],\n\"textures/segment2/segment2_cn.16C40.ia1.png\": [16,8,16,{\"cn\":[947456,93248]}],\n\"textures/segment2/segment2_cn.16C50.ia1.png\": [16,8,16,{\"cn\":[947456,93264]}],\n\"textures/segment2/segment2_cn.16C60.ia1.png\": [16,8,16,{\"cn\":[947456,93280]}],\n\"textures/segment2/segment2_cn.16C70.ia1.png\": [16,8,16,{\"cn\":[947456,93296]}],\n\"textures/segment2/segment2_cn.16C80.ia1.png\": [16,8,16,{\"cn\":[947456,93312]}],\n\"textures/segment2/segment2_cn.16C90.ia1.png\": [16,8,16,{\"cn\":[947456,93328]}],\n\"textures/segment2/segment2_cn.16CA0.ia1.png\": [16,8,16,{\"cn\":[947456,93344]}],\n\"textures/segment2/segment2_cn.16CB0.ia1.png\": [16,8,16,{\"cn\":[947456,93360]}],\n\"textures/segment2/segment2_cn.16CC0.ia1.png\": [16,8,16,{\"cn\":[947456,93376]}],\n\"textures/segment2/segment2_cn.16CD0.ia1.png\": [16,8,16,{\"cn\":[947456,93392]}],\n\"textures/segment2/segment2_cn.16CE0.ia1.png\": [16,8,16,{\"cn\":[947456,93408]}],\n\"textures/segment2/segment2_cn.16CF0.ia1.png\": [16,8,16,{\"cn\":[947456,93424]}],\n\"textures/segment2/segment2_cn.16D00.ia1.png\": [16,8,16,{\"cn\":[947456,93440]}],\n\"textures/segment2/segment2_cn.16D10.ia1.png\": [16,8,16,{\"cn\":[947456,93456]}],\n\"textures/segment2/segment2_cn.16D20.ia1.png\": [16,8,16,{\"cn\":[947456,93472]}],\n\"textures/segment2/segment2_cn.16D30.ia1.png\": [16,8,16,{\"cn\":[947456,93488]}],\n\"textures/segment2/segment2_cn.16D40.ia1.png\": [16,8,16,{\"cn\":[947456,93504]}],\n\"textures/segment2/segment2_cn.16D50.ia1.png\": [16,8,16,{\"cn\":[947456,93520]}],\n\"textures/segment2/segment2_cn.16D60.ia1.png\": [16,8,16,{\"cn\":[947456,93536]}],\n\"textures/segment2/segment2_cn.16D70.ia1.png\": [16,8,16,{\"cn\":[947456,93552]}],\n\"textures/segment2/segment2_cn.16D80.ia1.png\": [16,8,16,{\"cn\":[947456,93568]}],\n\"textures/segment2/segment2_cn.16D90.ia1.png\": [16,8,16,{\"cn\":[947456,93584]}],\n\"textures/segment2/segment2_cn.16DA0.ia1.png\": [16,8,16,{\"cn\":[947456,93600]}],\n\"textures/segment2/segment2_cn.16DB0.ia1.png\": [16,8,16,{\"cn\":[947456,93616]}],\n\"textures/segment2/segment2_cn.16DC0.ia1.png\": [16,8,16,{\"cn\":[947456,93632]}],\n\"textures/segment2/segment2_cn.16DD0.ia1.png\": [16,8,16,{\"cn\":[947456,93648]}],\n\"textures/segment2/segment2_cn.16DE0.ia1.png\": [16,8,16,{\"cn\":[947456,93664]}],\n\"textures/segment2/segment2_cn.16DF0.ia1.png\": [16,8,16,{\"cn\":[947456,93680]}],\n\"textures/segment2/segment2_cn.16E00.ia1.png\": [16,8,16,{\"cn\":[947456,93696]}],\n\"textures/segment2/segment2_cn.16E10.ia1.png\": [16,8,16,{\"cn\":[947456,93712]}],\n\"textures/segment2/segment2_cn.16E20.ia1.png\": [16,8,16,{\"cn\":[947456,93728]}],\n\"textures/segment2/segment2_cn.16E30.ia1.png\": [16,8,16,{\"cn\":[947456,93744]}],\n\"textures/segment2/segment2_cn.16E40.ia1.png\": [16,8,16,{\"cn\":[947456,93760]}],\n\"textures/segment2/segment2_cn.16E50.ia1.png\": [16,8,16,{\"cn\":[947456,93776]}],\n\"textures/segment2/segment2_cn.16E60.ia1.png\": [16,8,16,{\"cn\":[947456,93792]}],\n\"textures/segment2/segment2_cn.16E70.ia1.png\": [16,8,16,{\"cn\":[947456,93808]}],\n\"textures/segment2/segment2_cn.16E80.ia1.png\": [16,8,16,{\"cn\":[947456,93824]}],\n\"textures/segment2/segment2_cn.16E90.ia1.png\": [16,8,16,{\"cn\":[947456,93840]}],\n\"textures/segment2/segment2_cn.16EA0.ia1.png\": [16,8,16,{\"cn\":[947456,93856]}],\n\"textures/segment2/segment2_cn.16EB0.ia1.png\": [16,8,16,{\"cn\":[947456,93872]}],\n\"textures/segment2/segment2_cn.16EC0.ia1.png\": [16,8,16,{\"cn\":[947456,93888]}],\n\"textures/segment2/segment2_cn.16ED0.ia1.png\": [16,8,16,{\"cn\":[947456,93904]}],\n\"textures/segment2/segment2_cn.16EE0.ia1.png\": [16,8,16,{\"cn\":[947456,93920]}],\n\"textures/segment2/segment2_cn.16EF0.ia1.png\": [16,8,16,{\"cn\":[947456,93936]}],\n\"textures/segment2/segment2_cn.16F00.ia1.png\": [16,8,16,{\"cn\":[947456,93952]}],\n\"textures/segment2/segment2_cn.16F10.ia1.png\": [16,8,16,{\"cn\":[947456,93968]}],\n\"textures/segment2/segment2_cn.16F20.ia1.png\": [16,8,16,{\"cn\":[947456,93984]}],\n\"textures/segment2/segment2_cn.16F30.ia1.png\": [16,8,16,{\"cn\":[947456,94000]}],\n\"textures/segment2/segment2_cn.16F40.ia1.png\": [16,8,16,{\"cn\":[947456,94016]}],\n\"textures/segment2/segment2_cn.16F50.ia1.png\": [16,8,16,{\"cn\":[947456,94032]}],\n\"textures/segment2/segment2_cn.16F60.ia1.png\": [16,8,16,{\"cn\":[947456,94048]}],\n\"textures/segment2/segment2_cn.16F70.ia1.png\": [16,8,16,{\"cn\":[947456,94064]}],\n\"textures/segment2/segment2_cn.16F80.ia1.png\": [16,8,16,{\"cn\":[947456,94080]}],\n\"textures/segment2/segment2_cn.16F90.ia1.png\": [16,8,16,{\"cn\":[947456,94096]}],\n\"textures/segment2/segment2_cn.16FA0.ia1.png\": [16,8,16,{\"cn\":[947456,94112]}],\n\"textures/segment2/segment2_cn.16FB0.ia1.png\": [16,8,16,{\"cn\":[947456,94128]}],\n\"textures/segment2/segment2_cn.16FC0.ia1.png\": [16,8,16,{\"cn\":[947456,94144]}],\n\"textures/segment2/segment2_cn.16FD0.ia1.png\": [16,8,16,{\"cn\":[947456,94160]}],\n\"textures/segment2/segment2_cn.16FE0.ia1.png\": [16,8,16,{\"cn\":[947456,94176]}],\n\"textures/segment2/segment2_cn.16FF0.ia1.png\": [16,8,16,{\"cn\":[947456,94192]}],\n\"textures/segment2/segment2_cn.17000.ia1.png\": [16,8,16,{\"cn\":[947456,94208]}],\n\"textures/segment2/segment2_cn.17010.ia1.png\": [16,8,16,{\"cn\":[947456,94224]}],\n\"textures/segment2/segment2_cn.17020.ia1.png\": [16,8,16,{\"cn\":[947456,94240]}],\n\"textures/segment2/segment2_cn.17030.ia1.png\": [16,8,16,{\"cn\":[947456,94256]}],\n\"textures/segment2/segment2_cn.17040.ia1.png\": [16,8,16,{\"cn\":[947456,94272]}],\n\"textures/segment2/segment2_cn.17050.ia1.png\": [16,8,16,{\"cn\":[947456,94288]}],\n\"textures/segment2/segment2_cn.17060.ia1.png\": [16,8,16,{\"cn\":[947456,94304]}],\n\"textures/segment2/segment2_cn.17070.ia1.png\": [16,8,16,{\"cn\":[947456,94320]}],\n\"textures/segment2/segment2_cn.17080.ia1.png\": [16,8,16,{\"cn\":[947456,94336]}],\n\"textures/segment2/segment2_cn.17090.ia1.png\": [16,8,16,{\"cn\":[947456,94352]}],\n\"textures/segment2/segment2_cn.170A0.ia1.png\": [16,8,16,{\"cn\":[947456,94368]}],\n\"textures/segment2/segment2_cn.170B0.ia1.png\": [16,8,16,{\"cn\":[947456,94384]}],\n\"textures/segment2/segment2_cn.170C0.ia1.png\": [16,8,16,{\"cn\":[947456,94400]}],\n\"textures/segment2/segment2_cn.170D0.ia1.png\": [16,8,16,{\"cn\":[947456,94416]}],\n\"textures/segment2/segment2_cn.170E0.ia1.png\": [16,8,16,{\"cn\":[947456,94432]}],\n\"textures/segment2/segment2_cn.170F0.ia1.png\": [16,8,16,{\"cn\":[947456,94448]}],\n\"textures/segment2/segment2_cn.17100.ia1.png\": [16,8,16,{\"cn\":[947456,94464]}],\n\"textures/segment2/segment2_cn.17110.ia1.png\": [16,8,16,{\"cn\":[947456,94480]}],\n\"textures/segment2/segment2_cn.17120.ia1.png\": [16,8,16,{\"cn\":[947456,94496]}],\n\"textures/segment2/segment2_cn.17130.ia1.png\": [16,8,16,{\"cn\":[947456,94512]}],\n\"textures/segment2/segment2_cn.17140.ia1.png\": [16,8,16,{\"cn\":[947456,94528]}],\n\"textures/segment2/segment2_cn.17150.ia1.png\": [16,8,16,{\"cn\":[947456,94544]}],\n\"textures/segment2/segment2_cn.17160.ia1.png\": [16,8,16,{\"cn\":[947456,94560]}],\n\"textures/segment2/segment2_cn.17170.ia1.png\": [16,8,16,{\"cn\":[947456,94576]}],\n\"textures/segment2/segment2_cn.17180.ia1.png\": [16,8,16,{\"cn\":[947456,94592]}],\n\"textures/segment2/segment2_cn.17190.ia1.png\": [16,8,16,{\"cn\":[947456,94608]}],\n\"textures/segment2/segment2_cn.171A0.ia1.png\": [16,8,16,{\"cn\":[947456,94624]}],\n\"textures/segment2/segment2_cn.171B0.ia1.png\": [16,8,16,{\"cn\":[947456,94640]}],\n\"textures/segment2/segment2_cn.171C0.ia1.png\": [16,8,16,{\"cn\":[947456,94656]}],\n\"textures/segment2/segment2_cn.171D0.ia1.png\": [16,8,16,{\"cn\":[947456,94672]}],\n\"textures/segment2/segment2_cn.171E0.ia1.png\": [16,8,16,{\"cn\":[947456,94688]}],\n\"textures/segment2/segment2_cn.171F0.ia1.png\": [16,8,16,{\"cn\":[947456,94704]}],\n\"textures/segment2/segment2_cn.17200.ia1.png\": [16,8,16,{\"cn\":[947456,94720]}],\n\"textures/segment2/segment2_cn.17210.ia1.png\": [16,8,16,{\"cn\":[947456,94736]}],\n\"textures/segment2/segment2_cn.17220.ia1.png\": [16,8,16,{\"cn\":[947456,94752]}],\n\"textures/segment2/segment2_cn.17230.ia1.png\": [16,8,16,{\"cn\":[947456,94768]}],\n\"textures/segment2/segment2_cn.17240.ia1.png\": [16,8,16,{\"cn\":[947456,94784]}],\n\"textures/segment2/segment2_cn.17250.ia1.png\": [16,8,16,{\"cn\":[947456,94800]}],\n\"textures/segment2/segment2_cn.17260.ia1.png\": [16,8,16,{\"cn\":[947456,94816]}],\n\"textures/segment2/segment2_cn.17270.ia1.png\": [16,8,16,{\"cn\":[947456,94832]}],\n\"textures/segment2/segment2_cn.17280.ia1.png\": [16,8,16,{\"cn\":[947456,94848]}],\n\"textures/segment2/segment2_cn.17290.ia1.png\": [16,8,16,{\"cn\":[947456,94864]}],\n\"textures/segment2/segment2_cn.172A0.ia1.png\": [16,8,16,{\"cn\":[947456,94880]}],\n\"textures/segment2/segment2_cn.172B0.ia1.png\": [16,8,16,{\"cn\":[947456,94896]}],\n\"textures/segment2/segment2_cn.172C0.ia1.png\": [16,8,16,{\"cn\":[947456,94912]}],\n\"textures/segment2/segment2_cn.172D0.ia1.png\": [16,8,16,{\"cn\":[947456,94928]}],\n\"textures/segment2/segment2_cn.172E0.ia1.png\": [16,8,16,{\"cn\":[947456,94944]}],\n\"textures/segment2/segment2_cn.172F0.ia1.png\": [16,8,16,{\"cn\":[947456,94960]}],\n\"textures/segment2/segment2_cn.17300.ia1.png\": [16,8,16,{\"cn\":[947456,94976]}],\n\"textures/segment2/segment2_cn.17310.ia1.png\": [16,8,16,{\"cn\":[947456,94992]}],\n\"textures/segment2/segment2_cn.17320.ia1.png\": [16,8,16,{\"cn\":[947456,95008]}],\n\"textures/segment2/segment2_cn.17330.ia1.png\": [16,8,16,{\"cn\":[947456,95024]}],\n\"textures/segment2/segment2_cn.17340.ia1.png\": [16,8,16,{\"cn\":[947456,95040]}],\n\"textures/segment2/segment2_cn.17350.ia1.png\": [16,8,16,{\"cn\":[947456,95056]}],\n\"textures/segment2/segment2_cn.17360.ia1.png\": [16,8,16,{\"cn\":[947456,95072]}],\n\"textures/segment2/segment2_cn.17370.ia1.png\": [16,8,16,{\"cn\":[947456,95088]}],\n\"textures/segment2/segment2_cn.17380.ia1.png\": [16,8,16,{\"cn\":[947456,95104]}],\n\"textures/segment2/segment2_cn.17390.ia1.png\": [16,8,16,{\"cn\":[947456,95120]}],\n\"textures/segment2/segment2_cn.173A0.ia1.png\": [16,8,16,{\"cn\":[947456,95136]}],\n\"textures/segment2/segment2_cn.173B0.ia1.png\": [16,8,16,{\"cn\":[947456,95152]}],\n\"textures/segment2/segment2_cn.173C0.ia1.png\": [16,8,16,{\"cn\":[947456,95168]}],\n\"textures/segment2/segment2_cn.173D0.ia1.png\": [16,8,16,{\"cn\":[947456,95184]}],\n\"textures/segment2/segment2_cn.173E0.ia1.png\": [16,8,16,{\"cn\":[947456,95200]}],\n\"textures/segment2/segment2_cn.173F0.ia1.png\": [16,8,16,{\"cn\":[947456,95216]}],\n\"textures/segment2/segment2_cn.17400.ia1.png\": [16,8,16,{\"cn\":[947456,95232]}],\n\"textures/segment2/segment2_cn.17410.ia1.png\": [16,8,16,{\"cn\":[947456,95248]}],\n\"textures/segment2/segment2_cn.17420.ia1.png\": [16,8,16,{\"cn\":[947456,95264]}],\n\"textures/segment2/segment2_cn.17430.ia1.png\": [16,8,16,{\"cn\":[947456,95280]}],\n\"textures/segment2/segment2_cn.17440.ia1.png\": [16,8,16,{\"cn\":[947456,95296]}],\n\"textures/segment2/segment2_cn.17450.ia1.png\": [16,8,16,{\"cn\":[947456,95312]}],\n\"textures/segment2/segment2_cn.17460.ia1.png\": [16,8,16,{\"cn\":[947456,95328]}],\n\"textures/segment2/segment2_cn.17470.ia1.png\": [16,8,16,{\"cn\":[947456,95344]}],\n\"textures/segment2/segment2_cn.17480.ia1.png\": [16,8,16,{\"cn\":[947456,95360]}],\n\"textures/segment2/segment2_cn.17490.ia1.png\": [16,8,16,{\"cn\":[947456,95376]}],\n\"textures/segment2/segment2_cn.174A0.ia1.png\": [16,8,16,{\"cn\":[947456,95392]}],\n\"textures/segment2/segment2_cn.174B0.ia1.png\": [16,8,16,{\"cn\":[947456,95408]}],\n\"textures/segment2/segment2_cn.174C0.ia1.png\": [16,8,16,{\"cn\":[947456,95424]}],\n\"textures/segment2/segment2_cn.174D0.ia1.png\": [16,8,16,{\"cn\":[947456,95440]}],\n\"textures/segment2/segment2_cn.174E0.ia1.png\": [16,8,16,{\"cn\":[947456,95456]}],\n\"textures/segment2/segment2_cn.174F0.ia1.png\": [16,8,16,{\"cn\":[947456,95472]}],\n\"textures/segment2/segment2_cn.17500.ia1.png\": [16,8,16,{\"cn\":[947456,95488]}],\n\"textures/segment2/segment2_cn.17510.ia1.png\": [16,8,16,{\"cn\":[947456,95504]}],\n\"textures/segment2/segment2_cn.17520.ia1.png\": [16,8,16,{\"cn\":[947456,95520]}],\n\"textures/segment2/segment2_cn.17530.ia1.png\": [16,8,16,{\"cn\":[947456,95536]}],\n\"textures/segment2/segment2_cn.17540.ia1.png\": [16,8,16,{\"cn\":[947456,95552]}],\n\"textures/segment2/segment2_cn.17550.ia1.png\": [16,8,16,{\"cn\":[947456,95568]}],\n\"textures/segment2/segment2_cn.17560.ia1.png\": [16,8,16,{\"cn\":[947456,95584]}],\n\"textures/segment2/segment2_cn.17570.ia1.png\": [16,8,16,{\"cn\":[947456,95600]}],\n\"textures/segment2/segment2_cn.17580.ia1.png\": [16,8,16,{\"cn\":[947456,95616]}],\n\"textures/segment2/segment2_cn.17590.ia1.png\": [16,8,16,{\"cn\":[947456,95632]}],\n\"textures/segment2/segment2_cn.175A0.ia1.png\": [16,8,16,{\"cn\":[947456,95648]}],\n\"textures/segment2/segment2_cn.175B0.ia1.png\": [16,8,16,{\"cn\":[947456,95664]}],\n\"textures/segment2/segment2_cn.175C0.ia1.png\": [16,8,16,{\"cn\":[947456,95680]}],\n\"textures/segment2/segment2_cn.175D0.ia1.png\": [16,8,16,{\"cn\":[947456,95696]}],\n\"textures/segment2/segment2_cn.175E0.ia1.png\": [16,8,16,{\"cn\":[947456,95712]}],\n\"textures/segment2/segment2_cn.175F0.ia1.png\": [16,8,16,{\"cn\":[947456,95728]}],\n\"textures/segment2/segment2_cn.17600.ia1.png\": [16,8,16,{\"cn\":[947456,95744]}],\n\"textures/segment2/segment2_cn.17610.ia1.png\": [16,8,16,{\"cn\":[947456,95760]}],\n\"textures/segment2/segment2_cn.17620.ia1.png\": [16,8,16,{\"cn\":[947456,95776]}],\n\"textures/segment2/segment2_cn.17630.ia1.png\": [16,8,16,{\"cn\":[947456,95792]}],\n\"textures/segment2/segment2_cn.17640.ia1.png\": [16,8,16,{\"cn\":[947456,95808]}],\n\"textures/segment2/segment2_cn.17650.ia1.png\": [16,8,16,{\"cn\":[947456,95824]}],\n\"textures/segment2/segment2_cn.17660.ia1.png\": [16,8,16,{\"cn\":[947456,95840]}],\n\"textures/segment2/segment2_cn.17670.ia1.png\": [16,8,16,{\"cn\":[947456,95856]}],\n\"textures/segment2/segment2_cn.17680.ia1.png\": [16,8,16,{\"cn\":[947456,95872]}],\n\"textures/segment2/segment2_cn.17690.ia1.png\": [16,8,16,{\"cn\":[947456,95888]}],\n\"textures/segment2/segment2_cn.176A0.ia1.png\": [16,8,16,{\"cn\":[947456,95904]}],\n\"textures/segment2/segment2_cn.176B0.ia1.png\": [16,8,16,{\"cn\":[947456,95920]}],\n\"textures/segment2/segment2_cn.176C0.ia1.png\": [16,8,16,{\"cn\":[947456,95936]}],\n\"textures/segment2/segment2_cn.176D0.ia1.png\": [16,8,16,{\"cn\":[947456,95952]}],\n\"textures/segment2/segment2_cn.176E0.ia1.png\": [16,8,16,{\"cn\":[947456,95968]}],\n\"textures/segment2/segment2_cn.176F0.ia1.png\": [16,8,16,{\"cn\":[947456,95984]}],\n\"textures/segment2/segment2_cn.17700.ia1.png\": [16,8,16,{\"cn\":[947456,96000]}],\n\"textures/segment2/segment2_cn.17710.ia1.png\": [16,8,16,{\"cn\":[947456,96016]}],\n\"textures/segment2/segment2_cn.17720.ia1.png\": [16,8,16,{\"cn\":[947456,96032]}],\n\"textures/segment2/segment2_cn.17730.ia1.png\": [16,8,16,{\"cn\":[947456,96048]}],\n\"textures/segment2/segment2_cn.17740.ia1.png\": [16,8,16,{\"cn\":[947456,96064]}],\n\"textures/segment2/segment2_cn.17750.ia1.png\": [16,8,16,{\"cn\":[947456,96080]}],\n\"textures/segment2/segment2_cn.17760.ia1.png\": [16,8,16,{\"cn\":[947456,96096]}],\n\"textures/segment2/segment2_cn.17770.ia1.png\": [16,8,16,{\"cn\":[947456,96112]}],\n\"textures/segment2/segment2_cn.17780.ia1.png\": [16,8,16,{\"cn\":[947456,96128]}],\n\"textures/segment2/segment2_cn.17790.ia1.png\": [16,8,16,{\"cn\":[947456,96144]}],\n\"textures/segment2/segment2_cn.177A0.ia1.png\": [16,8,16,{\"cn\":[947456,96160]}],\n\"textures/segment2/segment2_cn.177B0.ia1.png\": [16,8,16,{\"cn\":[947456,96176]}],\n\"textures/segment2/segment2_cn.177C0.ia1.png\": [16,8,16,{\"cn\":[947456,96192]}],\n\"textures/segment2/segment2_cn.177D0.ia1.png\": [16,8,16,{\"cn\":[947456,96208]}],\n\"textures/segment2/segment2_cn.177E0.ia1.png\": [16,8,16,{\"cn\":[947456,96224]}],\n\"textures/segment2/segment2_cn.177F0.ia1.png\": [16,8,16,{\"cn\":[947456,96240]}],\n\"textures/segment2/segment2_cn.17800.ia1.png\": [16,8,16,{\"cn\":[947456,96256]}],\n\"textures/segment2/segment2_cn.17810.ia1.png\": [16,8,16,{\"cn\":[947456,96272]}],\n\"textures/segment2/segment2_cn.17820.ia1.png\": [16,8,16,{\"cn\":[947456,96288]}],\n\"textures/segment2/segment2_cn.17830.ia1.png\": [16,8,16,{\"cn\":[947456,96304]}],\n\"textures/segment2/segment2_cn.17840.ia1.png\": [16,8,16,{\"cn\":[947456,96320]}],\n\"textures/segment2/segment2_cn.17850.ia1.png\": [16,8,16,{\"cn\":[947456,96336]}],\n\"textures/segment2/segment2_cn.17860.ia1.png\": [16,8,16,{\"cn\":[947456,96352]}],\n\"textures/segment2/segment2_cn.17870.ia1.png\": [16,8,16,{\"cn\":[947456,96368]}],\n\"textures/segment2/segment2_cn.17880.ia1.png\": [16,8,16,{\"cn\":[947456,96384]}],\n\"textures/segment2/segment2_cn.17890.ia1.png\": [16,8,16,{\"cn\":[947456,96400]}],\n\"textures/segment2/segment2_cn.178A0.ia1.png\": [16,8,16,{\"cn\":[947456,96416]}],\n\"textures/segment2/segment2_cn.178B0.ia1.png\": [16,8,16,{\"cn\":[947456,96432]}],\n\"textures/segment2/segment2_cn.178C0.ia1.png\": [16,8,16,{\"cn\":[947456,96448]}],\n\"textures/segment2/segment2_cn.178D0.ia1.png\": [16,8,16,{\"cn\":[947456,96464]}],\n\"textures/segment2/segment2_cn.178E0.ia1.png\": [16,8,16,{\"cn\":[947456,96480]}],\n\"textures/segment2/segment2_cn.178F0.ia1.png\": [16,8,16,{\"cn\":[947456,96496]}],\n\"textures/segment2/segment2_cn.17900.ia1.png\": [16,8,16,{\"cn\":[947456,96512]}],\n\"textures/segment2/segment2_cn.17910.ia1.png\": [16,8,16,{\"cn\":[947456,96528]}],\n\"textures/segment2/segment2_cn.17920.ia1.png\": [16,8,16,{\"cn\":[947456,96544]}],\n\"textures/segment2/segment2_cn.17930.ia1.png\": [16,8,16,{\"cn\":[947456,96560]}],\n\"textures/segment2/segment2_cn.17940.ia1.png\": [16,8,16,{\"cn\":[947456,96576]}],\n\"textures/segment2/segment2_cn.17950.ia1.png\": [16,8,16,{\"cn\":[947456,96592]}],\n\"textures/segment2/segment2_cn.17960.ia1.png\": [16,8,16,{\"cn\":[947456,96608]}],\n\"textures/segment2/segment2_cn.17970.ia1.png\": [16,8,16,{\"cn\":[947456,96624]}],\n\"textures/segment2/segment2_cn.17980.ia1.png\": [16,8,16,{\"cn\":[947456,96640]}],\n\"textures/segment2/segment2_cn.17990.ia1.png\": [16,8,16,{\"cn\":[947456,96656]}],\n\"textures/segment2/segment2_cn.179A0.ia1.png\": [16,8,16,{\"cn\":[947456,96672]}],\n\"textures/segment2/segment2_cn.179B0.ia1.png\": [16,8,16,{\"cn\":[947456,96688]}],\n\"textures/segment2/segment2_cn.179C0.ia1.png\": [16,8,16,{\"cn\":[947456,96704]}],\n\"textures/segment2/segment2_cn.179D0.ia1.png\": [16,8,16,{\"cn\":[947456,96720]}],\n\"textures/segment2/segment2_cn.179E0.ia1.png\": [16,8,16,{\"cn\":[947456,96736]}],\n\"textures/segment2/segment2_cn.179F0.ia1.png\": [16,8,16,{\"cn\":[947456,96752]}],\n\"textures/segment2/segment2_cn.17A00.ia1.png\": [16,8,16,{\"cn\":[947456,96768]}],\n\"textures/segment2/segment2_cn.17A10.ia1.png\": [16,8,16,{\"cn\":[947456,96784]}],\n\"textures/segment2/segment2_cn.17A20.ia1.png\": [16,8,16,{\"cn\":[947456,96800]}],\n\"textures/segment2/segment2_cn.17A30.ia1.png\": [16,8,16,{\"cn\":[947456,96816]}],\n\"textures/segment2/segment2_cn.17A40.ia1.png\": [16,8,16,{\"cn\":[947456,96832]}],\n\"textures/segment2/segment2_cn.17A50.ia1.png\": [16,8,16,{\"cn\":[947456,96848]}],\n\"textures/segment2/segment2_cn.17A60.ia1.png\": [16,8,16,{\"cn\":[947456,96864]}],\n\"textures/segment2/segment2_cn.17A70.ia1.png\": [16,8,16,{\"cn\":[947456,96880]}],\n\"textures/segment2/segment2_cn.17A80.ia1.png\": [16,8,16,{\"cn\":[947456,96896]}],\n\"textures/segment2/segment2_cn.17A90.ia1.png\": [16,8,16,{\"cn\":[947456,96912]}],\n\"textures/segment2/segment2_cn.17AA0.ia1.png\": [16,8,16,{\"cn\":[947456,96928]}],\n\"textures/segment2/segment2_cn.17AB0.ia1.png\": [16,8,16,{\"cn\":[947456,96944]}],\n\"textures/segment2/segment2_cn.17AC0.ia1.png\": [16,8,16,{\"cn\":[947456,96960]}],\n\"textures/segment2/segment2_cn.17AD0.ia1.png\": [16,8,16,{\"cn\":[947456,96976]}],\n\"textures/segment2/segment2_cn.17AE0.ia1.png\": [16,8,16,{\"cn\":[947456,96992]}],\n\"textures/segment2/segment2_cn.17AF0.ia1.png\": [16,8,16,{\"cn\":[947456,97008]}],\n\"textures/segment2/segment2_cn.17B00.ia1.png\": [16,8,16,{\"cn\":[947456,97024]}],\n\"textures/segment2/segment2_cn.17B10.ia1.png\": [16,8,16,{\"cn\":[947456,97040]}],\n\"textures/segment2/segment2_cn.17B20.ia1.png\": [16,8,16,{\"cn\":[947456,97056]}],\n\"textures/segment2/segment2_cn.17B30.ia1.png\": [16,8,16,{\"cn\":[947456,97072]}],\n\"textures/segment2/segment2_cn.17B40.ia1.png\": [16,8,16,{\"cn\":[947456,97088]}],\n\"textures/segment2/segment2_cn.17B50.ia1.png\": [16,8,16,{\"cn\":[947456,97104]}],\n\"textures/segment2/segment2_cn.17B60.ia1.png\": [16,8,16,{\"cn\":[947456,97120]}],\n\"textures/segment2/segment2_cn.17B70.ia1.png\": [16,8,16,{\"cn\":[947456,97136]}],\n\"textures/segment2/segment2_cn.17B80.ia1.png\": [16,8,16,{\"cn\":[947456,97152]}],\n\"textures/segment2/segment2_cn.17B90.ia1.png\": [16,8,16,{\"cn\":[947456,97168]}],\n\"textures/segment2/segment2_cn.17BA0.ia1.png\": [16,8,16,{\"cn\":[947456,97184]}],\n\"textures/segment2/segment2_cn.17BB0.ia1.png\": [16,8,16,{\"cn\":[947456,97200]}],\n\"textures/segment2/segment2_cn.17BC0.ia1.png\": [16,8,16,{\"cn\":[947456,97216]}],\n\"textures/segment2/segment2_cn.17BD0.ia1.png\": [16,8,16,{\"cn\":[947456,97232]}],\n\"textures/segment2/segment2_cn.17BE0.ia1.png\": [16,8,16,{\"cn\":[947456,97248]}],\n\"textures/segment2/segment2_cn.17BF0.ia1.png\": [16,8,16,{\"cn\":[947456,97264]}],\n\"textures/segment2/segment2_cn.17C00.ia1.png\": [16,8,16,{\"cn\":[947456,97280]}],\n\"textures/segment2/segment2_cn.17C10.ia1.png\": [16,8,16,{\"cn\":[947456,97296]}],\n\"textures/segment2/segment2_cn.17C20.ia1.png\": [16,8,16,{\"cn\":[947456,97312]}],\n\"textures/segment2/segment2_cn.17C30.ia1.png\": [16,8,16,{\"cn\":[947456,97328]}],\n\"textures/segment2/segment2_cn.17C40.ia1.png\": [16,8,16,{\"cn\":[947456,97344]}],\n\"textures/segment2/segment2_cn.17C50.ia1.png\": [16,8,16,{\"cn\":[947456,97360]}],\n\"textures/segment2/segment2_cn.17C60.ia1.png\": [16,8,16,{\"cn\":[947456,97376]}],\n\"textures/segment2/segment2_cn.17C70.ia1.png\": [16,8,16,{\"cn\":[947456,97392]}],\n\"textures/segment2/segment2_cn.17C80.ia1.png\": [16,8,16,{\"cn\":[947456,97408]}],\n\"textures/segment2/segment2_cn.17C90.ia1.png\": [16,8,16,{\"cn\":[947456,97424]}],\n\"textures/segment2/segment2_cn.17CA0.ia1.png\": [16,8,16,{\"cn\":[947456,97440]}],\n\"textures/segment2/segment2_cn.17CB0.ia1.png\": [16,8,16,{\"cn\":[947456,97456]}],\n\"textures/segment2/segment2_cn.17CC0.ia1.png\": [16,8,16,{\"cn\":[947456,97472]}],\n\"textures/segment2/segment2_cn.17CD0.ia1.png\": [16,8,16,{\"cn\":[947456,97488]}],\n\"textures/segment2/segment2_cn.17CE0.ia1.png\": [16,8,16,{\"cn\":[947456,97504]}],\n\"textures/segment2/segment2_cn.17CF0.ia1.png\": [16,8,16,{\"cn\":[947456,97520]}],\n\"textures/segment2/segment2_cn.17D00.ia1.png\": [16,8,16,{\"cn\":[947456,97536]}],\n\"textures/segment2/segment2_cn.17D10.ia1.png\": [16,8,16,{\"cn\":[947456,97552]}],\n\"textures/segment2/segment2_cn.17D20.ia1.png\": [16,8,16,{\"cn\":[947456,97568]}],\n\"textures/segment2/segment2_cn.17D30.ia1.png\": [16,8,16,{\"cn\":[947456,97584]}],\n\"textures/segment2/segment2_cn.17D40.ia1.png\": [16,8,16,{\"cn\":[947456,97600]}],\n\"textures/segment2/segment2_cn.17D50.ia1.png\": [16,8,16,{\"cn\":[947456,97616]}],\n\"textures/segment2/segment2_cn.17D60.ia1.png\": [16,8,16,{\"cn\":[947456,97632]}],\n\"textures/segment2/segment2_cn.17D70.ia1.png\": [16,8,16,{\"cn\":[947456,97648]}],\n\"textures/segment2/segment2_cn.17D80.ia1.png\": [16,8,16,{\"cn\":[947456,97664]}],\n\"textures/segment2/segment2_cn.17D90.ia1.png\": [16,8,16,{\"cn\":[947456,97680]}],\n\"textures/segment2/segment2_cn.17DA0.ia1.png\": [16,8,16,{\"cn\":[947456,97696]}],\n\"textures/segment2/segment2_cn.17DB0.ia1.png\": [16,8,16,{\"cn\":[947456,97712]}],\n\"textures/segment2/segment2_cn.17DC0.ia1.png\": [16,8,16,{\"cn\":[947456,97728]}],\n\"textures/segment2/segment2_cn.17DD0.ia1.png\": [16,8,16,{\"cn\":[947456,97744]}],\n\"textures/segment2/segment2_cn.17DE0.ia1.png\": [16,8,16,{\"cn\":[947456,97760]}],\n\"textures/segment2/segment2_cn.17DF0.ia1.png\": [16,8,16,{\"cn\":[947456,97776]}],\n\"textures/segment2/segment2_cn.17E00.ia1.png\": [16,8,16,{\"cn\":[947456,97792]}],\n\"textures/segment2/segment2_cn.17E10.ia1.png\": [16,8,16,{\"cn\":[947456,97808]}],\n\"textures/segment2/segment2_cn.17E20.ia1.png\": [16,8,16,{\"cn\":[947456,97824]}],\n\"textures/segment2/segment2_cn.17E30.ia1.png\": [16,8,16,{\"cn\":[947456,97840]}],\n\"textures/segment2/segment2_cn.17E40.ia1.png\": [16,8,16,{\"cn\":[947456,97856]}],\n\"textures/segment2/segment2_cn.17E50.ia1.png\": [16,8,16,{\"cn\":[947456,97872]}],\n\"textures/segment2/segment2_cn.17E60.ia1.png\": [16,8,16,{\"cn\":[947456,97888]}],\n\"textures/segment2/segment2_cn.17E70.ia1.png\": [16,8,16,{\"cn\":[947456,97904]}],\n\"textures/segment2/segment2_cn.17E80.ia1.png\": [16,8,16,{\"cn\":[947456,97920]}],\n\"textures/segment2/segment2_cn.17E90.ia1.png\": [16,8,16,{\"cn\":[947456,97936]}],\n\"textures/segment2/segment2_cn.17EA0.ia1.png\": [16,8,16,{\"cn\":[947456,97952]}],\n\"textures/segment2/segment2_cn.17EB0.ia1.png\": [16,8,16,{\"cn\":[947456,97968]}],\n\"textures/segment2/segment2_cn.17EC0.ia1.png\": [16,8,16,{\"cn\":[947456,97984]}],\n\"textures/segment2/segment2_cn.17ED0.ia1.png\": [16,8,16,{\"cn\":[947456,98000]}],\n\"textures/segment2/segment2_cn.17EE0.ia1.png\": [16,8,16,{\"cn\":[947456,98016]}],\n\"textures/segment2/segment2_cn.17EF0.ia1.png\": [16,8,16,{\"cn\":[947456,98032]}],\n\"textures/segment2/segment2_cn.17F00.ia1.png\": [16,8,16,{\"cn\":[947456,98048]}],\n\"textures/segment2/segment2_cn.17F10.ia1.png\": [16,8,16,{\"cn\":[947456,98064]}],\n\"textures/segment2/segment2_cn.17F20.ia1.png\": [16,8,16,{\"cn\":[947456,98080]}],\n\"textures/segment2/segment2_cn.17F30.ia1.png\": [16,8,16,{\"cn\":[947456,98096]}],\n\"textures/segment2/segment2_cn.17F40.ia1.png\": [16,8,16,{\"cn\":[947456,98112]}],\n\"textures/segment2/segment2_cn.17F50.ia1.png\": [16,8,16,{\"cn\":[947456,98128]}],\n\"textures/segment2/segment2_cn.17F60.ia1.png\": [16,8,16,{\"cn\":[947456,98144]}],\n\"textures/segment2/segment2_cn.17F70.ia1.png\": [16,8,16,{\"cn\":[947456,98160]}],\n\"textures/segment2/segment2_cn.17F80.ia1.png\": [16,8,16,{\"cn\":[947456,98176]}],\n\"textures/segment2/segment2_cn.17F90.ia1.png\": [16,8,16,{\"cn\":[947456,98192]}],\n\"textures/segment2/segment2_cn.17FA0.ia1.png\": [16,8,16,{\"cn\":[947456,98208]}],\n\"textures/segment2/segment2_cn.17FB0.ia1.png\": [16,8,16,{\"cn\":[947456,98224]}],\n\"textures/segment2/segment2_cn.17FC0.ia1.png\": [16,8,16,{\"cn\":[947456,98240]}],\n\"textures/segment2/segment2_cn.17FD0.ia1.png\": [16,8,16,{\"cn\":[947456,98256]}],\n\"textures/segment2/segment2_cn.17FE0.ia1.png\": [16,8,16,{\"cn\":[947456,98272]}],\n\"textures/segment2/segment2_cn.17FF0.ia1.png\": [16,8,16,{\"cn\":[947456,98288]}],\n\"textures/segment2/segment2_cn.18000.ia1.png\": [16,8,16,{\"cn\":[947456,98304]}],\n\"textures/segment2/segment2_cn.18010.ia1.png\": [16,8,16,{\"cn\":[947456,98320]}],\n\"textures/segment2/segment2_cn.18020.ia1.png\": [16,8,16,{\"cn\":[947456,98336]}],\n\"textures/segment2/segment2_cn.18030.ia1.png\": [16,8,16,{\"cn\":[947456,98352]}],\n\"textures/segment2/segment2_cn.18040.ia1.png\": [16,8,16,{\"cn\":[947456,98368]}],\n\"textures/segment2/segment2_cn.18050.ia1.png\": [16,8,16,{\"cn\":[947456,98384]}],\n\"textures/segment2/segment2_cn.18060.ia1.png\": [16,8,16,{\"cn\":[947456,98400]}],\n\"textures/segment2/segment2_cn.18070.ia1.png\": [16,8,16,{\"cn\":[947456,98416]}],\n\"textures/segment2/segment2_cn.18080.ia1.png\": [16,8,16,{\"cn\":[947456,98432]}],\n\"textures/segment2/segment2_cn.18090.ia1.png\": [16,8,16,{\"cn\":[947456,98448]}],\n\"textures/segment2/segment2_cn.180A0.ia1.png\": [16,8,16,{\"cn\":[947456,98464]}],\n\"textures/segment2/segment2_cn.180B0.ia1.png\": [16,8,16,{\"cn\":[947456,98480]}],\n\"textures/segment2/segment2_cn.180C0.ia1.png\": [16,8,16,{\"cn\":[947456,98496]}],\n\"textures/segment2/segment2_cn.180D0.ia1.png\": [16,8,16,{\"cn\":[947456,98512]}],\n\"textures/segment2/segment2_cn.180E0.ia1.png\": [16,8,16,{\"cn\":[947456,98528]}],\n\"textures/segment2/segment2_cn.180F0.ia1.png\": [16,8,16,{\"cn\":[947456,98544]}],\n\"textures/segment2/segment2_cn.18100.ia1.png\": [16,8,16,{\"cn\":[947456,98560]}],\n\"textures/segment2/segment2_cn.18110.ia1.png\": [16,8,16,{\"cn\":[947456,98576]}],\n\"textures/segment2/segment2_cn.18120.ia1.png\": [16,8,16,{\"cn\":[947456,98592]}],\n\"textures/segment2/segment2_cn.18130.ia1.png\": [16,8,16,{\"cn\":[947456,98608]}],\n\"textures/segment2/segment2_cn.18140.ia1.png\": [16,8,16,{\"cn\":[947456,98624]}],\n\"textures/segment2/segment2_cn.18150.ia1.png\": [16,8,16,{\"cn\":[947456,98640]}],\n\"textures/segment2/segment2_cn.18160.ia1.png\": [16,8,16,{\"cn\":[947456,98656]}],\n\"textures/segment2/segment2_cn.18170.ia1.png\": [16,8,16,{\"cn\":[947456,98672]}],\n\"textures/segment2/segment2_cn.18180.ia1.png\": [16,8,16,{\"cn\":[947456,98688]}],\n\"textures/segment2/segment2_cn.18190.ia1.png\": [16,8,16,{\"cn\":[947456,98704]}],\n\"textures/segment2/segment2_cn.181A0.ia1.png\": [16,8,16,{\"cn\":[947456,98720]}],\n\"textures/segment2/segment2_cn.181B0.ia1.png\": [16,8,16,{\"cn\":[947456,98736]}],\n\"textures/segment2/segment2_cn.181C0.ia1.png\": [16,8,16,{\"cn\":[947456,98752]}],\n\"textures/segment2/segment2_cn.181D0.ia1.png\": [16,8,16,{\"cn\":[947456,98768]}],\n\"textures/segment2/segment2_cn.181E0.ia1.png\": [16,8,16,{\"cn\":[947456,98784]}],\n\"textures/segment2/segment2_cn.181F0.ia1.png\": [16,8,16,{\"cn\":[947456,98800]}],\n\"textures/segment2/segment2_cn.18200.ia1.png\": [16,8,16,{\"cn\":[947456,98816]}],\n\"textures/segment2/segment2_cn.18210.ia1.png\": [16,8,16,{\"cn\":[947456,98832]}],\n\"textures/segment2/segment2_cn.18220.ia1.png\": [16,8,16,{\"cn\":[947456,98848]}],\n\"textures/segment2/segment2_cn.18230.ia1.png\": [16,8,16,{\"cn\":[947456,98864]}],\n\"textures/segment2/segment2_cn.18240.ia1.png\": [16,8,16,{\"cn\":[947456,98880]}],\n\"textures/segment2/segment2_cn.18250.ia1.png\": [16,8,16,{\"cn\":[947456,98896]}],\n\"textures/segment2/segment2_cn.18260.ia1.png\": [16,8,16,{\"cn\":[947456,98912]}],\n\"textures/segment2/segment2_cn.18270.ia1.png\": [16,8,16,{\"cn\":[947456,98928]}],\n\"textures/segment2/segment2_cn.18280.ia1.png\": [16,8,16,{\"cn\":[947456,98944]}],\n\"textures/segment2/segment2_cn.18290.ia1.png\": [16,8,16,{\"cn\":[947456,98960]}],\n\"textures/segment2/segment2_cn.182A0.ia1.png\": [16,8,16,{\"cn\":[947456,98976]}],\n\"textures/segment2/segment2_cn.182B0.ia1.png\": [16,8,16,{\"cn\":[947456,98992]}],\n\"textures/segment2/segment2_cn.182C0.ia1.png\": [16,8,16,{\"cn\":[947456,99008]}],\n\"textures/segment2/segment2_cn.182D0.ia1.png\": [16,8,16,{\"cn\":[947456,99024]}],\n\"textures/segment2/segment2_cn.182E0.ia1.png\": [16,8,16,{\"cn\":[947456,99040]}],\n\"textures/segment2/segment2_cn.182F0.ia1.png\": [16,8,16,{\"cn\":[947456,99056]}],\n\"textures/segment2/segment2_cn.18300.ia1.png\": [16,8,16,{\"cn\":[947456,99072]}],\n\"textures/segment2/segment2_cn.18310.ia1.png\": [16,8,16,{\"cn\":[947456,99088]}],\n\"textures/segment2/segment2_cn.18320.ia1.png\": [16,8,16,{\"cn\":[947456,99104]}],\n\"textures/segment2/segment2_cn.18330.ia1.png\": [16,8,16,{\"cn\":[947456,99120]}],\n\"textures/segment2/segment2_cn.18340.ia1.png\": [16,8,16,{\"cn\":[947456,99136]}],\n\"textures/segment2/segment2_cn.18350.ia1.png\": [16,8,16,{\"cn\":[947456,99152]}],\n\"textures/segment2/segment2_cn.18360.ia1.png\": [16,8,16,{\"cn\":[947456,99168]}],\n\"textures/segment2/segment2_cn.18370.ia1.png\": [16,8,16,{\"cn\":[947456,99184]}],\n\"textures/segment2/segment2_cn.18380.ia1.png\": [16,8,16,{\"cn\":[947456,99200]}],\n\"textures/segment2/segment2_cn.18390.ia1.png\": [16,8,16,{\"cn\":[947456,99216]}],\n\"textures/segment2/segment2_cn.183A0.ia1.png\": [16,8,16,{\"cn\":[947456,99232]}],\n\"textures/segment2/segment2_cn.183B0.ia1.png\": [16,8,16,{\"cn\":[947456,99248]}],\n\"textures/segment2/segment2_cn.183C0.ia1.png\": [16,8,16,{\"cn\":[947456,99264]}],\n\"textures/segment2/segment2_cn.183D0.ia1.png\": [16,8,16,{\"cn\":[947456,99280]}],\n\"textures/segment2/segment2_cn.183E0.ia1.png\": [16,8,16,{\"cn\":[947456,99296]}],\n\"textures/segment2/segment2_cn.183F0.ia1.png\": [16,8,16,{\"cn\":[947456,99312]}],\n\"textures/segment2/segment2_cn.18400.ia1.png\": [16,8,16,{\"cn\":[947456,99328]}],\n\"textures/segment2/segment2_cn.18410.ia1.png\": [16,8,16,{\"cn\":[947456,99344]}],\n\"textures/segment2/segment2_cn.18420.ia1.png\": [16,8,16,{\"cn\":[947456,99360]}],\n\"textures/segment2/segment2_cn.18430.ia1.png\": [16,8,16,{\"cn\":[947456,99376]}],\n\"textures/segment2/segment2_cn.18440.ia1.png\": [16,8,16,{\"cn\":[947456,99392]}],\n\"textures/segment2/segment2_cn.18450.ia1.png\": [16,8,16,{\"cn\":[947456,99408]}],\n\"textures/segment2/segment2_cn.18460.ia1.png\": [16,8,16,{\"cn\":[947456,99424]}],\n\"textures/segment2/segment2_cn.18470.ia1.png\": [16,8,16,{\"cn\":[947456,99440]}],\n\"textures/segment2/segment2_cn.18480.ia1.png\": [16,8,16,{\"cn\":[947456,99456]}],\n\"textures/segment2/segment2_cn.18490.ia1.png\": [16,8,16,{\"cn\":[947456,99472]}],\n\"textures/segment2/segment2_cn.184A0.ia1.png\": [16,8,16,{\"cn\":[947456,99488]}],\n\"textures/segment2/segment2_cn.184B0.ia1.png\": [16,8,16,{\"cn\":[947456,99504]}],\n\"textures/segment2/segment2_cn.184C0.ia1.png\": [16,8,16,{\"cn\":[947456,99520]}],\n\"textures/segment2/segment2_cn.184D0.ia1.png\": [16,8,16,{\"cn\":[947456,99536]}],\n\"textures/segment2/segment2_cn.184E0.ia1.png\": [16,8,16,{\"cn\":[947456,99552]}],\n\"textures/segment2/segment2_cn.184F0.ia1.png\": [16,8,16,{\"cn\":[947456,99568]}],\n\"textures/segment2/segment2_cn.18500.ia1.png\": [16,8,16,{\"cn\":[947456,99584]}],\n\"textures/segment2/segment2_cn.18510.ia1.png\": [16,8,16,{\"cn\":[947456,99600]}],\n\"textures/segment2/segment2_cn.18520.ia1.png\": [16,8,16,{\"cn\":[947456,99616]}],\n\"textures/segment2/segment2_cn.18530.ia1.png\": [16,8,16,{\"cn\":[947456,99632]}],\n\"textures/segment2/segment2_cn.18540.ia1.png\": [16,8,16,{\"cn\":[947456,99648]}],\n\"textures/segment2/segment2_cn.18550.ia1.png\": [16,8,16,{\"cn\":[947456,99664]}],\n\"textures/segment2/segment2_cn.18560.ia1.png\": [16,8,16,{\"cn\":[947456,99680]}],\n\"textures/segment2/segment2_cn.18570.ia1.png\": [16,8,16,{\"cn\":[947456,99696]}],\n\"textures/segment2/segment2_cn.18580.ia1.png\": [16,8,16,{\"cn\":[947456,99712]}],\n\"textures/segment2/segment2_cn.18590.ia1.png\": [16,8,16,{\"cn\":[947456,99728]}],\n\"textures/segment2/segment2_cn.185A0.ia1.png\": [16,8,16,{\"cn\":[947456,99744]}],\n\"textures/segment2/segment2_cn.185B0.ia1.png\": [16,8,16,{\"cn\":[947456,99760]}],\n\"textures/segment2/segment2_cn.185C0.ia1.png\": [16,8,16,{\"cn\":[947456,99776]}],\n\"textures/segment2/segment2_cn.185D0.ia1.png\": [16,8,16,{\"cn\":[947456,99792]}],\n\"textures/segment2/segment2_cn.185E0.ia1.png\": [16,8,16,{\"cn\":[947456,99808]}],\n\"textures/segment2/segment2_cn.185F0.ia1.png\": [16,8,16,{\"cn\":[947456,99824]}],\n\"textures/segment2/segment2_cn.18600.ia1.png\": [16,8,16,{\"cn\":[947456,99840]}],\n\"textures/segment2/segment2_cn.18610.ia1.png\": [16,8,16,{\"cn\":[947456,99856]}],\n\"textures/segment2/segment2_cn.18620.ia1.png\": [16,8,16,{\"cn\":[947456,99872]}],\n\"textures/segment2/segment2_cn.18630.ia1.png\": [16,8,16,{\"cn\":[947456,99888]}],\n\"textures/segment2/segment2_cn.18640.ia1.png\": [16,8,16,{\"cn\":[947456,99904]}],\n\"textures/segment2/segment2_cn.18650.ia1.png\": [16,8,16,{\"cn\":[947456,99920]}],\n\"textures/segment2/segment2_cn.18660.ia1.png\": [16,8,16,{\"cn\":[947456,99936]}],\n\"textures/segment2/segment2_cn.18670.ia1.png\": [16,8,16,{\"cn\":[947456,99952]}],\n\"textures/segment2/segment2_cn.18680.ia1.png\": [16,8,16,{\"cn\":[947456,99968]}],\n\"textures/segment2/segment2_cn.18690.ia1.png\": [16,8,16,{\"cn\":[947456,99984]}],\n\"textures/segment2/segment2_cn.186A0.ia1.png\": [16,8,16,{\"cn\":[947456,100000]}],\n\"textures/segment2/segment2_cn.186B0.ia1.png\": [16,8,16,{\"cn\":[947456,100016]}],\n\"textures/segment2/segment2_cn.186C0.ia1.png\": [16,8,16,{\"cn\":[947456,100032]}],\n\"textures/segment2/segment2_cn.186D0.ia1.png\": [16,8,16,{\"cn\":[947456,100048]}],\n\"textures/segment2/segment2_cn.186E0.ia1.png\": [16,8,16,{\"cn\":[947456,100064]}],\n\"textures/segment2/segment2_cn.186F0.ia1.png\": [16,8,16,{\"cn\":[947456,100080]}],\n\"textures/segment2/segment2_cn.18700.ia1.png\": [16,8,16,{\"cn\":[947456,100096]}],\n\"textures/segment2/segment2_cn.18710.ia1.png\": [16,8,16,{\"cn\":[947456,100112]}],\n\"textures/segment2/segment2_cn.18720.ia1.png\": [16,8,16,{\"cn\":[947456,100128]}],\n\"textures/segment2/segment2_cn.18730.ia1.png\": [16,8,16,{\"cn\":[947456,100144]}],\n\"textures/segment2/segment2_cn.18740.ia1.png\": [16,8,16,{\"cn\":[947456,100160]}],\n\"textures/segment2/segment2_cn.18750.ia1.png\": [16,8,16,{\"cn\":[947456,100176]}],\n\"textures/segment2/segment2_cn.18760.ia1.png\": [16,8,16,{\"cn\":[947456,100192]}],\n\"textures/segment2/segment2_cn.18770.ia1.png\": [16,8,16,{\"cn\":[947456,100208]}],\n\"textures/segment2/segment2_cn.18780.ia1.png\": [16,8,16,{\"cn\":[947456,100224]}],\n\"textures/segment2/segment2_cn.18790.ia1.png\": [16,8,16,{\"cn\":[947456,100240]}],\n\"textures/segment2/segment2_cn.187A0.ia1.png\": [16,8,16,{\"cn\":[947456,100256]}],\n\"textures/segment2/segment2_cn.187B0.ia1.png\": [16,8,16,{\"cn\":[947456,100272]}],\n\"textures/segment2/segment2_cn.187C0.ia1.png\": [16,8,16,{\"cn\":[947456,100288]}],\n\"textures/segment2/segment2_cn.187D0.ia1.png\": [16,8,16,{\"cn\":[947456,100304]}],\n\"textures/segment2/segment2_cn.187E0.ia1.png\": [16,8,16,{\"cn\":[947456,100320]}],\n\"textures/segment2/segment2_cn.187F0.ia1.png\": [16,8,16,{\"cn\":[947456,100336]}],\n\"textures/segment2/segment2_cn.18800.ia1.png\": [16,8,16,{\"cn\":[947456,100352]}],\n\"textures/segment2/segment2_cn.18810.ia1.png\": [16,8,16,{\"cn\":[947456,100368]}],\n\"textures/segment2/segment2_cn.18820.ia1.png\": [16,8,16,{\"cn\":[947456,100384]}],\n\"textures/segment2/segment2_cn.18830.ia1.png\": [16,8,16,{\"cn\":[947456,100400]}],\n\"textures/segment2/segment2_cn.18840.ia1.png\": [16,8,16,{\"cn\":[947456,100416]}],\n\"textures/segment2/segment2_cn.18850.ia1.png\": [16,8,16,{\"cn\":[947456,100432]}],\n\"textures/segment2/segment2_cn.18860.ia1.png\": [16,8,16,{\"cn\":[947456,100448]}],\n\"textures/segment2/segment2_cn.18870.ia1.png\": [16,8,16,{\"cn\":[947456,100464]}],\n\"textures/segment2/segment2_cn.18880.ia1.png\": [16,8,16,{\"cn\":[947456,100480]}],\n\"textures/segment2/segment2_cn.18890.ia1.png\": [16,8,16,{\"cn\":[947456,100496]}],\n\"textures/segment2/segment2_cn.188A0.ia1.png\": [16,8,16,{\"cn\":[947456,100512]}],\n\"textures/segment2/segment2_cn.188B0.ia1.png\": [16,8,16,{\"cn\":[947456,100528]}],\n\"textures/segment2/segment2_cn.188C0.ia1.png\": [16,8,16,{\"cn\":[947456,100544]}],\n\"textures/segment2/segment2_cn.188D0.ia1.png\": [16,8,16,{\"cn\":[947456,100560]}],\n\"textures/segment2/segment2_cn.188E0.ia1.png\": [16,8,16,{\"cn\":[947456,100576]}],\n\"textures/segment2/segment2_cn.188F0.ia1.png\": [16,8,16,{\"cn\":[947456,100592]}],\n\"textures/segment2/segment2_cn.18900.ia1.png\": [16,8,16,{\"cn\":[947456,100608]}],\n\"textures/segment2/segment2_cn.18910.ia1.png\": [16,8,16,{\"cn\":[947456,100624]}],\n\"textures/segment2/segment2_cn.18920.ia1.png\": [16,8,16,{\"cn\":[947456,100640]}],\n\"textures/segment2/segment2_cn.18930.ia1.png\": [16,8,16,{\"cn\":[947456,100656]}],\n\"textures/segment2/segment2_cn.18940.ia1.png\": [16,8,16,{\"cn\":[947456,100672]}],\n\"textures/segment2/segment2_cn.18950.ia1.png\": [16,8,16,{\"cn\":[947456,100688]}],\n\"textures/segment2/segment2_cn.18960.ia1.png\": [16,8,16,{\"cn\":[947456,100704]}],\n\"textures/segment2/segment2_cn.18970.ia1.png\": [16,8,16,{\"cn\":[947456,100720]}],\n\"textures/segment2/segment2_cn.18980.ia1.png\": [16,8,16,{\"cn\":[947456,100736]}],\n\"textures/segment2/segment2_cn.18990.ia1.png\": [16,8,16,{\"cn\":[947456,100752]}],\n\"textures/segment2/segment2_cn.189A0.ia1.png\": [16,8,16,{\"cn\":[947456,100768]}],\n\"textures/segment2/segment2_cn.189B0.ia1.png\": [16,8,16,{\"cn\":[947456,100784]}],\n\"textures/segment2/segment2_cn.189C0.ia1.png\": [16,8,16,{\"cn\":[947456,100800]}],\n\"textures/segment2/segment2_cn.189D0.ia1.png\": [16,8,16,{\"cn\":[947456,100816]}],\n\"textures/segment2/segment2_cn.189E0.ia1.png\": [16,8,16,{\"cn\":[947456,100832]}],\n\"textures/segment2/segment2_cn.189F0.ia1.png\": [16,8,16,{\"cn\":[947456,100848]}],\n\"textures/segment2/segment2_cn.18A00.ia1.png\": [16,8,16,{\"cn\":[947456,100864]}],\n\"textures/segment2/segment2_cn.18A10.ia1.png\": [16,8,16,{\"cn\":[947456,100880]}],\n\"textures/segment2/segment2_cn.18A20.ia1.png\": [16,8,16,{\"cn\":[947456,100896]}],\n\"textures/segment2/segment2_cn.18A30.ia1.png\": [16,8,16,{\"cn\":[947456,100912]}],\n\"textures/segment2/segment2_cn.18A40.ia1.png\": [16,8,16,{\"cn\":[947456,100928]}],\n\"textures/segment2/segment2_cn.18A50.ia1.png\": [16,8,16,{\"cn\":[947456,100944]}],\n\"textures/segment2/segment2_cn.18A60.ia1.png\": [16,8,16,{\"cn\":[947456,100960]}],\n\"textures/segment2/segment2_cn.18A70.ia1.png\": [16,8,16,{\"cn\":[947456,100976]}],\n\"textures/segment2/segment2_cn.18A80.ia1.png\": [16,8,16,{\"cn\":[947456,100992]}],\n\"textures/segment2/segment2_cn.18A90.ia1.png\": [16,8,16,{\"cn\":[947456,101008]}],\n\"textures/segment2/segment2_cn.18AA0.ia1.png\": [16,8,16,{\"cn\":[947456,101024]}],\n\"textures/segment2/segment2_cn.18AB0.ia1.png\": [16,8,16,{\"cn\":[947456,101040]}],\n\"textures/segment2/segment2_cn.18AC0.ia1.png\": [16,8,16,{\"cn\":[947456,101056]}],\n\"textures/segment2/segment2_cn.18AD0.ia1.png\": [16,8,16,{\"cn\":[947456,101072]}],\n\"textures/segment2/segment2_cn.18AE0.ia1.png\": [16,8,16,{\"cn\":[947456,101088]}],\n\"textures/segment2/segment2_cn.18AF0.ia1.png\": [16,8,16,{\"cn\":[947456,101104]}],\n\"textures/segment2/segment2_cn.18B00.ia1.png\": [16,8,16,{\"cn\":[947456,101120]}],\n\"textures/segment2/segment2_cn.18B10.ia1.png\": [16,8,16,{\"cn\":[947456,101136]}],\n\"textures/segment2/segment2_cn.18B20.ia1.png\": [16,8,16,{\"cn\":[947456,101152]}],\n\"textures/segment2/segment2_cn.18B30.ia1.png\": [16,8,16,{\"cn\":[947456,101168]}],\n\"textures/segment2/segment2_cn.18B40.ia1.png\": [16,8,16,{\"cn\":[947456,101184]}],\n\"textures/segment2/segment2_cn.18B50.ia1.png\": [16,8,16,{\"cn\":[947456,101200]}],\n\"textures/segment2/segment2_cn.18B60.ia1.png\": [16,8,16,{\"cn\":[947456,101216]}],\n\"textures/segment2/segment2_cn.18B70.ia1.png\": [16,8,16,{\"cn\":[947456,101232]}],\n\"textures/segment2/segment2_cn.18B80.ia1.png\": [16,8,16,{\"cn\":[947456,101248]}],\n\"textures/segment2/segment2_cn.18B90.ia1.png\": [16,8,16,{\"cn\":[947456,101264]}],\n\"textures/segment2/segment2_cn.18BA0.ia1.png\": [16,8,16,{\"cn\":[947456,101280]}],\n\"textures/segment2/segment2_cn.18BB0.ia1.png\": [16,8,16,{\"cn\":[947456,101296]}],\n\"textures/segment2/segment2_cn.18BC0.ia1.png\": [16,8,16,{\"cn\":[947456,101312]}],\n\"textures/segment2/segment2_cn.18BD0.ia1.png\": [16,8,16,{\"cn\":[947456,101328]}],\n\"textures/segment2/segment2_cn.18BE0.ia1.png\": [16,8,16,{\"cn\":[947456,101344]}],\n\"textures/segment2/segment2_cn.18BF0.ia1.png\": [16,8,16,{\"cn\":[947456,101360]}],\n\"textures/segment2/segment2_cn.18C00.ia1.png\": [16,8,16,{\"cn\":[947456,101376]}],\n\"textures/segment2/segment2_cn.18C10.ia1.png\": [16,8,16,{\"cn\":[947456,101392]}],\n\"textures/segment2/segment2_cn.18C20.ia1.png\": [16,8,16,{\"cn\":[947456,101408]}],\n\"textures/segment2/segment2_cn.18C30.ia1.png\": [16,8,16,{\"cn\":[947456,101424]}],\n\"textures/segment2/segment2_cn.18C40.ia1.png\": [16,8,16,{\"cn\":[947456,101440]}],\n\"textures/segment2/segment2_cn.18C50.ia1.png\": [16,8,16,{\"cn\":[947456,101456]}],\n\"textures/segment2/segment2_cn.18C60.ia1.png\": [16,8,16,{\"cn\":[947456,101472]}],\n\"textures/segment2/segment2_cn.18C70.ia1.png\": [16,8,16,{\"cn\":[947456,101488]}],\n\"textures/segment2/segment2_cn.18C80.ia1.png\": [16,8,16,{\"cn\":[947456,101504]}],\n\"textures/segment2/segment2_cn.18C90.ia1.png\": [16,8,16,{\"cn\":[947456,101520]}],\n\"textures/segment2/segment2_cn.18CA0.ia1.png\": [16,8,16,{\"cn\":[947456,101536]}],\n\"textures/segment2/segment2_cn.18CB0.ia1.png\": [16,8,16,{\"cn\":[947456,101552]}],\n\"textures/segment2/segment2_cn.18CC0.ia1.png\": [16,8,16,{\"cn\":[947456,101568]}],\n\"textures/segment2/segment2_cn.18CD0.ia1.png\": [16,8,16,{\"cn\":[947456,101584]}],\n\"textures/segment2/segment2_cn.18CE0.ia1.png\": [16,8,16,{\"cn\":[947456,101600]}],\n\"textures/segment2/segment2_cn.18CF0.ia1.png\": [16,8,16,{\"cn\":[947456,101616]}],\n\"textures/segment2/segment2_cn.18D00.ia1.png\": [16,8,16,{\"cn\":[947456,101632]}],\n\"textures/segment2/segment2_cn.18D10.ia1.png\": [16,8,16,{\"cn\":[947456,101648]}],\n\"textures/segment2/segment2_cn.18D20.ia1.png\": [16,8,16,{\"cn\":[947456,101664]}],\n\"textures/segment2/segment2_cn.18D30.ia1.png\": [16,8,16,{\"cn\":[947456,101680]}],\n\"textures/segment2/segment2_cn.18D40.ia1.png\": [16,8,16,{\"cn\":[947456,101696]}],\n\"textures/segment2/segment2_cn.18D50.ia1.png\": [16,8,16,{\"cn\":[947456,101712]}],\n\"textures/segment2/segment2_cn.18D60.ia1.png\": [16,8,16,{\"cn\":[947456,101728]}],\n\"textures/segment2/segment2_cn.18D70.ia1.png\": [16,8,16,{\"cn\":[947456,101744]}],\n\"textures/segment2/segment2_cn.18D80.ia1.png\": [16,8,16,{\"cn\":[947456,101760]}],\n\"textures/segment2/segment2_cn.18D90.ia1.png\": [16,8,16,{\"cn\":[947456,101776]}],\n\"textures/segment2/segment2_cn.18DA0.ia1.png\": [16,8,16,{\"cn\":[947456,101792]}],\n\"textures/segment2/segment2_cn.18DB0.ia1.png\": [16,8,16,{\"cn\":[947456,101808]}],\n\"textures/segment2/segment2_cn.18DC0.ia1.png\": [16,8,16,{\"cn\":[947456,101824]}],\n\"textures/segment2/segment2_cn.18DD0.ia1.png\": [16,8,16,{\"cn\":[947456,101840]}],\n\"textures/segment2/segment2_cn.18DE0.ia1.png\": [16,8,16,{\"cn\":[947456,101856]}],\n\"textures/segment2/segment2_cn.18DF0.ia1.png\": [16,8,16,{\"cn\":[947456,101872]}],\n\"textures/segment2/segment2_cn.18E00.ia1.png\": [16,8,16,{\"cn\":[947456,101888]}],\n\"textures/segment2/segment2_cn.18E10.ia1.png\": [16,8,16,{\"cn\":[947456,101904]}],\n\"textures/segment2/segment2_cn.18E20.ia1.png\": [16,8,16,{\"cn\":[947456,101920]}],\n\"textures/segment2/segment2_cn.18E30.ia1.png\": [16,8,16,{\"cn\":[947456,101936]}],\n\"textures/segment2/segment2_cn.18E40.ia1.png\": [16,8,16,{\"cn\":[947456,101952]}],\n\"textures/segment2/segment2_cn.18E50.ia1.png\": [16,8,16,{\"cn\":[947456,101968]}],\n\"textures/segment2/segment2_cn.18E60.ia1.png\": [16,8,16,{\"cn\":[947456,101984]}],\n\"textures/segment2/segment2_cn.18E70.ia1.png\": [16,8,16,{\"cn\":[947456,102000]}],\n\"textures/segment2/segment2_cn.18E80.ia1.png\": [16,8,16,{\"cn\":[947456,102016]}],\n\"textures/segment2/segment2_cn.18E90.ia1.png\": [16,8,16,{\"cn\":[947456,102032]}],\n\"textures/segment2/segment2_cn.18EA0.ia1.png\": [16,8,16,{\"cn\":[947456,102048]}],\n\"textures/segment2/segment2_cn.18EB0.ia1.png\": [16,8,16,{\"cn\":[947456,102064]}],\n\"textures/segment2/segment2_cn.18EC0.ia1.png\": [16,8,16,{\"cn\":[947456,102080]}],\n\"textures/segment2/segment2_cn.18ED0.ia1.png\": [16,8,16,{\"cn\":[947456,102096]}],\n\"textures/segment2/segment2_cn.18EE0.ia1.png\": [16,8,16,{\"cn\":[947456,102112]}],\n\"textures/segment2/segment2_cn.18EF0.ia1.png\": [16,8,16,{\"cn\":[947456,102128]}],\n\"textures/segment2/segment2_cn.18F00.ia1.png\": [16,8,16,{\"cn\":[947456,102144]}],\n\"textures/segment2/segment2_cn.18F10.ia1.png\": [16,8,16,{\"cn\":[947456,102160]}],\n\"textures/segment2/segment2_cn.18F20.ia1.png\": [16,8,16,{\"cn\":[947456,102176]}],\n\"textures/segment2/segment2_cn.18F30.ia1.png\": [16,8,16,{\"cn\":[947456,102192]}],\n\"textures/segment2/segment2_cn.18F40.ia1.png\": [16,8,16,{\"cn\":[947456,102208]}],\n\"textures/segment2/segment2_cn.18F50.ia1.png\": [16,8,16,{\"cn\":[947456,102224]}],\n\"textures/segment2/segment2_cn.18F60.ia1.png\": [16,8,16,{\"cn\":[947456,102240]}],\n\"textures/segment2/segment2_cn.18F70.ia1.png\": [16,8,16,{\"cn\":[947456,102256]}],\n\"textures/segment2/segment2_cn.18F80.ia1.png\": [16,8,16,{\"cn\":[947456,102272]}],\n\"textures/segment2/segment2_cn.18F90.ia1.png\": [16,8,16,{\"cn\":[947456,102288]}],\n\"textures/segment2/segment2_cn.18FA0.ia1.png\": [16,8,16,{\"cn\":[947456,102304]}],\n\"textures/segment2/segment2_cn.18FB0.ia1.png\": [16,8,16,{\"cn\":[947456,102320]}],\n\"textures/segment2/segment2_cn.18FC0.ia1.png\": [16,8,16,{\"cn\":[947456,102336]}],\n\"textures/segment2/segment2_cn.18FD0.ia1.png\": [16,8,16,{\"cn\":[947456,102352]}],\n\"textures/segment2/segment2_cn.18FE0.ia1.png\": [16,8,16,{\"cn\":[947456,102368]}],\n\"textures/segment2/segment2_cn.18FF0.ia1.png\": [16,8,16,{\"cn\":[947456,102384]}],\n\"textures/segment2/segment2_cn.19000.ia1.png\": [16,8,16,{\"cn\":[947456,102400]}],\n\"textures/segment2/segment2_cn.19010.ia1.png\": [16,8,16,{\"cn\":[947456,102416]}],\n\"textures/segment2/segment2_cn.19020.ia1.png\": [16,8,16,{\"cn\":[947456,102432]}],\n\"textures/segment2/segment2_cn.19030.ia1.png\": [16,8,16,{\"cn\":[947456,102448]}],\n\"textures/segment2/segment2_cn.19040.ia1.png\": [16,8,16,{\"cn\":[947456,102464]}],\n\"textures/segment2/segment2_cn.19050.ia1.png\": [16,8,16,{\"cn\":[947456,102480]}],\n\"textures/segment2/segment2_cn.19060.ia1.png\": [16,8,16,{\"cn\":[947456,102496]}],\n\"textures/segment2/segment2_cn.19070.ia1.png\": [16,8,16,{\"cn\":[947456,102512]}],\n\"textures/segment2/segment2_cn.19080.ia1.png\": [16,8,16,{\"cn\":[947456,102528]}],\n\"textures/segment2/segment2_cn.19090.ia1.png\": [16,8,16,{\"cn\":[947456,102544]}],\n\"textures/segment2/segment2_cn.190A0.ia1.png\": [16,8,16,{\"cn\":[947456,102560]}],\n\"textures/segment2/segment2_cn.190B0.ia1.png\": [16,8,16,{\"cn\":[947456,102576]}],\n\"textures/segment2/segment2_cn.190C0.ia1.png\": [16,8,16,{\"cn\":[947456,102592]}],\n\"textures/segment2/segment2_cn.190D0.ia1.png\": [16,8,16,{\"cn\":[947456,102608]}],\n\"textures/segment2/segment2_cn.190E0.ia1.png\": [16,8,16,{\"cn\":[947456,102624]}],\n\"textures/segment2/segment2_cn.190F0.ia1.png\": [16,8,16,{\"cn\":[947456,102640]}],\n\"textures/segment2/segment2_cn.19100.ia1.png\": [16,8,16,{\"cn\":[947456,102656]}],\n\"textures/segment2/segment2_cn.19110.ia1.png\": [16,8,16,{\"cn\":[947456,102672]}],\n\"textures/segment2/segment2_cn.19120.ia1.png\": [16,8,16,{\"cn\":[947456,102688]}],\n\"textures/segment2/segment2_cn.19130.ia1.png\": [16,8,16,{\"cn\":[947456,102704]}],\n\"textures/segment2/segment2_cn.19140.ia1.png\": [16,8,16,{\"cn\":[947456,102720]}],\n\"textures/segment2/segment2_cn.19150.ia1.png\": [16,8,16,{\"cn\":[947456,102736]}],\n\"textures/segment2/segment2_cn.19160.ia1.png\": [16,8,16,{\"cn\":[947456,102752]}],\n\"textures/segment2/segment2_cn.19170.ia1.png\": [16,8,16,{\"cn\":[947456,102768]}],\n\"textures/segment2/segment2_cn.19180.ia1.png\": [16,8,16,{\"cn\":[947456,102784]}],\n\"textures/segment2/segment2_cn.19190.ia1.png\": [16,8,16,{\"cn\":[947456,102800]}],\n\"textures/segment2/segment2_cn.191A0.ia1.png\": [16,8,16,{\"cn\":[947456,102816]}],\n\"textures/segment2/segment2_cn.191B0.ia1.png\": [16,8,16,{\"cn\":[947456,102832]}],\n\"textures/segment2/segment2_cn.191C0.ia1.png\": [16,8,16,{\"cn\":[947456,102848]}],\n\"textures/segment2/segment2_cn.191D0.ia1.png\": [16,8,16,{\"cn\":[947456,102864]}],\n\"textures/segment2/segment2_cn.191E0.ia1.png\": [16,8,16,{\"cn\":[947456,102880]}],\n\"textures/segment2/segment2_cn.191F0.ia1.png\": [16,8,16,{\"cn\":[947456,102896]}],\n\"textures/segment2/segment2_cn.19200.ia1.png\": [16,8,16,{\"cn\":[947456,102912]}],\n\"textures/segment2/segment2_cn.19210.ia1.png\": [16,8,16,{\"cn\":[947456,102928]}],\n\"textures/segment2/segment2_cn.19220.ia1.png\": [16,8,16,{\"cn\":[947456,102944]}],\n\"textures/segment2/segment2_cn.19230.ia1.png\": [16,8,16,{\"cn\":[947456,102960]}],\n\"textures/segment2/segment2_cn.19240.ia1.png\": [16,8,16,{\"cn\":[947456,102976]}],\n\"textures/segment2/segment2_cn.19250.ia1.png\": [16,8,16,{\"cn\":[947456,102992]}],\n\"textures/segment2/segment2_cn.19260.ia1.png\": [16,8,16,{\"cn\":[947456,103008]}],\n\"textures/segment2/segment2_cn.19270.ia1.png\": [16,8,16,{\"cn\":[947456,103024]}],\n\"textures/segment2/segment2_cn.19280.ia1.png\": [16,8,16,{\"cn\":[947456,103040]}],\n\"textures/segment2/segment2_cn.19290.ia1.png\": [16,8,16,{\"cn\":[947456,103056]}],\n\"textures/segment2/segment2_cn.192A0.ia1.png\": [16,8,16,{\"cn\":[947456,103072]}],\n\"textures/segment2/segment2_cn.192B0.ia1.png\": [16,8,16,{\"cn\":[947456,103088]}],\n\"textures/segment2/segment2_cn.192C0.ia1.png\": [16,8,16,{\"cn\":[947456,103104]}],\n\"textures/segment2/segment2_cn.192D0.ia1.png\": [16,8,16,{\"cn\":[947456,103120]}],\n\"textures/segment2/segment2_cn.192E0.ia1.png\": [16,8,16,{\"cn\":[947456,103136]}],\n\"textures/segment2/segment2_cn.192F0.ia1.png\": [16,8,16,{\"cn\":[947456,103152]}],\n\"textures/segment2/segment2_cn.19300.ia1.png\": [16,8,16,{\"cn\":[947456,103168]}],\n\"textures/segment2/segment2_cn.19310.ia1.png\": [16,8,16,{\"cn\":[947456,103184]}],\n\"textures/segment2/segment2_cn.19320.ia1.png\": [16,8,16,{\"cn\":[947456,103200]}],\n\"textures/segment2/segment2_cn.19330.ia1.png\": [16,8,16,{\"cn\":[947456,103216]}],\n\"textures/segment2/segment2_cn.19340.ia1.png\": [16,8,16,{\"cn\":[947456,103232]}],\n\"textures/segment2/segment2_cn.19350.ia1.png\": [16,8,16,{\"cn\":[947456,103248]}],\n\"textures/segment2/segment2_cn.19360.ia1.png\": [16,8,16,{\"cn\":[947456,103264]}],\n\"textures/segment2/segment2_cn.19370.ia1.png\": [16,8,16,{\"cn\":[947456,103280]}],\n\"textures/segment2/segment2_cn.19380.ia1.png\": [16,8,16,{\"cn\":[947456,103296]}],\n\"textures/segment2/segment2_cn.19390.ia1.png\": [16,8,16,{\"cn\":[947456,103312]}],\n\"textures/segment2/segment2_cn.193A0.ia1.png\": [16,8,16,{\"cn\":[947456,103328]}],\n\"textures/segment2/segment2_cn.193B0.ia1.png\": [16,8,16,{\"cn\":[947456,103344]}],\n\"textures/segment2/segment2_cn.193C0.ia1.png\": [16,8,16,{\"cn\":[947456,103360]}],\n\"textures/segment2/segment2_cn.193D0.ia1.png\": [16,8,16,{\"cn\":[947456,103376]}],\n\"textures/segment2/segment2_cn.193E0.ia1.png\": [16,8,16,{\"cn\":[947456,103392]}],\n\"textures/segment2/segment2_cn.193F0.ia1.png\": [16,8,16,{\"cn\":[947456,103408]}],\n\"textures/segment2/segment2_cn.19400.ia1.png\": [16,8,16,{\"cn\":[947456,103424]}],\n\"textures/segment2/segment2_cn.19410.ia1.png\": [16,8,16,{\"cn\":[947456,103440]}],\n\"textures/segment2/segment2_cn.19420.ia1.png\": [16,8,16,{\"cn\":[947456,103456]}],\n\"textures/segment2/segment2_cn.19430.ia1.png\": [16,8,16,{\"cn\":[947456,103472]}],\n\"textures/segment2/segment2_cn.19440.ia1.png\": [16,8,16,{\"cn\":[947456,103488]}],\n\"textures/segment2/segment2_cn.19450.ia1.png\": [16,8,16,{\"cn\":[947456,103504]}],\n\"textures/segment2/segment2_cn.19460.ia1.png\": [16,8,16,{\"cn\":[947456,103520]}],\n\"textures/segment2/segment2_cn.19470.ia1.png\": [16,8,16,{\"cn\":[947456,103536]}],\n\"textures/segment2/segment2_cn.19480.ia1.png\": [16,8,16,{\"cn\":[947456,103552]}],\n\"textures/segment2/segment2_cn.19490.ia1.png\": [16,8,16,{\"cn\":[947456,103568]}],\n\"textures/segment2/segment2_cn.194A0.ia1.png\": [16,8,16,{\"cn\":[947456,103584]}],\n\"textures/segment2/segment2_cn.194B0.ia1.png\": [16,8,16,{\"cn\":[947456,103600]}],\n\"textures/segment2/segment2_cn.194C0.ia1.png\": [16,8,16,{\"cn\":[947456,103616]}],\n\"textures/segment2/segment2_cn.194D0.ia1.png\": [16,8,16,{\"cn\":[947456,103632]}],\n\"textures/segment2/segment2_cn.194E0.ia1.png\": [16,8,16,{\"cn\":[947456,103648]}],\n\"textures/segment2/segment2_cn.194F0.ia1.png\": [16,8,16,{\"cn\":[947456,103664]}],\n\"textures/segment2/segment2_cn.19500.ia1.png\": [16,8,16,{\"cn\":[947456,103680]}],\n\"textures/segment2/segment2_cn.19510.ia1.png\": [16,8,16,{\"cn\":[947456,103696]}],\n\"textures/segment2/segment2_cn.19520.ia1.png\": [16,8,16,{\"cn\":[947456,103712]}],\n\"textures/segment2/segment2_cn.19530.ia1.png\": [16,8,16,{\"cn\":[947456,103728]}],\n\"textures/segment2/segment2_cn.19540.ia1.png\": [16,8,16,{\"cn\":[947456,103744]}],\n\"textures/segment2/segment2_cn.19550.ia1.png\": [16,8,16,{\"cn\":[947456,103760]}],\n\"textures/segment2/segment2_cn.19560.ia1.png\": [16,8,16,{\"cn\":[947456,103776]}],\n\"textures/segment2/segment2_cn.19570.ia1.png\": [16,8,16,{\"cn\":[947456,103792]}],\n\"textures/segment2/segment2_cn.19580.ia1.png\": [16,8,16,{\"cn\":[947456,103808]}],\n\"textures/segment2/segment2_cn.19590.ia1.png\": [16,8,16,{\"cn\":[947456,103824]}],\n\"textures/segment2/segment2_cn.195A0.ia1.png\": [16,8,16,{\"cn\":[947456,103840]}],\n\"textures/segment2/segment2_cn.195B0.ia1.png\": [16,8,16,{\"cn\":[947456,103856]}],\n\"textures/segment2/segment2_cn.195C0.ia1.png\": [16,8,16,{\"cn\":[947456,103872]}],\n\"textures/segment2/segment2_cn.195D0.ia1.png\": [16,8,16,{\"cn\":[947456,103888]}],\n\"textures/segment2/segment2_cn.195E0.ia1.png\": [16,8,16,{\"cn\":[947456,103904]}],\n\"textures/segment2/segment2_cn.195F0.ia1.png\": [16,8,16,{\"cn\":[947456,103920]}],\n\"textures/segment2/segment2_cn.19600.ia1.png\": [16,8,16,{\"cn\":[947456,103936]}],\n\"textures/segment2/segment2_cn.19610.ia1.png\": [16,8,16,{\"cn\":[947456,103952]}],\n\"textures/segment2/segment2_cn.19620.ia1.png\": [16,8,16,{\"cn\":[947456,103968]}],\n\"textures/segment2/segment2_cn.19630.ia1.png\": [16,8,16,{\"cn\":[947456,103984]}],\n\"textures/segment2/segment2_cn.19640.ia1.png\": [16,8,16,{\"cn\":[947456,104000]}],\n\"textures/segment2/segment2_cn.19650.ia1.png\": [16,8,16,{\"cn\":[947456,104016]}],\n\"textures/segment2/segment2_cn.19660.ia1.png\": [16,8,16,{\"cn\":[947456,104032]}],\n\"textures/segment2/segment2_cn.19670.ia1.png\": [16,8,16,{\"cn\":[947456,104048]}],\n\"textures/segment2/segment2_cn.19680.ia1.png\": [16,8,16,{\"cn\":[947456,104064]}],\n\"textures/segment2/segment2_cn.19690.ia1.png\": [16,8,16,{\"cn\":[947456,104080]}],\n\"textures/segment2/segment2_cn.196A0.ia1.png\": [16,8,16,{\"cn\":[947456,104096]}],\n\"textures/segment2/segment2_cn.196B0.ia1.png\": [16,8,16,{\"cn\":[947456,104112]}],\n\"textures/segment2/segment2_cn.196C0.ia1.png\": [16,8,16,{\"cn\":[947456,104128]}],\n\"textures/segment2/segment2_cn.196D0.ia1.png\": [16,8,16,{\"cn\":[947456,104144]}],\n\"textures/segment2/segment2_cn.196E0.ia1.png\": [16,8,16,{\"cn\":[947456,104160]}],\n\"textures/segment2/segment2_cn.196F0.ia1.png\": [16,8,16,{\"cn\":[947456,104176]}],\n\"textures/segment2/segment2_cn.19700.ia1.png\": [16,8,16,{\"cn\":[947456,104192]}],\n\"textures/segment2/segment2_cn.19710.ia1.png\": [16,8,16,{\"cn\":[947456,104208]}],\n\"textures/segment2/segment2_cn.19720.ia1.png\": [16,8,16,{\"cn\":[947456,104224]}],\n\"textures/segment2/segment2_cn.19730.ia1.png\": [16,8,16,{\"cn\":[947456,104240]}],\n\"textures/segment2/segment2_cn.19740.ia1.png\": [16,8,16,{\"cn\":[947456,104256]}],\n\"textures/segment2/segment2_cn.19750.ia1.png\": [16,8,16,{\"cn\":[947456,104272]}],\n\"textures/segment2/segment2_cn.19760.ia1.png\": [16,8,16,{\"cn\":[947456,104288]}],\n\"textures/segment2/segment2_cn.19770.ia1.png\": [16,8,16,{\"cn\":[947456,104304]}],\n\"textures/segment2/segment2_cn.19780.ia1.png\": [16,8,16,{\"cn\":[947456,104320]}],\n\"textures/segment2/segment2_cn.19790.ia1.png\": [16,8,16,{\"cn\":[947456,104336]}],\n\"textures/segment2/segment2_cn.197A0.ia1.png\": [16,8,16,{\"cn\":[947456,104352]}],\n\"textures/segment2/segment2_cn.197B0.ia1.png\": [16,8,16,{\"cn\":[947456,104368]}],\n\"textures/segment2/segment2_cn.197C0.ia1.png\": [16,8,16,{\"cn\":[947456,104384]}],\n\"textures/segment2/segment2_cn.197D0.ia1.png\": [16,8,16,{\"cn\":[947456,104400]}],\n\"textures/segment2/segment2_cn.197E0.ia1.png\": [16,8,16,{\"cn\":[947456,104416]}],\n\"textures/segment2/segment2_cn.197F0.ia1.png\": [16,8,16,{\"cn\":[947456,104432]}],\n\"textures/segment2/segment2_cn.19800.ia1.png\": [16,8,16,{\"cn\":[947456,104448]}],\n\"textures/segment2/segment2_cn.19810.ia1.png\": [16,8,16,{\"cn\":[947456,104464]}],\n\"textures/segment2/segment2_cn.19820.ia1.png\": [16,8,16,{\"cn\":[947456,104480]}],\n\"textures/segment2/segment2_cn.19830.ia1.png\": [16,8,16,{\"cn\":[947456,104496]}],\n\"textures/segment2/segment2_cn.19840.ia1.png\": [16,8,16,{\"cn\":[947456,104512]}],\n\"textures/segment2/segment2_cn.19850.ia1.png\": [16,8,16,{\"cn\":[947456,104528]}],\n\"textures/segment2/segment2_cn.19860.ia1.png\": [16,8,16,{\"cn\":[947456,104544]}],\n\"textures/segment2/segment2_cn.19870.ia1.png\": [16,8,16,{\"cn\":[947456,104560]}],\n\"textures/segment2/segment2_cn.19880.ia1.png\": [16,8,16,{\"cn\":[947456,104576]}],\n\"textures/segment2/segment2_cn.19890.ia1.png\": [16,8,16,{\"cn\":[947456,104592]}],\n\"textures/segment2/segment2_cn.198A0.ia1.png\": [16,8,16,{\"cn\":[947456,104608]}],\n\"textures/segment2/segment2_cn.198B0.ia1.png\": [16,8,16,{\"cn\":[947456,104624]}],\n\"textures/segment2/segment2_cn.198C0.ia1.png\": [16,8,16,{\"cn\":[947456,104640]}],\n\"textures/segment2/segment2_cn.198D0.ia1.png\": [16,8,16,{\"cn\":[947456,104656]}],\n\"textures/segment2/segment2_cn.198E0.ia1.png\": [16,8,16,{\"cn\":[947456,104672]}],\n\"textures/segment2/segment2_cn.198F0.ia1.png\": [16,8,16,{\"cn\":[947456,104688]}],\n\"textures/segment2/segment2_cn.19900.ia1.png\": [16,8,16,{\"cn\":[947456,104704]}],\n\"textures/segment2/segment2_cn.19910.ia1.png\": [16,8,16,{\"cn\":[947456,104720]}],\n\"textures/segment2/segment2_cn.19920.ia1.png\": [16,8,16,{\"cn\":[947456,104736]}],\n\"textures/segment2/segment2_cn.19930.ia1.png\": [16,8,16,{\"cn\":[947456,104752]}],\n\"textures/segment2/segment2_cn.19940.ia1.png\": [16,8,16,{\"cn\":[947456,104768]}],\n\"textures/segment2/segment2_cn.19950.ia1.png\": [16,8,16,{\"cn\":[947456,104784]}],\n\"textures/segment2/segment2_cn.19960.ia1.png\": [16,8,16,{\"cn\":[947456,104800]}],\n\"textures/segment2/segment2_cn.19970.ia1.png\": [16,8,16,{\"cn\":[947456,104816]}],\n\"textures/segment2/segment2_cn.19980.ia1.png\": [16,8,16,{\"cn\":[947456,104832]}],\n\"textures/segment2/segment2_cn.19990.ia1.png\": [16,8,16,{\"cn\":[947456,104848]}],\n\"textures/segment2/segment2_cn.199A0.ia1.png\": [16,8,16,{\"cn\":[947456,104864]}],\n\"textures/segment2/segment2_cn.199B0.ia1.png\": [16,8,16,{\"cn\":[947456,104880]}],\n\"textures/segment2/segment2_cn.199C0.ia1.png\": [16,8,16,{\"cn\":[947456,104896]}],\n\"textures/segment2/segment2_cn.199D0.ia1.png\": [16,8,16,{\"cn\":[947456,104912]}],\n\"textures/segment2/segment2_cn.199E0.ia1.png\": [16,8,16,{\"cn\":[947456,104928]}],\n\"textures/segment2/segment2_cn.199F0.ia1.png\": [16,8,16,{\"cn\":[947456,104944]}],\n\"textures/segment2/segment2_cn.19A00.ia1.png\": [16,8,16,{\"cn\":[947456,104960]}],\n\"textures/segment2/segment2_cn.19A10.ia1.png\": [16,8,16,{\"cn\":[947456,104976]}],\n\"textures/segment2/segment2_cn.19A20.ia1.png\": [16,8,16,{\"cn\":[947456,104992]}],\n\"textures/segment2/segment2_cn.19A30.ia1.png\": [16,8,16,{\"cn\":[947456,105008]}],\n\"textures/segment2/segment2_cn.19A40.ia1.png\": [16,8,16,{\"cn\":[947456,105024]}],\n\"textures/segment2/segment2_cn.19A50.ia1.png\": [16,8,16,{\"cn\":[947456,105040]}],\n\"textures/segment2/segment2_cn.19A60.ia1.png\": [16,8,16,{\"cn\":[947456,105056]}],\n\"textures/segment2/segment2_cn.19A70.ia1.png\": [16,8,16,{\"cn\":[947456,105072]}],\n\"textures/segment2/segment2_cn.19A80.ia1.png\": [16,8,16,{\"cn\":[947456,105088]}],\n\"textures/segment2/segment2_cn.19A90.ia1.png\": [16,8,16,{\"cn\":[947456,105104]}],\n\"textures/segment2/segment2_cn.19AA0.ia1.png\": [16,8,16,{\"cn\":[947456,105120]}],\n\"textures/segment2/segment2_cn.19AB0.ia1.png\": [16,8,16,{\"cn\":[947456,105136]}],\n\"textures/segment2/segment2_cn.19AC0.ia1.png\": [16,8,16,{\"cn\":[947456,105152]}],\n\"textures/segment2/segment2_cn.19AD0.ia1.png\": [16,8,16,{\"cn\":[947456,105168]}],\n\"textures/segment2/segment2_cn.19AE0.ia1.png\": [16,8,16,{\"cn\":[947456,105184]}],\n\"textures/segment2/segment2_cn.19AF0.ia1.png\": [16,8,16,{\"cn\":[947456,105200]}],\n\"textures/segment2/segment2_cn.19B00.ia1.png\": [16,8,16,{\"cn\":[947456,105216]}],\n\"textures/segment2/segment2_cn.19B10.ia1.png\": [16,8,16,{\"cn\":[947456,105232]}],\n\"textures/segment2/segment2_cn.19B20.ia1.png\": [16,8,16,{\"cn\":[947456,105248]}],\n\"textures/segment2/segment2_cn.19B30.ia1.png\": [16,8,16,{\"cn\":[947456,105264]}],\n\"textures/segment2/segment2_cn.19B40.ia1.png\": [16,8,16,{\"cn\":[947456,105280]}],\n\"textures/segment2/segment2_cn.19B50.ia1.png\": [16,8,16,{\"cn\":[947456,105296]}],\n\"textures/segment2/segment2_cn.19B60.ia1.png\": [16,8,16,{\"cn\":[947456,105312]}],\n\"textures/segment2/segment2_cn.19B70.ia1.png\": [16,8,16,{\"cn\":[947456,105328]}],\n\"textures/segment2/segment2_cn.19B80.ia1.png\": [16,8,16,{\"cn\":[947456,105344]}],\n\"textures/segment2/segment2_cn.19B90.ia1.png\": [16,8,16,{\"cn\":[947456,105360]}],\n\"textures/segment2/segment2_cn.19BA0.ia1.png\": [16,8,16,{\"cn\":[947456,105376]}],\n\"textures/segment2/segment2_cn.19BB0.ia1.png\": [16,8,16,{\"cn\":[947456,105392]}],\n\"textures/segment2/segment2_cn.19BC0.ia1.png\": [16,8,16,{\"cn\":[947456,105408]}],\n\"textures/segment2/segment2_cn.19BD0.ia1.png\": [16,8,16,{\"cn\":[947456,105424]}],\n\"textures/segment2/segment2_cn.19BE0.ia1.png\": [16,8,16,{\"cn\":[947456,105440]}],\n\"textures/segment2/segment2_cn.19BF0.ia1.png\": [16,8,16,{\"cn\":[947456,105456]}],\n\"textures/segment2/segment2_cn.19C00.ia1.png\": [16,8,16,{\"cn\":[947456,105472]}],\n\"textures/segment2/segment2_cn.19C10.ia1.png\": [16,8,16,{\"cn\":[947456,105488]}],\n\"textures/segment2/segment2_cn.19C20.ia1.png\": [16,8,16,{\"cn\":[947456,105504]}],\n\"textures/segment2/segment2_cn.19C30.ia1.png\": [16,8,16,{\"cn\":[947456,105520]}],\n\"textures/segment2/segment2_cn.19C40.ia1.png\": [16,8,16,{\"cn\":[947456,105536]}],\n\"textures/segment2/segment2_cn.19C50.ia1.png\": [16,8,16,{\"cn\":[947456,105552]}],\n\"textures/segment2/segment2_cn.19C60.ia1.png\": [16,8,16,{\"cn\":[947456,105568]}],\n\"textures/segment2/segment2_cn.19C70.ia1.png\": [16,8,16,{\"cn\":[947456,105584]}],\n\"textures/segment2/segment2_cn.19C80.ia1.png\": [16,8,16,{\"cn\":[947456,105600]}],\n\"textures/segment2/segment2_cn.19C90.ia1.png\": [16,8,16,{\"cn\":[947456,105616]}],\n\"textures/segment2/segment2_cn.19CA0.ia1.png\": [16,8,16,{\"cn\":[947456,105632]}],\n\"textures/segment2/segment2_cn.19CB0.ia1.png\": [16,8,16,{\"cn\":[947456,105648]}],\n\"textures/segment2/segment2_cn.19CC0.ia1.png\": [16,8,16,{\"cn\":[947456,105664]}],\n\"textures/segment2/segment2_cn.19CD0.ia1.png\": [16,8,16,{\"cn\":[947456,105680]}],\n\"textures/segment2/segment2_cn.19CE0.ia1.png\": [16,8,16,{\"cn\":[947456,105696]}],\n\"textures/segment2/segment2_cn.19CF0.ia1.png\": [16,8,16,{\"cn\":[947456,105712]}],\n\"textures/segment2/segment2_cn.19D00.ia1.png\": [16,8,16,{\"cn\":[947456,105728]}],\n\"textures/segment2/segment2_cn.19D10.ia1.png\": [16,8,16,{\"cn\":[947456,105744]}],\n\"textures/segment2/segment2_cn.19D20.ia1.png\": [16,8,16,{\"cn\":[947456,105760]}],\n\"textures/segment2/segment2_cn.19D30.ia1.png\": [16,8,16,{\"cn\":[947456,105776]}],\n\"textures/segment2/segment2_cn.19D40.ia1.png\": [16,8,16,{\"cn\":[947456,105792]}],\n\"textures/segment2/segment2_cn.19D50.ia1.png\": [16,8,16,{\"cn\":[947456,105808]}],\n\"textures/segment2/segment2_cn.19D60.ia1.png\": [16,8,16,{\"cn\":[947456,105824]}],\n\"textures/segment2/segment2_cn.19D70.ia1.png\": [16,8,16,{\"cn\":[947456,105840]}],\n\"textures/segment2/segment2_cn.19D80.ia1.png\": [16,8,16,{\"cn\":[947456,105856]}],\n\"textures/segment2/segment2_cn.19D90.ia1.png\": [16,8,16,{\"cn\":[947456,105872]}],\n\"textures/segment2/segment2_cn.19DA0.ia1.png\": [16,8,16,{\"cn\":[947456,105888]}],\n\"textures/segment2/segment2_cn.19DB0.ia1.png\": [16,8,16,{\"cn\":[947456,105904]}],\n\"textures/segment2/segment2_cn.19DC0.ia1.png\": [16,8,16,{\"cn\":[947456,105920]}],\n\"textures/segment2/segment2_cn.19DD0.ia1.png\": [16,8,16,{\"cn\":[947456,105936]}],\n\"textures/segment2/segment2_cn.19DE0.ia1.png\": [16,8,16,{\"cn\":[947456,105952]}],\n\"textures/segment2/segment2_cn.19DF0.ia1.png\": [16,8,16,{\"cn\":[947456,105968]}],\n\"textures/segment2/segment2_cn.19E00.ia1.png\": [16,8,16,{\"cn\":[947456,105984]}],\n\"textures/segment2/segment2_cn.19E10.ia1.png\": [16,8,16,{\"cn\":[947456,106000]}],\n\"textures/segment2/segment2_cn.19E20.ia1.png\": [16,8,16,{\"cn\":[947456,106016]}],\n\"textures/segment2/segment2_cn.19E30.ia1.png\": [16,8,16,{\"cn\":[947456,106032]}],\n\"textures/segment2/segment2_cn.19E40.ia1.png\": [16,8,16,{\"cn\":[947456,106048]}],\n\"textures/segment2/segment2_cn.19E50.ia1.png\": [16,8,16,{\"cn\":[947456,106064]}],\n\"textures/segment2/segment2_cn.19E60.ia1.png\": [16,8,16,{\"cn\":[947456,106080]}],\n\"textures/segment2/segment2_cn.19E70.ia1.png\": [16,8,16,{\"cn\":[947456,106096]}],\n\"textures/segment2/segment2_cn.19E80.ia1.png\": [16,8,16,{\"cn\":[947456,106112]}],\n\"textures/segment2/segment2_cn.19E90.ia1.png\": [16,8,16,{\"cn\":[947456,106128]}],\n\"textures/segment2/segment2_cn.19EA0.ia1.png\": [16,8,16,{\"cn\":[947456,106144]}],\n\"textures/segment2/segment2_cn.19EB0.ia1.png\": [16,8,16,{\"cn\":[947456,106160]}],\n\"textures/segment2/segment2_cn.19EC0.ia1.png\": [16,8,16,{\"cn\":[947456,106176]}],\n\"textures/segment2/segment2_cn.19ED0.ia1.png\": [16,8,16,{\"cn\":[947456,106192]}],\n\"textures/segment2/segment2_cn.19EE0.ia1.png\": [16,8,16,{\"cn\":[947456,106208]}],\n\"textures/segment2/segment2_cn.19EF0.ia1.png\": [16,8,16,{\"cn\":[947456,106224]}],\n\"textures/segment2/segment2_cn.19F00.ia1.png\": [16,8,16,{\"cn\":[947456,106240]}],\n\"textures/segment2/segment2_cn.19F10.ia1.png\": [16,8,16,{\"cn\":[947456,106256]}],\n\"textures/segment2/segment2_cn.19F20.ia1.png\": [16,8,16,{\"cn\":[947456,106272]}],\n\"textures/segment2/segment2_cn.19F30.ia1.png\": [16,8,16,{\"cn\":[947456,106288]}],\n\"textures/segment2/segment2_cn.19F40.ia1.png\": [16,8,16,{\"cn\":[947456,106304]}],\n\"textures/segment2/segment2_cn.19F50.ia1.png\": [16,8,16,{\"cn\":[947456,106320]}],\n\"textures/segment2/segment2_cn.19F60.ia1.png\": [16,8,16,{\"cn\":[947456,106336]}],\n\"textures/segment2/segment2_cn.19F70.ia1.png\": [16,8,16,{\"cn\":[947456,106352]}],\n\"textures/segment2/segment2_cn.19F80.ia1.png\": [16,8,16,{\"cn\":[947456,106368]}],\n\"textures/segment2/segment2_cn.19F90.ia1.png\": [16,8,16,{\"cn\":[947456,106384]}],\n\"textures/segment2/segment2_cn.19FA0.ia1.png\": [16,8,16,{\"cn\":[947456,106400]}],\n\"textures/segment2/segment2_cn.19FB0.ia1.png\": [16,8,16,{\"cn\":[947456,106416]}],\n\"textures/segment2/segment2_cn.19FC0.ia1.png\": [16,8,16,{\"cn\":[947456,106432]}],\n\"textures/segment2/segment2_cn.19FD0.ia1.png\": [16,8,16,{\"cn\":[947456,106448]}],\n\"textures/segment2/segment2_cn.19FE0.ia1.png\": [16,8,16,{\"cn\":[947456,106464]}],\n\"textures/segment2/segment2_cn.19FF0.ia1.png\": [16,8,16,{\"cn\":[947456,106480]}],\n\"textures/segment2/segment2_cn.1A000.ia1.png\": [16,8,16,{\"cn\":[947456,106496]}],\n\"textures/segment2/segment2_cn.1A010.ia1.png\": [16,8,16,{\"cn\":[947456,106512]}],\n\"textures/segment2/segment2_cn.1A020.ia1.png\": [16,8,16,{\"cn\":[947456,106528]}],\n\"textures/segment2/segment2_cn.1A030.ia1.png\": [16,8,16,{\"cn\":[947456,106544]}],\n\"textures/segment2/segment2_cn.1A040.ia1.png\": [16,8,16,{\"cn\":[947456,106560]}],\n\"textures/segment2/segment2_cn.1A050.ia1.png\": [16,8,16,{\"cn\":[947456,106576]}],\n\"textures/segment2/segment2_cn.1A060.ia1.png\": [16,8,16,{\"cn\":[947456,106592]}],\n\"textures/segment2/segment2_cn.1A070.ia1.png\": [16,8,16,{\"cn\":[947456,106608]}],\n\"textures/segment2/segment2_cn.1A080.ia1.png\": [16,8,16,{\"cn\":[947456,106624]}],\n\"textures/segment2/segment2_cn.1A090.ia1.png\": [16,8,16,{\"cn\":[947456,106640]}],\n\"textures/segment2/segment2_cn.1A0A0.ia1.png\": [16,8,16,{\"cn\":[947456,106656]}],\n\"textures/segment2/segment2_cn.1A0B0.ia1.png\": [16,8,16,{\"cn\":[947456,106672]}],\n\"textures/segment2/segment2_cn.1A0C0.ia1.png\": [16,8,16,{\"cn\":[947456,106688]}],\n\"textures/segment2/segment2_cn.1A0D0.ia1.png\": [16,8,16,{\"cn\":[947456,106704]}],\n\"textures/segment2/segment2_cn.1A0E0.ia1.png\": [16,8,16,{\"cn\":[947456,106720]}],\n\"textures/segment2/segment2_cn.1A0F0.ia1.png\": [16,8,16,{\"cn\":[947456,106736]}],\n\"textures/segment2/segment2_cn.1A100.ia1.png\": [16,8,16,{\"cn\":[947456,106752]}],\n\"textures/segment2/segment2_cn.1A110.ia1.png\": [16,8,16,{\"cn\":[947456,106768]}],\n\"textures/segment2/segment2_cn.1A120.ia1.png\": [16,8,16,{\"cn\":[947456,106784]}],\n\"textures/segment2/segment2_cn.1A130.ia1.png\": [16,8,16,{\"cn\":[947456,106800]}],\n\"textures/segment2/segment2_cn.1A140.ia1.png\": [16,8,16,{\"cn\":[947456,106816]}],\n\"textures/segment2/segment2_cn.1A150.ia1.png\": [16,8,16,{\"cn\":[947456,106832]}],\n\"textures/segment2/segment2_cn.1A160.ia1.png\": [16,8,16,{\"cn\":[947456,106848]}],\n\"textures/segment2/segment2_cn.1A170.ia1.png\": [16,8,16,{\"cn\":[947456,106864]}],\n\"textures/segment2/segment2_cn.1A180.ia1.png\": [16,8,16,{\"cn\":[947456,106880]}],\n\"textures/segment2/segment2_cn.1A190.ia1.png\": [16,8,16,{\"cn\":[947456,106896]}],\n\"textures/segment2/segment2_cn.1A1A0.ia1.png\": [16,8,16,{\"cn\":[947456,106912]}],\n\"textures/segment2/segment2_cn.1A1B0.ia1.png\": [16,8,16,{\"cn\":[947456,106928]}],\n\"textures/segment2/segment2_cn.1A1C0.ia1.png\": [16,8,16,{\"cn\":[947456,106944]}],\n\"textures/segment2/segment2_cn.1A1D0.ia1.png\": [16,8,16,{\"cn\":[947456,106960]}],\n\"textures/segment2/segment2_cn.1A1E0.ia1.png\": [16,8,16,{\"cn\":[947456,106976]}],\n\"textures/segment2/segment2_cn.1A1F0.ia1.png\": [16,8,16,{\"cn\":[947456,106992]}],\n\"textures/segment2/segment2_cn.1A200.ia1.png\": [16,8,16,{\"cn\":[947456,107008]}],\n\"textures/segment2/segment2_cn.1A210.ia1.png\": [16,8,16,{\"cn\":[947456,107024]}],\n\"textures/segment2/segment2_cn.1A220.ia1.png\": [16,8,16,{\"cn\":[947456,107040]}],\n\"textures/segment2/segment2_cn.1A230.ia1.png\": [16,8,16,{\"cn\":[947456,107056]}],\n\"textures/segment2/segment2_cn.1A240.ia1.png\": [16,8,16,{\"cn\":[947456,107072]}],\n\"textures/segment2/segment2_cn.1A250.ia1.png\": [16,8,16,{\"cn\":[947456,107088]}],\n\"textures/segment2/segment2_cn.1A260.ia1.png\": [16,8,16,{\"cn\":[947456,107104]}],\n\"textures/segment2/segment2_cn.1A270.ia1.png\": [16,8,16,{\"cn\":[947456,107120]}],\n\"textures/segment2/segment2_cn.1A280.ia1.png\": [16,8,16,{\"cn\":[947456,107136]}],\n\"textures/segment2/segment2_cn.1A290.ia1.png\": [16,8,16,{\"cn\":[947456,107152]}],\n\"textures/segment2/segment2_cn.1A2A0.ia1.png\": [16,8,16,{\"cn\":[947456,107168]}],\n\"textures/segment2/segment2_cn.1A2B0.ia1.png\": [16,8,16,{\"cn\":[947456,107184]}],\n\"textures/segment2/segment2_cn.1A2C0.ia1.png\": [16,8,16,{\"cn\":[947456,107200]}],\n\"textures/segment2/segment2_cn.1A2D0.ia1.png\": [16,8,16,{\"cn\":[947456,107216]}],\n\"textures/segment2/segment2_cn.1A2E0.ia1.png\": [16,8,16,{\"cn\":[947456,107232]}],\n\"textures/segment2/segment2_cn.1A2F0.ia1.png\": [16,8,16,{\"cn\":[947456,107248]}],\n\"textures/segment2/segment2_cn.1A300.ia1.png\": [16,8,16,{\"cn\":[947456,107264]}],\n\"textures/segment2/segment2_cn.1A310.ia1.png\": [16,8,16,{\"cn\":[947456,107280]}],\n\"textures/segment2/segment2_cn.1A320.ia1.png\": [16,8,16,{\"cn\":[947456,107296]}],\n\"textures/segment2/segment2_cn.1A330.ia1.png\": [16,8,16,{\"cn\":[947456,107312]}],\n\"textures/segment2/segment2_cn.1A340.ia1.png\": [16,8,16,{\"cn\":[947456,107328]}],\n\"textures/segment2/segment2_cn.1A350.ia1.png\": [16,8,16,{\"cn\":[947456,107344]}],\n\"textures/segment2/segment2_cn.1A360.ia1.png\": [16,8,16,{\"cn\":[947456,107360]}],\n\"textures/segment2/segment2_cn.1A370.ia1.png\": [16,8,16,{\"cn\":[947456,107376]}],\n\"textures/segment2/segment2_cn.1A380.ia1.png\": [16,8,16,{\"cn\":[947456,107392]}],\n\"textures/segment2/segment2_cn.1A390.ia1.png\": [16,8,16,{\"cn\":[947456,107408]}],\n\"textures/segment2/segment2_cn.1A3A0.ia1.png\": [16,8,16,{\"cn\":[947456,107424]}],\n\"textures/segment2/segment2_cn.1A3B0.ia1.png\": [16,8,16,{\"cn\":[947456,107440]}],\n\"textures/segment2/segment2_cn.1A3C0.ia1.png\": [16,8,16,{\"cn\":[947456,107456]}],\n\"textures/segment2/segment2_cn.1A3D0.ia1.png\": [16,8,16,{\"cn\":[947456,107472]}],\n\"textures/segment2/segment2_cn.1A3E0.ia1.png\": [16,8,16,{\"cn\":[947456,107488]}],\n\"textures/segment2/segment2_cn.1A3F0.ia1.png\": [16,8,16,{\"cn\":[947456,107504]}],\n\"textures/segment2/segment2_cn.1A400.ia1.png\": [16,8,16,{\"cn\":[947456,107520]}],\n\"textures/segment2/segment2_cn.1A410.ia1.png\": [16,8,16,{\"cn\":[947456,107536]}],\n\"textures/segment2/segment2_cn.1A420.ia1.png\": [16,8,16,{\"cn\":[947456,107552]}],\n\"textures/segment2/segment2_cn.1A430.ia1.png\": [16,8,16,{\"cn\":[947456,107568]}],\n\"textures/segment2/segment2_cn.1A440.ia1.png\": [16,8,16,{\"cn\":[947456,107584]}],\n\"textures/segment2/segment2_cn.1A450.ia1.png\": [16,8,16,{\"cn\":[947456,107600]}],\n\"textures/segment2/segment2_cn.1A460.ia1.png\": [16,8,16,{\"cn\":[947456,107616]}],\n\"textures/segment2/segment2_cn.1A470.ia1.png\": [16,8,16,{\"cn\":[947456,107632]}],\n\"textures/segment2/segment2_cn.1A480.ia1.png\": [16,8,16,{\"cn\":[947456,107648]}],\n\"textures/segment2/segment2_cn.1A490.ia1.png\": [16,8,16,{\"cn\":[947456,107664]}],\n\"textures/segment2/segment2_cn.1A4A0.ia1.png\": [16,8,16,{\"cn\":[947456,107680]}],\n\"textures/segment2/segment2_cn.1A4B0.ia1.png\": [16,8,16,{\"cn\":[947456,107696]}],\n\"textures/segment2/segment2_cn.1A4C0.ia1.png\": [16,8,16,{\"cn\":[947456,107712]}],\n\"textures/segment2/segment2_cn.1A4D0.ia1.png\": [16,8,16,{\"cn\":[947456,107728]}],\n\"textures/segment2/segment2_cn.1A4E0.ia1.png\": [16,8,16,{\"cn\":[947456,107744]}],\n\"textures/segment2/segment2_cn.1A4F0.ia1.png\": [16,8,16,{\"cn\":[947456,107760]}],\n\"textures/segment2/segment2_cn.1A500.ia1.png\": [16,8,16,{\"cn\":[947456,107776]}],\n\"textures/segment2/segment2_cn.1A510.ia1.png\": [16,8,16,{\"cn\":[947456,107792]}],\n\"textures/segment2/segment2_cn.1A520.ia1.png\": [16,8,16,{\"cn\":[947456,107808]}],\n\"textures/segment2/segment2_cn.1A530.ia1.png\": [16,8,16,{\"cn\":[947456,107824]}],\n\"textures/segment2/segment2_cn.1A540.ia1.png\": [16,8,16,{\"cn\":[947456,107840]}],\n\"textures/segment2/segment2_cn.1A550.ia1.png\": [16,8,16,{\"cn\":[947456,107856]}],\n\"textures/segment2/segment2_cn.1A560.ia1.png\": [16,8,16,{\"cn\":[947456,107872]}],\n\"textures/segment2/segment2_cn.1A570.ia1.png\": [16,8,16,{\"cn\":[947456,107888]}],\n\"textures/segment2/segment2_cn.1A580.ia1.png\": [16,8,16,{\"cn\":[947456,107904]}],\n\"textures/segment2/segment2_cn.1A590.ia1.png\": [16,8,16,{\"cn\":[947456,107920]}],\n\"textures/segment2/segment2_cn.1A5A0.ia1.png\": [16,8,16,{\"cn\":[947456,107936]}],\n\"textures/segment2/segment2_cn.1A5B0.ia1.png\": [16,8,16,{\"cn\":[947456,107952]}],\n\"textures/segment2/segment2_cn.1A5C0.ia1.png\": [16,8,16,{\"cn\":[947456,107968]}],\n\"textures/segment2/segment2_cn.1A5D0.ia1.png\": [16,8,16,{\"cn\":[947456,107984]}],\n\"textures/segment2/segment2_cn.1A5E0.ia1.png\": [16,8,16,{\"cn\":[947456,108000]}],\n\"textures/segment2/segment2_cn.1A5F0.ia1.png\": [16,8,16,{\"cn\":[947456,108016]}],\n\"textures/segment2/segment2_cn.1A600.ia1.png\": [16,8,16,{\"cn\":[947456,108032]}],\n\"textures/segment2/segment2_cn.1A610.ia1.png\": [16,8,16,{\"cn\":[947456,108048]}],\n\"textures/segment2/segment2_cn.1A620.ia1.png\": [16,8,16,{\"cn\":[947456,108064]}],\n\"textures/segment2/segment2_cn.1A630.ia1.png\": [16,8,16,{\"cn\":[947456,108080]}],\n\"textures/segment2/segment2_cn.1A640.ia1.png\": [16,8,16,{\"cn\":[947456,108096]}],\n\"textures/segment2/segment2_cn.1A650.ia1.png\": [16,8,16,{\"cn\":[947456,108112]}],\n\"textures/segment2/segment2_cn.1A660.ia1.png\": [16,8,16,{\"cn\":[947456,108128]}],\n\"textures/segment2/segment2_cn.1A670.ia1.png\": [16,8,16,{\"cn\":[947456,108144]}],\n\"textures/segment2/segment2_cn.1A680.ia1.png\": [16,8,16,{\"cn\":[947456,108160]}],\n\"textures/segment2/segment2_cn.1A690.ia1.png\": [16,8,16,{\"cn\":[947456,108176]}],\n\"textures/segment2/segment2_cn.1A6A0.ia1.png\": [16,8,16,{\"cn\":[947456,108192]}],\n\"textures/segment2/segment2_cn.1A6B0.ia1.png\": [16,8,16,{\"cn\":[947456,108208]}],\n\"textures/segment2/segment2_cn.1A6C0.ia1.png\": [16,8,16,{\"cn\":[947456,108224]}],\n\"textures/segment2/segment2_cn.1A6D0.ia1.png\": [16,8,16,{\"cn\":[947456,108240]}],\n\"textures/segment2/segment2_cn.1A6E0.ia1.png\": [16,8,16,{\"cn\":[947456,108256]}],\n\"textures/segment2/segment2_cn.1A6F0.ia1.png\": [16,8,16,{\"cn\":[947456,108272]}],\n\"textures/segment2/segment2_cn.1A700.ia1.png\": [16,8,16,{\"cn\":[947456,108288]}],\n\"textures/segment2/segment2_cn.1A710.ia1.png\": [16,8,16,{\"cn\":[947456,108304]}],\n\"textures/segment2/segment2_cn.1A720.ia1.png\": [16,8,16,{\"cn\":[947456,108320]}],\n\"textures/segment2/segment2_cn.1A730.ia1.png\": [16,8,16,{\"cn\":[947456,108336]}],\n\"textures/segment2/segment2_cn.1A740.ia1.png\": [16,8,16,{\"cn\":[947456,108352]}],\n\"textures/segment2/segment2_cn.1A750.ia1.png\": [16,8,16,{\"cn\":[947456,108368]}],\n\"textures/segment2/segment2_cn.1A760.ia1.png\": [16,8,16,{\"cn\":[947456,108384]}],\n\"textures/segment2/segment2_cn.1A770.ia1.png\": [16,8,16,{\"cn\":[947456,108400]}],\n\"textures/segment2/segment2_cn.1A780.ia1.png\": [16,8,16,{\"cn\":[947456,108416]}],\n\"textures/segment2/segment2_cn.1A790.ia1.png\": [16,8,16,{\"cn\":[947456,108432]}],\n\"textures/segment2/segment2_cn.1A7A0.ia1.png\": [16,8,16,{\"cn\":[947456,108448]}],\n\"textures/segment2/segment2_cn.1A7B0.ia1.png\": [16,8,16,{\"cn\":[947456,108464]}],\n\"textures/segment2/segment2_cn.1A7C0.ia1.png\": [16,8,16,{\"cn\":[947456,108480]}],\n\"textures/segment2/segment2_cn.1A7D0.ia1.png\": [16,8,16,{\"cn\":[947456,108496]}],\n\"textures/segment2/segment2_cn.1A7E0.ia1.png\": [16,8,16,{\"cn\":[947456,108512]}],\n\"textures/segment2/segment2_cn.1A7F0.ia1.png\": [16,8,16,{\"cn\":[947456,108528]}],\n\"textures/segment2/segment2_cn.1A800.ia1.png\": [16,8,16,{\"cn\":[947456,108544]}],\n\"textures/segment2/segment2_cn.1A810.ia1.png\": [16,8,16,{\"cn\":[947456,108560]}],\n\"textures/segment2/segment2_cn.1A820.ia1.png\": [16,8,16,{\"cn\":[947456,108576]}],\n\"textures/segment2/segment2_cn.1A830.ia1.png\": [16,8,16,{\"cn\":[947456,108592]}],\n\"textures/segment2/segment2_cn.1A840.ia1.png\": [16,8,16,{\"cn\":[947456,108608]}],\n\"textures/segment2/segment2_cn.1A850.ia1.png\": [16,8,16,{\"cn\":[947456,108624]}],\n\"textures/segment2/segment2_cn.1A860.ia1.png\": [16,8,16,{\"cn\":[947456,108640]}],\n\"textures/segment2/segment2_cn.1A870.ia1.png\": [16,8,16,{\"cn\":[947456,108656]}],\n\"textures/segment2/segment2_cn.1A880.ia1.png\": [16,8,16,{\"cn\":[947456,108672]}],\n\"textures/segment2/segment2_cn.1A890.ia1.png\": [16,8,16,{\"cn\":[947456,108688]}],\n\"textures/segment2/segment2_cn.1A8A0.ia1.png\": [16,8,16,{\"cn\":[947456,108704]}],\n\"textures/segment2/segment2_cn.1A8B0.ia1.png\": [16,8,16,{\"cn\":[947456,108720]}],\n\"textures/segment2/segment2_cn.1A8C0.ia1.png\": [16,8,16,{\"cn\":[947456,108736]}],\n\"textures/segment2/segment2_cn.1A8D0.ia1.png\": [16,8,16,{\"cn\":[947456,108752]}],\n\"textures/segment2/segment2_cn.1A8E0.ia1.png\": [16,8,16,{\"cn\":[947456,108768]}],\n\"textures/segment2/segment2_cn.1A8F0.ia1.png\": [16,8,16,{\"cn\":[947456,108784]}],\n\"textures/segment2/segment2_cn.1A900.ia1.png\": [16,8,16,{\"cn\":[947456,108800]}],\n\"textures/segment2/segment2_cn.1A910.ia1.png\": [16,8,16,{\"cn\":[947456,108816]}],\n\"textures/segment2/segment2_cn.1A920.ia1.png\": [16,8,16,{\"cn\":[947456,108832]}],\n\"textures/segment2/segment2_cn.1A930.ia1.png\": [16,8,16,{\"cn\":[947456,108848]}],\n\"textures/segment2/segment2_cn.1A940.ia1.png\": [16,8,16,{\"cn\":[947456,108864]}],\n\"textures/segment2/segment2_cn.1A950.ia1.png\": [16,8,16,{\"cn\":[947456,108880]}],\n\"textures/segment2/segment2_cn.1A960.ia1.png\": [16,8,16,{\"cn\":[947456,108896]}],\n\"textures/segment2/segment2_cn.1A970.ia1.png\": [16,8,16,{\"cn\":[947456,108912]}],\n\"textures/segment2/segment2_cn.1A980.ia1.png\": [16,8,16,{\"cn\":[947456,108928]}],\n\"textures/segment2/segment2_cn.1A990.ia1.png\": [16,8,16,{\"cn\":[947456,108944]}],\n\"textures/segment2/segment2_cn.1A9A0.ia1.png\": [16,8,16,{\"cn\":[947456,108960]}],\n\"textures/segment2/segment2_cn.1A9B0.ia1.png\": [16,8,16,{\"cn\":[947456,108976]}],\n\"textures/segment2/segment2_cn.1A9C0.ia1.png\": [16,8,16,{\"cn\":[947456,108992]}],\n\"textures/segment2/segment2_cn.1A9D0.ia1.png\": [16,8,16,{\"cn\":[947456,109008]}],\n\"textures/segment2/segment2_cn.1A9E0.ia1.png\": [16,8,16,{\"cn\":[947456,109024]}],\n\"textures/segment2/segment2_cn.1A9F0.ia1.png\": [16,8,16,{\"cn\":[947456,109040]}],\n\"textures/segment2/segment2_cn.1AA00.ia1.png\": [16,8,16,{\"cn\":[947456,109056]}],\n\"textures/segment2/segment2_cn.1AA10.ia1.png\": [16,8,16,{\"cn\":[947456,109072]}],\n\"textures/segment2/segment2_cn.1AA20.ia1.png\": [16,8,16,{\"cn\":[947456,109088]}],\n\"textures/segment2/segment2_cn.1AA30.ia1.png\": [16,8,16,{\"cn\":[947456,109104]}],\n\"textures/segment2/segment2_cn.1AA40.ia1.png\": [16,8,16,{\"cn\":[947456,109120]}],\n\"textures/segment2/segment2_cn.1AA50.ia1.png\": [16,8,16,{\"cn\":[947456,109136]}],\n\"textures/segment2/segment2_cn.1AA60.ia1.png\": [16,8,16,{\"cn\":[947456,109152]}],\n\"textures/segment2/segment2_cn.1AA70.ia1.png\": [16,8,16,{\"cn\":[947456,109168]}],\n\"textures/segment2/segment2_cn.1AA80.ia1.png\": [16,8,16,{\"cn\":[947456,109184]}],\n\"textures/segment2/segment2_cn.1AA90.ia1.png\": [16,8,16,{\"cn\":[947456,109200]}],\n\"textures/segment2/segment2_cn.1AAA0.ia1.png\": [16,8,16,{\"cn\":[947456,109216]}],\n\"textures/segment2/segment2_cn.1AAB0.ia1.png\": [16,8,16,{\"cn\":[947456,109232]}],\n\"textures/segment2/segment2_cn.1AAC0.ia1.png\": [16,8,16,{\"cn\":[947456,109248]}],\n\"textures/segment2/segment2_cn.1AAD0.ia1.png\": [16,8,16,{\"cn\":[947456,109264]}],\n\"textures/segment2/segment2_cn.1AAE0.ia1.png\": [16,8,16,{\"cn\":[947456,109280]}],\n\"textures/segment2/segment2_cn.1AAF0.ia1.png\": [16,8,16,{\"cn\":[947456,109296]}],\n\"textures/segment2/segment2_cn.1AB00.ia1.png\": [16,8,16,{\"cn\":[947456,109312]}],\n\"textures/segment2/segment2_cn.1AB10.ia1.png\": [16,8,16,{\"cn\":[947456,109328]}],\n\"textures/segment2/segment2_cn.1AB20.ia1.png\": [16,8,16,{\"cn\":[947456,109344]}],\n\"textures/segment2/segment2_cn.1AB30.ia1.png\": [16,8,16,{\"cn\":[947456,109360]}],\n\"textures/segment2/segment2_cn.1AB40.ia1.png\": [16,8,16,{\"cn\":[947456,109376]}],\n\"textures/segment2/segment2_cn.1AB50.ia1.png\": [16,8,16,{\"cn\":[947456,109392]}],\n\"textures/segment2/segment2_cn.1AB60.ia1.png\": [16,8,16,{\"cn\":[947456,109408]}],\n\"textures/segment2/segment2_cn.1AB70.ia1.png\": [16,8,16,{\"cn\":[947456,109424]}],\n\"textures/segment2/segment2_cn.1AB80.ia1.png\": [16,8,16,{\"cn\":[947456,109440]}],\n\"textures/segment2/segment2_cn.1AB90.ia1.png\": [16,8,16,{\"cn\":[947456,109456]}],\n\"textures/segment2/segment2_cn.1ABA0.ia1.png\": [16,8,16,{\"cn\":[947456,109472]}],\n\"textures/segment2/segment2_cn.1ABB0.ia1.png\": [16,8,16,{\"cn\":[947456,109488]}],\n\"textures/segment2/segment2_cn.1ABC0.ia1.png\": [16,8,16,{\"cn\":[947456,109504]}],\n\"textures/segment2/segment2_cn.1ABD0.ia1.png\": [16,8,16,{\"cn\":[947456,109520]}],\n\"textures/segment2/segment2_cn.1ABE0.ia1.png\": [16,8,16,{\"cn\":[947456,109536]}],\n\"textures/segment2/segment2_cn.1ABF0.ia1.png\": [16,8,16,{\"cn\":[947456,109552]}],\n\"textures/segment2/segment2_cn.1AC00.ia1.png\": [16,8,16,{\"cn\":[947456,109568]}],\n\"textures/segment2/segment2_cn.1AC10.ia1.png\": [16,8,16,{\"cn\":[947456,109584]}],\n\"textures/segment2/segment2_cn.1AC20.ia1.png\": [16,8,16,{\"cn\":[947456,109600]}],\n\"textures/segment2/segment2_cn.1AC30.ia1.png\": [16,8,16,{\"cn\":[947456,109616]}],\n\"textures/segment2/segment2_cn.1AC40.ia1.png\": [16,8,16,{\"cn\":[947456,109632]}],\n\"textures/segment2/segment2_cn.1AC50.ia1.png\": [16,8,16,{\"cn\":[947456,109648]}],\n\"textures/segment2/segment2_cn.1AC60.ia1.png\": [16,8,16,{\"cn\":[947456,109664]}],\n\"textures/segment2/segment2_cn.1AC70.ia1.png\": [16,8,16,{\"cn\":[947456,109680]}],\n\"textures/segment2/segment2_cn.1AC80.ia1.png\": [16,8,16,{\"cn\":[947456,109696]}],\n\"textures/segment2/segment2_cn.1AC90.ia1.png\": [16,8,16,{\"cn\":[947456,109712]}],\n\"textures/segment2/segment2_cn.1ACA0.ia1.png\": [16,8,16,{\"cn\":[947456,109728]}],\n\"textures/segment2/segment2_cn.1ACB0.ia1.png\": [16,8,16,{\"cn\":[947456,109744]}],\n\"textures/segment2/segment2_cn.1ACC0.ia1.png\": [16,8,16,{\"cn\":[947456,109760]}],\n\"textures/segment2/segment2_cn.1ACD0.ia1.png\": [16,8,16,{\"cn\":[947456,109776]}],\n\"textures/segment2/segment2_cn.1ACE0.ia1.png\": [16,8,16,{\"cn\":[947456,109792]}],\n\"textures/segment2/segment2_cn.1ACF0.ia1.png\": [16,8,16,{\"cn\":[947456,109808]}],\n\"textures/segment2/segment2_cn.1AD00.ia1.png\": [16,8,16,{\"cn\":[947456,109824]}],\n\"textures/segment2/segment2_cn.1AD10.ia1.png\": [16,8,16,{\"cn\":[947456,109840]}],\n\"textures/segment2/segment2_cn.1AD20.ia1.png\": [16,8,16,{\"cn\":[947456,109856]}],\n\"textures/segment2/segment2_cn.1AD30.ia1.png\": [16,8,16,{\"cn\":[947456,109872]}],\n\"textures/segment2/segment2_cn.1AD40.ia1.png\": [16,8,16,{\"cn\":[947456,109888]}],\n\"textures/segment2/segment2_cn.1AD50.ia1.png\": [16,8,16,{\"cn\":[947456,109904]}],\n\"textures/segment2/segment2_cn.1AD60.ia1.png\": [16,8,16,{\"cn\":[947456,109920]}],\n\"textures/segment2/segment2_cn.1AD70.ia1.png\": [16,8,16,{\"cn\":[947456,109936]}],\n\"textures/segment2/segment2_cn.1AD80.ia1.png\": [16,8,16,{\"cn\":[947456,109952]}],\n\"textures/segment2/segment2_cn.1AD90.ia1.png\": [16,8,16,{\"cn\":[947456,109968]}],\n\"textures/segment2/segment2_cn.1ADA0.ia1.png\": [16,8,16,{\"cn\":[947456,109984]}],\n\"textures/segment2/segment2_cn.1ADB0.ia1.png\": [16,8,16,{\"cn\":[947456,110000]}],\n\"textures/segment2/segment2_cn.1ADC0.ia1.png\": [16,8,16,{\"cn\":[947456,110016]}],\n\"textures/segment2/segment2_cn.1ADD0.ia1.png\": [16,8,16,{\"cn\":[947456,110032]}],\n\"textures/segment2/segment2_cn.1ADE0.ia1.png\": [16,8,16,{\"cn\":[947456,110048]}],\n\"textures/segment2/segment2_cn.1ADF0.ia1.png\": [16,8,16,{\"cn\":[947456,110064]}],\n\"textures/segment2/segment2_cn.1AE00.ia1.png\": [16,8,16,{\"cn\":[947456,110080]}],\n\"textures/segment2/segment2_cn.1AE10.ia1.png\": [16,8,16,{\"cn\":[947456,110096]}],\n\"textures/segment2/segment2_cn.1AE20.ia1.png\": [16,8,16,{\"cn\":[947456,110112]}],\n\"textures/segment2/segment2_cn.1AE30.ia1.png\": [16,8,16,{\"cn\":[947456,110128]}],\n\"textures/segment2/segment2_cn.1AE40.ia1.png\": [16,8,16,{\"cn\":[947456,110144]}],\n\"textures/segment2/segment2_cn.1AE50.ia1.png\": [16,8,16,{\"cn\":[947456,110160]}],\n\"textures/segment2/segment2_cn.1AE60.ia1.png\": [16,8,16,{\"cn\":[947456,110176]}],\n\"textures/segment2/segment2_cn.1AE70.ia1.png\": [16,8,16,{\"cn\":[947456,110192]}],\n\"textures/segment2/segment2_cn.1AE80.ia1.png\": [16,8,16,{\"cn\":[947456,110208]}],\n\"textures/segment2/segment2_cn.1AE90.ia1.png\": [16,8,16,{\"cn\":[947456,110224]}],\n\"textures/segment2/segment2_cn.1AEA0.ia1.png\": [16,8,16,{\"cn\":[947456,110240]}],\n\"textures/segment2/segment2_cn.1AEB0.ia1.png\": [16,8,16,{\"cn\":[947456,110256]}],\n\"textures/segment2/segment2_cn.1AEC0.ia1.png\": [16,8,16,{\"cn\":[947456,110272]}],\n\"textures/segment2/segment2_cn.1AED0.ia1.png\": [16,8,16,{\"cn\":[947456,110288]}],\n\"textures/segment2/segment2_cn.1AEE0.ia1.png\": [16,8,16,{\"cn\":[947456,110304]}],\n\"textures/segment2/segment2_cn.1AEF0.ia1.png\": [16,8,16,{\"cn\":[947456,110320]}],\n\"textures/segment2/segment2_cn.1AF00.ia1.png\": [16,8,16,{\"cn\":[947456,110336]}],\n\"textures/segment2/segment2_cn.1AF10.ia1.png\": [16,8,16,{\"cn\":[947456,110352]}],\n\"textures/segment2/segment2_cn.1AF20.ia1.png\": [16,8,16,{\"cn\":[947456,110368]}],\n\"textures/segment2/segment2_cn.1AF30.ia1.png\": [16,8,16,{\"cn\":[947456,110384]}],\n\"textures/segment2/segment2_cn.1AF40.ia1.png\": [16,8,16,{\"cn\":[947456,110400]}],\n\"textures/segment2/segment2_cn.1AF50.ia1.png\": [16,8,16,{\"cn\":[947456,110416]}],\n\"textures/segment2/segment2_cn.1AF60.ia1.png\": [16,8,16,{\"cn\":[947456,110432]}],\n\"textures/segment2/segment2_cn.1AF70.ia1.png\": [16,8,16,{\"cn\":[947456,110448]}],\n\"textures/segment2/segment2_cn.1AF80.ia1.png\": [16,8,16,{\"cn\":[947456,110464]}],\n\"textures/segment2/segment2_cn.1AF90.ia1.png\": [16,8,16,{\"cn\":[947456,110480]}],\n\"textures/segment2/segment2_cn.1AFA0.ia1.png\": [16,8,16,{\"cn\":[947456,110496]}],\n\"textures/segment2/segment2_cn.1AFB0.ia1.png\": [16,8,16,{\"cn\":[947456,110512]}],\n\"textures/segment2/segment2_cn.1AFC0.ia1.png\": [16,8,16,{\"cn\":[947456,110528]}],\n\"textures/segment2/segment2_cn.1AFD0.ia1.png\": [16,8,16,{\"cn\":[947456,110544]}],\n\"textures/segment2/segment2_cn.1AFE0.ia1.png\": [16,8,16,{\"cn\":[947456,110560]}],\n\"textures/segment2/segment2_cn.1AFF0.ia1.png\": [16,8,16,{\"cn\":[947456,110576]}],\n\"textures/segment2/segment2_cn.1B000.ia1.png\": [16,8,16,{\"cn\":[947456,110592]}],\n\"textures/segment2/segment2_cn.1B010.ia1.png\": [16,8,16,{\"cn\":[947456,110608]}],\n\"textures/segment2/segment2_cn.1B020.ia1.png\": [16,8,16,{\"cn\":[947456,110624]}],\n\"textures/segment2/segment2_cn.1B030.ia1.png\": [16,8,16,{\"cn\":[947456,110640]}],\n\"textures/segment2/segment2_cn.1B040.ia1.png\": [16,8,16,{\"cn\":[947456,110656]}],\n\"textures/segment2/segment2_cn.1B050.ia1.png\": [16,8,16,{\"cn\":[947456,110672]}],\n\"textures/segment2/segment2_cn.1B060.ia1.png\": [16,8,16,{\"cn\":[947456,110688]}],\n\"textures/segment2/segment2_cn.1B070.ia1.png\": [16,8,16,{\"cn\":[947456,110704]}],\n\"textures/segment2/segment2_cn.1B080.ia1.png\": [16,8,16,{\"cn\":[947456,110720]}],\n\"textures/segment2/segment2_cn.1B090.ia1.png\": [16,8,16,{\"cn\":[947456,110736]}],\n\"textures/segment2/segment2_cn.1B0A0.ia1.png\": [16,8,16,{\"cn\":[947456,110752]}],\n\"textures/segment2/segment2_cn.1B0B0.ia1.png\": [16,8,16,{\"cn\":[947456,110768]}],\n\"textures/segment2/segment2_cn.1B0C0.ia1.png\": [16,8,16,{\"cn\":[947456,110784]}],\n\"textures/segment2/segment2_cn.1B0D0.ia1.png\": [16,8,16,{\"cn\":[947456,110800]}],\n\"textures/segment2/segment2_cn.1B0E0.ia1.png\": [16,8,16,{\"cn\":[947456,110816]}],\n\"textures/segment2/segment2_cn.1B0F0.ia1.png\": [16,8,16,{\"cn\":[947456,110832]}],\n\"textures/segment2/segment2_cn.1B100.ia1.png\": [16,8,16,{\"cn\":[947456,110848]}],\n\"textures/segment2/segment2_cn.1B110.ia1.png\": [16,8,16,{\"cn\":[947456,110864]}],\n\"textures/segment2/segment2_cn.1B120.ia1.png\": [16,8,16,{\"cn\":[947456,110880]}],\n\"textures/segment2/segment2_cn.1B130.ia1.png\": [16,8,16,{\"cn\":[947456,110896]}],\n\"textures/segment2/segment2_cn.1B140.ia1.png\": [16,8,16,{\"cn\":[947456,110912]}],\n\"textures/segment2/segment2_cn.1B150.ia1.png\": [16,8,16,{\"cn\":[947456,110928]}],\n\"textures/segment2/segment2_cn.1B160.ia1.png\": [16,8,16,{\"cn\":[947456,110944]}],\n\"textures/segment2/segment2_cn.1B170.ia1.png\": [16,8,16,{\"cn\":[947456,110960]}],\n\"textures/segment2/segment2_cn.1B180.ia1.png\": [16,8,16,{\"cn\":[947456,110976]}],\n\"textures/segment2/segment2_cn.1B190.ia1.png\": [16,8,16,{\"cn\":[947456,110992]}],\n\"textures/segment2/segment2_cn.1B1A0.ia1.png\": [16,8,16,{\"cn\":[947456,111008]}],\n\"textures/segment2/segment2_cn.1B1B0.ia1.png\": [16,8,16,{\"cn\":[947456,111024]}],\n\"textures/segment2/segment2_cn.1B1C0.ia1.png\": [16,8,16,{\"cn\":[947456,111040]}],\n\"textures/segment2/segment2_cn.1B1D0.ia1.png\": [16,8,16,{\"cn\":[947456,111056]}],\n\"textures/segment2/segment2_cn.1B1E0.ia1.png\": [16,8,16,{\"cn\":[947456,111072]}],\n\"textures/segment2/segment2_cn.1B1F0.ia1.png\": [16,8,16,{\"cn\":[947456,111088]}],\n\"textures/segment2/segment2_cn.1B200.ia1.png\": [16,8,16,{\"cn\":[947456,111104]}],\n\"textures/segment2/segment2_cn.1B210.ia1.png\": [16,8,16,{\"cn\":[947456,111120]}],\n\"textures/segment2/segment2_cn.1B220.ia1.png\": [16,8,16,{\"cn\":[947456,111136]}],\n\"textures/segment2/segment2_cn.1B230.ia1.png\": [16,8,16,{\"cn\":[947456,111152]}],\n\"textures/segment2/segment2_cn.1B240.ia1.png\": [16,8,16,{\"cn\":[947456,111168]}],\n\"textures/segment2/segment2_cn.1B250.ia1.png\": [16,8,16,{\"cn\":[947456,111184]}],\n\"textures/segment2/segment2_cn.1B260.ia1.png\": [16,8,16,{\"cn\":[947456,111200]}],\n\"textures/segment2/segment2_cn.1B270.ia1.png\": [16,8,16,{\"cn\":[947456,111216]}],\n\"textures/segment2/segment2_cn.1B280.ia1.png\": [16,8,16,{\"cn\":[947456,111232]}],\n\"textures/segment2/segment2_cn.1B290.ia1.png\": [16,8,16,{\"cn\":[947456,111248]}],\n\"textures/segment2/segment2_cn.1B2A0.ia1.png\": [16,8,16,{\"cn\":[947456,111264]}],\n\"textures/segment2/segment2_cn.1B2B0.ia1.png\": [16,8,16,{\"cn\":[947456,111280]}],\n\"textures/segment2/segment2_cn.1B2C0.ia1.png\": [16,8,16,{\"cn\":[947456,111296]}],\n\"textures/segment2/segment2_cn.1B2D0.ia1.png\": [16,8,16,{\"cn\":[947456,111312]}],\n\"textures/segment2/segment2_cn.1B2E0.ia1.png\": [16,8,16,{\"cn\":[947456,111328]}],\n\"textures/segment2/segment2_cn.1B2F0.ia1.png\": [16,8,16,{\"cn\":[947456,111344]}],\n\"textures/segment2/segment2_cn.1B300.ia1.png\": [16,8,16,{\"cn\":[947456,111360]}],\n\"textures/segment2/segment2_cn.1B310.ia1.png\": [16,8,16,{\"cn\":[947456,111376]}],\n\"textures/segment2/segment2_cn.1B320.ia1.png\": [16,8,16,{\"cn\":[947456,111392]}],\n\"textures/segment2/segment2_cn.1B330.ia1.png\": [16,8,16,{\"cn\":[947456,111408]}],\n\"textures/segment2/segment2_cn.1B340.ia1.png\": [16,8,16,{\"cn\":[947456,111424]}],\n\"textures/segment2/segment2_cn.1B350.ia1.png\": [16,8,16,{\"cn\":[947456,111440]}],\n\"textures/segment2/segment2_cn.1B360.ia1.png\": [16,8,16,{\"cn\":[947456,111456]}],\n\"textures/segment2/segment2_cn.1B370.ia1.png\": [16,8,16,{\"cn\":[947456,111472]}],\n\"textures/segment2/segment2_cn.1B380.ia1.png\": [16,8,16,{\"cn\":[947456,111488]}],\n\"textures/segment2/segment2_cn.1B390.ia1.png\": [16,8,16,{\"cn\":[947456,111504]}],\n\"textures/segment2/segment2_cn.1B3A0.ia1.png\": [16,8,16,{\"cn\":[947456,111520]}],\n\"textures/segment2/segment2_cn.1B3B0.ia1.png\": [16,8,16,{\"cn\":[947456,111536]}],\n\"textures/segment2/segment2_cn.1B3C0.ia1.png\": [16,8,16,{\"cn\":[947456,111552]}],\n\"textures/segment2/segment2_cn.1B3D0.ia1.png\": [16,8,16,{\"cn\":[947456,111568]}],\n\"textures/segment2/segment2_cn.1B3E0.ia1.png\": [16,8,16,{\"cn\":[947456,111584]}],\n\"textures/segment2/segment2_cn.1B3F0.ia1.png\": [16,8,16,{\"cn\":[947456,111600]}],\n\"textures/segment2/segment2_cn.1B400.ia1.png\": [16,8,16,{\"cn\":[947456,111616]}],\n\"textures/segment2/segment2_cn.1B410.ia1.png\": [16,8,16,{\"cn\":[947456,111632]}],\n\"textures/segment2/segment2_cn.1B420.ia1.png\": [16,8,16,{\"cn\":[947456,111648]}],\n\"textures/segment2/segment2_cn.1B430.ia1.png\": [16,8,16,{\"cn\":[947456,111664]}],\n\"textures/segment2/segment2_cn.1B440.ia1.png\": [16,8,16,{\"cn\":[947456,111680]}],\n\"textures/segment2/segment2_cn.1B450.ia1.png\": [16,8,16,{\"cn\":[947456,111696]}],\n\"textures/segment2/segment2_cn.1B460.ia1.png\": [16,8,16,{\"cn\":[947456,111712]}],\n\"textures/segment2/segment2_cn.1B470.ia1.png\": [16,8,16,{\"cn\":[947456,111728]}],\n\"textures/segment2/segment2_cn.1B480.ia1.png\": [16,8,16,{\"cn\":[947456,111744]}],\n\"textures/segment2/segment2_cn.1B490.ia1.png\": [16,8,16,{\"cn\":[947456,111760]}],\n\"textures/segment2/segment2_cn.1B4A0.ia1.png\": [16,8,16,{\"cn\":[947456,111776]}],\n\"textures/segment2/segment2_cn.1B4B0.ia1.png\": [16,8,16,{\"cn\":[947456,111792]}],\n\"textures/segment2/segment2_cn.1B4C0.ia1.png\": [16,8,16,{\"cn\":[947456,111808]}],\n\"textures/segment2/segment2_cn.1B4D0.ia1.png\": [16,8,16,{\"cn\":[947456,111824]}],\n\"textures/segment2/segment2_cn.1B4E0.ia1.png\": [16,8,16,{\"cn\":[947456,111840]}],\n\"textures/segment2/segment2_cn.1B4F0.ia1.png\": [16,8,16,{\"cn\":[947456,111856]}],\n\"textures/segment2/segment2_cn.1B500.ia1.png\": [16,8,16,{\"cn\":[947456,111872]}],\n\"textures/segment2/segment2_cn.1B510.ia1.png\": [16,8,16,{\"cn\":[947456,111888]}],\n\"textures/segment2/segment2_cn.1B520.ia1.png\": [16,8,16,{\"cn\":[947456,111904]}],\n\"textures/segment2/segment2_cn.1B530.ia1.png\": [16,8,16,{\"cn\":[947456,111920]}],\n\"textures/segment2/segment2_cn.1B540.ia1.png\": [16,8,16,{\"cn\":[947456,111936]}],\n\"textures/segment2/segment2_cn.1B550.ia1.png\": [16,8,16,{\"cn\":[947456,111952]}],\n\"textures/segment2/segment2_cn.1B560.ia1.png\": [16,8,16,{\"cn\":[947456,111968]}],\n\"textures/segment2/segment2_cn.1B570.ia1.png\": [16,8,16,{\"cn\":[947456,111984]}],\n\"textures/segment2/segment2_cn.1B580.ia1.png\": [16,8,16,{\"cn\":[947456,112000]}],\n\"textures/segment2/segment2_cn.1B590.ia1.png\": [16,8,16,{\"cn\":[947456,112016]}],\n\"textures/segment2/segment2_cn.1B5A0.ia1.png\": [16,8,16,{\"cn\":[947456,112032]}],\n\"textures/segment2/segment2_cn.1B5B0.ia1.png\": [16,8,16,{\"cn\":[947456,112048]}],\n\"textures/segment2/segment2_cn.1B5C0.ia1.png\": [16,8,16,{\"cn\":[947456,112064]}],\n\"textures/segment2/segment2_cn.1B5D0.ia1.png\": [16,8,16,{\"cn\":[947456,112080]}],\n\"textures/segment2/segment2_cn.1B5E0.ia1.png\": [16,8,16,{\"cn\":[947456,112096]}],\n\"textures/segment2/segment2_cn.1B5F0.ia1.png\": [16,8,16,{\"cn\":[947456,112112]}],\n\"textures/segment2/segment2_cn.1B600.ia1.png\": [16,8,16,{\"cn\":[947456,112128]}],\n\"textures/segment2/segment2_cn.1B610.ia1.png\": [16,8,16,{\"cn\":[947456,112144]}],\n\"textures/segment2/segment2_cn.1B620.ia1.png\": [16,8,16,{\"cn\":[947456,112160]}],\n\"textures/segment2/segment2_cn.1B630.ia1.png\": [16,8,16,{\"cn\":[947456,112176]}],\n\"textures/segment2/segment2_cn.1B640.ia1.png\": [16,8,16,{\"cn\":[947456,112192]}],\n\"textures/segment2/segment2_cn.1B650.ia1.png\": [16,8,16,{\"cn\":[947456,112208]}],\n\"textures/segment2/segment2_cn.1B660.ia1.png\": [16,8,16,{\"cn\":[947456,112224]}],\n\"textures/segment2/segment2_cn.1B670.ia1.png\": [16,8,16,{\"cn\":[947456,112240]}],\n\"textures/segment2/segment2_cn.1B680.ia1.png\": [16,8,16,{\"cn\":[947456,112256]}],\n\"textures/segment2/segment2_cn.1B690.ia1.png\": [16,8,16,{\"cn\":[947456,112272]}],\n\"textures/segment2/segment2_cn.1B6A0.ia1.png\": [16,8,16,{\"cn\":[947456,112288]}],\n\"textures/segment2/segment2_cn.1B6B0.ia1.png\": [16,8,16,{\"cn\":[947456,112304]}],\n\"textures/segment2/segment2_cn.1B6C0.ia1.png\": [16,8,16,{\"cn\":[947456,112320]}],\n\"textures/segment2/segment2_cn.1B6D0.ia1.png\": [16,8,16,{\"cn\":[947456,112336]}],\n\"textures/segment2/segment2_cn.1B6E0.ia1.png\": [16,8,16,{\"cn\":[947456,112352]}],\n\"textures/segment2/segment2_cn.1B6F0.ia1.png\": [16,8,16,{\"cn\":[947456,112368]}],\n\"textures/segment2/segment2_cn.1B700.ia1.png\": [16,8,16,{\"cn\":[947456,112384]}],\n\"textures/segment2/segment2_cn.1B710.ia1.png\": [16,8,16,{\"cn\":[947456,112400]}],\n\"textures/segment2/segment2_cn.1B720.ia1.png\": [16,8,16,{\"cn\":[947456,112416]}],\n\"textures/segment2/segment2_cn.1B730.ia1.png\": [16,8,16,{\"cn\":[947456,112432]}],\n\"textures/segment2/segment2_cn.1B740.ia1.png\": [16,8,16,{\"cn\":[947456,112448]}],\n\"textures/segment2/segment2_cn.1B750.ia1.png\": [16,8,16,{\"cn\":[947456,112464]}],\n\"textures/segment2/segment2_cn.1B760.ia1.png\": [16,8,16,{\"cn\":[947456,112480]}],\n\"textures/segment2/segment2_cn.1B770.ia1.png\": [16,8,16,{\"cn\":[947456,112496]}],\n\"textures/segment2/segment2_cn.1B780.ia1.png\": [16,8,16,{\"cn\":[947456,112512]}],\n\"textures/segment2/segment2_cn.1B790.ia1.png\": [16,8,16,{\"cn\":[947456,112528]}],\n\"textures/segment2/segment2_cn.1B7A0.ia1.png\": [16,8,16,{\"cn\":[947456,112544]}],\n\"textures/segment2/segment2_cn.1B7B0.ia1.png\": [16,8,16,{\"cn\":[947456,112560]}],\n\"textures/segment2/segment2_cn.1B7C0.ia1.png\": [16,8,16,{\"cn\":[947456,112576]}],\n\"textures/segment2/segment2_cn.1B7D0.ia1.png\": [16,8,16,{\"cn\":[947456,112592]}],\n\"textures/segment2/segment2_cn.1B7E0.ia1.png\": [16,8,16,{\"cn\":[947456,112608]}],\n\"textures/segment2/segment2_cn.1B7F0.ia1.png\": [16,8,16,{\"cn\":[947456,112624]}],\n\"textures/segment2/segment2_cn.1B800.ia1.png\": [16,8,16,{\"cn\":[947456,112640]}],\n\"textures/segment2/segment2_cn.1B810.ia1.png\": [16,8,16,{\"cn\":[947456,112656]}],\n\"textures/segment2/segment2_cn.1B820.ia1.png\": [16,8,16,{\"cn\":[947456,112672]}],\n\"textures/segment2/segment2_cn.1B830.ia1.png\": [16,8,16,{\"cn\":[947456,112688]}],\n\"textures/segment2/segment2_cn.1B840.ia1.png\": [16,8,16,{\"cn\":[947456,112704]}],\n\"textures/segment2/segment2_cn.1B850.ia1.png\": [16,8,16,{\"cn\":[947456,112720]}],\n\"textures/segment2/segment2_cn.1B860.ia1.png\": [16,8,16,{\"cn\":[947456,112736]}],\n\"textures/segment2/segment2_cn.1B870.ia1.png\": [16,8,16,{\"cn\":[947456,112752]}],\n\"textures/segment2/segment2_cn.1B880.ia1.png\": [16,8,16,{\"cn\":[947456,112768]}],\n\"textures/segment2/segment2_cn.1B890.ia1.png\": [16,8,16,{\"cn\":[947456,112784]}],\n\"textures/segment2/segment2_cn.1B8A0.ia1.png\": [16,8,16,{\"cn\":[947456,112800]}],\n\"textures/segment2/segment2_cn.1B8B0.ia1.png\": [16,8,16,{\"cn\":[947456,112816]}],\n\"textures/segment2/segment2_cn.1B8C0.ia1.png\": [16,8,16,{\"cn\":[947456,112832]}],\n\"textures/segment2/segment2_cn.1B8D0.ia1.png\": [16,8,16,{\"cn\":[947456,112848]}],\n\"textures/segment2/segment2_cn.1B8E0.ia1.png\": [16,8,16,{\"cn\":[947456,112864]}],\n\"textures/segment2/segment2_cn.1B8F0.ia1.png\": [16,8,16,{\"cn\":[947456,112880]}],\n\"textures/segment2/segment2_cn.1B900.ia1.png\": [16,8,16,{\"cn\":[947456,112896]}],\n\"textures/segment2/segment2_cn.1B910.ia1.png\": [16,8,16,{\"cn\":[947456,112912]}],\n\"textures/segment2/segment2_cn.1B920.ia1.png\": [16,8,16,{\"cn\":[947456,112928]}],\n\"textures/segment2/segment2_cn.1B930.ia1.png\": [16,8,16,{\"cn\":[947456,112944]}],\n\"textures/segment2/segment2_cn.1B940.ia1.png\": [16,8,16,{\"cn\":[947456,112960]}],\n\"textures/segment2/segment2_cn.1B950.ia1.png\": [16,8,16,{\"cn\":[947456,112976]}],\n\"textures/segment2/segment2_cn.1B960.ia1.png\": [16,8,16,{\"cn\":[947456,112992]}],\n\"textures/segment2/segment2_cn.1B970.ia1.png\": [16,8,16,{\"cn\":[947456,113008]}],\n\"textures/segment2/segment2_cn.1B980.ia1.png\": [16,8,16,{\"cn\":[947456,113024]}],\n\"textures/segment2/segment2_cn.1B990.ia1.png\": [16,8,16,{\"cn\":[947456,113040]}],\n\"textures/segment2/segment2_cn.1B9A0.ia1.png\": [16,8,16,{\"cn\":[947456,113056]}],\n\"textures/segment2/segment2_cn.1B9B0.ia1.png\": [16,8,16,{\"cn\":[947456,113072]}],\n\"textures/segment2/segment2_cn.1B9C0.ia1.png\": [16,8,16,{\"cn\":[947456,113088]}],\n\"textures/segment2/segment2_cn.1B9D0.ia1.png\": [16,8,16,{\"cn\":[947456,113104]}],\n\"textures/segment2/segment2_cn.1B9E0.ia1.png\": [16,8,16,{\"cn\":[947456,113120]}],\n\"textures/segment2/segment2_cn.1B9F0.ia1.png\": [16,8,16,{\"cn\":[947456,113136]}],\n\"textures/segment2/segment2_cn.1BA00.ia1.png\": [16,8,16,{\"cn\":[947456,113152]}],\n\"textures/segment2/segment2_cn.1BA10.ia1.png\": [16,8,16,{\"cn\":[947456,113168]}],\n\"textures/segment2/segment2_cn.1BA20.ia1.png\": [16,8,16,{\"cn\":[947456,113184]}],\n\"textures/segment2/segment2_cn.1BA30.ia1.png\": [16,8,16,{\"cn\":[947456,113200]}],\n\"textures/segment2/segment2_cn.1BA40.ia1.png\": [16,8,16,{\"cn\":[947456,113216]}],\n\"textures/segment2/segment2_cn.1BA50.ia1.png\": [16,8,16,{\"cn\":[947456,113232]}],\n\"textures/segment2/segment2_cn.1BA60.ia1.png\": [16,8,16,{\"cn\":[947456,113248]}],\n\"textures/segment2/segment2_cn.1BA70.ia1.png\": [16,8,16,{\"cn\":[947456,113264]}],\n\"textures/segment2/segment2_cn.1BA80.ia1.png\": [16,8,16,{\"cn\":[947456,113280]}],\n\"textures/segment2/segment2_cn.1BA90.ia1.png\": [16,8,16,{\"cn\":[947456,113296]}],\n\"textures/segment2/segment2_cn.1BAA0.ia1.png\": [16,8,16,{\"cn\":[947456,113312]}],\n\"textures/segment2/segment2_cn.1BAB0.ia1.png\": [16,8,16,{\"cn\":[947456,113328]}],\n\"textures/segment2/segment2_cn.1BAC0.ia1.png\": [16,8,16,{\"cn\":[947456,113344]}],\n\"textures/segment2/segment2_cn.1BAD0.ia1.png\": [16,8,16,{\"cn\":[947456,113360]}],\n\"textures/segment2/segment2_cn.1BAE0.ia1.png\": [16,8,16,{\"cn\":[947456,113376]}],\n\"textures/segment2/segment2_cn.1BAF0.ia1.png\": [16,8,16,{\"cn\":[947456,113392]}],\n\"textures/segment2/segment2_cn.1BB00.ia1.png\": [16,8,16,{\"cn\":[947456,113408]}],\n\"textures/segment2/segment2_cn.1BB10.ia1.png\": [16,8,16,{\"cn\":[947456,113424]}],\n\"textures/segment2/segment2_cn.1BB20.ia1.png\": [16,8,16,{\"cn\":[947456,113440]}],\n\"textures/segment2/segment2_cn.1BB30.ia1.png\": [16,8,16,{\"cn\":[947456,113456]}],\n\"textures/segment2/segment2_cn.1BB40.ia1.png\": [16,8,16,{\"cn\":[947456,113472]}],\n\"textures/segment2/segment2_cn.1BB50.ia1.png\": [16,8,16,{\"cn\":[947456,113488]}],\n\"textures/segment2/segment2_cn.1BB60.ia1.png\": [16,8,16,{\"cn\":[947456,113504]}],\n\"textures/segment2/segment2_cn.1BB70.ia1.png\": [16,8,16,{\"cn\":[947456,113520]}],\n\"textures/segment2/segment2_cn.1BB80.ia1.png\": [16,8,16,{\"cn\":[947456,113536]}],\n\"textures/segment2/segment2_cn.1BB90.ia1.png\": [16,8,16,{\"cn\":[947456,113552]}],\n\"textures/segment2/segment2_cn.1BBA0.ia1.png\": [16,8,16,{\"cn\":[947456,113568]}],\n\"textures/segment2/segment2_cn.1BBB0.ia1.png\": [16,8,16,{\"cn\":[947456,113584]}],\n\"textures/segment2/segment2_cn.1BBC0.ia1.png\": [16,8,16,{\"cn\":[947456,113600]}],\n\"textures/segment2/segment2_cn.1BBD0.ia1.png\": [16,8,16,{\"cn\":[947456,113616]}],\n\"textures/segment2/segment2_cn.1BBE0.ia1.png\": [16,8,16,{\"cn\":[947456,113632]}],\n\"textures/segment2/segment2_cn.1BBF0.ia1.png\": [16,8,16,{\"cn\":[947456,113648]}],\n\"textures/segment2/segment2_cn.1BC00.ia1.png\": [16,8,16,{\"cn\":[947456,113664]}],\n\"textures/segment2/segment2_cn.1BC10.ia1.png\": [16,8,16,{\"cn\":[947456,113680]}],\n\"textures/segment2/segment2_cn.1BC20.ia1.png\": [16,8,16,{\"cn\":[947456,113696]}],\n\"textures/segment2/segment2_cn.1BC30.ia1.png\": [16,8,16,{\"cn\":[947456,113712]}],\n\"textures/segment2/segment2_cn.1BC40.ia1.png\": [16,8,16,{\"cn\":[947456,113728]}],\n\"textures/segment2/segment2_cn.1BC50.ia1.png\": [16,8,16,{\"cn\":[947456,113744]}],\n\"textures/segment2/segment2_cn.1BC60.ia1.png\": [16,8,16,{\"cn\":[947456,113760]}],\n\"textures/segment2/segment2_cn.1BC70.ia1.png\": [16,8,16,{\"cn\":[947456,113776]}],\n\"textures/segment2/segment2_cn.1BC80.ia1.png\": [16,8,16,{\"cn\":[947456,113792]}],\n\"textures/segment2/segment2_cn.1BC90.ia1.png\": [16,8,16,{\"cn\":[947456,113808]}],\n\"textures/segment2/segment2_cn.1BCA0.ia1.png\": [16,8,16,{\"cn\":[947456,113824]}],\n\"textures/segment2/segment2_cn.1BCB0.ia1.png\": [16,8,16,{\"cn\":[947456,113840]}],\n\"textures/segment2/segment2_cn.1BCC0.ia1.png\": [16,8,16,{\"cn\":[947456,113856]}],\n\"textures/segment2/segment2_cn.1BCD0.ia1.png\": [16,8,16,{\"cn\":[947456,113872]}],\n\"textures/segment2/segment2_cn.1BCE0.ia1.png\": [16,8,16,{\"cn\":[947456,113888]}],\n\"textures/segment2/segment2_cn.1BCF0.ia1.png\": [16,8,16,{\"cn\":[947456,113904]}],\n\"textures/segment2/segment2_cn.1BD00.ia1.png\": [16,8,16,{\"cn\":[947456,113920]}],\n\"textures/segment2/segment2_cn.1BD10.ia1.png\": [16,8,16,{\"cn\":[947456,113936]}],\n\"textures/segment2/segment2_cn.1BD20.ia1.png\": [16,8,16,{\"cn\":[947456,113952]}],\n\"textures/segment2/segment2_cn.1BD30.ia1.png\": [16,8,16,{\"cn\":[947456,113968]}],\n\"textures/segment2/segment2_cn.1BD40.ia1.png\": [16,8,16,{\"cn\":[947456,113984]}],\n\"textures/segment2/segment2_cn.1BD50.ia1.png\": [16,8,16,{\"cn\":[947456,114000]}],\n\"textures/segment2/segment2_cn.1BD60.ia1.png\": [16,8,16,{\"cn\":[947456,114016]}],\n\"textures/segment2/segment2_cn.1BD70.ia1.png\": [16,8,16,{\"cn\":[947456,114032]}],\n\"textures/segment2/segment2_cn.1BD80.ia1.png\": [16,8,16,{\"cn\":[947456,114048]}],\n\"textures/segment2/segment2_cn.1BD90.ia1.png\": [16,8,16,{\"cn\":[947456,114064]}],\n\"textures/segment2/segment2_cn.1BDA0.ia1.png\": [16,8,16,{\"cn\":[947456,114080]}],\n\"textures/segment2/segment2_cn.1BDB0.ia1.png\": [16,8,16,{\"cn\":[947456,114096]}],\n\"textures/segment2/segment2_cn.1BDC0.ia1.png\": [16,8,16,{\"cn\":[947456,114112]}],\n\"textures/segment2/segment2_cn.1BDD0.ia1.png\": [16,8,16,{\"cn\":[947456,114128]}],\n\"textures/segment2/segment2_cn.1BDE0.ia1.png\": [16,8,16,{\"cn\":[947456,114144]}],\n\"textures/segment2/segment2_cn.1BDF0.ia1.png\": [16,8,16,{\"cn\":[947456,114160]}],\n\"textures/segment2/segment2_cn.1BE00.ia1.png\": [16,8,16,{\"cn\":[947456,114176]}],\n\"textures/segment2/segment2_cn.1BE10.ia1.png\": [16,8,16,{\"cn\":[947456,114192]}],\n\"textures/segment2/segment2_cn.1BE20.ia1.png\": [16,8,16,{\"cn\":[947456,114208]}],\n\"textures/segment2/segment2_cn.1BE30.ia1.png\": [16,8,16,{\"cn\":[947456,114224]}],\n\"textures/segment2/segment2_cn.1BE40.ia1.png\": [16,8,16,{\"cn\":[947456,114240]}],\n\"textures/segment2/segment2_cn.1BE50.ia1.png\": [16,8,16,{\"cn\":[947456,114256]}],\n\"textures/segment2/segment2_cn.1BE60.ia1.png\": [16,8,16,{\"cn\":[947456,114272]}],\n\"textures/segment2/segment2_cn.1BE70.ia1.png\": [16,8,16,{\"cn\":[947456,114288]}],\n\"textures/segment2/segment2_cn.1BE80.ia1.png\": [16,8,16,{\"cn\":[947456,114304]}],\n\"textures/segment2/segment2_cn.1BE90.ia1.png\": [16,8,16,{\"cn\":[947456,114320]}],\n\"textures/segment2/segment2_cn.1BEA0.ia1.png\": [16,8,16,{\"cn\":[947456,114336]}],\n\"textures/segment2/segment2_cn.1BEB0.ia1.png\": [16,8,16,{\"cn\":[947456,114352]}],\n\"textures/segment2/segment2_cn.1BEC0.ia1.png\": [16,8,16,{\"cn\":[947456,114368]}],\n\"textures/segment2/segment2_cn.1BED0.ia1.png\": [16,8,16,{\"cn\":[947456,114384]}],\n\"textures/segment2/segment2_cn.1BEE0.ia1.png\": [16,8,16,{\"cn\":[947456,114400]}],\n\"textures/segment2/segment2_cn.1BEF0.ia1.png\": [16,8,16,{\"cn\":[947456,114416]}],\n\"textures/segment2/segment2_cn.1BF00.ia1.png\": [16,8,16,{\"cn\":[947456,114432]}],\n\"textures/segment2/segment2_cn.1BF10.ia1.png\": [16,8,16,{\"cn\":[947456,114448]}],\n\"textures/segment2/segment2_cn.1BF20.ia1.png\": [16,8,16,{\"cn\":[947456,114464]}],\n\"textures/segment2/segment2_cn.1BF30.ia1.png\": [16,8,16,{\"cn\":[947456,114480]}],\n\"textures/segment2/segment2_cn.1BF40.ia1.png\": [16,8,16,{\"cn\":[947456,114496]}],\n\"textures/segment2/segment2_cn.1BF50.ia1.png\": [16,8,16,{\"cn\":[947456,114512]}],\n\"textures/segment2/segment2_cn.1BF60.ia1.png\": [16,8,16,{\"cn\":[947456,114528]}],\n\"textures/segment2/segment2_cn.1BF70.ia1.png\": [16,8,16,{\"cn\":[947456,114544]}],\n\"textures/segment2/segment2_cn.1BF80.ia1.png\": [16,8,16,{\"cn\":[947456,114560]}],\n\"textures/segment2/segment2_cn.1BF90.ia1.png\": [16,8,16,{\"cn\":[947456,114576]}],\n\"textures/segment2/segment2_cn.1BFA0.ia1.png\": [16,8,16,{\"cn\":[947456,114592]}],\n\"textures/segment2/segment2_cn.1BFB0.ia1.png\": [16,8,16,{\"cn\":[947456,114608]}],\n\"textures/segment2/segment2_cn.1BFC0.ia1.png\": [16,8,16,{\"cn\":[947456,114624]}],\n\"textures/segment2/segment2_cn.1BFD0.ia1.png\": [16,8,16,{\"cn\":[947456,114640]}],\n\"textures/segment2/segment2_cn.1BFE0.ia1.png\": [16,8,16,{\"cn\":[947456,114656]}],\n\"textures/segment2/segment2_cn.1BFF0.ia1.png\": [16,8,16,{\"cn\":[947456,114672]}],\n\"textures/segment2/segment2_cn.1C000.ia1.png\": [16,8,16,{\"cn\":[947456,114688]}],\n\"textures/segment2/segment2_cn.1C010.ia1.png\": [16,8,16,{\"cn\":[947456,114704]}],\n\"textures/segment2/segment2_cn.1C020.ia1.png\": [16,8,16,{\"cn\":[947456,114720]}],\n\"textures/segment2/segment2_cn.1C030.ia1.png\": [16,8,16,{\"cn\":[947456,114736]}],\n\"textures/segment2/segment2_cn.1C040.ia1.png\": [16,8,16,{\"cn\":[947456,114752]}],\n\"textures/segment2/segment2_cn.1C050.ia1.png\": [16,8,16,{\"cn\":[947456,114768]}],\n\"textures/segment2/segment2_cn.1C060.ia1.png\": [16,8,16,{\"cn\":[947456,114784]}],\n\"textures/segment2/segment2_cn.1C070.ia1.png\": [16,8,16,{\"cn\":[947456,114800]}],\n\"textures/segment2/segment2_cn.1C080.ia1.png\": [16,8,16,{\"cn\":[947456,114816]}],\n\"textures/segment2/segment2_cn.1C090.ia1.png\": [16,8,16,{\"cn\":[947456,114832]}],\n\"textures/segment2/segment2_cn.1C0A0.ia1.png\": [16,8,16,{\"cn\":[947456,114848]}],\n\"textures/segment2/segment2_cn.1C0B0.ia1.png\": [16,8,16,{\"cn\":[947456,114864]}],\n\"textures/segment2/segment2_cn.1C0C0.ia1.png\": [16,8,16,{\"cn\":[947456,114880]}],\n\"textures/segment2/segment2_cn.1C0D0.ia1.png\": [16,8,16,{\"cn\":[947456,114896]}],\n\"textures/segment2/segment2_cn.1C0E0.ia1.png\": [16,8,16,{\"cn\":[947456,114912]}],\n\"textures/segment2/segment2_cn.1C0F0.ia1.png\": [16,8,16,{\"cn\":[947456,114928]}],\n\"textures/segment2/segment2_cn.1C100.ia1.png\": [16,8,16,{\"cn\":[947456,114944]}],\n\"textures/segment2/segment2_cn.1C110.ia1.png\": [16,8,16,{\"cn\":[947456,114960]}],\n\"textures/segment2/segment2_cn.1C120.ia1.png\": [16,8,16,{\"cn\":[947456,114976]}],\n\"textures/segment2/segment2_cn.1C130.ia1.png\": [16,8,16,{\"cn\":[947456,114992]}],\n\"textures/segment2/segment2_cn.1C140.ia1.png\": [16,8,16,{\"cn\":[947456,115008]}],\n\"textures/segment2/segment2_cn.1C150.ia1.png\": [16,8,16,{\"cn\":[947456,115024]}],\n\"textures/segment2/segment2_cn.1C160.ia1.png\": [16,8,16,{\"cn\":[947456,115040]}],\n\"textures/segment2/segment2_cn.1C170.ia1.png\": [16,8,16,{\"cn\":[947456,115056]}],\n\"textures/segment2/segment2_cn.1C180.ia1.png\": [16,8,16,{\"cn\":[947456,115072]}],\n\"textures/segment2/segment2_cn.1C190.ia1.png\": [16,8,16,{\"cn\":[947456,115088]}],\n\"textures/segment2/segment2_cn.1C1A0.ia1.png\": [16,8,16,{\"cn\":[947456,115104]}],\n\"textures/segment2/segment2_cn.1C1B0.ia1.png\": [16,8,16,{\"cn\":[947456,115120]}],\n\"textures/segment2/segment2_cn.1C1C0.ia1.png\": [16,8,16,{\"cn\":[947456,115136]}],\n\"textures/segment2/segment2_cn.1C1D0.ia1.png\": [16,8,16,{\"cn\":[947456,115152]}],\n\"textures/segment2/segment2_cn.1C1E0.ia1.png\": [16,8,16,{\"cn\":[947456,115168]}],\n\"textures/segment2/segment2_cn.1C1F0.ia1.png\": [16,8,16,{\"cn\":[947456,115184]}],\n\"textures/segment2/segment2_cn.1C200.ia1.png\": [16,8,16,{\"cn\":[947456,115200]}],\n\"textures/segment2/segment2_cn.1C210.ia1.png\": [16,8,16,{\"cn\":[947456,115216]}],\n\"textures/segment2/segment2_cn.1C220.ia1.png\": [16,8,16,{\"cn\":[947456,115232]}],\n\"textures/segment2/segment2_cn.1C230.ia1.png\": [16,8,16,{\"cn\":[947456,115248]}],\n\"textures/segment2/segment2_cn.1C240.ia1.png\": [16,8,16,{\"cn\":[947456,115264]}],\n\"textures/segment2/segment2_cn.1C250.ia1.png\": [16,8,16,{\"cn\":[947456,115280]}],\n\"textures/segment2/segment2_cn.1C260.ia1.png\": [16,8,16,{\"cn\":[947456,115296]}],\n\"textures/segment2/segment2_cn.1C270.ia1.png\": [16,8,16,{\"cn\":[947456,115312]}],\n\"textures/segment2/segment2_cn.1C280.ia1.png\": [16,8,16,{\"cn\":[947456,115328]}],\n\"textures/segment2/segment2_cn.1C290.ia1.png\": [16,8,16,{\"cn\":[947456,115344]}],\n\"textures/segment2/segment2_cn.1C2A0.ia1.png\": [16,8,16,{\"cn\":[947456,115360]}],\n\"textures/segment2/segment2_cn.1C2B0.ia1.png\": [16,8,16,{\"cn\":[947456,115376]}],\n\"textures/segment2/segment2_cn.1C2C0.ia1.png\": [16,8,16,{\"cn\":[947456,115392]}],\n\"textures/segment2/segment2_cn.1C2D0.ia1.png\": [16,8,16,{\"cn\":[947456,115408]}],\n\"textures/segment2/segment2_cn.1C2E0.ia1.png\": [16,8,16,{\"cn\":[947456,115424]}],\n\"textures/segment2/segment2_cn.1C2F0.ia1.png\": [16,8,16,{\"cn\":[947456,115440]}],\n\"textures/segment2/segment2_cn.1C300.ia1.png\": [16,8,16,{\"cn\":[947456,115456]}],\n\"textures/segment2/segment2_cn.1C310.ia1.png\": [16,8,16,{\"cn\":[947456,115472]}],\n\"textures/segment2/segment2_cn.1C320.ia1.png\": [16,8,16,{\"cn\":[947456,115488]}],\n\"textures/segment2/segment2_cn.1C330.ia1.png\": [16,8,16,{\"cn\":[947456,115504]}],\n\"textures/segment2/segment2_cn.1C340.ia1.png\": [16,8,16,{\"cn\":[947456,115520]}],\n\"textures/segment2/segment2_cn.1C350.ia1.png\": [16,8,16,{\"cn\":[947456,115536]}],\n\"textures/segment2/segment2_cn.1C360.ia1.png\": [16,8,16,{\"cn\":[947456,115552]}],\n\"textures/segment2/segment2_cn.1C370.ia1.png\": [16,8,16,{\"cn\":[947456,115568]}],\n\"textures/segment2/segment2_cn.1C380.ia1.png\": [16,8,16,{\"cn\":[947456,115584]}],\n\"textures/segment2/segment2_cn.1C390.ia1.png\": [16,8,16,{\"cn\":[947456,115600]}],\n\"textures/segment2/segment2_cn.1C3A0.ia1.png\": [16,8,16,{\"cn\":[947456,115616]}],\n\"textures/segment2/segment2_cn.1C3B0.ia1.png\": [16,8,16,{\"cn\":[947456,115632]}],\n\"textures/segment2/segment2_cn.1C3C0.ia1.png\": [16,8,16,{\"cn\":[947456,115648]}],\n\"textures/segment2/segment2_cn.1C3D0.ia1.png\": [16,8,16,{\"cn\":[947456,115664]}],\n\"textures/segment2/segment2_cn.1C3E0.ia1.png\": [16,8,16,{\"cn\":[947456,115680]}],\n\"textures/segment2/segment2_cn.1C3F0.ia1.png\": [16,8,16,{\"cn\":[947456,115696]}],\n\"textures/segment2/segment2_cn.1C400.ia1.png\": [16,8,16,{\"cn\":[947456,115712]}],\n\"textures/segment2/segment2_cn.1C410.ia1.png\": [16,8,16,{\"cn\":[947456,115728]}],\n\"textures/segment2/segment2_cn.1C420.ia1.png\": [16,8,16,{\"cn\":[947456,115744]}],\n\"textures/segment2/segment2_cn.1C430.ia1.png\": [16,8,16,{\"cn\":[947456,115760]}],\n\"textures/segment2/segment2_cn.1C440.ia1.png\": [16,8,16,{\"cn\":[947456,115776]}],\n\"textures/segment2/segment2_cn.1C450.ia1.png\": [16,8,16,{\"cn\":[947456,115792]}],\n\"textures/segment2/segment2_cn.1C460.ia1.png\": [16,8,16,{\"cn\":[947456,115808]}],\n\"textures/segment2/segment2_cn.1C470.ia1.png\": [16,8,16,{\"cn\":[947456,115824]}],\n\"textures/segment2/segment2_cn.1C480.ia1.png\": [16,8,16,{\"cn\":[947456,115840]}],\n\"textures/segment2/segment2_cn.1C490.ia1.png\": [16,8,16,{\"cn\":[947456,115856]}],\n\"textures/segment2/segment2_cn.1C4A0.ia1.png\": [16,8,16,{\"cn\":[947456,115872]}],\n\"textures/segment2/segment2_cn.1C4B0.ia1.png\": [16,8,16,{\"cn\":[947456,115888]}],\n\"textures/segment2/segment2_cn.1C4C0.ia1.png\": [16,8,16,{\"cn\":[947456,115904]}],\n\"textures/segment2/segment2_cn.1C4D0.ia1.png\": [16,8,16,{\"cn\":[947456,115920]}],\n\"textures/segment2/segment2_cn.1C4E0.ia1.png\": [16,8,16,{\"cn\":[947456,115936]}],\n\"textures/segment2/segment2_cn.1C4F0.ia1.png\": [16,8,16,{\"cn\":[947456,115952]}],\n\"textures/segment2/segment2_cn.1C500.ia1.png\": [16,8,16,{\"cn\":[947456,115968]}],\n\"textures/segment2/segment2_cn.1C510.ia1.png\": [16,8,16,{\"cn\":[947456,115984]}],\n\"textures/segment2/segment2_cn.1C520.ia1.png\": [16,8,16,{\"cn\":[947456,116000]}],\n\"textures/segment2/segment2_cn.1C530.ia1.png\": [16,8,16,{\"cn\":[947456,116016]}],\n\"textures/segment2/segment2_cn.1C540.ia1.png\": [16,8,16,{\"cn\":[947456,116032]}],\n\"textures/segment2/segment2_cn.1C550.ia1.png\": [16,8,16,{\"cn\":[947456,116048]}],\n\"textures/segment2/segment2_cn.1C560.ia1.png\": [16,8,16,{\"cn\":[947456,116064]}],\n\"textures/segment2/segment2_cn.1C570.ia1.png\": [16,8,16,{\"cn\":[947456,116080]}],\n\"textures/segment2/segment2_cn.1C580.ia1.png\": [16,8,16,{\"cn\":[947456,116096]}],\n\"textures/segment2/segment2_cn.1C590.ia1.png\": [16,8,16,{\"cn\":[947456,116112]}],\n\"textures/segment2/segment2_cn.1C5A0.ia1.png\": [16,8,16,{\"cn\":[947456,116128]}],\n\"textures/segment2/segment2_cn.1C5B0.ia1.png\": [16,8,16,{\"cn\":[947456,116144]}],\n\"textures/segment2/segment2_cn.1C5C0.ia1.png\": [16,8,16,{\"cn\":[947456,116160]}],\n\"textures/segment2/segment2_cn.1C5D0.ia1.png\": [16,8,16,{\"cn\":[947456,116176]}],\n\"textures/segment2/segment2_cn.1C5E0.ia1.png\": [16,8,16,{\"cn\":[947456,116192]}],\n\"textures/segment2/segment2_cn.1C5F0.ia1.png\": [16,8,16,{\"cn\":[947456,116208]}],\n\"textures/segment2/segment2_cn.1C600.ia1.png\": [16,8,16,{\"cn\":[947456,116224]}],\n\"textures/segment2/segment2_cn.1C610.ia1.png\": [16,8,16,{\"cn\":[947456,116240]}],\n\"textures/segment2/segment2_cn.1C620.ia1.png\": [16,8,16,{\"cn\":[947456,116256]}],\n\"textures/segment2/segment2_cn.1C630.ia1.png\": [16,8,16,{\"cn\":[947456,116272]}],\n\"textures/segment2/segment2_cn.1C640.ia1.png\": [16,8,16,{\"cn\":[947456,116288]}],\n\"textures/segment2/segment2_cn.1C650.ia1.png\": [16,8,16,{\"cn\":[947456,116304]}],\n\"textures/segment2/segment2_cn.1C660.ia1.png\": [16,8,16,{\"cn\":[947456,116320]}],\n\"textures/segment2/segment2_cn.1C670.ia1.png\": [16,8,16,{\"cn\":[947456,116336]}],\n\"textures/segment2/segment2_cn.1C680.ia1.png\": [16,8,16,{\"cn\":[947456,116352]}],\n\"textures/segment2/segment2_cn.1C690.ia1.png\": [16,8,16,{\"cn\":[947456,116368]}],\n\"textures/segment2/segment2_cn.1C6A0.ia1.png\": [16,8,16,{\"cn\":[947456,116384]}],\n\"textures/segment2/segment2_cn.1C6B0.ia1.png\": [16,8,16,{\"cn\":[947456,116400]}],\n\"textures/segment2/segment2_cn.1C6C0.ia1.png\": [16,8,16,{\"cn\":[947456,116416]}],\n\"textures/segment2/segment2_cn.1C6D0.ia1.png\": [16,8,16,{\"cn\":[947456,116432]}],\n\"textures/segment2/segment2_cn.1C6E0.ia1.png\": [16,8,16,{\"cn\":[947456,116448]}],\n\"textures/segment2/segment2_cn.1C6F0.ia1.png\": [16,8,16,{\"cn\":[947456,116464]}],\n\"textures/segment2/segment2_cn.1C700.ia1.png\": [16,8,16,{\"cn\":[947456,116480]}],\n\"textures/segment2/segment2_cn.1C710.ia1.png\": [16,8,16,{\"cn\":[947456,116496]}],\n\"textures/segment2/segment2_cn.1C720.ia1.png\": [16,8,16,{\"cn\":[947456,116512]}],\n\"textures/segment2/segment2_cn.1C730.ia1.png\": [16,8,16,{\"cn\":[947456,116528]}],\n\"textures/segment2/segment2_cn.1C740.ia1.png\": [16,8,16,{\"cn\":[947456,116544]}],\n\"textures/segment2/segment2_cn.1C750.ia1.png\": [16,8,16,{\"cn\":[947456,116560]}],\n\"textures/segment2/segment2_cn.1C760.ia1.png\": [16,8,16,{\"cn\":[947456,116576]}],\n\"textures/segment2/segment2_cn.1C770.ia1.png\": [16,8,16,{\"cn\":[947456,116592]}],\n\"textures/segment2/segment2_cn.1C780.ia1.png\": [16,8,16,{\"cn\":[947456,116608]}],\n\"textures/segment2/segment2_cn.1C790.ia1.png\": [16,8,16,{\"cn\":[947456,116624]}],\n\"textures/segment2/segment2_cn.1C7A0.ia1.png\": [16,8,16,{\"cn\":[947456,116640]}],\n\"textures/segment2/segment2_cn.1C7B0.ia1.png\": [16,8,16,{\"cn\":[947456,116656]}],\n\"textures/segment2/segment2_cn.1C7C0.ia1.png\": [16,8,16,{\"cn\":[947456,116672]}],\n\"textures/segment2/segment2_cn.1C7D0.ia1.png\": [16,8,16,{\"cn\":[947456,116688]}],\n\"textures/segment2/segment2_cn.1C7E0.ia1.png\": [16,8,16,{\"cn\":[947456,116704]}],\n\"textures/segment2/segment2_cn.1C7F0.ia1.png\": [16,8,16,{\"cn\":[947456,116720]}],\n\"textures/segment2/segment2_cn.1C800.ia1.png\": [16,8,16,{\"cn\":[947456,116736]}],\n\"textures/segment2/segment2_cn.1C810.ia1.png\": [16,8,16,{\"cn\":[947456,116752]}],\n\"textures/segment2/segment2_cn.1C820.ia1.png\": [16,8,16,{\"cn\":[947456,116768]}],\n\"textures/segment2/segment2_cn.1C830.ia1.png\": [16,8,16,{\"cn\":[947456,116784]}],\n\"textures/segment2/segment2_cn.1C840.ia1.png\": [16,8,16,{\"cn\":[947456,116800]}],\n\"textures/segment2/segment2_cn.1C850.ia1.png\": [16,8,16,{\"cn\":[947456,116816]}],\n\"textures/segment2/segment2_cn.1C860.ia1.png\": [16,8,16,{\"cn\":[947456,116832]}],\n\"textures/segment2/segment2_cn.1C870.ia1.png\": [16,8,16,{\"cn\":[947456,116848]}],\n\"textures/segment2/segment2_cn.1C880.ia1.png\": [16,8,16,{\"cn\":[947456,116864]}],\n\"textures/segment2/segment2_cn.1C890.ia1.png\": [16,8,16,{\"cn\":[947456,116880]}],\n\"textures/segment2/segment2_cn.1C8A0.ia1.png\": [16,8,16,{\"cn\":[947456,116896]}],\n\"textures/segment2/segment2_cn.1C8B0.ia1.png\": [16,8,16,{\"cn\":[947456,116912]}],\n\"textures/segment2/segment2_cn.1C8C0.ia1.png\": [16,8,16,{\"cn\":[947456,116928]}],\n\"textures/segment2/segment2_cn.1C8D0.ia1.png\": [16,8,16,{\"cn\":[947456,116944]}],\n\"textures/segment2/segment2_cn.1C8E0.ia1.png\": [16,8,16,{\"cn\":[947456,116960]}],\n\"textures/segment2/segment2_cn.1C8F0.ia1.png\": [16,8,16,{\"cn\":[947456,116976]}],\n\"textures/segment2/segment2_cn.1C900.ia1.png\": [16,8,16,{\"cn\":[947456,116992]}],\n\"textures/segment2/segment2_cn.1C910.ia1.png\": [16,8,16,{\"cn\":[947456,117008]}],\n\"textures/segment2/segment2_cn.1C920.ia1.png\": [16,8,16,{\"cn\":[947456,117024]}],\n\"textures/segment2/segment2_cn.1C930.ia1.png\": [16,8,16,{\"cn\":[947456,117040]}],\n\"textures/segment2/segment2_cn.1C940.ia1.png\": [16,8,16,{\"cn\":[947456,117056]}],\n\"textures/segment2/segment2_cn.1C950.ia1.png\": [16,8,16,{\"cn\":[947456,117072]}],\n\"textures/segment2/segment2_cn.1C960.ia1.png\": [16,8,16,{\"cn\":[947456,117088]}],\n\"textures/segment2/segment2_cn.1C970.ia1.png\": [16,8,16,{\"cn\":[947456,117104]}],\n\"textures/segment2/segment2_cn.1C980.ia1.png\": [16,8,16,{\"cn\":[947456,117120]}],\n\"textures/segment2/segment2_cn.1C990.ia1.png\": [16,8,16,{\"cn\":[947456,117136]}],\n\"textures/segment2/segment2_cn.1C9A0.ia1.png\": [16,8,16,{\"cn\":[947456,117152]}],\n\"textures/segment2/segment2_cn.1C9B0.ia1.png\": [16,8,16,{\"cn\":[947456,117168]}],\n\"textures/segment2/segment2_cn.1C9C0.ia1.png\": [16,8,16,{\"cn\":[947456,117184]}],\n\"textures/segment2/segment2_cn.1C9D0.ia1.png\": [16,8,16,{\"cn\":[947456,117200]}],\n\"textures/segment2/segment2_cn.1C9E0.ia1.png\": [16,8,16,{\"cn\":[947456,117216]}],\n\"textures/segment2/segment2_cn.1C9F0.ia1.png\": [16,8,16,{\"cn\":[947456,117232]}],\n\"textures/segment2/segment2_cn.1CA00.ia1.png\": [16,8,16,{\"cn\":[947456,117248]}],\n\"textures/segment2/segment2_cn.1CA10.ia1.png\": [16,8,16,{\"cn\":[947456,117264]}],\n\"textures/segment2/segment2_cn.1CA20.ia1.png\": [16,8,16,{\"cn\":[947456,117280]}],\n\"textures/segment2/segment2_cn.1CA30.ia1.png\": [16,8,16,{\"cn\":[947456,117296]}],\n\"textures/segment2/segment2_cn.1CA40.ia1.png\": [16,8,16,{\"cn\":[947456,117312]}],\n\"textures/segment2/segment2_cn.1CA50.ia1.png\": [16,8,16,{\"cn\":[947456,117328]}],\n\"textures/segment2/segment2_cn.1CA60.ia1.png\": [16,8,16,{\"cn\":[947456,117344]}],\n\"textures/segment2/segment2_cn.1CA70.ia1.png\": [16,8,16,{\"cn\":[947456,117360]}],\n\"textures/segment2/segment2_cn.1CA80.ia1.png\": [16,8,16,{\"cn\":[947456,117376]}],\n\"textures/segment2/segment2_cn.1CA90.ia1.png\": [16,8,16,{\"cn\":[947456,117392]}],\n\"textures/segment2/segment2_cn.1CAA0.ia1.png\": [16,8,16,{\"cn\":[947456,117408]}],\n\"textures/segment2/segment2_cn.1CAB0.ia1.png\": [16,8,16,{\"cn\":[947456,117424]}],\n\"textures/segment2/segment2_cn.1CAC0.ia1.png\": [16,8,16,{\"cn\":[947456,117440]}],\n\"textures/segment2/segment2_cn.1CAD0.ia1.png\": [16,8,16,{\"cn\":[947456,117456]}],\n\"textures/segment2/segment2_cn.1CAE0.ia1.png\": [16,8,16,{\"cn\":[947456,117472]}],\n\"textures/segment2/segment2_cn.1CAF0.ia1.png\": [16,8,16,{\"cn\":[947456,117488]}],\n\"textures/segment2/segment2_cn.1CB00.ia1.png\": [16,8,16,{\"cn\":[947456,117504]}],\n\"textures/segment2/segment2_cn.1CB10.ia1.png\": [16,8,16,{\"cn\":[947456,117520]}],\n\"textures/segment2/segment2_cn.1CB20.ia1.png\": [16,8,16,{\"cn\":[947456,117536]}],\n\"textures/segment2/segment2_cn.1CB30.ia1.png\": [16,8,16,{\"cn\":[947456,117552]}],\n\"textures/segment2/segment2_cn.1CB40.ia1.png\": [16,8,16,{\"cn\":[947456,117568]}],\n\"textures/segment2/segment2_cn.1CB50.ia1.png\": [16,8,16,{\"cn\":[947456,117584]}],\n\"textures/segment2/segment2_cn.1CB60.ia1.png\": [16,8,16,{\"cn\":[947456,117600]}],\n\"textures/segment2/segment2_cn.1CB70.ia1.png\": [16,8,16,{\"cn\":[947456,117616]}],\n\"textures/segment2/segment2_cn.1CB80.ia1.png\": [16,8,16,{\"cn\":[947456,117632]}],\n\"textures/segment2/segment2_cn.1CB90.ia1.png\": [16,8,16,{\"cn\":[947456,117648]}],\n\"textures/segment2/segment2_cn.1CBA0.ia1.png\": [16,8,16,{\"cn\":[947456,117664]}],\n\"textures/segment2/segment2_cn.1CBB0.ia1.png\": [16,8,16,{\"cn\":[947456,117680]}],\n\"textures/segment2/segment2_cn.1CBC0.ia1.png\": [16,8,16,{\"cn\":[947456,117696]}],\n\"textures/segment2/segment2_cn.1CBD0.ia1.png\": [16,8,16,{\"cn\":[947456,117712]}],\n\"textures/segment2/segment2_cn.1CBE0.ia1.png\": [16,8,16,{\"cn\":[947456,117728]}],\n\"textures/segment2/segment2_cn.1CBF0.ia1.png\": [16,8,16,{\"cn\":[947456,117744]}],\n\"textures/segment2/segment2_cn.1CC00.ia1.png\": [16,8,16,{\"cn\":[947456,117760]}],\n\"textures/segment2/segment2_cn.1CC10.ia1.png\": [16,8,16,{\"cn\":[947456,117776]}],\n\"textures/segment2/segment2_cn.1CC20.ia1.png\": [16,8,16,{\"cn\":[947456,117792]}],\n\"textures/segment2/segment2_cn.1CC30.ia1.png\": [16,8,16,{\"cn\":[947456,117808]}],\n\"textures/segment2/segment2_cn.1CC40.ia1.png\": [16,8,16,{\"cn\":[947456,117824]}],\n\"textures/segment2/segment2_cn.1CC50.ia1.png\": [16,8,16,{\"cn\":[947456,117840]}],\n\"textures/segment2/segment2_cn.1CC60.ia1.png\": [16,8,16,{\"cn\":[947456,117856]}],\n\"textures/segment2/segment2_cn.1CC70.ia1.png\": [16,8,16,{\"cn\":[947456,117872]}],\n\"textures/segment2/segment2_cn.1CC80.ia1.png\": [16,8,16,{\"cn\":[947456,117888]}],\n\"textures/segment2/segment2_cn.1CC90.ia1.png\": [16,8,16,{\"cn\":[947456,117904]}],\n\"textures/segment2/segment2_cn.1CCA0.ia1.png\": [16,8,16,{\"cn\":[947456,117920]}],\n\"textures/segment2/segment2_cn.1CCB0.ia1.png\": [16,8,16,{\"cn\":[947456,117936]}],\n\"textures/segment2/segment2_cn.1CCC0.ia1.png\": [16,8,16,{\"cn\":[947456,117952]}],\n\"textures/segment2/segment2_cn.1CCD0.ia1.png\": [16,8,16,{\"cn\":[947456,117968]}],\n\"textures/segment2/segment2_cn.1CCE0.ia1.png\": [16,8,16,{\"cn\":[947456,117984]}],\n\"textures/segment2/segment2_cn.1CCF0.ia1.png\": [16,8,16,{\"cn\":[947456,118000]}],\n\"textures/segment2/segment2_cn.1CD00.ia1.png\": [16,8,16,{\"cn\":[947456,118016]}],\n\"textures/segment2/segment2_cn.1CD10.ia1.png\": [16,8,16,{\"cn\":[947456,118032]}],\n\"textures/segment2/segment2_cn.1CD20.ia1.png\": [16,8,16,{\"cn\":[947456,118048]}],\n\"textures/segment2/segment2_cn.1CD30.ia1.png\": [16,8,16,{\"cn\":[947456,118064]}],\n\"textures/segment2/segment2_cn.1CD40.ia1.png\": [16,8,16,{\"cn\":[947456,118080]}],\n\"textures/segment2/segment2_cn.1CD50.ia1.png\": [16,8,16,{\"cn\":[947456,118096]}],\n\"textures/segment2/segment2_cn.1CD60.ia1.png\": [16,8,16,{\"cn\":[947456,118112]}],\n\"textures/segment2/segment2_cn.1CD70.ia1.png\": [16,8,16,{\"cn\":[947456,118128]}],\n\"textures/segment2/segment2_cn.1CD80.ia1.png\": [16,8,16,{\"cn\":[947456,118144]}],\n\"textures/segment2/segment2_cn.1CD90.ia1.png\": [16,8,16,{\"cn\":[947456,118160]}],\n\"textures/segment2/segment2_cn.1CDA0.ia1.png\": [16,8,16,{\"cn\":[947456,118176]}],\n\"textures/segment2/segment2_cn.1CDB0.ia1.png\": [16,8,16,{\"cn\":[947456,118192]}],\n\"textures/segment2/segment2_cn.1CDC0.ia1.png\": [16,8,16,{\"cn\":[947456,118208]}],\n\"textures/segment2/segment2_cn.1CDD0.ia1.png\": [16,8,16,{\"cn\":[947456,118224]}],\n\"textures/segment2/segment2_cn.1CDE0.ia1.png\": [16,8,16,{\"cn\":[947456,118240]}],\n\"textures/segment2/segment2_cn.1CDF0.ia1.png\": [16,8,16,{\"cn\":[947456,118256]}],\n\"textures/segment2/segment2_cn.1CE00.ia1.png\": [16,8,16,{\"cn\":[947456,118272]}],\n\"textures/segment2/segment2_cn.1CE10.ia1.png\": [16,8,16,{\"cn\":[947456,118288]}],\n\"textures/segment2/segment2_cn.1CE20.ia1.png\": [16,8,16,{\"cn\":[947456,118304]}],\n\"textures/segment2/segment2_cn.1CE30.ia1.png\": [16,8,16,{\"cn\":[947456,118320]}],\n\"textures/segment2/segment2_cn.1CE40.ia1.png\": [16,8,16,{\"cn\":[947456,118336]}],\n\"textures/segment2/segment2_cn.1CE50.ia1.png\": [16,8,16,{\"cn\":[947456,118352]}],\n\"textures/segment2/segment2_cn.1CE60.ia1.png\": [16,8,16,{\"cn\":[947456,118368]}],\n\"textures/segment2/segment2_cn.1CE70.ia1.png\": [16,8,16,{\"cn\":[947456,118384]}],\n\"textures/segment2/segment2_cn.1CE80.ia1.png\": [16,8,16,{\"cn\":[947456,118400]}],\n\"textures/segment2/segment2_cn.1CE90.ia1.png\": [16,8,16,{\"cn\":[947456,118416]}],\n\"textures/segment2/segment2_cn.1CEA0.ia1.png\": [16,8,16,{\"cn\":[947456,118432]}],\n\"textures/segment2/segment2_cn.1CEB0.ia1.png\": [16,8,16,{\"cn\":[947456,118448]}],\n\"textures/segment2/segment2_cn.1CEC0.ia1.png\": [16,8,16,{\"cn\":[947456,118464]}],\n\"textures/segment2/segment2_cn.1CED0.ia1.png\": [16,8,16,{\"cn\":[947456,118480]}],\n\"textures/segment2/segment2_cn.1CEE0.ia1.png\": [16,8,16,{\"cn\":[947456,118496]}],\n\"textures/segment2/segment2_cn.1CEF0.ia1.png\": [16,8,16,{\"cn\":[947456,118512]}],\n\"textures/segment2/segment2_cn.1CF00.ia1.png\": [16,8,16,{\"cn\":[947456,118528]}],\n\"textures/segment2/segment2_cn.1CF10.ia1.png\": [16,8,16,{\"cn\":[947456,118544]}],\n\"textures/segment2/segment2_cn.1CF20.ia1.png\": [16,8,16,{\"cn\":[947456,118560]}],\n\"textures/segment2/segment2_cn.1CF30.ia1.png\": [16,8,16,{\"cn\":[947456,118576]}],\n\"textures/segment2/segment2_cn.1CF40.ia1.png\": [16,8,16,{\"cn\":[947456,118592]}],\n\"textures/segment2/segment2_cn.1CF50.ia1.png\": [16,8,16,{\"cn\":[947456,118608]}],\n\"textures/segment2/segment2_cn.1CF60.ia1.png\": [16,8,16,{\"cn\":[947456,118624]}],\n\"textures/segment2/segment2_cn.1CF70.ia1.png\": [16,8,16,{\"cn\":[947456,118640]}],\n\"textures/segment2/segment2_cn.1CF80.ia1.png\": [16,8,16,{\"cn\":[947456,118656]}],\n\"textures/segment2/segment2_cn.1CF90.ia1.png\": [16,8,16,{\"cn\":[947456,118672]}],\n\"textures/segment2/segment2_cn.1CFA0.ia1.png\": [16,8,16,{\"cn\":[947456,118688]}],\n\"textures/segment2/segment2_cn.1CFB0.ia1.png\": [16,8,16,{\"cn\":[947456,118704]}],\n\"textures/segment2/segment2_cn.1CFC0.ia1.png\": [16,8,16,{\"cn\":[947456,118720]}],\n\"textures/segment2/segment2_cn.1CFD0.ia1.png\": [16,8,16,{\"cn\":[947456,118736]}],\n\"textures/segment2/segment2_cn.1CFE0.ia1.png\": [16,8,16,{\"cn\":[947456,118752]}],\n\"textures/segment2/segment2_cn.1CFF0.ia1.png\": [16,8,16,{\"cn\":[947456,118768]}],\n\"textures/segment2/segment2_cn.1D000.ia1.png\": [16,8,16,{\"cn\":[947456,118784]}],\n\"textures/segment2/segment2_cn.1D010.ia1.png\": [16,8,16,{\"cn\":[947456,118800]}],\n\"textures/segment2/segment2_cn.1D020.ia1.png\": [16,8,16,{\"cn\":[947456,118816]}],\n\"textures/segment2/segment2_cn.1D030.ia1.png\": [16,8,16,{\"cn\":[947456,118832]}],\n\"textures/segment2/segment2_cn.1D040.ia1.png\": [16,8,16,{\"cn\":[947456,118848]}],\n\"textures/segment2/segment2_cn.1D050.ia1.png\": [16,8,16,{\"cn\":[947456,118864]}],\n\"textures/segment2/segment2_cn.1D060.ia1.png\": [16,8,16,{\"cn\":[947456,118880]}],\n\"textures/segment2/segment2_cn.1D070.ia1.png\": [16,8,16,{\"cn\":[947456,118896]}],\n\"textures/segment2/segment2_cn.1D080.ia1.png\": [16,8,16,{\"cn\":[947456,118912]}],\n\"textures/segment2/segment2_cn.1D090.ia1.png\": [16,8,16,{\"cn\":[947456,118928]}],\n\"textures/segment2/segment2_cn.1D0A0.ia1.png\": [16,8,16,{\"cn\":[947456,118944]}],\n\"textures/segment2/segment2_cn.1D0B0.ia1.png\": [16,8,16,{\"cn\":[947456,118960]}],\n\"textures/segment2/segment2_cn.1D0C0.ia1.png\": [16,8,16,{\"cn\":[947456,118976]}],\n\"textures/segment2/segment2_cn.1D0D0.ia1.png\": [16,8,16,{\"cn\":[947456,118992]}],\n\"textures/segment2/segment2_cn.1D0E0.ia1.png\": [16,8,16,{\"cn\":[947456,119008]}],\n\"textures/segment2/segment2_cn.1D0F0.ia1.png\": [16,8,16,{\"cn\":[947456,119024]}],\n\"textures/segment2/segment2_cn.1D100.ia1.png\": [16,8,16,{\"cn\":[947456,119040]}],\n\"textures/segment2/segment2_cn.1D110.ia1.png\": [16,8,16,{\"cn\":[947456,119056]}],\n\"textures/segment2/segment2_cn.1D120.ia1.png\": [16,8,16,{\"cn\":[947456,119072]}],\n\"textures/segment2/segment2_cn.1D130.ia1.png\": [16,8,16,{\"cn\":[947456,119088]}],\n\"textures/segment2/segment2_cn.1D140.ia1.png\": [16,8,16,{\"cn\":[947456,119104]}],\n\"textures/segment2/segment2_cn.1D150.ia1.png\": [16,8,16,{\"cn\":[947456,119120]}],\n\"textures/segment2/segment2_cn.1D160.ia1.png\": [16,8,16,{\"cn\":[947456,119136]}],\n\"textures/segment2/segment2_cn.1D170.ia1.png\": [16,8,16,{\"cn\":[947456,119152]}],\n\"textures/segment2/segment2_cn.1D180.ia1.png\": [16,8,16,{\"cn\":[947456,119168]}],\n\"textures/segment2/segment2_cn.1D190.ia1.png\": [16,8,16,{\"cn\":[947456,119184]}],\n\"textures/segment2/segment2_cn.1D1A0.ia1.png\": [16,8,16,{\"cn\":[947456,119200]}],\n\"textures/segment2/segment2_cn.1D1B0.ia1.png\": [16,8,16,{\"cn\":[947456,119216]}],\n\"textures/segment2/segment2_cn.1D1C0.ia1.png\": [16,8,16,{\"cn\":[947456,119232]}],\n\"textures/segment2/segment2_cn.1D1D0.ia1.png\": [16,8,16,{\"cn\":[947456,119248]}],\n\"textures/segment2/segment2_cn.1D1E0.ia1.png\": [16,8,16,{\"cn\":[947456,119264]}],\n\"textures/segment2/segment2_cn.1D1F0.ia1.png\": [16,8,16,{\"cn\":[947456,119280]}],\n\"textures/segment2/segment2_cn.1D200.ia1.png\": [16,8,16,{\"cn\":[947456,119296]}],\n\"textures/segment2/segment2_cn.1D210.ia1.png\": [16,8,16,{\"cn\":[947456,119312]}],\n\"textures/segment2/segment2_cn.1D220.ia1.png\": [16,8,16,{\"cn\":[947456,119328]}],\n\"textures/segment2/segment2_cn.1D230.ia1.png\": [16,8,16,{\"cn\":[947456,119344]}],\n\"textures/segment2/segment2_cn.1D240.ia1.png\": [16,8,16,{\"cn\":[947456,119360]}],\n\"textures/segment2/segment2_cn.1D250.ia1.png\": [16,8,16,{\"cn\":[947456,119376]}],\n\"textures/segment2/segment2_cn.1D260.ia1.png\": [16,8,16,{\"cn\":[947456,119392]}],\n\"textures/segment2/segment2_cn.1D270.ia1.png\": [16,8,16,{\"cn\":[947456,119408]}],\n\"textures/segment2/segment2_cn.1D280.ia1.png\": [16,8,16,{\"cn\":[947456,119424]}],\n\"textures/segment2/segment2_cn.1D290.ia1.png\": [16,8,16,{\"cn\":[947456,119440]}],\n\"textures/segment2/segment2_cn.1D2A0.ia1.png\": [16,8,16,{\"cn\":[947456,119456]}],\n\"textures/segment2/segment2_cn.1D2B0.ia1.png\": [16,8,16,{\"cn\":[947456,119472]}],\n\"textures/segment2/segment2_cn.1D2C0.ia1.png\": [16,8,16,{\"cn\":[947456,119488]}],\n\"textures/segment2/segment2_cn.1D2D0.ia1.png\": [16,8,16,{\"cn\":[947456,119504]}],\n\"textures/segment2/segment2_cn.1D2E0.ia1.png\": [16,8,16,{\"cn\":[947456,119520]}],\n\"textures/segment2/segment2_cn.1D2F0.ia1.png\": [16,8,16,{\"cn\":[947456,119536]}],\n\"textures/segment2/segment2_cn.1D300.ia1.png\": [16,8,16,{\"cn\":[947456,119552]}],\n\"textures/segment2/segment2_cn.1D310.ia1.png\": [16,8,16,{\"cn\":[947456,119568]}],\n\"textures/segment2/segment2_cn.1D320.ia1.png\": [16,8,16,{\"cn\":[947456,119584]}],\n\"textures/segment2/segment2_cn.1D330.ia1.png\": [16,8,16,{\"cn\":[947456,119600]}],\n\"textures/segment2/segment2_cn.1D340.ia1.png\": [16,8,16,{\"cn\":[947456,119616]}],\n\"textures/segment2/segment2_cn.1D350.ia1.png\": [16,8,16,{\"cn\":[947456,119632]}],\n\"textures/segment2/segment2_cn.1D360.ia1.png\": [16,8,16,{\"cn\":[947456,119648]}],\n\"textures/segment2/segment2_cn.1D370.ia1.png\": [16,8,16,{\"cn\":[947456,119664]}],\n\"textures/segment2/segment2_cn.1D380.ia1.png\": [16,8,16,{\"cn\":[947456,119680]}],\n\"textures/segment2/segment2_cn.1D390.ia1.png\": [16,8,16,{\"cn\":[947456,119696]}],\n\"textures/segment2/segment2_cn.1D3A0.ia1.png\": [16,8,16,{\"cn\":[947456,119712]}],\n\"textures/segment2/segment2_cn.1D3B0.ia1.png\": [16,8,16,{\"cn\":[947456,119728]}],\n\"textures/segment2/segment2_cn.1D3C0.ia1.png\": [16,8,16,{\"cn\":[947456,119744]}],\n\"textures/segment2/segment2_cn.1D3D0.ia1.png\": [16,8,16,{\"cn\":[947456,119760]}],\n\"textures/segment2/segment2_cn.1D3E0.ia1.png\": [16,8,16,{\"cn\":[947456,119776]}],\n\"textures/segment2/segment2_cn.1D3F0.ia1.png\": [16,8,16,{\"cn\":[947456,119792]}],\n\"textures/segment2/segment2_cn.1D400.ia1.png\": [16,8,16,{\"cn\":[947456,119808]}],\n\"textures/segment2/segment2_cn.1D410.ia1.png\": [16,8,16,{\"cn\":[947456,119824]}],\n\"textures/segment2/segment2_cn.1D420.ia1.png\": [16,8,16,{\"cn\":[947456,119840]}],\n\"textures/segment2/segment2_cn.1D430.ia1.png\": [16,8,16,{\"cn\":[947456,119856]}],\n\"textures/segment2/segment2_cn.1D440.ia1.png\": [16,8,16,{\"cn\":[947456,119872]}],\n\"textures/segment2/segment2_cn.1D450.ia1.png\": [16,8,16,{\"cn\":[947456,119888]}],\n\"textures/segment2/segment2_cn.1D460.ia1.png\": [16,8,16,{\"cn\":[947456,119904]}],\n\"textures/segment2/segment2_cn.1D470.ia1.png\": [16,8,16,{\"cn\":[947456,119920]}],\n\"textures/segment2/segment2_cn.1D480.ia1.png\": [16,8,16,{\"cn\":[947456,119936]}],\n\"textures/segment2/segment2_cn.1D490.ia1.png\": [16,8,16,{\"cn\":[947456,119952]}],\n\"textures/segment2/segment2_cn.1D4A0.ia1.png\": [16,8,16,{\"cn\":[947456,119968]}],\n\"textures/segment2/segment2_cn.1D4B0.ia1.png\": [16,8,16,{\"cn\":[947456,119984]}],\n\"textures/segment2/segment2_cn.1D4C0.ia1.png\": [16,8,16,{\"cn\":[947456,120000]}],\n\"textures/segment2/segment2_cn.1D4D0.ia1.png\": [16,8,16,{\"cn\":[947456,120016]}],\n\"textures/segment2/segment2_cn.1D4E0.ia1.png\": [16,8,16,{\"cn\":[947456,120032]}],\n\"textures/segment2/segment2_cn.1D4F0.ia1.png\": [16,8,16,{\"cn\":[947456,120048]}],\n\"textures/segment2/segment2_cn.1D500.ia1.png\": [16,8,16,{\"cn\":[947456,120064]}],\n\"textures/segment2/segment2_cn.1D510.ia1.png\": [16,8,16,{\"cn\":[947456,120080]}],\n\"textures/segment2/segment2_cn.1D520.ia1.png\": [16,8,16,{\"cn\":[947456,120096]}],\n\"textures/segment2/segment2_cn.1D530.ia1.png\": [16,8,16,{\"cn\":[947456,120112]}],\n\"textures/segment2/segment2_cn.1D540.ia1.png\": [16,8,16,{\"cn\":[947456,120128]}],\n\"textures/segment2/segment2_cn.1D550.ia1.png\": [16,8,16,{\"cn\":[947456,120144]}],\n\"textures/segment2/segment2_cn.1D560.ia1.png\": [16,8,16,{\"cn\":[947456,120160]}],\n\"textures/segment2/segment2_cn.1D570.ia1.png\": [16,8,16,{\"cn\":[947456,120176]}],\n\"textures/segment2/segment2_cn.1D580.ia1.png\": [16,8,16,{\"cn\":[947456,120192]}],\n\"textures/segment2/segment2_cn.1D590.ia1.png\": [16,8,16,{\"cn\":[947456,120208]}],\n\"textures/segment2/segment2_cn.1D5A0.ia1.png\": [16,8,16,{\"cn\":[947456,120224]}],\n\"textures/segment2/segment2_cn.1D5B0.ia1.png\": [16,8,16,{\"cn\":[947456,120240]}],\n\"textures/segment2/segment2_cn.1D5C0.ia1.png\": [16,8,16,{\"cn\":[947456,120256]}],\n\"textures/segment2/segment2_cn.1D5D0.ia1.png\": [16,8,16,{\"cn\":[947456,120272]}],\n\"textures/segment2/segment2_cn.1D5E0.ia1.png\": [16,8,16,{\"cn\":[947456,120288]}],\n\"textures/segment2/segment2_cn.1D5F0.ia1.png\": [16,8,16,{\"cn\":[947456,120304]}],\n\"textures/segment2/segment2_cn.1D600.ia1.png\": [16,8,16,{\"cn\":[947456,120320]}],\n\"textures/segment2/segment2_cn.1D610.ia1.png\": [16,8,16,{\"cn\":[947456,120336]}],\n\"textures/segment2/segment2_cn.1D620.ia1.png\": [16,8,16,{\"cn\":[947456,120352]}],\n\"textures/segment2/segment2_cn.1D630.ia1.png\": [16,8,16,{\"cn\":[947456,120368]}],\n\"textures/segment2/segment2_cn.1D640.ia1.png\": [16,8,16,{\"cn\":[947456,120384]}],\n\"textures/segment2/segment2_cn.1D650.ia1.png\": [16,8,16,{\"cn\":[947456,120400]}],\n\"textures/segment2/segment2_cn.1D660.ia1.png\": [16,8,16,{\"cn\":[947456,120416]}],\n\"textures/segment2/segment2_cn.1D670.ia1.png\": [16,8,16,{\"cn\":[947456,120432]}],\n\"textures/segment2/segment2_cn.1D680.ia1.png\": [16,8,16,{\"cn\":[947456,120448]}],\n\"textures/segment2/segment2_cn.1D690.ia1.png\": [16,8,16,{\"cn\":[947456,120464]}],\n\"textures/segment2/segment2_cn.1D6A0.ia1.png\": [16,8,16,{\"cn\":[947456,120480]}],\n\"textures/segment2/segment2_cn.1D6B0.ia1.png\": [16,8,16,{\"cn\":[947456,120496]}],\n\"textures/segment2/segment2_cn.1D6C0.ia1.png\": [16,8,16,{\"cn\":[947456,120512]}],\n\"textures/segment2/segment2_cn.1D6D0.ia1.png\": [16,8,16,{\"cn\":[947456,120528]}],\n\"textures/segment2/segment2_cn.1D6E0.ia1.png\": [16,8,16,{\"cn\":[947456,120544]}],\n\"textures/segment2/segment2_cn.1D6F0.ia1.png\": [16,8,16,{\"cn\":[947456,120560]}],\n\"textures/segment2/segment2_cn.1D700.ia1.png\": [16,8,16,{\"cn\":[947456,120576]}],\n\"textures/segment2/segment2_cn.1D710.ia1.png\": [16,8,16,{\"cn\":[947456,120592]}],\n\"textures/segment2/segment2_cn.1D720.ia1.png\": [16,8,16,{\"cn\":[947456,120608]}],\n\"textures/segment2/segment2_cn.1D730.ia1.png\": [16,8,16,{\"cn\":[947456,120624]}],\n\"textures/segment2/segment2_cn.1D740.ia1.png\": [16,8,16,{\"cn\":[947456,120640]}],\n\"textures/segment2/segment2_cn.1D750.ia1.png\": [16,8,16,{\"cn\":[947456,120656]}],\n\"textures/segment2/segment2_cn.1D760.ia1.png\": [16,8,16,{\"cn\":[947456,120672]}],\n\"textures/segment2/segment2_cn.1D770.ia1.png\": [16,8,16,{\"cn\":[947456,120688]}],\n\"textures/segment2/segment2_cn.1D780.ia1.png\": [16,8,16,{\"cn\":[947456,120704]}],\n\"textures/segment2/segment2_cn.1D790.ia1.png\": [16,8,16,{\"cn\":[947456,120720]}],\n\"textures/segment2/segment2_cn.1D7A0.ia1.png\": [16,8,16,{\"cn\":[947456,120736]}],\n\"textures/segment2/segment2_cn.1D7B0.ia1.png\": [16,8,16,{\"cn\":[947456,120752]}],\n\"textures/segment2/segment2_cn.1D7C0.ia1.png\": [16,8,16,{\"cn\":[947456,120768]}],\n\"textures/segment2/segment2_cn.1D7D0.ia1.png\": [16,8,16,{\"cn\":[947456,120784]}],\n\"textures/segment2/segment2_cn.1D7E0.ia1.png\": [16,8,16,{\"cn\":[947456,120800]}],\n\"textures/segment2/segment2_cn.1D7F0.ia1.png\": [16,8,16,{\"cn\":[947456,120816]}],\n\"textures/segment2/segment2_cn.1D800.ia1.png\": [16,8,16,{\"cn\":[947456,120832]}],\n\"textures/segment2/segment2_cn.1D810.ia1.png\": [16,8,16,{\"cn\":[947456,120848]}],\n\"textures/segment2/segment2_cn.1D820.ia1.png\": [16,8,16,{\"cn\":[947456,120864]}],\n\"textures/segment2/segment2_cn.1D830.ia1.png\": [16,8,16,{\"cn\":[947456,120880]}],\n\"textures/segment2/segment2_cn.1D840.ia1.png\": [16,8,16,{\"cn\":[947456,120896]}],\n\"textures/segment2/segment2_cn.1D850.ia1.png\": [16,8,16,{\"cn\":[947456,120912]}],\n\"textures/segment2/segment2_cn.1D860.ia1.png\": [16,8,16,{\"cn\":[947456,120928]}],\n\"textures/segment2/segment2_cn.1D870.ia1.png\": [16,8,16,{\"cn\":[947456,120944]}],\n\"textures/segment2/segment2_cn.1D880.ia1.png\": [16,8,16,{\"cn\":[947456,120960]}],\n\"textures/segment2/segment2_cn.1D890.ia1.png\": [16,8,16,{\"cn\":[947456,120976]}],\n\"textures/segment2/segment2_cn.1D8A0.ia1.png\": [16,8,16,{\"cn\":[947456,120992]}],\n\"textures/segment2/segment2_cn.1D8B0.ia1.png\": [16,8,16,{\"cn\":[947456,121008]}],\n\"textures/segment2/segment2_cn.1D8C0.ia1.png\": [16,8,16,{\"cn\":[947456,121024]}],\n\"textures/segment2/segment2_cn.1D8D0.ia1.png\": [16,8,16,{\"cn\":[947456,121040]}],\n\"textures/segment2/segment2_cn.1D8E0.ia1.png\": [16,8,16,{\"cn\":[947456,121056]}],\n\"textures/segment2/segment2_cn.1D8F0.ia1.png\": [16,8,16,{\"cn\":[947456,121072]}],\n\"textures/segment2/segment2_cn.1D900.ia1.png\": [16,8,16,{\"cn\":[947456,121088]}],\n\"textures/segment2/segment2_cn.1D910.ia1.png\": [16,8,16,{\"cn\":[947456,121104]}],\n\"textures/segment2/segment2_cn.1D920.ia1.png\": [16,8,16,{\"cn\":[947456,121120]}],\n\"textures/segment2/segment2_cn.1D930.ia1.png\": [16,8,16,{\"cn\":[947456,121136]}],\n\"textures/segment2/segment2_cn.1D940.ia1.png\": [16,8,16,{\"cn\":[947456,121152]}],\n\"textures/segment2/segment2_cn.1D950.ia1.png\": [16,8,16,{\"cn\":[947456,121168]}],\n\"textures/segment2/segment2_cn.1D960.ia1.png\": [16,8,16,{\"cn\":[947456,121184]}],\n\"textures/segment2/segment2_cn.1D970.ia1.png\": [16,8,16,{\"cn\":[947456,121200]}],\n\"textures/segment2/segment2_cn.1D980.ia1.png\": [16,8,16,{\"cn\":[947456,121216]}],\n\"textures/segment2/segment2_cn.1D990.ia1.png\": [16,8,16,{\"cn\":[947456,121232]}],\n\"textures/segment2/segment2_cn.1D9A0.ia1.png\": [16,8,16,{\"cn\":[947456,121248]}],\n\"textures/segment2/segment2_cn.1D9B0.ia1.png\": [16,8,16,{\"cn\":[947456,121264]}],\n\"textures/segment2/segment2_cn.1D9C0.ia1.png\": [16,8,16,{\"cn\":[947456,121280]}],\n\"textures/segment2/segment2_cn.1D9D0.ia1.png\": [16,8,16,{\"cn\":[947456,121296]}],\n\"textures/segment2/segment2_cn.1D9E0.ia1.png\": [16,8,16,{\"cn\":[947456,121312]}],\n\"textures/segment2/segment2_cn.1D9F0.ia1.png\": [16,8,16,{\"cn\":[947456,121328]}],\n\"textures/segment2/segment2_cn.1DA00.ia1.png\": [16,8,16,{\"cn\":[947456,121344]}],\n\"textures/segment2/segment2_cn.1DA10.ia1.png\": [16,8,16,{\"cn\":[947456,121360]}],\n\"textures/segment2/segment2_cn.1DA20.ia1.png\": [16,8,16,{\"cn\":[947456,121376]}],\n\"textures/segment2/segment2_cn.1DA30.ia1.png\": [16,8,16,{\"cn\":[947456,121392]}],\n\"textures/segment2/segment2_cn.1DA40.ia1.png\": [16,8,16,{\"cn\":[947456,121408]}],\n\"textures/segment2/segment2_cn.1DA50.ia1.png\": [16,8,16,{\"cn\":[947456,121424]}],\n\"textures/segment2/segment2_cn.1DA60.ia1.png\": [16,8,16,{\"cn\":[947456,121440]}],\n\"textures/segment2/segment2_cn.1DA70.ia1.png\": [16,8,16,{\"cn\":[947456,121456]}],\n\"textures/segment2/segment2_cn.1DA80.ia1.png\": [16,8,16,{\"cn\":[947456,121472]}],\n\"textures/segment2/segment2_cn.1DA90.ia1.png\": [16,8,16,{\"cn\":[947456,121488]}],\n\"textures/segment2/segment2_cn.1DAA0.ia1.png\": [16,8,16,{\"cn\":[947456,121504]}],\n\"textures/segment2/segment2_cn.1DAB0.ia1.png\": [16,8,16,{\"cn\":[947456,121520]}],\n\"textures/segment2/segment2_cn.1DAC0.ia1.png\": [16,8,16,{\"cn\":[947456,121536]}],\n\"textures/segment2/segment2_cn.1DAD0.ia1.png\": [16,8,16,{\"cn\":[947456,121552]}],\n\"textures/segment2/segment2_cn.1DAE0.ia1.png\": [16,8,16,{\"cn\":[947456,121568]}],\n\"textures/segment2/segment2_cn.1DAF0.ia1.png\": [16,8,16,{\"cn\":[947456,121584]}],\n\"textures/segment2/segment2_cn.1DB00.ia1.png\": [16,8,16,{\"cn\":[947456,121600]}],\n\"textures/segment2/segment2_cn.1DB10.ia1.png\": [16,8,16,{\"cn\":[947456,121616]}],\n\"textures/segment2/segment2_cn.1DB20.ia1.png\": [16,8,16,{\"cn\":[947456,121632]}],\n\"textures/segment2/segment2_cn.1DB30.ia1.png\": [16,8,16,{\"cn\":[947456,121648]}],\n\"textures/segment2/segment2_cn.1DB40.ia1.png\": [16,8,16,{\"cn\":[947456,121664]}],\n\"textures/segment2/segment2_cn.1DB50.ia1.png\": [16,8,16,{\"cn\":[947456,121680]}],\n\"textures/segment2/segment2_cn.1DB60.ia1.png\": [16,8,16,{\"cn\":[947456,121696]}],\n\"textures/segment2/segment2_cn.1DB70.ia1.png\": [16,8,16,{\"cn\":[947456,121712]}],\n\"textures/segment2/segment2_cn.1DB80.ia1.png\": [16,8,16,{\"cn\":[947456,121728]}],\n\"textures/segment2/segment2_cn.1DB90.ia1.png\": [16,8,16,{\"cn\":[947456,121744]}],\n\"textures/segment2/segment2_cn.1DBA0.ia1.png\": [16,8,16,{\"cn\":[947456,121760]}],\n\"textures/segment2/segment2_cn.1DBB0.ia1.png\": [16,8,16,{\"cn\":[947456,121776]}],\n\"textures/segment2/segment2_cn.1DBC0.ia1.png\": [16,8,16,{\"cn\":[947456,121792]}],\n\"textures/segment2/segment2_cn.1DBD0.ia1.png\": [16,8,16,{\"cn\":[947456,121808]}],\n\"textures/segment2/segment2_cn.1DBE0.ia1.png\": [16,8,16,{\"cn\":[947456,121824]}],\n\"textures/segment2/segment2_cn.1DBF0.ia1.png\": [16,8,16,{\"cn\":[947456,121840]}],\n\"textures/segment2/segment2_cn.1DC00.ia1.png\": [16,8,16,{\"cn\":[947456,121856]}],\n\"textures/segment2/segment2_cn.1DC10.ia1.png\": [16,8,16,{\"cn\":[947456,121872]}],\n\"textures/segment2/segment2_cn.1DC20.ia1.png\": [16,8,16,{\"cn\":[947456,121888]}],\n\"textures/segment2/segment2_cn.1DC30.ia1.png\": [16,8,16,{\"cn\":[947456,121904]}],\n\"textures/segment2/segment2_cn.1DC40.ia1.png\": [16,8,16,{\"cn\":[947456,121920]}],\n\"textures/segment2/segment2_cn.1DC50.ia1.png\": [16,8,16,{\"cn\":[947456,121936]}],\n\"textures/segment2/segment2_cn.1DC60.ia1.png\": [16,8,16,{\"cn\":[947456,121952]}],\n\"textures/segment2/segment2_cn.1DC70.ia1.png\": [16,8,16,{\"cn\":[947456,121968]}],\n\"textures/segment2/segment2_cn.1DC80.ia1.png\": [16,8,16,{\"cn\":[947456,121984]}],\n\"textures/segment2/segment2_cn.1DC90.ia1.png\": [16,8,16,{\"cn\":[947456,122000]}],\n\"textures/segment2/segment2_cn.1DCA0.ia1.png\": [16,8,16,{\"cn\":[947456,122016]}],\n\"textures/segment2/segment2_cn.1DCB0.ia1.png\": [16,8,16,{\"cn\":[947456,122032]}],\n\"textures/segment2/segment2_cn.1DCC0.ia1.png\": [16,8,16,{\"cn\":[947456,122048]}],\n\"textures/segment2/segment2_cn.1DCD0.ia1.png\": [16,8,16,{\"cn\":[947456,122064]}],\n\"textures/segment2/segment2_cn.1DCE0.ia1.png\": [16,8,16,{\"cn\":[947456,122080]}],\n\"textures/segment2/segment2_cn.1DCF0.ia1.png\": [16,8,16,{\"cn\":[947456,122096]}],\n\"textures/segment2/segment2_cn.1DD00.ia1.png\": [16,8,16,{\"cn\":[947456,122112]}],\n\"textures/segment2/segment2_cn.1DD10.ia1.png\": [16,8,16,{\"cn\":[947456,122128]}],\n\"textures/segment2/segment2_cn.1DD20.ia1.png\": [16,8,16,{\"cn\":[947456,122144]}],\n\"textures/segment2/segment2_cn.1DD30.ia1.png\": [16,8,16,{\"cn\":[947456,122160]}],\n\"textures/segment2/segment2_cn.1DD40.ia1.png\": [16,8,16,{\"cn\":[947456,122176]}],\n\"textures/segment2/segment2_cn.1DD50.ia1.png\": [16,8,16,{\"cn\":[947456,122192]}],\n\"textures/segment2/segment2_cn.1DD60.ia1.png\": [16,8,16,{\"cn\":[947456,122208]}],\n\"textures/segment2/segment2_cn.1DD70.ia1.png\": [16,8,16,{\"cn\":[947456,122224]}],\n\"textures/segment2/segment2_cn.1DD80.ia1.png\": [16,8,16,{\"cn\":[947456,122240]}],\n\"textures/segment2/segment2_cn.1DD90.ia1.png\": [16,8,16,{\"cn\":[947456,122256]}],\n\"textures/segment2/segment2_cn.1DDA0.ia1.png\": [16,8,16,{\"cn\":[947456,122272]}],\n\"textures/segment2/segment2_cn.1DDB0.ia1.png\": [16,8,16,{\"cn\":[947456,122288]}],\n\"textures/segment2/segment2_cn.1DDC0.ia1.png\": [16,8,16,{\"cn\":[947456,122304]}],\n\"textures/segment2/segment2_cn.1DDD0.ia1.png\": [16,8,16,{\"cn\":[947456,122320]}],\n\"textures/segment2/segment2_cn.1DDE0.ia1.png\": [16,8,16,{\"cn\":[947456,122336]}],\n\"textures/segment2/segment2_cn.1DDF0.ia1.png\": [16,8,16,{\"cn\":[947456,122352]}],\n\"textures/segment2/segment2_cn.1DE00.ia1.png\": [16,8,16,{\"cn\":[947456,122368]}],\n\"textures/segment2/segment2_cn.1DE10.ia1.png\": [16,8,16,{\"cn\":[947456,122384]}],\n\"textures/segment2/segment2_cn.1DE20.ia1.png\": [16,8,16,{\"cn\":[947456,122400]}],\n\"textures/segment2/segment2_cn.1DE30.ia1.png\": [16,8,16,{\"cn\":[947456,122416]}],\n\"textures/segment2/segment2_cn.1DE40.ia1.png\": [16,8,16,{\"cn\":[947456,122432]}],\n\"textures/segment2/segment2_cn.1DE50.ia1.png\": [16,8,16,{\"cn\":[947456,122448]}],\n\"textures/segment2/segment2_cn.1DE60.ia1.png\": [16,8,16,{\"cn\":[947456,122464]}],\n\"textures/segment2/segment2_cn.1DE70.ia1.png\": [16,8,16,{\"cn\":[947456,122480]}],\n\"textures/segment2/segment2_cn.1DE80.ia1.png\": [16,8,16,{\"cn\":[947456,122496]}],\n\"textures/segment2/segment2_cn.1DE90.ia1.png\": [16,8,16,{\"cn\":[947456,122512]}],\n\"textures/segment2/segment2_cn.1DEA0.ia1.png\": [16,8,16,{\"cn\":[947456,122528]}],\n\"textures/segment2/segment2_cn.1DEB0.ia1.png\": [16,8,16,{\"cn\":[947456,122544]}],\n\"textures/segment2/segment2_cn.1DEC0.ia1.png\": [16,8,16,{\"cn\":[947456,122560]}],\n\"textures/segment2/segment2_cn.1DED0.ia1.png\": [16,8,16,{\"cn\":[947456,122576]}],\n\"textures/segment2/segment2_cn.1DEE0.ia1.png\": [16,8,16,{\"cn\":[947456,122592]}],\n\"textures/segment2/segment2_cn.1DEF0.ia1.png\": [16,8,16,{\"cn\":[947456,122608]}],\n\"textures/segment2/segment2_cn.1DF00.ia1.png\": [16,8,16,{\"cn\":[947456,122624]}],\n\"textures/segment2/segment2_cn.1DF10.ia1.png\": [16,8,16,{\"cn\":[947456,122640]}],\n\"textures/segment2/segment2_cn.1DF20.ia1.png\": [16,8,16,{\"cn\":[947456,122656]}],\n\"textures/segment2/segment2_cn.1DF30.ia1.png\": [16,8,16,{\"cn\":[947456,122672]}],\n\"textures/segment2/segment2_cn.1DF40.ia1.png\": [16,8,16,{\"cn\":[947456,122688]}],\n\"textures/segment2/segment2_cn.1DF50.ia1.png\": [16,8,16,{\"cn\":[947456,122704]}],\n\"textures/segment2/segment2_cn.1DF60.ia1.png\": [16,8,16,{\"cn\":[947456,122720]}],\n\"textures/segment2/segment2_cn.1DF70.ia1.png\": [16,8,16,{\"cn\":[947456,122736]}],\n\"textures/segment2/segment2_cn.1DF80.ia1.png\": [16,8,16,{\"cn\":[947456,122752]}],\n\"textures/segment2/segment2_cn.1DF90.ia1.png\": [16,8,16,{\"cn\":[947456,122768]}],\n\"textures/segment2/segment2_cn.1DFA0.ia1.png\": [16,8,16,{\"cn\":[947456,122784]}],\n\"textures/segment2/segment2_cn.1DFB0.ia1.png\": [16,8,16,{\"cn\":[947456,122800]}],\n\"textures/segment2/segment2_cn.1DFC0.ia1.png\": [16,8,16,{\"cn\":[947456,122816]}],\n\"textures/segment2/segment2_cn.1DFD0.ia1.png\": [16,8,16,{\"cn\":[947456,122832]}],\n\"textures/segment2/segment2_cn.1DFE0.ia1.png\": [16,8,16,{\"cn\":[947456,122848]}],\n\"textures/segment2/segment2_cn.1DFF0.ia1.png\": [16,8,16,{\"cn\":[947456,122864]}],\n\"textures/segment2/segment2_cn.1E000.ia1.png\": [16,8,16,{\"cn\":[947456,122880]}],\n\"textures/segment2/segment2_cn.1E010.ia1.png\": [16,8,16,{\"cn\":[947456,122896]}],\n\"textures/segment2/segment2_cn.1E020.ia1.png\": [16,8,16,{\"cn\":[947456,122912]}],\n\"textures/segment2/segment2_cn.1E030.ia1.png\": [16,8,16,{\"cn\":[947456,122928]}],\n\"textures/segment2/segment2_cn.1E040.ia1.png\": [16,8,16,{\"cn\":[947456,122944]}],\n\"textures/segment2/segment2_cn.1E050.ia1.png\": [16,8,16,{\"cn\":[947456,122960]}],\n\"textures/segment2/segment2_cn.1E060.ia1.png\": [16,8,16,{\"cn\":[947456,122976]}],\n\"textures/segment2/segment2_cn.1E070.ia1.png\": [16,8,16,{\"cn\":[947456,122992]}],\n\"textures/segment2/segment2_cn.1E080.ia1.png\": [16,8,16,{\"cn\":[947456,123008]}],\n\"textures/segment2/segment2_cn.1E090.ia1.png\": [16,8,16,{\"cn\":[947456,123024]}],\n\"textures/segment2/segment2_cn.1E0A0.ia1.png\": [16,8,16,{\"cn\":[947456,123040]}],\n\"textures/segment2/segment2_cn.1E0B0.ia1.png\": [16,8,16,{\"cn\":[947456,123056]}],\n\"textures/segment2/segment2_cn.1E0C0.ia1.png\": [16,8,16,{\"cn\":[947456,123072]}],\n\"textures/segment2/segment2_cn.1E0D0.ia1.png\": [16,8,16,{\"cn\":[947456,123088]}],\n\"textures/segment2/segment2_cn.1E0E0.ia1.png\": [16,8,16,{\"cn\":[947456,123104]}],\n\"textures/segment2/segment2_cn.1E0F0.ia1.png\": [16,8,16,{\"cn\":[947456,123120]}],\n\"textures/segment2/segment2_cn.1E100.ia1.png\": [16,8,16,{\"cn\":[947456,123136]}],\n\"textures/segment2/segment2_cn.1E110.ia1.png\": [16,8,16,{\"cn\":[947456,123152]}],\n\"textures/segment2/segment2_cn.1E120.ia1.png\": [16,8,16,{\"cn\":[947456,123168]}],\n\"textures/segment2/segment2_cn.1E130.ia1.png\": [16,8,16,{\"cn\":[947456,123184]}],\n\"textures/segment2/segment2_cn.1E140.ia1.png\": [16,8,16,{\"cn\":[947456,123200]}],\n\"textures/segment2/segment2_cn.1E150.ia1.png\": [16,8,16,{\"cn\":[947456,123216]}],\n\"textures/segment2/segment2_cn.1E160.ia1.png\": [16,8,16,{\"cn\":[947456,123232]}],\n\"textures/segment2/segment2_cn.1E170.ia1.png\": [16,8,16,{\"cn\":[947456,123248]}],\n\"textures/segment2/segment2_cn.1E180.ia1.png\": [16,8,16,{\"cn\":[947456,123264]}],\n\"textures/segment2/segment2_cn.1E190.ia1.png\": [16,8,16,{\"cn\":[947456,123280]}],\n\"textures/segment2/segment2_cn.1E1A0.ia1.png\": [16,8,16,{\"cn\":[947456,123296]}],\n\"textures/segment2/segment2_cn.1E1B0.ia1.png\": [16,8,16,{\"cn\":[947456,123312]}],\n\"textures/segment2/segment2_cn.1E1C0.ia1.png\": [16,8,16,{\"cn\":[947456,123328]}],\n\"textures/segment2/segment2_cn.1E1D0.ia1.png\": [16,8,16,{\"cn\":[947456,123344]}],\n\"textures/segment2/segment2_cn.1E1E0.ia1.png\": [16,8,16,{\"cn\":[947456,123360]}],\n\"textures/segment2/segment2_cn.1E1F0.ia1.png\": [16,8,16,{\"cn\":[947456,123376]}],\n\"textures/segment2/segment2_cn.1E200.ia1.png\": [16,8,16,{\"cn\":[947456,123392]}],\n\"textures/segment2/segment2_cn.1E210.ia1.png\": [16,8,16,{\"cn\":[947456,123408]}],\n\"textures/segment2/segment2_cn.1E220.ia1.png\": [16,8,16,{\"cn\":[947456,123424]}],\n\"textures/segment2/segment2_cn.1E230.ia1.png\": [16,8,16,{\"cn\":[947456,123440]}],\n\"textures/segment2/segment2_cn.1E240.ia1.png\": [16,8,16,{\"cn\":[947456,123456]}],\n\"textures/segment2/segment2_cn.1E250.ia1.png\": [16,8,16,{\"cn\":[947456,123472]}],\n\"textures/segment2/segment2_cn.1E260.ia1.png\": [16,8,16,{\"cn\":[947456,123488]}],\n\"textures/segment2/segment2_cn.1E270.ia1.png\": [16,8,16,{\"cn\":[947456,123504]}],\n\"textures/segment2/segment2_cn.1E280.ia1.png\": [16,8,16,{\"cn\":[947456,123520]}],\n\"textures/segment2/segment2_cn.1E290.ia1.png\": [16,8,16,{\"cn\":[947456,123536]}],\n\"textures/segment2/segment2_cn.1E2A0.ia1.png\": [16,8,16,{\"cn\":[947456,123552]}],\n\"textures/segment2/segment2_cn.1E2B0.ia1.png\": [16,8,16,{\"cn\":[947456,123568]}],\n\"textures/segment2/segment2_cn.1E2C0.ia1.png\": [16,8,16,{\"cn\":[947456,123584]}],\n\"textures/segment2/segment2_cn.1E2D0.ia1.png\": [16,8,16,{\"cn\":[947456,123600]}],\n\"textures/segment2/segment2_cn.1E2E0.ia1.png\": [16,8,16,{\"cn\":[947456,123616]}],\n\"textures/segment2/segment2_cn.1E2F0.ia1.png\": [16,8,16,{\"cn\":[947456,123632]}],\n\"textures/segment2/segment2_cn.1E300.ia1.png\": [16,8,16,{\"cn\":[947456,123648]}],\n\"textures/segment2/segment2_cn.1E310.ia1.png\": [16,8,16,{\"cn\":[947456,123664]}],\n\"textures/segment2/segment2_cn.1E320.ia1.png\": [16,8,16,{\"cn\":[947456,123680]}],\n\"textures/segment2/segment2_cn.1E330.ia1.png\": [16,8,16,{\"cn\":[947456,123696]}],\n\"textures/segment2/segment2_cn.1E340.ia1.png\": [16,8,16,{\"cn\":[947456,123712]}],\n\"textures/segment2/segment2_cn.1E350.ia1.png\": [16,8,16,{\"cn\":[947456,123728]}],\n\"textures/segment2/segment2_cn.1E360.ia1.png\": [16,8,16,{\"cn\":[947456,123744]}],\n\"textures/segment2/segment2_cn.1E370.ia1.png\": [16,8,16,{\"cn\":[947456,123760]}],\n\"textures/segment2/segment2_cn.1E380.ia1.png\": [16,8,16,{\"cn\":[947456,123776]}],\n\"textures/segment2/segment2_cn.1E390.ia1.png\": [16,8,16,{\"cn\":[947456,123792]}],\n\"textures/segment2/segment2_cn.1E3A0.ia1.png\": [16,8,16,{\"cn\":[947456,123808]}],\n\"textures/segment2/segment2_cn.1E3B0.ia1.png\": [16,8,16,{\"cn\":[947456,123824]}],\n\"textures/segment2/segment2_cn.1E3C0.ia1.png\": [16,8,16,{\"cn\":[947456,123840]}],\n\"textures/segment2/segment2_cn.1E3D0.ia1.png\": [16,8,16,{\"cn\":[947456,123856]}],\n\"textures/segment2/segment2_cn.1E3E0.ia1.png\": [16,8,16,{\"cn\":[947456,123872]}],\n\"textures/segment2/segment2_cn.1E3F0.ia1.png\": [16,8,16,{\"cn\":[947456,123888]}],\n\"textures/segment2/segment2_cn.1E400.ia1.png\": [16,8,16,{\"cn\":[947456,123904]}],\n\"textures/segment2/segment2_cn.1E410.ia1.png\": [16,8,16,{\"cn\":[947456,123920]}],\n\"textures/segment2/segment2_cn.1E420.ia1.png\": [16,8,16,{\"cn\":[947456,123936]}],\n\"textures/segment2/segment2_cn.1E430.ia1.png\": [16,8,16,{\"cn\":[947456,123952]}],\n\"textures/segment2/segment2_cn.1E440.ia1.png\": [16,8,16,{\"cn\":[947456,123968]}],\n\"textures/segment2/segment2_cn.1E450.ia1.png\": [16,8,16,{\"cn\":[947456,123984]}],\n\"textures/segment2/segment2_cn.1E460.ia1.png\": [16,8,16,{\"cn\":[947456,124000]}],\n\"textures/segment2/segment2_cn.1E470.ia1.png\": [16,8,16,{\"cn\":[947456,124016]}],\n\"textures/segment2/segment2_cn.1E480.ia1.png\": [16,8,16,{\"cn\":[947456,124032]}],\n\"textures/segment2/segment2_cn.1E490.ia1.png\": [16,8,16,{\"cn\":[947456,124048]}],\n\"textures/segment2/segment2_cn.1E4A0.ia1.png\": [16,8,16,{\"cn\":[947456,124064]}],\n\"textures/segment2/segment2_cn.1E4B0.ia1.png\": [16,8,16,{\"cn\":[947456,124080]}],\n\"textures/segment2/segment2_cn.1E4C0.ia1.png\": [16,8,16,{\"cn\":[947456,124096]}],\n\"textures/segment2/segment2_cn.1E4D0.ia1.png\": [16,8,16,{\"cn\":[947456,124112]}],\n\"textures/segment2/segment2_cn.1E4E0.ia1.png\": [16,8,16,{\"cn\":[947456,124128]}],\n\"textures/segment2/segment2_cn.1E4F0.ia1.png\": [16,8,16,{\"cn\":[947456,124144]}],\n\"textures/segment2/segment2_cn.1E500.ia1.png\": [16,8,16,{\"cn\":[947456,124160]}],\n\"textures/segment2/segment2_cn.1E510.ia1.png\": [16,8,16,{\"cn\":[947456,124176]}],\n\"textures/segment2/segment2_cn.1E520.ia1.png\": [16,8,16,{\"cn\":[947456,124192]}],\n\"textures/segment2/segment2_cn.1E530.ia1.png\": [16,8,16,{\"cn\":[947456,124208]}],\n\"textures/segment2/segment2_cn.1E540.ia1.png\": [16,8,16,{\"cn\":[947456,124224]}],\n\"textures/segment2/segment2_cn.1E550.ia1.png\": [16,8,16,{\"cn\":[947456,124240]}],\n\"textures/segment2/segment2_cn.1E560.ia1.png\": [16,8,16,{\"cn\":[947456,124256]}],\n\"textures/segment2/segment2_cn.1E570.ia1.png\": [16,8,16,{\"cn\":[947456,124272]}],\n\"textures/segment2/segment2_cn.1E580.ia1.png\": [16,8,16,{\"cn\":[947456,124288]}],\n\"textures/segment2/segment2_cn.1E590.ia1.png\": [16,8,16,{\"cn\":[947456,124304]}],\n\"textures/segment2/segment2_cn.1E5A0.ia1.png\": [16,8,16,{\"cn\":[947456,124320]}],\n\"textures/segment2/segment2_cn.1E5B0.ia1.png\": [16,8,16,{\"cn\":[947456,124336]}],\n\"textures/segment2/segment2_cn.1E5C0.ia1.png\": [16,8,16,{\"cn\":[947456,124352]}],\n\"textures/segment2/segment2_cn.1E5D0.ia1.png\": [16,8,16,{\"cn\":[947456,124368]}],\n\"textures/segment2/segment2_cn.1E5E0.ia1.png\": [16,8,16,{\"cn\":[947456,124384]}],\n\"textures/segment2/segment2_cn.1E5F0.ia1.png\": [16,8,16,{\"cn\":[947456,124400]}],\n\"textures/segment2/segment2_cn.1E600.ia1.png\": [16,8,16,{\"cn\":[947456,124416]}],\n\"textures/segment2/segment2_cn.1E610.ia1.png\": [16,8,16,{\"cn\":[947456,124432]}],\n\"textures/segment2/segment2_cn.1E620.ia1.png\": [16,8,16,{\"cn\":[947456,124448]}],\n\"textures/segment2/segment2_cn.1E630.ia1.png\": [16,8,16,{\"cn\":[947456,124464]}],\n\"textures/segment2/segment2_cn.1E640.ia1.png\": [16,8,16,{\"cn\":[947456,124480]}],\n\"textures/segment2/segment2_cn.1E650.ia1.png\": [16,8,16,{\"cn\":[947456,124496]}],\n\"textures/segment2/segment2_cn.1E660.ia1.png\": [16,8,16,{\"cn\":[947456,124512]}],\n\"textures/segment2/segment2_cn.1E670.ia1.png\": [16,8,16,{\"cn\":[947456,124528]}],\n\"textures/segment2/segment2_cn.1E680.ia1.png\": [16,8,16,{\"cn\":[947456,124544]}],\n\"textures/segment2/segment2_cn.1E690.ia1.png\": [16,8,16,{\"cn\":[947456,124560]}],\n\"textures/segment2/segment2_cn.1E6A0.ia1.png\": [16,8,16,{\"cn\":[947456,124576]}],\n\"textures/segment2/segment2_cn.1E6B0.ia1.png\": [16,8,16,{\"cn\":[947456,124592]}],\n\"textures/segment2/segment2_cn.1E6C0.ia1.png\": [16,8,16,{\"cn\":[947456,124608]}],\n\"textures/segment2/segment2_cn.1E6D0.ia1.png\": [16,8,16,{\"cn\":[947456,124624]}],\n\"textures/segment2/segment2_cn.1E6E0.ia1.png\": [16,8,16,{\"cn\":[947456,124640]}],\n\"textures/segment2/segment2_cn.1E6F0.ia1.png\": [16,8,16,{\"cn\":[947456,124656]}],\n\"textures/segment2/segment2_cn.1E700.ia1.png\": [16,8,16,{\"cn\":[947456,124672]}],\n\"textures/segment2/segment2_cn.1E710.ia1.png\": [16,8,16,{\"cn\":[947456,124688]}],\n\"textures/segment2/segment2_cn.1E720.ia1.png\": [16,8,16,{\"cn\":[947456,124704]}],\n\"textures/segment2/segment2_cn.1E730.ia1.png\": [16,8,16,{\"cn\":[947456,124720]}],\n\"textures/segment2/segment2_cn.1E740.ia1.png\": [16,8,16,{\"cn\":[947456,124736]}],\n\"textures/segment2/segment2_cn.1E750.ia1.png\": [16,8,16,{\"cn\":[947456,124752]}],\n\"textures/segment2/segment2_cn.1E760.ia1.png\": [16,8,16,{\"cn\":[947456,124768]}],\n\"textures/segment2/segment2_cn.1E770.ia1.png\": [16,8,16,{\"cn\":[947456,124784]}],\n\"textures/segment2/segment2_cn.1E780.ia1.png\": [16,8,16,{\"cn\":[947456,124800]}],\n\"textures/segment2/segment2_cn.1E790.ia1.png\": [16,8,16,{\"cn\":[947456,124816]}],\n\"textures/segment2/segment2_cn.1E7A0.ia1.png\": [16,8,16,{\"cn\":[947456,124832]}],\n\"textures/segment2/segment2_cn.1E7B0.ia1.png\": [16,8,16,{\"cn\":[947456,124848]}],\n\"textures/segment2/segment2_cn.1E7C0.ia1.png\": [16,8,16,{\"cn\":[947456,124864]}],\n\"textures/segment2/segment2_cn.1E7D0.ia1.png\": [16,8,16,{\"cn\":[947456,124880]}],\n\"textures/segment2/segment2_cn.1E7E0.ia1.png\": [16,8,16,{\"cn\":[947456,124896]}],\n\"textures/segment2/segment2_cn.1E7F0.ia1.png\": [16,8,16,{\"cn\":[947456,124912]}],\n\"textures/segment2/segment2_cn.1E800.ia1.png\": [16,8,16,{\"cn\":[947456,124928]}],\n\"textures/segment2/segment2_cn.1E810.ia1.png\": [16,8,16,{\"cn\":[947456,124944]}],\n\"textures/segment2/segment2_cn.1E820.ia1.png\": [16,8,16,{\"cn\":[947456,124960]}],\n\"textures/segment2/segment2_cn.1E830.ia1.png\": [16,8,16,{\"cn\":[947456,124976]}],\n\"textures/segment2/segment2_cn.1E840.ia1.png\": [16,8,16,{\"cn\":[947456,124992]}],\n\"textures/segment2/segment2_cn.1E850.ia1.png\": [16,8,16,{\"cn\":[947456,125008]}],\n\"textures/segment2/segment2_cn.1E860.ia1.png\": [16,8,16,{\"cn\":[947456,125024]}],\n\"textures/segment2/segment2_cn.1E870.ia1.png\": [16,8,16,{\"cn\":[947456,125040]}],\n\"textures/segment2/segment2_cn.1E880.ia1.png\": [16,8,16,{\"cn\":[947456,125056]}],\n\"textures/segment2/segment2_cn.1E890.ia1.png\": [16,8,16,{\"cn\":[947456,125072]}],\n\"textures/segment2/segment2_cn.1E8A0.ia1.png\": [16,8,16,{\"cn\":[947456,125088]}],\n\"textures/segment2/segment2_cn.1E8B0.ia1.png\": [16,8,16,{\"cn\":[947456,125104]}],\n\"textures/segment2/segment2_cn.1E8C0.ia1.png\": [16,8,16,{\"cn\":[947456,125120]}],\n\"textures/segment2/segment2_cn.1E8D0.ia1.png\": [16,8,16,{\"cn\":[947456,125136]}],\n\"textures/segment2/segment2_cn.1E8E0.ia1.png\": [16,8,16,{\"cn\":[947456,125152]}],\n\"textures/segment2/segment2_cn.1E8F0.ia1.png\": [16,8,16,{\"cn\":[947456,125168]}],\n\"textures/segment2/segment2_cn.1E900.ia1.png\": [16,8,16,{\"cn\":[947456,125184]}],\n\"textures/segment2/segment2_cn.1E910.ia1.png\": [16,8,16,{\"cn\":[947456,125200]}],\n\"textures/segment2/segment2_cn.1E920.ia1.png\": [16,8,16,{\"cn\":[947456,125216]}],\n\"textures/segment2/segment2_cn.1E930.ia1.png\": [16,8,16,{\"cn\":[947456,125232]}],\n\"textures/segment2/segment2_cn.1E940.ia1.png\": [16,8,16,{\"cn\":[947456,125248]}],\n\"textures/segment2/segment2_cn.1E950.ia1.png\": [16,8,16,{\"cn\":[947456,125264]}],\n\"textures/segment2/segment2_cn.1E960.ia1.png\": [16,8,16,{\"cn\":[947456,125280]}],\n\"textures/segment2/segment2_cn.1E970.ia1.png\": [16,8,16,{\"cn\":[947456,125296]}],\n\"textures/segment2/segment2_cn.1E980.ia1.png\": [16,8,16,{\"cn\":[947456,125312]}],\n\"textures/segment2/segment2_cn.1E990.ia1.png\": [16,8,16,{\"cn\":[947456,125328]}],\n\"textures/segment2/segment2_cn.1E9A0.ia1.png\": [16,8,16,{\"cn\":[947456,125344]}],\n\"textures/segment2/segment2_cn.1E9B0.ia1.png\": [16,8,16,{\"cn\":[947456,125360]}],\n\"textures/segment2/segment2_cn.1E9C0.ia1.png\": [16,8,16,{\"cn\":[947456,125376]}],\n\"textures/segment2/segment2_cn.1E9D0.ia1.png\": [16,8,16,{\"cn\":[947456,125392]}],\n\"textures/segment2/segment2_cn.1E9E0.ia1.png\": [16,8,16,{\"cn\":[947456,125408]}],\n\"textures/segment2/segment2_cn.1E9F0.ia1.png\": [16,8,16,{\"cn\":[947456,125424]}],\n\"textures/segment2/segment2_cn.1EA00.ia1.png\": [16,8,16,{\"cn\":[947456,125440]}],\n\"textures/segment2/segment2_cn.1EA10.ia1.png\": [16,8,16,{\"cn\":[947456,125456]}],\n\"textures/segment2/segment2_cn.1EA20.ia1.png\": [16,8,16,{\"cn\":[947456,125472]}],\n\"textures/segment2/segment2_cn.1EA30.ia1.png\": [16,8,16,{\"cn\":[947456,125488]}],\n\"textures/segment2/segment2_cn.1EA40.ia1.png\": [16,8,16,{\"cn\":[947456,125504]}],\n\"textures/segment2/segment2_cn.1EA50.ia1.png\": [16,8,16,{\"cn\":[947456,125520]}],\n\"textures/segment2/segment2_cn.1EA60.ia1.png\": [16,8,16,{\"cn\":[947456,125536]}],\n\"textures/segment2/segment2_cn.1EA70.ia1.png\": [16,8,16,{\"cn\":[947456,125552]}],\n\"textures/segment2/segment2_cn.1EA80.ia1.png\": [16,8,16,{\"cn\":[947456,125568]}],\n\"textures/segment2/segment2_cn.1EA90.ia1.png\": [16,8,16,{\"cn\":[947456,125584]}],\n\"textures/segment2/segment2_cn.1EAA0.ia1.png\": [16,8,16,{\"cn\":[947456,125600]}],\n\"textures/segment2/segment2_cn.1EAB0.ia1.png\": [16,8,16,{\"cn\":[947456,125616]}],\n\"textures/segment2/segment2_cn.1EAC0.ia1.png\": [16,8,16,{\"cn\":[947456,125632]}],\n\"textures/segment2/segment2_cn.1EAD0.ia1.png\": [16,8,16,{\"cn\":[947456,125648]}],\n\"textures/segment2/segment2_cn.1EAE0.ia1.png\": [16,8,16,{\"cn\":[947456,125664]}],\n\"textures/segment2/segment2_cn.1EAF0.ia1.png\": [16,8,16,{\"cn\":[947456,125680]}],\n\"textures/segment2/segment2_cn.1EB00.ia1.png\": [16,8,16,{\"cn\":[947456,125696]}],\n\"textures/segment2/segment2_cn.1EB10.ia1.png\": [16,8,16,{\"cn\":[947456,125712]}],\n\"textures/segment2/segment2_cn.1EB20.ia1.png\": [16,8,16,{\"cn\":[947456,125728]}],\n\"textures/segment2/segment2_cn.1EB30.ia1.png\": [16,8,16,{\"cn\":[947456,125744]}],\n\"textures/segment2/segment2_cn.1EB40.ia1.png\": [16,8,16,{\"cn\":[947456,125760]}],\n\"textures/segment2/segment2_cn.1EB50.ia1.png\": [16,8,16,{\"cn\":[947456,125776]}],\n\"textures/segment2/segment2_cn.1EB60.ia1.png\": [16,8,16,{\"cn\":[947456,125792]}],\n\"textures/segment2/segment2_cn.1EB70.ia1.png\": [16,8,16,{\"cn\":[947456,125808]}],\n\"textures/segment2/segment2_cn.1EB80.ia1.png\": [16,8,16,{\"cn\":[947456,125824]}],\n\"textures/segment2/segment2_cn.1EB90.ia1.png\": [16,8,16,{\"cn\":[947456,125840]}],\n\"textures/segment2/segment2_cn.1EBA0.ia1.png\": [16,8,16,{\"cn\":[947456,125856]}],\n\"textures/segment2/segment2_cn.1EBB0.ia1.png\": [16,8,16,{\"cn\":[947456,125872]}],\n\"textures/segment2/segment2_cn.1EBC0.ia1.png\": [16,8,16,{\"cn\":[947456,125888]}],\n\"textures/segment2/segment2_cn.1EBD0.ia1.png\": [16,8,16,{\"cn\":[947456,125904]}],\n\"textures/segment2/segment2_cn.1EBE0.ia1.png\": [16,8,16,{\"cn\":[947456,125920]}],\n\"textures/segment2/segment2_cn.1EBF0.ia1.png\": [16,8,16,{\"cn\":[947456,125936]}],\n\"textures/segment2/segment2_cn.1EC00.ia1.png\": [16,8,16,{\"cn\":[947456,125952]}],\n\"textures/segment2/segment2_cn.1EC10.ia1.png\": [16,8,16,{\"cn\":[947456,125968]}],\n\"textures/segment2/segment2_cn.1EC20.ia1.png\": [16,8,16,{\"cn\":[947456,125984]}],\n\"textures/segment2/segment2_cn.1EC30.ia1.png\": [16,8,16,{\"cn\":[947456,126000]}],\n\"textures/segment2/segment2_cn.1EC40.ia1.png\": [16,8,16,{\"cn\":[947456,126016]}],\n\"textures/segment2/segment2_cn.1EC50.ia1.png\": [16,8,16,{\"cn\":[947456,126032]}],\n\"textures/segment2/segment2_cn.1EC60.ia1.png\": [16,8,16,{\"cn\":[947456,126048]}],\n\"textures/segment2/segment2_cn.1EC70.ia1.png\": [16,8,16,{\"cn\":[947456,126064]}],\n\"textures/segment2/segment2_cn.1EC80.ia1.png\": [16,8,16,{\"cn\":[947456,126080]}],\n\"textures/segment2/segment2_cn.1EC90.ia1.png\": [16,8,16,{\"cn\":[947456,126096]}],\n\"textures/segment2/segment2_cn.1ECA0.ia1.png\": [16,8,16,{\"cn\":[947456,126112]}],\n\"textures/segment2/segment2_cn.1ECB0.ia1.png\": [16,8,16,{\"cn\":[947456,126128]}],\n\"textures/segment2/segment2_cn.1ECC0.ia1.png\": [16,8,16,{\"cn\":[947456,126144]}],\n\"textures/segment2/segment2_cn.1ECD0.ia1.png\": [16,8,16,{\"cn\":[947456,126160]}],\n\"textures/segment2/segment2_cn.1ECE0.ia1.png\": [16,8,16,{\"cn\":[947456,126176]}],\n\"textures/segment2/segment2_cn.1ECF0.ia1.png\": [16,8,16,{\"cn\":[947456,126192]}],\n\"textures/segment2/segment2_cn.1ED00.ia1.png\": [16,8,16,{\"cn\":[947456,126208]}],\n\"textures/segment2/segment2_cn.1ED10.ia1.png\": [16,8,16,{\"cn\":[947456,126224]}],\n\"textures/segment2/segment2_cn.1ED20.ia1.png\": [16,8,16,{\"cn\":[947456,126240]}],\n\"textures/segment2/segment2_cn.1ED30.ia1.png\": [16,8,16,{\"cn\":[947456,126256]}],\n\"textures/segment2/segment2_cn.1ED40.ia1.png\": [16,8,16,{\"cn\":[947456,126272]}],\n\"textures/segment2/segment2_cn.1ED50.ia1.png\": [16,8,16,{\"cn\":[947456,126288]}],\n\"textures/segment2/segment2_cn.1ED60.ia1.png\": [16,8,16,{\"cn\":[947456,126304]}],\n\"textures/segment2/segment2_cn.1ED70.ia1.png\": [16,8,16,{\"cn\":[947456,126320]}],\n\"textures/segment2/segment2_cn.1ED80.ia1.png\": [16,8,16,{\"cn\":[947456,126336]}],\n\"textures/segment2/segment2_cn.1ED90.ia1.png\": [16,8,16,{\"cn\":[947456,126352]}],\n\"textures/segment2/segment2_cn.1EDA0.ia1.png\": [16,8,16,{\"cn\":[947456,126368]}],\n\"textures/segment2/segment2_cn.1EDB0.ia1.png\": [16,8,16,{\"cn\":[947456,126384]}],\n\"textures/segment2/segment2_cn.1EDC0.ia1.png\": [16,8,16,{\"cn\":[947456,126400]}],\n\"textures/segment2/segment2_cn.1EDD0.ia1.png\": [16,8,16,{\"cn\":[947456,126416]}],\n\"textures/segment2/segment2_cn.1EDE0.ia1.png\": [16,8,16,{\"cn\":[947456,126432]}],\n\"textures/segment2/segment2_cn.1EDF0.ia1.png\": [16,8,16,{\"cn\":[947456,126448]}],\n\"textures/segment2/segment2_cn.1EE00.ia1.png\": [16,8,16,{\"cn\":[947456,126464]}],\n\"textures/segment2/segment2_cn.1EE10.ia1.png\": [16,8,16,{\"cn\":[947456,126480]}],\n\"textures/segment2/segment2_cn.1EE20.ia1.png\": [16,8,16,{\"cn\":[947456,126496]}],\n\"textures/segment2/segment2_cn.1EE30.ia1.png\": [16,8,16,{\"cn\":[947456,126512]}],\n\"textures/segment2/segment2_cn.1EE40.ia1.png\": [16,8,16,{\"cn\":[947456,126528]}],\n\"textures/segment2/segment2_cn.1EE50.ia1.png\": [16,8,16,{\"cn\":[947456,126544]}],\n\"textures/segment2/segment2_cn.1EE60.ia1.png\": [16,8,16,{\"cn\":[947456,126560]}],\n\"textures/segment2/segment2_cn.1EE70.ia1.png\": [16,8,16,{\"cn\":[947456,126576]}],\n\"textures/segment2/shadow_quarter_circle.ia8.png\": [16,16,256,{\"jp\":[1078992,62040],\"us\":[1083968,73912],\"eu\":[909712,30584],\"sh\":[934640,62040],\"cn\":[947456,174376]}],\n\"textures/segment2/shadow_quarter_square.ia8.png\": [16,16,256,{\"jp\":[1078992,62296],\"us\":[1083968,74168],\"eu\":[909712,30840],\"sh\":[934640,62296],\"cn\":[947456,174632]}],\n\"textures/sky/metal_hole.rgba16.png\": [32,32,2048,{\"jp\":[3390640,26624],\"us\":[3397392,26624],\"eu\":[3270992,26624],\"sh\":[3245360,26624],\"cn\":[3319120,26624]}],\n\"textures/sky/rr_textures.00000.rgba16.png\": [32,32,2048,{\"jp\":[3390640,0],\"us\":[3397392,0],\"eu\":[3270992,0],\"sh\":[3245360,0],\"cn\":[3319120,0]}],\n\"textures/sky/rr_textures.00800.rgba16.png\": [32,32,2048,{\"jp\":[3390640,2048],\"us\":[3397392,2048],\"eu\":[3270992,2048],\"sh\":[3245360,2048],\"cn\":[3319120,2048]}],\n\"textures/sky/rr_textures.01000.rgba16.png\": [32,32,2048,{\"jp\":[3390640,4096],\"us\":[3397392,4096],\"eu\":[3270992,4096],\"sh\":[3245360,4096],\"cn\":[3319120,4096]}],\n\"textures/sky/rr_textures.01800.rgba16.png\": [32,32,2048,{\"jp\":[3390640,6144],\"us\":[3397392,6144],\"eu\":[3270992,6144],\"sh\":[3245360,6144],\"cn\":[3319120,6144]}],\n\"textures/sky/rr_textures.02000.rgba16.png\": [32,64,4096,{\"jp\":[3390640,8192],\"us\":[3397392,8192],\"eu\":[3270992,8192],\"sh\":[3245360,8192],\"cn\":[3319120,8192]}],\n\"textures/sky/rr_textures.03000.rgba16.png\": [32,32,2048,{\"jp\":[3390640,12288],\"us\":[3397392,12288],\"eu\":[3270992,12288],\"sh\":[3245360,12288],\"cn\":[3319120,12288]}],\n\"textures/sky/rr_textures.03800.rgba16.png\": [64,32,4096,{\"jp\":[3390640,14336],\"us\":[3397392,14336],\"eu\":[3270992,14336],\"sh\":[3245360,14336],\"cn\":[3319120,14336]}],\n\"textures/sky/rr_textures.04800.rgba16.png\": [32,32,2048,{\"jp\":[3390640,18432],\"us\":[3397392,18432],\"eu\":[3270992,18432],\"sh\":[3245360,18432],\"cn\":[3319120,18432]}],\n\"textures/sky/rr_textures.05000.rgba16.png\": [32,32,2048,{\"jp\":[3390640,20480],\"us\":[3397392,20480],\"eu\":[3270992,20480],\"sh\":[3245360,20480],\"cn\":[3319120,20480]}],\n\"textures/sky/rr_textures.05800.rgba16.png\": [32,32,2048,{\"jp\":[3390640,22528],\"us\":[3397392,22528],\"eu\":[3270992,22528],\"sh\":[3245360,22528],\"cn\":[3319120,22528]}],\n\"textures/sky/rr_textures.06000.rgba16.png\": [32,32,2048,{\"jp\":[3390640,24576],\"us\":[3397392,24576],\"eu\":[3270992,24576],\"sh\":[3245360,24576],\"cn\":[3319120,24576]}],\n\"textures/sky/rr_textures.07000.rgba16.png\": [32,32,2048,{\"jp\":[3390640,28672],\"us\":[3397392,28672],\"eu\":[3270992,28672],\"sh\":[3245360,28672],\"cn\":[3319120,28672]}],\n\"textures/sky/rr_textures.07800.rgba16.png\": [32,32,2048,{\"jp\":[3390640,30720],\"us\":[3397392,30720],\"eu\":[3270992,30720],\"sh\":[3245360,30720],\"cn\":[3319120,30720]}],\n\"textures/sky/rr_textures.08000.rgba16.png\": [32,32,2048,{\"jp\":[3390640,32768],\"us\":[3397392,32768],\"eu\":[3270992,32768],\"sh\":[3245360,32768],\"cn\":[3319120,32768]}],\n\"textures/snow/ccm_textures.00000.rgba16.png\": [32,32,2048,{\"jp\":[3405536,0],\"us\":[3412288,0],\"eu\":[3285888,0],\"sh\":[3260256,0],\"cn\":[3334016,0]}],\n\"textures/snow/ccm_textures.00800.rgba16.png\": [32,32,2048,{\"jp\":[3405536,2048],\"us\":[3412288,2048],\"eu\":[3285888,2048],\"sh\":[3260256,2048],\"cn\":[3334016,2048]}],\n\"textures/snow/ccm_textures.01000.rgba16.png\": [32,64,4096,{\"jp\":[3405536,4096],\"us\":[3412288,4096],\"eu\":[3285888,4096],\"sh\":[3260256,4096],\"cn\":[3334016,4096]}],\n\"textures/snow/ccm_textures.02000.rgba16.png\": [32,32,2048,{\"jp\":[3405536,8192],\"us\":[3412288,8192],\"eu\":[3285888,8192],\"sh\":[3260256,8192],\"cn\":[3334016,8192]}],\n\"textures/snow/ccm_textures.02800.rgba16.png\": [32,32,2048,{\"jp\":[3405536,10240],\"us\":[3412288,10240],\"eu\":[3285888,10240],\"sh\":[3260256,10240],\"cn\":[3334016,10240]}],\n\"textures/snow/ccm_textures.03000.rgba16.png\": [32,32,2048,{\"jp\":[3405536,12288],\"us\":[3412288,12288],\"eu\":[3285888,12288],\"sh\":[3260256,12288],\"cn\":[3334016,12288]}],\n\"textures/snow/ccm_textures.03800.rgba16.png\": [32,32,2048,{\"jp\":[3405536,14336],\"us\":[3412288,14336],\"eu\":[3285888,14336],\"sh\":[3260256,14336],\"cn\":[3334016,14336]}],\n\"textures/snow/ccm_textures.04000.rgba16.png\": [32,32,2048,{\"jp\":[3405536,16384],\"us\":[3412288,16384],\"eu\":[3285888,16384],\"sh\":[3260256,16384],\"cn\":[3334016,16384]}],\n\"textures/snow/ccm_textures.04800.rgba16.png\": [32,32,2048,{\"jp\":[3405536,18432],\"us\":[3412288,18432],\"eu\":[3285888,18432],\"sh\":[3260256,18432],\"cn\":[3334016,18432]}],\n\"textures/snow/ccm_textures.05000.rgba16.png\": [32,32,2048,{\"jp\":[3405536,20480],\"us\":[3412288,20480],\"eu\":[3285888,20480],\"sh\":[3260256,20480],\"cn\":[3334016,20480]}],\n\"textures/snow/ccm_textures.05800.rgba16.png\": [32,32,2048,{\"jp\":[3405536,22528],\"us\":[3412288,22528],\"eu\":[3285888,22528],\"sh\":[3260256,22528],\"cn\":[3334016,22528]}],\n\"textures/snow/ccm_textures.06000.rgba16.png\": [32,32,2048,{\"jp\":[3405536,24576],\"us\":[3412288,24576],\"eu\":[3285888,24576],\"sh\":[3260256,24576],\"cn\":[3334016,24576]}],\n\"textures/snow/ccm_textures.06800.rgba16.png\": [32,32,2048,{\"jp\":[3405536,26624],\"us\":[3412288,26624],\"eu\":[3285888,26624],\"sh\":[3260256,26624],\"cn\":[3334016,26624]}],\n\"textures/snow/ccm_textures.07000.rgba16.png\": [64,32,4096,{\"jp\":[3405536,28672],\"us\":[3412288,28672],\"eu\":[3285888,28672],\"sh\":[3260256,28672],\"cn\":[3334016,28672]}],\n\"textures/snow/ccm_textures.08000.rgba16.png\": [32,32,2048,{\"jp\":[3405536,32768],\"us\":[3412288,32768],\"eu\":[3285888,32768],\"sh\":[3260256,32768],\"cn\":[3334016,32768]}],\n\"textures/snow/ccm_textures.08800.rgba16.png\": [32,32,2048,{\"jp\":[3405536,34816],\"us\":[3412288,34816],\"eu\":[3285888,34816],\"sh\":[3260256,34816],\"cn\":[3334016,34816]}],\n\"textures/snow/ccm_textures.09000.ia16.png\": [32,32,2048,{\"jp\":[3405536,36864],\"us\":[3412288,36864],\"eu\":[3285888,36864],\"sh\":[3260256,36864],\"cn\":[3334016,36864]}],\n\"textures/snow/ccm_textures.09800.ia16.png\": [32,32,2048,{\"jp\":[3405536,38912],\"us\":[3412288,38912],\"eu\":[3285888,38912],\"sh\":[3260256,38912],\"cn\":[3334016,38912]}],\n\"textures/spooky/bbh_textures.00000.rgba16.png\": [32,32,2048,{\"jp\":[3298272,0],\"us\":[3305024,0],\"eu\":[3178624,0],\"sh\":[3152992,0],\"cn\":[3226752,0]}],\n\"textures/spooky/bbh_textures.00800.rgba16.png\": [32,64,4096,{\"jp\":[3298272,2048],\"us\":[3305024,2048],\"eu\":[3178624,2048],\"sh\":[3152992,2048],\"cn\":[3226752,2048]}],\n\"textures/spooky/bbh_textures.01800.rgba16.png\": [32,64,4096,{\"jp\":[3298272,6144],\"us\":[3305024,6144],\"eu\":[3178624,6144],\"sh\":[3152992,6144],\"cn\":[3226752,6144]}],\n\"textures/spooky/bbh_textures.02800.rgba16.png\": [32,64,4096,{\"jp\":[3298272,10240],\"us\":[3305024,10240],\"eu\":[3178624,10240],\"sh\":[3152992,10240],\"cn\":[3226752,10240]}],\n\"textures/spooky/bbh_textures.03800.rgba16.png\": [32,64,4096,{\"jp\":[3298272,14336],\"us\":[3305024,14336],\"eu\":[3178624,14336],\"sh\":[3152992,14336],\"cn\":[3226752,14336]}],\n\"textures/spooky/bbh_textures.04800.rgba16.png\": [32,32,2048,{\"jp\":[3298272,18432],\"us\":[3305024,18432],\"eu\":[3178624,18432],\"sh\":[3152992,18432],\"cn\":[3226752,18432]}],\n\"textures/spooky/bbh_textures.05000.rgba16.png\": [32,64,4096,{\"jp\":[3298272,20480],\"us\":[3305024,20480],\"eu\":[3178624,20480],\"sh\":[3152992,20480],\"cn\":[3226752,20480]}],\n\"textures/spooky/bbh_textures.06000.rgba16.png\": [32,32,2048,{\"jp\":[3298272,24576],\"us\":[3305024,24576],\"eu\":[3178624,24576],\"sh\":[3152992,24576],\"cn\":[3226752,24576]}],\n\"textures/spooky/bbh_textures.06800.rgba16.png\": [32,32,2048,{\"jp\":[3298272,26624],\"us\":[3305024,26624],\"eu\":[3178624,26624],\"sh\":[3152992,26624],\"cn\":[3226752,26624]}],\n\"textures/spooky/bbh_textures.07000.rgba16.png\": [64,32,4096,{\"jp\":[3298272,28672],\"us\":[3305024,28672],\"eu\":[3178624,28672],\"sh\":[3152992,28672],\"cn\":[3226752,28672]}],\n\"textures/spooky/bbh_textures.08000.rgba16.png\": [32,32,2048,{\"jp\":[3298272,32768],\"us\":[3305024,32768],\"eu\":[3178624,32768],\"sh\":[3152992,32768],\"cn\":[3226752,32768]}],\n\"textures/spooky/bbh_textures.08800.rgba16.png\": [32,32,2048,{\"jp\":[3298272,34816],\"us\":[3305024,34816],\"eu\":[3178624,34816],\"sh\":[3152992,34816],\"cn\":[3226752,34816]}],\n\"textures/spooky/bbh_textures.09000.rgba16.png\": [64,32,4096,{\"jp\":[3298272,36864],\"us\":[3305024,36864],\"eu\":[3178624,36864],\"sh\":[3152992,36864],\"cn\":[3226752,36864]}],\n\"textures/spooky/bbh_textures.0A000.rgba16.png\": [32,32,2048,{\"jp\":[1462368,49800],\"us\":[1469536,49800],\"eu\":[1341504,49800],\"sh\":[1318016,49800],\"cn\":[1384848,49800]}],\n\"textures/spooky/bbh_textures.0A800.ia16.png\": [32,32,2048,{\"jp\":[3298272,43008],\"us\":[3305024,43008],\"eu\":[3178624,43008],\"sh\":[3152992,43008],\"cn\":[3226752,43008]}],\n\"textures/spooky/bbh_textures.0B000.ia16.png\": [32,32,2048,{\"jp\":[3298272,45056],\"us\":[3305024,45056],\"eu\":[3178624,45056],\"sh\":[3152992,45056],\"cn\":[3226752,45056]}],\n\"textures/spooky/bbh_textures.0B800.ia16.png\": [32,64,4096,{\"jp\":[3298272,47104],\"us\":[3305024,47104],\"eu\":[3178624,47104],\"sh\":[3152992,47104],\"cn\":[3226752,47104]}],\n\"textures/title_screen_bg/title_screen_bg.001C0.rgba16.png\": [80,20,3200,{\"jp\":[2550336,448],\"us\":[2558144,448],\"eu\":[2426672,448],\"sh\":[2403488,448]}],\n\"textures/title_screen_bg/title_screen_bg.00E40.rgba16.png\": [80,20,3200,{\"jp\":[2550336,3648],\"us\":[2558144,3648],\"eu\":[2426672,3648],\"sh\":[2403488,3648]}],\n\"textures/title_screen_bg/title_screen_bg.01AC0.rgba16.png\": [80,20,3200,{\"jp\":[2550336,6848],\"us\":[2558144,6848],\"eu\":[2426672,6848],\"sh\":[2403488,6848]}],\n\"textures/title_screen_bg/title_screen_bg.02740.rgba16.png\": [80,20,3200,{\"jp\":[2550336,10048],\"us\":[2558144,10048],\"eu\":[2426672,10048],\"sh\":[2403488,10048]}],\n\"textures/title_screen_bg/title_screen_bg.033C0.rgba16.png\": [80,20,3200,{\"jp\":[2550336,13248],\"us\":[2558144,13248],\"eu\":[2426672,13248],\"sh\":[2403488,13248]}],\n\"textures/title_screen_bg/title_screen_bg.04040.rgba16.png\": [80,20,3200,{\"jp\":[2550336,16448],\"us\":[2558144,16448],\"eu\":[2426672,16448],\"sh\":[2403488,16448]}],\n\"textures/title_screen_bg/title_screen_bg.04CC0.rgba16.png\": [80,20,3200,{\"jp\":[2550336,19648],\"us\":[2558144,19648],\"eu\":[2426672,19648],\"sh\":[2403488,19648]}],\n\"textures/title_screen_bg/title_screen_bg.05940.rgba16.png\": [80,20,3200,{\"jp\":[2550336,22848],\"us\":[2558144,22848],\"eu\":[2426672,22848],\"sh\":[2403488,22848]}],\n\"textures/title_screen_bg/title_screen_bg.06648.rgba16.png\": [80,24,3840,{\"sh\":[2403488,26184],\"cn\":[2474624,26184]}],\n\"textures/title_screen_bg/title_screen_bg_ique.001C0.rgba16.png\": [80,20,3200,{\"cn\":[2474624,448]}],\n\"textures/title_screen_bg/title_screen_bg_ique.00E40.rgba16.png\": [80,20,3200,{\"cn\":[2474624,3648]}],\n\"textures/title_screen_bg/title_screen_bg_ique.01AC0.rgba16.png\": [80,20,3200,{\"cn\":[2474624,6848]}],\n\"textures/title_screen_bg/title_screen_bg_ique.02740.rgba16.png\": [80,20,3200,{\"cn\":[2474624,10048]}],\n\"textures/title_screen_bg/title_screen_bg_ique.033C0.rgba16.png\": [80,20,3200,{\"cn\":[2474624,13248]}],\n\"textures/title_screen_bg/title_screen_bg_ique.04040.rgba16.png\": [80,20,3200,{\"cn\":[2474624,16448]}],\n\"textures/title_screen_bg/title_screen_bg_ique.04CC0.rgba16.png\": [80,20,3200,{\"cn\":[2474624,19648]}],\n\"textures/title_screen_bg/title_screen_bg_ique.05940.rgba16.png\": [80,20,3200,{\"cn\":[2474624,22848]}],\n\"textures/water/jrb_textures.00000.rgba16.png\": [32,32,2048,{\"jp\":[3354832,0],\"us\":[3361584,0],\"eu\":[3235184,0],\"sh\":[3209552,0],\"cn\":[3283312,0]}],\n\"textures/water/jrb_textures.00800.rgba16.png\": [64,32,4096,{\"jp\":[3354832,2048],\"us\":[3361584,2048],\"eu\":[3235184,2048],\"sh\":[3209552,2048],\"cn\":[3283312,2048]}],\n\"textures/water/jrb_textures.01800.rgba16.png\": [64,32,4096,{\"jp\":[3354832,6144],\"us\":[3361584,6144],\"eu\":[3235184,6144],\"sh\":[3209552,6144],\"cn\":[3283312,6144]}],\n\"textures/water/jrb_textures.02800.rgba16.png\": [64,32,4096,{\"jp\":[3354832,10240],\"us\":[3361584,10240],\"eu\":[3235184,10240],\"sh\":[3209552,10240],\"cn\":[3283312,10240]}],\n\"textures/water/jrb_textures.03800.rgba16.png\": [64,32,4096,{\"jp\":[3354832,14336],\"us\":[3361584,14336],\"eu\":[3235184,14336],\"sh\":[3209552,14336],\"cn\":[3283312,14336]}],\n\"textures/water/jrb_textures.04800.rgba16.png\": [64,32,4096,{\"jp\":[3354832,18432],\"us\":[3361584,18432],\"eu\":[3235184,18432],\"sh\":[3209552,18432],\"cn\":[3283312,18432]}],\n\"textures/water/jrb_textures.05800.rgba16.png\": [32,32,2048,{\"jp\":[3354832,22528],\"us\":[3361584,22528],\"eu\":[3235184,22528],\"sh\":[3209552,22528],\"cn\":[3283312,22528]}],\n\"textures/water/jrb_textures.06000.rgba16.png\": [32,32,2048,{\"jp\":[3354832,24576],\"us\":[3361584,24576],\"eu\":[3235184,24576],\"sh\":[3209552,24576],\"cn\":[3283312,24576]}],\n\"textures/water/jrb_textures.06800.rgba16.png\": [64,32,4096,{\"jp\":[3354832,26624],\"us\":[3361584,26624],\"eu\":[3235184,26624],\"sh\":[3209552,26624],\"cn\":[3283312,26624]}],\n\"textures/water/jrb_textures.07800.rgba16.png\": [64,32,4096,{\"jp\":[3354832,30720],\"us\":[3361584,30720],\"eu\":[3235184,30720],\"sh\":[3209552,30720],\"cn\":[3283312,30720]}],\n\"textures/water/jrb_textures.08800.rgba16.png\": [32,32,2048,{\"jp\":[3354832,34816],\"us\":[3361584,34816],\"eu\":[3235184,34816],\"sh\":[3209552,34816],\"cn\":[3283312,34816]}],\n\"textures/water/jrb_textures.09000.rgba16.png\": [64,32,4096,{\"jp\":[3354832,36864],\"us\":[3361584,36864],\"eu\":[3235184,36864],\"sh\":[3209552,36864],\"cn\":[3283312,36864]}],\n\"textures/water/jrb_textures.0A000.rgba16.png\": [32,32,2048,{\"jp\":[3354832,40960],\"us\":[3361584,40960],\"eu\":[3235184,40960],\"sh\":[3209552,40960],\"cn\":[3283312,40960]}],\n\"textures/water/jrb_textures.0A800.rgba16.png\": [64,32,4096,{\"jp\":[3354832,43008],\"us\":[3361584,43008],\"eu\":[3235184,43008],\"sh\":[3209552,43008],\"cn\":[3283312,43008]}],\n\"textures/water/jrb_textures.0B800.rgba16.png\": [64,32,4096,{\"jp\":[3354832,47104],\"us\":[3361584,47104],\"eu\":[3235184,47104],\"sh\":[3209552,47104],\"cn\":[3283312,47104]}],\n\"sound/samples/bowser_organ/00_organ_C3.aiff\": [0,{\"jp\":[\"@sound\",195],\"us\":[\"@sound\",216],\"eu\":[\"@sound\",216]}],\n\"sound/samples/bowser_organ/01_organ_C4.aiff\": [0,{\"jp\":[\"@sound\",196],\"us\":[\"@sound\",217],\"eu\":[\"@sound\",217]}],\n\"sound/samples/bowser_organ/02_boys_choir_Bb4.aiff\": [0,{\"jp\":[\"@sound\",197],\"us\":[\"@sound\",218],\"eu\":[\"@sound\",218]}],\n\"sound/samples/course_start/00_la_E3.aiff\": [0,{\"jp\":[\"@sound\",194],\"us\":[\"@sound\",215],\"eu\":[\"@sound\",215]}],\n\"sound/samples/instruments/00_banjo_D2.aiff\": [0,{\"jp\":[\"@sound\",120],\"us\":[\"@sound\",141],\"eu\":[\"@sound\",141],\"sh\":[\"@sound\",141],\"cn\":[\"@sound\",141]}],\n\"sound/samples/instruments/01_banjo_A2.aiff\": [0,{\"jp\":[\"@sound\",121],\"us\":[\"@sound\",142],\"eu\":[\"@sound\",142],\"sh\":[\"@sound\",142],\"cn\":[\"@sound\",142]}],\n\"sound/samples/instruments/02_violin_B2.aiff\": [0,{\"jp\":[\"@sound\",122],\"us\":[\"@sound\",143],\"eu\":[\"@sound\",143],\"sh\":[\"@sound\",143],\"cn\":[\"@sound\",143]}],\n\"sound/samples/instruments/03_human_whistle_C3.aiff\": [0,{\"jp\":[\"@sound\",123],\"us\":[\"@sound\",144],\"eu\":[\"@sound\",144],\"sh\":[\"@sound\",144],\"cn\":[\"@sound\",144]}],\n\"sound/samples/instruments/04_bright_piano_G#3.aiff\": [0,{\"jp\":[\"@sound\",124],\"us\":[\"@sound\",145],\"eu\":[\"@sound\",145],\"sh\":[\"@sound\",145],\"cn\":[\"@sound\",145]}],\n\"sound/samples/instruments/05_acoustic_bass_A1.aiff\": [0,{\"jp\":[\"@sound\",125],\"us\":[\"@sound\",146],\"eu\":[\"@sound\",146],\"sh\":[\"@sound\",146],\"cn\":[\"@sound\",146]}],\n\"sound/samples/instruments/06_kick_drum_1.aiff\": [0,{\"jp\":[\"@sound\",126],\"us\":[\"@sound\",147],\"eu\":[\"@sound\",147],\"sh\":[\"@sound\",147],\"cn\":[\"@sound\",147]}],\n\"sound/samples/instruments/07_rimshot.aiff\": [0,{\"jp\":[\"@sound\",127],\"us\":[\"@sound\",148],\"eu\":[\"@sound\",148],\"sh\":[\"@sound\",148],\"cn\":[\"@sound\",148]}],\n\"sound/samples/instruments/08.aiff\": [0,{\"jp\":[\"@sound\",128],\"us\":[\"@sound\",149],\"eu\":[\"@sound\",149],\"sh\":[\"@sound\",149],\"cn\":[\"@sound\",149]}],\n\"sound/samples/instruments/09.aiff\": [0,{\"jp\":[\"@sound\",129],\"us\":[\"@sound\",150],\"eu\":[\"@sound\",150],\"sh\":[\"@sound\",150],\"cn\":[\"@sound\",150]}],\n\"sound/samples/instruments/0A_tambourine.aiff\": [0,{\"jp\":[\"@sound\",130],\"us\":[\"@sound\",151],\"eu\":[\"@sound\",151],\"sh\":[\"@sound\",151],\"cn\":[\"@sound\",151]}],\n\"sound/samples/instruments/0B.aiff\": [0,{\"jp\":[\"@sound\",131],\"us\":[\"@sound\",152],\"eu\":[\"@sound\",152],\"sh\":[\"@sound\",152],\"cn\":[\"@sound\",152]}],\n\"sound/samples/instruments/0C_conga_stick.aiff\": [0,{\"jp\":[\"@sound\",132],\"us\":[\"@sound\",153],\"eu\":[\"@sound\",153],\"sh\":[\"@sound\",153],\"cn\":[\"@sound\",153]}],\n\"sound/samples/instruments/0D_clave.aiff\": [0,{\"jp\":[\"@sound\",133],\"us\":[\"@sound\",154],\"eu\":[\"@sound\",154],\"sh\":[\"@sound\",154],\"cn\":[\"@sound\",154]}],\n\"sound/samples/instruments/0E_hihat_closed.aiff\": [0,{\"jp\":[\"@sound\",134],\"us\":[\"@sound\",155],\"eu\":[\"@sound\",155],\"sh\":[\"@sound\",155],\"cn\":[\"@sound\",155]}],\n\"sound/samples/instruments/0F_hihat_open.aiff\": [0,{\"jp\":[\"@sound\",135],\"us\":[\"@sound\",156],\"eu\":[\"@sound\",156],\"sh\":[\"@sound\",156],\"cn\":[\"@sound\",156]}],\n\"sound/samples/instruments/10_cymbal_bell.aiff\": [0,{\"jp\":[\"@sound\",136],\"us\":[\"@sound\",157],\"eu\":[\"@sound\",157],\"sh\":[\"@sound\",157],\"cn\":[\"@sound\",157]}],\n\"sound/samples/instruments/11_splash_cymbal.aiff\": [0,{\"jp\":[\"@sound\",137],\"us\":[\"@sound\",158],\"eu\":[\"@sound\",158],\"sh\":[\"@sound\",158],\"cn\":[\"@sound\",158]}],\n\"sound/samples/instruments/12_snare_drum_1.aiff\": [0,{\"jp\":[\"@sound\",138],\"us\":[\"@sound\",159],\"eu\":[\"@sound\",159],\"sh\":[\"@sound\",159],\"cn\":[\"@sound\",159]}],\n\"sound/samples/instruments/13_snare_drum_2.aiff\": [0,{\"jp\":[\"@sound\",139],\"us\":[\"@sound\",160],\"eu\":[\"@sound\",160],\"sh\":[\"@sound\",160],\"cn\":[\"@sound\",160]}],\n\"sound/samples/instruments/14_strings_Eb2.aiff\": [0,{\"jp\":[\"@sound\",140],\"us\":[\"@sound\",161],\"eu\":[\"@sound\",161],\"sh\":[\"@sound\",161],\"cn\":[\"@sound\",161]}],\n\"sound/samples/instruments/15_strings_B3.aiff\": [0,{\"jp\":[\"@sound\",141],\"us\":[\"@sound\",162],\"eu\":[\"@sound\",162],\"sh\":[\"@sound\",162],\"cn\":[\"@sound\",162]}],\n\"sound/samples/instruments/16_french_horns_C3.aiff\": [0,{\"jp\":[\"@sound\",142],\"us\":[\"@sound\",163],\"eu\":[\"@sound\",163],\"sh\":[\"@sound\",163],\"cn\":[\"@sound\",163]}],\n\"sound/samples/instruments/17_trumpet_C#3.aiff\": [0,{\"jp\":[\"@sound\",143],\"us\":[\"@sound\",164],\"eu\":[\"@sound\",164],\"sh\":[\"@sound\",164],\"cn\":[\"@sound\",164]}],\n\"sound/samples/instruments/18_timpani.aiff\": [0,{\"jp\":[\"@sound\",144],\"us\":[\"@sound\",165],\"eu\":[\"@sound\",165],\"sh\":[\"@sound\",165],\"cn\":[\"@sound\",165]}],\n\"sound/samples/instruments/19_brass_Eb3.aiff\": [0,{\"jp\":[\"@sound\",145],\"us\":[\"@sound\",166],\"eu\":[\"@sound\",166],\"sh\":[\"@sound\",166],\"cn\":[\"@sound\",166]}],\n\"sound/samples/instruments/1A_slap_bass_G#2.aiff\": [0,{\"jp\":[\"@sound\",146],\"us\":[\"@sound\",167],\"eu\":[\"@sound\",167],\"sh\":[\"@sound\",167],\"cn\":[\"@sound\",167]}],\n\"sound/samples/instruments/1B_percussive_synth_Eb3.aiff\": [0,{\"jp\":[\"@sound\",147],\"us\":[\"@sound\",168],\"eu\":[\"@sound\",168],\"sh\":[\"@sound\",168],\"cn\":[\"@sound\",168]}],\n\"sound/samples/instruments/1C_les_paul_guitar_E2.aiff\": [0,{\"jp\":[\"@sound\",148],\"us\":[\"@sound\",169],\"eu\":[\"@sound\",169],\"sh\":[\"@sound\",169],\"cn\":[\"@sound\",169]}],\n\"sound/samples/instruments/1D.aiff\": [0,{\"jp\":[\"@sound\",149],\"us\":[\"@sound\",170],\"eu\":[\"@sound\",170],\"sh\":[\"@sound\",170],\"cn\":[\"@sound\",170]}],\n\"sound/samples/instruments/1E_closed_triangle.aiff\": [0,{\"jp\":[\"@sound\",150],\"us\":[\"@sound\",171],\"eu\":[\"@sound\",171],\"sh\":[\"@sound\",171],\"cn\":[\"@sound\",171]}],\n\"sound/samples/instruments/1F_open_triangle.aiff\": [0,{\"jp\":[\"@sound\",151],\"us\":[\"@sound\",172],\"eu\":[\"@sound\",172],\"sh\":[\"@sound\",172],\"cn\":[\"@sound\",172]}],\n\"sound/samples/instruments/20_cabasa.aiff\": [0,{\"jp\":[\"@sound\",152],\"us\":[\"@sound\",173],\"eu\":[\"@sound\",173],\"sh\":[\"@sound\",173],\"cn\":[\"@sound\",173]}],\n\"sound/samples/instruments/21_sine_bass_Bb2.aiff\": [0,{\"jp\":[\"@sound\",153],\"us\":[\"@sound\",174],\"eu\":[\"@sound\",174],\"sh\":[\"@sound\",174],\"cn\":[\"@sound\",174]}],\n\"sound/samples/instruments/22_boys_choir_Bb4.aiff\": [0,{\"jp\":[\"@sound\",154],\"us\":[\"@sound\",175],\"eu\":[\"@sound\",175],\"sh\":[\"@sound\",175],\"cn\":[\"@sound\",175]}],\n\"sound/samples/instruments/23_strings_Eb2.aiff\": [0,{\"jp\":[\"@sound\",155],\"us\":[\"@sound\",176],\"eu\":[\"@sound\",176],\"sh\":[\"@sound\",176],\"cn\":[\"@sound\",176]}],\n\"sound/samples/instruments/24_strings_G#2.aiff\": [0,{\"jp\":[\"@sound\",156],\"us\":[\"@sound\",177],\"eu\":[\"@sound\",177],\"sh\":[\"@sound\",177],\"cn\":[\"@sound\",177]}],\n\"sound/samples/instruments/25_strings_F#3.aiff\": [0,{\"jp\":[\"@sound\",157],\"us\":[\"@sound\",178],\"eu\":[\"@sound\",178],\"sh\":[\"@sound\",178],\"cn\":[\"@sound\",178]}],\n\"sound/samples/instruments/26_crystal_rhodes_C4.aiff\": [0,{\"jp\":[\"@sound\",158],\"us\":[\"@sound\",179],\"eu\":[\"@sound\",179],\"sh\":[\"@sound\",179],\"cn\":[\"@sound\",179]}],\n\"sound/samples/instruments/27_harpsichord_F3.aiff\": [0,{\"jp\":[\"@sound\",159],\"us\":[\"@sound\",180],\"eu\":[\"@sound\",180],\"sh\":[\"@sound\",180],\"cn\":[\"@sound\",180]}],\n\"sound/samples/instruments/28_sitar_1_A2.aiff\": [0,{\"jp\":[\"@sound\",160],\"us\":[\"@sound\",181],\"eu\":[\"@sound\",181],\"sh\":[\"@sound\",181],\"cn\":[\"@sound\",181]}],\n\"sound/samples/instruments/29_orchestra_hit_C3.aiff\": [0,{\"jp\":[\"@sound\",161],\"us\":[\"@sound\",182],\"eu\":[\"@sound\",182],\"sh\":[\"@sound\",182],\"cn\":[\"@sound\",182]}],\n\"sound/samples/instruments/2A_tabla_riff_1.aiff\": [0,{\"jp\":[\"@sound\",162],\"us\":[\"@sound\",183],\"eu\":[\"@sound\",183],\"sh\":[\"@sound\",183],\"cn\":[\"@sound\",183]}],\n\"sound/samples/instruments/2B_tabla_riff_2.aiff\": [0,{\"jp\":[\"@sound\",163],\"us\":[\"@sound\",184],\"eu\":[\"@sound\",184],\"sh\":[\"@sound\",184],\"cn\":[\"@sound\",184]}],\n\"sound/samples/instruments/2C_tabla_riff_3.aiff\": [0,{\"jp\":[\"@sound\",164],\"us\":[\"@sound\",185],\"eu\":[\"@sound\",185],\"sh\":[\"@sound\",185],\"cn\":[\"@sound\",185]}],\n\"sound/samples/instruments/2D_trombone_Bb2.aiff\": [0,{\"jp\":[\"@sound\",165],\"us\":[\"@sound\",186],\"eu\":[\"@sound\",186],\"sh\":[\"@sound\",186],\"cn\":[\"@sound\",186]}],\n\"sound/samples/instruments/2E_accordion_C4.aiff\": [0,{\"jp\":[\"@sound\",166],\"us\":[\"@sound\",187],\"eu\":[\"@sound\",187],\"sh\":[\"@sound\",187],\"cn\":[\"@sound\",187]}],\n\"sound/samples/instruments/2F_sleigh_bells.aiff\": [0,{\"jp\":[\"@sound\",167],\"us\":[\"@sound\",188],\"eu\":[\"@sound\",188],\"sh\":[\"@sound\",188],\"cn\":[\"@sound\",188]}],\n\"sound/samples/instruments/30_rarefaction-lahna_E4.aiff\": [0,{\"jp\":[\"@sound\",168],\"us\":[\"@sound\",189],\"eu\":[\"@sound\",189],\"sh\":[\"@sound\",189],\"cn\":[\"@sound\",189]}],\n\"sound/samples/instruments/31_rarefaction-convolution_Eb2.aiff\": [0,{\"jp\":[\"@sound\",169],\"us\":[\"@sound\",190],\"eu\":[\"@sound\",190],\"sh\":[\"@sound\",190],\"cn\":[\"@sound\",190]}],\n\"sound/samples/instruments/32_metal_rimshot.aiff\": [0,{\"jp\":[\"@sound\",170],\"us\":[\"@sound\",191],\"eu\":[\"@sound\",191],\"sh\":[\"@sound\",191],\"cn\":[\"@sound\",191]}],\n\"sound/samples/instruments/33_kick_drum_2.aiff\": [0,{\"jp\":[\"@sound\",171],\"us\":[\"@sound\",192],\"eu\":[\"@sound\",192],\"sh\":[\"@sound\",192],\"cn\":[\"@sound\",192]}],\n\"sound/samples/instruments/34_alto_flute_A4.aiff\": [0,{\"jp\":[\"@sound\",172],\"us\":[\"@sound\",193],\"eu\":[\"@sound\",193],\"sh\":[\"@sound\",193],\"cn\":[\"@sound\",193]}],\n\"sound/samples/instruments/34b_organ_C3.aiff\": [0,{\"sh\":[\"@sound\",194],\"cn\":[\"@sound\",194]}],\n\"sound/samples/instruments/34c_organ_C4.aiff\": [0,{\"sh\":[\"@sound\",195],\"cn\":[\"@sound\",195]}],\n\"sound/samples/instruments/35_gospel_organ_F4.aiff\": [0,{\"jp\":[\"@sound\",173],\"us\":[\"@sound\",194],\"eu\":[\"@sound\",194],\"sh\":[\"@sound\",196],\"cn\":[\"@sound\",196]}],\n\"sound/samples/instruments/36_sawtooth_synth_Eb1.aiff\": [0,{\"jp\":[\"@sound\",174],\"us\":[\"@sound\",195],\"eu\":[\"@sound\",195],\"sh\":[\"@sound\",197],\"cn\":[\"@sound\",197]}],\n\"sound/samples/instruments/37_square_synth_C5.aiff\": [0,{\"jp\":[\"@sound\",175],\"us\":[\"@sound\",196],\"eu\":[\"@sound\",196],\"sh\":[\"@sound\",198],\"cn\":[\"@sound\",198]}],\n\"sound/samples/instruments/38_electric_kick_drum.aiff\": [0,{\"jp\":[\"@sound\",176],\"us\":[\"@sound\",197],\"eu\":[\"@sound\",197],\"sh\":[\"@sound\",199],\"cn\":[\"@sound\",199]}],\n\"sound/samples/instruments/39_sitar_2_C#3.aiff\": [0,{\"jp\":[\"@sound\",177],\"us\":[\"@sound\",198],\"eu\":[\"@sound\",198],\"sh\":[\"@sound\",200],\"cn\":[\"@sound\",200]}],\n\"sound/samples/instruments/3A_music_box_C5.aiff\": [0,{\"jp\":[\"@sound\",178],\"us\":[\"@sound\",199],\"eu\":[\"@sound\",199],\"sh\":[\"@sound\",201],\"cn\":[\"@sound\",201]}],\n\"sound/samples/instruments/3B_acoustic_guitar_A1.aiff\": [0,{\"jp\":[\"@sound\",179],\"us\":[\"@sound\",200],\"eu\":[\"@sound\",200],\"sh\":[\"@sound\",202],\"cn\":[\"@sound\",202]}],\n\"sound/samples/instruments/3C_acoustic_guitar_E3.aiff\": [0,{\"jp\":[\"@sound\",180],\"us\":[\"@sound\",201],\"eu\":[\"@sound\",201],\"sh\":[\"@sound\",203],\"cn\":[\"@sound\",203]}],\n\"sound/samples/instruments/3D_acoustic_guitar_B6.aiff\": [0,{\"jp\":[\"@sound\",181],\"us\":[\"@sound\",202],\"eu\":[\"@sound\",202],\"sh\":[\"@sound\",204],\"cn\":[\"@sound\",204]}],\n\"sound/samples/instruments/3E_monk_choir_B2.aiff\": [0,{\"jp\":[\"@sound\",182],\"us\":[\"@sound\",203],\"eu\":[\"@sound\",203],\"sh\":[\"@sound\",205],\"cn\":[\"@sound\",205]}],\n\"sound/samples/instruments/3F_small_gamelan.aiff\": [0,{\"jp\":[\"@sound\",183],\"us\":[\"@sound\",204],\"eu\":[\"@sound\",204],\"sh\":[\"@sound\",206],\"cn\":[\"@sound\",206]}],\n\"sound/samples/instruments/40_fu_yin_gong_C4.aiff\": [0,{\"jp\":[\"@sound\",184],\"us\":[\"@sound\",205],\"eu\":[\"@sound\",205],\"sh\":[\"@sound\",207],\"cn\":[\"@sound\",207]}],\n\"sound/samples/instruments/41_pan_flute_C3.aiff\": [0,{\"jp\":[\"@sound\",185],\"us\":[\"@sound\",206],\"eu\":[\"@sound\",206],\"sh\":[\"@sound\",208],\"cn\":[\"@sound\",208]}],\n\"sound/samples/instruments/42_vibraphone_F#4.aiff\": [0,{\"jp\":[\"@sound\",186],\"us\":[\"@sound\",207],\"eu\":[\"@sound\",207],\"sh\":[\"@sound\",209],\"cn\":[\"@sound\",209]}],\n\"sound/samples/instruments/43_harmonica_C4.aiff\": [0,{\"jp\":[\"@sound\",187],\"us\":[\"@sound\",208],\"eu\":[\"@sound\",208],\"sh\":[\"@sound\",210],\"cn\":[\"@sound\",210]}],\n\"sound/samples/instruments/44_grand_piano_F#5.aiff\": [0,{\"jp\":[\"@sound\",188],\"us\":[\"@sound\",209],\"eu\":[\"@sound\",209],\"sh\":[\"@sound\",211],\"cn\":[\"@sound\",211]}],\n\"sound/samples/instruments/45_french_horns_C4.aiff\": [0,{\"jp\":[\"@sound\",189],\"us\":[\"@sound\",210],\"eu\":[\"@sound\",210],\"sh\":[\"@sound\",212],\"cn\":[\"@sound\",212]}],\n\"sound/samples/instruments/45b_la_E3.aiff\": [0,{\"sh\":[\"@sound\",213],\"cn\":[\"@sound\",213]}],\n\"sound/samples/instruments/46_pizzicato_strings_Bb2.aiff\": [0,{\"jp\":[\"@sound\",190],\"us\":[\"@sound\",211],\"eu\":[\"@sound\",211],\"sh\":[\"@sound\",214],\"cn\":[\"@sound\",214]}],\n\"sound/samples/instruments/47_pizzicato_strings_Bb3.aiff\": [0,{\"jp\":[\"@sound\",191],\"us\":[\"@sound\",212],\"eu\":[\"@sound\",212],\"sh\":[\"@sound\",215],\"cn\":[\"@sound\",215]}],\n\"sound/samples/instruments/48_steel_drum_C#3.aiff\": [0,{\"jp\":[\"@sound\",192],\"us\":[\"@sound\",213],\"eu\":[\"@sound\",213],\"sh\":[\"@sound\",216],\"cn\":[\"@sound\",216]}],\n\"sound/samples/piranha_music_box/00_music_box_C5.aiff\": [0,{\"jp\":[\"@sound\",193],\"us\":[\"@sound\",214],\"eu\":[\"@sound\",214]}],\n\"sound/samples/sfx_1/00_twirl.aiff\": [0,{\"jp\":[\"@sound\",0],\"us\":[\"@sound\",0],\"eu\":[\"@sound\",0],\"sh\":[\"@sound\",0],\"cn\":[\"@sound\",0]}],\n\"sound/samples/sfx_1/01_brushing.aiff\": [0,{\"jp\":[\"@sound\",1],\"us\":[\"@sound\",1],\"eu\":[\"@sound\",1],\"sh\":[\"@sound\",1],\"cn\":[\"@sound\",1]}],\n\"sound/samples/sfx_1/02_hand_touch.aiff\": [0,{\"jp\":[\"@sound\",2],\"us\":[\"@sound\",2],\"eu\":[\"@sound\",2],\"sh\":[\"@sound\",2],\"cn\":[\"@sound\",2]}],\n\"sound/samples/sfx_1/03_yoshi.aiff\": [0,{\"jp\":[\"@sound\",3],\"us\":[\"@sound\",3],\"eu\":[\"@sound\",3],\"sh\":[\"@sound\",3],\"cn\":[\"@sound\",3]}],\n\"sound/samples/sfx_1/04_plop.aiff\": [0,{\"jp\":[\"@sound\",4],\"us\":[\"@sound\",4],\"eu\":[\"@sound\",4],\"sh\":[\"@sound\",4],\"cn\":[\"@sound\",4]}],\n\"sound/samples/sfx_1/05_heavy_landing.aiff\": [0,{\"jp\":[\"@sound\",5],\"us\":[\"@sound\",5],\"eu\":[\"@sound\",5],\"sh\":[\"@sound\",5],\"cn\":[\"@sound\",5]}],\n\"sound/samples/sfx_4/00.aiff\": [0,{\"jp\":[\"@sound\",17],\"us\":[\"@sound\",17],\"eu\":[\"@sound\",17],\"sh\":[\"@sound\",17],\"cn\":[\"@sound\",17]}],\n\"sound/samples/sfx_4/01.aiff\": [0,{\"jp\":[\"@sound\",18],\"us\":[\"@sound\",18],\"eu\":[\"@sound\",18],\"sh\":[\"@sound\",18],\"cn\":[\"@sound\",18]}],\n\"sound/samples/sfx_4/02.aiff\": [0,{\"jp\":[\"@sound\",19],\"us\":[\"@sound\",19],\"eu\":[\"@sound\",19],\"sh\":[\"@sound\",19],\"cn\":[\"@sound\",19]}],\n\"sound/samples/sfx_4/03.aiff\": [0,{\"jp\":[\"@sound\",20],\"us\":[\"@sound\",20],\"eu\":[\"@sound\",20],\"sh\":[\"@sound\",20],\"cn\":[\"@sound\",20]}],\n\"sound/samples/sfx_4/04.aiff\": [0,{\"jp\":[\"@sound\",21],\"us\":[\"@sound\",21],\"eu\":[\"@sound\",21],\"sh\":[\"@sound\",21],\"cn\":[\"@sound\",21]}],\n\"sound/samples/sfx_4/05.aiff\": [0,{\"jp\":[\"@sound\",22],\"us\":[\"@sound\",22],\"eu\":[\"@sound\",22],\"sh\":[\"@sound\",22],\"cn\":[\"@sound\",22]}],\n\"sound/samples/sfx_4/06.aiff\": [0,{\"jp\":[\"@sound\",23],\"us\":[\"@sound\",23],\"eu\":[\"@sound\",23],\"sh\":[\"@sound\",23],\"cn\":[\"@sound\",23]}],\n\"sound/samples/sfx_4/07.aiff\": [0,{\"jp\":[\"@sound\",24],\"us\":[\"@sound\",24],\"eu\":[\"@sound\",24],\"sh\":[\"@sound\",24],\"cn\":[\"@sound\",24]}],\n\"sound/samples/sfx_4/08.aiff\": [0,{\"jp\":[\"@sound\",25],\"us\":[\"@sound\",25],\"eu\":[\"@sound\",25],\"sh\":[\"@sound\",25],\"cn\":[\"@sound\",25]}],\n\"sound/samples/sfx_4/09.aiff\": [0,{\"jp\":[\"@sound\",26],\"us\":[\"@sound\",26],\"eu\":[\"@sound\",26],\"sh\":[\"@sound\",26],\"cn\":[\"@sound\",26]}],\n\"sound/samples/sfx_5/00.aiff\": [0,{\"jp\":[\"@sound\",27],\"us\":[\"@sound\",27],\"eu\":[\"@sound\",27],\"sh\":[\"@sound\",27],\"cn\":[\"@sound\",27]}],\n\"sound/samples/sfx_5/01.aiff\": [0,{\"jp\":[\"@sound\",28],\"us\":[\"@sound\",28],\"eu\":[\"@sound\",28],\"sh\":[\"@sound\",28],\"cn\":[\"@sound\",28]}],\n\"sound/samples/sfx_5/02.aiff\": [0,{\"jp\":[\"@sound\",29],\"us\":[\"@sound\",29],\"eu\":[\"@sound\",29],\"sh\":[\"@sound\",29],\"cn\":[\"@sound\",29]}],\n\"sound/samples/sfx_5/03.aiff\": [0,{\"jp\":[\"@sound\",30],\"us\":[\"@sound\",30],\"eu\":[\"@sound\",30],\"sh\":[\"@sound\",30],\"cn\":[\"@sound\",30]}],\n\"sound/samples/sfx_5/04.aiff\": [0,{\"jp\":[\"@sound\",31],\"us\":[\"@sound\",31],\"eu\":[\"@sound\",31],\"sh\":[\"@sound\",31],\"cn\":[\"@sound\",31]}],\n\"sound/samples/sfx_5/05.aiff\": [0,{\"jp\":[\"@sound\",32],\"us\":[\"@sound\",32],\"eu\":[\"@sound\",32],\"sh\":[\"@sound\",32],\"cn\":[\"@sound\",32]}],\n\"sound/samples/sfx_5/06.aiff\": [0,{\"jp\":[\"@sound\",33],\"us\":[\"@sound\",33],\"eu\":[\"@sound\",33],\"sh\":[\"@sound\",33],\"cn\":[\"@sound\",33]}],\n\"sound/samples/sfx_5/07.aiff\": [0,{\"jp\":[\"@sound\",34],\"us\":[\"@sound\",34],\"eu\":[\"@sound\",34],\"sh\":[\"@sound\",34],\"cn\":[\"@sound\",34]}],\n\"sound/samples/sfx_5/08.aiff\": [0,{\"jp\":[\"@sound\",35],\"us\":[\"@sound\",35],\"eu\":[\"@sound\",35],\"sh\":[\"@sound\",35],\"cn\":[\"@sound\",35]}],\n\"sound/samples/sfx_5/09.aiff\": [0,{\"jp\":[\"@sound\",36],\"us\":[\"@sound\",36],\"eu\":[\"@sound\",36],\"sh\":[\"@sound\",36],\"cn\":[\"@sound\",36]}],\n\"sound/samples/sfx_5/0A.aiff\": [0,{\"jp\":[\"@sound\",37],\"us\":[\"@sound\",37],\"eu\":[\"@sound\",37],\"sh\":[\"@sound\",37],\"cn\":[\"@sound\",37]}],\n\"sound/samples/sfx_5/0B.aiff\": [0,{\"jp\":[\"@sound\",38],\"us\":[\"@sound\",38],\"eu\":[\"@sound\",38],\"sh\":[\"@sound\",38],\"cn\":[\"@sound\",38]}],\n\"sound/samples/sfx_5/0C.aiff\": [0,{\"jp\":[\"@sound\",39],\"us\":[\"@sound\",39],\"eu\":[\"@sound\",39],\"sh\":[\"@sound\",39],\"cn\":[\"@sound\",39]}],\n\"sound/samples/sfx_5/0D.aiff\": [0,{\"jp\":[\"@sound\",40],\"us\":[\"@sound\",40],\"eu\":[\"@sound\",40],\"sh\":[\"@sound\",40],\"cn\":[\"@sound\",40]}],\n\"sound/samples/sfx_5/0E.aiff\": [0,{\"jp\":[\"@sound\",41],\"us\":[\"@sound\",41],\"eu\":[\"@sound\",41],\"sh\":[\"@sound\",41],\"cn\":[\"@sound\",41]}],\n\"sound/samples/sfx_5/0F.aiff\": [0,{\"jp\":[\"@sound\",42],\"us\":[\"@sound\",42],\"eu\":[\"@sound\",42],\"sh\":[\"@sound\",42],\"cn\":[\"@sound\",42]}],\n\"sound/samples/sfx_5/10.aiff\": [0,{\"jp\":[\"@sound\",43],\"us\":[\"@sound\",43],\"eu\":[\"@sound\",43],\"sh\":[\"@sound\",43],\"cn\":[\"@sound\",43]}],\n\"sound/samples/sfx_5/11.aiff\": [0,{\"jp\":[\"@sound\",44],\"us\":[\"@sound\",44],\"eu\":[\"@sound\",44],\"sh\":[\"@sound\",44],\"cn\":[\"@sound\",44]}],\n\"sound/samples/sfx_5/12.aiff\": [0,{\"jp\":[\"@sound\",45],\"us\":[\"@sound\",45],\"eu\":[\"@sound\",45],\"sh\":[\"@sound\",45],\"cn\":[\"@sound\",45]}],\n\"sound/samples/sfx_5/13.aiff\": [0,{\"jp\":[\"@sound\",46],\"us\":[\"@sound\",46],\"eu\":[\"@sound\",46],\"sh\":[\"@sound\",46],\"cn\":[\"@sound\",46]}],\n\"sound/samples/sfx_5/14.aiff\": [0,{\"jp\":[\"@sound\",47],\"us\":[\"@sound\",47],\"eu\":[\"@sound\",47],\"sh\":[\"@sound\",47],\"cn\":[\"@sound\",47]}],\n\"sound/samples/sfx_5/15.aiff\": [0,{\"jp\":[\"@sound\",48],\"us\":[\"@sound\",48],\"eu\":[\"@sound\",48],\"sh\":[\"@sound\",48],\"cn\":[\"@sound\",48]}],\n\"sound/samples/sfx_5/16.aiff\": [0,{\"jp\":[\"@sound\",49],\"us\":[\"@sound\",49],\"eu\":[\"@sound\",49],\"sh\":[\"@sound\",49],\"cn\":[\"@sound\",49]}],\n\"sound/samples/sfx_5/17.aiff\": [0,{\"jp\":[\"@sound\",50],\"us\":[\"@sound\",50],\"eu\":[\"@sound\",50],\"sh\":[\"@sound\",50],\"cn\":[\"@sound\",50]}],\n\"sound/samples/sfx_5/18.aiff\": [0,{\"jp\":[\"@sound\",51],\"us\":[\"@sound\",51],\"eu\":[\"@sound\",51],\"sh\":[\"@sound\",51],\"cn\":[\"@sound\",51]}],\n\"sound/samples/sfx_5/19.aiff\": [0,{\"jp\":[\"@sound\",52],\"us\":[\"@sound\",52],\"eu\":[\"@sound\",52],\"sh\":[\"@sound\",52],\"cn\":[\"@sound\",52]}],\n\"sound/samples/sfx_5/1A.aiff\": [0,{\"jp\":[\"@sound\",53],\"us\":[\"@sound\",53],\"eu\":[\"@sound\",53],\"sh\":[\"@sound\",53],\"cn\":[\"@sound\",53]}],\n\"sound/samples/sfx_5/1B.aiff\": [0,{\"jp\":[\"@sound\",54],\"us\":[\"@sound\",54],\"eu\":[\"@sound\",54],\"sh\":[\"@sound\",54],\"cn\":[\"@sound\",54]}],\n\"sound/samples/sfx_5/1C.aiff\": [0,{\"jp\":[\"@sound\",55],\"us\":[\"@sound\",55],\"eu\":[\"@sound\",55],\"sh\":[\"@sound\",55],\"cn\":[\"@sound\",55]}],\n\"sound/samples/sfx_6/00.aiff\": [0,{\"jp\":[\"@sound\",56],\"us\":[\"@sound\",56],\"eu\":[\"@sound\",56],\"sh\":[\"@sound\",56],\"cn\":[\"@sound\",56]}],\n\"sound/samples/sfx_6/01.aiff\": [0,{\"jp\":[\"@sound\",57],\"us\":[\"@sound\",57],\"eu\":[\"@sound\",57],\"sh\":[\"@sound\",57],\"cn\":[\"@sound\",57]}],\n\"sound/samples/sfx_6/02.aiff\": [0,{\"jp\":[\"@sound\",58],\"us\":[\"@sound\",58],\"eu\":[\"@sound\",58],\"sh\":[\"@sound\",58],\"cn\":[\"@sound\",58]}],\n\"sound/samples/sfx_6/03.aiff\": [0,{\"jp\":[\"@sound\",59],\"us\":[\"@sound\",59],\"eu\":[\"@sound\",59],\"sh\":[\"@sound\",59],\"cn\":[\"@sound\",59]}],\n\"sound/samples/sfx_6/04.aiff\": [0,{\"jp\":[\"@sound\",60],\"us\":[\"@sound\",60],\"eu\":[\"@sound\",60],\"sh\":[\"@sound\",60],\"cn\":[\"@sound\",60]}],\n\"sound/samples/sfx_6/05.aiff\": [0,{\"jp\":[\"@sound\",61],\"us\":[\"@sound\",61],\"eu\":[\"@sound\",61],\"sh\":[\"@sound\",61],\"cn\":[\"@sound\",61]}],\n\"sound/samples/sfx_6/06.aiff\": [0,{\"jp\":[\"@sound\",62],\"us\":[\"@sound\",62],\"eu\":[\"@sound\",62],\"sh\":[\"@sound\",62],\"cn\":[\"@sound\",62]}],\n\"sound/samples/sfx_6/07.aiff\": [0,{\"jp\":[\"@sound\",63],\"us\":[\"@sound\",63],\"eu\":[\"@sound\",63],\"sh\":[\"@sound\",63],\"cn\":[\"@sound\",63]}],\n\"sound/samples/sfx_6/08.aiff\": [0,{\"jp\":[\"@sound\",64],\"us\":[\"@sound\",64],\"eu\":[\"@sound\",64],\"sh\":[\"@sound\",64],\"cn\":[\"@sound\",64]}],\n\"sound/samples/sfx_6/09.aiff\": [0,{\"jp\":[\"@sound\",65],\"us\":[\"@sound\",65],\"eu\":[\"@sound\",65],\"sh\":[\"@sound\",65],\"cn\":[\"@sound\",65]}],\n\"sound/samples/sfx_6/0A.aiff\": [0,{\"jp\":[\"@sound\",66],\"us\":[\"@sound\",66],\"eu\":[\"@sound\",66],\"sh\":[\"@sound\",66],\"cn\":[\"@sound\",66]}],\n\"sound/samples/sfx_6/0B.aiff\": [0,{\"jp\":[\"@sound\",67],\"us\":[\"@sound\",67],\"eu\":[\"@sound\",67],\"sh\":[\"@sound\",67],\"cn\":[\"@sound\",67]}],\n\"sound/samples/sfx_6/0C.aiff\": [0,{\"jp\":[\"@sound\",68],\"us\":[\"@sound\",68],\"eu\":[\"@sound\",68],\"sh\":[\"@sound\",68],\"cn\":[\"@sound\",68]}],\n\"sound/samples/sfx_6/0D.aiff\": [0,{\"jp\":[\"@sound\",69],\"us\":[\"@sound\",69],\"eu\":[\"@sound\",69],\"sh\":[\"@sound\",69],\"cn\":[\"@sound\",69]}],\n\"sound/samples/sfx_7/00.aiff\": [0,{\"jp\":[\"@sound\",70],\"us\":[\"@sound\",70],\"eu\":[\"@sound\",70],\"sh\":[\"@sound\",70],\"cn\":[\"@sound\",70]}],\n\"sound/samples/sfx_7/01.aiff\": [0,{\"jp\":[\"@sound\",71],\"us\":[\"@sound\",71],\"eu\":[\"@sound\",71],\"sh\":[\"@sound\",71],\"cn\":[\"@sound\",71]}],\n\"sound/samples/sfx_7/02.aiff\": [0,{\"jp\":[\"@sound\",72],\"us\":[\"@sound\",72],\"eu\":[\"@sound\",72],\"sh\":[\"@sound\",72],\"cn\":[\"@sound\",72]}],\n\"sound/samples/sfx_7/03.aiff\": [0,{\"jp\":[\"@sound\",73],\"us\":[\"@sound\",73],\"eu\":[\"@sound\",73],\"sh\":[\"@sound\",73],\"cn\":[\"@sound\",73]}],\n\"sound/samples/sfx_7/04.aiff\": [0,{\"jp\":[\"@sound\",74],\"us\":[\"@sound\",74],\"eu\":[\"@sound\",74],\"sh\":[\"@sound\",74],\"cn\":[\"@sound\",74]}],\n\"sound/samples/sfx_7/05.aiff\": [0,{\"jp\":[\"@sound\",75],\"us\":[\"@sound\",75],\"eu\":[\"@sound\",75],\"sh\":[\"@sound\",75],\"cn\":[\"@sound\",75]}],\n\"sound/samples/sfx_7/06.aiff\": [0,{\"jp\":[\"@sound\",76],\"us\":[\"@sound\",76],\"eu\":[\"@sound\",76],\"sh\":[\"@sound\",76],\"cn\":[\"@sound\",76]}],\n\"sound/samples/sfx_7/07.aiff\": [0,{\"jp\":[\"@sound\",77],\"us\":[\"@sound\",77],\"eu\":[\"@sound\",77],\"sh\":[\"@sound\",77],\"cn\":[\"@sound\",77]}],\n\"sound/samples/sfx_7/08.aiff\": [0,{\"jp\":[\"@sound\",78],\"us\":[\"@sound\",78],\"eu\":[\"@sound\",78],\"sh\":[\"@sound\",78],\"cn\":[\"@sound\",78]}],\n\"sound/samples/sfx_7/09.aiff\": [0,{\"jp\":[\"@sound\",79],\"us\":[\"@sound\",79],\"eu\":[\"@sound\",79],\"sh\":[\"@sound\",79],\"cn\":[\"@sound\",79]}],\n\"sound/samples/sfx_7/0A.aiff\": [0,{\"jp\":[\"@sound\",80],\"us\":[\"@sound\",80],\"eu\":[\"@sound\",80],\"sh\":[\"@sound\",80],\"cn\":[\"@sound\",80]}],\n\"sound/samples/sfx_7/0B.aiff\": [0,{\"jp\":[\"@sound\",81],\"us\":[\"@sound\",81],\"eu\":[\"@sound\",81],\"sh\":[\"@sound\",81],\"cn\":[\"@sound\",81]}],\n\"sound/samples/sfx_7/0C.aiff\": [0,{\"jp\":[\"@sound\",82],\"us\":[\"@sound\",82],\"eu\":[\"@sound\",82],\"sh\":[\"@sound\",82],\"cn\":[\"@sound\",82]}],\n\"sound/samples/sfx_7/0D_chain_chomp_bark.aiff\": [0,{\"us\":[\"@sound\",83],\"eu\":[\"@sound\",83],\"sh\":[\"@sound\",83],\"cn\":[\"@sound\",83]}],\n\"sound/samples/sfx_9/00.aiff\": [0,{\"jp\":[\"@sound\",99],\"us\":[\"@sound\",111],\"eu\":[\"@sound\",111],\"sh\":[\"@sound\",111],\"cn\":[\"@sound\",111]}],\n\"sound/samples/sfx_9/01.aiff\": [0,{\"jp\":[\"@sound\",100],\"us\":[\"@sound\",112],\"eu\":[\"@sound\",112],\"sh\":[\"@sound\",112],\"cn\":[\"@sound\",112]}],\n\"sound/samples/sfx_9/02.aiff\": [0,{\"jp\":[\"@sound\",101],\"us\":[\"@sound\",113],\"eu\":[\"@sound\",113],\"sh\":[\"@sound\",113],\"cn\":[\"@sound\",113]}],\n\"sound/samples/sfx_9/03.aiff\": [0,{\"jp\":[\"@sound\",102],\"us\":[\"@sound\",114],\"eu\":[\"@sound\",114],\"sh\":[\"@sound\",114],\"cn\":[\"@sound\",114]}],\n\"sound/samples/sfx_9/04_camera_buzz.aiff\": [0,{\"jp\":[\"@sound\",103],\"us\":[\"@sound\",115],\"eu\":[\"@sound\",115],\"sh\":[\"@sound\",115],\"cn\":[\"@sound\",115]}],\n\"sound/samples/sfx_9/05_camera_shutter.aiff\": [0,{\"jp\":[\"@sound\",104],\"us\":[\"@sound\",116],\"eu\":[\"@sound\",116],\"sh\":[\"@sound\",116],\"cn\":[\"@sound\",116]}],\n\"sound/samples/sfx_9/06.aiff\": [0,{\"jp\":[\"@sound\",105],\"us\":[\"@sound\",117],\"eu\":[\"@sound\",117],\"sh\":[\"@sound\",117],\"cn\":[\"@sound\",117]}],\n\"sound/samples/sfx_mario/00_mario_jump_hoo.aiff\": [0,{\"jp\":[\"@sound\",83],\"us\":[\"@sound\",84],\"eu\":[\"@sound\",84],\"sh\":[\"@sound\",84],\"cn\":[\"@sound\",84]}],\n\"sound/samples/sfx_mario/01_mario_jump_wah.aiff\": [0,{\"jp\":[\"@sound\",84],\"us\":[\"@sound\",85],\"eu\":[\"@sound\",85],\"sh\":[\"@sound\",85],\"cn\":[\"@sound\",85]}],\n\"sound/samples/sfx_mario/02_mario_yah.aiff\": [0,{\"jp\":[\"@sound\",85],\"us\":[\"@sound\",86],\"eu\":[\"@sound\",86],\"sh\":[\"@sound\",86],\"cn\":[\"@sound\",86]}],\n\"sound/samples/sfx_mario/03_mario_haha.aiff\": [0,{\"jp\":[\"@sound\",86],\"us\":[\"@sound\",87],\"eu\":[\"@sound\",87],\"sh\":[\"@sound\",87],\"cn\":[\"@sound\",87]}],\n\"sound/samples/sfx_mario/04_mario_yahoo.aiff\": [0,{\"jp\":[\"@sound\",87],\"us\":[\"@sound\",88],\"eu\":[\"@sound\",88],\"sh\":[\"@sound\",88],\"cn\":[\"@sound\",88]}],\n\"sound/samples/sfx_mario/05_mario_uh.aiff\": [0,{\"jp\":[\"@sound\",88],\"us\":[\"@sound\",89],\"eu\":[\"@sound\",89],\"sh\":[\"@sound\",89],\"cn\":[\"@sound\",89]}],\n\"sound/samples/sfx_mario/06_mario_hrmm.aiff\": [0,{\"jp\":[\"@sound\",89],\"us\":[\"@sound\",90],\"eu\":[\"@sound\",90],\"sh\":[\"@sound\",90],\"cn\":[\"@sound\",90]}],\n\"sound/samples/sfx_mario/07_mario_wah2.aiff\": [0,{\"jp\":[\"@sound\",90],\"us\":[\"@sound\",91],\"eu\":[\"@sound\",91],\"sh\":[\"@sound\",91],\"cn\":[\"@sound\",91]}],\n\"sound/samples/sfx_mario/08_mario_whoa.aiff\": [0,{\"jp\":[\"@sound\",91],\"us\":[\"@sound\",92],\"eu\":[\"@sound\",92],\"sh\":[\"@sound\",92],\"cn\":[\"@sound\",92]}],\n\"sound/samples/sfx_mario/09_mario_eeuh.aiff\": [0,{\"jp\":[\"@sound\",92],\"us\":[\"@sound\",93],\"eu\":[\"@sound\",93],\"sh\":[\"@sound\",93],\"cn\":[\"@sound\",93]}],\n\"sound/samples/sfx_mario/0A_mario_attacked.aiff\": [0,{\"jp\":[\"@sound\",93],\"us\":[\"@sound\",94],\"eu\":[\"@sound\",94],\"sh\":[\"@sound\",94],\"cn\":[\"@sound\",94]}],\n\"sound/samples/sfx_mario/0B_mario_ooof.aiff\": [0,{\"jp\":[\"@sound\",94],\"us\":[\"@sound\",95],\"eu\":[\"@sound\",95],\"sh\":[\"@sound\",95],\"cn\":[\"@sound\",95]}],\n\"sound/samples/sfx_mario/0C_mario_here_we_go.aiff\": [0,{\"jp\":[\"@sound\",95],\"us\":[\"@sound\",96],\"eu\":[\"@sound\",96],\"sh\":[\"@sound\",96],\"cn\":[\"@sound\",96]}],\n\"sound/samples/sfx_mario/0D_mario_yawning.aiff\": [0,{\"jp\":[\"@sound\",96],\"us\":[\"@sound\",97],\"eu\":[\"@sound\",97],\"sh\":[\"@sound\",97],\"cn\":[\"@sound\",97]}],\n\"sound/samples/sfx_mario/0E_mario_snoring1.aiff\": [0,{\"jp\":[\"@sound\",97],\"us\":[\"@sound\",98],\"eu\":[\"@sound\",98],\"sh\":[\"@sound\",98],\"cn\":[\"@sound\",98]}],\n\"sound/samples/sfx_mario/0F_mario_snoring2.aiff\": [0,{\"jp\":[\"@sound\",98],\"us\":[\"@sound\",99],\"eu\":[\"@sound\",99],\"sh\":[\"@sound\",99],\"cn\":[\"@sound\",99]}],\n\"sound/samples/sfx_mario/10_mario_doh.aiff\": [0,{\"us\":[\"@sound\",100],\"eu\":[\"@sound\",100],\"sh\":[\"@sound\",100],\"cn\":[\"@sound\",100]}],\n\"sound/samples/sfx_mario/11_mario_game_over.aiff\": [0,{\"us\":[\"@sound\",101],\"eu\":[\"@sound\",101],\"sh\":[\"@sound\",101],\"cn\":[\"@sound\",101]}],\n\"sound/samples/sfx_mario/12_mario_hello.aiff\": [0,{\"us\":[\"@sound\",102],\"eu\":[\"@sound\",102],\"sh\":[\"@sound\",102],\"cn\":[\"@sound\",102]}],\n\"sound/samples/sfx_mario/13_mario_press_start_to_play.aiff\": [0,{\"us\":[\"@sound\",103],\"eu\":[\"@sound\",103],\"sh\":[\"@sound\",103],\"cn\":[\"@sound\",103]}],\n\"sound/samples/sfx_mario/14_mario_twirl_bounce.aiff\": [0,{\"us\":[\"@sound\",104],\"eu\":[\"@sound\",104],\"sh\":[\"@sound\",104],\"cn\":[\"@sound\",104]}],\n\"sound/samples/sfx_mario/15_mario_snoring3.aiff\": [0,{\"us\":[\"@sound\",105],\"eu\":[\"@sound\",105],\"sh\":[\"@sound\",105],\"cn\":[\"@sound\",105]}],\n\"sound/samples/sfx_mario/16_mario_so_longa_bowser.aiff\": [0,{\"us\":[\"@sound\",106],\"eu\":[\"@sound\",106]}],\n\"sound/samples/sfx_mario/16_mario_bye_bye.aiff\": [0,{\"sh\":[\"@sound\",106],\"cn\":[\"@sound\",106]}],\n\"sound/samples/sfx_mario/17_mario_ima_tired.aiff\": [0,{\"us\":[\"@sound\",107],\"eu\":[\"@sound\",107],\"sh\":[\"@sound\",107],\"cn\":[\"@sound\",107]}],\n\"sound/samples/sfx_mario/18_mario_waha.aiff\": [0,{\"us\":[\"@sound\",108],\"eu\":[\"@sound\",108],\"sh\":[\"@sound\",108],\"cn\":[\"@sound\",108]}],\n\"sound/samples/sfx_mario/19_mario_yippee.aiff\": [0,{\"us\":[\"@sound\",109],\"eu\":[\"@sound\",109],\"sh\":[\"@sound\",109],\"cn\":[\"@sound\",109]}],\n\"sound/samples/sfx_mario/1A_mario_lets_a_go.aiff\": [0,{\"us\":[\"@sound\",110],\"eu\":[\"@sound\",110],\"sh\":[\"@sound\",110],\"cn\":[\"@sound\",110]}],\n\"sound/samples/sfx_mario_peach/00_mario_waaaooow.aiff\": [0,{\"jp\":[\"@sound\",106],\"us\":[\"@sound\",118],\"eu\":[\"@sound\",118],\"sh\":[\"@sound\",118],\"cn\":[\"@sound\",118]}],\n\"sound/samples/sfx_mario_peach/01_mario_hoohoo.aiff\": [0,{\"jp\":[\"@sound\",107],\"us\":[\"@sound\",119],\"eu\":[\"@sound\",119],\"sh\":[\"@sound\",119],\"cn\":[\"@sound\",119]}],\n\"sound/samples/sfx_mario_peach/02_mario_panting.aiff\": [0,{\"jp\":[\"@sound\",108],\"us\":[\"@sound\",120],\"eu\":[\"@sound\",120],\"sh\":[\"@sound\",120],\"cn\":[\"@sound\",120]}],\n\"sound/samples/sfx_mario_peach/03_mario_dying.aiff\": [0,{\"jp\":[\"@sound\",109],\"us\":[\"@sound\",121],\"eu\":[\"@sound\",121],\"sh\":[\"@sound\",121],\"cn\":[\"@sound\",121]}],\n\"sound/samples/sfx_mario_peach/04_mario_on_fire.aiff\": [0,{\"jp\":[\"@sound\",110],\"us\":[\"@sound\",122],\"eu\":[\"@sound\",122],\"sh\":[\"@sound\",122],\"cn\":[\"@sound\",122]}],\n\"sound/samples/sfx_mario_peach/05_mario_uh2.aiff\": [0,{\"jp\":[\"@sound\",111],\"us\":[\"@sound\",123],\"eu\":[\"@sound\",123],\"sh\":[\"@sound\",123],\"cn\":[\"@sound\",123]}],\n\"sound/samples/sfx_mario_peach/06_mario_coughing.aiff\": [0,{\"jp\":[\"@sound\",112],\"us\":[\"@sound\",124],\"eu\":[\"@sound\",124],\"sh\":[\"@sound\",124],\"cn\":[\"@sound\",124]}],\n\"sound/samples/sfx_mario_peach/07_mario_its_a_me_mario.aiff\": [0,{\"jp\":[\"@sound\",113],\"us\":[\"@sound\",125],\"eu\":[\"@sound\",125],\"sh\":[\"@sound\",125],\"cn\":[\"@sound\",125]}],\n\"sound/samples/sfx_mario_peach/08_mario_punch_yah.aiff\": [0,{\"jp\":[\"@sound\",114],\"us\":[\"@sound\",126],\"eu\":[\"@sound\",126],\"sh\":[\"@sound\",126],\"cn\":[\"@sound\",126]}],\n\"sound/samples/sfx_mario_peach/09_mario_punch_hoo.aiff\": [0,{\"jp\":[\"@sound\",115],\"us\":[\"@sound\",127],\"eu\":[\"@sound\",127],\"sh\":[\"@sound\",127],\"cn\":[\"@sound\",127]}],\n\"sound/samples/sfx_mario_peach/0A_mario_mama_mia.aiff\": [0,{\"jp\":[\"@sound\",116],\"us\":[\"@sound\",128],\"eu\":[\"@sound\",128],\"sh\":[\"@sound\",128],\"cn\":[\"@sound\",128]}],\n\"sound/samples/sfx_mario_peach/0B_mario_okey_dokey.aiff\": [0,{\"jp\":[\"@sound\",117],\"us\":[\"@sound\",129],\"eu\":[\"@sound\",129],\"sh\":[\"@sound\",129],\"cn\":[\"@sound\",129]}],\n\"sound/samples/sfx_mario_peach/0C_mario_drowning.aiff\": [0,{\"jp\":[\"@sound\",118],\"us\":[\"@sound\",130],\"eu\":[\"@sound\",130],\"sh\":[\"@sound\",130],\"cn\":[\"@sound\",130]}],\n\"sound/samples/sfx_mario_peach/0D_mario_thank_you_playing_my_game.aiff\": [0,{\"jp\":[\"@sound\",119],\"us\":[\"@sound\",131],\"eu\":[\"@sound\",131],\"sh\":[\"@sound\",131],\"cn\":[\"@sound\",131]}],\n\"sound/samples/sfx_mario_peach/0E_peach_dear_mario.aiff\": [0,{\"us\":[\"@sound\",132],\"eu\":[\"@sound\",132],\"sh\":[\"@sound\",132],\"cn\":[\"@sound\",132]}],\n\"sound/samples/sfx_mario_peach/0F_peach_mario.aiff\": [0,{\"us\":[\"@sound\",133],\"eu\":[\"@sound\",133],\"sh\":[\"@sound\",133],\"cn\":[\"@sound\",133]}],\n\"sound/samples/sfx_mario_peach/10_peach_power_of_the_stars.aiff\": [0,{\"us\":[\"@sound\",134],\"eu\":[\"@sound\",134],\"sh\":[\"@sound\",134],\"cn\":[\"@sound\",134]}],\n\"sound/samples/sfx_mario_peach/11_peach_thanks_to_you.aiff\": [0,{\"us\":[\"@sound\",135],\"eu\":[\"@sound\",135],\"sh\":[\"@sound\",135],\"cn\":[\"@sound\",135]}],\n\"sound/samples/sfx_mario_peach/12_peach_thank_you_mario.aiff\": [0,{\"us\":[\"@sound\",136],\"eu\":[\"@sound\",136],\"sh\":[\"@sound\",136],\"cn\":[\"@sound\",136]}],\n\"sound/samples/sfx_mario_peach/13_peach_something_special.aiff\": [0,{\"us\":[\"@sound\",137],\"eu\":[\"@sound\",137],\"sh\":[\"@sound\",137],\"cn\":[\"@sound\",137]}],\n\"sound/samples/sfx_mario_peach/14_peach_bake_a_cake.aiff\": [0,{\"us\":[\"@sound\",138],\"eu\":[\"@sound\",138],\"sh\":[\"@sound\",138],\"cn\":[\"@sound\",138]}],\n\"sound/samples/sfx_mario_peach/15_peach_for_mario.aiff\": [0,{\"us\":[\"@sound\",139],\"eu\":[\"@sound\",139],\"sh\":[\"@sound\",139],\"cn\":[\"@sound\",139]}],\n\"sound/samples/sfx_mario_peach/16_peach_mario2.aiff\": [0,{\"us\":[\"@sound\",140],\"eu\":[\"@sound\",140],\"sh\":[\"@sound\",140],\"cn\":[\"@sound\",140]}],\n\"sound/samples/sfx_terrain/00_step_default.aiff\": [0,{\"jp\":[\"@sound\",6],\"us\":[\"@sound\",6],\"eu\":[\"@sound\",6],\"sh\":[\"@sound\",6],\"cn\":[\"@sound\",6]}],\n\"sound/samples/sfx_terrain/01_step_grass.aiff\": [0,{\"jp\":[\"@sound\",7],\"us\":[\"@sound\",7],\"eu\":[\"@sound\",7],\"sh\":[\"@sound\",7],\"cn\":[\"@sound\",7]}],\n\"sound/samples/sfx_terrain/02_step_stone.aiff\": [0,{\"jp\":[\"@sound\",8],\"us\":[\"@sound\",8],\"eu\":[\"@sound\",8],\"sh\":[\"@sound\",8],\"cn\":[\"@sound\",8]}],\n\"sound/samples/sfx_terrain/03_step_spooky.aiff\": [0,{\"jp\":[\"@sound\",9],\"us\":[\"@sound\",9],\"eu\":[\"@sound\",9],\"sh\":[\"@sound\",9],\"cn\":[\"@sound\",9]}],\n\"sound/samples/sfx_terrain/04_step_snow.aiff\": [0,{\"jp\":[\"@sound\",10],\"us\":[\"@sound\",10],\"eu\":[\"@sound\",10],\"sh\":[\"@sound\",10],\"cn\":[\"@sound\",10]}],\n\"sound/samples/sfx_terrain/05_step_ice.aiff\": [0,{\"jp\":[\"@sound\",11],\"us\":[\"@sound\",11],\"eu\":[\"@sound\",11],\"sh\":[\"@sound\",11],\"cn\":[\"@sound\",11]}],\n\"sound/samples/sfx_terrain/06_step_metal.aiff\": [0,{\"jp\":[\"@sound\",12],\"us\":[\"@sound\",12],\"eu\":[\"@sound\",12],\"sh\":[\"@sound\",12],\"cn\":[\"@sound\",12]}],\n\"sound/samples/sfx_terrain/07_step_sand.aiff\": [0,{\"jp\":[\"@sound\",13],\"us\":[\"@sound\",13],\"eu\":[\"@sound\",13],\"sh\":[\"@sound\",13],\"cn\":[\"@sound\",13]}],\n\"sound/samples/sfx_water/00_plunge.aiff\": [0,{\"jp\":[\"@sound\",14],\"us\":[\"@sound\",14],\"eu\":[\"@sound\",14],\"sh\":[\"@sound\",14],\"cn\":[\"@sound\",14]}],\n\"sound/samples/sfx_water/01_splash.aiff\": [0,{\"jp\":[\"@sound\",15],\"us\":[\"@sound\",15],\"eu\":[\"@sound\",15],\"sh\":[\"@sound\",15],\"cn\":[\"@sound\",15]}],\n\"sound/samples/sfx_water/02_swim.aiff\": [0,{\"jp\":[\"@sound\",16],\"us\":[\"@sound\",16],\"eu\":[\"@sound\",16],\"sh\":[\"@sound\",16],\"cn\":[\"@sound\",16]}]\n}\n"
  },
  {
    "path": "bin/cave.c",
    "content": "#include \"macros.h\"\n#include \"types.h\"\n\n#include \"make_const_nonconst.h\"\n\n// 0x09000000\nALIGNED8 const Texture cave_09000000[] = {\n#include \"textures/cave/hmc_textures.00000.rgba16.inc.c\"\n};\n\n// 0x09001000\nALIGNED8 const Texture cave_09001000[] = {\n#include \"textures/cave/hmc_textures.01000.rgba16.inc.c\"\n};\n\n// 0x09001800\nALIGNED8 const Texture cave_09001800[] = {\n#include \"textures/cave/hmc_textures.01800.rgba16.inc.c\"\n};\n\n// 0x09002800\nALIGNED8 const Texture cave_09002800[] = {\n#include \"textures/cave/hmc_textures.02800.rgba16.inc.c\"\n};\n\n// 0x09003000\nALIGNED8 const Texture cave_09003000[] = {\n#include \"textures/cave/hmc_textures.03000.rgba16.inc.c\"\n};\n\n// 0x09003800\nALIGNED8 const Texture cave_09003800[] = {\n#include \"textures/cave/hmc_textures.03800.rgba16.inc.c\"\n};\n\n// 0x09004800\nALIGNED8 const Texture cave_09004800[] = {\n#include \"textures/cave/hmc_textures.04800.rgba16.inc.c\"\n};\n\n// 0x09005800\nALIGNED8 const Texture cave_09005800[] = {\n#include \"textures/cave/hmc_textures.05800.rgba16.inc.c\"\n};\n\n// 0x09006800\nALIGNED8 const Texture cave_09006800[] = {\n#include \"textures/cave/hmc_textures.06800.rgba16.inc.c\"\n};\n\n// 0x09007000\nALIGNED8 const Texture cave_09007000[] = {\n#include \"textures/cave/hmc_textures.07000.rgba16.inc.c\"\n};\n\n// 0x09007800\nALIGNED8 const Texture cave_09007800[] = {\n#include \"textures/cave/hmc_textures.07800.rgba16.inc.c\"\n};\n\n// 0x09008800\nALIGNED8 const Texture cave_09008800[] = {\n#include \"textures/cave/hmc_textures.08800.rgba16.inc.c\"\n};\n\n// 0x09009800\nALIGNED8 const Texture cave_09009800[] = {\n#include \"textures/cave/hmc_textures.09800.rgba16.inc.c\"\n};\n\n// 0x0900A000\nALIGNED8 const Texture cave_0900A000[] = {\n#include \"textures/cave/hmc_textures.0A000.rgba16.inc.c\"\n};\n\n// 0x0900A800\nALIGNED8 const Texture cave_0900A800[] = {\n#include \"textures/cave/hmc_textures.0A800.rgba16.inc.c\"\n};\n\n// 0x0900B800\nALIGNED8 const Texture cave_0900B800[] = {\n#include \"textures/cave/hmc_textures.0B800.ia16.inc.c\"\n};\n\n// 0x0900C000\nALIGNED8 const Texture cave_0900C000[] = {\n#include \"textures/cave/hmc_textures.0C000.ia16.inc.c\"\n};\n"
  },
  {
    "path": "bin/debug_level_select.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n\n#include \"make_const_nonconst.h\"\n\n// 0x07000000 - 0x07000018\nstatic const Lights1 debug_level_select_lights_07000000 = gdSPDefLights1(\n    0x7f, 0x00, 0x00,\n    0xff, 0x00, 0x00, 0x00, 0x00, 0x50\n);\n\n// 0x07000018 - 0x07000108\nstatic const Vtx debug_level_select_vertex_07000018[] = {\n    {{{   -23,     74,    -19}, 0, {     0,      0}, {0xbc, 0x6c, 0x00, 0x00}}},\n    {{{   -65,     32,    -19}, 0, {     0,      0}, {0xa4, 0x59, 0x00, 0x00}}},\n    {{{   -65,     32,     20}, 0, {     0,      0}, {0xa4, 0x59, 0x00, 0x00}}},\n    {{{   -23,     74,    -19}, 0, {     0,      0}, {0xbc, 0x6c, 0x00, 0x00}}},\n    {{{   -65,     32,     20}, 0, {     0,      0}, {0xa4, 0x59, 0x00, 0x00}}},\n    {{{   -23,     74,     20}, 0, {     0,      0}, {0xda, 0x7a, 0x00, 0x00}}},\n    {{{   -65,     32,    -19}, 0, {     0,      0}, {0xa8, 0xa2, 0x00, 0x00}}},\n    {{{    -8,    -21,    -19}, 0, {     0,      0}, {0xa8, 0xa2, 0x00, 0x00}}},\n    {{{    -8,    -21,     20}, 0, {     0,      0}, {0xa8, 0xa2, 0x00, 0x00}}},\n    {{{   -65,     32,    -19}, 0, {     0,      0}, {0xa8, 0xa2, 0x00, 0x00}}},\n    {{{    -8,    -21,     20}, 0, {     0,      0}, {0xa8, 0xa2, 0x00, 0x00}}},\n    {{{   -65,     32,     20}, 0, {     0,      0}, {0xa8, 0xa2, 0x00, 0x00}}},\n    {{{    -8,    -21,    -19}, 0, {     0,      0}, {0xd9, 0x79, 0x00, 0x00}}},\n    {{{   -59,    -38,    -19}, 0, {     0,      0}, {0xd9, 0x79, 0x00, 0x00}}},\n    {{{   -59,    -38,     20}, 0, {     0,      0}, {0xd9, 0x79, 0x00, 0x00}}},\n};\n\n// 0x07000108 - 0x070001F8\nstatic const Vtx debug_level_select_vertex_07000108[] = {\n    {{{    -8,    -21,    -19}, 0, {     0,      0}, {0xd9, 0x79, 0x00, 0x00}}},\n    {{{   -59,    -38,     20}, 0, {     0,      0}, {0xd9, 0x79, 0x00, 0x00}}},\n    {{{    -8,    -21,     20}, 0, {     0,      0}, {0xd9, 0x79, 0x00, 0x00}}},\n    {{{   -59,    -38,    -19}, 0, {     0,      0}, {0xa9, 0xa1, 0x00, 0x00}}},\n    {{{   -23,    -71,    -19}, 0, {     0,      0}, {0xf7, 0x80, 0x00, 0x00}}},\n    {{{   -23,    -71,     20}, 0, {     0,      0}, {0xcb, 0x8b, 0x00, 0x00}}},\n    {{{   -59,    -38,    -19}, 0, {     0,      0}, {0xa9, 0xa1, 0x00, 0x00}}},\n    {{{   -23,    -71,     20}, 0, {     0,      0}, {0xcb, 0x8b, 0x00, 0x00}}},\n    {{{   -59,    -38,     20}, 0, {     0,      0}, {0xa9, 0xa1, 0x00, 0x00}}},\n    {{{   -23,    -71,    -19}, 0, {     0,      0}, {0xf7, 0x80, 0x00, 0x00}}},\n    {{{    31,    -57,    -19}, 0, {     0,      0}, {0x5a, 0xa5, 0x00, 0x00}}},\n    {{{    31,    -57,     20}, 0, {     0,      0}, {0x3e, 0x90, 0x00, 0x00}}},\n    {{{   -23,    -71,    -19}, 0, {     0,      0}, {0xf7, 0x80, 0x00, 0x00}}},\n    {{{    31,    -57,     20}, 0, {     0,      0}, {0x3e, 0x90, 0x00, 0x00}}},\n    {{{   -23,    -71,     20}, 0, {     0,      0}, {0xcb, 0x8b, 0x00, 0x00}}},\n};\n\n// 0x070001F8 - 0x070002E8\nstatic const Vtx debug_level_select_vertex_070001F8[] = {\n    {{{    31,    -57,    -19}, 0, {     0,      0}, {0x5a, 0xa5, 0x00, 0x00}}},\n    {{{    53,    -20,    -19}, 0, {     0,      0}, {0x6e, 0xc0, 0x00, 0x00}}},\n    {{{    53,    -20,     20}, 0, {     0,      0}, {0x6e, 0xc0, 0x00, 0x00}}},\n    {{{    31,    -57,    -19}, 0, {     0,      0}, {0x5a, 0xa5, 0x00, 0x00}}},\n    {{{    53,    -20,     20}, 0, {     0,      0}, {0x6e, 0xc0, 0x00, 0x00}}},\n    {{{    31,    -57,     20}, 0, {     0,      0}, {0x3e, 0x90, 0x00, 0x00}}},\n    {{{    53,    -20,    -19}, 0, {     0,      0}, {0x50, 0x63, 0x00, 0x00}}},\n    {{{   -10,     30,    -19}, 0, {     0,      0}, {0x50, 0x63, 0x00, 0x00}}},\n    {{{   -10,     30,     20}, 0, {     0,      0}, {0x50, 0x63, 0x00, 0x00}}},\n    {{{    53,    -20,    -19}, 0, {     0,      0}, {0x50, 0x63, 0x00, 0x00}}},\n    {{{   -10,     30,     20}, 0, {     0,      0}, {0x50, 0x63, 0x00, 0x00}}},\n    {{{    53,    -20,     20}, 0, {     0,      0}, {0x50, 0x63, 0x00, 0x00}}},\n    {{{   -10,     30,    -19}, 0, {     0,      0}, {0x55, 0xa0, 0x00, 0x00}}},\n    {{{     5,     44,    -19}, 0, {     0,      0}, {0x55, 0xa0, 0x00, 0x00}}},\n    {{{     5,     44,     20}, 0, {     0,      0}, {0x55, 0xa0, 0x00, 0x00}}},\n};\n\n// 0x070002E8 - 0x070003D8\nstatic const Vtx debug_level_select_vertex_070002E8[] = {\n    {{{   -10,     30,    -19}, 0, {     0,      0}, {0x55, 0xa0, 0x00, 0x00}}},\n    {{{     5,     44,     20}, 0, {     0,      0}, {0x55, 0xa0, 0x00, 0x00}}},\n    {{{   -10,     30,     20}, 0, {     0,      0}, {0x55, 0xa0, 0x00, 0x00}}},\n    {{{     5,     44,    -19}, 0, {     0,      0}, {0xc4, 0x8e, 0x00, 0x00}}},\n    {{{    34,     28,    -19}, 0, {     0,      0}, {0xc4, 0x8e, 0x00, 0x00}}},\n    {{{    34,     28,     20}, 0, {     0,      0}, {0xc4, 0x8e, 0x00, 0x00}}},\n    {{{     5,     44,    -19}, 0, {     0,      0}, {0xc4, 0x8e, 0x00, 0x00}}},\n    {{{    34,     28,     20}, 0, {     0,      0}, {0xc4, 0x8e, 0x00, 0x00}}},\n    {{{     5,     44,     20}, 0, {     0,      0}, {0xc4, 0x8e, 0x00, 0x00}}},\n    {{{    34,     28,    -19}, 0, {     0,      0}, {0x58, 0xa3, 0x00, 0x00}}},\n    {{{    56,     49,    -19}, 0, {     0,      0}, {0x58, 0xa3, 0x00, 0x00}}},\n    {{{    56,     49,     20}, 0, {     0,      0}, {0x58, 0xa3, 0x00, 0x00}}},\n    {{{    34,     28,    -19}, 0, {     0,      0}, {0x58, 0xa3, 0x00, 0x00}}},\n    {{{    56,     49,     20}, 0, {     0,      0}, {0x58, 0xa3, 0x00, 0x00}}},\n    {{{    34,     28,     20}, 0, {     0,      0}, {0x58, 0xa3, 0x00, 0x00}}},\n};\n\n// 0x070003D8 - 0x070004C8\nstatic const Vtx debug_level_select_vertex_070003D8[] = {\n    {{{    56,     49,    -19}, 0, {     0,      0}, {0x4b, 0x67, 0x00, 0x00}}},\n    {{{    19,     77,    -19}, 0, {     0,      0}, {0x15, 0x7e, 0x00, 0x00}}},\n    {{{    19,     77,     20}, 0, {     0,      0}, {0x32, 0x75, 0x00, 0x00}}},\n    {{{    56,     49,    -19}, 0, {     0,      0}, {0x4b, 0x67, 0x00, 0x00}}},\n    {{{    19,     77,     20}, 0, {     0,      0}, {0x32, 0x75, 0x00, 0x00}}},\n    {{{    56,     49,     20}, 0, {     0,      0}, {0x4b, 0x67, 0x00, 0x00}}},\n    {{{    19,     77,    -19}, 0, {     0,      0}, {0x15, 0x7e, 0x00, 0x00}}},\n    {{{   -23,     74,    -19}, 0, {     0,      0}, {0xbc, 0x6c, 0x00, 0x00}}},\n    {{{   -23,     74,     20}, 0, {     0,      0}, {0xda, 0x7a, 0x00, 0x00}}},\n    {{{    19,     77,    -19}, 0, {     0,      0}, {0x15, 0x7e, 0x00, 0x00}}},\n    {{{   -23,     74,     20}, 0, {     0,      0}, {0xda, 0x7a, 0x00, 0x00}}},\n    {{{    19,     77,     20}, 0, {     0,      0}, {0x32, 0x75, 0x00, 0x00}}},\n    {{{   -23,     74,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    19,     77,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    56,     49,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n};\n\n// 0x070004C8 - 0x070005B8\nstatic const Vtx debug_level_select_vertex_070004C8[] = {\n    {{{   -23,     74,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    56,     49,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    34,     28,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -23,     74,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    34,     28,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{     5,     44,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -23,     74,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{     5,     44,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -10,     30,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -10,     30,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    53,    -20,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    31,    -57,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    31,    -57,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -23,    -71,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -59,    -38,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n};\n\n// 0x070005B8 - 0x070006A8\nstatic const Vtx debug_level_select_vertex_070005B8[] = {\n    {{{    31,    -57,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -59,    -38,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -8,    -21,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    31,    -57,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -8,    -21,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -65,     32,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -65,     32,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -23,     74,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -10,     30,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -65,     32,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -10,     30,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    31,    -57,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -8,    -21,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -59,    -38,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -23,    -71,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n};\n\n// 0x070006A8 - 0x07000798\nstatic const Vtx debug_level_select_vertex_070006A8[] = {\n    {{{    -8,    -21,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -23,    -71,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    31,    -57,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -8,    -21,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    31,    -57,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    53,    -20,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -8,    -21,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    53,    -20,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -10,     30,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{     5,     44,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    34,     28,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    56,     49,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{     5,     44,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    56,     49,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    19,     77,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n};\n\n// 0x07000798 - 0x07000858\nstatic const Vtx debug_level_select_vertex_07000798[] = {\n    {{{     5,     44,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    19,     77,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -23,     74,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{     5,     44,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -23,     74,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -65,     32,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -65,     32,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -8,    -21,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -10,     30,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -65,     32,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -10,     30,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{     5,     44,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n};\n\n// 0x07000858 - 0x07000A28\nconst Gfx debug_level_select_dl_07000858[] = {\n    gsDPPipeSync(),\n    gsSPSetLights1(debug_level_select_lights_07000000),\n    gsSPVertex(debug_level_select_vertex_07000018, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07000108, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_070001F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_070002E8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_070003D8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_070004C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_070005B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_070006A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07000798, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07000A28 - 0x07000A40\nstatic const Lights1 debug_level_select_lights_07000A28 = gdSPDefLights1(\n    0x00, 0x00, 0x7f,\n    0x00, 0x00, 0xff, 0x00, 0x00, 0x50\n);\n\n// 0x07000A40 - 0x07000B30\nstatic const Vtx debug_level_select_vertex_07000A40[] = {\n    {{{   -41,     81,    -22}, 0, {     0,      0}, {0x80, 0x00, 0x00, 0x00}}},\n    {{{   -42,    -36,    -22}, 0, {     0,      0}, {0x88, 0xd3, 0x00, 0x00}}},\n    {{{   -42,    -36,     20}, 0, {     0,      0}, {0x81, 0xe9, 0x00, 0x00}}},\n    {{{   -41,     81,    -22}, 0, {     0,      0}, {0x80, 0x00, 0x00, 0x00}}},\n    {{{   -42,    -36,     20}, 0, {     0,      0}, {0x81, 0xe9, 0x00, 0x00}}},\n    {{{   -41,     81,     20}, 0, {     0,      0}, {0x80, 0x00, 0x00, 0x00}}},\n    {{{   -42,    -36,    -22}, 0, {     0,      0}, {0x88, 0xd3, 0x00, 0x00}}},\n    {{{   -20,    -72,    -22}, 0, {     0,      0}, {0x92, 0xbe, 0x00, 0x00}}},\n    {{{   -20,    -72,     20}, 0, {     0,      0}, {0x92, 0xbe, 0x00, 0x00}}},\n    {{{   -42,    -36,    -22}, 0, {     0,      0}, {0x88, 0xd3, 0x00, 0x00}}},\n    {{{   -20,    -72,     20}, 0, {     0,      0}, {0x92, 0xbe, 0x00, 0x00}}},\n    {{{   -42,    -36,     20}, 0, {     0,      0}, {0x81, 0xe9, 0x00, 0x00}}},\n    {{{   -20,    -72,    -22}, 0, {     0,      0}, {0x11, 0x81, 0x00, 0x00}}},\n    {{{    33,    -64,    -22}, 0, {     0,      0}, {0x4d, 0x99, 0x00, 0x00}}},\n    {{{    33,    -64,     20}, 0, {     0,      0}, {0x30, 0x89, 0x00, 0x00}}},\n};\n\n// 0x07000B30 - 0x07000C20\nstatic const Vtx debug_level_select_vertex_07000B30[] = {\n    {{{   -20,    -72,    -22}, 0, {     0,      0}, {0x11, 0x81, 0x00, 0x00}}},\n    {{{    33,    -64,     20}, 0, {     0,      0}, {0x30, 0x89, 0x00, 0x00}}},\n    {{{   -20,    -72,     20}, 0, {     0,      0}, {0x11, 0x81, 0x00, 0x00}}},\n    {{{    33,    -64,    -22}, 0, {     0,      0}, {0x4d, 0x99, 0x00, 0x00}}},\n    {{{    58,    -32,    -22}, 0, {     0,      0}, {0x7f, 0xf6, 0x00, 0x00}}},\n    {{{    58,    -32,     20}, 0, {     0,      0}, {0x76, 0xcf, 0x00, 0x00}}},\n    {{{    33,    -64,    -22}, 0, {     0,      0}, {0x4d, 0x99, 0x00, 0x00}}},\n    {{{    58,    -32,     20}, 0, {     0,      0}, {0x76, 0xcf, 0x00, 0x00}}},\n    {{{    33,    -64,     20}, 0, {     0,      0}, {0x30, 0x89, 0x00, 0x00}}},\n    {{{    58,    -32,    -22}, 0, {     0,      0}, {0x7f, 0xf6, 0x00, 0x00}}},\n    {{{    39,     58,    -22}, 0, {     0,      0}, {0x7d, 0x1b, 0x00, 0x00}}},\n    {{{    39,     58,     20}, 0, {     0,      0}, {0x7d, 0x1b, 0x00, 0x00}}},\n    {{{    58,    -32,    -22}, 0, {     0,      0}, {0x7f, 0xf6, 0x00, 0x00}}},\n    {{{    39,     58,     20}, 0, {     0,      0}, {0x7d, 0x1b, 0x00, 0x00}}},\n    {{{    58,    -32,     20}, 0, {     0,      0}, {0x76, 0xcf, 0x00, 0x00}}},\n};\n\n// 0x07000C20 - 0x07000D10\nstatic const Vtx debug_level_select_vertex_07000C20[] = {\n    {{{    39,     58,    -22}, 0, {     0,      0}, {0xdf, 0x7b, 0x00, 0x00}}},\n    {{{     6,     49,    -22}, 0, {     0,      0}, {0xdf, 0x7b, 0x00, 0x00}}},\n    {{{     6,     49,     20}, 0, {     0,      0}, {0xdf, 0x7b, 0x00, 0x00}}},\n    {{{    39,     58,    -22}, 0, {     0,      0}, {0xdf, 0x7b, 0x00, 0x00}}},\n    {{{     6,     49,     20}, 0, {     0,      0}, {0xdf, 0x7b, 0x00, 0x00}}},\n    {{{    39,     58,     20}, 0, {     0,      0}, {0xdf, 0x7b, 0x00, 0x00}}},\n    {{{     6,     49,    -22}, 0, {     0,      0}, {0x82, 0xe4, 0x00, 0x00}}},\n    {{{    21,    -18,    -22}, 0, {     0,      0}, {0x82, 0xe4, 0x00, 0x00}}},\n    {{{    21,    -18,     20}, 0, {     0,      0}, {0x82, 0xe4, 0x00, 0x00}}},\n    {{{     6,     49,    -22}, 0, {     0,      0}, {0x82, 0xe4, 0x00, 0x00}}},\n    {{{    21,    -18,     20}, 0, {     0,      0}, {0x82, 0xe4, 0x00, 0x00}}},\n    {{{     6,     49,     20}, 0, {     0,      0}, {0x82, 0xe4, 0x00, 0x00}}},\n    {{{    21,    -18,    -22}, 0, {     0,      0}, {0xb0, 0x64, 0x00, 0x00}}},\n    {{{    -4,    -38,    -22}, 0, {     0,      0}, {0xb0, 0x64, 0x00, 0x00}}},\n    {{{    -4,    -38,     20}, 0, {     0,      0}, {0xb0, 0x64, 0x00, 0x00}}},\n};\n\n// 0x07000D10 - 0x07000E00\nstatic const Vtx debug_level_select_vertex_07000D10[] = {\n    {{{    21,    -18,    -22}, 0, {     0,      0}, {0xb0, 0x64, 0x00, 0x00}}},\n    {{{    -4,    -38,     20}, 0, {     0,      0}, {0xb0, 0x64, 0x00, 0x00}}},\n    {{{    21,    -18,     20}, 0, {     0,      0}, {0xb0, 0x64, 0x00, 0x00}}},\n    {{{    -4,    -38,    -22}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    -4,     81,    -22}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    -4,     81,     20}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    -4,    -38,    -22}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    -4,     81,     20}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    -4,    -38,     20}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    -4,     81,    -22}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   -41,     81,    -22}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   -41,     81,     20}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{    -4,     81,    -22}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   -41,     81,     20}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{    -4,     81,     20}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n};\n\n// 0x07000E00 - 0x07000EF0\nstatic const Vtx debug_level_select_vertex_07000E00[] = {\n    {{{   -41,     81,    -22}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -4,     81,    -22}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -4,    -38,    -22}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    21,    -18,    -22}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{     6,     49,    -22}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    39,     58,    -22}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    21,    -18,    -22}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    39,     58,    -22}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    58,    -32,    -22}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    21,    -18,    -22}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    58,    -32,    -22}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    33,    -64,    -22}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    21,    -18,    -22}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    33,    -64,    -22}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -20,    -72,    -22}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n};\n\n// 0x07000EF0 - 0x07000FE0\nstatic const Vtx debug_level_select_vertex_07000EF0[] = {\n    {{{   -20,    -72,    -22}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -42,    -36,    -22}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -41,     81,    -22}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -20,    -72,    -22}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -41,     81,    -22}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -4,    -38,    -22}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -20,    -72,    -22}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -4,    -38,    -22}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    21,    -18,    -22}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -42,    -36,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -20,    -72,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    33,    -64,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    33,    -64,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    58,    -32,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    39,     58,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n};\n\n// 0x07000FE0 - 0x070010D0\nstatic const Vtx debug_level_select_vertex_07000FE0[] = {\n    {{{    33,    -64,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    39,     58,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{     6,     49,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    33,    -64,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{     6,     49,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    21,    -18,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    33,    -64,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    21,    -18,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -4,    -38,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -4,    -38,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -4,     81,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -41,     81,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -4,    -38,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -41,     81,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -42,    -36,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n};\n\n// 0x070010D0 - 0x07001100\nstatic const Vtx debug_level_select_vertex_070010D0[] = {\n    {{{    -4,    -38,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -42,    -36,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    33,    -64,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n};\n\n// 0x07001100 - 0x07001288\nconst Gfx debug_level_select_dl_07001100[] = {\n    gsDPPipeSync(),\n    gsSPSetLights1(debug_level_select_lights_07000A28),\n    gsSPVertex(debug_level_select_vertex_07000A40, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07000B30, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07000C20, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07000D10, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07000E00, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07000EF0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07000FE0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_070010D0, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07001288 - 0x070012A0\nstatic const Lights1 debug_level_select_lights_07001288 = gdSPDefLights1(\n    0x00, 0x56, 0x00,\n    0x00, 0xad, 0x00, 0x00, 0x00, 0x50\n);\n\n// 0x070012A0 - 0x07001390\nstatic const Vtx debug_level_select_vertex_070012A0[] = {\n    {{{     3,     82,    -19}, 0, {     0,      0}, {0x0f, 0x7e, 0x00, 0x00}}},\n    {{{   -42,     82,    -19}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   -42,     82,     20}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{     3,     82,    -19}, 0, {     0,      0}, {0x0f, 0x7e, 0x00, 0x00}}},\n    {{{   -42,     82,     20}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{     3,     82,     20}, 0, {     0,      0}, {0x1f, 0x7c, 0x00, 0x00}}},\n    {{{   -42,     82,    -19}, 0, {     0,      0}, {0x80, 0x00, 0x00, 0x00}}},\n    {{{   -42,    -71,    -19}, 0, {     0,      0}, {0x80, 0x00, 0x00, 0x00}}},\n    {{{   -42,    -71,     20}, 0, {     0,      0}, {0x80, 0x00, 0x00, 0x00}}},\n    {{{   -42,     82,    -19}, 0, {     0,      0}, {0x80, 0x00, 0x00, 0x00}}},\n    {{{   -42,    -71,     20}, 0, {     0,      0}, {0x80, 0x00, 0x00, 0x00}}},\n    {{{   -42,     82,     20}, 0, {     0,      0}, {0x80, 0x00, 0x00, 0x00}}},\n    {{{   -42,    -71,    -19}, 0, {     0,      0}, {0x02, 0x80, 0x00, 0x00}}},\n    {{{    -5,    -71,    -19}, 0, {     0,      0}, {0x02, 0x80, 0x00, 0x00}}},\n    {{{    -5,    -71,     20}, 0, {     0,      0}, {0x02, 0x80, 0x00, 0x00}}},\n};\n\n// 0x07001390 - 0x07001480\nstatic const Vtx debug_level_select_vertex_07001390[] = {\n    {{{   -42,    -71,    -19}, 0, {     0,      0}, {0x02, 0x80, 0x00, 0x00}}},\n    {{{    -5,    -71,     20}, 0, {     0,      0}, {0x02, 0x80, 0x00, 0x00}}},\n    {{{   -42,    -71,     20}, 0, {     0,      0}, {0x02, 0x80, 0x00, 0x00}}},\n    {{{    -5,    -71,    -19}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    -5,    -43,    -19}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    -5,    -43,     20}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    -5,    -71,    -19}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    -5,    -43,     20}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    -5,    -71,     20}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    -5,    -43,    -19}, 0, {     0,      0}, {0xfc, 0x80, 0x00, 0x00}}},\n    {{{    20,    -44,    -19}, 0, {     0,      0}, {0x3e, 0x90, 0x00, 0x00}}},\n    {{{    20,    -44,     20}, 0, {     0,      0}, {0x1c, 0x83, 0x00, 0x00}}},\n    {{{    -5,    -43,    -19}, 0, {     0,      0}, {0xfc, 0x80, 0x00, 0x00}}},\n    {{{    20,    -44,     20}, 0, {     0,      0}, {0x1c, 0x83, 0x00, 0x00}}},\n    {{{    -5,    -43,     20}, 0, {     0,      0}, {0xfc, 0x80, 0x00, 0x00}}},\n};\n\n// 0x07001480 - 0x07001570\nstatic const Vtx debug_level_select_vertex_07001480[] = {\n    {{{    20,    -44,    -19}, 0, {     0,      0}, {0x3e, 0x90, 0x00, 0x00}}},\n    {{{    58,     -8,    -19}, 0, {     0,      0}, {0x7e, 0xeb, 0x00, 0x00}}},\n    {{{    58,     -8,     20}, 0, {     0,      0}, {0x70, 0xc2, 0x00, 0x00}}},\n    {{{    20,    -44,    -19}, 0, {     0,      0}, {0x3e, 0x90, 0x00, 0x00}}},\n    {{{    58,     -8,     20}, 0, {     0,      0}, {0x70, 0xc2, 0x00, 0x00}}},\n    {{{    20,    -44,     20}, 0, {     0,      0}, {0x1c, 0x83, 0x00, 0x00}}},\n    {{{    58,     -8,    -19}, 0, {     0,      0}, {0x7e, 0xeb, 0x00, 0x00}}},\n    {{{    47,     65,    -19}, 0, {     0,      0}, {0x7e, 0x12, 0x00, 0x00}}},\n    {{{    47,     65,     20}, 0, {     0,      0}, {0x7e, 0x12, 0x00, 0x00}}},\n    {{{    58,     -8,    -19}, 0, {     0,      0}, {0x7e, 0xeb, 0x00, 0x00}}},\n    {{{    47,     65,     20}, 0, {     0,      0}, {0x7e, 0x12, 0x00, 0x00}}},\n    {{{    58,     -8,     20}, 0, {     0,      0}, {0x70, 0xc2, 0x00, 0x00}}},\n    {{{    47,     65,    -19}, 0, {     0,      0}, {0x2e, 0x77, 0x00, 0x00}}},\n    {{{     3,     82,    -19}, 0, {     0,      0}, {0x0f, 0x7e, 0x00, 0x00}}},\n    {{{     3,     82,     20}, 0, {     0,      0}, {0x1f, 0x7c, 0x00, 0x00}}},\n};\n\n// 0x07001570 - 0x07001660\nstatic const Vtx debug_level_select_vertex_07001570[] = {\n    {{{    47,     65,    -19}, 0, {     0,      0}, {0x2e, 0x77, 0x00, 0x00}}},\n    {{{     3,     82,     20}, 0, {     0,      0}, {0x1f, 0x7c, 0x00, 0x00}}},\n    {{{    47,     65,     20}, 0, {     0,      0}, {0x2e, 0x77, 0x00, 0x00}}},\n    {{{    -5,     -4,    -19}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    -5,     32,    -19}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    -5,     32,     20}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    -5,     -4,    -19}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    -5,     32,     20}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    -5,     -4,     20}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    -5,     32,    -19}, 0, {     0,      0}, {0x08, 0x80, 0x00, 0x00}}},\n    {{{    29,     34,    -19}, 0, {     0,      0}, {0x08, 0x80, 0x00, 0x00}}},\n    {{{    29,     34,     20}, 0, {     0,      0}, {0x08, 0x80, 0x00, 0x00}}},\n    {{{    -5,     32,    -19}, 0, {     0,      0}, {0x08, 0x80, 0x00, 0x00}}},\n    {{{    29,     34,     20}, 0, {     0,      0}, {0x08, 0x80, 0x00, 0x00}}},\n    {{{    -5,     32,     20}, 0, {     0,      0}, {0x08, 0x80, 0x00, 0x00}}},\n};\n\n// 0x07001660 - 0x07001750\nstatic const Vtx debug_level_select_vertex_07001660[] = {\n    {{{    29,     34,    -19}, 0, {     0,      0}, {0x83, 0x1c, 0x00, 0x00}}},\n    {{{    18,     -9,    -19}, 0, {     0,      0}, {0x83, 0x1c, 0x00, 0x00}}},\n    {{{    18,     -9,     20}, 0, {     0,      0}, {0x83, 0x1c, 0x00, 0x00}}},\n    {{{    29,     34,    -19}, 0, {     0,      0}, {0x83, 0x1c, 0x00, 0x00}}},\n    {{{    18,     -9,     20}, 0, {     0,      0}, {0x83, 0x1c, 0x00, 0x00}}},\n    {{{    29,     34,     20}, 0, {     0,      0}, {0x83, 0x1c, 0x00, 0x00}}},\n    {{{    18,     -9,    -19}, 0, {     0,      0}, {0x1c, 0x7c, 0x00, 0x00}}},\n    {{{    -5,     -4,    -19}, 0, {     0,      0}, {0x1c, 0x7c, 0x00, 0x00}}},\n    {{{    -5,     -4,     20}, 0, {     0,      0}, {0x1c, 0x7c, 0x00, 0x00}}},\n    {{{    18,     -9,    -19}, 0, {     0,      0}, {0x1c, 0x7c, 0x00, 0x00}}},\n    {{{    -5,     -4,     20}, 0, {     0,      0}, {0x1c, 0x7c, 0x00, 0x00}}},\n    {{{    18,     -9,     20}, 0, {     0,      0}, {0x1c, 0x7c, 0x00, 0x00}}},\n    {{{     3,     82,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    29,     34,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -5,     32,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n};\n\n// 0x07001750 - 0x07001840\nstatic const Vtx debug_level_select_vertex_07001750[] = {\n    {{{    29,     34,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{     3,     82,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    47,     65,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    29,     34,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    47,     65,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    58,     -8,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    29,     34,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    58,     -8,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    20,    -44,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -5,    -43,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -5,    -71,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -42,    -71,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -5,    -43,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -42,    -71,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -42,     82,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n};\n\n// 0x07001840 - 0x07001930\nstatic const Vtx debug_level_select_vertex_07001840[] = {\n    {{{   -42,     82,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{     3,     82,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -5,     32,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -42,     82,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -5,     32,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -5,     -4,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    18,     -9,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    29,     34,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    20,    -44,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    18,     -9,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    20,    -44,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -5,    -43,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -5,    -43,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -42,     82,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -5,     -4,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n};\n\n// 0x07001930 - 0x07001A20\nstatic const Vtx debug_level_select_vertex_07001930[] = {\n    {{{    -5,    -43,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -5,     -4,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    18,     -9,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -42,     82,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -5,     32,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    29,     34,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -5,     -4,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -5,     32,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -42,     82,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -5,     -4,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -42,     82,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -42,    -71,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -42,    -71,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -5,    -71,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -5,    -43,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n};\n\n// 0x07001A20 - 0x07001B10\nstatic const Vtx debug_level_select_vertex_07001A20[] = {\n    {{{    -5,    -43,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    20,    -44,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    58,     -8,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    58,     -8,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    47,     65,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{     3,     82,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{     3,     82,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -42,     82,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    29,     34,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    18,     -9,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -5,     -4,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -42,    -71,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    18,     -9,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -42,    -71,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -5,    -43,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n};\n\n// 0x07001B10 - 0x07001BA0\nstatic const Vtx debug_level_select_vertex_07001B10[] = {\n    {{{    18,     -9,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -5,    -43,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    58,     -8,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    58,     -8,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{     3,     82,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    29,     34,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    58,     -8,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    29,     34,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    18,     -9,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n};\n\n// 0x07001BA0 - 0x07001D98\nconst Gfx debug_level_select_dl_07001BA0[] = {\n    gsDPPipeSync(),\n    gsSPSetLights1(debug_level_select_lights_07001288),\n    gsSPVertex(debug_level_select_vertex_070012A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07001390, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07001480, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07001570, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07001660, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07001750, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07001840, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07001930, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07001A20, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07001B10, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07001D98 - 0x07001DB0\nstatic const Lights1 debug_level_select_lights_07001D98 = gdSPDefLights1(\n    0x7f, 0x00, 0x00,\n    0xff, 0x00, 0x00, 0x00, 0x00, 0x50\n);\n\n// 0x07001DB0 - 0x07001EA0\nstatic const Vtx debug_level_select_vertex_07001DB0[] = {\n    {{{    42,     76,    -19}, 0, {     0,      0}, {0xec, 0x7e, 0x00, 0x00}}},\n    {{{   -49,     62,    -19}, 0, {     0,      0}, {0xec, 0x7e, 0x00, 0x00}}},\n    {{{   -49,     62,     20}, 0, {     0,      0}, {0xec, 0x7e, 0x00, 0x00}}},\n    {{{    42,     76,    -19}, 0, {     0,      0}, {0xec, 0x7e, 0x00, 0x00}}},\n    {{{   -49,     62,     20}, 0, {     0,      0}, {0xec, 0x7e, 0x00, 0x00}}},\n    {{{    42,     76,     20}, 0, {     0,      0}, {0xec, 0x7e, 0x00, 0x00}}},\n    {{{   -49,     62,    -19}, 0, {     0,      0}, {0x82, 0xe4, 0x00, 0x00}}},\n    {{{   -22,    -62,    -19}, 0, {     0,      0}, {0x82, 0xe4, 0x00, 0x00}}},\n    {{{   -22,    -62,     20}, 0, {     0,      0}, {0x82, 0xe4, 0x00, 0x00}}},\n    {{{   -49,     62,    -19}, 0, {     0,      0}, {0x82, 0xe4, 0x00, 0x00}}},\n    {{{   -22,    -62,     20}, 0, {     0,      0}, {0x82, 0xe4, 0x00, 0x00}}},\n    {{{   -49,     62,     20}, 0, {     0,      0}, {0x82, 0xe4, 0x00, 0x00}}},\n    {{{   -22,    -62,    -19}, 0, {     0,      0}, {0x0a, 0x80, 0x00, 0x00}}},\n    {{{    73,    -54,    -19}, 0, {     0,      0}, {0x0a, 0x80, 0x00, 0x00}}},\n    {{{    73,    -54,     20}, 0, {     0,      0}, {0x0a, 0x80, 0x00, 0x00}}},\n};\n\n// 0x07001EA0 - 0x07001F90\nstatic const Vtx debug_level_select_vertex_07001EA0[] = {\n    {{{   -22,    -62,    -19}, 0, {     0,      0}, {0x0a, 0x80, 0x00, 0x00}}},\n    {{{    73,    -54,     20}, 0, {     0,      0}, {0x0a, 0x80, 0x00, 0x00}}},\n    {{{   -22,    -62,     20}, 0, {     0,      0}, {0x0a, 0x80, 0x00, 0x00}}},\n    {{{    73,    -54,    -19}, 0, {     0,      0}, {0x74, 0x35, 0x00, 0x00}}},\n    {{{    57,    -18,    -19}, 0, {     0,      0}, {0x74, 0x35, 0x00, 0x00}}},\n    {{{    57,    -18,     20}, 0, {     0,      0}, {0x74, 0x35, 0x00, 0x00}}},\n    {{{    73,    -54,    -19}, 0, {     0,      0}, {0x74, 0x35, 0x00, 0x00}}},\n    {{{    57,    -18,     20}, 0, {     0,      0}, {0x74, 0x35, 0x00, 0x00}}},\n    {{{    73,    -54,     20}, 0, {     0,      0}, {0x74, 0x35, 0x00, 0x00}}},\n    {{{    57,    -18,    -19}, 0, {     0,      0}, {0xe6, 0x7d, 0x00, 0x00}}},\n    {{{     7,    -28,    -19}, 0, {     0,      0}, {0xe6, 0x7d, 0x00, 0x00}}},\n    {{{     7,    -28,     20}, 0, {     0,      0}, {0xe6, 0x7d, 0x00, 0x00}}},\n    {{{    57,    -18,    -19}, 0, {     0,      0}, {0xe6, 0x7d, 0x00, 0x00}}},\n    {{{     7,    -28,     20}, 0, {     0,      0}, {0xe6, 0x7d, 0x00, 0x00}}},\n    {{{    57,    -18,     20}, 0, {     0,      0}, {0xe6, 0x7d, 0x00, 0x00}}},\n};\n\n// 0x07001F90 - 0x07002080\nstatic const Vtx debug_level_select_vertex_07001F90[] = {\n    {{{     7,    -28,    -19}, 0, {     0,      0}, {0x7e, 0x12, 0x00, 0x00}}},\n    {{{     3,     -1,    -19}, 0, {     0,      0}, {0x7e, 0x12, 0x00, 0x00}}},\n    {{{     3,     -1,     20}, 0, {     0,      0}, {0x7e, 0x12, 0x00, 0x00}}},\n    {{{     7,    -28,    -19}, 0, {     0,      0}, {0x7e, 0x12, 0x00, 0x00}}},\n    {{{     3,     -1,     20}, 0, {     0,      0}, {0x7e, 0x12, 0x00, 0x00}}},\n    {{{     7,    -28,     20}, 0, {     0,      0}, {0x7e, 0x12, 0x00, 0x00}}},\n    {{{     3,     -1,    -19}, 0, {     0,      0}, {0xee, 0x81, 0x00, 0x00}}},\n    {{{    43,     -7,    -19}, 0, {     0,      0}, {0xee, 0x81, 0x00, 0x00}}},\n    {{{    43,     -7,     20}, 0, {     0,      0}, {0xee, 0x81, 0x00, 0x00}}},\n    {{{     3,     -1,    -19}, 0, {     0,      0}, {0xee, 0x81, 0x00, 0x00}}},\n    {{{    43,     -7,     20}, 0, {     0,      0}, {0xee, 0x81, 0x00, 0x00}}},\n    {{{     3,     -1,     20}, 0, {     0,      0}, {0xee, 0x81, 0x00, 0x00}}},\n    {{{    43,     -7,    -19}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    43,     19,    -19}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    43,     19,     20}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n};\n\n// 0x07002080 - 0x07002170\nstatic const Vtx debug_level_select_vertex_07002080[] = {\n    {{{    43,     -7,    -19}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    43,     19,     20}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    43,     -7,     20}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    43,     19,    -19}, 0, {     0,      0}, {0x0c, 0x7f, 0x00, 0x00}}},\n    {{{    -4,     23,    -19}, 0, {     0,      0}, {0x0c, 0x7f, 0x00, 0x00}}},\n    {{{    -4,     23,     20}, 0, {     0,      0}, {0x0c, 0x7f, 0x00, 0x00}}},\n    {{{    43,     19,    -19}, 0, {     0,      0}, {0x0c, 0x7f, 0x00, 0x00}}},\n    {{{    -4,     23,     20}, 0, {     0,      0}, {0x0c, 0x7f, 0x00, 0x00}}},\n    {{{    43,     19,     20}, 0, {     0,      0}, {0x0c, 0x7f, 0x00, 0x00}}},\n    {{{    -4,     23,    -19}, 0, {     0,      0}, {0x7a, 0xda, 0x00, 0x00}}},\n    {{{     1,     42,    -19}, 0, {     0,      0}, {0x7a, 0xda, 0x00, 0x00}}},\n    {{{     1,     42,     20}, 0, {     0,      0}, {0x7a, 0xda, 0x00, 0x00}}},\n    {{{    -4,     23,    -19}, 0, {     0,      0}, {0x7a, 0xda, 0x00, 0x00}}},\n    {{{     1,     42,     20}, 0, {     0,      0}, {0x7a, 0xda, 0x00, 0x00}}},\n    {{{    -4,     23,     20}, 0, {     0,      0}, {0x7a, 0xda, 0x00, 0x00}}},\n};\n\n// 0x07002170 - 0x07002260\nstatic const Vtx debug_level_select_vertex_07002170[] = {\n    {{{     1,     42,    -19}, 0, {     0,      0}, {0x00, 0x80, 0x00, 0x00}}},\n    {{{    38,     42,    -19}, 0, {     0,      0}, {0x00, 0x80, 0x00, 0x00}}},\n    {{{    38,     42,     20}, 0, {     0,      0}, {0x00, 0x80, 0x00, 0x00}}},\n    {{{     1,     42,    -19}, 0, {     0,      0}, {0x00, 0x80, 0x00, 0x00}}},\n    {{{    38,     42,     20}, 0, {     0,      0}, {0x00, 0x80, 0x00, 0x00}}},\n    {{{     1,     42,     20}, 0, {     0,      0}, {0x00, 0x80, 0x00, 0x00}}},\n    {{{    38,     42,    -19}, 0, {     0,      0}, {0x7f, 0xf1, 0x00, 0x00}}},\n    {{{    42,     76,    -19}, 0, {     0,      0}, {0x7f, 0xf1, 0x00, 0x00}}},\n    {{{    42,     76,     20}, 0, {     0,      0}, {0x7f, 0xf1, 0x00, 0x00}}},\n    {{{    38,     42,    -19}, 0, {     0,      0}, {0x7f, 0xf1, 0x00, 0x00}}},\n    {{{    42,     76,     20}, 0, {     0,      0}, {0x7f, 0xf1, 0x00, 0x00}}},\n    {{{    38,     42,     20}, 0, {     0,      0}, {0x7f, 0xf1, 0x00, 0x00}}},\n    {{{    42,     76,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    38,     42,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{     1,     42,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n};\n\n// 0x07002260 - 0x07002350\nstatic const Vtx debug_level_select_vertex_07002260[] = {\n    {{{    -4,     23,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    43,     19,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    43,     -7,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -4,     23,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    43,     -7,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{     3,     -1,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -4,     23,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{     3,     -1,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{     7,    -28,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{     7,    -28,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    57,    -18,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    73,    -54,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{     7,    -28,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    73,    -54,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -22,    -62,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n};\n\n// 0x07002350 - 0x07002440\nstatic const Vtx debug_level_select_vertex_07002350[] = {\n    {{{     7,    -28,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -22,    -62,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -49,     62,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -49,     62,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    42,     76,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{     1,     42,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -49,     62,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{     1,     42,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -4,     23,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -49,     62,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -4,     23,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{     7,    -28,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -22,    -62,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    73,    -54,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    57,    -18,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n};\n\n// 0x07002440 - 0x07002530\nstatic const Vtx debug_level_select_vertex_07002440[] = {\n    {{{   -22,    -62,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    57,    -18,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{     7,    -28,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -22,    -62,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{     7,    -28,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{     3,     -1,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{     3,     -1,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    43,     -7,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    43,     19,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{     3,     -1,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    43,     19,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -4,     23,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{     1,     42,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    38,     42,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    42,     76,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n};\n\n// 0x07002530 - 0x070025F0\nstatic const Vtx debug_level_select_vertex_07002530[] = {\n    {{{     1,     42,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    42,     76,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -49,     62,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -49,     62,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -22,    -62,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{     3,     -1,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -49,     62,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{     3,     -1,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -4,     23,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -49,     62,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -4,     23,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{     1,     42,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n};\n\n// 0x070025F0 - 0x070027C0\nconst Gfx debug_level_select_dl_070025F0[] = {\n    gsDPPipeSync(),\n    gsSPSetLights1(debug_level_select_lights_07001D98),\n    gsSPVertex(debug_level_select_vertex_07001DB0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07001EA0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07001F90, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07002080, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07002170, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07002260, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07002350, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07002440, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07002530, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070027C0 - 0x070027D8\nstatic const Lights1 debug_level_select_lights_070027C0 = gdSPDefLights1(\n    0x00, 0x00, 0x7f,\n    0x00, 0x00, 0xff, 0x00, 0x00, 0x50\n);\n\n// 0x070027D8 - 0x070028C8\nstatic const Vtx debug_level_select_vertex_070027D8[] = {\n    {{{    28,     75,    -20}, 0, {     0,      0}, {0x16, 0x7d, 0x00, 0x00}}},\n    {{{   -43,     76,    -20}, 0, {     0,      0}, {0x01, 0x7f, 0x00, 0x00}}},\n    {{{   -43,     76,     20}, 0, {     0,      0}, {0x01, 0x7f, 0x00, 0x00}}},\n    {{{    28,     75,    -20}, 0, {     0,      0}, {0x16, 0x7d, 0x00, 0x00}}},\n    {{{   -43,     76,     20}, 0, {     0,      0}, {0x01, 0x7f, 0x00, 0x00}}},\n    {{{    28,     75,     20}, 0, {     0,      0}, {0x2b, 0x78, 0x00, 0x00}}},\n    {{{   -43,     76,    -20}, 0, {     0,      0}, {0x80, 0xfb, 0x00, 0x00}}},\n    {{{   -37,    -71,    -20}, 0, {     0,      0}, {0x80, 0xfb, 0x00, 0x00}}},\n    {{{   -37,    -71,     20}, 0, {     0,      0}, {0x80, 0xfb, 0x00, 0x00}}},\n    {{{   -43,     76,    -20}, 0, {     0,      0}, {0x80, 0xfb, 0x00, 0x00}}},\n    {{{   -37,    -71,     20}, 0, {     0,      0}, {0x80, 0xfb, 0x00, 0x00}}},\n    {{{   -43,     76,     20}, 0, {     0,      0}, {0x80, 0xfb, 0x00, 0x00}}},\n    {{{   -37,    -71,    -20}, 0, {     0,      0}, {0x00, 0x80, 0x00, 0x00}}},\n    {{{     0,    -71,    -20}, 0, {     0,      0}, {0x00, 0x80, 0x00, 0x00}}},\n    {{{     0,    -71,     20}, 0, {     0,      0}, {0x00, 0x80, 0x00, 0x00}}},\n};\n\n// 0x070028C8 - 0x070029B8\nstatic const Vtx debug_level_select_vertex_070028C8[] = {\n    {{{   -37,    -71,    -20}, 0, {     0,      0}, {0x00, 0x80, 0x00, 0x00}}},\n    {{{     0,    -71,     20}, 0, {     0,      0}, {0x00, 0x80, 0x00, 0x00}}},\n    {{{   -37,    -71,     20}, 0, {     0,      0}, {0x00, 0x80, 0x00, 0x00}}},\n    {{{     0,    -71,    -20}, 0, {     0,      0}, {0x7f, 0x0e, 0x00, 0x00}}},\n    {{{    -7,    -14,    -20}, 0, {     0,      0}, {0x7f, 0x0e, 0x00, 0x00}}},\n    {{{    -7,    -14,     20}, 0, {     0,      0}, {0x7f, 0x0e, 0x00, 0x00}}},\n    {{{     0,    -71,    -20}, 0, {     0,      0}, {0x7f, 0x0e, 0x00, 0x00}}},\n    {{{    -7,    -14,     20}, 0, {     0,      0}, {0x7f, 0x0e, 0x00, 0x00}}},\n    {{{     0,    -71,     20}, 0, {     0,      0}, {0x7f, 0x0e, 0x00, 0x00}}},\n    {{{    -7,    -14,    -20}, 0, {     0,      0}, {0xa3, 0xa7, 0x00, 0x00}}},\n    {{{    46,    -70,    -20}, 0, {     0,      0}, {0xa3, 0xa7, 0x00, 0x00}}},\n    {{{    46,    -70,     20}, 0, {     0,      0}, {0xa3, 0xa7, 0x00, 0x00}}},\n    {{{    -7,    -14,    -20}, 0, {     0,      0}, {0xa3, 0xa7, 0x00, 0x00}}},\n    {{{    46,    -70,     20}, 0, {     0,      0}, {0xa3, 0xa7, 0x00, 0x00}}},\n    {{{    -7,    -14,     20}, 0, {     0,      0}, {0xa3, 0xa7, 0x00, 0x00}}},\n};\n\n// 0x070029B8 - 0x07002AA8\nstatic const Vtx debug_level_select_vertex_070029B8[] = {\n    {{{    46,    -70,    -20}, 0, {     0,      0}, {0x57, 0xa2, 0x00, 0x00}}},\n    {{{    79,    -39,    -20}, 0, {     0,      0}, {0x57, 0xa2, 0x00, 0x00}}},\n    {{{    79,    -39,     20}, 0, {     0,      0}, {0x57, 0xa2, 0x00, 0x00}}},\n    {{{    46,    -70,    -20}, 0, {     0,      0}, {0x57, 0xa2, 0x00, 0x00}}},\n    {{{    79,    -39,     20}, 0, {     0,      0}, {0x57, 0xa2, 0x00, 0x00}}},\n    {{{    46,    -70,     20}, 0, {     0,      0}, {0x57, 0xa2, 0x00, 0x00}}},\n    {{{    79,    -39,    -20}, 0, {     0,      0}, {0x49, 0x69, 0x00, 0x00}}},\n    {{{    35,     -8,    -20}, 0, {     0,      0}, {0x49, 0x69, 0x00, 0x00}}},\n    {{{    35,     -8,     20}, 0, {     0,      0}, {0x49, 0x69, 0x00, 0x00}}},\n    {{{    79,    -39,    -20}, 0, {     0,      0}, {0x49, 0x69, 0x00, 0x00}}},\n    {{{    35,     -8,     20}, 0, {     0,      0}, {0x49, 0x69, 0x00, 0x00}}},\n    {{{    79,    -39,     20}, 0, {     0,      0}, {0x49, 0x69, 0x00, 0x00}}},\n    {{{    35,     -8,    -20}, 0, {     0,      0}, {0x53, 0x9f, 0x00, 0x00}}},\n    {{{    64,     16,    -20}, 0, {     0,      0}, {0x7d, 0xe6, 0x00, 0x00}}},\n    {{{    64,     16,     20}, 0, {     0,      0}, {0x6d, 0xbd, 0x00, 0x00}}},\n};\n\n// 0x07002AA8 - 0x07002B98\nstatic const Vtx debug_level_select_vertex_07002AA8[] = {\n    {{{    35,     -8,    -20}, 0, {     0,      0}, {0x53, 0x9f, 0x00, 0x00}}},\n    {{{    64,     16,     20}, 0, {     0,      0}, {0x6d, 0xbd, 0x00, 0x00}}},\n    {{{    35,     -8,     20}, 0, {     0,      0}, {0x53, 0x9f, 0x00, 0x00}}},\n    {{{    64,     16,    -20}, 0, {     0,      0}, {0x7d, 0xe6, 0x00, 0x00}}},\n    {{{    59,     58,    -20}, 0, {     0,      0}, {0x5d, 0x57, 0x00, 0x00}}},\n    {{{    59,     58,     20}, 0, {     0,      0}, {0x75, 0x33, 0x00, 0x00}}},\n    {{{    64,     16,    -20}, 0, {     0,      0}, {0x7d, 0xe6, 0x00, 0x00}}},\n    {{{    59,     58,     20}, 0, {     0,      0}, {0x75, 0x33, 0x00, 0x00}}},\n    {{{    64,     16,     20}, 0, {     0,      0}, {0x6d, 0xbd, 0x00, 0x00}}},\n    {{{    59,     58,    -20}, 0, {     0,      0}, {0x5d, 0x57, 0x00, 0x00}}},\n    {{{    28,     75,    -20}, 0, {     0,      0}, {0x16, 0x7d, 0x00, 0x00}}},\n    {{{    28,     75,     20}, 0, {     0,      0}, {0x2b, 0x78, 0x00, 0x00}}},\n    {{{    59,     58,    -20}, 0, {     0,      0}, {0x5d, 0x57, 0x00, 0x00}}},\n    {{{    28,     75,     20}, 0, {     0,      0}, {0x2b, 0x78, 0x00, 0x00}}},\n    {{{    59,     58,     20}, 0, {     0,      0}, {0x75, 0x33, 0x00, 0x00}}},\n};\n\n// 0x07002B98 - 0x07002C88\nstatic const Vtx debug_level_select_vertex_07002B98[] = {\n    {{{    -9,     56,    -20}, 0, {     0,      0}, {0xc0, 0x90, 0x00, 0x00}}},\n    {{{    32,     32,    -20}, 0, {     0,      0}, {0xc0, 0x90, 0x00, 0x00}}},\n    {{{    32,     32,     20}, 0, {     0,      0}, {0xc0, 0x90, 0x00, 0x00}}},\n    {{{    -9,     56,    -20}, 0, {     0,      0}, {0xc0, 0x90, 0x00, 0x00}}},\n    {{{    32,     32,     20}, 0, {     0,      0}, {0xc0, 0x90, 0x00, 0x00}}},\n    {{{    -9,     56,     20}, 0, {     0,      0}, {0xc0, 0x90, 0x00, 0x00}}},\n    {{{    32,     32,    -20}, 0, {     0,      0}, {0x90, 0x3e, 0x00, 0x00}}},\n    {{{    11,     -3,    -20}, 0, {     0,      0}, {0x90, 0x3e, 0x00, 0x00}}},\n    {{{    11,     -3,     20}, 0, {     0,      0}, {0x90, 0x3e, 0x00, 0x00}}},\n    {{{    32,     32,    -20}, 0, {     0,      0}, {0x90, 0x3e, 0x00, 0x00}}},\n    {{{    11,     -3,     20}, 0, {     0,      0}, {0x90, 0x3e, 0x00, 0x00}}},\n    {{{    32,     32,     20}, 0, {     0,      0}, {0x90, 0x3e, 0x00, 0x00}}},\n    {{{    11,     -3,    -20}, 0, {     0,      0}, {0x44, 0x6c, 0x00, 0x00}}},\n    {{{    -9,     10,    -20}, 0, {     0,      0}, {0x79, 0x28, 0x00, 0x00}}},\n    {{{    -9,     10,     20}, 0, {     0,      0}, {0x63, 0x51, 0x00, 0x00}}},\n};\n\n// 0x07002C88 - 0x07002D78\nstatic const Vtx debug_level_select_vertex_07002C88[] = {\n    {{{    11,     -3,    -20}, 0, {     0,      0}, {0x44, 0x6c, 0x00, 0x00}}},\n    {{{    -9,     10,     20}, 0, {     0,      0}, {0x63, 0x51, 0x00, 0x00}}},\n    {{{    11,     -3,     20}, 0, {     0,      0}, {0x44, 0x6c, 0x00, 0x00}}},\n    {{{    -9,     10,    -20}, 0, {     0,      0}, {0x79, 0x28, 0x00, 0x00}}},\n    {{{    -9,     56,    -20}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    -9,     56,     20}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    -9,     10,    -20}, 0, {     0,      0}, {0x79, 0x28, 0x00, 0x00}}},\n    {{{    -9,     56,     20}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0x00}}},\n    {{{    -9,     10,     20}, 0, {     0,      0}, {0x63, 0x51, 0x00, 0x00}}},\n    {{{    32,     32,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -9,     56,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    28,     75,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    32,     32,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    28,     75,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    59,     58,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n};\n\n// 0x07002D78 - 0x07002E68\nstatic const Vtx debug_level_select_vertex_07002D78[] = {\n    {{{    32,     32,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    59,     58,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    64,     16,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    32,     32,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    64,     16,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    35,     -8,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    35,     -8,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    79,    -39,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    46,    -70,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    35,     -8,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    46,    -70,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -7,    -14,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -7,    -14,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{     0,    -71,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -37,    -71,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n};\n\n// 0x07002E68 - 0x07002F58\nstatic const Vtx debug_level_select_vertex_07002E68[] = {\n    {{{    -7,    -14,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -37,    -71,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -43,     76,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -43,     76,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    28,     75,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -9,     56,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -43,     76,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -9,     56,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -9,     10,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    11,     -3,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    32,     32,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    35,     -8,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    11,     -3,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    35,     -8,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -7,    -14,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n};\n\n// 0x07002F58 - 0x07003048\nstatic const Vtx debug_level_select_vertex_07002F58[] = {\n    {{{    -7,    -14,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -43,     76,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -9,     10,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -7,    -14,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -9,     10,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    11,     -3,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -9,     56,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    32,     32,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -43,     76,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -9,     56,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -43,     76,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -37,    -71,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -37,    -71,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{     0,    -71,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -7,    -14,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n};\n\n// 0x07003048 - 0x07003138\nstatic const Vtx debug_level_select_vertex_07003048[] = {\n    {{{    -7,    -14,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    46,    -70,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    79,    -39,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -7,    -14,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    79,    -39,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    35,     -8,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -7,    -14,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    35,     -8,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    64,     16,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    64,     16,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    59,     58,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    28,     75,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    64,     16,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    28,     75,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -43,     76,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n};\n\n// 0x07003138 - 0x07003228\nstatic const Vtx debug_level_select_vertex_07003138[] = {\n    {{{    64,     16,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -43,     76,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    32,     32,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    64,     16,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    32,     32,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    11,     -3,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -9,     10,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -9,     56,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -37,    -71,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -9,     10,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -37,    -71,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -7,    -14,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -7,    -14,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    64,     16,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    11,     -3,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n};\n\n// 0x07003228 - 0x07003258\nstatic const Vtx debug_level_select_vertex_07003228[] = {\n    {{{    -7,    -14,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    11,     -3,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -9,     10,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n};\n\n// 0x07003258 - 0x070034A0\nconst Gfx debug_level_select_dl_07003258[] = {\n    gsDPPipeSync(),\n    gsSPSetLights1(debug_level_select_lights_070027C0),\n    gsSPVertex(debug_level_select_vertex_070027D8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_070028C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_070029B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07002AA8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07002B98, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07002C88, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07002D78, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07002E68, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07002F58, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07003048, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07003138, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07003228, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070034A0 - 0x070034B8\nstatic const Lights1 debug_level_select_lights_070034A0 = gdSPDefLights1(\n    0x7f, 0x00, 0x00,\n    0xff, 0x00, 0x00, 0x00, 0x00, 0x50\n);\n\n// 0x070034B8 - 0x070035A8\nstatic const Vtx debug_level_select_vertex_070034B8[] = {\n    {{{    17,    107,    -20}, 0, {     0,      0}, {0x89, 0x2f, 0x00, 0x00}}},\n    {{{    -1,     60,    -20}, 0, {     0,      0}, {0x89, 0x2f, 0x00, 0x00}}},\n    {{{    -1,     60,     19}, 0, {     0,      0}, {0x89, 0x2f, 0x00, 0x00}}},\n    {{{    17,    107,    -20}, 0, {     0,      0}, {0x89, 0x2f, 0x00, 0x00}}},\n    {{{    -1,     60,     19}, 0, {     0,      0}, {0x89, 0x2f, 0x00, 0x00}}},\n    {{{    17,    107,     19}, 0, {     0,      0}, {0x89, 0x2f, 0x00, 0x00}}},\n    {{{    -1,     60,    -20}, 0, {     0,      0}, {0x73, 0x36, 0x00, 0x00}}},\n    {{{   -23,    107,    -20}, 0, {     0,      0}, {0x73, 0x36, 0x00, 0x00}}},\n    {{{   -23,    107,     19}, 0, {     0,      0}, {0x73, 0x36, 0x00, 0x00}}},\n    {{{    -1,     60,    -20}, 0, {     0,      0}, {0x73, 0x36, 0x00, 0x00}}},\n    {{{   -23,    107,     19}, 0, {     0,      0}, {0x73, 0x36, 0x00, 0x00}}},\n    {{{    -1,     60,     19}, 0, {     0,      0}, {0x73, 0x36, 0x00, 0x00}}},\n    {{{   -23,    107,    -20}, 0, {     0,      0}, {0x02, 0x7f, 0x00, 0x00}}},\n    {{{   -64,    108,    -20}, 0, {     0,      0}, {0x02, 0x7f, 0x00, 0x00}}},\n    {{{   -64,    108,     19}, 0, {     0,      0}, {0x02, 0x7f, 0x00, 0x00}}},\n};\n\n// 0x070035A8 - 0x07003698\nstatic const Vtx debug_level_select_vertex_070035A8[] = {\n    {{{   -23,    107,    -20}, 0, {     0,      0}, {0x02, 0x7f, 0x00, 0x00}}},\n    {{{   -64,    108,     19}, 0, {     0,      0}, {0x02, 0x7f, 0x00, 0x00}}},\n    {{{   -23,    107,     19}, 0, {     0,      0}, {0x02, 0x7f, 0x00, 0x00}}},\n    {{{   -64,    108,    -20}, 0, {     0,      0}, {0x82, 0x18, 0x00, 0x00}}},\n    {{{  -101,    -85,    -20}, 0, {     0,      0}, {0x82, 0x18, 0x00, 0x00}}},\n    {{{  -101,    -85,     19}, 0, {     0,      0}, {0x82, 0x18, 0x00, 0x00}}},\n    {{{   -64,    108,    -20}, 0, {     0,      0}, {0x82, 0x18, 0x00, 0x00}}},\n    {{{  -101,    -85,     19}, 0, {     0,      0}, {0x82, 0x18, 0x00, 0x00}}},\n    {{{   -64,    108,     19}, 0, {     0,      0}, {0x82, 0x18, 0x00, 0x00}}},\n    {{{  -101,    -85,    -20}, 0, {     0,      0}, {0xe5, 0x82, 0x00, 0x00}}},\n    {{{   -40,    -98,    -20}, 0, {     0,      0}, {0xe5, 0x82, 0x00, 0x00}}},\n    {{{   -40,    -98,     19}, 0, {     0,      0}, {0xe5, 0x82, 0x00, 0x00}}},\n    {{{  -101,    -85,    -20}, 0, {     0,      0}, {0xe5, 0x82, 0x00, 0x00}}},\n    {{{   -40,    -98,     19}, 0, {     0,      0}, {0xe5, 0x82, 0x00, 0x00}}},\n    {{{  -101,    -85,     19}, 0, {     0,      0}, {0xe5, 0x82, 0x00, 0x00}}},\n};\n\n// 0x07003698 - 0x07003788\nstatic const Vtx debug_level_select_vertex_07003698[] = {\n    {{{   -40,    -98,    -20}, 0, {     0,      0}, {0x7f, 0xf5, 0x00, 0x00}}},\n    {{{   -32,      9,    -20}, 0, {     0,      0}, {0x7f, 0xf5, 0x00, 0x00}}},\n    {{{   -32,      9,     19}, 0, {     0,      0}, {0x7f, 0xf5, 0x00, 0x00}}},\n    {{{   -40,    -98,    -20}, 0, {     0,      0}, {0x7f, 0xf5, 0x00, 0x00}}},\n    {{{   -32,      9,     19}, 0, {     0,      0}, {0x7f, 0xf5, 0x00, 0x00}}},\n    {{{   -40,    -98,     19}, 0, {     0,      0}, {0x7f, 0xf5, 0x00, 0x00}}},\n    {{{   -32,      9,    -20}, 0, {     0,      0}, {0x8e, 0xc4, 0x00, 0x00}}},\n    {{{    -2,    -46,    -20}, 0, {     0,      0}, {0x8e, 0xc4, 0x00, 0x00}}},\n    {{{    -2,    -46,     19}, 0, {     0,      0}, {0x8e, 0xc4, 0x00, 0x00}}},\n    {{{   -32,      9,    -20}, 0, {     0,      0}, {0x8e, 0xc4, 0x00, 0x00}}},\n    {{{    -2,    -46,     19}, 0, {     0,      0}, {0x8e, 0xc4, 0x00, 0x00}}},\n    {{{   -32,      9,     19}, 0, {     0,      0}, {0x8e, 0xc4, 0x00, 0x00}}},\n    {{{    -2,    -46,    -20}, 0, {     0,      0}, {0x71, 0xc4, 0x00, 0x00}}},\n    {{{    29,     14,    -20}, 0, {     0,      0}, {0x71, 0xc4, 0x00, 0x00}}},\n    {{{    29,     14,     19}, 0, {     0,      0}, {0x71, 0xc4, 0x00, 0x00}}},\n};\n\n// 0x07003788 - 0x07003878\nstatic const Vtx debug_level_select_vertex_07003788[] = {\n    {{{    -2,    -46,    -20}, 0, {     0,      0}, {0x71, 0xc4, 0x00, 0x00}}},\n    {{{    29,     14,     19}, 0, {     0,      0}, {0x71, 0xc4, 0x00, 0x00}}},\n    {{{    -2,    -46,     19}, 0, {     0,      0}, {0x71, 0xc4, 0x00, 0x00}}},\n    {{{    29,     14,    -20}, 0, {     0,      0}, {0x92, 0xbe, 0x00, 0x00}}},\n    {{{    63,    -41,    -20}, 0, {     0,      0}, {0x80, 0xf8, 0x00, 0x00}}},\n    {{{    63,    -41,     19}, 0, {     0,      0}, {0x85, 0xd9, 0x00, 0x00}}},\n    {{{    29,     14,    -20}, 0, {     0,      0}, {0x92, 0xbe, 0x00, 0x00}}},\n    {{{    63,    -41,     19}, 0, {     0,      0}, {0x85, 0xd9, 0x00, 0x00}}},\n    {{{    29,     14,     19}, 0, {     0,      0}, {0x92, 0xbe, 0x00, 0x00}}},\n    {{{    63,    -41,    -20}, 0, {     0,      0}, {0x80, 0xf8, 0x00, 0x00}}},\n    {{{    54,    -93,    -20}, 0, {     0,      0}, {0x82, 0x16, 0x00, 0x00}}},\n    {{{    54,    -93,     19}, 0, {     0,      0}, {0x82, 0x16, 0x00, 0x00}}},\n    {{{    63,    -41,    -20}, 0, {     0,      0}, {0x80, 0xf8, 0x00, 0x00}}},\n    {{{    54,    -93,     19}, 0, {     0,      0}, {0x82, 0x16, 0x00, 0x00}}},\n    {{{    63,    -41,     19}, 0, {     0,      0}, {0x85, 0xd9, 0x00, 0x00}}},\n};\n\n// 0x07003878 - 0x07003968\nstatic const Vtx debug_level_select_vertex_07003878[] = {\n    {{{    54,    -93,    -20}, 0, {     0,      0}, {0x38, 0x8d, 0x00, 0x00}}},\n    {{{   119,    -61,    -20}, 0, {     0,      0}, {0x38, 0x8d, 0x00, 0x00}}},\n    {{{   119,    -61,     19}, 0, {     0,      0}, {0x38, 0x8d, 0x00, 0x00}}},\n    {{{    54,    -93,    -20}, 0, {     0,      0}, {0x38, 0x8d, 0x00, 0x00}}},\n    {{{   119,    -61,     19}, 0, {     0,      0}, {0x38, 0x8d, 0x00, 0x00}}},\n    {{{    54,    -93,     19}, 0, {     0,      0}, {0x38, 0x8d, 0x00, 0x00}}},\n    {{{   119,    -61,    -20}, 0, {     0,      0}, {0x78, 0x2b, 0x00, 0x00}}},\n    {{{    64,     89,    -20}, 0, {     0,      0}, {0x4d, 0x65, 0x00, 0x00}}},\n    {{{    64,     89,     19}, 0, {     0,      0}, {0x68, 0x4a, 0x00, 0x00}}},\n    {{{   119,    -61,    -20}, 0, {     0,      0}, {0x78, 0x2b, 0x00, 0x00}}},\n    {{{    64,     89,     19}, 0, {     0,      0}, {0x68, 0x4a, 0x00, 0x00}}},\n    {{{   119,    -61,     19}, 0, {     0,      0}, {0x78, 0x2b, 0x00, 0x00}}},\n    {{{    64,     89,    -20}, 0, {     0,      0}, {0x4d, 0x65, 0x00, 0x00}}},\n    {{{    17,    107,    -20}, 0, {     0,      0}, {0x2f, 0x76, 0x00, 0x00}}},\n    {{{    17,    107,     19}, 0, {     0,      0}, {0x2f, 0x76, 0x00, 0x00}}},\n};\n\n// 0x07003968 - 0x07003A58\nstatic const Vtx debug_level_select_vertex_07003968[] = {\n    {{{    64,     89,    -20}, 0, {     0,      0}, {0x4d, 0x65, 0x00, 0x00}}},\n    {{{    17,    107,     19}, 0, {     0,      0}, {0x2f, 0x76, 0x00, 0x00}}},\n    {{{    64,     89,     19}, 0, {     0,      0}, {0x68, 0x4a, 0x00, 0x00}}},\n    {{{    17,    107,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    64,     89,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   119,    -61,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   119,    -61,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    54,    -93,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    63,    -41,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   119,    -61,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    63,    -41,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    29,     14,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    29,     14,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -2,    -46,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -32,      9,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n};\n\n// 0x07003A58 - 0x07003B48\nstatic const Vtx debug_level_select_vertex_07003A58[] = {\n    {{{   -32,      9,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -40,    -98,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{  -101,    -85,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -32,      9,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{  -101,    -85,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -64,    108,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -32,      9,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -64,    108,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -23,    107,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -32,      9,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -23,    107,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -1,     60,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -1,     60,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    17,    107,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   119,    -61,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n};\n\n// 0x07003B48 - 0x07003C38\nstatic const Vtx debug_level_select_vertex_07003B48[] = {\n    {{{    -1,     60,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   119,    -61,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    29,     14,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -1,     60,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    29,     14,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -32,      9,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -1,     60,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -23,    107,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -64,    108,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -1,     60,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -64,    108,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{  -101,    -85,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{  -101,    -85,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -40,    -98,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -32,      9,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n};\n\n// 0x07003C38 - 0x07003D28\nstatic const Vtx debug_level_select_vertex_07003C38[] = {\n    {{{   -32,      9,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -2,    -46,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    29,     14,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    63,    -41,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    54,    -93,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   119,    -61,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    63,    -41,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   119,    -61,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    64,     89,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    63,    -41,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    64,     89,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    17,    107,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -1,     60,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{  -101,    -85,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -32,      9,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n};\n\n// 0x07003D28 - 0x07003DB8\nstatic const Vtx debug_level_select_vertex_07003D28[] = {\n    {{{    -1,     60,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -32,      9,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    29,     14,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    29,     14,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    63,    -41,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    17,    107,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    29,     14,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    17,    107,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -1,     60,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n};\n\n// 0x07003DB8 - 0x07003FB0\nconst Gfx debug_level_select_dl_07003DB8[] = {\n    gsDPPipeSync(),\n    gsSPSetLights1(debug_level_select_lights_070034A0),\n    gsSPVertex(debug_level_select_vertex_070034B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_070035A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07003698, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07003788, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07003878, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07003968, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07003A58, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07003B48, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07003C38, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07003D28, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07003FB0 - 0x07003FC8\nstatic const Lights1 debug_level_select_lights_07003FB0 = gdSPDefLights1(\n    0x00, 0x00, 0x7f,\n    0x00, 0x00, 0xff, 0x00, 0x00, 0x50\n);\n\n// 0x07003FC8 - 0x070040B8\nstatic const Vtx debug_level_select_vertex_07003FC8[] = {\n    {{{   -15,     83,    -20}, 0, {     0,      0}, {0x93, 0x44, 0x00, 0x00}}},\n    {{{  -105,    -60,    -20}, 0, {     0,      0}, {0x93, 0x44, 0x00, 0x00}}},\n    {{{  -105,    -60,     19}, 0, {     0,      0}, {0x93, 0x44, 0x00, 0x00}}},\n    {{{   -15,     83,    -20}, 0, {     0,      0}, {0x93, 0x44, 0x00, 0x00}}},\n    {{{  -105,    -60,     19}, 0, {     0,      0}, {0x93, 0x44, 0x00, 0x00}}},\n    {{{   -15,     83,     19}, 0, {     0,      0}, {0x93, 0x44, 0x00, 0x00}}},\n    {{{  -105,    -60,    -20}, 0, {     0,      0}, {0xe5, 0x82, 0x00, 0x00}}},\n    {{{   -48,    -72,    -20}, 0, {     0,      0}, {0xe5, 0x82, 0x00, 0x00}}},\n    {{{   -48,    -72,     19}, 0, {     0,      0}, {0xe5, 0x82, 0x00, 0x00}}},\n    {{{  -105,    -60,    -20}, 0, {     0,      0}, {0xe5, 0x82, 0x00, 0x00}}},\n    {{{   -48,    -72,     19}, 0, {     0,      0}, {0xe5, 0x82, 0x00, 0x00}}},\n    {{{  -105,    -60,     19}, 0, {     0,      0}, {0xe5, 0x82, 0x00, 0x00}}},\n    {{{   -48,    -72,    -20}, 0, {     0,      0}, {0x70, 0xc2, 0x00, 0x00}}},\n    {{{   -35,    -47,    -20}, 0, {     0,      0}, {0x70, 0xc2, 0x00, 0x00}}},\n    {{{   -35,    -47,     19}, 0, {     0,      0}, {0x70, 0xc2, 0x00, 0x00}}},\n};\n\n// 0x070040B8 - 0x070041A8\nstatic const Vtx debug_level_select_vertex_070040B8[] = {\n    {{{   -48,    -72,    -20}, 0, {     0,      0}, {0x70, 0xc2, 0x00, 0x00}}},\n    {{{   -35,    -47,     19}, 0, {     0,      0}, {0x70, 0xc2, 0x00, 0x00}}},\n    {{{   -48,    -72,     19}, 0, {     0,      0}, {0x70, 0xc2, 0x00, 0x00}}},\n    {{{   -35,    -47,    -20}, 0, {     0,      0}, {0xdd, 0x84, 0x00, 0x00}}},\n    {{{    26,    -65,    -20}, 0, {     0,      0}, {0x96, 0xb7, 0x00, 0x00}}},\n    {{{    26,    -65,     19}, 0, {     0,      0}, {0xb7, 0x96, 0x00, 0x00}}},\n    {{{   -35,    -47,    -20}, 0, {     0,      0}, {0xdd, 0x84, 0x00, 0x00}}},\n    {{{    26,    -65,     19}, 0, {     0,      0}, {0xb7, 0x96, 0x00, 0x00}}},\n    {{{   -35,    -47,     19}, 0, {     0,      0}, {0xdd, 0x84, 0x00, 0x00}}},\n    {{{    26,    -65,    -20}, 0, {     0,      0}, {0x96, 0xb7, 0x00, 0x00}}},\n    {{{    33,    -90,    -20}, 0, {     0,      0}, {0x84, 0xdd, 0x00, 0x00}}},\n    {{{    33,    -90,     19}, 0, {     0,      0}, {0x84, 0xdd, 0x00, 0x00}}},\n    {{{    26,    -65,    -20}, 0, {     0,      0}, {0x96, 0xb7, 0x00, 0x00}}},\n    {{{    33,    -90,     19}, 0, {     0,      0}, {0x84, 0xdd, 0x00, 0x00}}},\n    {{{    26,    -65,     19}, 0, {     0,      0}, {0xb7, 0x96, 0x00, 0x00}}},\n};\n\n// 0x070041A8 - 0x07004298\nstatic const Vtx debug_level_select_vertex_070041A8[] = {\n    {{{    33,    -90,    -20}, 0, {     0,      0}, {0x01, 0x80, 0x00, 0x00}}},\n    {{{    89,    -89,    -20}, 0, {     0,      0}, {0x01, 0x80, 0x00, 0x00}}},\n    {{{    89,    -89,     19}, 0, {     0,      0}, {0x01, 0x80, 0x00, 0x00}}},\n    {{{    33,    -90,    -20}, 0, {     0,      0}, {0x01, 0x80, 0x00, 0x00}}},\n    {{{    89,    -89,     19}, 0, {     0,      0}, {0x01, 0x80, 0x00, 0x00}}},\n    {{{    33,    -90,     19}, 0, {     0,      0}, {0x01, 0x80, 0x00, 0x00}}},\n    {{{    89,    -89,    -20}, 0, {     0,      0}, {0x78, 0x2c, 0x00, 0x00}}},\n    {{{    28,     74,    -20}, 0, {     0,      0}, {0x3f, 0x6e, 0x00, 0x00}}},\n    {{{    28,     74,     19}, 0, {     0,      0}, {0x63, 0x50, 0x00, 0x00}}},\n    {{{    89,    -89,    -20}, 0, {     0,      0}, {0x78, 0x2c, 0x00, 0x00}}},\n    {{{    28,     74,     19}, 0, {     0,      0}, {0x63, 0x50, 0x00, 0x00}}},\n    {{{    89,    -89,     19}, 0, {     0,      0}, {0x78, 0x2c, 0x00, 0x00}}},\n    {{{    28,     74,    -20}, 0, {     0,      0}, {0x3f, 0x6e, 0x00, 0x00}}},\n    {{{   -15,     83,    -20}, 0, {     0,      0}, {0x18, 0x7d, 0x00, 0x00}}},\n    {{{   -15,     83,     19}, 0, {     0,      0}, {0x18, 0x7d, 0x00, 0x00}}},\n};\n\n// 0x07004298 - 0x07004388\nstatic const Vtx debug_level_select_vertex_07004298[] = {\n    {{{    28,     74,    -20}, 0, {     0,      0}, {0x3f, 0x6e, 0x00, 0x00}}},\n    {{{   -15,     83,     19}, 0, {     0,      0}, {0x18, 0x7d, 0x00, 0x00}}},\n    {{{    28,     74,     19}, 0, {     0,      0}, {0x63, 0x50, 0x00, 0x00}}},\n    {{{   -22,    -19,    -20}, 0, {     0,      0}, {0x79, 0xd8, 0x00, 0x00}}},\n    {{{    -6,     29,    -20}, 0, {     0,      0}, {0x79, 0xd8, 0x00, 0x00}}},\n    {{{    -6,     29,     19}, 0, {     0,      0}, {0x79, 0xd8, 0x00, 0x00}}},\n    {{{   -22,    -19,    -20}, 0, {     0,      0}, {0x79, 0xd8, 0x00, 0x00}}},\n    {{{    -6,     29,     19}, 0, {     0,      0}, {0x79, 0xd8, 0x00, 0x00}}},\n    {{{   -22,    -19,     19}, 0, {     0,      0}, {0x79, 0xd8, 0x00, 0x00}}},\n    {{{    -6,     29,    -20}, 0, {     0,      0}, {0xf9, 0x80, 0x00, 0x00}}},\n    {{{     8,     28,    -20}, 0, {     0,      0}, {0xf9, 0x80, 0x00, 0x00}}},\n    {{{     8,     28,     19}, 0, {     0,      0}, {0xf9, 0x80, 0x00, 0x00}}},\n    {{{    -6,     29,    -20}, 0, {     0,      0}, {0xf9, 0x80, 0x00, 0x00}}},\n    {{{     8,     28,     19}, 0, {     0,      0}, {0xf9, 0x80, 0x00, 0x00}}},\n    {{{    -6,     29,     19}, 0, {     0,      0}, {0xf9, 0x80, 0x00, 0x00}}},\n};\n\n// 0x07004388 - 0x07004478\nstatic const Vtx debug_level_select_vertex_07004388[] = {\n    {{{     8,     28,    -20}, 0, {     0,      0}, {0x81, 0xed, 0x00, 0x00}}},\n    {{{    15,    -20,    -20}, 0, {     0,      0}, {0x81, 0xed, 0x00, 0x00}}},\n    {{{    15,    -20,     19}, 0, {     0,      0}, {0x81, 0xed, 0x00, 0x00}}},\n    {{{     8,     28,    -20}, 0, {     0,      0}, {0x81, 0xed, 0x00, 0x00}}},\n    {{{    15,    -20,     19}, 0, {     0,      0}, {0x81, 0xed, 0x00, 0x00}}},\n    {{{     8,     28,     19}, 0, {     0,      0}, {0x81, 0xed, 0x00, 0x00}}},\n    {{{    15,    -20,    -20}, 0, {     0,      0}, {0x02, 0x7f, 0x00, 0x00}}},\n    {{{   -22,    -19,    -20}, 0, {     0,      0}, {0x02, 0x7f, 0x00, 0x00}}},\n    {{{   -22,    -19,     19}, 0, {     0,      0}, {0x02, 0x7f, 0x00, 0x00}}},\n    {{{    15,    -20,    -20}, 0, {     0,      0}, {0x02, 0x7f, 0x00, 0x00}}},\n    {{{   -22,    -19,     19}, 0, {     0,      0}, {0x02, 0x7f, 0x00, 0x00}}},\n    {{{    15,    -20,     19}, 0, {     0,      0}, {0x02, 0x7f, 0x00, 0x00}}},\n    {{{    -6,     29,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -22,    -19,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -15,     83,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n};\n\n// 0x07004478 - 0x07004568\nstatic const Vtx debug_level_select_vertex_07004478[] = {\n    {{{    -6,     29,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -15,     83,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    28,     74,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    28,     74,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    89,    -89,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    33,    -90,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    28,     74,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    33,    -90,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    26,    -65,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -35,    -47,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -48,    -72,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{  -105,    -60,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -35,    -47,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{  -105,    -60,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -15,     83,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n};\n\n// 0x07004568 - 0x07004658\nstatic const Vtx debug_level_select_vertex_07004568[] = {\n    {{{   -35,    -47,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -15,     83,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -22,    -19,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -35,    -47,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -22,    -19,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    15,    -20,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{     8,     28,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -6,     29,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    28,     74,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{     8,     28,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    28,     74,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    26,    -65,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    26,    -65,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -35,    -47,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    15,    -20,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n};\n\n// 0x07004658 - 0x07004748\nstatic const Vtx debug_level_select_vertex_07004658[] = {\n    {{{    26,    -65,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    15,    -20,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{     8,     28,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -22,    -19,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -6,     29,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{  -105,    -60,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -22,    -19,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{  -105,    -60,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -48,    -72,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -22,    -19,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -48,    -72,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -35,    -47,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -22,    -19,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -35,    -47,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    26,    -65,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n};\n\n// 0x07004748 - 0x07004838\nstatic const Vtx debug_level_select_vertex_07004748[] = {\n    {{{    26,    -65,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    33,    -90,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    89,    -89,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    26,    -65,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    89,    -89,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    28,     74,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    28,     74,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -15,     83,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{  -105,    -60,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    28,     74,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{  -105,    -60,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -6,     29,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    28,     74,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -6,     29,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{     8,     28,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n};\n\n// 0x07004838 - 0x070048C8\nstatic const Vtx debug_level_select_vertex_07004838[] = {\n    {{{    28,     74,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{     8,     28,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    15,    -20,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    15,    -20,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -22,    -19,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    26,    -65,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    15,    -20,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    26,    -65,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    28,     74,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n};\n\n// 0x070048C8 - 0x07004AC0\nconst Gfx debug_level_select_dl_070048C8[] = {\n    gsDPPipeSync(),\n    gsSPSetLights1(debug_level_select_lights_07003FB0),\n    gsSPVertex(debug_level_select_vertex_07003FC8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_070040B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_070041A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07004298, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07004388, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07004478, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07004568, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07004658, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07004748, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07004838, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07004AC0 - 0x07004AD8\nstatic const Lights1 debug_level_select_lights_07004AC0 = gdSPDefLights1(\n    0x00, 0x59, 0x00,\n    0x00, 0xb2, 0x00, 0x00, 0x00, 0x50\n);\n\n// 0x07004AD8 - 0x07004BC8\nstatic const Vtx debug_level_select_vertex_07004AD8[] = {\n    {{{   -60,     95,    -20}, 0, {     0,      0}, {0x80, 0x00, 0x00, 0x00}}},\n    {{{   -61,    -92,    -20}, 0, {     0,      0}, {0x80, 0x00, 0x00, 0x00}}},\n    {{{   -61,    -92,     19}, 0, {     0,      0}, {0x80, 0x00, 0x00, 0x00}}},\n    {{{   -60,     95,    -20}, 0, {     0,      0}, {0x80, 0x00, 0x00, 0x00}}},\n    {{{   -61,    -92,     19}, 0, {     0,      0}, {0x80, 0x00, 0x00, 0x00}}},\n    {{{   -60,     95,     19}, 0, {     0,      0}, {0x80, 0x00, 0x00, 0x00}}},\n    {{{   -61,    -92,    -20}, 0, {     0,      0}, {0xfe, 0x80, 0x00, 0x00}}},\n    {{{   -17,    -92,    -20}, 0, {     0,      0}, {0xfe, 0x80, 0x00, 0x00}}},\n    {{{   -17,    -92,     19}, 0, {     0,      0}, {0xfe, 0x80, 0x00, 0x00}}},\n    {{{   -61,    -92,    -20}, 0, {     0,      0}, {0xfe, 0x80, 0x00, 0x00}}},\n    {{{   -17,    -92,     19}, 0, {     0,      0}, {0xfe, 0x80, 0x00, 0x00}}},\n    {{{   -61,    -92,     19}, 0, {     0,      0}, {0xfe, 0x80, 0x00, 0x00}}},\n    {{{   -17,    -92,    -20}, 0, {     0,      0}, {0x7f, 0xff, 0x00, 0x00}}},\n    {{{   -17,    -40,    -20}, 0, {     0,      0}, {0x7f, 0xff, 0x00, 0x00}}},\n    {{{   -17,    -40,     19}, 0, {     0,      0}, {0x7f, 0xff, 0x00, 0x00}}},\n};\n\n// 0x07004BC8 - 0x07004CB8\nstatic const Vtx debug_level_select_vertex_07004BC8[] = {\n    {{{   -17,    -92,    -20}, 0, {     0,      0}, {0x7f, 0xff, 0x00, 0x00}}},\n    {{{   -17,    -40,     19}, 0, {     0,      0}, {0x7f, 0xff, 0x00, 0x00}}},\n    {{{   -17,    -92,     19}, 0, {     0,      0}, {0x7f, 0xff, 0x00, 0x00}}},\n    {{{   -17,    -40,    -20}, 0, {     0,      0}, {0xa7, 0xa3, 0x00, 0x00}}},\n    {{{    40,    -95,    -20}, 0, {     0,      0}, {0xa7, 0xa3, 0x00, 0x00}}},\n    {{{    40,    -95,     19}, 0, {     0,      0}, {0xa7, 0xa3, 0x00, 0x00}}},\n    {{{   -17,    -40,    -20}, 0, {     0,      0}, {0xa7, 0xa3, 0x00, 0x00}}},\n    {{{    40,    -95,     19}, 0, {     0,      0}, {0xa7, 0xa3, 0x00, 0x00}}},\n    {{{   -17,    -40,     19}, 0, {     0,      0}, {0xa7, 0xa3, 0x00, 0x00}}},\n    {{{    40,    -95,    -20}, 0, {     0,      0}, {0x52, 0x9d, 0x00, 0x00}}},\n    {{{    85,    -57,    -20}, 0, {     0,      0}, {0x52, 0x9d, 0x00, 0x00}}},\n    {{{    85,    -57,     19}, 0, {     0,      0}, {0x52, 0x9d, 0x00, 0x00}}},\n    {{{    40,    -95,    -20}, 0, {     0,      0}, {0x52, 0x9d, 0x00, 0x00}}},\n    {{{    85,    -57,     19}, 0, {     0,      0}, {0x52, 0x9d, 0x00, 0x00}}},\n    {{{    40,    -95,     19}, 0, {     0,      0}, {0x52, 0x9d, 0x00, 0x00}}},\n};\n\n// 0x07004CB8 - 0x07004DA8\nstatic const Vtx debug_level_select_vertex_07004CB8[] = {\n    {{{    85,    -57,    -20}, 0, {     0,      0}, {0x4b, 0x67, 0x00, 0x00}}},\n    {{{    35,    -20,    -20}, 0, {     0,      0}, {0x4b, 0x67, 0x00, 0x00}}},\n    {{{    35,    -20,     19}, 0, {     0,      0}, {0x4b, 0x67, 0x00, 0x00}}},\n    {{{    85,    -57,    -20}, 0, {     0,      0}, {0x4b, 0x67, 0x00, 0x00}}},\n    {{{    35,    -20,     19}, 0, {     0,      0}, {0x4b, 0x67, 0x00, 0x00}}},\n    {{{    85,    -57,     19}, 0, {     0,      0}, {0x4b, 0x67, 0x00, 0x00}}},\n    {{{    35,    -20,    -20}, 0, {     0,      0}, {0x46, 0x95, 0x00, 0x00}}},\n    {{{    64,     -1,    -20}, 0, {     0,      0}, {0x78, 0xd4, 0x00, 0x00}}},\n    {{{    64,     -1,     19}, 0, {     0,      0}, {0x63, 0xaf, 0x00, 0x00}}},\n    {{{    35,    -20,    -20}, 0, {     0,      0}, {0x46, 0x95, 0x00, 0x00}}},\n    {{{    64,     -1,     19}, 0, {     0,      0}, {0x63, 0xaf, 0x00, 0x00}}},\n    {{{    35,    -20,     19}, 0, {     0,      0}, {0x46, 0x95, 0x00, 0x00}}},\n    {{{    64,     -1,    -20}, 0, {     0,      0}, {0x78, 0xd4, 0x00, 0x00}}},\n    {{{    66,     58,    -20}, 0, {     0,      0}, {0x7f, 0xfb, 0x00, 0x00}}},\n    {{{    66,     58,     19}, 0, {     0,      0}, {0x7f, 0xfb, 0x00, 0x00}}},\n};\n\n// 0x07004DA8 - 0x07004E98\nstatic const Vtx debug_level_select_vertex_07004DA8[] = {\n    {{{    64,     -1,    -20}, 0, {     0,      0}, {0x78, 0xd4, 0x00, 0x00}}},\n    {{{    66,     58,     19}, 0, {     0,      0}, {0x7f, 0xfb, 0x00, 0x00}}},\n    {{{    64,     -1,     19}, 0, {     0,      0}, {0x63, 0xaf, 0x00, 0x00}}},\n    {{{    66,     58,    -20}, 0, {     0,      0}, {0x43, 0x6c, 0x00, 0x00}}},\n    {{{     6,     95,    -20}, 0, {     0,      0}, {0x17, 0x7d, 0x00, 0x00}}},\n    {{{     6,     95,     19}, 0, {     0,      0}, {0x2e, 0x77, 0x00, 0x00}}},\n    {{{    66,     58,    -20}, 0, {     0,      0}, {0x43, 0x6c, 0x00, 0x00}}},\n    {{{     6,     95,     19}, 0, {     0,      0}, {0x2e, 0x77, 0x00, 0x00}}},\n    {{{    66,     58,     19}, 0, {     0,      0}, {0x43, 0x6c, 0x00, 0x00}}},\n    {{{     6,     95,    -20}, 0, {     0,      0}, {0x17, 0x7d, 0x00, 0x00}}},\n    {{{   -60,     95,    -20}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   -60,     95,     19}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{     6,     95,    -20}, 0, {     0,      0}, {0x17, 0x7d, 0x00, 0x00}}},\n    {{{   -60,     95,     19}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{     6,     95,     19}, 0, {     0,      0}, {0x2e, 0x77, 0x00, 0x00}}},\n};\n\n// 0x07004E98 - 0x07004F88\nstatic const Vtx debug_level_select_vertex_07004E98[] = {\n    {{{   -16,     -1,    -20}, 0, {     0,      0}, {0x7c, 0x1e, 0x00, 0x00}}},\n    {{{   -12,     50,    -20}, 0, {     0,      0}, {0x7f, 0xf8, 0x00, 0x00}}},\n    {{{   -12,     50,     19}, 0, {     0,      0}, {0x7f, 0xf8, 0x00, 0x00}}},\n    {{{   -16,     -1,    -20}, 0, {     0,      0}, {0x7c, 0x1e, 0x00, 0x00}}},\n    {{{   -12,     50,     19}, 0, {     0,      0}, {0x7f, 0xf8, 0x00, 0x00}}},\n    {{{   -16,     -1,     19}, 0, {     0,      0}, {0x6b, 0x45, 0x00, 0x00}}},\n    {{{   -12,     50,    -20}, 0, {     0,      0}, {0xb2, 0x9a, 0x00, 0x00}}},\n    {{{    20,     24,    -20}, 0, {     0,      0}, {0xb2, 0x9a, 0x00, 0x00}}},\n    {{{    20,     24,     19}, 0, {     0,      0}, {0xb2, 0x9a, 0x00, 0x00}}},\n    {{{   -12,     50,    -20}, 0, {     0,      0}, {0xb2, 0x9a, 0x00, 0x00}}},\n    {{{    20,     24,     19}, 0, {     0,      0}, {0xb2, 0x9a, 0x00, 0x00}}},\n    {{{   -12,     50,     19}, 0, {     0,      0}, {0xb2, 0x9a, 0x00, 0x00}}},\n    {{{    20,     24,    -20}, 0, {     0,      0}, {0x90, 0x3f, 0x00, 0x00}}},\n    {{{    -1,    -14,    -20}, 0, {     0,      0}, {0x90, 0x3f, 0x00, 0x00}}},\n    {{{    -1,    -14,     19}, 0, {     0,      0}, {0x90, 0x3f, 0x00, 0x00}}},\n};\n\n// 0x07004F88 - 0x07005078\nstatic const Vtx debug_level_select_vertex_07004F88[] = {\n    {{{    20,     24,    -20}, 0, {     0,      0}, {0x90, 0x3f, 0x00, 0x00}}},\n    {{{    -1,    -14,     19}, 0, {     0,      0}, {0x90, 0x3f, 0x00, 0x00}}},\n    {{{    20,     24,     19}, 0, {     0,      0}, {0x90, 0x3f, 0x00, 0x00}}},\n    {{{    -1,    -14,    -20}, 0, {     0,      0}, {0x52, 0x61, 0x00, 0x00}}},\n    {{{   -16,     -1,    -20}, 0, {     0,      0}, {0x7c, 0x1e, 0x00, 0x00}}},\n    {{{   -16,     -1,     19}, 0, {     0,      0}, {0x6b, 0x45, 0x00, 0x00}}},\n    {{{    -1,    -14,    -20}, 0, {     0,      0}, {0x52, 0x61, 0x00, 0x00}}},\n    {{{   -16,     -1,     19}, 0, {     0,      0}, {0x6b, 0x45, 0x00, 0x00}}},\n    {{{    -1,    -14,     19}, 0, {     0,      0}, {0x52, 0x61, 0x00, 0x00}}},\n    {{{   -12,     50,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -16,     -1,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -60,     95,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -12,     50,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -60,     95,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{     6,     95,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n};\n\n// 0x07005078 - 0x07005168\nstatic const Vtx debug_level_select_vertex_07005078[] = {\n    {{{   -12,     50,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{     6,     95,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    66,     58,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -12,     50,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    66,     58,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    64,     -1,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    35,    -20,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    85,    -57,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    40,    -95,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    35,    -20,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    40,    -95,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -17,    -40,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -17,    -40,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -17,    -92,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -61,    -92,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n};\n\n// 0x07005168 - 0x07005258\nstatic const Vtx debug_level_select_vertex_07005168[] = {\n    {{{   -17,    -40,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -61,    -92,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -60,     95,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -17,    -40,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -60,     95,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -16,     -1,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -17,    -40,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -16,     -1,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -1,    -14,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    20,     24,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -12,     50,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    64,     -1,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    20,     24,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    64,     -1,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    35,    -20,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n};\n\n// 0x07005258 - 0x07005348\nstatic const Vtx debug_level_select_vertex_07005258[] = {\n    {{{    35,    -20,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -17,    -40,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -1,    -14,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    35,    -20,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    -1,    -14,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    20,     24,    -20}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -16,     -1,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -12,     50,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -61,    -92,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -61,    -92,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -17,    -92,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -17,    -40,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -17,    -40,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    40,    -95,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    85,    -57,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n};\n\n// 0x07005348 - 0x07005438\nstatic const Vtx debug_level_select_vertex_07005348[] = {\n    {{{   -17,    -40,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    85,    -57,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    35,    -20,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -17,    -40,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    35,    -20,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    64,     -1,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -17,    -40,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    64,     -1,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    66,     58,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    66,     58,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{     6,     95,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -60,     95,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -60,     95,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -61,    -92,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -12,     50,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n};\n\n// 0x07005438 - 0x07005528\nstatic const Vtx debug_level_select_vertex_07005438[] = {\n    {{{   -60,     95,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -12,     50,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    20,     24,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -1,    -14,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -16,     -1,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -61,    -92,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -1,    -14,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -61,    -92,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -17,    -40,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -1,    -14,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -17,    -40,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    66,     58,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    66,     58,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -60,     95,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    20,     24,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n};\n\n// 0x07005528 - 0x07005558\nstatic const Vtx debug_level_select_vertex_07005528[] = {\n    {{{    66,     58,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    20,     24,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    -1,    -14,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n};\n\n// 0x07005558 - 0x070057A0\nconst Gfx debug_level_select_dl_07005558[] = {\n    gsDPPipeSync(),\n    gsSPSetLights1(debug_level_select_lights_07004AC0),\n    gsSPVertex(debug_level_select_vertex_07004AD8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07004BC8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07004CB8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07004DA8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07004E98, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07004F88, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07005078, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07005168, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07005258, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07005348, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07005438, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07005528, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070057A0 - 0x070057B8\nstatic const Lights1 debug_level_select_lights_070057A0 = gdSPDefLights1(\n    0x7f, 0x00, 0x00,\n    0xff, 0x00, 0x00, 0x00, 0x00, 0x50\n);\n\n// 0x070057B8 - 0x070058A8\nstatic const Vtx debug_level_select_vertex_070057B8[] = {\n    {{{   -32,    103,    -19}, 0, {     0,      0}, {0x80, 0xfa, 0x00, 0x00}}},\n    {{{   -22,   -107,    -19}, 0, {     0,      0}, {0x80, 0xfa, 0x00, 0x00}}},\n    {{{   -22,   -107,     20}, 0, {     0,      0}, {0x80, 0xfa, 0x00, 0x00}}},\n    {{{   -32,    103,    -19}, 0, {     0,      0}, {0x80, 0xfa, 0x00, 0x00}}},\n    {{{   -22,   -107,     20}, 0, {     0,      0}, {0x80, 0xfa, 0x00, 0x00}}},\n    {{{   -32,    103,     20}, 0, {     0,      0}, {0x80, 0xfa, 0x00, 0x00}}},\n    {{{   -22,   -107,    -19}, 0, {     0,      0}, {0x14, 0x81, 0x00, 0x00}}},\n    {{{    28,    -98,    -19}, 0, {     0,      0}, {0x14, 0x81, 0x00, 0x00}}},\n    {{{    28,    -98,     20}, 0, {     0,      0}, {0x14, 0x81, 0x00, 0x00}}},\n    {{{   -22,   -107,    -19}, 0, {     0,      0}, {0x14, 0x81, 0x00, 0x00}}},\n    {{{    28,    -98,     20}, 0, {     0,      0}, {0x14, 0x81, 0x00, 0x00}}},\n    {{{   -22,   -107,     20}, 0, {     0,      0}, {0x14, 0x81, 0x00, 0x00}}},\n    {{{    28,    -98,    -19}, 0, {     0,      0}, {0x7f, 0x09, 0x00, 0x00}}},\n    {{{    13,    100,    -19}, 0, {     0,      0}, {0x7f, 0x09, 0x00, 0x00}}},\n    {{{    13,    100,     20}, 0, {     0,      0}, {0x7f, 0x09, 0x00, 0x00}}},\n};\n\n// 0x070058A8 - 0x07005998\nstatic const Vtx debug_level_select_vertex_070058A8[] = {\n    {{{    28,    -98,    -19}, 0, {     0,      0}, {0x7f, 0x09, 0x00, 0x00}}},\n    {{{    13,    100,     20}, 0, {     0,      0}, {0x7f, 0x09, 0x00, 0x00}}},\n    {{{    28,    -98,     20}, 0, {     0,      0}, {0x7f, 0x09, 0x00, 0x00}}},\n    {{{    13,    100,    -19}, 0, {     0,      0}, {0x06, 0x7f, 0x00, 0x00}}},\n    {{{   -32,    103,    -19}, 0, {     0,      0}, {0x06, 0x7f, 0x00, 0x00}}},\n    {{{   -32,    103,     20}, 0, {     0,      0}, {0x06, 0x7f, 0x00, 0x00}}},\n    {{{    13,    100,    -19}, 0, {     0,      0}, {0x06, 0x7f, 0x00, 0x00}}},\n    {{{   -32,    103,     20}, 0, {     0,      0}, {0x06, 0x7f, 0x00, 0x00}}},\n    {{{    13,    100,     20}, 0, {     0,      0}, {0x06, 0x7f, 0x00, 0x00}}},\n    {{{   -32,    103,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    13,    100,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    28,    -98,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -32,    103,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    28,    -98,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -22,   -107,    -19}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n};\n\n// 0x07005998 - 0x070059F8\nstatic const Vtx debug_level_select_vertex_07005998[] = {\n    {{{   -22,   -107,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    28,    -98,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    13,    100,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -22,   -107,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    13,    100,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -32,    103,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n};\n\n// 0x070059F8 - 0x07005A98\nconst Gfx debug_level_select_dl_070059F8[] = {\n    gsDPPipeSync(),\n    gsSPSetLights1(debug_level_select_lights_070057A0),\n    gsSPVertex(debug_level_select_vertex_070057B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_070058A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07005998, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07005A98 - 0x07005AB0\nstatic const Lights1 debug_level_select_lights_07005A98 = gdSPDefLights1(\n    0x00, 0x00, 0x7f,\n    0x00, 0x00, 0xff, 0x00, 0x00, 0x50\n);\n\n// 0x07005AB0 - 0x07005BA0\nstatic const Vtx debug_level_select_vertex_07005AB0[] = {\n    {{{    30,     71,    -26}, 0, {     0,      0}, {0x1b, 0x7c, 0x00, 0x00}}},\n    {{{   -30,     68,    -26}, 0, {     0,      0}, {0xc3, 0x71, 0x00, 0x00}}},\n    {{{   -30,     68,     20}, 0, {     0,      0}, {0xde, 0x7b, 0x00, 0x00}}},\n    {{{    30,     71,    -26}, 0, {     0,      0}, {0x1b, 0x7c, 0x00, 0x00}}},\n    {{{   -30,     68,     20}, 0, {     0,      0}, {0xde, 0x7b, 0x00, 0x00}}},\n    {{{    30,     71,     20}, 0, {     0,      0}, {0x3f, 0x6f, 0x00, 0x00}}},\n    {{{   -30,     68,    -26}, 0, {     0,      0}, {0xc3, 0x71, 0x00, 0x00}}},\n    {{{   -72,     33,    -26}, 0, {     0,      0}, {0x84, 0x23, 0x00, 0x00}}},\n    {{{   -72,     33,     20}, 0, {     0,      0}, {0x95, 0x47, 0x00, 0x00}}},\n    {{{   -30,     68,    -26}, 0, {     0,      0}, {0xc3, 0x71, 0x00, 0x00}}},\n    {{{   -72,     33,     20}, 0, {     0,      0}, {0x95, 0x47, 0x00, 0x00}}},\n    {{{   -30,     68,     20}, 0, {     0,      0}, {0xde, 0x7b, 0x00, 0x00}}},\n    {{{   -72,     33,    -26}, 0, {     0,      0}, {0x84, 0x23, 0x00, 0x00}}},\n    {{{   -72,    -32,    -26}, 0, {     0,      0}, {0x9a, 0xb1, 0x00, 0x00}}},\n    {{{   -72,    -32,     20}, 0, {     0,      0}, {0x86, 0xd8, 0x00, 0x00}}},\n};\n\n// 0x07005BA0 - 0x07005C90\nstatic const Vtx debug_level_select_vertex_07005BA0[] = {\n    {{{   -72,     33,    -26}, 0, {     0,      0}, {0x84, 0x23, 0x00, 0x00}}},\n    {{{   -72,    -32,     20}, 0, {     0,      0}, {0x86, 0xd8, 0x00, 0x00}}},\n    {{{   -72,     33,     20}, 0, {     0,      0}, {0x95, 0x47, 0x00, 0x00}}},\n    {{{   -72,    -32,    -26}, 0, {     0,      0}, {0x9a, 0xb1, 0x00, 0x00}}},\n    {{{   -14,    -72,    -26}, 0, {     0,      0}, {0xf2, 0x80, 0x00, 0x00}}},\n    {{{   -14,    -72,     20}, 0, {     0,      0}, {0xd2, 0x88, 0x00, 0x00}}},\n    {{{   -72,    -32,    -26}, 0, {     0,      0}, {0x9a, 0xb1, 0x00, 0x00}}},\n    {{{   -14,    -72,     20}, 0, {     0,      0}, {0xd2, 0x88, 0x00, 0x00}}},\n    {{{   -72,    -32,     20}, 0, {     0,      0}, {0x86, 0xd8, 0x00, 0x00}}},\n    {{{   -14,    -72,    -26}, 0, {     0,      0}, {0xf2, 0x80, 0x00, 0x00}}},\n    {{{    54,    -62,    -26}, 0, {     0,      0}, {0x11, 0x81, 0x00, 0x00}}},\n    {{{    54,    -62,     20}, 0, {     0,      0}, {0x11, 0x81, 0x00, 0x00}}},\n    {{{   -14,    -72,    -26}, 0, {     0,      0}, {0xf2, 0x80, 0x00, 0x00}}},\n    {{{    54,    -62,     20}, 0, {     0,      0}, {0x11, 0x81, 0x00, 0x00}}},\n    {{{   -14,    -72,     20}, 0, {     0,      0}, {0xd2, 0x88, 0x00, 0x00}}},\n};\n\n// 0x07005C90 - 0x07005D80\nstatic const Vtx debug_level_select_vertex_07005C90[] = {\n    {{{    54,    -62,    -26}, 0, {     0,      0}, {0x76, 0xcf, 0x00, 0x00}}},\n    {{{    86,     14,    -26}, 0, {     0,      0}, {0x76, 0xcf, 0x00, 0x00}}},\n    {{{    86,     14,     20}, 0, {     0,      0}, {0x76, 0xcf, 0x00, 0x00}}},\n    {{{    54,    -62,    -26}, 0, {     0,      0}, {0x76, 0xcf, 0x00, 0x00}}},\n    {{{    86,     14,     20}, 0, {     0,      0}, {0x76, 0xcf, 0x00, 0x00}}},\n    {{{    54,    -62,     20}, 0, {     0,      0}, {0x76, 0xcf, 0x00, 0x00}}},\n    {{{    86,     14,    -26}, 0, {     0,      0}, {0x5b, 0x59, 0x00, 0x00}}},\n    {{{    30,     71,    -26}, 0, {     0,      0}, {0x1b, 0x7c, 0x00, 0x00}}},\n    {{{    30,     71,     20}, 0, {     0,      0}, {0x3f, 0x6f, 0x00, 0x00}}},\n    {{{    86,     14,    -26}, 0, {     0,      0}, {0x5b, 0x59, 0x00, 0x00}}},\n    {{{    30,     71,     20}, 0, {     0,      0}, {0x3f, 0x6f, 0x00, 0x00}}},\n    {{{    86,     14,     20}, 0, {     0,      0}, {0x5b, 0x59, 0x00, 0x00}}},\n    {{{     2,     31,    -26}, 0, {     0,      0}, {0xa8, 0xa3, 0x00, 0x00}}},\n    {{{    31,      4,    -26}, 0, {     0,      0}, {0xa8, 0xa3, 0x00, 0x00}}},\n    {{{    31,      4,     20}, 0, {     0,      0}, {0xa8, 0xa3, 0x00, 0x00}}},\n};\n\n// 0x07005D80 - 0x07005E70\nstatic const Vtx debug_level_select_vertex_07005D80[] = {\n    {{{     2,     31,    -26}, 0, {     0,      0}, {0xa8, 0xa3, 0x00, 0x00}}},\n    {{{    31,      4,     20}, 0, {     0,      0}, {0xa8, 0xa3, 0x00, 0x00}}},\n    {{{     2,     31,     20}, 0, {     0,      0}, {0xa8, 0xa3, 0x00, 0x00}}},\n    {{{    31,      4,    -26}, 0, {     0,      0}, {0x8a, 0x32, 0x00, 0x00}}},\n    {{{    20,    -19,    -26}, 0, {     0,      0}, {0xc0, 0x6f, 0x00, 0x00}}},\n    {{{    20,    -19,     20}, 0, {     0,      0}, {0x9f, 0x53, 0x00, 0x00}}},\n    {{{    31,      4,    -26}, 0, {     0,      0}, {0x8a, 0x32, 0x00, 0x00}}},\n    {{{    20,    -19,     20}, 0, {     0,      0}, {0x9f, 0x53, 0x00, 0x00}}},\n    {{{    31,      4,     20}, 0, {     0,      0}, {0x8a, 0x32, 0x00, 0x00}}},\n    {{{    20,    -19,    -26}, 0, {     0,      0}, {0xc0, 0x6f, 0x00, 0x00}}},\n    {{{   -14,    -27,    -26}, 0, {     0,      0}, {0xe5, 0x7d, 0x00, 0x00}}},\n    {{{   -14,    -27,     20}, 0, {     0,      0}, {0xe5, 0x7d, 0x00, 0x00}}},\n    {{{    20,    -19,    -26}, 0, {     0,      0}, {0xc0, 0x6f, 0x00, 0x00}}},\n    {{{   -14,    -27,     20}, 0, {     0,      0}, {0xe5, 0x7d, 0x00, 0x00}}},\n    {{{    20,    -19,     20}, 0, {     0,      0}, {0x9f, 0x53, 0x00, 0x00}}},\n};\n\n// 0x07005E70 - 0x07005F60\nstatic const Vtx debug_level_select_vertex_07005E70[] = {\n    {{{   -14,    -27,    -26}, 0, {     0,      0}, {0x6e, 0x41, 0x00, 0x00}}},\n    {{{   -33,      5,    -26}, 0, {     0,      0}, {0x6e, 0x41, 0x00, 0x00}}},\n    {{{   -33,      5,     20}, 0, {     0,      0}, {0x6e, 0x41, 0x00, 0x00}}},\n    {{{   -14,    -27,    -26}, 0, {     0,      0}, {0x6e, 0x41, 0x00, 0x00}}},\n    {{{   -33,      5,     20}, 0, {     0,      0}, {0x6e, 0x41, 0x00, 0x00}}},\n    {{{   -14,    -27,     20}, 0, {     0,      0}, {0x6e, 0x41, 0x00, 0x00}}},\n    {{{   -33,      5,    -26}, 0, {     0,      0}, {0x4b, 0x98, 0x00, 0x00}}},\n    {{{     2,     31,    -26}, 0, {     0,      0}, {0x4b, 0x98, 0x00, 0x00}}},\n    {{{     2,     31,     20}, 0, {     0,      0}, {0x4b, 0x98, 0x00, 0x00}}},\n    {{{   -33,      5,    -26}, 0, {     0,      0}, {0x4b, 0x98, 0x00, 0x00}}},\n    {{{     2,     31,     20}, 0, {     0,      0}, {0x4b, 0x98, 0x00, 0x00}}},\n    {{{   -33,      5,     20}, 0, {     0,      0}, {0x4b, 0x98, 0x00, 0x00}}},\n    {{{    30,     71,    -26}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{     2,     31,    -26}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -33,      5,    -26}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n};\n\n// 0x07005F60 - 0x07006050\nstatic const Vtx debug_level_select_vertex_07005F60[] = {\n    {{{    31,      4,    -26}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{     2,     31,    -26}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    30,     71,    -26}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    31,      4,    -26}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    30,     71,    -26}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    86,     14,    -26}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    31,      4,    -26}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    86,     14,    -26}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    54,    -62,    -26}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    54,    -62,    -26}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -14,    -72,    -26}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -72,    -32,    -26}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -72,    -32,    -26}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -72,     33,    -26}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -30,     68,    -26}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n};\n\n// 0x07006050 - 0x07006140\nstatic const Vtx debug_level_select_vertex_07006050[] = {\n    {{{   -72,    -32,    -26}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -30,     68,    -26}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    30,     71,    -26}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -72,    -32,    -26}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    30,     71,    -26}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -33,      5,    -26}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -72,    -32,    -26}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -33,      5,    -26}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -14,    -27,    -26}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    20,    -19,    -26}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    31,      4,    -26}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    54,    -62,    -26}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    54,    -62,    -26}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -72,    -32,    -26}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -14,    -27,    -26}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n};\n\n// 0x07006140 - 0x07006230\nstatic const Vtx debug_level_select_vertex_07006140[] = {\n    {{{    54,    -62,    -26}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{   -14,    -27,    -26}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{    20,    -19,    -26}, 0, {     0,      0}, {0x00, 0x00, 0x80, 0x00}}},\n    {{{     2,     31,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    31,      4,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -30,     68,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{     2,     31,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -30,     68,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -72,     33,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -72,     33,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -72,    -32,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -14,    -72,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -14,    -72,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    54,    -62,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    86,     14,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n};\n\n// 0x07006230 - 0x07006320\nstatic const Vtx debug_level_select_vertex_07006230[] = {\n    {{{    86,     14,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    30,     71,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -30,     68,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    86,     14,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -30,     68,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    31,      4,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    86,     14,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    31,      4,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    20,    -19,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -33,      5,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{     2,     31,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -72,     33,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -33,      5,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -72,     33,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -14,    -72,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n};\n\n// 0x07006320 - 0x070063B0\nstatic const Vtx debug_level_select_vertex_07006320[] = {\n    {{{   -14,    -72,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    86,     14,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    20,    -19,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -14,    -72,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    20,    -19,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -14,    -27,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -14,    -72,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -14,    -27,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -33,      5,     20}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n};\n\n// 0x070063B0 - 0x070065A8\nconst Gfx debug_level_select_dl_070063B0[] = {\n    gsDPPipeSync(),\n    gsSPSetLights1(debug_level_select_lights_07005A98),\n    gsSPVertex(debug_level_select_vertex_07005AB0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07005BA0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07005C90, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07005D80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07005E70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07005F60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07006050, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07006140, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07006230, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(debug_level_select_vertex_07006320, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n"
  },
  {
    "path": "bin/effect.c",
    "content": "#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\n#include \"macros.h\"\n#include \"types.h\"\n\n#include \"make_const_nonconst.h\"\n\nUNUSED static const u64 effect_unused_0 = 0;\n\n// Flower (Unused)\n// 0x0B000008\nALIGNED8 static const Texture effect_0B000008[] = {\n#include \"textures/effect/flower.00008.rgba16.inc.c\"\n};\n\n// 0x0B000808\nALIGNED8 static const Texture effect_0B000808[] = {\n#include \"textures/effect/flower.00808.rgba16.inc.c\"\n};\n\n// 0x0B001008\nALIGNED8 static const Texture effect_0B001008[] = {\n#include \"textures/effect/flower.01008.rgba16.inc.c\"\n};\n\n// 0x0B001808\nALIGNED8 static const Texture effect_0B001808[] = {\n#include \"textures/effect/flower.01808.rgba16.inc.c\"\n};\n\n// 0x0B002008\nconst Texture *const flower_bubbles_textures_ptr_0B002008[] = {\n    effect_0B000008,\n    effect_0B000808,\n    effect_0B001008,\n    effect_0B001808,\n    effect_0B001008,\n    effect_0B000808,\n};\n\n// Lava Bubble\n// 0x0B002020\nALIGNED8 static const Texture effect_0B002020[] = {\n#include \"textures/effect/lava_bubble.02020.rgba16.inc.c\"\n};\n\n// 0x0B002820\nALIGNED8 static const Texture effect_0B002820[] = {\n#include \"textures/effect/lava_bubble.02820.rgba16.inc.c\"\n};\n\n// 0x0B003020\nALIGNED8 static const Texture effect_0B003020[] = {\n#include \"textures/effect/lava_bubble.03020.rgba16.inc.c\"\n};\n\n// 0x0B003820\nALIGNED8 static const Texture effect_0B003820[] = {\n#include \"textures/effect/lava_bubble.03820.rgba16.inc.c\"\n};\n\n// 0x0B004020\nALIGNED8 static const Texture effect_0B004020[] = {\n#include \"textures/effect/lava_bubble.04020.rgba16.inc.c\"\n};\n\n// 0x0B004820\nALIGNED8 static const Texture effect_0B004820[] = {\n#include \"textures/effect/lava_bubble.04820.rgba16.inc.c\"\n};\n\n// 0x0B005020\nALIGNED8 static const Texture effect_0B005020[] = {\n#include \"textures/effect/lava_bubble.05020.rgba16.inc.c\"\n};\n\n// 0x0B005820\nALIGNED8 static const Texture effect_0B005820[] = {\n#include \"textures/effect/lava_bubble.05820.rgba16.inc.c\"\n};\n\n// 0x0B006020\nconst Texture *const lava_bubble_ptr_0B006020[] = {\n    effect_0B002020,\n    effect_0B002820,\n    effect_0B003020,\n    effect_0B003020,\n    effect_0B003020,\n    effect_0B003820,\n    effect_0B004020,\n    effect_0B004820,\n    effect_0B005020,\n    effect_0B005820,\n};\n\n// Bubble\n// 0x0B006048\nALIGNED8 static const Texture effect_0B006048[] = {\n#include \"textures/effect/bubble.06048.rgba16.inc.c\"\n};\n\n// 0x0B006848\nconst Texture *const bubble_ptr_0B006848[] = {\n    effect_0B006048,\n};\n\n// Tiny Bubble\n// 0x0B00684C\nALIGNED8 const Texture effect_0B00684C[] = {\n#include \"textures/effect/tiny_bubble.0684C.rgba16.inc.c\"\n};\n\n// 0x0B006A50 - 0x0B006AB0\nconst Gfx tiny_bubble_dl_0B006A50[] = {\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, effect_0B00684C),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 16 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (16 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x0B006AB0 - 0x0B006AD8\nconst Gfx tiny_bubble_dl_0B006AB0[] = {\n    gsSPTexture(0x0001, 0x0001, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x0B006AD8\nALIGNED8 static const Texture effect_0B006AD8[] = {\n#include \"textures/effect/tiny_bubble.06AD8.rgba16.inc.c\"\n};\n\n// 0x0B006CD8 - 0x0B006D38\nconst Gfx tiny_bubble_dl_0B006CD8[] = {\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_LIGHTING | G_SHADING_SMOOTH),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, effect_0B006AD8),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2),\n    gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 16 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (16 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x0B006D38 - 0x0B006D68\nconst Gfx tiny_bubble_dl_0B006D38[] = {\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_LIGHTING | G_SHADING_SMOOTH),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsSPEndDisplayList(),\n};\n\n// 0x0B006D68 - 0x0B006D98\nconst Gfx tiny_bubble_dl_0B006D68[] = {\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "bin/eu/translation_de.c",
    "content": "// SM64 (EU) Segment 19 - Deutsch\n\n#include \"macros.h\"\n\n#include \"game/ingame_menu.h\"\n\n#include \"make_const_nonconst.h\"\n\n// Include text/define_text.inc.c, preprocessed with -I text/de/ to get the\n// right translation strings, with symbols renamed as below.\n#define seg2_course_name_table course_name_table_eu_de\n#define seg2_act_name_table act_name_table_eu_de\n#define seg2_dialog_table dialog_table_eu_de\n\n#include \"text/de/define_text.inc.c\"\n"
  },
  {
    "path": "bin/eu/translation_en.c",
    "content": "// SM64 (EU) Segment 19 - English\n\n#include \"macros.h\"\n\n#include \"game/ingame_menu.h\"\n\n#include \"make_const_nonconst.h\"\n\n// Include text/define_text.inc.c, preprocessed with -I text/us/ to get the\n// right translation strings, with symbols renamed as below.\n#define seg2_course_name_table course_name_table_eu_en\n#define seg2_act_name_table act_name_table_eu_en\n#define seg2_dialog_table dialog_table_eu_en\n\n#include \"text/us/define_text.inc.c\"\n"
  },
  {
    "path": "bin/eu/translation_fr.c",
    "content": "// SM64 (EU) Segment 19 - Français\n\n#include \"macros.h\"\n\n#include \"game/ingame_menu.h\"\n\n#include \"make_const_nonconst.h\"\n\n// Include text/define_text.inc.c, preprocessed with -I text/fr/ to get the\n// right translation strings, with symbols renamed as below.\n#define seg2_course_name_table course_name_table_eu_fr\n#define seg2_act_name_table act_name_table_eu_fr\n#define seg2_dialog_table dialog_table_eu_fr\n\n#include \"text/fr/define_text.inc.c\"\n"
  },
  {
    "path": "bin/fire.c",
    "content": "#include \"macros.h\"\n#include \"types.h\"\n\n#include \"make_const_nonconst.h\"\n\n// 0x09000000\nALIGNED8 const Texture fire_09000000[] = {\n#include \"textures/fire/lll_textures.00000.rgba16.inc.c\"\n};\n\n// 0x09000800\nALIGNED8 const Texture fire_09000800[] = {\n#include \"textures/fire/lll_textures.00800.rgba16.inc.c\"\n};\n\n// 0x09001000\nALIGNED8 const Texture fire_09001000[] = {\n#include \"textures/fire/lll_textures.01000.rgba16.inc.c\"\n};\n\n// 0x09001800\nALIGNED8 const Texture fire_09001800[] = {\n#include \"textures/fire/lll_textures.01800.rgba16.inc.c\"\n};\n\n// 0x09002000\nALIGNED8 const Texture fire_09002000[] = {\n#include \"textures/fire/lll_textures.02000.rgba16.inc.c\"\n};\n\n// 0x09002800\nALIGNED8 const Texture fire_09002800[] = {\n#include \"textures/fire/lll_textures.02800.rgba16.inc.c\"\n};\n\n// 0x09003000\nALIGNED8 const Texture fire_09003000[] = {\n#include \"textures/fire/lll_textures.03000.rgba16.inc.c\"\n};\n\n// 0x09003800\nALIGNED8 const Texture fire_09003800[] = {\n#include \"textures/fire/lll_textures.03800.rgba16.inc.c\"\n};\n\n// 0x09004000\nALIGNED8 const Texture fire_09004000[] = {\n#include \"textures/fire/lll_textures.04000.rgba16.inc.c\"\n};\n\n// 0x09004800\nALIGNED8 const Texture fire_09004800[] = {\n#include \"textures/fire/lll_textures.04800.rgba16.inc.c\"\n};\n\n// 0x09005000\nALIGNED8 const Texture fire_09005000[] = {\n#include \"textures/fire/lll_textures.05000.rgba16.inc.c\"\n};\n\n// 0x09005800\nALIGNED8 const Texture fire_09005800[] = {\n#include \"textures/fire/lll_textures.05800.rgba16.inc.c\"\n};\n\n// 0x09006000\nALIGNED8 const Texture fire_09006000[] = {\n#include \"textures/fire/lll_textures.06000.rgba16.inc.c\"\n};\n\n// 0x09006800\nALIGNED8 const Texture fire_09006800[] = {\n#include \"textures/fire/lll_textures.06800.rgba16.inc.c\"\n};\n\n// 0x09007000\nALIGNED8 const Texture fire_09007000[] = {\n#include \"textures/fire/lll_textures.07000.rgba16.inc.c\"\n};\n\n// 0x09007800\nALIGNED8 const Texture fire_09007800[] = {\n#include \"textures/fire/lll_textures.07800.rgba16.inc.c\"\n};\n\n// 0x09008000\nALIGNED8 const Texture fire_09008000[] = {\n#include \"textures/fire/lll_textures.08000.rgba16.inc.c\"\n};\n\n// 0x09008800\nALIGNED8 const Texture fire_09008800[] = {\n#include \"textures/fire/lll_textures.08800.rgba16.inc.c\"\n};\n\n// 0x09009000\nALIGNED8 const Texture fire_09009000[] = {\n#include \"textures/fire/lll_textures.09000.rgba16.inc.c\"\n};\n\n// 0x09009800\nALIGNED8 const Texture fire_09009800[] = {\n#include \"textures/fire/lll_textures.09800.rgba16.inc.c\"\n};\n\n// 0x0900A000\nALIGNED8 const Texture fire_0900A000[] = {\n#include \"textures/fire/lll_textures.0A000.rgba16.inc.c\"\n};\n\n// 0x0900A800\nALIGNED8 const Texture fire_0900A800[] = {\n#include \"textures/fire/lll_textures.0A800.rgba16.inc.c\"\n};\n\n// 0x0900B000\nALIGNED8 const Texture fire_0900B000[] = {\n#include \"textures/fire/lll_textures.0B000.rgba16.inc.c\"\n};\n\n// 0x0900B800\nALIGNED8 const Texture fire_0900B800[] = {\n#include \"textures/fire/lll_textures.0B800.rgba16.inc.c\"\n};\n"
  },
  {
    "path": "bin/generic.c",
    "content": "#include \"macros.h\"\n#include \"types.h\"\n\n#include \"make_const_nonconst.h\"\n\n// 0x09000000\nALIGNED8 const Texture generic_09000000[] = {\n#include \"textures/generic/bob_textures.00000.rgba16.inc.c\"\n};\n\n// 0x09000800\nALIGNED8 const Texture generic_09000800[] = {\n#include \"textures/generic/bob_textures.00800.rgba16.inc.c\"\n};\n\n// 0x09001000\nALIGNED8 const Texture generic_09001000[] = {\n#include \"textures/generic/bob_textures.01000.rgba16.inc.c\"\n};\n\n// 0x09001800\nALIGNED8 const Texture generic_09001800[] = {\n#include \"textures/generic/bob_textures.01800.rgba16.inc.c\"\n};\n\n// 0x09002000\nALIGNED8 const Texture generic_09002000[] = {\n#include \"textures/generic/bob_textures.02000.rgba16.inc.c\"\n};\n\n// 0x09002800\nALIGNED8 const Texture generic_09002800[] = {\n#include \"textures/generic/bob_textures.02800.rgba16.inc.c\"\n};\n\n// 0x09003000\nALIGNED8 const Texture generic_09003000[] = {\n#include \"textures/generic/bob_textures.03000.rgba16.inc.c\"\n};\n\n// 0x09003800\nALIGNED8 const Texture generic_09003800[] = {\n#include \"textures/generic/bob_textures.03800.rgba16.inc.c\"\n};\n\n// 0x09004000\nALIGNED8 const Texture generic_09004000[] = {\n#include \"textures/generic/bob_textures.04000.rgba16.inc.c\"\n};\n\n// 0x09004800\nALIGNED8 const Texture generic_09004800[] = {\n#include \"textures/generic/bob_textures.04800.rgba16.inc.c\"\n};\n\n// 0x09005000\nALIGNED8 const Texture generic_09005000[] = {\n#include \"textures/generic/bob_textures.05000.rgba16.inc.c\"\n};\n\n// 0x09005800\nALIGNED8 const Texture generic_09005800[] = {\n#include \"textures/generic/bob_textures.05800.rgba16.inc.c\"\n};\n\n// 0x09006000\nALIGNED8 const Texture generic_09006000[] = {\n#include \"textures/generic/bob_textures.06000.rgba16.inc.c\"\n};\n\n// 0x09007000\nALIGNED8 const Texture generic_09007000[] = {\n#include \"textures/generic/bob_textures.07000.rgba16.inc.c\"\n};\n\n// 0x09007800\nALIGNED8 const Texture generic_09007800[] = {\n#include \"textures/generic/bob_textures.07800.rgba16.inc.c\"\n};\n\n// 0x09008000\nALIGNED8 const Texture generic_09008000[] = {\n#include \"textures/generic/bob_textures.08000.rgba16.inc.c\"\n};\n\n// 0x09008800\nALIGNED8 const Texture generic_09008800[] = {\n#include \"textures/generic/bob_textures.08800.rgba16.inc.c\"\n};\n\n// 0x09009000\nALIGNED8 const Texture generic_09009000[] = {\n#include \"textures/generic/bob_textures.09000.rgba16.inc.c\"\n};\n\n// 0x09009800\nALIGNED8 const Texture generic_09009800[] = {\n#include \"textures/generic/bob_textures.09800.rgba16.inc.c\"\n};\n\n// 0x0900A000\nALIGNED8 const Texture generic_0900A000[] = {\n#include \"textures/generic/bob_textures.0A000.rgba16.inc.c\"\n};\n\n// 0x0900A800\nALIGNED8 const Texture generic_0900A800[] = {\n#include \"textures/generic/bob_textures.0A800.rgba16.inc.c\"\n};\n\n// 0x0900B000\nALIGNED8 const Texture generic_0900B000[] = {\n#include \"textures/generic/bob_textures.0B000.ia16.inc.c\"\n};\n"
  },
  {
    "path": "bin/grass.c",
    "content": "#include \"macros.h\"\n#include \"types.h\"\n\n#include \"make_const_nonconst.h\"\n\n// 0x09000000\nALIGNED8 const Texture grass_09000000[] = {\n#include \"textures/grass/wf_textures.00000.rgba16.inc.c\"\n};\n\n// 0x09000800\nALIGNED8 const Texture grass_09000800[] = {\n#include \"textures/grass/wf_textures.00800.rgba16.inc.c\"\n};\n\n// 0x09001000\nALIGNED8 const Texture grass_09001000[] = {\n#include \"textures/grass/wf_textures.01000.rgba16.inc.c\"\n};\n\n// 0x09001800\nALIGNED8 const Texture grass_09001800[] = {\n#include \"textures/grass/wf_textures.01800.rgba16.inc.c\"\n};\n\n// 0x09002000\nALIGNED8 const Texture grass_09002000[] = {\n#include \"textures/grass/wf_textures.02000.rgba16.inc.c\"\n};\n\n// 0x09002800\nALIGNED8 const Texture grass_09002800[] = {\n#include \"textures/grass/wf_textures.02800.rgba16.inc.c\"\n};\n\n// 0x09003000\nALIGNED8 const Texture grass_09003000[] = {\n#include \"textures/grass/wf_textures.03000.rgba16.inc.c\"\n};\n\n// 0x09003800\nALIGNED8 const Texture grass_09003800[] = {\n#include \"textures/grass/wf_textures.03800.rgba16.inc.c\"\n};\n\n// 0x09004000\nALIGNED8 const Texture grass_09004000[] = {\n#include \"textures/grass/wf_textures.04000.rgba16.inc.c\"\n};\n\n// 0x09004800\nALIGNED8 const Texture grass_09004800[] = {\n#include \"textures/grass/wf_textures.04800.rgba16.inc.c\"\n};\n\n// 0x09005000\nALIGNED8 const Texture grass_09005000[] = {\n#include \"textures/grass/wf_textures.05000.rgba16.inc.c\"\n};\n\n// 0x09005800\nALIGNED8 const Texture grass_09005800[] = {\n#include \"textures/grass/wf_textures.05800.rgba16.inc.c\"\n};\n\n// 0x09006000\nALIGNED8 const Texture grass_09006000[] = {\n#include \"textures/grass/wf_textures.06000.rgba16.inc.c\"\n};\n\n// 0x09006800\nALIGNED8 const Texture grass_09006800[] = {\n#include \"textures/grass/wf_textures.06800.rgba16.inc.c\"\n};\n\n// 0x09007000\nALIGNED8 const Texture grass_09007000[] = {\n#include \"textures/grass/wf_textures.07000.rgba16.inc.c\"\n};\n\n// 0x09007800\nALIGNED8 const Texture grass_09007800[] = {\n#include \"textures/grass/wf_textures.07800.rgba16.inc.c\"\n};\n\n// 0x09008000\nALIGNED8 const Texture grass_09008000[] = {\n#include \"textures/grass/wf_textures.08000.rgba16.inc.c\"\n};\n\n// 0x09008800\nALIGNED8 const Texture grass_09008800[] = {\n#include \"textures/grass/wf_textures.08800.rgba16.inc.c\"\n};\n\n// 0x09009000\nALIGNED8 const Texture grass_09009000[] = {\n#include \"textures/grass/wf_textures.09000.rgba16.inc.c\"\n};\n\n// 0x09009800\nALIGNED8 const Texture grass_09009800[] = {\n#include \"textures/grass/wf_textures.09800.rgba16.inc.c\"\n};\n\n// 0x0900A000\nALIGNED8 const Texture grass_0900A000[] = {\n#include \"textures/grass/wf_textures.0A000.rgba16.inc.c\"\n};\n\n// 0x0900A800\nALIGNED8 const Texture grass_0900A800[] = {\n#include \"textures/grass/wf_textures.0A800.rgba16.inc.c\"\n};\n\n// 0x0900B000\nALIGNED8 const Texture grass_0900B000[] = {\n#include \"textures/grass/wf_textures.0B000.ia16.inc.c\"\n};\n\n// 0x0900B800\nALIGNED8 const Texture grass_0900B800[] = {\n#include \"textures/grass/wf_textures.0B800.ia16.inc.c\"\n};\n"
  },
  {
    "path": "bin/inside.c",
    "content": "#include \"macros.h\"\n#include \"types.h\"\n\n#include \"make_const_nonconst.h\"\n\n// 0x09000000\nALIGNED8 const Texture inside_09000000[] = {\n#include \"textures/inside/inside_castle_textures.00000.rgba16.inc.c\"\n};\n\n// 0x09001000\nALIGNED8 const Texture inside_09001000[] = {\n#include \"textures/inside/inside_castle_textures.01000.rgba16.inc.c\"\n};\n\n// 0x09002000\nALIGNED8 const Texture inside_09002000[] = {\n#include \"textures/inside/inside_castle_textures.02000.rgba16.inc.c\"\n};\n\n// 0x09003000\nALIGNED8 const Texture inside_09003000[] = {\n#include \"textures/inside/inside_castle_textures.03000.rgba16.inc.c\"\n};\n\n// 0x09003800\nALIGNED8 const Texture inside_09003800[] = {\n#include \"textures/inside/inside_castle_textures.03800.rgba16.inc.c\"\n};\n\n// 0x09004000\nALIGNED8 const Texture inside_09004000[] = {\n#include \"textures/inside/inside_castle_textures.04000.rgba16.inc.c\"\n};\n\n// 0x09004800\nALIGNED8 const Texture inside_09004800[] = {\n#include \"textures/inside/inside_castle_textures.04800.rgba16.inc.c\"\n};\n\n// 0x09005000\nALIGNED8 const Texture inside_09005000[] = {\n#include \"textures/inside/inside_castle_textures.05000.rgba16.inc.c\"\n};\n\n// 0x09005800\nALIGNED8 const Texture inside_09005800[] = {\n#include \"textures/inside/inside_castle_textures.05800.rgba16.inc.c\"\n};\n\n// 0x09006000\nALIGNED8 const Texture inside_09006000[] = {\n#include \"textures/inside/inside_castle_textures.06000.rgba16.inc.c\"\n};\n\n// 0x09007000\nALIGNED8 const Texture inside_09007000[] = {\n#include \"textures/inside/inside_castle_textures.07000.rgba16.inc.c\"\n};\n\n// 0x09008000\nALIGNED8 const Texture inside_09008000[] = {\n#include \"textures/inside/inside_castle_textures.08000.rgba16.inc.c\"\n};\n\n// 0x09008800\nALIGNED8 const Texture inside_09008800[] = {\n#include \"textures/inside/inside_castle_textures.08800.rgba16.inc.c\"\n};\n\n// 0x09009000\nALIGNED8 const Texture inside_09009000[] = {\n#include \"textures/inside/inside_castle_textures.09000.rgba16.inc.c\"\n};\n\n// 0x0900A000\nALIGNED8 const Texture inside_0900A000[] = {\n#include \"textures/inside/inside_castle_textures.0A000.rgba16.inc.c\"\n};\n\n// 0x0900B000\nALIGNED8 const Texture inside_0900B000[] = {\n#include \"textures/inside/inside_castle_textures.0B000.rgba16.inc.c\"\n};\n\n// 0x0900B800\nALIGNED8 const Texture inside_0900B800[] = {\n#include \"textures/inside/inside_castle_textures.0B800.rgba16.inc.c\"\n};\n"
  },
  {
    "path": "bin/machine.c",
    "content": "#include \"macros.h\"\n#include \"types.h\"\n\n#include \"make_const_nonconst.h\"\n\n// 0x09000000\nALIGNED8 const Texture machine_09000000[] = {\n#include \"textures/machine/ttc_textures.00000.rgba16.inc.c\"\n};\n\n// 0x09000800\nALIGNED8 const Texture machine_09000800[] = {\n#include \"textures/machine/ttc_textures.00800.rgba16.inc.c\"\n};\n\n// 0x09001000\nALIGNED8 const Texture machine_09001000[] = {\n#include \"textures/machine/ttc_textures.01000.rgba16.inc.c\"\n};\n\n// 0x09001800\nALIGNED8 const Texture machine_09001800[] = {\n#include \"textures/machine/ttc_textures.01800.rgba16.inc.c\"\n};\n\n// 0x09002000\nALIGNED8 const Texture machine_09002000[] = {\n#include \"textures/machine/ttc_textures.02000.rgba16.inc.c\"\n};\n\n// 0x09002800\nALIGNED8 const Texture machine_09002800[] = {\n#include \"textures/machine/ttc_textures.02800.rgba16.inc.c\"\n};\n\n// 0x09003000\nALIGNED8 const Texture machine_09003000[] = {\n#include \"textures/machine/ttc_textures.03000.rgba16.inc.c\"\n};\n\n// 0x09003800\nALIGNED8 const Texture machine_09003800[] = {\n#include \"textures/machine/ttc_textures.03800.rgba16.inc.c\"\n};\n\n// 0x09004000\nALIGNED8 const Texture machine_09004000[] = {\n#include \"textures/machine/ttc_textures.04000.rgba16.inc.c\"\n};\n\n// 0x09005000\nALIGNED8 const Texture machine_09005000[] = {\n#include \"textures/machine/ttc_textures.05000.rgba16.inc.c\"\n};\n\n// 0x09005800\nALIGNED8 const Texture machine_09005800[] = {\n#include \"textures/machine/ttc_textures.05800.rgba16.inc.c\"\n};\n\n// 0x09006000\nALIGNED8 const Texture machine_09006000[] = {\n#include \"textures/machine/ttc_textures.06000.rgba16.inc.c\"\n};\n\n// 0x09006800\nALIGNED8 const Texture machine_09006800[] = {\n#include \"textures/machine/ttc_textures.06800.rgba16.inc.c\"\n};\n\n// 0x09007000\nALIGNED8 const Texture machine_09007000[] = {\n#include \"textures/machine/ttc_textures.07000.rgba16.inc.c\"\n};\n\n// 0x09007800\nALIGNED8 const Texture machine_09007800[] = {\n#include \"textures/machine/ttc_textures.07800.rgba16.inc.c\"\n};\n\n// 0x09008000\nALIGNED8 const Texture machine_09008000[] = {\n#include \"textures/machine/ttc_textures.08000.rgba16.inc.c\"\n};\n\n// 0x09008400\nALIGNED8 const Texture machine_09008400[] = {\n#include \"textures/machine/ttc_textures.08400.rgba16.inc.c\"\n};\n"
  },
  {
    "path": "bin/mountain.c",
    "content": "#include \"macros.h\"\n#include \"types.h\"\n\n#include \"make_const_nonconst.h\"\n\n// 0x09000000\nALIGNED8 const Texture mountain_09000000[] = {\n#include \"textures/mountain/ttm_textures.00000.rgba16.inc.c\"\n};\n\n// 0x09000800\nALIGNED8 const Texture mountain_09000800[] = {\n#include \"textures/mountain/ttm_textures.00800.rgba16.inc.c\"\n};\n\n// 0x09001800\nALIGNED8 const Texture mountain_09001800[] = {\n#include \"textures/mountain/ttm_textures.01800.rgba16.inc.c\"\n};\n\n// 0x09002800\nALIGNED8 const Texture mountain_09002800[] = {\n#include \"textures/mountain/ttm_textures.02800.rgba16.inc.c\"\n};\n\n// 0x09003000\nALIGNED8 const Texture mountain_09003000[] = {\n#include \"textures/mountain/ttm_textures.03000.rgba16.inc.c\"\n};\n\n// 0x09003800\nALIGNED8 const Texture mountain_09003800[] = {\n#include \"textures/mountain/ttm_textures.03800.rgba16.inc.c\"\n};\n\n// 0x09004000\nALIGNED8 const Texture mountain_09004000[] = {\n#include \"textures/mountain/ttm_textures.04000.rgba16.inc.c\"\n};\n\n// 0x09004800\nALIGNED8 const Texture mountain_09004800[] = {\n#include \"textures/mountain/ttm_textures.04800.rgba16.inc.c\"\n};\n\n// 0x09005000\nALIGNED8 const Texture mountain_09005000[] = {\n#include \"textures/mountain/ttm_textures.05000.rgba16.inc.c\"\n};\n\n// 0x09005800\nALIGNED8 const Texture mountain_09005800[] = {\n#include \"textures/mountain/ttm_textures.05800.rgba16.inc.c\"\n};\n\n// 0x09006800\nALIGNED8 const Texture mountain_09006800[] = {\n#include \"textures/mountain/ttm_textures.06800.rgba16.inc.c\"\n};\n\n// 0x09007000\nALIGNED8 const Texture mountain_09007000[] = {\n#include \"textures/mountain/ttm_textures.07000.rgba16.inc.c\"\n};\n\n// 0x09007800\nALIGNED8 const Texture mountain_09007800[] = {\n#include \"textures/mountain/ttm_textures.07800.rgba16.inc.c\"\n};\n\n// 0x09008000\nALIGNED8 const Texture mountain_09008000[] = {\n#include \"textures/mountain/ttm_textures.08000.rgba16.inc.c\"\n};\n\n// 0x09008800\nALIGNED8 const Texture mountain_09008800[] = {\n#include \"textures/mountain/ttm_textures.08800.rgba16.inc.c\"\n};\n\n// 0x09009800\nALIGNED8 const Texture mountain_09009800[] = {\n#include \"textures/mountain/ttm_textures.09800.rgba16.inc.c\"\n};\n\n// 0x0900A000\nALIGNED8 const Texture mountain_0900A000[] = {\n#include \"textures/mountain/ttm_textures.0A000.rgba16.inc.c\"\n};\n\n// 0x0900A800\nALIGNED8 const Texture mountain_0900A800[] = {\n#include \"textures/mountain/ttm_textures.0A800.rgba16.inc.c\"\n};\n\n// 0x0900B000\nALIGNED8 const Texture mountain_0900B000[] = {\n#include \"textures/mountain/ttm_textures.0B000.rgba16.inc.c\"\n};\n\n// 0x0900B800\nALIGNED8 const Texture mountain_0900B800[] = {\n#include \"textures/mountain/ttm_textures.0B800.rgba16.inc.c\"\n};\n\n// 0x0900C000\nALIGNED8 const Texture mountain_0900C000[] = {\n#include \"textures/mountain/ttm_textures.0C000.rgba16.inc.c\"\n};\n"
  },
  {
    "path": "bin/outside.c",
    "content": "#include \"macros.h\"\n#include \"types.h\"\n\n#include \"make_const_nonconst.h\"\n\n// 0x09000000\nALIGNED8 const Texture outside_09000000[] = {\n#include \"textures/outside/castle_grounds_textures.00000.rgba16.inc.c\"\n};\n\n// 0x09000800\nALIGNED8 const Texture outside_09000800[] = {\n#include \"textures/outside/castle_grounds_textures.00800.rgba16.inc.c\"\n};\n\n// 0x09001000\nALIGNED8 const Texture outside_09001000[] = {\n#include \"textures/outside/castle_grounds_textures.01000.rgba16.inc.c\"\n};\n\n// 0x09002000\nALIGNED8 const Texture outside_09002000[] = {\n#include \"textures/outside/castle_grounds_textures.02000.rgba16.inc.c\"\n};\n\n// 0x09003000\nALIGNED8 const Texture outside_09003000[] = {\n#include \"textures/outside/castle_grounds_textures.03000.rgba16.inc.c\"\n};\n\n// 0x09003800\nALIGNED8 const Texture outside_09003800[] = {\n#include \"textures/outside/castle_grounds_textures.03800.rgba16.inc.c\"\n};\n\n// 0x09004000\nALIGNED8 const Texture outside_09004000[] = {\n#include \"textures/outside/castle_grounds_textures.04000.rgba16.inc.c\"\n};\n\n// 0x09004800\nALIGNED8 const Texture outside_09004800[] = {\n#include \"textures/outside/castle_grounds_textures.04800.rgba16.inc.c\"\n};\n\n// 0x09005800\nALIGNED8 const Texture outside_09005800[] = {\n#include \"textures/outside/castle_grounds_textures.05800.rgba16.inc.c\"\n};\n\n// 0x09006000\nALIGNED8 const Texture outside_09006000[] = {\n#include \"textures/outside/castle_grounds_textures.06000.rgba16.inc.c\"\n};\n\n// 0x09006800\nALIGNED8 const Texture outside_09006800[] = {\n#include \"textures/outside/castle_grounds_textures.06800.rgba16.inc.c\"\n};\n\n// 0x09007800\nALIGNED8 const Texture outside_09007800[] = {\n#include \"textures/outside/castle_grounds_textures.07800.rgba16.inc.c\"\n};\n\n// 0x09008000\nALIGNED8 const Texture outside_09008000[] = {\n#include \"textures/outside/castle_grounds_textures.08000.rgba16.inc.c\"\n};\n\n// 0x09008800\nALIGNED8 const Texture outside_09008800[] = {\n#include \"textures/outside/castle_grounds_textures.08800.rgba16.inc.c\"\n};\n\n// 0x09009000\nALIGNED8 const Texture outside_09009000[] = {\n#include \"textures/outside/castle_grounds_textures.09000.rgba16.inc.c\"\n};\n\n// 0x09009800\nALIGNED8 const Texture outside_09009800[] = {\n#include \"textures/outside/castle_grounds_textures.09800.rgba16.inc.c\"\n};\n\n// 0x0900A000\nALIGNED8 const Texture outside_0900A000[] = {\n#include \"textures/outside/castle_grounds_textures.0A000.rgba16.inc.c\"\n};\n\n// 0x0900A800\nALIGNED8 const Texture outside_0900A800[] = {\n#include \"textures/outside/castle_grounds_textures.0A800.rgba16.inc.c\"\n};\n\n// 0x0900B000\nALIGNED8 const Texture outside_0900B000[] = {\n#include \"textures/outside/castle_grounds_textures.0B000.rgba16.inc.c\"\n};\n\n// 0x0900B400\nALIGNED8 const Texture outside_0900B400[] = {\n#include \"textures/outside/castle_grounds_textures.0B400.rgba16.inc.c\"\n};\n\n// 0x0900BC00\nALIGNED8 const Texture outside_0900BC00[] = {\n#include \"textures/outside/castle_grounds_textures.0BC00.ia16.inc.c\"\n};\n"
  },
  {
    "path": "bin/segment2.c",
    "content": "#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\n#include \"config.h\"\n#include \"macros.h\"\n#include \"types.h\"\n#include \"game/ingame_menu.h\"\n\n#include \"make_const_nonconst.h\"\n\n// SM64 (US/JP/EU/SH) Segment 02\n\nALIGNED8 static const Texture texture_hud_char_0[] = {\n#include \"textures/segment2/segment2.00000.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_1[] = {\n#include \"textures/segment2/segment2.00200.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_2[] = {\n#include \"textures/segment2/segment2.00400.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_3[] = {\n#include \"textures/segment2/segment2.00600.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_4[] = {\n#include \"textures/segment2/segment2.00800.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_5[] = {\n#include \"textures/segment2/segment2.00A00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_6[] = {\n#include \"textures/segment2/segment2.00C00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_7[] = {\n#include \"textures/segment2/segment2.00E00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_8[] = {\n#include \"textures/segment2/segment2.01000.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_9[] = {\n#include \"textures/segment2/segment2.01200.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_A[] = {\n#include \"textures/segment2/segment2.01400.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_B[] = {\n#include \"textures/segment2/segment2.01600.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_C[] = {\n#include \"textures/segment2/segment2.01800.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_D[] = {\n#include \"textures/segment2/segment2.01A00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_E[] = {\n#include \"textures/segment2/segment2.01C00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_F[] = {\n#include \"textures/segment2/segment2.01E00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_G[] = {\n#include \"textures/segment2/segment2.02000.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_H[] = {\n#include \"textures/segment2/segment2.02200.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_I[] = {\n#include \"textures/segment2/segment2.02400.rgba16.inc.c\"\n};\n\n#if defined(VERSION_JP) || defined(VERSION_SH)\nALIGNED8 static const Texture texture_hud_char_J[] = {\n#include \"textures/segment2/segment2.02600.rgba16.inc.c\"\n};\n#endif\n\nALIGNED8 static const Texture texture_hud_char_K[] = {\n#include \"textures/segment2/segment2.02800.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_L[] = {\n#include \"textures/segment2/segment2.02A00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_M[] = {\n#include \"textures/segment2/segment2.02C00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_N[] = {\n#include \"textures/segment2/segment2.02E00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_O[] = {\n#include \"textures/segment2/segment2.03000.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_P[] = {\n#include \"textures/segment2/segment2.03200.rgba16.inc.c\"\n};\n\n#if defined(VERSION_JP) || defined(VERSION_SH)\nALIGNED8 static const Texture texture_hud_char_Q[] = {\n#include \"textures/segment2/segment2.03400.rgba16.inc.c\"\n};\n#endif\n\nALIGNED8 static const Texture texture_hud_char_R[] = {\n#include \"textures/segment2/segment2.03600.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_S[] = {\n#include \"textures/segment2/segment2.03800.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_T[] = {\n#include \"textures/segment2/segment2.03A00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_U[] = {\n#include \"textures/segment2/segment2.03C00.rgba16.inc.c\"\n};\n\n#if defined(VERSION_EU) || defined(VERSION_JP) || defined(VERSION_SH)\nALIGNED8 static const Texture texture_hud_char_V[] = {\n#include \"textures/segment2/segment2.03E00.rgba16.inc.c\"\n};\n#endif\n\nALIGNED8 static const Texture texture_hud_char_W[] = {\n#include \"textures/segment2/segment2.04000.rgba16.inc.c\"\n};\n\n#if defined(VERSION_JP) || defined(VERSION_SH)\nALIGNED8 static const Texture texture_hud_char_X[] = {\n#include \"textures/segment2/segment2.04200.rgba16.inc.c\"\n};\n#endif\n\nALIGNED8 static const Texture texture_hud_char_Y[] = {\n#include \"textures/segment2/segment2.04400.rgba16.inc.c\"\n};\n\n#if defined(VERSION_EU) || defined(VERSION_JP) || defined(VERSION_SH)\nALIGNED8 static const Texture texture_hud_char_Z[] = {\n#include \"textures/segment2/segment2.04600.rgba16.inc.c\"\n};\n#endif\n\nALIGNED8 static const Texture texture_hud_char_apostrophe[] = {\n#include \"textures/segment2/segment2.04800.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_double_quote[] = {\n#include \"textures/segment2/segment2.04A00.rgba16.inc.c\"\n};\n\n#ifdef VERSION_EU\nALIGNED8 static const Texture texture_hud_char_umlaut[] = {\n#include \"textures/segment2/segment2.umlaut.rgba16.inc.c\"// EU ¨\n};\n#endif\n\n#if defined(VERSION_JP) || defined(VERSION_SH)\nALIGNED8 static const Texture texture_hud_char_exclamation[] = {\n#include \"textures/segment2/segment2.04C00.rgba16.inc.c\"// JP !\n};\n\nALIGNED8 static const Texture texture_hud_char_double_exclamation[] = {\n#include \"textures/segment2/segment2.04E00.rgba16.inc.c\"// JP !!\n};\n\nALIGNED8 static const Texture texture_hud_char_question[] = {\n#include \"textures/segment2/segment2.05000.rgba16.inc.c\"// JP ?\n};\n\nALIGNED8 static const Texture texture_hud_char_ampersand[] = {\n#include \"textures/segment2/segment2.05200.rgba16.inc.c\"// JP &\n};\n\nALIGNED8 static const Texture texture_hud_char_percent[] = {\n#include \"textures/segment2/segment2.05400.rgba16.inc.c\"// JP %\n};\n#endif\n\nALIGNED8 static const Texture texture_hud_char_multiply[] = {\n#include \"textures/segment2/segment2.05600.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_coin[] = {\n#include \"textures/segment2/segment2.05800.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_mario_head[] = {\n#include \"textures/segment2/segment2.05A00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_star[] = {\n#include \"textures/segment2/segment2.05C00.rgba16.inc.c\"\n};\n\n#if defined(VERSION_JP) || defined(VERSION_SH)\nALIGNED8 static const Texture texture_hud_char_decimal_point[] = {\n#include \"textures/segment2/segment2.05E00.rgba16.inc.c\"\n};\n#endif\n\n#if defined(VERSION_JP) || defined(VERSION_SH)\nALIGNED8 static const Texture texture_hud_char_beta_key[] = {\n#include \"textures/segment2/segment2.06000.rgba16.inc.c\"\n};\n#endif\n\n#if defined(VERSION_CN)\nALIGNED8 static const Texture texture_hud_char_cn_04A00[] = {\n#include \"textures/segment2/segment2_cn.04A00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_04C00[] = {\n#include \"textures/segment2/segment2_cn.04C00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_04E00[] = {\n#include \"textures/segment2/segment2_cn.04E00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_05000[] = {\n#include \"textures/segment2/segment2_cn.05000.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_05200[] = {\n#include \"textures/segment2/segment2_cn.05200.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_05400[] = {\n#include \"textures/segment2/segment2_cn.05400.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_05600[] = {\n#include \"textures/segment2/segment2_cn.05600.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_05800[] = {\n#include \"textures/segment2/segment2_cn.05800.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_05A00[] = {\n#include \"textures/segment2/segment2_cn.05A00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_05C00[] = {\n#include \"textures/segment2/segment2_cn.05C00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_05E00[] = {\n#include \"textures/segment2/segment2_cn.05E00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_06000[] = {\n#include \"textures/segment2/segment2_cn.06000.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_06200[] = {\n#include \"textures/segment2/segment2_cn.06200.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_06400[] = {\n#include \"textures/segment2/segment2_cn.06400.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_06600[] = {\n#include \"textures/segment2/segment2_cn.06600.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_06800[] = {\n#include \"textures/segment2/segment2_cn.06800.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_06A00[] = {\n#include \"textures/segment2/segment2_cn.06A00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_06C00[] = {\n#include \"textures/segment2/segment2_cn.06C00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_06E00[] = {\n#include \"textures/segment2/segment2_cn.06E00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_07000[] = {\n#include \"textures/segment2/segment2_cn.07000.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_07200[] = {\n#include \"textures/segment2/segment2_cn.07200.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_07400[] = {\n#include \"textures/segment2/segment2_cn.07400.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_07600[] = {\n#include \"textures/segment2/segment2_cn.07600.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_07800[] = {\n#include \"textures/segment2/segment2_cn.07800.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_07A00[] = {\n#include \"textures/segment2/segment2_cn.07A00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_07C00[] = {\n#include \"textures/segment2/segment2_cn.07C00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_07E00[] = {\n#include \"textures/segment2/segment2_cn.07E00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_08000[] = {\n#include \"textures/segment2/segment2_cn.08000.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_08200[] = {\n#include \"textures/segment2/segment2_cn.08200.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_08400[] = {\n#include \"textures/segment2/segment2_cn.08400.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_08600[] = {\n#include \"textures/segment2/segment2_cn.08600.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_08800[] = {\n#include \"textures/segment2/segment2_cn.08800.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_08A00[] = {\n#include \"textures/segment2/segment2_cn.08A00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_08C00[] = {\n#include \"textures/segment2/segment2_cn.08C00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_08E00[] = {\n#include \"textures/segment2/segment2_cn.08E00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_09000[] = {\n#include \"textures/segment2/segment2_cn.09000.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_09200[] = {\n#include \"textures/segment2/segment2_cn.09200.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_09400[] = {\n#include \"textures/segment2/segment2_cn.09400.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_09600[] = {\n#include \"textures/segment2/segment2_cn.09600.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_09800[] = {\n#include \"textures/segment2/segment2_cn.09800.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_09A00[] = {\n#include \"textures/segment2/segment2_cn.09A00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_09C00[] = {\n#include \"textures/segment2/segment2_cn.09C00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_09E00[] = {\n#include \"textures/segment2/segment2_cn.09E00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0A000[] = {\n#include \"textures/segment2/segment2_cn.0A000.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0A200[] = {\n#include \"textures/segment2/segment2_cn.0A200.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0A400[] = {\n#include \"textures/segment2/segment2_cn.0A400.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0A600[] = {\n#include \"textures/segment2/segment2_cn.0A600.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0A800[] = {\n#include \"textures/segment2/segment2_cn.0A800.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0AA00[] = {\n#include \"textures/segment2/segment2_cn.0AA00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0AC00[] = {\n#include \"textures/segment2/segment2_cn.0AC00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0AE00[] = {\n#include \"textures/segment2/segment2_cn.0AE00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0B000[] = {\n#include \"textures/segment2/segment2_cn.0B000.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0B200[] = {\n#include \"textures/segment2/segment2_cn.0B200.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0B400[] = {\n#include \"textures/segment2/segment2_cn.0B400.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0B600[] = {\n#include \"textures/segment2/segment2_cn.0B600.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0B800[] = {\n#include \"textures/segment2/segment2_cn.0B800.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0BA00[] = {\n#include \"textures/segment2/segment2_cn.0BA00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0BC00[] = {\n#include \"textures/segment2/segment2_cn.0BC00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0BE00[] = {\n#include \"textures/segment2/segment2_cn.0BE00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0C000[] = {\n#include \"textures/segment2/segment2_cn.0C000.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0C200[] = {\n#include \"textures/segment2/segment2_cn.0C200.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0C400[] = {\n#include \"textures/segment2/segment2_cn.0C400.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0C600[] = {\n#include \"textures/segment2/segment2_cn.0C600.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0C800[] = {\n#include \"textures/segment2/segment2_cn.0C800.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0CA00[] = {\n#include \"textures/segment2/segment2_cn.0CA00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0CC00[] = {\n#include \"textures/segment2/segment2_cn.0CC00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0CE00[] = {\n#include \"textures/segment2/segment2_cn.0CE00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0D000[] = {\n#include \"textures/segment2/segment2_cn.0D000.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0D200[] = {\n#include \"textures/segment2/segment2_cn.0D200.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0D400[] = {\n#include \"textures/segment2/segment2_cn.0D400.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0D600[] = {\n#include \"textures/segment2/segment2_cn.0D600.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0D800[] = {\n#include \"textures/segment2/segment2_cn.0D800.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0DA00[] = {\n#include \"textures/segment2/segment2_cn.0DA00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0DC00[] = {\n#include \"textures/segment2/segment2_cn.0DC00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0DE00[] = {\n#include \"textures/segment2/segment2_cn.0DE00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0E000[] = {\n#include \"textures/segment2/segment2_cn.0E000.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0E200[] = {\n#include \"textures/segment2/segment2_cn.0E200.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0E400[] = {\n#include \"textures/segment2/segment2_cn.0E400.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0E600[] = {\n#include \"textures/segment2/segment2_cn.0E600.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0E800[] = {\n#include \"textures/segment2/segment2_cn.0E800.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0EA00[] = {\n#include \"textures/segment2/segment2_cn.0EA00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0EC00[] = {\n#include \"textures/segment2/segment2_cn.0EC00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0EE00[] = {\n#include \"textures/segment2/segment2_cn.0EE00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0F000[] = {\n#include \"textures/segment2/segment2_cn.0F000.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0F200[] = {\n#include \"textures/segment2/segment2_cn.0F200.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0F400[] = {\n#include \"textures/segment2/segment2_cn.0F400.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0F600[] = {\n#include \"textures/segment2/segment2_cn.0F600.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0F800[] = {\n#include \"textures/segment2/segment2_cn.0F800.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0FA00[] = {\n#include \"textures/segment2/segment2_cn.0FA00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0FC00[] = {\n#include \"textures/segment2/segment2_cn.0FC00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_0FE00[] = {\n#include \"textures/segment2/segment2_cn.0FE00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_10000[] = {\n#include \"textures/segment2/segment2_cn.10000.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_10200[] = {\n#include \"textures/segment2/segment2_cn.10200.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_10400[] = {\n#include \"textures/segment2/segment2_cn.10400.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_10600[] = {\n#include \"textures/segment2/segment2_cn.10600.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_10800[] = {\n#include \"textures/segment2/segment2_cn.10800.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_10A00[] = {\n#include \"textures/segment2/segment2_cn.10A00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_10C00[] = {\n#include \"textures/segment2/segment2_cn.10C00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_10E00[] = {\n#include \"textures/segment2/segment2_cn.10E00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_11000[] = {\n#include \"textures/segment2/segment2_cn.11000.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_11200[] = {\n#include \"textures/segment2/segment2_cn.11200.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_11400[] = {\n#include \"textures/segment2/segment2_cn.11400.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_11600[] = {\n#include \"textures/segment2/segment2_cn.11600.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_11800[] = {\n#include \"textures/segment2/segment2_cn.11800.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_11A00[] = {\n#include \"textures/segment2/segment2_cn.11A00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_11C00[] = {\n#include \"textures/segment2/segment2_cn.11C00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_11E00[] = {\n#include \"textures/segment2/segment2_cn.11E00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_12000[] = {\n#include \"textures/segment2/segment2_cn.12000.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_12200[] = {\n#include \"textures/segment2/segment2_cn.12200.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_12400[] = {\n#include \"textures/segment2/segment2_cn.12400.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_12600[] = {\n#include \"textures/segment2/segment2_cn.12600.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_12800[] = {\n#include \"textures/segment2/segment2_cn.12800.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_12A00[] = {\n#include \"textures/segment2/segment2_cn.12A00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_12C00[] = {\n#include \"textures/segment2/segment2_cn.12C00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_12E00[] = {\n#include \"textures/segment2/segment2_cn.12E00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_13000[] = {\n#include \"textures/segment2/segment2_cn.13000.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_13200[] = {\n#include \"textures/segment2/segment2_cn.13200.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_13400[] = {\n#include \"textures/segment2/segment2_cn.13400.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_13600[] = {\n#include \"textures/segment2/segment2_cn.13600.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_13800[] = {\n#include \"textures/segment2/segment2_cn.13800.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_13A00[] = {\n#include \"textures/segment2/segment2_cn.13A00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_13C00[] = {\n#include \"textures/segment2/segment2_cn.13C00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_13E00[] = {\n#include \"textures/segment2/segment2_cn.13E00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_cn_14000[] = {\n#include \"textures/segment2/segment2_cn.14000.rgba16.inc.c\"\n};\n#endif // VERSION_CN\n\nALIGNED8 static const Texture texture_credits_char_3[] = {\n#include \"textures/segment2/segment2.06200.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_credits_char_4[] = {\n#include \"textures/segment2/segment2.06280.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_credits_char_6[] = {\n#include \"textures/segment2/segment2.06300.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_credits_char_A[] = {\n#include \"textures/segment2/segment2.06380.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_credits_char_B[] = {\n#include \"textures/segment2/segment2.06400.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_credits_char_C[] = {\n#include \"textures/segment2/segment2.06480.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_credits_char_D[] = {\n#include \"textures/segment2/segment2.06500.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_credits_char_E[] = {\n#include \"textures/segment2/segment2.06580.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_credits_char_F[] = {\n#include \"textures/segment2/segment2.06600.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_credits_char_G[] = {\n#include \"textures/segment2/segment2.06680.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_credits_char_H[] = {\n#include \"textures/segment2/segment2.06700.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_credits_char_I[] = {\n#include \"textures/segment2/segment2.06780.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_credits_char_J[] = {\n#include \"textures/segment2/segment2.06800.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_credits_char_K[] = {\n#include \"textures/segment2/segment2.06880.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_credits_char_L[] = {\n#include \"textures/segment2/segment2.06900.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_credits_char_M[] = {\n#include \"textures/segment2/segment2.06980.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_credits_char_N[] = {\n#include \"textures/segment2/segment2.06A00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_credits_char_O[] = {\n#include \"textures/segment2/segment2.06A80.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_credits_char_P[] = {\n#include \"textures/segment2/segment2.06B00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_credits_char_Q[] = {\n#include \"textures/segment2/segment2.06B80.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_credits_char_R[] = {\n#include \"textures/segment2/segment2.06C00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_credits_char_S[] = {\n#include \"textures/segment2/segment2.06C80.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_credits_char_T[] = {\n#include \"textures/segment2/segment2.06D00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_credits_char_U[] = {\n#include \"textures/segment2/segment2.06D80.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_credits_char_V[] = {\n#include \"textures/segment2/segment2.06E00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_credits_char_W[] = {\n#include \"textures/segment2/segment2.06E80.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_credits_char_X[] = {\n#include \"textures/segment2/segment2.06F00.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_credits_char_Y[] = {\n#include \"textures/segment2/segment2.06F80.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_credits_char_Z[] = {\n#include \"textures/segment2/segment2.07000.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_credits_char_period[] = {\n#include \"textures/segment2/segment2.07080.rgba16.inc.c\"\n};\n\n// JP Small Font\n#if defined(VERSION_JP) || defined(VERSION_SH)\nALIGNED8 static const Texture texture_font_char_jp_0[] = {\n#include \"textures/segment2/segment2.07100.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_1[] = {\n#include \"textures/segment2/segment2.07110.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_2[] = {\n#include \"textures/segment2/segment2.07120.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_3[] = {\n#include \"textures/segment2/segment2.07130.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_4[] = {\n#include \"textures/segment2/segment2.07140.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_5[] = {\n#include \"textures/segment2/segment2.07150.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_6[] = {\n#include \"textures/segment2/segment2.07160.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_7[] = {\n#include \"textures/segment2/segment2.07170.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_8[] = {\n#include \"textures/segment2/segment2.07180.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_9[] = {\n#include \"textures/segment2/segment2.07190.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_A[] = {\n#include \"textures/segment2/segment2.071A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_B[] = {\n#include \"textures/segment2/segment2.071B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_C[] = {\n#include \"textures/segment2/segment2.071C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_D[] = {\n#include \"textures/segment2/segment2.071D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_E[] = {\n#include \"textures/segment2/segment2.071E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_F[] = {\n#include \"textures/segment2/segment2.071F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_G[] = {\n#include \"textures/segment2/segment2.07200.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_H[] = {\n#include \"textures/segment2/segment2.07210.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_I[] = {\n#include \"textures/segment2/segment2.07220.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_J[] = {\n#include \"textures/segment2/segment2.07230.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_K[] = {\n#include \"textures/segment2/segment2.07240.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_L[] = {\n#include \"textures/segment2/segment2.07250.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_M[] = {\n#include \"textures/segment2/segment2.07260.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_N[] = {\n#include \"textures/segment2/segment2.07270.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_O[] = {\n#include \"textures/segment2/segment2.07280.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_P[] = {\n#include \"textures/segment2/segment2.07290.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_Q[] = {\n#include \"textures/segment2/segment2.072A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_R[] = {\n#include \"textures/segment2/segment2.072B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_S[] = {\n#include \"textures/segment2/segment2.072C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_T[] = {\n#include \"textures/segment2/segment2.072D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_U[] = {\n#include \"textures/segment2/segment2.072E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_V[] = {\n#include \"textures/segment2/segment2.072F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_W[] = {\n#include \"textures/segment2/segment2.07300.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_X[] = {\n#include \"textures/segment2/segment2.07310.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_Y[] = {\n#include \"textures/segment2/segment2.07320.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_Z[] = {\n#include \"textures/segment2/segment2.07330.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_long_vowel[] = {\n#include \"textures/segment2/segment2.07340.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_exclamation[] = {\n#include \"textures/segment2/segment2.07350.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_dakuten[] = {\n#include \"textures/segment2/segment2.07360.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_handakuten[] = {\n#include \"textures/segment2/segment2.07370.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_percent[] = {\n#include \"textures/segment2/segment2.07380.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_question[] = {\n#include \"textures/segment2/segment2.07390.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_left_right_arrow[] = {\n#include \"textures/segment2/segment2.073A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_open_parentheses[] = {\n#include \"textures/segment2/segment2.073B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_close_open_parentheses[] = {\n#include \"textures/segment2/segment2.073C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_close_parentheses[] = {\n#include \"textures/segment2/segment2.073D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_coin[] = {\n#include \"textures/segment2/segment2.073E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_multiply[] = {\n#include \"textures/segment2/segment2.073F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_star_filled[] = {\n#include \"textures/segment2/segment2.07400.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_star_hollow[] = {\n#include \"textures/segment2/segment2.07410.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_a[] = {\n#include \"textures/segment2/segment2.07420.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_i[] = {\n#include \"textures/segment2/segment2.07430.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_u[] = {\n#include \"textures/segment2/segment2.07440.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_c[] = {\n#include \"textures/segment2/segment2.07450.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_o[] = {\n#include \"textures/segment2/segment2.07460.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_ka[] = {\n#include \"textures/segment2/segment2.07470.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_ki[] = {\n#include \"textures/segment2/segment2.07480.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_ku[] = {\n#include \"textures/segment2/segment2.07490.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_ke[] = {\n#include \"textures/segment2/segment2.074A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_ko[] = {\n#include \"textures/segment2/segment2.074B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_sa[] = {\n#include \"textures/segment2/segment2.074C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_shi[] = {\n#include \"textures/segment2/segment2.074D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_su[] = {\n#include \"textures/segment2/segment2.074E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_se[] = {\n#include \"textures/segment2/segment2.074F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_so[] = {\n#include \"textures/segment2/segment2.07500.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_ta[] = {\n#include \"textures/segment2/segment2.07510.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_chi[] = {\n#include \"textures/segment2/segment2.07520.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_tsu[] = {\n#include \"textures/segment2/segment2.07530.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_te[] = {\n#include \"textures/segment2/segment2.07540.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_to[] = {\n#include \"textures/segment2/segment2.07550.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_na[] = {\n#include \"textures/segment2/segment2.07560.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_ni[] = {\n#include \"textures/segment2/segment2.07570.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_nu[] = {\n#include \"textures/segment2/segment2.07580.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_ne[] = {\n#include \"textures/segment2/segment2.07590.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_no[] = {\n#include \"textures/segment2/segment2.075A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_ha[] = {\n#include \"textures/segment2/segment2.075B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_hi[] = {\n#include \"textures/segment2/segment2.075C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_hu[] = {\n#include \"textures/segment2/segment2.075D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_he[] = {\n#include \"textures/segment2/segment2.075E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_ho[] = {\n#include \"textures/segment2/segment2.075F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_ma[] = {\n#include \"textures/segment2/segment2.07600.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_mi[] = {\n#include \"textures/segment2/segment2.07610.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_mu[] = {\n#include \"textures/segment2/segment2.07620.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_me[] = {\n#include \"textures/segment2/segment2.07630.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_mo[] = {\n#include \"textures/segment2/segment2.07640.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_ya[] = {\n#include \"textures/segment2/segment2.07650.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_yu[] = {\n#include \"textures/segment2/segment2.07660.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_yo[] = {\n#include \"textures/segment2/segment2.07670.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_ra[] = {\n#include \"textures/segment2/segment2.07680.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_ri[] = {\n#include \"textures/segment2/segment2.07690.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_ru[] = {\n#include \"textures/segment2/segment2.076A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_re[] = {\n#include \"textures/segment2/segment2.076B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_ro[] = {\n#include \"textures/segment2/segment2.076C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_wa[] = {\n#include \"textures/segment2/segment2.076D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_wo[] = {\n#include \"textures/segment2/segment2.076E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_n[] = {\n#include \"textures/segment2/segment2.076F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_small_e[] = {\n#include \"textures/segment2/segment2.07700.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_small_tsu[] = {\n#include \"textures/segment2/segment2.07710.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_small_ya[] = {\n#include \"textures/segment2/segment2.07720.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_small_yu[] = {\n#include \"textures/segment2/segment2.07730.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_small_yo[] = {\n#include \"textures/segment2/segment2.07740.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_small_a[] = {\n#include \"textures/segment2/segment2.07750.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_small_i[] = {\n#include \"textures/segment2/segment2.07760.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_small_o[] = {\n#include \"textures/segment2/segment2.07770.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_hiragana_small_u[] = {\n#include \"textures/segment2/segment2.07780.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_interpunct[] = {\n#include \"textures/segment2/segment2.07790.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_comma[] = {\n#include \"textures/segment2/segment2.077A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_a[] = {\n#include \"textures/segment2/segment2.077B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_i[] = {\n#include \"textures/segment2/segment2.077C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_u[] = {\n#include \"textures/segment2/segment2.077D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_e[] = {\n#include \"textures/segment2/segment2.077E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_o[] = {\n#include \"textures/segment2/segment2.077F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_ka[] = {\n#include \"textures/segment2/segment2.07800.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_ki[] = {\n#include \"textures/segment2/segment2.07810.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_ku[] = {\n#include \"textures/segment2/segment2.07820.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_ke[] = {\n#include \"textures/segment2/segment2.07830.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_ko[] = {\n#include \"textures/segment2/segment2.07840.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_sa[] = {\n#include \"textures/segment2/segment2.07850.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_shi[] = {\n#include \"textures/segment2/segment2.07860.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_su[] = {\n#include \"textures/segment2/segment2.07870.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_se[] = {\n#include \"textures/segment2/segment2.07880.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_so[] = {\n#include \"textures/segment2/segment2.07890.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_ta[] = {\n#include \"textures/segment2/segment2.078A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_chi[] = {\n#include \"textures/segment2/segment2.078B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_tsu[] = {\n#include \"textures/segment2/segment2.078C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_te[] = {\n#include \"textures/segment2/segment2.078D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_to[] = {\n#include \"textures/segment2/segment2.078E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_na[] = {\n#include \"textures/segment2/segment2.078F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_ni[] = {\n#include \"textures/segment2/segment2.07900.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_nu[] = {\n#include \"textures/segment2/segment2.07910.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_ne[] = {\n#include \"textures/segment2/segment2.07920.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_no[] = {\n#include \"textures/segment2/segment2.07930.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_ha[] = {\n#include \"textures/segment2/segment2.07940.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_hi[] = {\n#include \"textures/segment2/segment2.07950.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_hu[] = {\n#include \"textures/segment2/segment2.07960.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_he[] = {\n#include \"textures/segment2/segment2.07970.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_ho[] = {\n#include \"textures/segment2/segment2.07980.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_ma[] = {\n#include \"textures/segment2/segment2.07990.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_mi[] = {\n#include \"textures/segment2/segment2.079A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_mu[] = {\n#include \"textures/segment2/segment2.079B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_me[] = {\n#include \"textures/segment2/segment2.079C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_mo[] = {\n#include \"textures/segment2/segment2.079D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_ya[] = {\n#include \"textures/segment2/segment2.079E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_yu[] = {\n#include \"textures/segment2/segment2.079F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_yo[] = {\n#include \"textures/segment2/segment2.07A00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_ra[] = {\n#include \"textures/segment2/segment2.07A10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_ri[] = {\n#include \"textures/segment2/segment2.07A20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_ru[] = {\n#include \"textures/segment2/segment2.07A30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_re[] = {\n#include \"textures/segment2/segment2.07A40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_ro[] = {\n#include \"textures/segment2/segment2.07A50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_wa[] = {\n#include \"textures/segment2/segment2.07A60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_n[] = {\n#include \"textures/segment2/segment2.07A70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_small_e[] = {\n#include \"textures/segment2/segment2.07A80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_small_tsu[] = {\n#include \"textures/segment2/segment2.07A90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_small_ya[] = {\n#include \"textures/segment2/segment2.07AA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_small_yu[] = {\n#include \"textures/segment2/segment2.07AB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_small_yo[] = {\n#include \"textures/segment2/segment2.07AC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_small_a[] = {\n#include \"textures/segment2/segment2.07AD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_small_i[] = {\n#include \"textures/segment2/segment2.07AE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_small_u[] = {\n#include \"textures/segment2/segment2.07AF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_katakana_small_o[] = {\n#include \"textures/segment2/segment2.07B00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_double_quotation_open[] = {\n#include \"textures/segment2/segment2.07B10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_double_quotation_close[] = {\n#include \"textures/segment2/segment2.07B20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_wave_dash[] = {\n#include \"textures/segment2/segment2.07B30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_jp_ellipsis[] = {\n#include \"textures/segment2/segment2.07B40.ia1.inc.c\"\n};\n\n// EU Small Font\n#elif defined(VERSION_EU)\n\nALIGNED8 static const Texture texture_font_char_eu_0[] = {\n#include \"textures/segment2/font_graphics.05F00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_1[] = {\n#include \"textures/segment2/font_graphics.05F10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_2[] = {\n#include \"textures/segment2/font_graphics.05F20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_3[] = {\n#include \"textures/segment2/font_graphics.05F30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_4[] = {\n#include \"textures/segment2/font_graphics.05F40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_5[] = {\n#include \"textures/segment2/font_graphics.05F50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_6[] = {\n#include \"textures/segment2/font_graphics.05F60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_7[] = {\n#include \"textures/segment2/font_graphics.05F70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_8[] = {\n#include \"textures/segment2/font_graphics.05F80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_9[] = {\n#include \"textures/segment2/font_graphics.05F90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_A[] = {\n#include \"textures/segment2/font_graphics.05FA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_B[] = {\n#include \"textures/segment2/font_graphics.05FB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_C[] = {\n#include \"textures/segment2/font_graphics.05FC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_D[] = {\n#include \"textures/segment2/font_graphics.05FD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_E[] = {\n#include \"textures/segment2/font_graphics.05FE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_F[] = {\n#include \"textures/segment2/font_graphics.05FF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_G[] = {\n#include \"textures/segment2/font_graphics.06000.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_H[] = {\n#include \"textures/segment2/font_graphics.06010.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_I[] = {\n#include \"textures/segment2/font_graphics.06020.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_J[] = {\n#include \"textures/segment2/font_graphics.06030.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_K[] = {\n#include \"textures/segment2/font_graphics.06040.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_L[] = {\n#include \"textures/segment2/font_graphics.06050.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_M[] = {\n#include \"textures/segment2/font_graphics.06060.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_N[] = {\n#include \"textures/segment2/font_graphics.06070.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_O[] = {\n#include \"textures/segment2/font_graphics.06080.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_P[] = {\n#include \"textures/segment2/font_graphics.06090.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_Q[] = {\n#include \"textures/segment2/font_graphics.060A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_R[] = {\n#include \"textures/segment2/font_graphics.060B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_S[] = {\n#include \"textures/segment2/font_graphics.060C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_T[] = {\n#include \"textures/segment2/font_graphics.060D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_U[] = {\n#include \"textures/segment2/font_graphics.060E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_V[] = {\n#include \"textures/segment2/font_graphics.060F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_W[] = {\n#include \"textures/segment2/font_graphics.06100.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_X[] = {\n#include \"textures/segment2/font_graphics.06110.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_Y[] = {\n#include \"textures/segment2/font_graphics.06120.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_Z[] = {\n#include \"textures/segment2/font_graphics.06130.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_a[] = {\n#include \"textures/segment2/font_graphics.06140.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_b[] = {\n#include \"textures/segment2/font_graphics.06150.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_c[] = {\n#include \"textures/segment2/font_graphics.06160.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_d[] = {\n#include \"textures/segment2/font_graphics.06170.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_e[] = {\n#include \"textures/segment2/font_graphics.06180.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_f[] = {\n#include \"textures/segment2/font_graphics.06190.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_g[] = {\n#include \"textures/segment2/font_graphics.061A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_h[] = {\n#include \"textures/segment2/font_graphics.061B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_i[] = {\n#include \"textures/segment2/font_graphics.061C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_j[] = {\n#include \"textures/segment2/font_graphics.061D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_k[] = {\n#include \"textures/segment2/font_graphics.061E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_l[] = {\n#include \"textures/segment2/font_graphics.061F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_m[] = {\n#include \"textures/segment2/font_graphics.06200.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_n[] = {\n#include \"textures/segment2/font_graphics.06210.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_o[] = {\n#include \"textures/segment2/font_graphics.06220.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_p[] = {\n#include \"textures/segment2/font_graphics.06230.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_q[] = {\n#include \"textures/segment2/font_graphics.06240.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_r[] = {\n#include \"textures/segment2/font_graphics.06250.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_s[] = {\n#include \"textures/segment2/font_graphics.06260.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_t[] = {\n#include \"textures/segment2/font_graphics.06270.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_u[] = {\n#include \"textures/segment2/font_graphics.06280.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_v[] = {\n#include \"textures/segment2/font_graphics.06290.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_w[] = {\n#include \"textures/segment2/font_graphics.062A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_x[] = {\n#include \"textures/segment2/font_graphics.062B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_y[] = {\n#include \"textures/segment2/font_graphics.062C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_z[] = {\n#include \"textures/segment2/font_graphics.062D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_left_right_arrow[] = {\n#include \"textures/segment2/font_graphics.062E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_ampersand[] = {\n#include \"textures/segment2/font_graphics.062F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_exclamation[] = {\n#include \"textures/segment2/font_graphics.06300.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_coin[] = {\n#include \"textures/segment2/font_graphics.06310.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_multiply[] = {\n#include \"textures/segment2/font_graphics.06320.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_open_parentheses[] = {\n#include \"textures/segment2/font_graphics.06330.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_close_open_parentheses[] = {\n#include \"textures/segment2/font_graphics.06340.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_close_parentheses[] = {\n#include \"textures/segment2/font_graphics.06350.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_tilde[] = {\n#include \"textures/segment2/font_graphics.06360.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_period[] = {\n#include \"textures/segment2/font_graphics.06370.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_percent[] = {\n#include \"textures/segment2/font_graphics.06380.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_interpunct[] = {\n#include \"textures/segment2/font_graphics.06390.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_comma[] = {\n#include \"textures/segment2/font_graphics.063A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_apostrophe[] = {\n#include \"textures/segment2/font_graphics.063B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_question[] = {\n#include \"textures/segment2/font_graphics.063C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_star_filled[] = {\n#include \"textures/segment2/font_graphics.063D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_star_hollow[] = {\n#include \"textures/segment2/font_graphics.063E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_double_quote_open[] = {\n#include \"textures/segment2/font_graphics.063F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_double_quote_close[] = {\n#include \"textures/segment2/font_graphics.06400.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_colon[] = {\n#include \"textures/segment2/font_graphics.06410.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_EU_slash[] = {\n#include \"textures/segment2/font_graphics.06420.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_button_A[] = {\n#include \"textures/segment2/font_graphics.06430.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_button_B[] = {\n#include \"textures/segment2/font_graphics.06440.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_button_C[] = {\n#include \"textures/segment2/font_graphics.06450.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_button_Z[] = {\n#include \"textures/segment2/font_graphics.06460.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_button_R[] = {\n#include \"textures/segment2/font_graphics.06470.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_button_C_up[] = {\n#include \"textures/segment2/font_graphics.06480.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_button_C_down[] = {\n#include \"textures/segment2/font_graphics.06490.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_button_C_left[] = {\n#include \"textures/segment2/font_graphics.064A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_button_C_right[] = {\n#include \"textures/segment2/font_graphics.064B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_umlaut[] = {\n#include \"textures/segment2/font_graphics.064C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_circumflex[] = {\n#include \"textures/segment2/font_graphics.064D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_grave[] = {\n#include \"textures/segment2/font_graphics.064E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_acute[] = {\n#include \"textures/segment2/font_graphics.064F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_cedilla[] = {\n#include \"textures/segment2/font_graphics.06500.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_unknown[] = {\n#include \"textures/segment2/font_graphics.06510.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_Cedilla[] = {\n#include \"textures/segment2/font_graphics.06520.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_eu_eszeet[] = {\n#include \"textures/segment2/font_graphics.06530.ia1.inc.c\"\n};\n\n// US Small Font\n#else\nALIGNED8 static const Texture texture_font_char_us_0[] = {\n#include \"textures/segment2/font_graphics.05900.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_1[] = {\n#include \"textures/segment2/font_graphics.05940.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_2[] = {\n#include \"textures/segment2/font_graphics.05980.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_3[] = {\n#include \"textures/segment2/font_graphics.059C0.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_4[] = {\n#include \"textures/segment2/font_graphics.05A00.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_5[] = {\n#include \"textures/segment2/font_graphics.05A40.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_6[] = {\n#include \"textures/segment2/font_graphics.05A80.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_7[] = {\n#include \"textures/segment2/font_graphics.05AC0.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_8[] = {\n#include \"textures/segment2/font_graphics.05B00.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_9[] = {\n#include \"textures/segment2/font_graphics.05B40.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_A[] = {\n#include \"textures/segment2/font_graphics.05B80.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_B[] = {\n#include \"textures/segment2/font_graphics.05BC0.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_C[] = {\n#include \"textures/segment2/font_graphics.05C00.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_D[] = {\n#include \"textures/segment2/font_graphics.05C40.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_E[] = {\n#include \"textures/segment2/font_graphics.05C80.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_F[] = {\n#include \"textures/segment2/font_graphics.05CC0.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_G[] = {\n#include \"textures/segment2/font_graphics.05D00.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_H[] = {\n#include \"textures/segment2/font_graphics.05D40.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_I[] = {\n#include \"textures/segment2/font_graphics.05D80.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_J[] = {\n#include \"textures/segment2/font_graphics.05DC0.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_K[] = {\n#include \"textures/segment2/font_graphics.05E00.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_L[] = {\n#include \"textures/segment2/font_graphics.05E40.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_M[] = {\n#include \"textures/segment2/font_graphics.05E80.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_N[] = {\n#include \"textures/segment2/font_graphics.05EC0.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_O[] = {\n#include \"textures/segment2/font_graphics.05F00.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_P[] = {\n#include \"textures/segment2/font_graphics.05F40.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_Q[] = {\n#include \"textures/segment2/font_graphics.05F80.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_R[] = {\n#include \"textures/segment2/font_graphics.05FC0.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_S[] = {\n#include \"textures/segment2/font_graphics.06000.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_T[] = {\n#include \"textures/segment2/font_graphics.06040.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_U[] = {\n#include \"textures/segment2/font_graphics.06080.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_V[] = {\n#include \"textures/segment2/font_graphics.060C0.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_W[] = {\n#include \"textures/segment2/font_graphics.06100.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_X[] = {\n#include \"textures/segment2/font_graphics.06140.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_Y[] = {\n#include \"textures/segment2/font_graphics.06180.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_Z[] = {\n#include \"textures/segment2/font_graphics.061C0.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_a[] = {\n#include \"textures/segment2/font_graphics.06200.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_b[] = {\n#include \"textures/segment2/font_graphics.06240.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_c[] = {\n#include \"textures/segment2/font_graphics.06280.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_d[] = {\n#include \"textures/segment2/font_graphics.062C0.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_e[] = {\n#include \"textures/segment2/font_graphics.06300.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_f[] = {\n#include \"textures/segment2/font_graphics.06340.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_g[] = {\n#include \"textures/segment2/font_graphics.06380.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_h[] = {\n#include \"textures/segment2/font_graphics.063C0.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_i[] = {\n#include \"textures/segment2/font_graphics.06400.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_j[] = {\n#include \"textures/segment2/font_graphics.06440.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_k[] = {\n#include \"textures/segment2/font_graphics.06480.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_l[] = {\n#include \"textures/segment2/font_graphics.064C0.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_m[] = {\n#include \"textures/segment2/font_graphics.06500.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_n[] = {\n#include \"textures/segment2/font_graphics.06540.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_o[] = {\n#include \"textures/segment2/font_graphics.06580.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_p[] = {\n#include \"textures/segment2/font_graphics.065C0.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_q[] = {\n#include \"textures/segment2/font_graphics.06600.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_r[] = {\n#include \"textures/segment2/font_graphics.06640.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_s[] = {\n#include \"textures/segment2/font_graphics.06680.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_t[] = {\n#include \"textures/segment2/font_graphics.066C0.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_u[] = {\n#include \"textures/segment2/font_graphics.06700.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_v[] = {\n#include \"textures/segment2/font_graphics.06740.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_w[] = {\n#include \"textures/segment2/font_graphics.06780.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_x[] = {\n#include \"textures/segment2/font_graphics.067C0.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_y[] = {\n#include \"textures/segment2/font_graphics.06800.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_z[] = {\n#include \"textures/segment2/font_graphics.06840.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_left_right_arrow[] = {\n#include \"textures/segment2/font_graphics.06880.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_exclamation[] = {\n#include \"textures/segment2/font_graphics.068C0.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_coin[] = {\n#include \"textures/segment2/font_graphics.06900.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_multiply[] = {\n#include \"textures/segment2/font_graphics.06940.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_open_parentheses[] = {\n#include \"textures/segment2/font_graphics.06980.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_close_open_parentheses[] = {\n#include \"textures/segment2/font_graphics.069C0.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_close_parentheses[] = {\n#include \"textures/segment2/font_graphics.06A00.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_tilde[] = {\n#include \"textures/segment2/font_graphics.06A40.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_period[] = {\n#include \"textures/segment2/font_graphics.06A80.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_percent[] = {\n#include \"textures/segment2/font_graphics.06AC0.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_interpunct[] = {\n#include \"textures/segment2/font_graphics.06B00.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_comma[] = {\n#include \"textures/segment2/font_graphics.06B40.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_apostrophe[] = {\n#include \"textures/segment2/font_graphics.06B80.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_question[] = {\n#include \"textures/segment2/font_graphics.06BC0.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_star_filled[] = {\n#include \"textures/segment2/font_graphics.06C00.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_star_hollow[] = {\n#include \"textures/segment2/font_graphics.06C40.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_double_quote_open[] = {\n#include \"textures/segment2/font_graphics.06C80.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_double_quote_close[] = {\n#include \"textures/segment2/font_graphics.06CC0.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_ellipsis[] = {\n#include \"textures/segment2/font_graphics.06D00.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_slash[] = {\n#include \"textures/segment2/font_graphics.06D40.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_ampersand[] = {\n#include \"textures/segment2/font_graphics.06D80.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_button_A[] = {\n#include \"textures/segment2/font_graphics.06DC0.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_button_B[] = {\n#include \"textures/segment2/font_graphics.06E00.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_button_C[] = {\n#include \"textures/segment2/font_graphics.06E40.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_button_Z[] = {\n#include \"textures/segment2/font_graphics.06E80.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_button_R[] = {\n#include \"textures/segment2/font_graphics.06EC0.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_button_C_up[] = {\n#include \"textures/segment2/font_graphics.06F00.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_button_C_down[] = {\n#include \"textures/segment2/font_graphics.06F40.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_button_C_left[] = {\n#include \"textures/segment2/font_graphics.06F80.ia4.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_us_button_C_right[] = {\n#include \"textures/segment2/font_graphics.06FC0.ia4.inc.c\"\n};\n#endif\n\n#if defined(VERSION_CN)\nALIGNED8 static const Texture texture_font_char_cn_16800[] = {\n#include \"textures/segment2/segment2_cn.16800.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16810[] = {\n#include \"textures/segment2/segment2_cn.16810.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16820[] = {\n#include \"textures/segment2/segment2_cn.16820.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16830[] = {\n#include \"textures/segment2/segment2_cn.16830.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16840[] = {\n#include \"textures/segment2/segment2_cn.16840.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16850[] = {\n#include \"textures/segment2/segment2_cn.16850.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16860[] = {\n#include \"textures/segment2/segment2_cn.16860.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16870[] = {\n#include \"textures/segment2/segment2_cn.16870.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16880[] = {\n#include \"textures/segment2/segment2_cn.16880.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16890[] = {\n#include \"textures/segment2/segment2_cn.16890.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_168A0[] = {\n#include \"textures/segment2/segment2_cn.168A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_168B0[] = {\n#include \"textures/segment2/segment2_cn.168B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_168C0[] = {\n#include \"textures/segment2/segment2_cn.168C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_168D0[] = {\n#include \"textures/segment2/segment2_cn.168D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_168E0[] = {\n#include \"textures/segment2/segment2_cn.168E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_168F0[] = {\n#include \"textures/segment2/segment2_cn.168F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16900[] = {\n#include \"textures/segment2/segment2_cn.16900.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16910[] = {\n#include \"textures/segment2/segment2_cn.16910.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16920[] = {\n#include \"textures/segment2/segment2_cn.16920.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16930[] = {\n#include \"textures/segment2/segment2_cn.16930.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16940[] = {\n#include \"textures/segment2/segment2_cn.16940.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16950[] = {\n#include \"textures/segment2/segment2_cn.16950.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16960[] = {\n#include \"textures/segment2/segment2_cn.16960.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16970[] = {\n#include \"textures/segment2/segment2_cn.16970.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16980[] = {\n#include \"textures/segment2/segment2_cn.16980.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16990[] = {\n#include \"textures/segment2/segment2_cn.16990.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_169A0[] = {\n#include \"textures/segment2/segment2_cn.169A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_169B0[] = {\n#include \"textures/segment2/segment2_cn.169B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_169C0[] = {\n#include \"textures/segment2/segment2_cn.169C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_169D0[] = {\n#include \"textures/segment2/segment2_cn.169D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_169E0[] = {\n#include \"textures/segment2/segment2_cn.169E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_169F0[] = {\n#include \"textures/segment2/segment2_cn.169F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16A00[] = {\n#include \"textures/segment2/segment2_cn.16A00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16A10[] = {\n#include \"textures/segment2/segment2_cn.16A10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16A20[] = {\n#include \"textures/segment2/segment2_cn.16A20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16A30[] = {\n#include \"textures/segment2/segment2_cn.16A30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16A40[] = {\n#include \"textures/segment2/segment2_cn.16A40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16A50[] = {\n#include \"textures/segment2/segment2_cn.16A50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16A60[] = {\n#include \"textures/segment2/segment2_cn.16A60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16A70[] = {\n#include \"textures/segment2/segment2_cn.16A70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16A80[] = {\n#include \"textures/segment2/segment2_cn.16A80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16A90[] = {\n#include \"textures/segment2/segment2_cn.16A90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16AA0[] = {\n#include \"textures/segment2/segment2_cn.16AA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16AB0[] = {\n#include \"textures/segment2/segment2_cn.16AB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16AC0[] = {\n#include \"textures/segment2/segment2_cn.16AC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16AD0[] = {\n#include \"textures/segment2/segment2_cn.16AD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16AE0[] = {\n#include \"textures/segment2/segment2_cn.16AE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16AF0[] = {\n#include \"textures/segment2/segment2_cn.16AF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16B00[] = {\n#include \"textures/segment2/segment2_cn.16B00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16B10[] = {\n#include \"textures/segment2/segment2_cn.16B10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16B20[] = {\n#include \"textures/segment2/segment2_cn.16B20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16B30[] = {\n#include \"textures/segment2/segment2_cn.16B30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16B40[] = {\n#include \"textures/segment2/segment2_cn.16B40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16B50[] = {\n#include \"textures/segment2/segment2_cn.16B50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16B60[] = {\n#include \"textures/segment2/segment2_cn.16B60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16B70[] = {\n#include \"textures/segment2/segment2_cn.16B70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16B80[] = {\n#include \"textures/segment2/segment2_cn.16B80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16B90[] = {\n#include \"textures/segment2/segment2_cn.16B90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16BA0[] = {\n#include \"textures/segment2/segment2_cn.16BA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16BB0[] = {\n#include \"textures/segment2/segment2_cn.16BB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16BC0[] = {\n#include \"textures/segment2/segment2_cn.16BC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16BD0[] = {\n#include \"textures/segment2/segment2_cn.16BD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16BE0[] = {\n#include \"textures/segment2/segment2_cn.16BE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16BF0[] = {\n#include \"textures/segment2/segment2_cn.16BF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16C00[] = {\n#include \"textures/segment2/segment2_cn.16C00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16C10[] = {\n#include \"textures/segment2/segment2_cn.16C10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16C20[] = {\n#include \"textures/segment2/segment2_cn.16C20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16C30[] = {\n#include \"textures/segment2/segment2_cn.16C30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16C40[] = {\n#include \"textures/segment2/segment2_cn.16C40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16C50[] = {\n#include \"textures/segment2/segment2_cn.16C50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16C60[] = {\n#include \"textures/segment2/segment2_cn.16C60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16C70[] = {\n#include \"textures/segment2/segment2_cn.16C70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16C80[] = {\n#include \"textures/segment2/segment2_cn.16C80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16C90[] = {\n#include \"textures/segment2/segment2_cn.16C90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16CA0[] = {\n#include \"textures/segment2/segment2_cn.16CA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16CB0[] = {\n#include \"textures/segment2/segment2_cn.16CB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16CC0[] = {\n#include \"textures/segment2/segment2_cn.16CC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16CD0[] = {\n#include \"textures/segment2/segment2_cn.16CD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16CE0[] = {\n#include \"textures/segment2/segment2_cn.16CE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16CF0[] = {\n#include \"textures/segment2/segment2_cn.16CF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16D00[] = {\n#include \"textures/segment2/segment2_cn.16D00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16D10[] = {\n#include \"textures/segment2/segment2_cn.16D10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16D20[] = {\n#include \"textures/segment2/segment2_cn.16D20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16D30[] = {\n#include \"textures/segment2/segment2_cn.16D30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16D40[] = {\n#include \"textures/segment2/segment2_cn.16D40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16D50[] = {\n#include \"textures/segment2/segment2_cn.16D50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16D60[] = {\n#include \"textures/segment2/segment2_cn.16D60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16D70[] = {\n#include \"textures/segment2/segment2_cn.16D70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16D80[] = {\n#include \"textures/segment2/segment2_cn.16D80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16D90[] = {\n#include \"textures/segment2/segment2_cn.16D90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16DA0[] = {\n#include \"textures/segment2/segment2_cn.16DA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16DB0[] = {\n#include \"textures/segment2/segment2_cn.16DB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16DC0[] = {\n#include \"textures/segment2/segment2_cn.16DC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16DD0[] = {\n#include \"textures/segment2/segment2_cn.16DD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16DE0[] = {\n#include \"textures/segment2/segment2_cn.16DE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16DF0[] = {\n#include \"textures/segment2/segment2_cn.16DF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16E00[] = {\n#include \"textures/segment2/segment2_cn.16E00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16E10[] = {\n#include \"textures/segment2/segment2_cn.16E10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16E20[] = {\n#include \"textures/segment2/segment2_cn.16E20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16E30[] = {\n#include \"textures/segment2/segment2_cn.16E30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16E40[] = {\n#include \"textures/segment2/segment2_cn.16E40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16E50[] = {\n#include \"textures/segment2/segment2_cn.16E50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16E60[] = {\n#include \"textures/segment2/segment2_cn.16E60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16E70[] = {\n#include \"textures/segment2/segment2_cn.16E70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16E80[] = {\n#include \"textures/segment2/segment2_cn.16E80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16E90[] = {\n#include \"textures/segment2/segment2_cn.16E90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16EA0[] = {\n#include \"textures/segment2/segment2_cn.16EA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16EB0[] = {\n#include \"textures/segment2/segment2_cn.16EB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16EC0[] = {\n#include \"textures/segment2/segment2_cn.16EC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16ED0[] = {\n#include \"textures/segment2/segment2_cn.16ED0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16EE0[] = {\n#include \"textures/segment2/segment2_cn.16EE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16EF0[] = {\n#include \"textures/segment2/segment2_cn.16EF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16F00[] = {\n#include \"textures/segment2/segment2_cn.16F00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16F10[] = {\n#include \"textures/segment2/segment2_cn.16F10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16F20[] = {\n#include \"textures/segment2/segment2_cn.16F20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16F30[] = {\n#include \"textures/segment2/segment2_cn.16F30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16F40[] = {\n#include \"textures/segment2/segment2_cn.16F40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16F50[] = {\n#include \"textures/segment2/segment2_cn.16F50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16F60[] = {\n#include \"textures/segment2/segment2_cn.16F60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16F70[] = {\n#include \"textures/segment2/segment2_cn.16F70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16F80[] = {\n#include \"textures/segment2/segment2_cn.16F80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16F90[] = {\n#include \"textures/segment2/segment2_cn.16F90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16FA0[] = {\n#include \"textures/segment2/segment2_cn.16FA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16FB0[] = {\n#include \"textures/segment2/segment2_cn.16FB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16FC0[] = {\n#include \"textures/segment2/segment2_cn.16FC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16FD0[] = {\n#include \"textures/segment2/segment2_cn.16FD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16FE0[] = {\n#include \"textures/segment2/segment2_cn.16FE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_16FF0[] = {\n#include \"textures/segment2/segment2_cn.16FF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17000[] = {\n#include \"textures/segment2/segment2_cn.17000.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17010[] = {\n#include \"textures/segment2/segment2_cn.17010.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17020[] = {\n#include \"textures/segment2/segment2_cn.17020.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17030[] = {\n#include \"textures/segment2/segment2_cn.17030.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17040[] = {\n#include \"textures/segment2/segment2_cn.17040.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17050[] = {\n#include \"textures/segment2/segment2_cn.17050.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17060[] = {\n#include \"textures/segment2/segment2_cn.17060.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17070[] = {\n#include \"textures/segment2/segment2_cn.17070.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17080[] = {\n#include \"textures/segment2/segment2_cn.17080.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17090[] = {\n#include \"textures/segment2/segment2_cn.17090.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_170A0[] = {\n#include \"textures/segment2/segment2_cn.170A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_170B0[] = {\n#include \"textures/segment2/segment2_cn.170B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_170C0[] = {\n#include \"textures/segment2/segment2_cn.170C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_170D0[] = {\n#include \"textures/segment2/segment2_cn.170D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_170E0[] = {\n#include \"textures/segment2/segment2_cn.170E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_170F0[] = {\n#include \"textures/segment2/segment2_cn.170F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17100[] = {\n#include \"textures/segment2/segment2_cn.17100.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17110[] = {\n#include \"textures/segment2/segment2_cn.17110.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17120[] = {\n#include \"textures/segment2/segment2_cn.17120.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17130[] = {\n#include \"textures/segment2/segment2_cn.17130.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17140[] = {\n#include \"textures/segment2/segment2_cn.17140.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17150[] = {\n#include \"textures/segment2/segment2_cn.17150.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17160[] = {\n#include \"textures/segment2/segment2_cn.17160.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17170[] = {\n#include \"textures/segment2/segment2_cn.17170.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17180[] = {\n#include \"textures/segment2/segment2_cn.17180.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17190[] = {\n#include \"textures/segment2/segment2_cn.17190.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_171A0[] = {\n#include \"textures/segment2/segment2_cn.171A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_171B0[] = {\n#include \"textures/segment2/segment2_cn.171B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_171C0[] = {\n#include \"textures/segment2/segment2_cn.171C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_171D0[] = {\n#include \"textures/segment2/segment2_cn.171D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_171E0[] = {\n#include \"textures/segment2/segment2_cn.171E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_171F0[] = {\n#include \"textures/segment2/segment2_cn.171F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17200[] = {\n#include \"textures/segment2/segment2_cn.17200.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17210[] = {\n#include \"textures/segment2/segment2_cn.17210.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17220[] = {\n#include \"textures/segment2/segment2_cn.17220.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17230[] = {\n#include \"textures/segment2/segment2_cn.17230.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17240[] = {\n#include \"textures/segment2/segment2_cn.17240.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17250[] = {\n#include \"textures/segment2/segment2_cn.17250.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17260[] = {\n#include \"textures/segment2/segment2_cn.17260.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17270[] = {\n#include \"textures/segment2/segment2_cn.17270.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17280[] = {\n#include \"textures/segment2/segment2_cn.17280.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17290[] = {\n#include \"textures/segment2/segment2_cn.17290.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_172A0[] = {\n#include \"textures/segment2/segment2_cn.172A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_172B0[] = {\n#include \"textures/segment2/segment2_cn.172B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_172C0[] = {\n#include \"textures/segment2/segment2_cn.172C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_172D0[] = {\n#include \"textures/segment2/segment2_cn.172D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_172E0[] = {\n#include \"textures/segment2/segment2_cn.172E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_172F0[] = {\n#include \"textures/segment2/segment2_cn.172F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17300[] = {\n#include \"textures/segment2/segment2_cn.17300.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17310[] = {\n#include \"textures/segment2/segment2_cn.17310.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17320[] = {\n#include \"textures/segment2/segment2_cn.17320.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17330[] = {\n#include \"textures/segment2/segment2_cn.17330.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17340[] = {\n#include \"textures/segment2/segment2_cn.17340.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17350[] = {\n#include \"textures/segment2/segment2_cn.17350.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17360[] = {\n#include \"textures/segment2/segment2_cn.17360.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17370[] = {\n#include \"textures/segment2/segment2_cn.17370.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17380[] = {\n#include \"textures/segment2/segment2_cn.17380.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17390[] = {\n#include \"textures/segment2/segment2_cn.17390.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_173A0[] = {\n#include \"textures/segment2/segment2_cn.173A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_173B0[] = {\n#include \"textures/segment2/segment2_cn.173B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_173C0[] = {\n#include \"textures/segment2/segment2_cn.173C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_173D0[] = {\n#include \"textures/segment2/segment2_cn.173D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_173E0[] = {\n#include \"textures/segment2/segment2_cn.173E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_173F0[] = {\n#include \"textures/segment2/segment2_cn.173F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17400[] = {\n#include \"textures/segment2/segment2_cn.17400.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17410[] = {\n#include \"textures/segment2/segment2_cn.17410.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17420[] = {\n#include \"textures/segment2/segment2_cn.17420.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17430[] = {\n#include \"textures/segment2/segment2_cn.17430.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17440[] = {\n#include \"textures/segment2/segment2_cn.17440.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17450[] = {\n#include \"textures/segment2/segment2_cn.17450.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17460[] = {\n#include \"textures/segment2/segment2_cn.17460.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17470[] = {\n#include \"textures/segment2/segment2_cn.17470.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17480[] = {\n#include \"textures/segment2/segment2_cn.17480.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17490[] = {\n#include \"textures/segment2/segment2_cn.17490.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_174A0[] = {\n#include \"textures/segment2/segment2_cn.174A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_174B0[] = {\n#include \"textures/segment2/segment2_cn.174B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_174C0[] = {\n#include \"textures/segment2/segment2_cn.174C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_174D0[] = {\n#include \"textures/segment2/segment2_cn.174D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_174E0[] = {\n#include \"textures/segment2/segment2_cn.174E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_174F0[] = {\n#include \"textures/segment2/segment2_cn.174F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17500[] = {\n#include \"textures/segment2/segment2_cn.17500.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17510[] = {\n#include \"textures/segment2/segment2_cn.17510.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17520[] = {\n#include \"textures/segment2/segment2_cn.17520.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17530[] = {\n#include \"textures/segment2/segment2_cn.17530.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17540[] = {\n#include \"textures/segment2/segment2_cn.17540.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17550[] = {\n#include \"textures/segment2/segment2_cn.17550.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17560[] = {\n#include \"textures/segment2/segment2_cn.17560.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17570[] = {\n#include \"textures/segment2/segment2_cn.17570.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17580[] = {\n#include \"textures/segment2/segment2_cn.17580.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17590[] = {\n#include \"textures/segment2/segment2_cn.17590.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_175A0[] = {\n#include \"textures/segment2/segment2_cn.175A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_175B0[] = {\n#include \"textures/segment2/segment2_cn.175B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_175C0[] = {\n#include \"textures/segment2/segment2_cn.175C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_175D0[] = {\n#include \"textures/segment2/segment2_cn.175D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_175E0[] = {\n#include \"textures/segment2/segment2_cn.175E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_175F0[] = {\n#include \"textures/segment2/segment2_cn.175F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17600[] = {\n#include \"textures/segment2/segment2_cn.17600.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17610[] = {\n#include \"textures/segment2/segment2_cn.17610.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17620[] = {\n#include \"textures/segment2/segment2_cn.17620.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17630[] = {\n#include \"textures/segment2/segment2_cn.17630.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17640[] = {\n#include \"textures/segment2/segment2_cn.17640.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17650[] = {\n#include \"textures/segment2/segment2_cn.17650.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17660[] = {\n#include \"textures/segment2/segment2_cn.17660.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17670[] = {\n#include \"textures/segment2/segment2_cn.17670.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17680[] = {\n#include \"textures/segment2/segment2_cn.17680.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17690[] = {\n#include \"textures/segment2/segment2_cn.17690.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_176A0[] = {\n#include \"textures/segment2/segment2_cn.176A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_176B0[] = {\n#include \"textures/segment2/segment2_cn.176B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_176C0[] = {\n#include \"textures/segment2/segment2_cn.176C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_176D0[] = {\n#include \"textures/segment2/segment2_cn.176D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_176E0[] = {\n#include \"textures/segment2/segment2_cn.176E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_176F0[] = {\n#include \"textures/segment2/segment2_cn.176F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17700[] = {\n#include \"textures/segment2/segment2_cn.17700.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17710[] = {\n#include \"textures/segment2/segment2_cn.17710.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17720[] = {\n#include \"textures/segment2/segment2_cn.17720.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17730[] = {\n#include \"textures/segment2/segment2_cn.17730.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17740[] = {\n#include \"textures/segment2/segment2_cn.17740.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17750[] = {\n#include \"textures/segment2/segment2_cn.17750.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17760[] = {\n#include \"textures/segment2/segment2_cn.17760.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17770[] = {\n#include \"textures/segment2/segment2_cn.17770.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17780[] = {\n#include \"textures/segment2/segment2_cn.17780.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17790[] = {\n#include \"textures/segment2/segment2_cn.17790.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_177A0[] = {\n#include \"textures/segment2/segment2_cn.177A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_177B0[] = {\n#include \"textures/segment2/segment2_cn.177B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_177C0[] = {\n#include \"textures/segment2/segment2_cn.177C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_177D0[] = {\n#include \"textures/segment2/segment2_cn.177D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_177E0[] = {\n#include \"textures/segment2/segment2_cn.177E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_177F0[] = {\n#include \"textures/segment2/segment2_cn.177F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17800[] = {\n#include \"textures/segment2/segment2_cn.17800.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17810[] = {\n#include \"textures/segment2/segment2_cn.17810.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17820[] = {\n#include \"textures/segment2/segment2_cn.17820.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17830[] = {\n#include \"textures/segment2/segment2_cn.17830.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17840[] = {\n#include \"textures/segment2/segment2_cn.17840.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17850[] = {\n#include \"textures/segment2/segment2_cn.17850.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17860[] = {\n#include \"textures/segment2/segment2_cn.17860.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17870[] = {\n#include \"textures/segment2/segment2_cn.17870.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17880[] = {\n#include \"textures/segment2/segment2_cn.17880.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17890[] = {\n#include \"textures/segment2/segment2_cn.17890.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_178A0[] = {\n#include \"textures/segment2/segment2_cn.178A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_178B0[] = {\n#include \"textures/segment2/segment2_cn.178B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_178C0[] = {\n#include \"textures/segment2/segment2_cn.178C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_178D0[] = {\n#include \"textures/segment2/segment2_cn.178D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_178E0[] = {\n#include \"textures/segment2/segment2_cn.178E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_178F0[] = {\n#include \"textures/segment2/segment2_cn.178F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17900[] = {\n#include \"textures/segment2/segment2_cn.17900.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17910[] = {\n#include \"textures/segment2/segment2_cn.17910.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17920[] = {\n#include \"textures/segment2/segment2_cn.17920.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17930[] = {\n#include \"textures/segment2/segment2_cn.17930.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17940[] = {\n#include \"textures/segment2/segment2_cn.17940.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17950[] = {\n#include \"textures/segment2/segment2_cn.17950.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17960[] = {\n#include \"textures/segment2/segment2_cn.17960.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17970[] = {\n#include \"textures/segment2/segment2_cn.17970.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17980[] = {\n#include \"textures/segment2/segment2_cn.17980.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17990[] = {\n#include \"textures/segment2/segment2_cn.17990.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_179A0[] = {\n#include \"textures/segment2/segment2_cn.179A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_179B0[] = {\n#include \"textures/segment2/segment2_cn.179B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_179C0[] = {\n#include \"textures/segment2/segment2_cn.179C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_179D0[] = {\n#include \"textures/segment2/segment2_cn.179D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_179E0[] = {\n#include \"textures/segment2/segment2_cn.179E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_179F0[] = {\n#include \"textures/segment2/segment2_cn.179F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17A00[] = {\n#include \"textures/segment2/segment2_cn.17A00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17A10[] = {\n#include \"textures/segment2/segment2_cn.17A10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17A20[] = {\n#include \"textures/segment2/segment2_cn.17A20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17A30[] = {\n#include \"textures/segment2/segment2_cn.17A30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17A40[] = {\n#include \"textures/segment2/segment2_cn.17A40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17A50[] = {\n#include \"textures/segment2/segment2_cn.17A50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17A60[] = {\n#include \"textures/segment2/segment2_cn.17A60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17A70[] = {\n#include \"textures/segment2/segment2_cn.17A70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17A80[] = {\n#include \"textures/segment2/segment2_cn.17A80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17A90[] = {\n#include \"textures/segment2/segment2_cn.17A90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17AA0[] = {\n#include \"textures/segment2/segment2_cn.17AA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17AB0[] = {\n#include \"textures/segment2/segment2_cn.17AB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17AC0[] = {\n#include \"textures/segment2/segment2_cn.17AC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17AD0[] = {\n#include \"textures/segment2/segment2_cn.17AD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17AE0[] = {\n#include \"textures/segment2/segment2_cn.17AE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17AF0[] = {\n#include \"textures/segment2/segment2_cn.17AF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17B00[] = {\n#include \"textures/segment2/segment2_cn.17B00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17B10[] = {\n#include \"textures/segment2/segment2_cn.17B10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17B20[] = {\n#include \"textures/segment2/segment2_cn.17B20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17B30[] = {\n#include \"textures/segment2/segment2_cn.17B30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17B40[] = {\n#include \"textures/segment2/segment2_cn.17B40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17B50[] = {\n#include \"textures/segment2/segment2_cn.17B50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17B60[] = {\n#include \"textures/segment2/segment2_cn.17B60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17B70[] = {\n#include \"textures/segment2/segment2_cn.17B70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17B80[] = {\n#include \"textures/segment2/segment2_cn.17B80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17B90[] = {\n#include \"textures/segment2/segment2_cn.17B90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17BA0[] = {\n#include \"textures/segment2/segment2_cn.17BA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17BB0[] = {\n#include \"textures/segment2/segment2_cn.17BB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17BC0[] = {\n#include \"textures/segment2/segment2_cn.17BC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17BD0[] = {\n#include \"textures/segment2/segment2_cn.17BD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17BE0[] = {\n#include \"textures/segment2/segment2_cn.17BE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17BF0[] = {\n#include \"textures/segment2/segment2_cn.17BF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17C00[] = {\n#include \"textures/segment2/segment2_cn.17C00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17C10[] = {\n#include \"textures/segment2/segment2_cn.17C10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17C20[] = {\n#include \"textures/segment2/segment2_cn.17C20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17C30[] = {\n#include \"textures/segment2/segment2_cn.17C30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17C40[] = {\n#include \"textures/segment2/segment2_cn.17C40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17C50[] = {\n#include \"textures/segment2/segment2_cn.17C50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17C60[] = {\n#include \"textures/segment2/segment2_cn.17C60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17C70[] = {\n#include \"textures/segment2/segment2_cn.17C70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17C80[] = {\n#include \"textures/segment2/segment2_cn.17C80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17C90[] = {\n#include \"textures/segment2/segment2_cn.17C90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17CA0[] = {\n#include \"textures/segment2/segment2_cn.17CA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17CB0[] = {\n#include \"textures/segment2/segment2_cn.17CB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17CC0[] = {\n#include \"textures/segment2/segment2_cn.17CC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17CD0[] = {\n#include \"textures/segment2/segment2_cn.17CD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17CE0[] = {\n#include \"textures/segment2/segment2_cn.17CE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17CF0[] = {\n#include \"textures/segment2/segment2_cn.17CF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17D00[] = {\n#include \"textures/segment2/segment2_cn.17D00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17D10[] = {\n#include \"textures/segment2/segment2_cn.17D10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17D20[] = {\n#include \"textures/segment2/segment2_cn.17D20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17D30[] = {\n#include \"textures/segment2/segment2_cn.17D30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17D40[] = {\n#include \"textures/segment2/segment2_cn.17D40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17D50[] = {\n#include \"textures/segment2/segment2_cn.17D50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17D60[] = {\n#include \"textures/segment2/segment2_cn.17D60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17D70[] = {\n#include \"textures/segment2/segment2_cn.17D70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17D80[] = {\n#include \"textures/segment2/segment2_cn.17D80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17D90[] = {\n#include \"textures/segment2/segment2_cn.17D90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17DA0[] = {\n#include \"textures/segment2/segment2_cn.17DA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17DB0[] = {\n#include \"textures/segment2/segment2_cn.17DB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17DC0[] = {\n#include \"textures/segment2/segment2_cn.17DC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17DD0[] = {\n#include \"textures/segment2/segment2_cn.17DD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17DE0[] = {\n#include \"textures/segment2/segment2_cn.17DE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17DF0[] = {\n#include \"textures/segment2/segment2_cn.17DF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17E00[] = {\n#include \"textures/segment2/segment2_cn.17E00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17E10[] = {\n#include \"textures/segment2/segment2_cn.17E10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17E20[] = {\n#include \"textures/segment2/segment2_cn.17E20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17E30[] = {\n#include \"textures/segment2/segment2_cn.17E30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17E40[] = {\n#include \"textures/segment2/segment2_cn.17E40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17E50[] = {\n#include \"textures/segment2/segment2_cn.17E50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17E60[] = {\n#include \"textures/segment2/segment2_cn.17E60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17E70[] = {\n#include \"textures/segment2/segment2_cn.17E70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17E80[] = {\n#include \"textures/segment2/segment2_cn.17E80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17E90[] = {\n#include \"textures/segment2/segment2_cn.17E90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17EA0[] = {\n#include \"textures/segment2/segment2_cn.17EA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17EB0[] = {\n#include \"textures/segment2/segment2_cn.17EB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17EC0[] = {\n#include \"textures/segment2/segment2_cn.17EC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17ED0[] = {\n#include \"textures/segment2/segment2_cn.17ED0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17EE0[] = {\n#include \"textures/segment2/segment2_cn.17EE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17EF0[] = {\n#include \"textures/segment2/segment2_cn.17EF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17F00[] = {\n#include \"textures/segment2/segment2_cn.17F00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17F10[] = {\n#include \"textures/segment2/segment2_cn.17F10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17F20[] = {\n#include \"textures/segment2/segment2_cn.17F20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17F30[] = {\n#include \"textures/segment2/segment2_cn.17F30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17F40[] = {\n#include \"textures/segment2/segment2_cn.17F40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17F50[] = {\n#include \"textures/segment2/segment2_cn.17F50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17F60[] = {\n#include \"textures/segment2/segment2_cn.17F60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17F70[] = {\n#include \"textures/segment2/segment2_cn.17F70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17F80[] = {\n#include \"textures/segment2/segment2_cn.17F80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17F90[] = {\n#include \"textures/segment2/segment2_cn.17F90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17FA0[] = {\n#include \"textures/segment2/segment2_cn.17FA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17FB0[] = {\n#include \"textures/segment2/segment2_cn.17FB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17FC0[] = {\n#include \"textures/segment2/segment2_cn.17FC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17FD0[] = {\n#include \"textures/segment2/segment2_cn.17FD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17FE0[] = {\n#include \"textures/segment2/segment2_cn.17FE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_17FF0[] = {\n#include \"textures/segment2/segment2_cn.17FF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18000[] = {\n#include \"textures/segment2/segment2_cn.18000.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18010[] = {\n#include \"textures/segment2/segment2_cn.18010.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18020[] = {\n#include \"textures/segment2/segment2_cn.18020.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18030[] = {\n#include \"textures/segment2/segment2_cn.18030.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18040[] = {\n#include \"textures/segment2/segment2_cn.18040.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18050[] = {\n#include \"textures/segment2/segment2_cn.18050.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18060[] = {\n#include \"textures/segment2/segment2_cn.18060.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18070[] = {\n#include \"textures/segment2/segment2_cn.18070.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18080[] = {\n#include \"textures/segment2/segment2_cn.18080.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18090[] = {\n#include \"textures/segment2/segment2_cn.18090.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_180A0[] = {\n#include \"textures/segment2/segment2_cn.180A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_180B0[] = {\n#include \"textures/segment2/segment2_cn.180B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_180C0[] = {\n#include \"textures/segment2/segment2_cn.180C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_180D0[] = {\n#include \"textures/segment2/segment2_cn.180D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_180E0[] = {\n#include \"textures/segment2/segment2_cn.180E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_180F0[] = {\n#include \"textures/segment2/segment2_cn.180F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18100[] = {\n#include \"textures/segment2/segment2_cn.18100.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18110[] = {\n#include \"textures/segment2/segment2_cn.18110.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18120[] = {\n#include \"textures/segment2/segment2_cn.18120.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18130[] = {\n#include \"textures/segment2/segment2_cn.18130.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18140[] = {\n#include \"textures/segment2/segment2_cn.18140.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18150[] = {\n#include \"textures/segment2/segment2_cn.18150.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18160[] = {\n#include \"textures/segment2/segment2_cn.18160.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18170[] = {\n#include \"textures/segment2/segment2_cn.18170.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18180[] = {\n#include \"textures/segment2/segment2_cn.18180.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18190[] = {\n#include \"textures/segment2/segment2_cn.18190.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_181A0[] = {\n#include \"textures/segment2/segment2_cn.181A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_181B0[] = {\n#include \"textures/segment2/segment2_cn.181B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_181C0[] = {\n#include \"textures/segment2/segment2_cn.181C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_181D0[] = {\n#include \"textures/segment2/segment2_cn.181D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_181E0[] = {\n#include \"textures/segment2/segment2_cn.181E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_181F0[] = {\n#include \"textures/segment2/segment2_cn.181F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18200[] = {\n#include \"textures/segment2/segment2_cn.18200.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18210[] = {\n#include \"textures/segment2/segment2_cn.18210.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18220[] = {\n#include \"textures/segment2/segment2_cn.18220.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18230[] = {\n#include \"textures/segment2/segment2_cn.18230.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18240[] = {\n#include \"textures/segment2/segment2_cn.18240.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18250[] = {\n#include \"textures/segment2/segment2_cn.18250.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18260[] = {\n#include \"textures/segment2/segment2_cn.18260.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18270[] = {\n#include \"textures/segment2/segment2_cn.18270.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18280[] = {\n#include \"textures/segment2/segment2_cn.18280.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18290[] = {\n#include \"textures/segment2/segment2_cn.18290.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_182A0[] = {\n#include \"textures/segment2/segment2_cn.182A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_182B0[] = {\n#include \"textures/segment2/segment2_cn.182B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_182C0[] = {\n#include \"textures/segment2/segment2_cn.182C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_182D0[] = {\n#include \"textures/segment2/segment2_cn.182D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_182E0[] = {\n#include \"textures/segment2/segment2_cn.182E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_182F0[] = {\n#include \"textures/segment2/segment2_cn.182F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18300[] = {\n#include \"textures/segment2/segment2_cn.18300.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18310[] = {\n#include \"textures/segment2/segment2_cn.18310.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18320[] = {\n#include \"textures/segment2/segment2_cn.18320.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18330[] = {\n#include \"textures/segment2/segment2_cn.18330.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18340[] = {\n#include \"textures/segment2/segment2_cn.18340.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18350[] = {\n#include \"textures/segment2/segment2_cn.18350.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18360[] = {\n#include \"textures/segment2/segment2_cn.18360.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18370[] = {\n#include \"textures/segment2/segment2_cn.18370.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18380[] = {\n#include \"textures/segment2/segment2_cn.18380.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18390[] = {\n#include \"textures/segment2/segment2_cn.18390.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_183A0[] = {\n#include \"textures/segment2/segment2_cn.183A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_183B0[] = {\n#include \"textures/segment2/segment2_cn.183B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_183C0[] = {\n#include \"textures/segment2/segment2_cn.183C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_183D0[] = {\n#include \"textures/segment2/segment2_cn.183D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_183E0[] = {\n#include \"textures/segment2/segment2_cn.183E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_183F0[] = {\n#include \"textures/segment2/segment2_cn.183F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18400[] = {\n#include \"textures/segment2/segment2_cn.18400.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18410[] = {\n#include \"textures/segment2/segment2_cn.18410.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18420[] = {\n#include \"textures/segment2/segment2_cn.18420.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18430[] = {\n#include \"textures/segment2/segment2_cn.18430.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18440[] = {\n#include \"textures/segment2/segment2_cn.18440.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18450[] = {\n#include \"textures/segment2/segment2_cn.18450.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18460[] = {\n#include \"textures/segment2/segment2_cn.18460.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18470[] = {\n#include \"textures/segment2/segment2_cn.18470.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18480[] = {\n#include \"textures/segment2/segment2_cn.18480.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18490[] = {\n#include \"textures/segment2/segment2_cn.18490.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_184A0[] = {\n#include \"textures/segment2/segment2_cn.184A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_184B0[] = {\n#include \"textures/segment2/segment2_cn.184B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_184C0[] = {\n#include \"textures/segment2/segment2_cn.184C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_184D0[] = {\n#include \"textures/segment2/segment2_cn.184D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_184E0[] = {\n#include \"textures/segment2/segment2_cn.184E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_184F0[] = {\n#include \"textures/segment2/segment2_cn.184F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18500[] = {\n#include \"textures/segment2/segment2_cn.18500.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18510[] = {\n#include \"textures/segment2/segment2_cn.18510.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18520[] = {\n#include \"textures/segment2/segment2_cn.18520.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18530[] = {\n#include \"textures/segment2/segment2_cn.18530.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18540[] = {\n#include \"textures/segment2/segment2_cn.18540.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18550[] = {\n#include \"textures/segment2/segment2_cn.18550.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18560[] = {\n#include \"textures/segment2/segment2_cn.18560.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18570[] = {\n#include \"textures/segment2/segment2_cn.18570.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18580[] = {\n#include \"textures/segment2/segment2_cn.18580.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18590[] = {\n#include \"textures/segment2/segment2_cn.18590.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_185A0[] = {\n#include \"textures/segment2/segment2_cn.185A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_185B0[] = {\n#include \"textures/segment2/segment2_cn.185B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_185C0[] = {\n#include \"textures/segment2/segment2_cn.185C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_185D0[] = {\n#include \"textures/segment2/segment2_cn.185D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_185E0[] = {\n#include \"textures/segment2/segment2_cn.185E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_185F0[] = {\n#include \"textures/segment2/segment2_cn.185F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18600[] = {\n#include \"textures/segment2/segment2_cn.18600.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18610[] = {\n#include \"textures/segment2/segment2_cn.18610.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18620[] = {\n#include \"textures/segment2/segment2_cn.18620.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18630[] = {\n#include \"textures/segment2/segment2_cn.18630.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18640[] = {\n#include \"textures/segment2/segment2_cn.18640.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18650[] = {\n#include \"textures/segment2/segment2_cn.18650.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18660[] = {\n#include \"textures/segment2/segment2_cn.18660.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18670[] = {\n#include \"textures/segment2/segment2_cn.18670.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18680[] = {\n#include \"textures/segment2/segment2_cn.18680.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18690[] = {\n#include \"textures/segment2/segment2_cn.18690.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_186A0[] = {\n#include \"textures/segment2/segment2_cn.186A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_186B0[] = {\n#include \"textures/segment2/segment2_cn.186B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_186C0[] = {\n#include \"textures/segment2/segment2_cn.186C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_186D0[] = {\n#include \"textures/segment2/segment2_cn.186D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_186E0[] = {\n#include \"textures/segment2/segment2_cn.186E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_186F0[] = {\n#include \"textures/segment2/segment2_cn.186F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18700[] = {\n#include \"textures/segment2/segment2_cn.18700.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18710[] = {\n#include \"textures/segment2/segment2_cn.18710.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18720[] = {\n#include \"textures/segment2/segment2_cn.18720.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18730[] = {\n#include \"textures/segment2/segment2_cn.18730.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18740[] = {\n#include \"textures/segment2/segment2_cn.18740.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18750[] = {\n#include \"textures/segment2/segment2_cn.18750.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18760[] = {\n#include \"textures/segment2/segment2_cn.18760.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18770[] = {\n#include \"textures/segment2/segment2_cn.18770.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18780[] = {\n#include \"textures/segment2/segment2_cn.18780.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18790[] = {\n#include \"textures/segment2/segment2_cn.18790.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_187A0[] = {\n#include \"textures/segment2/segment2_cn.187A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_187B0[] = {\n#include \"textures/segment2/segment2_cn.187B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_187C0[] = {\n#include \"textures/segment2/segment2_cn.187C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_187D0[] = {\n#include \"textures/segment2/segment2_cn.187D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_187E0[] = {\n#include \"textures/segment2/segment2_cn.187E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_187F0[] = {\n#include \"textures/segment2/segment2_cn.187F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18800[] = {\n#include \"textures/segment2/segment2_cn.18800.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18810[] = {\n#include \"textures/segment2/segment2_cn.18810.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18820[] = {\n#include \"textures/segment2/segment2_cn.18820.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18830[] = {\n#include \"textures/segment2/segment2_cn.18830.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18840[] = {\n#include \"textures/segment2/segment2_cn.18840.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18850[] = {\n#include \"textures/segment2/segment2_cn.18850.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18860[] = {\n#include \"textures/segment2/segment2_cn.18860.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18870[] = {\n#include \"textures/segment2/segment2_cn.18870.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18880[] = {\n#include \"textures/segment2/segment2_cn.18880.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18890[] = {\n#include \"textures/segment2/segment2_cn.18890.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_188A0[] = {\n#include \"textures/segment2/segment2_cn.188A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_188B0[] = {\n#include \"textures/segment2/segment2_cn.188B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_188C0[] = {\n#include \"textures/segment2/segment2_cn.188C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_188D0[] = {\n#include \"textures/segment2/segment2_cn.188D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_188E0[] = {\n#include \"textures/segment2/segment2_cn.188E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_188F0[] = {\n#include \"textures/segment2/segment2_cn.188F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18900[] = {\n#include \"textures/segment2/segment2_cn.18900.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18910[] = {\n#include \"textures/segment2/segment2_cn.18910.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18920[] = {\n#include \"textures/segment2/segment2_cn.18920.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18930[] = {\n#include \"textures/segment2/segment2_cn.18930.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18940[] = {\n#include \"textures/segment2/segment2_cn.18940.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18950[] = {\n#include \"textures/segment2/segment2_cn.18950.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18960[] = {\n#include \"textures/segment2/segment2_cn.18960.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18970[] = {\n#include \"textures/segment2/segment2_cn.18970.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18980[] = {\n#include \"textures/segment2/segment2_cn.18980.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18990[] = {\n#include \"textures/segment2/segment2_cn.18990.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_189A0[] = {\n#include \"textures/segment2/segment2_cn.189A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_189B0[] = {\n#include \"textures/segment2/segment2_cn.189B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_189C0[] = {\n#include \"textures/segment2/segment2_cn.189C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_189D0[] = {\n#include \"textures/segment2/segment2_cn.189D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_189E0[] = {\n#include \"textures/segment2/segment2_cn.189E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_189F0[] = {\n#include \"textures/segment2/segment2_cn.189F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18A00[] = {\n#include \"textures/segment2/segment2_cn.18A00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18A10[] = {\n#include \"textures/segment2/segment2_cn.18A10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18A20[] = {\n#include \"textures/segment2/segment2_cn.18A20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18A30[] = {\n#include \"textures/segment2/segment2_cn.18A30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18A40[] = {\n#include \"textures/segment2/segment2_cn.18A40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18A50[] = {\n#include \"textures/segment2/segment2_cn.18A50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18A60[] = {\n#include \"textures/segment2/segment2_cn.18A60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18A70[] = {\n#include \"textures/segment2/segment2_cn.18A70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18A80[] = {\n#include \"textures/segment2/segment2_cn.18A80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18A90[] = {\n#include \"textures/segment2/segment2_cn.18A90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18AA0[] = {\n#include \"textures/segment2/segment2_cn.18AA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18AB0[] = {\n#include \"textures/segment2/segment2_cn.18AB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18AC0[] = {\n#include \"textures/segment2/segment2_cn.18AC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18AD0[] = {\n#include \"textures/segment2/segment2_cn.18AD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18AE0[] = {\n#include \"textures/segment2/segment2_cn.18AE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18AF0[] = {\n#include \"textures/segment2/segment2_cn.18AF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18B00[] = {\n#include \"textures/segment2/segment2_cn.18B00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18B10[] = {\n#include \"textures/segment2/segment2_cn.18B10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18B20[] = {\n#include \"textures/segment2/segment2_cn.18B20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18B30[] = {\n#include \"textures/segment2/segment2_cn.18B30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18B40[] = {\n#include \"textures/segment2/segment2_cn.18B40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18B50[] = {\n#include \"textures/segment2/segment2_cn.18B50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18B60[] = {\n#include \"textures/segment2/segment2_cn.18B60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18B70[] = {\n#include \"textures/segment2/segment2_cn.18B70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18B80[] = {\n#include \"textures/segment2/segment2_cn.18B80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18B90[] = {\n#include \"textures/segment2/segment2_cn.18B90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18BA0[] = {\n#include \"textures/segment2/segment2_cn.18BA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18BB0[] = {\n#include \"textures/segment2/segment2_cn.18BB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18BC0[] = {\n#include \"textures/segment2/segment2_cn.18BC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18BD0[] = {\n#include \"textures/segment2/segment2_cn.18BD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18BE0[] = {\n#include \"textures/segment2/segment2_cn.18BE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18BF0[] = {\n#include \"textures/segment2/segment2_cn.18BF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18C00[] = {\n#include \"textures/segment2/segment2_cn.18C00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18C10[] = {\n#include \"textures/segment2/segment2_cn.18C10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18C20[] = {\n#include \"textures/segment2/segment2_cn.18C20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18C30[] = {\n#include \"textures/segment2/segment2_cn.18C30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18C40[] = {\n#include \"textures/segment2/segment2_cn.18C40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18C50[] = {\n#include \"textures/segment2/segment2_cn.18C50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18C60[] = {\n#include \"textures/segment2/segment2_cn.18C60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18C70[] = {\n#include \"textures/segment2/segment2_cn.18C70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18C80[] = {\n#include \"textures/segment2/segment2_cn.18C80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18C90[] = {\n#include \"textures/segment2/segment2_cn.18C90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18CA0[] = {\n#include \"textures/segment2/segment2_cn.18CA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18CB0[] = {\n#include \"textures/segment2/segment2_cn.18CB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18CC0[] = {\n#include \"textures/segment2/segment2_cn.18CC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18CD0[] = {\n#include \"textures/segment2/segment2_cn.18CD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18CE0[] = {\n#include \"textures/segment2/segment2_cn.18CE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18CF0[] = {\n#include \"textures/segment2/segment2_cn.18CF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18D00[] = {\n#include \"textures/segment2/segment2_cn.18D00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18D10[] = {\n#include \"textures/segment2/segment2_cn.18D10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18D20[] = {\n#include \"textures/segment2/segment2_cn.18D20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18D30[] = {\n#include \"textures/segment2/segment2_cn.18D30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18D40[] = {\n#include \"textures/segment2/segment2_cn.18D40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18D50[] = {\n#include \"textures/segment2/segment2_cn.18D50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18D60[] = {\n#include \"textures/segment2/segment2_cn.18D60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18D70[] = {\n#include \"textures/segment2/segment2_cn.18D70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18D80[] = {\n#include \"textures/segment2/segment2_cn.18D80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18D90[] = {\n#include \"textures/segment2/segment2_cn.18D90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18DA0[] = {\n#include \"textures/segment2/segment2_cn.18DA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18DB0[] = {\n#include \"textures/segment2/segment2_cn.18DB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18DC0[] = {\n#include \"textures/segment2/segment2_cn.18DC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18DD0[] = {\n#include \"textures/segment2/segment2_cn.18DD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18DE0[] = {\n#include \"textures/segment2/segment2_cn.18DE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18DF0[] = {\n#include \"textures/segment2/segment2_cn.18DF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18E00[] = {\n#include \"textures/segment2/segment2_cn.18E00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18E10[] = {\n#include \"textures/segment2/segment2_cn.18E10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18E20[] = {\n#include \"textures/segment2/segment2_cn.18E20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18E30[] = {\n#include \"textures/segment2/segment2_cn.18E30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18E40[] = {\n#include \"textures/segment2/segment2_cn.18E40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18E50[] = {\n#include \"textures/segment2/segment2_cn.18E50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18E60[] = {\n#include \"textures/segment2/segment2_cn.18E60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18E70[] = {\n#include \"textures/segment2/segment2_cn.18E70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18E80[] = {\n#include \"textures/segment2/segment2_cn.18E80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18E90[] = {\n#include \"textures/segment2/segment2_cn.18E90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18EA0[] = {\n#include \"textures/segment2/segment2_cn.18EA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18EB0[] = {\n#include \"textures/segment2/segment2_cn.18EB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18EC0[] = {\n#include \"textures/segment2/segment2_cn.18EC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18ED0[] = {\n#include \"textures/segment2/segment2_cn.18ED0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18EE0[] = {\n#include \"textures/segment2/segment2_cn.18EE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18EF0[] = {\n#include \"textures/segment2/segment2_cn.18EF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18F00[] = {\n#include \"textures/segment2/segment2_cn.18F00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18F10[] = {\n#include \"textures/segment2/segment2_cn.18F10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18F20[] = {\n#include \"textures/segment2/segment2_cn.18F20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18F30[] = {\n#include \"textures/segment2/segment2_cn.18F30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18F40[] = {\n#include \"textures/segment2/segment2_cn.18F40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18F50[] = {\n#include \"textures/segment2/segment2_cn.18F50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18F60[] = {\n#include \"textures/segment2/segment2_cn.18F60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18F70[] = {\n#include \"textures/segment2/segment2_cn.18F70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18F80[] = {\n#include \"textures/segment2/segment2_cn.18F80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18F90[] = {\n#include \"textures/segment2/segment2_cn.18F90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18FA0[] = {\n#include \"textures/segment2/segment2_cn.18FA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18FB0[] = {\n#include \"textures/segment2/segment2_cn.18FB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18FC0[] = {\n#include \"textures/segment2/segment2_cn.18FC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18FD0[] = {\n#include \"textures/segment2/segment2_cn.18FD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18FE0[] = {\n#include \"textures/segment2/segment2_cn.18FE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_18FF0[] = {\n#include \"textures/segment2/segment2_cn.18FF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19000[] = {\n#include \"textures/segment2/segment2_cn.19000.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19010[] = {\n#include \"textures/segment2/segment2_cn.19010.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19020[] = {\n#include \"textures/segment2/segment2_cn.19020.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19030[] = {\n#include \"textures/segment2/segment2_cn.19030.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19040[] = {\n#include \"textures/segment2/segment2_cn.19040.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19050[] = {\n#include \"textures/segment2/segment2_cn.19050.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19060[] = {\n#include \"textures/segment2/segment2_cn.19060.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19070[] = {\n#include \"textures/segment2/segment2_cn.19070.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19080[] = {\n#include \"textures/segment2/segment2_cn.19080.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19090[] = {\n#include \"textures/segment2/segment2_cn.19090.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_190A0[] = {\n#include \"textures/segment2/segment2_cn.190A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_190B0[] = {\n#include \"textures/segment2/segment2_cn.190B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_190C0[] = {\n#include \"textures/segment2/segment2_cn.190C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_190D0[] = {\n#include \"textures/segment2/segment2_cn.190D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_190E0[] = {\n#include \"textures/segment2/segment2_cn.190E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_190F0[] = {\n#include \"textures/segment2/segment2_cn.190F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19100[] = {\n#include \"textures/segment2/segment2_cn.19100.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19110[] = {\n#include \"textures/segment2/segment2_cn.19110.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19120[] = {\n#include \"textures/segment2/segment2_cn.19120.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19130[] = {\n#include \"textures/segment2/segment2_cn.19130.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19140[] = {\n#include \"textures/segment2/segment2_cn.19140.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19150[] = {\n#include \"textures/segment2/segment2_cn.19150.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19160[] = {\n#include \"textures/segment2/segment2_cn.19160.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19170[] = {\n#include \"textures/segment2/segment2_cn.19170.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19180[] = {\n#include \"textures/segment2/segment2_cn.19180.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19190[] = {\n#include \"textures/segment2/segment2_cn.19190.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_191A0[] = {\n#include \"textures/segment2/segment2_cn.191A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_191B0[] = {\n#include \"textures/segment2/segment2_cn.191B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_191C0[] = {\n#include \"textures/segment2/segment2_cn.191C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_191D0[] = {\n#include \"textures/segment2/segment2_cn.191D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_191E0[] = {\n#include \"textures/segment2/segment2_cn.191E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_191F0[] = {\n#include \"textures/segment2/segment2_cn.191F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19200[] = {\n#include \"textures/segment2/segment2_cn.19200.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19210[] = {\n#include \"textures/segment2/segment2_cn.19210.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19220[] = {\n#include \"textures/segment2/segment2_cn.19220.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19230[] = {\n#include \"textures/segment2/segment2_cn.19230.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19240[] = {\n#include \"textures/segment2/segment2_cn.19240.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19250[] = {\n#include \"textures/segment2/segment2_cn.19250.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19260[] = {\n#include \"textures/segment2/segment2_cn.19260.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19270[] = {\n#include \"textures/segment2/segment2_cn.19270.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19280[] = {\n#include \"textures/segment2/segment2_cn.19280.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19290[] = {\n#include \"textures/segment2/segment2_cn.19290.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_192A0[] = {\n#include \"textures/segment2/segment2_cn.192A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_192B0[] = {\n#include \"textures/segment2/segment2_cn.192B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_192C0[] = {\n#include \"textures/segment2/segment2_cn.192C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_192D0[] = {\n#include \"textures/segment2/segment2_cn.192D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_192E0[] = {\n#include \"textures/segment2/segment2_cn.192E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_192F0[] = {\n#include \"textures/segment2/segment2_cn.192F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19300[] = {\n#include \"textures/segment2/segment2_cn.19300.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19310[] = {\n#include \"textures/segment2/segment2_cn.19310.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19320[] = {\n#include \"textures/segment2/segment2_cn.19320.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19330[] = {\n#include \"textures/segment2/segment2_cn.19330.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19340[] = {\n#include \"textures/segment2/segment2_cn.19340.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19350[] = {\n#include \"textures/segment2/segment2_cn.19350.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19360[] = {\n#include \"textures/segment2/segment2_cn.19360.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19370[] = {\n#include \"textures/segment2/segment2_cn.19370.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19380[] = {\n#include \"textures/segment2/segment2_cn.19380.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19390[] = {\n#include \"textures/segment2/segment2_cn.19390.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_193A0[] = {\n#include \"textures/segment2/segment2_cn.193A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_193B0[] = {\n#include \"textures/segment2/segment2_cn.193B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_193C0[] = {\n#include \"textures/segment2/segment2_cn.193C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_193D0[] = {\n#include \"textures/segment2/segment2_cn.193D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_193E0[] = {\n#include \"textures/segment2/segment2_cn.193E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_193F0[] = {\n#include \"textures/segment2/segment2_cn.193F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19400[] = {\n#include \"textures/segment2/segment2_cn.19400.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19410[] = {\n#include \"textures/segment2/segment2_cn.19410.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19420[] = {\n#include \"textures/segment2/segment2_cn.19420.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19430[] = {\n#include \"textures/segment2/segment2_cn.19430.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19440[] = {\n#include \"textures/segment2/segment2_cn.19440.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19450[] = {\n#include \"textures/segment2/segment2_cn.19450.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19460[] = {\n#include \"textures/segment2/segment2_cn.19460.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19470[] = {\n#include \"textures/segment2/segment2_cn.19470.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19480[] = {\n#include \"textures/segment2/segment2_cn.19480.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19490[] = {\n#include \"textures/segment2/segment2_cn.19490.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_194A0[] = {\n#include \"textures/segment2/segment2_cn.194A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_194B0[] = {\n#include \"textures/segment2/segment2_cn.194B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_194C0[] = {\n#include \"textures/segment2/segment2_cn.194C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_194D0[] = {\n#include \"textures/segment2/segment2_cn.194D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_194E0[] = {\n#include \"textures/segment2/segment2_cn.194E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_194F0[] = {\n#include \"textures/segment2/segment2_cn.194F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19500[] = {\n#include \"textures/segment2/segment2_cn.19500.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19510[] = {\n#include \"textures/segment2/segment2_cn.19510.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19520[] = {\n#include \"textures/segment2/segment2_cn.19520.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19530[] = {\n#include \"textures/segment2/segment2_cn.19530.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19540[] = {\n#include \"textures/segment2/segment2_cn.19540.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19550[] = {\n#include \"textures/segment2/segment2_cn.19550.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19560[] = {\n#include \"textures/segment2/segment2_cn.19560.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19570[] = {\n#include \"textures/segment2/segment2_cn.19570.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19580[] = {\n#include \"textures/segment2/segment2_cn.19580.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19590[] = {\n#include \"textures/segment2/segment2_cn.19590.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_195A0[] = {\n#include \"textures/segment2/segment2_cn.195A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_195B0[] = {\n#include \"textures/segment2/segment2_cn.195B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_195C0[] = {\n#include \"textures/segment2/segment2_cn.195C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_195D0[] = {\n#include \"textures/segment2/segment2_cn.195D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_195E0[] = {\n#include \"textures/segment2/segment2_cn.195E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_195F0[] = {\n#include \"textures/segment2/segment2_cn.195F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19600[] = {\n#include \"textures/segment2/segment2_cn.19600.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19610[] = {\n#include \"textures/segment2/segment2_cn.19610.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19620[] = {\n#include \"textures/segment2/segment2_cn.19620.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19630[] = {\n#include \"textures/segment2/segment2_cn.19630.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19640[] = {\n#include \"textures/segment2/segment2_cn.19640.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19650[] = {\n#include \"textures/segment2/segment2_cn.19650.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19660[] = {\n#include \"textures/segment2/segment2_cn.19660.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19670[] = {\n#include \"textures/segment2/segment2_cn.19670.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19680[] = {\n#include \"textures/segment2/segment2_cn.19680.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19690[] = {\n#include \"textures/segment2/segment2_cn.19690.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_196A0[] = {\n#include \"textures/segment2/segment2_cn.196A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_196B0[] = {\n#include \"textures/segment2/segment2_cn.196B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_196C0[] = {\n#include \"textures/segment2/segment2_cn.196C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_196D0[] = {\n#include \"textures/segment2/segment2_cn.196D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_196E0[] = {\n#include \"textures/segment2/segment2_cn.196E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_196F0[] = {\n#include \"textures/segment2/segment2_cn.196F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19700[] = {\n#include \"textures/segment2/segment2_cn.19700.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19710[] = {\n#include \"textures/segment2/segment2_cn.19710.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19720[] = {\n#include \"textures/segment2/segment2_cn.19720.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19730[] = {\n#include \"textures/segment2/segment2_cn.19730.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19740[] = {\n#include \"textures/segment2/segment2_cn.19740.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19750[] = {\n#include \"textures/segment2/segment2_cn.19750.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19760[] = {\n#include \"textures/segment2/segment2_cn.19760.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19770[] = {\n#include \"textures/segment2/segment2_cn.19770.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19780[] = {\n#include \"textures/segment2/segment2_cn.19780.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19790[] = {\n#include \"textures/segment2/segment2_cn.19790.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_197A0[] = {\n#include \"textures/segment2/segment2_cn.197A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_197B0[] = {\n#include \"textures/segment2/segment2_cn.197B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_197C0[] = {\n#include \"textures/segment2/segment2_cn.197C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_197D0[] = {\n#include \"textures/segment2/segment2_cn.197D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_197E0[] = {\n#include \"textures/segment2/segment2_cn.197E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_197F0[] = {\n#include \"textures/segment2/segment2_cn.197F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19800[] = {\n#include \"textures/segment2/segment2_cn.19800.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19810[] = {\n#include \"textures/segment2/segment2_cn.19810.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19820[] = {\n#include \"textures/segment2/segment2_cn.19820.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19830[] = {\n#include \"textures/segment2/segment2_cn.19830.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19840[] = {\n#include \"textures/segment2/segment2_cn.19840.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19850[] = {\n#include \"textures/segment2/segment2_cn.19850.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19860[] = {\n#include \"textures/segment2/segment2_cn.19860.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19870[] = {\n#include \"textures/segment2/segment2_cn.19870.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19880[] = {\n#include \"textures/segment2/segment2_cn.19880.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19890[] = {\n#include \"textures/segment2/segment2_cn.19890.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_198A0[] = {\n#include \"textures/segment2/segment2_cn.198A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_198B0[] = {\n#include \"textures/segment2/segment2_cn.198B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_198C0[] = {\n#include \"textures/segment2/segment2_cn.198C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_198D0[] = {\n#include \"textures/segment2/segment2_cn.198D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_198E0[] = {\n#include \"textures/segment2/segment2_cn.198E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_198F0[] = {\n#include \"textures/segment2/segment2_cn.198F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19900[] = {\n#include \"textures/segment2/segment2_cn.19900.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19910[] = {\n#include \"textures/segment2/segment2_cn.19910.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19920[] = {\n#include \"textures/segment2/segment2_cn.19920.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19930[] = {\n#include \"textures/segment2/segment2_cn.19930.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19940[] = {\n#include \"textures/segment2/segment2_cn.19940.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19950[] = {\n#include \"textures/segment2/segment2_cn.19950.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19960[] = {\n#include \"textures/segment2/segment2_cn.19960.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19970[] = {\n#include \"textures/segment2/segment2_cn.19970.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19980[] = {\n#include \"textures/segment2/segment2_cn.19980.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19990[] = {\n#include \"textures/segment2/segment2_cn.19990.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_199A0[] = {\n#include \"textures/segment2/segment2_cn.199A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_199B0[] = {\n#include \"textures/segment2/segment2_cn.199B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_199C0[] = {\n#include \"textures/segment2/segment2_cn.199C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_199D0[] = {\n#include \"textures/segment2/segment2_cn.199D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_199E0[] = {\n#include \"textures/segment2/segment2_cn.199E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_199F0[] = {\n#include \"textures/segment2/segment2_cn.199F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19A00[] = {\n#include \"textures/segment2/segment2_cn.19A00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19A10[] = {\n#include \"textures/segment2/segment2_cn.19A10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19A20[] = {\n#include \"textures/segment2/segment2_cn.19A20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19A30[] = {\n#include \"textures/segment2/segment2_cn.19A30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19A40[] = {\n#include \"textures/segment2/segment2_cn.19A40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19A50[] = {\n#include \"textures/segment2/segment2_cn.19A50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19A60[] = {\n#include \"textures/segment2/segment2_cn.19A60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19A70[] = {\n#include \"textures/segment2/segment2_cn.19A70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19A80[] = {\n#include \"textures/segment2/segment2_cn.19A80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19A90[] = {\n#include \"textures/segment2/segment2_cn.19A90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19AA0[] = {\n#include \"textures/segment2/segment2_cn.19AA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19AB0[] = {\n#include \"textures/segment2/segment2_cn.19AB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19AC0[] = {\n#include \"textures/segment2/segment2_cn.19AC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19AD0[] = {\n#include \"textures/segment2/segment2_cn.19AD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19AE0[] = {\n#include \"textures/segment2/segment2_cn.19AE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19AF0[] = {\n#include \"textures/segment2/segment2_cn.19AF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19B00[] = {\n#include \"textures/segment2/segment2_cn.19B00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19B10[] = {\n#include \"textures/segment2/segment2_cn.19B10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19B20[] = {\n#include \"textures/segment2/segment2_cn.19B20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19B30[] = {\n#include \"textures/segment2/segment2_cn.19B30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19B40[] = {\n#include \"textures/segment2/segment2_cn.19B40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19B50[] = {\n#include \"textures/segment2/segment2_cn.19B50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19B60[] = {\n#include \"textures/segment2/segment2_cn.19B60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19B70[] = {\n#include \"textures/segment2/segment2_cn.19B70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19B80[] = {\n#include \"textures/segment2/segment2_cn.19B80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19B90[] = {\n#include \"textures/segment2/segment2_cn.19B90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19BA0[] = {\n#include \"textures/segment2/segment2_cn.19BA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19BB0[] = {\n#include \"textures/segment2/segment2_cn.19BB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19BC0[] = {\n#include \"textures/segment2/segment2_cn.19BC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19BD0[] = {\n#include \"textures/segment2/segment2_cn.19BD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19BE0[] = {\n#include \"textures/segment2/segment2_cn.19BE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19BF0[] = {\n#include \"textures/segment2/segment2_cn.19BF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19C00[] = {\n#include \"textures/segment2/segment2_cn.19C00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19C10[] = {\n#include \"textures/segment2/segment2_cn.19C10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19C20[] = {\n#include \"textures/segment2/segment2_cn.19C20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19C30[] = {\n#include \"textures/segment2/segment2_cn.19C30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19C40[] = {\n#include \"textures/segment2/segment2_cn.19C40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19C50[] = {\n#include \"textures/segment2/segment2_cn.19C50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19C60[] = {\n#include \"textures/segment2/segment2_cn.19C60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19C70[] = {\n#include \"textures/segment2/segment2_cn.19C70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19C80[] = {\n#include \"textures/segment2/segment2_cn.19C80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19C90[] = {\n#include \"textures/segment2/segment2_cn.19C90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19CA0[] = {\n#include \"textures/segment2/segment2_cn.19CA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19CB0[] = {\n#include \"textures/segment2/segment2_cn.19CB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19CC0[] = {\n#include \"textures/segment2/segment2_cn.19CC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19CD0[] = {\n#include \"textures/segment2/segment2_cn.19CD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19CE0[] = {\n#include \"textures/segment2/segment2_cn.19CE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19CF0[] = {\n#include \"textures/segment2/segment2_cn.19CF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19D00[] = {\n#include \"textures/segment2/segment2_cn.19D00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19D10[] = {\n#include \"textures/segment2/segment2_cn.19D10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19D20[] = {\n#include \"textures/segment2/segment2_cn.19D20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19D30[] = {\n#include \"textures/segment2/segment2_cn.19D30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19D40[] = {\n#include \"textures/segment2/segment2_cn.19D40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19D50[] = {\n#include \"textures/segment2/segment2_cn.19D50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19D60[] = {\n#include \"textures/segment2/segment2_cn.19D60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19D70[] = {\n#include \"textures/segment2/segment2_cn.19D70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19D80[] = {\n#include \"textures/segment2/segment2_cn.19D80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19D90[] = {\n#include \"textures/segment2/segment2_cn.19D90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19DA0[] = {\n#include \"textures/segment2/segment2_cn.19DA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19DB0[] = {\n#include \"textures/segment2/segment2_cn.19DB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19DC0[] = {\n#include \"textures/segment2/segment2_cn.19DC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19DD0[] = {\n#include \"textures/segment2/segment2_cn.19DD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19DE0[] = {\n#include \"textures/segment2/segment2_cn.19DE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19DF0[] = {\n#include \"textures/segment2/segment2_cn.19DF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19E00[] = {\n#include \"textures/segment2/segment2_cn.19E00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19E10[] = {\n#include \"textures/segment2/segment2_cn.19E10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19E20[] = {\n#include \"textures/segment2/segment2_cn.19E20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19E30[] = {\n#include \"textures/segment2/segment2_cn.19E30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19E40[] = {\n#include \"textures/segment2/segment2_cn.19E40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19E50[] = {\n#include \"textures/segment2/segment2_cn.19E50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19E60[] = {\n#include \"textures/segment2/segment2_cn.19E60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19E70[] = {\n#include \"textures/segment2/segment2_cn.19E70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19E80[] = {\n#include \"textures/segment2/segment2_cn.19E80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19E90[] = {\n#include \"textures/segment2/segment2_cn.19E90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19EA0[] = {\n#include \"textures/segment2/segment2_cn.19EA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19EB0[] = {\n#include \"textures/segment2/segment2_cn.19EB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19EC0[] = {\n#include \"textures/segment2/segment2_cn.19EC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19ED0[] = {\n#include \"textures/segment2/segment2_cn.19ED0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19EE0[] = {\n#include \"textures/segment2/segment2_cn.19EE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19EF0[] = {\n#include \"textures/segment2/segment2_cn.19EF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19F00[] = {\n#include \"textures/segment2/segment2_cn.19F00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19F10[] = {\n#include \"textures/segment2/segment2_cn.19F10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19F20[] = {\n#include \"textures/segment2/segment2_cn.19F20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19F30[] = {\n#include \"textures/segment2/segment2_cn.19F30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19F40[] = {\n#include \"textures/segment2/segment2_cn.19F40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19F50[] = {\n#include \"textures/segment2/segment2_cn.19F50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19F60[] = {\n#include \"textures/segment2/segment2_cn.19F60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19F70[] = {\n#include \"textures/segment2/segment2_cn.19F70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19F80[] = {\n#include \"textures/segment2/segment2_cn.19F80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19F90[] = {\n#include \"textures/segment2/segment2_cn.19F90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19FA0[] = {\n#include \"textures/segment2/segment2_cn.19FA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19FB0[] = {\n#include \"textures/segment2/segment2_cn.19FB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19FC0[] = {\n#include \"textures/segment2/segment2_cn.19FC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19FD0[] = {\n#include \"textures/segment2/segment2_cn.19FD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19FE0[] = {\n#include \"textures/segment2/segment2_cn.19FE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_19FF0[] = {\n#include \"textures/segment2/segment2_cn.19FF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A000[] = {\n#include \"textures/segment2/segment2_cn.1A000.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A010[] = {\n#include \"textures/segment2/segment2_cn.1A010.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A020[] = {\n#include \"textures/segment2/segment2_cn.1A020.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A030[] = {\n#include \"textures/segment2/segment2_cn.1A030.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A040[] = {\n#include \"textures/segment2/segment2_cn.1A040.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A050[] = {\n#include \"textures/segment2/segment2_cn.1A050.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A060[] = {\n#include \"textures/segment2/segment2_cn.1A060.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A070[] = {\n#include \"textures/segment2/segment2_cn.1A070.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A080[] = {\n#include \"textures/segment2/segment2_cn.1A080.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A090[] = {\n#include \"textures/segment2/segment2_cn.1A090.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A0A0[] = {\n#include \"textures/segment2/segment2_cn.1A0A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A0B0[] = {\n#include \"textures/segment2/segment2_cn.1A0B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A0C0[] = {\n#include \"textures/segment2/segment2_cn.1A0C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A0D0[] = {\n#include \"textures/segment2/segment2_cn.1A0D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A0E0[] = {\n#include \"textures/segment2/segment2_cn.1A0E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A0F0[] = {\n#include \"textures/segment2/segment2_cn.1A0F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A100[] = {\n#include \"textures/segment2/segment2_cn.1A100.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A110[] = {\n#include \"textures/segment2/segment2_cn.1A110.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A120[] = {\n#include \"textures/segment2/segment2_cn.1A120.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A130[] = {\n#include \"textures/segment2/segment2_cn.1A130.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A140[] = {\n#include \"textures/segment2/segment2_cn.1A140.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A150[] = {\n#include \"textures/segment2/segment2_cn.1A150.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A160[] = {\n#include \"textures/segment2/segment2_cn.1A160.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A170[] = {\n#include \"textures/segment2/segment2_cn.1A170.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A180[] = {\n#include \"textures/segment2/segment2_cn.1A180.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A190[] = {\n#include \"textures/segment2/segment2_cn.1A190.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A1A0[] = {\n#include \"textures/segment2/segment2_cn.1A1A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A1B0[] = {\n#include \"textures/segment2/segment2_cn.1A1B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A1C0[] = {\n#include \"textures/segment2/segment2_cn.1A1C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A1D0[] = {\n#include \"textures/segment2/segment2_cn.1A1D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A1E0[] = {\n#include \"textures/segment2/segment2_cn.1A1E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A1F0[] = {\n#include \"textures/segment2/segment2_cn.1A1F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A200[] = {\n#include \"textures/segment2/segment2_cn.1A200.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A210[] = {\n#include \"textures/segment2/segment2_cn.1A210.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A220[] = {\n#include \"textures/segment2/segment2_cn.1A220.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A230[] = {\n#include \"textures/segment2/segment2_cn.1A230.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A240[] = {\n#include \"textures/segment2/segment2_cn.1A240.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A250[] = {\n#include \"textures/segment2/segment2_cn.1A250.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A260[] = {\n#include \"textures/segment2/segment2_cn.1A260.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A270[] = {\n#include \"textures/segment2/segment2_cn.1A270.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A280[] = {\n#include \"textures/segment2/segment2_cn.1A280.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A290[] = {\n#include \"textures/segment2/segment2_cn.1A290.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A2A0[] = {\n#include \"textures/segment2/segment2_cn.1A2A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A2B0[] = {\n#include \"textures/segment2/segment2_cn.1A2B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A2C0[] = {\n#include \"textures/segment2/segment2_cn.1A2C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A2D0[] = {\n#include \"textures/segment2/segment2_cn.1A2D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A2E0[] = {\n#include \"textures/segment2/segment2_cn.1A2E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A2F0[] = {\n#include \"textures/segment2/segment2_cn.1A2F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A300[] = {\n#include \"textures/segment2/segment2_cn.1A300.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A310[] = {\n#include \"textures/segment2/segment2_cn.1A310.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A320[] = {\n#include \"textures/segment2/segment2_cn.1A320.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A330[] = {\n#include \"textures/segment2/segment2_cn.1A330.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A340[] = {\n#include \"textures/segment2/segment2_cn.1A340.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A350[] = {\n#include \"textures/segment2/segment2_cn.1A350.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A360[] = {\n#include \"textures/segment2/segment2_cn.1A360.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A370[] = {\n#include \"textures/segment2/segment2_cn.1A370.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A380[] = {\n#include \"textures/segment2/segment2_cn.1A380.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A390[] = {\n#include \"textures/segment2/segment2_cn.1A390.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A3A0[] = {\n#include \"textures/segment2/segment2_cn.1A3A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A3B0[] = {\n#include \"textures/segment2/segment2_cn.1A3B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A3C0[] = {\n#include \"textures/segment2/segment2_cn.1A3C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A3D0[] = {\n#include \"textures/segment2/segment2_cn.1A3D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A3E0[] = {\n#include \"textures/segment2/segment2_cn.1A3E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A3F0[] = {\n#include \"textures/segment2/segment2_cn.1A3F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A400[] = {\n#include \"textures/segment2/segment2_cn.1A400.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A410[] = {\n#include \"textures/segment2/segment2_cn.1A410.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A420[] = {\n#include \"textures/segment2/segment2_cn.1A420.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A430[] = {\n#include \"textures/segment2/segment2_cn.1A430.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A440[] = {\n#include \"textures/segment2/segment2_cn.1A440.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A450[] = {\n#include \"textures/segment2/segment2_cn.1A450.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A460[] = {\n#include \"textures/segment2/segment2_cn.1A460.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A470[] = {\n#include \"textures/segment2/segment2_cn.1A470.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A480[] = {\n#include \"textures/segment2/segment2_cn.1A480.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A490[] = {\n#include \"textures/segment2/segment2_cn.1A490.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A4A0[] = {\n#include \"textures/segment2/segment2_cn.1A4A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A4B0[] = {\n#include \"textures/segment2/segment2_cn.1A4B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A4C0[] = {\n#include \"textures/segment2/segment2_cn.1A4C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A4D0[] = {\n#include \"textures/segment2/segment2_cn.1A4D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A4E0[] = {\n#include \"textures/segment2/segment2_cn.1A4E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A4F0[] = {\n#include \"textures/segment2/segment2_cn.1A4F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A500[] = {\n#include \"textures/segment2/segment2_cn.1A500.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A510[] = {\n#include \"textures/segment2/segment2_cn.1A510.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A520[] = {\n#include \"textures/segment2/segment2_cn.1A520.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A530[] = {\n#include \"textures/segment2/segment2_cn.1A530.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A540[] = {\n#include \"textures/segment2/segment2_cn.1A540.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A550[] = {\n#include \"textures/segment2/segment2_cn.1A550.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A560[] = {\n#include \"textures/segment2/segment2_cn.1A560.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A570[] = {\n#include \"textures/segment2/segment2_cn.1A570.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A580[] = {\n#include \"textures/segment2/segment2_cn.1A580.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A590[] = {\n#include \"textures/segment2/segment2_cn.1A590.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A5A0[] = {\n#include \"textures/segment2/segment2_cn.1A5A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A5B0[] = {\n#include \"textures/segment2/segment2_cn.1A5B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A5C0[] = {\n#include \"textures/segment2/segment2_cn.1A5C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A5D0[] = {\n#include \"textures/segment2/segment2_cn.1A5D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A5E0[] = {\n#include \"textures/segment2/segment2_cn.1A5E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A5F0[] = {\n#include \"textures/segment2/segment2_cn.1A5F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A600[] = {\n#include \"textures/segment2/segment2_cn.1A600.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A610[] = {\n#include \"textures/segment2/segment2_cn.1A610.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A620[] = {\n#include \"textures/segment2/segment2_cn.1A620.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A630[] = {\n#include \"textures/segment2/segment2_cn.1A630.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A640[] = {\n#include \"textures/segment2/segment2_cn.1A640.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A650[] = {\n#include \"textures/segment2/segment2_cn.1A650.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A660[] = {\n#include \"textures/segment2/segment2_cn.1A660.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A670[] = {\n#include \"textures/segment2/segment2_cn.1A670.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A680[] = {\n#include \"textures/segment2/segment2_cn.1A680.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A690[] = {\n#include \"textures/segment2/segment2_cn.1A690.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A6A0[] = {\n#include \"textures/segment2/segment2_cn.1A6A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A6B0[] = {\n#include \"textures/segment2/segment2_cn.1A6B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A6C0[] = {\n#include \"textures/segment2/segment2_cn.1A6C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A6D0[] = {\n#include \"textures/segment2/segment2_cn.1A6D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A6E0[] = {\n#include \"textures/segment2/segment2_cn.1A6E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A6F0[] = {\n#include \"textures/segment2/segment2_cn.1A6F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A700[] = {\n#include \"textures/segment2/segment2_cn.1A700.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A710[] = {\n#include \"textures/segment2/segment2_cn.1A710.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A720[] = {\n#include \"textures/segment2/segment2_cn.1A720.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A730[] = {\n#include \"textures/segment2/segment2_cn.1A730.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A740[] = {\n#include \"textures/segment2/segment2_cn.1A740.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A750[] = {\n#include \"textures/segment2/segment2_cn.1A750.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A760[] = {\n#include \"textures/segment2/segment2_cn.1A760.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A770[] = {\n#include \"textures/segment2/segment2_cn.1A770.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A780[] = {\n#include \"textures/segment2/segment2_cn.1A780.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A790[] = {\n#include \"textures/segment2/segment2_cn.1A790.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A7A0[] = {\n#include \"textures/segment2/segment2_cn.1A7A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A7B0[] = {\n#include \"textures/segment2/segment2_cn.1A7B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A7C0[] = {\n#include \"textures/segment2/segment2_cn.1A7C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A7D0[] = {\n#include \"textures/segment2/segment2_cn.1A7D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A7E0[] = {\n#include \"textures/segment2/segment2_cn.1A7E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A7F0[] = {\n#include \"textures/segment2/segment2_cn.1A7F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A800[] = {\n#include \"textures/segment2/segment2_cn.1A800.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A810[] = {\n#include \"textures/segment2/segment2_cn.1A810.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A820[] = {\n#include \"textures/segment2/segment2_cn.1A820.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A830[] = {\n#include \"textures/segment2/segment2_cn.1A830.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A840[] = {\n#include \"textures/segment2/segment2_cn.1A840.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A850[] = {\n#include \"textures/segment2/segment2_cn.1A850.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A860[] = {\n#include \"textures/segment2/segment2_cn.1A860.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A870[] = {\n#include \"textures/segment2/segment2_cn.1A870.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A880[] = {\n#include \"textures/segment2/segment2_cn.1A880.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A890[] = {\n#include \"textures/segment2/segment2_cn.1A890.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A8A0[] = {\n#include \"textures/segment2/segment2_cn.1A8A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A8B0[] = {\n#include \"textures/segment2/segment2_cn.1A8B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A8C0[] = {\n#include \"textures/segment2/segment2_cn.1A8C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A8D0[] = {\n#include \"textures/segment2/segment2_cn.1A8D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A8E0[] = {\n#include \"textures/segment2/segment2_cn.1A8E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A8F0[] = {\n#include \"textures/segment2/segment2_cn.1A8F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A900[] = {\n#include \"textures/segment2/segment2_cn.1A900.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A910[] = {\n#include \"textures/segment2/segment2_cn.1A910.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A920[] = {\n#include \"textures/segment2/segment2_cn.1A920.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A930[] = {\n#include \"textures/segment2/segment2_cn.1A930.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A940[] = {\n#include \"textures/segment2/segment2_cn.1A940.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A950[] = {\n#include \"textures/segment2/segment2_cn.1A950.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A960[] = {\n#include \"textures/segment2/segment2_cn.1A960.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A970[] = {\n#include \"textures/segment2/segment2_cn.1A970.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A980[] = {\n#include \"textures/segment2/segment2_cn.1A980.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A990[] = {\n#include \"textures/segment2/segment2_cn.1A990.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A9A0[] = {\n#include \"textures/segment2/segment2_cn.1A9A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A9B0[] = {\n#include \"textures/segment2/segment2_cn.1A9B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A9C0[] = {\n#include \"textures/segment2/segment2_cn.1A9C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A9D0[] = {\n#include \"textures/segment2/segment2_cn.1A9D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A9E0[] = {\n#include \"textures/segment2/segment2_cn.1A9E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1A9F0[] = {\n#include \"textures/segment2/segment2_cn.1A9F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AA00[] = {\n#include \"textures/segment2/segment2_cn.1AA00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AA10[] = {\n#include \"textures/segment2/segment2_cn.1AA10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AA20[] = {\n#include \"textures/segment2/segment2_cn.1AA20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AA30[] = {\n#include \"textures/segment2/segment2_cn.1AA30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AA40[] = {\n#include \"textures/segment2/segment2_cn.1AA40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AA50[] = {\n#include \"textures/segment2/segment2_cn.1AA50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AA60[] = {\n#include \"textures/segment2/segment2_cn.1AA60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AA70[] = {\n#include \"textures/segment2/segment2_cn.1AA70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AA80[] = {\n#include \"textures/segment2/segment2_cn.1AA80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AA90[] = {\n#include \"textures/segment2/segment2_cn.1AA90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AAA0[] = {\n#include \"textures/segment2/segment2_cn.1AAA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AAB0[] = {\n#include \"textures/segment2/segment2_cn.1AAB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AAC0[] = {\n#include \"textures/segment2/segment2_cn.1AAC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AAD0[] = {\n#include \"textures/segment2/segment2_cn.1AAD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AAE0[] = {\n#include \"textures/segment2/segment2_cn.1AAE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AAF0[] = {\n#include \"textures/segment2/segment2_cn.1AAF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AB00[] = {\n#include \"textures/segment2/segment2_cn.1AB00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AB10[] = {\n#include \"textures/segment2/segment2_cn.1AB10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AB20[] = {\n#include \"textures/segment2/segment2_cn.1AB20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AB30[] = {\n#include \"textures/segment2/segment2_cn.1AB30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AB40[] = {\n#include \"textures/segment2/segment2_cn.1AB40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AB50[] = {\n#include \"textures/segment2/segment2_cn.1AB50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AB60[] = {\n#include \"textures/segment2/segment2_cn.1AB60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AB70[] = {\n#include \"textures/segment2/segment2_cn.1AB70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AB80[] = {\n#include \"textures/segment2/segment2_cn.1AB80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AB90[] = {\n#include \"textures/segment2/segment2_cn.1AB90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1ABA0[] = {\n#include \"textures/segment2/segment2_cn.1ABA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1ABB0[] = {\n#include \"textures/segment2/segment2_cn.1ABB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1ABC0[] = {\n#include \"textures/segment2/segment2_cn.1ABC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1ABD0[] = {\n#include \"textures/segment2/segment2_cn.1ABD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1ABE0[] = {\n#include \"textures/segment2/segment2_cn.1ABE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1ABF0[] = {\n#include \"textures/segment2/segment2_cn.1ABF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AC00[] = {\n#include \"textures/segment2/segment2_cn.1AC00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AC10[] = {\n#include \"textures/segment2/segment2_cn.1AC10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AC20[] = {\n#include \"textures/segment2/segment2_cn.1AC20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AC30[] = {\n#include \"textures/segment2/segment2_cn.1AC30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AC40[] = {\n#include \"textures/segment2/segment2_cn.1AC40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AC50[] = {\n#include \"textures/segment2/segment2_cn.1AC50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AC60[] = {\n#include \"textures/segment2/segment2_cn.1AC60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AC70[] = {\n#include \"textures/segment2/segment2_cn.1AC70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AC80[] = {\n#include \"textures/segment2/segment2_cn.1AC80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AC90[] = {\n#include \"textures/segment2/segment2_cn.1AC90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1ACA0[] = {\n#include \"textures/segment2/segment2_cn.1ACA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1ACB0[] = {\n#include \"textures/segment2/segment2_cn.1ACB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1ACC0[] = {\n#include \"textures/segment2/segment2_cn.1ACC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1ACD0[] = {\n#include \"textures/segment2/segment2_cn.1ACD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1ACE0[] = {\n#include \"textures/segment2/segment2_cn.1ACE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1ACF0[] = {\n#include \"textures/segment2/segment2_cn.1ACF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AD00[] = {\n#include \"textures/segment2/segment2_cn.1AD00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AD10[] = {\n#include \"textures/segment2/segment2_cn.1AD10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AD20[] = {\n#include \"textures/segment2/segment2_cn.1AD20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AD30[] = {\n#include \"textures/segment2/segment2_cn.1AD30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AD40[] = {\n#include \"textures/segment2/segment2_cn.1AD40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AD50[] = {\n#include \"textures/segment2/segment2_cn.1AD50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AD60[] = {\n#include \"textures/segment2/segment2_cn.1AD60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AD70[] = {\n#include \"textures/segment2/segment2_cn.1AD70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AD80[] = {\n#include \"textures/segment2/segment2_cn.1AD80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AD90[] = {\n#include \"textures/segment2/segment2_cn.1AD90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1ADA0[] = {\n#include \"textures/segment2/segment2_cn.1ADA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1ADB0[] = {\n#include \"textures/segment2/segment2_cn.1ADB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1ADC0[] = {\n#include \"textures/segment2/segment2_cn.1ADC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1ADD0[] = {\n#include \"textures/segment2/segment2_cn.1ADD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1ADE0[] = {\n#include \"textures/segment2/segment2_cn.1ADE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1ADF0[] = {\n#include \"textures/segment2/segment2_cn.1ADF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AE00[] = {\n#include \"textures/segment2/segment2_cn.1AE00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AE10[] = {\n#include \"textures/segment2/segment2_cn.1AE10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AE20[] = {\n#include \"textures/segment2/segment2_cn.1AE20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AE30[] = {\n#include \"textures/segment2/segment2_cn.1AE30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AE40[] = {\n#include \"textures/segment2/segment2_cn.1AE40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AE50[] = {\n#include \"textures/segment2/segment2_cn.1AE50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AE60[] = {\n#include \"textures/segment2/segment2_cn.1AE60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AE70[] = {\n#include \"textures/segment2/segment2_cn.1AE70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AE80[] = {\n#include \"textures/segment2/segment2_cn.1AE80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AE90[] = {\n#include \"textures/segment2/segment2_cn.1AE90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AEA0[] = {\n#include \"textures/segment2/segment2_cn.1AEA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AEB0[] = {\n#include \"textures/segment2/segment2_cn.1AEB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AEC0[] = {\n#include \"textures/segment2/segment2_cn.1AEC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AED0[] = {\n#include \"textures/segment2/segment2_cn.1AED0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AEE0[] = {\n#include \"textures/segment2/segment2_cn.1AEE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AEF0[] = {\n#include \"textures/segment2/segment2_cn.1AEF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AF00[] = {\n#include \"textures/segment2/segment2_cn.1AF00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AF10[] = {\n#include \"textures/segment2/segment2_cn.1AF10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AF20[] = {\n#include \"textures/segment2/segment2_cn.1AF20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AF30[] = {\n#include \"textures/segment2/segment2_cn.1AF30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AF40[] = {\n#include \"textures/segment2/segment2_cn.1AF40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AF50[] = {\n#include \"textures/segment2/segment2_cn.1AF50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AF60[] = {\n#include \"textures/segment2/segment2_cn.1AF60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AF70[] = {\n#include \"textures/segment2/segment2_cn.1AF70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AF80[] = {\n#include \"textures/segment2/segment2_cn.1AF80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AF90[] = {\n#include \"textures/segment2/segment2_cn.1AF90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AFA0[] = {\n#include \"textures/segment2/segment2_cn.1AFA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AFB0[] = {\n#include \"textures/segment2/segment2_cn.1AFB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AFC0[] = {\n#include \"textures/segment2/segment2_cn.1AFC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AFD0[] = {\n#include \"textures/segment2/segment2_cn.1AFD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AFE0[] = {\n#include \"textures/segment2/segment2_cn.1AFE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1AFF0[] = {\n#include \"textures/segment2/segment2_cn.1AFF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B000[] = {\n#include \"textures/segment2/segment2_cn.1B000.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B010[] = {\n#include \"textures/segment2/segment2_cn.1B010.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B020[] = {\n#include \"textures/segment2/segment2_cn.1B020.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B030[] = {\n#include \"textures/segment2/segment2_cn.1B030.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B040[] = {\n#include \"textures/segment2/segment2_cn.1B040.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B050[] = {\n#include \"textures/segment2/segment2_cn.1B050.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B060[] = {\n#include \"textures/segment2/segment2_cn.1B060.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B070[] = {\n#include \"textures/segment2/segment2_cn.1B070.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B080[] = {\n#include \"textures/segment2/segment2_cn.1B080.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B090[] = {\n#include \"textures/segment2/segment2_cn.1B090.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B0A0[] = {\n#include \"textures/segment2/segment2_cn.1B0A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B0B0[] = {\n#include \"textures/segment2/segment2_cn.1B0B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B0C0[] = {\n#include \"textures/segment2/segment2_cn.1B0C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B0D0[] = {\n#include \"textures/segment2/segment2_cn.1B0D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B0E0[] = {\n#include \"textures/segment2/segment2_cn.1B0E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B0F0[] = {\n#include \"textures/segment2/segment2_cn.1B0F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B100[] = {\n#include \"textures/segment2/segment2_cn.1B100.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B110[] = {\n#include \"textures/segment2/segment2_cn.1B110.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B120[] = {\n#include \"textures/segment2/segment2_cn.1B120.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B130[] = {\n#include \"textures/segment2/segment2_cn.1B130.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B140[] = {\n#include \"textures/segment2/segment2_cn.1B140.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B150[] = {\n#include \"textures/segment2/segment2_cn.1B150.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B160[] = {\n#include \"textures/segment2/segment2_cn.1B160.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B170[] = {\n#include \"textures/segment2/segment2_cn.1B170.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B180[] = {\n#include \"textures/segment2/segment2_cn.1B180.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B190[] = {\n#include \"textures/segment2/segment2_cn.1B190.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B1A0[] = {\n#include \"textures/segment2/segment2_cn.1B1A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B1B0[] = {\n#include \"textures/segment2/segment2_cn.1B1B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B1C0[] = {\n#include \"textures/segment2/segment2_cn.1B1C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B1D0[] = {\n#include \"textures/segment2/segment2_cn.1B1D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B1E0[] = {\n#include \"textures/segment2/segment2_cn.1B1E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B1F0[] = {\n#include \"textures/segment2/segment2_cn.1B1F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B200[] = {\n#include \"textures/segment2/segment2_cn.1B200.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B210[] = {\n#include \"textures/segment2/segment2_cn.1B210.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B220[] = {\n#include \"textures/segment2/segment2_cn.1B220.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B230[] = {\n#include \"textures/segment2/segment2_cn.1B230.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B240[] = {\n#include \"textures/segment2/segment2_cn.1B240.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B250[] = {\n#include \"textures/segment2/segment2_cn.1B250.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B260[] = {\n#include \"textures/segment2/segment2_cn.1B260.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B270[] = {\n#include \"textures/segment2/segment2_cn.1B270.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B280[] = {\n#include \"textures/segment2/segment2_cn.1B280.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B290[] = {\n#include \"textures/segment2/segment2_cn.1B290.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B2A0[] = {\n#include \"textures/segment2/segment2_cn.1B2A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B2B0[] = {\n#include \"textures/segment2/segment2_cn.1B2B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B2C0[] = {\n#include \"textures/segment2/segment2_cn.1B2C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B2D0[] = {\n#include \"textures/segment2/segment2_cn.1B2D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B2E0[] = {\n#include \"textures/segment2/segment2_cn.1B2E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B2F0[] = {\n#include \"textures/segment2/segment2_cn.1B2F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B300[] = {\n#include \"textures/segment2/segment2_cn.1B300.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B310[] = {\n#include \"textures/segment2/segment2_cn.1B310.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B320[] = {\n#include \"textures/segment2/segment2_cn.1B320.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B330[] = {\n#include \"textures/segment2/segment2_cn.1B330.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B340[] = {\n#include \"textures/segment2/segment2_cn.1B340.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B350[] = {\n#include \"textures/segment2/segment2_cn.1B350.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B360[] = {\n#include \"textures/segment2/segment2_cn.1B360.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B370[] = {\n#include \"textures/segment2/segment2_cn.1B370.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B380[] = {\n#include \"textures/segment2/segment2_cn.1B380.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B390[] = {\n#include \"textures/segment2/segment2_cn.1B390.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B3A0[] = {\n#include \"textures/segment2/segment2_cn.1B3A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B3B0[] = {\n#include \"textures/segment2/segment2_cn.1B3B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B3C0[] = {\n#include \"textures/segment2/segment2_cn.1B3C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B3D0[] = {\n#include \"textures/segment2/segment2_cn.1B3D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B3E0[] = {\n#include \"textures/segment2/segment2_cn.1B3E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B3F0[] = {\n#include \"textures/segment2/segment2_cn.1B3F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B400[] = {\n#include \"textures/segment2/segment2_cn.1B400.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B410[] = {\n#include \"textures/segment2/segment2_cn.1B410.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B420[] = {\n#include \"textures/segment2/segment2_cn.1B420.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B430[] = {\n#include \"textures/segment2/segment2_cn.1B430.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B440[] = {\n#include \"textures/segment2/segment2_cn.1B440.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B450[] = {\n#include \"textures/segment2/segment2_cn.1B450.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B460[] = {\n#include \"textures/segment2/segment2_cn.1B460.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B470[] = {\n#include \"textures/segment2/segment2_cn.1B470.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B480[] = {\n#include \"textures/segment2/segment2_cn.1B480.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B490[] = {\n#include \"textures/segment2/segment2_cn.1B490.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B4A0[] = {\n#include \"textures/segment2/segment2_cn.1B4A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B4B0[] = {\n#include \"textures/segment2/segment2_cn.1B4B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B4C0[] = {\n#include \"textures/segment2/segment2_cn.1B4C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B4D0[] = {\n#include \"textures/segment2/segment2_cn.1B4D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B4E0[] = {\n#include \"textures/segment2/segment2_cn.1B4E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B4F0[] = {\n#include \"textures/segment2/segment2_cn.1B4F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B500[] = {\n#include \"textures/segment2/segment2_cn.1B500.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B510[] = {\n#include \"textures/segment2/segment2_cn.1B510.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B520[] = {\n#include \"textures/segment2/segment2_cn.1B520.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B530[] = {\n#include \"textures/segment2/segment2_cn.1B530.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B540[] = {\n#include \"textures/segment2/segment2_cn.1B540.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B550[] = {\n#include \"textures/segment2/segment2_cn.1B550.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B560[] = {\n#include \"textures/segment2/segment2_cn.1B560.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B570[] = {\n#include \"textures/segment2/segment2_cn.1B570.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B580[] = {\n#include \"textures/segment2/segment2_cn.1B580.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B590[] = {\n#include \"textures/segment2/segment2_cn.1B590.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B5A0[] = {\n#include \"textures/segment2/segment2_cn.1B5A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B5B0[] = {\n#include \"textures/segment2/segment2_cn.1B5B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B5C0[] = {\n#include \"textures/segment2/segment2_cn.1B5C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B5D0[] = {\n#include \"textures/segment2/segment2_cn.1B5D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B5E0[] = {\n#include \"textures/segment2/segment2_cn.1B5E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B5F0[] = {\n#include \"textures/segment2/segment2_cn.1B5F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B600[] = {\n#include \"textures/segment2/segment2_cn.1B600.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B610[] = {\n#include \"textures/segment2/segment2_cn.1B610.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B620[] = {\n#include \"textures/segment2/segment2_cn.1B620.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B630[] = {\n#include \"textures/segment2/segment2_cn.1B630.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B640[] = {\n#include \"textures/segment2/segment2_cn.1B640.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B650[] = {\n#include \"textures/segment2/segment2_cn.1B650.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B660[] = {\n#include \"textures/segment2/segment2_cn.1B660.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B670[] = {\n#include \"textures/segment2/segment2_cn.1B670.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B680[] = {\n#include \"textures/segment2/segment2_cn.1B680.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B690[] = {\n#include \"textures/segment2/segment2_cn.1B690.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B6A0[] = {\n#include \"textures/segment2/segment2_cn.1B6A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B6B0[] = {\n#include \"textures/segment2/segment2_cn.1B6B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B6C0[] = {\n#include \"textures/segment2/segment2_cn.1B6C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B6D0[] = {\n#include \"textures/segment2/segment2_cn.1B6D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B6E0[] = {\n#include \"textures/segment2/segment2_cn.1B6E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B6F0[] = {\n#include \"textures/segment2/segment2_cn.1B6F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B700[] = {\n#include \"textures/segment2/segment2_cn.1B700.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B710[] = {\n#include \"textures/segment2/segment2_cn.1B710.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B720[] = {\n#include \"textures/segment2/segment2_cn.1B720.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B730[] = {\n#include \"textures/segment2/segment2_cn.1B730.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B740[] = {\n#include \"textures/segment2/segment2_cn.1B740.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B750[] = {\n#include \"textures/segment2/segment2_cn.1B750.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B760[] = {\n#include \"textures/segment2/segment2_cn.1B760.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B770[] = {\n#include \"textures/segment2/segment2_cn.1B770.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B780[] = {\n#include \"textures/segment2/segment2_cn.1B780.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B790[] = {\n#include \"textures/segment2/segment2_cn.1B790.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B7A0[] = {\n#include \"textures/segment2/segment2_cn.1B7A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B7B0[] = {\n#include \"textures/segment2/segment2_cn.1B7B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B7C0[] = {\n#include \"textures/segment2/segment2_cn.1B7C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B7D0[] = {\n#include \"textures/segment2/segment2_cn.1B7D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B7E0[] = {\n#include \"textures/segment2/segment2_cn.1B7E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B7F0[] = {\n#include \"textures/segment2/segment2_cn.1B7F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B800[] = {\n#include \"textures/segment2/segment2_cn.1B800.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B810[] = {\n#include \"textures/segment2/segment2_cn.1B810.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B820[] = {\n#include \"textures/segment2/segment2_cn.1B820.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B830[] = {\n#include \"textures/segment2/segment2_cn.1B830.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B840[] = {\n#include \"textures/segment2/segment2_cn.1B840.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B850[] = {\n#include \"textures/segment2/segment2_cn.1B850.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B860[] = {\n#include \"textures/segment2/segment2_cn.1B860.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B870[] = {\n#include \"textures/segment2/segment2_cn.1B870.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B880[] = {\n#include \"textures/segment2/segment2_cn.1B880.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B890[] = {\n#include \"textures/segment2/segment2_cn.1B890.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B8A0[] = {\n#include \"textures/segment2/segment2_cn.1B8A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B8B0[] = {\n#include \"textures/segment2/segment2_cn.1B8B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B8C0[] = {\n#include \"textures/segment2/segment2_cn.1B8C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B8D0[] = {\n#include \"textures/segment2/segment2_cn.1B8D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B8E0[] = {\n#include \"textures/segment2/segment2_cn.1B8E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B8F0[] = {\n#include \"textures/segment2/segment2_cn.1B8F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B900[] = {\n#include \"textures/segment2/segment2_cn.1B900.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B910[] = {\n#include \"textures/segment2/segment2_cn.1B910.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B920[] = {\n#include \"textures/segment2/segment2_cn.1B920.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B930[] = {\n#include \"textures/segment2/segment2_cn.1B930.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B940[] = {\n#include \"textures/segment2/segment2_cn.1B940.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B950[] = {\n#include \"textures/segment2/segment2_cn.1B950.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B960[] = {\n#include \"textures/segment2/segment2_cn.1B960.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B970[] = {\n#include \"textures/segment2/segment2_cn.1B970.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B980[] = {\n#include \"textures/segment2/segment2_cn.1B980.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B990[] = {\n#include \"textures/segment2/segment2_cn.1B990.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B9A0[] = {\n#include \"textures/segment2/segment2_cn.1B9A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B9B0[] = {\n#include \"textures/segment2/segment2_cn.1B9B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B9C0[] = {\n#include \"textures/segment2/segment2_cn.1B9C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B9D0[] = {\n#include \"textures/segment2/segment2_cn.1B9D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B9E0[] = {\n#include \"textures/segment2/segment2_cn.1B9E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1B9F0[] = {\n#include \"textures/segment2/segment2_cn.1B9F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BA00[] = {\n#include \"textures/segment2/segment2_cn.1BA00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BA10[] = {\n#include \"textures/segment2/segment2_cn.1BA10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BA20[] = {\n#include \"textures/segment2/segment2_cn.1BA20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BA30[] = {\n#include \"textures/segment2/segment2_cn.1BA30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BA40[] = {\n#include \"textures/segment2/segment2_cn.1BA40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BA50[] = {\n#include \"textures/segment2/segment2_cn.1BA50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BA60[] = {\n#include \"textures/segment2/segment2_cn.1BA60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BA70[] = {\n#include \"textures/segment2/segment2_cn.1BA70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BA80[] = {\n#include \"textures/segment2/segment2_cn.1BA80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BA90[] = {\n#include \"textures/segment2/segment2_cn.1BA90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BAA0[] = {\n#include \"textures/segment2/segment2_cn.1BAA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BAB0[] = {\n#include \"textures/segment2/segment2_cn.1BAB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BAC0[] = {\n#include \"textures/segment2/segment2_cn.1BAC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BAD0[] = {\n#include \"textures/segment2/segment2_cn.1BAD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BAE0[] = {\n#include \"textures/segment2/segment2_cn.1BAE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BAF0[] = {\n#include \"textures/segment2/segment2_cn.1BAF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BB00[] = {\n#include \"textures/segment2/segment2_cn.1BB00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BB10[] = {\n#include \"textures/segment2/segment2_cn.1BB10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BB20[] = {\n#include \"textures/segment2/segment2_cn.1BB20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BB30[] = {\n#include \"textures/segment2/segment2_cn.1BB30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BB40[] = {\n#include \"textures/segment2/segment2_cn.1BB40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BB50[] = {\n#include \"textures/segment2/segment2_cn.1BB50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BB60[] = {\n#include \"textures/segment2/segment2_cn.1BB60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BB70[] = {\n#include \"textures/segment2/segment2_cn.1BB70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BB80[] = {\n#include \"textures/segment2/segment2_cn.1BB80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BB90[] = {\n#include \"textures/segment2/segment2_cn.1BB90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BBA0[] = {\n#include \"textures/segment2/segment2_cn.1BBA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BBB0[] = {\n#include \"textures/segment2/segment2_cn.1BBB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BBC0[] = {\n#include \"textures/segment2/segment2_cn.1BBC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BBD0[] = {\n#include \"textures/segment2/segment2_cn.1BBD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BBE0[] = {\n#include \"textures/segment2/segment2_cn.1BBE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BBF0[] = {\n#include \"textures/segment2/segment2_cn.1BBF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BC00[] = {\n#include \"textures/segment2/segment2_cn.1BC00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BC10[] = {\n#include \"textures/segment2/segment2_cn.1BC10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BC20[] = {\n#include \"textures/segment2/segment2_cn.1BC20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BC30[] = {\n#include \"textures/segment2/segment2_cn.1BC30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BC40[] = {\n#include \"textures/segment2/segment2_cn.1BC40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BC50[] = {\n#include \"textures/segment2/segment2_cn.1BC50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BC60[] = {\n#include \"textures/segment2/segment2_cn.1BC60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BC70[] = {\n#include \"textures/segment2/segment2_cn.1BC70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BC80[] = {\n#include \"textures/segment2/segment2_cn.1BC80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BC90[] = {\n#include \"textures/segment2/segment2_cn.1BC90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BCA0[] = {\n#include \"textures/segment2/segment2_cn.1BCA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BCB0[] = {\n#include \"textures/segment2/segment2_cn.1BCB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BCC0[] = {\n#include \"textures/segment2/segment2_cn.1BCC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BCD0[] = {\n#include \"textures/segment2/segment2_cn.1BCD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BCE0[] = {\n#include \"textures/segment2/segment2_cn.1BCE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BCF0[] = {\n#include \"textures/segment2/segment2_cn.1BCF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BD00[] = {\n#include \"textures/segment2/segment2_cn.1BD00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BD10[] = {\n#include \"textures/segment2/segment2_cn.1BD10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BD20[] = {\n#include \"textures/segment2/segment2_cn.1BD20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BD30[] = {\n#include \"textures/segment2/segment2_cn.1BD30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BD40[] = {\n#include \"textures/segment2/segment2_cn.1BD40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BD50[] = {\n#include \"textures/segment2/segment2_cn.1BD50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BD60[] = {\n#include \"textures/segment2/segment2_cn.1BD60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BD70[] = {\n#include \"textures/segment2/segment2_cn.1BD70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BD80[] = {\n#include \"textures/segment2/segment2_cn.1BD80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BD90[] = {\n#include \"textures/segment2/segment2_cn.1BD90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BDA0[] = {\n#include \"textures/segment2/segment2_cn.1BDA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BDB0[] = {\n#include \"textures/segment2/segment2_cn.1BDB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BDC0[] = {\n#include \"textures/segment2/segment2_cn.1BDC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BDD0[] = {\n#include \"textures/segment2/segment2_cn.1BDD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BDE0[] = {\n#include \"textures/segment2/segment2_cn.1BDE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BDF0[] = {\n#include \"textures/segment2/segment2_cn.1BDF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BE00[] = {\n#include \"textures/segment2/segment2_cn.1BE00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BE10[] = {\n#include \"textures/segment2/segment2_cn.1BE10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BE20[] = {\n#include \"textures/segment2/segment2_cn.1BE20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BE30[] = {\n#include \"textures/segment2/segment2_cn.1BE30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BE40[] = {\n#include \"textures/segment2/segment2_cn.1BE40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BE50[] = {\n#include \"textures/segment2/segment2_cn.1BE50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BE60[] = {\n#include \"textures/segment2/segment2_cn.1BE60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BE70[] = {\n#include \"textures/segment2/segment2_cn.1BE70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BE80[] = {\n#include \"textures/segment2/segment2_cn.1BE80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BE90[] = {\n#include \"textures/segment2/segment2_cn.1BE90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BEA0[] = {\n#include \"textures/segment2/segment2_cn.1BEA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BEB0[] = {\n#include \"textures/segment2/segment2_cn.1BEB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BEC0[] = {\n#include \"textures/segment2/segment2_cn.1BEC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BED0[] = {\n#include \"textures/segment2/segment2_cn.1BED0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BEE0[] = {\n#include \"textures/segment2/segment2_cn.1BEE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BEF0[] = {\n#include \"textures/segment2/segment2_cn.1BEF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BF00[] = {\n#include \"textures/segment2/segment2_cn.1BF00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BF10[] = {\n#include \"textures/segment2/segment2_cn.1BF10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BF20[] = {\n#include \"textures/segment2/segment2_cn.1BF20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BF30[] = {\n#include \"textures/segment2/segment2_cn.1BF30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BF40[] = {\n#include \"textures/segment2/segment2_cn.1BF40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BF50[] = {\n#include \"textures/segment2/segment2_cn.1BF50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BF60[] = {\n#include \"textures/segment2/segment2_cn.1BF60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BF70[] = {\n#include \"textures/segment2/segment2_cn.1BF70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BF80[] = {\n#include \"textures/segment2/segment2_cn.1BF80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BF90[] = {\n#include \"textures/segment2/segment2_cn.1BF90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BFA0[] = {\n#include \"textures/segment2/segment2_cn.1BFA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BFB0[] = {\n#include \"textures/segment2/segment2_cn.1BFB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BFC0[] = {\n#include \"textures/segment2/segment2_cn.1BFC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BFD0[] = {\n#include \"textures/segment2/segment2_cn.1BFD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BFE0[] = {\n#include \"textures/segment2/segment2_cn.1BFE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1BFF0[] = {\n#include \"textures/segment2/segment2_cn.1BFF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C000[] = {\n#include \"textures/segment2/segment2_cn.1C000.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C010[] = {\n#include \"textures/segment2/segment2_cn.1C010.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C020[] = {\n#include \"textures/segment2/segment2_cn.1C020.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C030[] = {\n#include \"textures/segment2/segment2_cn.1C030.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C040[] = {\n#include \"textures/segment2/segment2_cn.1C040.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C050[] = {\n#include \"textures/segment2/segment2_cn.1C050.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C060[] = {\n#include \"textures/segment2/segment2_cn.1C060.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C070[] = {\n#include \"textures/segment2/segment2_cn.1C070.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C080[] = {\n#include \"textures/segment2/segment2_cn.1C080.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C090[] = {\n#include \"textures/segment2/segment2_cn.1C090.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C0A0[] = {\n#include \"textures/segment2/segment2_cn.1C0A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C0B0[] = {\n#include \"textures/segment2/segment2_cn.1C0B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C0C0[] = {\n#include \"textures/segment2/segment2_cn.1C0C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C0D0[] = {\n#include \"textures/segment2/segment2_cn.1C0D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C0E0[] = {\n#include \"textures/segment2/segment2_cn.1C0E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C0F0[] = {\n#include \"textures/segment2/segment2_cn.1C0F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C100[] = {\n#include \"textures/segment2/segment2_cn.1C100.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C110[] = {\n#include \"textures/segment2/segment2_cn.1C110.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C120[] = {\n#include \"textures/segment2/segment2_cn.1C120.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C130[] = {\n#include \"textures/segment2/segment2_cn.1C130.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C140[] = {\n#include \"textures/segment2/segment2_cn.1C140.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C150[] = {\n#include \"textures/segment2/segment2_cn.1C150.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C160[] = {\n#include \"textures/segment2/segment2_cn.1C160.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C170[] = {\n#include \"textures/segment2/segment2_cn.1C170.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C180[] = {\n#include \"textures/segment2/segment2_cn.1C180.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C190[] = {\n#include \"textures/segment2/segment2_cn.1C190.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C1A0[] = {\n#include \"textures/segment2/segment2_cn.1C1A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C1B0[] = {\n#include \"textures/segment2/segment2_cn.1C1B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C1C0[] = {\n#include \"textures/segment2/segment2_cn.1C1C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C1D0[] = {\n#include \"textures/segment2/segment2_cn.1C1D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C1E0[] = {\n#include \"textures/segment2/segment2_cn.1C1E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C1F0[] = {\n#include \"textures/segment2/segment2_cn.1C1F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C200[] = {\n#include \"textures/segment2/segment2_cn.1C200.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C210[] = {\n#include \"textures/segment2/segment2_cn.1C210.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C220[] = {\n#include \"textures/segment2/segment2_cn.1C220.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C230[] = {\n#include \"textures/segment2/segment2_cn.1C230.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C240[] = {\n#include \"textures/segment2/segment2_cn.1C240.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C250[] = {\n#include \"textures/segment2/segment2_cn.1C250.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C260[] = {\n#include \"textures/segment2/segment2_cn.1C260.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C270[] = {\n#include \"textures/segment2/segment2_cn.1C270.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C280[] = {\n#include \"textures/segment2/segment2_cn.1C280.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C290[] = {\n#include \"textures/segment2/segment2_cn.1C290.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C2A0[] = {\n#include \"textures/segment2/segment2_cn.1C2A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C2B0[] = {\n#include \"textures/segment2/segment2_cn.1C2B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C2C0[] = {\n#include \"textures/segment2/segment2_cn.1C2C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C2D0[] = {\n#include \"textures/segment2/segment2_cn.1C2D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C2E0[] = {\n#include \"textures/segment2/segment2_cn.1C2E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C2F0[] = {\n#include \"textures/segment2/segment2_cn.1C2F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C300[] = {\n#include \"textures/segment2/segment2_cn.1C300.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C310[] = {\n#include \"textures/segment2/segment2_cn.1C310.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C320[] = {\n#include \"textures/segment2/segment2_cn.1C320.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C330[] = {\n#include \"textures/segment2/segment2_cn.1C330.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C340[] = {\n#include \"textures/segment2/segment2_cn.1C340.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C350[] = {\n#include \"textures/segment2/segment2_cn.1C350.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C360[] = {\n#include \"textures/segment2/segment2_cn.1C360.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C370[] = {\n#include \"textures/segment2/segment2_cn.1C370.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C380[] = {\n#include \"textures/segment2/segment2_cn.1C380.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C390[] = {\n#include \"textures/segment2/segment2_cn.1C390.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C3A0[] = {\n#include \"textures/segment2/segment2_cn.1C3A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C3B0[] = {\n#include \"textures/segment2/segment2_cn.1C3B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C3C0[] = {\n#include \"textures/segment2/segment2_cn.1C3C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C3D0[] = {\n#include \"textures/segment2/segment2_cn.1C3D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C3E0[] = {\n#include \"textures/segment2/segment2_cn.1C3E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C3F0[] = {\n#include \"textures/segment2/segment2_cn.1C3F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C400[] = {\n#include \"textures/segment2/segment2_cn.1C400.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C410[] = {\n#include \"textures/segment2/segment2_cn.1C410.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C420[] = {\n#include \"textures/segment2/segment2_cn.1C420.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C430[] = {\n#include \"textures/segment2/segment2_cn.1C430.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C440[] = {\n#include \"textures/segment2/segment2_cn.1C440.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C450[] = {\n#include \"textures/segment2/segment2_cn.1C450.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C460[] = {\n#include \"textures/segment2/segment2_cn.1C460.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C470[] = {\n#include \"textures/segment2/segment2_cn.1C470.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C480[] = {\n#include \"textures/segment2/segment2_cn.1C480.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C490[] = {\n#include \"textures/segment2/segment2_cn.1C490.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C4A0[] = {\n#include \"textures/segment2/segment2_cn.1C4A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C4B0[] = {\n#include \"textures/segment2/segment2_cn.1C4B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C4C0[] = {\n#include \"textures/segment2/segment2_cn.1C4C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C4D0[] = {\n#include \"textures/segment2/segment2_cn.1C4D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C4E0[] = {\n#include \"textures/segment2/segment2_cn.1C4E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C4F0[] = {\n#include \"textures/segment2/segment2_cn.1C4F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C500[] = {\n#include \"textures/segment2/segment2_cn.1C500.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C510[] = {\n#include \"textures/segment2/segment2_cn.1C510.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C520[] = {\n#include \"textures/segment2/segment2_cn.1C520.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C530[] = {\n#include \"textures/segment2/segment2_cn.1C530.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C540[] = {\n#include \"textures/segment2/segment2_cn.1C540.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C550[] = {\n#include \"textures/segment2/segment2_cn.1C550.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C560[] = {\n#include \"textures/segment2/segment2_cn.1C560.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C570[] = {\n#include \"textures/segment2/segment2_cn.1C570.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C580[] = {\n#include \"textures/segment2/segment2_cn.1C580.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C590[] = {\n#include \"textures/segment2/segment2_cn.1C590.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C5A0[] = {\n#include \"textures/segment2/segment2_cn.1C5A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C5B0[] = {\n#include \"textures/segment2/segment2_cn.1C5B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C5C0[] = {\n#include \"textures/segment2/segment2_cn.1C5C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C5D0[] = {\n#include \"textures/segment2/segment2_cn.1C5D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C5E0[] = {\n#include \"textures/segment2/segment2_cn.1C5E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C5F0[] = {\n#include \"textures/segment2/segment2_cn.1C5F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C600[] = {\n#include \"textures/segment2/segment2_cn.1C600.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C610[] = {\n#include \"textures/segment2/segment2_cn.1C610.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C620[] = {\n#include \"textures/segment2/segment2_cn.1C620.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C630[] = {\n#include \"textures/segment2/segment2_cn.1C630.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C640[] = {\n#include \"textures/segment2/segment2_cn.1C640.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C650[] = {\n#include \"textures/segment2/segment2_cn.1C650.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C660[] = {\n#include \"textures/segment2/segment2_cn.1C660.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C670[] = {\n#include \"textures/segment2/segment2_cn.1C670.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C680[] = {\n#include \"textures/segment2/segment2_cn.1C680.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C690[] = {\n#include \"textures/segment2/segment2_cn.1C690.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C6A0[] = {\n#include \"textures/segment2/segment2_cn.1C6A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C6B0[] = {\n#include \"textures/segment2/segment2_cn.1C6B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C6C0[] = {\n#include \"textures/segment2/segment2_cn.1C6C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C6D0[] = {\n#include \"textures/segment2/segment2_cn.1C6D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C6E0[] = {\n#include \"textures/segment2/segment2_cn.1C6E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C6F0[] = {\n#include \"textures/segment2/segment2_cn.1C6F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C700[] = {\n#include \"textures/segment2/segment2_cn.1C700.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C710[] = {\n#include \"textures/segment2/segment2_cn.1C710.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C720[] = {\n#include \"textures/segment2/segment2_cn.1C720.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C730[] = {\n#include \"textures/segment2/segment2_cn.1C730.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C740[] = {\n#include \"textures/segment2/segment2_cn.1C740.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C750[] = {\n#include \"textures/segment2/segment2_cn.1C750.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C760[] = {\n#include \"textures/segment2/segment2_cn.1C760.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C770[] = {\n#include \"textures/segment2/segment2_cn.1C770.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C780[] = {\n#include \"textures/segment2/segment2_cn.1C780.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C790[] = {\n#include \"textures/segment2/segment2_cn.1C790.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C7A0[] = {\n#include \"textures/segment2/segment2_cn.1C7A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C7B0[] = {\n#include \"textures/segment2/segment2_cn.1C7B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C7C0[] = {\n#include \"textures/segment2/segment2_cn.1C7C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C7D0[] = {\n#include \"textures/segment2/segment2_cn.1C7D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C7E0[] = {\n#include \"textures/segment2/segment2_cn.1C7E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C7F0[] = {\n#include \"textures/segment2/segment2_cn.1C7F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C800[] = {\n#include \"textures/segment2/segment2_cn.1C800.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C810[] = {\n#include \"textures/segment2/segment2_cn.1C810.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C820[] = {\n#include \"textures/segment2/segment2_cn.1C820.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C830[] = {\n#include \"textures/segment2/segment2_cn.1C830.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C840[] = {\n#include \"textures/segment2/segment2_cn.1C840.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C850[] = {\n#include \"textures/segment2/segment2_cn.1C850.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C860[] = {\n#include \"textures/segment2/segment2_cn.1C860.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C870[] = {\n#include \"textures/segment2/segment2_cn.1C870.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C880[] = {\n#include \"textures/segment2/segment2_cn.1C880.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C890[] = {\n#include \"textures/segment2/segment2_cn.1C890.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C8A0[] = {\n#include \"textures/segment2/segment2_cn.1C8A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C8B0[] = {\n#include \"textures/segment2/segment2_cn.1C8B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C8C0[] = {\n#include \"textures/segment2/segment2_cn.1C8C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C8D0[] = {\n#include \"textures/segment2/segment2_cn.1C8D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C8E0[] = {\n#include \"textures/segment2/segment2_cn.1C8E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C8F0[] = {\n#include \"textures/segment2/segment2_cn.1C8F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C900[] = {\n#include \"textures/segment2/segment2_cn.1C900.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C910[] = {\n#include \"textures/segment2/segment2_cn.1C910.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C920[] = {\n#include \"textures/segment2/segment2_cn.1C920.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C930[] = {\n#include \"textures/segment2/segment2_cn.1C930.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C940[] = {\n#include \"textures/segment2/segment2_cn.1C940.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C950[] = {\n#include \"textures/segment2/segment2_cn.1C950.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C960[] = {\n#include \"textures/segment2/segment2_cn.1C960.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C970[] = {\n#include \"textures/segment2/segment2_cn.1C970.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C980[] = {\n#include \"textures/segment2/segment2_cn.1C980.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C990[] = {\n#include \"textures/segment2/segment2_cn.1C990.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C9A0[] = {\n#include \"textures/segment2/segment2_cn.1C9A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C9B0[] = {\n#include \"textures/segment2/segment2_cn.1C9B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C9C0[] = {\n#include \"textures/segment2/segment2_cn.1C9C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C9D0[] = {\n#include \"textures/segment2/segment2_cn.1C9D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C9E0[] = {\n#include \"textures/segment2/segment2_cn.1C9E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1C9F0[] = {\n#include \"textures/segment2/segment2_cn.1C9F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CA00[] = {\n#include \"textures/segment2/segment2_cn.1CA00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CA10[] = {\n#include \"textures/segment2/segment2_cn.1CA10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CA20[] = {\n#include \"textures/segment2/segment2_cn.1CA20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CA30[] = {\n#include \"textures/segment2/segment2_cn.1CA30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CA40[] = {\n#include \"textures/segment2/segment2_cn.1CA40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CA50[] = {\n#include \"textures/segment2/segment2_cn.1CA50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CA60[] = {\n#include \"textures/segment2/segment2_cn.1CA60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CA70[] = {\n#include \"textures/segment2/segment2_cn.1CA70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CA80[] = {\n#include \"textures/segment2/segment2_cn.1CA80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CA90[] = {\n#include \"textures/segment2/segment2_cn.1CA90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CAA0[] = {\n#include \"textures/segment2/segment2_cn.1CAA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CAB0[] = {\n#include \"textures/segment2/segment2_cn.1CAB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CAC0[] = {\n#include \"textures/segment2/segment2_cn.1CAC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CAD0[] = {\n#include \"textures/segment2/segment2_cn.1CAD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CAE0[] = {\n#include \"textures/segment2/segment2_cn.1CAE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CAF0[] = {\n#include \"textures/segment2/segment2_cn.1CAF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CB00[] = {\n#include \"textures/segment2/segment2_cn.1CB00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CB10[] = {\n#include \"textures/segment2/segment2_cn.1CB10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CB20[] = {\n#include \"textures/segment2/segment2_cn.1CB20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CB30[] = {\n#include \"textures/segment2/segment2_cn.1CB30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CB40[] = {\n#include \"textures/segment2/segment2_cn.1CB40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CB50[] = {\n#include \"textures/segment2/segment2_cn.1CB50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CB60[] = {\n#include \"textures/segment2/segment2_cn.1CB60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CB70[] = {\n#include \"textures/segment2/segment2_cn.1CB70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CB80[] = {\n#include \"textures/segment2/segment2_cn.1CB80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CB90[] = {\n#include \"textures/segment2/segment2_cn.1CB90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CBA0[] = {\n#include \"textures/segment2/segment2_cn.1CBA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CBB0[] = {\n#include \"textures/segment2/segment2_cn.1CBB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CBC0[] = {\n#include \"textures/segment2/segment2_cn.1CBC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CBD0[] = {\n#include \"textures/segment2/segment2_cn.1CBD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CBE0[] = {\n#include \"textures/segment2/segment2_cn.1CBE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CBF0[] = {\n#include \"textures/segment2/segment2_cn.1CBF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CC00[] = {\n#include \"textures/segment2/segment2_cn.1CC00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CC10[] = {\n#include \"textures/segment2/segment2_cn.1CC10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CC20[] = {\n#include \"textures/segment2/segment2_cn.1CC20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CC30[] = {\n#include \"textures/segment2/segment2_cn.1CC30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CC40[] = {\n#include \"textures/segment2/segment2_cn.1CC40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CC50[] = {\n#include \"textures/segment2/segment2_cn.1CC50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CC60[] = {\n#include \"textures/segment2/segment2_cn.1CC60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CC70[] = {\n#include \"textures/segment2/segment2_cn.1CC70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CC80[] = {\n#include \"textures/segment2/segment2_cn.1CC80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CC90[] = {\n#include \"textures/segment2/segment2_cn.1CC90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CCA0[] = {\n#include \"textures/segment2/segment2_cn.1CCA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CCB0[] = {\n#include \"textures/segment2/segment2_cn.1CCB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CCC0[] = {\n#include \"textures/segment2/segment2_cn.1CCC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CCD0[] = {\n#include \"textures/segment2/segment2_cn.1CCD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CCE0[] = {\n#include \"textures/segment2/segment2_cn.1CCE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CCF0[] = {\n#include \"textures/segment2/segment2_cn.1CCF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CD00[] = {\n#include \"textures/segment2/segment2_cn.1CD00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CD10[] = {\n#include \"textures/segment2/segment2_cn.1CD10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CD20[] = {\n#include \"textures/segment2/segment2_cn.1CD20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CD30[] = {\n#include \"textures/segment2/segment2_cn.1CD30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CD40[] = {\n#include \"textures/segment2/segment2_cn.1CD40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CD50[] = {\n#include \"textures/segment2/segment2_cn.1CD50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CD60[] = {\n#include \"textures/segment2/segment2_cn.1CD60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CD70[] = {\n#include \"textures/segment2/segment2_cn.1CD70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CD80[] = {\n#include \"textures/segment2/segment2_cn.1CD80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CD90[] = {\n#include \"textures/segment2/segment2_cn.1CD90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CDA0[] = {\n#include \"textures/segment2/segment2_cn.1CDA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CDB0[] = {\n#include \"textures/segment2/segment2_cn.1CDB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CDC0[] = {\n#include \"textures/segment2/segment2_cn.1CDC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CDD0[] = {\n#include \"textures/segment2/segment2_cn.1CDD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CDE0[] = {\n#include \"textures/segment2/segment2_cn.1CDE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CDF0[] = {\n#include \"textures/segment2/segment2_cn.1CDF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CE00[] = {\n#include \"textures/segment2/segment2_cn.1CE00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CE10[] = {\n#include \"textures/segment2/segment2_cn.1CE10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CE20[] = {\n#include \"textures/segment2/segment2_cn.1CE20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CE30[] = {\n#include \"textures/segment2/segment2_cn.1CE30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CE40[] = {\n#include \"textures/segment2/segment2_cn.1CE40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CE50[] = {\n#include \"textures/segment2/segment2_cn.1CE50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CE60[] = {\n#include \"textures/segment2/segment2_cn.1CE60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CE70[] = {\n#include \"textures/segment2/segment2_cn.1CE70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CE80[] = {\n#include \"textures/segment2/segment2_cn.1CE80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CE90[] = {\n#include \"textures/segment2/segment2_cn.1CE90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CEA0[] = {\n#include \"textures/segment2/segment2_cn.1CEA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CEB0[] = {\n#include \"textures/segment2/segment2_cn.1CEB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CEC0[] = {\n#include \"textures/segment2/segment2_cn.1CEC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CED0[] = {\n#include \"textures/segment2/segment2_cn.1CED0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CEE0[] = {\n#include \"textures/segment2/segment2_cn.1CEE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CEF0[] = {\n#include \"textures/segment2/segment2_cn.1CEF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CF00[] = {\n#include \"textures/segment2/segment2_cn.1CF00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CF10[] = {\n#include \"textures/segment2/segment2_cn.1CF10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CF20[] = {\n#include \"textures/segment2/segment2_cn.1CF20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CF30[] = {\n#include \"textures/segment2/segment2_cn.1CF30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CF40[] = {\n#include \"textures/segment2/segment2_cn.1CF40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CF50[] = {\n#include \"textures/segment2/segment2_cn.1CF50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CF60[] = {\n#include \"textures/segment2/segment2_cn.1CF60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CF70[] = {\n#include \"textures/segment2/segment2_cn.1CF70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CF80[] = {\n#include \"textures/segment2/segment2_cn.1CF80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CF90[] = {\n#include \"textures/segment2/segment2_cn.1CF90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CFA0[] = {\n#include \"textures/segment2/segment2_cn.1CFA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CFB0[] = {\n#include \"textures/segment2/segment2_cn.1CFB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CFC0[] = {\n#include \"textures/segment2/segment2_cn.1CFC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CFD0[] = {\n#include \"textures/segment2/segment2_cn.1CFD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CFE0[] = {\n#include \"textures/segment2/segment2_cn.1CFE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1CFF0[] = {\n#include \"textures/segment2/segment2_cn.1CFF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D000[] = {\n#include \"textures/segment2/segment2_cn.1D000.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D010[] = {\n#include \"textures/segment2/segment2_cn.1D010.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D020[] = {\n#include \"textures/segment2/segment2_cn.1D020.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D030[] = {\n#include \"textures/segment2/segment2_cn.1D030.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D040[] = {\n#include \"textures/segment2/segment2_cn.1D040.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D050[] = {\n#include \"textures/segment2/segment2_cn.1D050.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D060[] = {\n#include \"textures/segment2/segment2_cn.1D060.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D070[] = {\n#include \"textures/segment2/segment2_cn.1D070.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D080[] = {\n#include \"textures/segment2/segment2_cn.1D080.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D090[] = {\n#include \"textures/segment2/segment2_cn.1D090.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D0A0[] = {\n#include \"textures/segment2/segment2_cn.1D0A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D0B0[] = {\n#include \"textures/segment2/segment2_cn.1D0B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D0C0[] = {\n#include \"textures/segment2/segment2_cn.1D0C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D0D0[] = {\n#include \"textures/segment2/segment2_cn.1D0D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D0E0[] = {\n#include \"textures/segment2/segment2_cn.1D0E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D0F0[] = {\n#include \"textures/segment2/segment2_cn.1D0F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D100[] = {\n#include \"textures/segment2/segment2_cn.1D100.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D110[] = {\n#include \"textures/segment2/segment2_cn.1D110.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D120[] = {\n#include \"textures/segment2/segment2_cn.1D120.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D130[] = {\n#include \"textures/segment2/segment2_cn.1D130.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D140[] = {\n#include \"textures/segment2/segment2_cn.1D140.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D150[] = {\n#include \"textures/segment2/segment2_cn.1D150.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D160[] = {\n#include \"textures/segment2/segment2_cn.1D160.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D170[] = {\n#include \"textures/segment2/segment2_cn.1D170.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D180[] = {\n#include \"textures/segment2/segment2_cn.1D180.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D190[] = {\n#include \"textures/segment2/segment2_cn.1D190.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D1A0[] = {\n#include \"textures/segment2/segment2_cn.1D1A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D1B0[] = {\n#include \"textures/segment2/segment2_cn.1D1B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D1C0[] = {\n#include \"textures/segment2/segment2_cn.1D1C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D1D0[] = {\n#include \"textures/segment2/segment2_cn.1D1D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D1E0[] = {\n#include \"textures/segment2/segment2_cn.1D1E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D1F0[] = {\n#include \"textures/segment2/segment2_cn.1D1F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D200[] = {\n#include \"textures/segment2/segment2_cn.1D200.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D210[] = {\n#include \"textures/segment2/segment2_cn.1D210.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D220[] = {\n#include \"textures/segment2/segment2_cn.1D220.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D230[] = {\n#include \"textures/segment2/segment2_cn.1D230.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D240[] = {\n#include \"textures/segment2/segment2_cn.1D240.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D250[] = {\n#include \"textures/segment2/segment2_cn.1D250.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D260[] = {\n#include \"textures/segment2/segment2_cn.1D260.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D270[] = {\n#include \"textures/segment2/segment2_cn.1D270.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D280[] = {\n#include \"textures/segment2/segment2_cn.1D280.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D290[] = {\n#include \"textures/segment2/segment2_cn.1D290.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D2A0[] = {\n#include \"textures/segment2/segment2_cn.1D2A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D2B0[] = {\n#include \"textures/segment2/segment2_cn.1D2B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D2C0[] = {\n#include \"textures/segment2/segment2_cn.1D2C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D2D0[] = {\n#include \"textures/segment2/segment2_cn.1D2D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D2E0[] = {\n#include \"textures/segment2/segment2_cn.1D2E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D2F0[] = {\n#include \"textures/segment2/segment2_cn.1D2F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D300[] = {\n#include \"textures/segment2/segment2_cn.1D300.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D310[] = {\n#include \"textures/segment2/segment2_cn.1D310.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D320[] = {\n#include \"textures/segment2/segment2_cn.1D320.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D330[] = {\n#include \"textures/segment2/segment2_cn.1D330.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D340[] = {\n#include \"textures/segment2/segment2_cn.1D340.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D350[] = {\n#include \"textures/segment2/segment2_cn.1D350.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D360[] = {\n#include \"textures/segment2/segment2_cn.1D360.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D370[] = {\n#include \"textures/segment2/segment2_cn.1D370.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D380[] = {\n#include \"textures/segment2/segment2_cn.1D380.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D390[] = {\n#include \"textures/segment2/segment2_cn.1D390.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D3A0[] = {\n#include \"textures/segment2/segment2_cn.1D3A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D3B0[] = {\n#include \"textures/segment2/segment2_cn.1D3B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D3C0[] = {\n#include \"textures/segment2/segment2_cn.1D3C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D3D0[] = {\n#include \"textures/segment2/segment2_cn.1D3D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D3E0[] = {\n#include \"textures/segment2/segment2_cn.1D3E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D3F0[] = {\n#include \"textures/segment2/segment2_cn.1D3F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D400[] = {\n#include \"textures/segment2/segment2_cn.1D400.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D410[] = {\n#include \"textures/segment2/segment2_cn.1D410.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D420[] = {\n#include \"textures/segment2/segment2_cn.1D420.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D430[] = {\n#include \"textures/segment2/segment2_cn.1D430.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D440[] = {\n#include \"textures/segment2/segment2_cn.1D440.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D450[] = {\n#include \"textures/segment2/segment2_cn.1D450.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D460[] = {\n#include \"textures/segment2/segment2_cn.1D460.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D470[] = {\n#include \"textures/segment2/segment2_cn.1D470.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D480[] = {\n#include \"textures/segment2/segment2_cn.1D480.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D490[] = {\n#include \"textures/segment2/segment2_cn.1D490.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D4A0[] = {\n#include \"textures/segment2/segment2_cn.1D4A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D4B0[] = {\n#include \"textures/segment2/segment2_cn.1D4B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D4C0[] = {\n#include \"textures/segment2/segment2_cn.1D4C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D4D0[] = {\n#include \"textures/segment2/segment2_cn.1D4D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D4E0[] = {\n#include \"textures/segment2/segment2_cn.1D4E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D4F0[] = {\n#include \"textures/segment2/segment2_cn.1D4F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D500[] = {\n#include \"textures/segment2/segment2_cn.1D500.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D510[] = {\n#include \"textures/segment2/segment2_cn.1D510.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D520[] = {\n#include \"textures/segment2/segment2_cn.1D520.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D530[] = {\n#include \"textures/segment2/segment2_cn.1D530.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D540[] = {\n#include \"textures/segment2/segment2_cn.1D540.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D550[] = {\n#include \"textures/segment2/segment2_cn.1D550.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D560[] = {\n#include \"textures/segment2/segment2_cn.1D560.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D570[] = {\n#include \"textures/segment2/segment2_cn.1D570.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D580[] = {\n#include \"textures/segment2/segment2_cn.1D580.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D590[] = {\n#include \"textures/segment2/segment2_cn.1D590.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D5A0[] = {\n#include \"textures/segment2/segment2_cn.1D5A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D5B0[] = {\n#include \"textures/segment2/segment2_cn.1D5B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D5C0[] = {\n#include \"textures/segment2/segment2_cn.1D5C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D5D0[] = {\n#include \"textures/segment2/segment2_cn.1D5D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D5E0[] = {\n#include \"textures/segment2/segment2_cn.1D5E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D5F0[] = {\n#include \"textures/segment2/segment2_cn.1D5F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D600[] = {\n#include \"textures/segment2/segment2_cn.1D600.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D610[] = {\n#include \"textures/segment2/segment2_cn.1D610.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D620[] = {\n#include \"textures/segment2/segment2_cn.1D620.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D630[] = {\n#include \"textures/segment2/segment2_cn.1D630.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D640[] = {\n#include \"textures/segment2/segment2_cn.1D640.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D650[] = {\n#include \"textures/segment2/segment2_cn.1D650.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D660[] = {\n#include \"textures/segment2/segment2_cn.1D660.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D670[] = {\n#include \"textures/segment2/segment2_cn.1D670.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D680[] = {\n#include \"textures/segment2/segment2_cn.1D680.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D690[] = {\n#include \"textures/segment2/segment2_cn.1D690.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D6A0[] = {\n#include \"textures/segment2/segment2_cn.1D6A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D6B0[] = {\n#include \"textures/segment2/segment2_cn.1D6B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D6C0[] = {\n#include \"textures/segment2/segment2_cn.1D6C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D6D0[] = {\n#include \"textures/segment2/segment2_cn.1D6D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D6E0[] = {\n#include \"textures/segment2/segment2_cn.1D6E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D6F0[] = {\n#include \"textures/segment2/segment2_cn.1D6F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D700[] = {\n#include \"textures/segment2/segment2_cn.1D700.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D710[] = {\n#include \"textures/segment2/segment2_cn.1D710.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D720[] = {\n#include \"textures/segment2/segment2_cn.1D720.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D730[] = {\n#include \"textures/segment2/segment2_cn.1D730.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D740[] = {\n#include \"textures/segment2/segment2_cn.1D740.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D750[] = {\n#include \"textures/segment2/segment2_cn.1D750.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D760[] = {\n#include \"textures/segment2/segment2_cn.1D760.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D770[] = {\n#include \"textures/segment2/segment2_cn.1D770.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D780[] = {\n#include \"textures/segment2/segment2_cn.1D780.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D790[] = {\n#include \"textures/segment2/segment2_cn.1D790.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D7A0[] = {\n#include \"textures/segment2/segment2_cn.1D7A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D7B0[] = {\n#include \"textures/segment2/segment2_cn.1D7B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D7C0[] = {\n#include \"textures/segment2/segment2_cn.1D7C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D7D0[] = {\n#include \"textures/segment2/segment2_cn.1D7D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D7E0[] = {\n#include \"textures/segment2/segment2_cn.1D7E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D7F0[] = {\n#include \"textures/segment2/segment2_cn.1D7F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D800[] = {\n#include \"textures/segment2/segment2_cn.1D800.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D810[] = {\n#include \"textures/segment2/segment2_cn.1D810.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D820[] = {\n#include \"textures/segment2/segment2_cn.1D820.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D830[] = {\n#include \"textures/segment2/segment2_cn.1D830.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D840[] = {\n#include \"textures/segment2/segment2_cn.1D840.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D850[] = {\n#include \"textures/segment2/segment2_cn.1D850.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D860[] = {\n#include \"textures/segment2/segment2_cn.1D860.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D870[] = {\n#include \"textures/segment2/segment2_cn.1D870.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D880[] = {\n#include \"textures/segment2/segment2_cn.1D880.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D890[] = {\n#include \"textures/segment2/segment2_cn.1D890.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D8A0[] = {\n#include \"textures/segment2/segment2_cn.1D8A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D8B0[] = {\n#include \"textures/segment2/segment2_cn.1D8B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D8C0[] = {\n#include \"textures/segment2/segment2_cn.1D8C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D8D0[] = {\n#include \"textures/segment2/segment2_cn.1D8D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D8E0[] = {\n#include \"textures/segment2/segment2_cn.1D8E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D8F0[] = {\n#include \"textures/segment2/segment2_cn.1D8F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D900[] = {\n#include \"textures/segment2/segment2_cn.1D900.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D910[] = {\n#include \"textures/segment2/segment2_cn.1D910.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D920[] = {\n#include \"textures/segment2/segment2_cn.1D920.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D930[] = {\n#include \"textures/segment2/segment2_cn.1D930.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D940[] = {\n#include \"textures/segment2/segment2_cn.1D940.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D950[] = {\n#include \"textures/segment2/segment2_cn.1D950.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D960[] = {\n#include \"textures/segment2/segment2_cn.1D960.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D970[] = {\n#include \"textures/segment2/segment2_cn.1D970.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D980[] = {\n#include \"textures/segment2/segment2_cn.1D980.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D990[] = {\n#include \"textures/segment2/segment2_cn.1D990.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D9A0[] = {\n#include \"textures/segment2/segment2_cn.1D9A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D9B0[] = {\n#include \"textures/segment2/segment2_cn.1D9B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D9C0[] = {\n#include \"textures/segment2/segment2_cn.1D9C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D9D0[] = {\n#include \"textures/segment2/segment2_cn.1D9D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D9E0[] = {\n#include \"textures/segment2/segment2_cn.1D9E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1D9F0[] = {\n#include \"textures/segment2/segment2_cn.1D9F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DA00[] = {\n#include \"textures/segment2/segment2_cn.1DA00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DA10[] = {\n#include \"textures/segment2/segment2_cn.1DA10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DA20[] = {\n#include \"textures/segment2/segment2_cn.1DA20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DA30[] = {\n#include \"textures/segment2/segment2_cn.1DA30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DA40[] = {\n#include \"textures/segment2/segment2_cn.1DA40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DA50[] = {\n#include \"textures/segment2/segment2_cn.1DA50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DA60[] = {\n#include \"textures/segment2/segment2_cn.1DA60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DA70[] = {\n#include \"textures/segment2/segment2_cn.1DA70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DA80[] = {\n#include \"textures/segment2/segment2_cn.1DA80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DA90[] = {\n#include \"textures/segment2/segment2_cn.1DA90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DAA0[] = {\n#include \"textures/segment2/segment2_cn.1DAA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DAB0[] = {\n#include \"textures/segment2/segment2_cn.1DAB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DAC0[] = {\n#include \"textures/segment2/segment2_cn.1DAC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DAD0[] = {\n#include \"textures/segment2/segment2_cn.1DAD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DAE0[] = {\n#include \"textures/segment2/segment2_cn.1DAE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DAF0[] = {\n#include \"textures/segment2/segment2_cn.1DAF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DB00[] = {\n#include \"textures/segment2/segment2_cn.1DB00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DB10[] = {\n#include \"textures/segment2/segment2_cn.1DB10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DB20[] = {\n#include \"textures/segment2/segment2_cn.1DB20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DB30[] = {\n#include \"textures/segment2/segment2_cn.1DB30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DB40[] = {\n#include \"textures/segment2/segment2_cn.1DB40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DB50[] = {\n#include \"textures/segment2/segment2_cn.1DB50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DB60[] = {\n#include \"textures/segment2/segment2_cn.1DB60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DB70[] = {\n#include \"textures/segment2/segment2_cn.1DB70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DB80[] = {\n#include \"textures/segment2/segment2_cn.1DB80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DB90[] = {\n#include \"textures/segment2/segment2_cn.1DB90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DBA0[] = {\n#include \"textures/segment2/segment2_cn.1DBA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DBB0[] = {\n#include \"textures/segment2/segment2_cn.1DBB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DBC0[] = {\n#include \"textures/segment2/segment2_cn.1DBC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DBD0[] = {\n#include \"textures/segment2/segment2_cn.1DBD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DBE0[] = {\n#include \"textures/segment2/segment2_cn.1DBE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DBF0[] = {\n#include \"textures/segment2/segment2_cn.1DBF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DC00[] = {\n#include \"textures/segment2/segment2_cn.1DC00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DC10[] = {\n#include \"textures/segment2/segment2_cn.1DC10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DC20[] = {\n#include \"textures/segment2/segment2_cn.1DC20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DC30[] = {\n#include \"textures/segment2/segment2_cn.1DC30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DC40[] = {\n#include \"textures/segment2/segment2_cn.1DC40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DC50[] = {\n#include \"textures/segment2/segment2_cn.1DC50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DC60[] = {\n#include \"textures/segment2/segment2_cn.1DC60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DC70[] = {\n#include \"textures/segment2/segment2_cn.1DC70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DC80[] = {\n#include \"textures/segment2/segment2_cn.1DC80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DC90[] = {\n#include \"textures/segment2/segment2_cn.1DC90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DCA0[] = {\n#include \"textures/segment2/segment2_cn.1DCA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DCB0[] = {\n#include \"textures/segment2/segment2_cn.1DCB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DCC0[] = {\n#include \"textures/segment2/segment2_cn.1DCC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DCD0[] = {\n#include \"textures/segment2/segment2_cn.1DCD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DCE0[] = {\n#include \"textures/segment2/segment2_cn.1DCE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DCF0[] = {\n#include \"textures/segment2/segment2_cn.1DCF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DD00[] = {\n#include \"textures/segment2/segment2_cn.1DD00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DD10[] = {\n#include \"textures/segment2/segment2_cn.1DD10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DD20[] = {\n#include \"textures/segment2/segment2_cn.1DD20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DD30[] = {\n#include \"textures/segment2/segment2_cn.1DD30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DD40[] = {\n#include \"textures/segment2/segment2_cn.1DD40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DD50[] = {\n#include \"textures/segment2/segment2_cn.1DD50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DD60[] = {\n#include \"textures/segment2/segment2_cn.1DD60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DD70[] = {\n#include \"textures/segment2/segment2_cn.1DD70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DD80[] = {\n#include \"textures/segment2/segment2_cn.1DD80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DD90[] = {\n#include \"textures/segment2/segment2_cn.1DD90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DDA0[] = {\n#include \"textures/segment2/segment2_cn.1DDA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DDB0[] = {\n#include \"textures/segment2/segment2_cn.1DDB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DDC0[] = {\n#include \"textures/segment2/segment2_cn.1DDC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DDD0[] = {\n#include \"textures/segment2/segment2_cn.1DDD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DDE0[] = {\n#include \"textures/segment2/segment2_cn.1DDE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DDF0[] = {\n#include \"textures/segment2/segment2_cn.1DDF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DE00[] = {\n#include \"textures/segment2/segment2_cn.1DE00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DE10[] = {\n#include \"textures/segment2/segment2_cn.1DE10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DE20[] = {\n#include \"textures/segment2/segment2_cn.1DE20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DE30[] = {\n#include \"textures/segment2/segment2_cn.1DE30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DE40[] = {\n#include \"textures/segment2/segment2_cn.1DE40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DE50[] = {\n#include \"textures/segment2/segment2_cn.1DE50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DE60[] = {\n#include \"textures/segment2/segment2_cn.1DE60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DE70[] = {\n#include \"textures/segment2/segment2_cn.1DE70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DE80[] = {\n#include \"textures/segment2/segment2_cn.1DE80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DE90[] = {\n#include \"textures/segment2/segment2_cn.1DE90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DEA0[] = {\n#include \"textures/segment2/segment2_cn.1DEA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DEB0[] = {\n#include \"textures/segment2/segment2_cn.1DEB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DEC0[] = {\n#include \"textures/segment2/segment2_cn.1DEC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DED0[] = {\n#include \"textures/segment2/segment2_cn.1DED0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DEE0[] = {\n#include \"textures/segment2/segment2_cn.1DEE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DEF0[] = {\n#include \"textures/segment2/segment2_cn.1DEF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DF00[] = {\n#include \"textures/segment2/segment2_cn.1DF00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DF10[] = {\n#include \"textures/segment2/segment2_cn.1DF10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DF20[] = {\n#include \"textures/segment2/segment2_cn.1DF20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DF30[] = {\n#include \"textures/segment2/segment2_cn.1DF30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DF40[] = {\n#include \"textures/segment2/segment2_cn.1DF40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DF50[] = {\n#include \"textures/segment2/segment2_cn.1DF50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DF60[] = {\n#include \"textures/segment2/segment2_cn.1DF60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DF70[] = {\n#include \"textures/segment2/segment2_cn.1DF70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DF80[] = {\n#include \"textures/segment2/segment2_cn.1DF80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DF90[] = {\n#include \"textures/segment2/segment2_cn.1DF90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DFA0[] = {\n#include \"textures/segment2/segment2_cn.1DFA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DFB0[] = {\n#include \"textures/segment2/segment2_cn.1DFB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DFC0[] = {\n#include \"textures/segment2/segment2_cn.1DFC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DFD0[] = {\n#include \"textures/segment2/segment2_cn.1DFD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DFE0[] = {\n#include \"textures/segment2/segment2_cn.1DFE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1DFF0[] = {\n#include \"textures/segment2/segment2_cn.1DFF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E000[] = {\n#include \"textures/segment2/segment2_cn.1E000.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E010[] = {\n#include \"textures/segment2/segment2_cn.1E010.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E020[] = {\n#include \"textures/segment2/segment2_cn.1E020.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E030[] = {\n#include \"textures/segment2/segment2_cn.1E030.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E040[] = {\n#include \"textures/segment2/segment2_cn.1E040.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E050[] = {\n#include \"textures/segment2/segment2_cn.1E050.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E060[] = {\n#include \"textures/segment2/segment2_cn.1E060.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E070[] = {\n#include \"textures/segment2/segment2_cn.1E070.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E080[] = {\n#include \"textures/segment2/segment2_cn.1E080.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E090[] = {\n#include \"textures/segment2/segment2_cn.1E090.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E0A0[] = {\n#include \"textures/segment2/segment2_cn.1E0A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E0B0[] = {\n#include \"textures/segment2/segment2_cn.1E0B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E0C0[] = {\n#include \"textures/segment2/segment2_cn.1E0C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E0D0[] = {\n#include \"textures/segment2/segment2_cn.1E0D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E0E0[] = {\n#include \"textures/segment2/segment2_cn.1E0E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E0F0[] = {\n#include \"textures/segment2/segment2_cn.1E0F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E100[] = {\n#include \"textures/segment2/segment2_cn.1E100.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E110[] = {\n#include \"textures/segment2/segment2_cn.1E110.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E120[] = {\n#include \"textures/segment2/segment2_cn.1E120.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E130[] = {\n#include \"textures/segment2/segment2_cn.1E130.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E140[] = {\n#include \"textures/segment2/segment2_cn.1E140.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E150[] = {\n#include \"textures/segment2/segment2_cn.1E150.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E160[] = {\n#include \"textures/segment2/segment2_cn.1E160.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E170[] = {\n#include \"textures/segment2/segment2_cn.1E170.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E180[] = {\n#include \"textures/segment2/segment2_cn.1E180.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E190[] = {\n#include \"textures/segment2/segment2_cn.1E190.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E1A0[] = {\n#include \"textures/segment2/segment2_cn.1E1A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E1B0[] = {\n#include \"textures/segment2/segment2_cn.1E1B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E1C0[] = {\n#include \"textures/segment2/segment2_cn.1E1C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E1D0[] = {\n#include \"textures/segment2/segment2_cn.1E1D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E1E0[] = {\n#include \"textures/segment2/segment2_cn.1E1E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E1F0[] = {\n#include \"textures/segment2/segment2_cn.1E1F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E200[] = {\n#include \"textures/segment2/segment2_cn.1E200.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E210[] = {\n#include \"textures/segment2/segment2_cn.1E210.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E220[] = {\n#include \"textures/segment2/segment2_cn.1E220.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E230[] = {\n#include \"textures/segment2/segment2_cn.1E230.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E240[] = {\n#include \"textures/segment2/segment2_cn.1E240.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E250[] = {\n#include \"textures/segment2/segment2_cn.1E250.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E260[] = {\n#include \"textures/segment2/segment2_cn.1E260.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E270[] = {\n#include \"textures/segment2/segment2_cn.1E270.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E280[] = {\n#include \"textures/segment2/segment2_cn.1E280.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E290[] = {\n#include \"textures/segment2/segment2_cn.1E290.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E2A0[] = {\n#include \"textures/segment2/segment2_cn.1E2A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E2B0[] = {\n#include \"textures/segment2/segment2_cn.1E2B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E2C0[] = {\n#include \"textures/segment2/segment2_cn.1E2C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E2D0[] = {\n#include \"textures/segment2/segment2_cn.1E2D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E2E0[] = {\n#include \"textures/segment2/segment2_cn.1E2E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E2F0[] = {\n#include \"textures/segment2/segment2_cn.1E2F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E300[] = {\n#include \"textures/segment2/segment2_cn.1E300.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E310[] = {\n#include \"textures/segment2/segment2_cn.1E310.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E320[] = {\n#include \"textures/segment2/segment2_cn.1E320.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E330[] = {\n#include \"textures/segment2/segment2_cn.1E330.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E340[] = {\n#include \"textures/segment2/segment2_cn.1E340.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E350[] = {\n#include \"textures/segment2/segment2_cn.1E350.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E360[] = {\n#include \"textures/segment2/segment2_cn.1E360.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E370[] = {\n#include \"textures/segment2/segment2_cn.1E370.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E380[] = {\n#include \"textures/segment2/segment2_cn.1E380.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E390[] = {\n#include \"textures/segment2/segment2_cn.1E390.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E3A0[] = {\n#include \"textures/segment2/segment2_cn.1E3A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E3B0[] = {\n#include \"textures/segment2/segment2_cn.1E3B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E3C0[] = {\n#include \"textures/segment2/segment2_cn.1E3C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E3D0[] = {\n#include \"textures/segment2/segment2_cn.1E3D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E3E0[] = {\n#include \"textures/segment2/segment2_cn.1E3E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E3F0[] = {\n#include \"textures/segment2/segment2_cn.1E3F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E400[] = {\n#include \"textures/segment2/segment2_cn.1E400.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E410[] = {\n#include \"textures/segment2/segment2_cn.1E410.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E420[] = {\n#include \"textures/segment2/segment2_cn.1E420.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E430[] = {\n#include \"textures/segment2/segment2_cn.1E430.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E440[] = {\n#include \"textures/segment2/segment2_cn.1E440.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E450[] = {\n#include \"textures/segment2/segment2_cn.1E450.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E460[] = {\n#include \"textures/segment2/segment2_cn.1E460.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E470[] = {\n#include \"textures/segment2/segment2_cn.1E470.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E480[] = {\n#include \"textures/segment2/segment2_cn.1E480.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E490[] = {\n#include \"textures/segment2/segment2_cn.1E490.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E4A0[] = {\n#include \"textures/segment2/segment2_cn.1E4A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E4B0[] = {\n#include \"textures/segment2/segment2_cn.1E4B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E4C0[] = {\n#include \"textures/segment2/segment2_cn.1E4C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E4D0[] = {\n#include \"textures/segment2/segment2_cn.1E4D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E4E0[] = {\n#include \"textures/segment2/segment2_cn.1E4E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E4F0[] = {\n#include \"textures/segment2/segment2_cn.1E4F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E500[] = {\n#include \"textures/segment2/segment2_cn.1E500.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E510[] = {\n#include \"textures/segment2/segment2_cn.1E510.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E520[] = {\n#include \"textures/segment2/segment2_cn.1E520.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E530[] = {\n#include \"textures/segment2/segment2_cn.1E530.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E540[] = {\n#include \"textures/segment2/segment2_cn.1E540.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E550[] = {\n#include \"textures/segment2/segment2_cn.1E550.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E560[] = {\n#include \"textures/segment2/segment2_cn.1E560.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E570[] = {\n#include \"textures/segment2/segment2_cn.1E570.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E580[] = {\n#include \"textures/segment2/segment2_cn.1E580.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E590[] = {\n#include \"textures/segment2/segment2_cn.1E590.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E5A0[] = {\n#include \"textures/segment2/segment2_cn.1E5A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E5B0[] = {\n#include \"textures/segment2/segment2_cn.1E5B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E5C0[] = {\n#include \"textures/segment2/segment2_cn.1E5C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E5D0[] = {\n#include \"textures/segment2/segment2_cn.1E5D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E5E0[] = {\n#include \"textures/segment2/segment2_cn.1E5E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E5F0[] = {\n#include \"textures/segment2/segment2_cn.1E5F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E600[] = {\n#include \"textures/segment2/segment2_cn.1E600.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E610[] = {\n#include \"textures/segment2/segment2_cn.1E610.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E620[] = {\n#include \"textures/segment2/segment2_cn.1E620.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E630[] = {\n#include \"textures/segment2/segment2_cn.1E630.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E640[] = {\n#include \"textures/segment2/segment2_cn.1E640.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E650[] = {\n#include \"textures/segment2/segment2_cn.1E650.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E660[] = {\n#include \"textures/segment2/segment2_cn.1E660.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E670[] = {\n#include \"textures/segment2/segment2_cn.1E670.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E680[] = {\n#include \"textures/segment2/segment2_cn.1E680.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E690[] = {\n#include \"textures/segment2/segment2_cn.1E690.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E6A0[] = {\n#include \"textures/segment2/segment2_cn.1E6A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E6B0[] = {\n#include \"textures/segment2/segment2_cn.1E6B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E6C0[] = {\n#include \"textures/segment2/segment2_cn.1E6C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E6D0[] = {\n#include \"textures/segment2/segment2_cn.1E6D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E6E0[] = {\n#include \"textures/segment2/segment2_cn.1E6E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E6F0[] = {\n#include \"textures/segment2/segment2_cn.1E6F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E700[] = {\n#include \"textures/segment2/segment2_cn.1E700.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E710[] = {\n#include \"textures/segment2/segment2_cn.1E710.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E720[] = {\n#include \"textures/segment2/segment2_cn.1E720.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E730[] = {\n#include \"textures/segment2/segment2_cn.1E730.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E740[] = {\n#include \"textures/segment2/segment2_cn.1E740.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E750[] = {\n#include \"textures/segment2/segment2_cn.1E750.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E760[] = {\n#include \"textures/segment2/segment2_cn.1E760.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E770[] = {\n#include \"textures/segment2/segment2_cn.1E770.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E780[] = {\n#include \"textures/segment2/segment2_cn.1E780.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E790[] = {\n#include \"textures/segment2/segment2_cn.1E790.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E7A0[] = {\n#include \"textures/segment2/segment2_cn.1E7A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E7B0[] = {\n#include \"textures/segment2/segment2_cn.1E7B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E7C0[] = {\n#include \"textures/segment2/segment2_cn.1E7C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E7D0[] = {\n#include \"textures/segment2/segment2_cn.1E7D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E7E0[] = {\n#include \"textures/segment2/segment2_cn.1E7E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E7F0[] = {\n#include \"textures/segment2/segment2_cn.1E7F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E800[] = {\n#include \"textures/segment2/segment2_cn.1E800.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E810[] = {\n#include \"textures/segment2/segment2_cn.1E810.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E820[] = {\n#include \"textures/segment2/segment2_cn.1E820.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E830[] = {\n#include \"textures/segment2/segment2_cn.1E830.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E840[] = {\n#include \"textures/segment2/segment2_cn.1E840.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E850[] = {\n#include \"textures/segment2/segment2_cn.1E850.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E860[] = {\n#include \"textures/segment2/segment2_cn.1E860.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E870[] = {\n#include \"textures/segment2/segment2_cn.1E870.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E880[] = {\n#include \"textures/segment2/segment2_cn.1E880.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E890[] = {\n#include \"textures/segment2/segment2_cn.1E890.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E8A0[] = {\n#include \"textures/segment2/segment2_cn.1E8A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E8B0[] = {\n#include \"textures/segment2/segment2_cn.1E8B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E8C0[] = {\n#include \"textures/segment2/segment2_cn.1E8C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E8D0[] = {\n#include \"textures/segment2/segment2_cn.1E8D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E8E0[] = {\n#include \"textures/segment2/segment2_cn.1E8E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E8F0[] = {\n#include \"textures/segment2/segment2_cn.1E8F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E900[] = {\n#include \"textures/segment2/segment2_cn.1E900.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E910[] = {\n#include \"textures/segment2/segment2_cn.1E910.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E920[] = {\n#include \"textures/segment2/segment2_cn.1E920.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E930[] = {\n#include \"textures/segment2/segment2_cn.1E930.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E940[] = {\n#include \"textures/segment2/segment2_cn.1E940.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E950[] = {\n#include \"textures/segment2/segment2_cn.1E950.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E960[] = {\n#include \"textures/segment2/segment2_cn.1E960.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E970[] = {\n#include \"textures/segment2/segment2_cn.1E970.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E980[] = {\n#include \"textures/segment2/segment2_cn.1E980.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E990[] = {\n#include \"textures/segment2/segment2_cn.1E990.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E9A0[] = {\n#include \"textures/segment2/segment2_cn.1E9A0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E9B0[] = {\n#include \"textures/segment2/segment2_cn.1E9B0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E9C0[] = {\n#include \"textures/segment2/segment2_cn.1E9C0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E9D0[] = {\n#include \"textures/segment2/segment2_cn.1E9D0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E9E0[] = {\n#include \"textures/segment2/segment2_cn.1E9E0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1E9F0[] = {\n#include \"textures/segment2/segment2_cn.1E9F0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EA00[] = {\n#include \"textures/segment2/segment2_cn.1EA00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EA10[] = {\n#include \"textures/segment2/segment2_cn.1EA10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EA20[] = {\n#include \"textures/segment2/segment2_cn.1EA20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EA30[] = {\n#include \"textures/segment2/segment2_cn.1EA30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EA40[] = {\n#include \"textures/segment2/segment2_cn.1EA40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EA50[] = {\n#include \"textures/segment2/segment2_cn.1EA50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EA60[] = {\n#include \"textures/segment2/segment2_cn.1EA60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EA70[] = {\n#include \"textures/segment2/segment2_cn.1EA70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EA80[] = {\n#include \"textures/segment2/segment2_cn.1EA80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EA90[] = {\n#include \"textures/segment2/segment2_cn.1EA90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EAA0[] = {\n#include \"textures/segment2/segment2_cn.1EAA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EAB0[] = {\n#include \"textures/segment2/segment2_cn.1EAB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EAC0[] = {\n#include \"textures/segment2/segment2_cn.1EAC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EAD0[] = {\n#include \"textures/segment2/segment2_cn.1EAD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EAE0[] = {\n#include \"textures/segment2/segment2_cn.1EAE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EAF0[] = {\n#include \"textures/segment2/segment2_cn.1EAF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EB00[] = {\n#include \"textures/segment2/segment2_cn.1EB00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EB10[] = {\n#include \"textures/segment2/segment2_cn.1EB10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EB20[] = {\n#include \"textures/segment2/segment2_cn.1EB20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EB30[] = {\n#include \"textures/segment2/segment2_cn.1EB30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EB40[] = {\n#include \"textures/segment2/segment2_cn.1EB40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EB50[] = {\n#include \"textures/segment2/segment2_cn.1EB50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EB60[] = {\n#include \"textures/segment2/segment2_cn.1EB60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EB70[] = {\n#include \"textures/segment2/segment2_cn.1EB70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EB80[] = {\n#include \"textures/segment2/segment2_cn.1EB80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EB90[] = {\n#include \"textures/segment2/segment2_cn.1EB90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EBA0[] = {\n#include \"textures/segment2/segment2_cn.1EBA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EBB0[] = {\n#include \"textures/segment2/segment2_cn.1EBB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EBC0[] = {\n#include \"textures/segment2/segment2_cn.1EBC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EBD0[] = {\n#include \"textures/segment2/segment2_cn.1EBD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EBE0[] = {\n#include \"textures/segment2/segment2_cn.1EBE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EBF0[] = {\n#include \"textures/segment2/segment2_cn.1EBF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EC00[] = {\n#include \"textures/segment2/segment2_cn.1EC00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EC10[] = {\n#include \"textures/segment2/segment2_cn.1EC10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EC20[] = {\n#include \"textures/segment2/segment2_cn.1EC20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EC30[] = {\n#include \"textures/segment2/segment2_cn.1EC30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EC40[] = {\n#include \"textures/segment2/segment2_cn.1EC40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EC50[] = {\n#include \"textures/segment2/segment2_cn.1EC50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EC60[] = {\n#include \"textures/segment2/segment2_cn.1EC60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EC70[] = {\n#include \"textures/segment2/segment2_cn.1EC70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EC80[] = {\n#include \"textures/segment2/segment2_cn.1EC80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EC90[] = {\n#include \"textures/segment2/segment2_cn.1EC90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1ECA0[] = {\n#include \"textures/segment2/segment2_cn.1ECA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1ECB0[] = {\n#include \"textures/segment2/segment2_cn.1ECB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1ECC0[] = {\n#include \"textures/segment2/segment2_cn.1ECC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1ECD0[] = {\n#include \"textures/segment2/segment2_cn.1ECD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1ECE0[] = {\n#include \"textures/segment2/segment2_cn.1ECE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1ECF0[] = {\n#include \"textures/segment2/segment2_cn.1ECF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1ED00[] = {\n#include \"textures/segment2/segment2_cn.1ED00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1ED10[] = {\n#include \"textures/segment2/segment2_cn.1ED10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1ED20[] = {\n#include \"textures/segment2/segment2_cn.1ED20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1ED30[] = {\n#include \"textures/segment2/segment2_cn.1ED30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1ED40[] = {\n#include \"textures/segment2/segment2_cn.1ED40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1ED50[] = {\n#include \"textures/segment2/segment2_cn.1ED50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1ED60[] = {\n#include \"textures/segment2/segment2_cn.1ED60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1ED70[] = {\n#include \"textures/segment2/segment2_cn.1ED70.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1ED80[] = {\n#include \"textures/segment2/segment2_cn.1ED80.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1ED90[] = {\n#include \"textures/segment2/segment2_cn.1ED90.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EDA0[] = {\n#include \"textures/segment2/segment2_cn.1EDA0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EDB0[] = {\n#include \"textures/segment2/segment2_cn.1EDB0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EDC0[] = {\n#include \"textures/segment2/segment2_cn.1EDC0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EDD0[] = {\n#include \"textures/segment2/segment2_cn.1EDD0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EDE0[] = {\n#include \"textures/segment2/segment2_cn.1EDE0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EDF0[] = {\n#include \"textures/segment2/segment2_cn.1EDF0.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EE00[] = {\n#include \"textures/segment2/segment2_cn.1EE00.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EE10[] = {\n#include \"textures/segment2/segment2_cn.1EE10.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EE20[] = {\n#include \"textures/segment2/segment2_cn.1EE20.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EE30[] = {\n#include \"textures/segment2/segment2_cn.1EE30.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EE40[] = {\n#include \"textures/segment2/segment2_cn.1EE40.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EE50[] = {\n#include \"textures/segment2/segment2_cn.1EE50.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EE60[] = {\n#include \"textures/segment2/segment2_cn.1EE60.ia1.inc.c\"\n};\n\nALIGNED8 static const Texture texture_font_char_cn_1EE70[] = {\n#include \"textures/segment2/segment2_cn.1EE70.ia1.inc.c\"\n};\n#endif // VERSION_CN\n\nALIGNED8 static const Texture texture_hud_char_camera[] = {\n#include \"textures/segment2/segment2.07B50.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_lakitu[] = {\n#include \"textures/segment2/segment2.07D50.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_no_camera[] = {\n#include \"textures/segment2/segment2.07F50.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_arrow_up[] = {\n#include \"textures/segment2/segment2.08150.rgba16.inc.c\"\n};\n\nALIGNED8 static const Texture texture_hud_char_arrow_down[] = {\n#include \"textures/segment2/segment2.081D0.rgba16.inc.c\"\n};\n\n// Main HUD print table 0x02008250-0x02008337\nconst Texture *const main_hud_lut[] = {\n    texture_hud_char_0, texture_hud_char_1, texture_hud_char_2, texture_hud_char_3,\n    texture_hud_char_4, texture_hud_char_5, texture_hud_char_6, texture_hud_char_7,\n    texture_hud_char_8, texture_hud_char_9, texture_hud_char_A, texture_hud_char_B,\n    texture_hud_char_C, texture_hud_char_D, texture_hud_char_E, texture_hud_char_F,\n#if defined(VERSION_EU)\n    texture_hud_char_G, texture_hud_char_H, texture_hud_char_I,                0x0,\n    texture_hud_char_K, texture_hud_char_L, texture_hud_char_M, texture_hud_char_N,\n    texture_hud_char_O, texture_hud_char_P,                0x0, texture_hud_char_R,\n    texture_hud_char_S, texture_hud_char_T, texture_hud_char_U, texture_hud_char_V,\n    texture_hud_char_W,                0x0, texture_hud_char_Y, texture_hud_char_Z,\n                   0x0,                0x0,                0x0,                0x0,\n                   0x0,                0x0,                0x0,                0x0,\n                   0x0,                0x0,                0x0,                0x0,\n                   0x0,                0x0, texture_hud_char_multiply, texture_hud_char_coin,\n    texture_hud_char_mario_head, texture_hud_char_star,    0x0,                0x0,\n    texture_hud_char_apostrophe, texture_hud_char_double_quote, texture_hud_char_umlaut,\n#elif defined(VERSION_CN) || defined(VERSION_US)\n    texture_hud_char_G, texture_hud_char_H, texture_hud_char_I,                0x0,\n    texture_hud_char_K, texture_hud_char_L, texture_hud_char_M, texture_hud_char_N,\n    texture_hud_char_O, texture_hud_char_P,                0x0, texture_hud_char_R,\n    texture_hud_char_S, texture_hud_char_T, texture_hud_char_U,                0x0,\n    texture_hud_char_W,                0x0, texture_hud_char_Y,                0x0,\n                  0x0,                 0x0,                0x0,                0x0,\n                  0x0,                 0x0,                0x0,                0x0,\n                  0x0,                 0x0,                0x0,                0x0,\n                  0x0,                 0x0, texture_hud_char_multiply, texture_hud_char_coin,\n    texture_hud_char_mario_head, texture_hud_char_star,               0x0,               0x0,\n    texture_hud_char_apostrophe, texture_hud_char_double_quote,\n#if defined(VERSION_CN)\n    texture_hud_char_cn_04A00, texture_hud_char_cn_04C00, texture_hud_char_cn_04E00, texture_hud_char_cn_05000,\n    texture_hud_char_cn_05200, texture_hud_char_cn_05400, texture_hud_char_cn_05600, texture_hud_char_cn_05800,\n    texture_hud_char_cn_05A00, texture_hud_char_cn_05C00, texture_hud_char_cn_05E00, texture_hud_char_cn_06000,\n    texture_hud_char_cn_06200, texture_hud_char_cn_06400, texture_hud_char_cn_06600, texture_hud_char_cn_06800,\n    texture_hud_char_cn_06A00, texture_hud_char_cn_06C00, texture_hud_char_cn_06E00, texture_hud_char_cn_07000,\n    texture_hud_char_cn_07200, texture_hud_char_cn_07400, texture_hud_char_cn_07600, texture_hud_char_cn_07800,\n    texture_hud_char_cn_07A00, texture_hud_char_cn_07C00, texture_hud_char_cn_07E00, texture_hud_char_cn_08000,\n    texture_hud_char_cn_08200, texture_hud_char_cn_08400, texture_hud_char_cn_08600, texture_hud_char_cn_08800,\n    texture_hud_char_cn_08A00, texture_hud_char_cn_08C00, texture_hud_char_cn_08E00, texture_hud_char_cn_09000,\n    texture_hud_char_cn_09200, texture_hud_char_cn_09400, texture_hud_char_cn_09600, texture_hud_char_cn_09800,\n    texture_hud_char_cn_09A00, texture_hud_char_cn_09C00, texture_hud_char_cn_09E00, texture_hud_char_cn_0A000,\n    texture_hud_char_cn_0A200, texture_hud_char_cn_0A400, texture_hud_char_cn_0A600, texture_hud_char_cn_0A800,\n    texture_hud_char_cn_0AA00, texture_hud_char_cn_0AC00, texture_hud_char_cn_0AE00, texture_hud_char_cn_0B000,\n    texture_hud_char_cn_0B200, texture_hud_char_cn_0B400, texture_hud_char_cn_0B600, texture_hud_char_cn_0B800,\n    texture_hud_char_cn_0BA00, texture_hud_char_cn_0BC00, texture_hud_char_cn_0BE00, texture_hud_char_cn_0C000,\n    texture_hud_char_cn_0C200, texture_hud_char_cn_0C400, texture_hud_char_cn_0C600, texture_hud_char_cn_0C800,\n    texture_hud_char_cn_0CA00, texture_hud_char_cn_0CC00, texture_hud_char_cn_0CE00, texture_hud_char_cn_0D000,\n    texture_hud_char_cn_0D200, texture_hud_char_cn_0D400, texture_hud_char_cn_0D600, texture_hud_char_cn_0D800,\n    texture_hud_char_cn_0DA00, texture_hud_char_cn_0DC00, texture_hud_char_cn_0DE00, texture_hud_char_cn_0E000,\n    texture_hud_char_cn_0E200, texture_hud_char_cn_0E400, texture_hud_char_cn_0E600, texture_hud_char_cn_0E800,\n    texture_hud_char_cn_0EA00, texture_hud_char_cn_0EC00, texture_hud_char_cn_0EE00, texture_hud_char_cn_0F000,\n    texture_hud_char_cn_0F200, texture_hud_char_cn_0F400, texture_hud_char_cn_0F600, texture_hud_char_cn_0F800,\n    texture_hud_char_cn_0FA00, texture_hud_char_cn_0FC00, texture_hud_char_cn_0FE00, texture_hud_char_cn_10000,\n    texture_hud_char_cn_10200, texture_hud_char_cn_10400, texture_hud_char_cn_10600, texture_hud_char_cn_10800,\n    texture_hud_char_cn_10A00, texture_hud_char_cn_10C00, texture_hud_char_cn_10E00, texture_hud_char_cn_11000,\n    texture_hud_char_cn_11200, texture_hud_char_cn_11400, texture_hud_char_cn_11600, texture_hud_char_cn_11800,\n    texture_hud_char_cn_11A00, texture_hud_char_cn_11C00, texture_hud_char_cn_11E00, texture_hud_char_cn_12000,\n    texture_hud_char_cn_12200, texture_hud_char_cn_12400, texture_hud_char_cn_12600, texture_hud_char_cn_12800,\n    texture_hud_char_cn_12A00, texture_hud_char_cn_12C00, texture_hud_char_cn_12E00, texture_hud_char_cn_13000,\n    texture_hud_char_cn_13200, texture_hud_char_cn_13400, texture_hud_char_cn_13600, texture_hud_char_cn_13800,\n    texture_hud_char_cn_13A00, texture_hud_char_cn_13C00, texture_hud_char_cn_13E00, texture_hud_char_cn_14000,\n#endif // VERSION_CN\n#else\n    texture_hud_char_G, texture_hud_char_H, texture_hud_char_I, texture_hud_char_J,\n    texture_hud_char_K, texture_hud_char_L, texture_hud_char_M, texture_hud_char_N,\n    texture_hud_char_O, texture_hud_char_P, texture_hud_char_Q, texture_hud_char_R,\n    texture_hud_char_S, texture_hud_char_T, texture_hud_char_U, texture_hud_char_V,\n    texture_hud_char_W, texture_hud_char_X, texture_hud_char_Y, texture_hud_char_Z,\n    texture_hud_char_exclamation, texture_hud_char_double_exclamation, texture_hud_char_question, texture_hud_char_ampersand,\n    texture_hud_char_percent,                 0x0,                      0x0,                  0x0,\n                      0x0,                   0x0,                      0x0,                  0x0,\n                      0x0,                   0x0, texture_hud_char_multiply, texture_hud_char_coin,\n    texture_hud_char_mario_head, texture_hud_char_star, texture_hud_char_decimal_point, texture_hud_char_beta_key,\n    texture_hud_char_apostrophe, texture_hud_char_double_quote,\n#endif\n};\n\n// Main small font print table 0x02008338-0x02008737\nconst Texture *const main_font_lut[] = {\n#ifdef VERSION_EU // EU Font Table\n    texture_font_char_eu_0, texture_font_char_eu_1, texture_font_char_eu_2, texture_font_char_eu_3,\n    texture_font_char_eu_4, texture_font_char_eu_5, texture_font_char_eu_6, texture_font_char_eu_7,\n    texture_font_char_eu_8, texture_font_char_eu_9, texture_font_char_eu_A, texture_font_char_eu_B,\n    texture_font_char_eu_C, texture_font_char_eu_D, texture_font_char_eu_E, texture_font_char_eu_F,\n    texture_font_char_eu_G, texture_font_char_eu_H, texture_font_char_eu_I, texture_font_char_eu_J,\n    texture_font_char_eu_K, texture_font_char_eu_L, texture_font_char_eu_M, texture_font_char_eu_N,\n    texture_font_char_eu_O, texture_font_char_eu_P, texture_font_char_eu_Q, texture_font_char_eu_R,\n    texture_font_char_eu_S, texture_font_char_eu_T, texture_font_char_eu_U, texture_font_char_eu_V,\n    texture_font_char_eu_W, texture_font_char_eu_X, texture_font_char_eu_Y, texture_font_char_eu_Z,\n    texture_font_char_eu_a, texture_font_char_eu_b, texture_font_char_eu_c, texture_font_char_eu_d,\n    texture_font_char_eu_e, texture_font_char_eu_f, texture_font_char_eu_g, texture_font_char_eu_h,\n    texture_font_char_eu_i, texture_font_char_eu_j, texture_font_char_eu_k, texture_font_char_eu_l,\n    texture_font_char_eu_m, texture_font_char_eu_n, texture_font_char_eu_o, texture_font_char_eu_p,\n    texture_font_char_eu_q, texture_font_char_eu_r, texture_font_char_eu_s, texture_font_char_eu_t,\n    texture_font_char_eu_u, texture_font_char_eu_v, texture_font_char_eu_w, texture_font_char_eu_x,\n    texture_font_char_eu_y, texture_font_char_eu_z, texture_font_char_eu_apostrophe, texture_font_char_eu_period,\n    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n    texture_font_char_eu_button_C_up,\n    texture_font_char_eu_button_C_down,\n    texture_font_char_eu_button_C_left,\n    texture_font_char_eu_button_C_right,\n    texture_font_char_eu_button_A,\n    texture_font_char_eu_button_B,\n    texture_font_char_eu_button_C,\n    texture_font_char_eu_button_Z,\n    texture_font_char_eu_button_R,\n    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n    0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n    texture_font_char_eu_comma,\n    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n    texture_font_char_EU_slash,\n    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n    0x0,\n    texture_font_char_eu_open_parentheses,\n    texture_font_char_eu_close_open_parentheses,\n    texture_font_char_eu_close_parentheses,\n    texture_font_char_eu_left_right_arrow,\n    texture_font_char_eu_ampersand,\n    texture_font_char_eu_colon,\n    texture_font_char_eu_acute,\n    texture_font_char_eu_circumflex,\n    texture_font_char_eu_umlaut,\n    texture_font_char_eu_grave,\n    texture_font_char_eu_unknown,\n    texture_font_char_eu_eszeet,\n    texture_font_char_eu_Cedilla,\n    texture_font_char_eu_cedilla,\n    0x0, 0x0, 0x0,\n    texture_font_char_eu_exclamation,\n    texture_font_char_eu_percent,\n    texture_font_char_eu_question,\n    texture_font_char_eu_double_quote_open,\n    texture_font_char_eu_double_quote_close,\n    texture_font_char_eu_tilde,\n    0x0,\n    texture_font_char_eu_coin,\n    texture_font_char_eu_star_filled,\n    texture_font_char_eu_multiply,\n    texture_font_char_eu_interpunct,\n    texture_font_char_eu_star_hollow,\n    0x0, 0x0,\n#elif defined(VERSION_US) || defined(VERSION_CN) // US Font Table\n    texture_font_char_us_0, texture_font_char_us_1, texture_font_char_us_2, texture_font_char_us_3,\n    texture_font_char_us_4, texture_font_char_us_5, texture_font_char_us_6, texture_font_char_us_7,\n    texture_font_char_us_8, texture_font_char_us_9, texture_font_char_us_A, texture_font_char_us_B,\n    texture_font_char_us_C, texture_font_char_us_D, texture_font_char_us_E, texture_font_char_us_F,\n    texture_font_char_us_G, texture_font_char_us_H, texture_font_char_us_I, texture_font_char_us_J,\n    texture_font_char_us_K, texture_font_char_us_L, texture_font_char_us_M, texture_font_char_us_N,\n    texture_font_char_us_O, texture_font_char_us_P, texture_font_char_us_Q, texture_font_char_us_R,\n    texture_font_char_us_S, texture_font_char_us_T, texture_font_char_us_U, texture_font_char_us_V,\n    texture_font_char_us_W, texture_font_char_us_X, texture_font_char_us_Y, texture_font_char_us_Z,\n    texture_font_char_us_a, texture_font_char_us_b, texture_font_char_us_c, texture_font_char_us_d,\n    texture_font_char_us_e, texture_font_char_us_f, texture_font_char_us_g, texture_font_char_us_h,\n    texture_font_char_us_i, texture_font_char_us_j, texture_font_char_us_k, texture_font_char_us_l,\n    texture_font_char_us_m, texture_font_char_us_n, texture_font_char_us_o, texture_font_char_us_p,\n    texture_font_char_us_q, texture_font_char_us_r, texture_font_char_us_s, texture_font_char_us_t,\n    texture_font_char_us_u, texture_font_char_us_v, texture_font_char_us_w, texture_font_char_us_x,\n    texture_font_char_us_y, texture_font_char_us_z, texture_font_char_us_apostrophe, texture_font_char_us_period,\n#if defined(VERSION_CN)\n    texture_font_char_cn_16800, texture_font_char_cn_16840, 0x0,           0x0,\n#else\n                  0x0,               0x0,               0x0,               0x0,\n#endif\n                  0x0,               0x0,               0x0,               0x0,\n                  0x0,               0x0,               0x0,               0x0,\n                  0x0,               0x0,               0x0,               0x0,\n    texture_font_char_us_button_C_up, texture_font_char_us_button_C_down, texture_font_char_us_button_C_left, texture_font_char_us_button_C_right,\n    texture_font_char_us_button_A, texture_font_char_us_button_B, texture_font_char_us_button_C, texture_font_char_us_button_Z,\n    texture_font_char_us_button_R,               0x0,               0x0,               0x0,\n                  0x0,               0x0,               0x0,               0x0,\n                  0x0,               0x0,               0x0,               0x0,\n                  0x0,               0x0,               0x0,               0x0,\n                  0x0,               0x0,               0x0,               0x0,\n                  0x0,               0x0,               0x0, texture_font_char_us_comma,\n                  0x0,               0x0,               0x0,               0x0,\n                  0x0,               0x0,               0x0,               0x0,\n                  0x0,               0x0,               0x0,               0x0,\n                  0x0,               0x0,               0x0,               0x0,\n                  0x0,               0x0,               0x0,               0x0,\n                  0x0,               0x0,               0x0,               0x0,\n                  0x0,               0x0,               0x0,               0x0,\n                  0x0,               0x0,               0x0,               0x0,\n                  0x0,               0x0,               0x0,               0x0,\n                  0x0,               0x0,               0x0,               0x0,\n                  0x0,               0x0,               0x0,               0x0,\n                  0x0,               0x0,               0x0, texture_font_char_us_slash,\n                  0x0,               0x0,               0x0,               0x0,\n                  0x0,               0x0,               0x0,               0x0,\n                  0x0,               0x0,               0x0,               0x0,\n                  0x0,               0x0,               0x0,               0x0,\n                  0x0,               0x0,               0x0,               0x0,\n                  0x0,               0x0,               0x0,               0x0,\n                  0x0,               0x0,               0x0,               0x0,\n                  0x0,               0x0,               0x0,               0x0,\n                  0x0,               0x0,               0x0,               0x0,\n                  0x0,               0x0,               0x0,               0x0,\n                  0x0,               0x0,               0x0,               0x0,\n                  0x0,               0x0,               0x0,               0x0,\n                  0x0,               0x0,               0x0,               0x0,\n                  0x0,               0x0,               0x0,               0x0,\n                  0x0,               0x0,               0x0,               0x0,\n                  0x0,               0x0,               0x0,               0x0,\n                  0x0, texture_font_char_us_open_parentheses, texture_font_char_us_close_open_parentheses, texture_font_char_us_close_parentheses,\n    texture_font_char_us_left_right_arrow, texture_font_char_us_ampersand, texture_font_char_us_ellipsis,               0x0,\n                  0x0,               0x0,               0x0,               0x0,\n                  0x0,               0x0,               0x0,               0x0,\n                  0x0,               0x0, texture_font_char_us_exclamation, texture_font_char_us_percent,\n    texture_font_char_us_question, texture_font_char_us_double_quote_open, texture_font_char_us_double_quote_close, texture_font_char_us_tilde,\n                  0x0, texture_font_char_us_coin, texture_font_char_us_star_filled, texture_font_char_us_multiply,\n    texture_font_char_us_interpunct, texture_font_char_us_star_hollow,               0x0,               0x0,\n#if defined(VERSION_CN)\n    texture_font_char_cn_16880, texture_font_char_cn_16890, texture_font_char_cn_168A0, texture_font_char_cn_168B0,\n    texture_font_char_cn_168C0, texture_font_char_cn_168D0, texture_font_char_cn_168E0, texture_font_char_cn_168F0,\n    texture_font_char_cn_16900, texture_font_char_cn_16910, texture_font_char_cn_16920, texture_font_char_cn_16930,\n    texture_font_char_cn_16940, texture_font_char_cn_16950, texture_font_char_cn_16960, texture_font_char_cn_16970,\n    texture_font_char_cn_16980, texture_font_char_cn_16990, texture_font_char_cn_169A0, texture_font_char_cn_169B0,\n    texture_font_char_cn_169C0, texture_font_char_cn_169D0, texture_font_char_cn_169E0, texture_font_char_cn_169F0,\n    texture_font_char_cn_16A00, texture_font_char_cn_16A10, texture_font_char_cn_16A20, texture_font_char_cn_16A30,\n    texture_font_char_cn_16A40, texture_font_char_cn_16A50, texture_font_char_cn_16A60, texture_font_char_cn_16A70,\n    texture_font_char_cn_16A80, texture_font_char_cn_16A90, texture_font_char_cn_16AA0, texture_font_char_cn_16AB0,\n    texture_font_char_cn_16AC0, texture_font_char_cn_16AD0, texture_font_char_cn_16AE0, texture_font_char_cn_16AF0,\n    texture_font_char_cn_16B00, texture_font_char_cn_16B10, texture_font_char_cn_16B20, texture_font_char_cn_16B30,\n    texture_font_char_cn_16B40, texture_font_char_cn_16B50, texture_font_char_cn_16B60, texture_font_char_cn_16B70,\n    texture_font_char_cn_16B80, texture_font_char_cn_16B90, texture_font_char_cn_16BA0, texture_font_char_cn_16BB0,\n    texture_font_char_cn_16BC0, texture_font_char_cn_16BD0, texture_font_char_cn_16BE0, texture_font_char_cn_16BF0,\n    texture_font_char_cn_16C00, texture_font_char_cn_16C10, texture_font_char_cn_16C20, texture_font_char_cn_16C30,\n    texture_font_char_cn_16C40, texture_font_char_cn_16C50, texture_font_char_cn_16C60, texture_font_char_cn_16C70,\n    texture_font_char_cn_16C80, texture_font_char_cn_16C90, texture_font_char_cn_16CA0, texture_font_char_cn_16CB0,\n    texture_font_char_cn_16CC0, texture_font_char_cn_16CD0, texture_font_char_cn_16CE0, texture_font_char_cn_16CF0,\n    texture_font_char_cn_16D00, texture_font_char_cn_16D10, texture_font_char_cn_16D20, texture_font_char_cn_16D30,\n    texture_font_char_cn_16D40, texture_font_char_cn_16D50, texture_font_char_cn_16D60, texture_font_char_cn_16D70,\n    texture_font_char_cn_16D80, texture_font_char_cn_16D90, texture_font_char_cn_16DA0, texture_font_char_cn_16DB0,\n    texture_font_char_cn_16DC0, texture_font_char_cn_16DD0, texture_font_char_cn_16DE0, texture_font_char_cn_16DF0,\n    texture_font_char_cn_16E00, texture_font_char_cn_16E10, texture_font_char_cn_16E20, texture_font_char_cn_16E30,\n    texture_font_char_cn_16E40, texture_font_char_cn_16E50, texture_font_char_cn_16E60, texture_font_char_cn_16E70,\n    texture_font_char_cn_16E80, texture_font_char_cn_16E90, texture_font_char_cn_16EA0, texture_font_char_cn_16EB0,\n    texture_font_char_cn_16EC0, texture_font_char_cn_16ED0, texture_font_char_cn_16EE0, texture_font_char_cn_16EF0,\n    texture_font_char_cn_16F00, texture_font_char_cn_16F10, texture_font_char_cn_16F20, texture_font_char_cn_16F30,\n    texture_font_char_cn_16F40, texture_font_char_cn_16F50, texture_font_char_cn_16F60, texture_font_char_cn_16F70,\n    texture_font_char_cn_16F80, texture_font_char_cn_16F90, texture_font_char_cn_16FA0, texture_font_char_cn_16FB0,\n    texture_font_char_cn_16FC0, texture_font_char_cn_16FD0, texture_font_char_cn_16FE0, texture_font_char_cn_16FF0,\n    texture_font_char_cn_17000, texture_font_char_cn_17010, texture_font_char_cn_17020, texture_font_char_cn_17030,\n    texture_font_char_cn_17040, texture_font_char_cn_17050, texture_font_char_cn_17060, texture_font_char_cn_17070,\n    texture_font_char_cn_17080, texture_font_char_cn_17090, texture_font_char_cn_170A0, texture_font_char_cn_170B0,\n    texture_font_char_cn_170C0, texture_font_char_cn_170D0, texture_font_char_cn_170E0, texture_font_char_cn_170F0,\n    texture_font_char_cn_17100, texture_font_char_cn_17110, texture_font_char_cn_17120, texture_font_char_cn_17130,\n    texture_font_char_cn_17140, texture_font_char_cn_17150, texture_font_char_cn_17160, texture_font_char_cn_17170,\n    texture_font_char_cn_17180, texture_font_char_cn_17190, texture_font_char_cn_171A0, texture_font_char_cn_171B0,\n    texture_font_char_cn_171C0, texture_font_char_cn_171D0, texture_font_char_cn_171E0, texture_font_char_cn_171F0,\n    texture_font_char_cn_17200, texture_font_char_cn_17210, texture_font_char_cn_17220, texture_font_char_cn_17230,\n    texture_font_char_cn_17240, texture_font_char_cn_17250, texture_font_char_cn_17260, texture_font_char_cn_17270,\n    texture_font_char_cn_17280, texture_font_char_cn_17290, texture_font_char_cn_172A0, texture_font_char_cn_172B0,\n    texture_font_char_cn_172C0, texture_font_char_cn_172D0, texture_font_char_cn_172E0, texture_font_char_cn_172F0,\n    texture_font_char_cn_17300, texture_font_char_cn_17310, texture_font_char_cn_17320, texture_font_char_cn_17330,\n    texture_font_char_cn_17340, texture_font_char_cn_17350, texture_font_char_cn_17360, texture_font_char_cn_17370,\n    texture_font_char_cn_17380, texture_font_char_cn_17390, texture_font_char_cn_173A0, texture_font_char_cn_173B0,\n    texture_font_char_cn_173C0, texture_font_char_cn_173D0, texture_font_char_cn_173E0, texture_font_char_cn_173F0,\n    texture_font_char_cn_17400, texture_font_char_cn_17410, texture_font_char_cn_17420, texture_font_char_cn_17430,\n    texture_font_char_cn_17440, texture_font_char_cn_17450, texture_font_char_cn_17460, texture_font_char_cn_17470,\n    texture_font_char_cn_17480, texture_font_char_cn_17490, texture_font_char_cn_174A0, texture_font_char_cn_174B0,\n    texture_font_char_cn_174C0, texture_font_char_cn_174D0, texture_font_char_cn_174E0, texture_font_char_cn_174F0,\n    texture_font_char_cn_17500, texture_font_char_cn_17510, texture_font_char_cn_17520, texture_font_char_cn_17530,\n    texture_font_char_cn_17540, texture_font_char_cn_17550, texture_font_char_cn_17560, texture_font_char_cn_17570,\n    texture_font_char_cn_17580, texture_font_char_cn_17590, texture_font_char_cn_175A0, texture_font_char_cn_175B0,\n    texture_font_char_cn_175C0, texture_font_char_cn_175D0, texture_font_char_cn_175E0, texture_font_char_cn_175F0,\n    texture_font_char_cn_17600, texture_font_char_cn_17610, texture_font_char_cn_17620, texture_font_char_cn_17630,\n    texture_font_char_cn_17640, texture_font_char_cn_17650, texture_font_char_cn_17660, texture_font_char_cn_17670,\n    texture_font_char_cn_17680, texture_font_char_cn_17690, texture_font_char_cn_176A0, texture_font_char_cn_176B0,\n    texture_font_char_cn_176C0, texture_font_char_cn_176D0, texture_font_char_cn_176E0, texture_font_char_cn_176F0,\n    texture_font_char_cn_17700, texture_font_char_cn_17710, texture_font_char_cn_17720, texture_font_char_cn_17730,\n    texture_font_char_cn_17740, texture_font_char_cn_17750, texture_font_char_cn_17760, texture_font_char_cn_17770,\n    texture_font_char_cn_17780, texture_font_char_cn_17790, texture_font_char_cn_177A0, texture_font_char_cn_177B0,\n    texture_font_char_cn_177C0, texture_font_char_cn_177D0, texture_font_char_cn_177E0, texture_font_char_cn_177F0,\n    texture_font_char_cn_17800, texture_font_char_cn_17810, texture_font_char_cn_17820, texture_font_char_cn_17830,\n    texture_font_char_cn_17840, texture_font_char_cn_17850, texture_font_char_cn_17860, texture_font_char_cn_17870,\n    texture_font_char_cn_17880, texture_font_char_cn_17890, texture_font_char_cn_178A0, texture_font_char_cn_178B0,\n    texture_font_char_cn_178C0, texture_font_char_cn_178D0, texture_font_char_cn_178E0, texture_font_char_cn_178F0,\n    texture_font_char_cn_17900, texture_font_char_cn_17910, texture_font_char_cn_17920, texture_font_char_cn_17930,\n    texture_font_char_cn_17940, texture_font_char_cn_17950, texture_font_char_cn_17960, texture_font_char_cn_17970,\n    texture_font_char_cn_17980, texture_font_char_cn_17990, texture_font_char_cn_179A0, texture_font_char_cn_179B0,\n    texture_font_char_cn_179C0, texture_font_char_cn_179D0, texture_font_char_cn_179E0, texture_font_char_cn_179F0,\n    texture_font_char_cn_17A00, texture_font_char_cn_17A10, texture_font_char_cn_17A20, texture_font_char_cn_17A30,\n    texture_font_char_cn_17A40, texture_font_char_cn_17A50, texture_font_char_cn_17A60, texture_font_char_cn_17A70,\n    texture_font_char_cn_17A80, texture_font_char_cn_17A90, texture_font_char_cn_17AA0, texture_font_char_cn_17AB0,\n    texture_font_char_cn_17AC0, texture_font_char_cn_17AD0, texture_font_char_cn_17AE0, texture_font_char_cn_17AF0,\n    texture_font_char_cn_17B00, texture_font_char_cn_17B10, texture_font_char_cn_17B20, texture_font_char_cn_17B30,\n    texture_font_char_cn_17B40, texture_font_char_cn_17B50, texture_font_char_cn_17B60, texture_font_char_cn_17B70,\n    texture_font_char_cn_17B80, texture_font_char_cn_17B90, texture_font_char_cn_17BA0, texture_font_char_cn_17BB0,\n    texture_font_char_cn_17BC0, texture_font_char_cn_17BD0, texture_font_char_cn_17BE0, texture_font_char_cn_17BF0,\n    texture_font_char_cn_17C00, texture_font_char_cn_17C10, texture_font_char_cn_17C20, texture_font_char_cn_17C30,\n    texture_font_char_cn_17C40, texture_font_char_cn_17C50, texture_font_char_cn_17C60, texture_font_char_cn_17C70,\n    texture_font_char_cn_17C80, texture_font_char_cn_17C90, texture_font_char_cn_17CA0, texture_font_char_cn_17CB0,\n    texture_font_char_cn_17CC0, texture_font_char_cn_17CD0, texture_font_char_cn_17CE0, texture_font_char_cn_17CF0,\n    texture_font_char_cn_17D00, texture_font_char_cn_17D10, texture_font_char_cn_17D20, texture_font_char_cn_17D30,\n    texture_font_char_cn_17D40, texture_font_char_cn_17D50, texture_font_char_cn_17D60, texture_font_char_cn_17D70,\n    texture_font_char_cn_17D80, texture_font_char_cn_17D90, texture_font_char_cn_17DA0, texture_font_char_cn_17DB0,\n    texture_font_char_cn_17DC0, texture_font_char_cn_17DD0, texture_font_char_cn_17DE0, texture_font_char_cn_17DF0,\n    texture_font_char_cn_17E00, texture_font_char_cn_17E10, texture_font_char_cn_17E20, texture_font_char_cn_17E30,\n    texture_font_char_cn_17E40, texture_font_char_cn_17E50, texture_font_char_cn_17E60, texture_font_char_cn_17E70,\n    texture_font_char_cn_17E80, texture_font_char_cn_17E90, texture_font_char_cn_17EA0, texture_font_char_cn_17EB0,\n    texture_font_char_cn_17EC0, texture_font_char_cn_17ED0, texture_font_char_cn_17EE0, texture_font_char_cn_17EF0,\n    texture_font_char_cn_17F00, texture_font_char_cn_17F10, texture_font_char_cn_17F20, texture_font_char_cn_17F30,\n    texture_font_char_cn_17F40, texture_font_char_cn_17F50, texture_font_char_cn_17F60, texture_font_char_cn_17F70,\n    texture_font_char_cn_17F80, texture_font_char_cn_17F90, texture_font_char_cn_17FA0, texture_font_char_cn_17FB0,\n    texture_font_char_cn_17FC0, texture_font_char_cn_17FD0, texture_font_char_cn_17FE0, texture_font_char_cn_17FF0,\n    texture_font_char_cn_18000, texture_font_char_cn_18010, texture_font_char_cn_18020, texture_font_char_cn_18030,\n    texture_font_char_cn_18040, texture_font_char_cn_18050, texture_font_char_cn_18060, texture_font_char_cn_18070,\n    texture_font_char_cn_18080, texture_font_char_cn_18090, texture_font_char_cn_180A0, texture_font_char_cn_180B0,\n    texture_font_char_cn_180C0, texture_font_char_cn_180D0, texture_font_char_cn_180E0, texture_font_char_cn_180F0,\n    texture_font_char_cn_18100, texture_font_char_cn_18110, texture_font_char_cn_18120, texture_font_char_cn_18130,\n    texture_font_char_cn_18140, texture_font_char_cn_18150, texture_font_char_cn_18160, texture_font_char_cn_18170,\n    texture_font_char_cn_18180, texture_font_char_cn_18190, texture_font_char_cn_181A0, texture_font_char_cn_181B0,\n    texture_font_char_cn_181C0, texture_font_char_cn_181D0, texture_font_char_cn_181E0, texture_font_char_cn_181F0,\n    texture_font_char_cn_18200, texture_font_char_cn_18210, texture_font_char_cn_18220, texture_font_char_cn_18230,\n    texture_font_char_cn_18240, texture_font_char_cn_18250, texture_font_char_cn_18260, texture_font_char_cn_18270,\n    texture_font_char_cn_18280, texture_font_char_cn_18290, texture_font_char_cn_182A0, texture_font_char_cn_182B0,\n    texture_font_char_cn_182C0, texture_font_char_cn_182D0, texture_font_char_cn_182E0, texture_font_char_cn_182F0,\n    texture_font_char_cn_18300, texture_font_char_cn_18310, texture_font_char_cn_18320, texture_font_char_cn_18330,\n    texture_font_char_cn_18340, texture_font_char_cn_18350, texture_font_char_cn_18360, texture_font_char_cn_18370,\n    texture_font_char_cn_18380, texture_font_char_cn_18390, texture_font_char_cn_183A0, texture_font_char_cn_183B0,\n    texture_font_char_cn_183C0, texture_font_char_cn_183D0, texture_font_char_cn_183E0, texture_font_char_cn_183F0,\n    texture_font_char_cn_18400, texture_font_char_cn_18410, texture_font_char_cn_18420, texture_font_char_cn_18430,\n    texture_font_char_cn_18440, texture_font_char_cn_18450, texture_font_char_cn_18460, texture_font_char_cn_18470,\n    texture_font_char_cn_18480, texture_font_char_cn_18490, texture_font_char_cn_184A0, texture_font_char_cn_184B0,\n    texture_font_char_cn_184C0, texture_font_char_cn_184D0, texture_font_char_cn_184E0, texture_font_char_cn_184F0,\n    texture_font_char_cn_18500, texture_font_char_cn_18510, texture_font_char_cn_18520, texture_font_char_cn_18530,\n    texture_font_char_cn_18540, texture_font_char_cn_18550, texture_font_char_cn_18560, texture_font_char_cn_18570,\n    texture_font_char_cn_18580, texture_font_char_cn_18590, texture_font_char_cn_185A0, texture_font_char_cn_185B0,\n    texture_font_char_cn_185C0, texture_font_char_cn_185D0, texture_font_char_cn_185E0, texture_font_char_cn_185F0,\n    texture_font_char_cn_18600, texture_font_char_cn_18610, texture_font_char_cn_18620, texture_font_char_cn_18630,\n    texture_font_char_cn_18640, texture_font_char_cn_18650, texture_font_char_cn_18660, texture_font_char_cn_18670,\n    texture_font_char_cn_18680, texture_font_char_cn_18690, texture_font_char_cn_186A0, texture_font_char_cn_186B0,\n    texture_font_char_cn_186C0, texture_font_char_cn_186D0, texture_font_char_cn_186E0, texture_font_char_cn_186F0,\n    texture_font_char_cn_18700, texture_font_char_cn_18710, texture_font_char_cn_18720, texture_font_char_cn_18730,\n    texture_font_char_cn_18740, texture_font_char_cn_18750, texture_font_char_cn_18760, texture_font_char_cn_18770,\n    texture_font_char_cn_18780, texture_font_char_cn_18790, texture_font_char_cn_187A0, texture_font_char_cn_187B0,\n    texture_font_char_cn_187C0, texture_font_char_cn_187D0, texture_font_char_cn_187E0, texture_font_char_cn_187F0,\n    texture_font_char_cn_18800, texture_font_char_cn_18810, texture_font_char_cn_18820, texture_font_char_cn_18830,\n    texture_font_char_cn_18840, texture_font_char_cn_18850, texture_font_char_cn_18860, texture_font_char_cn_18870,\n    texture_font_char_cn_18880, texture_font_char_cn_18890, texture_font_char_cn_188A0, texture_font_char_cn_188B0,\n    texture_font_char_cn_188C0, texture_font_char_cn_188D0, texture_font_char_cn_188E0, texture_font_char_cn_188F0,\n    texture_font_char_cn_18900, texture_font_char_cn_18910, texture_font_char_cn_18920, texture_font_char_cn_18930,\n    texture_font_char_cn_18940, texture_font_char_cn_18950, texture_font_char_cn_18960, texture_font_char_cn_18970,\n    texture_font_char_cn_18980, texture_font_char_cn_18990, texture_font_char_cn_189A0, texture_font_char_cn_189B0,\n    texture_font_char_cn_189C0, texture_font_char_cn_189D0, texture_font_char_cn_189E0, texture_font_char_cn_189F0,\n    texture_font_char_cn_18A00, texture_font_char_cn_18A10, texture_font_char_cn_18A20, texture_font_char_cn_18A30,\n    texture_font_char_cn_18A40, texture_font_char_cn_18A50, texture_font_char_cn_18A60, texture_font_char_cn_18A70,\n    texture_font_char_cn_18A80, texture_font_char_cn_18A90, texture_font_char_cn_18AA0, texture_font_char_cn_18AB0,\n    texture_font_char_cn_18AC0, texture_font_char_cn_18AD0, texture_font_char_cn_18AE0, texture_font_char_cn_18AF0,\n    texture_font_char_cn_18B00, texture_font_char_cn_18B10, texture_font_char_cn_18B20, texture_font_char_cn_18B30,\n    texture_font_char_cn_18B40, texture_font_char_cn_18B50, texture_font_char_cn_18B60, texture_font_char_cn_18B70,\n    texture_font_char_cn_18B80, texture_font_char_cn_18B90, texture_font_char_cn_18BA0, texture_font_char_cn_18BB0,\n    texture_font_char_cn_18BC0, texture_font_char_cn_18BD0, texture_font_char_cn_18BE0, texture_font_char_cn_18BF0,\n    texture_font_char_cn_18C00, texture_font_char_cn_18C10, texture_font_char_cn_18C20, texture_font_char_cn_18C30,\n    texture_font_char_cn_18C40, texture_font_char_cn_18C50, texture_font_char_cn_18C60, texture_font_char_cn_18C70,\n    texture_font_char_cn_18C80, texture_font_char_cn_18C90, texture_font_char_cn_18CA0, texture_font_char_cn_18CB0,\n    texture_font_char_cn_18CC0, texture_font_char_cn_18CD0, texture_font_char_cn_18CE0, texture_font_char_cn_18CF0,\n    texture_font_char_cn_18D00, texture_font_char_cn_18D10, texture_font_char_cn_18D20, texture_font_char_cn_18D30,\n    texture_font_char_cn_18D40, texture_font_char_cn_18D50, texture_font_char_cn_18D60, texture_font_char_cn_18D70,\n    texture_font_char_cn_18D80, texture_font_char_cn_18D90, texture_font_char_cn_18DA0, texture_font_char_cn_18DB0,\n    texture_font_char_cn_18DC0, texture_font_char_cn_18DD0, texture_font_char_cn_18DE0, texture_font_char_cn_18DF0,\n    texture_font_char_cn_18E00, texture_font_char_cn_18E10, texture_font_char_cn_18E20, texture_font_char_cn_18E30,\n    texture_font_char_cn_18E40, texture_font_char_cn_18E50, texture_font_char_cn_18E60, texture_font_char_cn_18E70,\n    texture_font_char_cn_18E80, texture_font_char_cn_18E90, texture_font_char_cn_18EA0, texture_font_char_cn_18EB0,\n    texture_font_char_cn_18EC0, texture_font_char_cn_18ED0, texture_font_char_cn_18EE0, texture_font_char_cn_18EF0,\n    texture_font_char_cn_18F00, texture_font_char_cn_18F10, texture_font_char_cn_18F20, texture_font_char_cn_18F30,\n    texture_font_char_cn_18F40, texture_font_char_cn_18F50, texture_font_char_cn_18F60, texture_font_char_cn_18F70,\n    texture_font_char_cn_18F80, texture_font_char_cn_18F90, texture_font_char_cn_18FA0, texture_font_char_cn_18FB0,\n    texture_font_char_cn_18FC0, texture_font_char_cn_18FD0, texture_font_char_cn_18FE0, texture_font_char_cn_18FF0,\n    texture_font_char_cn_19000, texture_font_char_cn_19010, texture_font_char_cn_19020, texture_font_char_cn_19030,\n    texture_font_char_cn_19040, texture_font_char_cn_19050, texture_font_char_cn_19060, texture_font_char_cn_19070,\n    texture_font_char_cn_19080, texture_font_char_cn_19090, texture_font_char_cn_190A0, texture_font_char_cn_190B0,\n    texture_font_char_cn_190C0, texture_font_char_cn_190D0, texture_font_char_cn_190E0, texture_font_char_cn_190F0,\n    texture_font_char_cn_19100, texture_font_char_cn_19110, texture_font_char_cn_19120, texture_font_char_cn_19130,\n    texture_font_char_cn_19140, texture_font_char_cn_19150, texture_font_char_cn_19160, texture_font_char_cn_19170,\n    texture_font_char_cn_19180, texture_font_char_cn_19190, texture_font_char_cn_191A0, texture_font_char_cn_191B0,\n    texture_font_char_cn_191C0, texture_font_char_cn_191D0, texture_font_char_cn_191E0, texture_font_char_cn_191F0,\n    texture_font_char_cn_19200, texture_font_char_cn_19210, texture_font_char_cn_19220, texture_font_char_cn_19230,\n    texture_font_char_cn_19240, texture_font_char_cn_19250, texture_font_char_cn_19260, texture_font_char_cn_19270,\n    texture_font_char_cn_19280, texture_font_char_cn_19290, texture_font_char_cn_192A0, texture_font_char_cn_192B0,\n    texture_font_char_cn_192C0, texture_font_char_cn_192D0, texture_font_char_cn_192E0, texture_font_char_cn_192F0,\n    texture_font_char_cn_19300, texture_font_char_cn_19310, texture_font_char_cn_19320, texture_font_char_cn_19330,\n    texture_font_char_cn_19340, texture_font_char_cn_19350, texture_font_char_cn_19360, texture_font_char_cn_19370,\n    texture_font_char_cn_19380, texture_font_char_cn_19390, texture_font_char_cn_193A0, texture_font_char_cn_193B0,\n    texture_font_char_cn_193C0, texture_font_char_cn_193D0, texture_font_char_cn_193E0, texture_font_char_cn_193F0,\n    texture_font_char_cn_19400, texture_font_char_cn_19410, texture_font_char_cn_19420, texture_font_char_cn_19430,\n    texture_font_char_cn_19440, texture_font_char_cn_19450, texture_font_char_cn_19460, texture_font_char_cn_19470,\n    texture_font_char_cn_19480, texture_font_char_cn_19490, texture_font_char_cn_194A0, texture_font_char_cn_194B0,\n    texture_font_char_cn_194C0, texture_font_char_cn_194D0, texture_font_char_cn_194E0, texture_font_char_cn_194F0,\n    texture_font_char_cn_19500, texture_font_char_cn_19510, texture_font_char_cn_19520, texture_font_char_cn_19530,\n    texture_font_char_cn_19540, texture_font_char_cn_19550, texture_font_char_cn_19560, texture_font_char_cn_19570,\n    texture_font_char_cn_19580, texture_font_char_cn_19590, texture_font_char_cn_195A0, texture_font_char_cn_195B0,\n    texture_font_char_cn_195C0, texture_font_char_cn_195D0, texture_font_char_cn_195E0, texture_font_char_cn_195F0,\n    texture_font_char_cn_19600, texture_font_char_cn_19610, texture_font_char_cn_19620, texture_font_char_cn_19630,\n    texture_font_char_cn_19640, texture_font_char_cn_19650, texture_font_char_cn_19660, texture_font_char_cn_19670,\n    texture_font_char_cn_19680, texture_font_char_cn_19690, texture_font_char_cn_196A0, texture_font_char_cn_196B0,\n    texture_font_char_cn_196C0, texture_font_char_cn_196D0, texture_font_char_cn_196E0, texture_font_char_cn_196F0,\n    texture_font_char_cn_19700, texture_font_char_cn_19710, texture_font_char_cn_19720, texture_font_char_cn_19730,\n    texture_font_char_cn_19740, texture_font_char_cn_19750, texture_font_char_cn_19760, texture_font_char_cn_19770,\n    texture_font_char_cn_19780, texture_font_char_cn_19790, texture_font_char_cn_197A0, texture_font_char_cn_197B0,\n    texture_font_char_cn_197C0, texture_font_char_cn_197D0, texture_font_char_cn_197E0, texture_font_char_cn_197F0,\n    texture_font_char_cn_19800, texture_font_char_cn_19810, texture_font_char_cn_19820, texture_font_char_cn_19830,\n    texture_font_char_cn_19840, texture_font_char_cn_19850, texture_font_char_cn_19860, texture_font_char_cn_19870,\n    texture_font_char_cn_19880, texture_font_char_cn_19890, texture_font_char_cn_198A0, texture_font_char_cn_198B0,\n    texture_font_char_cn_198C0, texture_font_char_cn_198D0, texture_font_char_cn_198E0, texture_font_char_cn_198F0,\n    texture_font_char_cn_19900, texture_font_char_cn_19910, texture_font_char_cn_19920, texture_font_char_cn_19930,\n    texture_font_char_cn_19940, texture_font_char_cn_19950, texture_font_char_cn_19960, texture_font_char_cn_19970,\n    texture_font_char_cn_19980, texture_font_char_cn_19990, texture_font_char_cn_199A0, texture_font_char_cn_199B0,\n    texture_font_char_cn_199C0, texture_font_char_cn_199D0, texture_font_char_cn_199E0, texture_font_char_cn_199F0,\n    texture_font_char_cn_19A00, texture_font_char_cn_19A10, texture_font_char_cn_19A20, texture_font_char_cn_19A30,\n    texture_font_char_cn_19A40, texture_font_char_cn_19A50, texture_font_char_cn_19A60, texture_font_char_cn_19A70,\n    texture_font_char_cn_19A80, texture_font_char_cn_19A90, texture_font_char_cn_19AA0, texture_font_char_cn_19AB0,\n    texture_font_char_cn_19AC0, texture_font_char_cn_19AD0, texture_font_char_cn_19AE0, texture_font_char_cn_19AF0,\n    texture_font_char_cn_19B00, texture_font_char_cn_19B10, texture_font_char_cn_19B20, texture_font_char_cn_19B30,\n    texture_font_char_cn_19B40, texture_font_char_cn_19B50, texture_font_char_cn_19B60, texture_font_char_cn_19B70,\n    texture_font_char_cn_19B80, texture_font_char_cn_19B90, texture_font_char_cn_19BA0, texture_font_char_cn_19BB0,\n    texture_font_char_cn_19BC0, texture_font_char_cn_19BD0, texture_font_char_cn_19BE0, texture_font_char_cn_19BF0,\n    texture_font_char_cn_19C00, texture_font_char_cn_19C10, texture_font_char_cn_19C20, texture_font_char_cn_19C30,\n    texture_font_char_cn_19C40, texture_font_char_cn_19C50, texture_font_char_cn_19C60, texture_font_char_cn_19C70,\n    texture_font_char_cn_19C80, texture_font_char_cn_19C90, texture_font_char_cn_19CA0, texture_font_char_cn_19CB0,\n    texture_font_char_cn_19CC0, texture_font_char_cn_19CD0, texture_font_char_cn_19CE0, texture_font_char_cn_19CF0,\n    texture_font_char_cn_19D00, texture_font_char_cn_19D10, texture_font_char_cn_19D20, texture_font_char_cn_19D30,\n    texture_font_char_cn_19D40, texture_font_char_cn_19D50, texture_font_char_cn_19D60, texture_font_char_cn_19D70,\n    texture_font_char_cn_19D80, texture_font_char_cn_19D90, texture_font_char_cn_19DA0, texture_font_char_cn_19DB0,\n    texture_font_char_cn_19DC0, texture_font_char_cn_19DD0, texture_font_char_cn_19DE0, texture_font_char_cn_19DF0,\n    texture_font_char_cn_19E00, texture_font_char_cn_19E10, texture_font_char_cn_19E20, texture_font_char_cn_19E30,\n    texture_font_char_cn_19E40, texture_font_char_cn_19E50, texture_font_char_cn_19E60, texture_font_char_cn_19E70,\n    texture_font_char_cn_19E80, texture_font_char_cn_19E90, texture_font_char_cn_19EA0, texture_font_char_cn_19EB0,\n    texture_font_char_cn_19EC0, texture_font_char_cn_19ED0, texture_font_char_cn_19EE0, texture_font_char_cn_19EF0,\n    texture_font_char_cn_19F00, texture_font_char_cn_19F10, texture_font_char_cn_19F20, texture_font_char_cn_19F30,\n    texture_font_char_cn_19F40, texture_font_char_cn_19F50, texture_font_char_cn_19F60, texture_font_char_cn_19F70,\n    texture_font_char_cn_19F80, texture_font_char_cn_19F90, texture_font_char_cn_19FA0, texture_font_char_cn_19FB0,\n    texture_font_char_cn_19FC0, texture_font_char_cn_19FD0, texture_font_char_cn_19FE0, texture_font_char_cn_19FF0,\n    texture_font_char_cn_1A000, texture_font_char_cn_1A010, texture_font_char_cn_1A020, texture_font_char_cn_1A030,\n    texture_font_char_cn_1A040, texture_font_char_cn_1A050, texture_font_char_cn_1A060, texture_font_char_cn_1A070,\n    texture_font_char_cn_1A080, texture_font_char_cn_1A090, texture_font_char_cn_1A0A0, texture_font_char_cn_1A0B0,\n    texture_font_char_cn_1A0C0, texture_font_char_cn_1A0D0, texture_font_char_cn_1A0E0, texture_font_char_cn_1A0F0,\n    texture_font_char_cn_1A100, texture_font_char_cn_1A110, texture_font_char_cn_1A120, texture_font_char_cn_1A130,\n    texture_font_char_cn_1A140, texture_font_char_cn_1A150, texture_font_char_cn_1A160, texture_font_char_cn_1A170,\n    texture_font_char_cn_1A180, texture_font_char_cn_1A190, texture_font_char_cn_1A1A0, texture_font_char_cn_1A1B0,\n    texture_font_char_cn_1A1C0, texture_font_char_cn_1A1D0, texture_font_char_cn_1A1E0, texture_font_char_cn_1A1F0,\n    texture_font_char_cn_1A200, texture_font_char_cn_1A210, texture_font_char_cn_1A220, texture_font_char_cn_1A230,\n    texture_font_char_cn_1A240, texture_font_char_cn_1A250, texture_font_char_cn_1A260, texture_font_char_cn_1A270,\n    texture_font_char_cn_1A280, texture_font_char_cn_1A290, texture_font_char_cn_1A2A0, texture_font_char_cn_1A2B0,\n    texture_font_char_cn_1A2C0, texture_font_char_cn_1A2D0, texture_font_char_cn_1A2E0, texture_font_char_cn_1A2F0,\n    texture_font_char_cn_1A300, texture_font_char_cn_1A310, texture_font_char_cn_1A320, texture_font_char_cn_1A330,\n    texture_font_char_cn_1A340, texture_font_char_cn_1A350, texture_font_char_cn_1A360, texture_font_char_cn_1A370,\n    texture_font_char_cn_1A380, texture_font_char_cn_1A390, texture_font_char_cn_1A3A0, texture_font_char_cn_1A3B0,\n    texture_font_char_cn_1A3C0, texture_font_char_cn_1A3D0, texture_font_char_cn_1A3E0, texture_font_char_cn_1A3F0,\n    texture_font_char_cn_1A400, texture_font_char_cn_1A410, texture_font_char_cn_1A420, texture_font_char_cn_1A430,\n    texture_font_char_cn_1A440, texture_font_char_cn_1A450, texture_font_char_cn_1A460, texture_font_char_cn_1A470,\n    texture_font_char_cn_1A480, texture_font_char_cn_1A490, texture_font_char_cn_1A4A0, texture_font_char_cn_1A4B0,\n    texture_font_char_cn_1A4C0, texture_font_char_cn_1A4D0, texture_font_char_cn_1A4E0, texture_font_char_cn_1A4F0,\n    texture_font_char_cn_1A500, texture_font_char_cn_1A510, texture_font_char_cn_1A520, texture_font_char_cn_1A530,\n    texture_font_char_cn_1A540, texture_font_char_cn_1A550, texture_font_char_cn_1A560, texture_font_char_cn_1A570,\n    texture_font_char_cn_1A580, texture_font_char_cn_1A590, texture_font_char_cn_1A5A0, texture_font_char_cn_1A5B0,\n    texture_font_char_cn_1A5C0, texture_font_char_cn_1A5D0, texture_font_char_cn_1A5E0, texture_font_char_cn_1A5F0,\n    texture_font_char_cn_1A600, texture_font_char_cn_1A610, texture_font_char_cn_1A620, texture_font_char_cn_1A630,\n    texture_font_char_cn_1A640, texture_font_char_cn_1A650, texture_font_char_cn_1A660, texture_font_char_cn_1A670,\n    texture_font_char_cn_1A680, texture_font_char_cn_1A690, texture_font_char_cn_1A6A0, texture_font_char_cn_1A6B0,\n    texture_font_char_cn_1A6C0, texture_font_char_cn_1A6D0, texture_font_char_cn_1A6E0, texture_font_char_cn_1A6F0,\n    texture_font_char_cn_1A700, texture_font_char_cn_1A710, texture_font_char_cn_1A720, texture_font_char_cn_1A730,\n    texture_font_char_cn_1A740, texture_font_char_cn_1A750, texture_font_char_cn_1A760, texture_font_char_cn_1A770,\n    texture_font_char_cn_1A780, texture_font_char_cn_1A790, texture_font_char_cn_1A7A0, texture_font_char_cn_1A7B0,\n    texture_font_char_cn_1A7C0, texture_font_char_cn_1A7D0, texture_font_char_cn_1A7E0, texture_font_char_cn_1A7F0,\n    texture_font_char_cn_1A800, texture_font_char_cn_1A810, texture_font_char_cn_1A820, texture_font_char_cn_1A830,\n    texture_font_char_cn_1A840, texture_font_char_cn_1A850, texture_font_char_cn_1A860, texture_font_char_cn_1A870,\n    texture_font_char_cn_1A880, texture_font_char_cn_1A890, texture_font_char_cn_1A8A0, texture_font_char_cn_1A8B0,\n    texture_font_char_cn_1A8C0, texture_font_char_cn_1A8D0, texture_font_char_cn_1A8E0, texture_font_char_cn_1A8F0,\n    texture_font_char_cn_1A900, texture_font_char_cn_1A910, texture_font_char_cn_1A920, texture_font_char_cn_1A930,\n    texture_font_char_cn_1A940, texture_font_char_cn_1A950, texture_font_char_cn_1A960, texture_font_char_cn_1A970,\n    texture_font_char_cn_1A980, texture_font_char_cn_1A990, texture_font_char_cn_1A9A0, texture_font_char_cn_1A9B0,\n    texture_font_char_cn_1A9C0, texture_font_char_cn_1A9D0, texture_font_char_cn_1A9E0, texture_font_char_cn_1A9F0,\n    texture_font_char_cn_1AA00, texture_font_char_cn_1AA10, texture_font_char_cn_1AA20, texture_font_char_cn_1AA30,\n    texture_font_char_cn_1AA40, texture_font_char_cn_1AA50, texture_font_char_cn_1AA60, texture_font_char_cn_1AA70,\n    texture_font_char_cn_1AA80, texture_font_char_cn_1AA90, texture_font_char_cn_1AAA0, texture_font_char_cn_1AAB0,\n    texture_font_char_cn_1AAC0, texture_font_char_cn_1AAD0, texture_font_char_cn_1AAE0, texture_font_char_cn_1AAF0,\n    texture_font_char_cn_1AB00, texture_font_char_cn_1AB10, texture_font_char_cn_1AB20, texture_font_char_cn_1AB30,\n    texture_font_char_cn_1AB40, texture_font_char_cn_1AB50, texture_font_char_cn_1AB60, texture_font_char_cn_1AB70,\n    texture_font_char_cn_1AB80, texture_font_char_cn_1AB90, texture_font_char_cn_1ABA0, texture_font_char_cn_1ABB0,\n    texture_font_char_cn_1ABC0, texture_font_char_cn_1ABD0, texture_font_char_cn_1ABE0, texture_font_char_cn_1ABF0,\n    texture_font_char_cn_1AC00, texture_font_char_cn_1AC10, texture_font_char_cn_1AC20, texture_font_char_cn_1AC30,\n    texture_font_char_cn_1AC40, texture_font_char_cn_1AC50, texture_font_char_cn_1AC60, texture_font_char_cn_1AC70,\n    texture_font_char_cn_1AC80, texture_font_char_cn_1AC90, texture_font_char_cn_1ACA0, texture_font_char_cn_1ACB0,\n    texture_font_char_cn_1ACC0, texture_font_char_cn_1ACD0, texture_font_char_cn_1ACE0, texture_font_char_cn_1ACF0,\n    texture_font_char_cn_1AD00, texture_font_char_cn_1AD10, texture_font_char_cn_1AD20, texture_font_char_cn_1AD30,\n    texture_font_char_cn_1AD40, texture_font_char_cn_1AD50, texture_font_char_cn_1AD60, texture_font_char_cn_1AD70,\n    texture_font_char_cn_1AD80, texture_font_char_cn_1AD90, texture_font_char_cn_1ADA0, texture_font_char_cn_1ADB0,\n    texture_font_char_cn_1ADC0, texture_font_char_cn_1ADD0, texture_font_char_cn_1ADE0, texture_font_char_cn_1ADF0,\n    texture_font_char_cn_1AE00, texture_font_char_cn_1AE10, texture_font_char_cn_1AE20, texture_font_char_cn_1AE30,\n    texture_font_char_cn_1AE40, texture_font_char_cn_1AE50, texture_font_char_cn_1AE60, texture_font_char_cn_1AE70,\n    texture_font_char_cn_1AE80, texture_font_char_cn_1AE90, texture_font_char_cn_1AEA0, texture_font_char_cn_1AEB0,\n    texture_font_char_cn_1AEC0, texture_font_char_cn_1AED0, texture_font_char_cn_1AEE0, texture_font_char_cn_1AEF0,\n    texture_font_char_cn_1AF00, texture_font_char_cn_1AF10, texture_font_char_cn_1AF20, texture_font_char_cn_1AF30,\n    texture_font_char_cn_1AF40, texture_font_char_cn_1AF50, texture_font_char_cn_1AF60, texture_font_char_cn_1AF70,\n    texture_font_char_cn_1AF80, texture_font_char_cn_1AF90, texture_font_char_cn_1AFA0, texture_font_char_cn_1AFB0,\n    texture_font_char_cn_1AFC0, texture_font_char_cn_1AFD0, texture_font_char_cn_1AFE0, texture_font_char_cn_1AFF0,\n    texture_font_char_cn_1B000, texture_font_char_cn_1B010, texture_font_char_cn_1B020, texture_font_char_cn_1B030,\n    texture_font_char_cn_1B040, texture_font_char_cn_1B050, texture_font_char_cn_1B060, texture_font_char_cn_1B070,\n    texture_font_char_cn_1B080, texture_font_char_cn_1B090, texture_font_char_cn_1B0A0, texture_font_char_cn_1B0B0,\n    texture_font_char_cn_1B0C0, texture_font_char_cn_1B0D0, texture_font_char_cn_1B0E0, texture_font_char_cn_1B0F0,\n    texture_font_char_cn_1B100, texture_font_char_cn_1B110, texture_font_char_cn_1B120, texture_font_char_cn_1B130,\n    texture_font_char_cn_1B140, texture_font_char_cn_1B150, texture_font_char_cn_1B160, texture_font_char_cn_1B170,\n    texture_font_char_cn_1B180, texture_font_char_cn_1B190, texture_font_char_cn_1B1A0, texture_font_char_cn_1B1B0,\n    texture_font_char_cn_1B1C0, texture_font_char_cn_1B1D0, texture_font_char_cn_1B1E0, texture_font_char_cn_1B1F0,\n    texture_font_char_cn_1B200, texture_font_char_cn_1B210, texture_font_char_cn_1B220, texture_font_char_cn_1B230,\n    texture_font_char_cn_1B240, texture_font_char_cn_1B250, texture_font_char_cn_1B260, texture_font_char_cn_1B270,\n    texture_font_char_cn_1B280, texture_font_char_cn_1B290, texture_font_char_cn_1B2A0, texture_font_char_cn_1B2B0,\n    texture_font_char_cn_1B2C0, texture_font_char_cn_1B2D0, texture_font_char_cn_1B2E0, texture_font_char_cn_1B2F0,\n    texture_font_char_cn_1B300, texture_font_char_cn_1B310, texture_font_char_cn_1B320, texture_font_char_cn_1B330,\n    texture_font_char_cn_1B340, texture_font_char_cn_1B350, texture_font_char_cn_1B360, texture_font_char_cn_1B370,\n    texture_font_char_cn_1B380, texture_font_char_cn_1B390, texture_font_char_cn_1B3A0, texture_font_char_cn_1B3B0,\n    texture_font_char_cn_1B3C0, texture_font_char_cn_1B3D0, texture_font_char_cn_1B3E0, texture_font_char_cn_1B3F0,\n    texture_font_char_cn_1B400, texture_font_char_cn_1B410, texture_font_char_cn_1B420, texture_font_char_cn_1B430,\n    texture_font_char_cn_1B440, texture_font_char_cn_1B450, texture_font_char_cn_1B460, texture_font_char_cn_1B470,\n    texture_font_char_cn_1B480, texture_font_char_cn_1B490, texture_font_char_cn_1B4A0, texture_font_char_cn_1B4B0,\n    texture_font_char_cn_1B4C0, texture_font_char_cn_1B4D0, texture_font_char_cn_1B4E0, texture_font_char_cn_1B4F0,\n    texture_font_char_cn_1B500, texture_font_char_cn_1B510, texture_font_char_cn_1B520, texture_font_char_cn_1B530,\n    texture_font_char_cn_1B540, texture_font_char_cn_1B550, texture_font_char_cn_1B560, texture_font_char_cn_1B570,\n    texture_font_char_cn_1B580, texture_font_char_cn_1B590, texture_font_char_cn_1B5A0, texture_font_char_cn_1B5B0,\n    texture_font_char_cn_1B5C0, texture_font_char_cn_1B5D0, texture_font_char_cn_1B5E0, texture_font_char_cn_1B5F0,\n    texture_font_char_cn_1B600, texture_font_char_cn_1B610, texture_font_char_cn_1B620, texture_font_char_cn_1B630,\n    texture_font_char_cn_1B640, texture_font_char_cn_1B650, texture_font_char_cn_1B660, texture_font_char_cn_1B670,\n    texture_font_char_cn_1B680, texture_font_char_cn_1B690, texture_font_char_cn_1B6A0, texture_font_char_cn_1B6B0,\n    texture_font_char_cn_1B6C0, texture_font_char_cn_1B6D0, texture_font_char_cn_1B6E0, texture_font_char_cn_1B6F0,\n    texture_font_char_cn_1B700, texture_font_char_cn_1B710, texture_font_char_cn_1B720, texture_font_char_cn_1B730,\n    texture_font_char_cn_1B740, texture_font_char_cn_1B750, texture_font_char_cn_1B760, texture_font_char_cn_1B770,\n    texture_font_char_cn_1B780, texture_font_char_cn_1B790, texture_font_char_cn_1B7A0, texture_font_char_cn_1B7B0,\n    texture_font_char_cn_1B7C0, texture_font_char_cn_1B7D0, texture_font_char_cn_1B7E0, texture_font_char_cn_1B7F0,\n    texture_font_char_cn_1B800, texture_font_char_cn_1B810, texture_font_char_cn_1B820, texture_font_char_cn_1B830,\n    texture_font_char_cn_1B840, texture_font_char_cn_1B850, texture_font_char_cn_1B860, texture_font_char_cn_1B870,\n    texture_font_char_cn_1B880, texture_font_char_cn_1B890, texture_font_char_cn_1B8A0, texture_font_char_cn_1B8B0,\n    texture_font_char_cn_1B8C0, texture_font_char_cn_1B8D0, texture_font_char_cn_1B8E0, texture_font_char_cn_1B8F0,\n    texture_font_char_cn_1B900, texture_font_char_cn_1B910, texture_font_char_cn_1B920, texture_font_char_cn_1B930,\n    texture_font_char_cn_1B940, texture_font_char_cn_1B950, texture_font_char_cn_1B960, texture_font_char_cn_1B970,\n    texture_font_char_cn_1B980, texture_font_char_cn_1B990, texture_font_char_cn_1B9A0, texture_font_char_cn_1B9B0,\n    texture_font_char_cn_1B9C0, texture_font_char_cn_1B9D0, texture_font_char_cn_1B9E0, texture_font_char_cn_1B9F0,\n    texture_font_char_cn_1BA00, texture_font_char_cn_1BA10, texture_font_char_cn_1BA20, texture_font_char_cn_1BA30,\n    texture_font_char_cn_1BA40, texture_font_char_cn_1BA50, texture_font_char_cn_1BA60, texture_font_char_cn_1BA70,\n    texture_font_char_cn_1BA80, texture_font_char_cn_1BA90, texture_font_char_cn_1BAA0, texture_font_char_cn_1BAB0,\n    texture_font_char_cn_1BAC0, texture_font_char_cn_1BAD0, texture_font_char_cn_1BAE0, texture_font_char_cn_1BAF0,\n    texture_font_char_cn_1BB00, texture_font_char_cn_1BB10, texture_font_char_cn_1BB20, texture_font_char_cn_1BB30,\n    texture_font_char_cn_1BB40, texture_font_char_cn_1BB50, texture_font_char_cn_1BB60, texture_font_char_cn_1BB70,\n    texture_font_char_cn_1BB80, texture_font_char_cn_1BB90, texture_font_char_cn_1BBA0, texture_font_char_cn_1BBB0,\n    texture_font_char_cn_1BBC0, texture_font_char_cn_1BBD0, texture_font_char_cn_1BBE0, texture_font_char_cn_1BBF0,\n    texture_font_char_cn_1BC00, texture_font_char_cn_1BC10, texture_font_char_cn_1BC20, texture_font_char_cn_1BC30,\n    texture_font_char_cn_1BC40, texture_font_char_cn_1BC50, texture_font_char_cn_1BC60, texture_font_char_cn_1BC70,\n    texture_font_char_cn_1BC80, texture_font_char_cn_1BC90, texture_font_char_cn_1BCA0, texture_font_char_cn_1BCB0,\n    texture_font_char_cn_1BCC0, texture_font_char_cn_1BCD0, texture_font_char_cn_1BCE0, texture_font_char_cn_1BCF0,\n    texture_font_char_cn_1BD00, texture_font_char_cn_1BD10, texture_font_char_cn_1BD20, texture_font_char_cn_1BD30,\n    texture_font_char_cn_1BD40, texture_font_char_cn_1BD50, texture_font_char_cn_1BD60, texture_font_char_cn_1BD70,\n    texture_font_char_cn_1BD80, texture_font_char_cn_1BD90, texture_font_char_cn_1BDA0, texture_font_char_cn_1BDB0,\n    texture_font_char_cn_1BDC0, texture_font_char_cn_1BDD0, texture_font_char_cn_1BDE0, texture_font_char_cn_1BDF0,\n    texture_font_char_cn_1BE00, texture_font_char_cn_1BE10, texture_font_char_cn_1BE20, texture_font_char_cn_1BE30,\n    texture_font_char_cn_1BE40, texture_font_char_cn_1BE50, texture_font_char_cn_1BE60, texture_font_char_cn_1BE70,\n    texture_font_char_cn_1BE80, texture_font_char_cn_1BE90, texture_font_char_cn_1BEA0, texture_font_char_cn_1BEB0,\n    texture_font_char_cn_1BEC0, texture_font_char_cn_1BED0, texture_font_char_cn_1BEE0, texture_font_char_cn_1BEF0,\n    texture_font_char_cn_1BF00, texture_font_char_cn_1BF10, texture_font_char_cn_1BF20, texture_font_char_cn_1BF30,\n    texture_font_char_cn_1BF40, texture_font_char_cn_1BF50, texture_font_char_cn_1BF60, texture_font_char_cn_1BF70,\n    texture_font_char_cn_1BF80, texture_font_char_cn_1BF90, texture_font_char_cn_1BFA0, texture_font_char_cn_1BFB0,\n    texture_font_char_cn_1BFC0, texture_font_char_cn_1BFD0, texture_font_char_cn_1BFE0, texture_font_char_cn_1BFF0,\n    texture_font_char_cn_1C000, texture_font_char_cn_1C010, texture_font_char_cn_1C020, texture_font_char_cn_1C030,\n    texture_font_char_cn_1C040, texture_font_char_cn_1C050, texture_font_char_cn_1C060, texture_font_char_cn_1C070,\n    texture_font_char_cn_1C080, texture_font_char_cn_1C090, texture_font_char_cn_1C0A0, texture_font_char_cn_1C0B0,\n    texture_font_char_cn_1C0C0, texture_font_char_cn_1C0D0, texture_font_char_cn_1C0E0, texture_font_char_cn_1C0F0,\n    texture_font_char_cn_1C100, texture_font_char_cn_1C110, texture_font_char_cn_1C120, texture_font_char_cn_1C130,\n    texture_font_char_cn_1C140, texture_font_char_cn_1C150, texture_font_char_cn_1C160, texture_font_char_cn_1C170,\n    texture_font_char_cn_1C180, texture_font_char_cn_1C190, texture_font_char_cn_1C1A0, texture_font_char_cn_1C1B0,\n    texture_font_char_cn_1C1C0, texture_font_char_cn_1C1D0, texture_font_char_cn_1C1E0, texture_font_char_cn_1C1F0,\n    texture_font_char_cn_1C200, texture_font_char_cn_1C210, texture_font_char_cn_1C220, texture_font_char_cn_1C230,\n    texture_font_char_cn_1C240, texture_font_char_cn_1C250, texture_font_char_cn_1C260, texture_font_char_cn_1C270,\n    texture_font_char_cn_1C280, texture_font_char_cn_1C290, texture_font_char_cn_1C2A0, texture_font_char_cn_1C2B0,\n    texture_font_char_cn_1C2C0, texture_font_char_cn_1C2D0, texture_font_char_cn_1C2E0, texture_font_char_cn_1C2F0,\n    texture_font_char_cn_1C300, texture_font_char_cn_1C310, texture_font_char_cn_1C320, texture_font_char_cn_1C330,\n    texture_font_char_cn_1C340, texture_font_char_cn_1C350, texture_font_char_cn_1C360, texture_font_char_cn_1C370,\n    texture_font_char_cn_1C380, texture_font_char_cn_1C390, texture_font_char_cn_1C3A0, texture_font_char_cn_1C3B0,\n    texture_font_char_cn_1C3C0, texture_font_char_cn_1C3D0, texture_font_char_cn_1C3E0, texture_font_char_cn_1C3F0,\n    texture_font_char_cn_1C400, texture_font_char_cn_1C410, texture_font_char_cn_1C420, texture_font_char_cn_1C430,\n    texture_font_char_cn_1C440, texture_font_char_cn_1C450, texture_font_char_cn_1C460, texture_font_char_cn_1C470,\n    texture_font_char_cn_1C480, texture_font_char_cn_1C490, texture_font_char_cn_1C4A0, texture_font_char_cn_1C4B0,\n    texture_font_char_cn_1C4C0, texture_font_char_cn_1C4D0, texture_font_char_cn_1C4E0, texture_font_char_cn_1C4F0,\n    texture_font_char_cn_1C500, texture_font_char_cn_1C510, texture_font_char_cn_1C520, texture_font_char_cn_1C530,\n    texture_font_char_cn_1C540, texture_font_char_cn_1C550, texture_font_char_cn_1C560, texture_font_char_cn_1C570,\n    texture_font_char_cn_1C580, texture_font_char_cn_1C590, texture_font_char_cn_1C5A0, texture_font_char_cn_1C5B0,\n    texture_font_char_cn_1C5C0, texture_font_char_cn_1C5D0, texture_font_char_cn_1C5E0, texture_font_char_cn_1C5F0,\n    texture_font_char_cn_1C600, texture_font_char_cn_1C610, texture_font_char_cn_1C620, texture_font_char_cn_1C630,\n    texture_font_char_cn_1C640, texture_font_char_cn_1C650, texture_font_char_cn_1C660, texture_font_char_cn_1C670,\n    texture_font_char_cn_1C680, texture_font_char_cn_1C690, texture_font_char_cn_1C6A0, texture_font_char_cn_1C6B0,\n    texture_font_char_cn_1C6C0, texture_font_char_cn_1C6D0, texture_font_char_cn_1C6E0, texture_font_char_cn_1C6F0,\n    texture_font_char_cn_1C700, texture_font_char_cn_1C710, texture_font_char_cn_1C720, texture_font_char_cn_1C730,\n    texture_font_char_cn_1C740, texture_font_char_cn_1C750, texture_font_char_cn_1C760, texture_font_char_cn_1C770,\n    texture_font_char_cn_1C780, texture_font_char_cn_1C790, texture_font_char_cn_1C7A0, texture_font_char_cn_1C7B0,\n    texture_font_char_cn_1C7C0, texture_font_char_cn_1C7D0, texture_font_char_cn_1C7E0, texture_font_char_cn_1C7F0,\n    texture_font_char_cn_1C800, texture_font_char_cn_1C810, texture_font_char_cn_1C820, texture_font_char_cn_1C830,\n    texture_font_char_cn_1C840, texture_font_char_cn_1C850, texture_font_char_cn_1C860, texture_font_char_cn_1C870,\n    texture_font_char_cn_1C880, texture_font_char_cn_1C890, texture_font_char_cn_1C8A0, texture_font_char_cn_1C8B0,\n    texture_font_char_cn_1C8C0, texture_font_char_cn_1C8D0, texture_font_char_cn_1C8E0, texture_font_char_cn_1C8F0,\n    texture_font_char_cn_1C900, texture_font_char_cn_1C910, texture_font_char_cn_1C920, texture_font_char_cn_1C930,\n    texture_font_char_cn_1C940, texture_font_char_cn_1C950, texture_font_char_cn_1C960, texture_font_char_cn_1C970,\n    texture_font_char_cn_1C980, texture_font_char_cn_1C990, texture_font_char_cn_1C9A0, texture_font_char_cn_1C9B0,\n    texture_font_char_cn_1C9C0, texture_font_char_cn_1C9D0, texture_font_char_cn_1C9E0, texture_font_char_cn_1C9F0,\n    texture_font_char_cn_1CA00, texture_font_char_cn_1CA10, texture_font_char_cn_1CA20, texture_font_char_cn_1CA30,\n    texture_font_char_cn_1CA40, texture_font_char_cn_1CA50, texture_font_char_cn_1CA60, texture_font_char_cn_1CA70,\n    texture_font_char_cn_1CA80, texture_font_char_cn_1CA90, texture_font_char_cn_1CAA0, texture_font_char_cn_1CAB0,\n    texture_font_char_cn_1CAC0, texture_font_char_cn_1CAD0, texture_font_char_cn_1CAE0, texture_font_char_cn_1CAF0,\n    texture_font_char_cn_1CB00, texture_font_char_cn_1CB10, texture_font_char_cn_1CB20, texture_font_char_cn_1CB30,\n    texture_font_char_cn_1CB40, texture_font_char_cn_1CB50, texture_font_char_cn_1CB60, texture_font_char_cn_1CB70,\n    texture_font_char_cn_1CB80, texture_font_char_cn_1CB90, texture_font_char_cn_1CBA0, texture_font_char_cn_1CBB0,\n    texture_font_char_cn_1CBC0, texture_font_char_cn_1CBD0, texture_font_char_cn_1CBE0, texture_font_char_cn_1CBF0,\n    texture_font_char_cn_1CC00, texture_font_char_cn_1CC10, texture_font_char_cn_1CC20, texture_font_char_cn_1CC30,\n    texture_font_char_cn_1CC40, texture_font_char_cn_1CC50, texture_font_char_cn_1CC60, texture_font_char_cn_1CC70,\n    texture_font_char_cn_1CC80, texture_font_char_cn_1CC90, texture_font_char_cn_1CCA0, texture_font_char_cn_1CCB0,\n    texture_font_char_cn_1CCC0, texture_font_char_cn_1CCD0, texture_font_char_cn_1CCE0, texture_font_char_cn_1CCF0,\n    texture_font_char_cn_1CD00, texture_font_char_cn_1CD10, texture_font_char_cn_1CD20, texture_font_char_cn_1CD30,\n    texture_font_char_cn_1CD40, texture_font_char_cn_1CD50, texture_font_char_cn_1CD60, texture_font_char_cn_1CD70,\n    texture_font_char_cn_1CD80, texture_font_char_cn_1CD90, texture_font_char_cn_1CDA0, texture_font_char_cn_1CDB0,\n    texture_font_char_cn_1CDC0, texture_font_char_cn_1CDD0, texture_font_char_cn_1CDE0, texture_font_char_cn_1CDF0,\n    texture_font_char_cn_1CE00, texture_font_char_cn_1CE10, texture_font_char_cn_1CE20, texture_font_char_cn_1CE30,\n    texture_font_char_cn_1CE40, texture_font_char_cn_1CE50, texture_font_char_cn_1CE60, texture_font_char_cn_1CE70,\n    texture_font_char_cn_1CE80, texture_font_char_cn_1CE90, texture_font_char_cn_1CEA0, texture_font_char_cn_1CEB0,\n    texture_font_char_cn_1CEC0, texture_font_char_cn_1CED0, texture_font_char_cn_1CEE0, texture_font_char_cn_1CEF0,\n    texture_font_char_cn_1CF00, texture_font_char_cn_1CF10, texture_font_char_cn_1CF20, texture_font_char_cn_1CF30,\n    texture_font_char_cn_1CF40, texture_font_char_cn_1CF50, texture_font_char_cn_1CF60, texture_font_char_cn_1CF70,\n    texture_font_char_cn_1CF80, texture_font_char_cn_1CF90, texture_font_char_cn_1CFA0, texture_font_char_cn_1CFB0,\n    texture_font_char_cn_1CFC0, texture_font_char_cn_1CFD0, texture_font_char_cn_1CFE0, texture_font_char_cn_1CFF0,\n    texture_font_char_cn_1D000, texture_font_char_cn_1D010, texture_font_char_cn_1D020, texture_font_char_cn_1D030,\n    texture_font_char_cn_1D040, texture_font_char_cn_1D050, texture_font_char_cn_1D060, texture_font_char_cn_1D070,\n    texture_font_char_cn_1D080, texture_font_char_cn_1D090, texture_font_char_cn_1D0A0, texture_font_char_cn_1D0B0,\n    texture_font_char_cn_1D0C0, texture_font_char_cn_1D0D0, texture_font_char_cn_1D0E0, texture_font_char_cn_1D0F0,\n    texture_font_char_cn_1D100, texture_font_char_cn_1D110, texture_font_char_cn_1D120, texture_font_char_cn_1D130,\n    texture_font_char_cn_1D140, texture_font_char_cn_1D150, texture_font_char_cn_1D160, texture_font_char_cn_1D170,\n    texture_font_char_cn_1D180, texture_font_char_cn_1D190, texture_font_char_cn_1D1A0, texture_font_char_cn_1D1B0,\n    texture_font_char_cn_1D1C0, texture_font_char_cn_1D1D0, texture_font_char_cn_1D1E0, texture_font_char_cn_1D1F0,\n    texture_font_char_cn_1D200, texture_font_char_cn_1D210, texture_font_char_cn_1D220, texture_font_char_cn_1D230,\n    texture_font_char_cn_1D240, texture_font_char_cn_1D250, texture_font_char_cn_1D260, texture_font_char_cn_1D270,\n    texture_font_char_cn_1D280, texture_font_char_cn_1D290, texture_font_char_cn_1D2A0, texture_font_char_cn_1D2B0,\n    texture_font_char_cn_1D2C0, texture_font_char_cn_1D2D0, texture_font_char_cn_1D2E0, texture_font_char_cn_1D2F0,\n    texture_font_char_cn_1D300, texture_font_char_cn_1D310, texture_font_char_cn_1D320, texture_font_char_cn_1D330,\n    texture_font_char_cn_1D340, texture_font_char_cn_1D350, texture_font_char_cn_1D360, texture_font_char_cn_1D370,\n    texture_font_char_cn_1D380, texture_font_char_cn_1D390, texture_font_char_cn_1D3A0, texture_font_char_cn_1D3B0,\n    texture_font_char_cn_1D3C0, texture_font_char_cn_1D3D0, texture_font_char_cn_1D3E0, texture_font_char_cn_1D3F0,\n    texture_font_char_cn_1D400, texture_font_char_cn_1D410, texture_font_char_cn_1D420, texture_font_char_cn_1D430,\n    texture_font_char_cn_1D440, texture_font_char_cn_1D450, texture_font_char_cn_1D460, texture_font_char_cn_1D470,\n    texture_font_char_cn_1D480, texture_font_char_cn_1D490, texture_font_char_cn_1D4A0, texture_font_char_cn_1D4B0,\n    texture_font_char_cn_1D4C0, texture_font_char_cn_1D4D0, texture_font_char_cn_1D4E0, texture_font_char_cn_1D4F0,\n    texture_font_char_cn_1D500, texture_font_char_cn_1D510, texture_font_char_cn_1D520, texture_font_char_cn_1D530,\n    texture_font_char_cn_1D540, texture_font_char_cn_1D550, texture_font_char_cn_1D560, texture_font_char_cn_1D570,\n    texture_font_char_cn_1D580, texture_font_char_cn_1D590, texture_font_char_cn_1D5A0, texture_font_char_cn_1D5B0,\n    texture_font_char_cn_1D5C0, texture_font_char_cn_1D5D0, texture_font_char_cn_1D5E0, texture_font_char_cn_1D5F0,\n    texture_font_char_cn_1D600, texture_font_char_cn_1D610, texture_font_char_cn_1D620, texture_font_char_cn_1D630,\n    texture_font_char_cn_1D640, texture_font_char_cn_1D650, texture_font_char_cn_1D660, texture_font_char_cn_1D670,\n    texture_font_char_cn_1D680, texture_font_char_cn_1D690, texture_font_char_cn_1D6A0, texture_font_char_cn_1D6B0,\n    texture_font_char_cn_1D6C0, texture_font_char_cn_1D6D0, texture_font_char_cn_1D6E0, texture_font_char_cn_1D6F0,\n    texture_font_char_cn_1D700, texture_font_char_cn_1D710, texture_font_char_cn_1D720, texture_font_char_cn_1D730,\n    texture_font_char_cn_1D740, texture_font_char_cn_1D750, texture_font_char_cn_1D760, texture_font_char_cn_1D770,\n    texture_font_char_cn_1D780, texture_font_char_cn_1D790, texture_font_char_cn_1D7A0, texture_font_char_cn_1D7B0,\n    texture_font_char_cn_1D7C0, texture_font_char_cn_1D7D0, texture_font_char_cn_1D7E0, texture_font_char_cn_1D7F0,\n    texture_font_char_cn_1D800, texture_font_char_cn_1D810, texture_font_char_cn_1D820, texture_font_char_cn_1D830,\n    texture_font_char_cn_1D840, texture_font_char_cn_1D850, texture_font_char_cn_1D860, texture_font_char_cn_1D870,\n    texture_font_char_cn_1D880, texture_font_char_cn_1D890, texture_font_char_cn_1D8A0, texture_font_char_cn_1D8B0,\n    texture_font_char_cn_1D8C0, texture_font_char_cn_1D8D0, texture_font_char_cn_1D8E0, texture_font_char_cn_1D8F0,\n    texture_font_char_cn_1D900, texture_font_char_cn_1D910, texture_font_char_cn_1D920, texture_font_char_cn_1D930,\n    texture_font_char_cn_1D940, texture_font_char_cn_1D950, texture_font_char_cn_1D960, texture_font_char_cn_1D970,\n    texture_font_char_cn_1D980, texture_font_char_cn_1D990, texture_font_char_cn_1D9A0, texture_font_char_cn_1D9B0,\n    texture_font_char_cn_1D9C0, texture_font_char_cn_1D9D0, texture_font_char_cn_1D9E0, texture_font_char_cn_1D9F0,\n    texture_font_char_cn_1DA00, texture_font_char_cn_1DA10, texture_font_char_cn_1DA20, texture_font_char_cn_1DA30,\n    texture_font_char_cn_1DA40, texture_font_char_cn_1DA50, texture_font_char_cn_1DA60, texture_font_char_cn_1DA70,\n    texture_font_char_cn_1DA80, texture_font_char_cn_1DA90, texture_font_char_cn_1DAA0, texture_font_char_cn_1DAB0,\n    texture_font_char_cn_1DAC0, texture_font_char_cn_1DAD0, texture_font_char_cn_1DAE0, texture_font_char_cn_1DAF0,\n    texture_font_char_cn_1DB00, texture_font_char_cn_1DB10, texture_font_char_cn_1DB20, texture_font_char_cn_1DB30,\n    texture_font_char_cn_1DB40, texture_font_char_cn_1DB50, texture_font_char_cn_1DB60, texture_font_char_cn_1DB70,\n    texture_font_char_cn_1DB80, texture_font_char_cn_1DB90, texture_font_char_cn_1DBA0, texture_font_char_cn_1DBB0,\n    texture_font_char_cn_1DBC0, texture_font_char_cn_1DBD0, texture_font_char_cn_1DBE0, texture_font_char_cn_1DBF0,\n    texture_font_char_cn_1DC00, texture_font_char_cn_1DC10, texture_font_char_cn_1DC20, texture_font_char_cn_1DC30,\n    texture_font_char_cn_1DC40, texture_font_char_cn_1DC50, texture_font_char_cn_1DC60, texture_font_char_cn_1DC70,\n    texture_font_char_cn_1DC80, texture_font_char_cn_1DC90, texture_font_char_cn_1DCA0, texture_font_char_cn_1DCB0,\n    texture_font_char_cn_1DCC0, texture_font_char_cn_1DCD0, texture_font_char_cn_1DCE0, texture_font_char_cn_1DCF0,\n    texture_font_char_cn_1DD00, texture_font_char_cn_1DD10, texture_font_char_cn_1DD20, texture_font_char_cn_1DD30,\n    texture_font_char_cn_1DD40, texture_font_char_cn_1DD50, texture_font_char_cn_1DD60, texture_font_char_cn_1DD70,\n    texture_font_char_cn_1DD80, texture_font_char_cn_1DD90, texture_font_char_cn_1DDA0, texture_font_char_cn_1DDB0,\n    texture_font_char_cn_1DDC0, texture_font_char_cn_1DDD0, texture_font_char_cn_1DDE0, texture_font_char_cn_1DDF0,\n    texture_font_char_cn_1DE00, texture_font_char_cn_1DE10, texture_font_char_cn_1DE20, texture_font_char_cn_1DE30,\n    texture_font_char_cn_1DE40, texture_font_char_cn_1DE50, texture_font_char_cn_1DE60, texture_font_char_cn_1DE70,\n    texture_font_char_cn_1DE80, texture_font_char_cn_1DE90, texture_font_char_cn_1DEA0, texture_font_char_cn_1DEB0,\n    texture_font_char_cn_1DEC0, texture_font_char_cn_1DED0, texture_font_char_cn_1DEE0, texture_font_char_cn_1DEF0,\n    texture_font_char_cn_1DF00, texture_font_char_cn_1DF10, texture_font_char_cn_1DF20, texture_font_char_cn_1DF30,\n    texture_font_char_cn_1DF40, texture_font_char_cn_1DF50, texture_font_char_cn_1DF60, texture_font_char_cn_1DF70,\n    texture_font_char_cn_1DF80, texture_font_char_cn_1DF90, texture_font_char_cn_1DFA0, texture_font_char_cn_1DFB0,\n    texture_font_char_cn_1DFC0, texture_font_char_cn_1DFD0, texture_font_char_cn_1DFE0, texture_font_char_cn_1DFF0,\n    texture_font_char_cn_1E000, texture_font_char_cn_1E010, texture_font_char_cn_1E020, texture_font_char_cn_1E030,\n    texture_font_char_cn_1E040, texture_font_char_cn_1E050, texture_font_char_cn_1E060, texture_font_char_cn_1E070,\n    texture_font_char_cn_1E080, texture_font_char_cn_1E090, texture_font_char_cn_1E0A0, texture_font_char_cn_1E0B0,\n    texture_font_char_cn_1E0C0, texture_font_char_cn_1E0D0, texture_font_char_cn_1E0E0, texture_font_char_cn_1E0F0,\n    texture_font_char_cn_1E100, texture_font_char_cn_1E110, texture_font_char_cn_1E120, texture_font_char_cn_1E130,\n    texture_font_char_cn_1E140, texture_font_char_cn_1E150, texture_font_char_cn_1E160, texture_font_char_cn_1E170,\n    texture_font_char_cn_1E180, texture_font_char_cn_1E190, texture_font_char_cn_1E1A0, texture_font_char_cn_1E1B0,\n    texture_font_char_cn_1E1C0, texture_font_char_cn_1E1D0, texture_font_char_cn_1E1E0, texture_font_char_cn_1E1F0,\n    texture_font_char_cn_1E200, texture_font_char_cn_1E210, texture_font_char_cn_1E220, texture_font_char_cn_1E230,\n    texture_font_char_cn_1E240, texture_font_char_cn_1E250, texture_font_char_cn_1E260, texture_font_char_cn_1E270,\n    texture_font_char_cn_1E280, texture_font_char_cn_1E290, texture_font_char_cn_1E2A0, texture_font_char_cn_1E2B0,\n    texture_font_char_cn_1E2C0, texture_font_char_cn_1E2D0, texture_font_char_cn_1E2E0, texture_font_char_cn_1E2F0,\n    texture_font_char_cn_1E300, texture_font_char_cn_1E310, texture_font_char_cn_1E320, texture_font_char_cn_1E330,\n    texture_font_char_cn_1E340, texture_font_char_cn_1E350, texture_font_char_cn_1E360, texture_font_char_cn_1E370,\n    texture_font_char_cn_1E380, texture_font_char_cn_1E390, texture_font_char_cn_1E3A0, texture_font_char_cn_1E3B0,\n    texture_font_char_cn_1E3C0, texture_font_char_cn_1E3D0, texture_font_char_cn_1E3E0, texture_font_char_cn_1E3F0,\n    texture_font_char_cn_1E400, texture_font_char_cn_1E410, texture_font_char_cn_1E420, texture_font_char_cn_1E430,\n    texture_font_char_cn_1E440, texture_font_char_cn_1E450, texture_font_char_cn_1E460, texture_font_char_cn_1E470,\n    texture_font_char_cn_1E480, texture_font_char_cn_1E490, texture_font_char_cn_1E4A0, texture_font_char_cn_1E4B0,\n    texture_font_char_cn_1E4C0, texture_font_char_cn_1E4D0, texture_font_char_cn_1E4E0, texture_font_char_cn_1E4F0,\n    texture_font_char_cn_1E500, texture_font_char_cn_1E510, texture_font_char_cn_1E520, texture_font_char_cn_1E530,\n    texture_font_char_cn_1E540, texture_font_char_cn_1E550, texture_font_char_cn_1E560, texture_font_char_cn_1E570,\n    texture_font_char_cn_1E580, texture_font_char_cn_1E590, texture_font_char_cn_1E5A0, texture_font_char_cn_1E5B0,\n    texture_font_char_cn_1E5C0, texture_font_char_cn_1E5D0, texture_font_char_cn_1E5E0, texture_font_char_cn_1E5F0,\n    texture_font_char_cn_1E600, texture_font_char_cn_1E610, texture_font_char_cn_1E620, texture_font_char_cn_1E630,\n    texture_font_char_cn_1E640, texture_font_char_cn_1E650, texture_font_char_cn_1E660, texture_font_char_cn_1E670,\n    texture_font_char_cn_1E680, texture_font_char_cn_1E690, texture_font_char_cn_1E6A0, texture_font_char_cn_1E6B0,\n    texture_font_char_cn_1E6C0, texture_font_char_cn_1E6D0, texture_font_char_cn_1E6E0, texture_font_char_cn_1E6F0,\n    texture_font_char_cn_1E700, texture_font_char_cn_1E710, texture_font_char_cn_1E720, texture_font_char_cn_1E730,\n    texture_font_char_cn_1E740, texture_font_char_cn_1E750, texture_font_char_cn_1E760, texture_font_char_cn_1E770,\n    texture_font_char_cn_1E780, texture_font_char_cn_1E790, texture_font_char_cn_1E7A0, texture_font_char_cn_1E7B0,\n    texture_font_char_cn_1E7C0, texture_font_char_cn_1E7D0, texture_font_char_cn_1E7E0, texture_font_char_cn_1E7F0,\n    texture_font_char_cn_1E800, texture_font_char_cn_1E810, texture_font_char_cn_1E820, texture_font_char_cn_1E830,\n    texture_font_char_cn_1E840, texture_font_char_cn_1E850, texture_font_char_cn_1E860, texture_font_char_cn_1E870,\n    texture_font_char_cn_1E880, texture_font_char_cn_1E890, texture_font_char_cn_1E8A0, texture_font_char_cn_1E8B0,\n    texture_font_char_cn_1E8C0, texture_font_char_cn_1E8D0, texture_font_char_cn_1E8E0, texture_font_char_cn_1E8F0,\n    texture_font_char_cn_1E900, texture_font_char_cn_1E910, texture_font_char_cn_1E920, texture_font_char_cn_1E930,\n    texture_font_char_cn_1E940, texture_font_char_cn_1E950, texture_font_char_cn_1E960, texture_font_char_cn_1E970,\n    texture_font_char_cn_1E980, texture_font_char_cn_1E990, texture_font_char_cn_1E9A0, texture_font_char_cn_1E9B0,\n    texture_font_char_cn_1E9C0, texture_font_char_cn_1E9D0, texture_font_char_cn_1E9E0, texture_font_char_cn_1E9F0,\n    texture_font_char_cn_1EA00, texture_font_char_cn_1EA10, texture_font_char_cn_1EA20, texture_font_char_cn_1EA30,\n    texture_font_char_cn_1EA40, texture_font_char_cn_1EA50, texture_font_char_cn_1EA60, texture_font_char_cn_1EA70,\n    texture_font_char_cn_1EA80, texture_font_char_cn_1EA90, texture_font_char_cn_1EAA0, texture_font_char_cn_1EAB0,\n    texture_font_char_cn_1EAC0, texture_font_char_cn_1EAD0, texture_font_char_cn_1EAE0, texture_font_char_cn_1EAF0,\n    texture_font_char_cn_1EB00, texture_font_char_cn_1EB10, texture_font_char_cn_1EB20, texture_font_char_cn_1EB30,\n    texture_font_char_cn_1EB40, texture_font_char_cn_1EB50, texture_font_char_cn_1EB60, texture_font_char_cn_1EB70,\n    texture_font_char_cn_1EB80, texture_font_char_cn_1EB90, texture_font_char_cn_1EBA0, texture_font_char_cn_1EBB0,\n    texture_font_char_cn_1EBC0, texture_font_char_cn_1EBD0, texture_font_char_cn_1EBE0, texture_font_char_cn_1EBF0,\n    texture_font_char_cn_1EC00, texture_font_char_cn_1EC10, texture_font_char_cn_1EC20, texture_font_char_cn_1EC30,\n    texture_font_char_cn_1EC40, texture_font_char_cn_1EC50, texture_font_char_cn_1EC60, texture_font_char_cn_1EC70,\n    texture_font_char_cn_1EC80, texture_font_char_cn_1EC90, texture_font_char_cn_1ECA0, texture_font_char_cn_1ECB0,\n    texture_font_char_cn_1ECC0, texture_font_char_cn_1ECD0, texture_font_char_cn_1ECE0, texture_font_char_cn_1ECF0,\n    texture_font_char_cn_1ED00, texture_font_char_cn_1ED10, texture_font_char_cn_1ED20, texture_font_char_cn_1ED30,\n    texture_font_char_cn_1ED40, texture_font_char_cn_1ED50, texture_font_char_cn_1ED60, texture_font_char_cn_1ED70,\n    texture_font_char_cn_1ED80, texture_font_char_cn_1ED90, texture_font_char_cn_1EDA0, texture_font_char_cn_1EDB0,\n    texture_font_char_cn_1EDC0, texture_font_char_cn_1EDD0, texture_font_char_cn_1EDE0, texture_font_char_cn_1EDF0,\n    texture_font_char_cn_1EE00, texture_font_char_cn_1EE10, texture_font_char_cn_1EE20, texture_font_char_cn_1EE30,\n    texture_font_char_cn_1EE40, texture_font_char_cn_1EE50, texture_font_char_cn_1EE60, texture_font_char_cn_1EE70,\n#endif // VERSION_CN\n#elif defined(VERSION_JP) || defined(VERSION_SH)\n    texture_font_char_jp_0, texture_font_char_jp_1, texture_font_char_jp_2, texture_font_char_jp_3,\n    texture_font_char_jp_4, texture_font_char_jp_5, texture_font_char_jp_6, texture_font_char_jp_7,\n    texture_font_char_jp_8, texture_font_char_jp_9, texture_font_char_jp_A, texture_font_char_jp_B,\n    texture_font_char_jp_C, texture_font_char_jp_D, texture_font_char_jp_E, texture_font_char_jp_F,\n    texture_font_char_jp_G, texture_font_char_jp_H, texture_font_char_jp_I, texture_font_char_jp_J,\n    texture_font_char_jp_K, texture_font_char_jp_L, texture_font_char_jp_M, texture_font_char_jp_N,\n    texture_font_char_jp_O, texture_font_char_jp_P, texture_font_char_jp_Q, texture_font_char_jp_R,\n    texture_font_char_jp_S, texture_font_char_jp_T, texture_font_char_jp_U, texture_font_char_jp_V,\n    texture_font_char_jp_W, texture_font_char_jp_X, texture_font_char_jp_Y, texture_font_char_jp_Z,\n                      0x0,                   0x0,                   0x0,                   0x0,\n                      0x0,                   0x0,                   0x0,                   0x0,\n                      0x0,                   0x0,                   0x0,                   0x0,\n                      0x0,                   0x0,                   0x0,                   0x0,\n                      0x0,                   0x0,                   0x0,                   0x0,\n                      0x0,                   0x0,                   0x0,                   0x0,\n                      0x0,                   0x0,                   0x0,                   0x0,\n    texture_font_char_jp_hiragana_a, texture_font_char_jp_hiragana_i, texture_font_char_jp_hiragana_u, texture_font_char_jp_hiragana_c,\n    texture_font_char_jp_hiragana_o, texture_font_char_jp_hiragana_ka, texture_font_char_jp_hiragana_ki, texture_font_char_jp_hiragana_ku,\n    texture_font_char_jp_hiragana_ke, texture_font_char_jp_hiragana_ko, texture_font_char_jp_hiragana_sa, texture_font_char_jp_hiragana_shi,\n    texture_font_char_jp_hiragana_su, texture_font_char_jp_hiragana_se, texture_font_char_jp_hiragana_so, texture_font_char_jp_hiragana_ta,\n    texture_font_char_jp_hiragana_chi, texture_font_char_jp_hiragana_tsu, texture_font_char_jp_hiragana_te, texture_font_char_jp_hiragana_to,\n    texture_font_char_jp_hiragana_na, texture_font_char_jp_hiragana_ni, texture_font_char_jp_hiragana_nu, texture_font_char_jp_hiragana_ne,\n    texture_font_char_jp_hiragana_no, texture_font_char_jp_hiragana_ha, texture_font_char_jp_hiragana_hi, texture_font_char_jp_hiragana_hu,\n    texture_font_char_jp_hiragana_he, texture_font_char_jp_hiragana_ho, texture_font_char_jp_hiragana_ma, texture_font_char_jp_hiragana_mi,\n    texture_font_char_jp_hiragana_mu, texture_font_char_jp_hiragana_me, texture_font_char_jp_hiragana_mo, texture_font_char_jp_hiragana_ya,\n    texture_font_char_jp_hiragana_yu, texture_font_char_jp_hiragana_yo, texture_font_char_jp_hiragana_ra, texture_font_char_jp_hiragana_ri,\n    texture_font_char_jp_hiragana_ru, texture_font_char_jp_hiragana_re, texture_font_char_jp_hiragana_ro, texture_font_char_jp_hiragana_wa,\n    texture_font_char_jp_hiragana_wo, texture_font_char_jp_hiragana_n,                   0x0, texture_font_char_jp_comma,\n    texture_font_char_jp_katakana_a, texture_font_char_jp_katakana_i, texture_font_char_jp_katakana_u, texture_font_char_jp_katakana_e,\n    texture_font_char_jp_katakana_o, texture_font_char_jp_katakana_ka, texture_font_char_jp_katakana_ki, texture_font_char_jp_katakana_ku,\n    texture_font_char_jp_katakana_ke, texture_font_char_jp_katakana_ko, texture_font_char_jp_katakana_sa, texture_font_char_jp_katakana_shi,\n    texture_font_char_jp_katakana_su, texture_font_char_jp_katakana_se, texture_font_char_jp_katakana_so, texture_font_char_jp_katakana_ta,\n    texture_font_char_jp_katakana_chi, texture_font_char_jp_katakana_tsu, texture_font_char_jp_katakana_te, texture_font_char_jp_katakana_to,\n    texture_font_char_jp_katakana_na, texture_font_char_jp_katakana_ni, texture_font_char_jp_katakana_nu, texture_font_char_jp_katakana_ne,\n    texture_font_char_jp_katakana_no, texture_font_char_jp_katakana_ha, texture_font_char_jp_katakana_hi, texture_font_char_jp_katakana_hu,\n    texture_font_char_jp_katakana_he, texture_font_char_jp_katakana_ho, texture_font_char_jp_katakana_ma, texture_font_char_jp_katakana_mi,\n    texture_font_char_jp_katakana_mu, texture_font_char_jp_katakana_me, texture_font_char_jp_katakana_mo, texture_font_char_jp_katakana_ya,\n    texture_font_char_jp_katakana_yu, texture_font_char_jp_katakana_yo, texture_font_char_jp_katakana_ra, texture_font_char_jp_katakana_ri,\n    texture_font_char_jp_katakana_ru, texture_font_char_jp_katakana_re, texture_font_char_jp_katakana_ro, texture_font_char_jp_katakana_wa,\n                      0x0, texture_font_char_jp_katakana_n,                   0x0, texture_font_char_jp_long_vowel,\n    texture_font_char_jp_hiragana_small_e, texture_font_char_jp_hiragana_small_tsu, texture_font_char_jp_hiragana_small_ya, texture_font_char_jp_hiragana_small_yu,\n    texture_font_char_jp_hiragana_small_yo, texture_font_char_jp_hiragana_small_a, texture_font_char_jp_hiragana_small_i, texture_font_char_jp_hiragana_small_u,\n    texture_font_char_jp_hiragana_small_o,                   0x0,                   0x0,                   0x0,\n                      0x0,                   0x0,                   0x0,                   0x0,\n                      0x0,                   0x0,                   0x0,                   0x0,\n                      0x0,                   0x0,                   0x0,                   0x0,\n                      0x0,                   0x0,                   0x0,                   0x0,\n                      0x0,                   0x0,                   0x0,                   0x0,\n                      0x0,                   0x0,                   0x0,                   0x0,\n                      0x0,                   0x0,                   0x0,                   0x0,\n                      0x0,                   0x0,                   0x0,                   0x0,\n                      0x0,                   0x0,                   0x0,                   0x0,\n    texture_font_char_jp_katakana_small_e, texture_font_char_jp_katakana_small_tsu, texture_font_char_jp_katakana_small_ya, texture_font_char_jp_katakana_small_yu,\n    texture_font_char_jp_katakana_small_yo, texture_font_char_jp_katakana_small_a, texture_font_char_jp_katakana_small_i, texture_font_char_jp_katakana_small_u,\n    texture_font_char_jp_katakana_small_o,                   0x0,                   0x0,                   0x0,\n                      0x0,                   0x0,                   0x0,                   0x0,\n                      0x0, texture_font_char_jp_open_parentheses, texture_font_char_jp_close_open_parentheses, texture_font_char_jp_close_parentheses,\n    texture_font_char_jp_left_right_arrow,                   0x0,                   0x0,                   0x0,\n                      0x0,                   0x0,                   0x0,                   0x0,\n                      0x0,                   0x0,                   0x0,                   0x0,\n    texture_font_char_jp_dakuten, texture_font_char_jp_handakuten, texture_font_char_jp_exclamation, texture_font_char_jp_percent,\n    texture_font_char_jp_question, texture_font_char_jp_double_quotation_open, texture_font_char_jp_double_quotation_close, texture_font_char_jp_wave_dash,\n    texture_font_char_jp_ellipsis, texture_font_char_jp_coin, texture_font_char_jp_star_filled, texture_font_char_jp_multiply,\n    texture_font_char_jp_interpunct, texture_font_char_jp_star_hollow,                   0x0,                   0x0,\n#endif\n};\n\n// credits font LUT 0x02008738-0x020087CB\nconst Texture *const main_credits_font_lut[] = {\n                       0x0,                    0x0,                    0x0, texture_credits_char_3,\n    texture_credits_char_4,                    0x0, texture_credits_char_6,                    0x0,\n                       0x0,                    0x0, texture_credits_char_A, texture_credits_char_B,\n    texture_credits_char_C, texture_credits_char_D, texture_credits_char_E, texture_credits_char_F,\n    texture_credits_char_G, texture_credits_char_H, texture_credits_char_I, texture_credits_char_J,\n    texture_credits_char_K, texture_credits_char_L, texture_credits_char_M, texture_credits_char_N,\n    texture_credits_char_O, texture_credits_char_P, texture_credits_char_Q, texture_credits_char_R,\n    texture_credits_char_S, texture_credits_char_T, texture_credits_char_U, texture_credits_char_V,\n    texture_credits_char_W, texture_credits_char_X, texture_credits_char_Y, texture_credits_char_Z,\n    texture_credits_char_period,\n};\n\n// HUD camera table 0x020087CC-0x020087E3\nconst Texture *const main_hud_camera_lut[] = {\n    texture_hud_char_camera, texture_hud_char_mario_head, texture_hud_char_lakitu, texture_hud_char_no_camera,\n    texture_hud_char_arrow_up, texture_hud_char_arrow_down,\n};\n\n#include \"text/debug_text.raw.inc.c\"\n\n// If you change the language here, the following Makefile rule also needs to\n// change, to generate the right version of define_text.inc.c:\n// $(BUILD_DIR)/bin/segment2.o: $(BUILD_DIR)/text/$(VERSION)/define_text.inc.c\n#if defined(VERSION_JP) || defined(VERSION_SH)\n#include \"text/jp/define_text.inc.c\"\n#elif defined(VERSION_US)\n#include \"text/us/define_text.inc.c\"\n#elif defined(VERSION_CN)\n#include \"text/cn/define_text.inc.c\"\n#endif\n\nUNUSED static const u64 segment2_unused_0 = 0;\n\n// 0x0200EC60 - 0x0200EC98\nconst Gfx dl_hud_img_begin[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_COPY),\n    gsDPSetTexturePersp(G_TP_NONE),\n    gsDPSetAlphaCompare(G_AC_THRESHOLD),\n    gsDPSetBlendColor(255, 255, 255, 255),\n#if defined(VERSION_JP) || defined(VERSION_US)\n    gsDPSetRenderMode(G_RM_AA_XLU_SURF, G_RM_AA_XLU_SURF2),\n#else\n    gsDPSetRenderMode(G_RM_NOOP, G_RM_NOOP2),\n#endif\n#ifdef VERSION_EU\n    gsDPSetTextureFilter(G_TF_POINT),\n#endif\n    gsSPEndDisplayList(),\n};\n\n// 0x0200EC98 - 0x0200ECC8\nconst Gfx dl_hud_img_load_tex_block[] = {\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 16 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (16 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x0200ECC8 - 0x0200ED00\nconst Gfx dl_hud_img_end[] = {\n    gsDPPipeSync(),\n    gsDPSetTexturePersp(G_TP_PERSP),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetAlphaCompare(G_AC_NONE),\n#ifdef VERSION_EU\n    gsDPSetTextureFilter(G_TF_BILERP),\n#endif\n    gsDPSetCycleType(G_CYC_1CYCLE),\n#if defined(VERSION_JP) || defined(VERSION_US)\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n#endif\n    gsSPEndDisplayList(),\n};\n\n// 0x0200ED00 - 0x0200ED38\nconst Gfx dl_rgba16_text_begin[] = {\n    gsDPPipeSync(),\n    gsDPSetTexturePersp(G_TP_NONE),\n    gsDPSetCombineMode(G_CC_FADEA, G_CC_FADEA),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsDPSetRenderMode(G_RM_AA_XLU_SURF, G_RM_AA_XLU_SURF2),\n    gsDPSetTextureFilter(G_TF_POINT),\n    gsSPEndDisplayList(),\n};\n\n// 0x0200ED38 - 0x0200ED68\nconst Gfx dl_rgba16_load_tex_block[] = {\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 16 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (16 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x0200ED68 - 0x0200EDA8\nconst Gfx dl_rgba16_text_end[] = {\n    gsDPPipeSync(),\n    gsDPSetTexturePersp(G_TP_PERSP),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsDPSetTextureFilter(G_TF_BILERP),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsSPEndDisplayList(),\n};\n\n// 0x0200EDA8 - 0x0200EDE8\nstatic const Vtx vertex_text_bg_box[] = {\n    {{{     0,    -80,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   130,    -80,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   130,      0,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0200EDE8 - 0x0200EE28\nconst Gfx dl_draw_text_bg_box[] = {\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetCombineMode(G_CC_FADE, G_CC_FADE),\n    gsDPSetRenderMode(G_RM_XLU_SURF, G_RM_XLU_SURF2),\n    gsSPVertex(vertex_text_bg_box, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n#ifndef VERSION_EU\n// 0x0200EE28 - 0x0200EE68\nstatic const Vtx vertex_ia8_char[] = {\n#if defined(VERSION_JP) || defined(VERSION_SH)\n    {{{     0,      0,      0}, 0, {     0,   1024}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     8,      0,      0}, 0, {   512,   1024}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     8,     16,      0}, 0, {   512,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,     16,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n#elif defined(VERSION_CN)\n    {{{     0,      0,      0}, 0, {     0,    256}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     8,      0,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     8,     16,      0}, 0, {   512,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,     16,      0}, 0, {   512,    256}, {0xff, 0xff, 0xff, 0xff}}},\n#else\n    {{{     0,      0,      0}, 0, {     0,    256}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     8,      0,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     8,     16,      0}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,     16,      0}, 0, {   480,    256}, {0xff, 0xff, 0xff, 0xff}}},\n#endif\n};\n// !EU\n#endif\n\n#ifdef VERSION_EU\n// 0x020073B0\nconst Gfx dl_ia_text_begin[] = {\n    gsDPPipeSync(),\n    gsDPSetTexturePersp(G_TP_NONE),\n    gsDPSetCombineMode(G_CC_FADEA, G_CC_FADEA),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsDPSetRenderMode(G_RM_XLU_SURF, G_RM_XLU_SURF2),\n    gsDPSetTextureFilter(G_TF_POINT),\n    gsSPEndDisplayList(),\n};\n\n// 0x020073E8 - 0x02007418\nconst Gfx dl_ia_text_tex_settings[] = {\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_MIRROR, 3, G_TX_NOLOD, G_TX_WRAP | G_TX_MIRROR, 4, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, ((16 * 8 + G_IM_SIZ_4b_INCR) >> G_IM_SIZ_4b_SHIFT) - 1, CALC_DXT(16, G_IM_SIZ_4b_BYTES)),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_4b, 1, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_MIRROR, 3, G_TX_NOLOD, G_TX_WRAP | G_TX_MIRROR, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (8 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x02007418 - 0x02007450\nconst Gfx dl_ia_text_end[] = {\n    gsDPPipeSync(),\n    gsDPSetTexturePersp(G_TP_PERSP),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsDPSetTextureFilter(G_TF_BILERP),\n    gsSPEndDisplayList(),\n};\n\n#elif defined(VERSION_US) || defined(VERSION_CN)\nconst Gfx dl_ia_text_begin[] = {\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetCombineMode(G_CC_FADEA, G_CC_FADEA),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsDPSetRenderMode(G_RM_XLU_SURF, G_RM_XLU_SURF2),\n    gsDPSetTextureFilter(G_TF_POINT),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsSPEndDisplayList(),\n};\n\nconst Gfx dl_ia_text_tex_settings[] = {\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 3, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, ((16 * 8 + G_IM_SIZ_4b_INCR) >> G_IM_SIZ_4b_SHIFT) - 1, CALC_DXT(16, G_IM_SIZ_4b_BYTES)),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_4b, 1, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 3, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (8 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPVertex(vertex_ia8_char, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0, 0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n#else\n// 0x0200EE68 - 0x0200EEA8\nconst Gfx dl_ia_text_begin[] = {\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetCombineMode(G_CC_FADEA, G_CC_FADEA),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsDPSetRenderMode(G_RM_XLU_SURF, G_RM_XLU_SURF2),\n    gsDPSetTextureFilter(G_TF_POINT),\n    gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),\n    gsSPEndDisplayList(),\n};\n\n// 0x0200EEA8 - 0x0200EEF0\nconst Gfx dl_ia_text_tex_settings[] = {\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_8b, 0, 0, G_TX_LOADTILE, 0, G_TX_CLAMP, 4, G_TX_NOLOD, G_TX_CLAMP, 3, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 8 * 16 - 1, CALC_DXT(8, G_IM_SIZ_8b_BYTES)),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_8b, 1, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 4, G_TX_NOLOD, G_TX_CLAMP, 3, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (8 - 1) << G_TEXTURE_IMAGE_FRAC, (16 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPVertex(vertex_ia8_char, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0, 0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n#endif\n\n#ifndef VERSION_EU\n// 0x0200EEF0 - 0x0200EF30\nconst Gfx dl_ia_text_end[] = {\n    gsDPPipeSync(),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPSetGeometryMode(G_LIGHTING | G_SHADING_SMOOTH),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetTextureFilter(G_TF_BILERP),\n    gsSPEndDisplayList(),\n};\n#endif\n\n// 0x0200EF30 - 0x0200EF60\nstatic const Vtx vertex_triangle[] = {\n    {{{     0,      0,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     8,      8,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,     16,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0200EF60 - 0x0200EFB0\nconst Gfx dl_draw_triangle[] = {\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetCombineMode(G_CC_FADE, G_CC_FADE),\n    gsDPSetRenderMode(G_RM_XLU_SURF, G_RM_XLU_SURF2),\n    gsDPSetTextureFilter(G_TF_POINT),\n    gsSPVertex(vertex_triangle, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0200EFB0 - 0x0200EFF0\nstatic const Vtx vertex_billboard_num[] = {\n    {{{   -32,    -32,      0}, 0, {     0,   1024}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    32,    -32,      0}, 0, {  1024,   1024}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    32,     32,      0}, 0, {  1024,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -32,     32,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0200EFF0 - 0x0200F038\nconst Gfx dl_billboard_num_begin[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 4, G_TX_NOLOD, G_TX_CLAMP, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (16 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x0200F038 - 0x0200F078\nconst Gfx dl_billboard_num_end[] = {\n    gsSPVertex(vertex_billboard_num, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x0200F078 - 0x0200F0A8\nconst Gfx dl_billboard_num_0[] = {\n    gsSPDisplayList(dl_billboard_num_begin),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_hud_char_0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 16 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(dl_billboard_num_end),\n    gsSPEndDisplayList(),\n};\n\n// 0x0200F0A8 - 0x0200F0D8\nconst Gfx dl_billboard_num_1[] = {\n    gsSPDisplayList(dl_billboard_num_begin),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_hud_char_1),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 16 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(dl_billboard_num_end),\n    gsSPEndDisplayList(),\n};\n\n// 0x0200F0D8 - 0x0200F108\nconst Gfx dl_billboard_num_2[] = {\n    gsSPDisplayList(dl_billboard_num_begin),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_hud_char_2),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 16 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(dl_billboard_num_end),\n    gsSPEndDisplayList(),\n};\n\n// 0x0200F108 - 0x0200F138\nconst Gfx dl_billboard_num_3[] = {\n    gsSPDisplayList(dl_billboard_num_begin),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_hud_char_3),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 16 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(dl_billboard_num_end),\n    gsSPEndDisplayList(),\n};\n\n// 0x0200F138 - 0x0200F168\nconst Gfx dl_billboard_num_4[] = {\n    gsSPDisplayList(dl_billboard_num_begin),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_hud_char_4),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 16 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(dl_billboard_num_end),\n    gsSPEndDisplayList(),\n};\n\n// 0x0200F168 - 0x0200F198\nconst Gfx dl_billboard_num_5[] = {\n    gsSPDisplayList(dl_billboard_num_begin),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_hud_char_5),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 16 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(dl_billboard_num_end),\n    gsSPEndDisplayList(),\n};\n\n// 0x0200F198 - 0x0200F1C8\nconst Gfx dl_billboard_num_6[] = {\n    gsSPDisplayList(dl_billboard_num_begin),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_hud_char_6),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 16 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(dl_billboard_num_end),\n    gsSPEndDisplayList(),\n};\n\n// 0x0200F1C8 - 0x0200F1F8\nconst Gfx dl_billboard_num_7[] = {\n    gsSPDisplayList(dl_billboard_num_begin),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_hud_char_7),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 16 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(dl_billboard_num_end),\n    gsSPEndDisplayList(),\n};\n\n// 0x0200F1F8 - 0x0200F228\nconst Gfx dl_billboard_num_8[] = {\n    gsSPDisplayList(dl_billboard_num_begin),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_hud_char_8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 16 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(dl_billboard_num_end),\n    gsSPEndDisplayList(),\n};\n\n// 0x0200F228 - 0x0200F258\nconst Gfx dl_billboard_num_9[] = {\n    gsSPDisplayList(dl_billboard_num_begin),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_hud_char_9),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 16 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(dl_billboard_num_end),\n    gsSPEndDisplayList(),\n};\n\nALIGNED8 static const Texture texture_shadow_quarter_circle[] = {\n#include \"textures/segment2/shadow_quarter_circle.ia8.inc.c\"\n};\n\nALIGNED8 static const Texture texture_shadow_quarter_square[] = {\n#include \"textures/segment2/shadow_quarter_square.ia8.inc.c\"\n};\n\nconst Texture texture_transition_star_half[] = {\n#include \"textures/segment2/segment2.0F458.ia8.inc.c\"\n};\n\nconst Texture texture_transition_circle_half[] = {\n#include \"textures/segment2/segment2.0FC58.ia8.inc.c\"\n};\n\nconst Texture texture_transition_mario[] = {\n#include \"textures/segment2/segment2.10458.ia8.inc.c\"\n};\n\nconst Texture texture_transition_bowser_half[] = {\n#include \"textures/segment2/segment2.11458.ia8.inc.c\"\n};\n\nconst Texture texture_waterbox_water[] = {\n#include \"textures/segment2/segment2.11C58.rgba16.inc.c\"\n};\n\nconst Texture texture_waterbox_jrb_water[] = {\n#include \"textures/segment2/segment2.12458.rgba16.inc.c\"\n};\n\nconst Texture texture_waterbox_unknown_water[] = {\n#include \"textures/segment2/segment2.12C58.rgba16.inc.c\"\n};\n\nconst Texture texture_waterbox_mist[] = {\n#include \"textures/segment2/segment2.13458.ia16.inc.c\"\n};\n\nconst Texture texture_waterbox_lava[] = {\n#include \"textures/segment2/segment2.13C58.rgba16.inc.c\"\n};\n\n// Unreferenced light group\nUNUSED static const Lights1 segment2_lights_unused = gdSPDefLights1(\n    0x40, 0x40, 0x40,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x02014470 - 0x020144B0\nstatic const Mtx matrix_identity = {\n#ifndef GBI_FLOATS\n    {{0x00010000, 0x00000000,\n      0x00000001, 0x00000000},\n     {0x00000000, 0x00010000,\n      0x00000000, 0x00000001},\n     {0x00000000, 0x00000000,\n      0x00000000, 0x00000000},\n     {0x00000000, 0x00000000,\n      0x00000000, 0x00000000}}\n#else\n    {{1.0f, 0.0f, 0.0f, 0.0f},\n    {0.0f, 1.0f, 0.0f, 0.0f},\n    {0.0f, 0.0f, 1.0f, 0.0f},\n    {0.0f, 0.0f, 0.0f, 1.0f}}\n#endif\n};\n\n\n// 0x020144B0 - 0x020144F0\nstatic const Mtx matrix_fullscreen = {\n#ifndef GBI_FLOATS\n    {{0x00000000, 0x00000000,\n      0x00000000, 0x00000000},\n     {0x00000000, 0xffff0000,\n      0xffffffff, 0xffff0001},\n     {((65536 * 2 / SCREEN_WIDTH) << 16) | 0, 0x00000000,\n      (0 << 16) | (65536 * 2 / SCREEN_HEIGHT), 0x00000000},\n     {0x00000000, 0x00000000,\n      0x00000000, 0x00000000}}\n#else\n    {{2.0f / SCREEN_WIDTH, 0.0f, 0.0f, 0.0f},\n    {0.0f, 2.0f / SCREEN_HEIGHT, 0.0f, 0.0f},\n    {0.0f, 0.0f, -1.0f, 0.0f},\n    {-1.0f, -1.0f, -1.0f, 1.0f}}\n#endif\n};\n\n\n// 0x020144F0 - 0x02014508\nconst Gfx dl_draw_quad_verts_0123[] = {\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x02014508 - 0x02014520\nconst Gfx dl_draw_quad_verts_4567[] = {\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\nconst Gfx dl_shadow_begin[] = {\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsSPEndDisplayList(),\n};\n\nconst Gfx dl_shadow_circle[] = {\n    gsSPDisplayList(dl_shadow_begin),\n    gsDPLoadTextureBlock(texture_shadow_quarter_circle, G_IM_FMT_IA, G_IM_SIZ_8b, 16, 16, 0, G_TX_WRAP | G_TX_MIRROR, G_TX_WRAP | G_TX_MIRROR, 4, 4, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPEndDisplayList(),\n};\n\nconst Gfx dl_shadow_square[] = {\n    gsSPDisplayList(dl_shadow_begin),\n    gsDPLoadTextureBlock(texture_shadow_quarter_square, G_IM_FMT_IA, G_IM_SIZ_8b, 16, 16, 0, G_TX_WRAP | G_TX_MIRROR, G_TX_WRAP | G_TX_MIRROR, 4, 4, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPEndDisplayList(),\n};\n\n// 0x020145D8 - 0x02014620\nconst Gfx dl_shadow_9_verts[] = {\n    gsSP2Triangles( 0,  3,  4, 0x0,  0,  4,  1, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 4,  7,  8, 0x0,  4,  8,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x02014620 - 0x02014638\nconst Gfx dl_shadow_4_verts[] = {\n    gsSP2Triangles( 0,  2,  1, 0x0,  1,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x02014638 - 0x02014660\nconst Gfx dl_shadow_end[] = {\n    gsDPPipeSync(),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x02014660 - 0x02014698\nconst Gfx dl_proj_mtx_fullscreen[] = {\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsSPMatrix(&matrix_identity, G_MTX_PROJECTION | G_MTX_LOAD | G_MTX_NOPUSH),\n    gsSPMatrix(&matrix_fullscreen, G_MTX_PROJECTION | G_MTX_MUL | G_MTX_NOPUSH),\n    gsSPMatrix(&matrix_identity, G_MTX_MODELVIEW | G_MTX_LOAD | G_MTX_NOPUSH),\n    gsSPPerspNormalize(0xFFFF),\n    gsSPEndDisplayList(),\n};\n\n// 0x02014698 - 0x020146C0\nconst Gfx dl_screen_transition_end[] = {\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPSetRenderMode(G_RM_OPA_SURF, G_RM_OPA_SURF2),\n    gsSPEndDisplayList(),\n};\n\n// 0x020146C0 - 0x02014708\nconst Gfx dl_transition_draw_filled_region[] = {\n    gsSP2Triangles( 0,  4,  1, 0x0,  1,  4,  5, 0x0),\n    gsSP2Triangles( 1,  5,  2, 0x0,  2,  5,  6, 0x0),\n    gsSP2Triangles( 2,  6,  7, 0x0,  2,  7,  3, 0x0),\n    gsSP2Triangles( 3,  4,  0, 0x0,  3,  7,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x02014708 - 0x02014738\nconst Gfx dl_skybox_begin[] = {\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPPerspNormalize(0xFFFF),\n    gsSPMatrix(&matrix_identity, G_MTX_PROJECTION | G_MTX_LOAD | G_MTX_NOPUSH),\n    gsSPEndDisplayList(),\n};\n\n// 0x02014738 - 0x02014768\nconst Gfx dl_skybox_tile_tex_settings[] = {\n    gsSPMatrix(&matrix_identity, G_MTX_MODELVIEW | G_MTX_LOAD | G_MTX_NOPUSH),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x02014768 - 0x02014790\nconst Gfx dl_skybox_end[] = {\n    gsDPPipeSync(),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x02014790 - 0x020147D0\nconst Gfx dl_waterbox_rgba16_begin[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x020147D0 - 0x02014810\nconst Gfx dl_waterbox_ia16_begin[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x02014810 - 0x02014838\nconst Gfx dl_waterbox_end[] = {\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x02014838 - 0x02014878\nALIGNED8 static const Texture texture_ia8_up_arrow[] = {\n#include \"textures/segment2/segment2.14838.ia8.inc.c\"\n};\n\n// 0x02014878 - 0x020148B0\nconst Gfx dl_ia8_up_arrow_begin[] = {\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsDPSetRenderMode(G_RM_XLU_SURF, G_RM_NOOP2),\n    gsSPPerspNormalize(0xFFFF),\n    gsSPMatrix(&matrix_identity, G_MTX_PROJECTION | G_MTX_LOAD | G_MTX_NOPUSH),\n    gsSPEndDisplayList(),\n};\n\n// 0x020148B0 - 0x020148E0\n// Unused, seems to be an early DL for the power meter, seeing that is loading a 64x32 texture\nconst Gfx dl_rgba16_unused[] = {\n    gsSPMatrix(&matrix_identity, G_MTX_MODELVIEW | G_MTX_LOAD | G_MTX_NOPUSH),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsSPEndDisplayList(),\n};\n\n// 0x020148E0 - 0x02014938\nconst Gfx dl_ia8_up_arrow_load_texture_block[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_8b, 1, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 3, G_TX_NOLOD, G_TX_CLAMP, 3, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (8 - 1) << G_TEXTURE_IMAGE_FRAC, (8 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_8b, 1, texture_ia8_up_arrow),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_8b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 8 * 8 - 1, CALC_DXT(8, G_IM_SIZ_8b_BYTES)),\n    gsSPEndDisplayList(),\n};\n\n// 0x02014938 - 0x02014958\nconst Gfx dl_ia8_up_arrow_end[] = {\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x02014958 - 0x02014960\nstatic const Lights1 seg2_lights_02014958 = gdSPDefLights1(\n    0x50, 0x50, 0x50,\n    0xff, 0xff, 0xff, 0x32, 0x32, 0x32\n);\n\n// 0x02014970 - 0x020149A8\nconst Gfx dl_paintings_rippling_begin[] = {\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_LIGHTING | G_SHADING_SMOOTH),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPLight(&seg2_lights_02014958.l, 1),\n    gsSPLight(&seg2_lights_02014958.a, 2),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsSPEndDisplayList(),\n};\n\n// 0x020149A8 - 0x020149C8\nconst Gfx dl_paintings_rippling_end[] = {\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x020149C8 - 0x02014A00\nconst Gfx dl_paintings_env_mapped_begin[] = {\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_LIGHTING | G_TEXTURE_GEN),\n    gsDPSetCombineMode(G_CC_DECALRGB, G_CC_DECALRGB),\n    gsSPLight(&seg2_lights_02014958.l, 1),\n    gsSPLight(&seg2_lights_02014958.a, 2),\n    gsSPTexture(0x4000, 0x4000, 0, G_TX_RENDERTILE, G_ON),\n    gsSPEndDisplayList(),\n};\n\n// 0x02014A00 - 0x02014A30\nconst Gfx dl_paintings_env_mapped_end[] = {\n    gsSPTexture(0x4000, 0x4000, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsSPGeometryModeSetFirst(G_TEXTURE_GEN, G_LIGHTING),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x02014A30 - 0x02014A60\nconst Gfx dl_paintings_draw_ripples[] = {\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 14A60: triangle mesh\n// 0x02014A60\nconst s16 seg2_painting_triangle_mesh[] = {\n    157, // numVtx\n    // format:\n    // 2D point (x, y), ripple (0 or 1)\n    614, 583,   0, // 0\n    614, 614,   0, // 1\n    562, 614,   0, // 2\n    562, 553,   1, // 3\n    614, 522,   0, // 4\n    511, 583,   1, // 5\n    511, 614,   0, // 6\n    307, 614,   0, // 7\n    307, 583,   1, // 8\n    358, 614,   0, // 9\n    256, 614,   0, // 10\n    256, 553,   1, // 11\n    307, 522,   1, // 12\n    358, 553,   1, // 13\n    409, 583,   1, // 14\n    460, 614,   0, // 15\n    511, 522,   1, // 16\n    460, 553,   1, // 17\n    409, 522,   1, // 18\n    562, 307,   1, // 19\n    614, 338,   0, // 20\n    562, 430,   1, // 21\n    614, 399,   0, // 22\n    562, 368,   1, // 23\n    511, 338,   1, // 24\n    460, 307,   1, // 25\n    460, 430,   1, // 26\n    511, 399,   1, // 27\n    511, 460,   1, // 28\n    409, 338,   1, // 29\n    460, 368,   1, // 30\n    358, 307,   1, // 31\n    409, 460,   1, // 32\n    358, 430,   1, // 33\n    409, 399,   1, // 34\n    358, 368,   1, // 35\n    307, 338,   1, // 36\n    256, 307,   1, // 37\n    307, 399,   1, // 38\n    256, 430,   1, // 39\n    307, 460,   1, // 40\n    614, 460,   0, // 41\n    562, 491,   1, // 42\n    460, 491,   1, // 43\n    358, 491,   1, // 44\n    256, 491,   1, // 45\n    409, 276,   1, // 46\n    511, 276,   1, // 47\n    307, 276,   1, // 48\n    614,  31,   0, // 49\n    614,   0,   0, // 50\n    562,   0,   0, // 51\n    562, 123,   1, // 52\n    614,  92,   0, // 53\n    511,  31,   1, // 54\n    562,  61,   1, // 55\n    460,   0,   0, // 56\n    511,   0,   0, // 57\n    460, 123,   1, // 58\n    511,  92,   1, // 59\n    511, 153,   1, // 60\n    409,  31,   1, // 61\n    460,  61,   1, // 62\n    358,   0,   0, // 63\n    409,   0,   0, // 64\n    409,  92,   1, // 65\n    358, 123,   1, // 66\n    409, 153,   1, // 67\n    307,  31,   1, // 68\n    358,  61,   1, // 69\n    256,   0,   0, // 70\n    307,   0,   0, // 71\n    256, 123,   1, // 72\n    307,  92,   1, // 73\n    307, 153,   1, // 74\n    614, 153,   0, // 75\n    562, 246,   1, // 76\n    614, 215,   0, // 77\n    562, 184,   1, // 78\n    460, 246,   1, // 79\n    511, 215,   1, // 80\n    460, 184,   1, // 81\n    358, 246,   1, // 82\n    409, 215,   1, // 83\n    358, 184,   1, // 84\n    256, 246,   1, // 85\n    307, 215,   1, // 86\n    205, 583,   1, // 87\n      0, 614,   0, // 88\n      0, 583,   0, // 89\n     51, 614,   0, // 90\n     51, 553,   1, // 91\n    102, 583,   1, // 92\n    205, 522,   1, // 93\n    153, 553,   1, // 94\n    153, 614,   0, // 95\n    102, 522,   1, // 96\n    256, 368,   1, // 97\n    205, 338,   1, // 98\n    153, 307,   1, // 99\n    153, 430,   1, // 100\n    205, 399,   1, // 101\n    205, 460,   1, // 102\n    153, 368,   1, // 103\n    102, 338,   1, // 104\n     51, 307,   1, // 105\n     51, 430,   1, // 106\n    102, 399,   1, // 107\n    102, 460,   1, // 108\n     51, 368,   1, // 109\n      0, 338,   0, // 110\n      0, 460,   0, // 111\n    153, 491,   1, // 112\n     51, 491,   1, // 113\n    153, 246,   1, // 114\n    102, 276,   1, // 115\n    205, 276,   1, // 116\n      0, 276,   0, // 117\n     51, 246,   1, // 118\n    205,  31,   1, // 119\n    256,  61,   1, // 120\n    205,   0,   0, // 121\n    153,   0,   0, // 122\n    205, 153,   1, // 123\n    205,  92,   1, // 124\n    153, 123,   1, // 125\n    102,  31,   1, // 126\n    153,  61,   1, // 127\n    102,   0,   0, // 128\n     51,   0,   0, // 129\n     51, 123,   1, // 130\n    102,  92,   1, // 131\n    102, 153,   1, // 132\n      0,  31,   0, // 133\n     51,  61,   1, // 134\n      0, 153,   0, // 135\n    256, 184,   1, // 136\n    205, 215,   1, // 137\n    153, 184,   1, // 138\n    102, 215,   1, // 139\n     51, 184,   1, // 140\n    409, 614,   0, // 141\n    614, 307,   0, // 142\n    614, 276,   0, // 143\n    511, 307,   1, // 144\n    409, 307,   1, // 145\n    307, 307,   1, // 146\n    205, 614,   0, // 147\n      0, 522,   0, // 148\n    102, 614,   0, // 149\n    205, 307,   1, // 150\n    102, 307,   1, // 151\n      0, 399,   0, // 152\n      0, 307,   0, // 153\n      0, 215,   0, // 154\n      0,  92,   0, // 155\n      0,   0,   0, // 156\n    // triangles\n    264,\n      8,  12,  13, // 0\n      0,   1,   2, // 1\n      3,   0,   2, // 2\n      4,   0,   3, // 3\n      5,   2,   6, // 4\n      2,   5,   3, // 5\n      7,   8,   9, // 6\n      8,   7,  10, // 7\n     11,   8,  10, // 8\n     12,   8,  11, // 9\n      9,   8,  13, // 10\n     13,  14,   9, // 11\n     14, 141,   9, // 12\n      5,   6,  15, // 13\n      5,  16,   3, // 14\n     16,   5,  17, // 15\n     17,   5,  15, // 16\n     14,  15, 141, // 17\n     15,  14,  17, // 18\n     18,  14,  13, // 19\n     14,  18,  17, // 20\n     19, 142,  20, // 21\n     19,  20,  23, // 22\n     28,  27,  21, // 23\n     21,  23,  22, // 24\n     22,  41,  21, // 25\n     20,  22,  23, // 26\n     23,  24,  19, // 27\n     21,  27,  23, // 28\n     24,  23,  27, // 29\n     25, 144,  24, // 30\n     19,  24, 144, // 31\n     24,  27,  30, // 32\n     25,  24,  30, // 33\n     26,  30,  27, // 34\n     27,  28,  26, // 35\n     36,  38,  97, // 36\n     26,  34,  30, // 37\n     29,  30,  34, // 38\n     30,  29,  25, // 39\n     25,  29, 145, // 40\n     31, 145,  29, // 41\n     31,  29,  35, // 42\n     29,  34,  35, // 43\n     32,  34,  26, // 44\n     33,  35,  34, // 45\n     34,  32,  33, // 46\n     33,  38,  35, // 47\n     35,  36,  31, // 48\n     36,  35,  38, // 49\n     37,  36,  97, // 50\n     37, 146,  36, // 51\n     31,  36, 146, // 52\n     28,  16,  43, // 53\n     38,  40,  39, // 54\n     39,  97,  38, // 55\n     40,  38,  33, // 56\n     21,  41,  42, // 57\n     41,   4,  42, // 58\n      3,  42,   4, // 59\n     42,  28,  21, // 60\n     28,  42,  16, // 61\n      3,  16,  42, // 62\n     26,  28,  43, // 63\n     17,  43,  16, // 64\n     43,  32,  26, // 65\n     32,  43,  18, // 66\n     17,  18,  43, // 67\n     33,  32,  44, // 68\n     32,  18,  44, // 69\n     13,  44,  18, // 70\n     44,  40,  33, // 71\n     13,  12,  44, // 72\n     40,  44,  12, // 73\n     39,  40,  45, // 74\n     40,  12,  45, // 75\n     48,  31, 146, // 76\n     11,  45,  12, // 77\n     25,  47, 144, // 78\n     46,  25, 145, // 79\n     47,  19, 144, // 80\n     19, 143, 142, // 81\n     31,  46, 145, // 82\n     60,  59,  52, // 83\n     49,  53,  55, // 84\n     50,  49,  51, // 85\n     51,  49,  55, // 86\n     52,  55,  53, // 87\n     53,  75,  52, // 88\n     54,  55,  59, // 89\n     52,  59,  55, // 90\n     55,  54,  51, // 91\n     54,  59,  62, // 92\n     56,  54,  62, // 93\n     57,  54,  56, // 94\n     54,  57,  51, // 95\n     58,  62,  59, // 96\n     59,  60,  58, // 97\n     68,  71,  63, // 98\n     61,  62,  65, // 99\n     58,  65,  62, // 100\n     62,  61,  56, // 101\n     61,  65,  69, // 102\n     63,  61,  69, // 103\n     64,  61,  63, // 104\n     61,  64,  56, // 105\n     65,  67,  66, // 106\n     66,  69,  65, // 107\n     67,  65,  58, // 108\n     68,  69,  73, // 109\n     69,  68,  63, // 110\n     66,  73,  69, // 111\n     68,  73, 120, // 112\n     70,  68, 120, // 113\n     71,  68,  70, // 114\n     72, 120,  73, // 115\n     73,  74,  72, // 116\n     74,  73,  66, // 117\n     75,  77,  78, // 118\n     52,  75,  78, // 119\n     76,  78,  77, // 120\n     77, 143,  76, // 121\n     76,  80,  78, // 122\n     60,  78,  80, // 123\n     78,  60,  52, // 124\n     46,  83,  79, // 125\n     58,  60,  81, // 126\n     60,  80,  81, // 127\n     79,  81,  80, // 128\n     80,  47,  79, // 129\n     47,  80,  76, // 130\n     81,  67,  58, // 131\n     67,  81,  83, // 132\n     79,  83,  81, // 133\n     66,  67,  84, // 134\n     67,  83,  84, // 135\n     82,  84,  83, // 136\n     83,  46,  82, // 137\n     84,  74,  66, // 138\n     82,  86,  84, // 139\n     74,  84,  86, // 140\n     74,  86, 136, // 141\n     72,  74, 136, // 142\n     85, 136,  86, // 143\n     86,  48,  85, // 144\n     48,  86,  82, // 145\n     25,  46,  79, // 146\n     79,  47,  25, // 147\n     82,  46,  31, // 148\n     19,  47,  76, // 149\n     76, 143,  19, // 150\n     31,  48,  82, // 151\n     37,  48, 146, // 152\n     85,  48,  37, // 153\n     10,  87,  11, // 154\n     87,  10, 147, // 155\n     92,  95, 149, // 156\n     88,  89,  90, // 157\n     89, 148,  91, // 158\n     90,  89,  91, // 159\n     91,  92,  90, // 160\n     92, 149,  90, // 161\n     93,  87,  94, // 162\n     87,  93,  11, // 163\n     94,  87,  95, // 164\n     87, 147,  95, // 165\n     95,  92,  94, // 166\n     96,  92,  91, // 167\n     92,  96,  94, // 168\n     39, 101,  97, // 169\n     97,  98,  37, // 170\n     98,  97, 101, // 171\n     99,  98, 103, // 172\n     99, 150,  98, // 173\n     37,  98, 150, // 174\n     98, 101, 103, // 175\n    100, 103, 101, // 176\n    101, 102, 100, // 177\n    102, 101,  39, // 178\n    100, 107, 103, // 179\n    103, 104,  99, // 180\n    104, 103, 107, // 181\n    105, 104, 109, // 182\n    105, 151, 104, // 183\n     99, 104, 151, // 184\n    104, 107, 109, // 185\n    106, 109, 107, // 186\n    107, 108, 106, // 187\n    108, 107, 100, // 188\n    109, 110, 105, // 189\n    106, 152, 109, // 190\n    110, 109, 152, // 191\n    105, 110, 153, // 192\n    111, 152, 106, // 193\n     11,  93,  45, // 194\n    102,  45,  93, // 195\n     45, 102,  39, // 196\n    102,  93, 112, // 197\n    100, 102, 112, // 198\n     94, 112,  93, // 199\n    112, 108, 100, // 200\n    108, 112,  96, // 201\n     94,  96, 112, // 202\n    106, 108, 113, // 203\n    108,  96, 113, // 204\n     91, 113,  96, // 205\n     91, 148, 113, // 206\n    113, 111, 106, // 207\n    111, 113, 148, // 208\n    114, 116,  99, // 209\n     99, 115, 114, // 210\n    115,  99, 151, // 211\n     99, 116, 150, // 212\n     72, 124, 120, // 213\n    116,  37, 150, // 214\n     37, 116,  85, // 215\n    117, 105, 153, // 216\n    105, 115, 151, // 217\n    105, 117, 118, // 218\n    118, 115, 105, // 219\n    119, 120, 124, // 220\n    120, 119,  70, // 221\n    119, 124, 127, // 222\n    119, 121,  70, // 223\n    121, 119, 122, // 224\n    122, 119, 127, // 225\n    123, 124,  72, // 226\n    124, 123, 125, // 227\n    125, 127, 124, // 228\n    126, 127, 131, // 229\n    127, 126, 122, // 230\n    125, 131, 127, // 231\n    126, 131, 134, // 232\n    128, 126, 129, // 233\n    129, 126, 134, // 234\n    126, 128, 122, // 235\n    136, 123,  72, // 236\n    130, 134, 131, // 237\n    131, 132, 130, // 238\n    132, 131, 125, // 239\n    133, 134, 155, // 240\n    134, 133, 129, // 241\n    130, 155, 134, // 242\n    133, 156, 129, // 243\n    135, 155, 130, // 244\n    123, 136, 137, // 245\n     85, 137, 136, // 246\n    139, 115, 118, // 247\n    123, 137, 138, // 248\n    125, 123, 138, // 249\n    114, 138, 137, // 250\n    137, 116, 114, // 251\n    116, 137,  85, // 252\n    114, 139, 138, // 253\n    132, 138, 139, // 254\n    138, 132, 125, // 255\n    132, 139, 140, // 256\n    130, 132, 140, // 257\n    115, 139, 114, // 258\n    118, 140, 139, // 259\n    135, 140, 154, // 260\n    118, 154, 140, // 261\n    140, 135, 130, // 262\n    117, 154, 118, // 263\n};\n\n/* 0x02015444: seg2_painting_mesh_neighbor_tris\n * Lists the neighboring triangles for each vertex in the mesh.\n * Used when applying gouraud shading to the generated ripple mesh\n *\n * Format:\n *      num neighbors, neighbor0, neighbor1, ...\n * The nth entry corresponds to the nth vertex in seg2_painting_triangle_mesh\n */\nconst s16 seg2_painting_mesh_neighbor_tris[] = {\n      3,   1,   2,   3,\n      1,   1,\n      4,   1,   2,   4,   5,\n      6,   2,   3,   5,  14,  59,  62,\n      3,   3,  58,  59,\n      6,   4,   5,  13,  14,  15,  16,\n      2,   4,  13,\n      2,   6,   7,\n      6,   0,   6,   7,   8,   9,  10,\n      4,   6,  10,  11,  12,\n      4,   7,   8, 154, 155,\n      6,   8,   9,  77, 154, 163, 194,\n      6,   0,   9,  72,  73,  75,  77,\n      6,   0,  10,  11,  19,  70,  72,\n      6,  11,  12,  17,  18,  19,  20,\n      4,  13,  16,  17,  18,\n      6,  14,  15,  53,  61,  62,  64,\n      6,  15,  16,  18,  20,  64,  67,\n      6,  19,  20,  66,  67,  69,  70,\n      8,  21,  22,  27,  31,  80,  81, 149, 150,\n      3,  21,  22,  26,\n      6,  23,  24,  25,  28,  57,  60,\n      3,  24,  25,  26,\n      6,  22,  24,  26,  27,  28,  29,\n      6,  27,  29,  30,  31,  32,  33,\n      8,  30,  33,  39,  40,  78,  79, 146, 147,\n      6,  34,  35,  37,  44,  63,  65,\n      6,  23,  28,  29,  32,  34,  35,\n      6,  23,  35,  53,  60,  61,  63,\n      6,  38,  39,  40,  41,  42,  43,\n      6,  32,  33,  34,  37,  38,  39,\n      8,  41,  42,  48,  52,  76,  82, 148, 151,\n      6,  44,  46,  65,  66,  68,  69,\n      6,  45,  46,  47,  56,  68,  71,\n      6,  37,  38,  43,  44,  45,  46,\n      6,  42,  43,  45,  47,  48,  49,\n      6,  36,  48,  49,  50,  51,  52,\n      8,  50,  51, 152, 153, 170, 174, 214, 215,\n      6,  36,  47,  49,  54,  55,  56,\n      6,  54,  55,  74, 169, 178, 196,\n      6,  54,  56,  71,  73,  74,  75,\n      3,  25,  57,  58,\n      6,  57,  58,  59,  60,  61,  62,\n      6,  53,  63,  64,  65,  66,  67,\n      6,  68,  69,  70,  71,  72,  73,\n      6,  74,  75,  77, 194, 195, 196,\n      6,  79,  82, 125, 137, 146, 148,\n      6,  78,  80, 129, 130, 147, 149,\n      6,  76, 144, 145, 151, 152, 153,\n      3,  84,  85,  86,\n      1,  85,\n      4,  85,  86,  91,  95,\n      6,  83,  87,  88,  90, 119, 124,\n      3,  84,  87,  88,\n      6,  89,  91,  92,  93,  94,  95,\n      6,  84,  86,  87,  89,  90,  91,\n      4,  93,  94, 101, 105,\n      2,  94,  95,\n      6,  96,  97, 100, 108, 126, 131,\n      6,  83,  89,  90,  92,  96,  97,\n      6,  83,  97, 123, 124, 126, 127,\n      6,  99, 101, 102, 103, 104, 105,\n      6,  92,  93,  96,  99, 100, 101,\n      4,  98, 103, 104, 110,\n      2, 104, 105,\n      6,  99, 100, 102, 106, 107, 108,\n      6, 106, 107, 111, 117, 134, 138,\n      6, 106, 108, 131, 132, 134, 135,\n      6,  98, 109, 110, 112, 113, 114,\n      6, 102, 103, 107, 109, 110, 111,\n      4, 113, 114, 221, 223,\n      2,  98, 114,\n      6, 115, 116, 142, 213, 226, 236,\n      6, 109, 111, 112, 115, 116, 117,\n      6, 116, 117, 138, 140, 141, 142,\n      3,  88, 118, 119,\n      6, 120, 121, 122, 130, 149, 150,\n      3, 118, 120, 121,\n      6, 118, 119, 120, 122, 123, 124,\n      6, 125, 128, 129, 133, 146, 147,\n      6, 122, 123, 127, 128, 129, 130,\n      6, 126, 127, 128, 131, 132, 133,\n      6, 136, 137, 139, 145, 148, 151,\n      6, 125, 132, 133, 135, 136, 137,\n      6, 134, 135, 136, 138, 139, 140,\n      6, 143, 144, 153, 215, 246, 252,\n      6, 139, 140, 141, 143, 144, 145,\n      6, 154, 155, 162, 163, 164, 165,\n      1, 157,\n      3, 157, 158, 159,\n      4, 157, 159, 160, 161,\n      6, 158, 159, 160, 167, 205, 206,\n      6, 156, 160, 161, 166, 167, 168,\n      6, 162, 163, 194, 195, 197, 199,\n      6, 162, 164, 166, 168, 199, 202,\n      4, 156, 164, 165, 166,\n      6, 167, 168, 201, 202, 204, 205,\n      6,  36,  50,  55, 169, 170, 171,\n      6, 170, 171, 172, 173, 174, 175,\n      8, 172, 173, 180, 184, 209, 210, 211, 212,\n      6, 176, 177, 179, 188, 198, 200,\n      6, 169, 171, 175, 176, 177, 178,\n      6, 177, 178, 195, 196, 197, 198,\n      6, 172, 175, 176, 179, 180, 181,\n      6, 180, 181, 182, 183, 184, 185,\n      8, 182, 183, 189, 192, 216, 217, 218, 219,\n      6, 186, 187, 190, 193, 203, 207,\n      6, 179, 181, 185, 186, 187, 188,\n      6, 187, 188, 200, 201, 203, 204,\n      6, 182, 185, 186, 189, 190, 191,\n      3, 189, 191, 192,\n      3, 193, 207, 208,\n      6, 197, 198, 199, 200, 201, 202,\n      6, 203, 204, 205, 206, 207, 208,\n      6, 209, 210, 250, 251, 253, 258,\n      6, 210, 211, 217, 219, 247, 258,\n      6, 209, 212, 214, 215, 251, 252,\n      3, 216, 218, 263,\n      6, 218, 219, 247, 259, 261, 263,\n      6, 220, 221, 222, 223, 224, 225,\n      6, 112, 113, 115, 213, 220, 221,\n      2, 223, 224,\n      4, 224, 225, 230, 235,\n      6, 226, 227, 236, 245, 248, 249,\n      6, 213, 220, 222, 226, 227, 228,\n      6, 227, 228, 231, 239, 249, 255,\n      6, 229, 230, 232, 233, 234, 235,\n      6, 222, 225, 228, 229, 230, 231,\n      2, 233, 235,\n      4, 233, 234, 241, 243,\n      6, 237, 238, 242, 244, 257, 262,\n      6, 229, 231, 232, 237, 238, 239,\n      6, 238, 239, 254, 255, 256, 257,\n      3, 240, 241, 243,\n      6, 232, 234, 237, 240, 241, 242,\n      3, 244, 260, 262,\n      6, 141, 142, 143, 236, 245, 246,\n      6, 245, 246, 248, 250, 251, 252,\n      6, 248, 249, 250, 253, 254, 255,\n      6, 247, 253, 254, 256, 258, 259,\n      6, 256, 257, 259, 260, 261, 262,\n      2,  12,  17,\n      2,  21,  81,\n      3,  81, 121, 150,\n      4,  30,  31,  78,  80,\n      4,  40,  41,  79,  82,\n      4,  51,  52,  76, 152,\n      2, 155, 165,\n      3, 158, 206, 208,\n      2, 156, 161,\n      4, 173, 174, 212, 214,\n      4, 183, 184, 211, 217,\n      3, 190, 191, 193,\n      2, 192, 216,\n      3, 260, 261, 263,\n      3, 240, 242, 244,\n      1, 243,\n};\n"
  },
  {
    "path": "bin/sky.c",
    "content": "#include \"macros.h\"\n#include \"types.h\"\n\n#include \"make_const_nonconst.h\"\n\n// 0x09000000\nALIGNED8 const Texture sky_09000000[] = {\n#include \"textures/sky/rr_textures.00000.rgba16.inc.c\"\n};\n\n// 0x09000800\nALIGNED8 const Texture sky_09000800[] = {\n#include \"textures/sky/rr_textures.00800.rgba16.inc.c\"\n};\n\n// 0x09001000\nALIGNED8 const Texture sky_09001000[] = {\n#include \"textures/sky/rr_textures.01000.rgba16.inc.c\"\n};\n\n// 0x09001800\nALIGNED8 const Texture sky_09001800[] = {\n#include \"textures/sky/rr_textures.01800.rgba16.inc.c\"\n};\n\n// 0x09002000\nALIGNED8 const Texture sky_09002000[] = {\n#include \"textures/sky/rr_textures.02000.rgba16.inc.c\"\n};\n\n// 0x09003000\nALIGNED8 const Texture sky_09003000[] = {\n#include \"textures/sky/rr_textures.03000.rgba16.inc.c\"\n};\n\n// 0x09003800\nALIGNED8 const Texture sky_09003800[] = {\n#include \"textures/sky/rr_textures.03800.rgba16.inc.c\"\n};\n\n// 0x09004800\nALIGNED8 const Texture sky_09004800[] = {\n#include \"textures/sky/rr_textures.04800.rgba16.inc.c\"\n};\n\n// 0x09005000\nALIGNED8 const Texture sky_09005000[] = {\n#include \"textures/sky/rr_textures.05000.rgba16.inc.c\"\n};\n\n// 0x09005800\nALIGNED8 const Texture sky_09005800[] = {\n#include \"textures/sky/rr_textures.05800.rgba16.inc.c\"\n};\n\n// 0x09006000\nALIGNED8 const Texture sky_09006000[] = {\n#include \"textures/sky/rr_textures.06000.rgba16.inc.c\"\n};\n\nALIGNED8 const Texture texture_metal_hole[] = {\n#include \"textures/sky/metal_hole.rgba16.inc.c\"\n};\n\n// 0x09007000\nALIGNED8 const Texture sky_09007000[] = {\n#include \"textures/sky/rr_textures.07000.rgba16.inc.c\"\n};\n\n// 0x09007800\nALIGNED8 const Texture sky_09007800[] = {\n#include \"textures/sky/rr_textures.07800.rgba16.inc.c\"\n};\n\n// 0x09008000\nALIGNED8 const Texture sky_09008000[] = {\n#include \"textures/sky/rr_textures.08000.rgba16.inc.c\"\n};\n"
  },
  {
    "path": "bin/snow.c",
    "content": "#include \"macros.h\"\n#include \"types.h\"\n\n#include \"make_const_nonconst.h\"\n\n// 0x09000000\nALIGNED8 const Texture snow_09000000[] = {\n#include \"textures/snow/ccm_textures.00000.rgba16.inc.c\"\n};\n\n// 0x09000800\nALIGNED8 const Texture snow_09000800[] = {\n#include \"textures/snow/ccm_textures.00800.rgba16.inc.c\"\n};\n\n// 0x09001000\nALIGNED8 const Texture snow_09001000[] = {\n#include \"textures/snow/ccm_textures.01000.rgba16.inc.c\"\n};\n\n// 0x09002000\nALIGNED8 const Texture snow_09002000[] = {\n#include \"textures/snow/ccm_textures.02000.rgba16.inc.c\"\n};\n\n// 0x09002800\nALIGNED8 const Texture snow_09002800[] = {\n#include \"textures/snow/ccm_textures.02800.rgba16.inc.c\"\n};\n\n// 0x09003000\nALIGNED8 const Texture snow_09003000[] = {\n#include \"textures/snow/ccm_textures.03000.rgba16.inc.c\"\n};\n\n// 0x09003800\nALIGNED8 const Texture snow_09003800[] = {\n#include \"textures/snow/ccm_textures.03800.rgba16.inc.c\"\n};\n\n// 0x09004000\nALIGNED8 const Texture snow_09004000[] = {\n#include \"textures/snow/ccm_textures.04000.rgba16.inc.c\"\n};\n\n// 0x09004800\nALIGNED8 const Texture snow_09004800[] = {\n#include \"textures/snow/ccm_textures.04800.rgba16.inc.c\"\n};\n\n// 0x09005000\nALIGNED8 const Texture snow_09005000[] = {\n#include \"textures/snow/ccm_textures.05000.rgba16.inc.c\"\n};\n\n// 0x09005800\nALIGNED8 const Texture snow_09005800[] = {\n#include \"textures/snow/ccm_textures.05800.rgba16.inc.c\"\n};\n\n// 0x09006000\nALIGNED8 const Texture snow_09006000[] = {\n#include \"textures/snow/ccm_textures.06000.rgba16.inc.c\"\n};\n\n// 0x09006800\nALIGNED8 const Texture snow_09006800[] = {\n#include \"textures/snow/ccm_textures.06800.rgba16.inc.c\"\n};\n\n// 0x09007000\nALIGNED8 const Texture snow_09007000[] = {\n#include \"textures/snow/ccm_textures.07000.rgba16.inc.c\"\n};\n\n// 0x09008000\nALIGNED8 const Texture snow_09008000[] = {\n#include \"textures/snow/ccm_textures.08000.rgba16.inc.c\"\n};\n\n// 0x09008800\nALIGNED8 const Texture snow_09008800[] = {\n#include \"textures/snow/ccm_textures.08800.rgba16.inc.c\"\n};\n\n// 0x09009000\nALIGNED8 const Texture snow_09009000[] = {\n#include \"textures/snow/ccm_textures.09000.ia16.inc.c\"\n};\n\n// 0x09009800\nALIGNED8 const Texture snow_09009800[] = {\n#include \"textures/snow/ccm_textures.09800.ia16.inc.c\"\n};\n"
  },
  {
    "path": "bin/spooky.c",
    "content": "#include \"macros.h\"\n#include \"types.h\"\n\n#include \"make_const_nonconst.h\"\n\n// 0x09000000\nALIGNED8 const Texture spooky_09000000[] = {\n#include \"textures/spooky/bbh_textures.00000.rgba16.inc.c\"\n};\n\n// 0x09000800\nALIGNED8 const Texture spooky_09000800[] = {\n#include \"textures/spooky/bbh_textures.00800.rgba16.inc.c\"\n};\n\n// 0x09001800\nALIGNED8 const Texture spooky_09001800[] = {\n#include \"textures/spooky/bbh_textures.01800.rgba16.inc.c\"\n};\n\n// 0x09002800\nALIGNED8 const Texture spooky_09002800[] = {\n#include \"textures/spooky/bbh_textures.02800.rgba16.inc.c\"\n};\n\n// 0x09003800\nALIGNED8 const Texture spooky_09003800[] = {\n#include \"textures/spooky/bbh_textures.03800.rgba16.inc.c\"\n};\n\n// 0x09004800\nALIGNED8 const Texture spooky_09004800[] = {\n#include \"textures/spooky/bbh_textures.04800.rgba16.inc.c\"\n};\n\n// 0x09005000\nALIGNED8 const Texture spooky_09005000[] = {\n#include \"textures/spooky/bbh_textures.05000.rgba16.inc.c\"\n};\n\n// 0x09006000\nALIGNED8 const Texture spooky_09006000[] = {\n#include \"textures/spooky/bbh_textures.06000.rgba16.inc.c\"\n};\n\n// 0x09006800\nALIGNED8 const Texture spooky_09006800[] = {\n#include \"textures/spooky/bbh_textures.06800.rgba16.inc.c\"\n};\n\n// 0x09007000\nALIGNED8 const Texture spooky_09007000[] = {\n#include \"textures/spooky/bbh_textures.07000.rgba16.inc.c\"\n};\n\n// 0x09008000\nALIGNED8 const Texture spooky_09008000[] = {\n#include \"textures/spooky/bbh_textures.08000.rgba16.inc.c\"\n};\n\n// 0x09008800\nALIGNED8 const Texture spooky_09008800[] = {\n#include \"textures/spooky/bbh_textures.08800.rgba16.inc.c\"\n};\n\n// 0x09009000\nALIGNED8 const Texture spooky_09009000[] = {\n#include \"textures/spooky/bbh_textures.09000.rgba16.inc.c\"\n};\n\n// 0x0900A000\nALIGNED8 const Texture spooky_0900A000[] = {\n#include \"textures/spooky/bbh_textures.0A000.rgba16.inc.c\"\n};\n\n// 0x0900A800\nALIGNED8 const Texture spooky_0900A800[] = {\n#include \"textures/spooky/bbh_textures.0A800.ia16.inc.c\"\n};\n\n// 0x0900B000\nALIGNED8 const Texture spooky_0900B000[] = {\n#include \"textures/spooky/bbh_textures.0B000.ia16.inc.c\"\n};\n\n// 0x0900B800\nALIGNED8 const Texture spooky_0900B800[] = {\n#include \"textures/spooky/bbh_textures.0B800.ia16.inc.c\"\n};\n\n"
  },
  {
    "path": "bin/title_screen_bg.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n\n#include \"make_const_nonconst.h\"\n\n// 0x0A000000 - 0x0A000100\nstatic const Vtx title_screen_bg_vertex_0A000000[] = {\n    {{{     0,     60,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,     60,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,     80,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,     80,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,     40,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,     40,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,     60,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,     60,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,     20,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,     20,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,     40,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,     40,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,      0,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,     20,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,     20,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0A000100 - 0x0A000118\nconst Gfx title_screen_bg_dl_0A000100[] = {\n    gsDPSetCombineMode(G_CC_DECALRGB, G_CC_DECALRGB),\n    gsDPSetRenderMode(G_RM_AA_OPA_SURF, G_RM_AA_OPA_SURF2),\n    gsSPEndDisplayList(),\n};\n\n// 0x0A000118 - 0x0A000130\nconst Gfx title_screen_bg_dl_0A000118[] = {\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsSPVertex(title_screen_bg_vertex_0A000000, 16, 0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0A000130 - 0x0A000148\nconst Gfx title_screen_bg_dl_0A000130[] = {\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0A000148 - 0x0A000160\nconst Gfx title_screen_bg_dl_0A000148[] = {\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0A000160 - 0x0A000178\nconst Gfx title_screen_bg_dl_0A000160[] = {\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0A000178 - 0x0A000190\nconst Gfx title_screen_bg_dl_0A000178[] = {\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0A000190 - 0x0A0001C0\nconst Gfx title_screen_bg_dl_0A000190[] = {\n    gsDPPipeSync(),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2),\n    gsSPEndDisplayList(),\n};\n\n#if defined(VERSION_CN)\n\n// 0x0A0001C0\nALIGNED8 static const Texture title_texture_0A0001C0[] = {\n#include \"textures/title_screen_bg/title_screen_bg_ique.001C0.rgba16.inc.c\"\n};\n\n// 0x0A000E40\nALIGNED8 static const Texture title_texture_0A000E40[] = {\n#include \"textures/title_screen_bg/title_screen_bg_ique.00E40.rgba16.inc.c\"\n};\n\n// 0x0A001AC0\nALIGNED8 static const Texture title_texture_0A001AC0[] = {\n#include \"textures/title_screen_bg/title_screen_bg_ique.01AC0.rgba16.inc.c\"\n};\n\n// 0x0A002740\nALIGNED8 static const Texture title_texture_0A002740[] = {\n#include \"textures/title_screen_bg/title_screen_bg_ique.02740.rgba16.inc.c\"\n};\n\n// 0x0A0033C0\nALIGNED8 static const Texture title_texture_0A0033C0[] = {\n#include \"textures/title_screen_bg/title_screen_bg_ique.033C0.rgba16.inc.c\"\n};\n\n// 0x0A004040\nALIGNED8 static const Texture title_texture_0A004040[] = {\n#include \"textures/title_screen_bg/title_screen_bg_ique.04040.rgba16.inc.c\"\n};\n\n// 0x0A004CC0\nALIGNED8 static const Texture title_texture_0A004CC0[] = {\n#include \"textures/title_screen_bg/title_screen_bg_ique.04CC0.rgba16.inc.c\"\n};\n\n// 0x0A005940\nALIGNED8 static const Texture title_texture_0A005940[] = {\n#include \"textures/title_screen_bg/title_screen_bg_ique.05940.rgba16.inc.c\"\n};\n\n#else\n\n// 0x0A0001C0\nALIGNED8 static const Texture title_texture_0A0001C0[] = {\n#include \"textures/title_screen_bg/title_screen_bg.001C0.rgba16.inc.c\"\n};\n\n// 0x0A000E40\nALIGNED8 static const Texture title_texture_0A000E40[] = {\n#include \"textures/title_screen_bg/title_screen_bg.00E40.rgba16.inc.c\"\n};\n\n// 0x0A001AC0\nALIGNED8 static const Texture title_texture_0A001AC0[] = {\n#include \"textures/title_screen_bg/title_screen_bg.01AC0.rgba16.inc.c\"\n};\n\n// 0x0A002740\nALIGNED8 static const Texture title_texture_0A002740[] = {\n#include \"textures/title_screen_bg/title_screen_bg.02740.rgba16.inc.c\"\n};\n\n// 0x0A0033C0\nALIGNED8 static const Texture title_texture_0A0033C0[] = {\n#include \"textures/title_screen_bg/title_screen_bg.033C0.rgba16.inc.c\"\n};\n\n// 0x0A004040\nALIGNED8 static const Texture title_texture_0A004040[] = {\n#include \"textures/title_screen_bg/title_screen_bg.04040.rgba16.inc.c\"\n};\n\n// 0x0A004CC0\nALIGNED8 static const Texture title_texture_0A004CC0[] = {\n#include \"textures/title_screen_bg/title_screen_bg.04CC0.rgba16.inc.c\"\n};\n\n// 0x0A005940\nALIGNED8 static const Texture title_texture_0A005940[] = {\n#include \"textures/title_screen_bg/title_screen_bg.05940.rgba16.inc.c\"\n};\n\n#endif\n\n// 0x0A0065C0\nconst Texture *const mario_title_texture_table[] = {\n    title_texture_0A0001C0, title_texture_0A000E40, title_texture_0A001AC0, title_texture_0A002740,\n};\n\n// 0x0A0065D0\nconst Texture *const game_over_texture_table[] = {\n    title_texture_0A0033C0, title_texture_0A004040, title_texture_0A004CC0, title_texture_0A005940,\n};\n\nUNUSED static const u64 title_screen_bg_unused_0 = 0;\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\nconst Gfx title_screen_bg_dl_0A0065E8[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_COPY),\n    gsDPSetTexturePersp(G_TP_NONE),\n    gsDPSetTextureFilter(G_TF_POINT),\n    gsDPSetRenderMode(G_RM_NOOP, G_RM_NOOP2),\n    gsSPEndDisplayList(),\n};\n\nconst Gfx title_screen_bg_dl_0A006618[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetTexturePersp(G_TP_PERSP),\n    gsDPSetTextureFilter(G_TF_BILERP),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2),\n    gsSPEndDisplayList(),\n};\n\nALIGNED8 static const u8 title_texture_rumble_pak[] = {\n#include \"textures/title_screen_bg/title_screen_bg.06648.rgba16.inc.c\"\n};\n\nconst Gfx title_screen_bg_dl_0A007548[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_COPY),\n    gsDPSetTexturePersp(G_TP_NONE),\n    gsDPSetTextureFilter(G_TF_POINT),\n    gsDPSetRenderMode(G_RM_NOOP, G_RM_NOOP2),\n    gsDPSetScissor(G_SC_NON_INTERLACE, 0, 0, 319, 239),\n    gsDPLoadTextureTile(title_texture_rumble_pak, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 0, 0, 0, 79, 23, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, 7, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPTextureRectangle(220 << 2, 200 << 2, 299 << 2, 223 << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetTexturePersp(G_TP_PERSP),\n    gsDPSetTextureFilter(G_TF_BILERP),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2),\n    gsSPEndDisplayList(),\n};\n#endif\n"
  },
  {
    "path": "bin/water.c",
    "content": "#include \"macros.h\"\n#include \"types.h\"\n\n#include \"make_const_nonconst.h\"\n\n// 0x09000000\nALIGNED8 const Texture water_09000000[] = {\n#include \"textures/water/jrb_textures.00000.rgba16.inc.c\"\n};\n\n// 0x09000800\nALIGNED8 const Texture water_09000800[] = {\n#include \"textures/water/jrb_textures.00800.rgba16.inc.c\"\n};\n\n// 0x09001800\nALIGNED8 const Texture water_09001800[] = {\n#include \"textures/water/jrb_textures.01800.rgba16.inc.c\"\n};\n\n// 0x09002800\nALIGNED8 const Texture water_09002800[] = {\n#include \"textures/water/jrb_textures.02800.rgba16.inc.c\"\n};\n\n// 0x09003800\nALIGNED8 const Texture water_09003800[] = {\n#include \"textures/water/jrb_textures.03800.rgba16.inc.c\"\n};\n\n// 0x09004800\nALIGNED8 const Texture water_09004800[] = {\n#include \"textures/water/jrb_textures.04800.rgba16.inc.c\"\n};\n\n// 0x09005800\nALIGNED8 const Texture water_09005800[] = {\n#include \"textures/water/jrb_textures.05800.rgba16.inc.c\"\n};\n\n// 0x09006000\nALIGNED8 const Texture water_09006000[] = {\n#include \"textures/water/jrb_textures.06000.rgba16.inc.c\"\n};\n\n// 0x09006800\nALIGNED8 const Texture water_09006800[] = {\n#include \"textures/water/jrb_textures.06800.rgba16.inc.c\"\n};\n\n// 0x09007800\nALIGNED8 const Texture water_09007800[] = {\n#include \"textures/water/jrb_textures.07800.rgba16.inc.c\"\n};\n\n// 0x09008800\nALIGNED8 const Texture water_09008800[] = {\n#include \"textures/water/jrb_textures.08800.rgba16.inc.c\"\n};\n\n// 0x09009000\nALIGNED8 const Texture water_09009000[] = {\n#include \"textures/water/jrb_textures.09000.rgba16.inc.c\"\n};\n\n// 0x0900A000\nALIGNED8 const Texture water_0900A000[] = {\n#include \"textures/water/jrb_textures.0A000.rgba16.inc.c\"\n};\n\n// 0x0900A800\nALIGNED8 const Texture water_0900A800[] = {\n#include \"textures/water/jrb_textures.0A800.rgba16.inc.c\"\n};\n\n// 0x0900B800\nALIGNED8 const Texture water_0900B800[] = {\n#include \"textures/water/jrb_textures.0B800.rgba16.inc.c\"\n};\n"
  },
  {
    "path": "charmap.txt",
    "content": "#if defined(VERSION_CN) && !defined(CHARMAP_DEBUG)\n#define CN_ZERO 0x00,\n#define CN_FF   0xFF,\n#define CN_DIFF(a, b) REMOVE_PARENS b\n#define REMOVE_PARENS(a, b) a, b\n#else\n#define CN_ZERO\n#define CN_FF\n#define CN_DIFF(a, b) a\n#endif\n\n'0' = CN_ZERO 0x00\n'０' = CN_ZERO 0x00\n'1' = CN_ZERO 0x01\n'１' = CN_ZERO 0x01\n'2' = CN_ZERO 0x02\n'２' = CN_ZERO 0x02\n'3' = CN_ZERO 0x03\n'３' = CN_ZERO 0x03\n'4' = CN_ZERO 0x04\n'４' = CN_ZERO 0x04\n'5' = CN_ZERO 0x05\n'５' = CN_ZERO 0x05\n'6' = CN_ZERO 0x06\n'６' = CN_ZERO 0x06\n'7' = CN_ZERO 0x07\n'７' = CN_ZERO 0x07\n'8' = CN_ZERO 0x08\n'８' = CN_ZERO 0x08\n'9' = CN_ZERO 0x09\n'９' = CN_ZERO 0x09\n'A' = CN_ZERO 0x0A\n'Ａ' = CN_DIFF(0x0A, (0x04, 0x52))\n'B' = CN_ZERO 0x0B\n'Ｂ' = CN_ZERO 0x0B\n'C' = CN_ZERO 0x0C\n'Ｃ' = CN_ZERO 0x0C\n'D' = CN_ZERO 0x0D\n'Ｄ' = CN_ZERO 0x0D\n'E' = CN_ZERO 0x0E\n'Ｅ' = CN_ZERO 0x0E\n'F' = CN_ZERO 0x0F\n'Ｆ' = CN_ZERO 0x0F\n'G' = CN_ZERO 0x10\n'Ｇ' = CN_ZERO 0x10\n'H' = CN_ZERO 0x11\n'Ｈ' = CN_ZERO 0x11\n'I' = CN_ZERO 0x12\n'Ｉ' = CN_ZERO 0x12\n'J' = CN_ZERO 0x13\n'Ｊ' = CN_ZERO 0x13\n'K' = CN_ZERO 0x14\n'Ｋ' = CN_ZERO 0x14\n'L' = CN_ZERO 0x15\n'Ｌ' = CN_ZERO 0x15\n'M' = CN_ZERO 0x16\n'Ｍ' = CN_ZERO 0x16\n'N' = CN_ZERO 0x17\n'Ｎ' = CN_ZERO 0x17\n'O' = CN_ZERO 0x18\n'Ｏ' = CN_ZERO 0x18\n'P' = CN_ZERO 0x19\n'Ｐ' = CN_ZERO 0x19\n'Q' = CN_ZERO 0x1A\n'Ｑ' = CN_ZERO 0x1A\n'R' = CN_ZERO 0x1B\n'Ｒ' = CN_DIFF(0x1B, (0x04, 0x53))\n'S' = CN_ZERO 0x1C\n'Ｓ' = CN_DIFF(0x1C, (0x04, 0x50))\n'T' = CN_ZERO 0x1D\n'Ｔ' = CN_DIFF(0x1D, (0x04, 0x51))\n'U' = CN_ZERO 0x1E\n'Ｕ' = CN_ZERO 0x1E\n'V' = CN_ZERO 0x1F\n'Ｖ' = CN_ZERO 0x1F\n'W' = CN_ZERO 0x20\n'Ｗ' = CN_ZERO 0x20\n'X' = CN_ZERO 0x21\n'Ｘ' = CN_ZERO 0x21\n'Y' = CN_ZERO 0x22\n'Ｙ' = CN_ZERO 0x22\n'Z' = CN_ZERO 0x23\n'Ｚ' = CN_ZERO 0x23\n'a' = CN_ZERO 0x24\n'b' = CN_ZERO 0x25\n'c' = CN_ZERO 0x26\n'd' = CN_ZERO 0x27\n'e' = CN_ZERO 0x28\n'f' = CN_ZERO 0x29\n'g' = CN_ZERO 0x2A\n'h' = CN_ZERO 0x2B\n'i' = CN_ZERO 0x2C\n'j' = CN_ZERO 0x2D\n'k' = CN_ZERO 0x2E\n'l' = CN_ZERO 0x2F\n'm' = CN_ZERO 0x30\n'n' = CN_ZERO 0x31\n'o' = CN_ZERO 0x32\n'p' = CN_ZERO 0x33\n'q' = CN_ZERO 0x34\n'r' = CN_ZERO 0x35\n's' = CN_ZERO 0x36\n't' = CN_ZERO 0x37\n'u' = CN_ZERO 0x38\n'v' = CN_ZERO 0x39\n'w' = CN_ZERO 0x3A\n'x' = CN_ZERO 0x3B\n'y' = CN_ZERO 0x3C\n'z' = CN_ZERO 0x3D\n'\\'' = CN_ZERO 0x3E\n'.' = CN_ZERO 0x3F\n\n// Mario face US/EU menu string (Note: NOT multi-text, each char has a part of the face)\n'☺' = CN_ZERO 0x40, CN_ZERO 0x41\n\n'あ' = CN_ZERO 0x40\n'い' = CN_ZERO 0x41\n'う' = CN_ZERO 0x42\n'え' = CN_ZERO 0x43\n'お' = CN_ZERO 0x44\n'か' = CN_ZERO 0x45\n'き' = CN_ZERO 0x46\n'く' = CN_ZERO 0x47\n'け' = CN_ZERO 0x48\n'こ' = CN_ZERO 0x49\n'さ' = CN_ZERO 0x4A\n'し' = CN_ZERO 0x4B\n'す' = CN_ZERO 0x4C\n'せ' = CN_ZERO 0x4D\n'そ' = CN_ZERO 0x4E\n'た' = CN_ZERO 0x4F\n'ち' = CN_ZERO 0x50\n'つ' = CN_ZERO 0x51\n'て' = CN_ZERO 0x52\n'と' = CN_ZERO 0x53\n'な' = CN_ZERO 0x54\n'に' = CN_ZERO 0x55\n'ぬ' = CN_ZERO 0x56\n'ね' = CN_ZERO 0x57\n'の' = CN_ZERO 0x58\n'は' = CN_ZERO 0x59\n'ひ' = CN_ZERO 0x5A\n'ふ' = CN_ZERO 0x5B\n'へ' = CN_ZERO 0x5C\n'ほ' = CN_ZERO 0x5D\n'ま' = CN_ZERO 0x5E\n'み' = CN_ZERO 0x5F\n'む' = CN_ZERO 0x60\n'め' = CN_ZERO 0x61\n'も' = CN_ZERO 0x62\n'や' = CN_ZERO 0x63\n'ゆ' = CN_ZERO 0x64\n'よ' = CN_ZERO 0x65\n'ら' = CN_ZERO 0x66\n'り' = CN_ZERO 0x67\n'る' = CN_ZERO 0x68\n'れ' = CN_ZERO 0x69\n'ろ' = CN_ZERO 0x6A\n'わ' = CN_ZERO 0x6B\n'を' = CN_ZERO 0x6C\n'ん' = CN_ZERO 0x6D\n'。' = CN_DIFF(0x6E, (0x02, 0x6C))\n',' = CN_ZERO 0x6F\n'、' = CN_DIFF(0x6F, (0x03, 0xE6))\n'ア' = CN_ZERO 0x70\n'イ' = CN_ZERO 0x71\n'ウ' = CN_ZERO 0x72\n'エ' = CN_ZERO 0x73\n'オ' = CN_ZERO 0x74\n'カ' = CN_ZERO 0x75\n'キ' = CN_ZERO 0x76\n'ク' = CN_ZERO 0x77\n'ケ' = CN_ZERO 0x78\n'コ' = CN_ZERO 0x79\n'サ' = CN_ZERO 0x7A\n'シ' = CN_ZERO 0x7B\n'ス' = CN_ZERO 0x7C\n'セ' = CN_ZERO 0x7D\n'ソ' = CN_ZERO 0x7E\n'タ' = CN_ZERO 0x7F\n'チ' = CN_ZERO 0x80\n'ツ' = CN_ZERO 0x81\n'テ' = CN_ZERO 0x82\n'ト' = CN_ZERO 0x83\n'ナ' = CN_ZERO 0x84\n'ニ' = CN_ZERO 0x85\n'ヌ' = CN_ZERO 0x86\n'ネ' = CN_ZERO 0x87\n'ノ' = CN_ZERO 0x88\n'ハ' = CN_ZERO 0x89\n'ヒ' = CN_ZERO 0x8A\n'フ' = CN_ZERO 0x8B\n'ヘ' = CN_ZERO 0x8C\n'ホ' = CN_ZERO 0x8D\n'マ' = CN_ZERO 0x8E\n'ミ' = CN_ZERO 0x8F\n'ム' = CN_ZERO 0x90\n'メ' = CN_ZERO 0x91\n'モ' = CN_ZERO 0x92\n'ヤ' = CN_ZERO 0x93\n'ユ' = CN_ZERO 0x94\n'ヨ' = CN_ZERO 0x95\n'ラ' = CN_ZERO 0x96\n'リ' = CN_ZERO 0x97\n'ル' = CN_ZERO 0x98\n'レ' = CN_ZERO 0x99\n'ロ' = CN_ZERO 0x9A\n'ワ' = CN_ZERO 0x9B\n// 0x9C is unused, only defined in jp menu char lut\n'ヲ' = CN_ZERO 0x9C\n'ン' = CN_ZERO 0x9D\n' ' = CN_FF 0x9E\n'　' = CN_FF 0x9E\n'-' = CN_ZERO 0x9F\n'ー' = CN_ZERO 0x9F\n'ぇ' = CN_ZERO 0xA0\n'っ' = CN_ZERO 0xA1\n'ゃ' = CN_ZERO 0xA2\n'ゅ' = CN_ZERO 0xA3\n'ょ' = CN_ZERO 0xA4\n'ぁ' = CN_ZERO 0xA5\n'ぃ' = CN_ZERO 0xA6\n'ぅ' = CN_ZERO 0xA7\n'ぉ' = CN_ZERO 0xA8\n'ェ' = CN_ZERO 0xD0\n'ッ' = CN_ZERO 0xD1\n'ャ' = CN_ZERO 0xD2\n'ュ' = CN_ZERO 0xD3\n'ョ' = CN_ZERO 0xD4\n'ァ' = CN_ZERO 0xD5\n'ィ' = CN_ZERO 0xD6\n'ゥ' = CN_ZERO 0xD7\n'ォ' = CN_ZERO 0xD8\n'[%]' = CN_FF 0xE0\n'(' = CN_ZERO 0xE1\n'（' = CN_DIFF(0xE1, (0x02, 0x78))\n')(' = CN_ZERO 0xE2\n'）（' = CN_ZERO 0xE2\n')' = CN_ZERO 0xE3\n'）' = CN_DIFF(0xE3, (0x02, 0x7E))\n'+' = CN_ZERO 0xE4\n'↔' = CN_ZERO 0xE4\n'&' = CN_ZERO 0xE5\n':' = CN_ZERO 0xE6\n'゛' = CN_ZERO 0xF0\n'゜' = CN_ZERO 0xF1\n'!' = CN_ZERO 0xF2\n'！' = CN_DIFF(0xF2, (0x02, 0x65))\n'%' = CN_ZERO 0xF3\n'％' = CN_ZERO 0xF3\n'?' = CN_ZERO 0xF4\n'？' = CN_DIFF(0xF4, (0x01, 0x3A))\n'『' = CN_ZERO 0xF5\n'』' = CN_ZERO 0xF6\n'~' = CN_ZERO 0xF7\n'～' = CN_ZERO 0xF7\n'…' = CN_DIFF(0xF8, (0x02, 0xE6))\n'$' = CN_ZERO 0xF9\n'★' = CN_ZERO 0xFA\n'×' = CN_ZERO 0xFB\n'・' = CN_ZERO 0xFC\n'☆' = CN_ZERO 0xFD\n'\\n' = CN_FF 0xFE\n'\\0' = CN_FF 0xFF\n\n// hiragana or katakana with dakuten\n'が' = 0xF0, 0x45\n'ぎ' = 0xF0, 0x46\n'ぐ' = 0xF0, 0x47\n'げ' = 0xF0, 0x48\n'ご' = 0xF0, 0x49\n'ざ' = 0xF0, 0x4A\n'じ' = 0xF0, 0x4B\n'ず' = 0xF0, 0x4C\n'ぜ' = 0xF0, 0x4D\n'ぞ' = 0xF0, 0x4E\n'だ' = 0xF0, 0x4F\n'ぢ' = 0xF0, 0x50\n'づ' = 0xF0, 0x51\n'で' = 0xF0, 0x52\n'ど' = 0xF0, 0x53\n'ば' = 0xF0, 0x59\n'び' = 0xF0, 0x5A\n'ぶ' = 0xF0, 0x5B\n'べ' = 0xF0, 0x5C\n'ぼ' = 0xF0, 0x5D\n'ガ' = 0xF0, 0x75\n'ギ' = 0xF0, 0x76\n'グ' = 0xF0, 0x77\n'ゲ' = 0xF0, 0x78\n'ゴ' = 0xF0, 0x79\n'ザ' = 0xF0, 0x7A\n'ジ' = 0xF0, 0x7B\n'ズ' = 0xF0, 0x7C\n'ゼ' = 0xF0, 0x7D\n'ゾ' = 0xF0, 0x7E\n'ダ' = 0xF0, 0x7F\n'ヂ' = 0xF0, 0x80\n'ヅ' = 0xF0, 0x81\n'デ' = 0xF0, 0x82\n'ド' = 0xF0, 0x83\n'バ' = 0xF0, 0x89\n'ビ' = 0xF0, 0x8A\n'ブ' = 0xF0, 0x8B\n'ベ' = 0xF0, 0x8C\n'ボ' = 0xF0, 0x8D\n\n// hiragana or katakana with handakuten\n'ぱ' = 0xF1, 0x59\n'ぴ' = 0xF1, 0x5A\n'ぷ' = 0xF1, 0x5B\n'ぺ' = 0xF1, 0x5C\n'ぽ' = 0xF1, 0x5D\n'パ' = 0xF1, 0x89\n'ピ' = 0xF1, 0x8A\n'プ' = 0xF1, 0x8B\n'ペ' = 0xF1, 0x8C\n'ポ' = 0xF1, 0x8D\n\n// overwritten symbols\n// these symbols overwrite\n// a previous symbol.\n'▲' = CN_ZERO 0x50\n'▼' = CN_ZERO 0x51\n'◀' = CN_ZERO 0x52\n'▶' = CN_ZERO 0x53\n'[A]' = CN_ZERO 0x54\n'[B]' = CN_ZERO 0x55\n'[C]' = CN_ZERO 0x56\n'[Z]' = CN_ZERO 0x57\n'[R]' = CN_ZERO 0x58\n'/' = CN_ZERO 0xD0\n\n// multi-text US symbols\n'the' = CN_ZERO 0xD1\n'you' = CN_ZERO 0xD2\n\n// EU ROM symbols\n'à' = CN_ZERO 0x60\n'â' = CN_ZERO 0x61\n'ä' = CN_ZERO 0x62\n'À' = CN_ZERO 0x64\n'Â' = CN_ZERO 0x65\n'Ä' = CN_ZERO 0x66\n'è' = CN_ZERO 0x70\n'ê' = CN_ZERO 0x71\n'ë' = CN_ZERO 0x72\n'é' = CN_ZERO 0x73\n'È' = CN_ZERO 0x74\n'Ê' = CN_ZERO 0x75\n'Ë' = CN_ZERO 0x76\n'É' = CN_ZERO 0x77\n'ù' = CN_ZERO 0x80\n'û' = CN_ZERO 0x81\n'ü' = CN_ZERO 0x82\n'Ù' = CN_ZERO 0x84\n'Û' = CN_ZERO 0x85\n'Ü' = CN_ZERO 0x86\n'ô' = CN_ZERO 0x91\n'ö' = CN_ZERO 0x92\n'Ô' = CN_ZERO 0x95\n'Ö' = CN_ZERO 0x96\n'î' = CN_ZERO 0xA1\n'ï' = CN_ZERO 0xA2\n'ß' = CN_ZERO 0xEC\n'Ç' = CN_ZERO 0xED\n'ç' = CN_ZERO 0xEE\n'„' = CN_ZERO 0xF0\n\n// CN chars\n'我' = 0x01, 0x00\n'的' = 0x01, 0x01\n'积' = 0x01, 0x02\n'分' = 0x01, 0x03\n'关' = 0x01, 0x04\n'卡' = 0x01, 0x05\n'退' = 0x01, 0x06\n'出' = 0x01, 0x07\n'继' = 0x01, 0x08\n'续' = 0x01, 0x09\n'使' = 0x01, 0x0A\n'用' = 0x01, 0x0B\n'键' = 0x01, 0x0C\n'设' = 0x01, 0x0D\n'定' = 0x01, 0x0E\n'视' = 0x01, 0x0F\n'角' = 0x01, 0x10\n'特' = 0x01, 0x11\n'写' = 0x01, 0x12\n'镜' = 0x01, 0x13\n'头' = 0x01, 0x14\n'固' = 0x01, 0x15\n'返' = 0x01, 0x16\n'回' = 0x01, 0x17\n'查' = 0x01, 0x18\n'看' = 0x01, 0x19\n'复' = 0x01, 0x1A\n'制' = 0x01, 0x1B\n'文' = 0x01, 0x1C\n'件' = 0x01, 0x1D\n'删' = 0x01, 0x1E\n'除' = 0x01, 0x1F\n'立' = 0x01, 0x20\n'体' = 0x01, 0x21\n'声' = 0x01, 0x22\n'单' = 0x01, 0x23\n'道' = 0x01, 0x24\n'耳' = 0x01, 0x25\n'机' = 0x01, 0x26\n'选' = 0x01, 0x27\n'择' = 0x01, 0x28\n'没' = 0x01, 0x29\n'有' = 0x01, 0x2A\n'保' = 0x01, 0x2B\n'存' = 0x01, 0x2C\n'数' = 0x01, 0x2D\n'据' = 0x01, 0x2E\n'到' = 0x01, 0x2F\n'何' = 0x01, 0x30\n'处' = 0x01, 0x31\n'完' = 0x01, 0x32\n'毕' = 0x01, 0x33\n'空' = 0x01, 0x34\n'储' = 0x01, 0x35\n'是' = 0x01, 0x36\n'否' = 0x01, 0x37\n'确' = 0x01, 0x38\n'吗' = 0x01, 0x39\n'已' = 0x01, 0x3B\n'音' = 0x01, 0x3C\n'马' = 0x01, 0x3D\n'力' = 0x01, 0x3E\n'欧' = 0x01, 0x3F\n'最' = 0x01, 0x40\n'高' = 0x01, 0x41\n'并' = 0x01, 0x42\n'不' = 0x01, 0x43\n'必' = 0x01, 0x44\n'接' = 0x01, 0x45\n'住' = 0x01, 0x46\n'清' = 0x01, 0x47\n'炸' = 0x01, 0x48\n'弹' = 0x01, 0x49\n'王' = 0x01, 0x4A\n'国' = 0x01, 0x4B\n'嘭' = 0x01, 0x4C\n'要' = 0x01, 0x4D\n'塞' = 0x01, 0x4E\n'海' = 0x01, 0x4F\n'盗' = 0x01, 0x50\n'湾' = 0x01, 0x51\n'酷' = 0x01, 0x52\n'冰' = 0x01, 0x53\n'雪' = 0x01, 0x54\n'山' = 0x01, 0x55\n'大' = 0x01, 0x56\n'嘘' = 0x01, 0x57\n'鬼' = 0x01, 0x58\n'城' = 0x01, 0x59\n'堡' = 0x01, 0x5A\n'迷' = 0x01, 0x5B\n'失' = 0x01, 0x5C\n'洞' = 0x01, 0x5D\n'窟' = 0x01, 0x5E\n'岩' = 0x01, 0x5F\n'浆' = 0x01, 0x60\n'地' = 0x01, 0x61\n'狱' = 0x01, 0x62\n'热' = 0x01, 0x63\n'沙' = 0x01, 0x64\n'漠' = 0x01, 0x65\n'恐' = 0x01, 0x66\n'怖' = 0x01, 0x67\n'船' = 0x01, 0x68\n'坞' = 0x01, 0x69\n'人' = 0x01, 0x6A\n'水' = 0x01, 0x6B\n'下' = 0x01, 0x6C\n'遗' = 0x01, 0x6D\n'迹' = 0x01, 0x6E\n'脉' = 0x01, 0x6F\n'小' = 0x01, 0x70\n'摇' = 0x01, 0x71\n'摆' = 0x01, 0x72\n'古' = 0x01, 0x73\n'钟' = 0x01, 0x74\n'彩' = 0x01, 0x75\n'虹' = 0x01, 0x76\n'之' = 0x01, 0x77\n'旅' = 0x01, 0x78\n'黑' = 0x01, 0x79\n'暗' = 0x01, 0x7A\n'世' = 0x01, 0x7B\n'界' = 0x01, 0x7C\n'霸' = 0x01, 0x7D\n'火' = 0x01, 0x7E\n'中' = 0x01, 0x7F\n'天' = 0x01, 0x80\n'公' = 0x01, 0x81\n'主' = 0x01, 0x82\n'秘' = 0x01, 0x83\n'密' = 0x01, 0x84\n'滑' = 0x01, 0x85\n'梯' = 0x01, 0x86\n'金' = 0x01, 0x87\n'属' = 0x01, 0x88\n'帽' = 0x01, 0x89\n'瀑' = 0x01, 0x8A\n'布' = 0x01, 0x8B\n'石' = 0x01, 0x8C\n'飞' = 0x01, 0x8D\n'行' = 0x01, 0x8E\n'塔' = 0x01, 0x8F\n'护' = 0x01, 0x90\n'河' = 0x01, 0x91\n'里' = 0x01, 0x92\n'隐' = 0x01, 0x93\n'身' = 0x01, 0x94\n'越' = 0x01, 0x95\n'族' = 0x01, 0x96\n'馆' = 0x01, 0x97\n'藏' = 0x01, 0x98\n'星' = 0x01, 0x99\n'顶' = 0x01, 0x9A\n'上' = 0x01, 0x9B\n'喏' = 0x01, 0x9C\n'库' = 0x01, 0x9D\n'诺' = 0x01, 0x9E\n'田' = 0x01, 0x9F\n'径' = 0x01, 0xA0\n'锦' = 0x01, 0xA1\n'标' = 0x01, 0xA2\n'赛' = 0x01, 0xA3\n'岛' = 0x01, 0xA4\n'屿' = 0x01, 0xA5\n'枚' = 0x01, 0xA6\n'红' = 0x01, 0xA7\n'色' = 0x01, 0xA8\n'硬' = 0x01, 0xA9\n'币' = 0x01, 0xAA\n'长' = 0x01, 0xAB\n'翅' = 0x01, 0xAC\n'膀' = 0x01, 0xAD\n'汪' = 0x01, 0xAE\n'守' = 0x01, 0xAF\n'铁' = 0x01, 0xB0\n'门' = 0x01, 0xB1\n'疯' = 0x01, 0xB2\n'狂' = 0x01, 0xB3\n'巅' = 0x01, 0xB4\n'射' = 0x01, 0xB5\n'向' = 0x01, 0xB6\n'蓝' = 0x01, 0xB7\n'浮' = 0x01, 0xB8\n'降' = 0x01, 0xB9\n'篮' = 0x01, 0xBA\n'破' = 0x01, 0xBB\n'壁' = 0x01, 0xBC\n'摘' = 0x01, 0xBD\n'沉' = 0x01, 0xBE\n'宝' = 0x01, 0xBF\n'来' = 0x01, 0xC0\n'玩' = 0x01, 0xC1\n'吧' = 0x01, 0xC2\n'鳗' = 0x01, 0xC3\n'底' = 0x01, 0xC4\n'财' = 0x01, 0xC5\n'发' = 0x01, 0xC6\n'柱' = 0x01, 0xC7\n'平' = 0x01, 0xC8\n'台' = 0x01, 0xC9\n'穿' = 0x01, 0xCA\n'急' = 0x01, 0xCB\n'流' = 0x01, 0xCC\n'企' = 0x01, 0xCD\n'鹅' = 0x01, 0xCE\n'该' = 0x01, 0xCF\n'家' = 0x01, 0xD0\n'了' = 0x01, 0xD1\n'比' = 0x01, 0xD2\n'帮' = 0x01, 0xD3\n'助' = 0x01, 0xD4\n'寻' = 0x01, 0xD5\n'找' = 0x01, 0xD6\n'脑' = 0x01, 0xD7\n'袋' = 0x01, 0xD8\n'踢' = 0x01, 0xD9\n'墙' = 0x01, 0xDA\n'跳' = 0x01, 0xDB\n'猎' = 0x01, 0xDC\n'记' = 0x01, 0xDD\n'旋' = 0x01, 0xDE\n'转' = 0x01, 0xDF\n'木' = 0x01, 0xE0\n'书' = 0x01, 0xE1\n'房' = 0x01, 0xE2\n'室' = 0x01, 0xE3\n'阳' = 0x01, 0xE4\n'眼' = 0x01, 0xE5\n'睛' = 0x01, 0xE6\n'穴' = 0x01, 0xE7\n'怪' = 0x01, 0xE8\n'移' = 0x01, 0xE9\n'动' = 0x01, 0xEA\n'通' = 0x01, 0xEB\n'过' = 0x01, 0xEC\n'毒' = 0x01, 0xED\n'气' = 0x01, 0xEE\n'宫' = 0x01, 0xEF\n'紧' = 0x01, 0xF0\n'口' = 0x01, 0xF1\n'心' = 0x01, 0xF2\n'落' = 0x01, 0xF3\n'巨' = 0x01, 0xF4\n'融' = 0x01, 0xF5\n'化' = 0x01, 0xF6\n'斗' = 0x01, 0xF7\n'打' = 0x01, 0xF8\n'败' = 0x01, 0xF9\n'块' = 0x01, 0xFA\n'拼' = 0x01, 0xFB\n'图' = 0x01, 0xFC\n'灼' = 0x01, 0xFD\n'滚' = 0x01, 0xFE\n'陷' = 0x01, 0xFF\n'阱' = 0x02, 0x00\n'进' = 0x02, 0x01\n'电' = 0x02, 0x02\n'还' = 0x02, 0x03\n'给' = 0x02, 0x04\n'秃' = 0x02, 0x05\n'鹫' = 0x02, 0x06\n'字' = 0x02, 0x07\n'闪' = 0x02, 0x08\n'光' = 0x02, 0x09\n'法' = 0x02, 0x0A\n'老' = 0x02, 0x0B\n'珍' = 0x02, 0x0C\n'于' = 0x02, 0x0D\n'四' = 0x02, 0x0E\n'颠' = 0x02, 0x0F\n'为' = 0x02, 0x10\n'自' = 0x02, 0x11\n'由' = 0x02, 0x12\n'翔' = 0x02, 0x13\n'谜' = 0x02, 0x14\n'潜' = 0x02, 0x15\n'艇' = 0x02, 0x16\n'湍' = 0x02, 0x17\n'箱' = 0x02, 0x18\n'才' = 0x02, 0x19\n'杂' = 0x02, 0x1A\n'技' = 0x02, 0x1B\n'演' = 0x02, 0x1C\n'员' = 0x02, 0x1D\n'勇' = 0x02, 0x1E\n'鳐' = 0x02, 0x1F\n'鱼' = 0x02, 0x20\n'奖' = 0x02, 0x21\n'励' = 0x02, 0x22\n'子' = 0x02, 0x23\n'收' = 0x02, 0x24\n'寒' = 0x02, 0x25\n'冷' = 0x02, 0x26\n'雕' = 0x02, 0x27\n'冻' = 0x02, 0x28\n'池' = 0x02, 0x29\n'塘' = 0x02, 0x2A\n'圆' = 0x02, 0x2B\n'舞' = 0x02, 0x2C\n'曲' = 0x02, 0x2D\n'板' = 0x02, 0x2E\n'与' = 0x02, 0x2F\n'爱' = 0x02, 0x30\n'斯' = 0x02, 0x31\n'基' = 0x02, 0x32\n'摩' = 0x02, 0x33\n'屋' = 0x02, 0x34\n'箭' = 0x02, 0x35\n'和' = 0x02, 0x36\n'快' = 0x02, 0x37\n'速' = 0x02, 0x38\n'—' = 0x02, 0x39\n'抓' = 0x02, 0x3A\n'时' = 0x02, 0x3B\n'间' = 0x02, 0x3C\n'镇' = 0x02, 0x3D\n'攀' = 0x02, 0x3E\n'登' = 0x02, 0x3F\n'神' = 0x02, 0x40\n'猴' = 0x02, 0x41\n'呦' = 0x02, 0x42\n'奇' = 0x02, 0x43\n'笼' = 0x02, 0x44\n'蘑' = 0x02, 0x45\n'菇' = 0x02, 0x46\n'惊' = 0x02, 0x47\n'险' = 0x02, 0x48\n'帘' = 0x02, 0x49\n'孤' = 0x02, 0x4A\n'独' = 0x02, 0x4B\n'食' = 0x02, 0x4C\n'花' = 0x02, 0x4D\n'又' = 0x02, 0x4E\n'五' = 0x02, 0x4F\n'个' = 0x02, 0x50\n'蠕' = 0x02, 0x51\n'指' = 0x02, 0x52\n'针' = 0x02, 0x53\n'楼' = 0x02, 0x54\n'恰' = 0x02, 0x55\n'好' = 0x02, 0x56\n'踏' = 0x02, 0x57\n'在' = 0x02, 0x58\n'正' = 0x02, 0x59\n'点' = 0x02, 0x5A\n'梭' = 0x02, 0x5B\n'云' = 0x02, 0x5C\n'集' = 0x02, 0x5D\n'风' = 0x02, 0x5E\n'荡' = 0x02, 0x5F\n'狡' = 0x02, 0x60\n'猾' = 0x02, 0x61\n'三' = 0x02, 0x62\n'某' = 0x02, 0x63\n'哇' = 0x02, 0x64\n'你' = 0x02, 0x66\n'闯' = 0x02, 0x67\n'入' = 0x02, 0x68\n'战' = 0x02, 0x69\n'场' = 0x02, 0x6A\n'啦' = 0x02, 0x6B\n'可' = 0x02, 0x6D\n'以' = 0x02, 0x6E\n'这' = 0x02, 0x6F\n'画' = 0x02, 0x70\n'偷' = 0x02, 0x71\n'走' = 0x02, 0x72\n'量' = 0x02, 0x73\n'先' = 0x02, 0x74\n'去' = 0x02, 0x75\n'问' = 0x02, 0x76\n'兵' = 0x02, 0x77\n'按' = 0x02, 0x79\n'开' = 0x02, 0x7A\n'始' = 0x02, 0x7B\n'对' = 0x02, 0x7C\n'话' = 0x02, 0x7D\n'，' = 0x02, 0x7F\n'从' = 0x02, 0x80\n'他' = 0x02, 0x81\n'伙' = 0x02, 0x82\n'伴' = 0x02, 0x83\n'那' = 0x02, 0x84\n'得' = 0x02, 0x85\n'如' = 0x02, 0x86\n'果' = 0x02, 0x87\n'需' = 0x02, 0x88\n'察' = 0x02, 0x89\n'路' = 0x02, 0x8A\n'面' = 0x02, 0x8B\n'它' = 0x02, 0x8C\n'或' = 0x02, 0x8D\n'翻' = 0x02, 0x8E\n'页' = 0x02, 0x8F\n'站' = 0x02, 0x90\n'其' = 0x02, 0x91\n'前' = 0x02, 0x92\n'们' = 0x02, 0x93\n'当' = 0x02, 0x94\n'瞎' = 0x02, 0x95\n'逛' = 0x02, 0x96\n'随' = 0x02, 0x97\n'能' = 0x02, 0x98\n'被' = 0x02, 0x99\n'珠' = 0x02, 0x9A\n'伤' = 0x02, 0x9B\n'些' = 0x02, 0x9C\n'敌' = 0x02, 0x9D\n'非' = 0x02, 0x9E\n'常' = 0x02, 0x9F\n'总' = 0x02, 0xA0\n'想' = 0x02, 0xA1\n'方' = 0x02, 0xA2\n'攻' = 0x02, 0xA3\n'击' = 0x02, 0xA4\n'片' = 0x02, 0xA5\n'草' = 0x02, 0xA6\n'原' = 0x02, 0xA7\n'就' = 0x02, 0xA8\n'变' = 0x02, 0xA9\n'纷' = 0x02, 0xAA\n'座' = 0x02, 0xAB\n'桥' = 0x02, 0xAC\n'沿' = 0x02, 0xAD\n'着' = 0x02, 0xAE\n'左' = 0x02, 0xAF\n'夺' = 0x02, 0xB0\n'一' = 0x02, 0xB1\n'啊' = 0x02, 0xB2\n'嘿' = 0x02, 0xB3\n'听' = 0x02, 0xB4\n'很' = 0x02, 0xB5\n'危' = 0x02, 0xB6\n'噢' = 0x02, 0xB7\n'忠' = 0x02, 0xB8\n'告' = 0x02, 0xB9\n'两' = 0x02, 0xBA\n'后' = 0x02, 0xBB\n'坠' = 0x02, 0xBC\n'会' = 0x02, 0xBD\n'强' = 0x02, 0xBE\n'千' = 0x02, 0xBF\n'万' = 0x02, 0xC0\n'让' = 0x02, 0xC1\n'边' = 0x02, 0xC2\n'都' = 0x02, 0xC3\n'忙' = 0x02, 0xC4\n'谢' = 0x02, 0xC5\n'现' = 0x02, 0xC6\n'只' = 0x02, 0xC7\n'哑' = 0x02, 0xC8\n'哈' = 0x02, 0xC9\n'但' = 0x02, 0xCA\n'真' = 0x02, 0xCB\n'刚' = 0x02, 0xCC\n'余' = 0x02, 0xCD\n'拿' = 0x02, 0xCE\n'更' = 0x02, 0xCF\n'多' = 0x02, 0xD0\n'往' = 0x02, 0xD1\n'新' = 0x02, 0xD2\n'等' = 0x02, 0xD3\n'别' = 0x02, 0xD4\n'忘' = 0x02, 0xD5\n'准' = 0x02, 0xD6\n'备' = 0x02, 0xD7\n'炮' = 0x02, 0xD8\n'所' = 0x02, 0xD9\n'介' = 0x02, 0xDA\n'意' = 0x02, 0xDB\n'顺' = 0x02, 0xDC\n'厉' = 0x02, 0xDD\n'害' = 0x02, 0xDE\n'而' = 0x02, 0xDF\n'且' = 0x02, 0xE0\n'迅' = 0x02, 0xE1\n'呢' = 0x02, 0xE2\n'追' = 0x02, 0xE3\n'名' = 0x02, 0xE4\n'鼎' = 0x02, 0xE5\n'赢' = 0x02, 0xE7\n'试' = 0x02, 0xE8\n'赌' = 0x02, 0xE9\n'次' = 0x02, 0xEA\n'跑' = 0x02, 0xEB\n'终' = 0x02, 0xEC\n'怎' = 0x02, 0xED\n'么' = 0x02, 0xEE\n'样' = 0x02, 0xEF\n'说' = 0x02, 0xF0\n'“' = 0x02, 0xF1\n'”' = 0x02, 0xF2\n'预' = 0x02, 0xF3\n'傻' = 0x02, 0xF4\n'瓜' = 0x02, 0xF5\n'全' = 0x02, 0xF6\n'程' = 0x02, 0xF7\n'候' = 0x02, 0xF8\n'再' = 0x02, 0xF9\n'呼' = 0x02, 0xFA\n'愿' = 0x02, 0xFB\n'服' = 0x02, 0xFC\n'输' = 0x02, 0xFD\n'满' = 0x02, 0xFE\n'嘴' = 0x02, 0xFF\n'牙' = 0x03, 0x00\n'带' = 0x03, 0x01\n'锁' = 0x03, 0x02\n'链' = 0x03, 0x03\n'靠' = 0x03, 0x04\n'近' = 0x03, 0x05\n'仔' = 0x03, 0x06\n'细' = 0x03, 0x07\n'吓' = 0x03, 0x08\n'坏' = 0x03, 0x09\n'桩' = 0x03, 0x0A\n'八' = 0x03, 0x0B\n'颗' = 0x03, 0x0C\n'久' = 0x03, 0x0D\n'见' = 0x03, 0x0E\n'加' = 0x03, 0x0F\n'甘' = 0x03, 0x10\n'峡' = 0x03, 0x11\n'谷' = 0x03, 0x12\n'踩' = 0x03, 0x13\n'戴' = 0x03, 0x14\n'砖' = 0x03, 0x15\n'游' = 0x03, 0x16\n'戏' = 0x03, 0x17\n'无' = 0x03, 0x18\n'绿' = 0x03, 0x19\n'透' = 0x03, 0x1A\n'明' = 0x03, 0x1B\n'将' = 0x03, 0x1C\n'经' = 0x03, 0x1D\n'错' = 0x03, 0x1E\n'拳' = 0x03, 0x1F\n'跃' = 0x03, 0x20\n'脚' = 0x03, 0x21\n'把' = 0x03, 0x22\n'什' = 0x03, 0x23\n'东' = 0x03, 0x24\n'西' = 0x03, 0x25\n'举' = 0x03, 0x26\n'起' = 0x03, 0x27\n'也' = 0x03, 0x28\n'扔' = 0x03, 0x29\n'龟' = 0x03, 0x2A\n'壳' = 0x03, 0x2B\n'乘' = 0x03, 0x2C\n'任' = 0x03, 0x2D\n'压' = 0x03, 0x2E\n'碎' = 0x03, 0x2F\n'统' = 0x03, 0x30\n'治' = 0x03, 0x31\n'者' = 0x03, 0x32\n'敢' = 0x03, 0x33\n'爬' = 0x03, 0x34\n'凭' = 0x03, 0x35\n'虽' = 0x03, 0x36\n'然' = 0x03, 0x37\n'侥' = 0x03, 0x38\n'幸' = 0x03, 0x39\n'躲' = 0x03, 0x3A\n'卫' = 0x03, 0x3B\n'永' = 0x03, 0x3C\n'远' = 0x03, 0x3D\n'逃' = 0x03, 0x3E\n'手' = 0x03, 0x3F\n'掌' = 0x03, 0x40\n'决' = 0x03, 0x41\n'须' = 0x03, 0x42\n'证' = 0x03, 0x43\n'己' = 0x03, 0x44\n'抱' = 0x03, 0x45\n'摔' = 0x03, 0x46\n'皇' = 0x03, 0x47\n'办' = 0x03, 0x48\n'困' = 0x03, 0x49\n'阿' = 0x03, 0x4A\n'睡' = 0x03, 0x4B\n'希' = 0x03, 0x4C\n'望' = 0x03, 0x4D\n'扰' = 0x03, 0x4E\n'请' = 0x03, 0x4F\n'轻' = 0x03, 0x50\n'廊' = 0x03, 0x51\n'放' = 0x03, 0x52\n'步' = 0x03, 0x53\n'亲' = 0x03, 0x54\n'：' = 0x03, 0x55\n'烤' = 0x03, 0x56\n'蛋' = 0x03, 0x57\n'糕' = 0x03, 0x58\n'桃' = 0x03, 0x59\n'欢' = 0x03, 0x5A\n'迎' = 0x03, 0x5B\n'钥' = 0x03, 0x5C\n'匙' = 0x03, 0x5D\n'扇' = 0x03, 0x5E\n'许' = 0x03, 0x5F\n'幅' = 0x03, 0x60\n'缺' = 0x03, 0x61\n'少' = 0x03, 0x62\n'尽' = 0x03, 0x63\n'嗨' = 0x03, 0x64\n'朱' = 0x03, 0x65\n'盖' = 0x03, 0x66\n'兄' = 0x03, 0x67\n'弟' = 0x03, 0x68\n'插' = 0x03, 0x69\n'播' = 0x03, 0x6A\n'报' = 0x03, 0x6B\n'展' = 0x03, 0x6C\n'学' = 0x03, 0x6D\n'悄' = 0x03, 0x6E\n'巧' = 0x03, 0x6F\n'缓' = 0x03, 0x70\n'慢' = 0x03, 0x71\n'重' = 0x03, 0x72\n'摄' = 0x03, 0x73\n'像' = 0x03, 0x74\n'同' = 0x03, 0x75\n'度' = 0x03, 0x76\n'观' = 0x03, 0x77\n'影' = 0x03, 0x78\n'嘟' = 0x03, 0x79\n'警' = 0x03, 0x7A\n'蓄' = 0x03, 0x7B\n'买' = 0x03, 0x7C\n'双' = 0x03, 0x7D\n'号' = 0x03, 0x7E\n'鞋' = 0x03, 0x7F\n'应' = 0x03, 0x80\n'交' = 0x03, 0x81\n'胜' = 0x03, 0x82\n'利' = 0x03, 0x83\n'恭' = 0x03, 0x84\n'喜' = 0x03, 0x85\n'级' = 0x03, 0x86\n'条' = 0x03, 0x87\n'直' = 0x03, 0x88\n'线' = 0x03, 0x89\n'连' = 0x03, 0x8A\n'右' = 0x03, 0x8B\n'环' = 0x03, 0x8C\n'传' = 0x03, 0x8D\n'送' = 0x03, 0x8E\n'管' = 0x03, 0x8F\n'柄' = 0x03, 0x90\n'简' = 0x03, 0x91\n'读' = 0x03, 0x92\n'牌' = 0x03, 0x93\n'杆' = 0x03, 0x94\n'控' = 0x03, 0x95\n'午' = 0x03, 0x96\n'外' = 0x03, 0x97\n'您' = 0x03, 0x98\n'达' = 0x03, 0x99\n'实' = 0x03, 0x9A\n'况' = 0x03, 0x9B\n'丢' = 0x03, 0x9C\n'作' = 0x03, 0x9D\n'专' = 0x03, 0x9E\n'佳' = 0x03, 0x9F\n'拍' = 0x03, 0xA0\n'停' = 0x03, 0xA1\n'周' = 0x03, 0xA2\n'围' = 0x03, 0xA3\n'情' = 0x03, 0xA4\n'切' = 0x03, 0xA5\n'换' = 0x03, 0xA6\n'习' = 0x03, 0xA7\n'操' = 0x03, 0xA8\n'导' = 0x03, 0xA9\n'共' = 0x03, 0xAA\n'般' = 0x03, 0xAB\n'推' = 0x03, 0xAC\n'荐' = 0x03, 0xAD\n'改' = 0x03, 0xAE\n'跟' = 0x03, 0xAF\n'漏' = 0x03, 0xB0\n'哦' = 0x03, 0xB1\n'暂' = 0x03, 0xB2\n'模' = 0x03, 0xB3\n'式' = 0x03, 0xB4\n'运' = 0x03, 0xB5\n'旨' = 0x03, 0xB6\n'此' = 0x03, 0xB7\n'禁' = 0x03, 0xB8\n'止' = 0x03, 0xB9\n'参' = 0x03, 0xBA\n'绝' = 0x03, 0xBB\n'弃' = 0x03, 0xBC\n'芒' = 0x03, 0xBD\n'赏' = 0x03, 0xBE\n'赐' = 0x03, 0xBF\n'物' = 0x03, 0xC0\n'土' = 0x03, 0xC1\n'露' = 0x03, 0xC2\n'位' = 0x03, 0xC3\n'置' = 0x03, 0xC4\n'提' = 0x03, 0xC5\n'示' = 0x03, 0xC6\n'每' = 0x03, 0xC7\n'注' = 0x03, 0xC8\n'川' = 0x03, 0xC9\n'裂' = 0x03, 0xCA\n'缝' = 0x03, 0xCB\n'结' = 0x03, 0xCC\n'祝' = 0x03, 0xCD\n'峭' = 0x03, 0xCE\n'缘' = 0x03, 0xCF\n'悬' = 0x03, 0xD0\n'挂' = 0x03, 0xD1\n'；' = 0x03, 0xD2\n'崖' = 0x03, 0xD3\n'拉' = 0x03, 0xD4\n'则' = 0x03, 0xD5\n'鸟' = 0x03, 0xD6\n'谁' = 0x03, 0xD7\n'吵' = 0x03, 0xD8\n'醒' = 0x03, 0xD9\n'白' = 0x03, 0xDA\n'觉' = 0x03, 0xDB\n'喂' = 0x03, 0xDC\n'既' = 0x03, 0xDD\n'短' = 0x03, 0xDE\n'途' = 0x03, 0xDF\n'松' = 0x03, 0xE0\n'牢' = 0x03, 0xE1\n'陆' = 0x03, 0xE2\n'握' = 0x03, 0xE3\n'种' = 0x03, 0xE4\n'首' = 0x03, 0xE5\n'二' = 0x03, 0xE7\n'蹲' = 0x03, 0xE8\n'做' = 0x03, 0xE9\n'碰' = 0x03, 0xEA\n'练' = 0x03, 0xEB\n'另' = 0x03, 0xEC\n'获' = 0x03, 0xED\n'熟' = 0x03, 0xEE\n'生' = 0x03, 0xEF\n'斜' = 0x03, 0xF0\n'屁' = 0x03, 0xF1\n'股' = 0x03, 0xF2\n'担' = 0x03, 0xF3\n'容' = 0x03, 0xF4\n'易' = 0x03, 0xF5\n'树' = 0x03, 0xF6\n'旗' = 0x03, 0xF7\n'拔' = 0x03, 0xF8\n'绕' = 0x03, 0xF9\n'倒' = 0x03, 0xFA\n'姿' = 0x03, 0xFB\n'势' = 0x03, 0xFC\n'漂' = 0x03, 0xFD\n'亮' = 0x03, 0xFE\n'侧' = 0x03, 0xFF\n'弯' = 0x04, 0x00\n'论' = 0x04, 0x01\n'滞' = 0x04, 0x02\n'触' = 0x04, 0x03\n'减' = 0x04, 0x04\n'知' = 0x04, 0x05\n'挺' = 0x04, 0x06\n'冠' = 0x04, 0x07\n'军' = 0x04, 0x08\n'纪' = 0x04, 0x09\n'录' = 0x04, 0x0A\n'太' = 0x04, 0x0B\n'难' = 0x04, 0x0C\n'信' = 0x04, 0x0D\n'棒' = 0x04, 0x0E\n'孩' = 0x04, 0x0F\n'她' = 0x04, 0x10\n'究' = 0x04, 0x11\n'竟' = 0x04, 0x12\n'哪' = 0x04, 0x13\n'感' = 0x04, 0x14\n'受' = 0x04, 0x15\n'激' = 0x04, 0x16\n'根' = 0x04, 0x17\n'本' = 0x04, 0x18\n'父' = 0x04, 0x19\n'母' = 0x04, 0x1A\n'肯' = 0x04, 0x1B\n'死' = 0x04, 0x1C\n'氧' = 0x04, 0x1D\n'泡' = 0x04, 0x1E\n'吸' = 0x04, 0x1F\n'泳' = 0x04, 0x20\n'稳' = 0x04, 0x21\n'节' = 0x04, 0x22\n'奏' = 0x04, 0x23\n'笑' = 0x04, 0x24\n'怕' = 0x04, 0x25\n'烧' = 0x04, 0x26\n'甚' = 0x04, 0x27\n'至' = 0x04, 0x28\n'唯' = 0x04, 0x29\n'惑' = 0x04, 0x2A\n'因' = 0x04, 0x2B\n'骗' = 0x04, 0x2C\n'升' = 0x04, 0x2D\n'课' = 0x04, 0x2E\n'蛙' = 0x04, 0x2F\n'频' = 0x04, 0x30\n'率' = 0x04, 0x31\n'合' = 0x04, 0x32\n'适' = 0x04, 0x33\n'表' = 0x04, 0x34\n'值' = 0x04, 0x35\n'低' = 0x04, 0x36\n'喘' = 0x04, 0x37\n'事' = 0x04, 0x38\n'够' = 0x04, 0x39\n'残' = 0x04, 0x3A\n'忍' = 0x04, 0x3B\n'喷' = 0x04, 0x3C\n'焰' = 0x04, 0x3D\n'成' = 0x04, 0x3E\n'焦' = 0x04, 0x3F\n'炭' = 0x04, 0x40\n'尾' = 0x04, 0x41\n'巴' = 0x04, 0x42\n'瞄' = 0x04, 0x43\n'命' = 0x04, 0x44\n'象' = 0x04, 0x45\n'懦' = 0x04, 0x46\n'夫' = 0x04, 0x47\n'掉' = 0x04, 0x48\n'烫' = 0x04, 0x49\n'乱' = 0x04, 0x4A\n'仍' = 0x04, 0x4B\n'持' = 0x04, 0x4C\n'静' = 0x04, 0x4D\n'撞' = 0x04, 0x4E\n'反' = 0x04, 0x4F\n'较' = 0x04, 0x54\n'显' = 0x04, 0x55\n'烟' = 0x04, 0x56\n'眩' = 0x04, 0x57\n'晕' = 0x04, 0x58\n'鲜' = 0x04, 0x59\n'圈' = 0x04, 0x5A\n'避' = 0x04, 0x5B\n'免' = 0x04, 0x5C\n'吹' = 0x04, 0x5D\n'朋' = 0x04, 0x5E\n'友' = 0x04, 0x5F\n'照' = 0x04, 0x60\n'序' = 0x04, 0x61\n'建' = 0x04, 0x62\n'筑' = 0x04, 0x63\n'背' = 0x04, 0x64\n'干' = 0x04, 0x65\n'解' = 0x04, 0x66\n'救' = 0x04, 0x67\n'封' = 0x04, 0x68\n'监' = 0x04, 0x69\n'恢' = 0x04, 0x6A\n'诉' = 0x04, 0x6B\n'超' = 0x04, 0x6C\n'猜' = 0x04, 0x6D\n'令' = 0x04, 0x6E\n'相' = 0x04, 0x6F\n'黄' = 0x04, 0x70\n'消' = 0x04, 0x71\n'惜' = 0x04, 0x72\n'嘻' = 0x04, 0x73\n'幽' = 0x04, 0x74\n'默' = 0x04, 0x75\n'咿' = 0x04, 0x76\n'答' = 0x04, 0x77\n'案' = 0x04, 0x78\n'市' = 0x04, 0x79\n'深' = 0x04, 0x7A\n'访' = 0x04, 0x7B\n'队' = 0x04, 0x7C\n'早' = 0x04, 0x7D\n'瞧' = 0x04, 0x7E\n'迟' = 0x04, 0x7F\n'晚' = 0x04, 0x80\n'赶' = 0x04, 0x81\n'及' = 0x04, 0x82\n'礼' = 0x04, 0x83\n'约' = 0x04, 0x84\n'墓' = 0x04, 0x85\n'章' = 0x04, 0x86\n'缭' = 0x04, 0x87\n'圣' = 0x04, 0x88\n'诞' = 0x04, 0x89\n'钻' = 0x04, 0x8A\n'囱' = 0x04, 0x8B\n'工' = 0x04, 0x8C\n'充' = 0x04, 0x8D\n'啧' = 0x04, 0x8E\n'浓' = 0x04, 0x8F\n'雾' = 0x04, 0x90\n'湖' = 0x04, 0x91\n'烦' = 0x04, 0x92\n'儿' = 0x04, 0x93\n'吐' = 0x04, 0x94\n'坡' = 0x04, 0x95\n'内' = 0x04, 0x96\n'讲' = 0x04, 0x97\n'窄' = 0x04, 0x98\n'胆' = 0x04, 0x99\n'呵' = 0x04, 0x9A\n'哼' = 0x04, 0x9B\n'安' = 0x04, 0x9C\n'恙' = 0x04, 0x9D\n'拦' = 0x04, 0x9E\n'欠' = 0x04, 0x9F\n'咳' = 0x04, 0xA0\n'苦' = 0x04, 0xA1\n'羞' = 0x04, 0xA2\n'端' = 0x04, 0xA3\n'灯' = 0x04, 0xA4\n'烁' = 0x04, 0xA5\n'敏' = 0x04, 0xA6\n'捷' = 0x04, 0xA7\n'便' = 0x04, 0xA8\n'活' = 0x04, 0xA9\n'离' = 0x04, 0xAA\n'轰' = 0x04, 0xAB\n'恶' = 0x04, 0xAC\n'剧' = 0x04, 0xAD\n'丧' = 0x04, 0xAE\n'历' = 0x04, 0xAF\n'拖' = 0x04, 0xB0\n'脸' = 0x04, 0xB1\n'肩' = 0x04, 0xB2\n'架' = 0x04, 0xB3\n'壮' = 0x04, 0xB4\n'美' = 0x04, 0xB5\n'温' = 0x04, 0xB6\n'暖' = 0x04, 0xB7\n'补' = 0x04, 0xB8\n'检' = 0x04, 0xB9\n'摸' = 0x04, 0xBA\n'殊' = 0x04, 0xBB\n'愤' = 0x04, 0xBC\n'造' = 0x04, 0xBD\n'铺' = 0x04, 0xBE\n'却' = 0x04, 0xBF\n'散' = 0x04, 0xC0\n'臭' = 0x04, 0xC1\n'垫' = 0x04, 0xC2\n'砾' = 0x04, 0xC3\n'嗯' = 0x04, 0xC4\n'投' = 0x04, 0xC5\n'教' = 0x04, 0xC6\n'训' = 0x04, 0xC7\n'遵' = 0x04, 0xC8\n'言' = 0x04, 0xC9\n'菜' = 0x04, 0xCA\n'印' = 0x04, 0xCB\n'侵' = 0x04, 0xCC\n'卵' = 0x04, 0xCD\n'今' = 0x04, 0xCE\n'粗' = 0x04, 0xCF\n'乎' = 0x04, 0xD0\n'料' = 0x04, 0xD1\n'拥' = 0x04, 0xD2\n'付' = 0x04, 0xD3\n'代' = 0x04, 0xD4\n'价' = 0x04, 0xD5\n'状' = 0x04, 0xD6\n'态' = 0x04, 0xD7\n'层' = 0x04, 0xD8\n'束' = 0x04, 0xD9\n'局' = 0x04, 0xDA\n'阅' = 0x04, 0xDB\n'朝' = 0x04, 0xDC\n'驶' = 0x04, 0xDD\n'闭' = 0x04, 0xDE\n'泊' = 0x04, 0xDF\n'废' = 0x04, 0xE0\n'矿' = 0x04, 0xE1\n'龙' = 0x04, 0xE2\n'敲' = 0x04, 0xE3\n'餐' = 0x04, 0xE4\n'尊' = 0x04, 0xE5\n'敬' = 0x04, 0xE6\n'违' = 0x04, 0xE7\n'规' = 0x04, 0xE8\n'障' = 0x04, 0xE9\n'碍' = 0x04, 0xEA\n'旦' = 0x04, 0xEB\n'漫' = 0x04, 0xEC\n'驾' = 0x04, 0xED\n'遥' = 0x04, 0xEE\n'耍' = 0x04, 0xEF\n'赖' = 0x04, 0xF0\n'抄' = 0x04, 0xF1\n'懂' = 0x04, 0xF2\n'理' = 0x04, 0xF3\n'取' = 0x04, 0xF4\n'资' = 0x04, 0xF5\n'格' = 0x04, 0xF6\n'竞' = 0x04, 0xF7\n'争' = 0x04, 0xF8\n'兴' = 0x04, 0xF9\n'创' = 0x04, 0xFA\n'借' = 0x04, 0xFB\n'第' = 0x04, 0xFC\n'称' = 0x04, 0xFD\n'品' = 0x04, 0xFE\n'尝' = 0x04, 0xFF\n'六' = 0x05, 0x00\n'几' = 0x05, 0x01\n'部' = 0x05, 0x02\n'油' = 0x05, 0x03\n'启' = 0x05, 0x04\n'区' = 0x05, 0x05\n'域' = 0x05, 0x06\n'断' = 0x05, 0x07\n'乐' = 0x05, 0x08\n'缠' = 0x05, 0x09\n'哥' = 0x05, 0x0A\n'揭' = 0x05, 0x0B\n'亏' = 0x05, 0x0C\n'挑' = 0x05, 0x0D\n'形' = 0x05, 0x0E\n'－' = 0x05, 0x0F\n'淹' = 0x05, 0x10\n'糟' = 0x05, 0x11\n'蹋' = 0x05, 0x12\n'呜' = 0x05, 0x13\n'晶' = 0x05, 0x14\n'湿' = 0x05, 0x15\n'叔' = 0x05, 0x16\n'蚂' = 0x05, 0x17\n'蚁' = 0x05, 0x18\n'蚤' = 0x05, 0x19\n'惹' = 0x05, 0x1A\n'吞' = 0x05, 0x1B\n'闷' = 0x05, 0x1C\n'渊' = 0x05, 0x1D\n'冒' = 0x05, 0x1E\n'息' = 0x05, 0x1F\n'十' = 0x05, 0x20\n'组' = 0x05, 0x21\n'群' = 0x05, 0x22\n'思' = 0x05, 0x23\n'议' = 0x05, 0x24\n'归' = 0x05, 0x25\n'恨' = 0x05, 0x26\n'期' = 0x05, 0x27\n'待' = 0x05, 0x28\n'精' = 0x05, 0x29\n'昏' = 0x05, 0x2A\n'承' = 0x05, 0x2B\n'责' = 0x05, 0x2C\n'私' = 0x05, 0x2D\n'遇' = 0x05, 0x2E\n'灾' = 0x05, 0x2F\n"
  },
  {
    "path": "charmap_menu.txt",
    "content": "// Menu HUD chars, only used in JP\n// Char values used by text_menu_strings.h.in\n'フ' = 0x00\n'ァ' = 0x01\n'イ' = 0x02\n'ル' = 0x03\n'セ' = 0x04\n'レ' = 0x05\n'ク' = 0x06\n'ト' = 0x07\n'を' = 0x08\n'コ' = 0x09\n'ピ' = 0x0A\n'ー' = 0x0B\n'す' = 0x0C\n'る' = 0x0D\n'け' = 0x0E\n'マ' = 0x0F\n'リ' = 0x10\n'オ' = 0x11\n'ス' = 0x12\n'ア' = 0x13\n'み' = 0x14\n'ど' = 0x15\n'の' = 0x16\n'？' = 0x17\n'サ' = 0x18\n'ウ' = 0x19\n'ン' = 0x1A\n'ド' = 0x1B\n"
  },
  {
    "path": "data/behavior_data.c",
    "content": "#define OBJECT_FIELDS_INDEX_DIRECTLY\n\n#include \"sm64.h\"\n\n#include \"object_constants.h\"\n#include \"game/object_list_processor.h\"\n#include \"game/interaction.h\"\n#include \"game/behavior_actions.h\"\n#include \"game/mario_actions_cutscene.h\"\n#include \"game/mario_misc.h\"\n#include \"game/object_helpers.h\"\n#include \"game/debug.h\"\n#include \"menu/file_select.h\"\n#include \"engine/surface_load.h\"\n\n#include \"actors/common0.h\"\n#include \"actors/common1.h\"\n#include \"actors/group1.h\"\n#include \"actors/group2.h\"\n#include \"actors/group3.h\"\n#include \"actors/group4.h\"\n#include \"actors/group5.h\"\n#include \"actors/group6.h\"\n#include \"actors/group7.h\"\n#include \"actors/group8.h\"\n#include \"actors/group9.h\"\n#include \"actors/group10.h\"\n#include \"actors/group11.h\"\n#include \"actors/group12.h\"\n#include \"actors/group13.h\"\n#include \"actors/group14.h\"\n#include \"actors/group15.h\"\n#include \"actors/group16.h\"\n#include \"actors/group17.h\"\n#include \"levels/bbh/header.h\"\n#include \"levels/castle_inside/header.h\"\n#include \"levels/hmc/header.h\"\n#include \"levels/ssl/header.h\"\n#include \"levels/bob/header.h\"\n#include \"levels/sl/header.h\"\n#include \"levels/wdw/header.h\"\n#include \"levels/jrb/header.h\"\n#include \"levels/thi/header.h\"\n#include \"levels/ttc/header.h\"\n#include \"levels/rr/header.h\"\n#include \"levels/castle_grounds/header.h\"\n#include \"levels/bitdw/header.h\"\n#include \"levels/lll/header.h\"\n#include \"levels/sa/header.h\"\n#include \"levels/bitfs/header.h\"\n#include \"levels/ddd/header.h\"\n#include \"levels/wf/header.h\"\n#include \"levels/bowser_2/header.h\"\n#include \"levels/ttm/header.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"behavior_data.h\"\n\n#define BC_B(a) _SHIFTL(a, 24, 8)\n#define BC_BB(a, b) (_SHIFTL(a, 24, 8) | _SHIFTL(b, 16, 8))\n#define BC_BBBB(a, b, c, d) (_SHIFTL(a, 24, 8) | _SHIFTL(b, 16, 8) | _SHIFTL(c, 8, 8) | _SHIFTL(d, 0, 8))\n#define BC_BBH(a, b, c) (_SHIFTL(a, 24, 8) | _SHIFTL(b, 16, 8) | _SHIFTL(c, 0, 16))\n#define BC_B0H(a, b) (_SHIFTL(a, 24, 8) | _SHIFTL(b, 0, 16))\n#define BC_H(a) _SHIFTL(a, 16, 16)\n#define BC_HH(a, b) (_SHIFTL(a, 16, 16) | _SHIFTL(b, 0, 16))\n#define BC_W(a) ((uintptr_t)(u32)(a))\n#define BC_PTR(a) ((uintptr_t)(a))\n\n\n// Defines the start of the behavior script as well as the object list the object belongs to.\n// Has some special behavior for certain objects.\n#define BEGIN(objList) \\\n    BC_BB(0x00, objList)\n\n// Delays the behavior script for a certain number of frames.\n#define DELAY(num) \\\n    BC_B0H(0x01, num)\n\n// Jumps to a new behavior command and stores the return address in the object's stack.\n#define CALL(addr) \\\n    BC_B(0x02), \\\n    BC_PTR(addr)\n\n// Jumps back to the behavior command stored in the object's stack.\n#define RETURN() \\\n    BC_B(0x03)\n\n// Jumps to a new behavior script without saving anything.\n#define GOTO(addr) \\\n    BC_B(0x04), \\\n    BC_PTR(addr)\n\n// Marks the start of a loop that will repeat a certain number of times.\n#define BEGIN_REPEAT(count) \\\n    BC_B0H(0x05, count)\n\n// Marks the end of a repeating loop.\n#define END_REPEAT() \\\n    BC_B(0x06)\n\n// Also marks the end of a repeating loop, but continues executing commands following the loop on the same frame.\n#define END_REPEAT_CONTINUE() \\\n    BC_B(0x07)\n\n// Marks the beginning of an infinite loop.\n#define BEGIN_LOOP() \\\n    BC_B(0x08)\n\n// Marks the end of an infinite loop.\n#define END_LOOP() \\\n    BC_B(0x09)\n\n// Exits the behavior script.\n// Often used to end behavior scripts that do not contain an infinite loop.\n#define BREAK() \\\n    BC_B(0x0A)\n\n// Exits the behavior script, unused.\n#define BREAK_UNUSED() \\\n    BC_B(0x0B)\n\n// Executes a native game function.\n#define CALL_NATIVE(func) \\\n    BC_B(0x0C), \\\n    BC_PTR(func)\n\n// Adds a float to the specified field.\n#define ADD_FLOAT(field, value) \\\n    BC_BBH(0x0D, field, value)\n\n// Sets the specified field to a float.\n#define SET_FLOAT(field, value) \\\n    BC_BBH(0x0E, field, value)\n\n// Adds an integer to the specified field.\n#define ADD_INT(field, value) \\\n    BC_BBH(0x0F, field, value)\n\n// Sets the specified field to an integer.\n#define SET_INT(field, value) \\\n    BC_BBH(0x10, field, value)\n\n// Performs a bitwise OR with the specified field and the given integer.\n// Usually used to set an object's flags.\n#define OR_INT(field, value) \\\n    BC_BBH(0x11, field, value)\n\n// Performs a bit clear with the specified short. Unused in favor of the 32-bit version.\n#define BIT_CLEAR(field, value) \\\n    BC_BBH(0x12, field, value)\n\n// TODO: this one needs a better name / labelling\n// Gets a random short, right shifts it the specified amount and adds min to it, then sets the specified field to that value.\n#define SET_INT_RAND_RSHIFT(field, min, rshift) \\\n    BC_BBH(0x13, field, min), \\\n    BC_H(rshift)\n\n// Sets the specified field to a random float in the given range.\n#define SET_RANDOM_FLOAT(field, min, range) \\\n    BC_BBH(0x14, field, min), \\\n    BC_H(range)\n\n// Sets the specified field to a random integer in the given range.\n#define SET_RANDOM_INT(field, min, range) \\\n    BC_BBH(0x15, field, min), \\\n    BC_H(range)\n\n// Adds a random float in the given range to the specified field.\n#define ADD_RANDOM_FLOAT(field, min, range) \\\n    BC_BBH(0x16, field, min), \\\n    BC_H(range)\n\n// TODO: better name (unused anyway)\n// Gets a random short, right shifts it the specified amount and adds min to it, then adds the value to the specified field. Unused.\n#define ADD_INT_RAND_RSHIFT(field, min, rshift) \\\n    BC_BBH(0x17, field, min), \\\n    BC_H(rshift)\n\n// No operation. Unused.\n#define CMD_NOP_1(field) \\\n    BC_BB(0x18, field)\n\n// No operation. Unused.\n#define CMD_NOP_2(field) \\\n    BC_BB(0x19, field)\n\n// No operation. Unused.\n#define CMD_NOP_3(field) \\\n    BC_BB(0x1A, field)\n\n// Sets the current model ID of the object.\n#define SET_MODEL(modelID) \\\n    BC_B0H(0x1B, modelID)\n\n// Spawns a child object with the specified model and behavior.\n#define SPAWN_CHILD(modelID, behavior) \\\n    BC_B(0x1C), \\\n    BC_W(modelID), \\\n    BC_PTR(behavior)\n\n// Exits the behavior script and despawns the object.\n// Often used to end behavior scripts that do not contain an infinite loop.\n#define DEACTIVATE() \\\n    BC_B(0x1D)\n\n// Finds the floor triangle directly under the object and moves the object down to it.\n#define DROP_TO_FLOOR() \\\n    BC_B(0x1E)\n\n// Sets the destination float field to the sum of the values of the given float fields.\n#define SUM_FLOAT(fieldDst, fieldSrc1, fieldSrc2) \\\n    BC_BBBB(0x1F, fieldDst, fieldSrc1, fieldSrc2)\n\n// Sets the destination integer field to the sum of the values of the given integer fields. Unused.\n#define SUM_INT(fieldDst, fieldSrc1, fieldSrc2) \\\n    BC_BBBB(0x20, fieldDst, fieldSrc1, fieldSrc2)\n\n// Billboards the current object, making it always face the camera.\n#define BILLBOARD() \\\n    BC_B(0x21)\n\n// Hides the current object.\n#define HIDE() \\\n    BC_B(0x22)\n\n// Sets the size of the object's cylindrical hitbox.\n#define SET_HITBOX(radius, height) \\\n    BC_B(0x23), \\\n    BC_HH(radius, height)\n\n// No operation. Unused.\n#define CMD_NOP_4(field, value) \\\n    BC_BBH(0x24, field, value)\n\n// Delays the behavior script for the number of frames given by the value of the specified field.\n#define DELAY_VAR(field) \\\n    BC_BB(0x25, field)\n\n// Unused. Marks the start of a loop that will repeat a certain number of times.\n// Uses a u8 as the argument, instead of a s16 like the other version does.\n#define BEGIN_REPEAT_UNUSED(count) \\\n    BC_BB(0x26, count)\n\n// Loads the animations for the object. <field> is always set to oAnimations.\n#define LOAD_ANIMATIONS(field, anims) \\\n    BC_BB(0x27, field), \\\n    BC_PTR(anims)\n\n// Begins animation and sets the object's current animation index to the specified value.\n#define ANIMATE(animIndex) \\\n    BC_BB(0x28, animIndex)\n\n// Spawns a child object with the specified model and behavior, plus a behavior param.\n#define SPAWN_CHILD_WITH_PARAM(bhvParam, modelID, behavior) \\\n    BC_B0H(0x29, bhvParam), \\\n    BC_W(modelID), \\\n    BC_PTR(behavior)\n\n// Loads collision data for the object.\n#define LOAD_COLLISION_DATA(collisionData) \\\n    BC_B(0x2A), \\\n    BC_PTR(collisionData)\n\n// Sets the size of the object's cylindrical hitbox, and applies a downwards offset.\n#define SET_HITBOX_WITH_OFFSET(radius, height, downOffset) \\\n    BC_B(0x2B), \\\n    BC_HH(radius, height), \\\n    BC_H(downOffset)\n\n// Spawns a new object with the specified model and behavior.\n#define SPAWN_OBJ(modelID, behavior) \\\n    BC_B(0x2C), \\\n    BC_W(modelID), \\\n    BC_PTR(behavior)\n\n// Sets the home position of the object to its current position.\n#define SET_HOME() \\\n    BC_B(0x2D)\n\n// Sets the size of the object's cylindrical hurtbox.\n#define SET_HURTBOX(radius, height) \\\n    BC_B(0x2E), \\\n    BC_HH(radius, height)\n\n// Sets the object's interaction type.\n#define SET_INTERACT_TYPE(type) \\\n    BC_B(0x2F), \\\n    BC_W(type)\n\n// Sets various parameters that the object uses for calculating physics.\n#define SET_OBJ_PHYSICS(wallHitboxRadius, gravity, bounciness, dragStrength, friction, buoyancy, unused1, unused2) \\\n    BC_B(0x30), \\\n    BC_HH(wallHitboxRadius, gravity), \\\n    BC_HH(bounciness, dragStrength), \\\n    BC_HH(friction, buoyancy), \\\n    BC_HH(unused1, unused2)\n\n// Sets the object's interaction subtype. Unused.\n#define SET_INTERACT_SUBTYPE(subtype) \\\n    BC_B(0x31), \\\n    BC_W(subtype)\n\n// Sets the object's size to the specified percentage.\n#define SCALE(unusedField, percent) \\\n    BC_BBH(0x32, unusedField, percent)\n\n// Performs a bit clear on the object's parent's field with the specified value.\n// Used for clearing active particle flags fron Mario's object.\n#define PARENT_BIT_CLEAR(field, flags) \\\n    BC_BB(0x33, field), \\\n    BC_W(flags)\n\n// Animates an object using texture animation. <field> is always set to oAnimState.\n#define ANIMATE_TEXTURE(field, rate) \\\n    BC_BBH(0x34, field, rate)\n\n// Disables rendering for the object.\n#define DISABLE_RENDERING() \\\n    BC_B(0x35)\n\n// Unused. Sets the specified field to an integer. Wastes 4 bytes of space for no reason at all.\n#define SET_INT_UNUSED(field, value) \\\n    BC_BB(0x36, field), \\\n    BC_HH(0, value)\n\n// Spawns a water droplet with the given parameters.\n#define SPAWN_WATER_DROPLET(dropletParams) \\\n    BC_B(0x37), \\\n    BC_PTR(dropletParams)\n\n\nconst BehaviorScript bhvStarDoor[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    SET_INT(oInteractType, INTERACT_DOOR),\n    LOAD_COLLISION_DATA(inside_castle_seg7_collision_star_door),\n    SET_INT(oInteractionSubtype, INT_SUBTYPE_STAR_DOOR),\n    OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_HITBOX(/*Radius*/ 80, /*Height*/ 100),\n    SET_HOME(),\n    SET_FLOAT(oDrawingDistance, 20000),\n    CALL_NATIVE(bhv_door_init),\n    SET_INT(oIntangibleTimer, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_star_door_loop),\n        CALL_NATIVE(bhv_star_door_loop_2),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvMrI[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_HOME(),\n    SPAWN_CHILD(/*Model*/ MODEL_MR_I_IRIS, /*Behavior*/ bhvMrIBody),\n    SET_MODEL(MODEL_MR_I),\n    BILLBOARD(),\n    CALL_NATIVE(bhv_init_room),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_mr_i_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvMrIBody[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    CALL_NATIVE(bhv_init_room),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_mr_i_body_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvMrIParticle[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    BILLBOARD(),\n    OR_INT(oFlags, (OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_INT(oIntangibleTimer, 0),\n    SET_HITBOX(50, 50),\n    SET_INT(oDamageOrCoinValue, 1),\n    SET_INT(oInteractType, INTERACT_DAMAGE),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ 0, /*Bounciness*/ 0, /*Drag strength*/ 0, /*Friction*/ 0, /*Buoyancy*/ 0, /*Unused*/ 0, 0),\n    CALL_NATIVE(bhv_init_room),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_mr_i_particle_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvPurpleParticle[] = {\n    BEGIN(OBJ_LIST_UNIMPORTANT),\n    BILLBOARD(),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BEGIN_REPEAT(10),\n        CALL_NATIVE(bhv_piranha_particle_loop),\n    END_REPEAT(),\n    DEACTIVATE(),\n};\n\nconst BehaviorScript bhvGiantPole[] = {\n    BEGIN(OBJ_LIST_POLELIKE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_INT(oInteractType, INTERACT_POLE),\n    SET_HITBOX(/*Radius*/ 80, /*Height*/ 2100),\n    SET_HOME(),\n    SET_INT(oIntangibleTimer, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_giant_pole_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvPoleGrabbing[] = {\n    BEGIN(OBJ_LIST_POLELIKE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_INT(oInteractType, INTERACT_POLE),\n    SET_HITBOX(/*Radius*/ 80, /*Height*/ 1500),\n    CALL_NATIVE(bhv_pole_init),\n    SET_INT(oIntangibleTimer, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_pole_base_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvTHIHugeIslandTop[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_COLLISION_DATA(thi_seg7_collision_top_trap),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_thi_huge_island_top_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvTHITinyIslandTop[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_thi_tiny_island_top_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvCapSwitchBase[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(capswitch_collision_05003448),\n    BEGIN_LOOP(),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvCapSwitch[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(capswitch_collision_050033D0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_cap_switch_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvKingBobomb[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, king_bobomb_seg5_anims_0500FE30),\n    SET_INT(oInteractType, INTERACT_GRABBABLE),\n    SET_HITBOX(/*Radius*/ 100, /*Height*/ 100),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ -400, /*Bounciness*/ -50, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    SET_INT(oIntangibleTimer, 0),\n    DROP_TO_FLOOR(),\n    SET_HOME(),\n    SPAWN_OBJ(/*Model*/ MODEL_NONE, /*Behavior*/ bhvBobombAnchorMario),\n    SET_INT(oHealth, 3),\n    SET_INT(oDamageOrCoinValue, 1),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_king_bobomb_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBobombAnchorMario[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BILLBOARD(),\n    SET_FLOAT(oParentRelativePosX, 100),\n    SET_FLOAT(oParentRelativePosZ, 150),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_bobomb_anchor_mario_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBetaChestBottom[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    DROP_TO_FLOOR(),\n    CALL_NATIVE(bhv_beta_chest_bottom_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_beta_chest_bottom_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBetaChestLid[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_beta_chest_lid_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBubbleParticleSpawner[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    DISABLE_RENDERING(),\n    SET_RANDOM_INT(oWaterObjUnkF4, /*Minimum*/ 2, /*Range*/ 9),\n    DELAY_VAR(oWaterObjUnkF4),\n    SPAWN_CHILD(/*Model*/ MODEL_BUBBLE, /*Behavior*/ bhvSmallWaterWave),\n    PARENT_BIT_CLEAR(oActiveParticleFlags, ACTIVE_PARTICLE_BUBBLE),\n    DEACTIVATE(),\n};\n\nconst BehaviorScript bhvBubbleMaybe[] = {\n    BEGIN(OBJ_LIST_UNIMPORTANT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BILLBOARD(),\n    CALL_NATIVE(bhv_bubble_wave_init),\n    SET_RANDOM_FLOAT(oWaterObjUnkF4, /*Minimum*/ -75, /*Range*/ 150),\n    SET_RANDOM_FLOAT(oWaterObjUnkF8, /*Minimum*/ -75, /*Range*/ 150),\n    SET_RANDOM_FLOAT(oWaterObjUnkFC, /*Minimum*/ -75, /*Range*/ 150),\n    SUM_FLOAT(/*Dest*/ oPosX, /*Value 1*/ oPosX, /*Value 2*/ oWaterObjUnkF4),\n    SUM_FLOAT(/*Dest*/ oPosZ, /*Value 1*/ oPosZ, /*Value 2*/ oWaterObjUnkF8),\n    SUM_FLOAT(/*Dest*/ oPosY, /*Value 1*/ oPosY, /*Value 2*/ oWaterObjUnkFC),\n    SET_INT(oAnimState, -1),\n    BEGIN_REPEAT(60),\n        ADD_INT(oAnimState, 1),\n        CALL_NATIVE(bhv_bubble_maybe_loop),\n    END_REPEAT(),\n    DEACTIVATE(),\n};\n\nconst BehaviorScript bhvSmallWaterWave[] = {\n    BEGIN(OBJ_LIST_UNIMPORTANT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BILLBOARD(),\n    CALL_NATIVE(bhv_bubble_wave_init),\n    SET_RANDOM_FLOAT(oWaterObjUnkF4, /*Minimum*/ -50, /*Range*/ 100),\n    SET_RANDOM_FLOAT(oWaterObjUnkF8, /*Minimum*/ -50, /*Range*/ 100),\n    SUM_FLOAT(/*Dest*/ oPosX, /*Value 1*/ oPosX, /*Value 2*/ oWaterObjUnkF4),\n    SUM_FLOAT(/*Dest*/ oPosZ, /*Value 1*/ oPosZ, /*Value 2*/ oWaterObjUnkF8),\n    SET_RANDOM_FLOAT(oWaterObjUnkFC, /*Minimum*/ 0, /*Range*/ 50),\n    SUM_FLOAT(/*Dest*/ oPosY, /*Value 1*/ oPosY, /*Value 2*/ oWaterObjUnkFC),\n    SET_INT(oAnimState, -1),\n    CALL(bhvSmallWaterWave398),\n    BEGIN_REPEAT(60),\n        CALL(bhvSmallWaterWave398),\n        CALL_NATIVE(bhv_small_water_wave_loop),\n    END_REPEAT(),\n    DEACTIVATE(),\n};\n\nconst BehaviorScript bhvSmallWaterWave398[] = {\n    ADD_INT(oAnimState, 1),\n    ADD_FLOAT(oPosY, 7),\n    SET_RANDOM_FLOAT(oWaterObjUnkF4, /*Minimum*/ -2, /*Range*/ 5),\n    SET_RANDOM_FLOAT(oWaterObjUnkF8, /*Minimum*/ -2, /*Range*/ 5),\n    SUM_FLOAT(/*Dest*/ oPosX, /*Value 1*/ oPosX, /*Value 2*/ oWaterObjUnkF4),\n    SUM_FLOAT(/*Dest*/ oPosZ, /*Value 1*/ oPosZ, /*Value 2*/ oWaterObjUnkF8),\n    RETURN(),\n};\n\nconst BehaviorScript bhvWaterAirBubble[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BILLBOARD(),\n    SET_HITBOX_WITH_OFFSET(/*Radius*/ 400, /*Height*/ 150, /*Downwards offset*/ -150),\n    SET_INT(oIntangibleTimer, 0),\n    SET_INTERACT_TYPE(INTERACT_WATER_RING),\n    SET_INT(oDamageOrCoinValue, 5),\n    CALL_NATIVE(bhv_water_air_bubble_init),\n    SET_INT(oAnimState, -1),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_water_air_bubble_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvSmallParticle[] = {\n    BEGIN(OBJ_LIST_UNIMPORTANT),\n    BILLBOARD(),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    CALL_NATIVE(bhv_particle_init),\n    BEGIN_REPEAT(70),\n        CALL_NATIVE(bhv_particle_loop),\n    END_REPEAT(),\n    DEACTIVATE(),\n};\n\nconst BehaviorScript bhvPlungeBubble[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    PARENT_BIT_CLEAR(oActiveParticleFlags, ACTIVE_PARTICLE_PLUNGE_BUBBLE),\n    DISABLE_RENDERING(),\n    CALL_NATIVE(bhv_water_waves_init),\n    DEACTIVATE(),\n};\n\nconst BehaviorScript bhvSmallParticleSnow[] = {\n    BEGIN(OBJ_LIST_UNIMPORTANT),\n    BILLBOARD(),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    CALL_NATIVE(bhv_particle_init),\n    BEGIN_REPEAT(30),\n        CALL_NATIVE(bhv_particle_loop),\n    END_REPEAT(),\n    DEACTIVATE(),\n};\n\nconst BehaviorScript bhvSmallParticleBubbles[] = {\n    BEGIN(OBJ_LIST_UNIMPORTANT),\n    BILLBOARD(),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    CALL_NATIVE(bhv_particle_init),\n    BEGIN_REPEAT(70),\n        CALL_NATIVE(bhv_small_bubbles_loop),\n    END_REPEAT(),\n    DEACTIVATE(),\n};\n\nconst BehaviorScript bhvFishGroup[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_fish_group_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvCannon[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SPAWN_CHILD(/*Model*/ MODEL_CANNON_BARREL, /*Behavior*/ bhvCannonBarrel),\n    SET_INT(oInteractType, INTERACT_CANNON_BASE),\n    ADD_FLOAT(oPosY, -340),\n    SET_HOME(),\n    SET_HITBOX(/*Radius*/ 150, /*Height*/ 150),\n    SET_INT(oIntangibleTimer, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_cannon_base_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvCannonBarrel[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    DROP_TO_FLOOR(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_cannon_barrel_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvCannonBaseUnused[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BILLBOARD(),\n    SET_INT(oAnimState, -1),\n    BEGIN_REPEAT(8),\n        CALL_NATIVE(bhv_cannon_base_unused_loop),\n        ADD_INT(oAnimState, 1),\n    END_REPEAT(),\n    DEACTIVATE(),\n};\n\nconst BehaviorScript bhvChuckya[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, chuckya_seg8_anims_0800C070),\n    ANIMATE(5),\n    SET_INT(oInteractType, INTERACT_GRABBABLE),\n    SET_HITBOX(/*Radius*/ 150, /*Height*/ 100),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ -400, /*Bounciness*/ -50, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    SPAWN_OBJ(/*Model*/ MODEL_NONE, /*Behavior*/ bhvChuckyaAnchorMario),\n    SET_INT(oNumLootCoins, 5),\n    SET_INT(oIntangibleTimer, 0),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_chuckya_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvChuckyaAnchorMario[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BILLBOARD(),\n    SET_FLOAT(oParentRelativePosY, -60),\n    SET_FLOAT(oParentRelativePosZ, 150),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_chuckya_anchor_mario_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvUnused05A8[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BREAK(),\n};\n\nconst BehaviorScript bhvRotatingPlatform[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_rotating_platform_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvTower[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_COLLISION_DATA(wf_seg7_collision_tower),\n    SET_FLOAT(oCollisionDistance, 3000),\n    SET_FLOAT(oDrawingDistance, 20000),\n    BEGIN_LOOP(),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBulletBillCannon[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_COLLISION_DATA(wf_seg7_collision_bullet_bill_cannon),\n    SET_FLOAT(oCollisionDistance, 300),\n    BEGIN_LOOP(),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvWFBreakableWallRight[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    LOAD_COLLISION_DATA(wf_seg7_collision_breakable_wall),\n    GOTO(bhvWFBreakableWallLeft + 1 + 2),\n};\n\nconst BehaviorScript bhvWFBreakableWallLeft[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    LOAD_COLLISION_DATA(wf_seg7_collision_breakable_wall_2),\n    // WF breakable walls - common:\n    OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_HITBOX(/*Radius*/ 300, /*Height*/ 400),\n    SET_INT(oIntangibleTimer, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_wf_breakable_wall_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvKickableBoard[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(wf_seg7_collision_kickable_board),\n    SET_HITBOX(/*Radius*/ 100, /*Height*/ 1200),\n    SET_HURTBOX(/*Radius*/ 1, /*Height*/ 1),\n    SET_FLOAT(oCollisionDistance, 1500),\n    SET_INT(oIntangibleTimer, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_kickable_board_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvTowerDoor[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(wf_seg7_collision_tower_door),\n    SET_HITBOX(/*Radius*/ 100, /*Height*/ 100),\n    SET_INT(oIntangibleTimer, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_tower_door_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvRotatingCounterClockwise[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    BREAK(),\n};\n\nconst BehaviorScript bhvWFRotatingWoodenPlatform[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_COLLISION_DATA(wf_seg7_collision_clocklike_rotation),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_wf_rotating_wooden_platform_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvKoopaShellUnderwater[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO  | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_koopa_shell_underwater_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvExitPodiumWarp[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_INT(oInteractType, INTERACT_WARP),\n    DROP_TO_FLOOR(),\n    SET_FLOAT(oCollisionDistance, 8000),\n    LOAD_COLLISION_DATA(ttm_seg7_collision_podium_warp),\n    SET_INT(oIntangibleTimer, 0),\n    SET_HITBOX(/*Radius*/ 50, /*Height*/ 50),\n    BEGIN_LOOP(),\n        CALL_NATIVE(load_object_collision_model),\n        SET_INT(oInteractStatus, 0),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvFadingWarp[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    SET_INT(oInteractionSubtype, INT_SUBTYPE_FADING_WARP),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_INT(oInteractType, INTERACT_WARP),\n    SET_INT(oIntangibleTimer, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_fading_warp_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvWarp[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_INT(oInteractType, INTERACT_WARP),\n    SET_INT(oIntangibleTimer, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_warp_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvWarpPipe[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_INT(oInteractType, INTERACT_WARP),\n    LOAD_COLLISION_DATA(warp_pipe_seg3_collision_03009AC8),\n    SET_FLOAT(oDrawingDistance, 16000),\n    SET_INT(oIntangibleTimer, 0),\n    SET_HITBOX(/*Radius*/ 70, /*Height*/ 50),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_warp_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvWhitePuffExplosion[] = {\n    BEGIN(OBJ_LIST_UNIMPORTANT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BILLBOARD(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_white_puff_exploding_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvSpawnedStar[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_INT(oBhvParams2ndByte, 1),\n    GOTO(bhvSpawnedStarNoLevelExit + 1 + 1),\n};\n\nconst BehaviorScript bhvSpawnedStarNoLevelExit[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    // Spawned star - common:\n    SET_HOME(),\n    CALL_NATIVE(bhv_spawned_star_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_spawned_star_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvSpawnedBlueCoin[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    SET_INT(oInteractType, INTERACT_COIN),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BILLBOARD(),\n    SET_INT(oIntangibleTimer, 0),\n    SET_FLOAT(oCoinBaseVelY, 20),\n    SET_INT(oAnimState, -1),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ -400, /*Bounciness*/ -70, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    CALL_NATIVE(bhv_spawned_coin_init),\n    SET_INT(oDamageOrCoinValue, 5),\n    SET_HITBOX(/*Radius*/ 120, /*Height*/ 64),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_spawned_coin_loop),\n        ADD_INT(oAnimState, 1),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvCoinInsideBoo[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    SET_HITBOX(/*Radius*/ 100, /*Height*/ 64),\n    SET_INT(oInteractType, INTERACT_COIN),\n    OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ -400, /*Bounciness*/ -70, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    BILLBOARD(),\n    CALL_NATIVE(bhv_init_room),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_coin_inside_boo_loop),\n        ADD_INT(oAnimState, 1),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvCoinFormationSpawn[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BILLBOARD(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_coin_formation_spawn_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvCoinFormation[] = {\n    BEGIN(OBJ_LIST_SPAWNER),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    CALL_NATIVE(bhv_coin_formation_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_coin_formation_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvOneCoin[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    SET_INT(oBhvParams2ndByte, 1),\n    GOTO(bhvYellowCoin + 1),\n};\n\nconst BehaviorScript bhvYellowCoin[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    // Yellow coin - common:\n    BILLBOARD(),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    CALL_NATIVE(bhv_yellow_coin_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_yellow_coin_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvTemporaryYellowCoin[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    BILLBOARD(),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    CALL_NATIVE(bhv_yellow_coin_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_temp_coin_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvThreeCoinsSpawn[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BEGIN_REPEAT(3),\n        SPAWN_CHILD(/*Model*/ MODEL_YELLOW_COIN, /*Behavior*/ bhvSingleCoinGetsSpawned),\n    END_REPEAT(),\n    DEACTIVATE(),\n};\n\nconst BehaviorScript bhvTenCoinsSpawn[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BEGIN_REPEAT(10),\n        SPAWN_CHILD(/*Model*/ MODEL_YELLOW_COIN, /*Behavior*/ bhvSingleCoinGetsSpawned),\n    END_REPEAT(),\n    DEACTIVATE(),\n};\n\nconst BehaviorScript bhvSingleCoinGetsSpawned[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BILLBOARD(),\n    CALL_NATIVE(bhv_spawned_coin_init),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ -400, /*Bounciness*/ -70, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_spawned_coin_loop),\n        ADD_INT(oAnimState, 1),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvCoinSparkles[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BILLBOARD(),\n    SET_FLOAT(oGraphYOffset, 25),\n    SET_INT(oAnimState, -1),\n    BEGIN_REPEAT(8),\n        ADD_INT(oAnimState, 1),\n    END_REPEAT(),\n    BEGIN_REPEAT(2),\n        CALL_NATIVE(bhv_coin_sparkles_loop),\n    END_REPEAT(),\n    DEACTIVATE(),\n};\n\nconst BehaviorScript bhvGoldenCoinSparkles[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    DISABLE_RENDERING(),\n    BEGIN_REPEAT(3),\n        CALL_NATIVE(bhv_golden_coin_sparkles_loop),\n    END_REPEAT(),\n    DEACTIVATE(),\n};\n\nconst BehaviorScript bhvWallTinyStarParticle[] = {\n    BEGIN(OBJ_LIST_UNIMPORTANT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BILLBOARD(),\n    BEGIN_REPEAT(10),\n        CALL_NATIVE(bhv_wall_tiny_star_particle_loop),\n    END_REPEAT(),\n    DEACTIVATE(),\n};\n\nconst BehaviorScript bhvVertStarParticleSpawner[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    DISABLE_RENDERING(),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    PARENT_BIT_CLEAR(oActiveParticleFlags, ACTIVE_PARTICLE_V_STAR),\n    CALL_NATIVE(bhv_tiny_star_particles_init),\n    DELAY(1),\n    DEACTIVATE(),\n};\n\nconst BehaviorScript bhvPoundTinyStarParticle[] = {\n    BEGIN(OBJ_LIST_UNIMPORTANT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BILLBOARD(),\n    BEGIN_REPEAT(10),\n        CALL_NATIVE(bhv_pound_tiny_star_particle_loop),\n    END_REPEAT(),\n    DEACTIVATE(),\n};\n\nconst BehaviorScript bhvHorStarParticleSpawner[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    DISABLE_RENDERING(),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    PARENT_BIT_CLEAR(oActiveParticleFlags, ACTIVE_PARTICLE_H_STAR),\n    CALL_NATIVE(bhv_pound_tiny_star_particle_init),\n    DELAY(1),\n    DEACTIVATE(),\n};\n\nconst BehaviorScript bhvPunchTinyTriangle[] = {\n    BEGIN(OBJ_LIST_UNIMPORTANT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BILLBOARD(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_punch_tiny_triangle_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvTriangleParticleSpawner[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    DISABLE_RENDERING(),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    PARENT_BIT_CLEAR(oActiveParticleFlags, ACTIVE_PARTICLE_TRIANGLE),\n    CALL_NATIVE(bhv_punch_tiny_triangle_init),\n    DELAY(1),\n    DEACTIVATE(),\n};\n\nconst BehaviorScript bhvDoorWarp[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    SET_INT(oInteractType, INTERACT_WARP_DOOR),\n    GOTO(bhvDoor + 1 + 1),\n};\n\nconst BehaviorScript bhvDoor[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    SET_INT(oInteractType, INTERACT_DOOR),\n    // Door - common:\n    OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, door_seg3_anims_030156C0),\n    ANIMATE(0),\n    LOAD_COLLISION_DATA(door_seg3_collision_0301CE78),\n    SET_HITBOX(/*Radius*/ 80, /*Height*/ 100),\n    SET_INT(oIntangibleTimer, 0),\n    SET_FLOAT(oCollisionDistance, 1000),\n    SET_HOME(),\n    CALL_NATIVE(bhv_door_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_door_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvGrindel[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(ssl_seg7_collision_grindel),\n    DROP_TO_FLOOR(),\n    ADD_FLOAT(oPosY, 1),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_grindel_thwomp_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvThwomp[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    LOAD_COLLISION_DATA(thwomp_seg5_collision_0500B92C),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    DROP_TO_FLOOR(),\n    ADD_FLOAT(oPosY, 1),\n    SET_HOME(),\n    SCALE(/*Unused*/ 0, /*Field*/ 140),\n    SET_FLOAT(oDrawingDistance, 4000),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_grindel_thwomp_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvThwomp2[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    LOAD_COLLISION_DATA(thwomp_seg5_collision_0500B7D0),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    DROP_TO_FLOOR(),\n    ADD_FLOAT(oPosY, 1),\n    SCALE(/*Unused*/ 0, /*Field*/ 140),\n    SET_HOME(),\n    SET_FLOAT(oDrawingDistance, 4000),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_grindel_thwomp_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvTumblingBridgePlatform[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_FLOAT(oCollisionDistance, 300),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_tumbling_bridge_platform_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvTumblingBridge[] = {\n    BEGIN(OBJ_LIST_SPAWNER),\n    OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_tumbling_bridge_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBBHTumblingBridge[] = {\n    BEGIN(OBJ_LIST_SPAWNER),\n    OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_HOME(),\n    SET_INT(oBhvParams2ndByte, TUMBLING_BRIDGE_BP_BBH),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_tumbling_bridge_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvLLLTumblingBridge[] = {\n    BEGIN(OBJ_LIST_SPAWNER),\n    OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_HOME(),\n    SET_INT(oBhvParams2ndByte, TUMBLING_BRIDGE_BP_LLL),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_tumbling_bridge_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvFlame[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BILLBOARD(),\n    SET_HOME(),\n    SCALE(/*Unused*/ 0, /*Field*/ 700),\n    SET_INTERACT_TYPE(INTERACT_FLAME),\n    SET_HITBOX_WITH_OFFSET(/*Radius*/ 50, /*Height*/ 25, /*Downwards offset*/ 25),\n    SET_INT(oIntangibleTimer, 0),\n    CALL_NATIVE(bhv_init_room),\n    BEGIN_LOOP(),\n        SET_INT(oInteractStatus, 0),\n        ANIMATE_TEXTURE(oAnimState, 2),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvAnotherElavator[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(hmc_seg7_collision_elevator),\n    SET_HOME(),\n    CALL_NATIVE(bhv_elevator_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_elevator_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvRRElevatorPlatform[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(rr_seg7_collision_elevator_platform),\n    SET_HOME(),\n    CALL_NATIVE(bhv_elevator_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_elevator_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvHMCElevatorPlatform[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(hmc_seg7_collision_elevator),\n    SET_HOME(),\n    CALL_NATIVE(bhv_elevator_init),\n    CALL_NATIVE(bhv_init_room),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_elevator_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvWaterMist[] = {\n    BEGIN(OBJ_LIST_UNIMPORTANT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BILLBOARD(),\n    SET_INT(oOpacity, 254),\n    SET_FLOAT(oForwardVel, 20),\n    SET_FLOAT(oVelY, -8),\n    ADD_FLOAT(oPosY, 62),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_water_mist_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBreathParticleSpawner[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BEGIN_REPEAT(8),\n        CALL_NATIVE(bhv_water_mist_spawn_loop),\n    END_REPEAT(),\n    DEACTIVATE(),\n};\n\nconst BehaviorScript bhvBreakBoxTriangle[] = {\n    BEGIN(OBJ_LIST_UNIMPORTANT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BEGIN_REPEAT(18),\n        CALL_NATIVE(cur_obj_rotate_face_angle_using_vel),\n        CALL_NATIVE(cur_obj_move_using_fvel_and_gravity),\n    END_REPEAT(),\n    DEACTIVATE(),\n};\n\nconst BehaviorScript bhvWaterMist2[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_HOME(),\n    SET_INT(oFaceAnglePitch, 0xC000),\n    SCALE(/*Unused*/ 0, /*Field*/ 2100),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_water_mist_2_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvUnused0DFC[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_INT(oAnimState, -1),\n    SET_FLOAT(oFaceAnglePitch, 0),\n    SET_FLOAT(oFaceAngleYaw, 0),\n    SET_FLOAT(oFaceAngleRoll, 0),\n    BEGIN_REPEAT(6),\n        ADD_INT(oAnimState, 1),\n    END_REPEAT(),\n    DEACTIVATE(),\n};\n\nconst BehaviorScript bhvMistCircParticleSpawner[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    CALL_NATIVE(bhv_pound_white_puffs_init),\n    DELAY(1),\n    DEACTIVATE(),\n};\n\nconst BehaviorScript bhvDirtParticleSpawner[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    CALL_NATIVE(bhv_ground_sand_init),\n    DELAY(1),\n    DEACTIVATE(),\n};\n\nconst BehaviorScript bhvSnowParticleSpawner[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    CALL_NATIVE(bhv_ground_snow_init),\n    DELAY(1),\n    DEACTIVATE(),\n};\n\nconst BehaviorScript bhvWind[] = {\n    BEGIN(OBJ_LIST_UNIMPORTANT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_wind_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvEndToad[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_ANIMATIONS(oAnimations, toad_seg6_anims_0600FB58),\n    ANIMATE(0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_end_toad_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvEndPeach[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_ANIMATIONS(oAnimations, peach_seg5_anims_0501C41C),\n    ANIMATE(0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_end_peach_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvUnusedParticleSpawn[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ -400, /*Bounciness*/ -50, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    SET_INT(oIntangibleTimer, 0),\n    SET_HITBOX(/*Radius*/ 40, /*Height*/ 40),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_unused_particle_spawn_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvUkiki[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    GOTO(bhvMacroUkiki + 1),\n};\n\nconst BehaviorScript bhvUkikiCageChild[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_FLOAT(oPosX, 2560),\n    SET_FLOAT(oPosY, 1457),\n    SET_FLOAT(oPosZ, 1898),\n    BREAK(),\n};\n\nconst BehaviorScript bhvUkikiCageStar[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_ukiki_cage_star_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvUkikiCage[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_HOME(),\n    LOAD_COLLISION_DATA(ttm_seg7_collision_ukiki_cage),\n    SPAWN_CHILD(/*Model*/ MODEL_STAR, /*Behavior*/ bhvUkikiCageStar),\n    SPAWN_CHILD(/*Model*/ MODEL_NONE, /*Behavior*/ bhvUkikiCageChild),\n    SET_FLOAT(oCollisionDistance, 20000),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ -400, /*Bounciness*/ -50, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_ukiki_cage_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBitFSSinkingPlatforms[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_COLLISION_DATA(bitfs_seg7_collision_sinking_platform),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_bitfs_sinking_platform_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBitFSSinkingCagePlatform[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_COLLISION_DATA(bitfs_seg7_collision_sinking_cage_platform),\n    SET_HOME(),\n    SPAWN_CHILD(/*Model*/ MODEL_BITFS_BLUE_POLE, /*Behavior*/ bhvDDDMovingPole),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_bitfs_sinking_cage_platform_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvDDDMovingPole[] = {\n    BEGIN(OBJ_LIST_POLELIKE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_INT(oInteractType, INTERACT_POLE),\n    SET_HITBOX(/*Radius*/ 80, /*Height*/ 710),\n    SET_INT(oIntangibleTimer, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_ddd_moving_pole_loop),\n        CALL_NATIVE(bhv_pole_base_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBitFSTiltingInvertedPyramid[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(bitfs_seg7_collision_inverted_pyramid),\n    SET_HOME(),\n    CALL_NATIVE(bhv_platform_normals_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_tilting_inverted_pyramid_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvSquishablePlatform[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(bitfs_seg7_collision_squishable_platform),\n    SET_FLOAT(oCollisionDistance, 10000),\n    CALL_NATIVE(bhv_platform_normals_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_squishable_platform_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvCutOutObject[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    DISABLE_RENDERING(),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BREAK(),\n};\n\nconst BehaviorScript bhvBetaMovingFlamesSpawn[] = {\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_beta_moving_flames_spawn_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBetaMovingFlames[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BILLBOARD(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_beta_moving_flames_loop),\n        ADD_INT(oAnimState, 1),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvRRRotatingBridgePlatform[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(rr_seg7_collision_rotating_platform_with_fire),\n    SET_FLOAT(oCollisionDistance, 1500),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_rr_rotating_bridge_platform_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvFlamethrower[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_flamethrower_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvFlamethrowerFlame[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_INTERACT_TYPE(INTERACT_FLAME),\n    SET_HITBOX_WITH_OFFSET(/*Radius*/ 50, /*Height*/ 25, /*Downwards offset*/ 25),\n    BILLBOARD(),\n    SET_HOME(),\n    SET_INT(oIntangibleTimer, 0),\n    CALL_NATIVE(bhv_init_room),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_flamethrower_flame_loop),\n        ADD_INT(oAnimState, 1),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBouncingFireball[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    DISABLE_RENDERING(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_bouncing_fireball_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBouncingFireballFlame[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_INTERACT_TYPE(INTERACT_FLAME),\n    SET_FLOAT(oGraphYOffset, 30),\n    SET_HITBOX_WITH_OFFSET(/*Radius*/ 50, /*Height*/ 25, /*Downwards offset*/ 25),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ -400, /*Bounciness*/ -70, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    BILLBOARD(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_bouncing_fireball_flame_loop),\n        ADD_INT(oAnimState, 1),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBowserShockWave[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_INT(oOpacity, 255),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_bowser_shock_wave_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvFireParticleSpawner[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BILLBOARD(),\n    SET_FLOAT(oGraphYOffset, 70),\n    SET_INT(oAnimState, -1),\n    BEGIN_LOOP(),\n        ADD_INT(oAnimState, 1),\n        CALL_NATIVE(bhv_flame_mario_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBlackSmokeMario[] = {\n    BEGIN(OBJ_LIST_UNIMPORTANT),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BILLBOARD(),\n    SET_INT(oAnimState, 4),\n    SET_FLOAT(oGraphYOffset, 50),\n    BEGIN_REPEAT(8),\n        CALL_NATIVE(bhv_black_smoke_mario_loop),\n        DELAY(1),\n        CALL_NATIVE(bhv_black_smoke_mario_loop),\n        DELAY(1),\n        CALL_NATIVE(bhv_black_smoke_mario_loop),\n    END_REPEAT(),\n    DEACTIVATE(),\n};\n\nconst BehaviorScript bhvBlackSmokeBowser[] = {\n    BEGIN(OBJ_LIST_UNIMPORTANT),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BILLBOARD(),\n    SET_FLOAT(oGraphYOffset, 0),\n    BEGIN_REPEAT(8),\n        CALL_NATIVE(bhv_black_smoke_bowser_loop),\n        ANIMATE_TEXTURE(oAnimState, 4),\n    END_REPEAT(),\n    DEACTIVATE(),\n};\n\nconst BehaviorScript bhvBlackSmokeUpward[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BEGIN_REPEAT(4),\n        CALL_NATIVE(bhv_black_smoke_upward_loop),\n    END_REPEAT(),\n    DEACTIVATE(),\n};\n\nconst BehaviorScript bhvBetaFishSplashSpawner[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    DISABLE_RENDERING(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_beta_fish_splash_spawner_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvSpindrift[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, spindrift_seg5_anims_05002D68),\n    ANIMATE(0),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ -400, /*Bounciness*/ 0, /*Drag strength*/ 0, /*Friction*/ 0, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    SET_HOME(),\n    SET_INT(oInteractionSubtype, INT_SUBTYPE_TWIRL_BOUNCE),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_spindrift_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvTowerPlatformGroup[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    DISABLE_RENDERING(),\n    ADD_FLOAT(oPosY, 300),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_tower_platform_group_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvWFSlidingTowerPlatform[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(wf_seg7_collision_platform),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_wf_sliding_tower_platform_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvWFElevatorTowerPlatform[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(wf_seg7_collision_platform),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_wf_elevator_tower_platform_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvWFSolidTowerPlatform[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(wf_seg7_collision_platform),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_wf_solid_tower_platform_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvLeafParticleSpawner[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    CALL_NATIVE(bhv_snow_leaf_particle_spawn_init),\n    DELAY(1),\n    DEACTIVATE(),\n};\n\nconst BehaviorScript bhvTreeSnow[] = {\n    BEGIN(OBJ_LIST_UNIMPORTANT),\n    OR_INT(oFlags, (OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BILLBOARD(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_tree_snow_or_leaf_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvTreeLeaf[] = {\n    BEGIN(OBJ_LIST_UNIMPORTANT),\n    OR_INT(oFlags, (OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_tree_snow_or_leaf_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvAnotherTiltingPlatform[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_HOME(),\n    CALL_NATIVE(bhv_platform_normals_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_tilting_inverted_pyramid_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvSquarishPathMoving[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_COLLISION_DATA(bitdw_seg7_collision_moving_pyramid),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_squarish_path_moving_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvPiranhaPlantBubble[] = {\n    BEGIN(OBJ_LIST_UNIMPORTANT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BILLBOARD(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_piranha_plant_bubble_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvPiranhaPlantWakingBubbles[] = {\n    BEGIN(OBJ_LIST_UNIMPORTANT),\n    BILLBOARD(),\n    OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BEGIN_REPEAT(10),\n        CALL_NATIVE(bhv_piranha_plant_waking_bubbles_loop),\n    END_REPEAT(),\n    DEACTIVATE(),\n};\n\nconst BehaviorScript bhvFloorSwitchAnimatesObject[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    SET_INT(oBhvParams2ndByte, 1),\n    GOTO(bhvFloorSwitchHardcodedModel + 1),\n};\n\nconst BehaviorScript bhvFloorSwitchGrills[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    GOTO(bhvFloorSwitchHardcodedModel + 1),\n};\n\nconst BehaviorScript bhvFloorSwitchHardcodedModel[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    // Floor switch - common:\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_COLLISION_DATA(purple_switch_seg8_collision_0800C7A8),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_purple_switch_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvFloorSwitchHiddenObjects[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    SET_INT(oBhvParams2ndByte, 2),\n    GOTO(bhvFloorSwitchHardcodedModel + 1),\n};\n\nconst BehaviorScript bhvHiddenObject[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_COLLISION_DATA(breakable_box_seg8_collision_08012D70),\n    SET_FLOAT(oCollisionDistance, 300),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_hidden_object_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBreakableBox[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_COLLISION_DATA(breakable_box_seg8_collision_08012D70),\n    SET_FLOAT(oCollisionDistance, 500),\n    CALL_NATIVE(bhv_init_room),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_breakable_box_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n    BREAK(),\n};\n\nconst BehaviorScript bhvPushableMetalBox[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_COLLISION_DATA(metal_box_seg8_collision_08024C28),\n    SET_FLOAT(oCollisionDistance, 500),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_pushable_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvHeaveHo[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, heave_ho_seg5_anims_0501534C),\n    ANIMATE(0),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 200, /*Gravity*/ -400, /*Bounciness*/ -50, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 600, /*Unused*/ 0, 0),\n    SPAWN_OBJ(/*Model*/ MODEL_NONE, /*Behavior*/ bhvHeaveHoThrowMario),\n    SET_INT(oInteractType, INTERACT_GRABBABLE),\n    SET_INT(oInteractionSubtype, INT_SUBTYPE_NOT_GRABBABLE | INT_SUBTYPE_GRABS_MARIO),\n    SET_HITBOX(/*Radius*/ 120, /*Height*/ 100),\n    SET_HOME(),\n    SET_INT(oIntangibleTimer, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_heave_ho_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvHeaveHoThrowMario[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BILLBOARD(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_heave_ho_throw_mario_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvCCMTouchedStarSpawn[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, (OBJ_FLAG_PERSISTENT_RESPAWN | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_HITBOX(/*Radius*/ 500, /*Height*/ 500),\n    SET_INT(oIntangibleTimer, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_ccm_touched_star_spawn_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvUnusedPoundablePlatform[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_COLLISION_DATA(sl_seg7_collision_pound_explodes),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_unused_poundable_platform),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBetaTrampolineTop[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_COLLISION_DATA(springboard_collision_05001A28),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_beta_trampoline_top_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBetaTrampolineSpring[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_beta_trampoline_spring_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvJumpingBox[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO  | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ -400, /*Bounciness*/ -50, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 600, /*Unused*/ 0, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_jumping_box_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBooCage[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_FLOAT(oGraphYOffset, 10),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ -400, /*Bounciness*/ -50, /*Drag strength*/ 0, /*Friction*/ 0, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_boo_cage_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvStub[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    DISABLE_RENDERING(),\n    BREAK(),\n};\n\nconst BehaviorScript bhvIgloo[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_INTERACT_TYPE(INTERACT_IGLOO_BARRIER),\n    SET_HITBOX(/*Radius*/ 100, /*Height*/ 200),\n    SET_INT(oIntangibleTimer, 0),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        SET_INT(oInteractStatus, 0),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBowserKey[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_HOME(),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ -400, /*Bounciness*/ -70, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_bowser_key_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvGrandStar[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_INTERACT_TYPE(INTERACT_STAR_OR_KEY),\n    SET_INT(oInteractionSubtype, INT_SUBTYPE_GRAND_STAR),\n    SET_HITBOX(/*Radius*/ 160, /*Height*/ 100),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_grand_star_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBetaBooKey[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_HITBOX(/*Radius*/ 32, /*Height*/ 64),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ -400, /*Bounciness*/ -70, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_beta_boo_key_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvAlphaBooKey[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_HITBOX(/*Radius*/ 32, /*Height*/ 64),\n    SET_INT(oIntangibleTimer, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_alpha_boo_key_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBulletBill[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_HOME(),\n    SET_HITBOX_WITH_OFFSET(/*Radius*/ 50, /*Height*/ 50, /*Downwards offset*/ 50),\n    SET_INTERACT_TYPE(INTERACT_DAMAGE),\n    SET_INT(oDamageOrCoinValue, 3),\n    SCALE(/*Unused*/ 0, /*Field*/ 40),\n    SET_INT(oIntangibleTimer, 0),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ 0, /*Bounciness*/ 0, /*Drag strength*/ 0, /*Friction*/ 0, /*Buoyancy*/ 0, /*Unused*/ 0, 0),\n    CALL_NATIVE(bhv_bullet_bill_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_bullet_bill_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvWhitePuffSmoke[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BILLBOARD(),\n    ADD_FLOAT(oPosY, -100),\n    CALL_NATIVE(bhv_white_puff_smoke_init),\n    SET_INT(oAnimState, -1),\n    BEGIN_REPEAT(10),\n        ADD_INT(oAnimState, 1),\n    END_REPEAT(),\n    DEACTIVATE(),\n};\n\nconst BehaviorScript bhvUnused1820[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    BREAK(),\n};\n\nconst BehaviorScript bhvBowserTailAnchor[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    SET_HITBOX_WITH_OFFSET(/*Radius*/ 100, /*Height*/ 50, /*Downwards offset*/ -50),\n    SET_INT(oIntangibleTimer, 0),\n    DISABLE_RENDERING(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_bowser_tail_anchor_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBowser[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_HOLDABLE | OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_INT(oInteractType, INTERACT_GRABBABLE),\n    SET_HITBOX(/*Radius*/ 400, /*Height*/ 400),\n    DROP_TO_FLOOR(),\n    SET_HOME(),\n    LOAD_ANIMATIONS(oAnimations, bowser_seg6_anims_06057690),\n    SPAWN_CHILD(/*Model*/ MODEL_NONE, /*Behavior*/ bhvBowserBodyAnchor),\n    SPAWN_CHILD(/*Model*/ MODEL_BOWSER_BOMB_CHILD_OBJ, /*Behavior*/ bhvBowserFlameSpawn),\n    SPAWN_OBJ(/*Model*/ MODEL_NONE, /*Behavior*/ bhvBowserTailAnchor),\n    // Beta leftover that spawn 50 coins when Bowser is defeated\n    SET_INT(oNumLootCoins, 50),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 0, /*Gravity*/ -400, /*Bounciness*/ -70, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    SET_HOME(),\n    CALL_NATIVE(bhv_bowser_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_bowser_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBowserBodyAnchor[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_HITBOX(/*Radius*/ 100, /*Height*/ 300),\n    SET_INTERACT_TYPE(INTERACT_DAMAGE),\n    SET_INT(oInteractionSubtype, INT_SUBTYPE_BIG_KNOCKBACK),\n    DISABLE_RENDERING(),\n    SET_INT(oDamageOrCoinValue, 2),\n    SET_INT(oIntangibleTimer, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_bowser_body_anchor_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBowserFlameSpawn[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_MODEL(MODEL_NONE),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_bowser_flame_spawn_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvTiltingBowserLavaPlatform[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(bowser_2_seg7_collision_tilting_platform),\n    SET_FLOAT(oDrawingDistance, 20000),\n    SET_FLOAT(oCollisionDistance, 20000),\n    SET_INT(oFaceAngleYaw, 0),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(cur_obj_rotate_face_angle_using_vel),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvFallingBowserPlatform[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_FLOAT(oDrawingDistance, 20000),\n    SET_FLOAT(oCollisionDistance, 20000),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_falling_bowser_platform_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBlueBowserFlame[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_INTERACT_TYPE(INTERACT_FLAME),\n    BILLBOARD(),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 0, /*Gravity*/ -400, /*Bounciness*/ -70, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    CALL_NATIVE(bhv_blue_bowser_flame_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_blue_bowser_flame_loop),\n        ANIMATE_TEXTURE(oAnimState, 2),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvFlameFloatingLanding[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_INTERACT_TYPE(INTERACT_FLAME),\n    BILLBOARD(),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 0, /*Gravity*/ -400, /*Bounciness*/ -70, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    CALL_NATIVE(bhv_flame_floating_landing_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_flame_floating_landing_loop),\n        ANIMATE_TEXTURE(oAnimState, 2),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBlueFlamesGroup[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_INTERACT_TYPE(INTERACT_FLAME),\n    BILLBOARD(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_blue_flames_group_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvFlameBouncing[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_INTERACT_TYPE(INTERACT_FLAME),\n    BILLBOARD(),\n    CALL_NATIVE(bhv_flame_bouncing_init),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 0, /*Gravity*/ -400, /*Bounciness*/ -70, /*Drag strength*/ 0, /*Friction*/ 0, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_flame_bouncing_loop),\n        ANIMATE_TEXTURE(oAnimState, 2),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvFlameMovingForwardGrowing[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_INTERACT_TYPE(INTERACT_FLAME),\n    BILLBOARD(),\n    CALL_NATIVE(bhv_flame_moving_forward_growing_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_flame_moving_forward_growing_loop),\n        ANIMATE_TEXTURE(oAnimState, 2),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvFlameBowser[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_INTERACT_TYPE(INTERACT_FLAME),\n    BILLBOARD(),\n    CALL_NATIVE(bhv_flame_bowser_init),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 0, /*Gravity*/ -400, /*Bounciness*/ -70, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_flame_bowser_loop),\n        ANIMATE_TEXTURE(oAnimState, 2),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvFlameLargeBurningOut[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_INTERACT_TYPE(INTERACT_FLAME),\n    BILLBOARD(),\n    CALL_NATIVE(bhv_flame_large_burning_out_init),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 0, /*Gravity*/ -400, /*Bounciness*/ -70, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_flame_bowser_loop),\n        ANIMATE_TEXTURE(oAnimState, 2),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBlueFish[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_HOME(),\n    LOAD_ANIMATIONS(oAnimations, blue_fish_seg3_anims_0301C2B0),\n    ANIMATE(0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_blue_fish_movement_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvTankFishGroup[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_tank_fish_group_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvCheckerboardElevatorGroup[] = {\n    BEGIN(OBJ_LIST_SPAWNER),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    CALL_NATIVE(bhv_checkerboard_elevator_group_init),\n    DELAY(1),\n    DEACTIVATE(),\n};\n\nconst BehaviorScript bhvCheckerboardPlatformSub[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(checkerboard_platform_seg8_collision_0800D710),\n    CALL_NATIVE(bhv_checkerboard_platform_init),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_checkerboard_platform_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBowserKeyUnlockDoor[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    LOAD_ANIMATIONS(oAnimations, bowser_key_seg3_anims_list),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_bowser_key_unlock_door_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBowserKeyCourseExit[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    LOAD_ANIMATIONS(oAnimations, bowser_key_seg3_anims_list),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_bowser_key_course_exit_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvInvisibleObjectsUnderBridge[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    CALL_NATIVE(bhv_invisible_objects_under_bridge_init),\n    BREAK(),\n};\n\nconst BehaviorScript bhvWaterLevelPillar[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_COLLISION_DATA(inside_castle_seg7_collision_water_level_pillar),\n    CALL_NATIVE(bhv_water_level_pillar_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_water_level_pillar_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvDDDWarp[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_FLOAT(oCollisionDistance, 30000),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_ddd_warp_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvMoatGrills[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_COLLISION_DATA(castle_grounds_seg7_collision_moat_grills),\n    SET_FLOAT(oCollisionDistance, 30000),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_moat_grills_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvClockMinuteHand[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    SET_INT(oAngleVelRoll, -0x180),\n    GOTO(bhvClockHourHand + 1 + 1),\n};\n\nconst BehaviorScript bhvClockHourHand[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    SET_INT(oAngleVelRoll, -0x20),\n    // Clock hand - common:\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    CALL_NATIVE(bhv_init_room),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_rotating_clock_arm_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvMacroUkiki[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    // Ukiki - common:\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_INT(oInteractType, INTERACT_GRABBABLE),\n    SET_INT(oInteractionSubtype, INT_SUBTYPE_HOLDABLE_NPC),\n    SET_HITBOX(/*Radius*/ 40, /*Height*/ 40),\n    SET_INT(oIntangibleTimer, 0),\n    DROP_TO_FLOOR(),\n    LOAD_ANIMATIONS(oAnimations, ukiki_seg5_anims_05015784),\n    ANIMATE(0),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ -400, /*Bounciness*/ -50, /*Drag strength*/ 0, /*Friction*/ 0, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    SET_HOME(),\n    CALL_NATIVE(bhv_ukiki_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_ukiki_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvStub1D0C[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    DEACTIVATE(),\n};\n\nconst BehaviorScript bhvLLLRotatingHexagonalPlatform[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(lll_seg7_collision_hexagonal_platform),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        SET_INT(oAngleVelYaw,  0x100),\n        ADD_INT(oMoveAngleYaw, 0x100),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvLLLSinkingRockBlock[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(lll_seg7_collision_floating_block),\n    ADD_FLOAT(oPosY, -50),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_lll_sinking_rock_block_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvStub1D70[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    BREAK(),\n};\n\nconst BehaviorScript bhvLLLMovingOctagonalMeshPlatform[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    ADD_FLOAT(oPosY, -50),\n    LOAD_COLLISION_DATA(lll_seg7_collision_octagonal_moving_platform),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_lll_moving_octagonal_mesh_platform_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvSnowBall[] = {\n    BREAK(),\n};\n\nconst BehaviorScript bhvLLLRotatingBlockWithFireBars[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(lll_seg7_collision_rotating_fire_bars),\n    SET_FLOAT(oCollisionDistance, 4000),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_lll_rotating_block_fire_bars_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvLLLRotatingHexFlame[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_INTERACT_TYPE(INTERACT_FLAME),\n    SET_HITBOX_WITH_OFFSET(/*Radius*/ 50, /*Height*/ 100, /*Downwards offset*/ 50),\n    SET_INT(oIntangibleTimer, 0),\n    BILLBOARD(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_lll_rotating_hex_flame_loop),\n        ADD_INT(oAnimState, 1),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvLLLWoodPiece[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(lll_seg7_collision_wood_piece),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_lll_wood_piece_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvLLLFloatingWoodBridge[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_MODEL(MODEL_NONE),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_lll_floating_wood_bridge_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvVolcanoFlames[] = {\n    BEGIN(OBJ_LIST_UNIMPORTANT),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BILLBOARD(),\n    BEGIN_LOOP(),\n        ADD_INT(oAnimState, 1),\n        CALL_NATIVE(bhv_volcano_flames_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvLLLRotatingHexagonalRing[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(lll_seg7_collision_rotating_platform),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_lll_rotating_hexagonal_ring_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvLLLSinkingRectangularPlatform[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(lll_seg7_collision_slow_tilting_platform),\n    SET_FLOAT(oCollisionDistance, 2000),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_lll_sinking_rectangular_platform_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvLLLSinkingSquarePlatforms[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(lll_seg7_collision_sinking_pyramids),\n    ADD_FLOAT(oPosY, 5),\n    SET_FLOAT(oCollisionDistance, 2000),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_lll_sinking_square_platforms_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvLLLTiltingInvertedPyramid[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(lll_seg7_collision_inverted_pyramid),\n    ADD_FLOAT(oPosY, 5),\n    SET_HOME(),\n    CALL_NATIVE(bhv_platform_normals_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_tilting_inverted_pyramid_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvUnused1F30[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BREAK(),\n};\n\nconst BehaviorScript bhvKoopaShell[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ -400, /*Bounciness*/ -50, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_koopa_shell_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvKoopaShellFlame[] = {\n    BEGIN(OBJ_LIST_UNIMPORTANT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_INTERACT_TYPE(INTERACT_FLAME),\n    BILLBOARD(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_koopa_shell_flame_loop),\n        ANIMATE_TEXTURE(oAnimState, 2),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvToxBox[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(ssl_seg7_collision_tox_box),\n    ADD_FLOAT(oPosY, 256),\n    SET_FLOAT(oDrawingDistance, 8000),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_tox_box_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvPiranhaPlant[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, piranha_plant_seg6_anims_0601C31C),\n    ANIMATE(0),\n    SET_INTERACT_TYPE(INTERACT_DAMAGE),\n    SET_HITBOX(/*Radius*/ 100, /*Height*/ 200),\n    SET_HURTBOX(/*Radius*/ 50, /*Height*/ 200),\n    SET_INT(oIntangibleTimer, 0),\n    SET_INT(oDamageOrCoinValue, 3),\n    SET_INT(oNumLootCoins, 5),\n    SPAWN_CHILD(/*Model*/ MODEL_BUBBLE, /*Behavior*/ bhvPiranhaPlantBubble),\n    SET_FLOAT(oDrawingDistance, 2000),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_piranha_plant_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvLLLHexagonalMesh[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_COLLISION_DATA(lll_hexagonal_mesh_seg3_collision_0301CECC),\n    BEGIN_LOOP(),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvLLLBowserPuzzlePiece[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(lll_seg7_collision_puzzle_piece),\n    SET_HOME(),\n    SET_FLOAT(oCollisionDistance, 3000),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_lll_bowser_puzzle_piece_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvLLLBowserPuzzle[] = {\n    BEGIN(OBJ_LIST_SPAWNER),\n    DISABLE_RENDERING(),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    ADD_FLOAT(oPosZ, -50),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_lll_bowser_puzzle_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvTuxiesMother[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, penguin_seg5_anims_05008B74),\n    ANIMATE(3),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ -400, /*Bounciness*/ -50, /*Drag strength*/ 0, /*Friction*/ 0, /*Buoyancy*/ 0, /*Unused*/ 0, 0),\n    SET_HOME(),\n    SET_INTERACT_TYPE(INTERACT_TEXT),\n    SET_HITBOX(/*Radius*/ 200, /*Height*/ 300),\n    SET_INT(oIntangibleTimer, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_tuxies_mother_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvPenguinBaby[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    BREAK(),\n};\n\nconst BehaviorScript bhvUnused20E0[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    BREAK(),\n};\n\nconst BehaviorScript bhvSmallPenguin[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    DROP_TO_FLOOR(),\n    LOAD_ANIMATIONS(oAnimations, penguin_seg5_anims_05008B74),\n    ANIMATE(0),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ -400, /*Bounciness*/ -50, /*Drag strength*/ 0, /*Friction*/ 0, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    SET_INT(oInteractType, INTERACT_GRABBABLE),\n    SET_INT(oInteractionSubtype, INT_SUBTYPE_HOLDABLE_NPC),\n    SET_INT(oIntangibleTimer, 0),\n    SET_HITBOX(/*Radius*/ 40, /*Height*/ 40),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_small_penguin_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvManyBlueFishSpawner[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    SET_INT(oBhvParams2ndByte, FISH_SPAWNER_BP_MANY_BLUE),\n    GOTO(bhvFishSpawner + 1),\n};\n\nconst BehaviorScript bhvFewBlueFishSpawner[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    SET_INT(oBhvParams2ndByte, FISH_SPAWNER_BP_FEW_BLUE),\n    GOTO(bhvFishSpawner + 1),\n};\n\nconst BehaviorScript bhvFishSpawner[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    // Fish Spawner - common:\n    DISABLE_RENDERING(),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_fish_spawner_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvFish[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_fish_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvWDWExpressElevator[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(wdw_seg7_collision_express_elevator_platform),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_wdw_express_elevator_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvWDWExpressElevatorPlatform[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(wdw_seg7_collision_express_elevator_platform),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvChirpChirp[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    SET_INT(oBirdChirpChirpUnkF4, 1),\n    GOTO(bhvChirpChirpUnused),\n};\n\nconst BehaviorScript bhvChirpChirpUnused[] = {\n    DISABLE_RENDERING(),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_bub_spawner_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBub[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, bub_seg6_anims_06012354),\n    ANIMATE(0),\n    SET_HITBOX_WITH_OFFSET(/*Radius*/ 20, /*Height*/ 10, /*Downwards offset*/ 10),\n    SET_INTERACT_TYPE(INTERACT_DAMAGE),\n    SET_INT(oDamageOrCoinValue, 1),\n    SET_HOME(),\n    SET_INT(oIntangibleTimer, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_bub_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvExclamationBox[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(exclamation_box_outline_seg8_collision_08025F78),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_FLOAT(oCollisionDistance, 300),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_exclamation_box_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvRotatingExclamationMark[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SCALE(/*Unused*/ 0, /*Field*/ 200),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_rotating_exclamation_box_loop),\n        ADD_INT(oMoveAngleYaw, 0x800),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvSoundSpawner[] = {\n    BEGIN(OBJ_LIST_UNIMPORTANT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    DELAY(3),\n    CALL_NATIVE(bhv_sound_spawner_init),\n    DELAY(30),\n    DEACTIVATE(),\n};\n\nconst BehaviorScript bhvRockSolid[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(jrb_seg7_collision_rock_solid),\n    BEGIN_LOOP(),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBowserSubDoor[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(ddd_seg7_collision_bowser_sub_door),\n    SET_FLOAT(oDrawingDistance, 20000),\n    SET_FLOAT(oCollisionDistance, 20000),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_bowsers_sub_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBowsersSub[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_FLOAT(oDrawingDistance, 20000),\n    SET_FLOAT(oCollisionDistance, 20000),\n    LOAD_COLLISION_DATA(ddd_seg7_collision_submarine),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_bowsers_sub_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvSushiShark[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, sushi_seg5_anims_0500AE54),\n    SPAWN_OBJ(/*Model*/ MODEL_NONE, /*Behavior*/ bhvSushiSharkCollisionChild),\n    SET_HITBOX_WITH_OFFSET(/*Radius*/ 100, /*Height*/ 50, /*Downwards offset*/ 50),\n    SET_INTERACT_TYPE(INTERACT_DAMAGE),\n    SET_INT(oDamageOrCoinValue, 3),\n    SET_HOME(),\n    ANIMATE(0),\n    SET_INT(oIntangibleTimer, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_sushi_shark_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvSushiSharkCollisionChild[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    DISABLE_RENDERING(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_sushi_shark_collision_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvJRBSlidingBox[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_COLLISION_DATA(jrb_seg7_collision_floating_box),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_jrb_sliding_box_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvShipPart3[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_ship_part_3_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvInSunkenShip3[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_COLLISION_DATA(jrb_seg7_collision_in_sunken_ship_3),\n    SET_HOME(),\n    SET_FLOAT(oCollisionDistance, 4000),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_ship_part_3_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvSunkenShipPart[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SCALE(/*Unused*/ 0, /*Field*/ 50),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_sunken_ship_part_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvSunkenShipSetRotation[] = {\n    SET_INT(oFaceAnglePitch, 0xE958),\n    SET_INT(oFaceAngleYaw, 0xEE6C),\n    SET_INT(oFaceAngleRoll, 0x0C80),\n    RETURN(),\n};\n\nconst BehaviorScript bhvSunkenShipPart2[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SCALE(/*Unused*/ 0, /*Field*/ 100),\n    SET_FLOAT(oDrawingDistance, 6000),\n    SET_HOME(),\n    CALL(bhvSunkenShipSetRotation),\n    BREAK(),\n};\n\nconst BehaviorScript bhvInSunkenShip[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    LOAD_COLLISION_DATA(jrb_seg7_collision_in_sunken_ship),\n    GOTO(bhvInSunkenShip2 + 1 + 2),\n};\n\nconst BehaviorScript bhvInSunkenShip2[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    LOAD_COLLISION_DATA(jrb_seg7_collision_in_sunken_ship_2),\n    // Sunken ship - common:\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_FLOAT(oCollisionDistance, 4000),\n    CALL(bhvSunkenShipSetRotation),\n    BEGIN_LOOP(),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvMistParticleSpawner[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    PARENT_BIT_CLEAR(oActiveParticleFlags, ACTIVE_PARTICLE_DUST),\n    DISABLE_RENDERING(),\n    SPAWN_CHILD(/*Model*/ MODEL_MIST, /*Behavior*/ bhvWhitePuff1),\n    SPAWN_CHILD(/*Model*/ MODEL_SMOKE, /*Behavior*/ bhvWhitePuff2),\n    DELAY(1),\n    DEACTIVATE(),\n};\n\nconst BehaviorScript bhvWhitePuff1[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    PARENT_BIT_CLEAR(oActiveParticleFlags, ACTIVE_PARTICLE_DUST),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BILLBOARD(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_white_puff_1_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvWhitePuff2[] = {\n    BEGIN(OBJ_LIST_UNIMPORTANT),\n    OR_INT(oFlags, (OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BILLBOARD(),\n    SET_INT(oAnimState, -1),\n    BEGIN_REPEAT(7),\n        CALL_NATIVE(bhv_white_puff_2_loop),\n        ADD_INT(oAnimState, 1),\n    END_REPEAT(),\n    DEACTIVATE(),\n};\n\nconst BehaviorScript bhvWhitePuffSmoke2[] = {\n    BEGIN(OBJ_LIST_UNIMPORTANT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BILLBOARD(),\n    SET_INT(oAnimState, -1),\n    BEGIN_REPEAT(7),\n        CALL_NATIVE(bhv_white_puff_2_loop),\n        CALL_NATIVE(cur_obj_move_using_fvel_and_gravity),\n        ADD_INT(oAnimState, 1),\n    END_REPEAT(),\n    DEACTIVATE(),\n};\n\nconst BehaviorScript bhvPurpleSwitchHiddenBoxes[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    SET_INT(oBhvParams2ndByte, 2),\n    GOTO(bhvFloorSwitchHardcodedModel + 1),\n};\n\nconst BehaviorScript bhvBlueCoinSwitch[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_COLLISION_DATA(blue_coin_switch_seg8_collision_08000E98),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_blue_coin_switch_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvHiddenBlueCoin[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    SET_INT(oInteractType, INTERACT_COIN),\n    OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BILLBOARD(),\n    SET_HITBOX(/*Radius*/ 100, /*Height*/ 64),\n    SET_INT(oDamageOrCoinValue, 5),\n    SET_INT(oIntangibleTimer, 0),\n    SET_INT(oAnimState, -1),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_hidden_blue_coin_loop),\n        ADD_INT(oAnimState, 1),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvOpenableCageDoor[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_openable_cage_door_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvOpenableGrill[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_openable_grill_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvWaterLevelDiamond[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_HITBOX(/*Radius*/ 70, /*Height*/ 30),\n    SET_FLOAT(oCollisionDistance, 200),\n    SET_INT(oIntangibleTimer, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_water_level_diamond_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvInitializeChangingWaterLevel[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_init_changing_water_level_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvTweesterSandParticle[] = {\n    BEGIN(OBJ_LIST_UNIMPORTANT),\n    OR_INT(oFlags, (OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BILLBOARD(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_tweester_sand_particle_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvTweester[] = {\n    BEGIN(OBJ_LIST_POLELIKE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ -400, /*Bounciness*/ 0, /*Drag strength*/ 0, /*Friction*/ 0, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    DROP_TO_FLOOR(),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_tweester_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvMerryGoRoundBooManager[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_merry_go_round_boo_manager_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvAnimatedTexture[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ -400, /*Bounciness*/ -70, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    BILLBOARD(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_animated_texture_loop),\n        ADD_INT(oAnimState, 1),\n        ANIMATE_TEXTURE(oAnimState, 2),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBooInCastle[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_HOME(),\n    SET_FLOAT(oGraphYOffset, 60),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ 0, /*Bounciness*/ -50, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    CALL_NATIVE(bhv_init_room),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_boo_in_castle_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBooWithCage[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_HOME(),\n    SET_INT(oDamageOrCoinValue, 3),\n    SET_HURTBOX(/*Radius*/ 80, /*Height*/ 120),\n    SET_HITBOX(/*Radius*/ 180, /*Height*/ 140),\n    SET_FLOAT(oGraphYOffset, 60),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ 0, /*Bounciness*/ -50, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    CALL_NATIVE(bhv_boo_with_cage_init),\n    CALL_NATIVE(bhv_init_room),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_boo_with_cage_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBalconyBigBoo[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    SET_INT(oBhvParams2ndByte, BIG_BOO_BP_BALCONY),\n    SET_INT(oBigBooNumMinionBoosKilled, 10),\n    GOTO(bhvGhostHuntBigBoo + 1),\n};\n\nconst BehaviorScript bhvMerryGoRoundBigBoo[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    SET_INT(oBhvParams2ndByte, BIG_BOO_BP_MERRY_GO_ROUND),\n    // Set number of minion boos killed to 10, which is greater than 5 so that the boo always loads without needing to kill any boos.\n    SET_INT(oBigBooNumMinionBoosKilled, 10),\n    GOTO(bhvGhostHuntBigBoo + 1),\n};\n\nconst BehaviorScript bhvGhostHuntBigBoo[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    // Big boo - common:\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_HOME(),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ 0, /*Bounciness*/ -50, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    CALL_NATIVE(bhv_init_room),\n    CALL_NATIVE(bhv_boo_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_big_boo_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvCourtyardBooTriplet[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    DISABLE_RENDERING(),\n    CALL_NATIVE(bhv_courtyard_boo_triplet_init),\n    DEACTIVATE(),\n};\n\nconst BehaviorScript bhvBoo[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    SET_INT(oBhvParams2ndByte, BOO_BP_GENERIC),\n    GOTO(bhvGhostHuntBoo + 1),\n};\n\nconst BehaviorScript bhvMerryGoRoundBoo[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    SET_INT(oBhvParams2ndByte, BOO_BP_MERRY_GO_ROUND),\n    GOTO(bhvGhostHuntBoo + 1),\n};\n\nconst BehaviorScript bhvGhostHuntBoo[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    // Boo - common:\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_INT(oIntangibleTimer, 0),\n    SET_HOME(),\n    SET_INT(oDamageOrCoinValue, 2),\n    SET_HITBOX(/*Radius*/ 140, /*Height*/ 80),\n    SET_HURTBOX(/*Radius*/ 40, /*Height*/ 60),\n    SET_FLOAT(oGraphYOffset, 30),\n    CALL_NATIVE(bhv_init_room),\n    SPAWN_CHILD(/*Model*/ MODEL_YELLOW_COIN, /*Behavior*/ bhvCoinInsideBoo),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ 0, /*Bounciness*/ -50, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    CALL_NATIVE(bhv_boo_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_boo_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvHiddenStaircaseStep[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_COLLISION_DATA(bbh_seg7_collision_staircase_step),\n    SET_INT(oRoom, 1),\n    SET_FLOAT(oCollisionDistance, 1000),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBooStaircase[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_COLLISION_DATA(bbh_seg7_collision_staircase_step),\n    SET_INT(oRoom, 1),\n    SET_FLOAT(oCollisionDistance, 1000),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_boo_staircase),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBBHTiltingTrapPlatform[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(bbh_seg7_collision_tilt_floor_platform),\n    SET_HOME(),\n    SET_INT(oRoom, 2),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_bbh_tilting_trap_platform_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvHauntedBookshelf[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_COLLISION_DATA(bbh_seg7_collision_haunted_bookshelf),\n    SET_HOME(),\n    SET_INT(oRoom, 6),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_haunted_bookshelf_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvMeshElevator[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_COLLISION_DATA(bbh_seg7_collision_mesh_elevator),\n    SET_HOME(),\n    SET_INT(oRoom, 12),\n    SET_INT(oBhvParams2ndByte, 4),\n    CALL_NATIVE(bhv_elevator_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_elevator_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvMerryGoRound[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(bbh_seg7_collision_merry_go_round),\n    SET_FLOAT(oCollisionDistance, 2000),\n    SET_INT(oRoom, 10),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_merry_go_round_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\n#ifndef VERSION_JP\nconst BehaviorScript bhvPlaysMusicTrackWhenTouched[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_play_music_track_when_touched_loop),\n    END_LOOP(),\n};\n#endif\n\nconst BehaviorScript bhvInsideCannon[] = {\n    BREAK(),\n};\n\nconst BehaviorScript bhvBetaBowserAnchor[] = {\n    BEGIN(OBJ_LIST_DESTRUCTIVE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BILLBOARD(),\n    SET_HOME(),\n    SET_HITBOX(/*Radius*/ 100, /*Height*/ 300),\n    SET_INT(oIntangibleTimer, 0),\n    BEGIN_LOOP(),\n        ADD_INT(oAnimState, 1),\n        CALL_NATIVE(bhv_beta_bowser_anchor_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvStaticCheckeredPlatform[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_COLLISION_DATA(checkerboard_platform_seg8_collision_0800D710),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_static_checkered_platform_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvUnused2A10[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    BILLBOARD(),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BREAK(),\n};\n\nconst BehaviorScript bhvUnusedFakeStar[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BEGIN_LOOP(),\n        ADD_INT(oFaceAnglePitch, 0x100),\n        ADD_INT(oFaceAngleYaw, 0x100),\n    END_LOOP(),\n};\n\n// What is this?\nUNUSED static const BehaviorScript unused_1[] = {\n    BREAK(),\n    BREAK(),\n    BREAK(),\n    BREAK(),\n};\n\nconst BehaviorScript bhvStaticObject[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BREAK(),\n};\n\nconst BehaviorScript bhvUnused2A54[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    BREAK(),\n};\n\nconst BehaviorScript bhvCastleFloorTrap[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    DISABLE_RENDERING(),\n    CALL_NATIVE(bhv_castle_floor_trap_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_castle_floor_trap_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvFloorTrapInCastle[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(inside_castle_seg7_collision_floor_trap),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_floor_trap_in_castle_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvTree[] = {\n    BEGIN(OBJ_LIST_POLELIKE),\n    BILLBOARD(),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_INT(oInteractType, INTERACT_POLE),\n    SET_HITBOX(/*Radius*/ 80, /*Height*/ 500),\n    SET_INT(oIntangibleTimer, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_pole_base_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvSparkle[] = {\n    BEGIN(OBJ_LIST_UNIMPORTANT),\n    BILLBOARD(),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_INT(oAnimState, -1),\n    BEGIN_REPEAT(9),\n        ADD_INT(oAnimState, 1),\n    END_REPEAT(),\n    DEACTIVATE(),\n};\n\nconst BehaviorScript bhvSparkleSpawn[] = {\n    BEGIN(OBJ_LIST_UNIMPORTANT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_sparkle_spawn_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvSparkleParticleSpawner[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    PARENT_BIT_CLEAR(oActiveParticleFlags, ACTIVE_PARTICLE_SPARKLES),\n    BEGIN(OBJ_LIST_UNIMPORTANT),\n    BILLBOARD(),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_FLOAT(oGraphYOffset, 25),\n    SET_RANDOM_FLOAT(oMarioParticleFlags, /*Minimum*/ -50, /*Range*/ 100),\n    SUM_FLOAT(/*Dest*/ oPosX, /*Value 1*/ oPosX, /*Value 2*/ oMarioParticleFlags),\n    SET_RANDOM_FLOAT(oMarioParticleFlags, /*Minimum*/ -50, /*Range*/ 100),\n    SUM_FLOAT(/*Dest*/ oPosZ, /*Value 1*/ oPosZ, /*Value 2*/ oMarioParticleFlags),\n    SET_RANDOM_FLOAT(oMarioParticleFlags, /*Minimum*/ -50, /*Range*/ 100),\n    SUM_FLOAT(/*Dest*/ oPosY, /*Value 1*/ oPosY, /*Value 2*/ oMarioParticleFlags),\n    SET_INT(oAnimState, -1),\n    BEGIN_REPEAT(12),\n        ADD_INT(oAnimState, 1),\n    END_REPEAT(),\n    DEACTIVATE(),\n};\n\nconst BehaviorScript bhvScuttlebug[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, scuttlebug_seg6_anims_06015064),\n    ANIMATE(0),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 80, /*Gravity*/ -400, /*Bounciness*/ -50, /*Drag strength*/ 0, /*Friction*/ 0, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    SET_HOME(),\n    CALL_NATIVE(bhv_init_room),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_scuttlebug_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvScuttlebugSpawn[] = {\n    BEGIN(OBJ_LIST_SPAWNER),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_scuttlebug_spawn_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvWhompKingBoss[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    SET_INT(oBhvParams2ndByte, WHOMP_BP_KING),\n    SET_INT(oHealth, 3),\n    GOTO(bhvSmallWhomp + 1 + 1),\n};\n\nconst BehaviorScript bhvSmallWhomp[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    SET_INT(oNumLootCoins, 5),\n    // Whomp - common:\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, whomp_seg6_anims_06020A04),\n    LOAD_COLLISION_DATA(whomp_seg6_collision_06020A0C),\n    ANIMATE(0),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 0, /*Gravity*/ -400, /*Bounciness*/ -50, /*Drag strength*/ 0, /*Friction*/ 0, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_whomp_loop),\n    END_LOOP(),\n};\n\n// The large splash Mario makes when he jumps into a pool of water.\nconst BehaviorScript bhvWaterSplash[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BILLBOARD(),\n    SET_INT(oAnimState, -1),\n    BEGIN_REPEAT(3),\n        ADD_INT(oAnimState, 1),\n        CALL_NATIVE(bhv_water_splash_spawn_droplets),\n        DELAY(1),\n        CALL_NATIVE(bhv_water_splash_spawn_droplets),\n    END_REPEAT(),\n    BEGIN_REPEAT(5),\n        ADD_INT(oAnimState, 1),\n        DELAY(1),\n    END_REPEAT(),\n    PARENT_BIT_CLEAR(oActiveParticleFlags, ACTIVE_PARTICLE_WATER_SPLASH),\n    DEACTIVATE(),\n};\n\n// Droplets of water that spawn as a result of various water splashes.\nconst BehaviorScript bhvWaterDroplet[] = {\n    BEGIN(OBJ_LIST_UNIMPORTANT),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BILLBOARD(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_water_droplet_loop),\n    END_LOOP(),\n};\n\n// Small splashes that are seen when a water droplet lands back into the water.\nconst BehaviorScript bhvWaterDropletSplash[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n#ifndef VERSION_JP\n    SET_INT(oFaceAnglePitch, 0),\n    SET_INT(oFaceAngleYaw, 0),\n    SET_INT(oFaceAngleRoll, 0),\n#endif\n    CALL_NATIVE(bhv_water_droplet_splash_init),\n    ADD_FLOAT(oPosY, 5),\n    SET_INT(oAnimState, -1),\n    BEGIN_REPEAT(6),\n        ADD_INT(oAnimState, 1),\n    END_REPEAT(),\n    DEACTIVATE(),\n};\n\n// The splash created when an air bubble hits the surface of the water.\nconst BehaviorScript bhvBubbleSplash[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n#ifdef VERSION_JP\n    SET_FLOAT(oFaceAnglePitch, 0),\n    SET_FLOAT(oFaceAngleYaw, 0),\n    SET_FLOAT(oFaceAngleRoll, 0),\n#endif\n#ifndef VERSION_JP\n    SET_INT(oFaceAnglePitch, 0),\n    SET_INT(oFaceAngleYaw, 0),\n    SET_INT(oFaceAngleRoll, 0),\n#endif\n    SET_INT(oAnimState, -1),\n    CALL_NATIVE(bhv_bubble_splash_init),\n    BEGIN_REPEAT(6),\n        ADD_INT(oAnimState, 1),\n    END_REPEAT(),\n    DEACTIVATE(),\n};\n\n// The water wave surrounding Mario when he is idle in a pool of water.\nconst BehaviorScript bhvIdleWaterWave[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n#ifdef VERSION_JP\n    SET_FLOAT(oFaceAnglePitch, 0),\n    SET_FLOAT(oFaceAngleYaw, 0),\n    SET_FLOAT(oFaceAngleRoll, 0),\n#endif\n#ifndef VERSION_JP\n    SET_INT(oFaceAnglePitch, 0),\n    SET_INT(oFaceAngleYaw, 0),\n    SET_INT(oFaceAngleRoll, 0),\n#endif\n    SET_INT(oAnimState, -1),\n    ADD_INT(oAnimState, 1),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_idle_water_wave_loop),\n        ADD_INT(oAnimState, 1),\n        BEGIN_REPEAT(6),\n            CALL_NATIVE(bhv_idle_water_wave_loop),\n        END_REPEAT(),\n        CALL_NATIVE(bhv_idle_water_wave_loop),\n    END_LOOP(),\n};\n\n// Water splashes similar to the splashes created by water droplets, but are created by other objects.\n// Unlike water droplet splashes, they are unimportant objects.\nconst BehaviorScript bhvObjectWaterSplash[] = {\n    BEGIN(OBJ_LIST_UNIMPORTANT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n#ifdef VERSION_JP\n    SET_FLOAT(oFaceAnglePitch, 0),\n    SET_FLOAT(oFaceAngleYaw, 0),\n    SET_FLOAT(oFaceAngleRoll, 0),\n#endif\n#ifndef VERSION_JP\n    SET_INT(oFaceAnglePitch, 0),\n    SET_INT(oFaceAngleYaw, 0),\n    SET_INT(oFaceAngleRoll, 0),\n#endif\n    SET_INT(oAnimState, -1),\n    BEGIN_REPEAT(6),\n        ADD_INT(oAnimState, 1),\n    END_REPEAT(),\n    DEACTIVATE(),\n};\n\n// Waves that are generated when running in shallow water.\nconst BehaviorScript bhvShallowWaterWave[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    DISABLE_RENDERING(),\n    BEGIN_REPEAT(5),\n        SPAWN_WATER_DROPLET(&gShallowWaterWaveDropletParams),\n    END_REPEAT_CONTINUE(),\n    DELAY(1),\n    PARENT_BIT_CLEAR(oActiveParticleFlags, ACTIVE_PARTICLE_SHALLOW_WATER_WAVE),\n    DEACTIVATE(),\n};\n\n// A small water splash that occurs when jumping in and out of shallow water.\n// Unlike the larger water splash it has no visible model of its own.\n// It has a 1 in 256 chance of spawning the fish particle easter egg.\nconst BehaviorScript bhvShallowWaterSplash[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    DISABLE_RENDERING(),\n    BEGIN_REPEAT(18),\n        SPAWN_WATER_DROPLET(&gShallowWaterSplashDropletParams),\n    END_REPEAT_CONTINUE(),\n    CALL_NATIVE(bhv_shallow_water_splash_init),\n    DELAY(1),\n    PARENT_BIT_CLEAR(oActiveParticleFlags, ACTIVE_PARTICLE_SHALLOW_WATER_SPLASH),\n    DEACTIVATE(),\n};\n\n// Waves created by other objects along the water's surface, specifically the koopa shell and Sushi.\n// Unlike Mario's waves, they are unimportant objects.\nconst BehaviorScript bhvObjectWaveTrail[] = {\n    BEGIN(OBJ_LIST_UNIMPORTANT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    GOTO(bhvWaveTrail + 1 + 1 + 2), // Wave trail - common\n};\n\n// The waves created by Mario while he is swimming.\nconst BehaviorScript bhvWaveTrail[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    PARENT_BIT_CLEAR(oActiveParticleFlags, ACTIVE_PARTICLE_WAVE_TRAIL),\n    // Wave trail - common:\n    SET_FLOAT(oFaceAnglePitch, 0),\n    SET_FLOAT(oFaceAngleYaw, 0),\n    SET_FLOAT(oFaceAngleRoll, 0),\n    SET_INT(oAnimState, -1),\n    BEGIN_REPEAT(8),\n        ADD_INT(oAnimState, 1),\n        CALL_NATIVE(bhv_wave_trail_shrink),\n        DELAY(1),\n        CALL_NATIVE(bhv_wave_trail_shrink),\n    END_REPEAT(),\n    DEACTIVATE(),\n};\n\n// Tiny wind particles that provide aesthetics to the strong winds generated by the Snowman and Fwoosh.\n// As they are unimportant objects, they don't have collision with Mario.\nconst BehaviorScript bhvTinyStrongWindParticle[] = {\n    BEGIN(OBJ_LIST_UNIMPORTANT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BILLBOARD(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_strong_wind_particle_loop),\n    END_LOOP(),\n};\n\n// Strong wind particles generated by the Snowman and Fwoosh that blow Mario back and knock his cap off.\nconst BehaviorScript bhvStrongWindParticle[] = {\n    BEGIN(OBJ_LIST_POLELIKE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BILLBOARD(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_strong_wind_particle_loop),\n    END_LOOP(),\n};\n\n// The handler for the strong wind blown by the Snowman in SL. Triggers dialog and then aims towards Mario.\nconst BehaviorScript bhvSLSnowmanWind[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_sl_snowman_wind_loop),\n    END_LOOP(),\n};\n\n// The penguin that walks erratically along the ice bridge in front of the Snowman in SL.\n// Blocks strong wind particles, allowing Mario to walk behind it.\nconst BehaviorScript bhvSLWalkingPenguin[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(penguin_seg5_collision_05008B88),\n    LOAD_ANIMATIONS(oAnimations, penguin_seg5_anims_05008B74),\n    ANIMATE(0),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 0, /*Gravity*/ -400, /*Bounciness*/ -50, /*Drag strength*/ 0, /*Friction*/ 0, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    SCALE(/*Unused*/ 0, /*Field*/ 600),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_sl_walking_penguin_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvYellowBall[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BILLBOARD(),\n    BREAK(),\n};\n\nUNUSED static const u64 behavior_data_unused_0 = 0;\nconst BehaviorScript bhvMario[] = {\n    BEGIN(OBJ_LIST_PLAYER),\n    SET_INT(oIntangibleTimer, 0),\n    OR_INT(oFlags, OBJ_FLAG_0100),\n    OR_INT(oUnk94, 0x0001),\n    SET_HITBOX(/*Radius*/ 37, /*Height*/ 160),\n    BEGIN_LOOP(),\n        CALL_NATIVE(try_print_debug_mario_level_info),\n        CALL_NATIVE(bhv_mario_update),\n        CALL_NATIVE(try_do_mario_debug_object_spawn),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvToadMessage[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_PERSISTENT_RESPAWN | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, toad_seg6_anims_0600FB58),\n    ANIMATE(6),\n    SET_INTERACT_TYPE(INTERACT_TEXT),\n    SET_HITBOX(/*Radius*/ 80, /*Height*/ 100),\n    SET_INT(oIntangibleTimer, 0),\n    CALL_NATIVE(bhv_init_room),\n    CALL_NATIVE(bhv_toad_message_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_toad_message_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvUnlockDoorStar[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    CALL_NATIVE(bhv_unlock_door_star_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_unlock_door_star_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvInstantActiveWarp[] = {\n    BREAK(),\n};\n\nconst BehaviorScript bhvAirborneWarp[] = {\n    BREAK(),\n};\n\nconst BehaviorScript bhvHardAirKnockBackWarp[] = {\n    BREAK(),\n};\n\nconst BehaviorScript bhvSpinAirborneCircleWarp[] = {\n    BREAK(),\n};\n\nconst BehaviorScript bhvDeathWarp[] = {\n    BREAK(),\n};\n\nconst BehaviorScript bhvSpinAirborneWarp[] = {\n    BREAK(),\n};\n\nconst BehaviorScript bhvFlyingWarp[] = {\n    BREAK(),\n};\n\nconst BehaviorScript bhvPaintingStarCollectWarp[] = {\n    BREAK(),\n};\n\nconst BehaviorScript bhvPaintingDeathWarp[] = {\n    BREAK(),\n};\n\nconst BehaviorScript bhvAirborneDeathWarp[] = {\n    BREAK(),\n};\n\nconst BehaviorScript bhvAirborneStarCollectWarp[] = {\n    BREAK(),\n};\n\nconst BehaviorScript bhvLaunchStarCollectWarp[] = {\n    BREAK(),\n};\n\nconst BehaviorScript bhvLaunchDeathWarp[] = {\n    BREAK(),\n};\n\nconst BehaviorScript bhvSwimmingWarp[] = {\n    BREAK(),\n};\n\nUNUSED static const u64 behavior_data_unused_1 = 0;\nconst BehaviorScript bhvRandomAnimatedTexture[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_FLOAT(oGraphYOffset, -16),\n    BILLBOARD(),\n    SET_INT(oAnimState, -1),\n    BEGIN_LOOP(),\n        ADD_INT(oAnimState, 1),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvYellowBackgroundInMenu[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    CALL_NATIVE(beh_yellow_background_menu_init),\n    BEGIN_LOOP(),\n        SET_INT(oIntangibleTimer, 0),\n        CALL_NATIVE(beh_yellow_background_menu_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvMenuButton[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    CALL_NATIVE(bhv_menu_button_init),\n    BEGIN_LOOP(),\n        SET_INT(oIntangibleTimer, 0),\n        CALL_NATIVE(bhv_menu_button_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvMenuButtonManager[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, (OBJ_FLAG_SET_THROW_MATRIX_FROM_TRANSFORM | OBJ_FLAG_0020 | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    CALL_NATIVE(bhv_menu_button_manager_init),\n    BEGIN_LOOP(),\n        SET_INT(oIntangibleTimer, 0),\n        CALL_NATIVE(bhv_menu_button_manager_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvActSelectorStarType[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_act_selector_star_type_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvActSelector[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    CALL_NATIVE(bhv_act_selector_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_act_selector_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvMovingYellowCoin[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BILLBOARD(),\n    SET_HITBOX(/*Radius*/ 100, /*Height*/ 64),\n    SET_INT(oInteractType, INTERACT_COIN),\n    SET_INT(oIntangibleTimer, 0),\n    SET_INT(oAnimState, -1),\n    CALL_NATIVE(bhv_moving_yellow_coin_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_moving_yellow_coin_loop),\n        ADD_INT(oAnimState, 1),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvMovingBlueCoin[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BILLBOARD(),\n    SET_INT(oIntangibleTimer, 0),\n    SET_INT(oAnimState, -1),\n    CALL_NATIVE(bhv_moving_blue_coin_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_moving_blue_coin_loop),\n        ADD_INT(oAnimState, 1),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBlueCoinSliding[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BILLBOARD(),\n    SET_INT(oIntangibleTimer, 0),\n    SET_INT(oAnimState, -1),\n    CALL_NATIVE(bhv_blue_coin_sliding_jumping_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_blue_coin_sliding_loop),\n        ADD_INT(oAnimState, 1),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBlueCoinJumping[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BILLBOARD(),\n    SET_INT(oIntangibleTimer, 0),\n    SET_INT(oAnimState, -1),\n    CALL_NATIVE(bhv_blue_coin_sliding_jumping_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_blue_coin_jumping_loop),\n        ADD_INT(oAnimState, 1),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvSeaweed[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_ANIMATIONS(oAnimations, seaweed_seg6_anims_0600A4D4),\n    ANIMATE(0),\n    CALL_NATIVE(bhv_seaweed_init),\n    BEGIN_LOOP(),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvSeaweedBundle[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    DROP_TO_FLOOR(),\n    CALL_NATIVE(bhv_seaweed_bundle_init),\n    BEGIN_LOOP(),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBobomb[] = {\n    BEGIN(OBJ_LIST_DESTRUCTIVE),\n    OR_INT(oFlags, (OBJ_FLAG_PERSISTENT_RESPAWN | OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, bobomb_seg8_anims_0802396C),\n    DROP_TO_FLOOR(),\n    ANIMATE(0),\n    SET_INT(oIntangibleTimer, 0),\n    SET_HOME(),\n    CALL_NATIVE(bhv_bobomb_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_bobomb_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBobombFuseSmoke[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BILLBOARD(),\n    SET_INT(oAnimState, -1),\n    CALL_NATIVE(bhv_bobomb_fuse_smoke_init),\n    DELAY(1),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_dust_smoke_loop),\n        ADD_INT(oAnimState, 1),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBobombBuddy[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, bobomb_seg8_anims_0802396C),\n    SET_INTERACT_TYPE(INTERACT_TEXT),\n    DROP_TO_FLOOR(),\n    SET_HITBOX(/*Radius*/ 100, /*Height*/ 60),\n    ANIMATE(0),\n    SET_INT(oBobombBuddyRole, BOBOMB_BUDDY_ROLE_ADVICE),\n    SET_HOME(),\n    CALL_NATIVE(bhv_bobomb_buddy_init),\n    BEGIN_LOOP(),\n        SET_INT(oIntangibleTimer, 0),\n        CALL_NATIVE(bhv_bobomb_buddy_loop),\n    END_LOOP(),\n};\n\n// The only difference between this and the previous behavior are what oFlags and oBobombBuddyRole are set to, why didn't they just use a jump?\nconst BehaviorScript bhvBobombBuddyOpensCannon[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_PERSISTENT_RESPAWN | OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, bobomb_seg8_anims_0802396C),\n    SET_INTERACT_TYPE(INTERACT_TEXT),\n    DROP_TO_FLOOR(),\n    SET_HITBOX(/*Radius*/ 100, /*Height*/ 60),\n    ANIMATE(0),\n    SET_INT(oBobombBuddyRole, BOBOMB_BUDDY_ROLE_CANNON),\n    SET_HOME(),\n    CALL_NATIVE(bhv_bobomb_buddy_init),\n    BEGIN_LOOP(),\n        SET_INT(oIntangibleTimer, 0),\n        CALL_NATIVE(bhv_bobomb_buddy_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvCannonClosed[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_PERSISTENT_RESPAWN | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(cannon_lid_seg8_collision_08004950),\n    SET_HOME(),\n    CALL_NATIVE(bhv_cannon_closed_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_cannon_closed_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvWhirlpool[] = {\n    BEGIN(OBJ_LIST_POLELIKE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    CALL_NATIVE(bhv_whirlpool_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_whirlpool_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvJetStream[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_jet_stream_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvMessagePanel[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_COLLISION_DATA(wooden_signpost_seg3_collision_0302DD80),\n    SET_INTERACT_TYPE(INTERACT_TEXT),\n    SET_INT(oInteractionSubtype, INT_SUBTYPE_SIGN),\n    DROP_TO_FLOOR(),\n    SET_HITBOX(/*Radius*/ 150, /*Height*/ 80),\n    SET_INT(oWoodenPostTotalMarioAngle, 0),\n    BEGIN_LOOP(),\n        SET_INT(oIntangibleTimer, 0),\n        CALL_NATIVE(load_object_collision_model),\n        SET_INT(oInteractStatus, 0),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvSignOnWall[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_INTERACT_TYPE(INTERACT_TEXT),\n    SET_INT(oInteractionSubtype, INT_SUBTYPE_SIGN),\n    SET_HITBOX(/*Radius*/ 150, /*Height*/ 80),\n    SET_INT(oWoodenPostTotalMarioAngle, 0),\n    BEGIN_LOOP(),\n        SET_INT(oIntangibleTimer, 0),\n        SET_INT(oInteractStatus, 0),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvHomingAmp[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, dAmpAnimsList),\n    ANIMATE(0),\n    SET_FLOAT(oGraphYOffset, 40),\n    SET_INT(oIntangibleTimer, 0),\n    CALL_NATIVE(bhv_homing_amp_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_homing_amp_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvCirclingAmp[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, dAmpAnimsList),\n    ANIMATE(0),\n    SET_FLOAT(oGraphYOffset, 40),\n    SET_INT(oIntangibleTimer, 0),\n    CALL_NATIVE(bhv_circling_amp_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_circling_amp_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvButterfly[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, butterfly_seg3_anims_030056B0),\n    DROP_TO_FLOOR(),\n    SET_FLOAT(oGraphYOffset, 5),\n    CALL_NATIVE(bhv_butterfly_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_butterfly_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvHoot[] = {\n    BEGIN(OBJ_LIST_POLELIKE),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, hoot_seg5_anims_05005768),\n    SET_INT(oInteractType, INTERACT_HOOT),\n    SET_HITBOX(/*Radius*/ 75, /*Height*/ 75),\n    CALL_NATIVE(bhv_hoot_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_hoot_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBetaHoldableObject[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_HOLDABLE | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_INT(oInteractType, INTERACT_GRABBABLE),\n    DROP_TO_FLOOR(),\n    SET_HITBOX(/*Radius*/ 40, /*Height*/ 50),\n    CALL_NATIVE(bhv_beta_holdable_object_init),\n    BEGIN_LOOP(),\n        SET_INT(oIntangibleTimer, 0),\n        CALL_NATIVE(bhv_beta_holdable_object_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvCarrySomething1[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    BREAK(),\n};\n\nconst BehaviorScript bhvCarrySomething2[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    BREAK(),\n};\n\nconst BehaviorScript bhvCarrySomething3[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    BREAK(),\n};\n\nconst BehaviorScript bhvCarrySomething4[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    BREAK(),\n};\n\nconst BehaviorScript bhvCarrySomething5[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    BREAK(),\n};\n\nconst BehaviorScript bhvCarrySomething6[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    BREAK(),\n};\n\nconst BehaviorScript bhvObjectBubble[] = {\n    BEGIN(OBJ_LIST_UNIMPORTANT),\n    OR_INT(oFlags, (OBJ_FLAG_MOVE_Y_WITH_TERMINAL_VEL | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BILLBOARD(),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_INT(oAnimState, -1),\n    CALL_NATIVE(bhv_object_bubble_init),\n    SET_RANDOM_FLOAT(oVelY, /*Minimum*/ 3, /*Range*/ 6),\n    SET_INT_RAND_RSHIFT(oMoveAngleYaw, /*Minimum*/ 0, /*Right shift*/ 0),\n    DELAY(1),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_object_bubble_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvObjectWaterWave[] = {\n    BEGIN(OBJ_LIST_UNIMPORTANT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_FLOAT(oFaceAnglePitch, 0),\n    SET_FLOAT(oFaceAngleYaw, 0),\n    SET_FLOAT(oFaceAngleRoll, 0),\n    SET_INT(oAnimState, -1),\n    CALL_NATIVE(bhv_object_water_wave_init),\n    ADD_INT(oAnimState, 1),\n    DELAY(6),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_object_water_wave_loop),\n        ADD_INT(oAnimState, 1),\n    BEGIN_REPEAT(6),\n        CALL_NATIVE(bhv_object_water_wave_loop),\n    END_REPEAT(),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvExplosion[] = {\n    BEGIN(OBJ_LIST_DESTRUCTIVE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BILLBOARD(),\n    SET_INTERACT_TYPE(INTERACT_DAMAGE),\n    SET_INT(oDamageOrCoinValue, 2),\n    SET_INT(oIntangibleTimer, 0),\n    SET_HITBOX_WITH_OFFSET(/*Radius*/ 150, /*Height*/ 150, /*Downwards offset*/ 150),\n    SET_INT(oAnimState, -1),\n    CALL_NATIVE(bhv_explosion_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_explosion_loop),\n        ADD_INT(oAnimState, 1),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBobombBullyDeathSmoke[] = {\n    BEGIN(OBJ_LIST_UNIMPORTANT),\n    OR_INT(oFlags, (OBJ_FLAG_MOVE_Y_WITH_TERMINAL_VEL | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BILLBOARD(),\n    SET_INT(oAnimState, -1),\n    CALL_NATIVE(bhv_bobomb_bully_death_smoke_init),\n    DELAY(1),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_dust_smoke_loop),\n        ADD_INT(oAnimState, 1),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvSmoke[] = {\n    BEGIN(OBJ_LIST_UNIMPORTANT),\n    OR_INT(oFlags, (OBJ_FLAG_MOVE_Y_WITH_TERMINAL_VEL | OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BILLBOARD(),\n    SET_INT(oAnimState, -1),\n    DELAY(1),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_dust_smoke_loop),\n        ADD_INT(oAnimState, 1),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBobombExplosionBubble[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    BILLBOARD(),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    CALL_NATIVE(bhv_bobomb_explosion_bubble_init),\n    ADD_RANDOM_FLOAT(oPosX, /*Minimum*/ -50, /*Range*/ 100),\n    ADD_RANDOM_FLOAT(oPosY, /*Minimum*/ -50, /*Range*/ 100),\n    ADD_RANDOM_FLOAT(oPosZ, /*Minimum*/ -50, /*Range*/ 100),\n    CALL(bhvBobombExplosionBubble3600),\n    DELAY(1),\n    BEGIN_LOOP(),\n        CALL(bhvBobombExplosionBubble3600),\n        CALL_NATIVE(bhv_bobomb_explosion_bubble_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBobombExplosionBubble3600[] = {\n    ADD_RANDOM_FLOAT(oPosX, /*Minimum*/ -2, /*Range*/ 4),\n    ADD_RANDOM_FLOAT(oPosZ, /*Minimum*/ -2, /*Range*/ 4),\n    RETURN(),\n};\n\nconst BehaviorScript bhvRespawner[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_respawner_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvSmallBully[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, bully_seg5_anims_0500470C),\n    DROP_TO_FLOOR(),\n    SET_HOME(),\n    CALL_NATIVE(bhv_small_bully_init),\n    BEGIN_LOOP(),\n        SET_INT(oIntangibleTimer, 0),\n        CALL_NATIVE(bhv_bully_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBigBully[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, bully_seg5_anims_0500470C),\n    DROP_TO_FLOOR(),\n    SET_HOME(),\n    CALL_NATIVE(bhv_big_bully_init),\n    BEGIN_LOOP(),\n        SET_INT(oIntangibleTimer, 0),\n        CALL_NATIVE(bhv_bully_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBigBullyWithMinions[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, bully_seg5_anims_0500470C),\n    SET_HOME(),\n    CALL_NATIVE(bhv_big_bully_init),\n    CALL_NATIVE(bhv_big_bully_with_minions_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_big_bully_with_minions_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvSmallChillBully[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, chilly_chief_seg6_anims_06003994),\n    DROP_TO_FLOOR(),\n    SET_HOME(),\n    SET_INT(oBullySubtype, BULLY_STYPE_CHILL),\n    CALL_NATIVE(bhv_small_bully_init),\n    BEGIN_LOOP(),\n        SET_INT(oIntangibleTimer, 0),\n        CALL_NATIVE(bhv_bully_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBigChillBully[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, chilly_chief_seg6_anims_06003994),\n    DROP_TO_FLOOR(),\n    SET_HOME(),\n    SET_INT(oBullySubtype, BULLY_STYPE_CHILL),\n    CALL_NATIVE(bhv_big_bully_init),\n    BEGIN_LOOP(),\n        SET_INT(oIntangibleTimer, 0),\n        CALL_NATIVE(bhv_bully_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvJetStreamRingSpawner[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    HIDE(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_jet_stream_ring_spawner_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvJetStreamWaterRing[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_ANIMATIONS(oAnimations, water_ring_seg6_anims_06013F7C),\n    SET_HITBOX_WITH_OFFSET(/*Radius*/ 75, /*Height*/ 20, /*Downwards offset*/ 20),\n    SET_INTERACT_TYPE(INTERACT_WATER_RING),\n    SET_INT(oDamageOrCoinValue, 2),\n    SET_INT(oIntangibleTimer, 0),\n    CALL_NATIVE(bhv_jet_stream_water_ring_init),\n    BEGIN_LOOP(),\n        SET_INT(oIntangibleTimer, 0),\n        CALL_NATIVE(bhv_jet_stream_water_ring_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvMantaRayWaterRing[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_ANIMATIONS(oAnimations, water_ring_seg6_anims_06013F7C),\n    SET_HITBOX_WITH_OFFSET(/*Radius*/ 75, /*Height*/ 20, /*Downwards offset*/ 20),\n    SET_INTERACT_TYPE(INTERACT_WATER_RING),\n    SET_INT(oDamageOrCoinValue, 2),\n    SET_INT(oIntangibleTimer, 0),\n    CALL_NATIVE(bhv_manta_ray_water_ring_init),\n    BEGIN_LOOP(),\n        SET_INT(oIntangibleTimer, 0),\n        CALL_NATIVE(bhv_manta_ray_water_ring_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvMantaRayRingManager[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    BEGIN_LOOP(),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBowserBomb[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_INT(oIntangibleTimer, 0),\n    SET_HITBOX_WITH_OFFSET(/*Radius*/ 40, /*Height*/ 40, /*Downwards offset*/ 40),\n    DELAY(1),\n    BEGIN_LOOP(),\n        SET_INT(oIntangibleTimer, 0),\n        CALL_NATIVE(bhv_bowser_bomb_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBowserBombExplosion[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BILLBOARD(),\n    SET_FLOAT(oGraphYOffset, -288),\n    SET_INT(oAnimState, -1),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_bowser_bomb_explosion_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBowserBombSmoke[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BILLBOARD(),\n    SET_FLOAT(oGraphYOffset, -288),\n    SET_INT(oOpacity, 255),\n    SET_INT(oAnimState, -1),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_bowser_bomb_smoke_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvCelebrationStar[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    CALL_NATIVE(bhv_celebration_star_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_celebration_star_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvCelebrationStarSparkle[] = {\n    BEGIN(OBJ_LIST_UNIMPORTANT),\n    BILLBOARD(),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_FLOAT(oGraphYOffset, 25),\n    SET_INT(oAnimState, -1),\n    BEGIN_LOOP(),\n        ADD_INT(oAnimState, 1),\n        CALL_NATIVE(bhv_celebration_star_sparkle_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvStarKeyCollectionPuffSpawner[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    BILLBOARD(),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_INT(oAnimState, -1),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_star_key_collection_puff_spawner_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvLLLDrawbridgeSpawner[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    HIDE(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_lll_drawbridge_spawner_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvLLLDrawbridge[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(lll_seg7_collision_drawbridge),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_lll_drawbridge_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvSmallBomp[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(wf_seg7_collision_small_bomp),\n    CALL_NATIVE(bhv_small_bomp_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_small_bomp_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvLargeBomp[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(wf_seg7_collision_large_bomp),\n    CALL_NATIVE(bhv_large_bomp_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_large_bomp_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvWFSlidingPlatform[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_MOVE_XZ_USING_FVEL | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(wf_seg7_collision_sliding_brick_platform),\n    CALL_NATIVE(bhv_wf_sliding_platform_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_wf_sliding_platform_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvMoneybag[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, moneybag_seg6_anims_06005E5C),\n    DROP_TO_FLOOR(),\n    SET_HOME(),\n    SET_INT(oIntangibleTimer, -1),\n    CALL_NATIVE(bhv_moneybag_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_moneybag_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvMoneybagHidden[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_FLOAT(oGraphYOffset, 27),\n    BILLBOARD(),\n    SET_HITBOX(/*Radius*/ 110, /*Height*/ 100),\n    SET_INT(oIntangibleTimer, 0),\n    SET_INT(oAnimState, -1),\n    BEGIN_LOOP(),\n        ADD_INT(oAnimState, 1),\n        CALL_NATIVE(bhv_moneybag_hidden_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvPitBowlingBall[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BILLBOARD(),\n    SET_FLOAT(oGraphYOffset, 130),\n    CALL_NATIVE(bhv_bob_pit_bowling_ball_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_bob_pit_bowling_ball_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvFreeBowlingBall[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BILLBOARD(),\n    SET_FLOAT(oGraphYOffset, 130),\n    CALL_NATIVE(bhv_free_bowling_ball_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_free_bowling_ball_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBowlingBall[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BILLBOARD(),\n    SET_FLOAT(oGraphYOffset, 130),\n    CALL_NATIVE(bhv_bowling_ball_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_bowling_ball_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvTTMBowlingBallSpawner[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_INT(oBBallSpawnerPeriodMinus1, 63),\n    CALL_NATIVE(bhv_generic_bowling_ball_spawner_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_generic_bowling_ball_spawner_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBoBBowlingBallSpawner[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_INT(oBBallSpawnerPeriodMinus1, 127),\n    CALL_NATIVE(bhv_generic_bowling_ball_spawner_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_generic_bowling_ball_spawner_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvTHIBowlingBallSpawner[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_thi_bowling_ball_spawner_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvRRCruiserWing[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    CALL_NATIVE(bhv_rr_cruiser_wing_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_rr_cruiser_wing_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvSpindel[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_ANGLE_TO_MOVE_ANGLE | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(ssl_seg7_collision_spindel),\n    CALL_NATIVE(bhv_spindel_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_spindel_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvSSLMovingPyramidWall[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_ANGLE_TO_MOVE_ANGLE | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(ssl_seg7_collision_0702808C),\n    CALL_NATIVE(bhv_ssl_moving_pyramid_wall_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_ssl_moving_pyramid_wall_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvPyramidElevator[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_COLLISION_DATA(ssl_seg7_collision_pyramid_elevator),\n    SET_HOME(),\n    SET_FLOAT(oCollisionDistance, 20000),\n    CALL_NATIVE(bhv_pyramid_elevator_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_pyramid_elevator_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvPyramidElevatorTrajectoryMarkerBall[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BILLBOARD(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_pyramid_elevator_trajectory_marker_ball_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvPyramidTop[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_COLLISION_DATA(ssl_seg7_collision_pyramid_top),\n    SET_HOME(),\n    SET_FLOAT(oCollisionDistance, 20000),\n    CALL_NATIVE(bhv_pyramid_top_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_pyramid_top_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvPyramidTopFragment[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    CALL_NATIVE(bhv_pyramid_top_fragment_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_pyramid_top_fragment_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvPyramidPillarTouchDetector[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_HITBOX(/*Radius*/ 50, /*Height*/ 50),\n    SET_INT(oIntangibleTimer, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_pyramid_pillar_touch_detector_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvWaterfallSoundLoop[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_waterfall_sound_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvVolcanoSoundLoop[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_volcano_sound_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvCastleFlagWaving[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_ANIMATIONS(oAnimations, castle_grounds_seg7_anims_flags),\n    ANIMATE(0),\n    CALL_NATIVE(bhv_castle_flag_init),\n    BEGIN_LOOP(),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBirdsSoundLoop[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_birds_sound_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvAmbientSounds[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    CALL_NATIVE(bhv_ambient_sounds_init),\n    BEGIN_LOOP(),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvSandSoundLoop[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_sand_sound_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvHiddenAt120Stars[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_COLLISION_DATA(castle_grounds_seg7_collision_cannon_grill),\n    SET_FLOAT(oCollisionDistance, 4000),\n    CALL_NATIVE(bhv_castle_cannon_grate_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvSnowmansBottom[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    DROP_TO_FLOOR(),\n    SET_INT(oIntangibleTimer, 0),\n    CALL_NATIVE(bhv_snowmans_bottom_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_snowmans_bottom_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvSnowmansHead[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    DROP_TO_FLOOR(),\n    SET_FLOAT(oGraphYOffset, 110),\n    CALL_NATIVE(bhv_snowmans_head_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_snowmans_head_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvSnowmansBodyCheckpoint[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_snowmans_body_checkpoint_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBigSnowmanWhole[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_FLOAT(oGraphYOffset, 180),\n    SET_INTERACT_TYPE(INTERACT_TEXT),\n    SET_HITBOX(/*Radius*/ 210, /*Height*/ 550),\n    BEGIN_LOOP(),\n        SET_INT(oIntangibleTimer, 0),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBigBoulder[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_FLOAT(oGraphYOffset, 180),\n    CALL_NATIVE(bhv_big_boulder_init),\n    SET_FLOAT(oCollisionDistance, 20000),\n    BEGIN_LOOP(),\n        SET_INT(oIntangibleTimer, 0),\n        CALL_NATIVE(bhv_big_boulder_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBigBoulderGenerator[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_big_boulder_generator_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvWingCap[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    CALL_NATIVE(bhv_wing_cap_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_wing_vanish_cap_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvMetalCap[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    CALL_NATIVE(bhv_metal_cap_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_metal_cap_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvNormalCap[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    CALL_NATIVE(bhv_normal_cap_init),\n    BEGIN_LOOP(),\n        SET_INT(oIntangibleTimer, 0),\n        CALL_NATIVE(bhv_normal_cap_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvVanishCap[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    CALL_NATIVE(bhv_vanish_cap_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_wing_vanish_cap_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvStar[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    CALL_NATIVE(bhv_init_room),\n    CALL_NATIVE(bhv_collect_star_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_collect_star_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvStarSpawnCoordinates[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    CALL_NATIVE(bhv_collect_star_init),\n    CALL_NATIVE(bhv_star_spawn_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_star_spawn_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvHiddenRedCoinStar[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, (OBJ_FLAG_PERSISTENT_RESPAWN | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    CALL_NATIVE(bhv_hidden_red_coin_star_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_hidden_red_coin_star_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvRedCoin[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BILLBOARD(),\n    SET_INT(oIntangibleTimer, 0),\n    SET_INT(oAnimState, -1),\n    CALL_NATIVE(bhv_init_room),\n    CALL_NATIVE(bhv_red_coin_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_red_coin_loop),\n        ADD_INT(oAnimState, 1),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBowserCourseRedCoinStar[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, (OBJ_FLAG_PERSISTENT_RESPAWN | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_bowser_course_red_coin_star_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvHiddenStar[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, (OBJ_FLAG_PERSISTENT_RESPAWN | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    CALL_NATIVE(bhv_hidden_star_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_hidden_star_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvHiddenStarTrigger[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_HITBOX(/*Radius*/ 100, /*Height*/ 100),\n    SET_INT(oIntangibleTimer, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_hidden_star_trigger_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvTTMRollingLog[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_COLLISION_DATA(ttm_seg7_collision_pitoune_2),\n    SET_HOME(),\n    SET_FLOAT(oCollisionDistance, 2000),\n    CALL_NATIVE(bhv_ttm_rolling_log_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_rolling_log_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvLLLVolcanoFallingTrap[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_COLLISION_DATA(lll_seg7_collision_falling_wall),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_volcano_trap_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvLLLRollingLog[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_COLLISION_DATA(lll_seg7_collision_pitoune),\n    SET_HOME(),\n    SET_FLOAT(oCollisionDistance, 2000),\n    CALL_NATIVE(bhv_lll_rolling_log_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_rolling_log_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhv1UpWalking[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BILLBOARD(),\n    SET_HITBOX_WITH_OFFSET(/*Radius*/ 30, /*Height*/ 30, /*Downwards offset*/ 0),\n    SET_FLOAT(oGraphYOffset, 30),\n    CALL_NATIVE(bhv_1up_common_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_1up_walking_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhv1UpRunningAway[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BILLBOARD(),\n    SET_HITBOX_WITH_OFFSET(/*Radius*/ 30, /*Height*/ 30, /*Downwards offset*/ 0),\n    SET_FLOAT(oGraphYOffset, 30),\n    CALL_NATIVE(bhv_1up_common_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_1up_running_away_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhv1UpSliding[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BILLBOARD(),\n    SET_HITBOX_WITH_OFFSET(/*Radius*/ 30, /*Height*/ 30, /*Downwards offset*/ 0),\n    SET_FLOAT(oGraphYOffset, 30),\n    CALL_NATIVE(bhv_1up_common_init),\n    BEGIN_LOOP(),\n        SET_INT(oIntangibleTimer, 0),\n        CALL_NATIVE(bhv_1up_sliding_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhv1Up[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BILLBOARD(),\n    SET_HITBOX_WITH_OFFSET(/*Radius*/ 30, /*Height*/ 30, /*Downwards offset*/ 0),\n    SET_FLOAT(oGraphYOffset, 30),\n    CALL_NATIVE(bhv_1up_init),\n    BEGIN_LOOP(),\n        SET_INT(oIntangibleTimer, 0),\n        CALL_NATIVE(bhv_1up_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhv1UpJumpOnApproach[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BILLBOARD(),\n    SET_HITBOX_WITH_OFFSET(/*Radius*/ 30, /*Height*/ 30, /*Downwards offset*/ 0),\n    SET_FLOAT(oGraphYOffset, 30),\n    CALL_NATIVE(bhv_1up_common_init),\n    BEGIN_LOOP(),\n        SET_INT(oIntangibleTimer, 0),\n        CALL_NATIVE(bhv_1up_jump_on_approach_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvHidden1Up[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BILLBOARD(),\n    SET_HITBOX_WITH_OFFSET(/*Radius*/ 30, /*Height*/ 30, /*Downwards offset*/ 0),\n    SET_FLOAT(oGraphYOffset, 30),\n    CALL_NATIVE(bhv_1up_common_init),\n    BEGIN_LOOP(),\n        SET_INT(oIntangibleTimer, 0),\n        CALL_NATIVE(bhv_1up_hidden_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvHidden1UpTrigger[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_HITBOX(/*Radius*/ 100, /*Height*/ 100),\n    SET_INT(oIntangibleTimer, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_1up_hidden_trigger_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvHidden1UpInPole[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BILLBOARD(),\n    SET_HITBOX_WITH_OFFSET(/*Radius*/ 30, /*Height*/ 30, /*Downwards offset*/ 0),\n    SET_FLOAT(oGraphYOffset, 30),\n    CALL_NATIVE(bhv_1up_common_init),\n    BEGIN_LOOP(),\n        SET_INT(oIntangibleTimer, 0),\n        CALL_NATIVE(bhv_1up_hidden_in_pole_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvHidden1UpInPoleTrigger[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_HITBOX(/*Radius*/ 100, /*Height*/ 100),\n    SET_INT(oIntangibleTimer, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_1up_hidden_in_pole_trigger_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvHidden1UpInPoleSpawner[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_1up_hidden_in_pole_spawner_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvControllablePlatform[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_SET_THROW_MATRIX_FROM_TRANSFORM | OBJ_FLAG_0020 | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(hmc_seg7_collision_controllable_platform),\n    SET_HOME(),\n    CALL_NATIVE(bhv_controllable_platform_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_controllable_platform_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvControllablePlatformSub[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_COLLISION_DATA(hmc_seg7_collision_controllable_platform_sub),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_controllable_platform_sub_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBreakableBoxSmall[] = {\n    BEGIN(OBJ_LIST_DESTRUCTIVE),\n    OR_INT(oFlags, (OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    DROP_TO_FLOOR(),\n    SET_HOME(),\n    CALL_NATIVE(bhv_breakable_box_small_init),\n    BEGIN_LOOP(),\n        SET_INT(oIntangibleTimer, 0),\n        CALL_NATIVE(bhv_breakable_box_small_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvSlidingSnowMound[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_COLLISION_DATA(sl_seg7_collision_sliding_snow_mound),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_sliding_snow_mound_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvSnowMoundSpawn[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_snow_mound_spawn_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvWDWSquareFloatingPlatform[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(wdw_seg7_collision_square_floating_platform),\n    SET_FLOAT(oFloatingPlatformUnkFC, 64),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_floating_platform_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvWDWRectangularFloatingPlatform[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(wdw_seg7_collision_rect_floating_platform),\n    SET_FLOAT(oFloatingPlatformUnkFC, 64),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_floating_platform_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvJRBFloatingPlatform[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_COLLISION_DATA(jrb_seg7_collision_floating_platform),\n    SET_FLOAT(oFloatingPlatformUnkFC, 64),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_floating_platform_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvArrowLift[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_COLLISION_DATA(wdw_seg7_collision_arrow_lift),\n    SET_INT_RAND_RSHIFT(oArrowLiftUnk100, /*Minimum*/ 1, /*Right shift*/ 32),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_arrow_lift_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvOrangeNumber[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BILLBOARD(),\n    SET_HOME(),\n    CALL_NATIVE(bhv_orange_number_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_orange_number_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvMantaRay[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_ANGLE_TO_MOVE_ANGLE | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, manta_seg5_anims_05008EB4),\n    ANIMATE(0),\n    CALL_NATIVE(bhv_manta_ray_init),\n    BEGIN_LOOP(),\n        SET_INT(oIntangibleTimer, 0),\n        CALL_NATIVE(bhv_manta_ray_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvFallingPillar[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_HOME(),\n    CALL_NATIVE(bhv_falling_pillar_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_falling_pillar_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvFallingPillarHitbox[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_falling_pillar_hitbox_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvPillarBase[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_COLLISION_DATA(jrb_seg7_collision_pillar_base),\n    BEGIN_LOOP(),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvJRBFloatingBox[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_COLLISION_DATA(jrb_seg7_collision_floating_box),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_jrb_floating_box_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvDecorativePendulum[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    CALL_NATIVE(bhv_decorative_pendulum_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_decorative_pendulum_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvTreasureChestsShip[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    DROP_TO_FLOOR(),\n    CALL_NATIVE(bhv_treasure_chest_ship_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_treasure_chest_ship_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvTreasureChestsJRB[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    DROP_TO_FLOOR(),\n    CALL_NATIVE(bhv_treasure_chest_jrb_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_treasure_chest_jrb_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvTreasureChestsDDD[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    DROP_TO_FLOOR(),\n    CALL_NATIVE(bhv_treasure_chest_ddd_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_treasure_chest_ddd_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvTreasureChestBottom[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    DROP_TO_FLOOR(),\n    CALL_NATIVE(bhv_treasure_chest_bottom_init),\n    SET_INT(oIntangibleTimer, -1),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_treasure_chest_bottom_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvTreasureChestTop[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_treasure_chest_top_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvMips[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_HOLDABLE | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, mips_seg6_anims_06015634),\n    SET_INT(oInteractType, INTERACT_GRABBABLE),\n    DROP_TO_FLOOR(),\n    SET_HITBOX(/*Radius*/ 50, /*Height*/ 75),\n    SET_INT(oIntangibleTimer, 0),\n    CALL_NATIVE(bhv_mips_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_mips_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvYoshi[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, yoshi_seg5_anims_05024100),\n    SET_INTERACT_TYPE(INTERACT_TEXT),\n    DROP_TO_FLOOR(),\n    SET_HITBOX(/*Radius*/ 160, /*Height*/ 150),\n    ANIMATE(0),\n    SET_HOME(),\n    CALL_NATIVE(bhv_yoshi_init),\n    BEGIN_LOOP(),\n        SET_INT(oIntangibleTimer, 0),\n        CALL_NATIVE(bhv_yoshi_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvKoopa[] = {\n    BEGIN(OBJ_LIST_PUSHABLE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    DROP_TO_FLOOR(),\n    LOAD_ANIMATIONS(oAnimations, koopa_seg6_anims_06011364),\n    ANIMATE(9),\n    SET_HOME(),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 50, /*Gravity*/ -400, /*Bounciness*/ 0, /*Drag strength*/ 0, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    SCALE(/*Unused*/ 0, /*Field*/ 150),\n    SET_FLOAT(oKoopaAgility, 1),\n    CALL_NATIVE(bhv_koopa_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_koopa_update),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvKoopaRaceEndpoint[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    DROP_TO_FLOOR(),\n    SPAWN_CHILD_WITH_PARAM(/*Bhv param*/ 0, /*Model*/ MODEL_KOOPA_FLAG, /*Behavior*/ bhvKoopaFlag),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_koopa_race_endpoint_update),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvKoopaFlag[] = {\n    BEGIN(OBJ_LIST_POLELIKE),\n    SET_INTERACT_TYPE(INTERACT_POLE),\n    SET_HITBOX(/*Radius*/ 80, /*Height*/ 700),\n    SET_INT(oIntangibleTimer, 0),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    DROP_TO_FLOOR(),\n    LOAD_ANIMATIONS(oAnimations, koopa_flag_seg6_anims_06001028),\n    ANIMATE(0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_pole_base_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvPokey[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    DROP_TO_FLOOR(),\n    SET_HOME(),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 60, /*Gravity*/ -400, /*Bounciness*/ 0, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_pokey_update),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvPokeyBodyPart[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 60, /*Gravity*/ -400, /*Bounciness*/ 0, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    BILLBOARD(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_pokey_body_part_update),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvSwoop[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, swoop_seg6_anims_060070D0),\n    SET_HOME(),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 50, /*Gravity*/ 0, /*Bounciness*/ -50, /*Drag strength*/ 0, /*Friction*/ 0, /*Buoyancy*/ 0, /*Unused*/ 0, 0),\n    CALL_NATIVE(bhv_init_room),\n    SCALE(/*Unused*/ 0, /*Field*/ 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_swoop_update),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvFlyGuy[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, flyguy_seg8_anims_08011A64),\n    ANIMATE(0),\n    SET_HOME(),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 50, /*Gravity*/ 0, /*Bounciness*/ 0, /*Drag strength*/ 0, /*Friction*/ 1000, /*Buoyancy*/ 600, /*Unused*/ 0, 0),\n    CALL_NATIVE(bhv_init_room),\n    SET_INT(oInteractionSubtype, INT_SUBTYPE_TWIRL_BOUNCE),\n    SET_FLOAT(oGraphYOffset, 30),\n    SCALE(/*Unused*/ 0, /*Field*/ 150),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_fly_guy_update),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvGoomba[] = {\n    BEGIN(OBJ_LIST_PUSHABLE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    DROP_TO_FLOOR(),\n    LOAD_ANIMATIONS(oAnimations, goomba_seg8_anims_0801DA4C),\n    SET_HOME(),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 40, /*Gravity*/ -400, /*Bounciness*/ -50, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 0, /*Unused*/ 0, 0),\n    CALL_NATIVE(bhv_goomba_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_goomba_update),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvGoombaTripletSpawner[] = {\n    BEGIN(OBJ_LIST_PUSHABLE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    DROP_TO_FLOOR(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_goomba_triplet_spawner_update),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvChainChomp[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    DROP_TO_FLOOR(),\n    LOAD_ANIMATIONS(oAnimations, chain_chomp_seg6_anims_06025178),\n    ANIMATE(0),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 0, /*Gravity*/ -400, /*Bounciness*/ -50, /*Drag strength*/ 0, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    HIDE(),\n    SET_HOME(),\n    SET_FLOAT(oGraphYOffset, 240),\n    SCALE(/*Unused*/ 0, /*Field*/ 200),\n    SPAWN_CHILD_WITH_PARAM(/*Bhv param*/ 0, /*Model*/ MODEL_WOODEN_POST, /*Behavior*/ bhvWoodenPost),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_chain_chomp_update),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvChainChompChainPart[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BILLBOARD(),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 0, /*Gravity*/ -400, /*Bounciness*/ -50, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    SET_FLOAT(oGraphYOffset, 40),\n    SCALE(/*Unused*/ 0, /*Field*/ 200),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_chain_chomp_chain_part_update),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvWoodenPost[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    LOAD_COLLISION_DATA(poundable_pole_collision_06002490),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 0, /*Gravity*/ -400, /*Bounciness*/ -50, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    SET_INT(oNumLootCoins, 5),\n    DROP_TO_FLOOR(),\n    SET_HOME(),\n    SCALE(/*Unused*/ 0, /*Field*/ 50),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_wooden_post_update),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvChainChompGate[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    LOAD_COLLISION_DATA(bob_seg7_collision_chain_chomp_gate),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    CALL_NATIVE(bhv_chain_chomp_gate_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_chain_chomp_gate_update),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvWigglerHead[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    DROP_TO_FLOOR(),\n    LOAD_ANIMATIONS(oAnimations, wiggler_seg5_anims_0500EC8C),\n    SET_HOME(),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 60, /*Gravity*/ -400, /*Bounciness*/ 0, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    HIDE(),\n    SCALE(/*Unused*/ 0, /*Field*/ 400),\n    SET_FLOAT(oWigglerFallThroughFloorsHeight, 5000),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_wiggler_update),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvWigglerBody[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_ANIMATIONS(oAnimations, wiggler_seg5_anims_0500C874),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 0, /*Gravity*/ -400, /*Bounciness*/ 0, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    SCALE(/*Unused*/ 0, /*Field*/ 400),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_wiggler_body_part_update),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvEnemyLakitu[] = {\n    BEGIN(OBJ_LIST_PUSHABLE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, lakitu_enemy_seg5_anims_050144D4),\n    ANIMATE(0),\n    SET_HOME(),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 40, /*Gravity*/ 0, /*Bounciness*/ -50, /*Drag strength*/ 0, /*Friction*/ 0, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_enemy_lakitu_update),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvCameraLakitu[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, lakitu_seg6_anims_060058F8),\n    ANIMATE(0),\n    CALL_NATIVE(bhv_init_room),\n    CALL_NATIVE(bhv_camera_lakitu_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_camera_lakitu_update),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvCloud[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BILLBOARD(),\n    SET_HOME(),\n    SET_INT(oOpacity, 240),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_cloud_update),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvCloudPart[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_INT(oOpacity, 240),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_cloud_part_update),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvSpiny[] = {\n    BEGIN(OBJ_LIST_PUSHABLE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, spiny_seg5_anims_05016EAC),\n    ANIMATE(0),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 40, /*Gravity*/ -400, /*Bounciness*/ -50, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_spiny_update),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvMontyMole[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    DROP_TO_FLOOR(),\n    LOAD_ANIMATIONS(oAnimations, monty_mole_seg5_anims_05007248),\n    ANIMATE(3),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ 0, /*Bounciness*/ -50, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    HIDE(),\n    SET_INT(oIntangibleTimer, -1),\n    SET_FLOAT(oGraphYOffset, -60),\n    SCALE(/*Unused*/ 0, /*Field*/ 150),\n    DELAY(1),\n    CALL_NATIVE(bhv_monty_mole_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_monty_mole_update),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvMontyMoleHole[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    DROP_TO_FLOOR(),\n    SCALE(/*Unused*/ 0, /*Field*/ 150),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_monty_mole_hole_update),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvMontyMoleRock[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BILLBOARD(),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ -400, /*Bounciness*/ -50, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    SET_FLOAT(oGraphYOffset, 10),\n    SCALE(/*Unused*/ 0, /*Field*/ 200),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_monty_mole_rock_update),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvPlatformOnTrack[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 50, /*Gravity*/ -100, /*Bounciness*/ -50, /*Drag strength*/ 100, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    CALL_NATIVE(bhv_init_room),\n    CALL_NATIVE(bhv_platform_on_track_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_platform_on_track_update),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvTrackBall[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BILLBOARD(),\n    CALL_NATIVE(bhv_init_room),\n    SCALE(/*Unused*/ 0, /*Field*/ 15),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_track_ball_update),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvSeesawPlatform[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    CALL_NATIVE(bhv_seesaw_platform_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_seesaw_platform_update),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvFerrisWheelAxle[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    ADD_INT(oMoveAngleYaw, 0x4000),\n    CALL_NATIVE(bhv_ferris_wheel_axle_init),\n    BEGIN_LOOP(),\n        ADD_INT(oFaceAngleRoll, 400),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvFerrisWheelPlatform[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_ferris_wheel_platform_update),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvWaterBombSpawner[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    DROP_TO_FLOOR(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_water_bomb_spawner_update),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvWaterBomb[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 120, /*Gravity*/ -400, /*Bounciness*/ 0, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_water_bomb_update),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvWaterBombShadow[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SCALE(/*Unused*/ 0, /*Field*/ 150),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_water_bomb_shadow_update),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvTTCRotatingSolid[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_HOME(),\n    SET_FLOAT(oCollisionDistance, 450),\n    CALL_NATIVE(bhv_ttc_rotating_solid_init),\n    SET_INT(oTTCRotatingSolidNumTurns, 1),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_ttc_rotating_solid_update),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvTTCPendulum[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    LOAD_COLLISION_DATA(ttc_seg7_collision_clock_pendulum),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_FLOAT(oCollisionDistance, 1500),\n    CALL_NATIVE(bhv_ttc_pendulum_init),\n    SET_FLOAT(oTTCPendulumAccelDir, 1),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_ttc_pendulum_update),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvTTCTreadmill[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_FLOAT(oCollisionDistance, 750),\n    CALL_NATIVE(bhv_ttc_treadmill_init),\n    DELAY(1),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_ttc_treadmill_update),\n        CALL_NATIVE(cur_obj_compute_vel_xz),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvTTCMovingBar[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    LOAD_COLLISION_DATA(ttc_seg7_collision_sliding_surface),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_HOME(),\n    SET_FLOAT(oCollisionDistance, 550),\n    CALL_NATIVE(bhv_ttc_moving_bar_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_ttc_moving_bar_update),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvTTCCog[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_FLOAT(oCollisionDistance, 400),\n    CALL_NATIVE(bhv_ttc_cog_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_ttc_cog_update),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvTTCPitBlock[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_HOME(),\n    SET_FLOAT(oCollisionDistance, 350),\n    CALL_NATIVE(bhv_ttc_pit_block_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_ttc_pit_block_update),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvTTCElevator[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    LOAD_COLLISION_DATA(ttc_seg7_collision_clock_platform),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_HOME(),\n    SET_FLOAT(oCollisionDistance, 400),\n    CALL_NATIVE(bhv_ttc_elevator_init),\n    SET_FLOAT(oTTCElevatorDir, 1),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_ttc_elevator_update),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvTTC2DRotator[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    LOAD_COLLISION_DATA(ttc_seg7_collision_clock_main_rotation),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_FLOAT(oCollisionDistance, 1800),\n    CALL_NATIVE(bhv_ttc_2d_rotator_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_ttc_2d_rotator_update),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvTTCSpinner[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    LOAD_COLLISION_DATA(ttc_seg7_collision_rotating_clock_platform2),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_FLOAT(oCollisionDistance, 450),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_ttc_spinner_update),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvMrBlizzard[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    DROP_TO_FLOOR(),\n    LOAD_ANIMATIONS(oAnimations, snowman_seg5_anims_0500D118),\n    ANIMATE(0),\n    SET_HOME(),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ -400, /*Bounciness*/ 0, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    CALL_NATIVE(bhv_mr_blizzard_init),\n    SET_FLOAT(oMrBlizzardScale, 1),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_mr_blizzard_update),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvMrBlizzardSnowball[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BILLBOARD(),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ -300, /*Bounciness*/ -50, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    SCALE(/*Unused*/ 0, /*Field*/ 200),\n    ADD_INT(oMoveAngleYaw, -0x5B58),\n    SET_FLOAT(oForwardVel, 5),\n    SET_FLOAT(oVelY, -1),\n    SET_FLOAT(oGraphYOffset, 10),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_mr_blizzard_snowball),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvSlidingPlatform2[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_HOME(),\n    CALL_NATIVE(bhv_sliding_plat_2_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_sliding_plat_2_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvOctagonalPlatformRotating[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    CALL_NATIVE(bhv_rotating_octagonal_plat_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_rotating_octagonal_plat_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvAnimatesOnFloorSwitchPress[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_FLOAT(oCollisionDistance, 8000),\n    CALL_NATIVE(bhv_animates_on_floor_switch_press_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_animates_on_floor_switch_press_loop),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvActivatedBackAndForthPlatform[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_HOME(),\n    CALL_NATIVE(bhv_activated_back_and_forth_platform_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_activated_back_and_forth_platform_update),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvRecoveryHeart[] = {\n    BEGIN(OBJ_LIST_LEVEL),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_recovery_heart_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvWaterBombCannon[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_water_bomb_cannon_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvCannonBarrelBubbles[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_bubble_cannon_barrel_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvUnagi[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, unagi_seg5_anims_05012824),\n    ANIMATE(6),\n    SET_HOME(),\n    SCALE(/*Unused*/ 0, /*Field*/ 300),\n    SET_FLOAT(oDrawingDistance, 6000),\n    CALL_NATIVE(bhv_unagi_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_unagi_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvUnagiSubobject[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_unagi_subobject_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvDorrie[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    LOAD_COLLISION_DATA(dorrie_seg6_collision_0600F644),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, dorrie_seg6_anims_0600F638),\n    SET_HOME(),\n    SET_FLOAT(oCollisionDistance, 30000),\n    ADD_FLOAT(oPosX, 2000),\n    CALL_NATIVE(bhv_init_room),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_dorrie_update),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvHauntedChair[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    DROP_TO_FLOOR(),\n    LOAD_ANIMATIONS(oAnimations, chair_seg5_anims_05005784),\n    ANIMATE(0),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 40, /*Gravity*/ 0, /*Bounciness*/ -50, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    SET_HOME(),\n    CALL_NATIVE(bhv_init_room),\n    CALL_NATIVE(bhv_haunted_chair_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_haunted_chair_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvMadPiano[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    DROP_TO_FLOOR(),\n    LOAD_ANIMATIONS(oAnimations, mad_piano_seg5_anims_05009B14),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 40, /*Gravity*/ 0, /*Bounciness*/ -50, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    SET_HOME(),\n    ADD_INT(oMoveAngleYaw, 0x4000),\n    CALL_NATIVE(bhv_init_room),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_mad_piano_update),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvFlyingBookend[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, bookend_seg5_anims_05002540),\n    ANIMATE(0),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 60, /*Gravity*/ 0, /*Bounciness*/ -50, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    SET_INT(oMoveFlags, 0),\n    SCALE(/*Unused*/ 0, /*Field*/ 70),\n    CALL_NATIVE(bhv_init_room),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_flying_bookend_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBookendSpawn[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    CALL_NATIVE(bhv_init_room),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_bookend_spawn_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvHauntedBookshelfManager[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    CALL_NATIVE(bhv_init_room),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_haunted_bookshelf_manager_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBookSwitch[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_HOME(),\n    SET_FLOAT(oGraphYOffset, 30),\n    ADD_INT(oMoveAngleYaw, 0x4000),\n    CALL_NATIVE(bhv_init_room),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_book_switch_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvFirePiranhaPlant[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    DROP_TO_FLOOR(),\n    LOAD_ANIMATIONS(oAnimations, piranha_plant_seg6_anims_0601C31C),\n    ANIMATE(0),\n    SET_HOME(),\n    HIDE(),\n    CALL_NATIVE(bhv_fire_piranha_plant_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_fire_piranha_plant_update),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvSmallPiranhaFlame[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BILLBOARD(),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ 0, /*Bounciness*/ -50, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_small_piranha_flame_loop),\n        ADD_INT(oAnimState, 1),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvFireSpitter[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BILLBOARD(),\n    SCALE(/*Unused*/ 0, /*Field*/ 40),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_fire_spitter_update),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvFlyguyFlame[] = {\n    BEGIN(OBJ_LIST_UNIMPORTANT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BILLBOARD(),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 0, /*Gravity*/ 200, /*Bounciness*/ 0, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_fly_guy_flame_loop),\n        ADD_INT(oAnimState, 1),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvSnufit[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_HOME(),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 30, /*Gravity*/ 0, /*Bounciness*/ -50, /*Drag strength*/ 0, /*Friction*/ 0, /*Buoyancy*/ 0, /*Unused*/ 0, 0),\n    CALL_NATIVE(bhv_init_room),\n    BEGIN_LOOP(),\n        SET_INT(oSnufitRecoil, 0),\n        CALL_NATIVE(bhv_snufit_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvSnufitBalls[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BILLBOARD(),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 10, /*Gravity*/ 0, /*Bounciness*/ -50, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    CALL_NATIVE(bhv_init_room),\n    SET_FLOAT(oGraphYOffset, 10),\n    SCALE(/*Unused*/ 0, /*Field*/ 10),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_snufit_balls_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvHorizontalGrindel[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    LOAD_COLLISION_DATA(ssl_seg7_collision_grindel),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    DROP_TO_FLOOR(),\n    SET_HOME(),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 40, /*Gravity*/ -400, /*Bounciness*/ 0, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    SCALE(/*Unused*/ 0, /*Field*/ 90),\n    CALL_NATIVE(bhv_horizontal_grindel_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(cur_obj_update_floor_and_walls),\n        CALL_NATIVE(bhv_horizontal_grindel_update),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvEyerokBoss[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_eyerok_boss_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvEyerokHand[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, eyerok_seg5_anims_050116E4),\n    ANIMATE(6),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 150, /*Gravity*/ 0, /*Bounciness*/ 0, /*Drag strength*/ 0, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    SET_HOME(),\n    SET_INT(oAnimState, 3),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_eyerok_hand_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvKlepto[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, klepto_seg5_anims_05008CFC),\n    ANIMATE(0),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 100, /*Gravity*/ 0, /*Bounciness*/ -20, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    SET_HOME(),\n    CALL_NATIVE(bhv_klepto_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_klepto_update),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBird[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, birds_seg5_anims_050009E8),\n    ANIMATE(0),\n    HIDE(),\n    SCALE(/*Unused*/ 0, /*Field*/ 70),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_bird_update),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvRacingPenguin[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, penguin_seg5_anims_05008B74),\n    ANIMATE(3),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 300, /*Gravity*/ -800, /*Bounciness*/ -5, /*Drag strength*/ 0, /*Friction*/ 0, /*Buoyancy*/ 0, /*Unused*/ 0, 0),\n    SCALE(/*Unused*/ 0, /*Field*/ 400),\n    CALL_NATIVE(bhv_racing_penguin_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_racing_penguin_update),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvPenguinRaceFinishLine[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_penguin_race_finish_line_update),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvPenguinRaceShortcutCheck[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_penguin_race_shortcut_check_update),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvCoffinSpawner[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    CALL_NATIVE(bhv_init_room),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_coffin_spawner_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvCoffin[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    LOAD_COLLISION_DATA(bbh_seg7_collision_coffin),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_HOME(),\n    CALL_NATIVE(bhv_init_room),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_coffin_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvClamShell[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    DROP_TO_FLOOR(),\n    LOAD_ANIMATIONS(oAnimations, clam_shell_seg5_anims_05001744),\n    SET_FLOAT(oGraphYOffset, 10),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_clam_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvSkeeter[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, skeeter_seg6_anims_06007DE0),\n    SET_HOME(),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 180, /*Gravity*/ -400, /*Bounciness*/ -50, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 1200, /*Unused*/ 0, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_skeeter_update),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvSkeeterWave[] = {\n    BEGIN(OBJ_LIST_UNIMPORTANT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_skeeter_wave_update),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvSwingPlatform[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    LOAD_COLLISION_DATA(rr_seg7_collision_pendulum),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_FLOAT(oCollisionDistance, 2000),\n    CALL_NATIVE(bhv_swing_platform_init),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_swing_platform_update),\n        CALL_NATIVE(load_object_collision_model),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvDonutPlatformSpawner[] = {\n    BEGIN(OBJ_LIST_SPAWNER),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_donut_platform_spawner_update),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvDonutPlatform[] = {\n    BEGIN(OBJ_LIST_SURFACE),\n    LOAD_COLLISION_DATA(rr_seg7_collision_donut_platform),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_HOME(),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_donut_platform_update),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvDDDPole[] = {\n    BEGIN(OBJ_LIST_POLELIKE),\n    SET_INTERACT_TYPE(INTERACT_POLE),\n    SET_HITBOX(/*Radius*/ 80, /*Height*/ 800),\n    SET_INT(oIntangibleTimer, 0),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    SET_HOME(),\n    CALL_NATIVE(bhv_ddd_pole_init),\n    SET_FLOAT(oDDDPoleVel, 10),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_ddd_pole_update),\n        CALL_NATIVE(bhv_pole_base_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvRedCoinStarMarker[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    DROP_TO_FLOOR(),\n    SCALE(/*Unused*/ 0, /*Field*/ 150),\n    SET_INT(oFaceAnglePitch, 0x4000),\n    ADD_FLOAT(oPosY, 60),\n    CALL_NATIVE(bhv_red_coin_star_marker_init),\n    BEGIN_LOOP(),\n        ADD_INT(oFaceAngleYaw, 0x100),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvTripletButterfly[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, butterfly_seg3_anims_030056B0),\n    ANIMATE(0),\n    HIDE(),\n    SET_HOME(),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 0, /*Gravity*/ 0, /*Bounciness*/ 0, /*Drag strength*/ 0, /*Friction*/ 1000, /*Buoyancy*/ 200, /*Unused*/ 0, 0),\n    SET_FLOAT(oTripletButterflyScale, 1),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_triplet_butterfly_update),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBubba[] = {\n    BEGIN(OBJ_LIST_GENACTOR),\n    OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    SET_HOME(),\n    SET_OBJ_PHYSICS(/*Wall hitbox radius*/ 200, /*Gravity*/ -400, /*Bounciness*/ -50, /*Drag strength*/ 1000, /*Friction*/ 1000, /*Buoyancy*/ 0, /*Unused*/ 0, 0),\n    SCALE(/*Unused*/ 0, /*Field*/ 50),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_bubba_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBeginningLakitu[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_ANIMATIONS(oAnimations, lakitu_seg6_anims_060058F8),\n    ANIMATE(0),\n    SET_FLOAT(oOpacity, 0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_intro_lakitu_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvBeginningPeach[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    LOAD_ANIMATIONS(oAnimations, peach_seg5_anims_0501C41C),\n    ANIMATE(0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_intro_peach_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvEndBirds1[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_ANGLE_TO_MOVE_ANGLE | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, birds_seg5_anims_050009E8),\n    ANIMATE(0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_end_birds_1_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvEndBirds2[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, (OBJ_FLAG_SET_FACE_ANGLE_TO_MOVE_ANGLE | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),\n    LOAD_ANIMATIONS(oAnimations, birds_seg5_anims_050009E8),\n    ANIMATE(0),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_end_birds_2_loop),\n    END_LOOP(),\n};\n\nconst BehaviorScript bhvIntroScene[] = {\n    BEGIN(OBJ_LIST_DEFAULT),\n    OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),\n    BEGIN_LOOP(),\n        CALL_NATIVE(bhv_intro_scene_loop),\n    END_LOOP(),\n};\n\n\n"
  },
  {
    "path": "diff.py",
    "content": "#!/usr/bin/env python3\n# PYTHON_ARGCOMPLETE_OK\nimport argparse\nimport sys\nfrom typing import (\n    Any,\n    Dict,\n    List,\n    Match,\n    NamedTuple,\n    NoReturn,\n    Optional,\n    Set,\n    Tuple,\n    Union,\n    Callable,\n    Pattern,\n)\n\n\ndef fail(msg: str) -> NoReturn:\n    print(msg, file=sys.stderr)\n    sys.exit(1)\n\n\n# Prefer to use diff_settings.py from the current working directory\nsys.path.insert(0, \".\")\ntry:\n    import diff_settings\nexcept ModuleNotFoundError:\n    fail(\"Unable to find diff_settings.py in the same directory.\")\nsys.path.pop(0)\n\n# ==== COMMAND-LINE ====\n\ntry:\n    import argcomplete  # type: ignore\nexcept ModuleNotFoundError:\n    argcomplete = None\n\nparser = argparse.ArgumentParser(description=\"Diff MIPS or AArch64 assembly.\")\n\nstart_argument = parser.add_argument(\n    \"start\",\n    help=\"Function name or address to start diffing from.\",\n)\n\nif argcomplete:\n\n    def complete_symbol(\n        prefix: str, parsed_args: argparse.Namespace, **kwargs: object\n    ) -> List[str]:\n        if not prefix or prefix.startswith(\"-\"):\n            # skip reading the map file, which would\n            # result in a lot of useless completions\n            return []\n        config: Dict[str, Any] = {}\n        diff_settings.apply(config, parsed_args)  # type: ignore\n        mapfile = config.get(\"mapfile\")\n        if not mapfile:\n            return []\n        completes = []\n        with open(mapfile) as f:\n            data = f.read()\n            # assume symbols are prefixed by a space character\n            search = f\" {prefix}\"\n            pos = data.find(search)\n            while pos != -1:\n                # skip the space character in the search string\n                pos += 1\n                # assume symbols are suffixed by either a space\n                # character or a (unix-style) line return\n                spacePos = data.find(\" \", pos)\n                lineReturnPos = data.find(\"\\n\", pos)\n                if lineReturnPos == -1:\n                    endPos = spacePos\n                elif spacePos == -1:\n                    endPos = lineReturnPos\n                else:\n                    endPos = min(spacePos, lineReturnPos)\n                if endPos == -1:\n                    match = data[pos:]\n                    pos = -1\n                else:\n                    match = data[pos:endPos]\n                    pos = data.find(search, endPos)\n                completes.append(match)\n        return completes\n\n    setattr(start_argument, \"completer\", complete_symbol)\n\nparser.add_argument(\n    \"end\",\n    nargs=\"?\",\n    help=\"Address to end diff at.\",\n)\nparser.add_argument(\n    \"-o\",\n    dest=\"diff_obj\",\n    action=\"store_true\",\n    help=\"Diff .o files rather than a whole binary. This makes it possible to \"\n    \"see symbol names. (Recommended)\",\n)\nparser.add_argument(\n    \"--elf\",\n    dest=\"diff_elf_symbol\",\n    metavar=\"SYMBOL\",\n    help=\"Diff a given function in two ELFs, one being stripped and the other \"\n    \"one non-stripped. Requires objdump from binutils 2.33+.\",\n)\nparser.add_argument(\n    \"--source\",\n    action=\"store_true\",\n    help=\"Show source code (if possible). Only works with -o and -e.\",\n)\nparser.add_argument(\n    \"--inlines\",\n    action=\"store_true\",\n    help=\"Show inline function calls (if possible). Only works with -o and -e.\",\n)\nparser.add_argument(\n    \"--base-asm\",\n    dest=\"base_asm\",\n    metavar=\"FILE\",\n    help=\"Read assembly from given file instead of configured base img.\",\n)\nparser.add_argument(\n    \"--write-asm\",\n    dest=\"write_asm\",\n    metavar=\"FILE\",\n    help=\"Write the current assembly output to file, e.g. for use with --base-asm.\",\n)\nparser.add_argument(\n    \"-m\",\n    \"--make\",\n    dest=\"make\",\n    action=\"store_true\",\n    help=\"Automatically run 'make' on the .o file or binary before diffing.\",\n)\nparser.add_argument(\n    \"-l\",\n    \"--skip-lines\",\n    dest=\"skip_lines\",\n    type=int,\n    default=0,\n    metavar=\"LINES\",\n    help=\"Skip the first N lines of output.\",\n)\nparser.add_argument(\n    \"-f\",\n    \"--stop-jr-ra\",\n    dest=\"stop_jrra\",\n    action=\"store_true\",\n    help=\"Stop disassembling at the first 'jr ra'. Some functions have multiple return points, so use with care!\",\n)\nparser.add_argument(\n    \"-i\",\n    \"--ignore-large-imms\",\n    dest=\"ignore_large_imms\",\n    action=\"store_true\",\n    help=\"Pretend all large enough immediates are the same.\",\n)\nparser.add_argument(\n    \"-I\",\n    \"--ignore-addr-diffs\",\n    action=\"store_true\",\n    help=\"Ignore address differences. Currently only affects AArch64.\",\n)\nparser.add_argument(\n    \"-B\",\n    \"--no-show-branches\",\n    dest=\"show_branches\",\n    action=\"store_false\",\n    help=\"Don't visualize branches/branch targets.\",\n)\nparser.add_argument(\n    \"-S\",\n    \"--base-shift\",\n    dest=\"base_shift\",\n    type=str,\n    default=\"0\",\n    help=\"Diff position X in our img against position X + shift in the base img. \"\n    'Arithmetic is allowed, so e.g. |-S \"0x1234 - 0x4321\"| is a reasonable '\n    \"flag to pass if it is known that position 0x1234 in the base img syncs \"\n    \"up with position 0x4321 in our img. Not supported together with -o.\",\n)\nparser.add_argument(\n    \"-w\",\n    \"--watch\",\n    dest=\"watch\",\n    action=\"store_true\",\n    help=\"Automatically update when source/object files change. \"\n    \"Recommended in combination with -m.\",\n)\nparser.add_argument(\n    \"-3\",\n    \"--threeway=prev\",\n    dest=\"threeway\",\n    action=\"store_const\",\n    const=\"prev\",\n    help=\"Show a three-way diff between target asm, current asm, and asm \"\n    \"prior to -w rebuild. Requires -w.\",\n)\nparser.add_argument(\n    \"-b\",\n    \"--threeway=base\",\n    dest=\"threeway\",\n    action=\"store_const\",\n    const=\"base\",\n    help=\"Show a three-way diff between target asm, current asm, and asm \"\n    \"when diff.py was started. Requires -w.\",\n)\nparser.add_argument(\n    \"--width\",\n    dest=\"column_width\",\n    type=int,\n    default=50,\n    help=\"Sets the width of the left and right view column.\",\n)\nparser.add_argument(\n    \"--algorithm\",\n    dest=\"algorithm\",\n    default=\"levenshtein\",\n    choices=[\"levenshtein\", \"difflib\"],\n    help=\"Diff algorithm to use. Levenshtein gives the minimum diff, while difflib \"\n    \"aims for long sections of equal opcodes. Defaults to %(default)s.\",\n)\nparser.add_argument(\n    \"--max-size\",\n    \"--max-lines\",\n    dest=\"max_lines\",\n    type=int,\n    default=1024,\n    help=\"The maximum length of the diff, in lines.\",\n)\n\n# Project-specific flags, e.g. different versions/make arguments.\nadd_custom_arguments_fn = getattr(diff_settings, \"add_custom_arguments\", None)\nif add_custom_arguments_fn:\n    add_custom_arguments_fn(parser)\n\nif argcomplete:\n    argcomplete.autocomplete(parser)\n\n# ==== IMPORTS ====\n\n# (We do imports late to optimize auto-complete performance.)\n\nimport re\nimport os\nimport ast\nimport subprocess\nimport difflib\nimport string\nimport itertools\nimport threading\nimport queue\nimport time\n\n\nMISSING_PREREQUISITES = (\n    \"Missing prerequisite python module {}. \"\n    \"Run `python3 -m pip install --user colorama ansiwrap watchdog python-Levenshtein cxxfilt` to install prerequisites (cxxfilt only needed with --source).\"\n)\n\ntry:\n    from colorama import Fore, Style, Back  # type: ignore\n    import ansiwrap  # type: ignore\n    import watchdog  # type: ignore\nexcept ModuleNotFoundError as e:\n    fail(MISSING_PREREQUISITES.format(e.name))\n\n# ==== CONFIG ====\n\nargs = parser.parse_args()\n\n# Set imgs, map file and make flags in a project-specific manner.\nconfig: Dict[str, Any] = {}\ndiff_settings.apply(config, args)  # type: ignore\n\narch: str = config.get(\"arch\", \"mips\")\nbaseimg: Optional[str] = config.get(\"baseimg\")\nmyimg: Optional[str] = config.get(\"myimg\")\nmapfile: Optional[str] = config.get(\"mapfile\")\nmakeflags: List[str] = config.get(\"makeflags\", [])\nsource_directories: Optional[List[str]] = config.get(\"source_directories\")\nobjdump_executable: Optional[str] = config.get(\"objdump_executable\")\n\nMAX_FUNCTION_SIZE_LINES: int = args.max_lines\nMAX_FUNCTION_SIZE_BYTES: int = MAX_FUNCTION_SIZE_LINES * 4\n\nCOLOR_ROTATION: List[str] = [\n    Fore.MAGENTA,\n    Fore.CYAN,\n    Fore.GREEN,\n    Fore.RED,\n    Fore.LIGHTYELLOW_EX,\n    Fore.LIGHTMAGENTA_EX,\n    Fore.LIGHTCYAN_EX,\n    Fore.LIGHTGREEN_EX,\n    Fore.LIGHTBLACK_EX,\n]\n\nBUFFER_CMD: List[str] = [\"tail\", \"-c\", str(10 ** 9)]\nLESS_CMD: List[str] = [\"less\", \"-SRic\", \"-#6\"]\n\nDEBOUNCE_DELAY: float = 0.1\nFS_WATCH_EXTENSIONS: List[str] = [\".c\", \".h\", \".s\"]\n\n# ==== LOGIC ====\n\nObjdumpCommand = Tuple[List[str], str, Optional[str]]\n\nif args.algorithm == \"levenshtein\":\n    try:\n        import Levenshtein  # type: ignore\n    except ModuleNotFoundError as e:\n        fail(MISSING_PREREQUISITES.format(e.name))\n\nif args.source:\n    try:\n        import cxxfilt  # type: ignore\n    except ModuleNotFoundError as e:\n        fail(MISSING_PREREQUISITES.format(e.name))\n\nif args.threeway and not args.watch:\n    fail(\"Threeway diffing requires -w.\")\n\nif objdump_executable is None:\n    for objdump_cand in [\"mips-linux-gnu-objdump\", \"mips64-elf-objdump\"]:\n        try:\n            subprocess.check_call(\n                [objdump_cand, \"--version\"],\n                stdout=subprocess.DEVNULL,\n                stderr=subprocess.DEVNULL,\n            )\n            objdump_executable = objdump_cand\n            break\n        except subprocess.CalledProcessError:\n            pass\n        except FileNotFoundError:\n            pass\n\nif not objdump_executable:\n    fail(\n        \"Missing binutils; please ensure mips-linux-gnu-objdump or mips64-elf-objdump exist, or configure objdump_executable.\"\n    )\n\n\ndef maybe_eval_int(expr: str) -> Optional[int]:\n    try:\n        ret = ast.literal_eval(expr)\n        if not isinstance(ret, int):\n            raise Exception(\"not an integer\")\n        return ret\n    except Exception:\n        return None\n\n\ndef eval_int(expr: str, emsg: str) -> int:\n    ret = maybe_eval_int(expr)\n    if ret is None:\n        fail(emsg)\n    return ret\n\n\ndef eval_line_num(expr: str) -> int:\n    return int(expr.strip().replace(\":\", \"\"), 16)\n\n\ndef run_make(target: str) -> None:\n    subprocess.check_call([\"make\"] + makeflags + [target])\n\n\ndef run_make_capture_output(target: str) -> \"subprocess.CompletedProcess[bytes]\":\n    return subprocess.run(\n        [\"make\"] + makeflags + [target],\n        stderr=subprocess.PIPE,\n        stdout=subprocess.PIPE,\n    )\n\n\ndef restrict_to_function(dump: str, fn_name: str) -> str:\n    out: List[str] = []\n    search = f\"<{fn_name}>:\"\n    found = False\n    for line in dump.split(\"\\n\"):\n        if found:\n            if len(out) >= MAX_FUNCTION_SIZE_LINES:\n                break\n            out.append(line)\n        elif search in line:\n            found = True\n    return \"\\n\".join(out)\n\n\ndef maybe_get_objdump_source_flags() -> List[str]:\n    if not args.source:\n        return []\n\n    flags = [\n        \"--source\",\n        \"--source-comment=│ \",\n        \"-l\",\n    ]\n\n    if args.inlines:\n        flags.append(\"--inlines\")\n\n    return flags\n\n\ndef run_objdump(cmd: ObjdumpCommand) -> str:\n    flags, target, restrict = cmd\n    assert objdump_executable, \"checked previously\"\n    out = subprocess.check_output(\n        [objdump_executable] + arch_flags + flags + [target], universal_newlines=True\n    )\n    if restrict is not None:\n        return restrict_to_function(out, restrict)\n    return out\n\n\nbase_shift: int = eval_int(\n    args.base_shift, \"Failed to parse --base-shift (-S) argument as an integer.\"\n)\n\n\ndef search_map_file(fn_name: str) -> Tuple[Optional[str], Optional[int]]:\n    if not mapfile:\n        fail(f\"No map file configured; cannot find function {fn_name}.\")\n\n    try:\n        with open(mapfile) as f:\n            lines = f.read().split(\"\\n\")\n    except Exception:\n        fail(f\"Failed to open map file {mapfile} for reading.\")\n\n    try:\n        cur_objfile = None\n        ram_to_rom = None\n        cands = []\n        last_line = \"\"\n        for line in lines:\n            if line.startswith(\" .text\"):\n                cur_objfile = line.split()[3]\n            if \"load address\" in line:\n                tokens = last_line.split() + line.split()\n                ram = int(tokens[1], 0)\n                rom = int(tokens[5], 0)\n                ram_to_rom = rom - ram\n            if line.endswith(\" \" + fn_name):\n                ram = int(line.split()[0], 0)\n                if cur_objfile is not None and ram_to_rom is not None:\n                    cands.append((cur_objfile, ram + ram_to_rom))\n            last_line = line\n    except Exception as e:\n        import traceback\n\n        traceback.print_exc()\n        fail(f\"Internal error while parsing map file\")\n\n    if len(cands) > 1:\n        fail(f\"Found multiple occurrences of function {fn_name} in map file.\")\n    if len(cands) == 1:\n        return cands[0]\n    return None, None\n\n\ndef dump_elf() -> Tuple[str, ObjdumpCommand, ObjdumpCommand]:\n    if not baseimg or not myimg:\n        fail(\"Missing myimg/baseimg in config.\")\n    if base_shift:\n        fail(\"--base-shift not compatible with -e\")\n\n    start_addr = eval_int(args.start, \"Start address must be an integer expression.\")\n\n    if args.end is not None:\n        end_addr = eval_int(args.end, \"End address must be an integer expression.\")\n    else:\n        end_addr = start_addr + MAX_FUNCTION_SIZE_BYTES\n\n    flags1 = [\n        f\"--start-address={start_addr}\",\n        f\"--stop-address={end_addr}\",\n    ]\n\n    flags2 = [\n        f\"--disassemble={args.diff_elf_symbol}\",\n    ]\n\n    objdump_flags = [\"-drz\", \"-j\", \".text\"]\n    return (\n        myimg,\n        (objdump_flags + flags1, baseimg, None),\n        (objdump_flags + flags2 + maybe_get_objdump_source_flags(), myimg, None),\n    )\n\n\ndef dump_objfile() -> Tuple[str, ObjdumpCommand, ObjdumpCommand]:\n    if base_shift:\n        fail(\"--base-shift not compatible with -o\")\n    if args.end is not None:\n        fail(\"end address not supported together with -o\")\n    if args.start.startswith(\"0\"):\n        fail(\"numerical start address not supported with -o; pass a function name\")\n\n    objfile, _ = search_map_file(args.start)\n    if not objfile:\n        fail(\"Not able to find .o file for function.\")\n\n    if args.make:\n        run_make(objfile)\n\n    if not os.path.isfile(objfile):\n        fail(f\"Not able to find .o file for function: {objfile} is not a file.\")\n\n    refobjfile = \"expected/\" + objfile\n    if not os.path.isfile(refobjfile):\n        fail(f'Please ensure an OK .o file exists at \"{refobjfile}\".')\n\n    objdump_flags = [\"-drz\"]\n    return (\n        objfile,\n        (objdump_flags, refobjfile, args.start),\n        (objdump_flags + maybe_get_objdump_source_flags(), objfile, args.start),\n    )\n\n\ndef dump_binary() -> Tuple[str, ObjdumpCommand, ObjdumpCommand]:\n    if not baseimg or not myimg:\n        fail(\"Missing myimg/baseimg in config.\")\n    if args.make:\n        run_make(myimg)\n    start_addr = maybe_eval_int(args.start)\n    if start_addr is None:\n        _, start_addr = search_map_file(args.start)\n        if start_addr is None:\n            fail(\"Not able to find function in map file.\")\n    if args.end is not None:\n        end_addr = eval_int(args.end, \"End address must be an integer expression.\")\n    else:\n        end_addr = start_addr + MAX_FUNCTION_SIZE_BYTES\n    objdump_flags = [\"-Dz\", \"-bbinary\", \"-EB\"]\n    flags1 = [\n        f\"--start-address={start_addr + base_shift}\",\n        f\"--stop-address={end_addr + base_shift}\",\n    ]\n    flags2 = [f\"--start-address={start_addr}\", f\"--stop-address={end_addr}\"]\n    return (\n        myimg,\n        (objdump_flags + flags1, baseimg, None),\n        (objdump_flags + flags2, myimg, None),\n    )\n\n\ndef ansi_ljust(s: str, width: int) -> str:\n    \"\"\"Like s.ljust(width), but accounting for ANSI colors.\"\"\"\n    needed: int = width - ansiwrap.ansilen(s)\n    if needed > 0:\n        return s + \" \" * needed\n    else:\n        return s\n\n\nif arch == \"mips\":\n    re_int = re.compile(r\"[0-9]+\")\n    re_comment = re.compile(r\"<.*?>\")\n    re_reg = re.compile(\n        r\"\\$?\\b(a[0-3]|t[0-9]|s[0-8]|at|v[01]|f[12]?[0-9]|f3[01]|k[01]|fp|ra|zero)\\b\"\n    )\n    re_sprel = re.compile(r\"(?<=,)([0-9]+|0x[0-9a-f]+)\\(sp\\)\")\n    re_large_imm = re.compile(r\"-?[1-9][0-9]{2,}|-?0x[0-9a-f]{3,}\")\n    re_imm = re.compile(r\"(\\b|-)([0-9]+|0x[0-9a-fA-F]+)\\b(?!\\(sp)|%(lo|hi)\\([^)]*\\)\")\n    forbidden = set(string.ascii_letters + \"_\")\n    arch_flags = [\"-m\", \"mips:4300\"]\n    branch_likely_instructions = {\n        \"beql\",\n        \"bnel\",\n        \"beqzl\",\n        \"bnezl\",\n        \"bgezl\",\n        \"bgtzl\",\n        \"blezl\",\n        \"bltzl\",\n        \"bc1tl\",\n        \"bc1fl\",\n    }\n    branch_instructions = branch_likely_instructions.union(\n        {\n            \"b\",\n            \"beq\",\n            \"bne\",\n            \"beqz\",\n            \"bnez\",\n            \"bgez\",\n            \"bgtz\",\n            \"blez\",\n            \"bltz\",\n            \"bc1t\",\n            \"bc1f\",\n        }\n    )\n    instructions_with_address_immediates = branch_instructions.union({\"jal\", \"j\"})\nelif arch == \"aarch64\":\n    re_int = re.compile(r\"[0-9]+\")\n    re_comment = re.compile(r\"(<.*?>|//.*$)\")\n    # GPRs and FP registers: X0-X30, W0-W30, [DSHQ]0..31\n    # The zero registers and SP should not be in this list.\n    re_reg = re.compile(r\"\\$?\\b([dshq][12]?[0-9]|[dshq]3[01]|[xw][12]?[0-9]|[xw]30)\\b\")\n    re_sprel = re.compile(r\"sp, #-?(0x[0-9a-fA-F]+|[0-9]+)\\b\")\n    re_large_imm = re.compile(r\"-?[1-9][0-9]{2,}|-?0x[0-9a-f]{3,}\")\n    re_imm = re.compile(r\"(?<!sp, )#-?(0x[0-9a-fA-F]+|[0-9]+)\\b\")\n    arch_flags = []\n    forbidden = set(string.ascii_letters + \"_\")\n    branch_likely_instructions = set()\n    branch_instructions = {\n        \"bl\",\n        \"b\",\n        \"b.eq\",\n        \"b.ne\",\n        \"b.cs\",\n        \"b.hs\",\n        \"b.cc\",\n        \"b.lo\",\n        \"b.mi\",\n        \"b.pl\",\n        \"b.vs\",\n        \"b.vc\",\n        \"b.hi\",\n        \"b.ls\",\n        \"b.ge\",\n        \"b.lt\",\n        \"b.gt\",\n        \"b.le\",\n        \"cbz\",\n        \"cbnz\",\n        \"tbz\",\n        \"tbnz\",\n    }\n    instructions_with_address_immediates = branch_instructions.union({\"adrp\"})\nelse:\n    fail(\"Unknown architecture.\")\n\n\ndef hexify_int(row: str, pat: Match[str]) -> str:\n    full = pat.group(0)\n    if len(full) <= 1:\n        # leave one-digit ints alone\n        return full\n    start, end = pat.span()\n    if start and row[start - 1] in forbidden:\n        return full\n    if end < len(row) and row[end] in forbidden:\n        return full\n    return hex(int(full))\n\n\ndef parse_relocated_line(line: str) -> Tuple[str, str, str]:\n    try:\n        ind2 = line.rindex(\",\")\n    except ValueError:\n        ind2 = line.rindex(\"\\t\")\n    before = line[: ind2 + 1]\n    after = line[ind2 + 1 :]\n    ind2 = after.find(\"(\")\n    if ind2 == -1:\n        imm, after = after, \"\"\n    else:\n        imm, after = after[:ind2], after[ind2:]\n    if imm == \"0x0\":\n        imm = \"0\"\n    return before, imm, after\n\n\ndef process_mips_reloc(row: str, prev: str) -> str:\n    before, imm, after = parse_relocated_line(prev)\n    repl = row.split()[-1]\n    if imm != \"0\":\n        # MIPS uses relocations with addends embedded in the code as immediates.\n        # If there is an immediate, show it as part of the relocation. Ideally\n        # we'd show this addend in both %lo/%hi, but annoyingly objdump's output\n        # doesn't include enough information to pair up %lo's and %hi's...\n        # TODO: handle unambiguous cases where all addends for a symbol are the\n        # same, or show \"+???\".\n        mnemonic = prev.split()[0]\n        if mnemonic in instructions_with_address_immediates and not imm.startswith(\n            \"0x\"\n        ):\n            imm = \"0x\" + imm\n        repl += \"+\" + imm if int(imm, 0) > 0 else imm\n    if \"R_MIPS_LO16\" in row:\n        repl = f\"%lo({repl})\"\n    elif \"R_MIPS_HI16\" in row:\n        # Ideally we'd pair up R_MIPS_LO16 and R_MIPS_HI16 to generate a\n        # correct addend for each, but objdump doesn't give us the order of\n        # the relocations, so we can't find the right LO16. :(\n        repl = f\"%hi({repl})\"\n    elif \"R_MIPS_26\" in row:\n        # Function calls\n        pass\n    elif \"R_MIPS_PC16\" in row:\n        # Branch to glabel. This gives confusing output, but there's not much\n        # we can do here.\n        pass\n    else:\n        assert False, f\"unknown relocation type '{row}' for line '{prev}'\"\n    return before + repl + after\n\n\ndef pad_mnemonic(line: str) -> str:\n    if \"\\t\" not in line:\n        return line\n    mn, args = line.split(\"\\t\", 1)\n    return f\"{mn:<7s} {args}\"\n\n\nclass Line(NamedTuple):\n    mnemonic: str\n    diff_row: str\n    original: str\n    normalized_original: str\n    line_num: str\n    branch_target: Optional[str]\n    source_lines: List[str]\n    comment: Optional[str]\n\n\nclass DifferenceNormalizer:\n    def normalize(self, mnemonic: str, row: str) -> str:\n        \"\"\"This should be called exactly once for each line.\"\"\"\n        row = self._normalize_arch_specific(mnemonic, row)\n        if args.ignore_large_imms:\n            row = re.sub(re_large_imm, \"<imm>\", row)\n        return row\n\n    def _normalize_arch_specific(self, mnemonic: str, row: str) -> str:\n        return row\n\n\nclass DifferenceNormalizerAArch64(DifferenceNormalizer):\n    def __init__(self) -> None:\n        super().__init__()\n        self._adrp_pair_registers: Set[str] = set()\n\n    def _normalize_arch_specific(self, mnemonic: str, row: str) -> str:\n        if args.ignore_addr_diffs:\n            row = self._normalize_adrp_differences(mnemonic, row)\n            row = self._normalize_bl(mnemonic, row)\n        return row\n\n    def _normalize_bl(self, mnemonic: str, row: str) -> str:\n        if mnemonic != \"bl\":\n            return row\n\n        row, _ = split_off_branch(row)\n        return row\n\n    def _normalize_adrp_differences(self, mnemonic: str, row: str) -> str:\n        \"\"\"Identifies ADRP + LDR/ADD pairs that are used to access the GOT and\n        suppresses any immediate differences.\n\n        Whenever an ADRP is seen, the destination register is added to the set of registers\n        that are part of an ADRP + LDR/ADD pair. Registers are removed from the set as soon\n        as they are used for an LDR or ADD instruction which completes the pair.\n\n        This method is somewhat crude but should manage to detect most such pairs.\n        \"\"\"\n        row_parts = row.split(\"\\t\", 1)\n        if mnemonic == \"adrp\":\n            self._adrp_pair_registers.add(row_parts[1].strip().split(\",\")[0])\n            row, _ = split_off_branch(row)\n        elif mnemonic == \"ldr\":\n            for reg in self._adrp_pair_registers:\n                # ldr xxx, [reg]\n                # ldr xxx, [reg, <imm>]\n                if f\", [{reg}\" in row_parts[1]:\n                    self._adrp_pair_registers.remove(reg)\n                    return normalize_imms(row)\n        elif mnemonic == \"add\":\n            for reg in self._adrp_pair_registers:\n                # add reg, reg, <imm>\n                if row_parts[1].startswith(f\"{reg}, {reg}, \"):\n                    self._adrp_pair_registers.remove(reg)\n                    return normalize_imms(row)\n\n        return row\n\n\ndef make_difference_normalizer() -> DifferenceNormalizer:\n    if arch == \"aarch64\":\n        return DifferenceNormalizerAArch64()\n    return DifferenceNormalizer()\n\n\ndef process(lines: List[str]) -> List[Line]:\n    normalizer = make_difference_normalizer()\n    skip_next = False\n    source_lines = []\n    if not args.diff_obj:\n        lines = lines[7:]\n        if lines and not lines[-1]:\n            lines.pop()\n\n    output: List[Line] = []\n    stop_after_delay_slot = False\n    for row in lines:\n        if args.diff_obj and (\">:\" in row or not row):\n            continue\n\n        if args.source and (row and row[0] != \" \"):\n            source_lines.append(row)\n            continue\n\n        if \"R_AARCH64_\" in row:\n            # TODO: handle relocation\n            continue\n\n        if \"R_MIPS_\" in row:\n            # N.B. Don't transform the diff rows, they already ignore immediates\n            # if output[-1].diff_row != \"<delay-slot>\":\n            # output[-1] = output[-1].replace(diff_row=process_mips_reloc(row, output[-1].row_with_imm))\n            new_original = process_mips_reloc(row, output[-1].original)\n            output[-1] = output[-1]._replace(original=new_original)\n            continue\n\n        m_comment = re.search(re_comment, row)\n        comment = m_comment[0] if m_comment else None\n        row = re.sub(re_comment, \"\", row)\n        row = row.rstrip()\n        tabs = row.split(\"\\t\")\n        row = \"\\t\".join(tabs[2:])\n        line_num = tabs[0].strip()\n        row_parts = row.split(\"\\t\", 1)\n        mnemonic = row_parts[0].strip()\n        if mnemonic not in instructions_with_address_immediates:\n            row = re.sub(re_int, lambda m: hexify_int(row, m), row)\n        original = row\n        normalized_original = normalizer.normalize(mnemonic, original)\n        if skip_next:\n            skip_next = False\n            row = \"<delay-slot>\"\n            mnemonic = \"<delay-slot>\"\n        if mnemonic in branch_likely_instructions:\n            skip_next = True\n        row = re.sub(re_reg, \"<reg>\", row)\n        row = re.sub(re_sprel, \"addr(sp)\", row)\n        row_with_imm = row\n        if mnemonic in instructions_with_address_immediates:\n            row = row.strip()\n            row, _ = split_off_branch(row)\n            row += \"<imm>\"\n        else:\n            row = normalize_imms(row)\n\n        branch_target = None\n        if mnemonic in branch_instructions:\n            target = row_parts[1].strip().split(\",\")[-1]\n            if mnemonic in branch_likely_instructions:\n                target = hex(int(target, 16) - 4)[2:]\n            branch_target = target.strip()\n\n        output.append(\n            Line(\n                mnemonic=mnemonic,\n                diff_row=row,\n                original=original,\n                normalized_original=normalized_original,\n                line_num=line_num,\n                branch_target=branch_target,\n                source_lines=source_lines,\n                comment=comment,\n            )\n        )\n        source_lines = []\n\n        if args.stop_jrra and mnemonic == \"jr\" and row_parts[1].strip() == \"ra\":\n            stop_after_delay_slot = True\n        elif stop_after_delay_slot:\n            break\n\n    return output\n\n\ndef format_single_line_diff(line1: str, line2: str, column_width: int) -> str:\n    return ansi_ljust(line1, column_width) + line2\n\n\nclass SymbolColorer:\n    symbol_colors: Dict[str, str]\n\n    def __init__(self, base_index: int) -> None:\n        self.color_index = base_index\n        self.symbol_colors = {}\n\n    def color_symbol(self, s: str, t: Optional[str] = None) -> str:\n        try:\n            color = self.symbol_colors[s]\n        except:\n            color = COLOR_ROTATION[self.color_index % len(COLOR_ROTATION)]\n            self.color_index += 1\n            self.symbol_colors[s] = color\n        t = t or s\n        return f\"{color}{t}{Fore.RESET}\"\n\n\ndef normalize_imms(row: str) -> str:\n    return re.sub(re_imm, \"<imm>\", row)\n\n\ndef normalize_stack(row: str) -> str:\n    return re.sub(re_sprel, \"addr(sp)\", row)\n\n\ndef split_off_branch(line: str) -> Tuple[str, str]:\n    parts = line.split(\",\")\n    if len(parts) < 2:\n        parts = line.split(None, 1)\n    off = len(line) - len(parts[-1])\n    return line[:off], line[off:]\n\n\nColorFunction = Callable[[str], str]\n\n\ndef color_fields(\n    pat: Pattern[str],\n    out1: str,\n    out2: str,\n    color1: ColorFunction,\n    color2: Optional[ColorFunction] = None,\n) -> Tuple[str, str]:\n    diffs = [\n        of.group() != nf.group()\n        for (of, nf) in zip(pat.finditer(out1), pat.finditer(out2))\n    ]\n\n    it = iter(diffs)\n\n    def maybe_color(color: ColorFunction, s: str) -> str:\n        return color(s) if next(it, False) else f\"{Style.RESET_ALL}{s}\"\n\n    out1 = pat.sub(lambda m: maybe_color(color1, m.group()), out1)\n    it = iter(diffs)\n    out2 = pat.sub(lambda m: maybe_color(color2 or color1, m.group()), out2)\n\n    return out1, out2\n\n\ndef color_branch_imms(br1: str, br2: str) -> Tuple[str, str]:\n    if br1 != br2:\n        br1 = f\"{Fore.LIGHTBLUE_EX}{br1}{Style.RESET_ALL}\"\n        br2 = f\"{Fore.LIGHTBLUE_EX}{br2}{Style.RESET_ALL}\"\n    return br1, br2\n\n\ndef diff_sequences_difflib(\n    seq1: List[str], seq2: List[str]\n) -> List[Tuple[str, int, int, int, int]]:\n    differ = difflib.SequenceMatcher(a=seq1, b=seq2, autojunk=False)\n    return differ.get_opcodes()\n\n\ndef diff_sequences(\n    seq1: List[str], seq2: List[str]\n) -> List[Tuple[str, int, int, int, int]]:\n    if (\n        args.algorithm != \"levenshtein\"\n        or len(seq1) * len(seq2) > 4 * 10 ** 8\n        or len(seq1) + len(seq2) >= 0x110000\n    ):\n        return diff_sequences_difflib(seq1, seq2)\n\n    # The Levenshtein library assumes that we compare strings, not lists. Convert.\n    # (Per the check above we know we have fewer than 0x110000 unique elements, so chr() works.)\n    remapping: Dict[str, str] = {}\n\n    def remap(seq: List[str]) -> str:\n        seq = seq[:]\n        for i in range(len(seq)):\n            val = remapping.get(seq[i])\n            if val is None:\n                val = chr(len(remapping))\n                remapping[seq[i]] = val\n            seq[i] = val\n        return \"\".join(seq)\n\n    rem1 = remap(seq1)\n    rem2 = remap(seq2)\n    return Levenshtein.opcodes(rem1, rem2)  # type: ignore\n\n\ndef diff_lines(\n    lines1: List[Line],\n    lines2: List[Line],\n) -> List[Tuple[Optional[Line], Optional[Line]]]:\n    ret = []\n    for (tag, i1, i2, j1, j2) in diff_sequences(\n        [line.mnemonic for line in lines1],\n        [line.mnemonic for line in lines2],\n    ):\n        for line1, line2 in itertools.zip_longest(lines1[i1:i2], lines2[j1:j2]):\n            if tag == \"replace\":\n                if line1 is None:\n                    tag = \"insert\"\n                elif line2 is None:\n                    tag = \"delete\"\n            elif tag == \"insert\":\n                assert line1 is None\n            elif tag == \"delete\":\n                assert line2 is None\n            ret.append((line1, line2))\n\n    return ret\n\n\nclass OutputLine:\n    base: Optional[str]\n    fmt2: str\n    key2: Optional[str]\n\n    def __init__(self, base: Optional[str], fmt2: str, key2: Optional[str]) -> None:\n        self.base = base\n        self.fmt2 = fmt2\n        self.key2 = key2\n\n    def __eq__(self, other: object) -> bool:\n        if not isinstance(other, OutputLine):\n            return NotImplemented\n        return self.key2 == other.key2\n\n    def __hash__(self) -> int:\n        return hash(self.key2)\n\n\ndef do_diff(basedump: str, mydump: str) -> List[OutputLine]:\n    output: List[OutputLine] = []\n\n    lines1 = process(basedump.split(\"\\n\"))\n    lines2 = process(mydump.split(\"\\n\"))\n\n    sc1 = SymbolColorer(0)\n    sc2 = SymbolColorer(0)\n    sc3 = SymbolColorer(4)\n    sc4 = SymbolColorer(4)\n    sc5 = SymbolColorer(0)\n    sc6 = SymbolColorer(0)\n    bts1: Set[str] = set()\n    bts2: Set[str] = set()\n\n    if args.show_branches:\n        for (lines, btset, sc) in [\n            (lines1, bts1, sc5),\n            (lines2, bts2, sc6),\n        ]:\n            for line in lines:\n                bt = line.branch_target\n                if bt is not None:\n                    btset.add(bt + \":\")\n                    sc.color_symbol(bt + \":\")\n\n    for (line1, line2) in diff_lines(lines1, lines2):\n        line_color1 = line_color2 = sym_color = Fore.RESET\n        line_prefix = \" \"\n        if line1 and line2 and line1.diff_row == line2.diff_row:\n            if line1.normalized_original == line2.normalized_original:\n                out1 = line1.original\n                out2 = line2.original\n            elif line1.diff_row == \"<delay-slot>\":\n                out1 = f\"{Style.BRIGHT}{Fore.LIGHTBLACK_EX}{line1.original}\"\n                out2 = f\"{Style.BRIGHT}{Fore.LIGHTBLACK_EX}{line2.original}\"\n            else:\n                mnemonic = line1.original.split()[0]\n                out1, out2 = line1.original, line2.original\n                branch1 = branch2 = \"\"\n                if mnemonic in instructions_with_address_immediates:\n                    out1, branch1 = split_off_branch(line1.original)\n                    out2, branch2 = split_off_branch(line2.original)\n                branchless1 = out1\n                branchless2 = out2\n                out1, out2 = color_fields(\n                    re_imm,\n                    out1,\n                    out2,\n                    lambda s: f\"{Fore.LIGHTBLUE_EX}{s}{Style.RESET_ALL}\",\n                )\n\n                same_relative_target = False\n                if line1.branch_target is not None and line2.branch_target is not None:\n                    relative_target1 = eval_line_num(\n                        line1.branch_target\n                    ) - eval_line_num(line1.line_num)\n                    relative_target2 = eval_line_num(\n                        line2.branch_target\n                    ) - eval_line_num(line2.line_num)\n                    same_relative_target = relative_target1 == relative_target2\n\n                if not same_relative_target:\n                    branch1, branch2 = color_branch_imms(branch1, branch2)\n\n                out1 += branch1\n                out2 += branch2\n                if normalize_imms(branchless1) == normalize_imms(branchless2):\n                    if not same_relative_target:\n                        # only imms differences\n                        sym_color = Fore.LIGHTBLUE_EX\n                        line_prefix = \"i\"\n                else:\n                    out1, out2 = color_fields(\n                        re_sprel, out1, out2, sc3.color_symbol, sc4.color_symbol\n                    )\n                    if normalize_stack(branchless1) == normalize_stack(branchless2):\n                        # only stack differences (luckily stack and imm\n                        # differences can't be combined in MIPS, so we\n                        # don't have to think about that case)\n                        sym_color = Fore.YELLOW\n                        line_prefix = \"s\"\n                    else:\n                        # regs differences and maybe imms as well\n                        out1, out2 = color_fields(\n                            re_reg, out1, out2, sc1.color_symbol, sc2.color_symbol\n                        )\n                        line_color1 = line_color2 = sym_color = Fore.YELLOW\n                        line_prefix = \"r\"\n        elif line1 and line2:\n            line_prefix = \"|\"\n            line_color1 = Fore.LIGHTBLUE_EX\n            line_color2 = Fore.LIGHTBLUE_EX\n            sym_color = Fore.LIGHTBLUE_EX\n            out1 = line1.original\n            out2 = line2.original\n        elif line1:\n            line_prefix = \"<\"\n            line_color1 = sym_color = Fore.RED\n            out1 = line1.original\n            out2 = \"\"\n        elif line2:\n            line_prefix = \">\"\n            line_color2 = sym_color = Fore.GREEN\n            out1 = \"\"\n            out2 = line2.original\n\n        if args.source and line2 and line2.comment:\n            out2 += f\" {line2.comment}\"\n\n        def format_part(\n            out: str,\n            line: Optional[Line],\n            line_color: str,\n            btset: Set[str],\n            sc: SymbolColorer,\n        ) -> Optional[str]:\n            if line is None:\n                return None\n            in_arrow = \"  \"\n            out_arrow = \"\"\n            if args.show_branches:\n                if line.line_num in btset:\n                    in_arrow = sc.color_symbol(line.line_num, \"~>\") + line_color\n                if line.branch_target is not None:\n                    out_arrow = \" \" + sc.color_symbol(line.branch_target + \":\", \"~>\")\n            out = pad_mnemonic(out)\n            return f\"{line_color}{line.line_num} {in_arrow} {out}{Style.RESET_ALL}{out_arrow}\"\n\n        part1 = format_part(out1, line1, line_color1, bts1, sc5)\n        part2 = format_part(out2, line2, line_color2, bts2, sc6)\n        key2 = line2.original if line2 else None\n\n        mid = f\"{sym_color}{line_prefix}\"\n\n        if line2:\n            for source_line in line2.source_lines:\n                color = Style.DIM\n                # File names and function names\n                if source_line and source_line[0] != \"│\":\n                    color += Style.BRIGHT\n                    # Function names\n                    if source_line.endswith(\"():\"):\n                        # Underline. Colorama does not provide this feature, unfortunately.\n                        color += \"\\u001b[4m\"\n                        try:\n                            source_line = cxxfilt.demangle(\n                                source_line[:-3], external_only=False\n                            )\n                        except:\n                            pass\n                output.append(\n                    OutputLine(\n                        None,\n                        f\"  {color}{source_line}{Style.RESET_ALL}\",\n                        source_line,\n                    )\n                )\n\n        fmt2 = mid + \" \" + (part2 or \"\")\n        output.append(OutputLine(part1, fmt2, key2))\n\n    return output\n\n\ndef chunk_diff(diff: List[OutputLine]) -> List[Union[List[OutputLine], OutputLine]]:\n    cur_right: List[OutputLine] = []\n    chunks: List[Union[List[OutputLine], OutputLine]] = []\n    for output_line in diff:\n        if output_line.base is not None:\n            chunks.append(cur_right)\n            chunks.append(output_line)\n            cur_right = []\n        else:\n            cur_right.append(output_line)\n    chunks.append(cur_right)\n    return chunks\n\n\ndef format_diff(\n    old_diff: List[OutputLine], new_diff: List[OutputLine]\n) -> Tuple[str, List[str]]:\n    old_chunks = chunk_diff(old_diff)\n    new_chunks = chunk_diff(new_diff)\n    output: List[Tuple[str, OutputLine, OutputLine]] = []\n    assert len(old_chunks) == len(new_chunks), \"same target\"\n    empty = OutputLine(\"\", \"\", None)\n    for old_chunk, new_chunk in zip(old_chunks, new_chunks):\n        if isinstance(old_chunk, list):\n            assert isinstance(new_chunk, list)\n            if not old_chunk and not new_chunk:\n                # Most of the time lines sync up without insertions/deletions,\n                # and there's no interdiffing to be done.\n                continue\n            differ = difflib.SequenceMatcher(a=old_chunk, b=new_chunk, autojunk=False)\n            for (tag, i1, i2, j1, j2) in differ.get_opcodes():\n                if tag in [\"equal\", \"replace\"]:\n                    for i, j in zip(range(i1, i2), range(j1, j2)):\n                        output.append((\"\", old_chunk[i], new_chunk[j]))\n                if tag in [\"insert\", \"replace\"]:\n                    for j in range(j1 + i2 - i1, j2):\n                        output.append((\"\", empty, new_chunk[j]))\n                if tag in [\"delete\", \"replace\"]:\n                    for i in range(i1 + j2 - j1, i2):\n                        output.append((\"\", old_chunk[i], empty))\n        else:\n            assert isinstance(new_chunk, OutputLine)\n            assert new_chunk.base\n            # old_chunk.base and new_chunk.base have the same text since\n            # both diffs are based on the same target, but they might\n            # differ in color. Use the new version.\n            output.append((new_chunk.base, old_chunk, new_chunk))\n\n    # TODO: status line, with e.g. approximate permuter score?\n    width = args.column_width\n    if args.threeway:\n        header_line = \"TARGET\".ljust(width) + \"  CURRENT\".ljust(width) + \"  PREVIOUS\"\n        diff_lines = [\n            ansi_ljust(base, width)\n            + ansi_ljust(new.fmt2, width)\n            + (old.fmt2 or \"-\" if old != new else \"\")\n            for (base, old, new) in output\n        ]\n    else:\n        header_line = \"\"\n        diff_lines = [\n            ansi_ljust(base, width) + new.fmt2\n            for (base, old, new) in output\n            if base or new.key2 is not None\n        ]\n    return header_line, diff_lines\n\n\ndef debounced_fs_watch(\n    targets: List[str],\n    outq: \"queue.Queue[Optional[float]]\",\n    debounce_delay: float,\n) -> None:\n    import watchdog.events  # type: ignore\n    import watchdog.observers  # type: ignore\n\n    class WatchEventHandler(watchdog.events.FileSystemEventHandler):  # type: ignore\n        def __init__(\n            self, queue: \"queue.Queue[float]\", file_targets: List[str]\n        ) -> None:\n            self.queue = queue\n            self.file_targets = file_targets\n\n        def on_modified(self, ev: object) -> None:\n            if isinstance(ev, watchdog.events.FileModifiedEvent):\n                self.changed(ev.src_path)\n\n        def on_moved(self, ev: object) -> None:\n            if isinstance(ev, watchdog.events.FileMovedEvent):\n                self.changed(ev.dest_path)\n\n        def should_notify(self, path: str) -> bool:\n            for target in self.file_targets:\n                if path == target:\n                    return True\n            if args.make and any(\n                path.endswith(suffix) for suffix in FS_WATCH_EXTENSIONS\n            ):\n                return True\n            return False\n\n        def changed(self, path: str) -> None:\n            if self.should_notify(path):\n                self.queue.put(time.time())\n\n    def debounce_thread() -> NoReturn:\n        listenq: \"queue.Queue[float]\" = queue.Queue()\n        file_targets: List[str] = []\n        event_handler = WatchEventHandler(listenq, file_targets)\n        observer = watchdog.observers.Observer()\n        observed = set()\n        for target in targets:\n            if os.path.isdir(target):\n                observer.schedule(event_handler, target, recursive=True)\n            else:\n                file_targets.append(target)\n                target = os.path.dirname(target) or \".\"\n                if target not in observed:\n                    observed.add(target)\n                    observer.schedule(event_handler, target)\n        observer.start()\n        while True:\n            t = listenq.get()\n            more = True\n            while more:\n                delay = t + debounce_delay - time.time()\n                if delay > 0:\n                    time.sleep(delay)\n                # consume entire queue\n                more = False\n                try:\n                    while True:\n                        t = listenq.get(block=False)\n                        more = True\n                except queue.Empty:\n                    pass\n            outq.put(t)\n\n    th = threading.Thread(target=debounce_thread, daemon=True)\n    th.start()\n\n\nclass Display:\n    basedump: str\n    mydump: str\n    emsg: Optional[str]\n    last_diff_output: Optional[List[OutputLine]]\n    pending_update: Optional[Tuple[str, bool]]\n    ready_queue: \"queue.Queue[None]\"\n    watch_queue: \"queue.Queue[Optional[float]]\"\n    less_proc: \"Optional[subprocess.Popen[bytes]]\"\n\n    def __init__(self, basedump: str, mydump: str) -> None:\n        self.basedump = basedump\n        self.mydump = mydump\n        self.emsg = None\n        self.last_diff_output = None\n\n    def run_less(self) -> \"Tuple[subprocess.Popen[bytes], subprocess.Popen[bytes]]\":\n        if self.emsg is not None:\n            output = self.emsg\n        else:\n            diff_output = do_diff(self.basedump, self.mydump)\n            last_diff_output = self.last_diff_output or diff_output\n            if args.threeway != \"base\" or not self.last_diff_output:\n                self.last_diff_output = diff_output\n            header, diff_lines = format_diff(last_diff_output, diff_output)\n            header_lines = [header] if header else []\n            output = \"\\n\".join(header_lines + diff_lines[args.skip_lines :])\n\n        # Pipe the output through 'tail' and only then to less, to ensure the\n        # write call doesn't block. ('tail' has to buffer all its input before\n        # it starts writing.) This also means we don't have to deal with pipe\n        # closure errors.\n        buffer_proc = subprocess.Popen(\n            BUFFER_CMD, stdin=subprocess.PIPE, stdout=subprocess.PIPE\n        )\n        less_proc = subprocess.Popen(LESS_CMD, stdin=buffer_proc.stdout)\n        assert buffer_proc.stdin\n        assert buffer_proc.stdout\n        buffer_proc.stdin.write(output.encode())\n        buffer_proc.stdin.close()\n        buffer_proc.stdout.close()\n        return (buffer_proc, less_proc)\n\n    def run_sync(self) -> None:\n        proca, procb = self.run_less()\n        procb.wait()\n        proca.wait()\n\n    def run_async(self, watch_queue: \"queue.Queue[Optional[float]]\") -> None:\n        self.watch_queue = watch_queue\n        self.ready_queue = queue.Queue()\n        self.pending_update = None\n        dthread = threading.Thread(target=self.display_thread)\n        dthread.start()\n        self.ready_queue.get()\n\n    def display_thread(self) -> None:\n        proca, procb = self.run_less()\n        self.less_proc = procb\n        self.ready_queue.put(None)\n        while True:\n            ret = procb.wait()\n            proca.wait()\n            self.less_proc = None\n            if ret != 0:\n                # fix the terminal\n                os.system(\"tput reset\")\n            if ret != 0 and self.pending_update is not None:\n                # killed by program with the intent to refresh\n                msg, error = self.pending_update\n                self.pending_update = None\n                if not error:\n                    self.mydump = msg\n                    self.emsg = None\n                else:\n                    self.emsg = msg\n                proca, procb = self.run_less()\n                self.less_proc = procb\n                self.ready_queue.put(None)\n            else:\n                # terminated by user, or killed\n                self.watch_queue.put(None)\n                self.ready_queue.put(None)\n                break\n\n    def progress(self, msg: str) -> None:\n        # Write message to top-left corner\n        sys.stdout.write(\"\\x1b7\\x1b[1;1f{}\\x1b8\".format(msg + \" \"))\n        sys.stdout.flush()\n\n    def update(self, text: str, error: bool) -> None:\n        if not error and not self.emsg and text == self.mydump:\n            self.progress(\"Unchanged. \")\n            return\n        self.pending_update = (text, error)\n        if not self.less_proc:\n            return\n        self.less_proc.kill()\n        self.ready_queue.get()\n\n    def terminate(self) -> None:\n        if not self.less_proc:\n            return\n        self.less_proc.kill()\n        self.ready_queue.get()\n\n\ndef main() -> None:\n    if args.diff_elf_symbol:\n        make_target, basecmd, mycmd = dump_elf()\n    elif args.diff_obj:\n        make_target, basecmd, mycmd = dump_objfile()\n    else:\n        make_target, basecmd, mycmd = dump_binary()\n\n    if args.write_asm is not None:\n        mydump = run_objdump(mycmd)\n        with open(args.write_asm, \"w\") as f:\n            f.write(mydump)\n        print(f\"Wrote assembly to {args.write_asm}.\")\n        sys.exit(0)\n\n    if args.base_asm is not None:\n        with open(args.base_asm) as f:\n            basedump = f.read()\n    else:\n        basedump = run_objdump(basecmd)\n\n    mydump = run_objdump(mycmd)\n\n    display = Display(basedump, mydump)\n\n    if not args.watch:\n        display.run_sync()\n    else:\n        if not args.make:\n            yn = input(\n                \"Warning: watch-mode (-w) enabled without auto-make (-m). \"\n                \"You will have to run make manually. Ok? (Y/n) \"\n            )\n            if yn.lower() == \"n\":\n                return\n        if args.make:\n            watch_sources = None\n            watch_sources_for_target_fn = getattr(\n                diff_settings, \"watch_sources_for_target\", None\n            )\n            if watch_sources_for_target_fn:\n                watch_sources = watch_sources_for_target_fn(make_target)\n            watch_sources = watch_sources or source_directories\n            if not watch_sources:\n                fail(\"Missing source_directories config, don't know what to watch.\")\n        else:\n            watch_sources = [make_target]\n        q: \"queue.Queue[Optional[float]]\" = queue.Queue()\n        debounced_fs_watch(watch_sources, q, DEBOUNCE_DELAY)\n        display.run_async(q)\n        last_build = 0.0\n        try:\n            while True:\n                t = q.get()\n                if t is None:\n                    break\n                if t < last_build:\n                    continue\n                last_build = time.time()\n                if args.make:\n                    display.progress(\"Building...\")\n                    ret = run_make_capture_output(make_target)\n                    if ret.returncode != 0:\n                        display.update(\n                            ret.stderr.decode(\"utf-8-sig\", \"replace\")\n                            or ret.stdout.decode(\"utf-8-sig\", \"replace\"),\n                            error=True,\n                        )\n                        continue\n                mydump = run_objdump(mycmd)\n                display.update(mydump, error=False)\n        except KeyboardInterrupt:\n            display.terminate()\n\n\nmain()\n"
  },
  {
    "path": "diff_settings.py",
    "content": "#!/usr/bin/env python3\n\ndef add_custom_arguments(parser):\n    group = parser.add_mutually_exclusive_group(required=False)\n    group.add_argument('-j', dest='lang', action='store_const', const='jp',\n            help=\"Set version to JP.\")\n    group.add_argument('-u', dest='lang', action='store_const', const='us',\n            help=\"Set version to US.\")\n    group.add_argument('-e', dest='lang', action='store_const', const='eu',\n            help=\"Set version to EU.\")\n    group.add_argument('-s', dest='lang', action='store_const', const='sh',\n            help=\"Set version to SH.\")\n    group.add_argument('-c', dest='lang', action='store_const', const='cn',\n            help=\"Set version to CN.\")\n\ndef apply(config, args):\n    lang = args.lang or 'us'\n    config['mapfile'] = f'build/{lang}/sm64.{lang}.map'\n    config['myimg'] = f'build/{lang}/sm64.{lang}.z64'\n    config['baseimg'] = f'baserom.{lang}.z64'\n    config['makeflags'] = [f'VERSION={lang}']\n    config['source_directories'] = ['src', 'include', 'lib', 'lib/src', 'asm', 'rsp']\n"
  },
  {
    "path": "enhancements/README.md",
    "content": "# Super Mario 64 Enhancements\n\nThis directory contains unofficial patches to the source code that provide various features\nand enhancements.\n\nTo apply a patch, run `tools/apply_patch.sh [patch]` where `[patch]` is the name of the\n.patch file you wish to apply. This will perform all of the patch's changes\nto the source code.\n\nLikewise, to undo the changes from a patch you applied, run\n`tools/revert_patch.sh` with the name of the .patch file you wish to undo.\n\nTo create your own enhancement patch, switch to the `master` Git\nbranch, make your changes to the code (but do not commit), then run `tools/create_patch.sh`. Your changes will be stored in the .patch file you specify.\n\nThe following enhancements are included in this directory:\n\n## Crash Screen - `crash.patch`\n\nThis enhancement provides a crash screen that is displayed when the code throws a hardware exception. This may be useful for diagnosing crashes in game code.\n\n## Debug Box - `debug_box.patch`\n\nThis allows you to draw 3D boxes for debugging purposes.\n\nCall the `debug_box` function whenever you want to draw one. `debug_box` by default takes two arguments: a center and bounds vec3f. This will draw a box starting from the point (center - bounds) to (center + bounds).\nUse `debug_box_rot` to draw a box rotated in the xz-plane. If you want to draw a box by specifying min and max points, use `debug_box_pos` instead.\n\n## FPS Counter - `fps.patch`\n\nThis patch provides an in-game FPS counter to measure the frame rate.\n\n## iQue Player Support - `ique_support.patch`\n\nThis enhancement allows the same ROM to work on both the Nintendo 64 and the iQue Player.\n\n## Memory Expansion Pak Error Screen - `mem_error_screen.patch`\n\nUse this patch if your game requires over 4 MB of memory and requires the\nExpansion Pak. If the Expansion Pak is not present, an error message will be\nshown on startup.\n\n## Demo Input Recorder - `record_demo.patch`\n\nThis patch allows you to record gameplay demos for the attract screen. It requires the latest nightly versions of Project64, and uses the Project64 JavaScript API to dump the demo input data from RAM and write it to a file.\n\nPlace the `enhancements/RecordDemo.js` file in the `/Scripts/` folder in the Project64 directory.\n\nIn the Scripts window, double click on \"RecordDemo\" on the list on the left side.\n\nWhen this is done, it should turn green which lets you know that it has started.\n\nWhen your demo has been recorded, it will be dumped to the newly created `/SM64_DEMOS/` folder within the Project64 directory.\n"
  },
  {
    "path": "enhancements/RecordDemo.js",
    "content": "/*\n * This is a companion file for the record_demo.inc.c enhancement.\n *\n * You will need the PJ64 javascript API to get this to work, so\n * you should download a nightly build from here (Windows only atm):\n * https://www.pj64-emu.com/nightly-builds\n *\n * Place this .js file into the /Scripts/ folder in the PJ64 directory.\n *\n * In the Scripts window, double click on \"RecordDemo\" on the list on the left side.\n * When this is done, it should turn green which lets you know that it has started.\n *\n * When your demo has been recorded, it will be dumped to the newly created\n * /SM64_DEMOS/ folder within the PJ64 directory.\n */\n\nvar RAM_SIZE = 4 * 1048576 // 4 MB\n\n// Get a copy of the first 4MB of memory.\nvar RAM = mem.getblock(0x80000000, RAM_SIZE)\n\n// Create SM64_DEMOS Directory if it already doesn't exist.\nfs.mkdir(\"SM64_DEMOS/\");\n\n// string \"DEMORECVARS\"\nvar pattern = [0x44, 0x45, 0x4D, 0x4F, 0x52, 0x45, 0x43, 0x56, 0x41, 0x52, 0x53, 0x00]\n\nvar matches = find_matches_fast(pattern)\n\nif(matches.length > 1) {\n    console.log('Error: More than 1 instance of \"DEMORECVARS\" was found. Abort!')\n} else if(matches.length < 1) {\n    console.log('Error: No instance of \"DEMORECVARS\" was found. Abort!')\n} else {\n    console.clear()\n    var demoRecVarsLocation = 0x80000000 + matches[0] + 12\n\n    // Control variables addresses\n    var gRecordingStatus_vaddr = demoRecVarsLocation + 0\n    var gDoneDelay_vaddr = demoRecVarsLocation + 4\n    var gNumOfRecordedInputs_vaddr = demoRecVarsLocation + 8\n    var gRecordedInputsPtr_vaddr = demoRecVarsLocation + 12\n\n    console.log('Recording variables were found at address 0x' + demoRecVarsLocation.toString(16))\n    console.log('Initialization successful! Press L in-game to ready the demo recording before entering in a level.')\n\n    // This runs every frame that is drawn.\n    events.ondraw(function() {\n        var gRecordingStatus = mem.u32[gRecordingStatus_vaddr]\n\n        if(gRecordingStatus == 3) { // gRecordingStatus == DEMOREC_STATUS_STOPPING\n            var gNumOfRecordedInputs = mem.u32[gNumOfRecordedInputs_vaddr]\n\n            if(gNumOfRecordedInputs < 1) {\n                console.log('Error: No inputs could be recorded!')\n            } else {\n                var gRecordedInputsPtr = mem.u32[gRecordedInputsPtr_vaddr]\n\n                console.log('Recorded ' + gNumOfRecordedInputs + ' demo inputs.')\n\n                // Grab demo data from RAM.\n                var demo_data = mem.getblock(gRecordedInputsPtr, (gNumOfRecordedInputs + 1) * 4)\n\n                // Create filename with random id added onto it.\n                var filename = 'SM64_DEMOS/demo_' + get_random_int(0, 0xFFFFFFFF).toString(16) + '.bin'\n\n                // Dump demo data to file.\n                var file = fs.open(filename, 'wb');\n                fs.write(file, demo_data);\n                fs.close(file);\n\n                console.log('Dumped data to file ' + filename)\n            }\n\n            // Set status to DEMOREC_STATUS_DONE\n            mem.u32[gRecordingStatus_vaddr] = 4;\n\n            // Decomp memes\n            console.log('OK');\n        }\n    })\n}\n\nfunction get_random_int(min, max) {\n    min = Math.ceil(min);\n    max = Math.floor(max);\n    return Math.floor(Math.random() * (max - min + 1)) + min;\n}\n\n/*\n * Finds a byte pattern that is 4-byte aligned.\n *\n * The javascript api is pretty slow when reading memory directly,\n * so I made this to search a copy of RAM to make things a little faster.\n */\nfunction find_matches_fast(pattern) {\n    var targetLength = pattern.length\n    var targetLengthMinusOne = targetLength - 1\n    var matches = []\n    var matching = 0\n\n  // Increments by 8 to speed things up.\n    for(var i = 0; i < RAM_SIZE; i += 8) {\n        if(RAM[i] == pattern[matching])\n            matching++\n        else\n            matching = 0\n        if(matching == targetLength) {\n            matches.push(i - targetLengthMinusOne)\n            matching = 0\n        }\n    if(matching > 0) {\n        if(RAM[i + 1] == pattern[matching])\n            matching++\n        else\n            matching = 0\n        if(matching == targetLength) {\n            matches.push(i + 1 - targetLengthMinusOne)\n            matching = 0\n        }\n        if(matching > 1) {\n            if(RAM[i + 2] == pattern[matching])\n                matching++\n            else\n                matching = 0\n            if(matching == targetLength) {\n                matches.push(i + 2 - targetLengthMinusOne)\n                matching = 0\n            }\n            if(matching > 2) {\n                if(RAM[i + 3] == pattern[matching])\n                    matching++\n                else\n                    matching = 0\n                if(matching == targetLength) {\n                    matches.push(i + 3 - targetLengthMinusOne)\n                    matching = 0\n                }\n            }\n        }\n    }\n\n    if(RAM[i + 4] == pattern[matching])\n        matching++\n    else\n        matching = 0\n    if(matching == targetLength) {\n        matches.push(i + 4 - targetLengthMinusOne)\n        matching = 0\n    }\n    if(matching > 0) {\n        if(RAM[i + 5] == pattern[matching])\n            matching++\n        else\n            matching = 0\n        if(matching == targetLength) {\n            matches.push(i + 5 - targetLengthMinusOne)\n            matching = 0\n        }\n        if(matching > 1) {\n            if(RAM[i + 6] == pattern[matching])\n                matching++\n            else\n                matching = 0\n            if(matching == targetLength) {\n                matches.push(i + 6 - targetLengthMinusOne)\n                matching = 0\n            }\n            if(matching > 2) {\n                if(RAM[i + 7] == pattern[matching])\n                    matching++\n                else\n                    matching = 0\n                if(matching == targetLength) {\n                    matches.push(i + 7 - targetLengthMinusOne)\n                    matching = 0\n                }\n            }\n        }\n    }\n  }\n\n  return matches\n}\n"
  },
  {
    "path": "enhancements/crash.patch",
    "content": "diff --git a/asm/crash.s b/asm/crash.s\nnew file mode 100644\nindex 00000000..033bf952\n--- /dev/null\n+++ b/asm/crash.s\n@@ -0,0 +1,153 @@\n+// SM64 Crash Handler\n+// See Readme below.\n+\n+#include \"macros.inc\"\n+\n+/* ---------------------------------------------------------------\n+ * IMPORTANT README:\n+ * ---------------------------------------------------------------\n+ * Frame buffer emulation is required. To enable it in GlideN64,\n+ * check \"Emulate frame buffer\" and \"Render frame buffer to output\"\n+ * in the \"Frame buffer\" tab.\n+ *\n+ * Your emulator's CPU core style should be set to interpreter for best results.\n+ *\n+ * See the DEBUG_ASSERT macro on how to call the crash screen for\n+ * detected exceptions.\n+ *\n+ */\n+\n+.set noat\n+.set noreorder\n+.set gp=64\n+\n+.set COP0_CAUSE, $13\n+.set COP0_EPC, $14\n+.set COP0_BADVADDR, $8\n+\n+glabel crashFont\n+    .incbin \"enhancements/crash_font.bin\"\n+    .align 4\n+\n+glabel exceptionRegContext\n+    .fill 0x108\n+\n+glabel pAssertFile\n+    .dword 0\n+glabel nAssertLine\n+    .dword 0\n+glabel pAssertExpression\n+    .dword 0\n+glabel nAssertStopProgram\n+    .dword 0\n+\n+glabel _n64_assert\n+    lui  $at, %hi(pAssertFile)\n+    sw   $a0, %lo(pAssertFile)($at)\n+    lui  $at, %hi(nAssertLine)\n+    sw   $a1, %lo(nAssertLine)($at)\n+    lui  $at, %hi(pAssertExpression)\n+    sw   $a2, %lo(pAssertExpression)($at)\n+    lui  $at, %hi(nAssertStopProgram)\n+    sw   $a3, %lo(nAssertStopProgram)($at)\n+    beqz $a3, .end_2\n+     nop\n+    syscall // trigger crash screen\n+.end_2:\n+    jr $ra\n+     nop\n+\n+glabel cop0_get_cause\n+    jr   $ra\n+     mfc0 $v0, COP0_CAUSE\n+\n+glabel cop0_get_epc\n+    jr   $ra\n+     mfc0 $v0, COP0_EPC\n+\n+glabel cop0_get_badvaddr\n+    jr   $ra\n+     mfc0 $v0, COP0_BADVADDR\n+\n+// If the error code field of cop0's cause register is non-zero,\n+// draw crash details to the screen and hang\n+\n+// If there wasn't an error, continue to the original handler\n+\n+glabel __crash_handler_entry\n+    mfc0  $k1, COP0_CAUSE\n+    andi  $k1, $k1, (0x1F << 2)\n+    beqzl $k1, .end2  // exit if ExCode is 0\n+     lui   $k0, %hi(__osException)\n+    la    $k0, exceptionRegContext\n+    sd    $zero, 0x018 ($k0)\n+    sd    $at, 0x020 ($k0)\n+    sd    $v0, 0x028 ($k0)\n+    sd    $v1, 0x030 ($k0)\n+    sd    $a0, 0x038 ($k0)\n+    sd    $a1, 0x040 ($k0)\n+    sd    $a2, 0x048 ($k0)\n+    sd    $a3, 0x050 ($k0)\n+    sd    $t0, 0x058 ($k0)\n+    sd    $t1, 0x060 ($k0)\n+    sd    $t2, 0x068 ($k0)\n+    sd    $t3, 0x070 ($k0)\n+    sd    $t4, 0x078 ($k0)\n+    sd    $t5, 0x080 ($k0)\n+    sd    $t6, 0x088 ($k0)\n+    sd    $t7, 0x090 ($k0)\n+    sd    $s0, 0x098 ($k0)\n+    sd    $s1, 0x0A0 ($k0)\n+    sd    $s2, 0x0A8 ($k0)\n+    sd    $s3, 0x0B0 ($k0)\n+    sd    $s4, 0x0B8 ($k0)\n+    sd    $s5, 0x0C0 ($k0)\n+    sd    $s6, 0x0C8 ($k0)\n+    sd    $s7, 0x0D0 ($k0)\n+    sd    $t8, 0x0D8 ($k0)\n+    sd    $t9, 0x0E0 ($k0)\n+    sd    $gp, 0x0E8 ($k0)\n+    sd    $sp, 0x0F0 ($k0)\n+    sd    $fp, 0x0F8 ($k0)\n+    sd    $ra, 0x100 ($k0)\n+    // cop unusable exception fired twice on startup so we'll ignore it for now\n+    li    $t0, (0x0B << 2)\n+    beq   $k1, $t0, .end\n+     nop\n+    jal   show_crash_screen_and_hang\n+     nop\n+    .end:\n+    ld    $at, 0x020 ($k0)\n+    ld    $v0, 0x028 ($k0)\n+    ld    $v1, 0x030 ($k0)\n+    ld    $a0, 0x038 ($k0)\n+    ld    $a1, 0x040 ($k0)\n+    ld    $a2, 0x048 ($k0)\n+    ld    $a3, 0x050 ($k0)\n+    ld    $t0, 0x058 ($k0)\n+    ld    $t1, 0x060 ($k0)\n+    ld    $t2, 0x068 ($k0)\n+    ld    $t3, 0x070 ($k0)\n+    ld    $t4, 0x078 ($k0)\n+    ld    $t5, 0x080 ($k0)\n+    ld    $t6, 0x088 ($k0)\n+    ld    $t7, 0x090 ($k0)\n+    ld    $s0, 0x098 ($k0)\n+    ld    $s1, 0x0A0 ($k0)\n+    ld    $s2, 0x0A8 ($k0)\n+    ld    $s3, 0x0B0 ($k0)\n+    ld    $s4, 0x0B8 ($k0)\n+    ld    $s5, 0x0C0 ($k0)\n+    ld    $s6, 0x0C8 ($k0)\n+    ld    $s7, 0x0D0 ($k0)\n+    ld    $t8, 0x0D8 ($k0)\n+    ld    $t9, 0x0E0 ($k0)\n+    ld    $gp, 0x0E8 ($k0)\n+    ld    $sp, 0x0F0 ($k0)\n+    ld    $fp, 0x0F8 ($k0)\n+    ld    $ra, 0x100 ($k0)\n+    lui   $k0, %hi(__osException)\n+    .end2:\n+    addiu $k0, $k0, %lo(__osException)\n+    jr    $k0 // run the original handler\n+     nop\ndiff --git a/lib/asm/__osExceptionPreamble.s b/lib/asm/__osExceptionPreamble.s\nindex 4e841ea0..ab0c7d13 100644\n--- a/lib/asm/__osExceptionPreamble.s\n+++ b/lib/asm/__osExceptionPreamble.s\n@@ -11,8 +11,8 @@\n #endif\n \n glabel __osExceptionPreamble\n-    lui   $k0, %hi(__osException)\n-    addiu $k0, %lo(__osException)\n+    lui   $k0, %hi(__crash_handler_entry)\n+    addiu $k0, %lo(__crash_handler_entry)\n     jr    $k0\n      nop\n \ndiff --git a/sm64.ld b/sm64.ld\nindex da9bc4dd..25ac57e8 100755\n--- a/sm64.ld\n+++ b/sm64.ld\n@@ -117,6 +117,7 @@ SECTIONS\n         BUILD_DIR/src/game/rendering_graph_node.o(.text);\n         BUILD_DIR/src/game/profiler.o(.text);\n         BUILD_DIR/asm/decompress.o(.text);\n+        BUILD_DIR/asm/crash.o(.text);\n         BUILD_DIR/src/game/camera.o(.text);\n         BUILD_DIR/src/game/debug_course.o(.text);\n         BUILD_DIR/src/game/object_list_processor.o(.text);\ndiff --git a/src/game/crash.c b/src/game/crash.c\nnew file mode 100644\nindex 00000000..716adfbd\n--- /dev/null\n+++ b/src/game/crash.c\n@@ -0,0 +1,260 @@\n+/* SM64 Crash Handler */\n+\n+#include <sm64.h>\n+\n+#include \"crash.h\"\n+\n+extern u32 exceptionRegContext[];\n+\n+extern char *pAssertFile;\n+extern int nAssertLine;\n+extern char *pAssertExpression;\n+extern int nAssertStopProgram;\n+\n+u16 fbFillColor = 0xFFFF;\n+u16 fbShadeColor = 0x0000;\n+u16 *fbAddress = NULL;\n+\n+extern u8 crashFont[];\n+\n+const char *szErrCodes[] = {\n+    \"INTERRUPT\",\n+    \"TLB MOD\",\n+    \"UNMAPPED LOAD ADDR\",\n+    \"UNMAPPED STORE ADDR\",\n+    \"BAD LOAD ADDR\",\n+    \"BAD STORE ADDR\",\n+    \"BUS ERR ON INSTR FETCH\",\n+    \"BUS ERR ON LOADSTORE\",\n+    \"SYSCALL\",\n+    \"BREAKPOINT\",\n+    \"UNKNOWN INSTR\",\n+    \"COP UNUSABLE\",\n+    \"ARITHMETIC OVERFLOW\",\n+    \"TRAP EXC\",\n+    \"VIRTUAL COHERENCY INSTR\",\n+    \"FLOAT EXC\",\n+};\n+\n+const char *szGPRegisters1[] = { \"R0\", \"AT\", \"V0\", \"V1\", \"A0\", \"A1\", \"A2\", \"A3\",\n+                                 \"T0\", \"T1\", \"T2\", \"T3\", \"T4\", \"T5\", \"T6\", NULL };\n+\n+const char *szGPRegisters2[] = { \"T7\", \"S0\", \"S1\", \"S2\", \"S3\", \"S4\",\n+                                 \"S5\", \"S6\", \"S7\", \"T8\", \"T9\", /*\"K0\", \"K1\",*/\n+                                 \"GP\", \"SP\", \"FP\", \"RA\", NULL };\n+\n+int crash_strlen(char *str) {\n+    int len = 0;\n+    while (*str++) {\n+        len++;\n+    }\n+    return len;\n+}\n+\n+void show_crash_screen_and_hang(void) {\n+    u32 cause;\n+    u32 epc;\n+    u8 errno;\n+\n+    fb_set_address((void *) (*(u32 *) 0xA4400004 | 0x80000000)); // replace me\n+\n+    cause = cop0_get_cause();\n+    epc = cop0_get_epc();\n+\n+    errno = (cause >> 2) & 0x1F;\n+\n+    if (nAssertStopProgram == 0) {\n+        fbFillColor = 0x6253;\n+        fb_fill(10, 10, 300, 220);\n+\n+        fb_print_str(80, 20, \"AN ERROR HAS OCCURRED!\");\n+        fb_print_int_hex(80, 30, errno, 8);\n+        fb_print_str(95, 30, szErrCodes[errno]);\n+\n+        if (errno >= 2 && errno <= 5) {\n+            /*\n+            2 UNMAPPED LOAD ADDR\n+            3 UNMAPPED STORE ADDR\n+            4 BAD LOAD ADDR\n+            5 BAD STORE ADDR\n+            */\n+            u32 badvaddr = cop0_get_badvaddr();\n+\n+            fb_print_str(145, 50, \"VA\");\n+            fb_print_int_hex(160, 50, badvaddr, 32);\n+        }\n+    } else {\n+        int afterFileX;\n+        int exprBoxWidth;\n+        fbFillColor = 0x5263;\n+        fb_fill(10, 10, 300, 220);\n+\n+        fb_print_str(80, 20, \"ASSERTION FAILED!\");\n+\n+        afterFileX = fb_print_str(80, 30, pAssertFile);\n+        fb_print_str(afterFileX, 30, \":\");\n+        fb_print_uint(afterFileX + 5, 30, nAssertLine);\n+\n+        exprBoxWidth = (crash_strlen(pAssertExpression) * 5) + 2;\n+        fbFillColor = 0x0001;\n+        fb_fill(80 - 1, 40 - 1, exprBoxWidth, 10);\n+        fb_print_str(80, 40, pAssertExpression);\n+    }\n+\n+    fb_print_str(80, 50, \"PC\");\n+    fb_print_int_hex(95, 50, epc, 32);\n+\n+    fb_print_gpr_states(80, 70, szGPRegisters1, &exceptionRegContext[6 + 0]);\n+    fb_print_gpr_states(145, 70, szGPRegisters2, &exceptionRegContext[6 + 15 * 2]);\n+\n+    fb_swap();\n+    osWritebackDCacheAll();\n+\n+    while (1) // hang forever\n+    {\n+        UNUSED volatile int t = 0; // keep pj64 happy\n+    }\n+}\n+\n+u8 ascii_to_idx(char c) {\n+    return c - 0x20;\n+}\n+\n+void fb_set_address(void *address) {\n+    fbAddress = (u16 *) address;\n+}\n+\n+void fb_swap() {\n+    // update VI frame buffer register\n+    // todo other registers\n+    *(u32 *) (0xA4400004) = (u32) fbAddress & 0x00FFFFFF;\n+}\n+\n+void fb_fill(int baseX, int baseY, int width, int height) {\n+    int y, x;\n+\n+    for (y = baseY; y < baseY + height; y++) {\n+        for (x = baseX; x < baseX + width; x++) {\n+            fbAddress[y * 320 + x] = fbFillColor;\n+        }\n+    }\n+}\n+\n+void fb_draw_char(int x, int y, u8 idx) {\n+    u16 *out = &fbAddress[y * 320 + x];\n+    const u8 *in = &crashFont[idx * 3];\n+    int nbyte;\n+    int nrow;\n+    int ncol;\n+\n+    for (nbyte = 0; nbyte < 3; nbyte++) {\n+        u8 curbyte = in[nbyte];\n+        for (nrow = 0; nrow < 2; nrow++) {\n+            for (ncol = 0; ncol < 4; ncol++) {\n+                u8 px = curbyte & (1 << (7 - (nrow * 4 + ncol)));\n+                if (px != 0) {\n+                    out[ncol] = fbFillColor;\n+                }\n+            }\n+            out += 320;\n+        }\n+    }\n+}\n+\n+void fb_draw_char_shaded(int x, int y, u8 idx) {\n+    fbFillColor = 0x0001;\n+    fb_draw_char(x - 1, y + 1, idx);\n+\n+    fbFillColor = 0xFFFF;\n+    fb_draw_char(x, y, idx);\n+}\n+\n+int fb_print_str(int x, int y, const char *str) {\n+    while (1) {\n+        int yoffs = 0;\n+        u8 idx;\n+        char c = *str++;\n+\n+        if (c == '\\0') {\n+            break;\n+        }\n+\n+        if (c == ' ') {\n+            x += 5;\n+            continue;\n+        }\n+\n+        switch (c) {\n+            case 'j':\n+            case 'g':\n+            case 'p':\n+            case 'q':\n+            case 'y':\n+            case 'Q':\n+                yoffs = 1;\n+                break;\n+            case ',':\n+                yoffs = 2;\n+                break;\n+        }\n+\n+        idx = ascii_to_idx(c);\n+        fb_draw_char_shaded(x, y + yoffs, idx);\n+        x += 5;\n+    }\n+\n+    return x;\n+}\n+\n+void fb_print_int_hex(int x, int y, u32 value, int nbits) {\n+    nbits -= 4;\n+\n+    while (nbits >= 0) {\n+        int nib = ((value >> nbits) & 0xF);\n+        u8 idx;\n+\n+        if (nib > 9) {\n+            idx = ('A' - 0x20) + (nib - 0xa);\n+        } else {\n+            idx = ('0' - 0x20) + nib;\n+        }\n+\n+        fb_draw_char_shaded(x, y, idx);\n+        x += 5;\n+\n+        nbits -= 4;\n+    }\n+}\n+\n+int fb_print_uint(int x, int y, u32 value) {\n+    int nchars = 0;\n+\n+    int v = value;\n+    int i;\n+    while (v /= 10) {\n+        nchars++;\n+    }\n+\n+    x += nchars * 5;\n+\n+    for (i = nchars; i >= 0; i--) {\n+        fb_draw_char_shaded(x, y, ('0' - 0x20) + (value % 10));\n+        value /= 10;\n+        x -= 5;\n+    }\n+\n+    return (x + nchars * 5);\n+}\n+\n+void fb_print_gpr_states(int x, int y, const char *regNames[], u32 *regContext) {\n+    int i;\n+    for (i = 0;; i++) {\n+        if (regNames[i] == NULL) {\n+            break;\n+        }\n+\n+        fb_print_str(x, y, regNames[i]);\n+        fb_print_int_hex(x + 15, y, regContext[i * 2 + 1], 32);\n+        y += 10;\n+    }\n+}\ndiff --git a/src/game/crash.h b/src/game/crash.h\nnew file mode 100644\nindex 00000000..1386930d\n--- /dev/null\n+++ b/src/game/crash.h\n@@ -0,0 +1,28 @@\n+#ifndef _CRASH_H_\n+#define _CRASH_H_\n+\n+#include <types.h>\n+\n+#define CRASH_SCREEN_INCLUDED 1\n+\n+extern u32 cop0_get_cause(void);\n+extern u32 cop0_get_epc(void);\n+extern u32 cop0_get_badvaddr(void);\n+\n+extern void _n64_assert(const char* pFile, int nLine, const char *pExpression, int nStopProgram);\n+\n+extern u8 __crash_handler_entry[];\n+\n+void show_crash_screen_and_hang(void);\n+u8 ascii_to_idx(char c);\n+void fb_set_address(void *address);\n+void fb_swap(void);\n+void fb_fill(int baseX, int baseY, int width, int height);\n+void fb_draw_char(int x, int y, u8 idx);\n+void fb_draw_char_shaded(int x, int y, u8 idx);\n+int fb_print_str(int x, int y, const char *str);\n+int fb_print_uint(int x, int y, u32 value);\n+void fb_print_int_hex(int x, int y, u32 value, int nbits);\n+void fb_print_gpr_states(int x, int y, const char* regStrs[], u32 *regContext);\n+\n+#endif /* _CRASH_H_ */\n"
  },
  {
    "path": "enhancements/debug_box.patch",
    "content": "diff --git a/src/game/area.c b/src/game/area.c\nindex af9d0156..c68a7f6e 100644\n--- a/src/game/area.c\n+++ b/src/game/area.c\n@@ -22,6 +22,7 @@\n #include \"save_file.h\"\n #include \"level_table.h\"\n #include \"dialog_ids.h\"\n+#include \"debug_box.h\"\n \n struct SpawnInfo gPlayerSpawnInfos[1];\n struct GraphNode *D_8033A160[0x100];\n@@ -363,6 +364,8 @@ void render_game(void) {\n     if (gCurrentArea != NULL && !gWarpTransition.pauseRendering) {\n         geo_process_root(gCurrentArea->unk04, D_8032CE74, D_8032CE78, gFBSetColor);\n \n+        render_debug_boxes();\n+\n         gSPViewport(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&D_8032CF00));\n \n         gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, BORDER_HEIGHT, SCREEN_WIDTH,\ndiff --git a/src/game/debug_box.c b/src/game/debug_box.c\nnew file mode 100644\nindex 00000000..1ffe0288\n--- /dev/null\n+++ b/src/game/debug_box.c\n@@ -0,0 +1,281 @@\n+#include <ultra64.h>\n+\n+#include \"sm64.h\"\n+#include \"game/game_init.h\"\n+#include \"game/geo_misc.h\"\n+#include \"engine/math_util.h\"\n+\n+#include \"debug_box.h\"\n+\n+/**\n+ * @file debug_box.c\n+ * Draws 3D boxes for debugging purposes.\n+ *\n+ * How to use:\n+ *\n+ * In render_game() in area.c, add a call to render_debug_boxes():\n+ *\n+ * void render_game(void) {\n+ *    if (gCurrentArea != NULL && !gWarpTransition.pauseRendering) {\n+ *        geo_process_root(...);\n+ *\n+ *        render_debug_boxes(); // add here\n+ *\n+ *        gSPViewport(...);\n+ *        gDPSetScissor(...);\n+ *    //...\n+ *\n+ * Now just call debug_box() whenever you want to draw one!\n+ *\n+ * debug_box by default takes two arguments: a center and bounds vec3f.\n+ * This will draw a box starting from the point (center - bounds) to (center + bounds).\n+ *\n+ * Use debug_box_rot to draw a box rotated in the xz-plane.\n+ *\n+ * If you want to draw a box by specifying min and max points, use debug_box_pos() instead.\n+ */\n+\n+/**\n+ * Internal struct containing box info\n+ */\n+struct DebugBox {\n+    u32 color;\n+    Vec3s center;\n+    Vec3s bounds;\n+    s16 yaw;\n+};\n+\n+struct DebugBox sBoxes[MAX_DEBUG_BOXES];\n+s16 sNumBoxes = 0;\n+\n+extern Mat4 gMatStack[32]; //XXX: Hack\n+\n+/**\n+ * The debug boxes' default transparency\n+ */\n+#define DBG_BOX_ALPHA     0x7F\n+/**\n+ * The debug boxes' default color. sCurBoxColor is reset to this every frame.\n+ */\n+#define DBG_BOX_DEF_COLOR 0xFF0000\n+\n+/**\n+ * The color that new boxes will be drawn with.\n+ */\n+u32 sCurBoxColor = DBG_BOX_ALPHA << 24 | DBG_BOX_DEF_COLOR;\n+\n+/**\n+ * The allocated size of a rotated box's dl\n+ */\n+#define DBG_BOX_ROT_DLSIZE ((s32)(6 * sizeof(Gfx) + 8 * sizeof(Vtx)))\n+/**\n+ * The allocated size of a normal box's dl\n+ */\n+#define DBG_BOX_DLSIZE     ((s32)(2 * sizeof(Gfx) + 8 * sizeof(Vtx)))\n+\n+/**\n+ * Sets up the RCP for drawing the boxes\n+ */\n+static const Gfx dl_debug_box_begin[] = {\n+    gsDPPipeSync(),\n+#if DBG_BOX_ALPHA < 0xFF\n+    gsDPSetRenderMode(G_RM_ZB_XLU_SURF, G_RM_NOOP2),\n+#else\n+    gsDPSetRenderMode(G_RM_ZB_OPA_SURF, G_RM_NOOP2),\n+#endif\n+    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n+    gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH),\n+    gsSPTexture(0, 0, 0, 0, G_OFF),\n+    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n+    gsSPEndDisplayList(),\n+};\n+\n+/**\n+ * Actually draws the box\n+ */\n+static const Gfx dl_debug_draw_box[] = {\n+    gsSP2Triangles(5,  4,  6, 0x0,  5,  6,  7, 0x0), // front\n+    gsSP2Triangles(0,  1,  2, 0x0,  2,  1,  3, 0x0), // back\n+\n+    gsSP2Triangles(4,  0,  2, 0x0,  2,  6,  4, 0x0), // left\n+    gsSP2Triangles(1,  5,  3, 0x0,  3,  5,  7, 0x0), // right\n+\n+    gsSP2Triangles(1,  0,  4, 0x0,  1,  4,  5, 0x0), // top\n+    gsSP2Triangles(2,  3,  6, 0x0,  6,  3,  7, 0x0), // bottom\n+\n+    gsSPEndDisplayList(),\n+};\n+\n+/**\n+ * Adds a box to the list to be rendered this frame.\n+ *\n+ * If there are already MAX_DEBUG_BOXES boxes, does nothing.\n+ */\n+static void append_debug_box(Vec3f center, Vec3f bounds, s16 yaw)\n+{\n+    if (sNumBoxes >= MAX_DEBUG_BOXES) {\n+        return;\n+    }\n+\n+    vec3f_to_vec3s(sBoxes[sNumBoxes].center, center);\n+    vec3f_to_vec3s(sBoxes[sNumBoxes].bounds, bounds);\n+\n+    sBoxes[sNumBoxes].yaw = yaw;\n+    sBoxes[sNumBoxes].color = sCurBoxColor;\n+\n+    ++sNumBoxes;\n+}\n+\n+/**\n+ * Draw new boxes with the given color.\n+ * Color format is 32-bit ARGB.\n+ * If the alpha component is zero, DBG_BOX_ALPHA (0x7f) will be used instead.\n+ * Ex: 0xFF0000 becomes 0x7FFF0000\n+ */\n+void debug_box_color(u32 color)\n+{\n+    if ((color >> 24) == 0) color |= (DBG_BOX_ALPHA << 24);\n+    sCurBoxColor = color;\n+}\n+\n+/**\n+ * Draws a debug box from (center - bounds) to (center + bounds)\n+ * To draw a rotated box, use debug_box_rot()\n+ *\n+ * @see debug_box_rot()\n+ */\n+void debug_box(Vec3f center, Vec3f bounds)\n+{\n+    append_debug_box(center, bounds, 0);\n+}\n+\n+/**\n+ * Draws a debug box from (center - bounds) to (center + bounds), rotating it by `yaw`\n+ */\n+void debug_box_rot(Vec3f center, Vec3f bounds, s16 yaw)\n+{\n+    append_debug_box(center, bounds, yaw);\n+}\n+\n+/**\n+ * Draws a debug box from pMin to pMax\n+ * To draw a rotated box this way, use debug_box_pos_rot()\n+ *\n+ * @see debug_box_pos_rot()\n+ */\n+void debug_box_pos(Vec3f pMin, Vec3f pMax)\n+{\n+    debug_box_pos_rot(pMin, pMax, 0);\n+}\n+\n+/**\n+ * Draws a debug box from pMin to pMax, rotating it in the xz-plane by `yaw`\n+ */\n+void debug_box_pos_rot(Vec3f pMin, Vec3f pMax, s16 yaw)\n+{\n+    Vec3f center, bounds;\n+\n+    bounds[0] = (pMax[0] - pMin[0]) / 2.0f;\n+    bounds[1] = (pMax[1] - pMin[1]) / 2.0f;\n+    bounds[2] = (pMax[2] - pMin[2]) / 2.0f;\n+\n+    center[0] = pMin[0] + bounds[0];\n+    center[1] = pMin[1] + bounds[1];\n+    center[2] = pMin[2] + bounds[2];\n+\n+    append_debug_box(center, bounds, yaw);\n+}\n+\n+static void render_box(int index)\n+{\n+    Vtx *verts;\n+    Mtx *translate;\n+    Mtx *rotate;\n+    Mtx *translateback;\n+    struct DebugBox *box = &sBoxes[index];\n+    u32 color = box->color;\n+\n+    s32 x0 = box->center[0],\n+        y0 = box->center[1],\n+        z0 = box->center[2];\n+\n+    s32 xb = box->bounds[0],\n+        yb = box->bounds[1],\n+        zb = box->bounds[2];\n+\n+    if (box->yaw != 0 && (Gfx*)gGfxPoolEnd - gDisplayListHead < DBG_BOX_ROT_DLSIZE)\n+        return;\n+    else if ((Gfx*)gGfxPoolEnd - gDisplayListHead < DBG_BOX_DLSIZE)\n+        return;\n+\n+    verts = alloc_display_list(8 * sizeof(Vtx));\n+\n+    if (verts != NULL) {\n+        if (box->yaw != 0) {\n+            // Translate to the origin, rotate, then translate back, effectively rotating the box about\n+            // its center\n+            translate =     alloc_display_list(sizeof(Mtx));\n+            rotate =        alloc_display_list(sizeof(Mtx));\n+            translateback = alloc_display_list(sizeof(Mtx));\n+\n+            guTranslate(translate, box->center[0],  box->center[1],  box->center[2]);\n+            guRotate(rotate, box->yaw / (float)0x10000 * 360.0f, 0, 1.0f, 0);\n+            guTranslate(translateback, -box->center[0], -box->center[1], -box->center[2]);\n+\n+            gSPMatrix(gDisplayListHead++, translate,     G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_PUSH);\n+            gSPMatrix(gDisplayListHead++, rotate,        G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_NOPUSH);\n+            gSPMatrix(gDisplayListHead++, translateback, G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_NOPUSH);\n+        }\n+\n+#define DBG_BOX_COL /**/ (color >> 16) & 0xff, (color >> 8) & 0xff, color & 0xff, (color >> 24) & 0xff\n+#define DBG_BOX_VTX(i, x, y, z) make_vertex(verts, i, x, y, z, 0, 0, DBG_BOX_COL)\n+        DBG_BOX_VTX(0, x0 - xb, y0 + yb, z0 - zb);\n+        DBG_BOX_VTX(1, x0 + xb, y0 + yb, z0 - zb);\n+        DBG_BOX_VTX(2, x0 - xb, y0 - yb, z0 - zb);\n+        DBG_BOX_VTX(3, x0 + xb, y0 - yb, z0 - zb);\n+        DBG_BOX_VTX(4, x0 - xb, y0 + yb, z0 + zb);\n+        DBG_BOX_VTX(5, x0 + xb, y0 + yb, z0 + zb);\n+        DBG_BOX_VTX(6, x0 - xb, y0 - yb, z0 + zb);\n+        DBG_BOX_VTX(7, x0 + xb, y0 - yb, z0 + zb);\n+#undef DBG_BOX_VTX\n+\n+        gSPVertex(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(verts), 8, 0);\n+\n+        gSPDisplayList(gDisplayListHead++, dl_debug_draw_box);\n+\n+        if (box->yaw != 0) {\n+            gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);\n+        }\n+    }\n+}\n+\n+void render_debug_boxes(void)\n+{\n+    s32 i;\n+    Mtx *mtx;\n+\n+    debug_box_color(DBG_BOX_DEF_COLOR);\n+\n+    if (sNumBoxes == 0) {\n+        return;\n+    }\n+\n+    mtx = alloc_display_list(sizeof(Mtx));\n+    // Don't draw if there isn't space for the configuration + at least one box\n+    if (mtx == NULL || ((Gfx*)gGfxPoolEnd - gDisplayListHead) <= (s32)(2 * sizeof(Gfx)) + DBG_BOX_DLSIZE) {\n+        sNumBoxes = 0;\n+        return;\n+    }\n+\n+    //XXX: This is hacky. Ths camera's look-at matrix is stored in gMatStack[1], so this is a simple way\n+    //     of using it without reconstructing the matrix.\n+    mtxf_to_mtx(mtx, gMatStack[1]);\n+    gSPMatrix(gDisplayListHead++, mtx, G_MTX_MODELVIEW | G_MTX_LOAD | G_MTX_NOPUSH);\n+    gSPDisplayList(gDisplayListHead++, dl_debug_box_begin);\n+\n+    for (i = 0; i < sNumBoxes; ++i) {\n+        render_box(i);\n+    }\n+\n+    sNumBoxes = 0;\n+}\ndiff --git a/src/game/debug_box.h b/src/game/debug_box.h\nnew file mode 100644\nindex 00000000..540c85e4\n--- /dev/null\n+++ b/src/game/debug_box.h\n@@ -0,0 +1,26 @@\n+#ifndef DEBUG_BOX_H\n+#define DEBUG_BOX_H\n+\n+/**\n+ * @file debug_box.h\n+ * Draws debug boxes, see debug_box.c for details\n+ */\n+\n+#include \"types.h\"\n+\n+/**\n+ * The max amount of debug boxes before debug_box() just returns.\n+ * You can set this to something higher, but you might run out of space in the gfx pool.\n+ */\n+#define MAX_DEBUG_BOXES 512\n+\n+void debug_box_color(u32 color);\n+void debug_box(Vec3f center, Vec3f bounds);\n+void debug_box_rot(Vec3f center, Vec3f bounds, s16 yaw);\n+\n+void debug_box_pos(Vec3f pMin, Vec3f pMax);\n+void debug_box_pos_rot(Vec3f pMin, Vec3f pMax, s16 yaw);\n+\n+void render_debug_boxes(void);\n+\n+#endif /* DEBUG_BOX_H */\n"
  },
  {
    "path": "enhancements/fps.patch",
    "content": "diff --git a/src/game/game_init.c b/src/game/game_init.c\nindex b961ca52..531231cf 100644\n--- a/src/game/game_init.c\n+++ b/src/game/game_init.c\n@@ -82,6 +82,47 @@ struct DemoInput gRecordedDemoInput = { 0 };\n // Display\n // ----------------------------------------------------------------------------------------------------\n \n+// SDK states that 1 cycle takes about 21.33 nanoseconds\n+#define SECONDS_PER_CYCLE 0.00000002133f\n+\n+#define FPS_COUNTER_X_POS 24\n+#define FPS_COUNTER_Y_POS 190\n+\n+static OSTime gLastOSTime = 0;\n+static float gFrameTime = 0.0f;\n+static u16 gFrames = 0;\n+static u16 gFPS = 0;\n+static u8 gRenderFPS = FALSE;\n+\n+static void calculate_frameTime_from_OSTime(OSTime diff) {\n+    gFrameTime += diff * SECONDS_PER_CYCLE;\n+    gFrames++;\n+}\n+\n+static void render_fps(void) {\n+    // Toggle rendering framerate with the L button.\n+    if (gPlayer1Controller->buttonPressed & L_TRIG) {\n+        gRenderFPS ^= 1;\n+    }\n+\n+    if (gRenderFPS) {\n+        OSTime newTime = osGetTime();\n+\n+        calculate_frameTime_from_OSTime(newTime - gLastOSTime);\n+\n+        // If frame time is longer or equal to a second, update FPS counter.\n+        if (gFrameTime >= 1.0f) {\n+            gFPS = gFrames;\n+            gFrames = 0;\n+            gFrameTime -= 1.0f;\n+        }\n+\n+        print_text_fmt_int(FPS_COUNTER_X_POS, FPS_COUNTER_Y_POS, \"FPS %d\", gFPS);\n+\n+        gLastOSTime = newTime;\n+    }\n+}\n+\n /**\n  * Sets the initial RDP (Reality Display Processor) rendering settings.\n  */\n@@ -694,5 +735,7 @@ void thread5_game_loop(UNUSED void *arg) {\n             // amount of free space remaining.\n             print_text_fmt_int(180, 20, \"BUF %d\", gGfxPoolEnd - (u8 *) gDisplayListHead);\n         }\n+\n+        render_fps();\n     }\n }\n"
  },
  {
    "path": "enhancements/mem_error_screen.patch",
    "content": "diff --git a/Makefile b/Makefile\nindex f50b7622..124c7ec6 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -478,6 +478,7 @@ $(BUILD_DIR)/include/text_strings.h: $(BUILD_DIR)/include/text_menu_strings.h\n $(BUILD_DIR)/src/menu/file_select.o: $(BUILD_DIR)/include/text_strings.h\n $(BUILD_DIR)/src/menu/star_select.o: $(BUILD_DIR)/include/text_strings.h\n $(BUILD_DIR)/src/game/ingame_menu.o: $(BUILD_DIR)/include/text_strings.h\n+$(BUILD_DIR)/src/game/mem_error_screen.o: $(BUILD_DIR)/include/text_strings.h\n \n \n #==============================================================================#\ndiff --git a/include/segments.h b/include/segments.h\nindex a97d6ee8..186c968e 100644\n--- a/include/segments.h\n+++ b/include/segments.h\n@@ -3,6 +3,9 @@\n \n #include \"config.h\"\n \n+/* Use expansion pack RAM */\n+#define USE_EXT_RAM 1\n+\n /*\n  * Memory addresses for segments. Ideally, this header file would not be\n  * needed, and the addresses would be defined in sm64.ld and linker-inserted\ndiff --git a/include/text_strings.h.in b/include/text_strings.h.in\nindex 749179b1..2f6f7a3c 100644\n--- a/include/text_strings.h.in\n+++ b/include/text_strings.h.in\n@@ -25,6 +25,11 @@\n #define TEXT_PAUSE _(\"PAUSE\") // Pause text, Castle Courses\n #define TEXT_HUD_CONGRATULATIONS _(\"CONGRATULATIONS\") // Course Complete Text, Bowser Courses\n \n+// Memory Expansion Error Screen\n+#define TEXT_CONSOLE_8MB _(\"If you're using an N64 console, then you will need to buy an\\nExpansion Pak to play this ROM hack.\")\n+#define TEXT_PJ64 _(\"If you are using PJ64 1.6, go to:\\nOptions > Settings > Rom Settings Tab > Memory Size\\nthen select 8 MB from the drop-down box.\")\n+#define TEXT_PJ64_2 _(\"If you are using PJ64 2.X, go to:\\nOptions > Settings > Config: > Memory Size, select 8 MB\")\n+\n #if defined(VERSION_JP) || defined(VERSION_SH) || defined(VERSION_CN)\n \n /**\ndiff --git a/levels/entry.c b/levels/entry.c\nindex 17c773ed..677a5ae9 100644\n--- a/levels/entry.c\n+++ b/levels/entry.c\n@@ -15,3 +15,12 @@ const LevelScript level_script_entry[] = {\n     EXECUTE(/*seg*/ 0x14, /*script*/ _introSegmentRomStart, /*scriptEnd*/ _introSegmentRomEnd, /*entry*/ level_intro_splash_screen),\n     JUMP(/*target*/ level_script_entry),\n };\n+\n+const LevelScript level_script_entry_error_screen[] = {\n+    INIT_LEVEL(),\n+    SLEEP(/*frames*/ 2),\n+    BLACKOUT(/*active*/ FALSE),\n+    SET_REG(/*value*/ 0),\n+    EXECUTE(/*seg*/ 0x14, /*script*/ _introSegmentRomStart, /*scriptEnd*/ _introSegmentRomEnd, /*entry*/ level_intro_entry_error_screen),\n+    JUMP(/*target*/ level_script_entry_error_screen),\n+};\ndiff --git a/levels/intro/geo.c b/levels/intro/geo.c\nindex 30a87806..6bf7b79a 100644\n--- a/levels/intro/geo.c\n+++ b/levels/intro/geo.c\n@@ -15,6 +15,24 @@\n \n #include \"levels/intro/header.h\"\n \n+const GeoLayout intro_geo_error_screen[] = {\n+     GEO_NODE_SCREEN_AREA(0, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n+     GEO_OPEN_NODE(),\n+          GEO_ZBUFFER(0),\n+          GEO_OPEN_NODE(),\n+                GEO_NODE_ORTHO(100),\n+                GEO_OPEN_NODE(),\n+                     GEO_BACKGROUND_COLOR(0x0001),\n+                GEO_CLOSE_NODE(),\n+          GEO_CLOSE_NODE(),\n+          GEO_ZBUFFER(0),\n+          GEO_OPEN_NODE(),\n+                GEO_ASM(0, geo18_display_error_message),\n+          GEO_CLOSE_NODE(),\n+     GEO_CLOSE_NODE(),\n+     GEO_END(),\n+};\n+\n // 0x0E0002D0\n const GeoLayout intro_geo_0002D0[] = {\n     GEO_NODE_SCREEN_AREA(0, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\ndiff --git a/levels/intro/header.h b/levels/intro/header.h\nindex 99277e86..04797cd7 100644\n--- a/levels/intro/header.h\n+++ b/levels/intro/header.h\n@@ -26,4 +26,8 @@ extern const LevelScript script_intro_L3[];\n extern const LevelScript script_intro_L4[];\n extern const LevelScript script_intro_L5[];\n \n+extern const GeoLayout intro_geo_error_screen[];\n+extern const LevelScript level_intro_entry_error_screen[];\n+extern Gfx *geo18_display_error_message(u32 run, UNUSED struct GraphNode *sp44, UNUSED u32 sp48);\n+\n #endif\ndiff --git a/levels/intro/script.c b/levels/intro/script.c\nindex 04b8fc4c..ca9058c4 100644\n--- a/levels/intro/script.c\n+++ b/levels/intro/script.c\n@@ -18,6 +18,21 @@\n #include \"make_const_nonconst.h\"\n #include \"levels/intro/header.h\"\n \n+const LevelScript level_intro_entry_error_screen[] = {\n+    INIT_LEVEL(),\n+    FIXED_LOAD(/*loadAddr*/ _goddardSegmentStart, /*romStart*/ _goddardSegmentRomStart, /*romEnd*/ _goddardSegmentRomEnd),\n+    LOAD_MIO0(/*seg*/ 0x07, _intro_segment_7SegmentRomStart, _intro_segment_7SegmentRomEnd),\n+    ALLOC_LEVEL_POOL(),\n+\n+    AREA(/*index*/ 1, intro_geo_error_screen),\n+    END_AREA(),\n+\n+    FREE_LEVEL_POOL(),\n+    LOAD_AREA(/*area*/ 1),\n+    SLEEP(/*frames*/ 32767),\n+    EXIT_AND_EXECUTE(/*seg*/ 0x14, _introSegmentRomStart, _introSegmentRomEnd, level_intro_entry_error_screen),\n+};\n+\n const LevelScript level_intro_splash_screen[] = {\n     INIT_LEVEL(),\n     FIXED_LOAD(/*loadAddr*/ _goddardSegmentStart, /*romStart*/ _goddardSegmentRomStart, /*romEnd*/ _goddardSegmentRomEnd),\ndiff --git a/src/engine/level_script.h b/src/engine/level_script.h\nindex d41a91c8..7d047236 100644\n--- a/src/engine/level_script.h\n+++ b/src/engine/level_script.h\n@@ -6,6 +6,7 @@\n struct LevelCommand;\n \n extern u8 level_script_entry[];\n+extern u8 level_script_entry_error_screen[];\n \n struct LevelCommand *level_script_execute(struct LevelCommand *cmd);\n \ndiff --git a/src/game/main.c b/src/game/main.c\nindex 1a9d9e7e..f4f7a9e5 100644\n--- a/src/game/main.c\n+++ b/src/game/main.c\n@@ -11,6 +11,7 @@\n #include \"segments.h\"\n #include \"main.h\"\n #include \"rumble_init.h\"\n+#include \"mem_error_screen.h\"\n \n // Message IDs\n #define MESG_SP_COMPLETE 100\n@@ -131,6 +132,10 @@ void alloc_pool(void) {\n     void *start = (void *) SEG_POOL_START;\n     void *end = (void *) SEG_POOL_END;\n \n+    // Detect memory size\n+    if (does_pool_end_lie_out_of_bounds(end))\n+        end = (void *)SEG_POOL_END_4MB;\n+\n     main_pool_init(start, end);\n     gEffectsMemoryPool = mem_pool_init(0x4000, MEMORY_POOL_LEFT);\n }\n@@ -336,7 +341,10 @@ void thread3_main(UNUSED void *arg) {\n     create_thread(&gSoundThread, 4, thread4_sound, NULL, gThread4Stack + 0x2000, 20);\n     osStartThread(&gSoundThread);\n \n-    create_thread(&gGameLoopThread, 5, thread5_game_loop, NULL, gThread5Stack + 0x2000, 10);\n+    if (!gNotEnoughMemory)\n+        create_thread(&gGameLoopThread, 5, thread5_game_loop, NULL, gThread5Stack + 0x2000, 10);\n+    else\n+        create_thread(&gGameLoopThread, 5, thread5_mem_error_message_loop, NULL, gThread5Stack + 0x2000, 10);\n     osStartThread(&gGameLoopThread);\n \n     while (TRUE) {\ndiff --git a/src/game/mem_error_screen.c b/src/game/mem_error_screen.c\nnew file mode 100644\nindex 00000000..f432927c\n--- /dev/null\n+++ b/src/game/mem_error_screen.c\n@@ -0,0 +1,104 @@\n+/* clang-format off */\n+/*\n+ * mem_error_screen.inc.c\n+ *\n+ * This enhancement should be used for ROM hacks that require the expansion pak.\n+ *\n+ */\n+/* clang-format on */\n+\n+#include <types.h>\n+#include \"segments.h\"\n+#include \"text_strings.h\"\n+#include \"game_init.h\"\n+#include \"main.h\"\n+#include \"print.h\"\n+#include \"ingame_menu.h\"\n+#include \"segment2.h\"\n+#include \"../engine/level_script.h\"\n+\n+// Ensure that USE_EXT_RAM is defined.\n+#ifndef USE_EXT_RAM\n+#error You have to define USE_EXT_RAM in 'include/segments.h'\n+#endif\n+\n+// Require 8 MB of RAM, even if the pool doesn't go into extended memory.\n+// Change the '8' to whatever MB limit you want.\n+// Note: only special emulators allow for RAM sizes above 8 MB.\n+#define REQUIRED_MIN_MEM_SIZE 1048576 * 8\n+\n+u8 gNotEnoughMemory = FALSE;\n+u8 gDelayForErrorMessage = 0;\n+\n+u8 does_pool_end_lie_out_of_bounds(void *end) {\n+    u32 endPhy = ((u32) end) & 0x1FFFFFFF;\n+    u32 memSize = *((u32 *) 0x80000318);\n+\n+    if (endPhy > memSize) {\n+        gNotEnoughMemory = TRUE;\n+        return TRUE;\n+    } else {\n+        if (memSize < REQUIRED_MIN_MEM_SIZE) {\n+            gNotEnoughMemory = TRUE;\n+        }\n+        return FALSE;\n+    }\n+}\n+\n+// If you're using an N64 console, then you will need to buy an\\nexpansion pak to play this ROM hack.\n+u8 text_console_8mb[] = { TEXT_CONSOLE_8MB };\n+\n+// If you are using PJ64 1.6, go to: Options ► Settings ► Rom Settings Tab ► Memory Size then select 8\n+// MB from the drop-down box.\n+u8 text_pj64[] = { TEXT_PJ64 };\n+\n+// If you are using PJ64 2.X, go to: Options ► Settings ► Config: ► Memory Size, select 8 MB\n+u8 text_pj64_2[] = { TEXT_PJ64_2 };\n+\n+Gfx *geo18_display_error_message(u32 run, UNUSED struct GraphNode *sp44, UNUSED u32 sp48) {\n+    if (run) {\n+        if (gDelayForErrorMessage > 0) {\n+            // Draw color text title.\n+            print_text(10, 210, \"ERROR    Need more memory\");\n+\n+            // Init generic text rendering\n+            create_dl_ortho_matrix();\n+            gSPDisplayList(gDisplayListHead++,\n+                           dl_ia_text_begin); // Init rendering stuff for generic text\n+\n+            // Set text color to white\n+            gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, 255);\n+\n+            print_generic_string(8, 170, text_console_8mb);\n+            print_generic_string(8, 120, text_pj64);\n+            print_generic_string(8, 54, text_pj64_2);\n+\n+            // Cleanup\n+            gSPDisplayList(gDisplayListHead++,\n+                           dl_ia_text_end); // Reset back to default render settings.\n+            gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);\n+        } else {\n+            gDelayForErrorMessage += 1;\n+        }\n+    }\n+\n+    return 0;\n+}\n+\n+// Basic main loop for the error screen. Note that controllers are not enabled here.\n+void thread5_mem_error_message_loop(UNUSED void *arg) {\n+    struct LevelCommand *addr;\n+\n+    setup_game_memory();\n+    set_vblank_handler(2, &gGameVblankHandler, &gGameVblankQueue, (OSMesg) 1);\n+\n+    addr = segmented_to_virtual(level_script_entry_error_screen);\n+\n+    render_init();\n+\n+    while (1) {\n+        select_gfx_pool();\n+        addr = level_script_execute(addr);\n+        display_and_vsync();\n+    }\n+}\ndiff --git a/src/game/mem_error_screen.h b/src/game/mem_error_screen.h\nnew file mode 100644\nindex 00000000..9fbff34c\n--- /dev/null\n+++ b/src/game/mem_error_screen.h\n@@ -0,0 +1,8 @@\n+#ifndef MEM_ERROR_SCREEN_H\n+#define MEM_ERROR_SCREEN_H\n+\n+extern u8 gNotEnoughMemory;\n+void thread5_mem_error_message_loop(UNUSED void *arg);\n+u8 does_pool_end_lie_out_of_bounds(void *end);\n+\n+#endif\n"
  },
  {
    "path": "enhancements/record_demo.patch",
    "content": "diff --git a/src/game/game_init.c b/src/game/game_init.c\nindex b961ca52..adfde049 100644\n--- a/src/game/game_init.c\n+++ b/src/game/game_init.c\n@@ -11,6 +11,7 @@\n #include \"game_init.h\"\n #include \"main.h\"\n #include \"memory.h\"\n+#include \"object_list_processor.h\"\n #include \"profiler.h\"\n #include \"save_file.h\"\n #include \"seq_ids.h\"\n@@ -386,6 +387,45 @@ void display_and_vsync(void) {\n // Controls\n // ----------------------------------------------------------------------------------------------------\n \n+/*\n+ * This enhancement allows you to record gameplay demos for the mario head screen.\n+ *\n+ * Note:\n+ * This enhancement does require the lastest versions of PJ64 from the nightly builds,\n+ * because it uses the javascript API to automatically dump the demo files from RAM\n+ * once the demo is completed. See enhancements/RecordDemo.js for more info\n+ *\n+*/\n+\n+#include \"mario.h\"\n+\n+#define DEMOREC_STATUS_NOT_RECORDING 0\n+#define DEMOREC_STATUS_PREPARING 1\n+#define DEMOREC_STATUS_RECORDING 2\n+#define DEMOREC_STATUS_STOPPING 3\n+#define DEMOREC_STATUS_DONE 4\n+\n+#define DEMOREC_PRINT_X 10\n+#define DEMOREC_PRINT_Y 10\n+\n+#define DEMOREC_DONE_DELAY 60 // Show \"DONE\" message for 2 seconds.\n+\n+#define DEMOREC_MAX_INPUTS 1025 // Max number of recorded inputs.\n+\n+/*\n+    DO NOT REMOVE, MODIFY, OR MAKE A COPY OF THIS EXACT STRING!\n+    This is here so that the js dump script can find the control variables easily.\n+*/\n+char gDemoRecTag[] = \"DEMORECVARS\";\n+\n+// Control variables. It is easier if they are each 4 byte aligned, which is why they are u32.\n+u32 gRecordingStatus = DEMOREC_STATUS_NOT_RECORDING;\n+u32 gDoneDelay = 0;\n+u32 gNumOfRecordedInputs = 0;\n+struct DemoInput gRecordedInputs[DEMOREC_MAX_INPUTS];\n+struct DemoInput* gRecordedInputsPtr = (struct DemoInput*)gRecordedInputs;\n+struct DemoInput gRecordedDemoInputCopy;\n+\n /**\n  * This function records distinct inputs over a 255-frame interval to RAM locations and was likely\n  * used to record the demo sequences seen in the final game. This function is unused.\n@@ -420,6 +460,118 @@ UNUSED static void record_demo(void) {\n     gRecordedDemoInput.timer++;\n }\n \n+void record_new_demo_input(void) {\n+    if (gRecordedDemoInput.timer == 1 && gRecordedDemoInputCopy.timer > 0) {\n+        gRecordedInputs[gNumOfRecordedInputs].timer = gRecordedDemoInputCopy.timer;\n+        gRecordedInputs[gNumOfRecordedInputs + 1].timer = 0;\n+        gRecordedInputs[gNumOfRecordedInputs].rawStickX = gRecordedDemoInputCopy.rawStickX;\n+        gRecordedInputs[gNumOfRecordedInputs + 1].rawStickX = gRecordedDemoInputCopy.rawStickX;\n+        gRecordedInputs[gNumOfRecordedInputs].rawStickY = gRecordedDemoInputCopy.rawStickY;\n+        gRecordedInputs[gNumOfRecordedInputs + 1].rawStickY = gRecordedDemoInputCopy.rawStickY;\n+        gRecordedInputs[gNumOfRecordedInputs].buttonMask = gRecordedDemoInputCopy.buttonMask;\n+        gRecordedInputs[gNumOfRecordedInputs + 1].buttonMask = gRecordedDemoInputCopy.buttonMask;\n+        gNumOfRecordedInputs++;\n+    }\n+}\n+\n+// Self explanitory\n+void copy_gRecordedDemoInput(void) {\n+    gRecordedDemoInputCopy.timer = gRecordedDemoInput.timer;\n+    gRecordedDemoInputCopy.rawStickX = gRecordedDemoInput.rawStickX;\n+    gRecordedDemoInputCopy.rawStickY = gRecordedDemoInput.rawStickY;\n+    gRecordedDemoInputCopy.buttonMask = gRecordedDemoInput.buttonMask;\n+}\n+\n+// Runs when the demo is recording.\n+void recording(void) {\n+\n+    // Force-stop when someone makes too many inputs.\n+    if (gNumOfRecordedInputs + 1 > DEMOREC_MAX_INPUTS) {\n+        gRecordingStatus = DEMOREC_STATUS_STOPPING;\n+        return;\n+    }\n+\n+    copy_gRecordedDemoInput();\n+    record_demo();\n+    record_new_demo_input();\n+}\n+\n+// Makes sure the last demo input is zeroed out, to make it look more clean.\n+void record_cleanup(void) {\n+    gRecordedInputs[gNumOfRecordedInputs].timer = 0;\n+    gRecordedInputs[gNumOfRecordedInputs].rawStickX = 0;\n+    gRecordedInputs[gNumOfRecordedInputs].rawStickY = 0;\n+    gRecordedInputs[gNumOfRecordedInputs].buttonMask = 0;\n+\n+    // Make sure the done delay is reset before moving to DONE status.\n+    gDoneDelay = 0;\n+}\n+\n+void record_run(void) {\n+    switch(gRecordingStatus) {\n+        case DEMOREC_STATUS_NOT_RECORDING:\n+            break;\n+        case DEMOREC_STATUS_PREPARING:\n+            if (gMarioObject != NULL && gCurrLevelNum != LEVEL_NONE) { // If the game is in an active level\n+                gRecordingStatus = DEMOREC_STATUS_RECORDING;\n+\n+                // First 4 values in demo inputs are used to define level ID\n+                gNumOfRecordedInputs = 1;\n+                gRecordedInputs[0].timer = gCurrLevelNum;\n+                gRecordedInputs[0].rawStickX = 0;\n+                gRecordedInputs[0].rawStickY = 0;\n+                gRecordedInputs[0].buttonMask = 0;\n+            }\n+            break;\n+        case DEMOREC_STATUS_RECORDING:\n+            recording();\n+            break;\n+        case DEMOREC_STATUS_DONE:\n+            if (gDoneDelay > DEMOREC_DONE_DELAY)\n+                gRecordingStatus = DEMOREC_STATUS_NOT_RECORDING;\n+            else\n+                gDoneDelay++;\n+            break;\n+    }\n+}\n+\n+// Prints the status on the bottom-left side of the screen in colorful text.\n+void print_status(void) {\n+    switch(gRecordingStatus) {\n+        case DEMOREC_STATUS_PREPARING:\n+            print_text(DEMOREC_PRINT_X, DEMOREC_PRINT_Y, \"READY\");\n+            break;\n+        case DEMOREC_STATUS_RECORDING:\n+            print_text(DEMOREC_PRINT_X, DEMOREC_PRINT_Y, \"REC\");\n+            break;\n+        case DEMOREC_STATUS_STOPPING:\n+            print_text(DEMOREC_PRINT_X, DEMOREC_PRINT_Y, \"WAIT\");\n+            break;\n+        case DEMOREC_STATUS_DONE:\n+            print_text(DEMOREC_PRINT_X, DEMOREC_PRINT_Y, \"DONE\");\n+            break;\n+    }\n+}\n+\n+// Main function that should be called from thread5_game_loop()\n+void recordingDemo(void) {\n+    // Mario needs to enter directly into a level and not from a warp,\n+    // so the debug level select is used for that.\n+    gDebugLevelSelect = TRUE;\n+\n+    if (gPlayer1Controller->buttonPressed & L_TRIG) {\n+        if (gRecordingStatus == DEMOREC_STATUS_NOT_RECORDING) {\n+            gRecordingStatus = DEMOREC_STATUS_PREPARING;\n+        } else if (gRecordingStatus == DEMOREC_STATUS_RECORDING) {\n+            gRecordingStatus = DEMOREC_STATUS_STOPPING;\n+            record_cleanup();\n+        }\n+    }\n+\n+    record_run();\n+    print_status();\n+}\n+\n /**\n  * Take the updated controller struct and calculate the new x, y, and distance floats.\n  */\n@@ -684,6 +836,7 @@ void thread5_game_loop(UNUSED void *arg) {\n         audio_game_loop_tick();\n         select_gfx_pool();\n         read_controller_inputs();\n+        recordingDemo();\n         addr = level_script_execute(addr);\n \n         display_and_vsync();\n"
  },
  {
    "path": "extract_assets.py",
    "content": "#!/usr/bin/env python3\nimport sys\nimport os\nimport json\n\n\ndef read_asset_map():\n    with open(\"assets.json\") as f:\n        ret = json.load(f)\n    return ret\n\n\ndef read_local_asset_list(f):\n    if f is None:\n        return []\n    ret = []\n    for line in f:\n        ret.append(line.strip())\n    return ret\n\n\ndef asset_needs_update(asset, version):\n    if version <= 6 and asset in [\"actors/king_bobomb/king_bob-omb_eyes.rgba16.png\", \"actors/king_bobomb/king_bob-omb_hand.rgba16.png\"]:\n        return True\n    if version <= 5 and asset == \"textures/spooky/bbh_textures.00800.rgba16.png\":\n        return True\n    if version <= 4 and asset in [\"textures/mountain/ttm_textures.01800.rgba16.png\", \"textures/mountain/ttm_textures.05800.rgba16.png\"]:\n        return True\n    if version <= 3 and asset == \"textures/cave/hmc_textures.01800.rgba16.png\":\n        return True\n    if version <= 2 and asset == \"textures/inside/inside_castle_textures.09000.rgba16.png\":\n        return True\n    if version <= 1 and asset.endswith(\".m64\"):\n        return True\n    if version <= 0 and asset.endswith(\".aiff\"):\n        return True\n    return False\n\n\ndef remove_file(fname):\n    os.remove(fname)\n    print(\"deleting\", fname)\n    try:\n        os.removedirs(os.path.dirname(fname))\n    except OSError:\n        pass\n\n\ndef clean_assets(local_asset_file):\n    assets = set(read_asset_map().keys())\n    assets.update(read_local_asset_list(local_asset_file))\n    for fname in list(assets) + [\".assets-local.txt\"]:\n        if fname.startswith(\"@\"):\n            continue\n        try:\n            remove_file(fname)\n        except FileNotFoundError:\n            pass\n\n\ndef main():\n    # In case we ever need to change formats of generated files, we keep a\n    # revision ID in the local asset file.\n    new_version = 7\n\n    try:\n        local_asset_file = open(\".assets-local.txt\")\n        local_asset_file.readline()\n        local_version = int(local_asset_file.readline().strip())\n    except Exception:\n        local_asset_file = None\n        local_version = -1\n\n    langs = sys.argv[1:]\n    if langs == [\"--clean\"]:\n        clean_assets(local_asset_file)\n        sys.exit(0)\n\n    all_langs = [\"jp\", \"us\", \"eu\", \"sh\", \"cn\"]\n    if not langs or not all(a in all_langs for a in langs):\n        langs_str = \" \".join(\"[\" + lang + \"]\" for lang in all_langs)\n        print(\"Usage: \" + sys.argv[0] + \" \" + langs_str)\n        print(\"For each version, baserom.<version>.z64 must exist\")\n        sys.exit(1)\n\n    asset_map = read_asset_map()\n    all_assets = []\n    any_missing_assets = False\n    for asset, data in asset_map.items():\n        if asset.startswith(\"@\"):\n            continue\n        if os.path.isfile(asset):\n            all_assets.append((asset, data, True))\n        else:\n            all_assets.append((asset, data, False))\n            if not any_missing_assets and any(lang in data[-1] for lang in langs):\n                any_missing_assets = True\n\n    if not any_missing_assets and local_version == new_version:\n        # Nothing to do, no need to read a ROM. For efficiency we don't check\n        # the list of old assets either.\n        return\n\n    # Late imports (to optimize startup perf)\n    import subprocess\n    import hashlib\n    import tempfile\n    from collections import defaultdict\n\n    new_assets = {a[0] for a in all_assets}\n\n    previous_assets = read_local_asset_list(local_asset_file)\n    if local_version == -1:\n        # If we have no local asset file, we assume that files are version\n        # controlled and thus up to date.\n        local_version = new_version\n\n    # Create work list\n    todo = defaultdict(lambda: [])\n    for (asset, data, exists) in all_assets:\n        # Leave existing assets alone if they have a compatible version.\n        if exists and not asset_needs_update(asset, local_version):\n            continue\n\n        meta = data[:-2]\n        size, positions = data[-2:]\n        for lang, pos in positions.items():\n            mio0 = None if len(pos) == 1 else pos[0]\n            pos = pos[-1]\n            if lang in langs:\n                todo[(lang, mio0)].append((asset, pos, size, meta))\n                break\n\n    # Load ROMs\n    roms = {}\n    for lang in langs:\n        fname = \"baserom.\" + lang + \".z64\"\n        try:\n            with open(fname, \"rb\") as f:\n                roms[lang] = f.read()\n        except Exception as e:\n            print(\"Failed to open \" + fname + \"! \" + str(e))\n            sys.exit(1)\n        sha1 = hashlib.sha1(roms[lang]).hexdigest()\n        with open(\"sm64.\" + lang + \".sha1\", \"r\") as f:\n            expected_sha1 = f.read().split()[0]\n        if sha1 != expected_sha1:\n            print(\n                fname\n                + \" has the wrong hash! Found \"\n                + sha1\n                + \", expected \"\n                + expected_sha1\n            )\n            sys.exit(1)\n\n    # Make sure tools exist\n    subprocess.check_call(\n        [\"make\", \"-s\", \"-C\", \"tools/sm64tools/\", \"n64graphics\", \"mio0\"]\n    )\n\n    subprocess.check_call(\n        [\"make\", \"-s\", \"-C\", \"tools/\", \"skyconv\", \"aifc_decode\"]\n    )\n\n    # Go through the assets in roughly alphabetical order (but assets in the same\n    # mio0 file still go together).\n    keys = sorted(list(todo.keys()), key=lambda k: todo[k][0][0])\n\n    # Import new assets\n    for key in keys:\n        assets = todo[key]\n        lang, mio0 = key\n        if mio0 == \"@sound\":\n            rom = roms[lang]\n            args = [\n                \"python3\",\n                \"tools/disassemble_sound.py\",\n                \"baserom.\" + lang + \".z64\",\n            ]\n            def append_args(key):\n                sound_ver = \"sh\" if lang == \"cn\" else lang\n                size, locs = asset_map[\"@sound \" + key + \" \" + sound_ver]\n                offset = locs[lang][0]\n                args.append(str(offset))\n                args.append(str(size))\n            append_args(\"ctl\")\n            append_args(\"tbl\")\n            if lang in (\"sh\", \"cn\"):\n                args.append(\"--shindou-headers\")\n                append_args(\"ctl header\")\n                append_args(\"tbl header\")\n            args.append(\"--only-samples\")\n            for (asset, pos, size, meta) in assets:\n                print(\"extracting\", asset)\n                args.append(asset + \":\" + str(pos))\n            subprocess.run(args, check=True)\n            continue\n\n        if mio0 is not None:\n            image = subprocess.run(\n                [\n                    \"./tools/sm64tools/mio0\",\n                    \"-d\",\n                    \"-o\",\n                    str(mio0),\n                    \"baserom.\" + lang + \".z64\",\n                    \"-\",\n                ],\n                check=True,\n                stdout=subprocess.PIPE,\n            ).stdout\n        else:\n            image = roms[lang]\n\n        for (asset, pos, size, meta) in assets:\n            print(\"extracting\", asset)\n            input = image[pos : pos + size]\n            os.makedirs(os.path.dirname(asset), exist_ok=True)\n            if asset.endswith(\".png\"):\n                png_file = tempfile.NamedTemporaryFile(prefix=\"asset\", delete=False)\n                try:\n                    png_file.write(input)\n                    png_file.flush()\n                    png_file.close()\n                    if asset.startswith(\"textures/skyboxes/\") or asset.startswith(\"levels/ending/cake\"):\n                        if asset.startswith(\"textures/skyboxes/\"):\n                            imagetype = \"sky\"\n                        else:\n                            imagetype = \"cake\" + (\"-cn\" if \"cn\" in asset else \"-eu\" if \"eu\" in asset else \"\")\n                        print(imagetype, png_file.name, asset)\n                        subprocess.run(\n                            [\n                                \"./tools/skyconv\",\n                                \"--type\",\n                                imagetype,\n                                \"--combine\",\n                                png_file.name,\n                                asset,\n                            ],\n                            check=True,\n                        )\n                    else:\n                        w, h = meta\n                        fmt = asset.split(\".\")[-2]\n                        subprocess.run(\n                            [\n                                \"./tools/sm64tools/n64graphics\",\n                                \"-e\",\n                                png_file.name,\n                                \"-g\",\n                                asset,\n                                \"-f\",\n                                fmt,\n                                \"-w\",\n                                str(w),\n                                \"-h\",\n                                str(h),\n                            ],\n                            check=True,\n                        )\n                finally:\n                    png_file.close()\n                    os.remove(png_file.name)\n            else:\n                with open(asset, \"wb\") as f:\n                    f.write(input)\n\n    # Remove old assets\n    for asset in previous_assets:\n        if asset not in new_assets:\n            try:\n                remove_file(asset)\n            except FileNotFoundError:\n                pass\n\n    # Replace the asset list\n    output = \"\\n\".join(\n        [\n            \"# This file tracks the assets currently extracted by extract_assets.py.\",\n            str(new_version),\n            *sorted(list(new_assets)),\n            \"\",\n        ]\n    )\n    with open(\".assets-local.txt\", \"w\") as f:\n        f.write(output)\n\n\nmain()\n"
  },
  {
    "path": "first-diff.py",
    "content": "#!/usr/bin/env python3\nimport os.path\nimport argparse\nfrom subprocess import check_call\n\n# TODO: -S argument for shifted ROMs\n\nparser = argparse.ArgumentParser(\n    description=\"find the first difference(s) between the compiled ROM and the baserom\"\n)\nversionGroup = parser.add_mutually_exclusive_group()\nversionGroup.add_argument(\n    \"-j\",\n    \"--jp\",\n    help=\"use original Japanese version\",\n    action=\"store_const\",\n    const=\"jp\",\n    dest=\"version\",\n)\nversionGroup.add_argument(\n    \"-u\",\n    \"--us\",\n    help=\"use United States version\",\n    action=\"store_const\",\n    const=\"us\",\n    dest=\"version\",\n)\nversionGroup.add_argument(\n    \"-e\",\n    \"--eu\",\n    help=\"use European (PAL) version\",\n    action=\"store_const\",\n    const=\"eu\",\n    dest=\"version\",\n)\nversionGroup.add_argument(\n    \"-s\",\n    \"--sh\",\n    help=\"use Shindou (Rumble) version\",\n    action=\"store_const\",\n    const=\"sh\",\n    dest=\"version\",\n)\nversionGroup.add_argument(\n    \"-c\",\n    \"--cn\",\n    help=\"use iQue (Chinese) version\",\n    action=\"store_const\",\n    const=\"cn\",\n    dest=\"version\",\n)\nparser.add_argument(\n    \"-m\", \"--make\", help=\"run make before finding difference(s)\", action=\"store_true\"\n)\nparser.add_argument(\n    \"--count\",\n    type=int,\n    default=1,\n    help=\"find up to this many instruction difference(s)\",\n)\nparser.add_argument(\n    \"-n\", \"--by-name\", type=str, default=\"\", help=\"perform a symbol or address lookup\"\n)\nparser.add_argument(\n    \"-d\", \"--diff\", action=\"store_true\", help=\"run ./diff.py on the result\"\n)\nargs = parser.parse_args()\ndiff_count = args.count\n\nversion = args.version\n\nif version is None:\n    version = \"us\"\n    best = 0\n    for ver in [\"us\", \"jp\", \"eu\", \"sh\"]:\n        try:\n            mtime = os.path.getmtime(f\"build/{ver}/sm64.{ver}.z64\")\n            if mtime > best:\n                best = mtime\n                version = ver\n        except Exception:\n            pass\n    print(\"Assuming version \" + version)\n\nif args.make:\n    check_call([\"make\", \"-j4\", \"VERSION=\" + version, \"COMPARE=0\"])\n\nbaseimg = f\"baserom.{version}.z64\"\nbasemap = f\"sm64.{version}.map\"\n\nmyimg = f\"build/{version}/sm64.{version}.z64\"\nmymap = f\"build/{version}/{basemap}\"\n\nif os.path.isfile(\"expected/\" + mymap):\n    basemap = \"expected/\" + mymap\n\nrequired_files = [baseimg, myimg, mymap]\nif not os.path.isfile(baseimg):\n    print(baseimg + \" must exist.\")\n    exit(1)\nif not os.path.isfile(myimg) or not os.path.isfile(mymap):\n    print(\n        myimg\n        + \" and \"\n        + mymap\n        + \" must exist. Try rerunning with --make to build them.\"\n    )\n    exit(1)\n\nmybin = open(myimg, \"rb\").read()\nbasebin = open(baseimg, \"rb\").read()\n\nif len(mybin) != len(basebin):\n    print(\"Modified ROM has different size...\")\n    exit(1)\n\nif mybin == basebin:\n    print(\"No differences!\")\n    if not args.by_name:\n        exit(0)\n\n\ndef search_map(rom_addr):\n    ram_offset = None\n    last_ram = 0\n    last_rom = 0\n    last_fn = \"<start of rom>\"\n    last_file = \"<no file>\"\n    prev_line = \"\"\n    with open(mymap) as f:\n        for line in f:\n            if \"load address\" in line:\n                # Example: \".boot           0x0000000004000000     0x1000 load address 0x0000000000000000\"\n                if \"noload\" in line or \"noload\" in prev_line:\n                    ram_offset = None\n                    continue\n                ram = int(line[16 : 16 + 18], 0)\n                rom = int(line[59 : 59 + 18], 0)\n                ram_offset = ram - rom\n                continue\n            prev_line = line\n\n            if (\n                ram_offset is None\n                or \"=\" in line\n                or \"*fill*\" in line\n                or \" 0x\" not in line\n            ):\n                continue\n            ram = int(line[16 : 16 + 18], 0)\n            rom = ram - ram_offset\n            fn = line.split()[-1]\n            if \"0x\" in fn:\n                ram_offset = None\n                continue\n            if rom > rom_addr or (rom_addr & 0x80000000 and ram > rom_addr):\n                return f\"in {last_fn} (ram 0x{last_ram:08x}, rom 0x{last_rom:06x}, {last_file})\"\n            last_ram = ram\n            last_rom = rom\n            last_fn = fn\n            if \"/\" in fn:\n                last_file = fn\n    return \"at end of rom?\"\n\n\ndef parse_map(fname):\n    ram_offset = None\n    cur_file = \"<no file>\"\n    syms = {}\n    prev_sym = None\n    prev_line = \"\"\n    with open(fname) as f:\n        for line in f:\n            if \"load address\" in line:\n                if \"noload\" in line or \"noload\" in prev_line:\n                    ram_offset = None\n                    continue\n                ram = int(line[16 : 16 + 18], 0)\n                rom = int(line[59 : 59 + 18], 0)\n                ram_offset = ram - rom\n                continue\n            prev_line = line\n\n            if (\n                ram_offset is None\n                or \"=\" in line\n                or \"*fill*\" in line\n                or \" 0x\" not in line\n            ):\n                continue\n            ram = int(line[16 : 16 + 18], 0)\n            rom = ram - ram_offset\n            fn = line.split()[-1]\n            if \"0x\" in fn:\n                ram_offset = None\n            elif \"/\" in fn:\n                cur_file = fn\n            else:\n                syms[fn] = (rom, cur_file, prev_sym, ram)\n                prev_sym = fn\n    return syms\n\n\ndef map_diff():\n    map1 = parse_map(mymap)\n    map2 = parse_map(basemap)\n    min_ram = None\n    found = None\n    for sym, addr in map1.items():\n        if sym not in map2:\n            continue\n        if addr[0] != map2[sym][0]:\n            if min_ram is None or addr[0] < min_ram:\n                min_ram = addr[0]\n                found = (sym, addr[1], addr[2])\n    if min_ram is None:\n        return False\n    else:\n        print()\n        print(\n            f\"Map appears to have shifted just before {found[0]} ({found[1]}) -- in {found[2]}?\"\n        )\n        if found[2] is not None and found[2] not in map2:\n            print()\n            print(\n                f\"(Base map file {basemap} out of date due to renamed symbols, so result may be imprecise.)\"\n            )\n        return True\n\n\ndef hexbytes(bs):\n    return \":\".join(\"{:02x}\".format(c) for c in bs)\n\n\n# For convenience, allow `./first-diff.py <ROM addr | RAM addr | function name>`\n# to do a symbol <-> address lookup. This should really be split out into a\n# separate script...\nif args.by_name:\n    try:\n        addr = int(args.by_name, 0)\n        print(args.by_name, \"is\", search_map(addr))\n    except ValueError:\n        m = parse_map(mymap)\n        try:\n            print(\n                args.by_name,\n                \"is at position\",\n                hex(m[args.by_name][0]),\n                \"in ROM,\",\n                hex(m[args.by_name][3]),\n                \"in RAM\",\n            )\n        except KeyError:\n            print(\"function\", args.by_name, \"not found\")\n    exit()\n\nfound_instr_diff = []\nmap_search_diff = []\ndiffs = 0\nshift_cap = 1000\nfor i in range(24, len(mybin), 4):\n    # (mybin[i:i+4] != basebin[i:i+4], but that's slightly slower in CPython...)\n    if diffs <= shift_cap and (\n        mybin[i] != basebin[i]\n        or mybin[i + 1] != basebin[i + 1]\n        or mybin[i + 2] != basebin[i + 2]\n        or mybin[i + 3] != basebin[i + 3]\n    ):\n        if diffs == 0:\n            print(f\"First difference at ROM addr {hex(i)}, {search_map(i)}\")\n            print(\n                f\"Bytes: {hexbytes(mybin[i : i + 4])} vs {hexbytes(basebin[i : i + 4])}\"\n            )\n        diffs += 1\n    if (\n        len(found_instr_diff) < diff_count\n        and mybin[i] >> 2 != basebin[i] >> 2\n        and not search_map(i) in map_search_diff\n    ):\n        found_instr_diff.append(i)\n        map_search_diff.append(search_map(i))\nif diffs == 0:\n    print(\"No differences!\")\n    if not args.by_name:\n        exit()\ndefinite_shift = diffs > shift_cap\nif not definite_shift:\n    print(str(diffs) + \" differing word(s).\")\n\nif diffs > 100:\n    if len(found_instr_diff) > 0:\n        for i in found_instr_diff:\n            print(f\"Instruction difference at ROM addr {hex(i)}, {search_map(i)}\")\n            print(\n                f\"Bytes: {hexbytes(mybin[i : i + 4])} vs {hexbytes(basebin[i : i + 4])}\"\n            )\n    if version == \"sh\":\n        print(\"Shifted ROM, as expected.\")\n    else:\n        if not os.path.isfile(basemap):\n            if definite_shift:\n                print(\"Tons of differences, must be a shifted ROM.\")\n            print(\n                \"To find ROM shifts, copy a clean .map file to \"\n                + basemap\n                + \" and rerun this script.\"\n            )\n            exit()\n\n        if not map_diff():\n            print(f\"No ROM shift{' (!?)' if definite_shift else ''}\")\nif args.diff:\n    diff_args = input(\"Call ./diff.py with which arguments? \") or \"--\"\n    if diff_args[0] != \"-\":\n        diff_args = \"-\" + diff_args\n    if \"w\" in diff_args and args.make:\n        diff_args += \"m\"  # To avoid warnings when passing -w, also pass -m as long as -m was passed to first-diff itself\n\n    check_call(\n        [\n            \"python3\",\n            \"diff.py\",\n            f\"-{version[0]}\",\n            diff_args,\n            search_map(found_instr_diff[0]).split()[1],\n        ]\n    )\n"
  },
  {
    "path": "format.sh",
    "content": "#!/usr/bin/env bash\nshopt -s globstar\nif (( $# > 0 )); then\n    printf \"formatting file(s) $*\"\n    echo\n    clang-format -i -style=file \"$@\"\n    echo done.\n    exit\nfi\necho formatting...\nclang-format -i -style=file src/**/*.c # src\nclang-format -i -style=file lib/src/*.c # libultra\nclang-format -i -style=file enhancements/*.inc.c # enhancements\necho done.\n"
  },
  {
    "path": "include/PR/R4300.h",
    "content": "/**************************************************************************\n *\t\t\t\t\t\t\t\t\t  *\n *\t\t Copyright (C) 1995, Silicon Graphics, Inc.\t\t  *\n *\t\t\t\t\t\t\t\t\t  *\n *  These coded instructions, statements, and computer programs  contain  *\n *  unpublished  proprietary  information of Silicon Graphics, Inc., and  *\n *  are protected by Federal copyright law.  They  may  not be disclosed  *\n *  to  third  parties  or copied or duplicated in any form, in whole or  *\n *  in part, without the prior written consent of Silicon Graphics, Inc.  *\n *\t\t\t\t\t\t\t\t\t  *\n **************************************************************************/\n\n/**************************************************************************\n *\n *  $Revision: 1.13 $\n *  $Date: 1997/02/11 08:15:34 $\n *  $Source: /disk6/Master/cvsmdev2/PR/include/R4300.h,v $\n *\n **************************************************************************/\n\n#ifndef __R4300_H__\n#define __R4300_H__\n\n#include <PR/ultratypes.h>\n\n/*\n * Segment base addresses and sizes\n */\n#define\tKUBASE\t\t0\n#define\tKUSIZE\t\t0x80000000\n#define\tK0BASE\t\t0x80000000\n#define\tK0SIZE\t\t0x20000000\n#define\tK1BASE\t\t0xA0000000\n#define\tK1SIZE\t\t0x20000000\n#define\tK2BASE\t\t0xC0000000\n#define\tK2SIZE\t\t0x20000000\n\n/*\n * Exception vectors\n */\n#define SIZE_EXCVEC\t0x80\t\t\t/* Size of an exc. vec */\n#define\tUT_VEC\t\tK0BASE\t\t\t/* utlbmiss vector */\n#define\tR_VEC\t\t(K1BASE+0x1fc00000)\t/* reset vector */\n#define\tXUT_VEC\t\t(K0BASE+0x80)\t\t/* extended address tlbmiss */\n#define\tECC_VEC\t\t(K0BASE+0x100)\t\t/* Ecc exception vector */\n#define\tE_VEC\t\t(K0BASE+0x180)\t\t/* Gen. exception vector */\n\n/*\n * Address conversion macros\n */\n#ifdef _LANGUAGE_ASSEMBLY\n\n#define\tK0_TO_K1(x)\t((x)|0xA0000000)\t/* kseg0 to kseg1 */\n#define\tK1_TO_K0(x)\t((x)&0x9FFFFFFF)\t/* kseg1 to kseg0 */\n#define\tK0_TO_PHYS(x)\t((x)&0x1FFFFFFF)\t/* kseg0 to physical */\n#define\tK1_TO_PHYS(x)\t((x)&0x1FFFFFFF)\t/* kseg1 to physical */\n#define\tKDM_TO_PHYS(x)\t((x)&0x1FFFFFFF)\t/* direct mapped to physical */\n#define\tPHYS_TO_K0(x)\t((x)|0x80000000)\t/* physical to kseg0 */\n#define\tPHYS_TO_K1(x)\t((x)|0xA0000000)\t/* physical to kseg1 */\n\n#else /* _LANGUAGE_C */\n\n#define\tK0_TO_K1(x)\t((u32)(x)|0xA0000000)\t/* kseg0 to kseg1 */\n#define\tK1_TO_K0(x)\t((u32)(x)&0x9FFFFFFF)\t/* kseg1 to kseg0 */\n#define\tK0_TO_PHYS(x)\t((u32)(x)&0x1FFFFFFF)\t/* kseg0 to physical */\n#define\tK1_TO_PHYS(x)\t((u32)(x)&0x1FFFFFFF)\t/* kseg1 to physical */\n#define\tKDM_TO_PHYS(x)\t((u32)(x)&0x1FFFFFFF)\t/* direct mapped to physical */\n#define\tPHYS_TO_K0(x)\t((u32)(x)|0x80000000)\t/* physical to kseg0 */\n#define\tPHYS_TO_K1(x)\t((u32)(x)|0xA0000000)\t/* physical to kseg1 */\n\n#endif\t/* _LANGUAGE_ASSEMBLY */\n\n/*\n * Address predicates\n */\n#define\tIS_KSEG0(x)\t((u32)(x) >= K0BASE && (u32)(x) < K1BASE)\n#define\tIS_KSEG1(x)\t((u32)(x) >= K1BASE && (u32)(x) < K2BASE)\n#define\tIS_KSEGDM(x)\t((u32)(x) >= K0BASE && (u32)(x) < K2BASE)\n#define\tIS_KSEG2(x)\t((u32)(x) >= K2BASE && (u32)(x) < KPTE_SHDUBASE)\n#define\tIS_KPTESEG(x)\t((u32)(x) >= KPTE_SHDUBASE)\n#define\tIS_KUSEG(x)\t((u32)(x) < K0BASE)\n\n/*\n * TLB size constants\n */\n\n#define\tNTLBENTRIES\t31\t/* entry 31 is reserved by rdb */\n\n#define\tTLBHI_VPN2MASK\t\t0xffffe000\n#define\tTLBHI_VPN2SHIFT\t\t13\n#define\tTLBHI_PIDMASK\t\t0xff\n#define\tTLBHI_PIDSHIFT\t\t0\n#define\tTLBHI_NPID\t\t255\t\t/* 255 to fit in 8 bits */\n\n#define\tTLBLO_PFNMASK\t\t0x3fffffc0\n#define\tTLBLO_PFNSHIFT\t\t6\n#define\tTLBLO_CACHMASK\t\t0x38\t\t/* cache coherency algorithm */\n#define TLBLO_CACHSHIFT\t\t3\n#define TLBLO_UNCACHED\t\t0x10\t\t/* not cached */\n#define TLBLO_NONCOHRNT\t\t0x18\t\t/* Cacheable non-coherent */\n#define TLBLO_EXLWR\t\t0x28\t\t/* Exclusive write */\n#define\tTLBLO_D\t\t\t0x4\t\t/* writeable */\n#define\tTLBLO_V\t\t\t0x2\t\t/* valid bit */\n#define\tTLBLO_G\t\t\t0x1\t\t/* global access bit */\n\n#define\tTLBINX_PROBE\t\t0x80000000\n#define\tTLBINX_INXMASK\t\t0x3f\n#define\tTLBINX_INXSHIFT\t\t0\n\n#define\tTLBRAND_RANDMASK\t0x3f\n#define\tTLBRAND_RANDSHIFT\t0\n\n#define\tTLBWIRED_WIREDMASK\t0x3f\n\n#define\tTLBCTXT_BASEMASK\t0xff800000\n#define\tTLBCTXT_BASESHIFT\t23\n#define TLBCTXT_BASEBITS\t9\n\n#define\tTLBCTXT_VPNMASK\t\t0x7ffff0\n#define\tTLBCTXT_VPNSHIFT\t4\n\n#define TLBPGMASK_4K\t\t0x0\n#define TLBPGMASK_16K\t\t0x6000\n#define TLBPGMASK_64K\t\t0x1e000\n\n/*\n * Status register\n */\n#define\tSR_CUMASK\t0xf0000000\t/* coproc usable bits */\n\n#define\tSR_CU3\t\t0x80000000\t/* Coprocessor 3 usable */\n#define\tSR_CU2\t\t0x40000000\t/* Coprocessor 2 usable */\n#define\tSR_CU1\t\t0x20000000\t/* Coprocessor 1 usable */\n#define\tSR_CU0\t\t0x10000000\t/* Coprocessor 0 usable */\n#define\tSR_RP\t\t0x08000000\t/* Reduced power (quarter speed) */\n#define\tSR_FR\t\t0x04000000\t/* MIPS III FP register mode */\n#define\tSR_RE\t\t0x02000000\t/* Reverse endian */\n#define\tSR_ITS\t\t0x01000000\t/* Instruction trace support */\n#define\tSR_BEV\t\t0x00400000\t/* Use boot exception vectors */\n#define\tSR_TS\t\t0x00200000\t/* TLB shutdown */\n#define\tSR_SR\t\t0x00100000\t/* Soft reset occured */\n#define\tSR_CH\t\t0x00040000\t/* Cache hit for last 'cache' op */\n#define\tSR_CE\t\t0x00020000\t/* Create ECC */\n#define\tSR_DE\t\t0x00010000\t/* ECC of parity does not cause error */\n\n/*\n * Interrupt enable bits\n * (NOTE: bits set to 1 enable the corresponding level interrupt)\n */\n#define\tSR_IMASK\t0x0000ff00\t/* Interrupt mask */\n#define\tSR_IMASK8\t0x00000000\t/* mask level 8 */\n#define\tSR_IMASK7\t0x00008000\t/* mask level 7 */\n#define\tSR_IMASK6\t0x0000c000\t/* mask level 6 */\n#define\tSR_IMASK5\t0x0000e000\t/* mask level 5 */\n#define\tSR_IMASK4\t0x0000f000\t/* mask level 4 */\n#define\tSR_IMASK3\t0x0000f800\t/* mask level 3 */\n#define\tSR_IMASK2\t0x0000fc00\t/* mask level 2 */\n#define\tSR_IMASK1\t0x0000fe00\t/* mask level 1 */\n#define\tSR_IMASK0\t0x0000ff00\t/* mask level 0 */\n\n#define\tSR_IBIT8\t0x00008000\t/* bit level 8 */\n#define\tSR_IBIT7\t0x00004000\t/* bit level 7 */\n#define\tSR_IBIT6\t0x00002000\t/* bit level 6 */\n#define\tSR_IBIT5\t0x00001000\t/* bit level 5 */\n#define\tSR_IBIT4\t0x00000800\t/* bit level 4 */\n#define\tSR_IBIT3\t0x00000400\t/* bit level 3 */\n#define\tSR_IBIT2\t0x00000200\t/* bit level 2 */\n#define\tSR_IBIT1\t0x00000100\t/* bit level 1 */\n\n#define\tSR_IMASKSHIFT\t8\n\n#define\tSR_KX\t\t0x00000080\t/* extended-addr TLB vec in kernel */\n#define\tSR_SX\t\t0x00000040\t/* xtended-addr TLB vec supervisor */\n#define\tSR_UX\t\t0x00000020\t/* xtended-addr TLB vec in user mode */\n#define\tSR_KSU_MASK\t0x00000018\t/* mode mask */\n#define\tSR_KSU_USR\t0x00000010\t/* user mode */\n#define\tSR_KSU_SUP\t0x00000008\t/* supervisor mode */\n#define\tSR_KSU_KER\t0x00000000\t/* kernel mode */\n#define\tSR_ERL\t\t0x00000004\t/* Error level, 1=>cache error */\n#define\tSR_EXL\t\t0x00000002\t/* Exception level, 1=>exception */\n#define\tSR_IE\t\t0x00000001\t/* interrupt enable, 1=>enable */\n\n/*\n * Cause Register\n */\n#define\tCAUSE_BD\t0x80000000\t/* Branch delay slot */\n#define\tCAUSE_CEMASK\t0x30000000\t/* coprocessor error */\n#define\tCAUSE_CESHIFT\t28\n\n/* Interrupt pending bits */\n#define\tCAUSE_IP8\t0x00008000\t/* External level 8 pending - COMPARE */\n#define\tCAUSE_IP7\t0x00004000\t/* External level 7 pending - INT4 */\n#define\tCAUSE_IP6\t0x00002000\t/* External level 6 pending - INT3 */\n#define\tCAUSE_IP5\t0x00001000\t/* External level 5 pending - INT2 */\n#define\tCAUSE_IP4\t0x00000800\t/* External level 4 pending - INT1 */\n#define\tCAUSE_IP3\t0x00000400\t/* External level 3 pending - INT0 */\n#define\tCAUSE_SW2\t0x00000200\t/* Software level 2 pending */\n#define\tCAUSE_SW1\t0x00000100\t/* Software level 1 pending */\n\n#define\tCAUSE_IPMASK\t0x0000FF00\t/* Pending interrupt mask */\n#define\tCAUSE_IPSHIFT\t8\n\n#define\tCAUSE_EXCMASK\t0x0000007C\t/* Cause code bits */\n\n#define\tCAUSE_EXCSHIFT\t2\n\n/* Cause register exception codes */\n\n#define\tEXC_CODE(x)\t((x)<<2)\n\n/* Hardware exception codes */\n#define\tEXC_INT\t\tEXC_CODE(0)\t/* interrupt */\n#define\tEXC_MOD\t\tEXC_CODE(1)\t/* TLB mod */\n#define\tEXC_RMISS\tEXC_CODE(2)\t/* Read TLB Miss */\n#define\tEXC_WMISS\tEXC_CODE(3)\t/* Write TLB Miss */\n#define\tEXC_RADE\tEXC_CODE(4)\t/* Read Address Error */\n#define\tEXC_WADE\tEXC_CODE(5)\t/* Write Address Error */\n#define\tEXC_IBE\t\tEXC_CODE(6)\t/* Instruction Bus Error */\n#define\tEXC_DBE\t\tEXC_CODE(7)\t/* Data Bus Error */\n#define\tEXC_SYSCALL\tEXC_CODE(8)\t/* SYSCALL */\n#define\tEXC_BREAK\tEXC_CODE(9)\t/* BREAKpoint */\n#define\tEXC_II\t\tEXC_CODE(10)\t/* Illegal Instruction */\n#define\tEXC_CPU\t\tEXC_CODE(11)\t/* CoProcessor Unusable */\n#define\tEXC_OV\t\tEXC_CODE(12)\t/* OVerflow */\n#define\tEXC_TRAP\tEXC_CODE(13)\t/* Trap exception */\n#define\tEXC_VCEI\tEXC_CODE(14)\t/* Virt. Coherency on Inst. fetch */\n#define\tEXC_FPE\t\tEXC_CODE(15)\t/* Floating Point Exception */\n#define\tEXC_WATCH\tEXC_CODE(23)\t/* Watchpoint reference */\n#define\tEXC_VCED\tEXC_CODE(31)\t/* Virt. Coherency on data read */\n\n/* C0_PRID Defines */\n#define\tC0_IMPMASK\t0xff00\n#define\tC0_IMPSHIFT\t8\n#define C0_REVMASK\t0xff\n#define C0_MAJREVMASK\t0xf0\n#define\tC0_MAJREVSHIFT\t4\n#define C0_MINREVMASK\t0xf\n\n/*\n * Coprocessor 0 operations\n */\n#define\tC0_READI  0x1\t\t/* read ITLB entry addressed by C0_INDEX */\n#define\tC0_WRITEI 0x2\t\t/* write ITLB entry addressed by C0_INDEX */\n#define\tC0_WRITER 0x6\t\t/* write ITLB entry addressed by C0_RAND */\n#define\tC0_PROBE  0x8\t\t/* probe for ITLB entry addressed by TLBHI */\n#define\tC0_RFE\t  0x10\t\t/* restore for exception */\n\n/*\n * 'cache' instruction definitions\n */\n\n/* Target cache */\n#define\tCACH_PI\t\t0x0\t/* specifies primary inst. cache */\n#define\tCACH_PD\t\t0x1\t/* primary data cache */\n#define\tCACH_SI\t\t0x2\t/* secondary instruction cache */\n#define\tCACH_SD\t\t0x3\t/* secondary data cache */\n\n/* Cache operations */\n#define\tC_IINV\t\t0x0\t/* index invalidate (inst, 2nd inst) */\n#define\tC_IWBINV\t0x0\t/* index writeback inval (d, sd) */\n#define\tC_ILT\t\t0x4\t/* index load tag (all) */\n#define\tC_IST\t\t0x8\t/* index store tag (all) */\n#define\tC_CDX\t\t0xc\t/* create dirty exclusive (d, sd) */\n#define\tC_HINV\t\t0x10\t/* hit invalidate (all) */\n#define\tC_HWBINV\t0x14\t/* hit writeback inv. (d, sd) */\n#define\tC_FILL\t\t0x14\t/* fill (i) */\n#define\tC_HWB\t\t0x18\t/* hit writeback (i, d, sd) */\n#define\tC_HSV\t\t0x1c\t/* hit set virt. (si, sd) */\n\n/*\n * Cache size definitions\n */\n#define\tICACHE_SIZE\t\t0x4000\t\t\t/* 16K */\n#define\tICACHE_LINESIZE\t\t32\t\t\t/* 8 words */\n#define\tICACHE_LINEMASK\t\t(ICACHE_LINESIZE-1)\n\n#define\tDCACHE_SIZE\t\t0x2000\t\t\t/* 8K */\n#define\tDCACHE_LINESIZE\t\t16\t\t\t/* 4 words */\n#define\tDCACHE_LINEMASK\t\t(DCACHE_LINESIZE-1)\n\n/*\n * C0_CONFIG register definitions\n */\n#define\tCONFIG_CM\t0x80000000\t/* 1 == Master-Checker enabled */\n#define\tCONFIG_EC\t0x70000000\t/* System Clock ratio */\n#define\tCONFIG_EC_1_1\t0x6\t\t/* System Clock ratio 1 :1 */\n#define\tCONFIG_EC_3_2\t0x7\t\t/* System Clock ratio 1.5 :1 */\n#define\tCONFIG_EC_2_1\t0x0\t\t/* System Clock ratio 2 :1 */\n#define\tCONFIG_EC_3_1\t0x1\t\t/* System Clock ratio 3 :1 */\n#define\tCONFIG_EP\t0x0f000000\t/* Transmit Data Pattern */\n#define\tCONFIG_SB\t0x00c00000\t/* Secondary cache block size */\n\n#define\tCONFIG_SS\t0x00200000\t/* Split scache: 0 == I&D combined */\n#define\tCONFIG_SW\t0x00100000\t/* scache port: 0==128, 1==64 */\n#define\tCONFIG_EW\t0x000c0000\t/* System Port width: 0==64, 1==32 */\n#define\tCONFIG_SC\t0x00020000\t/* 0 -> 2nd cache present */\n#define\tCONFIG_SM\t0x00010000\t/* 0 -> Dirty Shared Coherency enabled*/\n#define\tCONFIG_BE\t0x00008000\t/* Endian-ness: 1 --> BE */\n#define\tCONFIG_EM\t0x00004000\t/* 1 -> ECC mode, 0 -> parity */\n#define\tCONFIG_EB\t0x00002000\t/* Block order:1->sequent,0->subblock */\n\n#define\tCONFIG_IC\t0x00000e00\t/* Primary Icache size */\n#define\tCONFIG_DC\t0x000001c0\t/* Primary Dcache size */\n#define\tCONFIG_IB\t0x00000020\t/* Icache block size */\n#define\tCONFIG_DB\t0x00000010\t/* Dcache block size */\n#define\tCONFIG_CU\t0x00000008\t/* Update on Store-conditional */\n#define\tCONFIG_K0\t0x00000007\t/* K0SEG Coherency algorithm */\n\n#define\tCONFIG_UNCACHED\t\t0x00000002\t/* K0 is uncached */\n#define\tCONFIG_NONCOHRNT\t0x00000003\n#define\tCONFIG_COHRNT_EXLWR\t0x00000005\n#define\tCONFIG_SB_SHFT\t22\t\t/* shift SB to bit position 0 */\n#define\tCONFIG_IC_SHFT\t9\t\t/* shift IC to bit position 0 */\n#define\tCONFIG_DC_SHFT\t6\t\t/* shift DC to bit position 0 */\n#define\tCONFIG_BE_SHFT\t15\t\t/* shift BE to bit position 0 */\n\n/*\n * C0_TAGLO definitions for setting/getting cache states and physaddr bits\n */\n#define SADDRMASK  \t0xFFFFE000\t/* 31..13 -> scache paddr bits 35..17 */\n#define SVINDEXMASK\t0x00000380\t/* 9..7: prim virt index bits 14..12 */\n#define SSTATEMASK\t0x00001c00\t/* bits 12..10 hold scache line state */\n#define SINVALID\t0x00000000\t/* invalid --> 000 == state 0 */\n#define SCLEANEXCL\t0x00001000\t/* clean exclusive --> 100 == state 4 */\n#define SDIRTYEXCL\t0x00001400\t/* dirty exclusive --> 101 == state 5 */\n#define SECC_MASK\t0x0000007f\t/* low 7 bits are ecc for the tag */\n#define SADDR_SHIFT\t4\t\t/* shift STagLo (31..13) to 35..17 */\n\n#define PADDRMASK\t0xFFFFFF00\t/* PTagLo31..8->prim paddr bits35..12 */\n#define PADDR_SHIFT\t4\t\t/* roll bits 35..12 down to 31..8 */\n#define PSTATEMASK\t0x00C0\t\t/* bits 7..6 hold primary line state */\n#define PINVALID\t0x0000\t\t/* invalid --> 000 == state 0 */\n#define PCLEANEXCL\t0x0080\t\t/* clean exclusive --> 10 == state 2 */\n#define PDIRTYEXCL\t0x00C0\t\t/* dirty exclusive --> 11 == state 3 */\n#define PPARITY_MASK\t0x0001\t\t/* low bit is parity bit (even). */\n\n/*\n * C0_CACHE_ERR definitions.\n */\n#define\tCACHERR_ER\t\t0x80000000\t/* 0: inst ref, 1: data ref */\n#define\tCACHERR_EC\t\t0x40000000\t/* 0: primary, 1: secondary */\n#define\tCACHERR_ED\t\t0x20000000\t/* 1: data error */\n#define\tCACHERR_ET\t\t0x10000000\t/* 1: tag error */\n#define\tCACHERR_ES\t\t0x08000000\t/* 1: external ref, e.g. snoop*/\n#define\tCACHERR_EE\t\t0x04000000\t/* error on SysAD bus */\n#define\tCACHERR_EB\t\t0x02000000\t/* complicated, see spec. */\n#define\tCACHERR_EI\t\t0x01000000\t/* complicated, see spec. */\n#define\tCACHERR_SIDX_MASK\t0x003ffff8\t/* secondary cache index */\n#define\tCACHERR_PIDX_MASK\t0x00000007\t/* primary cache index */\n#define CACHERR_PIDX_SHIFT\t12\t\t/* bits 2..0 are paddr14..12 */\n\n/* R4000 family supports hardware watchpoints:\n *   C0_WATCHLO:\n *     bits 31..3 are bits 31..3 of physaddr to watch\n *     bit 2:  reserved; must be written as 0.\n *     bit 1:  when set causes a watchpoint trap on load accesses to paddr.\n *     bit 0:  when set traps on stores to paddr;\n *   C0_WATCHHI\n *     bits 31..4 are reserved and must be written as zeros.\n *     bits 3..0 are bits 35..32 of the physaddr to watch\n */\n#define WATCHLO_WTRAP           0x00000001\n#define WATCHLO_RTRAP           0x00000002\n#define WATCHLO_ADDRMASK        0xfffffff8\n#define WATCHLO_VALIDMASK       0xfffffffb\n#define WATCHHI_VALIDMASK       0x0000000f\n\n/*\n * Coprocessor 0 registers\n */\n#ifdef _LANGUAGE_ASSEMBLY\n#define\tC0_INX\t\t$0\n#define\tC0_RAND\t\t$1\n#define\tC0_ENTRYLO0\t$2\n#define\tC0_ENTRYLO1\t$3\n#define\tC0_CONTEXT\t$4\n#define\tC0_PAGEMASK\t$5\t\t/* page mask */\n#define\tC0_WIRED\t$6\t\t/* # wired entries in tlb */\n#define\tC0_BADVADDR\t$8\n#define\tC0_COUNT\t$9\t\t/* free-running counter */\n#define\tC0_ENTRYHI\t$10\n#define\tC0_SR\t\t$12\n#define\tC0_CAUSE\t$13\n#define\tC0_EPC\t\t$14\n#define\tC0_PRID\t\t$15\t\t/* revision identifier */\n#define\tC0_COMPARE\t$11\t\t/* counter comparison reg. */\n#define\tC0_CONFIG\t$16\t\t/* hardware configuration */\n#define\tC0_LLADDR\t$17\t\t/* load linked address */\n#define\tC0_WATCHLO\t$18\t\t/* watchpoint */\n#define\tC0_WATCHHI\t$19\t\t/* watchpoint */\n#define\tC0_ECC\t\t$26\t\t/* S-cache ECC and primary parity */\n#define\tC0_CACHE_ERR\t$27\t\t/* cache error status */\n#define\tC0_TAGLO\t$28\t\t/* cache operations */\n#define\tC0_TAGHI\t$29\t\t/* cache operations */\n#define\tC0_ERROR_EPC\t$30\t\t/* ECC error prg. counter */\n\n# else\t/* ! _LANGUAGE_ASSEMBLY */\n\n#define\tC0_INX\t\t0\n#define\tC0_RAND\t\t1\n#define\tC0_ENTRYLO0\t2\n#define\tC0_ENTRYLO1\t3\n#define\tC0_CONTEXT\t4\n#define\tC0_PAGEMASK\t5\t\t/* page mask */\n#define\tC0_WIRED\t6\t\t/* # wired entries in tlb */\n#define\tC0_BADVADDR\t8\n#define\tC0_COUNT\t9\t\t/* free-running counter */\n#define\tC0_ENTRYHI\t10\n#define\tC0_SR\t\t12\n#define\tC0_CAUSE\t13\n#define\tC0_EPC\t\t14\n#define\tC0_PRID\t\t15\t\t/* revision identifier */\n#define\tC0_COMPARE\t11\t\t/* counter comparison reg. */\n#define\tC0_CONFIG\t16\t\t/* hardware configuration */\n#define\tC0_LLADDR\t17\t\t/* load linked address */\n#define\tC0_WATCHLO\t18\t\t/* watchpoint */\n#define\tC0_WATCHHI\t19\t\t/* watchpoint */\n#define\tC0_ECC\t\t26\t\t/* S-cache ECC and primary parity */\n#define\tC0_CACHE_ERR\t27\t\t/* cache error status */\n#define\tC0_TAGLO\t28\t\t/* cache operations */\n#define\tC0_TAGHI\t29\t\t/* cache operations */\n#define\tC0_ERROR_EPC\t30\t\t/* ECC error prg. counter */\n\n#endif\t/* _LANGUAGE_ASSEMBLY */\n\n/*\n * floating-point status register \n */\n#define FPCSR_FS\t0x01000000\t/* flush denorm to zero */\n#define\tFPCSR_C\t\t0x00800000\t/* condition bit */\t\n#define\tFPCSR_CE\t0x00020000\t/* cause: unimplemented operation */\n#define\tFPCSR_CV\t0x00010000\t/* cause: invalid operation */\n#define\tFPCSR_CZ\t0x00008000\t/* cause: division by zero */\n#define\tFPCSR_CO\t0x00004000\t/* cause: overflow */\n#define\tFPCSR_CU\t0x00002000\t/* cause: underflow */\n#define\tFPCSR_CI\t0x00001000\t/* cause: inexact operation */\n#define\tFPCSR_EV\t0x00000800\t/* enable: invalid operation */\n#define\tFPCSR_EZ\t0x00000400\t/* enable: division by zero */\n#define\tFPCSR_EO\t0x00000200\t/* enable: overflow */\n#define\tFPCSR_EU\t0x00000100\t/* enable: underflow */\n#define\tFPCSR_EI\t0x00000080\t/* enable: inexact operation */\n#define\tFPCSR_FV\t0x00000040\t/* flag: invalid operation */\n#define\tFPCSR_FZ\t0x00000020\t/* flag: division by zero */\n#define\tFPCSR_FO\t0x00000010\t/* flag: overflow */\n#define\tFPCSR_FU\t0x00000008\t/* flag: underflow */\n#define\tFPCSR_FI\t0x00000004\t/* flag: inexact operation */\n#define\tFPCSR_RM_MASK\t0x00000003\t/* rounding mode mask */\n#define\tFPCSR_RM_RN\t0x00000000\t/* round to nearest */\n#define\tFPCSR_RM_RZ\t0x00000001\t/* round to zero */\n#define\tFPCSR_RM_RP\t0x00000002\t/* round to positive infinity */\n#define\tFPCSR_RM_RM\t0x00000003\t/* round to negative infinity */\n\n#endif /* __R4300_H */\n"
  },
  {
    "path": "include/PR/abi.h",
    "content": "#ifndef _ABI_H_\n#define _ABI_H_\n\n/**************************************************************************\n *                                                                        *\n *               Copyright (C) 1994, Silicon Graphics, Inc.               *\n *                                                                        *\n *  These coded instructions, statements, and computer programs  contain  *\n *  unpublished  proprietary  information of Silicon Graphics, Inc., and  *\n *  are protected by Federal copyright law.  They  may  not be disclosed  *\n *  to  third  parties  or copied or duplicated in any form, in whole or  *\n *  in part, without the prior written consent of Silicon Graphics, Inc.  *\n *                                                                        *\n **************************************************************************/\n\n/**************************************************************************\n *\n *  $Revision: 1.32 $\n *  $Date: 1997/02/11 08:16:37 $\n *  $Source: /exdisk2/cvs/N64OS/Master/cvsmdev2/PR/include/abi.h,v $\n *\n **************************************************************************/\n\n/*\n * Header file for the Audio Binary Interface.\n * This is included in the Media Binary Interface file\n * mbi.h.\n *\n * This file follows the framework used for graphics.\n *\n */\n\n/* Audio commands: */\n#define A_SPNOOP                0\n#define A_ADPCM                 1\n#define A_CLEARBUFF             2\n#define A_RESAMPLE              5\n#define A_SETBUFF               8\n#define A_DMEMMOVE              10\n#define A_LOADADPCM             11\n#define A_MIXER                 12\n#define A_INTERLEAVE            13\n#define A_SETLOOP               15\n\n#if !defined(VERSION_SH) && !defined(VERSION_CN)\n\n#define A_ENVMIXER              3\n#define A_LOADBUFF              4\n#define A_RESAMPLE              5\n#define A_SAVEBUFF              6\n#define A_SEGMENT               7\n#define A_SETVOL                9\n#define A_POLEF                 14\n\n#else\n\n#define A_ADDMIXER              4\n#define A_RESAMPLE_ZOH          6\n#define A_DMEMMOVE2             16\n#define A_DOWNSAMPLE_HALF       17\n#define A_ENVSETUP1             18\n#define A_ENVMIXER              19\n#define A_LOADBUFF              20\n#define A_SAVEBUFF              21\n#define A_ENVSETUP2             22\n#define A_S8DEC                 23\n#define A_HILOGAIN              24\n#define A_UNK_25                25\n#define A_DUPLICATE             26\n#define A_FILTER                27\n\n#endif\n\n#define ACMD_SIZE               32\n/*\n * Audio flags\n */\n\n#define A_INIT                  0x01\n#define A_CONTINUE              0x00\n#define A_LOOP                  0x02\n#define A_OUT                   0x02\n#define A_LEFT                  0x02\n#define A_RIGHT                 0x00\n#define A_VOL                   0x04\n#define A_RATE                  0x00\n#define A_AUX                   0x08\n#define A_NOAUX                 0x00\n#define A_MAIN                  0x00\n#define A_MIX                   0x10\n\n/*\n * BEGIN C-specific section: (typedef's)\n */\n#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)\n\n/*\n * Data Structures.\n */\n\ntypedef struct {\n    unsigned int    cmd:8;\n    unsigned int    flags:8;\n    unsigned int    gain:16;\n    unsigned int    addr;\n} Aadpcm;\n\ntypedef struct {\n    unsigned int    cmd:8;\n    unsigned int    flags:8;\n    unsigned int    gain:16;\n    unsigned int    addr;\n} Apolef;\n\ntypedef struct {\n    unsigned int    cmd:8;\n    unsigned int    flags:8;\n    unsigned int    pad1:16;\n    unsigned int    addr;\n} Aenvelope;\n\ntypedef struct {\n    unsigned int    cmd:8;\n    unsigned int    pad1:8;\n    unsigned int    dmem:16;\n    unsigned int    pad2:16;\n    unsigned int    count:16;\n} Aclearbuff;\n\ntypedef struct {\n    unsigned int    cmd:8;\n    unsigned int    pad1:8;\n    unsigned int    pad2:16;\n    unsigned int    inL:16;\n    unsigned int    inR:16;\n} Ainterleave;\n\ntypedef struct {\n    unsigned int    cmd:8;\n    unsigned int    pad1:24;\n    unsigned int    addr;\n} Aloadbuff;\n\ntypedef struct {\n    unsigned int    cmd:8;\n    unsigned int    flags:8;\n    unsigned int    pad1:16;\n    unsigned int    addr;\n} Aenvmixer;\n\ntypedef struct {\n    unsigned int    cmd:8;\n    unsigned int    flags:8;\n    unsigned int    gain:16;\n    unsigned int    dmemi:16;\n    unsigned int    dmemo:16;\n} Amixer;\n\ntypedef struct {\n    unsigned int    cmd:8;\n    unsigned int    flags:8;\n    unsigned int    dmem2:16;\n    unsigned int    addr;\n} Apan;\n\ntypedef struct {\n    unsigned int    cmd:8;\n    unsigned int    flags:8;\n    unsigned int    pitch:16;\n    unsigned int    addr;\n} Aresample;\n\ntypedef struct {\n    unsigned int    cmd:8;\n    unsigned int    flags:8;\n    unsigned int    pad1:16;\n    unsigned int    addr;\n} Areverb;\n\ntypedef struct {\n    unsigned int    cmd:8;\n    unsigned int    pad1:24;\n    unsigned int    addr;\n} Asavebuff;\n\ntypedef struct {\n    unsigned int    cmd:8;\n    unsigned int    pad1:24;\n    unsigned int    pad2:2;\n    unsigned int    number:4;\n    unsigned int    base:24;\n} Asegment;\n\ntypedef struct {\n    unsigned int    cmd:8;\n    unsigned int    flags:8;\n    unsigned int    dmemin:16;\n    unsigned int    dmemout:16;\n    unsigned int    count:16;\n} Asetbuff;\n\ntypedef struct {\n    unsigned int    cmd:8;\n    unsigned int    flags:8;\n    unsigned int    vol:16;\n    unsigned int    voltgt:16;\n    unsigned int    volrate:16;\n} Asetvol;\n\ntypedef struct {\n    unsigned int    cmd:8;\n    unsigned int    pad1:8;\n    unsigned int    dmemin:16;\n    unsigned int    dmemout:16;\n    unsigned int    count:16;\n} Admemmove;\n\ntypedef struct {\n    unsigned int    cmd:8;\n    unsigned int    pad1:8;\n    unsigned int    count:16;\n    unsigned int    addr;\n} Aloadadpcm;\n\ntypedef struct {\n    unsigned int    cmd:8;\n    unsigned int    pad1:8;\n    unsigned int    pad2:16;\n    unsigned int    addr;\n} Asetloop;\n\n/*\n * Generic Acmd Packet\n */\n\ntypedef struct {\n    uintptr_t w0;\n    uintptr_t w1;\n} Awords;\n\ntypedef union {\n    Awords          words;\n#if IS_BIG_ENDIAN && !IS_64_BIT\n    Aadpcm          adpcm;\n    Apolef          polef;\n    Aclearbuff      clearbuff;\n    Aenvelope       envelope;\n    Ainterleave     interleave;\n    Aloadbuff       loadbuff;\n    Aenvmixer       envmixer;\n    Aresample       resample;\n    Areverb         reverb;\n    Asavebuff       savebuff;\n    Asegment        segment;\n    Asetbuff        setbuff;\n    Asetvol         setvol;\n    Admemmove       dmemmove;\n    Aloadadpcm      loadadpcm;\n    Amixer          mixer;\n    Asetloop        setloop;\n#endif\n    long long int   force_union_align;      /* dummy, force alignment */\n} Acmd;\n\n/*\n * ADPCM State\n */\ntypedef short ADPCM_STATE[16];\n\n/*\n * Pole filter state\n */\ntypedef short POLEF_STATE[4];\n\n/*\n * Resampler state\n */\ntypedef short RESAMPLE_STATE[16];\n\n/*\n * Resampler constants\n */\n#define UNITY_PITCH 0x8000\n#define MAX_RATIO 1.99996       /* within .03 cents of +1 octave */\n\n/*\n * Enveloper/Mixer state\n */\ntypedef short ENVMIX_STATE[40];\n\n/*\n * Macros to assemble the audio command list\n */\n\n/*\n * Info about parameters:\n *\n * A \"count\" in the following macros is always measured in bytes.\n *\n * All volumes/gains are in Q1.15 signed fixed point numbers:\n *  0x8000 is the minimum volume (-100%), negating the audio curve.\n *  0x0000 is silent.\n *  0x7fff is maximum volume (99.997%).\n *\n * All DRAM addresses refer to segmented addresses. A segment table shall\n * first be set up by calling aSegment for each segment. When a DRAM\n * address is later used as parameter, the 8 high bits will be an index\n * to the segment table and the lower 24 bits are added to the base address\n * stored in the segment table for this entry. The result is the physical address.\n * With the newer rsp audio code, this segment table is not used. The address is\n * used directly instead.\n *\n * Transfers to/from DRAM are executed using DMA and hence follow these restrictions:\n * All DRAM addresses should be aligned by 8 bytes, or they will be\n * rounded down to the nearest multiple of 8 bytes.\n * All DRAM lengths should be aligned by 8 bytes, or they will be\n * rounded up to the nearest multiple of 8 bytes.\n */\n\n/*\n * Decompresses ADPCM data.\n * Possible flags: A_INIT and A_LOOP.\n *\n * First set up internal data in DMEM:\n * aLoadADPCM(cmd++, nEntries * 16, physicalAddressOfBook)\n * aSetLoop(cmd++, physicalAddressOfLoopState)    (if A_LOOP is set)\n *\n * Then before this command, call:\n * aSetBuffer(cmd++, 0, in, out, count)\n *\n * Note: count will be rounded up to the nearest multiple of 32 bytes.\n *\n * ADPCM decompression works on a block of 16 (uncompressed) samples.\n * The previous 2 samples and 9 bytes of input are decompressed to\n * 16 new samples using the code book previously loaded.\n *\n * Before the algorithm starts, the previous 16 samples are loaded according to flag:\n *   A_INIT: all zeros\n *   A_LOOP: the address set by aSetLoop\n *   no flags: the DRAM address in the s parameter\n * These 16 samples are immediately copied to the destination address.\n *\n * The result of \"count\" bytes will be written after these 16 initial samples.\n * The last 16 samples written to the destination will also be written to\n * the state address in DRAM.\n */\n#define aADPCMdec(pkt, f, s)                                            \\\n{                                                                       \\\n        Acmd *_a = (Acmd *)pkt;                                         \\\n                                                                        \\\n        _a->words.w0 = _SHIFTL(A_ADPCM, 24, 8) | _SHIFTL(f, 16, 8);     \\\n        _a->words.w1 = (uintptr_t)(s);                                  \\\n}\n\n/*\n * Not used in SM64.\n */\n#define aPoleFilter(pkt, f, g, s)                                       \\\n{                                                                       \\\n        Acmd *_a = (Acmd *)pkt;                                         \\\n                                                                        \\\n        _a->words.w0 = (_SHIFTL(A_POLEF, 24, 8) | _SHIFTL(f, 16, 8) |   \\\n                        _SHIFTL(g, 0, 16));                             \\\n        _a->words.w1 = (uintptr_t)(s);                                  \\\n}\n\n/*\n * Clears DMEM data, where d is address and c is count, by writing zeros.\n *\n * Note: c is rounded up to the nearest multiple of 16 bytes.\n */\n#define aClearBuffer(pkt, d, c)                                         \\\n{                                                                       \\\n        Acmd *_a = (Acmd *)pkt;                                         \\\n                                                                        \\\n        _a->words.w0 = _SHIFTL(A_CLEARBUFF, 24, 8) | _SHIFTL(d, 0, 24); \\\n        _a->words.w1 = (uintptr_t)(c);                                  \\\n}\n\n/*\n * Mixes an envelope with mono sound into 2 or 4 channels.\n * Possible flags: A_INIT, A_AUX (indicates that 4 channels should be used).\n *\n * Before this command, call:\n * aSetBuffer(cmd++, 0, inBuf, dryLeft, count)\n * aSetBuffer(cmd++, A_AUX, dryRight, wetLeft, wetRight)\n *\n * The first time (A_INIT is set), volume also needs to be set:\n * aSetVolume(cmd++, A_VOL | A_LEFT, initialVolumeLeft, 0, 0)\n * aSetVolume(cmd++, A_VOL | A_RIGHT, initialVolumeRight, 0, 0)\n * aSetVolume32(cmd++, A_RATE | A_LEFT, targetVolumeLeft, rampLeft)\n * aSetVolume32(cmd++, A_RATE | A_RIGHT, targetVolumeRight, rampRight)\n * aSetVolume(cmd++, A_AUX, dryVolume, 0, wetVolume)\n *\n * This command will now mix samples in inBuf into the destination buffers (dry and wet),\n * but with the volume increased (or decreased) from initial volumes to target volumes,\n * with the specified ramp rate. Once the target volume is reached, the volume stays\n * at that level. Before the samples are finally mixed (added) into the destination\n * buffers (dry and wet), the volume is changed according to dryVolume and wetVolume.\n *\n * Note: count will be rounded up to the nearest multiple of 16 bytes.\n * Note: the wet channels are used for reverb.\n *\n */\n#define aEnvMixer(pkt, f, s)                                            \\\n{                                                                       \\\n        Acmd *_a = (Acmd *)pkt;                                         \\\n                                                                        \\\n        _a->words.w0 = _SHIFTL(A_ENVMIXER, 24, 8) | _SHIFTL(f, 16, 8);  \\\n        _a->words.w1 = (uintptr_t)(s);                                  \\\n}\n\n/*\n * Interleaves two mono channels into stereo.\n *\n * First call:\n * aSetBuffer(cmd++, 0, 0, output, count)\n *\n * The count refers to the size of each input. Hence 2 * count bytes will be written out.\n * A left sample will be placed before the right sample.\n *\n * Note: count will be rounded up to the nearest multiple of 16 bytes.\n */\n#define aInterleave(pkt, l, r)                                          \\\n{                                                                       \\\n        Acmd *_a = (Acmd *)pkt;                                         \\\n                                                                        \\\n        _a->words.w0 = _SHIFTL(A_INTERLEAVE, 24, 8);                    \\\n        _a->words.w1 = _SHIFTL(l, 16, 16) | _SHIFTL(r, 0, 16);          \\\n}\n\n/*\n * Loads a buffer from DRAM to DMEM.\n *\n * First call:\n * aSetBuffer(cmd++, 0, in, 0, count)\n *\n * The in parameter to aSetBuffer is the destination in DMEM and the\n * s parameter to this command is the source in DRAM.\n */\n#define aLoadBuffer(pkt, s)                                             \\\n{                                                                       \\\n        Acmd *_a = (Acmd *)pkt;                                         \\\n                                                                        \\\n        _a->words.w0 = _SHIFTL(A_LOADBUFF, 24, 8);                      \\\n        _a->words.w1 = (uintptr_t)(s);                                  \\\n}\n\n/*\n * Mixes audio.\n * Possible flags: no flags used, although parameter present.\n *\n * First call:\n * aSetBuffer(cmd++, 0, 0, 0, count)\n *\n * Input and output addresses are taken from the i and o parameters.\n * The volume with which the input is changed is taken from the g parameter.\n * After the volume of the input samples have been changed, the result\n * is added to the output.\n *\n * Note: count will be rounded up to the nearest multiple of 32 bytes.\n */\n#define aMix(pkt, f, g, i, o)                                           \\\n{                                                                       \\\n        Acmd *_a = (Acmd *)pkt;                                         \\\n                                                                        \\\n        _a->words.w0 = (_SHIFTL(A_MIXER, 24, 8) | _SHIFTL(f, 16, 8) |   \\\n                        _SHIFTL(g, 0, 16));                             \\\n        _a->words.w1 = _SHIFTL(i,16, 16) | _SHIFTL(o, 0, 16);           \\\n}\n\n// Not present in the audio microcode.\n#define aPan(pkt, f, d, s)                                              \\\n{                                                                       \\\n        Acmd *_a = (Acmd *)pkt;                                         \\\n                                                                        \\\n        _a->words.w0 = (_SHIFTL(A_PAN, 24, 8) | _SHIFTL(f, 16, 8) |     \\\n                        _SHIFTL(d, 0, 16));                             \\\n        _a->words.w1 = (uintptr_t)(s);                                  \\\n}\n\n/*\n * Resamples audio.\n * Possible flags: A_INIT, A_OUT? (not used in SM64).\n *\n * First call:\n * aSetBuffer(cmd++, 0, in, out, count)\n *\n * This command resamples the audio using the given frequency ratio (pitch)\n * using a filter that uses a window of 4 source samples. This can be used\n * either for just resampling audio to be able to be played back at a different\n * sample rate, or to change the pitch if the result is played back at\n * the same sample rate as the input.\n *\n * The frequency ratio is given in UQ1.15 fixed point format.\n * For no change in frequency, use pitch 0x8000.\n * For 1 octave up or downsampling to (roughly) half number of samples, use pitch 0xffff.\n * For 1 octave down or upsampling to double as many samples, use pitch 0x4000.\n *\n * Note: count represents the number of output sample bytes and is rounded up to\n * the nearest multiple of 16 bytes.\n *\n * The state consists of the four following source samples when the algorithm stopped as\n * well as a fractional position, and is initialized to all zeros if A_INIT is given.\n * Otherwise it is loaded from DRAM at address s.\n *\n * The algorithm starts by writing the four source samples from the state (or zero)\n * to just before the input address given. It then creates one output sample by examining\n * the four next source samples and then moving the source position zero or more\n * samples forward. The first output sample (when A_INIT is given) is always 0.\n *\n * When \"count\" bytes have been written, the following four source samples\n * are written to the state in DRAM as well as a fractional position.\n */\n#define aResample(pkt, f, p, s)                                         \\\n{                                                                       \\\n        Acmd *_a = (Acmd *)pkt;                                         \\\n                                                                        \\\n        _a->words.w0 = (_SHIFTL(A_RESAMPLE, 24, 8) | _SHIFTL(f, 16, 8) |\\\n                        _SHIFTL(p, 0, 16));                             \\\n        _a->words.w1 = (uintptr_t)(s);                                  \\\n}\n\n/*\n * Stores a buffer in DMEM to DRAM.\n *\n * First call:\n * aSetBuffer(cmd++, 0, 0, out, count)\n *\n * The out parameter to aSetBuffer is the source in DMEM and the\n * s parameter to this command is the destination in DRAM.\n */\n#define aSaveBuffer(pkt, s)                                             \\\n{                                                                       \\\n        Acmd *_a = (Acmd *)pkt;                                         \\\n                                                                        \\\n        _a->words.w0 = _SHIFTL(A_SAVEBUFF, 24, 8);                      \\\n        _a->words.w1 = (uintptr_t)(s);                                  \\\n}\n\n/*\n * Sets up an entry in the segment table.\n *\n * The s parameter is a segment index, 0 to 15.\n * The b parameter is the base offset.\n */\n#define aSegment(pkt, s, b)                                             \\\n{                                                                       \\\n        Acmd *_a = (Acmd *)pkt;                                         \\\n                                                                        \\\n        _a->words.w0 = _SHIFTL(A_SEGMENT, 24, 8);                       \\\n        _a->words.w1 = _SHIFTL(s, 24, 8) | _SHIFTL(b, 0, 24);           \\\n}\n\n/*\n * Sets internal DMEM buffer addresses used for later commands.\n * See each command for how to use aSetBuffer.\n */\n#define aSetBuffer(pkt, f, i, o, c)                                     \\\n{                                                                       \\\n        Acmd *_a = (Acmd *)pkt;                                         \\\n                                                                        \\\n        _a->words.w0 = (_SHIFTL(A_SETBUFF, 24, 8) | _SHIFTL(f, 16, 8) | \\\n                        _SHIFTL(i, 0, 16));                             \\\n        _a->words.w1 = _SHIFTL(o, 16, 16) | _SHIFTL(c, 0, 16);          \\\n}\n\n/*\n * Sets internal volume parameters.\n * See aEnvMixer for more info.\n */\n#define aSetVolume(pkt, f, v, t, r)                                     \\\n{                                                                       \\\n        Acmd *_a = (Acmd *)pkt;                                         \\\n                                                                        \\\n        _a->words.w0 = (_SHIFTL(A_SETVOL, 24, 8) | _SHIFTL(f, 16, 16) | \\\n                        _SHIFTL(v, 0, 16));                             \\\n        _a->words.w1 = _SHIFTL(t, 16, 16) | _SHIFTL(r, 0, 16);          \\\n}\n\n/*\n * Sets the address to ADPCM loop state.\n *\n * The a parameter is a DRAM address.\n * See aADPCMdec for more info.\n */\n#define aSetLoop(pkt, a)                                                \\\n{                                                                       \\\n        Acmd *_a = (Acmd *)pkt;                                         \\\n        _a->words.w0 = _SHIFTL(A_SETLOOP, 24, 8);                       \\\n        _a->words.w1 = (uintptr_t)(a);                                  \\\n}\n\n/*\n * Copies memory in DMEM.\n *\n * Copies c bytes from address i to address o.\n *\n * Note: count is rounded up to the nearest multiple of 16 bytes.\n *\n * Note: This acts as memcpy where 16 bytes are moved at a time, therefore\n * if input and output overlap, output address should be less than input address.\n */\n#define aDMEMMove(pkt, i, o, c)                                         \\\n{                                                                       \\\n        Acmd *_a = (Acmd *)pkt;                                         \\\n                                                                        \\\n        _a->words.w0 = _SHIFTL(A_DMEMMOVE, 24, 8) | _SHIFTL(i, 0, 24);  \\\n        _a->words.w1 = _SHIFTL(o, 16, 16) | _SHIFTL(c, 0, 16);          \\\n}\n\n/*\n * Loads ADPCM book from DRAM into DMEM.\n *\n * This command loads ADPCM table entries from DRAM to DMEM.\n *\n * The count parameter c should be a multiple of 16 bytes.\n * The d parameter is a DRAM address.\n */\n#define aLoadADPCM(pkt, c, d)                                           \\\n{                                                                       \\\n        Acmd *_a = (Acmd *)pkt;                                         \\\n                                                                        \\\n        _a->words.w0 = _SHIFTL(A_LOADADPCM, 24, 8) | _SHIFTL(c, 0, 24); \\\n        _a->words.w1 = (uintptr_t) (d);                                 \\\n}\n\n// This is a version of aSetVolume which takes a single 32-bit parameter\n// instead of two 16-bit ones. According to AziAudio, it is used to set\n// ramping values when neither bit 4 nor bit 8 is set in the flags parameter.\n// It does not appear in the official abi.h header.\n/*\n * Sets internal volume parameters.\n * See aEnvMixer for more info.\n */\n#define aSetVolume32(pkt, f, v, tr)                                     \\\n{                                                                       \\\n        Acmd *_a = (Acmd *)pkt;                                         \\\n                                                                        \\\n        _a->words.w0 = (_SHIFTL(A_SETVOL, 24, 8) | _SHIFTL(f, 16, 16) | \\\n                    _SHIFTL(v, 0, 16));                                 \\\n        _a->words.w1 = (uintptr_t)(tr);                                 \\\n}\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n#undef aLoadBuffer\n#undef aSaveBuffer\n#undef aMix\n#undef aEnvMixer\n#undef aInterleave\n\n// New or modified operations in the new audio microcode below\n\n/**\n * Decompresses S8 data.\n * Possible flags: A_INIT and A_LOOP.\n *\n * First set up internal data in DMEM:\n * aSetLoop(cmd++, physicalAddressOfLoopState)    (if A_LOOP is set)\n *\n * Then before this command, call:\n * aSetBuffer(cmd++, 0, in, out, count)\n *\n * Note: count will be rounded up to the nearest multiple of 32 bytes.\n *\n * S8 decompression works by expanding s8 bytes into s16 numbers,\n * by performing a left shift of 8 steps.\n *\n * Before the algorithm starts, the previous 16 samples are loaded according to flag:\n *   A_INIT: all zeros\n *   A_LOOP: the address set by aSetLoop\n *   no flags: the DRAM address in the s parameter\n * These 16 samples are immediately copied to the destination address.\n *\n * The result of \"count\" bytes will be written after these 16 initial samples.\n * The last 16 samples written to the destination will also be written to\n * the state address in DRAM.\n */\n#define aS8Dec(pkt, f, s)                                               \\\n{                                                                       \\\n        Acmd *_a = (Acmd *)pkt;                                         \\\n                                                                        \\\n        _a->words.w0 = _SHIFTL(A_S8DEC, 24, 8) | _SHIFTL(f, 16, 8);     \\\n        _a->words.w1 = (uintptr_t)(s);                                  \\\n}\n\n/*\n * Mix two tracks by simple clamped addition.\n *\n * s: DMEM source track 1\n * d: DMEM source track 2 and destination\n * c: number of bytes to write\n *\n * Note: count is first rounded down to the nearest multiple of 16 bytes\n * and then rounded up to the nearest multiple of 64 bytes.\n */\n#define aAddMixer(pkt, s, d, c)                                         \\\n{                                                                       \\\n        Acmd *_a = (Acmd *)pkt;                                         \\\n                                                                        \\\n        _a->words.w0 = (_SHIFTL(A_ADDMIXER, 24, 8) |                    \\\n                 _SHIFTL((c) >> 4, 16, 8) | _SHIFTL(0x7fff, 0, 16));    \\\n        _a->words.w1 = (_SHIFTL(s, 16, 16) | _SHIFTL(d, 0, 16));        \\\n}\n\n/*\n * Loads a buffer from DRAM to DMEM.\n *\n * s: DRAM source\n * d: DMEM destination\n * c: number of bytes to copy (rounded down to 16 byte alignment)\n */\n#define aLoadBuffer(pkt, s, d, c)                                       \\\n{                                                                       \\\n        Acmd *_a = (Acmd *)pkt;                                         \\\n                                                                        \\\n        _a->words.w0 = _SHIFTL(A_LOADBUFF, 24, 8) |                     \\\n                    _SHIFTL((c) >> 4, 16, 8) | _SHIFTL(d, 0, 16);       \\\n        _a->words.w1 = (uintptr_t)(s);                                  \\\n}\n\n/*\n * Stores a buffer from DMEM to DRAM.\n *\n * s: DMEM source\n * d: DRAM destination\n * c: number of bytes to copy (rounded down to 16 byte alignment)\n */\n#define aSaveBuffer(pkt, s, d, c)                                       \\\n{                                                                       \\\n        Acmd *_a = (Acmd *)pkt;                                         \\\n                                                                        \\\n        _a->words.w0 = _SHIFTL(A_SAVEBUFF, 24, 8) |                     \\\n                    _SHIFTL((c) >> 4, 16, 8) | _SHIFTL(s, 0, 16);       \\\n        _a->words.w1 = (uintptr_t)(d);                                  \\\n}\n\n/*\n * Duplicates 128 bytes of data a number of times.\n *\n * 128 bytes are read from source DMEM address s.\n * Then c identical copies of these bytes are written to DMEM address d.\n */\n#define aDuplicate(pkt, s, d, c)                                        \\\n{                                                                       \\\n        Acmd *_a = (Acmd *)pkt;                                         \\\n                                                                        \\\n        _a->words.w0 = (_SHIFTL(A_DUPLICATE, 24, 8) |                   \\\n                    _SHIFTL(c, 16, 8) | _SHIFTL(s, 0, 16));             \\\n        _a->words.w1 = (_SHIFTL(d, 16, 16) | _SHIFTL(0x80, 0, 16));     \\\n}\n\n/*\n * Copies memory in DMEM, second version.\n *\n * Copies t * c bytes from address i to address o.\n *\n * Note: count is first rounded up to the nearest multiple of 32 bytes,\n * before the multiplication by t.\n *\n * Note: This acts as memcpy where 32 bytes are moved at a time, therefore\n * if input and output overlap, output address should be less than input address.\n *\n * Not used in SM64.\n */\n#define aDMEMMove2(pkt, t, i, o, c)                                     \\\n{                                                                       \\\n        Acmd *_a = (Acmd *)pkt;                                         \\\n                                                                        \\\n        _a->words.w0 = _SHIFTL(A_DMEMMOVE2, 24, 8) |                    \\\n                    _SHIFTL(t, 16, 8) | _SHIFTL(i, 0, 16);              \\\n        _a->words.w1 = _SHIFTL(o, 16, 16) | _SHIFTL(c, 0, 16);          \\\n}\n\n/*\n * Fast resample.\n *\n * Before this command, call:\n * aSetBuffer(cmd++, 0, in, out, count)\n *\n * This works like the other resample command but just takes the \"nearest\" sample,\n * instead of a function of the four nearest samples.\n *\n * Initially the current position is calculated as (in << 16) + startFract.\n * For every sample to create, the value is simply taken from the sample\n * at address ((position >> 17) << 1). Then the current position is incremented\n * by (pitch << 2).\n *\n * Note: count represents the number of output bytes to create, and is\n * rounded up to the nearest multiple of 8 bytes.\n */\n#define aResampleZoh(pkt, pitch, startFract)                            \\\n{                                                                       \\\n        Acmd *_a = (Acmd *)pkt;                                         \\\n                                                                        \\\n        _a->words.w0 = (_SHIFTL(A_RESAMPLE_ZOH, 24, 8) |                \\\n                    _SHIFTL(pitch, 0, 16));                             \\\n        _a->words.w1 = _SHIFTL(startFract, 0, 16);                      \\\n}\n\n/*\n * Fast downsampling by taking every other sample, discarding others.\n *\n * Note: nSamples refers to the number of output samples to create, and\n * is first rounded up to the nearest multiple of 8.\n */\n#define aDownsampleHalf(pkt, nSamples, i, o)                            \\\n{                                                                       \\\n        Acmd *_a = (Acmd *)pkt;                                         \\\n                                                                        \\\n        _a->words.w0 = (_SHIFTL(A_DOWNSAMPLE_HALF, 24, 8) |             \\\n                        _SHIFTL(nSamples, 0, 16));                      \\\n        _a->words.w1 = _SHIFTL(i, 16, 16) | _SHIFTL(o, 0, 16);          \\\n}\n\n/*\n * Mixes audio.\n *\n * Input and output addresses are taken from the i and o parameters.\n * The volume with which the input is changed is taken from the g parameter.\n * After the volume of the input samples have been changed, the result\n * is added to the output.\n *\n * Note: count is first rounded down to the nearest multiple of 16 bytes\n * and then rounded up to the nearest multiple of 32 bytes.\n */\n#define aMix(pkt, g, i, o, c)                                           \\\n{                                                                       \\\n        Acmd *_a = (Acmd *)pkt;                                         \\\n                                                                        \\\n        _a->words.w0 = (_SHIFTL(A_MIXER, 24, 8) |                       \\\n                    _SHIFTL((c) >> 4, 16, 8) | _SHIFTL(g, 0, 16));      \\\n        _a->words.w1 = _SHIFTL(i, 16, 16) | _SHIFTL(o, 0, 16);          \\\n}\n\n/*\n * See aEnvMixer for more info.\n */\n#define aEnvSetup1(pkt, initialVolReverb, rampReverb, rampLeft, rampRight) \\\n{                                                                       \\\n        Acmd *_a = (Acmd *)pkt;                                         \\\n                                                                        \\\n        _a->words.w0 = (_SHIFTL(A_ENVSETUP1, 24, 8) |                   \\\n                    _SHIFTL(initialVolReverb, 16, 8) |                  \\\n                    _SHIFTL(rampReverb, 0, 16));                        \\\n        _a->words.w1 = _SHIFTL(rampLeft, 16, 16) |                      \\\n                    _SHIFTL(rampRight, 0, 16);                          \\\n}\n\n/*\n * See aEnvMixer for more info.\n */\n#define aEnvSetup2(pkt, initialVolLeft, initialVolRight)                \\\n{                                                                       \\\n        Acmd *_a = (Acmd *)pkt;                                         \\\n                                                                        \\\n        _a->words.w0 = _SHIFTL(A_ENVSETUP2, 24, 8);                     \\\n        _a->words.w1 = _SHIFTL(initialVolLeft, 16, 16) |                \\\n                    _SHIFTL(initialVolRight, 0, 16);                    \\\n}\n\n/*\n * Mixes an envelope with mono sound into 4 channels.\n *\n * To allow for many parameters, a sequence of aEnvSetup1, aEnvSetup2,\n * aEnvMixer shall always be called.\n *\n * The function works in blocks of 8 samples.\n * However, nSamples is rounded up to the nearest multiple of 16 samples.\n *\n * For each sample in a block:\n * 1. sampleLeft = in * volLeft * (negLeft ? -1 : 1)\n * 2. sampleRight = in * volRight * (negRight ? -1 : 1)\n * 3. dryLeft += sampleLeft\n * 4. dryRight += sampleRight\n * 5. if swapReverb: swap sampleLeft and sampleRight\n * 6. wetLeft += sampleLeft * volReverb\n * 7. wetRight += sampleRight * volReverb\n *\n * After each block, all vol variables are added by their corresponding\n * ramp value.\n *\n * Each volume variable is treated as a UQ0.16 number. Make sure\n * the ramp additions don't overflow, or wrapping will occur.\n * The initialVolReverb parameter is only 8 bits, but will be left\n * shifted 8 bits by the rsp.\n */\n#define aEnvMixer(pkt, inBuf, nSamples, swapReverb, negLeft, negRight,  \\\n                  dryLeft, dryRight, wetLeft, wetRight)                 \\\n{                                                                       \\\n        Acmd *_a = (Acmd *)pkt;                                         \\\n                                                                        \\\n        _a->words.w0 = (_SHIFTL(A_ENVMIXER, 24, 8) |                    \\\n                    _SHIFTL((inBuf) >> 4, 16, 8) |                      \\\n                    _SHIFTL(nSamples, 8, 8)) |                          \\\n                    _SHIFTL(swapReverb, 2, 1) | _SHIFTL(negLeft, 1, 1) |\\\n                    _SHIFTL(negRight, 0, 1);                            \\\n        _a->words.w1 = _SHIFTL((dryLeft) >> 4, 24, 8) |                 \\\n                    _SHIFTL((dryRight) >> 4, 16, 8) |                   \\\n                    _SHIFTL((wetLeft) >> 4, 8, 8) |                     \\\n                    _SHIFTL((wetRight) >> 4, 0, 8);                     \\\n}\n\n/*\n * Interleaves two mono channels into stereo.\n *\n * The count refers to the size of each input. Hence 2 * count bytes\n * will be written out.\n *\n * A left sample will be placed before the right sample.\n * All addresses (output, left, right) are DMEM addresses.\n *\n * Note: count will be rounded up to the nearest multiple of 8 bytes.\n * The previous version of this function rounded up to the nearest\n * multiple of 16 bytes.\n */\n#define aInterleave(pkt, o, l, r, c)                                    \\\n{                                                                       \\\n        Acmd *_a = (Acmd *)pkt;                                         \\\n                                                                        \\\n        _a->words.w0 = _SHIFTL(A_INTERLEAVE, 24, 8) |                   \\\n                    _SHIFTL((c) >> 4, 16, 8) | _SHIFTL(o, 0, 16);       \\\n        _a->words.w1 = _SHIFTL(l, 16, 16) | _SHIFTL(r, 0, 16);          \\\n}\n\n/*\n * Linear filter function.\n *\n * Calculates out[i] = sum all elements in the vector in[i..i-7] * filter[0..7],\n * where \"*\" represents dot multiplication. The input/output contains s16\n * samples and filter contains Q1.15 signed fixed point numbers.\n * Every result sample is rounded and clamped.\n *\n * First initiate by calling with the flag f set to 2, countOrBuf contains\n * the length in bytes that shall be processed in the next call. The addr\n * parameter shall contain the DRAM address to the filter table (16 bytes).\n * The count will be rounded up to the nearest multiple of 16 bytes.\n *\n * The aFilter function shall then be called in direct succession, with flag\n * set to either 0 or 1. The countOrBuf parameter shall contain the DMEM\n * address for the input/output. The addr parameter shall contain the DRAM\n * address for the state, containing the last previous 8 input samples.\n * The state is always written to upon exit, but is only read at entry if\n * the flag is 0 (otherwise all-zero samples are used instead).\n */\n#define aFilter(pkt, f, countOrBuf, addr)                               \\\n{                                                                       \\\n        Acmd *_a = (Acmd *)pkt;                                         \\\n                                                                        \\\n        _a->words.w0 = _SHIFTL(A_FILTER, 24, 8) | _SHIFTL((f), 16, 8) | \\\n                    _SHIFTL((countOrBuf), 0, 16);                       \\\n        _a->words.w1 = (uintptr_t)(addr);                               \\\n}\n\n/*\n * Modifies the volume of samples using a simple UQ4.4 gain multiplier.\n *\n * Performs the following:\n *\n * 1. Count c is rounded up to 32 byte alignment\n * 2. g is a u8 that contains a UQ4.4 number\n * 3. Modify each sample s, so that s = clamp_s16(s * g >> 4)\n */\n#define aHiLoGain(pkt, g, buflen, i)                                    \\\n{                                                                       \\\n        Acmd *_a = (Acmd *)pkt;                                         \\\n                                                                        \\\n        _a->words.w0 = _SHIFTL(A_HILOGAIN, 24, 8) |                     \\\n                _SHIFTL((g), 16, 8) | _SHIFTL((buflen), 0, 16);         \\\n        _a->words.w1 = _SHIFTL((i), 16, 16);                            \\\n}\n\n/*\n * Performs the following:\n *\n * 1. Count c is rounded up to 64 byte alignment\n * 2. f is added to i\n * 3. i and o are from now treated as s16 pointers\n * 4. 32 s16 samples are loaded from i to tbl\n * 5. for (u32 idx = 0; idx * sizeof(s16) < c; idx++)\n *        o[idx] = clamp_s16((s32)o[idx] * (s32)tbl[idx % 32]);\n */\n#define aUnknown25(pkt, f, c, o, i)                                     \\\n{                                                                       \\\n        Acmd *_a = (Acmd *)pkt;                                         \\\n                                                                        \\\n        _a->words.w0 = (_SHIFTL(A_UNK_25, 24, 8) |                      \\\n                _SHIFTL((f), 16, 8) |  _SHIFTL((c), 0, 16));            \\\n        _a->words.w1 = _SHIFTL((o), 16, 16) | _SHIFTL((i), 0, 16);      \\\n}\n\n#endif\n\n#endif /* _LANGUAGE_C */\n\n#endif /* !_ABI_H_ */\n"
  },
  {
    "path": "include/PR/gbi.h",
    "content": "/**************************************************************************\n *\t\t\t\t\t\t\t\t\t  *\n *\t\t Copyright (C) 1994, Silicon Graphics, Inc.\t\t  *\n *\t\t\t\t\t\t\t\t\t  *\n *  These coded instructions, statements, and computer programs  contain  *\n *  unpublished  proprietary  information of Silicon Graphics, Inc., and  *\n *  are protected by Federal copyright law.  They  may  not be disclosed  *\n *  to  third  parties  or copied or duplicated in any form, in whole or  *\n *  in part, without the prior written consent of Silicon Graphics, Inc.  *\n *\t\t\t\t\t\t\t\t\t  *\n **************************************************************************/\n/**************************************************************************\n *\n *  $Revision: 1.141 $\n *  $Date: 1999/09/03 03:43:08 $\n *  $Source: /exdisk2/cvs/N64OS/Master/cvsmdev2/PR/include/gbi.h,v $\n *\n **************************************************************************/\n\n#ifndef _GBI_H_\n#define _GBI_H_\n\n#include <PR/ultratypes.h>\n\n/*\n * To use the F3DEX ucodes, define F3DEX_GBI before include this file.\n *\n *     #define  F3DEX_GBI\n *     #include <ultra64.h>\n *\n *     or\n *\n *     cc -c -DF3DEX_GBI -I.... foo.c\n *\n */\n\n/**************************************************************************\n *\n * Graphics Binary Interface\n *\n **************************************************************************/\n\n/*\n * Graphics Commands, 'xxx' parts may be generated from ucode\n *\n * The command format is\n *\n *\t|00xxxxxx| = DMA\t\t0,..,127\n *\t|10xxxxxx| = Immediate Mode\t-65,..,-128\n *\t|11xxxxxx| = RDP cmds\t\t-1,..,-64\n *\n * Note: in order for the RSP microcode to process RDP commands opaquely,\n * we need to further identify those RDP commands that need DRAM address\n * \"fixup\". To do this, we have the dummy command G_RDP_ADDR_FIXUP, and\n * all |RDP commands| less than this are commands with embedded DRAM\n * addresses. Further, the format of these commands should be similar so\n * only one fixup routine is needed.\n *\n * Further explanation:\n * The names of the commands are somewhat misleading. Here is clarification:\n *\n *\t- a 'DMA' type command has a pointer to additional data and\n *\t  causes a DMA transfer to bring that into DMEM.\n *\n *\t- an 'Immediate' type command isn't really 'immediate', in the\n *\t  traditional sense. This just means that the entire command fits\n *\t  in the 64-bit word, and the ucode can execute it 'immediately'\n *\t  without additional memory transfers.\n *\n *\t- an 'RDP' command is identified as such because the RDP\n *\t  commands can be passed-thru the RSP and sent to the RDP\n *\t  directly. One further confusing thing, is that some 'DP'\n *\t  macros below actually generate immediate commands, not\n *\t  not direct DP commands.\n *\n * IMPLEMENTATION NOTE:\n * There is another group of RDP commands that includes the triangle commands\n * generated by the RSP code. These are the raw commands the rasterizer \n * hardware chews on, with slope info, etc. They will follow the RDP \n * ordering...\n *\n * IMPLEMENTATION NOTE:\n * The RDP hardware has some of these bit patterns wired up. If the hardware \n * changes, we must adjust this table, likewise we can't change/add things \n * once the hardware is frozen. (actually, the RDP hardware only looks at\n * the lower 6 bits of the command byte)\n *\n */\n\n#ifdef F3DEX_GBI_2E\n# ifndef F3DEX_GBI_2\n#  define F3DEX_GBI_2\n# endif\n# define GBI_FLOATS\n#endif\n\n#ifdef    F3DEX_GBI_2\n# ifndef  F3DEX_GBI\n#  define F3DEX_GBI\n# endif\n#define G_NOOP\t\t\t0x00\n#define G_RDPHALF_2\t\t0xf1\n#define G_SETOTHERMODE_H\t0xe3\n#define G_SETOTHERMODE_L\t0xe2\n#define G_RDPHALF_1\t\t0xe1\n#define G_SPNOOP\t\t0xe0\n#define G_ENDDL\t\t\t0xdf\n#define G_DL\t\t\t0xde\n#define G_LOAD_UCODE\t\t0xdd\n#define G_MOVEMEM\t\t0xdc\n#define G_MOVEWORD\t\t0xdb\n#define G_MTX\t\t\t0xda\n#define G_GEOMETRYMODE\t\t0xd9\n#define G_POPMTX\t\t0xd8\n#define G_TEXTURE\t\t0xd7\n#define G_DMA_IO\t\t0xd6\n#define G_SPECIAL_1\t\t0xd5\n#define G_SPECIAL_2\t\t0xd4\n#define G_SPECIAL_3\t\t0xd3\n\n#define G_VTX\t\t\t0x01\n#define G_MODIFYVTX\t\t0x02\n#define G_CULLDL\t\t0x03\n#define G_BRANCH_Z\t\t0x04\n#define G_TRI1\t\t\t0x05\n#define G_TRI2\t\t\t0x06\n#define G_QUAD\t\t\t0x07\n#define G_LINE3D\t\t0x08\n#else   /* F3DEX_GBI_2 */\n\n/* DMA commands: */\n#define G_SPNOOP\t\t0\t/* handle 0 gracefully */\n#define G_MTX\t\t\t1\n#define G_RESERVED0\t\t2\t/* not implemeted */\n#define G_MOVEMEM\t\t3\t/* move a block of memory (up to 4 words) to dmem */\n#define G_VTX\t\t\t4\n#define G_RESERVED1\t\t5\t/* not implemeted */\n#define G_DL\t\t\t6\n#define G_RESERVED2\t\t7\t/* not implemeted */\n#define G_RESERVED3\t\t8\t/* not implemeted */\n#define G_SPRITE2D_BASE\t\t9\t/* sprite command */\n\n/* IMMEDIATE commands: */\n#define G_IMMFIRST\t\t-65\n#define G_TRI1\t\t\t(G_IMMFIRST-0)\n#define G_CULLDL\t\t(G_IMMFIRST-1)\n#define G_POPMTX\t\t(G_IMMFIRST-2)\n#define G_MOVEWORD\t\t(G_IMMFIRST-3)\n#define G_TEXTURE\t\t(G_IMMFIRST-4)\n#define G_SETOTHERMODE_H\t(G_IMMFIRST-5)\n#define G_SETOTHERMODE_L\t(G_IMMFIRST-6)\n#define G_ENDDL\t\t\t(G_IMMFIRST-7)\n#define G_SETGEOMETRYMODE\t(G_IMMFIRST-8)\n#define G_CLEARGEOMETRYMODE\t(G_IMMFIRST-9)\n#define G_LINE3D\t\t(G_IMMFIRST-10)\n#define G_RDPHALF_1\t\t(G_IMMFIRST-11)\n#define G_RDPHALF_2\t\t(G_IMMFIRST-12)\n#if (defined(F3DEX_GBI)||defined(F3DLP_GBI))\n#  define G_MODIFYVTX\t\t(G_IMMFIRST-13)\n#  define G_TRI2\t\t(G_IMMFIRST-14)\n#  define G_BRANCH_Z\t\t(G_IMMFIRST-15)\n#  define G_LOAD_UCODE\t\t(G_IMMFIRST-16)\n#else\n#  define G_RDPHALF_CONT\t(G_IMMFIRST-13)\n#endif\n\n/* We are overloading 2 of the immediate commands\n   to keep the byte alignment of dmem the same */\n\n#define G_SPRITE2D_SCALEFLIP    (G_IMMFIRST-1)\n#define G_SPRITE2D_DRAW         (G_IMMFIRST-2)\n\n/* RDP commands: */\n#define G_NOOP\t\t\t0xc0\t/*   0 */\n\n#endif  /* F3DEX_GBI_2 */\n\n/* RDP commands: */\n#define G_SETCIMG\t\t0xff\t/*  -1 */\n#define G_SETZIMG\t\t0xfe\t/*  -2 */\n#define G_SETTIMG\t\t0xfd\t/*  -3 */\n#define G_SETCOMBINE\t\t0xfc\t/*  -4 */\n#define G_SETENVCOLOR\t\t0xfb\t/*  -5 */\n#define G_SETPRIMCOLOR\t\t0xfa\t/*  -6 */\n#define G_SETBLENDCOLOR\t\t0xf9\t/*  -7 */\n#define G_SETFOGCOLOR\t\t0xf8\t/*  -8 */\n#define G_SETFILLCOLOR\t\t0xf7\t/*  -9 */\n#define G_FILLRECT\t\t0xf6\t/* -10 */\n#define G_SETTILE\t\t0xf5\t/* -11 */\n#define G_LOADTILE\t\t0xf4\t/* -12 */\n#define G_LOADBLOCK\t\t0xf3\t/* -13 */\n#define G_SETTILESIZE\t\t0xf2\t/* -14 */\n#define G_LOADTLUT\t\t0xf0\t/* -16 */\n#define G_RDPSETOTHERMODE\t0xef\t/* -17 */\n#define G_SETPRIMDEPTH\t\t0xee\t/* -18 */\n#define G_SETSCISSOR\t\t0xed\t/* -19 */\n#define G_SETCONVERT\t\t0xec\t/* -20 */\n#define G_SETKEYR\t\t0xeb\t/* -21 */\n#define G_SETKEYGB\t\t0xea\t/* -22 */\n#define G_RDPFULLSYNC\t\t0xe9\t/* -23 */\n#define G_RDPTILESYNC\t\t0xe8\t/* -24 */\n#define G_RDPPIPESYNC\t\t0xe7\t/* -25 */\n#define G_RDPLOADSYNC\t\t0xe6\t/* -26 */\n#define G_TEXRECTFLIP\t\t0xe5\t/* -27 */\n#define G_TEXRECT\t\t0xe4\t/* -28 */\n\n\n/* \n * The following commands are the \"generated\" RDP commands; the user\n * never sees them, the RSP microcode generates them.\n *\n * The layout of the bits is magical, to save work in the ucode.\n * These id's are -56, -52, -54, -50, -55, -51, -53, -49, ...\n *                                 edge, shade, texture, zbuff bits:  estz\n */\n#define G_TRI_FILL\t\t0xc8 /* fill triangle:            11001000 */\n#define G_TRI_SHADE\t\t0xcc /* shade triangle:           11001100 */\n#define G_TRI_TXTR\t\t0xca /* texture triangle:         11001010 */\n#define G_TRI_SHADE_TXTR\t0xce /* shade, texture triangle:  11001110 */\n#define G_TRI_FILL_ZBUFF\t0xc9 /* fill, zbuff triangle:     11001001 */\n#define G_TRI_SHADE_ZBUFF\t0xcd /* shade, zbuff triangle:    11001101 */\n#define G_TRI_TXTR_ZBUFF\t0xcb /* texture, zbuff triangle:  11001011 */\n#define G_TRI_SHADE_TXTR_ZBUFF\t0xcf /* shade, txtr, zbuff trngl: 11001111 */\n\n/*\n * A TRI_FILL triangle is just the edges. You need to set the DP\n * to use primcolor, in order to see anything. (it is NOT a triangle\n * that gets rendered in 'fill mode'. Triangles can't be rendered\n * in 'fill mode')\n *\n * A TRI_SHADE is a gouraud triangle that has colors interpolated.\n * Flat-shaded triangles (from the software) are still gouraud shaded,\n * it's just the colors are all the same and the deltas are 0.\n *\n * Other triangle types, and combinations are more obvious.\n */\n\n/* masks to build RDP triangle commands: */\n#define G_RDP_TRI_FILL_MASK     0x08\n#define G_RDP_TRI_SHADE_MASK    0x04\n#define G_RDP_TRI_TXTR_MASK     0x02\n#define G_RDP_TRI_ZBUFF_MASK    0x01\n\n/*\n * HACK:\n * This is a dreadful hack. For version 1.0 hardware, there are still\n * some 'bowtie' hangs. This parameter can be increased to avoid\n * the hangs. Every increase of 4 chops one scanline off of every\n * triangle. Values of 4,8,12 should be sufficient to avoid any\n * bowtie hang.\n *\n * Change this value, then recompile ALL of your program (including static\n * display lists!)\n *\n * THIS WILL BE REMOVED FOR HARDWARE VERSION 2.0!\n */\n#define BOWTIE_VAL\t0\n\n\n/* gets added to RDP command, in order to test for addres fixup: */\n#define G_RDP_ADDR_FIXUP\t3\t/* |RDP cmds| <= this, do addr fixup */\n#ifdef _LANGUAGE_ASSEMBLY\n#define G_RDP_TEXRECT_CHECK\t((-1*G_TEXRECTFLIP)& 0xff)\n#endif\n\n/* macros for command parsing: */\n#define\tGDMACMD(x)\t\t(x)\n#define\tGIMMCMD(x)\t\t(G_IMMFIRST-(x))\n#define\tGRDPCMD(x)\t\t(0xff-(x))\n\n#define\tG_DMACMDSIZ\t\t128\n#define\tG_IMMCMDSIZ\t\t64\n#define\tG_RDPCMDSIZ\t\t64\n\n/*\n * Coordinate shift values, number of bits of fraction\n */\n#define\tG_TEXTURE_IMAGE_FRAC\t2\n#define\tG_TEXTURE_SCALE_FRAC\t16\n#define\tG_SCALE_FRAC\t\t8\n#define\tG_ROTATE_FRAC\t\t16\n\n/*\n * Parameters to graphics commands\n */\n\n/*\n * Data packing macros\n */\n\n/*\n * Maximum z-buffer value, used to initialize the z-buffer.\n * Note : this number is NOT the viewport z-scale constant.\n * See the comment next to G_MAXZ for more info.\n */\n#define\tG_MAXFBZ\t\t0x3fff\t/* 3b exp, 11b mantissa */\n\n#define\tGPACK_RGBA5551(r, g, b, a)\t((((r)<<8) & 0xf800) | \t\t\\\n\t\t\t\t\t (((g)<<3) & 0x7c0) |\t\t\\\n\t\t\t\t\t (((b)>>2) & 0x3e) | ((a) & 0x1))\n#define\tGPACK_ZDZ(z, dz)\t\t((z) << 2 | (dz))\n\n/*\n * G_MTX: parameter flags\n */\n#ifdef\tF3DEX_GBI_2\n# define G_MTX_MODELVIEW    0x00\t/* matrix types */\n# define G_MTX_PROJECTION   0x04\n# define G_MTX_MUL          0x00\t/* concat or load */\n# define G_MTX_LOAD         0x02\n# define G_MTX_NOPUSH       0x00\t/* push or not */\n# define G_MTX_PUSH         0x01\n#else\t/* F3DEX_GBI_2 */\n# define G_MTX_MODELVIEW    0x00\t/* matrix types */\n# define G_MTX_PROJECTION   0x01\n# define G_MTX_MUL          0x00\t/* concat or load */\n# define G_MTX_LOAD         0x02\n# define G_MTX_NOPUSH       0x00\t/* push or not */\n# define G_MTX_PUSH         0x04\n#endif\t/* F3DEX_GBI_2 */\n\n/*\n * flags for G_SETGEOMETRYMODE\n * (this rendering state is maintained in RSP)\n *\n * DO NOT USE THE LOW 8 BITS OF GEOMETRYMODE:\n * The weird bit-ordering is for the micro-code: the lower byte\n * can be OR'd in with G_TRI_SHADE (11001100) to construct \n * the triangle command directly. Don't break it...\n *\n * DO NOT USE THE HIGH 8 BITS OF GEOMETRYMODE:\n * The high byte is OR'd with 0x703 to form the clip code mask.\n * If it is set to 0x04, this will cause near clipping to occur.\n * If it is zero, near clipping will not occur.\n *\n * Further explanation:\n * G_SHADE is necessary in order to see the color that you passed\n * down with the vertex. If G_SHADE isn't set, you need to set the DP\n * appropriately and use primcolor to see anything.\n *\n * G_SHADING_SMOOTH enabled means use all 3 colors of the triangle.\n * If it is not set, then do 'flat shading', where only one vertex color \n * is used (and all 3 vertices are set to that same color by the ucode)\n * See the man page for gSP1Triangle().\n *\n */\n#define G_ZBUFFER\t\t0x00000001\n#define G_SHADE\t\t\t0x00000004\t/* enable Gouraud interp */\n/* rest of low byte reserved for setup ucode */\n#ifdef\tF3DEX_GBI_2\n# define G_TEXTURE_ENABLE\t0x00000000\t/* Ignored               */\n# define G_SHADING_SMOOTH\t0x00200000\t/* flat or smooth shaded */\n# define G_CULL_FRONT\t\t0x00000200\n# define G_CULL_BACK\t\t0x00000400\n# define G_CULL_BOTH\t\t0x00000600\t/* To make code cleaner */\n#else\n# define G_TEXTURE_ENABLE\t0x00000002\t/* Microcode use only */\n# define G_SHADING_SMOOTH\t0x00000200\t/* flat or smooth shaded */\n# define G_CULL_FRONT\t\t0x00001000\n# define G_CULL_BACK\t\t0x00002000\n# define G_CULL_BOTH\t\t0x00003000\t/* To make code cleaner */\n#endif\n#define G_FOG\t\t\t0x00010000\n#define G_LIGHTING\t\t0x00020000\n#define G_TEXTURE_GEN\t\t0x00040000\n#define G_TEXTURE_GEN_LINEAR\t0x00080000\n#define G_LOD\t\t\t0x00100000\t/* NOT IMPLEMENTED */\n#if\t(defined(F3DEX_GBI)||defined(F3DLP_GBI))\n# define G_CLIPPING\t\t0x00800000\n#else\n# define G_CLIPPING\t\t0x00000000\n#endif\n\n#ifdef _LANGUAGE_ASSEMBLY\n#define G_FOG_H\t\t\t(G_FOG/0x10000)\n#define G_LIGHTING_H\t\t(G_LIGHTING/0x10000)\n#define G_TEXTURE_GEN_H\t\t(G_TEXTURE_GEN/0x10000)\n#define G_TEXTURE_GEN_LINEAR_H\t(G_TEXTURE_GEN_LINEAR/0x10000)\n#define G_LOD_H\t\t\t(G_LOD/0x10000)\t/* NOT IMPLEMENTED */\n#if\t(defined(F3DEX_GBI)||defined(F3DLP_GBI))\n#  define G_CLIPPING_H\t\t(G_CLIPPING/0x10000)\n#endif\n#endif\n\n/* Need these defined for Sprite Microcode */\n#ifdef _LANGUAGE_ASSEMBLY\n#define\tG_TX_LOADTILE\t7\n#define\tG_TX_RENDERTILE\t0\n\n#define\tG_TX_NOMIRROR\t0\n#define\tG_TX_WRAP\t0\n#define\tG_TX_MIRROR\t0x1\n#define\tG_TX_CLAMP\t0x2\n#define\tG_TX_NOMASK\t0\n#define\tG_TX_NOLOD\t0\n#endif\n\n/*\n * G_SETIMG fmt: set image formats\n */\n#define G_IM_FMT_RGBA\t0\n#define G_IM_FMT_YUV\t1\n#define G_IM_FMT_CI\t2\n#define G_IM_FMT_IA\t3\n#define G_IM_FMT_I\t4\n\n/*\n * G_SETIMG siz: set image pixel size\n */\n#define G_IM_SIZ_4b\t0\n#define G_IM_SIZ_8b\t1\n#define G_IM_SIZ_16b\t2\n#define G_IM_SIZ_32b\t3\n#define G_IM_SIZ_DD\t5\n\n#define G_IM_SIZ_4b_BYTES\t\t0\n#define G_IM_SIZ_4b_TILE_BYTES\tG_IM_SIZ_4b_BYTES\n#define G_IM_SIZ_4b_LINE_BYTES\tG_IM_SIZ_4b_BYTES\n\n#define G_IM_SIZ_8b_BYTES\t\t1\n#define G_IM_SIZ_8b_TILE_BYTES\tG_IM_SIZ_8b_BYTES\n#define G_IM_SIZ_8b_LINE_BYTES\tG_IM_SIZ_8b_BYTES\n\n#define G_IM_SIZ_16b_BYTES\t\t2\n#define G_IM_SIZ_16b_TILE_BYTES\tG_IM_SIZ_16b_BYTES\n#define G_IM_SIZ_16b_LINE_BYTES\tG_IM_SIZ_16b_BYTES\n\n#define G_IM_SIZ_32b_BYTES\t\t4\n#define G_IM_SIZ_32b_TILE_BYTES\t2\n#define G_IM_SIZ_32b_LINE_BYTES\t2\n\n#define G_IM_SIZ_4b_LOAD_BLOCK\tG_IM_SIZ_16b\n#define G_IM_SIZ_8b_LOAD_BLOCK\tG_IM_SIZ_16b\n#define G_IM_SIZ_16b_LOAD_BLOCK\tG_IM_SIZ_16b\n#define G_IM_SIZ_32b_LOAD_BLOCK\tG_IM_SIZ_32b\n\n#define G_IM_SIZ_4b_SHIFT  2\n#define G_IM_SIZ_8b_SHIFT  1\n#define G_IM_SIZ_16b_SHIFT 0\n#define G_IM_SIZ_32b_SHIFT 0\n\n#define G_IM_SIZ_4b_INCR  3\n#define G_IM_SIZ_8b_INCR  1\n#define G_IM_SIZ_16b_INCR 0\n#define G_IM_SIZ_32b_INCR 0\n\n/*\n * G_SETCOMBINE: color combine modes\n */\n/* Color combiner constants: */\n#define G_CCMUX_COMBINED        0\n#define G_CCMUX_TEXEL0          1\n#define G_CCMUX_TEXEL1          2\n#define G_CCMUX_PRIMITIVE       3\n#define G_CCMUX_SHADE           4\n#define G_CCMUX_ENVIRONMENT     5\n#define G_CCMUX_CENTER          6\n#define G_CCMUX_SCALE           6\n#define G_CCMUX_COMBINED_ALPHA  7\n#define G_CCMUX_TEXEL0_ALPHA    8\n#define G_CCMUX_TEXEL1_ALPHA    9\n#define G_CCMUX_PRIMITIVE_ALPHA 10\n#define G_CCMUX_SHADE_ALPHA     11\n#define G_CCMUX_ENV_ALPHA       12\n#define G_CCMUX_LOD_FRACTION    13\n#define G_CCMUX_PRIM_LOD_FRAC   14\n#define G_CCMUX_NOISE           7\n#define G_CCMUX_K4              7\n#define G_CCMUX_K5              15\n#define G_CCMUX_1               6\n#define G_CCMUX_0               31\n\n/* Alpha combiner constants: */\n#define G_ACMUX_COMBINED\t    0\n#define G_ACMUX_TEXEL0\t\t    1\n#define G_ACMUX_TEXEL1\t\t    2\n#define G_ACMUX_PRIMITIVE\t    3\n#define G_ACMUX_SHADE\t\t    4\n#define G_ACMUX_ENVIRONMENT\t    5\n#define G_ACMUX_LOD_FRACTION\t0\n#define G_ACMUX_PRIM_LOD_FRAC\t6\n#define G_ACMUX_1\t\t        6\n#define G_ACMUX_0\t\t        7\n\n/* typical CC cycle 1 modes */\n#define\tG_CC_PRIMITIVE              0, 0, 0, PRIMITIVE, 0, 0, 0, PRIMITIVE\n#define\tG_CC_SHADE                  0, 0, 0, SHADE, 0, 0, 0, SHADE\n\n#define\tG_CC_MODULATEI              TEXEL0, 0, SHADE, 0, 0, 0, 0, SHADE\n#define\tG_CC_MODULATEIDECALA        TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0\n#define\tG_CC_MODULATEIFADE          TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT\n\n#define\tG_CC_MODULATERGB            G_CC_MODULATEI\n#define\tG_CC_MODULATERGBDECALA      G_CC_MODULATEIDECALA\n#define\tG_CC_MODULATERGBFADE        G_CC_MODULATEIFADE\n\n#define\tG_CC_MODULATEIA             TEXEL0, 0, SHADE, 0, TEXEL0, 0, SHADE, 0\n#define\tG_CC_MODULATEIFADEA         TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0\n\n#define\tG_CC_MODULATEFADE           TEXEL0, 0, SHADE, 0, ENVIRONMENT, 0, TEXEL0, 0\n\n#define\tG_CC_MODULATERGBA           G_CC_MODULATEIA\n#define\tG_CC_MODULATERGBFADEA       G_CC_MODULATEIFADEA\n\n#define\tG_CC_MODULATEI_PRIM         TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE\n#define\tG_CC_MODULATEIA_PRIM        TEXEL0, 0, PRIMITIVE, 0, TEXEL0, 0, PRIMITIVE, 0\n#define\tG_CC_MODULATEIDECALA_PRIM   TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, TEXEL0\n\n#define\tG_CC_MODULATERGB_PRIM       G_CC_MODULATEI_PRIM\n#define\tG_CC_MODULATERGBA_PRIM      G_CC_MODULATEIA_PRIM\n#define\tG_CC_MODULATERGBDECALA_PRIM G_CC_MODULATEIDECALA_PRIM\n\n#define\tG_CC_FADE                   SHADE, 0, ENVIRONMENT, 0, SHADE, 0, ENVIRONMENT, 0\n#define\tG_CC_FADEA                  TEXEL0, 0, ENVIRONMENT, 0, TEXEL0, 0, ENVIRONMENT, 0\n\n#define\tG_CC_DECALRGB               0, 0, 0, TEXEL0, 0, 0, 0, SHADE\n#define\tG_CC_DECALRGBA              0, 0, 0, TEXEL0, 0, 0, 0, TEXEL0\n#define\tG_CC_DECALFADE              0, 0, 0, TEXEL0, 0, 0, 0, ENVIRONMENT\n\n#define\tG_CC_DECALFADEA             0, 0, 0, TEXEL0, TEXEL0, 0, ENVIRONMENT, 0\n\n#define\tG_CC_BLENDI                 ENVIRONMENT, SHADE, TEXEL0, SHADE, 0, 0, 0, SHADE\n#define\tG_CC_BLENDIA                ENVIRONMENT, SHADE, TEXEL0, SHADE, TEXEL0, 0, SHADE, 0\n#define\tG_CC_BLENDIDECALA           ENVIRONMENT, SHADE, TEXEL0, SHADE, 0, 0, 0, TEXEL0\n\n#define\tG_CC_BLENDRGBA              TEXEL0, SHADE, TEXEL0_ALPHA, SHADE, 0, 0, 0, SHADE\n#define\tG_CC_BLENDRGBDECALA         TEXEL0, SHADE, TEXEL0_ALPHA, SHADE, 0, 0, 0, TEXEL0\n#define\tG_CC_BLENDRGBFADEA          TEXEL0, SHADE, TEXEL0_ALPHA, SHADE, 0, 0, 0, ENVIRONMENT\n\n#define G_CC_ADDRGB                 TEXEL0, 0, TEXEL0, SHADE, 0, 0, 0, SHADE\n#define G_CC_ADDRGBDECALA           TEXEL0, 0, TEXEL0, SHADE, 0, 0, 0, TEXEL0\n#define G_CC_ADDRGBFADE             TEXEL0, 0, TEXEL0, SHADE, 0, 0, 0, ENVIRONMENT\n\n#define G_CC_REFLECTRGB             ENVIRONMENT, 0, TEXEL0, SHADE, 0, 0, 0, SHADE\n#define G_CC_REFLECTRGBDECALA       ENVIRONMENT, 0, TEXEL0, SHADE, 0, 0, 0, TEXEL0\n\n#define G_CC_HILITERGB              PRIMITIVE, SHADE, TEXEL0, SHADE, 0, 0, 0, SHADE\n#define G_CC_HILITERGBA             PRIMITIVE, SHADE, TEXEL0, SHADE, PRIMITIVE, SHADE, TEXEL0, SHADE\n#define G_CC_HILITERGBDECALA        PRIMITIVE, SHADE, TEXEL0, SHADE, 0, 0, 0, TEXEL0\n\n#define G_CC_SHADEDECALA            0, 0, 0, SHADE, 0, 0, 0, TEXEL0\n#define G_CC_SHADEFADEA             0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT\n\n#define\tG_CC_BLENDPE                PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, SHADE, 0\n#define\tG_CC_BLENDPEDECALA          PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0\n\n/* oddball modes */\n#define\t_G_CC_BLENDPE       ENVIRONMENT, PRIMITIVE, TEXEL0, PRIMITIVE, TEXEL0, 0, SHADE, 0\n#define\t_G_CC_BLENDPEDECALA ENVIRONMENT, PRIMITIVE, TEXEL0, PRIMITIVE, 0, 0, 0, TEXEL0\n#define\t_G_CC_TWOCOLORTEX   PRIMITIVE, SHADE, TEXEL0, SHADE, 0, 0, 0, SHADE\n/* used for 1-cycle sparse mip-maps, primitive color has color of lowest LOD */\n#define\t_G_CC_SPARSEST      PRIMITIVE, TEXEL0, LOD_FRACTION, TEXEL0, PRIMITIVE, TEXEL0, LOD_FRACTION, TEXEL0\n#define G_CC_TEMPLERP       TEXEL1, TEXEL0, PRIM_LOD_FRAC, TEXEL0, TEXEL1, TEXEL0, PRIM_LOD_FRAC, TEXEL0\n\n/* typical CC cycle 1 modes, usually followed by other cycle 2 modes */\n#define\tG_CC_TRILERP        TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0, TEXEL1, TEXEL0, LOD_FRACTION, TEXEL0\n#define\tG_CC_INTERFERENCE   TEXEL0, 0, TEXEL1, 0, TEXEL0, 0, TEXEL1, 0\n\n/*\n *  One-cycle color convert operation\n */\n#define\tG_CC_1CYUV2RGB      TEXEL0, K4, K5, TEXEL0, 0, 0, 0, SHADE\n\n/*\n *  NOTE: YUV2RGB expects TF step1 color conversion to occur in 2nd clock.\n * Therefore, CC looks for step1 results in TEXEL1\n */\n#define\tG_CC_YUV2RGB        TEXEL1, K4, K5, TEXEL1, 0, 0, 0, 0\n\n/* typical CC cycle 2 modes */\n#define\tG_CC_PASS2              0, 0, 0, COMBINED, 0, 0, 0, COMBINED\n#define\tG_CC_MODULATEI2         COMBINED, 0, SHADE, 0, 0, 0, 0, SHADE\n#define\tG_CC_MODULATEIA2        COMBINED, 0, SHADE, 0, COMBINED, 0, SHADE, 0\n#define\tG_CC_MODULATERGB2       G_CC_MODULATEI2\n#define\tG_CC_MODULATERGBA2      G_CC_MODULATEIA2\n#define\tG_CC_MODULATEI_PRIM2    COMBINED, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE\n#define\tG_CC_MODULATEIA_PRIM2   COMBINED, 0, PRIMITIVE, 0, COMBINED, 0, PRIMITIVE, 0\n#define\tG_CC_MODULATERGB_PRIM2  G_CC_MODULATEI_PRIM2\n#define\tG_CC_MODULATERGBA_PRIM2 G_CC_MODULATEIA_PRIM2\n#define\tG_CC_DECALRGB2          0, 0, 0, COMBINED, 0, 0, 0, SHADE\n/*\n * ?\n#define\tG_CC_DECALRGBA2\t\tCOMBINED, SHADE, COMBINED_ALPHA, SHADE, 0, 0, 0, SHADE\n*/\n#define\tG_CC_BLENDI2            ENVIRONMENT, SHADE, COMBINED, SHADE, 0, 0, 0, SHADE\n#define\tG_CC_BLENDIA2           ENVIRONMENT, SHADE, COMBINED, SHADE, COMBINED, 0, SHADE, 0\n#define\tG_CC_CHROMA_KEY2        TEXEL0, CENTER, SCALE, 0, 0, 0, 0, 0\n#define G_CC_HILITERGB2         ENVIRONMENT, COMBINED, TEXEL0, COMBINED, 0, 0, 0, SHADE\n#define G_CC_HILITERGBA2        ENVIRONMENT, COMBINED, TEXEL0, COMBINED, ENVIRONMENT, COMBINED, TEXEL0, COMBINED\n#define G_CC_HILITERGBDECALA2   ENVIRONMENT, COMBINED, TEXEL0, COMBINED, 0, 0, 0, TEXEL0\n#define G_CC_HILITERGBPASSA2    ENVIRONMENT, COMBINED, TEXEL0, COMBINED, 0, 0, 0, COMBINED\n\n/*\n * G_SETOTHERMODE_L sft: shift count\n */\n#define\tG_MDSFT_ALPHACOMPARE\t\t0\n#define\tG_MDSFT_ZSRCSEL\t\t\t2\n#define\tG_MDSFT_RENDERMODE\t\t3\n#define\tG_MDSFT_BLENDER\t\t\t16\n\n/*\n * G_SETOTHERMODE_H sft: shift count\n */\n#define\tG_MDSFT_BLENDMASK\t\t0\t/* unsupported */\n#define\tG_MDSFT_ALPHADITHER\t\t4\n#define\tG_MDSFT_RGBDITHER\t\t6\n\n#define\tG_MDSFT_COMBKEY\t\t\t8\n#define\tG_MDSFT_TEXTCONV\t\t9\n#define\tG_MDSFT_TEXTFILT\t\t12\n#define\tG_MDSFT_TEXTLUT\t\t\t14\n#define\tG_MDSFT_TEXTLOD\t\t\t16\n#define\tG_MDSFT_TEXTDETAIL\t\t17\n#define\tG_MDSFT_TEXTPERSP\t\t19\n#define\tG_MDSFT_CYCLETYPE\t\t20\n#define\tG_MDSFT_COLORDITHER\t\t22\t/* unsupported in HW 2.0 */\n#define\tG_MDSFT_PIPELINE\t\t23\n\n/* G_SETOTHERMODE_H gPipelineMode */\n#define\tG_PM_1PRIMITIVE\t\t(1 << G_MDSFT_PIPELINE)\n#define\tG_PM_NPRIMITIVE\t\t(0 << G_MDSFT_PIPELINE)\n\n/* G_SETOTHERMODE_H gSetCycleType */\n#define\tG_CYC_1CYCLE\t\t(0 << G_MDSFT_CYCLETYPE)\n#define\tG_CYC_2CYCLE\t\t(1 << G_MDSFT_CYCLETYPE)\n#define\tG_CYC_COPY\t\t(2 << G_MDSFT_CYCLETYPE)\n#define\tG_CYC_FILL\t\t(3 << G_MDSFT_CYCLETYPE)\n\n/* G_SETOTHERMODE_H gSetTexturePersp */\n#define G_TP_NONE\t(0 << G_MDSFT_TEXTPERSP)\n#define G_TP_PERSP\t(1 << G_MDSFT_TEXTPERSP)\n\n/* G_SETOTHERMODE_H gSetTextureDetail */\n#define G_TD_CLAMP\t(0 << G_MDSFT_TEXTDETAIL)\n#define G_TD_SHARPEN\t(1 << G_MDSFT_TEXTDETAIL)\n#define G_TD_DETAIL\t(2 << G_MDSFT_TEXTDETAIL)\n\n/* G_SETOTHERMODE_H gSetTextureLOD */\n#define G_TL_TILE\t(0 << G_MDSFT_TEXTLOD)\n#define G_TL_LOD\t(1 << G_MDSFT_TEXTLOD)\n\n/* G_SETOTHERMODE_H gSetTextureLUT */\n#define G_TT_NONE\t(0 << G_MDSFT_TEXTLUT)\n#define G_TT_RGBA16\t(2 << G_MDSFT_TEXTLUT)\n#define G_TT_IA16\t(3 << G_MDSFT_TEXTLUT)\n\n/* G_SETOTHERMODE_H gSetTextureFilter */\n#define G_TF_POINT\t(0 << G_MDSFT_TEXTFILT)\n#define G_TF_AVERAGE\t(3 << G_MDSFT_TEXTFILT)\n#define G_TF_BILERP\t(2 << G_MDSFT_TEXTFILT)\n\n/* G_SETOTHERMODE_H gSetTextureConvert */\n#define G_TC_CONV\t(0 << G_MDSFT_TEXTCONV)\n#define G_TC_FILTCONV\t(5 << G_MDSFT_TEXTCONV)\n#define G_TC_FILT\t(6 << G_MDSFT_TEXTCONV)\n\n/* G_SETOTHERMODE_H gSetCombineKey */\n#define G_CK_NONE\t(0 << G_MDSFT_COMBKEY)\n#define G_CK_KEY\t(1 << G_MDSFT_COMBKEY)\n\n/* G_SETOTHERMODE_H gSetColorDither */\n#define\tG_CD_MAGICSQ\t\t(0 << G_MDSFT_RGBDITHER)\n#define\tG_CD_BAYER\t\t(1 << G_MDSFT_RGBDITHER)\n#define\tG_CD_NOISE\t\t(2 << G_MDSFT_RGBDITHER)\n\n#ifndef _HW_VERSION_1\n#define\tG_CD_DISABLE\t\t(3 << G_MDSFT_RGBDITHER)\n#define\tG_CD_ENABLE\t\tG_CD_NOISE\t/* HW 1.0 compatibility mode */\n#else\n#define G_CD_ENABLE\t\t(1 << G_MDSFT_COLORDITHER)\n#define G_CD_DISABLE\t\t(0 << G_MDSFT_COLORDITHER)\n#endif\n\n/* G_SETOTHERMODE_H gSetAlphaDither */\n#define\tG_AD_PATTERN\t\t(0 << G_MDSFT_ALPHADITHER)\n#define\tG_AD_NOTPATTERN\t\t(1 << G_MDSFT_ALPHADITHER)\n#define\tG_AD_NOISE\t\t(2 << G_MDSFT_ALPHADITHER)\n#define\tG_AD_DISABLE\t\t(3 << G_MDSFT_ALPHADITHER)\n\n/* G_SETOTHERMODE_L gSetAlphaCompare */\n#define\tG_AC_NONE\t\t(0 << G_MDSFT_ALPHACOMPARE)\n#define\tG_AC_THRESHOLD\t\t(1 << G_MDSFT_ALPHACOMPARE)\n#define\tG_AC_DITHER\t\t(3 << G_MDSFT_ALPHACOMPARE)\n\n/* G_SETOTHERMODE_L gSetDepthSource */\n#define\tG_ZS_PIXEL\t\t(0 << G_MDSFT_ZSRCSEL)\n#define\tG_ZS_PRIM\t\t(1 << G_MDSFT_ZSRCSEL)\n\n/* G_SETOTHERMODE_L gSetRenderMode */\n#define\tAA_EN\t\t0x8\n#define\tZ_CMP\t\t0x10\n#define\tZ_UPD\t\t0x20\n#define\tIM_RD\t\t0x40\n#define\tCLR_ON_CVG\t0x80\n#define\tCVG_DST_CLAMP\t0\n#define\tCVG_DST_WRAP\t0x100\n#define\tCVG_DST_FULL\t0x200\n#define\tCVG_DST_SAVE\t0x300\n#define\tZMODE_OPA\t0\n#define\tZMODE_INTER\t0x400\n#define\tZMODE_XLU\t0x800\n#define\tZMODE_DEC\t0xc00\n#define\tCVG_X_ALPHA\t0x1000\n#define\tALPHA_CVG_SEL\t0x2000\n#define\tFORCE_BL\t0x4000\n#define\tTEX_EDGE\t0x0000 /* used to be 0x8000 */\n\n#define\tG_BL_CLR_IN\t0\n#define\tG_BL_CLR_MEM\t1\n#define\tG_BL_CLR_BL\t2\n#define\tG_BL_CLR_FOG\t3\n#define\tG_BL_1MA\t0\n#define\tG_BL_A_MEM\t1\n#define\tG_BL_A_IN\t0\n#define\tG_BL_A_FOG\t1\n#define\tG_BL_A_SHADE\t2\n#define\tG_BL_1\t\t2\n#define\tG_BL_0\t\t3\n\n#define\tGBL_c1(m1a, m1b, m2a, m2b)\t\\\n\t(m1a) << 30 | (m1b) << 26 | (m2a) << 22 | (m2b) << 18\n#define\tGBL_c2(m1a, m1b, m2a, m2b)\t\\\n\t(m1a) << 28 | (m1b) << 24 | (m2a) << 20 | (m2b) << 16\n\n#define\tRM_AA_ZB_OPA_SURF(clk)\t\t\t\t\t\\\n\tAA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP |\t\t\\\n\tZMODE_OPA | ALPHA_CVG_SEL |\t\t\t\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM)\n\n#define\tRM_RA_ZB_OPA_SURF(clk)\t\t\t\t\t\\\n\tAA_EN | Z_CMP | Z_UPD | CVG_DST_CLAMP |\t\t\t\\\n\tZMODE_OPA | ALPHA_CVG_SEL |\t\t\t\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM)\n\n#define\tRM_AA_ZB_XLU_SURF(clk)\t\t\t\t\t\\\n\tAA_EN | Z_CMP | IM_RD | CVG_DST_WRAP | CLR_ON_CVG |\t\\\n\tFORCE_BL | ZMODE_XLU |\t\t\t\t\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)\n\n#define\tRM_AA_ZB_OPA_DECAL(clk)\t\t\t\t\t\\\n\tAA_EN | Z_CMP | IM_RD | CVG_DST_WRAP | ALPHA_CVG_SEL |\t\\\n\tZMODE_DEC |\t\t\t\t\t\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM)\n\n#define\tRM_RA_ZB_OPA_DECAL(clk)\t\t\t\t\t\\\n\tAA_EN | Z_CMP | CVG_DST_WRAP | ALPHA_CVG_SEL |\t\t\\\n\tZMODE_DEC |\t\t\t\t\t\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM)\n\n#define\tRM_AA_ZB_XLU_DECAL(clk)\t\t\t\t\t\\\n\tAA_EN | Z_CMP | IM_RD | CVG_DST_WRAP | CLR_ON_CVG |\t\\\n\tFORCE_BL | ZMODE_DEC |\t\t\t\t\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)\n\n#define\tRM_AA_ZB_OPA_INTER(clk)\t\t\t\t\t\\\n\tAA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP |\t\t\\\n\tALPHA_CVG_SEL |\tZMODE_INTER |\t\t\t\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM)\n\n#define\tRM_RA_ZB_OPA_INTER(clk)\t\t\t\t\t\\\n\tAA_EN | Z_CMP | Z_UPD | CVG_DST_CLAMP |\t\t\t\\\n\tALPHA_CVG_SEL |\tZMODE_INTER |\t\t\t\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM)\n\n#define\tRM_AA_ZB_XLU_INTER(clk)\t\t\t\t\t\\\n\tAA_EN | Z_CMP | IM_RD | CVG_DST_WRAP | CLR_ON_CVG |\t\\\n\tFORCE_BL | ZMODE_INTER |\t\t\t\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)\n\n#define\tRM_AA_ZB_XLU_LINE(clk)\t\t\t\t\t\\\n\tAA_EN | Z_CMP | IM_RD | CVG_DST_CLAMP | CVG_X_ALPHA |\t\\\n\tALPHA_CVG_SEL | FORCE_BL | ZMODE_XLU |\t\t\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)\n\n#define\tRM_AA_ZB_DEC_LINE(clk)\t\t\t\t\t\\\n\tAA_EN | Z_CMP | IM_RD | CVG_DST_SAVE | CVG_X_ALPHA |\t\\\n\tALPHA_CVG_SEL | FORCE_BL | ZMODE_DEC |\t\t\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)\n\n#define\tRM_AA_ZB_TEX_EDGE(clk)\t\t\t\t\t\\\n\tAA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP |\t\t\\\n\tCVG_X_ALPHA | ALPHA_CVG_SEL | ZMODE_OPA | TEX_EDGE |\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM)\n\n#define\tRM_AA_ZB_TEX_INTER(clk)\t\t\t\t\t\\\n\tAA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP |\t\t\\\n\tCVG_X_ALPHA | ALPHA_CVG_SEL | ZMODE_INTER | TEX_EDGE |\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM)\n\n#define\tRM_AA_ZB_SUB_SURF(clk)\t\t\t\t\t\\\n\tAA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_FULL |\t\t\\\n\tZMODE_OPA | ALPHA_CVG_SEL |\t\t\t\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM)\n\n#define\tRM_AA_ZB_PCL_SURF(clk)\t\t\t\t\t\\\n\tAA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP |\t\t\\\n\tZMODE_OPA | G_AC_DITHER | \t\t\t\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)\n\n#define\tRM_AA_ZB_OPA_TERR(clk)\t\t\t\t\t\\\n\tAA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP |\t\t\\\n\tZMODE_OPA | ALPHA_CVG_SEL |\t\t\t\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)\n\n#define\tRM_AA_ZB_TEX_TERR(clk)\t\t\t\t\t\\\n\tAA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_CLAMP |\t\t\\\n\tCVG_X_ALPHA | ALPHA_CVG_SEL | ZMODE_OPA | TEX_EDGE |\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)\n\n#define\tRM_AA_ZB_SUB_TERR(clk)\t\t\t\t\t\\\n\tAA_EN | Z_CMP | Z_UPD | IM_RD | CVG_DST_FULL |\t\t\\\n\tZMODE_OPA | ALPHA_CVG_SEL |\t\t\t\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)\n\n\n#define\tRM_AA_OPA_SURF(clk)\t\t\t\t\t\\\n\tAA_EN | IM_RD | CVG_DST_CLAMP |\t\t\t\t\\\n\tZMODE_OPA | ALPHA_CVG_SEL |\t\t\t\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM)\n\n#define\tRM_RA_OPA_SURF(clk)\t\t\t\t\t\\\n\tAA_EN | CVG_DST_CLAMP |\t\t\t\t\\\n\tZMODE_OPA | ALPHA_CVG_SEL |\t\t\t\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM)\n\n#define\tRM_AA_XLU_SURF(clk)\t\t\t\t\t\\\n\tAA_EN | IM_RD | CVG_DST_WRAP | CLR_ON_CVG | FORCE_BL |\t\\\n\tZMODE_OPA |\t\t\t\t\t\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)\n\n#define\tRM_AA_XLU_LINE(clk)\t\t\t\t\t\\\n\tAA_EN | IM_RD | CVG_DST_CLAMP | CVG_X_ALPHA |\t\t\\\n\tALPHA_CVG_SEL | FORCE_BL | ZMODE_OPA |\t\t\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)\n\n#define\tRM_AA_DEC_LINE(clk)\t\t\t\t\t\\\n\tAA_EN | IM_RD | CVG_DST_FULL | CVG_X_ALPHA |\t\t\\\n\tALPHA_CVG_SEL | FORCE_BL | ZMODE_OPA |\t\t\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)\n\n#define\tRM_AA_TEX_EDGE(clk)\t\t\t\t\t\\\n\tAA_EN | IM_RD | CVG_DST_CLAMP |\t\t\t\t\\\n\tCVG_X_ALPHA | ALPHA_CVG_SEL | ZMODE_OPA | TEX_EDGE |\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM)\n\n#define\tRM_AA_SUB_SURF(clk)\t\t\t\t\t\\\n\tAA_EN | IM_RD | CVG_DST_FULL |\t\t\t\t\\\n\tZMODE_OPA | ALPHA_CVG_SEL |\t\t\t\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM)\n\n#define\tRM_AA_PCL_SURF(clk)\t\t\t\t\t\\\n\tAA_EN | IM_RD | CVG_DST_CLAMP |\t\t\t\t\\\n\tZMODE_OPA | G_AC_DITHER | \t\t\t\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)\n\n#define\tRM_AA_OPA_TERR(clk)\t\t\t\t\t\\\n\tAA_EN | IM_RD | CVG_DST_CLAMP |\t\t\t\t\\\n\tZMODE_OPA | ALPHA_CVG_SEL |\t\t\t\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)\n\n#define\tRM_AA_TEX_TERR(clk)\t\t\t\t\t\\\n\tAA_EN | IM_RD | CVG_DST_CLAMP |\t\t\t\t\\\n\tCVG_X_ALPHA | ALPHA_CVG_SEL | ZMODE_OPA | TEX_EDGE |\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)\n\n#define\tRM_AA_SUB_TERR(clk)\t\t\t\t\t\\\n\tAA_EN | IM_RD | CVG_DST_FULL |\t\t\t\t\\\n\tZMODE_OPA | ALPHA_CVG_SEL |\t\t\t\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)\n\n\n#define\tRM_ZB_OPA_SURF(clk)\t\t\t\t\t\\\n\tZ_CMP | Z_UPD | CVG_DST_FULL | ALPHA_CVG_SEL |\t\t\\\n\tZMODE_OPA |\t\t\t\t\t\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM)\n\t\n#define\tRM_ZB_XLU_SURF(clk)\t\t\t\t\t\\\n\tZ_CMP | IM_RD | CVG_DST_FULL | FORCE_BL | ZMODE_XLU |\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)\n\t\n#define\tRM_ZB_OPA_DECAL(clk)\t\t\t\t\t\\\n\tZ_CMP | CVG_DST_FULL | ALPHA_CVG_SEL | ZMODE_DEC |\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM)\n\t\n#define\tRM_ZB_XLU_DECAL(clk)\t\t\t\t\t\\\n\tZ_CMP | IM_RD | CVG_DST_FULL | FORCE_BL | ZMODE_DEC |\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)\n\t\n#define\tRM_ZB_CLD_SURF(clk)\t\t\t\t\t\\\n\tZ_CMP | IM_RD | CVG_DST_SAVE | FORCE_BL | ZMODE_XLU |\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)\n\t\n#define\tRM_ZB_OVL_SURF(clk)\t\t\t\t\t\\\n\tZ_CMP | IM_RD | CVG_DST_SAVE | FORCE_BL | ZMODE_DEC |\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)\n\t\n#define\tRM_ZB_PCL_SURF(clk)\t\t\t\t\t\\\n\tZ_CMP | Z_UPD | CVG_DST_FULL | ZMODE_OPA |\t\t\\\n\tG_AC_DITHER | \t\t\t\t\t\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1)\n\n\n#define\tRM_OPA_SURF(clk)\t\t\t\t\t\\\n\tCVG_DST_CLAMP | FORCE_BL | ZMODE_OPA |\t\t\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1)\n\n#define\tRM_XLU_SURF(clk)\t\t\t\t\t\\\n\tIM_RD | CVG_DST_FULL | FORCE_BL | ZMODE_OPA |\t\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)\n\n#define\tRM_TEX_EDGE(clk)\t\t\t\t\t\\\n\tCVG_DST_CLAMP | CVG_X_ALPHA | ALPHA_CVG_SEL | FORCE_BL |\\\n\tZMODE_OPA | TEX_EDGE | AA_EN |\t\t\t\t\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1)\n\n#define\tRM_CLD_SURF(clk)\t\t\t\t\t\\\n\tIM_RD | CVG_DST_SAVE | FORCE_BL | ZMODE_OPA |\t\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)\n\n#define\tRM_PCL_SURF(clk)\t\t\t\t\t\\\n\tCVG_DST_FULL | FORCE_BL | ZMODE_OPA | \t\t\t\\\n\tG_AC_DITHER | \t\t\t\t\t\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1)\n\n#define\tRM_ADD(clk)\t\t\t\t\t\\\n\tIM_RD | CVG_DST_SAVE | FORCE_BL | ZMODE_OPA |\t\\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_A_FOG, G_BL_CLR_MEM, G_BL_1)\n\n#define\tRM_NOOP(clk)\t\\\n\tGBL_c##clk(0, 0, 0, 0)\n\n#define RM_VISCVG(clk) \\\n\tIM_RD | FORCE_BL |     \\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_0, G_BL_CLR_BL, G_BL_A_MEM)\n\n/* for rendering to an 8-bit framebuffer */\n#define RM_OPA_CI(clk)                    \\\n\tCVG_DST_CLAMP | ZMODE_OPA |          \\\n\tGBL_c##clk(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1)\n\n/* Custom version of RM_AA_ZB_XLU_SURF with Z_UPD */\n#define RM_CUSTOM_AA_ZB_XLU_SURF(clk)\t\t\t\t\\\n\tRM_AA_ZB_XLU_SURF(clk) | Z_UPD\n\n\n#define\tG_RM_AA_ZB_OPA_SURF\tRM_AA_ZB_OPA_SURF(1)\n#define\tG_RM_AA_ZB_OPA_SURF2\tRM_AA_ZB_OPA_SURF(2)\n#define\tG_RM_AA_ZB_XLU_SURF\tRM_AA_ZB_XLU_SURF(1)\n#define\tG_RM_AA_ZB_XLU_SURF2\tRM_AA_ZB_XLU_SURF(2)\n#define\tG_RM_AA_ZB_OPA_DECAL\tRM_AA_ZB_OPA_DECAL(1)\n#define\tG_RM_AA_ZB_OPA_DECAL2\tRM_AA_ZB_OPA_DECAL(2)\n#define\tG_RM_AA_ZB_XLU_DECAL\tRM_AA_ZB_XLU_DECAL(1)\n#define\tG_RM_AA_ZB_XLU_DECAL2\tRM_AA_ZB_XLU_DECAL(2)\n#define\tG_RM_AA_ZB_OPA_INTER\tRM_AA_ZB_OPA_INTER(1)\n#define\tG_RM_AA_ZB_OPA_INTER2\tRM_AA_ZB_OPA_INTER(2)\n#define\tG_RM_AA_ZB_XLU_INTER\tRM_AA_ZB_XLU_INTER(1)\n#define\tG_RM_AA_ZB_XLU_INTER2\tRM_AA_ZB_XLU_INTER(2)\n#define\tG_RM_AA_ZB_XLU_LINE\tRM_AA_ZB_XLU_LINE(1)\n#define\tG_RM_AA_ZB_XLU_LINE2\tRM_AA_ZB_XLU_LINE(2)\n#define\tG_RM_AA_ZB_DEC_LINE\tRM_AA_ZB_DEC_LINE(1)\n#define\tG_RM_AA_ZB_DEC_LINE2\tRM_AA_ZB_DEC_LINE(2)\n#define\tG_RM_AA_ZB_TEX_EDGE\tRM_AA_ZB_TEX_EDGE(1)\n#define\tG_RM_AA_ZB_TEX_EDGE2\tRM_AA_ZB_TEX_EDGE(2)\n#define\tG_RM_AA_ZB_TEX_INTER\tRM_AA_ZB_TEX_INTER(1)\n#define\tG_RM_AA_ZB_TEX_INTER2\tRM_AA_ZB_TEX_INTER(2)\n#define\tG_RM_AA_ZB_SUB_SURF\tRM_AA_ZB_SUB_SURF(1)\n#define\tG_RM_AA_ZB_SUB_SURF2\tRM_AA_ZB_SUB_SURF(2)\n#define\tG_RM_AA_ZB_PCL_SURF\tRM_AA_ZB_PCL_SURF(1)\n#define\tG_RM_AA_ZB_PCL_SURF2\tRM_AA_ZB_PCL_SURF(2)\n#define\tG_RM_AA_ZB_OPA_TERR\tRM_AA_ZB_OPA_TERR(1)\n#define\tG_RM_AA_ZB_OPA_TERR2\tRM_AA_ZB_OPA_TERR(2)\n#define\tG_RM_AA_ZB_TEX_TERR\tRM_AA_ZB_TEX_TERR(1)\n#define\tG_RM_AA_ZB_TEX_TERR2\tRM_AA_ZB_TEX_TERR(2)\n#define\tG_RM_AA_ZB_SUB_TERR\tRM_AA_ZB_SUB_TERR(1)\n#define\tG_RM_AA_ZB_SUB_TERR2\tRM_AA_ZB_SUB_TERR(2)\n\n#define\tG_RM_RA_ZB_OPA_SURF\tRM_RA_ZB_OPA_SURF(1)\n#define\tG_RM_RA_ZB_OPA_SURF2\tRM_RA_ZB_OPA_SURF(2)\n#define\tG_RM_RA_ZB_OPA_DECAL\tRM_RA_ZB_OPA_DECAL(1)\n#define\tG_RM_RA_ZB_OPA_DECAL2\tRM_RA_ZB_OPA_DECAL(2)\n#define\tG_RM_RA_ZB_OPA_INTER\tRM_RA_ZB_OPA_INTER(1)\n#define\tG_RM_RA_ZB_OPA_INTER2\tRM_RA_ZB_OPA_INTER(2)\n\n#define\tG_RM_AA_OPA_SURF\tRM_AA_OPA_SURF(1)\n#define\tG_RM_AA_OPA_SURF2\tRM_AA_OPA_SURF(2)\n#define\tG_RM_AA_XLU_SURF\tRM_AA_XLU_SURF(1)\n#define\tG_RM_AA_XLU_SURF2\tRM_AA_XLU_SURF(2)\n#define\tG_RM_AA_XLU_LINE\tRM_AA_XLU_LINE(1)\n#define\tG_RM_AA_XLU_LINE2\tRM_AA_XLU_LINE(2)\n#define\tG_RM_AA_DEC_LINE\tRM_AA_DEC_LINE(1)\n#define\tG_RM_AA_DEC_LINE2\tRM_AA_DEC_LINE(2)\n#define\tG_RM_AA_TEX_EDGE\tRM_AA_TEX_EDGE(1)\n#define\tG_RM_AA_TEX_EDGE2\tRM_AA_TEX_EDGE(2)\n#define\tG_RM_AA_SUB_SURF\tRM_AA_SUB_SURF(1)\n#define\tG_RM_AA_SUB_SURF2\tRM_AA_SUB_SURF(2)\n#define\tG_RM_AA_PCL_SURF\tRM_AA_PCL_SURF(1)\n#define\tG_RM_AA_PCL_SURF2\tRM_AA_PCL_SURF(2)\n#define\tG_RM_AA_OPA_TERR\tRM_AA_OPA_TERR(1)\n#define\tG_RM_AA_OPA_TERR2\tRM_AA_OPA_TERR(2)\n#define\tG_RM_AA_TEX_TERR\tRM_AA_TEX_TERR(1)\n#define\tG_RM_AA_TEX_TERR2\tRM_AA_TEX_TERR(2)\n#define\tG_RM_AA_SUB_TERR\tRM_AA_SUB_TERR(1)\n#define\tG_RM_AA_SUB_TERR2\tRM_AA_SUB_TERR(2)\n\n#define\tG_RM_RA_OPA_SURF\tRM_RA_OPA_SURF(1)\n#define\tG_RM_RA_OPA_SURF2\tRM_RA_OPA_SURF(2)\n\n#define\tG_RM_ZB_OPA_SURF\tRM_ZB_OPA_SURF(1)\n#define\tG_RM_ZB_OPA_SURF2\tRM_ZB_OPA_SURF(2)\n#define\tG_RM_ZB_XLU_SURF\tRM_ZB_XLU_SURF(1)\n#define\tG_RM_ZB_XLU_SURF2\tRM_ZB_XLU_SURF(2)\n#define\tG_RM_ZB_OPA_DECAL\tRM_ZB_OPA_DECAL(1)\n#define\tG_RM_ZB_OPA_DECAL2\tRM_ZB_OPA_DECAL(2)\n#define\tG_RM_ZB_XLU_DECAL\tRM_ZB_XLU_DECAL(1)\n#define\tG_RM_ZB_XLU_DECAL2\tRM_ZB_XLU_DECAL(2)\n#define\tG_RM_ZB_CLD_SURF\tRM_ZB_CLD_SURF(1)\n#define\tG_RM_ZB_CLD_SURF2\tRM_ZB_CLD_SURF(2)\n#define\tG_RM_ZB_OVL_SURF\tRM_ZB_OVL_SURF(1)\n#define\tG_RM_ZB_OVL_SURF2\tRM_ZB_OVL_SURF(2)\n#define\tG_RM_ZB_PCL_SURF\tRM_ZB_PCL_SURF(1)\n#define\tG_RM_ZB_PCL_SURF2\tRM_ZB_PCL_SURF(2)\n\n#define\tG_RM_OPA_SURF\t\tRM_OPA_SURF(1)\n#define\tG_RM_OPA_SURF2\t\tRM_OPA_SURF(2)\n#define\tG_RM_XLU_SURF\t\tRM_XLU_SURF(1)\n#define\tG_RM_XLU_SURF2\t\tRM_XLU_SURF(2)\n#define\tG_RM_CLD_SURF\t\tRM_CLD_SURF(1)\n#define\tG_RM_CLD_SURF2\t\tRM_CLD_SURF(2)\n#define\tG_RM_TEX_EDGE\t\tRM_TEX_EDGE(1)\n#define\tG_RM_TEX_EDGE2\t\tRM_TEX_EDGE(2)\n#define\tG_RM_PCL_SURF\t\tRM_PCL_SURF(1)\n#define\tG_RM_PCL_SURF2\t\tRM_PCL_SURF(2)\n#define G_RM_ADD       \t\tRM_ADD(1)\n#define G_RM_ADD2      \t\tRM_ADD(2)\n#define G_RM_NOOP       \tRM_NOOP(1)\n#define G_RM_NOOP2      \tRM_NOOP(2)\n#define G_RM_VISCVG    \t\tRM_VISCVG(1)\n#define G_RM_VISCVG2    \tRM_VISCVG(2)\n#define G_RM_OPA_CI         RM_OPA_CI(1)\n#define G_RM_OPA_CI2        RM_OPA_CI(2)\n\n#define G_RM_CUSTOM_AA_ZB_XLU_SURF\tRM_CUSTOM_AA_ZB_XLU_SURF(1)\n#define G_RM_CUSTOM_AA_ZB_XLU_SURF2\tRM_CUSTOM_AA_ZB_XLU_SURF(2)\n\n\n#define\tG_RM_FOG_SHADE_A\tGBL_c1(G_BL_CLR_FOG, G_BL_A_SHADE, G_BL_CLR_IN, G_BL_1MA)\n#define\tG_RM_FOG_PRIM_A\t\tGBL_c1(G_BL_CLR_FOG, G_BL_A_FOG, G_BL_CLR_IN, G_BL_1MA)\n#define\tG_RM_PASS\t\tGBL_c1(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1)\n\n/*\n * G_SETCONVERT: K0-5\n */\n#define\tG_CV_K0\t\t175\n#define\tG_CV_K1\t\t-43\n#define\tG_CV_K2\t\t-89\n#define\tG_CV_K3\t\t222\n#define\tG_CV_K4\t\t114\n#define\tG_CV_K5\t\t42\n\n/*\n * G_SETSCISSOR: interlace mode\n */\n#define\tG_SC_NON_INTERLACE\t0\n#define\tG_SC_ODD_INTERLACE\t3\n#define\tG_SC_EVEN_INTERLACE\t2\n\n/* flags to inhibit pushing of the display list (on branch) */\n#define G_DL_PUSH\t\t0x00\n#define G_DL_NOPUSH\t\t0x01\n\n/*\n * BEGIN C-specific section: (typedef's)\n */\n#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)\n\n/*\n * Data Structures\n *\n * NOTE:\n * The DMA transfer hardware requires 64-bit aligned, 64-bit multiple-\n * sized transfers. This important hardware optimization is unfortunately\n * reflected in the programming interface, with some structures\n * padded and alignment enforced.\n *\n * Since structures are aligned to the boundary of the \"worst-case\"\n * element, we can't depend on the C compiler to align things\n * properly.\n *\n * 64-bit structure alignment is enforced by wrapping structures with \n * unions that contain a dummy \"long long int\".  Why this works is\n * explained in the ANSI C Spec, or on page 186 of the second edition\n * of K&R, \"The C Programming Language\".\n *\n * The price we pay for this is a little awkwardness referencing the\n * structures through the union. There is no memory penalty, since\n * all the structures are at least 64-bits the dummy alignment field\n * does not increase the size of the union.\n *\n * Static initialization of these union structures works because\n * the ANSI C spec states that static initialization for unions\n * works by using the first union element. We put the dummy alignment\n * field last for this reason.\n *\n * (it's possible a newer 64-bit compiler from MIPS might make this\n * easier with a flag, but we can't wait for it...)\n *\n */\n\n/*\n * Vertex (set up for use with colors)\n */\ntypedef struct {\n#ifndef GBI_FLOATS\n\tshort\t\tob[3];\t/* x, y, z */\n#else\n\tfloat\t\tob[3];\t/* x, y, z */\n#endif\n\tunsigned short\tflag;\n\tshort\t\ttc[2];\t/* texture coord */\n\tunsigned char\tcn[4];\t/* color & alpha */\n} Vtx_t;\n\n/*\n * Vertex (set up for use with normals)\n */\ntypedef struct {\n#ifndef GBI_FLOATS\n\tshort\t\tob[3];\t/* x, y, z */\n#else\n\tfloat\t\tob[3];\t/* x, y, z */\n#endif\n\tunsigned short\tflag;\n\tshort\t\ttc[2];\t/* texture coord */\n\tsigned char\tn[3];\t/* normal */\n\tunsigned char   a;      /* alpha  */\n} Vtx_tn;\n\ntypedef union {\n    Vtx_t\t\tv;  /* Use this one for colors  */\n    Vtx_tn              n;  /* Use this one for normals */\n    long long int\tforce_structure_alignment;\n} Vtx;\n\n/*\n * Sprite structure\n */\n\ntypedef struct {\n  void *SourceImagePointer;\n  void *TlutPointer;\n  short Stride;\n  short SubImageWidth;\n  short SubImageHeight;\n  char  SourceImageType;\n  char  SourceImageBitSize;\n  short SourceImageOffsetS;\n  short SourceImageOffsetT;\n  /* 20 bytes for above */\n\n  /* padding to bring structure size to 64 bit allignment */\n  char dummy[4]; \n\n} uSprite_t;\n\ntypedef union {\t\n  uSprite_t  s;\n\n  /* Need to make sure this is 64 bit aligned */   \n  long long int         force_structure_allignment[3];\n} uSprite;\n\n/*\n * Triangle face\n */\ntypedef struct {\n\tunsigned char\tflag;\n\tunsigned char\tv[3];\n} Tri;\n\n#ifndef GBI_FLOATS\n/*\n * 4x4 matrix, fixed point s15.16 format.\n * First 8 words are integer portion of the 4x4 matrix\n * Last 8 words are the fraction portion of the 4x4 matrix\n */\ntypedef s32\tMtx_t[4][4];\n\ntypedef union {\n    Mtx_t\t\tm;\n    long long int\tforce_structure_alignment;\n} Mtx;\n#else\ntypedef struct {\n    float m[4][4];\n} Mtx;\n#endif\n\n/*\n * Viewport\n */\n\n/*\n *\n * This magic value is the maximum INTEGER z-range of the hardware\n * (there are also 16-bits of fraction, which are introduced during\n * any transformations). This is not just a good idea, it's the law.\n * Feeding the hardware eventual z-coordinates (after any transforms\n * or scaling) bigger than this, will not work.\n *\n * This number is DIFFERENT than G_MAXFBZ, which is the maximum value\n * you want to use to initialize the z-buffer.\n *\n * The reason these are different is mildly interesting, but too long\n * to explain here. It is basically the result of optimizations in the\n * hardware. A more generic API might hide this detail from the users,\n * but we don't have the ucode to do that...\n *\n */\n#define G_MAXZ\t\t0x03ff\t/* 10 bits of integer screen-Z precision */\n\n/*\n * The viewport structure elements have 2 bits of fraction, necessary\n * to accomodate the sub-pixel positioning scaling for the hardware.\n * This can also be exploited to handle odd-sized viewports.\n *\n * Accounting for these fractional bits, using the default projection\n * and viewing matrices, the viewport structure is initialized thusly:\n *\n *\t\t(SCREEN_WD/2)*4, (SCREEN_HT/2)*4, G_MAXZ, 0,\n *\t\t(SCREEN_WD/2)*4, (SCREEN_HT/2)*4, 0, 0,\n */\ntypedef struct {\n\tshort\tvscale[4];  /* scale, 2 bits fraction */\n\tshort\tvtrans[4];  /* translate, 2 bits fraction */\n\t/* both the above arrays are padded to 64-bit boundary */\n} Vp_t;\n\ntypedef union {\n    Vp_t\t\tvp;\n    long long int\tforce_structure_alignment;\n} Vp;\n\n/*\n * MOVEMEM indices\n *\n * Each of these indexes an entry in a dmem table\n * which points to a 1-4 word block of dmem in\n * which to store a 1-4 word DMA.\n *\n */\n#ifdef\tF3DEX_GBI_2\n/* 0,4 are reserved by G_MTX */\n# define G_MV_MMTX\t2\t\n# define G_MV_PMTX\t6\n# define G_MV_VIEWPORT\t8\n# define G_MV_LIGHT\t10\n# define G_MV_POINT\t12\n# define G_MV_MATRIX\t14\t\t/* NOTE: this is in moveword table */\n# define G_MVO_LOOKATX\t(0*24)\n# define G_MVO_LOOKATY\t(1*24)\n# define G_MVO_L0\t(2*24)\n# define G_MVO_L1\t(3*24)\n# define G_MVO_L2\t(4*24)\n# define G_MVO_L3\t(5*24)\n# define G_MVO_L4\t(6*24)\n# define G_MVO_L5\t(7*24)\n# define G_MVO_L6\t(8*24)\n# define G_MVO_L7\t(9*24)\n#else\t/* F3DEX_GBI_2 */\n# define G_MV_VIEWPORT\t0x80\n# define G_MV_LOOKATY\t0x82\n# define G_MV_LOOKATX\t0x84\n# define G_MV_L0\t0x86\n# define G_MV_L1\t0x88\n# define G_MV_L2\t0x8a\n# define G_MV_L3\t0x8c\n# define G_MV_L4\t0x8e\n# define G_MV_L5\t0x90\n# define G_MV_L6\t0x92\n# define G_MV_L7\t0x94\n# define G_MV_TXTATT\t0x96\n# define G_MV_MATRIX_1\t0x9e\t/* NOTE: this is in moveword table */\n# define G_MV_MATRIX_2\t0x98\n# define G_MV_MATRIX_3\t0x9a\n# define G_MV_MATRIX_4\t0x9c\n#endif\t/* F3DEX_GBI_2 */\n\n/*\n * MOVEWORD indices\n *\n * Each of these indexes an entry in a dmem table\n * which points to a word in dmem in dmem where\n * an immediate word will be stored.\n *\n */\n#define G_MW_MATRIX\t\t0x00\t/* NOTE: also used by movemem */\n#define G_MW_NUMLIGHT\t\t0x02\n#define G_MW_CLIP\t\t0x04\n#define G_MW_SEGMENT\t\t0x06\n#define G_MW_FOG\t\t0x08\n#define G_MW_LIGHTCOL\t\t0x0a\n#ifdef\tF3DEX_GBI_2\n# define G_MW_FORCEMTX\t\t0x0c\n#else\t/* F3DEX_GBI_2 */\n# define G_MW_POINTS\t\t0x0c\n#endif\t/* F3DEX_GBI_2 */\n#define\tG_MW_PERSPNORM\t\t0x0e\n\n/*\n * These are offsets from the address in the dmem table\n */ \n#define G_MWO_NUMLIGHT\t\t0x00\n#define G_MWO_CLIP_RNX\t\t0x04\n#define G_MWO_CLIP_RNY\t\t0x0c\n#define G_MWO_CLIP_RPX\t\t0x14\n#define G_MWO_CLIP_RPY\t\t0x1c\n#define G_MWO_SEGMENT_0\t\t0x00\n#define G_MWO_SEGMENT_1\t\t0x01\n#define G_MWO_SEGMENT_2\t\t0x02\n#define G_MWO_SEGMENT_3\t\t0x03\n#define G_MWO_SEGMENT_4\t\t0x04\n#define G_MWO_SEGMENT_5\t\t0x05\n#define G_MWO_SEGMENT_6\t\t0x06\n#define G_MWO_SEGMENT_7\t\t0x07\n#define G_MWO_SEGMENT_8\t\t0x08\n#define G_MWO_SEGMENT_9\t\t0x09\n#define G_MWO_SEGMENT_A\t\t0x0a\n#define G_MWO_SEGMENT_B\t\t0x0b\n#define G_MWO_SEGMENT_C\t\t0x0c\n#define G_MWO_SEGMENT_D\t\t0x0d\n#define G_MWO_SEGMENT_E\t\t0x0e\n#define G_MWO_SEGMENT_F\t\t0x0f\n#define G_MWO_FOG\t\t0x00\n#define G_MWO_aLIGHT_1\t\t0x00\n#define G_MWO_bLIGHT_1\t\t0x04\n#ifdef\tF3DEX_GBI_2\n#define G_MWO_aLIGHT_2\t\t0x18\n#define G_MWO_bLIGHT_2\t\t0x1c\n#define G_MWO_aLIGHT_3\t\t0x30\n#define G_MWO_bLIGHT_3\t\t0x34\n#define G_MWO_aLIGHT_4\t\t0x48\n#define G_MWO_bLIGHT_4\t\t0x4c\n#define G_MWO_aLIGHT_5\t\t0x60\n#define G_MWO_bLIGHT_5\t\t0x64\n#define G_MWO_aLIGHT_6\t\t0x78\n#define G_MWO_bLIGHT_6\t\t0x7c\n#define G_MWO_aLIGHT_7\t\t0x90\n#define G_MWO_bLIGHT_7\t\t0x94\n#define G_MWO_aLIGHT_8\t\t0xa8\n#define G_MWO_bLIGHT_8\t\t0xac\n#else\n#define G_MWO_aLIGHT_2\t\t0x20\n#define G_MWO_bLIGHT_2\t\t0x24\n#define G_MWO_aLIGHT_3\t\t0x40\n#define G_MWO_bLIGHT_3\t\t0x44\n#define G_MWO_aLIGHT_4\t\t0x60\n#define G_MWO_bLIGHT_4\t\t0x64\n#define G_MWO_aLIGHT_5\t\t0x80\n#define G_MWO_bLIGHT_5\t\t0x84\n#define G_MWO_aLIGHT_6\t\t0xa0\n#define G_MWO_bLIGHT_6\t\t0xa4\n#define G_MWO_aLIGHT_7\t\t0xc0\n#define G_MWO_bLIGHT_7\t\t0xc4\n#define G_MWO_aLIGHT_8\t\t0xe0\n#define G_MWO_bLIGHT_8\t\t0xe4\n#endif\n#define G_MWO_MATRIX_XX_XY_I\t0x00\n#define G_MWO_MATRIX_XZ_XW_I\t0x04\n#define G_MWO_MATRIX_YX_YY_I\t0x08\n#define G_MWO_MATRIX_YZ_YW_I\t0x0c\n#define G_MWO_MATRIX_ZX_ZY_I\t0x10\n#define G_MWO_MATRIX_ZZ_ZW_I\t0x14\n#define G_MWO_MATRIX_WX_WY_I\t0x18\n#define G_MWO_MATRIX_WZ_WW_I\t0x1c\n#define G_MWO_MATRIX_XX_XY_F\t0x20\n#define G_MWO_MATRIX_XZ_XW_F\t0x24\n#define G_MWO_MATRIX_YX_YY_F\t0x28\n#define G_MWO_MATRIX_YZ_YW_F\t0x2c\n#define G_MWO_MATRIX_ZX_ZY_F\t0x30\n#define G_MWO_MATRIX_ZZ_ZW_F\t0x34\n#define G_MWO_MATRIX_WX_WY_F\t0x38\n#define G_MWO_MATRIX_WZ_WW_F\t0x3c\n#define G_MWO_POINT_RGBA\t0x10\n#define G_MWO_POINT_ST\t\t0x14\n#define G_MWO_POINT_XYSCREEN\t0x18\n#define G_MWO_POINT_ZSCREEN\t0x1c\n\n/*\n * Light structure.\n *\n * Note: only directional (infinite) lights are currently supported.\n *\n * Note: the weird order is for the DMEM alignment benefit of \n * the microcode.\n *\n */\n\ntypedef struct {\n  unsigned char\tcol[3];\t\t/* diffuse light value (rgba) */\n  char \t\tpad1;\n  unsigned char\tcolc[3];\t/* copy of diffuse light value (rgba) */\n  char \t\tpad2;\n  signed char\tdir[3];\t\t/* direction of light (normalized) */\n  char \t\tpad3;\n} Light_t;\n\ntypedef struct {\n  unsigned char\tcol[3];\t\t/* ambient light value (rgba) */\n  char \t\tpad1;\n  unsigned char\tcolc[3];\t/* copy of ambient light value (rgba) */\n  char \t\tpad2;\n} Ambient_t;\n\ntypedef struct {\n  int\t\tx1,y1,x2,y2;\t/* texture offsets for highlight 1/2 */\n} Hilite_t;\n\ntypedef union {\n    Light_t\tl;\n    long long int\tforce_structure_alignment[2];\n} Light;\n\ntypedef union {\n    Ambient_t\tl;\n    long long int\tforce_structure_alignment[1];\n} Ambient;\n\ntypedef struct {\n    Ambient\ta;\n    Light\tl[7];\n} Lightsn;\n\ntypedef struct {\n    Ambient\ta;\n    Light\tl[1];\n} Lights0;\n\ntypedef struct {\n    Ambient\ta;\n    Light\tl[1];\n} Lights1;\n\ntypedef struct {\n    Ambient\ta;\n    Light\tl[2];\n} Lights2;\n\ntypedef struct {\n    Ambient\ta;\n    Light\tl[3];\n} Lights3;\n\ntypedef struct {\n    Ambient\ta;\n    Light\tl[4];\n} Lights4;\n\ntypedef struct {\n    Ambient\ta;\n    Light\tl[5];\n} Lights5;\n\ntypedef struct {\n    Ambient\ta;\n    Light\tl[6];\n} Lights6;\n\ntypedef struct {\n    Ambient\ta;\n    Light\tl[7];\n} Lights7;\n\ntypedef struct {\n    Light\tl[2];\n} LookAt;\n\ntypedef union {\n    Hilite_t\th;\n    long int\tforce_structure_alignment[4];\n} Hilite;\n\n#define gdSPDefLights0(ar,ag,ab)\t\t\t\t\t\\\n\t\t{ \t{{ {ar,ag,ab},0,{ar,ag,ab},0}},\t\t\t\\\n\t\t       {{{ { 0, 0, 0},0,{ 0, 0, 0},0,{ 0, 0, 0},0}}} }\n#define gdSPDefLights1(ar,ag,ab,r1,g1,b1,x1,y1,z1)\t\t\t\\\n\t\t{ \t{{ {ar,ag,ab},0,{ar,ag,ab},0}},\t\t\t\\\n\t\t       {{{ {r1,g1,b1},0,{r1,g1,b1},0,{x1,y1,z1},0}}} }\n#define gdSPDefLights2(ar,ag,ab,r1,g1,b1,x1,y1,z1,r2,g2,b2,x2,y2,z2)\t\\\n\t\t{ \t{{ {ar,ag,ab},0,{ar,ag,ab},0}},\t\t\t\\\n\t\t       {{{ {r1,g1,b1},0,{r1,g1,b1},0,{x1,y1,z1},0}},\t\\\n\t\t\t{{ {r2,g2,b2},0,{r2,g2,b2},0,{x2,y2,z2},0}}} }\n#define gdSPDefLights3(ar,ag,ab,r1,g1,b1,x1,y1,z1,r2,g2,b2,x2,y2,z2,r3,g3,b3,x3,y3,z3)\t\t\t\t\t\t\t\t\t\\\n\t\t{ \t{{ {ar,ag,ab},0,{ar,ag,ab},0}},\t\t\t\\\n\t\t       {{{ {r1,g1,b1},0,{r1,g1,b1},0,{x1,y1,z1},0}},\t\\\n\t\t\t{{ {r2,g2,b2},0,{r2,g2,b2},0,{x2,y2,z2},0}},\t\\\n\t\t\t{{ {r3,g3,b3},0,{r3,g3,b3},0,{x3,y3,z3},0}}} }\n#define gdSPDefLights4(ar,ag,ab,r1,g1,b1,x1,y1,z1,r2,g2,b2,x2,y2,z2,r3,g3,b3,x3,y3,z3,r4,g4,b4,x4,y4,z4)\t\t\t\t\t\t\\\n\t\t{ \t{{ {ar,ag,ab},0,{ar,ag,ab},0}},\t\t\t\\\n\t\t       {{{ {r1,g1,b1},0,{r1,g1,b1},0,{x1,y1,z1},0}},\t\\\n\t\t\t{{ {r2,g2,b2},0,{r2,g2,b2},0,{x2,y2,z2},0}},\t\\\n\t\t\t{{ {r3,g3,b3},0,{r3,g3,b3},0,{x3,y3,z3},0}},\t\\\n\t\t\t{{ {r4,g4,b4},0,{r4,g4,b4},0,{x4,y4,z4},0}}} }\n#define gdSPDefLights5(ar,ag,ab,r1,g1,b1,x1,y1,z1,r2,g2,b2,x2,y2,z2,r3,g3,b3,x3,y3,z3,r4,g4,b4,x4,y4,z4,r5,g5,b5,x5,y5,z5)\t\t\t\t\\\n\t\t{ \t{{ {ar,ag,ab},0,{ar,ag,ab},0}},\t\t\t\\\n\t\t       {{{ {r1,g1,b1},0,{r1,g1,b1},0,{x1,y1,z1},0}},\t\\\n\t\t\t{{ {r2,g2,b2},0,{r2,g2,b2},0,{x2,y2,z2},0}},\t\\\n\t\t\t{{ {r3,g3,b3},0,{r3,g3,b3},0,{x3,y3,z3},0}},\t\\\n\t\t\t{{ {r4,g4,b4},0,{r4,g4,b4},0,{x4,y4,z4},0}},\t\\\n\t\t\t{{ {r5,g5,b5},0,{r5,g5,b5},0,{x5,y5,z5},0}}} }\n\n\n#define gdSPDefLights6(ar,ag,ab,r1,g1,b1,x1,y1,z1,r2,g2,b2,x2,y2,z2,r3,g3,b3,x3,y3,z3,r4,g4,b4,x4,y4,z4,r5,g5,b5,x5,y5,z5,r6,g6,b6,x6,y6,z6)\t\t\\\n\t\t{ \t{{ {ar,ag,ab},0,{ar,ag,ab},0}},\t\t\t\\\n\t\t       {{{ {r1,g1,b1},0,{r1,g1,b1},0,{x1,y1,z1},0}},\t\\\n\t\t\t{{ {r2,g2,b2},0,{r2,g2,b2},0,{x2,y2,z2},0}},\t\\\n\t\t\t{{ {r3,g3,b3},0,{r3,g3,b3},0,{x3,y3,z3},0}},\t\\\n\t\t\t{{ {r4,g4,b4},0,{r4,g4,b4},0,{x4,y4,z4},0}},\t\\\n\t\t\t{{ {r5,g5,b5},0,{r5,g5,b5},0,{x5,y5,z5},0}},\t\\\n\t\t\t{{ {r6,g6,b6},0,{r6,g6,b6},0,{x6,y6,z6},0}}} }\n\n\n#define gdSPDefLights7(ar,ag,ab,r1,g1,b1,x1,y1,z1,r2,g2,b2,x2,y2,z2,r3,g3,b3,x3,y3,z3,r4,g4,b4,x4,y4,z4,r5,g5,b5,x5,y5,z5,r6,g6,b6,x6,y6,z6,r7,g7,b7,x7,y7,z7)\t\\\n\t\t{ \t{{ {ar,ag,ab},0,{ar,ag,ab},0}},\t\t\t\\\n\t\t       {{{ {r1,g1,b1},0,{r1,g1,b1},0,{x1,y1,z1},0}},\t\\\n\t\t\t{{ {r2,g2,b2},0,{r2,g2,b2},0,{x2,y2,z2},0}},\t\\\n\t\t\t{{ {r3,g3,b3},0,{r3,g3,b3},0,{x3,y3,z3},0}},\t\\\n\t\t\t{{ {r4,g4,b4},0,{r4,g4,b4},0,{x4,y4,z4},0}},\t\\\n\t\t\t{{ {r5,g5,b5},0,{r5,g5,b5},0,{x5,y5,z5},0}},\t\\\n\t\t\t{{ {r6,g6,b6},0,{r6,g6,b6},0,{x6,y6,z6},0}},\t\\\n\t\t\t{{ {r7,g7,b7},0,{r7,g7,b7},0,{x7,y7,z7},0}}} }\n\n\n#define gdSPDefLookAt(rightx,righty,rightz,upx,upy,upz)\t\t\t    \\\n\t\t{\t{{ {{0,0,0},0,{0,0,0},0,{rightx,righty,rightz},0}}, \\\n\t\t\t{ {{0,0x80,0},0,{0,0x80,0},0,{upx,upy,upz},0}}}   }\n\n/* Don't declare these for F3D_OLD to avoid bss reordering */\n#ifndef F3D_OLD\n/*\n *  Graphics DMA Packet\n */\ntypedef struct {\n\tint\t\tcmd:8;\n\tunsigned int\tpar:8;\n\tunsigned int\tlen:16;\n\tuintptr_t   \taddr;\n} Gdma;\n\n/*\n * Graphics Immediate Mode Packet types\n */\ntypedef struct {\n\t\tint\t\tcmd:8;\n\t\tint\t\tpad:24;\n\t\tTri\t\ttri;\n} Gtri;\n\ntypedef struct {\n\t\tint\t\tcmd:8;\n\t\tint\t\tpad1:24;\n\t\tint             pad2:24;\n\t\tunsigned char\tparam:8;\n} Gpopmtx;\n\n/*\n * typedef struct {\n * \t\tint\t\tcmd:8;\n * \t\tint\t\tpad0:24;\n * \t\tint\t\tpad1:4;\n * \t\tint\t\tnumber:4;\n * \t\tint\t\tbase:24;\n * } Gsegment;\n */\ntypedef struct {\n\t\tint\t\tcmd:8;\n\t\tint\t\tpad0:8;\n\t\tint\t\tmw_index:8;\n\t\tint\t\tnumber:8;\n\t\tint\t\tpad1:8;\n\t\tint\t\tbase:24;\n} Gsegment;\n\ntypedef struct {\n\t\tint\t\tcmd:8;\n\t\tint\t\tpad0:8;\n\t\tint\t\tsft:8;\n\t\tint\t\tlen:8;\n\t\tunsigned int\tdata:32;\n} GsetothermodeL;\n\ntypedef struct {\n\t\tint\t\tcmd:8;\n\t\tint\t\tpad0:8;\n\t\tint\t\tsft:8;\n\t\tint\t\tlen:8;\n\t\tunsigned int\tdata:32;\n} GsetothermodeH;\n\ntypedef struct {\n\t\tunsigned char\tcmd;\n\t\tunsigned char\tlodscale;\n\t\tunsigned char\ttile;\n\t\tunsigned char\ton;\n\t\tunsigned short\ts;\n\t\tunsigned short\tt;\n} Gtexture;\n\ntypedef struct {\n\t\tint\t\tcmd:8;\n\t\tint\t\tpad:24;\n\t\tTri\t\tline;\n} Gline3D;\n\ntypedef struct {\n\t\tint\t\tcmd:8;\n\t\tint\t\tpad1:24;\n\t\tshort int\tpad2;\n\t\tshort int       scale;\n} Gperspnorm;\n\n\n/*\n * RDP Packet types\n */\ntypedef struct {\n                int             cmd:8;\n                unsigned int    fmt:3;\n                unsigned int    siz:2;\n                unsigned int    pad:7;\n                unsigned int    wd:12;\t/* really only 10 bits, extra\t*/\n                uintptr_t       dram;\t/* to account for 1024\t\t*/\n} Gsetimg;\n\ntypedef struct {\n\t\tint\t\tcmd:8;\n\t\tunsigned int\tmuxs0:24;\n\t\tunsigned int\tmuxs1:32;\n} Gsetcombine;\n\ntypedef struct {\n\t\tint\t\tcmd:8;\n\t\tunsigned char\tpad;\n\t\tunsigned char\tprim_min_level;\n\t\tunsigned char\tprim_level;\n\t\tunsigned long\tcolor;\n} Gsetcolor;\n\ntypedef struct {\n\t\tint\t\tcmd:8;\n\t\tint\t\tx0:10;\n\t\tint\t\tx0frac:2;\n\t\tint\t\ty0:10;\n\t\tint\t\ty0frac:2;\n\t\tunsigned int\tpad:8;\n\t\tint\t\tx1:10;\n\t\tint\t\tx1frac:2;\n\t\tint\t\ty1:10;\n\t\tint\t\ty1frac:2;\n} Gfillrect;\n\ntypedef struct {\n\t\tint\t\tcmd:8;\n\t\tunsigned int\tfmt:3;\n\t\tunsigned int\tsiz:2;\n\t\tunsigned int\tpad0:1;\n\t\tunsigned int\tline:9;\n\t\tunsigned int\ttmem:9;\n\t\tunsigned int\tpad1:5;\n\t\tunsigned int\ttile:3;\n\t\tunsigned int\tpalette:4;\n\t\tunsigned int\tct:1;\n\t\tunsigned int\tmt:1;\n\t\tunsigned int\tmaskt:4;\n\t\tunsigned int\tshiftt:4;\n\t\tunsigned int\tcs:1;\n\t\tunsigned int\tms:1;\n\t\tunsigned int\tmasks:4;\n\t\tunsigned int\tshifts:4;\n} Gsettile;\n\ntypedef struct {\n\t\tint\t\tcmd:8;\n\t\tunsigned int\tsl:12;\n\t\tunsigned int\ttl:12;\n\t\tint\t\tpad:5;\n\t\tunsigned int\ttile:3;\n\t\tunsigned int\tsh:12;\n\t\tunsigned int\tth:12;\n} Gloadtile;\n\ntypedef Gloadtile Gloadblock;\n\ntypedef Gloadtile Gsettilesize;\n\ntypedef Gloadtile Gloadtlut;\n\ntypedef struct {\n\t\tunsigned int\tcmd:8;\t/* command\t\t\t*/\n\t\tunsigned int\txl:12;\t/* X coordinate of upper left\t*/\n\t\tunsigned int\tyl:12;\t/* Y coordinate of upper left\t*/\n\t\tunsigned int\tpad1:5;\t/* Padding\t\t\t*/\n\t\tunsigned int\ttile:3;\t/* Tile descriptor index\t*/\n\t\tunsigned int\txh:12;\t/* X coordinate of lower right\t*/\n\t\tunsigned int\tyh:12;\t/* Y coordinate of lower right\t*/\n\t\tunsigned int\ts:16;\t/* S texture coord at top left\t*/\n\t\tunsigned int\tt:16;\t/* T texture coord at top left\t*/\n\t\tunsigned int\tdsdx:16;/* Change in S per change in X\t*/\n\t\tunsigned int\tdtdy:16;/* Change in T per change in Y\t*/\n} Gtexrect;\n\n/*\n * Textured rectangles are 128 bits not 64 bits\n */\t\ntypedef struct {\n    unsigned long w0;\n    unsigned long w1;\n    unsigned long w2;\n    unsigned long w3;\n} TexRect;\n#endif\n\n#define\tMakeTexRect(xh,yh,flip,tile,xl,yl,s,t,dsdx,dtdy)\t\t\\\n\tG_TEXRECT, xh, yh, 0, flip, 0, tile, xl, yl, s, t, dsdx, dtdy\n\n/*\n * Generic Gfx Packet\n */\ntypedef struct {\n\tuintptr_t w0;\n\tuintptr_t w1;\n} Gwords;\n\n/*\n * This union is the fundamental type of the display list.\n * It is, by law, exactly 64 bits in size.\n *\n * (Edit: except on 64-bit, where it is exactly 128 bit. On little-endian or\n * 64-bit systems, only the 'words' member may be accessed; the rest of the\n * structs don't have matching layouts for now.)\n */\ntypedef union {\n\tGwords\t\twords;\n#if !defined(F3D_OLD) && IS_BIG_ENDIAN && !IS_64_BIT\n\tGdma\t\tdma;\n\tGtri\t\ttri;\n\tGline3D\t\tline;\n\tGpopmtx\t\tpopmtx;\n\tGsegment\tsegment;\n\tGsetothermodeH\tsetothermodeH;\n\tGsetothermodeL\tsetothermodeL;\n\tGtexture\ttexture;\n\tGperspnorm\tperspnorm;\n\tGsetimg\t\tsetimg;\n\tGsetcombine\tsetcombine;\n\tGsetcolor\tsetcolor;\n\tGfillrect\tfillrect;\t/* use for setscissor also */\n\tGsettile\tsettile;\n\tGloadtile\tloadtile;\t/* use for loadblock also, th is dxt */\n\tGsettilesize\tsettilesize;\n\tGloadtlut\tloadtlut;\n#endif\n\tlong long int\tforce_structure_alignment;\n} Gfx;\n\n/*\n * Macros to assemble the graphics display list\n */\n\n/*\n * DMA macros\n */\n#define\tgDma0p(pkt, c, s, l)\t\t\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = _SHIFTL((c), 24, 8) | _SHIFTL((l), 0, 24);\t\\\n\t_g->words.w1 = (uintptr_t)(s);\t\t\t\t\\\n}\n\n#define\tgsDma0p(c, s, l)\t\t\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t_SHIFTL((c), 24, 8) | _SHIFTL((l), 0, 24), (uintptr_t)(s)\t\\\n}}\n\n#define\tgDma1p(pkt, c, s, l, p)\t\t\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = (_SHIFTL((c), 24, 8) | _SHIFTL((p), 16, 8) |\t\\\n\t\t\t_SHIFTL((l), 0, 16));\t\t\t\t\\\n\t_g->words.w1 = (uintptr_t)(s);\t\t\t\t\\\n}\n\n#define\tgsDma1p(c, s, l, p)\t\t\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t(_SHIFTL((c), 24, 8) | _SHIFTL((p), 16, 8) | \t\t\t\\\n\t _SHIFTL((l), 0, 16)), \t\t\t\t\t\t\\\n        (uintptr_t)(s)\t\t\t\t\t\t\\\n}}\n\n#define\tgDma2p(pkt, c, adrs, len, idx, ofs)\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t_g->words.w0 = (_SHIFTL((c),24,8)|_SHIFTL(((len)-1)/8,19,5)|\t\\\n\t\t\t_SHIFTL((ofs)/8,8,8)|_SHIFTL((idx),0,8));\t\\\n\t_g->words.w1 = (uintptr_t)(adrs);\t\t\t\t\\\n}\n#define\tgsDma2p(c, adrs, len, idx, ofs)\t\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t(_SHIFTL((c),24,8)|_SHIFTL(((len)-1)/8,19,5)|\t\t\t\\\n\t _SHIFTL((ofs)/8,8,8)|_SHIFTL((idx),0,8)),\t\t\t\\\n        (uintptr_t)(adrs)\t\t\t\t\t\t\\\n}}\n\n#define\tgSPNoOp(pkt)\t\tgDma0p(pkt, G_SPNOOP, 0, 0)\n#define\tgsSPNoOp()\t\tgsDma0p(G_SPNOOP, 0, 0)\n\n#ifdef\tF3DEX_GBI_2\n# define\tgSPMatrix(pkt, m, p)\t\\\n\t\tgDma2p((pkt),G_MTX,(m),sizeof(Mtx),(p)^G_MTX_PUSH,0)\n# define\tgsSPMatrix(m, p)\t\\\n\t\tgsDma2p(     G_MTX,(m),sizeof(Mtx),(p)^G_MTX_PUSH,0)\n#else\t/* F3DEX_GBI_2 */\n# define\tgSPMatrix(pkt, m, p)\tgDma1p(pkt, G_MTX, m, sizeof(Mtx), p)\n# define\tgsSPMatrix(m, p)\tgsDma1p(G_MTX, m, sizeof(Mtx), p)\n#endif\t/* F3DEX_GBI_2 */\n\n#if\tdefined(F3DEX_GBI_2)\n/*\n * F3DEX_GBI_2: G_VTX GBI format was changed.\n *\n *        +--------+----+---+---+----+------+-+\n *  G_VTX |  cmd:8 |0000|  n:8  |0000|v0+n:7|0|\n *        +-+---+--+----+---+---+----+------+-+\n *        | |seg|         address             |\n *        +-+---+-----------------------------+\n */\n# define\tgSPVertex(pkt, v, n, v0)\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t_g->words.w0 =\t\t\t\t\t\t\t\\\n\t  _SHIFTL(G_VTX,24,8)|_SHIFTL((n),12,8)|_SHIFTL((v0)+(n),1,7);\t\\\n\t_g->words.w1 = (uintptr_t)(v);\t\t\t\t\\\n}\n# define\tgsSPVertex(v, n, v0)\t\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t(_SHIFTL(G_VTX,24,8)|_SHIFTL((n),12,8)|_SHIFTL((v0)+(n),1,7)),\t\\\n        (uintptr_t)(v)\t\t\t\t\t\t\\\n}}\n#elif\t(defined(F3DEX_GBI)||defined(F3DLP_GBI))\n/*\n * F3DEX_GBI: G_VTX GBI format was changed to support 64 vertice.\n *\n *        +--------+--------+------+----------+\n *  G_VTX |  cmd:8 |  v0:8  |  n:6 |length:10 |\n *        +-+---+--+--------+------+----------+\n *        | |seg|          address            |\n *        +-+---+-----------------------------+\n */\n# define\tgSPVertex(pkt, v, n, v0) \\\n                gDma1p((pkt),G_VTX,(v),((n)<<10)|(sizeof(Vtx)*(n)-1),(v0)*2)\n# define\tgsSPVertex(v, n, v0) \\\n                gsDma1p(G_VTX,(v),((n)<<10)|(sizeof(Vtx)*(n)-1),(v0)*2)\n#else\n# define\tgSPVertex(pkt, v, n, v0) \\\n                gDma1p(pkt, G_VTX, v, sizeof(Vtx)*(n),((n)-1)<<4|(v0))\n# define\tgsSPVertex(v, n, v0) \\\n                gsDma1p(G_VTX, v, sizeof(Vtx)*(n), ((n)-1)<<4|(v0))\n#endif\n\n\t\n#ifdef\tF3DEX_GBI_2\n# define gSPViewport(pkt, v)\t\\\n\t\tgDma2p((pkt), G_MOVEMEM, (v), sizeof(Vp), G_MV_VIEWPORT, 0)\n# define gsSPViewport(v)\t\\\n\t\tgsDma2p(      G_MOVEMEM, (v), sizeof(Vp), G_MV_VIEWPORT, 0)\n#else\t/* F3DEX_GBI_2 */\n# define gSPViewport(pkt,v)\t\\\n\t\tgDma1p((pkt), G_MOVEMEM, (v), sizeof(Vp), G_MV_VIEWPORT)\n# define gsSPViewport(v)\t\\\n\t\tgsDma1p(      G_MOVEMEM, (v), sizeof(Vp), G_MV_VIEWPORT)\n#endif\t/* F3DEX_GBI_2 */\n\n#define\tgSPDisplayList(pkt,dl)\tgDma1p(pkt,G_DL,dl,0,G_DL_PUSH)\n#define\tgsSPDisplayList(   dl)\tgsDma1p(   G_DL,dl,0,G_DL_PUSH)\n\n#define\tgSPBranchList(pkt,dl)\tgDma1p(pkt,G_DL,dl,0,G_DL_NOPUSH)\n#define\tgsSPBranchList(   dl)\tgsDma1p(   G_DL,dl,0,G_DL_NOPUSH)\n\n#define\tgSPSprite2DBase(pkt, s)\tgDma1p(pkt, G_SPRITE2D_BASE, s, sizeof(uSprite), 0)\n#define\tgsSPSprite2DBase(s)\tgsDma1p(G_SPRITE2D_BASE, s, sizeof(uSprite), 0)\n\n/*\n * RSP short command (no DMA required) macros\n */\n#define\tgImmp0(pkt, c)\t\t\t\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = _SHIFTL((c), 24, 8);\t\t\t\t\\\n}\n\n#define\tgsImmp0(c)\t\t\t\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t_SHIFTL((c), 24, 8)\t\t\t\t\t\t\\\n}}\n\n#define\tgImmp1(pkt, c, p0)\t\t\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = _SHIFTL((c), 24, 8);\t\t\t\t\\\n\t_g->words.w1 = (uintptr_t)(p0);\t\t\t\t\\\n}\n\n#define\tgsImmp1(c, p0)\t\t\t\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t_SHIFTL((c), 24, 8), (uintptr_t)(p0)\t\t\t\t\\\n}}\n\n#define\tgImmp2(pkt, c, p0, p1)\t\t\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = _SHIFTL((c), 24, 8);\t\t\t\t\\\n\t_g->words.w1 = _SHIFTL((p0), 16, 16) | _SHIFTL((p1), 8, 8);\t\\\n}\n\n#define\tgsImmp2(c, p0, p1)\t\t\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t_SHIFTL((c), 24, 8),  _SHIFTL((p0), 16, 16) | _SHIFTL((p1), 8, 8)\\\n}}\n\n#define\tgImmp3(pkt, c, p0, p1, p2)\t\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = _SHIFTL((c), 24, 8);\t\t\t\t\\\n\t_g->words.w1 = (_SHIFTL((p0), 16, 16) | _SHIFTL((p1), 8, 8) |\t\\\n\t\t\t_SHIFTL((p2), 0, 8));\t\t\t\t\\\n}\n\n#define\tgsImmp3(c, p0, p1, p2)\t\t\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t_SHIFTL((c), 24, 8), (_SHIFTL((p0), 16, 16) | \t\t\t\\\n\t\t\t      _SHIFTL((p1), 8, 8) | _SHIFTL((p2), 0, 8))\\\n}}\n\n#define\tgImmp21(pkt, c, p0, p1, dat)\t\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = (_SHIFTL((c), 24, 8)  | _SHIFTL((p0), 8, 16) |\t\\\n\t\t\t_SHIFTL((p1), 0, 8));\t\t\t\t\\\n\t_g->words.w1 = (uintptr_t) (dat);\t\t\t\t\\\n}\n\n#define\tgsImmp21(c, p0, p1, dat)\t\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t_SHIFTL((c), 24, 8) | _SHIFTL((p0), 8, 16) | _SHIFTL((p1), 0, 8),\\\n        (uintptr_t) (dat)\t\t\t\t\t\t\\\n}}\n\n#ifdef\tF3DEX_GBI_2\n#define gMoveWd(pkt, index, offset, data)\t\t\t\t\\\n\tgDma1p((pkt), G_MOVEWORD, data, offset, index)\n#define gsMoveWd(    index, offset, data)\t\t\t\t\\\n\tgsDma1p(      G_MOVEWORD, data, offset, index)\n#else\t/* F3DEX_GBI_2 */\n#define gMoveWd(pkt, index, offset, data)\t\t\t\t\\\n\tgImmp21((pkt), G_MOVEWORD, offset, index, data)\n#define gsMoveWd(    index, offset, data)\t\t\t\t\\\n\tgsImmp21(      G_MOVEWORD, offset, index, data)\n#endif\t/* F3DEX_GBI_2 */\n\n/* Sprite immediate macros, there is also a sprite dma macro above */\n\n#define gSPSprite2DScaleFlip(pkt, sx, sy, fx, fy)                       \\\n{                                                                       \\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = (_SHIFTL(G_SPRITE2D_SCALEFLIP, 24, 8) |          \\\n\t\t\t_SHIFTL((fx), 8, 8) |                           \\\n\t\t\t_SHIFTL((fy), 0, 8));\t                        \\\n\t_g->words.w1 = (_SHIFTL((sx), 16, 16) |                         \\\n\t\t\t_SHIFTL((sy),  0, 16));                         \\\n}\n\n#define gsSPSprite2DScaleFlip(sx, sy, fx, fy)                           \\\n{{                                                                       \\\n          (_SHIFTL(G_SPRITE2D_SCALEFLIP, 24, 8) |                       \\\n\t   _SHIFTL((fx), 8, 8) |                                        \\\n\t   _SHIFTL((fy), 0, 8)),\t                                \\\n\t  (_SHIFTL((sx), 16, 16) |                                      \\\n\t   _SHIFTL((sy),  0, 16))                                       \\\n}}\n\n#define gSPSprite2DDraw(pkt, px, py)                                    \\\n{                                                                       \\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = (_SHIFTL(G_SPRITE2D_DRAW, 24, 8));               \\\n\t_g->words.w1 = (_SHIFTL((px), 16, 16) |                         \\\n\t\t\t_SHIFTL((py),  0, 16));                         \\\n}\n\n#define gsSPSprite2DDraw(px, py)                                        \\\n{{                                                                       \\\n          (_SHIFTL(G_SPRITE2D_DRAW, 24, 8)),                            \\\n\t  (_SHIFTL((px), 16, 16) |                                      \\\n\t   _SHIFTL((py),  0, 16))                                       \\\n}}\n\n\n/*\n * Note: the SP1Triangle() and line macros multiply the vertex indices\n * by 10, this is an optimization for the microcode.\n */\n#if\t(defined(F3DLP_GBI)||defined(F3DEX_GBI))\n#  define __gsSP1Triangle_w1(v0, v1, v2)\t\t\t\\\n     (_SHIFTL((v0)*2,16,8)|_SHIFTL((v1)*2,8,8)|_SHIFTL((v2)*2,0,8))\n#  define __gsSP1Triangle_w1f(v0, v1, v2, flag)\t\t\t\\\n     (((flag) == 0) ? __gsSP1Triangle_w1(v0, v1, v2):\t\t\\\n      ((flag) == 1) ? __gsSP1Triangle_w1(v1, v2, v0):\t\t\\\n\t              __gsSP1Triangle_w1(v2, v0, v1))\n#  define __gsSPLine3D_w1(v0, v1, wd)\t\t\t\t\\\n     (_SHIFTL((v0)*2,16,8)|_SHIFT((v1)*2,8,8)|_SHIFT((wd),0,8))\n#  define __gsSPLine3D_w1f(v0, v1, wd, flag)\t\t\t\\\n     (((flag) == 0) ? __gsSPLine3D_w1(v0, v1, wd):\t\t\\\n\t              __gsSPLine3D_w1(v1, v0, wd))\n#  define __gsSP1Quadrangle_w1f(v0, v1, v2, v3, flag)\t\\\n  (((flag) == 0) ? __gsSP1Triangle_w1(v0, v1, v2):      \\\n   ((flag) == 1) ? __gsSP1Triangle_w1(v1, v2, v3):      \\\n   ((flag) == 2) ? __gsSP1Triangle_w1(v2, v3, v0):      \\\n                   __gsSP1Triangle_w1(v3, v0, v1))\n#  define __gsSP1Quadrangle_w2f(v0, v1, v2, v3, flag)\t\\\n  (((flag) == 0) ? __gsSP1Triangle_w1(v0, v2, v3):      \\\n   ((flag) == 1) ? __gsSP1Triangle_w1(v1, v3, v0):      \\\n   ((flag) == 2) ? __gsSP1Triangle_w1(v2, v0, v1):      \\\n                   __gsSP1Triangle_w1(v3, v1, v2))\n#else\n#  define __gsSP1Triangle_w1f(v0, v1, v2, flag)\t\t\t\\\n     (_SHIFTL((flag), 24,8)|_SHIFTL((v0)*10,16,8)|\t\t\\\n      _SHIFTL((v1)*10, 8,8)|_SHIFTL((v2)*10, 0,8))\n#  define __gsSPLine3D_w1f(v0, v1, wd, flag)\t\t\t\\\n     (_SHIFTL((flag), 24,8)|_SHIFTL((v0)*10,16,8)| \t\t\\\n      _SHIFTL((v1)*10, 8,8)|_SHIFTL((wd),    0,8))\n#endif\n\n#ifdef\tF3DEX_GBI_2\n/***\n ***  1 Triangle\n ***/\n#define gSP1Triangle(pkt, v0, v1, v2, flag)\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = _SHIFTL(G_TRI1, 24, 8)|\t\t\t\t\\\n\t\t\t__gsSP1Triangle_w1f(v0, v1, v2, flag);\t\t\\\n\t_g->words.w1 = 0;\t\t\t\t\t\t\\\n}\n#define gsSP1Triangle(v0, v1, v2, flag)\t\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t_SHIFTL(G_TRI1, 24, 8)|__gsSP1Triangle_w1f(v0, v1, v2, flag),\t\\\n\t0\t\t\t\t\t\t\t\t\\\n}}\n\n/***\n ***  Line\n ***/\n#define gSPLine3D(pkt, v0, v1, flag)\t\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = _SHIFTL(G_LINE3D, 24, 8)|\t\t\t\\\n\t\t\t__gsSPLine3D_w1f(v0, v1, 0, flag);\t\t\\\n\t_g->words.w1 = 0;\t\t\t\t\t\t\\\n}\n#define gsSPLine3D(v0, v1, flag)\t\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t_SHIFTL(G_LINE3D, 24, 8)|__gsSPLine3D_w1f(v0, v1, 0, flag),\t\\\n\t0\t\t\t\t\t\t\t\t\\\n}}\n\n/***\n ***  LineW\n ***/\n/* these macros are the same as SPLine3D, except they have an\n * additional parameter for width. The width is added to the \"minimum\"\n * thickness, which is 1.5 pixels. The units for width are in\n * half-pixel units, so a width of 1 translates to (.5 + 1.5) or\n * a 2.0 pixels wide line.\n */\n#define gSPLineW3D(pkt, v0, v1, wd, flag)\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = _SHIFTL(G_LINE3D, 24, 8)|\t\t\t\\\n\t\t\t__gsSPLine3D_w1f(v0, v1, wd, flag);\t\t\\\n\t_g->words.w1 = 0;\t\t\t\t\t\t\\\n}\n#define gsSPLineW3D(v0, v1, wd, flag)\t\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t_SHIFTL(G_LINE3D, 24, 8)|__gsSPLine3D_w1f(v0, v1, wd, flag),\t\\\n\t0\t\t\t\t\t\t\t\t\\\n}}\n\n/***\n ***  1 Quadrangle\n ***/\n#define gSP1Quadrangle(pkt, v0, v1, v2, v3, flag)                       \\\n{                                                                       \\\n        Gfx *_g = (Gfx *)(pkt);                                         \\\n                                                                        \\\n        _g->words.w0 = (_SHIFTL(G_QUAD, 24, 8)|\t                        \\\n                        __gsSP1Quadrangle_w1f(v0, v1, v2, v3, flag));   \\\n        _g->words.w1 =  __gsSP1Quadrangle_w2f(v0, v1, v2, v3, flag);    \\\n}\n\n#define gsSP1Quadrangle(v0, v1, v2, v3, flag)                           \\\n{{                                                                       \\\n        (_SHIFTL(G_QUAD, 24, 8)|                                        \\\n         __gsSP1Quadrangle_w1f(v0, v1, v2, v3, flag)),                  \\\n         __gsSP1Quadrangle_w2f(v0, v1, v2, v3, flag)                    \\\n}}\n#else\t/* F3DEX_GBI_2 */\n\n/***\n ***  1 Triangle\n ***/\t\n#define gSP1Triangle(pkt, v0, v1, v2, flag)\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = _SHIFTL(G_TRI1, 24, 8);\t\t\t\t\\\n\t_g->words.w1 = __gsSP1Triangle_w1f(v0, v1, v2, flag);\t\t\\\n}\n#define gsSP1Triangle(v0, v1, v2, flag)\t\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t_SHIFTL(G_TRI1, 24, 8),\t\t\t\t\t\t\\\n\t__gsSP1Triangle_w1f(v0, v1, v2, flag)\t\t\t\t\\\n}}\n\n/***\n ***  Line\n ***/\n#define gSPLine3D(pkt, v0, v1, flag)\t\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = _SHIFTL(G_LINE3D, 24, 8);\t\t\t\\\n\t_g->words.w1 = __gsSPLine3D_w1f(v0, v1, 0, flag);\t\t\\\n}\n#define gsSPLine3D(v0, v1, flag)\t\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t_SHIFTL(G_LINE3D, 24, 8),\t\t\t\t\t\\\n\t__gsSPLine3D_w1f(v0, v1, 0, flag)\t\t\t\t\\\n}}\n\n/***\n ***  LineW\n ***/\n/* these macros are the same as SPLine3D, except they have an\n * additional parameter for width. The width is added to the \"minimum\"\n * thickness, which is 1.5 pixels. The units for width are in\n * half-pixel units, so a width of 1 translates to (.5 + 1.5) or\n * a 2.0 pixels wide line.\n */\n#define gSPLineW3D(pkt, v0, v1, wd, flag)\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = _SHIFTL(G_LINE3D, 24, 8);\t\t\t\\\n\t_g->words.w1 = __gsSPLine3D_w1f(v0, v1, wd, flag);\t\t\\\n}\n#define gsSPLineW3D(v0, v1, wd, flag)\t\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t_SHIFTL(G_LINE3D, 24, 8),\t\t\t\t\t\\\n\t__gsSPLine3D_w1f(v0, v1, wd, flag)\t\t\t\t\\\n}}\n\n/***\n ***  1 Quadrangle\n ***/\n#define gSP1Quadrangle(pkt, v0, v1, v2, v3, flag)                       \\\n{                                                                       \\\n        Gfx *_g = (Gfx *)(pkt);                                         \\\n                                                                        \\\n        _g->words.w0 = (_SHIFTL(G_TRI2, 24, 8)|\t                        \\\n                        __gsSP1Quadrangle_w1f(v0, v1, v2, v3, flag));   \\\n        _g->words.w1 =  __gsSP1Quadrangle_w2f(v0, v1, v2, v3, flag);    \\\n}\n\n#define gsSP1Quadrangle(v0, v1, v2, v3, flag)                           \\\n{{                                                                       \\\n        (_SHIFTL(G_TRI2, 24, 8)|                                        \\\n         __gsSP1Quadrangle_w1f(v0, v1, v2, v3, flag)),                  \\\n         __gsSP1Quadrangle_w2f(v0, v1, v2, v3, flag)                    \\\n}}\n#endif\t/* F3DEX_GBI_2 */\n\n#if\t(defined(F3DLP_GBI)||defined(F3DEX_GBI))\n/***\n ***  2 Triangles\n ***/\n#define gSP2Triangles(pkt, v00, v01, v02, flag0, v10, v11, v12, flag1)\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = (_SHIFTL(G_TRI2, 24, 8)|\t\t\t\t\\\n\t\t\t__gsSP1Triangle_w1f(v00, v01, v02, flag0));\t\\\n        _g->words.w1 =  __gsSP1Triangle_w1f(v10, v11, v12, flag1); \t\\\n}\n\n#define gsSP2Triangles(v00, v01, v02, flag0, v10, v11, v12, flag1)\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t(_SHIFTL(G_TRI2, 24, 8)|\t\t\t\t\t\\\n\t __gsSP1Triangle_w1f(v00, v01, v02, flag0)),\t\t\t\\\n\t __gsSP1Triangle_w1f(v10, v11, v12, flag1)\t\t\t\\\n}}\n#else\n#define gSP2Triangles(pkt, v00, v01, v02, flag0, v10, v11, v12, flag1)\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tgSP1Triangle(pkt, v00, v01, v02, flag0);\t\t\t\\\n\tgSP1Triangle(pkt, v10, v11, v12, flag1);\t\t\t\\\n}\n#define gsSP2Triangles(v00, v01, v02, flag0, v10, v11, v12, flag1)\t\\\n\tgsSP1Triangle(v00, v01, v02, flag0),\t\t\t\t\\\n\tgsSP1Triangle(v10, v11, v12, flag1)\n#endif\t/* F3DEX_GBI/F3DLP_GBI */\n\n#if\t(defined(F3DEX_GBI)||defined(F3DLP_GBI))\n#define gSPCullDisplayList(pkt,vstart,vend)\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = _SHIFTL(G_CULLDL, 24, 8) | \t\t\t\\\n\t\t\t_SHIFTL((vstart)*2, 0, 16);\t\t\t\\\n\t_g->words.w1 = _SHIFTL((vend)*2, 0, 16);\t\t\t\\\n}\n\n#define gsSPCullDisplayList(vstart,vend)\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t_SHIFTL(G_CULLDL, 24, 8) | _SHIFTL((vstart)*2, 0, 16),\t\t\\\n\t_SHIFTL((vend)*2, 0, 16)\t\t\t\t\t\\\n}}\n\n#else\n#define gSPCullDisplayList(pkt,vstart,vend)\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = _SHIFTL(G_CULLDL, 24, 8) |\t\t\t\\\n                       ((0x0f & (vstart))*40);\t\t\t\t\\\n\t_g->words.w1 = (unsigned int)((0x0f & ((vend)+1))*40);\t\t\\\n}\n\n#define gsSPCullDisplayList(vstart,vend)\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t_SHIFTL(G_CULLDL, 24, 8) | ((0x0f & (vstart))*40), \t\t\\\n\t((0x0f & ((vend)+1))*40)\t\t\t\t\t\\\n}}\n#endif\n\n#define gSPSegment(pkt, segment, base)\t\t\t\t\t\\\n\tgMoveWd(pkt, G_MW_SEGMENT, (segment)*4, base)\n#define gsSPSegment(segment, base)\t\t\t\t\t\\\n\tgsMoveWd(    G_MW_SEGMENT, (segment)*4, base)\n\n/*\n * Clipping Macros\n */\n#define FR_NEG_FRUSTRATIO_1\t0x00000001\n#define FR_POS_FRUSTRATIO_1\t0x0000ffff\n#define FR_NEG_FRUSTRATIO_2\t0x00000002\n#define FR_POS_FRUSTRATIO_2\t0x0000fffe\n#define FR_NEG_FRUSTRATIO_3\t0x00000003\n#define FR_POS_FRUSTRATIO_3\t0x0000fffd\n#define FR_NEG_FRUSTRATIO_4\t0x00000004\n#define FR_POS_FRUSTRATIO_4\t0x0000fffc\n#define FR_NEG_FRUSTRATIO_5\t0x00000005\n#define FR_POS_FRUSTRATIO_5\t0x0000fffb\n#define FR_NEG_FRUSTRATIO_6\t0x00000006\n#define FR_POS_FRUSTRATIO_6\t0x0000fffa\n/*\n * r should be one of: FRUSTRATIO_1, FRUSTRATIO_2, FRUSTRATIO_3, ... FRUSTRATIO_6\n */\n#define gSPClipRatio(pkt, r)\t\t\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tgMoveWd(pkt, G_MW_CLIP, G_MWO_CLIP_RNX, FR_NEG_##r);\t\t\\\n\tgMoveWd(pkt, G_MW_CLIP, G_MWO_CLIP_RNY, FR_NEG_##r);\t\t\\\n\tgMoveWd(pkt, G_MW_CLIP, G_MWO_CLIP_RPX, FR_POS_##r);\t\t\\\n\tgMoveWd(pkt, G_MW_CLIP, G_MWO_CLIP_RPY, FR_POS_##r);\t\t\\\n}\n\n#define gsSPClipRatio(r)\t\t\t\t\t\t\\\n\tgsMoveWd(G_MW_CLIP, G_MWO_CLIP_RNX, FR_NEG_##r),\t\t\\\n\tgsMoveWd(G_MW_CLIP, G_MWO_CLIP_RNY, FR_NEG_##r),\t\t\\\n\tgsMoveWd(G_MW_CLIP, G_MWO_CLIP_RPX, FR_POS_##r),\t\t\\\n\tgsMoveWd(G_MW_CLIP, G_MWO_CLIP_RPY, FR_POS_##r)\n\n/*\n * Insert values into Matrix\n *\n * where = element of matrix (byte offset)\n * num   = new element (32 bit value replacing 2 int or 2 frac matrix \n *                                 componants\n */\n#ifdef\tF3DEX_GBI_2\n#define gSPInsertMatrix(pkt, where, num)\t\t\t\t\\\n\tERROR!! gSPInsertMatrix is no longer supported.\n#define gsSPInsertMatrix(where, num)\t\t\t\t\t\\\n\tERROR!! gsSPInsertMatrix is no longer supported.\n#else\n#define gSPInsertMatrix(pkt, where, num)\t\t\t\t\\\n\tgMoveWd(pkt, G_MW_MATRIX, where, num)\n#define gsSPInsertMatrix(where, num)\t\t\t\t\t\\\n\tgsMoveWd(G_MW_MATRIX, where, num)\n#endif\n\n/*\n * Load new matrix directly\n *\n * mptr = pointer to matrix\n */\n#ifdef\tF3DEX_GBI_2\n#define\tgSPForceMatrix(pkt, mptr)\t\t\t\t\t\\\n{\tgDma2p((pkt),G_MOVEMEM,(mptr),sizeof(Mtx),G_MV_MATRIX,0);\t\\\n\tgMoveWd((pkt), G_MW_FORCEMTX,0,0x00010000);\t\t\t\\\n}\n#define\tgsSPForceMatrix(mptr)\t\t\t\t\t\t\\\n\tgsDma2p(G_MOVEMEM,(mptr),sizeof(Mtx),G_MV_MATRIX,0),\t\t\\\n\tgsMoveWd(G_MW_FORCEMTX,0,0x00010000)\n\t\n#else\t/* F3DEX_GBI_2 */\n#define\tgSPForceMatrix(pkt, mptr)\t\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tgDma1p(pkt, G_MOVEMEM, mptr,              16, G_MV_MATRIX_1);\t\\\n\tgDma1p(pkt, G_MOVEMEM, (char *)(mptr)+16, 16, G_MV_MATRIX_2);\t\\\n\tgDma1p(pkt, G_MOVEMEM, (char *)(mptr)+32, 16, G_MV_MATRIX_3);\t\\\n\tgDma1p(pkt, G_MOVEMEM, (char *)(mptr)+48, 16, G_MV_MATRIX_4);\t\\\n}\n#define\tgsSPForceMatrix(mptr)\t\t\t\t\t\t\\\n\tgsDma1p(    G_MOVEMEM, mptr,              16, G_MV_MATRIX_1),\t\\\n\tgsDma1p(    G_MOVEMEM, (char *)(mptr)+16, 16, G_MV_MATRIX_2),\t\\\n\tgsDma1p(    G_MOVEMEM, (char *)(mptr)+32, 16, G_MV_MATRIX_3),\t\\\n\tgsDma1p(    G_MOVEMEM, (char *)(mptr)+48, 16, G_MV_MATRIX_4)\n#endif\t/* F3DEX_GBI_2 */\n\n/*\n * Insert values into Points\n *\n * point = point number 0-15\n * where = which element of point to modify (byte offset into point)\n * num   = new value (32 bit)\n */\n#if\t(defined(F3DEX_GBI)||defined(F3DLP_GBI))\n# define gSPModifyVertex(pkt, vtx, where, val)\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t_g->words.w0 = (_SHIFTL(G_MODIFYVTX,24,8)|\t\t\t\\\n\t\t        _SHIFTL((where),16,8)|_SHIFTL((vtx)*2,0,16));\t\\\n\t_g->words.w1 = (unsigned int)(val);\t\t\t\t\\\n}\n# define gsSPModifyVertex(vtx, where, val)\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t_SHIFTL(G_MODIFYVTX,24,8)|\t\t\t\t\t\\\n\t_SHIFTL((where),16,8)|_SHIFTL((vtx)*2,0,16),\t\t\t\\\n\t(unsigned int)(val)\t\t\t\t\t\t\\\n}}\n#else\n# define gSPModifyVertex(pkt, vtx, where, val)\t\t\t\t\\\n\t gMoveWd(pkt, G_MW_POINTS, (vtx)*40+(where), val)\n# define gsSPModifyVertex(vtx, where, val)\t\t\t\t\\\n\t gsMoveWd(G_MW_POINTS, (vtx)*40+(where), val)\n#endif\n\n#if\t(defined(F3DEX_GBI)||defined(F3DLP_GBI))\n/*\n *  gSPBranchLessZ   Branch DL if (vtx.z) less than or equal (zval).\n *\n *  dl\t = DL branch to \n *  vtx  = Vertex\n *  zval = Screen depth\n *  near = Near plane\n *  far  = Far  plane\n *  flag = G_BZ_PERSP or G_BZ_ORTHO\n */\n\n#define\tG_BZ_PERSP\t0\n#define\tG_BZ_ORTHO\t1\n\n#define\tG_DEPTOZSrg(zval, near, far, flag, zmin, zmax)\t\t\t\\\n(((unsigned int)FTOFIX32(((flag) == G_BZ_PERSP ? \t\t\t\\\n\t\t\t  (1.0f-(float)(near)/(float)(zval)) / \t\t\\\n\t\t\t  (1.0f-(float)(near)/(float)(far )) :\t\t\\\n\t\t\t  ((float)(zval) - (float)(near)) /\t\t\\\n\t\t\t  ((float)(far ) - (float)(near))))) *\t\t\\\n (((int)((zmax) - (zmin)))&~1) + (int)FTOFIX32(zmin))\n\n#define\tG_DEPTOZS(zval, near, far, flag) \\\n\tG_DEPTOZSrg(zval, near, far, flag, 0, G_MAXZ)\n\n#define\tgSPBranchLessZrg(pkt, dl, vtx, zval, near, far, flag, zmin, zmax) \\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t_g->words.w0 = _SHIFTL(G_RDPHALF_1,24,8);\t\t\t\\\n\t_g->words.w1 = (uintptr_t)(dl);\t\t\t\t\\\n\t_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t_g->words.w0 = (_SHIFTL(G_BRANCH_Z,24,8)|\t\t\t\\\n\t\t        _SHIFTL((vtx)*5,12,12)|_SHIFTL((vtx)*2,0,12));\t\\\n\t_g->words.w1 = G_DEPTOZSrg(zval, near, far, flag, zmin, zmax);\t\\\n}\n\n#define\tgsSPBranchLessZrg(dl, vtx, zval, near, far, flag, zmin, zmax)\t      \\\n{{\t_SHIFTL(G_RDPHALF_1,24,8),\t\t\t\t\t      \\\n\t(uintptr_t)(dl),\t\t\t\t\t\t}},    \\\n{{\t_SHIFTL(G_BRANCH_Z,24,8)|_SHIFTL((vtx)*5,12,12)|_SHIFTL((vtx)*2,0,12),\\\n\tG_DEPTOZSrg(zval, near, far, flag, zmin, zmax),\t\t\t}}\n\n#define\tgSPBranchLessZ(pkt, dl, vtx, zval, near, far, flag)\t\t\\\n\tgSPBranchLessZrg(pkt, dl, vtx, zval, near, far, flag, 0, G_MAXZ)\n#define\tgsSPBranchLessZ(dl, vtx, zval, near, far, flag)\t\t\t\\\n\tgsSPBranchLessZrg(dl, vtx, zval, near, far, flag, 0, G_MAXZ)\n\n/*\n *  gSPBranchLessZraw   Branch DL if (vtx.z) less than or equal (raw zval).\n *\n *  dl\t = DL branch to \n *  vtx  = Vertex\n *  zval = Raw value of screen depth\n */\n#define\tgSPBranchLessZraw(pkt, dl, vtx, zval)\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t_g->words.w0 = _SHIFTL(G_RDPHALF_1,24,8);\t\t\t\\\n\t_g->words.w1 = (uintptr_t)(dl);\t\t\t\t\\\n\t_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t_g->words.w0 = (_SHIFTL(G_BRANCH_Z,24,8)|\t\t\t\\\n\t\t        _SHIFTL((vtx)*5,12,12)|_SHIFTL((vtx)*2,0,12));\t\\\n\t_g->words.w1 = (unsigned int)(zval);\t\t\t\t\\\n}\n\n#define\tgsSPBranchLessZraw(dl, vtx, zval)\t\t\t\t\\\n{{\t_SHIFTL(G_RDPHALF_1,24,8),\t\t\t\t\t      \\\n\t(uintptr_t)(dl),\t\t\t\t\t\t}},    \\\n{{\t_SHIFTL(G_BRANCH_Z,24,8)|_SHIFTL((vtx)*5,12,12)|_SHIFTL((vtx)*2,0,12),\\\n\t(unsigned int)(zval),\t\t\t\t\t\t}}\n\n/*\n * gSPLoadUcode   RSP loads specified ucode.\n *\n * uc_start  = ucode text section start\n * uc_dstart = ucode data section start\n */\n#define\tgSPLoadUcodeEx(pkt, uc_start, uc_dstart, uc_dsize)\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t_g->words.w0 = _SHIFTL(G_RDPHALF_1,24,8);\t\t\t\\\n\t_g->words.w1 = (uintptr_t)(uc_dstart);\t\t\t\\\n\t_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t_g->words.w0 = (_SHIFTL(G_LOAD_UCODE,24,8)|\t\t\t\\\n\t\t\t_SHIFTL((int)(uc_dsize)-1,0,16));\t\t\\\n\t_g->words.w1 = (uintptr_t)(uc_start);\t\t\t\\\n}\n\n#define\tgsSPLoadUcodeEx(uc_start, uc_dstart, uc_dsize)\t\t\t\\\n{{\t_SHIFTL(G_RDPHALF_1,24,8),\t\t\t\t\t\\\n\t(uintptr_t)(uc_dstart),\t\t\t\t}},\t\\\n{{\t_SHIFTL(G_LOAD_UCODE,24,8)|\t\t\t\t\t\\\n\t  _SHIFTL((int)(uc_dsize)-1,0,16),\t\t\t\t\\\n\t(uintptr_t)(uc_start),\t\t\t\t}}\n\n#define\tgSPLoadUcode(pkt, uc_start, uc_dstart)\t\t\t\t\\\n        gSPLoadUcodeEx((pkt), (uc_start), (uc_dstart), SP_UCODE_DATA_SIZE)\n#define\tgsSPLoadUcode(uc_start, uc_dstart)\t\t\t\t\\\n        gsSPLoadUcodeEx((uc_start), (uc_dstart), SP_UCODE_DATA_SIZE)\n\n#define\tgSPLoadUcodeL(pkt, ucode)\t\t\t\t\t\\\n        gSPLoadUcode((pkt), OS_K0_TO_PHYSICAL(&##ucode##TextStart),\t\\\n\t\t            OS_K0_TO_PHYSICAL(&##ucode##DataStart))\n#define\tgsSPLoadUcodeL(ucode)\t\t\t\t\t\t\\\n        gsSPLoadUcode(OS_K0_TO_PHYSICAL(&##ucode##TextStart),\t\t\\\n\t\t      OS_K0_TO_PHYSICAL(&##ucode##DataStart))\n#endif\n\n#ifdef\tF3DEX_GBI_2\n/*\n * gSPDma_io  DMA to/from DMEM/IMEM for DEBUG.\n */\n#define\tgSPDma_io(pkt, flag, dmem, dram, size)\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t_g->words.w0 = _SHIFTL(G_DMA_IO,24,8)|_SHIFTL((flag),23,1)|\t\\\n\t  _SHIFTL((dmem)/8,13,10)|_SHIFTL((size)-1,0,12);\t\t\\\n\t_g->words.w1 = (uintptr_t)(dram);\t\t\t\t\\\n}\n\n#define\tgsSPDma_io(flag, dmem, dram, size)\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t_SHIFTL(G_DMA_IO,24,8)|_SHIFTL((flag),23,1)|\t\t\t\\\n\t_SHIFTL((dmem)/8,13,10)|_SHIFTL((size)-1,0,12),\t\t\t\\\n\t(uintptr_t)(dram)\t\t\t\t\t\t\\\n}}\n\n#define\tgSPDmaRead(pkt,dmem,dram,size)\tgSPDma_io((pkt),0,(dmem),(dram),(size))\n#define\tgsSPDmaRead(dmem,dram,size)\tgsSPDma_io(0,(dmem),(dram),(size))\n#define\tgSPDmaWrite(pkt,dmem,dram,size)\tgSPDma_io((pkt),1,(dmem),(dram),(size))\n#define\tgsSPDmaWrite(dmem,dram,size)\tgsSPDma_io(1,(dmem),(dram),(size))\n#endif\n\n/*\n * Lighting Macros\n */\n#ifdef\tF3DEX_GBI_2\n# define NUML(n)\t((n)*24)\n#else\n# define NUML(n)\t(((n)+1)*32 + 0x80000000)\n#endif\n#define NUMLIGHTS_0\t1\n#define NUMLIGHTS_1\t1\n#define NUMLIGHTS_2\t2\n#define NUMLIGHTS_3\t3\n#define NUMLIGHTS_4\t4\n#define NUMLIGHTS_5\t5\n#define NUMLIGHTS_6\t6\n#define NUMLIGHTS_7\t7\n/*\n * n should be one of: NUMLIGHTS_0, NUMLIGHTS_1, ..., NUMLIGHTS_7\n * NOTE: in addition to the number of directional lights specified, \n *       there is always 1 ambient light\n */\n#define gSPNumLights(pkt, n)\t\t\t\t\t\t\\\n\tgMoveWd(pkt, G_MW_NUMLIGHT, G_MWO_NUMLIGHT, NUML(n))\n#define gsSPNumLights(n)\t\t\t\t\t\t\\\n\tgsMoveWd(    G_MW_NUMLIGHT, G_MWO_NUMLIGHT, NUML(n))\n\n#define LIGHT_1\t\t1\n#define LIGHT_2\t\t2\n#define LIGHT_3\t\t3\n#define LIGHT_4\t\t4\n#define LIGHT_5\t\t5\t\n#define LIGHT_6\t\t6\n#define LIGHT_7\t\t7\n#define LIGHT_8\t\t8\n/*\n * l should point to a Light struct\n * n should be one of: LIGHT_1, LIGHT_2, ..., LIGHT_8\n * NOTE: the highest numbered light is always the ambient light (eg if there are\n *       3 directional lights defined: gsSPNumLights(NUMLIGHTS_3), then lights\n *       LIGHT_1 through LIGHT_3 will be the directional lights and light\n *       LIGHT_4 will be the ambient light.\n */\n#ifdef\tF3DEX_GBI_2\n# define gSPLight(pkt, l, n)\t\\\n\t  gDma2p((pkt),G_MOVEMEM,(l),sizeof(Light),G_MV_LIGHT,(n)*24+24)\n# define gsSPLight(l, n)\t\\\n\t gsDma2p(      G_MOVEMEM,(l),sizeof(Light),G_MV_LIGHT,(n)*24+24)\n#else\t/* F3DEX_GBI_2 */\n# define gSPLight(pkt, l, n)\t\\\n\t gDma1p(pkt, G_MOVEMEM, l, sizeof(Light),((n)-1)*2+G_MV_L0)\n# define gsSPLight(l, n)\t\\\n\t gsDma1p(    G_MOVEMEM, l, sizeof(Light),((n)-1)*2+G_MV_L0)\n#endif\t/* F3DEX_GBI_2 */\n\n/*\n * gSPLightColor changes color of light without recalculating light direction\n * col is a 32 bit word with r,g,b,a (alpha is ignored)\n * n should be one of LIGHT_1, LIGHT_2, ..., LIGHT_8\n */\n#define gSPLightColor(pkt, n, col)\t\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tgMoveWd(pkt, G_MW_LIGHTCOL, G_MWO_a##n, col);\t\t\t\\\n\tgMoveWd(pkt, G_MW_LIGHTCOL, G_MWO_b##n, col);\t\t\t\\\n}\n#define gsSPLightColor(n, col)\t\t\t\t\t\t\\\n\tgsMoveWd(G_MW_LIGHTCOL, G_MWO_a##n, col),\t\t\t\\\n\tgsMoveWd(G_MW_LIGHTCOL, G_MWO_b##n, col)\n\n/* These macros use a structure \"name\" which is init'd with the gdSPDefLights macros*/\n\n#define gSPSetLights0(pkt,name)\t\t\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tgSPNumLights(pkt,NUMLIGHTS_0);\t\t\t\t\t\\\n\tgSPLight(pkt,&name.l[0],1);\t\t\t\t\t\\\n\tgSPLight(pkt,&name.a,2);\t\t\t\t\t\\\n}\n#define gsSPSetLights0(name)\t\t\t\t\t\t\\\n\tgsSPNumLights(NUMLIGHTS_0),\t\t\t\t\t\\\n\tgsSPLight(&name.l[0],1),\t\t\t\t\t\\\n\tgsSPLight(&name.a,2)\n\n#define gSPSetLights1(pkt,name)\t\t\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tgSPNumLights(pkt,NUMLIGHTS_1);\t\t\t\t\t\\\n\tgSPLight(pkt,&name.l[0],1);\t\t\t\t\t\\\n\tgSPLight(pkt,&name.a,2);\t\t\t\t\t\\\n}\n#define gsSPSetLights1(name)\t\t\t\t\t\t\\\n\tgsSPNumLights(NUMLIGHTS_1),\t\t\t\t\t\\\n\tgsSPLight(&name.l[0],1),\t\t\t\t\t\\\n\tgsSPLight(&name.a,2)\n\n#define gSPSetLights2(pkt,name)\t\t\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tgSPNumLights(pkt,NUMLIGHTS_2);\t\t\t\t\t\\\n\tgSPLight(pkt,&name.l[0],1);\t\t\t\t\t\\\n\tgSPLight(pkt,&name.l[1],2);\t\t\t\t\t\\\n\tgSPLight(pkt,&name.a,3);\t\t\t\t\t\\\n}\n#define gsSPSetLights2(name)\t\t\t\t\t\t\\\n\tgsSPNumLights(NUMLIGHTS_2),\t\t\t\t\t\\\n\tgsSPLight(&name.l[0],1),\t\t\t\t\t\\\n\tgsSPLight(&name.l[1],2),\t\t\t\t\t\\\n\tgsSPLight(&name.a,3)\n\n#define gSPSetLights3(pkt,name)\t\t\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tgSPNumLights(pkt,NUMLIGHTS_3);\t\t\t\t\t\\\n\tgSPLight(pkt,&name.l[0],1);\t\t\t\t\t\\\n\tgSPLight(pkt,&name.l[1],2);\t\t\t\t\t\\\n\tgSPLight(pkt,&name.l[2],3);\t\t\t\t\t\\\n\tgSPLight(pkt,&name.a,4);\t\t\t\t\t\\\n}\n#define gsSPSetLights3(name)\t\t\t\t\t\t\\\n\tgsSPNumLights(NUMLIGHTS_3),\t\t\t\t\t\\\n\tgsSPLight(&name.l[0],1),\t\t\t\t\t\\\n\tgsSPLight(&name.l[1],2),\t\t\t\t\t\\\n\tgsSPLight(&name.l[2],3),\t\t\t\t\t\\\n\tgsSPLight(&name.a,4)\n\n#define gSPSetLights4(pkt,name)\t\t\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tgSPNumLights(pkt,NUMLIGHTS_4);\t\t\t\t\t\\\n\tgSPLight(pkt,&name.l[0],1);\t\t\t\t\t\\\n\tgSPLight(pkt,&name.l[1],2);\t\t\t\t\t\\\n\tgSPLight(pkt,&name.l[2],3);\t\t\t\t\t\\\n\tgSPLight(pkt,&name.l[3],4);\t\t\t\t\t\\\n\tgSPLight(pkt,&name.a,5);\t\t\t\t\t\\\n}\n#define gsSPSetLights4(name)\t\t\t\t\t\t\\\n\tgsSPNumLights(NUMLIGHTS_4),\t\t\t\t\t\\\n\tgsSPLight(&name.l[0],1),\t\t\t\t\t\\\n\tgsSPLight(&name.l[1],2),\t\t\t\t\t\\\n\tgsSPLight(&name.l[2],3),\t\t\t\t\t\\\n\tgsSPLight(&name.l[3],4),\t\t\t\t\t\\\n\tgsSPLight(&name.a,5)\n\n#define gSPSetLights5(pkt,name)\t\t\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tgSPNumLights(pkt,NUMLIGHTS_5);\t\t\t\t\t\\\n\tgSPLight(pkt,&name.l[0],1);\t\t\t\t\t\\\n\tgSPLight(pkt,&name.l[1],2);\t\t\t\t\t\\\n\tgSPLight(pkt,&name.l[2],3);\t\t\t\t\t\\\n\tgSPLight(pkt,&name.l[3],4);\t\t\t\t\t\\\n\tgSPLight(pkt,&name.l[4],5);\t\t\t\t\t\\\n\tgSPLight(pkt,&name.a,6);\t\t\t\t\t\\\n}\n\n#define gsSPSetLights5(name)\t\t\t\t\t\t\\\n\tgsSPNumLights(NUMLIGHTS_5),\t\t\t\t\t\\\n\tgsSPLight(&name.l[0],1),\t\t\t\t\t\\\n\tgsSPLight(&name.l[1],2),\t\t\t\t\t\\\n\tgsSPLight(&name.l[2],3),\t\t\t\t\t\\\n\tgsSPLight(&name.l[3],4),\t\t\t\t\t\\\n\tgsSPLight(&name.l[4],5),\t\t\t\t\t\\\n\tgsSPLight(&name.a,6)\n\n#define gSPSetLights6(pkt,name)\t\t\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tgSPNumLights(pkt,NUMLIGHTS_6);\t\t\t\t\t\\\n\tgSPLight(pkt,&name.l[0],1);\t\t\t\t\t\\\n\tgSPLight(pkt,&name.l[1],2);\t\t\t\t\t\\\n\tgSPLight(pkt,&name.l[2],3);\t\t\t\t\t\\\n\tgSPLight(pkt,&name.l[3],4);\t\t\t\t\t\\\n\tgSPLight(pkt,&name.l[4],5);\t\t\t\t\t\\\n\tgSPLight(pkt,&name.l[5],6);\t\t\t\t\t\\\n\tgSPLight(pkt,&name.a,7);\t\t\t\t\t\\\n}\n\n#define gsSPSetLights6(name)\t\t\t\t\t\t\\\n\tgsSPNumLights(NUMLIGHTS_6),\t\t\t\t\t\\\n\tgsSPLight(&name.l[0],1),\t\t\t\t\t\\\n\tgsSPLight(&name.l[1],2),\t\t\t\t\t\\\n\tgsSPLight(&name.l[2],3),\t\t\t\t\t\\\n\tgsSPLight(&name.l[3],4),\t\t\t\t\t\\\n\tgsSPLight(&name.l[4],5),\t\t\t\t\t\\\n\tgsSPLight(&name.l[5],6),\t\t\t\t\t\\\n\tgsSPLight(&name.a,7)\n\n#define gSPSetLights7(pkt,name)\t\t\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tgSPNumLights(pkt,NUMLIGHTS_7);\t\t\t\t\t\\\n\tgSPLight(pkt,&name.l[0],1);\t\t\t\t\t\\\n\tgSPLight(pkt,&name.l[1],2);\t\t\t\t\t\\\n\tgSPLight(pkt,&name.l[2],3);\t\t\t\t\t\\\n\tgSPLight(pkt,&name.l[3],4);\t\t\t\t\t\\\n\tgSPLight(pkt,&name.l[4],5);\t\t\t\t\t\\\n\tgSPLight(pkt,&name.l[5],6);\t\t\t\t\t\\\n\tgSPLight(pkt,&name.l[6],7);\t\t\t\t\t\\\n\tgSPLight(pkt,&name.a,8);\t\t\t\t\t\\\n}\n\n#define gsSPSetLights7(name)\t\t\t\t\t\t\\\n\tgsSPNumLights(NUMLIGHTS_7),\t\t\t\t\t\\\n\tgsSPLight(&name.l[0],1),\t\t\t\t\t\\\n\tgsSPLight(&name.l[1],2),\t\t\t\t\t\\\n\tgsSPLight(&name.l[2],3),\t\t\t\t\t\\\n\tgsSPLight(&name.l[3],4),\t\t\t\t\t\\\n\tgsSPLight(&name.l[4],5),\t\t\t\t\t\\\n\tgsSPLight(&name.l[5],6),\t\t\t\t\t\\\n\tgsSPLight(&name.l[6],7),\t\t\t\t\t\\\n\tgsSPLight(&name.a,8)\n\n/*\n * Reflection/Hiliting Macros\n */\n#ifdef\tF3DEX_GBI_2\n# define gSPLookAtX(pkt, l)\t\\\n\t gDma2p((pkt),G_MOVEMEM,(l),sizeof(Light),G_MV_LIGHT,G_MVO_LOOKATX)\n# define gsSPLookAtX(l)\t\t\\\n\t gsDma2p(     G_MOVEMEM,(l),sizeof(Light),G_MV_LIGHT,G_MVO_LOOKATX)\n# define gSPLookAtY(pkt, l)\t\\\n\t gDma2p((pkt),G_MOVEMEM,(l),sizeof(Light),G_MV_LIGHT,G_MVO_LOOKATY)\n# define gsSPLookAtY(l)\t\t\\\n\t gsDma2p(     G_MOVEMEM,(l),sizeof(Light),G_MV_LIGHT,G_MVO_LOOKATY)\n#else\t/* F3DEX_GBI_2 */\n# define gSPLookAtX(pkt, l)\t\\\n\t gDma1p(pkt, G_MOVEMEM, l, sizeof(Light),G_MV_LOOKATX)\n# define gsSPLookAtX(l)\t\t\\\n\t gsDma1p(    G_MOVEMEM, l, sizeof(Light),G_MV_LOOKATX)\n# define gSPLookAtY(pkt, l)\t\\\n\t gDma1p(pkt, G_MOVEMEM, l, sizeof(Light),G_MV_LOOKATY)\n# define gsSPLookAtY(l)\t\t\\\n\t gsDma1p(    G_MOVEMEM, l, sizeof(Light),G_MV_LOOKATY)\n#endif\t/* F3DEX_GBI_2 */\n\n#define gSPLookAt(pkt, la)\t\t\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tgSPLookAtX(pkt,la)\t\t\t\t\t\t\\\n\tgSPLookAtY(pkt,(char *)(la)+16)\t\t\t\t\t\\\n}\n#define gsSPLookAt(la)\t\t\t\t\t\t\t\\\n\tgsSPLookAtX(la),\t\t\t\t\t\t\\\n\tgsSPLookAtY((char *)(la)+16)\n\n#define gDPSetHilite1Tile(pkt, tile, hilite, width, height)\t\t\\\n\tgDPSetTileSize(pkt, tile, (hilite)->h.x1 & 0xfff, (hilite)->h.y1 & 0xfff, \t\\\n\t\t((((width)-1)*4)+(hilite)->h.x1) & 0xfff, ((((height)-1)*4)+(hilite)->h.y1) & 0xfff)\n\n#define gDPSetHilite2Tile(pkt, tile, hilite, width, height)\t\t\\\n\tgDPSetTileSize(pkt, tile, (hilite)->h.x2 & 0xfff, (hilite)->h.y2 & 0xfff, \t\\\n\t\t((((width)-1)*4)+(hilite)->h.x2) & 0xfff, ((((height)-1)*4)+(hilite)->h.y2) & 0xfff)\n\n\n/*\n * FOG macros\n * fm = z multiplier\n * fo = z offset\n * FOG FORMULA:    alpha(fog) = (eyespace z) * fm  + fo  CLAMPED 0 to 255\n *   note: (eyespace z) ranges -1 to 1\n *\n * Alternate method of setting fog:\n * min, max: range 0 to 1000: 0=nearplane, 1000=farplane\n * min is where fog begins (usually less than max and often 0)\n * max is where fog is thickest (usually 1000)\n * \n */\n#define gSPFogFactor(pkt, fm, fo)\t\t\t\t\\\n        gMoveWd(pkt, G_MW_FOG, G_MWO_FOG, \t\t\t\\\n\t\t(_SHIFTL(fm,16,16) | _SHIFTL(fo,0,16)))\n\n#define gsSPFogFactor(fm, fo)\t\t\t\t\t\\\n        gsMoveWd(G_MW_FOG, G_MWO_FOG, \t\t\t\t\\\n\t\t(_SHIFTL(fm,16,16) | _SHIFTL(fo,0,16)))\n\n#define gSPFogPosition(pkt, min, max)\t\t\t\t\\\n\tgMoveWd(pkt, G_MW_FOG, G_MWO_FOG, \t\t\t\\\n\t\t(_SHIFTL((128000/((max)-(min))),16,16) |\t\t\\\n\t\t_SHIFTL(((500-(min))*256/((max)-(min))),0,16)))\n\n#define gsSPFogPosition(min, max)\t\t\t\t\\\n\tgsMoveWd(G_MW_FOG, G_MWO_FOG, \t\t\t\t\\\n\t\t(_SHIFTL((128000/((max)-(min))),16,16) |\t\t\\\n\t\t_SHIFTL(((500-(min))*256/((max)-(min))),0,16)))\n\n#ifdef\tF3DEX_GBI_2\n/*\n * Macros to turn texture on/off\n */\n# define gSPTexture(pkt, s, t, level, tile, on)\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = (_SHIFTL(G_TEXTURE,24,8) | \t\t\t\\\n\t\t\t_SHIFTL(BOWTIE_VAL,16,8) |\t\t\t\\\n\t\t\t_SHIFTL((level),11,3) | _SHIFTL((tile),8,3) |\t\\\n\t\t\t_SHIFTL((on),1,7));\t\t\t\t\\\n\t_g->words.w1 = (_SHIFTL((s),16,16) | _SHIFTL((t),0,16));\t\\\n}\n# define gsSPTexture(s, t, level, tile, on)\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t(_SHIFTL(G_TEXTURE,24,8) | _SHIFTL(BOWTIE_VAL,16,8) |\t\t\\\n\t _SHIFTL((level),11,3) | _SHIFTL((tile),8,3) | _SHIFTL((on),1,7)),\\\n        (_SHIFTL((s),16,16) | _SHIFTL((t),0,16))\t\t\t\\\n}}\n/* \n * Different version of SPTexture macro, has an additional parameter\n * which is currently reserved in the microcode.\n */\n# define gSPTextureL(pkt, s, t, level, xparam, tile, on)\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = (_SHIFTL(G_TEXTURE,24,8) | \t\t\t\\\n\t\t\t_SHIFTL((xparam),16,8) | \t\t\t\\\n\t\t\t_SHIFTL((level),11,3) | _SHIFTL((tile),8,3) |\t\\\n\t\t\t_SHIFTL((on),1,7));\t\t\t\t\\\n\t_g->words.w1 = (_SHIFTL((s),16,16) | _SHIFTL((t),0,16));\t\\\n}\n# define gsSPTextureL(s, t, level, xparam, tile, on)\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t(_SHIFTL(G_TEXTURE,24,8) | _SHIFTL((xparam),16,8) |\t\t\\\n\t _SHIFTL((level),11,3) | _SHIFTL((tile),8,3) | _SHIFTL((on),1,7)),\\\n        (_SHIFTL((s),16,16) | _SHIFTL((t),0,16))\t\t\t\\\n}}\n#else\n/*\n * Macros to turn texture on/off\n */\n# define gSPTexture(pkt, s, t, level, tile, on)\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = (_SHIFTL(G_TEXTURE,24,8)|_SHIFTL(BOWTIE_VAL,16,8)|\\\n\t\t\t_SHIFTL((level),11,3)|_SHIFTL((tile),8,3)|\t\\\n\t\t\t_SHIFTL((on),0,8));\t\t\t\t\\\n\t_g->words.w1 = (_SHIFTL((s),16,16)|_SHIFTL((t),0,16));\t\t\\\n}\n# define gsSPTexture(s, t, level, tile, on)\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t(_SHIFTL(G_TEXTURE,24,8)|_SHIFTL(BOWTIE_VAL,16,8)|\t\t\\\n\t _SHIFTL((level),11,3)|_SHIFTL((tile),8,3)|_SHIFTL((on),0,8)),\t\\\n        (_SHIFTL((s),16,16)|_SHIFTL((t),0,16))\t\t\t\t\\\n}}\n/* \n * Different version of SPTexture macro, has an additional parameter\n * which is currently reserved in the microcode.\n */\n# define gSPTextureL(pkt, s, t, level, xparam, tile, on)\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = (_SHIFTL(G_TEXTURE,24,8)|_SHIFTL((xparam),16,8)|\t\\\n\t\t\t_SHIFTL((level),11,3)|_SHIFTL((tile),8,3)|\t\\\n\t\t\t_SHIFTL((on),0,8));\t\t\t\t\\\n\t_g->words.w1 = (_SHIFTL((s),16,16)|_SHIFTL((t),0,16));\t\t\\\n}\n# define gsSPTextureL(s, t, level, xparam, tile, on)\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t(_SHIFTL(G_TEXTURE,24,8)|_SHIFTL((xparam),16,8)|\t\t\\\n\t _SHIFTL((level),11,3)|_SHIFTL((tile),8,3)|_SHIFTL((on),0,8)),\t\\\n        (_SHIFTL((s),16,16)|_SHIFTL((t),0,16))\t\t\t\t\\\n}}\n#endif\n\n#ifndef F3D_OLD\n# define gSPPerspNormalize(pkt, s)\tgMoveWd(pkt, G_MW_PERSPNORM, 0, (s))\n# define gsSPPerspNormalize(s)\t\tgsMoveWd(    G_MW_PERSPNORM, 0, (s))\n#else\n# define gSPPerspNormalize(pkt, s)\t\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = _SHIFTL(G_RDPHALF_1, 24, 8);\t\t\t\\\n\t_g->words.w1 = (s);\t\t\t\t\t\t\\\n}\n# define gsSPPerspNormalize(s)\t\t\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t_SHIFTL(G_RDPHALF_1, 24, 8),\t\t\t\t\t\\\n\t(s)\t\t\t\t\t\t\t\t\\\n}}\n#endif\n\n#ifdef\tF3DEX_GBI_2\n# define gSPPopMatrixN(pkt, n, num)\tgDma2p((pkt),G_POPMTX,(num)*64,64,2,0)\n# define gsSPPopMatrixN(n, num)\t\tgsDma2p(     G_POPMTX,(num)*64,64,2,0)\n# define gSPPopMatrix(pkt, n)\t\tgSPPopMatrixN((pkt), (n), 1)\n# define gsSPPopMatrix(n)\t\tgsSPPopMatrixN(      (n), 1)\n#else\t/* F3DEX_GBI_2 */\n# define gSPPopMatrix(pkt, n)\t\tgImmp1(pkt, G_POPMTX, n)\n# define gsSPPopMatrix(n)\t\tgsImmp1(    G_POPMTX, n)\n#endif\t/* F3DEX_GBI_2 */\n\n#define gSPEndDisplayList(pkt)\t\t\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = _SHIFTL(G_ENDDL, 24, 8);\t\t\t\t\\\n\t_g->words.w1 = 0;\t\t\t\t\t\t\\\n}\n\n#define gsSPEndDisplayList()\t\t\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t_SHIFTL(G_ENDDL, 24, 8), 0\t\t\t\t\t\\\n}}\n\n#ifdef\tF3DEX_GBI_2\n/*\n *\tOne gSPGeometryMode(pkt,c,s) GBI is equal to these two GBIs.\n *\n *\t\tgSPClearGeometryMode(pkt,c)\n *\t\tgSPSetGeometryMode(pkt,s)\n *\n *\tgSPLoadGeometryMode(pkt, word) sets GeometryMode directly.\n */\n#define\tgSPGeometryMode(pkt, c, s)\t\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t_g->words.w0 = _SHIFTL(G_GEOMETRYMODE,24,8)|_SHIFTL(~(u32)(c),0,24);\\\n\t_g->words.w1 = (u32)(s);\t\t\t\t\t\\\n}\n\n#define\tgsSPGeometryMode(c, s)\t\t\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t(_SHIFTL(G_GEOMETRYMODE,24,8)|_SHIFTL(~(u32)(c),0,24)),(u32)(s)\t\\\n}}\n#define\tgSPSetGeometryMode(pkt, word)\tgSPGeometryMode((pkt),0,(word))\n#define\tgsSPSetGeometryMode(word)\tgsSPGeometryMode(0,(word))\n#define\tgSPClearGeometryMode(pkt, word)\tgSPGeometryMode((pkt),(word),0)\n#define\tgsSPClearGeometryMode(word)\tgsSPGeometryMode((word),0)\n#define\tgSPLoadGeometryMode(pkt, word)\tgSPGeometryMode((pkt),-1,(word))\n#define\tgsSPLoadGeometryMode(word)\tgsSPGeometryMode(-1,(word))\n#define gsSPGeometryModeSetFirst(c, s)\tgsSPGeometryMode(c, s)\n#else\t/* F3DEX_GBI_2 */\n#define\tgSPSetGeometryMode(pkt, word)\t\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = _SHIFTL(G_SETGEOMETRYMODE, 24, 8);\t\t\\\n\t_g->words.w1 = (unsigned int)(word);\t\t\t\t\\\n}\n\n#define\tgsSPSetGeometryMode(word)\t\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t_SHIFTL(G_SETGEOMETRYMODE, 24, 8), (unsigned int)(word)\t\t\\\n}}\n\n#define\tgSPClearGeometryMode(pkt, word)\t\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = _SHIFTL(G_CLEARGEOMETRYMODE, 24, 8);\t\t\\\n\t_g->words.w1 = (unsigned int)(word);\t\t\t\t\\\n}\n\n#define\tgsSPClearGeometryMode(word)\t\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t_SHIFTL(G_CLEARGEOMETRYMODE, 24, 8), (unsigned int)(word)\t\\\n}}\n\n/*\n * gsSPGeometryMode\n * In Fast3DEX2 it is better to use this, as the RSP geometry mode\n * is able to be set and cleared in a single command.\n */\n#define gsSPGeometryMode(c, s)\t\t\t\t\t\t\\\n\tgsSPClearGeometryMode(c),\t\t\t\t\t\\\n\tgsSPSetGeometryMode(s)\n#define gsSPGeometryModeSetFirst(c, s)\t\t\t\t\t\\\n\tgsSPSetGeometryMode(s),\t\t\t\t\t\t\\\n\tgsSPClearGeometryMode(c)\n#endif\t/* F3DEX_GBI_2 */\n\n#ifdef\tF3DEX_GBI_2\n#define\tgSPSetOtherMode(pkt, cmd, sft, len, data)\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t_g->words.w0 = (_SHIFTL(cmd,24,8)|_SHIFTL(32-(sft)-(len),8,8)|\t\\\n\t\t\t_SHIFTL((len)-1,0,8));\t\t\t\t\\\n\t_g->words.w1 = (unsigned int)(data);\t\t\t\t\\\n}\n\n#define\tgsSPSetOtherMode(cmd, sft, len, data)\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t_SHIFTL(cmd,24,8)|_SHIFTL(32-(sft)-(len),8,8)|_SHIFTL((len)-1,0,8), \\\n\t(unsigned int)(data)\t\t\t\t\t\t\\\n}}\n#else\n#define\tgSPSetOtherMode(pkt, cmd, sft, len, data)\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = (_SHIFTL(cmd, 24, 8) | _SHIFTL(sft, 8, 8) |\t\\\n\t\t\t_SHIFTL(len, 0, 8));\t\t\t\t\\\n\t_g->words.w1 = (unsigned int)(data);\t\t\t\t\\\n}\n\n#define\tgsSPSetOtherMode(cmd, sft, len, data)\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t_SHIFTL(cmd, 24, 8) | _SHIFTL(sft, 8, 8) | _SHIFTL(len, 0, 8),\t\\\n\t(unsigned int)(data)\t\t\t\t\t\t\\\n}}\n#endif\n\n/*\n * RDP setothermode register commands - register shadowed in RSP\n */\n#define\tgDPPipelineMode(pkt, mode)\t\\\n\tgSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_PIPELINE, 1, mode)\n#define\tgsDPPipelineMode(mode)\t\t\\\n\tgsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_PIPELINE, 1, mode)\n\n#define\tgDPSetCycleType(pkt, type)\t\\\n\tgSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_CYCLETYPE, 2, type)\n#define\tgsDPSetCycleType(type)\t\t\\\n\tgsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_CYCLETYPE, 2, type)\n\n#define\tgDPSetTexturePersp(pkt, type)\t\\\n\tgSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_TEXTPERSP, 1, type)\n#define\tgsDPSetTexturePersp(type)\t\t\\\n\tgsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_TEXTPERSP, 1, type)\n\n#define\tgDPSetTextureDetail(pkt, type)\t\\\n\tgSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_TEXTDETAIL, 2, type)\n#define\tgsDPSetTextureDetail(type)\t\t\\\n\tgsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_TEXTDETAIL, 2, type)\n\n#define\tgDPSetTextureLOD(pkt, type)\t\\\n\tgSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_TEXTLOD, 1, type)\n#define\tgsDPSetTextureLOD(type)\t\t\\\n\tgsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_TEXTLOD, 1, type)\n\n#define\tgDPSetTextureLUT(pkt, type)\t\\\n\tgSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_TEXTLUT, 2, type)\n#define\tgsDPSetTextureLUT(type)\t\t\\\n\tgsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_TEXTLUT, 2, type)\n\n#define\tgDPSetTextureFilter(pkt, type)\t\\\n\tgSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_TEXTFILT, 2, type)\n#define\tgsDPSetTextureFilter(type)\t\t\\\n\tgsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_TEXTFILT, 2, type)\n\n#define\tgDPSetTextureConvert(pkt, type)\t\\\n\tgSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_TEXTCONV, 3, type)\n#define\tgsDPSetTextureConvert(type)\t\t\\\n\tgsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_TEXTCONV, 3, type)\n\n#define\tgDPSetCombineKey(pkt, type)\t\\\n\tgSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_COMBKEY, 1, type)\n#define\tgsDPSetCombineKey(type)\t\t\\\n\tgsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_COMBKEY, 1, type)\n\n#ifndef _HW_VERSION_1\n#define\tgDPSetColorDither(pkt, mode)\t\\\n\tgSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_RGBDITHER, 2, mode)\n#define\tgsDPSetColorDither(mode)\t\t\\\n\tgsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_RGBDITHER, 2, mode)\n#else\n#define gDPSetColorDither(pkt, mode)    \\\n\tgSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_COLORDITHER, 1, mode)\n#define gsDPSetColorDither(mode)                \\\n\tgsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_COLORDITHER, 1, mode)\n#endif\n\n#ifndef _HW_VERSION_1\n#define\tgDPSetAlphaDither(pkt, mode)\t\\\n\tgSPSetOtherMode(pkt, G_SETOTHERMODE_H, G_MDSFT_ALPHADITHER, 2, mode)\n#define\tgsDPSetAlphaDither(mode)\t\t\\\n\tgsSPSetOtherMode(G_SETOTHERMODE_H, G_MDSFT_ALPHADITHER, 2, mode)\n#endif\n\n/* 'blendmask' is not supported anymore. \n * The bits are reserved for future use.\n * Fri May 26 13:45:55 PDT 1995\n */\n#define\tgDPSetBlendMask(pkt, mask)      gDPNoOp(pkt)\n#define\tgsDPSetBlendMask(mask)\t\tgsDPNoOp()\n\n#define\tgDPSetAlphaCompare(pkt, type)\t\\\n\tgSPSetOtherMode(pkt, G_SETOTHERMODE_L, G_MDSFT_ALPHACOMPARE, 2, type)\n#define\tgsDPSetAlphaCompare(type)\t\t\\\n\tgsSPSetOtherMode(G_SETOTHERMODE_L, G_MDSFT_ALPHACOMPARE, 2, type)\n\n#define\tgDPSetDepthSource(pkt, src)\t\\\n\tgSPSetOtherMode(pkt, G_SETOTHERMODE_L, G_MDSFT_ZSRCSEL, 1, src)\n#define\tgsDPSetDepthSource(src)\t\\\n\tgsSPSetOtherMode(G_SETOTHERMODE_L, G_MDSFT_ZSRCSEL, 1, src)\n\n#define\tgDPSetRenderMode(pkt, c0, c1)\t\\\n\tgSPSetOtherMode(pkt, G_SETOTHERMODE_L, G_MDSFT_RENDERMODE, 29, \t\\\n\t\t\t(c0) | (c1))\n#define\tgsDPSetRenderMode(c0, c1)\t\\\n\tgsSPSetOtherMode(G_SETOTHERMODE_L, G_MDSFT_RENDERMODE, 29, \t\\\n\t\t\t (c0) | (c1))\n\n#define\tgSetImage(pkt, cmd, fmt, siz, width, i)\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = _SHIFTL(cmd, 24, 8) | _SHIFTL(fmt, 21, 3) |\t\\\n\t\t       _SHIFTL(siz, 19, 2) | _SHIFTL((width)-1, 0, 12);\t\\\n\t_g->words.w1 = (uintptr_t)(i);\t\t\t\t\\\n}\n\n#define\tgsSetImage(cmd, fmt, siz, width, i)\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t_SHIFTL(cmd, 24, 8) | _SHIFTL(fmt, 21, 3) |\t\t\t\\\n\t_SHIFTL(siz, 19, 2) | _SHIFTL((width)-1, 0, 12),\t\t\\\n\t(uintptr_t)(i)\t\t\t\t\t\t\\\n}}\n\n#define\tgDPSetColorImage(pkt, f, s, w, i)\tgSetImage(pkt, G_SETCIMG, f, s, w, i)\n#define\tgsDPSetColorImage(f, s, w, i)\t\tgsSetImage(G_SETCIMG, f, s, w, i)\n\n\n/* use these for new code */\n#define\tgDPSetDepthImage(pkt, i)\tgSetImage(pkt, G_SETZIMG, 0, 0, 1, i)\n#define\tgsDPSetDepthImage(i)\t\tgsSetImage(G_SETZIMG, 0, 0, 1, i)\n/* kept for compatibility */\n#define\tgDPSetMaskImage(pkt, i)\t\tgDPSetDepthImage(pkt, i)\n#define\tgsDPSetMaskImage(i)\t\t\tgsDPSetDepthImage(i)\n\n#define\tgDPSetTextureImage(pkt, f, s, w, i)\tgSetImage(pkt, G_SETTIMG, f, s, w, i)\n#define\tgsDPSetTextureImage(f, s, w, i)\tgsSetImage(G_SETTIMG, f, s, w, i)\n\n/*\n * RDP macros\n */\n\n#define\tgDPSetCombine(pkt, muxs0, muxs1)\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = _SHIFTL(G_SETCOMBINE, 24, 8) | _SHIFTL(muxs0, 0, 24);\\\n\t_g->words.w1 = (unsigned int)(muxs1);\t\t\t\t\\\n}\n\n#define\tgsDPSetCombine(muxs0, muxs1)\t\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t_SHIFTL(G_SETCOMBINE, 24, 8) | _SHIFTL(muxs0, 0, 24),\t\t\\\n\t(unsigned int)(muxs1)\t\t\t\t\t\t\\\n}}\n\n#define\tGCCc0w0(saRGB0, mRGB0, saA0, mA0)\t\t\t\t\\\n\t\t(_SHIFTL((saRGB0), 20, 4) | _SHIFTL((mRGB0), 15, 5) | \t\\\n\t\t _SHIFTL((saA0), 12, 3) | _SHIFTL((mA0), 9, 3))\n\n#define\tGCCc1w0(saRGB1, mRGB1)\t\t\t\t\t\t\\\n\t\t(_SHIFTL((saRGB1), 5, 4) | _SHIFTL((mRGB1), 0, 5))\n\n#define GCCc0w1(sbRGB0, aRGB0, sbA0, aA0)\t\t\t\t\\\n                (_SHIFTL((sbRGB0), 28, 4) | _SHIFTL((aRGB0), 15, 3) |\t\\\n\t\t _SHIFTL((sbA0), 12, 3) | _SHIFTL((aA0), 9, 3))\n\n#define\tGCCc1w1(sbRGB1, saA1, mA1, aRGB1, sbA1, aA1)\t\t\t\\\n\t\t(_SHIFTL((sbRGB1), 24, 4) | _SHIFTL((saA1), 21, 3) |\t\\\n\t\t _SHIFTL((mA1), 18, 3) | _SHIFTL((aRGB1), 6, 3) |\t\\\n\t\t _SHIFTL((sbA1), 3, 3) | _SHIFTL((aA1), 0, 3))\n\n#define\tgDPSetCombineLERP(pkt, a0, b0, c0, d0, Aa0, Ab0, Ac0, Ad0,\t\\\n\t\ta1, b1, c1, d1,\tAa1, Ab1, Ac1, Ad1)\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 =\t_SHIFTL(G_SETCOMBINE, 24, 8) |\t\t\t\\\n\t\t\t_SHIFTL(GCCc0w0(G_CCMUX_##a0, G_CCMUX_##c0,\t\\\n\t\t\t\t       G_ACMUX_##Aa0, G_ACMUX_##Ac0) |\t\\\n\t\t\t       GCCc1w0(G_CCMUX_##a1, G_CCMUX_##c1), \t\\\n\t\t\t       0, 24);\t\t\t\t\t\\\n\t_g->words.w1 =\t(unsigned int)(GCCc0w1(G_CCMUX_##b0, \t\t\\\n\t\t\t\t\t       G_CCMUX_##d0,\t\t\\\n\t\t\t\t\t       G_ACMUX_##Ab0, \t\t\\\n\t\t\t\t\t       G_ACMUX_##Ad0) |\t\t\\\n\t\t\t\t       GCCc1w1(G_CCMUX_##b1, \t\t\\\n\t\t\t\t\t       G_ACMUX_##Aa1,\t\t\\\n\t\t\t\t\t       G_ACMUX_##Ac1, \t\t\\\n\t\t\t\t\t       G_CCMUX_##d1,\t\t\\\n\t\t\t\t\t       G_ACMUX_##Ab1, \t\t\\\n\t\t\t\t\t       G_ACMUX_##Ad1));\t\t\\\n}\n\n#define\tgsDPSetCombineLERP(a0, b0, c0, d0, Aa0, Ab0, Ac0, Ad0,\t\t\\\n\t\ta1, b1, c1, d1,\tAa1, Ab1, Ac1, Ad1)\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t_SHIFTL(G_SETCOMBINE, 24, 8) |\t\t\t\t\t\\\n\t_SHIFTL(GCCc0w0(G_CCMUX_##a0, G_CCMUX_##c0,\t\t\t\\\n\t\t       G_ACMUX_##Aa0, G_ACMUX_##Ac0) |\t\t\t\\\n\t       GCCc1w0(G_CCMUX_##a1, G_CCMUX_##c1), 0, 24),\t\t\\\n\t(unsigned int)(GCCc0w1(G_CCMUX_##b0, G_CCMUX_##d0,\t\t\\\n\t\t\t       G_ACMUX_##Ab0, G_ACMUX_##Ad0) |\t\t\\\n\t\t       GCCc1w1(G_CCMUX_##b1, G_ACMUX_##Aa1,\t\t\\\n\t\t\t       G_ACMUX_##Ac1, G_CCMUX_##d1,\t\t\\\n\t\t\t       G_ACMUX_##Ab1, G_ACMUX_##Ad1))\t\t\\\n}}\n\n/*\n * SetCombineMode macros are NOT redunant. It allow the C preprocessor\n * to substitute single parameter which includes commas in the token and\n * rescan for higher parameter count macro substitution.\n *\n * eg.\tgsDPSetCombineMode(G_CC_MODULATE, G_CC_MODULATE) turns into\n *\tgsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, SHADE, 0,\n *\t\tTEXEL0, 0, SHADE, 0, TEXEL0, 0, SHADE, 0)\n */\n\n#define gDPSetCombineMode(pkt, a, b)\tgDPSetCombineLERP(pkt, a, b)\n#define\tgsDPSetCombineMode(a, b)\tgsDPSetCombineLERP(a, b)\n\n#define\tgDPSetColor(pkt, c, d)\t\t\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = _SHIFTL(c, 24, 8);\t\t\t\t\\\n\t_g->words.w1 = (unsigned int)(d);\t\t\t\t\\\n}\n\n#define\tgsDPSetColor(c, d)\t\t\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t_SHIFTL(c, 24, 8), (unsigned int)(d)\t\t\t\t\\\n}}\n\n#define\tDPRGBColor(pkt, cmd, r, g, b, a)\t\t\t\t\\\n            gDPSetColor(pkt, cmd,\t\t\t\t\t\\\n\t\t\t(_SHIFTL(r, 24, 8) | _SHIFTL(g, 16, 8) | \t\\\n\t\t\t _SHIFTL(b, 8, 8) | _SHIFTL(a, 0, 8)))\n#define\tsDPRGBColor(cmd, r, g, b, a)\t\t\t\t\t\\\n\t    gsDPSetColor(cmd,\t\t\t\t\t\t\\\n\t\t\t (_SHIFTL(r, 24, 8) | _SHIFTL(g, 16, 8) | \t\\\n\t\t\t  _SHIFTL(b, 8, 8) | _SHIFTL(a, 0, 8)))\n\n#define\tgDPSetEnvColor(pkt, r, g, b, a)\t\t\t\t\t\\\n            DPRGBColor(pkt, G_SETENVCOLOR, r,g,b,a)\n#define\tgsDPSetEnvColor(r, g, b, a)\t\t\t\t\t\\\n            sDPRGBColor(G_SETENVCOLOR, r,g,b,a)\n#define\tgDPSetBlendColor(pkt, r, g, b, a)\t\t\t\t\\\n            DPRGBColor(pkt, G_SETBLENDCOLOR, r,g,b,a)\n#define\tgsDPSetBlendColor(r, g, b, a)\t\t\t\t\t\\\n            sDPRGBColor(G_SETBLENDCOLOR, r,g,b,a)\n#define\tgDPSetFogColor(pkt, r, g, b, a)\t\t\t\t\t\\\n            DPRGBColor(pkt, G_SETFOGCOLOR, r,g,b,a)\n#define\tgsDPSetFogColor(r, g, b, a)\t\t\t\t\t\\\n            sDPRGBColor(G_SETFOGCOLOR, r,g,b,a)\n#define\tgDPSetFillColor(pkt, d)\t\t\t\t\t\t\\\n            gDPSetColor(pkt, G_SETFILLCOLOR, (d))\n#define\tgsDPSetFillColor(d)\t\t\t\t\t\t\\\n            gsDPSetColor(G_SETFILLCOLOR, (d))\n\n#define\tgDPSetPrimDepth(pkt, z, dz)\t\t\t\t\t\\\n\t\tgDPSetColor(pkt, G_SETPRIMDEPTH, \t\t\t\\\n\t\t\t    _SHIFTL(z, 16, 16) | _SHIFTL(dz, 0, 16))\n#define\tgsDPSetPrimDepth(z, dz)\t\t\t\t\t\t\\\n\t\tgsDPSetColor(G_SETPRIMDEPTH, _SHIFTL(z, 16, 16) | \t\\\n\t\t\t     _SHIFTL(dz, 0, 16))\n\n#define\tgDPSetPrimColor(pkt, m, l, r, g, b, a)\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 =\t(_SHIFTL(G_SETPRIMCOLOR, 24, 8) | \t\t\\\n\t\t\t _SHIFTL(m, 8, 8) | _SHIFTL(l, 0, 8));\t\t\\\n\t_g->words.w1 =  (_SHIFTL(r, 24, 8) | _SHIFTL(g, 16, 8) | \t\\\n\t\t\t _SHIFTL(b, 8, 8) | _SHIFTL(a, 0, 8));\t\t\\\n}\n\n#define\tgsDPSetPrimColor(m, l, r, g, b, a)\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t(_SHIFTL(G_SETPRIMCOLOR, 24, 8) | _SHIFTL(m, 8, 8) |\t\t\\\n\t _SHIFTL(l, 0, 8)),\t\t\t\t\t\t\\\n\t(_SHIFTL(r, 24, 8) | _SHIFTL(g, 16, 8) | _SHIFTL(b, 8, 8) |\t\\\n\t _SHIFTL(a, 0, 8))\t\t\t\t\t\t\\\n}}\n\n/*\n * gDPSetOtherMode (This is for expert user.)\n *\n * This command makes all othermode parameters set.\n * Do not use this command in the same DL with another g*SPSetOtherMode DLs.\n * \n * [Usage]\n *\tgDPSetOtherMode(pkt, modeA, modeB)\n *\n *      'modeA' is described all parameters of GroupA GBI command.\n *      'modeB' is also described all parameters of GroupB GBI command.\n *\n *\tGroupA:\n *\t  gDPPipelineMode, gDPSetCycleType, gSPSetTexturePersp,\n *\t  gDPSetTextureDetail, gDPSetTextureLOD, gDPSetTextureLUT,\n *\t  gDPSetTextureFilter, gDPSetTextureConvert, gDPSetCombineKey,\n *\t  gDPSetColorDither, gDPSetAlphaDither\n *\n *\tGroupB:\n *\t  gDPSetAlphaCompare, gDPSetDepthSource, gDPSetRenderMode\n *\n *\tUse 'OR' operation to get modeA and modeB.\n *\n *\tmodeA = G_PM_* | G_CYC_* | G_TP_* | G_TD_* | G_TL_* | G_TT_* | G_TF_*\n *\t\tG_TC_* | G_CK_*  | G_CD_* | G_AD_*;\n *\n *\tmodeB = G_AC_* | G_ZS_*  | G_RM_* | G_RM_*2;\n */\n#define\tgDPSetOtherMode(pkt, mode0, mode1)\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = _SHIFTL(G_RDPSETOTHERMODE,24,8)|_SHIFTL(mode0,0,24);\\\n\t_g->words.w1 = (unsigned int)(mode1);\t\t\t\t\\\n}\n\n#define\tgsDPSetOtherMode(mode0, mode1)\t\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t_SHIFTL(G_RDPSETOTHERMODE,24,8)|_SHIFTL(mode0,0,24),\t\t\\\n\t(unsigned int)(mode1)\t\t\t\t\t\t\\\n}}\n\n/*\n * Texturing macros\n */\n\n/* These are also defined defined above for Sprite Microcode */\n\n#define\tG_TX_LOADTILE\t7\n#define\tG_TX_RENDERTILE\t0\n\n#define\tG_TX_NOMIRROR\t0\n#define\tG_TX_WRAP\t0\n#define\tG_TX_MIRROR\t0x1\n#define\tG_TX_CLAMP\t0x2\n#define\tG_TX_NOMASK\t0\n#define\tG_TX_NOLOD\t0\n\n\n#ifndef MAX\n#define MAX(a, b)\t\t\t\t((a) > (b) ? (a) : (b))\n#endif\n\n#ifndef MIN\n#define MIN(a, b)\t\t\t\t((a) < (b) ? (a) : (b))\n#endif\n/*\n *  Dxt is the inverse of the number of 64-bit words in a line of\n *  the texture being loaded using the load_block command.  If\n *  there are any 1's to the right of the 11th fractional bit,\n *  dxt should be rounded up.  The following macros accomplish\n *  this.  The 4b macros are a special case since 4-bit textures\n *  are loaded as 8-bit textures.  Dxt is fixed point 1.11. RJM\n */\n#define\tG_TX_DXT_FRAC\t11\n\n/*\n *  For RCP 2.0, the maximum number of texels that can be loaded\n *  using a load_block command is 2048.  In order to load the total\n *  4kB of Tmem, change the texel size when loading to be G_IM_SIZ_16b,\n *  then change the tile to the proper texel size after the load.\n *  The g*DPLoadTextureBlock macros already do this, so this change\n *  will be transparent if you use these macros.  If you use\n *  the g*DPLoadBlock macros directly, you will need to handle this\n *  tile manipulation yourself.  RJM.\n */\n#ifdef _HW_VERSION_1\n#define G_TX_LDBLK_MAX_TXL\t4095\n#else\n#define G_TX_LDBLK_MAX_TXL\t2047\n#endif /* _HW_VERSION_1 */\n\n#define TXL2WORDS(txls, b_txl)\tMAX(1, ((txls)*(b_txl)/8))\n#define CALC_DXT(width, b_txl)\t\\\n\t\t(((1 << G_TX_DXT_FRAC) + TXL2WORDS(width, b_txl) - 1) / \\\n\t\t\t\t\tTXL2WORDS(width, b_txl))\n\n#define TXL2WORDS_4b(txls)\tMAX(1, ((txls)/16))\n#define CALC_DXT_4b(width)\t\\\n\t\t(((1 << G_TX_DXT_FRAC) + TXL2WORDS_4b(width) - 1) / \\\n\t\t\t\t\tTXL2WORDS_4b(width))\n\n#define gDPLoadTileGeneric(pkt, c, tile, uls, ult, lrs, lrt)\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = _SHIFTL(c, 24, 8) | _SHIFTL(uls, 12, 12) |\t\\\n\t\t      _SHIFTL(ult, 0, 12);\t\t\t\t\\\n\t_g->words.w1 = _SHIFTL(tile, 24, 3) | _SHIFTL(lrs, 12, 12) |\t\\\n\t\t      _SHIFTL(lrt, 0, 12);\t\t\t\t\\\n}\n\n#define gsDPLoadTileGeneric(c, tile, uls, ult, lrs, lrt)\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t_SHIFTL(c, 24, 8) | _SHIFTL(uls, 12, 12) | _SHIFTL(ult, 0, 12),\t\\\n\t_SHIFTL(tile, 24, 3) | _SHIFTL(lrs, 12, 12) | _SHIFTL(lrt, 0, 12)\\\n}}\n\n#define\tgDPSetTileSize(pkt, t, uls, ult, lrs, lrt)\t\t\t\\\n\t\tgDPLoadTileGeneric(pkt, G_SETTILESIZE, t, uls, ult, lrs, lrt)\n#define\tgsDPSetTileSize(t, uls, ult, lrs, lrt)\t\t\t\t\\\n\t\tgsDPLoadTileGeneric(G_SETTILESIZE, t, uls, ult, lrs, lrt)\n#define\tgDPLoadTile(pkt, t, uls, ult, lrs, lrt)\t\t\t\t\\\n\t\tgDPLoadTileGeneric(pkt, G_LOADTILE, t, uls, ult, lrs, lrt)\n#define\tgsDPLoadTile(t, uls, ult, lrs, lrt)\t\t\t\t\\\n\t\tgsDPLoadTileGeneric(G_LOADTILE, t, uls, ult, lrs, lrt)\n\n#define\tgDPSetTile(pkt, fmt, siz, line, tmem, tile, palette, cmt,\t\\\n\t\tmaskt, shiftt, cms, masks, shifts)\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = _SHIFTL(G_SETTILE, 24, 8) | _SHIFTL(fmt, 21, 3) |\\\n\t\t       _SHIFTL(siz, 19, 2) | _SHIFTL(line, 9, 9) |\t\\\n\t\t       _SHIFTL(tmem, 0, 9);\t\t\t\t\\\n\t_g->words.w1 = _SHIFTL(tile, 24, 3) | _SHIFTL(palette, 20, 4) |\t\\\n\t\t       _SHIFTL(cmt, 18, 2) | _SHIFTL(maskt, 14, 4) |\t\\\n\t\t       _SHIFTL(shiftt, 10, 4) |_SHIFTL(cms, 8, 2) |\t\\\n\t\t       _SHIFTL(masks, 4, 4) | _SHIFTL(shifts, 0, 4);\t\\\n}\n\n#define\tgsDPSetTile(fmt, siz, line, tmem, tile, palette, cmt,\t\t\\\n\t\tmaskt, shiftt, cms, masks, shifts)\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t(_SHIFTL(G_SETTILE, 24, 8) | _SHIFTL(fmt, 21, 3) | \t\t\\\n\t _SHIFTL(siz, 19, 2) | _SHIFTL(line, 9, 9) | _SHIFTL(tmem, 0, 9)),\\\n        (_SHIFTL(tile, 24, 3) | _SHIFTL(palette, 20, 4) | \t\t\\\n\t _SHIFTL(cmt, 18, 2) | _SHIFTL(maskt, 14, 4) | \t\t\t\\\n\t _SHIFTL(shiftt, 10, 4) | _SHIFTL(cms, 8, 2) | \t\t\t\\\n\t _SHIFTL(masks, 4, 4) | _SHIFTL(shifts, 0, 4))\t\t\t\\\n}}\n\n/*\n *  For RCP 2.0, the maximum number of texels that can be loaded\n *  using a load_block command is 2048.  In order to load the total\n *  4kB of Tmem, change the texel size when loading to be G_IM_SIZ_16b,\n *  then change the tile to the proper texel size after the load.\n *  The g*DPLoadTextureBlock macros already do this, so this change\n *  will be transparent if you use these macros.  If you use\n *  the g*DPLoadBlock macros directly, you will need to handle this\n *  tile manipulation yourself.  RJM.\n */\n#define gDPLoadBlock(pkt, tile, uls, ult, lrs, dxt)\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = (_SHIFTL(G_LOADBLOCK, 24, 8) | \t\t\t\\\n\t\t\t_SHIFTL(uls, 12, 12) | _SHIFTL(ult, 0, 12));\t\\\n\t_g->words.w1 = (_SHIFTL(tile, 24, 3) |\t\t\t\t\\\n\t\t\t_SHIFTL((MIN(lrs,G_TX_LDBLK_MAX_TXL)), 12, 12) |\\\n\t\t\t_SHIFTL(dxt, 0, 12));\t\t\t\t\\\n}\n\n#define gsDPLoadBlock(tile, uls, ult, lrs, dxt)\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t(_SHIFTL(G_LOADBLOCK, 24, 8) | _SHIFTL(uls, 12, 12) | \t\t\\\n\t _SHIFTL(ult, 0, 12)),\t\t\t\t\t\t\\\n\t(_SHIFTL(tile, 24, 3) | \t\t\t\t\t\\\n\t _SHIFTL((MIN(lrs,G_TX_LDBLK_MAX_TXL)), 12, 12) |\t\t\\\n\t _SHIFTL(dxt, 0, 12))\t\t\t\t\t\t\\\n}}\n\n#define\tgDPLoadTLUTCmd(pkt, tile, count)\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)pkt;\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = _SHIFTL(G_LOADTLUT, 24, 8);\t\t\t\\\n\t_g->words.w1 = _SHIFTL((tile), 24, 3) | _SHIFTL((count), 14, 10);\\\n}\n\n#define\tgsDPLoadTLUTCmd(tile, count)\t\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t_SHIFTL(G_LOADTLUT, 24, 8),\t\t\t\t\t\\\n\t_SHIFTL((tile), 24, 3) | _SHIFTL((count), 14, 10)\t\t\\\n}}\n\n#define\tgDPLoadTextureBlock(pkt, timg, fmt, siz, width, height,\t\t\\\n\t\tpal, cms, cmt, masks, maskt, shifts, shiftt)\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tgDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg);\t\\\n\tgDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, 0, G_TX_LOADTILE, \t\\\n\t\t0 , cmt, maskt, shiftt, cms, masks, shifts);\t\t\\\n\tgDPLoadSync(pkt);\t\t\t\t\t\t\\\n\tgDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, \t\t\t\t\\\n\t\t(((width)*(height) + siz##_INCR) >> siz##_SHIFT) -1,\t\\\n\t\tCALC_DXT(width, siz##_BYTES)); \t\t\t\t\\\n\tgDPPipeSync(pkt);\t\t\t\t\t\t\\\n\tgDPSetTile(pkt, fmt, siz,\t\t\t\t\t\\\n\t\t(((width) * siz##_LINE_BYTES)+7)>>3, 0,\t\t\t\\\n\t\tG_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks,\t\\\n\t\tshifts);\t\t\t\t\t\t\\\n\tgDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0,\t\t\t\\\n\t\t((width)-1) << G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t((height)-1) << G_TEXTURE_IMAGE_FRAC)\t\t\t\\\n}\n\n#define\tgDPLoadTextureBlockYuv(pkt, timg, fmt, siz, width, height,\t\\\n\t\tpal, cms, cmt, masks, maskt, shifts, shiftt)\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tgDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg);\t\\\n\tgDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, 0, G_TX_LOADTILE, \t\\\n\t\t0 , cmt, maskt, shiftt, cms, masks, shifts);\t\t\\\n\tgDPLoadSync(pkt);\t\t\t\t\t\t\\\n\tgDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, \t\t\t\t\\\n\t\t(((width)*(height) + siz##_INCR) >> siz##_SHIFT) -1,\t\\\n\t\tCALC_DXT(width, siz##_BYTES)); \t\t\t\t\\\n\tgDPPipeSync(pkt);\t\t\t\t\t\t\\\n\tgDPSetTile(pkt, fmt, siz,\t\t\t\t\t\\\n\t\t(((width) * 1)+7)>>3, 0,\t\t\t\t\\\n\t\tG_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks,\t\\\n\t\tshifts);\t\t\t\t\t\t\\\n\tgDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0,\t\t\t\\\n\t\t((width)-1) << G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t((height)-1) << G_TEXTURE_IMAGE_FRAC)\t\t\t\\\n}\n\n/* Load fix rww 27jun95 */\n/* The S at the end means odd lines are already word Swapped */\n\n#define\tgDPLoadTextureBlockS(pkt, timg, fmt, siz, width, height,\t\\\n\t\tpal, cms, cmt, masks, maskt, shifts, shiftt)\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tgDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg);\t\\\n\tgDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, 0, G_TX_LOADTILE, \t\\\n\t\t0 , cmt, maskt,\tshiftt, cms, masks, shifts);\t\t\\\n\tgDPLoadSync(pkt);\t\t\t\t\t\t\\\n\tgDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, \t\t\t\t\\\n\t\t(((width)*(height) + siz##_INCR) >> siz##_SHIFT)-1,0);\t\\\n\tgDPPipeSync(pkt);\t\t\t\t\t\t\\\n\tgDPSetTile(pkt, fmt, siz,\t\t\t\t\t\\\n\t\t(((width) * siz##_LINE_BYTES)+7)>>3, 0,\t\t\t\\\n\t\tG_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks,\t\\\n\t\tshifts);\t\t\t\t\t\t\\\n\tgDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0,\t\t\t\\\n\t\t((width)-1) << G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t((height)-1) << G_TEXTURE_IMAGE_FRAC)\t\t\t\\\n}\n\n/* \n *  Allow tmem address and render tile to be specified.\n *  The S at the end means odd lines are already word Swapped \n */\n#define\tgDPLoadMultiBlockS(pkt, timg, tmem, rtile, fmt, siz, width, \t\\\n\t\t   height, pal, cms, cmt, masks, maskt, shifts, shiftt)\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tgDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg);\t\\\n\tgDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, \t\\\n\t\t0 , cmt, maskt,\tshiftt, cms, masks, shifts);\t\t\\\n\tgDPLoadSync(pkt);\t\t\t\t\t\t\\\n\tgDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, \t\t\t\t\\\n\t\t(((width)*(height) + siz##_INCR) >> siz##_SHIFT)-1,0);\t\\\n\tgDPPipeSync(pkt);\t\t\t\t\t\t\\\n\tgDPSetTile(pkt, fmt, siz,\t\t\t\t\t\\\n\t\t(((width) * siz##_LINE_BYTES)+7)>>3, tmem,\t\t\\\n\t\trtile, pal, cmt, maskt, shiftt, cms, masks,\t\t\\\n\t\tshifts);\t\t\t\t\t\t\\\n\tgDPSetTileSize(pkt, rtile, 0, 0,\t\t\t\t\\\n\t\t((width)-1) << G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t((height)-1) << G_TEXTURE_IMAGE_FRAC)\t\t\t\\\n}\n\n\n#define\tgDPLoadTextureBlockYuvS(pkt, timg, fmt, siz, width, height,\t\\\n\t\tpal, cms, cmt, masks, maskt, shifts, shiftt)\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tgDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg);\t\\\n\tgDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, 0, G_TX_LOADTILE, \t\\\n\t\t0 , cmt, maskt,\tshiftt, cms, masks, shifts);\t\t\\\n\tgDPLoadSync(pkt);\t\t\t\t\t\t\\\n\tgDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, \t\t\t\t\\\n\t\t(((width)*(height) + siz##_INCR) >> siz##_SHIFT)-1,0);\t\\\n\tgDPPipeSync(pkt);\t\t\t\t\t\t\\\n\tgDPSetTile(pkt, fmt, siz,\t\t\t\t\t\\\n\t\t(((width) * 1)+7)>>3, 0,\t\t\t\t\\\n\t\tG_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks,\t\\\n\t\tshifts);\t\t\t\t\t\t\\\n\tgDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0,\t\t\t\\\n\t\t((width)-1) << G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t((height)-1) << G_TEXTURE_IMAGE_FRAC)\t\t\t\\\n}\n\n/*\n *  allows tmem address to be specified\n */\n#define\t_gDPLoadTextureBlock(pkt, timg, tmem, fmt, siz, width, height,\t\\\n\t\tpal, cms, cmt, masks, maskt, shifts, shiftt)\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tgDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg);\t\\\n\tgDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE,  \\\n\t\t0, cmt, maskt, shiftt, cms, masks, shifts);\t\t\\\n\tgDPLoadSync(pkt);\t\t\t\t\t\t\\\n\tgDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, \t\t\t\t\\\n\t\t(((width)*(height) + siz##_INCR) >> siz##_SHIFT)-1,\t\\\n\t\tCALC_DXT(width, siz##_BYTES)); \t\t\t\t\\\n\tgDPPipeSync(pkt);\t\t\t\t\t\t\\\n\tgDPSetTile(pkt, fmt, siz, (((width) * siz##_LINE_BYTES)+7)>>3,\t\\\n\t\ttmem, G_TX_RENDERTILE, pal, cmt,\t\t\t\\\n\t\tmaskt, shiftt, cms, masks, shifts);\t\t\t\\\n\tgDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0,\t\t\t\\\n\t\t((width)-1) << G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t((height)-1) << G_TEXTURE_IMAGE_FRAC)\t\t\t\\\n}\n\n/*\n *  allows tmem address and render tile to be specified\n */\n#define\t_gDPLoadTextureBlockTile(pkt, timg, tmem, rtile, fmt, siz, width,  \\\n\t\theight, pal, cms, cmt, masks, maskt, shifts, shiftt)\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tgDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg);\t\\\n\tgDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, 0,\\\n\t\tcmt, maskt, shiftt, cms, masks, shifts);\t\t\\\n\tgDPLoadSync(pkt);\t\t\t\t\t\t\\\n\tgDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, \t\t\t\t\\\n\t\t(((width)*(height) + siz##_INCR) >> siz##_SHIFT)-1,\t\\\n\t\tCALC_DXT(width, siz##_BYTES)); \t\t\t\t\\\n\tgDPPipeSync(pkt);\t\t\t\t\t\t\\\n\tgDPSetTile(pkt, fmt, siz, (((width) * siz##_LINE_BYTES)+7)>>3,\t\\\n\t\ttmem, rtile, pal, cmt,\t\t\t\t\t\\\n\t\tmaskt, shiftt, cms, masks, shifts);\t\t\t\\\n\tgDPSetTileSize(pkt, rtile, 0, 0,\t\t\t\t\\\n\t\t((width)-1) << G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t((height)-1) << G_TEXTURE_IMAGE_FRAC)\t\t\t\\\n}\n\n/*\n *  allows tmem address and render tile to be specified\n */\n#define\tgDPLoadMultiBlock(pkt, timg, tmem, rtile, fmt, siz, width,  \t\\\n\t\theight, pal, cms, cmt, masks, maskt, shifts, shiftt)\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tgDPSetTextureImage(pkt, fmt, siz##_LOAD_BLOCK, 1, timg);\t\\\n\tgDPSetTile(pkt, fmt, siz##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, 0,\\\n\t\tcmt, maskt, shiftt, cms, masks, shifts);\t\t\\\n\tgDPLoadSync(pkt);\t\t\t\t\t\t\\\n\tgDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, \t\t\t\t\\\n\t\t(((width)*(height) + siz##_INCR) >> siz##_SHIFT)-1,\t\\\n\t\tCALC_DXT(width, siz##_BYTES)); \t\t\t\t\\\n\tgDPPipeSync(pkt);\t\t\t\t\t\t\\\n\tgDPSetTile(pkt, fmt, siz, (((width) * siz##_LINE_BYTES)+7)>>3,\t\\\n\t\ttmem, rtile, pal, cmt,\t\t\t\t\t\\\n\t\tmaskt, shiftt, cms, masks, shifts);\t\t\t\\\n\tgDPSetTileSize(pkt, rtile, 0, 0,\t\t\t\t\\\n\t\t((width)-1) << G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t((height)-1) << G_TEXTURE_IMAGE_FRAC)\t\t\t\\\n}\n\n#define\tgsDPLoadTextureBlock(timg, fmt, siz, width, height,\t\t\\\n\t\tpal, cms, cmt, masks, maskt, shifts, shiftt)\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\tgsDPSetTextureImage(fmt, siz##_LOAD_BLOCK, 1, timg),\t\t\\\n\tgsDPSetTile(fmt, siz##_LOAD_BLOCK, 0, 0, \t\t\t\\\n\t\tG_TX_LOADTILE, \t0 , cmt, maskt,\tshiftt, cms, \t\t\\\n\t\tmasks, shifts),\t\t\t\t\t\t\\\n\tgsDPLoadSync(),\t\t\t\t\t\t\t\\\n\tgsDPLoadBlock(G_TX_LOADTILE, 0, 0, \t\t\t\t\\\n\t\t(((width)*(height) + siz##_INCR) >> siz##_SHIFT)-1,\t\\\n\t\tCALC_DXT(width, siz##_BYTES)), \t\t\t\t\\\n\tgsDPPipeSync(),\t\t\t\t\t\t\t\\\n\tgsDPSetTile(fmt, siz, ((((width) * siz##_LINE_BYTES)+7)>>3), 0,\t\\\n\t\tG_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks,\t\\\n\t\tshifts),\t\t\t\t\t\t\\\n\tgsDPSetTileSize(G_TX_RENDERTILE, 0, 0,\t\t\t\t\\\n\t\t((width)-1) << G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t((height)-1) << G_TEXTURE_IMAGE_FRAC)\n\n/* Here is the static form of the pre-swapped texture block loading */\n/* See gDPLoadTextureBlockS() for reference.  Basically, just don't\n   calculate DxT, use 0 */\n\n#define\tgsDPLoadTextureBlockS(timg, fmt, siz, width, height,\t\t\\\n\t\tpal, cms, cmt, masks, maskt, shifts, shiftt)\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\tgsDPSetTextureImage(fmt, siz##_LOAD_BLOCK, 1, timg),\t\t\\\n\tgsDPSetTile(fmt, siz##_LOAD_BLOCK, 0, 0, G_TX_LOADTILE, 0 , \t\\\n\t\tcmt, maskt,shiftt, cms, masks, shifts),\t\t\t\\\n\tgsDPLoadSync(),\t\t\t\t\t\t\t\\\n\tgsDPLoadBlock(G_TX_LOADTILE, 0, 0, \t\t\t\t\\\n\t\t(((width)*(height) + siz##_INCR) >> siz##_SHIFT)-1, 0 ),\\\n\tgsDPPipeSync(),\t\t\t\t\t\t\t\\\n\tgsDPSetTile(fmt, siz, ((((width) * siz##_LINE_BYTES)+7)>>3), 0,\t\\\n\t\tG_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks,\t\\\n\t\tshifts),\t\t\t\t\t\t\\\n\tgsDPSetTileSize(G_TX_RENDERTILE, 0, 0,\t\t\t\t\\\n\t\t((width)-1) << G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t((height)-1) << G_TEXTURE_IMAGE_FRAC)\n\n/*\n *  Allow tmem address to be specified\n */\n#define\t_gsDPLoadTextureBlock(timg, tmem, fmt, siz, width, height,\t\\\n\t\tpal, cms, cmt, masks, maskt, shifts, shiftt)\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\tgsDPSetTextureImage(fmt, siz##_LOAD_BLOCK, 1, timg),\t\t\\\n\tgsDPSetTile(fmt, siz##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, \t\\\n\t\t0 , cmt, maskt,\tshiftt, cms, masks, shifts),\t\t\\\n\tgsDPLoadSync(),\t\t\t\t\t\t\t\\\n\tgsDPLoadBlock(G_TX_LOADTILE, 0, 0, \t\t\t\t\\\n\t\t(((width)*(height) + siz##_INCR) >> siz##_SHIFT)-1,\t\\\n\t\tCALC_DXT(width, siz##_BYTES)), \t\t\t\t\\\n\tgsDPPipeSync(),\t\t\t\t\t\t\t\\\n\tgsDPSetTile(fmt, siz,\t\t\t\t\t\t\\\n\t\t((((width) * siz##_LINE_BYTES)+7)>>3), tmem,\t\t\\\n\t\tG_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks,\t\\\n\t\tshifts),\t\t\t\t\t\t\\\n\tgsDPSetTileSize(G_TX_RENDERTILE, 0, 0,\t\t\t\t\\\n\t\t((width)-1) << G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t((height)-1) << G_TEXTURE_IMAGE_FRAC)\n\n\n/*\n *  Allow tmem address and render_tile to be specified\n */\n#define\t_gsDPLoadTextureBlockTile(timg, tmem, rtile, fmt, siz, width,\t\\\n\t\theight, pal, cms, cmt, masks, maskt, shifts, shiftt)\t\\\n\t\t\t\t\t\t\t\t\t\\\n\tgsDPSetTextureImage(fmt, siz##_LOAD_BLOCK, 1, timg),\t\t\\\n\tgsDPSetTile(fmt, siz##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, \t\\\n\t\t0 , cmt, maskt,\tshiftt, cms, masks, shifts),\t\t\\\n\tgsDPLoadSync(),\t\t\t\t\t\t\t\\\n\tgsDPLoadBlock(G_TX_LOADTILE, 0, 0, \t\t\t\t\\\n\t\t(((width)*(height) + siz##_INCR) >> siz##_SHIFT)-1,\t\\\n\t\tCALC_DXT(width, siz##_BYTES)), \t\t\t\t\\\n\tgsDPPipeSync(),\t\t\t\t\t\t\t\\\n\tgsDPSetTile(fmt, siz,\t\t\t\t\t\t\\\n\t\t((((width) * siz##_LINE_BYTES)+7)>>3), tmem,\t\t\\\n\t\trtile, pal, cmt, maskt, shiftt, cms, masks,\t\t\\\n\t\tshifts),\t\t\t\t\t\t\\\n\tgsDPSetTileSize(rtile, 0, 0,\t\t\t\t\t\\\n\t\t((width)-1) << G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t((height)-1) << G_TEXTURE_IMAGE_FRAC)\n\n\n/*\n *  Allow tmem address and render_tile to be specified, useful when loading\n *  mutilple tiles at a time.\n */\n#define\tgsDPLoadMultiBlock(timg, tmem, rtile, fmt, siz, width,\t\t\\\n\t\theight, pal, cms, cmt, masks, maskt, shifts, shiftt)\t\\\n\t\t\t\t\t\t\t\t\t\\\n\tgsDPSetTextureImage(fmt, siz##_LOAD_BLOCK, 1, timg),\t\t\\\n\tgsDPSetTile(fmt, siz##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, \t\\\n\t\t0 , cmt, maskt,\tshiftt, cms, masks, shifts),\t\t\\\n\tgsDPLoadSync(),\t\t\t\t\t\t\t\\\n\tgsDPLoadBlock(G_TX_LOADTILE, 0, 0, \t\t\t\t\\\n\t\t(((width)*(height) + siz##_INCR) >> siz##_SHIFT)-1,\t\\\n\t\tCALC_DXT(width, siz##_BYTES)), \t\t\t\t\\\n\tgsDPPipeSync(),\t\t\t\t\t\t\t\\\n\tgsDPSetTile(fmt, siz,\t\t\t\t\t\t\\\n\t\t((((width) * siz##_LINE_BYTES)+7)>>3), tmem,\t\t\\\n\t\trtile, pal, cmt, maskt, shiftt, cms, masks,\t\t\\\n\t\tshifts),\t\t\t\t\t\t\\\n\tgsDPSetTileSize(rtile, 0, 0,\t\t\t\t\t\\\n\t\t((width)-1) << G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t((height)-1) << G_TEXTURE_IMAGE_FRAC)\n\n/* \n *  Allows tmem and render tile to be specified.  Useful when loading\n *  several tiles at a time.\n *\n *  Here is the static form of the pre-swapped texture block loading\n *  See gDPLoadTextureBlockS() for reference.  Basically, just don't\n *  calculate DxT, use 0 \n */\n\n#define\tgsDPLoadMultiBlockS(timg, tmem, rtile, fmt, siz, width, height,\t\\\n\t\tpal, cms, cmt, masks, maskt, shifts, shiftt)\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\tgsDPSetTextureImage(fmt, siz##_LOAD_BLOCK, 1, timg),\t\t\\\n\tgsDPSetTile(fmt, siz##_LOAD_BLOCK, 0, tmem, G_TX_LOADTILE, 0 , \t\\\n\t\tcmt, maskt,shiftt, cms, masks, shifts),\t\t\t\\\n\tgsDPLoadSync(),\t\t\t\t\t\t\t\\\n\tgsDPLoadBlock(G_TX_LOADTILE, 0, 0, \t\t\t\t\\\n\t\t(((width)*(height) + siz##_INCR) >> siz##_SHIFT)-1, 0 ),\\\n\tgsDPPipeSync(),\t\t\t\t\t\t\t\\\n\tgsDPSetTile(fmt, siz, ((((width) * siz##_LINE_BYTES)+7)>>3), tmem,\\\n\t\trtile, pal, cmt, maskt, shiftt, cms, masks,\t\t\\\n\t\tshifts),\t\t\t\t\t\t\\\n\tgsDPSetTileSize(rtile, 0, 0,\t\t\t\t\t\\\n\t\t((width)-1) << G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t((height)-1) << G_TEXTURE_IMAGE_FRAC)\n\n\n#define\tgDPLoadTextureBlock_4b(pkt, timg, fmt, width, height,\t\t\\\n\t\tpal, cms, cmt, masks, maskt, shifts, shiftt)\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tgDPSetTextureImage(pkt, fmt, G_IM_SIZ_16b, 1, timg);\t\t\\\n\tgDPSetTile(pkt, fmt, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0,\t\\\n\t\tcmt, maskt, shiftt, cms, masks, shifts);\t\t\\\n\tgDPLoadSync(pkt);\t\t\t\t\t\t\\\n\tgDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0,\t\t\t\t\\\n\t\t(((width)*(height)+3)>>2)-1,\t\t\t\t\\\n\t\tCALC_DXT_4b(width)); \t\t\t\t\t\\\n\tgDPPipeSync(pkt);\t\t\t\t\t\t\\\n\tgDPSetTile(pkt, fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), 0,\t\\\n\t\tG_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks,\t\\\n\t\tshifts);\t\t\t\t\t\t\\\n\tgDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0,\t\t\t\\\n\t\t((width)-1) << G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t((height)-1) << G_TEXTURE_IMAGE_FRAC)\t\t\t\\\n}\n\n/* Load fix rww 27jun95 */\n/* The S at the end means odd lines are already word Swapped */\n\n#define\tgDPLoadTextureBlock_4bS(pkt, timg, fmt, width, height,\t\t\\\n\t\tpal, cms, cmt, masks, maskt, shifts, shiftt)\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tgDPSetTextureImage(pkt, fmt, G_IM_SIZ_16b, 1, timg);\t\t\\\n\tgDPSetTile(pkt, fmt, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0,\t\\\n\t\tcmt, maskt, shiftt, cms, masks, shifts);\t\t\\\n\tgDPLoadSync(pkt);\t\t\t\t\t\t\\\n\tgDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0,\t\t\t\t\\\n\t\t(((width)*(height)+3)>>2)-1, 0 );\t\t\t\\\n\tgDPPipeSync(pkt);\t\t\t\t\t\t\\\n\tgDPSetTile(pkt, fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), 0,\t\\\n\t\tG_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks,\t\\\n\t\tshifts);\t\t\t\t\t\t\\\n\tgDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0,\t\t\t\\\n\t\t((width)-1) << G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t((height)-1) << G_TEXTURE_IMAGE_FRAC)\t\t\t\\\n}\n\n/*\n *  4-bit load block.  Useful when loading multiple tiles\n */\n#define\tgDPLoadMultiBlock_4b(pkt, timg, tmem, rtile, fmt, width, height,\\\n\t\tpal, cms, cmt, masks, maskt, shifts, shiftt)\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tgDPSetTextureImage(pkt, fmt, G_IM_SIZ_16b, 1, timg);\t\t\\\n\tgDPSetTile(pkt, fmt, G_IM_SIZ_16b, 0, tmem, G_TX_LOADTILE, 0,\t\\\n\t\tcmt, maskt, shiftt, cms, masks, shifts);\t\t\\\n\tgDPLoadSync(pkt);\t\t\t\t\t\t\\\n\tgDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0,\t\t\t\t\\\n\t\t(((width)*(height)+3)>>2)-1,\t\t\t\t\\\n\t\tCALC_DXT_4b(width));\t\t\t\t\t\\\n\tgDPPipeSync(pkt);\t\t\t\t\t\t\\\n\tgDPSetTile(pkt, fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), tmem,\t\\\n\t\trtile, pal, cmt, maskt, shiftt, cms, masks,\t\t\\\n\t\tshifts);\t\t\t\t\t\t\\\n\tgDPSetTileSize(pkt, rtile, 0, 0,\t\t\t\t\\\n\t\t((width)-1) << G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t((height)-1) << G_TEXTURE_IMAGE_FRAC)\t\t\t\\\n}\n\n/*\n *  4-bit load block.  Allows tmem and render tile to be specified.  Useful when  \n *  loading multiple tiles.  The S means odd lines are already word swapped.\n */\n#define\tgDPLoadMultiBlock_4bS(pkt, timg, tmem, rtile, fmt, width, height,\\\n\t\tpal, cms, cmt, masks, maskt, shifts, shiftt)\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tgDPSetTextureImage(pkt, fmt, G_IM_SIZ_16b, 1, timg);\t\t\\\n\tgDPSetTile(pkt, fmt, G_IM_SIZ_16b, 0, tmem, G_TX_LOADTILE, 0,\t\\\n\t\tcmt, maskt, shiftt, cms, masks, shifts);\t\t\\\n\tgDPLoadSync(pkt);\t\t\t\t\t\t\\\n\tgDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0,\t\t\t\t\\\n\t\t(((width)*(height)+3)>>2)-1, 0 );\t\t\t\\\n\tgDPPipeSync(pkt);\t\t\t\t\t\t\\\n\tgDPSetTile(pkt, fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), tmem,\t\\\n\t\trtile, pal, cmt, maskt, shiftt, cms, masks,\t\t\\\n\t\tshifts);\t\t\t\t\t\t\\\n\tgDPSetTileSize(pkt, rtile, 0, 0,\t\t\t\t\\\n\t\t((width)-1) << G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t((height)-1) << G_TEXTURE_IMAGE_FRAC)\t\t\t\\\n}\n\n\n#define\t_gDPLoadTextureBlock_4b(pkt, timg, tmem, fmt, width, height,\t\\\n\t\tpal, cms, cmt, masks, maskt, shifts, shiftt)\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tgDPSetTextureImage(pkt, fmt, G_IM_SIZ_16b, 1, timg);\t\t\\\n\tgDPSetTile(pkt, fmt, G_IM_SIZ_16b, 0, tmem, G_TX_LOADTILE, 0,\t\\\n\t\tcmt, maskt, shiftt, cms, masks, shifts);\t\t\\\n\tgDPLoadSync(pkt);\t\t\t\t\t\t\\\n\tgDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0,\t\t\t\t\\\n\t\t(((width)*(height)+3)>>2)-1,\t\t\t\t\\\n\t\tCALC_DXT_4b(width));\t\t\t\t\t\\\n\tgDPPipeSync(pkt);\t\t\t\t\t\t\\\n\tgDPSetTile(pkt, fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), tmem,\t\\\n\t\tG_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks,\t\\\n\t\tshifts);\t\t\t\t\t\t\\\n\tgDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0,\t\t\t\\\n\t\t((width)-1) << G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t((height)-1) << G_TEXTURE_IMAGE_FRAC)\t\t\t\\\n}\n\n#define\tgsDPLoadTextureBlock_4b(timg, fmt, width, height,\t\t\\\n\t\tpal, cms, cmt, masks, maskt, shifts, shiftt)\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\tgsDPSetTextureImage(fmt, G_IM_SIZ_16b, 1, timg),\t\t\\\n\tgsDPSetTile(fmt, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0 , cmt,\t\\\n\t\tmaskt, shiftt, cms, masks, shifts),\t\t\t\\\n\tgsDPLoadSync(),\t\t\t\t\t\t\t\\\n\tgsDPLoadBlock(G_TX_LOADTILE, 0, 0, (((width)*(height)+3)>>2)-1,\t\\\n\t\tCALC_DXT_4b(width)),\t\t\t\t\t\\\n\tgsDPPipeSync(),\t\t\t\t\t\t\t\\\n\tgsDPSetTile(fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), 0,\t\t\\\n\t\tG_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks,\t\\\n\t\tshifts),\t\t\t\t\t\t\\\n\tgsDPSetTileSize(G_TX_RENDERTILE, 0, 0,\t\t\t\t\\\n\t\t((width)-1) << G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t((height)-1) << G_TEXTURE_IMAGE_FRAC)\n\n#define\tgsDPLoadTextureBlock_4bS(timg, fmt, width, height,\t\t\\\n\t\tpal, cms, cmt, masks, maskt, shifts, shiftt)\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\tgsDPSetTextureImage(fmt, G_IM_SIZ_16b, 1, timg),\t\t\\\n\tgsDPSetTile(fmt, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0 , cmt,\t\\\n\t\tmaskt, shiftt, cms, masks, shifts),\t\t\t\\\n\tgsDPLoadSync(),\t\t\t\t\t\t\t\\\n\tgsDPLoadBlock(G_TX_LOADTILE, 0, 0, (((width)*(height)+3)>>2)-1,0),\\\n\tgsDPPipeSync(),\t\t\t\t\t\t\t\\\n\tgsDPSetTile(fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), 0,\t\t\\\n\t\tG_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks,\t\\\n\t\tshifts),\t\t\t\t\t\t\\\n\tgsDPSetTileSize(G_TX_RENDERTILE, 0, 0,\t\t\t\t\\\n\t\t((width)-1) << G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t((height)-1) << G_TEXTURE_IMAGE_FRAC)\n\n/*\n *  4-bit load block.  Allows tmem address and render tile to be specified.\n *  Useful when loading multiple tiles.\n */\n#define\tgsDPLoadMultiBlock_4b(timg, tmem, rtile, fmt, width, height,\t\\\n\t\tpal, cms, cmt, masks, maskt, shifts, shiftt)\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\tgsDPSetTextureImage(fmt, G_IM_SIZ_16b, 1, timg),\t\t\\\n\tgsDPSetTile(fmt, G_IM_SIZ_16b, 0, tmem, G_TX_LOADTILE, 0 , cmt,\t\\\n\t\tmaskt, shiftt, cms, masks, shifts),\t\t\t\\\n\tgsDPLoadSync(),\t\t\t\t\t\t\t\\\n\tgsDPLoadBlock(G_TX_LOADTILE, 0, 0, (((width)*(height)+3)>>2)-1,\t\\\n\t\tCALC_DXT_4b(width)), \t\t\t\t\t\\\n\tgsDPPipeSync(),\t\t\t\t\t\t\t\\\n\tgsDPSetTile(fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), tmem,\t\\\n\t\trtile, pal, cmt, maskt, shiftt, cms, masks,\t\t\\\n\t\tshifts),\t\t\t\t\t\t\\\n\tgsDPSetTileSize(rtile, 0, 0,\t\t\t\t\t\\\n\t\t((width)-1) << G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t((height)-1) << G_TEXTURE_IMAGE_FRAC)\n\n\n/*\n *  4-bit load block.  Allows tmem address and render tile to be specified.\n *  Useful when loading multiple tiles.  S means odd lines are already swapped.\n */\n#define\tgsDPLoadMultiBlock_4bS(timg, tmem, rtile, fmt, width, height,\t\\\n\t\tpal, cms, cmt, masks, maskt, shifts, shiftt)\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\tgsDPSetTextureImage(fmt, G_IM_SIZ_16b, 1, timg),\t\t\\\n\tgsDPSetTile(fmt, G_IM_SIZ_16b, 0, tmem, G_TX_LOADTILE, 0 , cmt,\t\\\n\t\tmaskt, shiftt, cms, masks, shifts),\t\t\t\\\n\tgsDPLoadSync(),\t\t\t\t\t\t\t\\\n\tgsDPLoadBlock(G_TX_LOADTILE, 0, 0, (((width)*(height)+3)>>2)-1,0),\\\n\tgsDPPipeSync(),\t\t\t\t\t\t\t\\\n\tgsDPSetTile(fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), tmem,\t\\\n\t\trtile, pal, cmt, maskt, shiftt, cms, masks,\t\t\\\n\t\tshifts),\t\t\t\t\t\t\\\n\tgsDPSetTileSize(rtile, 0, 0,\t\t\t\t\t\\\n\t\t((width)-1) << G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t((height)-1) << G_TEXTURE_IMAGE_FRAC)\n\n\n/*\n *  Allows tmem address to be specified\n */\n#define\t_gsDPLoadTextureBlock_4b(timg, tmem, fmt, width, height,\t\\\n\t\tpal, cms, cmt, masks, maskt, shifts, shiftt)\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\tgsDPSetTextureImage(fmt, G_IM_SIZ_16b, 1, timg),\t\t\\\n\tgsDPSetTile(fmt, G_IM_SIZ_16b, 0, tmem, G_TX_LOADTILE, 0 , cmt,\t\\\n\t\tmaskt, shiftt, cms, masks, shifts),\t\t\t\\\n\tgsDPLoadSync(),\t\t\t\t\t\t\t\\\n\tgsDPLoadBlock(G_TX_LOADTILE, 0, 0, (((width)*(height)+3)>>2)-1,\t\\\n\t\tCALC_DXT_4b(width)), \t\t\t\t\t\\\n\tgsDPPipeSync(),\t\t\t\t\t\t\t\\\n\tgsDPSetTile(fmt, G_IM_SIZ_4b, ((((width)>>1)+7)>>3), tmem,\t\\\n\t\tG_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks,\t\\\n\t\tshifts),\t\t\t\t\t\t\\\n\tgsDPSetTileSize(G_TX_RENDERTILE, 0, 0,\t\t\t\t\\\n\t\t((width)-1) << G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t((height)-1) << G_TEXTURE_IMAGE_FRAC)\n\n#ifndef _HW_VERSION_1\n\n#define\tgDPLoadTextureTile(pkt, timg, fmt, siz, width, height,\t\t\\\n\t\tuls, ult, lrs, lrt, pal,\t\t\t\t\\\n\t\tcms, cmt, masks, maskt, shifts, shiftt)\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tgDPSetTextureImage(pkt, fmt, siz, width, timg);\t\t\t\\\n\tgDPSetTile(pkt, fmt, siz,\t\t\t\t\t\\\n\t\t(((((lrs)-(uls)+1) * siz##_TILE_BYTES)+7)>>3), 0,\t\\\n\t\tG_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, masks,\t\\\n\t\tshifts);\t\t\t\t\t\t\\\n\tgDPLoadSync(pkt);\t\t\t\t\t\t\\\n\tgDPLoadTile(\tpkt, G_TX_LOADTILE,\t\t\t\t\\\n\t\t\t(uls)<<G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t\t(ult)<<G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t\t(lrs)<<G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t\t(lrt)<<G_TEXTURE_IMAGE_FRAC);\t\t\t\\\n\tgDPPipeSync(pkt);\t\t\t\t\t\t\\\n\tgDPSetTile(pkt, fmt, siz,\t\t\t\t\t\\\n\t\t(((((lrs)-(uls)+1) * siz##_LINE_BYTES)+7)>>3), 0,\t\\\n\t\tG_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks,\t\\\n\t\tshifts);\t\t\t\t\t\t\\\n\tgDPSetTileSize(pkt, G_TX_RENDERTILE,\t\t\t\t\\\n\t\t\t(uls)<<G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t\t(ult)<<G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t\t(lrs)<<G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t\t(lrt)<<G_TEXTURE_IMAGE_FRAC)\t\t\t\\\n}\n\n#else /******** WORKAROUND hw 1 load tile bug ********/\n\n#define\tgDPLoadTextureTile(pkt, timg, fmt, siz, width, height,\t\t\\\n\t\tuls, ult, lrs, lrt, pal,\t\t\t\t\\\n\t\tcms, cmt, masks, maskt, shifts, shiftt)\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tint _loadtile_i, _loadtile_nw; Gfx *_loadtile_temp = pkt; \t\\\n\tguDPLoadTextureTile(_loadtile_temp, timg, fmt, siz, \t\t\\\n\t\twidth, height,        \t\t\t\t\t\\\n                uls, ult, lrs, lrt, pal,                                \\\n                cms, cmt, masks, maskt, shifts, shiftt);\t\t\\\n\t_loadtile_nw = guGetDPLoadTextureTileSz(ult, lrt) - 1;\t\t\\\n\tfor(_loadtile_i = 0; _loadtile_i < _loadtile_nw; _loadtile_i++)\t\\\n\t  pkt;\t\t\t\t\t\t\t\t\\\n}\n\n#endif /* HW_VERSION_1 */\n\n/*\n *  Load texture tile.  Allows tmem address and render tile to be specified.\n *  Useful for loading multiple tiles.\n */\n#define\tgDPLoadMultiTile(pkt, timg, tmem, rtile, fmt, siz, width, height,\\\n\t\tuls, ult, lrs, lrt, pal,\t\t\t\t\\\n\t\tcms, cmt, masks, maskt, shifts, shiftt)\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tgDPSetTextureImage(pkt, fmt, siz, width, timg);\t\t\t\\\n\tgDPSetTile(pkt, fmt, siz,\t\t\t\t\t\\\n\t\t(((((lrs)-(uls)+1) * siz##_TILE_BYTES)+7)>>3), tmem,\t\\\n\t\tG_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, masks,\t\\\n\t\tshifts);\t\t\t\t\t\t\\\n\tgDPLoadSync(pkt);\t\t\t\t\t\t\\\n\tgDPLoadTile(\tpkt, G_TX_LOADTILE,\t\t\t\t\\\n\t\t\t(uls)<<G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t\t(ult)<<G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t\t(lrs)<<G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t\t(lrt)<<G_TEXTURE_IMAGE_FRAC);\t\t\t\\\n\tgDPPipeSync(pkt);\t\t\t\t\t\t\\\n\tgDPSetTile(pkt, fmt, siz,\t\t\t\t\t\\\n\t\t(((((lrs)-(uls)+1) * siz##_LINE_BYTES)+7)>>3), tmem,\t\\\n\t\trtile, pal, cmt, maskt, shiftt, cms, masks,\t\t\\\n\t\tshifts);\t\t\t\t\t\t\\\n\tgDPSetTileSize(pkt, rtile,\t\t\t\t\t\\\n\t\t\t(uls)<<G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t\t(ult)<<G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t\t(lrs)<<G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t\t(lrt)<<G_TEXTURE_IMAGE_FRAC)\t\t\t\\\n}\n\n\n#define\tgsDPLoadTextureTile(timg, fmt, siz, width, height,\t\t\\\n\t\tuls, ult, lrs, lrt, pal,\t\t\t\t\\\n\t\tcms, cmt, masks, maskt, shifts, shiftt)\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\tgsDPSetTextureImage(fmt, siz, width, timg),\t\t\t\\\n\tgsDPSetTile(fmt, siz, \t\t\t\t\t\t\\\n\t\t    (((((lrs)-(uls)+1) * siz##_TILE_BYTES)+7)>>3), 0,\t\\\n\t\t    G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, masks,\t\\\n\t\t    shifts),\t\t\t\t\t\t\\\n\tgsDPLoadSync(),\t\t\t\t\t\t\t\\\n\tgsDPLoadTile(\tG_TX_LOADTILE,\t\t\t\t\t\\\n\t\t\t(uls)<<G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t\t(ult)<<G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t\t(lrs)<<G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t\t(lrt)<<G_TEXTURE_IMAGE_FRAC),\t\t\t\\\n\tgsDPPipeSync(),\t\t\t\t\t\t\t\\\n\tgsDPSetTile(fmt, siz, \t\t\t\t\t\t\\\n\t\t    (((((lrs)-(uls)+1) * siz##_LINE_BYTES)+7)>>3), 0,\t\\\n\t\t    G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks,\\\n\t\t    shifts),\t\t\t\t\t\t\\\n\tgsDPSetTileSize(G_TX_RENDERTILE,\t\t\t\t\\\n\t\t\t(uls)<<G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t\t(ult)<<G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t\t(lrs)<<G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t\t(lrt)<<G_TEXTURE_IMAGE_FRAC)\n\n/*\n *  Load texture tile.  Allows tmem address and render tile to be specified.\n *  Useful for loading multiple tiles.\n */\n#define\tgsDPLoadMultiTile(timg, tmem, rtile, fmt, siz, width, height,\t\\\n\t\tuls, ult, lrs, lrt, pal,\t\t\t\t\\\n\t\tcms, cmt, masks, maskt, shifts, shiftt)\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\tgsDPSetTextureImage(fmt, siz, width, timg),\t\t\t\\\n\tgsDPSetTile(fmt, siz, \t\t\t\t\t\t\\\n\t\t    (((((lrs)-(uls)+1) * siz##_TILE_BYTES)+7)>>3), \t\\\n\t\t    tmem, G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, \t\\\n\t\t    masks, shifts),\t\t\t\t\t\\\n\tgsDPLoadSync(),\t\t\t\t\t\t\t\\\n\tgsDPLoadTile(\tG_TX_LOADTILE,\t\t\t\t\t\\\n\t\t\t(uls)<<G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t\t(ult)<<G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t\t(lrs)<<G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t\t(lrt)<<G_TEXTURE_IMAGE_FRAC),\t\t\t\\\n\tgsDPPipeSync(),\t\t\t\t\t\t\t\\\n\tgsDPSetTile(fmt, siz, \t\t\t\t\t\t\\\n\t\t    (((((lrs)-(uls)+1) * siz##_LINE_BYTES)+7)>>3), \t\\\n\t\t    tmem, rtile, pal, cmt, maskt, shiftt, cms, masks,\t\\\n\t\t    shifts),\t\t\t\t\t\t\\\n\tgsDPSetTileSize(rtile,\t\t\t\t\t\t\\\n\t\t\t(uls)<<G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t\t(ult)<<G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t\t(lrs)<<G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t\t(lrt)<<G_TEXTURE_IMAGE_FRAC)\n\n#define\tgDPLoadTextureTile_4b(pkt, timg, fmt, width, height,\t\t\\\n\t\tuls, ult, lrs, lrt, pal,\t\t\t\t\\\n\t\tcms, cmt, masks, maskt, shifts, shiftt)\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tgDPSetTextureImage(pkt, fmt, G_IM_SIZ_8b, ((width)>>1), timg);\t\\\n\tgDPSetTile(pkt, fmt, G_IM_SIZ_8b, \t\t\t\t\\\n\t\t   (((((lrs)-(uls)+1)>>1)+7)>>3), 0,\t\t\t\\\n\t\t   G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, masks,\t\\\n\t\t   shifts);\t\t\t\t\t\t\\\n\tgDPLoadSync(pkt);\t\t\t\t\t\t\\\n\tgDPLoadTile(\tpkt, G_TX_LOADTILE,\t\t\t\t\\\n\t\t\t(uls)<<(G_TEXTURE_IMAGE_FRAC-1),\t\t\\\n\t\t\t(ult)<<(G_TEXTURE_IMAGE_FRAC),\t\t\t\\\n\t\t\t(lrs)<<(G_TEXTURE_IMAGE_FRAC-1),\t\t\\\n\t\t\t(lrt)<<(G_TEXTURE_IMAGE_FRAC));\t\t\t\\\n\tgDPPipeSync(pkt);\t\t\t\t\t\t\\\n\tgDPSetTile(pkt, fmt, G_IM_SIZ_4b, \t\t\t\t\\\n\t\t   (((((lrs)-(uls)+1)>>1)+7)>>3), 0,\t\t\t\\\n\t\t   G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, \t\\\n\t\t   masks, shifts);\t\t\t\t\t\\\n\tgDPSetTileSize(pkt, G_TX_RENDERTILE,\t\t\t\t\\\n\t\t\t(uls)<<G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t\t(ult)<<G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t\t(lrs)<<G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t\t(lrt)<<G_TEXTURE_IMAGE_FRAC)\t\t\t\\\n}\n\n/*\n *  Load texture tile.  Allows tmem address and render tile to be specified.\n *  Useful for loading multiple tiles.\n */\n#define\tgDPLoadMultiTile_4b(pkt, timg, tmem, rtile, fmt, width, height,\t\\\n\t\tuls, ult, lrs, lrt, pal,\t\t\t\t\\\n\t\tcms, cmt, masks, maskt, shifts, shiftt)\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tgDPSetTextureImage(pkt, fmt, G_IM_SIZ_8b, ((width)>>1), timg);\t\\\n\tgDPSetTile(pkt, fmt, G_IM_SIZ_8b, \t\t\t        \\\n\t\t   (((((lrs)-(uls)+1)>>1)+7)>>3), tmem,\t\t\t\\\n\t\t   G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, masks,\t\\\n\t\t   shifts);\t\t\t\t\t\t\\\n\tgDPLoadSync(pkt);\t\t\t\t\t\t\\\n\tgDPLoadTile(\tpkt, G_TX_LOADTILE,\t\t\t\t\\\n\t\t\t(uls)<<(G_TEXTURE_IMAGE_FRAC-1),\t\t\\\n\t\t\t(ult)<<(G_TEXTURE_IMAGE_FRAC),\t\t\t\\\n\t\t\t(lrs)<<(G_TEXTURE_IMAGE_FRAC-1),\t\t\\\n\t\t\t(lrt)<<(G_TEXTURE_IMAGE_FRAC));\t\t\t\\\n\tgDPPipeSync(pkt);\t\t\t\t\t\t\\\n\tgDPSetTile(pkt, fmt, G_IM_SIZ_4b, \t\t\t\t\\\n\t\t   (((((lrs)-(uls)+1)>>1)+7)>>3), tmem,\t\t\t\\\n\t\t   rtile, pal, cmt, maskt, shiftt, cms, masks,\t\t\\\n\t\t   shifts);\t\t\t\t\t\t\\\n\tgDPSetTileSize(pkt, rtile,\t\t\t\t\t\\\n\t\t\t(uls)<<G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t\t(ult)<<G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t\t(lrs)<<G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t\t(lrt)<<G_TEXTURE_IMAGE_FRAC)\t\t\t\\\n}\n\n#define\tgsDPLoadTextureTile_4b(timg, fmt, width, height,\t\t\\\n\t\tuls, ult, lrs, lrt, pal,\t\t\t\t\\\n\t\tcms, cmt, masks, maskt, shifts, shiftt)\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\tgsDPSetTextureImage(fmt, G_IM_SIZ_8b, ((width)>>1), timg),\t\\\n\tgsDPSetTile(fmt, G_IM_SIZ_8b, (((((lrs)-(uls)+1)>>1)+7)>>3), 0,\t\\\n\t\tG_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, masks,\t\\\n\t\tshifts),\t\t\t\t\t\t\\\n\tgsDPLoadSync(),\t\t\t\t\t\t\t\\\n\tgsDPLoadTile(\tG_TX_LOADTILE,\t\t\t\t\t\\\n\t\t\t(uls)<<(G_TEXTURE_IMAGE_FRAC-1),\t\t\\\n\t\t\t(ult)<<(G_TEXTURE_IMAGE_FRAC),\t\t\t\\\n\t\t\t(lrs)<<(G_TEXTURE_IMAGE_FRAC-1),\t\t\\\n\t\t\t(lrt)<<(G_TEXTURE_IMAGE_FRAC)),\t\t\t\\\n\tgsDPPipeSync(),\t\t\t\t\t\t\t\\\n\tgsDPSetTile(fmt, G_IM_SIZ_4b, (((((lrs)-(uls)+1)>>1)+7)>>3), 0,\t\\\n\t\tG_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks,\t\\\n\t\tshifts),\t\t\t\t\t\t\\\n\tgsDPSetTileSize(G_TX_RENDERTILE,\t\t\t\t\\\n\t\t\t(uls)<<G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t\t(ult)<<G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t\t(lrs)<<G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t\t(lrt)<<G_TEXTURE_IMAGE_FRAC)\n\n/*\n *  Load texture tile.  Allows tmem address and render tile to be specified.\n *  Useful for loading multiple tiles.\n */\n#define\tgsDPLoadMultiTile_4b(timg, tmem, rtile, fmt, width, height,\t\\\n\t\tuls, ult, lrs, lrt, pal,\t\t\t\t\\\n\t\tcms, cmt, masks, maskt, shifts, shiftt)\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\tgsDPSetTextureImage(fmt, G_IM_SIZ_8b, ((width)>>1), timg),\t\\\n\tgsDPSetTile(fmt, G_IM_SIZ_8b, (((((lrs)-(uls)+1)>>1)+7)>>3), \t\\\n\t\t    tmem, G_TX_LOADTILE, 0 , cmt, maskt, shiftt, cms, \t\\\n\t\t    masks, shifts),\t\t\t\t\t\\\n\tgsDPLoadSync(),\t\t\t\t\t\t\t\\\n\tgsDPLoadTile(\tG_TX_LOADTILE,\t\t\t\t\t\\\n\t\t\t(uls)<<(G_TEXTURE_IMAGE_FRAC-1),\t\t\\\n\t\t\t(ult)<<(G_TEXTURE_IMAGE_FRAC),\t\t\t\\\n\t\t\t(lrs)<<(G_TEXTURE_IMAGE_FRAC-1),\t\t\\\n\t\t\t(lrt)<<(G_TEXTURE_IMAGE_FRAC)),\t\t\t\\\n\tgsDPPipeSync(),\t\t\t\t\t\t\t\\\n\tgsDPSetTile(fmt, G_IM_SIZ_4b, (((((lrs)-(uls)+1)>>1)+7)>>3), \t\\\n\t\t    tmem, rtile, pal, cmt, maskt, shiftt, cms, masks,\t\\\n\t\t    shifts),\t\t\t\t\t\t\\\n\tgsDPSetTileSize(rtile,\t\t\t\t\t\t\\\n\t\t\t(uls)<<G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t\t(ult)<<G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t\t(lrs)<<G_TEXTURE_IMAGE_FRAC,\t\t\t\\\n\t\t\t(lrt)<<G_TEXTURE_IMAGE_FRAC)\n\n/*\n *  Load a 16-entry palette (for 4-bit CI textures)\n *  Assumes a 16 entry tlut is being loaded, palette # is 0-15\n */\n#ifndef _HW_VERSION_1\n\n#define gDPLoadTLUT_pal16(pkt, pal, dram)\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tgDPSetTextureImage(pkt, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dram);\t\\\n\tgDPTileSync(pkt);\t\t\t\t\t\t\\\n\tgDPSetTile(pkt, 0, 0, 0, (256+(((pal)&0xf)*16)),\t\t\\\n\t\tG_TX_LOADTILE, 0 , 0, 0, 0, 0, 0, 0);\t\t\t\\\n\tgDPLoadSync(pkt);\t\t\t\t\t\t\\\n\tgDPLoadTLUTCmd(pkt, G_TX_LOADTILE, 15);\t\t\t\t\\\n\tgDPPipeSync(pkt)\t\t\t\t\t\t\\\n}\n\n#else /* **** WORKAROUND hardware 1 load_tlut bug ****** */\n\n#define gDPLoadTLUT_pal16(pkt, pal, dram)\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n        _gDPLoadTextureBlock(pkt, dram, (256+(((pal)&0xf)*16)),\t\t\\\n\t\tG_IM_FMT_RGBA, G_IM_SIZ_16b, 4*16, 1,\t\t\t\\\n\t\tpal, 0, 0, 0, 0, 0, 0)\n\n#endif /* _HW_VERSION_1 */\n\n\n/*\n *  Load a 16-entry palette (for 4-bit CI textures)\n *  Assumes a 16 entry tlut is being loaded, palette # is 0-15\n */\n#ifndef _HW_VERSION_1\n\n#define gsDPLoadTLUT_pal16(pal, dram)\t\t\t\t\t\\\n \t\t\t\t\t\t\t\t\t\\\n\tgsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dram),\t\\\n\tgsDPTileSync(),\t\t\t\t\t\t\t\\\n\tgsDPSetTile(0, 0, 0, (256+(((pal)&0xf)*16)),\t\t\t\\\n\t\tG_TX_LOADTILE, 0 , 0, 0, 0, 0, 0, 0),\t\t\t\\\n\tgsDPLoadSync(),\t\t\t\t\t\t\t\\\n\tgsDPLoadTLUTCmd(G_TX_LOADTILE, 15),\t\t\t\t\\\n\tgsDPPipeSync()\n\n#else /* **** WORKAROUND hardware 1 load_tlut bug ****** */\n\n#define gsDPLoadTLUT_pal16(pal, dram)                                   \\\n\t\t\t\t\t\t\t\t\t\\\n\t_gsDPLoadTextureBlock(dram, (256+(((pal)&0xf)*16)),           \t\\\n                G_IM_FMT_RGBA, G_IM_SIZ_16b, 4*16, 1,                   \\\n                pal, 0, 0, 0, 0, 0, 0)\n\n#endif /* _HW_VERSION_1 */ \n\n/*\n *  Load a 256-entry palette (for 8-bit CI textures)\n *  Assumes a 256 entry tlut is being loaded, palette # is not used\n */\n#ifndef _HW_VERSION_1\n\n#define gDPLoadTLUT_pal256(pkt, dram)\t\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tgDPSetTextureImage(pkt, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dram);\t\\\n\tgDPTileSync(pkt);\t\t\t\t\t\t\\\n\tgDPSetTile(pkt, 0, 0, 0, 256,\t\t\t\t\t\\\n\t\tG_TX_LOADTILE, 0 , 0, 0, 0, 0, 0, 0);\t\t\t\\\n\tgDPLoadSync(pkt);\t\t\t\t\t\t\\\n\tgDPLoadTLUTCmd(pkt, G_TX_LOADTILE, 255);\t\t\t\\\n\tgDPPipeSync(pkt)\t\t\t\t\t\t\\\n}\n\n#else /* **** WORKAROUND hardware 1 load_tlut bug ****** */\n\n#define gDPLoadTLUT_pal256(pkt, dram)                                   \\\n\t                                                                \\\n\t_gDPLoadTextureBlock(pkt, dram, 256,           \t\t\t\\\n                G_IM_FMT_RGBA, G_IM_SIZ_16b, 4*256, 1,\t\t\t\\\n                0, 0, 0, 0, 0, 0, 0)\n\n\n#endif /* _HW_VERSION_1 */\n\n\n#ifndef _HW_VERSION_1\n\n#define gsDPLoadTLUT_pal256(dram)\t\t\t\t\t\\\n \t\t\t\t\t\t\t\t\t\\\n\tgsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dram),\t\\\n\tgsDPTileSync(),\t\t\t\t\t\t\t\\\n\tgsDPSetTile(0, 0, 0, 256,\t\t\t\t\t\\\n\t\tG_TX_LOADTILE, 0 , 0, 0, 0, 0, 0, 0),\t\t\t\\\n\tgsDPLoadSync(),\t\t\t\t\t\t\t\\\n\tgsDPLoadTLUTCmd(G_TX_LOADTILE, 255),\t\t\t\t\\\n\tgsDPPipeSync()\n \n#else /* **** WORKAROUND hardware 1 load_tlut bug ****** */\n\n#define gsDPLoadTLUT_pal256(dram)                                       \\\n                                                                        \\\n\t_gsDPLoadTextureBlock(dram, 256,                            \t\\\n                G_IM_FMT_RGBA, G_IM_SIZ_16b, 4*256, 1,                  \\\n                0, 0, 0, 0, 0, 0, 0)\n\n#endif /* _HW_VERSION_1 */\n\n\n#ifndef _HW_VERSION_1\n\n#define gDPLoadTLUT(pkt, count, tmemaddr, dram)\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tgDPSetTextureImage(pkt, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dram);\t\\\n\tgDPTileSync(pkt);\t\t\t\t\t\t\\\n\tgDPSetTile(pkt, 0, 0, 0, tmemaddr,\t\t\t\t\\\n\t\tG_TX_LOADTILE, 0 , 0, 0, 0, 0, 0, 0);\t\t\t\\\n\tgDPLoadSync(pkt);\t\t\t\t\t\t\\\n\tgDPLoadTLUTCmd(pkt, G_TX_LOADTILE, ((count)-1));\t\t\\\n\tgDPPipeSync(pkt);\t\t\t\t\t\t\\\n}\n\n#else /* **** WORKAROUND hardware 1 load_tlut bug ****** */\n\n#define gDPLoadTLUT(pkt, count, tmemaddr, dram)                         \\\n\t\t\t\t\t\t\t\t\t\\\n        _gDPLoadTextureBlock(pkt, dram, tmemaddr,                       \\\n                G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, count,                  \\\n                0, 0, 0, 0, 0, 0, 0)\n\n#endif /* _HW_VERSION_1 */\n\n\n#ifndef _HW_VERSION_1\n\n#define gsDPLoadTLUT(count, tmemaddr, dram)\t\t\t\t\\\n \t\t\t\t\t\t\t\t\t\\\n\tgsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dram),\t\\\n\tgsDPTileSync(),\t\t\t\t\t\t\t\\\n\tgsDPSetTile(0, 0, 0, tmemaddr,\t\t\t\t\t\\\n\t\tG_TX_LOADTILE, 0 , 0, 0, 0, 0, 0, 0),\t\t\t\\\n\tgsDPLoadSync(),\t\t\t\t\t\t\t\\\n\tgsDPLoadTLUTCmd(G_TX_LOADTILE, ((count)-1)),\t\t\t\\\n\tgsDPPipeSync()\n\n#else /* **** WORKAROUND hardware 1 load_tlut bug ****** */\n#define gsDPLoadTLUT(count, tmemaddr, dram)                             \\\n                                                                        \\\n        _gsDPLoadTextureBlock(dram, tmemaddr,                       \t\\\n                G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, count,                  \\\n                0, 0, 0, 0, 0, 0, 0)\n\n#endif /* _HW_VERSION_1 */ \n\n#define gDPSetScissor(pkt, mode, ulx, uly, lrx, lry)\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)pkt;\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = _SHIFTL(G_SETSCISSOR, 24, 8) |\t\t\t\\\n\t\t       _SHIFTL((int)((float)(ulx)*4.0F), 12, 12) |\t\\\n                       _SHIFTL((int)((float)(uly)*4.0F), 0, 12);\t\\\n\t_g->words.w1 = _SHIFTL(mode, 24, 2) |\t\t\t\t\\\n\t\t       _SHIFTL((int)((float)(lrx)*4.0F), 12, 12) |\t\\\n                       _SHIFTL((int)((float)(lry)*4.0F), 0, 12);\t\\\n}\n\n\n#define gDPSetScissorFrac(pkt, mode, ulx, uly, lrx, lry)\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)pkt;\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = _SHIFTL(G_SETSCISSOR, 24, 8) |\t\t\t\\\n\t\t       _SHIFTL((int)((ulx)), 12, 12) |\t\t\t\\\n                       _SHIFTL((int)((uly)), 0, 12);\t\t\t\\\n\t_g->words.w1 = _SHIFTL(mode, 24, 2) |\t\t\t\t\\\n\t\t       _SHIFTL((int)((lrx)), 12, 12) | \t\t\t\\\n                       _SHIFTL((int)((lry)), 0, 12);\t\t\t\\\n}\n\n#define gsDPSetScissor(mode, ulx, uly, lrx, lry)\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t_SHIFTL(G_SETSCISSOR, 24, 8) |\t\t\t\t\t\\\n\t_SHIFTL((int)((float)(ulx)*4.0F), 12, 12) |\t\t\t\\\n\t_SHIFTL((int)((float)(uly)*4.0F), 0, 12),\t\t\t\\\n\t_SHIFTL(mode, 24, 2) |\t\t\t\t\t\t\\\n\t_SHIFTL((int)((float)(lrx)*4.0F), 12, 12) |\t\t\t\\\n\t_SHIFTL((int)((float)(lry)*4.0F), 0, 12)\t\t\t\\\n}}\n\n#define gsDPSetScissorFrac(mode, ulx, uly, lrx, lry)\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t_SHIFTL(G_SETSCISSOR, 24, 8) |\t\t\t\t\t\\\n\t_SHIFTL((int)((ulx)), 12, 12) |\t\t\t\t\t\\\n\t_SHIFTL((int)((uly)), 0, 12),\t\t\t\t\t\\\n\t_SHIFTL(mode, 24, 2) |\t\t\t\t\t\t\\\n\t_SHIFTL((int)(lrx), 12, 12) |\t\t\t\t\t\\\n\t_SHIFTL((int)(lry), 0, 12)\t\t\t\t\t\\\n}}\n\n/* Fraction never used in fill */\n#ifdef F3DEX_GBI_2E\n#define\tgDPFillRectangle(pkt, ulx, uly, lrx, lry)\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g0 = (Gfx *)(pkt), *_g1 = (Gfx *)(pkt);\t\t\t\\\n\t_g0->words.w0 = _SHIFTL(G_FILLRECT, 24, 8) | \t\t\t\\\n\t\t       _SHIFTL((lrx), 2, 22);\t\t\t\t\\\n\t_g0->words.w1 = _SHIFTL((lry), 2, 22);\t\t\t\t\\\n        _g1->words.w0 = _SHIFTL((ulx), 2, 22);\t\t\t\t\\\n\t_g1->words.w1 = _SHIFTL((uly), 2, 22);\t\t\t\t\\\n}\n#define\tgsDPFillRectangle(ulx, uly, lrx, lry)\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t(_SHIFTL(G_FILLRECT, 24, 8) | _SHIFTL((lrx), 2, 22)),\t\t\\\n\t_SHIFTL((lry), 2, 22),\t\t\t\t\t\t\\\n}},\t\t\t\t\t\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t_SHIFTL((ulx), 2, 22),\t\t\t\t\t\t\\\n\t_SHIFTL((uly), 2, 22),\t\t\t\t\t\t\\\n}}\n#else\n#define\tgDPFillRectangle(pkt, ulx, uly, lrx, lry)\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = (_SHIFTL(G_FILLRECT, 24, 8) | \t\t\t\\\n\t\t\t_SHIFTL((lrx), 14, 10) | _SHIFTL((lry), 2, 10));\\\n\t_g->words.w1 = (_SHIFTL((ulx), 14, 10) | _SHIFTL((uly), 2, 10));\\\n}\n#define\tgsDPFillRectangle(ulx, uly, lrx, lry)\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t(_SHIFTL(G_FILLRECT, 24, 8) | _SHIFTL((lrx), 14, 10) | \t\t\\\n\t _SHIFTL((lry), 2, 10)),\t\t\t\t\t\\\n\t(_SHIFTL((ulx), 14, 10) | _SHIFTL((uly), 2, 10))\t\t\\\n}}\n#endif\n\n/* like gDPFillRectangle but accepts negative arguments */\n#ifndef F3DEX_GBI_2E\n#define\tgDPScisFillRectangle(pkt, ulx, uly, lrx, lry)\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = (_SHIFTL(G_FILLRECT, 24, 8) | \t\t\t\\\n\t\t\t_SHIFTL(MAX((lrx),0), 14, 10) | \t\t\\\n\t\t\t_SHIFTL(MAX((lry),0), 2, 10));\t\t\t\\\n\t_g->words.w1 = (_SHIFTL(MAX((ulx),0), 14, 10) | \t\t\\\n\t\t\t_SHIFTL(MAX((uly),0), 2, 10));\t\t\t\\\n}\n#endif\n\n#define\tgDPSetConvert(pkt, k0, k1, k2, k3, k4, k5)\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = (_SHIFTL(G_SETCONVERT, 24, 8) |\t\t\t\\\n\t\t\t_SHIFTL(k0, 13, 9) | _SHIFTL(k1, 4, 9) | \t\\\n\t\t\t_SHIFTR(k2, 5, 4));\t\t\t\t\\\n\t_g->words.w1 = (_SHIFTL(k2, 27, 5) | _SHIFTL(k3, 18, 9) |\t\\\n\t\t\t_SHIFTL(k4, 9, 9) | _SHIFTL(k5, 0, 9));\t\t\\\n}\n\n#define gsDPSetConvert(k0, k1, k2, k3, k4, k5)\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t(_SHIFTL(G_SETCONVERT, 24, 8) |\t\t\t\t\t\\\n\t _SHIFTL(k0, 13, 9) | _SHIFTL(k1, 4, 9) | _SHIFTR(k2, 5, 4)),\t\\\n\t(_SHIFTL(k2, 27, 5) | _SHIFTL(k3, 18, 9) | _SHIFTL(k4, 9, 9) | \t\\\n\t _SHIFTL(k5, 0, 9))\t\t\t\t\t\t\\\n}}\n\n#define\tgDPSetKeyR(pkt, cR, sR, wR)\t\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = _SHIFTL(G_SETKEYR, 24, 8);\t\t\t\\\n\t_g->words.w1 = (_SHIFTL(wR, 16, 12) | _SHIFTL(cR, 8, 8) | \t\\\n\t\t\t_SHIFTL(sR, 0, 8));\t\t\t\t\\\n}\n\n#define\tgsDPSetKeyR(cR, sR, wR)\t\t\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t_SHIFTL(G_SETKEYR, 24, 8),\t\t\t\t\t\\\n\t_SHIFTL(wR, 16, 12) | _SHIFTL(cR, 8, 8) | _SHIFTL(sR, 0, 8)\t\\\n}}\n\n#define\tgDPSetKeyGB(pkt, cG, sG, wG, cB, sB, wB)\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = (_SHIFTL(G_SETKEYGB, 24, 8) |\t\t\t\\\n\t\t\t_SHIFTL(wG, 12, 12) | _SHIFTL(wB, 0, 12));\t\\\n\t_g->words.w1 = (_SHIFTL(cG, 24, 8) | _SHIFTL(sG, 16, 8) |\t\\\n\t\t\t _SHIFTL(cB, 8, 8) | _SHIFTL(sB, 0, 8));\t\\\n}\n\n#define\tgsDPSetKeyGB(cG, sG, wG, cB, sB, wB)\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t(_SHIFTL(G_SETKEYGB, 24, 8) | _SHIFTL(wG, 12, 12) |\t\t\\\n\t _SHIFTL(wB, 0, 12)),\t\t\t\t\t\t\\\n\t(_SHIFTL(cG, 24, 8) | _SHIFTL(sG, 16, 8) | _SHIFTL(cB, 8, 8) |\t\\\n\t _SHIFTL(sB, 0, 8))\t\t\t\t\t\t\\\n}}\n\n#define gDPNoParam(pkt, cmd)\t\t\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = _SHIFTL(cmd, 24, 8);\t\t\t\t\\\n\t_g->words.w1 = 0;\t\t\t\t\t\t\\\n}\n\n#define gsDPNoParam(cmd)\t\t\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t_SHIFTL(cmd, 24, 8), 0\t\t\t\t\t\t\\\n}}\n\n#define gDPParam(pkt, cmd, param)\t\t\t\t\t\\\n{\t\t\t\t\t\t\t\t\t\\\n\tGfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n\t_g->words.w0 = _SHIFTL(cmd, 24, 8);\t\t\t\t\\\n\t_g->words.w1 = (param);\t\t\t\t\t\t\\\n}\n\n#define gsDPParam(cmd, param)\t\t\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n\t_SHIFTL(cmd, 24, 8), (param)\t\t\t\t\t\\\n}}\n\n/* Notice that textured rectangles are 128-bit commands, therefore\n * gsDPTextureRectangle() should not be used in display lists \n * under normal circumstances (use gsSPTextureRectangle()).\n * That is also why there is no gDPTextureRectangle() macros.\n */\n#define gsDPTextureRectangle(xl, yl, xh, yh, tile, s, t, dsdx, dtdy)\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n    (_SHIFTL(G_TEXRECT, 24, 8) | _SHIFTL(xh, 12, 12) | \t\t\t\\\n     _SHIFTL(yh, 0, 12)),\t\t\t\t\t\t\\\n    (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) | _SHIFTL(yl, 0, 12)),\t\\\n}},\t\t\t\t\t\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n    _SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16),\t\t\t\t\\\n    _SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16)\t\t\t\\\n}}\n\n#define gDPTextureRectangle(pkt, xl, yl, xh, yh, tile, s, t, dsdx, dtdy)\\\n{\t\t\t\t\t\t\t\t\t\\\n    Gfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n    if (pkt);\t\t\t\t\t\t\t\t\\\n    _g->words.w0 = (_SHIFTL(G_TEXRECT, 24, 8) | _SHIFTL(xh, 12, 12) |\t\\\n\t\t    _SHIFTL(yh, 0, 12));    \t\t\t\t\\\n    _g->words.w1 = (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) |\t\\\n\t\t    _SHIFTL(yl, 0, 12));\t\t\t\t\\\n    _g ++;\t\t\t\t\t\t\t\t\\\n    _g->words.w0 = (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16));\t\t\\\n    _g->words.w1 = (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16));\t\\\n}\n\n#define gsDPTextureRectangleFlip(xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \\\n{{\t\t\t\t\t\t\t\t\t\\\n    (_SHIFTL(G_TEXRECTFLIP, 24, 8) | _SHIFTL(xh, 12, 12) |\t\t\\\n     _SHIFTL(yh, 0, 12)),\t\t\t\t\t\t\\\n    (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) | _SHIFTL(yl, 0, 12)),\t\\\n}},\t\t\t\t\t\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n    _SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16),\t\t\t\t\\\n    _SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16)\t\t\t\\\n}}\n\n#define gDPTextureRectangleFlip(pkt, xl, yl, xh, yh, tile, s, t, dsdx, dtdy)\\\n{\t\t\t\t\t\t\t\t\t\\\n    Gfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n    if (pkt);\t\t\t\t\t\t\t\t\\\n    _g->words.w0 = (_SHIFTL(G_TEXRECTFLIP, 24, 8) | _SHIFTL(xh, 12, 12) | \\\n\t\t    _SHIFTL(yh, 0, 12));    \t\t\t\t\\\n    _g->words.w1 = (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) |\t\\\n\t\t    _SHIFTL(yl, 0, 12));\t\t\t\t\\\n    _g ++;\t\t\t\t\t\t\t\t\\\n    _g->words.w0 = (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16));\t\t\\\n    _g->words.w1 = (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16));\t\\\n}\n\n#ifdef F3D_OLD\n# define gSPTextureRectangle(pkt, xl, yl, xh, yh, tile, s, t, dsdx, dtdy)\\\n{\t\t\t\t\t\t\t\t\t\\\n    Gfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n    _g->words.w0 = (_SHIFTL(G_TEXRECT, 24, 8) | _SHIFTL(xh, 12, 12) |\t\\\n\t\t    _SHIFTL(yh, 0, 12));    \t\t\t\t\\\n    _g->words.w1 = (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) |\t\\\n\t\t    _SHIFTL(yl, 0, 12));\t\t\t\t\\\n    gImmp1(pkt, G_RDPHALF_2, (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16)));\t\\\n    gImmp1(pkt, G_RDPHALF_CONT, (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16)));\\\n}\n\n#define gsSPTextureRectangle(xl, yl, xh, yh, tile, s, t, dsdx, dtdy)\t\\\n    {{(_SHIFTL(G_TEXRECT, 24, 8) | _SHIFTL(xh, 12, 12) | _SHIFTL(yh, 0, 12)),\\\n    (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) | _SHIFTL(yl, 0, 12))}},\t\\\n    gsImmp1(G_RDPHALF_2, (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16))),\t\\\n    gsImmp1(G_RDPHALF_CONT, (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16)))\n\n/* like gSPTextureRectangle but accepts negative position arguments */\n# define gSPScisTextureRectangle(pkt, xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \\\n{                                                                            \\\n    Gfx *_g = (Gfx *)(pkt);                                                  \\\n                                                                             \\\n    _g->words.w0 = (_SHIFTL(G_TEXRECT, 24, 8) |                              \\\n                    _SHIFTL(MAX((s16)(xh),0), 12, 12) |                      \\\n                    _SHIFTL(MAX((s16)(yh),0), 0, 12));                       \\\n    _g->words.w1 = (_SHIFTL((tile), 24, 3) |                                 \\\n                    _SHIFTL(MAX((s16)(xl),0), 12, 12) |                      \\\n                    _SHIFTL(MAX((s16)(yl),0), 0, 12));                       \\\n    gImmp1(pkt, G_RDPHALF_2,                                                 \\\n                (_SHIFTL(((s) -                                              \\\n                          (((s16)(xl) < 0) ?                                 \\\n                           (((s16)(dsdx) < 0) ?                              \\\n                            (MAX((((s16)(xl)*(s16)(dsdx))>>7),0)) :          \\\n\t\t\t    (MIN((((s16)(xl)*(s16)(dsdx))>>7),0))) : 0)),    \\\n\t\t\t 16, 16) |                                           \\\n                 _SHIFTL(((t) -                                              \\\n                          (((yl) < 0) ?                                      \\\n                           (((s16)(dtdy) < 0) ?                              \\\n                            (MAX((((s16)(yl)*(s16)(dtdy))>>7),0)) :          \\\n                            (MIN((((s16)(yl)*(s16)(dtdy))>>7),0))) : 0)),    \\\n\t\t\t 0, 16)));                                           \\\n    gImmp1(pkt, G_RDPHALF_CONT, (_SHIFTL((dsdx), 16, 16) |                      \\\n                              _SHIFTL((dtdy), 0, 16)));                      \\\n}\n\n# define gsSPTextureRectangleFlip(xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \\\n    {{(_SHIFTL(G_TEXRECTFLIP, 24, 8) | _SHIFTL(xh, 12, 12) |\t\t\\\n     _SHIFTL(yh, 0, 12)),\t\t\t\t\t\t\\\n    (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) | _SHIFTL(yl, 0, 12))}},\t\\\n    gsImmp1(G_RDPHALF_2, (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16))),\t\\\n    gsImmp1(G_RDPHALF_CONT, (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16)))\n\n# define gSPTextureRectangleFlip(pkt, xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \\\n{\t\t\t\t\t\t\t\t       \t\\\n    Gfx *_g = (Gfx *)(pkt);\t\t\t\t\t       \t\\\n\t\t\t\t\t\t\t\t\t \\\n    _g->words.w0 = (_SHIFTL(G_TEXRECTFLIP, 24, 8) | _SHIFTL(xh, 12, 12) |\\\n\t\t    _SHIFTL(yh, 0, 12)); \t\t\t\t\\\n    _g->words.w1 = (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) |\t\\\n\t\t    _SHIFTL(yl, 0, 12));\t\t\t\t\\\n    gImmp1(pkt, G_RDPHALF_2, (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16)));\t\\\n    gImmp1(pkt, G_RDPHALF_CONT, (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16))); \\\n}\n#elif defined(F3DEX_GBI_2E)\n# define gSPTextureRectangle(pkt, xl, yl, xh, yh, tile, s, t, dsdx, dtdy)\\\n{\t\t\t\t\t\t\t\t\t\\\n    Gfx *_g0 = (Gfx *)(pkt), *_g1 = (Gfx *)(pkt), *_g2 = (Gfx *)(pkt);\t\\\n\t\t\t\t\t\t\t\t\t\\\n    _g0->words.w0 = _SHIFTL(G_TEXRECT, 24, 8) | \t\t\t\\\n\t\t       _SHIFTL((xh), 0, 24);\t\t\t\t\\\n    _g0->words.w1 = _SHIFTL((yh), 0, 24);\t\t\t\t\\\n    _g1->words.w0 = (_SHIFTL(tile, 24, 3) | _SHIFTL((xl), 0, 24));\t\\\n    _g1->words.w1 = _SHIFTL((yl), 0, 24);\t\t\t\t\\\n    _g2->words.w0 = (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16));\t\t\\\n    _g2->words.w1 = (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16));\t\\\n}\n\n# define gsSPTextureRectangle(xl, yl, xh, yh, tile, s, t, dsdx, dtdy)\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n    (_SHIFTL(G_TEXRECT, 24, 8) | _SHIFTL((xh), 0, 24)),\t\t\t\\\n    _SHIFTL((yh), 0, 24),\t\t\t\t\t\t\\\n}},\t\t\t\t\t\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n    (_SHIFTL((tile), 24, 3) | _SHIFTL((xl), 0, 24)),\t\t\t\\\n    _SHIFTL((yl), 0, 24),\t\t\t\t\t\t\\\n}},\t\t\t\t\t\t\t\t\t\\\n{{\t\t\t\t\t\t\t\t\t\\\n    _SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16),\t\t\t\t\\\n    _SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16)\t\t\t\\\n}}\n\n# define gSPTextureRectangleFlip(pkt, xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \\\n{\t\t\t\t\t\t\t\t\t\\\n    Gfx *_g0 = (Gfx *)(pkt), *_g1 = (Gfx *)(pkt), *_g2 = (Gfx *)(pkt);\t\\\n\t\t\t\t\t\t\t\t\t\\\n    _g0->words.w0 = _SHIFTL(G_TEXRECTFLIP, 24, 8) | \t\t\t\\\n\t\t       _SHIFTL((xh), 0, 24);\t\t\t\t\\\n    _g0->words.w1 = _SHIFTL((yh), 0, 24);\t\t\t\t\\\n    _g1->words.w0 = (_SHIFTL(tile, 24, 3) | _SHIFTL((xl), 0, 24));\t\\\n    _g1->words.w1 = _SHIFTL((yl), 0, 24);\t\t\t\t\\\n    _g2->words.w0 = (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16));\t\t\\\n    _g2->words.w1 = (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16));\t\\\n}\n#else\n# define gSPTextureRectangle(pkt, xl, yl, xh, yh, tile, s, t, dsdx, dtdy)\\\n{\t\t\t\t\t\t\t\t\t\\\n    Gfx *_g = (Gfx *)(pkt);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n    _g->words.w0 = (_SHIFTL(G_TEXRECT, 24, 8) | _SHIFTL(xh, 12, 12) |\t\\\n\t\t    _SHIFTL(yh, 0, 12));    \t\t\t\t\\\n    _g->words.w1 = (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) |\t\\\n\t\t    _SHIFTL(yl, 0, 12));\t\t\t\t\\\n    gImmp1(pkt, G_RDPHALF_1, (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16)));\t\\\n    gImmp1(pkt, G_RDPHALF_2, (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16)));\\\n}\n\n#define gsSPTextureRectangle(xl, yl, xh, yh, tile, s, t, dsdx, dtdy)\t\\\n    {{(_SHIFTL(G_TEXRECT, 24, 8) | _SHIFTL(xh, 12, 12) | _SHIFTL(yh, 0, 12)),\\\n    (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) | _SHIFTL(yl, 0, 12))}},\t\\\n    gsImmp1(G_RDPHALF_1, (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16))),\t\\\n    gsImmp1(G_RDPHALF_2, (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16)))\n\n/* like gSPTextureRectangle but accepts negative position arguments */\n# define gSPScisTextureRectangle(pkt, xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \\\n{                                                                            \\\n    Gfx *_g = (Gfx *)(pkt);                                                  \\\n                                                                             \\\n    _g->words.w0 = (_SHIFTL(G_TEXRECT, 24, 8) |                              \\\n                    _SHIFTL(MAX((s16)(xh),0), 12, 12) |                      \\\n                    _SHIFTL(MAX((s16)(yh),0), 0, 12));                       \\\n    _g->words.w1 = (_SHIFTL((tile), 24, 3) |                                 \\\n                    _SHIFTL(MAX((s16)(xl),0), 12, 12) |                      \\\n                    _SHIFTL(MAX((s16)(yl),0), 0, 12));                       \\\n    gImmp1(pkt, G_RDPHALF_1,                                                 \\\n                (_SHIFTL(((s) -                                              \\\n                          (((s16)(xl) < 0) ?                                 \\\n                           (((s16)(dsdx) < 0) ?                              \\\n                            (MAX((((s16)(xl)*(s16)(dsdx))>>7),0)) :          \\\n\t\t\t    (MIN((((s16)(xl)*(s16)(dsdx))>>7),0))) : 0)),    \\\n\t\t\t 16, 16) |                                           \\\n                 _SHIFTL(((t) -                                              \\\n                          (((yl) < 0) ?                                      \\\n                           (((s16)(dtdy) < 0) ?                              \\\n                            (MAX((((s16)(yl)*(s16)(dtdy))>>7),0)) :          \\\n                            (MIN((((s16)(yl)*(s16)(dtdy))>>7),0))) : 0)),    \\\n\t\t\t 0, 16)));                                           \\\n    gImmp1(pkt, G_RDPHALF_2, (_SHIFTL((dsdx), 16, 16) |                      \\\n                              _SHIFTL((dtdy), 0, 16)));                      \\\n}\n\n# define gsSPTextureRectangleFlip(xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \\\n    {{(_SHIFTL(G_TEXRECTFLIP, 24, 8) | _SHIFTL(xh, 12, 12) |\t\t\\\n     _SHIFTL(yh, 0, 12)),\t\t\t\t\t\t\\\n    (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) | _SHIFTL(yl, 0, 12))}},\t\\\n    gsImmp1(G_RDPHALF_1, (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16))),\t\\\n    gsImmp1(G_RDPHALF_2, (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16)))\n\n# define gSPTextureRectangleFlip(pkt, xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \\\n{\t\t\t\t\t\t\t\t       \t\\\n    Gfx *_g = (Gfx *)(pkt);\t\t\t\t\t       \t\\\n\t\t\t\t\t\t\t\t\t \\\n    _g->words.w0 = (_SHIFTL(G_TEXRECTFLIP, 24, 8) | _SHIFTL(xh, 12, 12) |\\\n\t\t    _SHIFTL(yh, 0, 12)); \t\t\t\t\\\n    _g->words.w1 = (_SHIFTL(tile, 24, 3) | _SHIFTL(xl, 12, 12) |\t\\\n\t\t    _SHIFTL(yl, 0, 12));\t\t\t\t\\\n    gImmp1(pkt, G_RDPHALF_1, (_SHIFTL(s, 16, 16) | _SHIFTL(t, 0, 16)));\t\\\n    gImmp1(pkt, G_RDPHALF_2, (_SHIFTL(dsdx, 16, 16) | _SHIFTL(dtdy, 0, 16))); \\\n}\n#endif\n\n#define gsDPWord(wordhi, wordlo)\t\t\t\\\n    gsImmp1(G_RDPHALF_1, (uintptr_t)(wordhi)),\t\\\n    gsImmp1(G_RDPHALF_2, (uintptr_t)(wordlo))\n\n#define gDPWord(pkt, wordhi, wordlo)      \t\t\\\n{\t\t\t\t\t\t\t\\\n    Gfx *_g = (Gfx *)(pkt);\t\t\t\t\\\n\t\t\t\t\t\t\t\\\n    gImmp1(pkt, G_RDPHALF_1, (uintptr_t)(wordhi));\t\\\n    gImmp1(pkt, G_RDPHALF_2, (uintptr_t)(wordlo));\t\\\n}\n\n#define\tgDPFullSync(pkt)\tgDPNoParam(pkt, G_RDPFULLSYNC)\n#define\tgsDPFullSync()\t\tgsDPNoParam(G_RDPFULLSYNC)\n#define\tgDPTileSync(pkt)\tgDPNoParam(pkt, G_RDPTILESYNC)\n#define\tgsDPTileSync()\t\tgsDPNoParam(G_RDPTILESYNC)\n#define\tgDPPipeSync(pkt)\tgDPNoParam(pkt, G_RDPPIPESYNC)\n#define\tgsDPPipeSync()\t\tgsDPNoParam(G_RDPPIPESYNC)\n#define\tgDPLoadSync(pkt)\tgDPNoParam(pkt, G_RDPLOADSYNC)\n#define\tgsDPLoadSync()\t\tgsDPNoParam(G_RDPLOADSYNC)\n#define\tgDPNoOp(pkt)\t\tgDPNoParam(pkt, G_NOOP)\n#define\tgsDPNoOp()\t\tgsDPNoParam(G_NOOP)\n#define\tgDPNoOpTag(pkt, tag)\tgDPParam(pkt, G_NOOP, tag)\n#define\tgsDPNoOpTag(tag)\tgsDPParam(G_NOOP, tag)\n\n#endif /* _LANGUAGE_C */\n\n\n#endif /* _GBI_H_ */\n"
  },
  {
    "path": "include/PR/gs2dex.h",
    "content": "/*---------------------------------------------------------------------\n\tCopyright (C) 1997, Nintendo.\n\t\n\tFile\t\tgs2dex.h\n\tCoded    by\tYoshitaka Yasumoto.\tJul 31, 1997.\n\tModified by\t\n\tComments\tHeader file for S2DEX ucode.\n\t\n\t$Id: gs2dex.h,v 1.21 1998/05/28 00:14:49 has Exp $\n  ---------------------------------------------------------------------*/\n\n#ifndef\t_GS2DEX_H_\n#define\t_GS2DEX_H_\n\n#ifdef _LANGUAGE_C_PLUS_PLUS\nextern \"C\" {\n#endif\n\n#include <PR/ultratypes.h>\n\n/*===========================================================================*\n *\tMacro\n *===========================================================================*/\n#define\tGS_CALC_DXT(line)\t(((1<< G_TX_DXT_FRAC)-1)/(line)+1)\n#define\tGS_PIX2TMEM(pix, siz)\t((pix)>>(4-(siz)))\n#define\tGS_PIX2DXT(pix, siz)\tGS_CALC_DXT(GS_PIX2TMEM((pix), (siz)))\n\n/*===========================================================================*\n *\tData structures for S2DEX microcode\n *===========================================================================*/\n\n/*---------------------------------------------------------------------------*\n *\tBackground\n *---------------------------------------------------------------------------*/\n#define\tG_BGLT_LOADBLOCK\t0x0033\n#define\tG_BGLT_LOADTILE\t\t0xfff4\n\n#define\tG_BG_FLAG_FLIPS\t\t0x01\n#define\tG_BG_FLAG_FLIPT\t\t0x10\n\n/* Non scalable background plane */\ntypedef\tstruct\t{\n  u16   imageX;\t\t/* x-coordinate of upper-left position of texture (u10.5) */ \n  u16\timageW;\t\t/* width of the texture (u10.2) */\n  s16\tframeX;\t\t/* upper-left position of transferred frame (s10.2) */\n  u16\tframeW;\t\t/* width of transferred frame (u10.2) */\n\n  u16   imageY; \t/* y-coordinate of upper-left position of texture (u10.5) */ \n  u16\timageH;\t\t/* height of the texture (u10.2) */\n  s16\tframeY;\t\t/* upper-left position of transferred frame (s10.2) */\n  u16\tframeH;\t\t/* height of transferred frame (u10.2) */\n\n  u64  *imagePtr;\t/* texture source address on DRAM */\n  u16\timageLoad;\t/* which to use, LoadBlock or  LoadTile */\n  u8\timageFmt;\t/* format of texel - G_IM_FMT_*  */\n  u8\timageSiz;\t/* size of texel - G_IM_SIZ_*   */\n  u16   imagePal; \t/* pallet number  */\n  u16\timageFlip;\t/* right & left image inversion (Inverted by G_BG_FLAG_FLIPS) */\n\n  /* The following is set in the initialization routine guS2DInitBg(). There is no need for the user to set it. */\n  u16\ttmemW;\t\t/* TMEM width and Word size of frame 1 line. \n                           At LoadBlock, GS_PIX2TMEM(imageW/4,imageSiz)\n                           At LoadTile  GS_PIX2TMEM(frameW/4,imageSiz)+1 */\n  u16\ttmemH;\t\t/* height of TMEM loadable at a time (s13.2) 4 times value\n\t\t\t   When the normal texture, 512/tmemW*4\n\t\t\t   When the CI texture, 256/tmemW*4 */\n  u16\ttmemLoadSH;\t/* SH value\n\t\t\t   At LoadBlock, tmemSize/2-1\n\t\t\t   At LoadTile, tmemW*16-1 */\n  u16\ttmemLoadTH;\t/* TH value or Stride value \n\t\t\t   At LoadBlock, GS_CALC_DXT(tmemW)\n\t\t\t   At LoadTile, tmemH-1 */\n  u16\ttmemSizeW;\t/* skip value of imagePtr for image 1-line \n\t\t\t   At LoadBlock, tmemW*2\n                           At LoadTile, GS_PIX2TMEM(imageW/4,imageSiz)*2 */\n  u16\ttmemSize;\t/* skip value of imagePtr for 1-loading  \n\t\t\t   = tmemSizeW*tmemH                          */\n} uObjBg_t;\t\t/* 40 bytes */\n\n/* Scalable background plane */\ntypedef\tstruct\t{\n  u16   imageX;\t\t/* x-coordinate of upper-left position of texture (u10.5) */ \n  u16\timageW;\t\t/* width of texture (u10.2) */\n  s16\tframeX;\t\t/* upper-left position of transferred frame (s10.2) */\n  u16\tframeW;\t\t/* width of transferred frame (u10.2) */\n\n  u16   imageY; \t/* y-coordinate of upper-left position of texture (u10.5) */ \n  u16\timageH;\t\t/* height of texture (u10.2) */\n  s16\tframeY;\t\t/* upper-left position of transferred frame (s10.2) */\n  u16\tframeH;\t\t/* height of transferred frame (u10.2) */\n\n  u64  *imagePtr;\t/* texture source address on DRAM */\n  u16\timageLoad;\t/* Which to use, LoadBlock or LoadTile? */\n  u8\timageFmt;\t/* format of texel - G_IM_FMT_*  */\n  u8\timageSiz;\t/* size of texel - G_IM_SIZ_*  */\n  u16   imagePal; \t/* pallet number */\n  u16\timageFlip;\t/* right & left image inversion (Inverted by G_BG_FLAG_FLIPS) */\n\n  u16\tscaleW;\t\t/* scale value of X-direction (u5.10) */\n  u16\tscaleH;\t\t/* scale value of Y-direction (u5.10) */\n  s32\timageYorig;\t/* start point of drawing on image (s20.5) */\n  \n  u8\tpadding[4];\n  \n} uObjScaleBg_t;\t/* 40 bytes */\n\ntypedef union {\n  uObjBg_t        b;\n  uObjScaleBg_t   s;\n  long long int   force_structure_alignment;\n} uObjBg;\n\n/*---------------------------------------------------------------------------*\n *\t2D Objects\n *---------------------------------------------------------------------------*/\n#define\tG_OBJ_FLAG_FLIPS\t1<<0\t\t/* inversion to S-direction */\n#define\tG_OBJ_FLAG_FLIPT\t1<<4\t\t/* nversion to T-direction */\n\ntypedef struct {\n  s16  objX;\t\t/* s10.2 OBJ x-coordinate of upper-left end */\n  u16  scaleW;\t\t/* u5.10 Scaling of u5.10 width direction   */\n  u16  imageW;\t\t/* u10.5 width of u10.5 texture (length of S-direction) */\n  u16  paddingX;\t/* Unused - Always 0 */\n  s16  objY;\t\t/* s10.2 OBJ y-coordinate of s10.2 OBJ upper-left end */\n  u16  scaleH;\t\t/* u5.10 Scaling of u5.10 height direction */\n  u16  imageH;\t\t/* u10.5 height of u10.5 texture (length of T-direction) */\n  u16  paddingY;\t/* Unused - Always 0 */\n  u16  imageStride;\t/* folding width of texel (In units of 64bit word) */\n  u16  imageAdrs;\t/* texture header position in TMEM (In units of 64bit word) */  \n  u8   imageFmt;\t/* format of texel - G_IM_FMT_* */\n  u8   imageSiz;\t/* size of texel - G_IM_SIZ_* */\n  u8   imagePal;\t/* pallet number (0-7) */\n  u8   imageFlags;\t/* The display flag - G_OBJ_FLAG_FLIP* */\n} uObjSprite_t;\t\t/* 24 bytes */\n\ntypedef union {\n  uObjSprite_t      s;\n  long long int   force_structure_alignment;\n} uObjSprite;\n\n/*---------------------------------------------------------------------------*\n *\t2D Matrix\n *---------------------------------------------------------------------------*/\ntypedef struct {\n  s32   A, B, C, D;     /* s15.16 */\n  s16   X, Y;           /* s10.2  */\n  u16   BaseScaleX;\t/* u5.10  */\n  u16   BaseScaleY;\t/* u5.10  */\n} uObjMtx_t;\t\t/* 24 bytes */\n\ntypedef union {\n  uObjMtx_t\tm;\n  long long int force_structure_alignment;\n} uObjMtx;\n\ntypedef struct {\n  s16   X, Y;           /* s10.2  */\n  u16   BaseScaleX;\t/* u5.10  */\n  u16   BaseScaleY;\t/* u5.10  */\n} uObjSubMtx_t;\t\t/* 8 bytes */\n\ntypedef union {\n  uObjSubMtx_t\tm;\n  long long int force_structure_alignment;\n} uObjSubMtx;\n\n/*---------------------------------------------------------------------------*\n *\tLoading into TMEM\n *---------------------------------------------------------------------------*/\n#define\tG_OBJLT_TXTRBLOCK\t0x00001033\n#define\tG_OBJLT_TXTRTILE\t0x00fc1034\n#define\tG_OBJLT_TLUT\t\t0x00000030\n\n#define\tGS_TB_TSIZE(pix,siz)\t(GS_PIX2TMEM((pix),(siz))-1)\n#define\tGS_TB_TLINE(pix,siz)\t(GS_CALC_DXT(GS_PIX2TMEM((pix),(siz))))\n\ntypedef\tstruct\t{\n  u32\ttype;\t\t/* G_OBJLT_TXTRBLOCK divided into types */\n  u64\t*image;\t\t/* texture source address on DRAM */\n  u16\ttmem;\t\t/* loaded TMEM word address (8byteWORD) */\n  u16\ttsize;\t\t/* Texture size, Specified by macro GS_TB_TSIZE() */\n  u16\ttline;\t\t/* width of Texture 1-line, Specified by macro GS_TB_TLINE() */\n  u16\tsid;\t\t/* STATE ID Multipled by 4 (Either one of  0, 4, 8 and 12) */\n  u32\tflag;\t\t/* STATE flag  */\n  u32\tmask;\t\t/* STATE mask  */\n} uObjTxtrBlock_t;\t\t/* 24 bytes */\n\n#define\tGS_TT_TWIDTH(pix,siz)\t((GS_PIX2TMEM((pix), (siz))<<2)-1)\n#define\tGS_TT_THEIGHT(pix,siz)\t(((pix)<<2)-1)\n\ntypedef\tstruct\t{\n  u32\ttype;\t\t/* G_OBJLT_TXTRTILE divided into types */\n  u64\t*image;\t\t/* texture source address on DRAM */\n  u16\ttmem;\t\t/* loaded TMEM word address (8byteWORD)*/\n  u16\ttwidth;\t\t/* width of Texture (Specified by macro GS_TT_TWIDTH()) */\n  u16\ttheight;\t/* height of Texture (Specified by macro GS_TT_THEIGHT()) */\n  u16\tsid;\t\t/* STATE ID Multipled by 4 (Either one of  0, 4, 8 and 12) */\n  u32\tflag;\t\t/* STATE flag  */\n  u32\tmask;\t\t/* STATE mask  */\n} uObjTxtrTile_t;\t\t/* 24 bytes */\n\n#define\tGS_PAL_HEAD(head)\t((head)+256)\n#define\tGS_PAL_NUM(num)\t\t((num)-1)\n\ntypedef\tstruct\t{\n  u32\ttype;\t\t/* G_OBJLT_TLUT divided into types */\n  u64\t*image;\t\t/* texture source address on DRAM */\n  u16\tphead;\t\t/* pallet number of load header (Between 256 and 511) */\n  u16\tpnum;\t\t/* loading pallet number -1 */\n  u16   zero;\t\t/* Assign 0 all the time */\n  u16\tsid;\t\t/* STATE ID Multipled by 4 (Either one of  0, 4, 8 and 12)*/\n  u32\tflag;\t\t/* STATE flag  */\n  u32\tmask;\t\t/* STATE mask  */\n} uObjTxtrTLUT_t;\t\t/* 24 bytes */\n\ntypedef union {\n  uObjTxtrBlock_t      block;\n  uObjTxtrTile_t       tile;\n  uObjTxtrTLUT_t       tlut;\n  long long int   force_structure_alignment;\n} uObjTxtr;\n\n/*---------------------------------------------------------------------------*\n *\tLoading into TMEM & 2D Objects\n *---------------------------------------------------------------------------*/\ntypedef\tstruct\t{\n  uObjTxtr\ttxtr;\n  uObjSprite\tsprite;\n} uObjTxSprite;\t\t/* 48 bytes */\n\n/*===========================================================================*\n *\tGBI Commands for S2DEX microcode\n *===========================================================================*/\n/* GBI Header */\n#ifdef\tF3DEX_GBI_2\n#define\tG_OBJ_RECTANGLE_R\t0xda\n#define\tG_OBJ_MOVEMEM\t\t0xdc\n#define\tG_RDPHALF_0\t\t0xe4\n#define\tG_OBJ_RECTANGLE\t\t0x01\n#define\tG_OBJ_SPRITE\t\t0x02\n#define\tG_SELECT_DL\t\t0x04\n#define\tG_OBJ_LOADTXTR\t\t0x05\n#define\tG_OBJ_LDTX_SPRITE\t0x06\n#define\tG_OBJ_LDTX_RECT\t\t0x07\n#define\tG_OBJ_LDTX_RECT_R\t0x08\n#define\tG_BG_1CYC\t\t0x09\n#define\tG_BG_COPY\t\t0x0a\n#define\tG_OBJ_RENDERMODE\t0x0b\n#else\n#define\tG_BG_1CYC\t\t0x01\n#define\tG_BG_COPY\t\t0x02\n#define\tG_OBJ_RECTANGLE\t\t0x03\n#define\tG_OBJ_SPRITE\t\t0x04\n#define\tG_OBJ_MOVEMEM\t\t0x05\n#define\tG_SELECT_DL\t\t0xb0\n#define\tG_OBJ_RENDERMODE\t0xb1\n#define\tG_OBJ_RECTANGLE_R\t0xb2\n#define\tG_OBJ_LOADTXTR\t\t0xc1\n#define\tG_OBJ_LDTX_SPRITE\t0xc2\n#define\tG_OBJ_LDTX_RECT\t\t0xc3\n#define\tG_OBJ_LDTX_RECT_R\t0xc4\n#define\tG_RDPHALF_0\t\t0xe4\n#endif\n\n/*---------------------------------------------------------------------------*\n *\tBackground wrapped screen\n *---------------------------------------------------------------------------*/\n#define\tgSPBgRectangle(pkt, m, mptr)  gDma0p((pkt),(m),(mptr),0)\n#define\tgsSPBgRectangle(m, mptr)      gsDma0p(     (m),(mptr),0)\n#define\tgSPBgRectCopy(pkt, mptr)      gSPBgRectangle((pkt), G_BG_COPY, (mptr))\n#define\tgsSPBgRectCopy(mptr)\t      gsSPBgRectangle(      G_BG_COPY, (mptr))\n#define\tgSPBgRect1Cyc(pkt, mptr)      gSPBgRectangle((pkt), G_BG_1CYC, (mptr))\n#define\tgsSPBgRect1Cyc(mptr)\t      gsSPBgRectangle(      G_BG_1CYC, (mptr))\n\n/*---------------------------------------------------------------------------*\n *\t2D Objects\n *---------------------------------------------------------------------------*/\n#define\tgSPObjSprite(pkt, mptr)       gDma0p((pkt),G_OBJ_SPRITE,     (mptr),0)\n#define\tgsSPObjSprite(mptr)           gsDma0p(     G_OBJ_SPRITE,     (mptr),0)\n#define\tgSPObjRectangle(pkt, mptr)    gDma0p((pkt),G_OBJ_RECTANGLE,  (mptr),0)\n#define\tgsSPObjRectangle(mptr)        gsDma0p(     G_OBJ_RECTANGLE,  (mptr),0)\n#define\tgSPObjRectangleR(pkt, mptr)   gDma0p((pkt),G_OBJ_RECTANGLE_R,(mptr),0)\n#define\tgsSPObjRectangleR(mptr)       gsDma0p(     G_OBJ_RECTANGLE_R,(mptr),0)\n\n/*---------------------------------------------------------------------------*\n *\t2D Matrix\n *---------------------------------------------------------------------------*/\n#define\tgSPObjMatrix(pkt, mptr)\t      gDma1p((pkt),G_OBJ_MOVEMEM,(mptr),0,23)\n#define\tgsSPObjMatrix(mptr)           gsDma1p(     G_OBJ_MOVEMEM,(mptr),0,23)\n#define\tgSPObjSubMatrix(pkt, mptr)    gDma1p((pkt),G_OBJ_MOVEMEM,(mptr),2, 7)\n#define\tgsSPObjSubMatrix(mptr)        gsDma1p(     G_OBJ_MOVEMEM,(mptr),2, 7)\n\n/*---------------------------------------------------------------------------*\n *\tLoading into TMEM\n *---------------------------------------------------------------------------*/\n#define\tgSPObjLoadTxtr(pkt, tptr)     gDma0p((pkt),G_OBJ_LOADTXTR,   (tptr),23)\n#define\tgsSPObjLoadTxtr(tptr)         gsDma0p(     G_OBJ_LOADTXTR,   (tptr),23)\n#define\tgSPObjLoadTxSprite(pkt, tptr) gDma0p((pkt),G_OBJ_LDTX_SPRITE,(tptr),47)\n#define\tgsSPObjLoadTxSprite(tptr)     gsDma0p(     G_OBJ_LDTX_SPRITE,(tptr),47)\n#define\tgSPObjLoadTxRect(pkt, tptr)   gDma0p((pkt),G_OBJ_LDTX_RECT,  (tptr),47)\n#define\tgsSPObjLoadTxRect(tptr)       gsDma0p(     G_OBJ_LDTX_RECT,  (tptr),47)\n#define\tgSPObjLoadTxRectR(pkt, tptr)  gDma0p((pkt),G_OBJ_LDTX_RECT_R,(tptr),47)\n#define\tgsSPObjLoadTxRectR(tptr)      gsDma0p(     G_OBJ_LDTX_RECT_R,(tptr),47)\n\n/*---------------------------------------------------------------------------*\n *\tSelect Display List\n *---------------------------------------------------------------------------*/\n#define\tgSPSelectDL(pkt, mptr, sid, flag, mask)\t\\\n{\tgDma1p((pkt), G_RDPHALF_0, (flag), (u32)(mptr) & 0xffff, (sid)); \\\n\tgDma1p((pkt), G_SELECT_DL, (mask), (u32)(mptr) >> 16, G_DL_PUSH); }\n#define\tgsSPSelectDL(mptr, sid, flag, mask)\t\\\n{\tgsDma1p(G_RDPHALF_0, (flag), (u32)(mptr) & 0xffff, (sid)); \\\n\tgsDma1p(G_SELECT_DL, (mask), (u32)(mptr) >> 16, G_DL_PUSH); }\n#define\tgSPSelectBranchDL(pkt, mptr, sid, flag, mask)\t\\\n{\tgDma1p((pkt), G_RDPHALF_0, (flag), (u32)(mptr) & 0xffff, (sid)); \\\n\tgDma1p((pkt), G_SELECT_DL, (mask), (u32)(mptr) >> 16, G_DL_NOPUSH); }\n#define\tgsSPSelectBranchDL(mptr, sid, flag, mask)\t\\\n{\tgsDma1p(G_RDPHALF_0, (flag), (u32)(mptr) & 0xffff, (sid)); \\\n\tgsDma1p(G_SELECT_DL, (mask), (u32)(mptr) >> 16, G_DL_NOPUSH); }\n\n/*---------------------------------------------------------------------------*\n *\tSet general status\n *---------------------------------------------------------------------------*/\n#define\tG_MW_GENSTAT\t0x08\t/* Note that it is the same value of G_MW_FOG */\n\n#define\tgSPSetStatus(pkt, sid, val)\t\\\n\tgMoveWd((pkt), G_MW_GENSTAT, (sid), (val))\n#define\tgsSPSetStatus(sid, val)\t\\\n\tgsMoveWd(      G_MW_GENSTAT, (sid), (val))\n\n/*---------------------------------------------------------------------------*\n *\tSet Object Render Mode\n *---------------------------------------------------------------------------*/\n#define\tG_OBJRM_NOTXCLAMP\t0x01\n#define\tG_OBJRM_XLU\t\t0x02\t/* Ignored */\n#define\tG_OBJRM_ANTIALIAS\t0x04\t/* Ignored */\n#define\tG_OBJRM_BILERP\t\t0x08\n#define\tG_OBJRM_SHRINKSIZE_1\t0x10\n#define\tG_OBJRM_SHRINKSIZE_2\t0x20\n#define\tG_OBJRM_WIDEN\t\t0x40\n\n#define\tgSPObjRenderMode(pkt, mode)   gImmp1((pkt),G_OBJ_RENDERMODE,(mode))\n#define\tgsSPObjRenderMode(mode)\t      gsImmp1(     G_OBJ_RENDERMODE,(mode))\n\n/*===========================================================================*\n *\tRender Mode Macro\n *===========================================================================*/\n#define RM_RA_SPRITE(clk)                                      \\\n        AA_EN | CVG_DST_CLAMP |                                \\\n        CVG_X_ALPHA | ALPHA_CVG_SEL | ZMODE_OPA | TEX_EDGE |   \\\n        GBL_c##clk(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)\n\n#define G_RM_SPRITE\t\tG_RM_OPA_SURF\n#define G_RM_SPRITE2\t\tG_RM_OPA_SURF2\n#define G_RM_RA_SPRITE  \tRM_RA_SPRITE(1)\n#define G_RM_RA_SPRITE2\t\tRM_RA_SPRITE(2)\n#define G_RM_AA_SPRITE\t\tG_RM_AA_TEX_TERR\n#define G_RM_AA_SPRITE2\t\tG_RM_AA_TEX_TERR2\n#define G_RM_XLU_SPRITE\t\tG_RM_XLU_SURF\n#define G_RM_XLU_SPRITE2\tG_RM_XLU_SURF2\n#define G_RM_AA_XLU_SPRITE\tG_RM_AA_XLU_SURF\n#define G_RM_AA_XLU_SPRITE2\tG_RM_AA_XLU_SURF2\n\n/*===========================================================================*\n *\tExternal functions \n *===========================================================================*/\nextern\tu64\tgspS2DEX_fifoTextStart[], gspS2DEX_fifoTextEnd[];\nextern\tu64\tgspS2DEX_fifoDataStart[], gspS2DEX_fifoDataEnd[];\nextern\tu64\tgspS2DEX_fifo_dTextStart[], gspS2DEX_fifo_dTextEnd[];\nextern\tu64\tgspS2DEX_fifo_dDataStart[], gspS2DEX_fifo_dDataEnd[];\nextern\tu64\tgspS2DEX2_fifoTextStart[], gspS2DEX2_fifoTextEnd[];\nextern\tu64\tgspS2DEX2_fifoDataStart[], gspS2DEX2_fifoDataEnd[];\nextern\tu64\tgspS2DEX2_xbusTextStart[], gspS2DEX2_xbusTextEnd[];\nextern\tu64\tgspS2DEX2_xbusDataStart[], gspS2DEX2_xbusDataEnd[];\nextern\tvoid\tguS2DInitBg(uObjBg *);\n\n#ifdef\tF3DEX_GBI_2\n# define guS2DEmuBgRect1Cyc\tguS2D2EmuBgRect1Cyc\t/*Wrapper*/\n# define guS2DEmuSetScissor\tguS2D2EmuSetScissor\t/*Wrapper*/\n  extern void\tguS2D2EmuSetScissor(u32, u32, u32, u32, u8);\n  extern void\tguS2D2EmuBgRect1Cyc(Gfx **, uObjBg *);\n#else\n  extern void\tguS2DEmuSetScissor(u32, u32, u32, u32, u8);\n  extern void\tguS2DEmuBgRect1Cyc(Gfx **, uObjBg *);\n#endif\n\n#ifdef _LANGUAGE_C_PLUS_PLUS\n}\n#endif\n#endif /* _GS2DEX_H_ */\n\n/*======== End of gs2dex.h ========*/\n"
  },
  {
    "path": "include/PR/gu.h",
    "content": "#ifndef _ULTRA64_GU_H_\n#define _ULTRA64_GU_H_\n\n#include <PR/mbi.h>\n#include <PR/ultratypes.h>\n\n#define GU_PI 3.1415926\n/* Functions */\n\nvoid guPerspectiveF(float mf[4][4], u16 *perspNorm, float fovy, float aspect,\n                    float near, float far, float scale);\nvoid guPerspective(Mtx *m, u16 *perspNorm, float fovy, float aspect, float near,\n                   float far, float scale);\nvoid guOrtho(Mtx *m, float left, float right, float bottom, float top,\n             float near, float far, float scale);\nvoid guTranslate(Mtx *m, float x, float y, float z);\nvoid guRotate(Mtx *m, float a, float x, float y, float z);\nvoid guScale(Mtx *m, float x, float y, float z);\nvoid guMtxF2L(float mf[4][4], Mtx *m);\nvoid guMtxIdent(Mtx *m);\nvoid guMtxIdentF(float mf[4][4]);\nvoid guMtxL2F(float mf[4][4], Mtx *m);\nvoid guNormalize(float *, float *, float *);\n\n/* Used only in Fast3DEX2 */\nvoid guLookAtReflect (Mtx *m, LookAt *l, float xEye, float yEye, float zEye,\n                    float xAt,  float yAt,  float zAt,\n                    float xUp,  float yUp,  float zUp);\n#endif\n"
  },
  {
    "path": "include/PR/ique.h",
    "content": "#ifndef IQUE_H\n#define IQUE_H\n\n#include \"rcp.h\"\n\n#define MI_SK_EXCEPTION_REG (MI_BASE_REG+0x14)\n#define MI_SK_WATCHDOG_TIMER (MI_BASE_REG+0x18)\n\n// Hardware interrupts\n// 0x40 = NAND DMA, 0x80 = MD, 0x100 = RDB, 0x200 = AES,\n// 0x400 = PI_ERR, 0x800 = USB0, 0x1000 = USB1, 0x2000 = NAND\n#define MI_HW_INTR_REG (MI_BASE_REG+0x38)\n#define MI_HW_INTR_MASK_REG (MI_BASE_REG+0x3C)\n\n#define PI_CARD_ADDR_REG (PI_BASE_REG+0x48)\n#define PI_EX_RD_LEN_REG (PI_BASE_REG+0x58)\n#define PI_EX_WR_LEN_REG (PI_BASE_REG+0x5C)\n#define PI_MISC_REG (PI_BASE_REG+0x60)\n\n#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)\n\nextern u8 *__osBbEepromAddress;\nextern u32 __osBbEepromSize;\nextern u32 __osBbFlashAddress;\nextern u32 __osBbFlashSize;\nextern u32 __osBbSramAddress;\nextern u32 __osBbSramSize;\nextern u32 *__osBbPakAddress[];\nextern u32 __osBbPakSize;\nextern u32 __osBbIsBb;\nextern u32 __osBbHackFlags;\n\nvoid skKeepAlive(void);\n\n#endif\n\n#endif\n"
  },
  {
    "path": "include/PR/libaudio.h",
    "content": "#ifndef _ULTRA64_LIBAUDIO_H_\n#define _ULTRA64_LIBAUDIO_H_\n\n#include \"abi.h\"\n\ntypedef struct\n{\n    u8 *offset;\n    s32 len;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    s8 medium;\n    s8 magic; // tbl: 0x04, otherwise: 0x03\n\n    // for ctl (else zeros):\n    union {\n        // unused, just for clarification (big endian)\n        struct {\n            u8 bank;\n            u8 ff;\n            u8 numInstruments;\n            u8 numDrums;\n        } as_u8;\n\n        // used\n        struct {\n            s16 bankAndFf;\n            s16 numInstrumentsAndDrums;\n        } as_s16;\n    } ctl;\n#endif\n} ALSeqData;\n\ntypedef struct\n{\n#if !defined(VERSION_SH) && !defined(VERSION_CN)\n    s16 revision;\n#endif\n    s16 seqCount;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    s16 unk2;\n    u8 *data;\n#if !IS_64_BIT\n    s32 pad[2];\n#endif\n#endif\n    ALSeqData seqArray[1];\n} ALSeqFile;\n\nvoid alSeqFileNew(ALSeqFile *f, u8 *base);\n\n#endif\n"
  },
  {
    "path": "include/PR/libultra.h",
    "content": "#ifndef _LIBULTRA_H\n#define _LIBULTRA_H\n\n#define TV_TYPE_NTSC 1\n#define TV_TYPE_PAL 0\n#define TV_TYPE_MPAL 2\n\n#define RESET_TYPE_COLD_RESET 0\n#define RESET_TYPE_NMI 1\n#define RESET_TYPE_BOOT_DISK 2\n\nextern u32 osTvType;\nextern u32 osRomBase;\nextern u32 osResetType;\nextern u32 osMemSize;\nextern u8 osAppNmiBuffer[64];\n\n#endif /* _LIBULTRA_H */\n"
  },
  {
    "path": "include/PR/mbi.h",
    "content": "#ifndef _MBI_H_\n#define\t_MBI_H_\n\n#include \"platform_info.h\"\n\n/**************************************************************************\n *\t\t\t\t\t\t\t\t\t  *\n *\t\t Copyright (C) 1994, Silicon Graphics, Inc.\t\t  *\n *\t\t\t\t\t\t\t\t\t  *\n *  These coded instructions, statements, and computer programs  contain  *\n *  unpublished  proprietary  information of Silicon Graphics, Inc., and  *\n *  are protected by Federal copyright law.  They  may  not be disclosed  *\n *  to  third  parties  or copied or duplicated in any form, in whole or  *\n *  in part, without the prior written consent of Silicon Graphics, Inc.  *\n *\t\t\t\t\t\t\t\t\t  *\n **************************************************************************/\n\n/**************************************************************************\n *\n *  $Revision: 1.136 $\n *  $Date: 1999/01/05 13:04:00 $\n *  $Source: /hosts/gate3/exdisk2/cvs/N64OS/Master/cvsmdev2/PR/include/mbi.h,v $\n *\n **************************************************************************/\n\n/*\n * Header file for the Media Binary Interface\n *\n * NOTE: This file is included by the RSP microcode, so any C-specific\n * constructs must be bracketed by #ifdef _LANGUAGE_C\n *\n */\n\n\n/*\n * the SHIFT macros are used to build display list commands, inserting\n * bit-fields into a 32-bit word. They take a value, a shift amount, \n * and a width.\n *\n * For the left shift, the lower bits of the value are masked, \n * then shifted left.\n *\n * For the right shift, the value is shifted right, then the lower bits\n * are masked.\n *\n * (NOTE: _SHIFTL(v, 0, 32) won't work, just use an assignment)\n *\n */\n#define _SHIFTL(v, s, w)\t\\\n    ((unsigned int) (((unsigned int)(v) & ((0x01 << (w)) - 1)) << (s)))\n#define _SHIFTR(v, s, w)\t\\\n    ((unsigned int)(((unsigned int)(v) >> (s)) & ((0x01 << (w)) - 1)))\n\n#define _SHIFT _SHIFTL\t/* old, for compatibility only */\n\n#define G_ON\t(1)\n#define G_OFF\t(0)\n\n/**************************************************************************\n *\n * Graphics Binary Interface\n *\n **************************************************************************/\n\n#include <PR/gbi.h>\n\n/**************************************************************************\n *\n * Audio Binary Interface\n *\n **************************************************************************/\n\n#include <PR/abi.h>\n\n/**************************************************************************\n *\n * Task list\n *\n **************************************************************************/\n\n#define\tM_GFXTASK\t1\n#define\tM_AUDTASK\t2\n#define\tM_VIDTASK\t3\n#define M_HVQTASK\t6\n#define M_HVQMTASK\t7\n\n/**************************************************************************\n *\n * Segment macros and definitions\n *\n **************************************************************************/\n\n#define\tNUM_SEGMENTS\t\t(16)\n#define\tSEGMENT_OFFSET(a)\t((unsigned int)(a) & 0x00ffffff)\n#define\tSEGMENT_NUMBER(a)\t(((unsigned int)(a) << 4) >> 28)\n#define\tSEGMENT_ADDR(num, off)\t(((num) << 24) + (off))\n\n#ifndef NULL\n#define NULL 0\n#endif\n\n#endif /* !_MBI_H_ */\n"
  },
  {
    "path": "include/PR/os.h",
    "content": "\n/*====================================================================\n * os.h\n *\n * Copyright 1995, Silicon Graphics, Inc.\n * All Rights Reserved.\n *\n * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,\n * Inc.; the contents of this file may not be disclosed to third\n * parties, copied or duplicated in any form, in whole or in part,\n * without the prior written permission of Silicon Graphics, Inc.\n *\n * RESTRICTED RIGHTS LEGEND:\n * Use, duplication or disclosure by the Government is subject to\n * restrictions as set forth in subdivision (c)(1)(ii) of the Rights\n * in Technical Data and Computer Software clause at DFARS\n * 252.227-7013, and/or in similar or successor clauses in the FAR,\n * DOD or NASA FAR Supplement. Unpublished - rights reserved under the\n * Copyright Laws of the United States.\n *====================================================================*/\n\n/**************************************************************************\n *\n *  $Revision: 1.149 $\n *  $Date: 1997/12/15 04:30:52 $\n *  $Source: /disk6/Master/cvsmdev2/PR/include/os.h,v $\n *\n **************************************************************************/\n\n\n#ifndef _OS_H_\n#define    _OS_H_\n\n#ifdef _LANGUAGE_C_PLUS_PLUS\nextern \"C\" {\n#endif\n\n#include <PR/ultratypes.h>\n#include \"PR/os_message.h\"\n\n#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)\n\n/**************************************************************************\n *\n * Type definitions\n *\n */\n\n/*\n * Structure for device manager block\n */\ntypedef struct {\n        s32             active;        /* Status flag */\n    OSThread    *thread;    /* Calling thread */\n        OSMesgQueue      *cmdQueue;    /* Command queue */\n        OSMesgQueue      *evtQueue;    /* Event queue */\n        OSMesgQueue      *acsQueue;    /* Access queue */\n                    /* Raw DMA routine */\n        s32             (*dma)(s32, u32, void *, u32);\n        s32             (*edma)(OSPiHandle *, s32, u32, void *, u32);\n} OSDevMgr;\n    \n/*\n * Structure for Profiler \n */\ntypedef struct {\n    u16    *histo_base;        /* histogram base */\n    u32    histo_size;        /* histogram size */\n    u32    *text_start;        /* start of text segment */\n    u32    *text_end;        /* end of text segment */\n} OSProf;\n\n#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */\n\n/**************************************************************************\n *\n * Global definitions\n *\n */\n\n/* Thread states */\n\n#define OS_STATE_STOPPED    1\n#define OS_STATE_RUNNABLE    2\n#define OS_STATE_RUNNING    4\n#define OS_STATE_WAITING    8\n\n/* Flags for debugging purpose */\n\n#define    OS_FLAG_CPU_BREAK    1    /* Break exception has occurred */\n#define    OS_FLAG_FAULT        2    /* CPU fault has occurred */\n\n/* Interrupt masks */\n\n#define    OS_IM_NONE    0x00000001\n#define    OS_IM_SW1    0x00000501\n#define    OS_IM_SW2    0x00000601\n#define    OS_IM_CART    0x00000c01\n#define    OS_IM_PRENMI    0x00001401\n#define OS_IM_RDBWRITE    0x00002401\n#define OS_IM_RDBREAD    0x00004401\n#define    OS_IM_COUNTER    0x00008401\n#define    OS_IM_CPU    0x0000ff01\n#define    OS_IM_SP    0x00010401\n#define    OS_IM_SI    0x00020401\n#define    OS_IM_AI    0x00040401\n#define    OS_IM_VI    0x00080401\n#define    OS_IM_PI    0x00100401\n#define    OS_IM_DP    0x00200401\n#define    OS_IM_ALL    0x003fff01\n#define    RCP_IMASK    0x003f0000\n#define    RCP_IMASKSHIFT    16\n\n/* Recommended thread priorities for the system threads */\n\n#define OS_PRIORITY_MAX        255\n#define OS_PRIORITY_VIMGR    254\n#define OS_PRIORITY_RMON    250\n#define OS_PRIORITY_RMONSPIN    200\n#define OS_PRIORITY_PIMGR    150\n#define OS_PRIORITY_SIMGR    140\n#define    OS_PRIORITY_APPMAX    127\n#define OS_PRIORITY_IDLE      0    /* Must be 0 */\n\n/* Flags to indicate direction of data transfer */\n\n#define    OS_READ            0        /* device -> RDRAM */\n#define    OS_WRITE        1        /* device <- RDRAM */\n#define    OS_OTHERS        2        /* for Leo disk only */\n\n/*\n * I/O message types\n */\n#define OS_MESG_TYPE_BASE    (10)\n#define OS_MESG_TYPE_LOOPBACK    (OS_MESG_TYPE_BASE+0)\n#define OS_MESG_TYPE_DMAREAD    (OS_MESG_TYPE_BASE+1)\n#define OS_MESG_TYPE_DMAWRITE    (OS_MESG_TYPE_BASE+2)\n#define OS_MESG_TYPE_VRETRACE    (OS_MESG_TYPE_BASE+3)\n#define OS_MESG_TYPE_COUNTER    (OS_MESG_TYPE_BASE+4)\n#define OS_MESG_TYPE_EDMAREAD    (OS_MESG_TYPE_BASE+5)\n#define OS_MESG_TYPE_EDMAWRITE    (OS_MESG_TYPE_BASE+6)\n\n/*\n * I/O message priority\n */\n#define OS_MESG_PRI_NORMAL    0\n#define OS_MESG_PRI_HIGH    1\n\n/*\n * Page size argument for TLB routines\n */\n#define OS_PM_4K    0x0000000\n#define OS_PM_16K    0x0006000\n#define OS_PM_64K    0x001e000\n#define OS_PM_256K    0x007e000\n#define OS_PM_1M    0x01fe000\n#define OS_PM_4M    0x07fe000\n#define OS_PM_16M    0x1ffe000\n\n/*\n * Stack size for I/O device managers: PIM (PI Manager), VIM (VI Manager),\n *    SIM (SI Manager)\n *\n */\n#define OS_PIM_STACKSIZE    4096\n#define OS_VIM_STACKSIZE    4096\n#define OS_SIM_STACKSIZE    4096\n\n#define    OS_MIN_STACKSIZE    72\n\n/*\n * Values for osTvType \n */\n#define    OS_TV_PAL        0\n#define    OS_TV_NTSC        1\n#define    OS_TV_MPAL        2\n\n/*\n * Video Interface (VI) mode type\n */\n#define OS_VI_NTSC_LPN1        0    /* NTSC */\n#define OS_VI_NTSC_LPF1        1\n#define OS_VI_NTSC_LAN1        2\n#define OS_VI_NTSC_LAF1        3\n#define OS_VI_NTSC_LPN2        4\n#define OS_VI_NTSC_LPF2        5\n#define OS_VI_NTSC_LAN2        6\n#define OS_VI_NTSC_LAF2        7\n#define OS_VI_NTSC_HPN1        8\n#define OS_VI_NTSC_HPF1        9\n#define OS_VI_NTSC_HAN1        10\n#define OS_VI_NTSC_HAF1        11\n#define OS_VI_NTSC_HPN2        12\n#define OS_VI_NTSC_HPF2        13\n\n#define OS_VI_PAL_LPN1        14    /* PAL */\n#define OS_VI_PAL_LPF1        15\n#define OS_VI_PAL_LAN1        16\n#define OS_VI_PAL_LAF1        17\n#define OS_VI_PAL_LPN2        18\n#define OS_VI_PAL_LPF2        19\n#define OS_VI_PAL_LAN2        20\n#define OS_VI_PAL_LAF2        21\n#define OS_VI_PAL_HPN1        22\n#define OS_VI_PAL_HPF1        23\n#define OS_VI_PAL_HAN1        24\n#define OS_VI_PAL_HAF1        25\n#define OS_VI_PAL_HPN2        26\n#define OS_VI_PAL_HPF2        27\n\n#define OS_VI_MPAL_LPN1        28    /* MPAL - mainly Brazil */\n#define OS_VI_MPAL_LPF1        29\n#define OS_VI_MPAL_LAN1        30\n#define OS_VI_MPAL_LAF1        31\n#define OS_VI_MPAL_LPN2        32\n#define OS_VI_MPAL_LPF2        33\n#define OS_VI_MPAL_LAN2        34\n#define OS_VI_MPAL_LAF2        35\n#define OS_VI_MPAL_HPN1        36\n#define OS_VI_MPAL_HPF1        37\n#define OS_VI_MPAL_HAN1        38\n#define OS_VI_MPAL_HAF1        39\n#define OS_VI_MPAL_HPN2        40\n#define OS_VI_MPAL_HPF2        41\n\n/*\n * Video Interface (VI) special features\n */\n#define    OS_VI_GAMMA_ON            0x0001\n#define    OS_VI_GAMMA_OFF            0x0002\n#define    OS_VI_GAMMA_DITHER_ON        0x0004\n#define    OS_VI_GAMMA_DITHER_OFF        0x0008\n#define    OS_VI_DIVOT_ON            0x0010\n#define    OS_VI_DIVOT_OFF            0x0020\n#define    OS_VI_DITHER_FILTER_ON        0x0040\n#define    OS_VI_DITHER_FILTER_OFF        0x0080\n\n/*\n * Video Interface (VI) mode attribute bit\n */\n#define OS_VI_BIT_NONINTERLACE        0x0001          /* lo-res */\n#define OS_VI_BIT_INTERLACE        0x0002          /* lo-res */\n#define OS_VI_BIT_NORMALINTERLACE    0x0004          /* hi-res */\n#define OS_VI_BIT_DEFLICKINTERLACE    0x0008          /* hi-res */\n#define OS_VI_BIT_ANTIALIAS        0x0010\n#define OS_VI_BIT_POINTSAMPLE        0x0020\n#define OS_VI_BIT_16PIXEL        0x0040\n#define OS_VI_BIT_32PIXEL        0x0080\n#define OS_VI_BIT_LORES            0x0100\n#define OS_VI_BIT_HIRES            0x0200\n#define OS_VI_BIT_NTSC            0x0400\n#define OS_VI_BIT_PAL            0x0800\n\n/* \n * Leo Disk \n */\n\n/* transfer mode */\n\n#define LEO_BLOCK_MODE    1\n#define LEO_TRACK_MODE    2\n#define LEO_SECTOR_MODE    3\n\n/*\n *  Controllers  number\n */\n\n#ifndef _HW_VERSION_1\n#define MAXCONTROLLERS  4\n#else\n#define MAXCONTROLLERS  6\n#endif\n\n/* controller errors */\n#define CONT_NO_RESPONSE_ERROR          0x8\n#define CONT_OVERRUN_ERROR              0x4\n#ifdef _HW_VERSION_1\n#define CONT_FRAME_ERROR                0x2\n#define CONT_COLLISION_ERROR            0x1\n#endif \n\n/* Controller type */\n\n#define CONT_ABSOLUTE           0x0001\n#define CONT_RELATIVE           0x0002\n#define CONT_JOYPORT            0x0004\n#define CONT_EEPROM        0x8000\n#define CONT_EEP16K        0x4000\n#define    CONT_TYPE_MASK        0x1f07\n#define    CONT_TYPE_NORMAL    0x0005\n#define    CONT_TYPE_MOUSE        0x0002\n\n/* Controller status */\n\n#define CONT_CARD_ON            0x01\n#define CONT_CARD_PULL          0x02\n#define CONT_ADDR_CRC_ER        0x04\n#define CONT_EEPROM_BUSY    0x80\n\n/* EEPROM TYPE */\n\n#define EEPROM_TYPE_4K        0x01\n#define EEPROM_TYPE_16K        0x02\n\n/* Buttons */\n\n#define CONT_A      0x8000\n#define CONT_B      0x4000\n#define CONT_G        0x2000\n#define CONT_START  0x1000\n#define CONT_UP     0x0800\n#define CONT_DOWN   0x0400\n#define CONT_LEFT   0x0200\n#define CONT_RIGHT  0x0100\n#define CONT_L      0x0020\n#define CONT_R      0x0010\n#define CONT_E      0x0008\n#define CONT_D      0x0004\n#define CONT_C      0x0002\n#define CONT_F      0x0001\n\n/* Nintendo's official button names */\n\n#define A_BUTTON    CONT_A\n#define B_BUTTON    CONT_B\n#define L_TRIG        CONT_L\n#define R_TRIG        CONT_R\n#define Z_TRIG        CONT_G\n#define START_BUTTON    CONT_START\n#define U_JPAD        CONT_UP\n#define L_JPAD        CONT_LEFT\n#define R_JPAD        CONT_RIGHT\n#define D_JPAD        CONT_DOWN\n#define U_CBUTTONS    CONT_E\n#define L_CBUTTONS    CONT_C\n#define R_CBUTTONS    CONT_F\n#define D_CBUTTONS    CONT_D\n\n/* definition for EEPROM */\n\n#define EEPROM_MAXBLOCKS    64\n#define EEP16K_MAXBLOCKS    256\n#define EEPROM_BLOCK_SIZE    8\n\n/*\n * PI/EPI\n */\n#define PI_DOMAIN1      0\n#define PI_DOMAIN2      1\n\n/*\n * Profiler constants\n */\n#define PROF_MIN_INTERVAL    50    /* microseconds */\n\n/*\n * Boot addresses\n */\n#define    BOOT_ADDRESS_ULTRA    0x80000400\n#define    BOOT_ADDRESS_COSIM    0x80002000\n#define    BOOT_ADDRESS_EMU    0x20010000\n#define    BOOT_ADDRESS_INDY     0x88100000\n\n/*\n * Size of buffer the retains contents after NMI\n */\n#define OS_APP_NMI_BUFSIZE    64\n\n#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)\n\n/**************************************************************************\n *\n * Macro definitions\n *\n */\n\n/* PARTNER-N64 */\n#ifdef PTN64\n#define osReadHost osReadHost_pt\n#define osWriteHost osWriteHost_pt\n#endif\n\n/* Get count of valid messages in queue */\n#define MQ_GET_COUNT(mq)        ((mq)->validCount)\n\n/* Figure out if message queue is empty or full */\n#define MQ_IS_EMPTY(mq)        (MQ_GET_COUNT(mq) == 0)\n#define MQ_IS_FULL(mq)        (MQ_GET_COUNT(mq) >= (mq)->msgCount)\n\n/*\n * CPU counter increments at 3/4 of bus clock rate:\n *\n * Bus Clock    Proc Clock    Counter (1/2 Proc Clock)\n * ---------    ----------    ------------------------\n * 62.5 Mhz    93.75 Mhz    46.875 Mhz\n */\nextern u64 osClockRate;\n\n#define    OS_CLOCK_RATE        62500000LL\n#define    OS_CPU_COUNTER        (OS_CLOCK_RATE*3/4)\n#define OS_NSEC_TO_CYCLES(n)    (((u64)(n)*(OS_CPU_COUNTER/15625000LL))/(1000000000LL/15625000LL))\n#define OS_USEC_TO_CYCLES(n)    (((u64)(n)*(OS_CPU_COUNTER/15625LL))/(1000000LL/15625LL))\n#define OS_CYCLES_TO_NSEC(c)    (((u64)(c)*(1000000000LL/15625000LL))/(OS_CPU_COUNTER/15625000LL))\n#define OS_CYCLES_TO_USEC(c)    (((u64)(c)*(1000000LL/15625LL))/(OS_CPU_COUNTER/15625LL))\n\n/**************************************************************************\n *\n * Extern variables\n *\n */\nextern OSViMode    osViModeTable[];    /* Global VI mode table */\n\nextern OSViMode    osViModeNtscLpn1;    /* Individual VI NTSC modes */\nextern OSViMode    osViModeNtscLpf1;\nextern OSViMode    osViModeNtscLan1;\nextern OSViMode    osViModeNtscLaf1;\nextern OSViMode    osViModeNtscLpn2;\nextern OSViMode    osViModeNtscLpf2;\nextern OSViMode    osViModeNtscLan2;\nextern OSViMode    osViModeNtscLaf2;\nextern OSViMode    osViModeNtscHpn1;\nextern OSViMode    osViModeNtscHpf1;\nextern OSViMode    osViModeNtscHan1;\nextern OSViMode    osViModeNtscHaf1;\nextern OSViMode    osViModeNtscHpn2;\nextern OSViMode    osViModeNtscHpf2;\n\nextern OSViMode    osViModePalLpn1;    /* Individual VI PAL modes */\nextern OSViMode    osViModePalLpf1;\nextern OSViMode    osViModePalLan1;\nextern OSViMode    osViModePalLaf1;\nextern OSViMode    osViModePalLpn2;\nextern OSViMode    osViModePalLpf2;\nextern OSViMode    osViModePalLan2;\nextern OSViMode    osViModePalLaf2;\nextern OSViMode    osViModePalHpn1;\nextern OSViMode    osViModePalHpf1;\nextern OSViMode    osViModePalHan1;\nextern OSViMode    osViModePalHaf1;\nextern OSViMode    osViModePalHpn2;\nextern OSViMode    osViModePalHpf2;\n\nextern OSViMode    osViModeMpalLpn1;    /* Individual VI MPAL modes */\nextern OSViMode    osViModeMpalLpf1;\nextern OSViMode    osViModeMpalLan1;\nextern OSViMode    osViModeMpalLaf1;\nextern OSViMode    osViModeMpalLpn2;\nextern OSViMode    osViModeMpalLpf2;\nextern OSViMode    osViModeMpalLan2;\nextern OSViMode    osViModeMpalLaf2;\nextern OSViMode    osViModeMpalHpn1;\nextern OSViMode    osViModeMpalHpf1;\nextern OSViMode    osViModeMpalHan1;\nextern OSViMode    osViModeMpalHaf1;\nextern OSViMode    osViModeMpalHpn2;\nextern OSViMode    osViModeMpalHpf2;\n\nextern s32     osRomType;    /* Bulk or cartridge ROM. 0=cartridge 1=bulk */\nextern u32  osRomBase;    /* Rom base address of the game image */\nextern u32     osTvType;    /* 0 = PAL, 1 = NTSC, 2 = MPAL */\nextern u32     osResetType;    /* 0 = cold reset, 1 = NMI */\nextern s32     osCicId;\nextern s32     osVersion;\nextern u32    osMemSize;    /* Memory Size */\nextern s32    osAppNMIBuffer[];\n\nextern OSIntMask __OSGlobalIntMask;    /* global interrupt mask */\nextern OSPiHandle      *__osPiTable;    /* The head of OSPiHandle link list */\nextern OSPiHandle      *__osDiskHandle; /* For exceptasm to get disk info*/\n\n\n\n/**************************************************************************\n *\n * Function prototypes\n *\n */\n\n/* Thread operations */\n\nextern void        osCreateThread(OSThread *, OSId, void (*)(void *),\n                       void *, void *, OSPri);\nextern void        osDestroyThread(OSThread *);\nextern void        osYieldThread(void);\nextern void        osStartThread(OSThread *);\nextern void        osStopThread(OSThread *);\nextern OSId        osGetThreadId(OSThread *);\nextern void        osSetThreadPri(OSThread *, OSPri);\nextern OSPri        osGetThreadPri(OSThread *);\n\n/* Message operations */\n\nextern void        osCreateMesgQueue(OSMesgQueue *, OSMesg *, s32);\nextern s32        osSendMesg(OSMesgQueue *, OSMesg, s32);\nextern s32        osJamMesg(OSMesgQueue *, OSMesg, s32);\nextern s32        osRecvMesg(OSMesgQueue *, OSMesg *, s32);\n\n/* Event operations */\n\nextern void        osSetEventMesg(OSEvent, OSMesgQueue *, OSMesg);\n\n/* Interrupt operations */\n\nextern OSIntMask    osGetIntMask(void);\nextern OSIntMask    osSetIntMask(OSIntMask);\n\n/* RDB port operations */\n\nextern void             osInitRdb(u8 *sendBuf, u32 sendSize);\n\n/* Cache operations and macros */\n\nextern void        osInvalDCache(void *, size_t);\nextern void        osInvalICache(void *, size_t);\nextern void        osWritebackDCache(void *, size_t);\nextern void        osWritebackDCacheAll(void);\n\n#define    OS_DCACHE_ROUNDUP_ADDR(x)    (void *)(((((u32)(x)+0xf)/0x10)*0x10))\n#define    OS_DCACHE_ROUNDUP_SIZE(x)    (u32)(((((u32)(x)+0xf)/0x10)*0x10))\n\n/* TLB management routines */\n\nextern void        osMapTLB(s32, OSPageMask, void *, u32, u32, s32);\nextern void        osMapTLBRdb(void);\nextern void        osUnmapTLB(s32);\nextern void        osUnmapTLBAll(void);\nextern void        osSetTLBASID(s32);\n\n/* Address translation routines and macros */\n\nextern u32         osVirtualToPhysical(void *);\nextern void *         osPhysicalToVirtual(u32);\n\n#define    OS_K0_TO_PHYSICAL(x)    (u32)(((char *)(x)-0x80000000))\n#define    OS_K1_TO_PHYSICAL(x)    (u32)(((char *)(x)-0xa0000000))\n\n#define    OS_PHYSICAL_TO_K0(x)    (void *)(((u32)(x)+0x80000000))\n#define    OS_PHYSICAL_TO_K1(x)    (void *)(((u32)(x)+0xa0000000))\n\n/* I/O operations */\n\n/* Audio interface (Ai) */\nextern u32         osAiGetStatus(void);\nextern u32         osAiGetLength(void);\nextern s32        osAiSetFrequency(u32);\nextern s32        osAiSetNextBuffer(void *, u32);\n\n/* Display processor interface (Dp) */\nextern u32         osDpGetStatus(void);\nextern void        osDpSetStatus(u32);\nextern void         osDpGetCounters(u32 *);\nextern s32        osDpSetNextBuffer(void *, u64);\n\n/* Peripheral interface (Pi) */\nextern u32         osPiGetStatus(void);\nextern s32        osPiGetDeviceType(void);\nextern s32        osPiRawWriteIo(u32, u32);\nextern s32        osPiRawReadIo(u32, u32 *);\nextern s32        osPiRawStartDma(s32, u32, void *, u32);\nextern s32        osPiWriteIo(u32, u32);\nextern s32        osPiReadIo(u32, u32 *);\nextern s32        osPiStartDma(OSIoMesg *, s32, s32, u32, void *, u32,\n                     OSMesgQueue *);\nextern void        osCreatePiManager(OSPri, OSMesgQueue *, OSMesg *, s32);\n\n/* Video interface (Vi) */\nextern u32        osViGetStatus(void);\nextern u32        osViGetCurrentMode(void);\nextern u32        osViGetCurrentLine(void);\nextern u32        osViGetCurrentField(void);\nextern void        *osViGetCurrentFramebuffer(void);\nextern void        *osViGetNextFramebuffer(void);\nextern void        osViSetXScale(f32);\nextern void        osViSetYScale(f32);\nextern void        osViSetSpecialFeatures(u32);\nextern void        osViSetMode(OSViMode *);\nextern void        osViSetEvent(OSMesgQueue *, OSMesg, u32);\nextern void        osViSwapBuffer(void *);\nextern void        osViBlack(u8);\nextern void        osViFade(u8, u16);\nextern void        osViRepeatLine(u8);\nextern void        osCreateViManager(OSPri);\n\n/* Timer interface */\n\nextern OSTime        osGetTime(void);\nextern void        osSetTime(OSTime);\nextern u32        osSetTimer(OSTimer *, OSTime, OSTime,\n                   OSMesgQueue *, OSMesg);\nextern int        osStopTimer(OSTimer *);\n\n/* Controller interface */\n\nextern s32        osContInit(OSMesgQueue *, u8 *, OSContStatus *);\nextern s32        osContReset(OSMesgQueue *, OSContStatus *);\nextern s32        osContStartQuery(OSMesgQueue *);\nextern s32        osContStartReadData(OSMesgQueue *);\n#ifndef _HW_VERSION_1\nextern s32        osContSetCh(u8);\n#endif\nextern void        osContGetQuery(OSContStatus *);\nextern void        osContGetReadData(OSContPad *);\n\n/* file system interface */\n\nextern s32 osPfsInitPak(OSMesgQueue *, OSPfs *, int);\nextern s32 osPfsRepairId(OSPfs *);\nextern s32 osPfsInit(OSMesgQueue *, OSPfs *, int);\nextern s32 osPfsReFormat(OSPfs *, OSMesgQueue *, int);\nextern s32 osPfsChecker(OSPfs *);\nextern s32 osPfsAllocateFile(OSPfs *, u16, u32, u8 *, u8 *, int, s32 *);\nextern s32 osPfsFindFile(OSPfs *, u16, u32, u8 *, u8 *, s32 *);\nextern s32 osPfsDeleteFile(OSPfs *, u16, u32, u8 *, u8 *);\nextern s32 osPfsReadWriteFile(OSPfs *, s32, u8, int, int, u8 *);\nextern s32 osPfsFileState(OSPfs *, s32, OSPfsState *);\nextern s32 osPfsGetLabel(OSPfs *, u8 *, int *);\nextern s32 osPfsSetLabel(OSPfs *, u8 *);\nextern s32 osPfsIsPlug(OSMesgQueue *, u8 *);\nextern s32 osPfsFreeBlocks(OSPfs *, s32 *);\nextern s32 osPfsNumFiles(OSPfs *, s32 *, s32 *);\n\n/* EEPROM interface */\n\nextern s32 osEepromProbe(OSMesgQueue *);\nextern s32 osEepromRead(OSMesgQueue *, u8, u8 *);\nextern s32 osEepromWrite(OSMesgQueue *, u8, u8 *);\nextern s32 osEepromLongRead(OSMesgQueue *, u8, u8 *, int);\nextern s32 osEepromLongWrite(OSMesgQueue *, u8, u8 *, int);\n\n/* MOTOR interface */\n\nextern s32 osMotorInit(OSMesgQueue *, OSPfs *, int);\nextern s32 osMotorStop(OSPfs *);\nextern s32 osMotorStart(OSPfs *);\n\n#ifdef VERSION_CN\n#define MOTOR_START 1\n#define MOTOR_STOP 0\nextern s32 __osMotorAccess(OSPfs *, s32);\n#endif\n\n/* Enhanced PI interface */\n\nextern OSPiHandle *osCartRomInit(void);\nextern OSPiHandle *osLeoDiskInit(void);\nextern OSPiHandle *osDriveRomInit(void);\n\nextern s32 osEPiDeviceType(OSPiHandle *, OSPiInfo *);\nextern s32 osEPiRawWriteIo(OSPiHandle *, u32 , u32);\nextern s32 osEPiRawReadIo(OSPiHandle *, u32 , u32 *);\nextern s32 osEPiRawStartDma(OSPiHandle *, s32 , u32 , void *, u32 );\nextern s32 osEPiWriteIo(OSPiHandle *, u32 , u32 );\nextern s32 osEPiReadIo(OSPiHandle *, u32 , u32 *);\nextern s32 osEPiStartDma(OSPiHandle *, OSIoMesg *, s32);\nextern s32 osEPiLinkHandle(OSPiHandle *);\n\n/* Profiler Interface */\n\nextern void        osProfileInit(OSProf *, u32 profcnt);\nextern void        osProfileStart(u32);\nextern void        osProfileFlush(void);\nextern void        osProfileStop(void);\n\n/* Game <> Host data transfer functions */\n\nextern s32        osTestHost(void);\nextern void        osReadHost(void *, u32);\nextern void        osWriteHost(void *, u32);\nextern void        osAckRamromRead(void);\nextern void        osAckRamromWrite(void);\n\n\n/* byte string operations */\n\nextern void     bcopy(const void *, void *, size_t);\nextern int      bcmp(const void *, const void *, int);\nextern void     bzero(void *, size_t);\n\n/* Miscellaneous operations */\n\nextern void        osInitialize(void);\nextern u32        osGetCount(void);\nextern void        osExit(void);\nextern u32         osGetMemSize(void);\n\n/* Printf */\n\nextern int        sprintf(char *s, const char *fmt, ...);\nextern void        osSyncPrintf(const char *fmt, ...);\nextern void        osAsyncPrintf(const char *fmt, ...);\nextern int        osSyncGetChars(char *buf);\nextern int        osAsyncGetChars(char *buf);\n\n#endif  /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */\n\n#ifdef _LANGUAGE_C_PLUS_PLUS\n}\n#endif\n\n#endif /* !_OS_H */\n"
  },
  {
    "path": "include/PR/os_ai.h",
    "content": "\n/*====================================================================\n * os_ai.h\n *\n * Copyright 1995, Silicon Graphics, Inc.\n * All Rights Reserved.\n *\n * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,\n * Inc.; the contents of this file may not be disclosed to third\n * parties, copied or duplicated in any form, in whole or in part,\n * without the prior written permission of Silicon Graphics, Inc.\n *\n * RESTRICTED RIGHTS LEGEND:\n * Use, duplication or disclosure by the Government is subject to\n * restrictions as set forth in subdivision (c)(1)(ii) of the Rights\n * in Technical Data and Computer Software clause at DFARS\n * 252.227-7013, and/or in similar or successor clauses in the FAR,\n * DOD or NASA FAR Supplement. Unpublished - rights reserved under the\n * Copyright Laws of the United States.\n *====================================================================*/\n\n/*---------------------------------------------------------------------*\n        Copyright (C) 1998 Nintendo. (Originated by SGI)\n        \n        $RCSfile: os_ai.h,v $\n        $Revision: 1.1 $\n        $Date: 1998/10/09 08:01:04 $\n *---------------------------------------------------------------------*/\n\n#ifndef _OS_AI_H_\n#define\t_OS_AI_H_\n\n#ifdef _LANGUAGE_C_PLUS_PLUS\nextern \"C\" {\n#endif\n\n#include <PR/ultratypes.h>\n\n#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)\n\n/**************************************************************************\n *\n * Type definitions\n *\n */\n\n\n#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */\n\n/**************************************************************************\n *\n * Global definitions\n *\n */\n\n\n#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)\n\n/**************************************************************************\n *\n * Macro definitions\n *\n */\n\n\n/**************************************************************************\n *\n * Extern variables\n *\n */\n\n\n/**************************************************************************\n *\n * Function prototypes\n *\n */\n\n/* Audio interface (Ai) */\nextern u32 \t\tosAiGetStatus(void);\nextern u32 \t\tosAiGetLength(void);\nextern s32\t\tosAiSetFrequency(u32);\nextern s32\t\tosAiSetNextBuffer(void *, u32);\n\n\n#endif  /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */\n\n#ifdef _LANGUAGE_C_PLUS_PLUS\n}\n#endif\n\n#endif /* !_OS_AI_H_ */\n"
  },
  {
    "path": "include/PR/os_cache.h",
    "content": "\n/*====================================================================\n * os_cache.h\n *\n * Copyright 1995, Silicon Graphics, Inc.\n * All Rights Reserved.\n *\n * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,\n * Inc.; the contents of this file may not be disclosed to third\n * parties, copied or duplicated in any form, in whole or in part,\n * without the prior written permission of Silicon Graphics, Inc.\n *\n * RESTRICTED RIGHTS LEGEND:\n * Use, duplication or disclosure by the Government is subject to\n * restrictions as set forth in subdivision (c)(1)(ii) of the Rights\n * in Technical Data and Computer Software clause at DFARS\n * 252.227-7013, and/or in similar or successor clauses in the FAR,\n * DOD or NASA FAR Supplement. Unpublished - rights reserved under the\n * Copyright Laws of the United States.\n *====================================================================*/\n\n/*---------------------------------------------------------------------*\n        Copyright (C) 1998 Nintendo. (Originated by SGI)\n        \n        $RCSfile: os_cache.h,v $\n        $Revision: 1.1 $\n        $Date: 1998/10/09 08:01:04 $\n *---------------------------------------------------------------------*/\n\n#ifndef _OS_CACHE_H_\n#define\t_OS_CACHE_H_\n\n#ifdef _LANGUAGE_C_PLUS_PLUS\nextern \"C\" {\n#endif\n\n#include <PR/ultratypes.h>\n\n#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)\n\n/**************************************************************************\n *\n * Type definitions\n *\n */\n\n\n#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */\n\n/**************************************************************************\n *\n * Global definitions\n *\n */\n\n\n#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)\n\n/**************************************************************************\n *\n * Macro definitions\n *\n */\n\n#define\tOS_DCACHE_ROUNDUP_ADDR(x)\t(void *)(((((u32)(x)+0xf)/0x10)*0x10))\n#define\tOS_DCACHE_ROUNDUP_SIZE(x)\t(u32)(((((u32)(x)+0xf)/0x10)*0x10))\n\n\n/**************************************************************************\n *\n * Extern variables\n *\n */\n\n\n/**************************************************************************\n *\n * Function prototypes\n *\n */\n\n/* Cache operations and macros */\n\nextern void\t\tosInvalDCache(void *, size_t);\nextern void\t\tosInvalICache(void *, size_t);\nextern void\t\tosWritebackDCache(void *, size_t);\nextern void\t\tosWritebackDCacheAll(void);\n\n\n#endif  /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */\n\n#ifdef _LANGUAGE_C_PLUS_PLUS\n}\n#endif\n\n#endif /* !_OS_CACHE_H_ */\n"
  },
  {
    "path": "include/PR/os_cont.h",
    "content": "\n/*====================================================================\n * os_cont.h\n *\n * Copyright 1995, Silicon Graphics, Inc.\n * All Rights Reserved.\n *\n * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,\n * Inc.; the contents of this file may not be disclosed to third\n * parties, copied or duplicated in any form, in whole or in part,\n * without the prior written permission of Silicon Graphics, Inc.\n *\n * RESTRICTED RIGHTS LEGEND:\n * Use, duplication or disclosure by the Government is subject to\n * restrictions as set forth in subdivision (c)(1)(ii) of the Rights\n * in Technical Data and Computer Software clause at DFARS\n * 252.227-7013, and/or in similar or successor clauses in the FAR,\n * DOD or NASA FAR Supplement. Unpublished - rights reserved under the\n * Copyright Laws of the United States.\n *====================================================================*/\n\n/*---------------------------------------------------------------------*\n        Copyright (C) 1998 Nintendo. (Originated by SGI)\n        \n        $RCSfile: os_cont.h,v $\n        $Revision: 1.1 $\n        $Date: 1998/10/09 08:01:05 $\n *---------------------------------------------------------------------*/\n\n#ifndef _OS_CONT_H_\n#define\t_OS_CONT_H_\n\n#ifdef _LANGUAGE_C_PLUS_PLUS\nextern \"C\" {\n#endif\n\n#include <PR/ultratypes.h>\n#include \"os_message.h\"\n\n\n#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)\n\n/**************************************************************************\n *\n * Type definitions\n *\n */\n\n/*\n * Structure for controllers \n */\n\ntypedef struct {\n\tu16     type;                   /* Controller Type */\n\tu8      status;                 /* Controller status */\n\tu8      errnum;\n}OSContStatus;\n\ntypedef struct {\n\tu16     button;\n\ts8      stick_x;\t\t/* -80 <= stick_x <= 80 */\n\ts8      stick_y;\t\t/* -80 <= stick_y <= 80 */\n\tu8      errnum;\n} OSContPad;\n\ntypedef struct {\n\tvoid    *address;               /* Ram pad Address:  11 bits */\n\tu8      databuffer[32];         /* address of the data buffer */\n    u8      addressCrc;             /* CRC code for address */\n\tu8      dataCrc;                /* CRC code for data */\n\tu8      errnum;\n} OSContRamIo;\n\n\n#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */\n\n/**************************************************************************\n *\n * Global definitions\n *\n */\n\n/*\n *  Controllers  number\n */\n\n#ifndef _HW_VERSION_1\n#define MAXCONTROLLERS  4\n#else\n#define MAXCONTROLLERS  6\n#endif\n\n/* controller errors */\n#define CONT_NO_RESPONSE_ERROR          0x8\n#define CONT_OVERRUN_ERROR              0x4\n#ifdef _HW_VERSION_1\n#define CONT_FRAME_ERROR                0x2\n#define CONT_COLLISION_ERROR            0x1\n#endif \n\n/* Controller type */\n\n#define CONT_ABSOLUTE           0x0001\n#define CONT_RELATIVE           0x0002\n#define CONT_JOYPORT            0x0004\n#define CONT_EEPROM\t\t0x8000\n#define CONT_EEP16K\t\t0x4000\n#define\tCONT_TYPE_MASK\t\t0x1f07\n#define\tCONT_TYPE_NORMAL\t0x0005\n#define\tCONT_TYPE_MOUSE\t\t0x0002\n#define\tCONT_TYPE_VOICE\t\t0x0100\n\n/* Controller status */\n\n#define CONT_CARD_ON            0x01\n#define CONT_CARD_PULL          0x02\n#define CONT_ADDR_CRC_ER        0x04\n#define CONT_EEPROM_BUSY\t0x80\n\n/* Buttons */\n\n#define CONT_A      0x8000\n#define CONT_B      0x4000\n#define CONT_G\t    0x2000\n#define CONT_START  0x1000\n#define CONT_UP     0x0800\n#define CONT_DOWN   0x0400\n#define CONT_LEFT   0x0200\n#define CONT_RIGHT  0x0100\n#define CONT_L      0x0020\n#define CONT_R      0x0010\n#define CONT_E      0x0008\n#define CONT_D      0x0004\n#define CONT_C      0x0002\n#define CONT_F      0x0001\n\n/* Nintendo's official button names */\n\n#define A_BUTTON\tCONT_A\n#define B_BUTTON\tCONT_B\n#define L_TRIG\t\tCONT_L\n#define R_TRIG\t\tCONT_R\n#define Z_TRIG\t\tCONT_G\n#define START_BUTTON\tCONT_START\n#define U_JPAD\t\tCONT_UP\n#define L_JPAD\t\tCONT_LEFT\n#define R_JPAD\t\tCONT_RIGHT\n#define D_JPAD\t\tCONT_DOWN\n#define U_CBUTTONS\tCONT_E\n#define L_CBUTTONS\tCONT_C\n#define R_CBUTTONS\tCONT_F\n#define D_CBUTTONS\tCONT_D\n\n/* Controller error number */\n\n#define\tCONT_ERR_NO_CONTROLLER\t\tPFS_ERR_NOPACK \t\t/* 1 */\n#define\tCONT_ERR_CONTRFAIL\t\tCONT_OVERRUN_ERROR\t/* 4 */\n#define\tCONT_ERR_INVALID\t\tPFS_ERR_INVALID\t\t/* 5 */\n#define\tCONT_ERR_DEVICE\t\t\tPFS_ERR_DEVICE \t\t/* 11 */\n#define\tCONT_ERR_NOT_READY\t\t12\n#define\tCONT_ERR_VOICE_MEMORY\t\t13\n#define\tCONT_ERR_VOICE_WORD\t\t14\n#define\tCONT_ERR_VOICE_NO_RESPONSE\t15\n\n\n#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)\n\n/**************************************************************************\n *\n * Macro definitions\n *\n */\n\n\n/**************************************************************************\n *\n * Extern variables\n *\n */\n\n\n/**************************************************************************\n *\n * Function prototypes\n *\n */\n\n/* Controller interface */\n\nextern s32\t\tosContInit(OSMesgQueue *, u8 *, OSContStatus *);\nextern s32\t\tosContReset(OSMesgQueue *, OSContStatus *);\nextern s32\t\tosContStartQuery(OSMesgQueue *);\nextern s32\t\tosContStartReadData(OSMesgQueue *);\n#ifndef _HW_VERSION_1\nextern s32\t\tosContSetCh(u8);\n#endif\nextern void\t\tosContGetQuery(OSContStatus *);\nextern void\t\tosContGetReadData(OSContPad *);\n\n\n#endif  /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */\n\n#ifdef _LANGUAGE_C_PLUS_PLUS\n}\n#endif\n\n#endif /* !_OS_CONT_H_ */\n"
  },
  {
    "path": "include/PR/os_eeprom.h",
    "content": "\n/*====================================================================\n * os_eeprom.h\n *\n * Copyright 1995, Silicon Graphics, Inc.\n * All Rights Reserved.\n *\n * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,\n * Inc.; the contents of this file may not be disclosed to third\n * parties, copied or duplicated in any form, in whole or in part,\n * without the prior written permission of Silicon Graphics, Inc.\n *\n * RESTRICTED RIGHTS LEGEND:\n * Use, duplication or disclosure by the Government is subject to\n * restrictions as set forth in subdivision (c)(1)(ii) of the Rights\n * in Technical Data and Computer Software clause at DFARS\n * 252.227-7013, and/or in similar or successor clauses in the FAR,\n * DOD or NASA FAR Supplement. Unpublished - rights reserved under the\n * Copyright Laws of the United States.\n *====================================================================*/\n\n/*---------------------------------------------------------------------*\n        Copyright (C) 1998 Nintendo. (Originated by SGI)\n        \n        $RCSfile: os_eeprom.h,v $\n        $Revision: 1.1 $\n        $Date: 1998/10/09 08:01:06 $\n *---------------------------------------------------------------------*/\n\n#ifndef _OS_EEPROM_H_\n#define\t_OS_EEPROM_H_\n\n#ifdef _LANGUAGE_C_PLUS_PLUS\nextern \"C\" {\n#endif\n\n#include <PR/ultratypes.h>\n#include \"os_message.h\"\n\n\n#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)\n\n/**************************************************************************\n *\n * Type definitions\n *\n */\n\n\n#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */\n\n/**************************************************************************\n *\n * Global definitions\n *\n */\n\n/* EEPROM TYPE */\n\n#define EEPROM_TYPE_4K\t\t0x01\n#define EEPROM_TYPE_16K\t\t0x02\n\n/* definition for EEPROM */\n\n#define EEPROM_MAXBLOCKS\t64\n#define EEP16K_MAXBLOCKS\t256\n#define EEPROM_BLOCK_SIZE\t8\n\n\n#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)\n\n/**************************************************************************\n *\n * Macro definitions\n *\n */\n\n\n/**************************************************************************\n *\n * Extern variables\n *\n */\n\n\n/**************************************************************************\n *\n * Function prototypes\n *\n */\n\n/* EEPROM interface */\n\nextern s32 osEepromProbe(OSMesgQueue *);\nextern s32 osEepromRead(OSMesgQueue *, u8, u8 *);\nextern s32 osEepromWrite(OSMesgQueue *, u8, u8 *);\nextern s32 osEepromLongRead(OSMesgQueue *, u8, u8 *, int);\nextern s32 osEepromLongWrite(OSMesgQueue *, u8, u8 *, int);\n\n\n#endif  /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */\n\n#ifdef _LANGUAGE_C_PLUS_PLUS\n}\n#endif\n\n#endif /* !_OS_EEPROM_H_ */\n"
  },
  {
    "path": "include/PR/os_exception.h",
    "content": "\n/*====================================================================\n * os_exception.h\n *\n * Copyright 1995, Silicon Graphics, Inc.\n * All Rights Reserved.\n *\n * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,\n * Inc.; the contents of this file may not be disclosed to third\n * parties, copied or duplicated in any form, in whole or in part,\n * without the prior written permission of Silicon Graphics, Inc.\n *\n * RESTRICTED RIGHTS LEGEND:\n * Use, duplication or disclosure by the Government is subject to\n * restrictions as set forth in subdivision (c)(1)(ii) of the Rights\n * in Technical Data and Computer Software clause at DFARS\n * 252.227-7013, and/or in similar or successor clauses in the FAR,\n * DOD or NASA FAR Supplement. Unpublished - rights reserved under the\n * Copyright Laws of the United States.\n *====================================================================*/\n\n/*---------------------------------------------------------------------*\n        Copyright (C) 1998 Nintendo. (Originated by SGI)\n        \n        $RCSfile: os_exception.h,v $\n        $Revision: 1.1 $\n        $Date: 1998/10/09 08:01:07 $\n *---------------------------------------------------------------------*/\n\n#ifndef _OS_EXCEPTION_H_\n#define\t_OS_EXCEPTION_H_\n\n#ifdef _LANGUAGE_C_PLUS_PLUS\nextern \"C\" {\n#endif\n\n#include <PR/ultratypes.h>\n\n#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)\n\n/**************************************************************************\n *\n * Type definitions\n *\n */\n\ntypedef u32 OSIntMask;\ntypedef u32 OSHWIntr;\n\n#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */\n\n/**************************************************************************\n *\n * Global definitions\n *\n */\n\n/* Flags for debugging purpose */\n\n#define\tOS_FLAG_CPU_BREAK\t1\t/* Break exception has occurred */\n#define\tOS_FLAG_FAULT\t\t2\t/* CPU fault has occurred */\n\n/* Interrupt masks */\n\n#define\tOS_IM_NONE\t0x00000001\n#define\tOS_IM_SW1\t0x00000501\n#define\tOS_IM_SW2\t0x00000601\n#define\tOS_IM_CART\t0x00000c01\n#define\tOS_IM_PRENMI\t0x00001401\n#define OS_IM_RDBWRITE\t0x00002401\n#define OS_IM_RDBREAD\t0x00004401\n#define\tOS_IM_COUNTER\t0x00008401\n#define\tOS_IM_CPU\t0x0000ff01\n#define\tOS_IM_SP\t0x00010401\n#define\tOS_IM_SI\t0x00020401\n#define\tOS_IM_AI\t0x00040401\n#define\tOS_IM_VI\t0x00080401\n#define\tOS_IM_PI\t0x00100401\n#define\tOS_IM_DP\t0x00200401\n#define\tOS_IM_ALL\t0x003fff01\n#define\tRCP_IMASK\t0x003f0000\n#define\tRCP_IMASKSHIFT\t16\n\n\n#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)\n\n/**************************************************************************\n *\n * Macro definitions\n *\n */\n\n\n/**************************************************************************\n *\n * Extern variables\n *\n */\n\n\n/**************************************************************************\n *\n * Function prototypes\n *\n */\n\n/* Interrupt operations */\n\nextern OSIntMask\tosGetIntMask(void);\nextern OSIntMask\tosSetIntMask(OSIntMask);\n\n\n#endif  /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */\n\n#ifdef _LANGUAGE_C_PLUS_PLUS\n}\n#endif\n\n#endif /* !_OS_EXCEPTION_H_ */\n"
  },
  {
    "path": "include/PR/os_internal.h",
    "content": "#ifndef _ULTRA64_OS_INTERNAL_H_\n#define _ULTRA64_OS_INTERNAL_H_\n#include \"PR/os_message.h\"\n\n/* Internal functions used by the operating system */\n/* Do not include this header in application code */\n\n/* Variables */\n\n//extern u64 osClockRate;\n\n/* Functions */\n\n/*u32 __osProbeTLB(void *);\nu32 __osDisableInt(void);\nvoid __osRestoreInt(u32);*/\nOSThread *__osGetCurrFaultedThread(void);\n\n#endif\n"
  },
  {
    "path": "include/PR/os_libc.h",
    "content": "#ifndef _OS_LIBC_H_\n#define _OS_LIBC_H_\n\n#include \"ultratypes.h\"\n\n// Old deprecated functions from strings.h, replaced by memcpy/memset.\nextern void bcopy(const void *, void *, size_t);\nextern void bzero(void *, size_t);\n\n/* Printf */\n\nextern int        sprintf(char *s, const char *fmt, ...);\nextern void        osSyncPrintf(const char *fmt, ...);\nextern void        osAsyncPrintf(const char *fmt, ...);\nextern int        osSyncGetChars(char *buf);\nextern int        osAsyncGetChars(char *buf);\n\n#endif /* !_OS_LIBC_H_ */\n"
  },
  {
    "path": "include/PR/os_message.h",
    "content": "\n/*====================================================================\n * os_message.h\n *\n * Copyright 1995, Silicon Graphics, Inc.\n * All Rights Reserved.\n *\n * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,\n * Inc.; the contents of this file may not be disclosed to third\n * parties, copied or duplicated in any form, in whole or in part,\n * without the prior written permission of Silicon Graphics, Inc.\n *\n * RESTRICTED RIGHTS LEGEND:\n * Use, duplication or disclosure by the Government is subject to\n * restrictions as set forth in subdivision (c)(1)(ii) of the Rights\n * in Technical Data and Computer Software clause at DFARS\n * 252.227-7013, and/or in similar or successor clauses in the FAR,\n * DOD or NASA FAR Supplement. Unpublished - rights reserved under the\n * Copyright Laws of the United States.\n *====================================================================*/\n\n/*---------------------------------------------------------------------*\n        Copyright (C) 1998 Nintendo. (Originated by SGI)\n        \n        $RCSfile: os_message.h,v $\n        $Revision: 1.1 $\n        $Date: 1998/10/09 08:01:15 $\n *---------------------------------------------------------------------*/\n\n#ifndef _OS_MESSAGE_H_\n#define\t_OS_MESSAGE_H_\n\n#ifdef _LANGUAGE_C_PLUS_PLUS\nextern \"C\" {\n#endif\n\n#include <PR/ultratypes.h>\n#include <PR/os_thread.h>\n\n#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)\n\n/**************************************************************************\n *\n * Type definitions\n *\n */\n\ntypedef u32 OSEvent;\n\n/*\n * Structure for message\n */\ntypedef void *\tOSMesg;\n\n/*\n * Structure for message queue\n */\ntypedef struct OSMesgQueue_s {\n\tOSThread\t*mtqueue;\t/* Queue to store threads blocked\n\t\t\t\t\t   on empty mailboxes (receive) */\n\tOSThread\t*fullqueue;\t/* Queue to store threads blocked\n\t\t\t\t\t   on full mailboxes (send) */\n\ts32\t\tvalidCount;\t/* Contains number of valid message */\n\ts32\t\tfirst;\t\t/* Points to first valid message */\n\ts32\t\tmsgCount;\t/* Contains total # of messages */\n\tOSMesg\t\t*msg;\t\t/* Points to message buffer array */\n} OSMesgQueue;\n\n\n#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */\n\n/**************************************************************************\n *\n * Global definitions\n *\n */\n\n/* Events */\n\n#ifdef BBPLAYER\n#define OS_NUM_EVENTS           31\n#elif defined(_FINALROM)\n#define OS_NUM_EVENTS           15\n#else\n#define OS_NUM_EVENTS           23\n#endif\n\n#define OS_EVENT_SW1              0     /* CPU SW1 interrupt */\n#define OS_EVENT_SW2              1     /* CPU SW2 interrupt */\n#define OS_EVENT_CART             2     /* Cartridge interrupt: used by rmon */\n#define OS_EVENT_COUNTER          3     /* Counter int: used by VI/Timer Mgr */\n#define OS_EVENT_SP               4     /* SP task done interrupt */\n#define OS_EVENT_SI               5     /* SI (controller) interrupt */\n#define OS_EVENT_AI               6     /* AI interrupt */\n#define OS_EVENT_VI               7     /* VI interrupt: used by VI/Timer Mgr */\n#define OS_EVENT_PI               8     /* PI interrupt: used by PI Manager */\n#define OS_EVENT_DP               9     /* DP full sync interrupt */\n#define OS_EVENT_CPU_BREAK        10    /* CPU breakpoint: used by rmon */\n#define OS_EVENT_SP_BREAK         11    /* SP breakpoint:  used by rmon */\n#define OS_EVENT_FAULT            12    /* CPU fault event: used by rmon */\n#define OS_EVENT_THREADSTATUS     13    /* CPU thread status: used by rmon */\n#define OS_EVENT_PRENMI           14    /* Pre NMI interrupt */\n#ifndef _FINALROM\n#define OS_EVENT_RDB_READ_DONE    15    /* RDB read ok event: used by rmon */\n#define OS_EVENT_RDB_LOG_DONE     16    /* read of log data complete */\n#define OS_EVENT_RDB_DATA_DONE    17    /* read of hostio data complete */\n#define OS_EVENT_RDB_REQ_RAMROM   18    /* host needs ramrom access */\n#define OS_EVENT_RDB_FREE_RAMROM  19    /* host is done with ramrom access */\n#define OS_EVENT_RDB_DBG_DONE     20\n#define OS_EVENT_RDB_FLUSH_PROF   21\n#define OS_EVENT_RDB_ACK_PROF     22\n#endif\n#ifdef BBPLAYER\n#define OS_EVENT_FLASH            23    /* NAND flash operation complete */\n#define OS_EVENT_AES              24    /* AES */\n#define OS_EVENT_IDE              25    /* IDE? */\n#define OS_EVENT_PI_ERR           26    /* PI Error? */\n#define OS_EVENT_USB0             27    /* USB Controller 0 */\n#define OS_EVENT_USB1             28    /* USB Controller 1 */\n#define OS_EVENT_UNK_29           29    /* TODO does this exist at all */\n#define OS_EVENT_MD               30    /* Related to card */\n#endif\n\n/* Flags to turn blocking on/off when sending/receiving message */\n\n#define\tOS_MESG_NOBLOCK\t\t0\n#define\tOS_MESG_BLOCK\t\t1\n\n\n#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)\n\n/**************************************************************************\n *\n * Macro definitions\n *\n */\n\n/* Get count of valid messages in queue */\n#define MQ_GET_COUNT(mq)        ((mq)->validCount)\n\n/* Figure out if message queue is empty or full */\n#define MQ_IS_EMPTY(mq)\t\t(MQ_GET_COUNT(mq) == 0)\n#define MQ_IS_FULL(mq)\t\t(MQ_GET_COUNT(mq) >= (mq)->msgCount)\n\n\n/**************************************************************************\n *\n * Extern variables\n *\n */\n\n\n/**************************************************************************\n *\n * Function prototypes\n *\n */\n\n/* Message operations */\n\nextern void\t\tosCreateMesgQueue(OSMesgQueue *, OSMesg *, s32);\nextern s32\t\tosSendMesg(OSMesgQueue *, OSMesg, s32);\nextern s32\t\tosJamMesg(OSMesgQueue *, OSMesg, s32);\nextern s32\t\tosRecvMesg(OSMesgQueue *, OSMesg *, s32);\n\n/* Event operations */\n\nextern void\t\tosSetEventMesg(OSEvent, OSMesgQueue *, OSMesg);\n\n\n#endif  /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */\n\n#ifdef _LANGUAGE_C_PLUS_PLUS\n}\n#endif\n\n#endif /* !_OS_MESSAGE_H_ */\n"
  },
  {
    "path": "include/PR/os_misc.h",
    "content": "#ifndef _ULTRA64_OS_MISC_H_\n#define _ULTRA64_OS_MISC_H_\n#include <PR/ultratypes.h>\n/* Miscellaneous OS functions */\n\nvoid osInitialize(void);\nu32 osGetCount(void);\n\nuintptr_t osVirtualToPhysical(void *);\n\n#endif\n"
  },
  {
    "path": "include/PR/os_motor.h",
    "content": "\n/*---------------------------------------------------------------------*\n        Copyright (C) 1998 Nintendo.\n        \n        $RCSfile: os_motor.h,v $\n        $Revision: 1.1 $\n        $Date: 1998/10/09 08:01:15 $\n *---------------------------------------------------------------------*/\n\n#ifndef _OS_MOTOR_H_\n#define\t_OS_MOTOR_H_\n\n#ifdef _LANGUAGE_C_PLUS_PLUS\nextern \"C\" {\n#endif\n\n#include <PR/ultratypes.h>\n#include \"os_message.h\"\n#include \"os_pfs.h\"\n\n\n#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)\n\n/**************************************************************************\n *\n * Type definitions\n *\n */\n\n\n#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */\n\n/**************************************************************************\n *\n * Global definitions\n *\n */\n\n\n#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)\n\n/**************************************************************************\n *\n * Macro definitions\n *\n */\n\n\n/**************************************************************************\n *\n * Extern variables\n *\n */\n\n\n/**************************************************************************\n *\n * Function prototypes\n *\n */\n\n/* Rumble PAK interface */\n\nextern s32 osMotorInit(OSMesgQueue *, OSPfs *, int);\nextern s32 osMotorStop(OSPfs *);\nextern s32 osMotorStart(OSPfs *);\n\n\n#endif  /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */\n\n#ifdef _LANGUAGE_C_PLUS_PLUS\n}\n#endif\n\n#endif /* !_OS_MOTOR_H_ */\n"
  },
  {
    "path": "include/PR/os_pfs.h",
    "content": "/*====================================================================\n * os_pfs.h\n *\n * Copyright 1995, Silicon Graphics, Inc.\n * All Rights Reserved.\n *\n * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,\n * Inc.; the contents of this file may not be disclosed to third\n * parties, copied or duplicated in any form, in whole or in part,\n * without the prior written permission of Silicon Graphics, Inc.\n *\n * RESTRICTED RIGHTS LEGEND:\n * Use, duplication or disclosure by the Government is subject to\n * restrictions as set forth in subdivision (c)(1)(ii) of the Rights\n * in Technical Data and Computer Software clause at DFARS\n * 252.227-7013, and/or in similar or successor clauses in the FAR,\n * DOD or NASA FAR Supplement. Unpublished - rights reserved under the\n * Copyright Laws of the United States.\n *====================================================================*/\n\n/*---------------------------------------------------------------------*\n        Copyright (C) 1998 Nintendo. (Originated by SGI)\n        \n        $RCSfile: os_pfs.h,v $\n        $Revision: 1.1 $\n        $Date: 1998/10/09 08:01:16 $\n *---------------------------------------------------------------------*/\n\n#ifndef _OS_PFS_H_\n#define\t_OS_PFS_H_\n\n#ifdef _LANGUAGE_C_PLUS_PLUS\nextern \"C\" {\n#endif\n\n#include <PR/ultratypes.h>\n#include \"os_message.h\"\n\n#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)\n\n/**************************************************************************\n *\n * Type definitions\n *\n */\n \n/*\n * Structure for file system\n */\n\ntypedef struct {\n    int         status;\n    OSMesgQueue *queue;\n    int         channel;\n    u8          id[32];\n    u8          label[32];\n    int         version;\n    int         dir_size;\n    int         inode_table;        /* block location */\n    int         minode_table;       /* mirrioring inode_table */\n    int         dir_table;          /* block location */\n    int         inode_start_page;   /* page # */\n    u8          banks;\n    u8          activebank;\n} OSPfs;\n\n\ntypedef struct {\n    u32     file_size;    /* bytes */\n    u32     game_code;\n    u16     company_code;\n    char    ext_name[4];\n    char    game_name[16];\n} OSPfsState;\n\n#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */\n\n/**************************************************************************\n *\n * Global definitions\n *\n */\n\n/* File System size */\n#define OS_PFS_VERSION          0x0200\n#define OS_PFS_VERSION_HI       (OS_PFS_VERSION >> 8)\n#define OS_PFS_VERSION_LO       (OS_PFS_VERSION & 255)\n\n#define PFS_FILE_NAME_LEN       16\n#define PFS_FILE_EXT_LEN        4\n#define BLOCKSIZE               32       /* bytes */\n#define PFS_ONE_PAGE            8        /* blocks */\n#define PFS_MAX_BANKS           62\n\n/* File System flag */\n\n#define PFS_READ                0\n#define PFS_WRITE               1\n#define PFS_CREATE              2\n\n/* File System status */\n#define PFS_INITIALIZED         0x1\n#define PFS_CORRUPTED           0x2        /* File system was corrupted */\n\n/* File System error number */\n\n#define PFS_ERR_NOPACK          1    /* no memory card is plugged or   */\n#define PFS_ERR_NEW_PACK        2    /* ram pack has been changed to a */\n#define PFS_ERR_INCONSISTENT    3    /* need to run Pfschecker       */\n#define PFS_ERR_CONTRFAIL       CONT_OVERRUN_ERROR              \n#define PFS_ERR_INVALID         5    /* invalid parameter or file not exist*/\n#define PFS_ERR_BAD_DATA        6    /* the data read from pack are bad*/\n#define PFS_DATA_FULL           7    /* no free pages on ram pack      */\n#define PFS_DIR_FULL            8    /* no free directories on ram pack*/\n#define PFS_ERR_EXIST           9    /* file exists*/\n#define PFS_ERR_ID_FATAL        10   /* dead ram pack */\n#define PFS_ERR_DEVICE          11   /* wrong device type*/\n\n#ifdef _LANGUAGE_C_PLUS_PLUS\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "include/PR/os_pi.h",
    "content": "#ifndef _ULTRA64_PI_H_\n#define _ULTRA64_PI_H_\n#include <ultra64.h>\n\n/* Ultra64 Parallel Interface */\n\n/* Types */\n\ntypedef struct {\n#if !defined(VERSION_EU)\n    u32 errStatus;\n#endif\n    void *dramAddr;\n    void *C2Addr;\n    u32 sectorSize;\n    u32 C1ErrNum;\n    u32 C1ErrSector[4];\n} __OSBlockInfo;\n\ntypedef struct {\n    u32 cmdType;       // 0\n    u16 transferMode;  // 4\n    u16 blockNum;      // 6\n    s32 sectorNum;     // 8\n    uintptr_t devAddr; // c\n#if defined(VERSION_EU)\n    u32 errStatus; //error status added moved to blockinfo\n#endif\n    u32 bmCtlShadow;        // 10\n    u32 seqCtlShadow;       // 14\n    __OSBlockInfo block[2]; // 18\n} __OSTranxInfo;\n\ntypedef struct OSPiHandle_s {\n    struct OSPiHandle_s *next;\n    u8 type;\n    u8 latency;\n    u8 pageSize;\n    u8 relDuration;\n    u8 pulse;\n    u8 domain;\n    u32 baseAddress;\n    u32 speed;\n    __OSTranxInfo transferInfo;\n} OSPiHandle;\n\ntypedef struct {\n    u8 type;\n    uintptr_t address;\n} OSPiInfo;\n\ntypedef struct {\n    u16 type;\n    u8 pri;\n    u8 status;\n    OSMesgQueue *retQueue;\n} OSIoMesgHdr;\n\ntypedef struct {\n    /*0x00*/ OSIoMesgHdr hdr;\n    /*0x08*/ void *dramAddr;\n    /*0x0C*/ uintptr_t devAddr;\n    /*0x10*/ size_t size;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    OSPiHandle *piHandle; // from the official definition\n#endif\n} OSIoMesg;\n\n/* Definitions */\n\n#define OS_READ 0  // device -> RDRAM\n#define OS_WRITE 1 // device <- RDRAM\n\n#define OS_MESG_PRI_NORMAL 0\n#define OS_MESG_PRI_HIGH 1\n\n/* Functions */\n\ns32 osPiStartDma(OSIoMesg *mb, s32 priority, s32 direction, uintptr_t devAddr, void *vAddr,\n                 size_t nbytes, OSMesgQueue *mq);\nvoid osCreatePiManager(OSPri pri, OSMesgQueue *cmdQ, OSMesg *cmdBuf, s32 cmdMsgCnt);\nOSMesgQueue *osPiGetCmdQueue(void);\ns32 osPiWriteIo(uintptr_t devAddr, u32 data);\ns32 osPiReadIo(uintptr_t devAddr, u32 *data);\n\ns32 osPiRawStartDma(s32 dir, u32 cart_addr, void *dram_addr, size_t size);\ns32 osEPiRawStartDma(OSPiHandle *piHandle, s32 dir, u32 cart_addr, void *dram_addr, size_t size);\n#endif\n"
  },
  {
    "path": "include/PR/os_rdp.h",
    "content": "\n/*====================================================================\n * os_rdp.h\n *\n * Copyright 1995, Silicon Graphics, Inc.\n * All Rights Reserved.\n *\n * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,\n * Inc.; the contents of this file may not be disclosed to third\n * parties, copied or duplicated in any form, in whole or in part,\n * without the prior written permission of Silicon Graphics, Inc.\n *\n * RESTRICTED RIGHTS LEGEND:\n * Use, duplication or disclosure by the Government is subject to\n * restrictions as set forth in subdivision (c)(1)(ii) of the Rights\n * in Technical Data and Computer Software clause at DFARS\n * 252.227-7013, and/or in similar or successor clauses in the FAR,\n * DOD or NASA FAR Supplement. Unpublished - rights reserved under the\n * Copyright Laws of the United States.\n *====================================================================*/\n\n/*---------------------------------------------------------------------*\n        Copyright (C) 1998 Nintendo. (Originated by SGI)\n        \n        $RCSfile: os_rdp.h,v $\n        $Revision: 1.1 $\n        $Date: 1998/10/09 08:01:16 $\n *---------------------------------------------------------------------*/\n\n#ifndef _OS_RDP_H_\n#define\t_OS_RDP_H_\n\n#ifdef _LANGUAGE_C_PLUS_PLUS\nextern \"C\" {\n#endif\n\n#include <PR/ultratypes.h>\n\n#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)\n\n/**************************************************************************\n *\n * Type definitions\n *\n */\n\n\n#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */\n\n/**************************************************************************\n *\n * Global definitions\n *\n */\n\n\n#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)\n\n/**************************************************************************\n *\n * Macro definitions\n *\n */\n\n\n/**************************************************************************\n *\n * Extern variables\n *\n */\n\n\n/**************************************************************************\n *\n * Function prototypes\n *\n */\n\n/* Display processor interface (Dp) */\nextern u32 \t\tosDpGetStatus(void);\nextern void\t\tosDpSetStatus(u32);\nextern void \t\tosDpGetCounters(u32 *);\nextern s32\t\tosDpSetNextBuffer(void *, u64);\n\n\n#endif  /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */\n\n#ifdef _LANGUAGE_C_PLUS_PLUS\n}\n#endif\n\n#endif /* !_OS_RDP_H_ */\n"
  },
  {
    "path": "include/PR/os_thread.h",
    "content": "#ifndef _ULTRA64_THREAD_H_\n#define _ULTRA64_THREAD_H_\n#include \"ultratypes.h\"\n/* Recommended priorities for system threads */\n#define OS_PRIORITY_MAX      255\n#define OS_PRIORITY_VIMGR    254\n#define OS_PRIORITY_RMON     250\n#define OS_PRIORITY_RMONSPIN 200\n#define OS_PRIORITY_PIMGR    150\n#define OS_PRIORITY_SIMGR    140\n#define OS_PRIORITY_APPMAX   127\n#define OS_PRIORITY_IDLE       0\n\n#define OS_STATE_STOPPED    1\n#define OS_STATE_RUNNABLE    2\n#define OS_STATE_RUNNING    4\n#define OS_STATE_WAITING    8\n\n#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)\n\n/* Types */\n\ntypedef s32 OSPri;\ntypedef s32 OSId;\n\ntypedef union\n{\n    struct {f32 f_odd; f32 f_even;} f;\n} __OSfp;\n\ntypedef struct\n{\n    /* registers */\n    /*0x20*/  u64 at, v0, v1, a0, a1, a2, a3;\n    /*0x58*/  u64 t0, t1, t2, t3, t4, t5, t6, t7;\n    /*0x98*/  u64 s0, s1, s2, s3, s4, s5, s6, s7;\n    /*0xD8*/  u64 t8, t9, gp, sp, s8, ra;\n    /*0x108*/ u64 lo, hi;\n    /*0x118*/ u32 sr, pc, cause, badvaddr, rcp;\n    /*0x12C*/ u32 fpcsr;\n    __OSfp  fp0,  fp2,  fp4,  fp6,  fp8, fp10, fp12, fp14;\n    __OSfp fp16, fp18, fp20, fp22, fp24, fp26, fp28, fp30;\n} __OSThreadContext;\n\ntypedef struct\n{\n    u32 flag;\n    u32 count;\n    u64 time;\n} __OSThreadprofile_s;\n\ntypedef struct OSThread_s\n{\n    /*0x00*/ struct OSThread_s *next;\n    /*0x04*/ OSPri priority;\n    /*0x08*/ struct OSThread_s **queue;\n    /*0x0C*/ struct OSThread_s *tlnext;\n    /*0x10*/ u16 state;\n    /*0x12*/ u16 flags;\n    /*0x14*/ OSId id;\n    /*0x18*/ int fp;\n    /*0x1C*/ __OSThreadprofile_s *thprof;\n    /*0x20*/ __OSThreadContext context;\n} OSThread;\n\n\n/* Functions */\n\nvoid osCreateThread(OSThread *thread, OSId id, void (*entry)(void *),\n    void *arg, void *sp, OSPri pri);\nOSId osGetThreadId(OSThread *thread);\nOSPri osGetThreadPri(OSThread *thread);\nvoid osSetThreadPri(OSThread *thread, OSPri pri);\nvoid osStartThread(OSThread *thread);\nvoid osStopThread(OSThread *thread);\n\n#endif\n\n#endif\n"
  },
  {
    "path": "include/PR/os_time.h",
    "content": "#ifndef _ULTRA64_TIME_H_\n#define _ULTRA64_TIME_H_\n\n#include <PR/ultratypes.h>\n#include <PR/os_message.h>\n\n/* Types */\n\ntypedef struct OSTimer_str\n{\n    struct OSTimer_str *next;\n    struct OSTimer_str *prev;\n    u64 interval;\n    u64 remaining;\n    OSMesgQueue *mq;\n    OSMesg msg;\n} OSTimer;\n\ntypedef u64 OSTime;\n\n/* Functions */\n\nOSTime osGetTime(void);\nvoid osSetTime(OSTime time);\nu32 osSetTimer(OSTimer *, OSTime, OSTime, OSMesgQueue *, OSMesg);\n\n#endif\n"
  },
  {
    "path": "include/PR/os_tlb.h",
    "content": "\n/*====================================================================\n * os_tlb.h\n *\n * Copyright 1995, Silicon Graphics, Inc.\n * All Rights Reserved.\n *\n * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,\n * Inc.; the contents of this file may not be disclosed to third\n * parties, copied or duplicated in any form, in whole or in part,\n * without the prior written permission of Silicon Graphics, Inc.\n *\n * RESTRICTED RIGHTS LEGEND:\n * Use, duplication or disclosure by the Government is subject to\n * restrictions as set forth in subdivision (c)(1)(ii) of the Rights\n * in Technical Data and Computer Software clause at DFARS\n * 252.227-7013, and/or in similar or successor clauses in the FAR,\n * DOD or NASA FAR Supplement. Unpublished - rights reserved under the\n * Copyright Laws of the United States.\n *====================================================================*/\n\n/*---------------------------------------------------------------------*\n        Copyright (C) 1998 Nintendo. (Originated by SGI)\n        \n        $RCSfile: os_tlb.h,v $\n        $Revision: 1.1 $\n        $Date: 1998/10/09 08:01:20 $\n *---------------------------------------------------------------------*/\n\n#ifndef _OS_TLB_H_\n#define\t_OS_TLB_H_\n\n#ifdef _LANGUAGE_C_PLUS_PLUS\nextern \"C\" {\n#endif\n\n#include <PR/ultratypes.h>\n\n#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)\n\n/**************************************************************************\n *\n * Type definitions\n *\n */\n\ntypedef u32 OSPageMask;\n\n\n#endif /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */\n\n/**************************************************************************\n *\n * Global definitions\n *\n */\n\n/*\n * Page size argument for TLB routines\n */\n#define OS_PM_4K\t0x0000000\n#define OS_PM_16K\t0x0006000\n#define OS_PM_64K\t0x001e000\n#define OS_PM_256K\t0x007e000\n#define OS_PM_1M\t0x01fe000\n#define OS_PM_4M\t0x07fe000\n#define OS_PM_16M\t0x1ffe000\n\n\n#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)\n\n/**************************************************************************\n *\n * Macro definitions\n *\n */\n\n\n/**************************************************************************\n *\n * Extern variables\n *\n */\n\n\n/**************************************************************************\n *\n * Function prototypes\n *\n */\n\n/* TLB management routines */\n\nextern void\t\tosMapTLB(s32, OSPageMask, void *, u32, u32, s32);\nextern void\t\tosMapTLBRdb(void);\nextern void\t\tosUnmapTLB(s32);\nextern void\t\tosUnmapTLBAll(void);\nextern void\t\tosSetTLBASID(s32);\n\n\n#endif  /* defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) */\n\n#ifdef _LANGUAGE_C_PLUS_PLUS\n}\n#endif\n\n#endif /* !_OS_TLB_H_ */\n"
  },
  {
    "path": "include/PR/os_vi.h",
    "content": "#ifndef _ULTRA64_VI_H_\n#define _ULTRA64_VI_H_\n\n#include <PR/ultratypes.h>\n#include <PR/os_message.h>\n\n//TODO: figure out what this is\n#define VI_STATE_01 0x01\n#define VI_STATE_XSCALE_UPDATED 0x02\n#define VI_STATE_YSCALE_UPDATED 0x04\n#define VI_STATE_08 0x08         //related to control regs changing\n#define VI_STATE_10 0x10         //swap buffer\n#define VI_STATE_BLACK 0x20      //probably related to a black screen\n#define VI_STATE_REPEATLINE 0x40 //repeat line?\n#define VI_STATE_FADE 0x80       //fade\n\n/* Ultra64 Video Interface */\n\n\n/* Special Features */\n#define OS_VI_GAMMA_ON 0x0001\n#define OS_VI_GAMMA_OFF 0x0002\n#define OS_VI_GAMMA_DITHER_ON 0x0004\n#define OS_VI_GAMMA_DITHER_OFF 0x0008\n#define OS_VI_DIVOT_ON 0x0010\n#define OS_VI_DIVOT_OFF 0x0020\n#define OS_VI_DITHER_FILTER_ON 0x0040\n#define OS_VI_DITHER_FILTER_OFF 0x0080\n\n#define OS_VI_GAMMA 0x08\n#define OS_VI_GAMMA_DITHER 0x04\n#define OS_VI_DIVOT 0x10\n#define OS_VI_DITHER_FILTER 0x10000\n#define OS_VI_UNK200 0x200\n#define OS_VI_UNK100 0x100\n\n\n/* Types */\n\ntypedef struct {\n    u32 ctrl;\n    u32 width;\n    u32 burst;\n    u32 vSync;\n    u32 hSync;\n    u32 leap;\n    u32 hStart;\n    u32 xScale;\n    u32 vCurrent;\n} OSViCommonRegs;\n\ntypedef struct {\n    u32 origin;\n    u32 yScale;\n    u32 vStart;\n    u32 vBurst;\n    u32 vIntr;\n} OSViFieldRegs;\n\ntypedef struct {\n    u8 type;\n    OSViCommonRegs comRegs;\n    OSViFieldRegs fldRegs[2];\n} OSViMode;\n\ntypedef struct {\n    /* 0x00 */ u16 unk00; //some kind of flags.  swap buffer sets to 0x10\n    /* 0x02 */ u16 retraceCount;\n    /* 0x04 */ void* buffer;\n    /* 0x08 */ OSViMode *modep;\n    /* 0x0c */ u32 features;\n    /* 0x10 */ OSMesgQueue *mq;\n    /* 0x14 */ OSMesg *msg;\n    /* 0x18 */ u32 unk18;\n    /* 0x1c */ u32 unk1c;\n    /* 0x20 */ u32 unk20;\n    /* 0x24 */ f32 unk24;\n    /* 0x28 */ u16 unk28;\n    /* 0x2c */ u32 unk2c;\n} OSViContext;\n\nvoid osCreateViManager(OSPri pri);\nvoid osViSetMode(OSViMode *mode);\nvoid osViSetEvent(OSMesgQueue *mq, OSMesg msg, u32 retraceCount);\nvoid osViBlack(u8 active);\nvoid osViSetSpecialFeatures(u32 func);\nvoid osViSwapBuffer(void *vaddr);\n\n\n#define OS_VI_NTSC_LPN1\t\t0\t/* NTSC */\n#define OS_VI_NTSC_LPF1\t\t1\n#define OS_VI_NTSC_LAN1\t\t2\n#define OS_VI_NTSC_LAF1\t\t3\n#define OS_VI_NTSC_LPN2\t\t4\n#define OS_VI_NTSC_LPF2\t\t5\n#define OS_VI_NTSC_LAN2\t\t6\n#define OS_VI_NTSC_LAF2\t\t7\n#define OS_VI_NTSC_HPN1\t\t8\n#define OS_VI_NTSC_HPF1\t\t9\n#define OS_VI_NTSC_HAN1\t\t10\n#define OS_VI_NTSC_HAF1\t\t11\n#define OS_VI_NTSC_HPN2\t\t12\n#define OS_VI_NTSC_HPF2\t\t13\n\n#define OS_VI_PAL_LPN1\t\t14\t/* PAL */\n#define OS_VI_PAL_LPF1\t\t15\n#define OS_VI_PAL_LAN1\t\t16\n#define OS_VI_PAL_LAF1\t\t17\n#define OS_VI_PAL_LPN2\t\t18\n#define OS_VI_PAL_LPF2\t\t19\n#define OS_VI_PAL_LAN2\t\t20\n#define OS_VI_PAL_LAF2\t\t21\n#define OS_VI_PAL_HPN1\t\t22\n#define OS_VI_PAL_HPF1\t\t23\n#define OS_VI_PAL_HAN1\t\t24\n#define OS_VI_PAL_HAF1\t\t25\n#define OS_VI_PAL_HPN2\t\t26\n#define OS_VI_PAL_HPF2\t\t27\n\nextern OSViMode\tosViModeTable[];\t/* Global VI mode table */\n\n\n#endif\n"
  },
  {
    "path": "include/PR/rcp.h",
    "content": "#ifndef _RCP_H_\n#define _RCP_H_\n\n/**************************************************************************\n *                                                                        *\n *               Copyright (C) 1995, Silicon Graphics, Inc.               *\n *                                                                        *\n *  These coded instructions, statements, and computer programs  contain  *\n *  unpublished  proprietary  information of Silicon Graphics, Inc., and  *\n *  are protected by Federal copyright law.  They  may  not be disclosed  *\n *  to  third  parties  or copied or duplicated in any form, in whole or  *\n *  in part, without the prior written consent of Silicon Graphics, Inc.  *\n *                                                                        *\n **************************************************************************/\n\n/**************************************************************************\n *\n *  File: rcp.h\n *\n *  This file contains register and bit definitions for RCP memory map.\n *  $Revision: 1.20 $\n *  $Date: 1997/07/23 08:35:21 $\n *  $Source: /disk6/Master/cvsmdev2/PR/include/rcp.h,v $\n *\n **************************************************************************/\n\n#include <PR/R4300.h>\n#include <PR/ultratypes.h>\n\n/**********************************************************************\n *\n * Here is a quick overview of the RCP memory map:\n *\n\n0x0000_0000 .. 0x03ef_ffff\tRDRAM memory\n0x03f0_0000 .. 0x03ff_ffff\tRDRAM registers\n\n\t\t\t\tRCP registers (see below)\n0x0400_0000 .. 0x040f_ffff\tSP registers\n0x0410_0000 .. 0x041f_ffff\tDP command registers\n0x0420_0000 .. 0x042f_ffff\tDP span registers\n0x0430_0000 .. 0x043f_ffff\tMI registers\n0x0440_0000 .. 0x044f_ffff\tVI registers\n0x0450_0000 .. 0x045f_ffff\tAI registers\n0x0460_0000 .. 0x046f_ffff\tPI registers\n0x0470_0000 .. 0x047f_ffff\tRI registers\n0x0480_0000 .. 0x048f_ffff\tSI registers\n0x0490_0000 .. 0x04ff_ffff\tunused\n\n0x0500_0000 .. 0x05ff_ffff\tcartridge domain 2\n0x0600_0000 .. 0x07ff_ffff\tcartridge domain 1\n0x0800_0000 .. 0x0fff_ffff\tcartridge domain 2\n0x1000_0000 .. 0x1fbf_ffff\tcartridge domain 1\n\n0x1fc0_0000 .. 0x1fc0_07bf      PIF Boot Rom (1984 bytes)\n0x1fc0_07c0 .. 0x1fc0_07ff      PIF (JoyChannel) RAM (64 bytes)\n0x1fc0_0800 .. 0x1fcf_ffff      Reserved\n0x1fd0_0000 .. 0x7fff_ffff      cartridge domain 1\n0x8000_0000 .. 0xffff_ffff      external SysAD device\n\nThe Indy development board use cartridge domain 1:\n0x1000_0000 .. 0x10ff_ffff\tRAMROM\n0x1800_0000 .. 0x1800_0003\tGIO interrupt (6 bits valid in 4 bytes)\t\n0x1800_0400 .. 0x1800_0403\tGIO sync (6 bits valid in 4 bytes)\t\n0x1800_0800 .. 0x1800_0803\tCART interrupt (6 bits valid in 4 bytes)\t\n\n\n\n**************************************************************************/\n\n\n/*************************************************************************\n * RDRAM Memory (Assumes that maximum size is 4 MB)\n */\n#define RDRAM_0_START\t\t0x00000000\n#define RDRAM_0_END\t\t0x001FFFFF\n#define RDRAM_1_START\t\t0x00200000\n#define RDRAM_1_END\t\t0x003FFFFF\n\n#define RDRAM_START\t\tRDRAM_0_START\n#define RDRAM_END\t\tRDRAM_1_END\n\n\n/*************************************************************************\n * Address predicates\n */\n#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)\n#define IS_RDRAM(x)     ((unsigned)(x) >= RDRAM_START && \\\n\t\t\t(unsigned)(x) < RDRAM_END)\n#endif\n\n\n/*************************************************************************\n * RDRAM Registers (0x03f0_0000 .. 0x03ff_ffff)\n */\n#define RDRAM_BASE_REG\t\t0x03F00000\n\n#define RDRAM_CONFIG_REG\t(RDRAM_BASE_REG+0x00)\n#define RDRAM_DEVICE_TYPE_REG\t(RDRAM_BASE_REG+0x00)\n#define RDRAM_DEVICE_ID_REG\t(RDRAM_BASE_REG+0x04)\n#define RDRAM_DELAY_REG\t\t(RDRAM_BASE_REG+0x08)\n#define RDRAM_MODE_REG\t\t(RDRAM_BASE_REG+0x0c)\n#define RDRAM_REF_INTERVAL_REG\t(RDRAM_BASE_REG+0x10)\n#define RDRAM_REF_ROW_REG\t(RDRAM_BASE_REG+0x14)\n#define RDRAM_RAS_INTERVAL_REG\t(RDRAM_BASE_REG+0x18)\n#define RDRAM_MIN_INTERVAL_REG\t(RDRAM_BASE_REG+0x1c)\n#define RDRAM_ADDR_SELECT_REG\t(RDRAM_BASE_REG+0x20)\n#define RDRAM_DEVICE_MANUF_REG\t(RDRAM_BASE_REG+0x24)\n\n#define RDRAM_0_DEVICE_ID\t0\n#define RDRAM_1_DEVICE_ID\t1\n\n#define RDRAM_RESET_MODE        0\n#define RDRAM_ACTIVE_MODE       1\n#define RDRAM_STANDBY_MODE      2\n\n#define RDRAM_LENGTH\t\t(2*512*2048)\n#define RDRAM_0_BASE_ADDRESS\t(RDRAM_0_DEVICE_ID*RDRAM_LENGTH)\n#define RDRAM_1_BASE_ADDRESS\t(RDRAM_1_DEVICE_ID*RDRAM_LENGTH)\n\n#define RDRAM_0_CONFIG\t\t0x00000\n#define RDRAM_1_CONFIG\t\t0x00400\n#define RDRAM_GLOBAL_CONFIG\t0x80000\n\n\n/*************************************************************************\n * PIF Physical memory map (total size = 2 KB)\n *\n *\t\t\t  Size\t    Description     Mode\n *\t1FC007FF\t+-------+-----------------+-----+\n *\t\t\t|  64 B | JoyChannel RAM  | R/W |\n *\t1FC007C0\t+-------+-----------------+-----+\n *\t\t\t|1984 B |    Boot ROM     |  *  |  * = Reserved\n *\t1FC00000\t+-------+-----------------+-----+\n *\n */\n#define PIF_ROM_START\t\t0x1FC00000\n#define PIF_ROM_END\t\t0x1FC007BF\n#define PIF_RAM_START\t\t0x1FC007C0\n#define PIF_RAM_END\t\t0x1FC007FF\n\n\n/*************************************************************************\n * Controller channel \n * Each game controller channel has 4 error bits that are defined in bit 6-7 of\n * the Rx and Tx data size area bytes. Programmers need to clear these bits\n * when setting the Tx/Rx size area values for a channel\n */\n#define CHNL_ERR_NORESP\t\t0x80\t/* Bit 7 (Rx): No response error */\n#define CHNL_ERR_OVERRUN\t0x40\t/* Bit 6 (Rx): Overrun error */\n#define CHNL_ERR_FRAME\t\t0x80\t/* Bit 7 (Tx): Frame error */\n#define CHNL_ERR_COLLISION\t0x40\t/* Bit 6 (Tx): Collision error */\n\n#define CHNL_ERR_MASK\t\t0xC0\t/* Bit 6-7: channel errors */\n\n\n/*************************************************************************\n * External device info\n */\n#define DEVICE_TYPE_CART\t0\t/* ROM cartridge */\n#define DEVICE_TYPE_BULK\t1\t/* ROM bulk */\n#define DEVICE_TYPE_64DD\t2\t/* 64 Disk Drive */\n#define DEVICE_TYPE_SRAM\t3\t/* SRAM */\n#define DEVICE_TYPE_INIT\t7\t/* initial value */\n\n/*************************************************************************\n * SP Memory\n */\n#define SP_DMEM_START\t\t0x04000000\t/* read/write */\n#define SP_DMEM_END\t\t0x04000FFF\n#define SP_IMEM_START\t\t0x04001000\t/* read/write */\n#define SP_IMEM_END\t\t0x04001FFF\n\n/*************************************************************************\n * SP CP0 Registers\n */\n\n#define SP_BASE_REG\t\t0x04040000\n\n/* SP memory address (R/W): [11:0] DMEM/IMEM address; [12] 0=DMEM,1=IMEM */\n#define SP_MEM_ADDR_REG\t\t(SP_BASE_REG+0x00)\t/* Master */\n\t\t\t\t\t\t\n/* SP DRAM DMA address (R/W): [23:0] RDRAM address */\n#define SP_DRAM_ADDR_REG\t(SP_BASE_REG+0x04)\t/* Slave */\n\n/* SP read DMA length (R/W): [11:0] length, [19:12] count, [31:20] skip */\n/* direction: I/DMEM <- RDRAM */\n#define SP_RD_LEN_REG\t\t(SP_BASE_REG+0x08)\t/* R/W: read len */\n\n/* SP write DMA length (R/W): [11:0] length, [19:12] count, [31:20] skip */\n/* direction: I/DMEM -> RDRAM */\n#define SP_WR_LEN_REG\t\t(SP_BASE_REG+0x0C)\t/* R/W: write len */\n\n/* SP status (R/W): [14:0] valid bits; see below for write/read mode */\n#define SP_STATUS_REG\t\t(SP_BASE_REG+0x10)\n\n/* SP DMA full (R): [0] valid bit; dma full */\n#define SP_DMA_FULL_REG\t\t(SP_BASE_REG+0x14)\n\n/* SP DMA busy (R): [0] valid bit; dma busy */\n#define SP_DMA_BUSY_REG\t\t(SP_BASE_REG+0x18)\n\n/* SP semaphore (R/W): Read:  [0] semaphore flag (set on read) */\n/*                     Write: [] clear semaphore flag */\n#define SP_SEMAPHORE_REG\t(SP_BASE_REG+0x1C)\n\n/* SP PC (R/W): [11:0] program counter */\n#define SP_PC_REG\t\t0x04080000\n\n/* SP MEM address: bit 12 specifies if address is IMEM or DMEM */\n#define SP_DMA_DMEM\t\t0x0000\t\t/* Bit 12: 0=DMEM, 1=IMEM */\n#define SP_DMA_IMEM\t\t0x1000\t\t/* Bit 12: 0=DMEM, 1=IMEM */\n\n/*\n * Values to clear/set bit in status reg (SP_STATUS_REG - write)\n */\n#define SP_CLR_HALT\t\t0x00001\t    /* Bit  0: clear halt */\n#define SP_SET_HALT\t\t0x00002\t    /* Bit  1: set halt */\n#define SP_CLR_BROKE\t\t0x00004\t    /* Bit  2: clear broke */\n#define SP_CLR_INTR\t\t0x00008\t    /* Bit  3: clear intr */\n#define SP_SET_INTR\t\t0x00010\t    /* Bit  4: set intr */\n#define SP_CLR_SSTEP\t\t0x00020\t    /* Bit  5: clear sstep */\n#define SP_SET_SSTEP\t\t0x00040\t    /* Bit  6: set sstep */\n#define SP_CLR_INTR_BREAK\t0x00080\t    /* Bit  7: clear intr on break */\n#define SP_SET_INTR_BREAK\t0x00100\t    /* Bit  8: set intr on break */\n#define SP_CLR_SIG0\t\t0x00200\t    /* Bit  9: clear signal 0 */\n#define SP_SET_SIG0\t\t0x00400\t    /* Bit 10: set signal 0 */\n#define SP_CLR_SIG1\t\t0x00800\t    /* Bit 11: clear signal 1 */\n#define SP_SET_SIG1\t\t0x01000\t    /* Bit 12: set signal 1 */\n#define SP_CLR_SIG2\t\t0x02000\t    /* Bit 13: clear signal 2 */\n#define SP_SET_SIG2\t\t0x04000\t    /* Bit 14: set signal 2 */\n#define SP_CLR_SIG3\t\t0x08000\t    /* Bit 15: clear signal 3 */\n#define SP_SET_SIG3\t\t0x10000\t    /* Bit 16: set signal 3 */\n#define SP_CLR_SIG4\t\t0x20000\t    /* Bit 17: clear signal 4 */\n#define SP_SET_SIG4\t\t0x40000\t    /* Bit 18: set signal 4 */\n#define SP_CLR_SIG5\t\t0x80000\t    /* Bit 19: clear signal 5 */\n#define SP_SET_SIG5\t       0x100000\t    /* Bit 20: set signal 5 */\n#define SP_CLR_SIG6\t       0x200000\t    /* Bit 21: clear signal 6 */\n#define SP_SET_SIG6\t       0x400000\t    /* Bit 22: set signal 6 */\n#define SP_CLR_SIG7\t       0x800000\t    /* Bit 23: clear signal 7 */\n#define SP_SET_SIG7\t      0x1000000\t    /* Bit 24: set signal 7 */\n\n/*\n * Patterns to interpret status reg (SP_STATUS_REG - read)\n */\n#define SP_STATUS_HALT\t\t0x001\t\t/* Bit  0: halt */\n#define SP_STATUS_BROKE\t\t0x002\t\t/* Bit  1: broke */\n#define SP_STATUS_DMA_BUSY\t0x004\t\t/* Bit  2: dma busy */\n#define SP_STATUS_DMA_FULL\t0x008\t\t/* Bit  3: dma full */\n#define SP_STATUS_IO_FULL\t0x010\t\t/* Bit  4: io full */\n#define SP_STATUS_SSTEP\t\t0x020\t\t/* Bit  5: single step */\n#define SP_STATUS_INTR_BREAK\t0x040\t\t/* Bit  6: interrupt on break */\n#define SP_STATUS_SIG0\t\t0x080\t\t/* Bit  7: signal 0 set */\n#define SP_STATUS_SIG1\t\t0x100\t\t/* Bit  8: signal 1 set */\n#define SP_STATUS_SIG2\t\t0x200\t\t/* Bit  9: signal 2 set */\n#define SP_STATUS_SIG3\t\t0x400\t\t/* Bit 10: signal 3 set */\n#define SP_STATUS_SIG4\t\t0x800\t\t/* Bit 11: signal 4 set */\n#define SP_STATUS_SIG5\t       0x1000\t\t/* Bit 12: signal 5 set */\n#define SP_STATUS_SIG6\t       0x2000\t\t/* Bit 13: signal 6 set */\n#define SP_STATUS_SIG7\t       0x4000\t\t/* Bit 14: signal 7 set */\n\n/* \n * Use of SIG bits\n */\n#define SP_CLR_YIELD\t\tSP_CLR_SIG0\n#define SP_SET_YIELD\t\tSP_SET_SIG0\n#define SP_STATUS_YIELD\t\tSP_STATUS_SIG0\n#define SP_CLR_YIELDED\t\tSP_CLR_SIG1\n#define SP_SET_YIELDED\t\tSP_SET_SIG1\n#define SP_STATUS_YIELDED\tSP_STATUS_SIG1\n#define SP_CLR_TASKDONE\t\tSP_CLR_SIG2\n#define SP_SET_TASKDONE\t\tSP_SET_SIG2\n#define SP_STATUS_TASKDONE\tSP_STATUS_SIG2\n#define\tSP_CLR_RSPSIGNAL\tSP_CLR_SIG3\n#define\tSP_SET_RSPSIGNAL\tSP_SET_SIG3\n#define\tSP_STATUS_RSPSIGNAL\tSP_STATUS_SIG3\n#define\tSP_CLR_CPUSIGNAL\tSP_CLR_SIG4\n#define\tSP_SET_CPUSIGNAL\tSP_SET_SIG4\n#define\tSP_STATUS_CPUSIGNAL\tSP_STATUS_SIG4\n\n/* SP IMEM BIST REG (R/W): [6:0] BIST status bits; see below for detail */\n#define SP_IBIST_REG\t0x04080004\n\n/*\n * Patterns to interpret status reg (SP_BIST_REG - write)\n */\n#define SP_IBIST_CHECK\t\t0x01\t\t/* Bit 0: BIST check */\n#define SP_IBIST_GO\t\t0x02\t\t/* Bit 1: BIST go */\n#define SP_IBIST_CLEAR\t\t0x04\t\t/* Bit 2: BIST clear */\n\n/*\n * Patterns to interpret status reg (SP_BIST_REG - read)\n */\n/* First 2 bits are same as in write mode:  \n * Bit 0: BIST check; Bit 1: BIST go \n */\n#define SP_IBIST_DONE\t\t0x04\t\t/* Bit 2: BIST done */\n#define SP_IBIST_FAILED\t\t0x78\t\t/* Bit [6:3]: BIST fail */\n\n\n/*************************************************************************\n * DP Command Registers \n */\n#define DPC_BASE_REG\t\t0x04100000\n\n/* DP CMD DMA start (R/W): [23:0] DMEM/RDRAM start address */\n#define DPC_START_REG\t\t(DPC_BASE_REG+0x00)\n\n/* DP CMD DMA end (R/W): [23:0] DMEM/RDRAM end address */\n#define DPC_END_REG\t\t(DPC_BASE_REG+0x04)\n\n/* DP CMD DMA end (R): [23:0] DMEM/RDRAM current address */\n#define DPC_CURRENT_REG\t\t(DPC_BASE_REG+0x08)\t\n\n/* DP CMD status (R/W): [9:0] valid bits - see below for definitions */\n#define DPC_STATUS_REG\t\t(DPC_BASE_REG+0x0C)\n\n/* DP clock counter (R): [23:0] clock counter */\n#define DPC_CLOCK_REG\t\t(DPC_BASE_REG+0x10)\t\n\n/* DP buffer busy counter (R): [23:0] clock counter */\n#define DPC_BUFBUSY_REG\t\t(DPC_BASE_REG+0x14)\n\n/* DP pipe busy counter (R): [23:0] clock counter */\n#define DPC_PIPEBUSY_REG\t(DPC_BASE_REG+0x18)\n\n/* DP TMEM load counter (R): [23:0] clock counter */\n#define DPC_TMEM_REG\t\t(DPC_BASE_REG+0x1C)\n\n/*\n * Values to clear/set bit in status reg (DPC_STATUS_REG - write)\n */\n#define DPC_CLR_XBUS_DMEM_DMA\t0x0001\t\t/* Bit 0: clear xbus_dmem_dma */\n#define DPC_SET_XBUS_DMEM_DMA\t0x0002\t\t/* Bit 1: set xbus_dmem_dma */\n#define DPC_CLR_FREEZE\t\t0x0004\t\t/* Bit 2: clear freeze */\n#define DPC_SET_FREEZE\t\t0x0008\t\t/* Bit 3: set freeze */\n#define DPC_CLR_FLUSH\t\t0x0010\t\t/* Bit 4: clear flush */\n#define DPC_SET_FLUSH\t\t0x0020\t\t/* Bit 5: set flush */\n#define DPC_CLR_TMEM_CTR\t0x0040\t\t/* Bit 6: clear tmem ctr */\n#define DPC_CLR_PIPE_CTR\t0x0080\t\t/* Bit 7: clear pipe ctr */\n#define DPC_CLR_CMD_CTR\t\t0x0100\t\t/* Bit 8: clear cmd ctr */\n#define DPC_CLR_CLOCK_CTR\t0x0200\t\t/* Bit 9: clear clock ctr */\n\n/*\n * Patterns to interpret status reg (DPC_STATUS_REG - read)\n */\n#define DPC_STATUS_XBUS_DMEM_DMA\t0x001\t/* Bit  0: xbus_dmem_dma */\n#define DPC_STATUS_FREEZE\t\t0x002\t/* Bit  1: freeze */\n#define DPC_STATUS_FLUSH\t\t0x004\t/* Bit  2: flush */\n/*#define DPC_STATUS_FROZEN\t\t0x008*/\t/* Bit  3: frozen */\n#define DPC_STATUS_START_GCLK\t\t0x008\t/* Bit  3: start gclk */\n#define DPC_STATUS_TMEM_BUSY\t\t0x010\t/* Bit  4: tmem busy */\n#define DPC_STATUS_PIPE_BUSY\t\t0x020\t/* Bit  5: pipe busy */\n#define DPC_STATUS_CMD_BUSY\t\t0x040\t/* Bit  6: cmd busy */\n#define DPC_STATUS_CBUF_READY\t\t0x080\t/* Bit  7: cbuf ready */\n#define DPC_STATUS_DMA_BUSY\t\t0x100\t/* Bit  8: dma busy */\n#define DPC_STATUS_END_VALID\t\t0x200\t/* Bit  9: end valid */\n#define DPC_STATUS_START_VALID\t\t0x400\t/* Bit 10: start valid */\n\n\n/*************************************************************************\n * DP Span Registers \n */\n#define DPS_BASE_REG\t\t0x04200000\n\n/* DP tmem bist (R/W): [10:0] BIST status bits; see below for detail */\n#define DPS_TBIST_REG\t\t(DPS_BASE_REG+0x00)\n\n/* DP span test mode (R/W): [0] Span buffer test access enable */\n#define DPS_TEST_MODE_REG\t(DPS_BASE_REG+0x04)\n\n/* DP span buffer test address (R/W): [6:0] bits; see below for detail */\n#define DPS_BUFTEST_ADDR_REG\t(DPS_BASE_REG+0x08)\n\n/* DP span buffer test data (R/W): [31:0] span buffer data */\n#define DPS_BUFTEST_DATA_REG\t(DPS_BASE_REG+0x0C)\n\n/*\n * Patterns to interpret status reg (DPS_TMEM_BIST_REG - write)\n */\n#define DPS_TBIST_CHECK\t\t0x01\t\t/* Bit 0: BIST check */\n#define DPS_TBIST_GO\t\t0x02\t\t/* Bit 1: BIST go */\n#define DPS_TBIST_CLEAR\t\t0x04\t\t/* Bit 2: BIST clear */\n\n/*\n * Patterns to interpret status reg (DPS_TMEM_BIST_REG - read)\n */\n/* First 2 bits are same as in write mode:  \n * Bit 0: BIST check; Bit 1: BIST go \n */\n#define DPS_TBIST_DONE\t\t0x004\t\t/* Bit 2: BIST done */\n#define DPS_TBIST_FAILED\t0x7F8\t\t/* Bit [10:3]: BIST fail */\n\n\n/*************************************************************************\n * MIPS Interface (MI) Registers \n */\n#define MI_BASE_REG\t\t0x04300000\n\n/* \n * MI init mode (W): [6:0] init length, [7] clear init mode, [8] set init mode\n *                   [9/10] clear/set ebus test mode, [11] clear DP interrupt\n *              (R): [6:0] init length, [7] init mode, [8] ebus test mode\n */\n#define MI_INIT_MODE_REG\t(MI_BASE_REG+0x00)\n#define MI_MODE_REG\t\tMI_INIT_MODE_REG\n\n/*\n * Values to clear/set bit in mode reg (MI_MODE_REG - write)\n */\n#define MI_CLR_INIT\t\t0x0080\t\t/* Bit  7: clear init mode */\n#define MI_SET_INIT\t\t0x0100\t\t/* Bit  8: set init mode */\n#define MI_CLR_EBUS\t\t0x0200\t\t/* Bit  9: clear ebus test */\n#define MI_SET_EBUS\t\t0x0400\t\t/* Bit 10: set ebus test mode */\n#define MI_CLR_DP_INTR\t\t0x0800\t\t/* Bit 11: clear dp interrupt */\n#define MI_CLR_RDRAM\t\t0x1000\t\t/* Bit 12: clear RDRAM reg */\n#define MI_SET_RDRAM\t\t0x2000\t\t/* Bit 13: set RDRAM reg mode */\n\n/*\n * Patterns to interpret mode reg (MI_MODE_REG - read)\n */\n#define MI_MODE_INIT\t\t0x0080\t\t/* Bit  7: init mode */\n#define MI_MODE_EBUS\t\t0x0100\t\t/* Bit  8: ebus test mode */\n#define MI_MODE_RDRAM\t\t0x0200\t\t/* Bit  9: RDRAM reg mode */\n\n/* MI version (R): [7:0] io, [15:8] rac, [23:16] rdp, [31:24] rsp */\n#define MI_VERSION_REG\t\t(MI_BASE_REG+0x04)\n#define MI_NOOP_REG\t\tMI_VERSION_REG\n\n/* MI interrupt (R): [5:0] valid bits - see below for bit patterns */\n#define MI_INTR_REG\t\t(MI_BASE_REG+0x08)\n\n/* \n * MI interrupt mask (W): [11:0] valid bits - see below for bit patterns \n *                   (R): [5:0] valid bits - see below for bit patterns \n */\n#define MI_INTR_MASK_REG\t(MI_BASE_REG+0x0C)\n\n/*\n * The following are values to check for interrupt setting (MI_INTR_REG)\n */\n#define MI_INTR_SP\t\t0x01\t\t/* Bit 0: SP intr */\n#define MI_INTR_SI\t\t0x02\t\t/* Bit 1: SI intr */\n#define MI_INTR_AI\t\t0x04\t\t/* Bit 2: AI intr */\n#define MI_INTR_VI\t\t0x08\t\t/* Bit 3: VI intr */\n#define MI_INTR_PI\t\t0x10\t\t/* Bit 4: PI intr */\n#define MI_INTR_DP\t\t0x20\t\t/* Bit 5: DP intr */\n\n/*\n * The following are values to clear/set various interrupt bit mask\n * They can be ORed together to manipulate multiple bits \n * (MI_INTR_MASK_REG - write)\n */\n#define MI_INTR_MASK_CLR_SP\t0x0001\t\t/* Bit  0: clear SP mask */\n#define MI_INTR_MASK_SET_SP\t0x0002\t\t/* Bit  1: set SP mask */\n#define MI_INTR_MASK_CLR_SI\t0x0004\t\t/* Bit  2: clear SI mask */\n#define MI_INTR_MASK_SET_SI\t0x0008\t\t/* Bit  3: set SI mask */\n#define MI_INTR_MASK_CLR_AI\t0x0010\t\t/* Bit  4: clear AI mask */\n#define MI_INTR_MASK_SET_AI\t0x0020\t\t/* Bit  5: set AI mask */\n#define MI_INTR_MASK_CLR_VI\t0x0040\t\t/* Bit  6: clear VI mask */\n#define MI_INTR_MASK_SET_VI\t0x0080\t\t/* Bit  7: set VI mask */\n#define MI_INTR_MASK_CLR_PI\t0x0100\t\t/* Bit  8: clear PI mask */\n#define MI_INTR_MASK_SET_PI\t0x0200\t\t/* Bit  9: set PI mask */\n#define MI_INTR_MASK_CLR_DP\t0x0400\t\t/* Bit 10: clear DP mask */\n#define MI_INTR_MASK_SET_DP\t0x0800\t\t/* Bit 11: set DP mask */\n\n/*\n * The following are values to check for interrupt mask setting \n * (MI_INTR_MASK_REG - read)\n */\n#define MI_INTR_MASK_SP\t\t0x01\t\t/* Bit 0: SP intr mask */\n#define MI_INTR_MASK_SI\t\t0x02\t\t/* Bit 1: SI intr mask */\n#define MI_INTR_MASK_AI\t\t0x04\t\t/* Bit 2: AI intr mask */\n#define MI_INTR_MASK_VI\t\t0x08\t\t/* Bit 3: VI intr mask */\n#define MI_INTR_MASK_PI\t\t0x10\t\t/* Bit 4: PI intr mask */\n#define MI_INTR_MASK_DP\t\t0x20\t\t/* Bit 5: DP intr mask */\n\n\n/*************************************************************************\n * Video Interface (VI) Registers \n */\n#define VI_BASE_REG\t\t0x04400000\n\n/* VI status/control (R/W): [15-0] valid bits: \n *\t[1:0]   = type[1:0] (pixel size) \n *\t\t\t0: blank (no data, no sync)\n *                      1: reserved\n *                      2: 5/5/5/3 (\"16\" bit)\n *                      3: 8/8/8/8 (32 bit)\n *\t[2]     = gamma_dither_enable (normally on, unless \"special effect\")\n *\t[3]     = gamma_enable (normally on, unless MPEG/JPEG)\n *\t[4]     = divot_enable (normally on if antialiased, unless decal lines)\n *\t[5]     = reserved - always off\n *\t[6]     = serrate (always on if interlaced, off if not)\n *\t[7]     = reserved - diagnostics only\n *\t[9:8]   = anti-alias (aa) mode[1:0] \n *\t\t\t0: aa & resamp (always fetch extra lines)\n *                      1: aa & resamp (fetch extra lines if needed)\n *                      2: resamp only (treat as all fully covered)\n *                      3: neither (replicate pixels, no interpolate)\n *\t[11]    = reserved - diagnostics only\n *\t[15:12] = reserved\n *\n */\n#define VI_STATUS_REG\t\t(VI_BASE_REG+0x00)\n#define VI_CONTROL_REG\t\tVI_STATUS_REG\n\n/* VI origin (R/W): [23:0] frame buffer origin in bytes */\n#define VI_ORIGIN_REG\t\t(VI_BASE_REG+0x04)\n#define VI_DRAM_ADDR_REG\tVI_ORIGIN_REG\n\n/* VI width (R/W): [11:0] frame buffer line width in pixels */\n#define VI_WIDTH_REG\t\t(VI_BASE_REG+0x08)\t\n#define VI_H_WIDTH_REG\t\tVI_WIDTH_REG\n\n/* VI vertical intr (R/W): [9:0] interrupt when current half-line = V_INTR */\n#define VI_INTR_REG\t\t(VI_BASE_REG+0x0C)\t\n#define VI_V_INTR_REG\t\tVI_INTR_REG\n\n/* \n * VI current vertical line (R/W): [9:0] current half line, sampled once per\n *\tline (the lsb of V_CURRENT is constant within a field, and in\n *\tinterlaced modes gives the field number - which is constant for non-\n *\tinterlaced modes)\n * \t- Any write to this register will clear interrupt line\n */\n#define VI_CURRENT_REG\t\t(VI_BASE_REG+0x10)\t\n#define VI_V_CURRENT_LINE_REG\tVI_CURRENT_REG\n\n/* \n * VI video timing (R/W): [ 7: 0] horizontal sync width in pixels, \n *\t\t\t  [15: 8] color burst width in pixels,\n *                        [19:16] vertical sync width in half lines,   \n *\t\t\t  [29:20] start of color burst in pixels from h-sync\n */\n#define VI_BURST_REG\t\t(VI_BASE_REG+0x14)\t\n#define VI_TIMING_REG\t\tVI_BURST_REG\n\n/* VI vertical sync (R/W): [9:0] number of half-lines per field */\n#define VI_V_SYNC_REG\t\t(VI_BASE_REG+0x18)\t\n\n/* VI horizontal sync (R/W): [11: 0] total duration of a line in 1/4 pixel \n *\t\t\t     [20:16] a 5-bit leap pattern used for PAL only \n *\t\t\t\t     (h_sync_period)\n */\n#define VI_H_SYNC_REG\t\t(VI_BASE_REG+0x1C)\t\n\n/* \n * VI horizontal sync leap (R/W): [11: 0] identical to h_sync_period\n *                                [27:16] identical to h_sync_period\n */\n#define VI_LEAP_REG\t\t(VI_BASE_REG+0x20)\t\n#define VI_H_SYNC_LEAP_REG\tVI_LEAP_REG\n\n/* \n * VI horizontal video (R/W): [ 9: 0] end of active video in screen pixels\n *                          : [25:16] start of active video in screen pixels\n */\n#define VI_H_START_REG\t\t(VI_BASE_REG+0x24)\n#define VI_H_VIDEO_REG\t\tVI_H_START_REG\n\n/* \n * VI vertical video (R/W): [ 9: 0] end of active video in screen half-lines\n *                        : [25:16] start of active video in screen half-lines\n */\n#define VI_V_START_REG\t\t(VI_BASE_REG+0x28)\n#define VI_V_VIDEO_REG\t\tVI_V_START_REG\n\n/* \n * VI vertical burst (R/W): [ 9: 0] end of color burst enable in half-lines\n *                        : [25:16] start of color burst enable in half-lines\n */\n#define VI_V_BURST_REG\t\t(VI_BASE_REG+0x2C)\t\n\n/* VI x-scale (R/W): [11: 0] 1/horizontal scale up factor (2.10 format)\n *\t\t     [27:16] horizontal subpixel offset (2.10 format)\n */\n#define VI_X_SCALE_REG\t\t(VI_BASE_REG+0x30)\t\n\n/* VI y-scale (R/W): [11: 0] 1/vertical scale up factor (2.10 format)\n *\t\t     [27:16] vertical subpixel offset (2.10 format)\n */\n#define VI_Y_SCALE_REG\t\t(VI_BASE_REG+0x34)\t\n\n/*\n * Patterns to interpret VI_CONTROL_REG\n */\n#define VI_CTRL_TYPE_16\t\t 0x00002    /* Bit [1:0] pixel size: 16 bit */\n#define VI_CTRL_TYPE_32\t\t 0x00003    /* Bit [1:0] pixel size: 32 bit */\n#define VI_CTRL_GAMMA_DITHER_ON\t 0x00004    /* Bit 2: default = on */\n#define VI_CTRL_GAMMA_ON\t 0x00008    /* Bit 3: default = on */\n#define VI_CTRL_DIVOT_ON\t 0x00010    /* Bit 4: default = on */\n#define VI_CTRL_SERRATE_ON\t 0x00040    /* Bit 6: on if interlaced */\n#define VI_CTRL_ANTIALIAS_MASK\t 0x00300    /* Bit [9:8] anti-alias mode */\n#define VI_CTRL_DITHER_FILTER_ON 0x10000    /* Bit 16: dither-filter mode */\n\n/*\n * Possible video clocks (NTSC or PAL)\n */\n#define VI_NTSC_CLOCK\t\t48681812        /* Hz = 48.681812 MHz */\n#define VI_PAL_CLOCK\t\t49656530        /* Hz = 49.656530 MHz */\n#define VI_MPAL_CLOCK\t\t48628316        /* Hz = 48.628316 MHz */\n\n\n/*************************************************************************\n * Audio Interface (AI) Registers \n *\n * The address and length registers are double buffered; that is, they\n * can be written twice before becoming full.\n * The address must be written before the length.\n */\n#define AI_BASE_REG\t\t0x04500000\n\n/* AI DRAM address (W): [23:0] starting RDRAM address (8B-aligned) */\n#define AI_DRAM_ADDR_REG\t(AI_BASE_REG+0x00)\t/* R0: DRAM address */\n\n/* AI length (R/W): [14:0] transfer length (v1.0) - Bottom 3 bits are ignored */\n/*                  [17:0] transfer length (v2.0) - Bottom 3 bits are ignored */\n#define AI_LEN_REG\t\t(AI_BASE_REG+0x04)\t/* R1: Length */\n\n/* AI control (W): [0] DMA enable - if LSB == 1, DMA is enabled */\n#define AI_CONTROL_REG\t\t(AI_BASE_REG+0x08)\t/* R2: DMA Control */\n\n/* \n * AI status (R): [31]/[0] ai_full (addr & len buffer full), [30] ai_busy \n *\t\t  Note that a 1->0 transition in ai_full will set interrupt\n *           (W): clear audio interrupt \n */\n#define AI_STATUS_REG\t\t(AI_BASE_REG+0x0C)\t/* R3: Status */\n\n/* \n * AI DAC sample period register (W): [13:0] dac rate \n *   - vid_clock/(dperiod + 1) is the DAC sample rate\n *   - (dperiod + 1) >= 66 * (aclockhp + 1) must be true\n */\n#define AI_DACRATE_REG\t\t(AI_BASE_REG+0x10)\t/* R4: DAC rate 14-lsb*/\n\n/* \n * AI bit rate (W): [3:0] bit rate (abus clock half period register - aclockhp)\n *   - vid_clock/(2 * (aclockhp + 1)) is the DAC clock rate\n *   - The abus clock stops if aclockhp is zero\n */\n#define AI_BITRATE_REG\t\t(AI_BASE_REG+0x14)\t/* R5: Bit rate 4-lsb */\n\n/* Value for control register */\n#define AI_CONTROL_DMA_ON\t0x01\t\t\t/* LSB = 1: DMA enable*/\n#define AI_CONTROL_DMA_OFF\t0x00\t\t\t/* LSB = 1: DMA enable*/\n\n/* Value for status register */\n#define AI_STATUS_FIFO_FULL\t0x80000000\t\t/* Bit 31: full */\n#define AI_STATUS_DMA_BUSY\t0x40000000\t\t/* Bit 30: busy */\n\n/* DAC rate = video clock / audio frequency\n *   - DAC rate >= (66 * Bit rate) must be true\n */\n#define AI_MAX_DAC_RATE         16384           /* 14-bit+1 */\n#define AI_MIN_DAC_RATE         132\n\n/* Bit rate <= (DAC rate / 66) */\n#define AI_MAX_BIT_RATE         16              /* 4-bit+1 */\n#define AI_MIN_BIT_RATE         2\n\n/*\n * Maximum and minimum values for audio frequency based on video clocks\n *   max frequency = (video clock / min dac rate)\n *   min frequency = (video clock / max dac rate)\n */\n#define AI_NTSC_MAX_FREQ        368000          /* 368 KHz */\n#define AI_NTSC_MIN_FREQ        3000            /*   3 KHz ~ 2971 Hz */\n\n#define AI_PAL_MAX_FREQ         376000          /* 376 KHz */\n#define AI_PAL_MIN_FREQ         3050            /*   3 KHz ~ 3031 Hz */\n\n#define AI_MPAL_MAX_FREQ        368000          /* 368 KHz */\n#define AI_MPAL_MIN_FREQ        3000            /*   3 KHz ~ 2968 Hz */\n\n\n/*************************************************************************\n * Peripheral Interface (PI) Registers \n */\n#define PI_BASE_REG\t\t0x04600000\n\n/* PI DRAM address (R/W): [23:0] starting RDRAM address */\n#define PI_DRAM_ADDR_REG\t(PI_BASE_REG+0x00)\t/* DRAM address */\n\n/* PI pbus (cartridge) address (R/W): [31:0] starting AD16 address */\n#define PI_CART_ADDR_REG\t(PI_BASE_REG+0x04)\n\n/* PI read length (R/W): [23:0] read data length */\n#define PI_RD_LEN_REG\t\t(PI_BASE_REG+0x08)\n\n/* PI write length (R/W): [23:0] write data length */\n#define PI_WR_LEN_REG\t\t(PI_BASE_REG+0x0C)\n\n/* \n * PI status (R): [0] DMA busy, [1] IO busy, [2], error\n *           (W): [0] reset controller (and abort current op), [1] clear intr\n */\n#define PI_STATUS_REG\t\t(PI_BASE_REG+0x10)\n\n/* PI dom1 latency (R/W): [7:0] domain 1 device latency */\n#define PI_BSD_DOM1_LAT_REG\t(PI_BASE_REG+0x14)\n\n/* PI dom1 pulse width (R/W): [7:0] domain 1 device R/W strobe pulse width */\n#define PI_BSD_DOM1_PWD_REG\t(PI_BASE_REG+0x18)\n\n/* PI dom1 page size (R/W): [3:0] domain 1 device page size */\n#define PI_BSD_DOM1_PGS_REG\t(PI_BASE_REG+0x1C)    /*   page size */\n\n/* PI dom1 release (R/W): [1:0] domain 1 device R/W release duration */\n#define PI_BSD_DOM1_RLS_REG\t(PI_BASE_REG+0x20)\n\n/* PI dom2 latency (R/W): [7:0] domain 2 device latency */\n#define PI_BSD_DOM2_LAT_REG\t(PI_BASE_REG+0x24)    /* Domain 2 latency */\n\n/* PI dom2 pulse width (R/W): [7:0] domain 2 device R/W strobe pulse width */\n#define PI_BSD_DOM2_PWD_REG\t(PI_BASE_REG+0x28)    /*   pulse width */\n\n/* PI dom2 page size (R/W): [3:0] domain 2 device page size */\n#define PI_BSD_DOM2_PGS_REG\t(PI_BASE_REG+0x2C)    /*   page size */\n\n/* PI dom2 release (R/W): [1:0] domain 2 device R/W release duration */\n#define PI_BSD_DOM2_RLS_REG\t(PI_BASE_REG+0x30)    /*   release duration */\n\n#define\tPI_DOMAIN1_REG\t\tPI_BSD_DOM1_LAT_REG\n#define\tPI_DOMAIN2_REG\t\tPI_BSD_DOM2_LAT_REG\n\n#define PI_DOM_LAT_OFS\t\t0x00\n#define PI_DOM_PWD_OFS\t\t0x04\n#define PI_DOM_PGS_OFS\t\t0x08\n#define PI_DOM_RLS_OFS\t\t0x0C\n\n/*\n * PI status register has 3 bits active when read from (PI_STATUS_REG - read)\n *\tBit 0: DMA busy - set when DMA is in progress\n *\tBit 1: IO busy  - set when IO is in progress\n *\tBit 2: Error    - set when CPU issues IO request while DMA is busy\n */\n#define\tPI_STATUS_ERROR\t\t0x04\n#define\tPI_STATUS_IO_BUSY\t0x02\n#define\tPI_STATUS_DMA_BUSY\t0x01\n\n/* PI status register has 2 bits active when written to:\n *\tBit 0: When set, reset PIC\n *\tBit 1: When set, clear interrupt flag\n * The values of the two bits can be ORed together to both reset PIC and \n * clear interrupt at the same time.\n *\n * Note: \n *\t- The PIC does generate an interrupt at the end of each DMA. CPU \n *\tneeds to clear the interrupt flag explicitly (from an interrupt \n *\thandler) by writing into the STATUS register with bit 1 set.\n *\n *\t- When a DMA completes, the interrupt flag is set.  CPU can issue\n *\tanother request even while the interrupt flag is set (as long as\n *\tPIC is idle).  However, it is the CPU's responsibility for\n *\tmaintaining accurate correspondence between DMA completions and\n *\tinterrupts.\n *\n *\t- When PIC is reset, if PIC happens to be busy, an interrupt will\n *\tbe generated as PIC returns to idle.  Otherwise, no interrupt will\n *\tbe generated and PIC remains idle.\n */\n/*\n * Values to clear interrupt/reset PIC (PI_STATUS_REG - write)\n */\n#define\tPI_STATUS_RESET\t\t0x01\n#define\tPI_SET_RESET\t\tPI_STATUS_RESET\n\n#define\tPI_STATUS_CLR_INTR\t0x02\n#define\tPI_CLR_INTR\t\tPI_STATUS_CLR_INTR\n\n#define\tPI_DMA_BUFFER_SIZE\t128\n\n#define PI_DOM1_ADDR1\t\t0x06000000\t/* to 0x07FFFFFF */\n#define PI_DOM1_ADDR2\t\t0x10000000\t/* to 0x1FBFFFFF */\n#define PI_DOM1_ADDR3\t\t0x1FD00000\t/* to 0x7FFFFFFF */\n#define PI_DOM2_ADDR1\t\t0x05000000\t/* to 0x05FFFFFF */\n#define PI_DOM2_ADDR2\t\t0x08000000\t/* to 0x0FFFFFFF */\n\n\n/*************************************************************************\n * RDRAM Interface (RI) Registers \n */\n#define RI_BASE_REG\t\t0x04700000\n\n/* RI mode (R/W): [1:0] operating mode, [2] stop T active, [3] stop R active */\n#define RI_MODE_REG\t\t(RI_BASE_REG+0x00)\t\n\n/* RI config (R/W): [5:0] current control input, [6] current control enable */\n#define RI_CONFIG_REG\t\t(RI_BASE_REG+0x04)\n\n/* RI current load (W): [] any write updates current control register */\n#define RI_CURRENT_LOAD_REG\t(RI_BASE_REG+0x08)\n\n/* RI select (R/W): [2:0] receive select, [2:0] transmit select */\n#define RI_SELECT_REG\t\t(RI_BASE_REG+0x0C)\n\n/* RI refresh (R/W): [7:0] clean refresh delay, [15:8] dirty refresh delay,\n *\t\t     [16] refresh bank, [17] refresh enable \n *\t\t     [18] refresh optimize \n */\n#define RI_REFRESH_REG\t\t(RI_BASE_REG+0x10)\n#define RI_COUNT_REG\t\tRI_REFRESH_REG\n\n/* RI latency (R/W): [3:0] DMA latency/overlap */\n#define RI_LATENCY_REG\t\t(RI_BASE_REG+0x14)\n\n/* RI error (R): [0] nack error, [1] ack error */\n#define RI_RERROR_REG\t\t(RI_BASE_REG+0x18)\n\n/* RI error (W): [] any write clears all error bits */\n#define RI_WERROR_REG\t\t(RI_BASE_REG+0x1C)\n\n\n/*************************************************************************\n * Serial Interface (SI) Registers \n */\n#define SI_BASE_REG\t\t0x04800000\n\n/* SI DRAM address (R/W): [23:0] starting RDRAM address */\n#define SI_DRAM_ADDR_REG\t(SI_BASE_REG+0x00)\t/* R0: DRAM address */\n\n/* SI address read 64B (W): [] any write causes a 64B DMA write */\n#define SI_PIF_ADDR_RD64B_REG\t(SI_BASE_REG+0x04)\t/* R1: 64B PIF->DRAM */\n\n/* Address SI_BASE_REG + (0x08, 0x0c, 0x14) are reserved */\n\n/* SI address write 64B (W): [] any write causes a 64B DMA read */\n#define SI_PIF_ADDR_WR64B_REG\t(SI_BASE_REG+0x10)\t/* R4: 64B DRAM->PIF */\n\n/* \n * SI status (W): [] any write clears interrupt\n *           (R): [0] DMA busy, [1] IO read busy, [2] reserved\n *                [3] DMA error, [12] interrupt\n */\n#define SI_STATUS_REG\t\t(SI_BASE_REG+0x18)\t/* R6: Status */\n\n/* SI status register has the following bits active:\n *\t0:   DMA busy\t\t- set when DMA is in progress\n *\t1:   IO busy\t\t- set when IO access is in progress\n *\t3:   DMA error\t\t- set when there are overlapping DMA requests\n *     12:   Interrupt\t\t- Interrupt set\n */\n#define\tSI_STATUS_DMA_BUSY\t0x0001\n#define\tSI_STATUS_RD_BUSY\t0x0002\n#define\tSI_STATUS_DMA_ERROR\t0x0008\n#define\tSI_STATUS_INTERRUPT\t0x1000\n\n/*************************************************************************\n * Development Board GIO Control Registers \n */\n\n#define GIO_BASE_REG\t\t0x18000000\n\n/* Game to Host Interrupt */\n#define GIO_GIO_INTR_REG\t(GIO_BASE_REG+0x000)\n\n/* Game to Host SYNC */\n#define GIO_GIO_SYNC_REG\t(GIO_BASE_REG+0x400)\n\n/* Host to Game Interrupt */\n#define GIO_CART_INTR_REG\t(GIO_BASE_REG+0x800)\n\n\n/*************************************************************************\n * Common macros\n */\n#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)\n#define\tIO_READ(addr)\t\t(*(vu32 *)PHYS_TO_K1(addr))\n#define\tIO_WRITE(addr,data)\t(*(vu32 *)PHYS_TO_K1(addr)=(u32)(data))\n#define RCP_STAT_PRINT\t\t\t\t\t\t\t\\\n\trmonPrintf(\"current=%x start=%x end=%x dpstat=%x spstat=%x\\n\",\t\\\n        IO_READ(DPC_CURRENT_REG),\t\t\t\t\t\\\n        IO_READ(DPC_START_REG),\t\t\t\t\t\t\\\n        IO_READ(DPC_END_REG),\t\t\t\t\t\t\\\n        IO_READ(DPC_STATUS_REG),\t\t\t\t\t\\\n        IO_READ(SP_STATUS_REG))\n\n#endif\n\n#endif  /* _RCP_H_ */\n"
  },
  {
    "path": "include/PR/rdb.h",
    "content": "\n/**************************************************************************\n *\n *  $Revision: 1.6 $\n *  $Date: 1997/02/11 08:29:31 $\n *  $Source: /disk6/Master/cvsmdev2/PR/include/rdb.h,v $\n *\n **************************************************************************/\n\n#ifndef _RDB_H\n#define _RDB_H\n\n/* U64 side address */\n#define\tRDB_BASE_REG\t\t0xc0000000\n#define RDB_WRITE_INTR_REG\t(RDB_BASE_REG + 0x8)\n#define RDB_READ_INTR_REG\t(RDB_BASE_REG + 0xc)\n#define RDB_BASE_VIRTUAL_ADDR\t0x80000000\n\n/* packet type  Have six bits, so can have up to 63 types */\n#define RDB_TYPE_INVALID                0\n#define RDB_TYPE_GtoH_PRINT             1\n#define RDB_TYPE_GtoH_FAULT             2\n#define RDB_TYPE_GtoH_LOG_CT\t\t3\n#define RDB_TYPE_GtoH_LOG               4\n#define RDB_TYPE_GtoH_READY_FOR_DATA    5\n#define RDB_TYPE_GtoH_DATA_CT\t\t6\n#define RDB_TYPE_GtoH_DATA              7\n#define RDB_TYPE_GtoH_DEBUG             8\n#define RDB_TYPE_GtoH_RAMROM\t\t9\n#define RDB_TYPE_GtoH_DEBUG_DONE        10\n#define RDB_TYPE_GtoH_DEBUG_READY       11\n#define RDB_TYPE_GtoH_KDEBUG            12\n#define RDB_TYPE_GtoH_PROF_DATA         22\n\n\n#define RDB_TYPE_HtoG_LOG_DONE\t\t13\n#define RDB_TYPE_HtoG_DEBUG            \t14\n#define RDB_TYPE_HtoG_DEBUG_CT          15\n#define RDB_TYPE_HtoG_DATA              16\n#define RDB_TYPE_HtoG_DATA_DONE\t\t17 \n#define RDB_TYPE_HtoG_REQ_RAMROM        18\n#define RDB_TYPE_HtoG_FREE_RAMROM\t19\n#define RDB_TYPE_HtoG_KDEBUG            20\n#define RDB_TYPE_HtoG_PROF_SIGNAL       21\n\n\n#define RDB_PROF_ACK_SIG               1\n#define RDB_PROF_FLUSH_SIG             2\n#define PROF_BLOCK_SIZE\t\t\t2048\n\n#define RDB_LOG_MAX_BLOCK_SIZE         0x8000\n#define RDB_DATA_MAX_BLOCK_SIZE        0x8000\n\n\n/* GIO side address */\n#define GIO_RDB_BASE_REG\t0xbf480000\n#define\tGIO_RDB_WRITE_INTR_REG\t(GIO_RDB_BASE_REG + 0x8)\n#define GIO_RDB_READ_INTR_REG\t(GIO_RDB_BASE_REG + 0xc)\n\n/* minor device number */\n#define GIO_RDB_PRINT_MINOR\t\t1\n#define GIO_RDB_DEBUG_MINOR\t\t2\n\n/* interrupt bit */\n#define GIO_RDB_WRITE_INTR_BIT\t0x80000000\n#define GIO_RDB_READ_INTR_BIT\t0x40000000\n\n/* debug command */\n#define DEBUG_COMMAND_NULL\t0\n#define DEBUG_COMMAND_MEMORY\t1\n#define DEBUG_COMMAND_REGISTER\t2\n#define DEBUG_COMMAND_INVALID\t255\n\n/* debug state */\n#define DEBUG_STATE_NULL\t0\n#define DEBUG_STATE_RECEIVE\t1\n#define DEBUG_STATE_INVALID\t255\n\n#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)\n\n/* Structure for debug port */\ntypedef struct {\n\tunsigned type : 2;\t/* 0: invalid, 1: print, 2: debug */\n    unsigned pad : 4;   // CHANGED FROM THE ORIGINAL LIBULTRA HEADER\n\tunsigned length : 2;\t/* 1, 2, or 3 */\n\tunsigned char buf[3];\t\t/* character buffer */\n} rdbPacket;\n\nextern unsigned int\t__osRdbWriteOK;\nextern unsigned int\t__osRdbSendMessage;\n\n#endif /* _LANGUAGE_C */\n\n#endif /* !_RDB_H */\n"
  },
  {
    "path": "include/PR/sptask.h",
    "content": "#ifndef _ULTRA64_SPTASK_H_\n#define _ULTRA64_SPTASK_H_\n\n/* Task Types */\n#define M_GFXTASK 1\n#define M_AUDTASK 2\n#define M_VIDTASK 3\n#define M_HVQTASK 6\n#define M_HVQMTASK 7\n\n#if (defined(F3DEX_GBI) || defined(F3DLP_GBI) || defined(F3DEX_GBI_2))\n#define OS_YIELD_DATA_SIZE 0xc00\n#else\n#define OS_YIELD_DATA_SIZE 0x900\n#endif\n#define OS_YIELD_AUDIO_SIZE 0x400\n\n/* Flags  */\n#define M_TASK_FLAG0 1\n#define M_TASK_FLAG1 2\n#if defined(VERSION_SH) || defined(VERSION_CN)\n#define M_TASK_FLAG2 4\n#endif\n\n/* SpStatus */\n#define SPSTATUS_CLEAR_HALT 0x00000001\n#define SPSTATUS_SET_HALT 0x00000002\n#define SPSTATUS_CLEAR_BROKE 0x00000004\n#define SPSTATUS_CLEAR_INTR 0x00000008\n#define SPSTATUS_SET_INTR 0x00000010\n#define SPSTATUS_CLEAR_SSTEP 0x00000020\n#define SPSTATUS_SET_SSTEP 0x00000040\n#define SPSTATUS_CLEAR_INTR_ON_BREAK 0x00000080\n#define SPSTATUS_SET_INTR_ON_BREAK 0x00000100\n#define SPSTATUS_CLEAR_SIGNAL0 0x00000200\n#define SPSTATUS_SET_SIGNAL0 0x00000400\n#define SPSTATUS_CLEAR_SIGNAL1 0x00000800\n#define SPSTATUS_SET_SIGNAL1 0x00001000\n#define SPSTATUS_CLEAR_SIGNAL2 0x00002000\n#define SPSTATUS_SET_SIGNAL2 0x00004000\n#define SPSTATUS_CLEAR_SIGNAL3 0x00008000\n#define SPSTATUS_SET_SIGNAL3 0x00010000\n#define SPSTATUS_CLEAR_SIGNAL4 0x00020000\n#define SPSTATUS_SET_SIGNAL4 0x00040000\n#define SPSTATUS_CLEAR_SIGNAL5 0x00080000\n#define SPSTATUS_SET_SIGNAL5 0x00100000\n#define SPSTATUS_CLEAR_SIGNAL6 0x00200000\n#define SPSTATUS_SET_SIGNAL6 0x00800000\n#define SPSTATUS_CLEAR_SIGNAL7 0x01000000\n#define SPSTATUS_SET_SIGNAL7 0x02000000\n\n#define SPSTATUS_HALT 0x0001\n#define SPSTATUS_BROKE 0x0002\n#define SPSTATUS_DMA_BUSY 0x0004\n#define SPSTATUS_DMA_FULL 0x0008\n#define SPSTATUS_IO_FULL 0x0010\n#define SPSTATUS_SINGLE_STEP 0x0020\n#define SPSTATUS_INTERRUPT_ON_BREAK 0x0040\n#define SPSTATUS_SIGNAL0_SET 0x0080\n#define SPSTATUS_SIGNAL1_SET 0x0100\n#define SPSTATUS_SIGNAL2_SET 0x0200\n#define SPSTATUS_SIGNAL3_SET 0x0400\n#define SPSTATUS_SIGNAL4_SET 0x0800\n#define SPSTATUS_SIGNAL5_SET 0x1000\n#define SPSTATUS_SIGNAL6_SET 0x2000\n#define SPSTATUS_SIGNAL7_SET 0x4000\n\n/* Types */\n/* Types */\n\ntypedef struct\n{\n    /*0x00*/ u32 type;\n    /*0x04*/ u32 flags;\n\n    /*0x08*/ u64 *ucode_boot;\n    /*0x0C*/ u32 ucode_boot_size;\n\n    /*0x10*/ u64 *ucode;\n    /*0x14*/ u32 ucode_size;\n\n    /*0x18*/ u64 *ucode_data;\n    /*0x1C*/ u32 ucode_data_size;\n\n    /*0x20*/ u64 *dram_stack;\n    /*0x24*/ u32 dram_stack_size;\n\n    /*0x28*/ u64 *output_buff;\n    /*0x2C*/ u64 *output_buff_size;\n\n    /*0x30*/ u64 *data_ptr;\n    /*0x34*/ u32 data_size;\n\n    /*0x38*/ u64 *yield_data_ptr;\n    /*0x3C*/ u32 yield_data_size;\n} OSTask_t; // size = 0x40\n\ntypedef union {\n    OSTask_t t;\n    long long int force_structure_alignment;\n} OSTask;\n\ntypedef u32 OSYieldResult;\n\n/* Functions */\n\n#define osSpTaskStart(p) \\\n    osSpTaskLoad(p);     \\\n    osSpTaskStartGo(p);\n\nvoid osSpTaskLoad(OSTask *task);\nvoid osSpTaskStartGo(OSTask *task);\nvoid osSpTaskYield(void);\nOSYieldResult osSpTaskYielded(OSTask *task);\n\n#endif\n"
  },
  {
    "path": "include/PR/ucode.h",
    "content": "#ifndef _ULTRA64_UCODE_H_\n#define _ULTRA64_UCODE_H_\n\n#define SP_DRAM_STACK_SIZE8 0x400\n#define SP_UCODE_SIZE       0x1000\n#define SP_UCODE_DATA_SIZE  0x800\n\n// standard boot ucode\nextern u64 rspF3DBootStart[], rspF3DBootEnd[];\n\n// F3D ucode\nextern u64 rspF3DStart[], rspF3DEnd[];\n\n// F3D ucode data\nextern u64 rspF3DDataStart[], rspF3DDataEnd[];\n\n// aspMain (audio) ucode\nextern u64 rspAspMainStart[], rspAspMainEnd[];\n\n// aspMain ucode data\nextern u64 rspAspMainDataStart[], rspAspMainDataEnd[];\n\n#endif\n"
  },
  {
    "path": "include/PR/ultratypes.h",
    "content": "#ifndef _ULTRA64_TYPES_H_\n#define _ULTRA64_TYPES_H_\n\n#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)\n\n#ifndef NULL\n#define NULL    (void *)0\n#endif\n\n#define TRUE 1\n#define FALSE 0\n\ntypedef signed char            s8;\ntypedef unsigned char          u8;\ntypedef signed short int       s16;\ntypedef unsigned short int     u16;\ntypedef signed int             s32;\ntypedef unsigned int           u32;\ntypedef signed long long int   s64;\ntypedef unsigned long long int u64;\n\ntypedef volatile u8   vu8;\ntypedef volatile u16 vu16;\ntypedef volatile u32 vu32;\ntypedef volatile u64 vu64;\ntypedef volatile s8   vs8;\ntypedef volatile s16 vs16;\ntypedef volatile s32 vs32;\ntypedef volatile s64 vs64;\n\ntypedef float  f32;\ntypedef double f64;\n\n#ifdef TARGET_N64\ntypedef u32 size_t;\ntypedef s32 ssize_t;\ntypedef u32 uintptr_t;\ntypedef s32 intptr_t;\ntypedef s32 ptrdiff_t;\n#else\n#include <stddef.h>\n#include <stdint.h>\ntypedef ptrdiff_t ssize_t;\n#endif\n\n#endif\n\n#endif\n"
  },
  {
    "path": "include/behavior_data.h",
    "content": "#ifndef BEHAVIOR_DATA_H\n#define BEHAVIOR_DATA_H\n\n#include \"types.h\"\n\n#define BPARAM1(param) (((param) & 0xFF) << 24)\n#define BPARAM2(param) (((param) & 0xFF) << 16)\n#define BPARAM3(param) (((param) & 0xFF) << 8)\n#define BPARAM4(param) (((param) & 0xFF) << 0)\n\nextern const BehaviorScript bhvStarDoor[];\nextern const BehaviorScript bhvMrI[];\nextern const BehaviorScript bhvMrIBody[];\nextern const BehaviorScript bhvMrIParticle[];\nextern const BehaviorScript bhvPurpleParticle[];\nextern const BehaviorScript bhvGiantPole[];\nextern const BehaviorScript bhvPoleGrabbing[];\nextern const BehaviorScript bhvTHIHugeIslandTop[];\nextern const BehaviorScript bhvTHITinyIslandTop[];\nextern const BehaviorScript bhvCapSwitchBase[];\nextern const BehaviorScript bhvCapSwitch[];\nextern const BehaviorScript bhvKingBobomb[];\nextern const BehaviorScript bhvBobombAnchorMario[];\nextern const BehaviorScript bhvBetaChestBottom[];\nextern const BehaviorScript bhvBetaChestLid[];\nextern const BehaviorScript bhvBubbleParticleSpawner[];\nextern const BehaviorScript bhvBubbleMaybe[];\nextern const BehaviorScript bhvSmallWaterWave[];\nextern const BehaviorScript bhvSmallWaterWave398[];\nextern const BehaviorScript bhvWaterAirBubble[];\nextern const BehaviorScript bhvSmallParticle[];\nextern const BehaviorScript bhvPlungeBubble[];\nextern const BehaviorScript bhvSmallParticleSnow[];\nextern const BehaviorScript bhvSmallParticleBubbles[];\nextern const BehaviorScript bhvFishGroup[];\nextern const BehaviorScript bhvCannon[];\nextern const BehaviorScript bhvCannonBarrel[];\nextern const BehaviorScript bhvCannonBaseUnused[];\nextern const BehaviorScript bhvChuckya[];\nextern const BehaviorScript bhvChuckyaAnchorMario[];\nextern const BehaviorScript bhvUnused05A8[];\nextern const BehaviorScript bhvRotatingPlatform[];\nextern const BehaviorScript bhvTower[];\nextern const BehaviorScript bhvBulletBillCannon[];\nextern const BehaviorScript bhvWFBreakableWallRight[];\nextern const BehaviorScript bhvWFBreakableWallLeft[];\nextern const BehaviorScript bhvKickableBoard[];\nextern const BehaviorScript bhvTowerDoor[];\nextern const BehaviorScript bhvRotatingCounterClockwise[];\nextern const BehaviorScript bhvWFRotatingWoodenPlatform[];\nextern const BehaviorScript bhvKoopaShellUnderwater[];\nextern const BehaviorScript bhvExitPodiumWarp[];\nextern const BehaviorScript bhvFadingWarp[];\nextern const BehaviorScript bhvWarp[];\nextern const BehaviorScript bhvWarpPipe[];\nextern const BehaviorScript bhvWhitePuffExplosion[];\nextern const BehaviorScript bhvSpawnedStar[];\nextern const BehaviorScript bhvSpawnedStarNoLevelExit[];\nextern const BehaviorScript bhvSpawnedBlueCoin[];\nextern const BehaviorScript bhvCoinInsideBoo[];\nextern const BehaviorScript bhvCoinFormationSpawn[];\nextern const BehaviorScript bhvCoinFormation[];\nextern const BehaviorScript bhvOneCoin[];\nextern const BehaviorScript bhvYellowCoin[];\nextern const BehaviorScript bhvTemporaryYellowCoin[];\nextern const BehaviorScript bhvThreeCoinsSpawn[];\nextern const BehaviorScript bhvTenCoinsSpawn[];\nextern const BehaviorScript bhvSingleCoinGetsSpawned[];\nextern const BehaviorScript bhvCoinSparkles[];\nextern const BehaviorScript bhvGoldenCoinSparkles[];\nextern const BehaviorScript bhvWallTinyStarParticle[];\nextern const BehaviorScript bhvVertStarParticleSpawner[];\nextern const BehaviorScript bhvPoundTinyStarParticle[];\nextern const BehaviorScript bhvHorStarParticleSpawner[];\nextern const BehaviorScript bhvPunchTinyTriangle[];\nextern const BehaviorScript bhvTriangleParticleSpawner[];\nextern const BehaviorScript bhvDoorWarp[];\nextern const BehaviorScript bhvDoor[];\nextern const BehaviorScript bhvGrindel[];\nextern const BehaviorScript bhvThwomp[];\nextern const BehaviorScript bhvThwomp2[];\nextern const BehaviorScript bhvTumblingBridgePlatform[];\nextern const BehaviorScript bhvTumblingBridge[];\nextern const BehaviorScript bhvBBHTumblingBridge[];\nextern const BehaviorScript bhvLLLTumblingBridge[];\nextern const BehaviorScript bhvFlame[];\nextern const BehaviorScript bhvAnotherElavator[];\nextern const BehaviorScript bhvRRElevatorPlatform[];\nextern const BehaviorScript bhvHMCElevatorPlatform[];\nextern const BehaviorScript bhvWaterMist[];\nextern const BehaviorScript bhvBreathParticleSpawner[];\nextern const BehaviorScript bhvBreakBoxTriangle[];\nextern const BehaviorScript bhvWaterMist2[];\nextern const BehaviorScript bhvUnused0DFC[];\nextern const BehaviorScript bhvMistCircParticleSpawner[];\nextern const BehaviorScript bhvDirtParticleSpawner[];\nextern const BehaviorScript bhvUnused0E40[];\nextern const BehaviorScript bhvSnowParticleSpawner[];\nextern const BehaviorScript bhvWind[];\nextern const BehaviorScript bhvEndToad[];\nextern const BehaviorScript bhvEndPeach[];\nextern const BehaviorScript bhvUnusedParticleSpawn[];\nextern const BehaviorScript bhvUkiki[];\nextern const BehaviorScript bhvUkikiCageChild[];\nextern const BehaviorScript bhvUkikiCageStar[];\nextern const BehaviorScript bhvUkikiCage[];\nextern const BehaviorScript bhvBitFSSinkingPlatforms[];\nextern const BehaviorScript bhvBitFSSinkingCagePlatform[];\nextern const BehaviorScript bhvDDDMovingPole[];\nextern const BehaviorScript bhvBitFSTiltingInvertedPyramid[];\nextern const BehaviorScript bhvSquishablePlatform[];\nextern const BehaviorScript bhvCutOutObject[];\nextern const BehaviorScript bhvBetaMovingFlamesSpawn[];\nextern const BehaviorScript bhvBetaMovingFlames[];\nextern const BehaviorScript bhvRRRotatingBridgePlatform[];\nextern const BehaviorScript bhvFlamethrower[];\nextern const BehaviorScript bhvFlamethrowerFlame[];\nextern const BehaviorScript bhvBouncingFireball[];\nextern const BehaviorScript bhvBouncingFireballFlame[];\nextern const BehaviorScript bhvBowserShockWave[];\nextern const BehaviorScript bhvFireParticleSpawner[];\nextern const BehaviorScript bhvBlackSmokeMario[];\nextern const BehaviorScript bhvBlackSmokeBowser[];\nextern const BehaviorScript bhvBlackSmokeUpward[];\nextern const BehaviorScript bhvBetaFishSplashSpawner[];\nextern const BehaviorScript bhvSpindrift[];\nextern const BehaviorScript bhvTowerPlatformGroup[];\nextern const BehaviorScript bhvWFSlidingTowerPlatform[];\nextern const BehaviorScript bhvWFElevatorTowerPlatform[];\nextern const BehaviorScript bhvWFSolidTowerPlatform[];\nextern const BehaviorScript bhvLeafParticleSpawner[];\nextern const BehaviorScript bhvTreeSnow[];\nextern const BehaviorScript bhvTreeLeaf[];\nextern const BehaviorScript bhvAnotherTiltingPlatform[];\nextern const BehaviorScript bhvSquarishPathMoving[];\nextern const BehaviorScript bhvPiranhaPlantBubble[];\nextern const BehaviorScript bhvPiranhaPlantWakingBubbles[];\nextern const BehaviorScript bhvFloorSwitchAnimatesObject[];\nextern const BehaviorScript bhvFloorSwitchGrills[];\nextern const BehaviorScript bhvFloorSwitchHardcodedModel[];\nextern const BehaviorScript bhvFloorSwitchHiddenObjects[];\nextern const BehaviorScript bhvHiddenObject[];\nextern const BehaviorScript bhvBreakableBox[];\nextern const BehaviorScript bhvPushableMetalBox[];\nextern const BehaviorScript bhvHeaveHo[];\nextern const BehaviorScript bhvHeaveHoThrowMario[];\nextern const BehaviorScript bhvCCMTouchedStarSpawn[];\nextern const BehaviorScript bhvUnusedPoundablePlatform[];\nextern const BehaviorScript bhvBetaTrampolineTop[];\nextern const BehaviorScript bhvBetaTrampolineSpring[];\nextern const BehaviorScript bhvJumpingBox[];\nextern const BehaviorScript bhvBooCage[];\nextern const BehaviorScript bhvStub[];\nextern const BehaviorScript bhvIgloo[];\nextern const BehaviorScript bhvBowserKey[];\nextern const BehaviorScript bhvGrandStar[];\nextern const BehaviorScript bhvBetaBooKey[];\nextern const BehaviorScript bhvAlphaBooKey[];\nextern const BehaviorScript bhvBulletBill[];\nextern const BehaviorScript bhvWhitePuffSmoke[];\nextern const BehaviorScript bhvUnused1820[];\nextern const BehaviorScript bhvBowserTailAnchor[];\nextern const BehaviorScript bhvBowser[];\nextern const BehaviorScript bhvBowserBodyAnchor[];\nextern const BehaviorScript bhvBowserFlameSpawn[];\nextern const BehaviorScript bhvTiltingBowserLavaPlatform[];\nextern const BehaviorScript bhvFallingBowserPlatform[];\nextern const BehaviorScript bhvBlueBowserFlame[];\nextern const BehaviorScript bhvFlameFloatingLanding[];\nextern const BehaviorScript bhvBlueFlamesGroup[];\nextern const BehaviorScript bhvFlameBouncing[];\nextern const BehaviorScript bhvFlameMovingForwardGrowing[];\nextern const BehaviorScript bhvFlameBowser[];\nextern const BehaviorScript bhvFlameLargeBurningOut[];\nextern const BehaviorScript bhvBlueFish[];\nextern const BehaviorScript bhvTankFishGroup[];\nextern const BehaviorScript bhvCheckerboardElevatorGroup[];\nextern const BehaviorScript bhvCheckerboardPlatformSub[];\nextern const BehaviorScript bhvBowserKeyUnlockDoor[];\nextern const BehaviorScript bhvBowserKeyCourseExit[];\nextern const BehaviorScript bhvInvisibleObjectsUnderBridge[];\nextern const BehaviorScript bhvWaterLevelPillar[];\nextern const BehaviorScript bhvDDDWarp[];\nextern const BehaviorScript bhvMoatGrills[];\nextern const BehaviorScript bhvClockMinuteHand[];\nextern const BehaviorScript bhvClockHourHand[];\nextern const BehaviorScript bhvMacroUkiki[];\nextern const BehaviorScript bhvStub1D0C[];\nextern const BehaviorScript bhvLLLRotatingHexagonalPlatform[];\nextern const BehaviorScript bhvLLLSinkingRockBlock[];\nextern const BehaviorScript bhvStub1D70[];\nextern const BehaviorScript bhvLLLMovingOctagonalMeshPlatform[];\nextern const BehaviorScript bhvSnowBall[];\nextern const BehaviorScript bhvLLLRotatingBlockWithFireBars[];\nextern const BehaviorScript bhvLLLRotatingHexFlame[];\nextern const BehaviorScript bhvLLLWoodPiece[];\nextern const BehaviorScript bhvLLLFloatingWoodBridge[];\nextern const BehaviorScript bhvVolcanoFlames[];\nextern const BehaviorScript bhvLLLRotatingHexagonalRing[];\nextern const BehaviorScript bhvLLLSinkingRectangularPlatform[];\nextern const BehaviorScript bhvLLLSinkingSquarePlatforms[];\nextern const BehaviorScript bhvLLLTiltingInvertedPyramid[];\nextern const BehaviorScript bhvUnused1F30[];\nextern const BehaviorScript bhvKoopaShell[];\nextern const BehaviorScript bhvKoopaShellFlame[];\nextern const BehaviorScript bhvToxBox[];\nextern const BehaviorScript bhvPiranhaPlant[];\nextern const BehaviorScript bhvLLLHexagonalMesh[];\nextern const BehaviorScript bhvLLLBowserPuzzlePiece[];\nextern const BehaviorScript bhvLLLBowserPuzzle[];\nextern const BehaviorScript bhvTuxiesMother[];\nextern const BehaviorScript bhvPenguinBaby[];\nextern const BehaviorScript bhvUnused20E0[];\nextern const BehaviorScript bhvSmallPenguin[];\nextern const BehaviorScript bhvManyBlueFishSpawner[];\nextern const BehaviorScript bhvFewBlueFishSpawner[];\nextern const BehaviorScript bhvFishSpawner[];\nextern const BehaviorScript bhvFishCommon[];\nextern const BehaviorScript bhvFish[];\nextern const BehaviorScript bhvWDWExpressElevator[];\nextern const BehaviorScript bhvWDWExpressElevatorPlatform[];\nextern const BehaviorScript bhvChirpChirp[];\nextern const BehaviorScript bhvChirpChirpUnused[];\nextern const BehaviorScript bhvBub[];\nextern const BehaviorScript bhvCheepCheep[];\nextern const BehaviorScript bhvExclamationBox[];\nextern const BehaviorScript bhvRotatingExclamationMark[];\nextern const BehaviorScript bhvPlaysSound[];\nextern const BehaviorScript bhvSoundSpawner[];\nextern const BehaviorScript bhvRockSolid[];\nextern const BehaviorScript bhvBowserSubDoor[];\nextern const BehaviorScript bhvBowsersSub[];\nextern const BehaviorScript bhvSushiShark[];\nextern const BehaviorScript bhvSushiSharkCollisionChild[];\nextern const BehaviorScript bhvJRBSlidingBox[];\nextern const BehaviorScript bhvShipPart3[];\nextern const BehaviorScript bhvInSunkenShip3[];\nextern const BehaviorScript bhvSunkenShipPart[];\nextern const BehaviorScript bhvUnused243C[];\nextern const BehaviorScript bhvSunkenShipPart2[];\nextern const BehaviorScript bhvInSunkenShip[];\nextern const BehaviorScript bhvInSunkenShip2[];\nextern const BehaviorScript bhvMistParticleSpawner[];\nextern const BehaviorScript bhvWhitePuff1[];\nextern const BehaviorScript bhvWhitePuff2[];\nextern const BehaviorScript bhvWhitePuffSmoke2[];\nextern const BehaviorScript bhvPurpleSwitchHiddenBoxes[];\nextern const BehaviorScript bhvBlueCoinSwitch[];\nextern const BehaviorScript bhvHiddenBlueCoin[];\nextern const BehaviorScript bhvOpenableCageDoor[];\nextern const BehaviorScript bhvOpenableGrill[];\nextern const BehaviorScript bhvWaterLevelDiamond[];\nextern const BehaviorScript bhvInitializeChangingWaterLevel[];\nextern const BehaviorScript bhvTweesterSandParticle[];\nextern const BehaviorScript bhvTweester[];\nextern const BehaviorScript bhvMerryGoRoundBooManager[];\nextern const BehaviorScript bhvPlaysMusicTrackWhenTouched[];\nextern const BehaviorScript bhvAnimatedTexture[];\nextern const BehaviorScript bhvBooInCastle[];\nextern const BehaviorScript bhvBooWithCage[];\nextern const BehaviorScript bhvBalconyBigBoo[];\nextern const BehaviorScript bhvMerryGoRoundBigBoo[];\nextern const BehaviorScript bhvGhostHuntBigBoo[];\nextern const BehaviorScript bhvCourtyardBooTriplet[];\nextern const BehaviorScript bhvBoo[];\nextern const BehaviorScript bhvMerryGoRoundBoo[];\nextern const BehaviorScript bhvGhostHuntBoo[];\nextern const BehaviorScript bhvHiddenStaircaseStep[];\nextern const BehaviorScript bhvBooStaircase[];\nextern const BehaviorScript bhvBBHTiltingTrapPlatform[];\nextern const BehaviorScript bhvHauntedBookshelf[];\nextern const BehaviorScript bhvMeshElevator[];\nextern const BehaviorScript bhvMerryGoRound[];\nextern const BehaviorScript bhvInsideCannon[];\nextern const BehaviorScript bhvBetaBowserAnchor[];\nextern const BehaviorScript bhvStaticCheckeredPlatform[];\nextern const BehaviorScript bhvUnused2A10[];\nextern const BehaviorScript bhvStar[];\nextern const BehaviorScript bhvStaticObject[];\nextern const BehaviorScript bhvUnused2A54[];\nextern const BehaviorScript bhvCastleFloorTrap[];\nextern const BehaviorScript bhvFloorTrapInCastle[];\nextern const BehaviorScript bhvTree[];\nextern const BehaviorScript bhvSparkle[];\nextern const BehaviorScript bhvSparkleSpawn[];\nextern const BehaviorScript bhvSparkleParticleSpawner[];\nextern const BehaviorScript bhvSomeGfx[];\nextern const BehaviorScript bhvScuttlebug[];\nextern const BehaviorScript bhvScuttlebugSpawn[];\nextern const BehaviorScript bhvWhompKingBoss[];\nextern const BehaviorScript bhvSmallWhomp[];\nextern const BehaviorScript bhvWaterSplash[];\nextern const BehaviorScript bhvWaterDroplet[];\nextern const BehaviorScript bhvWaterDropletSplash[];\nextern const BehaviorScript bhvBubbleSplash[];\nextern const BehaviorScript bhvIdleWaterWave[];\nextern const BehaviorScript bhvObjectWaterSplash[];\nextern const BehaviorScript bhvShallowWaterWave[];\nextern const BehaviorScript bhvShallowWaterSplash[];\nextern const BehaviorScript bhvObjectWaveTrail[];\nextern const BehaviorScript bhvWaveTrail[];\nextern const BehaviorScript bhvTinyStrongWindParticle[];\nextern const BehaviorScript bhvStrongWindParticle[];\nextern const BehaviorScript bhvSLSnowmanWind[];\nextern const BehaviorScript bhvSLWalkingPenguin[];\nextern const BehaviorScript bhvYellowBall[];\nextern const BehaviorScript bhvMario[];\nextern const BehaviorScript bhvToadMessage[];\nextern const BehaviorScript bhvUnlockDoorStar[];\nextern const BehaviorScript bhvInstantActiveWarp[];\nextern const BehaviorScript bhvAirborneWarp[];\nextern const BehaviorScript bhvHardAirKnockBackWarp[];\nextern const BehaviorScript bhvSpinAirborneCircleWarp[];\nextern const BehaviorScript bhvDeathWarp[];\nextern const BehaviorScript bhvSpinAirborneWarp[];\nextern const BehaviorScript bhvFlyingWarp[];\nextern const BehaviorScript bhvPaintingStarCollectWarp[];\nextern const BehaviorScript bhvPaintingDeathWarp[];\nextern const BehaviorScript bhvAirborneDeathWarp[];\nextern const BehaviorScript bhvAirborneStarCollectWarp[];\nextern const BehaviorScript bhvLaunchStarCollectWarp[];\nextern const BehaviorScript bhvLaunchDeathWarp[];\nextern const BehaviorScript bhvSwimmingWarp[];\nextern const BehaviorScript bhvRandomAnimatedTexture[];\nextern const BehaviorScript bhvYellowBackgroundInMenu[];\nextern const BehaviorScript bhvMenuButton[];\nextern const BehaviorScript bhvMenuButtonManager[];\nextern const BehaviorScript bhvActSelectorStarType[];\nextern const BehaviorScript bhvActSelector[];\nextern const BehaviorScript bhvMovingYellowCoin[];\nextern const BehaviorScript bhvMovingBlueCoin[];\nextern const BehaviorScript bhvBlueCoinSliding[];\nextern const BehaviorScript bhvBlueCoinJumping[];\nextern const BehaviorScript bhvSeaweed[];\nextern const BehaviorScript bhvSeaweedBundle[];\nextern const BehaviorScript bhvBobomb[];\nextern const BehaviorScript bhvBobombFuseSmoke[];\nextern const BehaviorScript bhvBobombBuddy[];\nextern const BehaviorScript bhvBobombBuddyOpensCannon[];\nextern const BehaviorScript bhvCannonClosed[];\nextern const BehaviorScript bhvWhirlpool[];\nextern const BehaviorScript bhvJetStream[];\nextern const BehaviorScript bhvMessagePanel[];\nextern const BehaviorScript bhvSignOnWall[];\nextern const BehaviorScript bhvHomingAmp[];\nextern const BehaviorScript bhvCirclingAmp[];\nextern const BehaviorScript bhvButterfly[];\nextern const BehaviorScript bhvHoot[];\nextern const BehaviorScript bhvBetaHoldableObject[];\nextern const BehaviorScript bhvCarrySomething1[];\nextern const BehaviorScript bhvCarrySomething2[];\nextern const BehaviorScript bhvCarrySomething3[];\nextern const BehaviorScript bhvCarrySomething4[];\nextern const BehaviorScript bhvCarrySomething5[];\nextern const BehaviorScript bhvCarrySomething6[];\nextern const BehaviorScript bhvObjectBubble[];\nextern const BehaviorScript bhvObjectWaterWave[];\nextern const BehaviorScript bhvExplosion[];\nextern const BehaviorScript bhvBobombBullyDeathSmoke[];\nextern const BehaviorScript bhvSmoke[];\nextern const BehaviorScript bhvBobombExplosionBubble[];\nextern const BehaviorScript bhvBobombExplosionBubble3600[];\nextern const BehaviorScript bhvRespawner[];\nextern const BehaviorScript bhvSmallBully[];\nextern const BehaviorScript bhvBigBully[];\nextern const BehaviorScript bhvBigBullyWithMinions[];\nextern const BehaviorScript bhvSmallChillBully[];\nextern const BehaviorScript bhvBigChillBully[];\nextern const BehaviorScript bhvJetStreamRingSpawner[];\nextern const BehaviorScript bhvJetStreamWaterRing[];\nextern const BehaviorScript bhvMantaRayWaterRing[];\nextern const BehaviorScript bhvMantaRayRingManager[];\nextern const BehaviorScript bhvBowserBomb[];\nextern const BehaviorScript bhvBowserBombExplosion[];\nextern const BehaviorScript bhvBowserBombSmoke[];\nextern const BehaviorScript bhvCelebrationStar[];\nextern const BehaviorScript bhvCelebrationStarSparkle[];\nextern const BehaviorScript bhvStarKeyCollectionPuffSpawner[];\nextern const BehaviorScript bhvLLLDrawbridgeSpawner[];\nextern const BehaviorScript bhvLLLDrawbridge[];\nextern const BehaviorScript bhvSmallBomp[];\nextern const BehaviorScript bhvLargeBomp[];\nextern const BehaviorScript bhvWFSlidingPlatform[];\nextern const BehaviorScript bhvMoneybag[];\nextern const BehaviorScript bhvMoneybagHidden[];\nextern const BehaviorScript bhvPitBowlingBall[];\nextern const BehaviorScript bhvFreeBowlingBall[];\nextern const BehaviorScript bhvBowlingBall[];\nextern const BehaviorScript bhvTTMBowlingBallSpawner[];\nextern const BehaviorScript bhvBoBBowlingBallSpawner[];\nextern const BehaviorScript bhvTHIBowlingBallSpawner[];\nextern const BehaviorScript bhvRRCruiserWing[];\nextern const BehaviorScript bhvSpindel[];\nextern const BehaviorScript bhvSSLMovingPyramidWall[];\nextern const BehaviorScript bhvPyramidElevator[];\nextern const BehaviorScript bhvPyramidElevatorTrajectoryMarkerBall[];\nextern const BehaviorScript bhvPyramidTop[];\nextern const BehaviorScript bhvPyramidTopFragment[];\nextern const BehaviorScript bhvPyramidPillarTouchDetector[];\nextern const BehaviorScript bhvWaterfallSoundLoop[];\nextern const BehaviorScript bhvVolcanoSoundLoop[];\nextern const BehaviorScript bhvCastleFlagWaving[];\nextern const BehaviorScript bhvBirdsSoundLoop[];\nextern const BehaviorScript bhvAmbientSounds[];\nextern const BehaviorScript bhvSandSoundLoop[];\nextern const BehaviorScript bhvHiddenAt120Stars[];\nextern const BehaviorScript bhvSnowmansBottom[];\nextern const BehaviorScript bhvSnowmansHead[];\nextern const BehaviorScript bhvSnowmansBodyCheckpoint[];\nextern const BehaviorScript bhvBigSnowmanWhole[];\nextern const BehaviorScript bhvBigBoulder[];\nextern const BehaviorScript bhvBigBoulderGenerator[];\nextern const BehaviorScript bhvWingCap[];\nextern const BehaviorScript bhvMetalCap[];\nextern const BehaviorScript bhvNormalCap[];\nextern const BehaviorScript bhvVanishCap[];\nextern const BehaviorScript bhvStar[];\nextern const BehaviorScript bhvStarSpawnCoordinates[];\nextern const BehaviorScript bhvHiddenRedCoinStar[];\nextern const BehaviorScript bhvRedCoin[];\nextern const BehaviorScript bhvBowserCourseRedCoinStar[];\nextern const BehaviorScript bhvHiddenStar[];\nextern const BehaviorScript bhvHiddenStarTrigger[];\nextern const BehaviorScript bhvTTMRollingLog[];\nextern const BehaviorScript bhvLLLVolcanoFallingTrap[];\nextern const BehaviorScript bhvLLLRollingLog[];\nextern const BehaviorScript bhv1UpWalking[];\nextern const BehaviorScript bhv1UpRunningAway[];\nextern const BehaviorScript bhv1UpSliding[];\nextern const BehaviorScript bhv1Up[];\nextern const BehaviorScript bhv1UpJumpOnApproach[];\nextern const BehaviorScript bhvHidden1Up[];\nextern const BehaviorScript bhvHidden1UpTrigger[];\nextern const BehaviorScript bhvHidden1UpInPole[];\nextern const BehaviorScript bhvHidden1UpInPoleTrigger[];\nextern const BehaviorScript bhvHidden1UpInPoleSpawner[];\nextern const BehaviorScript bhvControllablePlatform[];\nextern const BehaviorScript bhvControllablePlatformSub[];\nextern const BehaviorScript bhvBreakableBoxSmall[];\nextern const BehaviorScript bhvSlidingSnowMound[];\nextern const BehaviorScript bhvSnowMoundSpawn[];\nextern const BehaviorScript bhvWDWSquareFloatingPlatform[];\nextern const BehaviorScript bhvWDWRectangularFloatingPlatform[];\nextern const BehaviorScript bhvJRBFloatingPlatform[];\nextern const BehaviorScript bhvArrowLift[];\nextern const BehaviorScript bhvOrangeNumber[];\nextern const BehaviorScript bhvMantaRay[];\nextern const BehaviorScript bhvFallingPillar[];\nextern const BehaviorScript bhvFallingPillarHitbox[];\nextern const BehaviorScript bhvPillarBase[];\nextern const BehaviorScript bhvJRBFloatingBox[];\nextern const BehaviorScript bhvDecorativePendulum[];\nextern const BehaviorScript bhvTreasureChestsShip[];\nextern const BehaviorScript bhvTreasureChestsJRB[];\nextern const BehaviorScript bhvTreasureChestsDDD[];\nextern const BehaviorScript bhvTreasureChestBottom[];\nextern const BehaviorScript bhvTreasureChestTop[];\nextern const BehaviorScript bhvMips[];\nextern const BehaviorScript bhvYoshi[];\nextern const BehaviorScript bhvKoopa[];\nextern const BehaviorScript bhvKoopaRaceEndpoint[];\nextern const BehaviorScript bhvKoopaFlag[];\nextern const BehaviorScript bhvPokey[];\nextern const BehaviorScript bhvPokeyBodyPart[];\nextern const BehaviorScript bhvSwoop[];\nextern const BehaviorScript bhvFlyGuy[];\nextern const BehaviorScript bhvGoomba[];\nextern const BehaviorScript bhvGoombaTripletSpawner[];\nextern const BehaviorScript bhvChainChomp[];\nextern const BehaviorScript bhvChainChompChainPart[];\nextern const BehaviorScript bhvWoodenPost[];\nextern const BehaviorScript bhvChainChompGate[];\nextern const BehaviorScript bhvWigglerHead[];\nextern const BehaviorScript bhvWigglerBody[];\nextern const BehaviorScript bhvEnemyLakitu[];\nextern const BehaviorScript bhvCameraLakitu[];\nextern const BehaviorScript bhvCloud[];\nextern const BehaviorScript bhvCloudPart[];\nextern const BehaviorScript bhvSpiny[];\nextern const BehaviorScript bhvMontyMole[];\nextern const BehaviorScript bhvMontyMoleHole[];\nextern const BehaviorScript bhvMontyMoleRock[];\nextern const BehaviorScript bhvPlatformOnTrack[];\nextern const BehaviorScript bhvTrackBall[];\nextern const BehaviorScript bhvSeesawPlatform[];\nextern const BehaviorScript bhvFerrisWheelAxle[];\nextern const BehaviorScript bhvFerrisWheelPlatform[];\nextern const BehaviorScript bhvWaterBombSpawner[];\nextern const BehaviorScript bhvWaterBomb[];\nextern const BehaviorScript bhvWaterBombShadow[];\nextern const BehaviorScript bhvTTCRotatingSolid[];\nextern const BehaviorScript bhvTTCPendulum[];\nextern const BehaviorScript bhvTTCTreadmill[];\nextern const BehaviorScript bhvTTCMovingBar[];\nextern const BehaviorScript bhvTTCCog[];\nextern const BehaviorScript bhvTTCPitBlock[];\nextern const BehaviorScript bhvTTCElevator[];\nextern const BehaviorScript bhvTTC2DRotator[];\nextern const BehaviorScript bhvTTCSpinner[];\nextern const BehaviorScript bhvMrBlizzard[];\nextern const BehaviorScript bhvMrBlizzardSnowball[];\nextern const BehaviorScript bhvSlidingPlatform2[];\nextern const BehaviorScript bhvOctagonalPlatformRotating[];\nextern const BehaviorScript bhvAnimatesOnFloorSwitchPress[];\nextern const BehaviorScript bhvActivatedBackAndForthPlatform[];\nextern const BehaviorScript bhvRecoveryHeart[];\nextern const BehaviorScript bhvWaterBombCannon[];\nextern const BehaviorScript bhvCannonBarrelBubbles[];\nextern const BehaviorScript bhvUnagi[];\nextern const BehaviorScript bhvUnagiSubobject[];\nextern const BehaviorScript bhvDorrie[];\nextern const BehaviorScript bhvHauntedChair[];\nextern const BehaviorScript bhvMadPiano[];\nextern const BehaviorScript bhvFlyingBookend[];\nextern const BehaviorScript bhvBookendSpawn[];\nextern const BehaviorScript bhvHauntedBookshelfManager[];\nextern const BehaviorScript bhvBookSwitch[];\nextern const BehaviorScript bhvFirePiranhaPlant[];\nextern const BehaviorScript bhvSmallPiranhaFlame[];\nextern const BehaviorScript bhvFireSpitter[];\nextern const BehaviorScript bhvFlyguyFlame[];\nextern const BehaviorScript bhvSnufit[];\nextern const BehaviorScript bhvSnufitBalls[];\nextern const BehaviorScript bhvHorizontalGrindel[];\nextern const BehaviorScript bhvEyerokBoss[];\nextern const BehaviorScript bhvEyerokHand[];\nextern const BehaviorScript bhvKlepto[];\nextern const BehaviorScript bhvBird[];\nextern const BehaviorScript bhvRacingPenguin[];\nextern const BehaviorScript bhvPenguinRaceFinishLine[];\nextern const BehaviorScript bhvPenguinRaceShortcutCheck[];\nextern const BehaviorScript bhvCoffinSpawner[];\nextern const BehaviorScript bhvCoffin[];\nextern const BehaviorScript bhvClamShell[];\nextern const BehaviorScript bhvSkeeter[];\nextern const BehaviorScript bhvSkeeterWave[];\nextern const BehaviorScript bhvSwingPlatform[];\nextern const BehaviorScript bhvDonutPlatformSpawner[];\nextern const BehaviorScript bhvDonutPlatform[];\nextern const BehaviorScript bhvDDDPole[];\nextern const BehaviorScript bhvRedCoinStarMarker[];\nextern const BehaviorScript bhvTripletButterfly[];\nextern const BehaviorScript bhvBubba[];\nextern const BehaviorScript bhvBeginningLakitu[];\nextern const BehaviorScript bhvBeginningPeach[];\nextern const BehaviorScript bhvEndBirds1[];\nextern const BehaviorScript bhvEndBirds2[];\nextern const BehaviorScript bhvIntroScene[];\nextern const BehaviorScript bhvUnusedFakeStar[];\n\n#endif // BEHAVIOR_DATA_H\n"
  },
  {
    "path": "include/command_macros_base.h",
    "content": "#ifndef COMMAND_MACROS_BASE_H\n#define COMMAND_MACROS_BASE_H\n\n#include \"platform_info.h\"\n\n#if IS_BIG_ENDIAN\n#if IS_64_BIT\n#define CMD_BBBB(a, b, c, d) ((uintptr_t)(_SHIFTL(a, 24, 8) | _SHIFTL(b, 16, 8) | _SHIFTL(c, 8, 8) | _SHIFTL(d, 0, 8)) << 32)\n#define CMD_BBH(a, b, c) ((uintptr_t)(_SHIFTL(a, 24, 8) | _SHIFTL(b, 16, 8) | _SHIFTL(c, 0, 16)) << 32)\n#define CMD_HH(a, b) ((uintptr_t)(_SHIFTL(a, 16, 16) | _SHIFTL(b, 0, 16)) << 32)\n#define CMD_W(a) ((uintptr_t)(a) << 32)\n#else\n#define CMD_BBBB(a, b, c, d) (_SHIFTL(a, 24, 8) | _SHIFTL(b, 16, 8) | _SHIFTL(c, 8, 8) | _SHIFTL(d, 0, 8))\n#define CMD_BBH(a, b, c) (_SHIFTL(a, 24, 8) | _SHIFTL(b, 16, 8) | _SHIFTL(c, 0, 16))\n#define CMD_HH(a, b) (_SHIFTL(a, 16, 16) | _SHIFTL(b, 0, 16))\n#define CMD_W(a) (a)\n#endif\n#else\n#define CMD_BBBB(a, b, c, d) (_SHIFTL(a, 0, 8) | _SHIFTL(b, 8, 8) | _SHIFTL(c, 16, 8) | _SHIFTL(d, 24, 8))\n#define CMD_BBH(a, b, c) (_SHIFTL(a, 0, 8) | _SHIFTL(b, 8, 8) | _SHIFTL(c, 16, 16))\n#define CMD_HH(a, b) (_SHIFTL(a, 0, 16) | _SHIFTL(b, 16, 16))\n#define CMD_W(a) (a)\n#endif\n#define CMD_PTR(a) ((uintptr_t)(a))\n\n#define CMD_HHHHHH(a, b, c, d, e, f) CMD_HH(a, b), CMD_HH(c, d), CMD_HH(e, f)\n\n#endif // COMMAND_MACROS_BASE_H\n"
  },
  {
    "path": "include/config.h",
    "content": "#ifndef CONFIG_H\n#define CONFIG_H\n\n/**\n * @file config.h\n * A catch-all file for configuring various bugfixes and other settings\n * (maybe eventually) in SM64\n */\n\n// Bug Fixes\n// --| Post-JP Version Nintendo Bug Fixes\n/// Fixes bug where obtaining over 999 coins sets the number of lives to 999 (or -25)\n#define BUGFIX_MAX_LIVES (0 || VERSION_US || VERSION_EU || VERSION_SH || VERSION_CN)\n/// Fixes bug where the Boss music won't fade out after defeating King Bob-omb\n#define BUGFIX_KING_BOB_OMB_FADE_MUSIC (0 || VERSION_US || VERSION_EU || VERSION_SH || VERSION_CN)\n/// Fixes bug in Bob-omb Battlefield where entering a warp stops the Koopa race music\n#define BUGFIX_KOOPA_RACE_MUSIC (0 || VERSION_US || VERSION_EU || VERSION_SH || VERSION_CN)\n/// Fixes bug where Piranha Plants do not reset their action state when the\n/// player exits their activation radius.\n#define BUGFIX_PIRANHA_PLANT_STATE_RESET (0 || VERSION_US || VERSION_EU || VERSION_SH || VERSION_CN)\n/// Fixes bug where sleeping Piranha Plants damage players that bump into them\n#define BUGFIX_PIRANHA_PLANT_SLEEP_DAMAGE (0 || VERSION_US || VERSION_SH || VERSION_CN)\n/// Fixes bug where it shows a star when you grab a key in bowser battle stages\n#define BUGFIX_STAR_BOWSER_KEY (0 || VERSION_US || VERSION_EU || VERSION_SH || VERSION_CN)\n/// Fixes bug that enables Mario in time stop even if is not ready to speak\n#define BUGFIX_DIALOG_TIME_STOP (0 || VERSION_US || VERSION_EU || VERSION_SH || VERSION_CN)\n/// Fixes bug that causes Mario to still collide with Bowser in BitS after his defeat\n#define BUGFIX_BOWSER_COLLIDE_BITS_DEAD (0 || VERSION_US || VERSION_EU || VERSION_SH || VERSION_CN)\n/// Fixes bug where Bowser wouldn't reset his speed when fallen off (and adds missing checks)\n#define BUGFIX_BOWSER_FALLEN_OFF_STAGE (0 || VERSION_US || VERSION_EU || VERSION_SH || VERSION_CN)\n/// Fixes bug where Bowser would look weird while fading out\n#define BUGFIX_BOWSER_FADING_OUT (0 || VERSION_US || VERSION_EU || VERSION_SH || VERSION_CN)\n\n// Support Rumble Pak\n#define ENABLE_RUMBLE (0 || VERSION_SH || VERSION_CN)\n\n// Screen Size Defines\n#define SCREEN_WIDTH 320\n#define SCREEN_HEIGHT 240\n\n// Stack Size Defines\n#define IDLE_STACKSIZE 0x800\n#define STACKSIZE 0x2000\n#define UNUSED_STACKSIZE 0x1400\n\n// Border Height Define for NTSC Versions\n#ifdef TARGET_N64\n#ifndef VERSION_EU\n#define BORDER_HEIGHT 8\n#else\n#define BORDER_HEIGHT 1\n#endif\n#else\n// What's the point of having a border?\n#define BORDER_HEIGHT 0\n#endif\n\n#endif // CONFIG_H\n"
  },
  {
    "path": "include/course_table.h",
    "content": "#ifndef COURSE_TABLE_H\n#define COURSE_TABLE_H\n\n// Start of the 3 cap courses in a row.\n#define COURSE_CAP_COURSES COURSE_COTMC\n\n#define DEFINE_COURSE(courseenum, _1) courseenum,\n#define DEFINE_COURSES_END() \\\n    COURSE_BONUS_STAGES, \\\n    COURSE_STAGES_MAX = COURSE_BONUS_STAGES - 1, \\\n    COURSE_STAGES_COUNT = COURSE_STAGES_MAX,\n\n#define DEFINE_BONUS_COURSE(courseenum, _1) courseenum,\n\nenum CourseNum {\n    #include \"levels/course_defines.h\"\n    COURSE_END, // To mark end + 1 for marking max and count.\n                // TODO: clean this up. This is still bad. Which\n                // one is clearer? Need to get rid of one of these.\n    COURSE_MAX = COURSE_END - 1,\n    COURSE_COUNT = COURSE_MAX,\n    COURSE_MIN = COURSE_NONE + 1\n};\n\n#undef DEFINE_COURSE\n#undef DEFINE_COURSES_END\n#undef DEFINE_BONUS_COURSE\n\n#define COURSE_IS_MAIN_COURSE(cmd) ((cmd) >= COURSE_MIN && (cmd) <= COURSE_STAGES_MAX)\n#define COURSE_NUM_TO_INDEX(cmd) ((cmd) - 1)\n\n#endif // COURSE_TABLE_H\n"
  },
  {
    "path": "include/dialog_ids.h",
    "content": "#ifndef DIALOG_IDS_H\n#define DIALOG_IDS_H\n\nenum DialogID {\n    DIALOG_NONE = -1,\n    DIALOG_000,\n    DIALOG_001,\n    DIALOG_002,\n    DIALOG_003,\n    DIALOG_004,\n    DIALOG_005,\n    DIALOG_006,\n    DIALOG_007,\n    DIALOG_008,\n    DIALOG_009,\n    DIALOG_010,\n    DIALOG_011,\n    DIALOG_012,\n    DIALOG_013,\n    DIALOG_014,\n    DIALOG_015,\n    DIALOG_016,\n    DIALOG_017,\n    DIALOG_018,\n    DIALOG_019,\n    DIALOG_020,\n    DIALOG_021,\n    DIALOG_022,\n    DIALOG_023,\n    DIALOG_024,\n    DIALOG_025,\n    DIALOG_026,\n    DIALOG_027,\n    DIALOG_028,\n    DIALOG_029,\n    DIALOG_030,\n    DIALOG_031,\n    DIALOG_032,\n    DIALOG_033,\n    DIALOG_034,\n    DIALOG_035,\n    DIALOG_036,\n    DIALOG_037,\n    DIALOG_038,\n    DIALOG_039,\n    DIALOG_040,\n    DIALOG_041,\n    DIALOG_042,\n    DIALOG_043,\n    DIALOG_044,\n    DIALOG_045,\n    DIALOG_046,\n    DIALOG_047,\n    DIALOG_048,\n    DIALOG_049,\n    DIALOG_050,\n    DIALOG_051,\n    DIALOG_052,\n    DIALOG_053,\n    DIALOG_054,\n    DIALOG_055,\n    DIALOG_056,\n    DIALOG_057,\n    DIALOG_058,\n    DIALOG_059,\n    DIALOG_060,\n    DIALOG_061,\n    DIALOG_062,\n    DIALOG_063,\n    DIALOG_064,\n    DIALOG_065,\n    DIALOG_066,\n    DIALOG_067,\n    DIALOG_068,\n    DIALOG_069,\n    DIALOG_070,\n    DIALOG_071,\n    DIALOG_072,\n    DIALOG_073,\n    DIALOG_074,\n    DIALOG_075,\n    DIALOG_076,\n    DIALOG_077,\n    DIALOG_078,\n    DIALOG_079,\n    DIALOG_080,\n    DIALOG_081,\n    DIALOG_082,\n    DIALOG_083,\n    DIALOG_084,\n    DIALOG_085,\n    DIALOG_086,\n    DIALOG_087,\n    DIALOG_088,\n    DIALOG_089,\n    DIALOG_090,\n    DIALOG_091,\n    DIALOG_092,\n    DIALOG_093,\n    DIALOG_094,\n    DIALOG_095,\n    DIALOG_096,\n    DIALOG_097,\n    DIALOG_098,\n    DIALOG_099,\n    DIALOG_100,\n    DIALOG_101,\n    DIALOG_102,\n    DIALOG_103,\n    DIALOG_104,\n    DIALOG_105,\n    DIALOG_106,\n    DIALOG_107,\n    DIALOG_108,\n    DIALOG_109,\n    DIALOG_110,\n    DIALOG_111,\n    DIALOG_112,\n    DIALOG_113,\n    DIALOG_114,\n    DIALOG_115,\n    DIALOG_116,\n    DIALOG_117,\n    DIALOG_118,\n    DIALOG_119,\n    DIALOG_120,\n    DIALOG_121,\n    DIALOG_122,\n    DIALOG_123,\n    DIALOG_124,\n    DIALOG_125,\n    DIALOG_126,\n    DIALOG_127,\n    DIALOG_128,\n    DIALOG_129,\n    DIALOG_130,\n    DIALOG_131,\n    DIALOG_132,\n    DIALOG_133,\n    DIALOG_134,\n    DIALOG_135,\n    DIALOG_136,\n    DIALOG_137,\n    DIALOG_138,\n    DIALOG_139,\n    DIALOG_140,\n    DIALOG_141,\n    DIALOG_142,\n    DIALOG_143,\n    DIALOG_144,\n    DIALOG_145,\n    DIALOG_146,\n    DIALOG_147,\n    DIALOG_148,\n    DIALOG_149,\n    DIALOG_150,\n    DIALOG_151,\n    DIALOG_152,\n    DIALOG_153,\n    DIALOG_154,\n    DIALOG_155,\n    DIALOG_156,\n    DIALOG_157,\n    DIALOG_158,\n    DIALOG_159,\n    DIALOG_160,\n    DIALOG_161,\n    DIALOG_162,\n    DIALOG_163,\n    DIALOG_164,\n    DIALOG_165,\n    DIALOG_166,\n    DIALOG_167,\n    DIALOG_168,\n    DIALOG_169,\n    DIALOG_COUNT\n};\n\n#endif // DIALOG_IDS_H\n"
  },
  {
    "path": "include/eu_translation.h",
    "content": "#ifndef EU_TRANSLATION_H\n#define EU_TRANSLATION_H\n\n// EU changes most text to arrays for each language. This define allows these\n// differences to be combined.\n#ifdef VERSION_EU\n    #define LANGUAGE_ARRAY(cmd) cmd[LANGUAGE_FUNCTION]\n#else\n    #define LANGUAGE_ARRAY(cmd) cmd\n#endif\n\nextern void *dialog_table_eu_en[];\nextern void *course_name_table_eu_en[];\nextern void *act_name_table_eu_en[];\n\nextern void *dialog_table_eu_fr[];\nextern void *course_name_table_eu_fr[];\nextern void *act_name_table_eu_fr[];\n\nextern void *dialog_table_eu_de[];\nextern void *course_name_table_eu_de[];\nextern void *act_name_table_eu_de[];\n\n#endif // EU_TRANSLATION_H\n"
  },
  {
    "path": "include/geo_commands.h",
    "content": "#ifndef GEO_COMMANDS_H\n#define GEO_COMMANDS_H\n\n#include \"command_macros_base.h\"\n\n#include \"game/shadow.h\"\n#include \"game/object_helpers.h\"\n#include \"game/behavior_actions.h\"\n#include \"game/segment2.h\"\n#include \"game/mario_misc.h\"\n#include \"game/mario_actions_cutscene.h\"\n\n// sky background params\n#define BACKGROUND_OCEAN_SKY        0\n#define BACKGROUND_FLAMING_SKY      1\n#define BACKGROUND_UNDERWATER_CITY  2\n#define BACKGROUND_BELOW_CLOUDS     3\n#define BACKGROUND_SNOW_MOUNTAINS   4\n#define BACKGROUND_DESERT           5\n#define BACKGROUND_HAUNTED          6\n#define BACKGROUND_GREEN_SKY        7\n#define BACKGROUND_ABOVE_CLOUDS     8\n#define BACKGROUND_PURPLE_SKY       9\n\n// geo layout macros\n\n/**\n * 0x00: Branch and store return address\n *   0x04: scriptTarget, segment address of geo layout\n */\n#define GEO_BRANCH_AND_LINK(scriptTarget) \\\n    CMD_BBH(0x00, 0x00, 0x0000), \\\n    CMD_PTR(scriptTarget)\n\n/**\n * 0x01: Terminate geo layout\n *   0x01-0x03: unused\n */\n#define GEO_END() \\\n    CMD_BBH(0x01, 0x00, 0x0000)\n\n/**\n * 0x02: Branch\n *   0x01: if 1, store next geo layout address on stack\n *   0x02-0x03: unused\n *   0x04: scriptTarget, segment address of geo layout\n */\n#define GEO_BRANCH(type, scriptTarget) \\\n    CMD_BBH(0x02, type, 0x0000), \\\n    CMD_PTR(scriptTarget)\n\n/**\n * 0x03: Return from branch\n *   0x01-0x03: unused\n */\n#define GEO_RETURN() \\\n    CMD_BBH(0x03, 0x00, 0x0000)\n\n/**\n * 0x04: Open node\n *   0x01-0x03: unused\n */\n#define GEO_OPEN_NODE() \\\n    CMD_BBH(0x04, 0x00, 0x0000)\n\n/**\n * 0x05: Close node\n *   0x01-0x03: unused\n */\n#define GEO_CLOSE_NODE() \\\n    CMD_BBH(0x05, 0x00, 0x0000)\n\n/**\n * 0x06: Register the current node at the given index in the gGeoViews array\n *   0x01: unused\n *   0x02: s16 index\n */\n#define GEO_ASSIGN_AS_VIEW(index) \\\n    CMD_BBH(0x06, 0x00, index)\n\n/**\n * 0x07: Update current scene graph node flags\n *   0x01: u8 operation (0 = reset, 1 = set, 2 = clear)\n *   0x02: s16 bits\n */\n#define GEO_UPDATE_NODE_FLAGS(operation, flagBits) \\\n    CMD_BBH(0x07, operation, flagBits)\n\n/**\n * 0x08: Create screen area scene graph node\n *   0x01: unused\n *   0x02: s16 num entries (+2) to allocate\n *   0x04: s16 x\n *   0x06: s16 y\n *   0x08: s16 width\n *   0x0A: s16 height\n */\n#define GEO_NODE_SCREEN_AREA(numEntries, x, y, width, height) \\\n    CMD_BBH(0x08, 0x00, numEntries), \\\n    CMD_HH(x, y), \\\n    CMD_HH(width, height)\n\n/**\n * 0x09: Create orthographic projection scene graph node\n *   0x02: s16 scale as percentage\n */\n#define GEO_NODE_ORTHO(scale) \\\n    CMD_BBH(0x09, 0x00, scale)\n\n/**\n * 0x0A: Create camera frustum scene graph node\n *   0x01: u8  if nonzero, enable function field\n *   0x02: s16 field of view\n *   0x04: s16 near\n *   0x06: s16 far\n *   0x08: [GraphNodeFunc function]\n*/\n#define GEO_CAMERA_FRUSTUM(fov, near, far) \\\n    CMD_BBH(0x0A, 0x00, fov), \\\n    CMD_HH(near, far)\n#define GEO_CAMERA_FRUSTUM_WITH_FUNC(fov, near, far, func) \\\n    CMD_BBH(0x0A, 0x01, fov), \\\n    CMD_HH(near, far), \\\n    CMD_PTR(func)\n\n/**\n * 0x0B: Create a root scene graph node\n *   0x01-0x03: unused\n */\n#define GEO_NODE_START() \\\n    CMD_BBH(0x0B, 0x00, 0x0000)\n\n/**\n * 0x0C: Create zbuffer-toggling scene graph node\n *   0x01: u8 enableZBuffer (1 = on, 0 = off)\n *   0x02-0x03: unused\n */\n#define GEO_ZBUFFER(enable) \\\n    CMD_BBH(0x0C, enable, 0x0000)\n\n/**\n * 0x0D: Create render range scene graph node\n *   0x01-0x03: unused\n *   0x04: s16 minDistance\n *   0x06: s16 maxDistance\n */\n#define GEO_RENDER_RANGE(minDistance, maxDistance) \\\n    CMD_BBH(0x0D, 0x00, 0x0000), \\\n    CMD_HH(minDistance, maxDistance)\n\n/**\n * 0x0E: Create switch-case scene graph node\n *   0x01: unused\n *   0x02: s16 numCases\n *   0x04: GraphNodeFunc caseSelectorFunc\n */\n#define GEO_SWITCH_CASE(count, function) \\\n    CMD_BBH(0x0E, 0x00, count), \\\n    CMD_PTR(function)\n\n/**\n * 0x0F: Create a camera scene graph node.\n *   0x01: unused\n *   0x02: s16 camera type\n *   0x04: s16 posX\n *   0x06: s16 posY\n *   0x08: s16 posZ\n *   0x0A: s16 focusX\n *   0x0C: s16 focusY\n *   0x0E: s16 focusZ\n *   0x10: GraphNodeFunc function\n */\n#define GEO_CAMERA(type, x1, y1, z1, x2, y2, z2, function) \\\n    CMD_BBH(0x0F, 0x00, type), \\\n    CMD_HHHHHH(x1, y1, z1, x2, y2, z2), \\\n    CMD_PTR(function)\n\n/**\n * 0x10: Create translation & rotation scene graph node with optional display list\n * Four different versions of 0x10\n *   cmd+0x01: u8 params\n *     0b1000_0000: if set, enable displayList field and drawingLayer\n *     0b0111_0000: fieldLayout (determines how rest of data is formatted\n *     0b0000_1111: drawingLayer\n *\n *   fieldLayout = 0: Translate & Rotate\n *     0x04: s16 xTranslation\n *     0x06: s16 yTranslation\n *     0x08: s16 zTranslation\n *     0x0A: s16 xRotation\n *     0x0C: s16 yRotation\n *     0x0E: s16 zRotation\n *     0x10: [u32 displayList: if MSbit of params set, display list segmented address]\n */\n#define GEO_TRANSLATE_ROTATE(layer, tx, ty, tz, rx, ry, rz) \\\n    CMD_BBH(0x10, (0x00 | layer), 0x0000), \\\n    CMD_HHHHHH(tx, ty, tz, rx, ry, rz)\n#define GEO_TRANSLATE_ROTATE_WITH_DL(layer, tx, ty, tz, rx, ry, rz, displayList) \\\n    CMD_BBH(0x10, (0x00 | layer | 0x80), 0x0000), \\\n    CMD_HHHHHH(tx, ty, tz, rx, ry, rz), \\\n    CMD_PTR(displayList)\n\n/**\n *   fieldLayout = 1: Translate\n *     0x02: s16 xTranslation\n *     0x04: s16 yTranslation\n *     0x06: s16 zTranslation\n *     0x08: [u32 displayList: if MSbit of params set, display list segmented address]\n */\n#define GEO_TRANSLATE(layer, tx, ty, tz) \\\n    CMD_BBH(0x10, (0x10 | layer), tx), \\\n    CMD_HH(ty, tz)\n#define GEO_TRANSLATE_WITH_DL(layer, tx, ty, tz, displayList) \\\n    CMD_BBH(0x10, (0x10 | layer | 0x80), tx), \\\n    CMD_HH(ty, tz), \\\n    CMD_PTR(displayList)\n\n/**\n *   fieldLayout = 2: Rotate\n *     0x02: s16 xRotation\n *     0x04: s16 yRotation\n *     0x06: s16 zRotation\n *     0x08: [u32 displayList: if MSbit of params set, display list segmented address]\n */\n#define GEO_ROTATE(layer, rx, ry, rz) \\\n    CMD_BBH(0x10, (0x20 | layer), rx), \\\n    CMD_HH(ry, rz)\n#define GEO_ROTATE_WITH_DL(layer, rx, ry, rz, displayList) \\\n    CMD_BBH(0x10, (0x20 | layer | 0x80), rx), \\\n    CMD_HH(ry, rz), \\\n    CMD_PTR(displayList)\n\n/**\n *   fieldLayout = 3: Rotate Y\n *     0x02: s16 yRotation\n *     0x04: [u32 displayList: if MSbit of params set, display list segmented address]\n */\n#define GEO_ROTATE_Y(layer, ry) \\\n    CMD_BBH(0x10, (0x30 | layer), ry)\n#define GEO_ROTATE_Y_WITH_DL(layer, ry, displayList) \\\n    CMD_BBH(0x10, (0x30 | layer | 0x80), ry), \\\n    CMD_PTR(displayList)\n\n/**\n * 0x11: Create translation scene graph node with optional display list\n *   0x01: u8 params\n *     0b1000_0000: if set, enable displayList field and drawingLayer\n *     0b0000_1111: drawingLayer\n *   0x02: s16 translationX\n *   0x04: s16 translationY\n *   0x06: s16 translationZ\n *   0x08: [u32 displayList: if MSbit of params set, display list segmented address]\n */\n#define GEO_TRANSLATE_NODE(layer, ux, uy, uz) \\\n    CMD_BBH(0x11, layer, ux), \\\n    CMD_HH(uy, uz)\n#define GEO_TRANSLATE_NODE_WITH_DL(layer, ux, uy, uz, displayList) \\\n    CMD_BBH(0x11, (layer | 0x80), ux), \\\n    CMD_HH(uy, uz), \\\n    CMD_PTR(displayList)\n\n/**\n * 0x12: Create rotation scene graph node with optional display list\n *   0x01: u8 params\n *      0b1000_0000: if set, enable displayList field and drawingLayer\n *      0b0000_1111: drawingLayer\n *   0x02: s16 rotationX\n *   0x04: s16 rotationY\n *   0x06: s16 rotationZ\n *   0x08: [u32 displayList: if MSbit of params set, display list segmented address]\n */\n#define GEO_ROTATION_NODE(layer, ux, uy, uz) \\\n    CMD_BBH(0x12, layer, ux), \\\n    CMD_HH(uy, uz)\n#define GEO_ROTATION_NODE_WITH_DL(layer, ux, uy, uz, displayList) \\\n    CMD_BBH(0x12, (layer | 0x80), ux), \\\n    CMD_HH(uy, uz), \\\n    CMD_PTR(displayList)\n\n/**\n * 0x13: Create a scene graph node that is rotated by the object's animation.\n *   0x01: u8 drawingLayer\n *   0x02: s16 xTranslation\n *   0x04: s16 yTranslation\n *   0x06: s16 zTranslation\n *   0x08: u32 displayList: dislay list segmented address\n */\n#define GEO_ANIMATED_PART(layer, x, y, z, displayList) \\\n    CMD_BBH(0x13, layer, x), \\\n    CMD_HH(y, z), \\\n    CMD_PTR(displayList)\n\n/**\n * 0x14: Create billboarding node with optional display list\n *   0x01: u8 params\n *      0b1000_0000: if set, enable displayList field and drawingLayer\n *      0b0000_1111: drawingLayer\n *   0x02: s16 xTranslation\n *   0x04: s16 yTranslation\n *   0x06: s16 zTranslation\n *   0x08: [u32 displayList: if MSbit of params is set, display list segmented address]\n */\n#define GEO_BILLBOARD_WITH_PARAMS(layer, tx, ty, tz) \\\n    CMD_BBH(0x14, layer, tx), \\\n    CMD_HH(ty, tz)\n#define GEO_BILLBOARD_WITH_PARAMS_AND_DL(layer, tx, ty, tz, displayList) \\\n    CMD_BBH(0x14, (layer | 0x80), tx), \\\n    CMD_HH(ty, tz), \\\n    CMD_PTR(displayList)\n#define GEO_BILLBOARD() \\\n     GEO_BILLBOARD_WITH_PARAMS(0, 0, 0, 0)\n\n/**\n * 0x15: Create plain display list scene graph node\n *   0x01: u8 drawingLayer\n *   0x02-0x03: unused\n *   0x04: u32 displayList: display list segmented address\n */\n#define GEO_DISPLAY_LIST(layer, displayList) \\\n    CMD_BBH(0x15, layer, 0x0000), \\\n    CMD_PTR(displayList)\n\n/**\n * 0x16: Create shadow scene graph node\n *   0x01: unused\n *   0x02: s16 shadowType (cast to u8)\n *   0x04: s16 shadowSolidity (cast to u8)\n *   0x06: s16 shadowScale\n */\n#define GEO_SHADOW(type, solidity, scale) \\\n    CMD_BBH(0x16, 0x00, type), \\\n    CMD_HH(solidity, scale)\n\n/**\n * 0x17: Create render object scene graph node\n *   0x01-0x03: unused\n */\n#define GEO_RENDER_OBJ() \\\n    CMD_BBH(0x17, 0x00, 0x0000)\n\n/**\n * 0x18: Create dynamically generated displaylist scene graph node\n *   0x01: unused\n *   0x02: s16 parameter\n *   0x04: GraphNodeFunc function\n */\n#define GEO_ASM(param, function) \\\n    CMD_BBH(0x18, 0x00, param), \\\n    CMD_PTR(function)\n\n/**\n * 0x19: Create background scene graph node\n *   0x02: s16 background: background ID, or RGBA5551 color if backgroundFunc is null\n *   0x04: GraphNodeFunc backgroundFunc\n */\n#define GEO_BACKGROUND(background, function) \\\n    CMD_BBH(0x19, 0x00, background), \\\n    CMD_PTR(function)\n#define GEO_BACKGROUND_COLOR(background) \\\n     GEO_BACKGROUND(background, NULL)\n\n/**\n * 0x1A: No operation\n */\n#define GEO_NOP_1A() \\\n    CMD_BBH(0x1A, 0x00, 0x0000), \\\n    CMD_HH(0x0000, 0x0000)\n\n/**\n * 0x1B: Copy the shared children from an object parent node from a specific view\n * to a newly created object parent.\n *   0x02: s16 index of array\n */\n#define GEO_COPY_VIEW(index) \\\n    CMD_BBH(0x1B, 0x00, index)\n\n/**\n * 0x1C: Create a held object scene graph node\n *  cmd+0x01: u8 unused\n *  cmd+0x02: s16 offsetX\n *  cmd+0x04: s16 offsetY\n *  cmd+0x06: s16 offsetZ\n *  cmd+0x08: GraphNodeFunc nodeFunc\n */\n#define GEO_HELD_OBJECT(param, ux, uy, uz, nodeFunc) \\\n    CMD_BBH(0x1C, param, ux), \\\n    CMD_HH(uy, uz), \\\n    CMD_PTR(nodeFunc)\n\n/**\n * 0x1D: Create scale scene graph node with optional display list\n *   0x01: u8 params\n *     0b1000_0000: if set, enable displayList field and drawingLayer\n *     0b0000_1111: drawingLayer\n *   0x02-0x03: unused\n *   0x04: u32 scale (0x10000 = 1.0)\n *   0x08: [u32 displayList: if MSbit of params is set, display list segment address]\n */\n#define GEO_SCALE(layer, scale) \\\n    CMD_BBH(0x1D, layer, 0x0000), \\\n    CMD_W(scale)\n#define GEO_SCALE_WITH_DL(layer, scale, displayList) \\\n    CMD_BBH(0x1D, (layer | 0x80), 0x0000), \\\n    CMD_W(scale), \\\n    CMD_PTR(displayList)\n\n/**\n * 0x1E: No operation\n */\n#define GEO_NOP_1E() \\\n    CMD_BBH(0x1E, 0x00, 0x0000), \\\n    CMD_HH(0x0000, 0x0000)\n\n/**\n * 0x1F: No operation\n */\n#define GEO_NOP_1F() \\\n    CMD_BBH(0x1F, 0x00, 0x0000), \\\n    CMD_HH(0x0000, 0x0000), \\\n    CMD_HH(0x0000, 0x0000), \\\n    CMD_HH(0x0000, 0x0000)\n\n/**\n * 0x20: Create a scene graph node that specifies for an object the radius that\n * is used for frustum culling.\n *   0x01: unused\n *   0x02: s16 cullingRadius\n */\n#define GEO_CULLING_RADIUS(cullingRadius) \\\n    CMD_BBH(0x20, 0x00, cullingRadius)\n\n#endif // GEO_COMMANDS_H\n"
  },
  {
    "path": "include/gfx_dimensions.h",
    "content": "#ifndef GFX_DIMENSIONS_H\n#define GFX_DIMENSIONS_H\n\n/*\n\nThis file is for ports that want to enable widescreen.\nChange the definitions to the following:\n\n#include <math.h>\n#define GFX_DIMENSIONS_FROM_LEFT_EDGE(v) (SCREEN_WIDTH / 2 - SCREEN_HEIGHT / 2 * [current_aspect_ratio] + (v))\n#define GFX_DIMENSIONS_FROM_RIGHT_EDGE(v) (SCREEN_WIDTH / 2 + SCREEN_HEIGHT / 2 * [current_aspect_ratio] - (v))\n#define GFX_DIMENSIONS_RECT_FROM_LEFT_EDGE(v) ((int)floorf(GFX_DIMENSIONS_FROM_LEFT_EDGE(v)))\n#define GFX_DIMENSIONS_RECT_FROM_RIGHT_EDGE(v) ((int)ceilf(GFX_DIMENSIONS_FROM_RIGHT_EDGE(v)))\n#define GFX_DIMENSIONS_ASPECT_RATIO [current_aspect_ratio]\n\nThe idea is that SCREEN_WIDTH and SCREEN_HEIGHT are still hardcoded to 320 and 240, and that\nx=0 lies at where a 4:3 left edge would be. On 16:9 widescreen, the left edge is hence at -53.33.\n\nTo get better accuracy, consider using floats instead of shorts for coordinates in Vertex and Matrix structures.\n\nThe conversion to integers above is for RECT commands which naturally only accept integer values.\nNote that RECT commands must be enhanced to support negative coordinates with this modification.\n\n*/\n\n#ifdef WIDESCREEN\n#error \"widescreen not implemented\"\n#else\n\n#define GFX_DIMENSIONS_FROM_LEFT_EDGE(v) (v)\n#define GFX_DIMENSIONS_FROM_RIGHT_EDGE(v) (SCREEN_WIDTH - (v))\n#define GFX_DIMENSIONS_RECT_FROM_LEFT_EDGE(v) (v)\n#define GFX_DIMENSIONS_RECT_FROM_RIGHT_EDGE(v) (SCREEN_WIDTH - (v))\n#define GFX_DIMENSIONS_ASPECT_RATIO (4.0f / 3.0f)\n\n#endif\n\n// If screen is taller than it is wide, radius should be equal to SCREEN_HEIGHT since we scale horizontally\n#define GFX_DIMENSIONS_FULL_RADIUS (SCREEN_HEIGHT * (GFX_DIMENSIONS_ASPECT_RATIO > 1 ? GFX_DIMENSIONS_ASPECT_RATIO : 1))\n\n#endif // GFX_DIMENSIONS_H\n"
  },
  {
    "path": "include/helper_macros.h",
    "content": "#ifndef HELPER_MACROS_H\n#define HELPER_MACROS_H\n\n#define LIST_NEXT_ITEM(curItem, type) ((type *)((s32)curItem + sizeof(type)))\n\n#endif // HELPER_MACROS_H\n"
  },
  {
    "path": "include/level_commands.h",
    "content": "#ifndef LEVEL_COMMANDS_H\n#define LEVEL_COMMANDS_H\n\n#include \"command_macros_base.h\"\n\n#include \"level_table.h\"\n\n#define OP_AND   0\n#define OP_NAND  1\n#define OP_EQ    2\n#define OP_NEQ   3\n#define OP_LT    4\n#define OP_LEQ   5\n#define OP_GT    6\n#define OP_GEQ   7\n\n#define OP_SET   0\n#define OP_GET   1\n\n#define VAR_CURR_SAVE_FILE_NUM  0\n#define VAR_CURR_COURSE_NUM     1\n#define VAR_CURR_ACT_NUM        2\n#define VAR_CURR_LEVEL_NUM      3\n#define VAR_CURR_AREA_INDEX     4\n\n#define WARP_CHECKPOINT 0x80\n#define WARP_NO_CHECKPOINT 0x00\n\n#define WHIRLPOOL_COND_ALWAYS 0\n#define WHIRLPOOL_COND_BOWSER2_BEATEN 2\n#define WHIRLPOOL_COND_AT_LEAST_SECOND_STAR 3\n\n// Head defines\n#define REGULAR_FACE 0x0002\n#define DIZZY_FACE 0x0003\n\n#ifdef NO_SEGMENTED_MEMORY\n#define EXECUTE(seg, script, scriptEnd, entry) \\\n    CMD_BBH(0x00, 0x10, 0x0000), \\\n    CMD_PTR(NULL), \\\n    CMD_PTR(NULL), \\\n    CMD_PTR(entry)\n\n#define EXIT_AND_EXECUTE(seg, script, scriptEnd, entry) \\\n    CMD_BBH(0x01, 0x10, 0x0000), \\\n    CMD_PTR(NULL), \\\n    CMD_PTR(NULL), \\\n    CMD_PTR(entry)\n#else\n#define EXECUTE(seg, script, scriptEnd, entry) \\\n    CMD_BBH(0x00, 0x10, seg), \\\n    CMD_PTR(script), \\\n    CMD_PTR(scriptEnd), \\\n    CMD_PTR(entry)\n\n#define EXIT_AND_EXECUTE(seg, script, scriptEnd, entry) \\\n    CMD_BBH(0x01, 0x10, seg), \\\n    CMD_PTR(script), \\\n    CMD_PTR(scriptEnd), \\\n    CMD_PTR(entry)\n#endif\n\n#define EXIT() \\\n    CMD_BBH(0x02, 0x04, 0x0000)\n\n#define SLEEP(frames) \\\n    CMD_BBH(0x03, 0x04, frames)\n\n#define SLEEP_BEFORE_EXIT(frames) \\\n    CMD_BBH(0x04, 0x04, frames)\n\n#define JUMP(target) \\\n    CMD_BBH(0x05, 0x08, 0x0000), \\\n    CMD_PTR(target)\n\n#define JUMP_LINK(target) \\\n    CMD_BBH(0x06, 0x08, 0x0000), \\\n    CMD_PTR(target)\n\n#define RETURN() \\\n    CMD_BBH(0x07, 0x04, 0x0000)\n\n#define JUMP_LINK_PUSH_ARG(arg) \\\n    CMD_BBH(0x08, 0x04, arg)\n\n#define JUMP_N_TIMES() \\\n    CMD_BBH(0x09, 0x04, 0x0000)\n\n#define LOOP_BEGIN() \\\n    CMD_BBH(0x0A, 0x04, 0x0000)\n\n#define LOOP_UNTIL(op, arg) \\\n    CMD_BBBB(0x0B, 0x08, op, 0x00), \\\n    CMD_W(arg)\n\n#define JUMP_IF(op, arg, target) \\\n    CMD_BBBB(0x0C, 0x0C, op, 0x00), \\\n    CMD_W(arg), \\\n    CMD_PTR(target)\n\n#define JUMP_LINK_IF(op, arg, target) \\\n    CMD_BBBB(0x0D, 0x0C, op, 0x00), \\\n    CMD_W(arg), \\\n    CMD_PTR(target)\n\n\n#define SKIP_IF(op, arg) \\\n    CMD_BBBB(0x0E, 0x08, op, 0) \\\n    CMD_W(arg)\n\n#define SKIP() \\\n    CMD_BBH(0x0F, 0x04, 0x0000)\n\n#define SKIP_NOP() \\\n    CMD_BBH(0x10, 0x04, 0x0000)\n\n#define CALL(arg, func) \\\n    CMD_BBH(0x11, 0x08, arg), \\\n    CMD_PTR(func)\n\n// Calls func in a loop until it returns nonzero\n#define CALL_LOOP(arg, func) \\\n    CMD_BBH(0x12, 0x08, arg), \\\n    CMD_PTR(func)\n\n#define SET_REG(value) \\\n    CMD_BBH(0x13, 0x04, value)\n\n#define PUSH_POOL() \\\n    CMD_BBH(0x14, 0x04, 0x0000)\n\n#define POP_POOL() \\\n    CMD_BBH(0x15, 0x04, 0x0000)\n\n#ifdef NO_SEGMENTED_MEMORY\n#define FIXED_LOAD(loadAddr, romStart, romEnd) \\\n    CMD_BBH(0x16, 0x10, 0x0000), \\\n    CMD_PTR(NULL), \\\n    CMD_PTR(NULL), \\\n    CMD_PTR(NULL)\n\n#define LOAD_RAW(seg, romStart, romEnd) \\\n    CMD_BBH(0x17, 0x0C, 0x0000), \\\n    CMD_PTR(NULL), \\\n    CMD_PTR(NULL)\n\n#define LOAD_MIO0(seg, romStart, romEnd) \\\n    CMD_BBH(0x18, 0x0C, 0x0000), \\\n    CMD_PTR(NULL), \\\n    CMD_PTR(NULL)\n#else\n#define FIXED_LOAD(loadAddr, romStart, romEnd) \\\n    CMD_BBH(0x16, 0x10, 0x0000), \\\n    CMD_PTR(loadAddr), \\\n    CMD_PTR(romStart), \\\n    CMD_PTR(romEnd)\n\n#define LOAD_RAW(seg, romStart, romEnd) \\\n    CMD_BBH(0x17, 0x0C, seg), \\\n    CMD_PTR(romStart), \\\n    CMD_PTR(romEnd)\n\n#define LOAD_MIO0(seg, romStart, romEnd) \\\n    CMD_BBH(0x18, 0x0C, seg), \\\n    CMD_PTR(romStart), \\\n    CMD_PTR(romEnd)\n#endif\n\n#define LOAD_MARIO_HEAD(sethead) \\\n    CMD_BBH(0x19, 0x04, sethead)\n\n#ifdef NO_SEGMENTED_MEMORY\n#define LOAD_MIO0_TEXTURE(seg, romStart, romEnd) \\\n    CMD_BBH(0x1A, 0x0C, 0x0000), \\\n    CMD_PTR(NULL), \\\n    CMD_PTR(NULL)\n#else\n#define LOAD_MIO0_TEXTURE(seg, romStart, romEnd) \\\n    CMD_BBH(0x1A, 0x0C, seg), \\\n    CMD_PTR(romStart), \\\n    CMD_PTR(romEnd)\n#endif\n\n#define INIT_LEVEL() \\\n    CMD_BBH(0x1B, 0x04, 0x0000)\n\n#define CLEAR_LEVEL() \\\n    CMD_BBH(0x1C, 0x04, 0x0000)\n\n#define ALLOC_LEVEL_POOL() \\\n    CMD_BBH(0x1D, 0x04, 0x0000)\n\n#define FREE_LEVEL_POOL() \\\n    CMD_BBH(0x1E, 0x04, 0x0000)\n\n#define AREA(index, geo) \\\n    CMD_BBBB(0x1F, 0x08, index, 0), \\\n    CMD_PTR(geo)\n\n#define END_AREA() \\\n    CMD_BBH(0x20, 0x04, 0x0000)\n\n#define LOAD_MODEL_FROM_DL(model, dl, layer) \\\n    CMD_BBH(0x21, 0x08, ((layer << 12) | model)), \\\n    CMD_PTR(dl)\n\n#define LOAD_MODEL_FROM_GEO(model, geo) \\\n    CMD_BBH(0x22, 0x08, model), \\\n    CMD_PTR(geo)\n\n// unk8 is float, but doesn't really matter since CMD23 is unused\n#define CMD23(model, unk4, unk8) \\\n    CMD_BBH(0x22, 0x08, model), \\\n    CMD_PTR(unk4), \\\n    CMD_W(unk8)\n\n#define OBJECT_WITH_ACTS(model, posX, posY, posZ, angleX, angleY, angleZ, bhvParam, bhv, acts) \\\n    CMD_BBBB(0x24, 0x18, acts, model), \\\n    CMD_HHHHHH(posX, posY, posZ, angleX, angleY, angleZ), \\\n    CMD_W(bhvParam), \\\n    CMD_PTR(bhv)\n\n#define OBJECT(model, posX, posY, posZ, angleX, angleY, angleZ, bhvParam, bhv) \\\n    OBJECT_WITH_ACTS(model, posX, posY, posZ, angleX, angleY, angleZ, bhvParam, bhv, 0x1F)\n\n#define MARIO(model, bhvArg, bhv) \\\n    CMD_BBBB(0x25, 0x0C, 0x00, model), \\\n    CMD_W(bhvArg), \\\n    CMD_PTR(bhv)\n\n#define WARP_NODE(id, destLevel, destArea, destNode, flags) \\\n    CMD_BBBB(0x26, 0x08, id, destLevel), \\\n    CMD_BBBB(destArea, destNode, flags, 0x00)\n\n#define PAINTING_WARP_NODE(id, destLevel, destArea, destNode, flags) \\\n    CMD_BBBB(0x27, 0x08, id, destLevel), \\\n    CMD_BBBB(destArea, destNode, flags, 0x00)\n\n#define INSTANT_WARP(index, destArea, displaceX, displaceY, displaceZ) \\\n    CMD_BBBB(0x28, 0x0C, index, destArea), \\\n    CMD_HH(displaceX, displaceY), \\\n    CMD_HH(displaceZ, 0x0000)\n\n#define LOAD_AREA(area) \\\n    CMD_BBBB(0x29, 0x04, area, 0x00)\n\n#define CMD2A(unk2) \\\n    CMD_BBBB(0x2A, 0x04, unk2, 0x00)\n\n#define MARIO_POS(area, yaw, posX, posY, posZ) \\\n    CMD_BBBB(0x2B, 0x0C, area, 0x00), \\\n    CMD_HH(yaw, posX), \\\n    CMD_HH(posY, posZ)\n\n// unused\n#define CMD2C() \\\n    CMD_BBH(0x2C, 0x04, 0x0000)\n\n// unused\n#define CMD2D() \\\n    CMD_BBH(0x2D, 0x04, 0x0000)\n\n#define TERRAIN(terrainData) \\\n    CMD_BBH(0x2E, 0x08, 0x0000), \\\n    CMD_PTR(terrainData)\n\n#define ROOMS(surfaceRooms) \\\n    CMD_BBH(0x2F, 0x08, 0x0000), \\\n    CMD_PTR(surfaceRooms)\n\n#define SHOW_DIALOG(index, dialogID) \\\n    CMD_BBBB(0x30, 0x04, index, dialogID)\n\n#define TERRAIN_TYPE(terrainType) \\\n    CMD_BBH(0x31, 0x04, terrainType)\n\n#define NOP() \\\n    CMD_BBH(0x32, 0x04, 0x0000)\n\n#define TRANSITION(transType, time, colorR, colorG, colorB) \\\n    CMD_BBBB(0x33, 0x08, transType, time), \\\n    CMD_BBBB(colorR, colorG, colorB, 0x00)\n\n#define BLACKOUT(active) \\\n    CMD_BBBB(0x34, 0x04, active, 0x00)\n\n#define GAMMA(enabled) \\\n    CMD_BBBB(0x35, 0x04, enabled, 0x00)\n\n#define SET_BACKGROUND_MUSIC(settingsPreset, seq) \\\n    CMD_BBH(0x36, 0x08, settingsPreset), \\\n    CMD_HH(seq, 0x0000)\n\n#define SET_MENU_MUSIC(seq) \\\n    CMD_BBH(0x37, 0x04, seq)\n\n#define STOP_MUSIC(fadeOutTime) \\\n    CMD_BBH(0x38, 0x04, fadeOutTime)\n\n#define MACRO_OBJECTS(objList) \\\n    CMD_BBH(0x39, 0x08, 0x0000), \\\n    CMD_PTR(objList)\n\n// unused\n#define CMD3A(unk2, unk4, unk6, unk8, unk10) \\\n    CMD_BBH(0x3A, 0x0C, unk2), \\\n    CMD_HH(unk6, unk8), \\\n    CMD_HH(unk10, 0x0000)\n\n#define WHIRLPOOL(index, condition, posX, posY, posZ, strength) \\\n    CMD_BBBB(0x3B, 0x0C, index, condition), \\\n    CMD_HH(posX, posY), \\\n    CMD_HH(posZ, strength)\n\n#define GET_OR_SET(op, var) \\\n    CMD_BBBB(0x3C, 0x04, op, var)\n\n#endif // LEVEL_COMMANDS_H\n"
  },
  {
    "path": "include/level_misc_macros.h",
    "content": "#ifndef LEVEL_MISC_MACROS_H\n#define LEVEL_MISC_MACROS_H\n\n#define MACRO_OBJECT_WITH_BHV_PARAM(preset, yaw, posX, posY, posZ, bhvParam) \\\n    ((s16)((yaw * 0x10 / 45) << 9) | (preset + 0x1F)), posX, posY, posZ, bhvParam\n\n#define MACRO_OBJECT(preset, yaw, posX, posY, posZ) \\\n    MACRO_OBJECT_WITH_BHV_PARAM(preset, yaw, posX, posY, posZ, 0)\n\n#define MACRO_OBJECT_END() \\\n    0x001E\n\n#define SPECIAL_OBJECT(preset, posX, posY, posZ) \\\n    preset, posX, posY, posZ\n\n#define SPECIAL_OBJECT_WITH_YAW(preset, posX, posY, posZ, yaw) \\\n    preset, posX, posY, posZ, yaw\n\n#define SPECIAL_OBJECT_WITH_YAW_AND_PARAM(preset, posX, posY, posZ, yaw, param) \\\n    preset, posX, posY, posZ, yaw, param\n\n#define TRAJECTORY_POS(trajId, x, y, z) \\\n    trajId, x, y, z\n\n#define TRAJECTORY_END() \\\n    -1\n\n#endif // LEVEL_MISC_MACROS_H\n"
  },
  {
    "path": "include/level_table.h",
    "content": "#ifndef LEVEL_TABLE_H\n#define LEVEL_TABLE_H\n\n// For LEVEL_NAME defines, see level_defines.h.\n// Please include this file if you want to use them.\n\n#define STUB_LEVEL(_0, levelenum, _2, _3, _4, _5, _6, _7, _8) levelenum,\n#define DEFINE_LEVEL(_0, levelenum, _2, _3, _4, _5, _6, _7, _8, _9, _10) levelenum,\n\nenum LevelNum {\n    LEVEL_NONE,\n#include \"levels/level_defines.h\"\n    LEVEL_COUNT,\n    LEVEL_MAX = LEVEL_COUNT - 1,\n    LEVEL_MIN = LEVEL_NONE + 1\n};\n\n#undef STUB_LEVEL\n#undef DEFINE_LEVEL\n\n#endif // LEVEL_TABLE_H\n"
  },
  {
    "path": "include/libc/math.h",
    "content": "#ifndef MATH_H\n#define MATH_H\n\n#define M_PI 3.14159265358979323846\n\nfloat sinf(float);\ndouble sin(double);\nfloat cosf(float);\ndouble cos(double);\n\nfloat sqrtf(float);\n\n#endif\n"
  },
  {
    "path": "include/libc/stdarg.h",
    "content": "#ifndef STDARG_H\n#define STDARG_H\n\n// When not building with IDO, use the builtin vaarg macros for portability.\n#if !defined(__sgi) && (__GNUC__ > 2)\n#define va_list __builtin_va_list\n#define va_start __builtin_va_start\n#define va_arg __builtin_va_arg\n#define va_end __builtin_va_end\n\n#elif (__GNUC__ == 2)\n\ntypedef void *__gnuc_va_list;\ntypedef __gnuc_va_list va_list;\n\n#ifndef _VA_MIPS_H_ENUM\n#define _VA_MIPS_H_ENUM\nenum {\n  __no_type_class = -1,\n  __void_type_class,\n  __integer_type_class,\n  __char_type_class,\n  __enumeral_type_class,\n  __boolean_type_class,\n  __pointer_type_class,\n  __reference_type_class,\n  __offset_type_class,\n  __real_type_class,\n  __complex_type_class,\n  __function_type_class,\n  __method_type_class,\n  __record_type_class,\n  __union_type_class,\n  __array_type_class,\n  __string_type_class,\n  __set_type_class,\n  __file_type_class,\n  __lang_type_class\n};\n#endif\n\n/* In GCC version 2, we want an ellipsis at the end of the declaration\n   of the argument list.  GCC version 1 can't parse it.  */\n\n#if __GNUC__ > 1\n#define __va_ellipsis ...\n#else\n#define __va_ellipsis\n#endif\n\n#ifdef __mips64\n#define __va_rounded_size(__TYPE)  \\\n  (((sizeof (__TYPE) + 8 - 1) / 8) * 8)\n#else\n#define __va_rounded_size(__TYPE)  \\\n  (((sizeof (__TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int))\n#endif\n\n#ifdef __mips64\n#define __va_reg_size 8\n#else\n#define __va_reg_size 4\n#endif\n\n/* Get definitions for _MIPS_SIM_ABI64 etc.  */\n#ifdef _MIPS_SIM\n//#include <sgidefs.h>\n#endif\n\n#ifdef STDARG_H\n#if defined (__mips_eabi)\n#if ! defined (__mips_soft_float) && ! defined (__mips_single_float)\n#ifdef __mips64\n#define va_start(__AP, __LASTARG)                                        \\\n  (__AP.__gp_regs = ((char *) __builtin_next_arg (__LASTARG)                \\\n                     - (__builtin_args_info (2) < 8                        \\\n                        ? (8 - __builtin_args_info (2)) * __va_reg_size        \\\n                        : 0)),                                                \\\n   __AP.__fp_left = 8 - __builtin_args_info (3),                        \\\n   __AP.__fp_regs = __AP.__gp_regs - __AP.__fp_left * __va_reg_size)\n#else /* ! defined (__mips64) */\n#define va_start(__AP, __LASTARG)                                        \\\n  (__AP.__gp_regs = ((char *) __builtin_next_arg (__LASTARG)                \\\n                     - (__builtin_args_info (2) < 8                        \\\n                        ? (8 - __builtin_args_info (2)) * __va_reg_size        \\\n                        : 0)),                                                \\\n   __AP.__fp_left = (8 - __builtin_args_info (3)) / 2,                        \\\n   __AP.__fp_regs = __AP.__gp_regs - __AP.__fp_left * 8,                \\\n   __AP.__fp_regs = (char *) ((int) __AP.__fp_regs & -8))\n#endif /* ! defined (__mips64) */\n#else /* ! (! defined (__mips_soft_float) && ! defined (__mips_single_float) ) */\n#define va_start(__AP, __LASTARG)                                        \\\n  (__AP = ((__gnuc_va_list) __builtin_next_arg (__LASTARG)                \\\n           - (__builtin_args_info (2) >= 8 ? 0                                \\\n              : (8 - __builtin_args_info (2)) * __va_reg_size)))\n#endif /* ! (! defined (__mips_soft_float) && ! defined (__mips_single_float) ) */\n#else /* ! defined (__mips_eabi) */\n#define va_start(__AP, __LASTARG) \\\n  (__AP = (__gnuc_va_list) __builtin_next_arg (__LASTARG))\n#endif /* ! (defined (__mips_eabi) && ! defined (__mips_soft_float) && ! defined (__mips_single_float)) */\n#else /* ! _STDARG_H */\n#define va_alist  __builtin_va_alist\n#ifdef __mips64\n/* This assumes that `long long int' is always a 64 bit type.  */\n#define va_dcl    long long int __builtin_va_alist; __va_ellipsis\n#else\n#define va_dcl    int __builtin_va_alist; __va_ellipsis\n#endif\n#if defined (__mips_eabi)\n#if ! defined (__mips_soft_float) && ! defined (__mips_single_float)\n#ifdef __mips64\n#define va_start(__AP)                                                        \\\n  (__AP.__gp_regs = ((char *) __builtin_next_arg ()                        \\\n                     - (__builtin_args_info (2) < 8                        \\\n                        ? (8 - __builtin_args_info (2)) * __va_reg_size        \\\n                        : __va_reg_size)),                                \\\n   __AP.__fp_left = 8 - __builtin_args_info (3),                        \\\n   __AP.__fp_regs = __AP.__gp_regs - __AP.__fp_left * __va_reg_size)\n#else /* ! defined (__mips64) */\n#define va_start(__AP)                                                        \\\n  (__AP.__gp_regs = ((char *) __builtin_next_arg ()                        \\\n                     - (__builtin_args_info (2) < 8                        \\\n                        ? (8 - __builtin_args_info (2)) * __va_reg_size        \\\n                        : __va_reg_size)),                                \\\n   __AP.__fp_left = (8 - __builtin_args_info (3)) / 2,                        \\\n   __AP.__fp_regs = __AP.__gp_regs - __AP.__fp_left * 8,                \\\n   __AP.__fp_regs = (char *) ((int) __AP.__fp_regs & -8))\n#endif /* ! defined (__mips64) */\n#else /* ! (! defined (__mips_soft_float) && ! defined (__mips_single_float)) */\n#define va_start(__AP)                                                        \\\n  (__AP = ((__gnuc_va_list) __builtin_next_arg ()                        \\\n           - (__builtin_args_info (2) >= 8 ? __va_reg_size                \\\n              : (8 - __builtin_args_info (2)) * __va_reg_size)))\n#endif /* ! (! defined (__mips_soft_float) && ! defined (__mips_single_float)) */\n/* Need alternate code for _MIPS_SIM_ABI64.  */\n#elif defined(_MIPS_SIM) && (_MIPS_SIM == _MIPS_SIM_ABI64 || _MIPS_SIM == _MIPS_SIM_NABI32)\n#define va_start(__AP)                                                        \\\n  (__AP = (__gnuc_va_list) __builtin_next_arg ()                        \\\n   + (__builtin_args_info (2) >= 8 ? -8 : 0))\n#else\n#define va_start(__AP)  __AP = (char *) &__builtin_va_alist\n#endif\n#endif /* ! _STDARG_H */\n\n#ifndef va_end\nvoid va_end (__gnuc_va_list);                /* Defined in libgcc.a */\n#endif\n#define va_end(__AP)        ((void)0)\n\n#if defined (__mips_eabi)\n\n#if ! defined (__mips_soft_float) && ! defined (__mips_single_float)\n#ifdef __mips64\n#define __va_next_addr(__AP, __type)                                        \\\n  ((__builtin_classify_type (*(__type *) 0) == __real_type_class        \\\n    && __AP.__fp_left > 0)                                                \\\n   ? (--__AP.__fp_left, (__AP.__fp_regs += 8) - 8)                        \\\n   : (__AP.__gp_regs += __va_reg_size) - __va_reg_size)\n#else\n#define __va_next_addr(__AP, __type)                                        \\\n  ((__builtin_classify_type (*(__type *) 0) == __real_type_class        \\\n    && __AP.__fp_left > 0)                                                \\\n   ? (--__AP.__fp_left, (__AP.__fp_regs += 8) - 8)                        \\\n   : (((__builtin_classify_type (* (__type *) 0) < __record_type_class        \\\n        && __alignof__ (__type) > 4)                                        \\\n       ? __AP.__gp_regs = (char *) (((int) __AP.__gp_regs + 8 - 1) & -8) \\\n       : (char *) 0),                                                        \\\n      (__builtin_classify_type (* (__type *) 0) >= __record_type_class        \\\n       ? (__AP.__gp_regs += __va_reg_size) - __va_reg_size                \\\n       : ((__AP.__gp_regs += __va_rounded_size (__type))                \\\n          - __va_rounded_size (__type)))))\n#endif\n#else /* ! (! defined (__mips_soft_float) && ! defined (__mips_single_float)) */\n#ifdef __mips64\n#define __va_next_addr(__AP, __type)                                        \\\n  ((__AP += __va_reg_size) - __va_reg_size)\n#else\n#define __va_next_addr(__AP, __type)                                        \\\n  (((__builtin_classify_type (* (__type *) 0) < __record_type_class        \\\n     && __alignof__ (__type) > 4)                                        \\\n    ? __AP = (char *) (((__PTRDIFF_TYPE__) __AP + 8 - 1) & -8)                \\\n    : (char *) 0),                                                        \\\n   (__builtin_classify_type (* (__type *) 0) >= __record_type_class        \\\n    ? (__AP += __va_reg_size) - __va_reg_size                                \\\n    : ((__AP += __va_rounded_size (__type))                                \\\n       - __va_rounded_size (__type))))\n#endif\n#endif /* ! (! defined (__mips_soft_float) && ! defined (__mips_single_float)) */\n\n#ifdef __MIPSEB__\n#define va_arg(__AP, __type)                                                \\\n  ((__va_rounded_size (__type) <= __va_reg_size)                        \\\n   ? *(__type *) (void *) (__va_next_addr (__AP, __type)                \\\n                           + __va_reg_size                                \\\n                           - sizeof (__type))                                \\\n   : (__builtin_classify_type (*(__type *) 0) >= __record_type_class        \\\n      ? **(__type **) (void *) (__va_next_addr (__AP, __type)                \\\n                                + __va_reg_size                                \\\n                                - sizeof (char *))                        \\\n      : *(__type *) (void *) __va_next_addr (__AP, __type)))\n#else\n#define va_arg(__AP, __type)                                                \\\n  ((__va_rounded_size (__type) <= __va_reg_size)                        \\\n   ? *(__type *) (void *) __va_next_addr (__AP, __type)                \\\n   : (__builtin_classify_type (* (__type *) 0) >= __record_type_class        \\\n      ? **(__type **) (void *) __va_next_addr (__AP, __type)                \\\n      : *(__type *) (void *) __va_next_addr (__AP, __type)))\n#endif\n\n#else /* ! defined (__mips_eabi) */\n\n/* We cast to void * and then to TYPE * because this avoids\n   a warning about increasing the alignment requirement.  */\n/* The __mips64 cases are reversed from the 32 bit cases, because the standard\n   32 bit calling convention left-aligns all parameters smaller than a word,\n   whereas the __mips64 calling convention does not (and hence they are\n   right aligned).  */\n#ifdef __mips64\n#ifdef __MIPSEB__\n#define va_arg(__AP, __type)                                    \\\n  ((__type *) (void *) (__AP = (char *)                         \\\n                       ((((__PTRDIFF_TYPE__)__AP + 8 - 1) & -8) \\\n                           + __va_rounded_size (__type))))[-1]\n#else\n#define va_arg(__AP, __type)                                    \\\n  ((__AP = (char *) ((((__PTRDIFF_TYPE__)__AP + 8 - 1) & -8)        \\\n                     + __va_rounded_size (__type))),                \\\n   *(__type *) (void *) (__AP - __va_rounded_size (__type)))\n#endif\n\n#else /* not __mips64 */\n\n#ifdef __MIPSEB__\n/* For big-endian machines.  */\n#define va_arg(__AP, __type)                                        \\\n  ((__AP = (char *) ((__alignof__ (__type) > 4                        \\\n                      ? ((__PTRDIFF_TYPE__)__AP + 8 - 1) & -8        \\\n                      : ((__PTRDIFF_TYPE__)__AP + 4 - 1) & -4)        \\\n                     + __va_rounded_size (__type))),                \\\n   *(__type *) (void *) (__AP - __va_rounded_size (__type)))\n#else\n/* For little-endian machines.  */\n#define va_arg(__AP, __type)                                                    \\\n  ((__type *) (void *) (__AP = (char *) ((__alignof__(__type) > 4            \\\n                                ? ((__PTRDIFF_TYPE__)__AP + 8 - 1) & -8            \\\n                                : ((__PTRDIFF_TYPE__)__AP + 4 - 1) & -4)    \\\n                                         + __va_rounded_size(__type))))[-1]\n#endif\n#endif\n#endif /* ! defined (__mips_eabi)  */\n\n/* Copy __gnuc_va_list into another variable of this type.  */\n#define __va_copy(dest, src) (dest) = (src)\n\n#else\n\ntypedef char *va_list;\n#define _FP 1\n#define _INT 0\n#define _STRUCT 2\n\n#define _VA_FP_SAVE_AREA 0x10\n#define _VA_ALIGN(p, a) (((unsigned int)(((char *)p) + ((a) > 4 ? (a) : 4) - 1)) & -((a) > 4 ? (a) : 4))\n#define va_start(vp, parmN) (vp = ((va_list)&parmN + sizeof(parmN)))\n\n#define __va_stack_arg(list, mode)                          \\\n    (                                                       \\\n        ((list) = (char *)_VA_ALIGN(list, __builtin_alignof(mode)) + \\\n                  _VA_ALIGN(sizeof(mode), 4)),              \\\n        (((char *)list) - (_VA_ALIGN(sizeof(mode), 4) - sizeof(mode))))\n\n#define __va_double_arg(list, mode)                                                                    \\\n    (                                                                                                  \\\n        (((long)list & 0x1) /* 1 byte aligned? */                                                      \\\n             ? (list = (char *)((long)list + 7), (char *)((long)list - 6 - _VA_FP_SAVE_AREA))          \\\n             : (((long)list & 0x2) /* 2 byte aligned? */                                               \\\n                    ? (list = (char *)((long)list + 10), (char *)((long)list - 24 - _VA_FP_SAVE_AREA)) \\\n                    : __va_stack_arg(list, mode))))\n\n#define va_arg(list, mode) ((mode *)(((__builtin_classof(mode) == _FP &&          \\\n                                       __builtin_alignof(mode) == sizeof(double)) \\\n                                          ? __va_double_arg(list, mode)           \\\n                                          : __va_stack_arg(list, mode))))[-1]\n#define va_end(__list)\n\n#endif\n#endif\n"
  },
  {
    "path": "include/libc/stddef.h",
    "content": "#ifndef STDDEF_H\n#define STDDEF_H\n\n#include \"PR/ultratypes.h\"\n\n#ifndef offsetof\n#define offsetof(st, m) ((size_t)&(((st *)0)->m))\n#endif\n\n#endif\n"
  },
  {
    "path": "include/libc/stdio.h",
    "content": "#ifndef STDIO_H\n#define STDIO_H\n\nextern int sprintf(char *s, const char *fmt, ...);\n\n#endif\n"
  },
  {
    "path": "include/libc/stdlib.h",
    "content": "#ifndef STDLIB_H\n#define STDLIB_H\n\ntypedef struct lldiv_t\n{\n    long long quot;\n    long long rem;\n} lldiv_t;\n\ntypedef struct ldiv_t\n{\n    long quot;\n    long rem;\n} ldiv_t;\n\nlldiv_t lldiv(long long num, long long denom);\nldiv_t ldiv(long num, long denom);\n\n#endif\n"
  },
  {
    "path": "include/libc/string.h",
    "content": "#ifndef STRING_H\n#define STRING_H\n\n#include \"PR/ultratypes.h\"\n\nvoid *memcpy(void *dst, const void *src, size_t size);\nsize_t strlen(const char *str);\nchar *strchr(const char *str, s32 ch);\n\n#endif\n"
  },
  {
    "path": "include/macro_presets.h",
    "content": "#ifndef MACRO_PRESETS_H\n#define MACRO_PRESETS_H\n\nenum MacroPresets {\n    macro_yellow_coin_1,\n    macro_yellow_coin_2,\n    macro_moving_blue_coin,\n    macro_sliding_blue_coin,\n    macro_red_coin,\n    macro_empty_5,\n    macro_coin_line_horizontal,\n    macro_coin_ring_horizontal,\n    macro_coin_arrow,\n    macro_coin_line_horizontal_flying,\n    macro_coin_line_vertical_flying,\n    macro_coin_ring_horizontal_flying,\n    macro_coin_ring_vertical_flying,\n    macro_coin_arrow_flying,\n    macro_hidden_star_trigger,\n    macro_empty_15,\n    macro_empty_16,\n    macro_empty_17,\n    macro_empty_18,\n    macro_empty_19,\n    macro_fake_star,\n    macro_wooden_signpost,\n    macro_cannon_closed,\n    macro_bobomb_buddy_opens_cannon_1,\n    macro_butterfly,\n    macro_bouncing_fireball_1,\n    macro_fish_spawner_many_blue,\n    macro_fish_spawner_few_blue,\n    macro_unknown_28,\n    macro_hidden_1up_in_pole,\n    macro_huge_goomba,\n    macro_tiny_goomba,\n    macro_goomba_triplet_spawner,\n    macro_goomba_quintuplet_spawner,\n    macro_sign_on_wall,\n    macro_chuckya,\n    macro_cannon_open,\n    macro_goomba,\n    macro_homing_amp,\n    macro_circling_amp,\n    macro_unknown_40,\n    macro_unknown_41,\n    macro_free_bowling_ball,\n    macro_snufit,\n    macro_recovery_heart,\n    macro_1up_sliding,\n    macro_1up,\n    macro_1up_jump_on_approach,\n    macro_hidden_1up,\n    macro_hidden_1up_trigger,\n    macro_1up_beat_bitdw_bowser,\n    macro_1up_beat_bitfs_bowser,\n    macro_empty_52,\n    macro_blue_coin_switch,\n    macro_hidden_blue_coin,\n    macro_wing_cap_switch,\n    macro_metal_cap_switch,\n    macro_vanish_cap_switch,\n    macro_yellow_cap_switch,\n    macro_unknown_59,\n    macro_box_wing_cap,\n    macro_box_metal_cap,\n    macro_box_vanish_cap,\n    macro_box_koopa_shell,\n    macro_box_one_coin,\n    macro_box_three_coins,\n    macro_box_ten_coins,\n    macro_box_1up,\n    macro_box_star_act_1,\n    macro_breakable_box_no_coins,\n    macro_breakable_box_three_coins,\n    macro_pushable_metal_box,\n    macro_breakable_box_small,\n    macro_floor_switch_hidden_objects,\n    macro_hidden_breakable_box,\n    macro_hidden_unbreakable_box_1,\n    macro_hidden_unbreakable_box_2,\n    macro_breakable_box_giant,\n    macro_koopa_shell_underwater,\n    macro_box_1up_running_away,\n    macro_empty_80,\n    macro_bullet_bill_cannon,\n    macro_heave_ho,\n    macro_empty_83,\n    macro_thwomp,\n    macro_fire_spitter,\n    macro_fire_fly_guy,\n    macro_jumping_box,\n    macro_butterfly_triplet,\n    macro_butterfly_triplet_no_bombs,\n    macro_empty_90,\n    macro_empty_91,\n    macro_empty_92,\n    macro_small_bully,\n    macro_big_bully,\n    macro_empty_95,\n    macro_unknown_96,\n    macro_bouncing_fireball_2,\n    macro_flamethrower,\n    macro_empty_99,\n    macro_empty_100,\n    macro_empty_101,\n    macro_empty_102,\n    macro_empty_103,\n    macro_empty_104,\n    macro_empty_105,\n    macro_wooden_post_1,\n    macro_water_bomb_spawner,\n    macro_enemy_lakitu,\n    macro_bob_koopa_the_quick,\n    macro_koopa_race_endpoint,\n    macro_bobomb,\n    macro_water_bomb_cannon_1,\n    macro_bobomb_buddy_opens_cannon_2,\n    macro_water_bomb_cannon_2,\n    macro_bobomb_stationary,\n    macro_empty_116,\n    macro_empty_117,\n    macro_empty_118,\n    macro_empty_119,\n    macro_empty_120,\n    macro_empty_121,\n    macro_empty_122,\n    macro_unknown_123,\n    macro_empty_124,\n    macro_unagi,\n    macro_sushi,\n    macro_empty_127,\n    macro_empty_128,\n    macro_empty_129,\n    macro_empty_130,\n    macro_empty_131,\n    macro_empty_132,\n    macro_empty_133,\n    macro_empty_134,\n    macro_empty_135,\n    macro_empty_136,\n    macro_unknown_137,\n    macro_tornado,\n    macro_pokey_1,\n    macro_pokey_2,\n    macro_tox_box,\n    macro_empty_142,\n    macro_empty_143,\n    macro_empty_144,\n    macro_empty_145,\n    macro_empty_146,\n    macro_empty_147,\n    macro_empty_148,\n    macro_empty_149,\n    macro_empty_150,\n    macro_monty_mole_no_rock,\n    macro_monty_mole,\n    macro_monty_mole_hole,\n    macro_fly_guy,\n    macro_empty_155,\n    macro_wiggler,\n    macro_empty_157,\n    macro_empty_158,\n    macro_empty_159,\n    macro_empty_160,\n    macro_empty_161,\n    macro_empty_162,\n    macro_empty_163,\n    macro_empty_164,\n    macro_spindrift,\n    macro_mr_blizzard_1,\n    macro_mr_blizzard_2,\n    macro_empty_168,\n    macro_small_penguin,\n    macro_tuxies_mother_1,\n    macro_tuxies_mother_2,\n    macro_mr_blizzard_jumping,\n    macro_empty_173,\n    macro_empty_174,\n    macro_empty_175,\n    macro_empty_176,\n    macro_empty_177,\n    macro_empty_178,\n    macro_empty_179,\n    macro_empty_180,\n    macro_empty_181,\n    macro_empty_182,\n    macro_empty_183,\n    macro_empty_184,\n    macro_empty_185,\n    macro_empty_186,\n    macro_empty_187,\n    macro_empty_188,\n    macro_haunted_chair_1,\n    macro_haunted_chair_2,\n    macro_haunted_chair_3,\n    macro_boo_1,\n    macro_boo_2,\n    macro_boo_group,\n    macro_boo_with_cage,\n    macro_beta_key,\n    macro_empty_197,\n    macro_empty_198,\n    macro_empty_199,\n    macro_empty_200,\n    macro_empty_201,\n    macro_empty_202,\n    macro_empty_203,\n    macro_empty_204,\n    macro_empty_205,\n    macro_empty_206,\n    macro_empty_207,\n    macro_empty_208,\n    macro_empty_209,\n    macro_empty_210,\n    macro_empty_211,\n    macro_empty_212,\n    macro_empty_213,\n    macro_empty_214,\n    macro_empty_215,\n    macro_empty_216,\n    macro_empty_217,\n    macro_empty_218,\n    macro_empty_219,\n    macro_empty_220,\n    macro_empty_221,\n    macro_empty_222,\n    macro_empty_223,\n    macro_empty_224,\n    macro_empty_225,\n    macro_empty_226,\n    macro_empty_227,\n    macro_empty_228,\n    macro_empty_229,\n    macro_empty_230,\n    macro_empty_231,\n    macro_empty_232,\n    macro_empty_233,\n    macro_chirp_chirp,\n    macro_seaweed_bundle,\n    macro_beta_chest,\n    macro_water_mine,\n    macro_fish_spawner_many_cyan,\n    macro_fish_spawner_few_cyan,\n    macro_jet_stream_ring_spawner_1,\n    macro_jet_stream_ring_spawner_2,\n    macro_skeeter,\n    macro_clam_shell,\n    macro_empty_244,\n    macro_empty_245,\n    macro_empty_246,\n    macro_empty_247,\n    macro_empty_248,\n    macro_empty_249,\n    macro_empty_250,\n    macro_cage_ukiki,\n    macro_cap_ukiki,\n    macro_piranha_plant,\n    macro_empty_254,\n    macro_whomp,\n    macro_chain_chomp,\n    macro_empty_257,\n    macro_koopa,\n    macro_koopa_shellless,\n    macro_wooden_post_2,\n    macro_fire_piranha_plant_1,\n    macro_fire_piranha_plant_2,\n    macro_koopa_tiny,\n    macro_empty_264,\n    macro_empty_265,\n    macro_empty_266,\n    macro_empty_267,\n    macro_empty_268,\n    macro_empty_269,\n    macro_empty_270,\n    macro_empty_271,\n    macro_empty_272,\n    macro_empty_273,\n    macro_empty_274,\n    macro_empty_275,\n    macro_empty_276,\n    macro_empty_277,\n    macro_empty_278,\n    macro_empty_279,\n    macro_empty_280,\n    macro_moneybag,\n    macro_empty_282,\n    macro_empty_283,\n    macro_empty_284,\n    macro_empty_285,\n    macro_empty_286,\n    macro_empty_287,\n    macro_empty_288,\n    macro_swoop_1,\n    macro_swoop_2,\n    macro_mr_i,\n    macro_scuttlebug_spawner,\n    macro_scuttlebug,\n    macro_empty_294,\n    macro_empty_295,\n    macro_empty_296,\n    macro_empty_297,\n    macro_empty_298,\n    macro_empty_299,\n    macro_empty_300,\n    macro_empty_301,\n    macro_empty_302,\n    macro_unknown_303,\n    macro_empty_304,\n    macro_empty_305,\n    macro_empty_306,\n    macro_empty_307,\n    macro_empty_308,\n    macro_empty_309,\n    macro_empty_310,\n    macro_empty_311,\n    macro_empty_312,\n    macro_ttc_rotating_cube,\n    macro_ttc_rotating_prism,\n    macro_ttc_pendulum,\n    macro_ttc_large_treadmill_1,\n    macro_ttc_small_treadmill_1,\n    macro_ttc_push_block,\n    macro_ttc_rotating_hexagon,\n    macro_ttc_rotating_triangle,\n    macro_ttc_pit_block_1,\n    macro_ttc_pit_block_2,\n    macro_ttc_elevator_platform,\n    macro_ttc_clock_hand,\n    macro_ttc_spinner,\n    macro_ttc_small_gear,\n    macro_ttc_large_gear,\n    macro_ttc_large_treadmill_2,\n    macro_ttc_small_treadmill_2,\n    macro_empty_330,\n    macro_empty_331,\n    macro_empty_332,\n    macro_empty_333,\n    macro_empty_334,\n    macro_empty_335,\n    macro_empty_336,\n    macro_empty_337,\n    macro_empty_338,\n    macro_box_star_act_2,\n    macro_box_star_act_3,\n    macro_box_star_act_4,\n    macro_box_star_act_5,\n    macro_box_star_act_6,\n    macro_empty_344,\n    macro_empty_345,\n    macro_empty_346,\n    macro_empty_347,\n    macro_empty_348,\n    macro_empty_349,\n    macro_bits_sliding_platform,\n    macro_bits_twin_sliding_platforms,\n    macro_bits_unknown_352,\n    macro_bits_octagonal_platform,\n    macro_bits_staircase,\n    macro_empty_355,\n    macro_empty_356,\n    macro_bits_ferris_wheel_axle,\n    macro_bits_arrow_platform,\n    macro_bits_seesaw_platform,\n    macro_bits_tilting_w_platform,\n    macro_empty_361,\n    macro_empty_362,\n    macro_empty_363,\n    macro_empty_364,\n    macro_empty_365,\n\n    macro_count\n};\n\n#endif // MACRO_PRESETS_H\n"
  },
  {
    "path": "include/macro_presets.inc.c",
    "content": "#include \"macro_presets.h\"\n\nstruct MacroPreset {\n    /* 0x00 */ const BehaviorScript *behavior;\n    /* 0x04 */ s16 model;\n    /* 0x06 */ s16 param;\n};\n\nstatic struct MacroPreset sMacroObjectPresets[] = {\n    /* macro_yellow_coin_1               */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_yellow_coin_2               */ { bhvOneCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_moving_blue_coin            */ { bhvMovingBlueCoin, MODEL_BLUE_COIN, 0 },\n    /* macro_sliding_blue_coin           */ { bhvBlueCoinSliding, MODEL_BLUE_COIN, 0 }, // unused\n    /* macro_red_coin                    */ { bhvRedCoin, MODEL_RED_COIN, 0 },\n    /* macro_empty_5                     */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_coin_line_horizontal        */ { bhvCoinFormation, MODEL_NONE, COIN_FORMATION_BP_LINE_HORIZONTAL },\n    /* macro_coin_ring_horizontal        */ { bhvCoinFormation, MODEL_NONE, COIN_FORMATION_BP_RING_HORIZONTAL },\n    /* macro_coin_arrow                  */ { bhvCoinFormation, MODEL_NONE, COIN_FORMATION_BP_ARROW },\n    /* macro_coin_line_horizontal_flying */ { bhvCoinFormation, MODEL_NONE, COIN_FORMATION_BP_LINE_HORIZONTAL | COIN_FORMATION_BP_FLAG_FLYING },\n    /* macro_coin_line_vertical_flying   */ { bhvCoinFormation, MODEL_NONE, COIN_FORMATION_BP_LINE_VERTICAL | COIN_FORMATION_BP_FLAG_FLYING },\n    /* macro_coin_ring_horizontal_flying */ { bhvCoinFormation, MODEL_NONE, COIN_FORMATION_BP_RING_HORIZONTAL | COIN_FORMATION_BP_FLAG_FLYING },\n    /* macro_coin_ring_vertical_flying   */ { bhvCoinFormation, MODEL_NONE, COIN_FORMATION_BP_RING_VERTICAL | COIN_FORMATION_BP_FLAG_FLYING },\n    /* macro_coin_arrow_flying           */ { bhvCoinFormation, MODEL_NONE, COIN_FORMATION_BP_ARROW | COIN_FORMATION_BP_FLAG_FLYING }, // unused\n    /* macro_hidden_star_trigger         */ { bhvHiddenStarTrigger, MODEL_NONE, 0 },\n    /* macro_empty_15                    */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_16                    */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_17                    */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_18                    */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_19                    */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_fake_star                   */ { bhvUnusedFakeStar, MODEL_STAR, 0 }, // unused\n    /* macro_wooden_signpost             */ { bhvMessagePanel, MODEL_WOODEN_SIGNPOST, 0 },\n    /* macro_cannon_closed               */ { bhvCannonClosed, MODEL_DL_CANNON_LID, 0 },\n    /* macro_bobomb_buddy_opens_cannon_1 */ { bhvBobombBuddyOpensCannon, MODEL_BOBOMB_BUDDY, 0 },\n    /* macro_butterfly                   */ { bhvButterfly, MODEL_BUTTERFLY, 0 }, // unused\n    /* macro_bouncing_fireball_1         */ { bhvBouncingFireball, MODEL_NONE, 0 }, // unused\n    /* macro_fish_spawner_many_blue      */ { bhvFishSpawner, MODEL_NONE, FISH_SPAWNER_BP_MANY_BLUE }, // unused\n    /* macro_fish_spawner_few_blue       */ { bhvFishSpawner, MODEL_NONE, FISH_SPAWNER_BP_FEW_BLUE },\n    /* macro_unknown_28                  */ { bhvBetaFishSplashSpawner, MODEL_NONE, 0 },\n    /* macro_hidden_1up_in_pole          */ { bhvHidden1UpInPoleSpawner, MODEL_NONE, 0 },\n    /* macro_huge_goomba                 */ { bhvGoomba, MODEL_GOOMBA, GOOMBA_SIZE_HUGE },\n    /* macro_tiny_goomba                 */ { bhvGoomba, MODEL_GOOMBA, GOOMBA_SIZE_TINY },\n    /* macro_goomba_triplet_spawner      */ { bhvGoombaTripletSpawner, MODEL_NONE, GOOMBA_TRIPLET_SPAWNER_BP_EXTRA_GOOMBAS(0) | GOOMBA_SIZE_REGULAR },\n    /* macro_goomba_quintuplet_spawner   */ { bhvGoombaTripletSpawner, MODEL_NONE, GOOMBA_TRIPLET_SPAWNER_BP_EXTRA_GOOMBAS(2) | GOOMBA_SIZE_REGULAR }, // unused\n    /* macro_sign_on_wall                */ { bhvSignOnWall, MODEL_NONE, 0 },\n    /* macro_chuckya                     */ { bhvChuckya, MODEL_CHUCKYA, 0 },\n    /* macro_cannon_open                 */ { bhvCannon, MODEL_CANNON_BASE, 0 },\n    /* macro_goomba                      */ { bhvGoomba, MODEL_GOOMBA, 0 },\n    /* macro_homing_amp                  */ { bhvHomingAmp, MODEL_AMP, 0 },\n    /* macro_circling_amp                */ { bhvCirclingAmp, MODEL_AMP, AMP_BP_ROT_RADIUS_200 },\n    /* macro_unknown_40                  */ { bhvCarrySomething1, MODEL_UNKNOWN_7D, 0 }, // unused\n    /* macro_unknown_41                  */ { bhvBetaTrampolineTop, MODEL_TRAMPOLINE, 0 }, // unused\n    /* macro_free_bowling_ball           */ { bhvFreeBowlingBall, MODEL_BOWLING_BALL, 0 }, // unused\n    /* macro_snufit                      */ { bhvSnufit, MODEL_SNUFIT, 0 },\n    /* macro_recovery_heart              */ { bhvRecoveryHeart, MODEL_HEART, 0 },\n    /* macro_1up_sliding                 */ { bhv1UpSliding, MODEL_1UP, 0 },\n    /* macro_1up                         */ { bhv1Up, MODEL_1UP, 0 },\n    /* macro_1up_jump_on_approach        */ { bhv1UpJumpOnApproach, MODEL_1UP, 0 }, // unused\n    /* macro_hidden_1up                  */ { bhvHidden1Up, MODEL_1UP, 0 },\n    /* macro_hidden_1up_trigger          */ { bhvHidden1UpTrigger, MODEL_NONE, 0 },\n    /* macro_1up_beat_bitdw_bowser       */ { bhv1Up, MODEL_1UP, ONE_UP_BP_BEAT_BITDW_BOWSER },\n    /* macro_1up_beat_bitfs_bowser       */ { bhv1Up, MODEL_1UP, ONE_UP_BP_BEAT_BITFS_BOWSER },\n    /* macro_empty_52                    */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_blue_coin_switch            */ { bhvBlueCoinSwitch, MODEL_BLUE_COIN_SWITCH, 0 },\n    /* macro_hidden_blue_coin            */ { bhvHiddenBlueCoin, MODEL_BLUE_COIN, 0 },\n    /* macro_wing_cap_switch             */ { bhvCapSwitch, MODEL_CAP_SWITCH, CAP_SWITCH_BP_RED }, // unused\n    /* macro_metal_cap_switch            */ { bhvCapSwitch, MODEL_CAP_SWITCH, CAP_SWITCH_BP_GREEN }, // unused\n    /* macro_vanish_cap_switch           */ { bhvCapSwitch, MODEL_CAP_SWITCH, CAP_SWITCH_BP_BLUE }, // unused\n    /* macro_yellow_cap_switch           */ { bhvCapSwitch, MODEL_CAP_SWITCH, CAP_SWITCH_BP_YELLOW }, // unused\n    /* macro_unknown_59                  */ { bhvWaterLevelDiamond, MODEL_BREAKABLE_BOX, 0 }, // unused\n    /* macro_box_wing_cap                */ { bhvExclamationBox, MODEL_EXCLAMATION_BOX, EXCLAMATION_BOX_BP_WING_CAP },\n    /* macro_box_metal_cap               */ { bhvExclamationBox, MODEL_EXCLAMATION_BOX, EXCLAMATION_BOX_BP_METAL_CAP },\n    /* macro_box_vanish_cap              */ { bhvExclamationBox, MODEL_EXCLAMATION_BOX, EXCLAMATION_BOX_BP_VANISH_CAP },\n    /* macro_box_koopa_shell             */ { bhvExclamationBox, MODEL_EXCLAMATION_BOX, EXCLAMATION_BOX_BP_KOOPA_SHELL },\n    /* macro_box_one_coin                */ { bhvExclamationBox, MODEL_EXCLAMATION_BOX, EXCLAMATION_BOX_BP_ONE_COIN }, // unused\n    /* macro_box_three_coins             */ { bhvExclamationBox, MODEL_EXCLAMATION_BOX, EXCLAMATION_BOX_BP_THREE_COINS },\n    /* macro_box_ten_coins               */ { bhvExclamationBox, MODEL_EXCLAMATION_BOX, EXCLAMATION_BOX_BP_TEN_COINS },\n    /* macro_box_1up                     */ { bhvExclamationBox, MODEL_EXCLAMATION_BOX, EXCLAMATION_BOX_BP_1UP_WALKING },\n    /* macro_box_star_act_1              */ { bhvExclamationBox, MODEL_EXCLAMATION_BOX, EXCLAMATION_BOX_BP_STAR_ACT_1 },\n    /* macro_breakable_box_no_coins      */ { bhvBreakableBox, MODEL_BREAKABLE_BOX, BREAKABLE_BOX_BP_NO_COINS },\n    /* macro_breakable_box_three_coins   */ { bhvBreakableBox, MODEL_BREAKABLE_BOX, BREAKABLE_BOX_BP_3_COINS },\n    /* macro_pushable_metal_box          */ { bhvPushableMetalBox, MODEL_METAL_BOX, 0 },\n    /* macro_breakable_box_small         */ { bhvBreakableBoxSmall, MODEL_BREAKABLE_BOX_SMALL, 0 },\n    /* macro_floor_switch_hidden_objects */ { bhvFloorSwitchHiddenObjects, MODEL_PURPLE_SWITCH, 0 },\n    /* macro_hidden_breakable_box        */ { bhvHiddenObject, MODEL_BREAKABLE_BOX, HIDDEN_OBJECT_BP_BREAKABLE_BOX },\n    /* macro_hidden_unbreakable_box_1    */ { bhvHiddenObject, MODEL_BREAKABLE_BOX, HIDDEN_OBJECT_BP_UNBREAKABLE_BOX_UNUSED_1 }, // unused\n    /* macro_hidden_unbreakable_box_2    */ { bhvHiddenObject, MODEL_BREAKABLE_BOX, HIDDEN_OBJECT_BP_UNBREAKABLE_BOX_UNUSED_2 }, // unused\n    /* macro_breakable_box_giant         */ { bhvBreakableBox, MODEL_BREAKABLE_BOX, BREAKABLE_BOX_BP_GIANT },\n    /* macro_koopa_shell_underwater      */ { bhvKoopaShellUnderwater, MODEL_KOOPA_SHELL, 0 },\n    /* macro_box_1up_running_away        */ { bhvExclamationBox, MODEL_EXCLAMATION_BOX, EXCLAMATION_BOX_BP_1UP_RUNNING_AWAY },\n    /* macro_empty_80                    */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_bullet_bill_cannon          */ { bhvBulletBill, MODEL_BULLET_BILL, 0 }, // unused\n    /* macro_heave_ho                    */ { bhvHeaveHo, MODEL_HEAVE_HO, 0 },\n    /* macro_empty_83                    */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_thwomp                      */ { bhvThwomp, MODEL_THWOMP, 0 }, // unused\n    /* macro_fire_spitter                */ { bhvFireSpitter, MODEL_BOWLING_BALL, 0 },\n    /* macro_fire_fly_guy                */ { bhvFlyGuy, MODEL_FLYGUY, FLY_GUY_BP_FIRE },\n    /* macro_jumping_box                 */ { bhvJumpingBox, MODEL_BREAKABLE_BOX, 0 },\n    /* macro_butterfly_triplet           */ { bhvTripletButterfly, MODEL_BUTTERFLY, 0 },\n    /* macro_butterfly_triplet_no_bombs  */ { bhvTripletButterfly, MODEL_BUTTERFLY, TRIPLET_BUTTERFLY_BP_NO_BOMBS },\n    /* macro_empty_90                    */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_91                    */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_92                    */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_small_bully                 */ { bhvSmallBully, MODEL_BULLY, 0 },\n    /* macro_big_bully                   */ { bhvSmallBully, MODEL_BULLY_BOSS, 0 }, // unused\n    /* macro_empty_95                    */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_unknown_96                  */ { bhvStub1D0C, MODEL_UNKNOWN_58, 0 }, // unused\n    /* macro_bouncing_fireball_2         */ { bhvBouncingFireball, MODEL_NONE, 0 },\n    /* macro_flamethrower                */ { bhvFlamethrower, MODEL_NONE, 4 },\n    /* macro_empty_99                    */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_100                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_101                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_102                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_103                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_104                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_105                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_wooden_post_1               */ { bhvWoodenPost, MODEL_WOODEN_POST, 0 },\n    /* macro_water_bomb_spawner          */ { bhvWaterBombSpawner, MODEL_NONE, 0 },\n    /* macro_enemy_lakitu                */ { bhvEnemyLakitu, MODEL_ENEMY_LAKITU, 0 },\n    /* macro_bob_koopa_the_quick         */ { bhvKoopa, MODEL_KOOPA_WITH_SHELL, KOOPA_BP_KOOPA_THE_QUICK_BOB }, // unused\n    /* macro_koopa_race_endpoint         */ { bhvKoopaRaceEndpoint, MODEL_NONE, 0 }, // unused\n    /* macro_bobomb                      */ { bhvBobomb, MODEL_BLACK_BOBOMB, BOBOMB_BP_STYPE_GENERIC },\n    /* macro_water_bomb_cannon_1         */ { bhvWaterBombCannon, MODEL_CANNON_BASE, 0 }, // unused\n    /* macro_bobomb_buddy_opens_cannon_2 */ { bhvBobombBuddyOpensCannon, MODEL_BOBOMB_BUDDY, 0 }, // unused\n    /* macro_water_bomb_cannon_2         */ { bhvWaterBombCannon, MODEL_CANNON_BASE, 0 },\n    /* macro_bobomb_stationary           */ { bhvBobomb, MODEL_BLACK_BOBOMB, BOBOMB_BP_STYPE_STATIONARY },\n    /* macro_empty_116                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_117                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_118                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_119                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_120                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_121                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_122                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_unknown_123                 */ { bhvUnusedFakeStar, MODEL_UNKNOWN_54, 0 }, // unused\n    /* macro_empty_124                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_unagi                       */ { bhvUnagi, MODEL_UNAGI, 0 }, // unused\n    /* macro_sushi                       */ { bhvSushiShark, MODEL_SUSHI, 0 }, // unused\n    /* macro_empty_127                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_128                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_129                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_130                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_131                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_132                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_133                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_134                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_135                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_136                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_unknown_137                 */ { bhvStaticObject, MODEL_KLEPTO, 0 }, // unused\n    /* macro_tornado                     */ { bhvTweester, MODEL_TWEESTER, 0 }, // unused\n    /* macro_pokey_1                     */ { bhvPokey, MODEL_NONE, 0 },\n    /* macro_pokey_2                     */ { bhvPokey, MODEL_NONE, 0 }, // unused\n    /* macro_tox_box                     */ { bhvToxBox, MODEL_SSL_TOX_BOX, TOX_BOX_BP_MOVEMENT_PATTERN_1 }, // unused\n    /* macro_empty_142                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_143                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_144                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_145                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_146                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_147                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_148                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_149                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_150                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_monty_mole_no_rock          */ { bhvMontyMole, MODEL_MONTY_MOLE, MONTY_MOLE_BP_NO_ROCK }, // unused\n    /* macro_monty_mole                  */ { bhvMontyMole, MODEL_MONTY_MOLE, MONTY_MOLE_BP_GENERIC },\n    /* macro_monty_mole_hole             */ { bhvMontyMoleHole, MODEL_DL_MONTY_MOLE_HOLE, 0 },\n    /* macro_fly_guy                     */ { bhvFlyGuy, MODEL_FLYGUY, FLY_GUY_BP_GENERIC },\n    /* macro_empty_155                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_wiggler                     */ { bhvWigglerHead, MODEL_WIGGLER_HEAD, 0 }, // unused\n    /* macro_empty_157                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_158                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_159                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_160                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_161                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_162                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_163                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_164                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_spindrift                   */ { bhvSpindrift, MODEL_SPINDRIFT, 0 },\n    /* macro_mr_blizzard_1               */ { bhvMrBlizzard, MODEL_MR_BLIZZARD_HIDDEN, MR_BLIZZARD_STYPE_GENERIC },\n    /* macro_mr_blizzard_2               */ { bhvMrBlizzard, MODEL_MR_BLIZZARD_HIDDEN, MR_BLIZZARD_STYPE_GENERIC }, // unused\n    /* macro_empty_168                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_small_penguin               */ { bhvSmallPenguin, MODEL_PENGUIN, 0 }, // unused\n    /* macro_tuxies_mother_1             */ { bhvTuxiesMother, MODEL_PENGUIN, 0 }, // unused\n    /* macro_tuxies_mother_2             */ { bhvTuxiesMother, MODEL_PENGUIN, 0 }, // unused\n    /* macro_mr_blizzard_jumping         */ { bhvMrBlizzard, MODEL_MR_BLIZZARD_HIDDEN, MR_BLIZZARD_STYPE_JUMPING }, // unused\n    /* macro_empty_173                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_174                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_175                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_176                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_177                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_178                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_179                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_180                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_181                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_182                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_183                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_184                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_185                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_186                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_187                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_188                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_haunted_chair_1             */ { bhvHauntedChair, MODEL_HAUNTED_CHAIR, 0 }, // unused\n    /* macro_haunted_chair_2             */ { bhvHauntedChair, MODEL_HAUNTED_CHAIR, 0 },\n    /* macro_haunted_chair_3             */ { bhvHauntedChair, MODEL_HAUNTED_CHAIR, 0 }, // unused\n    /* macro_boo_1                       */ { bhvGhostHuntBoo, MODEL_BOO, BOO_BP_GHOST_HUNT }, // unused\n    /* macro_boo_2                       */ { bhvGhostHuntBoo, MODEL_BOO, BOO_BP_GHOST_HUNT }, // unused\n    /* macro_boo_group                   */ { bhvCourtyardBooTriplet, MODEL_BOO, 0 }, // unused\n    /* macro_boo_with_cage               */ { bhvBooWithCage, MODEL_BOO, 0 }, // unused\n    /* macro_beta_key                    */ { bhvAlphaBooKey, MODEL_BETA_BOO_KEY, 0 }, // unused\n    /* macro_empty_197                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_198                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_199                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_200                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_201                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_202                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_203                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_204                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_205                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_206                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_207                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_208                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_209                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_210                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_211                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_212                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_213                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_214                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_215                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_216                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_217                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_218                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_219                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_220                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_221                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_222                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_223                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_224                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_225                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_226                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_227                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_228                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_229                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_230                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_231                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_232                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_233                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_chirp_chirp                 */ { bhvChirpChirp, MODEL_NONE, 0 },\n    /* macro_seaweed_bundle              */ { bhvSeaweedBundle, MODEL_NONE, 0 },\n    /* macro_beta_chest                  */ { bhvBetaChestBottom, MODEL_TREASURE_CHEST_BASE, 0 }, // unused\n    /* macro_water_mine                  */ { bhvBowserBomb, MODEL_WATER_MINE, 0 }, // unused\n    /* macro_fish_spawner_many_cyan      */ { bhvFishSpawner, MODEL_NONE, FISH_SPAWNER_BP_MANY_CYAN }, // unused\n    /* macro_fish_spawner_few_cyan       */ { bhvFishSpawner, MODEL_NONE, FISH_SPAWNER_BP_FEW_CYAN },\n    /* macro_jet_stream_ring_spawner_1   */ { bhvJetStreamRingSpawner, MODEL_WATER_RING, 0 }, // unused\n    /* macro_jet_stream_ring_spawner_2   */ { bhvJetStreamRingSpawner, MODEL_WATER_RING, 0 }, // unused\n    /* macro_skeeter                     */ { bhvSkeeter, MODEL_SKEETER, 0 },\n    /* macro_clam_shell                  */ { bhvClamShell, MODEL_CLAM_SHELL, 0 },\n    /* macro_empty_244                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_245                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_246                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_247                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_248                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_249                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_250                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_cage_ukiki                  */ { bhvMacroUkiki, MODEL_UKIKI, UKIKI_BP_CAGE }, // unused\n    /* macro_cap_ukiki                   */ { bhvMacroUkiki, MODEL_UKIKI, UKIKI_BP_CAP }, // unused\n    /* macro_piranha_plant               */ { bhvPiranhaPlant, MODEL_PIRANHA_PLANT, 0 }, // unused\n    /* macro_empty_254                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_whomp                       */ { bhvSmallWhomp, MODEL_WHOMP, 0 },\n    /* macro_chain_chomp                 */ { bhvChainChomp, MODEL_CHAIN_CHOMP, 0 },\n    /* macro_empty_257                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_koopa                       */ { bhvKoopa, MODEL_KOOPA_WITH_SHELL, KOOPA_BP_NORMAL },\n    /* macro_koopa_shellless             */ { bhvKoopa, MODEL_KOOPA_WITHOUT_SHELL, KOOPA_BP_UNSHELLED }, // unused\n    /* macro_wooden_post_2               */ { bhvWoodenPost, MODEL_WOODEN_POST, 0 }, // unused\n    /* macro_fire_piranha_plant_1        */ { bhvFirePiranhaPlant, MODEL_PIRANHA_PLANT, 0 },\n    /* macro_fire_piranha_plant_2        */ { bhvFirePiranhaPlant, MODEL_PIRANHA_PLANT, 1 }, // unused\n    /* macro_koopa_tiny                  */ { bhvKoopa, MODEL_KOOPA_WITH_SHELL, KOOPA_BP_TINY },\n    /* macro_empty_264                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_265                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_266                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_267                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_268                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_269                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_270                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_271                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_272                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_273                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_274                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_275                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_276                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_277                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_278                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_279                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_280                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_moneybag                    */ { bhvMoneybagHidden, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_282                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_283                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_284                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_285                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_286                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_287                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_288                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_swoop_1                     */ { bhvSwoop, MODEL_SWOOP, 0 },\n    /* macro_swoop_2                     */ { bhvSwoop, MODEL_SWOOP, 1 },\n    /* macro_mr_i                        */ { bhvMrI, MODEL_NONE, 0 },\n    /* macro_scuttlebug_spawner          */ { bhvScuttlebugSpawn, MODEL_NONE, 0 },\n    /* macro_scuttlebug                  */ { bhvScuttlebug, MODEL_SCUTTLEBUG, 0 },\n    /* macro_empty_294                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_295                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_296                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_297                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_298                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_299                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_300                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_301                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_302                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_unknown_303                 */ { bhvYellowCoin, MODEL_UNKNOWN_54, 0 }, // unused\n    /* macro_empty_304                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_305                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_306                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_307                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_308                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_309                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_310                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_311                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_312                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_ttc_rotating_cube           */ { bhvTTCRotatingSolid, MODEL_TTC_ROTATING_CUBE, TTC_ROTATING_SOLID_BP_CUBE },\n    /* macro_ttc_rotating_prism          */ { bhvTTCRotatingSolid, MODEL_TTC_ROTATING_PRISM, TTC_ROTATING_SOLID_BP_TRIANGULAR_PRISM },\n    /* macro_ttc_pendulum                */ { bhvTTCPendulum, MODEL_TTC_PENDULUM, 0 },\n    /* macro_ttc_large_treadmill_1       */ { bhvTTCTreadmill, MODEL_TTC_LARGE_TREADMILL, TTC_TREADMILL_BP_LARGE_1 },\n    /* macro_ttc_small_treadmill_1       */ { bhvTTCTreadmill, MODEL_TTC_SMALL_TREADMILL, TTC_TREADMILL_BP_SMALL_1 },\n    /* macro_ttc_push_block              */ { bhvTTCMovingBar, MODEL_TTC_PUSH_BLOCK, 0 },\n    /* macro_ttc_rotating_hexagon        */ { bhvTTCCog, MODEL_TTC_ROTATING_HEXAGON, TTC_COG_BP_SHAPE_HEXAGON | TTC_COG_BP_DIR_CCW },\n    /* macro_ttc_rotating_triangle       */ { bhvTTCCog, MODEL_TTC_ROTATING_TRIANGLE, TTC_COG_BP_SHAPE_TRIANGLE | TTC_COG_BP_DIR_CCW },\n    /* macro_ttc_pit_block_1             */ { bhvTTCPitBlock, MODEL_TTC_PIT_BLOCK, 0 },\n    /* macro_ttc_pit_block_2             */ { bhvTTCPitBlock, MODEL_TTC_PIT_BLOCK_UNUSED, 1 }, // unused\n    /* macro_ttc_elevator_platform       */ { bhvTTCElevator, MODEL_TTC_ELEVATOR_PLATFORM, 0 },\n    /* macro_ttc_clock_hand              */ { bhvTTC2DRotator, MODEL_TTC_CLOCK_HAND, 0 },\n    /* macro_ttc_spinner                 */ { bhvTTCSpinner, MODEL_TTC_SPINNER, 0 },\n    /* macro_ttc_small_gear              */ { bhvTTC2DRotator, MODEL_TTC_SMALL_GEAR, 1 },\n    /* macro_ttc_large_gear              */ { bhvTTC2DRotator, MODEL_TTC_LARGE_GEAR, 1 },\n    /* macro_ttc_large_treadmill_2       */ { bhvTTCTreadmill, MODEL_TTC_LARGE_TREADMILL, TTC_TREADMILL_BP_LARGE_2 },\n    /* macro_ttc_small_treadmill_2       */ { bhvTTCTreadmill, MODEL_TTC_SMALL_TREADMILL, TTC_TREADMILL_BP_SMALL_2 },\n    /* macro_empty_330                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_331                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_332                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_333                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_334                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_335                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_336                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_337                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_338                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_box_star_act_2              */ { bhvExclamationBox, MODEL_EXCLAMATION_BOX, EXCLAMATION_BOX_BP_STAR_ACT_2 },\n    /* macro_box_star_act_3              */ { bhvExclamationBox, MODEL_EXCLAMATION_BOX, EXCLAMATION_BOX_BP_STAR_ACT_3 },\n    /* macro_box_star_act_4              */ { bhvExclamationBox, MODEL_EXCLAMATION_BOX, EXCLAMATION_BOX_BP_STAR_ACT_4 },\n    /* macro_box_star_act_5              */ { bhvExclamationBox, MODEL_EXCLAMATION_BOX, EXCLAMATION_BOX_BP_STAR_ACT_5 }, // unused\n    /* macro_box_star_act_6              */ { bhvExclamationBox, MODEL_EXCLAMATION_BOX, EXCLAMATION_BOX_BP_STAR_ACT_6 },\n    /* macro_empty_344                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_345                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_346                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_347                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_348                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_349                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_bits_sliding_platform       */ { bhvSlidingPlatform2, MODEL_BITS_SLIDING_PLATFORM, 0 }, // unused\n    /* macro_bits_twin_sliding_platforms */ { bhvSlidingPlatform2, MODEL_BITS_TWIN_SLIDING_PLATFORMS, 0 }, // unused\n    /* macro_bits_unknown_352            */ { bhvAnotherTiltingPlatform, MODEL_BITDW_SLIDING_PLATFORM, 0 }, // unused\n    /* macro_bits_octagonal_platform     */ { bhvOctagonalPlatformRotating, MODEL_BITS_OCTAGONAL_PLATFORM, 0 }, // unused\n    /* macro_bits_staircase              */ { bhvAnimatesOnFloorSwitchPress, MODEL_BITS_STAIRCASE, 0 }, // unused\n    /* macro_empty_355                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_356                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_bits_ferris_wheel_axle      */ { bhvFerrisWheelAxle, MODEL_BITS_FERRIS_WHEEL_AXLE, 0 }, // unused\n    /* macro_bits_arrow_platform         */ { bhvActivatedBackAndForthPlatform, MODEL_BITS_ARROW_PLATFORM, 0 }, // unused\n    /* macro_bits_seesaw_platform        */ { bhvSeesawPlatform, MODEL_BITS_SEESAW_PLATFORM, 0 }, // unused\n    /* macro_bits_tilting_w_platform     */ { bhvSeesawPlatform, MODEL_BITS_TILTING_W_PLATFORM, 0 }, // unused\n    /* macro_empty_361                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_362                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_363                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_364                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n    /* macro_empty_365                   */ { bhvYellowCoin, MODEL_YELLOW_COIN, 0 },\n};\n\nSTATIC_ASSERT(ARRAY_COUNT(sMacroObjectPresets) == macro_count,\n              \"change this array if you are adding macro objects\");\n"
  },
  {
    "path": "include/macros.h",
    "content": "#ifndef MACROS_H\n#define MACROS_H\n\n#include \"platform_info.h\"\n\n#ifndef __sgi\n#define GLOBAL_ASM(...)\n#endif\n\n#if !defined(__sgi) && (!defined(NON_MATCHING) || !defined(AVOID_UB))\n// asm-process isn't supported outside of IDO, and undefined behavior causes\n// crashes.\n#error Matching build is only possible on IDO; please build with NON_MATCHING=1.\n#endif\n\n#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0]))\n\n#define GLUE(a, b) a ## b\n#define GLUE2(a, b) GLUE(a, b)\n\n// Avoid compiler warnings for unused variables\n#ifdef __GNUC__\n#define UNUSED __attribute__((unused))\n#else\n#define UNUSED\n#endif\n\n#ifdef VERSION_CN\n#define UNUSED_CN UNUSED\n#else\n#define UNUSED_CN\n#endif\n\n// Avoid undefined behaviour for non-returning functions\n#ifdef __GNUC__\n#define NORETURN __attribute__((noreturn))\n#else\n#define NORETURN\n#endif\n\n// Static assertions\n#ifdef __GNUC__\n#define STATIC_ASSERT(cond, msg) _Static_assert(cond, msg)\n#else\n#define STATIC_ASSERT(cond, msg) typedef char GLUE2(static_assertion_failed, __LINE__)[(cond) ? 1 : -1]\n#endif\n\n// Align to 8-byte boundary for DMA requirements\n#ifdef __GNUC__\n#define ALIGNED8 __attribute__((aligned(8)))\n#else\n#define ALIGNED8\n#endif\n\n// Align to 16-byte boundary for audio lib requirements\n#ifdef __GNUC__\n#define ALIGNED16 __attribute__((aligned(16)))\n#else\n#define ALIGNED16\n#endif\n\n#ifndef NO_SEGMENTED_MEMORY\n// convert a virtual address to physical.\n#define VIRTUAL_TO_PHYSICAL(addr)   ((uintptr_t)(addr) & 0x1FFFFFFF)\n\n// convert a physical address to virtual.\n#define PHYSICAL_TO_VIRTUAL(addr)   ((uintptr_t)(addr) | 0x80000000)\n\n// another way of converting virtual to physical\n#define VIRTUAL_TO_PHYSICAL2(addr)  ((u8 *)(addr) - 0x80000000U)\n#else\n// no conversion needed other than cast\n#define VIRTUAL_TO_PHYSICAL(addr)   ((uintptr_t)(addr))\n#define PHYSICAL_TO_VIRTUAL(addr)   ((uintptr_t)(addr))\n#define VIRTUAL_TO_PHYSICAL2(addr)  ((void *)(addr))\n#endif\n\n// Stubbed CN debug prints\n#ifdef VERSION_CN\n#define CN_DEBUG_PRINTF(args) osSyncPrintf args\n#else\n#define CN_DEBUG_PRINTF(args)\n#endif\n\n#ifdef VERSION_CN\n#define FORCE_BSS __attribute__((nocommon)) __attribute__((section (\".bss_cn\")))\n#else\n#define FORCE_BSS\n#endif\n\n#endif // MACROS_H\n"
  },
  {
    "path": "include/macros.inc",
    "content": "#ifndef VERSION_CN\n.set gp=64\n#endif\n\n.equ K0BASE, 0x80000000\n.equ K1BASE, 0xA0000000\n.equ K2BASE, 0xC0000000\n\n.macro glabel label\n    .global \\label\n    .balign 4\n    \\label:\n.endm\n\n.macro .word32 x\n    .word \\x\n.endm\n"
  },
  {
    "path": "include/make_const_nonconst.h",
    "content": "#ifndef MAKE_CONST_NONCONST_H\n#define MAKE_CONST_NONCONST_H\n\n#ifdef TARGET_N64\n// IDO sometimes puts const variables in .rodata and sometimes in .data, which breaks ordering.\n// This makes sure all variables are put into the same section (.data). We need to do this for\n// both IDO and gcc for TARGET_N64.\n#define const\n#endif\n\n#endif // MAKE_CONST_NONCONST_H\n"
  },
  {
    "path": "include/mario_animation_ids.h",
    "content": "#ifndef MARIO_ANIMATION_IDS_H\n#define MARIO_ANIMATION_IDS_H\n\n/* Mario Animation IDs */\n\nenum MarioAnimID {\n    /* 0x00 */ MARIO_ANIM_SLOW_LEDGE_GRAB,\n    /* 0x01 */ MARIO_ANIM_FALL_OVER_BACKWARDS,\n    /* 0x02 */ MARIO_ANIM_BACKWARD_AIR_KB,\n    /* 0x03 */ MARIO_ANIM_DYING_ON_BACK,\n    /* 0x04 */ MARIO_ANIM_BACKFLIP,\n    /* 0x05 */ MARIO_ANIM_CLIMB_UP_POLE,\n    /* 0x06 */ MARIO_ANIM_GRAB_POLE_SHORT,\n    /* 0x07 */ MARIO_ANIM_GRAB_POLE_SWING_PART1,\n    /* 0x08 */ MARIO_ANIM_GRAB_POLE_SWING_PART2,\n    /* 0x09 */ MARIO_ANIM_HANDSTAND_IDLE,\n    /* 0x0A */ MARIO_ANIM_HANDSTAND_JUMP,\n    /* 0x0B */ MARIO_ANIM_START_HANDSTAND,\n    /* 0x0C */ MARIO_ANIM_RETURN_FROM_HANDSTAND,\n    /* 0x0D */ MARIO_ANIM_IDLE_ON_POLE,\n    /* 0x0E */ MARIO_ANIM_A_POSE,\n    /* 0x0F */ MARIO_ANIM_SKID_ON_GROUND,\n    /* 0x10 */ MARIO_ANIM_STOP_SKID,\n    /* 0x11 */ MARIO_ANIM_CROUCH_FROM_FAST_LONGJUMP,\n    /* 0x12 */ MARIO_ANIM_CROUCH_FROM_SLOW_LONGJUMP,\n    /* 0x13 */ MARIO_ANIM_FAST_LONGJUMP,\n    /* 0x14 */ MARIO_ANIM_SLOW_LONGJUMP,\n    /* 0x15 */ MARIO_ANIM_AIRBORNE_ON_STOMACH,\n    /* 0x16 */ MARIO_ANIM_WALK_WITH_LIGHT_OBJ,\n    /* 0x17 */ MARIO_ANIM_RUN_WITH_LIGHT_OBJ,\n    /* 0x18 */ MARIO_ANIM_SLOW_WALK_WITH_LIGHT_OBJ,\n    /* 0x19 */ MARIO_ANIM_SHIVERING_WARMING_HAND,\n    /* 0x1A */ MARIO_ANIM_SHIVERING_RETURN_TO_IDLE,\n    /* 0x1B */ MARIO_ANIM_SHIVERING,\n    /* 0x1C */ MARIO_ANIM_CLIMB_DOWN_LEDGE,\n    /* 0x1D */ MARIO_ANIM_CREDITS_WAVING,\n    /* 0x1E */ MARIO_ANIM_CREDITS_LOOK_UP,\n    /* 0x1F */ MARIO_ANIM_CREDITS_RETURN_FROM_LOOK_UP,\n    /* 0x20 */ MARIO_ANIM_CREDITS_RAISE_HAND,\n    /* 0x21 */ MARIO_ANIM_CREDITS_LOWER_HAND,\n    /* 0x22 */ MARIO_ANIM_CREDITS_TAKE_OFF_CAP,\n    /* 0x23 */ MARIO_ANIM_CREDITS_START_WALK_LOOK_UP,\n    /* 0x24 */ MARIO_ANIM_CREDITS_LOOK_BACK_THEN_RUN,\n    /* 0x25 */ MARIO_ANIM_FINAL_BOWSER_RAISE_HAND_SPIN,\n    /* 0x26 */ MARIO_ANIM_FINAL_BOWSER_WING_CAP_TAKE_OFF,\n    /* 0x27 */ MARIO_ANIM_CREDITS_PEACE_SIGN,\n    /* 0x28 */ MARIO_ANIM_STAND_UP_FROM_LAVA_BOOST,\n    /* 0x29 */ MARIO_ANIM_FIRE_LAVA_BURN,\n    /* 0x2A */ MARIO_ANIM_WING_CAP_FLY,\n    /* 0x2B */ MARIO_ANIM_HANG_ON_OWL,\n    /* 0x2C */ MARIO_ANIM_LAND_ON_STOMACH,\n    /* 0x2D */ MARIO_ANIM_AIR_FORWARD_KB,\n    /* 0x2E */ MARIO_ANIM_DYING_ON_STOMACH,\n    /* 0x2F */ MARIO_ANIM_SUFFOCATING,\n    /* 0x30 */ MARIO_ANIM_COUGHING,\n    /* 0x31 */ MARIO_ANIM_THROW_CATCH_KEY,\n    /* 0x32 */ MARIO_ANIM_DYING_FALL_OVER,\n    /* 0x33 */ MARIO_ANIM_IDLE_ON_LEDGE,\n    /* 0x34 */ MARIO_ANIM_FAST_LEDGE_GRAB,\n    /* 0x35 */ MARIO_ANIM_HANG_ON_CEILING,\n    /* 0x36 */ MARIO_ANIM_PUT_CAP_ON,\n    /* 0x37 */ MARIO_ANIM_TAKE_CAP_OFF_THEN_ON,\n    /* 0x38 */ MARIO_ANIM_QUICKLY_PUT_CAP_ON, // unused\n    /* 0x39 */ MARIO_ANIM_HEAD_STUCK_IN_GROUND,\n    /* 0x3A */ MARIO_ANIM_GROUND_POUND_LANDING,\n    /* 0x3B */ MARIO_ANIM_TRIPLE_JUMP_GROUND_POUND,\n    /* 0x3C */ MARIO_ANIM_START_GROUND_POUND,\n    /* 0x3D */ MARIO_ANIM_GROUND_POUND,\n    /* 0x3E */ MARIO_ANIM_BOTTOM_STUCK_IN_GROUND,\n    /* 0x3F */ MARIO_ANIM_IDLE_WITH_LIGHT_OBJ,\n    /* 0x40 */ MARIO_ANIM_JUMP_LAND_WITH_LIGHT_OBJ,\n    /* 0x41 */ MARIO_ANIM_JUMP_WITH_LIGHT_OBJ,\n    /* 0x42 */ MARIO_ANIM_FALL_LAND_WITH_LIGHT_OBJ,\n    /* 0x43 */ MARIO_ANIM_FALL_WITH_LIGHT_OBJ,\n    /* 0x44 */ MARIO_ANIM_FALL_FROM_SLIDING_WITH_LIGHT_OBJ,\n    /* 0x45 */ MARIO_ANIM_SLIDING_ON_BOTTOM_WITH_LIGHT_OBJ,\n    /* 0x46 */ MARIO_ANIM_STAND_UP_FROM_SLIDING_WITH_LIGHT_OBJ,\n    /* 0x47 */ MARIO_ANIM_RIDING_SHELL,\n    /* 0x48 */ MARIO_ANIM_WALKING,\n    /* 0x49 */ MARIO_ANIM_FORWARD_FLIP, // unused\n    /* 0x4A */ MARIO_ANIM_JUMP_RIDING_SHELL,\n    /* 0x4B */ MARIO_ANIM_LAND_FROM_DOUBLE_JUMP,\n    /* 0x4C */ MARIO_ANIM_DOUBLE_JUMP_FALL,\n    /* 0x4D */ MARIO_ANIM_SINGLE_JUMP,\n    /* 0x4E */ MARIO_ANIM_LAND_FROM_SINGLE_JUMP,\n    /* 0x4F */ MARIO_ANIM_AIR_KICK,\n    /* 0x50 */ MARIO_ANIM_DOUBLE_JUMP_RISE,\n    /* 0x51 */ MARIO_ANIM_START_FORWARD_SPINNING, // unused\n    /* 0x52 */ MARIO_ANIM_THROW_LIGHT_OBJECT,\n    /* 0x53 */ MARIO_ANIM_FALL_FROM_SLIDE_KICK,\n    /* 0x54 */ MARIO_ANIM_BEND_KNESS_RIDING_SHELL, // unused\n    /* 0x55 */ MARIO_ANIM_LEGS_STUCK_IN_GROUND,\n    /* 0x56 */ MARIO_ANIM_GENERAL_FALL,\n    /* 0x57 */ MARIO_ANIM_GENERAL_LAND,\n    /* 0x58 */ MARIO_ANIM_BEING_GRABBED,\n    /* 0x59 */ MARIO_ANIM_GRAB_HEAVY_OBJECT,\n    /* 0x5A */ MARIO_ANIM_SLOW_LAND_FROM_DIVE,\n    /* 0x5B */ MARIO_ANIM_FLY_FROM_CANNON,\n    /* 0x5C */ MARIO_ANIM_MOVE_ON_WIRE_NET_RIGHT,\n    /* 0x5D */ MARIO_ANIM_MOVE_ON_WIRE_NET_LEFT,\n    /* 0x5E */ MARIO_ANIM_MISSING_CAP,\n    /* 0x5F */ MARIO_ANIM_PULL_DOOR_WALK_IN,\n    /* 0x60 */ MARIO_ANIM_PUSH_DOOR_WALK_IN,\n    /* 0x61 */ MARIO_ANIM_UNLOCK_DOOR,\n    /* 0x62 */ MARIO_ANIM_START_REACH_POCKET, // unused, reaching keys maybe?\n    /* 0x63 */ MARIO_ANIM_REACH_POCKET, // unused\n    /* 0x64 */ MARIO_ANIM_STOP_REACH_POCKET, // unused\n    /* 0x65 */ MARIO_ANIM_GROUND_THROW,\n    /* 0x66 */ MARIO_ANIM_GROUND_KICK,\n    /* 0x67 */ MARIO_ANIM_FIRST_PUNCH,\n    /* 0x68 */ MARIO_ANIM_SECOND_PUNCH,\n    /* 0x69 */ MARIO_ANIM_FIRST_PUNCH_FAST,\n    /* 0x6A */ MARIO_ANIM_SECOND_PUNCH_FAST,\n    /* 0x6B */ MARIO_ANIM_PICK_UP_LIGHT_OBJ,\n    /* 0x6C */ MARIO_ANIM_PUSHING,\n    /* 0x6D */ MARIO_ANIM_START_RIDING_SHELL,\n    /* 0x6E */ MARIO_ANIM_PLACE_LIGHT_OBJ,\n    /* 0x6F */ MARIO_ANIM_FORWARD_SPINNING,\n    /* 0x70 */ MARIO_ANIM_BACKWARD_SPINNING,\n    /* 0x71 */ MARIO_ANIM_BREAKDANCE,\n    /* 0x72 */ MARIO_ANIM_RUNNING,\n    /* 0x73 */ MARIO_ANIM_RUNNING_UNUSED, // unused duplicate, originally part 2?\n    /* 0x74 */ MARIO_ANIM_SOFT_BACK_KB,\n    /* 0x75 */ MARIO_ANIM_SOFT_FRONT_KB,\n    /* 0x76 */ MARIO_ANIM_DYING_IN_QUICKSAND,\n    /* 0x77 */ MARIO_ANIM_IDLE_IN_QUICKSAND,\n    /* 0x78 */ MARIO_ANIM_MOVE_IN_QUICKSAND,\n    /* 0x79 */ MARIO_ANIM_ELECTROCUTION,\n    /* 0x7A */ MARIO_ANIM_SHOCKED,\n    /* 0x7B */ MARIO_ANIM_BACKWARD_KB,\n    /* 0x7C */ MARIO_ANIM_FORWARD_KB,\n    /* 0x7D */ MARIO_ANIM_IDLE_HEAVY_OBJ,\n    /* 0x7E */ MARIO_ANIM_STAND_AGAINST_WALL,\n    /* 0x7F */ MARIO_ANIM_SIDESTEP_LEFT,\n    /* 0x80 */ MARIO_ANIM_SIDESTEP_RIGHT,\n    /* 0x81 */ MARIO_ANIM_START_SLEEP_IDLE,\n    /* 0x82 */ MARIO_ANIM_START_SLEEP_SCRATCH,\n    /* 0x83 */ MARIO_ANIM_START_SLEEP_YAWN,\n    /* 0x84 */ MARIO_ANIM_START_SLEEP_SITTING,\n    /* 0x85 */ MARIO_ANIM_SLEEP_IDLE,\n    /* 0x86 */ MARIO_ANIM_SLEEP_START_LYING,\n    /* 0x87 */ MARIO_ANIM_SLEEP_LYING,\n    /* 0x88 */ MARIO_ANIM_DIVE,\n    /* 0x89 */ MARIO_ANIM_SLIDE_DIVE,\n    /* 0x8A */ MARIO_ANIM_GROUND_BONK,\n    /* 0x8B */ MARIO_ANIM_STOP_SLIDE_LIGHT_OBJ,\n    /* 0x8C */ MARIO_ANIM_SLIDE_KICK,\n    /* 0x8D */ MARIO_ANIM_CROUCH_FROM_SLIDE_KICK,\n    /* 0x8E */ MARIO_ANIM_SLIDE_MOTIONLESS, // unused\n    /* 0x8F */ MARIO_ANIM_STOP_SLIDE,\n    /* 0x90 */ MARIO_ANIM_FALL_FROM_SLIDE,\n    /* 0x91 */ MARIO_ANIM_SLIDE,\n    /* 0x92 */ MARIO_ANIM_TIPTOE,\n    /* 0x93 */ MARIO_ANIM_TWIRL_LAND,\n    /* 0x94 */ MARIO_ANIM_TWIRL,\n    /* 0x95 */ MARIO_ANIM_START_TWIRL,\n    /* 0x96 */ MARIO_ANIM_STOP_CROUCHING,\n    /* 0x97 */ MARIO_ANIM_START_CROUCHING,\n    /* 0x98 */ MARIO_ANIM_CROUCHING,\n    /* 0x99 */ MARIO_ANIM_CRAWLING,\n    /* 0x9A */ MARIO_ANIM_STOP_CRAWLING,\n    /* 0x9B */ MARIO_ANIM_START_CRAWLING,\n    /* 0x9C */ MARIO_ANIM_SUMMON_STAR,\n    /* 0x9D */ MARIO_ANIM_RETURN_STAR_APPROACH_DOOR,\n    /* 0x9E */ MARIO_ANIM_BACKWARDS_WATER_KB,\n    /* 0x9F */ MARIO_ANIM_SWIM_WITH_OBJ_PART1,\n    /* 0xA0 */ MARIO_ANIM_SWIM_WITH_OBJ_PART2,\n    /* 0xA1 */ MARIO_ANIM_FLUTTERKICK_WITH_OBJ,\n    /* 0xA2 */ MARIO_ANIM_WATER_ACTION_END_WITH_OBJ, // either swimming or flutterkicking\n    /* 0xA3 */ MARIO_ANIM_STOP_GRAB_OBJ_WATER,\n    /* 0xA4 */ MARIO_ANIM_WATER_IDLE_WITH_OBJ,\n    /* 0xA5 */ MARIO_ANIM_DROWNING_PART1,\n    /* 0xA6 */ MARIO_ANIM_DROWNING_PART2,\n    /* 0xA7 */ MARIO_ANIM_WATER_DYING,\n    /* 0xA8 */ MARIO_ANIM_WATER_FORWARD_KB,\n    /* 0xA9 */ MARIO_ANIM_FALL_FROM_WATER,\n    /* 0xAA */ MARIO_ANIM_SWIM_PART1,\n    /* 0xAB */ MARIO_ANIM_SWIM_PART2,\n    /* 0xAC */ MARIO_ANIM_FLUTTERKICK,\n    /* 0xAD */ MARIO_ANIM_WATER_ACTION_END, // either swimming or flutterkicking\n    /* 0xAE */ MARIO_ANIM_WATER_PICK_UP_OBJ,\n    /* 0xAF */ MARIO_ANIM_WATER_GRAB_OBJ_PART2,\n    /* 0xB0 */ MARIO_ANIM_WATER_GRAB_OBJ_PART1,\n    /* 0xB1 */ MARIO_ANIM_WATER_THROW_OBJ,\n    /* 0xB2 */ MARIO_ANIM_WATER_IDLE,\n    /* 0xB3 */ MARIO_ANIM_WATER_STAR_DANCE,\n    /* 0xB4 */ MARIO_ANIM_RETURN_FROM_WATER_STAR_DANCE,\n    /* 0xB5 */ MARIO_ANIM_GRAB_BOWSER,\n    /* 0xB6 */ MARIO_ANIM_SWINGING_BOWSER,\n    /* 0xB7 */ MARIO_ANIM_RELEASE_BOWSER,\n    /* 0xB8 */ MARIO_ANIM_HOLDING_BOWSER,\n    /* 0xB9 */ MARIO_ANIM_HEAVY_THROW,\n    /* 0xBA */ MARIO_ANIM_WALK_PANTING,\n    /* 0xBB */ MARIO_ANIM_WALK_WITH_HEAVY_OBJ,\n    /* 0xBC */ MARIO_ANIM_TURNING_PART1,\n    /* 0xBD */ MARIO_ANIM_TURNING_PART2,\n    /* 0xBE */ MARIO_ANIM_SLIDEFLIP_LAND,\n    /* 0xBF */ MARIO_ANIM_SLIDEFLIP,\n    /* 0xC0 */ MARIO_ANIM_TRIPLE_JUMP_LAND,\n    /* 0xC1 */ MARIO_ANIM_TRIPLE_JUMP,\n    /* 0xC2 */ MARIO_ANIM_FIRST_PERSON,\n    /* 0xC3 */ MARIO_ANIM_IDLE_HEAD_LEFT,\n    /* 0xC4 */ MARIO_ANIM_IDLE_HEAD_RIGHT,\n    /* 0xC5 */ MARIO_ANIM_IDLE_HEAD_CENTER,\n    /* 0xC6 */ MARIO_ANIM_HANDSTAND_LEFT,\n    /* 0xC7 */ MARIO_ANIM_HANDSTAND_RIGHT,\n    /* 0xC8 */ MARIO_ANIM_WAKE_FROM_SLEEP,\n    /* 0xC9 */ MARIO_ANIM_WAKE_FROM_LYING,\n    /* 0xCA */ MARIO_ANIM_START_TIPTOE,\n    /* 0xCB */ MARIO_ANIM_SLIDEJUMP, // pole jump and wall kick\n    /* 0xCC */ MARIO_ANIM_START_WALLKICK,\n    /* 0xCD */ MARIO_ANIM_STAR_DANCE,\n    /* 0xCE */ MARIO_ANIM_RETURN_FROM_STAR_DANCE,\n    /* 0xCF */ MARIO_ANIM_FORWARD_SPINNING_FLIP,\n    /* 0xD0 */ MARIO_ANIM_TRIPLE_JUMP_FLY\n};\n\n#endif // MARIO_ANIMATION_IDS_H\n"
  },
  {
    "path": "include/mario_geo_switch_case_ids.h",
    "content": "#ifndef MARIO_GEO_SWITCH_CASE_IDS_H\n#define MARIO_GEO_SWITCH_CASE_IDS_H\n\n/* Mario Geo-Switch-Case IDs */\n\nenum MarioEyesGSCId {\n    /*0x00*/ MARIO_EYES_BLINK,\n    /*0x01*/ MARIO_EYES_OPEN,\n    /*0x02*/ MARIO_EYES_HALF_CLOSED,\n    /*0x03*/ MARIO_EYES_CLOSED,\n    /*0x04*/ MARIO_EYES_LOOK_LEFT,  // unused\n    /*0x05*/ MARIO_EYES_LOOK_RIGHT, // unused\n    /*0x06*/ MARIO_EYES_LOOK_UP,    // unused\n    /*0x07*/ MARIO_EYES_LOOK_DOWN,  // unused\n    /*0x08*/ MARIO_EYES_DEAD\n};\n\nenum MarioHandGSCId {\n    /*0x00*/ MARIO_HAND_FISTS,\n    /*0x01*/ MARIO_HAND_OPEN,\n    /*0x02*/ MARIO_HAND_PEACE_SIGN,\n    /*0x03*/ MARIO_HAND_HOLDING_CAP,\n    /*0x04*/ MARIO_HAND_HOLDING_WING_CAP,\n    /*0x05*/ MARIO_HAND_RIGHT_OPEN\n};\n\nenum MarioCapGSCId {\n    /*0x00*/ MARIO_HAS_DEFAULT_CAP_ON,\n    /*0x01*/ MARIO_HAS_DEFAULT_CAP_OFF,\n    /*0x02*/ MARIO_HAS_WING_CAP_ON,\n    /*0x03*/ MARIO_HAS_WING_CAP_OFF // unused\n};\n\nenum MarioGrabPosGSCId {\n    /*0x00*/ GRAB_POS_NULL,\n    /*0x01*/ GRAB_POS_LIGHT_OBJ,\n    /*0x02*/ GRAB_POS_HEAVY_OBJ,\n    /*0x03*/ GRAB_POS_BOWSER\n};\n\n#endif // MARIO_GEO_SWITCH_CASE_IDS_H\n"
  },
  {
    "path": "include/model_ids.h",
    "content": "#ifndef MODEL_IDS_H\n#define MODEL_IDS_H\n\n#define ACT_1 (1 << 0)\n#define ACT_2 (1 << 1)\n#define ACT_3 (1 << 2)\n#define ACT_4 (1 << 3)\n#define ACT_5 (1 << 4)\n#define ACT_6 (1 << 5)\n\n// If an object is set as active for the first 5 acts only, it is treated as always active.\n// It's possible that there were only planned to be 5 acts per level early in development.\n// Hence, they added a macro so they wouldn't have to change the acts for every object.\n#define ALL_ACTS_MACRO ACT_1 | ACT_2 | ACT_3 | ACT_4 | ACT_5\n#define ALL_ACTS       ACT_1 | ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6\n\n#define MODEL_NONE                        0x00\n\n/* Global models that are loaded for every level */\n\n#define MODEL_MARIO                       0x01        // mario_geo\n#define MODEL_LUIGI                       0x02        // unused\n\n/* Various static level geometry, the geo layout differs but terrain object presets treat them the same.*/\n\n#define MODEL_LEVEL_GEOMETRY_03                0x03\n#define MODEL_LEVEL_GEOMETRY_04                0x04\n#define MODEL_LEVEL_GEOMETRY_05                0x05\n#define MODEL_LEVEL_GEOMETRY_06                0x06\n#define MODEL_LEVEL_GEOMETRY_07                0x07\n#define MODEL_LEVEL_GEOMETRY_08                0x08\n#define MODEL_LEVEL_GEOMETRY_09                0x09\n#define MODEL_LEVEL_GEOMETRY_0A                0x0A\n#define MODEL_LEVEL_GEOMETRY_0B                0x0B\n#define MODEL_LEVEL_GEOMETRY_0C                0x0C\n#define MODEL_LEVEL_GEOMETRY_0D                0x0D\n#define MODEL_LEVEL_GEOMETRY_0E                0x0E\n#define MODEL_LEVEL_GEOMETRY_0F                0x0F\n#define MODEL_LEVEL_GEOMETRY_10                0x10\n#define MODEL_LEVEL_GEOMETRY_11                0x11\n#define MODEL_LEVEL_GEOMETRY_12                0x12\n#define MODEL_LEVEL_GEOMETRY_13                0x13\n#define MODEL_LEVEL_GEOMETRY_14                0x14\n#define MODEL_LEVEL_GEOMETRY_15                0x15\n#define MODEL_LEVEL_GEOMETRY_16                0x16\n\n#define MODEL_BOB_BUBBLY_TREE                  0x17        // bubbly_tree_geo\n#define MODEL_WDW_BUBBLY_TREE                  0x17        // bubbly_tree_geo\n#define MODEL_CASTLE_GROUNDS_BUBBLY_TREE       0x17        // bubbly_tree_geo\n#define MODEL_WF_BUBBLY_TREE                   0x17        // bubbly_tree_geo\n#define MODEL_THI_BUBBLY_TREE                  0x17        // bubbly_tree_geo\n#define MODEL_COURTYARD_SPIKY_TREE             0x18        // spiky_tree_geo\n#define MODEL_CCM_SNOW_TREE                    0x19        // snow_tree_geo\n#define MODEL_SL_SNOW_TREE                     0x19        // snow_tree_geo\n#define MODEL_UNKNOWN_TREE_1A                  0x1A        // referenced in special presets, undefined\n#define MODEL_SSL_PALM_TREE                    0x1B        // palm_tree_geo\n#define MODEL_CASTLE_CASTLE_DOOR_UNUSED        0x1C        // castle_door_geo - unused, original id\n#define MODEL_CASTLE_WOODEN_DOOR_UNUSED        0x1D        // wooden_door_geo - unused, original id\n#define MODEL_BBH_HAUNTED_DOOR                 0x1D        // haunted_door_geo\n#define MODEL_HMC_WOODEN_DOOR                  0x1D        // wooden_door_geo\n#define MODEL_UNKNOWN_DOOR_1E                  0x1E        // referenced in special presets, undefined\n#define MODEL_HMC_METAL_DOOR                   0x1F        // metal_door_geo\n#define MODEL_HMC_HAZY_MAZE_DOOR               0x20        // hazy_maze_door_geo\n#define MODEL_UNKNOWN_DOOR_21                  0x21        // referenced in special presets, undefined\n#define MODEL_CASTLE_DOOR_0_STARS              0x22        // castle_door_0_star_geo\n#define MODEL_CASTLE_DOOR_1_STAR               0x23        // castle_door_1_star_geo\n#define MODEL_CASTLE_DOOR_3_STARS              0x24        // castle_door_3_stars_geo\n#define MODEL_CASTLE_KEY_DOOR                  0x25        // key_door_geo\n#define MODEL_CASTLE_CASTLE_DOOR               0x26        // castle_door_geo - used duplicate\n#define MODEL_CASTLE_GROUNDS_CASTLE_DOOR       0x26        // castle_door_geo - used duplicate\n#define MODEL_CASTLE_WOODEN_DOOR               0x27        // wooden_door_geo\n#define MODEL_COURTYARD_WOODEN_DOOR            0x27        // wooden_door_geo\n#define MODEL_CCM_CABIN_DOOR                   0x27        // cabin_door_geo\n#define MODEL_UNKNOWN_DOOR_28                  0x28        // referenced in special presets, undefined\n#define MODEL_CASTLE_METAL_DOOR                0x29        // metal_door_geo\n#define MODEL_CASTLE_GROUNDS_METAL_DOOR        0x29        // metal_door_geo\n#define MODEL_UNKNOWN_DOOR_2A                  0x2A        // referenced in special presets, undefined\n#define MODEL_UNKNOWN_DOOR_2B                  0x2B        // referenced in special presets, undefined\n#define MODEL_WF_TOWER_TRAPEZOID_PLATORM       0x2C        // wf_geo_000AF8 - unused\n#define MODEL_WF_TOWER_SQUARE_PLATORM          0x2D        // wf_geo_000B10\n#define MODEL_WF_TOWER_SQUARE_PLATORM_UNUSED   0x2E        // wf_geo_000B38 - unused & duplicated\n#define MODEL_WF_TOWER_SQUARE_PLATORM_ELEVATOR 0x2F        // wf_geo_000B60 - elevator platorm\n\n// Level model IDs\n\n// bbh\n#define MODEL_BBH_STAIRCASE_STEP               0x35        // geo_bbh_0005B0\n#define MODEL_BBH_TILTING_FLOOR_PLATFORM       0x36        // geo_bbh_0005C8\n#define MODEL_BBH_TUMBLING_PLATFORM            0x37        // geo_bbh_0005E0\n#define MODEL_BBH_TUMBLING_PLATFORM_PART       0x38        // geo_bbh_0005F8\n#define MODEL_BBH_MOVING_BOOKSHELF             0x39        // geo_bbh_000610\n#define MODEL_BBH_MESH_ELEVATOR                0x3A        // geo_bbh_000628\n#define MODEL_BBH_MERRY_GO_ROUND               0x3B        // geo_bbh_000640\n#define MODEL_BBH_WOODEN_TOMB                  0x3C        // geo_bbh_000658\n\n// ccm\n#define MODEL_CCM_ROPEWAY_LIFT                 0x36        // ccm_geo_0003D0\n#define MODEL_CCM_SNOWMAN_HEAD                 0x37        // ccm_geo_00040C\n\n// castle\n#define MODEL_CASTLE_BOWSER_TRAP               0x35        // castle_geo_000F18\n#define MODEL_CASTLE_WATER_LEVEL_PILLAR        0x36        // castle_geo_001940\n#define MODEL_CASTLE_CLOCK_MINUTE_HAND         0x37        // castle_geo_001530\n#define MODEL_CASTLE_CLOCK_HOUR_HAND           0x38        // castle_geo_001548\n#define MODEL_CASTLE_CLOCK_PENDULUM            0x39        // castle_geo_001518\n\n// hmc\n#define MODEL_HMC_METAL_PLATFORM               0x36        // hmc_geo_0005A0\n#define MODEL_HMC_METAL_ARROW_PLATFORM         0x37        // hmc_geo_0005B8\n#define MODEL_HMC_ELEVATOR_PLATFORM            0x38        // hmc_geo_0005D0\n#define MODEL_HMC_ROLLING_ROCK                 0x39        // hmc_geo_000548\n#define MODEL_HMC_ROCK_PIECE                   0x3A        // hmc_geo_000570 - unused\n#define MODEL_HMC_ROCK_SMALL_PIECE             0x3B        // hmc_geo_000588 - unused\n#define MODEL_HMC_RED_GRILLS                   0x3C        // hmc_geo_000530\n\n// ssl\n#define MODEL_SSL_PYRAMID_TOP                  0x3A        // ssl_geo_000618\n#define MODEL_SSL_GRINDEL                      0x36        // ssl_geo_000734\n#define MODEL_SSL_SPINDEL                      0x37        // ssl_geo_000764\n#define MODEL_SSL_MOVING_PYRAMID_WALL          0x38        // ssl_geo_000794\n#define MODEL_SSL_PYRAMID_ELEVATOR             0x39        // ssl_geo_0007AC\n\n// bob\n#define MODEL_BOB_CHAIN_CHOMP_GATE             0x36        // bob_geo_000440\n#define MODEL_BOB_SEESAW_PLATFORM              0x37        // bob_geo_000458\n#define MODEL_BOB_BARS_GRILLS                  0x38        // bob_geo_000470\n\n// sl\n#define MODEL_SL_SNOW_TRIANGLE                 0x36        // sl_geo_000390\n#define MODEL_SL_CRACKED_ICE                   0x37        // sl_geo_000360 - unused\n#define MODEL_SL_CRACKED_ICE_CHUNK             0x38        // sl_geo_000378 - unused\n\n// wdw\n#define MODEL_WDW_SQUARE_FLOATING_PLATFORM        0x36        // wdw_geo_000580\n#define MODEL_WDW_ARROW_LIFT                      0x37        // wdw_geo_000598\n#define MODEL_WDW_WATER_LEVEL_DIAMOND             0x38        // wdw_geo_0005C0\n#define MODEL_WDW_HIDDEN_PLATFORM                 0x39        // wdw_geo_0005E8\n#define MODEL_WDW_EXPRESS_ELEVATOR                0x3A        // wdw_geo_000610\n#define MODEL_WDW_RECTANGULAR_FLOATING_PLATFORM   0x3B        // wdw_geo_000628\n#define MODEL_WDW_ROTATING_PLATFORM               0x3C        // wdw_geo_000640\n\n// jrb\n#define MODEL_JRB_SHIP_LEFT_HALF_PART             0x35        // jrb_geo_000978\n#define MODEL_JRB_SHIP_BACK_LEFT_PART             0x36        // jrb_geo_0009B0\n#define MODEL_JRB_SHIP_RIGHT_HALF_PART            0x37        // jrb_geo_0009E8\n#define MODEL_JRB_SHIP_BACK_RIGHT_PART            0x38        // jrb_geo_000A00\n#define MODEL_JRB_SUNKEN_SHIP                     0x39        // jrb_geo_000990\n#define MODEL_JRB_SUNKEN_SHIP_BACK                0x3A        // jrb_geo_0009C8\n#define MODEL_JRB_ROCK                            0x3B        // jrb_geo_000930\n#define MODEL_JRB_SLIDING_BOX                     0x3C        // jrb_geo_000960\n#define MODEL_JRB_FALLING_PILLAR                  0x3D        // jrb_geo_000900\n#define MODEL_JRB_FALLING_PILLAR_BASE             0x3E        // jrb_geo_000918\n#define MODEL_JRB_FLOATING_PLATFORM               0x3F        // jrb_geo_000948\n\n// thi\n#define MODEL_THI_HUGE_ISLAND_TOP                 0x36        // thi_geo_0005B0\n#define MODEL_THI_TINY_ISLAND_TOP                 0x37        // thi_geo_0005C8\n\n// ttc\n#define MODEL_TTC_ROTATING_CUBE                   0x36        // ttc_geo_000240\n#define MODEL_TTC_ROTATING_PRISM                  0x37        // ttc_geo_000258\n#define MODEL_TTC_PENDULUM                        0x38        // ttc_geo_000270\n#define MODEL_TTC_LARGE_TREADMILL                 0x39        // ttc_geo_000288\n#define MODEL_TTC_SMALL_TREADMILL                 0x3A        // ttc_geo_0002A8\n#define MODEL_TTC_PUSH_BLOCK                      0x3B        // ttc_geo_0002C8\n#define MODEL_TTC_ROTATING_HEXAGON                0x3C        // ttc_geo_0002E0\n#define MODEL_TTC_ROTATING_TRIANGLE               0x3D        // ttc_geo_0002F8\n#define MODEL_TTC_PIT_BLOCK                       0x3E        // ttc_geo_000310 - has 2 vertical stripes\n#define MODEL_TTC_PIT_BLOCK_UNUSED                0x3F        // ttc_geo_000328 - has 3 vertical stripes, unused\n#define MODEL_TTC_ELEVATOR_PLATFORM               0x40        // ttc_geo_000340\n#define MODEL_TTC_CLOCK_HAND                      0x41        // ttc_geo_000358\n#define MODEL_TTC_SPINNER                         0x42        // ttc_geo_000370\n#define MODEL_TTC_SMALL_GEAR                      0x43        // ttc_geo_000388\n#define MODEL_TTC_LARGE_GEAR                      0x44        // ttc_geo_0003A0\n\n// rr\n#define MODEL_RR_SLIDING_PLATFORM                 0x36        // rr_geo_0008C0\n#define MODEL_RR_FLYING_CARPET                    0x37        // rr_geo_000848\n#define MODEL_RR_OCTAGONAL_PLATFORM               0x38        // rr_geo_0008A8\n#define MODEL_RR_ROTATING_BRIDGE_PLATFORM         0x39        // rr_geo_000878\n#define MODEL_RR_TRIANGLE_PLATFORM                0x3A        // rr_geo_0008D8 - unused\n#define MODEL_RR_CRUISER_WING                     0x3B        // rr_geo_000890\n#define MODEL_RR_SEESAW_PLATFORM                  0x3C        // rr_geo_000908\n#define MODEL_RR_L_SHAPED_PLATFORM                0x3D        // rr_geo_000940 - unused\n#define MODEL_RR_SWINGING_PLATFORM                0x3E        // rr_geo_000860\n#define MODEL_RR_DONUT_PLATFORM                   0x3F        // rr_geo_000920\n#define MODEL_RR_ELEVATOR_PLATFORM                0x40        // rr_geo_0008F0\n#define MODEL_RR_TRICKY_TRIANGLES                 0x41        // rr_geo_000958\n#define MODEL_RR_TRICKY_TRIANGLES_FRAME1          0x42        // rr_geo_000970\n#define MODEL_RR_TRICKY_TRIANGLES_FRAME2          0x43        // rr_geo_000988\n#define MODEL_RR_TRICKY_TRIANGLES_FRAME3          0x44        // rr_geo_0009A0\n#define MODEL_RR_TRICKY_TRIANGLES_FRAME4          0x45        // rr_geo_0009B8\n\n// castle grounds\n\n// bitdw\n#define MODEL_BITDW_SQUARE_PLATFORM               0x36        // geo_bitdw_000558\n#define MODEL_BITDW_SEESAW_PLATFORM               0x37        // geo_bitdw_000540\n#define MODEL_BITDW_SLIDING_PLATFORM              0x38        // geo_bitdw_000528\n#define MODEL_BITDW_FERRIS_WHEEL_AXLE             0x39        // geo_bitdw_000570\n#define MODEL_BITDW_BLUE_PLATFORM                 0x3A        // geo_bitdw_000588\n#define MODEL_BITDW_STAIRCASE_FRAME4              0x3B        // geo_bitdw_0005A0\n#define MODEL_BITDW_STAIRCASE_FRAME3              0x3C        // geo_bitdw_0005B8\n#define MODEL_BITDW_STAIRCASE_FRAME2              0x3D        // geo_bitdw_0005D0\n#define MODEL_BITDW_STAIRCASE_FRAME1              0x3E        // geo_bitdw_0005E8\n#define MODEL_BITDW_STAIRCASE                     0x3F        // geo_bitdw_000600\n\n// vcutm\n#define MODEL_VCUTM_SEESAW_PLATFORM               0x36        // vcutm_geo_0001F0\n#define MODEL_VCUTM_CHECKERBOARD_PLATFORM_SPAWNER 0x37        //! @bug this object doesn't have a geo associated with it, yet is placed in vcutm.\n                                                              //  This causes a crash when the player quickly looks towards the\n                                                              //  checkerboard platforms after spawning but before it is unloaded.\n\n// bitfs\n#define MODEL_BITFS_PLATFORM_ON_TRACK             0x36        // bitfs_geo_000758\n#define MODEL_BITFS_TILTING_SQUARE_PLATFORM       0x37        // bitfs_geo_0006C0\n#define MODEL_BITFS_SINKING_PLATFORMS             0x38        // bitfs_geo_000770\n#define MODEL_BITFS_BLUE_POLE                     0x39        // bitfs_geo_0006A8\n#define MODEL_BITFS_SINKING_CAGE_PLATFORM         0x3A        // bitfs_geo_000690\n#define MODEL_BITFS_ELEVATOR                      0x3B        // bitfs_geo_000678\n#define MODEL_BITFS_STRETCHING_PLATFORMS          0x3C        // bitfs_geo_000708\n#define MODEL_BITFS_SEESAW_PLATFORM               0x3D        // bitfs_geo_000788\n#define MODEL_BITFS_MOVING_SQUARE_PLATFORM        0x3E        // bitfs_geo_000728\n#define MODEL_BITFS_SLIDING_PLATFORM              0x3F        // bitfs_geo_000740\n#define MODEL_BITFS_TUMBLING_PLATFORM_PART        0x40        // bitfs_geo_0006D8\n#define MODEL_BITFS_TUMBLING_PLATFORM             0x41        // bitfs_geo_0006F0\n\n// sa\n\n// bits\n#define MODEL_BITS_SLIDING_PLATFORM               0x36        // bits_geo_0005E0\n#define MODEL_BITS_TWIN_SLIDING_PLATFORMS         0x37        // bits_geo_0005F8\n#define MODEL_BITS_OCTAGONAL_PLATFORM             0x39        // bits_geo_000610\n#define MODEL_BITS_BLUE_PLATFORM                  0x3C        // bits_geo_000628\n#define MODEL_BITS_FERRIS_WHEEL_AXLE              0x3D        // bits_geo_000640\n#define MODEL_BITS_ARROW_PLATFORM                 0x3E        // bits_geo_000658\n#define MODEL_BITS_SEESAW_PLATFORM                0x3F        // bits_geo_000670\n#define MODEL_BITS_TILTING_W_PLATFORM             0x40        // bits_geo_000688\n#define MODEL_BITS_STAIRCASE                      0x41        // bits_geo_0006A0\n#define MODEL_BITS_STAIRCASE_FRAME1               0x42        // bits_geo_0006B8\n#define MODEL_BITS_STAIRCASE_FRAME2               0x43        // bits_geo_0006D0\n#define MODEL_BITS_STAIRCASE_FRAME3               0x44        // bits_geo_0006E8\n#define MODEL_BITS_STAIRCASE_FRAME4               0x45        // bits_geo_000700\n#define MODEL_BITS_WARP_PIPE                      0x49        // warp_pipe_geo\n\n// lll\n#define MODEL_LLL_DRAWBRIDGE_PART                 0x38        // lll_geo_000B20\n#define MODEL_LLL_ROTATING_BLOCK_FIRE_BARS        0x3A        // lll_geo_000B38\n#define MODEL_LLL_ROTATING_HEXAGONAL_RING         0x3E        // lll_geo_000BB0\n#define MODEL_LLL_SINKING_RECTANGULAR_PLATFORM    0x3F        // lll_geo_000BC8\n#define MODEL_LLL_SINKING_SQUARE_PLATFORMS        0x40        // lll_geo_000BE0\n#define MODEL_LLL_TILTING_SQUARE_PLATFORM         0x41        // lll_geo_000BF8\n#define MODEL_LLL_BOWSER_PIECE_1                  0x43        // lll_geo_000C10\n#define MODEL_LLL_BOWSER_PIECE_2                  0x44        // lll_geo_000C30\n#define MODEL_LLL_BOWSER_PIECE_3                  0x45        // lll_geo_000C50\n#define MODEL_LLL_BOWSER_PIECE_4                  0x46        // lll_geo_000C70\n#define MODEL_LLL_BOWSER_PIECE_5                  0x47        // lll_geo_000C90\n#define MODEL_LLL_BOWSER_PIECE_6                  0x48        // lll_geo_000CB0\n#define MODEL_LLL_BOWSER_PIECE_7                  0x49        // lll_geo_000CD0\n#define MODEL_LLL_BOWSER_PIECE_8                  0x4A        // lll_geo_000CF0\n#define MODEL_LLL_BOWSER_PIECE_9                  0x4B        // lll_geo_000D10\n#define MODEL_LLL_BOWSER_PIECE_10                 0x4C        // lll_geo_000D30\n#define MODEL_LLL_BOWSER_PIECE_11                 0x4D        // lll_geo_000D50\n#define MODEL_LLL_BOWSER_PIECE_12                 0x4E        // lll_geo_000D70\n#define MODEL_LLL_BOWSER_PIECE_13                 0x4F        // lll_geo_000D90\n#define MODEL_LLL_BOWSER_PIECE_14                 0x50        // lll_geo_000DB0\n#define MODEL_LLL_MOVING_OCTAGONAL_MESH_PLATFORM  0x36        // lll_geo_000B08\n#define MODEL_LLL_SINKING_ROCK_BLOCK              0x37        // lll_geo_000DD0\n#define MODEL_LLL_ROLLING_LOG                     0x39        // lll_geo_000DE8\n#define MODEL_LLL_WOOD_BRIDGE                     0x35        // lll_geo_000B50\n#define MODEL_LLL_LARGE_WOOD_BRIDGE               0x3B        // lll_geo_000B68\n#define MODEL_LLL_FALLING_PLATFORM                0x3C        // lll_geo_000B80\n#define MODEL_LLL_LARGE_FALLING_PLATFORM          0x3D        // lll_geo_000B98\n#define MODEL_LLL_VOLCANO_FALLING_TRAP            0x53        // lll_geo_000EA8\n\n// ddd\n#define MODEL_DDD_BOWSER_SUB_DOOR                 0x36        // ddd_geo_000478\n#define MODEL_DDD_BOWSER_SUB                      0x37        // ddd_geo_0004A0\n#define MODEL_DDD_POLE                            0x38        // ddd_geo_000450\n\n// wf\n#define MODEL_WF_BREAKABLE_WALL_RIGHT             0x36        // wf_geo_000B78\n#define MODEL_WF_BREAKABLE_WALL_LEFT              0x37        // wf_geo_000B90\n#define MODEL_WF_KICKABLE_BOARD                   0x38        // wf_geo_000BA8\n#define MODEL_WF_TOWER_DOOR                       0x39        // wf_geo_000BE0\n#define MODEL_WF_KICKABLE_BOARD_FELLED            0x3A        // wf_geo_000BC8\n\n// ending\n\n// castle grounds\n#define MODEL_CASTLE_GROUNDS_VCUTM_GRILL          0x36        // castle_grounds_geo_00070C\n#define MODEL_CASTLE_GROUNDS_FLAG                 0x37        // castle_grounds_geo_000660\n#define MODEL_CASTLE_GROUNDS_CANNON_GRILL         0x38        // castle_grounds_geo_000724\n\n// pss\n\n// cotmc\n\n// totwc\n\n// bowser 1\n\n// wmotr\n\n// bowser 2\n#define MODEL_BOWSER_2_TILTING_ARENA              0x36        // bowser_2_geo_000170\n\n// bowser 3\n#define MODEL_BOWSER_3_FALLING_PLATFORM_1         0x36        // bowser_3_geo_000290\n#define MODEL_BOWSER_3_FALLING_PLATFORM_2         0x37        // bowser_3_geo_0002A8\n#define MODEL_BOWSER_3_FALLING_PLATFORM_3         0x38        // bowser_3_geo_0002C0\n#define MODEL_BOWSER_3_FALLING_PLATFORM_4         0x39        // bowser_3_geo_0002D8\n#define MODEL_BOWSER_3_FALLING_PLATFORM_5         0x3A        // bowser_3_geo_0002F0\n#define MODEL_BOWSER_3_FALLING_PLATFORM_6         0x3B        // bowser_3_geo_000308\n#define MODEL_BOWSER_3_FALLING_PLATFORM_7         0x3C        // bowser_3_geo_000320\n#define MODEL_BOWSER_3_FALLING_PLATFORM_8         0x3D        // bowser_3_geo_000338\n#define MODEL_BOWSER_3_FALLING_PLATFORM_9         0x3E        // bowser_3_geo_000350\n#define MODEL_BOWSER_3_FALLING_PLATFORM_10        0x3F        // bowser_3_geo_000368\n\n// ttm\n#define MODEL_TTM_ROLLING_LOG                     0x35        // ttm_geo_000730\n#define MODEL_TTM_STAR_CAGE                       0x36        // ttm_geo_000710\n#define MODEL_TTM_BLUE_SMILEY                     0x37        // ttm_geo_000D14\n#define MODEL_TTM_YELLOW_SMILEY                   0x38        // ttm_geo_000D4C\n#define MODEL_TTM_STAR_SMILEY                     0x39        // ttm_geo_000D84\n#define MODEL_TTM_MOON_SMILEY                     0x3A        // ttm_geo_000DBC\n\n// actor model IDs\n\n// first set of actor bins (0x54-0x63)\n// group 1\n#define MODEL_BULLET_BILL                 0x54        // bullet_bill_geo\n#define MODEL_YELLOW_SPHERE               0x55        // yellow_sphere_geo\n#define MODEL_HOOT                        0x56        // hoot_geo\n#define MODEL_YOSHI_EGG                   0x57        // yoshi_egg_geo\n#define MODEL_THWOMP                      0x58        // thwomp_geo\n#define MODEL_HEAVE_HO                    0x59        // heave_ho_geo\n\n// group 2\n#define MODEL_BLARGG                      0x54        // blargg_geo\n#define MODEL_BULLY                       0x56        // bully_geo\n#define MODEL_BULLY_BOSS                  0x57        // bully_boss_geo\n\n// group 3\n#define MODEL_WATER_BOMB                  0x54        // water_bomb_geo\n#define MODEL_WATER_BOMB_SHADOW           0x55        // water_bomb_shadow_geo\n#define MODEL_KING_BOBOMB                 0x56        // king_bobomb_geo\n\n// group 4\n#define MODEL_MANTA_RAY                   0x54        // manta_seg5_geo_05008D14\n#define MODEL_UNAGI                       0x55        // unagi_geo\n#define MODEL_SUSHI                       0x56        // sushi_geo\n#define MODEL_DL_WHIRLPOOL                0x57        // whirlpool_seg5_dl_05013CB8\n#define MODEL_CLAM_SHELL                  0x58        // clam_shell_geo\n\n// group 5\n#define MODEL_POKEY_HEAD                  0x54        // pokey_head_geo\n#define MODEL_POKEY_BODY_PART             0x55        // pokey_body_part_geo\n#define MODEL_TWEESTER                    0x56        // tweester_geo\n#define MODEL_KLEPTO                      0x57        // klepto_geo\n#define MODEL_EYEROK_LEFT_HAND            0x58        // eyerok_left_hand_geo\n#define MODEL_EYEROK_RIGHT_HAND           0x59        // eyerok_right_hand_geo\n\n// group 6\n#define MODEL_DL_MONTY_MOLE_HOLE          0x54        // monty_mole_hole_seg5_dl_05000840\n#define MODEL_MONTY_MOLE                  0x55        // monty_mole_geo\n#define MODEL_UKIKI                       0x56        // ukiki_geo\n#define MODEL_FWOOSH                      0x57        // fwoosh_geo\n\n// group 7\n#define MODEL_SPINDRIFT                   0x54        // spindrift_geo\n#define MODEL_MR_BLIZZARD_HIDDEN          0x55        // mr_blizzard_hidden_geo\n#define MODEL_MR_BLIZZARD                 0x56        // mr_blizzard_geo\n#define MODEL_PENGUIN                     0x57        // penguin_geo\n\n// group 8\n#define MODEL_CAP_SWITCH_EXCLAMATION      0x54        // cap_switch_exclamation_seg5_dl_05002E00\n#define MODEL_CAP_SWITCH                  0x55        // cap_switch_geo\n#define MODEL_CAP_SWITCH_BASE             0x56        // cap_switch_base_seg5_dl_05003120\n\n// group 9\n#define MODEL_BOO                         0x54        // boo_geo\n#define MODEL_BETA_BOO_KEY                0x55        // small_key_geo\n#define MODEL_HAUNTED_CHAIR               0x56        // haunted_chair_geo\n#define MODEL_MAD_PIANO                   0x57        // mad_piano_geo\n#define MODEL_BOOKEND_PART                0x58        // bookend_part_geo\n#define MODEL_BOOKEND                     0x59        // bookend_geo\n#define MODEL_HAUNTED_CAGE                0x5A        // haunted_cage_geo\n\n// group 10\n#define MODEL_BIRDS                       0x54        // birds_geo\n#define MODEL_YOSHI                       0x55        // yoshi_geo\n\n// group 11\n#define MODEL_ENEMY_LAKITU                0x54        // enemy_lakitu_geo\n#define MODEL_SPINY_BALL                  0x55        // spiny_ball_geo\n#define MODEL_SPINY                       0x56        // spiny_geo\n#define MODEL_WIGGLER_HEAD                0x57        // wiggler_head_geo\n#define MODEL_WIGGLER_BODY                0x58        // wiggler_body_geo\n#define MODEL_BUBBA                       0x59        // bubba_geo\n\n// referenced in macro presets. Unknown usage.\n#define MODEL_UNKNOWN_54                  0x54\n#define MODEL_UNKNOWN_58                  0x58\n\n// second set of actor bins, (0x64-0x73)\n// group 12\n#define MODEL_BOWSER                      0x64        // bowser_geo\n#define MODEL_BOWSER_BOMB_CHILD_OBJ       0x65        // bowser_bomb_geo - Spawns as a chill object in bowser's behavior command, causing an explosion if it touches a bomb\n#define MODEL_BOWSER_SMOKE                0x66        // bowser_impact_smoke_geo\n#define MODEL_BOWSER_FLAMES               0x67        // bowser_flames_geo\n#define MODEL_BOWSER_WAVE                 0x68        // invisible_bowser_accessory_geo\n#define MODEL_BOWSER_NO_SHADOW            0x69        // bowser_geo_no_shadow\n\n// group 13\n#define MODEL_BUB                         0x64        // cheep_cheep_geo\n#define MODEL_TREASURE_CHEST_BASE         0x65        // treasure_chest_base_geo\n#define MODEL_TREASURE_CHEST_LID          0x66        // treasure_chest_lid_geo\n#define MODEL_CYAN_FISH                   0x67        // cyan_fish_geo\n#define MODEL_WATER_RING                  0x68        // water_ring_geo\n#define MODEL_SKEETER                     0x69        // skeeter_geo\n\n// group 14\n#define MODEL_PIRANHA_PLANT               0x64        // piranha_plant_geo\n#define MODEL_WHOMP                       0x67        // whomp_geo\n#define MODEL_KOOPA_WITH_SHELL            0x68        // koopa_with_shell_geo\n#define MODEL_METALLIC_BALL               0x65        // metallic_ball_geo\n#define MODEL_CHAIN_CHOMP                 0x66        // chain_chomp\n#define MODEL_KOOPA_FLAG                  0x6A        // koopa_flag_geo\n#define MODEL_WOODEN_POST                 0x6B        // wooden_post_geo\n\n// group 15\n#define MODEL_MIPS                        0x64        // mips_geo\n#define MODEL_BOO_CASTLE                  0x65        // boo_castle_geo\n#define MODEL_LAKITU                      0x66        // lakitu_geo\n\n// group 16\n#define MODEL_CHILL_BULLY                 0x64        // chilly_chief_geo\n#define MODEL_BIG_CHILL_BULLY             0x65        // chilly_chief_big_geo\n#define MODEL_MONEYBAG                    0x66        // moneybag_geo\n\n// group 17\n#define MODEL_SWOOP                       0x64        // swoop_geo\n#define MODEL_SCUTTLEBUG                  0x65        // scuttlebug_geo\n#define MODEL_MR_I_IRIS                   0x66        // mr_i_iris_geo\n#define MODEL_MR_I                        0x67        // mr_i_geo\n#define MODEL_DORRIE                      0x68        // dorrie_geo\n\n// other models\n#define MODEL_YELLOW_COIN                 0x74        // yellow_coin_geo\n#define MODEL_YELLOW_COIN_NO_SHADOW       0x75        // yellow_coin_no_shadow_geo\n#define MODEL_BLUE_COIN                   0x76        // blue_coin_geo\n#define MODEL_BLUE_COIN_NO_SHADOW         0x77        // blue_coin_no_shadow_geo\n#define MODEL_HEART                       0x78        // heart_geo\n#define MODEL_TRANSPARENT_STAR            0x79        // transparent_star_geo\n#define MODEL_STAR                        0x7A        // star_geo\n#define MODEL_TTM_SLIDE_EXIT_PODIUM       0x7B        // ttm_geo_000DF4\n#define MODEL_WOODEN_SIGNPOST             0x7C        // wooden_signpost_geo\n#define MODEL_UNKNOWN_7D                  0x7D        // referenced in macro presets. Unknown usage\n// find me\n#define MODEL_CANNON_BARREL               0x7F        // cannon_barrel_geo\n#define MODEL_CANNON_BASE                 0x80        // cannon_base_geo\n#define MODEL_BREAKABLE_BOX               0x81        // breakable_box_geo\n#define MODEL_BREAKABLE_BOX_SMALL         0x82        // breakable_box_small_geo\n#define MODEL_EXCLAMATION_BOX_OUTLINE     0x83        // exclamation_box_outline_geo\n#define MODEL_EXCLAMATION_POINT           0x84        // exclamation_point_seg8_dl_08025F08\n#define MODEL_MARIOS_WINGED_METAL_CAP     0x85        // marios_winged_metal_cap_geo\n#define MODEL_MARIOS_METAL_CAP            0x86        // marios_metal_cap_geo\n#define MODEL_MARIOS_WING_CAP             0x87        // marios_wing_cap_geo\n#define MODEL_MARIOS_CAP                  0x88        // marios_cap_geo\n#define MODEL_EXCLAMATION_BOX             0x89        // exclamation_box_geo\n#define MODEL_DIRT_ANIMATION              0x8A        // dirt_animation_geo\n#define MODEL_CARTOON_STAR                0x8B        // cartoon_star_geo\n#define MODEL_BLUE_COIN_SWITCH            0x8C        // blue_coin_switch_geo\n// find me\n#define MODEL_MIST                        0x8E        // mist_geo\n#define MODEL_SPARKLES_ANIMATION          0x8F        // sparkles_animation_geo\n#define MODEL_RED_FLAME                   0x90        // red_flame_geo\n#define MODEL_BLUE_FLAME                  0x91        // blue_flame_geo\n// find me\n// find me\n#define MODEL_BURN_SMOKE                  0x94        // burn_smoke_geo\n#define MODEL_SPARKLES                    0x95        // sparkles_geo\n#define MODEL_SMOKE                       0x96        // smoke_geo\n// find me\n// find me\n// find me\n// find me\n// find me\n#define MODEL_BURN_SMOKE_UNUSED           0x9C        // burn_smoke_geo - unused & duplicated\n// find me\n#define MODEL_WHITE_PARTICLE_DL           0x9E        // white_particle_dl\n#define MODEL_SAND_DUST                   0x9F        // sand_seg3_dl_0302BCD0\n#define MODEL_WHITE_PARTICLE              0xA0        // white_particle_dl\n#define MODEL_PEBBLE                      0xA1        // pebble_seg3_dl_0301CB00\n#define MODEL_LEAVES                      0xA2        // leaves_geo\n#define MODEL_WAVE_TRAIL                  0xA3        // wave_trail_geo\n#define MODEL_WHITE_PARTICLE_SMALL        0xA4        // white_particle_small_dl\n#define MODEL_SMALL_WATER_SPLASH          0xA5        // small_water_splash_geo\n#define MODEL_IDLE_WATER_WAVE             0xA6        // idle_water_wave_geo\n#define MODEL_WATER_SPLASH                0xA7        // water_splash_geo\n#define MODEL_BUBBLE                      0xA8        // bubble_geo\n// find me\n#define MODEL_PURPLE_MARBLE               0xAA        // purple_marble_geo\n// find me\n#define MODEL_UNKNOWN_AC                  0xAC        // according to an special preset, it was the original id of the castle floor trap\n#define MODEL_WF_SLIDING_PLATFORM         0xAD        // wf_geo_000A98\n#define MODEL_WF_SMALL_BOMP               0xAE        // wf_geo_000A00\n#define MODEL_WF_ROTATING_WOODEN_PLATFORM 0xAF        // wf_geo_000A58\n#define MODEL_WF_TUMBLING_BRIDGE_PART     0xB0        // wf_geo_000AB0\n#define MODEL_WF_LARGE_BOMP               0xB1        // wf_geo_000A40\n#define MODEL_WF_TUMBLING_BRIDGE          0xB2        // wf_geo_000AC8\n#define MODEL_BOWSER_BOMB                 0xB3        // bowser_bomb_geo\n#define MODEL_WATER_MINE                  0xB3        // water_mine_geo\n#define MODEL_BOWLING_BALL                0xB4        // bowling_ball_geo\n#define MODEL_TRAMPOLINE                  0xB5        // springboard_top_geo (unused)\n#define MODEL_TRAMPOLINE_CENTER           0xB6        // springboard_spring_geo (unused)\n#define MODEL_TRAMPOLINE_BASE             0xB7        // springboard_bottom_geo (unused)\n#define MODEL_UNKNOWN_B8                  0xB8        // referenced in special presets as a static object. Unknown usage\n#define MODEL_FISH                        0xB9        // fish_geo - fish without shadow, used\n#define MODEL_FISH_SHADOW                 0xBA        // fish_shadow_geo - fish with shadow, unused\n#define MODEL_BUTTERFLY                   0xBB        // butterfly_geo\n#define MODEL_BLACK_BOBOMB                0xBC        // black_bobomb_geo\n// find me\n#define MODEL_KOOPA_SHELL                 0xBE        // koopa_shell_geo\n#define MODEL_KOOPA_WITHOUT_SHELL         0xBF        // koopa_without_shell_geo\n#define MODEL_GOOMBA                      0xC0        // goomba_geo\n#define MODEL_SEAWEED                     0xC1        // seaweed_geo\n#define MODEL_AMP                         0xC2        // dAmpGeo\n#define MODEL_BOBOMB_BUDDY                0xC3        // bobomb_buddy_geo\n// find me\n// find me\n// find me\n#define MODEL_SSL_TOX_BOX                 0xC7        // ssl_geo_000630\n#define MODEL_BOWSER_KEY_CUTSCENE         0xC8        // bowser_key_cutscene_geo\n#define MODEL_DL_CANNON_LID               0xC9        // cannon_closed_seg8_dl_080048E0\n#define MODEL_CHECKERBOARD_PLATFORM       0xCA        // checkerboard_platform_geo\n#define MODEL_RED_FLAME_SHADOW            0xCB        // red_flame_shadow_geo\n#define MODEL_BOWSER_KEY                  0xCC        // bowser_key_geo\n#define MODEL_EXPLOSION                   0xCD        // explosion_geo\n#define MODEL_SNUFIT                      0xCE        // snufit_geo\n#define MODEL_PURPLE_SWITCH               0xCF        // purple_switch_geo\n#define MODEL_CASTLE_STAR_DOOR_30_STARS   0xD0        // castle_geo_000F00\n#define MODEL_CASTLE_STAR_DOOR_50_STARS   0xD1        // castle_geo_000F00\n#define MODEL_CCM_SNOWMAN_BASE            0xD2        // ccm_geo_0003F0\n// find me\n#define MODEL_1UP                         0xD4        // mushroom_1up_geo\n#define MODEL_CASTLE_STAR_DOOR_8_STARS    0xD5        // castle_geo_000F00\n#define MODEL_CASTLE_STAR_DOOR_70_STARS   0xD6        // castle_geo_000F00\n#define MODEL_RED_COIN                    0xD7        // red_coin_geo\n#define MODEL_RED_COIN_NO_SHADOW          0xD8        // red_coin_no_shadow_geo\n#define MODEL_METAL_BOX                   0xD9        // metal_box_geo\n#define MODEL_METAL_BOX_DL                0xDA        // metal_box_dl\n#define MODEL_NUMBER                      0xDB        // number_geo\n#define MODEL_FLYGUY                      0xDC        // shyguy_geo\n#define MODEL_TOAD                        0xDD        // toad_geo\n#define MODEL_PEACH                       0xDE        // peach_geo\n#define MODEL_CHUCKYA                     0xDF        // chuckya_geo\n#define MODEL_WHITE_PUFF                  0xE0        // white_puff_geo\n#define MODEL_TRAJECTORY_MARKER_BALL      0xE1        // bowling_ball_track_geo - duplicate used in SSL Pyramid small sized and as a track ball\n\n// Menu Models (overwrites Level Geometry IDs)\n#define MODEL_MAIN_MENU_MARIO_SAVE_BUTTON         MODEL_LEVEL_GEOMETRY_03   // main_menu_geo_0001D0\n#define MODEL_MAIN_MENU_RED_ERASE_BUTTON          MODEL_LEVEL_GEOMETRY_04   // main_menu_geo_000290\n#define MODEL_MAIN_MENU_BLUE_COPY_BUTTON          MODEL_LEVEL_GEOMETRY_05   // main_menu_geo_0002B8\n#define MODEL_MAIN_MENU_YELLOW_FILE_BUTTON        MODEL_LEVEL_GEOMETRY_06   // main_menu_geo_0002E0\n#define MODEL_MAIN_MENU_GREEN_SCORE_BUTTON        MODEL_LEVEL_GEOMETRY_07   // main_menu_geo_000308\n#define MODEL_MAIN_MENU_MARIO_SAVE_BUTTON_FADE    MODEL_LEVEL_GEOMETRY_08   // main_menu_geo_000200\n#define MODEL_MAIN_MENU_MARIO_NEW_BUTTON          MODEL_LEVEL_GEOMETRY_09   // main_menu_geo_000230\n#define MODEL_MAIN_MENU_MARIO_NEW_BUTTON_FADE     MODEL_LEVEL_GEOMETRY_0A   // main_menu_geo_000260\n#define MODEL_MAIN_MENU_PURPLE_SOUND_BUTTON       MODEL_LEVEL_GEOMETRY_0B   // main_menu_geo_000330\n#define MODEL_MAIN_MENU_GENERIC_BUTTON            MODEL_LEVEL_GEOMETRY_0C   // main_menu_geo_000358\n\n// level model aliases to level geometry IDs. Possibly a relic from an older level\n// format that used to rely on level geometry objects. (seen in WF, LLL, etc)\n#define MODEL_LLL_ROTATING_HEXAGONAL_PLATFORM     MODEL_LEVEL_GEOMETRY_09   // lll_geo_000A78\n#define MODEL_WF_GIANT_POLE                       MODEL_LEVEL_GEOMETRY_0D   // wf_geo_000AE0\n#define MODEL_WF_ROTATING_PLATFORM                MODEL_LEVEL_GEOMETRY_10   // wf_geo_0009B8\n#define MODEL_BITDW_WARP_PIPE                     MODEL_LEVEL_GEOMETRY_12   // warp_pipe_geo\n#define MODEL_THI_WARP_PIPE                       MODEL_LEVEL_GEOMETRY_16   // warp_pipe_geo\n#define MODEL_VCUTM_WARP_PIPE                     MODEL_LEVEL_GEOMETRY_16   // warp_pipe_geo\n#define MODEL_CASTLE_GROUNDS_WARP_PIPE            MODEL_LEVEL_GEOMETRY_16   // warp_pipe_geo\n\n#endif // MODEL_IDS_H\n"
  },
  {
    "path": "include/moving_texture_macros.h",
    "content": "#ifndef MOVING_TEXTURE_MACROS_H\n#define MOVING_TEXTURE_MACROS_H\n\n#include \"game/moving_texture.h\"\n\n// From gMovingTextureIdList\n#define TEXTURE_WATER            0\n#define TEXTURE_MIST             1\n#define TEXTURE_JRB_WATER        2\n#define TEXTURE_UNK_WATER        3\n#define TEXTURE_LAVA             4\n#define TEX_QUICKSAND_SSL        5\n#define TEX_PYRAMID_SAND_SSL     6\n#define TEX_YELLOW_TRI_TTC       7\n\n// Moving Texture rotations\n#define ROTATE_CLOCKWISE         0\n#define ROTATE_COUNTER_CLOCKWISE 1\n\n// Moving texture load quad tris start\n#define MOV_TEX_INIT_LOAD(amount) \\\n    amount, 0\n\n// Short Triangle of moving texture with only 4 triangles with x and z\n#define MOV_TEX_4_BOX_TRIS(x, z) \\\n    x, z\n\n// Moving texture miniTri define texture from MovingTextureList\n#define MOV_TEX_DEFINE(text) \\\n    text\n\n// Moving texture start with speed\n#define MOV_TEX_SPD(speed) \\\n    speed\n\n// Rotation speed of moving texture\n#define MOV_TEX_ROT_SPEED(rotspeed) \\\n    rotspeed\n\n// Rotation scale of moving texture that goes back and forth\n#define MOV_TEX_ROT_SCALE(rotscale) \\\n    rotscale\n\n// Rotation of moving texture\n#define MOV_TEX_ROT(rot) \\\n    rot\n\n// Alpha of moving texture\n#define MOV_TEX_ALPHA(alpha) \\\n    alpha\n\n// Triangle of moving texture\n#define MOV_TEX_TRIS(x, y, z, param1, param2) \\\n    x, y, z, param1, param2\n\n// 2 Triangles of moving texture\n#define MOV_TEX_ROT_TRIS(x, y, z, rotx, roty, rotz, param1, param2) \\\n    x, y, z, rotx, roty, rotz, param1, param2\n\n// Triangle of moving texture with light\n#define MOV_TEX_LIGHT_TRIS(x, y, z, light, param1, param2) \\\n    x, y, z, 0, light, 0, param1, param2\n\n// End of moving texture load\n#define MOV_TEX_END() \\\n    0\n\n// End of moving texture load if movTexRotTris was used, only used in SSL\n#define MOV_TEX_ROT_END() \\\n    0, 0\n\n#endif // MOVING_TEXTURE_MACROS_H\n"
  },
  {
    "path": "include/object_constants.h",
    "content": "#ifndef OBJECT_CONSTANTS_H\n#define OBJECT_CONSTANTS_H\n\n// This file contains macros that provide descriptive names for\n// field-specific and object-specific constants, e.g. actions.\n\n/* activeFlags */\n#define ACTIVE_FLAG_DEACTIVATED            0         // 0x0000\n#define ACTIVE_FLAG_ACTIVE                 (1 <<  0) // 0x0001\n#define ACTIVE_FLAG_FAR_AWAY               (1 <<  1) // 0x0002\n#define ACTIVE_FLAG_UNK2                   (1 <<  2) // 0x0004\n#define ACTIVE_FLAG_IN_DIFFERENT_ROOM      (1 <<  3) // 0x0008\n#define ACTIVE_FLAG_UNIMPORTANT            (1 <<  4) // 0x0010\n#define ACTIVE_FLAG_INITIATED_TIME_STOP    (1 <<  5) // 0x0020\n#define ACTIVE_FLAG_MOVE_THROUGH_GRATE     (1 <<  6) // 0x0040\n#define ACTIVE_FLAG_DITHERED_ALPHA         (1 <<  7) // 0x0080\n#define ACTIVE_FLAG_UNK8                   (1 <<  8) // 0x0100\n#define ACTIVE_FLAG_UNK9                   (1 <<  9) // 0x0200\n#define ACTIVE_FLAG_UNK10                  (1 << 10) // 0x0400\n\n/* respawnInfoType */\n#define RESPAWN_INFO_TYPE_NULL 0\n#define RESPAWN_INFO_TYPE_32   1\n#define RESPAWN_INFO_TYPE_16   2\n\n/* respawnInfo */\n#define RESPAWN_INFO_DONT_RESPAWN 0xFF\n\n/* oFlags */\n#define OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE         (1 <<  0) // 0x00000001\n#define OBJ_FLAG_MOVE_XZ_USING_FVEL               (1 <<  1) // 0x00000002\n#define OBJ_FLAG_MOVE_Y_WITH_TERMINAL_VEL         (1 <<  2) // 0x00000004\n#define OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW         (1 <<  3) // 0x00000008\n#define OBJ_FLAG_SET_FACE_ANGLE_TO_MOVE_ANGLE     (1 <<  4) // 0x00000010\n#define OBJ_FLAG_0020                             (1 <<  5) // 0x00000020\n#define OBJ_FLAG_COMPUTE_DIST_TO_MARIO            (1 <<  6) // 0x00000040\n#define OBJ_FLAG_ACTIVE_FROM_AFAR                 (1 <<  7) // 0x00000080\n#define OBJ_FLAG_0100                             (1 <<  8) // 0x00000100\n#define OBJ_FLAG_TRANSFORM_RELATIVE_TO_PARENT     (1 <<  9) // 0x00000200\n#define OBJ_FLAG_HOLDABLE                         (1 << 10) // 0x00000400\n#define OBJ_FLAG_SET_THROW_MATRIX_FROM_TRANSFORM  (1 << 11) // 0x00000800\n#define OBJ_FLAG_1000                             (1 << 12) // 0x00001000\n#define OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO           (1 << 13) // 0x00002000\n#define OBJ_FLAG_PERSISTENT_RESPAWN               (1 << 14) // 0x00004000\n#define OBJ_FLAG_8000                             (1 << 15) // 0x00008000\n#define OBJ_FLAG_30                               (1 << 30) // 0x40000000\n\n/* oHeldState */\n#define HELD_FREE    0\n#define HELD_HELD    1\n#define HELD_THROWN  2\n#define HELD_DROPPED 3\n\n/* oDialogState */\n#define DIALOG_STATUS_ENABLE_TIME_STOP  0\n#define DIALOG_STATUS_INTERRUPT         1\n#define DIALOG_STATUS_START_DIALOG      2\n#define DIALOG_STATUS_STOP_DIALOG       3\n#define DIALOG_STATUS_DISABLE_TIME_STOP 4\n\n#define DIALOG_FLAG_NONE                0\n#define DIALOG_FLAG_TURN_TO_MARIO       (1 << 0) // 0x01 // cutscene only\n#define DIALOG_FLAG_TEXT_DEFAULT        (1 << 1) // 0x02\n#define DIALOG_FLAG_TEXT_RESPONSE       (1 << 2) // 0x04 // non-cutscene only\n#define DIALOG_FLAG_UNK_CAPSWITCH       (1 << 3) // 0x08 // not defined\n#define DIALOG_FLAG_TIME_STOP_ENABLED   (1 << 4) // 0x10\n\n/* oMoveFlags */\n#define OBJ_MOVE_LANDED                (1 <<  0) // 0x0001\n#define OBJ_MOVE_ON_GROUND             (1 <<  1) // 0x0002  // mutually exclusive to OBJ_MOVE_LANDED\n#define OBJ_MOVE_LEFT_GROUND           (1 <<  2) // 0x0004\n#define OBJ_MOVE_ENTERED_WATER         (1 <<  3) // 0x0008\n#define OBJ_MOVE_AT_WATER_SURFACE      (1 <<  4) // 0x0010\n#define OBJ_MOVE_UNDERWATER_OFF_GROUND (1 <<  5) // 0x0020\n#define OBJ_MOVE_UNDERWATER_ON_GROUND  (1 <<  6) // 0x0040\n#define OBJ_MOVE_IN_AIR                (1 <<  7) // 0x0080\n#define OBJ_MOVE_OUT_SCOPE             (1 <<  8) // 0x0100\n#define OBJ_MOVE_HIT_WALL              (1 <<  9) // 0x0200\n#define OBJ_MOVE_HIT_EDGE              (1 << 10) // 0x0400\n#define OBJ_MOVE_ABOVE_LAVA            (1 << 11) // 0x0800\n#define OBJ_MOVE_LEAVING_WATER         (1 << 12) // 0x1000\n#define OBJ_MOVE_BOUNCE                (1 << 13) // 0x2000\n#ifndef VERSION_JP\n#define OBJ_MOVE_ABOVE_DEATH_BARRIER   (1 << 14) // 0x4000\n#endif\n\n#define OBJ_MOVE_MASK_ON_GROUND (OBJ_MOVE_LANDED | OBJ_MOVE_ON_GROUND)\n#define OBJ_MOVE_MASK_IN_WATER ( \\\n    OBJ_MOVE_ENTERED_WATER | \\\n    OBJ_MOVE_AT_WATER_SURFACE | \\\n    OBJ_MOVE_UNDERWATER_OFF_GROUND | \\\n    OBJ_MOVE_UNDERWATER_ON_GROUND)\n\n/* oActiveParticleFlags */\n#define ACTIVE_PARTICLE_DUST                 (1 <<  0) // 0x00000001\n#define ACTIVE_PARTICLE_UNUSED_1             (1 <<  1) // 0x00000002\n#define ACTIVE_PARTICLE_UNUSED_2             (1 <<  2) // 0x00000004\n#define ACTIVE_PARTICLE_SPARKLES             (1 <<  3) // 0x00000008\n#define ACTIVE_PARTICLE_H_STAR               (1 <<  4) // 0x00000010\n#define ACTIVE_PARTICLE_BUBBLE               (1 <<  5) // 0x00000020\n#define ACTIVE_PARTICLE_WATER_SPLASH         (1 <<  6) // 0x00000040\n#define ACTIVE_PARTICLE_IDLE_WATER_WAVE      (1 <<  7) // 0x00000080\n#define ACTIVE_PARTICLE_SHALLOW_WATER_WAVE   (1 <<  8) // 0x00000100\n#define ACTIVE_PARTICLE_PLUNGE_BUBBLE        (1 <<  9) // 0x00000200\n#define ACTIVE_PARTICLE_WAVE_TRAIL           (1 << 10) // 0x00000400\n#define ACTIVE_PARTICLE_FIRE                 (1 << 11) // 0x00000800\n#define ACTIVE_PARTICLE_SHALLOW_WATER_SPLASH (1 << 12) // 0x00001000\n#define ACTIVE_PARTICLE_LEAF                 (1 << 13) // 0x00002000\n#define ACTIVE_PARTICLE_DIRT                 (1 << 14) // 0x00004000\n#define ACTIVE_PARTICLE_MIST_CIRCLE          (1 << 15) // 0x00008000\n#define ACTIVE_PARTICLE_SNOW                 (1 << 16) // 0x00010000\n#define ACTIVE_PARTICLE_BREATH               (1 << 17) // 0x00020000\n#define ACTIVE_PARTICLE_V_STAR               (1 << 18) // 0x00040000\n#define ACTIVE_PARTICLE_TRIANGLE             (1 << 19) // 0x00080000\n\n/* oAction */\n#define OBJ_ACT_LAVA_DEATH        100\n#define OBJ_ACT_DEATH_PLANE_DEATH 101\n\n#define OBJ_ACT_HORIZONTAL_KNOCKBACK 100\n#define OBJ_ACT_VERTICAL_KNOCKBACK   101\n#define OBJ_ACT_SQUISHED             102\n\n/* Star Index */\n#define STAR_INDEX_ACT_1     0\n#define STAR_INDEX_ACT_2     1\n#define STAR_INDEX_ACT_3     2\n#define STAR_INDEX_ACT_4     3\n#define STAR_INDEX_ACT_5     4\n#define STAR_INDEX_ACT_6     5\n#define STAR_INDEX_100_COINS 6\n\n/* gTTCSpeedSetting */\n#define TTC_SPEED_SLOW    0\n#define TTC_SPEED_FAST    1\n#define TTC_SPEED_RANDOM  2\n#define TTC_SPEED_STOPPED 3\n\n/* Bob-omb */\n    /* oBhvParams2ndByte */\n    #define BOBOMB_BP_STYPE_GENERIC    0\n    #define BOBOMB_BP_STYPE_STATIONARY 1\n\n    /* oAction */\n    #define BOBOMB_ACT_PATROL            0\n    #define BOBOMB_ACT_LAUNCHED          1\n    #define BOBOMB_ACT_CHASE_MARIO       2\n    #define BOBOMB_ACT_EXPLODE           3\n    #define BOBOMB_ACT_LAVA_DEATH        100\n    #define BOBOMB_ACT_DEATH_PLANE_DEATH 101\n\n/* Coin Formation */\n    /* oAction */\n    #define COIN_FORMATION_ACT_SPAWN_COINS   0\n    #define COIN_FORMATION_ACT_IDLE          1\n    #define COIN_FORMATION_ACT_RESPAWN_COINS 2\n\n    /* oBhvParams2ndByte */\n    #define COIN_FORMATION_BP_FLAG_HORIZONTAL (0 << 0)\n    #define COIN_FORMATION_BP_FLAG_VERTICAL   (1 << 0)\n    #define COIN_FORMATION_BP_FLAG_RING       (1 << 1)\n    #define COIN_FORMATION_BP_FLAG_ARROW      (1 << 2)\n    #define COIN_FORMATION_BP_FLAG_FLYING     (1 << 4)\n    #define COIN_FORMATION_BP_FLAG_MASK       (COIN_FORMATION_BP_FLAG_HORIZONTAL | \\\n                                               COIN_FORMATION_BP_FLAG_VERTICAL | \\\n                                               COIN_FORMATION_BP_FLAG_RING | \\\n                                               COIN_FORMATION_BP_FLAG_ARROW)\n\n    #define COIN_FORMATION_BP_LINE_HORIZONTAL (COIN_FORMATION_BP_FLAG_HORIZONTAL)\n    #define COIN_FORMATION_BP_LINE_VERTICAL   (COIN_FORMATION_BP_FLAG_VERTICAL)\n    #define COIN_FORMATION_BP_RING_HORIZONTAL (COIN_FORMATION_BP_FLAG_HORIZONTAL | COIN_FORMATION_BP_FLAG_RING)\n    #define COIN_FORMATION_BP_RING_VERTICAL   (COIN_FORMATION_BP_FLAG_VERTICAL | COIN_FORMATION_BP_FLAG_RING)\n    #define COIN_FORMATION_BP_ARROW           (COIN_FORMATION_BP_FLAG_ARROW)\n\n/* Hidden Blue Coin */\n    /* oAction */\n    #define HIDDEN_BLUE_COIN_ACT_INACTIVE 0\n    #define HIDDEN_BLUE_COIN_ACT_WAITING  1\n    #define HIDDEN_BLUE_COIN_ACT_ACTIVE   2\n\n/* Blue Coin Switch */\n    /* oAction */\n    #define BLUE_COIN_SWITCH_ACT_IDLE     0\n    #define BLUE_COIN_SWITCH_ACT_RECEDING 1\n    #define BLUE_COIN_SWITCH_ACT_TICKING  2\n\n/* Moving Blue Coin */\n    /* oAction */\n    #define MOV_BCOIN_ACT_STILL  0\n    #define MOV_BCOIN_ACT_MOVING 1\n\n/* Moving Yellow Coin */\n    /* oAction */\n    #define MOV_YCOIN_ACT_IDLE              0\n    #define MOV_YCOIN_ACT_BLINKING          1\n    #define MOV_YCOIN_ACT_LAVA_DEATH        100\n    #define MOV_YCOIN_ACT_DEATH_PLANE_DEATH 101\n\n/* Bob-omb Buddy */\n    /* oBhvParams2ndByte */\n    #define BOBOMB_BUDDY_BP_STYPE_GENERIC        0\n    #define BOBOMB_BUDDY_BP_STYPE_BOB_GRASS_KBB  1\n    #define BOBOMB_BUDDY_BP_STYPE_BOB_CANNON_KBB 2\n    #define BOBOMB_BUDDY_BP_STYPE_BOB_GRASS      3\n\n    /* oAction */\n    #define BOBOMB_BUDDY_ACT_IDLE         0\n    #define BOBOMB_BUDDY_ACT_TURN_TO_TALK 2\n    #define BOBOMB_BUDDY_ACT_TALK         3\n\n    /* oBobombBuddyRole */\n    #define BOBOMB_BUDDY_ROLE_ADVICE 0\n    #define BOBOMB_BUDDY_ROLE_CANNON 1\n\n    /* oBobombBuddyCannonStatus */\n    #define BOBOMB_BUDDY_CANNON_UNOPENED     0\n    #define BOBOMB_BUDDY_CANNON_OPENING      1\n    #define BOBOMB_BUDDY_CANNON_OPENED       2\n    #define BOBOMB_BUDDY_CANNON_STOP_TALKING 3\n\n    /* oBobombBuddyHasTalkedToMario */\n    #define BOBOMB_BUDDY_HAS_NOT_TALKED 0\n    #define BOBOMB_BUDDY_HAS_TALKED     2\n\n/* Bowser */\n    /* Tail oAction */\n    #define BOWSER_ACT_TAIL_DEFAULT         0\n    #define BOWSER_ACT_TAIL_THROWN          1\n    #define BOWSER_ACT_TAIL_TOUCHED_MARIO   2\n\n    /* oAction */\n    #define BOWSER_ACT_DEFAULT              0\n    #define BOWSER_ACT_THROWN               1\n    #define BOWSER_ACT_JUMP_ONTO_STAGE      2\n    #define BOWSER_ACT_DANCE                3\n    #define BOWSER_ACT_DEAD                 4\n    #define BOWSER_ACT_WAIT                 5\n    #define BOWSER_ACT_INTRO_WALK           6\n    #define BOWSER_ACT_CHARGE_MARIO         7\n    #define BOWSER_ACT_SPIT_FIRE_INTO_SKY   8\n    #define BOWSER_ACT_SPIT_FIRE_ONTO_FLOOR 9\n    #define BOWSER_ACT_HIT_EDGE             10\n    #define BOWSER_ACT_TURN_FROM_EDGE       11\n    #define BOWSER_ACT_HIT_MINE             12\n    #define BOWSER_ACT_BIG_JUMP             13\n    #define BOWSER_ACT_WALK_TO_MARIO        14\n    #define BOWSER_ACT_BREATH_FIRE          15\n    #define BOWSER_ACT_TELEPORT             16\n    #define BOWSER_ACT_QUICK_JUMP           17\n    #define BOWSER_ACT_UNUSED_SLOW_WALK     18\n    #define BOWSER_ACT_TILT_LAVA_PLATFORM   19\n\n    /* Animations */\n    #define BOWSER_ANIM_STAND_UP            0\n    #define BOWSER_ANIM_STAND_UP_UNUSED     1 // slightly different\n    #define BOWSER_ANIM_SHAKING             2\n    #define BOWSER_ANIM_GRABBED             3\n    #define BOWSER_ANIM_BROKEN              4 // broken animation\n    #define BOWSER_ANIM_FALL_DOWN           5 // unused\n    #define BOWSER_ANIM_BREATH              6\n    #define BOWSER_ANIM_JUMP                7 // unused, short jump, replaced by start/stop\n    #define BOWSER_ANIM_JUMP_STOP           8\n    #define BOWSER_ANIM_JUMP_START          9\n    #define BOWSER_ANIM_DANCE               10\n    #define BOWSER_ANIM_BREATH_UP           11\n    #define BOWSER_ANIM_IDLE                12\n    #define BOWSER_ANIM_SLOW_GAIT           13\n    #define BOWSER_ANIM_LOOK_DOWN_STOP_WALK 14\n    #define BOWSER_ANIM_LOOK_UP_START_WALK  15\n    #define BOWSER_ANIM_FLIP_DOWN           16\n    #define BOWSER_ANIM_LAY_DOWN            17\n    #define BOWSER_ANIM_RUN_START           18\n    #define BOWSER_ANIM_RUN                 19\n    #define BOWSER_ANIM_RUN_STOP            20\n    #define BOWSER_ANIM_RUN_SLIP            21\n    #define BOWSER_ANIM_BREATH_QUICK        22\n    #define BOWSER_ANIM_EDGE_MOVE           23\n    #define BOWSER_ANIM_EDGE_STOP           24\n    #define BOWSER_ANIM_FLIP                25\n    #define BOWSER_ANIM_STAND_UP_FROM_FLIP  26\n\n    /* oBhvParams2ndByte */\n    #define BOWSER_BP_BITDW 0\n    #define BOWSER_BP_BITFS 1\n    #define BOWSER_BP_BITS  2\n\n    /* oBowserCamAct */\n    #define BOWSER_CAM_ACT_IDLE 0\n    #define BOWSER_CAM_ACT_WALK 1\n    #define BOWSER_CAM_ACT_END  2\n\n    /* oBowserStatus */\n    #define BOWSER_STATUS_ANGLE_MARIO   (1 <<  1) // 0x00000002\n    #define BOWSER_STATUS_ANGLE_CENTER  (1 <<  2) // 0x00000004\n    #define BOWSER_STATUS_DIST_MARIO    (1 <<  3) // 0x00000008\n    #define BOWSER_STATUS_DIST_CENTER   (1 <<  4) // 0x00000010\n    #define BOWSER_STATUS_BIG_JUMP      (1 << 16) // 0x00010000\n    #define BOWSER_STATUS_FIRE_SKY      (1 << 17) // 0x00020000\n\n    /* oBowserGrabbedStatus */\n    #define BOWSER_GRAB_STATUS_NONE     0\n    #define BOWSER_GRAB_STATUS_GRABBED  1\n    #define BOWSER_GRAB_STATUS_HOLDING  2\n\n    /* oSubAction */\n    #define BOWSER_SUB_ACT_DEAD_FLY_BACK            0\n    #define BOWSER_SUB_ACT_DEAD_BOUNCE              1\n    #define BOWSER_SUB_ACT_DEAD_WAIT                2\n    #define BOWSER_SUB_ACT_DEAD_DEFAULT_END         3\n    #define BOWSER_SUB_ACT_DEAD_DEFAULT_END_OVER    4\n    #define BOWSER_SUB_ACT_DEAD_FINAL_END           10\n    #define BOWSER_SUB_ACT_DEAD_FINAL_END_OVER      11\n\n    #define BOWSER_SUB_ACT_CHARGE_START             0\n    #define BOWSER_SUB_ACT_CHARGE_RUN               1\n    #define BOWSER_SUB_ACT_CHARGE_END               2\n    #define BOWSER_SUB_ACT_CHARGE_SLIP              3\n\n    #define BOWSER_SUB_ACT_TELEPORT_START           0\n    #define BOWSER_SUB_ACT_TELEPORT_MOVE            1\n    #define BOWSER_SUB_ACT_TELEPORT_STOP            2\n\n    #define BOWSER_SUB_ACT_HIT_MINE_START           0\n    #define BOWSER_SUB_ACT_HIT_MINE_FALL            1\n    #define BOWSER_SUB_ACT_HIT_MINE_STOP            2\n\n    #define BOWSER_SUB_ACT_JUMP_ON_STAGE_IDLE       0\n    #define BOWSER_SUB_ACT_JUMP_ON_STAGE_START      1\n    #define BOWSER_SUB_ACT_JUMP_ON_STAGE_LAND       2\n    #define BOWSER_SUB_ACT_JUMP_ON_STAGE_STOP       3\n\n/* Bowser BitS Platform */\n    /* oAction */\n    #define BOWSER_BITS_PLAT_ACT_START 0\n    #define BOWSER_BITS_PLAT_ACT_CHECK 1\n    #define BOWSER_BITS_PLAT_ACT_FALL  2\n\n/* Fish Spawer */\n    /* oAction */\n    #define FISH_SPAWNER_ACT_SPAWN   0\n    #define FISH_SPAWNER_ACT_IDLE    1\n    #define FISH_SPAWNER_ACT_RESPAWN 2\n\n    /* oBhvParams2ndByte */\n    #define FISH_SPAWNER_BP_MANY_BLUE 0\n    #define FISH_SPAWNER_BP_FEW_BLUE  1\n    #define FISH_SPAWNER_BP_MANY_CYAN 2\n    #define FISH_SPAWNER_BP_FEW_CYAN  3\n\n/* Fish */\n    /* oAction */\n    #define FISH_ACT_INIT 0\n    #define FISH_ACT_ROAM 1\n    #define FISH_ACT_FLEE 2\n\n/* Blue Fish */\n    /* oAction */\n    #define BLUE_FISH_ACT_DIVE      0\n    #define BLUE_FISH_ACT_TURN      1\n    #define BLUE_FISH_ACT_ASCEND    2\n    #define BLUE_FISH_ACT_TURN_BACK 3\n\n    /* oAction: bhv_blue_fish_spawn_loop */\n    #define BLUE_FISH_ACT_SPAWN     0\n    #define BLUE_FISH_ACT_ROOM      1\n    #define BLUE_FISH_ACT_DUPLICATE 2\n\n/* Cannon Trap Door */\n    /* oAction */\n    #define CANNON_TRAP_DOOR_ACT_CLOSED   0\n    #define CANNON_TRAP_DOOR_ACT_CAM_ZOOM 1\n    #define CANNON_TRAP_DOOR_ACT_OPENING  2\n    #define CANNON_TRAP_DOOR_ACT_OPEN     3\n\n/* Homing Amp */\n    /* oAction */\n    #define HOMING_AMP_ACT_INACTIVE        0\n    #define HOMING_AMP_ACT_APPEAR          1\n    #define HOMING_AMP_ACT_CHASE           2\n    #define HOMING_AMP_ACT_GIVE_UP         3\n    #define HOMING_AMP_ACT_ATTACK_COOLDOWN 4\n\n/* Amp */\n    /* oBhvParams2ndByte */\n    #define AMP_BP_ROT_RADIUS_200 0\n    #define AMP_BP_ROT_RADIUS_300 1\n    #define AMP_BP_ROT_RADIUS_400 2\n    #define AMP_BP_ROT_RADIUS_0   3\n\n    /* oAction */\n    #define AMP_ACT_IDLE            2\n    #define AMP_ACT_ATTACK_COOLDOWN 4\n\n/* Butterfly */\n    /* oAction */\n    #define BUTTERFLY_ACT_RESTING      0\n    #define BUTTERFLY_ACT_FOLLOW_MARIO 1\n    #define BUTTERFLY_ACT_RETURN_HOME  2\n\n/* Hoot */\n    /* oHootAvailability */\n    #define HOOT_AVAIL_ASLEEP_IN_TREE 0\n    #define HOOT_AVAIL_WANTS_TO_TALK  1\n    #define HOOT_AVAIL_READY_TO_FLY   2\n\n    /* oAction */\n    #define HOOT_ACT_ASCENT 0\n    #define HOOT_ACT_CARRY  1\n    #define HOOT_ACT_TIRED  2\n\n/* Bully (All variants) */\n    /* oBhvParams2ndByte */\n    #define BULLY_BP_SIZE_SMALL 0\n    #define BULLY_BP_SIZE_BIG   1\n\n    /* oAction */\n    #define BULLY_ACT_PATROL            0\n    #define BULLY_ACT_CHASE_MARIO       1\n    #define BULLY_ACT_KNOCKBACK         2\n    #define BULLY_ACT_BACK_UP           3\n    #define BULLY_ACT_INACTIVE          4\n    #define BULLY_ACT_ACTIVATE_AND_FALL 5\n    #define BULLY_ACT_LAVA_DEATH        100\n    #define BULLY_ACT_DEATH_PLANE_DEATH 101\n\n    /* oBullySubtype */\n    #define BULLY_STYPE_GENERIC 0\n    #define BULLY_STYPE_MINION  1\n    #define BULLY_STYPE_CHILL   16\n\n/* Water Ring (All variants) */\n    /* oAction */\n    #define WATER_RING_ACT_NOT_COLLECTED 0\n    #define WATER_RING_ACT_COLLECTED     1\n\n/* Jet Stream Water Ring Spawner */\n    /* oAction */\n    #define JS_RING_SPAWNER_ACT_ACTIVE   0\n    #define JS_RING_SPAWNER_ACT_INACTIVE 1\n\n/* Celebration Star */\n    /* oAction */\n    #define CELEB_STAR_ACT_SPIN_AROUND_MARIO 0\n    #define CELEB_STAR_ACT_FACE_CAMERA       1\n\n/* LLL Drawbridge */\n    /* oAction */\n    #define LLL_DRAWBRIDGE_ACT_LOWER 0\n    #define LLL_DRAWBRIDGE_ACT_RAISE 1\n\n/* Bomp (Both variants) */\n    /* oAction */\n    #define BOMP_ACT_WAIT     0\n    #define BOMP_ACT_POKE_OUT 1\n    #define BOMP_ACT_EXTEND   2\n    #define BOMP_ACT_RETRACT  3\n\n/* WF Sliding Brick Platform */\n    /* oBhvParams2ndByte */\n    #define WF_SLID_BRICK_PTFM_BP_MOV_VEL_10 1\n    #define WF_SLID_BRICK_PTFM_BP_MOV_VEL_15 2\n    #define WF_SLID_BRICK_PTFM_BP_MOV_VEL_20 3\n\n    /* oAction */\n    #define WF_SLID_BRICK_PTFM_ACT_WAIT    0\n    #define WF_SLID_BRICK_PTFM_ACT_EXTEND  1\n    #define WF_SLID_BRICK_PTFM_ACT_RETRACT 2\n\n/* Fake Moneybag Coin */\n    /* oAction */\n    #define FAKE_MONEYBAG_COIN_ACT_IDLE      0\n    #define FAKE_MONEYBAG_COIN_ACT_TRANSFORM 1\n\n/* Moneybag */\n    /* oAction */\n    #define MONEYBAG_ACT_APPEAR        0\n    #define MONEYBAG_ACT_UNUSED_APPEAR 1\n    #define MONEYBAG_ACT_MOVE_AROUND   2\n    #define MONEYBAG_ACT_RETURN_HOME   3\n    #define MONEYBAG_ACT_DISAPPEAR     4\n    #define MONEYBAG_ACT_DEATH         5\n\n    /* oMoneybagJumpState */\n    #define MONEYBAG_JUMP_LANDING         0\n    #define MONEYBAG_JUMP_PREPARE         1\n    #define MONEYBAG_JUMP_JUMP            2\n    #define MONEYBAG_JUMP_JUMP_AND_BOUNCE 3\n    #define MONEYBAG_JUMP_WALK_AROUND     4\n    #define MONEYBAG_JUMP_WALK_HOME       5\n\n/* Bowling Ball */\n    /* oAction */\n    #define BBALL_ACT_INITIALIZE 0\n    #define BBALL_ACT_ROLL       1\n\n/* Bowling Ball + Bowling Ball Spawner (All variants) */\n    /* oBhvParams2ndByte */\n    #define BBALL_BP_STYPE_BOB_UPPER 0\n    #define BBALL_BP_STYPE_TTM       1\n    #define BBALL_BP_STYPE_BOB_LOWER 2\n    #define BBALL_BP_STYPE_THI_LARGE 3\n    #define BBALL_BP_STYPE_THI_SMALL 4\n\n/* Bowling Ball (Free) */\n    /* oAction */\n    #define FREE_BBALL_ACT_IDLE  0\n    #define FREE_BBALL_ACT_ROLL  1\n    #define FREE_BBALL_ACT_RESET 2\n\n/* Beta Chest Lid */\n    /* oAction */\n    #define BETA_CHEST_ACT_IDLE_CLOSED 0\n    #define BETA_CHEST_ACT_OPENING     1\n    #define BETA_CHEST_ACT_IDLE_OPEN   2\n\n/* BBH Tilting Trap Platform */\n    /* oAction */\n    // Unused in original Japanese version\n    #define BBH_TILTING_TRAP_PLATFORM_ACT_MARIO_ON  0\n    #define BBH_TILTING_TRAP_PLATFORM_ACT_MARIO_OFF 1\n\n/* Boo */\n    /* oBooDeathStatus */\n    #define BOO_DEATH_STATUS_ALIVE 0\n    #define BOO_DEATH_STATUS_DYING 1\n    #define BOO_DEATH_STATUS_DEAD  2\n\n    /* attackStatus */\n    #define BOO_NOT_ATTACKED 0\n    #define BOO_ATTACKED     1\n    #define BOO_BOUNCED_ON   -1\n\n    /* oBhvParams2ndByte */\n    #define BOO_BP_GHOST_HUNT     0\n    #define BOO_BP_GENERIC        1\n    #define BOO_BP_MERRY_GO_ROUND 2\n\n/* Big Boo */\n    /* oBhvParams2ndByte */\n    #define BIG_BOO_BP_GHOST_HUNT     0\n    #define BIG_BOO_BP_MERRY_GO_ROUND 1\n    #define BIG_BOO_BP_BALCONY        2\n\n/* Beta Boo Key */\n    /* oAction */\n    #define BETA_BOO_KEY_ACT_IN_BOO   0\n    #define BETA_BOO_KEY_ACT_DROPPING 1\n    #define BETA_BOO_KEY_ACT_DROPPED  2\n\n/* Boo Cage */\n    /* oAction */\n    #define BOO_CAGE_ACT_IN_BOO           0\n    #define BOO_CAGE_ACT_FALLING          1\n    #define BOO_CAGE_ACT_ON_GROUND        2\n    #define BOO_CAGE_ACT_MARIO_JUMPING_IN 3\n    #define BOO_CAGE_ACT_USELESS          4\n\n/* BBH Haunted Bookshelf */\n    /* oAction */\n    #define HAUNTED_BOOKSHELF_ACT_IDLE   0\n    #define HAUNTED_BOOKSHELF_ACT_RECEDE 1\n\n/* BBH Merry-Go-Round */\n    /* gMarioCurrentRoom */\n    #define BBH_NEAR_MERRY_GO_ROUND_ROOM 10\n    #define BBH_DYNAMIC_SURFACE_ROOM     0\n    #define BBH_OUTSIDE_ROOM             13\n\n/* Coffin Spawner */\n    /* oAction */\n    #define COFFIN_SPAWNER_ACT_COFFINS_UNLOADED 0\n\n/* Coffin */\n    /* oAction */\n    #define COFFIN_ACT_IDLE     0\n    #define COFFIN_ACT_STAND_UP 1\n\n    /* oBhvParams2ndByte */\n    #define COFFIN_BP_STATIC 0\n\n/* WDW Arrow Lift */\n    /* oAction */\n    #define ARROW_LIFT_ACT_IDLE        0\n    #define ARROW_LIFT_ACT_MOVING_AWAY 1\n    #define ARROW_LIFT_ACT_MOVING_BACK 2\n\n    /* status */\n    #define ARROW_LIFT_NOT_DONE_MOVING 0\n    #define ARROW_LIFT_DONE_MOVING     1\n\n/* Yoshi */\n    /* oAction */\n    #define YOSHI_ACT_IDLE                       0\n    #define YOSHI_ACT_WALK                       1\n    #define YOSHI_ACT_TALK                       2\n    #define YOSHI_ACT_WALK_JUMP_OFF_ROOF         3\n    #define YOSHI_ACT_FINISH_JUMPING_AND_DESPAWN 4\n    #define YOSHI_ACT_GIVE_PRESENT               5\n    #define YOSHI_ACT_CREDITS                    10\n\n/* Koopa */\n    /* oAction */\n    #define KOOPA_UNSHELLED_ACT_RUN     0\n    #define KOOPA_UNSHELLED_ACT_DIVE    1\n    #define KOOPA_UNSHELLED_ACT_LYING   2\n    #define KOOPA_UNSHELLED_ACT_UNUSED3 3\n\n    #define KOOPA_SHELLED_ACT_STOPPED        0\n    #define KOOPA_SHELLED_ACT_WALK           1\n    #define KOOPA_SHELLED_ACT_RUN_FROM_MARIO 2\n    #define KOOPA_SHELLED_ACT_LYING          3\n    #define KOOPA_SHELLED_ACT_DIE            4\n\n    #define KOOPA_THE_QUICK_ACT_WAIT_BEFORE_RACE 0\n    #define KOOPA_THE_QUICK_ACT_UNUSED1          1\n    #define KOOPA_THE_QUICK_ACT_SHOW_INIT_TEXT   2\n    #define KOOPA_THE_QUICK_ACT_RACE             3\n    #define KOOPA_THE_QUICK_ACT_DECELERATE       4\n    #define KOOPA_THE_QUICK_ACT_STOP             5\n    #define KOOPA_THE_QUICK_ACT_AFTER_RACE       6\n\n    /* oSubAction */\n    #define KOOPA_SHELLED_SUB_ACT_START_WALK 0\n    #define KOOPA_SHELLED_SUB_ACT_WALK       1\n    #define KOOPA_SHELLED_SUB_ACT_STOP_WALK  2\n\n    #define KOOPA_THE_QUICK_SUB_ACT_START_RUN 0\n    #define KOOPA_THE_QUICK_SUB_ACT_RUN       1\n    #define KOOPA_THE_QUICK_SUB_ACT_JUMP      2\n\n    /* oKoopaTheQuickRaceIndex */\n    #define KOOPA_THE_QUICK_BOB_INDEX 0\n    #define KOOPA_THE_QUICK_THI_INDEX 1\n\n    /* oBhvParams2ndByte */\n    #define KOOPA_BP_UNSHELLED            0\n    #define KOOPA_BP_NORMAL               1\n    #define KOOPA_BP_KOOPA_THE_QUICK_BASE 2\n    #define KOOPA_BP_KOOPA_THE_QUICK_BOB  (KOOPA_BP_KOOPA_THE_QUICK_BASE + KOOPA_THE_QUICK_BOB_INDEX)\n    #define KOOPA_BP_KOOPA_THE_QUICK_THI  (KOOPA_BP_KOOPA_THE_QUICK_BASE + KOOPA_THE_QUICK_THI_INDEX)\n    #define KOOPA_BP_TINY                 4\n\n/* Pokey */\n    /* oAction */\n    #define POKEY_ACT_UNINITIALIZED 0\n    #define POKEY_ACT_WANDER        1\n    #define POKEY_ACT_UNLOAD_PARTS  2\n\n/* Swoop */\n    /* oAction */\n    #define SWOOP_ACT_IDLE 0\n    #define SWOOP_ACT_MOVE 1\n\n/* Fly Guy */\n    /* oAction */\n    #define FLY_GUY_ACT_IDLE           0\n    #define FLY_GUY_ACT_APPROACH_MARIO 1\n    #define FLY_GUY_ACT_LUNGE          2\n    #define FLY_GUY_ACT_SHOOT_FIRE     3\n\n    /* oBhvParams2ndByte */\n    #define FLY_GUY_BP_GENERIC 0\n    #define FLY_GUY_BP_FIRE    1\n\n/* Goomba */\n    /* oAction */\n    #define GOOMBA_ACT_WALK           0\n    #define GOOMBA_ACT_ATTACKED_MARIO 1\n    #define GOOMBA_ACT_JUMP           2\n\n    /* oBhvParams2ndByte */\n    #define GOOMBA_SIZE_REGULAR                 0\n    #define GOOMBA_SIZE_HUGE                    1\n    #define GOOMBA_SIZE_TINY                    2\n    #define GOOMBA_BP_SIZE_MASK                 (GOOMBA_SIZE_REGULAR | GOOMBA_SIZE_HUGE | GOOMBA_SIZE_TINY)\n    #define GOOMBA_BP_TRIPLET_RESPAWN_FLAG_MASK (0x000000FF & ~GOOMBA_BP_SIZE_MASK)\n\n/* Goomba Triplet Spawner */\n    /* oAction */\n    #define GOOMBA_TRIPLET_SPAWNER_ACT_UNLOADED 0\n    #define GOOMBA_TRIPLET_SPAWNER_ACT_LOADED   1\n\n    /* oBhvParams2ndByte */\n    #define GOOMBA_TRIPLET_SPAWNER_BP_EXTRA_GOOMBAS_MASK (0x000000FF & ~GOOMBA_BP_SIZE_MASK)\n    #define GOOMBA_TRIPLET_SPAWNER_BP_EXTRA_GOOMBAS(num) ((num) << 2)\n\n/* Chain Chomp */\n    /* oAction */\n    #define CHAIN_CHOMP_ACT_UNINITIALIZED 0\n    #define CHAIN_CHOMP_ACT_MOVE          1\n    #define CHAIN_CHOMP_ACT_UNLOAD_CHAIN  2\n\n    /* oSubAction */\n    #define CHAIN_CHOMP_SUB_ACT_TURN  0\n    #define CHAIN_CHOMP_SUB_ACT_LUNGE 1\n\n    /* oChainChompReleaseStatus */\n    #define CHAIN_CHOMP_NOT_RELEASED              0\n    #define CHAIN_CHOMP_RELEASED_TRIGGER_CUTSCENE 1\n    #define CHAIN_CHOMP_RELEASED_LUNGE_AROUND     2\n    #define CHAIN_CHOMP_RELEASED_BREAK_GATE       3\n    #define CHAIN_CHOMP_RELEASED_JUMP_AWAY        4\n    #define CHAIN_CHOMP_RELEASED_END_CUTSCENE     5\n\n/* Chain Chomp Chain Part */\n    /* oBhvParams2ndByte */\n    #define CHAIN_CHOMP_CHAIN_PART_BP_PIVOT 0\n\n/* Wooden Post */\n    /* oBhvParams */\n    #define WOODEN_POST_BP_NO_COINS_MASK 0x0000FF00\n\n/* Wiggler */\n    /* oAction */\n    #define WIGGLER_ACT_UNINITIALIZED      0\n    #define WIGGLER_ACT_WALK               1\n    #define WIGGLER_ACT_KNOCKBACK          2\n    #define WIGGLER_ACT_JUMPED_ON          3\n    #define WIGGLER_ACT_SHRINK             4\n    #define WIGGLER_ACT_FALL_THROUGH_FLOOR 5\n\n    /* oWigglerTextStatus */\n    #define WIGGLER_TEXT_STATUS_AWAIT_DIALOG     0\n    #define WIGGLER_TEXT_STATUS_SHOWING_DIALOG   1\n    #define WIGGLER_TEXT_STATUS_COMPLETED_DIALOG 2\n\n/* Spiny */\n    /* oAction */\n    #define SPINY_ACT_WALK             0\n    #define SPINY_ACT_HELD_BY_LAKITU   1\n    #define SPINY_ACT_THROWN_BY_LAKITU 2\n    #define SPINY_ACT_ATTACKED_MARIO   3\n\n/* Evil Lakitu */\n    /* oAction */\n    #define ENEMY_LAKITU_ACT_UNINITIALIZED 0\n    #define ENEMY_LAKITU_ACT_MAIN          1\n\n    /* oSubAction */\n    #define ENEMY_LAKITU_SUB_ACT_NO_SPINY    0\n    #define ENEMY_LAKITU_SUB_ACT_HOLD_SPINY  1\n    #define ENEMY_LAKITU_SUB_ACT_THROW_SPINY 2\n\n/* Cloud */\n    /* oAction */\n    #define CLOUD_ACT_SPAWN_PARTS   0\n    #define CLOUD_ACT_MAIN          1\n    #define CLOUD_ACT_UNLOAD        2\n    #define CLOUD_ACT_FWOOSH_HIDDEN 3\n\n    /* oBhvParams2ndByte */\n    #define CLOUD_BP_FWOOSH       0\n    #define CLOUD_BP_LAKITU_CLOUD 1\n\n/* Camera Lakitu */\n    /* oAction */\n    #define CAMERA_LAKITU_INTRO_ACT_TRIGGER_CUTSCENE 0\n    #define CAMERA_LAKITU_INTRO_ACT_SPAWN_CLOUD      1\n    #define CAMERA_LAKITU_INTRO_ACT_UNK2             2\n\n    /* oBhvParams2ndByte */\n    #define CAMERA_LAKITU_BP_FOLLOW_CAMERA 0\n    #define CAMERA_LAKITU_BP_INTRO         1\n\n/* Manta Ray */\n    /* oAction */\n    #define MANTA_ACT_SPAWN_RINGS 0\n    #define MANTA_ACT_NO_RINGS    1\n\n/* Monty Mole */\n    /* oAction */\n    #define MONTY_MOLE_ACT_SELECT_HOLE          0\n    #define MONTY_MOLE_ACT_RISE_FROM_HOLE       1\n    #define MONTY_MOLE_ACT_SPAWN_ROCK           2\n    #define MONTY_MOLE_ACT_BEGIN_JUMP_INTO_HOLE 3\n    #define MONTY_MOLE_ACT_THROW_ROCK           4\n    #define MONTY_MOLE_ACT_JUMP_INTO_HOLE       5\n    #define MONTY_MOLE_ACT_HIDE                 6\n    #define MONTY_MOLE_ACT_JUMP_OUT_OF_HOLE     7\n\n    /* oBhvParams2ndByte */\n    #define MONTY_MOLE_BP_NO_ROCK 0\n    #define MONTY_MOLE_BP_GENERIC 1\n\n/* Monty Mole Rock */\n    /* oAction */\n    #define MONTY_MOLE_ROCK_ACT_HELD 0\n    #define MONTY_MOLE_ROCK_ACT_MOVE 1\n\n/* Ukiki */\n    /* oAction */\n    #define UKIKI_ACT_IDLE            0\n    #define UKIKI_ACT_RUN             1\n    #define UKIKI_ACT_TURN_TO_MARIO   2\n    #define UKIKI_ACT_JUMP            3\n    #define UKIKI_ACT_GO_TO_CAGE      4\n    #define UKIKI_ACT_WAIT_TO_RESPAWN 5\n    #define UKIKI_ACT_UNUSED_TURN     6\n    #define UKIKI_ACT_RETURN_HOME     7\n\n    /* oSubAction */\n    #define UKIKI_SUB_ACT_TAUNT_NONE       0\n    #define UKIKI_SUB_ACT_TAUNT_ITCH       1\n    #define UKIKI_SUB_ACT_TAUNT_SCREECH    2\n    #define UKIKI_SUB_ACT_TAUNT_JUMP_CLAP  3\n    #define UKIKI_SUB_ACT_TAUNT_HANDSTAND  4\n\n    #define UKIKI_SUB_ACT_CAGE_RUN_TO_CAGE    0\n    #define UKIKI_SUB_ACT_CAGE_WAIT_FOR_MARIO 1\n    #define UKIKI_SUB_ACT_CAGE_TALK_TO_MARIO  2\n    #define UKIKI_SUB_ACT_CAGE_TURN_TO_CAGE   3\n    #define UKIKI_SUB_ACT_CAGE_JUMP_TO_CAGE   4\n    #define UKIKI_SUB_ACT_CAGE_LAND_ON_CAGE   5\n    #define UKIKI_SUB_ACT_CAGE_SPIN_ON_CAGE   6\n    #define UKIKI_SUB_ACT_CAGE_DESPAWN        7\n\n    /* oUkikiTextState */\n    #define UKIKI_TEXT_DEFAULT       0\n    #define UKIKI_TEXT_CAGE_TEXTBOX  1\n    #define UKIKI_TEXT_GO_TO_CAGE    2\n    #define UKIKI_TEXT_STOLE_CAP     3\n    #define UKIKI_TEXT_HAS_CAP       4\n    #define UKIKI_TEXT_GAVE_CAP_BACK 5\n    #define UKIKI_TEXT_DO_NOT_LET_GO 6\n    #define UKIKI_TEXT_STEAL_CAP     7\n\n    /* oBhvParams2ndByte */\n    #define UKIKI_BP_CAGE 0\n    #define UKIKI_BP_CAP  1\n\n    /* Animations */\n    #define UKIKI_ANIM_RUN          0\n    #define UKIKI_ANIM_UNUSED_WALK  1\n    #define UKIKI_ANIM_UNUSED_APOSE 2\n    #define UKIKI_ANIM_UNUSED_DEATH 3\n    #define UKIKI_ANIM_SCREECH      4\n    #define UKIKI_ANIM_JUMP_CLAP    5\n    #define UKIKI_ANIM_UNUSED_HOP   6\n    #define UKIKI_ANIM_LAND         7\n    #define UKIKI_ANIM_JUMP         8\n    #define UKIKI_ANIM_ITCH         9\n    #define UKIKI_ANIM_HANDSTAND    10\n    #define UKIKI_ANIM_TURN         11\n    #define UKIKI_ANIM_HELD         12\n\n    /* oAnimState */\n    #define UKIKI_ANIM_STATE_DEFAULT    0\n    #define UKIKI_ANIM_STATE_EYE_CLOSED 1\n    #define UKIKI_ANIM_STATE_CAP_ON     2\n\n    /* oUkikiHasCap */\n    #define UKIKI_CAP_ON 1\n\n/* Ukiki Cage Star */\n    /* oAction */\n    #define UKIKI_CAGE_STAR_ACT_IN_CAGE    0\n    #define UKIKI_CAGE_STAR_ACT_SPAWN_STAR 1\n\n/* Ukiki Cage */\n    /* oAction */\n    #define UKIKI_CAGE_ACT_WAIT_FOR_UKIKI 0\n    #define UKIKI_CAGE_ACT_SPIN           1\n    #define UKIKI_CAGE_ACT_FALL           2\n    #define UKIKI_CAGE_ACT_HIDE           3\n\n/* Piranha Plant */\n    /* oAction */\n    #define PIRANHA_PLANT_ACT_IDLE            0\n    #define PIRANHA_PLANT_ACT_SLEEPING        1\n    #define PIRANHA_PLANT_ACT_BITING          2\n    #define PIRANHA_PLANT_ACT_WOKEN_UP        3\n    #define PIRANHA_PLANT_ACT_STOPPED_BITING  4\n    #define PIRANHA_PLANT_ACT_ATTACKED        5\n    #define PIRANHA_PLANT_ACT_SHRINK_AND_DIE  6\n    #define PIRANHA_PLANT_ACT_WAIT_TO_RESPAWN 7\n    #define PIRANHA_PLANT_ACT_RESPAWN         8\n\n    /* oPiranhaPlantSleepMusicState */\n    #define PIRANHA_PLANT_SLEEP_MUSIC_PLAYING 0\n\n/* Piranha Plant Bubble */\n    /* oAction */\n    #define PIRANHA_PLANT_BUBBLE_ACT_IDLE             0\n    #define PIRANHA_PLANT_BUBBLE_ACT_GROW_SHRINK_LOOP 1\n    #define PIRANHA_PLANT_BUBBLE_ACT_BURST            2\n\n/* Platform on Track */\n    /* oAction */\n    #define PLATFORM_ON_TRACK_ACT_INIT             0\n    #define PLATFORM_ON_TRACK_ACT_WAIT_FOR_MARIO   1\n    #define PLATFORM_ON_TRACK_ACT_MOVE_ALONG_TRACK 2\n    #define PLATFORM_ON_TRACK_ACT_PAUSE_BRIEFLY    3\n    #define PLATFORM_ON_TRACK_ACT_FALL             4\n\n    /* oBhvParams >> 16 */\n    #define PLATFORM_ON_TRACK_BP_MASK_PATH       0x000F\n    #define PLATFORM_ON_TRACK_BP_MASK_TYPE       0x0070\n    #define PLATFORM_ON_TRACK_BP_RETURN_TO_START (1 <<  8)\n    #define PLATFORM_ON_TRACK_BP_DONT_DISAPPEAR  (1 <<  9)\n    #define PLATFORM_ON_TRACK_BP_DONT_TURN_YAW   (1 << 10)\n    #define PLATFORM_ON_TRACK_BP_DONT_TURN_ROLL  (1 << 11)\n\n    #define PLATFORM_ON_TRACK_TYPE_CARPET    0\n    #define PLATFORM_ON_TRACK_TYPE_SKI_LIFT  1\n    #define PLATFORM_ON_TRACK_TYPE_CHECKERED 2\n    #define PLATFORM_ON_TRACK_TYPE_GRATE     3\n\n/* Purple Switch */\n    /* oAction */\n    #define PURPLE_SWITCH_ACT_IDLE                      0\n    #define PURPLE_SWITCH_ACT_PRESSED                   1\n    #define PURPLE_SWITCH_ACT_TICKING                   2\n    #define PURPLE_SWITCH_ACT_UNPRESSED                 3\n    #define PURPLE_SWITCH_ACT_WAIT_FOR_MARIO_TO_GET_OFF 4\n\n/* Pyramid Elevator */\n    /* oAction */\n    #define PYRAMID_ELEVATOR_ACT_IDLE              0\n    #define PYRAMID_ELEVATOR_ACT_START_MOVING      1\n    #define PYRAMID_ELEVATOR_ACT_CONSTANT_VELOCITY 2\n    #define PYRAMID_ELEVATOR_ACT_AT_BOTTOM         3\n\n/* Pyramid Top */\n    /* oAction */\n    #define PYRAMID_TOP_ACT_CHECK_IF_SOLVED 0\n    #define PYRAMID_TOP_ACT_SPINNING        1\n    #define PYRAMID_TOP_ACT_EXPLODE         2\n\n/* Pyramid Wall */\n    /* oAction */\n    #define PYRAMID_WALL_ACT_MOVING_DOWN 0\n    #define PYRAMID_WALL_ACT_MOVING_UP   1\n\n    /* oBhvParams2ndByte */\n    #define PYRAMID_WALL_BP_POSITION_HIGH   0\n    #define PYRAMID_WALL_BP_POSITION_MIDDLE 1\n    #define PYRAMID_WALL_BP_POSITION_LOW    2\n\n/* Penguins (General) */\n    /* Walking sounds */\n    #define PENGUIN_WALK_BABY 0\n    #define PENGUIN_WALK_BIG  1\n\n    /* Animations */\n    #define PENGUIN_ANIM_WALK 0\n    #define PENGUIN_ANIM_IDLE 3\n\n/* Racing Penguin */\n    /* oAction */\n    #define RACING_PENGUIN_ACT_WAIT_FOR_MARIO   0\n    #define RACING_PENGUIN_ACT_SHOW_INIT_TEXT   1\n    #define RACING_PENGUIN_ACT_PREPARE_FOR_RACE 2\n    #define RACING_PENGUIN_ACT_RACE             3\n    #define RACING_PENGUIN_ACT_FINISH_RACE      4\n    #define RACING_PENGUIN_ACT_SHOW_FINAL_TEXT  5\n\n    /* oBhvParams2ndByte */\n    #define RACING_PENGUIN_BP_THIN 0\n    #define RACING_PENGUIN_BP_FAT  1\n\n/* SL Walking Penguin */\n    /* oAction */\n    #define SL_WALKING_PENGUIN_ACT_MOVING_FORWARDS  0\n    #define SL_WALKING_PENGUIN_ACT_TURNING_BACK     1\n    #define SL_WALKING_PENGUIN_ACT_RETURNING        2\n    #define SL_WALKING_PENGUIN_ACT_TURNING_FORWARDS 3\n\n/* Snowman Wind */\n    /* oSubAction */\n    #define SL_SNOWMAN_WIND_ACT_IDLE    0\n    #define SL_SNOWMAN_WIND_ACT_TALKING 1\n    #define SL_SNOWMAN_WIND_ACT_BLOWING 2\n\n/* Water Bomb */\n    /* oAction */\n    #define WATER_BOMB_ACT_SHOT_FROM_CANNON 0\n    #define WATER_BOMB_ACT_INIT             1\n    #define WATER_BOMB_ACT_DROP             2\n    #define WATER_BOMB_ACT_EXPLODE          3\n\n/* TTC Rotating Solid */\n    /* oBhvParams2ndByte */\n    #define TTC_ROTATING_SOLID_BP_CUBE             0\n    #define TTC_ROTATING_SOLID_BP_TRIANGULAR_PRISM 1\n\n/* TTC Treadmill */\n    /* oBhvParams2ndByte */\n    #define TTC_TREADMILL_BP_FLAG_LARGE (0 << 0)\n    #define TTC_TREADMILL_BP_FLAG_SMALL (1 << 0)\n    #define TTC_TREADMILL_BP_FLAG_MASK  (TTC_TREADMILL_BP_FLAG_LARGE | TTC_TREADMILL_BP_FLAG_SMALL)\n    #define TTC_TREADMILL_BP_LARGE_1    ((0 << 1) | TTC_TREADMILL_BP_FLAG_LARGE)\n    #define TTC_TREADMILL_BP_SMALL_1    ((0 << 1) | TTC_TREADMILL_BP_FLAG_SMALL)\n    #define TTC_TREADMILL_BP_LARGE_2    ((1 << 1) | TTC_TREADMILL_BP_FLAG_LARGE)\n    #define TTC_TREADMILL_BP_SMALL_2    ((1 << 1) | TTC_TREADMILL_BP_FLAG_SMALL)\n\n/* TTC Moving Bar */\n    /* oAction */\n    #define TTC_MOVING_BAR_ACT_WAIT      0\n    #define TTC_MOVING_BAR_ACT_PULL_BACK 1\n    #define TTC_MOVING_BAR_ACT_EXTEND    2\n    #define TTC_MOVING_BAR_ACT_RETRACT   3\n\n/* TTC Cog */\n    /* oBhvParams2ndByte */\n    #define TTC_COG_BP_SHAPE_HEXAGON  (0 << 1)\n    #define TTC_COG_BP_SHAPE_TRIANGLE (1 << 1)\n    #define TTC_COG_BP_SHAPE_MASK     (TTC_COG_BP_SHAPE_HEXAGON | TTC_COG_BP_SHAPE_TRIANGLE)\n    #define TTC_COG_BP_DIR_CCW        (0 << 0) // TODO: Check these\n    #define TTC_COG_BP_DIR_CW         (1 << 0)\n    #define TTC_COG_BP_DIR_MASK       (TTC_COG_BP_DIR_CCW | TTC_COG_BP_DIR_CW)\n\n/* TTC 2D Rotator */\n    /* oBhvParams2ndByte */\n    #define TTC_2D_ROTATOR_BP_HAND   0\n    #define TTC_2D_ROTATOR_BP_2D_COG 1\n\n/* Activated Back-and-Forth Platform */\n    #define ACTIVATED_BF_PLAT_TYPE_BITS_ARROW_PLAT 0\n    #define ACTIVATED_BF_PLAT_TYPE_BITFS_MESH_PLAT 1\n    #define ACTIVATED_BF_PLAT_TYPE_BITFS_ELEVATOR  2\n\n    /* oBhvParams >> 16 */\n    #define ACTIVATED_BF_PLAT_BP_MASK_TYPE ((ACTIVATED_BF_PLAT_TYPE_BITS_ARROW_PLAT | \\\n                                             ACTIVATED_BF_PLAT_TYPE_BITFS_MESH_PLAT | \\\n                                             ACTIVATED_BF_PLAT_TYPE_BITFS_ELEVATOR) << 8)\n\n/* Dorrie */\n    /* oAction */\n    #define DORRIE_ACT_MOVE       0\n    #define DORRIE_ACT_LOWER_HEAD 1\n    #define DORRIE_ACT_RAISE_HEAD 2\n\n/* Mad Piano */\n    /* oAction */\n    #define MAD_PIANO_ACT_WAIT   0\n    #define MAD_PIANO_ACT_ATTACK 1\n\n/* Fire Piranha Plant */\n    /* oAction */\n    #define FIRE_PIRANHA_PLANT_ACT_HIDE 0\n    #define FIRE_PIRANHA_PLANT_ACT_GROW 1\n\n/* Fire Spitter */\n    /* oAction */\n    #define FIRE_SPITTER_ACT_IDLE      0\n    #define FIRE_SPITTER_ACT_SPIT_FIRE 1\n\n/* Eyerok Boss */\n    /* oAction */\n    #define EYEROK_BOSS_ACT_SLEEP           0\n    #define EYEROK_BOSS_ACT_WAKE_UP         1\n    #define EYEROK_BOSS_ACT_SHOW_INTRO_TEXT 2\n    #define EYEROK_BOSS_ACT_FIGHT           3\n    #define EYEROK_BOSS_ACT_DIE             4\n\n/* Eyerok Hand */\n    /* oAction */\n    #define EYEROK_HAND_ACT_SLEEP              0\n    #define EYEROK_HAND_ACT_IDLE               1\n    #define EYEROK_HAND_ACT_OPEN               2\n    #define EYEROK_HAND_ACT_SHOW_EYE           3\n    #define EYEROK_HAND_ACT_CLOSE              4\n    #define EYEROK_HAND_ACT_RETREAT            5\n    #define EYEROK_HAND_ACT_TARGET_MARIO       6\n    #define EYEROK_HAND_ACT_SMASH              7\n    #define EYEROK_HAND_ACT_FIST_PUSH          8\n    #define EYEROK_HAND_ACT_FIST_SWEEP         9\n    #define EYEROK_HAND_ACT_BEGIN_DOUBLE_POUND 10 // raising for double smash\n    #define EYEROK_HAND_ACT_DOUBLE_POUND       11 // double smashing\n    #define EYEROK_HAND_ACT_ATTACKED           12\n    #define EYEROK_HAND_ACT_RECOVER            13\n    #define EYEROK_HAND_ACT_BECOME_ACTIVE      14\n    #define EYEROK_HAND_ACT_DIE                15\n\n/* Klepto */\n    /* oAction */\n    #define KLEPTO_ACT_CIRCLE_TARGET_HOLDING   0\n    #define KLEPTO_ACT_APPROACH_TARGET_HOLDING 1\n    #define KLEPTO_ACT_WAIT_FOR_MARIO          2\n    #define KLEPTO_ACT_TURN_TOWARD_MARIO       3\n    #define KLEPTO_ACT_DIVE_AT_MARIO           4\n    #define KLEPTO_ACT_RESET_POSITION          5\n    #define KLEPTO_ACT_STRUCK_BY_MARIO         6\n    #define KLEPTO_ACT_RETREAT                 7\n\n    /* oAnimState */\n    #define KLEPTO_ANIM_STATE_HOLDING_NOTHING 0\n    #define KLEPTO_ANIM_STATE_HOLDING_CAP     1\n    #define KLEPTO_ANIM_STATE_HOLDING_STAR    2\n\n/* Bird */\n    /* oAction */\n    #define BIRD_ACT_INACTIVE 0\n    #define BIRD_ACT_FLY      1\n\n    /* oBhvParams2ndByte */\n    #define BIRD_BP_SPAWNED 0\n    #define BIRD_BP_SPAWNER 1\n\n/* Skeeter */\n    /* oAction */\n    #define SKEETER_ACT_IDLE  0\n    #define SKEETER_ACT_LUNGE 1\n    #define SKEETER_ACT_WALK  2\n\n/* Snufit */\n    /* oAction */\n    #define SNUFIT_ACT_IDLE  0\n    #define SNUFIT_ACT_SHOOT 1\n\n/* Tweester */\n    /* oAction */\n    #define TWEESTER_ACT_IDLE  0\n    #define TWEESTER_ACT_CHASE 1\n    #define TWEESTER_ACT_HIDE  2\n\n    /* oSubAction */\n    #define TWEESTER_SUB_ACT_WAIT  0\n\n    #define TWEESTER_SUB_ACT_CHASE 0\n\n/* Triplet Butterfly */\n    /* oAction */\n    #define TRIPLET_BUTTERFLY_ACT_INIT     0\n    #define TRIPLET_BUTTERFLY_ACT_WANDER   1\n    #define TRIPLET_BUTTERFLY_ACT_ACTIVATE 2\n    #define TRIPLET_BUTTERFLY_ACT_EXPLODE  3\n\n    /* oBhvParams2ndByte */\n    #define TRIPLET_BUTTERFLY_BP_SPAWN_TYPE_SPAWNER   (0 << 0)\n    #define TRIPLET_BUTTERFLY_BP_SPAWN_TYPE_SPAWNED_1 (1 << 0)\n    #define TRIPLET_BUTTERFLY_BP_SPAWN_TYPE_SPAWNED_2 (1 << 1)\n    #define TRIPLET_BUTTERFLY_BP_SPAWN_TYPE_MASK      (TRIPLET_BUTTERFLY_BP_SPAWN_TYPE_SPAWNER | \\\n                                                       TRIPLET_BUTTERFLY_BP_SPAWN_TYPE_SPAWNED_1 | \\\n                                                       TRIPLET_BUTTERFLY_BP_SPAWN_TYPE_SPAWNED_2)\n    #define TRIPLET_BUTTERFLY_BP_NO_BOMBS             (1 << 2)\n\n    /* oTripletButterflyType */\n    #define TRIPLET_BUTTERFLY_TYPE_NORMAL    -1\n    #define TRIPLET_BUTTERFLY_TYPE_EXPLODES  0\n    #define TRIPLET_BUTTERFLY_TYPE_SPAWN_1UP 1\n\n/* Water Level Diamond */\n    /* oAction */\n    // Loading\n    #define WATER_LEVEL_DIAMOND_ACT_INIT               0\n    // Idling when Mario isn't inside its hitbox\n    #define WATER_LEVEL_DIAMOND_ACT_IDLE               1\n    // While the water level is changing\n    #define WATER_LEVEL_DIAMOND_ACT_CHANGE_WATER_LEVEL 2\n    // After the water level has changed but Mario hasn't left its hitbox yet\n    #define WATER_LEVEL_DIAMOND_ACT_IDLE_SPINNING      3\n\n/* Mips */\n    /* oAction */\n    #define MIPS_ACT_WAIT_FOR_NEARBY_MARIO   0\n    #define MIPS_ACT_FOLLOW_PATH             1\n    #define MIPS_ACT_WAIT_FOR_ANIMATION_DONE 2\n    #define MIPS_ACT_FALL_DOWN               3\n    #define MIPS_ACT_IDLE                    4\n\n    /* oMipsStarStatus */\n    #define MIPS_STAR_STATUS_HAVENT_SPAWNED_STAR  0\n    #define MIPS_STAR_STATUS_SHOULD_SPAWN_STAR    1\n    #define MIPS_STAR_STATUS_ALREADY_SPAWNED_STAR 2\n\n    /* oBhvParams2ndByte */\n    #define MIPS_BP_15_STARS 0\n    #define MIPS_BP_50_STARS 1\n\n/* Falling Pillar */\n    /* oAction */\n    #define FALLING_PILLAR_ACT_IDLE    0\n    #define FALLING_PILLAR_ACT_TURNING 1\n    #define FALLING_PILLAR_ACT_FALLING 2\n\n/* Bowser Puzzle */\n    /* oAction */\n    #define BOWSER_PUZZLE_ACT_SPAWN_PIECES      0\n    #define BOWSER_PUZZLE_ACT_WAIT_FOR_COMPLETE 1\n    #define BOWSER_PUZZLE_ACT_DONE              2\n\n/* Mr Blizzard */\n    /* oAction */\n    #define MR_BLIZZARD_ACT_SPAWN_SNOWBALL   0\n    #define MR_BLIZZARD_ACT_HIDE_UNHIDE      1\n    #define MR_BLIZZARD_ACT_RISE_FROM_GROUND 2\n    #define MR_BLIZZARD_ACT_ROTATE           3\n    #define MR_BLIZZARD_ACT_THROW_SNOWBALL   4\n    #define MR_BLIZZARD_ACT_BURROW           5\n    #define MR_BLIZZARD_ACT_DEATH            6\n    #define MR_BLIZZARD_ACT_JUMP             7\n\n    /* oBhvParams2ndByte */\n    #define MR_BLIZZARD_STYPE_GENERIC 0\n    #define MR_BLIZZARD_STYPE_JUMPING 1\n    #define MR_BLIZZARD_STYPE_CAP     2\n\n/* Whomp */\n    /* oBhvParams2ndByte */\n    #define WHOMP_BP_SMALL 0\n    #define WHOMP_BP_KING  1\n\n/* 1-Up Mushroom */\n    /* oBhvParams2ndByte */\n    #define ONE_UP_BP_GENERIC           0\n    #define ONE_UP_BP_BEAT_BITDW_BOWSER 1\n    #define ONE_UP_BP_BEAT_BITFS_BOWSER 2\n\n/* Breakable Box */\n    /* oBhvParams2ndByte */\n    #define BREAKABLE_BOX_BP_NO_COINS 0\n    #define BREAKABLE_BOX_BP_3_COINS  1\n    #define BREAKABLE_BOX_BP_5_COINS  2\n    #define BREAKABLE_BOX_BP_GIANT    3\n\n/* Hidden Object */\n    /* oAction */\n    #define HIDDEN_OBJECT_ACT_INACTIVE 0\n    #define HIDDEN_OBJECT_ACT_ACTIVE   1\n    #define HIDDEN_OBJECT_ACT_BROKEN   2\n\n    /* oBhvParams2ndByte */\n    #define HIDDEN_OBJECT_BP_BREAKABLE_BOX            0\n    #define HIDDEN_OBJECT_BP_WDW_PLATFORM             1\n    #define HIDDEN_OBJECT_BP_UNBREAKABLE_BOX_UNUSED_1 1\n    #define HIDDEN_OBJECT_BP_UNBREAKABLE_BOX_UNUSED_2 2\n\n/* Exclamation Box */\n    /* oAnimState */\n    #define EXCLAMATION_BOX_ANIM_STATE_WING_CAP   0\n    #define EXCLAMATION_BOX_ANIM_STATE_METAL_CAP  1\n    #define EXCLAMATION_BOX_ANIM_STATE_VANISH_CAP 2\n    #define EXCLAMATION_BOX_ANIM_STATE_DEFAULT    3\n\n    /* oBhvParams2ndByte */\n    #define EXCLAMATION_BOX_BP_WING_CAP         0\n    #define EXCLAMATION_BOX_BP_METAL_CAP        1\n    #define EXCLAMATION_BOX_BP_VANISH_CAP       2\n    #define EXCLAMATION_BOX_BP_SPECIAL_CAP_END  2\n    #define EXCLAMATION_BOX_BP_KOOPA_SHELL      3\n    #define EXCLAMATION_BOX_BP_ONE_COIN         4\n    #define EXCLAMATION_BOX_BP_THREE_COINS      5\n    #define EXCLAMATION_BOX_BP_TEN_COINS        6\n    #define EXCLAMATION_BOX_BP_1UP_WALKING      7\n    #define EXCLAMATION_BOX_BP_STAR_ACT_1       8\n    #define EXCLAMATION_BOX_BP_1UP_RUNNING_AWAY 9\n    #define EXCLAMATION_BOX_BP_STAR_ACT_2       10\n    #define EXCLAMATION_BOX_BP_STAR_ACT_3       11\n    #define EXCLAMATION_BOX_BP_STAR_ACT_4       12\n    #define EXCLAMATION_BOX_BP_STAR_ACT_5       13\n    #define EXCLAMATION_BOX_BP_STAR_ACT_6       14\n    #define EXCLAMATION_BOX_BP_END              99\n\n/* Cap Switch */\n    /* oBhvParams2ndByte */\n    #define CAP_SWITCH_BP_RED    0\n    #define CAP_SWITCH_BP_GREEN  1\n    #define CAP_SWITCH_BP_BLUE   2\n    #define CAP_SWITCH_BP_YELLOW 3\n\n/* Openable Grill */\n    /* oBhvParams2ndByte */\n    #define OPENABLE_GRILL_BP_BOB 0\n    #define OPENABLE_GRILL_BP_HMC 1\n\n/* WF Rotating Wooden Platform */\n    /* oAction */\n    #define WF_ROTATING_WOODEN_PLATFORM_ACT_IDLE     0\n    #define WF_ROTATING_WOODEN_PLATFORM_ACT_ROTATING 1\n\n/* Rotating Platform */\n    /* oBhvParams2ndByte */\n    #define ROTATING_PLATFORM_BP_WF  0\n    #define ROTATING_PLATFORM_BP_WDW 1\n\n/* Tumbling Bridge */\n    /* oBhvParams2ndByte */\n    #define TUMBLING_BRIDGE_BP_WF    0\n    #define TUMBLING_BRIDGE_BP_BBH   1\n    #define TUMBLING_BRIDGE_BP_LLL   2\n    #define TUMBLING_BRIDGE_BP_BITFS 3\n\n/* Grindel or Thwomp */\n    /* oAction */\n    #define GRINDEL_THWOMP_ACT_RAISE          0\n    #define GRINDEL_THWOMP_ACT_IDLE_AT_TOP    1\n    #define GRINDEL_THWOMP_ACT_LOWER          2\n    #define GRINDEL_THWOMP_ACT_LAND           3\n    #define GRINDEL_THWOMP_ACT_IDLE_AT_BOTTOM 4\n\n/* Tox Box */\n    /* oAction */\n    #define TOX_BOX_ACT_INIT          0\n    #define TOX_BOX_ACT_ROLL_LAND     1\n    #define TOX_BOX_ACT_IDLE          2\n    #define TOX_BOX_ACT_UNUSED_IDLE   3\n    #define TOX_BOX_ACT_ROLL_FORWARD  4\n    #define TOX_BOX_ACT_ROLL_BACKWARD 5\n    #define TOX_BOX_ACT_ROLL_RIGHT    6\n    #define TOX_BOX_ACT_ROLL_LEFT     7\n    #define TOX_BOX_ACT_TABLE_END     -1\n\n    /* oBhvParams2ndByte */\n    #define TOX_BOX_BP_MOVEMENT_PATTERN_1 0\n    #define TOX_BOX_BP_MOVEMENT_PATTERN_2 1\n    #define TOX_BOX_BP_MOVEMENT_PATTERN_3 2\n\n#endif // OBJECT_CONSTANTS_H\n"
  },
  {
    "path": "include/object_fields.h",
    "content": "#ifndef OBJECT_FIELDS_H\n#define OBJECT_FIELDS_H\n\n/**\n * The array [0x88, 0x1C8) in struct Object consists of fields that can vary by\n * object type. These macros provide access to these fields.\n */\n\n#ifdef OBJECT_FIELDS_INDEX_DIRECTLY\n#define OBJECT_FIELD_U32(index)           index\n#define OBJECT_FIELD_S32(index)           index\n#define OBJECT_FIELD_S16(index, subIndex) index\n#define OBJECT_FIELD_F32(index)           index\n#define OBJECT_FIELD_S16P(index)          index\n#define OBJECT_FIELD_S32P(index)          index\n#define OBJECT_FIELD_ANIMS(index)         index\n#define OBJECT_FIELD_WAYPOINT(index)      index\n#define OBJECT_FIELD_CHAIN_SEGMENT(index) index\n#define OBJECT_FIELD_OBJ(index)           index\n#define OBJECT_FIELD_SURFACE(index)       index\n#define OBJECT_FIELD_VPTR(index)          index\n#define OBJECT_FIELD_CVPTR(index)         index\n#else\n#define OBJECT_FIELD_U32(index)           rawData.asU32[index]\n#define OBJECT_FIELD_S32(index)           rawData.asS32[index]\n#define OBJECT_FIELD_S16(index, subIndex) rawData.asS16[index][subIndex]\n#define OBJECT_FIELD_F32(index)           rawData.asF32[index]\n#if !IS_64_BIT\n#define OBJECT_FIELD_S16P(index)          rawData.asS16P[index]\n#define OBJECT_FIELD_S32P(index)          rawData.asS32P[index]\n#define OBJECT_FIELD_ANIMS(index)         rawData.asAnims[index]\n#define OBJECT_FIELD_WAYPOINT(index)      rawData.asWaypoint[index]\n#define OBJECT_FIELD_CHAIN_SEGMENT(index) rawData.asChainSegment[index]\n#define OBJECT_FIELD_OBJ(index)           rawData.asObject[index]\n#define OBJECT_FIELD_SURFACE(index)       rawData.asSurface[index]\n#define OBJECT_FIELD_VPTR(index)          rawData.asVoidPtr[index]\n#define OBJECT_FIELD_CVPTR(index)         rawData.asConstVoidPtr[index]\n#else\n#define OBJECT_FIELD_S16P(index)          ptrData.asS16P[index]\n#define OBJECT_FIELD_S32P(index)          ptrData.asS32P[index]\n#define OBJECT_FIELD_ANIMS(index)         ptrData.asAnims[index]\n#define OBJECT_FIELD_WAYPOINT(index)      ptrData.asWaypoint[index]\n#define OBJECT_FIELD_CHAIN_SEGMENT(index) ptrData.asChainSegment[index]\n#define OBJECT_FIELD_OBJ(index)           ptrData.asObject[index]\n#define OBJECT_FIELD_SURFACE(index)       ptrData.asSurface[index]\n#define OBJECT_FIELD_VPTR(index)          ptrData.asVoidPtr[index]\n#define OBJECT_FIELD_CVPTR(index)         ptrData.asConstVoidPtr[index]\n#endif\n#endif\n\n// 0x088 (0x00), the first field, is object-specific and defined below the common fields.\n/* Common fields */\n#define /*0x08C*/ oFlags                      OBJECT_FIELD_U32(0x01)\n#define /*0x090*/ oDialogResponse             OBJECT_FIELD_S16(0x02, 0)\n#define /*0x092*/ oDialogState                OBJECT_FIELD_S16(0x02, 1)\n#define /*0x094*/ oUnk94                      OBJECT_FIELD_U32(0x03)\n// 0x98 unused/removed.\n#define /*0x09C*/ oIntangibleTimer            OBJECT_FIELD_S32(0x05)\n#define /*0x0A0*/ O_POS_INDEX                 0x06\n#define /*0x0A0*/ oPosX                       OBJECT_FIELD_F32(O_POS_INDEX + 0)\n#define /*0x0A4*/ oPosY                       OBJECT_FIELD_F32(O_POS_INDEX + 1)\n#define /*0x0A8*/ oPosZ                       OBJECT_FIELD_F32(O_POS_INDEX + 2)\n#define /*0x0AC*/ oVelX                       OBJECT_FIELD_F32(0x09)\n#define /*0x0B0*/ oVelY                       OBJECT_FIELD_F32(0x0A)\n#define /*0x0B4*/ oVelZ                       OBJECT_FIELD_F32(0x0B)\n#define /*0x0B8*/ oForwardVel                 OBJECT_FIELD_F32(0x0C)\n#define /*0x0B8*/ oForwardVelS32              OBJECT_FIELD_S32(0x0C)\n#define /*0x0BC*/ oLeftVel                    OBJECT_FIELD_F32(0x0D)\n#define /*0x0C0*/ oUpVel                      OBJECT_FIELD_F32(0x0E)\n#define /*0x0C4*/ O_MOVE_ANGLE_INDEX          0x0F\n#define /*0x0C4*/ O_MOVE_ANGLE_PITCH_INDEX    (O_MOVE_ANGLE_INDEX + 0)\n#define /*0x0C4*/ O_MOVE_ANGLE_YAW_INDEX      (O_MOVE_ANGLE_INDEX + 1)\n#define /*0x0C4*/ O_MOVE_ANGLE_ROLL_INDEX     (O_MOVE_ANGLE_INDEX + 2)\n#define /*0x0C4*/ oMoveAnglePitch             OBJECT_FIELD_S32(O_MOVE_ANGLE_PITCH_INDEX)\n#define /*0x0C8*/ oMoveAngleYaw               OBJECT_FIELD_S32(O_MOVE_ANGLE_YAW_INDEX)\n#define /*0x0CC*/ oMoveAngleRoll              OBJECT_FIELD_S32(O_MOVE_ANGLE_ROLL_INDEX)\n#define /*0x0D0*/ O_FACE_ANGLE_INDEX          0x12\n#define /*0x0D0*/ O_FACE_ANGLE_PITCH_INDEX    (O_FACE_ANGLE_INDEX + 0)\n#define /*0x0D0*/ O_FACE_ANGLE_YAW_INDEX      (O_FACE_ANGLE_INDEX + 1)\n#define /*0x0D0*/ O_FACE_ANGLE_ROLL_INDEX     (O_FACE_ANGLE_INDEX + 2)\n#define /*0x0D0*/ oFaceAnglePitch             OBJECT_FIELD_S32(O_FACE_ANGLE_PITCH_INDEX)\n#define /*0x0D4*/ oFaceAngleYaw               OBJECT_FIELD_S32(O_FACE_ANGLE_YAW_INDEX)\n#define /*0x0D8*/ oFaceAngleRoll              OBJECT_FIELD_S32(O_FACE_ANGLE_ROLL_INDEX)\n#define /*0x0DC*/ oGraphYOffset               OBJECT_FIELD_F32(0x15)\n#define /*0x0E0*/ oActiveParticleFlags        OBJECT_FIELD_U32(0x16)\n#define /*0x0E4*/ oGravity                    OBJECT_FIELD_F32(0x17)\n#define /*0x0E8*/ oFloorHeight                OBJECT_FIELD_F32(0x18)\n#define /*0x0EC*/ oMoveFlags                  OBJECT_FIELD_U32(0x19)\n#define /*0x0F0*/ oAnimState                  OBJECT_FIELD_S32(0x1A)\n// 0x0F4-0x110 (0x1B-0x22) are object specific and defined below the common fields.\n#define /*0x114*/ oAngleVelPitch              OBJECT_FIELD_S32(0x23)\n#define /*0x118*/ oAngleVelYaw                OBJECT_FIELD_S32(0x24)\n#define /*0x11C*/ oAngleVelRoll               OBJECT_FIELD_S32(0x25)\n#define /*0x120*/ oAnimations                 OBJECT_FIELD_ANIMS(0x26)\n#define /*0x124*/ oHeldState                  OBJECT_FIELD_U32(0x27)\n#define /*0x128*/ oWallHitboxRadius           OBJECT_FIELD_F32(0x28)\n#define /*0x12C*/ oDragStrength               OBJECT_FIELD_F32(0x29)\n#define /*0x130*/ oInteractType               OBJECT_FIELD_U32(0x2A)\n#define /*0x134*/ oInteractStatus             OBJECT_FIELD_S32(0x2B)\n#define /*0x138*/ O_PARENT_RELATIVE_POS_INDEX 0x2C\n#define /*0x138*/ oParentRelativePosX         OBJECT_FIELD_F32(O_PARENT_RELATIVE_POS_INDEX + 0)\n#define /*0x13C*/ oParentRelativePosY         OBJECT_FIELD_F32(O_PARENT_RELATIVE_POS_INDEX + 1)\n#define /*0x140*/ oParentRelativePosZ         OBJECT_FIELD_F32(O_PARENT_RELATIVE_POS_INDEX + 2)\n#define /*0x144*/ oBhvParams2ndByte           OBJECT_FIELD_S32(0x2F)\n// 0x148 unused, possibly a third param byte.\n#define /*0x14C*/ oAction                     OBJECT_FIELD_S32(0x31)\n#define /*0x150*/ oSubAction                  OBJECT_FIELD_S32(0x32)\n#define /*0x154*/ oTimer                      OBJECT_FIELD_S32(0x33)\n#define /*0x158*/ oBounciness                 OBJECT_FIELD_F32(0x34)\n#define /*0x15C*/ oDistanceToMario            OBJECT_FIELD_F32(0x35)\n#define /*0x160*/ oAngleToMario               OBJECT_FIELD_S32(0x36)\n#define /*0x164*/ oHomeX                      OBJECT_FIELD_F32(0x37)\n#define /*0x168*/ oHomeY                      OBJECT_FIELD_F32(0x38)\n#define /*0x16C*/ oHomeZ                      OBJECT_FIELD_F32(0x39)\n#define /*0x170*/ oFriction                   OBJECT_FIELD_F32(0x3A)\n#define /*0x174*/ oBuoyancy                   OBJECT_FIELD_F32(0x3B)\n#define /*0x178*/ oSoundStateID               OBJECT_FIELD_S32(0x3C)\n#define /*0x17C*/ oOpacity                    OBJECT_FIELD_S32(0x3D)\n#define /*0x180*/ oDamageOrCoinValue          OBJECT_FIELD_S32(0x3E)\n#define /*0x184*/ oHealth                     OBJECT_FIELD_S32(0x3F)\n#define /*0x188*/ oBhvParams                  OBJECT_FIELD_S32(0x40)\n#define /*0x18C*/ oPrevAction                 OBJECT_FIELD_S32(0x41)\n#define /*0x190*/ oInteractionSubtype         OBJECT_FIELD_U32(0x42)\n#define /*0x194*/ oCollisionDistance          OBJECT_FIELD_F32(0x43)\n#define /*0x198*/ oNumLootCoins               OBJECT_FIELD_S32(0x44)\n#define /*0x19C*/ oDrawingDistance            OBJECT_FIELD_F32(0x45)\n#define /*0x1A0*/ oRoom                       OBJECT_FIELD_S32(0x46)\n// 0x1A4 is unused, possibly related to 0x1A8 in removed macro purposes.\n#define /*0x1A8*/ oUnusedBhvParams            OBJECT_FIELD_U32(0x48)\n// 0x1AC-0x1B2 (0x48-0x4A) are object specific and defined below the common fields.\n#define /*0x1B4*/ oWallAngle                  OBJECT_FIELD_S32(0x4B)\n#define /*0x1B8*/ oFloorType                  OBJECT_FIELD_S16(0x4C, 0)\n#define /*0x1BA*/ oFloorRoom                  OBJECT_FIELD_S16(0x4C, 1)\n#define /*0x1BC*/ oAngleToHome                OBJECT_FIELD_S32(0x4D)\n#define /*0x1C0*/ oFloor                      OBJECT_FIELD_SURFACE(0x4E)\n#define /*0x1C4*/ oDeathSound                 OBJECT_FIELD_S32(0x4F)\n\n/* Pathed (see obj_follow_path) */\n#define /*0x0FC*/ oPathedStartWaypoint     OBJECT_FIELD_WAYPOINT(0x1D)\n#define /*0x100*/ oPathedPrevWaypoint      OBJECT_FIELD_WAYPOINT(0x1E)\n#define /*0x104*/ oPathedPrevWaypointFlags OBJECT_FIELD_S32(0x1F)\n#define /*0x108*/ oPathedTargetPitch       OBJECT_FIELD_S32(0x20)\n#define /*0x10C*/ oPathedTargetYaw         OBJECT_FIELD_S32(0x21)\n\n/* Special Object Macro */\n#define /*0x108*/ oMacroUnk108 OBJECT_FIELD_F32(0x20)\n#define /*0x10C*/ oMacroUnk10C OBJECT_FIELD_F32(0x21)\n#define /*0x110*/ oMacroUnk110 OBJECT_FIELD_F32(0x22)\n\n/* Mario */\n#define /*0x0F4*/ oMarioParticleFlags    OBJECT_FIELD_S32(0x1B)\n#define /*0x108*/ oMarioPoleUnk108       OBJECT_FIELD_S32(0x20)\n#define /*0x108*/ oMarioReadingSignDYaw  OBJECT_FIELD_S32(0x20)\n#define /*0x10C*/ oMarioPoleYawVel       OBJECT_FIELD_S32(0x21)\n#define /*0x10C*/ oMarioCannonObjectYaw  OBJECT_FIELD_S32(0x21)\n#define /*0x10C*/ oMarioTornadoYawVel    OBJECT_FIELD_S32(0x21)\n#define /*0x10C*/ oMarioReadingSignDPosX OBJECT_FIELD_F32(0x21)\n#define /*0x110*/ oMarioPolePos          OBJECT_FIELD_F32(0x22)\n#define /*0x110*/ oMarioCannonInputYaw   OBJECT_FIELD_S32(0x22)\n#define /*0x110*/ oMarioTornadoPosY      OBJECT_FIELD_F32(0x22)\n#define /*0x110*/ oMarioReadingSignDPosZ OBJECT_FIELD_F32(0x22)\n#define /*0x110*/ oMarioWhirlpoolPosY    OBJECT_FIELD_F32(0x22)\n#define /*0x110*/ oMarioBurnTimer        OBJECT_FIELD_S32(0x22)\n#define /*0x110*/ oMarioLongJumpIsSlow   OBJECT_FIELD_S32(0x22)\n#define /*0x110*/ oMarioSteepJumpYaw     OBJECT_FIELD_S32(0x22)\n#define /*0x110*/ oMarioWalkingPitch     OBJECT_FIELD_S32(0x22)\n\n/* Hidden 1-Up */\n#define /*0x0F4*/ oHidden1UpNumTouchedTriggers OBJECT_FIELD_S32(0x1B)\n\n/* Activated Back and Forth Platform */\n#define /*0x0F4*/ oActivatedBackAndForthPlatformMaxOffset    OBJECT_FIELD_F32(0x1B)\n#define /*0x0F8*/ oActivatedBackAndForthPlatformOffset       OBJECT_FIELD_F32(0x1C)\n#define /*0x0FC*/ oActivatedBackAndForthPlatformVel          OBJECT_FIELD_F32(0x1D)\n#define /*0x100*/ oActivatedBackAndForthPlatformCountdown    OBJECT_FIELD_S32(0x1E)\n#define /*0x104*/ oActivatedBackAndForthPlatformStartYaw     OBJECT_FIELD_S32(0x1F)\n#define /*0x108*/ oActivatedBackAndForthPlatformVertical     OBJECT_FIELD_S32(0x20)\n#define /*0x10C*/ oActivatedBackAndForthPlatformFlipRotation OBJECT_FIELD_S32(0x21)\n\n/* Amp */\n#define /*0x0F4*/ oAmpRadiusOfRotation OBJECT_FIELD_F32(0x1B)\n#define /*0x0F8*/ oAmpYPhase           OBJECT_FIELD_S32(0x1C)\n\n/* Homing Amp */\n#define /*0x0F4*/ oHomingAmpLockedOn OBJECT_FIELD_S32(0x1B)\n#define /*0x0FC*/ oHomingAmpAvgY     OBJECT_FIELD_F32(0x1D)\n\n/* Arrow Lift */\n#define /*0x0F4*/ oArrowLiftDisplacement OBJECT_FIELD_F32(0x1B)\n#define /*0x100*/ oArrowLiftUnk100       OBJECT_FIELD_S32(0x1E)\n\n/* Back-and-Forth Platform */\n#define /*0x0F4*/ oBackAndForthPlatformDirection  OBJECT_FIELD_F32(0x1B)\n#define /*0x0F8*/ oBackAndForthPlatformPathLength OBJECT_FIELD_F32(0x1C)\n#define /*0x0FC*/ oBackAndForthPlatformDistance   OBJECT_FIELD_F32(0x1D)\n#define /*0x100*/ oBackAndForthPlatformVel        OBJECT_FIELD_F32(0x1E)\n\n/* Bird */\n#define /*0x0F4*/ oBirdSpeed       OBJECT_FIELD_F32(0x1B)\n#define /*0x0F8*/ oBirdTargetPitch OBJECT_FIELD_S32(0x1C)\n#define /*0x0FC*/ oBirdTargetYaw   OBJECT_FIELD_S32(0x1D)\n\n/* Bird Chirp Chirp */\n#define /*0x0F4*/ oBirdChirpChirpUnkF4 OBJECT_FIELD_S32(0x1B)\n\n/* End Birds */\n#define /*0x104*/ oEndBirdUnk104 OBJECT_FIELD_F32(0x1F)\n\n/* Hidden Blue Coin */\n#define /*0x0F8*/ oHiddenBlueCoinSwitch OBJECT_FIELD_OBJ(0x1C)\n\n/* Bob-omb */\n#define /*0x0F4*/ oBobombBlinkTimer OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oBobombFuseLit    OBJECT_FIELD_S32(0x1C)\n#define /*0x0FC*/ oBobombFuseTimer  OBJECT_FIELD_S32(0x1D)\n\n/* Bob-omb Buddy */\n#define /*0x0F4*/ oBobombBuddyBlinkTimer       OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oBobombBuddyHasTalkedToMario OBJECT_FIELD_S32(0x1C)\n#define /*0x0FC*/ oBobombBuddyRole             OBJECT_FIELD_S32(0x1D)\n#define /*0x100*/ oBobombBuddyCannonStatus     OBJECT_FIELD_S32(0x1E)\n#define /*0x108*/ oBobombBuddyPosXCopy         OBJECT_FIELD_F32(0x20)\n#define /*0x10C*/ oBobombBuddyPosYCopy         OBJECT_FIELD_F32(0x21)\n#define /*0x110*/ oBobombBuddyPosZCopy         OBJECT_FIELD_F32(0x22)\n\n/* Bob-omb Explosion Bubble */\n#define /*0x0FC*/ oBobombExpBubGfxScaleFacX OBJECT_FIELD_S32(0x1D)\n#define /*0x100*/ oBobombExpBubGfxScaleFacY OBJECT_FIELD_S32(0x1E)\n#define /*0x104*/ oBobombExpBubGfxExpRateX  OBJECT_FIELD_S32(0x1F)\n#define /*0x108*/ oBobombExpBubGfxExpRateY  OBJECT_FIELD_S32(0x20)\n\n/* Bomp (Small) */\n#define /*0x100*/ oSmallBompInitX OBJECT_FIELD_F32(0x1E)\n\n/* Boo */\n#define /*0x088*/ oBooDeathStatus           OBJECT_FIELD_S32(0x00)\n#define /*0x0F4*/ oBooTargetOpacity         OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oBooBaseScale             OBJECT_FIELD_F32(0x1C)\n#define /*0x0FC*/ oBooOscillationTimer      OBJECT_FIELD_S32(0x1D)\n#define /*0x100*/ oBooMoveYawDuringHit      OBJECT_FIELD_S32(0x1E)\n#define /*0x104*/ oBooMoveYawBeforeHit      OBJECT_FIELD_F32(0x1F)\n#define /*0x108*/ oBooParentBigBoo          OBJECT_FIELD_OBJ(0x20)\n#define /*0x10C*/ oBooNegatedAggressiveness OBJECT_FIELD_F32(0x21)\n#define /*0x110*/ oBooInitialMoveYaw        OBJECT_FIELD_S32(0x22)\n#define /*0x1B0*/ oBooTurningSpeed          OBJECT_FIELD_S16(0x4A, 0)\n\n/* Big Boo */\n#define /*0x1AC*/ oBigBooNumMinionBoosKilled OBJECT_FIELD_S32(0x49)\n\n/* Bookend */\n#define /*0x0F4*/ oBookendUnkF4 OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oBookendUnkF8 OBJECT_FIELD_S32(0x1C)\n\n/* Book Switch */\n#define /*0x0F4*/ oBookSwitchUnkF4 OBJECT_FIELD_F32(0x1B)\n\n/* Book Switch Manager */\n#define /*0x0F4*/ oBookSwitchManagerUnkF4 OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oBookSwitchManagerUnkF8 OBJECT_FIELD_S32(0x1C)\n\n/* Haunted Bookshelf */\n#define /*0x088*/ oHauntedBookshelfShouldOpen OBJECT_FIELD_S32(0x00)\n\n/* Bouncing FireBall */\n#define /*0x0F4*/ oBouncingFireBallUnkF4 OBJECT_FIELD_S32(0x1B)\n\n/* Bowling Ball */\n#define /*0x0F4*/ oBowlingBallTargetYaw OBJECT_FIELD_S32(0x1B)\n// 0x1D-0x21 reserved for pathing\n\n/* Bowling Ball Spawner (Generic) */\n#define /*0x0F4*/ oBBallSpawnerMaxSpawnDist OBJECT_FIELD_F32(0x1B)\n#define /*0x0F8*/ oBBallSpawnerSpawnOdds    OBJECT_FIELD_F32(0x1C)\n#define /*0x0FC*/ oBBallSpawnerPeriodMinus1 OBJECT_FIELD_S32(0x1D)\n\n/* Bowser */\n#define /*0x088*/ oBowserCamAct          OBJECT_FIELD_S32(0x00)\n#define /*0x0F4*/ oBowserStatus          OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oBowserTimer           OBJECT_FIELD_S32(0x1C)\n#define /*0x0FC*/ oBowserDistToCenter    OBJECT_FIELD_F32(0x1D)\n#define /*0x106*/ oBowserBitSJustJump    OBJECT_FIELD_S16(0x1F, 1)\n#define /*0x108*/ oBowserRandSplitFloor  OBJECT_FIELD_S16(0x20, 0)\n#define /*0x10A*/ oBowserHeldAnglePitch  OBJECT_FIELD_S16(0x20, 1)\n#define /*0x10D*/ oBowserHeldAngleVelYaw OBJECT_FIELD_S16(0x21, 0)\n#define /*0x10E*/ oBowserGrabbedStatus   OBJECT_FIELD_S16(0x21, 1)\n#define /*0x110*/ oBowserIsReacting      OBJECT_FIELD_S16(0x22, 0)\n#define /*0x112*/ oBowserAngleToCenter   OBJECT_FIELD_S16(0x22, 1)\n#define /*0x1AC*/ oBowserTargetOpacity   OBJECT_FIELD_S16(0x49, 0)\n#define /*0x1AE*/ oBowserEyesTimer       OBJECT_FIELD_S16(0x49, 1)\n#define /*0x1B0*/ oBowserEyesShut        OBJECT_FIELD_S16(0x4A, 0)\n#define /*0x1B2*/ oBowserRainbowLight    OBJECT_FIELD_S16(0x4A, 1)\n\n/* Bowser Shockwave */\n#define /*0x0F4*/ oBowserShockWaveScale OBJECT_FIELD_F32(0x1B)\n\n/* Black Smoke Bowser */\n#define /*0x0F4*/ oBlackSmokeBowserUnkF4 OBJECT_FIELD_F32(0x1B)\n\n/* Bowser Key Cutscene */\n#define /*0x0F4*/ oBowserKeyScale OBJECT_FIELD_F32(0x1B)\n\n/* Bowser Puzzle */\n#define /*0x0F4*/ oBowserPuzzleCompletionFlags OBJECT_FIELD_S32(0x1B)\n\n/* Bowser Puzzle Piece */\n#define /*0x0FC*/ oBowserPuzzlePieceOffsetX                  OBJECT_FIELD_F32(0x1D)\n#define /*0x100*/ oBowserPuzzlePieceOffsetY                  OBJECT_FIELD_F32(0x1E)\n#define /*0x104*/ oBowserPuzzlePieceOffsetZ                  OBJECT_FIELD_F32(0x1F)\n#define /*0x108*/ oBowserPuzzlePieceContinuePerformingAction OBJECT_FIELD_S32(0x20)\n#define /*0x10C*/ oBowserPuzzlePieceActionList               OBJECT_FIELD_VPTR(0x21)\n#define /*0x110*/ oBowserPuzzlePieceNextAction               OBJECT_FIELD_VPTR(0x22)\n\n/* Bubba */\n#define /*0x0F4*/ oBubbaUnkF4  OBJECT_FIELD_F32(0x1B)\n#define /*0x0F8*/ oBubbaUnkF8  OBJECT_FIELD_S32(0x1C)\n#define /*0x0FC*/ oBubbaUnkFC  OBJECT_FIELD_S32(0x1D)\n#define /*0x100*/ oBubbaUnk100 OBJECT_FIELD_S32(0x1E)\n#define /*0x104*/ oBubbaUnk104 OBJECT_FIELD_S32(0x1F)\n#define /*0x108*/ oBubbaUnk108 OBJECT_FIELD_F32(0x20)\n#define /*0x10C*/ oBubbaUnk10C OBJECT_FIELD_F32(0x21)\n#define /*0x1AC*/ oBubbaUnk1AC OBJECT_FIELD_S16(0x49, 0)\n#define /*0x1AE*/ oBubbaUnk1AE OBJECT_FIELD_S16(0x49, 1)\n#define /*0x1B0*/ oBubbaUnk1B0 OBJECT_FIELD_S16(0x4A, 0)\n#define /*0x1B2*/ oBubbaUnk1B2 OBJECT_FIELD_S16(0x4A, 1)\n\n/* Bullet Bill */\n#define /*0x0F8*/ oBulletBillInitialMoveYaw OBJECT_FIELD_S32(0x1C)\n\n/* Bully (all variants) */\n#define /*0x0F4*/ oBullySubtype                   OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oBullyPrevX                     OBJECT_FIELD_F32(0x1C)\n#define /*0x0FC*/ oBullyPrevY                     OBJECT_FIELD_F32(0x1D)\n#define /*0x100*/ oBullyPrevZ                     OBJECT_FIELD_F32(0x1E)\n#define /*0x104*/ oBullyKBTimerAndMinionKOCounter OBJECT_FIELD_S32(0x1F)\n#define /*0x108*/ oBullyMarioCollisionAngle       OBJECT_FIELD_S32(0x20)\n\n/* Butterfly */\n#define /*0x0F4*/ oButterflyYPhase OBJECT_FIELD_S32(0x1B)\n\n/* Triplet Butterfly */\n#define /*0x0F4*/ oTripletButterflyScale             OBJECT_FIELD_F32(0x1B)\n#define /*0x0F8*/ oTripletButterflySpeed             OBJECT_FIELD_F32(0x1C)\n#define /*0x0FC*/ oTripletButterflyBaseYaw           OBJECT_FIELD_F32(0x1D)\n#define /*0x100*/ oTripletButterflyTargetPitch       OBJECT_FIELD_S32(0x1E)\n#define /*0x104*/ oTripletButterflyTargetYaw         OBJECT_FIELD_S32(0x1F)\n#define /*0x108*/ oTripletButterflyType              OBJECT_FIELD_S32(0x20)\n#define /*0x10C*/ oTripletButterflyModel             OBJECT_FIELD_S32(0x21)\n#define /*0x110*/ oTripletButterflySelectedButterfly OBJECT_FIELD_S32(0x22)\n#define /*0x1AC*/ oTripletButterflyScalePhase        OBJECT_FIELD_S32(0x49)\n\n/* Cannon */\n#define /*0x0F4*/ oCannonUnkF4  OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oCannonUnkF8  OBJECT_FIELD_S32(0x1C)\n#define /*0x10C*/ oCannonUnk10C OBJECT_FIELD_S32(0x21)\n\n/* Cap */\n#define /*0x0F4*/ oCapUnkF4 OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oCapUnkF8 OBJECT_FIELD_S32(0x1C)\n\n/* Chain Chomp */\n#define /*0x0F4*/ oChainChompSegments                     OBJECT_FIELD_CHAIN_SEGMENT(0x1B)\n#define /*0x0F8*/ oChainChompMaxDistFromPivotPerChainPart OBJECT_FIELD_F32(0x1C)\n#define /*0x0FC*/ oChainChompMaxDistBetweenChainParts     OBJECT_FIELD_F32(0x1D)\n#define /*0x100*/ oChainChompDistToPivot                  OBJECT_FIELD_F32(0x1E)\n#define /*0x104*/ oChainChompUnk104                       OBJECT_FIELD_F32(0x1F)\n#define /*0x108*/ oChainChompRestrictedByChain            OBJECT_FIELD_S32(0x20)\n#define /*0x10C*/ oChainChompTargetPitch                  OBJECT_FIELD_S32(0x21)\n#define /*0x110*/ oChainChompNumLunges                    OBJECT_FIELD_S32(0x22)\n#define /*0x1AC*/ oChainChompReleaseStatus                OBJECT_FIELD_S32(0x49)\n#define /*0x1B0*/ oChainChompHitGate                      OBJECT_FIELD_S32(0x4A)\n\n/* Checkerboard Platform */\n#define /*0x0F8*/ oCheckerBoardPlatformUnkF8  OBJECT_FIELD_S32(0x1C) // oAction like\n#define /*0x0FC*/ oCheckerBoardPlatformUnkFC  OBJECT_FIELD_S32(0x1D)\n#define /*0x1AC*/ oCheckerBoardPlatformUnk1AC OBJECT_FIELD_F32(0x49)\n\n/* Cheep Cheep */\n#define /*0x0F4*/ oCheepCheepUnkF4  OBJECT_FIELD_F32(0x1B)\n#define /*0x0F8*/ oCheepCheepUnkF8  OBJECT_FIELD_F32(0x1C)\n#define /*0x0FC*/ oCheepCheepUnkFC  OBJECT_FIELD_F32(0x1D)\n#define /*0x104*/ oCheepCheepUnk104 OBJECT_FIELD_F32(0x1F)\n#define /*0x108*/ oCheepCheepUnk108 OBJECT_FIELD_F32(0x20)\n\n/* Chuckya */\n#define /*0x088*/ oChuckyaUnk88  OBJECT_FIELD_S32(0x00)\n#define /*0x0F8*/ oChuckyaUnkF8  OBJECT_FIELD_S32(0x1C)\n#define /*0x0FC*/ oChuckyaUnkFC  OBJECT_FIELD_S32(0x1D)\n#define /*0x100*/ oChuckyaUnk100 OBJECT_FIELD_S32(0x1E)\n\n/* Clam */\n#define /*0x0F4*/ oClamUnkF4 OBJECT_FIELD_S32(0x1B)\n\n/* Cloud */\n#define /*0x0F4*/ oCloudCenterX              OBJECT_FIELD_F32(0x1B)\n#define /*0x0F8*/ oCloudCenterY              OBJECT_FIELD_F32(0x1C)\n#define /*0x0FC*/ oCloudBlowing              OBJECT_FIELD_S32(0x1D)\n#define /*0x100*/ oCloudGrowSpeed            OBJECT_FIELD_F32(0x1E)\n#define /*0x1AC*/ oCloudFwooshMovementRadius OBJECT_FIELD_S16(0x49, 0)\n\n/* Coin */\n#define /*0x0F4*/ oCoinCollectedFlags       OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oCoinOnGround             OBJECT_FIELD_S32(0x1C)\n#define /*0x110*/ oCoinBaseVelY             OBJECT_FIELD_F32(0x22)\n#ifndef VERSION_JP\n#define /*0x1B0*/ oCoinNumBounceSoundPlayed OBJECT_FIELD_S32(0x4A)\n#endif\n\n/* Collision Particle */\n#define /*0x0F4*/ oCollisionParticleUnkF4 OBJECT_FIELD_F32(0x1B)\n\n/* Controllable Platform */\n#define /*0x0F8*/ oControllablePlatformUnkF8  OBJECT_FIELD_S32(0x1C)\n#define /*0x0FC*/ oControllablePlatformUnkFC  OBJECT_FIELD_F32(0x1D)\n#define /*0x100*/ oControllablePlatformUnk100 OBJECT_FIELD_S32(0x1E)\n\n/* Breakable Box Small (Small Cork Box) */\n#define /*0x0F4*/ oBreakableBoxSmallReleased            OBJECT_FIELD_S32(0x1B)\n#define /*0x0FC*/ oBreakableBoxSmallFramesSinceReleased OBJECT_FIELD_S32(0x1D)\n\n/* Jumping Box (Crazy Box) */\n#define /*0x0F4*/ oJumpingBoxUnkF4 OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oJumpingBoxUnkF8 OBJECT_FIELD_S32(0x1C)\n\n/* RR Cruiser Wing */\n#define /*0x0F4*/ oRRCruiserWingUnkF4 OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oRRCruiserWingUnkF8 OBJECT_FIELD_S32(0x1C)\n\n/* Donut Platform Spawner */\n#define /*0x0F4*/ oDonutPlatformSpawnerSpawnedPlatforms OBJECT_FIELD_S32(0x1B)\n\n/* Door */\n#define /*0x088*/ oDoorUnk88  OBJECT_FIELD_S32(0x00)\n#define /*0x0F8*/ oDoorUnkF8  OBJECT_FIELD_S32(0x1C)\n#define /*0x0FC*/ oDoorUnkFC  OBJECT_FIELD_S32(0x1D)\n#define /*0x100*/ oDoorUnk100 OBJECT_FIELD_S32(0x1E)\n\n/* Dorrie */\n#define /*0x0F4*/ oDorrieDistToHome         OBJECT_FIELD_F32(0x1B)\n#define /*0x0F8*/ oDorrieOffsetY            OBJECT_FIELD_F32(0x1C)\n#define /*0x0FC*/ oDorrieVelY               OBJECT_FIELD_F32(0x1D)\n#define /*0x100*/ oDorrieForwardDistToMario OBJECT_FIELD_F32(0x1E)\n#define /*0x104*/ oDorrieYawVel             OBJECT_FIELD_S32(0x1F)\n#define /*0x10C*/ oDorrieLiftingMario       OBJECT_FIELD_S32(0x21)\n#define /*0x1AC*/ oDorrieGroundPounded      OBJECT_FIELD_S16(0x49, 0)\n#define /*0x1AE*/ oDorrieAngleToHome        OBJECT_FIELD_S16(0x49, 1)\n#define /*0x1B0*/ oDorrieNeckAngle          OBJECT_FIELD_S16(0x4A, 0)\n#define /*0x1B2*/ oDorrieHeadRaiseSpeed     OBJECT_FIELD_S16(0x4A, 1)\n\n/* Elevator */\n#define /*0x0F4*/ oElevatorUnkF4  OBJECT_FIELD_F32(0x1B)\n#define /*0x0F8*/ oElevatorUnkF8  OBJECT_FIELD_F32(0x1C)\n#define /*0x0FC*/ oElevatorUnkFC  OBJECT_FIELD_F32(0x1D)\n#define /*0x100*/ oElevatorUnk100 OBJECT_FIELD_S32(0x1E)\n\n/* Exclamation Box */\n#define /*0x0F4*/ oExclamationBoxUnkF4 OBJECT_FIELD_F32(0x1B) // scale?\n#define /*0x0F8*/ oExclamationBoxUnkF8 OBJECT_FIELD_F32(0x1C) // scale?\n#define /*0x0FC*/ oExclamationBoxUnkFC OBJECT_FIELD_S32(0x1D) // angle?\n\n/* Eyerok Boss */\n#define /*0x0F8*/ oEyerokBossNumHands   OBJECT_FIELD_S32(0x1C)\n#define /*0x0FC*/ oEyerokBossUnkFC      OBJECT_FIELD_S32(0x1D)\n#define /*0x100*/ oEyerokBossActiveHand OBJECT_FIELD_S32(0x1E)\n#define /*0x104*/ oEyerokBossUnk104     OBJECT_FIELD_S32(0x1F)\n#define /*0x108*/ oEyerokBossUnk108     OBJECT_FIELD_F32(0x20)\n#define /*0x10C*/ oEyerokBossUnk10C     OBJECT_FIELD_F32(0x21)\n#define /*0x110*/ oEyerokBossUnk110     OBJECT_FIELD_F32(0x22)\n#define /*0x1AC*/ oEyerokBossUnk1AC     OBJECT_FIELD_S32(0x49)\n\n/* Eyerok Hand */\n#define /*0x0F4*/ oEyerokHandWakeUpTimer OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oEyerokReceivedAttack  OBJECT_FIELD_S32(0x1C)\n#define /*0x0FC*/ oEyerokHandUnkFC       OBJECT_FIELD_S32(0x1D)\n#define /*0x100*/ oEyerokHandUnk100      OBJECT_FIELD_S32(0x1E)\n\n/* Falling Pillar */\n#define /*0x0F4*/ oFallingPillarPitchAcceleration OBJECT_FIELD_F32(0x1B)\n\n/* Fire Spitter */\n#define /*0x0F4*/ oFireSpitterScaleVel OBJECT_FIELD_F32(0x1B)\n\n/* Blue Fish */\n#define /*0x0F4*/ oBlueFishRandomVel   OBJECT_FIELD_F32(0x1B)\n#define /*0x0F8*/ oBlueFishRandomTime  OBJECT_FIELD_S32(0x1C)\n#define /*0x100*/ oBlueFishRandomAngle OBJECT_FIELD_F32(0x1E)\n\n/* Fish Group */\n#define /*0x0F4*/ oFishWaterLevel     OBJECT_FIELD_F32(0x1B)\n#define /*0x0F8*/ oFishGoalY          OBJECT_FIELD_F32(0x1C)\n#define /*0x0FC*/ oFishHeightOffset   OBJECT_FIELD_F32(0x1D)\n#define /*0x100*/ oFishYawVel         OBJECT_FIELD_S32(0x1E)\n#define /*0x104*/ oFishRoamDistance   OBJECT_FIELD_F32(0x1F)\n#define /*0x108*/ oFishGoalVel        OBJECT_FIELD_F32(0x20)\n#define /*0x10C*/ oFishDepthDistance  OBJECT_FIELD_F32(0x21)\n#define /*0x110*/ oFishActiveDistance OBJECT_FIELD_F32(0x22)\n\n/* Flame */\n#define /*0x0F4*/ oFlameScale            OBJECT_FIELD_F32(0x1B)\n#define /*0x0F8*/ oFlameSpeedTimerOffset OBJECT_FIELD_S32(0x1C)\n#define /*0x0FC*/ oFlameUnusedRand       OBJECT_FIELD_F32(0x1D)\n#define /*0x100*/ oFlameBowser           OBJECT_FIELD_OBJ(0x1E)\n\n/* Blue Flame */\n#define /*0x0F8*/ oBlueFlameNextScale OBJECT_FIELD_F32(0x1C)\n\n/* Small Piranha Flame */\n#define /*0x0F4*/ oSmallPiranhaFlameStartSpeed     OBJECT_FIELD_F32(0x1B)\n#define /*0x0F8*/ oSmallPiranhaFlameEndSpeed       OBJECT_FIELD_F32(0x1C)\n#define /*0x0FC*/ oSmallPiranhaFlameModel          OBJECT_FIELD_S32(0x1D)\n#define /*0x100*/ oSmallPiranhaFlameNextFlameTimer OBJECT_FIELD_S32(0x1E)\n#define /*0x104*/ oSmallPiranhaFlameSpeed          OBJECT_FIELD_F32(0x1F)\n\n/* Moving Flame */\n#define /*0x0F4*/ oMovingFlameTimer OBJECT_FIELD_S32(0x1B)\n\n/* Flamethrower Flame */\n#define /*0x110*/ oFlameThowerFlameUnk110 OBJECT_FIELD_S32(0x22)\n\n/* Flamethrower */\n#define /*0x110*/ oFlameThowerUnk110 OBJECT_FIELD_S32(0x22)\n\n/* Floating Platform */\n#define /*0x0F4*/ oFloatingPlatformUnkF4  OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oFloatingPlatformUnkF8  OBJECT_FIELD_F32(0x1C)\n#define /*0x0FC*/ oFloatingPlatformUnkFC  OBJECT_FIELD_F32(0x1D)\n#define /*0x100*/ oFloatingPlatformUnk100 OBJECT_FIELD_S32(0x1E)\n\n/* Floor Switch Press Animation */\n#define /*0x0F4*/ oFloorSwitchPressAnimationUnkF4  OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oFloorSwitchPressAnimationUnkF8  OBJECT_FIELD_S32(0x1C)\n#define /*0x0FC*/ oFloorSwitchPressAnimationUnkFC  OBJECT_FIELD_S32(0x1D)\n#define /*0x100*/ oFloorSwitchPressAnimationUnk100 OBJECT_FIELD_S32(0x1E)\n\n/* Fly Guy */\n#define /*0x0F4*/ oFlyGuyIdleTimer        OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oFlyGuyOscTimer         OBJECT_FIELD_S32(0x1C)\n#define /*0x0FC*/ oFlyGuyUnusedJitter     OBJECT_FIELD_S32(0x1D)\n#define /*0x100*/ oFlyGuyLungeYDecel      OBJECT_FIELD_F32(0x1E)\n#define /*0x104*/ oFlyGuyLungeTargetPitch OBJECT_FIELD_S32(0x1F)\n#define /*0x108*/ oFlyGuyTargetRoll       OBJECT_FIELD_S32(0x20)\n#define /*0x10C*/ oFlyGuyScaleVel         OBJECT_FIELD_F32(0x21)\n\n/* Grand Star */\n#define /*0x108*/ oGrandStarUnk108 OBJECT_FIELD_S32(0x20)\n\n/* Horizontal Grindel */\n#define /*0x0F4*/ oHorizontalGrindelTargetYaw  OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oHorizontalGrindelDistToHome OBJECT_FIELD_F32(0x1C)\n#define /*0x0FC*/ oHorizontalGrindelOnGround   OBJECT_FIELD_S32(0x1D)\n\n/* Goomba */\n#define /*0x0F4*/ oGoombaSize                OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oGoombaScale               OBJECT_FIELD_F32(0x1C)\n#define /*0x0FC*/ oGoombaWalkTimer           OBJECT_FIELD_S32(0x1D)\n#define /*0x100*/ oGoombaTargetYaw           OBJECT_FIELD_S32(0x1E)\n#define /*0x104*/ oGoombaBlinkTimer          OBJECT_FIELD_S32(0x1F)\n#define /*0x108*/ oGoombaTurningAwayFromWall OBJECT_FIELD_S32(0x20)\n#define /*0x10C*/ oGoombaRelativeSpeed       OBJECT_FIELD_F32(0x21)\n\n/* Haunted Chair */\n#define /*0x0F4*/ oHauntedChairUnkF4  OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oHauntedChairUnkF8  OBJECT_FIELD_F32(0x1C)\n#define /*0x0FC*/ oHauntedChairUnkFC  OBJECT_FIELD_F32(0x1D)\n#define /*0x100*/ oHauntedChairUnk100 OBJECT_FIELD_S32P(0x1E)\n#define /*0x104*/ oHauntedChairUnk104 OBJECT_FIELD_S32(0x1F)\n\n/* Heave-Ho */\n#define /*0x088*/ oHeaveHoUnk88 OBJECT_FIELD_S32(0x00)\n#define /*0x0F4*/ oHeaveHoUnkF4 OBJECT_FIELD_F32(0x1B)\n\n/* Hidden Object */\n#define /*0x0F4*/ oHiddenObjectPurpleSwitch OBJECT_FIELD_OBJ(0x1B)\n\n/* Hoot */\n#define /*0x0F4*/ oHootAvailability     OBJECT_FIELD_S32(0x1B)\n#define /*0x110*/ oHootMarioReleaseTime OBJECT_FIELD_S32(0x22)\n\n/* Horizontal Movement */\n#define /*0x0F4*/ oHorizontalMovementUnkF4  OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oHorizontalMovementUnkF8  OBJECT_FIELD_S32(0x1C)\n#define /*0x100*/ oHorizontalMovementUnk100 OBJECT_FIELD_F32(0x1E)\n#define /*0x104*/ oHorizontalMovementUnk104 OBJECT_FIELD_S32(0x1F)\n#define /*0x108*/ oHorizontalMovementUnk108 OBJECT_FIELD_F32(0x20)\n\n/* Kickable Board */\n#define /*0x0F4*/ oKickableBoardF4 OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oKickableBoardF8 OBJECT_FIELD_S32(0x1C)\n\n /* King Bob-omb */\n#define /*0x088*/ oKingBobombUnk88  OBJECT_FIELD_S32(0x00)\n#define /*0x0F8*/ oKingBobombUnkF8  OBJECT_FIELD_S32(0x1C)\n#define /*0x0FC*/ oKingBobombUnkFC  OBJECT_FIELD_S32(0x1D)\n#define /*0x100*/ oKingBobombUnk100 OBJECT_FIELD_S32(0x1E)\n#define /*0x104*/ oKingBobombUnk104 OBJECT_FIELD_S32(0x1F)\n#define /*0x108*/ oKingBobombUnk108 OBJECT_FIELD_S32(0x20)\n\n/* Klepto */\n#define /*0x0F4*/ oKleptoDistanceToTarget      OBJECT_FIELD_F32(0x1B)\n#define /*0x0F8*/ oKleptoUnkF8                 OBJECT_FIELD_F32(0x1C)\n#define /*0x0FC*/ oKleptoUnkFC                 OBJECT_FIELD_F32(0x1D)\n#define /*0x100*/ oKleptoSpeed                 OBJECT_FIELD_F32(0x1E)\n#define /*0x104*/ oKleptoStartPosX             OBJECT_FIELD_F32(0x1F)\n#define /*0x108*/ oKleptoStartPosY             OBJECT_FIELD_F32(0x20)\n#define /*0x10C*/ oKleptoStartPosZ             OBJECT_FIELD_F32(0x21)\n#define /*0x110*/ oKleptoTimeUntilTargetChange OBJECT_FIELD_S32(0x22)\n#define /*0x1AC*/ oKleptoTargetNumber          OBJECT_FIELD_S16(0x49, 0)\n#define /*0x1AE*/ oKleptoUnk1AE                OBJECT_FIELD_S16(0x49, 1)\n#define /*0x1B0*/ oKleptoUnk1B0                OBJECT_FIELD_S16(0x4A, 0)\n#define /*0x1B2*/ oKleptoYawToTarget           OBJECT_FIELD_S16(0x4A, 1)\n\n/* Koopa */\n#define /*0x0F4*/ oKoopaAgility                     OBJECT_FIELD_F32(0x1B)\n#define /*0x0F8*/ oKoopaMovementType                OBJECT_FIELD_S32(0x1C)\n#define /*0x0FC*/ oKoopaTargetYaw                   OBJECT_FIELD_S32(0x1D)\n#define /*0x100*/ oKoopaUnshelledTimeUntilTurn      OBJECT_FIELD_S32(0x1E)\n#define /*0x104*/ oKoopaTurningAwayFromWall         OBJECT_FIELD_S32(0x1F)\n#define /*0x108*/ oKoopaDistanceToMario             OBJECT_FIELD_F32(0x20)\n#define /*0x10C*/ oKoopaAngleToMario                OBJECT_FIELD_S32(0x21)\n#define /*0x110*/ oKoopaBlinkTimer                  OBJECT_FIELD_S32(0x22)\n#define /*0x1AC*/ oKoopaCountdown                   OBJECT_FIELD_S16(0x49, 0)\n#define /*0x1AE*/ oKoopaTheQuickRaceIndex           OBJECT_FIELD_S16(0x49, 1)\n#define /*0x1B0*/ oKoopaTheQuickInitTextboxCooldown OBJECT_FIELD_S16(0x4A, 0)\n// 0x1D-0x21 for koopa the quick reserved for pathing\n\n/* Koopa Race Endpoint */\n#define /*0x0F4*/ oKoopaRaceEndpointRaceBegun     OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oKoopaRaceEndpointKoopaFinished OBJECT_FIELD_S32(0x1C)\n#define /*0x0FC*/ oKoopaRaceEndpointRaceStatus    OBJECT_FIELD_S32(0x1D)\n#define /*0x100*/ oKoopaRaceEndpointDialog        OBJECT_FIELD_S32(0x1E)\n#define /*0x104*/ oKoopaRaceEndpointRaceEnded     OBJECT_FIELD_S32(0x1F)\n\n/* Koopa Shell Flame */\n#define /*0x0F4*/ oKoopaShellFlameUnkF4 OBJECT_FIELD_F32(0x1B)\n#define /*0x0F8*/ oKoopaShellFlameScale OBJECT_FIELD_F32(0x1C)\n\n/* Camera Lakitu */\n#define /*0x0F4*/ oCameraLakituBlinkTimer     OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oCameraLakituSpeed          OBJECT_FIELD_F32(0x1C)\n#define /*0x0FC*/ oCameraLakituCircleRadius   OBJECT_FIELD_F32(0x1D)\n#define /*0x100*/ oCameraLakituFinishedDialog OBJECT_FIELD_S32(0x1E)\n#ifndef VERSION_JP\n#define /*0x104*/ oCameraLakituUnk104         OBJECT_FIELD_S32(0x1F)\n#endif\n#define /*0x1AC*/ oCameraLakituPitchVel       OBJECT_FIELD_S16(0x49, 0)\n#define /*0x1AE*/ oCameraLakituYawVel         OBJECT_FIELD_S16(0x49, 1)\n\n/* Evil Lakitu */\n#define /*0x0F4*/ oEnemyLakituNumSpinies           OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oEnemyLakituBlinkTimer           OBJECT_FIELD_S32(0x1C)\n#define /*0x0FC*/ oEnemyLakituSpinyCooldown        OBJECT_FIELD_S32(0x1D)\n#define /*0x100*/ oEnemyLakituFaceForwardCountdown OBJECT_FIELD_S32(0x1E)\n\n/* Intro Cutscene Lakitu */\n#define /*0x0F8*/ oIntroLakituSplineSegmentProgress OBJECT_FIELD_F32(0x1C)\n#define /*0x0FC*/ oIntroLakituSplineSegment         OBJECT_FIELD_F32(0x1D)\n#define /*0x100*/ oIntroLakituUnk100                OBJECT_FIELD_F32(0x1E)\n#define /*0x104*/ oIntroLakituUnk104                OBJECT_FIELD_F32(0x1F)\n#define /*0x108*/ oIntroLakituUnk108                OBJECT_FIELD_F32(0x20)\n#define /*0x10C*/ oIntroLakituUnk10C                OBJECT_FIELD_F32(0x21)\n#define /*0x110*/ oIntroLakituUnk110                OBJECT_FIELD_F32(0x22)\n#define /*0x1AC*/ oIntroLakituCloud                 OBJECT_FIELD_OBJ(0x49)\n\n/* Main Menu Button */\n#define /*0x0F4*/ oMenuButtonState       OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oMenuButtonTimer       OBJECT_FIELD_S32(0x1C)\n#define /*0x0FC*/ oMenuButtonOrigPosX    OBJECT_FIELD_F32(0x1D)\n#define /*0x100*/ oMenuButtonOrigPosY    OBJECT_FIELD_F32(0x1E)\n#define /*0x104*/ oMenuButtonOrigPosZ    OBJECT_FIELD_F32(0x1F)\n#define /*0x108*/ oMenuButtonScale       OBJECT_FIELD_F32(0x20)\n#define /*0x10C*/ oMenuButtonActionPhase OBJECT_FIELD_S32(0x21)\n\n/* Manta Ray */\n#define /*0x0F4*/ oMantaTargetPitch OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oMantaTargetYaw   OBJECT_FIELD_S32(0x1C)\n\n/* Merry-Go-Round */\n#define /*0x088*/ oMerryGoRoundStopped         OBJECT_FIELD_S32(0x00)\n#define /*0x0F8*/ oMerryGoRoundMusicShouldPlay OBJECT_FIELD_S32(0x1C)\n#define /*0x0FC*/ oMerryGoRoundMarioIsOutside  OBJECT_FIELD_S32(0x1D)\n\n/* Merry-Go-Round Boo Manager */\n#define /*0x088*/ oMerryGoRoundBooManagerNumBoosKilled  OBJECT_FIELD_S32(0x00)\n#define /*0x0FC*/ oMerryGoRoundBooManagerNumBoosSpawned OBJECT_FIELD_S32(0x1D)\n\n/* Mips */\n#define /*0x0F4*/ oMipsStarStatus         OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oMipsStartWaypointIndex OBJECT_FIELD_S32(0x1C)\n // 0x1D-0x21 reserved for pathing\n#define /*0x1AC*/ oMipsForwardVelocity    OBJECT_FIELD_F32(0x49)\n\n/* Moneybag */\n#define /*0x0F4*/ oMoneybagJumpState OBJECT_FIELD_S32(0x1B)\n\n/* Monty Mole */\n#define /*0x0F4*/ oMontyMoleCurrentHole           OBJECT_FIELD_OBJ(0x1B)\n#define /*0x0F8*/ oMontyMoleHeightRelativeToFloor OBJECT_FIELD_F32(0x1C)\n\n/* Monty Mole Hole */\n#define /*0x0F4*/ oMontyMoleHoleCooldown OBJECT_FIELD_S32(0x1B)\n\n/* Mr. Blizzard */\n#define /*0x0F4*/ oMrBlizzardScale             OBJECT_FIELD_F32(0x1B)\n#define /*0x0F8*/ oMrBlizzardHeldObj           OBJECT_FIELD_OBJ(0x1C)\n#define /*0x0FC*/ oMrBlizzardGraphYVel         OBJECT_FIELD_F32(0x1D)\n#define /*0x100*/ oMrBlizzardTimer             OBJECT_FIELD_S32(0x1E)\n#define /*0x104*/ oMrBlizzardDizziness         OBJECT_FIELD_F32(0x1F)\n#define /*0x108*/ oMrBlizzardChangeInDizziness OBJECT_FIELD_F32(0x20)\n#define /*0x10C*/ oMrBlizzardGraphYOffset      OBJECT_FIELD_F32(0x21)\n#define /*0x110*/ oMrBlizzardDistFromHome      OBJECT_FIELD_S32(0x22)\n#define /*0x1AC*/ oMrBlizzardTargetMoveYaw     OBJECT_FIELD_S32(0x49)\n\n/* Mr. I */\n#define /*0x0F4*/ oMrIUnkF4  OBJECT_FIELD_S32(0x1B)\n#define /*0x0FC*/ oMrIUnkFC  OBJECT_FIELD_S32(0x1D)\n#define /*0x100*/ oMrIUnk100 OBJECT_FIELD_S32(0x1E)\n#define /*0x104*/ oMrIUnk104 OBJECT_FIELD_S32(0x1F)\n#define /*0x108*/ oMrIUnk108 OBJECT_FIELD_S32(0x20)\n#define /*0x10C*/ oMrIScale  OBJECT_FIELD_F32(0x21)\n#define /*0x110*/ oMrIUnk110 OBJECT_FIELD_S32(0x22)\n\n/* Object Respawner */\n#define /*0x0F4*/ oRespawnerModelToRespawn    OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oRespawnerMinSpawnDist      OBJECT_FIELD_F32(0x1C)\n#define /*0x0FC*/ oRespawnerBehaviorToRespawn OBJECT_FIELD_CVPTR(0x1D)\n\n/* Openable Grill */\n#define /*0x088*/ oOpenableGrillUnk88        OBJECT_FIELD_S32(0x00)\n#define /*0x0F4*/ oOpenableGrillPurpleSwitch OBJECT_FIELD_OBJ(0x1B)\n\n/* Intro Cutscene Peach */\n#define /*0x108*/ oIntroPeachYawFromFocus OBJECT_FIELD_F32(0x20)\n#define /*0x10C*/ oIntroPeachPitchFromFocus OBJECT_FIELD_F32(0x21)\n#define /*0x110*/ oIntroPeachDistToCamera OBJECT_FIELD_F32(0x22)\n\n/* Racing Penguin */\n#define /*0x0F4*/ oRacingPenguinInitTextCooldown       OBJECT_FIELD_S32(0x1B)\n// 0x1D-0x21 reserved for pathing\n#define /*0x110*/ oRacingPenguinWeightedNewTargetSpeed OBJECT_FIELD_F32(0x22)\n#define /*0x1AC*/ oRacingPenguinFinalTextbox           OBJECT_FIELD_S16(0x49, 0)\n#define /*0x1AE*/ oRacingPenguinMarioWon               OBJECT_FIELD_S16(0x49, 1)\n#define /*0x1B0*/ oRacingPenguinReachedBottom          OBJECT_FIELD_S16(0x4A, 0)\n#define /*0x1B2*/ oRacingPenguinMarioCheated           OBJECT_FIELD_S16(0x4A, 1)\n\n/* Small Penguin */\n#define /*0x088*/ oSmallPenguinUnk88  OBJECT_FIELD_S32(0x00)\n#define /*0x100*/ oSmallPenguinUnk100 OBJECT_FIELD_S32(0x1E) // angle?\n#define /*0x104*/ oSmallPenguinUnk104 OBJECT_FIELD_F32(0x1F)\n#define /*0x108*/ oSmallPenguinUnk108 OBJECT_FIELD_F32(0x20)\n#define /*0x110*/ oSmallPenguinUnk110 OBJECT_FIELD_S32(0x22)\n\n/* SL Walking Penguin */\n#define /*0x100*/ oSLWalkingPenguinWindCollisionXPos OBJECT_FIELD_F32(0x1E)\n#define /*0x104*/ oSLWalkingPenguinWindCollisionZPos OBJECT_FIELD_F32(0x1F)\n#define /*0x10C*/ oSLWalkingPenguinCurStep           OBJECT_FIELD_S32(0x21)\n#define /*0x110*/ oSLWalkingPenguinCurStepTimer      OBJECT_FIELD_S32(0x22)\n\n/* Piranha Plant */\n#define /*0x0F4*/ oPiranhaPlantSleepMusicState OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oPiranhaPlantScale           OBJECT_FIELD_F32(0x1C)\n\n/* Fire Piranha Plant */\n#define /*0x0F4*/ oFirePiranhaPlantNeutralScale   OBJECT_FIELD_F32(0x1B)\n#define /*0x0F8*/ oFirePiranhaPlantScale          OBJECT_FIELD_F32(0x1C) // Shared with above obj? Coincidence?\n#define /*0x0FC*/ oFirePiranhaPlantActive         OBJECT_FIELD_S32(0x1D)\n#define /*0x100*/ oFirePiranhaPlantDeathSpinTimer OBJECT_FIELD_S32(0x1E)\n#define /*0x104*/ oFirePiranhaPlantDeathSpinVel   OBJECT_FIELD_F32(0x1F)\n\n/* Pitoune */\n#define /*0x0F4*/ oPitouneUnkF4 OBJECT_FIELD_F32(0x1B)\n#define /*0x0F8*/ oPitouneUnkF8 OBJECT_FIELD_F32(0x1C)\n#define /*0x0FC*/ oPitouneUnkFC OBJECT_FIELD_F32(0x1D)\n\n/* Falling Rising BitFS Platform */\n#define /*0x0F4*/ oBitFSPlatformTimer   OBJECT_FIELD_S32(0x1B)\n\n/* Falling Bowser BitS Platform */\n#define /*0x0F8*/ oBitSPlatformBowser   OBJECT_FIELD_OBJ(0x1C)\n#define /*0x0FC*/ oBitSPlatformTimer    OBJECT_FIELD_S32(0x1D)\n\n/* WF Platform */\n#define /*0x10C*/ oPlatformUnk10C OBJECT_FIELD_F32(0x21)\n#define /*0x110*/ oPlatformUnk110 OBJECT_FIELD_F32(0x22)\n\n/* Platform on Tracks */\n#define /*0x088*/ oPlatformOnTrackBaseBallIndex          OBJECT_FIELD_S32(0x00)\n#define /*0x0F4*/ oPlatformOnTrackDistMovedSinceLastBall OBJECT_FIELD_F32(0x1B)\n#define /*0x0F8*/ oPlatformOnTrackSkiLiftRollVel         OBJECT_FIELD_F32(0x1C)\n#define /*0x0FC*/ oPlatformOnTrackStartWaypoint          OBJECT_FIELD_WAYPOINT(0x1D)\n#define /*0x100*/ oPlatformOnTrackPrevWaypoint           OBJECT_FIELD_WAYPOINT(0x1E)\n#define /*0x104*/ oPlatformOnTrackPrevWaypointFlags      OBJECT_FIELD_S32(0x1F)\n#define /*0x108*/ oPlatformOnTrackPitch                  OBJECT_FIELD_S32(0x20)\n#define /*0x10C*/ oPlatformOnTrackYaw                    OBJECT_FIELD_S32(0x21)\n#define /*0x110*/ oPlatformOnTrackOffsetY                OBJECT_FIELD_F32(0x22)\n#define /*0x1AC*/ oPlatformOnTrackIsNotSkiLift           OBJECT_FIELD_S16(0x49, 0)\n#define /*0x1AE*/ oPlatformOnTrackIsNotHMC               OBJECT_FIELD_S16(0x49, 1)\n#define /*0x1B0*/ oPlatformOnTrackType                   OBJECT_FIELD_S16(0x4A, 0)\n#define /*0x1B2*/ oPlatformOnTrackWasStoodOn             OBJECT_FIELD_S16(0x4A, 1)\n\n/* Platform Spawner */\n#define /*0x0F4*/ oPlatformSpawnerUnkF4  OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oPlatformSpawnerUnkF8  OBJECT_FIELD_S32(0x1C)\n#define /*0x0FC*/ oPlatformSpawnerUnkFC  OBJECT_FIELD_S32(0x1D)\n#define /*0x100*/ oPlatformSpawnerUnk100 OBJECT_FIELD_F32(0x1E)\n#define /*0x104*/ oPlatformSpawnerUnk104 OBJECT_FIELD_F32(0x1F)\n#define /*0x108*/ oPlatformSpawnerUnk108 OBJECT_FIELD_F32(0x20)\n\n/* Pokey */\n#define /*0x0F4*/ oPokeyAliveBodyPartFlags  OBJECT_FIELD_U32(0x1B)\n#define /*0x0F8*/ oPokeyNumAliveBodyParts   OBJECT_FIELD_S32(0x1C)\n#define /*0x0FC*/ oPokeyBottomBodyPartSize  OBJECT_FIELD_F32(0x1D)\n#define /*0x100*/ oPokeyHeadWasKilled       OBJECT_FIELD_S32(0x1E)\n#define /*0x104*/ oPokeyTargetYaw           OBJECT_FIELD_S32(0x1F)\n#define /*0x108*/ oPokeyChangeTargetTimer   OBJECT_FIELD_S32(0x20)\n#define /*0x10C*/ oPokeyTurningAwayFromWall OBJECT_FIELD_S32(0x21)\n\n/* Pokey Body Part */\n#define /*0x0F8*/ oPokeyBodyPartDeathDelayAfterHeadKilled OBJECT_FIELD_S32(0x1C)\n#define /*0x110*/ oPokeyBodyPartBlinkTimer                OBJECT_FIELD_S32(0x22)\n\n/* DDD Pole */\n#define /*0x0F4*/ oDDDPoleVel       OBJECT_FIELD_F32(0x1B)\n#define /*0x0F8*/ oDDDPoleMaxOffset OBJECT_FIELD_F32(0x1C)\n#define /*0x0FC*/ oDDDPoleOffset    OBJECT_FIELD_F32(0x1D)\n\n/* Pyramid Top */\n#define /*0x0F4*/ oPyramidTopPillarsTouched OBJECT_FIELD_S32(0x1B)\n\n/* Pyramid Top Explosion */\n#define /*0x0F4*/ oPyramidTopFragmentsScale OBJECT_FIELD_F32(0x1B)\n\n/* Rolling Log */\n#define /*0x0F4*/ oRollingLogUnkF4 OBJECT_FIELD_F32(0x1B)\n\n/* LLL Rotating Hex Flame */\n#define /*0x0F4*/ oLLLRotatingHexFlameUnkF4 OBJECT_FIELD_F32(0x1B)\n#define /*0x0F8*/ oLLLRotatingHexFlameUnkF8 OBJECT_FIELD_F32(0x1C)\n#define /*0x0FC*/ oLLLRotatingHexFlameUnkFC OBJECT_FIELD_F32(0x1D)\n\n/* Scuttlebug */\n#define /*0x0F4*/ oScuttlebugUnkF4 OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oScuttlebugUnkF8 OBJECT_FIELD_S32(0x1C)\n#define /*0x0FC*/ oScuttlebugUnkFC OBJECT_FIELD_S32(0x1D)\n\n/* Scuttlebug Spawner */\n#define /*0x088*/ oScuttlebugSpawnerUnk88 OBJECT_FIELD_S32(0x00)\n#define /*0x0F4*/ oScuttlebugSpawnerUnkF4 OBJECT_FIELD_S32(0x1B)\n\n/* Seesaw Platform */\n#define /*0x0F4*/ oSeesawPlatformPitchVel OBJECT_FIELD_F32(0x1B)\n\n/* Ship Part 3 */\n#define /*0x0F4*/ oShipPart3UnkF4 OBJECT_FIELD_S32(0x1B) // angle?\n#define /*0x0F8*/ oShipPart3UnkF8 OBJECT_FIELD_S32(0x1C) // angle?\n\n/* Sink When Stepped On */\n#define /*0x104*/ oSinkWhenSteppedOnUnk104 OBJECT_FIELD_S32(0x1F)\n#define /*0x108*/ oSinkWhenSteppedOnUnk108 OBJECT_FIELD_F32(0x20)\n\n/* Skeeter */\n#define /*0x0F4*/ oSkeeterTargetAngle         OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oSkeeterTurningAwayFromWall OBJECT_FIELD_S32(0x1C)\n#define /*0x0FC*/ oSkeeterUnkFC               OBJECT_FIELD_F32(0x1D)\n#define /*0x100*/ oSkeeterWaitTime            OBJECT_FIELD_S32(0x1E)\n#define /*0x1AC*/ oSkeeterUnk1AC              OBJECT_FIELD_S16(0x49, 0)\n\n/* JRB Sliding Box */\n#define /*0x0F4*/ oJRBSlidingBoxUnkF4 OBJECT_FIELD_OBJ(0x1B)\n#define /*0x0F8*/ oJRBSlidingBoxUnkF8 OBJECT_FIELD_S32(0x1C)\n#define /*0x0FC*/ oJRBSlidingBoxUnkFC OBJECT_FIELD_F32(0x1D)\n\n/* WF Sliding Brick Platform */\n#define /*0x0F4*/ oWFSlidBrickPtfmMovVel OBJECT_FIELD_F32(0x1B)\n\n/* Smoke */\n#define /*0x0F4*/ oSmokeTimer OBJECT_FIELD_S32(0x1B)\n\n/* Snowman's Bottom */\n#define /*0x0F4*/ oSnowmansBottomScale  OBJECT_FIELD_F32(0x1B)\n#define /*0x0F8*/ oSnowmansBottomUnkF8  OBJECT_FIELD_S32(0x1C)\n#define /*0x1AC*/ oSnowmansBottomUnk1AC OBJECT_FIELD_S32(0x49)\n// 0x1D-0x21 reserved for pathing\n\n/* Snowman's Head */\n#define /*0x0F4*/ oSnowmansHeadDialogActive OBJECT_FIELD_S32(0x1B)\n\n/* Snowman Wind Blowing */\n#define /*0x0F4*/ oSLSnowmanWindOriginalYaw OBJECT_FIELD_S32(0x1B)\n\n/* Snufit */\n#define /*0x0F4*/ oSnufitRecoil          OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oSnufitScale           OBJECT_FIELD_F32(0x1C)\n#define /*0x100*/ oSnufitCircularPeriod  OBJECT_FIELD_S32(0x1E)\n#define /*0x104*/ oSnufitBodyScalePeriod OBJECT_FIELD_S32(0x1F)\n#define /*0x108*/ oSnufitBodyBaseScale   OBJECT_FIELD_S32(0x20)\n#define /*0x10C*/ oSnufitBullets         OBJECT_FIELD_S32(0x21)\n#define /*0x1AC*/ oSnufitXOffset         OBJECT_FIELD_S16(0x49, 0)\n#define /*0x1AE*/ oSnufitYOffset         OBJECT_FIELD_S16(0x49, 1)\n#define /*0x1B0*/ oSnufitZOffset         OBJECT_FIELD_S16(0x4A, 0)\n#define /*0x1B2*/ oSnufitBodyScale       OBJECT_FIELD_S16(0x4A, 1)\n\n/* Spindel */\n#define /*0x0F4*/ oSpindelUnkF4 OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oSpindelUnkF8 OBJECT_FIELD_S32(0x1C)\n\n/* Spinning Heart */\n#define /*0x0F4*/ oSpinningHeartTotalSpin   OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oSpinningHeartPlayedSound OBJECT_FIELD_S32(0x1C)\n\n/* Spiny */\n#define /*0x0F4*/ oSpinyTimeUntilTurn       OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oSpinyTargetYaw           OBJECT_FIELD_S32(0x1C)\n#define /*0x100*/ oSpinyTurningAwayFromWall OBJECT_FIELD_S32(0x1E)\n\n/* Sound Effect */\n#define /*0x0F4*/ oSoundEffectUnkF4 OBJECT_FIELD_S32(0x1B)\n\n/* Star Spawn */\n#define /*0x0F4*/ oStarSpawnDisFromHome OBJECT_FIELD_F32(0x1B)\n#define /*0x0FC*/ oStarSpawnUnkFC       OBJECT_FIELD_F32(0x1D)\n\n/* Hidden Star */\n// Secrets/Red Coins\n#define /*0x0F4*/ oHiddenStarTriggerCounter OBJECT_FIELD_S32(0x1B)\n\n// Overall very difficult to determine usage, mostly stubbed code.\n/* Sparkle Spawn Star */\n#define /*0x1B0*/ oSparkleSpawnUnk1B0 OBJECT_FIELD_S32(0x4A)\n\n/* Sealed Door Star */\n#define /*0x108*/ oUnlockDoorStarState  OBJECT_FIELD_U32(0x20)\n#define /*0x10C*/ oUnlockDoorStarTimer  OBJECT_FIELD_S32(0x21)\n#define /*0x110*/ oUnlockDoorStarYawVel OBJECT_FIELD_S32(0x22)\n\n/* Celebration Star */\n#define /*0x0F4*/ oCelebStarUnkF4              OBJECT_FIELD_S32(0x1B)\n#define /*0x108*/ oCelebStarDiameterOfRotation OBJECT_FIELD_S32(0x20)\n\n/* Star Selector */\n#define /*0x0F4*/ oStarSelectorType  OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oStarSelectorTimer OBJECT_FIELD_S32(0x1C)\n#define /*0x108*/ oStarSelectorSize  OBJECT_FIELD_F32(0x20)\n\n/* Sushi Shark */\n#define /*0x0F4*/ oSushiSharkUnkF4 OBJECT_FIELD_S32(0x1B) // angle?\n\n/* Swing Platform */\n#define /*0x0F4*/ oSwingPlatformAngle OBJECT_FIELD_F32(0x1B)\n#define /*0x0F8*/ oSwingPlatformSpeed OBJECT_FIELD_F32(0x1C)\n\n/* Swoop */\n#define /*0x0F4*/ oSwoopBonkCountdown OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oSwoopTargetPitch   OBJECT_FIELD_S32(0x1C)\n#define /*0x0FC*/ oSwoopTargetYaw     OBJECT_FIELD_S32(0x1D)\n\n/* Grindel or Thwomp */\n#define /*0x0F4*/ oGrindelThwompRandomTimer OBJECT_FIELD_S32(0x1B)\n\n/* Tilting Platform */\n#define /*0x0F4*/ oTiltingPyramidNormalX         OBJECT_FIELD_F32(0x1B)\n#define /*0x0F8*/ oTiltingPyramidNormalY         OBJECT_FIELD_F32(0x1C)\n#define /*0x0FC*/ oTiltingPyramidNormalZ         OBJECT_FIELD_F32(0x1D)\n#define /*0x10C*/ oTiltingPyramidMarioOnPlatform OBJECT_FIELD_S32(0x21)\n\n/* Toad Message */\n#define /*0x108*/ oToadMessageDialogID       OBJECT_FIELD_U32(0x20)\n#define /*0x10C*/ oToadMessageRecentlyTalked OBJECT_FIELD_S32(0x21)\n#define /*0x110*/ oToadMessageState          OBJECT_FIELD_S32(0x22)\n\n/* Tox Box */\n#define /*0x1AC*/ oToxBoxActionTable OBJECT_FIELD_VPTR(0x49)\n#define /*0x1B0*/ oToxBoxActionStep  OBJECT_FIELD_S32(0x4A)\n\n/* TTC Rotating Solid */\n#define /*0x0F4*/ oTTCRotatingSolidNumTurns      OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oTTCRotatingSolidNumSides      OBJECT_FIELD_S32(0x1C)\n#define /*0x0FC*/ oTTCRotatingSolidRotationDelay OBJECT_FIELD_S32(0x1D)\n#define /*0x100*/ oTTCRotatingSolidVelY          OBJECT_FIELD_F32(0x1E)\n#define /*0x104*/ oTTCRotatingSolidSoundTimer    OBJECT_FIELD_S32(0x1F)\n\n/* TTC Pendulum */\n#define /*0x0F4*/ oTTCPendulumAccelDir   OBJECT_FIELD_F32(0x1B)\n#define /*0x0F8*/ oTTCPendulumAngle      OBJECT_FIELD_F32(0x1C)\n#define /*0x0FC*/ oTTCPendulumAngleVel   OBJECT_FIELD_F32(0x1D)\n#define /*0x100*/ oTTCPendulumAngleAccel OBJECT_FIELD_F32(0x1E)\n#define /*0x104*/ oTTCPendulumDelay      OBJECT_FIELD_S32(0x1F)\n#define /*0x108*/ oTTCPendulumSoundTimer OBJECT_FIELD_S32(0x20)\n\n/* TTC Treadmill */\n#define /*0x0F4*/ oTTCTreadmillBigSurface      OBJECT_FIELD_S16P(0x1B)\n#define /*0x0F8*/ oTTCTreadmillSmallSurface    OBJECT_FIELD_S16P(0x1C)\n#define /*0x0FC*/ oTTCTreadmillSpeed           OBJECT_FIELD_F32(0x1D)\n#define /*0x100*/ oTTCTreadmillTargetSpeed     OBJECT_FIELD_F32(0x1E)\n#define /*0x104*/ oTTCTreadmillTimeUntilSwitch OBJECT_FIELD_S32(0x1F)\n\n/* TTC Moving Bar */\n#define /*0x0F4*/ oTTCMovingBarDelay        OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oTTCMovingBarStoppedTimer OBJECT_FIELD_S32(0x1C)\n#define /*0x0FC*/ oTTCMovingBarOffset       OBJECT_FIELD_F32(0x1D)\n#define /*0x100*/ oTTCMovingBarSpeed        OBJECT_FIELD_F32(0x1E)\n#define /*0x104*/ oTTCMovingBarStartOffset  OBJECT_FIELD_F32(0x1F)\n\n/* TTC Cog */\n#define /*0x0F4*/ oTTCCogDir       OBJECT_FIELD_F32(0x1B)\n#define /*0x0F8*/ oTTCCogSpeed     OBJECT_FIELD_F32(0x1C)\n#define /*0x0FC*/ oTTCCogTargetVel OBJECT_FIELD_F32(0x1D)\n\n/* TTC Pit Block */\n#define /*0x0F4*/ oTTCPitBlockPeakY    OBJECT_FIELD_F32(0x1B)\n#define /*0x0F8*/ oTTCPitBlockDir      OBJECT_FIELD_S32(0x1C)\n#define /*0x0FC*/ oTTCPitBlockWaitTime OBJECT_FIELD_S32(0x1D)\n\n/* TTC Elevator */\n#define /*0x0F4*/ oTTCElevatorDir      OBJECT_FIELD_F32(0x1B)\n#define /*0x0F8*/ oTTCElevatorPeakY    OBJECT_FIELD_F32(0x1C)\n#define /*0x0FC*/ oTTCElevatorMoveTime OBJECT_FIELD_S32(0x1D)\n\n/* TTC 2D Rotator */\n#define /*0x0F4*/ oTTC2DRotatorMinTimeUntilNextTurn OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oTTC2DRotatorTargetYaw            OBJECT_FIELD_S32(0x1C)\n#define /*0x0FC*/ oTTC2DRotatorIncrement            OBJECT_FIELD_S32(0x1D)\n#define /*0x104*/ oTTC2DRotatorRandomDirTimer       OBJECT_FIELD_S32(0x1F)\n#define /*0x108*/ oTTC2DRotatorSpeed                OBJECT_FIELD_S32(0x20)\n\n/* TTC Spinner */\n#define /*0x0F4*/ oTTCSpinnerDir     OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oTTCChangeDirTimer OBJECT_FIELD_S32(0x1C)\n\n/* Beta Trampoline */\n#define /*0x110*/ oBetaTrampolineMarioOnTrampoline OBJECT_FIELD_S32(0x22)\n\n/* Treasure Chest */\n#define /*0x0F4*/ oTreasureChestUnkF4 OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oTreasureChestUnkF8 OBJECT_FIELD_S32(0x1C)\n#define /*0x0FC*/ oTreasureChestUnkFC OBJECT_FIELD_S32(0x1D)\n\n/* Tree Snow or Leaf */\n#define /*0x0F4*/ oTreeSnowOrLeafUnkF4 OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oTreeSnowOrLeafUnkF8 OBJECT_FIELD_S32(0x1C)\n#define /*0x0FC*/ oTreeSnowOrLeafUnkFC OBJECT_FIELD_S32(0x1D)\n\n/* Tumbling Bridge */\n#define /*0x0F4*/ oTumblingBridgeUnkF4 OBJECT_FIELD_S32(0x1B)\n\n/* Tweester */\n#define /*0x0F4*/ oTweesterScaleTimer OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oTweesterUnused     OBJECT_FIELD_S32(0x1C)\n\n/* Ukiki */\n#define /*0x0F4*/ oUkikiTauntCounter   OBJECT_FIELD_S16(0x1B, 0)\n#define /*0x0F6*/ oUkikiTauntsToBeDone OBJECT_FIELD_S16(0x1B, 1)\n// 0x1D-0x21 reserved for pathing\n#define /*0x110*/ oUkikiChaseFleeRange OBJECT_FIELD_F32(0x22)\n#define /*0x1AC*/ oUkikiTextState      OBJECT_FIELD_S16(0x49, 0)\n#define /*0x1AE*/ oUkikiTextboxTimer   OBJECT_FIELD_S16(0x49, 1)\n#define /*0x1B0*/ oUkikiCageSpinTimer  OBJECT_FIELD_S16(0x4A, 0)\n#define /*0x1B2*/ oUkikiHasCap         OBJECT_FIELD_S16(0x4A, 1)\n\n/* Ukiki Cage*/\n#define /*0x088*/ oUkikiCageNextAction OBJECT_FIELD_S32(0x00)\n\n/* Unagi */\n#define /*0x0F4*/ oUnagiUnkF4  OBJECT_FIELD_F32(0x1B)\n#define /*0x0F8*/ oUnagiUnkF8  OBJECT_FIELD_F32(0x1C)\n// 0x1D-0x21 reserved for pathing\n#define /*0x110*/ oUnagiUnk110 OBJECT_FIELD_F32(0x22)\n#define /*0x1AC*/ oUnagiUnk1AC OBJECT_FIELD_F32(0x49)\n#define /*0x1B0*/ oUnagiUnk1B0 OBJECT_FIELD_S16(0x4A, 0)\n#define /*0x1B2*/ oUnagiUnk1B2 OBJECT_FIELD_S16(0x4A, 1)\n\n/* Water Bomb */\n#define /*0x0F8*/ oWaterBombVerticalStretch OBJECT_FIELD_F32(0x1C)\n#define /*0x0FC*/ oWaterBombStretchSpeed    OBJECT_FIELD_F32(0x1D)\n#define /*0x100*/ oWaterBombOnGround        OBJECT_FIELD_S32(0x1E)\n#define /*0x104*/ oWaterBombNumBounces      OBJECT_FIELD_F32(0x1F)\n\n/* Water Bomb Spawner */\n#define /*0x0F4*/ oWaterBombSpawnerBombActive  OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oWaterBombSpawnerTimeToSpawn OBJECT_FIELD_S32(0x1C)\n\n/* Water Bomb Cannon */\n#define /*0x0F4*/ oWaterCannonUnkF4  OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oWaterCannonUnkF8  OBJECT_FIELD_S32(0x1C)\n#define /*0x0FC*/ oWaterCannonUnkFC  OBJECT_FIELD_S32(0x1D)\n#define /*0x100*/ oWaterCannonUnk100 OBJECT_FIELD_S32(0x1E)\n\n/* Cannon Barrel Bubbles */\n#define /*0x0F4*/ oCannonBarrelBubblesUnkF4 OBJECT_FIELD_F32(0x1B)\n\n/* Water Level Pillar */\n#define /*0x0F8*/ oWaterLevelPillarDrained OBJECT_FIELD_S32(0x1C)\n\n/* Water Level Trigger */\n#define /*0x0F4*/ oWaterLevelTriggerUnkF4            OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oWaterLevelTriggerTargetWaterLevel OBJECT_FIELD_S32(0x1C)\n\n/* Water Objects */\n#define /*0x0F4*/ oWaterObjUnkF4  OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oWaterObjUnkF8  OBJECT_FIELD_S32(0x1C)\n#define /*0x0FC*/ oWaterObjUnkFC  OBJECT_FIELD_S32(0x1D)\n#define /*0x100*/ oWaterObjUnk100 OBJECT_FIELD_S32(0x1E)\n\n/* Water Ring (both variants) */\n#define /*0x0F4*/ oWaterRingScalePhaseX      OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oWaterRingScalePhaseY      OBJECT_FIELD_S32(0x1C)\n#define /*0x0FC*/ oWaterRingScalePhaseZ      OBJECT_FIELD_S32(0x1D)\n#define /*0x100*/ oWaterRingNormalX          OBJECT_FIELD_F32(0x1E)\n#define /*0x104*/ oWaterRingNormalY          OBJECT_FIELD_F32(0x1F)\n#define /*0x108*/ oWaterRingNormalZ          OBJECT_FIELD_F32(0x20)\n#define /*0x10C*/ oWaterRingMarioDistInFront OBJECT_FIELD_F32(0x21)\n#define /*0x110*/ oWaterRingIndex            OBJECT_FIELD_S32(0x22)\n#define /*0x1AC*/ oWaterRingAvgScale         OBJECT_FIELD_F32(0x49)\n\n/* Water Ring Spawner (Jet Stream Ring Spawner and Manta Ray) */\n#define /*0x1AC*/ oWaterRingSpawnerRingsCollected OBJECT_FIELD_S32(0x49)\n\n/* Water Ring Manager (Jet Stream Ring Spawner and Manta Ray Ring Manager) */\n#define /*0x0F4*/ oWaterRingMgrNextRingIndex     OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oWaterRingMgrLastRingCollected OBJECT_FIELD_S32(0x1C)\n\n/* Wave Trail */\n#define /*0x0F8*/ oWaveTrailSize OBJECT_FIELD_F32(0x1C)\n\n/* Whirlpool */\n#define /*0x0F4*/ oWhirlpoolInitFacePitch OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oWhirlpoolInitFaceRoll  OBJECT_FIELD_S32(0x1C)\n\n/* White Puff Explode */\n#define /*0x0F4*/ oWhitePuffUnkF4 OBJECT_FIELD_F32(0x1B)\n#define /*0x0F8*/ oWhitePuffUnkF8 OBJECT_FIELD_S32(0x1C)\n#define /*0x0FC*/ oWhitePuffUnkFC OBJECT_FIELD_S32(0x1D)\n\n/* White Wind Particle */\n#define /*0x0F4*/ oStrongWindParticlePenguinObj OBJECT_FIELD_OBJ(0x1B)\n\n/* Whomp */\n#define /*0x0F8*/ oWhompShakeVal OBJECT_FIELD_S32(0x1C)\n\n/* Wiggler */\n#define /*0x0F4*/ oWigglerFallThroughFloorsHeight OBJECT_FIELD_F32(0x1B)\n#define /*0x0F8*/ oWigglerSegments                OBJECT_FIELD_CHAIN_SEGMENT(0x1C)\n#define /*0x0FC*/ oWigglerWalkAnimSpeed           OBJECT_FIELD_F32(0x1D)\n#define /*0x104*/ oWigglerSquishSpeed             OBJECT_FIELD_F32(0x1F)\n#define /*0x108*/ oWigglerTimeUntilRandomTurn     OBJECT_FIELD_S32(0x20)\n#define /*0x10C*/ oWigglerTargetYaw               OBJECT_FIELD_S32(0x21)\n#define /*0x110*/ oWigglerWalkAwayFromWallTimer   OBJECT_FIELD_S32(0x22)\n#define /*0x1AC*/ oWigglerUnused                  OBJECT_FIELD_S16(0x49, 0)\n#define /*0x1AE*/ oWigglerTextStatus              OBJECT_FIELD_S16(0x49, 1)\n\n/* LLL Wood Piece */\n#define /*0x0F4*/ oLLLWoodPieceOscillationTimer OBJECT_FIELD_S32(0x1B)\n\n/* Wooden Post */\n#define /*0x0F4*/ oWoodenPostTotalMarioAngle  OBJECT_FIELD_S32(0x1B)\n#define /*0x0F8*/ oWoodenPostPrevAngleToMario OBJECT_FIELD_S32(0x1C)\n#define /*0x0FC*/ oWoodenPostSpeedY           OBJECT_FIELD_F32(0x1D)\n#define /*0x100*/ oWoodenPostMarioPounding    OBJECT_FIELD_S32(0x1E)\n#define /*0x104*/ oWoodenPostOffsetY          OBJECT_FIELD_F32(0x1F)\n\n/* Yoshi */\n#define /*0x0F4*/ oYoshiBlinkTimer OBJECT_FIELD_S32(0x1B)\n#define /*0x0FC*/ oYoshiChosenHome OBJECT_FIELD_S32(0x1D)\n#define /*0x100*/ oYoshiTargetYaw  OBJECT_FIELD_S32(0x1E)\n\n#endif // OBJECT_FIELDS_H\n"
  },
  {
    "path": "include/platform_info.h",
    "content": "#ifndef PLATFORM_INFO_H\n#define PLATFORM_INFO_H\n\n#ifdef TARGET_N64\n#define IS_64_BIT 0\n#define IS_BIG_ENDIAN 1\n#else\n#include <stdint.h>\n#define IS_64_BIT (UINTPTR_MAX == 0xFFFFFFFFFFFFFFFFU)\n#define IS_BIG_ENDIAN (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)\n#endif\n\n#define DOUBLE_SIZE_ON_64_BIT(size) ((size) * (sizeof(void *) / 4))\n\n#endif // PLATFORM_INFO_H\n"
  },
  {
    "path": "include/prevent_bss_reordering.h",
    "content": "#ifndef PREVENT_BSS_REORDERING_H\n#define PREVENT_BSS_REORDERING_H\n\n/**\n * To determine variable order for .bss, the compiler sorts variables by their\n * \"name index\" mod 256, where name index is something that, with -g, gets\n * incremented by struct and variable declarations, typedefs, and file markers,\n * among else. (Without -g, only variable declarations affects the index.)\n * This file contains enough dummy declarations to bump the index by 128.\n * Including it, or removing the include, should fix bss reordering problems\n * for a file, assuming the name index distance between its first and last bss\n * variable is at most 128.\n * Note that if a variable is declared \"extern\" within a header file, the name\n * index is taken at that point of the extern declaration. Thus, this include\n * must come before any such header.\n */\n\nstruct Dummy0 { int x; };\nstruct Dummy1 { int x; };\nstruct Dummy2 { int x; };\nstruct Dummy3 { int x; };\nstruct Dummy4 { int x; };\nstruct Dummy5 { int x; };\nstruct Dummy6 { int x; };\nstruct Dummy7 { int x; };\nstruct Dummy8 { int x; };\nstruct Dummy9 { int x; };\nstruct Dummy10 { int x; };\nstruct Dummy11 { int x; };\nstruct Dummy12 { int x; };\nstruct Dummy13 { int x; };\nstruct Dummy14 { int x; };\nstruct Dummy15 { int x; };\nstruct Dummy16 { int x; };\nstruct Dummy17 { int x; };\nstruct Dummy18 { int x; };\nstruct Dummy19 { int x; };\nstruct Dummy20 { int x; };\nstruct Dummy21 { int x; };\nstruct Dummy22 { int x; };\nstruct Dummy23 { int x; };\nstruct Dummy24 { int x; };\nstruct Dummy25 { int x; };\nstruct Dummy26 { int x; };\nstruct Dummy27 { int x; };\nstruct Dummy28 { int x; };\nstruct Dummy29 { int x; };\nstruct Dummy30 { int x; };\nstruct Dummy31 { int x; };\nstruct Dummy32 { int x; };\nstruct Dummy33 { int x; };\nstruct Dummy34 { int x; };\nstruct Dummy35 { int x; };\nstruct Dummy36 { int x; };\nstruct Dummy37 { int x; };\nstruct Dummy38 { int x; };\nstruct Dummy39 { int x; };\nstruct Dummy40 { int x; };\nstruct Dummy41 { int x; };\nstruct Dummy42 { int x; };\nstruct Dummy43 { int x; };\nstruct Dummy44 { int x; };\nstruct Dummy45 { int x; };\nstruct Dummy46 { int x; };\nstruct Dummy47 { int x; };\nstruct Dummy48 { int x; };\nstruct Dummy49 { int x; };\nstruct Dummy50 { int x; };\nstruct Dummy51 { int x; };\nstruct Dummy52 { int x; };\nstruct Dummy53 { int x; };\nstruct Dummy54 { int x; };\nstruct Dummy55 { int x; };\nstruct Dummy56 { int x; };\nstruct Dummy57 { int x; };\nstruct Dummy58 { int x; };\nstruct Dummy59 { int x; };\nstruct Dummy60 { int x; };\nstruct Dummy61 { int x; };\nstruct Dummy62 { int x; };\ntypedef int Dummy63;\n\n#endif // PREVENT_BSS_REORDERING_H\n"
  },
  {
    "path": "include/segment_symbols.h",
    "content": "#ifndef SEGMENT_SYMBOLS_H\n#define SEGMENT_SYMBOLS_H\n\n#ifndef NO_SEGMENTED_MEMORY\n#define DECLARE_SEGMENT(name) \\\n    extern u8 _##name##SegmentRomStart[]; \\\n    extern u8 _##name##SegmentRomEnd[];\n\n#define DECLARE_ACTOR_SEGMENT(name) \\\n    DECLARE_SEGMENT(name##_mio0) \\\n    DECLARE_SEGMENT(name##_geo)\n\n#define DECLARE_LEVEL_SEGMENT(name) \\\n    DECLARE_SEGMENT(name) \\\n    DECLARE_SEGMENT(name##_segment_7)\n\nDECLARE_ACTOR_SEGMENT(common0)\nDECLARE_ACTOR_SEGMENT(common1)\nDECLARE_ACTOR_SEGMENT(group0)\nDECLARE_ACTOR_SEGMENT(group1)\nDECLARE_ACTOR_SEGMENT(group2)\nDECLARE_ACTOR_SEGMENT(group3)\nDECLARE_ACTOR_SEGMENT(group4)\nDECLARE_ACTOR_SEGMENT(group5)\nDECLARE_ACTOR_SEGMENT(group6)\nDECLARE_ACTOR_SEGMENT(group7)\nDECLARE_ACTOR_SEGMENT(group8)\nDECLARE_ACTOR_SEGMENT(group9)\nDECLARE_ACTOR_SEGMENT(group10)\nDECLARE_ACTOR_SEGMENT(group11)\nDECLARE_ACTOR_SEGMENT(group12)\nDECLARE_ACTOR_SEGMENT(group13)\nDECLARE_ACTOR_SEGMENT(group14)\nDECLARE_ACTOR_SEGMENT(group15)\nDECLARE_ACTOR_SEGMENT(group16)\nDECLARE_ACTOR_SEGMENT(group17)\n\nDECLARE_SEGMENT(entry)\nDECLARE_SEGMENT(engine)\nDECLARE_SEGMENT(behavior)\nDECLARE_SEGMENT(scripts)\nDECLARE_SEGMENT(goddard)\n\nextern u8 _goddardSegmentStart[];\n\n#ifdef USE_EXT_RAM\nextern u8 _engineSegmentStart[];\nextern u8 _framebuffersSegmentNoloadStart[];\nextern u8 _framebuffersSegmentNoloadEnd[];\n#endif\n\nDECLARE_LEVEL_SEGMENT(menu)\nDECLARE_LEVEL_SEGMENT(intro)\nDECLARE_LEVEL_SEGMENT(ending)\n\n#define STUB_LEVEL(_0, _1, _2, _3, _4, _5, _6, _7, _8)\n#define DEFINE_LEVEL(_0, _1, _2, folder, _4, _5, _6, _7, _8, _9, _10) DECLARE_LEVEL_SEGMENT(folder)\n\n#include \"levels/level_defines.h\"\n\n#undef STUB_LEVEL\n#undef DEFINE_LEVEL\n\nDECLARE_SEGMENT(segment2_mio0)\n\nDECLARE_SEGMENT(water_skybox_mio0)\nDECLARE_SEGMENT(ccm_skybox_mio0)\nDECLARE_SEGMENT(clouds_skybox_mio0)\nDECLARE_SEGMENT(bitfs_skybox_mio0)\nDECLARE_SEGMENT(wdw_skybox_mio0)\nDECLARE_SEGMENT(cloud_floor_skybox_mio0)\nDECLARE_SEGMENT(ssl_skybox_mio0)\nDECLARE_SEGMENT(bbh_skybox_mio0)\nDECLARE_SEGMENT(bidw_skybox_mio0)\nDECLARE_SEGMENT(bits_skybox_mio0)\n\nDECLARE_SEGMENT(fire_mio0)\nDECLARE_SEGMENT(spooky_mio0)\nDECLARE_SEGMENT(generic_mio0)\nDECLARE_SEGMENT(water_mio0)\nDECLARE_SEGMENT(sky_mio0)\nDECLARE_SEGMENT(snow_mio0)\nDECLARE_SEGMENT(cave_mio0)\nDECLARE_SEGMENT(machine_mio0)\nDECLARE_SEGMENT(mountain_mio0)\nDECLARE_SEGMENT(grass_mio0)\nDECLARE_SEGMENT(outside_mio0)\nDECLARE_SEGMENT(inside_mio0)\nDECLARE_SEGMENT(effect_mio0)\nDECLARE_SEGMENT(title_screen_bg_mio0)\n\nDECLARE_SEGMENT(debug_level_select_mio0)\n\n#ifdef VERSION_EU\nDECLARE_SEGMENT(translation_de_mio0)\nDECLARE_SEGMENT(translation_en_mio0)\nDECLARE_SEGMENT(translation_fr_mio0)\n#endif\n\n#endif\n\n#endif // SEGMENT_SYMBOLS_H\n"
  },
  {
    "path": "include/segments.h",
    "content": "#ifndef SEGMENTS_H\n#define SEGMENTS_H\n\n#include \"config.h\"\n\n/*\n * Memory addresses for segments. Ideally, this header file would not be\n * needed, and the addresses would be defined in sm64.ld and linker-inserted\n * into C code. However, there are some cases where that would not match, where\n * addresses are loaded using lui/ori rather than lui/addiu.\n * To avoid duplication, this file is included from sm64.ld. We make sure not\n * to cast the addresses to pointers in this file, since that would be invalid\n * linker script syntax.\n*/\n\n#define SEG_START         0x8005C000\n\n#define SEG_FRAMEBUFFERS_SIZE (2 * SCREEN_WIDTH * SCREEN_HEIGHT * 3)\n#define SEG_GODDARD_POOL_OFFSET 0x52000 // Offset from right side of pool\n#define SEG_GODDARD       (SEG_POOL_END - SEG_GODDARD_POOL_OFFSET)\n\n#ifndef USE_EXT_RAM /* Default: Runs out of memory quickly when importing custom assets. */\n\n#define RDRAM_END         0x80400000\n\n#define SEG_POOL_START    SEG_START\n#define SEG_POOL_SIZE     0x165000\n#define SEG_POOL_END      (SEG_POOL_START + SEG_POOL_SIZE)\n\n#define SEG_BUFFERS       SEG_POOL_END\n\n#ifdef VERSION_EU\n#define SEG_ENGINE        0x8036FF00\n#else\n#define SEG_ENGINE        0x80378800\n#endif\n\n#define SEG_FRAMEBUFFERS  (RDRAM_END - SEG_FRAMEBUFFERS_SIZE)\n\n#else /* Use Expansion Pak space for pool. */\n\n/*\n * Workaround for running out of pool space due to\n * importing large custom content.\n */\n\n#ifdef VERSION_CN\n#define RDRAM_END         0x807C0000 // iQue has stuff like EEPROM mapped at 807C0000 onwards. TODO: Code this using osMemSize\n#else\n#define RDRAM_END         0x80800000\n#endif\n\n#define SEG_BUFFERS       SEG_START\n#define SEG_ENGINE        ((u32) &_engineSegmentStart)\n#define SEG_FRAMEBUFFERS  ((u32) &_framebuffersSegmentNoloadStart)\n#define SEG_POOL_START    ((u32) &_framebuffersSegmentNoloadEnd)\n#define SEG_POOL_END      RDRAM_END\n#define SEG_POOL_END_4MB  0x80400000 // For the error message screen enhancement.\n\n#endif\n\n#endif // SEGMENTS_H\n"
  },
  {
    "path": "include/seq_ids.h",
    "content": "#ifndef SEQ_IDS_H\n#define SEQ_IDS_H\n\n// Sometimes a sequence id is represented as one of the below ids (the base id),\n// optionally OR'd with SEQ_VARIATION.\n#define SEQ_BASE_ID 0x7f\n#define SEQ_VARIATION 0x80\n\n#define SEQ_MENU_GAME_OVER (SEQ_MENU_TITLE_SCREEN | SEQ_VARIATION)\n\nenum SeqId {\n    SEQ_SOUND_PLAYER,                 // 0x00\n    SEQ_EVENT_CUTSCENE_COLLECT_STAR,  // 0x01\n    SEQ_MENU_TITLE_SCREEN,            // 0x02\n    SEQ_LEVEL_GRASS,                  // 0x03\n    SEQ_LEVEL_INSIDE_CASTLE,          // 0x04\n    SEQ_LEVEL_WATER,                  // 0x05\n    SEQ_LEVEL_HOT,                    // 0x06\n    SEQ_LEVEL_BOSS_KOOPA,             // 0x07\n    SEQ_LEVEL_SNOW,                   // 0x08\n    SEQ_LEVEL_SLIDE,                  // 0x09\n    SEQ_LEVEL_SPOOKY,                 // 0x0A\n    SEQ_EVENT_PIRANHA_PLANT,          // 0x0B\n    SEQ_LEVEL_UNDERGROUND,            // 0x0C\n    SEQ_MENU_STAR_SELECT,             // 0x0D\n    SEQ_EVENT_POWERUP,                // 0x0E\n    SEQ_EVENT_METAL_CAP,              // 0x0F\n    SEQ_EVENT_KOOPA_MESSAGE,          // 0x10\n    SEQ_LEVEL_KOOPA_ROAD,             // 0x11\n    SEQ_EVENT_HIGH_SCORE,             // 0x12\n    SEQ_EVENT_MERRY_GO_ROUND,         // 0x13\n    SEQ_EVENT_RACE,                   // 0x14\n    SEQ_EVENT_CUTSCENE_STAR_SPAWN,    // 0x15\n    SEQ_EVENT_BOSS,                   // 0x16\n    SEQ_EVENT_CUTSCENE_COLLECT_KEY,   // 0x17\n    SEQ_EVENT_ENDLESS_STAIRS,         // 0x18\n    SEQ_LEVEL_BOSS_KOOPA_FINAL,       // 0x19\n    SEQ_EVENT_CUTSCENE_CREDITS,       // 0x1A\n    SEQ_EVENT_SOLVE_PUZZLE,           // 0x1B\n    SEQ_EVENT_TOAD_MESSAGE,           // 0x1C\n    SEQ_EVENT_PEACH_MESSAGE,          // 0x1D\n    SEQ_EVENT_CUTSCENE_INTRO,         // 0x1E\n    SEQ_EVENT_CUTSCENE_VICTORY,       // 0x1F\n    SEQ_EVENT_CUTSCENE_ENDING,        // 0x20\n    SEQ_MENU_FILE_SELECT,             // 0x21\n    SEQ_EVENT_CUTSCENE_LAKITU,        // 0x22 (not in JP)\n    SEQ_COUNT\n};\n\n#endif // SEQ_IDS_H\n"
  },
  {
    "path": "include/seq_macros.inc",
    "content": "// Macros for disassembled sequence files. This file was automatically generated by seq_decoder.py.\n// To regenerate it, run: ./tools/seq_decoder.py --emit-asm-macros > include/seq_macros.inc\n\n// seq commands\n\n.macro seq_testchdisabled a\n    .byte 0x0 + \\a\n.endm\n\n.macro seq_subvariation a=0\n    .byte 0x50 + \\a\n.endm\n\n.macro seq_setvariation a=0\n    .byte 0x70 + \\a\n.endm\n\n.macro seq_getvariation a=0\n    .byte 0x80 + \\a\n.endm\n\n.macro seq_startchannel a, b\n    .byte 0x90 + \\a\n    .byte (\\b - sequence_start) >> 8, (\\b - sequence_start) & 0xff\n.endm\n\n.macro seq_subtract a\n    .byte 0xc8\n    .byte \\a\n.endm\n\n.macro seq_bitand a\n    .byte 0xc9\n    .byte \\a\n.endm\n\n.macro seq_setval a\n    .byte 0xcc\n    .byte \\a\n.endm\n\n.macro seq_setnoteallocationpolicy a\n    .byte 0xd0\n    .byte \\a\n.endm\n\n.macro seq_setshortnotedurationtable a\n    .byte 0xd1\n    .byte (\\a - sequence_start) >> 8, (\\a - sequence_start) & 0xff\n.endm\n\n.macro seq_setshortnotevelocitytable a\n    .byte 0xd2\n    .byte (\\a - sequence_start) >> 8, (\\a - sequence_start) & 0xff\n.endm\n\n.macro seq_setmutebhv a\n    .byte 0xd3\n    .byte \\a\n.endm\n\n.macro seq_mute\n    .byte 0xd4\n.endm\n\n.macro seq_setmutescale a\n    .byte 0xd5\n    .byte \\a\n.endm\n\n.macro seq_disablechannels a\n    .byte 0xd6\n    .byte \\a >> 8, \\a & 0xff\n.endm\n\n.macro seq_initchannels a\n    .byte 0xd7\n    .byte \\a >> 8, \\a & 0xff\n.endm\n\n.macro seq_changevol a\n    .byte 0xda\n    .byte \\a\n.endm\n\n.macro seq_setvol a\n    .byte 0xdb\n    .byte \\a\n.endm\n\n.macro seq_addtempo a\n    .byte 0xdc\n    .byte \\a\n.endm\n\n.macro seq_settempo a\n    .byte 0xdd\n    .byte \\a\n.endm\n\n.macro seq_transposerel a\n    .byte 0xde\n    .byte \\a\n.endm\n\n.macro seq_transpose a\n    .byte 0xdf\n    .byte \\a\n.endm\n\n.macro seq_bgez a\n    .byte 0xf5\n    .byte (\\a - sequence_start) >> 8, (\\a - sequence_start) & 0xff\n.endm\n\n.macro seq_loopend\n    .byte 0xf7\n.endm\n\n.macro seq_loop a\n    .byte 0xf8\n    .byte \\a\n.endm\n\n.macro seq_bltz a\n    .byte 0xf9\n    .byte (\\a - sequence_start) >> 8, (\\a - sequence_start) & 0xff\n.endm\n\n.macro seq_beqz a\n    .byte 0xfa\n    .byte (\\a - sequence_start) >> 8, (\\a - sequence_start) & 0xff\n.endm\n\n.macro seq_jump a\n    .byte 0xfb\n    .byte (\\a - sequence_start) >> 8, (\\a - sequence_start) & 0xff\n.endm\n\n.macro seq_call a\n    .byte 0xfc\n    .byte (\\a - sequence_start) >> 8, (\\a - sequence_start) & 0xff\n.endm\n\n.macro seq_delay a\n    .byte 0xfd\n    var \\a\n.endm\n\n.macro seq_delay1\n    .byte 0xfe\n.endm\n\n.macro seq_end\n    .byte 0xff\n.endm\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n\n.macro seq_unreservenotes\n    .byte 0xf0\n.endm\n\n.macro seq_reservenotes a\n    .byte 0xf1\n    .byte \\a\n.endm\n\n#else\n\n#ifdef VERSION_EU\n\n.macro seq_unreservenotes\n    .byte 0xf0\n.endm\n\n.macro seq_reservenotes a\n    .byte 0xf1\n    .byte \\a\n.endm\n\n#else\n\n.macro seq_unreservenotes\n    .byte 0xf1\n.endm\n\n.macro seq_reservenotes a\n    .byte 0xf2\n    .byte \\a\n.endm\n\n#endif\n\n#endif\n\n// chan commands\n\n.macro chan_startchannel a, b\n    .byte 0x10 + \\a\n    .byte (\\b - sequence_start) >> 8, (\\b - sequence_start) & 0xff\n.endm\n\n.macro chan_disablechannel a\n    .byte 0x20 + \\a\n.endm\n\n.macro chan_iowriteval2 a, b\n    .byte 0x30 + \\a\n    .byte \\b\n.endm\n\n.macro chan_ioreadval2 a, b\n    .byte 0x40 + \\a\n    .byte \\b\n.endm\n\n.macro chan_ioreadvalsub a\n    .byte 0x50 + \\a\n.endm\n\n.macro chan_iowriteval a\n    .byte 0x70 + \\a\n.endm\n\n.macro chan_dynsetlayer a\n    .byte 0xb0 + \\a\n.endm\n\n.macro chan_setinstr a\n    .byte 0xc1\n    .byte \\a\n.endm\n\n.macro chan_setdyntable a\n    .byte 0xc2\n    .byte (\\a - sequence_start) >> 8, (\\a - sequence_start) & 0xff\n.endm\n\n.macro chan_largenotesoff\n    .byte 0xc3\n.endm\n\n.macro chan_largenoteson\n    .byte 0xc4\n.endm\n\n.macro chan_dynsetdyntable\n    .byte 0xc5\n.endm\n\n.macro chan_setbank a\n    .byte 0xc6\n    .byte \\a\n.endm\n\n.macro chan_subtract a\n    .byte 0xc8\n    .byte \\a\n.endm\n\n.macro chan_bitand a\n    .byte 0xc9\n    .byte \\a\n.endm\n\n.macro chan_setmutebhv a\n    .byte 0xca\n    .byte \\a\n.endm\n\n.macro chan_readseq a\n    .byte 0xcb\n    .byte (\\a - sequence_start) >> 8, (\\a - sequence_start) & 0xff\n.endm\n\n.macro chan_setval a\n    .byte 0xcc\n    .byte \\a\n.endm\n\n.macro chan_stereoheadseteffects a\n    .byte 0xd0\n    .byte \\a\n.endm\n\n.macro chan_setnoteallocationpolicy a\n    .byte 0xd1\n    .byte \\a\n.endm\n\n.macro chan_setsustain a\n    .byte 0xd2\n    .byte \\a\n.endm\n\n.macro chan_pitchbend a\n    .byte 0xd3\n    .byte \\a\n.endm\n\n.macro chan_setreverb a\n    .byte 0xd4\n    .byte \\a\n.endm\n\n.macro chan_setupdatesperframe_unimplemented a\n    .byte 0xd6\n    .byte \\a\n.endm\n\n.macro chan_setvibratorate a\n    .byte 0xd7\n    .byte \\a\n.endm\n\n.macro chan_setvibratoextent a\n    .byte 0xd8\n    .byte \\a\n.endm\n\n.macro chan_setdecayrelease a\n    .byte 0xd9\n    .byte \\a\n.endm\n\n.macro chan_setenvelope a\n    .byte 0xda\n    .byte (\\a - sequence_start) >> 8, (\\a - sequence_start) & 0xff\n.endm\n\n.macro chan_transpose a\n    .byte 0xdb\n    .byte \\a\n.endm\n\n.macro chan_setpanmix a\n    .byte 0xdc\n    .byte \\a\n.endm\n\n.macro chan_setpan a\n    .byte 0xdd\n    .byte \\a\n.endm\n\n.macro chan_freqscale a\n    .byte 0xde\n    .byte \\a >> 8, \\a & 0xff\n.endm\n\n.macro chan_setvol a\n    .byte 0xdf\n    .byte \\a\n.endm\n\n.macro chan_setvolscale a\n    .byte 0xe0\n    .byte \\a\n.endm\n\n.macro chan_setvibratoratelinear a, b, c\n    .byte 0xe1\n    .byte \\a\n    .byte \\b\n    .byte \\c\n.endm\n\n.macro chan_setvibratoextentlinear a, b, c\n    .byte 0xe2\n    .byte \\a\n    .byte \\b\n    .byte \\c\n.endm\n\n.macro chan_setvibratodelay a\n    .byte 0xe3\n    .byte \\a\n.endm\n\n.macro chan_dyncall\n    .byte 0xe4\n.endm\n\n.macro chan_hang\n    .byte 0xf3\n.endm\n\n.macro chan_bgez a\n    .byte 0xf5\n    .byte (\\a - sequence_start) >> 8, (\\a - sequence_start) & 0xff\n.endm\n\n.macro chan_break\n    .byte 0xf6\n.endm\n\n.macro chan_loopend\n    .byte 0xf7\n.endm\n\n.macro chan_loop a\n    .byte 0xf8\n    .byte \\a\n.endm\n\n.macro chan_bltz a\n    .byte 0xf9\n    .byte (\\a - sequence_start) >> 8, (\\a - sequence_start) & 0xff\n.endm\n\n.macro chan_beqz a\n    .byte 0xfa\n    .byte (\\a - sequence_start) >> 8, (\\a - sequence_start) & 0xff\n.endm\n\n.macro chan_jump a\n    .byte 0xfb\n    .byte (\\a - sequence_start) >> 8, (\\a - sequence_start) & 0xff\n.endm\n\n.macro chan_call a\n    .byte 0xfc\n    .byte (\\a - sequence_start) >> 8, (\\a - sequence_start) & 0xff\n.endm\n\n.macro chan_delay a\n    .byte 0xfd\n    var \\a\n.endm\n\n.macro chan_delay1\n    .byte 0xfe\n.endm\n\n.macro chan_end\n    .byte 0xff\n.endm\n\n.macro chan_writeseq val, pos, offset\n    .byte 0xc7, \\val\n    .byte (\\pos - sequence_start + \\offset) >> 8, (\\pos - sequence_start + \\offset) & 0xff\n.endm\n\n.macro chan_writeseq_nextinstr val, offset\n    .byte 0xc7, \\val\n    .byte (writeseq\\@ - sequence_start + \\offset) >> 8, (writeseq\\@ - sequence_start + \\offset) & 0xff\n    writeseq\\@:\n.endm\n\n.macro layer_portamento a, b, c\n    .byte 0xc7, \\a, \\b\n    .if ((\\a & 0x80) == 0)\n        var \\c\n    .else\n        .byte \\c\n    .endif\n.endm\n\n.macro chan_delay_long a\n    .byte 0xfd\n    var_long \\a\n.endm\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n\n.macro chan_setnotepriority a\n    .byte 0xe9\n    .byte \\a\n.endm\n\n.macro chan_unreservenotes\n    .byte 0xf0\n.endm\n\n.macro chan_reservenotes a\n    .byte 0xf1\n    .byte \\a\n.endm\n\n.macro chan_testlayerfinished a\n    .byte 0x80 + \\a\n.endm\n\n.macro chan_setlayer a, b\n    .byte 0x88 + \\a\n    .byte (\\b - sequence_start) >> 8, (\\b - sequence_start) & 0xff\n.endm\n\n.macro chan_ioreadval a\n    .byte 0x60 + \\a\n.endm\n\n.macro chan_freelayer a\n    .byte 0x90 + \\a\n.endm\n\n#else\n\n.macro chan_testlayerfinished a\n    .byte 0x0 + \\a\n.endm\n\n.macro chan_ioreadval a\n    .byte 0x80 + \\a\n.endm\n\n.macro chan_setlayer a, b\n    .byte 0x90 + \\a\n    .byte (\\b - sequence_start) >> 8, (\\b - sequence_start) & 0xff\n.endm\n\n.macro chan_freelayer a\n    .byte 0xa0 + \\a\n.endm\n\n#ifdef VERSION_EU\n\n.macro chan_setnotepriority a\n    .byte 0xe9\n    .byte \\a\n.endm\n\n.macro chan_unreservenotes\n    .byte 0xf0\n.endm\n\n.macro chan_reservenotes a\n    .byte 0xf1\n    .byte \\a\n.endm\n\n#else\n\n.macro chan_setnotepriority a\n    .byte 0x60 + \\a\n.endm\n\n.macro chan_unreservenotes\n    .byte 0xf1\n.endm\n\n.macro chan_reservenotes a\n    .byte 0xf2\n    .byte \\a\n.endm\n\n#endif\n\n#endif\n\n// layer commands\n\n.macro layer_note0 a, b, c, d\n    .byte 0x0 + \\a\n    var \\b\n    .byte \\c\n    .byte \\d\n.endm\n\n.macro layer_note1 a, b, c\n    .byte 0x40 + \\a\n    var \\b\n    .byte \\c\n.endm\n\n.macro layer_note2 a, b, c\n    .byte 0x80 + \\a\n    .byte \\b\n    .byte \\c\n.endm\n\n.macro layer_delay a\n    .byte 0xc0\n    var \\a\n.endm\n\n.macro layer_setshortnotevelocity a\n    .byte 0xc1\n    .byte \\a\n.endm\n\n.macro layer_transpose a\n    .byte 0xc2\n    .byte \\a\n.endm\n\n.macro layer_setshortnotedefaultplaypercentage a\n    .byte 0xc3\n    var \\a\n.endm\n\n.macro layer_somethingon\n    .byte 0xc4\n.endm\n\n.macro layer_somethingoff\n    .byte 0xc5\n.endm\n\n.macro layer_setinstr a\n    .byte 0xc6\n    .byte \\a\n.endm\n\n.macro layer_disableportamento\n    .byte 0xc8\n.endm\n\n.macro layer_setshortnoteduration a\n    .byte 0xc9\n    .byte \\a\n.endm\n\n.macro layer_setpan a\n    .byte 0xca\n    .byte \\a\n.endm\n\n.macro layer_setshortnotevelocityfromtable a\n    .byte 0xd0 + \\a\n.endm\n\n.macro layer_setshortnotedurationfromtable a\n    .byte 0xe0 + \\a\n.endm\n\n.macro layer_loopend\n    .byte 0xf7\n.endm\n\n.macro layer_loop a\n    .byte 0xf8\n    .byte \\a\n.endm\n\n.macro layer_jump a\n    .byte 0xfb\n    .byte (\\a - sequence_start) >> 8, (\\a - sequence_start) & 0xff\n.endm\n\n.macro layer_call a\n    .byte 0xfc\n    .byte (\\a - sequence_start) >> 8, (\\a - sequence_start) & 0xff\n.endm\n\n.macro layer_end\n    .byte 0xff\n.endm\n\n.macro layer_delay_long a\n    .byte 0xc0\n    var_long \\a\n.endm\n\n.macro layer_note1_long a, b, c\n    .byte 0x40 + \\a\n    var_long \\b\n    .byte \\c\n.endm\n\n// envelope commands\n\n.macro envelope_disable a\n    .byte 0x0, 0x0\n    .byte \\a >> 8, \\a & 0xff\n.endm\n\n.macro envelope_hang a=0\n    .byte 0xff, 0xff\n    .byte \\a >> 8, \\a & 0xff\n.endm\n\n.macro envelope_goto a\n    .byte 0xff, 0xfe\n    .byte \\a >> 8, \\a & 0xff\n.endm\n\n.macro envelope_restart a=0\n    .byte 0xff, 0xfd\n    .byte \\a >> 8, \\a & 0xff\n.endm\n\n.macro envelope_line a, b\n    .byte \\a >> 8, \\a & 0xff\n    .byte \\b >> 8, \\b & 0xff\n.endm\n\n// other commands\n\n.macro var_long x\n     .byte (0x80 | (\\x & 0x7f00) >> 8), (\\x & 0xff)\n.endm\n\n.macro var x\n    .if (\\x >= 0x80)\n        var_long \\x\n    .else\n        .byte \\x\n    .endif\n.endm\n\n.macro sound_ref a\n    .byte (\\a - sequence_start) >> 8, (\\a - sequence_start) & 0xff\n.endm\n"
  },
  {
    "path": "include/sm64.h",
    "content": "#ifndef SM64_H\n#define SM64_H\n\n// Global header for Super Mario 64\n\n#include \"types.h\"\n#include \"config.h\"\n#include \"object_fields.h\"\n#include \"object_constants.h\"\n#include \"sounds.h\"\n#include \"model_ids.h\"\n#include \"mario_animation_ids.h\"\n#include \"mario_geo_switch_case_ids.h\"\n#include \"surface_terrains.h\"\n#include \"macros.h\"\n\n// Crash handler enhancement\n#ifdef CRASH_SCREEN_INCLUDED\n#define DEBUG_ASSERT(exp) do { if (!(exp)) _n64_assert(__FILE__, __LINE__, #exp, 1); } while (0)\n#else\n#define DEBUG_ASSERT(exp)\n#endif\n\n// Pointer casting is technically UB, and avoiding it gets rid of endian issues\n// as well as a nice side effect.\n#ifdef AVOID_UB\n#define GET_HIGH_U16_OF_32(var) ((u16)((var) >> 16))\n#define GET_HIGH_S16_OF_32(var) ((s16)((var) >> 16))\n#define GET_LOW_U16_OF_32(var) ((u16)((var) & 0xFFFF))\n#define GET_LOW_S16_OF_32(var) ((s16)((var) & 0xFFFF))\n#define SET_HIGH_U16_OF_32(var, x) ((var) = ((var) & 0xFFFF) | ((x) << 16))\n#define SET_HIGH_S16_OF_32(var, x) ((var) = ((var) & 0xFFFF) | ((x) << 16))\n#else\n#define GET_HIGH_U16_OF_32(var) (((u16 *)&(var))[0])\n#define GET_HIGH_S16_OF_32(var) (((s16 *)&(var))[0])\n#define GET_LOW_U16_OF_32(var) (((u16 *)&(var))[1])\n#define GET_LOW_S16_OF_32(var) (((s16 *)&(var))[1])\n#define SET_HIGH_U16_OF_32(var, x) ((((u16 *)&(var))[0]) = (x))\n#define SET_HIGH_S16_OF_32(var, x) ((((s16 *)&(var))[0]) = (x))\n#endif\n\n// Layers\n#define LAYER_FORCE             0\n#define LAYER_OPAQUE            1\n#define LAYER_OPAQUE_DECAL      2\n#define LAYER_OPAQUE_INTER      3\n#define LAYER_ALPHA             4\n#define LAYER_TRANSPARENT       5\n#define LAYER_TRANSPARENT_DECAL 6\n#define LAYER_TRANSPARENT_INTER 7\n\n#define INPUT_NONZERO_ANALOG         0x0001\n#define INPUT_A_PRESSED              0x0002\n#define INPUT_OFF_FLOOR              0x0004\n#define INPUT_ABOVE_SLIDE            0x0008\n#define INPUT_FIRST_PERSON           0x0010\n#define INPUT_UNKNOWN_5              0x0020\n#define INPUT_SQUISHED               0x0040\n#define INPUT_A_DOWN                 0x0080\n#define INPUT_IN_POISON_GAS          0x0100\n#define INPUT_IN_WATER               0x0200\n#define INPUT_STOMPED                0x0400\n#define INPUT_INTERACT_OBJ_GRABBABLE 0x0800\n#define INPUT_UNKNOWN_12             0x1000\n#define INPUT_B_PRESSED              0x2000\n#define INPUT_Z_DOWN                 0x4000\n#define INPUT_Z_PRESSED              0x8000\n\n#define GROUND_STEP_LEFT_GROUND              0\n#define GROUND_STEP_NONE                     1\n#define GROUND_STEP_HIT_WALL                 2\n#define GROUND_STEP_HIT_WALL_STOP_QSTEPS     2\n#define GROUND_STEP_HIT_WALL_CONTINUE_QSTEPS 3\n\n#define AIR_STEP_CHECK_LEDGE_GRAB 0x00000001\n#define AIR_STEP_CHECK_HANG       0x00000002\n\n#define AIR_STEP_NONE            0\n#define AIR_STEP_LANDED          1\n#define AIR_STEP_HIT_WALL        2\n#define AIR_STEP_GRABBED_LEDGE   3\n#define AIR_STEP_GRABBED_CEILING 4\n#define AIR_STEP_HIT_LAVA_WALL   6\n\n#define WATER_STEP_NONE        0\n#define WATER_STEP_HIT_FLOOR   1\n#define WATER_STEP_HIT_CEILING 2\n#define WATER_STEP_CANCELLED   3\n#define WATER_STEP_HIT_WALL    4\n\n#define PARTICLE_DUST                 /* 0x00000001 */ (1 <<  0)\n#define PARTICLE_VERTICAL_STAR        /* 0x00000002 */ (1 <<  1)\n#define PARTICLE_2                    /* 0x00000004 */ (1 <<  2)\n#define PARTICLE_SPARKLES             /* 0x00000008 */ (1 <<  3)\n#define PARTICLE_HORIZONTAL_STAR      /* 0x00000010 */ (1 <<  4)\n#define PARTICLE_BUBBLE               /* 0x00000020 */ (1 <<  5)\n#define PARTICLE_WATER_SPLASH         /* 0x00000040 */ (1 <<  6)\n#define PARTICLE_IDLE_WATER_WAVE      /* 0x00000080 */ (1 <<  7)\n#define PARTICLE_SHALLOW_WATER_WAVE   /* 0x00000100 */ (1 <<  8)\n#define PARTICLE_PLUNGE_BUBBLE        /* 0x00000200 */ (1 <<  9)\n#define PARTICLE_WAVE_TRAIL           /* 0x00000400 */ (1 << 10)\n#define PARTICLE_FIRE                 /* 0x00000800 */ (1 << 11)\n#define PARTICLE_SHALLOW_WATER_SPLASH /* 0x00001000 */ (1 << 12)\n#define PARTICLE_LEAF                 /* 0x00002000 */ (1 << 13)\n#define PARTICLE_SNOW                 /* 0x00004000 */ (1 << 14)\n#define PARTICLE_DIRT                 /* 0x00008000 */ (1 << 15)\n#define PARTICLE_MIST_CIRCLE          /* 0x00010000 */ (1 << 16)\n#define PARTICLE_BREATH               /* 0x00020000 */ (1 << 17)\n#define PARTICLE_TRIANGLE             /* 0x00040000 */ (1 << 18)\n#define PARTICLE_19                   /* 0x00080000 */ (1 << 19)\n\n#define MODEL_STATE_NOISE_ALPHA 0x180\n#define MODEL_STATE_METAL       0x200\n\n#define MARIO_NORMAL_CAP                0x00000001\n#define MARIO_VANISH_CAP                0x00000002\n#define MARIO_METAL_CAP                 0x00000004\n#define MARIO_WING_CAP                  0x00000008\n#define MARIO_CAP_ON_HEAD               0x00000010\n#define MARIO_CAP_IN_HAND               0x00000020\n#define MARIO_METAL_SHOCK               0x00000040\n#define MARIO_TELEPORTING               0x00000080\n#define MARIO_UNKNOWN_08                0x00000100\n#define MARIO_UNKNOWN_13                0x00002000\n#define MARIO_ACTION_SOUND_PLAYED       0x00010000\n#define MARIO_MARIO_SOUND_PLAYED        0x00020000\n#define MARIO_UNKNOWN_18                0x00040000\n#define MARIO_PUNCHING                  0x00100000\n#define MARIO_KICKING                   0x00200000\n#define MARIO_TRIPPING                  0x00400000\n#define MARIO_UNKNOWN_25                0x02000000\n#define MARIO_UNKNOWN_30                0x40000000\n#define MARIO_UNKNOWN_31                0x80000000\n\n#define MARIO_SPECIAL_CAPS (MARIO_VANISH_CAP | MARIO_METAL_CAP | MARIO_WING_CAP)\n#define MARIO_CAPS (MARIO_NORMAL_CAP | MARIO_SPECIAL_CAPS)\n\n#define ACT_ID_MASK 0x000001FF\n\n#define ACT_GROUP_MASK       0x000001C0\n#define ACT_GROUP_STATIONARY /* 0x00000000 */ (0 << 6)\n#define ACT_GROUP_MOVING     /* 0x00000040 */ (1 << 6)\n#define ACT_GROUP_AIRBORNE   /* 0x00000080 */ (2 << 6)\n#define ACT_GROUP_SUBMERGED  /* 0x000000C0 */ (3 << 6)\n#define ACT_GROUP_CUTSCENE   /* 0x00000100 */ (4 << 6)\n#define ACT_GROUP_AUTOMATIC  /* 0x00000140 */ (5 << 6)\n#define ACT_GROUP_OBJECT     /* 0x00000180 */ (6 << 6)\n\n#define ACT_FLAG_STATIONARY                  /* 0x00000200 */ (1 <<  9)\n#define ACT_FLAG_MOVING                      /* 0x00000400 */ (1 << 10)\n#define ACT_FLAG_AIR                         /* 0x00000800 */ (1 << 11)\n#define ACT_FLAG_INTANGIBLE                  /* 0x00001000 */ (1 << 12)\n#define ACT_FLAG_SWIMMING                    /* 0x00002000 */ (1 << 13)\n#define ACT_FLAG_METAL_WATER                 /* 0x00004000 */ (1 << 14)\n#define ACT_FLAG_SHORT_HITBOX                /* 0x00008000 */ (1 << 15)\n#define ACT_FLAG_RIDING_SHELL                /* 0x00010000 */ (1 << 16)\n#define ACT_FLAG_INVULNERABLE                /* 0x00020000 */ (1 << 17)\n#define ACT_FLAG_BUTT_OR_STOMACH_SLIDE       /* 0x00040000 */ (1 << 18)\n#define ACT_FLAG_DIVING                      /* 0x00080000 */ (1 << 19)\n#define ACT_FLAG_ON_POLE                     /* 0x00100000 */ (1 << 20)\n#define ACT_FLAG_HANGING                     /* 0x00200000 */ (1 << 21)\n#define ACT_FLAG_IDLE                        /* 0x00400000 */ (1 << 22)\n#define ACT_FLAG_ATTACKING                   /* 0x00800000 */ (1 << 23)\n#define ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION  /* 0x01000000 */ (1 << 24)\n#define ACT_FLAG_CONTROL_JUMP_HEIGHT         /* 0x02000000 */ (1 << 25)\n#define ACT_FLAG_ALLOW_FIRST_PERSON          /* 0x04000000 */ (1 << 26)\n#define ACT_FLAG_PAUSE_EXIT                  /* 0x08000000 */ (1 << 27)\n#define ACT_FLAG_SWIMMING_OR_FLYING          /* 0x10000000 */ (1 << 28)\n#define ACT_FLAG_WATER_OR_TEXT               /* 0x20000000 */ (1 << 29)\n#define ACT_FLAG_THROWING                    /* 0x80000000 */ (1 << 31)\n\n#define ACT_UNINITIALIZED              0x00000000 // (0x000)\n\n// group 0x000: stationary actions\n#define ACT_IDLE                       0x0C400201 // (0x001 | ACT_FLAG_STATIONARY | ACT_FLAG_IDLE | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)\n#define ACT_START_SLEEPING             0x0C400202 // (0x002 | ACT_FLAG_STATIONARY | ACT_FLAG_IDLE | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)\n#define ACT_SLEEPING                   0x0C000203 // (0x003 | ACT_FLAG_STATIONARY | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)\n#define ACT_WAKING_UP                  0x0C000204 // (0x004 | ACT_FLAG_STATIONARY | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)\n#define ACT_PANTING                    0x0C400205 // (0x005 | ACT_FLAG_STATIONARY | ACT_FLAG_IDLE | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)\n#define ACT_HOLD_PANTING_UNUSED        0x08000206 // (0x006 | ACT_FLAG_STATIONARY | ACT_FLAG_PAUSE_EXIT)\n#define ACT_HOLD_IDLE                  0x08000207 // (0x007 | ACT_FLAG_STATIONARY | ACT_FLAG_PAUSE_EXIT)\n#define ACT_HOLD_HEAVY_IDLE            0x08000208 // (0x008 | ACT_FLAG_STATIONARY | ACT_FLAG_PAUSE_EXIT)\n#define ACT_STANDING_AGAINST_WALL      0x0C400209 // (0x009 | ACT_FLAG_STATIONARY | ACT_FLAG_IDLE | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)\n#define ACT_COUGHING                   0x0C40020A // (0x00A | ACT_FLAG_STATIONARY | ACT_FLAG_IDLE | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)\n#define ACT_SHIVERING                  0x0C40020B // (0x00B | ACT_FLAG_STATIONARY | ACT_FLAG_IDLE | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)\n#define ACT_IN_QUICKSAND               0x0002020D // (0x00D | ACT_FLAG_STATIONARY | ACT_FLAG_INVULNERABLE)\n#define ACT_UNKNOWN_0002020E           0x0002020E // (0x00E | ACT_FLAG_STATIONARY | ACT_FLAG_INVULNERABLE)\n#define ACT_CROUCHING                  0x0C008220 // (0x020 | ACT_FLAG_STATIONARY | ACT_FLAG_SHORT_HITBOX | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)\n#define ACT_START_CROUCHING            0x0C008221 // (0x021 | ACT_FLAG_STATIONARY | ACT_FLAG_SHORT_HITBOX | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)\n#define ACT_STOP_CROUCHING             0x0C008222 // (0x022 | ACT_FLAG_STATIONARY | ACT_FLAG_SHORT_HITBOX | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)\n#define ACT_START_CRAWLING             0x0C008223 // (0x023 | ACT_FLAG_STATIONARY | ACT_FLAG_SHORT_HITBOX | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)\n#define ACT_STOP_CRAWLING              0x0C008224 // (0x024 | ACT_FLAG_STATIONARY | ACT_FLAG_SHORT_HITBOX | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)\n#define ACT_SLIDE_KICK_SLIDE_STOP      0x08000225 // (0x025 | ACT_FLAG_STATIONARY | ACT_FLAG_PAUSE_EXIT)\n#define ACT_SHOCKWAVE_BOUNCE           0x00020226 // (0x026 | ACT_FLAG_STATIONARY | ACT_FLAG_INVULNERABLE)\n#define ACT_FIRST_PERSON               0x0C000227 // (0x027 | ACT_FLAG_STATIONARY | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)\n#define ACT_BACKFLIP_LAND_STOP         0x0800022F // (0x02F | ACT_FLAG_STATIONARY | ACT_FLAG_PAUSE_EXIT)\n#define ACT_JUMP_LAND_STOP             0x0C000230 // (0x030 | ACT_FLAG_STATIONARY | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)\n#define ACT_DOUBLE_JUMP_LAND_STOP      0x0C000231 // (0x031 | ACT_FLAG_STATIONARY | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)\n#define ACT_FREEFALL_LAND_STOP         0x0C000232 // (0x032 | ACT_FLAG_STATIONARY | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)\n#define ACT_SIDE_FLIP_LAND_STOP        0x0C000233 // (0x033 | ACT_FLAG_STATIONARY | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)\n#define ACT_HOLD_JUMP_LAND_STOP        0x08000234 // (0x034 | ACT_FLAG_STATIONARY | ACT_FLAG_PAUSE_EXIT)\n#define ACT_HOLD_FREEFALL_LAND_STOP    0x08000235 // (0x035 | ACT_FLAG_STATIONARY | ACT_FLAG_PAUSE_EXIT)\n#define ACT_AIR_THROW_LAND             0x80000A36 // (0x036 | ACT_FLAG_STATIONARY | ACT_FLAG_AIR | ACT_FLAG_THROWING)\n#define ACT_TWIRL_LAND                 0x18800238 // (0x038 | ACT_FLAG_STATIONARY | ACT_FLAG_ATTACKING | ACT_FLAG_PAUSE_EXIT | ACT_FLAG_SWIMMING_OR_FLYING)\n#define ACT_LAVA_BOOST_LAND            0x08000239 // (0x039 | ACT_FLAG_STATIONARY | ACT_FLAG_PAUSE_EXIT)\n#define ACT_TRIPLE_JUMP_LAND_STOP      0x0800023A // (0x03A | ACT_FLAG_STATIONARY | ACT_FLAG_PAUSE_EXIT)\n#define ACT_LONG_JUMP_LAND_STOP        0x0800023B // (0x03B | ACT_FLAG_STATIONARY | ACT_FLAG_PAUSE_EXIT)\n#define ACT_GROUND_POUND_LAND          0x0080023C // (0x03C | ACT_FLAG_STATIONARY | ACT_FLAG_ATTACKING)\n#define ACT_BRAKING_STOP               0x0C00023D // (0x03D | ACT_FLAG_STATIONARY | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)\n#define ACT_BUTT_SLIDE_STOP            0x0C00023E // (0x03E | ACT_FLAG_STATIONARY | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)\n#define ACT_HOLD_BUTT_SLIDE_STOP       0x0800043F // (0x03F | ACT_FLAG_MOVING | ACT_FLAG_PAUSE_EXIT)\n\n// group 0x040: moving (ground) actions\n#define ACT_WALKING                    0x04000440 // (0x040 | ACT_FLAG_MOVING | ACT_FLAG_ALLOW_FIRST_PERSON)\n#define ACT_HOLD_WALKING               0x00000442 // (0x042 | ACT_FLAG_MOVING)\n#define ACT_TURNING_AROUND             0x00000443 // (0x043 | ACT_FLAG_MOVING)\n#define ACT_FINISH_TURNING_AROUND      0x00000444 // (0x044 | ACT_FLAG_MOVING)\n#define ACT_BRAKING                    0x04000445 // (0x045 | ACT_FLAG_MOVING | ACT_FLAG_ALLOW_FIRST_PERSON)\n#define ACT_RIDING_SHELL_GROUND        0x20810446 // (0x046 | ACT_FLAG_MOVING | ACT_FLAG_RIDING_SHELL | ACT_FLAG_ATTACKING | ACT_FLAG_WATER_OR_TEXT)\n#define ACT_HOLD_HEAVY_WALKING         0x00000447 // (0x047 | ACT_FLAG_MOVING)\n#define ACT_CRAWLING                   0x04008448 // (0x048 | ACT_FLAG_MOVING | ACT_FLAG_SHORT_HITBOX | ACT_FLAG_ALLOW_FIRST_PERSON)\n#define ACT_BURNING_GROUND             0x00020449 // (0x049 | ACT_FLAG_MOVING | ACT_FLAG_INVULNERABLE)\n#define ACT_DECELERATING               0x0400044A // (0x04A | ACT_FLAG_MOVING | ACT_FLAG_ALLOW_FIRST_PERSON)\n#define ACT_HOLD_DECELERATING          0x0000044B // (0x04B | ACT_FLAG_MOVING)\n#define ACT_BEGIN_SLIDING              0x00000050 // (0x050)\n#define ACT_HOLD_BEGIN_SLIDING         0x00000051 // (0x051)\n#define ACT_BUTT_SLIDE                 0x00840452 // (0x052 | ACT_FLAG_MOVING | ACT_FLAG_BUTT_OR_STOMACH_SLIDE | ACT_FLAG_ATTACKING)\n#define ACT_STOMACH_SLIDE              0x008C0453 // (0x053 | ACT_FLAG_MOVING | ACT_FLAG_BUTT_OR_STOMACH_SLIDE | ACT_FLAG_DIVING | ACT_FLAG_ATTACKING)\n#define ACT_HOLD_BUTT_SLIDE            0x00840454 // (0x054 | ACT_FLAG_MOVING | ACT_FLAG_BUTT_OR_STOMACH_SLIDE | ACT_FLAG_ATTACKING)\n#define ACT_HOLD_STOMACH_SLIDE         0x008C0455 // (0x055 | ACT_FLAG_MOVING | ACT_FLAG_BUTT_OR_STOMACH_SLIDE | ACT_FLAG_DIVING | ACT_FLAG_ATTACKING)\n#define ACT_DIVE_SLIDE                 0x00880456 // (0x056 | ACT_FLAG_MOVING | ACT_FLAG_DIVING | ACT_FLAG_ATTACKING)\n#define ACT_MOVE_PUNCHING              0x00800457 // (0x057 | ACT_FLAG_MOVING | ACT_FLAG_ATTACKING)\n#define ACT_CROUCH_SLIDE               0x04808459 // (0x059 | ACT_FLAG_MOVING | ACT_FLAG_SHORT_HITBOX | ACT_FLAG_ATTACKING | ACT_FLAG_ALLOW_FIRST_PERSON)\n#define ACT_SLIDE_KICK_SLIDE           0x0080045A // (0x05A | ACT_FLAG_MOVING | ACT_FLAG_ATTACKING)\n#define ACT_HARD_BACKWARD_GROUND_KB    0x00020460 // (0x060 | ACT_FLAG_MOVING | ACT_FLAG_INVULNERABLE)\n#define ACT_HARD_FORWARD_GROUND_KB     0x00020461 // (0x061 | ACT_FLAG_MOVING | ACT_FLAG_INVULNERABLE)\n#define ACT_BACKWARD_GROUND_KB         0x00020462 // (0x062 | ACT_FLAG_MOVING | ACT_FLAG_INVULNERABLE)\n#define ACT_FORWARD_GROUND_KB          0x00020463 // (0x063 | ACT_FLAG_MOVING | ACT_FLAG_INVULNERABLE)\n#define ACT_SOFT_BACKWARD_GROUND_KB    0x00020464 // (0x064 | ACT_FLAG_MOVING | ACT_FLAG_INVULNERABLE)\n#define ACT_SOFT_FORWARD_GROUND_KB     0x00020465 // (0x065 | ACT_FLAG_MOVING | ACT_FLAG_INVULNERABLE)\n#define ACT_GROUND_BONK                0x00020466 // (0x066 | ACT_FLAG_MOVING | ACT_FLAG_INVULNERABLE)\n#define ACT_DEATH_EXIT_LAND            0x00020467 // (0x067 | ACT_FLAG_MOVING | ACT_FLAG_INVULNERABLE)\n#define ACT_JUMP_LAND                  0x04000470 // (0x070 | ACT_FLAG_MOVING | ACT_FLAG_ALLOW_FIRST_PERSON)\n#define ACT_FREEFALL_LAND              0x04000471 // (0x071 | ACT_FLAG_MOVING | ACT_FLAG_ALLOW_FIRST_PERSON)\n#define ACT_DOUBLE_JUMP_LAND           0x04000472 // (0x072 | ACT_FLAG_MOVING | ACT_FLAG_ALLOW_FIRST_PERSON)\n#define ACT_SIDE_FLIP_LAND             0x04000473 // (0x073 | ACT_FLAG_MOVING | ACT_FLAG_ALLOW_FIRST_PERSON)\n#define ACT_HOLD_JUMP_LAND             0x00000474 // (0x074 | ACT_FLAG_MOVING)\n#define ACT_HOLD_FREEFALL_LAND         0x00000475 // (0x075 | ACT_FLAG_MOVING)\n#define ACT_QUICKSAND_JUMP_LAND        0x00000476 // (0x076 | ACT_FLAG_MOVING)\n#define ACT_HOLD_QUICKSAND_JUMP_LAND   0x00000477 // (0x077 | ACT_FLAG_MOVING)\n#define ACT_TRIPLE_JUMP_LAND           0x04000478 // (0x078 | ACT_FLAG_MOVING | ACT_FLAG_ALLOW_FIRST_PERSON)\n#define ACT_LONG_JUMP_LAND             0x00000479 // (0x079 | ACT_FLAG_MOVING)\n#define ACT_BACKFLIP_LAND              0x0400047A // (0x07A | ACT_FLAG_MOVING | ACT_FLAG_ALLOW_FIRST_PERSON)\n\n// group 0x080: airborne actions\n#define ACT_JUMP                       0x03000880 // (0x080 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION | ACT_FLAG_CONTROL_JUMP_HEIGHT)\n#define ACT_DOUBLE_JUMP                0x03000881 // (0x081 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION | ACT_FLAG_CONTROL_JUMP_HEIGHT)\n#define ACT_TRIPLE_JUMP                0x01000882 // (0x082 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)\n#define ACT_BACKFLIP                   0x01000883 // (0x083 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)\n#define ACT_STEEP_JUMP                 0x03000885 // (0x085 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION | ACT_FLAG_CONTROL_JUMP_HEIGHT)\n#define ACT_WALL_KICK_AIR              0x03000886 // (0x086 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION | ACT_FLAG_CONTROL_JUMP_HEIGHT)\n#define ACT_SIDE_FLIP                  0x01000887 // (0x087 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)\n#define ACT_LONG_JUMP                  0x03000888 // (0x088 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION | ACT_FLAG_CONTROL_JUMP_HEIGHT)\n#define ACT_WATER_JUMP                 0x01000889 // (0x089 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)\n#define ACT_DIVE                       0x0188088A // (0x08A | ACT_FLAG_AIR | ACT_FLAG_DIVING | ACT_FLAG_ATTACKING | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)\n#define ACT_FREEFALL                   0x0100088C // (0x08C | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)\n#define ACT_TOP_OF_POLE_JUMP           0x0300088D // (0x08D | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION | ACT_FLAG_CONTROL_JUMP_HEIGHT)\n#define ACT_BUTT_SLIDE_AIR             0x0300088E // (0x08E | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION | ACT_FLAG_CONTROL_JUMP_HEIGHT)\n#define ACT_FLYING_TRIPLE_JUMP         0x03000894 // (0x094 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION | ACT_FLAG_CONTROL_JUMP_HEIGHT)\n#define ACT_SHOT_FROM_CANNON           0x00880898 // (0x098 | ACT_FLAG_AIR | ACT_FLAG_DIVING | ACT_FLAG_ATTACKING)\n#define ACT_FLYING                     0x10880899 // (0x099 | ACT_FLAG_AIR | ACT_FLAG_DIVING | ACT_FLAG_ATTACKING | ACT_FLAG_SWIMMING_OR_FLYING)\n#define ACT_RIDING_SHELL_JUMP          0x0281089A // (0x09A | ACT_FLAG_AIR | ACT_FLAG_RIDING_SHELL | ACT_FLAG_ATTACKING | ACT_FLAG_CONTROL_JUMP_HEIGHT)\n#define ACT_RIDING_SHELL_FALL          0x0081089B // (0x09B | ACT_FLAG_AIR | ACT_FLAG_RIDING_SHELL | ACT_FLAG_ATTACKING)\n#define ACT_VERTICAL_WIND              0x1008089C // (0x09C | ACT_FLAG_AIR | ACT_FLAG_DIVING | ACT_FLAG_SWIMMING_OR_FLYING)\n#define ACT_HOLD_JUMP                  0x030008A0 // (0x0A0 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION | ACT_FLAG_CONTROL_JUMP_HEIGHT)\n#define ACT_HOLD_FREEFALL              0x010008A1 // (0x0A1 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)\n#define ACT_HOLD_BUTT_SLIDE_AIR        0x010008A2 // (0x0A2 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)\n#define ACT_HOLD_WATER_JUMP            0x010008A3 // (0x0A3 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)\n#define ACT_TWIRLING                   0x108008A4 // (0x0A4 | ACT_FLAG_AIR | ACT_FLAG_ATTACKING | ACT_FLAG_SWIMMING_OR_FLYING)\n#define ACT_FORWARD_ROLLOUT            0x010008A6 // (0x0A6 | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)\n#define ACT_AIR_HIT_WALL               0x000008A7 // (0x0A7 | ACT_FLAG_AIR)\n#define ACT_RIDING_HOOT                0x000004A8 // (0x0A8 | ACT_FLAG_MOVING)\n#define ACT_GROUND_POUND               0x008008A9 // (0x0A9 | ACT_FLAG_AIR | ACT_FLAG_ATTACKING)\n#define ACT_SLIDE_KICK                 0x018008AA // (0x0AA | ACT_FLAG_AIR | ACT_FLAG_ATTACKING | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)\n#define ACT_AIR_THROW                  0x830008AB // (0x0AB | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION | ACT_FLAG_CONTROL_JUMP_HEIGHT | ACT_FLAG_THROWING)\n#define ACT_JUMP_KICK                  0x018008AC // (0x0AC | ACT_FLAG_AIR | ACT_FLAG_ATTACKING | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)\n#define ACT_BACKWARD_ROLLOUT           0x010008AD // (0x0AD | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)\n#define ACT_CRAZY_BOX_BOUNCE           0x000008AE // (0x0AE | ACT_FLAG_AIR)\n#define ACT_SPECIAL_TRIPLE_JUMP        0x030008AF // (0x0AF | ACT_FLAG_AIR | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION | ACT_FLAG_CONTROL_JUMP_HEIGHT)\n#define ACT_BACKWARD_AIR_KB            0x010208B0 // (0x0B0 | ACT_FLAG_AIR | ACT_FLAG_INVULNERABLE | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)\n#define ACT_FORWARD_AIR_KB             0x010208B1 // (0x0B1 | ACT_FLAG_AIR | ACT_FLAG_INVULNERABLE | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)\n#define ACT_HARD_FORWARD_AIR_KB        0x010208B2 // (0x0B2 | ACT_FLAG_AIR | ACT_FLAG_INVULNERABLE | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)\n#define ACT_HARD_BACKWARD_AIR_KB       0x010208B3 // (0x0B3 | ACT_FLAG_AIR | ACT_FLAG_INVULNERABLE | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)\n#define ACT_BURNING_JUMP               0x010208B4 // (0x0B4 | ACT_FLAG_AIR | ACT_FLAG_INVULNERABLE | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)\n#define ACT_BURNING_FALL               0x010208B5 // (0x0B5 | ACT_FLAG_AIR | ACT_FLAG_INVULNERABLE | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)\n#define ACT_SOFT_BONK                  0x010208B6 // (0x0B6 | ACT_FLAG_AIR | ACT_FLAG_INVULNERABLE | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)\n#define ACT_LAVA_BOOST                 0x010208B7 // (0x0B7 | ACT_FLAG_AIR | ACT_FLAG_INVULNERABLE | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)\n#define ACT_GETTING_BLOWN              0x010208B8 // (0x0B8 | ACT_FLAG_AIR | ACT_FLAG_INVULNERABLE | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)\n#define ACT_THROWN_FORWARD             0x010208BD // (0x0BD | ACT_FLAG_AIR | ACT_FLAG_INVULNERABLE | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)\n#define ACT_THROWN_BACKWARD            0x010208BE // (0x0BE | ACT_FLAG_AIR | ACT_FLAG_INVULNERABLE | ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)\n\n// group 0x0C0: submerged actions\n#define ACT_WATER_IDLE                 0x380022C0 // (0x0C0 | ACT_FLAG_STATIONARY | ACT_FLAG_SWIMMING | ACT_FLAG_PAUSE_EXIT | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)\n#define ACT_HOLD_WATER_IDLE            0x380022C1 // (0x0C1 | ACT_FLAG_STATIONARY | ACT_FLAG_SWIMMING | ACT_FLAG_PAUSE_EXIT | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)\n#define ACT_WATER_ACTION_END           0x300022C2 // (0x0C2 | ACT_FLAG_STATIONARY | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)\n#define ACT_HOLD_WATER_ACTION_END      0x300022C3 // (0x0C3 | ACT_FLAG_STATIONARY | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)\n#define ACT_DROWNING                   0x300032C4 // (0x0C4 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)\n#define ACT_BACKWARD_WATER_KB          0x300222C5 // (0x0C5 | ACT_FLAG_STATIONARY | ACT_FLAG_SWIMMING | ACT_FLAG_INVULNERABLE | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)\n#define ACT_FORWARD_WATER_KB           0x300222C6 // (0x0C6 | ACT_FLAG_STATIONARY | ACT_FLAG_SWIMMING | ACT_FLAG_INVULNERABLE | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)\n#define ACT_WATER_DEATH                0x300032C7 // (0x0C7 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)\n#define ACT_WATER_SHOCKED              0x300222C8 // (0x0C8 | ACT_FLAG_STATIONARY | ACT_FLAG_SWIMMING | ACT_FLAG_INVULNERABLE | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)\n#define ACT_BREASTSTROKE               0x300024D0 // (0x0D0 | ACT_FLAG_MOVING | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)\n#define ACT_SWIMMING_END               0x300024D1 // (0x0D1 | ACT_FLAG_MOVING | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)\n#define ACT_FLUTTER_KICK               0x300024D2 // (0x0D2 | ACT_FLAG_MOVING | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)\n#define ACT_HOLD_BREASTSTROKE          0x300024D3 // (0x0D3 | ACT_FLAG_MOVING | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)\n#define ACT_HOLD_SWIMMING_END          0x300024D4 // (0x0D4 | ACT_FLAG_MOVING | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)\n#define ACT_HOLD_FLUTTER_KICK          0x300024D5 // (0x0D5 | ACT_FLAG_MOVING | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)\n#define ACT_WATER_SHELL_SWIMMING       0x300024D6 // (0x0D6 | ACT_FLAG_MOVING | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)\n#define ACT_WATER_THROW                0x300024E0 // (0x0E0 | ACT_FLAG_MOVING | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)\n#define ACT_WATER_PUNCH                0x300024E1 // (0x0E1 | ACT_FLAG_MOVING | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)\n#define ACT_WATER_PLUNGE               0x300022E2 // (0x0E2 | ACT_FLAG_STATIONARY | ACT_FLAG_SWIMMING | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)\n#define ACT_CAUGHT_IN_WHIRLPOOL        0x300222E3 // (0x0E3 | ACT_FLAG_STATIONARY | ACT_FLAG_SWIMMING | ACT_FLAG_INVULNERABLE | ACT_FLAG_SWIMMING_OR_FLYING | ACT_FLAG_WATER_OR_TEXT)\n#define ACT_METAL_WATER_STANDING       0x080042F0 // (0x0F0 | ACT_FLAG_STATIONARY | ACT_FLAG_METAL_WATER | ACT_FLAG_PAUSE_EXIT)\n#define ACT_HOLD_METAL_WATER_STANDING  0x080042F1 // (0x0F1 | ACT_FLAG_STATIONARY | ACT_FLAG_METAL_WATER | ACT_FLAG_PAUSE_EXIT)\n#define ACT_METAL_WATER_WALKING        0x000044F2 // (0x0F2 | ACT_FLAG_MOVING | ACT_FLAG_METAL_WATER)\n#define ACT_HOLD_METAL_WATER_WALKING   0x000044F3 // (0x0F3 | ACT_FLAG_MOVING | ACT_FLAG_METAL_WATER)\n#define ACT_METAL_WATER_FALLING        0x000042F4 // (0x0F4 | ACT_FLAG_STATIONARY | ACT_FLAG_METAL_WATER)\n#define ACT_HOLD_METAL_WATER_FALLING   0x000042F5 // (0x0F5 | ACT_FLAG_STATIONARY | ACT_FLAG_METAL_WATER)\n#define ACT_METAL_WATER_FALL_LAND      0x000042F6 // (0x0F6 | ACT_FLAG_STATIONARY | ACT_FLAG_METAL_WATER)\n#define ACT_HOLD_METAL_WATER_FALL_LAND 0x000042F7 // (0x0F7 | ACT_FLAG_STATIONARY | ACT_FLAG_METAL_WATER)\n#define ACT_METAL_WATER_JUMP           0x000044F8 // (0x0F8 | ACT_FLAG_MOVING | ACT_FLAG_METAL_WATER)\n#define ACT_HOLD_METAL_WATER_JUMP      0x000044F9 // (0x0F9 | ACT_FLAG_MOVING | ACT_FLAG_METAL_WATER)\n#define ACT_METAL_WATER_JUMP_LAND      0x000044FA // (0x0FA | ACT_FLAG_MOVING | ACT_FLAG_METAL_WATER)\n#define ACT_HOLD_METAL_WATER_JUMP_LAND 0x000044FB // (0x0FB | ACT_FLAG_MOVING | ACT_FLAG_METAL_WATER)\n\n// group 0x100: cutscene actions\n#define ACT_DISAPPEARED                0x00001300 // (0x100 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)\n#define ACT_INTRO_CUTSCENE             0x04001301 // (0x101 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE | ACT_FLAG_ALLOW_FIRST_PERSON)\n#define ACT_STAR_DANCE_EXIT            0x00001302 // (0x102 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)\n#define ACT_STAR_DANCE_WATER           0x00001303 // (0x103 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)\n#define ACT_FALL_AFTER_STAR_GRAB       0x00001904 // (0x104 | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)\n#define ACT_READING_AUTOMATIC_DIALOG   0x20001305 // (0x105 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE | ACT_FLAG_WATER_OR_TEXT)\n#define ACT_READING_NPC_DIALOG         0x20001306 // (0x106 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE | ACT_FLAG_WATER_OR_TEXT)\n#define ACT_STAR_DANCE_NO_EXIT         0x00001307 // (0x107 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)\n#define ACT_READING_SIGN               0x00001308 // (0x108 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)\n#define ACT_JUMBO_STAR_CUTSCENE        0x00001909 // (0x109 | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)\n#define ACT_WAITING_FOR_DIALOG         0x0000130A // (0x10A | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)\n#define ACT_DEBUG_FREE_MOVE            0x0000130F // (0x10F | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)\n#define ACT_STANDING_DEATH             0x00021311 // (0x111 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE | ACT_FLAG_INVULNERABLE)\n#define ACT_QUICKSAND_DEATH            0x00021312 // (0x112 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE | ACT_FLAG_INVULNERABLE)\n#define ACT_ELECTROCUTION              0x00021313 // (0x113 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE | ACT_FLAG_INVULNERABLE)\n#define ACT_SUFFOCATION                0x00021314 // (0x114 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE | ACT_FLAG_INVULNERABLE)\n#define ACT_DEATH_ON_STOMACH           0x00021315 // (0x115 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE | ACT_FLAG_INVULNERABLE)\n#define ACT_DEATH_ON_BACK              0x00021316 // (0x116 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE | ACT_FLAG_INVULNERABLE)\n#define ACT_EATEN_BY_BUBBA             0x00021317 // (0x117 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE | ACT_FLAG_INVULNERABLE)\n#define ACT_END_PEACH_CUTSCENE         0x00001918 // (0x118 | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)\n#define ACT_CREDITS_CUTSCENE           0x00001319 // (0x119 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)\n#define ACT_END_WAVING_CUTSCENE        0x0000131A // (0x11A | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)\n#define ACT_PULLING_DOOR               0x00001320 // (0x120 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)\n#define ACT_PUSHING_DOOR               0x00001321 // (0x121 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)\n#define ACT_WARP_DOOR_SPAWN            0x00001322 // (0x122 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)\n#define ACT_EMERGE_FROM_PIPE           0x00001923 // (0x123 | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)\n#define ACT_SPAWN_SPIN_AIRBORNE        0x00001924 // (0x124 | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)\n#define ACT_SPAWN_SPIN_LANDING         0x00001325 // (0x125 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)\n#define ACT_EXIT_AIRBORNE              0x00001926 // (0x126 | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)\n#define ACT_EXIT_LAND_SAVE_DIALOG      0x00001327 // (0x127 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)\n#define ACT_DEATH_EXIT                 0x00001928 // (0x128 | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)\n#define ACT_UNUSED_DEATH_EXIT          0x00001929 // (0x129 | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)\n#define ACT_FALLING_DEATH_EXIT         0x0000192A // (0x12A | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)\n#define ACT_SPECIAL_EXIT_AIRBORNE      0x0000192B // (0x12B | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)\n#define ACT_SPECIAL_DEATH_EXIT         0x0000192C // (0x12C | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)\n#define ACT_FALLING_EXIT_AIRBORNE      0x0000192D // (0x12D | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)\n#define ACT_UNLOCKING_KEY_DOOR         0x0000132E // (0x12E | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)\n#define ACT_UNLOCKING_STAR_DOOR        0x0000132F // (0x12F | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)\n#define ACT_ENTERING_STAR_DOOR         0x00001331 // (0x131 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)\n#define ACT_SPAWN_NO_SPIN_AIRBORNE     0x00001932 // (0x132 | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)\n#define ACT_SPAWN_NO_SPIN_LANDING      0x00001333 // (0x133 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)\n#define ACT_BBH_ENTER_JUMP             0x00001934 // (0x134 | ACT_FLAG_AIR | ACT_FLAG_INTANGIBLE)\n#define ACT_BBH_ENTER_SPIN             0x00001535 // (0x135 | ACT_FLAG_MOVING | ACT_FLAG_INTANGIBLE)\n#define ACT_TELEPORT_FADE_OUT          0x00001336 // (0x136 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)\n#define ACT_TELEPORT_FADE_IN           0x00001337 // (0x137 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)\n#define ACT_SHOCKED                    0x00020338 // (0x138 | ACT_FLAG_STATIONARY | ACT_FLAG_INVULNERABLE)\n#define ACT_SQUISHED                   0x00020339 // (0x139 | ACT_FLAG_STATIONARY | ACT_FLAG_INVULNERABLE)\n#define ACT_HEAD_STUCK_IN_GROUND       0x0002033A // (0x13A | ACT_FLAG_STATIONARY | ACT_FLAG_INVULNERABLE)\n#define ACT_BUTT_STUCK_IN_GROUND       0x0002033B // (0x13B | ACT_FLAG_STATIONARY | ACT_FLAG_INVULNERABLE)\n#define ACT_FEET_STUCK_IN_GROUND       0x0002033C // (0x13C | ACT_FLAG_STATIONARY | ACT_FLAG_INVULNERABLE)\n#define ACT_PUTTING_ON_CAP             0x0000133D // (0x13D | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)\n\n// group 0x140: \"automatic\" actions\n#define ACT_HOLDING_POLE               0x08100340 // (0x140 | ACT_FLAG_STATIONARY | ACT_FLAG_ON_POLE | ACT_FLAG_PAUSE_EXIT)\n#define ACT_GRAB_POLE_SLOW             0x00100341 // (0x141 | ACT_FLAG_STATIONARY | ACT_FLAG_ON_POLE)\n#define ACT_GRAB_POLE_FAST             0x00100342 // (0x142 | ACT_FLAG_STATIONARY | ACT_FLAG_ON_POLE)\n#define ACT_CLIMBING_POLE              0x00100343 // (0x143 | ACT_FLAG_STATIONARY | ACT_FLAG_ON_POLE)\n#define ACT_TOP_OF_POLE_TRANSITION     0x00100344 // (0x144 | ACT_FLAG_STATIONARY | ACT_FLAG_ON_POLE)\n#define ACT_TOP_OF_POLE                0x00100345 // (0x145 | ACT_FLAG_STATIONARY | ACT_FLAG_ON_POLE)\n#define ACT_START_HANGING              0x08200348 // (0x148 | ACT_FLAG_STATIONARY | ACT_FLAG_HANGING | ACT_FLAG_PAUSE_EXIT)\n#define ACT_HANGING                    0x00200349 // (0x149 | ACT_FLAG_STATIONARY | ACT_FLAG_HANGING)\n#define ACT_HANG_MOVING                0x0020054A // (0x14A | ACT_FLAG_MOVING | ACT_FLAG_HANGING)\n#define ACT_LEDGE_GRAB                 0x0800034B // (0x14B | ACT_FLAG_STATIONARY | ACT_FLAG_PAUSE_EXIT)\n#define ACT_LEDGE_CLIMB_SLOW_1         0x0000054C // (0x14C | ACT_FLAG_MOVING)\n#define ACT_LEDGE_CLIMB_SLOW_2         0x0000054D // (0x14D | ACT_FLAG_MOVING)\n#define ACT_LEDGE_CLIMB_DOWN           0x0000054E // (0x14E | ACT_FLAG_MOVING)\n#define ACT_LEDGE_CLIMB_FAST           0x0000054F // (0x14F | ACT_FLAG_MOVING)\n#define ACT_GRABBED                    0x00020370 // (0x170 | ACT_FLAG_STATIONARY | ACT_FLAG_INVULNERABLE)\n#define ACT_IN_CANNON                  0x00001371 // (0x171 | ACT_FLAG_STATIONARY | ACT_FLAG_INTANGIBLE)\n#define ACT_TORNADO_TWIRLING           0x10020372 // (0x172 | ACT_FLAG_STATIONARY | ACT_FLAG_INVULNERABLE | ACT_FLAG_SWIMMING_OR_FLYING)\n\n// group 0x180: object actions\n#define ACT_PUNCHING                   0x00800380 // (0x180 | ACT_FLAG_STATIONARY | ACT_FLAG_ATTACKING)\n#define ACT_PICKING_UP                 0x00000383 // (0x183 | ACT_FLAG_STATIONARY)\n#define ACT_DIVE_PICKING_UP            0x00000385 // (0x185 | ACT_FLAG_STATIONARY)\n#define ACT_STOMACH_SLIDE_STOP         0x00000386 // (0x186 | ACT_FLAG_STATIONARY)\n#define ACT_PLACING_DOWN               0x00000387 // (0x187 | ACT_FLAG_STATIONARY)\n#define ACT_THROWING                   0x80000588 // (0x188 | ACT_FLAG_MOVING | ACT_FLAG_THROWING)\n#define ACT_HEAVY_THROW                0x80000589 // (0x189 | ACT_FLAG_MOVING | ACT_FLAG_THROWING)\n#define ACT_PICKING_UP_BOWSER          0x00000390 // (0x190 | ACT_FLAG_STATIONARY)\n#define ACT_HOLDING_BOWSER             0x00000391 // (0x191 | ACT_FLAG_STATIONARY)\n#define ACT_RELEASING_BOWSER           0x00000392 // (0x192 | ACT_FLAG_STATIONARY)\n\n/*\n this input mask is unused by the controller,\n but END_DEMO is used internally to signal\n the demo to end. This button cannot\n be pressed normally by a controller.\n*/\n#define END_DEMO       (1 << 7)\n\n#define VALID_BUTTONS (A_BUTTON   | B_BUTTON   | Z_TRIG     | START_BUTTON | \\\n                       U_JPAD     | D_JPAD     | L_JPAD     | R_JPAD       | \\\n                       L_TRIG     | R_TRIG     |                             \\\n                       U_CBUTTONS | D_CBUTTONS | L_CBUTTONS | R_CBUTTONS   )\n\n#define C_BUTTONS     (U_CBUTTONS | D_CBUTTONS | L_CBUTTONS | R_CBUTTONS   )\n\n#endif // SM64_H\n"
  },
  {
    "path": "include/sounds.h",
    "content": "#ifndef SOUNDS_H\n#define SOUNDS_H\n\n// Sound Magic Definition:\n// First Byte (Upper Nibble): Sound Bank (not the same as audio bank!)\n// First Byte (Lower Nibble): Bitflags for audio playback?\n// Second Byte: Sound ID\n// Third Byte: Priority\n// Fourth Byte (Upper Nibble): More bitflags\n// Fourth Byte (Lower Nibble): Sound Status (this is set to SOUND_STATUS_PLAYING when passed to the audio driver.)\n#define SOUND_ARG_LOAD(bank, soundID, priority, flags) (\\\n    ((u32) (bank) << 28) | \\\n    ((u32) (soundID) << 16) | \\\n    ((u32) (priority) << 8) | \\\n    (flags) | \\\n    SOUND_STATUS_WAITING)\n\n#define SOUNDARGS_MASK_BANK         0xF0000000\n#define SOUNDARGS_MASK_SOUNDID      0x00FF0000\n#define SOUNDARGS_MASK_PRIORITY     0x0000FF00\n#define SOUNDARGS_MASK_STATUS       0x0000000F\n\n#define SOUNDARGS_SHIFT_BANK        28\n#define SOUNDARGS_SHIFT_SOUNDID     16\n#define SOUNDARGS_SHIFT_PRIORITY    8\n\n/* Sound banks */\n#define SOUND_BANK_ACTION     0\n#define SOUND_BANK_MOVING     1\n#define SOUND_BANK_VOICE      2\n#define SOUND_BANK_GENERAL    3\n#define SOUND_BANK_ENV        4\n#define SOUND_BANK_OBJ        5\n#define SOUND_BANK_AIR        6\n#define SOUND_BANK_MENU       7\n#define SOUND_BANK_GENERAL2   8\n#define SOUND_BANK_OBJ2       9\n#define SOUND_BANK_COUNT     10\n\n#define SOUND_BANKS_ALL_BITS 0xffff\n#define SOUND_BANKS_ALL ((1 << SOUND_BANK_COUNT) - 1)\n#define SOUND_BANKS_FOREGROUND (\\\n    (1 << SOUND_BANK_ACTION) |\\\n    (1 << SOUND_BANK_VOICE) |\\\n    (1 << SOUND_BANK_MENU))\n#define SOUND_BANKS_BACKGROUND (SOUND_BANKS_ALL & ~SOUND_BANKS_FOREGROUND)\n#define SOUND_BANKS_DISABLED_DURING_INTRO_CUTSCENE (\\\n    (1 << SOUND_BANK_ENV) |\\\n    (1 << SOUND_BANK_OBJ) |\\\n    (1 << SOUND_BANK_GENERAL2) |\\\n    (1 << SOUND_BANK_OBJ2))\n#define SOUND_BANKS_DISABLED_AFTER_CREDITS (\\\n    (1 << SOUND_BANK_ACTION) |\\\n    (1 << SOUND_BANK_MOVING) |\\\n    (1 << SOUND_BANK_VOICE) |\\\n    (1 << SOUND_BANK_GENERAL))\n\n/* Audio playback bitflags. */\n#define SOUND_NO_VOLUME_LOSS        0x1000000 // No volume loss with distance\n#define SOUND_VIBRATO               0x2000000 // Randomly alter frequency each audio frame\n#define SOUND_NO_PRIORITY_LOSS      0x4000000 // Do not prioritize closer sounds\n#define SOUND_CONSTANT_FREQUENCY    0x8000000 // Frequency is not affected by distance or speed. If\n                                              // not set, frequency will increase with distance.\n                                              // For sounds in SOUND_BANK_MOVING, frequency will\n                                              // further increase with speed, and volume will\n                                              // decrease at slow speeds.\n\n/* Audio lower bitflags. */\n#define SOUND_LOWER_BACKGROUND_MUSIC  0x10 // Lower volume of background music while playing\n#define SOUND_NO_ECHO                 0x20 // Disable level reverb. Not in JP\n#define SOUND_DISCRETE                0x80 // Every call to play_sound restarts the sound. If not\n                                           // set, the sound is continuous and play_sound should be\n                                           // called at least every other frame to keep it playing\n\n/* Audio Status */\n#define SOUND_STATUS_STOPPED        0\n#define SOUND_STATUS_WAITING        1\n#define SOUND_STATUS_PLAYING        2\n\n/**\n * Terrain types. mario_get_terrain_sound_addend computes a\n * sound terrain type between 0 and 7, depending on the terrain type of the\n * level and the floor type that Mario is standing on. That value is then added\n * to the sound ID for the TERRAIN_* sounds.\n */\n#define SOUND_TERRAIN_DEFAULT   0 // e.g. air\n#define SOUND_TERRAIN_GRASS     1\n#define SOUND_TERRAIN_WATER     2\n#define SOUND_TERRAIN_STONE     3\n#define SOUND_TERRAIN_SPOOKY    4 // squeaky floor\n#define SOUND_TERRAIN_SNOW      5\n#define SOUND_TERRAIN_ICE       6\n#define SOUND_TERRAIN_SAND      7\n\n// silence\n#define NO_SOUND                    0\n\n/**\n * The table below defines all sounds that exist in the game, and which flags\n * they are used with. If a sound is used with multiple sets of flags (e.g.\n * different priorities), they are given distinguishing suffixes.\n * A _2 suffix means the sound is the same despite a different sound ID.\n */\n\n/* Terrain sounds */\n// Terrain-dependent moving sounds; a value 0-7 is added to the sound ID before\n// playing. See higher up for the different terrain types.\n#define SOUND_ACTION_TERRAIN_JUMP                /* 0x04008080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x00, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_ACTION_TERRAIN_LANDING             /* 0x04088080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x08, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_ACTION_TERRAIN_STEP                /* 0x06108080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x10, 0x80, SOUND_VIBRATO | SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_ACTION_TERRAIN_BODY_HIT_GROUND     /* 0x04188080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x18, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_ACTION_TERRAIN_STEP_TIPTOE         /* 0x06208080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x20, 0x80, SOUND_VIBRATO | SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_ACTION_TERRAIN_STUCK_IN_GROUND     /* 0x04488080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x48, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_ACTION_TERRAIN_HEAVY_LANDING       /* 0x04608080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x60, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n\n#define SOUND_ACTION_METAL_JUMP                  /* 0x04289080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x28, 0x90, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_ACTION_METAL_LANDING               /* 0x04299080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x29, 0x90, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_ACTION_METAL_STEP                  /* 0x042A9080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x2A, 0x90, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_ACTION_METAL_HEAVY_LANDING         /* 0x042B9080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x2B, 0x90, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_ACTION_CLAP_HANDS_COLD             /* 0x062C0080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x2C, 0x00, SOUND_VIBRATO | SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_ACTION_HANGING_STEP                /* 0x042DA080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x2D, 0xA0, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_ACTION_QUICKSAND_STEP              /* 0x042E0080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x2E, 0x00, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_ACTION_METAL_STEP_TIPTOE           /* 0x042F9080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x2F, 0x90, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_ACTION_UNKNOWN430                  /* 0x0430C080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x30, 0xC0, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_ACTION_UNKNOWN431                  /* 0x04316080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x31, 0x60, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_ACTION_UNKNOWN432                  /* 0x04328080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x32, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_ACTION_SWIM                        /* 0x04338080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x33, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_ACTION_UNKNOWN434                  /* 0x04348080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x34, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_ACTION_THROW                       /* 0x04358080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x35, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_ACTION_KEY_SWISH                   /* 0x04368080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x36, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_ACTION_SPIN                        /* 0x04378080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x37, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_ACTION_TWIRL                       /* 0x04388080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x38, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // same sound as spin\n#define SOUND_ACTION_CLIMB_UP_TREE               /* 0x043A8080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x3A, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_ACTION_CLIMB_DOWN_TREE             /* 0x003B0000 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x3B, 0x00, 0) // unverified, unused\n#define SOUND_ACTION_UNK3C                       /* 0x003C0000 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x3C, 0x00, 0) // unverified, unused\n#define SOUND_ACTION_UNKNOWN43D                  /* 0x043D8080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x3D, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_ACTION_UNKNOWN43E                  /* 0x043E8080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x3E, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_ACTION_PAT_BACK                    /* 0x043F8080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x3F, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_ACTION_BRUSH_HAIR                  /* 0x04408080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x40, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_ACTION_CLIMB_UP_POLE               /* 0x04418080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x41, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_ACTION_METAL_BONK                  /* 0x04428080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x42, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_ACTION_UNSTUCK_FROM_GROUND         /* 0x04438080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x43, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_ACTION_HIT                         /* 0x0444C080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x44, 0xC0, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_ACTION_HIT_2                       /* 0x0444B080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x44, 0xB0, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_ACTION_HIT_3                       /* 0x0444A080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x44, 0xA0, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_ACTION_BONK                        /* 0x0445A080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x45, 0xA0, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_ACTION_SHRINK_INTO_BBH             /* 0x0446A080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x46, 0xA0, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_ACTION_SWIM_FAST                   /* 0x0447A080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x47, 0xA0, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_ACTION_METAL_JUMP_WATER            /* 0x04509080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x50, 0x90, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_ACTION_METAL_LAND_WATER            /* 0x04519080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x51, 0x90, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_ACTION_METAL_STEP_WATER            /* 0x04529080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x52, 0x90, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_ACTION_UNK53                       /* 0x00530000 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x53, 0x00, 0) // unverified, unused\n#define SOUND_ACTION_UNK54                       /* 0x00540000 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x54, 0x00, 0) // unverified, unused\n#define SOUND_ACTION_UNK55                       /* 0x00550000 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x55, 0x00, 0) // unverified, unused\n#define SOUND_ACTION_FLYING_FAST                 /* 0x04568080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x56, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // \"swoop\"?, unverified\n#define SOUND_ACTION_TELEPORT                    /* 0x0457C080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x57, 0xC0, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_ACTION_UNKNOWN458                  /* 0x0458A080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x58, 0xA0, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_ACTION_BOUNCE_OFF_OBJECT           /* 0x0459B080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x59, 0xB0, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_ACTION_SIDE_FLIP_UNK               /* 0x045A8080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x5A, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_ACTION_READ_SIGN                   /* 0x045BFF80 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x5B, 0xFF, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_ACTION_UNKNOWN45C                  /* 0x045C8080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x5C, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_ACTION_UNK5D                       /* 0x005D0000 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x5D, 0x00, 0) // unverified, unused\n#define SOUND_ACTION_INTRO_UNK45E                /* 0x045E8080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x5E, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_ACTION_INTRO_UNK45F                /* 0x045F8080 */ SOUND_ARG_LOAD(SOUND_BANK_ACTION,   0x5F, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified\n\n/* Moving Sound Effects */\n\n// Terrain-dependent moving sounds; a value 0-7 is added to the sound ID before\n// playing. See higher up for the different terrain types.\n#define SOUND_MOVING_TERRAIN_SLIDE               /* 0x14000000 */ SOUND_ARG_LOAD(SOUND_BANK_MOVING,   0x00, 0x00, SOUND_NO_PRIORITY_LOSS)\n#define SOUND_MOVING_TERRAIN_RIDING_SHELL        /* 0x14200000 */ SOUND_ARG_LOAD(SOUND_BANK_MOVING,   0x20, 0x00, SOUND_NO_PRIORITY_LOSS)\n\n#define SOUND_MOVING_LAVA_BURN                   /* 0x14100000 */ SOUND_ARG_LOAD(SOUND_BANK_MOVING,   0x10, 0x00, SOUND_NO_PRIORITY_LOSS) // ?\n#define SOUND_MOVING_SLIDE_DOWN_POLE             /* 0x14110000 */ SOUND_ARG_LOAD(SOUND_BANK_MOVING,   0x11, 0x00, SOUND_NO_PRIORITY_LOSS) // ?\n#define SOUND_MOVING_SLIDE_DOWN_TREE             /* 0x14128000 */ SOUND_ARG_LOAD(SOUND_BANK_MOVING,   0x12, 0x80, SOUND_NO_PRIORITY_LOSS)\n#define SOUND_MOVING_QUICKSAND_DEATH             /* 0x14140000 */ SOUND_ARG_LOAD(SOUND_BANK_MOVING,   0x14, 0x00, SOUND_NO_PRIORITY_LOSS)\n#define SOUND_MOVING_SHOCKED                     /* 0x14160000 */ SOUND_ARG_LOAD(SOUND_BANK_MOVING,   0x16, 0x00, SOUND_NO_PRIORITY_LOSS)\n#define SOUND_MOVING_FLYING                      /* 0x14170000 */ SOUND_ARG_LOAD(SOUND_BANK_MOVING,   0x17, 0x00, SOUND_NO_PRIORITY_LOSS)\n#define SOUND_MOVING_ALMOST_DROWNING             /* 0x1C180000 */ SOUND_ARG_LOAD(SOUND_BANK_MOVING,   0x18, 0x00, SOUND_NO_PRIORITY_LOSS | SOUND_CONSTANT_FREQUENCY)\n#define SOUND_MOVING_AIM_CANNON                  /* 0x1D192000 */ SOUND_ARG_LOAD(SOUND_BANK_MOVING,   0x19, 0x20, SOUND_NO_VOLUME_LOSS | SOUND_NO_PRIORITY_LOSS | SOUND_CONSTANT_FREQUENCY)\n#define SOUND_MOVING_UNK1A                       /* 0x101A0000 */ SOUND_ARG_LOAD(SOUND_BANK_MOVING,   0x1A, 0x00, 0) // ?, unused\n#define SOUND_MOVING_RIDING_SHELL_LAVA           /* 0x14280000 */ SOUND_ARG_LOAD(SOUND_BANK_MOVING,   0x28, 0x00, SOUND_NO_PRIORITY_LOSS)\n\n/* Mario Sound Effects */\n// A random number 0-2 is added to the sound ID before playing, producing Yah/Wah/Hoo\n#define SOUND_MARIO_YAH_WAH_HOO                  /* 0x24008080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x00, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_MARIO_HOOHOO                       /* 0x24038080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x03, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_MARIO_YAHOO                        /* 0x24048080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x04, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_MARIO_UH                           /* 0x24058080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x05, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_MARIO_HRMM                         /* 0x24068080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x06, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_MARIO_WAH2                         /* 0x24078080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x07, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_MARIO_WHOA                         /* 0x2408C080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x08, 0xC0, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_MARIO_EEUH                         /* 0x24098080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x09, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_MARIO_ATTACKED                     /* 0x240AFF80 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x0A, 0xFF, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_MARIO_OOOF                         /* 0x240B8080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x0B, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_MARIO_OOOF2                        /* 0x240BD080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x0B, 0xD0, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_MARIO_HERE_WE_GO                   /* 0x240C8080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x0C, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_MARIO_YAWNING                      /* 0x240D8080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x0D, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_MARIO_SNORING1                     /* 0x240E8080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x0E, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_MARIO_SNORING2                     /* 0x240F8080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x0F, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_MARIO_WAAAOOOW                     /* 0x2410C080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x10, 0xC0, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_MARIO_HAHA                         /* 0x24118080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x11, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_MARIO_HAHA_2                       /* 0x2411F080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x11, 0xF0, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_MARIO_UH2                          /* 0x2413D080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x13, 0xD0, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_MARIO_UH2_2                        /* 0x24138080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x13, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_MARIO_ON_FIRE                      /* 0x2414A080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x14, 0xA0, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_MARIO_DYING                        /* 0x2415FF80 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x15, 0xFF, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_MARIO_PANTING_COLD                 /* 0x24168080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x16, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n\n// A random number 0-2 is added to the sound ID before playing\n#define SOUND_MARIO_PANTING                      /* 0x24188080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x18, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n\n#define SOUND_MARIO_COUGHING1                    /* 0x241B8080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x1B, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_MARIO_COUGHING2                    /* 0x241C8080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x1C, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_MARIO_COUGHING3                    /* 0x241D8080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x1D, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_MARIO_PUNCH_YAH                    /* 0x241E8080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x1E, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_MARIO_PUNCH_HOO                    /* 0x241F8080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x1F, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_MARIO_MAMA_MIA                     /* 0x24208080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x20, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_MARIO_OKEY_DOKEY                   /* 0x20210000 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x21, 0x00, 0) // unused\n#define SOUND_MARIO_GROUND_POUND_WAH             /* 0x24228080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x22, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_MARIO_DROWNING                     /* 0x2423F080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x23, 0xF0, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_MARIO_PUNCH_WAH                    /* 0x24248080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x24, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n\n/* Mario Sound Effects (US/EU only) */\n#define SOUND_PEACH_DEAR_MARIO                   /* 0x2428FF80 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x28, 0xFF, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n\n// A random number 0-4 is added to the sound ID before playing, producing one of\n// Yahoo! (60% chance), Waha! (20%), or Yippee! (20%).\n#define SOUND_MARIO_YAHOO_WAHA_YIPPEE            /* 0x242B8080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x2B, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n\n#define SOUND_MARIO_DOH                          /* 0x24308080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x30, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_MARIO_GAME_OVER                    /* 0x2431FF80 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x31, 0xFF, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_MARIO_HELLO                        /* 0x2432FF80 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x32, 0xFF, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_MARIO_PRESS_START_TO_PLAY          /* 0x2433FFA0 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x33, 0xFF, SOUND_NO_PRIORITY_LOSS | SOUND_NO_ECHO | SOUND_DISCRETE)\n#define SOUND_MARIO_TWIRL_BOUNCE                 /* 0x24348080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x34, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_MARIO_SNORING3                     /* 0x2435FF80 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x35, 0xFF, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_MARIO_SO_LONGA_BOWSER              /* 0x24368080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x36, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_MARIO_IMA_TIRED                    /* 0x24378080 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x37, 0x80, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n\n/* Princess Peach Sound Effects (US/EU only) */\n#define SOUND_PEACH_MARIO                        /* 0x2438FF80 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x38, 0xFF, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_PEACH_POWER_OF_THE_STARS           /* 0x2439FF80 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x39, 0xFF, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_PEACH_THANKS_TO_YOU                /* 0x243AFF80 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x3A, 0xFF, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_PEACH_THANK_YOU_MARIO              /* 0x243BFF80 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x3B, 0xFF, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_PEACH_SOMETHING_SPECIAL            /* 0x243CFF80 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x3C, 0xFF, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_PEACH_BAKE_A_CAKE                  /* 0x243DFF80 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x3D, 0xFF, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_PEACH_FOR_MARIO                    /* 0x243EFF80 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x3E, 0xFF, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n#define SOUND_PEACH_MARIO2                       /* 0x243FFF80 */ SOUND_ARG_LOAD(SOUND_BANK_VOICE,    0x3F, 0xFF, SOUND_NO_PRIORITY_LOSS | SOUND_DISCRETE)\n\n/* General Sound Effects */\n#define SOUND_GENERAL_ACTIVATE_CAP_SWITCH        /* 0x30008080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x00, 0x80, SOUND_DISCRETE)\n#define SOUND_GENERAL_FLAME_OUT                  /* 0x30038080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x03, 0x80, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_OPEN_WOOD_DOOR             /* 0x3004C080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x04, 0xC0, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_CLOSE_WOOD_DOOR            /* 0x3005C080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x05, 0xC0, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_OPEN_IRON_DOOR             /* 0x3006C080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x06, 0xC0, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_CLOSE_IRON_DOOR            /* 0x3007C080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x07, 0xC0, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_BUBBLES                    /* 0x30080000 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x08, 0x00, 0) // unverified, unused\n#define SOUND_GENERAL_MOVING_WATER               /* 0x30090080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x09, 0x00, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_SWISH_WATER                /* 0x300A0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x0A, 0x00, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_QUIET_BUBBLE               /* 0x300B0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x0B, 0x00, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_VOLCANO_EXPLOSION          /* 0x300C8080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x0C, 0x80, SOUND_DISCRETE)\n#define SOUND_GENERAL_QUIET_BUBBLE2              /* 0x300D0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x0D, 0x00, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_CASTLE_TRAP_OPEN           /* 0x300E8080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x0E, 0x80, SOUND_DISCRETE)\n#define SOUND_GENERAL_WALL_EXPLOSION             /* 0x300F0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x0F, 0x00, SOUND_DISCRETE)\n#define SOUND_GENERAL_COIN                       /* 0x38118080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x11, 0x80, SOUND_CONSTANT_FREQUENCY | SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_COIN_WATER                 /* 0x38128080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x12, 0x80, SOUND_CONSTANT_FREQUENCY | SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_SHORT_STAR                 /* 0x30160090 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x16, 0x00, SOUND_LOWER_BACKGROUND_MUSIC | SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_BIG_CLOCK                  /* 0x30170080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x17, 0x00, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_LOUD_POUND                 /* 0x30180000 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x18, 0x00, 0) // _TERRAIN?, unverified, unused\n#define SOUND_GENERAL_LOUD_POUND2                /* 0x30190000 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x19, 0x00, 0) // unverified, unused\n#define SOUND_GENERAL_SHORT_POUND1               /* 0x301A0000 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x1A, 0x00, 0) // unverified, unused\n#define SOUND_GENERAL_SHORT_POUND2               /* 0x301B0000 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x1B, 0x00, 0) // unverified, unused\n#define SOUND_GENERAL_SHORT_POUND3               /* 0x301C0000 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x1C, 0x00, 0) // unverified, unused\n#define SOUND_GENERAL_SHORT_POUND4               /* 0x301D0000 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x1D, 0x00, 0) // unverified, unused\n#define SOUND_GENERAL_SHORT_POUND5               /* 0x301E0000 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x1E, 0x00, 0) // unverified, unused\n#define SOUND_GENERAL_SHORT_POUND6               /* 0x301F0000 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x1F, 0x00, 0) // unverified, unused\n#define SOUND_GENERAL_OPEN_CHEST                 /* 0x31208080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x20, 0x80, SOUND_NO_VOLUME_LOSS | SOUND_DISCRETE)\n#define SOUND_GENERAL_CLAM_SHELL1                /* 0x31228080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x22, 0x80, SOUND_NO_VOLUME_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_BOX_LANDING                /* 0x30240080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x24, 0x00, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_BOX_LANDING_2              /* 0x32240080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x24, 0x00, SOUND_VIBRATO | SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_UNKNOWN1                   /* 0x30250080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x25, 0x00, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_UNKNOWN1_2                 /* 0x32250080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x25, 0x00, SOUND_VIBRATO | SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_CLAM_SHELL2                /* 0x30264080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x26, 0x40, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_CLAM_SHELL3                /* 0x30274080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x27, 0x40, SOUND_DISCRETE) // unverified\n#ifdef VERSION_JP\n#define SOUND_GENERAL_PAINTING_EJECT             /* 0x38280080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x28, 0x00, SOUND_CONSTANT_FREQUENCY | SOUND_DISCRETE)\n#else\n#define SOUND_GENERAL_PAINTING_EJECT             /* 0x39280080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x28, 0x00, SOUND_NO_VOLUME_LOSS | SOUND_CONSTANT_FREQUENCY | SOUND_DISCRETE)\n#endif\n#define SOUND_GENERAL_LEVEL_SELECT_CHANGE        /* 0x302B0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x2B, 0x00, SOUND_DISCRETE)\n#define SOUND_GENERAL_PLATFORM                   /* 0x302D8080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x2D, 0x80, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_DONUT_PLATFORM_EXPLOSION   /* 0x302E2080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x2E, 0x20, SOUND_DISCRETE)\n#define SOUND_GENERAL_BOWSER_BOMB_EXPLOSION      /* 0x312F0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x2F, 0x00, SOUND_NO_VOLUME_LOSS | SOUND_DISCRETE)\n#if defined(VERSION_JP)\n#define SOUND_GENERAL_COIN_SPURT                 /* 0x30300080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x30, 0x00, SOUND_DISCRETE) // unverified\n#elif defined(VERSION_US)\n#define SOUND_GENERAL_COIN_SPURT                 /* 0x38300080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x30, 0x00, SOUND_CONSTANT_FREQUENCY | SOUND_DISCRETE) // unverified\n#else\n#define SOUND_GENERAL_COIN_SPURT                 /* 0x38302080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x30, 0x20, SOUND_CONSTANT_FREQUENCY | SOUND_DISCRETE) // unverified\n#endif\n#define SOUND_GENERAL_EXPLOSION6                 /* 0x30310000 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x31, 0x00, 0) // unverified, unused\n#define SOUND_GENERAL_UNK32                      /* 0x30320000 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x32, 0x00, 0) // unverified, unused\n#define SOUND_GENERAL_BOAT_TILT1                 /* 0x30344080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x34, 0x40, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_BOAT_TILT2                 /* 0x30354080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x35, 0x40, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_COIN_DROP                  /* 0x30364080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x36, 0x40, SOUND_DISCRETE) // unverified\n#ifdef VERSION_JP\n#define SOUND_GENERAL_UNKNOWN3                   /* 0x30370080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x37, 0x00, SOUND_DISCRETE) // unverified\n#else\n#define SOUND_GENERAL_UNKNOWN3                   /* 0x38378080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x37, 0x80, SOUND_CONSTANT_FREQUENCY | SOUND_DISCRETE) // unverified\n#endif\n#define SOUND_GENERAL_PENDULUM_SWING             /* 0x30380080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x38, 0x00, SOUND_DISCRETE)\n#define SOUND_GENERAL_CHAIN_CHOMP1               /* 0x30390080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x39, 0x00, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_CHAIN_CHOMP2               /* 0x303A0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x3A, 0x00, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_DOOR_TURN_KEY              /* 0x303B0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x3B, 0x00, SOUND_DISCRETE)\n#define SOUND_GENERAL_MOVING_IN_SAND             /* 0x303C0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x3C, 0x00, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_UNKNOWN4_LOWPRIO           /* 0x303D0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x3D, 0x00, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_UNKNOWN4                   /* 0x303D8080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x3D, 0x80, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_MOVING_PLATFORM_SWITCH     /* 0x303E0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x3E, 0x00, SOUND_DISCRETE)\n#define SOUND_GENERAL_CAGE_OPEN                  /* 0x303FA080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x3F, 0xA0, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_QUIET_POUND1_LOWPRIO       /* 0x30400080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x40, 0x00, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_QUIET_POUND1               /* 0x30404080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x40, 0x40, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_BREAK_BOX                  /* 0x3041C080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x41, 0xC0, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_DOOR_INSERT_KEY            /* 0x30420080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x42, 0x00, SOUND_DISCRETE)\n#define SOUND_GENERAL_QUIET_POUND2               /* 0x30430080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x43, 0x00, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_BIG_POUND                  /* 0x30440080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x44, 0x00, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_UNK45                      /* 0x30450080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x45, 0x00, SOUND_DISCRETE) // unverified\n#ifdef VERSION_JP\n#define SOUND_GENERAL_UNK46                      /* 0x30460080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x46, 0x00, SOUND_DISCRETE) // unverified\n#else\n#define SOUND_GENERAL_UNK46                      /* 0x30468080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x46, 0x80, SOUND_DISCRETE) // unverified\n#endif\n#define SOUND_GENERAL_CANNON_UP                  /* 0x30478080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x47, 0x80, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_GRINDEL_ROLL               /* 0x30480080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x48, 0x00, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_EXPLOSION7                 /* 0x30490000 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x49, 0x00, 0) // unverified, unused\n#define SOUND_GENERAL_SHAKE_COFFIN               /* 0x304A0000 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x4A, 0x00, 0) // unverified, unused\n#define SOUND_GENERAL_RACE_GUN_SHOT              /* 0x314D4080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x4D, 0x40, SOUND_NO_VOLUME_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_STAR_DOOR_OPEN             /* 0x304EC080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x4E, 0xC0, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_STAR_DOOR_CLOSE            /* 0x304FC080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x4F, 0xC0, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_POUND_ROCK                 /* 0x30560080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x56, 0x00, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_STAR_APPEARS               /* 0x3057FF90 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x57, 0xFF, SOUND_LOWER_BACKGROUND_MUSIC | SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_COLLECT_1UP                /* 0x3058FF80 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x58, 0xFF, SOUND_DISCRETE)\n#define SOUND_GENERAL_BUTTON_PRESS_LOWPRIO       /* 0x305A0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x5A, 0x00, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_BUTTON_PRESS               /* 0x305A4080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x5A, 0x40, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_BUTTON_PRESS_2_LOWPRIO     /* 0x315A0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x5A, 0x00, SOUND_NO_VOLUME_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_BUTTON_PRESS_2             /* 0x315A4080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x5A, 0x40, SOUND_NO_VOLUME_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_ELEVATOR_MOVE              /* 0x305B0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x5B, 0x00, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_ELEVATOR_MOVE_2            /* 0x315B0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x5B, 0x00, SOUND_NO_VOLUME_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_SWISH_AIR                  /* 0x305C0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x5C, 0x00, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_SWISH_AIR_2                /* 0x315C0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x5C, 0x00, SOUND_NO_VOLUME_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_HAUNTED_CHAIR              /* 0x305D0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x5D, 0x00, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_SOFT_LANDING               /* 0x305E0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x5E, 0x00, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_HAUNTED_CHAIR_MOVE         /* 0x305F0080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x5F, 0x00, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_BOWSER_PLATFORM            /* 0x30628080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x62, 0x80, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_BOWSER_PLATFORM_2          /* 0x31628080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x62, 0x80, SOUND_NO_VOLUME_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_HEART_SPIN                 /* 0x3064C080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x64, 0xC0, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_POUND_WOOD_POST            /* 0x3065C080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x65, 0xC0, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_WATER_LEVEL_TRIG           /* 0x30668080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x66, 0x80, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_SWITCH_DOOR_OPEN           /* 0x3067A080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x67, 0xA0, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_RED_COIN                   /* 0x30689080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x68, 0x90, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_BIRDS_FLY_AWAY             /* 0x30690080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x69, 0x00, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_METAL_POUND                /* 0x306B8080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x6B, 0x80, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_BOING1                     /* 0x306C4080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x6C, 0x40, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_BOING2_LOWPRIO             /* 0x306D2080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x6D, 0x20, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_BOING2                     /* 0x306D4080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x6D, 0x40, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_YOSHI_WALK                 /* 0x306E2080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x6E, 0x20, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_ENEMY_ALERT1               /* 0x306F3080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x6F, 0x30, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_YOSHI_TALK                 /* 0x30703080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x70, 0x30, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_SPLATTERING                /* 0x30713080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x71, 0x30, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_BOING3                     /* 0x30720000 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x72, 0x00, 0) // unverified, unused\n#define SOUND_GENERAL_GRAND_STAR                 /* 0x30730080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x73, 0x00, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_GRAND_STAR_JUMP            /* 0x30740080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x74, 0x00, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_BOAT_ROCK                  /* 0x30750080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x75, 0x00, SOUND_DISCRETE) // unverified\n#define SOUND_GENERAL_VANISH_SFX                 /* 0x30762080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL,  0x76, 0x20, SOUND_DISCRETE) // unverified\n\n/* Environment Sound Effects */\n#define SOUND_ENV_WATERFALL1                     /* 0x40000000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x00, 0x00, 0) // unverified\n#define SOUND_ENV_WATERFALL2                     /* 0x40010000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x01, 0x00, 0) // unverified\n#define SOUND_ENV_ELEVATOR1                      /* 0x40020000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x02, 0x00, 0) // unverified\n#define SOUND_ENV_DRONING1                       /* 0x41030000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x03, 0x00, SOUND_NO_VOLUME_LOSS) // unverified\n#define SOUND_ENV_DRONING2                       /* 0x40040000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x04, 0x00, 0) // unverified\n#define SOUND_ENV_WIND1                          /* 0x40050000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x05, 0x00, 0) // unverified\n#define SOUND_ENV_MOVING_SAND_SNOW               /* 0x40060000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x06, 0x00, 0) // unverified, unused\n#define SOUND_ENV_UNK07                          /* 0x40070000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x07, 0x00, 0) // unverified, unused\n#define SOUND_ENV_ELEVATOR2                      /* 0x40080000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x08, 0x00, 0) // unverified\n#define SOUND_ENV_WATER                          /* 0x40090000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x09, 0x00, 0) // unverified\n#define SOUND_ENV_UNKNOWN2                       /* 0x400A0000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x0A, 0x00, 0) // unverified\n#define SOUND_ENV_BOAT_ROCKING1                  /* 0x400B0000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x0B, 0x00, 0) // unverified\n#define SOUND_ENV_ELEVATOR3                      /* 0x400C0000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x0C, 0x00, 0) // unverified\n#define SOUND_ENV_ELEVATOR4                      /* 0x400D0000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x0D, 0x00, 0) // unverified\n#define SOUND_ENV_ELEVATOR4_2                    /* 0x410D0000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x0D, 0x00, SOUND_NO_VOLUME_LOSS) // unverified\n#define SOUND_ENV_MOVINGSAND                     /* 0x400E0000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x0E, 0x00, 0) // unverified\n#define SOUND_ENV_MERRY_GO_ROUND_CREAKING        /* 0x400F4000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x0F, 0x40, 0) // unverified\n#define SOUND_ENV_WIND2                          /* 0x40108000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x10, 0x80, 0) // unverified\n#define SOUND_ENV_UNK12                          /* 0x40120000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x12, 0x00, 0) // unverified, unused\n#define SOUND_ENV_SLIDING                        /* 0x40130000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x13, 0x00, 0) // unverified\n#define SOUND_ENV_STAR                           /* 0x40140010 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x14, 0x00, SOUND_LOWER_BACKGROUND_MUSIC) // unverified\n#define SOUND_ENV_MOVING_BIG_PLATFORM            /* 0x41150000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x15, 0x00, SOUND_NO_VOLUME_LOSS) // unverified\n#define SOUND_ENV_WATER_DRAIN                    /* 0x41160000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x16, 0x00, SOUND_NO_VOLUME_LOSS) // unverified\n#define SOUND_ENV_METAL_BOX_PUSH                 /* 0x40178000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x17, 0x80, 0) // unverified\n#define SOUND_ENV_SINK_QUICKSAND                 /* 0x40188000 */ SOUND_ARG_LOAD(SOUND_BANK_ENV,      0x18, 0x80, 0) // unverified\n\n/* Object Sound Effects */\n#define SOUND_OBJ_SUSHI_SHARK_WATER_SOUND        /* 0x50008080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x00, 0x80, SOUND_DISCRETE)\n#define SOUND_OBJ_MRI_SHOOT                      /* 0x50010080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x01, 0x00, SOUND_DISCRETE)\n#define SOUND_OBJ_BABY_PENGUIN_WALK              /* 0x50020080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x02, 0x00, SOUND_DISCRETE)\n#define SOUND_OBJ_BOWSER_WALK                    /* 0x50030080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x03, 0x00, SOUND_DISCRETE)\n#define SOUND_OBJ_BOWSER_TAIL_PICKUP             /* 0x50050080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x05, 0x00, SOUND_DISCRETE)\n#define SOUND_OBJ_BOWSER_DEFEATED                /* 0x50060080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x06, 0x00, SOUND_DISCRETE)\n#define SOUND_OBJ_BOWSER_SPINNING                /* 0x50070080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x07, 0x00, SOUND_DISCRETE)\n#define SOUND_OBJ_BOWSER_INHALING                /* 0x50080080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x08, 0x00, SOUND_DISCRETE)\n#define SOUND_OBJ_BIG_PENGUIN_WALK               /* 0x50098080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x09, 0x80, SOUND_DISCRETE)\n#define SOUND_OBJ_BOO_BOUNCE_TOP                 /* 0x500A0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x0A, 0x00, SOUND_DISCRETE)\n#define SOUND_OBJ_BOO_LAUGH_SHORT                /* 0x500B0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x0B, 0x00, SOUND_DISCRETE)\n#define SOUND_OBJ_THWOMP                         /* 0x500CA080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x0C, 0xA0, SOUND_DISCRETE)\n#define SOUND_OBJ_CANNON1                        /* 0x500DF080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x0D, 0xF0, SOUND_DISCRETE) // unverified\n#define SOUND_OBJ_CANNON2                        /* 0x500EF080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x0E, 0xF0, SOUND_DISCRETE) // unverified\n#define SOUND_OBJ_CANNON3                        /* 0x500FF080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x0F, 0xF0, SOUND_DISCRETE) // unverified\n#define SOUND_OBJ_JUMP_WALK_WATER                /* 0x50120000 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x12, 0x00, 0) // unverified, unused\n#define SOUND_OBJ_UNKNOWN2                       /* 0x50130080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x13, 0x00, SOUND_DISCRETE) // unverified\n#define SOUND_OBJ_MRI_DEATH                      /* 0x50140080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x14, 0x00, SOUND_DISCRETE)\n#define SOUND_OBJ_POUNDING1                      /* 0x50155080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x15, 0x50, SOUND_DISCRETE) // unverified\n#define SOUND_OBJ_POUNDING1_HIGHPRIO             /* 0x50158080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x15, 0x80, SOUND_DISCRETE) // unverified\n#define SOUND_OBJ_WHOMP                          /* 0x50166080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x16, 0x60, SOUND_DISCRETE)\n#define SOUND_OBJ_KING_BOBOMB                    /* 0x50168080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x16, 0x80, SOUND_DISCRETE)\n#define SOUND_OBJ_BULLY_METAL                    /* 0x50178080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x17, 0x80, SOUND_DISCRETE) // unverified\n#define SOUND_OBJ_BULLY_EXPLODE                  /* 0x5018A080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x18, 0xA0, SOUND_DISCRETE) // unverified\n#define SOUND_OBJ_BULLY_EXPLODE_2                /* 0x5118A080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x18, 0xA0, SOUND_NO_VOLUME_LOSS | SOUND_DISCRETE) // unverified\n#define SOUND_OBJ_POUNDING_CANNON                /* 0x501A5080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x1A, 0x50, SOUND_DISCRETE) // unverified\n#define SOUND_OBJ_BULLY_WALK                     /* 0x501B3080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x1B, 0x30, SOUND_DISCRETE) // unverified\n#define SOUND_OBJ_UNKNOWN3                       /* 0x501D8080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x1D, 0x80, SOUND_DISCRETE) // unverified\n#define SOUND_OBJ_UNKNOWN4                       /* 0x501EA080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x1E, 0xA0, SOUND_DISCRETE) // unverified\n#define SOUND_OBJ_BABY_PENGUIN_DIVE              /* 0x501F4080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x1F, 0x40, SOUND_DISCRETE)\n#define SOUND_OBJ_GOOMBA_WALK                    /* 0x50200080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x20, 0x00, SOUND_DISCRETE)\n#define SOUND_OBJ_UKIKI_CHATTER_LONG             /* 0x50210080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x21, 0x00, SOUND_DISCRETE)\n#define SOUND_OBJ_MONTY_MOLE_ATTACK              /* 0x50220080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x22, 0x00, SOUND_DISCRETE)\n#define SOUND_OBJ_EVIL_LAKITU_THROW              /* 0x50222080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x22, 0x20, SOUND_DISCRETE)\n#define SOUND_OBJ_UNK23                          /* 0x50230000 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x23, 0x00, 0) // unverified, unused\n#define SOUND_OBJ_DYING_ENEMY1                   /* 0x50244080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x24, 0x40, SOUND_DISCRETE)\n#define SOUND_OBJ_CANNON4                        /* 0x50254080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x25, 0x40, SOUND_DISCRETE) // unverified\n#define SOUND_OBJ_DYING_ENEMY2                   /* 0x50260000 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x26, 0x00, 0) // unverified, unused\n#define SOUND_OBJ_BOBOMB_WALK                    /* 0x50270080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x27, 0x00, SOUND_DISCRETE)\n#define SOUND_OBJ_SOMETHING_LANDING              /* 0x50288080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x28, 0x80, SOUND_DISCRETE) // unverified\n#define SOUND_OBJ_DIVING_IN_WATER                /* 0x5029A080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x29, 0xA0, SOUND_DISCRETE) // unverified\n#define SOUND_OBJ_SNOW_SAND1                     /* 0x502A0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x2A, 0x00, SOUND_DISCRETE) // unverified\n#define SOUND_OBJ_SNOW_SAND2                     /* 0x502B0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x2B, 0x00, SOUND_DISCRETE) // unverified\n#define SOUND_OBJ_DEFAULT_DEATH                  /* 0x502C8080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x2C, 0x80, SOUND_DISCRETE)\n#define SOUND_OBJ_BIG_PENGUIN_YELL               /* 0x502D0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x2D, 0x00, SOUND_DISCRETE)\n#define SOUND_OBJ_WATER_BOMB_BOUNCING            /* 0x502E8080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x2E, 0x80, SOUND_DISCRETE)\n#define SOUND_OBJ_GOOMBA_ALERT                   /* 0x502F0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x2F, 0x00, SOUND_DISCRETE)\n#define SOUND_OBJ_WIGGLER_JUMP                   /* 0x502F6080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x2F, 0x60, SOUND_DISCRETE)\n#define SOUND_OBJ_STOMPED                        /* 0x50308080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x30, 0x80, SOUND_DISCRETE) // unverified\n#define SOUND_OBJ_UNKNOWN6                       /* 0x50310080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x31, 0x00, SOUND_DISCRETE) // unverified\n#define SOUND_OBJ_DIVING_INTO_WATER              /* 0x50324080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x32, 0x40, SOUND_DISCRETE) // unverified\n#define SOUND_OBJ_PIRANHA_PLANT_SHRINK           /* 0x50334080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x33, 0x40, SOUND_DISCRETE)\n#define SOUND_OBJ_KOOPA_THE_QUICK_WALK           /* 0x50342080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x34, 0x20, SOUND_DISCRETE)\n#define SOUND_OBJ_KOOPA_WALK                     /* 0x50350080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x35, 0x00, SOUND_DISCRETE)\n#define SOUND_OBJ_BULLY_WALKING                  /* 0x50366080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x36, 0x60, SOUND_DISCRETE)\n#define SOUND_OBJ_DORRIE                         /* 0x50376080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x37, 0x60, SOUND_DISCRETE)\n#define SOUND_OBJ_BOWSER_LAUGH                   /* 0x50388080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x38, 0x80, SOUND_DISCRETE)\n#define SOUND_OBJ_UKIKI_CHATTER_SHORT            /* 0x50390080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x39, 0x00, SOUND_DISCRETE)\n#define SOUND_OBJ_UKIKI_CHATTER_IDLE             /* 0x503A0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x3A, 0x00, SOUND_DISCRETE)\n#define SOUND_OBJ_UKIKI_STEP_DEFAULT             /* 0x503B0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x3B, 0x00, SOUND_DISCRETE)\n#define SOUND_OBJ_UKIKI_STEP_LEAVES              /* 0x503C0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x3C, 0x00, SOUND_DISCRETE)\n#define SOUND_OBJ_KOOPA_TALK                     /* 0x503DA080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x3D, 0xA0, SOUND_DISCRETE)\n#define SOUND_OBJ_KOOPA_DAMAGE                   /* 0x503EA080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x3E, 0xA0, SOUND_DISCRETE)\n#define SOUND_OBJ_KLEPTO1                        /* 0x503F4080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x3F, 0x40, SOUND_DISCRETE) // unverified\n#define SOUND_OBJ_KLEPTO2                        /* 0x50406080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x40, 0x60, SOUND_DISCRETE) // unverified\n#define SOUND_OBJ_KING_BOBOMB_TALK               /* 0x50410080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x41, 0x00, SOUND_DISCRETE)\n#define SOUND_OBJ_KING_BOBOMB_JUMP               /* 0x50468080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x46, 0x80, SOUND_DISCRETE)\n#define SOUND_OBJ_KING_WHOMP_DEATH               /* 0x5147C080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x47, 0xC0, SOUND_NO_VOLUME_LOSS | SOUND_DISCRETE)\n#define SOUND_OBJ_BOO_LAUGH_LONG                 /* 0x50480080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x48, 0x00, SOUND_DISCRETE)\n#define SOUND_OBJ_EEL                            /* 0x504A0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x4A, 0x00, SOUND_DISCRETE) // unverified\n#define SOUND_OBJ_EEL_2                          /* 0x524A0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x4A, 0x00, SOUND_VIBRATO | SOUND_DISCRETE) // unverified\n#define SOUND_OBJ_EYEROK_SHOW_EYE                /* 0x524B0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x4B, 0x00, SOUND_VIBRATO | SOUND_DISCRETE)\n#define SOUND_OBJ_MR_BLIZZARD_ALERT              /* 0x504C0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x4C, 0x00, SOUND_DISCRETE)\n#define SOUND_OBJ_SNUFIT_SHOOT                   /* 0x504D0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x4D, 0x00, SOUND_DISCRETE)\n#define SOUND_OBJ_SKEETER_WALK                   /* 0x504E0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x4E, 0x00, SOUND_DISCRETE)\n#define SOUND_OBJ_WALKING_WATER                  /* 0x504F0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x4F, 0x00, SOUND_DISCRETE) // unverified\n#define SOUND_OBJ_BIRD_CHIRP3                    /* 0x50514000 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x51, 0x40, 0)\n#define SOUND_OBJ_PIRANHA_PLANT_APPEAR           /* 0x50542080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x54, 0x20, SOUND_DISCRETE)\n#define SOUND_OBJ_FLAME_BLOWN                    /* 0x50558080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x55, 0x80, SOUND_DISCRETE)\n#define SOUND_OBJ_MAD_PIANO_CHOMPING             /* 0x52564080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x56, 0x40, SOUND_VIBRATO | SOUND_DISCRETE)\n#define SOUND_OBJ_BOBOMB_BUDDY_TALK              /* 0x50584080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x58, 0x40, SOUND_DISCRETE)\n#define SOUND_OBJ_SPINY_UNK59                    /* 0x50591080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x59, 0x10, SOUND_DISCRETE) // unverified\n#define SOUND_OBJ_WIGGLER_HIGH_PITCH             /* 0x505C4080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x5C, 0x40, SOUND_DISCRETE)\n#define SOUND_OBJ_HEAVEHO_TOSSED                 /* 0x505D4080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x5D, 0x40, SOUND_DISCRETE)\n#define SOUND_OBJ_WIGGLER_DEATH                  /* 0x505E0000 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x5E, 0x00, 0) // unverified, unused\n#define SOUND_OBJ_BOWSER_INTRO_LAUGH             /* 0x505F8090 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x5F, 0x80, SOUND_LOWER_BACKGROUND_MUSIC | SOUND_DISCRETE)\n#define SOUND_OBJ_ENEMY_DEATH_HIGH               /* 0x5060B080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x60, 0xB0, SOUND_DISCRETE) // unverified\n#define SOUND_OBJ_ENEMY_DEATH_LOW                /* 0x5061B080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x61, 0xB0, SOUND_DISCRETE) // unverified\n#define SOUND_OBJ_SWOOP_DEATH                    /* 0x5062B080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x62, 0xB0, SOUND_DISCRETE)\n#define SOUND_OBJ_KOOPA_FLYGUY_DEATH             /* 0x5063B080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x63, 0xB0, SOUND_DISCRETE)\n#define SOUND_OBJ_POKEY_DEATH                    /* 0x5063C080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x63, 0xC0, SOUND_DISCRETE)\n#define SOUND_OBJ_SNOWMAN_BOUNCE                 /* 0x5064C080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x64, 0xC0, SOUND_DISCRETE) // unverified\n#define SOUND_OBJ_SNOWMAN_EXPLODE                /* 0x5065D080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x65, 0xD0, SOUND_DISCRETE)\n#define SOUND_OBJ_POUNDING_LOUD                  /* 0x50684080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x68, 0x40, SOUND_DISCRETE) // unverified\n#define SOUND_OBJ_MIPS_RABBIT                    /* 0x506A0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x6A, 0x00, SOUND_DISCRETE) // unverified\n#define SOUND_OBJ_MIPS_RABBIT_WATER              /* 0x506C0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x6C, 0x00, SOUND_DISCRETE) // unverified\n#define SOUND_OBJ_EYEROK_EXPLODE                 /* 0x506D0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x6D, 0x00, SOUND_DISCRETE)\n#define SOUND_OBJ_CHUCKYA_DEATH                  /* 0x516E0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x6E, 0x00, SOUND_NO_VOLUME_LOSS | SOUND_DISCRETE)\n#define SOUND_OBJ_WIGGLER_TALK                   /* 0x506F0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x6F, 0x00, SOUND_DISCRETE)\n#define SOUND_OBJ_WIGGLER_ATTACKED               /* 0x50706080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x70, 0x60, SOUND_DISCRETE)\n#define SOUND_OBJ_WIGGLER_LOW_PITCH              /* 0x50712080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x71, 0x20, SOUND_DISCRETE)\n#define SOUND_OBJ_SNUFIT_SKEETER_DEATH           /* 0x5072C080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x72, 0xC0, SOUND_DISCRETE)\n#define SOUND_OBJ_BUBBA_CHOMP                    /* 0x50734080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x73, 0x40, SOUND_DISCRETE)\n#define SOUND_OBJ_ENEMY_DEFEAT_SHRINK            /* 0x50744080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ,      0x74, 0x40, SOUND_DISCRETE)\n\n#define SOUND_AIR_BOWSER_SPIT_FIRE               /* 0x60000000 */ SOUND_ARG_LOAD(SOUND_BANK_AIR,      0x00, 0x00, 0)\n#define SOUND_AIR_UNK01                          /* 0x60010000 */ SOUND_ARG_LOAD(SOUND_BANK_AIR,      0x01, 0x00, 0) // ?, unused\n#define SOUND_AIR_LAKITU_FLY                     /* 0x60028000 */ SOUND_ARG_LOAD(SOUND_BANK_AIR,      0x02, 0x80, 0)\n#define SOUND_AIR_LAKITU_FLY_HIGHPRIO            /* 0x6002FF00 */ SOUND_ARG_LOAD(SOUND_BANK_AIR,      0x02, 0xFF, 0)\n#define SOUND_AIR_AMP_BUZZ                       /* 0x60034000 */ SOUND_ARG_LOAD(SOUND_BANK_AIR,      0x03, 0x40, 0)\n#define SOUND_AIR_BLOW_FIRE                      /* 0x60048000 */ SOUND_ARG_LOAD(SOUND_BANK_AIR,      0x04, 0x80, 0)\n#define SOUND_AIR_BLOW_WIND                      /* 0x60044000 */ SOUND_ARG_LOAD(SOUND_BANK_AIR,      0x04, 0x40, 0)\n#define SOUND_AIR_ROUGH_SLIDE                    /* 0x60050000 */ SOUND_ARG_LOAD(SOUND_BANK_AIR,      0x05, 0x00, 0)\n#define SOUND_AIR_HEAVEHO_MOVE                   /* 0x60064000 */ SOUND_ARG_LOAD(SOUND_BANK_AIR,      0x06, 0x40, 0)\n#define SOUND_AIR_UNK07                          /* 0x60070000 */ SOUND_ARG_LOAD(SOUND_BANK_AIR,      0x07, 0x00, 0) // ?, unused\n#define SOUND_AIR_BOBOMB_LIT_FUSE                /* 0x60086000 */ SOUND_ARG_LOAD(SOUND_BANK_AIR,      0x08, 0x60, 0)\n#define SOUND_AIR_HOWLING_WIND                   /* 0x60098000 */ SOUND_ARG_LOAD(SOUND_BANK_AIR,      0x09, 0x80, 0)\n#define SOUND_AIR_CHUCKYA_MOVE                   /* 0x600A4000 */ SOUND_ARG_LOAD(SOUND_BANK_AIR,      0x0A, 0x40, 0)\n#define SOUND_AIR_PEACH_TWINKLE                  /* 0x600B4000 */ SOUND_ARG_LOAD(SOUND_BANK_AIR,      0x0B, 0x40, 0)\n#define SOUND_AIR_CASTLE_OUTDOORS_AMBIENT        /* 0x60104000 */ SOUND_ARG_LOAD(SOUND_BANK_AIR,      0x10, 0x40, 0)\n\n/* Menu Sound Effects */\n#define SOUND_MENU_CHANGE_SELECT                 /* 0x7000F880 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x00, 0xF8, SOUND_DISCRETE)\n#define SOUND_MENU_REVERSE_PAUSE                 /* 0x70010000 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x01, 0x00, 0) // unverified, unused\n#ifdef VERSION_JP\n#define SOUND_MENU_PAUSE                         /* 0x7002F080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x02, 0xF0, SOUND_DISCRETE)\n#else\n#define SOUND_MENU_PAUSE                         /* 0x7002FF80 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x02, 0xFF, SOUND_DISCRETE)\n#endif\n#define SOUND_MENU_PAUSE_2                       /* 0x7003FF80 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x03, 0xFF, SOUND_DISCRETE)\n#define SOUND_MENU_MESSAGE_APPEAR                /* 0x70040080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x04, 0x00, SOUND_DISCRETE)\n#define SOUND_MENU_MESSAGE_DISAPPEAR             /* 0x70050080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x05, 0x00, SOUND_DISCRETE)\n#define SOUND_MENU_CAMERA_ZOOM_IN                /* 0x70060080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x06, 0x00, SOUND_DISCRETE)\n#define SOUND_MENU_CAMERA_ZOOM_OUT               /* 0x70070080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x07, 0x00, SOUND_DISCRETE)\n#define SOUND_MENU_PINCH_MARIO_FACE              /* 0x70080080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x08, 0x00, SOUND_DISCRETE)\n#define SOUND_MENU_LET_GO_MARIO_FACE             /* 0x70090080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x09, 0x00, SOUND_DISCRETE)\n#define SOUND_MENU_HAND_APPEAR                   /* 0x700A0080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x0A, 0x00, SOUND_DISCRETE)\n#define SOUND_MENU_HAND_DISAPPEAR                /* 0x700B0080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x0B, 0x00, SOUND_DISCRETE)\n#define SOUND_MENU_UNK0C                         /* 0x700C0080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x0C, 0x00, SOUND_DISCRETE) // unverified\n#define SOUND_MENU_POWER_METER                   /* 0x700D0080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x0D, 0x00, SOUND_DISCRETE) // unverified\n#define SOUND_MENU_CAMERA_BUZZ                   /* 0x700E0080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x0E, 0x00, SOUND_DISCRETE)\n#define SOUND_MENU_CAMERA_TURN                   /* 0x700F0080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x0F, 0x00, SOUND_DISCRETE)\n#define SOUND_MENU_UNK10                         /* 0x70100000 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x10, 0x00, 0) // unverified, unused\n#define SOUND_MENU_CLICK_FILE_SELECT             /* 0x70110080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x11, 0x00, SOUND_DISCRETE)\n#define SOUND_MENU_MESSAGE_NEXT_PAGE             /* 0x70130080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x13, 0x00, SOUND_DISCRETE) // unverified\n#define SOUND_MENU_COIN_ITS_A_ME_MARIO           /* 0x70140080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x14, 0x00, SOUND_DISCRETE)\n#define SOUND_MENU_YOSHI_GAIN_LIVES              /* 0x70150080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x15, 0x00, SOUND_DISCRETE)\n#define SOUND_MENU_ENTER_PIPE                    /* 0x7016A080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x16, 0xA0, SOUND_DISCRETE)\n#define SOUND_MENU_EXIT_PIPE                     /* 0x7017A080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x17, 0xA0, SOUND_DISCRETE)\n#define SOUND_MENU_BOWSER_LAUGH                  /* 0x70188080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x18, 0x80, SOUND_DISCRETE)\n#define SOUND_MENU_ENTER_HOLE                    /* 0x71198080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x19, 0x80, SOUND_NO_VOLUME_LOSS | SOUND_DISCRETE)\n#define SOUND_MENU_CLICK_CHANGE_VIEW             /* 0x701A8080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x1A, 0x80, SOUND_DISCRETE) // unverified\n#define SOUND_MENU_CAMERA_UNUSED1                /* 0x701B0000 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x1B, 0x00, 0) // unverified, unused\n#define SOUND_MENU_CAMERA_UNUSED2                /* 0x701C0000 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x1C, 0x00, 0) // unverified, unused\n#define SOUND_MENU_MARIO_CASTLE_WARP             /* 0x701DB080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x1D, 0xB0, SOUND_DISCRETE) // unverified\n#define SOUND_MENU_STAR_SOUND                    /* 0x701EFF80 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x1E, 0xFF, SOUND_DISCRETE)\n#define SOUND_MENU_THANK_YOU_PLAYING_MY_GAME     /* 0x701FFF80 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x1F, 0xFF, SOUND_DISCRETE)\n#define SOUND_MENU_READ_A_SIGN                   /* 0x70200000 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x20, 0x00, 0) // unverified, unused\n#define SOUND_MENU_EXIT_A_SIGN                   /* 0x70210000 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x21, 0x00, 0) // unverified, unused\n#define SOUND_MENU_MARIO_CASTLE_WARP2            /* 0x70222080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x22, 0x20, SOUND_DISCRETE) // unverified\n#define SOUND_MENU_STAR_SOUND_OKEY_DOKEY         /* 0x7023FF80 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x23, 0xFF, SOUND_DISCRETE)\n#define SOUND_MENU_STAR_SOUND_LETS_A_GO          /* 0x7024FF80 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x24, 0xFF, SOUND_DISCRETE)\n\n// US/EU only; an index between 0-7 or 0-4 is added to the sound ID before\n// playing, producing the same sound with different pitch.\n#define SOUND_MENU_COLLECT_RED_COIN              /* 0x78289080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x28, 0x90, SOUND_CONSTANT_FREQUENCY | SOUND_DISCRETE)\n#define SOUND_MENU_COLLECT_SECRET                /* 0x70302080 */ SOUND_ARG_LOAD(SOUND_BANK_MENU,     0x30, 0x20, SOUND_DISCRETE)\n\n// Channel 8 loads sounds from the same place as channel 3, making it possible\n// to play two channel 3 sounds at once (since just one sound from each channel\n// can play at a given time).\n#define SOUND_GENERAL2_BOBOMB_EXPLOSION          /* 0x802E2080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL2, 0x2E, 0x20, SOUND_DISCRETE)\n#define SOUND_GENERAL2_PURPLE_SWITCH             /* 0x803EC080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL2, 0x3E, 0xC0, SOUND_DISCRETE)\n#define SOUND_GENERAL2_ROTATING_BLOCK_CLICK      /* 0x80400080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL2, 0x40, 0x00, SOUND_DISCRETE)\n#define SOUND_GENERAL2_SPINDEL_ROLL              /* 0x80482080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL2, 0x48, 0x20, SOUND_DISCRETE)\n#define SOUND_GENERAL2_PYRAMID_TOP_SPIN          /* 0x814BE080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL2, 0x4B, 0xE0, SOUND_NO_VOLUME_LOSS | SOUND_DISCRETE)\n#define SOUND_GENERAL2_PYRAMID_TOP_EXPLOSION     /* 0x814CF080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL2, 0x4C, 0xF0, SOUND_NO_VOLUME_LOSS | SOUND_DISCRETE)\n#define SOUND_GENERAL2_BIRD_CHIRP2               /* 0x80504000 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL2, 0x50, 0x40, 0)\n#define SOUND_GENERAL2_SWITCH_TICK_FAST          /* 0x8054F010 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL2, 0x54, 0xF0, SOUND_LOWER_BACKGROUND_MUSIC)\n#define SOUND_GENERAL2_SWITCH_TICK_SLOW          /* 0x8055F010 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL2, 0x55, 0xF0, SOUND_LOWER_BACKGROUND_MUSIC)\n#define SOUND_GENERAL2_STAR_APPEARS              /* 0x8057FF90 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL2, 0x57, 0xFF, SOUND_LOWER_BACKGROUND_MUSIC | SOUND_DISCRETE)\n#define SOUND_GENERAL2_ROTATING_BLOCK_ALERT      /* 0x80590080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL2, 0x59, 0x00, SOUND_DISCRETE)\n#define SOUND_GENERAL2_BOWSER_EXPLODE            /* 0x80600080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL2, 0x60, 0x00, SOUND_DISCRETE)\n#define SOUND_GENERAL2_BOWSER_KEY                /* 0x80610080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL2, 0x61, 0x00, SOUND_DISCRETE)\n#define SOUND_GENERAL2_1UP_APPEAR                /* 0x8063D080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL2, 0x63, 0xD0, SOUND_DISCRETE)\n#define SOUND_GENERAL2_RIGHT_ANSWER              /* 0x806AA080 */ SOUND_ARG_LOAD(SOUND_BANK_GENERAL2, 0x6A, 0xA0, SOUND_DISCRETE)\n\n// Channel 9 loads sounds from the same place as channel 5.\n#define SOUND_OBJ2_BOWSER_ROAR                   /* 0x90040080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ2,     0x04, 0x00, SOUND_DISCRETE)\n#define SOUND_OBJ2_PIRANHA_PLANT_BITE            /* 0x90105080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ2,     0x10, 0x50, SOUND_DISCRETE)\n#define SOUND_OBJ2_PIRANHA_PLANT_DYING           /* 0x90116080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ2,     0x11, 0x60, SOUND_DISCRETE)\n#define SOUND_OBJ2_BOWSER_PUZZLE_PIECE_MOVE      /* 0x90192080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ2,     0x19, 0x20, SOUND_DISCRETE)\n#define SOUND_OBJ2_BULLY_ATTACKED                /* 0x901C0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ2,     0x1C, 0x00, SOUND_DISCRETE)\n#define SOUND_OBJ2_KING_BOBOMB_DAMAGE            /* 0x91424080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ2,     0x42, 0x40, SOUND_NO_VOLUME_LOSS | SOUND_DISCRETE)\n#define SOUND_OBJ2_SCUTTLEBUG_WALK               /* 0x90434080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ2,     0x43, 0x40, SOUND_DISCRETE)\n#define SOUND_OBJ2_SCUTTLEBUG_ALERT              /* 0x90444080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ2,     0x44, 0x40, SOUND_DISCRETE)\n#define SOUND_OBJ2_BABY_PENGUIN_YELL             /* 0x90450080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ2,     0x45, 0x00, SOUND_DISCRETE)\n#define SOUND_OBJ2_SWOOP                         /* 0x90490080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ2,     0x49, 0x00, SOUND_DISCRETE)\n#define SOUND_OBJ2_BIRD_CHIRP1                   /* 0x90524000 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ2,     0x52, 0x40, 0)\n#define SOUND_OBJ2_LARGE_BULLY_ATTACKED          /* 0x90570080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ2,     0x57, 0x00, SOUND_DISCRETE)\n#define SOUND_OBJ2_EYEROK_SOUND_SHORT            /* 0x935A0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ2,     0x5A, 0x00, SOUND_NO_VOLUME_LOSS | SOUND_VIBRATO | SOUND_DISCRETE)\n#define SOUND_OBJ2_WHOMP_SOUND_SHORT             /* 0x935AC080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ2,     0x5A, 0xC0, SOUND_NO_VOLUME_LOSS | SOUND_VIBRATO | SOUND_DISCRETE)\n#define SOUND_OBJ2_EYEROK_SOUND_LONG             /* 0x925B0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ2,     0x5B, 0x00, SOUND_VIBRATO | SOUND_DISCRETE)\n#define SOUND_OBJ2_BOWSER_TELEPORT               /* 0x90668080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ2,     0x66, 0x80, SOUND_DISCRETE)\n#define SOUND_OBJ2_MONTY_MOLE_APPEAR             /* 0x90678080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ2,     0x67, 0x80, SOUND_DISCRETE)\n#define SOUND_OBJ2_BOSS_DIALOG_GRUNT             /* 0x90694080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ2,     0x69, 0x40, SOUND_DISCRETE)\n#define SOUND_OBJ2_MRI_SPINNING                  /* 0x906B0080 */ SOUND_ARG_LOAD(SOUND_BANK_OBJ2,     0x6B, 0x00, SOUND_DISCRETE)\n\n#endif // SOUNDS_H\n"
  },
  {
    "path": "include/special_presets.h",
    "content": "#ifndef SPECIAL_PRESETS_H\n#define SPECIAL_PRESETS_H\n\nenum SpecialPresets {\n    special_null_start,\n    special_yellow_coin,\n    special_yellow_coin_2,\n    special_unknown_3,\n    special_boo,\n    special_unknown_5,\n    special_lll_moving_octagonal_mesh_platform,\n    special_snow_ball,\n    special_lll_drawbridge_spawner,\n    special_empty_9,\n    special_lll_rotating_block_with_fire_bars,\n    special_lll_floating_wood_bridge,\n    special_tumbling_platform,\n    special_lll_rotating_hexagonal_ring,\n    special_lll_sinking_rectangular_platform,\n    special_lll_sinking_square_platforms,\n    special_lll_tilting_square_platform,\n    special_lll_bowser_puzzle,\n    special_mr_i,\n    special_small_bully,\n    special_big_bully,\n    special_empty_21,\n    special_empty_22,\n    special_empty_23,\n    special_empty_24,\n    special_empty_25,\n    special_moving_blue_coin,\n    special_jrb_chest,\n    special_water_ring,\n    special_mine,\n    special_empty_30,\n    special_empty_31,\n    special_butterfly,\n    special_bowser,\n    special_wf_rotating_wooden_platform,\n    special_small_bomp,\n    special_wf_sliding_platform,\n    special_tower_platform_group,\n    special_rotating_counter_clockwise,\n    special_wf_tumbling_bridge,\n    special_large_bomp,\n\n    special_level_geo_03 = 0x65,\n    special_level_geo_04,\n    special_level_geo_05,\n    special_level_geo_06,\n    special_level_geo_07,\n    special_level_geo_08,\n    special_level_geo_09,\n    special_level_geo_0A,\n    special_level_geo_0B,\n    special_level_geo_0C,\n    special_level_geo_0D,\n    special_level_geo_0E,\n    special_level_geo_0F,\n    special_level_geo_10,\n    special_level_geo_11,\n    special_level_geo_12,\n    special_level_geo_13,\n    special_level_geo_14,\n    special_level_geo_15,\n    special_level_geo_16,\n    special_bubble_tree,\n    special_spiky_tree,\n    special_snow_tree,\n    special_unknown_tree,\n    special_palm_tree,\n    special_wooden_door,\n    special_haunted_door = special_wooden_door,\n    special_unknown_door,\n    special_metal_door,\n    special_hmc_door,\n    special_unknown2_door,\n    special_wooden_door_warp,\n    special_unknown1_door_warp,\n    special_metal_door_warp,\n    special_unknown2_door_warp,\n    special_unknown3_door_warp,\n    special_castle_door_warp,\n    special_castle_door,\n    special_0stars_door,\n    special_1star_door,\n    special_3star_door,\n    special_key_door,\n\n    special_null_end = 0xFF\n};\n\n#endif // SPECIAL_PRESETS_H\n"
  },
  {
    "path": "include/special_presets.inc.c",
    "content": "#include \"special_presets.h\"\n\n// Special Preset types\n#define SPTYPE_NO_YROT_OR_PARAMS  0 // object is 8-bytes long, no y-rotation or any behavior params\n#define SPTYPE_YROT_NO_PARAMS     1 // object is 10-bytes long, has y-rotation but no params\n#define SPTYPE_PARAMS_AND_YROT    2 // object is 12-bytes long, has y-rotation and params\n#define SPTYPE_UNKNOWN            3 // object is 14-bytes long, has 3 extra shorts that get converted to floats.\n#define SPTYPE_DEF_PARAM_AND_YROT 4 // object is 10-bytes long, has y-rotation and uses the default param\n\nstruct SpecialPreset {\n    /* 0x00 */ u8  presetID;\n    /* 0x01 */ u8  type;      // Determines whether object is 8, 10, 12 or 14 bytes long.\n    /* 0x02 */ u8  defParam;  // Default parameter, only used when type is SPTYPE_DEF_PARAM_AND_YROT\n    /* 0x03 */ u8  model;\n    /* 0x04 */ const BehaviorScript *behavior;\n};\n\n// Some Models ID's are missing their names because they are probably unused\n\nstatic struct SpecialPreset sSpecialObjectPresets[] = {\n    { special_null_start,                         SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_NONE, NULL },\n    { special_yellow_coin,                        SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_YELLOW_COIN, bhvYellowCoin },\n    { special_yellow_coin_2,                      SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_YELLOW_COIN, bhvYellowCoin },\n    { special_unknown_3,                          SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_UNKNOWN_B8, bhvStaticObject },\n    { special_boo,                                SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_BOO, bhvCourtyardBooTriplet },\n    { special_unknown_5,                          SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_UNKNOWN_AC, bhvCastleFloorTrap },\n    { special_lll_moving_octagonal_mesh_platform, SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_LLL_MOVING_OCTAGONAL_MESH_PLATFORM, bhvLLLMovingOctagonalMeshPlatform },\n    { special_snow_ball,                          SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_CCM_SNOWMAN_HEAD, bhvSnowBall },\n    { special_lll_drawbridge_spawner,             SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LLL_DRAWBRIDGE_PART, bhvLLLDrawbridgeSpawner },\n    { special_empty_9,                            SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_NONE, bhvStaticObject },\n    { special_lll_rotating_block_with_fire_bars,  SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_LLL_ROTATING_BLOCK_FIRE_BARS, bhvLLLRotatingBlockWithFireBars },\n    { special_lll_floating_wood_bridge,           SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_NONE, bhvLLLFloatingWoodBridge },\n    { special_tumbling_platform,                  SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_NONE, bhvLLLTumblingBridge },\n    { special_lll_rotating_hexagonal_ring,        SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_LLL_ROTATING_HEXAGONAL_RING , bhvLLLRotatingHexagonalRing },\n    { special_lll_sinking_rectangular_platform,   SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LLL_SINKING_RECTANGULAR_PLATFORM, bhvLLLSinkingRectangularPlatform },\n    { special_lll_sinking_square_platforms,       SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_LLL_SINKING_SQUARE_PLATFORMS, bhvLLLSinkingSquarePlatforms },\n    { special_lll_tilting_square_platform,        SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_LLL_TILTING_SQUARE_PLATFORM, bhvLLLTiltingInvertedPyramid },\n    { special_lll_bowser_puzzle,                  SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_NONE, bhvLLLBowserPuzzle },\n    { special_mr_i,                               SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_NONE, bhvMrI },\n    { special_small_bully,                        SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_BULLY, bhvSmallBully },\n    { special_big_bully,                          SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_BULLY_BOSS, bhvBigBully },\n    { special_empty_21,                           SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_NONE, bhvStaticObject },\n    { special_empty_22,                           SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_NONE, bhvStaticObject },\n    { special_empty_23,                           SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_NONE, bhvStaticObject },\n    { special_empty_24,                           SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_NONE, bhvStaticObject },\n    { special_empty_25,                           SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_NONE, bhvStaticObject },\n    { special_moving_blue_coin,                   SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_YELLOW_COIN, bhvMovingBlueCoin },\n    { special_jrb_chest,                          SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_TREASURE_CHEST_BASE, bhvBetaChestBottom },\n    { special_water_ring,                         SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_WATER_RING, bhvJetStreamRingSpawner },\n    { special_mine,                               SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_WATER_MINE, bhvBowserBomb },\n    { special_empty_30,                           SPTYPE_UNKNOWN,            0x00, MODEL_NONE, bhvStaticObject },\n    { special_empty_31,                           SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_NONE, bhvStaticObject },\n    { special_butterfly,                          SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_BUTTERFLY, bhvButterfly },\n    { special_bowser,                             SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_BOWSER, bhvBowser },\n    { special_wf_rotating_wooden_platform,        SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_WF_ROTATING_WOODEN_PLATFORM, bhvWFRotatingWoodenPlatform },\n    { special_small_bomp,                         SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_WF_SMALL_BOMP, bhvSmallBomp },\n    { special_wf_sliding_platform,                SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_WF_SLIDING_PLATFORM, bhvWFSlidingPlatform },\n    { special_tower_platform_group,               SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_NONE, bhvTowerPlatformGroup },\n    { special_rotating_counter_clockwise,         SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_NONE, bhvRotatingCounterClockwise },\n    { special_wf_tumbling_bridge,                 SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_WF_TUMBLING_BRIDGE, bhvTumblingBridge },\n    { special_large_bomp,                         SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_WF_LARGE_BOMP, bhvLargeBomp },\n    { special_level_geo_03,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_03, bhvStaticObject },\n    { special_level_geo_04,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_04, bhvStaticObject },\n    { special_level_geo_05,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_05, bhvStaticObject },\n    { special_level_geo_06,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_06, bhvStaticObject },\n    { special_level_geo_07,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_07, bhvStaticObject },\n    { special_level_geo_08,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_08, bhvStaticObject },\n    { special_level_geo_09,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_09, bhvStaticObject },\n    { special_level_geo_0A,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_0A, bhvStaticObject },\n    { special_level_geo_0B,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_0B, bhvStaticObject },\n    { special_level_geo_0C,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_0C, bhvStaticObject },\n    { special_level_geo_0D,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_0D, bhvStaticObject },\n    { special_level_geo_0E,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_0E, bhvStaticObject },\n    { special_level_geo_0F,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_0F, bhvStaticObject },\n    { special_level_geo_10,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_10, bhvStaticObject },\n    { special_level_geo_11,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_11, bhvStaticObject },\n    { special_level_geo_12,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_12, bhvStaticObject },\n    { special_level_geo_13,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_13, bhvStaticObject },\n    { special_level_geo_14,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_14, bhvStaticObject },\n    { special_level_geo_15,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_15, bhvStaticObject },\n    { special_level_geo_16,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_LEVEL_GEOMETRY_16, bhvStaticObject },\n    { special_bubble_tree,                        SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_BOB_BUBBLY_TREE, bhvTree },\n    { special_spiky_tree,                         SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_COURTYARD_SPIKY_TREE, bhvTree },\n    { special_snow_tree,                          SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_CCM_SNOW_TREE, bhvTree },\n    { special_unknown_tree,                       SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_UNKNOWN_TREE_1A, bhvTree },\n    { special_palm_tree,                          SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_SSL_PALM_TREE, bhvTree },\n    { special_castle_door,                        SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_CASTLE_CASTLE_DOOR_UNUSED, bhvDoor },\n    { special_wooden_door,                        SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_CASTLE_WOODEN_DOOR_UNUSED, bhvDoor },\n    { special_unknown_door,                       SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_UNKNOWN_DOOR_1E, bhvDoor },\n    { special_metal_door,                         SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_HMC_METAL_DOOR, bhvDoor },\n    { special_hmc_door,                           SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_HMC_HAZY_MAZE_DOOR, bhvDoor },\n    { special_unknown2_door,                      SPTYPE_YROT_NO_PARAMS,     0x00, MODEL_UNKNOWN_DOOR_21, bhvDoor },\n    { special_0stars_door,                        SPTYPE_DEF_PARAM_AND_YROT, 0x00, MODEL_CASTLE_DOOR_0_STARS, bhvDoor },\n    { special_1star_door,                         SPTYPE_DEF_PARAM_AND_YROT, 0x01, MODEL_CASTLE_DOOR_1_STAR, bhvDoor },\n    { special_3star_door,                         SPTYPE_DEF_PARAM_AND_YROT, 0x03, MODEL_CASTLE_DOOR_3_STARS, bhvDoor },\n    { special_key_door,                           SPTYPE_DEF_PARAM_AND_YROT, 0x00, MODEL_CASTLE_KEY_DOOR, bhvDoor },\n    { special_castle_door_warp,                   SPTYPE_PARAMS_AND_YROT,    0x00, MODEL_CASTLE_CASTLE_DOOR, bhvDoorWarp },\n    { special_wooden_door_warp,                   SPTYPE_PARAMS_AND_YROT,    0x00, MODEL_CASTLE_WOODEN_DOOR, bhvDoorWarp },\n    { special_unknown1_door_warp,                 SPTYPE_PARAMS_AND_YROT,    0x00, MODEL_UNKNOWN_DOOR_28, bhvDoorWarp },\n    { special_metal_door_warp,                    SPTYPE_PARAMS_AND_YROT,    0x00, MODEL_CASTLE_METAL_DOOR, bhvDoorWarp },\n    { special_unknown2_door_warp,                 SPTYPE_PARAMS_AND_YROT,    0x00, MODEL_UNKNOWN_DOOR_2A, bhvDoorWarp },\n    { special_unknown3_door_warp,                 SPTYPE_PARAMS_AND_YROT,    0x00, MODEL_UNKNOWN_DOOR_2B, bhvDoorWarp },\n    { special_null_end,                           SPTYPE_NO_YROT_OR_PARAMS,  0x00, MODEL_NONE, NULL },\n};\n"
  },
  {
    "path": "include/surface_terrains.h",
    "content": "#ifndef SURFACE_TERRAINS_H\n#define SURFACE_TERRAINS_H\n\n// Surface Types\n#define SURFACE_DEFAULT                      0x0000 // Environment default\n#define SURFACE_BURNING                      0x0001 // Lava / Frostbite (in SL), but is used mostly for Lava\n#define SURFACE_0004                         0x0004 // Unused, has no function and has parameters\n#define SURFACE_HANGABLE                     0x0005 // Ceiling that Mario can climb on\n#define SURFACE_SLOW                         0x0009 // Slow down Mario, unused\n#define SURFACE_DEATH_PLANE                  0x000A // Death floor\n#define SURFACE_CLOSE_CAMERA                 0x000B // Close camera\n#define SURFACE_WATER                        0x000D // Water, has no action, used on some waterboxes below\n#define SURFACE_FLOWING_WATER                0x000E // Water (flowing), has parameters\n#define SURFACE_INTANGIBLE                   0x0012 // Intangible (Separates BBH mansion from merry-go-round, for room usage)\n#define SURFACE_VERY_SLIPPERY                0x0013 // Very slippery, mostly used for slides\n#define SURFACE_SLIPPERY                     0x0014 // Slippery\n#define SURFACE_NOT_SLIPPERY                 0x0015 // Non-slippery, climbable\n#define SURFACE_TTM_VINES                    0x0016 // TTM vines, has no action defined\n#define SURFACE_MGR_MUSIC                    0x001A // Plays the Merry go round music, see handle_merry_go_round_music in bbh_merry_go_round.inc.c for more details\n#define SURFACE_INSTANT_WARP_1B              0x001B // Instant warp to another area, used to warp between areas in WDW and the endless stairs to warp back\n#define SURFACE_INSTANT_WARP_1C              0x001C // Instant warp to another area, used to warp between areas in WDW\n#define SURFACE_INSTANT_WARP_1D              0x001D // Instant warp to another area, used to warp between areas in DDD, SSL and TTM\n#define SURFACE_INSTANT_WARP_1E              0x001E // Instant warp to another area, used to warp between areas in DDD, SSL and TTM\n#define SURFACE_SHALLOW_QUICKSAND            0x0021 // Shallow Quicksand (depth of 10 units)\n#define SURFACE_DEEP_QUICKSAND               0x0022 // Quicksand (lethal, slow, depth of 160 units)\n#define SURFACE_INSTANT_QUICKSAND            0x0023 // Quicksand (lethal, instant)\n#define SURFACE_DEEP_MOVING_QUICKSAND        0x0024 // Moving quicksand (flowing, depth of 160 units)\n#define SURFACE_SHALLOW_MOVING_QUICKSAND     0x0025 // Moving quicksand (flowing, depth of 25 units)\n#define SURFACE_QUICKSAND                    0x0026 // Moving quicksand (60 units)\n#define SURFACE_MOVING_QUICKSAND             0x0027 // Moving quicksand (flowing, depth of 60 units)\n#define SURFACE_WALL_MISC                    0x0028 // Used for some walls, Cannon to adjust the camera, and some objects like Warp Pipe\n#define SURFACE_NOISE_DEFAULT                0x0029 // Default floor with noise\n#define SURFACE_NOISE_SLIPPERY               0x002A // Slippery floor with noise\n#define SURFACE_HORIZONTAL_WIND              0x002C // Horizontal wind, has parameters\n#define SURFACE_INSTANT_MOVING_QUICKSAND     0x002D // Quicksand (lethal, flowing)\n#define SURFACE_ICE                          0x002E // Slippery Ice, in snow levels and THI's water floor\n#define SURFACE_LOOK_UP_WARP                 0x002F // Look up and warp (Wing cap entrance)\n#define SURFACE_HARD                         0x0030 // Hard floor (Always has fall damage)\n#define SURFACE_WARP                         0x0032 // Surface warp\n#define SURFACE_TIMER_START                  0x0033 // Timer start (Peach's secret slide)\n#define SURFACE_TIMER_END                    0x0034 // Timer stop (Peach's secret slide)\n#define SURFACE_HARD_SLIPPERY                0x0035 // Hard and slippery (Always has fall damage)\n#define SURFACE_HARD_VERY_SLIPPERY           0x0036 // Hard and very slippery (Always has fall damage)\n#define SURFACE_HARD_NOT_SLIPPERY            0x0037 // Hard and Non-slippery (Always has fall damage)\n#define SURFACE_VERTICAL_WIND                0x0038 // Death at bottom with vertical wind\n#define SURFACE_BOSS_FIGHT_CAMERA            0x0065 // Wide camera for BoB and WF bosses\n#define SURFACE_CAMERA_FREE_ROAM             0x0066 // Free roam camera for THI and TTC\n#define SURFACE_THI3_WALLKICK                0x0068 // Surface where there's a wall kick section in THI 3rd area, has no action defined\n#define SURFACE_CAMERA_8_DIR                 0x0069 // Surface that enables far camera for platforms, used in THI\n#define SURFACE_CAMERA_MIDDLE                0x006E // Surface camera that returns to the middle, used on the 4 pillars of SSL\n#define SURFACE_CAMERA_ROTATE_RIGHT          0x006F // Surface camera that rotates to the right (Bowser 1 & THI)\n#define SURFACE_CAMERA_ROTATE_LEFT           0x0070 // Surface camera that rotates to the left (BoB & TTM)\n#define SURFACE_CAMERA_BOUNDARY              0x0072 // Intangible Area, only used to restrict camera movement\n#define SURFACE_NOISE_VERY_SLIPPERY_73       0x0073 // Very slippery floor with noise, unused\n#define SURFACE_NOISE_VERY_SLIPPERY_74       0x0074 // Very slippery floor with noise, unused\n#define SURFACE_NOISE_VERY_SLIPPERY          0x0075 // Very slippery floor with noise, used in CCM\n#define SURFACE_NO_CAM_COLLISION             0x0076 // Surface with no cam collision flag\n#define SURFACE_NO_CAM_COLLISION_77          0x0077 // Surface with no cam collision flag, unused\n#define SURFACE_NO_CAM_COL_VERY_SLIPPERY     0x0078 // Surface with no cam collision flag, very slippery with noise (THI)\n#define SURFACE_NO_CAM_COL_SLIPPERY          0x0079 // Surface with no cam collision flag, slippery with noise (CCM, PSS and TTM slides)\n#define SURFACE_SWITCH                       0x007A // Surface with no cam collision flag, non-slippery with noise, used by switches and Dorrie\n#define SURFACE_VANISH_CAP_WALLS             0x007B // Vanish cap walls, pass through them with Vanish Cap\n#define SURFACE_PAINTING_WOBBLE_A6           0x00A6 // Painting wobble (BoB Left)\n#define SURFACE_PAINTING_WOBBLE_A7           0x00A7 // Painting wobble (BoB Middle)\n#define SURFACE_PAINTING_WOBBLE_A8           0x00A8 // Painting wobble (BoB Right)\n#define SURFACE_PAINTING_WOBBLE_A9           0x00A9 // Painting wobble (CCM Left)\n#define SURFACE_PAINTING_WOBBLE_AA           0x00AA // Painting wobble (CCM Middle)\n#define SURFACE_PAINTING_WOBBLE_AB           0x00AB // Painting wobble (CCM Right)\n#define SURFACE_PAINTING_WOBBLE_AC           0x00AC // Painting wobble (WF Left)\n#define SURFACE_PAINTING_WOBBLE_AD           0x00AD // Painting wobble (WF Middle)\n#define SURFACE_PAINTING_WOBBLE_AE           0x00AE // Painting wobble (WF Right)\n#define SURFACE_PAINTING_WOBBLE_AF           0x00AF // Painting wobble (JRB Left)\n#define SURFACE_PAINTING_WOBBLE_B0           0x00B0 // Painting wobble (JRB Middle)\n#define SURFACE_PAINTING_WOBBLE_B1           0x00B1 // Painting wobble (JRB Right)\n#define SURFACE_PAINTING_WOBBLE_B2           0x00B2 // Painting wobble (LLL Left)\n#define SURFACE_PAINTING_WOBBLE_B3           0x00B3 // Painting wobble (LLL Middle)\n#define SURFACE_PAINTING_WOBBLE_B4           0x00B4 // Painting wobble (LLL Right)\n#define SURFACE_PAINTING_WOBBLE_B5           0x00B5 // Painting wobble (SSL Left)\n#define SURFACE_PAINTING_WOBBLE_B6           0x00B6 // Painting wobble (SSL Middle)\n#define SURFACE_PAINTING_WOBBLE_B7           0x00B7 // Painting wobble (SSL Right)\n#define SURFACE_PAINTING_WOBBLE_B8           0x00B8 // Painting wobble (Unused - Left)\n#define SURFACE_PAINTING_WOBBLE_B9           0x00B9 // Painting wobble (Unused - Middle)\n#define SURFACE_PAINTING_WOBBLE_BA           0x00BA // Painting wobble (Unused - Right)\n#define SURFACE_PAINTING_WOBBLE_BB           0x00BB // Painting wobble (DDD - Left), makes the painting wobble if touched\n#define SURFACE_PAINTING_WOBBLE_BC           0x00BC // Painting wobble (Unused, DDD - Middle)\n#define SURFACE_PAINTING_WOBBLE_BD           0x00BD // Painting wobble (Unused, DDD - Right)\n#define SURFACE_PAINTING_WOBBLE_BE           0x00BE // Painting wobble (WDW Left)\n#define SURFACE_PAINTING_WOBBLE_BF           0x00BF // Painting wobble (WDW Middle)\n#define SURFACE_PAINTING_WOBBLE_C0           0x00C0 // Painting wobble (WDW Right)\n#define SURFACE_PAINTING_WOBBLE_C1           0x00C1 // Painting wobble (THI Tiny - Left)\n#define SURFACE_PAINTING_WOBBLE_C2           0x00C2 // Painting wobble (THI Tiny - Middle)\n#define SURFACE_PAINTING_WOBBLE_C3           0x00C3 // Painting wobble (THI Tiny - Right)\n#define SURFACE_PAINTING_WOBBLE_C4           0x00C4 // Painting wobble (TTM Left)\n#define SURFACE_PAINTING_WOBBLE_C5           0x00C5 // Painting wobble (TTM Middle)\n#define SURFACE_PAINTING_WOBBLE_C6           0x00C6 // Painting wobble (TTM Right)\n#define SURFACE_PAINTING_WOBBLE_C7           0x00C7 // Painting wobble (Unused, TTC - Left)\n#define SURFACE_PAINTING_WOBBLE_C8           0x00C8 // Painting wobble (Unused, TTC - Middle)\n#define SURFACE_PAINTING_WOBBLE_C9           0x00C9 // Painting wobble (Unused, TTC - Right)\n#define SURFACE_PAINTING_WOBBLE_CA           0x00CA // Painting wobble (Unused, SL - Left)\n#define SURFACE_PAINTING_WOBBLE_CB           0x00CB // Painting wobble (Unused, SL - Middle)\n#define SURFACE_PAINTING_WOBBLE_CC           0x00CC // Painting wobble (Unused, SL - Right)\n#define SURFACE_PAINTING_WOBBLE_CD           0x00CD // Painting wobble (THI Huge - Left)\n#define SURFACE_PAINTING_WOBBLE_CE           0x00CE // Painting wobble (THI Huge - Middle)\n#define SURFACE_PAINTING_WOBBLE_CF           0x00CF // Painting wobble (THI Huge - Right)\n#define SURFACE_PAINTING_WOBBLE_D0           0x00D0 // Painting wobble (HMC & CotMC - Left), makes the painting wobble if touched\n#define SURFACE_PAINTING_WOBBLE_D1           0x00D1 // Painting wobble (Unused, HMC & CotMC - Middle)\n#define SURFACE_PAINTING_WOBBLE_D2           0x00D2 // Painting wobble (Unused, HMC & CotMC - Right)\n#define SURFACE_PAINTING_WARP_D3             0x00D3 // Painting warp (BoB Left)\n#define SURFACE_PAINTING_WARP_D4             0x00D4 // Painting warp (BoB Middle)\n#define SURFACE_PAINTING_WARP_D5             0x00D5 // Painting warp (BoB Right)\n#define SURFACE_PAINTING_WARP_D6             0x00D6 // Painting warp (CCM Left)\n#define SURFACE_PAINTING_WARP_D7             0x00D7 // Painting warp (CCM Middle)\n#define SURFACE_PAINTING_WARP_D8             0x00D8 // Painting warp (CCM Right)\n#define SURFACE_PAINTING_WARP_D9             0x00D9 // Painting warp (WF Left)\n#define SURFACE_PAINTING_WARP_DA             0x00DA // Painting warp (WF Middle)\n#define SURFACE_PAINTING_WARP_DB             0x00DB // Painting warp (WF Right)\n#define SURFACE_PAINTING_WARP_DC             0x00DC // Painting warp (JRB Left)\n#define SURFACE_PAINTING_WARP_DD             0x00DD // Painting warp (JRB Middle)\n#define SURFACE_PAINTING_WARP_DE             0x00DE // Painting warp (JRB Right)\n#define SURFACE_PAINTING_WARP_DF             0x00DF // Painting warp (LLL Left)\n#define SURFACE_PAINTING_WARP_E0             0x00E0 // Painting warp (LLL Middle)\n#define SURFACE_PAINTING_WARP_E1             0x00E1 // Painting warp (LLL Right)\n#define SURFACE_PAINTING_WARP_E2             0x00E2 // Painting warp (SSL Left)\n#define SURFACE_PAINTING_WARP_E3             0x00E3 // Painting warp (SSL Medium)\n#define SURFACE_PAINTING_WARP_E4             0x00E4 // Painting warp (SSL Right)\n#define SURFACE_PAINTING_WARP_E5             0x00E5 // Painting warp (Unused - Left)\n#define SURFACE_PAINTING_WARP_E6             0x00E6 // Painting warp (Unused - Medium)\n#define SURFACE_PAINTING_WARP_E7             0x00E7 // Painting warp (Unused - Right)\n#define SURFACE_PAINTING_WARP_E8             0x00E8 // Painting warp (DDD - Left)\n#define SURFACE_PAINTING_WARP_E9             0x00E9 // Painting warp (DDD - Middle)\n#define SURFACE_PAINTING_WARP_EA             0x00EA // Painting warp (DDD - Right)\n#define SURFACE_PAINTING_WARP_EB             0x00EB // Painting warp (WDW Left)\n#define SURFACE_PAINTING_WARP_EC             0x00EC // Painting warp (WDW Middle)\n#define SURFACE_PAINTING_WARP_ED             0x00ED // Painting warp (WDW Right)\n#define SURFACE_PAINTING_WARP_EE             0x00EE // Painting warp (THI Tiny - Left)\n#define SURFACE_PAINTING_WARP_EF             0x00EF // Painting warp (THI Tiny - Middle)\n#define SURFACE_PAINTING_WARP_F0             0x00F0 // Painting warp (THI Tiny - Right)\n#define SURFACE_PAINTING_WARP_F1             0x00F1 // Painting warp (TTM Left)\n#define SURFACE_PAINTING_WARP_F2             0x00F2 // Painting warp (TTM Middle)\n#define SURFACE_PAINTING_WARP_F3             0x00F3 // Painting warp (TTM Right)\n#define SURFACE_TTC_PAINTING_1               0x00F4 // Painting warp (TTC Left)\n#define SURFACE_TTC_PAINTING_2               0x00F5 // Painting warp (TTC Medium)\n#define SURFACE_TTC_PAINTING_3               0x00F6 // Painting warp (TTC Right)\n#define SURFACE_PAINTING_WARP_F7             0x00F7 // Painting warp (SL Left)\n#define SURFACE_PAINTING_WARP_F8             0x00F8 // Painting warp (SL Middle)\n#define SURFACE_PAINTING_WARP_F9             0x00F9 // Painting warp (SL Right)\n#define SURFACE_PAINTING_WARP_FA             0x00FA // Painting warp (THI Tiny - Left)\n#define SURFACE_PAINTING_WARP_FB             0x00FB // Painting warp (THI Tiny - Middle)\n#define SURFACE_PAINTING_WARP_FC             0x00FC // Painting warp (THI Tiny - Right)\n#define SURFACE_WOBBLING_WARP                0x00FD // Pool warp (HMC & DDD)\n#define SURFACE_TRAPDOOR                     0x00FF // Bowser Left trapdoor, has no action defined\n\n#define SURFACE_IS_QUICKSAND(cmd)     (cmd >= 0x21 && cmd < 0x28)   // Doesn't include SURFACE_INSTANT_MOVING_QUICKSAND\n#define SURFACE_IS_NOT_HARD(cmd)      (cmd != SURFACE_HARD && \\\n                                     !(cmd >= 0x35 && cmd <= 0x37))\n#define SURFACE_IS_PAINTING_WARP(cmd) (cmd >= 0xD3 && cmd < 0xFD)\n\n#define SURFACE_CLASS_DEFAULT       0x0000\n#define SURFACE_CLASS_VERY_SLIPPERY 0x0013\n#define SURFACE_CLASS_SLIPPERY      0x0014\n#define SURFACE_CLASS_NOT_SLIPPERY  0x0015\n\n#define SURFACE_FLAG_DYNAMIC          (1 << 0)\n#define SURFACE_FLAG_NO_CAM_COLLISION (1 << 1)\n#define SURFACE_FLAG_X_PROJECTION     (1 << 3)\n\n// These are effectively unique \"surface\" types like those defined higher\n// And they are used as collision commands to load certain functions\n#define TERRAIN_LOAD_VERTICES    0x0040 // Begins vertices list for collision triangles\n#define TERRAIN_LOAD_CONTINUE    0x0041 // Stop loading vertices but continues to load other collision commands\n#define TERRAIN_LOAD_END         0x0042 // End the collision list\n#define TERRAIN_LOAD_OBJECTS     0x0043 // Loads in certain objects for level start\n#define TERRAIN_LOAD_ENVIRONMENT 0x0044 // Loads water/HMC gas\n\n#define TERRAIN_LOAD_IS_SURFACE_TYPE_LOW(cmd)  (cmd < 0x40)\n#define TERRAIN_LOAD_IS_SURFACE_TYPE_HIGH(cmd) (cmd >= 0x65)\n\n// Terrain types defined by the level script command terrain_type (cmd_31)\n#define TERRAIN_GRASS  0x0000\n#define TERRAIN_STONE  0x0001\n#define TERRAIN_SNOW   0x0002\n#define TERRAIN_SAND   0x0003\n#define TERRAIN_SPOOKY 0x0004\n#define TERRAIN_WATER  0x0005\n#define TERRAIN_SLIDE  0x0006\n#define TERRAIN_MASK   0x0007\n\n// These collision commands are unique \"surface\" types like those defined higher\n\n// Collision Data Routine Initiate\n#define COL_INIT() TERRAIN_LOAD_VERTICES\n\n// Collision Vertices Read Initiate\n#define COL_VERTEX_INIT(vtxNum) vtxNum\n\n// Collision Vertex\n#define COL_VERTEX(x, y, z) x, y, z\n\n// Collision Tris Initiate\n#define COL_TRI_INIT(surfType, triNum) surfType, triNum\n\n// Collision Tri\n#define COL_TRI(v1, v2, v3) v1, v2, v3\n\n// Collision Tri With Special Params\n#define COL_TRI_SPECIAL(v1, v2, v3, param) v1, v2, v3, param\n\n// Collision Tris Stop Loading\n#define COL_TRI_STOP() TERRAIN_LOAD_CONTINUE\n\n// End Collision Data\n#define COL_END() TERRAIN_LOAD_END\n\n// Special Object Initiate\n#define COL_SPECIAL_INIT(num) TERRAIN_LOAD_OBJECTS, num\n\n// Water Boxes Initiate\n#define COL_WATER_BOX_INIT(num) TERRAIN_LOAD_ENVIRONMENT, num\n\n// Water Box\n#define COL_WATER_BOX(id, x1, z1, x2, z2, y) id, x1, z1, x2, z2, y\n\n#endif // SURFACE_TERRAINS_H\n"
  },
  {
    "path": "include/text_menu_strings.h.in",
    "content": "#ifndef TEXT_MENU_STRINGS_H\n#define TEXT_MENU_STRINGS_H\n\n// These strings use a different table defined in menu_hud_lut\n// Unlike text_strings.h.in, the charmap is different and\n// uses char values from charmap_menu.txt\n\n/**\n * File Select JP HUD Text\n */\n#if defined(VERSION_JP) || defined(VERSION_SH)\n#define TEXT_JPHUD_MARIO _(\"マリオ\")\n#define TEXT_JPHUD_SELECT_FILE _(\"ファイルセレクト\")\n#define TEXT_JPHUD_CHECK_FILE _(\"どのスコアをみる？\")\n#define TEXT_JPHUD_COPY_FILE _(\"ファイルコピーする\")\n#define TEXT_JPHUD_ERASE_FILE _(\"ファイルけす\")\n#define TEXT_JPHUD_SOUND_SELECT _(\"サウンドセレクト\")\n#endif\n\n#endif // TEXT_MENU_STRINGS_H\n"
  },
  {
    "path": "include/text_strings.h.in",
    "content": "#ifndef TEXT_STRINGS_H\n#define TEXT_STRINGS_H\n\n#include \"text_menu_strings.h\"\n\n/**\n * Global Symbols\n */\n#define TEXT_EMPTY_STRING _(\"\")\n#define TEXT_ZERO _%(\"0\")\n#define TEXT_COIN _(\"$\")\n#define TEXT_STAR _(\"★\")\n#define TEXT_COIN_X _(\"$×\")\n#define TEXT_STAR_X _(\"★×\")\n#define TEXT_VARIABLE_X _(\"×\")\n\n#ifdef VERSION_CN\n#define TEXT_STAR_DIFF _(\"★　\")\n#define TEXT_UNFILLED_STAR _(\"☆　\")\n#else\n#define TEXT_STAR_DIFF TEXT_STAR\n#define TEXT_UNFILLED_STAR _(\"☆\")\n#endif\n\n/**\n * Global Text\n */\n// File Select\n#define TEXT_4DASHES _(\"----\") // Used in Score File Menu\n#ifdef VERSION_CN\n#define TEXT_NEW 0x7E, 0x7F, 0x82, 0x83, 0xFE, 0x80, 0x81, 0x84, 0x85, 0xFF\n#else\n#define TEXT_NEW _(\"NEW\") // New File Text\n#endif\n\n// Ingame Menu\n#ifdef VERSION_CN\n#define TEXT_PAUSE 0x86, 0x87, 0x8A, 0x8B, 0x8E, 0x8F, 0xFE, 0x88, 0x89, 0x8C, 0x8D, 0x90, 0x91, 0xFF\n#define TEXT_HUD_CONGRATULATIONS 0x3A, 0x3B, 0x3E, 0x3F, 0x42, 0x43, 0xFE, 0x3C, 0x3D, 0x40, 0x41, 0x44, 0x45, 0xFF\n#else\n#define TEXT_PAUSE _(\"PAUSE\") // Pause text, Castle Courses\n#define TEXT_HUD_CONGRATULATIONS _(\"CONGRATULATIONS\") // Course Complete Text, Bowser Courses\n#endif\n\n#if defined(VERSION_JP) || defined(VERSION_SH)\n\n/**\n * File Select Text\n */\n\n// Main Screens\n// JPHUD menu strings are defined in \"text_menu_strings.h.in\"\n#define TEXT_MARIO TEXT_JPHUD_MARIO // View Score Menu\n#define TEXT_SELECT_FILE TEXT_JPHUD_SELECT_FILE\n#define TEXT_CHECK_FILE TEXT_JPHUD_CHECK_FILE\n#define TEXT_COPY_FILE TEXT_JPHUD_COPY_FILE\n#define TEXT_ERASE_FILE TEXT_JPHUD_ERASE_FILE\n#define TEXT_SOUND_SELECT TEXT_JPHUD_SOUND_SELECT\n\n#define TEXT_FILE_MARIO_A _(\"マリオＡ\")\n#define TEXT_FILE_MARIO_B _(\"マリオＢ\")\n#define TEXT_FILE_MARIO_C _(\"マリオＣ\")\n#define TEXT_FILE_MARIO_D _(\"マリオＤ\")\n\n// Menu Options\n#define TEXT_SCORE _(\"スコア\")\n#define TEXT_COPY _(\"コピー\")\n#define TEXT_ERASE _(\"けす\")\n\n// Sound Options\n#define TEXT_STEREO _(\"ステレオ\")\n#define TEXT_MONO _(\"モノラル\")\n#define TEXT_HEADSET _(\"ヘッドホン\")\n\n// Misc Menu Text\n#define TEXT_SAVED_DATA_EXISTS _(\"ファイルにデータがはいってます\")\n#define TEXT_NO_SAVED_DATA_EXISTS _(\"ファイルにデータがありません\")\n\n// Inside a Menu\n#define TEXT_RETURN _(\"もどる\")\n#define TEXT_CHECK_SCORE _(\"スコアをみる\")\n#define TEXT_COPY_FILE_BUTTON _(\"ファイルコピー\")\n#define TEXT_ERASE_FILE_BUTTON _(\"ファイルけす\")\n\n// Score Menu\n#define TEXT_HI_SCORE _(\"ハイスコア\")\n#define TEXT_MY_SCORE _(\"マイスコア\")\n#define TEXT_SCORE_MARIO_A _(\"マリオＡ\")\n#define TEXT_SCORE_MARIO_B _(\"マリオＢ\")\n#define TEXT_SCORE_MARIO_C _(\"マリオＣ\")\n#define TEXT_SCORE_MARIO_D _(\"マリオＤ\")\n\n// Copy Menu\n#define TEXT_COPY_IT_TO_WHERE _(\"どこにコピーしますか？\")\n#define TEXT_COPYING_COMPLETED _(\"コピーおわりました\")\n#define TEXT_NO_FILE_TO_COPY_FROM _(\"からのファイルがありません\")\n\n// Erase Menu\n#define TEXT_SURE _(\"ほんと？\")\n#define TEXT_YES _(\"はい\")\n#define TEXT_NO _(\"いいえ\")\n#define TEXT_FILE_MARIO_A_JUST_ERASED _(\"マリオＡをけしました\")\n\n/**\n * Menus Text (Pause, Course Completed)\n */\n// Main Courses\n#define TEXT_COURSE _(\"コース\")\n#define TEXT_MYSCORE _(\"マイスコア\")\n#define TEXT_CONTINUE _(\"つづけて　マリオする？\")\n#define TEXT_EXIT_COURSE _(\"コースからでる？\")\n#define TEXT_CAMERA_ANGLE_R _(\"Ｒボタンのカメラきりかえ\")\n\n// Camera Options\n#define TEXT_LAKITU_MARIO _(\"ジュゲム↔マリオ\")\n#define TEXT_LAKITU_STOP _(\"ジュゲム↔ストップ\")\n#define TEXT_NORMAL_UPCLOSE _(\"（おすすめ）（リアル）\")\n#define TEXT_NORMAL_FIXED _(\"（おすすめ）（とまる）\")\n\n// Course Completed Misc Text\n#define TEXT_CATCH _(\"キャッチ！\")\n#define TEXT_CLEAR _(\"クリア！\")\n#define TEXT_HUD_HI_SCORE _(\"ＨＩＳＣＯＲＥ\")\n\n// Save Options\n#define TEXT_SAVE_AND_CONTINUE _(\"セーブしてつづける？\")\n#define TEXT_SAVE_AND_QUIT _(\"セーブしておわる？\")\n#define TEXT_CONTINUE_WITHOUT_SAVING _(\"セーブしないでつづける？\")\n\n/**\n * Ending Peach cutscene text.\n */\n#define TEXT_FILE_MARIO_EXCLAMATION _(\"マリオ！！\")\n#define TEXT_POWER_STARS_RESTORED _(\"おしろにスターが　もどったのね\")\n#define TEXT_THANKS_TO_YOU _(\"みんな　あなたのおかげだわ！\")\n#define TEXT_THANK_YOU_MARIO _(\"ありがとう　マリオ\")\n#define TEXT_SOMETHING_SPECIAL _(\"なにか　おれいをしなくちゃ・・\")\n#define TEXT_LISTEN_EVERYBODY _(\"さあ　みんな\")\n#define TEXT_LETS_HAVE_CAKE _(\"おいしいケーキを　やきましょう\")\n#define TEXT_FOR_MARIO _(\"マリオの　ために・・・\")\n#define TEXT_FILE_MARIO_QUESTION _(\"マリオ？\")\n\n#endif\n\n#if defined(VERSION_US) || defined(VERSION_EU)\n\n/**\n * File Select Text\n */\n\n// Main Screens\n#define TEXT_MARIO _(\"MARIO\") // View Score Menu\n#define TEXT_SELECT_FILE _(\"SELECT FILE\")\n#define TEXT_CHECK_FILE _(\"CHECK FILE\")\n#define TEXT_COPY_FILE _(\"COPY FILE\")\n#define TEXT_ERASE_FILE _(\"ERASE FILE\")\n#define TEXT_SOUND_SELECT _(\"SOUND SELECT\")\n\n#define TEXT_FILE_MARIO_A _(\"MARIO A\")\n#define TEXT_FILE_MARIO_B _(\"MARIO B\")\n#define TEXT_FILE_MARIO_C _(\"MARIO C\")\n#define TEXT_FILE_MARIO_D _(\"MARIO D\")\n\n// Menu Options\n#define TEXT_SCORE _(\"SCORE\")\n#define TEXT_COPY _(\"COPY\")\n#define TEXT_ERASE _(\"ERASE\")\n\n// Sound Options\n#define TEXT_STEREO _(\"STEREO\")\n#define TEXT_MONO _(\"MONO\")\n#define TEXT_HEADSET _(\"HEADSET\")\n\n// Misc Menu Text\n#define TEXT_SAVED_DATA_EXISTS _(\"SAVED DATA EXITS\") // Misspell\n#define TEXT_NO_SAVED_DATA_EXISTS _(\"NO SAVED DATA EXISTS\")\n\n// Inside a Menu\n#define TEXT_RETURN _(\"RETURN\")\n#define TEXT_CHECK_SCORE _(\"CHECK SCORE\")\n#define TEXT_COPY_FILE_BUTTON _(\"COPY FILE\")\n#define TEXT_ERASE_FILE_BUTTON _(\"ERASE FILE\")\n\n// Score Menu\n#define TEXT_HI_SCORE _(\"HI SCORE\")\n#define TEXT_MY_SCORE _(\"MY SCORE\")\n// Score Mario Text (\"☺\" is the Mario face defined in the US/EU menu char table)\n#define TEXT_SCORE_MARIO_A _(\"☺A\")\n#define TEXT_SCORE_MARIO_B _(\"☺B\")\n#define TEXT_SCORE_MARIO_C _(\"☺C\")\n#define TEXT_SCORE_MARIO_D _(\"☺D\")\n\n// Copy Menu\n#define TEXT_COPY_IT_TO_WHERE _(\"COPY IT TO WHERE?\")\n#define TEXT_COPYING_COMPLETED _(\"COPYING COMPLETED\")\n#define TEXT_NO_FILE_TO_COPY_FROM _(\"NO EMPTY FILE\")\n\n// Erase Menu\n#define TEXT_SURE _(\"SURE?\")\n#define TEXT_YES _(\"YES\")\n#define TEXT_NO _(\"NO\")\n#define TEXT_FILE_MARIO_A_JUST_ERASED _(\"MARIO A JUST ERASED\")\n\n/**\n * Menus Text (Pause, Course Completed)\n */\n// Main Courses\n#define TEXT_COURSE _(\"COURSE\")\n#define TEXT_MYSCORE _(\"MYSCORE\")\n#define TEXT_CONTINUE _(\"CONTINUE\")\n#define TEXT_EXIT_COURSE _(\"EXIT COURSE\")\n#ifndef VERSION_EU // \"R\" text is different in EU\n#define TEXT_CAMERA_ANGLE_R _(\"SET CAMERA ANGLE WITH R\")\n#endif\n\n// Camera Options\n#define TEXT_LAKITU_MARIO _(\"LAKITU + MARIO\")\n#define TEXT_LAKITU_STOP _(\"LAKITU + STOP\")\n#define TEXT_NORMAL_UPCLOSE __(\"(NORMAL)(UP-CLOSE)\")\n#define TEXT_NORMAL_FIXED __(\"(NORMAL)(FIXED)\")\n\n// Course Completed Misc Text\n#define TEXT_CATCH _(\"CATCH\")\n#define TEXT_CLEAR _(\"CLEAR\")\n#define TEXT_HUD_HI_SCORE _(\"HI SCORE\")\n\n// Save Options\n#define TEXT_SAVE_AND_CONTINUE _(\"SAVE & CONTINUE\")\n#define TEXT_SAVE_AND_QUIT _(\"SAVE & QUIT\")\n#define TEXT_CONTINUE_WITHOUT_SAVING _(\"CONTINUE, DON'T SAVE\")\n\n/**\n * Ending Peach cutscene text.\n */\n#define TEXT_FILE_MARIO_EXCLAMATION _(\"Mario!\")\n#define TEXT_POWER_STARS_RESTORED __(\"The power of the Stars is restored to the castle...\")\n#define TEXT_THANKS_TO_YOU __(\"...and it's all thanks to you!\")\n#define TEXT_THANK_YOU_MARIO __(\"Thank you, Mario!\")\n#define TEXT_SOMETHING_SPECIAL __(\"We have to do something special for you...\")\n#define TEXT_LISTEN_EVERYBODY _(\"Listen, everybody,\")\n#define TEXT_LETS_HAVE_CAKE _(\"let's bake a delicious cake...\")\n#define TEXT_FOR_MARIO _(\"...for Mario...\")\n#define TEXT_FILE_MARIO_QUESTION _(\"Mario!\")\n\n#endif\n\n#ifdef VERSION_EU\n\n/**\n * File Select Text\n */\n#define TEXT_RETURN_FR _(\"RETOUR\")\n#define TEXT_RETURN_DE _(\"ZURÜCK\")\n\n#define TEXT_CHECK_SCORE_FR _(\"SCORE\")\n#define TEXT_CHECK_SCORE_DE _(\"LEISTUNG\")\n\n#define TEXT_COPY_FILE_FR _(\"COPIER\")\n#define TEXT_COPY_FILE_DE _(\"KOPIEREN\")\n\n#define TEXT_ERASE_FILE_FR _(\"EFFACER\")\n#define TEXT_ERASE_FILE_DE _(\"LÖSCHEN\")\n\n#define TEXT_SELECT_FILE_FR _(\"CHOISIR  FICHIER\")\n#define TEXT_SELECT_FILE_DE _(\"WwHLE SPIEL\")\n\n#define TEXT_SCORE_FR _(\"SCORE\")\n#define TEXT_SCORE_DE _(\"LEISTUNG\")\n\n#define TEXT_COPY_FR _(\"COPIER\")\n#define TEXT_COPY_DE _(\"KOPIEREN\")\n\n#define TEXT_ERASE_FR _(\"EFFACER\")\n#define TEXT_ERASE_DE _(\"LÖSCHEN\")\n\n#define TEXT_OPTION _(\"OPTION\")  // new in EU\n#define TEXT_OPTION_FR _(\"OPTION\")\n#define TEXT_OPTION_DE _(\"OPTIONEN\")\n\n#define TEXT_CHECK_FILE_FR _(\"VOIR  SCORE\")\n#define TEXT_CHECK_FILE_DE _(\"VON WELCHEM SPIEL\")\n\n#define TEXT_NO_SAVED_DATA_EXISTS_FR _(\"AUCUNE SAUVEGARDE DISPONIBLE\")\n#define TEXT_NO_SAVED_DATA_EXISTS_DE _(\"KEIN SPIEL VORHANDEN\")\n\n#define TEXT_COPY_FILE_BUTTON_FR _(\"COPIER  FICHIER\")\n#define TEXT_COPY_FILE_BUTTON_DE _(\"SPIEL KOPIEREN\")\n\n#define TEXT_COPY_IT_TO_WHERE_FR _(\"COPIER SUR?\")\n#define TEXT_COPY_IT_TO_WHERE_DE _(\"WOHIN KOPIEREN?\")\n\n#define TEXT_COPYING_COMPLETED_FR _(\"COPIE ACHEVEÉ\")\n#define TEXT_COPYING_COMPLETED_DE _(\"SPIEL KOPIERT\")\n\n#define TEXT_SAVED_DATA_EXISTS_FR _(\"SAVEGARDE EXISTANTE\")\n#define TEXT_SAVED_DATA_EXISTS_DE _(\"BEREITS BELEGT\")\n\n#define TEXT_NO_FILE_TO_COPY_FROM_FR _(\"AUCUN FICHIER VIDE\")\n#define TEXT_NO_FILE_TO_COPY_FROM_DE _(\"KEIN PLATZ VORHANDEN\")\n\n#define TEXT_YES_FR _(\"OUI\")\n#define TEXT_YES_DE _(\"JA\")\n\n#define TEXT_NO_FR _(\"NON\")\n#define TEXT_NO_DE _(\"NEIN\")\n\n#define TEXT_ERASE_FILE_BUTTON_FR _(\"EFFACER  FICHIER\")\n#define TEXT_ERASE_FILE_BUTTON_DE _(\"SPIEL LxSCHEN\")\n\n#define TEXT_SURE_FR _(\"OK?\")\n#define TEXT_SURE_DE _(\"SICHER?\")\n\n#define TEXT_FILE_MARIO_A_JUST_ERASED_FR _(\"MARIO A EFFACÉ\")\n#define TEXT_FILE_MARIO_A_JUST_ERASED_DE _(\"MARIO A GELÖSCHT\")\n\n#define TEXT_SOUND_SELECT_FR _(\"SON\")\n#define TEXT_SOUND_SELECT_DE _(\"SOUND\")\n\n#define TEXT_LANGUAGE_SELECT _(\"LANGUAGE SELECT\")  // new in EU\n#define TEXT_LANGUAGE_SELECT_FR _(\"SELECTION LANGUE\")\n#define TEXT_LANGUAGE_SELECT_DE _(\"WwHLE SPRACHE\")\n\n#define TEXT_STEREO_FR _(\"STÉRÉO\")\n#define TEXT_MONO_FR _(\"MONO\")\n#define TEXT_HEADSET_FR _(\"CASQUE\")\n\n#define TEXT_STEREO_DE _(\"STEREO\")\n#define TEXT_MONO_DE _(\"MONO\")\n#define TEXT_HEADSET_DE _(\"PHONES\")\n\n#define TEXT_ENGLISH _(\"ENGLISH\")\n#define TEXT_FRENCH _(\"FRANÇAIS\")\n#define TEXT_GERMAN _(\"DEUTSCH\")\n\n#define TEXT_HI_SCORE_FR _(\"MEILLEUR SCORE\")\n#define TEXT_HI_SCORE_DE _(\"BESTLEISTUNG\")\n\n#define TEXT_MY_SCORE_FR _(\"MON SCORE\")\n#define TEXT_MY_SCORE_DE _(\"LEISTUNG\")\n\n#define TEXT_NEW_FR _(\"VIDE\")\n#define TEXT_NEW_DE _(\"FREI\")\n\n\n/**\n * Menus Text (Pause, Course Completed)\n */\n// Main Courses\n// English, \"R\" text is different\n#define TEXT_CAMERA_ANGLE_R             _(\"SET CAMERA ANGLE WITH [R]\")\n// French\n#define TEXT_COURSE_FR                  _(\"NIVEAU\")\n#define TEXT_MY_SCORE_FR                _(\"MON SCORE\")\n#define TEXT_CONTINUE_FR                _(\"CONTINUER\")\n#define TEXT_EXIT_COURSE_FR             _(\"QUITTER NIVEAU\")\n#define TEXT_CAMERA_ANGLE_R_FR          _(\"RÉGLAGE CAMÉRA AVEC [R]\")\n// German\n#define TEXT_COURSE_DE                  _(\"KURS\")\n#define TEXT_MY_SCORE_DE                _(\"LEISTUNG\")\n#define TEXT_CONTINUE_DE                _(\"WEITER\")\n#define TEXT_EXIT_COURSE_DE             _(\"KURS VERLASSEN\")\n#define TEXT_CAMERA_ANGLE_R_DE          _(\"KAMERA MIT [R] VERSTELLEN\")\n\n// Camera Options\n// French\n#define TEXT_NORMAL_UPCLOSE_FR          __(\"(NORMAL)(GROS-PLAN)\")\n#define TEXT_NORMAL_FIXED_FR            __(\"(NORMAL)(FIXE)\")\n// German\n#define TEXT_NORMAL_UPCLOSE_DE          __(\"(NORMAL)(WEIT-ZOOM)\")\n#define TEXT_NORMAL_FIXED_DE            __(\"(NORMAL)(STATIV)\")\n\n// Course Completed Misc Text\n// French\n#define TEXT_HUD_HI_SCORE_FR            _(\"MEILLEUR SCORE\")\n#define TEXT_HUD_CONGRATULATIONS_FR     _(\"FELICITATIONS\")\n// German\n#define TEXT_HUD_HI_SCORE_DE            _(\"BESTLEISTUNG\")\n#define TEXT_HUD_CONGRATULATIONS_DE     _(\"GRATULATION\")\n\n// Save Options\n// French\n#define TEXT_SAVE_AND_CONTINUE_FR       _(\"SAUVEGARDER & CONTINUER\")\n#define TEXT_SAVE_AND_QUIT_FR           _(\"SAUVEGARDER & QUITTER\")\n#define TEXT_CONTINUE_WITHOUT_SAVING_FR _(\"CONTINUER SANS SAUVEGARDER\")\n// German\n#define TEXT_SAVE_AND_CONTINUE_DE       _(\"SPEICHERN & WEITER\")\n#define TEXT_SAVE_AND_QUIT_DE           _(\"SPEICHERN & ENDE\")\n#define TEXT_CONTINUE_WITHOUT_SAVING_DE _(\"WEITER OHNE ZU SPEICHERN\")\n\n/**\n * Ending Peach cutscene text.\n */\n// French\n#define TEXT_POWER_STARS_RESTORED_FR _(\"Grâce aux étoiles, le château a retrouvé ses pouvoirs...\")\n#define TEXT_THANKS_TO_YOU_FR        _(\"...et ceci grâce à toi!\")\n#define TEXT_THANK_YOU_MARIO_FR      _(\"Merci, Mario!\")\n#define TEXT_SOMETHING_SPECIAL_FR    _(\"Tu mérites une récompense...\")\n#define TEXT_COME_ON_EVERYBODY_FR    _(\"Venez les amis...\")\n#define TEXT_LETS_HAVE_CAKE_FR       _(\"Allons préparer un délicieux gâteau...\")\n#define TEXT_FOR_MARIO_FR            _(\"...pour Mario...\")\n// German\n#define TEXT_POWER_STARS_RESTORED_DE _(\"Die Macht der Sterne ruht wieder sicher im Schloss...\")\n#define TEXT_THANKS_TO_YOU_DE        _(\"...und alles dank Deiner Hilfe!\")\n#define TEXT_THANK_YOU_MARIO_DE      _(\"Vielen Dank, Mario!\")\n#define TEXT_SOMETHING_SPECIAL_DE    _(\"Wir haben eine Überraschung für Dich...\")\n#define TEXT_COME_ON_EVERYBODY_DE    _(\"Hört alle her...\")\n#define TEXT_LETS_HAVE_CAKE_DE       _(\"Laßt uns einen leckeren Kuchen backen...\")\n#define TEXT_FOR_MARIO_DE            _(\"...für Mario...\")\n\n/**\n * Course Table names for Score Menu Save view\n */\n#define TEXT_MENU_BOB _(\" 1 BOB-OMB BATTLEFIELD\")\n#define TEXT_MENU_WF _(\" 2 WHOMP'S FORTRESS\")\n#define TEXT_MENU_JRB _(\" 3 JOLLY ROGER BAY\")\n#define TEXT_MENU_CCM _(\" 4 COOL, COOL MOUNTAIN\")\n#define TEXT_MENU_BBH _(\" 5 BIG BOO'S HAUNT\")\n#define TEXT_MENU_HMC _(\" 6 HAZY MAZE CAVE\")\n#define TEXT_MENU_LLL _(\" 7 LETHAL LAVA LAND\")\n#define TEXT_MENU_SSL _(\" 8 SHIFTING SAND LAND\")\n#define TEXT_MENU_DDD _(\" 9 DIRE, DIRE DOCKS\")\n#define TEXT_MENU_SL _(\"10 SNOWMAN'S LAND\")\n#define TEXT_MENU_WDW _(\"11 WET-DRY WORLD\")\n#define TEXT_MENU_TTM _(\"12 TALL, TALL MOUNTAIN\")\n#define TEXT_MENU_THI _(\"13 TINY-HUGE ISLAND\")\n#define TEXT_MENU_TTC _(\"14 TICK TOCK CLOCK\")\n#define TEXT_MENU_RR _(\"15 RAINBOW RIDE\")\n#define TEXT_MENU_BITDW _(\"   BOWSER IN THE DARK WORLD\")\n#define TEXT_MENU_BITFS _(\"   BOWSER IN THE FIRE SEA\")\n#define TEXT_MENU_BITS _(\"   BOWSER IN THE SKY\")\n#define TEXT_MENU_PSS _(\"   THE PRINCESS'S SECRET SLIDE\")\n#define TEXT_MENU_COTMC _(\"   CAVERN OF THE METAL CAP\")\n#define TEXT_MENU_TOTWC _(\"   TOWER OF THE WING CAP\")\n#define TEXT_MENU_VCUTM _(\"   VANISH CAP UNDER THE MOAT\")\n#define TEXT_MENU_WMOTR _(\"   WING MARIO OVER THE RAINBOW\")\n#define TEXT_MENU_SA _(\"   THE SECRET AQUARIUM\")\n#define TEXT_MENU_NONE _(\"\")\n#define TEXT_MENU_STARS _(\"   CASTLE SECRET STARS\")\n\n#define TEXT_MENU_BOB_FR _(\" 1 BATAILLE DE BOB-OMB\")\n#define TEXT_MENU_WF_FR _(\" 2 FORTERESSE DE WHOMP\")\n#define TEXT_MENU_JRB_FR _(\" 3 BAIE DES PIRATES\")\n#define TEXT_MENU_CCM_FR _(\" 4 MONTAGNE GLA-GLA\")\n#define TEXT_MENU_BBH_FR _(\" 5 MANOIR DE BIG BOO\")\n#define TEXT_MENU_HMC_FR _(\" 6 CAVERNE BRUMEUSE\")\n#define TEXT_MENU_LLL_FR _(\" 7 LAVES FATALES\")\n#define TEXT_MENU_SSL_FR _(\" 8 SABLES TROP MOUVANTS\")\n#define TEXT_MENU_DDD_FR _(\" 9 AFFREUX BASSIN\")\n#define TEXT_MENU_SL_FR _(\"10 CHEZ LE ROI DES NEIGES\")\n#define TEXT_MENU_WDW_FR _(\"11 MONDE TREMPE-SECHE\")\n#define TEXT_MENU_TTM_FR _(\"12 TROP HAUTE MONTAGNE\")\n#define TEXT_MENU_THI_FR _(\"13 ILE GRANDS-PETITS\")\n#define TEXT_MENU_TTC_FR _(\"14 HORLOGE TIC-TAC\")\n#define TEXT_MENU_RR_FR _(\"15 COURSE ARC-EN-CIEL\")\n#define TEXT_MENU_BITDW_FR _(\"   BOWSER DES TENEBRES\")\n#define TEXT_MENU_BITFS_FR _(\"   BOWSER DES LAVES\")\n#define TEXT_MENU_BITS_FR _(\"   BOWSER DES CIEUX\")\n#define TEXT_MENU_PSS_FR _(\"   GLISSADE DE LA PRINCESSE\")\n#define TEXT_MENU_COTMC_FR _(\"   MINE DES CASQUETTES-METAL\")\n#define TEXT_MENU_TOTWC_FR _(\"   INTERRUPTEUR DE LA TOUR AILEE\")\n#define TEXT_MENU_VCUTM_FR _(\"   INVISIBLE SOUS LES DOUVES\")\n#define TEXT_MENU_WMOTR_FR _(\"   AU-DELA DE L'ARC-EN-CIEL\")\n#define TEXT_MENU_SA_FR _(\"   AQUARIUM SECRET\")\n#define TEXT_MENU_NONE_FR _(\"\")\n#define TEXT_MENU_STARS_FR _(\"   ETOILES SECRETES\")\n\n#define TEXT_MENU_BOB_DE _(\" 1 BOB-OMBS BOMBENBERG\")\n#define TEXT_MENU_WF_DE _(\" 2 WUMMPS WUCHTWALL\")\n#define TEXT_MENU_JRB_DE _(\" 3 PIRATENBUCHT PANIK\")\n#define TEXT_MENU_CCM_DE _(\" 4 BIBBERBERG BOB\")\n#define TEXT_MENU_BBH_DE _(\" 5 BIG BOOS BURG\")\n#define TEXT_MENU_HMC_DE _(\" 6 GRÜNE GIFTGROTTE\")\n#define TEXT_MENU_LLL_DE _(\" 7 LAVA LAGUNE\")\n#define TEXT_MENU_SSL_DE _(\" 8 WOBIWABA WÜSTE\")\n#define TEXT_MENU_DDD_DE _(\" 9 WILDE WASSERWERFT\")\n#define TEXT_MENU_SL_DE _(\"10 FROSTBEULEN FRUST\")\n#define TEXT_MENU_WDW_DE _(\"11 ATLANTIS AQUARIA\")\n#define TEXT_MENU_TTM_DE _(\"12 FLIEGENPILZ FIASKO\")\n#define TEXT_MENU_THI_DE _(\"13 GULLIVER GUMBA\")\n#define TEXT_MENU_TTC_DE _(\"14 TICK TACK TRAUMA\")\n#define TEXT_MENU_RR_DE _(\"15 REGENBOGEN RASEREI\")\n#define TEXT_MENU_BITDW_DE _(\"   BOWSERS SCHATTENWELT\")\n#define TEXT_MENU_BITFS_DE _(\"   BOWSERS LAVASEE\")\n#define TEXT_MENU_BITS_DE _(\"   BOWSERS LUFTSCHLOSS\")\n#define TEXT_MENU_PSS_DE _(\"   TOADSTOOLS RUTSCHBAHN\")\n#define TEXT_MENU_COTMC_DE _(\"   GRÜNER SCHALTERPALAST\")\n#define TEXT_MENU_TOTWC_DE _(\"   ROTER SCHALTERPALAST\")\n#define TEXT_MENU_VCUTM_DE _(\"   BLAUER SCHALTERPALAST\")\n#define TEXT_MENU_WMOTR_DE _(\"   REGENBOGEN FEUERWERK\")\n#define TEXT_MENU_SA_DE _(\"   VERSTECKTES AQUARIUM\")\n#define TEXT_MENU_NONE_DE _(\"\")\n#define TEXT_MENU_STARS_DE _(\"   GEHEIME STERNE\")\n#endif // VERSION_EU\n\n#ifdef VERSION_CN\n\n/**\n * File Select Text\n */\n\n// Main Screens\n// JPHUD menu strings are defined in \"text_menu_strings.h.in\"\n#define TEXT_MARIO 0x76, 0x77, 0x7A, 0x7B, 0xFE, 0x78, 0x79, 0x7C, 0x7D, 0xFF\n#define TEXT_SELECT_FILE 0x96, 0x97, 0x9A, 0x9B, 0x9E, 0x9F, 0xFE, 0x98, 0x99, 0x9C, 0x9D, 0xA0, 0xA1, 0xFF\n#define TEXT_CHECK_FILE 0x46, 0x47, 0x4A, 0x4B, 0x4E, 0x4F, 0xFE, 0x48, 0x49, 0x4C, 0x4D, 0x50, 0x51, 0xFF\n#define TEXT_COPY_FILE 0x52, 0x53, 0x56, 0x57, 0x5A, 0x5B, 0xFE, 0x54, 0x55, 0x58, 0x59, 0x5C, 0x5D, 0xFF\n#define TEXT_ERASE_FILE 0x5E, 0x5F, 0x62, 0x63, 0x66, 0x67, 0xFE, 0x60, 0x61, 0x64, 0x65, 0x68, 0x69, 0xFF\n#define TEXT_SOUND_SELECT 0xA2, 0xA3, 0xA6, 0xA7, 0xAA, 0xAB, 0xFE, 0xA4, 0xA5, 0xA8, 0xA9, 0xAC, 0xAD, 0xFF\n\n#define TEXT_FILE_MARIO_A _(\"马力欧　A\")\n#define TEXT_FILE_MARIO_B _(\"马力欧　B\")\n#define TEXT_FILE_MARIO_C _(\"马力欧　C\")\n#define TEXT_FILE_MARIO_D _(\"马力欧　D\")\n\n// Menu Options\n#define TEXT_SCORE _(\"积分\")\n#define TEXT_COPY _(\"复制\")\n#define TEXT_ERASE _(\"删除\")\n\n// Sound Options\n#define TEXT_STEREO _(\"立体声\")\n#define TEXT_MONO _(\"单声道\")\n#define TEXT_HEADSET _(\"耳机\")\n\n// Misc Menu Text\n#define TEXT_SAVED_DATA_EXISTS _(\"有保存的数据\")\n#define TEXT_NO_SAVED_DATA_EXISTS _(\"没有保存的数据\")\n\n// Inside a Menu\n#define TEXT_RETURN _(\"返回\")\n#define TEXT_CHECK_SCORE _(\"查看积分\")\n#define TEXT_COPY_FILE_BUTTON _(\"复制文件\")\n#define TEXT_ERASE_FILE_BUTTON _(\"删除文件\")\n\n// Score Menu\n#define TEXT_HI_SCORE _(\"最高积分\")\n#define TEXT_MY_SCORE _(\"我的积分\")\n#define TEXT_SCORE_MARIO_A _(\"☺A\")\n#define TEXT_SCORE_MARIO_B _(\"☺B\")\n#define TEXT_SCORE_MARIO_C _(\"☺C\")\n#define TEXT_SCORE_MARIO_D _(\"☺D\")\n\n// Copy Menu\n#define TEXT_COPY_IT_TO_WHERE _(\"复制到何处\")\n#define TEXT_COPYING_COMPLETED _(\"复制完毕\")\n#define TEXT_NO_FILE_TO_COPY_FROM _(\"没有空文件\")\n\n// Erase Menu\n#define TEXT_SURE _(\"确定吗？\")\n#define TEXT_YES _(\"是\")\n#define TEXT_NO _(\"否\")\n#define TEXT_FILE_MARIO_A_JUST_ERASED _(\"文件已删除\")\n\n/**\n * Menus Text (Pause, Course Completed)\n */\n// Main Courses\n#define TEXT_COURSE _(\"关卡\")\n#define TEXT_MYSCORE TEXT_MY_SCORE\n#define TEXT_CONTINUE _(\"继续\")\n#define TEXT_EXIT_COURSE _(\"退出\")\n#define TEXT_CAMERA_ANGLE_R _(\"使用[R]键设定视角\")\n\n// Camera Options\n#define TEXT_LAKITU_MARIO TEXT_EMPTY_STRING\n#define TEXT_LAKITU_STOP TEXT_EMPTY_STRING\n#define TEXT_NORMAL_UPCLOSE _(\"特写镜头\")\n#define TEXT_NORMAL_FIXED _(\"固定镜头\")\n\n// Course Completed Misc Text\n#define TEXT_CATCH _(\"接住\")\n#define TEXT_CLEAR _(\"清除\")\n#define TEXT_HUD_HI_SCORE 0x6A, 0x6B, 0x6E, 0x6F, 0x72, 0x73, 0xFE, 0x6C, 0x6D, 0x70, 0x71, 0x74, 0x75, 0xFF\n\n// Save Options\n#define TEXT_SAVE_AND_CONTINUE _(\"保存并继续\")\n#define TEXT_SAVE_AND_QUIT _(\"保存并退出\")\n#define TEXT_CONTINUE_WITHOUT_SAVING _(\"不必保存\")\n\n// File Score Menu Icons\n#define TEXT_ARROW_L _(\"◀　L\")\n#define TEXT_R_ARROW _(\"R　▶\")\n\n#endif // VERSION_CN\n\n#endif // TEXT_STRINGS_H\n\n\n"
  },
  {
    "path": "include/textures.h",
    "content": "#ifndef TEXTURES_H\n#define TEXTURES_H\n\n#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\n// cave\nextern const u8 cave_09000000[];\nextern const u8 cave_09001000[];\nextern const u8 cave_09001800[];\nextern const u8 cave_09002800[];\nextern const u8 cave_09003000[];\nextern const u8 cave_09003800[];\nextern const u8 cave_09004800[];\nextern const u8 cave_09005800[];\nextern const u8 cave_09006800[];\nextern const u8 cave_09007000[];\nextern const u8 cave_09007800[];\nextern const u8 cave_09008800[];\nextern const u8 cave_09009800[];\nextern const u8 cave_0900A000[];\nextern const u8 cave_0900A800[];\nextern const u8 cave_0900B800[];\nextern const u8 cave_0900C000[];\n\n// fire\nextern const u8 fire_09000000[];\nextern const u8 fire_09000800[];\nextern const u8 fire_09001000[];\nextern const u8 fire_09001800[];\nextern const u8 fire_09002000[];\nextern const u8 fire_09002800[];\nextern const u8 fire_09003000[];\nextern const u8 fire_09003800[];\nextern const u8 fire_09004000[];\nextern const u8 fire_09004800[];\nextern const u8 fire_09005000[];\nextern const u8 fire_09005800[];\nextern const u8 fire_09006000[];\nextern const u8 fire_09006800[];\nextern const u8 fire_09007000[];\nextern const u8 fire_09007800[];\nextern const u8 fire_09008000[];\nextern const u8 fire_09008800[];\nextern const u8 fire_09009000[];\nextern const u8 fire_09009800[];\nextern const u8 fire_0900A000[];\nextern const u8 fire_0900A800[];\nextern const u8 fire_0900B000[];\nextern const u8 fire_0900B800[];\n\n// generic\nextern const u8 generic_09000000[];\nextern const u8 generic_09000800[];\nextern const u8 generic_09001000[];\nextern const u8 generic_09001800[];\nextern const u8 generic_09002000[];\nextern const u8 generic_09002800[];\nextern const u8 generic_09003000[];\nextern const u8 generic_09003800[];\nextern const u8 generic_09004000[];\nextern const u8 generic_09004800[];\nextern const u8 generic_09005000[];\nextern const u8 generic_09005800[];\nextern const u8 generic_09006000[];\nextern const u8 generic_09007000[];\nextern const u8 generic_09007800[];\nextern const u8 generic_09008000[];\nextern const u8 generic_09008800[];\nextern const u8 generic_09009000[];\nextern const u8 generic_09009800[];\nextern const u8 generic_0900A000[];\nextern const u8 generic_0900A800[];\nextern const u8 generic_0900B000[];\n\n// grass\nextern const u8 grass_09000000[];\nextern const u8 grass_09000800[];\nextern const u8 grass_09001000[];\nextern const u8 grass_09001800[];\nextern const u8 grass_09002000[];\nextern const u8 grass_09002800[];\nextern const u8 grass_09003000[];\nextern const u8 grass_09003800[];\nextern const u8 grass_09004000[];\nextern const u8 grass_09004800[];\nextern const u8 grass_09005000[];\nextern const u8 grass_09005800[];\nextern const u8 grass_09006000[];\nextern const u8 grass_09006800[];\nextern const u8 grass_09007000[];\nextern const u8 grass_09007800[];\nextern const u8 grass_09008000[];\nextern const u8 grass_09008800[];\nextern const u8 grass_09009000[];\nextern const u8 grass_09009800[];\nextern const u8 grass_0900A000[];\nextern const u8 grass_0900A800[];\nextern const u8 grass_0900B000[];\nextern const u8 grass_0900B800[];\n\n// inside\nextern const u8 inside_09000000[];\nextern const u8 inside_09001000[];\nextern const u8 inside_09002000[];\nextern const u8 inside_09003000[];\nextern const u8 inside_09003800[];\nextern const u8 inside_09004000[];\nextern const u8 inside_09004800[];\nextern const u8 inside_09005000[];\nextern const u8 inside_09005800[];\nextern const u8 inside_09006000[];\nextern const u8 inside_09007000[];\nextern const u8 inside_09008000[];\nextern const u8 inside_09008800[];\nextern const u8 inside_09009000[];\nextern const u8 inside_0900A000[];\nextern const u8 inside_0900B000[];\nextern const u8 inside_0900B800[];\n\n// machine\nextern const u8 machine_09000000[];\nextern const u8 machine_09000800[];\nextern const u8 machine_09001000[];\nextern const u8 machine_09001800[];\nextern const u8 machine_09002000[];\nextern const u8 machine_09002800[];\nextern const u8 machine_09003000[];\nextern const u8 machine_09003800[];\nextern const u8 machine_09004000[];\nextern const u8 machine_09005000[];\nextern const u8 machine_09005800[];\nextern const u8 machine_09006000[];\nextern const u8 machine_09006800[];\nextern const u8 machine_09007000[];\nextern const u8 machine_09007800[];\nextern const u8 machine_09008000[];\nextern const u8 machine_09008400[];\n\n// mountain\nextern const u8 mountain_09000000[];\nextern const u8 mountain_09000800[];\nextern const u8 mountain_09001800[];\nextern const u8 mountain_09002800[];\nextern const u8 mountain_09003000[];\nextern const u8 mountain_09003800[];\nextern const u8 mountain_09004000[];\nextern const u8 mountain_09004800[];\nextern const u8 mountain_09005000[];\nextern const u8 mountain_09005800[];\nextern const u8 mountain_09006800[];\nextern const u8 mountain_09007000[];\nextern const u8 mountain_09007800[];\nextern const u8 mountain_09008000[];\nextern const u8 mountain_09008800[];\nextern const u8 mountain_09009800[];\nextern const u8 mountain_0900A000[];\nextern const u8 mountain_0900A800[];\nextern const u8 mountain_0900B000[];\nextern const u8 mountain_0900B800[];\nextern const u8 mountain_0900C000[];\n\n// outside\nextern const u8 outside_09000000[];\nextern const u8 outside_09000800[];\nextern const u8 outside_09001000[];\nextern const u8 outside_09002000[];\nextern const u8 outside_09003000[];\nextern const u8 outside_09003800[];\nextern const u8 outside_09004000[];\nextern const u8 outside_09004800[];\nextern const u8 outside_09005800[];\nextern const u8 outside_09006000[];\nextern const u8 outside_09006800[];\nextern const u8 outside_09007800[];\nextern const u8 outside_09008000[];\nextern const u8 outside_09008800[];\nextern const u8 outside_09009000[];\nextern const u8 outside_09009800[];\nextern const u8 outside_0900A000[];\nextern const u8 outside_0900A800[];\nextern const u8 outside_0900B000[];\nextern const u8 outside_0900B400[];\nextern const u8 outside_0900BC00[];\n\n// sky\nextern const u8 sky_09000000[];\nextern const u8 sky_09000800[];\nextern const u8 sky_09001000[];\nextern const u8 sky_09001800[];\nextern const u8 sky_09002000[];\nextern const u8 sky_09003000[];\nextern const u8 sky_09003800[];\nextern const u8 sky_09004800[];\nextern const u8 sky_09005000[];\nextern const u8 sky_09005800[];\nextern const u8 sky_09006000[];\nextern const u8 texture_metal_hole[];\nextern const u8 sky_09007000[];\nextern const u8 sky_09007800[];\nextern const u8 sky_09008000[];\n\n// snow\nextern const u8 snow_09000000[];\nextern const u8 snow_09000800[];\nextern const u8 snow_09001000[];\nextern const u8 snow_09002000[];\nextern const u8 snow_09002800[];\nextern const u8 snow_09003000[];\nextern const u8 snow_09003800[];\nextern const u8 snow_09004000[];\nextern const u8 snow_09004800[];\nextern const u8 snow_09005000[];\nextern const u8 snow_09005800[];\nextern const u8 snow_09006000[];\nextern const u8 snow_09006800[];\nextern const u8 snow_09007000[];\nextern const u8 snow_09008000[];\nextern const u8 snow_09008800[];\nextern const u8 snow_09009000[];\nextern const u8 snow_09009800[];\n\n// spooky\nextern const u8 spooky_09000000[];\nextern const u8 spooky_09000800[];\nextern const u8 spooky_09001000[];\nextern const u8 spooky_09001800[];\nextern const u8 spooky_09002800[];\nextern const u8 spooky_09003800[];\nextern const u8 spooky_09004800[];\nextern const u8 spooky_09005000[];\nextern const u8 spooky_09006000[];\nextern const u8 spooky_09006800[];\nextern const u8 spooky_09007000[];\nextern const u8 spooky_09008000[];\nextern const u8 spooky_09008800[];\nextern const u8 spooky_09009000[];\nextern const u8 spooky_0900A000[];\nextern const u8 spooky_0900A800[];\nextern const u8 spooky_0900B000[];\nextern const u8 spooky_0900B800[];\n\n// water\nextern const u8 water_09000000[];\nextern const u8 water_09000800[];\nextern const u8 water_09001800[];\nextern const u8 water_09002800[];\nextern const u8 water_09003800[];\nextern const u8 water_09004800[];\nextern const u8 water_09005800[];\nextern const u8 water_09006000[];\nextern const u8 water_09006800[];\nextern const u8 water_09007800[];\nextern const u8 water_09008800[];\nextern const u8 water_09009000[];\nextern const u8 water_0900A000[];\nextern const u8 water_0900A800[];\nextern const u8 water_0900B800[];\n\n// effect\nextern const u8 *const flower_bubbles_textures_ptr_0B002008[];\nextern const u8 *const lava_bubble_ptr_0B006020[];\nextern const u8 *const bubble_ptr_0B006848[];\nextern const Gfx tiny_bubble_dl_0B006A50[];\nextern const Gfx tiny_bubble_dl_0B006AB0[];\nextern const Gfx tiny_bubble_dl_0B006CD8[];\nextern const Gfx tiny_bubble_dl_0B006D38[];\nextern const Gfx tiny_bubble_dl_0B006D68[];\n\n// title_screen_bg\nextern const Gfx title_screen_bg_dl_0A000100[];\nextern const Gfx title_screen_bg_dl_0A000118[];\nextern const Gfx title_screen_bg_dl_0A000130[];\nextern const Gfx title_screen_bg_dl_0A000148[];\nextern const Gfx title_screen_bg_dl_0A000160[];\nextern const Gfx title_screen_bg_dl_0A000178[];\nextern const Gfx title_screen_bg_dl_0A000190[];\nextern const u8 *const mario_title_texture_table[];\nextern const u8 *const game_over_texture_table[];\n\n#endif // TEXTURES_H\n"
  },
  {
    "path": "include/trig_tables.inc.c",
    "content": "f32 gSineTable[] = {\n    0.000000000f, 0.0015339801f,0.0030679568f,0.004601926f,\n    0.0061358847f,0.007669829f, 0.009203754f, 0.010737659f,\n    0.012271538f, 0.0138053885f,0.015339206f, 0.016872987f,\n    0.018406730f, 0.019940428f, 0.021474080f, 0.023007682f,\n    0.024541229f, 0.026074719f, 0.027608145f, 0.029141508f,\n    0.030674804f, 0.032208025f, 0.033741172f, 0.035274237f,\n    0.036807224f, 0.038340122f, 0.039872926f, 0.041405641f,\n    0.042938258f, 0.044470772f, 0.046003181f, 0.047535483f,\n    0.049067676f, 0.050599750f, 0.052131705f, 0.053663537f,\n    0.055195246f, 0.056726821f, 0.058258265f, 0.059789572f,\n    0.061320737f, 0.062851757f, 0.064382628f, 0.065913349f,\n    0.067443922f, 0.068974331f, 0.070504576f, 0.072034650f,\n    0.073564567f, 0.075094298f, 0.076623864f, 0.078153245f,\n    0.079682440f, 0.081211448f, 0.082740262f, 0.084268890f,\n    0.085797310f, 0.087325536f, 0.088853553f, 0.090381362f,\n    0.091908954f, 0.093436338f, 0.094963498f, 0.096490428f,\n    0.098017141f, 0.099543616f, 0.101069860f, 0.102595866f,\n    0.104121633f, 0.105647154f, 0.107172422f, 0.108697444f,\n    0.110222206f, 0.111746714f, 0.113270953f, 0.114794925f,\n    0.116318628f, 0.117842063f, 0.119365215f, 0.120888084f,\n    0.122410677f, 0.123932973f, 0.125454977f, 0.126976699f,\n    0.128498107f, 0.130019218f, 0.131540030f, 0.133060530f,\n    0.134580702f, 0.136100575f, 0.137620121f, 0.139139339f,\n    0.140658244f, 0.142176807f, 0.143695027f, 0.145212919f,\n    0.146730468f, 0.148247674f, 0.149764538f, 0.151281044f,\n    0.152797192f, 0.154312968f, 0.155828401f, 0.157343462f,\n    0.158858150f, 0.160372451f, 0.161886394f, 0.163399950f,\n    0.164913118f, 0.166425899f, 0.167938292f, 0.169450298f,\n    0.170961887f, 0.172473088f, 0.173983872f, 0.175494254f,\n    0.177004218f, 0.178513765f, 0.180022895f, 0.181531608f,\n    0.183039889f, 0.184547737f, 0.186055154f, 0.187562123f,\n    0.189068660f, 0.190574750f, 0.192080393f, 0.193585590f,\n    0.195090324f, 0.196594596f, 0.198098406f, 0.199601755f,\n    0.201104641f, 0.202607036f, 0.204108968f, 0.205610409f,\n    0.207111374f, 0.208611846f, 0.210111842f, 0.211611331f,\n    0.213110313f, 0.214608818f, 0.216106802f, 0.217604280f,\n    0.219101235f, 0.220597684f, 0.222093627f, 0.223589033f,\n    0.225083917f, 0.226578265f, 0.228072077f, 0.229565367f,\n    0.231058106f, 0.232550308f, 0.234041959f, 0.235533059f,\n    0.237023607f, 0.238513589f, 0.240003020f, 0.241491884f,\n    0.242980182f, 0.244467899f, 0.245955050f, 0.247441620f,\n    0.248927608f, 0.250413001f, 0.251897812f, 0.253382027f,\n    0.254865646f, 0.256348670f, 0.257831097f, 0.259312928f,\n    0.260794103f, 0.262274712f, 0.263754666f, 0.265234023f,\n    0.266712755f, 0.268190861f, 0.269668311f, 0.271145165f,\n    0.272621363f, 0.274096906f, 0.275571823f, 0.277046084f,\n    0.278519690f, 0.279992640f, 0.281464934f, 0.282936573f,\n    0.284407526f, 0.285877824f, 0.287347466f, 0.288816422f,\n    0.290284663f, 0.291752249f, 0.293219149f, 0.294685364f,\n    0.296150893f, 0.297615707f, 0.299079835f, 0.300543249f,\n    0.302005947f, 0.303467959f, 0.304929227f, 0.306389809f,\n    0.307849646f, 0.309308767f, 0.310767144f, 0.312224805f,\n    0.313681751f, 0.315137923f, 0.316593379f, 0.318048090f,\n    0.319502026f, 0.320955247f, 0.322407693f, 0.323859364f,\n    0.325310290f, 0.326760441f, 0.328209847f, 0.329658449f,\n    0.331106305f, 0.332553357f, 0.333999664f, 0.335445136f,\n    0.336889863f, 0.338333756f, 0.339776874f, 0.341219217f,\n    0.342660725f, 0.344101429f, 0.345541328f, 0.346980423f,\n    0.348418683f, 0.349856138f, 0.351292759f, 0.352728546f,\n    0.354163527f, 0.355597675f, 0.357030958f, 0.358463407f,\n    0.359895051f, 0.361325800f, 0.362755716f, 0.364184797f,\n    0.365612984f, 0.367040336f, 0.368466824f, 0.369892448f,\n    0.371317208f, 0.372741073f, 0.374164075f, 0.375586182f,\n    0.377007425f, 0.378427744f, 0.379847199f, 0.381265759f,\n    0.382683426f, 0.384100199f, 0.385516047f, 0.386931002f,\n    0.388345033f, 0.389758170f, 0.391170382f, 0.392581671f,\n    0.393992037f, 0.395401478f, 0.396809995f, 0.398217559f,\n    0.399624199f, 0.401029885f, 0.402434647f, 0.403838456f,\n    0.405241311f, 0.406643212f, 0.408044159f, 0.409444153f,\n    0.410843164f, 0.412241220f, 0.413638324f, 0.415034413f,\n    0.416429549f, 0.417823702f, 0.419216901f, 0.420609087f,\n    0.422000259f, 0.423390478f, 0.424779683f, 0.426167876f,\n    0.427555084f, 0.428941280f, 0.430326492f, 0.431710660f,\n    0.433093816f, 0.434475958f, 0.435857087f, 0.437237173f,\n    0.438616246f, 0.439994276f, 0.441371262f, 0.442747235f,\n    0.444122136f, 0.445496023f, 0.446868837f, 0.448240608f,\n    0.449611336f, 0.450980991f, 0.452349573f, 0.453717113f,\n    0.455083579f, 0.456448972f, 0.457813293f, 0.459176540f,\n    0.460538715f, 0.461899787f, 0.463259786f, 0.464618683f,\n    0.465976506f, 0.467333198f, 0.468688816f, 0.470043331f,\n    0.471396744f, 0.472749025f, 0.474100202f, 0.475450277f,\n    0.476799220f, 0.478147060f, 0.479493767f, 0.480839342f,\n    0.482183784f, 0.483527064f, 0.484869242f, 0.486210287f,\n    0.487550169f, 0.488888890f, 0.490226477f, 0.491562903f,\n    0.492898196f, 0.494232297f, 0.495565265f, 0.496897042f,\n    0.498227656f, 0.499557108f, 0.500885367f, 0.502212465f,\n    0.503538370f, 0.504863083f, 0.506186664f, 0.507508993f,\n    0.508830130f, 0.510150075f, 0.511468828f, 0.512786388f,\n    0.514102757f, 0.515417874f, 0.516731799f, 0.518044531f,\n    0.519356012f, 0.520666242f, 0.521975279f, 0.523283124f,\n    0.524589658f, 0.525895000f, 0.527199149f, 0.528501987f,\n    0.529803634f, 0.531104028f, 0.532403111f, 0.533701003f,\n    0.534997642f, 0.536292970f, 0.537587047f, 0.538879931f,\n    0.540171444f, 0.541461766f, 0.542750776f, 0.544038534f,\n    0.545324981f, 0.546610177f, 0.547894061f, 0.549176633f,\n    0.550457954f, 0.551737964f, 0.553016722f, 0.554294109f,\n    0.555570245f, 0.556845009f, 0.558118522f, 0.559390724f,\n    0.560661554f, 0.561931133f, 0.563199341f, 0.564466238f,\n    0.565731823f, 0.566996038f, 0.568258941f, 0.569520533f,\n    0.570780754f, 0.572039604f, 0.573297143f, 0.574553370f,\n    0.575808167f, 0.577061653f, 0.578313768f, 0.579564571f,\n    0.580813944f, 0.582062006f, 0.583308637f, 0.584553957f,\n    0.585797846f, 0.587040365f, 0.588281572f, 0.589521289f,\n    0.590759695f, 0.591996670f, 0.593232274f, 0.594466507f,\n    0.595699310f, 0.596930683f, 0.598160684f, 0.599389315f,\n    0.600616455f, 0.601842225f, 0.603066623f, 0.604289532f,\n    0.605511069f, 0.606731117f, 0.607949793f, 0.609167039f,\n    0.610382795f, 0.611597180f, 0.612810075f, 0.614021540f,\n    0.615231574f, 0.616440177f, 0.617647290f, 0.618852973f,\n    0.620057225f, 0.621259987f, 0.622461259f, 0.623661101f,\n    0.624859512f, 0.626056373f, 0.627251804f, 0.628445745f,\n    0.629638255f, 0.630829215f, 0.632018745f, 0.633206785f,\n    0.634393275f, 0.635578334f, 0.636761844f, 0.637943923f,\n    0.639124453f, 0.640303493f, 0.641481042f, 0.642657042f,\n    0.643831551f, 0.645004511f, 0.646176040f, 0.647345960f,\n    0.648514390f, 0.649681330f, 0.650846660f, 0.652010560f,\n    0.653172851f, 0.654333591f, 0.655492842f, 0.656650543f,\n    0.657806695f, 0.658961296f, 0.660114348f, 0.661265850f,\n    0.662415802f, 0.663564146f, 0.664710999f, 0.665856242f,\n    0.666999936f, 0.668142021f, 0.669282615f, 0.670421541f,\n    0.671558976f, 0.672694743f, 0.673829019f, 0.674961627f,\n    0.676092684f, 0.677222192f, 0.678350031f, 0.679476321f,\n    0.680601001f, 0.681724072f, 0.682845533f, 0.683965385f,\n    0.685083687f, 0.686200321f, 0.687315345f, 0.688428760f,\n    0.689540565f, 0.690650702f, 0.691759229f, 0.692866147f,\n    0.693971455f, 0.695075095f, 0.696177125f, 0.697277486f,\n    0.698376238f, 0.699473321f, 0.700568795f, 0.701662600f,\n    0.702754736f, 0.703845263f, 0.704934061f, 0.706021249f,\n    0.707106769f, 0.708190620f, 0.709272802f, 0.710353374f,\n    0.711432219f, 0.712509394f, 0.713584840f, 0.714658678f,\n    0.715730846f, 0.716801286f, 0.717870057f, 0.718937099f,\n    0.720002532f, 0.721066177f, 0.722128212f, 0.723188460f,\n    0.724247098f, 0.725303948f, 0.726359129f, 0.727412641f,\n    0.728464365f, 0.729514420f, 0.730562747f, 0.731609404f,\n    0.732654274f, 0.733697414f, 0.734738886f, 0.735778570f,\n    0.736816585f, 0.737852812f, 0.738887310f, 0.739920080f,\n    0.740951121f, 0.741980433f, 0.743007958f, 0.744033754f,\n    0.745057762f, 0.746080101f, 0.747100592f, 0.748119354f,\n    0.749136388f, 0.750151634f, 0.751165152f, 0.752176821f,\n    0.753186822f, 0.754194975f, 0.755201399f, 0.756205976f,\n    0.757208824f, 0.758209884f, 0.759209216f, 0.760206699f,\n    0.761202395f, 0.762196302f, 0.763188422f, 0.764178753f,\n    0.765167236f, 0.766153991f, 0.767138898f, 0.768122017f,\n    0.769103348f, 0.770082831f, 0.771060526f, 0.772036374f,\n    0.773010433f, 0.773982704f, 0.774953127f, 0.775921702f,\n    0.776888490f, 0.777853429f, 0.778816521f, 0.779777765f,\n    0.780737221f, 0.781694829f, 0.782650590f, 0.783604503f,\n    0.784556568f, 0.785506845f, 0.786455214f, 0.787401736f,\n    0.788346410f, 0.789289236f, 0.790230215f, 0.791169345f,\n    0.792106569f, 0.793041945f, 0.793975472f, 0.794907153f,\n    0.795836926f, 0.796764791f, 0.797690868f, 0.798614979f,\n    0.799537241f, 0.800457656f, 0.801376164f, 0.802292824f,\n    0.803207517f, 0.804120362f, 0.805031359f, 0.805940390f,\n    0.806847572f, 0.807752848f, 0.808656156f, 0.809557617f,\n    0.810457170f, 0.811354876f, 0.812250614f, 0.813144386f,\n    0.814036310f, 0.814926326f, 0.815814435f, 0.816700578f,\n    0.817584813f, 0.818467140f, 0.819347501f, 0.820225954f,\n    0.821102500f, 0.821977139f, 0.822849810f, 0.823720515f,\n    0.824589312f, 0.825456142f, 0.826321065f, 0.827184021f,\n    0.828045070f, 0.828904092f, 0.829761207f, 0.830616415f,\n    0.831469595f, 0.832320869f, 0.833170176f, 0.834017515f,\n    0.834862888f, 0.835706294f, 0.836547732f, 0.837387204f,\n    0.838224709f, 0.839060247f, 0.839893818f, 0.840725362f,\n    0.841554999f, 0.842382610f, 0.843208253f, 0.844031870f,\n    0.844853580f, 0.845673263f, 0.846490920f, 0.847306609f,\n    0.848120332f, 0.848932028f, 0.849741757f, 0.850549459f,\n    0.851355195f, 0.852158904f, 0.852960587f, 0.853760302f,\n    0.854557991f, 0.855353653f, 0.856147349f, 0.856938958f,\n    0.857728601f, 0.858516216f, 0.859301805f, 0.860085368f,\n    0.860866964f, 0.861646473f, 0.862423956f, 0.863199413f,\n    0.863972843f, 0.864744246f, 0.865513623f, 0.866280973f,\n    0.867046237f, 0.867809474f, 0.868570685f, 0.869329870f,\n    0.870086968f, 0.870842040f, 0.871595085f, 0.872346044f,\n    0.873094976f, 0.873841822f, 0.874586642f, 0.875329375f,\n    0.876070082f, 0.876808703f, 0.877545297f, 0.878279805f,\n    0.879012227f, 0.879742622f, 0.880470872f, 0.881197095f,\n    0.881921291f, 0.882643342f, 0.883363366f, 0.884081244f,\n    0.884797096f, 0.885510862f, 0.886222541f, 0.886932135f,\n    0.887639642f, 0.888345063f, 0.889048338f, 0.889749587f,\n    0.890448749f, 0.891145766f, 0.891840696f, 0.892533541f,\n    0.893224299f, 0.893912971f, 0.894599497f, 0.895283937f,\n    0.895966232f, 0.896646500f, 0.897324562f, 0.898000598f,\n    0.898674488f, 0.899346232f, 0.900015891f, 0.900683403f,\n    0.901348829f, 0.902012169f, 0.902673304f, 0.903332353f,\n    0.903989315f, 0.904644072f, 0.905296743f, 0.905947268f,\n    0.906595707f, 0.907242000f, 0.907886088f, 0.908528090f,\n    0.909168005f, 0.909805715f, 0.910441279f, 0.911074758f,\n    0.911706030f, 0.912335157f, 0.912962198f, 0.913587034f,\n    0.914209783f, 0.914830327f, 0.915448725f, 0.916064978f,\n    0.916679084f, 0.917290986f, 0.917900801f, 0.918508410f,\n    0.919113874f, 0.919717133f, 0.920318305f, 0.920917213f,\n    0.921514034f, 0.922108650f, 0.922701120f, 0.923291445f,\n    0.923879504f, 0.924465477f, 0.925049245f, 0.925630808f,\n    0.926210225f, 0.926787496f, 0.927362502f, 0.927935421f,\n    0.928506076f, 0.929074585f, 0.929640889f, 0.930205047f,\n    0.930766940f, 0.931326687f, 0.931884289f, 0.932439625f,\n    0.932992816f, 0.933543801f, 0.934092522f, 0.934639156f,\n    0.935183525f, 0.935725689f, 0.936265647f, 0.936803460f,\n    0.937339008f, 0.937872350f, 0.938403547f, 0.938932478f,\n    0.939459205f, 0.939983726f, 0.940506041f, 0.941026151f,\n    0.941544056f, 0.942059755f, 0.942573190f, 0.943084419f,\n    0.943593442f, 0.944100261f, 0.944604814f, 0.945107222f,\n    0.945607305f, 0.946105242f, 0.946600914f, 0.947094381f,\n    0.947585583f, 0.948074579f, 0.948561370f, 0.949045897f,\n    0.949528158f, 0.950008273f, 0.950486064f, 0.950961649f,\n    0.951435030f, 0.951906145f, 0.952374995f, 0.952841640f,\n    0.953306019f, 0.953768194f, 0.954228103f, 0.954685748f,\n    0.955141187f, 0.955594361f, 0.956045270f, 0.956493914f,\n    0.956940353f, 0.957384527f, 0.957826436f, 0.958266079f,\n    0.958703458f, 0.959138632f, 0.959571540f, 0.960002124f,\n    0.960430503f, 0.960856616f, 0.961280465f, 0.961702049f,\n    0.962121427f, 0.962538481f, 0.962953269f, 0.963365793f,\n    0.963776052f, 0.964184046f, 0.964589775f, 0.964993238f,\n    0.965394437f, 0.965793371f, 0.966189981f, 0.966584384f,\n    0.966976464f, 0.967366278f, 0.967753828f, 0.968139112f,\n    0.968522072f, 0.968902826f, 0.969281256f, 0.969657362f,\n    0.970031261f, 0.970402837f, 0.970772147f, 0.971139133f,\n    0.971503913f, 0.971866310f, 0.972226501f, 0.972584367f,\n    0.972939968f, 0.973293245f, 0.973644257f, 0.973992944f,\n    0.974339366f, 0.974683523f, 0.975025356f, 0.975364864f,\n    0.975702107f, 0.976037085f, 0.976369739f, 0.976700068f,\n    0.977028131f, 0.977353871f, 0.977677345f, 0.977998495f,\n    0.978317380f, 0.978633940f, 0.978948176f, 0.979260147f,\n    0.979569793f, 0.979877114f, 0.980182111f, 0.980484843f,\n    0.980785251f, 0.981083393f, 0.981379211f, 0.981672704f,\n    0.981963873f, 0.982252717f, 0.982539296f, 0.982823551f,\n    0.983105481f, 0.983385086f, 0.983662426f, 0.983937442f,\n    0.984210074f, 0.984480441f, 0.984748483f, 0.985014260f,\n    0.985277653f, 0.985538721f, 0.985797524f, 0.986053944f,\n    0.986308098f, 0.986559927f, 0.986809373f, 0.987056553f,\n    0.987301409f, 0.987543941f, 0.987784147f, 0.988022029f,\n    0.988257587f, 0.988490820f, 0.988721669f, 0.988950253f,\n    0.989176512f, 0.989400446f, 0.989621997f, 0.989841282f,\n    0.990058184f, 0.990272820f, 0.990485072f, 0.990695000f,\n    0.990902662f, 0.991107941f, 0.991310835f, 0.991511464f,\n    0.991709769f, 0.991905689f, 0.992099285f, 0.992290616f,\n    0.992479563f, 0.992666125f, 0.992850423f, 0.993032336f,\n    0.993211925f, 0.993389189f, 0.993564129f, 0.993736744f,\n    0.993906975f, 0.994074881f, 0.994240463f, 0.994403660f,\n    0.994564593f, 0.994723141f, 0.994879305f, 0.995033205f,\n    0.995184720f, 0.995333910f, 0.995480776f, 0.995625257f,\n    0.995767415f, 0.995907247f, 0.996044695f, 0.996179819f,\n    0.996312618f, 0.996443033f, 0.996571124f, 0.996696889f,\n    0.996820271f, 0.996941328f, 0.997060061f, 0.997176409f,\n    0.997290432f, 0.997402132f, 0.997511446f, 0.997618437f,\n    0.997723043f, 0.997825325f, 0.997925282f, 0.998022854f,\n    0.998118103f, 0.998211026f, 0.998301566f, 0.998389721f,\n    0.998475552f, 0.998559058f, 0.998640239f, 0.998719037f,\n    0.998795450f, 0.998869538f, 0.998941302f, 0.999010682f,\n    0.999077737f, 0.999142408f, 0.999204755f, 0.999264777f,\n    0.999322355f, 0.999377668f, 0.999430597f, 0.999481201f,\n    0.999529421f, 0.999575317f, 0.999618828f, 0.999660015f,\n    0.999698818f, 0.999735296f, 0.999769390f, 0.999801159f,\n    0.999830604f, 0.999857664f, 0.999882340f, 0.999904692f,\n    0.999924719f, 0.999942362f, 0.999957621f, 0.999970615f,\n    0.999981165f, 0.999989390f, 0.999995291f, 0.999998808f,\n#ifndef AVOID_UB\n};\n\nf32 gCosineTable[0x1000] = {\n#endif\n    // cosine\n    1.000000000f, 0.999998808f, 0.999995291f, 0.999989390f,\n    0.999981165f, 0.999970615f, 0.999957621f, 0.999942362f,\n    0.999924719f, 0.999904692f, 0.999882340f, 0.999857664f,\n    0.999830604f, 0.999801159f, 0.999769390f, 0.999735296f,\n    0.999698818f, 0.999660015f, 0.999618828f, 0.999575317f,\n    0.999529421f, 0.999481201f, 0.999430597f, 0.999377668f,\n    0.999322355f, 0.999264777f, 0.999204755f, 0.999142408f,\n    0.999077737f, 0.999010682f, 0.998941302f, 0.998869538f,\n    0.998795450f, 0.998719037f, 0.998640239f, 0.998559058f,\n    0.998475552f, 0.998389721f, 0.998301566f, 0.998211026f,\n    0.998118103f, 0.998022854f, 0.997925282f, 0.997825325f,\n    0.997723043f, 0.997618437f, 0.997511446f, 0.997402132f,\n    0.997290432f, 0.997176409f, 0.997060061f, 0.996941328f,\n    0.996820271f, 0.996696889f, 0.996571124f, 0.996443033f,\n    0.996312618f, 0.996179819f, 0.996044695f, 0.995907247f,\n    0.995767415f, 0.995625257f, 0.995480776f, 0.995333910f,\n    0.995184720f, 0.995033205f, 0.994879305f, 0.994723141f,\n    0.994564593f, 0.994403660f, 0.994240463f, 0.994074881f,\n    0.993906975f, 0.993736744f, 0.993564129f, 0.993389189f,\n    0.993211925f, 0.993032336f, 0.992850423f, 0.992666125f,\n    0.992479563f, 0.992290616f, 0.992099285f, 0.991905689f,\n    0.991709769f, 0.991511464f, 0.991310835f, 0.991107941f,\n    0.990902662f, 0.990695000f, 0.990485072f, 0.990272820f,\n    0.990058184f, 0.989841282f, 0.989621997f, 0.989400446f,\n    0.989176512f, 0.988950253f, 0.988721669f, 0.988490820f,\n    0.988257587f, 0.988022029f, 0.987784147f, 0.987543941f,\n    0.987301409f, 0.987056553f, 0.986809373f, 0.986559927f,\n    0.986308098f, 0.986053944f, 0.985797524f, 0.985538721f,\n    0.985277653f, 0.985014260f, 0.984748483f, 0.984480441f,\n    0.984210074f, 0.983937442f, 0.983662426f, 0.983385086f,\n    0.983105481f, 0.982823551f, 0.982539296f, 0.982252717f,\n    0.981963873f, 0.981672704f, 0.981379211f, 0.981083393f,\n    0.980785251f, 0.980484843f, 0.980182111f, 0.979877114f,\n    0.979569793f, 0.979260147f, 0.978948176f, 0.978633940f,\n    0.978317380f, 0.977998495f, 0.977677345f, 0.977353871f,\n    0.977028131f, 0.976700068f, 0.976369739f, 0.976037085f,\n    0.975702107f, 0.975364864f, 0.975025356f, 0.974683523f,\n    0.974339366f, 0.973992944f, 0.973644257f, 0.973293245f,\n    0.972939968f, 0.972584367f, 0.972226501f, 0.971866310f,\n    0.971503913f, 0.971139133f, 0.970772147f, 0.970402837f,\n    0.970031261f, 0.969657362f, 0.969281256f, 0.968902826f,\n    0.968522072f, 0.968139112f, 0.967753828f, 0.967366278f,\n    0.966976464f, 0.966584384f, 0.966189981f, 0.965793371f,\n    0.965394437f, 0.964993238f, 0.964589775f, 0.964184046f,\n    0.963776052f, 0.963365793f, 0.962953269f, 0.962538481f,\n    0.962121427f, 0.961702049f, 0.961280465f, 0.960856616f,\n    0.960430503f, 0.960002124f, 0.959571540f, 0.959138632f,\n    0.958703458f, 0.958266079f, 0.957826436f, 0.957384527f,\n    0.956940353f, 0.956493914f, 0.956045270f, 0.955594361f,\n    0.955141187f, 0.954685748f, 0.954228103f, 0.953768194f,\n    0.953306019f, 0.952841640f, 0.952374995f, 0.951906145f,\n    0.951435030f, 0.950961649f, 0.950486064f, 0.950008273f,\n    0.949528158f, 0.949045897f, 0.948561370f, 0.948074579f,\n    0.947585583f, 0.947094381f, 0.946600914f, 0.946105242f,\n    0.945607305f, 0.945107222f, 0.944604814f, 0.944100261f,\n    0.943593442f, 0.943084419f, 0.942573190f, 0.942059755f,\n    0.941544056f, 0.941026151f, 0.940506041f, 0.939983726f,\n    0.939459205f, 0.938932478f, 0.938403547f, 0.937872350f,\n    0.937339008f, 0.936803460f, 0.936265647f, 0.935725689f,\n    0.935183525f, 0.934639156f, 0.934092522f, 0.933543801f,\n    0.932992816f, 0.932439625f, 0.931884289f, 0.931326687f,\n    0.930766940f, 0.930205047f, 0.929640889f, 0.929074585f,\n    0.928506076f, 0.927935421f, 0.927362502f, 0.926787496f,\n    0.926210225f, 0.925630808f, 0.925049245f, 0.924465477f,\n    0.923879504f, 0.923291445f, 0.922701120f, 0.922108650f,\n    0.921514034f, 0.920917213f, 0.920318305f, 0.919717133f,\n    0.919113874f, 0.918508410f, 0.917900801f, 0.917290986f,\n    0.916679084f, 0.916064978f, 0.915448725f, 0.914830327f,\n    0.914209783f, 0.913587034f, 0.912962198f, 0.912335157f,\n    0.911706030f, 0.911074758f, 0.910441279f, 0.909805715f,\n    0.909168005f, 0.908528090f, 0.907886088f, 0.907242000f,\n    0.906595707f, 0.905947268f, 0.905296743f, 0.904644072f,\n    0.903989315f, 0.903332353f, 0.902673304f, 0.902012169f,\n    0.901348829f, 0.900683403f, 0.900015891f, 0.899346232f,\n    0.898674488f, 0.898000598f, 0.897324562f, 0.896646500f,\n    0.895966232f, 0.895283937f, 0.894599497f, 0.893912971f,\n    0.893224299f, 0.892533541f, 0.891840696f, 0.891145766f,\n    0.890448749f, 0.889749587f, 0.889048338f, 0.888345063f,\n    0.887639642f, 0.886932135f, 0.886222541f, 0.885510862f,\n    0.884797096f, 0.884081244f, 0.883363366f, 0.882643342f,\n    0.881921291f, 0.881197095f, 0.880470872f, 0.879742622f,\n    0.879012227f, 0.878279805f, 0.877545297f, 0.876808703f,\n    0.876070082f, 0.875329375f, 0.874586642f, 0.873841822f,\n    0.873094976f, 0.872346044f, 0.871595085f, 0.870842040f,\n    0.870086968f, 0.869329870f, 0.868570685f, 0.867809474f,\n    0.867046237f, 0.866280973f, 0.865513623f, 0.864744246f,\n    0.863972843f, 0.863199413f, 0.862423956f, 0.861646473f,\n    0.860866964f, 0.860085368f, 0.859301805f, 0.858516216f,\n    0.857728601f, 0.856938958f, 0.856147349f, 0.855353653f,\n    0.854557991f, 0.853760302f, 0.852960587f, 0.852158904f,\n    0.851355195f, 0.850549459f, 0.849741757f, 0.848932028f,\n    0.848120332f, 0.847306609f, 0.846490920f, 0.845673263f,\n    0.844853580f, 0.844031870f, 0.843208253f, 0.842382610f,\n    0.841554999f, 0.840725362f, 0.839893818f, 0.839060247f,\n    0.838224709f, 0.837387204f, 0.836547732f, 0.835706294f,\n    0.834862888f, 0.834017515f, 0.833170176f, 0.832320869f,\n    0.831469595f, 0.830616415f, 0.829761207f, 0.828904092f,\n    0.828045070f, 0.827184021f, 0.826321065f, 0.825456142f,\n    0.824589312f, 0.823720515f, 0.822849810f, 0.821977139f,\n    0.821102500f, 0.820225954f, 0.819347501f, 0.818467140f,\n    0.817584813f, 0.816700578f, 0.815814435f, 0.814926326f,\n    0.814036310f, 0.813144386f, 0.812250614f, 0.811354876f,\n    0.810457170f, 0.809557617f, 0.808656156f, 0.807752848f,\n    0.806847572f, 0.805940390f, 0.805031359f, 0.804120362f,\n    0.803207517f, 0.802292824f, 0.801376164f, 0.800457656f,\n    0.799537241f, 0.798614979f, 0.797690868f, 0.796764791f,\n    0.795836926f, 0.794907153f, 0.793975472f, 0.793041945f,\n    0.792106569f, 0.791169345f, 0.790230215f, 0.789289236f,\n    0.788346410f, 0.787401736f, 0.786455214f, 0.785506845f,\n    0.784556568f, 0.783604503f, 0.782650590f, 0.781694829f,\n    0.780737221f, 0.779777765f, 0.778816521f, 0.777853429f,\n    0.776888490f, 0.775921702f, 0.774953127f, 0.773982704f,\n    0.773010433f, 0.772036374f, 0.771060526f, 0.770082831f,\n    0.769103348f, 0.768122017f, 0.767138898f, 0.766153991f,\n    0.765167236f, 0.764178753f, 0.763188422f, 0.762196302f,\n    0.761202395f, 0.760206699f, 0.759209216f, 0.758209884f,\n    0.757208824f, 0.756205976f, 0.755201399f, 0.754194975f,\n    0.753186822f, 0.752176821f, 0.751165152f, 0.750151634f,\n    0.749136388f, 0.748119354f, 0.747100592f, 0.746080101f,\n    0.745057762f, 0.744033754f, 0.743007958f, 0.741980433f,\n    0.740951121f, 0.739920080f, 0.738887310f, 0.737852812f,\n    0.736816585f, 0.735778570f, 0.734738886f, 0.733697414f,\n    0.732654274f, 0.731609404f, 0.730562747f, 0.729514420f,\n    0.728464365f, 0.727412641f, 0.726359129f, 0.725303948f,\n    0.724247098f, 0.723188460f, 0.722128212f, 0.721066177f,\n    0.720002532f, 0.718937099f, 0.717870057f, 0.716801286f,\n    0.715730846f, 0.714658678f, 0.713584840f, 0.712509394f,\n    0.711432219f, 0.710353374f, 0.709272802f, 0.708190620f,\n    0.707106769f, 0.706021249f, 0.704934061f, 0.703845263f,\n    0.702754736f, 0.701662600f, 0.700568795f, 0.699473321f,\n    0.698376238f, 0.697277486f, 0.696177125f, 0.695075095f,\n    0.693971455f, 0.692866147f, 0.691759229f, 0.690650702f,\n    0.689540565f, 0.688428760f, 0.687315345f, 0.686200321f,\n    0.685083687f, 0.683965385f, 0.682845533f, 0.681724072f,\n    0.680601001f, 0.679476321f, 0.678350031f, 0.677222192f,\n    0.676092684f, 0.674961627f, 0.673829019f, 0.672694743f,\n    0.671558976f, 0.670421541f, 0.669282615f, 0.668142021f,\n    0.666999936f, 0.665856242f, 0.664710999f, 0.663564146f,\n    0.662415802f, 0.661265850f, 0.660114348f, 0.658961296f,\n    0.657806695f, 0.656650543f, 0.655492842f, 0.654333591f,\n    0.653172851f, 0.652010560f, 0.650846660f, 0.649681330f,\n    0.648514390f, 0.647345960f, 0.646176040f, 0.645004511f,\n    0.643831551f, 0.642657042f, 0.641481042f, 0.640303493f,\n    0.639124453f, 0.637943923f, 0.636761844f, 0.635578334f,\n    0.634393275f, 0.633206785f, 0.632018745f, 0.630829215f,\n    0.629638255f, 0.628445745f, 0.627251804f, 0.626056373f,\n    0.624859512f, 0.623661101f, 0.622461259f, 0.621259987f,\n    0.620057225f, 0.618852973f, 0.617647290f, 0.616440177f,\n    0.615231574f, 0.614021540f, 0.612810075f, 0.611597180f,\n    0.610382795f, 0.609167039f, 0.607949793f, 0.606731117f,\n    0.605511069f, 0.604289532f, 0.603066623f, 0.601842225f,\n    0.600616455f, 0.599389315f, 0.598160684f, 0.596930683f,\n    0.595699310f, 0.594466507f, 0.593232274f, 0.591996670f,\n    0.590759695f, 0.589521289f, 0.588281572f, 0.587040365f,\n    0.585797846f, 0.584553957f, 0.583308637f, 0.582062006f,\n    0.580813944f, 0.579564571f, 0.578313768f, 0.577061653f,\n    0.575808167f, 0.574553370f, 0.573297143f, 0.572039604f,\n    0.570780754f, 0.569520533f, 0.568258941f, 0.566996038f,\n    0.565731823f, 0.564466238f, 0.563199341f, 0.561931133f,\n    0.560661554f, 0.559390724f, 0.558118522f, 0.556845009f,\n    0.555570245f, 0.554294109f, 0.553016722f, 0.551737964f,\n    0.550457954f, 0.549176633f, 0.547894061f, 0.546610177f,\n    0.545324981f, 0.544038534f, 0.542750776f, 0.541461766f,\n    0.540171444f, 0.538879931f, 0.537587047f, 0.536292970f,\n    0.534997642f, 0.533701003f, 0.532403111f, 0.531104028f,\n    0.529803634f, 0.528501987f, 0.527199149f, 0.525895000f,\n    0.524589658f, 0.523283124f, 0.521975279f, 0.520666242f,\n    0.519356012f, 0.518044531f, 0.516731799f, 0.515417874f,\n    0.514102757f, 0.512786388f, 0.511468828f, 0.510150075f,\n    0.508830130f, 0.507508993f, 0.506186664f, 0.504863083f,\n    0.503538370f, 0.502212465f, 0.500885367f, 0.499557108f,\n    0.498227656f, 0.496897042f, 0.495565265f, 0.494232297f,\n    0.492898196f, 0.491562903f, 0.490226477f, 0.488888890f,\n    0.487550169f, 0.486210287f, 0.484869242f, 0.483527064f,\n    0.482183784f, 0.480839342f, 0.479493767f, 0.478147060f,\n    0.476799220f, 0.475450277f, 0.474100202f, 0.472749025f,\n    0.471396744f, 0.470043331f, 0.468688816f, 0.467333198f,\n    0.465976506f, 0.464618683f, 0.463259786f, 0.461899787f,\n    0.460538715f, 0.459176540f, 0.457813293f, 0.456448972f,\n    0.455083579f, 0.453717113f, 0.452349573f, 0.450980991f,\n    0.449611336f, 0.448240608f, 0.446868837f, 0.445496023f,\n    0.444122136f, 0.442747235f, 0.441371262f, 0.439994276f,\n    0.438616246f, 0.437237173f, 0.435857087f, 0.434475958f,\n    0.433093816f, 0.431710660f, 0.430326492f, 0.428941280f,\n    0.427555084f, 0.426167876f, 0.424779683f, 0.423390478f,\n    0.422000259f, 0.420609087f, 0.419216901f, 0.417823702f,\n    0.416429549f, 0.415034413f, 0.413638324f, 0.412241220f,\n    0.410843164f, 0.409444153f, 0.408044159f, 0.406643212f,\n    0.405241311f, 0.403838456f, 0.402434647f, 0.401029885f,\n    0.399624199f, 0.398217559f, 0.396809995f, 0.395401478f,\n    0.393992037f, 0.392581671f, 0.391170382f, 0.389758170f,\n    0.388345033f, 0.386931002f, 0.385516047f, 0.384100199f,\n    0.382683426f, 0.381265759f, 0.379847199f, 0.378427744f,\n    0.377007425f, 0.375586182f, 0.374164075f, 0.372741073f,\n    0.371317208f, 0.369892448f, 0.368466824f, 0.367040336f,\n    0.365612984f, 0.364184797f, 0.362755716f, 0.361325800f,\n    0.359895051f, 0.358463407f, 0.357030958f, 0.355597675f,\n    0.354163527f, 0.352728546f, 0.351292759f, 0.349856138f,\n    0.348418683f, 0.346980423f, 0.345541328f, 0.344101429f,\n    0.342660725f, 0.341219217f, 0.339776874f, 0.338333756f,\n    0.336889863f, 0.335445136f, 0.333999664f, 0.332553357f,\n    0.331106305f, 0.329658449f, 0.328209847f, 0.326760441f,\n    0.325310290f, 0.323859364f, 0.322407693f, 0.320955247f,\n    0.319502026f, 0.318048090f, 0.316593379f, 0.315137923f,\n    0.313681751f, 0.312224805f, 0.310767144f, 0.309308767f,\n    0.307849646f, 0.306389809f, 0.304929227f, 0.303467959f,\n    0.302005947f, 0.300543249f, 0.299079835f, 0.297615707f,\n    0.296150893f, 0.294685364f, 0.293219149f, 0.291752249f,\n    0.290284663f, 0.288816422f, 0.287347466f, 0.285877824f,\n    0.284407526f, 0.282936573f, 0.281464934f, 0.279992640f,\n    0.278519690f, 0.277046084f, 0.275571823f, 0.274096906f,\n    0.272621363f, 0.271145165f, 0.269668311f, 0.268190861f,\n    0.266712755f, 0.265234023f, 0.263754666f, 0.262274712f,\n    0.260794103f, 0.259312928f, 0.257831097f, 0.256348670f,\n    0.254865646f, 0.253382027f, 0.251897812f, 0.250413001f,\n    0.248927608f, 0.247441620f, 0.245955050f, 0.244467899f,\n    0.242980182f, 0.241491884f, 0.240003020f, 0.238513589f,\n    0.237023607f, 0.235533059f, 0.234041959f, 0.232550308f,\n    0.231058106f, 0.229565367f, 0.228072077f, 0.226578265f,\n    0.225083917f, 0.223589033f, 0.222093627f, 0.220597684f,\n    0.219101235f, 0.217604280f, 0.216106802f, 0.214608818f,\n    0.213110313f, 0.211611331f, 0.210111842f, 0.208611846f,\n    0.207111374f, 0.205610409f, 0.204108968f, 0.202607036f,\n    0.201104641f, 0.199601755f, 0.198098406f, 0.196594596f,\n    0.195090324f, 0.193585590f, 0.192080393f, 0.190574750f,\n    0.189068660f, 0.187562123f, 0.186055154f, 0.184547737f,\n    0.183039889f, 0.181531608f, 0.180022895f, 0.178513765f,\n    0.177004218f, 0.175494254f, 0.173983872f, 0.172473088f,\n    0.170961887f, 0.169450298f, 0.167938292f, 0.166425899f,\n    0.164913118f, 0.163399950f, 0.161886394f, 0.160372451f,\n    0.158858150f, 0.157343462f, 0.155828401f, 0.154312968f,\n    0.152797192f, 0.151281044f, 0.149764538f, 0.148247674f,\n    0.146730468f, 0.145212919f, 0.143695027f, 0.142176807f,\n    0.140658244f, 0.139139339f, 0.137620121f, 0.136100575f,\n    0.134580702f, 0.133060530f, 0.131540030f, 0.130019218f,\n    0.128498107f, 0.126976699f, 0.125454977f, 0.123932973f,\n    0.122410677f, 0.120888084f, 0.119365215f, 0.117842063f,\n    0.116318628f, 0.114794925f, 0.113270953f, 0.111746714f,\n    0.110222206f, 0.108697444f, 0.107172422f, 0.105647154f,\n    0.104121633f, 0.102595866f, 0.101069860f, 0.099543616f,\n    0.098017141f, 0.096490428f, 0.094963498f, 0.093436338f,\n    0.091908954f, 0.090381362f, 0.088853553f, 0.087325536f,\n    0.085797310f, 0.084268890f, 0.082740262f, 0.081211448f,\n    0.079682440f, 0.078153245f, 0.076623864f, 0.075094298f,\n    0.073564567f, 0.072034650f, 0.070504576f, 0.068974331f,\n    0.067443922f, 0.065913349f, 0.064382628f, 0.062851757f,\n    0.061320737f, 0.059789572f, 0.058258265f, 0.056726821f,\n    0.055195246f, 0.053663537f, 0.052131705f, 0.050599750f,\n    0.049067676f, 0.047535483f, 0.046003181f, 0.044470772f,\n    0.042938258f, 0.041405641f, 0.039872926f, 0.038340122f,\n    0.036807224f, 0.035274237f, 0.033741172f, 0.032208025f,\n    0.030674804f, 0.029141508f, 0.027608145f, 0.026074719f,\n    0.024541229f, 0.023007682f, 0.021474080f, 0.019940428f,\n    0.018406730f, 0.016872987f, 0.015339206f, 0.0138053885f,\n    0.012271538f, 0.010737659f, 0.009203754f, 0.007669829f,\n    0.0061358847f,0.004601926f, 0.0030679568f,0.0015339801f,\n\n    // negative sine\n    0.000000000f,  -0.0015339801f,-0.0030679568f,-0.004601926f,\n    -0.0061358847f,-0.007669829f, -0.009203754f, -0.010737659f,\n    -0.012271538f, -0.0138053885f,-0.015339206f, -0.016872987f,\n    -0.018406730f, -0.019940428f, -0.021474080f, -0.023007682f,\n    -0.024541229f, -0.026074719f, -0.027608145f, -0.029141508f,\n    -0.030674804f, -0.032208025f, -0.033741172f, -0.035274237f,\n    -0.036807224f, -0.038340122f, -0.039872926f, -0.041405641f,\n    -0.042938258f, -0.044470772f, -0.046003181f, -0.047535483f,\n    -0.049067676f, -0.050599750f, -0.052131705f, -0.053663537f,\n    -0.055195246f, -0.056726821f, -0.058258265f, -0.059789572f,\n    -0.061320737f, -0.062851757f, -0.064382628f, -0.065913349f,\n    -0.067443922f, -0.068974331f, -0.070504576f, -0.072034650f,\n    -0.073564567f, -0.075094298f, -0.076623864f, -0.078153245f,\n    -0.079682440f, -0.081211448f, -0.082740262f, -0.084268890f,\n    -0.085797310f, -0.087325536f, -0.088853553f, -0.090381362f,\n    -0.091908954f, -0.093436338f, -0.094963498f, -0.096490428f,\n    -0.098017141f, -0.099543616f, -0.101069860f, -0.102595866f,\n    -0.104121633f, -0.105647154f, -0.107172422f, -0.108697444f,\n    -0.110222206f, -0.111746714f, -0.113270953f, -0.114794925f,\n    -0.116318628f, -0.117842063f, -0.119365215f, -0.120888084f,\n    -0.122410677f, -0.123932973f, -0.125454977f, -0.126976699f,\n    -0.128498107f, -0.130019218f, -0.131540030f, -0.133060530f,\n    -0.134580702f, -0.136100575f, -0.137620121f, -0.139139339f,\n    -0.140658244f, -0.142176807f, -0.143695027f, -0.145212919f,\n    -0.146730468f, -0.148247674f, -0.149764538f, -0.151281044f,\n    -0.152797192f, -0.154312968f, -0.155828401f, -0.157343462f,\n    -0.158858150f, -0.160372451f, -0.161886394f, -0.163399950f,\n    -0.164913118f, -0.166425899f, -0.167938292f, -0.169450298f,\n    -0.170961887f, -0.172473088f, -0.173983872f, -0.175494254f,\n    -0.177004218f, -0.178513765f, -0.180022895f, -0.181531608f,\n    -0.183039889f, -0.184547737f, -0.186055154f, -0.187562123f,\n    -0.189068660f, -0.190574750f, -0.192080393f, -0.193585590f,\n    -0.195090324f, -0.196594596f, -0.198098406f, -0.199601755f,\n    -0.201104641f, -0.202607036f, -0.204108968f, -0.205610409f,\n    -0.207111374f, -0.208611846f, -0.210111842f, -0.211611331f,\n    -0.213110313f, -0.214608818f, -0.216106802f, -0.217604280f,\n    -0.219101235f, -0.220597684f, -0.222093627f, -0.223589033f,\n    -0.225083917f, -0.226578265f, -0.228072077f, -0.229565367f,\n    -0.231058106f, -0.232550308f, -0.234041959f, -0.235533059f,\n    -0.237023607f, -0.238513589f, -0.240003020f, -0.241491884f,\n    -0.242980182f, -0.244467899f, -0.245955050f, -0.247441620f,\n    -0.248927608f, -0.250413001f, -0.251897812f, -0.253382027f,\n    -0.254865646f, -0.256348670f, -0.257831097f, -0.259312928f,\n    -0.260794103f, -0.262274712f, -0.263754666f, -0.265234023f,\n    -0.266712755f, -0.268190861f, -0.269668311f, -0.271145165f,\n    -0.272621363f, -0.274096906f, -0.275571823f, -0.277046084f,\n    -0.278519690f, -0.279992640f, -0.281464934f, -0.282936573f,\n    -0.284407526f, -0.285877824f, -0.287347466f, -0.288816422f,\n    -0.290284663f, -0.291752249f, -0.293219149f, -0.294685364f,\n    -0.296150893f, -0.297615707f, -0.299079835f, -0.300543249f,\n    -0.302005947f, -0.303467959f, -0.304929227f, -0.306389809f,\n    -0.307849646f, -0.309308767f, -0.310767144f, -0.312224805f,\n    -0.313681751f, -0.315137923f, -0.316593379f, -0.318048090f,\n    -0.319502026f, -0.320955247f, -0.322407693f, -0.323859364f,\n    -0.325310290f, -0.326760441f, -0.328209847f, -0.329658449f,\n    -0.331106305f, -0.332553357f, -0.333999664f, -0.335445136f,\n    -0.336889863f, -0.338333756f, -0.339776874f, -0.341219217f,\n    -0.342660725f, -0.344101429f, -0.345541328f, -0.346980423f,\n    -0.348418683f, -0.349856138f, -0.351292759f, -0.352728546f,\n    -0.354163527f, -0.355597675f, -0.357030958f, -0.358463407f,\n    -0.359895051f, -0.361325800f, -0.362755716f, -0.364184797f,\n    -0.365612984f, -0.367040336f, -0.368466824f, -0.369892448f,\n    -0.371317208f, -0.372741073f, -0.374164075f, -0.375586182f,\n    -0.377007425f, -0.378427744f, -0.379847199f, -0.381265759f,\n    -0.382683426f, -0.384100199f, -0.385516047f, -0.386931002f,\n    -0.388345033f, -0.389758170f, -0.391170382f, -0.392581671f,\n    -0.393992037f, -0.395401478f, -0.396809995f, -0.398217559f,\n    -0.399624199f, -0.401029885f, -0.402434647f, -0.403838456f,\n    -0.405241311f, -0.406643212f, -0.408044159f, -0.409444153f,\n    -0.410843164f, -0.412241220f, -0.413638324f, -0.415034413f,\n    -0.416429549f, -0.417823702f, -0.419216901f, -0.420609087f,\n    -0.422000259f, -0.423390478f, -0.424779683f, -0.426167876f,\n    -0.427555084f, -0.428941280f, -0.430326492f, -0.431710660f,\n    -0.433093816f, -0.434475958f, -0.435857087f, -0.437237173f,\n    -0.438616246f, -0.439994276f, -0.441371262f, -0.442747235f,\n    -0.444122136f, -0.445496023f, -0.446868837f, -0.448240608f,\n    -0.449611336f, -0.450980991f, -0.452349573f, -0.453717113f,\n    -0.455083579f, -0.456448972f, -0.457813293f, -0.459176540f,\n    -0.460538715f, -0.461899787f, -0.463259786f, -0.464618683f,\n    -0.465976506f, -0.467333198f, -0.468688816f, -0.470043331f,\n    -0.471396744f, -0.472749025f, -0.474100202f, -0.475450277f,\n    -0.476799220f, -0.478147060f, -0.479493767f, -0.480839342f,\n    -0.482183784f, -0.483527064f, -0.484869242f, -0.486210287f,\n    -0.487550169f, -0.488888890f, -0.490226477f, -0.491562903f,\n    -0.492898196f, -0.494232297f, -0.495565265f, -0.496897042f,\n    -0.498227656f, -0.499557108f, -0.500885367f, -0.502212465f,\n    -0.503538370f, -0.504863083f, -0.506186664f, -0.507508993f,\n    -0.508830130f, -0.510150075f, -0.511468828f, -0.512786388f,\n    -0.514102757f, -0.515417874f, -0.516731799f, -0.518044531f,\n    -0.519356012f, -0.520666242f, -0.521975279f, -0.523283124f,\n    -0.524589658f, -0.525895000f, -0.527199149f, -0.528501987f,\n    -0.529803634f, -0.531104028f, -0.532403111f, -0.533701003f,\n    -0.534997642f, -0.536292970f, -0.537587047f, -0.538879931f,\n    -0.540171444f, -0.541461766f, -0.542750776f, -0.544038534f,\n    -0.545324981f, -0.546610177f, -0.547894061f, -0.549176633f,\n    -0.550457954f, -0.551737964f, -0.553016722f, -0.554294109f,\n    -0.555570245f, -0.556845009f, -0.558118522f, -0.559390724f,\n    -0.560661554f, -0.561931133f, -0.563199341f, -0.564466238f,\n    -0.565731823f, -0.566996038f, -0.568258941f, -0.569520533f,\n    -0.570780754f, -0.572039604f, -0.573297143f, -0.574553370f,\n    -0.575808167f, -0.577061653f, -0.578313768f, -0.579564571f,\n    -0.580813944f, -0.582062006f, -0.583308637f, -0.584553957f,\n    -0.585797846f, -0.587040365f, -0.588281572f, -0.589521289f,\n    -0.590759695f, -0.591996670f, -0.593232274f, -0.594466507f,\n    -0.595699310f, -0.596930683f, -0.598160684f, -0.599389315f,\n    -0.600616455f, -0.601842225f, -0.603066623f, -0.604289532f,\n    -0.605511069f, -0.606731117f, -0.607949793f, -0.609167039f,\n    -0.610382795f, -0.611597180f, -0.612810075f, -0.614021540f,\n    -0.615231574f, -0.616440177f, -0.617647290f, -0.618852973f,\n    -0.620057225f, -0.621259987f, -0.622461259f, -0.623661101f,\n    -0.624859512f, -0.626056373f, -0.627251804f, -0.628445745f,\n    -0.629638255f, -0.630829215f, -0.632018745f, -0.633206785f,\n    -0.634393275f, -0.635578334f, -0.636761844f, -0.637943923f,\n    -0.639124453f, -0.640303493f, -0.641481042f, -0.642657042f,\n    -0.643831551f, -0.645004511f, -0.646176040f, -0.647345960f,\n    -0.648514390f, -0.649681330f, -0.650846660f, -0.652010560f,\n    -0.653172851f, -0.654333591f, -0.655492842f, -0.656650543f,\n    -0.657806695f, -0.658961296f, -0.660114348f, -0.661265850f,\n    -0.662415802f, -0.663564146f, -0.664710999f, -0.665856242f,\n    -0.666999936f, -0.668142021f, -0.669282615f, -0.670421541f,\n    -0.671558976f, -0.672694743f, -0.673829019f, -0.674961627f,\n    -0.676092684f, -0.677222192f, -0.678350031f, -0.679476321f,\n    -0.680601001f, -0.681724072f, -0.682845533f, -0.683965385f,\n    -0.685083687f, -0.686200321f, -0.687315345f, -0.688428760f,\n    -0.689540565f, -0.690650702f, -0.691759229f, -0.692866147f,\n    -0.693971455f, -0.695075095f, -0.696177125f, -0.697277486f,\n    -0.698376238f, -0.699473321f, -0.700568795f, -0.701662600f,\n    -0.702754736f, -0.703845263f, -0.704934061f, -0.706021249f,\n    -0.707106769f, -0.708190620f, -0.709272802f, -0.710353374f,\n    -0.711432219f, -0.712509394f, -0.713584840f, -0.714658678f,\n    -0.715730846f, -0.716801286f, -0.717870057f, -0.718937099f,\n    -0.720002532f, -0.721066177f, -0.722128212f, -0.723188460f,\n    -0.724247098f, -0.725303948f, -0.726359129f, -0.727412641f,\n    -0.728464365f, -0.729514420f, -0.730562747f, -0.731609404f,\n    -0.732654274f, -0.733697414f, -0.734738886f, -0.735778570f,\n    -0.736816585f, -0.737852812f, -0.738887310f, -0.739920080f,\n    -0.740951121f, -0.741980433f, -0.743007958f, -0.744033754f,\n    -0.745057762f, -0.746080101f, -0.747100592f, -0.748119354f,\n    -0.749136388f, -0.750151634f, -0.751165152f, -0.752176821f,\n    -0.753186822f, -0.754194975f, -0.755201399f, -0.756205976f,\n    -0.757208824f, -0.758209884f, -0.759209216f, -0.760206699f,\n    -0.761202395f, -0.762196302f, -0.763188422f, -0.764178753f,\n    -0.765167236f, -0.766153991f, -0.767138898f, -0.768122017f,\n    -0.769103348f, -0.770082831f, -0.771060526f, -0.772036374f,\n    -0.773010433f, -0.773982704f, -0.774953127f, -0.775921702f,\n    -0.776888490f, -0.777853429f, -0.778816521f, -0.779777765f,\n    -0.780737221f, -0.781694829f, -0.782650590f, -0.783604503f,\n    -0.784556568f, -0.785506845f, -0.786455214f, -0.787401736f,\n    -0.788346410f, -0.789289236f, -0.790230215f, -0.791169345f,\n    -0.792106569f, -0.793041945f, -0.793975472f, -0.794907153f,\n    -0.795836926f, -0.796764791f, -0.797690868f, -0.798614979f,\n    -0.799537241f, -0.800457656f, -0.801376164f, -0.802292824f,\n    -0.803207517f, -0.804120362f, -0.805031359f, -0.805940390f,\n    -0.806847572f, -0.807752848f, -0.808656156f, -0.809557617f,\n    -0.810457170f, -0.811354876f, -0.812250614f, -0.813144386f,\n    -0.814036310f, -0.814926326f, -0.815814435f, -0.816700578f,\n    -0.817584813f, -0.818467140f, -0.819347501f, -0.820225954f,\n    -0.821102500f, -0.821977139f, -0.822849810f, -0.823720515f,\n    -0.824589312f, -0.825456142f, -0.826321065f, -0.827184021f,\n    -0.828045070f, -0.828904092f, -0.829761207f, -0.830616415f,\n    -0.831469595f, -0.832320869f, -0.833170176f, -0.834017515f,\n    -0.834862888f, -0.835706294f, -0.836547732f, -0.837387204f,\n    -0.838224709f, -0.839060247f, -0.839893818f, -0.840725362f,\n    -0.841554999f, -0.842382610f, -0.843208253f, -0.844031870f,\n    -0.844853580f, -0.845673263f, -0.846490920f, -0.847306609f,\n    -0.848120332f, -0.848932028f, -0.849741757f, -0.850549459f,\n    -0.851355195f, -0.852158904f, -0.852960587f, -0.853760302f,\n    -0.854557991f, -0.855353653f, -0.856147349f, -0.856938958f,\n    -0.857728601f, -0.858516216f, -0.859301805f, -0.860085368f,\n    -0.860866964f, -0.861646473f, -0.862423956f, -0.863199413f,\n    -0.863972843f, -0.864744246f, -0.865513623f, -0.866280973f,\n    -0.867046237f, -0.867809474f, -0.868570685f, -0.869329870f,\n    -0.870086968f, -0.870842040f, -0.871595085f, -0.872346044f,\n    -0.873094976f, -0.873841822f, -0.874586642f, -0.875329375f,\n    -0.876070082f, -0.876808703f, -0.877545297f, -0.878279805f,\n    -0.879012227f, -0.879742622f, -0.880470872f, -0.881197095f,\n    -0.881921291f, -0.882643342f, -0.883363366f, -0.884081244f,\n    -0.884797096f, -0.885510862f, -0.886222541f, -0.886932135f,\n    -0.887639642f, -0.888345063f, -0.889048338f, -0.889749587f,\n    -0.890448749f, -0.891145766f, -0.891840696f, -0.892533541f,\n    -0.893224299f, -0.893912971f, -0.894599497f, -0.895283937f,\n    -0.895966232f, -0.896646500f, -0.897324562f, -0.898000598f,\n    -0.898674488f, -0.899346232f, -0.900015891f, -0.900683403f,\n    -0.901348829f, -0.902012169f, -0.902673304f, -0.903332353f,\n    -0.903989315f, -0.904644072f, -0.905296743f, -0.905947268f,\n    -0.906595707f, -0.907242000f, -0.907886088f, -0.908528090f,\n    -0.909168005f, -0.909805715f, -0.910441279f, -0.911074758f,\n    -0.911706030f, -0.912335157f, -0.912962198f, -0.913587034f,\n    -0.914209783f, -0.914830327f, -0.915448725f, -0.916064978f,\n    -0.916679084f, -0.917290986f, -0.917900801f, -0.918508410f,\n    -0.919113874f, -0.919717133f, -0.920318305f, -0.920917213f,\n    -0.921514034f, -0.922108650f, -0.922701120f, -0.923291445f,\n    -0.923879504f, -0.924465477f, -0.925049245f, -0.925630808f,\n    -0.926210225f, -0.926787496f, -0.927362502f, -0.927935421f,\n    -0.928506076f, -0.929074585f, -0.929640889f, -0.930205047f,\n    -0.930766940f, -0.931326687f, -0.931884289f, -0.932439625f,\n    -0.932992816f, -0.933543801f, -0.934092522f, -0.934639156f,\n    -0.935183525f, -0.935725689f, -0.936265647f, -0.936803460f,\n    -0.937339008f, -0.937872350f, -0.938403547f, -0.938932478f,\n    -0.939459205f, -0.939983726f, -0.940506041f, -0.941026151f,\n    -0.941544056f, -0.942059755f, -0.942573190f, -0.943084419f,\n    -0.943593442f, -0.944100261f, -0.944604814f, -0.945107222f,\n    -0.945607305f, -0.946105242f, -0.946600914f, -0.947094381f,\n    -0.947585583f, -0.948074579f, -0.948561370f, -0.949045897f,\n    -0.949528158f, -0.950008273f, -0.950486064f, -0.950961649f,\n    -0.951435030f, -0.951906145f, -0.952374995f, -0.952841640f,\n    -0.953306019f, -0.953768194f, -0.954228103f, -0.954685748f,\n    -0.955141187f, -0.955594361f, -0.956045270f, -0.956493914f,\n    -0.956940353f, -0.957384527f, -0.957826436f, -0.958266079f,\n    -0.958703458f, -0.959138632f, -0.959571540f, -0.960002124f,\n    -0.960430503f, -0.960856616f, -0.961280465f, -0.961702049f,\n    -0.962121427f, -0.962538481f, -0.962953269f, -0.963365793f,\n    -0.963776052f, -0.964184046f, -0.964589775f, -0.964993238f,\n    -0.965394437f, -0.965793371f, -0.966189981f, -0.966584384f,\n    -0.966976464f, -0.967366278f, -0.967753828f, -0.968139112f,\n    -0.968522072f, -0.968902826f, -0.969281256f, -0.969657362f,\n    -0.970031261f, -0.970402837f, -0.970772147f, -0.971139133f,\n    -0.971503913f, -0.971866310f, -0.972226501f, -0.972584367f,\n    -0.972939968f, -0.973293245f, -0.973644257f, -0.973992944f,\n    -0.974339366f, -0.974683523f, -0.975025356f, -0.975364864f,\n    -0.975702107f, -0.976037085f, -0.976369739f, -0.976700068f,\n    -0.977028131f, -0.977353871f, -0.977677345f, -0.977998495f,\n    -0.978317380f, -0.978633940f, -0.978948176f, -0.979260147f,\n    -0.979569793f, -0.979877114f, -0.980182111f, -0.980484843f,\n    -0.980785251f, -0.981083393f, -0.981379211f, -0.981672704f,\n    -0.981963873f, -0.982252717f, -0.982539296f, -0.982823551f,\n    -0.983105481f, -0.983385086f, -0.983662426f, -0.983937442f,\n    -0.984210074f, -0.984480441f, -0.984748483f, -0.985014260f,\n    -0.985277653f, -0.985538721f, -0.985797524f, -0.986053944f,\n    -0.986308098f, -0.986559927f, -0.986809373f, -0.987056553f,\n    -0.987301409f, -0.987543941f, -0.987784147f, -0.988022029f,\n    -0.988257587f, -0.988490820f, -0.988721669f, -0.988950253f,\n    -0.989176512f, -0.989400446f, -0.989621997f, -0.989841282f,\n    -0.990058184f, -0.990272820f, -0.990485072f, -0.990695000f,\n    -0.990902662f, -0.991107941f, -0.991310835f, -0.991511464f,\n    -0.991709769f, -0.991905689f, -0.992099285f, -0.992290616f,\n    -0.992479563f, -0.992666125f, -0.992850423f, -0.993032336f,\n    -0.993211925f, -0.993389189f, -0.993564129f, -0.993736744f,\n    -0.993906975f, -0.994074881f, -0.994240463f, -0.994403660f,\n    -0.994564593f, -0.994723141f, -0.994879305f, -0.995033205f,\n    -0.995184720f, -0.995333910f, -0.995480776f, -0.995625257f,\n    -0.995767415f, -0.995907247f, -0.996044695f, -0.996179819f,\n    -0.996312618f, -0.996443033f, -0.996571124f, -0.996696889f,\n    -0.996820271f, -0.996941328f, -0.997060061f, -0.997176409f,\n    -0.997290432f, -0.997402132f, -0.997511446f, -0.997618437f,\n    -0.997723043f, -0.997825325f, -0.997925282f, -0.998022854f,\n    -0.998118103f, -0.998211026f, -0.998301566f, -0.998389721f,\n    -0.998475552f, -0.998559058f, -0.998640239f, -0.998719037f,\n    -0.998795450f, -0.998869538f, -0.998941302f, -0.999010682f,\n    -0.999077737f, -0.999142408f, -0.999204755f, -0.999264777f,\n    -0.999322355f, -0.999377668f, -0.999430597f, -0.999481201f,\n    -0.999529421f, -0.999575317f, -0.999618828f, -0.999660015f,\n    -0.999698818f, -0.999735296f, -0.999769390f, -0.999801159f,\n    -0.999830604f, -0.999857664f, -0.999882340f, -0.999904692f,\n    -0.999924719f, -0.999942362f, -0.999957621f, -0.999970615f,\n    -0.999981165f, -0.999989390f, -0.999995291f, -0.999998808f,\n\n    // negative cosine\n    -1.000000000f, -0.999998808f, -0.999995291f, -0.999989390f,\n    -0.999981165f, -0.999970615f, -0.999957621f, -0.999942362f,\n    -0.999924719f, -0.999904692f, -0.999882340f, -0.999857664f,\n    -0.999830604f, -0.999801159f, -0.999769390f, -0.999735296f,\n    -0.999698818f, -0.999660015f, -0.999618828f, -0.999575317f,\n    -0.999529421f, -0.999481201f, -0.999430597f, -0.999377668f,\n    -0.999322355f, -0.999264777f, -0.999204755f, -0.999142408f,\n    -0.999077737f, -0.999010682f, -0.998941302f, -0.998869538f,\n    -0.998795450f, -0.998719037f, -0.998640239f, -0.998559058f,\n    -0.998475552f, -0.998389721f, -0.998301566f, -0.998211026f,\n    -0.998118103f, -0.998022854f, -0.997925282f, -0.997825325f,\n    -0.997723043f, -0.997618437f, -0.997511446f, -0.997402132f,\n    -0.997290432f, -0.997176409f, -0.997060061f, -0.996941328f,\n    -0.996820271f, -0.996696889f, -0.996571124f, -0.996443033f,\n    -0.996312618f, -0.996179819f, -0.996044695f, -0.995907247f,\n    -0.995767415f, -0.995625257f, -0.995480776f, -0.995333910f,\n    -0.995184720f, -0.995033205f, -0.994879305f, -0.994723141f,\n    -0.994564593f, -0.994403660f, -0.994240463f, -0.994074881f,\n    -0.993906975f, -0.993736744f, -0.993564129f, -0.993389189f,\n    -0.993211925f, -0.993032336f, -0.992850423f, -0.992666125f,\n    -0.992479563f, -0.992290616f, -0.992099285f, -0.991905689f,\n    -0.991709769f, -0.991511464f, -0.991310835f, -0.991107941f,\n    -0.990902662f, -0.990695000f, -0.990485072f, -0.990272820f,\n    -0.990058184f, -0.989841282f, -0.989621997f, -0.989400446f,\n    -0.989176512f, -0.988950253f, -0.988721669f, -0.988490820f,\n    -0.988257587f, -0.988022029f, -0.987784147f, -0.987543941f,\n    -0.987301409f, -0.987056553f, -0.986809373f, -0.986559927f,\n    -0.986308098f, -0.986053944f, -0.985797524f, -0.985538721f,\n    -0.985277653f, -0.985014260f, -0.984748483f, -0.984480441f,\n    -0.984210074f, -0.983937442f, -0.983662426f, -0.983385086f,\n    -0.983105481f, -0.982823551f, -0.982539296f, -0.982252717f,\n    -0.981963873f, -0.981672704f, -0.981379211f, -0.981083393f,\n    -0.980785251f, -0.980484843f, -0.980182111f, -0.979877114f,\n    -0.979569793f, -0.979260147f, -0.978948176f, -0.978633940f,\n    -0.978317380f, -0.977998495f, -0.977677345f, -0.977353871f,\n    -0.977028131f, -0.976700068f, -0.976369739f, -0.976037085f,\n    -0.975702107f, -0.975364864f, -0.975025356f, -0.974683523f,\n    -0.974339366f, -0.973992944f, -0.973644257f, -0.973293245f,\n    -0.972939968f, -0.972584367f, -0.972226501f, -0.971866310f,\n    -0.971503913f, -0.971139133f, -0.970772147f, -0.970402837f,\n    -0.970031261f, -0.969657362f, -0.969281256f, -0.968902826f,\n    -0.968522072f, -0.968139112f, -0.967753828f, -0.967366278f,\n    -0.966976464f, -0.966584384f, -0.966189981f, -0.965793371f,\n    -0.965394437f, -0.964993238f, -0.964589775f, -0.964184046f,\n    -0.963776052f, -0.963365793f, -0.962953269f, -0.962538481f,\n    -0.962121427f, -0.961702049f, -0.961280465f, -0.960856616f,\n    -0.960430503f, -0.960002124f, -0.959571540f, -0.959138632f,\n    -0.958703458f, -0.958266079f, -0.957826436f, -0.957384527f,\n    -0.956940353f, -0.956493914f, -0.956045270f, -0.955594361f,\n    -0.955141187f, -0.954685748f, -0.954228103f, -0.953768194f,\n    -0.953306019f, -0.952841640f, -0.952374995f, -0.951906145f,\n    -0.951435030f, -0.950961649f, -0.950486064f, -0.950008273f,\n    -0.949528158f, -0.949045897f, -0.948561370f, -0.948074579f,\n    -0.947585583f, -0.947094381f, -0.946600914f, -0.946105242f,\n    -0.945607305f, -0.945107222f, -0.944604814f, -0.944100261f,\n    -0.943593442f, -0.943084419f, -0.942573190f, -0.942059755f,\n    -0.941544056f, -0.941026151f, -0.940506041f, -0.939983726f,\n    -0.939459205f, -0.938932478f, -0.938403547f, -0.937872350f,\n    -0.937339008f, -0.936803460f, -0.936265647f, -0.935725689f,\n    -0.935183525f, -0.934639156f, -0.934092522f, -0.933543801f,\n    -0.932992816f, -0.932439625f, -0.931884289f, -0.931326687f,\n    -0.930766940f, -0.930205047f, -0.929640889f, -0.929074585f,\n    -0.928506076f, -0.927935421f, -0.927362502f, -0.926787496f,\n    -0.926210225f, -0.925630808f, -0.925049245f, -0.924465477f,\n    -0.923879504f, -0.923291445f, -0.922701120f, -0.922108650f,\n    -0.921514034f, -0.920917213f, -0.920318305f, -0.919717133f,\n    -0.919113874f, -0.918508410f, -0.917900801f, -0.917290986f,\n    -0.916679084f, -0.916064978f, -0.915448725f, -0.914830327f,\n    -0.914209783f, -0.913587034f, -0.912962198f, -0.912335157f,\n    -0.911706030f, -0.911074758f, -0.910441279f, -0.909805715f,\n    -0.909168005f, -0.908528090f, -0.907886088f, -0.907242000f,\n    -0.906595707f, -0.905947268f, -0.905296743f, -0.904644072f,\n    -0.903989315f, -0.903332353f, -0.902673304f, -0.902012169f,\n    -0.901348829f, -0.900683403f, -0.900015891f, -0.899346232f,\n    -0.898674488f, -0.898000598f, -0.897324562f, -0.896646500f,\n    -0.895966232f, -0.895283937f, -0.894599497f, -0.893912971f,\n    -0.893224299f, -0.892533541f, -0.891840696f, -0.891145766f,\n    -0.890448749f, -0.889749587f, -0.889048338f, -0.888345063f,\n    -0.887639642f, -0.886932135f, -0.886222541f, -0.885510862f,\n    -0.884797096f, -0.884081244f, -0.883363366f, -0.882643342f,\n    -0.881921291f, -0.881197095f, -0.880470872f, -0.879742622f,\n    -0.879012227f, -0.878279805f, -0.877545297f, -0.876808703f,\n    -0.876070082f, -0.875329375f, -0.874586642f, -0.873841822f,\n    -0.873094976f, -0.872346044f, -0.871595085f, -0.870842040f,\n    -0.870086968f, -0.869329870f, -0.868570685f, -0.867809474f,\n    -0.867046237f, -0.866280973f, -0.865513623f, -0.864744246f,\n    -0.863972843f, -0.863199413f, -0.862423956f, -0.861646473f,\n    -0.860866964f, -0.860085368f, -0.859301805f, -0.858516216f,\n    -0.857728601f, -0.856938958f, -0.856147349f, -0.855353653f,\n    -0.854557991f, -0.853760302f, -0.852960587f, -0.852158904f,\n    -0.851355195f, -0.850549459f, -0.849741757f, -0.848932028f,\n    -0.848120332f, -0.847306609f, -0.846490920f, -0.845673263f,\n    -0.844853580f, -0.844031870f, -0.843208253f, -0.842382610f,\n    -0.841554999f, -0.840725362f, -0.839893818f, -0.839060247f,\n    -0.838224709f, -0.837387204f, -0.836547732f, -0.835706294f,\n    -0.834862888f, -0.834017515f, -0.833170176f, -0.832320869f,\n    -0.831469595f, -0.830616415f, -0.829761207f, -0.828904092f,\n    -0.828045070f, -0.827184021f, -0.826321065f, -0.825456142f,\n    -0.824589312f, -0.823720515f, -0.822849810f, -0.821977139f,\n    -0.821102500f, -0.820225954f, -0.819347501f, -0.818467140f,\n    -0.817584813f, -0.816700578f, -0.815814435f, -0.814926326f,\n    -0.814036310f, -0.813144386f, -0.812250614f, -0.811354876f,\n    -0.810457170f, -0.809557617f, -0.808656156f, -0.807752848f,\n    -0.806847572f, -0.805940390f, -0.805031359f, -0.804120362f,\n    -0.803207517f, -0.802292824f, -0.801376164f, -0.800457656f,\n    -0.799537241f, -0.798614979f, -0.797690868f, -0.796764791f,\n    -0.795836926f, -0.794907153f, -0.793975472f, -0.793041945f,\n    -0.792106569f, -0.791169345f, -0.790230215f, -0.789289236f,\n    -0.788346410f, -0.787401736f, -0.786455214f, -0.785506845f,\n    -0.784556568f, -0.783604503f, -0.782650590f, -0.781694829f,\n    -0.780737221f, -0.779777765f, -0.778816521f, -0.777853429f,\n    -0.776888490f, -0.775921702f, -0.774953127f, -0.773982704f,\n    -0.773010433f, -0.772036374f, -0.771060526f, -0.770082831f,\n    -0.769103348f, -0.768122017f, -0.767138898f, -0.766153991f,\n    -0.765167236f, -0.764178753f, -0.763188422f, -0.762196302f,\n    -0.761202395f, -0.760206699f, -0.759209216f, -0.758209884f,\n    -0.757208824f, -0.756205976f, -0.755201399f, -0.754194975f,\n    -0.753186822f, -0.752176821f, -0.751165152f, -0.750151634f,\n    -0.749136388f, -0.748119354f, -0.747100592f, -0.746080101f,\n    -0.745057762f, -0.744033754f, -0.743007958f, -0.741980433f,\n    -0.740951121f, -0.739920080f, -0.738887310f, -0.737852812f,\n    -0.736816585f, -0.735778570f, -0.734738886f, -0.733697414f,\n    -0.732654274f, -0.731609404f, -0.730562747f, -0.729514420f,\n    -0.728464365f, -0.727412641f, -0.726359129f, -0.725303948f,\n    -0.724247098f, -0.723188460f, -0.722128212f, -0.721066177f,\n    -0.720002532f, -0.718937099f, -0.717870057f, -0.716801286f,\n    -0.715730846f, -0.714658678f, -0.713584840f, -0.712509394f,\n    -0.711432219f, -0.710353374f, -0.709272802f, -0.708190620f,\n    -0.707106769f, -0.706021249f, -0.704934061f, -0.703845263f,\n    -0.702754736f, -0.701662600f, -0.700568795f, -0.699473321f,\n    -0.698376238f, -0.697277486f, -0.696177125f, -0.695075095f,\n    -0.693971455f, -0.692866147f, -0.691759229f, -0.690650702f,\n    -0.689540565f, -0.688428760f, -0.687315345f, -0.686200321f,\n    -0.685083687f, -0.683965385f, -0.682845533f, -0.681724072f,\n    -0.680601001f, -0.679476321f, -0.678350031f, -0.677222192f,\n    -0.676092684f, -0.674961627f, -0.673829019f, -0.672694743f,\n    -0.671558976f, -0.670421541f, -0.669282615f, -0.668142021f,\n    -0.666999936f, -0.665856242f, -0.664710999f, -0.663564146f,\n    -0.662415802f, -0.661265850f, -0.660114348f, -0.658961296f,\n    -0.657806695f, -0.656650543f, -0.655492842f, -0.654333591f,\n    -0.653172851f, -0.652010560f, -0.650846660f, -0.649681330f,\n    -0.648514390f, -0.647345960f, -0.646176040f, -0.645004511f,\n    -0.643831551f, -0.642657042f, -0.641481042f, -0.640303493f,\n    -0.639124453f, -0.637943923f, -0.636761844f, -0.635578334f,\n    -0.634393275f, -0.633206785f, -0.632018745f, -0.630829215f,\n    -0.629638255f, -0.628445745f, -0.627251804f, -0.626056373f,\n    -0.624859512f, -0.623661101f, -0.622461259f, -0.621259987f,\n    -0.620057225f, -0.618852973f, -0.617647290f, -0.616440177f,\n    -0.615231574f, -0.614021540f, -0.612810075f, -0.611597180f,\n    -0.610382795f, -0.609167039f, -0.607949793f, -0.606731117f,\n    -0.605511069f, -0.604289532f, -0.603066623f, -0.601842225f,\n    -0.600616455f, -0.599389315f, -0.598160684f, -0.596930683f,\n    -0.595699310f, -0.594466507f, -0.593232274f, -0.591996670f,\n    -0.590759695f, -0.589521289f, -0.588281572f, -0.587040365f,\n    -0.585797846f, -0.584553957f, -0.583308637f, -0.582062006f,\n    -0.580813944f, -0.579564571f, -0.578313768f, -0.577061653f,\n    -0.575808167f, -0.574553370f, -0.573297143f, -0.572039604f,\n    -0.570780754f, -0.569520533f, -0.568258941f, -0.566996038f,\n    -0.565731823f, -0.564466238f, -0.563199341f, -0.561931133f,\n    -0.560661554f, -0.559390724f, -0.558118522f, -0.556845009f,\n    -0.555570245f, -0.554294109f, -0.553016722f, -0.551737964f,\n    -0.550457954f, -0.549176633f, -0.547894061f, -0.546610177f,\n    -0.545324981f, -0.544038534f, -0.542750776f, -0.541461766f,\n    -0.540171444f, -0.538879931f, -0.537587047f, -0.536292970f,\n    -0.534997642f, -0.533701003f, -0.532403111f, -0.531104028f,\n    -0.529803634f, -0.528501987f, -0.527199149f, -0.525895000f,\n    -0.524589658f, -0.523283124f, -0.521975279f, -0.520666242f,\n    -0.519356012f, -0.518044531f, -0.516731799f, -0.515417874f,\n    -0.514102757f, -0.512786388f, -0.511468828f, -0.510150075f,\n    -0.508830130f, -0.507508993f, -0.506186664f, -0.504863083f,\n    -0.503538370f, -0.502212465f, -0.500885367f, -0.499557108f,\n    -0.498227656f, -0.496897042f, -0.495565265f, -0.494232297f,\n    -0.492898196f, -0.491562903f, -0.490226477f, -0.488888890f,\n    -0.487550169f, -0.486210287f, -0.484869242f, -0.483527064f,\n    -0.482183784f, -0.480839342f, -0.479493767f, -0.478147060f,\n    -0.476799220f, -0.475450277f, -0.474100202f, -0.472749025f,\n    -0.471396744f, -0.470043331f, -0.468688816f, -0.467333198f,\n    -0.465976506f, -0.464618683f, -0.463259786f, -0.461899787f,\n    -0.460538715f, -0.459176540f, -0.457813293f, -0.456448972f,\n    -0.455083579f, -0.453717113f, -0.452349573f, -0.450980991f,\n    -0.449611336f, -0.448240608f, -0.446868837f, -0.445496023f,\n    -0.444122136f, -0.442747235f, -0.441371262f, -0.439994276f,\n    -0.438616246f, -0.437237173f, -0.435857087f, -0.434475958f,\n    -0.433093816f, -0.431710660f, -0.430326492f, -0.428941280f,\n    -0.427555084f, -0.426167876f, -0.424779683f, -0.423390478f,\n    -0.422000259f, -0.420609087f, -0.419216901f, -0.417823702f,\n    -0.416429549f, -0.415034413f, -0.413638324f, -0.412241220f,\n    -0.410843164f, -0.409444153f, -0.408044159f, -0.406643212f,\n    -0.405241311f, -0.403838456f, -0.402434647f, -0.401029885f,\n    -0.399624199f, -0.398217559f, -0.396809995f, -0.395401478f,\n    -0.393992037f, -0.392581671f, -0.391170382f, -0.389758170f,\n    -0.388345033f, -0.386931002f, -0.385516047f, -0.384100199f,\n    -0.382683426f, -0.381265759f, -0.379847199f, -0.378427744f,\n    -0.377007425f, -0.375586182f, -0.374164075f, -0.372741073f,\n    -0.371317208f, -0.369892448f, -0.368466824f, -0.367040336f,\n    -0.365612984f, -0.364184797f, -0.362755716f, -0.361325800f,\n    -0.359895051f, -0.358463407f, -0.357030958f, -0.355597675f,\n    -0.354163527f, -0.352728546f, -0.351292759f, -0.349856138f,\n    -0.348418683f, -0.346980423f, -0.345541328f, -0.344101429f,\n    -0.342660725f, -0.341219217f, -0.339776874f, -0.338333756f,\n    -0.336889863f, -0.335445136f, -0.333999664f, -0.332553357f,\n    -0.331106305f, -0.329658449f, -0.328209847f, -0.326760441f,\n    -0.325310290f, -0.323859364f, -0.322407693f, -0.320955247f,\n    -0.319502026f, -0.318048090f, -0.316593379f, -0.315137923f,\n    -0.313681751f, -0.312224805f, -0.310767144f, -0.309308767f,\n    -0.307849646f, -0.306389809f, -0.304929227f, -0.303467959f,\n    -0.302005947f, -0.300543249f, -0.299079835f, -0.297615707f,\n    -0.296150893f, -0.294685364f, -0.293219149f, -0.291752249f,\n    -0.290284663f, -0.288816422f, -0.287347466f, -0.285877824f,\n    -0.284407526f, -0.282936573f, -0.281464934f, -0.279992640f,\n    -0.278519690f, -0.277046084f, -0.275571823f, -0.274096906f,\n    -0.272621363f, -0.271145165f, -0.269668311f, -0.268190861f,\n    -0.266712755f, -0.265234023f, -0.263754666f, -0.262274712f,\n    -0.260794103f, -0.259312928f, -0.257831097f, -0.256348670f,\n    -0.254865646f, -0.253382027f, -0.251897812f, -0.250413001f,\n    -0.248927608f, -0.247441620f, -0.245955050f, -0.244467899f,\n    -0.242980182f, -0.241491884f, -0.240003020f, -0.238513589f,\n    -0.237023607f, -0.235533059f, -0.234041959f, -0.232550308f,\n    -0.231058106f, -0.229565367f, -0.228072077f, -0.226578265f,\n    -0.225083917f, -0.223589033f, -0.222093627f, -0.220597684f,\n    -0.219101235f, -0.217604280f, -0.216106802f, -0.214608818f,\n    -0.213110313f, -0.211611331f, -0.210111842f, -0.208611846f,\n    -0.207111374f, -0.205610409f, -0.204108968f, -0.202607036f,\n    -0.201104641f, -0.199601755f, -0.198098406f, -0.196594596f,\n    -0.195090324f, -0.193585590f, -0.192080393f, -0.190574750f,\n    -0.189068660f, -0.187562123f, -0.186055154f, -0.184547737f,\n    -0.183039889f, -0.181531608f, -0.180022895f, -0.178513765f,\n    -0.177004218f, -0.175494254f, -0.173983872f, -0.172473088f,\n    -0.170961887f, -0.169450298f, -0.167938292f, -0.166425899f,\n    -0.164913118f, -0.163399950f, -0.161886394f, -0.160372451f,\n    -0.158858150f, -0.157343462f, -0.155828401f, -0.154312968f,\n    -0.152797192f, -0.151281044f, -0.149764538f, -0.148247674f,\n    -0.146730468f, -0.145212919f, -0.143695027f, -0.142176807f,\n    -0.140658244f, -0.139139339f, -0.137620121f, -0.136100575f,\n    -0.134580702f, -0.133060530f, -0.131540030f, -0.130019218f,\n    -0.128498107f, -0.126976699f, -0.125454977f, -0.123932973f,\n    -0.122410677f, -0.120888084f, -0.119365215f, -0.117842063f,\n    -0.116318628f, -0.114794925f, -0.113270953f, -0.111746714f,\n    -0.110222206f, -0.108697444f, -0.107172422f, -0.105647154f,\n    -0.104121633f, -0.102595866f, -0.101069860f, -0.099543616f,\n    -0.098017141f, -0.096490428f, -0.094963498f, -0.093436338f,\n    -0.091908954f, -0.090381362f, -0.088853553f, -0.087325536f,\n    -0.085797310f, -0.084268890f, -0.082740262f, -0.081211448f,\n    -0.079682440f, -0.078153245f, -0.076623864f, -0.075094298f,\n    -0.073564567f, -0.072034650f, -0.070504576f, -0.068974331f,\n    -0.067443922f, -0.065913349f, -0.064382628f, -0.062851757f,\n    -0.061320737f, -0.059789572f, -0.058258265f, -0.056726821f,\n    -0.055195246f, -0.053663537f, -0.052131705f, -0.050599750f,\n    -0.049067676f, -0.047535483f, -0.046003181f, -0.044470772f,\n    -0.042938258f, -0.041405641f, -0.039872926f, -0.038340122f,\n    -0.036807224f, -0.035274237f, -0.033741172f, -0.032208025f,\n    -0.030674804f, -0.029141508f, -0.027608145f, -0.026074719f,\n    -0.024541229f, -0.023007682f, -0.021474080f, -0.019940428f,\n    -0.018406730f, -0.016872987f, -0.015339206f, -0.0138053885f,\n    -0.012271538f, -0.010737659f, -0.009203754f, -0.007669829f,\n    -0.0061358847f,-0.004601926f, -0.0030679568f,-0.0015339801f,\n\n    // sine\n    0.000000000f, 0.0015339801f,0.0030679568f,0.004601926f,\n    0.0061358847f,0.007669829f, 0.009203754f, 0.010737659f,\n    0.012271538f, 0.0138053885f,0.015339206f, 0.016872987f,\n    0.018406730f, 0.019940428f, 0.021474080f, 0.023007682f,\n    0.024541229f, 0.026074719f, 0.027608145f, 0.029141508f,\n    0.030674804f, 0.032208025f, 0.033741172f, 0.035274237f,\n    0.036807224f, 0.038340122f, 0.039872926f, 0.041405641f,\n    0.042938258f, 0.044470772f, 0.046003181f, 0.047535483f,\n    0.049067676f, 0.050599750f, 0.052131705f, 0.053663537f,\n    0.055195246f, 0.056726821f, 0.058258265f, 0.059789572f,\n    0.061320737f, 0.062851757f, 0.064382628f, 0.065913349f,\n    0.067443922f, 0.068974331f, 0.070504576f, 0.072034650f,\n    0.073564567f, 0.075094298f, 0.076623864f, 0.078153245f,\n    0.079682440f, 0.081211448f, 0.082740262f, 0.084268890f,\n    0.085797310f, 0.087325536f, 0.088853553f, 0.090381362f,\n    0.091908954f, 0.093436338f, 0.094963498f, 0.096490428f,\n    0.098017141f, 0.099543616f, 0.101069860f, 0.102595866f,\n    0.104121633f, 0.105647154f, 0.107172422f, 0.108697444f,\n    0.110222206f, 0.111746714f, 0.113270953f, 0.114794925f,\n    0.116318628f, 0.117842063f, 0.119365215f, 0.120888084f,\n    0.122410677f, 0.123932973f, 0.125454977f, 0.126976699f,\n    0.128498107f, 0.130019218f, 0.131540030f, 0.133060530f,\n    0.134580702f, 0.136100575f, 0.137620121f, 0.139139339f,\n    0.140658244f, 0.142176807f, 0.143695027f, 0.145212919f,\n    0.146730468f, 0.148247674f, 0.149764538f, 0.151281044f,\n    0.152797192f, 0.154312968f, 0.155828401f, 0.157343462f,\n    0.158858150f, 0.160372451f, 0.161886394f, 0.163399950f,\n    0.164913118f, 0.166425899f, 0.167938292f, 0.169450298f,\n    0.170961887f, 0.172473088f, 0.173983872f, 0.175494254f,\n    0.177004218f, 0.178513765f, 0.180022895f, 0.181531608f,\n    0.183039889f, 0.184547737f, 0.186055154f, 0.187562123f,\n    0.189068660f, 0.190574750f, 0.192080393f, 0.193585590f,\n    0.195090324f, 0.196594596f, 0.198098406f, 0.199601755f,\n    0.201104641f, 0.202607036f, 0.204108968f, 0.205610409f,\n    0.207111374f, 0.208611846f, 0.210111842f, 0.211611331f,\n    0.213110313f, 0.214608818f, 0.216106802f, 0.217604280f,\n    0.219101235f, 0.220597684f, 0.222093627f, 0.223589033f,\n    0.225083917f, 0.226578265f, 0.228072077f, 0.229565367f,\n    0.231058106f, 0.232550308f, 0.234041959f, 0.235533059f,\n    0.237023607f, 0.238513589f, 0.240003020f, 0.241491884f,\n    0.242980182f, 0.244467899f, 0.245955050f, 0.247441620f,\n    0.248927608f, 0.250413001f, 0.251897812f, 0.253382027f,\n    0.254865646f, 0.256348670f, 0.257831097f, 0.259312928f,\n    0.260794103f, 0.262274712f, 0.263754666f, 0.265234023f,\n    0.266712755f, 0.268190861f, 0.269668311f, 0.271145165f,\n    0.272621363f, 0.274096906f, 0.275571823f, 0.277046084f,\n    0.278519690f, 0.279992640f, 0.281464934f, 0.282936573f,\n    0.284407526f, 0.285877824f, 0.287347466f, 0.288816422f,\n    0.290284663f, 0.291752249f, 0.293219149f, 0.294685364f,\n    0.296150893f, 0.297615707f, 0.299079835f, 0.300543249f,\n    0.302005947f, 0.303467959f, 0.304929227f, 0.306389809f,\n    0.307849646f, 0.309308767f, 0.310767144f, 0.312224805f,\n    0.313681751f, 0.315137923f, 0.316593379f, 0.318048090f,\n    0.319502026f, 0.320955247f, 0.322407693f, 0.323859364f,\n    0.325310290f, 0.326760441f, 0.328209847f, 0.329658449f,\n    0.331106305f, 0.332553357f, 0.333999664f, 0.335445136f,\n    0.336889863f, 0.338333756f, 0.339776874f, 0.341219217f,\n    0.342660725f, 0.344101429f, 0.345541328f, 0.346980423f,\n    0.348418683f, 0.349856138f, 0.351292759f, 0.352728546f,\n    0.354163527f, 0.355597675f, 0.357030958f, 0.358463407f,\n    0.359895051f, 0.361325800f, 0.362755716f, 0.364184797f,\n    0.365612984f, 0.367040336f, 0.368466824f, 0.369892448f,\n    0.371317208f, 0.372741073f, 0.374164075f, 0.375586182f,\n    0.377007425f, 0.378427744f, 0.379847199f, 0.381265759f,\n    0.382683426f, 0.384100199f, 0.385516047f, 0.386931002f,\n    0.388345033f, 0.389758170f, 0.391170382f, 0.392581671f,\n    0.393992037f, 0.395401478f, 0.396809995f, 0.398217559f,\n    0.399624199f, 0.401029885f, 0.402434647f, 0.403838456f,\n    0.405241311f, 0.406643212f, 0.408044159f, 0.409444153f,\n    0.410843164f, 0.412241220f, 0.413638324f, 0.415034413f,\n    0.416429549f, 0.417823702f, 0.419216901f, 0.420609087f,\n    0.422000259f, 0.423390478f, 0.424779683f, 0.426167876f,\n    0.427555084f, 0.428941280f, 0.430326492f, 0.431710660f,\n    0.433093816f, 0.434475958f, 0.435857087f, 0.437237173f,\n    0.438616246f, 0.439994276f, 0.441371262f, 0.442747235f,\n    0.444122136f, 0.445496023f, 0.446868837f, 0.448240608f,\n    0.449611336f, 0.450980991f, 0.452349573f, 0.453717113f,\n    0.455083579f, 0.456448972f, 0.457813293f, 0.459176540f,\n    0.460538715f, 0.461899787f, 0.463259786f, 0.464618683f,\n    0.465976506f, 0.467333198f, 0.468688816f, 0.470043331f,\n    0.471396744f, 0.472749025f, 0.474100202f, 0.475450277f,\n    0.476799220f, 0.478147060f, 0.479493767f, 0.480839342f,\n    0.482183784f, 0.483527064f, 0.484869242f, 0.486210287f,\n    0.487550169f, 0.488888890f, 0.490226477f, 0.491562903f,\n    0.492898196f, 0.494232297f, 0.495565265f, 0.496897042f,\n    0.498227656f, 0.499557108f, 0.500885367f, 0.502212465f,\n    0.503538370f, 0.504863083f, 0.506186664f, 0.507508993f,\n    0.508830130f, 0.510150075f, 0.511468828f, 0.512786388f,\n    0.514102757f, 0.515417874f, 0.516731799f, 0.518044531f,\n    0.519356012f, 0.520666242f, 0.521975279f, 0.523283124f,\n    0.524589658f, 0.525895000f, 0.527199149f, 0.528501987f,\n    0.529803634f, 0.531104028f, 0.532403111f, 0.533701003f,\n    0.534997642f, 0.536292970f, 0.537587047f, 0.538879931f,\n    0.540171444f, 0.541461766f, 0.542750776f, 0.544038534f,\n    0.545324981f, 0.546610177f, 0.547894061f, 0.549176633f,\n    0.550457954f, 0.551737964f, 0.553016722f, 0.554294109f,\n    0.555570245f, 0.556845009f, 0.558118522f, 0.559390724f,\n    0.560661554f, 0.561931133f, 0.563199341f, 0.564466238f,\n    0.565731823f, 0.566996038f, 0.568258941f, 0.569520533f,\n    0.570780754f, 0.572039604f, 0.573297143f, 0.574553370f,\n    0.575808167f, 0.577061653f, 0.578313768f, 0.579564571f,\n    0.580813944f, 0.582062006f, 0.583308637f, 0.584553957f,\n    0.585797846f, 0.587040365f, 0.588281572f, 0.589521289f,\n    0.590759695f, 0.591996670f, 0.593232274f, 0.594466507f,\n    0.595699310f, 0.596930683f, 0.598160684f, 0.599389315f,\n    0.600616455f, 0.601842225f, 0.603066623f, 0.604289532f,\n    0.605511069f, 0.606731117f, 0.607949793f, 0.609167039f,\n    0.610382795f, 0.611597180f, 0.612810075f, 0.614021540f,\n    0.615231574f, 0.616440177f, 0.617647290f, 0.618852973f,\n    0.620057225f, 0.621259987f, 0.622461259f, 0.623661101f,\n    0.624859512f, 0.626056373f, 0.627251804f, 0.628445745f,\n    0.629638255f, 0.630829215f, 0.632018745f, 0.633206785f,\n    0.634393275f, 0.635578334f, 0.636761844f, 0.637943923f,\n    0.639124453f, 0.640303493f, 0.641481042f, 0.642657042f,\n    0.643831551f, 0.645004511f, 0.646176040f, 0.647345960f,\n    0.648514390f, 0.649681330f, 0.650846660f, 0.652010560f,\n    0.653172851f, 0.654333591f, 0.655492842f, 0.656650543f,\n    0.657806695f, 0.658961296f, 0.660114348f, 0.661265850f,\n    0.662415802f, 0.663564146f, 0.664710999f, 0.665856242f,\n    0.666999936f, 0.668142021f, 0.669282615f, 0.670421541f,\n    0.671558976f, 0.672694743f, 0.673829019f, 0.674961627f,\n    0.676092684f, 0.677222192f, 0.678350031f, 0.679476321f,\n    0.680601001f, 0.681724072f, 0.682845533f, 0.683965385f,\n    0.685083687f, 0.686200321f, 0.687315345f, 0.688428760f,\n    0.689540565f, 0.690650702f, 0.691759229f, 0.692866147f,\n    0.693971455f, 0.695075095f, 0.696177125f, 0.697277486f,\n    0.698376238f, 0.699473321f, 0.700568795f, 0.701662600f,\n    0.702754736f, 0.703845263f, 0.704934061f, 0.706021249f,\n    0.707106769f, 0.708190620f, 0.709272802f, 0.710353374f,\n    0.711432219f, 0.712509394f, 0.713584840f, 0.714658678f,\n    0.715730846f, 0.716801286f, 0.717870057f, 0.718937099f,\n    0.720002532f, 0.721066177f, 0.722128212f, 0.723188460f,\n    0.724247098f, 0.725303948f, 0.726359129f, 0.727412641f,\n    0.728464365f, 0.729514420f, 0.730562747f, 0.731609404f,\n    0.732654274f, 0.733697414f, 0.734738886f, 0.735778570f,\n    0.736816585f, 0.737852812f, 0.738887310f, 0.739920080f,\n    0.740951121f, 0.741980433f, 0.743007958f, 0.744033754f,\n    0.745057762f, 0.746080101f, 0.747100592f, 0.748119354f,\n    0.749136388f, 0.750151634f, 0.751165152f, 0.752176821f,\n    0.753186822f, 0.754194975f, 0.755201399f, 0.756205976f,\n    0.757208824f, 0.758209884f, 0.759209216f, 0.760206699f,\n    0.761202395f, 0.762196302f, 0.763188422f, 0.764178753f,\n    0.765167236f, 0.766153991f, 0.767138898f, 0.768122017f,\n    0.769103348f, 0.770082831f, 0.771060526f, 0.772036374f,\n    0.773010433f, 0.773982704f, 0.774953127f, 0.775921702f,\n    0.776888490f, 0.777853429f, 0.778816521f, 0.779777765f,\n    0.780737221f, 0.781694829f, 0.782650590f, 0.783604503f,\n    0.784556568f, 0.785506845f, 0.786455214f, 0.787401736f,\n    0.788346410f, 0.789289236f, 0.790230215f, 0.791169345f,\n    0.792106569f, 0.793041945f, 0.793975472f, 0.794907153f,\n    0.795836926f, 0.796764791f, 0.797690868f, 0.798614979f,\n    0.799537241f, 0.800457656f, 0.801376164f, 0.802292824f,\n    0.803207517f, 0.804120362f, 0.805031359f, 0.805940390f,\n    0.806847572f, 0.807752848f, 0.808656156f, 0.809557617f,\n    0.810457170f, 0.811354876f, 0.812250614f, 0.813144386f,\n    0.814036310f, 0.814926326f, 0.815814435f, 0.816700578f,\n    0.817584813f, 0.818467140f, 0.819347501f, 0.820225954f,\n    0.821102500f, 0.821977139f, 0.822849810f, 0.823720515f,\n    0.824589312f, 0.825456142f, 0.826321065f, 0.827184021f,\n    0.828045070f, 0.828904092f, 0.829761207f, 0.830616415f,\n    0.831469595f, 0.832320869f, 0.833170176f, 0.834017515f,\n    0.834862888f, 0.835706294f, 0.836547732f, 0.837387204f,\n    0.838224709f, 0.839060247f, 0.839893818f, 0.840725362f,\n    0.841554999f, 0.842382610f, 0.843208253f, 0.844031870f,\n    0.844853580f, 0.845673263f, 0.846490920f, 0.847306609f,\n    0.848120332f, 0.848932028f, 0.849741757f, 0.850549459f,\n    0.851355195f, 0.852158904f, 0.852960587f, 0.853760302f,\n    0.854557991f, 0.855353653f, 0.856147349f, 0.856938958f,\n    0.857728601f, 0.858516216f, 0.859301805f, 0.860085368f,\n    0.860866964f, 0.861646473f, 0.862423956f, 0.863199413f,\n    0.863972843f, 0.864744246f, 0.865513623f, 0.866280973f,\n    0.867046237f, 0.867809474f, 0.868570685f, 0.869329870f,\n    0.870086968f, 0.870842040f, 0.871595085f, 0.872346044f,\n    0.873094976f, 0.873841822f, 0.874586642f, 0.875329375f,\n    0.876070082f, 0.876808703f, 0.877545297f, 0.878279805f,\n    0.879012227f, 0.879742622f, 0.880470872f, 0.881197095f,\n    0.881921291f, 0.882643342f, 0.883363366f, 0.884081244f,\n    0.884797096f, 0.885510862f, 0.886222541f, 0.886932135f,\n    0.887639642f, 0.888345063f, 0.889048338f, 0.889749587f,\n    0.890448749f, 0.891145766f, 0.891840696f, 0.892533541f,\n    0.893224299f, 0.893912971f, 0.894599497f, 0.895283937f,\n    0.895966232f, 0.896646500f, 0.897324562f, 0.898000598f,\n    0.898674488f, 0.899346232f, 0.900015891f, 0.900683403f,\n    0.901348829f, 0.902012169f, 0.902673304f, 0.903332353f,\n    0.903989315f, 0.904644072f, 0.905296743f, 0.905947268f,\n    0.906595707f, 0.907242000f, 0.907886088f, 0.908528090f,\n    0.909168005f, 0.909805715f, 0.910441279f, 0.911074758f,\n    0.911706030f, 0.912335157f, 0.912962198f, 0.913587034f,\n    0.914209783f, 0.914830327f, 0.915448725f, 0.916064978f,\n    0.916679084f, 0.917290986f, 0.917900801f, 0.918508410f,\n    0.919113874f, 0.919717133f, 0.920318305f, 0.920917213f,\n    0.921514034f, 0.922108650f, 0.922701120f, 0.923291445f,\n    0.923879504f, 0.924465477f, 0.925049245f, 0.925630808f,\n    0.926210225f, 0.926787496f, 0.927362502f, 0.927935421f,\n    0.928506076f, 0.929074585f, 0.929640889f, 0.930205047f,\n    0.930766940f, 0.931326687f, 0.931884289f, 0.932439625f,\n    0.932992816f, 0.933543801f, 0.934092522f, 0.934639156f,\n    0.935183525f, 0.935725689f, 0.936265647f, 0.936803460f,\n    0.937339008f, 0.937872350f, 0.938403547f, 0.938932478f,\n    0.939459205f, 0.939983726f, 0.940506041f, 0.941026151f,\n    0.941544056f, 0.942059755f, 0.942573190f, 0.943084419f,\n    0.943593442f, 0.944100261f, 0.944604814f, 0.945107222f,\n    0.945607305f, 0.946105242f, 0.946600914f, 0.947094381f,\n    0.947585583f, 0.948074579f, 0.948561370f, 0.949045897f,\n    0.949528158f, 0.950008273f, 0.950486064f, 0.950961649f,\n    0.951435030f, 0.951906145f, 0.952374995f, 0.952841640f,\n    0.953306019f, 0.953768194f, 0.954228103f, 0.954685748f,\n    0.955141187f, 0.955594361f, 0.956045270f, 0.956493914f,\n    0.956940353f, 0.957384527f, 0.957826436f, 0.958266079f,\n    0.958703458f, 0.959138632f, 0.959571540f, 0.960002124f,\n    0.960430503f, 0.960856616f, 0.961280465f, 0.961702049f,\n    0.962121427f, 0.962538481f, 0.962953269f, 0.963365793f,\n    0.963776052f, 0.964184046f, 0.964589775f, 0.964993238f,\n    0.965394437f, 0.965793371f, 0.966189981f, 0.966584384f,\n    0.966976464f, 0.967366278f, 0.967753828f, 0.968139112f,\n    0.968522072f, 0.968902826f, 0.969281256f, 0.969657362f,\n    0.970031261f, 0.970402837f, 0.970772147f, 0.971139133f,\n    0.971503913f, 0.971866310f, 0.972226501f, 0.972584367f,\n    0.972939968f, 0.973293245f, 0.973644257f, 0.973992944f,\n    0.974339366f, 0.974683523f, 0.975025356f, 0.975364864f,\n    0.975702107f, 0.976037085f, 0.976369739f, 0.976700068f,\n    0.977028131f, 0.977353871f, 0.977677345f, 0.977998495f,\n    0.978317380f, 0.978633940f, 0.978948176f, 0.979260147f,\n    0.979569793f, 0.979877114f, 0.980182111f, 0.980484843f,\n    0.980785251f, 0.981083393f, 0.981379211f, 0.981672704f,\n    0.981963873f, 0.982252717f, 0.982539296f, 0.982823551f,\n    0.983105481f, 0.983385086f, 0.983662426f, 0.983937442f,\n    0.984210074f, 0.984480441f, 0.984748483f, 0.985014260f,\n    0.985277653f, 0.985538721f, 0.985797524f, 0.986053944f,\n    0.986308098f, 0.986559927f, 0.986809373f, 0.987056553f,\n    0.987301409f, 0.987543941f, 0.987784147f, 0.988022029f,\n    0.988257587f, 0.988490820f, 0.988721669f, 0.988950253f,\n    0.989176512f, 0.989400446f, 0.989621997f, 0.989841282f,\n    0.990058184f, 0.990272820f, 0.990485072f, 0.990695000f,\n    0.990902662f, 0.991107941f, 0.991310835f, 0.991511464f,\n    0.991709769f, 0.991905689f, 0.992099285f, 0.992290616f,\n    0.992479563f, 0.992666125f, 0.992850423f, 0.993032336f,\n    0.993211925f, 0.993389189f, 0.993564129f, 0.993736744f,\n    0.993906975f, 0.994074881f, 0.994240463f, 0.994403660f,\n    0.994564593f, 0.994723141f, 0.994879305f, 0.995033205f,\n    0.995184720f, 0.995333910f, 0.995480776f, 0.995625257f,\n    0.995767415f, 0.995907247f, 0.996044695f, 0.996179819f,\n    0.996312618f, 0.996443033f, 0.996571124f, 0.996696889f,\n    0.996820271f, 0.996941328f, 0.997060061f, 0.997176409f,\n    0.997290432f, 0.997402132f, 0.997511446f, 0.997618437f,\n    0.997723043f, 0.997825325f, 0.997925282f, 0.998022854f,\n    0.998118103f, 0.998211026f, 0.998301566f, 0.998389721f,\n    0.998475552f, 0.998559058f, 0.998640239f, 0.998719037f,\n    0.998795450f, 0.998869538f, 0.998941302f, 0.999010682f,\n    0.999077737f, 0.999142408f, 0.999204755f, 0.999264777f,\n    0.999322355f, 0.999377668f, 0.999430597f, 0.999481201f,\n    0.999529421f, 0.999575317f, 0.999618828f, 0.999660015f,\n    0.999698818f, 0.999735296f, 0.999769390f, 0.999801159f,\n    0.999830604f, 0.999857664f, 0.999882340f, 0.999904692f,\n    0.999924719f, 0.999942362f, 0.999957621f, 0.999970615f,\n    0.999981165f, 0.999989390f, 0.999995291f, 0.999998808f,\n};\n\ns16 gArctanTable[0x401] = {\n    0x0000, 0x000A, 0x0014, 0x001F, 0x0029, 0x0033, 0x003D, 0x0047,\n    0x0051, 0x005C, 0x0066, 0x0070, 0x007A, 0x0084, 0x008F, 0x0099,\n    0x00A3, 0x00AD, 0x00B7, 0x00C2, 0x00CC, 0x00D6, 0x00E0, 0x00EA,\n    0x00F4, 0x00FF, 0x0109, 0x0113, 0x011D, 0x0127, 0x0131, 0x013C,\n    0x0146, 0x0150, 0x015A, 0x0164, 0x016F, 0x0179, 0x0183, 0x018D,\n    0x0197, 0x01A1, 0x01AC, 0x01B6, 0x01C0, 0x01CA, 0x01D4, 0x01DE,\n    0x01E9, 0x01F3, 0x01FD, 0x0207, 0x0211, 0x021B, 0x0226, 0x0230,\n    0x023A, 0x0244, 0x024E, 0x0258, 0x0262, 0x026D, 0x0277, 0x0281,\n    0x028B, 0x0295, 0x029F, 0x02A9, 0x02B4, 0x02BE, 0x02C8, 0x02D2,\n    0x02DC, 0x02E6, 0x02F0, 0x02FB, 0x0305, 0x030F, 0x0319, 0x0323,\n    0x032D, 0x0337, 0x0341, 0x034C, 0x0356, 0x0360, 0x036A, 0x0374,\n    0x037E, 0x0388, 0x0392, 0x039C, 0x03A7, 0x03B1, 0x03BB, 0x03C5,\n    0x03CF, 0x03D9, 0x03E3, 0x03ED, 0x03F7, 0x0401, 0x040C, 0x0416,\n    0x0420, 0x042A, 0x0434, 0x043E, 0x0448, 0x0452, 0x045C, 0x0466,\n    0x0470, 0x047A, 0x0484, 0x048E, 0x0499, 0x04A3, 0x04AD, 0x04B7,\n    0x04C1, 0x04CB, 0x04D5, 0x04DF, 0x04E9, 0x04F3, 0x04FD, 0x0507,\n    0x0511, 0x051B, 0x0525, 0x052F, 0x0539, 0x0543, 0x054D, 0x0557,\n    0x0561, 0x056B, 0x0575, 0x057F, 0x0589, 0x0593, 0x059D, 0x05A7,\n    0x05B1, 0x05BB, 0x05C5, 0x05CF, 0x05D9, 0x05E3, 0x05ED, 0x05F7,\n    0x0601, 0x060B, 0x0615, 0x061F, 0x0629, 0x0633, 0x063D, 0x0647,\n    0x0651, 0x065B, 0x0665, 0x066E, 0x0678, 0x0682, 0x068C, 0x0696,\n    0x06A0, 0x06AA, 0x06B4, 0x06BE, 0x06C8, 0x06D2, 0x06DC, 0x06E5,\n    0x06EF, 0x06F9, 0x0703, 0x070D, 0x0717, 0x0721, 0x072B, 0x0735,\n    0x073E, 0x0748, 0x0752, 0x075C, 0x0766, 0x0770, 0x077A, 0x0783,\n    0x078D, 0x0797, 0x07A1, 0x07AB, 0x07B5, 0x07BE, 0x07C8, 0x07D2,\n    0x07DC, 0x07E6, 0x07EF, 0x07F9, 0x0803, 0x080D, 0x0817, 0x0820,\n    0x082A, 0x0834, 0x083E, 0x0848, 0x0851, 0x085B, 0x0865, 0x086F,\n    0x0878, 0x0882, 0x088C, 0x0896, 0x089F, 0x08A9, 0x08B3, 0x08BD,\n    0x08C6, 0x08D0, 0x08DA, 0x08E3, 0x08ED, 0x08F7, 0x0901, 0x090A,\n    0x0914, 0x091E, 0x0927, 0x0931, 0x093B, 0x0944, 0x094E, 0x0958,\n    0x0961, 0x096B, 0x0975, 0x097E, 0x0988, 0x0992, 0x099B, 0x09A5,\n    0x09AE, 0x09B8, 0x09C2, 0x09CB, 0x09D5, 0x09DE, 0x09E8, 0x09F2,\n    0x09FB, 0x0A05, 0x0A0E, 0x0A18, 0x0A22, 0x0A2B, 0x0A35, 0x0A3E,\n    0x0A48, 0x0A51, 0x0A5B, 0x0A64, 0x0A6E, 0x0A77, 0x0A81, 0x0A8B,\n    0x0A94, 0x0A9E, 0x0AA7, 0x0AB1, 0x0ABA, 0x0AC4, 0x0ACD, 0x0AD7,\n    0x0AE0, 0x0AE9, 0x0AF3, 0x0AFC, 0x0B06, 0x0B0F, 0x0B19, 0x0B22,\n    0x0B2C, 0x0B35, 0x0B3F, 0x0B48, 0x0B51, 0x0B5B, 0x0B64, 0x0B6E,\n    0x0B77, 0x0B80, 0x0B8A, 0x0B93, 0x0B9D, 0x0BA6, 0x0BAF, 0x0BB9,\n    0x0BC2, 0x0BCB, 0x0BD5, 0x0BDE, 0x0BE7, 0x0BF1, 0x0BFA, 0x0C03,\n    0x0C0D, 0x0C16, 0x0C1F, 0x0C29, 0x0C32, 0x0C3B, 0x0C45, 0x0C4E,\n    0x0C57, 0x0C60, 0x0C6A, 0x0C73, 0x0C7C, 0x0C86, 0x0C8F, 0x0C98,\n    0x0CA1, 0x0CAB, 0x0CB4, 0x0CBD, 0x0CC6, 0x0CCF, 0x0CD9, 0x0CE2,\n    0x0CEB, 0x0CF4, 0x0CFD, 0x0D07, 0x0D10, 0x0D19, 0x0D22, 0x0D2B,\n    0x0D34, 0x0D3E, 0x0D47, 0x0D50, 0x0D59, 0x0D62, 0x0D6B, 0x0D74,\n    0x0D7D, 0x0D87, 0x0D90, 0x0D99, 0x0DA2, 0x0DAB, 0x0DB4, 0x0DBD,\n    0x0DC6, 0x0DCF, 0x0DD8, 0x0DE1, 0x0DEA, 0x0DF3, 0x0DFC, 0x0E05,\n    0x0E0F, 0x0E18, 0x0E21, 0x0E2A, 0x0E33, 0x0E3C, 0x0E45, 0x0E4E,\n    0x0E56, 0x0E5F, 0x0E68, 0x0E71, 0x0E7A, 0x0E83, 0x0E8C, 0x0E95,\n    0x0E9E, 0x0EA7, 0x0EB0, 0x0EB9, 0x0EC2, 0x0ECB, 0x0ED4, 0x0EDC,\n    0x0EE5, 0x0EEE, 0x0EF7, 0x0F00, 0x0F09, 0x0F12, 0x0F1B, 0x0F23,\n    0x0F2C, 0x0F35, 0x0F3E, 0x0F47, 0x0F50, 0x0F58, 0x0F61, 0x0F6A,\n    0x0F73, 0x0F7C, 0x0F84, 0x0F8D, 0x0F96, 0x0F9F, 0x0FA7, 0x0FB0,\n    0x0FB9, 0x0FC2, 0x0FCA, 0x0FD3, 0x0FDC, 0x0FE5, 0x0FED, 0x0FF6,\n    0x0FFF, 0x1007, 0x1010, 0x1019, 0x1021, 0x102A, 0x1033, 0x103B,\n    0x1044, 0x104D, 0x1055, 0x105E, 0x1067, 0x106F, 0x1078, 0x1080,\n    0x1089, 0x1092, 0x109A, 0x10A3, 0x10AB, 0x10B4, 0x10BC, 0x10C5,\n    0x10CE, 0x10D6, 0x10DF, 0x10E7, 0x10F0, 0x10F8, 0x1101, 0x1109,\n    0x1112, 0x111A, 0x1123, 0x112B, 0x1134, 0x113C, 0x1145, 0x114D,\n    0x1156, 0x115E, 0x1166, 0x116F, 0x1177, 0x1180, 0x1188, 0x1191,\n    0x1199, 0x11A1, 0x11AA, 0x11B2, 0x11BB, 0x11C3, 0x11CB, 0x11D4,\n    0x11DC, 0x11E4, 0x11ED, 0x11F5, 0x11FD, 0x1206, 0x120E, 0x1216,\n    0x121F, 0x1227, 0x122F, 0x1237, 0x1240, 0x1248, 0x1250, 0x1259,\n    0x1261, 0x1269, 0x1271, 0x127A, 0x1282, 0x128A, 0x1292, 0x129A,\n    0x12A3, 0x12AB, 0x12B3, 0x12BB, 0x12C3, 0x12CC, 0x12D4, 0x12DC,\n    0x12E4, 0x12EC, 0x12F4, 0x12FC, 0x1305, 0x130D, 0x1315, 0x131D,\n    0x1325, 0x132D, 0x1335, 0x133D, 0x1345, 0x134D, 0x1355, 0x135E,\n    0x1366, 0x136E, 0x1376, 0x137E, 0x1386, 0x138E, 0x1396, 0x139E,\n    0x13A6, 0x13AE, 0x13B6, 0x13BE, 0x13C6, 0x13CE, 0x13D6, 0x13DE,\n    0x13E6, 0x13ED, 0x13F5, 0x13FD, 0x1405, 0x140D, 0x1415, 0x141D,\n    0x1425, 0x142D, 0x1435, 0x143D, 0x1444, 0x144C, 0x1454, 0x145C,\n    0x1464, 0x146C, 0x1473, 0x147B, 0x1483, 0x148B, 0x1493, 0x149B,\n    0x14A2, 0x14AA, 0x14B2, 0x14BA, 0x14C1, 0x14C9, 0x14D1, 0x14D9,\n    0x14E0, 0x14E8, 0x14F0, 0x14F8, 0x14FF, 0x1507, 0x150F, 0x1516,\n    0x151E, 0x1526, 0x152D, 0x1535, 0x153D, 0x1544, 0x154C, 0x1554,\n    0x155B, 0x1563, 0x156B, 0x1572, 0x157A, 0x1581, 0x1589, 0x1591,\n    0x1598, 0x15A0, 0x15A7, 0x15AF, 0x15B7, 0x15BE, 0x15C6, 0x15CD,\n    0x15D5, 0x15DC, 0x15E4, 0x15EB, 0x15F3, 0x15FA, 0x1602, 0x1609,\n    0x1611, 0x1618, 0x1620, 0x1627, 0x162F, 0x1636, 0x163E, 0x1645,\n    0x164C, 0x1654, 0x165B, 0x1663, 0x166A, 0x1671, 0x1679, 0x1680,\n    0x1688, 0x168F, 0x1696, 0x169E, 0x16A5, 0x16AC, 0x16B4, 0x16BB,\n    0x16C2, 0x16CA, 0x16D1, 0x16D8, 0x16E0, 0x16E7, 0x16EE, 0x16F6,\n    0x16FD, 0x1704, 0x170B, 0x1713, 0x171A, 0x1721, 0x1728, 0x1730,\n    0x1737, 0x173E, 0x1745, 0x174C, 0x1754, 0x175B, 0x1762, 0x1769,\n    0x1770, 0x1778, 0x177F, 0x1786, 0x178D, 0x1794, 0x179B, 0x17A2,\n    0x17AA, 0x17B1, 0x17B8, 0x17BF, 0x17C6, 0x17CD, 0x17D4, 0x17DB,\n    0x17E2, 0x17E9, 0x17F0, 0x17F7, 0x17FE, 0x1806, 0x180D, 0x1814,\n    0x181B, 0x1822, 0x1829, 0x1830, 0x1837, 0x183E, 0x1845, 0x184C,\n    0x1853, 0x185A, 0x1860, 0x1867, 0x186E, 0x1875, 0x187C, 0x1883,\n    0x188A, 0x1891, 0x1898, 0x189F, 0x18A6, 0x18AD, 0x18B3, 0x18BA,\n    0x18C1, 0x18C8, 0x18CF, 0x18D6, 0x18DD, 0x18E3, 0x18EA, 0x18F1,\n    0x18F8, 0x18FF, 0x1906, 0x190C, 0x1913, 0x191A, 0x1921, 0x1928,\n    0x192E, 0x1935, 0x193C, 0x1943, 0x1949, 0x1950, 0x1957, 0x195D,\n    0x1964, 0x196B, 0x1972, 0x1978, 0x197F, 0x1986, 0x198C, 0x1993,\n    0x199A, 0x19A0, 0x19A7, 0x19AE, 0x19B4, 0x19BB, 0x19C2, 0x19C8,\n    0x19CF, 0x19D5, 0x19DC, 0x19E3, 0x19E9, 0x19F0, 0x19F6, 0x19FD,\n    0x1A04, 0x1A0A, 0x1A11, 0x1A17, 0x1A1E, 0x1A24, 0x1A2B, 0x1A31,\n    0x1A38, 0x1A3E, 0x1A45, 0x1A4B, 0x1A52, 0x1A58, 0x1A5F, 0x1A65,\n    0x1A6C, 0x1A72, 0x1A79, 0x1A7F, 0x1A86, 0x1A8C, 0x1A93, 0x1A99,\n    0x1A9F, 0x1AA6, 0x1AAC, 0x1AB3, 0x1AB9, 0x1AC0, 0x1AC6, 0x1ACC,\n    0x1AD3, 0x1AD9, 0x1ADF, 0x1AE6, 0x1AEC, 0x1AF2, 0x1AF9, 0x1AFF,\n    0x1B05, 0x1B0C, 0x1B12, 0x1B18, 0x1B1F, 0x1B25, 0x1B2B, 0x1B32,\n    0x1B38, 0x1B3E, 0x1B44, 0x1B4B, 0x1B51, 0x1B57, 0x1B5D, 0x1B64,\n    0x1B6A, 0x1B70, 0x1B76, 0x1B7D, 0x1B83, 0x1B89, 0x1B8F, 0x1B95,\n    0x1B9C, 0x1BA2, 0x1BA8, 0x1BAE, 0x1BB4, 0x1BBA, 0x1BC1, 0x1BC7,\n    0x1BCD, 0x1BD3, 0x1BD9, 0x1BDF, 0x1BE5, 0x1BEB, 0x1BF2, 0x1BF8,\n    0x1BFE, 0x1C04, 0x1C0A, 0x1C10, 0x1C16, 0x1C1C, 0x1C22, 0x1C28,\n    0x1C2E, 0x1C34, 0x1C3A, 0x1C40, 0x1C46, 0x1C4C, 0x1C52, 0x1C58,\n    0x1C5E, 0x1C64, 0x1C6A, 0x1C70, 0x1C76, 0x1C7C, 0x1C82, 0x1C88,\n    0x1C8E, 0x1C94, 0x1C9A, 0x1CA0, 0x1CA6, 0x1CAC, 0x1CB2, 0x1CB8,\n    0x1CBE, 0x1CC3, 0x1CC9, 0x1CCF, 0x1CD5, 0x1CDB, 0x1CE1, 0x1CE7,\n    0x1CED, 0x1CF3, 0x1CF8, 0x1CFE, 0x1D04, 0x1D0A, 0x1D10, 0x1D16,\n    0x1D1B, 0x1D21, 0x1D27, 0x1D2D, 0x1D33, 0x1D38, 0x1D3E, 0x1D44,\n    0x1D4A, 0x1D4F, 0x1D55, 0x1D5B, 0x1D61, 0x1D66, 0x1D6C, 0x1D72,\n    0x1D78, 0x1D7D, 0x1D83, 0x1D89, 0x1D8E, 0x1D94, 0x1D9A, 0x1DA0,\n    0x1DA5, 0x1DAB, 0x1DB1, 0x1DB6, 0x1DBC, 0x1DC2, 0x1DC7, 0x1DCD,\n    0x1DD3, 0x1DD8, 0x1DDE, 0x1DE3, 0x1DE9, 0x1DEF, 0x1DF4, 0x1DFA,\n    0x1DFF, 0x1E05, 0x1E0B, 0x1E10, 0x1E16, 0x1E1B, 0x1E21, 0x1E26,\n    0x1E2C, 0x1E32, 0x1E37, 0x1E3D, 0x1E42, 0x1E48, 0x1E4D, 0x1E53,\n    0x1E58, 0x1E5E, 0x1E63, 0x1E69, 0x1E6E, 0x1E74, 0x1E79, 0x1E7F,\n    0x1E84, 0x1E8A, 0x1E8F, 0x1E94, 0x1E9A, 0x1E9F, 0x1EA5, 0x1EAA,\n    0x1EB0, 0x1EB5, 0x1EBA, 0x1EC0, 0x1EC5, 0x1ECB, 0x1ED0, 0x1ED5,\n    0x1EDB, 0x1EE0, 0x1EE6, 0x1EEB, 0x1EF0, 0x1EF6, 0x1EFB, 0x1F00,\n    0x1F06, 0x1F0B, 0x1F10, 0x1F16, 0x1F1B, 0x1F20, 0x1F26, 0x1F2B,\n    0x1F30, 0x1F36, 0x1F3B, 0x1F40, 0x1F45, 0x1F4B, 0x1F50, 0x1F55,\n    0x1F5A, 0x1F60, 0x1F65, 0x1F6A, 0x1F6F, 0x1F75, 0x1F7A, 0x1F7F,\n    0x1F84, 0x1F8A, 0x1F8F, 0x1F94, 0x1F99, 0x1F9E, 0x1FA4, 0x1FA9,\n    0x1FAE, 0x1FB3, 0x1FB8, 0x1FBD, 0x1FC3, 0x1FC8, 0x1FCD, 0x1FD2,\n    0x1FD7, 0x1FDC, 0x1FE1, 0x1FE6, 0x1FEC, 0x1FF1, 0x1FF6, 0x1FFB,\n    0x2000\n};\n"
  },
  {
    "path": "include/types.h",
    "content": "#ifndef TYPES_H\n#define TYPES_H\n\n// This file contains various data types used in Super Mario 64 that don't yet\n// have an appropriate header.\n\n#include <ultra64.h>\n#include \"macros.h\"\n#include \"config.h\"\n\n\n// Certain functions are marked as having return values, but do not\n// actually return a value. This causes undefined behavior, which we'd rather\n// avoid on modern GCC. This only impacts -O2 and can matter for both the function\n// itself and functions that call it.\n#ifdef AVOID_UB\n    #define BAD_RETURN(cmd) void\n#else\n    #define BAD_RETURN(cmd) cmd\n#endif\n\n\nstruct Controller {\n  /*0x00*/ s16 rawStickX;       //\n  /*0x02*/ s16 rawStickY;       //\n  /*0x04*/ float stickX;        // [-64, 64] positive is right\n  /*0x08*/ float stickY;        // [-64, 64] positive is up\n  /*0x0C*/ float stickMag;      // distance from center [0, 64]\n  /*0x10*/ u16 buttonDown;\n  /*0x12*/ u16 buttonPressed;\n  /*0x14*/ OSContStatus *statusData;\n  /*0x18*/ OSContPad *controllerData;\n#if ENABLE_RUMBLE\n  /*0x1C*/ s32 port;\n#endif\n};\n\ntypedef f32 Vec2f[2];\ntypedef f32 Vec3f[3]; // X, Y, Z, where Y is up\ntypedef s16 Vec3s[3];\ntypedef s32 Vec3i[3];\ntypedef f32 Vec4f[4];\ntypedef s16 Vec4s[4];\n\ntypedef f32 Mat4[4][4];\n\ntypedef uintptr_t GeoLayout;\ntypedef uintptr_t LevelScript;\ntypedef s16 Movtex;\ntypedef s16 MacroObject;\ntypedef s16 Collision; // Collision data is limited to -32768 to 32767. Change this if you want to increase it.\ntypedef s16 Trajectory;\ntypedef s16 PaintingData;\ntypedef uintptr_t BehaviorScript;\ntypedef u8 Texture;\ntypedef s8 RoomData; // Rooms are limited to -128 to 127. Change the type if you wish to have more rooms.\ntypedef Collision TerrainData;\ntypedef TerrainData Vec3Terrain[3];\n\nenum SpTaskState {\n    SPTASK_STATE_NOT_STARTED,\n    SPTASK_STATE_RUNNING,\n    SPTASK_STATE_INTERRUPTED,\n    SPTASK_STATE_FINISHED,\n    SPTASK_STATE_FINISHED_DP\n};\n\nstruct SPTask {\n    /*0x00*/ OSTask task;\n    /*0x40*/ OSMesgQueue *msgqueue;\n    /*0x44*/ OSMesg msg;\n    /*0x48*/ enum SpTaskState state;\n}; // size = 0x4C, align = 0x8\n\nstruct VblankHandler {\n    OSMesgQueue *queue;\n    OSMesg msg;\n};\n\n#define ANIM_FLAG_NOLOOP     (1 << 0) // 0x01\n#define ANIM_FLAG_BACKWARD   (1 << 1) // 0x02\n#define ANIM_FLAG_2          (1 << 2) // 0x04\n#define ANIM_FLAG_HOR_TRANS  (1 << 3) // 0x08\n#define ANIM_FLAG_VERT_TRANS (1 << 4) // 0x10\n#define ANIM_FLAG_5          (1 << 5) // 0x20\n#define ANIM_FLAG_6          (1 << 6) // 0x40\n#define ANIM_FLAG_7          (1 << 7) // 0x80\n\nstruct Animation {\n    /*0x00*/ s16 flags;\n    /*0x02*/ s16 animYTransDivisor;\n    /*0x04*/ s16 startFrame;\n    /*0x06*/ s16 loopStart;\n    /*0x08*/ s16 loopEnd;\n    /*0x0A*/ s16 unusedBoneCount;\n    /*0x0C*/ const s16 *values;\n    /*0x10*/ const u16 *index;\n    /*0x14*/ u32 length; // only used with Mario animations to determine how much to load. 0 otherwise.\n};\n\n#define ANIMINDEX_NUMPARTS(animindex) (sizeof(animindex) / sizeof(u16) / 6 - 1)\n\nstruct GraphNode {\n    /*0x00*/ s16 type; // structure type\n    /*0x02*/ s16 flags; // hi = drawing layer, lo = rendering modes\n    /*0x04*/ struct GraphNode *prev;\n    /*0x08*/ struct GraphNode *next;\n    /*0x0C*/ struct GraphNode *parent;\n    /*0x10*/ struct GraphNode *children;\n};\n\nstruct AnimInfo {\n    /*0x00 0x38*/ s16 animID;\n    /*0x02 0x3A*/ s16 animYTrans;\n    /*0x04 0x3C*/ struct Animation *curAnim;\n    /*0x08 0x40*/ s16 animFrame;\n    /*0x0A 0x42*/ u16 animTimer;\n    /*0x0C 0x44*/ s32 animFrameAccelAssist;\n    /*0x10 0x48*/ s32 animAccel;\n};\n\nstruct GraphNodeObject {\n    /*0x00*/ struct GraphNode node;\n    /*0x14*/ struct GraphNode *sharedChild;\n    /*0x18*/ s8 areaIndex;\n    /*0x19*/ s8 activeAreaIndex;\n    /*0x1A*/ Vec3s angle;\n    /*0x20*/ Vec3f pos;\n    /*0x2C*/ Vec3f scale;\n    /*0x38*/ struct AnimInfo animInfo;\n    /*0x4C*/ struct SpawnInfo *unk4C;\n    /*0x50*/ Mat4 *throwMatrix; // matrix ptr\n    /*0x54*/ Vec3f cameraToObject;\n};\n\nstruct ObjectNode {\n    struct GraphNodeObject gfx;\n    struct ObjectNode *next;\n    struct ObjectNode *prev;\n};\n\n// NOTE: Since ObjectNode is the first member of Object, it is difficult to determine\n// whether some of these pointers point to ObjectNode or Object.\n\nstruct Object {\n    /*0x000*/ struct ObjectNode header;\n    /*0x068*/ struct Object *parentObj;\n    /*0x06C*/ struct Object *prevObj;\n    /*0x070*/ u32 collidedObjInteractTypes;\n    /*0x074*/ s16 activeFlags;\n    /*0x076*/ s16 numCollidedObjs;\n    /*0x078*/ struct Object *collidedObjs[4];\n    /*0x088*/\n    union {\n        // Object fields. See object_fields.h.\n        u32 asU32[0x50];\n        s32 asS32[0x50];\n        s16 asS16[0x50][2];\n        f32 asF32[0x50];\n#if !IS_64_BIT\n        s16 *asS16P[0x50];\n        s32 *asS32P[0x50];\n        struct Animation **asAnims[0x50];\n        struct Waypoint *asWaypoint[0x50];\n        struct ChainSegment *asChainSegment[0x50];\n        struct Object *asObject[0x50];\n        struct Surface *asSurface[0x50];\n        void *asVoidPtr[0x50];\n        const void *asConstVoidPtr[0x50];\n#endif\n    } rawData;\n#if IS_64_BIT\n    union {\n        s16 *asS16P[0x50];\n        s32 *asS32P[0x50];\n        struct Animation **asAnims[0x50];\n        struct Waypoint *asWaypoint[0x50];\n        struct ChainSegment *asChainSegment[0x50];\n        struct Object *asObject[0x50];\n        struct Surface *asSurface[0x50];\n        void *asVoidPtr[0x50];\n        const void *asConstVoidPtr[0x50];\n    } ptrData;\n#endif\n    /*0x1C8*/ u32 unused1;\n    /*0x1CC*/ const BehaviorScript *curBhvCommand;\n    /*0x1D0*/ u32 bhvStackIndex;\n    /*0x1D4*/ uintptr_t bhvStack[8];\n    /*0x1F4*/ s16 bhvDelayTimer;\n    /*0x1F6*/ s16 respawnInfoType;\n    /*0x1F8*/ f32 hitboxRadius;\n    /*0x1FC*/ f32 hitboxHeight;\n    /*0x200*/ f32 hurtboxRadius;\n    /*0x204*/ f32 hurtboxHeight;\n    /*0x208*/ f32 hitboxDownOffset;\n    /*0x20C*/ const BehaviorScript *behavior;\n    /*0x210*/ u32 unused2;\n    /*0x214*/ struct Object *platform;\n    /*0x218*/ void *collisionData;\n    /*0x21C*/ Mat4 transform;\n    /*0x25C*/ void *respawnInfo;\n};\n\nstruct ObjectHitbox {\n    /*0x00*/ u32 interactType;\n    /*0x04*/ u8 downOffset;\n    /*0x05*/ s8 damageOrCoinValue;\n    /*0x06*/ s8 health;\n    /*0x07*/ s8 numLootCoins;\n    /*0x08*/ s16 radius;\n    /*0x0A*/ s16 height;\n    /*0x0C*/ s16 hurtboxRadius;\n    /*0x0E*/ s16 hurtboxHeight;\n};\n\nstruct Waypoint {\n    s16 flags;\n    Vec3s pos;\n};\n\nstruct Surface {\n    /*0x00*/ TerrainData type;\n    /*0x02*/ TerrainData force;\n    /*0x04*/ s8 flags;\n    /*0x05*/ RoomData room;\n    /*0x06*/ TerrainData lowerY;\n    /*0x08*/ TerrainData upperY;\n    /*0x0A*/ Vec3Terrain vertex1;\n    /*0x10*/ Vec3Terrain vertex2;\n    /*0x16*/ Vec3Terrain vertex3;\n    /*0x1C*/ struct {\n        f32 x;\n        f32 y;\n        f32 z;\n    } normal;\n    /*0x28*/ f32 originOffset;\n    /*0x2C*/ struct Object *object;\n};\n\nstruct MarioBodyState {\n    /*0x00*/ u32 action;\n    /*0x04*/ s8 capState; /// see MarioCapGSCId\n    /*0x05*/ s8 eyeState;\n    /*0x06*/ s8 handState;\n    /*0x07*/ s8 wingFlutter; /// whether Mario's wing cap wings are fluttering\n    /*0x08*/ s16 modelState;\n    /*0x0A*/ s8 grabPos;\n    /*0x0B*/ u8 punchState; /// 2 bits for type of punch, 6 bits for punch animation timer\n    /*0x0C*/ Vec3s torsoAngle;\n    /*0x12*/ Vec3s headAngle;\n    /*0x18*/ Vec3f heldObjLastPosition; /// also known as HOLP\n    u8 filler[4];\n};\n\nstruct MarioState {\n    /*0x00*/ u16 unk00;\n    /*0x02*/ u16 input;\n    /*0x04*/ u32 flags;\n    /*0x08*/ u32 particleFlags;\n    /*0x0C*/ u32 action;\n    /*0x10*/ u32 prevAction;\n    /*0x14*/ u32 terrainSoundAddend;\n    /*0x18*/ u16 actionState;\n    /*0x1A*/ u16 actionTimer;\n    /*0x1C*/ u32 actionArg;\n    /*0x20*/ f32 intendedMag;\n    /*0x24*/ s16 intendedYaw;\n    /*0x26*/ s16 invincTimer;\n    /*0x28*/ u8 framesSinceA;\n    /*0x29*/ u8 framesSinceB;\n    /*0x2A*/ u8 wallKickTimer;\n    /*0x2B*/ u8 doubleJumpTimer;\n    /*0x2C*/ Vec3s faceAngle;\n    /*0x32*/ Vec3s angleVel;\n    /*0x38*/ s16 slideYaw;\n    /*0x3A*/ s16 twirlYaw;\n    /*0x3C*/ Vec3f pos;\n    /*0x48*/ Vec3f vel;\n    /*0x54*/ f32 forwardVel;\n    /*0x58*/ f32 slideVelX;\n    /*0x5C*/ f32 slideVelZ;\n    /*0x60*/ struct Surface *wall;\n    /*0x64*/ struct Surface *ceil;\n    /*0x68*/ struct Surface *floor;\n    /*0x6C*/ f32 ceilHeight;\n    /*0x70*/ f32 floorHeight;\n    /*0x74*/ s16 floorAngle;\n    /*0x76*/ s16 waterLevel;\n    /*0x78*/ struct Object *interactObj;\n    /*0x7C*/ struct Object *heldObj;\n    /*0x80*/ struct Object *usedObj;\n    /*0x84*/ struct Object *riddenObj;\n    /*0x88*/ struct Object *marioObj;\n    /*0x8C*/ struct SpawnInfo *spawnInfo;\n    /*0x90*/ struct Area *area;\n    /*0x94*/ struct PlayerCameraState *statusForCamera;\n    /*0x98*/ struct MarioBodyState *marioBodyState;\n    /*0x9C*/ struct Controller *controller;\n    /*0xA0*/ struct DmaHandlerList *animList;\n    /*0xA4*/ u32 collidedObjInteractTypes;\n    /*0xA8*/ s16 numCoins;\n    /*0xAA*/ s16 numStars;\n    /*0xAC*/ s8 numKeys; // Unused key mechanic\n    /*0xAD*/ s8 numLives;\n    /*0xAE*/ s16 health;\n    /*0xB0*/ s16 unkB0;\n    /*0xB2*/ u8 hurtCounter;\n    /*0xB3*/ u8 healCounter;\n    /*0xB4*/ u8 squishTimer;\n    /*0xB5*/ u8 fadeWarpOpacity;\n    /*0xB6*/ u16 capTimer;\n    /*0xB8*/ s16 prevNumStarsForDialog;\n    /*0xBC*/ f32 peakHeight;\n    /*0xC0*/ f32 quicksandDepth;\n    /*0xC4*/ f32 gettingBlownGravity;\n};\n\n#endif // TYPES_H\n"
  },
  {
    "path": "include/ultra64.h",
    "content": "#ifndef _ULTRA64_H_\n#define _ULTRA64_H_\n\n#include <math.h>\n\n#ifndef _LANGUAGE_C\n#define _LANGUAGE_C\n#endif\n\n#include <PR/ultratypes.h>\n#include <PR/os_exception.h>\n#include <PR/os_misc.h>\n#include <PR/os_rdp.h>\n#include <PR/os_thread.h>\n#include <PR/os_time.h>\n#include <PR/os_message.h>\n#include <PR/os_pfs.h>\n#include <PR/os_cont.h>\n#include <PR/os_tlb.h>\n#include <PR/sptask.h>\n#include <PR/ucode.h>\n#include <PR/os_cache.h>\n#include <PR/os_vi.h>\n#include <PR/os_pi.h>\n#include <PR/os_internal.h>\n#include <PR/mbi.h>\n#include <PR/os_eeprom.h>\n#include <PR/os_libc.h>\n#include <PR/gu.h>\n#include <PR/os_ai.h>\n#include <PR/os_motor.h>\n#include <PR/libaudio.h>\n#include <PR/libultra.h>\n\n#endif\n"
  },
  {
    "path": "levels/bbh/areas/1/1/model.inc.c",
    "content": "// 0x07004800 - 0x07004818\nstatic const Lights1 bbh_seg7_lights_07004800 = gdSPDefLights1(\n    0x20, 0x20, 0x20,\n    0x50, 0x50, 0x50, 0x28, 0x28, 0x28\n);\n\n// 0x07004818 - 0x07004830\nstatic const Lights1 bbh_seg7_lights_07004818 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07004830 - 0x07004920\nstatic const Vtx bbh_seg7_vertex_07004830[] = {\n    {{{   -50,      0,    717}, 0, {   478,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,      0,    717}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,      0,    563}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,    819,      0}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,    819,      0}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,    819,    -50}, 0, {   480,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,    819,    -50}, 0, {   480,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,      0,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1690,      0,    -50}, 0, {   478,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,      0,    -50}, 0, {   478,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1690,      0,      0}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   358,      0,      0}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,      0,      0}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,      0,    -50}, 0, {   480,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   358,      0,    -50}, 0, {   480,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07004920 - 0x070049D0\nstatic const Vtx bbh_seg7_vertex_07004920[] = {\n    {{{  2048,      0,   1536}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2099,      0,   1382}, 0, {   478,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2048,      0,   1382}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -50,      0,    717}, 0, {   478,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,      0,    563}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -50,      0,    563}, 0, {   478,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -50,      0,   1536}, 0, {   478,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,      0,   1536}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,      0,   1382}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -50,      0,   1382}, 0, {   478,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2099,      0,   1536}, 0, {   478,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070049D0 - 0x07004AC0\nstatic const Vtx bbh_seg7_vertex_070049D0[] = {\n    {{{     0,      0,   2048}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1126,      0,   1024}, 0, {   480,    530}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   819,      0,   1024}, 0, {   480,    376}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   819,      0,    410}, 0, {   786,    376}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,      0,      0}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1126,      0,    410}, 0, {   786,    530}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2048,      0,      0}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2048,      0,   2048}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,    819,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1690,    819,    -50}, 0, {   480,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,    819,    -50}, 0, {   480,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,   1075,    563}, 0, {   480,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -716,   1075,    717}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -767,   1075,    717}, 0, {   480,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -716,   1075,    563}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07004AC0 - 0x07004BA0\nstatic const Vtx bbh_seg7_vertex_07004AC0[] = {\n    {{{  1690,   1075,    -50}, 0, {   480,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1536,   1075,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1536,   1075,    -50}, 0, {   480,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1690,   1075,      0}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   256,   1075,    -50}, 0, {   480,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   256,   1075,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   102,   1075,      0}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   102,   1075,    -50}, 0, {   480,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1690,    256,    -50}, 0, {   478,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1690,    256,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1536,    256,      0}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1536,    819,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1690,    819,      0}, 0, {     0,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1690,    819,    -50}, 0, {   480,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07004BA0 - 0x07004C80\nstatic const Vtx bbh_seg7_vertex_07004BA0[] = {\n    {{{  1536,    256,      0}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1536,      0,    -50}, 0, {   478,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1536,    256,    -50}, 0, {   478,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1536,      0,      0}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,    256,    -50}, 0, {   480,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   358,    256,      0}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   358,    256,    -50}, 0, {   480,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   512,    256,      0}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1690,    256,    -50}, 0, {   478,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1536,    256,      0}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1536,    256,    -50}, 0, {   478,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -767,   1075,   1485}, 0, {   478,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -716,    819,   1485}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -767,    819,   1485}, 0, {   478,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07004C80 - 0x07004D70\nstatic const Vtx bbh_seg7_vertex_07004C80[] = {\n    {{{  1690,      0,    -50}, 0, {   480,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1690,      0,      0}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1690,    256,      0}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1690,    256,    -50}, 0, {   480,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -767,   1075,   1331}, 0, {   480,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -716,   1075,   1331}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -716,   1075,   1485}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -767,   1075,   1485}, 0, {   480,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -716,   1075,   1331}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -767,   1075,   1331}, 0, {   480,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -767,    819,   1331}, 0, {   480,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,    819,   1331}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,    256,    563}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -50,      0,    563}, 0, {   478,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,      0,    563}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07004D70 - 0x07004E50\nstatic const Vtx bbh_seg7_vertex_07004D70[] = {\n    {{{  -767,   1075,   1485}, 0, {   478,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -716,   1075,   1485}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -716,    819,   1485}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -50,    256,    717}, 0, {   478,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,      0,    717}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -50,      0,    717}, 0, {   478,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,    256,    717}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -50,    256,    563}, 0, {   478,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     0,    256,    563}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     0,    256,    717}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -50,    256,    717}, 0, {   478,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     0,    256,    563}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -50,    256,    563}, 0, {   478,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -50,      0,    563}, 0, {   478,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07004E50 - 0x07004F40\nstatic const Vtx bbh_seg7_vertex_07004E50[] = {\n    {{{  2048,   1075,    410}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2099,   1075,    563}, 0, {   478,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2048,   1075,    563}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     0,    256,   1382}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -50,      0,   1382}, 0, {   480,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,      0,   1382}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -50,    256,   1382}, 0, {   480,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -50,    256,   1382}, 0, {   480,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     0,    256,   1382}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     0,    256,   1536}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -50,    256,   1536}, 0, {   480,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -50,    256,   1536}, 0, {   480,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,    256,   1536}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,      0,   1536}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -50,      0,   1536}, 0, {   480,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07004F40 - 0x07005030\nstatic const Vtx bbh_seg7_vertex_07004F40[] = {\n    {{{  2099,    256,   1382}, 0, {   478,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,      0,   1382}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2099,      0,   1382}, 0, {   478,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,   1075,    410}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2099,   1075,    410}, 0, {   478,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2099,   1075,    563}, 0, {   478,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2048,   1075,   1741}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2099,   1075,   1741}, 0, {   478,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2099,   1075,   1894}, 0, {   478,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2048,   1075,   1894}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2048,    256,   1382}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2099,    256,   1536}, 0, {   480,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2048,    256,   1536}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2099,    256,   1382}, 0, {   480,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2048,    256,   1382}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07005030 - 0x07005120\nstatic const Vtx bbh_seg7_vertex_07005030[] = {\n    {{{     0,    614,      0}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2048,    614,      0}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1638,    614,    410}, 0, {   786,    786}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2048,    256,   1536}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2099,      0,   1536}, 0, {   480,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,      0,   1536}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2099,    256,   1536}, 0, {   480,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   512,    256,   2048}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   819,    256,   2099}, 0, {   480,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   512,    256,   2099}, 0, {   478,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   819,    256,   2048}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   819,      0,   2099}, 0, {   480,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,      0,   2048}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,      0,   2099}, 0, {   480,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   819,      0,   2048}, 0, {   990,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07005120 - 0x07005220\nstatic const Vtx bbh_seg7_vertex_07005120[] = {\n    {{{     0,    614,      0}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   410,    614,    410}, 0, {   172,    786}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   410,    614,   2048}, 0, {   172,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1638,    614,    410}, 0, {   786,    786}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2048,    614,      0}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2048,    614,    819}, 0, {   990,    582}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1638,    614,    819}, 0, {   786,    582}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     0,    614,   2048}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2048,    614,   2048}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1024,    614,   2048}, 0, {   480,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1024,    614,   1638}, 0, {   480,    172}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2048,    614,   1638}, 0, {   990,    172}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2048,   1638,   2048}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -716,   1638,      0}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2048,   1638,      0}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -716,   1638,   2048}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07005220 - 0x07005310\nstatic const Vtx bbh_seg7_vertex_07005220[] = {\n    {{{  2048,    819,    819}, 0, {  2012,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1638,    819,    819}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1638,    614,    819}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   410,    614,    410}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   410,    819,   2048}, 0, { -7184,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   410,    614,   2048}, 0, { -7184,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   410,    819,    410}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1638,    819,    410}, 0, { -1052,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1638,    614,    819}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1638,    819,    819}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1638,    614,    410}, 0, { -1052,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1638,    819,    410}, 0, {  6100,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   410,    614,    410}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1638,    614,    410}, 0, {  6100,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   410,    819,    410}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07005310 - 0x070053C0\nstatic const Vtx bbh_seg7_vertex_07005310[] = {\n    {{{  1024,    819,   1638}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,    614,   1638}, 0, { -4118,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1024,    614,   1638}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,    819,    819}, 0, {  2012,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1638,    614,    819}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,    614,    819}, 0, {  2012,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1024,    614,   2048}, 0, {  2012,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,    819,   2048}, 0, {  2012,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,    819,   1638}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,    614,   1638}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,    819,   1638}, 0, { -4118,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070053C0 - 0x07005440\nstatic const Vtx bbh_seg7_vertex_070053C0[] = {\n    {{{  1126,      0,    614}, 0, {  3034,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   819,      0,    819}, 0, { -3096,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1126,      0,    819}, 0, {  3034,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   819,      0,   1024}, 0, { -3096,   6098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1126,      0,   1024}, 0, {  3034,   6098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   819,      0,    614}, 0, { -3096,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1126,      0,    410}, 0, {  3034,  -6164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   819,      0,    410}, 0, { -3096,  -6164}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07005440 - 0x07005530\nstatic const Vtx bbh_seg7_vertex_07005440[] = {\n    {{{   102,   1075,      0}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,    819,      0}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,    819,    -50}, 0, {   478,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -767,   1075,    717}, 0, {   478,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -716,   1075,    717}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -716,    819,    717}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -767,    819,    717}, 0, {   480,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -716,   1075,    563}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -767,    819,    563}, 0, {   480,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,    819,    563}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -767,   1075,    563}, 0, {   480,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1536,   1075,      0}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1536,    819,      0}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1536,    819,    -50}, 0, {   480,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1536,   1075,    -50}, 0, {   480,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07005530 - 0x07005620\nstatic const Vtx bbh_seg7_vertex_07005530[] = {\n    {{{   358,    256,      0}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   358,      0,      0}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   358,      0,    -50}, 0, {   478,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,   1075,      0}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,    819,    -50}, 0, {   478,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,   1075,    -50}, 0, {   478,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1690,    819,    -50}, 0, {   480,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1690,    819,      0}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1690,   1075,      0}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1690,   1075,    -50}, 0, {   480,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   256,    819,    -50}, 0, {   478,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   256,   1075,      0}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   256,   1075,    -50}, 0, {   478,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   256,    819,      0}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   358,    256,    -50}, 0, {   478,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07005620 - 0x07005710\nstatic const Vtx bbh_seg7_vertex_07005620[] = {\n    {{{  2099,   1075,   1741}, 0, {   480,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,   1075,   1741}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,    819,   1741}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   512,      0,    -50}, 0, {   478,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,      0,      0}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,    256,      0}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,    256,    -50}, 0, {   478,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2099,   1075,    410}, 0, {   480,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,   1075,    410}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,    819,    410}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2099,    819,    410}, 0, {   480,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,   1075,    563}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2099,    819,    563}, 0, {   480,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,    819,    563}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2099,   1075,    563}, 0, {   480,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07005710 - 0x07005800\nstatic const Vtx bbh_seg7_vertex_07005710[] = {\n    {{{   512,      0,   2099}, 0, {   478,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,      0,   2048}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,    256,   2048}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2099,   1075,   1741}, 0, {   480,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,    819,   1741}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2099,    819,   1741}, 0, {   480,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,   1075,   1894}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2099,    819,   1894}, 0, {   480,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,    819,   1894}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2099,   1075,   1894}, 0, {   480,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   819,    256,   2048}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   819,      0,   2099}, 0, {   478,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   819,    256,   2099}, 0, {   480,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   819,      0,   2048}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,    256,   2099}, 0, {   480,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07005800 - 0x07005900\nstatic const Vtx bbh_seg7_vertex_07005800[] = {\n    {{{     0,      0,   1843}, 0, { -1308,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,      0,   1536}, 0, {  -540,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,    256,   1536}, 0, {  -540,   1372}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,      0,      0}, 0, { -3096,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   358,    256,      0}, 0, { -2712,   1372}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   205,    614,      0}, 0, { -3096,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1690,    256,      0}, 0, {   606,   1372}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1843,    614,      0}, 0, {   990,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1843,      0,      0}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   358,      0,      0}, 0, { -2712,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,    614,   1843}, 0, { -1308,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1690,      0,      0}, 0, {   606,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1536,    256,      0}, 0, {   224,   1372}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   512,    256,      0}, 0, { -2330,   1372}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   512,      0,      0}, 0, { -2330,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1536,      0,      0}, 0, {   224,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07005900 - 0x070059E0\nstatic const Vtx bbh_seg7_vertex_07005900[] = {\n    {{{  1843,      0,   2048}, 0, { -3096,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   819,      0,   2048}, 0, {  -540,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   819,    256,   2048}, 0, {  -540,   1372}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1843,    819,   2048}, 0, { -3096,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   512,    256,   2048}, 0, {   224,   1372}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   512,      0,   2048}, 0, {   224,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   205,      0,   2048}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   205,    819,   2048}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -716,    819,   1843}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -716,    819,   1485}, 0, {  1160,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -716,   1075,   1485}, 0, {  1160,    608}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -716,   1638,   1843}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -716,   1075,    563}, 0, {  4226,    608}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -716,   1638,    205}, 0, {  5418,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070059E0 - 0x07005AC0\nstatic const Vtx bbh_seg7_vertex_070059E0[] = {\n    {{{  -716,   1075,   1331}, 0, {  1672,    608}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -716,    819,   1331}, 0, {  1672,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -716,    819,    717}, 0, {  3716,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,      0,    563}, 0, {  1884,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,      0,    205}, 0, {  2778,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,    614,    205}, 0, {  2778,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -716,   1075,    717}, 0, {  3716,    608}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -716,    819,    563}, 0, {  4226,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -716,    819,    205}, 0, {  5418,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -716,   1075,    563}, 0, {  4226,    608}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -716,   1638,    205}, 0, {  5418,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,    614,   1843}, 0, { -1308,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,    256,   1536}, 0, {  -540,   1372}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,    256,    563}, 0, {  1884,   1372}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07005AC0 - 0x07005BB0\nstatic const Vtx bbh_seg7_vertex_07005AC0[] = {\n    {{{  2048,    819,   1741}, 0, {  4312,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,   1075,   1741}, 0, {  4312,    608}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,   1075,    563}, 0, {  1374,    608}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,      0,    717}, 0, {  1500,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,    256,    717}, 0, {  1500,   1372}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,    256,   1382}, 0, {  -158,   1372}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,      0,   1382}, 0, {  -158,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2048,    819,    410}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,   1075,    410}, 0, {   990,    608}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,   1638,      0}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,   1638,   2048}, 0, {  5078,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,   1075,   1894}, 0, {  4694,    608}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,    819,   1894}, 0, {  4694,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,    819,   2048}, 0, {  5078,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,    819,      0}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07005BB0 - 0x07005CA0\nstatic const Vtx bbh_seg7_vertex_07005BB0[] = {\n    {{{  1536,   1075,      0}, 0, {  5078,    608}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,    819,      0}, 0, {  1884,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1536,    819,      0}, 0, {  5078,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,    819,   1741}, 0, {  4312,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,   1075,    563}, 0, {  1374,    608}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,    819,    563}, 0, {  1374,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   102,    819,      0}, 0, {  1502,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,   1075,      0}, 0, {  1502,    608}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,    819,      0}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,   1638,      0}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,   1638,      0}, 0, {  6356,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1690,   1075,      0}, 0, {  5462,    608}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,   1075,      0}, 0, {  1884,    608}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,    819,      0}, 0, {  6356,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1690,    819,      0}, 0, {  5462,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07005CA0 - 0x07005D90\nstatic const Vtx bbh_seg7_vertex_07005CA0[] = {\n    {{{  -511,   1638,   2048}, 0, {  6866,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,   1638,   2048}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,    819,   2048}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -511,    819,   2048}, 0, {  6866,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,      0,   1536}, 0, {  1756,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,    614,   1843}, 0, {  2522,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,    256,   1536}, 0, {  1756,   1372}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,      0,   1843}, 0, {  2522,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,    256,   1382}, 0, {  1374,   1372}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,    614,    205}, 0, { -1562,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,      0,    205}, 0, { -1562,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,      0,   1382}, 0, {  1374,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   768,   1024,    420}, 0, {  -602,   1244}, {0x00, 0x49, 0x67, 0xff}}},\n    {{{   717,    922,    492}, 0, {  -964,   1756}, {0x00, 0x49, 0x67, 0xff}}},\n    {{{   819,    922,    492}, 0, {  -602,   1756}, {0x00, 0x49, 0x67, 0xff}}},\n};\n\n// 0x07005D90 - 0x07005E80\nstatic const Vtx bbh_seg7_vertex_07005D90[] = {\n    {{{   717,    922,    348}, 0, {  -602,   1756}, {0x00, 0x49, 0x99, 0xff}}},\n    {{{   768,   1024,    420}, 0, {  -602,   1244}, {0x00, 0x49, 0x99, 0xff}}},\n    {{{   819,    922,    348}, 0, {  -242,   1756}, {0x00, 0x49, 0x99, 0xff}}},\n    {{{   819,    922,    492}, 0, {  -602,   1756}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{   819,    922,    348}, 0, {  -242,   1756}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{   768,   1024,    420}, 0, {  -602,   1244}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{   717,    922,    492}, 0, {  -964,   1756}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{   768,   1024,    420}, 0, {  -602,   1244}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{   717,    922,    348}, 0, {  -602,   1756}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  1126,    922,    348}, 0, {   478,   1756}, {0x00, 0x49, 0x99, 0xff}}},\n    {{{  1178,   1024,    420}, 0, {   478,   1244}, {0x00, 0x49, 0x99, 0xff}}},\n    {{{  1229,    922,    348}, 0, {   840,   1756}, {0x00, 0x49, 0x99, 0xff}}},\n    {{{  1126,    922,    492}, 0, {   118,   1756}, {0x8f, 0x39, 0x00, 0xff}}},\n    {{{  1178,   1024,    420}, 0, {   478,   1244}, {0x8f, 0x39, 0x00, 0xff}}},\n    {{{  1126,    922,    348}, 0, {   478,   1756}, {0x8f, 0x39, 0x00, 0xff}}},\n};\n\n// 0x07005E80 - 0x07005F80\nstatic const Vtx bbh_seg7_vertex_07005E80[] = {\n    {{{  1229,    922,    492}, 0, {  1924,    648}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1126,    922,    492}, 0, {  1562,    648}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1126,    819,    492}, 0, {  1562,   1104}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1178,   1024,    420}, 0, {   478,   1244}, {0x00, 0x49, 0x67, 0xff}}},\n    {{{  1126,    922,    492}, 0, {   118,   1756}, {0x00, 0x49, 0x67, 0xff}}},\n    {{{  1229,    922,    492}, 0, {   478,   1756}, {0x00, 0x49, 0x67, 0xff}}},\n    {{{  1229,    922,    492}, 0, {   478,   1756}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  1229,    922,    348}, 0, {   840,   1756}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  1178,   1024,    420}, 0, {   478,   1244}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{   717,    922,    348}, 0, {   478,    648}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   819,    922,    348}, 0, {   840,    648}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   819,    819,    348}, 0, {   840,   1104}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   717,    819,    348}, 0, {   478,   1104}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1126,    922,    348}, 0, {  1924,    648}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1229,    819,    348}, 0, {  2286,   1104}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1126,    819,    348}, 0, {  1924,   1104}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07005F80 - 0x07006080\nstatic const Vtx bbh_seg7_vertex_07005F80[] = {\n    {{{  1126,    922,    348}, 0, {  1924,    648}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1229,    922,    348}, 0, {  2286,    648}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1229,    819,    348}, 0, {  2286,   1104}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   717,    922,    492}, 0, {   118,    648}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   717,    922,    348}, 0, {   478,    648}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   717,    717,    348}, 0, {   478,   1556}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1229,    922,    492}, 0, {  1924,    648}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1126,    819,    492}, 0, {  1562,   1104}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1229,    819,    492}, 0, {  1924,   1104}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1126,    922,    492}, 0, {  1562,    648}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1126,    717,    348}, 0, {  1924,   1556}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1126,    819,    492}, 0, {  1562,   1104}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1126,    922,    348}, 0, {  1924,    648}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1229,    819,    492}, 0, {  1924,   1104}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,    922,    348}, 0, {  2286,    648}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,    922,    492}, 0, {  1924,    648}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07006080 - 0x07006180\nstatic const Vtx bbh_seg7_vertex_07006080[] = {\n    {{{  1229,    819,    492}, 0, {  1924,   1104}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,    717,    348}, 0, {  2286,   1556}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,    922,    348}, 0, {  2286,    648}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   819,    922,    492}, 0, {   478,    648}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   717,    819,    492}, 0, {   118,   1104}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   819,    819,    492}, 0, {   478,   1104}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   717,    922,    492}, 0, {   118,    648}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   717,    922,    492}, 0, {   118,    648}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   717,    717,    348}, 0, {   478,   1556}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   717,    819,    492}, 0, {   118,   1104}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,    614,   1638}, 0, {  2012,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,    819,    819}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,    614,    819}, 0, {     0,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   819,    819,    492}, 0, {   478,   1104}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   819,    922,    348}, 0, {   840,    648}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   819,    922,    492}, 0, {   478,    648}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07006180 - 0x07006260\nstatic const Vtx bbh_seg7_vertex_07006180[] = {\n    {{{   819,    819,    492}, 0, {   478,   1104}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   819,    717,    348}, 0, {   840,   1556}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   819,    922,    348}, 0, {   840,    648}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   819,    819,    492}, 0, {  -286,    524}, {0x00, 0x99, 0x49, 0xff}}},\n    {{{   717,    819,    492}, 0, {  -796,    524}, {0x00, 0x99, 0x49, 0xff}}},\n    {{{   717,    717,    348}, 0, {  -796,   1244}, {0x00, 0x99, 0x49, 0xff}}},\n    {{{   819,    717,    348}, 0, {  -286,   1244}, {0x00, 0x99, 0x49, 0xff}}},\n    {{{  1229,    819,    492}, 0, {  1756,    524}, {0x00, 0x99, 0x49, 0xff}}},\n    {{{  1126,    717,    348}, 0, {  1246,   1244}, {0x00, 0x99, 0x49, 0xff}}},\n    {{{  1229,    717,    348}, 0, {  1756,   1244}, {0x00, 0x99, 0x49, 0xff}}},\n    {{{  1126,    819,    492}, 0, {  1246,    524}, {0x00, 0x99, 0x49, 0xff}}},\n    {{{  2048,    614,   1638}, 0, {  2012,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,    819,   1638}, 0, {  2012,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,    819,    819}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07006260 - 0x07006350\nstatic const Vtx bbh_seg7_vertex_07006260[] = {\n    {{{  -613,   1638,    205}, 0, {   734,      0}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{  -613,    819,    205}, 0, {   734,   2012}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{  -511,    819,    102}, 0, {   224,   2012}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{  -511,   1638,   1946}, 0, {   224,      0}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{  -511,    819,   1946}, 0, {   224,   2012}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{  -613,    819,   1843}, 0, {   734,   2012}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{  -511,   1638,   2048}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -511,    819,   1946}, 0, {   224,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -511,   1638,   1946}, 0, {   224,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -613,   1638,   1843}, 0, {   734,      0}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{  -613,   1638,   1843}, 0, {   734,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -613,    819,   1843}, 0, {   734,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -716,    819,   1843}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -716,   1638,   1843}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -511,    819,   2048}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07006350 - 0x07006430\nstatic const Vtx bbh_seg7_vertex_07006350[] = {\n    {{{  -716,   1638,    205}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -613,    819,    205}, 0, {   734,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -613,   1638,    205}, 0, {   734,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,    819,    205}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   205,    614,   2048}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,      0,   2048}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,      0,   1946}, 0, {   224,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -613,   1638,    205}, 0, {   734,      0}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{  -511,    819,    102}, 0, {   224,   2012}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{  -511,   1638,    102}, 0, {   224,      0}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{  -511,   1638,    102}, 0, {   224,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -511,    819,      0}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -511,   1638,      0}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -511,    819,    102}, 0, {   224,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07006430 - 0x07006510\nstatic const Vtx bbh_seg7_vertex_07006430[] = {\n    {{{   205,    614,   1946}, 0, {   224,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   102,      0,   1843}, 0, {   734,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   102,    614,   1843}, 0, {   734,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   102,    614,   1843}, 0, {   734,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   102,      0,   1843}, 0, {   734,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,      0,   1843}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,    614,   1843}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   205,      0,   1946}, 0, {   224,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   205,    614,   2048}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,      0,   1946}, 0, {   224,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,    614,   1946}, 0, {   224,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1946,    614,   1843}, 0, {   734,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1946,      0,   1843}, 0, {   734,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1843,      0,   1946}, 0, {   224,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07006510 - 0x07006610\nstatic const Vtx bbh_seg7_vertex_07006510[] = {\n    {{{   205,    614,    102}, 0, {   224,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,      0,    102}, 0, {   224,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,      0,      0}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,    614,      0}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,    614,    205}, 0, {   734,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   205,      0,    102}, 0, {   224,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   205,    614,    102}, 0, {   224,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   102,      0,    205}, 0, {   734,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{     0,    614,    205}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,      0,    205}, 0, {   734,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,    614,    205}, 0, {   734,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,      0,    205}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,    614,   1843}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1946,      0,   1843}, 0, {   734,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1946,    614,   1843}, 0, {   734,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,      0,   1843}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07006610 - 0x070066F0\nstatic const Vtx bbh_seg7_vertex_07006610[] = {\n    {{{  1946,    614,    205}, 0, {   734,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1946,      0,    205}, 0, {   734,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,      0,    205}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1946,    614,   1843}, 0, {   734,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1843,      0,   1946}, 0, {   224,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1843,    614,   1946}, 0, {   224,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1843,    614,   1946}, 0, {   224,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1843,      0,   1946}, 0, {   224,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1843,      0,   2048}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1843,    614,   2048}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1843,    614,      0}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1843,      0,      0}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1843,      0,    102}, 0, {   224,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1843,    614,    102}, 0, {   224,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070066F0 - 0x07006760\nstatic const Vtx bbh_seg7_vertex_070066F0[] = {\n    {{{  1843,    614,    102}, 0, {   224,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1843,      0,    102}, 0, {   224,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1946,      0,    205}, 0, {   734,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1946,    614,    205}, 0, {   734,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1946,    614,    205}, 0, {   734,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,      0,    205}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,    614,    205}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07006760 - 0x07006850\nstatic const Vtx bbh_seg7_vertex_07006760[] = {\n    {{{   870,      0,   2048}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   870,    256,   1946}, 0, {     0,    552}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   870,      0,   1946}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   870,    256,   1946}, 0, {   990,    552}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{   947,    358,   1997}, 0, {   478,      0}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  1024,    256,   1946}, 0, {     0,    552}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{   870,      0,   1946}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   870,    256,   1946}, 0, {   990,    552}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1024,    256,   1946}, 0, {     0,    552}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1024,      0,   1946}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   870,    256,   2048}, 0, {   990,    552}, {0x9b, 0x4c, 0x00, 0xff}}},\n    {{{   947,    358,   2048}, 0, {   990,      0}, {0x9b, 0x4c, 0x00, 0xff}}},\n    {{{   947,    358,   1997}, 0, {   480,      0}, {0x9b, 0x4c, 0x00, 0xff}}},\n    {{{   870,    256,   1946}, 0, {     0,    552}, {0x9b, 0x4c, 0x00, 0xff}}},\n    {{{   870,    256,   2048}, 0, {   990,    552}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07006850 - 0x070068D0\nstatic const Vtx bbh_seg7_vertex_07006850[] = {\n    {{{   947,    358,   2048}, 0, {   990,      0}, {0x65, 0x4c, 0x00, 0xff}}},\n    {{{  1024,    256,   1946}, 0, {     0,    552}, {0x65, 0x4c, 0x00, 0xff}}},\n    {{{   947,    358,   1997}, 0, {   480,      0}, {0x65, 0x4c, 0x00, 0xff}}},\n    {{{  1024,    256,   2048}, 0, {   990,    552}, {0x65, 0x4c, 0x00, 0xff}}},\n    {{{  1024,      0,   1946}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1024,    256,   2048}, 0, {   990,    552}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1024,      0,   2048}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1024,    256,   1946}, 0, {     0,    552}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070068D0 - 0x070069C0\nstatic const Vtx bbh_seg7_vertex_070068D0[] = {\n    {{{  2048,    819,   1894}, 0, {   990,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2099,    819,   1894}, 0, {  2012,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2099,    819,   1741}, 0, {   480,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,    819,    717}, 0, {   480,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,    819,    717}, 0, {   480,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,    819,    563}, 0, {   990,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,    819,    563}, 0, {  2012,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,    819,   1485}, 0, {  3544,   3542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,    819,   1485}, 0, {  4056,   3542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,    819,   1331}, 0, {  4056,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,    819,   1331}, 0, {  3544,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2048,    819,    563}, 0, {   990,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2099,    819,    563}, 0, {  2012,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2099,    819,    410}, 0, {   480,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2048,    819,    410}, 0, {   480,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070069C0 - 0x07006AC0\nstatic const Vtx bbh_seg7_vertex_070069C0[] = {\n    {{{  1638,    819,    410}, 0, {  4056,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2048,    819,    819}, 0, {  8144,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2048,    819,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2048,    819,   1894}, 0, {   990,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2099,    819,   1741}, 0, {   480,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2048,    819,   1741}, 0, {   480,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,    819,      0}, 0, {-11268, -10252}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1638,    819,    410}, 0, { 12232,  -6164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2048,    819,      0}, 0, { 16320, -10252}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   410,    819,    410}, 0, {     0,  -6164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   410,    819,   2048}, 0, {     0,  10186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,    819,   2048}, 0, {-11268,  10186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1638,    819,    819}, 0, {  8144,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2048,    819,   1638}, 0, { 10188,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,    819,   1638}, 0, {     0,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,    819,   2048}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07006AC0 - 0x07006AF0\nstatic const Vtx bbh_seg7_vertex_07006AC0[] = {\n    {{{  2048,    819,   1638}, 0, { 10188,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,    819,   2048}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2048,    819,   2048}, 0, { 10188,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07006AF0 - 0x07006DF8\nstatic const Gfx bbh_seg7_dl_07006AF0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_07004800.l, 1),\n    gsSPLight(&bbh_seg7_lights_07004800.a, 2),\n    gsSPVertex(bbh_seg7_vertex_07004830, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07004920, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP1Triangle( 0, 10,  1, 0x0),\n    gsSPLight(&bbh_seg7_lights_07004818.l, 1),\n    gsSPLight(&bbh_seg7_lights_07004818.a, 2),\n    gsSPVertex(bbh_seg7_vertex_070049D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 2,  4,  0, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  0,  7,  1, 0x0),\n    gsSP2Triangles( 6,  1,  7, 0x0,  6,  5,  1, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07004AC0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07004BA0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07004C80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07004D70, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07004E50, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07004F40, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07005030, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07005120, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  3, 0x0),\n    gsSP2Triangles( 0,  2,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 15, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07006DF8 - 0x07006E88\nstatic const Gfx bbh_seg7_dl_07006DF8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_07005220, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07005310, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP1Triangle( 0, 10,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07006E88 - 0x07006EE0\nstatic const Gfx bbh_seg7_dl_07006E88[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_0900A000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_070053C0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 2,  1,  3, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 5,  0,  6, 0x0,  5,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07006EE0 - 0x070072F8\nstatic const Gfx bbh_seg7_dl_07006EE0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_07005440, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07005530, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07005620, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07005710, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07005800, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  7,  6, 0x0,  4,  3,  9, 0x0),\n    gsSP2Triangles( 0,  2, 10, 0x0,  6, 11,  8, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07005900, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 2,  7,  3, 0x0,  2,  4,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(11, 10, 12, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_070059E0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  2,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  9,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13,  5, 0x0,  3,  5, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07005AC0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0,  8, 11, 10, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 7,  9, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07005BB0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles( 7, 10,  9, 0x0,  7, 11, 10, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0, 13, 11, 14, 0x0),\n    gsSP1Triangle(10, 11, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07005CA0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  5,  9, 0x0,  8,  6,  5, 0x0),\n    gsSP2Triangles(10,  8,  9, 0x0, 10, 11,  8, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07005D90, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07005E80, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07005F80, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07006080, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07006180, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070072F8 - 0x07007468\nstatic const Gfx bbh_seg7_dl_070072F8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_07006260, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  3,  5,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 6, 14,  7, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07006350, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07006430, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  0,  7,  1, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07006510, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07006610, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_070066F0, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP1Triangle( 4,  5,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007468 - 0x070074F0\nstatic const Gfx bbh_seg7_dl_07007468[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bbh_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_07006760, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07006850, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070074F0 - 0x070075A8\nstatic const Gfx bbh_seg7_dl_070074F0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09009000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_070068D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_070069C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 6, 10,  9, 0x0,  6, 11, 10, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07006AC0, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070075A8 - 0x070076C0\nconst Gfx bbh_seg7_dl_070075A8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_07006AF0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_07006DF8),\n    gsSPDisplayList(bbh_seg7_dl_07006E88),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_07006EE0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_070072F8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_07007468),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_070074F0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/10/model.inc.c",
    "content": "// 0x0700B488 - 0x0700B578\nstatic const Vtx bbh_seg7_vertex_0700B488[] = {\n    {{{  3379,    410,   1137}, 0, {     0,    990}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  3354,    486,   1162}, 0, {   480,      0}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  3354,    410,   1162}, 0, {   478,    990}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  3379,    486,   1137}, 0, {     0,      0}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  3379,    410,   1137}, 0, {     0,    480}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  3354,    410,   1162}, 0, {   480,    990}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  3328,    410,   1137}, 0, {   990,    480}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  3379,    486,   1137}, 0, {     0,    480}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  3328,    486,   1137}, 0, {   990,    480}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  3354,    486,   1162}, 0, {   480,    990}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  3328,    486,   1137}, 0, {   990,      0}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  3328,    410,   1137}, 0, {   990,    990}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2161,   2202,    461}, 0, {   990,    480}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2186,   2202,    486}, 0, {   480,    990}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2161,   2202,    512}, 0, {     0,    480}, {0xff, 0xcc, 0x90, 0xff}}},\n};\n\n// 0x0700B578 - 0x0700B678\nstatic const Vtx bbh_seg7_vertex_0700B578[] = {\n    {{{  2186,   2278,    486}, 0, {   480,    990}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2161,   2278,    461}, 0, {   990,    480}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2161,   2278,    512}, 0, {     0,    480}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2161,   2202,    461}, 0, {   990,    990}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2186,   2278,    486}, 0, {   480,      0}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2186,   2202,    486}, 0, {   480,    990}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2161,   2278,    461}, 0, {   990,      0}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2186,   2202,    486}, 0, {   478,    990}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2161,   2278,    512}, 0, {     0,      0}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2161,   2202,    512}, 0, {     0,    990}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2186,   1280,    486}, 0, {   478,    990}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2161,   1357,    512}, 0, {     0,      0}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2161,   1280,    512}, 0, {     0,    990}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2186,   1357,    486}, 0, {   480,      0}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2161,   1280,    461}, 0, {   990,    990}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2186,   1280,    486}, 0, {   480,    990}, {0xff, 0xcc, 0x90, 0xff}}},\n};\n\n// 0x0700B678 - 0x0700B768\nstatic const Vtx bbh_seg7_vertex_0700B678[] = {\n    {{{  2161,   1280,    461}, 0, {   990,    990}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2161,   1357,    461}, 0, {   990,      0}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2186,   1357,    486}, 0, {   480,      0}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2186,   1357,    486}, 0, {   480,    990}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2161,   1357,    461}, 0, {   990,    480}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2161,   1357,    512}, 0, {     0,    480}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2161,   1280,    461}, 0, {   990,    480}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2186,   1280,    486}, 0, {   480,    990}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2161,   1280,    512}, 0, {     0,    480}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2161,   1280,   1792}, 0, {   990,    480}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2186,   1280,   1818}, 0, {   480,    990}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2161,   1280,   1843}, 0, {     0,    480}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2186,   1357,   1818}, 0, {   480,    990}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2161,   1357,   1792}, 0, {   990,    480}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2161,   1357,   1843}, 0, {     0,    480}, {0xff, 0xcc, 0x90, 0xff}}},\n};\n\n// 0x0700B768 - 0x0700B848\nstatic const Vtx bbh_seg7_vertex_0700B768[] = {\n    {{{  2161,   1280,   1792}, 0, {   990,    990}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2186,   1357,   1818}, 0, {   480,      0}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2186,   1280,   1818}, 0, {   480,    990}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2161,   1357,   1792}, 0, {   990,      0}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2186,   1280,   1818}, 0, {   478,    990}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2161,   1357,   1843}, 0, {     0,      0}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2161,   1280,   1843}, 0, {     0,    990}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2186,    461,   1459}, 0, {   478,    990}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2161,    538,   1485}, 0, {     0,      0}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2161,    461,   1485}, 0, {     0,    990}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2186,    538,   1459}, 0, {   480,      0}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2161,    461,   1434}, 0, {   990,    990}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2186,    461,   1459}, 0, {   480,    990}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2161,    538,   1434}, 0, {   990,      0}, {0xff, 0xcc, 0x90, 0xff}}},\n};\n\n// 0x0700B848 - 0x0700B8A8\nstatic const Vtx bbh_seg7_vertex_0700B848[] = {\n    {{{  2186,    538,   1459}, 0, {   480,    990}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2161,    538,   1434}, 0, {   990,    480}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2161,    538,   1485}, 0, {     0,    480}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2161,    461,   1434}, 0, {   990,    480}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2186,    461,   1459}, 0, {   480,    990}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{  2161,    461,   1485}, 0, {     0,    480}, {0xff, 0xcc, 0x90, 0xff}}},\n};\n\n// 0x0700B8A8 - 0x0700B9E0\nstatic const Gfx bbh_seg7_dl_0700B8A8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09006800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_0700B488, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 5, 10, 11, 0x0,  5,  1, 10, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700B578, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  4,  8, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(10, 13, 11, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700B678, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700B768, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  1,  5, 0x0,  4,  5,  6, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7, 10,  8, 0x0),\n    gsSP2Triangles(11, 10, 12, 0x0, 11, 13, 10, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700B848, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700B9E0 - 0x0700BA50\nconst Gfx bbh_seg7_dl_0700B9E0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0700B8A8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/11/model.inc.c",
    "content": "// 0x0700BA50 - 0x0700BB50\nstatic const Vtx bbh_seg7_vertex_0700BA50[] = {\n    {{{  2739,    819,   2166}, 0, {     0,    172}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  2739,   1203,   2550}, 0, {     0,    786}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  2739,   1459,   2550}, 0, {     0,    990}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  2739,      0,   2268}, 0, {     0,    212}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  2739,    282,   2550}, 0, {     0,    746}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  2739,    538,   2550}, 0, {     0,    990}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  2739,      0,   2012}, 0, {     0,      0}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  2995,      0,   2268}, 0, {   990,    212}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  2995,    282,   2550}, 0, {   990,    746}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  2995,    538,   2550}, 0, {   990,    990}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  2995,      0,   2012}, 0, {   990,      0}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  2739,    819,   1910}, 0, {     0,      0}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  2995,    819,   2166}, 0, {   990,    172}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  2995,    819,   1910}, 0, {   990,      0}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  2995,   1459,   2550}, 0, {   990,    990}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  2995,   1203,   2550}, 0, {   990,    786}, {0xff, 0xec, 0x40, 0x50}}},\n};\n\n// 0x0700BB50 - 0x0700BBF8\nstatic const Gfx bbh_seg7_dl_0700BB50[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, spooky_0900B000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_0700BA50, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  4,  3, 0x0),\n    gsSP2Triangles( 7,  8,  4, 0x0,  6,  5,  9, 0x0),\n    gsSP2Triangles( 6,  9, 10, 0x0, 10,  8,  7, 0x0),\n    gsSP2Triangles(10,  9,  8, 0x0,  0,  2, 11, 0x0),\n    gsSP2Triangles(12,  1,  0, 0x0, 13, 14, 15, 0x0),\n    gsSP2Triangles(12, 15,  1, 0x0, 11,  2, 14, 0x0),\n    gsSP2Triangles(11, 14, 13, 0x0, 13, 15, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700BBF8 - 0x0700BC68\nconst Gfx bbh_seg7_dl_0700BBF8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0700BB50),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/12/model.inc.c",
    "content": "// 0x0700BC68 - 0x0700BC80\nstatic const Lights1 bbh_seg7_lights_0700BC68 = gdSPDefLights1(\n    0x20, 0x20, 0x20,\n    0x50, 0x50, 0x50, 0x28, 0x28, 0x28\n);\n\n// 0x0700BC80 - 0x0700BC98\nstatic const Lights1 bbh_seg7_lights_0700BC80 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700BC98 - 0x0700BD18\nstatic const Vtx bbh_seg7_vertex_0700BC98[] = {\n    {{{ -2098,      0,   1126}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1945,      0,   1075}, 0, {   478,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2098,      0,   1075}, 0, {   478,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1945,      0,   1126}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -101,      0,   1536}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -50,      0,   1382}, 0, {   478,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -101,      0,   1382}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -50,      0,   1536}, 0, {   478,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700BD18 - 0x0700BE18\nstatic const Vtx bbh_seg7_vertex_0700BD18[] = {\n    {{{  -101,    717,   2048}, 0, {   334,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -818,    717,   2048}, 0, {   334,    650}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -101,    717,   1126}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1330,    717,   1638}, 0, {   626,    406}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1330,    717,   1126}, 0, {   990,    406}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -818,    717,   2048}, 0, {   332,    650}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2252,    819,   2048}, 0, {   334,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1842,    819,   2150}, 0, {   260,    162}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2047,    819,   2355}, 0, {   114,     66}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2252,    819,   1126}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1842,    819,   1126}, 0, {   990,    162}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2252,   1638,   2048}, 0, {   334,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -818,   1638,   2048}, 0, {   334,    650}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1228,   1638,   2560}, 0, {     0,    454}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -818,   1638,   1126}, 0, {   990,    650}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1842,   1638,   2560}, 0, {     0,    162}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0700BE18 - 0x0700BEF8\nstatic const Vtx bbh_seg7_vertex_0700BE18[] = {\n    {{{ -2252,   1638,   2048}, 0, {   334,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2252,   1638,   1126}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -818,   1638,   1126}, 0, {   990,    650}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -101,    256,   1382}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -50,    256,   1382}, 0, {   480,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -50,    256,   1536}, 0, {   480,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1945,    256,   1075}, 0, {   478,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2098,    256,   1126}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2098,    256,   1075}, 0, {   478,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1945,    256,   1126}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1893,   1280,   1075}, 0, {   480,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1893,   1280,   1126}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2047,   1280,   1126}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2047,   1280,   1075}, 0, {   480,    990}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0700BEF8 - 0x0700BFD8\nstatic const Vtx bbh_seg7_vertex_0700BEF8[] = {\n    {{{  -101,    256,   1536}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -50,    256,   1536}, 0, {   480,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -50,      0,   1536}, 0, {   480,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -101,      0,   1536}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -818,   1075,   1485}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -767,    819,   1485}, 0, {   478,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -818,    819,   1485}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -101,    256,   1382}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -50,    256,   1536}, 0, {   480,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -101,    256,   1536}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -50,    256,   1382}, 0, {   480,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -101,      0,   1382}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -50,      0,   1382}, 0, {   480,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -101,    256,   1382}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0700BFD8 - 0x0700C088\nstatic const Vtx bbh_seg7_vertex_0700BFD8[] = {\n    {{{  -767,   1075,   1331}, 0, {   480,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -818,   1075,   1331}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -818,    819,   1331}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -767,    819,   1331}, 0, {   480,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -818,   1075,   1485}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -767,   1075,   1485}, 0, {   478,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -767,    819,   1485}, 0, {   478,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -818,   1075,   1331}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -767,   1075,   1331}, 0, {   480,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -767,   1075,   1485}, 0, {   480,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -818,   1075,   1485}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0700C088 - 0x0700C188\nstatic const Vtx bbh_seg7_vertex_0700C088[] = {\n    {{{ -1330,    819,   1638}, 0, {     0,      0}, {0xb1, 0x00, 0x63, 0xff}}},\n    {{{ -1330,    717,   1638}, 0, {     0,    990}, {0xb1, 0x00, 0x63, 0xff}}},\n    {{{  -818,    717,   2048}, 0, {  4330,    990}, {0xb1, 0x00, 0x63, 0xff}}},\n    {{{  -818,    819,   2048}, 0, {  4330,      0}, {0xb1, 0x00, 0x63, 0xff}}},\n    {{{ -1330,    819,   1638}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1330,    717,   1126}, 0, { -2414,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1330,    717,   1638}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1330,    819,   1126}, 0, { -2414,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2047,   1024,   2355}, 0, {  -158,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2047,    819,   2355}, 0, {  -158,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1842,   1024,   2150}, 0, {   990,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1842,    819,   2150}, 0, {   990,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1842,    819,   1126}, 0, {  5078,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1842,   1024,   1126}, 0, {  5078,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1842,   1024,   2150}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1842,    819,   2150}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700C188 - 0x0700C268\nstatic const Vtx bbh_seg7_vertex_0700C188[] = {\n    {{{ -1279,   1382,   1126}, 0, {  2268,   1372}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -818,   1638,   1126}, 0, {  4566,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2252,   1638,   1126}, 0, { -2584,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,   1382,   1126}, 0, {  4312,   1372}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -818,    819,   1126}, 0, {  4566,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,    922,   1126}, 0, {  4312,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1279,    922,   1126}, 0, {  2268,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1842,    819,   1126}, 0, {  -540,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1228,   1638,   2560}, 0, {     0,   2012}, {0x9d, 0x00, 0xb1, 0xff}}},\n    {{{  -818,    819,   2048}, 0, { -2074,      0}, {0x9d, 0x00, 0xb1, 0xff}}},\n    {{{ -1228,    819,   2560}, 0, {     0,      0}, {0x9d, 0x00, 0xb1, 0xff}}},\n    {{{  -818,   1638,   2048}, 0, { -3606,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -818,   1075,   1485}, 0, {  -796,    608}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -818,    819,   2048}, 0, { -3606,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700C268 - 0x0700C358\nstatic const Vtx bbh_seg7_vertex_0700C268[] = {\n    {{{ -2252,   1638,   2048}, 0, { -3606,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2252,    819,   2048}, 0, { -3606,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2252,    819,   1126}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2252,   1638,   1126}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2252,      0,   1126}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2252,      0,   2048}, 0, { -3606,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1228,   1638,   2560}, 0, {     0,   2012}, {0x9d, 0x00, 0xb1, 0xff}}},\n    {{{  -818,   1638,   2048}, 0, { -2074,   2012}, {0x9d, 0x00, 0xb1, 0xff}}},\n    {{{  -818,    819,   2048}, 0, { -2074,      0}, {0x9d, 0x00, 0xb1, 0xff}}},\n    {{{  -818,      0,   2048}, 0, { -2074,   2012}, {0x9d, 0x00, 0xb1, 0xff}}},\n    {{{ -1228,    819,   2560}, 0, {     0,      0}, {0x9d, 0x00, 0xb1, 0xff}}},\n    {{{ -1228,      0,   2560}, 0, {     0,   2012}, {0x9d, 0x00, 0xb1, 0xff}}},\n    {{{ -1228,    819,   2560}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1228,      0,   2560}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1842,      0,   2560}, 0, {  3034,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700C358 - 0x0700C458\nstatic const Vtx bbh_seg7_vertex_0700C358[] = {\n    {{{ -1842,   1638,   2560}, 0, {  3034,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1228,   1638,   2560}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1228,    819,   2560}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1842,    819,   2560}, 0, {  3034,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1842,      0,   2560}, 0, {  3034,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2252,   1638,   2048}, 0, {  5078,   2012}, {0x63, 0x00, 0xb1, 0xff}}},\n    {{{ -1842,    819,   2560}, 0, {  3034,      0}, {0x63, 0x00, 0xb1, 0xff}}},\n    {{{ -2252,    819,   2048}, 0, {  5078,      0}, {0x63, 0x00, 0xb1, 0xff}}},\n    {{{ -1842,   1638,   2560}, 0, {  3034,   2012}, {0x63, 0x00, 0xb1, 0xff}}},\n    {{{ -1842,    819,   2560}, 0, {     0,      0}, {0x63, 0x00, 0xb1, 0xff}}},\n    {{{ -1842,      0,   2560}, 0, {     0,   2012}, {0x63, 0x00, 0xb1, 0xff}}},\n    {{{ -2252,      0,   2048}, 0, {  3240,   2012}, {0x63, 0x00, 0xb1, 0xff}}},\n    {{{ -2252,    819,   2048}, 0, {  3240,      0}, {0x63, 0x00, 0xb1, 0xff}}},\n    {{{ -2252,   1024,   1126}, 0, { -2584,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2047,   1024,   1126}, 0, { -1562,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2252,   1638,   1126}, 0, { -2584,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0700C458 - 0x0700C548\nstatic const Vtx bbh_seg7_vertex_0700C458[] = {\n    {{{ -2047,   1024,   1126}, 0, { -1562,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2047,   1280,   1126}, 0, { -1562,   1116}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2252,   1638,   1126}, 0, { -2584,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1893,   1280,   1126}, 0, {  -796,   1116}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1279,   1382,   1126}, 0, {  2268,   1372}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1893,   1024,   1126}, 0, {  -796,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1842,    819,   1126}, 0, {  -540,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1279,    922,   1126}, 0, {  2268,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -818,    717,   1126}, 0, {  7122,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -818,    819,   1126}, 0, {  7122,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2252,    819,   1126}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2098,    256,   1126}, 0, {   734,   1372}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1945,    256,   1126}, 0, {  1502,   1372}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2252,      0,   1126}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2098,      0,   1126}, 0, {   734,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0700C548 - 0x0700C648\nstatic const Vtx bbh_seg7_vertex_0700C548[] = {\n    {{{ -1945,      0,   1126}, 0, {  1502,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -101,    717,   1126}, 0, { 10700,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1945,    256,   1126}, 0, {  1502,   1372}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1893,   1280,   1126}, 0, {  -796,   1116}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1279,    922,   1126}, 0, {  2266,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1279,   1382,   1126}, 0, {  2268,   1372}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -818,   1075,   1331}, 0, {     0,    608}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -818,   1075,   1485}, 0, {  -796,    608}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -818,   1638,   2048}, 0, { -3606,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -818,    717,   2048}, 0, { -2074,    224}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -101,      0,   2048}, 0, { -5650,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -818,      0,   2048}, 0, { -2074,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -818,    819,   1485}, 0, {  -796,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -818,    819,   2048}, 0, { -3606,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -818,   1638,   1126}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -818,    819,   1126}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700C648 - 0x0700C748\nstatic const Vtx bbh_seg7_vertex_0700C648[] = {\n    {{{  -818,    819,   1126}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -818,    819,   1331}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -818,   1075,   1331}, 0, {     0,    608}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1945,      0,   1126}, 0, {  1502,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -101,      0,   1126}, 0, { 10700,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -101,    717,   1126}, 0, { 10700,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -818,    717,   2048}, 0, { -2074,    224}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -101,    717,   2048}, 0, { -5650,    224}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -101,      0,   2048}, 0, { -5650,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -818,    717,   1126}, 0, {  7122,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1945,    256,   1126}, 0, {  1502,   1372}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -101,    256,   1382}, 0, {  -286,   1372}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -101,    717,   2048}, 0, { -3606,    224}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -101,    717,   1126}, 0, {   990,    224}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -101,    256,   1536}, 0, { -1052,   1372}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -101,      0,   1382}, 0, {  -286,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700C748 - 0x0700C838\nstatic const Vtx bbh_seg7_vertex_0700C748[] = {\n    {{{  -101,    717,   2048}, 0, { -3606,    224}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -101,      0,   1536}, 0, { -1052,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -101,      0,   2048}, 0, { -3606,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -101,    256,   1536}, 0, { -1052,   1372}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -101,      0,   1382}, 0, {  -286,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -101,    717,   1126}, 0, {   990,    224}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -101,      0,   1126}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2252,      0,   2048}, 0, {  3240,   2012}, {0xf5, 0x00, 0x82, 0xff}}},\n    {{{ -2068,    256,   2032}, 0, {  2728,   1244}, {0xf5, 0x00, 0x82, 0xff}}},\n    {{{ -2068,      0,   2032}, 0, {  2728,   2012}, {0xf5, 0x00, 0x82, 0xff}}},\n    {{{ -2252,    256,   2048}, 0, {  3240,   1244}, {0xf5, 0x00, 0x82, 0xff}}},\n    {{{ -1786,      0,   2384}, 0, {   478,   2012}, {0x79, 0x00, 0x26, 0xff}}},\n    {{{ -1842,    256,   2560}, 0, {     0,   1244}, {0x79, 0x00, 0x26, 0xff}}},\n    {{{ -1842,      0,   2560}, 0, {     0,   2012}, {0x79, 0x00, 0x26, 0xff}}},\n    {{{ -1786,    256,   2384}, 0, {   478,   1244}, {0x79, 0x00, 0x26, 0xff}}},\n};\n\n// 0x0700C838 - 0x0700C878\nstatic const Vtx bbh_seg7_vertex_0700C838[] = {\n    {{{ -1842,    256,   2560}, 0, {   990,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1786,    256,   2384}, 0, {     0,   1696}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2068,    256,   2032}, 0, {     0,    312}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2252,    256,   2048}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700C878 - 0x0700C978\nstatic const Vtx bbh_seg7_vertex_0700C878[] = {\n    {{{ -2047,   1280,   1126}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2047,   1024,   1126}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2047,   1024,   1075}, 0, {   480,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2098,    256,   1126}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2098,      0,   1126}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2098,      0,   1075}, 0, {   478,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2098,    256,   1075}, 0, {   478,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1945,      0,   1075}, 0, {   478,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1945,    256,   1126}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1945,    256,   1075}, 0, {   478,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1945,      0,   1126}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1893,   1024,   1075}, 0, {   480,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1893,   1024,   1126}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1893,   1280,   1126}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1893,   1280,   1075}, 0, {   480,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2047,   1280,   1075}, 0, {   480,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700C978 - 0x0700C9B8\nstatic const Vtx bbh_seg7_vertex_0700C978[] = {\n    {{{ -2068,      0,   2032}, 0, {  3034,   2012}, {0x63, 0x00, 0xb1, 0xff}}},\n    {{{ -2068,    256,   2032}, 0, {  3034,      0}, {0x63, 0x00, 0xb1, 0xff}}},\n    {{{ -1786,    256,   2384}, 0, {     0,      0}, {0x63, 0x00, 0xb1, 0xff}}},\n    {{{ -1786,      0,   2384}, 0, {     0,   2012}, {0x63, 0x00, 0xb1, 0xff}}},\n};\n\n// 0x0700C9B8 - 0x0700CAA8\nstatic const Vtx bbh_seg7_vertex_0700C9B8[] = {\n    {{{ -2252,      0,   1126}, 0, { -7180,  -5142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -818,      0,   2048}, 0, {  7120,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -101,      0,   1126}, 0, { 14276,  -5142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2252,      0,   2048}, 0, { -7180,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1842,      0,   2560}, 0, { -3092,   9164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,      0,   2560}, 0, {  3032,   9164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -101,      0,   2048}, 0, { 14276,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2047,   1024,   1126}, 0, { -1052,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1893,   1024,   1126}, 0, { -1052,  -1566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1893,   1024,   1075}, 0, { -1560,  -1566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1842,   1024,   1126}, 0, { -1052,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2252,   1024,   2048}, 0, {  8144,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2047,   1024,   2355}, 0, { 11212,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1842,   1024,   2150}, 0, {  9168,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2252,   1024,   1126}, 0, { -1052,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700CAA8 - 0x0700CB58\nstatic const Vtx bbh_seg7_vertex_0700CAA8[] = {\n    {{{ -1330,    819,   1126}, 0, { -2072,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,    819,   1638}, 0, { -2072,   5076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -818,    819,   2048}, 0, {  3036,   9164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -818,    819,   1126}, 0, {  3032,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2047,   1024,   1126}, 0, { -1052,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1893,   1024,   1075}, 0, { -1560,  -1566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2047,   1024,   1075}, 0, { -1560,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -818,    819,   1485}, 0, {  3032,   3542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,    819,   1331}, 0, {  3544,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -818,    819,   1331}, 0, {  3032,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,    819,   1485}, 0, {  3544,   3542}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700CB58 - 0x0700CCB0\nstatic const Gfx bbh_seg7_dl_0700CB58[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_0700BC68.l, 1),\n    gsSPLight(&bbh_seg7_lights_0700BC68.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0700BC98, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPLight(&bbh_seg7_lights_0700BC80.l, 1),\n    gsSPLight(&bbh_seg7_lights_0700BC80.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0700BD18, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 2,  5,  3, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  9, 10, 0x0,  6, 10,  7, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 14, 12, 0x0),\n    gsSP1Triangle(11, 13, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700BE18, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700BEF8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700BFD8, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle( 7,  9, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700CCB0 - 0x0700CD18\nstatic const Gfx bbh_seg7_dl_0700CCB0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_0700C088, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700CD18 - 0x0700CF40\nstatic const Gfx bbh_seg7_dl_0700CD18[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bbh_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_0700C188, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 3,  4,  1, 0x0,  3,  5,  4, 0x0),\n    gsSP2Triangles( 5,  6,  4, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700C268, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  1,  5,  4, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 9, 11, 10, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700C358, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 2,  4,  3, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700C458, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 3,  4,  2, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 3,  5,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(11, 12, 10, 0x0, 12,  8, 10, 0x0),\n    gsSP2Triangles(10, 13, 14, 0x0, 10, 14, 11, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700C548, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 7, 12, 13, 0x0,  6,  8, 14, 0x0),\n    gsSP1Triangle(15,  6, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700C648, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  5,  9, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 14, 12, 0x0),\n    gsSP1Triangle(15, 11, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700C748, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700C838, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700CF40 - 0x0700CFA8\nstatic const Gfx bbh_seg7_dl_0700CF40[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_0700C878, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700CFA8 - 0x0700CFE0\nstatic const Gfx bbh_seg7_dl_0700CFA8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09002800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_0700C978, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700CFE0 - 0x0700D080\nstatic const Gfx bbh_seg7_dl_0700CFE0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09009000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_0700C9B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  3,  1, 0x0,  3,  5,  1, 0x0),\n    gsSP2Triangles( 1,  6,  2, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle(10, 14, 11, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700CAA8, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle( 7, 10,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700D080 - 0x0700D178\nconst Gfx bbh_seg7_dl_0700D080[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0700CB58),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0700CCB0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0700CD18),\n    gsSPDisplayList(bbh_seg7_dl_0700CF40),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0700CFA8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0700CFE0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/13/model.inc.c",
    "content": "// 0x0700D178 - 0x0700D278\nstatic const Vtx bbh_seg7_vertex_0700D178[] = {\n    {{{ -2037,   1024,   2316}, 0, { -1470,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1863,   1126,   2142}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2037,   1126,   2316}, 0, { -1470,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1310,    819,   1126}, 0, {  4980,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1310,    922,   1126}, 0, {  4980,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1310,    922,   1629}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1310,    819,   1629}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1310,    922,   1629}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -805,    922,   2032}, 0, { -5454,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -805,    819,   2032}, 0, { -5454,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1310,    819,   1629}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1863,   1024,   1126}, 0, { 10104,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1863,   1126,   2142}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1863,   1024,   2142}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1863,   1126,   1126}, 0, { 10104,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1863,   1024,   2142}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700D278 - 0x0700D2E0\nstatic const Gfx bbh_seg7_dl_0700D278[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_0700D178, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700D2E0 - 0x0700D350\nconst Gfx bbh_seg7_dl_0700D2E0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0700D278),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/14/model.inc.c",
    "content": "// 0x0700D350 - 0x0700D368\nstatic const Lights1 bbh_seg7_lights_0700D350 = gdSPDefLights1(\n    0x3f, 0x51, 0x66,\n    0x9e, 0xcc, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700D368 - 0x0700D428\nstatic const Vtx bbh_seg7_vertex_0700D368[] = {\n    {{{ -1740,   1536,   2550}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1330,   1536,   2550}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1330,   1126,   2550}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1740,   1126,   2550}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1740,    614,   2550}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1330,    614,   2550}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1330,    205,   2550}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1740,    205,   2550}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -613,    614,   2038}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -204,    614,   2038}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -204,    205,   2038}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -613,    205,   2038}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700D428 - 0x0700D490\nstatic const Gfx bbh_seg7_dl_0700D428[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09006000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_0700D350.l, 1),\n    gsSPLight(&bbh_seg7_lights_0700D350.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0700D368, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700D490 - 0x0700D500\nconst Gfx bbh_seg7_dl_0700D490[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0700D428),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/15/model.inc.c",
    "content": "// 0x0700D500 - 0x0700D600\nstatic const Vtx bbh_seg7_vertex_0700D500[] = {\n    {{{  -537,      0,   1756}, 0, {     0,    212}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  -537,    282,   2038}, 0, {     0,    746}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  -537,    538,   2038}, 0, {     0,    990}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{ -1663,   1357,   2447}, 0, {   734,      0}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{ -1407,   1459,   2550}, 0, {   990,    990}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{ -1407,   1357,   2447}, 0, {   734,      0}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{ -1663,   1459,   2550}, 0, {   990,    990}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{ -1663,   1101,   2447}, 0, {    96,      0}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{ -1663,   1203,   2550}, 0, {   352,    990}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{ -1407,   1203,   2550}, 0, {   352,    990}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{ -1407,   1101,   2447}, 0, {    96,      0}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  -281,      0,   1756}, 0, {   990,    212}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  -537,      0,   1500}, 0, {     0,      0}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{ -1663,      0,   2268}, 0, {     0,    212}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{ -1663,    282,   2550}, 0, {     0,    746}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{ -1663,    538,   2550}, 0, {     0,    990}, {0xff, 0xec, 0x40, 0x50}}},\n};\n\n// 0x0700D600 - 0x0700D6F0\nstatic const Vtx bbh_seg7_vertex_0700D600[] = {\n    {{{  -281,      0,   1756}, 0, {   990,    212}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  -281,    282,   2038}, 0, {   990,    746}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  -537,    282,   2038}, 0, {     0,    746}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  -537,      0,   1500}, 0, {     0,      0}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  -537,    538,   2038}, 0, {     0,    990}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  -281,    538,   2038}, 0, {   990,    990}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  -281,      0,   1500}, 0, {   990,      0}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{ -1663,      0,   2012}, 0, {     0,      0}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{ -1407,    538,   2550}, 0, {   990,    990}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{ -1407,      0,   2012}, 0, {   990,      0}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{ -1663,    538,   2550}, 0, {     0,    990}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{ -1663,      0,   2268}, 0, {     0,    212}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{ -1407,    282,   2550}, 0, {   990,    746}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{ -1407,      0,   2268}, 0, {   990,    212}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{ -1663,    282,   2550}, 0, {     0,    746}, {0xff, 0xec, 0x40, 0x50}}},\n};\n\n// 0x0700D6F0 - 0x0700D7E0\nstatic const Gfx bbh_seg7_dl_0700D6F0[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, spooky_0900B000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_0700D500, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  6,  3, 0x0),\n    gsSP2Triangles( 7,  8,  6, 0x0,  5,  4,  9, 0x0),\n    gsSP2Triangles( 5,  9, 10, 0x0, 10,  9,  8, 0x0),\n    gsSP2Triangles(10,  8,  7, 0x0, 11,  1,  0, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700D600, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  6,  5,  1, 0x0),\n    gsSP2Triangles( 6,  1,  0, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 10,  7, 0x0),\n    gsSP2Triangles( 9,  8, 12, 0x0,  9, 12, 13, 0x0),\n    gsSP2Triangles(13, 12, 14, 0x0, 13, 14, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700D7E0 - 0x0700D850\nconst Gfx bbh_seg7_dl_0700D7E0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0700D6F0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/16/model.inc.c",
    "content": "// 0x0700D850 - 0x0700D868\nstatic const Lights1 bbh_seg7_lights_0700D850 = gdSPDefLights1(\n    0x20, 0x20, 0x20,\n    0x50, 0x50, 0x50, 0x28, 0x28, 0x28\n);\n\n// 0x0700D868 - 0x0700D880\nstatic const Lights1 bbh_seg7_lights_0700D868 = gdSPDefLights1(\n    0x3c, 0x3c, 0x3c,\n    0x96, 0x96, 0x96, 0x28, 0x28, 0x28\n);\n\n// 0x0700D880 - 0x0700D898\nstatic const Lights1 bbh_seg7_lights_0700D880 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700D898 - 0x0700D918\nstatic const Vtx bbh_seg7_vertex_0700D898[] = {\n    {{{  3430,      0,   1075}, 0, {   478,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3277,      0,   1024}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3277,      0,   1075}, 0, {   478,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3430,      0,   1024}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1690,      0,    -50}, 0, {   478,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,      0,   -101}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,      0,    -50}, 0, {   478,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1690,      0,   -101}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700D918 - 0x0700D9B8\nstatic const Vtx bbh_seg7_vertex_0700D918[] = {\n    {{{  1126,      0,  -1535}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1126,      0,   -101}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2150,      0,   -101}, 0, {   504,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3277,      0,  -1228}, 0, {     0,    772}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3277,      0,  -1535}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2150,      0,  -1228}, 0, {   504,    772}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3584,      0,   1024}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2662,      0,   -306}, 0, {   458,    352}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2662,      0,   1024}, 0, {   990,    352}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3584,      0,   -306}, 0, {   458,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700D9B8 - 0x0700DA98\nstatic const Vtx bbh_seg7_vertex_0700D9B8[] = {\n    {{{  3584,    717,  -1535}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3584,    717,   1024}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2150,    717,   1024}, 0, {   394,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2150,    717,   -101}, 0, {   394,    418}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1126,    717,   -101}, 0, {     0,    418}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1126,    717,  -1535}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1536,    256,   -101}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1690,    256,    -50}, 0, {   478,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1536,    256,    -50}, 0, {   478,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1690,    256,   -101}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1690,    256,   -101}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1690,      0,    -50}, 0, {   480,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1690,    256,    -50}, 0, {   480,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1690,      0,   -101}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700DA98 - 0x0700DB98\nstatic const Vtx bbh_seg7_vertex_0700DA98[] = {\n    {{{  3277,    256,   1024}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3430,    256,   1024}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3430,    256,   1075}, 0, {   480,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1536,      0,    -50}, 0, {   478,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1536,    256,   -101}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1536,    256,    -50}, 0, {   478,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1536,      0,   -101}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3277,      0,   1075}, 0, {   478,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3277,    256,   1024}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3277,    256,   1075}, 0, {   478,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3277,      0,   1024}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3430,    256,   1024}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3430,      0,   1024}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3430,      0,   1075}, 0, {   480,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3430,    256,   1075}, 0, {   480,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3277,    256,   1075}, 0, {   480,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0700DB98 - 0x0700DC88\nstatic const Vtx bbh_seg7_vertex_0700DB98[] = {\n    {{{  3174,    102,   -347}, 0, {   478,    992}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3174,    102,   -245}, 0, {   840,    992}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3174,   -101,   -245}, 0, {   840,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3174,      0,   -347}, 0, {   478,   1500}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3174,   -101,   -245}, 0, {   840,   2012}, {0x00, 0xa6, 0xa7, 0xff}}},\n    {{{  3072,   -101,   -245}, 0, {   480,   2012}, {0x00, 0xa6, 0xa7, 0xff}}},\n    {{{  3174,      0,   -347}, 0, {   480,   1500}, {0x00, 0xa6, 0xa7, 0xff}}},\n    {{{  3072,      0,   -347}, 0, {   118,   1500}, {0x00, 0xa6, 0xa7, 0xff}}},\n    {{{  2867,   -101,   -245}, 0, {  -242,   2012}, {0x00, 0xa6, 0xa7, 0xff}}},\n    {{{  2765,   -101,   -245}, 0, {  -602,   2012}, {0x00, 0xa6, 0xa7, 0xff}}},\n    {{{  2867,      0,   -347}, 0, {  -602,   1500}, {0x00, 0xa6, 0xa7, 0xff}}},\n    {{{  2765,      0,   -347}, 0, {  -964,   1500}, {0x00, 0xa6, 0xa7, 0xff}}},\n    {{{  3174,      0,   -347}, 0, {   478,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3072,      0,   -347}, 0, {   118,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3072,    102,   -347}, 0, {   118,    988}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700DC88 - 0x0700DD78\nstatic const Vtx bbh_seg7_vertex_0700DC88[] = {\n    {{{  3072,      0,   -347}, 0, {   118,   1500}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,   -101,   -245}, 0, {   478,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,    102,   -245}, 0, {   478,    992}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,    102,   -347}, 0, {   118,    988}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3174,      0,   -347}, 0, {   478,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3072,    102,   -347}, 0, {   118,    988}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3174,    102,   -347}, 0, {   478,    992}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3072,      0,   -245}, 0, {   478,   1500}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3174,    102,   -245}, 0, {   840,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3072,    102,   -245}, 0, {   478,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3174,      0,   -245}, 0, {   840,   1500}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2867,    102,   -347}, 0, {  -602,    988}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2867,   -101,   -245}, 0, {  -242,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2867,      0,   -347}, 0, {  -602,   1500}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2867,    102,   -245}, 0, {  -242,    988}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700DD78 - 0x0700DE68\nstatic const Vtx bbh_seg7_vertex_0700DD78[] = {\n    {{{  2765,      0,   -245}, 0, {  -602,   1500}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2867,      0,   -245}, 0, {  -242,   1500}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2867,    102,   -245}, 0, {  -242,    988}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2765,    102,   -245}, 0, {  -602,    988}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2765,      0,   -347}, 0, {  -964,   1500}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2765,   -101,   -245}, 0, {  -602,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2765,    102,   -245}, 0, {  -602,    988}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2765,    102,   -347}, 0, {  -964,    988}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2867,      0,   -347}, 0, {  -602,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2765,    102,   -347}, 0, {  -964,    988}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2867,    102,   -347}, 0, {  -602,    988}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2765,      0,   -347}, 0, {  -964,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3174,    102,   -347}, 0, {   478,   1756}, {0x00, 0x58, 0xa6, 0xff}}},\n    {{{  3072,    102,   -347}, 0, {   118,   1756}, {0x00, 0x58, 0xa6, 0xff}}},\n    {{{  3123,    154,   -296}, 0, {   478,   1244}, {0x00, 0x58, 0xa6, 0xff}}},\n};\n\n// 0x0700DE68 - 0x0700DF58\nstatic const Vtx bbh_seg7_vertex_0700DE68[] = {\n    {{{  3123,    154,   -296}, 0, {   478,   1244}, {0x5a, 0x58, 0x00, 0xff}}},\n    {{{  3174,    102,   -245}, 0, {   840,   1756}, {0x5a, 0x58, 0x00, 0xff}}},\n    {{{  3174,    102,   -347}, 0, {   478,   1756}, {0x5a, 0x58, 0x00, 0xff}}},\n    {{{  3072,    102,   -245}, 0, {   478,   1756}, {0xa6, 0x58, 0x00, 0xff}}},\n    {{{  3123,    154,   -296}, 0, {   478,   1244}, {0xa6, 0x58, 0x00, 0xff}}},\n    {{{  3072,    102,   -347}, 0, {   118,   1756}, {0xa6, 0x58, 0x00, 0xff}}},\n    {{{  3174,    102,   -245}, 0, {   840,   1756}, {0x00, 0x58, 0x5a, 0xff}}},\n    {{{  3123,    154,   -296}, 0, {   478,   1244}, {0x00, 0x58, 0x5a, 0xff}}},\n    {{{  3072,    102,   -245}, 0, {   478,   1756}, {0x00, 0x58, 0x5a, 0xff}}},\n    {{{  2867,    102,   -245}, 0, {  -242,   1756}, {0x00, 0x58, 0x5a, 0xff}}},\n    {{{  2816,    154,   -296}, 0, {  -602,   1244}, {0x00, 0x58, 0x5a, 0xff}}},\n    {{{  2765,    102,   -245}, 0, {  -602,   1756}, {0x00, 0x58, 0x5a, 0xff}}},\n    {{{  2816,    154,   -296}, 0, {  -602,   1244}, {0x5a, 0x58, 0x00, 0xff}}},\n    {{{  2867,    102,   -245}, 0, {  -242,   1756}, {0x5a, 0x58, 0x00, 0xff}}},\n    {{{  2867,    102,   -347}, 0, {  -602,   1756}, {0x5a, 0x58, 0x00, 0xff}}},\n};\n\n// 0x0700DF58 - 0x0700E058\nstatic const Vtx bbh_seg7_vertex_0700DF58[] = {\n    {{{  1126,      0,  -1330}, 0, {  2524,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1126,    717,  -1330}, 0, {  2524,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1126,    717,   -306}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2867,    102,   -347}, 0, {  -602,   1756}, {0x00, 0x58, 0xa6, 0xff}}},\n    {{{  2765,    102,   -347}, 0, {  -964,   1756}, {0x00, 0x58, 0xa6, 0xff}}},\n    {{{  2816,    154,   -296}, 0, {  -602,   1244}, {0x00, 0x58, 0xa6, 0xff}}},\n    {{{  2765,    102,   -245}, 0, {  -602,   1756}, {0xa6, 0x58, 0x00, 0xff}}},\n    {{{  2816,    154,   -296}, 0, {  -602,   1244}, {0xa6, 0x58, 0x00, 0xff}}},\n    {{{  2765,    102,   -347}, 0, {  -964,   1756}, {0xa6, 0x58, 0x00, 0xff}}},\n    {{{  3430,    256,   1024}, 0, {   352,   1284}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2355,    717,   1024}, 0, {  3034,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3584,    717,   1024}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3584,      0,   1024}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3430,      0,   1024}, 0, {   352,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3277,    256,   1024}, 0, {   734,   1284}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2355,      0,   1024}, 0, {  3034,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700E058 - 0x0700E158\nstatic const Vtx bbh_seg7_vertex_0700E058[] = {\n    {{{  2355,      0,   1024}, 0, {  3034,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3277,    256,   1024}, 0, {   734,   1284}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3277,      0,   1024}, 0, {   734,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3584,    717,  -1535}, 0, {  3546,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1331,      0,  -1535}, 0, { -2074,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3584,      0,  -1535}, 0, {  3546,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1126,      0,  -1330}, 0, {  2524,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1126,    717,   -306}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1126,      0,   -306}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,      0,      0}, 0, {  2012,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,    717,      0}, 0, {  2012,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,    717,    819}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,      0,    819}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3584,      0,   1024}, 0, {  4312,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3584,    717,  -1535}, 0, { -2074,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3584,      0,  -1535}, 0, { -2074,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700E158 - 0x0700E258\nstatic const Vtx bbh_seg7_vertex_0700E158[] = {\n    {{{  3584,      0,   1024}, 0, {  4312,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3584,    717,   1024}, 0, {  4312,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3584,    717,  -1535}, 0, { -2074,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3584,    717,  -1535}, 0, {  3546,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1331,    717,  -1535}, 0, { -2074,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1331,      0,  -1535}, 0, { -2074,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3174,    102,  -1187}, 0, {   478,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3072,    102,  -1187}, 0, {   118,    988}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3072,      0,  -1187}, 0, {   118,   1500}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1690,    256,   -101}, 0, {   352,   1280}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1536,    256,   -101}, 0, {   734,   1280}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1331,    717,   -101}, 0, {  1246,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1946,    717,   -101}, 0, {  -286,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1690,      0,   -101}, 0, {   352,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1536,      0,   -101}, 0, {   734,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1331,      0,   -101}, 0, {  1246,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700E258 - 0x0700E338\nstatic const Vtx bbh_seg7_vertex_0700E258[] = {\n    {{{  1690,      0,   -101}, 0, {   352,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1946,    717,   -101}, 0, {  -286,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1946,      0,   -101}, 0, {  -286,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2867,      0,  -1187}, 0, {  -602,   1500}, {0x00, 0xa6, 0x59, 0xff}}},\n    {{{  2765,      0,  -1187}, 0, {  -964,   1500}, {0x00, 0xa6, 0x59, 0xff}}},\n    {{{  2765,   -101,  -1289}, 0, {  -602,   2012}, {0x00, 0xa6, 0x59, 0xff}}},\n    {{{  2867,   -101,  -1289}, 0, {  -242,   2012}, {0x00, 0xa6, 0x59, 0xff}}},\n    {{{  2867,      0,  -1187}, 0, {  -602,   1500}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2867,   -101,  -1289}, 0, {  -242,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2867,    102,  -1289}, 0, {  -242,    988}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3072,    102,  -1187}, 0, {   118,    988}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,    102,  -1289}, 0, {   478,    992}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,   -101,  -1289}, 0, {   478,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,      0,  -1187}, 0, {   118,   1500}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700E338 - 0x0700E418\nstatic const Vtx bbh_seg7_vertex_0700E338[] = {\n    {{{  3174,    102,  -1187}, 0, {   478,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3072,      0,  -1187}, 0, {   118,   1500}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3174,      0,  -1187}, 0, {   478,   1500}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3072,    102,  -1289}, 0, {   478,    992}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3174,      0,  -1289}, 0, {   840,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3072,      0,  -1289}, 0, {   478,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3174,    102,  -1289}, 0, {   840,    992}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3174,      0,  -1187}, 0, {   478,   1500}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3174,   -101,  -1289}, 0, {   840,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3174,    102,  -1289}, 0, {   840,    992}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3174,    102,  -1187}, 0, {   478,    992}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3174,      0,  -1187}, 0, {   480,   1500}, {0x00, 0xa6, 0x59, 0xff}}},\n    {{{  3072,   -101,  -1289}, 0, {   480,   2012}, {0x00, 0xa6, 0x59, 0xff}}},\n    {{{  3174,   -101,  -1289}, 0, {   840,   2012}, {0x00, 0xa6, 0x59, 0xff}}},\n};\n\n// 0x0700E418 - 0x0700E508\nstatic const Vtx bbh_seg7_vertex_0700E418[] = {\n    {{{  2765,    102,  -1289}, 0, {  -602,    988}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2867,      0,  -1289}, 0, {  -242,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2765,      0,  -1289}, 0, {  -602,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2867,      0,  -1187}, 0, {  -602,   1500}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2867,    102,  -1289}, 0, {  -242,    988}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2867,    102,  -1187}, 0, {  -602,    988}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2867,    102,  -1187}, 0, {  -602,    988}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2765,    102,  -1187}, 0, {  -964,    988}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2765,      0,  -1187}, 0, {  -964,   1500}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2765,    102,  -1187}, 0, {  -964,    988}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2765,    102,  -1289}, 0, {  -602,    988}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2765,   -101,  -1289}, 0, {  -602,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2765,      0,  -1187}, 0, {  -964,   1500}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2867,      0,  -1187}, 0, {  -602,   1500}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2867,    102,  -1289}, 0, {  -242,    988}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700E508 - 0x0700E5F8\nstatic const Vtx bbh_seg7_vertex_0700E508[] = {\n    {{{  3174,      0,  -1187}, 0, {   480,   1500}, {0x00, 0xa6, 0x59, 0xff}}},\n    {{{  3072,      0,  -1187}, 0, {   118,   1500}, {0x00, 0xa6, 0x59, 0xff}}},\n    {{{  3072,   -101,  -1289}, 0, {   480,   2012}, {0x00, 0xa6, 0x59, 0xff}}},\n    {{{  3174,    102,  -1187}, 0, {   478,   1756}, {0x5a, 0x58, 0x00, 0xff}}},\n    {{{  3174,    102,  -1289}, 0, {   840,   1756}, {0x5a, 0x58, 0x00, 0xff}}},\n    {{{  3123,    154,  -1238}, 0, {   478,   1244}, {0x5a, 0x58, 0x00, 0xff}}},\n    {{{  3123,    154,  -1238}, 0, {   478,   1244}, {0x00, 0x58, 0x5a, 0xff}}},\n    {{{  3072,    102,  -1187}, 0, {   118,   1756}, {0x00, 0x58, 0x5a, 0xff}}},\n    {{{  3174,    102,  -1187}, 0, {   478,   1756}, {0x00, 0x58, 0x5a, 0xff}}},\n    {{{  3072,    102,  -1187}, 0, {   118,   1756}, {0xa6, 0x58, 0x00, 0xff}}},\n    {{{  3123,    154,  -1238}, 0, {   478,   1244}, {0xa6, 0x58, 0x00, 0xff}}},\n    {{{  3072,    102,  -1289}, 0, {   478,   1756}, {0xa6, 0x58, 0x00, 0xff}}},\n    {{{  3072,    102,  -1289}, 0, {   478,   1756}, {0x00, 0x58, 0xa6, 0xff}}},\n    {{{  3123,    154,  -1238}, 0, {   478,   1244}, {0x00, 0x58, 0xa6, 0xff}}},\n    {{{  3174,    102,  -1289}, 0, {   840,   1756}, {0x00, 0x58, 0xa6, 0xff}}},\n};\n\n// 0x0700E5F8 - 0x0700E6B8\nstatic const Vtx bbh_seg7_vertex_0700E5F8[] = {\n    {{{  2765,    102,  -1289}, 0, {  -602,   1756}, {0x00, 0x58, 0xa6, 0xff}}},\n    {{{  2816,    154,  -1238}, 0, {  -602,   1244}, {0x00, 0x58, 0xa6, 0xff}}},\n    {{{  2867,    102,  -1289}, 0, {  -242,   1756}, {0x00, 0x58, 0xa6, 0xff}}},\n    {{{  2765,    102,  -1187}, 0, {  -964,   1756}, {0xa6, 0x58, 0x00, 0xff}}},\n    {{{  2816,    154,  -1238}, 0, {  -602,   1244}, {0xa6, 0x58, 0x00, 0xff}}},\n    {{{  2765,    102,  -1289}, 0, {  -602,   1756}, {0xa6, 0x58, 0x00, 0xff}}},\n    {{{  2867,    102,  -1187}, 0, {  -602,   1756}, {0x5a, 0x58, 0x00, 0xff}}},\n    {{{  2867,    102,  -1289}, 0, {  -242,   1756}, {0x5a, 0x58, 0x00, 0xff}}},\n    {{{  2816,    154,  -1238}, 0, {  -602,   1244}, {0x5a, 0x58, 0x00, 0xff}}},\n    {{{  2816,    154,  -1238}, 0, {  -602,   1244}, {0x00, 0x58, 0x5a, 0xff}}},\n    {{{  2765,    102,  -1187}, 0, {  -964,   1756}, {0x00, 0x58, 0x5a, 0xff}}},\n    {{{  2867,    102,  -1187}, 0, {  -602,   1756}, {0x00, 0x58, 0x5a, 0xff}}},\n};\n\n// 0x0700E6B8 - 0x0700E7A8\nstatic const Vtx bbh_seg7_vertex_0700E6B8[] = {\n    {{{  3584,   -716,   -306}, 0, {     0,   3540}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2662,   -716,   -306}, 0, {  4566,   3540}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2662,      0,   -306}, 0, {  4566,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3584,   -716,   -306}, 0, {  3034,   3540}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3584,      0,  -1535}, 0, { -3096,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3584,   -716,  -1535}, 0, { -3096,   3540}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3584,      0,   -306}, 0, {  3034,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3584,      0,  -1535}, 0, {  1502,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3277,      0,  -1535}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3277,   -716,  -1535}, 0, {     0,   3540}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3584,   -716,  -1535}, 0, {  1502,   3540}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2150,   -716,  -1228}, 0, {     0,   3540}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3277,   -716,  -1228}, 0, {  5588,   3540}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3277,      0,  -1228}, 0, {  5588,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2150,      0,  -1228}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0700E7A8 - 0x0700E898\nstatic const Vtx bbh_seg7_vertex_0700E7A8[] = {\n    {{{  3277,      0,  -1228}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3277,   -716,  -1535}, 0, {  1500,   3540}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3277,      0,  -1535}, 0, {  1502,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3584,   -716,   -306}, 0, {     0,   3540}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2662,      0,   -306}, 0, {  4566,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3584,      0,   -306}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2355,      0,   1024}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2662,   -716,   1024}, 0, {  -540,   3540}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2355,   -716,   1024}, 0, {   990,   3540}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2662,      0,   1024}, 0, {  -542,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2662,      0,   -306}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2662,   -716,   -306}, 0, {     0,   3540}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2662,   -716,   1024}, 0, {  6612,   3540}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2662,      0,   1024}, 0, {  6612,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3277,   -716,  -1228}, 0, {     0,   3540}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700E898 - 0x0700E988\nstatic const Vtx bbh_seg7_vertex_0700E898[] = {\n    {{{  2253,      0,   -204}, 0, {   650,      0}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  2253,   -716,   -204}, 0, {   650,   3540}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  2150,   -716,   -306}, 0, {   990,   3540}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  2150,      0,    819}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,   -716,  -1228}, 0, { 10188,   3540}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,      0,  -1228}, 0, { 10188,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,   -716,    819}, 0, {     0,   3540}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2355,      0,    922}, 0, {   224,      0}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{  2253,   -716,    819}, 0, {   734,   3536}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{  2253,      0,    819}, 0, {   734,      0}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{  2253,      0,    819}, 0, {   734,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2150,   -716,    819}, 0, {   990,   3536}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2150,      0,    819}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2253,   -716,    819}, 0, {   734,   3536}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2355,   -716,    922}, 0, {   224,   3540}, {0x5a, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0700E988 - 0x0700EA78\nstatic const Vtx bbh_seg7_vertex_0700E988[] = {\n    {{{  2355,      0,   1024}, 0, {     0,    -28}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2355,   -716,    922}, 0, {   224,   3540}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2355,      0,    922}, 0, {   224,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2355,   -716,   1024}, 0, {     0,   3540}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,      0,      0}, 0, {     0,      0}, {0x58, 0x00, 0x5a, 0xff}}},\n    {{{  2150,   -716,      0}, 0, {     0,   3540}, {0x58, 0x00, 0x5a, 0xff}}},\n    {{{  2253,   -716,   -101}, 0, {   308,   3540}, {0x58, 0x00, 0x5a, 0xff}}},\n    {{{  2253,      0,   -204}, 0, {   650,      0}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  2150,   -716,   -306}, 0, {   990,   3540}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  2150,      0,   -306}, 0, {   990,      0}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  2253,      0,   -101}, 0, {   308,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2253,   -716,   -204}, 0, {   650,   3540}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2253,      0,   -204}, 0, {   650,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2253,   -716,   -101}, 0, {   308,   3540}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2253,      0,   -101}, 0, {   308,      0}, {0x58, 0x00, 0x5a, 0xff}}},\n};\n\n// 0x0700EA78 - 0x0700EB68\nstatic const Vtx bbh_seg7_vertex_0700EA78[] = {\n    {{{  2253,    717,    819}, 0, {   734,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2150,      0,    819}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2150,    717,    819}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1126,    717,  -1330}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1229,      0,  -1330}, 0, {   734,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1229,    717,  -1330}, 0, {   734,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1229,    717,  -1330}, 0, {   734,      0}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{  1331,      0,  -1433}, 0, {   224,   2012}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{  1331,    717,  -1433}, 0, {   224,      0}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{  1229,      0,  -1330}, 0, {   734,   2012}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{  1331,    717,  -1433}, 0, {   224,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1331,      0,  -1433}, 0, {   224,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1331,      0,  -1535}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1331,    717,  -1535}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1126,      0,  -1330}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0700EB68 - 0x0700EC48\nstatic const Vtx bbh_seg7_vertex_0700EB68[] = {\n    {{{  2355,    717,    922}, 0, {   224,      0}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{  2253,      0,    819}, 0, {   734,   2012}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{  2253,    717,    819}, 0, {   734,      0}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{  2253,    717,    819}, 0, {   734,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2253,      0,    819}, 0, {   734,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2150,      0,    819}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1331,    717,   -101}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1331,      0,   -101}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1331,      0,   -204}, 0, {   224,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2355,      0,    922}, 0, {   224,   2012}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{  2355,    717,   1024}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2355,      0,   1024}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2355,      0,    922}, 0, {   224,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2355,    717,    922}, 0, {   224,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700EC48 - 0x0700ED28\nstatic const Vtx bbh_seg7_vertex_0700EC48[] = {\n    {{{  1229,    717,   -306}, 0, {   734,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1229,      0,   -306}, 0, {   734,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1126,      0,   -306}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1126,    717,   -306}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1331,    717,   -204}, 0, {   224,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1229,      0,   -306}, 0, {   734,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1229,    717,   -306}, 0, {   734,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1331,      0,   -204}, 0, {   224,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1331,    717,   -101}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1331,      0,   -204}, 0, {   224,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1331,    717,   -204}, 0, {   224,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2253,    717,   -101}, 0, {   308,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2253,      0,   -204}, 0, {   650,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2253,    717,   -204}, 0, {   650,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700ED28 - 0x0700EE28\nstatic const Vtx bbh_seg7_vertex_0700ED28[] = {\n    {{{  2048,    717,   -306}, 0, {   224,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1946,      0,   -204}, 0, {   734,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1946,    717,   -204}, 0, {   734,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1946,    717,   -204}, 0, {   734,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1946,      0,   -204}, 0, {   734,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1946,      0,   -101}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1946,    717,   -101}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,      0,   -306}, 0, {   224,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2150,    717,   -306}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,      0,   -306}, 0, {   224,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,    717,   -306}, 0, {   224,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2150,      0,   -306}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2253,    717,   -204}, 0, {   650,      0}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  2150,      0,   -306}, 0, {   990,   2012}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  2150,    717,   -306}, 0, {   990,      0}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  2253,      0,   -204}, 0, {   650,   2012}, {0x59, 0x00, 0xa6, 0xff}}},\n};\n\n// 0x0700EE28 - 0x0700EE98\nstatic const Vtx bbh_seg7_vertex_0700EE28[] = {\n    {{{  2150,    717,      0}, 0, {     0,      0}, {0x58, 0x00, 0x5a, 0xff}}},\n    {{{  2150,      0,      0}, 0, {     0,   2012}, {0x58, 0x00, 0x5a, 0xff}}},\n    {{{  2253,      0,   -101}, 0, {   308,   2012}, {0x58, 0x00, 0x5a, 0xff}}},\n    {{{  2253,    717,   -101}, 0, {   308,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2253,      0,   -101}, 0, {   308,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2253,      0,   -204}, 0, {   650,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2253,    717,   -101}, 0, {   308,      0}, {0x58, 0x00, 0x5a, 0xff}}},\n};\n\n// 0x0700EE98 - 0x0700EFD8\nstatic const Gfx bbh_seg7_dl_0700EE98[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_0700D850.l, 1),\n    gsSPLight(&bbh_seg7_lights_0700D850.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0700D898, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPLight(&bbh_seg7_lights_0700D868.l, 1),\n    gsSPLight(&bbh_seg7_lights_0700D868.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0700D918, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  5,  3, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSPLight(&bbh_seg7_lights_0700D880.l, 1),\n    gsSPLight(&bbh_seg7_lights_0700D880.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0700D9B8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 4,  5,  0, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700DA98, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700EFD8 - 0x0700F2B8\nstatic const Gfx bbh_seg7_dl_0700EFD8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_0700DB98, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700DC88, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700DD78, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700DE68, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700DF58, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13,  9, 0x0, 12,  9, 11, 0x0),\n    gsSP2Triangles( 9, 14, 10, 0x0, 15, 10, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700E058, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700E158, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13,  9, 12, 0x0),\n    gsSP2Triangles(14, 11, 10, 0x0, 14, 15, 11, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700E258, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700E338, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700E418, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0,  6,  8, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700E508, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700E5F8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700F2B8 - 0x0700F3D8\nstatic const Gfx bbh_seg7_dl_0700F2B8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_0700E6B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700E7A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700E898, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 7, 14,  8, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700E988, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 4,  6, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700F3D8 - 0x0700F510\nstatic const Gfx bbh_seg7_dl_0700F3D8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_0700EA78, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 3, 14,  4, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700EB68, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  0,  9,  1, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700EC48, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700ED28, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  0,  7,  1, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700EE28, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  2,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700F510 - 0x0700F5C8\nconst Gfx bbh_seg7_dl_0700F510[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0700EE98),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0700EFD8),\n    gsSPDisplayList(bbh_seg7_dl_0700F2B8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0700F3D8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/17/model.inc.c",
    "content": "// 0x0700F5C8 - 0x0700F6B8\nstatic const Vtx bbh_seg7_vertex_0700F5C8[] = {\n    {{{  2130,      0,  -1248}, 0, {  2216,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2130,    102,   -306}, 0, { -7184,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2130,      0,   -306}, 0, { -7184,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2683,      0,   1024}, 0, { 13050,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2683,    102,   1024}, 0, { 13050,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2683,    102,   -286}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2683,      0,   -286}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2683,    102,   -286}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2765,    102,   -286}, 0, {   172,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2765,      0,   -286}, 0, {   172,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2683,      0,   -286}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3174,    102,   -286}, 0, { -3914,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3584,    102,   -286}, 0, { -8002,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3584,      0,   -286}, 0, { -8002,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3174,      0,   -286}, 0, { -3914,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700F6B8 - 0x0700F7A8\nstatic const Vtx bbh_seg7_vertex_0700F6B8[] = {\n    {{{  2130,      0,  -1248}, 0, { -5344,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2765,    102,  -1248}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2130,    102,  -1248}, 0, { -5344,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2130,      0,  -1248}, 0, {  2216,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2130,    102,  -1248}, 0, {  2216,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2130,    102,   -306}, 0, { -7184,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3256,      0,  -1535}, 0, {  5078,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3256,    102,  -1535}, 0, {  5078,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3256,    102,  -1248}, 0, {  2216,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3256,      0,  -1248}, 0, {  2216,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3174,      0,  -1248}, 0, {  5078,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3256,      0,  -1248}, 0, {  5896,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3256,    102,  -1248}, 0, {  5896,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3174,    102,  -1248}, 0, {  5078,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2765,      0,  -1248}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700F7A8 - 0x0700F848\nstatic const Gfx bbh_seg7_dl_0700F7A8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_0700F5C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700F6B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700F848 - 0x0700F8B8\nconst Gfx bbh_seg7_dl_0700F848[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0700F7A8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/18/model.inc.c",
    "content": "// 0x0700F8B8 - 0x0700F8D0\nstatic const Lights1 bbh_seg7_lights_0700F8B8 = gdSPDefLights1(\n    0x65, 0x65, 0x38,\n    0xfe, 0xfe, 0x8c, 0x28, 0x28, 0x28\n);\n\n// 0x0700F8D0 - 0x0700F8E8\nstatic const Lights1 bbh_seg7_lights_0700F8D0 = gdSPDefLights1(\n    0x20, 0x20, 0x20,\n    0x50, 0x50, 0x50, 0x28, 0x28, 0x28\n);\n\n// 0x0700F8E8 - 0x0700F900\nstatic const Lights1 bbh_seg7_lights_0700F8E8 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700F900 - 0x0700F918\nstatic const Lights1 bbh_seg7_lights_0700F900 = gdSPDefLights1(\n    0x33, 0x2c, 0x20,\n    0x80, 0x70, 0x52, 0x28, 0x28, 0x28\n);\n\n// 0x0700F918 - 0x0700F9F8\nstatic const Vtx bbh_seg7_vertex_0700F918[] = {\n    {{{  -818,    717,      0}, 0, {     0,    650}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -101,    717,   1024}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2252,    717,   1024}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -818,      0,   -255}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2252,      0,   -255}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2252,      0,   1024}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -818,      0,      0}, 0, {     0,    786}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -101,      0,      0}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -818,      0,      0}, 0, {     0,    650}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -101,      0,   1024}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2252,    717,  -1535}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -818,    717,   -357}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2252,    717,   -357}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -818,    717,  -1535}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0700F9F8 - 0x0700FA68\nstatic const Vtx bbh_seg7_vertex_0700F9F8[] = {\n    {{{  -818,    717,      0}, 0, {     0,    786}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2252,    717,   -255}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -818,    717,   -255}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -818,    717,      0}, 0, {     0,    650}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -101,    717,      0}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -101,    717,   1024}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2252,    717,   1024}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0700FA68 - 0x0700FAE8\nstatic const Vtx bbh_seg7_vertex_0700FA68[] = {\n    {{{  -101,      0,    717}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -50,      0,    563}, 0, {   478,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -101,      0,    563}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -50,      0,    717}, 0, {   478,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1945,      0,   1075}, 0, {   478,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2098,      0,   1024}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2098,      0,   1075}, 0, {   478,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1945,      0,   1024}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700FAE8 - 0x0700FBA8\nstatic const Vtx bbh_seg7_vertex_0700FAE8[] = {\n    {{{ -1125,    512,    922}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1740,    512,   1024}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1125,    512,   1024}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1740,    512,    922}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -101,    512,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,    512,    102}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -101,    512,    102}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,    512,      0}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1637,      0,  -1535}, 0, {   698,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1484,      0,  -1586}, 0, {   624,   1008}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1637,      0,  -1586}, 0, {   698,   1008}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1484,      0,  -1535}, 0, {   624,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700FBA8 - 0x0700FBE8\nstatic const Vtx bbh_seg7_vertex_0700FBA8[] = {\n    {{{ -1740,     72,    614}, 0, {  -332,   1680}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,    102,    614}, 0, {   478,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1740,    102,    614}, 0, {  -364,   1680}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,     72,    614}, 0, {   512,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0700FBE8 - 0x0700FCA8\nstatic const Vtx bbh_seg7_vertex_0700FBE8[] = {\n    {{{ -1125,      0,    922}, 0, {   480,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1125,    512,   1024}, 0, {     0,    552}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1125,      0,   1024}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1125,    512,    922}, 0, {   480,    552}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1740,      0,   1024}, 0, {   480,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1740,    512,    922}, 0, {     0,    552}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1740,      0,    922}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1740,    512,   1024}, 0, {   478,    552}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -716,      0,    102}, 0, {   480,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -716,    512,    102}, 0, {   478,    552}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -716,    512,      0}, 0, {     0,    552}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -716,      0,      0}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700FCA8 - 0x0700FD68\nstatic const Vtx bbh_seg7_vertex_0700FCA8[] = {\n    {{{ -1689,     92,   -255}, 0, {   608,    268}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1689,     -9,   -255}, 0, {   716,    268}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1689,     -9,    563}, 0, {    58,   1576}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1689,     92,    563}, 0, {   -48,   1576}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1689,     92,    563}, 0, {   -48,   1576}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1689,     -9,    563}, 0, {    58,   1576}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1381,     -9,    563}, 0, {   482,   1744}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1381,     92,    563}, 0, {   372,   1744}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1381,     92,    563}, 0, {   372,   1744}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1381,     -9,   -255}, 0, {  1138,    436}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1381,     92,   -255}, 0, {  1030,    436}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1381,     -9,    563}, 0, {   482,   1744}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700FD68 - 0x0700FE28\nstatic const Vtx bbh_seg7_vertex_0700FD68[] = {\n    {{{ -1330,     72,   -255}, 0, {   274,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1330,    102,   -255}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1330,    102,    614}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1330,     72,    614}, 0, {   274,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1740,     72,    614}, 0, {   274,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1740,    102,   -255}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1740,     72,   -255}, 0, {   274,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1740,    102,    614}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1330,    102,   -255}, 0, {  2012,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1740,    102,   -255}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1740,    102,    614}, 0, {     0,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,    102,    614}, 0, {  2012,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700FE28 - 0x0700FF28\nstatic const Vtx bbh_seg7_vertex_0700FE28[] = {\n    {{{ -2252,    102,  -1535}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1842,    102,  -1330}, 0, {  4056,    552}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1842,    102,  -1535}, 0, {  4056,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2047,    102,   -357}, 0, {  2012,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2047,    102,  -1330}, 0, {  2012,    552}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2252,    102,   -357}, 0, {     0,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -818,    102,  -1535}, 0, { 14276,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,    102,  -1330}, 0, { 12232,    552}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,    102,   -357}, 0, { 12232,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,    102,  -1330}, 0, { 10188,    552}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,    102,  -1535}, 0, { 10188,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -818,    102,   -357}, 0, { 14276,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2149,    154,    717}, 0, {   990,   1500}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2149,    154,    614}, 0, {   990,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2252,    154,    512}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2252,    154,    819}, 0, {     0,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700FF28 - 0x07010018\nstatic const Vtx bbh_seg7_vertex_0700FF28[] = {\n    {{{ -1228,      0,  -1330}, 0, {  3034,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1023,      0,  -1330}, 0, {  4056,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1023,    102,  -1330}, 0, {  4056,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1842,      0,  -1535}, 0, { -1052,    992}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1842,    102,  -1535}, 0, { -1052,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1842,    102,  -1330}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1842,      0,  -1330}, 0, {     0,    992}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1228,      0,  -1330}, 0, {     0,    992}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1228,    102,  -1535}, 0, { -1052,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1228,      0,  -1535}, 0, { -1052,    992}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1228,    102,  -1330}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1842,    102,  -1330}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2047,    102,  -1330}, 0, { -1052,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2047,      0,  -1330}, 0, { -1052,    988}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1842,      0,  -1330}, 0, {     0,    988}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07010018 - 0x070100C8\nstatic const Vtx bbh_seg7_vertex_07010018[] = {\n    {{{ -1023,      0,   -357}, 0, {  4822,    992}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1023,    102,  -1330}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1023,      0,  -1330}, 0, {     0,    992}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1228,      0,  -1330}, 0, {  3034,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1023,    102,  -1330}, 0, {  4056,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1228,    102,  -1330}, 0, {  3034,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2047,      0,  -1330}, 0, {     0,    992}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2047,    102,   -357}, 0, {  4822,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2047,      0,   -357}, 0, {  4822,    992}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2047,    102,  -1330}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1023,    102,   -357}, 0, {  4822,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070100C8 - 0x070101A8\nstatic const Vtx bbh_seg7_vertex_070100C8[] = {\n    {{{ -1637,    256,  -1535}, 0, { -1734,   1280}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -818,    717,  -1535}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2252,    717,  -1535}, 0, { -3778,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1484,    256,  -1535}, 0, { -1222,   1280}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2252,      0,  -1535}, 0, { -3778,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1637,      0,  -1535}, 0, { -1734,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -818,      0,  -1535}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1484,      0,  -1535}, 0, { -1222,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -101,    256,    563}, 0, {  -540,   1280}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -101,    256,    717}, 0, {     0,   1280}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -101,    717,   1024}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -101,    717,      0}, 0, { -2414,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -101,      0,      0}, 0, { -2414,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -101,      0,    563}, 0, {  -540,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070101A8 - 0x07010298\nstatic const Vtx bbh_seg7_vertex_070101A8[] = {\n    {{{  -818,    717,  -1535}, 0, { -4118,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -818,      0,  -1535}, 0, { -4118,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -818,      0,      0}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -101,      0,    717}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -101,    717,   1024}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -101,    256,    717}, 0, {     0,   1280}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -101,      0,   1024}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2252,      0,  -1535}, 0, {  8484,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2252,    717,   1024}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2252,      0,   1024}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2252,    717,  -1535}, 0, {  8484,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -101,    717,      0}, 0, {  2352,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -818,      0,      0}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -101,      0,      0}, 0, {  2352,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -818,    717,      0}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07010298 - 0x07010388\nstatic const Vtx bbh_seg7_vertex_07010298[] = {\n    {{{  -101,    256,    717}, 0, {     0,   1280}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -50,    256,    717}, 0, {     0,   1280}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -50,      0,    717}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -818,    717,  -1535}, 0, { -4118,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -818,      0,      0}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -818,    717,      0}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1945,      0,   1024}, 0, {  6100,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1945,    256,   1024}, 0, {  6100,   1280}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -101,      0,   1024}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -101,    717,   1024}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2252,    717,   1024}, 0, {  7122,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2098,    256,   1024}, 0, {  6610,   1280}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2252,      0,   1024}, 0, {  7122,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2098,      0,   1024}, 0, {  6610,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -101,      0,    717}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07010388 - 0x07010478\nstatic const Vtx bbh_seg7_vertex_07010388[] = {\n    {{{ -2098,      0,   1075}, 0, {  6610,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2098,    256,   1024}, 0, {  6610,   1280}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2098,    256,   1075}, 0, {  6610,   1280}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -50,    256,    563}, 0, {  -542,   1280}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -101,      0,    563}, 0, {  -542,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -50,      0,    563}, 0, {  -542,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -101,    256,    563}, 0, {  -542,   1280}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2098,    256,   1024}, 0, {  6610,   1280}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1945,    256,   1075}, 0, {  6100,   1280}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2098,    256,   1075}, 0, {  6610,   1280}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1945,    256,   1024}, 0, {  6100,   1280}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1945,    256,   1024}, 0, {  6100,   1280}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1945,      0,   1075}, 0, {  6100,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1945,    256,   1075}, 0, {  6100,   1280}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1945,      0,   1024}, 0, {  6100,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07010478 - 0x07010568\nstatic const Vtx bbh_seg7_vertex_07010478[] = {\n    {{{ -1637,    256,  -1535}, 0, { -1734,   1280}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1637,      0,  -1535}, 0, { -1734,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1637,      0,  -1586}, 0, { -1734,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2098,      0,   1075}, 0, {  6610,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2098,      0,   1024}, 0, {  6610,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2098,    256,   1024}, 0, {  6610,   1280}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -101,    256,    563}, 0, {  -542,   1280}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -50,    256,    563}, 0, {  -542,   1280}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -50,    256,    717}, 0, {     0,   1280}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -101,    256,    717}, 0, {     0,   1280}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1484,    256,  -1586}, 0, { -1222,   1280}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1484,      0,  -1535}, 0, { -1222,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1484,    256,  -1535}, 0, { -1222,   1280}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1484,      0,  -1586}, 0, { -1222,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1637,    256,  -1586}, 0, { -1734,   1280}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07010568 - 0x07010668\nstatic const Vtx bbh_seg7_vertex_07010568[] = {\n    {{{ -1637,    256,  -1586}, 0, { -1734,   1280}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1484,    256,  -1535}, 0, { -1222,   1280}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1637,    256,  -1535}, 0, { -1734,   1280}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1484,    256,  -1586}, 0, { -1222,   1280}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2252,      0,    512}, 0, {  1672,   2012}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{ -2149,    154,    614}, 0, {  1330,   1572}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{ -2149,      0,    614}, 0, {  1330,   2012}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{ -2252,    154,    512}, 0, {  1672,   1572}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{ -2149,      0,    614}, 0, {  1330,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2149,    154,    614}, 0, {  1330,   1572}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2149,    154,    717}, 0, {   990,   1572}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2149,      0,    717}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2149,      0,    717}, 0, {   990,   2012}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{ -2149,    154,    717}, 0, {   990,   1572}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{ -2252,    154,    819}, 0, {   650,   1572}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{ -2252,      0,    819}, 0, {   650,   2012}, {0x59, 0x00, 0x5a, 0xff}}},\n};\n\n// 0x07010668 - 0x07010768\nstatic const Vtx bbh_seg7_vertex_07010668[] = {\n    {{{ -1279,    614,   -255}, 0, {  4822,    260}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -818,      0,   -255}, 0, {  7122,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -818,    717,   -255}, 0, {  7122,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2047,    102,   -357}, 0, {   990,   1720}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1791,    614,   -357}, 0, {  -286,    260}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1791,    102,   -357}, 0, {  -286,   1720}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2252,    717,   -357}, 0, {  2012,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2252,    102,   -357}, 0, {  2012,   1720}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2047,      0,   -357}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -818,    717,   -357}, 0, { -5140,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1279,    614,   -357}, 0, { -2840,    260}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1023,      0,   -357}, 0, { -4118,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1279,    102,   -357}, 0, { -2840,   1720}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1023,    102,   -357}, 0, { -4118,   1720}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -818,    102,   -357}, 0, { -5140,   1720}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1279,    102,   -255}, 0, {  4822,   1720}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07010768 - 0x07010858\nstatic const Vtx bbh_seg7_vertex_07010768[] = {\n    {{{  -818,      0,   -255}, 0, {  7122,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1791,    102,   -255}, 0, {  2268,   1720}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2252,      0,   -255}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1279,    102,   -255}, 0, {  4822,   1720}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1791,    614,   -255}, 0, {  2268,    260}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2252,    717,   -255}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1279,    614,   -255}, 0, {  4822,    260}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -818,    717,   -255}, 0, {  7122,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1791,    614,   -255}, 0, {  2778,    260}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1791,    614,   -357}, 0, {  2778,    260}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1279,    614,   -357}, 0, {   224,    260}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1791,    102,   -255}, 0, {  2778,   1720}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1791,    614,   -357}, 0, {  2778,    260}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1791,    614,   -255}, 0, {  2778,    260}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,    614,   -255}, 0, {   224,    260}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07010858 - 0x07010908\nstatic const Vtx bbh_seg7_vertex_07010858[] = {\n    {{{ -1279,    102,   -255}, 0, {   224,   1720}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1791,    102,   -357}, 0, {  2778,   1720}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1791,    102,   -255}, 0, {  2778,   1720}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1791,    102,   -255}, 0, {  2778,   1720}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1791,    102,   -357}, 0, {  2778,   1720}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1791,    614,   -357}, 0, {  2778,    260}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,    614,   -255}, 0, {   224,    260}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1279,    614,   -357}, 0, {   224,    260}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1279,    102,   -357}, 0, {   224,   1720}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1279,    102,   -255}, 0, {   224,   1720}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1279,    102,   -357}, 0, {   224,   1720}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07010908 - 0x07010988\nstatic const Vtx bbh_seg7_vertex_07010908[] = {\n    {{{ -1125,      0,    922}, 0, {  3034,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1740,      0,    922}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1740,    512,    922}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1125,    512,    922}, 0, {  3034,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -101,    512,    102}, 0, {  3034,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,    512,    102}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,      0,    102}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -101,      0,    102}, 0, {  3034,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07010988 - 0x07010A08\nstatic const Vtx bbh_seg7_vertex_07010988[] = {\n    {{{ -1791,    614,   -357}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1279,    102,   -357}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1791,    102,   -357}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1279,    614,   -357}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1279,    614,   -255}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1791,    614,   -255}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1791,    102,   -255}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1279,    102,   -255}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07010A08 - 0x07010A48\nstatic const Vtx bbh_seg7_vertex_07010A08[] = {\n    {{{  -818,      0,  -1535}, 0, {  8144,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2252,      0,  -1535}, 0, { -6160,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2252,      0,   -306}, 0, { -6160,   5076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -818,      0,   -306}, 0, {  8144,   5076}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07010A48 - 0x07010B58\nstatic const Gfx bbh_seg7_dl_07010A48[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_0700F8B8.l, 1),\n    gsSPLight(&bbh_seg7_lights_0700F8B8.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0700F918, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 5,  9,  7, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(10, 13, 11, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700F9F8, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  6,  1, 0x0),\n    gsSPLight(&bbh_seg7_lights_0700F8D0.l, 1),\n    gsSPLight(&bbh_seg7_lights_0700F8D0.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0700FA68, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPLight(&bbh_seg7_lights_0700F8E8.l, 1),\n    gsSPLight(&bbh_seg7_lights_0700F8E8.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0700FAE8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07010B58 - 0x07010C30\nstatic const Gfx bbh_seg7_dl_07010B58[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_0700F8B8.l, 1),\n    gsSPLight(&bbh_seg7_lights_0700F8B8.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0700FBA8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPLight(&bbh_seg7_lights_0700F8E8.l, 1),\n    gsSPLight(&bbh_seg7_lights_0700F8E8.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0700FBE8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPLight(&bbh_seg7_lights_0700F900.l, 1),\n    gsSPLight(&bbh_seg7_lights_0700F900.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0700FCA8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07010C30 - 0x07010D00\nstatic const Gfx bbh_seg7_dl_07010C30[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bbh_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_0700F8B8.l, 1),\n    gsSPLight(&bbh_seg7_lights_0700F8B8.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0700FD68, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPLight(&bbh_seg7_lights_0700F8E8.l, 1),\n    gsSPLight(&bbh_seg7_lights_0700F8E8.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0700FE28, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  5,  3, 0x0,  0,  4,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 6, 10,  9, 0x0,  6,  8, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07010D00 - 0x07010D90\nstatic const Gfx bbh_seg7_dl_07010D00[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_0700FF28, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07010018, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP1Triangle( 0, 10,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07010D90 - 0x07011058\nstatic const Gfx bbh_seg7_dl_07010D90[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_070100C8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  0, 0x0,  4,  0,  2, 0x0),\n    gsSP2Triangles( 6,  1,  3, 0x0,  7,  6,  3, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12,  8, 11, 0x0, 12, 13,  8, 0x0),\n    gsSPVertex(bbh_seg7_vertex_070101A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07010298, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles( 7, 10,  9, 0x0,  7, 11, 10, 0x0),\n    gsSP2Triangles(12, 10, 11, 0x0, 12, 11, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07010388, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07010478, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07010568, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07010668, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  7,  6, 0x0),\n    gsSP2Triangles( 8,  3,  5, 0x0,  9,  4,  6, 0x0),\n    gsSP2Triangles( 9, 10,  4, 0x0, 11,  5, 12, 0x0),\n    gsSP2Triangles(11,  8,  5, 0x0, 13, 11, 12, 0x0),\n    gsSP2Triangles(13, 12, 10, 0x0,  9, 13, 10, 0x0),\n    gsSP2Triangles( 9, 14, 13, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07010768, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 8, 10, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07010858, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP1Triangle( 0, 10,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07011058 - 0x070110A0\nstatic const Gfx bbh_seg7_dl_07011058[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09002800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_07010908, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070110A0 - 0x070110E8\nstatic const Gfx bbh_seg7_dl_070110A0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bbh_seg7_texture_07002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_07010988, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070110E8 - 0x07011120\nstatic const Gfx bbh_seg7_dl_070110E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09009000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_07010A08, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07011120 - 0x07011228\nconst Gfx bbh_seg7_dl_07011120[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_07010A48),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_07010B58),\n    gsSPDisplayList(bbh_seg7_dl_07010C30),\n    gsSPDisplayList(bbh_seg7_dl_07010D00),\n    gsSPDisplayList(bbh_seg7_dl_07010D90),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_07011058),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_070110A0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_070110E8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/19/model.inc.c",
    "content": "// 0x07011228 - 0x07011240\nstatic const Lights1 bbh_seg7_lights_07011228 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07011240 - 0x070112C0\nstatic const Vtx bbh_seg7_vertex_07011240[] = {\n    {{{ -1074,    819,    819}, 0, {  4056,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -818,    819,    819}, 0, { -1052,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -818,    819,    461}, 0, { -1052,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1074,    819,    461}, 0, {  4056,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -818,    819,    717}, 0, { -1052,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,    819,    717}, 0, { -2074,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,    819,    563}, 0, { -2074,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -818,    819,    563}, 0, { -1052,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070112C0 - 0x070113A0\nstatic const Vtx bbh_seg7_vertex_070112C0[] = {\n    {{{  -818,   1075,    563}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -767,   1075,    563}, 0, {   480,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -767,   1075,    717}, 0, {   480,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -818,   1075,    717}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2252,   1331,  -1330}, 0, {   990,    908}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2047,   1331,  -1535}, 0, {   844,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2252,   1331,  -1535}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -818,   1331,  -1330}, 0, {     0,    908}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -818,   1331,  -1535}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,   1331,  -1535}, 0, {   114,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2252,   1638,  -1535}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -818,   1638,   1024}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2252,   1638,   1024}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -818,   1638,  -1535}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x070113A0 - 0x07011490\nstatic const Vtx bbh_seg7_vertex_070113A0[] = {\n    {{{ -1279,   1382,   1024}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,    922,   1126}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,    922,   1024}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -869,   1382,   1024}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -869,   1382,   1126}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1279,   1382,   1126}, 0, {     0,   2012}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1279,   1382,   1024}, 0, {   990,   2012}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -869,    922,   1024}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -869,   1382,   1126}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -869,   1382,   1024}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -869,    922,   1126}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1279,    922,   1024}, 0, {   990,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,    922,   1126}, 0, {     0,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    922,   1126}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    922,   1024}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07011490 - 0x07011570\nstatic const Vtx bbh_seg7_vertex_07011490[] = {\n    {{{ -1279,    922,   1024}, 0, {  1118,   1756}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -869,    922,   1024}, 0, {    96,   1756}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -818,    819,   1024}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1279,   1382,   1024}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,   1382,   1126}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,    922,   1126}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2252,   1638,   1024}, 0, {  3546,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -818,   1638,   1024}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1279,   1382,   1024}, 0, {  1118,    608}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -869,   1382,   1024}, 0, {    96,    608}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2252,    819,   1024}, 0, {  3546,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2047,   1280,   1024}, 0, {  3034,    864}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1893,   1280,   1024}, 0, {  2650,    864}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1893,   1280,   1075}, 0, {  2650,    864}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07011570 - 0x07011660\nstatic const Vtx bbh_seg7_vertex_07011570[] = {\n    {{{  -818,   1075,    717}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -767,   1075,    717}, 0, {   478,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -767,    819,    717}, 0, {   480,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -818,    819,    717}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -767,   1075,    563}, 0, {   480,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -818,    819,    563}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -767,    819,    563}, 0, {   480,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -818,   1075,    563}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1893,   1280,   1024}, 0, {  2650,    864}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1893,   1024,   1075}, 0, {  2650,   1500}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1893,   1280,   1075}, 0, {  2650,    864}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1893,   1024,   1024}, 0, {  2650,   1500}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2252,    819,   1024}, 0, {  3546,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1893,    973,   1024}, 0, {  2650,   1628}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1279,    922,   1024}, 0, {  1118,   1756}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07011660 - 0x07011740\nstatic const Vtx bbh_seg7_vertex_07011660[] = {\n    {{{ -2047,   1280,   1024}, 0, {  3034,    864}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1893,   1280,   1075}, 0, {  2650,    864}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2047,   1280,   1075}, 0, {  3034,    864}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2047,   1024,   1075}, 0, {  3034,   1500}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2047,   1024,   1024}, 0, {  3034,   1500}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2047,   1280,   1024}, 0, {  3034,    864}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1893,   1024,   1075}, 0, {  2650,   1500}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2047,   1024,   1024}, 0, {  3034,   1500}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2047,   1024,   1075}, 0, {  3034,   1500}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2047,   1280,   1075}, 0, {  3034,    864}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1893,   1024,   1024}, 0, {  2650,   1500}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2252,    819,   1024}, 0, {  3546,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2047,    973,   1024}, 0, {  3034,   1628}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1893,    973,   1024}, 0, {  2650,   1628}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07011740 - 0x07011830\nstatic const Vtx bbh_seg7_vertex_07011740[] = {\n    {{{  -818,    819,   1024}, 0, {  3800,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -818,   1331,   1024}, 0, {  3800,    736}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -818,   1075,    717}, 0, {  3034,   1372}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -818,    819,    717}, 0, {  3034,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -818,   1638,   1024}, 0, {  3800,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -818,   1638,  -1535}, 0, { -2586,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -818,   1331,  -1535}, 0, { -2586,    736}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -818,   1638,  -1535}, 0, {  3544,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2252,   1331,  -1535}, 0, {     0,    736}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -818,   1331,  -1535}, 0, {  3544,    736}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2252,   1638,  -1535}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2252,   1331,  -1535}, 0, {  3546,    736}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2252,   1638,   1024}, 0, { -2840,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2252,   1331,   1024}, 0, { -2840,    736}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2252,   1638,  -1535}, 0, {  3546,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07011830 - 0x07011930\nstatic const Vtx bbh_seg7_vertex_07011830[] = {\n    {{{  -818,   1075,    563}, 0, {  2650,   1372}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -818,   1331,    358}, 0, {  2140,    736}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -818,    819,    358}, 0, {  2140,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1893,   1280,   1024}, 0, {  2650,    864}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2047,   1280,   1024}, 0, {  3034,    864}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2252,   1638,   1024}, 0, {  3546,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1279,   1382,   1024}, 0, {  1118,    608}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1279,    922,   1024}, 0, {  1118,   1756}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1893,    973,   1024}, 0, {  2650,   1628}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2047,    973,   1024}, 0, {  3034,   1628}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2252,    819,   1024}, 0, {  3546,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -818,   1075,    717}, 0, {  3034,   1372}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -818,    819,    563}, 0, {  2650,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1740,   1638,  -1023}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1330,   1638,  -1023}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1330,    819,  -1023}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07011930 - 0x07011990\nstatic const Vtx bbh_seg7_vertex_07011930[] = {\n    {{{  -818,   1075,    717}, 0, {  3034,   1372}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -818,   1331,   1024}, 0, {  3800,    736}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -818,   1331,    358}, 0, {  2140,    736}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1740,   1638,  -1023}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1330,    819,  -1023}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1740,    819,  -1023}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07011990 - 0x07011A90\nstatic const Vtx bbh_seg7_vertex_07011990[] = {\n    {{{ -1893,    819,    512}, 0, {     0,    648}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1893,    922,    512}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1893,    922,    614}, 0, {   480,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2252,   1024,    614}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1740,   1024,    614}, 0, { -1562,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1740,    819,    614}, 0, { -1562,   1332}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2252,    819,    614}, 0, {   990,   1332}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2098,    922,    512}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1893,    819,    512}, 0, {     0,    648}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2098,    819,    512}, 0, {   990,    648}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1893,    922,    512}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2098,    922,    512}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2098,    819,    512}, 0, {     0,    648}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2098,    819,    614}, 0, {   480,    648}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2098,    922,    614}, 0, {   480,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1893,    819,    614}, 0, {   480,    648}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07011A90 - 0x07011B80\nstatic const Vtx bbh_seg7_vertex_07011A90[] = {\n    {{{ -2252,   1331,  -1330}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2252,    819,  -1330}, 0, {     0,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2047,    819,  -1535}, 0, {   990,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1330,   1331,   1024}, 0, { -4628,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1330,    819,  -1023}, 0, {  5588,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1330,   1331,  -1023}, 0, {  5588,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1330,    819,   1024}, 0, { -4630,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1740,   1331,  -1023}, 0, { -4118,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1740,    819,   1024}, 0, {  6100,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1740,   1331,   1024}, 0, {  6100,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1740,    819,  -1023}, 0, { -4118,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1023,   1331,  -1535}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1023,    819,  -1535}, 0, {     0,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -818,    819,  -1330}, 0, {   990,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -818,   1331,  -1330}, 0, {   990,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07011B80 - 0x07011C70\nstatic const Vtx bbh_seg7_vertex_07011B80[] = {\n    {{{  -818,   1331,  -1330}, 0, { -7440,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -818,    819,    358}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -818,   1331,    358}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2252,   1331,  -1330}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2047,    819,  -1535}, 0, {   990,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2047,   1331,  -1535}, 0, {   990,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1023,   1331,  -1535}, 0, {  5078,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2047,    819,  -1535}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1023,    819,  -1535}, 0, {  5078,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2047,   1331,  -1535}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2252,    819,  -1330}, 0, {  7122,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2252,   1331,  -1330}, 0, {  7122,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2252,   1331,   1024}, 0, { -4630,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2252,    819,   1024}, 0, { -4630,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -818,    819,  -1330}, 0, { -7440,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07011C70 - 0x07011CF0\nstatic const Vtx bbh_seg7_vertex_07011C70[] = {\n    {{{ -1740,   1638,  -1023}, 0, {     0,    580}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1740,   1331,   1024}, 0, { 10188,   1808}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1740,   1638,   1024}, 0, { 10188,    580}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1740,   1331,  -1023}, 0, {     0,   1808}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1330,   1638,   1024}, 0, { 10188,    580}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1330,   1331,  -1023}, 0, {     0,   1808}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1330,   1638,  -1023}, 0, {     0,    580}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1330,   1331,   1024}, 0, { 10188,   1808}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07011CF0 - 0x07011DF0\nstatic const Vtx bbh_seg7_vertex_07011CF0[] = {\n    {{{ -2252,    819,  -1535}, 0, {-12292,  12230}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2252,    819,   1024}, 0, { 13256,  12230}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1074,    819,    461}, 0, {  7632,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -818,    819,  -1535}, 0, {-12292,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1074,    819,    819}, 0, { 11212,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -818,    819,    461}, 0, {  7632,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -818,    819,   1024}, 0, { 13256,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -818,    819,    819}, 0, { 11212,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2252,   1024,   1024}, 0, { -2072,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1740,   1024,   1024}, 0, { -2072,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1740,   1024,    614}, 0, { -6160,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2252,   1024,    614}, 0, { -6160,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2098,    922,    614}, 0, { -6160,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1893,    922,    614}, 0, { -6160,  -1566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1893,    922,    512}, 0, { -7184,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2098,    922,    512}, 0, { -7184,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07011DF0 - 0x07011E48\nstatic const Gfx bbh_seg7_dl_07011DF0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_0900A000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_07011228.l, 1),\n    gsSPLight(&bbh_seg7_lights_07011228.a, 2),\n    gsSPVertex(bbh_seg7_vertex_07011240, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07011E48 - 0x07011EA0\nstatic const Gfx bbh_seg7_dl_07011E48[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_070112C0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07011EA0 - 0x07012078\nstatic const Gfx bbh_seg7_dl_07011EA0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_070113A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07011490, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  1,  7,  2, 0x0),\n    gsSP2Triangles( 1,  9,  7, 0x0,  9,  8,  7, 0x0),\n    gsSP2Triangles( 0,  2, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07011570, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07011660, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  3,  5,  9, 0x0),\n    gsSP2Triangles( 6, 10,  7, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07011740, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  1,  5,  6, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7, 10,  8, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 14, 12, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07011830, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  3, 0x0),\n    gsSP2Triangles( 7,  3,  6, 0x0,  5,  4,  9, 0x0),\n    gsSP2Triangles( 5,  9, 10, 0x0,  0, 11,  1, 0x0),\n    gsSP2Triangles( 2, 12,  0, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07011930, 6, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSP1Triangle( 3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07012078 - 0x070120E0\nstatic const Gfx bbh_seg7_dl_07012078[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_07011990, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070120E0 - 0x070121A8\nstatic const Gfx bbh_seg7_dl_070120E0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09002800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_07011A90, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07011B80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07011C70, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070121A8 - 0x07012220\nstatic const Gfx bbh_seg7_dl_070121A8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09009000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_07011CF0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  2,  5,  3, 0x0),\n    gsSP2Triangles( 1,  6,  4, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07012220 - 0x07012318\nconst Gfx bbh_seg7_dl_07012220[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_07011DF0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_07011E48),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_07011EA0),\n    gsSPDisplayList(bbh_seg7_dl_07012078),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_070120E0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_070121A8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/2/model.inc.c",
    "content": "// 0x070076C0 - 0x070077B0\nstatic const Vtx bbh_seg7_vertex_070076C0[] = {\n    {{{  1044,    819,   1659}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1044,    922,   2048}, 0, {  3852,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1044,    819,   2048}, 0, {  3852,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1044,    922,   1659}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1044,    819,   1659}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2048,    819,   1659}, 0, { -9024,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2048,    922,   1659}, 0, { -9024,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1044,    922,   1659}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1229,    819,    389}, 0, { -3300,    990}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  1659,    922,    389}, 0, {   990,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  1229,    922,    389}, 0, { -3300,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   389,    819,    389}, 0, {   990,    990}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   389,    922,    389}, 0, {   990,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   389,    922,   2048}, 0, {-15564,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   389,    819,   2048}, 0, {-15564,    990}, {0x00, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070077B0 - 0x070078A0\nstatic const Vtx bbh_seg7_vertex_070077B0[] = {\n    {{{  1659,    922,    389}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  1659,    819,    389}, 0, {     0,    990}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  1659,    819,    799}, 0, {  4056,    990}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  1659,    922,    799}, 0, {  4056,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   717,    922,    389}, 0, {  3238,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   389,    922,    389}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   389,    819,    389}, 0, {     0,    990}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   717,    819,    389}, 0, {  3238,    990}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  2048,    922,    799}, 0, {  3852,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  1659,    819,    799}, 0, {     0,    990}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  2048,    819,    799}, 0, {  3852,    990}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  1229,    819,    389}, 0, { -3300,    990}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  1659,    819,    389}, 0, {   990,    990}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  1659,    922,    389}, 0, {   990,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  1659,    922,    799}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070078A0 - 0x07007940\nstatic const Gfx bbh_seg7_dl_070078A0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_070076C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_070077B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 8, 14,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007940 - 0x070079B0\nconst Gfx bbh_seg7_dl_07007940[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_070078A0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/20/model.inc.c",
    "content": "// 0x07012318 - 0x07012330\nstatic const Lights1 bbh_seg7_lights_07012318 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07012330 - 0x07012430\nstatic const Vtx bbh_seg7_vertex_07012330[] = {\n    {{{ -1100,   1382,   1075}, 0, {   308,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1100,   1178,   1075}, 0, {   308,    152}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1074,   1152,   1075}, 0, {   138,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1100,   1126,   1075}, 0, {     0,    152}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1100,    922,   1075}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1049,    922,   1075}, 0, {   308,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1049,   1126,   1075}, 0, {   308,    152}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1279,   1178,   1075}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1279,   1126,   1075}, 0, {   308,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1100,   1126,   1075}, 0, {   308,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1100,   1178,   1075}, 0, {     0,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1049,   1178,   1075}, 0, {     0,    152}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1049,   1382,   1075}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1049,   1178,   1075}, 0, {   308,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,   1126,   1075}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,   1178,   1075}, 0, {   308,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07012430 - 0x07012470\nstatic const Vtx bbh_seg7_vertex_07012430[] = {\n    {{{ -1049,   1178,   1075}, 0, {   308,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1074,   1152,   1075}, 0, {   138,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1049,   1126,   1075}, 0, {     0,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,   1126,   1075}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07012470 - 0x07012510\nstatic const Gfx bbh_seg7_dl_07012470[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bbh_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_07012318.l, 1),\n    gsSPLight(&bbh_seg7_lights_07012318.a, 2),\n    gsSPVertex(bbh_seg7_vertex_07012330, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  3,  6,  2, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7,  9,  2, 0x0),\n    gsSP2Triangles( 7,  2, 10, 0x0,  0,  2, 11, 0x0),\n    gsSP2Triangles( 0, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07012430, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07012510 - 0x07012580\nconst Gfx bbh_seg7_dl_07012510[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_07012470),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/21/model.inc.c",
    "content": "// 0x07012580 - 0x07012680\nstatic const Vtx bbh_seg7_vertex_07012580[] = {\n    {{{ -1049,   1178,   1075}, 0, {   542,    536}, {0x09, 0xb3, 0xff, 0x80}}},\n    {{{  -869,   1382,   1075}, 0, {   990,    990}, {0x09, 0xb3, 0xff, 0x80}}},\n    {{{ -1049,   1382,   1075}, 0, {   542,    990}, {0x09, 0xb3, 0xff, 0x80}}},\n    {{{ -1279,    922,   1075}, 0, {     0,      0}, {0x09, 0xb3, 0xff, 0x80}}},\n    {{{ -1100,    922,   1075}, 0, {   416,      0}, {0x09, 0xb3, 0xff, 0x80}}},\n    {{{ -1100,   1126,   1075}, 0, {   416,    422}, {0x09, 0xb3, 0xff, 0x80}}},\n    {{{ -1279,   1126,   1075}, 0, {     0,    422}, {0x09, 0xb3, 0xff, 0x80}}},\n    {{{ -1049,    922,   1075}, 0, {   542,      0}, {0x09, 0xb3, 0xff, 0x80}}},\n    {{{  -869,    922,   1075}, 0, {   990,      0}, {0x09, 0xb3, 0xff, 0x80}}},\n    {{{  -869,   1126,   1075}, 0, {   990,    422}, {0x09, 0xb3, 0xff, 0x80}}},\n    {{{ -1049,   1126,   1075}, 0, {   542,    422}, {0x09, 0xb3, 0xff, 0x80}}},\n    {{{ -1279,   1178,   1075}, 0, {     0,    536}, {0x09, 0xb3, 0xff, 0x80}}},\n    {{{ -1100,   1382,   1075}, 0, {   416,    990}, {0x09, 0xb3, 0xff, 0x80}}},\n    {{{ -1279,   1382,   1075}, 0, {     0,    990}, {0x09, 0xb3, 0xff, 0x80}}},\n    {{{ -1100,   1178,   1075}, 0, {   416,    536}, {0x09, 0xb3, 0xff, 0x80}}},\n    {{{  -869,   1178,   1075}, 0, {   990,    536}, {0x09, 0xb3, 0xff, 0x80}}},\n};\n\n// 0x07012680 - 0x070126E8\nstatic const Gfx bbh_seg7_dl_07012680[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, spooky_0900B000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_07012580, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070126E8 - 0x07012758\nconst Gfx bbh_seg7_dl_070126E8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_07012680),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/22/model.inc.c",
    "content": "// 0x07012758 - 0x07012770\nstatic const Lights1 bbh_seg7_lights_07012758 = gdSPDefLights1(\n    0x3c, 0x3c, 0x3c,\n    0x96, 0x96, 0x96, 0x28, 0x28, 0x28\n);\n\n// 0x07012770 - 0x07012788\nstatic const Lights1 bbh_seg7_lights_07012770 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07012788 - 0x070127C8\nstatic const Vtx bbh_seg7_vertex_07012788[] = {\n    {{{  3584,    819,  -1535}, 0, { -5140,   8142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2253,    819,  -1535}, 0, {  8144,   8142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2253,    819,   -101}, 0, {  8144,  -6164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3584,    819,   -101}, 0, { -5140,  -6164}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070127C8 - 0x07012848\nstatic const Vtx bbh_seg7_vertex_070127C8[] = {\n    {{{  3584,   1638,   -101}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1126,   1638,  -1535}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3584,   1638,  -1535}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1126,   1638,   -101}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2253,    819,  -1535}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1126,    819,  -1535}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1126,    819,   -101}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2253,    819,   -101}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07012848 - 0x070128A8\nstatic const Vtx bbh_seg7_vertex_07012848[] = {\n    {{{  1331,    922,  -1228}, 0, {     0,    990}, {0x41, 0x57, 0x41, 0xff}}},\n    {{{  1331,   1075,  -1433}, 0, {   990,      0}, {0x41, 0x57, 0x41, 0xff}}},\n    {{{  1229,   1075,  -1330}, 0, {     0,      0}, {0x41, 0x57, 0x41, 0xff}}},\n    {{{  1331,    922,  -1228}, 0, {     0,    990}, {0x40, 0x57, 0x41, 0xff}}},\n    {{{  1434,    922,  -1330}, 0, {   990,    990}, {0x40, 0x57, 0x41, 0xff}}},\n    {{{  1331,   1075,  -1433}, 0, {   990,      0}, {0x40, 0x57, 0x41, 0xff}}},\n};\n\n// 0x070128A8 - 0x070129A8\nstatic const Vtx bbh_seg7_vertex_070128A8[] = {\n    {{{  1331,    819,  -1433}, 0, {   990,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1331,    922,  -1433}, 0, {   990,    844}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1434,    922,  -1330}, 0, {     0,    844}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1434,    819,  -1330}, 0, {     0,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1434,    819,  -1330}, 0, {  1414,   2012}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{  1434,    922,  -1330}, 0, {  1414,    648}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{  1331,    922,  -1228}, 0, {     0,    648}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{  1331,    819,  -1228}, 0, {     0,   2012}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{  1331,    819,  -1228}, 0, {     0,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1331,    922,  -1228}, 0, {     0,    844}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1229,    922,  -1330}, 0, {   990,    844}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1229,    819,  -1330}, 0, {   990,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1690,   1075,   -101}, 0, {   862,   1372}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1331,   1638,   -101}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1946,   1638,   -101}, 0, {  1500,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1536,   1075,   -101}, 0, {   478,   1372}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070129A8 - 0x07012A88\nstatic const Vtx bbh_seg7_vertex_070129A8[] = {\n    {{{  2253,    819,   -613}, 0, {  1756,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2150,    819,   -613}, 0, {  1756,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2150,   1126,   -613}, 0, {  1756,   1244}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2253,   1126,   -613}, 0, {  1756,   1244}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2253,   1126,   -613}, 0, {  1756,   1244}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{  2150,   1126,   -613}, 0, {  1756,   1244}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{  2150,   1229,   -716}, 0, {  1502,    988}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{  2150,   1126,   -613}, 0, {  1756,   1244}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2150,    819,   -613}, 0, {  1756,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2150,    819,   -306}, 0, {  2524,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2150,   1229,   -716}, 0, {  1502,    988}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2150,   1638,   -306}, 0, {  2524,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2150,   1229,   -921}, 0, {   990,    988}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2150,   1638,  -1330}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07012A88 - 0x07012B88\nstatic const Vtx bbh_seg7_vertex_07012A88[] = {\n    {{{  2253,   1638,   -306}, 0, {  2524,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2253,   1126,   -613}, 0, {  1756,   1244}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2253,   1229,   -716}, 0, {  1502,    988}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2253,   1229,   -716}, 0, {  1502,    988}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2150,   1229,   -716}, 0, {  1502,    988}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2150,   1229,   -921}, 0, {   990,    988}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2253,   1126,   -613}, 0, {  1756,   1244}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{  2150,   1229,   -716}, 0, {  1502,    988}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{  2253,   1229,   -716}, 0, {  1502,    988}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{  2253,   1229,   -921}, 0, {   990,    988}, {0x00, 0xa7, 0x5a, 0xff}}},\n    {{{  2150,   1229,   -921}, 0, {   990,    988}, {0x00, 0xa7, 0x5a, 0xff}}},\n    {{{  2150,   1126,  -1023}, 0, {   734,   1244}, {0x00, 0xa7, 0x5a, 0xff}}},\n    {{{  2253,   1229,   -921}, 0, {   990,    988}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2150,   1126,  -1023}, 0, {   734,   1244}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2150,   1229,   -921}, 0, {   990,    988}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2150,   1638,  -1330}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07012B88 - 0x07012C78\nstatic const Vtx bbh_seg7_vertex_07012B88[] = {\n    {{{  2150,   1126,  -1023}, 0, {   734,   1244}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2150,   1638,  -1330}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2150,    819,  -1330}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2150,    819,  -1023}, 0, {   734,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2253,   1229,   -921}, 0, {   990,    988}, {0x00, 0xa7, 0x5a, 0xff}}},\n    {{{  2150,   1126,  -1023}, 0, {   734,   1244}, {0x00, 0xa7, 0x5a, 0xff}}},\n    {{{  2253,   1126,  -1023}, 0, {   734,   1244}, {0x00, 0xa7, 0x5a, 0xff}}},\n    {{{  2253,   1126,  -1023}, 0, {   734,   1244}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2150,   1126,  -1023}, 0, {   734,   1244}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2150,    819,  -1023}, 0, {   734,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2253,    819,  -1023}, 0, {   734,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2253,    819,   -306}, 0, {  2524,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2253,    819,   -613}, 0, {  1756,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2253,   1126,   -613}, 0, {  1756,   1244}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2253,   1638,   -306}, 0, {  2524,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07012C78 - 0x07012D68\nstatic const Vtx bbh_seg7_vertex_07012C78[] = {\n    {{{  1946,    819,   -101}, 0, {  1500,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1690,    819,   -101}, 0, {   862,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1690,   1075,   -101}, 0, {   862,   1372}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2253,   1638,  -1330}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2253,   1638,   -306}, 0, {  2524,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2253,   1229,   -716}, 0, {  1502,    988}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2253,   1229,   -921}, 0, {   990,    988}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2253,    819,  -1330}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2253,   1126,  -1023}, 0, {   734,   1244}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2253,    819,  -1023}, 0, {   734,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1536,   1075,   -101}, 0, {   478,   1372}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1536,    819,   -101}, 0, {   478,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1331,    819,   -101}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1331,   1638,   -101}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1946,   1638,   -101}, 0, {  1500,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07012D68 - 0x07012E58\nstatic const Vtx bbh_seg7_vertex_07012D68[] = {\n    {{{  1536,   1075,   -101}, 0, {   478,   1372}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1690,   1075,    -50}, 0, {   862,   1372}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1536,   1075,    -50}, 0, {   478,   1372}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1331,    819,  -1535}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1946,    819,  -1535}, 0, {  1500,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1946,   1638,  -1535}, 0, {  1500,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1331,   1638,  -1535}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1126,   1638,   -306}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1126,    819,  -1330}, 0, {  2522,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1126,   1638,  -1330}, 0, {  2522,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1126,    819,   -306}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1690,   1075,   -101}, 0, {   862,   1372}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1690,    819,   -101}, 0, {   862,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1690,    819,    -50}, 0, {   862,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1690,   1075,    -50}, 0, {   862,   1372}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07012E58 - 0x07012F38\nstatic const Vtx bbh_seg7_vertex_07012E58[] = {\n    {{{  1536,    819,    -50}, 0, {   478,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1536,   1075,   -101}, 0, {   478,   1372}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1536,   1075,    -50}, 0, {   478,   1372}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1536,   1075,   -101}, 0, {   478,   1372}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1690,   1075,   -101}, 0, {   862,   1372}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1690,   1075,    -50}, 0, {   862,   1372}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1690,    819,    -50}, 0, {   862,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1690,    819,   -101}, 0, {   862,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,    819,   -101}, 0, {   478,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,    819,    -50}, 0, {   478,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,    819,   -101}, 0, {   478,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1331,    922,  -1433}, 0, {   990,    844}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1331,   1075,  -1433}, 0, {   990,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1434,    922,  -1330}, 0, {     0,    844}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07012F38 - 0x07012F68\nstatic const Vtx bbh_seg7_vertex_07012F38[] = {\n    {{{  1331,    922,  -1228}, 0, {     0,    844}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1229,   1075,  -1330}, 0, {   990,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1229,    922,  -1330}, 0, {   990,    844}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07012F68 - 0x07013028\nstatic const Vtx bbh_seg7_vertex_07012F68[] = {\n    {{{  3584,   1638,  -1535}, 0, {  5590,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2458,    819,  -1535}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3584,    819,  -1535}, 0, {  5590,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2458,   1638,  -1535}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3584,    819,   -101}, 0, {  5590,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2458,    819,   -101}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2458,   1638,   -101}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3584,   1638,   -101}, 0, {  5590,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3584,    819,   -101}, 0, {  7122,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3584,   1638,   -101}, 0, {  7122,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3584,   1638,  -1535}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3584,    819,  -1535}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07013028 - 0x07013118\nstatic const Vtx bbh_seg7_vertex_07013028[] = {\n    {{{  2458,   1638,   -204}, 0, {   224,      0}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  2458,    819,   -204}, 0, {   224,   2012}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  2355,    819,   -306}, 0, {   734,   2012}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  2253,   1638,  -1330}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2355,    819,  -1330}, 0, {   224,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2355,   1638,  -1330}, 0, {   224,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2355,   1638,  -1330}, 0, {   224,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2355,    819,  -1330}, 0, {   224,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2458,    819,  -1433}, 0, {   734,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2458,   1638,  -1433}, 0, {   734,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2458,   1638,  -1433}, 0, {   734,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2458,    819,  -1433}, 0, {   734,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2458,    819,  -1535}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2458,   1638,  -1535}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2253,    819,  -1330}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07013118 - 0x07013208\nstatic const Vtx bbh_seg7_vertex_07013118[] = {\n    {{{  2458,   1638,   -101}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2458,    819,   -204}, 0, {   224,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2458,   1638,   -204}, 0, {   224,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2458,    819,   -101}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1946,   1638,  -1535}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1946,    819,  -1535}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1946,    819,  -1433}, 0, {   224,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2458,   1638,   -204}, 0, {   224,      0}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  2355,    819,   -306}, 0, {   734,   2012}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  2355,   1638,   -306}, 0, {   734,      0}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  2355,   1638,   -306}, 0, {   734,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2355,    819,   -306}, 0, {   734,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2253,    819,   -306}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2253,   1638,   -306}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1946,   1638,  -1433}, 0, {   224,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07013208 - 0x070132F8\nstatic const Vtx bbh_seg7_vertex_07013208[] = {\n    {{{  1946,   1638,  -1433}, 0, {   224,      0}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  1946,    819,  -1433}, 0, {   224,   2012}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  2048,    819,  -1330}, 0, {   734,   2012}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  2048,   1638,  -1330}, 0, {   734,      0}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  2048,   1638,  -1330}, 0, {   734,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,    819,  -1330}, 0, {   734,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2150,    819,  -1330}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2150,   1638,  -1330}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1331,   1638,   -204}, 0, {   224,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1229,    819,   -306}, 0, {   734,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1229,   1638,   -306}, 0, {   734,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2048,   1638,   -306}, 0, {   224,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1946,    819,   -204}, 0, {   734,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1946,   1638,   -204}, 0, {   734,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2048,    819,   -306}, 0, {   224,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x070132F8 - 0x070133E8\nstatic const Vtx bbh_seg7_vertex_070132F8[] = {\n    {{{  2150,   1638,   -306}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,    819,   -306}, 0, {   224,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,   1638,   -306}, 0, {   224,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1946,   1638,   -204}, 0, {   734,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1946,    819,   -204}, 0, {   734,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1946,    819,   -101}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1946,   1638,   -101}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2150,    819,   -306}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1229,   1638,   -306}, 0, {   734,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1126,    819,   -306}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1126,   1638,   -306}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1229,    819,   -306}, 0, {   734,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1126,   1638,  -1330}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1126,    819,  -1330}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1229,    819,  -1330}, 0, {   224,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070133E8 - 0x070134D8\nstatic const Vtx bbh_seg7_vertex_070133E8[] = {\n    {{{  1331,   1638,   -204}, 0, {   224,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1331,    819,   -204}, 0, {   224,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1229,    819,   -306}, 0, {   734,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1331,   1638,   -101}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1331,    819,   -204}, 0, {   224,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1331,   1638,   -204}, 0, {   224,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1331,    819,   -101}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,   1638,  -1330}, 0, {   224,      0}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{  1331,    819,  -1433}, 0, {   734,   2012}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{  1331,   1638,  -1433}, 0, {   734,      0}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{  1331,   1638,  -1433}, 0, {   734,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1331,    819,  -1433}, 0, {   734,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1331,    819,  -1535}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1331,   1638,  -1535}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,    819,  -1330}, 0, {   224,   2012}, {0x5a, 0x00, 0x59, 0xff}}},\n};\n\n// 0x070134D8 - 0x07013508\nstatic const Vtx bbh_seg7_vertex_070134D8[] = {\n    {{{  1126,   1638,  -1330}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1229,    819,  -1330}, 0, {   224,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1229,   1638,  -1330}, 0, {   224,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07013508 - 0x07013550\nstatic const Gfx bbh_seg7_dl_07013508[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_0900A000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_07012758.l, 1),\n    gsSPLight(&bbh_seg7_lights_07012758.a, 2),\n    gsSPVertex(bbh_seg7_vertex_07012788, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07013550 - 0x070135A8\nstatic const Gfx bbh_seg7_dl_07013550[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_07012770.l, 1),\n    gsSPLight(&bbh_seg7_lights_07012770.a, 2),\n    gsSPVertex(bbh_seg7_vertex_070127C8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070135A8 - 0x070135E0\nstatic const Gfx bbh_seg7_dl_070135A8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_07012848, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070135E0 - 0x070137E0\nstatic const Gfx bbh_seg7_dl_070135E0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_070128A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_070129A8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7, 11, 0x0,  7,  9, 11, 0x0),\n    gsSP2Triangles(12, 10, 11, 0x0, 12, 11, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07012A88, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 3,  5, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07012B88, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 11, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07012C78, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  3,  8, 0x0),\n    gsSP2Triangles( 3,  6,  8, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 10, 12, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07012D68, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07012E58, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 0, 10,  1, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07012F38, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070137E0 - 0x07013838\nstatic const Gfx bbh_seg7_dl_070137E0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bbh_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_07012F68, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07013838 - 0x070139A8\nstatic const Gfx bbh_seg7_dl_07013838[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_07013028, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 3, 14,  4, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07013118, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 4,  6, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07013208, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bbh_seg7_vertex_070132F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  0,  7,  1, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_070133E8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 7, 14,  8, 0x0),\n    gsSPVertex(bbh_seg7_vertex_070134D8, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070139A8 - 0x07013AA0\nconst Gfx bbh_seg7_dl_070139A8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_07013508),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_07013550),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_070135A8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_070135E0),\n    gsSPDisplayList(bbh_seg7_dl_070137E0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_07013838),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/23/model.inc.c",
    "content": "// 0x07013AA0 - 0x07013B80\nstatic const Vtx bbh_seg7_vertex_07013AA0[] = {\n    {{{  2140,   1126,   -306}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  2140,   1536,   -716}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  2140,   1126,   -716}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  1432,   1280,  -1519}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  1142,   1280,  -1229}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  1142,   1075,  -1229}, 0, {     0,    480}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  1432,   1075,  -1519}, 0, {   990,    480}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  1243,    928,  -1129}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  1533,    928,  -1418}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  2140,   1126,   -921}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  2140,   1536,  -1330}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  2140,   1126,  -1330}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  2140,   1536,   -921}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  2140,   1536,   -306}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n};\n\n// 0x07013B80 - 0x07013BE8\nstatic const Gfx bbh_seg7_dl_07013B80[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, spooky_0900A800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_07013AA0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0,  0, 13,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07013BE8 - 0x07013C58\nconst Gfx bbh_seg7_dl_07013BE8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_07013B80),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/24/model.inc.c",
    "content": "// 0x07013C58 - 0x07013C70\nstatic const Lights1 bbh_seg7_lights_07013C58 = gdSPDefLights1(\n    0x20, 0x20, 0x20,\n    0x50, 0x50, 0x50, 0x28, 0x28, 0x28\n);\n\n// 0x07013C70 - 0x07013C88\nstatic const Lights1 bbh_seg7_lights_07013C70 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07013C88 - 0x07013D08\nstatic const Vtx bbh_seg7_vertex_07013C88[] = {\n    {{{   512,      0,    -50}, 0, {   480,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   358,      0,   -101}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   358,      0,    -50}, 0, {   480,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,      0,   -101}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,    819,    -50}, 0, {   480,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,    819,   -101}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,    819,    -50}, 0, {   480,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,    819,   -101}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07013D08 - 0x07013DC8\nstatic const Vtx bbh_seg7_vertex_07013D08[] = {\n    {{{  1024,   1638,   -101}, 0, {   -98,   1074}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -716,   1638,   -101}, 0, {  1058,   1074}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -716,   1638,  -1535}, 0, {  1058,   -118}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1024,   1638,  -1535}, 0, {   -98,   -118}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   358,    256,   -101}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   512,    256,    -50}, 0, {   480,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   358,    256,    -50}, 0, {   480,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   512,    256,   -101}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   102,   1075,   -101}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   256,   1075,   -101}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   256,   1075,    -50}, 0, {   480,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   102,   1075,    -50}, 0, {   480,    990}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07013DC8 - 0x07013E08\nstatic const Vtx bbh_seg7_vertex_07013DC8[] = {\n    {{{  1024,      0,  -1535}, 0, { -7184,  10186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,      0,  -1535}, 0, { 10188,  10186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,      0,   -101}, 0, { 10188,  -4120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,      0,   -101}, 0, { -7184,  -4120}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07013E08 - 0x07013E48\nstatic const Vtx bbh_seg7_vertex_07013E08[] = {\n    {{{  -511,    205,  -1228}, 0, {     0,    990}, {0x41, 0x57, 0x41, 0xff}}},\n    {{{  -511,    358,  -1433}, 0, {   990,      0}, {0x41, 0x57, 0x41, 0xff}}},\n    {{{  -613,    358,  -1330}, 0, {     0,      0}, {0x41, 0x57, 0x41, 0xff}}},\n    {{{  -409,    205,  -1330}, 0, {   990,    990}, {0x41, 0x57, 0x41, 0xff}}},\n};\n\n// 0x07013E48 - 0x07013F38\nstatic const Vtx bbh_seg7_vertex_07013E48[] = {\n    {{{  -511,      0,  -1228}, 0, {     0,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -613,    205,  -1330}, 0, {   990,    844}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -613,      0,  -1330}, 0, {   990,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -511,    205,  -1228}, 0, {     0,    844}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -409,      0,  -1330}, 0, {  1414,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -409,    205,  -1330}, 0, {  1414,    648}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -511,    205,  -1228}, 0, {     0,    648}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -511,      0,  -1228}, 0, {     0,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -511,      0,  -1433}, 0, {   990,   2012}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{  -511,    205,  -1433}, 0, {   990,    844}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{  -409,      0,  -1330}, 0, {     0,   2012}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{  -409,    205,  -1330}, 0, {     0,    844}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{   358,      0,    -50}, 0, {   478,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   358,    256,   -101}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   358,    256,    -50}, 0, {   478,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07013F38 - 0x07014028\nstatic const Vtx bbh_seg7_vertex_07013F38[] = {\n    {{{   512,    256,   -101}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,      0,    -50}, 0, {   478,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,    256,    -50}, 0, {   478,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,      0,   -101}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   256,   1075,   -101}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   256,    819,   -101}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   256,    819,    -50}, 0, {   478,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   256,   1075,    -50}, 0, {   478,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   102,    819,    -50}, 0, {   478,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,   1075,   -101}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,   1075,    -50}, 0, {   478,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,    819,   -101}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   358,      0,    -50}, 0, {   478,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   358,      0,   -101}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   358,    256,   -101}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07014028 - 0x07014088\nstatic const Vtx bbh_seg7_vertex_07014028[] = {\n    {{{  -511,    205,  -1433}, 0, {   990,    844}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{  -511,    358,  -1433}, 0, {   990,      0}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{  -409,    205,  -1330}, 0, {     0,    844}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{  -511,    205,  -1228}, 0, {     0,    844}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -613,    358,  -1330}, 0, {   990,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -613,    205,  -1330}, 0, {   990,    844}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07014088 - 0x07014178\nstatic const Vtx bbh_seg7_vertex_07014088[] = {\n    {{{  -511,   1638,   -101}, 0, {     0,   2688}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   102,   1075,   -101}, 0, {  3034,    820}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -511,    819,   -101}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   819,      0,   -101}, 0, {     0,   2688}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   512,    256,   -101}, 0, {  1502,   1840}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   819,    819,   -101}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   512,      0,   -101}, 0, {  1502,   2688}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,    819,   -101}, 0, {  2778,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   819,    819,   -101}, 0, {  6612,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,    819,   -101}, 0, {  3800,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,   1075,   -101}, 0, {  3800,    820}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   819,   1638,   -101}, 0, {  6612,   2688}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -511,      0,   -101}, 0, {  6610,   2688}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -511,    819,   -101}, 0, {  6610,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   102,    819,   -101}, 0, {  3544,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07014178 - 0x07014268\nstatic const Vtx bbh_seg7_vertex_07014178[] = {\n    {{{  -716,    819,  -1330}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -716,   1638,  -1330}, 0, {     0,   2688}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -716,   1638,   -306}, 0, {  5078,   2688}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,   1075,   -101}, 0, {  3034,    820}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   102,    819,   -101}, 0, {  3034,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -511,    819,   -101}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1024,    819,   -306}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,   1638,   -306}, 0, {     0,   2688}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,   1638,  -1330}, 0, {  5078,   2688}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,    819,  -1330}, 0, {  5078,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,      0,   -306}, 0, {  5078,   2688}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,    819,  -1330}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,      0,  -1330}, 0, {     0,   2688}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,    819,   -306}, 0, {  5078,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -716,    819,   -306}, 0, {  5078,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07014268 - 0x07014368\nstatic const Vtx bbh_seg7_vertex_07014268[] = {\n    {{{   512,    256,   -101}, 0, {  1502,   1840}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   358,    256,   -101}, 0, {  2268,   1840}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,    819,   -101}, 0, {  2778,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -716,      0,  -1330}, 0, {  5078,   2688}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -716,    819,  -1330}, 0, {  5078,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -716,    819,   -306}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -716,      0,   -306}, 0, {     0,   2688}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   819,   1638,  -1535}, 0, {     0,   2688}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,   1638,  -1535}, 0, {  6612,   2688}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,    819,  -1535}, 0, {  6612,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   819,    819,  -1535}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   819,    819,  -1535}, 0, {  6612,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,      0,  -1535}, 0, {     0,   2688}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   819,      0,  -1535}, 0, {  6612,   2688}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,    819,  -1535}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,    819,   -101}, 0, {  3544,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07014368 - 0x07014458\nstatic const Vtx bbh_seg7_vertex_07014368[] = {\n    {{{   358,    256,   -101}, 0, {  2268,   1840}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   358,      0,   -101}, 0, {  2268,   2688}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -511,      0,   -101}, 0, {  6610,   2688}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   102,    819,   -101}, 0, {  3544,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,   1075,   -101}, 0, {  3800,    820}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   102,   1075,   -101}, 0, {  3034,    820}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -511,   1638,   -101}, 0, {     0,   2688}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   819,   1638,   -101}, 0, {  6612,   2688}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   819,   1638,  -1535}, 0, {   990,   2680}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   819,    819,  -1433}, 0, {   734,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   819,   1638,  -1433}, 0, {   734,   2684}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   819,   1638,  -1433}, 0, {   734,   2684}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   819,    819,  -1433}, 0, {   734,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   922,    819,  -1330}, 0, {   224,    -28}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   922,   1638,  -1330}, 0, {   224,   2684}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07014458 - 0x07014538\nstatic const Vtx bbh_seg7_vertex_07014458[] = {\n    {{{   922,    819,  -1330}, 0, {   734,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   922,      0,  -1330}, 0, {   734,   2684}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1024,      0,  -1330}, 0, {   990,   2684}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   922,   1638,  -1330}, 0, {   224,   2684}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   922,    819,  -1330}, 0, {   224,    -28}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1024,    819,  -1330}, 0, {     0,    -28}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1024,   1638,  -1330}, 0, {     0,   2688}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   819,   1638,  -1535}, 0, {   990,   2680}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   819,    819,  -1535}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   819,    819,  -1433}, 0, {   734,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   819,    819,  -1433}, 0, {   224,    -28}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   922,      0,  -1330}, 0, {   734,   2684}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   922,    819,  -1330}, 0, {   734,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   819,      0,  -1433}, 0, {   224,   2688}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07014538 - 0x07014638\nstatic const Vtx bbh_seg7_vertex_07014538[] = {\n    {{{   819,    819,  -1535}, 0, {     0,    -28}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   819,      0,  -1433}, 0, {   224,   2688}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   819,    819,  -1433}, 0, {   224,    -28}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   819,    819,   -204}, 0, {   224,    -28}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   819,      0,   -101}, 0, {     0,   2688}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   819,    819,   -101}, 0, {     0,    -28}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   922,    819,  -1330}, 0, {   734,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1024,      0,  -1330}, 0, {   990,   2684}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1024,    819,  -1330}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   819,      0,  -1535}, 0, {     0,   2688}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   922,    819,   -306}, 0, {   734,      0}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{   922,      0,   -306}, 0, {   734,   2684}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{   819,      0,   -204}, 0, {   224,   2688}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{  1024,    819,   -306}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   922,      0,   -306}, 0, {   734,   2684}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   922,    819,   -306}, 0, {   734,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07014638 - 0x07014738\nstatic const Vtx bbh_seg7_vertex_07014638[] = {\n    {{{   922,    819,   -306}, 0, {   734,      0}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{   819,      0,   -204}, 0, {   224,   2688}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{   819,    819,   -204}, 0, {   224,    -28}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{   819,    819,   -204}, 0, {   224,    -28}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   819,      0,   -204}, 0, {   224,   2688}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   819,      0,   -101}, 0, {     0,   2688}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,    819,   -306}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1024,      0,   -306}, 0, {   990,   2684}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   922,      0,   -306}, 0, {   734,   2684}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   922,   1638,   -306}, 0, {   224,   2684}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{   922,    819,   -306}, 0, {   224,    -28}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{   819,    819,   -204}, 0, {   734,      0}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{  1024,   1638,   -306}, 0, {     0,   2688}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   922,    819,   -306}, 0, {   224,    -28}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   922,   1638,   -306}, 0, {   224,   2684}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   819,   1638,   -204}, 0, {   734,   2684}, {0xa7, 0x00, 0xa6, 0xff}}},\n};\n\n// 0x07014738 - 0x07014838\nstatic const Vtx bbh_seg7_vertex_07014738[] = {\n    {{{   819,   1638,   -204}, 0, {   734,   2684}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   819,    819,   -204}, 0, {   734,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   819,    819,   -101}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   819,   1638,   -101}, 0, {   990,   2680}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,   1638,   -306}, 0, {     0,   2688}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1024,    819,   -306}, 0, {     0,    -28}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   922,    819,   -306}, 0, {   224,    -28}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -613,    819,  -1330}, 0, {   734,      0}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{  -511,      0,  -1433}, 0, {   224,   2688}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{  -511,    819,  -1433}, 0, {   224,    -28}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{  -716,    819,  -1330}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -613,      0,  -1330}, 0, {   734,   2684}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -613,    819,  -1330}, 0, {   734,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,    819,  -1433}, 0, {   224,    -28}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -511,      0,  -1433}, 0, {   224,   2688}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -511,      0,  -1535}, 0, {     0,   2688}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07014838 - 0x07014938\nstatic const Vtx bbh_seg7_vertex_07014838[] = {\n    {{{  -613,    819,  -1330}, 0, {   734,      0}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{  -613,      0,  -1330}, 0, {   734,   2684}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{  -511,      0,  -1433}, 0, {   224,   2688}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{  -511,    819,  -1433}, 0, {   224,    -28}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -511,      0,  -1535}, 0, {     0,   2688}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -511,    819,  -1535}, 0, {     0,    -28}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -716,    819,  -1330}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,      0,  -1330}, 0, {   990,   2684}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -613,      0,  -1330}, 0, {   734,   2684}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -613,   1638,  -1330}, 0, {   224,   2684}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{  -511,    819,  -1433}, 0, {   734,      0}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{  -511,   1638,  -1433}, 0, {   734,   2684}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{  -716,   1638,  -1330}, 0, {     0,   2688}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -613,    819,  -1330}, 0, {   224,    -28}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -613,   1638,  -1330}, 0, {   224,   2684}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -613,    819,  -1330}, 0, {   224,    -28}, {0x5a, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07014938 - 0x07014A28\nstatic const Vtx bbh_seg7_vertex_07014938[] = {\n    {{{  -511,   1638,   -204}, 0, {   734,   2684}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -511,    819,   -204}, 0, {   734,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -613,    819,   -306}, 0, {   224,    -28}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -511,   1638,  -1433}, 0, {   734,   2684}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -511,    819,  -1433}, 0, {   734,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -511,    819,  -1535}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -511,   1638,  -1535}, 0, {   990,   2680}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -716,   1638,  -1330}, 0, {     0,   2688}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,    819,  -1330}, 0, {     0,    -28}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -613,    819,  -1330}, 0, {   224,    -28}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -613,   1638,   -306}, 0, {   224,   2684}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -613,    819,   -306}, 0, {   224,    -28}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -716,    819,   -306}, 0, {     0,    -28}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -613,   1638,   -306}, 0, {   224,   2684}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -716,   1638,   -306}, 0, {     0,   2688}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07014A28 - 0x07014B28\nstatic const Vtx bbh_seg7_vertex_07014A28[] = {\n    {{{  -613,    819,   -306}, 0, {   734,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -613,      0,   -306}, 0, {   734,   2684}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -716,      0,   -306}, 0, {   990,   2684}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -716,    819,   -306}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -511,    819,   -204}, 0, {   224,    -28}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -613,      0,   -306}, 0, {   734,   2684}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -613,    819,   -306}, 0, {   734,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -511,      0,   -204}, 0, {   224,   2688}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -511,   1638,   -101}, 0, {   990,   2680}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -511,    819,   -101}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -511,    819,   -204}, 0, {   734,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -511,   1638,   -204}, 0, {   734,   2684}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -511,    819,   -101}, 0, {     0,    -28}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -511,      0,   -204}, 0, {   224,   2688}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -511,    819,   -204}, 0, {   224,    -28}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -511,      0,   -101}, 0, {     0,   2688}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07014B28 - 0x07014BC8\nstatic const Gfx bbh_seg7_dl_07014B28[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_07013C58.l, 1),\n    gsSPLight(&bbh_seg7_lights_07013C58.a, 2),\n    gsSPVertex(bbh_seg7_vertex_07013C88, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPLight(&bbh_seg7_lights_07013C70.l, 1),\n    gsSPLight(&bbh_seg7_lights_07013C70.a, 2),\n    gsSPVertex(bbh_seg7_vertex_07013D08, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07014BC8 - 0x07014C10\nstatic const Gfx bbh_seg7_dl_07014BC8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_0900A000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_07013C58.l, 1),\n    gsSPLight(&bbh_seg7_lights_07013C58.a, 2),\n    gsSPVertex(bbh_seg7_vertex_07013DC8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07014C10 - 0x07014C58\nstatic const Gfx bbh_seg7_dl_07014C10[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_07013C70.l, 1),\n    gsSPLight(&bbh_seg7_lights_07013C70.a, 2),\n    gsSPVertex(bbh_seg7_vertex_07013E08, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07014C58 - 0x07014D10\nstatic const Gfx bbh_seg7_dl_07014C58[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_07013E48, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07013F38, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07014028, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07014D10 - 0x07014FD8\nstatic const Gfx bbh_seg7_dl_07014D10[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_07014088, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07014178, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07014268, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  1, 15,  2, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07014368, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07014458, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07014538, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  0,  9,  1, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07014638, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0,  9, 11, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07014738, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07014838, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0,  9, 15, 10, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07014938, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  0,  2, 13, 0x0),\n    gsSP1Triangle(10, 12, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07014A28, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07014FD8 - 0x07015098\nconst Gfx bbh_seg7_dl_07014FD8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_07014B28),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_07014BC8),\n    gsSPDisplayList(bbh_seg7_dl_07014C10),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_07014C58),\n    gsSPDisplayList(bbh_seg7_dl_07014D10),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/25/model.inc.c",
    "content": "// 0x07015098 - 0x07015198\nstatic const Vtx bbh_seg7_vertex_07015098[] = {\n    {{{  -306,    819,  -1125}, 0, { -2074,  -1564}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -204,    819,  -1330}, 0, { -1564,  -2588}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -306,    819,  -1535}, 0, { -2074,  -3610}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   819,    819,  -1330}, 0, {  3546,  -2588}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1024,    819,  -1535}, 0, {  4568,  -3610}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   819,    819,   -306}, 0, {  3546,   2520}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1024,    819,   -101}, 0, {  4568,   3542}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -204,    819,  -1023}, 0, { -1564,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -716,    819,  -1125}, 0, { -4118,  -1564}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -306,    819,   -921}, 0, { -2074,   -542}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   102,    819,   -921}, 0, {     0,   -544}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   614,    819,  -1023}, 0, {  2524,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -511,    819,   -511}, 0, { -3096,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -716,    819,   -101}, 0, { -4118,   3544}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -306,    819,   -613}, 0, { -2074,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -204,    819,   -511}, 0, { -1564,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07015198 - 0x07015298\nstatic const Vtx bbh_seg7_vertex_07015198[] = {\n    {{{  -716,    819,   -101}, 0, { -4118,   3544}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -511,    819,   -204}, 0, { -3096,   3032}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -511,    819,   -511}, 0, { -3096,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -204,    819,   -511}, 0, { -1564,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   512,    819,   -613}, 0, {  2012,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -306,    819,   -613}, 0, { -2074,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1024,    819,   -101}, 0, {  4568,   3542}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -204,    819,   -204}, 0, { -1564,   3032}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   512,    819,   -306}, 0, {  2012,   2520}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   819,    819,   -306}, 0, {  3546,   2520}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   102,    819,   -613}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   614,    819,   -818}, 0, {  2524,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   102,    819,   -921}, 0, {     0,   -544}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   819,    819,   -613}, 0, {  3546,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   614,    819,  -1023}, 0, {  2524,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   819,    819,   -818}, 0, {  3546,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07015298 - 0x07015398\nstatic const Gfx bbh_seg7_dl_07015298[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_07015098, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  0,  7,  1, 0x0),\n    gsSP2Triangles( 8,  7,  0, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles(11,  7, 10, 0x0,  8,  9,  7, 0x0),\n    gsSP2Triangles( 8, 12,  9, 0x0,  8, 13, 12, 0x0),\n    gsSP2Triangles(12, 14,  9, 0x0, 12, 15, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07015198, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  6,  7, 0x0,  0,  7,  1, 0x0),\n    gsSP2Triangles( 3,  7,  8, 0x0,  6,  8,  7, 0x0),\n    gsSP2Triangles( 6,  9,  8, 0x0,  3,  8,  4, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0, 13, 15, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07015398 - 0x07015408\nconst Gfx bbh_seg7_dl_07015398[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_07015298),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/26/model.inc.c",
    "content": "// 0x07015408 - 0x07015508\nstatic const Vtx bbh_seg7_vertex_07015408[] = {\n    {{{   358,   1434,  -1525}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{   -50,   1024,  -1525}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{   358,   1024,  -1525}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  -410,    563,  -1519}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  -700,    563,  -1229}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  -700,    358,  -1229}, 0, {     0,    480}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  -410,    358,  -1519}, 0, {   990,    480}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  -599,    211,  -1129}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  -310,    211,  -1418}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{   358,    614,  -1525}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{   -50,    205,  -1525}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{   358,    205,  -1525}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{   -50,    614,  -1525}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  1014,    205,   -613}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  1014,    614,  -1023}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  1014,    205,  -1023}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0x9a}}},\n};\n\n// 0x07015508 - 0x070155E8\nstatic const Vtx bbh_seg7_vertex_07015508[] = {\n    {{{   358,   1434,  -1525}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{   -50,   1434,  -1525}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{   -50,   1024,  -1525}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  -706,    205,  -1023}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  -706,    614,   -613}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  -706,    205,   -613}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  -706,    614,  -1023}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  -706,   1024,  -1023}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  -706,   1434,  -1023}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  -706,   1434,   -613}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  -706,   1024,   -613}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  1014,    205,   -613}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  1014,    614,   -613}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  1014,    614,  -1023}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n};\n\n// 0x070155E8 - 0x07015628\nstatic const Vtx bbh_seg7_vertex_070155E8[] = {\n    {{{  1014,   1024,   -613}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  1014,   1434,   -613}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  1014,   1434,  -1023}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  1014,   1024,  -1023}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0x9a}}},\n};\n\n// 0x07015628 - 0x070156E0\nstatic const Gfx bbh_seg7_dl_07015628[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, spooky_0900A800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_07015408, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07015508, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_070155E8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070156E0 - 0x07015750\nconst Gfx bbh_seg7_dl_070156E0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_07015628),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/27/model.inc.c",
    "content": "// 0x07015750 - 0x07015840\nstatic const Vtx bbh_seg7_vertex_07015750[] = {\n    {{{  1014,    307,   -818}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1014,    410,   -716}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   963,    410,   -818}, 0, {   478,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1014,    512,   -818}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1014,    410,   -921}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1014,   1126,   -818}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1014,   1229,   -716}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   963,   1229,   -818}, 0, {   478,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1014,   1229,   -921}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1014,   1331,   -818}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -706,   1229,   -716}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -706,   1126,   -818}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -654,   1229,   -818}, 0, {   480,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -706,   1229,   -921}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -706,   1331,   -818}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07015840 - 0x07015930\nstatic const Vtx bbh_seg7_vertex_07015840[] = {\n    {{{  -706,    512,   -818}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -706,    410,   -716}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -654,    410,   -818}, 0, {   480,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -706,    307,   -818}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -706,    410,   -921}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   256,    410,  -1525}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   154,    512,  -1525}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   154,    410,  -1474}, 0, {   480,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   154,    307,  -1525}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    51,    410,  -1525}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    51,   1229,  -1525}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   154,   1126,  -1525}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   154,   1229,  -1474}, 0, {   480,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   256,   1229,  -1525}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   154,   1331,  -1525}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07015930 - 0x07015A20\nstatic const Gfx bbh_seg7_dl_07015930[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09006800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_07015750, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 3,  4,  2, 0x0,  4,  0,  2, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  5,  7, 0x0),\n    gsSP2Triangles( 6,  9,  7, 0x0,  9,  8,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSP2Triangles(13, 14, 12, 0x0, 14, 10, 12, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07015840, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 3,  4,  2, 0x0,  4,  0,  2, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  5,  7, 0x0),\n    gsSP2Triangles( 6,  9,  7, 0x0,  9,  8,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSP2Triangles(13, 14, 12, 0x0, 14, 10, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07015A20 - 0x07015A90\nconst Gfx bbh_seg7_dl_07015A20[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_07015930),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/28/model.inc.c",
    "content": "// 0x07015A90 - 0x07015AA8\nstatic const Lights1 bbh_seg7_lights_07015A90 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07015AA8 - 0x07015B98\nstatic const Vtx bbh_seg7_vertex_07015AA8[] = {\n    {{{  1024,   1741,   1140}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1024,   1843,   1345}, 0, {  2012,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1024,   1741,   1345}, 0, {  2012,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   307,   1741,   1345}, 0, {  2012,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   307,   1843,   1345}, 0, {  2012,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   307,   1843,   1140}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   307,   1741,   1140}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   307,   1741,   1140}, 0, {  6100,    990}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{   307,   1843,   1140}, 0, {  6100,      0}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{   410,   1843,   1038}, 0, {  5078,      0}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{   410,   1741,   1038}, 0, {  5078,    990}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{   410,   1741,   1038}, 0, {  5078,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   410,   1843,   1038}, 0, {  5078,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   922,   1843,   1038}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   922,   1741,   1038}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07015B98 - 0x07015C08\nstatic const Vtx bbh_seg7_vertex_07015B98[] = {\n    {{{   922,   1741,   1038}, 0, {     0,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   922,   1843,   1038}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1024,   1843,   1140}, 0, { -1052,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1024,   1741,   1140}, 0, { -1052,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1024,   1741,   1140}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1024,   1843,   1140}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1024,   1843,   1345}, 0, {  2012,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07015C08 - 0x07015C78\nstatic const Vtx bbh_seg7_vertex_07015C08[] = {\n    {{{   102,   1741,    218}, 0, {     0,    454}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,   1741,   -805}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   1741,   -805}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   1741,   1345}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2048,   1741,   1345}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2048,   1741,    218}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,   1741,    218}, 0, {     0,    612}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07015C78 - 0x07015D68\nstatic const Vtx bbh_seg7_vertex_07015C78[] = {\n    {{{  1229,   1922,   1843}, 0, {  2454,    880}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1229,   2150,   1843}, 0, {  2454,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1229,   2150,   1345}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -716,   1741,   -805}, 0, { -4118,   1604}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   205,   2150,   -805}, 0, {   480,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   2150,   -805}, 0, { -4118,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   205,   1741,   -805}, 0, {   480,   1604}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   2150,   -805}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -716,   1741,   1345}, 0, { -9740,   1604}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -716,   1741,   -805}, 0, {   990,   1604}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -716,   2150,   1345}, 0, { -9740,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,   2150,   1843}, 0, {  2454,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,   1922,   1345}, 0, {     0,    880}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,   2150,   1345}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,   1922,   1843}, 0, {  2454,    880}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07015D68 - 0x07015E58\nstatic const Vtx bbh_seg7_vertex_07015D68[] = {\n    {{{  2048,   1997,    410}, 0, {   922,    580}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,   1997,    563}, 0, {  1688,    580}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,   2150,   1345}, 0, {  5590,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1229,   1922,   1843}, 0, {  2454,    880}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1229,   2150,   1345}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1229,   1922,   1345}, 0, {     0,    880}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   102,   1922,   1843}, 0, {  3716,    880}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   512,   2150,   1843}, 0, {  2352,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   512,   1922,   1843}, 0, {  2352,    880}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   102,   2150,   1843}, 0, {  3716,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1229,   1922,   1843}, 0, {     0,    880}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   819,   1922,   1843}, 0, {  1330,    880}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   819,   2150,   1843}, 0, {  1330,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1229,   2150,   1843}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,   2150,    218}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07015E58 - 0x07015F58\nstatic const Vtx bbh_seg7_vertex_07015E58[] = {\n    {{{  -716,   2150,   1345}, 0, {  6440,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   102,   1741,   1345}, 0, {  3716,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -716,   1741,   1345}, 0, {  6440,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,   1997,    563}, 0, {  1688,    580}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,   1741,    563}, 0, {  1688,   1604}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,   1741,   1345}, 0, {  5590,   1604}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,   2150,   1345}, 0, {  5590,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,   1997,    410}, 0, {   922,    580}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,   2150,    218}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,   1741,    218}, 0, {     0,   1604}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,   1741,    410}, 0, {   922,   1604}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1229,   2150,   1345}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,   1741,   1345}, 0, { -2756,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1229,   1741,   1345}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,   2150,   1345}, 0, { -2756,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   102,   2150,   1345}, 0, {  3716,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07015F58 - 0x07016038\nstatic const Vtx bbh_seg7_vertex_07015F58[] = {\n    {{{   512,   2150,   1894}, 0, {  1246,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,   1922,   1843}, 0, {  1500,    880}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,   2150,   1843}, 0, {  1500,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,   1922,   1894}, 0, {  1246,    880}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   819,   2150,   1843}, 0, {  1500,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   819,   1922,   1894}, 0, {  1246,    880}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   819,   2150,   1894}, 0, {  1246,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   819,   1922,   1843}, 0, {  1500,    880}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2099,   1741,    410}, 0, {   -98,   1604}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2048,   1741,    563}, 0, {   666,   1604}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2099,   1741,    563}, 0, {   666,   1604}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2099,   1997,    563}, 0, {   666,    580}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2048,   1997,    410}, 0, {   -98,    580}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2099,   1997,    410}, 0, {   -98,    580}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07016038 - 0x07016118\nstatic const Vtx bbh_seg7_vertex_07016038[] = {\n    {{{  2099,   1997,    410}, 0, {   -98,    580}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,   1741,    410}, 0, {   -98,   1604}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2099,   1741,    410}, 0, {   -98,   1604}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2099,   1741,    563}, 0, {   666,   1604}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,   1741,    563}, 0, {   666,   1604}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,   1997,    563}, 0, {   666,    580}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2099,   1741,    410}, 0, {   -98,   1604}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2048,   1741,    410}, 0, {   -98,   1604}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2048,   1741,    563}, 0, {   666,   1604}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2099,   1997,    563}, 0, {   666,    580}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,   1997,    410}, 0, {   -98,    580}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2099,   1997,    563}, 0, {   666,    580}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2048,   1997,    563}, 0, {   666,    580}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2048,   1997,    410}, 0, {   -98,    580}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07016118 - 0x07016208\nstatic const Vtx bbh_seg7_vertex_07016118[] = {\n    {{{   102,   1922,   1345}, 0, {  3716,   1112}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1229,   1922,   1345}, 0, {     0,   1112}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1229,   1741,   1345}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   102,   1741,   1345}, 0, {  3716,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   102,   2150,    116}, 0, {   480,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   102,   1741,    218}, 0, {   990,   1604}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   102,   2150,    218}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -716,   1741,    116}, 0, {  1500,   1604}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  -716,   2150,    116}, 0, {  1500,      0}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  -613,   2150,    218}, 0, {   990,      0}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  -613,   1741,    218}, 0, {   990,   1604}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  -613,   1741,    218}, 0, {   990,   1604}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -613,   2150,    218}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -613,   2150,    423}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -613,   1741,    423}, 0, {     0,   1604}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07016208 - 0x070162F8\nstatic const Vtx bbh_seg7_vertex_07016208[] = {\n    {{{  -613,   1741,    423}, 0, {     0,   1604}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -613,   2150,    423}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -716,   2150,    526}, 0, {  -540,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -716,   1741,    526}, 0, {  -542,   1604}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   102,   2150,   -805}, 0, { -4118,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   102,   1741,   -497}, 0, { -2586,   1604}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   102,   2150,   -497}, 0, { -2586,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   102,   1741,   -805}, 0, { -4118,   1604}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,   1741,    218}, 0, {  9678,   1604}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,   2150,    218}, 0, {  9678,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,   2150,    218}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,   2150,    116}, 0, {   480,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   102,   1741,    116}, 0, {   480,   1604}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   102,   1741,    218}, 0, {   990,   1604}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   102,   1741,    218}, 0, {     0,   1604}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070162F8 - 0x070163F8\nstatic const Vtx bbh_seg7_vertex_070162F8[] = {\n    {{{   205,   1741,   -805}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,   2150,   -805}, 0, {  8144,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   205,   2150,   -805}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,   1741,   -805}, 0, {  8144,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,   1741,    116}, 0, {  4568,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,   2150,   -805}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,   1741,   -805}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,   2150,    116}, 0, {  4568,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   205,   2150,   -497}, 0, {  -542,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,   1741,   -805}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,   2150,   -805}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,   1741,   -497}, 0, {  -540,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,   1741,    116}, 0, {  8144,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   205,   2150,    116}, 0, {  8144,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,   2150,    116}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,   1741,    116}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070163F8 - 0x070164D8\nstatic const Vtx bbh_seg7_vertex_070163F8[] = {\n    {{{   102,   1922,   1345}, 0, {    36,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,   1922,   1843}, 0, {  2524,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1229,   1922,   1843}, 0, {  2524,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1229,   1922,   1345}, 0, {    36,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   410,   1843,   1038}, 0, {  -540,   1720}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   307,   1843,   1140}, 0, {     0,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   307,   1843,   1345}, 0, {   990,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,   1843,   1345}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,   1843,   1140}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   922,   1843,   1038}, 0, {  -540,    260}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   2150,    116}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   2150,    526}, 0, {     0,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -613,   2150,    423}, 0, {   990,   1400}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -613,   2150,    218}, 0, {   990,    580}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070164D8 - 0x07016558\nstatic const Vtx bbh_seg7_vertex_070164D8[] = {\n    {{{   205,   2355,    116}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,   1741,   -497}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,   2355,   -497}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,   1741,    116}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,   2355,   -497}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   102,   1741,    116}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   102,   2355,    116}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   102,   1741,   -497}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07016558 - 0x070165D8\nstatic const Vtx bbh_seg7_vertex_07016558[] = {\n    {{{   819,   1922,   1843}, 0, {     0,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,   1922,   1843}, 0, {  3036,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,   1922,   1894}, 0, {  3036,  -2588}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   819,   1922,   1894}, 0, {     0,  -2588}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,   1741,    116}, 0, {     0,   4564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2048,   1741,   -805}, 0, { 10868,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,   1741,   -805}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2048,   1741,    116}, 0, { 10868,   4564}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070165D8 - 0x070166B8\nstatic const Vtx bbh_seg7_vertex_070165D8[] = {\n    {{{   819,   2150,   1843}, 0, { -1048,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   819,   2150,   1894}, 0, { -1048,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   819,   2178,   1894}, 0, { -1048,   1740}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,   2150,   1894}, 0, {  2012,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,   2178,   1843}, 0, {  2012,   1740}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,   2178,   1894}, 0, {  2012,   1740}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,   2150,   1843}, 0, {  2012,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,   2178,   1843}, 0, {  2012,   1740}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   512,   2150,   1843}, 0, {  2012,   2010}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   102,   2150,   1843}, 0, {  6100,   2010}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   819,   2178,   1843}, 0, { -1048,   1740}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   717,   2765,   1843}, 0, {     0,  -4120}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   102,   2253,   1843}, 0, {  6100,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   614,   2765,   1843}, 0, {   988,  -4120}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070166B8 - 0x070167A8\nstatic const Vtx bbh_seg7_vertex_070166B8[] = {\n    {{{   819,   2178,   1894}, 0, { -1048,   1740}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   512,   2178,   1894}, 0, {  2012,   1740}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   512,   2178,   1843}, 0, {  2012,   1740}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   819,   2150,   1843}, 0, { -1048,   2010}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   819,   2178,   1843}, 0, { -1048,   1740}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1229,   2150,   1843}, 0, { -5136,   2010}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   819,   2150,   1843}, 0, { -1048,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   819,   2178,   1894}, 0, { -1048,   1740}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   819,   2178,   1843}, 0, { -1048,   1740}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   102,   2253,   1843}, 0, { -2072,      0}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{   614,   2765,    792}, 0, {  8416,  -5142}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{   614,   2765,   1843}, 0, { -2072,  -5142}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{   819,   2178,   1843}, 0, { -1048,   1740}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1229,   2253,   1843}, 0, { -5136,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   717,   2765,   1843}, 0, {     0,  -4120}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070167A8 - 0x07016888\nstatic const Vtx bbh_seg7_vertex_070167A8[] = {\n    {{{   102,   2253,   1843}, 0, { -2072,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,   2150,   1843}, 0, { -2072,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,   2150,   1345}, 0, {  2896,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,   2253,   1253}, 0, {  3816,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,   2253,   1843}, 0, { -2072,      0}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{   102,   2253,   1253}, 0, {  3816,      0}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{   614,   2765,    792}, 0, {  8416,  -5142}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{  1229,   2150,   1843}, 0, { -2072,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1229,   2253,   1843}, 0, { -2072,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1229,   2150,   1345}, 0, {  2896,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1229,   2253,   1253}, 0, {  3816,      0}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  1229,   2253,   1843}, 0, { -2072,      0}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{   717,   2765,   1843}, 0, { -2072,  -5142}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  1229,   2253,   1253}, 0, {  3816,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07016888 - 0x07016968\nstatic const Vtx bbh_seg7_vertex_07016888[] = {\n    {{{  2048,   3174,    423}, 0, {  2012,  -7186}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,   3174,    116}, 0, { -1052,  -7186}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,   2150,   -805}, 0, {-10248,   3032}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,   2150,   1345}, 0, { 11212,   3032}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   102,   2253,   1253}, 0, { -2072,   4054}, {0x00, 0xac, 0xa2, 0xff}}},\n    {{{   102,   2150,   1345}, 0, { -2072,   5076}, {0x00, 0xac, 0xa2, 0xff}}},\n    {{{  -716,   2150,   1345}, 0, {-10248,   5076}, {0x00, 0xac, 0xa2, 0xff}}},\n    {{{  -716,   3174,    423}, 0, {-10248,  -5142}, {0x00, 0xac, 0xa2, 0xff}}},\n    {{{   614,   2765,    792}, 0, {  3036,  -1054}, {0x00, 0xab, 0xa2, 0xff}}},\n    {{{   102,   2253,   1253}, 0, { -2072,   4054}, {0x00, 0xab, 0xa2, 0xff}}},\n    {{{  -716,   3174,    423}, 0, {-10248,  -5142}, {0x00, 0xab, 0xa2, 0xff}}},\n    {{{   717,   2765,    792}, 0, {  4056,  -1054}, {0x00, 0xab, 0xa2, 0xff}}},\n    {{{  2048,   3174,    423}, 0, { 17344,  -5142}, {0x00, 0xab, 0xa2, 0xff}}},\n    {{{  1229,   2253,   1253}, 0, {  9168,   4054}, {0x00, 0xab, 0xa2, 0xff}}},\n};\n\n// 0x07016968 - 0x07016A58\nstatic const Vtx bbh_seg7_vertex_07016968[] = {\n    {{{  2048,   2150,   1345}, 0, { 17344,   5076}, {0x00, 0xac, 0xa2, 0xff}}},\n    {{{  1229,   2253,   1253}, 0, {  9168,   4054}, {0x00, 0xac, 0xa2, 0xff}}},\n    {{{  2048,   3174,    423}, 0, { 17344,  -5142}, {0x00, 0xac, 0xa2, 0xff}}},\n    {{{  1229,   2150,   1345}, 0, {  9168,   5076}, {0x00, 0xac, 0xa2, 0xff}}},\n    {{{  1229,   2253,   1253}, 0, {  3816,      0}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{   717,   2765,   1843}, 0, { -2072,  -5142}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{   717,   2765,    792}, 0, {  8416,  -5142}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{   717,   2765,    792}, 0, {  3936,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   614,   2765,   1843}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   614,   2765,    792}, 0, {  3936,    570}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   717,   2765,   1843}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -716,   2150,   -805}, 0, {-10248,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -716,   3174,    116}, 0, { -1052,  -7186}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -716,   3174,    423}, 0, {  2012,  -7186}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -716,   2150,   1345}, 0, { 11212,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07016A58 - 0x07016B58\nstatic const Vtx bbh_seg7_vertex_07016A58[] = {\n    {{{  2048,   2150,   -805}, 0, { 17344,   5076}, {0x00, 0xac, 0x5e, 0xff}}},\n    {{{  -716,   3174,    116}, 0, {-10248,  -5142}, {0x00, 0xac, 0x5e, 0xff}}},\n    {{{  -716,   2150,   -805}, 0, {-10248,   5076}, {0x00, 0xac, 0x5e, 0xff}}},\n    {{{  2048,   3174,    116}, 0, { 17344,  -5142}, {0x00, 0xac, 0x5e, 0xff}}},\n    {{{  2048,   3174,    423}, 0, {-12292,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -716,   3174,    423}, 0, { 15300,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -716,   3174,    116}, 0, { 15300,  -2076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2048,   3174,    116}, 0, {-12292,  -2076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   205,   2355,    116}, 0, { -3092,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,   2355,   -497}, 0, {  3032,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,   3174,    116}, 0, { -3092,  -7186}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,   2150,   -497}, 0, {  3032,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,   2150,   -805}, 0, {  6100,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,   2150,    116}, 0, {  9164,   6098}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   205,   3174,    116}, 0, {  9168,  -4120}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,   3174,    116}, 0, { -7180,  -4120}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07016B58 - 0x07016C58\nstatic const Vtx bbh_seg7_vertex_07016B58[] = {\n    {{{   205,   2150,    116}, 0, {  9164,   6098}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,   3174,    116}, 0, { -7180,  -4120}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,   2150,    116}, 0, { -7184,   6098}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   102,   2355,   -497}, 0, { -2072,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   102,   2355,    116}, 0, {  4056,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   102,   3288,    218}, 0, {  5076,  -8322}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   102,   2150,    218}, 0, {  5076,   3032}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   102,   2150,    116}, 0, {  4056,   3032}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   205,   2355,   -497}, 0, {     0,  -5142}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,   1741,   -497}, 0, {   992,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   205,   1741,   -497}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,   2150,   -805}, 0, { -5136,   3032}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   102,   2150,   -497}, 0, { -2072,   3032}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,   2150,    218}, 0, { 11208,   6098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,   3288,    218}, 0, { 11208,  -5256}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,   3288,    218}, 0, { -8204,  -5256}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07016C58 - 0x07016D38\nstatic const Vtx bbh_seg7_vertex_07016C58[] = {\n    {{{  2048,   2150,    218}, 0, { 11208,   6098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,   3288,    218}, 0, { -8204,  -5256}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,   2150,    218}, 0, { -8204,   6098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   205,   2355,    116}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   102,   2355,   -497}, 0, {   988,   6098}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   205,   2355,   -497}, 0, {     0,   6098}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   102,   2355,    116}, 0, {   988,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   205,   1741,    116}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   102,   2355,    116}, 0, {   992,  -5142}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   205,   2355,    116}, 0, {     0,  -5142}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   205,   2355,   -497}, 0, {     0,  -5142}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,   2355,   -497}, 0, {   992,  -5142}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,   1741,   -497}, 0, {   992,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,   1741,    116}, 0, {   992,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07016D38 - 0x07016DC8\nstatic const Gfx bbh_seg7_dl_07016D38[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_07015A90.l, 1),\n    gsSPLight(&bbh_seg7_lights_07015A90.a, 2),\n    gsSPVertex(bbh_seg7_vertex_07015AA8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07015B98, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP1Triangle( 4,  5,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07016DC8 - 0x07016E10\nstatic const Gfx bbh_seg7_dl_07016DC8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_07015C08, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07016E10 - 0x07016FE8\nstatic const Gfx bbh_seg7_dl_07016E10[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_07015C78, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07015D68, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  6,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07015E58, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07015F58, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07016038, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  3,  5,  9, 0x0),\n    gsSP2Triangles( 0, 10,  1, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07016118, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07016208, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 8, 10, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07016FE8 - 0x07017050\nstatic const Gfx bbh_seg7_dl_07016FE8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_070162F8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07017050 - 0x070170B8\nstatic const Gfx bbh_seg7_dl_07017050[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bbh_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_070163F8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  4,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070170B8 - 0x07017100\nstatic const Gfx bbh_seg7_dl_070170B8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bbh_seg7_texture_07002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_070164D8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07017100 - 0x07017148\nstatic const Gfx bbh_seg7_dl_07017100[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09009000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_07016558, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07017148 - 0x07017378\nstatic const Gfx bbh_seg7_dl_07017148[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_070165D8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7, 11, 0x0, 12,  7,  9, 0x0),\n    gsSP2Triangles(12, 13,  7, 0x0, 13, 11,  7, 0x0),\n    gsSPVertex(bbh_seg7_vertex_070166B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0,  4, 13,  5, 0x0),\n    gsSP1Triangle( 4, 14, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_070167A8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  8, 13,  9, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07016888, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  8, 10, 0x0),\n    gsSP2Triangles(11, 10, 12, 0x0, 13, 11, 12, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07016968, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07016A58, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 12, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07016B58, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  4,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  3,  5, 0x0),\n    gsSP2Triangles(11, 12,  3, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07016C58, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  7, 13,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07017378 - 0x07017480\nconst Gfx bbh_seg7_dl_07017378[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_07016D38),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_07016DC8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_07016E10),\n    gsSPDisplayList(bbh_seg7_dl_07016FE8),\n    gsSPDisplayList(bbh_seg7_dl_07017050),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_070170B8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_07017100),\n    gsSPDisplayList(bbh_seg7_dl_07017148),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/29/model.inc.c",
    "content": "// 0x07017480 - 0x07017498\nstatic const Lights1 bbh_seg7_lights_07017480 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07017498 - 0x07017518\nstatic const Vtx bbh_seg7_vertex_07017498[] = {\n    {{{   102,   2372,   1132}, 0, {     0,    990}, {0x00, 0xab, 0xa2, 0xff}}},\n    {{{  -306,   2676,    858}, 0, {   990,      0}, {0x00, 0xab, 0xa2, 0xff}}},\n    {{{   102,   2676,    858}, 0, {     0,      0}, {0x00, 0xab, 0xa2, 0xff}}},\n    {{{  -306,   2372,   1132}, 0, {   990,    990}, {0x00, 0xab, 0xa2, 0xff}}},\n    {{{  1638,   2372,   1132}, 0, {     0,    990}, {0x00, 0xab, 0xa2, 0xff}}},\n    {{{  1229,   2676,    858}, 0, {   990,      0}, {0x00, 0xab, 0xa2, 0xff}}},\n    {{{  1638,   2676,    858}, 0, {     0,      0}, {0x00, 0xab, 0xa2, 0xff}}},\n    {{{  1229,   2372,   1132}, 0, {   990,    990}, {0x00, 0xab, 0xa2, 0xff}}},\n};\n\n// 0x07017518 - 0x07017570\nstatic const Gfx bbh_seg7_dl_07017518[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09006000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_07017480.l, 1),\n    gsSPLight(&bbh_seg7_lights_07017480.a, 2),\n    gsSPVertex(bbh_seg7_vertex_07017498, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07017570 - 0x070175E0\nconst Gfx bbh_seg7_dl_07017570[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_07017518),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/3/model.inc.c",
    "content": "// 0x070079B0 - 0x070079C8\nstatic const Lights1 bbh_seg7_lights_070079B0 = gdSPDefLights1(\n    0x3f, 0x51, 0x66,\n    0x9e, 0xcc, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x070079C8 - 0x070079E0\nstatic const Lights1 bbh_seg7_lights_070079C8 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x070079E0 - 0x07007AA0\nstatic const Vtx bbh_seg7_vertex_070079E0[] = {\n    {{{  1331,    512,   2038}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1741,    512,   2038}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1741,    102,   2038}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1331,    102,   2038}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -409,   1536,   2038}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,   1536,   2038}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,   1126,   2038}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -409,   1126,   2038}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1331,   1536,   2038}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1741,   1536,   2038}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1741,   1126,   2038}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1331,   1126,   2038}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07007AA0 - 0x07007AE0\nstatic const Vtx bbh_seg7_vertex_07007AA0[] = {\n    {{{   512,   1075,   2038}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   922,    666,   2038}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   512,    666,   2038}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   922,   1075,   2038}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07007AE0 - 0x07007B48\nstatic const Gfx bbh_seg7_dl_07007AE0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09006000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_070079B0.l, 1),\n    gsSPLight(&bbh_seg7_lights_070079B0.a, 2),\n    gsSPVertex(bbh_seg7_vertex_070079E0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007B48 - 0x07007B90\nstatic const Gfx bbh_seg7_dl_07007B48[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bbh_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_070079C8.l, 1),\n    gsSPLight(&bbh_seg7_lights_070079C8.a, 2),\n    gsSPVertex(bbh_seg7_vertex_07007AA0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007B90 - 0x07007C08\nconst Gfx bbh_seg7_dl_07007B90[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_07007AE0),\n    gsSPDisplayList(bbh_seg7_dl_07007B48),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/30/model.inc.c",
    "content": "// 0x070175E0 - 0x070176E0\nstatic const Vtx bbh_seg7_vertex_070175E0[] = {\n    {{{  -229,   1815,    466}, 0, {     0,    -48}, {0xff, 0xec, 0x40, 0x84}}},\n    {{{  -229,   2429,   1080}, 0, {     0,    974}, {0xff, 0xec, 0x40, 0x84}}},\n    {{{  -229,   2619,    909}, 0, {     0,    990}, {0xff, 0xec, 0x40, 0x84}}},\n    {{{  1306,   2005,    295}, 0, {     0,      0}, {0xff, 0xec, 0x40, 0x84}}},\n    {{{  1306,   2619,    909}, 0, {     0,    990}, {0xff, 0xec, 0x40, 0x84}}},\n    {{{  1562,   2619,    909}, 0, {   990,    990}, {0xff, 0xec, 0x40, 0x84}}},\n    {{{  1562,   2005,    295}, 0, {   990,      0}, {0xff, 0xec, 0x40, 0x84}}},\n    {{{  1306,   1815,    466}, 0, {     0,    -48}, {0xff, 0xec, 0x40, 0x84}}},\n    {{{  1306,   2429,   1080}, 0, {     0,    974}, {0xff, 0xec, 0x40, 0x84}}},\n    {{{  1562,   2429,   1080}, 0, {   990,    974}, {0xff, 0xec, 0x40, 0x84}}},\n    {{{  1562,   1815,    466}, 0, {   990,    -48}, {0xff, 0xec, 0x40, 0x84}}},\n    {{{  -229,   2005,    295}, 0, {     0,      0}, {0xff, 0xec, 0x40, 0x84}}},\n    {{{    26,   1815,    466}, 0, {   990,    -48}, {0xff, 0xec, 0x40, 0x84}}},\n    {{{    26,   2005,    295}, 0, {   990,      0}, {0xff, 0xec, 0x40, 0x84}}},\n    {{{    26,   2619,    909}, 0, {   990,    990}, {0xff, 0xec, 0x40, 0x84}}},\n    {{{    26,   2429,   1080}, 0, {   990,    974}, {0xff, 0xec, 0x40, 0x84}}},\n};\n\n// 0x070176E0 - 0x07017788\nstatic const Gfx bbh_seg7_dl_070176E0[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, spooky_0900B000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_070175E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  4,  3, 0x0),\n    gsSP2Triangles( 7,  8,  4, 0x0,  6,  5,  9, 0x0),\n    gsSP2Triangles( 6,  9, 10, 0x0, 10,  9,  8, 0x0),\n    gsSP2Triangles(10,  8,  7, 0x0,  0,  2, 11, 0x0),\n    gsSP2Triangles(12,  1,  0, 0x0, 13, 14, 15, 0x0),\n    gsSP2Triangles(12, 15,  1, 0x0, 11,  2, 14, 0x0),\n    gsSP2Triangles(11, 14, 13, 0x0, 13, 15, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07017788 - 0x070177F8\nconst Gfx bbh_seg7_dl_07017788[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_070176E0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/31/model.inc.c",
    "content": "// 0x070177F8 - 0x07017810\nstatic const Lights1 bbh_seg7_lights_070177F8 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07017810 - 0x07017828\nstatic const Lights1 bbh_seg7_lights_07017810 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x07017828 - 0x07017918\nstatic const Vtx bbh_seg7_vertex_07017828[] = {\n    {{{ -2764,  -2354,   1024}, 0, { 13766,  -3098}, {0x00, 0x7c, 0xe7, 0xff}}},\n    {{{ -2047,  -2457,    512}, 0, { 10188,   -544}, {0x00, 0x7c, 0xe7, 0xff}}},\n    {{{ -2764,  -2457,    512}, 0, { 13766,   -544}, {0x00, 0x7c, 0xe7, 0xff}}},\n    {{{ -2047,  -2354,   1024}, 0, { 10188,  -3098}, {0x00, 0x7c, 0xe7, 0xff}}},\n    {{{ -2764,  -2354,   1024}, 0, { 13766,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2764,  -2354,   1536}, 0, { 13766,  -5654}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,  -2354,   1536}, 0, {  7634,  -5654}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2047,  -2354,   1024}, 0, { 10188,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,  -2764,  -1023}, 0, {  6612,  -5654}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1433,  -2764,  -1023}, 0, { -5650,  -5654}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1433,  -2764,   1434}, 0, { -5650,   6610}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,  -2764,   1434}, 0, {  6610,   6610}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2150,  -2969,   1126}, 0, { -2074,   4566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1638,  -2969,   2048}, 0, { -4628,   9164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1946,  -2969,   2048}, 0, { -3096,   9164}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07017918 - 0x07017A08\nstatic const Vtx bbh_seg7_vertex_07017918[] = {\n    {{{ -2047,  -2457,    512}, 0, { 10188,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2764,  -2457,  -1535}, 0, { 13766,   9676}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2764,  -2457,    512}, 0, { 13766,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2047,  -2457,   -613}, 0, { 10188,   5076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,  -2457,  -1125}, 0, {  7634,   7632}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1638,  -2457,  -1535}, 0, { -8206,   9676}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2150,  -2969,   1126}, 0, { -2074,   4566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1946,  -2969,   2048}, 0, { -3096,   9164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2355,  -2969,   2560}, 0, { -1052,  11720}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3277,  -2969,   2560}, 0, {  3546,  11720}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3686,  -2969,   2048}, 0, {  5590,   9164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3686,  -2969,   1126}, 0, {  5588,   4566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1126,  -2457,   1536}, 0, { -5652,  -5654}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1638,  -2457,   2048}, 0, { -8206,  -8208}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1638,  -2457,   1638}, 0, { -8206,  -6164}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07017A08 - 0x07017AE8\nstatic const Vtx bbh_seg7_vertex_07017A08[] = {\n    {{{  2150,  -2969,   1126}, 0, { -2074,   4566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1638,  -2969,   1638}, 0, { -4628,   7120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1638,  -2969,   2048}, 0, { -4628,   9164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1638,  -2457,  -1125}, 0, { -8206,   7632}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1126,  -2457,  -1125}, 0, { -5652,   7632}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1638,  -2457,   -613}, 0, { -8206,   5076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1638,  -2457,  -1535}, 0, { -8206,   9676}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2150,  -2457,   -613}, 0, {-10762,   5076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2150,  -2457,   1126}, 0, {-10762,  -3610}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1638,  -2457,   1024}, 0, { -8206,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1638,  -2457,   1638}, 0, { -8206,  -6164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1638,  -2457,   1024}, 0, {  9678,   3542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1126,  -2457,   1536}, 0, {  7122,   6098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1638,  -2457,   1638}, 0, {  9678,   6608}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07017AE8 - 0x07017BE8\nstatic const Vtx bbh_seg7_vertex_07017AE8[] = {\n    {{{ -2764,  -2457,   2048}, 0, { 13766,  -8208}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1433,  -2457,   2560}, 0, {  7122, -10764}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,  -2457,   2048}, 0, {  5078,  -8208}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2354,  -2457,   2560}, 0, { 11722, -10764}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1126,  -2457,   1536}, 0, { -5652,  -5654}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2764,  -2457,   1536}, 0, { 13766,  -5654}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1638,  -2457,   2048}, 0, { -8206,  -8208}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,  -2457,  -1125}, 0, {  7634,   7632}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1126,  -2457,  -1125}, 0, { -5652,   7632}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1638,  -2457,  -1535}, 0, { -8206,   9676}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3686,  -2661,  -1535}, 0, {  5588,  -8720}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1638,  -2661,    102}, 0, { -5650,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3686,  -2661,    102}, 0, {  5588,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3686,  -2661,    102}, 0, {  5588,   -544}, {0x00, 0x79, 0x24, 0xff}}},\n    {{{  2150,  -2969,   1126}, 0, { -2074,   4566}, {0x00, 0x79, 0x24, 0xff}}},\n    {{{  3686,  -2969,   1126}, 0, {  5588,   4566}, {0x00, 0x79, 0x24, 0xff}}},\n};\n\n// 0x07017BE8 - 0x07017CC8\nstatic const Vtx bbh_seg7_vertex_07017BE8[] = {\n    {{{  3686,  -2661,    102}, 0, {  5588,   -544}, {0x00, 0x79, 0x24, 0xff}}},\n    {{{  2150,  -2661,    102}, 0, { -2074,   -544}, {0x00, 0x79, 0x24, 0xff}}},\n    {{{  2150,  -2969,   1126}, 0, { -2074,   4566}, {0x00, 0x79, 0x24, 0xff}}},\n    {{{  1638,  -2457,    128}, 0, {  9678,   -926}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,  -2457,    128}, 0, {  9166,   -926}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,  -2457,    282}, 0, {  9166,   -160}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1638,  -2457,    282}, 0, {  9678,   -160}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2047,  -2457,    282}, 0, { -8718,   -160}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1945,  -2457,    282}, 0, { -8206,   -160}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1945,  -2457,    128}, 0, { -8206,   -926}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2047,  -2457,    128}, 0, { -8718,   -926}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3686,  -2661,  -1535}, 0, {  5588,  -8720}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1638,  -2661,  -1535}, 0, { -4630,  -8720}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1638,  -2661,    102}, 0, { -5650,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07017CC8 - 0x07017DB8\nstatic const Vtx bbh_seg7_vertex_07017CC8[] = {\n    {{{ -1244,  -1945,    891}, 0, {   990,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -882,  -1945,   1253}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -882,  -2457,   1253}, 0, {     0,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1244,  -2457,   -480}, 0, {   990,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -882,  -2457,   -842}, 0, {     0,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -882,  -1945,   -842}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1244,  -1945,   -480}, 0, {   990,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -460,  -2457,  -1013}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    51,  -1945,  -1013}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -460,  -1945,  -1013}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    51,  -2457,  -1013}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   836,  -1945,   -480}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   474,  -2457,   -842}, 0, {   990,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   836,  -2457,   -480}, 0, {     0,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   474,  -1945,   -842}, 0, {   990,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07017DB8 - 0x07017E68\nstatic const Vtx bbh_seg7_vertex_07017DB8[] = {\n    {{{  -460,  -1945,   1423}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,  -1945,   1423}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,  -2457,   1423}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1244,  -1945,    891}, 0, {   990,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -882,  -2457,   1253}, 0, {     0,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1244,  -2457,    891}, 0, {   990,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   836,  -2457,    891}, 0, {     0,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   474,  -2457,   1253}, 0, {   990,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   474,  -1945,   1253}, 0, {   990,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   836,  -1945,    891}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -460,  -2457,   1423}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07017E68 - 0x07017F48\nstatic const Vtx bbh_seg7_vertex_07017E68[] = {\n    {{{   691,  -2354,   1536}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   589,  -2354,   1536}, 0, {     0,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   589,  -2354,   2048}, 0, {   990,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   691,  -2354,   2048}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,  -1637,    512}, 0, {  3034,      0}, {0xe8, 0x00, 0x84, 0xff}}},\n    {{{  1536,  -2047,    410}, 0, {  2524,    988}, {0xe8, 0x00, 0x84, 0xff}}},\n    {{{  1536,  -2457,    410}, 0, {  2524,   2012}, {0xe8, 0x00, 0x84, 0xff}}},\n    {{{  1024,  -1637,   -101}, 0, {     0,      0}, {0xb1, 0x9d, 0x00, 0xff}}},\n    {{{  1536,  -2047,      0}, 0, {   478,    988}, {0xb1, 0x9d, 0x00, 0xff}}},\n    {{{  1536,  -2047,    410}, 0, {  2524,    988}, {0xb1, 0x9d, 0x00, 0xff}}},\n    {{{  1536,  -2047,      0}, 0, {   478,    988}, {0xe8, 0x00, 0x7c, 0xff}}},\n    {{{  1024,  -2457,   -101}, 0, {     0,   2012}, {0xe8, 0x00, 0x7c, 0xff}}},\n    {{{  1536,  -2457,      0}, 0, {   478,   2012}, {0xe8, 0x00, 0x7c, 0xff}}},\n    {{{  1024,  -1637,   -101}, 0, {     0,      0}, {0xe8, 0x00, 0x7c, 0xff}}},\n};\n\n// 0x07017F48 - 0x07018028\nstatic const Vtx bbh_seg7_vertex_07017F48[] = {\n    {{{  1536,  -2047,      0}, 0, {   478,    988}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1536,  -2201,    128}, 0, {  1118,   1372}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1536,  -2201,    282}, 0, {  1884,   1372}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1536,  -2457,      0}, 0, {   478,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1536,  -2457,    128}, 0, {  1118,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1536,  -2047,    410}, 0, {  2524,    988}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1536,  -2457,    410}, 0, {  2524,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1536,  -2457,    282}, 0, {  1884,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,  -1637,    512}, 0, {  3034,      0}, {0xb1, 0x9d, 0x00, 0xff}}},\n    {{{  1024,  -1637,   -101}, 0, {     0,      0}, {0xb1, 0x9d, 0x00, 0xff}}},\n    {{{  1536,  -2047,    410}, 0, {  2524,    988}, {0xb1, 0x9d, 0x00, 0xff}}},\n    {{{  1024,  -1637,    512}, 0, {  3034,      0}, {0xe8, 0x00, 0x84, 0xff}}},\n    {{{  1536,  -2457,    410}, 0, {  2524,   2012}, {0xe8, 0x00, 0x84, 0xff}}},\n    {{{  1024,  -2457,    512}, 0, {  3034,   2012}, {0xe8, 0x00, 0x84, 0xff}}},\n};\n\n// 0x07018028 - 0x07018128\nstatic const Vtx bbh_seg7_vertex_07018028[] = {\n    {{{  1536,  -2201,    282}, 0, {   132,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1638,  -2457,    282}, 0, {   124,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1536,  -2457,    282}, 0, {   132,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1638,  -2201,    282}, 0, {   124,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1638,  -2201,    128}, 0, { 16270,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1536,  -2201,    128}, 0, { 16266,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1536,  -2457,    128}, 0, { 16266,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1536,  -2201,    282}, 0, { 16484,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1638,  -2201,    128}, 0, { 16270,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1638,  -2201,    282}, 0, { 16476,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1536,  -2201,    128}, 0, { 16266,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1638,  -2457,    128}, 0, { 16270,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2047,  -2201,    282}, 0, {  7972,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2047,  -2201,    128}, 0, {  8200,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1945,  -2201,    128}, 0, {  8204,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1945,  -2201,    282}, 0, {  7960,    480}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07018128 - 0x070181A8\nstatic const Vtx bbh_seg7_vertex_07018128[] = {\n    {{{ -1945,  -2457,    282}, 0, {  7960,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2047,  -2457,    282}, 0, {  7972,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2047,  -2201,    282}, 0, {  7972,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1945,  -2201,    282}, 0, {  7960,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2047,  -2457,    128}, 0, {  8200,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1945,  -2201,    128}, 0, {  8204,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2047,  -2201,    128}, 0, {  8200,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1945,  -2457,    128}, 0, {  8204,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070181A8 - 0x07018298\nstatic const Vtx bbh_seg7_vertex_070181A8[] = {\n    {{{ -1535,  -2354,   1536}, 0, {  7122,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2764,  -2354,   1536}, 0, { -5140,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2764,  -2457,   1536}, 0, { -5140,    988}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1535,  -2457,   1536}, 0, {  7122,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   589,  -2354,   1536}, 0, {  5078,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   589,  -2457,   2048}, 0, {     0,    992}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   589,  -2354,   2048}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   589,  -2457,   1536}, 0, {  5078,    992}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   691,  -2354,   2048}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   691,  -2457,   1536}, 0, {  5078,    992}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   691,  -2354,   1536}, 0, {  5078,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   691,  -2457,   2048}, 0, {     0,    992}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3584,  -2457,  -1330}, 0, {   690,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3686,  -2661,  -1330}, 0, {   932,    376}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3686,  -2457,  -1330}, 0, {   932,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07018298 - 0x07018378\nstatic const Vtx bbh_seg7_vertex_07018298[] = {\n    {{{  2150,  -2457,   -613}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1638,  -2661,  -1125}, 0, {  1774,    376}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1638,  -2457,  -1125}, 0, {  1774,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2150,  -2661,   -613}, 0, {     0,    376}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1638,  -2661,  -1535}, 0, {  6610,    376}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1638,  -2457,  -1125}, 0, {  5588,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1638,  -2661,  -1125}, 0, {  5588,    376}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1638,  -2457,  -1535}, 0, {  6610,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3584,  -2457,  -1330}, 0, {   690,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3584,  -2661,  -1330}, 0, {   690,    376}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3686,  -2661,  -1330}, 0, {   932,    376}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3482,  -2457,  -1433}, 0, {   208,      0}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  3584,  -2661,  -1330}, 0, {   690,    376}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  3584,  -2457,  -1330}, 0, {   690,      0}, {0xa6, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07018378 - 0x07018468\nstatic const Vtx bbh_seg7_vertex_07018378[] = {\n    {{{  1638,  -2457,   1638}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2150,  -2969,   1126}, 0, {  1774,    992}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2150,  -2457,   1126}, 0, {  1774,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3482,  -2457,  -1433}, 0, {   208,      0}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  3482,  -2661,  -1433}, 0, {   208,    376}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  3584,  -2661,  -1330}, 0, {   690,    376}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  3482,  -2457,  -1535}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3482,  -2661,  -1433}, 0, {   208,    376}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3482,  -2457,  -1433}, 0, {   208,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3482,  -2661,  -1535}, 0, {     0,    376}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1946,  -2969,   2048}, 0, {  2524,    992}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1638,  -2457,   2048}, 0, {  3290,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1946,  -2457,   2048}, 0, {  2522,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1638,  -2969,   2048}, 0, {  3290,    992}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1638,  -2969,   1638}, 0, {     0,    988}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07018468 - 0x07018558\nstatic const Vtx bbh_seg7_vertex_07018468[] = {\n    {{{  2150,  -2457,   1126}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,  -2661,   -613}, 0, {  4312,    376}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,  -2457,   -613}, 0, {  4312,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1638,  -2969,   1638}, 0, { -1308,    988}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1638,  -2457,   1638}, 0, { -1308,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1638,  -2457,   2048}, 0, { -2330,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1638,  -2969,   2048}, 0, { -2330,    988}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1638,  -2457,  -1535}, 0, { -2840,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1638,  -2661,  -1535}, 0, { -2840,    376}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3482,  -2661,  -1535}, 0, {  1756,    376}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3482,  -2457,  -1535}, 0, {  1756,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3686,  -2969,  -1330}, 0, { -3608,    988}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3686,  -2457,   2048}, 0, {  4822,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3686,  -2457,  -1330}, 0, { -3608,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3686,  -2969,   2048}, 0, {  4822,    992}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07018558 - 0x07018648\nstatic const Vtx bbh_seg7_vertex_07018558[] = {\n    {{{  2355,  -2457,   2560}, 0, {     0,      0}, {0x63, 0x00, 0xb1, 0xff}}},\n    {{{  1946,  -2969,   2048}, 0, {  1604,    988}, {0x63, 0x00, 0xb1, 0xff}}},\n    {{{  1946,  -2457,   2048}, 0, {  1604,      0}, {0x63, 0x00, 0xb1, 0xff}}},\n    {{{  2150,  -2457,   1126}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,  -2969,   1126}, 0, {     0,    992}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,  -2661,   -613}, 0, {  4312,    376}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3686,  -2457,   2048}, 0, {     0,      0}, {0x9d, 0x00, 0xb1, 0xff}}},\n    {{{  3686,  -2969,   2048}, 0, {     0,    992}, {0x9d, 0x00, 0xb1, 0xff}}},\n    {{{  3277,  -2969,   2560}, 0, {  1604,    988}, {0x9d, 0x00, 0xb1, 0xff}}},\n    {{{  3277,  -2457,   2560}, 0, {  1604,      0}, {0x9d, 0x00, 0xb1, 0xff}}},\n    {{{  3277,  -2457,   2560}, 0, {  -796,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3277,  -2969,   2560}, 0, {  -796,    992}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2355,  -2969,   2560}, 0, {  1502,    992}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2355,  -2457,   2560}, 0, {  1502,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2355,  -2969,   2560}, 0, {     0,    988}, {0x63, 0x00, 0xb1, 0xff}}},\n};\n\n// 0x07018648 - 0x07018748\nstatic const Vtx bbh_seg7_vertex_07018648[] = {\n    {{{  3482,  -1433,  -1535}, 0, {  8400,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2559,  -2457,  -1535}, 0, { -6672,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3482,  -2457,  -1535}, 0, {  8400,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    77,  -2457,   2048}, 0, {  1564,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    77,  -2201,   2099}, 0, {  1564,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    77,  -2201,   2048}, 0, {  1564,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    77,  -2201,   2048}, 0, {  1564,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -76,  -2201,   2099}, 0, {  1948,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -76,  -2201,   2048}, 0, {  1948,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    77,  -2201,   2099}, 0, {  1564,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    77,  -2201,   2048}, 0, {  1564,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -76,  -2201,   2048}, 0, {  1948,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1023,  -1433,   2048}, 0, {  4312,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1946,  -1433,   2048}, 0, { -3096,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1946,  -2457,   2048}, 0, { -3096,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    77,  -2457,   2048}, 0, {  1564,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07018748 - 0x07018838\nstatic const Vtx bbh_seg7_vertex_07018748[] = {\n    {{{   -76,  -2201,   2048}, 0, {  1948,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -76,  -2201,   2099}, 0, {  1948,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -76,  -2457,   2099}, 0, {  1948,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -76,  -2201,   2048}, 0, {  1948,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -76,  -2457,   2048}, 0, {  1948,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1023,  -2457,   2048}, 0, {  4312,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1023,  -1433,   2048}, 0, {  4312,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -76,  -2457,   2048}, 0, {  1948,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    77,  -2457,   2048}, 0, {  1564,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    77,  -2457,   2099}, 0, {  1564,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    77,  -2201,   2099}, 0, {  1564,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -76,  -2457,   2048}, 0, {  1948,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    77,  -2457,   2099}, 0, {  1564,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    77,  -2457,   2048}, 0, {  1564,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -76,  -2457,   2099}, 0, {  1948,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07018838 - 0x07018918\nstatic const Vtx bbh_seg7_vertex_07018838[] = {\n    {{{ -2354,  -1433,   2560}, 0, {  7634,   2012}, {0x63, 0x00, 0xb1, 0xff}}},\n    {{{ -2354,  -2457,   2560}, 0, {  7634,      0}, {0x63, 0x00, 0xb1, 0xff}}},\n    {{{ -2764,  -2457,   2048}, 0, {  8656,      0}, {0x63, 0x00, 0xb1, 0xff}}},\n    {{{  3482,  -1433,  -1535}, 0, {  8400,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2559,  -1433,  -1535}, 0, { -6672,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2559,  -2457,  -1535}, 0, { -6672,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2764,  -1433,   2048}, 0, { -2584,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2764,  -2457,   2048}, 0, { -2584,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2764,  -2457,  -1330}, 0, {  5844,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2764,  -1433,  -1330}, 0, {  5844,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3686,  -2457,  -1330}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3686,  -2457,   2048}, 0, {  8400,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3686,  -1433,   2048}, 0, {  8400,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3686,  -1433,  -1330}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07018918 - 0x070189F8\nstatic const Vtx bbh_seg7_vertex_07018918[] = {\n    {{{ -1433,  -1433,   2560}, 0, {  5334,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2354,  -2457,   2560}, 0, {  7634,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2354,  -1433,   2560}, 0, {  7634,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3277,  -1433,   2560}, 0, { -6418,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2355,  -2457,   2560}, 0, { -4118,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2355,  -1433,   2560}, 0, { -4118,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2354,  -1433,   2560}, 0, {  7634,   2012}, {0x63, 0x00, 0xb1, 0xff}}},\n    {{{ -2764,  -2457,   2048}, 0, {  8656,      0}, {0x63, 0x00, 0xb1, 0xff}}},\n    {{{ -2764,  -1433,   2048}, 0, {  8656,   2012}, {0x63, 0x00, 0xb1, 0xff}}},\n    {{{ -1433,  -2457,   2560}, 0, {  5334,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1023,  -1433,   2048}, 0, {  4312,   2012}, {0x9d, 0x00, 0xb1, 0xff}}},\n    {{{ -1433,  -2457,   2560}, 0, {  5334,      0}, {0x9d, 0x00, 0xb1, 0xff}}},\n    {{{ -1433,  -1433,   2560}, 0, {  5334,   2012}, {0x9d, 0x00, 0xb1, 0xff}}},\n    {{{ -1023,  -2457,   2048}, 0, {  4312,      0}, {0x9d, 0x00, 0xb1, 0xff}}},\n};\n\n// 0x070189F8 - 0x07018AD8\nstatic const Vtx bbh_seg7_vertex_070189F8[] = {\n    {{{  2355,  -1433,   2560}, 0, {     0,   2012}, {0x63, 0x00, 0xb1, 0xff}}},\n    {{{  2355,  -2457,   2560}, 0, {     0,      0}, {0x63, 0x00, 0xb1, 0xff}}},\n    {{{  1946,  -2457,   2048}, 0, {  1604,      0}, {0x63, 0x00, 0xb1, 0xff}}},\n    {{{  1946,  -1433,   2048}, 0, {  1604,   2012}, {0x63, 0x00, 0xb1, 0xff}}},\n    {{{  3482,  -1433,  -1433}, 0, {   734,   2012}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  3584,  -2457,  -1330}, 0, {   224,      0}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  3584,  -1433,  -1330}, 0, {   224,   2012}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  3277,  -1433,   2560}, 0, { -6418,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3277,  -2457,   2560}, 0, { -6418,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2355,  -2457,   2560}, 0, { -4118,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3686,  -1433,   2048}, 0, {     0,   2012}, {0x9d, 0x00, 0xb1, 0xff}}},\n    {{{  3277,  -2457,   2560}, 0, {  1604,      0}, {0x9d, 0x00, 0xb1, 0xff}}},\n    {{{  3277,  -1433,   2560}, 0, {  1604,   2012}, {0x9d, 0x00, 0xb1, 0xff}}},\n    {{{  3686,  -2457,   2048}, 0, {     0,      0}, {0x9d, 0x00, 0xb1, 0xff}}},\n};\n\n// 0x07018AD8 - 0x07018B88\nstatic const Vtx bbh_seg7_vertex_07018AD8[] = {\n    {{{  3482,  -1433,  -1535}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3482,  -2457,  -1433}, 0, {   734,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3482,  -1433,  -1433}, 0, {   734,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3482,  -2457,  -1535}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3482,  -1433,  -1433}, 0, {   734,   2012}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  3482,  -2457,  -1433}, 0, {   734,      0}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  3584,  -2457,  -1330}, 0, {   224,      0}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  3584,  -1433,  -1330}, 0, {   224,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3584,  -2457,  -1330}, 0, {   224,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3686,  -2457,  -1330}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3686,  -1433,  -1330}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07018B88 - 0x07018C48\nstatic const Vtx bbh_seg7_vertex_07018B88[] = {\n    {{{ -2764,  -1433,  -1330}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2764,  -2457,  -1330}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2661,  -2457,  -1330}, 0, {   224,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2661,  -1433,  -1330}, 0, {   224,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2661,  -1433,  -1330}, 0, {   224,      0}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{ -2661,  -2457,  -1330}, 0, {   224,   2012}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{ -2559,  -2457,  -1433}, 0, {   734,   2012}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{ -2559,  -1433,  -1433}, 0, {   734,      0}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{ -2559,  -1433,  -1433}, 0, {   734,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2559,  -2457,  -1433}, 0, {   734,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2559,  -2457,  -1535}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2559,  -1433,  -1535}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07018C48 - 0x07018D48\nstatic const Vtx bbh_seg7_vertex_07018C48[] = {\n    {{{ -2047,  -1433,   1024}, 0, { 13850,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1535,  -2354,   1536}, 0, { 12626,    172}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1535,  -1433,   1536}, 0, { 12626,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2047,  -2354,   1024}, 0, { 13850,    172}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1535,  -1433,   1536}, 0, { 12626,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1126,  -2457,   1536}, 0, {  7590,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1126,  -1433,   1536}, 0, {  7590,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1535,  -2457,   1536}, 0, { 12626,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1126,  -1433,   1536}, 0, {  7590,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1126,  -2457,   1536}, 0, {  7590,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1638,  -2457,   1024}, 0, {  6438,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1638,  -1433,   1024}, 0, {  6438,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1638,  -1433,   -613}, 0, {  3800,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1638,  -2457,   -613}, 0, {  3800,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1126,  -2457,  -1125}, 0, {  2636,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1126,  -1433,  -1125}, 0, {  2636,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07018D48 - 0x07018E38\nstatic const Vtx bbh_seg7_vertex_07018D48[] = {\n    {{{  1024,  -1433,    717}, 0, {  7116,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   307,  -2764,   1434}, 0, {  5084,   2380}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   307,  -1433,   1434}, 0, {  5084,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1126,  -1433,  -1125}, 0, { 23076,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1535,  -2457,  -1125}, 0, { 17898,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1535,  -1433,  -1125}, 0, { 17898,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1126,  -2457,  -1125}, 0, { 23076,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1535,  -1433,  -1125}, 0, { 17898,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1535,  -2457,  -1125}, 0, { 17898,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2047,  -2457,   -613}, 0, { 16658,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2047,  -1433,   -613}, 0, { 16658,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -716,  -1433,   1434}, 0, {  3028,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1433,  -2764,    717}, 0, {   996,   2380}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1433,  -1433,    717}, 0, {   996,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -716,  -2764,   1434}, 0, {  3028,   2380}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07018E38 - 0x07018F38\nstatic const Vtx bbh_seg7_vertex_07018E38[] = {\n    {{{   307,  -1433,   1434}, 0, {  5084,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -716,  -2764,   1434}, 0, {  3028,   2380}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -716,  -1433,   1434}, 0, {  3028,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   307,  -2764,   1434}, 0, {  5084,   2380}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1433,  -1433,   -306}, 0, { 15292,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1433,  -2764,   -306}, 0, { 15292,   2380}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -716,  -2764,  -1023}, 0, { 13260,   2380}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1024,  -1433,    717}, 0, {  7116,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1024,  -2764,    717}, 0, {  7116,   2380}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   307,  -2764,   1434}, 0, {  5084,   2380}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -716,  -1433,  -1023}, 0, { 13260,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   307,  -2764,  -1023}, 0, { 11204,   2380}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   307,  -1433,  -1023}, 0, { 11204,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   307,  -1433,  -1023}, 0, { 11204,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   307,  -2764,  -1023}, 0, { 11204,   2380}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1024,  -2764,   -306}, 0, {  9172,   2380}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07018F38 - 0x07019038\nstatic const Vtx bbh_seg7_vertex_07018F38[] = {\n    {{{   307,  -1433,  -1023}, 0, { 11204,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1024,  -2764,   -306}, 0, {  9172,   2380}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1024,  -1433,   -306}, 0, {  9172,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -716,  -1433,  -1023}, 0, { 13260,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,  -2764,  -1023}, 0, { 13260,   2380}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   307,  -2764,  -1023}, 0, { 11204,   2380}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1433,  -1433,   -306}, 0, { 15292,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -716,  -2764,  -1023}, 0, { 13260,   2380}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -716,  -1433,  -1023}, 0, { 13260,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1638,  -2457,   1024}, 0, {  6438,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1638,  -2457,    282}, 0, {  5258,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1638,  -2201,    282}, 0, {  5258,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1024,  -1433,    717}, 0, {  7116,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,  -1433,   -306}, 0, {  9172,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,  -1637,   -101}, 0, {  8782,    340}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,  -2457,   -101}, 0, {  8782,   1828}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07019038 - 0x07019138\nstatic const Vtx bbh_seg7_vertex_07019038[] = {\n    {{{  1024,  -1433,   -306}, 0, {  9172,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,  -2764,   -306}, 0, {  9172,   2380}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,  -2457,   -101}, 0, {  8782,   1828}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,  -1433,    717}, 0, {  7116,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,  -1637,   -101}, 0, {  8782,    340}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,  -1637,    512}, 0, {  7506,    340}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,  -2457,    512}, 0, {  7506,   1828}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,  -2764,    717}, 0, {  7116,   2380}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1433,  -1637,   -101}, 0, { 15682,    340}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1433,  -2764,   -306}, 0, { 15292,   2380}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1433,  -1433,   -306}, 0, { 15292,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1638,  -1433,   1024}, 0, {  6438,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1638,  -2457,   1024}, 0, {  6438,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1638,  -2201,    282}, 0, {  5258,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1638,  -1433,   -613}, 0, {  3800,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1638,  -2201,    128}, 0, {  4996,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07019138 - 0x07019228\nstatic const Vtx bbh_seg7_vertex_07019138[] = {\n    {{{  1638,  -1433,   -613}, 0, {  3800,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1638,  -2201,    128}, 0, {  4996,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1638,  -2457,   -613}, 0, {  3800,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1638,  -2457,    128}, 0, {  4996,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1433,  -2764,   -306}, 0, { 15292,   2380}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1433,  -2457,    512}, 0, { 16958,   1828}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1433,  -2764,    717}, 0, { 17348,   2380}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1433,  -2457,   -101}, 0, { 15682,   1828}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1433,  -1637,    512}, 0, { 16958,    340}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1433,  -1637,   -101}, 0, { 15682,    340}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1433,  -1433,   -306}, 0, { 15292,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2047,  -2201,    282}, 0, { 15104,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2047,  -2457,   1024}, 0, { 13850,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2047,  -1433,   1024}, 0, { 13850,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1433,  -1433,    717}, 0, { 17348,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07019228 - 0x070192E8\nstatic const Vtx bbh_seg7_vertex_07019228[] = {\n    {{{ -1433,  -2764,    717}, 0, {   996,   2380}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1433,  -1637,    512}, 0, {   606,    340}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1433,  -1433,    717}, 0, {   996,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1433,  -2457,    512}, 0, {   606,   1828}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2047,  -2201,    128}, 0, { 15386,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2047,  -2201,    282}, 0, { 15104,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2047,  -1433,   1024}, 0, { 13850,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2047,  -2457,    282}, 0, { 15104,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2047,  -2457,   1024}, 0, { 13850,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2047,  -2457,   -613}, 0, { 16658,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2047,  -2457,    128}, 0, { 15386,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2047,  -1433,   -613}, 0, { 16658,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070192E8 - 0x070193E8\nstatic const Vtx bbh_seg7_vertex_070192E8[] = {\n    {{{ -1945,  -2457,      0}, 0, {  2524,   2012}, {0x18, 0x00, 0x7c, 0xff}}},\n    {{{ -1433,  -2457,   -101}, 0, {  3034,   2012}, {0x18, 0x00, 0x7c, 0xff}}},\n    {{{ -1433,  -1637,   -101}, 0, {  3034,      0}, {0x18, 0x00, 0x7c, 0xff}}},\n    {{{ -1945,  -2047,    410}, 0, {   480,    988}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1945,  -2201,    282}, 0, {  1118,   1372}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1945,  -2201,    128}, 0, {  1884,   1372}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1945,  -2457,    282}, 0, {  1118,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1945,  -2047,      0}, 0, {  2524,    988}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1945,  -2457,    410}, 0, {   480,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1433,  -2457,    512}, 0, {     0,   2012}, {0x18, 0x00, 0x84, 0xff}}},\n    {{{ -1945,  -2047,    410}, 0, {   480,    988}, {0x18, 0x00, 0x84, 0xff}}},\n    {{{ -1433,  -1637,    512}, 0, {     0,      0}, {0x18, 0x00, 0x84, 0xff}}},\n    {{{ -1945,  -2457,    410}, 0, {   480,   2012}, {0x18, 0x00, 0x84, 0xff}}},\n    {{{ -1945,  -2047,    410}, 0, {   480,    988}, {0x4f, 0x9d, 0x00, 0xff}}},\n    {{{ -1945,  -2047,      0}, 0, {  2524,    988}, {0x4f, 0x9d, 0x00, 0xff}}},\n    {{{ -1433,  -1637,   -101}, 0, {  3034,      0}, {0x4f, 0x9d, 0x00, 0xff}}},\n};\n\n// 0x070193E8 - 0x07019488\nstatic const Vtx bbh_seg7_vertex_070193E8[] = {\n    {{{ -1945,  -2047,    410}, 0, {   480,    988}, {0x4f, 0x9d, 0x00, 0xff}}},\n    {{{ -1433,  -1637,   -101}, 0, {  3034,      0}, {0x4f, 0x9d, 0x00, 0xff}}},\n    {{{ -1433,  -1637,    512}, 0, {     0,      0}, {0x4f, 0x9d, 0x00, 0xff}}},\n    {{{ -1945,  -2201,    128}, 0, {  1884,   1372}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1945,  -2457,      0}, 0, {  2524,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1945,  -2047,      0}, 0, {  2524,    988}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1945,  -2457,      0}, 0, {  2524,   2012}, {0x18, 0x00, 0x7c, 0xff}}},\n    {{{ -1433,  -1637,   -101}, 0, {  3034,      0}, {0x18, 0x00, 0x7c, 0xff}}},\n    {{{ -1945,  -2047,      0}, 0, {  2524,    988}, {0x18, 0x00, 0x7c, 0xff}}},\n    {{{ -1945,  -2457,    128}, 0, {  1884,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07019488 - 0x07019508\nstatic const Vtx bbh_seg7_vertex_07019488[] = {\n    {{{  1024,  -2457,    512}, 0, {  3036,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,  -2457,      0}, 0, { -2072,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,  -2457,   -101}, 0, {  3032,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,  -2457,    410}, 0, { -2072,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1433,  -2457,   -101}, 0, { -2072,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1945,  -2457,      0}, 0, {  3036,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1945,  -2457,    410}, 0, {  3036,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1433,  -2457,    512}, 0, { -2072,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07019508 - 0x070195A8\nstatic const Vtx bbh_seg7_vertex_07019508[] = {\n    {{{ -2764,  -1433,  -1535}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3686,  -1433,   2048}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2764,  -1433,   2048}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3686,  -1433,  -1535}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1946,  -1433,   2048}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3277,  -1433,   2560}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1023,  -1433,   2048}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2354,  -1433,   2560}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2355,  -1433,   2560}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1433,  -1433,   2560}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x070195A8 - 0x07019728\nstatic const Gfx bbh_seg7_dl_070195A8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_0900A000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_070177F8.l, 1),\n    gsSPLight(&bbh_seg7_lights_070177F8.a, 2),\n    gsSPVertex(bbh_seg7_vertex_07017828, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07017918, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 3,  4,  1, 0x0,  4,  5,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 6,  9, 10, 0x0,  6, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07017A08, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  5,  7, 0x0),\n    gsSP2Triangles( 8,  5,  9, 0x0,  8,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07017AE8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  0, 0x0,  4,  0,  6, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07017BE8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07019728 - 0x070197B8\nstatic const Gfx bbh_seg7_dl_07019728[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bbh_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_07017CC8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07017DB8, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP1Triangle( 0,  2, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070197B8 - 0x070198C8\nstatic const Gfx bbh_seg7_dl_070197B8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_07017E68, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07017F48, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  2,  5,  0, 0x0),\n    gsSP2Triangles( 2,  6,  5, 0x0,  2,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07018028, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  4,  6, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07018128, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070198C8 - 0x07019B80\nstatic const Gfx bbh_seg7_dl_070198C8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_070181A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07018298, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07018378, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07018468, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07018558, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07018648, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP2Triangles(14, 15, 10, 0x0, 14, 10, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07018748, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  0,  2,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07018838, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07018918, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  0,  9,  1, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(bbh_seg7_vertex_070189F8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07018AD8, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle( 7,  9, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07019B80 - 0x07019BD8\nstatic const Gfx bbh_seg7_dl_07019B80[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_07018B88, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07019BD8 - 0x07019DD0\nstatic const Gfx bbh_seg7_dl_07019BD8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bbh_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_07018C48, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07018D48, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07018E38, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07018F38, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07019038, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  3,  6,  7, 0x0),\n    gsSP2Triangles( 7,  6,  2, 0x0,  7,  2,  1, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(14, 11, 13, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07019138, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles( 9,  7,  4, 0x0,  8, 10, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07019228, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10,  4, 0x0,  4,  6, 11, 0x0),\n    gsSP1Triangle( 9,  4, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07019DD0 - 0x07019E60\nstatic const Gfx bbh_seg7_dl_07019DD0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_070192E8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  5,  7,  3, 0x0),\n    gsSP2Triangles( 3,  8,  6, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_070193E8, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  3,  9,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07019E60 - 0x07019EA8\nstatic const Gfx bbh_seg7_dl_07019E60[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09009000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_07019488, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07019EA8 - 0x07019EF8\nstatic const Gfx bbh_seg7_dl_07019EA8[] = {\n    gsSPLight(&bbh_seg7_lights_07017810.l, 1),\n    gsSPLight(&bbh_seg7_lights_07017810.a, 2),\n    gsSPVertex(bbh_seg7_vertex_07019508, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  1,  5, 0x0,  6,  7,  2, 0x0),\n    gsSP2Triangles( 4,  5,  8, 0x0,  6,  9,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07019EF8 - 0x0701A008\nconst Gfx bbh_seg7_dl_07019EF8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_070195A8),\n    gsSPDisplayList(bbh_seg7_dl_07019728),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_070197B8),\n    gsSPDisplayList(bbh_seg7_dl_070198C8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_07019B80),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_07019BD8),\n    gsSPDisplayList(bbh_seg7_dl_07019DD0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_07019E60),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(bbh_seg7_dl_07019EA8),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/32/model.inc.c",
    "content": "// 0x0701A008 - 0x0701A048\nstatic const Vtx bbh_seg7_vertex_0701A008[] = {\n    {{{   640,  -1433,   1536}, 0, { -1564,  -2588}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   640,  -2354,   1536}, 0, {  3034,   2010}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   640,  -2354,   2048}, 0, {   480,   4564}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   640,  -1433,   2048}, 0, { -4118,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701A048 - 0x0701A080\nstatic const Gfx bbh_seg7_dl_0701A048[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_0701A008, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701A080 - 0x0701A0F0\nconst Gfx bbh_seg7_dl_0701A080[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0701A048),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/33/model.inc.c",
    "content": "// 0x0701A0F0 - 0x0701A108\nstatic const Lights1 bbh_seg7_lights_0701A0F0 = gdSPDefLights1(\n    0x20, 0x20, 0x20,\n    0x50, 0x50, 0x50, 0x28, 0x28, 0x28\n);\n\n// 0x0701A108 - 0x0701A120\nstatic const Lights1 bbh_seg7_lights_0701A108 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0701A120 - 0x0701A160\nstatic const Vtx bbh_seg7_vertex_0701A120[] = {\n    {{{  -306,  -2457,   2150}, 0, { 24496,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   307,  -2457,   4608}, 0, {     0,   6098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   307,  -2457,   2150}, 0, { 24496,   6098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -306,  -2457,   4608}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0701A160 - 0x0701A260\nstatic const Vtx bbh_seg7_vertex_0701A160[] = {\n    {{{   -76,  -2457,   2099}, 0, {   990,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -76,  -2457,   2150}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    77,  -2457,   2150}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -76,  -2457,   4608}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -76,  -2457,   4659}, 0, {   990,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    77,  -2457,   4659}, 0, {     0,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    77,  -2457,   4608}, 0, {     0,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    77,  -2201,   4608}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    77,  -2201,   4659}, 0, {     0,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -76,  -2201,   4659}, 0, {   990,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -76,  -2201,   4608}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    77,  -2201,   2099}, 0, {     0,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    77,  -2201,   2150}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -76,  -2201,   2150}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -76,  -2201,   2099}, 0, {   990,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    77,  -2457,   2099}, 0, {     0,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0701A260 - 0x0701A360\nstatic const Vtx bbh_seg7_vertex_0701A260[] = {\n    {{{   -76,  -2201,   2099}, 0, {   480,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -76,  -2201,   2150}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -76,  -2457,   2150}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -76,  -2201,   4608}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -76,  -2457,   4659}, 0, {   478,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -76,  -2457,   4608}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -76,  -2201,   4659}, 0, {   478,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    77,  -2457,   4608}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    77,  -2201,   4659}, 0, {   478,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    77,  -2201,   4608}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    77,  -2457,   4659}, 0, {   478,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    77,  -2457,   2099}, 0, {   480,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    77,  -2457,   2150}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    77,  -2201,   2150}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    77,  -2201,   2099}, 0, {   480,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -76,  -2457,   2099}, 0, {   480,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0701A360 - 0x0701A450\nstatic const Vtx bbh_seg7_vertex_0701A360[] = {\n    {{{   307,  -2457,   2150}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   307,  -2047,   4608}, 0, { 12232,  -1054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   307,  -2047,   2150}, 0, {     0,  -1054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -101,  -1842,   2150}, 0, { 12232,   -456}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{  -306,  -2047,   4608}, 0, {     0,    990}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{  -306,  -2047,   2150}, 0, { 12232,    990}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{  -101,  -1842,   4608}, 0, {     0,   -456}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{   102,  -1842,   2150}, 0, { 12232,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   102,  -1842,   4608}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -101,  -1842,   4608}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -101,  -1842,   2150}, 0, { 12232,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   307,  -2047,   2150}, 0, {     0,    990}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{   307,  -2047,   4608}, 0, { 12232,    990}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{   102,  -1842,   4608}, 0, { 12232,   -456}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{   102,  -1842,   2150}, 0, {     0,   -456}, {0xa7, 0xa7, 0x00, 0xff}}},\n};\n\n// 0x0701A450 - 0x0701A550\nstatic const Vtx bbh_seg7_vertex_0701A450[] = {\n    {{{   -76,  -2201,   4608}, 0, {  1884,   -288}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -306,  -2047,   4608}, 0, {  3032,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   102,  -1842,   4608}, 0, {   988,  -2076}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   307,  -2457,   2150}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   307,  -2457,   4608}, 0, { 12232,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   307,  -2047,   4608}, 0, { 12232,  -1054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -306,  -2047,   2150}, 0, {  7632,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -306,  -2047,   4608}, 0, { -4628,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -306,  -2457,   4608}, 0, { -4628,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -306,  -2457,   2150}, 0, {  7632,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -76,  -2457,   4608}, 0, {  1884,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -306,  -2457,   4608}, 0, {  3032,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    77,  -2201,   4608}, 0, {  1116,   -288}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -101,  -1842,   4608}, 0, {  2012,  -2076}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   307,  -2047,   4608}, 0, {     0,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   307,  -2457,   4608}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0701A550 - 0x0701A620\nstatic const Vtx bbh_seg7_vertex_0701A550[] = {\n    {{{   307,  -2457,   4608}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    77,  -2457,   4608}, 0, {  1116,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    77,  -2201,   4608}, 0, {  1116,   -288}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   307,  -2047,   2150}, 0, {  3032,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    77,  -2201,   2150}, 0, {  1884,   -288}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   307,  -2457,   2150}, 0, {  3032,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,  -1842,   2150}, 0, {  2012,  -2076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -76,  -2201,   2150}, 0, {  1116,   -288}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    77,  -2457,   2150}, 0, {  1884,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -306,  -2457,   2150}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -76,  -2457,   2150}, 0, {  1116,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -306,  -2047,   2150}, 0, {     0,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -101,  -1842,   2150}, 0, {   988,  -2076}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0701A620 - 0x0701A668\nstatic const Gfx bbh_seg7_dl_0701A620[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_0900A000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_0701A0F0.l, 1),\n    gsSPLight(&bbh_seg7_lights_0701A0F0.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0701A120, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701A668 - 0x0701A6E0\nstatic const Gfx bbh_seg7_dl_0701A668[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_0701A108.l, 1),\n    gsSPLight(&bbh_seg7_lights_0701A108.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0701A160, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701A6E0 - 0x0701A748\nstatic const Gfx bbh_seg7_dl_0701A6E0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_0701A260, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701A748 - 0x0701A850\nstatic const Gfx bbh_seg7_dl_0701A748[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_0701A360, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701A450, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 0, 10, 11, 0x0,  0, 11,  1, 0x0),\n    gsSP2Triangles(12,  0,  2, 0x0,  1, 13,  2, 0x0),\n    gsSP2Triangles(12,  2, 14, 0x0, 15, 12, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701A550, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 4,  8,  5, 0x0,  9, 10,  7, 0x0),\n    gsSP2Triangles(11,  9,  7, 0x0,  6, 11,  7, 0x0),\n    gsSP1Triangle( 6, 12, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701A850 - 0x0701A920\nconst Gfx bbh_seg7_dl_0701A850[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0701A620),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0701A668),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0701A6E0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0701A748),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/34/model.inc.c",
    "content": "// 0x0701A920 - 0x0701A938\nstatic const Lights1 bbh_seg7_lights_0701A920 = gdSPDefLights1(\n    0x10, 0x11, 0x16,\n    0x2a, 0x2c, 0x37, 0x28, 0x28, 0x28\n);\n\n// 0x0701A938 - 0x0701A950\nstatic const Lights1 bbh_seg7_lights_0701A938 = gdSPDefLights1(\n    0x3c, 0x3c, 0x3c,\n    0x96, 0x96, 0x96, 0x28, 0x28, 0x28\n);\n\n// 0x0701A950 - 0x0701A968\nstatic const Lights1 bbh_seg7_lights_0701A950 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0701A968 - 0x0701A9C8\nstatic const Vtx bbh_seg7_vertex_0701A968[] = {\n    {{{ -3313,  -2457,   5450}, 0, {   990,  18362}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -3313,   -921,   5450}, 0, {   990,   3032}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -3023,   -921,   5740}, 0, {     0,   3032}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -3023,  -2457,   5740}, 0, {     0,  18362}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -3313,    410,   5450}, 0, {   990, -10252}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -3023,    410,   5740}, 0, {     0, -10252}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0701A9C8 - 0x0701AA08\nstatic const Vtx bbh_seg7_vertex_0701A9C8[] = {\n    {{{ -2118,   -204,   4617}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2191,   -204,   4472}, 0, {   478,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2227,   -204,   4509}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2082,   -204,   4581}, 0, {   478,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0701AA08 - 0x0701AB08\nstatic const Vtx bbh_seg7_vertex_0701AA08[] = {\n    {{{ -3023,   -306,   5015}, 0, {   260,    334}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2661,   -306,   4074}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1648,   -306,   5088}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2227,     51,   4509}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2191,     51,   4472}, 0, {   480,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2082,     51,   4581}, 0, {   478,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2118,     51,   4617}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3675,    410,   5088}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2661,    410,   4074}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1648,    410,   5088}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2661,    410,   6102}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2589,   -306,   5450}, 0, {   698,    334}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3385,   -306,   5378}, 0, {   260,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2661,    410,   6102}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2661,  -2457,   6102}, 0, {     0,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -3023,  -2457,   5740}, 0, {   332,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0701AB08 - 0x0701ABE8\nstatic const Vtx bbh_seg7_vertex_0701AB08[] = {\n    {{{ -3385,   -306,   5378}, 0, {   260,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3675,   -306,   5088}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2661,   -306,   4074}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1648,   -306,   5088}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2661,   -306,   6102}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2951,   -306,   5812}, 0, {   698,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2589,   -306,   5450}, 0, {   698,    334}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3675,    410,   5088}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2661,  -2457,   4074}, 0, {   990,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2661,    410,   4074}, 0, {   990,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3675,  -2457,   5088}, 0, {     0,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2661,    410,   6102}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -3023,  -2457,   5740}, 0, {   332,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -3023,    410,   5740}, 0, {   332,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0701ABE8 - 0x0701ACD8\nstatic const Vtx bbh_seg7_vertex_0701ABE8[] = {\n    {{{ -1986,  -1535,   5427}, 0, {   296,    310}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2661,  -2457,   6102}, 0, {     0,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1648,    410,   5088}, 0, {   990,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -3675,  -2457,   5088}, 0, {   990,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -3675,    410,   5088}, 0, {   990,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -3313,    410,   5450}, 0, {   624,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -3313,  -2457,   5450}, 0, {   624,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2661,  -2457,   4074}, 0, {  1000,    230}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2661,  -2457,   6102}, 0, {   -10,    230}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1986,  -2457,   5427}, 0, {   326,    402}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   307,  -2457,   5427}, 0, {   326,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   307,  -2457,   4710}, 0, {   684,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2024,  -2457,   4712}, 0, {   682,    394}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3675,  -2457,   5088}, 0, {   496,    -30}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1986,  -2457,   5427}, 0, {     0,    310}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0701ACD8 - 0x0701ADD8\nstatic const Vtx bbh_seg7_vertex_0701ACD8[] = {\n    {{{ -2661,    410,   4074}, 0, {     0,      0}, {0xa7, 0x01, 0x5a, 0xff}}},\n    {{{ -2227,     51,   4509}, 0, {   406,     96}, {0xa7, 0x01, 0x5a, 0xff}}},\n    {{{ -2118,     51,   4617}, 0, {   516,     96}, {0xa7, 0x01, 0x5a, 0xff}}},\n    {{{ -2661,  -2457,   6102}, 0, {     0,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2661,    410,   6102}, 0, {   990,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1648,    410,   5088}, 0, {   990,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1648,  -1536,   5088}, 0, {   296,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1986,  -1535,   5427}, 0, {   296,    310}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1648,  -1536,   5088}, 0, {   132,    454}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{   307,  -1535,   5427}, 0, {   990,      0}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{ -1986,  -1535,   5427}, 0, {   -16,    -30}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{   307,  -1535,   4710}, 0, {   990,    990}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{ -2024,  -1535,   4712}, 0, {     0,    990}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{ -2661,    410,   4074}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2118,     51,   4617}, 0, {   516,     96}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1648,    410,   5088}, 0, {   990,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x0701ADD8 - 0x0701AED8\nstatic const Vtx bbh_seg7_vertex_0701ADD8[] = {\n    {{{ -1648,    410,   5088}, 0, {   990,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2118,     51,   4617}, 0, {   516,     96}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2118,   -255,   4617}, 0, {   516,    206}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1648,  -1536,   5088}, 0, {   990,    662}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2227,   -255,   4509}, 0, {   406,    206}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2227,     51,   4509}, 0, {   406,     96}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2661,    410,   4074}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1648,  -1536,   5088}, 0, {   990,    662}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{ -2118,   -255,   4617}, 0, {   516,    206}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{ -2227,   -255,   4509}, 0, {   406,    206}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{ -2024,  -1535,   4712}, 0, {   610,    662}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2661,  -2457,   4074}, 0, {     0,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2024,  -2457,   4712}, 0, {   610,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{    77,  -2201,   4659}, 0, {     0,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -76,  -2201,   4710}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -76,  -2201,   4659}, 0, {   990,    478}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0701AED8 - 0x0701AF48\nstatic const Vtx bbh_seg7_vertex_0701AED8[] = {\n    {{{    77,  -2201,   4659}, 0, {     0,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    77,  -2201,   4710}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -76,  -2201,   4710}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -76,  -2457,   4659}, 0, {   990,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -76,  -2457,   4710}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    77,  -2457,   4710}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    77,  -2457,   4659}, 0, {     0,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0701AF48 - 0x0701B048\nstatic const Vtx bbh_seg7_vertex_0701AF48[] = {\n    {{{ -1986,  -2457,   5427}, 0, {  5694,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   307,  -1535,   5427}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   307,  -2457,   5427}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2024,  -1535,   4712}, 0, { -4826,      0}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{ -2024,  -2457,   4712}, 0, { -4826,   2012}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{   -76,  -2201,   4710}, 0, {    32,   1444}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{   -76,  -2457,   4710}, 0, {    32,   2012}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{   307,  -1535,   4710}, 0, {   990,      0}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{   -76,  -2201,   4710}, 0, {    32,   1444}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    77,  -2201,   4710}, 0, {   416,   1444}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   307,  -1535,   4710}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    77,  -2457,   4710}, 0, {   416,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   307,  -2457,   4710}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   307,  -2457,   5427}, 0, {  1756,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   307,  -1535,   5427}, 0, {  1756,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   307,  -1535,   4710}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0701B048 - 0x0701B148\nstatic const Vtx bbh_seg7_vertex_0701B048[] = {\n    {{{   307,  -2457,   5427}, 0, {  1756,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   307,  -1535,   4710}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   307,  -2457,   4710}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    77,  -2457,   4659}, 0, {   478,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    77,  -2457,   4710}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    77,  -2201,   4710}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1986,  -2457,   5427}, 0, {  5694,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1986,  -1535,   5427}, 0, {  5694,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   307,  -1535,   5427}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2118,     51,   4617}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2082,   -204,   4581}, 0, {   480,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2118,   -204,   4617}, 0, {     0,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2082,     51,   4581}, 0, {   480,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2227,   -204,   4509}, 0, {     0,   2012}, {0x5b, 0x00, 0x58, 0xff}}},\n    {{{ -2191,     51,   4472}, 0, {   478,      0}, {0x5b, 0x00, 0x58, 0xff}}},\n    {{{ -2227,     51,   4509}, 0, {     0,      0}, {0x5b, 0x00, 0x58, 0xff}}},\n};\n\n// 0x0701B148 - 0x0701B1E8\nstatic const Vtx bbh_seg7_vertex_0701B148[] = {\n    {{{ -2227,   -204,   4509}, 0, {     0,   2012}, {0x5b, 0x00, 0x58, 0xff}}},\n    {{{ -2191,   -204,   4472}, 0, {   480,   2012}, {0x5b, 0x00, 0x58, 0xff}}},\n    {{{ -2191,     51,   4472}, 0, {   478,      0}, {0x5b, 0x00, 0x58, 0xff}}},\n    {{{    77,  -2457,   4659}, 0, {   478,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    77,  -2201,   4710}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    77,  -2201,   4659}, 0, {   478,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -76,  -2201,   4659}, 0, {   478,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -76,  -2457,   4710}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -76,  -2457,   4659}, 0, {   478,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -76,  -2201,   4710}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0701B1E8 - 0x0701B2A8\nstatic const Vtx bbh_seg7_vertex_0701B1E8[] = {\n    {{{ -2589,   -306,   5450}, 0, {  3034,    648}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -3023,   -204,   5015}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -3023,   -306,   5015}, 0, {     0,    648}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2589,   -204,   5450}, 0, {  3034,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -3023,   -306,   5015}, 0, {  2524,    648}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3385,   -204,   5378}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3385,   -306,   5378}, 0, {     0,    648}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3023,   -204,   5015}, 0, {  2524,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2951,   -306,   5812}, 0, {     0,    648}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2951,   -204,   5812}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2589,   -204,   5450}, 0, {  2522,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2589,   -306,   5450}, 0, {  2522,    648}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0701B2A8 - 0x0701B328\nstatic const Vtx bbh_seg7_vertex_0701B2A8[] = {\n    {{{ -2589,   -204,   5450}, 0, {     0,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1648,   -204,   5088}, 0, {  4056,  -6164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2661,   -204,   4074}, 0, {-10248,  -6164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3023,   -204,   5015}, 0, { -6160,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2951,   -204,   5812}, 0, {     0,   8142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2661,   -204,   6102}, 0, {  4056,   8142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3385,   -204,   5378}, 0, { -6160,   8142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3675,   -204,   5088}, 0, {-10248,   8142}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0701B328 - 0x0701B380\nstatic const Gfx bbh_seg7_dl_0701B328[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_0701A920.l, 1),\n    gsSPLight(&bbh_seg7_lights_0701A920.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0701A968, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  1,  5,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701B380 - 0x0701B558\nstatic const Gfx bbh_seg7_dl_0701B380[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_0701A938.l, 1),\n    gsSPLight(&bbh_seg7_lights_0701A938.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0701A9C8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPLight(&bbh_seg7_lights_0701A950.l, 1),\n    gsSPLight(&bbh_seg7_lights_0701A950.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0701AA08, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  2, 11,  0, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701AB08, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701ABE8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 11, 12, 0x0),\n    gsSP2Triangles( 9, 12,  7, 0x0,  7, 13,  8, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701ACD8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 8, 11,  9, 0x0,  8, 12, 11, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701ADD8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 4, 10,  3, 0x0, 11, 10,  4, 0x0),\n    gsSP2Triangles(11, 12, 10, 0x0, 11,  4,  6, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701AED8, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 3,  5,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701B558 - 0x0701B620\nstatic const Gfx bbh_seg7_dl_0701B558[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_0701AF48, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  3,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701B048, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701B148, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701B620 - 0x0701B678\nstatic const Gfx bbh_seg7_dl_0701B620[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_0701B1E8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701B678 - 0x0701B6D0\nstatic const Gfx bbh_seg7_dl_0701B678[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09009000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_0701B2A8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 2,  6,  3, 0x0,  2,  7,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701B6D0 - 0x0701B7A8\nconst Gfx bbh_seg7_dl_0701B6D0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0701B328),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0701B380),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0701B558),\n    gsSPDisplayList(bbh_seg7_dl_0701B620),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0701B678),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/35/model.inc.c",
    "content": "// 0x0701B7A8 - 0x0701B7C0\nstatic const Lights1 bbh_seg7_lights_0701B7A8 = gdSPDefLights1(\n    0x24, 0x11, 0x0b,\n    0x5a, 0x2c, 0x1d, 0x28, 0x28, 0x28\n);\n\n// 0x0701B7C0 - 0x0701B7D8\nstatic const Lights1 bbh_seg7_lights_0701B7C0 = gdSPDefLights1(\n    0x20, 0x20, 0x20,\n    0x50, 0x50, 0x50, 0x28, 0x28, 0x28\n);\n\n// 0x0701B7D8 - 0x0701B7F0\nstatic const Lights1 bbh_seg7_lights_0701B7D8 = gdSPDefLights1(\n    0x3c, 0x3c, 0x3c,\n    0x96, 0x96, 0x96, 0x28, 0x28, 0x28\n);\n\n// 0x0701B7F0 - 0x0701B808\nstatic const Lights1 bbh_seg7_lights_0701B7F0 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0701B808 - 0x0701B820\nstatic const Lights1 bbh_seg7_lights_0701B808 = gdSPDefLights1(\n    0x24, 0x07, 0x00,\n    0x5a, 0x13, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x0701B820 - 0x0701B838\nstatic const Lights1 bbh_seg7_lights_0701B820 = gdSPDefLights1(\n    0x44, 0x1c, 0x0c,\n    0xaa, 0x46, 0x1e, 0x28, 0x28, 0x28\n);\n\n// 0x0701B838 - 0x0701B850\nstatic const Lights1 bbh_seg7_lights_0701B838 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x0701B850 - 0x0701B940\nstatic const Vtx bbh_seg7_vertex_0701B850[] = {\n    {{{  1331,   1717,   2150}, 0, {  1502,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1331,   1922,   2458}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1331,   1717,   2458}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,   1922,   2714}, 0, {   990,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{     0,   1717,   2458}, 0, {  -814,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   256,   1717,   2714}, 0, {   990,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{     0,   1922,   2458}, 0, {  -814,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1331,   1922,   2458}, 0, {  1774,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1075,   1717,   2714}, 0, {     0,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1331,   1717,   2458}, 0, {  1774,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1075,   1922,   2714}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1075,   1922,   2714}, 0, {  4056,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,   1717,   2714}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1075,   1717,   2714}, 0, {  4056,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,   1922,   2714}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0701B940 - 0x0701B9B0\nstatic const Vtx bbh_seg7_vertex_0701B940[] = {\n    {{{     0,   1717,   2458}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,   1922,   2458}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,   1922,   1946}, 0, { -1562,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1331,   1717,   2150}, 0, {  1502,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1331,   1922,   1946}, 0, {  2524,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1331,   1922,   2458}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,   1717,   2150}, 0, {  -540,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0701B9B0 - 0x0701BAB0\nstatic const Vtx bbh_seg7_vertex_0701B9B0[] = {\n    {{{  5530,   -204,  -1945}, 0, { 11210,  -4120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3686,   -204,  -1637}, 0, {  7530,  -3506}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3686,   -204,   2150}, 0, {  7530,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2661,   -204,   3929}, 0, { -5140,   7604}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1503,   -204,   5088}, 0, { -2828,   9918}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2048,   -204,   2150}, 0, {  4260,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2661,   -204,   6246}, 0, { -5140,  12230}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2149,   -204,   6758}, 0, { -4118,  13252}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3482,   -204,   6758}, 0, {  7122,  13252}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2458,   -204,   2662}, 0, {  5078,   5076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3277,   -204,   2662}, 0, {  6714,   5076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5530,   -204,   4710}, 0, { 11210,   9164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2048,   -204,  -1637}, 0, {  4260,  -3506}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2149,   -204,  -3993}, 0, { -4118,  -8208}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4197,   -204,  -1945}, 0, { -8206,  -4120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3482,   -204,  -3993}, 0, {  7122,  -8208}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0701BAB0 - 0x0701BAF0\nstatic const Vtx bbh_seg7_vertex_0701BAB0[] = {\n    {{{ -4197,   -204,   4710}, 0, { -8206,   9164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3820,   -204,   5088}, 0, { -7452,   9918}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2661,   -204,   3929}, 0, { -5140,   7604}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4197,   -204,  -1945}, 0, { -8206,  -4120}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0701BAF0 - 0x0701BBF0\nstatic const Vtx bbh_seg7_vertex_0701BAF0[] = {\n    {{{ -2082,   -204,   4581}, 0, {   478,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2155,   -204,   4436}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2191,   -204,   4472}, 0, {   478,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    53,      0,   2423}, 0, {   232,    310}, {0xde, 0x78, 0x13, 0xff}}},\n    {{{  -479,   -204,   2727}, 0, {    28,    528}, {0xde, 0x78, 0x13, 0xff}}},\n    {{{   307,      0,   2867}, 0, {   330,    626}, {0xde, 0x78, 0x13, 0xff}}},\n    {{{  -225,   -204,   3172}, 0, {   126,    844}, {0xde, 0x78, 0x13, 0xff}}},\n    {{{  1024,      0,   2867}, 0, {   606,    626}, {0x22, 0x78, 0x13, 0xff}}},\n    {{{  1557,   -204,   3172}, 0, {   810,    844}, {0x22, 0x78, 0x13, 0xff}}},\n    {{{  1811,   -204,   2727}, 0, {   908,    528}, {0x22, 0x78, 0x13, 0xff}}},\n    {{{  1278,      0,   2423}, 0, {   702,    310}, {0x22, 0x78, 0x13, 0xff}}},\n    {{{  1434,      0,   2150}, 0, {   762,    116}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -101,      0,   2150}, 0, {   172,    116}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   307,      0,   2867}, 0, {   330,    626}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,      0,   2867}, 0, {   606,    626}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2046,   -204,   4545}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0701BBF0 - 0x0701BCF0\nstatic const Vtx bbh_seg7_vertex_0701BBF0[] = {\n    {{{ -2191,     51,   4472}, 0, {   480,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2155,     51,   4436}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2046,     51,   4545}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   819,    256,   2099}, 0, {   480,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   512,    256,   2150}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   512,    256,   2099}, 0, {   478,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   819,    256,   2150}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   512,      0,   2150}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   819,      0,   2150}, 0, {     0,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   819,      0,   2099}, 0, {   480,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,      0,   2099}, 0, {   480,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1637,    256,  -1637}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1484,    256,  -1586}, 0, {   480,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1637,    256,  -1586}, 0, {   480,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1484,    256,  -1637}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2082,     51,   4581}, 0, {   478,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0701BCF0 - 0x0701BDF0\nstatic const Vtx bbh_seg7_vertex_0701BCF0[] = {\n    {{{ -2661,    512,   6246}, 0, {     0,   1540}, {0x3a, 0x60, 0x3a, 0xff}}},\n    {{{ -2010,   1126,   4581}, 0, {  4056,      0}, {0x3a, 0x60, 0x3a, 0xff}}},\n    {{{ -3168,   1126,   5740}, 0, {     0,      0}, {0x3a, 0x60, 0x3a, 0xff}}},\n    {{{ -2661,    512,   3929}, 0, {  4566,   1500}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2155,   1126,   4436}, 0, {   990,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2010,   1126,   4581}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1503,    512,   5088}, 0, { -3606,   1500}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2155,   1126,   4436}, 0, {     0,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3313,   1126,   5595}, 0, {  4056,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3168,   1126,   5740}, 0, {  4056,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2010,   1126,   4581}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3313,   1126,   5595}, 0, {   990,      0}, {0xc6, 0x60, 0xc6, 0xff}}},\n    {{{ -2155,   1126,   4436}, 0, { -3096,      0}, {0xc6, 0x60, 0xc6, 0xff}}},\n    {{{ -3820,    512,   5088}, 0, {   990,   1680}, {0xc6, 0x60, 0xc6, 0xff}}},\n    {{{ -2661,    512,   3929}, 0, { -3096,   1680}, {0xc6, 0x60, 0xc6, 0xff}}},\n    {{{ -1503,    512,   5088}, 0, {  4056,   1540}, {0x3a, 0x60, 0x3a, 0xff}}},\n};\n\n// 0x0701BDF0 - 0x0701BEE0\nstatic const Vtx bbh_seg7_vertex_0701BDF0[] = {\n    {{{   102,   2355,   2150}, 0, {     0,   2012}, {0x65, 0xb4, 0x00, 0xff}}},\n    {{{   410,   2765,   1946}, 0, {   990,      0}, {0x65, 0xb4, 0x00, 0xff}}},\n    {{{   410,   2765,   2150}, 0, {   -46,      0}, {0x65, 0xb4, 0x00, 0xff}}},\n    {{{  1229,   1922,   2146}, 0, {   990,   2012}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  1229,   2355,   2150}, 0, {   990,      0}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  1228,   1922,   1946}, 0, {     0,   2012}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  1229,   2355,   1946}, 0, {   -52,      0}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{   922,   2765,   1946}, 0, {     0,      0}, {0x9b, 0xb4, 0x00, 0xff}}},\n    {{{  1229,   2355,   2150}, 0, {   990,   2012}, {0x9b, 0xb4, 0x00, 0xff}}},\n    {{{   922,   2765,   2150}, 0, {   990,      0}, {0x9b, 0xb4, 0x00, 0xff}}},\n    {{{  1229,   2355,   1946}, 0, {     0,   2012}, {0x9b, 0xb4, 0x00, 0xff}}},\n    {{{   922,   2765,   2150}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   410,   2765,   1946}, 0, {   990,   2012}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   922,   2765,   1946}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   410,   2765,   2150}, 0, {     0,   2012}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0701BEE0 - 0x0701BFD0\nstatic const Vtx bbh_seg7_vertex_0701BEE0[] = {\n    {{{   922,   2765,   2150}, 0, {  1604,    328}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1331,   2355,   2150}, 0, {  2626,   1148}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   922,   2867,   2150}, 0, {  1604,    124}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,   2355,   2150}, 0, {     0,   2012}, {0x65, 0xb4, 0x00, 0xff}}},\n    {{{   102,   2355,   1946}, 0, {  1006,   2012}, {0x65, 0xb4, 0x00, 0xff}}},\n    {{{   410,   2765,   1946}, 0, {   990,      0}, {0x65, 0xb4, 0x00, 0xff}}},\n    {{{   102,   2355,   2150}, 0, {   -52,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,   1922,   2146}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,   2355,   1946}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,   1922,   1946}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,   2355,   2150}, 0, {  2420,   1148}, {0x00, 0xff, 0x7e, 0xff}}},\n    {{{  1331,   1922,   2146}, 0, {  2626,   2012}, {0x00, 0xff, 0x7e, 0xff}}},\n    {{{  1331,   2355,   2150}, 0, {  2626,   1148}, {0x00, 0xff, 0x7e, 0xff}}},\n    {{{  1229,   1922,   2146}, 0, {  2420,   2012}, {0x00, 0xff, 0x7e, 0xff}}},\n    {{{  1229,   2355,   2150}, 0, {  2420,   1148}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0701BFD0 - 0x0701C0D0\nstatic const Vtx bbh_seg7_vertex_0701BFD0[] = {\n    {{{  1331,   1922,   2146}, 0, {   -22,   1752}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1331,   1922,   1946}, 0, {   480,   1752}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1331,   2355,   1454}, 0, {  1706,    308}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   410,   2765,   2150}, 0, {   990,    328}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   922,   2765,   2150}, 0, {  1604,    328}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   922,   2867,   2150}, 0, {  1604,    124}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   410,   2867,   2150}, 0, {   990,    124}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,   2355,   2150}, 0, {   172,   1148}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,   2355,   2150}, 0, {     0,   1148}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,   1922,   2146}, 0, {     0,   2012}, {0x00, 0xff, 0x7e, 0xff}}},\n    {{{   102,   1922,   2146}, 0, {   172,   2012}, {0x00, 0xff, 0x7e, 0xff}}},\n    {{{   102,   2355,   2150}, 0, {   172,   1148}, {0x00, 0xff, 0x7e, 0xff}}},\n    {{{     0,   2355,   2150}, 0, {     0,   1148}, {0x00, 0xff, 0x7e, 0xff}}},\n    {{{     0,   2355,   2150}, 0, {     0,    308}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,   2355,   1454}, 0, {  1706,    308}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,   1922,   2146}, 0, {   -22,   1752}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0701C0D0 - 0x0701C1B0\nstatic const Vtx bbh_seg7_vertex_0701C0D0[] = {\n    {{{     0,   2355,   1454}, 0, {  1706,    308}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,   1922,   1946}, 0, {   480,   1752}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,   1922,   2146}, 0, {   -22,   1752}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1331,   1922,   2146}, 0, {   -22,   1752}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1331,   2355,   1454}, 0, {  1706,    308}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1331,   2355,   2150}, 0, {     0,    308}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3072,   3277,    102}, 0, {  3800,    376}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1740,   3277,    102}, 0, { -2202,    376}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1740,   3277,    410}, 0, { -2202,   1604}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3072,   3277,    410}, 0, {  3800,   1604}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2354,   1741,   2150}, 0, {  2906,   1456}, {0x8b, 0x2f, 0x00, 0xff}}},\n    {{{ -1740,   3277,    410}, 0, {   734,    -48}, {0x8b, 0x2f, 0x00, 0xff}}},\n    {{{ -1740,   3277,    102}, 0, {   352,    -48}, {0x8b, 0x2f, 0x00, 0xff}}},\n    {{{ -2354,   1741,  -1637}, 0, { -1818,   1456}, {0x8b, 0x2f, 0x00, 0xff}}},\n};\n\n// 0x0701C1B0 - 0x0701C2A0\nstatic const Vtx bbh_seg7_vertex_0701C1B0[] = {\n    {{{  3686,   1741,   2150}, 0, { -1308,   1456}, {0x75, 0x2f, 0x00, 0xff}}},\n    {{{  3686,   1741,  -1637}, 0, {  3418,   1456}, {0x75, 0x2f, 0x00, 0xff}}},\n    {{{  3072,   3277,    410}, 0, {   862,    -48}, {0x75, 0x2f, 0x00, 0xff}}},\n    {{{  3072,   3277,    102}, 0, {  1246,    -48}, {0x75, 0x2f, 0x00, 0xff}}},\n    {{{ -1740,   2560,   2150}, 0, {     0,      0}, {0xab, 0x40, 0x44, 0xff}}},\n    {{{ -1945,   1741,   2662}, 0, {   980,   1076}, {0xab, 0x40, 0x44, 0xff}}},\n    {{{ -1637,   2150,   2662}, 0, {   980,    348}, {0xab, 0x40, 0x44, 0xff}}},\n    {{{ -2354,   1741,   2150}, 0, {     0,   1428}, {0xab, 0x40, 0x44, 0xff}}},\n    {{{ -2354,   1741,   2150}, 0, {   990,   1428}, {0x9b, 0x4c, 0x00, 0xff}}},\n    {{{ -1740,   2560,   2150}, 0, {   990,      0}, {0x9b, 0x4c, 0x00, 0xff}}},\n    {{{ -1740,   2560,   1229}, 0, {  -158,      0}, {0x9b, 0x4c, 0x00, 0xff}}},\n    {{{ -1637,   2150,   2662}, 0, {  -644,    480}, {0x00, 0x63, 0x4f, 0xff}}},\n    {{{ -1433,   2150,   2662}, 0, {  -644,   1500}, {0x00, 0x63, 0x4f, 0xff}}},\n    {{{ -1330,   2560,   2150}, 0, {   990,   2012}, {0x00, 0x63, 0x4f, 0xff}}},\n    {{{ -1740,   2560,   2150}, 0, {   990,      0}, {0x00, 0x63, 0x4f, 0xff}}},\n};\n\n// 0x0701C2A0 - 0x0701C380\nstatic const Vtx bbh_seg7_vertex_0701C2A0[] = {\n    {{{  2662,   2560,   2150}, 0, {     0,      0}, {0xab, 0x40, 0x44, 0xff}}},\n    {{{  2048,   1741,   2150}, 0, {     0,   1428}, {0xab, 0x40, 0x44, 0xff}}},\n    {{{  2765,   2150,   2662}, 0, {   980,    348}, {0xab, 0x40, 0x44, 0xff}}},\n    {{{ -1433,   2150,   2662}, 0, {   -22,    412}, {0x55, 0x40, 0x44, 0xff}}},\n    {{{ -1125,   1741,   2662}, 0, {   -22,   1264}, {0x55, 0x40, 0x44, 0xff}}},\n    {{{  -716,   1741,   2150}, 0, {   990,   1672}, {0x55, 0x40, 0x44, 0xff}}},\n    {{{ -1330,   2560,   2150}, 0, {   990,      0}, {0x55, 0x40, 0x44, 0xff}}},\n    {{{  -716,   1741,   2150}, 0, {     0,   1428}, {0x65, 0x4c, 0x00, 0xff}}},\n    {{{ -1330,   2560,   1229}, 0, {   888,      0}, {0x65, 0x4c, 0x00, 0xff}}},\n    {{{ -1330,   2560,   2150}, 0, {     0,      0}, {0x65, 0x4c, 0x00, 0xff}}},\n    {{{  2048,   1741,   2150}, 0, {   990,   1840}, {0x9b, 0x4c, 0x00, 0xff}}},\n    {{{  2662,   2560,   2150}, 0, {   990,    140}, {0x9b, 0x4c, 0x00, 0xff}}},\n    {{{  2662,   2560,   1229}, 0, {  -540,    140}, {0x9b, 0x4c, 0x00, 0xff}}},\n    {{{  2458,   1741,   2662}, 0, {   980,   1076}, {0xab, 0x40, 0x44, 0xff}}},\n};\n\n// 0x0701C380 - 0x0701C460\nstatic const Vtx bbh_seg7_vertex_0701C380[] = {\n    {{{  2765,   2150,   2662}, 0, {  -644,    480}, {0x00, 0x63, 0x4f, 0xff}}},\n    {{{  3072,   2560,   2150}, 0, {   990,   2012}, {0x00, 0x63, 0x4f, 0xff}}},\n    {{{  2662,   2560,   2150}, 0, {   990,      0}, {0x00, 0x63, 0x4f, 0xff}}},\n    {{{  2970,   2150,   2662}, 0, {  -644,   1500}, {0x00, 0x63, 0x4f, 0xff}}},\n    {{{  2970,   2150,   2662}, 0, {   -22,    412}, {0x55, 0x40, 0x44, 0xff}}},\n    {{{  3277,   1741,   2662}, 0, {   -22,   1264}, {0x55, 0x40, 0x44, 0xff}}},\n    {{{  3686,   1741,   2150}, 0, {   990,   1672}, {0x55, 0x40, 0x44, 0xff}}},\n    {{{  3072,   2560,   2150}, 0, {   990,      0}, {0x55, 0x40, 0x44, 0xff}}},\n    {{{  3686,   1741,   2150}, 0, {     0,   1428}, {0x65, 0x4c, 0x00, 0xff}}},\n    {{{  3072,   2560,   1229}, 0, {  1118,      0}, {0x65, 0x4c, 0x00, 0xff}}},\n    {{{  3072,   2560,   2150}, 0, {     0,      0}, {0x65, 0x4c, 0x00, 0xff}}},\n    {{{   410,   2867,    874}, 0, {  1092,    504}, {0x00, 0x5f, 0x54, 0xff}}},\n    {{{  3072,   3277,    410}, 0, {  3750,      0}, {0x00, 0x5f, 0x54, 0xff}}},\n    {{{ -1740,   3277,    410}, 0, { -1052,      0}, {0x00, 0x5f, 0x54, 0xff}}},\n};\n\n// 0x0701C460 - 0x0701C560\nstatic const Vtx bbh_seg7_vertex_0701C460[] = {\n    {{{  2048,   1741,   2150}, 0, {  2728,   1984}, {0x00, 0x5f, 0x54, 0xff}}},\n    {{{  2662,   2560,   1229}, 0, {  3340,    912}, {0x00, 0x5f, 0x54, 0xff}}},\n    {{{  1331,   2355,   1454}, 0, {  2012,   1176}, {0x00, 0x5f, 0x54, 0xff}}},\n    {{{  1331,   1741,   2150}, 0, {  2012,   1984}, {0x00, 0x5f, 0x54, 0xff}}},\n    {{{   922,   2867,    874}, 0, {  1604,    504}, {0x00, 0x5f, 0x54, 0xff}}},\n    {{{   922,   2867,    874}, 0, {  1604,    504}, {0x00, 0x5f, 0x53, 0xff}}},\n    {{{  2662,   2560,   1229}, 0, {  3340,    912}, {0x00, 0x5f, 0x53, 0xff}}},\n    {{{  3072,   3277,    410}, 0, {  3750,      0}, {0x00, 0x5f, 0x53, 0xff}}},\n    {{{     0,   1741,   2150}, 0, {   684,   1984}, {0x00, 0x5f, 0x54, 0xff}}},\n    {{{     0,   2355,   1454}, 0, {   684,   1176}, {0x00, 0x5f, 0x54, 0xff}}},\n    {{{  -716,   1741,   2150}, 0, {     0,   1984}, {0x00, 0x5f, 0x54, 0xff}}},\n    {{{ -1330,   2560,   1229}, 0, {  -644,    912}, {0x00, 0x5f, 0x54, 0xff}}},\n    {{{   410,   2867,    874}, 0, {  1092,    504}, {0x00, 0x5f, 0x54, 0xff}}},\n    {{{ -1740,   3277,    410}, 0, { -1052,      0}, {0x00, 0x5f, 0x53, 0xff}}},\n    {{{ -1330,   2560,   1229}, 0, {  -644,    912}, {0x00, 0x5f, 0x53, 0xff}}},\n    {{{   410,   2867,    874}, 0, {  1092,    504}, {0x00, 0x5f, 0x53, 0xff}}},\n};\n\n// 0x0701C560 - 0x0701C650\nstatic const Vtx bbh_seg7_vertex_0701C560[] = {\n    {{{  3072,   3277,    410}, 0, {  4694,      0}, {0x00, 0x5f, 0x53, 0xff}}},\n    {{{  2662,   2560,   1229}, 0, {  4184,    744}, {0x00, 0x5f, 0x53, 0xff}}},\n    {{{  3072,   2560,   1229}, 0, {  4694,    744}, {0x00, 0x5f, 0x53, 0xff}}},\n    {{{   410,   2867,    874}, 0, {  1092,    504}, {0x00, 0x5f, 0x54, 0xff}}},\n    {{{   922,   2867,    874}, 0, {  1604,    504}, {0x00, 0x5f, 0x54, 0xff}}},\n    {{{  3072,   3277,    410}, 0, {  3750,      0}, {0x00, 0x5f, 0x54, 0xff}}},\n    {{{   410,   2867,   2150}, 0, {  1050,      0}, {0x9d, 0x4f, 0x00, 0xff}}},\n    {{{     0,   2355,   1454}, 0, {   436,   1124}, {0x9d, 0x4f, 0x00, 0xff}}},\n    {{{     0,   2355,   2150}, 0, {  1050,   1124}, {0x9d, 0x4f, 0x00, 0xff}}},\n    {{{  3072,   3277,    410}, 0, {  4694,      0}, {0x01, 0x5f, 0x53, 0xff}}},\n    {{{  3072,   2560,   1229}, 0, {  4694,    744}, {0x01, 0x5f, 0x53, 0xff}}},\n    {{{  3686,   1741,   2150}, 0, {  5462,   1624}, {0x01, 0x5f, 0x53, 0xff}}},\n    {{{ -1740,   2560,   1229}, 0, { -1308,    744}, {0xff, 0x5f, 0x53, 0xff}}},\n    {{{ -1740,   3277,    410}, 0, { -1308,      0}, {0xff, 0x5f, 0x53, 0xff}}},\n    {{{ -2354,   1741,   2150}, 0, { -2074,   1624}, {0xff, 0x5f, 0x53, 0xff}}},\n};\n\n// 0x0701C650 - 0x0701C730\nstatic const Vtx bbh_seg7_vertex_0701C650[] = {\n    {{{ -1330,   2560,   1229}, 0, {  -796,    744}, {0x00, 0x5f, 0x53, 0xff}}},\n    {{{ -1740,   3277,    410}, 0, { -1308,      0}, {0x00, 0x5f, 0x53, 0xff}}},\n    {{{ -1740,   2560,   1229}, 0, { -1308,    744}, {0x00, 0x5f, 0x53, 0xff}}},\n    {{{ -1740,   3277,    102}, 0, {  2268,      0}, {0x00, 0x5f, 0xac, 0xff}}},\n    {{{  3072,   3277,    102}, 0, { -3734,      0}, {0x00, 0x5f, 0xac, 0xff}}},\n    {{{  3686,   1741,  -1637}, 0, { -4502,   1624}, {0x00, 0x5f, 0xac, 0xff}}},\n    {{{ -2354,   1741,  -1637}, 0, {  3034,   1624}, {0x00, 0x5f, 0xac, 0xff}}},\n    {{{   410,   2867,   2150}, 0, {  1050,      0}, {0x9d, 0x4f, 0x00, 0xff}}},\n    {{{   410,   2867,    874}, 0, {  -286,      0}, {0x9d, 0x4f, 0x00, 0xff}}},\n    {{{     0,   2355,   1454}, 0, {   436,   1124}, {0x9d, 0x4f, 0x00, 0xff}}},\n    {{{  1331,   2355,   2150}, 0, {     0,   1776}, {0x63, 0x4f, 0x00, 0xff}}},\n    {{{  1331,   2355,   1454}, 0, {  1194,   1776}, {0x63, 0x4f, 0x00, 0xff}}},\n    {{{   922,   2867,    874}, 0, {  2642,      0}, {0x63, 0x4f, 0x00, 0xff}}},\n    {{{   922,   2867,   2150}, 0, {     0,      0}, {0x63, 0x4f, 0x00, 0xff}}},\n};\n\n// 0x0701C730 - 0x0701C820\nstatic const Vtx bbh_seg7_vertex_0701C730[] = {\n    {{{ -1484,    256,  -1637}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1484,      0,  -1586}, 0, {   478,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1484,    256,  -1586}, 0, {   478,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   819,      0,   2099}, 0, {   478,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   819,    256,   2150}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   819,    256,   2099}, 0, {   480,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   819,      0,   2150}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,    256,   2150}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,      0,   2150}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,      0,   2099}, 0, {   478,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,    256,   2099}, 0, {   480,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1637,    256,  -1586}, 0, {   478,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1637,      0,  -1637}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1637,    256,  -1637}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1637,      0,  -1586}, 0, {   478,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0701C820 - 0x0701C8D0\nstatic const Vtx bbh_seg7_vertex_0701C820[] = {\n    {{{ -2082,     51,   4581}, 0, {   480,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2046,     51,   4545}, 0, {   990,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2046,   -204,   4545}, 0, {   990,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1484,    256,  -1637}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1484,      0,  -1637}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1484,      0,  -1586}, 0, {   478,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2191,   -204,   4472}, 0, {   480,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2155,   -204,   4436}, 0, {   990,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2155,     51,   4436}, 0, {   990,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2191,     51,   4472}, 0, {   478,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2082,   -204,   4581}, 0, {   480,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0701C8D0 - 0x0701C990\nstatic const Vtx bbh_seg7_vertex_0701C8D0[] = {\n    {{{ -1330,   2560,   1229}, 0, {  2268,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1740,   2560,   2150}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   2560,   2150}, 0, {     0,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1740,   2560,   1229}, 0, {  2268,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3072,   2560,   1229}, 0, {  2268,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2662,   2560,   1229}, 0, {  2268,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2662,   2560,   2150}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3072,   2560,   2150}, 0, {     0,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   922,   2867,   2150}, 0, {     0,   1604}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   410,   2867,    874}, 0, {  2642,    376}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   410,   2867,   2150}, 0, {     0,    376}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   922,   2867,    874}, 0, {  2642,   1604}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0701C990 - 0x0701CA80\nstatic const Vtx bbh_seg7_vertex_0701C990[] = {\n    {{{  1434,      0,   2150}, 0, {  1532,      0}, {0x6e, 0x00, 0x3f, 0xff}}},\n    {{{  1278,   -204,   2423}, 0, {     0,    988}, {0x6e, 0x00, 0x3f, 0xff}}},\n    {{{  1434,   -204,   2150}, 0, {  1532,    988}, {0x6e, 0x00, 0x3f, 0xff}}},\n    {{{  -306,   -204,  -1637}, 0, {     0,    992}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1279,      0,  -1637}, 0, {  4822,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -306,      0,  -1637}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1279,   -204,  -1637}, 0, {  4822,    988}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1842,   -204,  -1637}, 0, {  7632,    988}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2354,   -204,  -1637}, 0, { 10188,    988}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2354,      0,  -1637}, 0, { 10188,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1842,      0,  -1637}, 0, {  7632,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    53,   -204,   2423}, 0, {  1532,    992}, {0x92, 0x00, 0x3e, 0xff}}},\n    {{{    53,      0,   2423}, 0, {  1532,      0}, {0x92, 0x00, 0x3e, 0xff}}},\n    {{{  -101,      0,   2150}, 0, {     0,      0}, {0x92, 0x00, 0x3e, 0xff}}},\n    {{{  -101,   -204,   2150}, 0, {     0,    992}, {0x92, 0x00, 0x3e, 0xff}}},\n};\n\n// 0x0701CA80 - 0x0701CB70\nstatic const Vtx bbh_seg7_vertex_0701CA80[] = {\n    {{{  1024,   -204,   2867}, 0, {     0,    988}, {0xc1, 0x00, 0x6e, 0xff}}},\n    {{{  1557,   -204,   3172}, 0, {  2012,      0}, {0xc1, 0x00, 0x6e, 0xff}}},\n    {{{  1024,      0,   2867}, 0, {     0,      0}, {0xc1, 0x00, 0x6e, 0xff}}},\n    {{{  1434,      0,   2150}, 0, {  1532,      0}, {0x6e, 0x00, 0x3f, 0xff}}},\n    {{{  1278,      0,   2423}, 0, {     0,      0}, {0x6e, 0x00, 0x3f, 0xff}}},\n    {{{  1278,   -204,   2423}, 0, {     0,    988}, {0x6e, 0x00, 0x3f, 0xff}}},\n    {{{   307,      0,   2867}, 0, {   990,      0}, {0x3f, 0x00, 0x6e, 0xff}}},\n    {{{  -225,   -204,   3172}, 0, { -1052,      0}, {0x3f, 0x00, 0x6e, 0xff}}},\n    {{{   307,   -204,   2867}, 0, {   990,    988}, {0x3f, 0x00, 0x6e, 0xff}}},\n    {{{    53,   -204,   2423}, 0, {   990,    992}, {0xc1, 0x00, 0x92, 0xff}}},\n    {{{  -479,   -204,   2727}, 0, { -1052,      0}, {0xc1, 0x00, 0x92, 0xff}}},\n    {{{    53,      0,   2423}, 0, {   990,      0}, {0xc1, 0x00, 0x92, 0xff}}},\n    {{{  1278,      0,   2423}, 0, {     0,      0}, {0x3e, 0x00, 0x92, 0xff}}},\n    {{{  1811,   -204,   2727}, 0, {  2012,      0}, {0x3e, 0x00, 0x92, 0xff}}},\n    {{{  1278,   -204,   2423}, 0, {     0,    992}, {0x3e, 0x00, 0x92, 0xff}}},\n};\n\n// 0x0701CB70 - 0x0701CC60\nstatic const Vtx bbh_seg7_vertex_0701CB70[] = {\n    {{{  3686,   -204,    410}, 0, {   990,    988}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3686,      0,    410}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3686,      0,   2150}, 0, { -7694,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2048,      0,   2150}, 0, {  3034,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1434,      0,   2150}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1434,   -204,   2150}, 0, {     0,    988}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,   -204,   2150}, 0, {  3034,    988}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -101,      0,   2150}, 0, {  3034,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -204,   2150}, 0, {     0,    988}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -101,   -204,   2150}, 0, {  3034,    988}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,      0,   2150}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1024,      0,   2867}, 0, {  3544,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   307,   -204,   2867}, 0, {     0,    988}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1024,   -204,   2867}, 0, {  3544,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   307,      0,   2867}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0701CC60 - 0x0701CD50\nstatic const Vtx bbh_seg7_vertex_0701CC60[] = {\n    {{{  1741,   -204,  -1637}, 0, { -9228,    988}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -306,   -204,  -1637}, 0, {   990,    988}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -306,      0,  -1637}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3686,   -204,    410}, 0, {   990,    988}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3686,      0,   2150}, 0, { -7694,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3686,   -204,   2150}, 0, { -7696,    988}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3686,      0,    410}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3686,   -204,    410}, 0, {     0,    992}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3686,   -204,  -1637}, 0, { 10188,    988}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3686,      0,  -1637}, 0, { 10188,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1741,      0,  -1637}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3686,      0,  -1637}, 0, { -8716,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3686,   -204,  -1637}, 0, { -8716,    992}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1741,   -204,  -1637}, 0, {   990,    992}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1741,      0,  -1637}, 0, { -9228,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0701CD50 - 0x0701CE40\nstatic const Vtx bbh_seg7_vertex_0701CD50[] = {\n    {{{ -1945,      0,   2662}, 0, { -3096,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1945,   -204,   2662}, 0, { -3096,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1125,   -204,   2662}, 0, {   990,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2354,   -204,    102}, 0, {   990,    988}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2354,      0,    102}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2354,      0,  -1637}, 0, { -7696,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2354,   -204,  -1637}, 0, { -7696,    988}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2354,   -204,   2150}, 0, { 10188,    988}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2354,      0,    102}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2354,   -204,    102}, 0, {     0,    988}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2354,      0,   2150}, 0, { 10188,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2354,      0,   2150}, 0, { -2280,      0}, {0x9d, 0x00, 0x4f, 0xff}}},\n    {{{ -2354,   -204,   2150}, 0, { -2280,    992}, {0x9d, 0x00, 0x4f, 0xff}}},\n    {{{ -1945,   -204,   2662}, 0, {   990,    992}, {0x9d, 0x00, 0x4f, 0xff}}},\n    {{{ -1945,      0,   2662}, 0, {   990,      0}, {0x9d, 0x00, 0x4f, 0xff}}},\n};\n\n// 0x0701CE40 - 0x0701CF30\nstatic const Vtx bbh_seg7_vertex_0701CE40[] = {\n    {{{  2458,      0,   2662}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3277,   -204,   2662}, 0, {  4056,    988}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3277,      0,   2662}, 0, {  4056,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1945,      0,   2662}, 0, { -3096,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1125,   -204,   2662}, 0, {   990,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1125,      0,   2662}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1125,      0,   2662}, 0, { -2280,      0}, {0x63, 0x00, 0x4f, 0xff}}},\n    {{{ -1125,   -204,   2662}, 0, { -2280,    992}, {0x63, 0x00, 0x4f, 0xff}}},\n    {{{  -716,   -204,   2150}, 0, {   990,    992}, {0x63, 0x00, 0x4f, 0xff}}},\n    {{{  -716,      0,   2150}, 0, {   990,      0}, {0x63, 0x00, 0x4f, 0xff}}},\n    {{{  2048,      0,   2150}, 0, {     0,      0}, {0x9d, 0x00, 0x4f, 0xff}}},\n    {{{  2048,   -204,   2150}, 0, {     0,    992}, {0x9d, 0x00, 0x4f, 0xff}}},\n    {{{  2458,   -204,   2662}, 0, {  3240,    992}, {0x9d, 0x00, 0x4f, 0xff}}},\n    {{{  2458,      0,   2662}, 0, {  3240,      0}, {0x9d, 0x00, 0x4f, 0xff}}},\n    {{{  2458,   -204,   2662}, 0, {     0,    988}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0701CF30 - 0x0701D030\nstatic const Vtx bbh_seg7_vertex_0701CF30[] = {\n    {{{ -1842,      0,  -1637}, 0, {     0,      0}, {0x88, 0x00, 0xd9, 0xff}}},\n    {{{ -1740,   -204,  -1945}, 0, {  1500,    988}, {0x88, 0x00, 0xd9, 0xff}}},\n    {{{ -1842,   -204,  -1637}, 0, {     0,    988}, {0x88, 0x00, 0xd9, 0xff}}},\n    {{{  3277,      0,   2662}, 0, {     0,      0}, {0x63, 0x00, 0x4f, 0xff}}},\n    {{{  3277,   -204,   2662}, 0, {     0,    992}, {0x63, 0x00, 0x4f, 0xff}}},\n    {{{  3686,   -204,   2150}, 0, {  3240,    992}, {0x63, 0x00, 0x4f, 0xff}}},\n    {{{  3686,      0,   2150}, 0, {  3240,      0}, {0x63, 0x00, 0x4f, 0xff}}},\n    {{{ -1740,      0,  -1945}, 0, {  1756,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1381,      0,  -1945}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1381,   -204,  -1945}, 0, {     0,    988}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1740,   -204,  -1945}, 0, {  1756,    988}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1381,      0,  -1945}, 0, {  1500,      0}, {0x78, 0x00, 0xd9, 0xff}}},\n    {{{ -1279,   -204,  -1637}, 0, {     0,    988}, {0x78, 0x00, 0xd9, 0xff}}},\n    {{{ -1381,   -204,  -1945}, 0, {  1500,    988}, {0x78, 0x00, 0xd9, 0xff}}},\n    {{{ -1279,      0,  -1637}, 0, {     0,      0}, {0x78, 0x00, 0xd9, 0xff}}},\n    {{{ -1740,      0,  -1945}, 0, {  1500,      0}, {0x88, 0x00, 0xd9, 0xff}}},\n};\n\n// 0x0701D030 - 0x0701D130\nstatic const Vtx bbh_seg7_vertex_0701D030[] = {\n    {{{ -2661,    512,   6246}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1503,   -204,   5088}, 0, {  8144,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1503,    512,   5088}, 0, {  8144,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2661,    512,   3929}, 0, {  8144,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2155,   -204,   4436}, 0, {  4566,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2661,   -204,   3929}, 0, {  8144,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2155,     51,   4436}, 0, {  4566,   1284}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2046,     51,   4545}, 0, {  3800,   1284}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1503,    512,   5088}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1503,   -204,   5088}, 0, {     0,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2046,   -204,   4545}, 0, {  3800,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2661,    512,   3929}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2661,   -204,   3929}, 0, {     0,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -3820,   -204,   5088}, 0, {  8144,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -3820,    512,   5088}, 0, {  8144,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2661,   -204,   6246}, 0, {     0,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x0701D130 - 0x0701D1B0\nstatic const Vtx bbh_seg7_vertex_0701D130[] = {\n    {{{ -1945,   1741,   2662}, 0, {     0,  -7696}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1125,   1741,   2662}, 0, {  4056,  -7696}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1433,   2150,   2662}, 0, {  2524,  -9740}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1637,   2150,   2662}, 0, {  1500,  -9740}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3277,   1741,   2662}, 0, {  4056,  -7698}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2765,   2150,   2662}, 0, {  1500,  -9742}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2458,   1741,   2662}, 0, {     0,  -7698}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2970,   2150,   2662}, 0, {  2524,  -9742}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0701D1B0 - 0x0701D2B0\nstatic const Vtx bbh_seg7_vertex_0701D1B0[] = {\n    {{{   819,   2178,   1946}, 0, {  2012,  -1190}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   512,   2178,   1946}, 0, {  3544,  -1190}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   512,   2178,   1894}, 0, {  3544,  -1190}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   410,   1102,   2150}, 0, {  1500,  -4510}, {0x00, 0xab, 0x5d, 0xff}}},\n    {{{  1075,   1717,   2714}, 0, {  4824,  -7576}, {0x00, 0xab, 0x5d, 0xff}}},\n    {{{   256,   1717,   2714}, 0, {   736,  -7576}, {0x00, 0xab, 0x5d, 0xff}}},\n    {{{   410,   1102,   2150}, 0, {  1500,  -4510}, {0xbb, 0xb0, 0x45, 0xff}}},\n    {{{   256,   1717,   2714}, 0, {   736,  -7576}, {0xbb, 0xb0, 0x45, 0xff}}},\n    {{{     0,   1717,   2458}, 0, {  -540,  -7576}, {0xbb, 0xb0, 0x45, 0xff}}},\n    {{{   922,   1102,   2150}, 0, {  4056,  -4510}, {0x00, 0xab, 0x5d, 0xff}}},\n    {{{     0,   1717,   2150}, 0, {  -540,  -7576}, {0x97, 0xba, 0x00, 0xff}}},\n    {{{   410,   1102,   2150}, 0, {  1500,  -4510}, {0x97, 0xba, 0x00, 0xff}}},\n    {{{     0,   1717,   2458}, 0, {  -540,  -7576}, {0x97, 0xba, 0x00, 0xff}}},\n    {{{   922,   1102,   2150}, 0, {  4056,  -4510}, {0x45, 0xb0, 0x45, 0xff}}},\n    {{{  1331,   1717,   2458}, 0, {  6100,  -7576}, {0x45, 0xb0, 0x45, 0xff}}},\n    {{{  1075,   1717,   2714}, 0, {  4824,  -7576}, {0x45, 0xb0, 0x45, 0xff}}},\n};\n\n// 0x0701D2B0 - 0x0701D3B0\nstatic const Vtx bbh_seg7_vertex_0701D2B0[] = {\n    {{{  1331,   1717,   2458}, 0, {  6100,  -7576}, {0x69, 0xba, 0x00, 0xff}}},\n    {{{   922,   1102,   2150}, 0, {  4056,  -4510}, {0x69, 0xba, 0x00, 0xff}}},\n    {{{  1331,   1717,   2150}, 0, {  6100,  -7576}, {0x69, 0xba, 0x00, 0xff}}},\n    {{{   819,   2178,   1894}, 0, {  2012,  -1190}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   819,   1922,   1894}, 0, {  2012,     88}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   819,   1922,   1946}, 0, {  2012,     88}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   819,   2178,   1946}, 0, {  2012,  -1190}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2354,   1741,   2150}, 0, { -1256,  -7696}, {0x9d, 0x00, 0x4f, 0xff}}},\n    {{{ -2354,      0,   2150}, 0, { -1256,    990}, {0x9d, 0x00, 0x4f, 0xff}}},\n    {{{ -1945,      0,   2662}, 0, {  2012,    990}, {0x9d, 0x00, 0x4f, 0xff}}},\n    {{{   819,   2178,   1946}, 0, {  2012,  -1190}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   512,   2178,   1894}, 0, {  3544,  -1190}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   819,   2178,   1894}, 0, {  2012,  -1190}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   512,   2178,   1946}, 0, {  3544,  -1190}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,   1922,   1946}, 0, {  3544,     88}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,   1922,   1894}, 0, {  3544,     88}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0701D3B0 - 0x0701D4B0\nstatic const Vtx bbh_seg7_vertex_0701D3B0[] = {\n    {{{   512,   2178,   1946}, 0, {  3544,  -1190}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,   1922,   1894}, 0, {  3544,     88}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,   2178,   1894}, 0, {  3544,  -1190}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2354,   1741,  -1637}, 0, { -8204,  -7698}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2354,      0,   2150}, 0, { 10700,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2354,   1741,   2150}, 0, { 10700,  -7698}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2354,      0,  -1637}, 0, { -8204,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2354,   1741,   2150}, 0, { -1256,  -7696}, {0x9d, 0x00, 0x4f, 0xff}}},\n    {{{ -1945,      0,   2662}, 0, {  2012,    990}, {0x9d, 0x00, 0x4f, 0xff}}},\n    {{{ -1945,   1741,   2662}, 0, {  2012,  -7696}, {0x9d, 0x00, 0x4f, 0xff}}},\n    {{{   512,    256,   2150}, 0, {  2012,   -288}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,   1741,   2150}, 0, {  9676,  -7698}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   1741,   2150}, 0, { -4116,  -7698}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1945,   1741,   2662}, 0, {     0,  -7696}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1945,      0,   2662}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1125,      0,   2662}, 0, {  4056,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0701D4B0 - 0x0701D5B0\nstatic const Vtx bbh_seg7_vertex_0701D4B0[] = {\n    {{{ -1945,   1741,   2662}, 0, {     0,  -7696}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1125,      0,   2662}, 0, {  4056,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1125,   1741,   2662}, 0, {  4056,  -7696}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1125,   1741,   2662}, 0, {     0,  -7698}, {0x63, 0x00, 0x4f, 0xff}}},\n    {{{  -716,      0,   2150}, 0, {  3240,    990}, {0x63, 0x00, 0x4f, 0xff}}},\n    {{{  -716,   1741,   2150}, 0, {  3240,  -7698}, {0x63, 0x00, 0x4f, 0xff}}},\n    {{{ -1125,      0,   2662}, 0, {     0,    990}, {0x63, 0x00, 0x4f, 0xff}}},\n    {{{   512,      0,   2150}, 0, {  2012,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   1741,   2150}, 0, { -4116,  -7698}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,      0,   2150}, 0, { -4116,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   512,    256,   2150}, 0, {  2012,   -288}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2458,   1741,   2662}, 0, {     0,  -7698}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3277,      0,   2662}, 0, {  4056,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3277,   1741,   2662}, 0, {  4056,  -7698}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   819,    256,   2150}, 0, {  3544,   -288}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,   1741,   2150}, 0, {  9676,  -7698}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0701D5B0 - 0x0701D6A0\nstatic const Vtx bbh_seg7_vertex_0701D5B0[] = {\n    {{{  2048,   1741,   2150}, 0, {  9676,  -7698}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   819,      0,   2150}, 0, {  3544,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,      0,   2150}, 0, {  9676,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   819,    256,   2150}, 0, {  3544,   -288}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,   1741,   2150}, 0, {     0,  -7698}, {0x9d, 0x00, 0x4f, 0xff}}},\n    {{{  2048,      0,   2150}, 0, {     0,    990}, {0x9d, 0x00, 0x4f, 0xff}}},\n    {{{  2458,      0,   2662}, 0, {  3240,    990}, {0x9d, 0x00, 0x4f, 0xff}}},\n    {{{  2458,   1741,   2662}, 0, {  3240,  -7698}, {0x9d, 0x00, 0x4f, 0xff}}},\n    {{{  2458,   1741,   2662}, 0, {     0,  -7698}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2458,      0,   2662}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3277,      0,   2662}, 0, {  4056,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3277,   1741,   2662}, 0, {     0,  -7696}, {0x63, 0x00, 0x4f, 0xff}}},\n    {{{  3277,      0,   2662}, 0, {     0,    990}, {0x63, 0x00, 0x4f, 0xff}}},\n    {{{  3686,      0,   2150}, 0, {  3240,    990}, {0x63, 0x00, 0x4f, 0xff}}},\n    {{{  3686,   1741,   2150}, 0, {  3240,  -7696}, {0x63, 0x00, 0x4f, 0xff}}},\n};\n\n// 0x0701D6A0 - 0x0701D7A0\nstatic const Vtx bbh_seg7_vertex_0701D6A0[] = {\n    {{{  3686,   1741,   2150}, 0, { -6160,  -7696}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3686,      0,  -1637}, 0, { 12744,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3686,   1741,  -1637}, 0, { 12744,  -7696}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3686,      0,   2150}, 0, { -6160,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3686,   1741,  -1637}, 0, {-12804,  -7698}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3686,      0,  -1637}, 0, {-12804,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1484,    256,  -1637}, 0, { 13000,   -288}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1484,      0,  -1637}, 0, { 13000,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2354,   1741,  -1637}, 0, { 17340,  -7698}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1637,    256,  -1637}, 0, { 13764,   -288}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2354,      0,  -1637}, 0, { 17340,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1637,      0,  -1637}, 0, { 13764,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1228,   1922,   1946}, 0, {  5588,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1229,   2355,   1946}, 0, {  5588,  -1174}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   819,   1922,   1946}, 0, {  3544,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   819,   2178,   1946}, 0, {  3544,   -288}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0701D7A0 - 0x0701D820\nstatic const Vtx bbh_seg7_vertex_0701D7A0[] = {\n    {{{   102,   1922,   1946}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   512,   1922,   1946}, 0, {  2012,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,   2355,   1946}, 0, {     0,  -1174}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   410,   2765,   1946}, 0, {  1500,  -3218}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   512,   2178,   1946}, 0, {  2012,   -288}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   922,   2765,   1946}, 0, {  4056,  -3218}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   819,   2178,   1946}, 0, {  3544,   -288}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1229,   2355,   1946}, 0, {  5588,  -1174}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0701D820 - 0x0701D910\nstatic const Vtx bbh_seg7_vertex_0701D820[] = {\n    {{{ -1637,      0,  -1586}, 0, {  1500,  -1566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1484,      0,  -1637}, 0, {     0,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1637,      0,  -1637}, 0, {  1500,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,   1922,   2458}, 0, { -5140,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,   1922,   2714}, 0, { -2584,   4564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1075,   1922,   2714}, 0, {  5588,   4564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1331,   1922,   2458}, 0, {  8144,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1331,   1922,   1946}, 0, {  7120,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,   1922,   2458}, 0, { -6160,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1331,   1922,   2458}, 0, {  7120,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,   1922,   1946}, 0, { -6160,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   819,   1922,   1894}, 0, {  2012,  -2586}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,   1922,   1894}, 0, { -1048,  -2586}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,   1922,   1946}, 0, { -1048,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   819,   1922,   1946}, 0, {  2012,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0701D910 - 0x0701D980\nstatic const Vtx bbh_seg7_vertex_0701D910[] = {\n    {{{ -1381,      0,  -1945}, 0, { -1052,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1842,      0,  -1637}, 0, {  3544,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,      0,  -1637}, 0, { -2072,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1637,      0,  -1586}, 0, {  1500,  -1566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1484,      0,  -1586}, 0, {     0,  -1566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1484,      0,  -1637}, 0, {     0,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1740,      0,  -1945}, 0, {  2524,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0701D980 - 0x0701D9C0\nstatic const Vtx bbh_seg7_vertex_0701D980[] = {\n    {{{     0,   -409,  -1009}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3072,   2150,  -1009}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,   2150,  -1009}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3072,   -409,  -1009}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0701D9C0 - 0x0701DA50\nstatic const Gfx bbh_seg7_dl_0701D9C0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_0701B7A8.l, 1),\n    gsSPLight(&bbh_seg7_lights_0701B7A8.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0701B850, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701B940, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  2,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701DA50 - 0x0701DB20\nstatic const Gfx bbh_seg7_dl_0701DA50[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_0900A000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_0701B7C0.l, 1),\n    gsSPLight(&bbh_seg7_lights_0701B7C0.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0701B9B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  4,  8,  9, 0x0),\n    gsSP2Triangles( 4,  9,  5, 0x0,  8,  4,  7, 0x0),\n    gsSP2Triangles(10,  9,  8, 0x0, 11, 10,  8, 0x0),\n    gsSP2Triangles( 3,  5, 12, 0x0,  2, 10, 11, 0x0),\n    gsSP2Triangles( 0,  2, 11, 0x0, 13, 14,  3, 0x0),\n    gsSP2Triangles(15,  1,  0, 0x0, 12,  1, 15, 0x0),\n    gsSP2Triangles(13,  3, 12, 0x0, 13, 12, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701BAB0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701DB20 - 0x0701DBF0\nstatic const Gfx bbh_seg7_dl_0701DB20[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_0701B7D8.l, 1),\n    gsSPLight(&bbh_seg7_lights_0701B7D8.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0701BAF0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0, 15,  1, 0x0),\n    gsSPLight(&bbh_seg7_lights_0701B7F0.l, 1),\n    gsSPLight(&bbh_seg7_lights_0701B7F0.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0701BBF0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701DBF0 - 0x0701DFA0\nstatic const Gfx bbh_seg7_dl_0701DBF0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_0701B7A8.l, 1),\n    gsSPLight(&bbh_seg7_lights_0701B7A8.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0701BCF0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0,  0, 15,  1, 0x0),\n    gsSPLight(&bbh_seg7_lights_0701B808.l, 1),\n    gsSPLight(&bbh_seg7_lights_0701B808.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0701BDF0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701BEE0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701BFD0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  3,  6, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701C0D0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701C1B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701C2A0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  1, 13,  2, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701C380, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701C460, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(12, 11,  9, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701C560, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701C650, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPLight(&bbh_seg7_lights_0701B7F0.l, 1),\n    gsSPLight(&bbh_seg7_lights_0701B7F0.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0701C730, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701C820, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP1Triangle( 0,  2, 10, 0x0),\n    gsSPLight(&bbh_seg7_lights_0701B820.l, 1),\n    gsSPLight(&bbh_seg7_lights_0701B820.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0701C8D0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701DFA0 - 0x0701E188\nstatic const Gfx bbh_seg7_dl_0701DFA0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_0701B7C0.l, 1),\n    gsSPLight(&bbh_seg7_lights_0701B7C0.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0701C990, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701CA80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701CB70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701CC60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701CD50, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701CE40, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701CF30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701E188 - 0x0701E210\nstatic const Gfx bbh_seg7_dl_0701E188[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bbh_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_0701B7F0.l, 1),\n    gsSPLight(&bbh_seg7_lights_0701B7F0.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0701D030, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  3,  8, 0x0),\n    gsSP2Triangles( 7,  6,  3, 0x0,  9,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701E210 - 0x0701E430\nstatic const Gfx bbh_seg7_dl_0701E210[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_0701B7D8.l, 1),\n    gsSPLight(&bbh_seg7_lights_0701B7D8.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0701D130, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPLight(&bbh_seg7_lights_0701B7F0.l, 1),\n    gsSPLight(&bbh_seg7_lights_0701B7F0.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0701D1B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  3,  9,  4, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701D2B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701D3B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701D4B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(10, 14, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701D5B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701D6A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 4,  6,  8, 0x0,  6,  9,  8, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701D7A0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  5,  3,  4, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  7,  5,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701E430 - 0x0701E4B0\nstatic const Gfx bbh_seg7_dl_0701E430[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09009000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_0701D820, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701D910, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  6,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701E4B0 - 0x0701E4E0\nstatic const Gfx bbh_seg7_dl_0701E4B0[] = {\n    gsSPLight(&bbh_seg7_lights_0701B838.l, 1),\n    gsSPLight(&bbh_seg7_lights_0701B838.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0701D980, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701E4E0 - 0x0701E5D8\nconst Gfx bbh_seg7_dl_0701E4E0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0701D9C0),\n    gsSPDisplayList(bbh_seg7_dl_0701DA50),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0701DB20),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0701DBF0),\n    gsSPDisplayList(bbh_seg7_dl_0701DFA0),\n    gsSPDisplayList(bbh_seg7_dl_0701E188),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0701E210),\n    gsSPDisplayList(bbh_seg7_dl_0701E430),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(bbh_seg7_dl_0701E4B0),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/36/model.inc.c",
    "content": "// 0x0701E5D8 - 0x0701E5F0\nstatic const Lights1 bbh_seg7_lights_0701E5D8 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0701E5F0 - 0x0701E6E0\nstatic const Vtx bbh_seg7_vertex_0701E5F0[] = {\n    {{{  5530,   1843,  -1945}, 0, {-10250,  -1054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5530,   -204,  -1945}, 0, {-10250,   5758}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5530,   -204,   4710}, 0, { 11210,   5758}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4197,   1843,  -1945}, 0, { -4118,  -1054}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2149,   -204,  -3993}, 0, {  5078,   5758}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2149,   1843,  -3993}, 0, {  5078,  -1054}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -4197,   -204,  -1945}, 0, { -4118,   5758}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2149,   1843,  -3993}, 0, { -8206,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2149,   -204,  -3993}, 0, { -8206,   6780}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3482,   -204,  -3993}, 0, { 10188,   6780}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3482,   1843,  -3993}, 0, { 10188,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3482,   1843,  -3993}, 0, { -4118,  -1054}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3482,   -204,  -3993}, 0, { -4118,   5758}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  5530,   -204,  -1945}, 0, {  5078,   5758}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  5530,   1843,  -1945}, 0, {  5078,  -1054}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x0701E6E0 - 0x0701E7D0\nstatic const Vtx bbh_seg7_vertex_0701E6E0[] = {\n    {{{  5530,   1843,   4710}, 0, { -4118,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  5530,   -204,   4710}, 0, { -4118,   6780}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  3482,   -204,   6758}, 0, {  5070,   6780}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  5530,   1843,  -1945}, 0, {-10250,  -1054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5530,   -204,   4710}, 0, { 11210,   5758}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5530,   1843,   4710}, 0, { 11210,  -1054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4197,   1843,   4710}, 0, {-10250,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4197,   -204,   4710}, 0, {-10250,   5758}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4197,   -204,  -1945}, 0, { 11210,   5758}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4197,   1843,  -1945}, 0, { 11210,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2149,   1843,   6758}, 0, { -4118,  -2076}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -4197,   -204,   4710}, 0, {  5078,   4736}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -4197,   1843,   4710}, 0, {  5078,  -2076}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2149,   -204,   6758}, 0, { -4118,   4736}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  3482,   1843,   6758}, 0, {  5070,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0701E7D0 - 0x0701E810\nstatic const Vtx bbh_seg7_vertex_0701E7D0[] = {\n    {{{ -2149,   1843,   6758}, 0, {  9166,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3482,   1843,   6758}, 0, { -9228,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3482,   -204,   6758}, 0, { -9228,   6780}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2149,   -204,   6758}, 0, {  9166,   6780}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0701E810 - 0x0701E8D8\nstatic const Gfx bbh_seg7_dl_0701E810[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bbh_seg7_texture_07001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_0701E5D8.l, 1),\n    gsSPLight(&bbh_seg7_lights_0701E5D8.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0701E5F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701E6E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701E7D0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701E8D8 - 0x0701E948\nconst Gfx bbh_seg7_dl_0701E8D8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0701E810),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/37/model.inc.c",
    "content": "// 0x0701E948 - 0x0701E960\nstatic const Lights1 bbh_seg7_lights_0701E948 = gdSPDefLights1(\n    0x24, 0x11, 0x0b,\n    0x5a, 0x2c, 0x1d, 0x28, 0x28, 0x28\n);\n\n// 0x0701E960 - 0x0701E978\nstatic const Lights1 bbh_seg7_lights_0701E960 = gdSPDefLights1(\n    0x3c, 0x3c, 0x3c,\n    0x96, 0x96, 0x96, 0x28, 0x28, 0x28\n);\n\n// 0x0701E978 - 0x0701E9F8\nstatic const Vtx bbh_seg7_vertex_0701E978[] = {\n    {{{  1638,   3021,    730}, 0, {   990,      0}, {0x00, 0x5f, 0x54, 0xff}}},\n    {{{  1229,   3021,    730}, 0, {     0,      0}, {0x00, 0x5f, 0x54, 0xff}}},\n    {{{  1229,   2750,   1037}, 0, {     0,    990}, {0x00, 0x5f, 0x54, 0xff}}},\n    {{{  1638,   2750,   1037}, 0, {   990,    990}, {0x00, 0x5f, 0x54, 0xff}}},\n    {{{  -306,   2750,   1037}, 0, {     0,    990}, {0x00, 0x5f, 0x54, 0xff}}},\n    {{{   102,   3021,    730}, 0, {   990,      0}, {0x00, 0x5f, 0x54, 0xff}}},\n    {{{  -306,   3021,    730}, 0, {     0,      0}, {0x00, 0x5f, 0x54, 0xff}}},\n    {{{   102,   2750,   1037}, 0, {   990,    990}, {0x00, 0x5f, 0x54, 0xff}}},\n};\n\n// 0x0701E9F8 - 0x0701EAE8\nstatic const Vtx bbh_seg7_vertex_0701E9F8[] = {\n    {{{  1843,   1536,   2161}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1434,   1126,   2161}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1843,   1126,   2161}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -101,    614,   2161}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,    205,   2161}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -101,    205,   2161}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,    614,   2161}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1843,    614,   2161}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1434,    205,   2161}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1843,    205,   2161}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1434,    614,   2161}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -101,   1536,   2161}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,   1126,   2161}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -101,   1126,   2161}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,   1536,   2161}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0701EAE8 - 0x0701EBD8\nstatic const Vtx bbh_seg7_vertex_0701EAE8[] = {\n    {{{  3072,    614,   2673}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2662,    205,   2673}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3072,    205,   2673}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1843,   1536,   2161}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1434,   1536,   2161}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1434,   1126,   2161}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,    614,   2673}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1740,    205,   2673}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,    205,   2673}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1740,    614,   2673}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   1536,   2673}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1740,   1126,   2673}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   1126,   2673}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1740,   1536,   2673}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2662,    614,   2673}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0701EBD8 - 0x0701EC18\nstatic const Vtx bbh_seg7_vertex_0701EBD8[] = {\n    {{{  3072,   1536,   2673}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2662,   1126,   2673}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3072,   1126,   2673}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2662,   1536,   2673}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0701EC18 - 0x0701ED18\nstatic const Gfx bbh_seg7_dl_0701EC18[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09006000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_0701E948.l, 1),\n    gsSPLight(&bbh_seg7_lights_0701E948.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0701E978, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPLight(&bbh_seg7_lights_0701E960.l, 1),\n    gsSPLight(&bbh_seg7_lights_0701E960.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0701E9F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701EAE8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701EBD8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701ED18 - 0x0701ED88\nconst Gfx bbh_seg7_dl_0701ED18[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0701EC18),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/38/model.inc.c",
    "content": "// 0x0701ED88 - 0x0701EE08\nstatic const Vtx bbh_seg7_vertex_0701ED88[] = {\n    {{{  1331,    563,   2161}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{   922,    154,   2161}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  1331,    154,   2161}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{   922,    563,   2161}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{     0,    154,   2161}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{   410,    154,   2161}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{   410,    563,   2161}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{     0,    563,   2161}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n};\n\n// 0x0701EE08 - 0x0701EE48\nstatic const Vtx bbh_seg7_vertex_0701EE08[] = {\n    {{{ -1740,    717,  -1648}, 0, {   990,      0}, {0xff, 0x57, 0x00, 0x9a}}},\n    {{{ -1381,    717,  -1648}, 0, {     0,      0}, {0xff, 0x57, 0x00, 0x9a}}},\n    {{{ -1381,      0,  -1648}, 0, {     0,   2012}, {0xff, 0x57, 0x00, 0x9a}}},\n    {{{ -1740,      0,  -1648}, 0, {   990,   2012}, {0xff, 0x57, 0x00, 0x9a}}},\n};\n\n// 0x0701EE48 - 0x0701EE90\nstatic const Gfx bbh_seg7_dl_0701EE48[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, spooky_0900A800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_0701ED88, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701EE90 - 0x0701EEC8\nstatic const Gfx bbh_seg7_dl_0701EE90[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, spooky_0900B800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_0701EE08, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701EEC8 - 0x0701EF58\nconst Gfx bbh_seg7_dl_0701EEC8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0701EE48),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0701EE90),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/39/model.inc.c",
    "content": "// 0x0701EF58 - 0x0701F018\nstatic const Vtx bbh_seg7_vertex_0701EF58[] = {\n    {{{ -1561,    538,  -1673}, 0, {   478,    990}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{ -1535,    614,  -1648}, 0, {     0,      0}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{ -1535,    538,  -1648}, 0, {     0,    990}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{ -1561,    614,  -1673}, 0, {   480,      0}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{ -1586,    538,  -1648}, 0, {   990,    990}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{ -1561,    538,  -1673}, 0, {   480,    990}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{ -1586,    614,  -1648}, 0, {   990,      0}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{ -1561,    614,  -1673}, 0, {   480,    990}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{ -1586,    614,  -1648}, 0, {   990,    480}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{ -1535,    614,  -1648}, 0, {     0,    480}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{ -1586,    538,  -1648}, 0, {   990,    480}, {0xff, 0xcc, 0x90, 0xff}}},\n    {{{ -1535,    538,  -1648}, 0, {     0,    480}, {0xff, 0xcc, 0x90, 0xff}}},\n};\n\n// 0x0701F018 - 0x0701F070\nstatic const Gfx bbh_seg7_dl_0701F018[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09006800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_0701EF58, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  3,  5, 0x0,  4,  6,  3, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0, 10,  5, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701F070 - 0x0701F0E0\nconst Gfx bbh_seg7_dl_0701F070[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0701F018),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/4/model.inc.c",
    "content": "// 0x07007C08 - 0x07007CF8\nstatic const Vtx bbh_seg7_vertex_07007C08[] = {\n    {{{  -706,    819,   1229}, 0, {     0,   2012}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{  -706,   1485,   1587}, 0, {   990,      0}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{  -706,    819,   1587}, 0, {   990,   2012}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{    10,    614,   1638}, 0, {     0,      0}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{    10,      0,   1280}, 0, {   990,   2012}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{    10,    614,   1280}, 0, {   990,      0}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{    10,      0,   1638}, 0, {     0,   2012}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{    10,    614,    819}, 0, {     0,      0}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{    10,      0,    461}, 0, {   990,   2012}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{    10,    614,    461}, 0, {   990,      0}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{    10,      0,    819}, 0, {     0,   2012}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{  -706,    819,    461}, 0, {     0,   2012}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{  -706,   1485,    461}, 0, {     0,      0}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{  -706,   1485,    819}, 0, {   990,      0}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{  -706,    819,    819}, 0, {   990,   2012}, {0xff, 0xec, 0x40, 0x9a}}},\n};\n\n// 0x07007CF8 - 0x07007DE8\nstatic const Vtx bbh_seg7_vertex_07007CF8[] = {\n    {{{  2038,    819,    666}, 0, {   990,   2012}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{  2038,   1485,    666}, 0, {   990,      0}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{  2038,   1485,    307}, 0, {     0,      0}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{  -706,    819,   1229}, 0, {     0,   2012}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{  -706,   1485,   1229}, 0, {     0,      0}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{  -706,   1485,   1587}, 0, {   990,      0}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{  2038,      0,   1638}, 0, {   990,   2012}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{  2038,    666,   1280}, 0, {     0,      0}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{  2038,      0,   1280}, 0, {     0,   2012}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{  2038,    666,   1638}, 0, {   990,      0}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{  2038,    819,   1997}, 0, {   990,   2012}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{  2038,   1485,   1638}, 0, {     0,      0}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{  2038,    819,   1638}, 0, {     0,   2012}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{  2038,   1485,   1997}, 0, {   990,      0}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{  2038,    819,    307}, 0, {     0,   2012}, {0xff, 0xec, 0x40, 0x9a}}},\n};\n\n// 0x07007DE8 - 0x07007EE8\nstatic const Vtx bbh_seg7_vertex_07007DE8[] = {\n    {{{  1792,   1485,     10}, 0, {   990,      0}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{  1434,    819,     10}, 0, {     0,   2012}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{  1792,    819,     10}, 0, {   990,   2012}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{   614,    614,     10}, 0, {   990,      0}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{   256,      0,     10}, 0, {     0,   2012}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{   614,      0,     10}, 0, {   990,   2012}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{   256,    614,     10}, 0, {     0,      0}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{  1792,    614,     10}, 0, {   990,      0}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{  1434,    614,     10}, 0, {     0,      0}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{  1434,      0,     10}, 0, {     0,   2012}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{  1792,      0,     10}, 0, {   990,   2012}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{   358,   1485,     10}, 0, {   990,      0}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{     0,    819,     10}, 0, {     0,   2012}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{   358,    819,     10}, 0, {   990,   2012}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{     0,   1485,     10}, 0, {     0,      0}, {0xff, 0xec, 0x40, 0x9a}}},\n    {{{  1434,   1485,     10}, 0, {     0,      0}, {0xff, 0xec, 0x40, 0x9a}}},\n};\n\n// 0x07007EE8 - 0x07007FD0\nstatic const Gfx bbh_seg7_dl_07007EE8[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, spooky_0900B800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_07007C08, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07007CF8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07007DE8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007FD0 - 0x07008040\nconst Gfx bbh_seg7_dl_07007FD0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_07007EE8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/5/model.inc.c",
    "content": "// 0x07008040 - 0x07008140\nstatic const Vtx bbh_seg7_vertex_07008040[] = {\n    {{{   435,    410,     36}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   435,    486,     36}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   410,    486,     10}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   410,    410,     10}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   461,    486,     10}, 0, {     0,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   410,    486,     10}, 0, {   990,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   435,    486,     36}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   461,    410,     10}, 0, {     0,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   410,    410,     10}, 0, {   990,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   461,    410,     10}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   435,    410,     36}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   461,    486,     10}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1638,    410,     10}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1613,    486,     36}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1613,    410,     36}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1638,    486,     10}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07008140 - 0x07008240\nstatic const Vtx bbh_seg7_vertex_07008140[] = {\n    {{{  1638,    410,     10}, 0, {     0,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1613,    410,     36}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1587,    410,     10}, 0, {   990,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1638,    486,     10}, 0, {     0,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1587,    486,     10}, 0, {   990,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1613,    486,     36}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1613,    486,     36}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1587,    486,     10}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1587,    410,     10}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   179,   1280,     36}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   179,   1357,     36}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   154,   1357,     10}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   154,   1280,     10}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   205,   1280,     10}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   205,   1357,     10}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   179,   1280,     36}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07008240 - 0x07008330\nstatic const Vtx bbh_seg7_vertex_07008240[] = {\n    {{{   205,   1357,     10}, 0, {     0,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   154,   1357,     10}, 0, {   990,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   179,   1357,     36}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   205,   1280,     10}, 0, {     0,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   179,   1280,     36}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   154,   1280,     10}, 0, {   990,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1613,   1280,     36}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1613,   1357,     36}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1587,   1357,     10}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1587,   1280,     10}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1638,   1357,     10}, 0, {     0,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1587,   1357,     10}, 0, {   990,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1613,   1357,     36}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1638,   1280,     10}, 0, {     0,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1587,   1280,     10}, 0, {   990,    480}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07008330 - 0x07008430\nstatic const Vtx bbh_seg7_vertex_07008330[] = {\n    {{{  1638,   1280,     10}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1613,   1357,     36}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1613,   1280,     36}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1638,   1357,     10}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2038,    461,   1485}, 0, {     0,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2012,    461,   1459}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2038,    461,   1434}, 0, {   990,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2038,    538,   1485}, 0, {     0,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2038,    538,   1434}, 0, {   990,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2012,    538,   1459}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2012,    538,   1459}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2038,    538,   1434}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2038,    461,   1434}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2038,    461,   1485}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2038,    538,   1485}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2012,    461,   1459}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07008430 - 0x07008530\nstatic const Vtx bbh_seg7_vertex_07008430[] = {\n    {{{  2038,   1280,    512}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2038,   1357,    512}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2012,   1357,    486}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2012,   1280,    486}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2038,   1280,    512}, 0, {     0,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2012,   1280,    486}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2038,   1280,    461}, 0, {   990,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2038,   1357,    512}, 0, {     0,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2038,   1357,    461}, 0, {   990,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2012,   1357,    486}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2038,   1357,    461}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2038,   1280,    461}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2038,   1280,   1843}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2038,   1357,   1843}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2012,   1357,   1818}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2012,   1280,   1818}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07008530 - 0x07008620\nstatic const Vtx bbh_seg7_vertex_07008530[] = {\n    {{{  2012,   1280,   1818}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2012,   1357,   1818}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2038,   1357,   1792}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2038,   1280,   1792}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2038,   1357,   1843}, 0, {     0,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2038,   1357,   1792}, 0, {   990,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2012,   1357,   1818}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2038,   1280,   1843}, 0, {     0,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2038,   1280,   1792}, 0, {   990,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    10,    410,   1434}, 0, {   990,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    36,    410,   1459}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    10,    410,   1485}, 0, {     0,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    36,    486,   1459}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    10,    486,   1434}, 0, {   990,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    10,    486,   1485}, 0, {     0,    480}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07008620 - 0x07008720\nstatic const Vtx bbh_seg7_vertex_07008620[] = {\n    {{{    10,    410,   1434}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    10,    486,   1434}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    36,    486,   1459}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    36,    410,   1459}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    36,    410,   1459}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    10,    486,   1485}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    10,    410,   1485}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    10,    410,    614}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    10,    486,    614}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    36,    486,    640}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    36,    410,    640}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    36,    486,    640}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    10,    486,    614}, 0, {   990,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    10,    486,    666}, 0, {     0,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    10,    410,    614}, 0, {   990,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    10,    410,    666}, 0, {     0,    480}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07008720 - 0x07008820\nstatic const Vtx bbh_seg7_vertex_07008720[] = {\n    {{{    36,    410,    640}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    36,    486,    640}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    10,    486,    666}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    10,    410,    666}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -706,   1280,   1382}, 0, {   990,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -680,   1280,   1408}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -706,   1280,   1434}, 0, {     0,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -680,   1357,   1408}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -706,   1357,   1382}, 0, {   990,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -706,   1357,   1434}, 0, {     0,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -706,   1280,   1382}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -680,   1357,   1408}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -706,   1357,   1382}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -680,   1280,   1408}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -706,   1357,   1434}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -706,   1280,   1434}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07008820 - 0x070088E0\nstatic const Vtx bbh_seg7_vertex_07008820[] = {\n    {{{  -706,   1280,    614}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -706,   1357,    614}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -680,   1357,    640}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -680,   1280,    640}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -680,   1357,    640}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -706,   1357,    614}, 0, {   990,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -706,   1357,    666}, 0, {     0,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -706,   1280,    614}, 0, {   990,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -706,   1280,    666}, 0, {     0,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -680,   1280,    640}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -706,   1357,    666}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -706,   1280,    666}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070088E0 - 0x07008B58\nstatic const Gfx bbh_seg7_dl_070088E0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09006800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_07008040, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  0,  8, 0x0),\n    gsSP2Triangles( 9,  1, 10, 0x0,  9, 11,  1, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07008140, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 1,  6,  7, 0x0,  1,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 11, 12, 0x0),\n    gsSP2Triangles(13, 14, 10, 0x0, 13, 10, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07008240, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13,  6, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07008330, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 5, 10, 11, 0x0,  5, 11, 12, 0x0),\n    gsSP2Triangles(13, 14, 10, 0x0, 13, 10, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07008430, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 5,  2, 10, 0x0,  5, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07008530, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  0,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07008620, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  2,  5, 0x0,  4,  5,  6, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 14, 10, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07008720, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11,  5, 0x0, 10, 12, 11, 0x0),\n    gsSP2Triangles(13, 14, 15, 0x0, 13, 11, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07008820, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  3,  8, 0x0),\n    gsSP2Triangles( 9,  2, 10, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008B58 - 0x07008BC8\nconst Gfx bbh_seg7_dl_07008B58[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_070088E0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/6/model.inc.c",
    "content": "// 0x07008BC8 - 0x07008CC8\nstatic const Vtx bbh_seg7_vertex_07008BC8[] = {\n    {{{  1408,      0,   1603}, 0, {     0,      0}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  1408,    435,   2038}, 0, {     0,    990}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  1664,    435,   2038}, 0, {   990,    990}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  1408,   1357,   1935}, 0, {   734,      0}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  1664,   1459,   2038}, 0, {   990,    990}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  1664,   1357,   1935}, 0, {   734,      0}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  1408,   1459,   2038}, 0, {   990,    990}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  1408,   1101,   1935}, 0, {    96,      0}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  1408,   1203,   2038}, 0, {   352,    990}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  1664,   1203,   2038}, 0, {   352,    990}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  1664,   1101,   1935}, 0, {    96,      0}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  1408,      0,   1859}, 0, {     0,    268}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  1664,      0,   1603}, 0, {   990,      0}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{   -76,    819,   1654}, 0, {   990,    172}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{   -76,   1203,   2038}, 0, {   990,    786}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  -332,   1203,   2038}, 0, {     0,    786}, {0xff, 0xec, 0x40, 0x50}}},\n};\n\n// 0x07008CC8 - 0x07008DB8\nstatic const Vtx bbh_seg7_vertex_07008CC8[] = {\n    {{{  1408,      0,   1859}, 0, {     0,    268}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  1408,    179,   2038}, 0, {     0,    690}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  1408,    435,   2038}, 0, {     0,    990}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  1664,      0,   1603}, 0, {   990,      0}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  1664,    435,   2038}, 0, {   990,    990}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  1664,    179,   2038}, 0, {   990,    690}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  1664,      0,   1859}, 0, {   990,    268}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  -332,    819,   1654}, 0, {     0,    172}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  -332,   1459,   2038}, 0, {     0,    990}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  -332,    819,   1398}, 0, {     0,      0}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{  -332,   1203,   2038}, 0, {     0,    786}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{   -76,    819,   1654}, 0, {   990,    172}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{   -76,   1459,   2038}, 0, {   990,    990}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{   -76,    819,   1398}, 0, {   990,      0}, {0xff, 0xec, 0x40, 0x50}}},\n    {{{   -76,   1203,   2038}, 0, {   990,    786}, {0xff, 0xec, 0x40, 0x50}}},\n};\n\n// 0x07008DB8 - 0x07008EA8\nstatic const Gfx bbh_seg7_dl_07008DB8[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, spooky_0900B000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_07008BC8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  6,  3, 0x0),\n    gsSP2Triangles( 7,  8,  6, 0x0,  5,  4,  9, 0x0),\n    gsSP2Triangles( 5,  9, 10, 0x0, 10,  9,  8, 0x0),\n    gsSP2Triangles(10,  8,  7, 0x0, 11,  1,  0, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07008CC8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  6,  5,  1, 0x0),\n    gsSP2Triangles( 6,  1,  0, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 10,  7, 0x0),\n    gsSP2Triangles( 9,  8, 12, 0x0,  9, 12, 13, 0x0),\n    gsSP2Triangles(13, 14, 11, 0x0, 13, 12, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008EA8 - 0x07008F18\nconst Gfx bbh_seg7_dl_07008EA8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_07008DB8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/7/model.inc.c",
    "content": "// 0x07008F18 - 0x07008F30\nstatic const Lights1 bbh_seg7_lights_07008F18 = gdSPDefLights1(\n    0x20, 0x20, 0x20,\n    0x50, 0x50, 0x50, 0x28, 0x28, 0x28\n);\n\n// 0x07008F30 - 0x07008F48\nstatic const Lights1 bbh_seg7_lights_07008F30 = gdSPDefLights1(\n    0x3c, 0x3c, 0x3c,\n    0x96, 0x96, 0x96, 0x28, 0x28, 0x28\n);\n\n// 0x07008F48 - 0x07008F60\nstatic const Lights1 bbh_seg7_lights_07008F48 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07008F60 - 0x07008FE0\nstatic const Vtx bbh_seg7_vertex_07008F60[] = {\n    {{{  2099,      0,   1536}, 0, {   478,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2150,      0,   1382}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2099,      0,   1382}, 0, {   478,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2150,      0,   1536}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3277,      0,   1126}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3430,      0,   1126}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3430,      0,   1075}, 0, {   478,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3277,      0,   1075}, 0, {   478,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07008FE0 - 0x070090E0\nstatic const Vtx bbh_seg7_vertex_07008FE0[] = {\n    {{{  2150,      0,   2048}, 0, {     0,    624}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2560,      0,   1843}, 0, {   260,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2560,      0,   1126}, 0, {   260,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3490,      0,   2001}, 0, {   924,    592}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3174,      0,   2560}, 0, {   698,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3584,      0,   2048}, 0, {   990,    624}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3131,      0,   2451}, 0, {   666,    912}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2970,      0,   2048}, 0, {   552,    624}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2560,      0,   2560}, 0, {   260,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2604,      0,   2451}, 0, {   292,    912}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2244,      0,   2001}, 0, {    34,    592}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2150,      0,   1126}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3174,      0,   1843}, 0, {   698,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3584,      0,   1126}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2765,      0,   2048}, 0, {   406,    624}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3174,      0,   1126}, 0, {   698,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070090E0 - 0x070091E0\nstatic const Vtx bbh_seg7_vertex_070090E0[] = {\n    {{{  2150,   1638,   2048}, 0, {     0,    172}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3584,   1638,   2048}, 0, {   990,    172}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3174,   1638,   2560}, 0, {   698,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3584,   2048,    717}, 0, {   990,    704}, {0xde, 0x86, 0x00, 0xff}}},\n    {{{  2150,   2458,      0}, 0, {     0,    990}, {0xde, 0x86, 0x00, 0xff}}},\n    {{{  3584,   2048,      0}, 0, {   990,    990}, {0xde, 0x86, 0x00, 0xff}}},\n    {{{  2150,   2458,    717}, 0, {     0,    704}, {0xde, 0x86, 0x00, 0xff}}},\n    {{{  2150,   1997,    563}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2099,   1997,    410}, 0, {   480,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2150,   1997,    410}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2099,   1997,    563}, 0, {   480,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2662,   1638,    717}, 0, {   334,    704}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2150,   1638,    717}, 0, {     0,    704}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2150,   1638,      0}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2662,   1638,      0}, 0, {   334,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2560,   1638,   2560}, 0, {   260,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x070091E0 - 0x070092D0\nstatic const Vtx bbh_seg7_vertex_070091E0[] = {\n    {{{  2150,   1638,   2048}, 0, {     0,    172}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3584,   1638,    717}, 0, {   990,    704}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3584,   1638,   2048}, 0, {   990,    172}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2150,   1638,    717}, 0, {     0,    704}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3584,    717,   1126}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3174,    717,   1638}, 0, {   698,    624}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2150,    717,   1126}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2150,    717,   2048}, 0, {     0,    332}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2560,    717,   1638}, 0, {   260,    624}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3174,    717,   2560}, 0, {   698,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3584,    717,   2048}, 0, {   990,    332}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2150,    256,   1382}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2099,      0,   1382}, 0, {   478,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2150,      0,   1382}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2560,    717,   2560}, 0, {   260,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x070092D0 - 0x070093B0\nstatic const Vtx bbh_seg7_vertex_070092D0[] = {\n    {{{  2560,    717,   2150}, 0, {   260,    260}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3174,    717,   2150}, 0, {   698,    260}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3174,    717,   2560}, 0, {   698,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2560,    717,   2560}, 0, {   260,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2099,    256,   1536}, 0, {   480,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2150,    256,   1536}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2150,      0,   1536}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2099,      0,   1536}, 0, {   480,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2150,    256,   1382}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2099,    256,   1382}, 0, {   478,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2099,      0,   1382}, 0, {   478,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3277,    256,   1126}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3277,      0,   1126}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3277,      0,   1075}, 0, {   478,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070093B0 - 0x070094A0\nstatic const Vtx bbh_seg7_vertex_070093B0[] = {\n    {{{  2099,    256,   1382}, 0, {   480,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2150,    256,   1536}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2099,    256,   1536}, 0, {   480,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2150,    256,   1382}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3430,      0,   1075}, 0, {   480,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3430,      0,   1126}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3430,    256,   1126}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3430,    256,   1075}, 0, {   480,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3430,    256,   1075}, 0, {   480,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3277,    256,   1126}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3277,    256,   1075}, 0, {   480,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3430,    256,   1126}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2099,   1075,    410}, 0, {   478,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2150,   1075,    410}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2150,   1075,    563}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x070094A0 - 0x07009540\nstatic const Vtx bbh_seg7_vertex_070094A0[] = {\n    {{{  3277,    256,   1126}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3277,      0,   1075}, 0, {   478,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3277,    256,   1075}, 0, {   478,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2099,   1075,   1741}, 0, {   478,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2150,   1075,   1741}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2150,   1075,   1894}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2099,   1075,   1894}, 0, {   478,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2099,   1075,    410}, 0, {   478,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2150,   1075,    563}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2099,   1075,    563}, 0, {   478,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07009540 - 0x07009640\nstatic const Vtx bbh_seg7_vertex_07009540[] = {\n    {{{  3584,   1024,    731}, 0, {   990,   1500}, {0x00, 0x46, 0x69, 0xff}}},\n    {{{  3584,   1178,    629}, 0, {   990,    988}, {0x00, 0x46, 0x69, 0xff}}},\n    {{{  3379,   1024,    731}, 0, {   478,   1500}, {0x00, 0x46, 0x69, 0xff}}},\n    {{{  3379,   1024,    527}, 0, {  -542,   1500}, {0xb4, 0x65, 0x00, 0xff}}},\n    {{{  3379,   1024,    731}, 0, {     0,   1500}, {0xb4, 0x65, 0x00, 0xff}}},\n    {{{  3584,   1178,    629}, 0, {     0,    988}, {0xb4, 0x65, 0x00, 0xff}}},\n    {{{  3379,   1024,    527}, 0, {   478,   1500}, {0x00, 0x46, 0x97, 0xff}}},\n    {{{  3584,   1178,    629}, 0, {   990,    988}, {0x00, 0x46, 0x97, 0xff}}},\n    {{{  3584,   1024,    527}, 0, {   990,   1500}, {0x00, 0x46, 0x97, 0xff}}},\n    {{{  2150,   1741,    563}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2099,   1741,    563}, 0, {   478,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2099,   1997,    563}, 0, {   478,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3584,   1638,    205}, 0, {  -542,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3584,   2048,    717}, 0, {   734,    992}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3584,   2048,    205}, 0, {  -542,    988}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3584,   1638,    717}, 0, {   734,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07009640 - 0x07009720\nstatic const Vtx bbh_seg7_vertex_07009640[] = {\n    {{{  3379,   2107,      0}, 0, {  2522,   1136}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2355,   1638,      0}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3379,   1638,      0}, 0, {  2522,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2355,   2399,      0}, 0, {     0,   1864}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2150,   1638,    717}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2150,   2458,    717}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3584,   2048,    717}, 0, {  3544,    988}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3584,   1638,    717}, 0, {  3544,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2150,   1997,    563}, 0, {   352,   1284}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,   2458,    205}, 0, {  1246,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,   2458,    717}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,   1741,    563}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2099,   1997,    563}, 0, {   478,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2150,   1997,    563}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07009720 - 0x07009810\nstatic const Vtx bbh_seg7_vertex_07009720[] = {\n    {{{  2150,   1997,    410}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2099,   1997,    410}, 0, {   478,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2099,   1741,    410}, 0, {   478,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2150,   1741,    410}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2150,   1741,    717}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,   1997,    563}, 0, {   352,   1284}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,   2458,    717}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,   1741,    563}, 0, {   352,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,   1997,    410}, 0, {   734,   1284}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,   2458,    205}, 0, {  1246,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,    717,   2048}, 0, {  1604,      0}, {0x63, 0x00, 0xb1, 0xff}}},\n    {{{  2560,    717,   2560}, 0, {     0,      0}, {0x63, 0x00, 0xb1, 0xff}}},\n    {{{  2150,      0,   2048}, 0, {  1604,   1756}, {0x63, 0x00, 0xb1, 0xff}}},\n    {{{  2150,   1741,    410}, 0, {   734,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,   1741,    205}, 0, {  1246,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07009810 - 0x070098F0\nstatic const Vtx bbh_seg7_vertex_07009810[] = {\n    {{{  3277,    256,   1126}, 0, {  2778,   1116}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3430,    256,   1126}, 0, {  3162,   1116}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3584,    717,   1126}, 0, {  3544,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3277,      0,   1126}, 0, {  2778,   1756}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2150,    717,   1126}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3584,      0,   1126}, 0, {  3544,   1756}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2150,      0,   1126}, 0, {     0,   1756}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3430,      0,   1126}, 0, {  3162,   1756}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3584,      0,   2048}, 0, {   990,   1756}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3584,    717,   1126}, 0, { -1308,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3584,      0,   1126}, 0, { -1308,   1756}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2560,    717,   2560}, 0, {     0,      0}, {0x63, 0x00, 0xb1, 0xff}}},\n    {{{  2560,      0,   2560}, 0, {     0,   1756}, {0x63, 0x00, 0xb1, 0xff}}},\n    {{{  2150,      0,   2048}, 0, {  1604,   1756}, {0x63, 0x00, 0xb1, 0xff}}},\n};\n\n// 0x070098F0 - 0x070099F0\nstatic const Vtx bbh_seg7_vertex_070098F0[] = {\n    {{{  3174,    717,   2560}, 0, {  1604,      0}, {0x9d, 0x00, 0xb1, 0xff}}},\n    {{{  3584,    717,   2048}, 0, {     0,      0}, {0x9d, 0x00, 0xb1, 0xff}}},\n    {{{  3584,      0,   2048}, 0, {     0,   1756}, {0x9d, 0x00, 0xb1, 0xff}}},\n    {{{  3174,      0,   2560}, 0, {  1604,   1756}, {0x9d, 0x00, 0xb1, 0xff}}},\n    {{{  2560,    717,   2560}, 0, {  1500,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3174,    717,   2560}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3174,      0,   2560}, 0, {     0,   1756}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2560,      0,   2560}, 0, {  1500,   1756}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3584,      0,   2048}, 0, {   990,   1756}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3584,    717,   2048}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3584,    717,   1126}, 0, { -1308,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2150,    717,   2048}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,    256,   1536}, 0, {  1246,   1116}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,    256,   1382}, 0, {  1628,   1116}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,    717,   1126}, 0, {  2268,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,      0,   1126}, 0, {  2268,   1756}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070099F0 - 0x07009AE0\nstatic const Vtx bbh_seg7_vertex_070099F0[] = {\n    {{{  2150,      0,   1126}, 0, {  2268,   1756}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,    256,   1382}, 0, {  1628,   1116}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,      0,   1382}, 0, {  1628,   1756}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,      0,   1536}, 0, {  1246,   1756}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,    256,   1536}, 0, {  1246,   1116}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,    717,   2048}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,      0,   2048}, 0, {     0,   1756}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,   1638,   2048}, 0, { -1818,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,   1075,    410}, 0, {  2268,   1372}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,   1638,    205}, 0, {  2778,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,    819,    205}, 0, {  2778,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,   1075,   1894}, 0, { -1436,   1372}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,    819,    410}, 0, {  2268,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,    819,   1894}, 0, { -1436,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,    819,   2048}, 0, { -1818,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07009AE0 - 0x07009BD0\nstatic const Vtx bbh_seg7_vertex_07009AE0[] = {\n    {{{  2150,    819,    563}, 0, {  1884,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,   1075,    563}, 0, {  1884,   1372}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,   1075,   1741}, 0, { -1052,   1372}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,    819,   1741}, 0, { -1052,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3174,    819,   2560}, 0, {  1604,   2012}, {0x9d, 0x00, 0xb1, 0xff}}},\n    {{{  3584,   1638,   2048}, 0, {     0,      0}, {0x9d, 0x00, 0xb1, 0xff}}},\n    {{{  3584,    819,   2048}, 0, {     0,   2012}, {0x9d, 0x00, 0xb1, 0xff}}},\n    {{{  3174,   1638,   2560}, 0, {  1604,      0}, {0x9d, 0x00, 0xb1, 0xff}}},\n    {{{  3584,   1638,    205}, 0, { -1562,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3584,    819,    205}, 0, { -1562,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3584,    819,   2048}, 0, {  3034,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2150,    819,   2048}, 0, {  1604,   2012}, {0x63, 0x00, 0xb1, 0xff}}},\n    {{{  2150,   1638,   2048}, 0, {  1604,      0}, {0x63, 0x00, 0xb1, 0xff}}},\n    {{{  2560,   1638,   2560}, 0, {     0,      0}, {0x63, 0x00, 0xb1, 0xff}}},\n    {{{  2560,    819,   2560}, 0, {     0,   2012}, {0x63, 0x00, 0xb1, 0xff}}},\n};\n\n// 0x07009BD0 - 0x07009CB0\nstatic const Vtx bbh_seg7_vertex_07009BD0[] = {\n    {{{  3174,    819,   2560}, 0, {  -286,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2560,    819,   2560}, 0, {  1246,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2560,   1638,   2560}, 0, {  1246,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3174,   1638,   2560}, 0, {  -286,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3379,   1638,      0}, 0, {  2524,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2355,   1638,      0}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2355,    819,      0}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3379,    819,      0}, 0, {  2524,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2099,   1075,    563}, 0, {   480,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2150,    819,    563}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2099,    819,    563}, 0, {   480,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3584,   1638,    205}, 0, { -1562,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3584,    819,   2048}, 0, {  3034,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3584,   1638,   2048}, 0, {  3034,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07009CB0 - 0x07009D90\nstatic const Vtx bbh_seg7_vertex_07009CB0[] = {\n    {{{  2150,   1075,   1741}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2099,    819,   1741}, 0, {   480,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2150,    819,   1741}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2099,   1075,   1741}, 0, {   480,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2099,   1075,   1894}, 0, {   480,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2150,   1075,   1894}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2150,    819,   1894}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2099,    819,   1894}, 0, {   480,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2099,   1075,    563}, 0, {   480,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2150,   1075,    563}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2150,    819,    563}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2390,   1638,   1464}, 0, {   478,      0}, {0x4a, 0x00, 0x66, 0xff}}},\n    {{{  2150,   1638,   1638}, 0, {  -142,      0}, {0x4a, 0x00, 0x66, 0xff}}},\n    {{{  2390,    819,   1464}, 0, {   478,   2012}, {0x4a, 0x00, 0x66, 0xff}}},\n};\n\n// 0x07009D90 - 0x07009E80\nstatic const Vtx bbh_seg7_vertex_07009D90[] = {\n    {{{  2150,   1075,    410}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2099,   1075,    410}, 0, {   480,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2099,    819,    410}, 0, {   480,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2150,    819,    410}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2150,   1638,    717}, 0, {  1102,      0}, {0x24, 0x00, 0x87, 0xff}}},\n    {{{  2390,    819,    789}, 0, {   478,   2012}, {0x24, 0x00, 0x87, 0xff}}},\n    {{{  2150,    819,    717}, 0, {  1102,   2012}, {0x24, 0x00, 0x87, 0xff}}},\n    {{{  2390,   1638,    789}, 0, {   478,      0}, {0x24, 0x00, 0x87, 0xff}}},\n    {{{  3174,    819,   1024}, 0, {   734,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3174,   1638,   1024}, 0, {   734,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3174,   1638,   1229}, 0, {   224,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3174,    819,   1229}, 0, {   224,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,   1638,   1638}, 0, {  -142,      0}, {0x4a, 0x00, 0x66, 0xff}}},\n    {{{  2150,    819,   1638}, 0, {  -142,   2012}, {0x4a, 0x00, 0x66, 0xff}}},\n    {{{  2390,    819,   1464}, 0, {   478,   2012}, {0x4a, 0x00, 0x66, 0xff}}},\n};\n\n// 0x07009E80 - 0x07009F70\nstatic const Vtx bbh_seg7_vertex_07009E80[] = {\n    {{{  2867,   1024,    307}, 0, {     0,      0}, {0xaf, 0x00, 0x61, 0xff}}},\n    {{{  2867,    819,    307}, 0, {     0,   1332}, {0xaf, 0x00, 0x61, 0xff}}},\n    {{{  3379,    819,    731}, 0, {  3286,   1332}, {0xaf, 0x00, 0x61, 0xff}}},\n    {{{  3379,   1024,    731}, 0, {  3286,      0}, {0xaf, 0x00, 0x61, 0xff}}},\n    {{{  3379,   1024,    731}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3379,    819,    731}, 0, {     0,   1332}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3584,    819,    731}, 0, {   990,   1332}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3584,   1024,    731}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2765,      0,   2048}, 0, {     0,      0}, {0x8b, 0x00, 0xd1, 0xff}}},\n    {{{  2765,   -716,   2048}, 0, {     0,   3540}, {0x8b, 0x00, 0xd1, 0xff}}},\n    {{{  2604,   -716,   2451}, 0, {  2132,   3540}, {0x8b, 0x00, 0xd1, 0xff}}},\n    {{{  2662,   1638,      0}, 0, {  3546,    648}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2662,   1741,    717}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2662,   1638,    717}, 0, {     0,    648}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2662,   1741,      0}, 0, {  3546,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07009F70 - 0x0700A050\nstatic const Vtx bbh_seg7_vertex_07009F70[] = {\n    {{{  2244,      0,   2001}, 0, {  -770,      0}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  2244,   -716,   2001}, 0, {  -770,   3540}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  2560,   -716,   1843}, 0, {   990,   3540}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  2560,      0,   1843}, 0, {   990,      0}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  2604,      0,   2451}, 0, {     0,      0}, {0x63, 0x00, 0xb1, 0xff}}},\n    {{{  2604,   -716,   2451}, 0, {     0,   3540}, {0x63, 0x00, 0xb1, 0xff}}},\n    {{{  2244,      0,   2001}, 0, {  2842,      0}, {0x63, 0x00, 0xb1, 0xff}}},\n    {{{  2244,   -716,   2001}, 0, {  2842,   3540}, {0x63, 0x00, 0xb1, 0xff}}},\n    {{{  3174,      0,   1843}, 0, {     0,      0}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  3490,   -716,   2001}, 0, {  1730,   3540}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  3490,      0,   2001}, 0, {  1730,      0}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  2765,      0,   2048}, 0, {     0,      0}, {0x8b, 0x00, 0xd1, 0xff}}},\n    {{{  2604,   -716,   2451}, 0, {  2132,   3540}, {0x8b, 0x00, 0xd1, 0xff}}},\n    {{{  2604,      0,   2451}, 0, {  2132,      0}, {0x8b, 0x00, 0xd1, 0xff}}},\n};\n\n// 0x0700A050 - 0x0700A130\nstatic const Vtx bbh_seg7_vertex_0700A050[] = {\n    {{{  2970,   -716,   2048}, 0, {   990,   3540}, {0x75, 0x00, 0xd1, 0xff}}},\n    {{{  2970,      0,   2048}, 0, {   990,      0}, {0x75, 0x00, 0xd1, 0xff}}},\n    {{{  3131,   -716,   2451}, 0, { -1174,   3540}, {0x75, 0x00, 0xd1, 0xff}}},\n    {{{  3131,      0,   2451}, 0, { -1174,      0}, {0x75, 0x00, 0xd1, 0xff}}},\n    {{{  3490,      0,   2001}, 0, {     0,      0}, {0x9d, 0x00, 0xb1, 0xff}}},\n    {{{  3131,   -716,   2451}, 0, {  2842,   3540}, {0x9d, 0x00, 0xb1, 0xff}}},\n    {{{  3131,      0,   2451}, 0, {  2842,      0}, {0x9d, 0x00, 0xb1, 0xff}}},\n    {{{  3490,   -716,   2001}, 0, {     0,   3540}, {0x9d, 0x00, 0xb1, 0xff}}},\n    {{{  3174,      0,   1843}, 0, {     0,      0}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  3174,   -716,   1843}, 0, {     0,   3540}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  3490,   -716,   2001}, 0, {  1730,   3540}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  2765,      0,   2048}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2970,      0,   2048}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2970,   -716,   2048}, 0, {     0,   3540}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700A130 - 0x0700A220\nstatic const Vtx bbh_seg7_vertex_0700A130[] = {\n    {{{  2560,   -716,   1126}, 0, {     0,   3540}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3174,      0,   1126}, 0, {  3034,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2560,      0,   1126}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3174,   -716,   1126}, 0, {  3034,   3540}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3174,   -716,   1843}, 0, {  3544,   3540}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3174,      0,   1126}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3174,   -716,   1126}, 0, {     0,   3540}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3174,      0,   1843}, 0, {  3544,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2560,   -716,   1126}, 0, {  3544,   3540}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2560,      0,   1843}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2560,   -716,   1843}, 0, {     0,   3540}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2560,      0,   1126}, 0, {  3544,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2560,    819,   2150}, 0, {  2522,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2560,    717,   2150}, 0, {  2522,    988}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2560,    717,   1638}, 0, {     0,    988}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700A220 - 0x0700A300\nstatic const Vtx bbh_seg7_vertex_0700A220[] = {\n    {{{  2765,      0,   2048}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2970,   -716,   2048}, 0, {     0,   3540}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2765,   -716,   2048}, 0, {   990,   3540}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3174,    819,   1638}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3174,    717,   1638}, 0, {     0,    988}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3174,    717,   2150}, 0, {  2522,    988}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3174,    819,   2150}, 0, {  2522,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3174,    819,   2150}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2560,    717,   2150}, 0, {  3034,    992}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2560,    819,   2150}, 0, {  3034,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3174,    717,   2150}, 0, {     0,    992}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2560,    819,   2150}, 0, {  2522,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2560,    717,   1638}, 0, {     0,    988}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2560,    819,   1638}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700A300 - 0x0700A380\nstatic const Vtx bbh_seg7_vertex_0700A300[] = {\n    {{{  2560,    819,   1638}, 0, {  3034,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2560,    717,   1638}, 0, {  3034,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3174,    717,   1638}, 0, {     0,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3174,    819,   1638}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2867,   1024,      0}, 0, {  -542,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2867,    819,      0}, 0, {  -542,   1332}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2867,    819,    307}, 0, {   990,   1332}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2867,   1024,    307}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700A380 - 0x0700A3E0\nstatic const Vtx bbh_seg7_vertex_0700A380[] = {\n    {{{  3379,   1024,    731}, 0, { -1562,    188}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3379,   1024,    527}, 0, { -1562,    700}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2867,   1024,    307}, 0, {   990,   1244}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2867,   1024,      0}, 0, {   990,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3584,   1024,      0}, 0, { -2584,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3584,   1024,    527}, 0, { -2584,    700}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700A3E0 - 0x0700A460\nstatic const Vtx bbh_seg7_vertex_0700A3E0[] = {\n    {{{  2390,   1638,    789}, 0, {  4056,      0}, {0x24, 0x00, 0x87, 0xff}}},\n    {{{  3174,    819,   1024}, 0, {     0,   4052}, {0x24, 0x00, 0x87, 0xff}}},\n    {{{  2390,    819,    789}, 0, {  4056,   4052}, {0x24, 0x00, 0x87, 0xff}}},\n    {{{  3174,   1638,   1024}, 0, {     0,      0}, {0x24, 0x00, 0x87, 0xff}}},\n    {{{  3174,   1638,   1229}, 0, {   990,      0}, {0x24, 0x00, 0x79, 0xff}}},\n    {{{  2390,   1638,   1464}, 0, { -3096,      0}, {0x24, 0x00, 0x79, 0xff}}},\n    {{{  3174,    819,   1229}, 0, {   990,   4052}, {0x24, 0x00, 0x79, 0xff}}},\n    {{{  2390,    819,   1464}, 0, { -3096,   4052}, {0x24, 0x00, 0x79, 0xff}}},\n};\n\n// 0x0700A460 - 0x0700A550\nstatic const Vtx bbh_seg7_vertex_0700A460[] = {\n    {{{  2355,   2399,    102}, 0, {   734,    156}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2355,    819,      0}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2355,   2399,      0}, 0, {   990,    156}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3379,   2107,      0}, 0, {   990,    292}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3379,   1024,      0}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3379,   1024,    102}, 0, {   734,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3379,   2107,    102}, 0, {   734,    292}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3379,   2107,    102}, 0, {   734,    292}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3379,   1024,    102}, 0, {   734,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3482,   1024,    205}, 0, {   224,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3482,   2077,    205}, 0, {   224,    340}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3482,   2077,    205}, 0, {   224,    340}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3482,   1024,    205}, 0, {   224,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3584,   1024,    205}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3584,   2048,    205}, 0, {     0,    388}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0700A550 - 0x0700A600\nstatic const Vtx bbh_seg7_vertex_0700A550[] = {\n    {{{  2253,   2428,    205}, 0, {   224,    124}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{  2355,    819,    102}, 0, {   734,   2012}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{  2355,   2399,    102}, 0, {   734,    156}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{  2355,   2399,    102}, 0, {   734,    156}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2355,    819,    102}, 0, {   734,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2355,    819,      0}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,   2458,    205}, 0, {     0,     88}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2150,    819,    205}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2253,    819,    205}, 0, {   224,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2253,    819,    205}, 0, {   224,   2012}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{  2253,   2428,    205}, 0, {   224,    124}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0700A600 - 0x0700A700\nstatic const Vtx bbh_seg7_vertex_0700A600[] = {\n    {{{  2150,    819,      0}, 0, {-12292,   8142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2560,    819,   1638}, 0, {  4056,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3174,    819,   1638}, 0, {  4056,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2150,   1741,    410}, 0, {   992,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2099,   1741,    410}, 0, {   992,  -3608}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2099,   1741,    563}, 0, {  -540,  -3608}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2150,   1741,    563}, 0, {  -540,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2662,   1741,      0}, 0, {  5080,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2150,   1741,      0}, 0, {  5080,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2150,   1741,    717}, 0, { -2072,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2662,   1741,    717}, 0, { -2072,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3584,    819,      0}, 0, {-12292,  -6164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2150,    819,   2048}, 0, {  8144,   8142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2099,    819,    563}, 0, {  2012,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2150,    819,    563}, 0, {  2012,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2150,    819,    410}, 0, {   480,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700A700 - 0x0700A800\nstatic const Vtx bbh_seg7_vertex_0700A700[] = {\n    {{{  2560,    819,   2560}, 0, { 13252,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2560,    819,   1638}, 0, {  4056,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2150,    819,   2048}, 0, {  8144,   8142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3584,    819,   2048}, 0, {  8144,  -6164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3584,    819,      0}, 0, {-12292,  -6164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3174,    819,   1638}, 0, {  4056,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3174,    819,   2560}, 0, { 13252,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3174,    819,   2150}, 0, {  9164,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2560,    819,   2150}, 0, {  9164,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2099,    819,    563}, 0, {  2012,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2150,    819,    410}, 0, {   480,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2099,    819,    410}, 0, {   480,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2099,    819,   1894}, 0, {  2012,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2150,    819,   1894}, 0, {  2012,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2150,    819,   1741}, 0, {   480,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2099,    819,   1741}, 0, {   480,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700A800 - 0x0700AA08\nstatic const Gfx bbh_seg7_dl_0700A800[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_07008F18.l, 1),\n    gsSPLight(&bbh_seg7_lights_07008F18.a, 2),\n    gsSPVertex(bbh_seg7_vertex_07008F60, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPLight(&bbh_seg7_lights_07008F30.l, 1),\n    gsSPLight(&bbh_seg7_lights_07008F30.a, 2),\n    gsSPVertex(bbh_seg7_vertex_07008FE0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  4, 0x0),\n    gsSP2Triangles( 9, 10,  8, 0x0, 10,  0,  8, 0x0),\n    gsSP2Triangles( 0,  2, 11, 0x0, 12,  5, 13, 0x0),\n    gsSP2Triangles( 7, 14,  8, 0x0, 12, 13, 15, 0x0),\n    gsSPLight(&bbh_seg7_lights_07008F48.l, 1),\n    gsSPLight(&bbh_seg7_lights_07008F48.a, 2),\n    gsSPVertex(bbh_seg7_vertex_070090E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_070091E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  6,  8, 0x0),\n    gsSP2Triangles( 6,  5,  8, 0x0,  9,  5, 10, 0x0),\n    gsSP2Triangles( 5,  4, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 7,  8, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_070092D0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_070093B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_070094A0, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700AA08 - 0x0700ACB0\nstatic const Gfx bbh_seg7_dl_0700AA08[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_07009540, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07009640, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07009720, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 5,  8,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles( 9, 13, 14, 0x0,  9,  8, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07009810, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  5,  2,  1, 0x0),\n    gsSP2Triangles( 3,  4,  6, 0x0,  5,  1,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_070098F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0, 15, 14, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_070099F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0,  7, 11,  8, 0x0),\n    gsSP2Triangles(12, 10,  8, 0x0, 13, 11, 14, 0x0),\n    gsSP1Triangle(14, 11,  7, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07009AE0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07009BD0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07009CB0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07009D90, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700ACB0 - 0x0700AE20\nstatic const Gfx bbh_seg7_dl_0700ACB0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_07009E80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07009F70, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700A050, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700A130, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700A220, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700A300, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700AE20 - 0x0700AE68\nstatic const Gfx bbh_seg7_dl_0700AE20[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bbh_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_0700A380, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 3,  1,  4, 0x0,  1,  5,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700AE68 - 0x0700AEB0\nstatic const Gfx bbh_seg7_dl_0700AE68[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09002800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_0700A3E0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700AEB0 - 0x0700AF40\nstatic const Gfx bbh_seg7_dl_0700AEB0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_0700A460, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700A550, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  0,  9,  1, 0x0),\n    gsSP1Triangle( 6,  8, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700AF40 - 0x0700AFF0\nstatic const Gfx bbh_seg7_dl_0700AF40[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09009000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_0700A600, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  2, 11,  0, 0x0),\n    gsSP2Triangles( 1,  0, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700A700, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  0, 0x0),\n    gsSP2Triangles( 7,  0,  6, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700AFF0 - 0x0700B0D8\nconst Gfx bbh_seg7_dl_0700AFF0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0700A800),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0700AA08),\n    gsSPDisplayList(bbh_seg7_dl_0700ACB0),\n    gsSPDisplayList(bbh_seg7_dl_0700AE20),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0700AE68),\n    gsSPDisplayList(bbh_seg7_dl_0700AEB0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0700AF40),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/8/model.inc.c",
    "content": "// 0x0700B0D8 - 0x0700B0F0\nstatic const Lights1 bbh_seg7_lights_0700B0D8 = gdSPDefLights1(\n    0x3f, 0x51, 0x66,\n    0x9e, 0xcc, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700B0F0 - 0x0700B170\nstatic const Vtx bbh_seg7_vertex_0700B0F0[] = {\n    {{{  2662,    614,   2550}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3072,    205,   2550}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2662,    205,   2550}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3072,    614,   2550}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2662,   1536,   2550}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3072,   1126,   2550}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2662,   1126,   2550}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3072,   1536,   2550}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700B170 - 0x0700B1C8\nstatic const Gfx bbh_seg7_dl_0700B170[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09006000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_0700B0D8.l, 1),\n    gsSPLight(&bbh_seg7_lights_0700B0D8.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0700B0F0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700B1C8 - 0x0700B238\nconst Gfx bbh_seg7_dl_0700B1C8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0700B170),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/9/model.inc.c",
    "content": "// 0x0700B238 - 0x0700B328\nstatic const Vtx bbh_seg7_vertex_0700B238[] = {\n    {{{  2161,    819,   1638}, 0, {     0,   2012}, {0xff, 0x57, 0x00, 0x9a}}},\n    {{{  2161,   1485,   1638}, 0, {     0,      0}, {0xff, 0x57, 0x00, 0x9a}}},\n    {{{  2161,   1485,   1997}, 0, {   990,      0}, {0xff, 0x57, 0x00, 0x9a}}},\n    {{{  2161,   1741,    307}, 0, {     0,   2012}, {0xff, 0x57, 0x00, 0x9a}}},\n    {{{  2161,   2406,    307}, 0, {     0,      0}, {0xff, 0x57, 0x00, 0x9a}}},\n    {{{  2161,   2406,    666}, 0, {   990,      0}, {0xff, 0x57, 0x00, 0x9a}}},\n    {{{  2161,   1741,    666}, 0, {   990,   2012}, {0xff, 0x57, 0x00, 0x9a}}},\n    {{{  2161,    819,    307}, 0, {     0,   2012}, {0xff, 0x57, 0x00, 0x9a}}},\n    {{{  2161,   1485,    307}, 0, {     0,      0}, {0xff, 0x57, 0x00, 0x9a}}},\n    {{{  2161,   1485,    666}, 0, {   990,      0}, {0xff, 0x57, 0x00, 0x9a}}},\n    {{{  2161,    819,    666}, 0, {   990,   2012}, {0xff, 0x57, 0x00, 0x9a}}},\n    {{{  3533,    614,   1137}, 0, {   990,      0}, {0xff, 0x57, 0x00, 0x9a}}},\n    {{{  3174,      0,   1137}, 0, {     0,   2012}, {0xff, 0x57, 0x00, 0x9a}}},\n    {{{  3533,      0,   1137}, 0, {   990,   2012}, {0xff, 0x57, 0x00, 0x9a}}},\n    {{{  3174,    614,   1137}, 0, {     0,      0}, {0xff, 0x57, 0x00, 0x9a}}},\n};\n\n// 0x0700B328 - 0x0700B398\nstatic const Vtx bbh_seg7_vertex_0700B328[] = {\n    {{{  2161,      0,   1280}, 0, {     0,   2012}, {0xff, 0x57, 0x00, 0x9a}}},\n    {{{  2161,    666,   1638}, 0, {   990,      0}, {0xff, 0x57, 0x00, 0x9a}}},\n    {{{  2161,      0,   1638}, 0, {   990,   2012}, {0xff, 0x57, 0x00, 0x9a}}},\n    {{{  2161,    819,   1638}, 0, {     0,   2012}, {0xff, 0x57, 0x00, 0x9a}}},\n    {{{  2161,   1485,   1997}, 0, {   990,      0}, {0xff, 0x57, 0x00, 0x9a}}},\n    {{{  2161,    819,   1997}, 0, {   990,   2012}, {0xff, 0x57, 0x00, 0x9a}}},\n    {{{  2161,    666,   1280}, 0, {     0,      0}, {0xff, 0x57, 0x00, 0x9a}}},\n};\n\n// 0x0700B398 - 0x0700B418\nstatic const Gfx bbh_seg7_dl_0700B398[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, spooky_0900B800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_0700B238, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0700B328, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  6,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700B418 - 0x0700B488\nconst Gfx bbh_seg7_dl_0700B418[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0700B398),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/collision.inc.c",
    "content": "// 0x070207A0 - 0x0702605C\nconst Collision bbh_seg7_collision_level[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x62E),\n    COL_VERTEX(102, 2355, -497),\n    COL_VERTEX(102, 1741, 116),\n    COL_VERTEX(102, 2355, 116),\n    COL_VERTEX(102, 1741, -497),\n    COL_VERTEX(205, 2355, 116),\n    COL_VERTEX(205, 1741, -497),\n    COL_VERTEX(205, 2355, -497),\n    COL_VERTEX(205, 1741, 116),\n    COL_VERTEX(-1279, 614, -255),\n    COL_VERTEX(-1791, 102, -255),\n    COL_VERTEX(-1279, 102, -255),\n    COL_VERTEX(-1791, 614, -255),\n    COL_VERTEX(-1791, 614, -357),\n    COL_VERTEX(-1279, 614, -357),\n    COL_VERTEX(-1279, 102, -357),\n    COL_VERTEX(-1791, 102, -357),\n    COL_VERTEX(307, 0, 2867),\n    COL_VERTEX(1024, 0, 2867),\n    COL_VERTEX(410, 0, 2253),\n    COL_VERTEX(922, 0, 2253),\n    COL_VERTEX(1278, 0, 2423),\n    COL_VERTEX(1434, 0, 2150),\n    COL_VERTEX(922, 0, 2150),\n    COL_VERTEX(53, 0, 2423),\n    COL_VERTEX(410, 0, 2150),\n    COL_VERTEX(-101, 0, 2150),\n    COL_VERTEX(-479, -204, 2727),\n    COL_VERTEX(-225, -204, 3172),\n    COL_VERTEX(-1125, -204, 2662),\n    COL_VERTEX(1024, -204, 2867),\n    COL_VERTEX(307, -204, 2867),\n    COL_VERTEX(1557, -204, 3172),\n    COL_VERTEX(-1945, -204, 2662),\n    COL_VERTEX(-1901, -204, 4545),\n    COL_VERTEX(-1503, -204, 5088),\n    COL_VERTEX(3482, -204, 6758),\n    COL_VERTEX(2458, -204, 2662),\n    COL_VERTEX(-2661, -204, 3929),\n    COL_VERTEX(-2354, -204, 2150),\n    COL_VERTEX(-716, -204, 2150),\n    COL_VERTEX(53, -204, 2423),\n    COL_VERTEX(2048, -204, 2150),\n    COL_VERTEX(1434, -204, 2150),\n    COL_VERTEX(3482, -204, -3993),\n    COL_VERTEX(-2354, -204, -1637),\n    COL_VERTEX(3277, -204, 2662),\n    COL_VERTEX(5530, -204, 4710),\n    COL_VERTEX(3686, -204, 2150),\n    COL_VERTEX(5530, -204, -1945),\n    COL_VERTEX(-4197, -204, -1945),\n    COL_VERTEX(-4197, -204, 4710),\n    COL_VERTEX(512, 0, 2150),\n    COL_VERTEX(819, 0, 2099),\n    COL_VERTEX(-76, -2457, 4659),\n    COL_VERTEX(-76, -2457, 4608),\n    COL_VERTEX(-2661, -2457, 4074),\n    COL_VERTEX(-1986, -2457, 5427),\n    COL_VERTEX(-178, -2457, 4813),\n    COL_VERTEX(179, -2457, 4710),\n    COL_VERTEX(307, -2457, 4710),\n    COL_VERTEX(307, -2457, 5427),\n    COL_VERTEX(179, -2457, 4506),\n    COL_VERTEX(307, -2457, 2150),\n    COL_VERTEX(179, -2457, 2150),\n    COL_VERTEX(-178, -2457, 4506),\n    COL_VERTEX(-306, -2457, 2150),\n    COL_VERTEX(-306, -2457, 4608),\n    COL_VERTEX(-76, -2457, 2099),\n    COL_VERTEX(-76, -2457, 2048),\n    COL_VERTEX(-2764, -2457, 2048),\n    COL_VERTEX(-2764, -2457, 1536),\n    COL_VERTEX(-178, -2457, 2048),\n    COL_VERTEX(1126, -2457, 1536),\n    COL_VERTEX(179, -2457, 1946),\n    COL_VERTEX(3686, -2661, -1535),\n    COL_VERTEX(-2047, -2457, -613),\n    COL_VERTEX(-1535, -2457, -1125),\n    COL_VERTEX(-2047, -2457, 512),\n    COL_VERTEX(2150, -2457, 1126),\n    COL_VERTEX(1638, -2457, -1125),\n    COL_VERTEX(1638, -2457, 1024),\n    COL_VERTEX(2150, -2969, 1126),\n    COL_VERTEX(3686, -2661, 102),\n    COL_VERTEX(-2764, -2354, 1024),\n    COL_VERTEX(2099, 1741, 410),\n    COL_VERTEX(-716, 1741, 1345),\n    COL_VERTEX(2048, 1741, 1345),\n    COL_VERTEX(1946, 1741, 666),\n    COL_VERTEX(-716, 1741, -805),\n    COL_VERTEX(1946, 1741, 307),\n    COL_VERTEX(-204, 819, -204),\n    COL_VERTEX(512, 819, -306),\n    COL_VERTEX(-716, 819, -101),\n    COL_VERTEX(-204, 819, -511),\n    COL_VERTEX(-716, 819, -1125),\n    COL_VERTEX(0, 819, -101),\n    COL_VERTEX(1024, 819, -101),\n    COL_VERTEX(1024, 819, -1535),\n    COL_VERTEX(-306, 819, -1125),\n    COL_VERTEX(-306, 819, -1535),\n    COL_VERTEX(-204, 819, -1023),\n    COL_VERTEX(614, 819, -1023),\n    COL_VERTEX(-511, 819, -511),\n    COL_VERTEX(102, 819, -613),\n    COL_VERTEX(614, 819, -818),\n    COL_VERTEX(819, 819, -613),\n    COL_VERTEX(-716, 0, -101),\n    COL_VERTEX(-716, 0, -1535),\n    COL_VERTEX(256, 0, -101),\n    COL_VERTEX(1024, 0, -1535),\n    COL_VERTEX(1024, 0, -101),\n    COL_VERTEX(358, 0, 0),\n    COL_VERTEX(512, 0, -50),\n    COL_VERTEX(256, 819, -50),\n    COL_VERTEX(1792, 819, -204),\n    COL_VERTEX(1434, 819, -204),\n    COL_VERTEX(1126, 819, -101),\n    COL_VERTEX(1690, 819, -50),\n    COL_VERTEX(-2201, 0, 922),\n    COL_VERTEX(-2201, 0, 1024),\n    COL_VERTEX(-2252, 0, 1024),\n    COL_VERTEX(-1842, 0, 922),\n    COL_VERTEX(-818, 0, 0),\n    COL_VERTEX(-1381, 0, -1433),\n    COL_VERTEX(-1381, 0, -1535),\n    COL_VERTEX(-2252, 0, -1535),\n    COL_VERTEX(-101, 0, 1024),\n    COL_VERTEX(-204, 0, 819),\n    COL_VERTEX(-204, 0, 461),\n    COL_VERTEX(-101, 0, 717),\n    COL_VERTEX(-50, 0, 717),\n    COL_VERTEX(-1945, 0, 1075),\n    COL_VERTEX(-1637, 0, -1535),\n    COL_VERTEX(3584, 0, -306),\n    COL_VERTEX(3533, 0, 922),\n    COL_VERTEX(3174, 0, 1024),\n    COL_VERTEX(2662, 0, -306),\n    COL_VERTEX(2662, 0, 1024),\n    COL_VERTEX(2150, 0, -1228),\n    COL_VERTEX(1792, 0, -204),\n    COL_VERTEX(1434, 0, -101),\n    COL_VERTEX(1126, 0, -101),\n    COL_VERTEX(3277, 0, 1126),\n    COL_VERTEX(3430, 0, 1075),\n    COL_VERTEX(1690, 0, -50),\n    COL_VERTEX(1536, 0, 0),\n    COL_VERTEX(3584, 0, 1126),\n    COL_VERTEX(3584, 0, 2048),\n    COL_VERTEX(3533, 0, 1126),\n    COL_VERTEX(3533, 0, 1229),\n    COL_VERTEX(2560, 0, 1843),\n    COL_VERTEX(2253, 0, 1638),\n    COL_VERTEX(2253, 0, 1280),\n    COL_VERTEX(2560, 0, 1126),\n    COL_VERTEX(2244, 0, 2001),\n    COL_VERTEX(2150, 0, 1126),\n    COL_VERTEX(3490, 0, 2001),\n    COL_VERTEX(2970, 0, 2048),\n    COL_VERTEX(2604, 0, 2451),\n    COL_VERTEX(2048, 0, 1536),\n    COL_VERTEX(2099, 0, 1536),\n    COL_VERTEX(-50, 0, 1536),\n    COL_VERTEX(1946, 0, 1638),\n    COL_VERTEX(2048, 0, 2048),\n    COL_VERTEX(1434, 0, 102),\n    COL_VERTEX(614, 0, 0),\n    COL_VERTEX(102, 0, 461),\n    COL_VERTEX(1792, 0, 102),\n    COL_VERTEX(2048, 0, 0),\n    COL_VERTEX(256, 0, 102),\n    COL_VERTEX(0, 0, 1280),\n    COL_VERTEX(102, 0, 1280),\n    COL_VERTEX(0, 0, 1638),\n    COL_VERTEX(102, 0, 1638),\n    COL_VERTEX(0, 0, 2048),\n    COL_VERTEX(410, 0, 2048),\n    COL_VERTEX(922, 0, 1946),\n    COL_VERTEX(-2155, -204, 4291),\n    COL_VERTEX(1811, -204, 2727),\n    COL_VERTEX(-101, -204, 2150),\n    COL_VERTEX(1278, -204, 2423),\n    COL_VERTEX(3686, -204, -1637),\n    COL_VERTEX(-2149, -204, -3993),\n    COL_VERTEX(-2149, -204, 6758),\n    COL_VERTEX(-2661, -204, 6246),\n    COL_VERTEX(-3820, -204, 5088),\n    COL_VERTEX(819, 0, 2150),\n    COL_VERTEX(512, 0, 2099),\n    COL_VERTEX(512, 0, 2048),\n    COL_VERTEX(819, 0, 2048),\n    COL_VERTEX(77, -2457, 4710),\n    COL_VERTEX(77, -2457, 4659),\n    COL_VERTEX(-76, -2457, 4710),\n    COL_VERTEX(77, -2457, 4608),\n    COL_VERTEX(-3675, -2457, 5088),\n    COL_VERTEX(-2661, -2457, 6102),\n    COL_VERTEX(-2024, -2457, 4712),\n    COL_VERTEX(-178, -2457, 4710),\n    COL_VERTEX(179, -2457, 4813),\n    COL_VERTEX(307, -2457, 4608),\n    COL_VERTEX(179, -2457, 2253),\n    COL_VERTEX(-178, -2457, 2150),\n    COL_VERTEX(-178, -2457, 2253),\n    COL_VERTEX(-178, -2457, 4608),\n    COL_VERTEX(179, -2457, 4608),\n    COL_VERTEX(-76, -2457, 2150),\n    COL_VERTEX(77, -2457, 2150),\n    COL_VERTEX(77, -2457, 2099),\n    COL_VERTEX(77, -2457, 2048),\n    COL_VERTEX(-2354, -2457, 2560),\n    COL_VERTEX(-1433, -2457, 2560),\n    COL_VERTEX(-1023, -2457, 2048),\n    COL_VERTEX(-178, -2457, 1946),\n    COL_VERTEX(179, -2457, 2048),\n    COL_VERTEX(1638, -2457, 2048),\n    COL_VERTEX(1638, -2457, 1638),\n    COL_VERTEX(1638, -2661, -1535),\n    COL_VERTEX(1638, -2661, 102),\n    COL_VERTEX(-2764, -2457, -1535),\n    COL_VERTEX(1126, -2457, -1125),\n    COL_VERTEX(1638, -2457, -1535),\n    COL_VERTEX(-2764, -2457, 512),\n    COL_VERTEX(1638, -2457, -613),\n    COL_VERTEX(2150, -2457, -613),\n    COL_VERTEX(1638, -2969, 2048),\n    COL_VERTEX(1946, -2969, 2048),\n    COL_VERTEX(1638, -2969, 1638),\n    COL_VERTEX(2355, -2969, 2560),\n    COL_VERTEX(3277, -2969, 2560),\n    COL_VERTEX(3686, -2969, 2048),\n    COL_VERTEX(2150, -2661, 102),\n    COL_VERTEX(3686, -2969, 1126),\n    COL_VERTEX(-1535, -2354, 1536),\n    COL_VERTEX(-2047, -2354, 1024),\n    COL_VERTEX(-2764, -2354, 1536),\n    COL_VERTEX(2048, 1741, 563),\n    COL_VERTEX(2099, 1741, 563),\n    COL_VERTEX(2048, 1741, 410),\n    COL_VERTEX(2048, 1741, 666),\n    COL_VERTEX(2048, 1741, 307),\n    COL_VERTEX(2048, 1741, -805),\n    COL_VERTEX(0, 819, -204),\n    COL_VERTEX(-511, 819, -204),\n    COL_VERTEX(358, 819, -204),\n    COL_VERTEX(358, 819, -101),\n    COL_VERTEX(819, 819, -306),\n    COL_VERTEX(512, 819, -613),\n    COL_VERTEX(-306, 819, -921),\n    COL_VERTEX(-306, 819, -613),\n    COL_VERTEX(-204, 819, -1330),\n    COL_VERTEX(819, 819, -1330),\n    COL_VERTEX(102, 819, -921),\n    COL_VERTEX(819, 819, -818),\n    COL_VERTEX(256, 0, -204),\n    COL_VERTEX(614, 0, -101),\n    COL_VERTEX(614, 0, -204),\n    COL_VERTEX(512, 0, 0),\n    COL_VERTEX(358, 0, -50),\n    COL_VERTEX(358, 0, -101),\n    COL_VERTEX(512, 0, -101),\n    COL_VERTEX(102, 819, -101),\n    COL_VERTEX(102, 819, -50),\n    COL_VERTEX(256, 819, -101),\n    COL_VERTEX(1434, 819, -101),\n    COL_VERTEX(1792, 819, -101),\n    COL_VERTEX(1126, 819, -1535),\n    COL_VERTEX(3584, 819, -101),\n    COL_VERTEX(3584, 819, -1535),\n    COL_VERTEX(1536, 819, -101),\n    COL_VERTEX(1536, 819, -50),\n    COL_VERTEX(1690, 819, -101),\n    COL_VERTEX(-1740, 0, -1433),\n    COL_VERTEX(-101, 0, 0),\n    COL_VERTEX(-818, 0, -1535),\n    COL_VERTEX(-1740, 0, -1535),\n    COL_VERTEX(-1842, 0, 1024),\n    COL_VERTEX(-101, 0, 819),\n    COL_VERTEX(-101, 0, 461),\n    COL_VERTEX(-50, 0, 563),\n    COL_VERTEX(-101, 0, 563),\n    COL_VERTEX(0, 0, 563),\n    COL_VERTEX(0, 0, 717),\n    COL_VERTEX(-1945, 0, 1024),\n    COL_VERTEX(-2098, 0, 1024),\n    COL_VERTEX(-2098, 0, 1075),\n    COL_VERTEX(-1484, 0, -1586),\n    COL_VERTEX(-1637, 0, -1586),\n    COL_VERTEX(-1484, 0, -1535),\n    COL_VERTEX(3174, 0, 922),\n    COL_VERTEX(3533, 0, 1024),\n    COL_VERTEX(3584, 0, 1024),\n    COL_VERTEX(1126, 0, -1535),\n    COL_VERTEX(2150, 0, -101),\n    COL_VERTEX(1434, 0, -204),\n    COL_VERTEX(1792, 0, -101),\n    COL_VERTEX(3277, 0, -1228),\n    COL_VERTEX(3277, 0, -1535),\n    COL_VERTEX(3277, 0, 1075),\n    COL_VERTEX(3430, 0, 1126),\n    COL_VERTEX(3277, 0, 1024),\n    COL_VERTEX(3430, 0, 1024),\n    COL_VERTEX(1690, 0, -101),\n    COL_VERTEX(1536, 0, -101),\n    COL_VERTEX(1536, 0, -50),\n    COL_VERTEX(1690, 0, 0),\n    COL_VERTEX(3174, 0, 1126),\n    COL_VERTEX(3174, 0, 1229),\n    COL_VERTEX(3174, 0, 1843),\n    COL_VERTEX(2150, 0, 2048),\n    COL_VERTEX(2150, 0, 1638),\n    COL_VERTEX(2150, 0, 1280),\n    COL_VERTEX(2560, 0, 2560),\n    COL_VERTEX(3131, 0, 2451),\n    COL_VERTEX(3174, 0, 2560),\n    COL_VERTEX(2765, 0, 2048),\n    COL_VERTEX(2099, 0, 1382),\n    COL_VERTEX(2150, 0, 1536),\n    COL_VERTEX(2150, 0, 1382),\n    COL_VERTEX(2048, 0, 1382),\n    COL_VERTEX(0, 0, 1536),\n    COL_VERTEX(0, 0, 1382),\n    COL_VERTEX(-50, 0, 1382),\n    COL_VERTEX(2048, 0, 1280),\n    COL_VERTEX(1946, 0, 1280),\n    COL_VERTEX(2048, 0, 1638),\n    COL_VERTEX(1792, 0, 0),\n    COL_VERTEX(1434, 0, 0),\n    COL_VERTEX(614, 0, 102),\n    COL_VERTEX(256, 0, 0),\n    COL_VERTEX(0, 0, 0),\n    COL_VERTEX(0, 0, 461),\n    COL_VERTEX(0, 0, 819),\n    COL_VERTEX(102, 0, 819),\n    COL_VERTEX(410, 0, 1946),\n    COL_VERTEX(922, 0, 2048),\n    COL_VERTEX(-1433, -2457, -101),\n    COL_VERTEX(-1945, -2457, 410),\n    COL_VERTEX(-1433, -2457, 512),\n    COL_VERTEX(-1945, -2457, 0),\n    COL_VERTEX(1024, -2457, 512),\n    COL_VERTEX(1536, -2457, 0),\n    COL_VERTEX(1024, -2457, -101),\n    COL_VERTEX(1536, -2457, 410),\n    COL_VERTEX(1024, -2764, -1023),\n    COL_VERTEX(-1433, -2764, -1023),\n    COL_VERTEX(-1433, -2764, 1434),\n    COL_VERTEX(1024, -2764, 1434),\n    COL_VERTEX(-716, 2253, 218),\n    COL_VERTEX(-716, 2253, 423),\n    COL_VERTEX(-613, 2150, 423),\n    COL_VERTEX(-716, 2150, 577),\n    COL_VERTEX(-613, 2150, 218),\n    COL_VERTEX(-716, 2150, 65),\n    COL_VERTEX(-511, 205, -1228),\n    COL_VERTEX(-511, 358, -1433),\n    COL_VERTEX(-613, 358, -1330),\n    COL_VERTEX(-409, 205, -1330),\n    COL_VERTEX(1331, 922, -1228),\n    COL_VERTEX(1331, 1075, -1433),\n    COL_VERTEX(1229, 1075, -1330),\n    COL_VERTEX(1434, 922, -1330),\n    COL_VERTEX(-2149, 154, 717),\n    COL_VERTEX(-2252, 256, 717),\n    COL_VERTEX(-2252, 154, 512),\n    COL_VERTEX(2662, 102, -306),\n    COL_VERTEX(2765, 82, -265),\n    COL_VERTEX(2662, 102, 1024),\n    COL_VERTEX(3174, 102, -306),\n    COL_VERTEX(3236, 82, -1269),\n    COL_VERTEX(3277, 102, -1535),\n    COL_VERTEX(2109, 82, -306),\n    COL_VERTEX(2150, 102, -1228),\n    COL_VERTEX(-2252, 256, 2048),\n    COL_VERTEX(-1786, 256, 2384),\n    COL_VERTEX(-2024, 1106, 2332),\n    COL_VERTEX(-1842, 1106, 2150),\n    COL_VERTEX(-1289, 922, 1619),\n    COL_VERTEX(-1289, 922, 1126),\n    COL_VERTEX(3379, 1101, 527),\n    COL_VERTEX(870, 256, 2048),\n    COL_VERTEX(947, 358, 2048),\n    COL_VERTEX(1065, 922, 2048),\n    COL_VERTEX(1065, 922, 1679),\n    COL_VERTEX(2048, 922, 778),\n    COL_VERTEX(1679, 922, 778),\n    COL_VERTEX(1679, 922, 369),\n    COL_VERTEX(717, 922, 369),\n    COL_VERTEX(369, 922, 369),\n    COL_VERTEX(-2252, 154, 819),\n    COL_VERTEX(-2149, 154, 614),\n    COL_VERTEX(-2252, 256, 614),\n    COL_VERTEX(2703, 82, -265),\n    COL_VERTEX(2765, 102, -306),\n    COL_VERTEX(2703, 82, 1024),\n    COL_VERTEX(3584, 82, -265),\n    COL_VERTEX(3584, 102, -306),\n    COL_VERTEX(3174, 82, -265),\n    COL_VERTEX(3174, 82, -1269),\n    COL_VERTEX(3174, 102, -1228),\n    COL_VERTEX(3236, 82, -1535),\n    COL_VERTEX(3277, 102, -1228),\n    COL_VERTEX(2150, 102, -306),\n    COL_VERTEX(2765, 82, -1269),\n    COL_VERTEX(2109, 82, -1269),\n    COL_VERTEX(2765, 102, -1228),\n    COL_VERTEX(-2188, 410, 2128),\n    COL_VERTEX(-2068, 256, 2032),\n    COL_VERTEX(-1906, 410, 2480),\n    COL_VERTEX(-1842, 256, 2560),\n    COL_VERTEX(-1883, 1126, 2133),\n    COL_VERTEX(-2050, 1126, 2300),\n    COL_VERTEX(-1883, 1126, 1126),\n    COL_VERTEX(-1842, 1106, 1126),\n    COL_VERTEX(-1330, 901, 1638),\n    COL_VERTEX(-818, 901, 2048),\n    COL_VERTEX(-818, 922, 1996),\n    COL_VERTEX(-1330, 901, 1126),\n    COL_VERTEX(3584, 1178, 731),\n    COL_VERTEX(3584, 1178, 527),\n    COL_VERTEX(3379, 1101, 731),\n    COL_VERTEX(947, 358, 1946),\n    COL_VERTEX(870, 256, 1946),\n    COL_VERTEX(1024, 256, 1946),\n    COL_VERTEX(1024, 256, 2048),\n    COL_VERTEX(1024, 901, 1638),\n    COL_VERTEX(1024, 901, 2048),\n    COL_VERTEX(2048, 922, 1679),\n    COL_VERTEX(2048, 901, 1638),\n    COL_VERTEX(1638, 901, 819),\n    COL_VERTEX(2048, 901, 819),\n    COL_VERTEX(1638, 901, 410),\n    COL_VERTEX(1229, 922, 369),\n    COL_VERTEX(1229, 901, 410),\n    COL_VERTEX(410, 901, 410),\n    COL_VERTEX(717, 901, 410),\n    COL_VERTEX(369, 922, 2048),\n    COL_VERTEX(410, 901, 2048),\n    COL_VERTEX(3584, -204, -1535),\n    COL_VERTEX(3277, -204, -1228),\n    COL_VERTEX(3584, -204, -1228),\n    COL_VERTEX(2150, -204, -1228),\n    COL_VERTEX(2150, -204, -306),\n    COL_VERTEX(3584, -204, -306),\n    COL_VERTEX(2150, -204, 1024),\n    COL_VERTEX(2662, -204, -306),\n    COL_VERTEX(2662, -204, 1024),\n    COL_VERTEX(3277, -204, -1535),\n    COL_VERTEX(2150, -1330, 1024),\n    COL_VERTEX(3584, -1330, 1024),\n    COL_VERTEX(3584, -1330, -1535),\n    COL_VERTEX(2150, -1330, -1535),\n    COL_VERTEX(2244, -204, 2001),\n    COL_VERTEX(2560, -204, 1843),\n    COL_VERTEX(3174, -204, 1126),\n    COL_VERTEX(2970, -204, 2048),\n    COL_VERTEX(3584, -1330, 1126),\n    COL_VERTEX(2604, -204, 2451),\n    COL_VERTEX(2765, -204, 2048),\n    COL_VERTEX(2560, -204, 1126),\n    COL_VERTEX(3174, -204, 1843),\n    COL_VERTEX(3131, -204, 2451),\n    COL_VERTEX(3490, -204, 2001),\n    COL_VERTEX(2150, -1330, 2560),\n    COL_VERTEX(3584, -1330, 2560),\n    COL_VERTEX(2150, -1330, 1126),\n    COL_VERTEX(3789, 1741, 1126),\n    COL_VERTEX(3072, 3277, 410),\n    COL_VERTEX(3686, 1741, 2150),\n    COL_VERTEX(3789, 1741, -409),\n    COL_VERTEX(3072, 3277, 102),\n    COL_VERTEX(3686, 1741, -1637),\n    COL_VERTEX(410, 2867, 874),\n    COL_VERTEX(922, 2867, 874),\n    COL_VERTEX(-1740, 3277, 410),\n    COL_VERTEX(2662, 2560, 1229),\n    COL_VERTEX(3072, 2560, 1229),\n    COL_VERTEX(1229, 2355, 2150),\n    COL_VERTEX(1229, 2355, 1946),\n    COL_VERTEX(922, 2765, 1946),\n    COL_VERTEX(819, 2178, 1894),\n    COL_VERTEX(1228, 1922, 1946),\n    COL_VERTEX(512, 1922, 1946),\n    COL_VERTEX(819, 1922, 1894),\n    COL_VERTEX(512, 2178, 1946),\n    COL_VERTEX(410, 2765, 1946),\n    COL_VERTEX(819, 2178, 1946),\n    COL_VERTEX(102, 2355, 2150),\n    COL_VERTEX(922, 2765, 2150),\n    COL_VERTEX(1331, 2355, 2150),\n    COL_VERTEX(922, 2867, 2150),\n    COL_VERTEX(1331, 2355, 1454),\n    COL_VERTEX(410, 2867, 2150),\n    COL_VERTEX(-1330, 2560, 1229),\n    COL_VERTEX(-2354, 1741, 2150),\n    COL_VERTEX(-1740, 2560, 1229),\n    COL_VERTEX(-716, 1741, 2150),\n    COL_VERTEX(0, 1741, 2150),\n    COL_VERTEX(1331, 1922, 2146),\n    COL_VERTEX(2048, 1741, 2150),\n    COL_VERTEX(1331, 1741, 2150),\n    COL_VERTEX(0, 1922, 2146),\n    COL_VERTEX(410, 2765, 2150),\n    COL_VERTEX(1229, 1922, 2146),\n    COL_VERTEX(-2149, 1843, 6758),\n    COL_VERTEX(5530, 1843, 4710),\n    COL_VERTEX(1331, 1922, 2458),\n    COL_VERTEX(1331, 1922, 1946),\n    COL_VERTEX(1331, 1717, 2150),\n    COL_VERTEX(922, 1922, 1946),\n    COL_VERTEX(0, 1922, 2458),\n    COL_VERTEX(410, 1922, 2048),\n    COL_VERTEX(-1740, 0, -1637),\n    COL_VERTEX(-1740, 0, -1740),\n    COL_VERTEX(-1381, 0, -1945),\n    COL_VERTEX(-1740, 0, -1945),\n    COL_VERTEX(-1842, 0, -1637),\n    COL_VERTEX(-2661, 512, 3929),\n    COL_VERTEX(-2227, -204, 4364),\n    COL_VERTEX(-2155, 1126, 4436),\n    COL_VERTEX(-2661, 512, 6246),\n    COL_VERTEX(-3313, 1126, 5595),\n    COL_VERTEX(-2046, 51, 4545),\n    COL_VERTEX(-1945, 1741, 2662),\n    COL_VERTEX(-1740, 2560, 2150),\n    COL_VERTEX(-1433, 2150, 2662),\n    COL_VERTEX(-1637, 2150, 2662),\n    COL_VERTEX(3277, 1741, 2662),\n    COL_VERTEX(2970, 2150, 2662),\n    COL_VERTEX(2458, 1741, 2662),\n    COL_VERTEX(2662, 2560, 2150),\n    COL_VERTEX(2765, 2150, 2662),\n    COL_VERTEX(1075, 1922, 2714),\n    COL_VERTEX(256, 1922, 2714),\n    COL_VERTEX(102, 1922, 2146),\n    COL_VERTEX(102, 1922, 1946),\n    COL_VERTEX(0, 2355, 1454),\n    COL_VERTEX(0, 2355, 2150),\n    COL_VERTEX(-2354, 1741, -1637),\n    COL_VERTEX(3072, 2560, 2150),\n    COL_VERTEX(0, 1717, 2150),\n    COL_VERTEX(410, 1102, 2150),\n    COL_VERTEX(922, 1102, 2150),\n    COL_VERTEX(1331, 1717, 2458),\n    COL_VERTEX(0, 1717, 2458),\n    COL_VERTEX(819, 2178, 1843),\n    COL_VERTEX(819, 1922, 1843),\n    COL_VERTEX(512, 2178, 1894),\n    COL_VERTEX(-1637, 256, -1637),\n    COL_VERTEX(-1125, 1741, 2662),\n    COL_VERTEX(512, -204, 2150),\n    COL_VERTEX(512, 256, 2150),\n    COL_VERTEX(-1484, -204, -1637),\n    COL_VERTEX(-1484, 256, -1637),\n    COL_VERTEX(-1740, 3277, 102),\n    COL_VERTEX(819, 256, 2048),\n    COL_VERTEX(512, 256, 2048),\n    COL_VERTEX(819, 256, 2099),\n    COL_VERTEX(-1637, 256, -1535),\n    COL_VERTEX(-1637, 256, -1586),\n    COL_VERTEX(-1484, 256, -1586),\n    COL_VERTEX(-4197, 1843, -1945),\n    COL_VERTEX(-2149, 1843, -3993),\n    COL_VERTEX(3482, 1843, -3993),\n    COL_VERTEX(5530, 1843, -1945),\n    COL_VERTEX(-4197, 1843, 4710),\n    COL_VERTEX(-2118, -204, 4617),\n    COL_VERTEX(-2082, -204, 4581),\n    COL_VERTEX(-2191, -204, 4472),\n    COL_VERTEX(-2227, -204, 4509),\n    COL_VERTEX(-2082, 51, 4581),\n    COL_VERTEX(-2191, 51, 4472),\n    COL_VERTEX(-2227, 51, 4509),\n    COL_VERTEX(-2118, 51, 4617),\n    COL_VERTEX(-1648, -306, 5088),\n    COL_VERTEX(-2951, -306, 5812),\n    COL_VERTEX(-2589, -306, 5450),\n    COL_VERTEX(77, -2201, 4608),\n    COL_VERTEX(-76, -2201, 4608),\n    COL_VERTEX(77, -2201, 4659),\n    COL_VERTEX(-76, -2201, 4659),\n    COL_VERTEX(307, -1535, 4710),\n    COL_VERTEX(-76, -2201, 4710),\n    COL_VERTEX(-2024, -1535, 4712),\n    COL_VERTEX(-3675, 410, 5088),\n    COL_VERTEX(-2227, -255, 4509),\n    COL_VERTEX(-1648, -1536, 5088),\n    COL_VERTEX(-1648, 410, 5088),\n    COL_VERTEX(-2661, 410, 4074),\n    COL_VERTEX(-1986, -1535, 5427),\n    COL_VERTEX(-3023, -306, 5015),\n    COL_VERTEX(-3385, -306, 5378),\n    COL_VERTEX(-2046, -204, 4690),\n    COL_VERTEX(-2372, -204, 4509),\n    COL_VERTEX(-2589, -204, 5450),\n    COL_VERTEX(-1648, -204, 5088),\n    COL_VERTEX(-2661, -204, 6102),\n    COL_VERTEX(-3675, -204, 5088),\n    COL_VERTEX(-3023, -204, 5015),\n    COL_VERTEX(-101, -1842, 2150),\n    COL_VERTEX(102, -1842, 2150),\n    COL_VERTEX(-306, -2047, 2150),\n    COL_VERTEX(-306, -2047, 4608),\n    COL_VERTEX(307, -2047, 2150),\n    COL_VERTEX(77, -2201, 2099),\n    COL_VERTEX(77, -2201, 2048),\n    COL_VERTEX(-76, -2201, 2099),\n    COL_VERTEX(-76, -2201, 2048),\n    COL_VERTEX(77, -2201, 2150),\n    COL_VERTEX(3482, -1433, -1535),\n    COL_VERTEX(-1433, -1433, -306),\n    COL_VERTEX(-716, -1433, -1023),\n    COL_VERTEX(307, -1433, -1023),\n    COL_VERTEX(1024, -1433, 717),\n    COL_VERTEX(307, -1433, 1434),\n    COL_VERTEX(-716, -1433, 1434),\n    COL_VERTEX(-1535, -1433, 1536),\n    COL_VERTEX(-2047, -1433, 1024),\n    COL_VERTEX(1126, -1433, 1536),\n    COL_VERTEX(1126, -1433, -1125),\n    COL_VERTEX(-1535, -1433, -1125),\n    COL_VERTEX(1638, -1433, -613),\n    COL_VERTEX(3482, -1433, -1433),\n    COL_VERTEX(3584, -1433, -1330),\n    COL_VERTEX(3686, -1433, 2048),\n    COL_VERTEX(3686, -2969, -1330),\n    COL_VERTEX(3277, -1433, 2560),\n    COL_VERTEX(2355, -1433, 2560),\n    COL_VERTEX(-1023, -1433, 2048),\n    COL_VERTEX(-1433, -1433, 2560),\n    COL_VERTEX(-2354, -1433, 2560),\n    COL_VERTEX(-2764, -1433, 2048),\n    COL_VERTEX(-2661, -1433, -1330),\n    COL_VERTEX(-2559, -1433, -1433),\n    COL_VERTEX(-2764, -1433, -1330),\n    COL_VERTEX(1946, -2457, 2048),\n    COL_VERTEX(-2047, -2201, 282),\n    COL_VERTEX(-2047, -2457, 128),\n    COL_VERTEX(-2047, -2201, 128),\n    COL_VERTEX(-1945, -2457, 282),\n    COL_VERTEX(-2047, -2457, 282),\n    COL_VERTEX(-1433, -2764, 717),\n    COL_VERTEX(-1433, -1637, 512),\n    COL_VERTEX(-1945, -2047, 410),\n    COL_VERTEX(-1433, -1637, -101),\n    COL_VERTEX(-1945, -2201, 128),\n    COL_VERTEX(-1433, -2764, -306),\n    COL_VERTEX(1536, -2201, 282),\n    COL_VERTEX(1638, -2201, 128),\n    COL_VERTEX(1638, -1433, 1024),\n    COL_VERTEX(1638, -2457, 128),\n    COL_VERTEX(1024, -2764, 717),\n    COL_VERTEX(1024, -1637, 512),\n    COL_VERTEX(1024, -1433, -306),\n    COL_VERTEX(1024, -1637, -101),\n    COL_VERTEX(1536, -2047, 0),\n    COL_VERTEX(691, -1433, 2048),\n    COL_VERTEX(589, -1433, 1536),\n    COL_VERTEX(102, 2150, -805),\n    COL_VERTEX(2048, 1741, 218),\n    COL_VERTEX(-613, 1741, 218),\n    COL_VERTEX(-613, 1741, 423),\n    COL_VERTEX(-716, 1741, 65),\n    COL_VERTEX(102, 1922, 1345),\n    COL_VERTEX(102, 1922, 1843),\n    COL_VERTEX(410, 1922, 1843),\n    COL_VERTEX(1229, 1922, 1345),\n    COL_VERTEX(102, 2253, 1843),\n    COL_VERTEX(1229, 1922, 1843),\n    COL_VERTEX(2150, 1997, 410),\n    COL_VERTEX(2150, 1997, 563),\n    COL_VERTEX(2099, 1997, 563),\n    COL_VERTEX(2099, 1997, 410),\n    COL_VERTEX(2048, 1997, 410),\n    COL_VERTEX(2150, 1741, 410),\n    COL_VERTEX(2150, 1741, 563),\n    COL_VERTEX(2048, 1997, 563),\n    COL_VERTEX(2048, 3174, 423),\n    COL_VERTEX(2048, 2150, 1345),\n    COL_VERTEX(717, 2765, 792),\n    COL_VERTEX(1229, 2253, 1253),\n    COL_VERTEX(2048, 2150, -805),\n    COL_VERTEX(614, 2765, 1843),\n    COL_VERTEX(1229, 2253, 1843),\n    COL_VERTEX(512, 2178, 1843),\n    COL_VERTEX(102, 2253, 1253),\n    COL_VERTEX(-716, 2150, 1345),\n    COL_VERTEX(1229, 2150, 1345),\n    COL_VERTEX(-716, 2150, -805),\n    COL_VERTEX(614, 2765, 792),\n    COL_VERTEX(410, 1843, 1038),\n    COL_VERTEX(307, 1741, 1140),\n    COL_VERTEX(410, 1741, 1038),\n    COL_VERTEX(1024, 1741, 1140),\n    COL_VERTEX(922, 1741, 1038),\n    COL_VERTEX(307, 1741, 1345),\n    COL_VERTEX(-511, 205, -1433),\n    COL_VERTEX(-511, 0, -1433),\n    COL_VERTEX(-409, 0, -1330),\n    COL_VERTEX(-511, 0, -1228),\n    COL_VERTEX(-716, 799, -101),\n    COL_VERTEX(-204, 799, -204),\n    COL_VERTEX(1024, 799, -101),\n    COL_VERTEX(512, 799, -306),\n    COL_VERTEX(819, 799, -306),\n    COL_VERTEX(1024, 799, -1535),\n    COL_VERTEX(819, 799, -1330),\n    COL_VERTEX(102, 799, -921),\n    COL_VERTEX(-204, 799, -1023),\n    COL_VERTEX(-306, 799, -921),\n    COL_VERTEX(-306, 799, -1535),\n    COL_VERTEX(-306, 799, -1125),\n    COL_VERTEX(614, 799, -818),\n    COL_VERTEX(512, 799, -613),\n    COL_VERTEX(-511, 799, -204),\n    COL_VERTEX(-306, 799, -613),\n    COL_VERTEX(-511, 799, -511),\n    COL_VERTEX(819, 0, -101),\n    COL_VERTEX(512, 256, -101),\n    COL_VERTEX(819, 819, -101),\n    COL_VERTEX(-511, 0, -101),\n    COL_VERTEX(-511, 1638, -101),\n    COL_VERTEX(102, 1075, -101),\n    COL_VERTEX(1024, 0, -306),\n    COL_VERTEX(-716, 0, -1330),\n    COL_VERTEX(819, 1638, -1535),\n    COL_VERTEX(-511, 1638, -1433),\n    COL_VERTEX(1024, 1638, -101),\n    COL_VERTEX(358, 256, -101),\n    COL_VERTEX(256, 1075, -101),\n    COL_VERTEX(512, 256, -50),\n    COL_VERTEX(256, 1075, -50),\n    COL_VERTEX(102, 819, 0),\n    COL_VERTEX(102, 1075, 0),\n    COL_VERTEX(358, 256, 0),\n    COL_VERTEX(819, 1638, -1433),\n    COL_VERTEX(922, 1638, -1330),\n    COL_VERTEX(1024, 1638, -306),\n    COL_VERTEX(922, 1638, -306),\n    COL_VERTEX(819, 1638, -204),\n    COL_VERTEX(-613, 1638, -1330),\n    COL_VERTEX(-716, 1638, -1330),\n    COL_VERTEX(-511, 1638, -204),\n    COL_VERTEX(-613, 1638, -306),\n    COL_VERTEX(1434, 819, -1330),\n    COL_VERTEX(1331, 819, -1433),\n    COL_VERTEX(1331, 819, -1228),\n    COL_VERTEX(1126, 1638, -1330),\n    COL_VERTEX(1229, 1638, -1330),\n    COL_VERTEX(1331, 1638, -1433),\n    COL_VERTEX(1331, 922, -1433),\n    COL_VERTEX(3584, 1638, -101),\n    COL_VERTEX(2253, 1638, -1330),\n    COL_VERTEX(2355, 1638, -1330),\n    COL_VERTEX(2458, 1638, -1433),\n    COL_VERTEX(2253, 819, -1330),\n    COL_VERTEX(2458, 1638, -101),\n    COL_VERTEX(2458, 1638, -204),\n    COL_VERTEX(2355, 1638, -306),\n    COL_VERTEX(2253, 1638, -306),\n    COL_VERTEX(2253, 819, -306),\n    COL_VERTEX(1946, 1638, -1535),\n    COL_VERTEX(1946, 1638, -1433),\n    COL_VERTEX(2048, 1638, -1330),\n    COL_VERTEX(2150, 1638, -306),\n    COL_VERTEX(2048, 1638, -306),\n    COL_VERTEX(1946, 1638, -204),\n    COL_VERTEX(2253, 819, -613),\n    COL_VERTEX(2253, 1126, -613),\n    COL_VERTEX(2150, 1229, -716),\n    COL_VERTEX(2150, 1126, -613),\n    COL_VERTEX(2150, 1229, -921),\n    COL_VERTEX(2253, 1229, -716),\n    COL_VERTEX(2253, 1229, -921),\n    COL_VERTEX(2150, 1126, -1023),\n    COL_VERTEX(2253, 1126, -1023),\n    COL_VERTEX(2150, 819, -1023),\n    COL_VERTEX(1331, 1638, -101),\n    COL_VERTEX(1536, 1075, -101),\n    COL_VERTEX(1331, 819, -1535),\n    COL_VERTEX(1126, 1638, -306),\n    COL_VERTEX(1690, 1075, -101),\n    COL_VERTEX(1690, 1075, -50),\n    COL_VERTEX(1536, 1075, 0),\n    COL_VERTEX(1536, 819, 0),\n    COL_VERTEX(1331, 1638, -204),\n    COL_VERTEX(1229, 1638, -306),\n    COL_VERTEX(-818, 1075, 717),\n    COL_VERTEX(-818, 1075, 563),\n    COL_VERTEX(-818, 819, 563),\n    COL_VERTEX(-2252, 819, -1535),\n    COL_VERTEX(-2252, 1024, 614),\n    COL_VERTEX(-2252, 1024, 1024),\n    COL_VERTEX(-2149, 1024, 1024),\n    COL_VERTEX(-1740, 1024, 614),\n    COL_VERTEX(-1740, 1024, 1024),\n    COL_VERTEX(-1791, 1024, 1024),\n    COL_VERTEX(-921, 819, 819),\n    COL_VERTEX(-818, 819, -1535),\n    COL_VERTEX(-921, 819, 461),\n    COL_VERTEX(-818, 819, 1024),\n    COL_VERTEX(-818, 819, 819),\n    COL_VERTEX(-1740, 1638, -1023),\n    COL_VERTEX(-1330, 1638, 1024),\n    COL_VERTEX(-1893, 819, 512),\n    COL_VERTEX(-2098, 922, 512),\n    COL_VERTEX(-2098, 922, 614),\n    COL_VERTEX(-2252, 1638, -1535),\n    COL_VERTEX(-1893, 1280, 1024),\n    COL_VERTEX(-2252, 1638, 1024),\n    COL_VERTEX(-818, 1331, -1330),\n    COL_VERTEX(-1023, 1331, -1535),\n    COL_VERTEX(-2252, 1331, -1330),\n    COL_VERTEX(-2252, 819, 1024),\n    COL_VERTEX(-2047, 1024, 1126),\n    COL_VERTEX(-1893, 1024, 1075),\n    COL_VERTEX(-2047, 1280, 1126),\n    COL_VERTEX(-2047, 1024, 1075),\n    COL_VERTEX(-2047, 1280, 1024),\n    COL_VERTEX(-1893, 1280, 1075),\n    COL_VERTEX(-716, 1075, 563),\n    COL_VERTEX(-767, 1075, 563),\n    COL_VERTEX(-818, 819, 717),\n    COL_VERTEX(-767, 819, 717),\n    COL_VERTEX(-767, 1075, 717),\n    COL_VERTEX(-818, 0, -255),\n    COL_VERTEX(-2252, 0, -255),\n    COL_VERTEX(-818, 717, -357),\n    COL_VERTEX(-2047, 102, -357),\n    COL_VERTEX(-1023, 102, -357),\n    COL_VERTEX(-1023, 0, -357),\n    COL_VERTEX(-2047, 0, -357),\n    COL_VERTEX(-818, 102, -1535),\n    COL_VERTEX(-2252, 102, -1535),\n    COL_VERTEX(-2047, 0, -1330),\n    COL_VERTEX(-1228, 0, -1330),\n    COL_VERTEX(-1842, 102, -1330),\n    COL_VERTEX(-1842, 0, -1535),\n    COL_VERTEX(-2252, 0, 512),\n    COL_VERTEX(-2149, 0, 614),\n    COL_VERTEX(-2149, 0, 717),\n    COL_VERTEX(-1330, 102, -255),\n    COL_VERTEX(-1330, -9, -255),\n    COL_VERTEX(-1740, -9, 614),\n    COL_VERTEX(-2252, 717, 1024),\n    COL_VERTEX(-1125, 0, 922),\n    COL_VERTEX(-1125, 512, 922),\n    COL_VERTEX(-1740, 0, 1024),\n    COL_VERTEX(-716, 0, 102),\n    COL_VERTEX(-101, 512, 102),\n    COL_VERTEX(-101, 256, 563),\n    COL_VERTEX(-101, 717, 0),\n    COL_VERTEX(-818, 717, -1535),\n    COL_VERTEX(-1945, 256, 1024),\n    COL_VERTEX(-101, 256, 717),\n    COL_VERTEX(-50, 256, 717),\n    COL_VERTEX(-50, 256, 563),\n    COL_VERTEX(0, 256, 563),\n    COL_VERTEX(-2098, 256, 1024),\n    COL_VERTEX(-1945, 256, 1075),\n    COL_VERTEX(-2098, 0, 1126),\n    COL_VERTEX(-2098, 256, 1126),\n    COL_VERTEX(-101, 512, 0),\n    COL_VERTEX(3174, 0, -265),\n    COL_VERTEX(2109, 0, -306),\n    COL_VERTEX(2150, -716, -1228),\n    COL_VERTEX(2150, 717, 819),\n    COL_VERTEX(2253, 717, 819),\n    COL_VERTEX(1126, 717, -1330),\n    COL_VERTEX(1229, 717, -1330),\n    COL_VERTEX(1331, 717, -1433),\n    COL_VERTEX(3584, 717, -1535),\n    COL_VERTEX(1126, 717, -101),\n    COL_VERTEX(3174, 102, -347),\n    COL_VERTEX(3174, -101, -245),\n    COL_VERTEX(3072, -101, -245),\n    COL_VERTEX(2867, -101, -245),\n    COL_VERTEX(2765, -101, -245),\n    COL_VERTEX(3072, 0, -347),\n    COL_VERTEX(3174, 0, -347),\n    COL_VERTEX(3072, 0, -245),\n    COL_VERTEX(3123, 154, -296),\n    COL_VERTEX(3174, 102, -245),\n    COL_VERTEX(2867, 102, -347),\n    COL_VERTEX(2765, 0, -245),\n    COL_VERTEX(2867, 0, -347),\n    COL_VERTEX(2765, 0, -347),\n    COL_VERTEX(2765, 102, -245),\n    COL_VERTEX(2867, 102, -245),\n    COL_VERTEX(3072, 102, -245),\n    COL_VERTEX(2816, 154, -296),\n    COL_VERTEX(3584, -716, -306),\n    COL_VERTEX(3584, 0, -1535),\n    COL_VERTEX(2355, 0, 1024),\n    COL_VERTEX(3430, 256, 1024),\n    COL_VERTEX(1126, 0, -1330),\n    COL_VERTEX(1690, 256, -101),\n    COL_VERTEX(2867, 0, -1187),\n    COL_VERTEX(3072, 102, -1187),\n    COL_VERTEX(3174, 102, -1187),\n    COL_VERTEX(3072, 102, -1289),\n    COL_VERTEX(3174, 0, -1187),\n    COL_VERTEX(2867, 102, -1187),\n    COL_VERTEX(2765, 102, -1187),\n    COL_VERTEX(2765, 102, -1289),\n    COL_VERTEX(3123, 154, -1238),\n    COL_VERTEX(2816, 154, -1238),\n    COL_VERTEX(1536, 256, -101),\n    COL_VERTEX(1690, 256, -50),\n    COL_VERTEX(1536, 256, 0),\n    COL_VERTEX(3277, 256, 1126),\n    COL_VERTEX(3277, 256, 1024),\n    COL_VERTEX(3430, 256, 1075),\n    COL_VERTEX(2355, 717, 922),\n    COL_VERTEX(2355, 717, 1024),\n    COL_VERTEX(1331, 717, -204),\n    COL_VERTEX(1229, 717, -306),\n    COL_VERTEX(1331, 717, -101),\n    COL_VERTEX(2048, 717, -306),\n    COL_VERTEX(1946, 717, -204),\n    COL_VERTEX(2150, 717, -306),\n    COL_VERTEX(2253, 717, -204),\n    COL_VERTEX(2253, 717, -101),\n    COL_VERTEX(2150, 717, 0),\n    COL_VERTEX(-2068, 0, 2032),\n    COL_VERTEX(-2252, 0, 2048),\n    COL_VERTEX(-1786, 0, 2384),\n    COL_VERTEX(-818, 819, 1996),\n    COL_VERTEX(-1289, 819, 1126),\n    COL_VERTEX(-1842, 1024, 1126),\n    COL_VERTEX(-1842, 1024, 1229),\n    COL_VERTEX(-2149, 1024, 1229),\n    COL_VERTEX(-2252, 1024, 2048),\n    COL_VERTEX(-818, 819, 2048),\n    COL_VERTEX(-1330, 819, 1638),\n    COL_VERTEX(-921, 819, 1587),\n    COL_VERTEX(-1330, 819, 1126),\n    COL_VERTEX(-818, 819, 1126),\n    COL_VERTEX(-204, 0, 1638),\n    COL_VERTEX(-204, 0, 1280),\n    COL_VERTEX(-1842, 0, 1229),\n    COL_VERTEX(-2201, 0, 1229),\n    COL_VERTEX(-2252, 1638, 2048),\n    COL_VERTEX(-101, 0, 1638),\n    COL_VERTEX(-1842, 0, 1126),\n    COL_VERTEX(-818, 1638, 2048),\n    COL_VERTEX(-101, 717, 2048),\n    COL_VERTEX(-101, 717, 1126),\n    COL_VERTEX(-1228, 1638, 2560),\n    COL_VERTEX(-1842, 1638, 2560),\n    COL_VERTEX(-2252, 1024, 1126),\n    COL_VERTEX(-1893, 1280, 1126),\n    COL_VERTEX(-1893, 1024, 1126),\n    COL_VERTEX(-2252, 819, 2048),\n    COL_VERTEX(-818, 717, 1126),\n    COL_VERTEX(-1945, 256, 1126),\n    COL_VERTEX(-2252, 819, 1126),\n    COL_VERTEX(-1945, 0, 1126),\n    COL_VERTEX(-2047, 819, 2355),\n    COL_VERTEX(-2047, 1106, 2355),\n    COL_VERTEX(-1842, 819, 1126),\n    COL_VERTEX(-818, 1075, 1331),\n    COL_VERTEX(-818, 1075, 1485),\n    COL_VERTEX(-818, 717, 2048),\n    COL_VERTEX(-101, 256, 1382),\n    COL_VERTEX(-101, 0, 1382),\n    COL_VERTEX(-101, 256, 1536),\n    COL_VERTEX(-50, 256, 1536),\n    COL_VERTEX(-50, 256, 1382),\n    COL_VERTEX(0, 256, 1382),\n    COL_VERTEX(-101, 0, 1536),\n    COL_VERTEX(-818, 819, 1485),\n    COL_VERTEX(-767, 1075, 1331),\n    COL_VERTEX(-716, 1075, 1331),\n    COL_VERTEX(-767, 819, 1485),\n    COL_VERTEX(-767, 1075, 1485),\n    COL_VERTEX(3379, 1024, 527),\n    COL_VERTEX(3379, 1024, 731),\n    COL_VERTEX(2867, 1024, 0),\n    COL_VERTEX(2867, 1024, 307),\n    COL_VERTEX(2355, 819, 0),\n    COL_VERTEX(3379, 819, 0),\n    COL_VERTEX(2150, 819, 2048),\n    COL_VERTEX(2150, 819, 1997),\n    COL_VERTEX(2560, 819, 2150),\n    COL_VERTEX(2150, 819, 1894),\n    COL_VERTEX(2150, 1638, 2048),\n    COL_VERTEX(2662, 1741, 0),\n    COL_VERTEX(2150, 1741, 0),\n    COL_VERTEX(2253, 1741, 307),\n    COL_VERTEX(2662, 1741, 717),\n    COL_VERTEX(2150, 1741, 717),\n    COL_VERTEX(2253, 1741, 666),\n    COL_VERTEX(2253, 819, 1638),\n    COL_VERTEX(2150, 819, 1638),\n    COL_VERTEX(2253, 819, 307),\n    COL_VERTEX(2253, 819, 666),\n    COL_VERTEX(2560, 819, 1638),\n    COL_VERTEX(2150, 819, 307),\n    COL_VERTEX(3379, 2107, 0),\n    COL_VERTEX(3379, 2107, 102),\n    COL_VERTEX(3482, 2077, 205),\n    COL_VERTEX(3584, 2048, 717),\n    COL_VERTEX(2150, 1638, 717),\n    COL_VERTEX(3584, 1638, 205),\n    COL_VERTEX(2253, 2428, 205),\n    COL_VERTEX(2355, 2399, 102),\n    COL_VERTEX(2150, 2458, 205),\n    COL_VERTEX(2150, 819, 410),\n    COL_VERTEX(2150, 1638, 205),\n    COL_VERTEX(2662, 1638, 717),\n    COL_VERTEX(2662, 1638, 0),\n    COL_VERTEX(3584, 717, 1126),\n    COL_VERTEX(2150, 717, 2048),\n    COL_VERTEX(2150, 717, 1126),\n    COL_VERTEX(3174, 717, 1638),\n    COL_VERTEX(3174, 717, 2560),\n    COL_VERTEX(2560, 717, 2150),\n    COL_VERTEX(3584, 819, 2048),\n    COL_VERTEX(3174, 819, 1638),\n    COL_VERTEX(3174, 819, 2150),\n    COL_VERTEX(2604, -716, 2451),\n    COL_VERTEX(2970, -716, 2048),\n    COL_VERTEX(2560, -716, 1126),\n    COL_VERTEX(3174, -716, 1843),\n    COL_VERTEX(2048, 256, 1536),\n    COL_VERTEX(2099, 256, 1536),\n    COL_VERTEX(2150, 256, 1382),\n    COL_VERTEX(2099, 256, 1382),\n    COL_VERTEX(2048, 256, 1382),\n    COL_VERTEX(2150, 819, 563),\n    COL_VERTEX(2150, 1075, 1741),\n    COL_VERTEX(2048, 819, 1894),\n    COL_VERTEX(2099, 1075, 1741),\n    COL_VERTEX(2099, 819, 1894),\n    COL_VERTEX(2048, 1075, 1894),\n    COL_VERTEX(2099, 1075, 1894),\n    COL_VERTEX(2048, 1075, 1741),\n    COL_VERTEX(2048, 1075, 410),\n    COL_VERTEX(2099, 1075, 410),\n    COL_VERTEX(2048, 1075, 563),\n    COL_VERTEX(2099, 1075, 563),\n    COL_VERTEX(2150, 1075, 410),\n    COL_VERTEX(2048, 819, 563),\n    COL_VERTEX(2099, 819, 563),\n    COL_VERTEX(2390, 1638, 789),\n    COL_VERTEX(3174, 819, 1024),\n    COL_VERTEX(2390, 1638, 1464),\n    COL_VERTEX(2150, 1638, 1638),\n    COL_VERTEX(3174, 1638, 1229),\n    COL_VERTEX(870, 0, 1946),\n    COL_VERTEX(1024, 0, 1946),\n    COL_VERTEX(870, 0, 2048),\n    COL_VERTEX(-511, 1638, 1946),\n    COL_VERTEX(-511, 1638, 2048),\n    COL_VERTEX(-613, 1638, 1843),\n    COL_VERTEX(-716, 819, 1843),\n    COL_VERTEX(2048, 819, 1741),\n    COL_VERTEX(2048, 819, 410),\n    COL_VERTEX(205, 0, 0),\n    COL_VERTEX(1843, 0, 0),\n    COL_VERTEX(0, 0, 1843),\n    COL_VERTEX(0, 614, 0),\n    COL_VERTEX(2048, 614, 0),\n    COL_VERTEX(1638, 819, 410),\n    COL_VERTEX(410, 614, 410),\n    COL_VERTEX(1690, 256, 0),\n    COL_VERTEX(-716, 1638, 1843),\n    COL_VERTEX(-716, 819, 563),\n    COL_VERTEX(-716, 1638, 205),\n    COL_VERTEX(0, 614, 1843),\n    COL_VERTEX(2048, 614, 2048),\n    COL_VERTEX(1024, 614, 2048),\n    COL_VERTEX(2048, 1638, 2048),\n    COL_VERTEX(2048, 1638, 0),\n    COL_VERTEX(2048, 819, 0),\n    COL_VERTEX(717, 922, 348),\n    COL_VERTEX(717, 922, 492),\n    COL_VERTEX(819, 922, 492),\n    COL_VERTEX(768, 1024, 420),\n    COL_VERTEX(1126, 922, 492),\n    COL_VERTEX(1126, 922, 348),\n    COL_VERTEX(1178, 1024, 420),\n    COL_VERTEX(1229, 922, 492),\n    COL_VERTEX(1229, 819, 492),\n    COL_VERTEX(819, 819, 492),\n    COL_VERTEX(-613, 1638, 205),\n    COL_VERTEX(-511, 1638, 102),\n    COL_VERTEX(205, 614, 1946),\n    COL_VERTEX(102, 614, 1843),\n    COL_VERTEX(205, 614, 2048),\n    COL_VERTEX(102, 614, 205),\n    COL_VERTEX(205, 614, 102),\n    COL_VERTEX(0, 614, 205),\n    COL_VERTEX(2048, 614, 1843),\n    COL_VERTEX(1946, 614, 1843),\n    COL_VERTEX(1843, 614, 1946),\n    COL_VERTEX(1843, 614, 0),\n    COL_VERTEX(1843, 614, 102),\n    COL_VERTEX(1946, 614, 205),\n    COL_VERTEX(-613, 819, 1229),\n    COL_VERTEX(-613, 819, 1587),\n    COL_VERTEX(410, 819, 2048),\n    COL_VERTEX(410, 819, 410),\n    COL_VERTEX(-716, 819, 461),\n    COL_VERTEX(-716, 819, 0),\n    COL_VERTEX(-613, 819, 461),\n    COL_VERTEX(0, 819, 102),\n    COL_VERTEX(1434, 819, 0),\n    COL_VERTEX(358, 819, 0),\n    COL_VERTEX(1792, 819, 0),\n    COL_VERTEX(1946, 819, 666),\n    COL_VERTEX(2048, 819, 819),\n    COL_VERTEX(1638, 819, 819),\n    COL_VERTEX(1946, 819, 307),\n    COL_VERTEX(1946, 819, 1997),\n    COL_VERTEX(1024, 819, 2048),\n    COL_VERTEX(1946, 819, 1638),\n    COL_VERTEX(205, 819, 2048),\n    COL_VERTEX(369, 819, 2048),\n    COL_VERTEX(-2764, -1433, -1535),\n    COL_VERTEX(819, 1922, 1946),\n    COL_VERTEX(102, 2355, 1946),\n    COL_VERTEX(512, 1922, 1894),\n    COL_VERTEX(3482, 1843, 6758),\n    COL_VERTEX(922, 1922, 2048),\n    COL_VERTEX(410, 1922, 1946),\n    COL_VERTEX(1075, 1717, 2714),\n    COL_VERTEX(0, 1922, 1946),\n    COL_VERTEX(256, 1717, 2714),\n    COL_VERTEX(-1381, 0, -1740),\n    COL_VERTEX(-1381, 0, -1637),\n    COL_VERTEX(-1279, 0, -1637),\n    COL_VERTEX(-1740, -204, -1945),\n    COL_VERTEX(-1842, -204, -1637),\n    COL_VERTEX(-1279, -204, -1637),\n    COL_VERTEX(-1381, -204, -1945),\n    COL_VERTEX(-2155, -204, 4436),\n    COL_VERTEX(-2155, 51, 4436),\n    COL_VERTEX(-1974, -204, 4617),\n    COL_VERTEX(-2046, -204, 4545),\n    COL_VERTEX(-1503, 512, 5088),\n    COL_VERTEX(-2010, 1126, 4581),\n    COL_VERTEX(-3168, 1126, 5740),\n    COL_VERTEX(-3820, 512, 5088),\n    COL_VERTEX(-1330, 2560, 2150),\n    COL_VERTEX(512, 1922, 1843),\n    COL_VERTEX(-1637, -204, -1637),\n    COL_VERTEX(819, 256, 2150),\n    COL_VERTEX(819, -204, 2150),\n    COL_VERTEX(512, 256, 2099),\n    COL_VERTEX(-1637, 0, -1637),\n    COL_VERTEX(-1484, 256, -1535),\n    COL_VERTEX(-1484, 0, -1637),\n    COL_VERTEX(-2661, -306, 6102),\n    COL_VERTEX(-2951, -204, 5812),\n    COL_VERTEX(77, -2201, 4710),\n    COL_VERTEX(-3385, -204, 5378),\n    COL_VERTEX(-2661, -306, 4074),\n    COL_VERTEX(-2661, 410, 6102),\n    COL_VERTEX(-2118, -255, 4617),\n    COL_VERTEX(307, -1535, 5427),\n    COL_VERTEX(-3675, -306, 5088),\n    COL_VERTEX(-2118, -204, 4762),\n    COL_VERTEX(-2299, -204, 4436),\n    COL_VERTEX(-2661, -204, 4074),\n    COL_VERTEX(-101, -1842, 4608),\n    COL_VERTEX(102, -1842, 4608),\n    COL_VERTEX(307, -2047, 4608),\n    COL_VERTEX(-76, -2201, 2150),\n    COL_VERTEX(-2559, -1433, -1535),\n    COL_VERTEX(-2559, -2661, -1535),\n    COL_VERTEX(3482, -2661, -1535),\n    COL_VERTEX(-716, -2764, -1023),\n    COL_VERTEX(307, -2764, -1023),\n    COL_VERTEX(1024, -2764, -306),\n    COL_VERTEX(307, -2764, 1434),\n    COL_VERTEX(-716, -2764, 1434),\n    COL_VERTEX(1536, -2047, 410),\n    COL_VERTEX(-1433, -1433, 717),\n    COL_VERTEX(-1535, -2457, 1536),\n    COL_VERTEX(-2047, -1433, -613),\n    COL_VERTEX(3482, -2969, -1433),\n    COL_VERTEX(3584, -2969, -1330),\n    COL_VERTEX(3482, -2969, -1535),\n    COL_VERTEX(3686, -1433, -1330),\n    COL_VERTEX(1946, -1433, 2048),\n    COL_VERTEX(-2764, -2457, -1330),\n    COL_VERTEX(-2559, -2457, -1433),\n    COL_VERTEX(-2559, -2457, -1535),\n    COL_VERTEX(-2661, -2457, -1330),\n    COL_VERTEX(2150, -2661, -613),\n    COL_VERTEX(1638, -2661, -1125),\n    COL_VERTEX(-1945, -2457, 128),\n    COL_VERTEX(-2047, -2457, 1024),\n    COL_VERTEX(-1945, -2201, 282),\n    COL_VERTEX(-1945, -2047, 0),\n    COL_VERTEX(1638, -2201, 282),\n    COL_VERTEX(1536, -2201, 128),\n    COL_VERTEX(1536, -2457, 128),\n    COL_VERTEX(1638, -2457, 282),\n    COL_VERTEX(1536, -2457, 282),\n    COL_VERTEX(691, -2457, 2048),\n    COL_VERTEX(691, -2457, 1536),\n    COL_VERTEX(691, -1433, 1536),\n    COL_VERTEX(589, -2457, 1536),\n    COL_VERTEX(589, -2457, 2048),\n    COL_VERTEX(589, -1433, 2048),\n    COL_VERTEX(205, 3174, 116),\n    COL_VERTEX(2048, 3174, 116),\n    COL_VERTEX(2048, 1741, 116),\n    COL_VERTEX(102, 1741, 218),\n    COL_VERTEX(102, 3288, 218),\n    COL_VERTEX(2048, 3288, 218),\n    COL_VERTEX(102, 1741, -805),\n    COL_VERTEX(205, 1741, -805),\n    COL_VERTEX(205, 2150, -805),\n    COL_VERTEX(-716, 1741, 577),\n    COL_VERTEX(410, 1922, 1741),\n    COL_VERTEX(922, 1922, 1843),\n    COL_VERTEX(922, 1922, 1741),\n    COL_VERTEX(102, 2150, 1345),\n    COL_VERTEX(1229, 1741, 1345),\n    COL_VERTEX(102, 1741, 1345),\n    COL_VERTEX(-716, 3174, 116),\n    COL_VERTEX(-716, 3174, 423),\n    COL_VERTEX(717, 2765, 1843),\n    COL_VERTEX(307, 1843, 1140),\n    COL_VERTEX(307, 1843, 1345),\n    COL_VERTEX(1024, 1843, 1345),\n    COL_VERTEX(1024, 1843, 1140),\n    COL_VERTEX(922, 1843, 1038),\n    COL_VERTEX(1024, 1741, 1345),\n    COL_VERTEX(-613, 205, -1330),\n    COL_VERTEX(-613, 0, -1330),\n    COL_VERTEX(-204, 799, -1330),\n    COL_VERTEX(614, 799, -1023),\n    COL_VERTEX(102, 799, -613),\n    COL_VERTEX(-716, 799, -1125),\n    COL_VERTEX(819, 799, -613),\n    COL_VERTEX(819, 799, -818),\n    COL_VERTEX(-204, 799, -511),\n    COL_VERTEX(819, 1638, -101),\n    COL_VERTEX(-511, 819, -101),\n    COL_VERTEX(1024, 1638, -1330),\n    COL_VERTEX(1024, 0, -1330),\n    COL_VERTEX(-716, 1638, -306),\n    COL_VERTEX(-716, 0, -306),\n    COL_VERTEX(-511, 1638, -1535),\n    COL_VERTEX(-511, 0, -1535),\n    COL_VERTEX(819, 0, -1535),\n    COL_VERTEX(819, 0, -1433),\n    COL_VERTEX(-716, 1638, -101),\n    COL_VERTEX(-716, 1638, -1535),\n    COL_VERTEX(1024, 1638, -1535),\n    COL_VERTEX(512, 256, 0),\n    COL_VERTEX(358, 256, -50),\n    COL_VERTEX(102, 1075, -50),\n    COL_VERTEX(256, 1075, 0),\n    COL_VERTEX(256, 819, 0),\n    COL_VERTEX(922, 0, -1330),\n    COL_VERTEX(922, 0, -306),\n    COL_VERTEX(819, 0, -204),\n    COL_VERTEX(-613, 0, -306),\n    COL_VERTEX(-511, 0, -204),\n    COL_VERTEX(1229, 922, -1330),\n    COL_VERTEX(1229, 819, -1330),\n    COL_VERTEX(1126, 819, -1330),\n    COL_VERTEX(3584, 1638, -1535),\n    COL_VERTEX(1126, 1638, -101),\n    COL_VERTEX(1126, 1638, -1535),\n    COL_VERTEX(1331, 1638, -1535),\n    COL_VERTEX(2355, 819, -1330),\n    COL_VERTEX(2458, 819, -1433),\n    COL_VERTEX(2458, 819, -1535),\n    COL_VERTEX(2458, 1638, -1535),\n    COL_VERTEX(2253, 819, -1023),\n    COL_VERTEX(2458, 819, -204),\n    COL_VERTEX(2458, 819, -101),\n    COL_VERTEX(2355, 819, -306),\n    COL_VERTEX(1946, 819, -1433),\n    COL_VERTEX(2048, 819, -1330),\n    COL_VERTEX(2150, 819, -1330),\n    COL_VERTEX(1946, 819, -1535),\n    COL_VERTEX(2150, 819, -613),\n    COL_VERTEX(2150, 1638, -1330),\n    COL_VERTEX(2048, 819, -306),\n    COL_VERTEX(1946, 819, -204),\n    COL_VERTEX(1946, 819, -101),\n    COL_VERTEX(1946, 1638, -101),\n    COL_VERTEX(2150, 819, -306),\n    COL_VERTEX(1331, 819, -101),\n    COL_VERTEX(1126, 819, -306),\n    COL_VERTEX(1690, 1075, 0),\n    COL_VERTEX(1690, 819, 0),\n    COL_VERTEX(1536, 1075, -50),\n    COL_VERTEX(1229, 819, -306),\n    COL_VERTEX(1331, 819, -204),\n    COL_VERTEX(-818, 1638, 1024),\n    COL_VERTEX(-818, 1638, -1535),\n    COL_VERTEX(-2149, 1024, 922),\n    COL_VERTEX(-1791, 1024, 922),\n    COL_VERTEX(-818, 819, 461),\n    COL_VERTEX(-1330, 1638, -1023),\n    COL_VERTEX(-1330, 819, -1023),\n    COL_VERTEX(-1740, 819, -1023),\n    COL_VERTEX(-1893, 922, 512),\n    COL_VERTEX(-1893, 922, 614),\n    COL_VERTEX(-1893, 819, 614),\n    COL_VERTEX(-1330, 819, 1024),\n    COL_VERTEX(-2098, 819, 614),\n    COL_VERTEX(-2098, 819, 512),\n    COL_VERTEX(-1740, 819, 614),\n    COL_VERTEX(-2252, 819, 614),\n    COL_VERTEX(-2047, 973, 1024),\n    COL_VERTEX(-1893, 973, 1024),\n    COL_VERTEX(-818, 1331, -1535),\n    COL_VERTEX(-818, 819, -1330),\n    COL_VERTEX(-1023, 819, -1535),\n    COL_VERTEX(-2252, 819, -1330),\n    COL_VERTEX(-2047, 819, -1535),\n    COL_VERTEX(-2047, 1331, -1535),\n    COL_VERTEX(-2252, 1331, -1535),\n    COL_VERTEX(-1740, 819, 1024),\n    COL_VERTEX(-1740, 1638, 1024),\n    COL_VERTEX(-1893, 1024, 1024),\n    COL_VERTEX(-2047, 1024, 1024),\n    COL_VERTEX(-2047, 1280, 1075),\n    COL_VERTEX(-767, 819, 563),\n    COL_VERTEX(-716, 819, 717),\n    COL_VERTEX(-716, 1075, 717),\n    COL_VERTEX(-2252, 717, -255),\n    COL_VERTEX(-818, 717, -255),\n    COL_VERTEX(-2252, 717, -357),\n    COL_VERTEX(-818, 102, -357),\n    COL_VERTEX(-2252, 102, -357),\n    COL_VERTEX(-1023, 102, -1330),\n    COL_VERTEX(-1228, 102, -1330),\n    COL_VERTEX(-1228, 102, -1535),\n    COL_VERTEX(-1842, 102, -1535),\n    COL_VERTEX(-2047, 102, -1330),\n    COL_VERTEX(-1023, 0, -1330),\n    COL_VERTEX(-1228, 0, -1535),\n    COL_VERTEX(-1842, 0, -1330),\n    COL_VERTEX(-2252, 0, 819),\n    COL_VERTEX(-1740, 102, -255),\n    COL_VERTEX(-1740, 102, 614),\n    COL_VERTEX(-1330, 102, 614),\n    COL_VERTEX(-1740, -9, -255),\n    COL_VERTEX(-1330, -9, 614),\n    COL_VERTEX(-2252, 717, -1535),\n    COL_VERTEX(-818, 717, 0),\n    COL_VERTEX(-1125, 512, 1024),\n    COL_VERTEX(-1125, 0, 1024),\n    COL_VERTEX(-1740, 0, 922),\n    COL_VERTEX(-1740, 512, 922),\n    COL_VERTEX(-1740, 512, 1024),\n    COL_VERTEX(-716, 512, 0),\n    COL_VERTEX(-716, 0, 0),\n    COL_VERTEX(-716, 512, 102),\n    COL_VERTEX(-101, 0, 102),\n    COL_VERTEX(-101, 717, 1024),\n    COL_VERTEX(0, 256, 717),\n    COL_VERTEX(-2098, 256, 1075),\n    COL_VERTEX(2703, 0, -265),\n    COL_VERTEX(2765, 0, -265),\n    COL_VERTEX(2703, 0, 1024),\n    COL_VERTEX(3584, 0, -265),\n    COL_VERTEX(2109, 0, -1269),\n    COL_VERTEX(2765, 0, -1269),\n    COL_VERTEX(3236, 0, -1269),\n    COL_VERTEX(3174, 0, -1269),\n    COL_VERTEX(3236, 0, -1535),\n    COL_VERTEX(2150, -716, -306),\n    COL_VERTEX(2150, -716, 819),\n    COL_VERTEX(2150, -716, 0),\n    COL_VERTEX(2253, -716, 819),\n    COL_VERTEX(1229, 0, -1330),\n    COL_VERTEX(1331, 0, -1433),\n    COL_VERTEX(1331, 0, -1535),\n    COL_VERTEX(1331, 717, -1535),\n    COL_VERTEX(2150, 717, 1024),\n    COL_VERTEX(2150, 717, -101),\n    COL_VERTEX(3584, 717, 1024),\n    COL_VERTEX(1126, 717, -1535),\n    COL_VERTEX(3174, 0, -306),\n    COL_VERTEX(2765, 0, -306),\n    COL_VERTEX(3072, 102, -347),\n    COL_VERTEX(3174, 0, -245),\n    COL_VERTEX(2867, 0, -245),\n    COL_VERTEX(2765, 102, -347),\n    COL_VERTEX(3174, 0, -1228),\n    COL_VERTEX(2765, 0, -1228),\n    COL_VERTEX(3584, -716, -1535),\n    COL_VERTEX(3277, -716, -1535),\n    COL_VERTEX(3277, -716, -1228),\n    COL_VERTEX(2662, -716, -306),\n    COL_VERTEX(2662, -716, 1024),\n    COL_VERTEX(2355, -716, 1024),\n    COL_VERTEX(1126, 717, -306),\n    COL_VERTEX(1126, 0, -306),\n    COL_VERTEX(1946, 717, -101),\n    COL_VERTEX(1331, 0, -101),\n    COL_VERTEX(1946, 0, -101),\n    COL_VERTEX(2765, -101, -1289),\n    COL_VERTEX(2867, -101, -1289),\n    COL_VERTEX(2765, 0, -1187),\n    COL_VERTEX(3072, -101, -1289),\n    COL_VERTEX(3072, 0, -1187),\n    COL_VERTEX(3174, 0, -1289),\n    COL_VERTEX(3072, 0, -1289),\n    COL_VERTEX(3174, 102, -1289),\n    COL_VERTEX(3174, -101, -1289),\n    COL_VERTEX(2867, 102, -1289),\n    COL_VERTEX(2867, 0, -1289),\n    COL_VERTEX(2765, 0, -1289),\n    COL_VERTEX(1536, 256, -50),\n    COL_VERTEX(3277, 256, 1075),\n    COL_VERTEX(3430, 256, 1126),\n    COL_VERTEX(2355, -716, 922),\n    COL_VERTEX(1229, 0, -306),\n    COL_VERTEX(1331, 0, -204),\n    COL_VERTEX(1946, 0, -204),\n    COL_VERTEX(2048, 0, -306),\n    COL_VERTEX(2253, -716, -204),\n    COL_VERTEX(2253, -716, -101),\n    COL_VERTEX(-1842, 0, 2560),\n    COL_VERTEX(-1883, 1024, 2133),\n    COL_VERTEX(-2050, 1024, 2300),\n    COL_VERTEX(-1883, 1024, 1126),\n    COL_VERTEX(-1289, 819, 1619),\n    COL_VERTEX(-2149, 1024, 1126),\n    COL_VERTEX(-1842, 1024, 2150),\n    COL_VERTEX(-2047, 1024, 2355),\n    COL_VERTEX(-818, 819, 1587),\n    COL_VERTEX(-818, 819, 1229),\n    COL_VERTEX(-921, 819, 1229),\n    COL_VERTEX(-818, 1638, 1126),\n    COL_VERTEX(-818, 819, 1331),\n    COL_VERTEX(-101, 0, 1280),\n    COL_VERTEX(-101, 0, 1126),\n    COL_VERTEX(-818, 0, 2048),\n    COL_VERTEX(-1228, 0, 2560),\n    COL_VERTEX(-2201, 0, 1126),\n    COL_VERTEX(-2252, 0, 1126),\n    COL_VERTEX(-101, 0, 2048),\n    COL_VERTEX(-2252, 1638, 1126),\n    COL_VERTEX(-1330, 717, 1638),\n    COL_VERTEX(-1330, 717, 1126),\n    COL_VERTEX(-1842, 819, 2150),\n    COL_VERTEX(0, 256, 1536),\n    COL_VERTEX(-767, 819, 1331),\n    COL_VERTEX(-716, 819, 1331),\n    COL_VERTEX(-716, 819, 1485),\n    COL_VERTEX(-716, 1075, 1485),\n    COL_VERTEX(3584, 1024, 527),\n    COL_VERTEX(3584, 1024, 0),\n    COL_VERTEX(2867, 819, 307),\n    COL_VERTEX(3379, 819, 731),\n    COL_VERTEX(2867, 819, 0),\n    COL_VERTEX(3584, 819, 731),\n    COL_VERTEX(2355, 2399, 0),\n    COL_VERTEX(2150, 1075, 1894),\n    COL_VERTEX(2253, 819, 1997),\n    COL_VERTEX(2560, 819, 2560),\n    COL_VERTEX(3174, 1638, 2560),\n    COL_VERTEX(3584, 1638, 2048),\n    COL_VERTEX(3584, 1638, 717),\n    COL_VERTEX(2560, 1638, 2560),\n    COL_VERTEX(2150, 1741, 307),\n    COL_VERTEX(2150, 1741, 666),\n    COL_VERTEX(2150, 819, 666),\n    COL_VERTEX(2150, 819, 0),\n    COL_VERTEX(3379, 1024, 0),\n    COL_VERTEX(3379, 1024, 102),\n    COL_VERTEX(3482, 1024, 205),\n    COL_VERTEX(3584, 1024, 205),\n    COL_VERTEX(3584, 2048, 205),\n    COL_VERTEX(2150, 2458, 0),\n    COL_VERTEX(3584, 2048, 0),\n    COL_VERTEX(2150, 2458, 717),\n    COL_VERTEX(2355, 819, 102),\n    COL_VERTEX(2253, 819, 205),\n    COL_VERTEX(2150, 819, 205),\n    COL_VERTEX(2150, 1638, 0),\n    COL_VERTEX(2150, 1741, 205),\n    COL_VERTEX(2560, 717, 1638),\n    COL_VERTEX(3584, 717, 2048),\n    COL_VERTEX(2560, 717, 2560),\n    COL_VERTEX(3174, 717, 2150),\n    COL_VERTEX(3584, 819, 0),\n    COL_VERTEX(3174, 819, 2560),\n    COL_VERTEX(2244, -716, 2001),\n    COL_VERTEX(2560, -716, 1843),\n    COL_VERTEX(2765, -716, 2048),\n    COL_VERTEX(3131, -716, 2451),\n    COL_VERTEX(3490, -716, 2001),\n    COL_VERTEX(3174, -716, 1126),\n    COL_VERTEX(2150, 256, 1536),\n    COL_VERTEX(2150, 1075, 563),\n    COL_VERTEX(2150, 819, 1741),\n    COL_VERTEX(3584, 819, 205),\n    COL_VERTEX(2099, 819, 1741),\n    COL_VERTEX(2099, 819, 410),\n    COL_VERTEX(2390, 819, 789),\n    COL_VERTEX(2150, 819, 717),\n    COL_VERTEX(3174, 1638, 1024),\n    COL_VERTEX(3174, 819, 1229),\n    COL_VERTEX(2390, 819, 1464),\n    COL_VERTEX(1024, 0, 2048),\n    COL_VERTEX(-613, 819, 1843),\n    COL_VERTEX(-511, 819, 1946),\n    COL_VERTEX(-511, 819, 2048),\n    COL_VERTEX(-511, 819, 0),\n    COL_VERTEX(-511, 1638, 0),\n    COL_VERTEX(205, 614, 0),\n    COL_VERTEX(410, 614, 2048),\n    COL_VERTEX(0, 614, 2048),\n    COL_VERTEX(1638, 614, 410),\n    COL_VERTEX(1638, 614, 819),\n    COL_VERTEX(2048, 614, 819),\n    COL_VERTEX(1229, 819, 410),\n    COL_VERTEX(717, 819, 410),\n    COL_VERTEX(-716, 819, 205),\n    COL_VERTEX(0, 0, 205),\n    COL_VERTEX(1024, 614, 1638),\n    COL_VERTEX(2048, 614, 1638),\n    COL_VERTEX(-716, 1638, 0),\n    COL_VERTEX(-716, 1638, 2048),\n    COL_VERTEX(819, 922, 348),\n    COL_VERTEX(1229, 922, 348),\n    COL_VERTEX(1229, 819, 348),\n    COL_VERTEX(1126, 819, 348),\n    COL_VERTEX(819, 819, 348),\n    COL_VERTEX(717, 819, 348),\n    COL_VERTEX(717, 717, 348),\n    COL_VERTEX(1229, 717, 348),\n    COL_VERTEX(1126, 819, 492),\n    COL_VERTEX(717, 819, 492),\n    COL_VERTEX(1126, 717, 348),\n    COL_VERTEX(819, 717, 348),\n    COL_VERTEX(-613, 819, 205),\n    COL_VERTEX(-511, 819, 102),\n    COL_VERTEX(102, 0, 1843),\n    COL_VERTEX(205, 0, 1946),\n    COL_VERTEX(205, 0, 2048),\n    COL_VERTEX(205, 0, 102),\n    COL_VERTEX(102, 0, 205),\n    COL_VERTEX(2048, 0, 1843),\n    COL_VERTEX(1946, 0, 1843),\n    COL_VERTEX(1843, 0, 1946),\n    COL_VERTEX(1843, 0, 2048),\n    COL_VERTEX(1843, 614, 2048),\n    COL_VERTEX(1843, 0, 102),\n    COL_VERTEX(1946, 0, 205),\n    COL_VERTEX(2048, 0, 205),\n    COL_VERTEX(2048, 614, 205),\n    COL_VERTEX(-716, 819, 819),\n    COL_VERTEX(-716, 819, 1229),\n    COL_VERTEX(-613, 819, 819),\n    COL_VERTEX(-716, 819, 1587),\n    COL_VERTEX(-716, 819, 2048),\n    COL_VERTEX(0, 819, 0),\n    COL_VERTEX(358, 819, 102),\n    COL_VERTEX(1792, 819, 102),\n    COL_VERTEX(1434, 819, 102),\n    COL_VERTEX(2048, 819, 307),\n    COL_VERTEX(2048, 819, 666),\n    COL_VERTEX(2048, 819, 2048),\n    COL_VERTEX(2048, 819, 1997),\n    COL_VERTEX(2048, 819, 1638),\n    COL_VERTEX(1024, 819, 1638),\n    COL_VERTEX(1065, 819, 1679),\n    COL_VERTEX(1065, 819, 2048),\n    COL_VERTEX(2048, 819, 1679),\n    COL_VERTEX(369, 819, 369),\n    COL_VERTEX(717, 819, 369),\n    COL_VERTEX(2048, 819, 778),\n    COL_VERTEX(1679, 819, 778),\n    COL_VERTEX(1679, 819, 369),\n    COL_VERTEX(1229, 819, 369),\n    COL_VERTEX(1638, -1433, 2048),\n    COL_VERTEX(1638, -1433, -1535),\n    COL_TRI_INIT(SURFACE_DEFAULT, 1756),\n    COL_TRI(465, 466, 467),\n    COL_TRI(465, 468, 469),\n    COL_TRI(465, 469, 466),\n    COL_TRI(470, 469, 468),\n    COL_TRI(471, 472, 466),\n    COL_TRI(471, 466, 473),\n    COL_TRI(472, 474, 466),\n    COL_TRI(466, 474, 475),\n    COL_TRI(466, 475, 467),\n    COL_TRI(467, 181, 470),\n    COL_TRI(476, 477, 480),\n    COL_TRI(477, 485, 1120),\n    COL_TRI(477, 478, 485),\n    COL_TRI(478, 483, 485),\n    COL_TRI(479, 1120, 485),\n    COL_TRI(479, 482, 1120),\n    COL_TRI(480, 477, 1120),\n    COL_TRI(481, 483, 1121),\n    COL_TRI(482, 1122, 481),\n    COL_TRI(482, 481, 1120),\n    COL_TRI(484, 1121, 483),\n    COL_TRI(478, 484, 483),\n    COL_TRI(485, 483, 546),\n    COL_TRI(486, 1121, 484),\n    COL_TRI(478, 476, 487),\n    COL_TRI(478, 477, 476),\n    COL_TRI(487, 484, 478),\n    COL_TRI(487, 501, 484),\n    COL_TRI(471, 492, 535),\n    COL_TRI(488, 472, 489),\n    COL_TRI(488, 490, 472),\n    COL_TRI(489, 471, 491),\n    COL_TRI(489, 472, 471),\n    COL_TRI(490, 474, 472),\n    COL_TRI(491, 535, 536),\n    COL_TRI(491, 471, 535),\n    COL_TRI(473, 492, 471),\n    COL_TRI(493, 473, 553),\n    COL_TRI(492, 473, 494),\n    COL_TRI(494, 473, 493),\n    COL_TRI(495, 535, 492),\n    COL_TRI(496, 535, 495),\n    COL_TRI(497, 506, 490),\n    COL_TRI(497, 490, 488),\n    COL_TRI(498, 474, 490),\n    COL_TRI(486, 533, 1121),\n    COL_TRI(500, 533, 486),\n    COL_TRI(500, 486, 536),\n    COL_TRI(486, 491, 536),\n    COL_TRI(486, 501, 491),\n    COL_TRI(501, 489, 491),\n    COL_TRI(501, 487, 489),\n    COL_TRI(486, 484, 501),\n    COL_TRI(487, 488, 489),\n    COL_TRI(487, 476, 488),\n    COL_TRI(503, 50, 564),\n    COL_TRI(476, 497, 488),\n    COL_TRI(476, 502, 497),\n    COL_TRI(502, 476, 480),\n    COL_TRI(503, 35, 183),\n    COL_TRI(503, 1123, 35),\n    COL_TRI(503, 183, 50),\n    COL_TRI(505, 1126, 542),\n    COL_TRI(504, 35, 1123),\n    COL_TRI(505, 506, 1124),\n    COL_TRI(506, 508, 1124),\n    COL_TRI(507, 506, 505),\n    COL_TRI(508, 1125, 510),\n    COL_TRI(508, 510, 1124),\n    COL_TRI(509, 505, 1124),\n    COL_TRI(509, 1124, 510),\n    COL_TRI(507, 505, 542),\n    COL_TRI(505, 531, 1126),\n    COL_TRI(515, 1132, 1133),\n    COL_TRI(509, 510, 1127),\n    COL_TRI(510, 1125, 1127),\n    COL_TRI(511, 1129, 512),\n    COL_TRI(512, 1129, 513),\n    COL_TRI(512, 513, 514),\n    COL_TRI(513, 1130, 1131),\n    COL_TRI(514, 515, 511),\n    COL_TRI(511, 1130, 1129),\n    COL_TRI(37, 517, 177),\n    COL_TRI(515, 514, 1132),\n    COL_TRI(513, 1131, 1134),\n    COL_TRI(513, 1134, 1135),\n    COL_TRI(514, 513, 1135),\n    COL_TRI(514, 1135, 1132),\n    COL_TRI(516, 1136, 37),\n    COL_TRI(516, 1141, 1140),\n    COL_TRI(517, 33, 177),\n    COL_TRI(33, 1138, 34),\n    COL_TRI(517, 1138, 33),\n    COL_TRI(34, 1139, 521),\n    COL_TRI(34, 521, 1140),\n    COL_TRI(516, 518, 1141),\n    COL_TRI(518, 520, 1142),\n    COL_TRI(518, 1142, 1141),\n    COL_TRI(519, 1141, 1142),\n    COL_TRI(520, 518, 1143),\n    COL_TRI(518, 516, 1143),\n    COL_TRI(519, 1140, 1141),\n    COL_TRI(521, 1137, 516),\n    COL_TRI(521, 516, 1140),\n    COL_TRI(523, 522, 525),\n    COL_TRI(516, 1137, 1136),\n    COL_TRI(516, 37, 185),\n    COL_TRI(516, 185, 1143),\n    COL_TRI(522, 548, 524),\n    COL_TRI(522, 524, 525),\n    COL_TRI(523, 493, 522),\n    COL_TRI(524, 548, 495),\n    COL_TRI(524, 495, 1144),\n    COL_TRI(525, 524, 1144),\n    COL_TRI(525, 1144, 523),\n    COL_TRI(526, 527, 530),\n    COL_TRI(526, 530, 528),\n    COL_TRI(527, 526, 467),\n    COL_TRI(526, 45, 47),\n    COL_TRI(526, 47, 467),\n    COL_TRI(528, 45, 526),\n    COL_TRI(509, 532, 531),\n    COL_TRI(529, 498, 530),\n    COL_TRI(530, 527, 538),\n    COL_TRI(530, 538, 529),\n    COL_TRI(498, 528, 530),\n    COL_TRI(528, 36, 45),\n    COL_TRI(498, 36, 528),\n    COL_TRI(527, 467, 538),\n    COL_TRI(509, 531, 505),\n    COL_TRI(531, 532, 1128),\n    COL_TRI(531, 1128, 1126),\n    COL_TRI(532, 509, 543),\n    COL_TRI(532, 543, 1128),\n    COL_TRI(533, 534, 1121),\n    COL_TRI(534, 481, 1121),\n    COL_TRI(535, 1127, 500),\n    COL_TRI(536, 535, 500),\n    COL_TRI(469, 473, 466),\n    COL_TRI(469, 553, 473),\n    COL_TRI(493, 523, 494),\n    COL_TRI(493, 553, 537),\n    COL_TRI(537, 44, 38),\n    COL_TRI(537, 38, 493),\n    COL_TRI(492, 494, 523),\n    COL_TRI(492, 523, 1144),\n    COL_TRI(539, 540, 543),\n    COL_TRI(495, 492, 1144),\n    COL_TRI(498, 529, 474),\n    COL_TRI(499, 498, 490),\n    COL_TRI(475, 474, 529),\n    COL_TRI(475, 529, 538),\n    COL_TRI(467, 475, 538),\n    COL_TRI(544, 545, 482),\n    COL_TRI(540, 1128, 543),\n    COL_TRI(540, 541, 1126),\n    COL_TRI(541, 542, 1126),\n    COL_TRI(540, 1126, 1128),\n    COL_TRI(542, 541, 507),\n    COL_TRI(543, 509, 1127),\n    COL_TRI(543, 1127, 539),\n    COL_TRI(544, 482, 479),\n    COL_TRI(485, 546, 479),\n    COL_TRI(479, 546, 683),\n    COL_TRI(479, 683, 544),\n    COL_TRI(483, 481, 1122),\n    COL_TRI(483, 1122, 546),\n    COL_TRI(545, 1122, 482),\n    COL_TRI(545, 1145, 1122),\n    COL_TRI(546, 1122, 1145),\n    COL_TRI(40, 25, 179),\n    COL_TRI(40, 23, 25),\n    COL_TRI(40, 26, 23),\n    COL_TRI(21, 20, 180),\n    COL_TRI(21, 180, 42),\n    COL_TRI(16, 27, 30),\n    COL_TRI(493, 38, 32),\n    COL_TRI(20, 178, 180),\n    COL_TRI(29, 31, 17),\n    COL_TRI(17, 16, 30),\n    COL_TRI(17, 30, 29),\n    COL_TRI(549, 495, 39),\n    COL_TRI(493, 32, 522),\n    COL_TRI(537, 547, 44),\n    COL_TRI(547, 1146, 44),\n    COL_TRI(522, 32, 28),\n    COL_TRI(522, 28, 548),\n    COL_TRI(548, 28, 39),\n    COL_TRI(548, 39, 495),\n    COL_TRI(549, 550, 495),\n    COL_TRI(550, 498, 495),\n    COL_TRI(550, 1147, 498),\n    COL_TRI(498, 1147, 1148),\n    COL_TRI(498, 1148, 41),\n    COL_TRI(498, 41, 36),\n    COL_TRI(467, 47, 181),\n    COL_TRI(181, 551, 552),\n    COL_TRI(470, 181, 552),\n    COL_TRI(470, 552, 537),\n    COL_TRI(552, 547, 537),\n    COL_TRI(553, 469, 470),\n    COL_TRI(553, 470, 537),\n    COL_TRI(554, 52, 556),\n    COL_TRI(554, 189, 52),\n    COL_TRI(52, 186, 1147),\n    COL_TRI(52, 1147, 556),\n    COL_TRI(557, 286, 558),\n    COL_TRI(555, 556, 1149),\n    COL_TRI(555, 554, 556),\n    COL_TRI(556, 1147, 550),\n    COL_TRI(556, 550, 1149),\n    COL_TRI(550, 51, 187),\n    COL_TRI(550, 187, 1149),\n    COL_TRI(187, 555, 1149),\n    COL_TRI(187, 188, 555),\n    COL_TRI(558, 1150, 547),\n    COL_TRI(558, 286, 1150),\n    COL_TRI(557, 132, 286),\n    COL_TRI(547, 552, 559),\n    COL_TRI(547, 559, 558),\n    COL_TRI(558, 559, 1151),\n    COL_TRI(558, 1151, 557),\n    COL_TRI(552, 1152, 285),\n    COL_TRI(560, 182, 561),\n    COL_TRI(559, 285, 287),\n    COL_TRI(552, 285, 559),\n    COL_TRI(559, 287, 1151),\n    COL_TRI(286, 1152, 1150),\n    COL_TRI(286, 285, 1152),\n    COL_TRI(560, 49, 182),\n    COL_TRI(561, 182, 43),\n    COL_TRI(561, 43, 562),\n    COL_TRI(562, 43, 48),\n    COL_TRI(562, 48, 563),\n    COL_TRI(563, 46, 504),\n    COL_TRI(563, 48, 46),\n    COL_TRI(564, 50, 49),\n    COL_TRI(564, 49, 560),\n    COL_TRI(567, 1136, 1137),\n    COL_TRI(504, 46, 35),\n    COL_TRI(519, 184, 34),\n    COL_TRI(519, 34, 1140),\n    COL_TRI(565, 566, 567),\n    COL_TRI(566, 1139, 1136),\n    COL_TRI(566, 1136, 567),\n    COL_TRI(568, 567, 570),\n    COL_TRI(565, 567, 568),\n    COL_TRI(567, 1137, 570),\n    COL_TRI(569, 521, 1139),\n    COL_TRI(569, 1139, 566),\n    COL_TRI(570, 1137, 521),\n    COL_TRI(568, 570, 571),\n    COL_TRI(571, 570, 569),\n    COL_TRI(570, 521, 569),\n    COL_TRI(571, 569, 572),\n    COL_TRI(572, 569, 566),\n    COL_TRI(572, 566, 565),\n    COL_TRI(573, 574, 575),\n    COL_TRI(573, 1153, 574),\n    COL_TRI(579, 581, 192),\n    COL_TRI(574, 1154, 593),\n    COL_TRI(575, 593, 597),\n    COL_TRI(574, 593, 575),\n    COL_TRI(573, 575, 589),\n    COL_TRI(575, 597, 589),\n    COL_TRI(576, 578, 579),\n    COL_TRI(576, 579, 577),\n    COL_TRI(577, 579, 53),\n    COL_TRI(578, 581, 579),\n    COL_TRI(579, 192, 53),\n    COL_TRI(578, 1155, 581),\n    COL_TRI(580, 582, 581),\n    COL_TRI(581, 1155, 580),\n    COL_TRI(196, 192, 581),\n    COL_TRI(582, 196, 581),\n    COL_TRI(577, 53, 54),\n    COL_TRI(193, 191, 578),\n    COL_TRI(191, 1155, 578),\n    COL_TRI(191, 190, 1155),\n    COL_TRI(580, 1155, 190),\n    COL_TRI(55, 584, 587),\n    COL_TRI(580, 190, 59),\n    COL_TRI(193, 578, 576),\n    COL_TRI(583, 194, 55),\n    COL_TRI(583, 55, 587),\n    COL_TRI(55, 196, 582),\n    COL_TRI(55, 582, 584),\n    COL_TRI(60, 1160, 580),\n    COL_TRI(584, 582, 585),\n    COL_TRI(585, 582, 580),\n    COL_TRI(585, 1159, 584),\n    COL_TRI(584, 571, 587),\n    COL_TRI(586, 585, 588),\n    COL_TRI(585, 1160, 588),\n    COL_TRI(585, 580, 1160),\n    COL_TRI(586, 1159, 585),\n    COL_TRI(586, 572, 1159),\n    COL_TRI(587, 571, 572),\n    COL_TRI(587, 572, 586),\n    COL_TRI(60, 580, 59),\n    COL_TRI(583, 587, 586),\n    COL_TRI(588, 195, 586),\n    COL_TRI(588, 56, 195),\n    COL_TRI(56, 588, 1160),\n    COL_TRI(195, 1158, 586),\n    COL_TRI(56, 1160, 60),\n    COL_TRI(194, 1158, 195),\n    COL_TRI(194, 583, 1158),\n    COL_TRI(583, 586, 1158),\n    COL_TRI(589, 590, 1157),\n    COL_TRI(590, 1161, 1157),\n    COL_TRI(589, 1156, 590),\n    COL_TRI(589, 1157, 573),\n    COL_TRI(589, 597, 1156),\n    COL_TRI(591, 592, 1162),\n    COL_TRI(591, 1163, 592),\n    COL_TRI(592, 1163, 1164),\n    COL_TRI(593, 595, 1162),\n    COL_TRI(593, 1162, 592),\n    COL_TRI(594, 591, 1162),\n    COL_TRI(595, 594, 1162),\n    COL_TRI(596, 1156, 597),\n    COL_TRI(596, 597, 592),\n    COL_TRI(596, 592, 1164),\n    COL_TRI(597, 593, 592),\n    COL_TRI(593, 1154, 595),\n    COL_TRI(598, 601, 600),\n    COL_TRI(62, 1167, 602),\n    COL_TRI(599, 1165, 598),\n    COL_TRI(600, 601, 66),\n    COL_TRI(598, 1165, 601),\n    COL_TRI(577, 601, 1166),\n    COL_TRI(577, 66, 601),\n    COL_TRI(601, 1165, 1166),\n    COL_TRI(600, 66, 65),\n    COL_TRI(599, 1166, 1165),\n    COL_TRI(602, 1166, 599),\n    COL_TRI(602, 1167, 1166),\n    COL_TRI(576, 1166, 1167),\n    COL_TRI(576, 577, 1166),\n    COL_TRI(62, 199, 1167),\n    COL_TRI(199, 576, 1167),\n    COL_TRI(199, 193, 576),\n    COL_TRI(207, 607, 603),\n    COL_TRI(207, 206, 607),\n    COL_TRI(208, 207, 603),\n    COL_TRI(603, 607, 1168),\n    COL_TRI(603, 1168, 605),\n    COL_TRI(604, 603, 605),\n    COL_TRI(208, 603, 604),\n    COL_TRI(602, 607, 62),\n    COL_TRI(605, 1168, 205),\n    COL_TRI(605, 205, 67),\n    COL_TRI(604, 605, 606),\n    COL_TRI(606, 605, 67),\n    COL_TRI(606, 67, 68),\n    COL_TRI(577, 54, 66),\n    COL_TRI(599, 1168, 607),\n    COL_TRI(602, 599, 607),\n    COL_TRI(608, 1170, 1171),\n    COL_TRI(607, 206, 62),\n    COL_TRI(600, 65, 1168),\n    COL_TRI(65, 205, 1168),\n    COL_TRI(599, 600, 1168),\n    COL_TRI(599, 598, 600),\n    COL_TRI(608, 1169, 1170),\n    COL_TRI(609, 645, 1172),\n    COL_TRI(609, 1172, 610),\n    COL_TRI(610, 1172, 1173),\n    COL_TRI(610, 1173, 611),\n    COL_TRI(611, 1173, 1174),\n    COL_TRI(611, 1174, 652),\n    COL_TRI(612, 650, 1175),\n    COL_TRI(612, 1175, 613),\n    COL_TRI(612, 652, 653),\n    COL_TRI(612, 653, 651),\n    COL_TRI(613, 1175, 1176),\n    COL_TRI(613, 1176, 614),\n    COL_TRI(614, 1176, 640),\n    COL_TRI(614, 640, 1178),\n    COL_TRI(615, 72, 617),\n    COL_TRI(615, 1179, 72),\n    COL_TRI(616, 232, 615),\n    COL_TRI(617, 72, 80),\n    COL_TRI(621, 1181, 1182),\n    COL_TRI(617, 80, 648),\n    COL_TRI(618, 76, 619),\n    COL_TRI(619, 76, 75),\n    COL_TRI(619, 75, 1180),\n    COL_TRI(618, 219, 76),\n    COL_TRI(620, 219, 618),\n    COL_TRI(620, 222, 219),\n    COL_TRI(608, 1181, 621),\n    COL_TRI(624, 229, 623),\n    COL_TRI(608, 1183, 1181),\n    COL_TRI(622, 1182, 624),\n    COL_TRI(621, 1182, 622),\n    COL_TRI(622, 624, 1184),\n    COL_TRI(623, 228, 625),\n    COL_TRI(623, 229, 228),\n    COL_TRI(625, 228, 227),\n    COL_TRI(625, 227, 626),\n    COL_TRI(626, 227, 225),\n    COL_TRI(626, 225, 1185),\n    COL_TRI(627, 629, 630),\n    COL_TRI(627, 628, 629),\n    COL_TRI(627, 211, 210),\n    COL_TRI(627, 210, 628),\n    COL_TRI(628, 210, 209),\n    COL_TRI(628, 209, 629),\n    COL_TRI(629, 209, 69),\n    COL_TRI(629, 69, 630),\n    COL_TRI(630, 69, 1186),\n    COL_TRI(630, 1186, 633),\n    COL_TRI(624, 623, 1184),\n    COL_TRI(631, 1187, 632),\n    COL_TRI(632, 1188, 1169),\n    COL_TRI(632, 1187, 1188),\n    COL_TRI(606, 211, 627),\n    COL_TRI(631, 1189, 1187),\n    COL_TRI(633, 1189, 631),\n    COL_TRI(633, 1186, 1189),\n    COL_TRI(634, 208, 604),\n    COL_TRI(634, 604, 1185),\n    COL_TRI(604, 627, 1185),\n    COL_TRI(604, 606, 627),\n    COL_TRI(606, 68, 211),\n    COL_TRI(216, 220, 79),\n    COL_TRI(78, 1190, 223),\n    COL_TRI(78, 81, 1190),\n    COL_TRI(215, 226, 81),\n    COL_TRI(215, 81, 78),\n    COL_TRI(226, 215, 214),\n    COL_TRI(226, 214, 224),\n    COL_TRI(225, 224, 214),\n    COL_TRI(225, 214, 634),\n    COL_TRI(223, 1191, 79),\n    COL_TRI(216, 79, 1191),\n    COL_TRI(223, 1190, 1191),\n    COL_TRI(75, 636, 637),\n    COL_TRI(75, 637, 1180),\n    COL_TRI(635, 637, 644),\n    COL_TRI(636, 644, 637),\n    COL_TRI(637, 635, 616),\n    COL_TRI(637, 616, 1180),\n    COL_TRI(636, 1192, 644),\n    COL_TRI(640, 641, 1178),\n    COL_TRI(635, 1193, 616),\n    COL_TRI(638, 635, 1194),\n    COL_TRI(638, 639, 635),\n    COL_TRI(635, 644, 1194),\n    COL_TRI(635, 639, 1193),\n    COL_TRI(639, 638, 1192),\n    COL_TRI(639, 1192, 636),\n    COL_TRI(640, 337, 641),\n    COL_TRI(642, 1194, 644),\n    COL_TRI(641, 643, 609),\n    COL_TRI(641, 609, 1178),\n    COL_TRI(337, 642, 641),\n    COL_TRI(642, 643, 641),\n    COL_TRI(643, 645, 609),\n    COL_TRI(643, 335, 645),\n    COL_TRI(642, 1195, 643),\n    COL_TRI(338, 335, 643),\n    COL_TRI(338, 643, 1195),\n    COL_TRI(644, 1195, 642),\n    COL_TRI(642, 336, 638),\n    COL_TRI(642, 638, 1194),\n    COL_TRI(620, 1196, 647),\n    COL_TRI(644, 1192, 338),\n    COL_TRI(644, 338, 1195),\n    COL_TRI(337, 336, 642),\n    COL_TRI(645, 337, 640),\n    COL_TRI(645, 335, 337),\n    COL_TRI(620, 648, 1196),\n    COL_TRI(646, 647, 1196),\n    COL_TRI(647, 649, 222),\n    COL_TRI(620, 647, 222),\n    COL_TRI(647, 1197, 1198),\n    COL_TRI(647, 1198, 649),\n    COL_TRI(646, 1197, 647),\n    COL_TRI(80, 1199, 1196),\n    COL_TRI(648, 80, 1196),\n    COL_TRI(646, 1196, 1199),\n    COL_TRI(649, 1200, 1199),\n    COL_TRI(646, 1199, 1200),\n    COL_TRI(649, 1198, 1200),\n    COL_TRI(653, 654, 1177),\n    COL_TRI(650, 339, 341),\n    COL_TRI(650, 341, 1174),\n    COL_TRI(612, 651, 339),\n    COL_TRI(612, 339, 650),\n    COL_TRI(651, 653, 1177),\n    COL_TRI(651, 1177, 342),\n    COL_TRI(651, 342, 339),\n    COL_TRI(652, 341, 653),\n    COL_TRI(652, 1174, 341),\n    COL_TRI(646, 1177, 654),\n    COL_TRI(646, 342, 1177),\n    COL_TRI(654, 653, 341),\n    COL_TRI(654, 341, 340),\n    COL_TRI(654, 340, 1198),\n    COL_TRI(654, 1198, 1197),\n    COL_TRI(654, 1197, 646),\n    COL_TRI(646, 1200, 342),\n    COL_TRI(232, 234, 70),\n    COL_TRI(232, 70, 1179),\n    COL_TRI(616, 233, 232),\n    COL_TRI(655, 1201, 1202),\n    COL_TRI(655, 1202, 1203),\n    COL_TRI(656, 1204, 1205),\n    COL_TRI(656, 1205, 1206),\n    COL_TRI(7, 1, 2),\n    COL_TRI(7, 2, 4),\n    COL_TRI(7, 1207, 1208),\n    COL_TRI(7, 1208, 1209),\n    COL_TRI(2, 1, 1210),\n    COL_TRI(4, 2, 0),\n    COL_TRI(2, 1210, 1211),\n    COL_TRI(0, 2, 1211),\n    COL_TRI(4, 0, 6),\n    COL_TRI(6, 3, 5),\n    COL_TRI(6, 0, 3),\n    COL_TRI(657, 0, 1211),\n    COL_TRI(657, 3, 0),\n    COL_TRI(658, 1212, 1211),\n    COL_TRI(658, 1211, 1210),\n    COL_TRI(657, 1213, 3),\n    COL_TRI(661, 351, 659),\n    COL_TRI(5, 1214, 1215),\n    COL_TRI(6, 5, 1215),\n    COL_TRI(6, 1215, 1207),\n    COL_TRI(4, 6, 1207),\n    COL_TRI(659, 349, 660),\n    COL_TRI(660, 349, 350),\n    COL_TRI(660, 350, 1216),\n    COL_TRI(659, 351, 349),\n    COL_TRI(666, 662, 1220),\n    COL_TRI(661, 352, 351),\n    COL_TRI(662, 663, 1217),\n    COL_TRI(663, 664, 1217),\n    COL_TRI(664, 1218, 1219),\n    COL_TRI(664, 1219, 1217),\n    COL_TRI(665, 662, 1217),\n    COL_TRI(665, 1217, 1219),\n    COL_TRI(666, 663, 662),\n    COL_TRI(667, 686, 665),\n    COL_TRI(667, 665, 1219),\n    COL_TRI(662, 665, 1221),\n    COL_TRI(667, 1219, 1218),\n    COL_TRI(668, 671, 84),\n    COL_TRI(669, 670, 671),\n    COL_TRI(669, 671, 668),\n    COL_TRI(670, 672, 671),\n    COL_TRI(671, 237, 84),\n    COL_TRI(671, 672, 237),\n    COL_TRI(673, 236, 674),\n    COL_TRI(237, 672, 240),\n    COL_TRI(672, 680, 240),\n    COL_TRI(672, 675, 677),\n    COL_TRI(672, 677, 680),\n    COL_TRI(670, 675, 672),\n    COL_TRI(668, 84, 673),\n    COL_TRI(673, 84, 236),\n    COL_TRI(674, 670, 669),\n    COL_TRI(674, 236, 670),\n    COL_TRI(236, 675, 670),\n    COL_TRI(675, 235, 86),\n    COL_TRI(675, 86, 677),\n    COL_TRI(236, 235, 675),\n    COL_TRI(546, 1145, 683),\n    COL_TRI(676, 1223, 1208),\n    COL_TRI(676, 1224, 1223),\n    COL_TRI(676, 1208, 680),\n    COL_TRI(677, 676, 680),\n    COL_TRI(682, 679, 686),\n    COL_TRI(680, 1223, 687),\n    COL_TRI(680, 1208, 1223),\n    COL_TRI(544, 683, 1225),\n    COL_TRI(544, 1225, 682),\n    COL_TRI(681, 1225, 683),\n    COL_TRI(667, 544, 682),\n    COL_TRI(667, 682, 686),\n    COL_TRI(679, 682, 1225),\n    COL_TRI(685, 1222, 85),\n    COL_TRI(666, 681, 683),\n    COL_TRI(683, 663, 666),\n    COL_TRI(666, 684, 688),\n    COL_TRI(666, 688, 681),\n    COL_TRI(684, 666, 1220),\n    COL_TRI(685, 1220, 1222),\n    COL_TRI(686, 677, 86),\n    COL_TRI(686, 86, 1221),\n    COL_TRI(677, 686, 679),\n    COL_TRI(677, 679, 676),\n    COL_TRI(88, 687, 685),\n    COL_TRI(88, 685, 85),\n    COL_TRI(88, 680, 687),\n    COL_TRI(88, 240, 680),\n    COL_TRI(679, 678, 676),\n    COL_TRI(687, 1224, 685),\n    COL_TRI(684, 1220, 685),\n    COL_TRI(684, 685, 1224),\n    COL_TRI(687, 1223, 1224),\n    COL_TRI(688, 684, 1224),\n    COL_TRI(678, 688, 1224),\n    COL_TRI(678, 1224, 676),\n    COL_TRI(679, 1225, 678),\n    COL_TRI(678, 1225, 681),\n    COL_TRI(678, 681, 688),\n    COL_TRI(689, 1229, 1230),\n    COL_TRI(663, 683, 1145),\n    COL_TRI(667, 545, 544),\n    COL_TRI(662, 1221, 1222),\n    COL_TRI(689, 1226, 1227),\n    COL_TRI(689, 1227, 1228),\n    COL_TRI(689, 1228, 1229),\n    COL_TRI(695, 356, 697),\n    COL_TRI(692, 1229, 1228),\n    COL_TRI(693, 1230, 1229),\n    COL_TRI(693, 1229, 692),\n    COL_TRI(691, 689, 1230),\n    COL_TRI(691, 1230, 693),\n    COL_TRI(692, 1228, 1231),\n    COL_TRI(694, 1227, 1226),\n    COL_TRI(694, 1226, 690),\n    COL_TRI(690, 1226, 689),\n    COL_TRI(690, 689, 691),\n    COL_TRI(695, 354, 356),\n    COL_TRI(696, 695, 697),\n    COL_TRI(697, 356, 353),\n    COL_TRI(353, 355, 1232),\n    COL_TRI(698, 353, 1232),\n    COL_TRI(697, 353, 698),\n    COL_TRI(698, 1232, 1233),\n    COL_TRI(709, 1234, 707),\n    COL_TRI(699, 700, 701),\n    COL_TRI(700, 702, 701),\n    COL_TRI(701, 703, 704),\n    COL_TRI(702, 703, 701),\n    COL_TRI(703, 705, 704),\n    COL_TRI(704, 705, 709),\n    COL_TRI(705, 1234, 709),\n    COL_TRI(706, 1235, 711),\n    COL_TRI(706, 707, 1235),\n    COL_TRI(706, 708, 707),\n    COL_TRI(710, 707, 1237),\n    COL_TRI(707, 708, 1237),\n    COL_TRI(708, 714, 715),\n    COL_TRI(708, 715, 1237),\n    COL_TRI(709, 707, 710),\n    COL_TRI(706, 711, 1236),\n    COL_TRI(711, 1238, 1236),\n    COL_TRI(711, 1239, 1238),\n    COL_TRI(712, 702, 1240),\n    COL_TRI(714, 1240, 715),\n    COL_TRI(714, 712, 1240),\n    COL_TRI(718, 262, 728),\n    COL_TRI(702, 700, 1240),\n    COL_TRI(713, 700, 699),\n    COL_TRI(715, 699, 1237),\n    COL_TRI(715, 713, 699),\n    COL_TRI(716, 259, 717),\n    COL_TRI(716, 717, 718),\n    COL_TRI(717, 262, 718),\n    COL_TRI(718, 728, 1241),\n    COL_TRI(723, 1245, 1246),\n    COL_TRI(719, 1242, 260),\n    COL_TRI(720, 721, 1242),\n    COL_TRI(721, 260, 1242),\n    COL_TRI(722, 1243, 1244),\n    COL_TRI(722, 736, 1243),\n    COL_TRI(723, 740, 1245),\n    COL_TRI(726, 1252, 1253),\n    COL_TRI(724, 1247, 1248),\n    COL_TRI(724, 1248, 1249),\n    COL_TRI(725, 696, 1248),\n    COL_TRI(725, 1248, 1247),\n    COL_TRI(724, 1249, 1250),\n    COL_TRI(726, 1251, 1252),\n    COL_TRI(727, 258, 719),\n    COL_TRI(717, 727, 262),\n    COL_TRI(727, 260, 262),\n    COL_TRI(727, 719, 260),\n    COL_TRI(728, 721, 720),\n    COL_TRI(728, 720, 1241),\n    COL_TRI(717, 259, 112),\n    COL_TRI(717, 112, 729),\n    COL_TRI(112, 1254, 729),\n    COL_TRI(112, 256, 1254),\n    COL_TRI(727, 717, 729),\n    COL_TRI(727, 729, 1255),\n    COL_TRI(729, 1254, 733),\n    COL_TRI(729, 733, 1255),\n    COL_TRI(721, 728, 730),\n    COL_TRI(721, 730, 1256),\n    COL_TRI(730, 1257, 732),\n    COL_TRI(730, 732, 1256),\n    COL_TRI(728, 262, 113),\n    COL_TRI(728, 113, 730),\n    COL_TRI(113, 1257, 730),\n    COL_TRI(113, 1258, 1257),\n    COL_TRI(731, 113, 261),\n    COL_TRI(732, 261, 1256),\n    COL_TRI(734, 1259, 735),\n    COL_TRI(261, 260, 721),\n    COL_TRI(261, 721, 1256),\n    COL_TRI(733, 257, 1255),\n    COL_TRI(733, 111, 257),\n    COL_TRI(257, 727, 1255),\n    COL_TRI(257, 258, 727),\n    COL_TRI(724, 1250, 734),\n    COL_TRI(734, 1250, 1259),\n    COL_TRI(739, 696, 725),\n    COL_TRI(735, 1259, 1244),\n    COL_TRI(735, 1244, 1243),\n    COL_TRI(736, 1260, 737),\n    COL_TRI(737, 1260, 1261),\n    COL_TRI(737, 1261, 738),\n    COL_TRI(738, 1261, 716),\n    COL_TRI(738, 716, 1241),\n    COL_TRI(736, 722, 1260),\n    COL_TRI(720, 1263, 741),\n    COL_TRI(740, 1233, 739),\n    COL_TRI(739, 1233, 696),\n    COL_TRI(740, 723, 1233),\n    COL_TRI(741, 1262, 742),\n    COL_TRI(742, 1262, 1246),\n    COL_TRI(742, 1246, 1245),\n    COL_TRI(741, 1263, 1262),\n    COL_TRI(720, 719, 1263),\n    COL_TRI(743, 360, 357),\n    COL_TRI(743, 357, 745),\n    COL_TRI(744, 360, 743),\n    COL_TRI(357, 359, 1264),\n    COL_TRI(745, 357, 1264),\n    COL_TRI(745, 1264, 1265),\n    COL_TRI(744, 749, 360),\n    COL_TRI(746, 1266, 1265),\n    COL_TRI(746, 1265, 747),\n    COL_TRI(747, 1265, 744),\n    COL_TRI(266, 1267, 267),\n    COL_TRI(747, 744, 748),\n    COL_TRI(748, 744, 778),\n    COL_TRI(749, 358, 360),\n    COL_TRI(266, 750, 1267),\n    COL_TRI(750, 1268, 1269),\n    COL_TRI(750, 1269, 1267),\n    COL_TRI(751, 1271, 752),\n    COL_TRI(752, 1271, 1272),\n    COL_TRI(752, 1272, 753),\n    COL_TRI(753, 1272, 1273),\n    COL_TRI(753, 1273, 1274),\n    COL_TRI(751, 754, 1271),\n    COL_TRI(754, 774, 1275),\n    COL_TRI(754, 751, 774),\n    COL_TRI(755, 1276, 756),\n    COL_TRI(755, 1277, 1276),\n    COL_TRI(761, 1280, 762),\n    COL_TRI(756, 1276, 1278),\n    COL_TRI(756, 1278, 757),\n    COL_TRI(757, 1278, 759),\n    COL_TRI(757, 759, 758),\n    COL_TRI(758, 759, 767),\n    COL_TRI(759, 766, 767),\n    COL_TRI(760, 1279, 761),\n    COL_TRI(761, 1279, 1280),\n    COL_TRI(765, 1286, 1287),\n    COL_TRI(762, 1280, 1281),\n    COL_TRI(762, 1281, 1284),\n    COL_TRI(760, 1282, 1279),\n    COL_TRI(763, 1285, 764),\n    COL_TRI(764, 1285, 1286),\n    COL_TRI(764, 1286, 765),\n    COL_TRI(765, 1287, 1288),\n    COL_TRI(763, 1289, 1285),\n    COL_TRI(766, 769, 767),\n    COL_TRI(767, 769, 768),\n    COL_TRI(766, 1283, 769),\n    COL_TRI(768, 769, 763),\n    COL_TRI(769, 1289, 763),\n    COL_TRI(769, 1283, 1289),\n    COL_TRI(758, 767, 771),\n    COL_TRI(770, 763, 1284),\n    COL_TRI(770, 768, 763),\n    COL_TRI(767, 768, 771),\n    COL_TRI(771, 768, 770),\n    COL_TRI(771, 770, 772),\n    COL_TRI(772, 770, 773),\n    COL_TRI(773, 770, 1284),\n    COL_TRI(773, 1284, 1281),\n    COL_TRI(772, 773, 774),\n    COL_TRI(774, 773, 775),\n    COL_TRI(775, 773, 1281),\n    COL_TRI(774, 775, 1275),\n    COL_TRI(266, 270, 780),\n    COL_TRI(751, 758, 771),\n    COL_TRI(751, 771, 772),\n    COL_TRI(751, 772, 774),\n    COL_TRI(750, 780, 777),\n    COL_TRI(750, 777, 776),\n    COL_TRI(776, 777, 1290),\n    COL_TRI(777, 268, 1290),\n    COL_TRI(266, 780, 750),\n    COL_TRI(778, 267, 1267),\n    COL_TRI(778, 1267, 1270),\n    COL_TRI(779, 1291, 1266),\n    COL_TRI(779, 1266, 746),\n    COL_TRI(780, 117, 781),\n    COL_TRI(780, 270, 117),\n    COL_TRI(117, 1292, 781),\n    COL_TRI(117, 1293, 1292),\n    COL_TRI(269, 777, 1294),\n    COL_TRI(777, 780, 781),\n    COL_TRI(777, 781, 1294),\n    COL_TRI(781, 782, 1294),\n    COL_TRI(781, 1292, 782),\n    COL_TRI(782, 269, 1294),\n    COL_TRI(782, 783, 269),\n    COL_TRI(783, 117, 269),\n    COL_TRI(269, 268, 777),\n    COL_TRI(786, 821, 799),\n    COL_TRI(784, 1295, 785),\n    COL_TRI(785, 1295, 1291),\n    COL_TRI(785, 1291, 779),\n    COL_TRI(784, 1296, 1295),\n    COL_TRI(776, 1296, 784),\n    COL_TRI(776, 1290, 1296),\n    COL_TRI(748, 778, 1270),\n    COL_TRI(786, 799, 1297),\n    COL_TRI(790, 791, 1299),\n    COL_TRI(787, 786, 1297),\n    COL_TRI(787, 1297, 1298),\n    COL_TRI(788, 787, 797),\n    COL_TRI(787, 1298, 797),\n    COL_TRI(789, 1298, 806),\n    COL_TRI(789, 806, 808),\n    COL_TRI(789, 808, 812),\n    COL_TRI(789, 797, 1298),\n    COL_TRI(791, 792, 1299),\n    COL_TRI(792, 1300, 1299),\n    COL_TRI(792, 795, 1300),\n    COL_TRI(793, 1299, 1300),\n    COL_TRI(793, 790, 1299),\n    COL_TRI(794, 793, 1300),\n    COL_TRI(795, 794, 1300),\n    COL_TRI(796, 1301, 798),\n    COL_TRI(797, 798, 1301),\n    COL_TRI(796, 798, 812),\n    COL_TRI(798, 789, 812),\n    COL_TRI(798, 797, 789),\n    COL_TRI(799, 796, 812),\n    COL_TRI(796, 800, 1301),\n    COL_TRI(800, 796, 799),\n    COL_TRI(801, 1302, 1303),\n    COL_TRI(801, 1303, 1304),\n    COL_TRI(802, 1303, 1302),\n    COL_TRI(803, 1305, 1306),\n    COL_TRI(803, 1306, 1307),\n    COL_TRI(790, 793, 1311),\n    COL_TRI(804, 1309, 805),\n    COL_TRI(804, 1310, 1309),\n    COL_TRI(805, 1306, 1305),\n    COL_TRI(805, 1305, 804),\n    COL_TRI(804, 1305, 803),\n    COL_TRI(804, 803, 1310),\n    COL_TRI(799, 1314, 807),\n    COL_TRI(790, 1311, 1312),\n    COL_TRI(806, 1297, 808),\n    COL_TRI(806, 1298, 1297),\n    COL_TRI(807, 808, 1297),\n    COL_TRI(799, 807, 1297),\n    COL_TRI(807, 817, 808),\n    COL_TRI(808, 817, 1313),\n    COL_TRI(808, 1313, 812),\n    COL_TRI(809, 1315, 810),\n    COL_TRI(810, 1316, 809),\n    COL_TRI(810, 1317, 1316),\n    COL_TRI(811, 1318, 1319),\n    COL_TRI(811, 1319, 1320),\n    COL_TRI(811, 1320, 1321),\n    COL_TRI(812, 1313, 1314),\n    COL_TRI(812, 1314, 799),\n    COL_TRI(814, 1325, 816),\n    COL_TRI(801, 1304, 1322),\n    COL_TRI(801, 1322, 1323),\n    COL_TRI(802, 1308, 1303),\n    COL_TRI(813, 951, 814),\n    COL_TRI(813, 814, 816),\n    COL_TRI(814, 1324, 1325),\n    COL_TRI(807, 1324, 814),\n    COL_TRI(815, 813, 816),\n    COL_TRI(815, 816, 1326),\n    COL_TRI(816, 817, 1326),\n    COL_TRI(816, 1325, 817),\n    COL_TRI(817, 807, 818),\n    COL_TRI(817, 818, 1326),\n    COL_TRI(818, 815, 1326),\n    COL_TRI(818, 950, 815),\n    COL_TRI(814, 951, 950),\n    COL_TRI(814, 950, 818),\n    COL_TRI(807, 814, 818),\n    COL_TRI(819, 820, 1327),\n    COL_TRI(820, 787, 788),\n    COL_TRI(820, 788, 1327),\n    COL_TRI(821, 1327, 788),\n    COL_TRI(822, 1067, 1327),\n    COL_TRI(819, 1327, 1067),\n    COL_TRI(821, 822, 1327),\n    COL_TRI(822, 1328, 1067),\n    COL_TRI(786, 822, 821),\n    COL_TRI(786, 823, 822),\n    COL_TRI(823, 1328, 822),\n    COL_TRI(823, 1329, 1328),\n    COL_TRI(787, 820, 823),\n    COL_TRI(787, 823, 786),\n    COL_TRI(820, 1329, 823),\n    COL_TRI(820, 819, 1329),\n    COL_TRI(825, 11, 1330),\n    COL_TRI(9, 15, 12),\n    COL_TRI(9, 12, 11),\n    COL_TRI(10, 15, 9),\n    COL_TRI(11, 12, 13),\n    COL_TRI(11, 13, 8),\n    COL_TRI(10, 14, 15),\n    COL_TRI(8, 14, 10),\n    COL_TRI(8, 13, 14),\n    COL_TRI(824, 9, 825),\n    COL_TRI(825, 9, 11),\n    COL_TRI(826, 828, 13),\n    COL_TRI(11, 8, 1331),\n    COL_TRI(11, 1331, 1330),\n    COL_TRI(824, 10, 9),\n    COL_TRI(8, 824, 1331),\n    COL_TRI(8, 10, 824),\n    COL_TRI(826, 12, 1332),\n    COL_TRI(826, 13, 12),\n    COL_TRI(826, 1333, 828),\n    COL_TRI(831, 1336, 1335),\n    COL_TRI(827, 1332, 12),\n    COL_TRI(827, 12, 15),\n    COL_TRI(827, 1334, 1332),\n    COL_TRI(828, 14, 13),\n    COL_TRI(828, 829, 14),\n    COL_TRI(829, 15, 14),\n    COL_TRI(829, 830, 15),\n    COL_TRI(830, 827, 15),\n    COL_TRI(831, 828, 1333),\n    COL_TRI(831, 1335, 828),\n    COL_TRI(829, 828, 1335),\n    COL_TRI(831, 1337, 1336),\n    COL_TRI(832, 1334, 827),\n    COL_TRI(832, 835, 1338),\n    COL_TRI(832, 1339, 835),\n    COL_TRI(832, 827, 1339),\n    COL_TRI(829, 1335, 1340),\n    COL_TRI(833, 827, 830),\n    COL_TRI(833, 1339, 827),\n    COL_TRI(834, 1337, 1341),\n    COL_TRI(834, 1336, 1337),\n    COL_TRI(834, 1335, 1336),\n    COL_TRI(834, 1340, 1335),\n    COL_TRI(835, 833, 1342),\n    COL_TRI(835, 1339, 833),\n    COL_TRI(840, 1344, 1345),\n    COL_TRI(836, 1338, 835),\n    COL_TRI(836, 835, 1342),\n    COL_TRI(837, 389, 838),\n    COL_TRI(838, 389, 361),\n    COL_TRI(838, 361, 839),\n    COL_TRI(839, 361, 388),\n    COL_TRI(839, 388, 1343),\n    COL_TRI(837, 363, 389),\n    COL_TRI(841, 840, 1346),\n    COL_TRI(842, 1344, 1347),\n    COL_TRI(842, 1345, 1344),\n    COL_TRI(840, 1345, 1346),\n    COL_TRI(841, 1346, 1348),\n    COL_TRI(842, 1348, 1346),\n    COL_TRI(842, 1346, 1345),\n    COL_TRI(125, 557, 1349),\n    COL_TRI(844, 1351, 1352),\n    COL_TRI(125, 132, 557),\n    COL_TRI(557, 1151, 851),\n    COL_TRI(843, 1349, 851),\n    COL_TRI(843, 851, 1350),\n    COL_TRI(273, 851, 1151),\n    COL_TRI(557, 851, 1349),\n    COL_TRI(287, 273, 1151),\n    COL_TRI(844, 845, 1351),\n    COL_TRI(847, 1356, 1357),\n    COL_TRI(844, 1353, 1354),\n    COL_TRI(844, 1354, 845),\n    COL_TRI(845, 1354, 1355),\n    COL_TRI(845, 1355, 1351),\n    COL_TRI(846, 1355, 1354),\n    COL_TRI(846, 1354, 1353),\n    COL_TRI(848, 1358, 847),\n    COL_TRI(848, 847, 1359),\n    COL_TRI(847, 1358, 1356),\n    COL_TRI(272, 849, 850),\n    COL_TRI(272, 279, 849),\n    COL_TRI(849, 853, 1360),\n    COL_TRI(849, 1360, 850),\n    COL_TRI(843, 850, 1360),\n    COL_TRI(129, 126, 1360),\n    COL_TRI(129, 1360, 853),\n    COL_TRI(851, 122, 1350),\n    COL_TRI(843, 1350, 850),\n    COL_TRI(125, 843, 120),\n    COL_TRI(125, 1349, 843),\n    COL_TRI(850, 1350, 122),\n    COL_TRI(850, 122, 272),\n    COL_TRI(851, 273, 122),\n    COL_TRI(854, 281, 130),\n    COL_TRI(282, 852, 126),\n    COL_TRI(852, 1360, 126),\n    COL_TRI(852, 843, 1360),\n    COL_TRI(852, 857, 843),\n    COL_TRI(120, 857, 283),\n    COL_TRI(120, 843, 857),\n    COL_TRI(853, 854, 130),\n    COL_TRI(853, 130, 129),\n    COL_TRI(857, 858, 1362),\n    COL_TRI(854, 1361, 281),\n    COL_TRI(855, 279, 278),\n    COL_TRI(855, 849, 279),\n    COL_TRI(856, 855, 278),\n    COL_TRI(856, 278, 280),\n    COL_TRI(857, 852, 858),\n    COL_TRI(858, 860, 1362),\n    COL_TRI(858, 954, 860),\n    COL_TRI(852, 282, 131),\n    COL_TRI(852, 131, 858),\n    COL_TRI(131, 954, 858),\n    COL_TRI(131, 956, 954),\n    COL_TRI(859, 131, 284),\n    COL_TRI(860, 284, 1362),\n    COL_TRI(284, 283, 857),\n    COL_TRI(284, 857, 1362),\n    COL_TRI(849, 854, 853),\n    COL_TRI(849, 855, 854),\n    COL_TRI(855, 1361, 854),\n    COL_TRI(855, 856, 1361),\n    COL_TRI(861, 1356, 1358),\n    COL_TRI(861, 1358, 848),\n    COL_TRI(365, 391, 1363),\n    COL_TRI(365, 1363, 1364),\n    COL_TRI(391, 1365, 1363),\n    COL_TRI(391, 393, 1365),\n    COL_TRI(862, 1366, 394),\n    COL_TRI(862, 394, 396),\n    COL_TRI(863, 370, 403),\n    COL_TRI(863, 403, 1367),\n    COL_TRI(403, 402, 1368),\n    COL_TRI(403, 1368, 1367),\n    COL_TRI(397, 368, 1369),\n    COL_TRI(397, 1369, 1370),\n    COL_TRI(368, 1371, 1369),\n    COL_TRI(368, 399, 1371),\n    COL_TRI(864, 371, 401),\n    COL_TRI(864, 401, 1372),\n    COL_TRI(865, 1373, 1374),\n    COL_TRI(865, 1374, 922),\n    COL_TRI(866, 1375, 1373),\n    COL_TRI(866, 1373, 865),\n    COL_TRI(867, 1376, 868),\n    COL_TRI(868, 1376, 1377),\n    COL_TRI(868, 1377, 869),\n    COL_TRI(869, 1377, 1378),\n    COL_TRI(133, 1384, 367),\n    COL_TRI(869, 1378, 1379),\n    COL_TRI(867, 894, 1376),\n    COL_TRI(870, 1380, 1381),\n    COL_TRI(870, 1381, 871),\n    COL_TRI(870, 1382, 1380),\n    COL_TRI(871, 1383, 870),\n    COL_TRI(133, 367, 395),\n    COL_TRI(364, 392, 1385),\n    COL_TRI(364, 1385, 136),\n    COL_TRI(872, 881, 873),\n    COL_TRI(872, 873, 878),\n    COL_TRI(873, 874, 878),\n    COL_TRI(879, 881, 888),\n    COL_TRI(874, 877, 878),\n    COL_TRI(875, 876, 884),\n    COL_TRI(876, 885, 884),\n    COL_TRI(877, 874, 888),\n    COL_TRI(877, 888, 1386),\n    COL_TRI(878, 877, 1386),\n    COL_TRI(878, 1386, 872),\n    COL_TRI(880, 881, 872),\n    COL_TRI(879, 1387, 881),\n    COL_TRI(881, 880, 888),\n    COL_TRI(882, 875, 884),\n    COL_TRI(882, 887, 875),\n    COL_TRI(872, 1386, 880),\n    COL_TRI(883, 1388, 887),\n    COL_TRI(883, 887, 886),\n    COL_TRI(884, 885, 1389),\n    COL_TRI(885, 876, 886),\n    COL_TRI(885, 886, 1389),\n    COL_TRI(886, 889, 1389),\n    COL_TRI(887, 889, 886),\n    COL_TRI(884, 1389, 882),\n    COL_TRI(404, 138, 1391),\n    COL_TRI(888, 880, 1386),\n    COL_TRI(889, 887, 882),\n    COL_TRI(882, 1389, 889),\n    COL_TRI(400, 398, 1390),\n    COL_TRI(400, 1390, 295),\n    COL_TRI(404, 371, 138),\n    COL_TRI(890, 133, 891),\n    COL_TRI(890, 891, 1392),\n    COL_TRI(891, 296, 1393),\n    COL_TRI(891, 1393, 1392),\n    COL_TRI(290, 870, 891),\n    COL_TRI(864, 295, 138),\n    COL_TRI(864, 1394, 295),\n    COL_TRI(890, 1395, 136),\n    COL_TRI(400, 1393, 369),\n    COL_TRI(890, 136, 133),\n    COL_TRI(364, 1395, 1396),\n    COL_TRI(892, 137, 1396),\n    COL_TRI(892, 1396, 1397),\n    COL_TRI(364, 1396, 366),\n    COL_TRI(400, 1394, 1393),\n    COL_TRI(290, 1382, 870),\n    COL_TRI(893, 910, 913),\n    COL_TRI(893, 913, 1382),\n    COL_TRI(290, 893, 1382),\n    COL_TRI(290, 300, 893),\n    COL_TRI(892, 913, 910),\n    COL_TRI(892, 910, 299),\n    COL_TRI(894, 867, 1398),\n    COL_TRI(894, 1398, 1399),\n    COL_TRI(896, 1403, 1404),\n    COL_TRI(870, 1379, 1378),\n    COL_TRI(870, 1378, 891),\n    COL_TRI(301, 895, 1400),\n    COL_TRI(895, 906, 916),\n    COL_TRI(895, 916, 1400),\n    COL_TRI(302, 1401, 916),\n    COL_TRI(302, 916, 906),\n    COL_TRI(301, 1400, 1402),\n    COL_TRI(900, 1410, 898),\n    COL_TRI(896, 1405, 1403),\n    COL_TRI(897, 899, 1406),\n    COL_TRI(897, 1406, 1407),\n    COL_TRI(898, 897, 1407),\n    COL_TRI(898, 1407, 900),\n    COL_TRI(899, 1408, 1409),\n    COL_TRI(899, 1410, 1408),\n    COL_TRI(900, 1411, 1410),\n    COL_TRI(899, 904, 1410),\n    COL_TRI(898, 1410, 904),\n    COL_TRI(900, 1406, 1411),\n    COL_TRI(896, 1412, 901),\n    COL_TRI(896, 1404, 1412),\n    COL_TRI(901, 902, 1405),\n    COL_TRI(902, 903, 1403),\n    COL_TRI(902, 1403, 1405),\n    COL_TRI(901, 1405, 896),\n    COL_TRI(902, 905, 903),\n    COL_TRI(903, 905, 1412),\n    COL_TRI(903, 1412, 1413),\n    COL_TRI(903, 1413, 1414),\n    COL_TRI(901, 1412, 905),\n    COL_TRI(897, 904, 899),\n    COL_TRI(905, 902, 901),\n    COL_TRI(895, 301, 144),\n    COL_TRI(904, 897, 898),\n    COL_TRI(900, 1407, 1406),\n    COL_TRI(906, 907, 1415),\n    COL_TRI(906, 895, 907),\n    COL_TRI(907, 908, 1415),\n    COL_TRI(907, 1065, 908),\n    COL_TRI(297, 910, 1416),\n    COL_TRI(895, 144, 907),\n    COL_TRI(144, 1065, 907),\n    COL_TRI(144, 304, 1065),\n    COL_TRI(303, 302, 906),\n    COL_TRI(303, 906, 1415),\n    COL_TRI(908, 303, 1415),\n    COL_TRI(908, 145, 303),\n    COL_TRI(297, 299, 910),\n    COL_TRI(910, 911, 1416),\n    COL_TRI(909, 297, 1416),\n    COL_TRI(893, 300, 143),\n    COL_TRI(893, 143, 911),\n    COL_TRI(143, 298, 1417),\n    COL_TRI(143, 1417, 911),\n    COL_TRI(910, 893, 911),\n    COL_TRI(915, 1399, 1398),\n    COL_TRI(911, 1417, 909),\n    COL_TRI(911, 909, 1416),\n    COL_TRI(912, 1375, 866),\n    COL_TRI(912, 1418, 1375),\n    COL_TRI(913, 1418, 912),\n    COL_TRI(913, 1397, 1418),\n    COL_TRI(914, 1419, 915),\n    COL_TRI(915, 1419, 1399),\n    COL_TRI(919, 1372, 1422),\n    COL_TRI(914, 1420, 1419),\n    COL_TRI(916, 1420, 914),\n    COL_TRI(916, 1401, 1420),\n    COL_TRI(917, 1421, 918),\n    COL_TRI(918, 1421, 1402),\n    COL_TRI(918, 1402, 1400),\n    COL_TRI(917, 1422, 1421),\n    COL_TRI(919, 1422, 917),\n    COL_TRI(923, 406, 373),\n    COL_TRI(920, 1372, 919),\n    COL_TRI(920, 1423, 1372),\n    COL_TRI(921, 1423, 920),\n    COL_TRI(921, 1424, 1423),\n    COL_TRI(922, 1424, 921),\n    COL_TRI(922, 1374, 1424),\n    COL_TRI(923, 373, 925),\n    COL_TRI(924, 406, 923),\n    COL_TRI(409, 1428, 1426),\n    COL_TRI(925, 373, 408),\n    COL_TRI(925, 408, 1425),\n    COL_TRI(924, 372, 406),\n    COL_TRI(410, 1426, 1427),\n    COL_TRI(410, 409, 1426),\n    COL_TRI(409, 411, 1428),\n    COL_TRI(930, 1430, 949),\n    COL_TRI(926, 1429, 376),\n    COL_TRI(926, 376, 415),\n    COL_TRI(927, 377, 376),\n    COL_TRI(927, 376, 1429),\n    COL_TRI(928, 1430, 930),\n    COL_TRI(928, 930, 929),\n    COL_TRI(929, 930, 931),\n    COL_TRI(930, 949, 931),\n    COL_TRI(929, 931, 1431),\n    COL_TRI(931, 1432, 1431),\n    COL_TRI(932, 1433, 934),\n    COL_TRI(933, 932, 934),\n    COL_TRI(934, 1433, 1434),\n    COL_TRI(934, 1434, 1435),\n    COL_TRI(933, 934, 1435),\n    COL_TRI(935, 933, 1435),\n    COL_TRI(936, 1435, 1434),\n    COL_TRI(936, 935, 1435),\n    COL_TRI(936, 960, 1436),\n    COL_TRI(936, 1437, 960),\n    COL_TRI(940, 924, 1425),\n    COL_TRI(937, 1438, 938),\n    COL_TRI(938, 1438, 1439),\n    COL_TRI(938, 943, 939),\n    COL_TRI(938, 1439, 943),\n    COL_TRI(938, 939, 1440),\n    COL_TRI(937, 938, 1440),\n    COL_TRI(937, 942, 1438),\n    COL_TRI(939, 1425, 1441),\n    COL_TRI(939, 1441, 1440),\n    COL_TRI(939, 940, 1425),\n    COL_TRI(940, 1442, 1443),\n    COL_TRI(940, 1443, 924),\n    COL_TRI(944, 961, 932),\n    COL_TRI(941, 1443, 1445),\n    COL_TRI(941, 924, 1443),\n    COL_TRI(937, 1440, 1444),\n    COL_TRI(942, 937, 1444),\n    COL_TRI(943, 1442, 940),\n    COL_TRI(943, 940, 939),\n    COL_TRI(948, 1441, 1425),\n    COL_TRI(945, 962, 946),\n    COL_TRI(946, 962, 1446),\n    COL_TRI(946, 1446, 1447),\n    COL_TRI(947, 944, 1440),\n    COL_TRI(947, 1440, 1441),\n    COL_TRI(948, 947, 1441),\n    COL_TRI(950, 936, 1436),\n    COL_TRI(941, 948, 1425),\n    COL_TRI(941, 1425, 924),\n    COL_TRI(949, 813, 1445),\n    COL_TRI(813, 815, 1445),\n    COL_TRI(950, 1436, 1445),\n    COL_TRI(815, 950, 1445),\n    COL_TRI(951, 959, 936),\n    COL_TRI(950, 951, 936),\n    COL_TRI(952, 1448, 957),\n    COL_TRI(952, 955, 959),\n    COL_TRI(952, 959, 1448),\n    COL_TRI(953, 936, 955),\n    COL_TRI(860, 954, 955),\n    COL_TRI(954, 953, 955),\n    COL_TRI(955, 1443, 859),\n    COL_TRI(955, 859, 860),\n    COL_TRI(956, 946, 954),\n    COL_TRI(957, 1448, 375),\n    COL_TRI(958, 957, 375),\n    COL_TRI(959, 412, 375),\n    COL_TRI(959, 375, 1448),\n    COL_TRI(941, 947, 948),\n    COL_TRI(941, 944, 947),\n    COL_TRI(941, 1445, 1436),\n    COL_TRI(941, 1436, 944),\n    COL_TRI(413, 416, 1447),\n    COL_TRI(960, 961, 944),\n    COL_TRI(961, 970, 932),\n    COL_TRI(960, 944, 1436),\n    COL_TRI(413, 1446, 962),\n    COL_TRI(413, 962, 414),\n    COL_TRI(413, 1447, 1446),\n    COL_TRI(964, 946, 1439),\n    COL_TRI(956, 1439, 946),\n    COL_TRI(962, 945, 1444),\n    COL_TRI(962, 1444, 1440),\n    COL_TRI(945, 969, 1444),\n    COL_TRI(945, 965, 969),\n    COL_TRI(963, 945, 946),\n    COL_TRI(963, 965, 945),\n    COL_TRI(964, 963, 946),\n    COL_TRI(965, 966, 161),\n    COL_TRI(860, 859, 284),\n    COL_TRI(946, 953, 954),\n    COL_TRI(859, 956, 131),\n    COL_TRI(965, 161, 969),\n    COL_TRI(968, 967, 321),\n    COL_TRI(966, 319, 161),\n    COL_TRI(966, 1449, 319),\n    COL_TRI(963, 967, 966),\n    COL_TRI(963, 966, 965),\n    COL_TRI(967, 1449, 966),\n    COL_TRI(967, 968, 1449),\n    COL_TRI(967, 963, 964),\n    COL_TRI(967, 964, 321),\n    COL_TRI(973, 1451, 1450),\n    COL_TRI(969, 321, 964),\n    COL_TRI(969, 161, 321),\n    COL_TRI(968, 321, 320),\n    COL_TRI(970, 973, 1450),\n    COL_TRI(970, 1450, 1437),\n    COL_TRI(971, 1437, 1450),\n    COL_TRI(972, 1450, 1451),\n    COL_TRI(972, 971, 1450),\n    COL_TRI(960, 971, 974),\n    COL_TRI(971, 960, 1437),\n    COL_TRI(973, 1452, 1451),\n    COL_TRI(961, 974, 973),\n    COL_TRI(961, 973, 970),\n    COL_TRI(974, 1452, 973),\n    COL_TRI(974, 1453, 1452),\n    COL_TRI(975, 1454, 1455),\n    COL_TRI(971, 1453, 974),\n    COL_TRI(960, 974, 961),\n    COL_TRI(971, 972, 1453),\n    COL_TRI(975, 378, 1454),\n    COL_TRI(976, 378, 975),\n    COL_TRI(976, 419, 378),\n    COL_TRI(977, 1456, 978),\n    COL_TRI(978, 1456, 1457),\n    COL_TRI(978, 1457, 976),\n    COL_TRI(977, 1458, 1456),\n    COL_TRI(976, 975, 978),\n    COL_TRI(977, 978, 975),\n    COL_TRI(977, 975, 1455),\n    COL_TRI(419, 1457, 1459),\n    COL_TRI(419, 1459, 417),\n    COL_TRI(378, 418, 1454),\n    COL_TRI(979, 980, 1460),\n    COL_TRI(980, 998, 1460),\n    COL_TRI(981, 1461, 985),\n    COL_TRI(982, 981, 1462),\n    COL_TRI(984, 1461, 981),\n    COL_TRI(985, 1461, 1041),\n    COL_TRI(985, 1464, 1467),\n    COL_TRI(985, 1465, 1464),\n    COL_TRI(985, 1002, 1466),\n    COL_TRI(985, 1466, 1465),\n    COL_TRI(986, 987, 988),\n    COL_TRI(987, 1468, 988),\n    COL_TRI(988, 1468, 1469),\n    COL_TRI(988, 1469, 991),\n    COL_TRI(989, 988, 991),\n    COL_TRI(989, 986, 988),\n    COL_TRI(990, 989, 991),\n    COL_TRI(991, 1469, 990),\n    COL_TRI(992, 993, 982),\n    COL_TRI(993, 992, 995),\n    COL_TRI(993, 995, 1470),\n    COL_TRI(994, 995, 996),\n    COL_TRI(995, 992, 996),\n    COL_TRI(994, 1470, 995),\n    COL_TRI(994, 997, 1470),\n    COL_TRI(992, 982, 1462),\n    COL_TRI(996, 992, 1462),\n    COL_TRI(994, 996, 1018),\n    COL_TRI(983, 996, 1462),\n    COL_TRI(997, 994, 1471),\n    COL_TRI(994, 1018, 1471),\n    COL_TRI(983, 1462, 981),\n    COL_TRI(983, 981, 1463),\n    COL_TRI(998, 1472, 1473),\n    COL_TRI(999, 1473, 1474),\n    COL_TRI(998, 1473, 999),\n    COL_TRI(999, 1474, 1000),\n    COL_TRI(1000, 1474, 1475),\n    COL_TRI(1000, 1475, 1476),\n    COL_TRI(1001, 1477, 1478),\n    COL_TRI(1001, 1479, 1477),\n    COL_TRI(1002, 1479, 1001),\n    COL_TRI(1003, 1466, 1001),\n    COL_TRI(1003, 1001, 1476),\n    COL_TRI(1004, 1480, 1005),\n    COL_TRI(1005, 1480, 979),\n    COL_TRI(1005, 979, 1460),\n    COL_TRI(1004, 1481, 1480),\n    COL_TRI(1006, 1482, 1481),\n    COL_TRI(1006, 1481, 1004),\n    COL_TRI(1007, 1482, 1041),\n    COL_TRI(1008, 1041, 1482),\n    COL_TRI(1009, 1002, 1483),\n    COL_TRI(1002, 1001, 1466),\n    COL_TRI(990, 674, 669),\n    COL_TRI(990, 669, 1479),\n    COL_TRI(669, 668, 1006),\n    COL_TRI(669, 1006, 1479),\n    COL_TRI(1006, 668, 673),\n    COL_TRI(1006, 673, 1484),\n    COL_TRI(1010, 986, 989),\n    COL_TRI(1010, 989, 1009),\n    COL_TRI(1009, 1483, 1010),\n    COL_TRI(1011, 1014, 1013),\n    COL_TRI(1012, 1013, 1485),\n    COL_TRI(1014, 1011, 1486),\n    COL_TRI(1013, 1014, 1485),\n    COL_TRI(1015, 1014, 1486),\n    COL_TRI(1012, 1485, 1487),\n    COL_TRI(1016, 1015, 1487),\n    COL_TRI(1016, 1488, 1015),\n    COL_TRI(1017, 1489, 1018),\n    COL_TRI(1018, 1489, 1471),\n    COL_TRI(1017, 1018, 1490),\n    COL_TRI(1019, 983, 1463),\n    COL_TRI(1019, 1463, 1490),\n    COL_TRI(1019, 1488, 1016),\n    COL_TRI(1019, 1016, 983),\n    COL_TRI(1018, 1488, 1019),\n    COL_TRI(983, 1016, 1485),\n    COL_TRI(983, 1485, 996),\n    COL_TRI(1020, 1491, 154),\n    COL_TRI(158, 1020, 154),\n    COL_TRI(154, 1491, 1492),\n    COL_TRI(154, 1492, 150),\n    COL_TRI(314, 1493, 1020),\n    COL_TRI(314, 1020, 158),\n    COL_TRI(314, 157, 1021),\n    COL_TRI(314, 1021, 1493),\n    COL_TRI(1021, 157, 1494),\n    COL_TRI(1022, 305, 153),\n    COL_TRI(157, 312, 1494),\n    COL_TRI(156, 1495, 1494),\n    COL_TRI(156, 1494, 312),\n    COL_TRI(307, 1023, 1495),\n    COL_TRI(307, 1495, 156),\n    COL_TRI(1022, 1496, 305),\n    COL_TRI(142, 909, 1013),\n    COL_TRI(1023, 305, 1496),\n    COL_TRI(1023, 307, 305),\n    COL_TRI(1022, 153, 150),\n    COL_TRI(1022, 150, 1492),\n    COL_TRI(909, 1417, 1011),\n    COL_TRI(909, 1011, 1013),\n    COL_TRI(146, 1011, 1417),\n    COL_TRI(1012, 1026, 1013),\n    COL_TRI(142, 1013, 155),\n    COL_TRI(155, 1013, 1026),\n    COL_TRI(146, 1417, 298),\n    COL_TRI(155, 1026, 317),\n    COL_TRI(147, 1486, 1011),\n    COL_TRI(147, 1011, 146),\n    COL_TRI(1012, 1497, 1026),\n    COL_TRI(316, 1497, 1012),\n    COL_TRI(316, 1012, 308),\n    COL_TRI(1024, 1025, 160),\n    COL_TRI(1025, 1497, 316),\n    COL_TRI(1025, 316, 160),\n    COL_TRI(1024, 160, 159),\n    COL_TRI(1026, 1027, 315),\n    COL_TRI(1027, 318, 315),\n    COL_TRI(1026, 315, 317),\n    COL_TRI(1027, 1028, 318),\n    COL_TRI(1028, 1027, 1025),\n    COL_TRI(1027, 1026, 1497),\n    COL_TRI(1027, 1497, 1025),\n    COL_TRI(1028, 1025, 1024),\n    COL_TRI(909, 142, 297),\n    COL_TRI(313, 1465, 147),\n    COL_TRI(985, 1041, 1008),\n    COL_TRI(1029, 1498, 1030),\n    COL_TRI(1029, 1030, 1499),\n    COL_TRI(313, 311, 1467),\n    COL_TRI(313, 1467, 1464),\n    COL_TRI(313, 1464, 1465),\n    COL_TRI(308, 985, 1467),\n    COL_TRI(308, 1467, 311),\n    COL_TRI(1003, 1017, 1465),\n    COL_TRI(1003, 1500, 1017),\n    COL_TRI(1030, 1032, 1501),\n    COL_TRI(1030, 1501, 1499),\n    COL_TRI(1031, 1033, 1501),\n    COL_TRI(1032, 1056, 1501),\n    COL_TRI(1031, 1501, 1056),\n    COL_TRI(1033, 1499, 1501),\n    COL_TRI(1036, 1032, 1035),\n    COL_TRI(1033, 984, 1499),\n    COL_TRI(1032, 1036, 1056),\n    COL_TRI(1034, 1035, 1033),\n    COL_TRI(1035, 1461, 984),\n    COL_TRI(1035, 984, 1033),\n    COL_TRI(1034, 1033, 1031),\n    COL_TRI(1032, 1030, 1461),\n    COL_TRI(1032, 1461, 1035),\n    COL_TRI(1036, 1035, 1034),\n    COL_TRI(1037, 1038, 1040),\n    COL_TRI(1038, 1041, 1498),\n    COL_TRI(1038, 1498, 1040),\n    COL_TRI(1037, 1040, 1039),\n    COL_TRI(1039, 1040, 1043),\n    COL_TRI(1043, 1007, 1502),\n    COL_TRI(1040, 1498, 1029),\n    COL_TRI(1040, 1029, 1043),\n    COL_TRI(1039, 1043, 1042),\n    COL_TRI(1041, 1038, 1502),\n    COL_TRI(1041, 1502, 1007),\n    COL_TRI(1042, 1502, 1057),\n    COL_TRI(1042, 1043, 1502),\n    COL_TRI(1038, 1057, 1502),\n    COL_TRI(1002, 1503, 1504),\n    COL_TRI(1043, 1029, 1007),\n    COL_TRI(1038, 1037, 1057),\n    COL_TRI(1018, 1014, 1488),\n    COL_TRI(996, 1485, 1014),\n    COL_TRI(996, 1014, 1018),\n    COL_TRI(1002, 1044, 1503),\n    COL_TRI(1048, 1046, 1506),\n    COL_TRI(1044, 1505, 1045),\n    COL_TRI(1044, 1045, 1503),\n    COL_TRI(1045, 1048, 1506),\n    COL_TRI(1045, 1505, 1048),\n    COL_TRI(1046, 1047, 1507),\n    COL_TRI(1047, 993, 1507),\n    COL_TRI(1052, 1509, 1054),\n    COL_TRI(1046, 1507, 1506),\n    COL_TRI(1049, 422, 1050),\n    COL_TRI(1050, 422, 423),\n    COL_TRI(1050, 423, 1508),\n    COL_TRI(421, 420, 422),\n    COL_TRI(1049, 421, 422),\n    COL_TRI(1051, 421, 1049),\n    COL_TRI(1051, 379, 421),\n    COL_TRI(732, 731, 261),\n    COL_TRI(1052, 1510, 1509),\n    COL_TRI(1053, 1510, 1052),\n    COL_TRI(1053, 1511, 1510),\n    COL_TRI(1054, 1509, 1055),\n    COL_TRI(1054, 1055, 1066),\n    COL_TRI(1055, 1453, 1066),\n    COL_TRI(1055, 1452, 1453),\n    COL_TRI(783, 1293, 117),\n    COL_TRI(731, 732, 1512),\n    COL_TRI(731, 1258, 113),\n    COL_TRI(1036, 1039, 1042),\n    COL_TRI(1056, 1036, 1042),\n    COL_TRI(168, 318, 1028),\n    COL_TRI(1031, 1028, 1024),\n    COL_TRI(1024, 159, 163),\n    COL_TRI(1031, 1024, 163),\n    COL_TRI(1058, 733, 1514),\n    COL_TRI(733, 1096, 1514),\n    COL_TRI(733, 1065, 1096),\n    COL_TRI(1059, 1096, 1065),\n    COL_TRI(733, 1058, 111),\n    COL_TRI(1063, 1064, 1517),\n    COL_TRI(1060, 319, 1449),\n    COL_TRI(1060, 1449, 1069),\n    COL_TRI(1061, 1515, 1516),\n    COL_TRI(1061, 1064, 1515),\n    COL_TRI(1061, 1517, 1064),\n    COL_TRI(1061, 1062, 1517),\n    COL_TRI(1062, 1518, 1517),\n    COL_TRI(1062, 1519, 1518),\n    COL_TRI(1063, 1102, 1064),\n    COL_TRI(1064, 436, 1515),\n    COL_TRI(1064, 433, 436),\n    COL_TRI(434, 433, 1102),\n    COL_TRI(430, 1518, 428),\n    COL_TRI(430, 1517, 1518),\n    COL_TRI(430, 1520, 1063),\n    COL_TRI(430, 432, 1520),\n    COL_TRI(908, 1254, 256),\n    COL_TRI(429, 428, 1518),\n    COL_TRI(434, 1102, 1521),\n    COL_TRI(1065, 304, 1059),\n    COL_TRI(908, 256, 145),\n    COL_TRI(1066, 1453, 819),\n    COL_TRI(1066, 819, 1068),\n    COL_TRI(972, 1328, 1329),\n    COL_TRI(972, 1451, 1328),\n    COL_TRI(1067, 1522, 819),\n    COL_TRI(1068, 819, 1522),\n    COL_TRI(1069, 856, 1092),\n    COL_TRI(1069, 1449, 856),\n    COL_TRI(1071, 424, 1524),\n    COL_TRI(280, 1092, 856),\n    COL_TRI(280, 1523, 1092),\n    COL_TRI(281, 1361, 968),\n    COL_TRI(281, 968, 320),\n    COL_TRI(429, 1518, 1519),\n    COL_TRI(1070, 1071, 1524),\n    COL_TRI(1071, 425, 424),\n    COL_TRI(424, 1525, 1524),\n    COL_TRI(424, 427, 1525),\n    COL_TRI(1070, 1524, 1525),\n    COL_TRI(732, 1513, 1512),\n    COL_TRI(732, 1292, 1073),\n    COL_TRI(732, 1073, 1513),\n    COL_TRI(1037, 1072, 1073),\n    COL_TRI(1057, 1037, 1073),\n    COL_TRI(1057, 1073, 168),\n    COL_TRI(782, 1257, 1258),\n    COL_TRI(782, 1258, 783),\n    COL_TRI(1072, 1526, 1073),\n    COL_TRI(1072, 1527, 1526),\n    COL_TRI(1080, 1530, 1531),\n    COL_TRI(1073, 1292, 1074),\n    COL_TRI(1074, 1292, 1293),\n    COL_TRI(1075, 1078, 1528),\n    COL_TRI(1076, 1078, 1075),\n    COL_TRI(1077, 1528, 1078),\n    COL_TRI(1078, 1076, 1077),\n    COL_TRI(1079, 1081, 1080),\n    COL_TRI(1080, 1081, 1529),\n    COL_TRI(1083, 1529, 1082),\n    COL_TRI(1081, 1079, 1082),\n    COL_TRI(1082, 1529, 1081),\n    COL_TRI(1075, 1528, 1532),\n    COL_TRI(1075, 1532, 1533),\n    COL_TRI(1076, 1075, 1534),\n    COL_TRI(1080, 1529, 1530),\n    COL_TRI(1082, 1536, 1083),\n    COL_TRI(1082, 1079, 1536),\n    COL_TRI(1079, 1538, 1536),\n    COL_TRI(1079, 1080, 1538),\n    COL_TRI(1083, 1535, 1529),\n    COL_TRI(1077, 1537, 1084),\n    COL_TRI(1077, 1076, 1537),\n    COL_TRI(1076, 1534, 1537),\n    COL_TRI(1068, 1540, 1085),\n    COL_TRI(1084, 1528, 1077),\n    COL_TRI(1084, 1539, 1528),\n    COL_TRI(1083, 1538, 1535),\n    COL_TRI(1084, 1537, 1534),\n    COL_TRI(1084, 1534, 1539),\n    COL_TRI(1083, 1536, 1538),\n    COL_TRI(1068, 1522, 1540),\n    COL_TRI(1085, 1540, 1541),\n    COL_TRI(1085, 1541, 1086),\n    COL_TRI(1086, 1512, 1513),\n    COL_TRI(1086, 1541, 1512),\n    COL_TRI(1087, 1542, 1088),\n    COL_TRI(1088, 1060, 1069),\n    COL_TRI(1088, 1542, 1060),\n    COL_TRI(1092, 1523, 1546),\n    COL_TRI(1087, 1543, 1542),\n    COL_TRI(1089, 1543, 1087),\n    COL_TRI(1089, 1544, 1543),\n    COL_TRI(1090, 1545, 1091),\n    COL_TRI(1091, 1058, 1514),\n    COL_TRI(1091, 1545, 1058),\n    COL_TRI(1090, 1546, 1545),\n    COL_TRI(1092, 1546, 1090),\n    COL_TRI(1097, 1552, 1553),\n    COL_TRI(1093, 1547, 1548),\n    COL_TRI(1093, 1548, 1094),\n    COL_TRI(1094, 1548, 1549),\n    COL_TRI(1094, 1549, 1095),\n    COL_TRI(1095, 1550, 1551),\n    COL_TRI(1095, 1549, 1550),\n    COL_TRI(1096, 1552, 1097),\n    COL_TRI(1096, 1059, 1552),\n    COL_TRI(1097, 1553, 1098),\n    COL_TRI(1098, 1553, 1554),\n    COL_TRI(1098, 1554, 1555),\n    COL_TRI(1099, 1556, 1557),\n    COL_TRI(1099, 1558, 1556),\n    COL_TRI(1099, 1559, 1100),\n    COL_TRI(1099, 1557, 1559),\n    COL_TRI(1100, 1559, 1560),\n    COL_TRI(1101, 1100, 1560),\n    COL_TRI(1102, 1105, 1100),\n    COL_TRI(1102, 1100, 1101),\n    COL_TRI(1105, 1556, 1558),\n    COL_TRI(1107, 1562, 1564),\n    COL_TRI(1103, 1105, 1104),\n    COL_TRI(1104, 1105, 1102),\n    COL_TRI(1105, 1103, 1556),\n    COL_TRI(1102, 1063, 1106),\n    COL_TRI(1102, 1106, 1104),\n    COL_TRI(1106, 1561, 1104),\n    COL_TRI(1107, 1108, 1562),\n    COL_TRI(1108, 1561, 1106),\n    COL_TRI(1108, 1106, 1562),\n    COL_TRI(1063, 1563, 1106),\n    COL_TRI(1109, 1563, 1074),\n    COL_TRI(1109, 1564, 1563),\n    COL_TRI(1109, 1107, 1564),\n    COL_TRI(1063, 1074, 1563),\n    COL_TRI(1110, 1565, 1113),\n    COL_TRI(1110, 1566, 1565),\n    COL_TRI(1111, 1566, 1110),\n    COL_TRI(1112, 1111, 1110),\n    COL_TRI(1063, 1112, 1110),\n    COL_TRI(1063, 1110, 1113),\n    COL_TRI(1057, 168, 1028),\n    COL_TRI(1031, 1057, 1028),\n    COL_TRI(1113, 1565, 1074),\n    COL_TRI(1063, 1113, 1074),\n    COL_TRI(1114, 1567, 1568),\n    COL_TRI(1115, 1114, 1116),\n    COL_TRI(1115, 1567, 1114),\n    COL_TRI(1114, 1569, 1116),\n    COL_TRI(1114, 1568, 1569),\n    COL_TRI(1116, 1570, 1115),\n    COL_TRI(555, 188, 1544),\n    COL_TRI(1037, 1034, 1072),\n    COL_TRI(1034, 1031, 1072),\n    COL_TRI(1031, 163, 1072),\n    COL_TRI(1117, 1053, 1072),\n    COL_TRI(554, 1117, 1072),\n    COL_TRI(163, 554, 1072),\n    COL_TRI(163, 189, 554),\n    COL_TRI(554, 555, 1117),\n    COL_TRI(1117, 1511, 1053),\n    COL_TRI(555, 1544, 1117),\n    COL_TRI(426, 382, 1571),\n    COL_TRI(382, 1572, 1571),\n    COL_TRI(382, 381, 1572),\n    COL_TRI(426, 1571, 1573),\n    COL_TRI(1118, 387, 1574),\n    COL_TRI(1118, 435, 387),\n    COL_TRI(387, 1575, 1574),\n    COL_TRI(387, 386, 1575),\n    COL_TRI(384, 1576, 1577),\n    COL_TRI(384, 383, 1576),\n    COL_TRI(385, 384, 1577),\n    COL_TRI(385, 1577, 1578),\n    COL_TRI(431, 385, 1578),\n    COL_TRI(431, 1578, 1579),\n    COL_TRI(1119, 1580, 630),\n    COL_TRI(1119, 1581, 1580),\n    COL_TRI_INIT(SURFACE_INTANGIBLE, 18),\n    COL_TRI(437, 438, 439),\n    COL_TRI(439, 440, 441),\n    COL_TRI(439, 441, 442),\n    COL_TRI(443, 444, 441),\n    COL_TRI(443, 445, 444),\n    COL_TRI(437, 446, 438),\n    COL_TRI(447, 448, 449),\n    COL_TRI(447, 449, 450),\n    COL_TRI(451, 456, 457),\n    COL_TRI(452, 451, 457),\n    COL_TRI(452, 457, 454),\n    COL_TRI(453, 458, 452),\n    COL_TRI(452, 454, 459),\n    COL_TRI(453, 452, 459),\n    COL_TRI(454, 460, 461),\n    COL_TRI(454, 461, 459),\n    COL_TRI(455, 462, 463),\n    COL_TRI(455, 464, 462),\n    COL_TRI_INIT(SURFACE_VERY_SLIPPERY, 58),\n    COL_TRI(347, 348, 349),\n    COL_TRI(348, 350, 349),\n    COL_TRI(347, 349, 351),\n    COL_TRI(352, 347, 351),\n    COL_TRI(353, 354, 355),\n    COL_TRI(353, 356, 354),\n    COL_TRI(357, 358, 359),\n    COL_TRI(357, 360, 358),\n    COL_TRI(367, 394, 395),\n    COL_TRI(361, 362, 388),\n    COL_TRI(362, 361, 389),\n    COL_TRI(362, 389, 390),\n    COL_TRI(363, 390, 389),\n    COL_TRI(364, 366, 391),\n    COL_TRI(365, 364, 391),\n    COL_TRI(365, 392, 364),\n    COL_TRI(366, 393, 391),\n    COL_TRI(370, 371, 403),\n    COL_TRI(367, 396, 394),\n    COL_TRI(368, 397, 398),\n    COL_TRI(369, 399, 368),\n    COL_TRI(369, 368, 400),\n    COL_TRI(368, 398, 400),\n    COL_TRI(370, 401, 371),\n    COL_TRI(371, 402, 403),\n    COL_TRI(371, 404, 402),\n    COL_TRI(372, 405, 406),\n    COL_TRI(373, 406, 405),\n    COL_TRI(373, 405, 407),\n    COL_TRI(373, 407, 408),\n    COL_TRI(374, 375, 409),\n    COL_TRI(374, 409, 410),\n    COL_TRI(375, 411, 409),\n    COL_TRI(375, 412, 411),\n    COL_TRI(376, 413, 414),\n    COL_TRI(376, 414, 415),\n    COL_TRI(376, 377, 413),\n    COL_TRI(377, 416, 413),\n    COL_TRI(378, 417, 418),\n    COL_TRI(378, 419, 417),\n    COL_TRI(379, 380, 420),\n    COL_TRI(379, 420, 421),\n    COL_TRI(380, 422, 420),\n    COL_TRI(380, 423, 422),\n    COL_TRI(381, 382, 424),\n    COL_TRI(381, 424, 425),\n    COL_TRI(382, 426, 427),\n    COL_TRI(382, 427, 424),\n    COL_TRI(383, 428, 429),\n    COL_TRI(383, 384, 428),\n    COL_TRI(384, 385, 430),\n    COL_TRI(384, 430, 428),\n    COL_TRI(385, 431, 432),\n    COL_TRI(385, 432, 430),\n    COL_TRI(386, 387, 433),\n    COL_TRI(386, 433, 434),\n    COL_TRI(387, 435, 436),\n    COL_TRI(387, 436, 433),\n    COL_TRI_INIT(SURFACE_MGR_MUSIC, 6),\n    COL_TRI(335, 336, 337),\n    COL_TRI(335, 338, 336),\n    COL_TRI(339, 340, 341),\n    COL_TRI(339, 342, 340),\n    COL_TRI(343, 344, 345),\n    COL_TRI(343, 345, 346),\n    COL_TRI_INIT(SURFACE_NOISE_DEFAULT, 304),\n    COL_TRI(16, 17, 18),\n    COL_TRI(17, 19, 18),\n    COL_TRI(17, 20, 19),\n    COL_TRI(20, 21, 19),\n    COL_TRI(21, 22, 19),\n    COL_TRI(22, 18, 19),\n    COL_TRI(16, 18, 23),\n    COL_TRI(18, 24, 25),\n    COL_TRI(22, 24, 18),\n    COL_TRI(23, 18, 25),\n    COL_TRI(26, 27, 16),\n    COL_TRI(27, 26, 28),\n    COL_TRI(29, 27, 31),\n    COL_TRI(33, 27, 32),\n    COL_TRI(33, 32, 177),\n    COL_TRI(27, 33, 34),\n    COL_TRI(35, 31, 34),\n    COL_TRI(31, 27, 34),\n    COL_TRI(17, 31, 178),\n    COL_TRI(36, 178, 31),\n    COL_TRI(35, 36, 31),\n    COL_TRI(37, 32, 38),\n    COL_TRI(37, 177, 32),\n    COL_TRI(38, 49, 37),\n    COL_TRI(29, 30, 27),\n    COL_TRI(27, 28, 32),\n    COL_TRI(26, 39, 28),\n    COL_TRI(23, 26, 16),\n    COL_TRI(26, 40, 39),\n    COL_TRI(36, 41, 178),\n    COL_TRI(17, 178, 20),\n    COL_TRI(41, 42, 178),\n    COL_TRI(42, 180, 178),\n    COL_TRI(40, 179, 39),\n    COL_TRI(43, 44, 181),\n    COL_TRI(43, 182, 44),\n    COL_TRI(44, 182, 49),\n    COL_TRI(38, 44, 49),\n    COL_TRI(45, 36, 35),\n    COL_TRI(46, 45, 35),\n    COL_TRI(47, 45, 46),\n    COL_TRI(35, 34, 183),\n    COL_TRI(48, 47, 46),\n    COL_TRI(48, 181, 47),\n    COL_TRI(43, 181, 48),\n    COL_TRI(34, 184, 183),\n    COL_TRI(49, 50, 37),\n    COL_TRI(50, 185, 37),\n    COL_TRI(51, 186, 52),\n    COL_TRI(51, 52, 187),\n    COL_TRI(55, 195, 56),\n    COL_TRI(52, 188, 187),\n    COL_TRI(52, 189, 188),\n    COL_TRI(53, 190, 191),\n    COL_TRI(53, 192, 190),\n    COL_TRI(54, 53, 191),\n    COL_TRI(54, 191, 193),\n    COL_TRI(55, 194, 195),\n    COL_TRI(55, 56, 196),\n    COL_TRI(62, 63, 200),\n    COL_TRI(56, 57, 196),\n    COL_TRI(56, 60, 57),\n    COL_TRI(57, 197, 196),\n    COL_TRI(58, 57, 198),\n    COL_TRI(58, 197, 57),\n    COL_TRI(59, 58, 198),\n    COL_TRI(60, 198, 57),\n    COL_TRI(60, 59, 198),\n    COL_TRI(61, 199, 62),\n    COL_TRI(61, 62, 200),\n    COL_TRI(67, 206, 207),\n    COL_TRI(63, 201, 202),\n    COL_TRI(63, 202, 200),\n    COL_TRI(64, 61, 200),\n    COL_TRI(64, 200, 202),\n    COL_TRI(65, 66, 64),\n    COL_TRI(66, 203, 64),\n    COL_TRI(61, 64, 203),\n    COL_TRI(61, 203, 204),\n    COL_TRI(65, 64, 202),\n    COL_TRI(61, 204, 199),\n    COL_TRI(65, 202, 201),\n    COL_TRI(67, 205, 206),\n    COL_TRI(68, 207, 208),\n    COL_TRI(68, 67, 207),\n    COL_TRI(69, 209, 210),\n    COL_TRI(69, 210, 211),\n    COL_TRI(70, 69, 212),\n    COL_TRI(69, 71, 212),\n    COL_TRI(71, 213, 73),\n    COL_TRI(71, 73, 212),\n    COL_TRI(72, 70, 212),\n    COL_TRI(72, 212, 73),\n    COL_TRI(72, 73, 214),\n    COL_TRI(73, 213, 214),\n    COL_TRI(72, 214, 215),\n    COL_TRI(74, 216, 217),\n    COL_TRI(74, 217, 82),\n    COL_TRI(75, 76, 218),\n    COL_TRI(76, 219, 220),\n    COL_TRI(76, 220, 218),\n    COL_TRI(77, 218, 221),\n    COL_TRI(77, 75, 218),\n    COL_TRI(78, 222, 80),\n    COL_TRI(78, 223, 222),\n    COL_TRI(79, 219, 222),\n    COL_TRI(79, 222, 223),\n    COL_TRI(78, 80, 215),\n    COL_TRI(80, 72, 215),\n    COL_TRI(79, 220, 219),\n    COL_TRI(81, 224, 225),\n    COL_TRI(81, 226, 224),\n    COL_TRI(81, 225, 227),\n    COL_TRI(83, 233, 77),\n    COL_TRI(82, 230, 81),\n    COL_TRI(82, 81, 231),\n    COL_TRI(81, 228, 229),\n    COL_TRI(81, 227, 228),\n    COL_TRI(81, 229, 231),\n    COL_TRI(83, 232, 233),\n    COL_TRI(83, 234, 232),\n    COL_TRI(83, 77, 221),\n    COL_TRI(90, 92, 95),\n    COL_TRI(84, 235, 236),\n    COL_TRI(84, 237, 235),\n    COL_TRI(85, 86, 87),\n    COL_TRI(86, 238, 87),\n    COL_TRI(87, 238, 239),\n    COL_TRI(87, 239, 89),\n    COL_TRI(88, 87, 89),\n    COL_TRI(88, 85, 87),\n    COL_TRI(88, 89, 240),\n    COL_TRI(89, 239, 240),\n    COL_TRI(93, 90, 91),\n    COL_TRI(90, 95, 241),\n    COL_TRI(91, 90, 241),\n    COL_TRI(92, 90, 242),\n    COL_TRI(94, 92, 102),\n    COL_TRI(92, 242, 102),\n    COL_TRI(95, 243, 241),\n    COL_TRI(95, 244, 243),\n    COL_TRI(91, 241, 243),\n    COL_TRI(91, 243, 244),\n    COL_TRI(91, 244, 96),\n    COL_TRI(96, 245, 91),\n    COL_TRI(93, 91, 246),\n    COL_TRI(94, 102, 247),\n    COL_TRI(97, 245, 96),\n    COL_TRI(98, 249, 99),\n    COL_TRI(99, 249, 250),\n    COL_TRI(99, 250, 97),\n    COL_TRI(97, 250, 245),\n    COL_TRI(98, 100, 249),\n    COL_TRI(94, 100, 98),\n    COL_TRI(94, 247, 100),\n    COL_TRI(100, 247, 251),\n    COL_TRI(101, 100, 251),\n    COL_TRI(107, 106, 253),\n    COL_TRI(102, 248, 247),\n    COL_TRI(102, 93, 248),\n    COL_TRI(93, 246, 248),\n    COL_TRI(103, 105, 104),\n    COL_TRI(103, 104, 251),\n    COL_TRI(104, 101, 251),\n    COL_TRI(105, 252, 104),\n    COL_TRI(106, 108, 253),\n    COL_TRI(108, 254, 255),\n    COL_TRI(108, 255, 253),\n    COL_TRI(109, 253, 255),\n    COL_TRI(109, 107, 253),\n    COL_TRI(110, 109, 255),\n    COL_TRI(110, 255, 254),\n    COL_TRI(111, 256, 112),\n    COL_TRI(111, 112, 257),\n    COL_TRI(112, 258, 257),\n    COL_TRI(112, 259, 258),\n    COL_TRI(117, 268, 269),\n    COL_TRI(113, 260, 261),\n    COL_TRI(113, 262, 260),\n    COL_TRI(114, 263, 264),\n    COL_TRI(114, 115, 263),\n    COL_TRI(115, 114, 265),\n    COL_TRI(114, 264, 266),\n    COL_TRI(114, 266, 267),\n    COL_TRI(114, 267, 265),\n    COL_TRI(116, 115, 265),\n    COL_TRI(116, 263, 115),\n    COL_TRI(117, 270, 268),\n    COL_TRI(118, 121, 122),\n    COL_TRI(118, 122, 271),\n    COL_TRI(119, 121, 118),\n    COL_TRI(120, 118, 125),\n    COL_TRI(120, 119, 118),\n    COL_TRI(118, 271, 125),\n    COL_TRI(121, 127, 122),\n    COL_TRI(122, 127, 128),\n    COL_TRI(122, 128, 272),\n    COL_TRI(123, 271, 122),\n    COL_TRI(123, 122, 273),\n    COL_TRI(124, 274, 271),\n    COL_TRI(125, 271, 274),\n    COL_TRI(124, 271, 123),\n    COL_TRI(123, 273, 124),\n    COL_TRI(119, 275, 121),\n    COL_TRI(126, 121, 275),\n    COL_TRI(121, 126, 127),\n    COL_TRI(127, 276, 277),\n    COL_TRI(127, 277, 128),\n    COL_TRI(126, 276, 127),\n    COL_TRI(131, 283, 284),\n    COL_TRI(128, 277, 272),\n    COL_TRI(129, 130, 278),\n    COL_TRI(129, 278, 279),\n    COL_TRI(130, 280, 278),\n    COL_TRI(130, 281, 280),\n    COL_TRI(131, 282, 283),\n    COL_TRI(138, 291, 141),\n    COL_TRI(132, 285, 286),\n    COL_TRI(132, 287, 285),\n    COL_TRI(133, 288, 134),\n    COL_TRI(134, 289, 290),\n    COL_TRI(133, 134, 290),\n    COL_TRI(135, 289, 134),\n    COL_TRI(135, 134, 288),\n    COL_TRI(136, 137, 288),\n    COL_TRI(137, 135, 288),\n    COL_TRI(133, 136, 288),\n    COL_TRI(142, 298, 143),\n    COL_TRI(139, 292, 138),\n    COL_TRI(138, 141, 293),\n    COL_TRI(140, 139, 293),\n    COL_TRI(141, 140, 293),\n    COL_TRI(138, 293, 139),\n    COL_TRI(140, 294, 139),\n    COL_TRI(139, 294, 292),\n    COL_TRI(138, 295, 296),\n    COL_TRI(138, 296, 291),\n    COL_TRI(142, 143, 297),\n    COL_TRI(143, 299, 297),\n    COL_TRI(143, 300, 299),\n    COL_TRI(144, 301, 302),\n    COL_TRI(144, 302, 303),\n    COL_TRI(145, 144, 303),\n    COL_TRI(145, 304, 144),\n    COL_TRI(146, 148, 149),\n    COL_TRI(147, 146, 149),\n    COL_TRI(148, 305, 306),\n    COL_TRI(148, 306, 149),\n    COL_TRI(149, 306, 307),\n    COL_TRI(147, 149, 307),\n    COL_TRI(150, 151, 308),\n    COL_TRI(151, 309, 308),\n    COL_TRI(152, 309, 151),\n    COL_TRI(150, 153, 151),\n    COL_TRI(153, 152, 151),\n    COL_TRI(152, 310, 309),\n    COL_TRI(154, 308, 311),\n    COL_TRI(155, 310, 152),\n    COL_TRI(153, 155, 152),\n    COL_TRI(156, 312, 313),\n    COL_TRI(156, 313, 147),\n    COL_TRI(157, 311, 313),\n    COL_TRI(161, 319, 320),\n    COL_TRI(158, 154, 311),\n    COL_TRI(157, 314, 311),\n    COL_TRI(159, 160, 315),\n    COL_TRI(160, 316, 317),\n    COL_TRI(160, 317, 315),\n    COL_TRI(159, 315, 318),\n    COL_TRI(161, 320, 321),\n    COL_TRI(162, 322, 323),\n    COL_TRI(163, 324, 162),\n    COL_TRI(162, 324, 322),\n    COL_TRI(164, 167, 325),\n    COL_TRI(164, 325, 326),\n    COL_TRI(165, 164, 326),\n    COL_TRI(165, 327, 164),\n    COL_TRI(166, 329, 330),\n    COL_TRI(166, 167, 169),\n    COL_TRI(166, 323, 167),\n    COL_TRI(167, 323, 322),\n    COL_TRI(168, 167, 322),\n    COL_TRI(168, 325, 167),\n    COL_TRI(165, 328, 169),\n    COL_TRI(165, 169, 327),\n    COL_TRI(169, 328, 329),\n    COL_TRI(166, 169, 329),\n    COL_TRI(166, 173, 176),\n    COL_TRI(166, 176, 323),\n    COL_TRI(166, 330, 331),\n    COL_TRI(166, 331, 332),\n    COL_TRI(170, 332, 331),\n    COL_TRI(170, 171, 332),\n    COL_TRI(171, 170, 172),\n    COL_TRI(171, 172, 173),\n    COL_TRI(172, 174, 173),\n    COL_TRI(173, 333, 176),\n    COL_TRI(174, 333, 173),\n    COL_TRI(174, 175, 333),\n    COL_TRI(175, 334, 176),\n    COL_TRI(175, 176, 333),\n    COL_TRI(176, 334, 163),\n    COL_TRI(176, 163, 162),\n    COL_TRI(176, 162, 323),\n    COL_TRI_INIT(SURFACE_VANISH_CAP_WALLS, 8),\n    COL_TRI(12, 13, 14),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI(4, 5, 6),\n    COL_TRI(4, 7, 5),\n    COL_TRI(8, 9, 10),\n    COL_TRI(8, 11, 9),\n    COL_TRI(12, 14, 15),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(26),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_null_start,   /*pos*/  1434,  -204,  4710, /*yaw*/ 128), // unused, probably an early way to set initial position\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_haunted_door, /*pos*/     0, -2457,  2099, /*yaw*/ 128),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_haunted_door, /*pos*/ -1996, -2457,   205, /*yaw*/ 192),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_haunted_door, /*pos*/  1587, -2457,   205, /*yaw*/  64),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_haunted_door, /*pos*/ -2136,  -204,  4527, /*yaw*/ 224),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_haunted_door, /*pos*/     0, -2457,  4659, /*yaw*/ 128),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_haunted_door, /*pos*/  2099,  1741,   486, /*yaw*/  64),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_haunted_door, /*pos*/   589,  1922,  1894, /*yaw*/   0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_haunted_door, /*pos*/   742,  1922,  1894, /*yaw*/ 128),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_haunted_door, /*pos*/ -1970,  1024,  1075, /*yaw*/ 128),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_haunted_door, /*pos*/ -2021,     0,  1075, /*yaw*/ 128),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_haunted_door, /*pos*/  2099,   819,  1818, /*yaw*/ 192),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_haunted_door, /*pos*/  3354,     0,  1075, /*yaw*/   0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_haunted_door, /*pos*/   742,     0,  2099, /*yaw*/ 128),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_haunted_door, /*pos*/   589,     0,  2099, /*yaw*/   0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_haunted_door, /*pos*/  2099,     0,  1459, /*yaw*/ 192),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_haunted_door, /*pos*/   179,   819,   -50, /*yaw*/   0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_haunted_door, /*pos*/  2099,   819,   486, /*yaw*/ 192),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_haunted_door, /*pos*/   435,     0,   -50, /*yaw*/   0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_haunted_door, /*pos*/  1613,     0,   -50, /*yaw*/   0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_haunted_door, /*pos*/  1613,   819,   -50, /*yaw*/   0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_haunted_door, /*pos*/ -1561,     0, -1586, /*yaw*/   0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_haunted_door, /*pos*/  -767,   819,  1408, /*yaw*/  64),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_haunted_door, /*pos*/  -767,   819,   640, /*yaw*/  64),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_haunted_door, /*pos*/   -50,     0,   640, /*yaw*/  64),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_haunted_door, /*pos*/   -50,     0,  1459, /*yaw*/  64),\n    COL_WATER_BOX_INIT(2),\n    COL_WATER_BOX(0, -4812, 1485, 640, 7270, -2405),\n    COL_WATER_BOX(1, 1536, -1637, 3789, 2662, -2508),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/geo.inc.c",
    "content": "// 0x0E000670\nconst GeoLayout geo_bbh_000670[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_070075A8),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bbh_seg7_dl_07007940),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07007B90),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_07007FD0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07008B58),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_07008EA8),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E0006B0\nconst GeoLayout geo_bbh_0006B0[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0700AFF0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0700B1C8),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_0700B418),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0700B9E0),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_0700BBF8),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E0006E8\nconst GeoLayout geo_bbh_0006E8[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0700D080),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bbh_seg7_dl_0700D2E0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0700D490),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_0700D7E0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07012220),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07012510),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_070126E8),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000730\nconst GeoLayout geo_bbh_000730[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0700F510),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bbh_seg7_dl_0700F848),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000750\nconst GeoLayout geo_bbh_000750[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07011120),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000768\nconst GeoLayout geo_bbh_000768[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0700D080),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bbh_seg7_dl_0700D2E0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0700D490),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_0700D7E0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07012220),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07012510),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_070126E8),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E0007B0\nconst GeoLayout geo_bbh_0007B0[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_070139A8),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_07013BE8),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E0007D0\nconst GeoLayout geo_bbh_0007D0[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07014FD8),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bbh_seg7_dl_07015398),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_070156E0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07015A20),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000800\nconst GeoLayout geo_bbh_000800[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07017378),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07017570),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_07017788),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000828\nconst GeoLayout geo_bbh_000828[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07019EF8),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bbh_seg7_dl_0701A080),\n        GEO_ASM(   0, geo_movtex_pause_control),\n        GEO_ASM(0x0400, geo_movtex_draw_water_regions),\n        GEO_ASM(0x0401, geo_movtex_draw_water_regions),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000860\nconst GeoLayout geo_bbh_000860[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0701A850),\n        GEO_ASM(   0, geo_movtex_pause_control),\n        GEO_ASM(0x0400, geo_movtex_draw_water_regions),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000888\nconst GeoLayout geo_bbh_000888[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0701B6D0),\n        GEO_ASM(   0, geo_movtex_pause_control),\n        GEO_ASM(0x0400, geo_movtex_draw_water_regions),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E0008B0\nconst GeoLayout geo_bbh_0008B0[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0701E4E0),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bbh_seg7_dl_0701E8D8),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0701ED18),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_0701EEC8),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0701F070),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E0008E8\nconst GeoLayout geo_bbh_0008E8[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_070075A8),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bbh_seg7_dl_07007940),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07007B90),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_07007FD0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07008B58),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_07008EA8),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0700AFF0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0700B1C8),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_0700B418),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0700B9E0),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_0700BBF8),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000950\nconst GeoLayout geo_bbh_000950[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_070075A8),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bbh_seg7_dl_07007940),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07007B90),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_07007FD0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07008B58),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_07008EA8),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0700D080),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bbh_seg7_dl_0700D2E0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0700D490),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_0700D7E0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07012220),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07012510),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_070126E8),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E0009C8\nconst GeoLayout geo_bbh_0009C8[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_070075A8),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bbh_seg7_dl_07007940),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07007B90),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_07007FD0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07008B58),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_07008EA8),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0700F510),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bbh_seg7_dl_0700F848),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000A18\nconst GeoLayout geo_bbh_000A18[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_070075A8),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bbh_seg7_dl_07007940),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07007B90),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_07007FD0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07008B58),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_07008EA8),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07011120),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000A60\nconst GeoLayout geo_bbh_000A60[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_070075A8),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bbh_seg7_dl_07007940),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07007B90),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_07007FD0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07008B58),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_07008EA8),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0700D080),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bbh_seg7_dl_0700D2E0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0700D490),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_0700D7E0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07012220),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07012510),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_070126E8),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000AD8\nconst GeoLayout geo_bbh_000AD8[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_070075A8),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bbh_seg7_dl_07007940),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07007B90),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_07007FD0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07008B58),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_07008EA8),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_070139A8),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_07013BE8),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000B28\nconst GeoLayout geo_bbh_000B28[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_070075A8),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bbh_seg7_dl_07007940),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07007B90),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_07007FD0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07008B58),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_07008EA8),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07014FD8),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bbh_seg7_dl_07015398),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_070156E0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07015A20),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000B88\nconst GeoLayout geo_bbh_000B88[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_070075A8),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bbh_seg7_dl_07007940),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07007B90),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_07007FD0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07008B58),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_07008EA8),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0701E4E0),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bbh_seg7_dl_0701E8D8),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0701ED18),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_0701EEC8),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0701F070),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000BF0\nconst GeoLayout geo_bbh_000BF0[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0700AFF0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0700B1C8),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_0700B418),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0700B9E0),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_0700BBF8),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0700F510),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bbh_seg7_dl_0700F848),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000C38\nconst GeoLayout geo_bbh_000C38[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0700AFF0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0700B1C8),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_0700B418),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0700B9E0),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_0700BBF8),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07017378),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07017570),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_07017788),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000C88\nconst GeoLayout geo_bbh_000C88[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0700AFF0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0700B1C8),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_0700B418),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0700B9E0),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_0700BBF8),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07019EF8),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bbh_seg7_dl_0701A080),\n        GEO_ASM(   0, geo_movtex_pause_control),\n        GEO_ASM(0x0400, geo_movtex_draw_water_regions),\n        GEO_ASM(0x0401, geo_movtex_draw_water_regions),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000CE8\nconst GeoLayout geo_bbh_000CE8[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0700D080),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bbh_seg7_dl_0700D2E0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0700D490),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_0700D7E0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07011120),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000D20\nconst GeoLayout geo_bbh_000D20[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0700D080),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bbh_seg7_dl_0700D2E0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0700D490),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_0700D7E0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07012220),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07012510),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_070126E8),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000D68\nconst GeoLayout geo_bbh_000D68[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0700F510),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bbh_seg7_dl_0700F848),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07019EF8),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bbh_seg7_dl_0701A080),\n        GEO_ASM(   0, geo_movtex_pause_control),\n        GEO_ASM(0x0400, geo_movtex_draw_water_regions),\n        GEO_ASM(0x0401, geo_movtex_draw_water_regions),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000DB0\nconst GeoLayout geo_bbh_000DB0[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07011120),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0701E4E0),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bbh_seg7_dl_0701E8D8),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0701ED18),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_0701EEC8),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0701F070),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000DF0\nconst GeoLayout geo_bbh_000DF0[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07017378),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07017570),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_07017788),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0701E4E0),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bbh_seg7_dl_0701E8D8),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0701ED18),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_0701EEC8),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0701F070),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000E40\nconst GeoLayout geo_bbh_000E40[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_07019EF8),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bbh_seg7_dl_0701A080),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0701A850),\n        GEO_ASM(   0, geo_movtex_pause_control),\n        GEO_ASM(0x0400, geo_movtex_draw_water_regions),\n        GEO_ASM(0x0401, geo_movtex_draw_water_regions),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000E80\nconst GeoLayout geo_bbh_000E80[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0701A850),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0701B6D0),\n        GEO_ASM(   0, geo_movtex_pause_control),\n        GEO_ASM(0x0400, geo_movtex_draw_water_regions),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000EB0\nconst GeoLayout geo_bbh_000EB0[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0701B6D0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0701E4E0),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bbh_seg7_dl_0701E8D8),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0701ED18),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bbh_seg7_dl_0701EEC8),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0701F070),\n        GEO_ASM(   0, geo_movtex_pause_control),\n        GEO_ASM(0x0400, geo_movtex_draw_water_regions),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000F00\nconst GeoLayout geo_bbh_000F00[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND(BACKGROUND_HAUNTED, geo_skybox_main),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 50, 10000, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(4, 0, 2000, 6000, 0, 0, 0, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_SWITCH_CASE(32, geo_switch_area),\n                    GEO_OPEN_NODE(),\n                        GEO_BRANCH(1, geo_bbh_000670), // 0x0E000670\n                        GEO_BRANCH(1, geo_bbh_0006B0), // 0x0E0006B0\n                        GEO_BRANCH(1, geo_bbh_0006E8), // 0x0E0006E8\n                        GEO_BRANCH(1, geo_bbh_000730), // 0x0E000730\n                        GEO_BRANCH(1, geo_bbh_000750), // 0x0E000750\n                        GEO_BRANCH(1, geo_bbh_000768), // 0x0E000768\n                        GEO_BRANCH(1, geo_bbh_0007B0), // 0x0E0007B0\n                        GEO_BRANCH(1, geo_bbh_0007D0), // 0x0E0007D0\n                        GEO_BRANCH(1, geo_bbh_000800), // 0x0E000800\n                        GEO_BRANCH(1, geo_bbh_000828), // 0x0E000828\n                        GEO_BRANCH(1, geo_bbh_000860), // 0x0E000860\n                        GEO_BRANCH(1, geo_bbh_000888), // 0x0E000888\n                        GEO_BRANCH(1, geo_bbh_0008B0), // 0x0E0008B0\n                        GEO_BRANCH(1, geo_bbh_0008E8), // 0x0E0008E8\n                        GEO_BRANCH(1, geo_bbh_000950), // 0x0E000950\n                        GEO_BRANCH(1, geo_bbh_0009C8), // 0x0E0009C8\n                        GEO_BRANCH(1, geo_bbh_000A18), // 0x0E000A18\n                        GEO_BRANCH(1, geo_bbh_000A60), // 0x0E000A60\n                        GEO_BRANCH(1, geo_bbh_000AD8), // 0x0E000AD8\n                        GEO_BRANCH(1, geo_bbh_000B28), // 0x0E000B28\n                        GEO_BRANCH(1, geo_bbh_000B88), // 0x0E000B88\n                        GEO_BRANCH(1, geo_bbh_000BF0), // 0x0E000BF0\n                        GEO_BRANCH(1, geo_bbh_000C38), // 0x0E000C38\n                        GEO_BRANCH(1, geo_bbh_000C88), // 0x0E000C88\n                        GEO_BRANCH(1, geo_bbh_000CE8), // 0x0E000CE8\n                        GEO_BRANCH(1, geo_bbh_000D20), // 0x0E000D20\n                        GEO_BRANCH(1, geo_bbh_000D68), // 0x0E000D68\n                        GEO_BRANCH(1, geo_bbh_000DB0), // 0x0E000DB0\n                        GEO_BRANCH(1, geo_bbh_000DF0), // 0x0E000DF0\n                        GEO_BRANCH(1, geo_bbh_000E40), // 0x0E000E40\n                        GEO_BRANCH(1, geo_bbh_000E80), // 0x0E000E80\n                        GEO_BRANCH(1, geo_bbh_000EB0), // 0x0E000EB0\n                    GEO_CLOSE_NODE(),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(0, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/macro.inc.c",
    "content": "// 0x070268C4 - 0x07026A1A\nconst MacroObject bbh_seg7_macro_objs[] = {\n    MACRO_OBJECT               (/*preset*/ macro_haunted_chair_2,           /*yaw*/  90, /*pos*/ -1960,   -20,   340),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,           /*yaw*/   0, /*pos*/  -800,  -204,  2915, /*bhvParam*/ DIALOG_063),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,           /*yaw*/   0, /*pos*/   400,  -204,  3057, /*bhvParam*/ DIALOG_085),\n    MACRO_OBJECT               (/*preset*/ macro_haunted_chair_2,           /*yaw*/ 270, /*pos*/ -1080,    20,   160),\n    MACRO_OBJECT               (/*preset*/ macro_box_vanish_cap,            /*yaw*/   0, /*pos*/  1268,  1050,  1860),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                  /*yaw*/   0, /*pos*/ -1164,     0,  2325),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                  /*yaw*/   0, /*pos*/  2540,   820,  2174),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                  /*yaw*/   0, /*pos*/  2600,   815,  -380),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                  /*yaw*/   0, /*pos*/  2950,   815, -1250),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                  /*yaw*/   0, /*pos*/ -1500,   550,   960),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                  /*yaw*/   0, /*pos*/  -420,   550,    60),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                  /*yaw*/   0, /*pos*/  2856,    50,  2144),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                  /*yaw*/   0, /*pos*/    50,   900, -1400),\n    MACRO_OBJECT               (/*preset*/ macro_box_1up,                   /*yaw*/   0, /*pos*/   660,  3200,  1160),\n    MACRO_OBJECT               (/*preset*/ macro_blue_coin_switch,          /*yaw*/   0, /*pos*/   640,  1741,   760),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,          /*yaw*/   0, /*pos*/  1400,  1840,  1100),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,          /*yaw*/   0, /*pos*/  1700,  1840,  1100),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,          /*yaw*/   0, /*pos*/     0,  1840,  1100),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,          /*yaw*/   0, /*pos*/  -400,  1840,  1100),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,           /*yaw*/   0, /*pos*/  2026,  -204,  2966, /*bhvParam*/ DIALOG_102),\n    MACRO_OBJECT               (/*preset*/ macro_mr_i,                      /*yaw*/   0, /*pos*/   480,    10,  -653),\n    MACRO_OBJECT               (/*preset*/ macro_scuttlebug,                /*yaw*/   0, /*pos*/  -346,  -204, -2813),\n    MACRO_OBJECT               (/*preset*/ macro_scuttlebug,                /*yaw*/   0, /*pos*/  1146,  -203, -2280),\n    MACRO_OBJECT               (/*preset*/ macro_mr_i,                      /*yaw*/   0, /*pos*/ -2369,  -204,  5184),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,           /*yaw*/ 135, /*pos*/ -1546,  -204,  4813, /*bhvParam*/ DIALOG_086),\n    MACRO_OBJECT               (/*preset*/ macro_scuttlebug,                /*yaw*/   0, /*pos*/  3466,  -204,  5106),\n    MACRO_OBJECT               (/*preset*/ macro_mr_i,                      /*yaw*/   0, /*pos*/  1640,   840,  -733),\n    MACRO_OBJECT               (/*preset*/ macro_box_vanish_cap,            /*yaw*/   0, /*pos*/ -1960,   300,  -120),\n    MACRO_OBJECT               (/*preset*/ macro_box_vanish_cap,            /*yaw*/   0, /*pos*/   460,  2140,  -560),\n    MACRO_OBJECT               (/*preset*/ macro_box_ten_coins,             /*yaw*/   0, /*pos*/   700,    80, -2800),\n    MACRO_OBJECT               (/*preset*/ macro_breakable_box_three_coins, /*yaw*/  45, /*pos*/ -3800,  -204,  4600),\n    MACRO_OBJECT               (/*preset*/ macro_breakable_box_three_coins, /*yaw*/  45, /*pos*/ -3659,  -204,  4459),\n    MACRO_OBJECT               (/*preset*/ macro_jumping_box,               /*yaw*/   0, /*pos*/  -220,  -220,  6140),\n    MACRO_OBJECT               (/*preset*/ macro_1up,                       /*yaw*/   0, /*pos*/ -3040,  1120,  5460),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/movtext.inc.c",
    "content": "// 0x07026DE4\nstatic Movtex bbh_movtex_merry_go_round_water_entrance_data[] = {\n    MOV_TEX_INIT_LOAD(    1),\n    MOV_TEX_ROT_SPEED(    0),\n    MOV_TEX_ROT_SCALE(   20),\n    MOV_TEX_4_BOX_TRIS(-4812,  1485),\n    MOV_TEX_4_BOX_TRIS(-4812,  7270),\n    MOV_TEX_4_BOX_TRIS(  640,  7270),\n    MOV_TEX_4_BOX_TRIS(  640,  1485),\n    MOV_TEX_ROT(     ROTATE_CLOCKWISE),\n    MOV_TEX_ALPHA(    0x96),\n    MOV_TEX_DEFINE(  TEXTURE_WATER),\n    MOV_TEX_END(),\n};\n\n// 0x07026E14\nstatic Movtex bbh_movtex_merry_go_round_water_side_data[] = {\n    MOV_TEX_INIT_LOAD(    1),\n    MOV_TEX_ROT_SPEED(    0),\n    MOV_TEX_ROT_SCALE(   20),\n    MOV_TEX_4_BOX_TRIS( 1536, -1637),\n    MOV_TEX_4_BOX_TRIS( 1536,  2662),\n    MOV_TEX_4_BOX_TRIS( 3789,  2662),\n    MOV_TEX_4_BOX_TRIS( 3789, -1637),\n    MOV_TEX_ROT(     ROTATE_CLOCKWISE),\n    MOV_TEX_ALPHA(    0x96),\n    MOV_TEX_DEFINE(  TEXTURE_WATER),\n    MOV_TEX_END(),\n};\n\n// 0x07026E24\nconst struct MovtexQuadCollection bbh_movtex_merry_go_round_water_entrance[] = {\n    {0, bbh_movtex_merry_go_round_water_entrance_data},\n    {-1, NULL},\n};\n\n// 0x07026E34\nconst struct MovtexQuadCollection bbh_movtex_merry_go_round_water_side[] = {\n    {1, bbh_movtex_merry_go_round_water_side_data},\n    {-1, NULL},\n};\n"
  },
  {
    "path": "levels/bbh/areas/1/room.inc.c",
    "content": "// 0x0702605C - 0x070268C2\nconst RoomData bbh_seg7_rooms[] = {\n    13, 13, 13, 13, 13, 13, 13, 13, // 0-7\n    13, 13, 13, 13, 13, 13, 13, 13, // 8-15\n    13, 13, 29, 29, 13, 13, 13, 13, // 16-23\n    13, 13, 13, 13, 13, 13, 13, 13, // 24-31\n    13, 13, 13, 13, 13, 13, 13, 13, // 32-39\n    13, 13, 13, 13, 13, 13, 13, 13, // 40-47\n    13, 13, 13, 13, 13, 13, 13, 13, // 48-55\n    13, 13, 13, 13, 13, 13, 13, 13, // 56-63\n    13, 13, 13, 29, 29, 13, 13, 13, // 64-71\n    13, 13, 13, 13, 28, 13, 13, 13, // 72-79\n    13, 28, 13, 13, 13, 13, 13, 13, // 80-87\n    13, 13, 32, 13, 32, 13, 13, 13, // 88-95\n    13, 13, 13, 13, 13, 13, 13, 13, // 96-103\n    13, 13, 13, 13, 13, 13, 13, 13, // 104-111\n    13, 13, 13, 13, 13, 13, 13, 13, // 112-119\n    13, 13, 13, 13, 13, 13, 13, 13, // 120-127\n    13, 13, 13, 13, 13, 13, 13, 13, // 128-135\n    13, 13, 13, 13, 13, 13, 13, 13, // 136-143\n    13, 13, 13, 13, 13, 13, 13, 13, // 144-151\n    13,  9, 13, 13, 13, 13, 13, 13, // 152-159\n    13,  9, 13,  9,  9, 13, 13, 29, // 160-167\n    29,  9, 13, 13, 13, 13, 13, 13, // 168-175\n    13, 13, 13, 13, 13, 13, 13, 13, // 176-183\n    13, 13, 13, 13, 13, 13, 13, 13, // 184-191\n    13, 13, 13, 13, 13, 13, 13, 13, // 192-199\n    13, 13,  1,  1, 13, 13,  5,  1, // 200-207\n     1, 13, 13, 13, 13,  1,  1, 13, // 208-215\n    13,  5, 13, 13,  5,  5, 13, 13, // 216-223\n     5, 13,  5, 28, 28, 13, 13, 13, // 224-231\n    13, 13, 13, 13, 13, 13, 13, 13, // 232-239\n    13, 13, 32, 32, 32, 12, 32, 13, // 240-247\n    13, 13, 13, 12, 12, 13, 12, 12, // 248-255\n    12, 12, 12, 12, 12, 12, 12, 12, // 256-263\n    12, 11, 11, 11, 12, 12, 12, 12, // 264-271\n    12, 12, 12, 11, 11, 12, 12, 12, // 272-279\n    12, 12, 11, 12, 12, 12, 12, 12, // 280-287\n    12, 12, 12, 12, 12, 12, 12, 12, // 288-295\n    12, 12, 12, 12, 12, 12, 12, 12, // 296-303\n    12, 12, 12, 12, 12, 12, 12, 12, // 304-311\n    12, 12, 32, 32, 12, 12, 12, 12, // 312-319\n    12, 12, 12, 12, 12, 12, 11, 11, // 320-327\n    11, 11, 11, 11, 11, 11, 11, 11, // 328-335\n    11, 11, 11, 11, 11, 11, 11, 11, // 336-343\n    11, 10, 11, 11, 10, 10, 11, 11, // 344-351\n    11, 10, 10, 10, 11, 11, 11, 10, // 352-359\n    11, 11, 11, 11, 11, 10, 10, 10, // 360-367\n    10, 10, 10, 10, 10, 10, 10, 10, // 368-375\n    10, 10, 10, 10, 10, 10, 10, 10, // 376-383\n    10, 10, 10, 10, 10, 10, 10, 10, // 384-391\n    10, 10, 10, 10, 10, 10, 10, 10, // 392-399\n    10, 10, 10, 10, 10, 10, 10, 10, // 400-407\n    10, 10, 10, 10, 10, 10, 10, 10, // 408-415\n    10, 10, 10, 10, 10, 10, 10, 10, // 416-423\n    10, 10, 10, 10, 10, 10, 10, 10, // 424-431\n    10, 10, 10, 10, 10, 10, 10, 10, // 432-439\n    10, 10, 10, 10, 10, 10, 10, 10, // 440-447\n    10, 10, 10, 10, 10, 10, 10, 10, // 448-455\n    10, 10, 10, 10, 10, 10, 10, 10, // 456-463\n    10, 10, 10, 10, 10, 10, 10, 10, // 464-471\n    10, 10, 10, 10, 10, 10, 10, 10, // 472-479\n    10, 10, 10, 10, 10, 10, 10, 10, // 480-487\n    10, 10, 10, 10, 10, 10, 10, 10, // 488-495\n    10, 10, 10, 10, 10, 10, 10, 10, // 496-503\n    10, 10, 10, 10, 10, 10, 10, 10, // 504-511\n     9,  9,  9,  9,  9,  9,  9,  9, // 512-519\n     9,  9,  9,  9,  9,  9,  9,  9, // 520-527\n     9,  9,  9,  9,  9,  9,  9,  9, // 528-535\n     9,  9,  9,  9,  9, 29, 29,  9, // 536-543\n     9,  9,  9,  9,  9,  9,  2,  2, // 544-551\n     2,  9,  9,  9, 23,  9,  9,  9, // 552-559\n     9,  9,  2, 23,  2,  2,  9,  9, // 560-567\n     9,  9,  9,  9,  9,  9,  9,  9, // 568-575\n     9,  9,  9,  9,  9,  9,  9,  9, // 576-583\n     9,  9,  9,  9,  9,  9,  9,  9, // 584-591\n     9,  9,  9,  9,  9,  9,  9,  9, // 592-599\n     9,  9,  9,  9,  9,  9,  9,  9, // 600-607\n     9,  9,  9,  9,  9,  9,  9,  9, // 608-615\n     9,  8,  9,  9,  9,  9,  9,  9, // 616-623\n     9,  9,  9,  9,  8,  8,  8,  8, // 624-631\n     8,  8,  8,  8,  8,  8,  8,  8, // 632-639\n     8,  8,  8,  8,  8,  8,  8,  8, // 640-647\n     8,  8,  8,  8,  8,  8,  8,  8, // 648-655\n     8,  8,  8,  8,  8,  8,  8,  8, // 656-663\n     8,  8,  8,  8,  8,  8,  8,  8, // 664-671\n     8,  8,  8,  8,  8,  8,  8,  8, // 672-679\n     8,  8,  8,  8,  8,  8,  8,  8, // 680-687\n     1,  1,  8,  8,  1,  1,  8,  8, // 688-695\n     1,  1,  8,  8,  1,  1, 20,  1, // 696-703\n     8,  8,  8,  1,  1,  8,  8,  8, // 704-711\n     8,  8,  8,  8,  8,  8,  8,  8, // 712-719\n     8,  8,  8,  8,  8,  8,  8,  8, // 720-727\n     8,  8,  8,  7,  7,  7,  7,  7, // 728-735\n     7,  7,  7,  7,  7,  7,  7,  7, // 736-743\n     7,  7,  7,  7,  7,  7,  7,  7, // 744-751\n     7,  7,  7,  7,  7,  7,  7,  7, // 752-759\n     7,  7,  7,  7,  7,  7,  7,  7, // 760-767\n     7,  7,  7,  7,  7,  7,  7,  7, // 768-775\n     7,  7,  7,  7,  7,  7,  7,  7, // 776-783\n     7,  7,  7,  7,  7,  7,  7,  7, // 784-791\n     7,  7,  7,  7,  7,  7,  7,  7, // 792-799\n     7,  7,  7,  7,  7,  7,  7,  7, // 800-807\n     7,  7,  1,  1,  7,  7,  7,  1, // 808-815\n     1,  1,  1, 19,  7,  6,  7,  7, // 816-823\n     7,  7,  7,  7,  7,  6,  6,  6, // 824-831\n     6,  6,  6,  6,  6,  6,  6,  6, // 832-839\n    26, 26,  6,  6,  6,  6, 18,  6, // 840-847\n     6,  6,  6,  6, 18,  6,  6,  6, // 848-855\n     6,  6,  6,  6,  6,  6,  6,  6, // 856-863\n     6,  6,  6,  6,  6,  6,  6,  6, // 864-871\n     6,  6,  6,  6,  6,  6,  6,  6, // 872-879\n     6,  6,  6, 26,  6,  6,  6, 26, // 880-887\n    26, 26,  6,  3,  3,  6,  6,  6, // 888-895\n     6,  3,  3,  3,  3,  6,  1,  6, // 896-903\n     6, 18, 18,  1, 18, 18,  6,  6, // 904-911\n     1,  1,  6,  6,  1,  1,  5,  5, // 912-919\n     5,  5,  5,  5,  5,  5,  5,  5, // 920-927\n     5,  5,  5,  5,  5,  5,  5,  5, // 928-935\n     5,  5,  5,  5,  5,  5,  5,  5, // 936-943\n     5,  5,  5,  5,  5,  5,  5,  5, // 944-951\n     5,  5,  5,  5,  5,  5,  5,  5, // 952-959\n     5,  5,  5,  5,  5,  5,  5,  5, // 960-967\n     5,  5,  5,  5,  5,  5,  5,  5, // 968-975\n     5,  5,  5,  5,  5,  5,  5,  5, // 976-983\n     5,  5,  5,  5,  5,  5,  5,  5, // 984-991\n     5,  5,  5,  5,  5,  5,  5,  5, // 992-999\n     5,  5,  5,  5,  5,  5,  5,  5, // 1000-1007\n     5,  5,  5,  5,  5,  5,  1,  5, // 1008-1015\n     5,  5,  5,  5,  5,  5,  5,  5, // 1016-1023\n     1,  5,  5,  1,  1,  5,  3,  3, // 1024-1031\n     5,  5,  3,  3, 25,  3,  5,  5, // 1032-1039\n     5,  5,  1,  1,  5,  5,  4,  4, // 1040-1047\n     4,  4,  4,  4,  4,  4,  4,  4, // 1048-1055\n     4,  4,  4,  4,  4,  4,  4,  4, // 1056-1063\n     4,  4,  4,  4,  4,  4,  4,  4, // 1064-1071\n     4,  4,  4,  4,  4,  4,  4,  4, // 1072-1079\n     4,  4,  4,  4,  4,  4,  4,  4, // 1080-1087\n     4,  4,  4,  4,  4,  4,  4,  4, // 1088-1095\n     4,  4,  4,  4,  4,  4,  4,  4, // 1096-1103\n     4,  4,  4,  4,  4,  4,  4,  4, // 1104-1111\n     4,  4,  4,  4,  4,  4,  4,  4, // 1112-1119\n     4,  4,  4,  4,  4,  4,  4,  4, // 1120-1127\n     4,  4,  4,  4,  4,  4,  4,  4, // 1128-1135\n     4,  4,  4,  4,  4,  4,  4,  4, // 1136-1143\n     4,  4,  4,  4,  4,  4,  4,  4, // 1144-1151\n     4,  4,  4,  4,  4,  4,  4,  4, // 1152-1159\n     4,  4,  4,  4,  4,  4,  4,  4, // 1160-1167\n     4,  4,  4,  4,  4,  4,  4,  1, // 1168-1175\n     1,  4,  4,  1,  1,  4,  4,  1, // 1176-1183\n     1,  4,  4,  2,  4,  4,  2,  2, // 1184-1191\n     4,  4,  2,  2,  4,  4,  4,  4, // 1192-1199\n     4,  4,  4,  4,  4,  4,  4,  4, // 1200-1207\n     4,  4,  4,  3,  4,  4,  4,  4, // 1208-1215\n     4,  4,  3,  3,  3,  3,  3,  3, // 1216-1223\n     3,  3,  3,  3,  3,  3,  3,  3, // 1224-1231\n    26, 26,  3,  3,  3,  3,  3,  3, // 1232-1239\n    15, 15,  3,  3,  3,  3,  3,  3, // 1240-1247\n     3, 15,  3,  3,  3,  3,  3, 15, // 1248-1255\n     3,  3,  3,  3,  3,  3,  3,  3, // 1256-1263\n     3,  3, 25, 25,  3,  3,  3,  3, // 1264-1271\n     3,  3,  3,  3,  3,  3,  3,  3, // 1272-1279\n     3,  3,  3,  3,  3,  3,  3,  3, // 1280-1287\n     3,  3,  3,  3,  3,  3,  3,  3, // 1288-1295\n     3,  3,  3,  3,  3,  3,  3,  3, // 1296-1303\n     3,  3,  3,  3,  3,  3,  3,  3, // 1304-1311\n     3,  3,  3,  3,  3,  3,  3,  3, // 1312-1319\n    25,  3,  1,  1,  1,  3,  3,  1, // 1320-1327\n     1,  3,  3, 15, 15, 15,  1, 15, // 1328-1335\n    15,  3,  1,  1,  3,  3, 15,  3, // 1336-1343\n     3,  1,  1,  2,  1,  3,  1,  2, // 1344-1351\n     2,  2,  2,  2,  2,  2,  2,  2, // 1352-1359\n     2,  2,  2,  2,  2,  2,  2,  2, // 1360-1367\n     2,  2,  2,  2,  2,  2,  2,  2, // 1368-1375\n    23, 23,  2,  2,  2,  2, 14,  2, // 1376-1383\n     2,  2,  2, 14, 14, 14,  2,  2, // 1384-1391\n     2,  2,  2,  2,  2,  2,  2,  2, // 1392-1399\n     2,  2,  2,  2,  2,  2,  2,  2, // 1400-1407\n     2,  2,  2,  2,  2,  2,  2,  2, // 1408-1415\n     2,  2,  2,  2,  2,  2,  2,  2, // 1416-1423\n     2,  2,  2,  2,  2,  2,  2,  2, // 1424-1431\n     2,  2,  2,  2,  2,  2,  2,  2, // 1432-1439\n     2,  2,  2,  2,  2,  2,  2,  2, // 1440-1447\n     2,  2,  2,  2,  2,  2,  2,  2, // 1448-1455\n     2,  2,  2,  2,  2,  2,  2,  2, // 1456-1463\n     2,  2,  2,  2,  2,  2,  2,  2, // 1464-1471\n     2,  2,  2,  2,  2,  2,  2,  1, // 1472-1479\n     2,  2,  1,  2,  1,  2,  1,  1, // 1480-1487\n     2,  2,  1,  2,  2,  2,  2,  2, // 1488-1495\n     2,  2,  2,  2,  2,  2,  2,  2, // 1496-1503\n     2, 14,  1, 14, 14,  1, 14,  1, // 1504-1511\n     1,  2,  2,  1,  2,  2,  1,  1, // 1512-1519\n     2,  2,  1,  1, 14,  2,  2,  1, // 1520-1527\n     2,  2, 14, 14,  1,  2, 14,  1, // 1528-1535\n     2,  2,  2,  2,  2,  2,  2,  2, // 1536-1543\n     2,  2,  2,  1,  2,  1,  1,  1, // 1544-1551\n     1,  1,  1,  1,  1,  1,  1,  1, // 1552-1559\n     1,  1,  1,  1, 19,  1, 20,  1, // 1560-1567\n     1,  1,  1,  1,  1,  1,  1,  1, // 1568-1575\n     1,  1,  1,  1,  1,  1,  1,  1, // 1576-1583\n     1,  1,  1,  1,  1,  1,  1,  1, // 1584-1591\n     1,  1,  1,  1,  1,  1,  1,  1, // 1592-1599\n     1,  1,  1,  1,  1,  1,  1,  1, // 1600-1607\n     1,  1,  1,  1,  1,  1,  1,  1, // 1608-1615\n     1,  1,  1,  1,  1,  1,  1,  1, // 1616-1623\n     1,  1,  1,  1,  1,  1,  1,  1, // 1624-1631\n     1,  1,  1,  1,  1,  1,  1,  1, // 1632-1639\n     1,  1,  1,  1,  1,  1,  1,  1, // 1640-1647\n     1,  1,  1,  1,  1,  1,  1,  1, // 1648-1655\n     1,  1,  1,  1,  1,  1,  1,  1, // 1656-1663\n     1,  1,  1,  1,  1,  1,  1,  1, // 1664-1671\n     1,  1,  1,  1,  1,  1,  1,  1, // 1672-1679\n     1,  1,  1,  1,  1,  1,  1,  1, // 1680-1687\n     1,  1,  1, 15, 15,  1,  1,  1, // 1688-1695\n     1, 18,  1,  1,  1, 18,  1,  1, // 1696-1703\n     1,  1, 20, 20,  1,  1, 19, 19, // 1704-1711\n     1, 14, 14,  1,  1,  1,  1,  1, // 1712-1719\n     1,  1,  1,  1,  1,  1, 14, 14, // 1720-1727\n     1,  1,  1,  1,  1,  1,  1,  1, // 1728-1735\n     1,  1,  1,  1,  1,  1,  1,  1, // 1736-1743\n     1,  1,  1,  1,  1,  1,  1,  1, // 1744-1751\n     1,  1, 10, 10,  4,  4,  4,  4, // 1752-1759\n     4,  4, 27, 27,  2,  2,  2,  2, // 1760-1767\n     2,  2,  2,  2, 24, 24,  9,  9, // 1768-1775\n     9,  9,  8,  8,  7,  7,  4,  5, // 1776-1783\n     5,  5,  5,  4,  4,  4,  4,  4, // 1784-1791\n     4,  4,  4,  4,  4,  4,  4,  4, // 1792-1799\n     3,  3,  3,  3,  3,  3,  3,  3, // 1800-1807\n     3,  3,  3,  3,  2,  2,  1,  1, // 1808-1815\n     1,  1,  1,  1,  1,  1,  1,  1, // 1816-1823\n     1,  1,  1,  1,  1,  1,  1,  1, // 1824-1831\n    10, 10, 10, 10, 10, 10, 13, 13, // 1832-1839\n    13, 13, 13, 21, 13, 13, 21, 13, // 1840-1847\n    13, 13, 13, 13, 13, 13, 13, 13, // 1848-1855\n    13, 13, 13, 13, 13, 13, 13, 13, // 1856-1863\n    13, 13, 13, 13, 13, 13, 13, 13, // 1864-1871\n    13, 13, 13, 13, 13, 13, 13, 13, // 1872-1879\n    13, 13, 13, 13, 13, 13, 21, 21, // 1880-1887\n    12, 21, 21, 31, 31, 31, 31, 12, // 1888-1895\n    12, 11, 12, 12, 12, 31, 31, 12, // 1896-1903\n    12, 12, 11, 11, 30, 30, 30, 11, // 1904-1911\n    11, 11, 11, 31, 31, 11, 11, 11, // 1912-1919\n    30, 30, 30, 10, 10, 10, 10, 30, // 1920-1927\n    30, 10, 10, 10, 10, 10, 10, 10, // 1928-1935\n    10, 10, 10, 10, 10, 10, 10, 10, // 1936-1943\n    10, 10, 10, 10, 10, 10, 10, 10, // 1944-1951\n    10, 10, 10, 10, 10, 10, 10, 10, // 1952-1959\n     8, 23, 23,  9,  9, 23, 23,  9, // 1960-1967\n     9,  9,  9,  8,  8,  8,  8,  8, // 1968-1975\n     8, 20, 20,  8,  8,  8,  8,  8, // 1976-1983\n     8,  8,  8,  8,  8,  8,  8,  8, // 1984-1991\n     8,  8,  8,  8,  8,  8,  8,  8, // 1992-1999\n     8,  8,  8,  8, 20, 20,  8,  8, // 2000-2007\n     8,  8, 20, 20, 20, 20, 19, 20, // 2008-2015\n    20, 19, 19,  7,  7,  7,  7,  7, // 2016-2023\n     7, 19,  5,  5, 25,  5,  5,  5, // 2024-2031\n     5,  5,  5,  5,  5, 28,  5, 28, // 2032-2039\n     5, 25,  5,  5, 17, 17,  5, 25, // 2040-2047\n     5, 17, 17, 17, 17, 25,  4, 28, // 2048-2055\n    28,  4,  4,  4, 22, 22,  4,  4, // 2056-2063\n     4, 22,  4,  4, 16,  4,  4, 16, // 2064-2071\n     4,  4,  4, 22, 22, 22, 16, 16, // 2072-2079\n    16, 16,  2,  2, 22, 22,  2,  2, // 2080-2087\n     2,  2, 14,  2,  2, 14,  2,  2, // 2088-2095\n     2,  2,  2,  2, 15,  2,  2, 14, // 2096-2103\n    14, 14, 14, 15, 14,  1, 14, 16, // 2104-2111\n    16,  1,  1,  1,  1,  1,  1,  1, // 2112-2119\n     1, 20, 20,  1,  1,  1,  1, 17, // 2120-2127\n    17,  1,  1, 15, 15,  1,  1,  1, // 2128-2135\n     1, 21, 21,  1,  1,  1,  5,  9, // 2136-2143\n     9,  9,  9,  5,  5,  5, // 2144-2149\n};\n"
  },
  {
    "path": "levels/bbh/coffin/collision.inc.c",
    "content": "// 0x07026D18 - 0x07026DE4\nconst Collision bbh_seg7_collision_coffin[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0xC),\n    COL_VERTEX(-57, 77, 0),\n    COL_VERTEX(115, 77, -306),\n    COL_VERTEX(-114, 77, -306),\n    COL_VERTEX(-57, 3, 0),\n    COL_VERTEX(58, 3, 0),\n    COL_VERTEX(58, 77, 0),\n    COL_VERTEX(115, 3, -306),\n    COL_VERTEX(-57, 77, -457),\n    COL_VERTEX(58, 77, -457),\n    COL_VERTEX(58, 3, -457),\n    COL_VERTEX(-57, 3, -457),\n    COL_VERTEX(-114, 3, -306),\n    COL_TRI_INIT(SURFACE_DEFAULT, 20),\n    COL_TRI(0, 1, 2),\n    COL_TRI(3, 0, 2),\n    COL_TRI(4, 5, 0),\n    COL_TRI(0, 5, 1),\n    COL_TRI(4, 0, 3),\n    COL_TRI(6, 5, 4),\n    COL_TRI(6, 1, 5),\n    COL_TRI(1, 7, 2),\n    COL_TRI(1, 8, 7),\n    COL_TRI(9, 1, 6),\n    COL_TRI(9, 8, 1),\n    COL_TRI(10, 8, 9),\n    COL_TRI(10, 7, 8),\n    COL_TRI(11, 2, 7),\n    COL_TRI(11, 7, 10),\n    COL_TRI(3, 2, 11),\n    COL_TRI(6, 4, 3),\n    COL_TRI(6, 3, 11),\n    COL_TRI(10, 6, 11),\n    COL_TRI(10, 9, 6),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bbh/coffin/geo.inc.c",
    "content": "// 0x0E000658\nconst GeoLayout geo_bbh_000658[] = {\n    GEO_CULLING_RADIUS(800),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_070206F0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bbh/coffin/model.inc.c",
    "content": "// 0x07020368 - 0x07020380\nstatic const Lights1 bbh_seg7_lights_07020368 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07020380 - 0x07020480\nstatic const Vtx bbh_seg7_vertex_07020380[] = {\n    {{{    58,      0,      0}, 0, {   990,    479}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -57,     77,      0}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -57,      0,      0}, 0, {     0,    479}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    58,     77,      0}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   115,      0,   -306}, 0, {  2006,    479}, {0x7c, 0x00, 0x17, 0xff}}},\n    {{{    58,     77,      0}, 0, {     0,      0}, {0x7c, 0x00, 0x17, 0xff}}},\n    {{{    58,      0,      0}, 0, {     0,    479}, {0x7c, 0x00, 0x17, 0xff}}},\n    {{{   115,     77,   -306}, 0, {  2006,      0}, {0x7c, 0x00, 0x17, 0xff}}},\n    {{{    58,      0,   -460}, 0, {   990,    479}, {0x77, 0x00, 0xd4, 0xff}}},\n    {{{   115,     77,   -306}, 0, {   -30,      0}, {0x77, 0x00, 0xd4, 0xff}}},\n    {{{   115,      0,   -306}, 0, {   -30,    479}, {0x77, 0x00, 0xd4, 0xff}}},\n    {{{    58,     77,   -460}, 0, {   990,      0}, {0x77, 0x00, 0xd4, 0xff}}},\n    {{{   -57,      0,   -460}, 0, {     0,    479}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    58,     77,   -460}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    58,      0,   -460}, 0, {   990,    479}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -57,     77,   -460}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07020480 - 0x07020500\nstatic const Vtx bbh_seg7_vertex_07020480[] = {\n    {{{  -114,      0,   -306}, 0, {   -30,    479}, {0x89, 0x00, 0xd4, 0xff}}},\n    {{{  -114,     77,   -306}, 0, {   -30,      0}, {0x89, 0x00, 0xd4, 0xff}}},\n    {{{   -57,     77,   -460}, 0, {   990,      0}, {0x89, 0x00, 0xd4, 0xff}}},\n    {{{   -57,      0,   -460}, 0, {   990,    479}, {0x89, 0x00, 0xd4, 0xff}}},\n    {{{   -57,      0,      0}, 0, {     0,    479}, {0x84, 0x00, 0x17, 0xff}}},\n    {{{  -114,     77,   -306}, 0, {  2006,      0}, {0x84, 0x00, 0x17, 0xff}}},\n    {{{  -114,      0,   -306}, 0, {  2006,    479}, {0x84, 0x00, 0x17, 0xff}}},\n    {{{   -57,     77,      0}, 0, {     0,      0}, {0x84, 0x00, 0x17, 0xff}}},\n};\n\n// 0x07020500 - 0x07020560\nstatic const Vtx bbh_seg7_vertex_07020500[] = {\n    {{{   -57,      0,   -460}, 0, {  3034,   1117}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    58,      0,   -460}, 0, {  3034,    351}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   115,      0,   -306}, 0, {  2012,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -114,      0,   -306}, 0, {  2012,   1500}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -57,      0,      0}, 0, {     0,   1117}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    58,      0,      0}, 0, {     0,    351}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07020560 - 0x070205C0\nstatic const Vtx bbh_seg7_vertex_07020560[] = {\n    {{{   -57,     77,      0}, 0, {   224,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   115,     77,   -306}, 0, {   990,    648}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -114,     77,   -306}, 0, {     0,    648}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    58,     77,      0}, 0, {   734,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    58,     77,   -460}, 0, {   734,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -57,     77,   -460}, 0, {   224,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070205C0 - 0x07020660\nstatic const Gfx bbh_seg7_dl_070205C0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bbh_seg7_texture_07004400),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 16 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_07020368.l, 1),\n    gsSPLight(&bbh_seg7_lights_07020368.a, 2),\n    gsSPVertex(bbh_seg7_vertex_07020380, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bbh_seg7_vertex_07020480, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07020660 - 0x070206A8\nstatic const Gfx bbh_seg7_dl_07020660[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bbh_seg7_texture_07003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 16 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_07020500, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 2,  4,  3, 0x0,  2,  5,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070206A8 - 0x070206F0\nstatic const Gfx bbh_seg7_dl_070206A8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bbh_seg7_texture_07003400),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_07020560, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  1,  5,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070206F0 - 0x070207A0\nconst Gfx bbh_seg7_dl_070206F0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 4, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (16 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_070205C0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (16 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_07020660),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_070206A8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"game/level_geo.h\"\n#include \"game/geo_misc.h\"\n#include \"game/camera.h\"\n#include \"game/moving_texture.h\"\n#include \"game/screen_transition.h\"\n#include \"game/paintings.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"levels/bbh/header.h\"\n\n#include \"levels/bbh/staircase_step/geo.inc.c\"\n#include \"levels/bbh/tilting_trap_platform/geo.inc.c\"\n#include \"levels/bbh/tumbling_platform_far/geo.inc.c\"\n#include \"levels/bbh/tumbling_platform_near/geo.inc.c\"\n#include \"levels/bbh/moving_bookshelf/geo.inc.c\"\n#include \"levels/bbh/mesh_elevator/geo.inc.c\"\n#include \"levels/bbh/merry_go_round/geo.inc.c\"\n#include \"levels/bbh/coffin/geo.inc.c\"\n#include \"levels/bbh/areas/1/geo.inc.c\"\n"
  },
  {
    "path": "levels/bbh/header.h",
    "content": "#ifndef BBH_HEADER_H\n#define BBH_HEADER_H\n\n#include \"types.h\"\n#include \"game/moving_texture.h\"\n\n// geo\nextern const GeoLayout geo_bbh_0005B0[];\nextern const GeoLayout geo_bbh_0005C8[];\nextern const GeoLayout geo_bbh_0005E0[];\nextern const GeoLayout geo_bbh_0005F8[];\nextern const GeoLayout geo_bbh_000610[];\nextern const GeoLayout geo_bbh_000628[];\nextern const GeoLayout geo_bbh_000640[];\nextern const GeoLayout geo_bbh_000658[];\nextern const GeoLayout geo_bbh_000670[];\nextern const GeoLayout geo_bbh_0006B0[];\nextern const GeoLayout geo_bbh_0006E8[];\nextern const GeoLayout geo_bbh_000730[];\nextern const GeoLayout geo_bbh_000750[];\nextern const GeoLayout geo_bbh_000768[];\nextern const GeoLayout geo_bbh_0007B0[];\nextern const GeoLayout geo_bbh_0007D0[];\nextern const GeoLayout geo_bbh_000800[];\nextern const GeoLayout geo_bbh_000828[];\nextern const GeoLayout geo_bbh_000860[];\nextern const GeoLayout geo_bbh_000888[];\nextern const GeoLayout geo_bbh_0008B0[];\nextern const GeoLayout geo_bbh_0008E8[];\nextern const GeoLayout geo_bbh_000950[];\nextern const GeoLayout geo_bbh_0009C8[];\nextern const GeoLayout geo_bbh_000A18[];\nextern const GeoLayout geo_bbh_000A60[];\nextern const GeoLayout geo_bbh_000AD8[];\nextern const GeoLayout geo_bbh_000B28[];\nextern const GeoLayout geo_bbh_000B88[];\nextern const GeoLayout geo_bbh_000BF0[];\nextern const GeoLayout geo_bbh_000C38[];\nextern const GeoLayout geo_bbh_000C88[];\nextern const GeoLayout geo_bbh_000CE8[];\nextern const GeoLayout geo_bbh_000D20[];\nextern const GeoLayout geo_bbh_000D68[];\nextern const GeoLayout geo_bbh_000DB0[];\nextern const GeoLayout geo_bbh_000DF0[];\nextern const GeoLayout geo_bbh_000E40[];\nextern const GeoLayout geo_bbh_000E80[];\nextern const GeoLayout geo_bbh_000EB0[];\nextern const GeoLayout geo_bbh_000F00[];\n\n// leveldata\nextern const Gfx bbh_seg7_dl_070075A8[];\nextern const Gfx bbh_seg7_dl_07007940[];\nextern const Gfx bbh_seg7_dl_07007B90[];\nextern const Gfx bbh_seg7_dl_07007FD0[];\nextern const Gfx bbh_seg7_dl_07008B58[];\nextern const Gfx bbh_seg7_dl_07008EA8[];\nextern const Gfx bbh_seg7_dl_0700AFF0[];\nextern const Gfx bbh_seg7_dl_0700B1C8[];\nextern const Gfx bbh_seg7_dl_0700B418[];\nextern const Gfx bbh_seg7_dl_0700B9E0[];\nextern const Gfx bbh_seg7_dl_0700BBF8[];\nextern const Gfx bbh_seg7_dl_0700D080[];\nextern const Gfx bbh_seg7_dl_0700D2E0[];\nextern const Gfx bbh_seg7_dl_0700D490[];\nextern const Gfx bbh_seg7_dl_0700D7E0[];\nextern const Gfx bbh_seg7_dl_0700F510[];\nextern const Gfx bbh_seg7_dl_0700F848[];\nextern const Gfx bbh_seg7_dl_07011120[];\nextern const Gfx bbh_seg7_dl_07012220[];\nextern const Gfx bbh_seg7_dl_07012510[];\nextern const Gfx bbh_seg7_dl_070126E8[];\nextern const Gfx bbh_seg7_dl_070139A8[];\nextern const Gfx bbh_seg7_dl_07013BE8[];\nextern const Gfx bbh_seg7_dl_07014FD8[];\nextern const Gfx bbh_seg7_dl_07015398[];\nextern const Gfx bbh_seg7_dl_070156E0[];\nextern const Gfx bbh_seg7_dl_07015A20[];\nextern const Gfx bbh_seg7_dl_07017378[];\nextern const Gfx bbh_seg7_dl_07017570[];\nextern const Gfx bbh_seg7_dl_07017788[];\nextern const Gfx bbh_seg7_dl_07019EF8[];\nextern const Gfx bbh_seg7_dl_0701A080[];\nextern const Gfx bbh_seg7_dl_0701A850[];\nextern const Gfx bbh_seg7_dl_0701B6D0[];\nextern const Gfx bbh_seg7_dl_0701E4E0[];\nextern const Gfx bbh_seg7_dl_0701E8D8[];\nextern const Gfx bbh_seg7_dl_0701ED18[];\nextern const Gfx bbh_seg7_dl_0701EEC8[];\nextern const Gfx bbh_seg7_dl_0701F070[];\nextern const Gfx bbh_seg7_dl_0701F2E8[];\nextern const Gfx bbh_seg7_dl_0701F5F8[];\nextern const Gfx bbh_seg7_dl_0701F7E8[];\nextern const Gfx bbh_seg7_dl_0701FAB0[];\nextern const Gfx bbh_seg7_dl_0701FD28[];\nextern const Gfx bbh_seg7_dl_0701FFE8[];\nextern const Gfx bbh_seg7_dl_070202F0[];\nextern const Gfx bbh_seg7_dl_070206F0[];\nextern const Collision bbh_seg7_collision_level[];\nextern const RoomData bbh_seg7_rooms[];\nextern const MacroObject bbh_seg7_macro_objs[];\nextern const Collision bbh_seg7_collision_staircase_step[];\nextern const Collision bbh_seg7_collision_tilt_floor_platform[];\nextern const Collision bbh_seg7_collision_07026B1C[];\nextern const Collision bbh_seg7_collision_haunted_bookshelf[];\nextern const Collision bbh_seg7_collision_mesh_elevator[];\nextern const Collision bbh_seg7_collision_merry_go_round[];\nextern const Collision bbh_seg7_collision_coffin[];\nextern const struct MovtexQuadCollection bbh_movtex_merry_go_round_water_entrance[];\nextern const struct MovtexQuadCollection bbh_movtex_merry_go_round_water_side[];\n\n// script\nextern const LevelScript level_bbh_entry[];\n\n#endif\n"
  },
  {
    "path": "levels/bbh/level.yaml",
    "content": "# Big Boo's Haunt\nshort-name: bbh\nfull-name: Big Boo's Haunt\ntexture-file: [\"/texture.inc.c\"]\narea-count: 1\nobjects: [coffin, merry_go_round, mesh_elevator, moving_bookshelf, staircase_step, tilting_trap_platform, tumbling_platform_far, tumbling_platform_near]\nshared-path: []\n# loaded files\nskybox-bin: bbh\ntexture-bin: spooky\neffects: false\nactor-bins: [group9, group17]\ncommon-bin: [common0]\n"
  },
  {
    "path": "levels/bbh/leveldata.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"surface_terrains.h\"\n#include \"moving_texture_macros.h\"\n#include \"level_misc_macros.h\"\n#include \"macro_presets.h\"\n#include \"special_presets.h\"\n#include \"textures.h\"\n#include \"dialog_ids.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/bbh/texture.inc.c\"\n#include \"levels/bbh/areas/1/1/model.inc.c\"\n#include \"levels/bbh/areas/1/2/model.inc.c\"\n#include \"levels/bbh/areas/1/3/model.inc.c\"\n#include \"levels/bbh/areas/1/4/model.inc.c\"\n#include \"levels/bbh/areas/1/5/model.inc.c\"\n#include \"levels/bbh/areas/1/6/model.inc.c\"\n#include \"levels/bbh/areas/1/7/model.inc.c\"\n#include \"levels/bbh/areas/1/8/model.inc.c\"\n#include \"levels/bbh/areas/1/9/model.inc.c\"\n#include \"levels/bbh/areas/1/10/model.inc.c\"\n#include \"levels/bbh/areas/1/11/model.inc.c\"\n#include \"levels/bbh/areas/1/12/model.inc.c\"\n#include \"levels/bbh/areas/1/13/model.inc.c\"\n#include \"levels/bbh/areas/1/14/model.inc.c\"\n#include \"levels/bbh/areas/1/15/model.inc.c\"\n#include \"levels/bbh/areas/1/16/model.inc.c\"\n#include \"levels/bbh/areas/1/17/model.inc.c\"\n#include \"levels/bbh/areas/1/18/model.inc.c\"\n#include \"levels/bbh/areas/1/19/model.inc.c\"\n#include \"levels/bbh/areas/1/20/model.inc.c\"\n#include \"levels/bbh/areas/1/21/model.inc.c\"\n#include \"levels/bbh/areas/1/22/model.inc.c\"\n#include \"levels/bbh/areas/1/23/model.inc.c\"\n#include \"levels/bbh/areas/1/24/model.inc.c\"\n#include \"levels/bbh/areas/1/25/model.inc.c\"\n#include \"levels/bbh/areas/1/26/model.inc.c\"\n#include \"levels/bbh/areas/1/27/model.inc.c\"\n#include \"levels/bbh/areas/1/28/model.inc.c\"\n#include \"levels/bbh/areas/1/29/model.inc.c\"\n#include \"levels/bbh/areas/1/30/model.inc.c\"\n#include \"levels/bbh/areas/1/31/model.inc.c\"\n#include \"levels/bbh/areas/1/32/model.inc.c\"\n#include \"levels/bbh/areas/1/33/model.inc.c\"\n#include \"levels/bbh/areas/1/34/model.inc.c\"\n#include \"levels/bbh/areas/1/35/model.inc.c\"\n#include \"levels/bbh/areas/1/36/model.inc.c\"\n#include \"levels/bbh/areas/1/37/model.inc.c\"\n#include \"levels/bbh/areas/1/38/model.inc.c\"\n#include \"levels/bbh/areas/1/39/model.inc.c\"\n#include \"levels/bbh/staircase_step/model.inc.c\"\n#include \"levels/bbh/tilting_trap_platform/model.inc.c\"\n#include \"levels/bbh/tumbling_platform_far/model.inc.c\"\n#include \"levels/bbh/tumbling_platform_near/model.inc.c\"\n#include \"levels/bbh/moving_bookshelf/model.inc.c\"\n#include \"levels/bbh/mesh_elevator/model.inc.c\"\n#include \"levels/bbh/merry_go_round/model.inc.c\"\n#include \"levels/bbh/coffin/model.inc.c\"\n#include \"levels/bbh/areas/1/collision.inc.c\"\n#include \"levels/bbh/areas/1/room.inc.c\"\n#include \"levels/bbh/areas/1/macro.inc.c\"\n#include \"levels/bbh/staircase_step/collision.inc.c\"\n#include \"levels/bbh/tilting_trap_platform/collision.inc.c\"\n#include \"levels/bbh/tumbling_platform_far/collision.inc.c\"\n#include \"levels/bbh/tumbling_platform_near/collision.inc.c\"\n#include \"levels/bbh/moving_bookshelf/collision.inc.c\"\n#include \"levels/bbh/mesh_elevator/collision.inc.c\"\n#include \"levels/bbh/merry_go_round/collision.inc.c\"\n#include \"levels/bbh/coffin/collision.inc.c\"\n#include \"levels/bbh/areas/1/movtext.inc.c\"\n"
  },
  {
    "path": "levels/bbh/merry_go_round/collision.inc.c",
    "content": "// 0x07026C1C - 0x07026D18\nconst Collision bbh_seg7_collision_merry_go_round[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x10),\n    COL_VERTEX(-204, 0, -204),\n    COL_VERTEX(51, 307, -50),\n    COL_VERTEX(205, 0, -204),\n    COL_VERTEX(-50, 307, -50),\n    COL_VERTEX(-204, 0, 205),\n    COL_VERTEX(-50, 307, 51),\n    COL_VERTEX(51, 1024, -50),\n    COL_VERTEX(-50, 1024, -50),\n    COL_VERTEX(51, 1024, 51),\n    COL_VERTEX(51, 307, 51),\n    COL_VERTEX(205, 0, 205),\n    COL_VERTEX(-50, 1024, 51),\n    COL_VERTEX(-1433, 0, 1434),\n    COL_VERTEX(1434, 0, 1434),\n    COL_VERTEX(1434, 0, -1433),\n    COL_VERTEX(-1433, 0, -1433),\n    COL_TRI_INIT(SURFACE_MGR_MUSIC, 24),\n    COL_TRI(10, 12, 13),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI(4, 3, 0),\n    COL_TRI(4, 5, 3),\n    COL_TRI(3, 6, 1),\n    COL_TRI(3, 7, 6),\n    COL_TRI(5, 7, 3),\n    COL_TRI(1, 8, 9),\n    COL_TRI(1, 6, 8),\n    COL_TRI(2, 1, 9),\n    COL_TRI(2, 9, 10),\n    COL_TRI(5, 11, 7),\n    COL_TRI(10, 5, 4),\n    COL_TRI(9, 11, 5),\n    COL_TRI(10, 9, 5),\n    COL_TRI(9, 8, 11),\n    COL_TRI(14, 2, 10),\n    COL_TRI(10, 4, 12),\n    COL_TRI(14, 10, 13),\n    COL_TRI(12, 4, 0),\n    COL_TRI(12, 0, 15),\n    COL_TRI(15, 0, 2),\n    COL_TRI(15, 2, 14),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bbh/merry_go_round/geo.inc.c",
    "content": "// 0x0E000640\nconst GeoLayout geo_bbh_000640[] = {\n    GEO_CULLING_RADIUS(2300),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_070202F0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bbh/merry_go_round/model.inc.c",
    "content": "// 0x07020058 - 0x07020070\nstatic const Lights1 bbh_seg7_lights_07020058 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07020070 - 0x07020130\nstatic const Vtx bbh_seg7_vertex_07020070[] = {\n    {{{  -204,      0,   -204}, 0, {     0,      0}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{     0,    410,      0}, 0, {   480,    784}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{   205,      0,   -204}, 0, {   990,      0}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  -204,      0,    205}, 0, {   990,      0}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{     0,    410,      0}, 0, {   478,    784}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  -204,      0,   -204}, 0, {     0,      0}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{   205,      0,   -204}, 0, {     0,      0}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{     0,    410,      0}, 0, {   478,    784}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{   205,      0,    205}, 0, {   990,      0}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{   205,      0,    205}, 0, {   990,      0}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,    410,      0}, 0, {   480,    784}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -204,      0,    205}, 0, {     0,      0}, {0x00, 0x38, 0x71, 0xff}}},\n};\n\n// 0x07020130 - 0x07020230\nstatic const Vtx bbh_seg7_vertex_07020130[] = {\n    {{{  1434,      0,  -1433}, 0, {  4056,   2164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   205,      0,   -204}, 0, {   990,    284}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   205,      0,    205}, 0, {     0,    284}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   205,      0,    205}, 0, {   990,    284}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1433,      0,   1434}, 0, { -3096,   2164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1434,      0,   1434}, 0, {  4056,   2164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -204,      0,    205}, 0, {     0,    284}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1433,      0,   1434}, 0, {  4056,   2164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -204,      0,   -204}, 0, {     0,    284}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1433,      0,  -1433}, 0, { -3096,   2164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -204,      0,    205}, 0, {   990,    284}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1433,      0,  -1433}, 0, {  4056,   2164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   205,      0,   -204}, 0, {     0,    284}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1434,      0,  -1433}, 0, { -3096,   2164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -204,      0,   -204}, 0, {   990,    284}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1434,      0,   1434}, 0, { -3096,   2164}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07020230 - 0x07020288\nstatic const Gfx bbh_seg7_dl_07020230[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_07020058.l, 1),\n    gsSPLight(&bbh_seg7_lights_07020058.a, 2),\n    gsSPVertex(bbh_seg7_vertex_07020070, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07020288 - 0x070202F0\nstatic const Gfx bbh_seg7_dl_07020288[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bbh_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_07020130, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070202F0 - 0x07020368\nconst Gfx bbh_seg7_dl_070202F0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_07020230),\n    gsSPDisplayList(bbh_seg7_dl_07020288),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/mesh_elevator/collision.inc.c",
    "content": "// 0x07026B94 - 0x07026C1C\nconst Collision bbh_seg7_collision_mesh_elevator[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-306, 0, -255),\n    COL_VERTEX(307, 0, 256),\n    COL_VERTEX(307, 0, -255),\n    COL_VERTEX(-306, 0, 256),\n    COL_VERTEX(307, -101, 256),\n    COL_VERTEX(307, -101, -255),\n    COL_VERTEX(-306, -101, 256),\n    COL_VERTEX(-306, -101, -255),\n    COL_TRI_INIT(SURFACE_DEFAULT, 10),\n    COL_TRI(1, 4, 5),\n    COL_TRI(4, 6, 7),\n    COL_TRI(5, 4, 7),\n    COL_TRI(3, 6, 4),\n    COL_TRI(3, 4, 1),\n    COL_TRI(0, 6, 3),\n    COL_TRI(0, 7, 6),\n    COL_TRI(2, 5, 7),\n    COL_TRI(2, 7, 0),\n    COL_TRI(1, 5, 2),\n    COL_TRI_INIT(SURFACE_NOISE_DEFAULT, 2),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bbh/mesh_elevator/geo.inc.c",
    "content": "// 0x0E000628\nconst GeoLayout geo_bbh_000628[] = {\n    GEO_CULLING_RADIUS(600),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bbh_seg7_dl_0701FFE8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bbh/mesh_elevator/model.inc.c",
    "content": "// 0x0701FDB8 - 0x0701FEA8\nstatic const Vtx bbh_seg7_vertex_0701FDB8[] = {\n    {{{  -306,      0,    256}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   307,   -101,    256}, 0, {  6100,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   307,      0,    256}, 0, {  6100,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   307,      0,    256}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   307,   -101,    256}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   307,   -101,   -255}, 0, { -4118,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   307,      0,   -255}, 0, { -4118,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   307,      0,   -255}, 0, {  6100,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   307,   -101,   -255}, 0, {  6100,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -306,   -101,   -255}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -306,      0,   -255}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -306,      0,   -255}, 0, { -4118,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -306,   -101,   -255}, 0, { -4118,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -306,   -101,    256}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -306,      0,    256}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701FEA8 - 0x0701FF58\nstatic const Vtx bbh_seg7_vertex_0701FEA8[] = {\n    {{{   307,   -101,    256}, 0, { -2074,  -3608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -306,   -101,    256}, 0, {  4056,  -3608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -306,   -101,   -255}, 0, {  4056,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -306,      0,    256}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -306,   -101,    256}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   307,   -101,    256}, 0, {  6100,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -306,      0,   -255}, 0, {  4056,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -306,      0,    256}, 0, {  4056,  -3608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   307,      0,    256}, 0, { -2074,  -3608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   307,      0,   -255}, 0, { -2074,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   307,   -101,   -255}, 0, { -2074,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701FF58 - 0x0701FFE8\nstatic const Gfx bbh_seg7_dl_0701FF58[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_0701FDB8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701FEA8, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP1Triangle(10,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701FFE8 - 0x07020058\nconst Gfx bbh_seg7_dl_0701FFE8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0701FF58),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/moving_bookshelf/collision.inc.c",
    "content": "// 0x07026B4C - 0x07026B94\nconst Collision bbh_seg7_collision_haunted_bookshelf[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x6),\n    COL_VERTEX(-255, 819, -204),\n    COL_VERTEX(-255, 0, 205),\n    COL_VERTEX(-255, 819, 205),\n    COL_VERTEX(-255, 0, -204),\n    COL_VERTEX(256, 0, -204),\n    COL_VERTEX(256, 819, -204),\n    COL_TRI_INIT(SURFACE_DEFAULT, 4),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI(0, 4, 3),\n    COL_TRI(0, 5, 4),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bbh/moving_bookshelf/geo.inc.c",
    "content": "// 0x0E000610\nconst GeoLayout geo_bbh_000610[] = {\n    GEO_CULLING_RADIUS(1000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0701FD28),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bbh/moving_bookshelf/model.inc.c",
    "content": "// 0x0701FB20 - 0x0701FB38\nstatic const Lights1 bbh_seg7_lights_0701FB20 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0701FB38 - 0x0701FB78\nstatic const Vtx bbh_seg7_vertex_0701FB38[] = {\n    {{{  -255,    819,   -204}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -153,    819,   -204}, 0, {   734,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -153,      0,   -204}, 0, {   734,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -255,      0,   -204}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0701FB78 - 0x0701FC78\nstatic const Vtx bbh_seg7_vertex_0701FB78[] = {\n    {{{  -255,      0,    205}, 0, {  2012,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,    512,    205}, 0, {  2012,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,    512,   -204}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -153,    512,   -204}, 0, {  2012,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,      0,   -204}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -153,      0,   -204}, 0, {  2012,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,    512,   -204}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -153,    819,   -204}, 0, {  2012,    580}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,    512,   -204}, 0, {     0,   1808}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -153,    512,   -204}, 0, {  2012,   1808}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,    819,   -204}, 0, {     0,    580}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -255,    512,    205}, 0, {  2012,   1808}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,    819,   -204}, 0, {     0,    580}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,    512,   -204}, 0, {     0,   1808}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,    819,    205}, 0, {  2012,    580}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,      0,   -204}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0701FC78 - 0x0701FCC0\nstatic const Gfx bbh_seg7_dl_0701FC78[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_0701FB20.l, 1),\n    gsSPLight(&bbh_seg7_lights_0701FB20.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0701FB38, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701FCC0 - 0x0701FD28\nstatic const Gfx bbh_seg7_dl_0701FCC0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09002800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_0701FB78, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701FD28 - 0x0701FDB8\nconst Gfx bbh_seg7_dl_0701FD28[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0701FC78),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0701FCC0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/script.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"behavior_data.h\"\n#include \"model_ids.h\"\n#include \"seq_ids.h\"\n#include \"dialog_ids.h\"\n#include \"segment_symbols.h\"\n#include \"level_commands.h\"\n\n#include \"game/level_update.h\"\n\n#include \"levels/scripts.h\"\n\n#include \"actors/common1.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/bbh/header.h\"\n\n\nstatic const LevelScript script_func_local_1[] = {\n    OBJECT(/*model*/ MODEL_RED_FLAME,                  /*pos*/  2089,  1331, -1125, /*angle*/ 0, 270, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlame),\n    OBJECT(/*model*/ MODEL_RED_FLAME,                  /*pos*/  1331,  1075, -1330, /*angle*/ 0, 90, 0,  /*bhvParam*/ 0, /*bhv*/ bhvFlame),\n    OBJECT(/*model*/ MODEL_RED_FLAME,                  /*pos*/  2089,  1331,  -511, /*angle*/ 0, 270, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlame),\n    OBJECT(/*model*/ MODEL_RED_FLAME,                  /*pos*/  -511,   358, -1330, /*angle*/ 0, 90, 0,  /*bhvParam*/ 0, /*bhv*/ bhvFlame),\n    OBJECT(/*model*/ MODEL_RED_FLAME,                  /*pos*/  1126,   358,  2212, /*angle*/ 0, 0, 0,   /*bhvParam*/ 0, /*bhv*/ bhvFlame),\n    OBJECT(/*model*/ MODEL_RED_FLAME,                  /*pos*/   205,   358,  2212, /*angle*/ 0, 0, 0,   /*bhvParam*/ 0, /*bhv*/ bhvFlame),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_2[] = {\n    OBJECT(/*model*/ MODEL_BBH_TILTING_FLOOR_PLATFORM, /*pos*/  2866,   820,  1897, /*angle*/ 0, 0, 0,   /*bhvParam*/ 0, /*bhv*/ bhvBBHTiltingTrapPlatform),\n    OBJECT(/*model*/ MODEL_BBH_TUMBLING_PLATFORM,      /*pos*/  2961,     0,  -768, /*angle*/ 0, 0, 0,   /*bhvParam*/ 0, /*bhv*/ bhvBBHTumblingBridge),\n    OBJECT(/*model*/ MODEL_BBH_MOVING_BOOKSHELF,       /*pos*/ -1994,   819,   213, /*angle*/ 0, 0, 0,   /*bhvParam*/ 0, /*bhv*/ bhvHauntedBookshelf),\n    OBJECT(/*model*/ MODEL_BBH_MESH_ELEVATOR,          /*pos*/ -2985,  -205,  5400, /*angle*/ 0, -45, 0, /*bhvParam*/ 0, /*bhv*/ bhvMeshElevator),\n    OBJECT(/*model*/ MODEL_BBH_MERRY_GO_ROUND,         /*pos*/  -205, -2560,   205, /*angle*/ 0, 0, 0,   /*bhvParam*/ 0, /*bhv*/ bhvMerryGoRound),\n    OBJECT(/*model*/ MODEL_NONE,                       /*pos*/  2200,   819,  -800, /*angle*/ 0, 0, 0,   /*bhvParam*/ 0, /*bhv*/ bhvCoffinSpawner),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_3[] = {\n    OBJECT_WITH_ACTS(/*model*/ MODEL_BOO,                        /*pos*/  1000,    50,  1000, /*angle*/ 0, 0, 0,   /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_1) | BPARAM2(BIG_BOO_BP_GHOST_HUNT), /*bhv*/ bhvGhostHuntBigBoo,       /*acts*/ ACT_1),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_BOO,                        /*pos*/    20,   100,  -908, /*angle*/ 0, 0, 0,   /*bhvParam*/ BPARAM2(BOO_BP_GHOST_HUNT), /*bhv*/ bhvGhostHuntBoo,                 /*acts*/ ACT_1),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_BOO,                        /*pos*/  3150,   100,   398, /*angle*/ 0, 0, 0,   /*bhvParam*/ BPARAM2(BOO_BP_GHOST_HUNT), /*bhv*/ bhvGhostHuntBoo,                 /*acts*/ ACT_1),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_BOO,                        /*pos*/ -2000,   150,  -800, /*angle*/ 0, 0, 0,   /*bhvParam*/ BPARAM2(BOO_BP_GHOST_HUNT), /*bhv*/ bhvGhostHuntBoo,                 /*acts*/ ACT_1),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_BOO,                        /*pos*/  2851,   100,  2289, /*angle*/ 0, 0, 0,   /*bhvParam*/ BPARAM2(BOO_BP_GHOST_HUNT), /*bhv*/ bhvGhostHuntBoo,                 /*acts*/ ACT_1),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_BOO,                        /*pos*/ -1551,   100, -1018, /*angle*/ 0, 0, 0,   /*bhvParam*/ BPARAM2(BOO_BP_GHOST_HUNT), /*bhv*/ bhvGhostHuntBoo,                 /*acts*/ ACT_1),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_BBH_STAIRCASE_STEP,         /*pos*/   973,     0,   517, /*angle*/ 0, 0, 0,   /*bhvParam*/ 0, /*bhv*/ bhvHiddenStaircaseStep, /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_BBH_STAIRCASE_STEP,         /*pos*/   973,  -206,   717, /*angle*/ 0, 0, 0,   /*bhvParam*/ 0, /*bhv*/ bhvHiddenStaircaseStep, /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_BBH_STAIRCASE_STEP,         /*pos*/   973,  -412,   917, /*angle*/ 0, 0, 0,   /*bhvParam*/ 0, /*bhv*/ bhvHiddenStaircaseStep, /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_BOO,                        /*pos*/    20,   100,  -908, /*angle*/ 0, 0, 0,   /*bhvParam*/ 0, /*bhv*/ bhvBoo,                 /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_BOO,                        /*pos*/  3150,   100,   398, /*angle*/ 0, 0, 0,   /*bhvParam*/ 0, /*bhv*/ bhvBoo,                 /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_BOO,                        /*pos*/ -2000,   150,  -800, /*angle*/ 0, 0, 0,   /*bhvParam*/ 0, /*bhv*/ bhvBoo,                 /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_BOO,                        /*pos*/  2851,   100,  2289, /*angle*/ 0, 0, 0,   /*bhvParam*/ 0, /*bhv*/ bhvBoo,                 /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_BOO,                        /*pos*/ -1551,   100, -1018, /*angle*/ 0, 0, 0,   /*bhvParam*/ 0, /*bhv*/ bhvBoo,                 /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_NONE,                       /*pos*/   990, -2146,  -908, /*angle*/ 0, -45, 0, /*bhvParam*/ BPARAM2(0x03), /*bhv*/ bhvFlamethrower,          /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_NONE,                       /*pos*/ -1100, -2372,  1100, /*angle*/ 0, 135, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_2), /*bhv*/ bhvMerryGoRoundBooManager,         /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_BOO,                        /*pos*/  1030,  1922,  2546, /*angle*/ 0, -90, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_5), /*bhv*/ bhvBalconyBigBoo,        /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_BOO,                        /*pos*/   581,  1850,  -206, /*angle*/ 0, -90, 0, /*bhvParam*/ 0, /*bhv*/ bhvBoo,                 /*acts*/ ALL_ACTS),\n    OBJECT          (/*model*/ MODEL_MAD_PIANO,                  /*pos*/ -1300,     0,  2310, /*angle*/ 0, 243, 0, /*bhvParam*/ 0, /*bhv*/ bhvMadPiano),\n    OBJECT          (/*model*/ MODEL_HAUNTED_CHAIR,              /*pos*/ -1530,     0,  2200, /*angle*/ 0, 66, 0,  /*bhvParam*/ 0, /*bhv*/ bhvHauntedChair),\n    OBJECT          (/*model*/ MODEL_NONE,                       /*pos*/ -1330,   890,   200, /*angle*/ 0, 90, 0,  /*bhvParam*/ 0, /*bhv*/ bhvBookendSpawn),\n    OBJECT          (/*model*/ MODEL_NONE,                       /*pos*/  -818,   890,  -200, /*angle*/ 0, 270, 0, /*bhvParam*/ 0, /*bhv*/ bhvBookendSpawn),\n    OBJECT          (/*model*/ MODEL_NONE,                       /*pos*/ -1330,   890,  -622, /*angle*/ 0, 90, 0,  /*bhvParam*/ 0, /*bhv*/ bhvBookendSpawn),\n    OBJECT          (/*model*/ MODEL_NONE,                       /*pos*/  -818,   890,  -686, /*angle*/ 0, 270, 0, /*bhvParam*/ 0, /*bhv*/ bhvBookendSpawn),\n    OBJECT          (/*model*/ MODEL_NONE,                       /*pos*/ -1950,   880,     8, /*angle*/ 0, 180, 0, /*bhvParam*/ 0, /*bhv*/ bhvHauntedBookshelfManager),\n    OBJECT          (/*model*/ MODEL_BOOKEND,                    /*pos*/  2680,  1045,   876, /*angle*/ 0, 166, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlyingBookend),\n    OBJECT          (/*model*/ MODEL_BOOKEND,                    /*pos*/  3075,  1045,   995, /*angle*/ 0, 166, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlyingBookend),\n    OBJECT          (/*model*/ MODEL_BOOKEND,                    /*pos*/ -1411,   218,   922, /*angle*/ 0, 180, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlyingBookend),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_4[] = {\n    OBJECT_WITH_ACTS(/*model*/ MODEL_STAR, /*pos*/ -2030, 1350,  1940, /*angle*/ 0, 0, 0,  /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_3), /*bhv*/ bhvStar,                    /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_NONE, /*pos*/  -204, 1100,  1576, /*angle*/ 0, 0, 0,  /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_4), /*bhv*/ bhvHiddenRedCoinStar,    /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_NONE, /*pos*/   923, 1741,  -332, /*angle*/ 0, 18, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_6) | BPARAM2(0x01), /*bhv*/ bhvMrI,                    /*acts*/ ALL_ACTS),\n    RETURN(),\n};\n\nconst LevelScript level_bbh_entry[] = {\n    INIT_LEVEL(),\n    LOAD_MIO0        (/*seg*/ 0x07, _bbh_segment_7SegmentRomStart, _bbh_segment_7SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x0A, _bbh_skybox_mio0SegmentRomStart, _bbh_skybox_mio0SegmentRomEnd),\n    LOAD_MIO0_TEXTURE(/*seg*/ 0x09, _spooky_mio0SegmentRomStart, _spooky_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x05, _group9_mio0SegmentRomStart, _group9_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0C, _group9_geoSegmentRomStart,  _group9_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x06, _group17_mio0SegmentRomStart, _group17_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0D, _group17_geoSegmentRomStart, _group17_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x08, _common0_mio0SegmentRomStart, _common0_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0F, _common0_geoSegmentRomStart,  _common0_geoSegmentRomEnd),\n    ALLOC_LEVEL_POOL(),\n    MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),\n    JUMP_LINK(script_func_global_1),\n    JUMP_LINK(script_func_global_10),\n    JUMP_LINK(script_func_global_18),\n    LOAD_MODEL_FROM_GEO(MODEL_BBH_HAUNTED_DOOR,           haunted_door_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_BBH_STAIRCASE_STEP,         geo_bbh_0005B0),\n    LOAD_MODEL_FROM_GEO(MODEL_BBH_TILTING_FLOOR_PLATFORM, geo_bbh_0005C8),\n    LOAD_MODEL_FROM_GEO(MODEL_BBH_TUMBLING_PLATFORM,      geo_bbh_0005E0),\n    LOAD_MODEL_FROM_GEO(MODEL_BBH_TUMBLING_PLATFORM_PART, geo_bbh_0005F8),\n    LOAD_MODEL_FROM_GEO(MODEL_BBH_MOVING_BOOKSHELF,       geo_bbh_000610),\n    LOAD_MODEL_FROM_GEO(MODEL_BBH_MESH_ELEVATOR,          geo_bbh_000628),\n    LOAD_MODEL_FROM_GEO(MODEL_BBH_MERRY_GO_ROUND,         geo_bbh_000640),\n    LOAD_MODEL_FROM_GEO(MODEL_BBH_WOODEN_TOMB,            geo_bbh_000658),\n\n    AREA(/*index*/ 1, geo_bbh_000F00),\n        JUMP_LINK(script_func_local_1),\n        JUMP_LINK(script_func_local_2),\n        JUMP_LINK(script_func_local_3),\n        JUMP_LINK(script_func_local_4),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ 666, 796, 5350, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvSpinAirborneWarp),\n        WARP_NODE(/*id*/ WARP_NODE_0A,      /*destLevel*/ LEVEL_BBH,              /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_SUCCESS, /*destLevel*/ LEVEL_CASTLE_COURTYARD, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH,   /*destLevel*/ LEVEL_CASTLE_COURTYARD, /*destArea*/ 1, /*destNode*/ WARP_NODE_0B, /*flags*/ WARP_NO_CHECKPOINT),\n        TERRAIN(/*terrainData*/ bbh_seg7_collision_level),\n        MACRO_OBJECTS(/*objList*/ bbh_seg7_macro_objs),\n        ROOMS(/*surfaceRooms*/ bbh_seg7_rooms),\n        SHOW_DIALOG(/*index*/ 0x00, DIALOG_098),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0006, /*seq*/ SEQ_LEVEL_SPOOKY),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_SPOOKY),\n    END_AREA(),\n\n    FREE_LEVEL_POOL(),\n    MARIO_POS(/*area*/ 1, /*yaw*/ 180, /*pos*/ 666, -204, 5350),\n    CALL(/*arg*/ 0, /*func*/ lvl_init_or_update),\n    CALL_LOOP(/*arg*/ 1, /*func*/ lvl_init_or_update),\n    CLEAR_LEVEL(),\n    SLEEP_BEFORE_EXIT(/*frames*/ 1),\n    EXIT(),\n};\n"
  },
  {
    "path": "levels/bbh/staircase_step/collision.inc.c",
    "content": "// 0x07026A1C - 0x07026A98\nconst Collision bbh_seg7_collision_staircase_step[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(154, 614, -101),\n    COL_VERTEX(-153, 614, 102),\n    COL_VERTEX(154, 614, 102),\n    COL_VERTEX(-153, 614, -101),\n    COL_VERTEX(154, 0, -101),\n    COL_VERTEX(-153, 0, -101),\n    COL_VERTEX(154, 0, 102),\n    COL_VERTEX(-153, 0, 102),\n    COL_TRI_INIT(SURFACE_DEFAULT, 8),\n    COL_TRI(2, 7, 6),\n    COL_TRI(4, 5, 0),\n    COL_TRI(5, 3, 0),\n    COL_TRI(4, 2, 6),\n    COL_TRI(4, 0, 2),\n    COL_TRI(5, 7, 1),\n    COL_TRI(5, 1, 3),\n    COL_TRI(2, 1, 7),\n    COL_TRI_INIT(SURFACE_NOISE_DEFAULT, 2),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bbh/staircase_step/geo.inc.c",
    "content": "// 0x0E0005B0\nconst GeoLayout geo_bbh_0005B0[] = {\n    GEO_CULLING_RADIUS(700),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0701F2E8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bbh/staircase_step/model.inc.c",
    "content": "// 0x0701F0E0 - 0x0701F0F8\nstatic const Lights1 bbh_seg7_lights_0701F0E0 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0701F0F8 - 0x0701F138\nstatic const Vtx bbh_seg7_vertex_0701F0F8[] = {\n    {{{   154,    614,   -101}, 0, {  3034,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -153,    614,   -101}, 0, { -3096,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -153,    614,    102}, 0, { -3096,   6098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   154,    614,    102}, 0, {  3034,   6098}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0701F138 - 0x0701F238\nstatic const Vtx bbh_seg7_vertex_0701F138[] = {\n    {{{   154,      0,   -101}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -153,      0,   -101}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   154,    614,   -101}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   154,    614,    102}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -153,      0,    102}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   154,      0,    102}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -153,    614,    102}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -153,      0,   -101}, 0, {   308,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -153,    614,    102}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -153,    614,   -101}, 0, {   308,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -153,      0,    102}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   154,      0,   -101}, 0, {   308,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   154,    614,   -101}, 0, {   308,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   154,    614,    102}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   154,      0,    102}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -153,    614,   -101}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0701F238 - 0x0701F280\nstatic const Gfx bbh_seg7_dl_0701F238[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_0900A000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_0701F0E0.l, 1),\n    gsSPLight(&bbh_seg7_lights_0701F0E0.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0701F0F8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701F280 - 0x0701F2E8\nstatic const Gfx bbh_seg7_dl_0701F280[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_0701F138, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  1, 15,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701F2E8 - 0x0701F378\nconst Gfx bbh_seg7_dl_0701F2E8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0701F238),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0701F280),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/texture.inc.c",
    "content": "// 0x07000000 - 0x07001000\nALIGNED8 static const Texture bbh_seg7_texture_07000000[] = {\n#include \"levels/bbh/0.rgba16.inc.c\"\n};\n\n// 0x07001000 - 0x07001800\nALIGNED8 static const Texture bbh_seg7_texture_07001000[] = {\n#include \"levels/bbh/1.rgba16.inc.c\"\n};\n\n// 0x07001800 - 0x07002000\nALIGNED8 static const Texture bbh_seg7_texture_07001800[] = {\n#include \"levels/bbh/2.rgba16.inc.c\"\n};\n\n// 0x07002000 - 0x07003000\nALIGNED8 static const Texture bbh_seg7_texture_07002000[] = {\n#include \"levels/bbh/3.rgba16.inc.c\"\n};\n\n// 0x07003000 - 0x07003400\nALIGNED8 static const Texture bbh_seg7_texture_07003000[] = {\n#include \"levels/bbh/4.rgba16.inc.c\"\n};\n\n// 0x07003400 - 0x07004400\nALIGNED8 static const Texture bbh_seg7_texture_07003400[] = {\n#include \"levels/bbh/5.rgba16.inc.c\"\n};\n\n// 0x07004400 - 0x07004800\nALIGNED8 static const Texture bbh_seg7_texture_07004400[] = {\n#include \"levels/bbh/6.rgba16.inc.c\"\n};\n"
  },
  {
    "path": "levels/bbh/tilting_trap_platform/collision.inc.c",
    "content": "// 0x07026A98 - 0x07026B1C\nconst Collision bbh_seg7_collision_tilt_floor_platform[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(307, 0, -255),\n    COL_VERTEX(-306, 0, 256),\n    COL_VERTEX(307, 0, 256),\n    COL_VERTEX(307, -101, -255),\n    COL_VERTEX(307, -101, 256),\n    COL_VERTEX(-306, -101, -255),\n    COL_VERTEX(-306, 0, -255),\n    COL_VERTEX(-306, -101, 256),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(2, 3, 0),\n    COL_TRI(2, 4, 3),\n    COL_TRI(1, 4, 2),\n    COL_TRI(0, 3, 5),\n    COL_TRI(4, 5, 3),\n    COL_TRI(0, 6, 1),\n    COL_TRI(0, 5, 6),\n    COL_TRI(4, 7, 5),\n    COL_TRI(1, 7, 4),\n    COL_TRI(6, 7, 1),\n    COL_TRI(6, 5, 7),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bbh/tilting_trap_platform/geo.inc.c",
    "content": "// 0x0E0005C8\nconst GeoLayout geo_bbh_0005C8[] = {\n    GEO_CULLING_RADIUS(600),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0701F5F8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bbh/tilting_trap_platform/model.inc.c",
    "content": "// 0x0701F378 - 0x0701F390\nstatic const Lights1 bbh_seg7_lights_0701F378 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0701F390 - 0x0701F3D0\nstatic const Vtx bbh_seg7_vertex_0701F390[] = {\n    {{{   307,   -101,    256}, 0, {   698,    260}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -306,   -101,    256}, 0, {   260,    260}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -306,   -101,   -255}, 0, {   260,    624}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   307,   -101,   -255}, 0, {   698,    624}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0701F3D0 - 0x0701F4D0\nstatic const Vtx bbh_seg7_vertex_0701F3D0[] = {\n    {{{   307,      0,    256}, 0, {  2522,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   307,   -101,   -255}, 0, {     0,    988}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   307,      0,   -255}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   307,      0,   -255}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -306,   -101,   -255}, 0, {  3034,    992}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -306,      0,   -255}, 0, {  3034,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   307,   -101,   -255}, 0, {     0,    992}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -306,      0,   -255}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -306,   -101,   -255}, 0, {     0,    988}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -306,   -101,    256}, 0, {  2522,    988}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -306,      0,    256}, 0, {  2522,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -306,      0,    256}, 0, {  3034,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -306,   -101,    256}, 0, {  3034,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   307,   -101,    256}, 0, {     0,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   307,      0,    256}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   307,   -101,    256}, 0, {  2522,    988}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0701F4D0 - 0x0701F510\nstatic const Vtx bbh_seg7_vertex_0701F4D0[] = {\n    {{{   307,      0,   -255}, 0, {  5080,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -306,      0,    256}, 0, {     0,  -5142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   307,      0,    256}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -306,      0,   -255}, 0, {  5076,  -5142}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0701F510 - 0x0701F558\nstatic const Gfx bbh_seg7_dl_0701F510[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_0701F378.l, 1),\n    gsSPLight(&bbh_seg7_lights_0701F378.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0701F390, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701F558 - 0x0701F5C0\nstatic const Gfx bbh_seg7_dl_0701F558[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_0701F3D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701F5C0 - 0x0701F5F8\nstatic const Gfx bbh_seg7_dl_0701F5C0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09009000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bbh_seg7_vertex_0701F4D0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701F5F8 - 0x0701F6A8\nconst Gfx bbh_seg7_dl_0701F5F8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0701F510),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0701F558),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0701F5C0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/tumbling_platform_far/collision.inc.c",
    "content": "// Blank File\n\n"
  },
  {
    "path": "levels/bbh/tumbling_platform_far/geo.inc.c",
    "content": "// 0x0E0005E0\nconst GeoLayout geo_bbh_0005E0[] = {\n    GEO_CULLING_RADIUS(650),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0701F7E8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bbh/tumbling_platform_far/model.inc.c",
    "content": "// 0x0701F6A8 - 0x0701F6C0\nstatic const Lights1 bbh_seg7_lights_0701F6A8 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0701F6C0 - 0x0701F780\nstatic const Vtx bbh_seg7_vertex_0701F6C0[] = {\n    {{{  -101,      0,   -460}, 0, {   990,   9164}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -101,   -101,    461}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -101,      0,    461}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -101,   -101,   -460}, 0, {     0,   9164}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   102,      0,    461}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,   -101,   -460}, 0, {     0,   9164}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,      0,   -460}, 0, {   990,   9164}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,   -101,    461}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,      0,   -460}, 0, {   990,  -8208}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -101,      0,    461}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,      0,    461}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -101,      0,   -460}, 0, {     0,  -8208}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0701F780 - 0x0701F7E8\nstatic const Gfx bbh_seg7_dl_0701F780[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_0701F6A8.l, 1),\n    gsSPLight(&bbh_seg7_lights_0701F6A8.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0701F6C0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701F7E8 - 0x0701F858\nconst Gfx bbh_seg7_dl_0701F7E8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0701F780),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bbh/tumbling_platform_near/collision.inc.c",
    "content": "// 0x07026B1C - 0x07026B4C\nconst Collision bbh_seg7_collision_07026B1C[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x4),\n    COL_VERTEX(102, 0, -50),\n    COL_VERTEX(-101, 0, -50),\n    COL_VERTEX(-101, 0, 51),\n    COL_VERTEX(102, 0, 51),\n    COL_TRI_INIT(SURFACE_NOISE_DEFAULT, 2),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bbh/tumbling_platform_near/geo.inc.c",
    "content": "// 0x0E0005F8\nconst GeoLayout geo_bbh_0005F8[] = {\n    GEO_CULLING_RADIUS(300),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bbh_seg7_dl_0701FAB0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bbh/tumbling_platform_near/model.inc.c",
    "content": "// 0x0701F858 - 0x0701F870\nstatic const Lights1 bbh_seg7_lights_0701F858 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0701F870 - 0x0701F960\nstatic const Vtx bbh_seg7_vertex_0701F870[] = {\n    {{{   102,   -101,    -50}, 0, {     0,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,      0,     51}, 0, {   990,  -2076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,   -101,     51}, 0, {     0,  -2076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -101,      0,    -50}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   102,      0,    -50}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   102,   -101,    -50}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -101,   -101,    -50}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   102,      0,     51}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -101,      0,     51}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -101,   -101,     51}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,   -101,     51}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -101,   -101,     51}, 0, {     0,  -2076}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -101,      0,     51}, 0, {   990,  -2076}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -101,      0,    -50}, 0, {   990,  -1054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -101,   -101,    -50}, 0, {     0,  -1054}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0701F960 - 0x0701FA10\nstatic const Vtx bbh_seg7_vertex_0701F960[] = {\n    {{{   102,      0,    -50}, 0, {   990,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -101,      0,     51}, 0, {     0,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,      0,     51}, 0, {   990,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,   -101,    -50}, 0, {     0,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,      0,    -50}, 0, {   990,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,      0,     51}, 0, {   990,  -2076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,   -101,     51}, 0, {   990,   3032}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -101,   -101,     51}, 0, {     0,   3032}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -101,   -101,    -50}, 0, {     0,   2010}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   102,   -101,    -50}, 0, {   990,   2010}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -101,      0,    -50}, 0, {     0,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0701FA10 - 0x0701FAB0\nstatic const Gfx bbh_seg7_dl_0701FA10[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bbh_seg7_lights_0701F858.l, 1),\n    gsSPLight(&bbh_seg7_lights_0701F858.a, 2),\n    gsSPVertex(bbh_seg7_vertex_0701F870, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bbh_seg7_vertex_0701F960, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP1Triangle( 0, 10,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701FAB0 - 0x0701FB20\nconst Gfx bbh_seg7_dl_0701FAB0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bbh_seg7_dl_0701FA10),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitdw/areas/1/1/model.inc.c",
    "content": "// 0x07002000 - 0x07002080\nstatic const Vtx bitdw_seg7_vertex_07002000[] = {\n    {{{  2516,  -2357,   2962}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2415,  -2440,   3024}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2517,  -2439,   3023}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2413,  -2358,   2962}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3038,  -2766,   2960}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3139,  -2849,   3023}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3037,  -2848,   3022}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3141,  -2768,   2961}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07002080 - 0x070020C8\nstatic const Gfx bitdw_seg7_dl_07002080[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_metal_hole),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_07002000, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070020C8 - 0x07002138\nconst Gfx bitdw_seg7_dl_070020C8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitdw_seg7_dl_07002080),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitdw/areas/1/collision.inc.c",
    "content": "// 0x0700D460 - 0x0700F436\nconst Collision bitdw_seg7_collision_level[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x225),\n    COL_VERTEX(-2559, -1535, 2764),\n    COL_VERTEX(-2252, -1535, 2764),\n    COL_VERTEX(-2553, -890, 920),\n    COL_VERTEX(-2244, -913, 920),\n    COL_VERTEX(1439, 1249, 840),\n    COL_VERTEX(1439, 584, 840),\n    COL_VERTEX(1491, 584, 942),\n    COL_VERTEX(1491, 1249, 942),\n    COL_VERTEX(1542, 686, 840),\n    COL_VERTEX(2475, 686, 840),\n    COL_VERTEX(2513, 584, 942),\n    COL_VERTEX(1542, 1249, 840),\n    COL_VERTEX(2512, 584, 840),\n    COL_VERTEX(1439, 584, 184),\n    COL_VERTEX(2474, 686, 184),\n    COL_VERTEX(1542, 686, 184),\n    COL_VERTEX(2512, 584, 184),\n    COL_VERTEX(1439, 1249, 184),\n    COL_VERTEX(1491, 1249, 82),\n    COL_VERTEX(1491, 584, 82),\n    COL_VERTEX(1542, 1249, 184),\n    COL_VERTEX(2512, 584, 82),\n    COL_VERTEX(1439, 1249, 82),\n    COL_VERTEX(1542, 1249, 82),\n    COL_VERTEX(1439, 1249, 942),\n    COL_VERTEX(1542, 1249, 942),\n    COL_VERTEX(-96, 584, 840),\n    COL_VERTEX(-198, 686, 840),\n    COL_VERTEX(-96, 891, 840),\n    COL_VERTEX(-198, 891, 840),\n    COL_VERTEX(-147, 891, 942),\n    COL_VERTEX(-96, 891, 184),\n    COL_VERTEX(-147, 584, 82),\n    COL_VERTEX(-147, 891, 82),\n    COL_VERTEX(-198, 686, 184),\n    COL_VERTEX(-198, 891, 184),\n    COL_VERTEX(-96, 891, 82),\n    COL_VERTEX(-198, 891, 82),\n    COL_VERTEX(-1284, 686, 840),\n    COL_VERTEX(-1322, 584, 942),\n    COL_VERTEX(-147, 584, 942),\n    COL_VERTEX(-1322, 584, 840),\n    COL_VERTEX(-198, 891, 942),\n    COL_VERTEX(-96, 891, 942),\n    COL_VERTEX(-96, 584, 184),\n    COL_VERTEX(-1322, 584, 82),\n    COL_VERTEX(-1284, 686, 184),\n    COL_VERTEX(-1322, 584, 184),\n    COL_VERTEX(-2041, 710, 607),\n    COL_VERTEX(-1978, 541, 702),\n    COL_VERTEX(-2451, 710, 710),\n    COL_VERTEX(594, -2231, 3996),\n    COL_VERTEX(-224, -3153, 3381),\n    COL_VERTEX(-224, -3153, 3996),\n    COL_VERTEX(594, -2231, 3381),\n    COL_VERTEX(799, -2231, 3996),\n    COL_VERTEX(797, -3154, 3996),\n    COL_VERTEX(799, -2231, 3381),\n    COL_VERTEX(799, -2027, 3996),\n    COL_VERTEX(799, -2027, 3381),\n    COL_VERTEX(-3065, 812, 915),\n    COL_VERTEX(-3734, 872, 702),\n    COL_VERTEX(-2451, 710, 915),\n    COL_VERTEX(-3589, 770, 558),\n    COL_VERTEX(-4164, 1024, 272),\n    COL_VERTEX(-3589, 872, 558),\n    COL_VERTEX(1413, -2027, 3996),\n    COL_VERTEX(2232, -2539, 3996),\n    COL_VERTEX(-4601, -716, -824),\n    COL_VERTEX(-4089, -716, -312),\n    COL_VERTEX(-4601, -716, 199),\n    COL_VERTEX(-4438, 819, -312),\n    COL_VERTEX(-5113, -716, -312),\n    COL_VERTEX(-4601, 819, -149),\n    COL_VERTEX(3641, 717, 1017),\n    COL_VERTEX(3641, 717, -313),\n    COL_VERTEX(364, 717, -313),\n    COL_VERTEX(-1273, 713, -57),\n    COL_VERTEX(364, 713, -57),\n    COL_VERTEX(2463, 1024, -57),\n    COL_VERTEX(1439, 1413, 184),\n    COL_VERTEX(1542, 1413, 184),\n    COL_VERTEX(1388, 1331, 184),\n    COL_VERTEX(1593, 1331, 184),\n    COL_VERTEX(1439, 1413, 942),\n    COL_VERTEX(1542, 1413, 840),\n    COL_VERTEX(1388, 1331, 840),\n    COL_VERTEX(2463, 717, -313),\n    COL_VERTEX(3641, 1024, -313),\n    COL_VERTEX(3641, 1024, 1017),\n    COL_VERTEX(2463, 1843, -313),\n    COL_VERTEX(2463, 1843, 812),\n    COL_VERTEX(2463, 1690, 812),\n    COL_VERTEX(2463, 1690, -108),\n    COL_VERTEX(3027, 1843, -313),\n    COL_VERTEX(3027, 1024, -108),\n    COL_VERTEX(825, 2048, -313),\n    COL_VERTEX(1388, 1024, -108),\n    COL_VERTEX(1388, 2048, -313),\n    COL_VERTEX(825, 1894, 812),\n    COL_VERTEX(825, 1894, -108),\n    COL_VERTEX(825, 2048, 812),\n    COL_VERTEX(-1273, 717, 1017),\n    COL_VERTEX(-44, 973, 184),\n    COL_VERTEX(-198, 1055, 184),\n    COL_VERTEX(-96, 1055, 184),\n    COL_VERTEX(-249, 973, 184),\n    COL_VERTEX(-198, 1055, 942),\n    COL_VERTEX(-96, 1055, 840),\n    COL_VERTEX(-249, 973, 840),\n    COL_VERTEX(-2041, 717, 1017),\n    COL_VERTEX(-1273, 1024, 1017),\n    COL_VERTEX(-2041, 717, -313),\n    COL_VERTEX(-1573, -93, 567),\n    COL_VERTEX(-1741, -90, 567),\n    COL_VERTEX(-1741, -90, 136),\n    COL_VERTEX(-1273, 1843, -313),\n    COL_VERTEX(-710, 1843, -313),\n    COL_VERTEX(-710, 1024, -108),\n    COL_VERTEX(-1273, 1690, 812),\n    COL_VERTEX(-1273, 1690, -108),\n    COL_VERTEX(-1273, 1843, 812),\n    COL_VERTEX(-198, 1843, -313),\n    COL_VERTEX(-198, 1690, 812),\n    COL_VERTEX(-198, 1843, 812),\n    COL_VERTEX(-198, 1690, -108),\n    COL_VERTEX(364, 1024, -108),\n    COL_VERTEX(364, 1843, -313),\n    COL_VERTEX(-1375, -1855, 3378),\n    COL_VERTEX(-1375, -1650, 3378),\n    COL_VERTEX(-869, -1855, 3378),\n    COL_VERTEX(-1375, -1855, 3992),\n    COL_VERTEX(-1689, -1535, 3378),\n    COL_VERTEX(-1689, -1535, 4197),\n    COL_VERTEX(-2610, -1740, 4402),\n    COL_VERTEX(-1893, -1740, 3276),\n    COL_VERTEX(-3122, -1535, 3173),\n    COL_VERTEX(-2201, -1740, 2968),\n    COL_VERTEX(-1893, -1740, 3992),\n    COL_VERTEX(-2559, -1444, 2798),\n    COL_VERTEX(-2244, -811, 920),\n    COL_VERTEX(-2149, -921, 920),\n    COL_VERTEX(-6983, -4689, 3579),\n    COL_VERTEX(-6266, -3153, 3577),\n    COL_VERTEX(-6266, -3255, 4193),\n    COL_VERTEX(-5651, -3358, 3579),\n    COL_VERTEX(-6266, -3255, 3577),\n    COL_VERTEX(-6983, -4689, 4193),\n    COL_VERTEX(-5651, -3358, 4193),\n    COL_VERTEX(-5037, -3358, 4193),\n    COL_VERTEX(-6983, -3153, 4193),\n    COL_VERTEX(-6983, -3460, 4193),\n    COL_VERTEX(-6061, -4689, 3579),\n    COL_VERTEX(-7904, -3460, 4398),\n    COL_VERTEX(-6983, -3153, 4398),\n    COL_VERTEX(-6983, -3460, 3374),\n    COL_VERTEX(-7904, -3153, 4398),\n    COL_VERTEX(-5115, -3460, 3937),\n    COL_VERTEX(-4627, -3460, 3831),\n    COL_VERTEX(-2272, -3358, 3585),\n    COL_VERTEX(-2779, -2946, 4409),\n    COL_VERTEX(-2779, -3150, 4409),\n    COL_VERTEX(-2272, -3153, 3585),\n    COL_VERTEX(-2784, -2948, 3380),\n    COL_VERTEX(-3394, -2946, 3385),\n    COL_VERTEX(-3394, -3150, 4409),\n    COL_VERTEX(-4790, 1229, -1792),\n    COL_VERTEX(-5404, 1229, -1792),\n    COL_VERTEX(-4790, 1229, -2509),\n    COL_VERTEX(-5404, 1229, -2509),\n    COL_VERTEX(-4038, 1024, -1843),\n    COL_VERTEX(-3270, 1024, -1997),\n    COL_VERTEX(-3270, 1024, -2304),\n    COL_VERTEX(-3321, 870, -2304),\n    COL_VERTEX(-4038, 1024, -2458),\n    COL_VERTEX(-3884, 1024, -6),\n    COL_VERTEX(-4089, 819, -108),\n    COL_VERTEX(-4294, 1024, 403),\n    COL_VERTEX(-4908, 1024, 403),\n    COL_VERTEX(-5113, 819, -108),\n    COL_VERTEX(-4806, 819, 198),\n    COL_VERTEX(-5318, 1024, -620),\n    COL_VERTEX(-4908, 1024, -1030),\n    COL_VERTEX(-4089, 819, -518),\n    COL_VERTEX(-4396, 819, -825),\n    COL_VERTEX(-4294, 1024, -1030),\n    COL_VERTEX(6303, 2560, 198),\n    COL_VERTEX(6611, 2560, 505),\n    COL_VERTEX(6099, 2765, -313),\n    COL_VERTEX(6508, 2765, -723),\n    COL_VERTEX(3948, 1229, 300),\n    COL_VERTEX(3948, 1331, 915),\n    COL_VERTEX(3641, 1229, 915),\n    COL_VERTEX(3641, 1229, 300),\n    COL_VERTEX(3948, 1485, 300),\n    COL_VERTEX(3641, 1638, 300),\n    COL_VERTEX(3743, 1587, 607),\n    COL_VERTEX(4255, 1485, 300),\n    COL_VERTEX(4255, 1587, 915),\n    COL_VERTEX(3948, 1485, 607),\n    COL_VERTEX(3948, 1587, 607),\n    COL_VERTEX(3743, 1690, 607),\n    COL_VERTEX(3641, 717, 300),\n    COL_VERTEX(3948, 1741, 300),\n    COL_VERTEX(3641, 922, 300),\n    COL_VERTEX(3641, 922, -313),\n    COL_VERTEX(3641, 1741, 300),\n    COL_VERTEX(5689, 2491, -313),\n    COL_VERTEX(6099, 2765, 300),\n    COL_VERTEX(-2354, -818, 511),\n    COL_VERTEX(-3481, -1023, 920),\n    COL_VERTEX(-2354, -1023, 511),\n    COL_VERTEX(-3685, -921, 306),\n    COL_VERTEX(-2149, -1023, 920),\n    COL_VERTEX(-5119, -204, 818),\n    COL_VERTEX(-5119, -613, 818),\n    COL_VERTEX(-7372, 307, -819),\n    COL_VERTEX(-7167, -101, 920),\n    COL_VERTEX(-5415, -495, 1350),\n    COL_VERTEX(-5119, -204, 1432),\n    COL_VERTEX(-7986, 717, -615),\n    COL_VERTEX(-7067, 922, -2453),\n    COL_VERTEX(-7781, 307, -615),\n    COL_VERTEX(-7986, 819, -615),\n    COL_VERTEX(-7372, 717, -819),\n    COL_VERTEX(-7372, 819, -819),\n    COL_VERTEX(-6137, 1126, -2458),\n    COL_VERTEX(-6961, 614, -2155),\n    COL_VERTEX(-6858, 870, -1848),\n    COL_VERTEX(-6858, 614, -1950),\n    COL_VERTEX(-6137, 1024, -1843),\n    COL_VERTEX(1413, -2027, 3381),\n    COL_VERTEX(-429, -4279, 3381),\n    COL_VERTEX(2232, -2539, 3381),\n    COL_VERTEX(-429, -4279, 4405),\n    COL_VERTEX(-1043, -3358, 4405),\n    COL_VERTEX(2744, -2743, 3381),\n    COL_VERTEX(1413, -4279, 4405),\n    COL_VERTEX(-1043, -3153, 4405),\n    COL_VERTEX(-4627, -3563, 4204),\n    COL_VERTEX(-4218, -3563, 3589),\n    COL_VERTEX(-4218, -3358, 4204),\n    COL_VERTEX(-3394, -3150, 3385),\n    COL_VERTEX(-4218, -4587, 4204),\n    COL_VERTEX(-4218, -3563, 4204),\n    COL_VERTEX(-4218, -4587, 3589),\n    COL_VERTEX(-2779, -4584, 3590),\n    COL_VERTEX(-2784, -3153, 3380),\n    COL_VERTEX(-2779, -4584, 3589),\n    COL_VERTEX(2514, -2295, 2793),\n    COL_VERTEX(2616, -2500, 2690),\n    COL_VERTEX(2309, -2500, 2690),\n    COL_VERTEX(2565, -2500, 3049),\n    COL_VERTEX(2412, -2295, 2895),\n    COL_VERTEX(2360, -2500, 3049),\n    COL_VERTEX(-3245, -2910, 2689),\n    COL_VERTEX(-3040, -2705, 2791),\n    COL_VERTEX(-2938, -2910, 2689),\n    COL_VERTEX(-3194, -2910, 3047),\n    COL_VERTEX(-3143, -2705, 2894),\n    COL_VERTEX(-2989, -2910, 3047),\n    COL_VERTEX(-2451, 812, 915),\n    COL_VERTEX(-3065, 710, 915),\n    COL_VERTEX(-1978, 541, 923),\n    COL_VERTEX(-2041, 710, 1017),\n    COL_VERTEX(-2041, 812, 1017),\n    COL_VERTEX(-3734, 770, 702),\n    COL_VERTEX(-3065, 812, 710),\n    COL_VERTEX(-2451, 812, 710),\n    COL_VERTEX(-3065, 710, 710),\n    COL_VERTEX(-4164, 922, 272),\n    COL_VERTEX(-4019, 922, 128),\n    COL_VERTEX(-4019, 1024, 128),\n    COL_VERTEX(-4601, -1023, -722),\n    COL_VERTEX(-5011, -1023, -312),\n    COL_VERTEX(-4764, 819, -312),\n    COL_VERTEX(-4601, 819, -475),\n    COL_VERTEX(-4601, -1023, 97),\n    COL_VERTEX(-4192, -1023, -312),\n    COL_VERTEX(3341, -90, 136),\n    COL_VERTEX(364, 1024, -313),\n    COL_VERTEX(2463, 717, 1017),\n    COL_VERTEX(3341, -90, 567),\n    COL_VERTEX(2763, -93, 567),\n    COL_VERTEX(-2041, 1024, -313),\n    COL_VERTEX(364, 1024, -57),\n    COL_VERTEX(2463, 713, -57),\n    COL_VERTEX(2463, 1024, 1017),\n    COL_VERTEX(-1273, 1024, -57),\n    COL_VERTEX(1439, 1413, 840),\n    COL_VERTEX(1593, 1331, 840),\n    COL_VERTEX(1388, 1331, 82),\n    COL_VERTEX(1439, 1413, 82),\n    COL_VERTEX(1542, 1413, 82),\n    COL_VERTEX(1593, 1331, 82),\n    COL_VERTEX(1542, 1413, 942),\n    COL_VERTEX(1593, 1331, 942),\n    COL_VERTEX(1388, 1331, 942),\n    COL_VERTEX(2763, -93, 136),\n    COL_VERTEX(2463, 1024, -313),\n    COL_VERTEX(2463, 1024, -108),\n    COL_VERTEX(3027, 1024, -313),\n    COL_VERTEX(3027, 1690, 812),\n    COL_VERTEX(3027, 1690, -108),\n    COL_VERTEX(3027, 1843, 812),\n    COL_VERTEX(825, 1024, -108),\n    COL_VERTEX(825, 1024, -313),\n    COL_VERTEX(1388, 1024, -313),\n    COL_VERTEX(1388, 2048, 812),\n    COL_VERTEX(1388, 1894, -108),\n    COL_VERTEX(1388, 1894, 812),\n    COL_VERTEX(-44, 973, 840),\n    COL_VERTEX(-198, 1055, 840),\n    COL_VERTEX(-96, 1055, 82),\n    COL_VERTEX(-198, 1055, 82),\n    COL_VERTEX(-44, 973, 82),\n    COL_VERTEX(-249, 973, 82),\n    COL_VERTEX(-96, 1055, 942),\n    COL_VERTEX(-44, 973, 942),\n    COL_VERTEX(-249, 973, 942),\n    COL_VERTEX(-2041, 1024, 1017),\n    COL_VERTEX(-1273, 717, -313),\n    COL_VERTEX(-1573, -93, 136),\n    COL_VERTEX(-1273, 1024, -108),\n    COL_VERTEX(-1273, 1024, -313),\n    COL_VERTEX(-710, 1024, -313),\n    COL_VERTEX(-710, 1690, -108),\n    COL_VERTEX(-710, 1690, 812),\n    COL_VERTEX(-710, 1843, 812),\n    COL_VERTEX(-198, 1024, -313),\n    COL_VERTEX(-198, 1024, -108),\n    COL_VERTEX(364, 1843, 812),\n    COL_VERTEX(364, 1690, 812),\n    COL_VERTEX(364, 1690, -108),\n    COL_VERTEX(-869, -1855, 3992),\n    COL_VERTEX(-869, -1650, 3378),\n    COL_VERTEX(-869, -1650, 3992),\n    COL_VERTEX(-1375, -1650, 3992),\n    COL_VERTEX(-1893, -1740, 3378),\n    COL_VERTEX(-2201, -1740, 4402),\n    COL_VERTEX(-1893, -1740, 4095),\n    COL_VERTEX(-2098, -1535, 4607),\n    COL_VERTEX(-2713, -1535, 4607),\n    COL_VERTEX(-1689, -1535, 3173),\n    COL_VERTEX(-2098, -1535, 2764),\n    COL_VERTEX(-1689, -1535, 3992),\n    COL_VERTEX(-2713, -1535, 2764),\n    COL_VERTEX(-2610, -1740, 2968),\n    COL_VERTEX(-2917, -1740, 3276),\n    COL_VERTEX(-2559, -1671, 2830),\n    COL_VERTEX(-2553, -992, 920),\n    COL_VERTEX(-2553, -787, 920),\n    COL_VERTEX(-2252, -1671, 2830),\n    COL_VERTEX(-2252, -1444, 2798),\n    COL_VERTEX(-2244, -1015, 920),\n    COL_VERTEX(-2149, -818, 920),\n    COL_VERTEX(-6983, -3153, 3579),\n    COL_VERTEX(-6266, -3153, 4193),\n    COL_VERTEX(-7495, -3460, 3579),\n    COL_VERTEX(-6983, -3460, 3579),\n    COL_VERTEX(-5651, -3255, 3579),\n    COL_VERTEX(-5037, -3358, 3579),\n    COL_VERTEX(-5651, -3255, 4193),\n    COL_VERTEX(-6061, -4689, 4193),\n    COL_VERTEX(-7495, -3460, 4193),\n    COL_VERTEX(-6983, -3460, 4398),\n    COL_VERTEX(-6983, -3153, 3374),\n    COL_VERTEX(-7904, -3460, 3374),\n    COL_VERTEX(-7904, -3153, 3374),\n    COL_VERTEX(-4627, -3358, 3937),\n    COL_VERTEX(-5037, -3358, 3937),\n    COL_VERTEX(-4627, -3460, 3937),\n    COL_VERTEX(-5115, -3460, 3835),\n    COL_VERTEX(-5037, -3358, 3835),\n    COL_VERTEX(-4627, -3358, 3833),\n    COL_VERTEX(-2272, -3153, 4201),\n    COL_VERTEX(-2272, -3358, 4201),\n    COL_VERTEX(-3394, -2946, 4409),\n    COL_VERTEX(-4790, 614, -1792),\n    COL_VERTEX(-4790, 614, -2509),\n    COL_VERTEX(-5404, 614, -1792),\n    COL_VERTEX(-5404, 614, -2509),\n    COL_VERTEX(-3321, 870, -1997),\n    COL_VERTEX(-4038, 717, -1946),\n    COL_VERTEX(-4038, 717, -2355),\n    COL_VERTEX(-3884, 1024, -620),\n    COL_VERTEX(-4396, 819, 198),\n    COL_VERTEX(-5318, 1024, -6),\n    COL_VERTEX(-5113, 819, -518),\n    COL_VERTEX(-4806, 819, -825),\n    COL_VERTEX(6508, 2765, 710),\n    COL_VERTEX(6303, 2560, -211),\n    COL_VERTEX(6611, 2560, -518),\n    COL_VERTEX(3948, 1331, 300),\n    COL_VERTEX(3948, 1229, 915),\n    COL_VERTEX(3641, 1331, 915),\n    COL_VERTEX(3641, 1331, 300),\n    COL_VERTEX(4255, 1485, 915),\n    COL_VERTEX(3948, 1485, 915),\n    COL_VERTEX(4255, 1587, 300),\n    COL_VERTEX(3948, 1587, 915),\n    COL_VERTEX(4255, 1741, 300),\n    COL_VERTEX(5689, 2491, 300),\n    COL_VERTEX(5484, 2765, 300),\n    COL_VERTEX(3641, 1741, -313),\n    COL_VERTEX(4255, 1741, -313),\n    COL_VERTEX(5484, 2765, -313),\n    COL_VERTEX(-3428, -736, 346),\n    COL_VERTEX(-3428, -838, 346),\n    COL_VERTEX(-2354, -921, 511),\n    COL_VERTEX(-3481, -716, 920),\n    COL_VERTEX(-3481, -818, 920),\n    COL_VERTEX(-3685, -818, 306),\n    COL_VERTEX(-6757, -204, 306),\n    COL_VERTEX(-6757, 205, 306),\n    COL_VERTEX(-7167, 205, 920),\n    COL_VERTEX(-7167, 307, 920),\n    COL_VERTEX(-6858, 972, -1848),\n    COL_VERTEX(-6137, 1024, -2458),\n    COL_VERTEX(-7067, 1024, -2453),\n    COL_VERTEX(-7095, 486, -312),\n    COL_VERTEX(-6137, 819, -2355),\n    COL_VERTEX(-6137, 1126, -1842),\n    COL_VERTEX(-6137, 819, -1946),\n    COL_VERTEX(-7095, 588, -312),\n    COL_VERTEX(-6137, 1024, -1842),\n    COL_VERTEX(-2041, 812, 607),\n    COL_VERTEX(-1043, -3153, 3381),\n    COL_VERTEX(1413, -4279, 3381),\n    COL_VERTEX(-1043, -3360, 3381),\n    COL_VERTEX(2744, -2539, 3381),\n    COL_VERTEX(-1043, -3358, 3381),\n    COL_VERTEX(2744, -2539, 4405),\n    COL_VERTEX(2744, -2743, 4405),\n    COL_VERTEX(799, -3153, 4405),\n    COL_VERTEX(-1043, -3360, 4405),\n    COL_VERTEX(2232, -2539, 4405),\n    COL_VERTEX(-4627, -3358, 3589),\n    COL_VERTEX(-4627, -3563, 3589),\n    COL_VERTEX(-4627, -3358, 4204),\n    COL_VERTEX(-4218, -3358, 3589),\n    COL_VERTEX(-2779, -4584, 4204),\n    COL_VERTEX(2514, -2295, 2895),\n    COL_VERTEX(2412, -2295, 2793),\n    COL_VERTEX(2514, -2654, 2895),\n    COL_VERTEX(2412, -2654, 2895),\n    COL_VERTEX(-3143, -2705, 2791),\n    COL_VERTEX(-3040, -2705, 2894),\n    COL_VERTEX(-3040, -3063, 2894),\n    COL_VERTEX(-3143, -3063, 2894),\n    COL_VERTEX(0, -6655, 0),\n    COL_VERTEX(-8191, -6655, 8192),\n    COL_VERTEX(0, -6655, 8192),\n    COL_VERTEX(8192, -6655, 0),\n    COL_VERTEX(8192, -6655, 8192),\n    COL_VERTEX(8192, -6655, -8191),\n    COL_VERTEX(0, -6655, -8191),\n    COL_VERTEX(-8191, -6655, 0),\n    COL_VERTEX(-8191, -6655, -8191),\n    COL_VERTEX(-2201, -1433, 2968),\n    COL_VERTEX(-1893, -1433, 3276),\n    COL_VERTEX(-1893, -1433, 4095),\n    COL_VERTEX(-2917, -1433, 4095),\n    COL_VERTEX(-2201, -1433, 4402),\n    COL_VERTEX(-2610, -1433, 4402),\n    COL_VERTEX(-2917, -1433, 3276),\n    COL_VERTEX(-6266, -3153, 3579),\n    COL_VERTEX(6611, 2867, -518),\n    COL_VERTEX(-4806, 1126, 198),\n    COL_VERTEX(-4396, 1126, 198),\n    COL_VERTEX(-4694, 1126, -312),\n    COL_VERTEX(-4089, 1126, -108),\n    COL_VERTEX(-4601, 1126, -405),\n    COL_VERTEX(-4089, 1126, -518),\n    COL_VERTEX(-4806, 1126, -825),\n    COL_VERTEX(-2610, -1433, 2968),\n    COL_VERTEX(-6266, -3255, 3579),\n    COL_VERTEX(7020, 2867, 505),\n    COL_VERTEX(7327, 2867, 198),\n    COL_VERTEX(6303, 2867, -211),\n    COL_VERTEX(6303, 2867, 198),\n    COL_VERTEX(6611, 2867, 505),\n    COL_VERTEX(7327, 2867, -211),\n    COL_VERTEX(7020, 2867, -518),\n    COL_VERTEX(-5113, 1126, -108),\n    COL_VERTEX(-4601, 1126, -219),\n    COL_VERTEX(-4508, 1126, -312),\n    COL_VERTEX(-5113, 1126, -518),\n    COL_VERTEX(-4396, 1126, -825),\n    COL_VERTEX(-4601, 1536, -312),\n    COL_VERTEX(-4095, -491, 990),\n    COL_VERTEX(-4013, -619, 1072),\n    COL_VERTEX(-4013, -491, 1072),\n    COL_VERTEX(-4013, -491, 908),\n    COL_VERTEX(-4095, -588, 990),\n    COL_VERTEX(-4013, -414, 990),\n    COL_VERTEX(-3931, -491, 990),\n    COL_VERTEX(-4013, -619, 908),\n    COL_VERTEX(-3931, -649, 990),\n    COL_VERTEX(-6466, 265, 986),\n    COL_VERTEX(-6548, 188, 986),\n    COL_VERTEX(-6466, 188, 904),\n    COL_VERTEX(-6384, 188, 986),\n    COL_VERTEX(-6466, 188, 1068),\n    COL_VERTEX(-7026, 388, 356),\n    COL_VERTEX(-7108, 465, 356),\n    COL_VERTEX(-7190, 388, 356),\n    COL_VERTEX(-7108, 388, 274),\n    COL_VERTEX(-7108, 388, 438),\n    COL_VERTEX(-7665, 758, -251),\n    COL_VERTEX(-7747, 681, -251),\n    COL_VERTEX(-7665, 681, -333),\n    COL_VERTEX(-7583, 681, -251),\n    COL_VERTEX(-7665, 681, -169),\n    COL_VERTEX(-7103, 1100, -2088),\n    COL_VERTEX(-7021, 1024, -2088),\n    COL_VERTEX(-7185, 1024, -2088),\n    COL_VERTEX(-7103, 1024, -2170),\n    COL_VERTEX(-7103, 1024, -2006),\n    COL_VERTEX(-5333, -97, 967),\n    COL_VERTEX(-5169, -97, 967),\n    COL_VERTEX(-5251, -20, 967),\n    COL_VERTEX(-5251, -97, 885),\n    COL_VERTEX(-5251, -97, 1049),\n    COL_VERTEX(-6466, 68, 1068),\n    COL_VERTEX(-6548, 91, 986),\n    COL_VERTEX(-6466, 87, 904),\n    COL_VERTEX(-6384, 63, 986),\n    COL_VERTEX(-7190, 354, 356),\n    COL_VERTEX(-7108, 303, 438),\n    COL_VERTEX(-7026, 293, 356),\n    COL_VERTEX(-7108, 344, 274),\n    COL_VERTEX(-7747, 591, -251),\n    COL_VERTEX(-7665, 560, -169),\n    COL_VERTEX(-7665, 607, -333),\n    COL_VERTEX(-7583, 576, -251),\n    COL_VERTEX(-7185, 883, -2088),\n    COL_VERTEX(-7103, 877, -2006),\n    COL_VERTEX(-7021, 888, -2088),\n    COL_VERTEX(-7103, 893, -2170),\n    COL_VERTEX(-5333, -150, 967),\n    COL_VERTEX(-5251, -171, 1049),\n    COL_VERTEX(-5251, -171, 885),\n    COL_VERTEX(-5169, -191, 967),\n    COL_VERTEX(-3122, -1535, 4197),\n    COL_VERTEX(7532, 2765, -313),\n    COL_VERTEX(7123, 2765, -723),\n    COL_VERTEX(7123, 2765, 710),\n    COL_VERTEX(7532, 2765, 300),\n    COL_TRI_INIT(SURFACE_DEFAULT, 475),\n    COL_TRI(48, 49, 50),\n    COL_TRI(51, 52, 53),\n    COL_TRI(51, 54, 52),\n    COL_TRI(55, 51, 53),\n    COL_TRI(55, 53, 56),\n    COL_TRI(54, 57, 52),\n    COL_TRI(55, 58, 59),\n    COL_TRI(55, 59, 57),\n    COL_TRI(50, 269, 267),\n    COL_TRI(60, 62, 261),\n    COL_TRI(60, 262, 62),\n    COL_TRI(61, 262, 60),\n    COL_TRI(62, 263, 264),\n    COL_TRI(62, 264, 265),\n    COL_TRI(62, 265, 261),\n    COL_TRI(61, 266, 262),\n    COL_TRI(50, 267, 268),\n    COL_TRI(63, 267, 269),\n    COL_TRI(63, 65, 267),\n    COL_TRI(64, 266, 61),\n    COL_TRI(64, 270, 266),\n    COL_TRI(65, 63, 271),\n    COL_TRI(65, 271, 272),\n    COL_TRI(56, 66, 58),\n    COL_TRI(56, 67, 66),\n    COL_TRI(74, 279, 75),\n    COL_TRI(68, 273, 274),\n    COL_TRI(68, 274, 72),\n    COL_TRI(69, 273, 68),\n    COL_TRI(68, 72, 275),\n    COL_TRI(69, 68, 276),\n    COL_TRI(68, 275, 276),\n    COL_TRI(70, 275, 72),\n    COL_TRI(70, 73, 275),\n    COL_TRI(71, 69, 276),\n    COL_TRI(72, 277, 70),\n    COL_TRI(72, 274, 277),\n    COL_TRI(73, 69, 71),\n    COL_TRI(70, 278, 69),\n    COL_TRI(69, 278, 273),\n    COL_TRI(73, 70, 69),\n    COL_TRI(70, 277, 278),\n    COL_TRI(79, 281, 287),\n    COL_TRI(75, 280, 88),\n    COL_TRI(76, 284, 280),\n    COL_TRI(76, 112, 284),\n    COL_TRI(75, 76, 280),\n    COL_TRI(77, 78, 285),\n    COL_TRI(78, 286, 79),\n    COL_TRI(78, 79, 285),\n    COL_TRI(79, 286, 281),\n    COL_TRI(80, 82, 17),\n    COL_TRI(77, 285, 288),\n    COL_TRI(4, 289, 85),\n    COL_TRI(4, 85, 290),\n    COL_TRI(4, 290, 11),\n    COL_TRI(4, 86, 289),\n    COL_TRI(80, 291, 82),\n    COL_TRI(81, 292, 80),\n    COL_TRI(80, 292, 291),\n    COL_TRI(84, 295, 85),\n    COL_TRI(82, 291, 22),\n    COL_TRI(82, 22, 17),\n    COL_TRI(80, 17, 20),\n    COL_TRI(20, 23, 294),\n    COL_TRI(20, 294, 83),\n    COL_TRI(80, 20, 83),\n    COL_TRI(83, 294, 293),\n    COL_TRI(83, 293, 81),\n    COL_TRI(80, 83, 81),\n    COL_TRI(81, 293, 292),\n    COL_TRI(22, 294, 23),\n    COL_TRI(22, 293, 294),\n    COL_TRI(22, 292, 293),\n    COL_TRI(22, 291, 292),\n    COL_TRI(4, 24, 297),\n    COL_TRI(84, 85, 289),\n    COL_TRI(85, 295, 296),\n    COL_TRI(85, 296, 290),\n    COL_TRI(86, 84, 289),\n    COL_TRI(84, 297, 24),\n    COL_TRI(84, 24, 25),\n    COL_TRI(84, 25, 296),\n    COL_TRI(84, 296, 295),\n    COL_TRI(86, 297, 84),\n    COL_TRI(4, 297, 86),\n    COL_TRI(11, 290, 296),\n    COL_TRI(11, 296, 25),\n    COL_TRI(87, 283, 281),\n    COL_TRI(87, 298, 283),\n    COL_TRI(74, 281, 283),\n    COL_TRI(74, 282, 279),\n    COL_TRI(74, 283, 282),\n    COL_TRI(88, 74, 75),\n    COL_TRI(90, 300, 93),\n    COL_TRI(89, 281, 74),\n    COL_TRI(88, 89, 74),\n    COL_TRI(89, 287, 281),\n    COL_TRI(90, 299, 300),\n    COL_TRI(90, 94, 301),\n    COL_TRI(90, 301, 299),\n    COL_TRI(90, 92, 91),\n    COL_TRI(90, 93, 92),\n    COL_TRI(91, 92, 302),\n    COL_TRI(92, 303, 302),\n    COL_TRI(92, 93, 303),\n    COL_TRI(91, 302, 304),\n    COL_TRI(93, 300, 95),\n    COL_TRI(93, 95, 303),\n    COL_TRI(94, 302, 303),\n    COL_TRI(94, 304, 302),\n    COL_TRI(95, 301, 94),\n    COL_TRI(94, 303, 95),\n    COL_TRI(96, 305, 100),\n    COL_TRI(96, 306, 305),\n    COL_TRI(102, 77, 288),\n    COL_TRI(96, 98, 307),\n    COL_TRI(96, 307, 306),\n    COL_TRI(97, 307, 98),\n    COL_TRI(98, 308, 310),\n    COL_TRI(98, 309, 97),\n    COL_TRI(98, 310, 309),\n    COL_TRI(99, 100, 309),\n    COL_TRI(100, 97, 309),\n    COL_TRI(100, 305, 97),\n    COL_TRI(96, 100, 99),\n    COL_TRI(99, 309, 310),\n    COL_TRI(101, 99, 310),\n    COL_TRI(96, 99, 101),\n    COL_TRI(101, 310, 308),\n    COL_TRI(103, 315, 313),\n    COL_TRI(29, 311, 28),\n    COL_TRI(29, 108, 311),\n    COL_TRI(29, 312, 108),\n    COL_TRI(29, 109, 312),\n    COL_TRI(103, 313, 105),\n    COL_TRI(104, 103, 105),\n    COL_TRI(105, 314, 104),\n    COL_TRI(105, 313, 314),\n    COL_TRI(37, 313, 315),\n    COL_TRI(37, 314, 313),\n    COL_TRI(107, 108, 312),\n    COL_TRI(37, 316, 314),\n    COL_TRI(104, 314, 316),\n    COL_TRI(104, 106, 35),\n    COL_TRI(104, 31, 103),\n    COL_TRI(104, 35, 31),\n    COL_TRI(104, 316, 106),\n    COL_TRI(106, 316, 37),\n    COL_TRI(106, 37, 35),\n    COL_TRI(37, 315, 36),\n    COL_TRI(31, 315, 103),\n    COL_TRI(31, 36, 315),\n    COL_TRI(107, 317, 108),\n    COL_TRI(107, 42, 43),\n    COL_TRI(107, 318, 317),\n    COL_TRI(108, 317, 318),\n    COL_TRI(107, 43, 318),\n    COL_TRI(28, 318, 43),\n    COL_TRI(28, 311, 318),\n    COL_TRI(108, 318, 311),\n    COL_TRI(29, 319, 109),\n    COL_TRI(29, 42, 319),\n    COL_TRI(107, 319, 42),\n    COL_TRI(109, 319, 107),\n    COL_TRI(109, 107, 312),\n    COL_TRI(110, 102, 320),\n    COL_TRI(102, 111, 320),\n    COL_TRI(111, 102, 288),\n    COL_TRI(110, 320, 284),\n    COL_TRI(112, 110, 284),\n    COL_TRI(113, 102, 110),\n    COL_TRI(114, 113, 110),\n    COL_TRI(116, 120, 119),\n    COL_TRI(102, 113, 321),\n    COL_TRI(112, 115, 110),\n    COL_TRI(115, 114, 110),\n    COL_TRI(113, 322, 321),\n    COL_TRI(116, 323, 120),\n    COL_TRI(116, 324, 323),\n    COL_TRI(116, 117, 325),\n    COL_TRI(116, 325, 324),\n    COL_TRI(122, 280, 329),\n    COL_TRI(117, 326, 118),\n    COL_TRI(117, 327, 326),\n    COL_TRI(117, 328, 327),\n    COL_TRI(118, 325, 117),\n    COL_TRI(119, 120, 326),\n    COL_TRI(120, 118, 326),\n    COL_TRI(120, 323, 118),\n    COL_TRI(119, 326, 327),\n    COL_TRI(121, 119, 327),\n    COL_TRI(116, 119, 121),\n    COL_TRI(121, 327, 328),\n    COL_TRI(122, 127, 280),\n    COL_TRI(122, 329, 330),\n    COL_TRI(122, 330, 125),\n    COL_TRI(123, 125, 333),\n    COL_TRI(123, 333, 332),\n    COL_TRI(124, 123, 332),\n    COL_TRI(122, 123, 124),\n    COL_TRI(122, 125, 123),\n    COL_TRI(124, 332, 331),\n    COL_TRI(125, 126, 333),\n    COL_TRI(125, 330, 126),\n    COL_TRI(126, 280, 127),\n    COL_TRI(127, 331, 332),\n    COL_TRI(127, 332, 333),\n    COL_TRI(127, 333, 126),\n    COL_TRI(128, 130, 334),\n    COL_TRI(129, 335, 130),\n    COL_TRI(130, 336, 334),\n    COL_TRI(130, 335, 336),\n    COL_TRI(129, 130, 128),\n    COL_TRI(131, 336, 337),\n    COL_TRI(131, 334, 336),\n    COL_TRI(128, 334, 131),\n    COL_TRI(132, 129, 128),\n    COL_TRI(132, 128, 338),\n    COL_TRI(133, 339, 340),\n    COL_TRI(133, 341, 339),\n    COL_TRI(135, 344, 343),\n    COL_TRI(134, 339, 341),\n    COL_TRI(133, 340, 138),\n    COL_TRI(134, 341, 342),\n    COL_TRI(132, 135, 343),\n    COL_TRI(132, 338, 135),\n    COL_TRI(135, 137, 344),\n    COL_TRI(139, 350, 351),\n    COL_TRI(136, 346, 347),\n    COL_TRI(136, 347, 348),\n    COL_TRI(137, 347, 346),\n    COL_TRI(137, 346, 344),\n    COL_TRI(138, 131, 337),\n    COL_TRI(138, 337, 345),\n    COL_TRI(133, 138, 345),\n    COL_TRI(139, 349, 350),\n    COL_TRI(140, 352, 353),\n    COL_TRI(140, 354, 352),\n    COL_TRI(141, 3, 140),\n    COL_TRI(141, 140, 355),\n    COL_TRI(142, 143, 146),\n    COL_TRI(143, 142, 356),\n    COL_TRI(144, 143, 357),\n    COL_TRI(144, 146, 143),\n    COL_TRI(145, 362, 148),\n    COL_TRI(142, 145, 152),\n    COL_TRI(145, 142, 146),\n    COL_TRI(142, 358, 359),\n    COL_TRI(145, 146, 360),\n    COL_TRI(145, 361, 152),\n    COL_TRI(145, 360, 362),\n    COL_TRI(147, 148, 144),\n    COL_TRI(144, 148, 362),\n    COL_TRI(148, 147, 363),\n    COL_TRI(150, 147, 357),\n    COL_TRI(147, 144, 357),\n    COL_TRI(151, 364, 147),\n    COL_TRI(149, 148, 363),\n    COL_TRI(152, 149, 363),\n    COL_TRI(152, 361, 149),\n    COL_TRI(153, 154, 156),\n    COL_TRI(153, 365, 154),\n    COL_TRI(154, 365, 155),\n    COL_TRI(154, 155, 366),\n    COL_TRI(155, 367, 368),\n    COL_TRI(155, 368, 366),\n    COL_TRI(156, 367, 153),\n    COL_TRI(156, 368, 367),\n    COL_TRI(157, 369, 370),\n    COL_TRI(157, 371, 369),\n    COL_TRI(158, 372, 373),\n    COL_TRI(158, 373, 374),\n    COL_TRI(159, 375, 376),\n    COL_TRI(159, 162, 375),\n    COL_TRI(160, 161, 375),\n    COL_TRI(161, 376, 375),\n    COL_TRI(162, 159, 247),\n    COL_TRI(163, 162, 247),\n    COL_TRI(167, 378, 166),\n    COL_TRI(164, 247, 242),\n    COL_TRI(164, 163, 247),\n    COL_TRI(165, 161, 160),\n    COL_TRI(165, 160, 377),\n    COL_TRI(166, 378, 379),\n    COL_TRI(166, 379, 168),\n    COL_TRI(170, 383, 382),\n    COL_TRI(167, 380, 378),\n    COL_TRI(168, 379, 381),\n    COL_TRI(168, 381, 169),\n    COL_TRI(169, 380, 167),\n    COL_TRI(169, 381, 380),\n    COL_TRI(170, 382, 171),\n    COL_TRI(171, 382, 173),\n    COL_TRI(171, 173, 172),\n    COL_TRI(172, 173, 174),\n    COL_TRI(173, 384, 174),\n    COL_TRI(174, 383, 170),\n    COL_TRI(174, 384, 383),\n    COL_TRI(175, 176, 385),\n    COL_TRI(175, 177, 176),\n    COL_TRI(176, 183, 385),\n    COL_TRI(177, 178, 386),\n    COL_TRI(178, 180, 386),\n    COL_TRI(177, 386, 176),\n    COL_TRI(179, 180, 387),\n    COL_TRI(180, 178, 387),\n    COL_TRI(181, 182, 388),\n    COL_TRI(181, 388, 179),\n    COL_TRI(181, 179, 387),\n    COL_TRI(182, 389, 388),\n    COL_TRI(188, 189, 391),\n    COL_TRI(183, 184, 385),\n    COL_TRI(184, 185, 385),\n    COL_TRI(185, 184, 389),\n    COL_TRI(182, 185, 389),\n    COL_TRI(186, 187, 208),\n    COL_TRI(187, 390, 208),\n    COL_TRI(194, 197, 397),\n    COL_TRI(189, 392, 391),\n    COL_TRI(190, 393, 191),\n    COL_TRI(190, 191, 394),\n    COL_TRI(191, 192, 394),\n    COL_TRI(191, 395, 192),\n    COL_TRI(192, 395, 396),\n    COL_TRI(193, 394, 192),\n    COL_TRI(192, 396, 193),\n    COL_TRI(193, 190, 394),\n    COL_TRI(194, 397, 398),\n    COL_TRI(197, 399, 198),\n    COL_TRI(197, 198, 397),\n    COL_TRI(198, 398, 397),\n    COL_TRI(198, 400, 398),\n    COL_TRI(199, 398, 400),\n    COL_TRI(200, 199, 400),\n    COL_TRI(201, 206, 195),\n    COL_TRI(196, 201, 195),\n    COL_TRI(202, 401, 206),\n    COL_TRI(196, 199, 200),\n    COL_TRI(204, 206, 404),\n    COL_TRI(195, 194, 196),\n    COL_TRI(201, 196, 200),\n    COL_TRI(196, 194, 199),\n    COL_TRI(186, 208, 402),\n    COL_TRI(202, 402, 403),\n    COL_TRI(204, 404, 205),\n    COL_TRI(203, 206, 201),\n    COL_TRI(75, 404, 405),\n    COL_TRI(75, 405, 406),\n    COL_TRI(75, 406, 207),\n    COL_TRI(209, 407, 408),\n    COL_TRI(207, 188, 391),\n    COL_TRI(207, 406, 188),\n    COL_TRI(208, 403, 402),\n    COL_TRI(202, 403, 401),\n    COL_TRI(211, 409, 141),\n    COL_TRI(209, 409, 141),\n    COL_TRI(209, 408, 409),\n    COL_TRI(209, 141, 355),\n    COL_TRI(2, 410, 351),\n    COL_TRI(2, 411, 410),\n    COL_TRI(210, 411, 219),\n    COL_TRI(211, 141, 213),\n    COL_TRI(213, 141, 411),\n    COL_TRI(213, 411, 210),\n    COL_TRI(212, 409, 211),\n    COL_TRI(212, 412, 409),\n    COL_TRI(210, 219, 218),\n    COL_TRI(214, 412, 212),\n    COL_TRI(215, 214, 212),\n    COL_TRI(214, 413, 414),\n    COL_TRI(214, 215, 413),\n    COL_TRI(216, 414, 413),\n    COL_TRI(216, 224, 414),\n    COL_TRI(217, 415, 220),\n    COL_TRI(217, 220, 222),\n    COL_TRI(218, 219, 217),\n    COL_TRI(219, 415, 217),\n    COL_TRI(220, 223, 415),\n    COL_TRI(221, 223, 220),\n    COL_TRI(222, 221, 227),\n    COL_TRI(222, 220, 221),\n    COL_TRI(223, 416, 415),\n    COL_TRI(224, 216, 228),\n    COL_TRI(216, 229, 228),\n    COL_TRI(225, 224, 420),\n    COL_TRI(224, 225, 417),\n    COL_TRI(224, 417, 228),\n    COL_TRI(230, 421, 418),\n    COL_TRI(221, 418, 226),\n    COL_TRI(226, 419, 221),\n    COL_TRI(221, 419, 223),\n    COL_TRI(221, 418, 421),\n    COL_TRI(227, 221, 421),\n    COL_TRI(228, 422, 425),\n    COL_TRI(228, 417, 422),\n    COL_TRI(228, 229, 230),\n    COL_TRI(233, 232, 57),\n    COL_TRI(229, 423, 230),\n    COL_TRI(230, 423, 421),\n    COL_TRI(225, 420, 424),\n    COL_TRI(48, 50, 268),\n    COL_TRI(48, 268, 426),\n    COL_TRI(57, 231, 233),\n    COL_TRI(234, 235, 431),\n    COL_TRI(232, 52, 57),\n    COL_TRI(57, 59, 231),\n    COL_TRI(232, 427, 52),\n    COL_TRI(233, 428, 232),\n    COL_TRI(232, 429, 427),\n    COL_TRI(234, 431, 232),\n    COL_TRI(235, 427, 431),\n    COL_TRI(235, 238, 427),\n    COL_TRI(239, 437, 438),\n    COL_TRI(233, 236, 428),\n    COL_TRI(233, 430, 236),\n    COL_TRI(236, 430, 432),\n    COL_TRI(236, 432, 433),\n    COL_TRI(237, 434, 238),\n    COL_TRI(238, 435, 234),\n    COL_TRI(238, 234, 237),\n    COL_TRI(237, 436, 434),\n    COL_TRI(237, 433, 432),\n    COL_TRI(237, 432, 436),\n    COL_TRI(242, 240, 164),\n    COL_TRI(239, 439, 437),\n    COL_TRI(240, 438, 437),\n    COL_TRI(240, 437, 440),\n    COL_TRI(241, 239, 244),\n    COL_TRI(241, 439, 239),\n    COL_TRI(241, 165, 377),\n    COL_TRI(241, 244, 165),\n    COL_TRI(164, 240, 440),\n    COL_TRI(243, 239, 438),\n    COL_TRI(161, 165, 441),\n    COL_TRI(161, 441, 376),\n    COL_TRI(243, 441, 165),\n    COL_TRI(244, 243, 165),\n    COL_TRI(244, 239, 243),\n    COL_TRI(243, 438, 245),\n    COL_TRI(245, 438, 240),\n    COL_TRI(242, 245, 240),\n    COL_TRI(246, 245, 242),\n    COL_TRI(242, 247, 246),\n    COL_TRI(247, 159, 246),\n    COL_TRI(248, 376, 441),\n    COL_TRI(248, 159, 376),\n    COL_TRI(249, 253, 442),\n    COL_TRI(250, 249, 442),\n    COL_TRI(249, 443, 253),\n    COL_TRI(251, 249, 250),\n    COL_TRI(252, 253, 254),\n    COL_TRI(252, 442, 253),\n    COL_TRI(253, 443, 251),\n    COL_TRI(254, 253, 251),\n    COL_TRI(250, 442, 252),\n    COL_TRI(251, 443, 249),\n    COL_TRI(254, 444, 252),\n    COL_TRI(252, 444, 250),\n    COL_TRI(254, 445, 444),\n    COL_TRI(260, 448, 257),\n    COL_TRI(251, 445, 254),\n    COL_TRI(255, 446, 256),\n    COL_TRI(255, 256, 257),\n    COL_TRI(256, 446, 259),\n    COL_TRI(256, 259, 447),\n    COL_TRI(257, 256, 447),\n    COL_TRI(258, 259, 255),\n    COL_TRI(259, 446, 255),\n    COL_TRI(260, 259, 258),\n    COL_TRI(260, 447, 259),\n    COL_TRI(257, 447, 260),\n    COL_TRI(258, 448, 260),\n    COL_TRI(258, 449, 448),\n    COL_TRI(255, 449, 258),\n    COL_TRI_INIT(SURFACE_DEATH_PLANE, 8),\n    COL_TRI(450, 451, 452),\n    COL_TRI(452, 453, 450),\n    COL_TRI(452, 454, 453),\n    COL_TRI(455, 450, 453),\n    COL_TRI(456, 457, 450),\n    COL_TRI(455, 456, 450),\n    COL_TRI(450, 457, 451),\n    COL_TRI(456, 458, 457),\n    COL_TRI_INIT(SURFACE_VERY_SLIPPERY, 48),\n    COL_TRI(17, 13, 15),\n    COL_TRI(4, 5, 6),\n    COL_TRI(7, 6, 8),\n    COL_TRI(4, 6, 7),\n    COL_TRI(6, 9, 8),\n    COL_TRI(6, 10, 9),\n    COL_TRI(11, 8, 5),\n    COL_TRI(7, 8, 11),\n    COL_TRI(8, 12, 5),\n    COL_TRI(8, 9, 12),\n    COL_TRI(11, 5, 4),\n    COL_TRI(13, 14, 15),\n    COL_TRI(13, 16, 14),\n    COL_TRI(15, 14, 21),\n    COL_TRI(20, 15, 19),\n    COL_TRI(17, 15, 20),\n    COL_TRI(15, 21, 19),\n    COL_TRI(20, 19, 18),\n    COL_TRI(18, 19, 13),\n    COL_TRI(22, 18, 17),\n    COL_TRI(18, 13, 17),\n    COL_TRI(23, 20, 18),\n    COL_TRI(4, 7, 24),\n    COL_TRI(30, 26, 28),\n    COL_TRI(7, 11, 25),\n    COL_TRI(26, 38, 27),\n    COL_TRI(27, 38, 39),\n    COL_TRI(27, 39, 40),\n    COL_TRI(28, 26, 27),\n    COL_TRI(28, 27, 29),\n    COL_TRI(29, 27, 40),\n    COL_TRI(29, 40, 30),\n    COL_TRI(30, 40, 26),\n    COL_TRI(26, 41, 38),\n    COL_TRI(29, 30, 42),\n    COL_TRI(31, 32, 33),\n    COL_TRI(31, 44, 32),\n    COL_TRI(32, 45, 46),\n    COL_TRI(32, 46, 34),\n    COL_TRI(33, 32, 34),\n    COL_TRI(34, 46, 47),\n    COL_TRI(34, 47, 44),\n    COL_TRI(33, 34, 35),\n    COL_TRI(35, 34, 44),\n    COL_TRI(35, 44, 31),\n    COL_TRI(37, 33, 35),\n    COL_TRI(30, 28, 43),\n    COL_TRI(36, 31, 33),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 156),\n    COL_TRI(57, 51, 55),\n    COL_TRI(57, 54, 51),\n    COL_TRI(267, 261, 268),\n    COL_TRI(267, 60, 261),\n    COL_TRI(261, 265, 426),\n    COL_TRI(261, 426, 268),\n    COL_TRI(267, 65, 60),\n    COL_TRI(65, 61, 60),\n    COL_TRI(287, 89, 88),\n    COL_TRI(434, 53, 238),\n    COL_TRI(53, 434, 56),\n    COL_TRI(238, 53, 52),\n    COL_TRI(52, 427, 238),\n    COL_TRI(285, 79, 299),\n    COL_TRI(285, 299, 280),\n    COL_TRI(288, 285, 280),\n    COL_TRI(288, 280, 324),\n    COL_TRI(284, 320, 111),\n    COL_TRI(287, 88, 299),\n    COL_TRI(94, 91, 304),\n    COL_TRI(94, 90, 91),\n    COL_TRI(98, 101, 308),\n    COL_TRI(98, 96, 101),\n    COL_TRI(324, 284, 111),\n    COL_TRI(430, 436, 432),\n    COL_TRI(117, 116, 121),\n    COL_TRI(117, 121, 328),\n    COL_TRI(127, 122, 124),\n    COL_TRI(127, 124, 331),\n    COL_TRI(231, 59, 58),\n    COL_TRI(231, 58, 66),\n    COL_TRI(430, 233, 436),\n    COL_TRI(459, 475, 465),\n    COL_TRI(460, 459, 465),\n    COL_TRI(461, 460, 465),\n    COL_TRI(462, 464, 465),\n    COL_TRI(463, 461, 465),\n    COL_TRI(464, 463, 465),\n    COL_TRI(465, 475, 136),\n    COL_TRI(361, 145, 148),\n    COL_TRI(337, 336, 335),\n    COL_TRI(337, 335, 129),\n    COL_TRI(366, 368, 156),\n    COL_TRI(366, 156, 154),\n    COL_TRI(360, 476, 144),\n    COL_TRI(360, 144, 362),\n    COL_TRI(439, 440, 437),\n    COL_TRI(361, 148, 149),\n    COL_TRI(466, 150, 357),\n    COL_TRI(466, 356, 150),\n    COL_TRI(370, 369, 374),\n    COL_TRI(370, 374, 373),\n    COL_TRI(439, 241, 440),\n    COL_TRI(467, 477, 478),\n    COL_TRI(163, 164, 377),\n    COL_TRI(163, 377, 160),\n    COL_TRI(167, 166, 168),\n    COL_TRI(167, 168, 169),\n    COL_TRI(172, 174, 170),\n    COL_TRI(172, 170, 171),\n    COL_TRI(467, 479, 480),\n    COL_TRI(467, 480, 481),\n    COL_TRI(467, 481, 477),\n    COL_TRI(467, 478, 482),\n    COL_TRI(467, 482, 483),\n    COL_TRI(393, 395, 191),\n    COL_TRI(393, 396, 395),\n    COL_TRI(188, 403, 208),\n    COL_TRI(188, 406, 403),\n    COL_TRI(200, 198, 399),\n    COL_TRI(200, 400, 198),\n    COL_TRI(409, 412, 141),\n    COL_TRI(412, 214, 411),\n    COL_TRI(214, 219, 411),\n    COL_TRI(228, 425, 221),\n    COL_TRI(214, 414, 219),\n    COL_TRI(414, 415, 219),\n    COL_TRI(414, 224, 415),\n    COL_TRI(224, 220, 415),\n    COL_TRI(228, 221, 220),\n    COL_TRI(224, 228, 220),\n    COL_TRI(471, 486, 469),\n    COL_TRI(425, 418, 221),\n    COL_TRI(468, 470, 484),\n    COL_TRI(468, 485, 470),\n    COL_TRI(469, 485, 468),\n    COL_TRI(469, 486, 485),\n    COL_TRI(470, 474, 487),\n    COL_TRI(470, 472, 474),\n    COL_TRI(470, 487, 484),\n    COL_TRI(472, 486, 473),\n    COL_TRI(473, 486, 471),\n    COL_TRI(472, 473, 488),\n    COL_TRI(474, 472, 488),\n    COL_TRI(272, 64, 65),\n    COL_TRI(64, 61, 65),\n    COL_TRI(436, 67, 434),\n    COL_TRI(67, 56, 434),\n    COL_TRI(67, 231, 66),\n    COL_TRI(67, 233, 231),\n    COL_TRI(343, 460, 133),\n    COL_TRI(343, 344, 460),\n    COL_TRI(344, 459, 460),\n    COL_TRI(460, 461, 133),\n    COL_TRI(463, 341, 133),\n    COL_TRI(461, 463, 133),\n    COL_TRI(346, 475, 459),\n    COL_TRI(344, 346, 459),\n    COL_TRI(475, 346, 136),\n    COL_TRI(342, 341, 464),\n    COL_TRI(341, 463, 464),\n    COL_TRI(342, 464, 462),\n    COL_TRI(241, 164, 440),\n    COL_TRI(544, 342, 462),\n    COL_TRI(544, 462, 136),\n    COL_TRI(462, 465, 136),\n    COL_TRI(345, 129, 132),\n    COL_TRI(345, 337, 129),\n    COL_TRI(241, 377, 164),\n    COL_TRI(162, 163, 160),\n    COL_TRI(162, 160, 375),\n    COL_TRI(387, 484, 487),\n    COL_TRI(387, 487, 181),\n    COL_TRI(387, 468, 484),\n    COL_TRI(387, 178, 468),\n    COL_TRI(487, 474, 182),\n    COL_TRI(487, 182, 181),\n    COL_TRI(474, 488, 185),\n    COL_TRI(474, 185, 182),\n    COL_TRI(385, 185, 488),\n    COL_TRI(385, 488, 473),\n    COL_TRI(471, 469, 177),\n    COL_TRI(469, 178, 177),\n    COL_TRI(469, 468, 178),\n    COL_TRI(471, 177, 175),\n    COL_TRI(385, 471, 175),\n    COL_TRI(385, 473, 471),\n    COL_TRI(478, 477, 547),\n    COL_TRI(208, 480, 479),\n    COL_TRI(208, 479, 188),\n    COL_TRI(208, 481, 480),\n    COL_TRI(208, 390, 481),\n    COL_TRI(479, 189, 188),\n    COL_TRI(479, 467, 189),\n    COL_TRI(467, 483, 546),\n    COL_TRI(467, 546, 189),\n    COL_TRI(545, 483, 482),\n    COL_TRI(545, 546, 483),\n    COL_TRI(477, 481, 390),\n    COL_TRI(477, 390, 547),\n    COL_TRI(478, 547, 548),\n    COL_TRI(545, 478, 548),\n    COL_TRI(545, 482, 478),\n    COL_TRI(200, 399, 203),\n    COL_TRI(203, 201, 200),\n    COL_TRI(412, 411, 141),\n    COL_TRI_INIT(SURFACE_CAMERA_ROTATE_RIGHT, 2),\n    COL_TRI(0, 1, 2),\n    COL_TRI(1, 3, 2),\n    COL_TRI_INIT(SURFACE_NO_CAM_COLLISION, 76),\n    COL_TRI(489, 470, 485),\n    COL_TRI(489, 472, 470),\n    COL_TRI(490, 491, 492),\n    COL_TRI(493, 494, 490),\n    COL_TRI(490, 494, 491),\n    COL_TRI(495, 490, 492),\n    COL_TRI(490, 495, 493),\n    COL_TRI(496, 493, 495),\n    COL_TRI(496, 495, 492),\n    COL_TRI(496, 497, 493),\n    COL_TRI(493, 497, 494),\n    COL_TRI(492, 498, 496),\n    COL_TRI(496, 498, 497),\n    COL_TRI(492, 491, 498),\n    COL_TRI(499, 500, 503),\n    COL_TRI(500, 499, 501),\n    COL_TRI(500, 524, 503),\n    COL_TRI(500, 525, 524),\n    COL_TRI(501, 525, 500),\n    COL_TRI(502, 499, 503),\n    COL_TRI(502, 501, 499),\n    COL_TRI(502, 526, 501),\n    COL_TRI(501, 526, 525),\n    COL_TRI(502, 527, 526),\n    COL_TRI(503, 527, 502),\n    COL_TRI(503, 524, 527),\n    COL_TRI(504, 505, 508),\n    COL_TRI(505, 506, 508),\n    COL_TRI(504, 507, 505),\n    COL_TRI(506, 505, 507),\n    COL_TRI(507, 528, 506),\n    COL_TRI(506, 528, 529),\n    COL_TRI(506, 529, 508),\n    COL_TRI(508, 529, 530),\n    COL_TRI(508, 530, 504),\n    COL_TRI(504, 530, 531),\n    COL_TRI(504, 531, 507),\n    COL_TRI(507, 531, 528),\n    COL_TRI(509, 510, 513),\n    COL_TRI(510, 509, 511),\n    COL_TRI(510, 532, 533),\n    COL_TRI(511, 532, 510),\n    COL_TRI(510, 533, 513),\n    COL_TRI(512, 509, 513),\n    COL_TRI(512, 511, 509),\n    COL_TRI(512, 534, 511),\n    COL_TRI(511, 534, 532),\n    COL_TRI(513, 535, 512),\n    COL_TRI(512, 535, 534),\n    COL_TRI(513, 533, 535),\n    COL_TRI(514, 516, 518),\n    COL_TRI(515, 514, 518),\n    COL_TRI(515, 517, 514),\n    COL_TRI(516, 514, 517),\n    COL_TRI(519, 521, 522),\n    COL_TRI(517, 536, 516),\n    COL_TRI(516, 537, 518),\n    COL_TRI(516, 536, 537),\n    COL_TRI(518, 537, 538),\n    COL_TRI(518, 538, 515),\n    COL_TRI(515, 538, 539),\n    COL_TRI(515, 539, 517),\n    COL_TRI(517, 539, 536),\n    COL_TRI(486, 472, 489),\n    COL_TRI(520, 521, 523),\n    COL_TRI(520, 522, 521),\n    COL_TRI(519, 540, 541),\n    COL_TRI(519, 541, 523),\n    COL_TRI(521, 519, 523),\n    COL_TRI(522, 540, 519),\n    COL_TRI(523, 543, 520),\n    COL_TRI(523, 541, 543),\n    COL_TRI(520, 543, 542),\n    COL_TRI(520, 542, 522),\n    COL_TRI(522, 542, 540),\n    COL_TRI(485, 486, 489),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(23),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_null_start,   /*pos*/ -7443, -3153,  3886, /*yaw*/ 64), // unused, probably an early way to set initial position\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/ -6368, -3972,  3883, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_04, /*pos*/ -3245, -3358,  3893, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_05, /*pos*/ -2405, -1228,  1740, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_06, /*pos*/ -5861,  -434,   306, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_07, /*pos*/ -5062,   922, -1895, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_08, /*pos*/ -7116,   717,  -819, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_09, /*pos*/ -4601,     0,  -312, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0A, /*pos*/   797, -3282,  3868, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0B, /*pos*/ -2047, -1868,  3685, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0C, /*pos*/  -966,   922,    44, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0D, /*pos*/  2207,   922,    44, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0E, /*pos*/ -7108,   209,   356, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0E, /*pos*/ -7103,   844, -2088, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0E, /*pos*/ -6466,     9,   986, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0E, /*pos*/ -4013,  -670,   990, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0E, /*pos*/ -5251,  -276,   967, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0E, /*pos*/ -7665,   502,  -251, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0F, /*pos*/  5382,  1536,    -6, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_10, /*pos*/ -1658, -3281,  3893, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_10, /*pos*/ -2656,   889, -2156, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_10, /*pos*/ -2052,   889,  -928, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_11, /*pos*/ -3168,   710,   607, /*yaw*/  0),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bitdw/areas/1/geo.inc.c",
    "content": "// 0x0E000618\nconst GeoLayout geo_bitdw_000618[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND(BACKGROUND_GREEN_SKY, geo_skybox_main),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 20000, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(14, 0, 2000, 6000, 0, 0, 0, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_ALPHA, bitdw_seg7_dl_070020C8),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(0, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitdw/areas/1/large_platform/geo.inc.c",
    "content": "// 0x0E0003D8\nconst GeoLayout geo_bitdw_0003D8[] = {\n    GEO_CULLING_RADIUS(2300),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitdw_seg7_dl_070032F8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitdw/areas/1/large_platform/model.inc.c",
    "content": "// 0x07002928 - 0x07002A28\nstatic const Vtx bitdw_seg7_vertex_07002928[] = {\n    {{{   205,    653,  -1101}, 0, {   480,    990}, {0xbe, 0xbe, 0xbe, 0xff}}},\n    {{{   102,    653,  -1101}, 0, {   224,   1244}, {0xbe, 0xbe, 0xbe, 0xff}}},\n    {{{   102,    653,   -999}, 0, {     0,    990}, {0xbe, 0xbe, 0xbe, 0xff}}},\n    {{{   205,    653,   -999}, 0, {   224,    734}, {0xbe, 0xbe, 0xbe, 0xff}}},\n    {{{    51,    448,   -845}, 0, {  -542,    734}, {0x5e, 0x69, 0x58, 0xff}}},\n    {{{   102,    294,   -999}, 0, {     0,    990}, {0x5e, 0x69, 0x58, 0xff}}},\n    {{{   205,    294,   -999}, 0, {   224,    734}, {0x5e, 0x69, 0x58, 0xff}}},\n    {{{   256,    448,   -845}, 0, {     0,    224}, {0x5e, 0x69, 0x58, 0xff}}},\n    {{{   307,    448,  -1203}, 0, {   990,    990}, {0x5e, 0x69, 0x58, 0xff}}},\n    {{{   102,    294,  -1101}, 0, {   224,   1244}, {0x5e, 0x69, 0x58, 0xff}}},\n    {{{     0,    448,  -1203}, 0, {   224,   1754}, {0x5e, 0x69, 0x58, 0xff}}},\n    {{{   205,    294,  -1101}, 0, {   480,    990}, {0x5e, 0x69, 0x58, 0xff}}},\n    {{{   205,    294,   -999}, 0, {   224,    734}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{   102,    294,   -999}, 0, {     0,    990}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{   102,    294,  -1101}, 0, {   224,   1244}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{   205,    294,  -1101}, 0, {   480,    990}, {0x38, 0x4a, 0x3d, 0xff}}},\n};\n\n// 0x07002A28 - 0x07002B28\nstatic const Vtx bitdw_seg7_vertex_07002A28[] = {\n    {{{   256,    448,   -845}, 0, {     0,    224}, {0x4f, 0x61, 0x55, 0xff}}},\n    {{{   205,    294,   -999}, 0, {   224,    734}, {0x4f, 0x61, 0x55, 0xff}}},\n    {{{   307,    448,  -1203}, 0, {   990,    990}, {0x4f, 0x61, 0x55, 0xff}}},\n    {{{   205,    294,  -1101}, 0, {   480,    990}, {0x4f, 0x61, 0x55, 0xff}}},\n    {{{     0,    448,  -1203}, 0, {   224,   1754}, {0x4f, 0x61, 0x55, 0xff}}},\n    {{{   102,    294,   -999}, 0, {     0,    990}, {0x4f, 0x61, 0x55, 0xff}}},\n    {{{    51,    448,   -845}, 0, {  -542,    734}, {0x4f, 0x61, 0x55, 0xff}}},\n    {{{   102,    294,  -1101}, 0, {   224,   1244}, {0x4f, 0x61, 0x55, 0xff}}},\n    {{{    51,    448,   -845}, 0, {  -542,    734}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   102,    653,   -999}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{     0,    448,  -1203}, 0, {   224,   1754}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   102,    653,  -1101}, 0, {   224,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   307,    448,  -1203}, 0, {   990,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   205,    653,  -1101}, 0, {   480,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   205,    653,   -999}, 0, {   224,    734}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   256,    448,   -845}, 0, {     0,    224}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x07002B28 - 0x07002BA8\nstatic const Vtx bitdw_seg7_vertex_07002B28[] = {\n    {{{     0,    448,  -1203}, 0, {   224,   1754}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   102,    653,  -1101}, 0, {   224,   1244}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   205,    653,  -1101}, 0, {   480,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   307,    448,  -1203}, 0, {   990,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   256,    448,   -845}, 0, {     0,    224}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   205,    653,   -999}, 0, {   224,    734}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   102,    653,   -999}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{    51,    448,   -845}, 0, {  -542,    734}, {0x96, 0x96, 0x96, 0xff}}},\n};\n\n// 0x07002BA8 - 0x07002CA8\nstatic const Vtx bitdw_seg7_vertex_07002BA8[] = {\n    {{{  -972,   -204,   -304}, 0, {  4060,    296}, {0x70, 0x83, 0x73, 0xff}}},\n    {{{ -1381,      0,   -304}, 0, {  5082,    -44}, {0x70, 0x83, 0x73, 0xff}}},\n    {{{  -972,      0,   -304}, 0, {  4400,    636}, {0x70, 0x83, 0x73, 0xff}}},\n    {{{  -972,      0,    311}, 0, {  2012,  -1054}, {0x70, 0x83, 0x73, 0xff}}},\n    {{{ -1381,      0,    311}, 0, {  1330,  -1736}, {0x70, 0x83, 0x73, 0xff}}},\n    {{{ -1381,   -204,    311}, 0, {   990,  -1394}, {0x70, 0x83, 0x73, 0xff}}},\n    {{{  -972,   -204,    311}, 0, {  1672,   -714}, {0x70, 0x83, 0x73, 0xff}}},\n    {{{  -147,    412,   -508}, 0, {  3716,   2692}, {0x70, 0x83, 0x73, 0xff}}},\n    {{{   461,    205,   -512}, 0, {  2356,   3360}, {0x70, 0x83, 0x73, 0xff}}},\n    {{{  -147,    207,   -508}, 0, {  3374,   2350}, {0x70, 0x83, 0x73, 0xff}}},\n    {{{   461,    410,   -512}, 0, {  2698,   3700}, {0x70, 0x83, 0x73, 0xff}}},\n    {{{  -147,    207,    515}, 0, {  3728,    -28}, {0x70, 0x83, 0x73, 0xff}}},\n    {{{   466,    412,    515}, 0, {  5090,    654}, {0x70, 0x83, 0x73, 0xff}}},\n    {{{  -147,    412,    515}, 0, {  4068,   -368}, {0x70, 0x83, 0x73, 0xff}}},\n    {{{   466,    207,    515}, 0, {  4750,    992}, {0x70, 0x83, 0x73, 0xff}}},\n    {{{ -1381,   -204,   -304}, 0, {  4742,   -386}, {0x70, 0x83, 0x73, 0xff}}},\n};\n\n// 0x07002CA8 - 0x07002D98\nstatic const Vtx bitdw_seg7_vertex_07002CA8[] = {\n    {{{  -972,      0,    311}, 0, {  2012,  -1054}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{  -147,    207,    515}, 0, {  3728,    -28}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{  -147,    412,    515}, 0, {  4068,   -368}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{  -147,    207,   -508}, 0, {  3374,   2350}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{  -972,   -204,   -304}, 0, {  4060,    296}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{  -147,    412,   -508}, 0, {  3716,   2692}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{  -972,      0,   -304}, 0, {  4400,    636}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{   466,    412,    515}, 0, {  5090,    654}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{   466,    207,    515}, 0, {  4750,    992}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{   973,    205,    307}, 0, {  5588,   1840}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{   973,      0,    307}, 0, {  5248,   2180}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{   973,    205,   -307}, 0, {  1506,   4212}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{   973,      0,   -307}, 0, {  1164,   3870}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{   461,    205,   -512}, 0, {  2356,   3360}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{   461,    410,   -512}, 0, {  2698,   3700}, {0x68, 0x7b, 0x6e, 0xff}}},\n};\n\n// 0x07002D98 - 0x07002E88\nstatic const Vtx bitdw_seg7_vertex_07002D98[] = {\n    {{{   466,  -1225,   -303}, 0, {     0,    990}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{  -972,  -1228,   -304}, 0, {  2356,  -1408}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{  -147,    207,   -508}, 0, {  3374,   2350}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{  -972,      0,    311}, 0, {  2012,  -1054}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{  -972,   -204,    311}, 0, {  1672,   -714}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{  -147,    207,    515}, 0, {  3728,    -28}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{   461,    205,   -512}, 0, {  2356,   3360}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{   973,      0,   -307}, 0, {  1164,   3870}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{   466,    207,    515}, 0, {  4750,    992}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{   466,  -1225,    311}, 0, {  2366,   3376}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{   973,      0,    307}, 0, {  5248,   2180}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{  -972,  -1228,    311}, 0, {     0,    990}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{ -1381,   -204,   -304}, 0, {  4742,   -386}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{  -972,   -204,   -304}, 0, {  4060,    296}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{ -1381,   -204,    311}, 0, {   990,  -1394}, {0x68, 0x7b, 0x6e, 0xff}}},\n};\n\n// 0x07002E88 - 0x07002F88\nstatic const Vtx bitdw_seg7_vertex_07002E88[] = {\n    {{{   973,      0,   -307}, 0, {   990,   3032}, {0x5e, 0x69, 0x58, 0xff}}},\n    {{{   973,    205,   -307}, 0, {  1502,   2522}, {0x5e, 0x69, 0x58, 0xff}}},\n    {{{   973,    205,    307}, 0, {     0,    988}, {0x5e, 0x69, 0x58, 0xff}}},\n    {{{   973,      0,    307}, 0, {  -544,   1496}, {0x5e, 0x69, 0x58, 0xff}}},\n    {{{ -1381,   -204,    311}, 0, {  -808,   1742}, {0x5e, 0x69, 0x58, 0xff}}},\n    {{{ -1381,      0,   -304}, 0, {   982,   3024}, {0x5e, 0x69, 0x58, 0xff}}},\n    {{{ -1381,   -204,   -304}, 0, {   726,   3278}, {0x5e, 0x69, 0x58, 0xff}}},\n    {{{ -1381,      0,    311}, 0, {  -552,   1488}, {0x5e, 0x69, 0x58, 0xff}}},\n    {{{   466,  -1225,   -304}, 0, {   -28,    992}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{   973,      0,    307}, 0, {  3030,   2014}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{   466,  -1225,    311}, 0, {   996,    -30}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{   973,      0,   -307}, 0, {  2006,   3038}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{  -972,  -1228,    311}, 0, {   992,    -34}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{ -1381,   -204,   -304}, 0, {  1672,   2692}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{  -972,  -1228,   -304}, 0, {     0,    990}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{ -1381,   -204,    311}, 0, {  2696,   1668}, {0x38, 0x4a, 0x3d, 0xff}}},\n};\n\n// 0x07002F88 - 0x07003088\nstatic const Vtx bitdw_seg7_vertex_07002F88[] = {\n    {{{ -1381,      0,    311}, 0, {  5842,  -4890}, {0xcd, 0xdf, 0xcc, 0xff}}},\n    {{{  -972,      0,    311}, 0, {  6864,  -5912}, {0xcd, 0xdf, 0xcc, 0xff}}},\n    {{{  -972,      0,   -304}, 0, {  8400,  -4376}, {0xcd, 0xdf, 0xcc, 0xff}}},\n    {{{ -1381,      0,   -304}, 0, {  7378,  -3354}, {0xcd, 0xdf, 0xcc, 0xff}}},\n    {{{   461,    410,   -512}, 0, { 12496,  -7432}, {0xcd, 0xdf, 0xcc, 0xff}}},\n    {{{  -147,    412,    515}, 0, {  8410,  -8480}, {0xcd, 0xdf, 0xcc, 0xff}}},\n    {{{   466,    412,    515}, 0, {  9942, -10012}, {0xcd, 0xdf, 0xcc, 0xff}}},\n    {{{  -147,    412,   -508}, 0, { 10964,  -5924}, {0xcd, 0xdf, 0xcc, 0xff}}},\n    {{{  -972,      0,    311}, 0, {  6864,  -5912}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{  -147,    412,    515}, 0, {  8410,  -8480}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{  -147,    412,   -508}, 0, { 10964,  -5924}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{  -972,      0,   -304}, 0, {  8400,  -4376}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{   973,    205,   -307}, 0, {  3288,   1778}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{   461,    410,   -512}, 0, {  2522,   3568}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{   466,    412,    515}, 0, {     0,    990}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{   973,    205,    307}, 0, {  1752,    244}, {0xb7, 0xcd, 0xba, 0xff}}},\n};\n\n// 0x07003088 - 0x07003160\nstatic const Gfx bitdw_seg7_dl_07003088[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_07002928, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07002A28, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07002B28, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07003160 - 0x070032F8\nstatic const Gfx bitdw_seg7_dl_07003160[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_07002BA8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07002CA8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 11, 13, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07002D98, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  0, 0x0,  2,  6,  0, 0x0),\n    gsSP2Triangles( 8,  5,  9, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(11,  9,  5, 0x0,  1, 12, 13, 0x0),\n    gsSP2Triangles( 2,  1, 13, 0x0,  4, 14, 11, 0x0),\n    gsSP1Triangle( 4, 11,  5, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07002E88, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07002F88, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070032F8 - 0x07003370\nconst Gfx bitdw_seg7_dl_070032F8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitdw_seg7_dl_07003088),\n    gsSPDisplayList(bitdw_seg7_dl_07003160),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitdw/areas/1/macro.inc.c",
    "content": "// 0x0700F438 - 0x0700F688\nconst MacroObject bitdw_seg7_macro_objs[] = {\n    MACRO_OBJECT               (/*preset*/ macro_box_metal_cap,               /*yaw*/   0, /*pos*/ -6420, -2900,  3880),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_horizontal_flying, /*yaw*/   0, /*pos*/ -1660, -3000,  3900),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,        /*yaw*/   0, /*pos*/ -2400,  -800,  1900),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_circling_amp,                /*yaw*/   0, /*pos*/ -5300,    20,  1000, /*bhvParam*/ AMP_BP_ROT_RADIUS_200),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_circling_amp,                /*yaw*/   0, /*pos*/ -7140,   500,   380, /*bhvParam*/ AMP_BP_ROT_RADIUS_300),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_circling_amp,                /*yaw*/   0, /*pos*/ -7120,  1050, -2080, /*bhvParam*/ AMP_BP_ROT_RADIUS_300),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_circling_amp,                /*yaw*/   0, /*pos*/ -6480,   240,  1000, /*bhvParam*/ AMP_BP_ROT_RADIUS_200),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_horizontal_flying, /*yaw*/   0, /*pos*/ -2060,  1200,  -940),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/  -170,  1070,   300),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/  -170,  1070,   700),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/  1450,  1400,   300),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/  1450,  1400,   700),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,        /*yaw*/  90, /*pos*/  1660, -1980,  3660),\n    MACRO_OBJECT               (/*preset*/ macro_goomba,                      /*yaw*/   0, /*pos*/  3180,  1020,   240),\n    MACRO_OBJECT               (/*preset*/ macro_goomba,                      /*yaw*/   0, /*pos*/  2860,  1020,   580),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/  4640,  2360,     0),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/  4900,  2600,     0),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/  5180,  2820,     0),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/  2760,  1940,   500),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/  2760,  1940,   180),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,               /*yaw*/   0, /*pos*/ -2460,   812,   800),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,               /*yaw*/   0, /*pos*/ -3080,   813,   840),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,               /*yaw*/   0, /*pos*/ -3660,   873,   620),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,               /*yaw*/   0, /*pos*/ -4060,  1011,   240),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_circling_amp,                /*yaw*/   0, /*pos*/ -4620,  1220,  -300, /*bhvParam*/ AMP_BP_ROT_RADIUS_400),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_horizontal,        /*yaw*/   0, /*pos*/ -4620,  1220,  -300),\n    MACRO_OBJECT               (/*preset*/ macro_box_1up,                     /*yaw*/   0, /*pos*/ -4860,  1380,  -300),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/  -150, -1200,  3660),\n    MACRO_OBJECT               (/*preset*/ macro_box_three_coins,             /*yaw*/   0, /*pos*/ -5120,  1460, -2140),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/  4380,  2120,     0),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/  5420,  3000,     0),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/ -2357,  1200, -2454),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/ -2357,  1300, -2454),\n    MACRO_OBJECT               (/*preset*/ macro_goomba,                      /*yaw*/   0, /*pos*/ -2560, -1433,  3280),\n    MACRO_OBJECT               (/*preset*/ macro_goomba,                      /*yaw*/   0, /*pos*/ -2060, -1433,  3540),\n    MACRO_OBJECT               (/*preset*/ macro_goomba,                      /*yaw*/   0, /*pos*/ -2720, -1433,  3860),\n    MACRO_OBJECT               (/*preset*/ macro_goomba,                      /*yaw*/   0, /*pos*/ -1680,  1024,   580),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -3100, -2900,  4520),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -4740,  1050, -2130),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -3120,  1160, -2570),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -4613,  1220,  -427),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -1000,  1933,   466),\n    MACRO_OBJECT               (/*preset*/ macro_1up_beat_bitdw_bowser,       /*yaw*/   0, /*pos*/    33,  1900,   333),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -6475,   125,   890),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -7810, -3100,  4900),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  1500,  1066,  -166),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/   0, /*pos*/  5940,  2765,  -280, /*bhvParam*/ DIALOG_066),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/ -2357,  1400, -2454),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/  -170,  1070,   500),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/  1450,  1400,   500),\n    MACRO_OBJECT               (/*preset*/ macro_1up,                         /*yaw*/   0, /*pos*/   610,  1045,  -167),\n    MACRO_OBJECT               (/*preset*/ macro_1up_beat_bitdw_bowser,       /*yaw*/   0, /*pos*/  -485,  1054,  -167),\n    MACRO_OBJECT               (/*preset*/ macro_1up_beat_bitfs_bowser,       /*yaw*/   0, /*pos*/  1100,  2080,   363),\n    MACRO_OBJECT               (/*preset*/ macro_floor_switch_hidden_objects, /*yaw*/   0, /*pos*/ -3100, -2946,  3530),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/ -7810, -3360,  4500),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/ -7810, -3360,  4700),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/ -7810, -3360,  4900),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/ -3100, -3145,  4518),\n    MACRO_OBJECT               (/*preset*/ macro_box_1up_running_away,        /*yaw*/   0, /*pos*/ -2420, -1140,  3700),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/bitdw/areas/1/narrow_path_platform/geo.inc.c",
    "content": "// 0x0E000510\nconst GeoLayout geo_bitdw_000510[] = {\n    GEO_CULLING_RADIUS(1400),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitdw_seg7_dl_0700AD10),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitdw/areas/1/narrow_path_platform/model.inc.c",
    "content": "// 0x0700A718 - 0x0700A818\nstatic const Vtx bitdw_seg7_vertex_0700A718[] = {\n    {{{   102,    102,    102}, 0, {    18,    836}, {0x8e, 0xac, 0x52, 0xff}}},\n    {{{  -420,    162,    -49}, 0, {    82,   -532}, {0x8e, 0xac, 0x52, 0xff}}},\n    {{{   102,    102,    307}, 0, {   990,    990}, {0x8e, 0xac, 0x52, 0xff}}},\n    {{{  -565,    162,     95}, 0, {   990,   -766}, {0x8e, 0xac, 0x52, 0xff}}},\n    {{{  -995,    314,   -334}, 0, {   990,   -574}, {0x8e, 0xac, 0x52, 0xff}}},\n    {{{  -565,    162,     95}, 0, {   990,    990}, {0x8e, 0xac, 0x52, 0xff}}},\n    {{{  -420,    162,    -49}, 0, {     0,    990}, {0x8e, 0xac, 0x52, 0xff}}},\n    {{{  -850,    314,   -479}, 0, {     0,   -574}, {0x8e, 0xac, 0x52, 0xff}}},\n    {{{   102,    102,    102}, 0, {     0,     62}, {0x8e, 0xac, 0x52, 0xff}}},\n    {{{   717,    102,    307}, 0, {   990,    990}, {0x8e, 0xac, 0x52, 0xff}}},\n    {{{   717,    102,    102}, 0, {     0,    990}, {0x8e, 0xac, 0x52, 0xff}}},\n    {{{   102,    102,    307}, 0, {   990,      0}, {0x8e, 0xac, 0x52, 0xff}}},\n    {{{  -565,     60,     95}, 0, {  1012,   -744}, {0x3a, 0x47, 0x2d, 0xff}}},\n    {{{  -420,     60,    -49}, 0, {   104,   -510}, {0x3a, 0x47, 0x2d, 0xff}}},\n    {{{   102,      0,    102}, 0, {    40,    858}, {0x3a, 0x47, 0x2d, 0xff}}},\n    {{{   102,      0,    307}, 0, {  1012,   1010}, {0x3a, 0x47, 0x2d, 0xff}}},\n};\n\n// 0x0700A818 - 0x0700A918\nstatic const Vtx bitdw_seg7_vertex_0700A818[] = {\n    {{{  -565,     60,     95}, 0, {   990,   1050}, {0x3a, 0x47, 0x2d, 0xff}}},\n    {{{ -1065,    236,   -404}, 0, {   990,   -512}, {0x3a, 0x47, 0x2d, 0xff}}},\n    {{{  -920,    236,   -549}, 0, {     0,   -512}, {0x3a, 0x47, 0x2d, 0xff}}},\n    {{{  -420,     60,    -49}, 0, {     0,   1050}, {0x3a, 0x47, 0x2d, 0xff}}},\n    {{{   717,      0,    102}, 0, {     0,    990}, {0x3a, 0x47, 0x2d, 0xff}}},\n    {{{   717,      0,    307}, 0, {   990,    990}, {0x3a, 0x47, 0x2d, 0xff}}},\n    {{{   102,      0,    307}, 0, {   990,   -542}, {0x3a, 0x47, 0x2d, 0xff}}},\n    {{{   102,      0,    102}, 0, {     0,   -544}, {0x3a, 0x47, 0x2d, 0xff}}},\n    {{{   717,      0,    102}, 0, { -1308,    606}, {0x4d, 0x6f, 0x2d, 0xff}}},\n    {{{   102,    102,    102}, 0, {  -158,    734}, {0x4d, 0x6f, 0x2d, 0xff}}},\n    {{{   717,    102,    102}, 0, { -1308,    352}, {0x4d, 0x6f, 0x2d, 0xff}}},\n    {{{   102,      0,    102}, 0, {  -158,    990}, {0x4d, 0x6f, 0x2d, 0xff}}},\n    {{{   102,    102,    307}, 0, {     0,    734}, {0x4d, 0x6f, 0x2d, 0xff}}},\n    {{{   717,      0,    307}, 0, { -1308,    606}, {0x4d, 0x6f, 0x2d, 0xff}}},\n    {{{   717,    102,    307}, 0, { -1308,    352}, {0x4d, 0x6f, 0x2d, 0xff}}},\n    {{{   102,      0,    307}, 0, {     0,    990}, {0x4d, 0x6f, 0x2d, 0xff}}},\n};\n\n// 0x0700A918 - 0x0700AA18\nstatic const Vtx bitdw_seg7_vertex_0700A918[] = {\n    {{{  -420,     60,    -49}, 0, {  1352,   1244}, {0x47, 0x61, 0x15, 0xff}}},\n    {{{  -420,    162,    -49}, 0, {  1352,    990}, {0x47, 0x61, 0x15, 0xff}}},\n    {{{   102,    102,    102}, 0, {  2658,   1136}, {0x47, 0x61, 0x15, 0xff}}},\n    {{{   102,      0,    102}, 0, {  2658,   1392}, {0x47, 0x61, 0x15, 0xff}}},\n    {{{  -565,    162,     95}, 0, {  1636,    720}, {0x47, 0x61, 0x15, 0xff}}},\n    {{{  -565,     60,     95}, 0, {  1636,    890}, {0x47, 0x61, 0x15, 0xff}}},\n    {{{   102,      0,    307}, 0, {     0,    990}, {0x47, 0x61, 0x15, 0xff}}},\n    {{{   102,    102,    307}, 0, {     0,    820}, {0x47, 0x61, 0x15, 0xff}}},\n    {{{  -420,    162,    -49}, 0, {  1352,    990}, {0x44, 0x5f, 0x25, 0xff}}},\n    {{{  -420,     60,    -49}, 0, {  1352,   1244}, {0x44, 0x5f, 0x25, 0xff}}},\n    {{{  -850,    314,   -479}, 0, {   278,    610}, {0x44, 0x5f, 0x25, 0xff}}},\n    {{{  -920,    236,   -549}, 0, {   102,    804}, {0x44, 0x5f, 0x25, 0xff}}},\n    {{{  -995,    314,   -334}, 0, {   -82,    610}, {0x44, 0x5f, 0x25, 0xff}}},\n    {{{  -565,     60,     95}, 0, {   990,   1244}, {0x44, 0x5f, 0x25, 0xff}}},\n    {{{  -565,    162,     95}, 0, {   990,    990}, {0x44, 0x5f, 0x25, 0xff}}},\n    {{{ -1065,    236,   -404}, 0, {  -256,    804}, {0x44, 0x5f, 0x25, 0xff}}},\n};\n\n// 0x0700AA18 - 0x0700AAF8\nstatic const Vtx bitdw_seg7_vertex_0700AA18[] = {\n    {{{  1126,      0,      0}, 0, {   -90,   1042}, {0x4e, 0x69, 0x7e, 0xff}}},\n    {{{  1189,   -168,     94}, 0, {   -18,   1254}, {0x4e, 0x69, 0x7e, 0xff}}},\n    {{{   717,      0,    102}, 0, {   562,    512}, {0x4e, 0x69, 0x7e, 0xff}}},\n    {{{   717,      0,    307}, 0, {   888,    758}, {0x4e, 0x69, 0x7e, 0xff}}},\n    {{{  1189,   -168,    315}, 0, {   336,   1520}, {0x4e, 0x69, 0x7e, 0xff}}},\n    {{{  1126,      0,    410}, 0, {   562,   1532}, {0x4e, 0x69, 0x7e, 0xff}}},\n    {{{   717,    102,    307}, 0, {   820,   1498}, {0x74, 0xb2, 0xbd, 0xff}}},\n    {{{  1126,    102,    410}, 0, {     0,    990}, {0x74, 0xb2, 0xbd, 0xff}}},\n    {{{  1126,    102,      0}, 0, {   650,    308}, {0x74, 0xb2, 0xbd, 0xff}}},\n    {{{   717,    102,    102}, 0, {  1160,   1158}, {0x74, 0xb2, 0xbd, 0xff}}},\n    {{{   717,      0,    102}, 0, {   562,    512}, {0x27, 0x35, 0x3e, 0xff}}},\n    {{{  1189,   -168,    315}, 0, {   336,   1520}, {0x27, 0x35, 0x3e, 0xff}}},\n    {{{   717,      0,    307}, 0, {   888,    758}, {0x27, 0x35, 0x3e, 0xff}}},\n    {{{  1189,   -168,     94}, 0, {   -18,   1254}, {0x27, 0x35, 0x3e, 0xff}}},\n};\n\n// 0x0700AAF8 - 0x0700AB78\nstatic const Vtx bitdw_seg7_vertex_0700AAF8[] = {\n    {{{   717,      0,    307}, 0, {     0,    480}, {0x2d, 0x5e, 0x7c, 0xff}}},\n    {{{  1126,    102,    410}, 0, {  1246,   1244}, {0x2d, 0x5e, 0x7c, 0xff}}},\n    {{{   717,    102,    307}, 0, {   224,    224}, {0x2d, 0x5e, 0x7c, 0xff}}},\n    {{{  1126,      0,    410}, 0, {   990,   1498}, {0x2d, 0x5e, 0x7c, 0xff}}},\n    {{{  1126,      0,      0}, 0, {   990,   1498}, {0x2d, 0x5e, 0x7c, 0xff}}},\n    {{{   717,    102,    102}, 0, {   224,    224}, {0x2d, 0x5e, 0x7c, 0xff}}},\n    {{{  1126,    102,      0}, 0, {  1246,   1244}, {0x2d, 0x5e, 0x7c, 0xff}}},\n    {{{   717,      0,    102}, 0, {     0,    480}, {0x2d, 0x5e, 0x7c, 0xff}}},\n};\n\n// 0x0700AB78 - 0x0700AC70\nstatic const Gfx bitdw_seg7_dl_0700AB78[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_0700A718, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 15, 12, 14, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_0700A818, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_0700A918, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700AC70 - 0x0700ACC8\nstatic const Gfx bitdw_seg7_dl_0700AC70[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_0700AA18, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700ACC8 - 0x0700AD10\nstatic const Gfx bitdw_seg7_dl_0700ACC8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_0700AAF8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700AD10 - 0x0700AD90\nconst Gfx bitdw_seg7_dl_0700AD10[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitdw_seg7_dl_0700AB78),\n    gsSPDisplayList(bitdw_seg7_dl_0700AC70),\n    gsSPDisplayList(bitdw_seg7_dl_0700ACC8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitdw/areas/1/octogonal_platform/geo.inc.c",
    "content": "// 0x0E000450\nconst GeoLayout geo_bitdw_000450[] = {\n    GEO_CULLING_RADIUS(1300),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitdw_seg7_dl_07005078),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitdw/areas/1/octogonal_platform/model.inc.c",
    "content": "// 0x07004630 - 0x07004720\nstatic const Vtx bitdw_seg7_vertex_07004630[] = {\n    {{{  -716,   1024,    306}, 0, {  -302,    922}, {0xff, 0x4e, 0x00, 0xff}}},\n    {{{  -511,   1126,   -205}, 0, {  -644,    786}, {0xff, 0x4e, 0x00, 0xff}}},\n    {{{  -716,   1024,   -307}, 0, {  -712,    922}, {0xff, 0x4e, 0x00, 0xff}}},\n    {{{  -511,   1126,    204}, 0, {  -370,    786}, {0xff, 0x4e, 0x00, 0xff}}},\n    {{{   717,   1024,   -307}, 0, {  -712,      0}, {0xff, 0x4e, 0x00, 0xff}}},\n    {{{   512,   1126,   -205}, 0, {  -644,    104}, {0xff, 0x4e, 0x00, 0xff}}},\n    {{{   512,   1126,    204}, 0, {  -370,    104}, {0xff, 0x4e, 0x00, 0xff}}},\n    {{{   717,   1024,    306}, 0, {  -302,      0}, {0xff, 0x4e, 0x00, 0xff}}},\n    {{{   512,   1126,    204}, 0, {  -370,    104}, {0xfb, 0x5f, 0x19, 0xff}}},\n    {{{   205,   1126,    511}, 0, {  -166,    308}, {0xfb, 0x5f, 0x19, 0xff}}},\n    {{{   307,   1024,    716}, 0, {     0,    240}, {0xfb, 0x5f, 0x19, 0xff}}},\n    {{{   717,   1024,   -307}, 0, {  -712,      0}, {0xfb, 0x5f, 0x19, 0xff}}},\n    {{{   307,   1024,   -717}, 0, {  -984,    240}, {0xfb, 0x5f, 0x19, 0xff}}},\n    {{{   205,   1126,   -512}, 0, {  -848,    308}, {0xfb, 0x5f, 0x19, 0xff}}},\n    {{{   512,   1126,   -205}, 0, {  -644,    104}, {0xfb, 0x5f, 0x19, 0xff}}},\n};\n\n// 0x07004720 - 0x07004810\nstatic const Vtx bitdw_seg7_vertex_07004720[] = {\n    {{{  -511,   1126,   -205}, 0, {  -644,    786}, {0xfb, 0x5f, 0x19, 0xff}}},\n    {{{  -204,   1126,   -512}, 0, {  -848,    582}, {0xfb, 0x5f, 0x19, 0xff}}},\n    {{{  -306,   1024,   -717}, 0, {  -984,    650}, {0xfb, 0x5f, 0x19, 0xff}}},\n    {{{  -716,   1024,   -307}, 0, {  -712,    922}, {0xfb, 0x5f, 0x19, 0xff}}},\n    {{{  -716,   1024,    306}, 0, {  -302,    922}, {0xfb, 0x5f, 0x19, 0xff}}},\n    {{{  -306,   1024,    716}, 0, {     0,    650}, {0xfb, 0x5f, 0x19, 0xff}}},\n    {{{  -204,   1126,    511}, 0, {  -166,    582}, {0xfb, 0x5f, 0x19, 0xff}}},\n    {{{  -511,   1126,    204}, 0, {  -370,    786}, {0xfb, 0x5f, 0x19, 0xff}}},\n    {{{   512,   1126,    204}, 0, {  -370,    104}, {0xfb, 0x5f, 0x19, 0xff}}},\n    {{{   307,   1024,    716}, 0, {     0,    240}, {0xfb, 0x5f, 0x19, 0xff}}},\n    {{{   717,   1024,    306}, 0, {  -302,      0}, {0xfb, 0x5f, 0x19, 0xff}}},\n    {{{  -204,   1126,   -512}, 0, {  -848,    582}, {0xff, 0x7c, 0x30, 0xff}}},\n    {{{   307,   1024,   -717}, 0, {  -984,    240}, {0xff, 0x7c, 0x30, 0xff}}},\n    {{{  -306,   1024,   -717}, 0, {  -984,    650}, {0xff, 0x7c, 0x30, 0xff}}},\n    {{{   205,   1126,   -512}, 0, {  -848,    308}, {0xff, 0x7c, 0x30, 0xff}}},\n};\n\n// 0x07004810 - 0x07004910\nstatic const Vtx bitdw_seg7_vertex_07004810[] = {\n    {{{   205,   1126,    511}, 0, {  -166,    308}, {0xff, 0x7c, 0x30, 0xff}}},\n    {{{  -306,   1024,    716}, 0, {     0,    650}, {0xff, 0x7c, 0x30, 0xff}}},\n    {{{   307,   1024,    716}, 0, {     0,    240}, {0xff, 0x7c, 0x30, 0xff}}},\n    {{{  -204,   1126,    511}, 0, {  -166,    582}, {0xff, 0x7c, 0x30, 0xff}}},\n    {{{   307,   1024,    716}, 0, {     0,    240}, {0xce, 0x35, 0x16, 0xff}}},\n    {{{  -306,   1024,    716}, 0, {     0,    650}, {0xce, 0x35, 0x16, 0xff}}},\n    {{{   205,    819,    511}, 0, {  -166,    308}, {0xce, 0x35, 0x16, 0xff}}},\n    {{{  -204,    819,    511}, 0, {  -166,    582}, {0xce, 0x35, 0x16, 0xff}}},\n    {{{  -306,   1024,   -717}, 0, {  -984,    650}, {0xce, 0x35, 0x16, 0xff}}},\n    {{{   307,   1024,   -717}, 0, {  -984,    240}, {0xce, 0x35, 0x16, 0xff}}},\n    {{{  -204,    819,   -512}, 0, {  -848,    582}, {0xce, 0x35, 0x16, 0xff}}},\n    {{{   205,    819,   -512}, 0, {  -848,    308}, {0xce, 0x35, 0x16, 0xff}}},\n    {{{   717,   1024,    306}, 0, {  -302,      0}, {0x66, 0x16, 0x00, 0xff}}},\n    {{{   512,    819,    204}, 0, {  -370,    104}, {0x66, 0x16, 0x00, 0xff}}},\n    {{{   717,   1024,   -307}, 0, {  -712,      0}, {0x66, 0x16, 0x00, 0xff}}},\n    {{{   512,    819,   -205}, 0, {  -644,    104}, {0x66, 0x16, 0x00, 0xff}}},\n};\n\n// 0x07004910 - 0x07004A00\nstatic const Vtx bitdw_seg7_vertex_07004910[] = {\n    {{{  -716,   1024,   -307}, 0, {  -712,    922}, {0x66, 0x16, 0x00, 0xff}}},\n    {{{  -511,    819,    204}, 0, {  -370,    786}, {0x66, 0x16, 0x00, 0xff}}},\n    {{{  -716,   1024,    306}, 0, {  -302,    922}, {0x66, 0x16, 0x00, 0xff}}},\n    {{{  -511,    819,   -205}, 0, {  -644,    786}, {0x66, 0x16, 0x00, 0xff}}},\n    {{{  -716,   1024,   -307}, 0, {  -712,    922}, {0x9e, 0x27, 0x00, 0xff}}},\n    {{{  -306,   1024,   -717}, 0, {  -984,    650}, {0x9e, 0x27, 0x00, 0xff}}},\n    {{{  -511,    819,   -205}, 0, {  -644,    786}, {0x9e, 0x27, 0x00, 0xff}}},\n    {{{   717,   1024,    306}, 0, {  -302,      0}, {0x9e, 0x27, 0x00, 0xff}}},\n    {{{   307,   1024,    716}, 0, {     0,    240}, {0x9e, 0x27, 0x00, 0xff}}},\n    {{{   512,    819,    204}, 0, {  -370,    104}, {0x9e, 0x27, 0x00, 0xff}}},\n    {{{   205,    819,    511}, 0, {  -166,    308}, {0x9e, 0x27, 0x00, 0xff}}},\n    {{{  -511,    819,    204}, 0, {  -370,    786}, {0x9e, 0x27, 0x00, 0xff}}},\n    {{{  -204,    819,    511}, 0, {  -166,    582}, {0x9e, 0x27, 0x00, 0xff}}},\n    {{{  -716,   1024,    306}, 0, {  -302,    922}, {0x9e, 0x27, 0x00, 0xff}}},\n    {{{  -306,   1024,    716}, 0, {     0,    650}, {0x9e, 0x27, 0x00, 0xff}}},\n};\n\n// 0x07004A00 - 0x07004B00\nstatic const Vtx bitdw_seg7_vertex_07004A00[] = {\n    {{{   205,    819,   -512}, 0, {  -848,    308}, {0x9e, 0x27, 0x00, 0xff}}},\n    {{{   307,   1024,   -717}, 0, {  -984,    240}, {0x9e, 0x27, 0x00, 0xff}}},\n    {{{   717,   1024,   -307}, 0, {  -712,      0}, {0x9e, 0x27, 0x00, 0xff}}},\n    {{{  -306,   1024,   -717}, 0, {  -984,    650}, {0x9e, 0x27, 0x00, 0xff}}},\n    {{{  -204,    819,   -512}, 0, {  -848,    582}, {0x9e, 0x27, 0x00, 0xff}}},\n    {{{  -511,    819,   -205}, 0, {  -644,    786}, {0x9e, 0x27, 0x00, 0xff}}},\n    {{{   512,    819,   -205}, 0, {  -644,    104}, {0x9e, 0x27, 0x00, 0xff}}},\n    {{{     0,   1126,     93}, 0, {   432,    944}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   1536,      0}, 0, {   432,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -92,   1126,      0}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   1126,    -92}, 0, {   432,     14}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    93,   1126,      0}, 0, {   898,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -716,   -511}, 0, {   -26,    -18}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -511,   -716,      0}, 0, {   -20,   1000}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -162,    819,      0}, 0, {   320,    656}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    819,    163}, 0, {   638,    656}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07004B00 - 0x07004B80\nstatic const Vtx bitdw_seg7_vertex_07004B00[] = {\n    {{{  -511,   -716,      0}, 0, {   -20,   1000}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -716,    512}, 0, {   982,   1004}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    819,    163}, 0, {   638,    656}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   512,   -716,      0}, 0, {   976,    -14}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    819,   -162}, 0, {   318,    330}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -716,   -511}, 0, {   -26,    -18}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -162,    819,      0}, 0, {   320,    656}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   163,    819,      0}, 0, {   636,    332}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07004B80 - 0x07004C80\nstatic const Vtx bitdw_seg7_vertex_07004B80[] = {\n    {{{  -204,   1126,   -512}, 0, {  1502,      0}, {0xfe, 0xff, 0xa8, 0xff}}},\n    {{{   205,   1126,    511}, 0, {  3546,    582}, {0xfe, 0xff, 0xa8, 0xff}}},\n    {{{   512,   1126,    204}, 0, {  5078,      0}, {0xfe, 0xff, 0xa8, 0xff}}},\n    {{{   512,   1126,   -205}, 0, {  5078,   -440}, {0xfe, 0xff, 0xa8, 0xff}}},\n    {{{   205,   1126,   -512}, 0, {  3546,   -440}, {0xfe, 0xff, 0xa8, 0xff}}},\n    {{{  -511,   1126,    204}, 0, {     0,    990}, {0xfe, 0xff, 0xa8, 0xff}}},\n    {{{  -204,   1126,    511}, 0, {  1502,    990}, {0xfe, 0xff, 0xa8, 0xff}}},\n    {{{  -511,   1126,   -205}, 0, {     0,    582}, {0xfe, 0xff, 0xa8, 0xff}}},\n    {{{   205,    819,   -512}, 0, {  3546,   -440}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{   512,    819,   -205}, 0, {  5078,   -440}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  -204,    819,   -512}, 0, {  1502,      0}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{   512,    819,    204}, 0, {  5078,      0}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  -204,    819,    511}, 0, {  1502,    990}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  -511,    819,    204}, 0, {     0,    990}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{   205,    819,    511}, 0, {  3546,    582}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  -511,    819,   -205}, 0, {     0,    582}, {0x5d, 0x5d, 0x00, 0xff}}},\n};\n\n// 0x07004C80 - 0x07004D80\nstatic const Vtx bitdw_seg7_vertex_07004C80[] = {\n    {{{   410,  -1023,      0}, 0, {  1398,   -648}, {0x2f, 0x49, 0x5e, 0xff}}},\n    {{{     0,  -1023,    410}, 0, {   582,  -1466}, {0x2f, 0x49, 0x5e, 0xff}}},\n    {{{  -409,  -1023,      0}, 0, {  -234,   -648}, {0x2f, 0x49, 0x5e, 0xff}}},\n    {{{     0,  -1023,   -409}, 0, {   582,    170}, {0x2f, 0x49, 0x5e, 0xff}}},\n    {{{  -511,   -716,      0}, 0, {  1168,   2380}, {0x3b, 0x4f, 0x67, 0xff}}},\n    {{{  -409,  -1023,      0}, 0, {  1692,   1494}, {0x3b, 0x4f, 0x67, 0xff}}},\n    {{{     0,  -1023,    410}, 0, {   246,     52}, {0x3b, 0x4f, 0x67, 0xff}}},\n    {{{     0,   -716,    512}, 0, {  -638,    576}, {0x3b, 0x4f, 0x67, 0xff}}},\n    {{{   512,   -716,      0}, 0, { -1052,    990}, {0x3b, 0x4f, 0x67, 0xff}}},\n    {{{     0,  -1023,   -409}, 0, {  1360,   1826}, {0x3b, 0x4f, 0x67, 0xff}}},\n    {{{     0,   -716,   -511}, 0, {   752,   2794}, {0x3b, 0x4f, 0x67, 0xff}}},\n    {{{   410,  -1023,      0}, 0, {   -84,    384}, {0x3b, 0x4f, 0x67, 0xff}}},\n    {{{     0,   -716,    512}, 0, {  1872,    302}, {0x4e, 0x69, 0x7e, 0xff}}},\n    {{{   410,  -1023,      0}, 0, {  -458,   1222}, {0x4e, 0x69, 0x7e, 0xff}}},\n    {{{   512,   -716,      0}, 0, {    64,   2106}, {0x4e, 0x69, 0x7e, 0xff}}},\n    {{{     0,  -1023,    410}, 0, {   986,   -222}, {0x4e, 0x69, 0x7e, 0xff}}},\n};\n\n// 0x07004D80 - 0x07004DC0\nstatic const Vtx bitdw_seg7_vertex_07004D80[] = {\n    {{{     0,   -716,   -511}, 0, {   480,   2522}, {0x4e, 0x69, 0x7e, 0xff}}},\n    {{{     0,  -1023,   -409}, 0, {  -126,   1552}, {0x4e, 0x69, 0x7e, 0xff}}},\n    {{{  -409,  -1023,      0}, 0, {  1318,    110}, {0x4e, 0x69, 0x7e, 0xff}}},\n    {{{  -511,   -716,      0}, 0, {  2286,    716}, {0x4e, 0x69, 0x7e, 0xff}}},\n};\n\n// 0x07004DC0 - 0x07004F70\nstatic const Gfx bitdw_seg7_dl_07004DC0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bitdw_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_07004630, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07004720, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07004810, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07004910, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07004A00, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  0,  2, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0,  8, 11, 10, 0x0),\n    gsSP2Triangles(11,  8,  7, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(13, 15, 14, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07004B00, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  3,  5, 0x0),\n    gsSP2Triangles( 7,  5,  4, 0x0,  3,  7,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07004F70 - 0x07004FF8\nstatic const Gfx bitdw_seg7_dl_07004F70[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_07004B80, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  2,  3, 0x0,  0,  5,  6, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  0,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 10, 0x0, 11, 14, 10, 0x0),\n    gsSP2Triangles(14, 12, 10, 0x0, 13, 15, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07004FF8 - 0x07005078\nstatic const Gfx bitdw_seg7_dl_07004FF8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_07004C80, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07004D80, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07005078 - 0x070050F8\nconst Gfx bitdw_seg7_dl_07005078[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitdw_seg7_dl_07004DC0),\n    gsSPDisplayList(bitdw_seg7_dl_07004F70),\n    gsSPDisplayList(bitdw_seg7_dl_07004FF8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitdw/areas/1/platform_with_hill/geo.inc.c",
    "content": "// 0x0E000468\nconst GeoLayout geo_bitdw_000468[] = {\n    GEO_CULLING_RADIUS(2900),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitdw_seg7_dl_07005BC0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitdw/areas/1/platform_with_hill/model.inc.c",
    "content": "// 0x070050F8 - 0x070051F8\nstatic const Vtx bitdw_seg7_vertex_070050F8[] = {\n    {{{  1717,    986,  -1074}, 0, {   480,    990}, {0xbe, 0xbe, 0xbe, 0xff}}},\n    {{{  1615,    986,  -1074}, 0, {   224,   1244}, {0xbe, 0xbe, 0xbe, 0xff}}},\n    {{{  1615,    986,   -972}, 0, {     0,    990}, {0xbe, 0xbe, 0xbe, 0xff}}},\n    {{{  1717,    986,   -972}, 0, {   224,    734}, {0xbe, 0xbe, 0xbe, 0xff}}},\n    {{{  1819,    782,  -1177}, 0, {   990,    990}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{  1717,    628,  -1074}, 0, {   480,    990}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{  1615,    628,  -1074}, 0, {   224,   1244}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{  1512,    782,  -1177}, 0, {   224,   1754}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{  1563,    782,   -818}, 0, {  -542,    734}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{  1615,    628,   -972}, 0, {     0,    990}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{  1717,    628,   -972}, 0, {   224,    734}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{  1768,    782,   -818}, 0, {     0,    224}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{  1717,    628,   -972}, 0, {   224,    734}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{  1615,    628,   -972}, 0, {     0,    990}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{  1615,    628,  -1074}, 0, {   224,   1244}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{  1717,    628,  -1074}, 0, {   480,    990}, {0x38, 0x4a, 0x3d, 0xff}}},\n};\n\n// 0x070051F8 - 0x070052F8\nstatic const Vtx bitdw_seg7_vertex_070051F8[] = {\n    {{{  1512,    782,  -1177}, 0, {   224,   1754}, {0x46, 0x65, 0x5d, 0xff}}},\n    {{{  1615,    628,  -1074}, 0, {   224,   1244}, {0x46, 0x65, 0x5d, 0xff}}},\n    {{{  1615,    628,   -972}, 0, {     0,    990}, {0x46, 0x65, 0x5d, 0xff}}},\n    {{{  1563,    782,   -818}, 0, {  -542,    734}, {0x46, 0x65, 0x5d, 0xff}}},\n    {{{  1717,    628,   -972}, 0, {   224,    734}, {0x46, 0x65, 0x5d, 0xff}}},\n    {{{  1717,    628,  -1074}, 0, {   480,    990}, {0x46, 0x65, 0x5d, 0xff}}},\n    {{{  1819,    782,  -1177}, 0, {   990,    990}, {0x46, 0x65, 0x5d, 0xff}}},\n    {{{  1768,    782,   -818}, 0, {     0,    224}, {0x46, 0x65, 0x5d, 0xff}}},\n    {{{  1819,    782,  -1177}, 0, {   990,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1717,    986,  -1074}, 0, {   480,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1717,    986,   -972}, 0, {   224,    734}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1768,    782,   -818}, 0, {     0,    224}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1615,    986,   -972}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1615,    986,  -1074}, 0, {   224,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1512,    782,  -1177}, 0, {   224,   1754}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1563,    782,   -818}, 0, {  -542,    734}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x070052F8 - 0x07005378\nstatic const Vtx bitdw_seg7_vertex_070052F8[] = {\n    {{{  1768,    782,   -818}, 0, {     0,    224}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1717,    986,   -972}, 0, {   224,    734}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1615,    986,   -972}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1563,    782,   -818}, 0, {  -542,    734}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1512,    782,  -1177}, 0, {   224,   1754}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1717,    986,  -1074}, 0, {   480,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1819,    782,  -1177}, 0, {   990,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1615,    986,  -1074}, 0, {   224,   1244}, {0x96, 0x96, 0x96, 0xff}}},\n};\n\n// 0x07005378 - 0x07005478\nstatic const Vtx bitdw_seg7_vertex_07005378[] = {\n    {{{     0,    128,    128}, 0, {  1666,   2690}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{  1435,    743,    128}, 0, {  5078,   4054}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{   616,   1255,    128}, 0, {  4568,   1840}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{     2,   1050,    128}, 0, {  3204,   1158}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{  -817,    129,    128}, 0, {   308,   1328}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{     2,   1255,    128}, 0, {  3546,    820}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{ -1840,    129,    538}, 0, { -2756,  -2416}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{ -1226,   -997,    538}, 0, { -3608,    478}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{   616,   -997,    538}, 0, {  -542,   3544}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{  1435,    743,   -485}, 0, {  3716,   2010}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{   616,   -997,   -485}, 0, {  -542,   3544}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{ -1226,   -997,   -485}, 0, { -3608,    478}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{  -817,    129,   -485}, 0, { -1052,   -714}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{     2,   1050,   -485}, 0, {  1842,   -884}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{ -1840,    -77,   -485}, 0, { -3100,  -2072}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{ -1840,    129,   -485}, 0, { -2756,  -2416}, {0x7c, 0x89, 0x79, 0xff}}},\n};\n\n// 0x07005478 - 0x07005568\nstatic const Vtx bitdw_seg7_vertex_07005478[] = {\n    {{{     2,   1050,   -485}, 0, {  1842,   -884}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{   616,   1255,   -485}, 0, {  3204,   -202}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{  1435,    743,   -485}, 0, {  3716,   2010}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{     2,   1255,   -485}, 0, {  2182,  -1224}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{  1947,    538,   -485}, 0, {  4226,   3202}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{   616,   -997,   -485}, 0, {  -542,   3544}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{  1947,    743,   -485}, 0, {  4566,   2862}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{   616,   -997,    538}, 0, {  -542,   3544}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{     2,    129,    538}, 0, {   308,    650}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{ -1840,    129,    538}, 0, { -2756,  -2416}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{ -1840,    -77,    538}, 0, { -3100,  -2072}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{ -1226,   -997,    538}, 0, { -3608,    478}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{  1947,    743,    538}, 0, {  4566,   2862}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{  1435,    743,    538}, 0, {  3716,   2010}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{  1947,    538,    538}, 0, {  4226,   3202}, {0x7c, 0x89, 0x79, 0xff}}},\n};\n\n// 0x07005568 - 0x07005668\nstatic const Vtx bitdw_seg7_vertex_07005568[] = {\n    {{{     2,   1050,    128}, 0, {  -438,    582}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{     2,   1255,   -485}, 0, { -1256,   2214}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{     2,   1050,   -485}, 0, { -1666,   1806}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{     2,   1255,    128}, 0, {     0,    990}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{ -1840,    -77,    538}, 0, {  1672,   -714}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{ -1840,    129,    538}, 0, {  2016,   -368}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{ -1840,    129,   -485}, 0, {   312,   1332}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{ -1840,    -77,   -485}, 0, {     0,    990}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{  1947,    538,   -485}, 0, {   994,   2014}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{  1947,    743,   -485}, 0, {  1334,   2354}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{  1947,    743,    538}, 0, {  3038,    654}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{  1947,    538,    538}, 0, {  2698,    312}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{ -1226,   -997,    538}, 0, {   340,   1978}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{ -1840,    -75,    538}, 0, {  2182,    138}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{ -1840,    -75,   -485}, 0, {   480,  -1564}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{ -1226,   -997,   -485}, 0, { -1362,    278}, {0x38, 0x4a, 0x3d, 0xff}}},\n};\n\n// 0x07005668 - 0x07005748\nstatic const Vtx bitdw_seg7_vertex_07005668[] = {\n    {{{   616,   -997,   -485}, 0, {  1712,    690}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{  1947,    538,    538}, 0, {  3400,   5782}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{   616,   -997,    538}, 0, {     8,   2392}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{  1947,    538,   -485}, 0, {  5104,   4080}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{     2,    129,    538}, 0, {  4568,  -3610}, {0xcd, 0xdf, 0xcc, 0xff}}},\n    {{{     0,    128,    128}, 0, {  5584,  -2582}, {0xcd, 0xdf, 0xcc, 0xff}}},\n    {{{ -1021,    129,    128}, 0, {  3034,      0}, {0xcd, 0xdf, 0xcc, 0xff}}},\n    {{{ -1840,    129,    538}, 0, {     0,    990}, {0xcd, 0xdf, 0xcc, 0xff}}},\n    {{{ -1840,    129,   -485}, 0, {  2522,   3544}, {0xcd, 0xdf, 0xcc, 0xff}}},\n    {{{ -1021,    129,   -485}, 0, {  4566,   1500}, {0xcd, 0xdf, 0xcc, 0xff}}},\n    {{{   616,   1255,   -485}, 0, {  6610,  -4630}, {0xcd, 0xdf, 0xcc, 0xff}}},\n    {{{     2,   1255,    128}, 0, {  3544,  -4630}, {0xcd, 0xdf, 0xcc, 0xff}}},\n    {{{   616,   1255,    128}, 0, {  5078,  -6164}, {0xcd, 0xdf, 0xcc, 0xff}}},\n    {{{     2,   1255,   -485}, 0, {  5078,  -3098}, {0xcd, 0xdf, 0xcc, 0xff}}},\n};\n\n// 0x07005748 - 0x070057F8\nstatic const Vtx bitdw_seg7_vertex_07005748[] = {\n    {{{  1947,    743,   -485}, 0, {  9676,  -7696}, {0xcd, 0xdf, 0xcc, 0xff}}},\n    {{{  1435,    743,    538}, 0, {  6100,  -9230}, {0xcd, 0xdf, 0xcc, 0xff}}},\n    {{{  1947,    743,    538}, 0, {  7122, -10252}, {0xcd, 0xdf, 0xcc, 0xff}}},\n    {{{  1435,    743,   -485}, 0, {  8654,  -6674}, {0xcd, 0xdf, 0xcc, 0xff}}},\n    {{{  1435,    743,    128}, 0, {  7122,  -8208}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{   616,   1255,   -485}, 0, {  6610,  -4630}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{   616,   1255,    128}, 0, {  5078,  -6164}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{  1435,    743,   -485}, 0, {  8654,  -6674}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{     0,    128,    128}, 0, {  3540,  -4626}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{     2,    129,    538}, 0, {  2524,  -5652}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{  1435,    743,    538}, 0, {  6100,  -9230}, {0xb7, 0xcd, 0xba, 0xff}}},\n};\n\n// 0x070057F8 - 0x070058F8\nstatic const Vtx bitdw_seg7_vertex_070057F8[] = {\n    {{{     2,   1050,    128}, 0, {   -30,    -22}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{ -1021,    129,    128}, 0, {   308,    990}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{  -817,    129,    128}, 0, {   -30,    890}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{  -202,   1050,    128}, 0, {   308,     78}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{  -817,    129,   -485}, 0, {   -30,    890}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{ -1021,    129,   -485}, 0, {   308,    990}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{     2,   1050,   -485}, 0, {   -30,    -22}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{  -202,   1050,   -485}, 0, {   308,     78}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{  -202,   1050,    128}, 0, {  4056,    -36}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{     2,   1050,   -485}, 0, {     0,   -148}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{  -202,   1050,   -485}, 0, {     0,    -36}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{     2,   1050,    128}, 0, {  4056,   -148}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{ -1021,    129,   -485}, 0, {     0,    990}, {0x8e, 0x9e, 0x8a, 0xff}}},\n    {{{  -202,   1050,    128}, 0, {  4056,    -36}, {0x8e, 0x9e, 0x8a, 0xff}}},\n    {{{  -202,   1050,   -485}, 0, {     0,    -36}, {0x8e, 0x9e, 0x8a, 0xff}}},\n    {{{ -1021,    129,    128}, 0, {  4056,    990}, {0x8e, 0x9e, 0x8a, 0xff}}},\n};\n\n// 0x070058F8 - 0x070059D0\nstatic const Gfx bitdw_seg7_dl_070058F8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_070050F8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_070051F8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 15, 12, 14, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_070052F8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070059D0 - 0x07005B58\nstatic const Gfx bitdw_seg7_dl_070059D0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_07005378, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 0,  2,  5, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 15, 0x0,  9, 11, 13, 0x0),\n    gsSP1Triangle(11, 15, 12, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07005478, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  2,  6,  4, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 7, 12, 13, 0x0,  7, 13,  8, 0x0),\n    gsSP1Triangle( 7, 14, 12, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07005568, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07005668, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  7,  6, 0x0,  8,  6,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07005748, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 4,  8,  9, 0x0, 10,  4,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07005B58 - 0x07005BC0\nstatic const Gfx bitdw_seg7_dl_07005B58[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bitdw_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_070057F8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07005BC0 - 0x07005C40\nconst Gfx bitdw_seg7_dl_07005BC0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitdw_seg7_dl_070058F8),\n    gsSPDisplayList(bitdw_seg7_dl_070059D0),\n    gsSPDisplayList(bitdw_seg7_dl_07005B58),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitdw/areas/1/platforms_and_tilting/geo.inc.c",
    "content": "// 0x0E000498\nconst GeoLayout geo_bitdw_000498[] = {\n    GEO_CULLING_RADIUS(2400),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitdw_seg7_dl_07007AA8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitdw/areas/1/platforms_and_tilting/model.inc.c",
    "content": "// 0x07006670 - 0x07006770\nstatic const Vtx bitdw_seg7_vertex_07006670[] = {\n    {{{   870,    133,    140}, 0, {   734,     70}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{   768,    133,     38}, 0, {   224,     70}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{   768,    133,    140}, 0, {   224,     70}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{   870,    133,     38}, 0, {   734,     70}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{   768,    133,    898}, 0, {   224,     70}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{   870,    133,    898}, 0, {   734,     70}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{   870,    133,    795}, 0, {   734,     70}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{   768,    133,    795}, 0, {   224,     70}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{   768,   -235,    795}, 0, {   820,    904}, {0xbe, 0xbe, 0xbe, 0xff}}},\n    {{{  -317,   -235,    795}, 0, {   820,      2}, {0xbe, 0xbe, 0xbe, 0xff}}},\n    {{{  -355,   -337,    898}, 0, {   990,    -30}, {0xbe, 0xbe, 0xbe, 0xff}}},\n    {{{   819,   -337,    898}, 0, {   990,    948}, {0xbe, 0xbe, 0xbe, 0xff}}},\n    {{{   819,   -337,     38}, 0, {   990,    948}, {0xbe, 0xbe, 0xbe, 0xff}}},\n    {{{  -317,   -235,    140}, 0, {   820,      2}, {0xbe, 0xbe, 0xbe, 0xff}}},\n    {{{   768,   -235,    140}, 0, {   820,    904}, {0xbe, 0xbe, 0xbe, 0xff}}},\n    {{{  -354,   -337,     38}, 0, {   990,    -30}, {0xbe, 0xbe, 0xbe, 0xff}}},\n};\n\n// 0x07006770 - 0x07006870\nstatic const Vtx bitdw_seg7_vertex_07006770[] = {\n    {{{   717,     51,    795}, 0, {     0,    478}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   717,     51,    898}, 0, {     0,    478}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   768,    133,    898}, 0, {   224,     70}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   768,    133,    140}, 0, {   224,     70}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   768,    133,     38}, 0, {   224,     70}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   717,     51,     38}, 0, {     0,    480}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   717,     51,    140}, 0, {     0,    480}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   922,     51,    140}, 0, {   990,    480}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   922,     51,     38}, 0, {   990,    480}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   870,    133,     38}, 0, {   734,     70}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   870,    133,    140}, 0, {   734,     70}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   870,    133,    795}, 0, {   734,     70}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   870,    133,    898}, 0, {   734,     70}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   922,     51,    898}, 0, {   990,    478}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   922,     51,    795}, 0, {   990,    478}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   768,    133,    795}, 0, {   224,     70}, {0xff, 0xd4, 0x00, 0xff}}},\n};\n\n// 0x07006870 - 0x07006970\nstatic const Vtx bitdw_seg7_vertex_07006870[] = {\n    {{{   768,    -30,    795}, 0, {   478,    904}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   819,   -337,    898}, 0, {   990,    948}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   819,    -30,    898}, 0, {   478,    948}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   768,   -235,    795}, 0, {   820,    904}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   819,    -30,     38}, 0, {   478,    948}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   768,   -235,    140}, 0, {   820,    904}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   768,    -30,    140}, 0, {   478,    904}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   819,   -337,     38}, 0, {   990,    948}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   819,   -337,    898}, 0, {   990,    948}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -355,   -337,    795}, 0, {   990,    -30}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   870,   -337,    795}, 0, {   990,    990}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -355,   -337,    898}, 0, {   990,    -30}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   870,   -337,    140}, 0, {   990,    990}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -354,   -337,     38}, 0, {   990,    -30}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   819,   -337,     38}, 0, {   990,    948}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -355,   -337,    140}, 0, {   990,    -30}, {0x55, 0x55, 0x55, 0xff}}},\n};\n\n// 0x07006970 - 0x07006A70\nstatic const Vtx bitdw_seg7_vertex_07006970[] = {\n    {{{   870,    -30,    795}, 0, {   478,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   870,   -337,    795}, 0, {   990,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   768,   -235,    795}, 0, {   820,    904}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -355,   -337,    795}, 0, {   990,    -30}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -317,   -235,    795}, 0, {   820,      2}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   768,    -30,    795}, 0, {   478,    904}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   768,   -235,    140}, 0, {   820,    904}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -355,   -337,    140}, 0, {   990,    -30}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   870,   -337,    140}, 0, {   990,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -317,   -235,    140}, 0, {   820,      2}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   768,    -30,    140}, 0, {   478,    904}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   870,    -30,    140}, 0, {   480,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   819,    -30,    898}, 0, {   478,    948}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   819,   -337,    898}, 0, {   990,    948}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   870,   -337,    795}, 0, {   990,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   870,    -30,    795}, 0, {   478,    990}, {0x96, 0x96, 0x96, 0xff}}},\n};\n\n// 0x07006A70 - 0x07006B70\nstatic const Vtx bitdw_seg7_vertex_07006A70[] = {\n    {{{   870,    -30,    140}, 0, {   480,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   870,   -337,    140}, 0, {   990,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   819,   -337,     38}, 0, {   990,    948}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   819,    -30,     38}, 0, {   478,    948}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   768,    133,    140}, 0, {   224,     70}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{   717,     51,    140}, 0, {     0,    480}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{   768,    -30,    140}, 0, {   224,    888}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{   768,    -30,    795}, 0, {   224,    888}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{   768,    133,    795}, 0, {   224,     70}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{   870,    133,    795}, 0, {   734,     70}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{   922,     51,    795}, 0, {   990,    480}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{   870,    -30,    795}, 0, {   734,    888}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{   717,     51,    795}, 0, {     0,    480}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{   768,    -30,     38}, 0, {   224,    888}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{   717,     51,     38}, 0, {     0,    480}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{   768,    133,     38}, 0, {   224,     70}, {0xaa, 0xaa, 0x00, 0xff}}},\n};\n\n// 0x07006B70 - 0x07006C70\nstatic const Vtx bitdw_seg7_vertex_07006B70[] = {\n    {{{   768,    -30,     38}, 0, {   224,    888}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{   922,     51,     38}, 0, {   990,    480}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{   870,    -30,     38}, 0, {   734,    888}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{   768,    133,     38}, 0, {   224,     70}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{   870,    133,     38}, 0, {   734,     70}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{   768,    133,    898}, 0, {   224,     70}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{   717,     51,    898}, 0, {     0,    478}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{   768,    -30,    898}, 0, {   224,    888}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{   768,    133,    140}, 0, {   224,     70}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{   768,    -30,    140}, 0, {   224,    888}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{   870,    -30,    140}, 0, {   734,    888}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{   922,     51,    140}, 0, {   990,    480}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{   870,    133,    140}, 0, {   734,     70}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{   870,    -30,    898}, 0, {   734,    888}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{   922,     51,    898}, 0, {   990,    478}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{   870,    133,    898}, 0, {   734,     70}, {0xaa, 0xaa, 0x00, 0xff}}},\n};\n\n// 0x07006C70 - 0x07006D70\nstatic const Vtx bitdw_seg7_vertex_07006C70[] = {\n    {{{   870,    -30,     38}, 0, {   734,    888}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{   870,    -30,    140}, 0, {   734,    888}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{   819,    -30,     38}, 0, {   480,    888}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{   768,    -30,     38}, 0, {   224,    888}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{   768,    -30,    140}, 0, {   224,    888}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{   768,    -30,    795}, 0, {   224,    888}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{   819,    -30,    898}, 0, {   480,    888}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{   768,    -30,    898}, 0, {   224,    888}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{   870,    -30,    795}, 0, {   734,    888}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{   870,    -30,    898}, 0, {   734,    888}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{   768,    -30,    795}, 0, {   224,    888}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   717,     51,    898}, 0, {     0,    478}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   717,     51,    795}, 0, {     0,    478}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   717,     51,    140}, 0, {     0,    480}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   717,     51,     38}, 0, {     0,    480}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   768,    -30,     38}, 0, {   224,    888}, {0x78, 0x78, 0x00, 0xff}}},\n};\n\n// 0x07006D70 - 0x07006E50\nstatic const Vtx bitdw_seg7_vertex_07006D70[] = {\n    {{{   717,     51,    140}, 0, {     0,    480}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   768,    -30,     38}, 0, {   224,    888}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   768,    -30,    140}, 0, {   224,    888}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   870,    -30,    140}, 0, {   734,    888}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   922,     51,     38}, 0, {   990,    480}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   922,     51,    140}, 0, {   990,    480}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   870,    -30,     38}, 0, {   734,    888}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   870,    -30,    795}, 0, {   734,    888}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   922,     51,    898}, 0, {   990,    478}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   870,    -30,    898}, 0, {   734,    888}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   922,     51,    795}, 0, {   990,    478}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   768,    -30,    795}, 0, {   224,    888}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   768,    -30,    898}, 0, {   224,    888}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   717,     51,    898}, 0, {     0,    478}, {0x78, 0x78, 0x00, 0xff}}},\n};\n\n// 0x07006E50 - 0x07006F50\nstatic const Vtx bitdw_seg7_vertex_07006E50[] = {\n    {{{  1331,    922,   -357}, 0, {  6100,  -1054}, {0xb4, 0xee, 0xfe, 0xff}}},\n    {{{   768,    922,   -357}, 0, {  5164,   -118}, {0xb4, 0xee, 0xfe, 0xff}}},\n    {{{   768,    922,    768}, 0, {  3290,  -1990}, {0xb4, 0xee, 0xfe, 0xff}}},\n    {{{  -306,    102,   -101}, 0, {  2268,   1372}, {0xb4, 0xee, 0xfe, 0xff}}},\n    {{{  1331,    102,   -101}, 0, {  4312,   -670}, {0xb4, 0xee, 0xfe, 0xff}}},\n    {{{  1331,    102,   -357}, 0, {  4630,   -352}, {0xb4, 0xee, 0xfe, 0xff}}},\n    {{{  -306,    102,   -357}, 0, {  2586,   1690}, {0xb4, 0xee, 0xfe, 0xff}}},\n    {{{ -1074,    102,   -357}, 0, {  2012,   3032}, {0xb4, 0xee, 0xfe, 0xff}}},\n    {{{ -1074,    102,    973}, 0, {     0,    990}, {0xb4, 0xee, 0xfe, 0xff}}},\n    {{{  -306,    102,    973}, 0, {  1246,   -288}, {0xb4, 0xee, 0xfe, 0xff}}},\n    {{{  -306,    102,   -357}, 0, {  3290,   1754}, {0xb4, 0xee, 0xfe, 0xff}}},\n    {{{   256,    922,   -357}, 0, {  4226,    820}, {0xb4, 0xee, 0xfe, 0xff}}},\n    {{{  -306,    922,   -357}, 0, {  3290,   1754}, {0xb4, 0xee, 0xfe, 0xff}}},\n    {{{  -306,    922,    768}, 0, {  1416,   -118}, {0xb4, 0xee, 0xfe, 0xff}}},\n    {{{   256,    922,    768}, 0, {  2352,  -1054}, {0xb4, 0xee, 0xfe, 0xff}}},\n    {{{  1331,    922,    768}, 0, {  4226,  -2928}, {0xb4, 0xee, 0xfe, 0xff}}},\n};\n\n// 0x07006F50 - 0x07007050\nstatic const Vtx bitdw_seg7_vertex_07006F50[] = {\n    {{{  1331,   -204,   -357}, 0, {  4630,   -352}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{ -1074,    102,   -357}, 0, {  1628,   2648}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{  1331,    102,   -357}, 0, {  4630,   -352}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{ -1074,   -204,   -357}, 0, {  1628,   2648}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{  -306,   -208,   -101}, 0, {  2268,   1372}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{  1331,   -208,   -101}, 0, {  4312,   -670}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{  1331,    102,   -101}, 0, {  4312,   -670}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{  -306,    102,   -101}, 0, {  2268,   1372}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{ -1074,   -204,    973}, 0, {     0,    990}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{  -306,   -204,    973}, 0, {   920,    144}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{ -1074,    102,    973}, 0, {     0,    990}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{  -306,    102,    973}, 0, {   920,    144}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{  -306,    102,    973}, 0, {  1246,   -288}, {0x20, 0x52, 0x79, 0xff}}},\n    {{{  -306,   -204,    973}, 0, {  1246,   -288}, {0x20, 0x52, 0x79, 0xff}}},\n    {{{  -306,    102,   -101}, 0, {  3034,   1500}, {0x20, 0x52, 0x79, 0xff}}},\n    {{{  -306,   -208,   -101}, 0, {  3034,   1500}, {0x20, 0x52, 0x79, 0xff}}},\n};\n\n// 0x07007050 - 0x07007150\nstatic const Vtx bitdw_seg7_vertex_07007050[] = {\n    {{{ -1074,   -204,    973}, 0, {     0,    990}, {0x20, 0x52, 0x79, 0xff}}},\n    {{{ -1074,    102,    973}, 0, {     0,    990}, {0x20, 0x52, 0x79, 0xff}}},\n    {{{ -1074,    102,   -357}, 0, {  1322,   2510}, {0x20, 0x52, 0x79, 0xff}}},\n    {{{ -1074,   -204,   -357}, 0, {  1322,   2510}, {0x20, 0x52, 0x79, 0xff}}},\n    {{{  1331,   -208,   -101}, 0, {  4312,   -670}, {0x0d, 0x22, 0x4c, 0xff}}},\n    {{{  -306,   -208,   -101}, 0, {  2268,   1372}, {0x0d, 0x22, 0x4c, 0xff}}},\n    {{{  -306,   -204,   -357}, 0, {  2586,   1690}, {0x0d, 0x22, 0x4c, 0xff}}},\n    {{{  1331,   -204,   -357}, 0, {  4630,   -352}, {0x0d, 0x22, 0x4c, 0xff}}},\n    {{{  -606,  -1015,    523}, 0, { -2726,    464}, {0x2f, 0x49, 0x5e, 0xff}}},\n    {{{  -774,  -1011,    523}, 0, { -3006,    744}, {0x2f, 0x49, 0x5e, 0xff}}},\n    {{{  -606,  -1015,     91}, 0, { -3444,   -254}, {0x2f, 0x49, 0x5e, 0xff}}},\n    {{{  -774,  -1011,     91}, 0, { -3724,     26}, {0x2f, 0x49, 0x5e, 0xff}}},\n    {{{ -1074,   -204,   -357}, 0, { -4972,   -224}, {0x3b, 0x4f, 0x67, 0xff}}},\n    {{{  -774,  -1011,     91}, 0, { -3724,     26}, {0x3b, 0x4f, 0x67, 0xff}}},\n    {{{ -1074,   -204,    973}, 0, { -2758,   1988}, {0x3b, 0x4f, 0x67, 0xff}}},\n    {{{  -774,  -1011,    523}, 0, { -3006,    744}, {0x3b, 0x4f, 0x67, 0xff}}},\n};\n\n// 0x07007150 - 0x07007210\nstatic const Vtx bitdw_seg7_vertex_07007150[] = {\n    {{{  -606,  -1015,    523}, 0, { -2726,    464}, {0x3b, 0x4f, 0x67, 0xff}}},\n    {{{  -606,  -1015,     91}, 0, { -3444,   -254}, {0x3b, 0x4f, 0x67, 0xff}}},\n    {{{  -306,   -204,   -357}, 0, { -3694,  -1500}, {0x3b, 0x4f, 0x67, 0xff}}},\n    {{{  -306,   -204,    973}, 0, { -1480,    714}, {0x3b, 0x4f, 0x67, 0xff}}},\n    {{{  -606,  -1015,    523}, 0, { -2726,    464}, {0x4e, 0x69, 0x7e, 0xff}}},\n    {{{  -306,   -204,    973}, 0, { -1480,    714}, {0x4e, 0x69, 0x7e, 0xff}}},\n    {{{ -1074,   -204,    973}, 0, { -2758,   1988}, {0x4e, 0x69, 0x7e, 0xff}}},\n    {{{  -774,  -1011,    523}, 0, { -3006,    744}, {0x4e, 0x69, 0x7e, 0xff}}},\n    {{{ -1074,   -204,   -357}, 0, { -4972,   -224}, {0x4e, 0x69, 0x7e, 0xff}}},\n    {{{  -606,  -1015,     91}, 0, { -3444,   -254}, {0x4e, 0x69, 0x7e, 0xff}}},\n    {{{  -774,  -1011,     91}, 0, { -3724,     26}, {0x4e, 0x69, 0x7e, 0xff}}},\n    {{{  -306,   -204,   -357}, 0, { -3694,  -1500}, {0x4e, 0x69, 0x7e, 0xff}}},\n};\n\n// 0x07007210 - 0x07007300\nstatic const Vtx bitdw_seg7_vertex_07007210[] = {\n    {{{   768,    922,   -357}, 0, {  2650,  -1692}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{   768,    768,    768}, 0, {  -158,  -4504}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{   768,    922,    768}, 0, {  -158,  -4504}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{   256,    102,   -153}, 0, {   862,   -926}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{   256,    102,   -357}, 0, {  1374,   -416}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{   256,    922,   -357}, 0, {  1374,   -416}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{   256,    768,   -153}, 0, {   862,   -926}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{   256,    768,    768}, 0, { -1436,  -3226}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{   256,    922,    768}, 0, { -1436,  -3226}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{  -306,    922,   -357}, 0, {     0,    990}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{  -306,    102,   -153}, 0, {  -542,    480}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{  -306,    768,   -153}, 0, {  -542,    480}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{  -306,    768,    768}, 0, { -2840,  -1820}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{  -306,    922,    768}, 0, { -2840,  -1820}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{  -306,    102,   -357}, 0, {     0,    990}, {0x35, 0x65, 0x8d, 0xff}}},\n};\n\n// 0x07007300 - 0x070073F0\nstatic const Vtx bitdw_seg7_vertex_07007300[] = {\n    {{{  1331,    922,   -357}, 0, {  4056,  -3098}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{  1331,    768,   -153}, 0, {  3546,  -3608}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{  1331,    102,   -153}, 0, {  3546,  -3608}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{   768,    922,   -357}, 0, {  2650,  -1692}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{   768,    768,   -153}, 0, {  2140,  -2204}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{   768,    768,    768}, 0, {  -158,  -4504}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{   768,    102,   -153}, 0, {  2140,  -2204}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{   768,    102,   -357}, 0, {  2650,  -1692}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{  1331,    768,    768}, 0, {  1246,  -5908}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{  1331,    102,   -357}, 0, {  4056,  -3098}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{  1331,    922,    768}, 0, {  1246,  -5908}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{  -306,    768,    768}, 0, { -3352,  -2332}, {0x13, 0x28, 0x4d, 0xff}}},\n    {{{  -306,    768,   -153}, 0, { -4502,  -1182}, {0x13, 0x28, 0x4d, 0xff}}},\n    {{{   256,    768,   -153}, 0, { -3798,   -480}, {0x13, 0x28, 0x4d, 0xff}}},\n    {{{   256,    768,    768}, 0, { -2648,  -1628}, {0x13, 0x28, 0x4d, 0xff}}},\n};\n\n// 0x070073F0 - 0x07007430\nstatic const Vtx bitdw_seg7_vertex_070073F0[] = {\n    {{{   768,    768,    768}, 0, { -2010,   -990}, {0x13, 0x28, 0x4d, 0xff}}},\n    {{{  1331,    768,   -153}, 0, { -2458,    862}, {0x13, 0x28, 0x4d, 0xff}}},\n    {{{  1331,    768,    768}, 0, { -1308,   -288}, {0x13, 0x28, 0x4d, 0xff}}},\n    {{{   768,    768,   -153}, 0, { -3160,    160}, {0x13, 0x28, 0x4d, 0xff}}},\n};\n\n// 0x07007430 - 0x07007530\nstatic const Vtx bitdw_seg7_vertex_07007430[] = {\n    {{{  -306,    922,   -357}, 0, {  3800,  -6164}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{   256,    922,   -357}, 0, {  6612,  -6164}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{   256,    102,   -357}, 0, {  6612,  -6164}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{  -306,    102,   -357}, 0, {  3800,  -6164}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{   768,    922,   -357}, 0, { 12616,  -8208}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{  1331,    102,   -357}, 0, { 15426,  -8208}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{   768,    102,   -357}, 0, { 12616,  -8208}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{  1331,    922,   -357}, 0, { 15426,  -8208}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{  -306,    768,   -153}, 0, {  3800,  -5142}, {0x20, 0x52, 0x79, 0xff}}},\n    {{{   256,    102,   -153}, 0, {  6612,  -5142}, {0x20, 0x52, 0x79, 0xff}}},\n    {{{   256,    768,   -153}, 0, {  6612,  -5142}, {0x20, 0x52, 0x79, 0xff}}},\n    {{{  -306,    102,   -153}, 0, {  3800,  -5142}, {0x20, 0x52, 0x79, 0xff}}},\n    {{{   768,    768,   -153}, 0, { 12616,  -7186}, {0x20, 0x52, 0x79, 0xff}}},\n    {{{   768,    102,   -153}, 0, { 12616,  -7186}, {0x20, 0x52, 0x79, 0xff}}},\n    {{{  1331,    102,   -153}, 0, { 15554,  -7186}, {0x20, 0x52, 0x79, 0xff}}},\n    {{{  1331,    768,   -153}, 0, { 15426,  -7186}, {0x20, 0x52, 0x79, 0xff}}},\n};\n\n// 0x07007530 - 0x070075B0\nstatic const Vtx bitdw_seg7_vertex_07007530[] = {\n    {{{  -306,    922,    768}, 0, {  3800,    478}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   256,    768,    768}, 0, {  6612,    478}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   256,    922,    768}, 0, {  6612,    478}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  -306,    768,    768}, 0, {  3800,    478}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   768,    922,    768}, 0, { 12616,  -2586}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   768,    768,    768}, 0, { 12616,  -2586}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  1331,    768,    768}, 0, { 15426,  -2586}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  1331,    922,    768}, 0, { 15426,  -2586}, {0x52, 0x7f, 0xac, 0xff}}},\n};\n\n// 0x070075B0 - 0x07007810\nstatic const Gfx bitdw_seg7_dl_070075B0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bitdw_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_07006670, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07006770, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07006870, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07006970, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10,  6,  8, 0x0, 10,  8, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07006A70, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  7, 10, 11, 0x0),\n    gsSP2Triangles( 7, 12,  8, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07006B70, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11, 12, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0,  5,  7, 13, 0x0),\n    gsSP2Triangles( 5, 13, 14, 0x0,  5, 14, 15, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07006C70, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07006D70, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007810 - 0x07007940\nstatic const Gfx bitdw_seg7_dl_07007810[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_07006E50, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07006F50, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07007050, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07007150, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007940 - 0x07007A18\nstatic const Gfx bitdw_seg7_dl_07007940[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_07007210, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 5,  8,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 13, 0x0,  9, 14, 10, 0x0),\n    gsSP1Triangle( 9, 11, 12, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07007300, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  7,  6, 0x0),\n    gsSP2Triangles( 0,  8,  1, 0x0,  2,  9,  0, 0x0),\n    gsSP2Triangles( 0, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_070073F0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007A18 - 0x07007AA8\nstatic const Gfx bitdw_seg7_dl_07007A18[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_07007430, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07007530, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007AA8 - 0x07007B30\nconst Gfx bitdw_seg7_dl_07007AA8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitdw_seg7_dl_070075B0),\n    gsSPDisplayList(bitdw_seg7_dl_07007810),\n    gsSPDisplayList(bitdw_seg7_dl_07007940),\n    gsSPDisplayList(bitdw_seg7_dl_07007A18),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitdw/areas/1/platforms_and_tilting_2/geo.inc.c",
    "content": "// 0x0E0004B0\nconst GeoLayout geo_bitdw_0004B0[] = {\n    GEO_CULLING_RADIUS(2400),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitdw_seg7_dl_07008FF0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitdw/areas/1/platforms_and_tilting_2/model.inc.c",
    "content": "// 0x07007B30 - 0x07007C30\nstatic const Vtx bitdw_seg7_vertex_07007B30[] = {\n    {{{  -665,    492,    140}, 0, {   734,     70}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{  -767,    492,     38}, 0, {   224,     70}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{  -767,    492,    140}, 0, {   224,     70}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{  -665,    492,     38}, 0, {   734,     70}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{  -767,    492,    898}, 0, {   224,     70}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{  -665,    492,    898}, 0, {   734,     70}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{  -665,    492,    795}, 0, {   734,     70}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{  -767,    492,    795}, 0, {   224,     70}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{  -716,   -337,    898}, 0, {   980,    934}, {0xbe, 0xbe, 0xbe, 0xff}}},\n    {{{   267,   -235,    795}, 0, {   866,   -158}, {0xbe, 0xbe, 0xbe, 0xff}}},\n    {{{  -665,   -235,    795}, 0, {   866,    876}, {0xbe, 0xbe, 0xbe, 0xff}}},\n    {{{   305,   -337,    898}, 0, {   980,   -200}, {0xbe, 0xbe, 0xbe, 0xff}}},\n    {{{  -665,   -235,    140}, 0, {   866,    876}, {0xbe, 0xbe, 0xbe, 0xff}}},\n    {{{   304,   -337,     38}, 0, {   980,   -200}, {0xbe, 0xbe, 0xbe, 0xff}}},\n    {{{  -716,   -337,     38}, 0, {   980,    934}, {0xbe, 0xbe, 0xbe, 0xff}}},\n    {{{   266,   -235,    140}, 0, {   866,   -158}, {0xbe, 0xbe, 0xbe, 0xff}}},\n};\n\n// 0x07007C30 - 0x07007D30\nstatic const Vtx bitdw_seg7_vertex_07007C30[] = {\n    {{{  -665,    492,    795}, 0, {   734,     70}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -613,    410,    898}, 0, {   990,    480}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -613,    410,    795}, 0, {   990,    478}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -613,    410,    140}, 0, {   990,    480}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -613,    410,     38}, 0, {   990,    480}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -665,    492,     38}, 0, {   734,     70}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -665,    492,    140}, 0, {   734,     70}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -767,    492,    140}, 0, {   224,     70}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -767,    492,     38}, 0, {   224,     70}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -818,    410,     38}, 0, {     0,    478}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -818,    410,    140}, 0, {     0,    478}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -818,    410,    795}, 0, {     0,    478}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -818,    410,    898}, 0, {     0,    478}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -767,    492,    898}, 0, {   224,     70}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -767,    492,    795}, 0, {   224,     70}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -665,    492,    898}, 0, {   734,     70}, {0xff, 0xd4, 0x00, 0xff}}},\n};\n\n// 0x07007D30 - 0x07007E30\nstatic const Vtx bitdw_seg7_vertex_07007D30[] = {\n    {{{  -716,    328,     38}, 0, {   478,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -716,   -337,     38}, 0, {   478,     42}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -767,   -337,    140}, 0, {   734,     42}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -767,    328,    140}, 0, {   734,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -767,    328,    795}, 0, {   734,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -767,   -337,    795}, 0, {   734,     42}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -716,   -337,    898}, 0, {   478,     42}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -716,    328,    898}, 0, {   478,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -767,   -337,    795}, 0, {   980,    990}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   305,   -337,    898}, 0, {   980,   -200}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -716,   -337,    898}, 0, {   980,    934}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   305,   -337,    795}, 0, {   980,   -200}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -716,   -337,     38}, 0, {   980,    934}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   304,   -337,     38}, 0, {   980,   -200}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   304,   -337,    140}, 0, {   980,   -200}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -767,   -337,    140}, 0, {   980,    990}, {0x55, 0x55, 0x55, 0xff}}},\n};\n\n// 0x07007E30 - 0x07007F30\nstatic const Vtx bitdw_seg7_vertex_07007E30[] = {\n    {{{  -665,    328,    795}, 0, {   224,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -665,   -235,    795}, 0, {   224,    188}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -767,   -337,    795}, 0, {   734,     42}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -665,   -235,    795}, 0, {   866,    876}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   305,   -337,    795}, 0, {   980,   -200}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -767,   -337,    795}, 0, {   980,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   267,   -235,    795}, 0, {   866,   -158}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -767,   -337,    140}, 0, {   980,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   266,   -235,    140}, 0, {   866,   -158}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -665,   -235,    140}, 0, {   866,    876}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   304,   -337,    140}, 0, {   980,   -200}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -767,    328,    140}, 0, {   734,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -665,   -235,    140}, 0, {   224,    188}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -665,    328,    140}, 0, {   224,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -767,   -337,    140}, 0, {   734,     42}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -767,    328,    795}, 0, {   734,    990}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x07007F30 - 0x07008030\nstatic const Vtx bitdw_seg7_vertex_07007F30[] = {\n    {{{  -665,    328,    140}, 0, {   224,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -665,   -235,    140}, 0, {   224,    188}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -716,   -337,     38}, 0, {   478,     42}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -716,    328,     38}, 0, {   478,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -716,    328,    898}, 0, {   478,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -716,   -337,    898}, 0, {   478,     42}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -665,   -235,    795}, 0, {   224,    188}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -665,    328,    795}, 0, {   224,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -767,    328,     38}, 0, {   224,    888}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  -818,    410,     38}, 0, {     0,    478}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  -767,    492,     38}, 0, {   224,     70}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  -767,    328,    795}, 0, {   224,    888}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  -818,    410,    795}, 0, {     0,    478}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  -767,    492,    795}, 0, {   224,     70}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  -665,    492,    795}, 0, {   734,     70}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  -613,    410,    795}, 0, {   990,    480}, {0xaa, 0xaa, 0x00, 0xff}}},\n};\n\n// 0x07008030 - 0x07008120\nstatic const Vtx bitdw_seg7_vertex_07008030[] = {\n    {{{  -767,    328,    795}, 0, {   224,    888}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  -613,    410,    795}, 0, {   990,    480}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  -665,    328,    795}, 0, {   734,    888}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  -767,    492,    140}, 0, {   224,     70}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  -613,    410,    140}, 0, {   990,    480}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  -665,    492,    140}, 0, {   734,     70}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  -818,    410,    140}, 0, {     0,    478}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  -767,    328,    140}, 0, {   224,    888}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  -665,    328,    140}, 0, {   734,    888}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  -767,    492,    898}, 0, {   224,     70}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  -767,    328,    898}, 0, {   224,    888}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  -665,    328,    898}, 0, {   734,    888}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  -767,    328,     38}, 0, {   224,    888}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  -767,    492,     38}, 0, {   224,     70}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  -665,    492,     38}, 0, {   734,     70}, {0xaa, 0xaa, 0x00, 0xff}}},\n};\n\n// 0x07008120 - 0x07008210\nstatic const Vtx bitdw_seg7_vertex_07008120[] = {\n    {{{  -767,    328,     38}, 0, {   224,    888}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  -613,    410,     38}, 0, {   990,    480}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  -665,    328,     38}, 0, {   734,    888}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  -665,    492,     38}, 0, {   734,     70}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  -767,    492,    898}, 0, {   224,     70}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  -613,    410,    898}, 0, {   990,    480}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  -665,    492,    898}, 0, {   734,     70}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  -665,    328,    898}, 0, {   734,    888}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  -818,    410,    898}, 0, {     0,    478}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  -767,    328,    898}, 0, {   224,    888}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  -716,    328,    898}, 0, {  5930,   -798}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  -665,    328,    795}, 0, {  6100,   -798}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  -665,    328,    898}, 0, {  6100,   -798}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  -767,    328,    795}, 0, {  5760,   -798}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  -767,    328,    898}, 0, {  5760,   -798}, {0x6b, 0x6b, 0x00, 0xff}}},\n};\n\n// 0x07008210 - 0x07008310\nstatic const Vtx bitdw_seg7_vertex_07008210[] = {\n    {{{  -767,    328,     38}, 0, {  5760,   -798}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  -716,    328,     38}, 0, {  5930,   -798}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  -767,    328,    140}, 0, {  5760,   -798}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  -665,    328,     38}, 0, {  6100,   -798}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  -665,    328,    140}, 0, {  6100,   -798}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  -665,    328,    795}, 0, {   734,    888}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  -613,    410,    898}, 0, {   990,    480}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  -665,    328,    898}, 0, {   734,    888}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  -665,    328,    140}, 0, {   734,    888}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  -613,    410,     38}, 0, {   990,    480}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  -613,    410,    140}, 0, {   990,    480}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  -665,    328,     38}, 0, {   734,    888}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  -818,    410,    140}, 0, {     0,    478}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  -767,    328,     38}, 0, {   224,    888}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  -767,    328,    140}, 0, {   224,    888}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  -818,    410,     38}, 0, {     0,    478}, {0x78, 0x78, 0x00, 0xff}}},\n};\n\n// 0x07008310 - 0x07008380\nstatic const Vtx bitdw_seg7_vertex_07008310[] = {\n    {{{  -767,    328,    795}, 0, {   224,    888}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  -818,    410,    898}, 0, {     0,    478}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  -818,    410,    795}, 0, {     0,    478}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  -767,    328,    898}, 0, {   224,    888}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  -665,    328,    795}, 0, {   734,    888}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  -613,    410,    795}, 0, {   990,    478}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  -613,    410,    898}, 0, {   990,    480}, {0x78, 0x78, 0x00, 0xff}}},\n};\n\n// 0x07008380 - 0x07008480\nstatic const Vtx bitdw_seg7_vertex_07008380[] = {\n    {{{  -818,   1126,   -357}, 0, {  7888,  -2842}, {0xb4, 0xee, 0xfe, 0xff}}},\n    {{{ -1381,   1126,   -357}, 0, {  6952,  -1906}, {0xb4, 0xee, 0xfe, 0xff}}},\n    {{{ -1381,   1126,    768}, 0, {  5078,  -3780}, {0xb4, 0xee, 0xfe, 0xff}}},\n    {{{ -1842,    102,   -101}, 0, {  4312,   -670}, {0xb4, 0xee, 0xfe, 0xff}}},\n    {{{   256,    102,   -101}, 0, {  6930,  -3290}, {0xb4, 0xee, 0xfe, 0xff}}},\n    {{{   256,    102,   -357}, 0, {  7250,  -2970}, {0xb4, 0xee, 0xfe, 0xff}}},\n    {{{ -1842,    102,   -357}, 0, {  4630,   -352}, {0xb4, 0xee, 0xfe, 0xff}}},\n    {{{   256,    102,    973}, 0, {  7292,  -6334}, {0xb4, 0xee, 0xfe, 0xff}}},\n    {{{  1434,    102,   -357}, 0, { 11466,  -6420}, {0xb4, 0xee, 0xfe, 0xff}}},\n    {{{   256,    102,   -357}, 0, {  9336,  -4290}, {0xb4, 0xee, 0xfe, 0xff}}},\n    {{{  1434,    102,    973}, 0, {  9422,  -8464}, {0xb4, 0xee, 0xfe, 0xff}}},\n    {{{   819,    922,   -357}, 0, { 10274,  -5228}, {0xb4, 0xee, 0xfe, 0xff}}},\n    {{{   256,    922,   -357}, 0, {  9336,  -4290}, {0xb4, 0xee, 0xfe, 0xff}}},\n    {{{   256,    922,    768}, 0, {  7462,  -6164}, {0xb4, 0xee, 0xfe, 0xff}}},\n    {{{   819,    922,    768}, 0, {  8400,  -7100}, {0xb4, 0xee, 0xfe, 0xff}}},\n    {{{  -818,   1126,    768}, 0, {  6014,  -4716}, {0xb4, 0xee, 0xfe, 0xff}}},\n};\n\n// 0x07008480 - 0x07008580\nstatic const Vtx bitdw_seg7_vertex_07008480[] = {\n    {{{  1434,   -204,   -357}, 0, {  8718,  -4440}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{ -1842,   -204,   -357}, 0, {  4630,   -352}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{ -1842,    102,   -357}, 0, {  4630,   -352}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{  1434,    102,   -357}, 0, {  8718,  -4440}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{ -1842,   -208,   -101}, 0, {  4312,   -670}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{   256,    102,   -101}, 0, {  6930,  -3290}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{ -1842,    102,   -101}, 0, {  4312,   -670}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{   256,   -208,   -101}, 0, {  6930,  -3290}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{  1434,    102,    973}, 0, {  7010,  -5268}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{   256,   -204,    973}, 0, {  5424,  -3860}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{  1434,   -204,    973}, 0, {  7010,  -5268}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{   256,    102,    973}, 0, {  5424,  -3860}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{  1434,    102,   -357}, 0, {  8362,  -3746}, {0x20, 0x52, 0x79, 0xff}}},\n    {{{  1434,   -204,    973}, 0, {  7010,  -5268}, {0x20, 0x52, 0x79, 0xff}}},\n    {{{  1434,   -204,   -357}, 0, {  8362,  -3746}, {0x20, 0x52, 0x79, 0xff}}},\n    {{{  1434,    102,    973}, 0, {  7010,  -5268}, {0x20, 0x52, 0x79, 0xff}}},\n};\n\n// 0x07008580 - 0x07008680\nstatic const Vtx bitdw_seg7_vertex_07008580[] = {\n    {{{   256,    102,   -101}, 0, {  6494,  -2654}, {0x20, 0x52, 0x79, 0xff}}},\n    {{{   256,   -208,   -101}, 0, {  6494,  -2654}, {0x20, 0x52, 0x79, 0xff}}},\n    {{{   256,   -204,    973}, 0, {  5424,  -3860}, {0x20, 0x52, 0x79, 0xff}}},\n    {{{   256,    102,    973}, 0, {  5424,  -3860}, {0x20, 0x52, 0x79, 0xff}}},\n    {{{   256,   -208,   -101}, 0, {  6930,  -3290}, {0x0d, 0x22, 0x4c, 0xff}}},\n    {{{ -1842,   -208,   -101}, 0, {  4312,   -670}, {0x0d, 0x22, 0x4c, 0xff}}},\n    {{{ -1842,   -204,   -357}, 0, {  4630,   -352}, {0x0d, 0x22, 0x4c, 0xff}}},\n    {{{   256,   -204,   -357}, 0, {  7250,  -2970}, {0x0d, 0x22, 0x4c, 0xff}}},\n    {{{   556,  -1015,     91}, 0, {  3768,  -7468}, {0x2f, 0x49, 0x5e, 0xff}}},\n    {{{  1134,  -1011,     91}, 0, {  4730,  -8430}, {0x2f, 0x49, 0x5e, 0xff}}},\n    {{{  1134,  -1011,    523}, 0, {  5448,  -7712}, {0x2f, 0x49, 0x5e, 0xff}}},\n    {{{   556,  -1015,    523}, 0, {  4486,  -6750}, {0x2f, 0x49, 0x5e, 0xff}}},\n    {{{   256,   -204,   -357}, 0, {  2522,  -7718}, {0x3b, 0x4f, 0x67, 0xff}}},\n    {{{   556,  -1015,     91}, 0, {  3768,  -7468}, {0x3b, 0x4f, 0x67, 0xff}}},\n    {{{   556,  -1015,    523}, 0, {  4486,  -6750}, {0x3b, 0x4f, 0x67, 0xff}}},\n    {{{   256,   -204,    973}, 0, {  4736,  -5504}, {0x3b, 0x4f, 0x67, 0xff}}},\n};\n\n// 0x07008680 - 0x07008740\nstatic const Vtx bitdw_seg7_vertex_07008680[] = {\n    {{{  1434,   -204,    973}, 0, {  6694,  -7462}, {0x3b, 0x4f, 0x67, 0xff}}},\n    {{{  1134,  -1011,    523}, 0, {  5448,  -7712}, {0x3b, 0x4f, 0x67, 0xff}}},\n    {{{  1134,  -1011,     91}, 0, {  4730,  -8430}, {0x3b, 0x4f, 0x67, 0xff}}},\n    {{{  1434,   -204,   -357}, 0, {  4480,  -9676}, {0x3b, 0x4f, 0x67, 0xff}}},\n    {{{  1134,  -1011,     91}, 0, {  4730,  -8430}, {0x4e, 0x69, 0x7e, 0xff}}},\n    {{{   556,  -1015,     91}, 0, {  3768,  -7468}, {0x4e, 0x69, 0x7e, 0xff}}},\n    {{{  1434,   -204,   -357}, 0, {  4480,  -9676}, {0x4e, 0x69, 0x7e, 0xff}}},\n    {{{   256,   -204,   -357}, 0, {  2522,  -7718}, {0x4e, 0x69, 0x7e, 0xff}}},\n    {{{  1434,   -204,    973}, 0, {  6694,  -7462}, {0x4e, 0x69, 0x7e, 0xff}}},\n    {{{   256,   -204,    973}, 0, {  4736,  -5504}, {0x4e, 0x69, 0x7e, 0xff}}},\n    {{{   556,  -1015,    523}, 0, {  4486,  -6750}, {0x4e, 0x69, 0x7e, 0xff}}},\n    {{{  1134,  -1011,    523}, 0, {  5448,  -7712}, {0x4e, 0x69, 0x7e, 0xff}}},\n};\n\n// 0x07008740 - 0x07008830\nstatic const Vtx bitdw_seg7_vertex_07008740[] = {\n    {{{  -818,   1126,   -357}, 0, {  6612,  -5652}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{  -818,    973,   -153}, 0, {  6100,  -6164}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{  -818,    102,   -153}, 0, {  6100,  -6164}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{   256,    922,   -357}, 0, {  9294,  -8336}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{   256,    768,    768}, 0, {  6484, -11146}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{   256,    922,    768}, 0, {  6484, -11146}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{   256,    768,   -153}, 0, {  8782,  -8846}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{   256,    102,   -153}, 0, {  8782,  -8846}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{   256,    102,   -357}, 0, {  9294,  -8336}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{   819,    102,   -153}, 0, { 10188, -10252}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{   819,    102,   -357}, 0, { 10700,  -9740}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{   819,    922,   -357}, 0, { 10700,  -9740}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{   819,    922,    768}, 0, {  7888, -12552}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{   819,    768,    768}, 0, {  7888, -12552}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{   819,    768,   -153}, 0, { 10188, -10252}, {0x35, 0x65, 0x8d, 0xff}}},\n};\n\n// 0x07008830 - 0x07008930\nstatic const Vtx bitdw_seg7_vertex_07008830[] = {\n    {{{ -1381,   1126,   -357}, 0, {  5206,  -4248}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{ -1381,    973,    768}, 0, {  2396,  -7058}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{ -1381,   1126,    768}, 0, {  2396,  -7058}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{  -818,    102,   -153}, 0, {  6100,  -6164}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{  -818,    102,   -357}, 0, {  6612,  -5652}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{  -818,   1126,   -357}, 0, {  6612,  -5652}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{  -818,   1126,    768}, 0, {  3800,  -8464}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{  -818,    973,    768}, 0, {  3800,  -8464}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{  -818,    973,   -153}, 0, {  6100,  -6164}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{ -1381,    102,   -153}, 0, {  4694,  -4758}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{ -1381,    973,   -153}, 0, {  4694,  -4758}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{ -1381,    102,   -357}, 0, {  5206,  -4248}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{   256,    768,    768}, 0, {  1310,   2330}, {0x13, 0x28, 0x4d, 0xff}}},\n    {{{   819,    768,   -153}, 0, {   862,   4182}, {0x13, 0x28, 0x4d, 0xff}}},\n    {{{   819,    768,    768}, 0, {  2012,   3032}, {0x13, 0x28, 0x4d, 0xff}}},\n    {{{   256,    768,   -153}, 0, {   160,   3480}, {0x13, 0x28, 0x4d, 0xff}}},\n};\n\n// 0x07008930 - 0x07008970\nstatic const Vtx bitdw_seg7_vertex_07008930[] = {\n    {{{ -1381,    973,    768}, 0, {  -732,    288}, {0x13, 0x28, 0x4d, 0xff}}},\n    {{{ -1381,    973,   -153}, 0, { -1882,   1436}, {0x13, 0x28, 0x4d, 0xff}}},\n    {{{  -818,    973,   -153}, 0, { -1180,   2138}, {0x13, 0x28, 0x4d, 0xff}}},\n    {{{  -818,    973,    768}, 0, {     0,    990}, {0x13, 0x28, 0x4d, 0xff}}},\n};\n\n// 0x07008970 - 0x07008A70\nstatic const Vtx bitdw_seg7_vertex_07008970[] = {\n    {{{   256,    922,   -357}, 0, { 12616,  -8208}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{   819,    922,   -357}, 0, { 15426,  -8208}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{   819,    102,   -357}, 0, { 15426,  -8208}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{   256,    102,   -357}, 0, { 12616,  -8208}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{ -1381,   1126,   -357}, 0, { 14788,  -6164}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{  -818,   1126,   -357}, 0, { 17598,  -6164}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{  -818,    102,   -357}, 0, { 17598,  -6164}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{ -1381,    102,   -357}, 0, { 14788,  -6164}, {0x35, 0x65, 0x8d, 0xff}}},\n    {{{   256,    768,   -153}, 0, { 12616,  -7186}, {0x20, 0x52, 0x79, 0xff}}},\n    {{{   256,    102,   -153}, 0, { 12616,  -7186}, {0x20, 0x52, 0x79, 0xff}}},\n    {{{   819,    102,   -153}, 0, { 15554,  -7186}, {0x20, 0x52, 0x79, 0xff}}},\n    {{{   819,    768,   -153}, 0, { 15426,  -7186}, {0x20, 0x52, 0x79, 0xff}}},\n    {{{ -1381,    973,   -153}, 0, { 14788,  -5142}, {0x20, 0x52, 0x79, 0xff}}},\n    {{{  -818,    102,   -153}, 0, { 17598,  -5142}, {0x20, 0x52, 0x79, 0xff}}},\n    {{{  -818,    973,   -153}, 0, { 17598,  -5142}, {0x20, 0x52, 0x79, 0xff}}},\n    {{{ -1381,    102,   -153}, 0, { 14788,  -5142}, {0x20, 0x52, 0x79, 0xff}}},\n};\n\n// 0x07008A70 - 0x07008AF0\nstatic const Vtx bitdw_seg7_vertex_07008A70[] = {\n    {{{   256,    922,    768}, 0, { 12616,  -2586}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   819,    768,    768}, 0, { 15426,  -2586}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   819,    922,    768}, 0, { 15426,  -2586}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   256,    768,    768}, 0, { 12616,  -2586}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{ -1381,   1126,    768}, 0, { 14788,    478}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{ -1381,    973,    768}, 0, { 14788,    478}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  -818,    973,    768}, 0, { 17598,    478}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  -818,   1126,    768}, 0, { 17598,    478}, {0x52, 0x7f, 0xac, 0xff}}},\n};\n\n// 0x07008AF0 - 0x07008D58\nstatic const Gfx bitdw_seg7_dl_07008AF0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bitdw_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_07007B30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07007C30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07007D30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07007E30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07007F30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0, 11, 14, 15, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07008030, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  3,  7,  8, 0x0),\n    gsSP2Triangles( 3,  8,  4, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07008120, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 4,  8,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(13, 10, 14, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07008210, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 8, 11,  9, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 15, 13, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07008310, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP1Triangle( 4,  5,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008D58 - 0x07008E88\nstatic const Gfx bitdw_seg7_dl_07008D58[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_07008380, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07008480, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07008580, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07008680, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008E88 - 0x07008F60\nstatic const Gfx bitdw_seg7_dl_07008E88[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_07008740, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  7,  6, 0x0),\n    gsSP2Triangles( 3,  8,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 13, 14, 0x0),\n    gsSP1Triangle(11, 14,  9, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07008830, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 0,  9, 10, 0x0,  0, 11,  9, 0x0),\n    gsSP2Triangles( 0, 10,  1, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 15, 13, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07008930, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008F60 - 0x07008FF0\nstatic const Gfx bitdw_seg7_dl_07008F60[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_07008970, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07008A70, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008FF0 - 0x07009078\nconst Gfx bitdw_seg7_dl_07008FF0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitdw_seg7_dl_07008AF0),\n    gsSPDisplayList(bitdw_seg7_dl_07008D58),\n    gsSPDisplayList(bitdw_seg7_dl_07008E88),\n    gsSPDisplayList(bitdw_seg7_dl_07008F60),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitdw/areas/1/quartz_crystal/geo.inc.c",
    "content": "// 0x0E0004C8\nconst GeoLayout geo_bitdw_0004C8[] = {\n    GEO_CULLING_RADIUS(300),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bitdw_seg7_dl_070093B0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitdw/areas/1/quartz_crystal/model.inc.c",
    "content": "// 0x07009078 - 0x07009168\nstatic const Vtx bitdw_seg7_vertex_07009078[] = {\n    {{{    39,    178,    -60}, 0, {   794,      0}, {0xe4, 0xff, 0xff, 0xff}}},\n    {{{   -37,    178,    -60}, 0, {   204,      0}, {0xe4, 0xff, 0xff, 0xff}}},\n    {{{     0,    256,      0}, 0, {   494,    476}, {0xe4, 0xff, 0xff, 0xff}}},\n    {{{   -37,    178,     62}, 0, {   204,    990}, {0xe4, 0xff, 0xff, 0xff}}},\n    {{{    39,    178,     62}, 0, {   794,    990}, {0xe4, 0xff, 0xff, 0xff}}},\n    {{{     0,    256,      0}, 0, {   494,    476}, {0xc7, 0xee, 0xff, 0xff}}},\n    {{{   -66,    178,      0}, 0, {   -24,    476}, {0xc7, 0xee, 0xff, 0xff}}},\n    {{{   -37,    178,     62}, 0, {   204,    990}, {0xc7, 0xee, 0xff, 0xff}}},\n    {{{    67,    178,      0}, 0, {  1010,    476}, {0xc7, 0xee, 0xff, 0xff}}},\n    {{{    39,    178,    -60}, 0, {   794,      0}, {0xc7, 0xee, 0xff, 0xff}}},\n    {{{   -37,    178,    -60}, 0, {   204,      0}, {0xa0, 0xd8, 0xff, 0xff}}},\n    {{{   -66,    178,      0}, 0, {   -24,    476}, {0xa0, 0xd8, 0xff, 0xff}}},\n    {{{     0,    256,      0}, 0, {   494,    476}, {0xa0, 0xd8, 0xff, 0xff}}},\n    {{{    39,    178,     62}, 0, {   794,    990}, {0xa0, 0xd8, 0xff, 0xff}}},\n    {{{    67,    178,      0}, 0, {  1010,    476}, {0xa0, 0xd8, 0xff, 0xff}}},\n};\n\n// 0x07009168 - 0x07009268\nstatic const Vtx bitdw_seg7_vertex_07009168[] = {\n    {{{   -37,    178,     62}, 0, {   204,    990}, {0x82, 0xc2, 0xff, 0xff}}},\n    {{{   -17,     25,     37}, 0, {   356,    786}, {0x82, 0xc2, 0xff, 0xff}}},\n    {{{    20,     25,     37}, 0, {   648,    786}, {0x82, 0xc2, 0xff, 0xff}}},\n    {{{    39,    178,     62}, 0, {   794,    990}, {0x82, 0xc2, 0xff, 0xff}}},\n    {{{    39,    178,    -60}, 0, {   794,      0}, {0x82, 0xc2, 0xff, 0xff}}},\n    {{{    20,     25,    -36}, 0, {   648,    172}, {0x82, 0xc2, 0xff, 0xff}}},\n    {{{   -17,     25,    -36}, 0, {   356,    172}, {0x82, 0xc2, 0xff, 0xff}}},\n    {{{   -37,    178,    -60}, 0, {   204,      0}, {0x82, 0xc2, 0xff, 0xff}}},\n    {{{    39,    178,     62}, 0, {   794,    990}, {0x69, 0xb4, 0xff, 0xff}}},\n    {{{    43,     25,      0}, 0, {   824,    474}, {0x69, 0xb4, 0xff, 0xff}}},\n    {{{    67,    178,      0}, 0, {  1010,    476}, {0x69, 0xb4, 0xff, 0xff}}},\n    {{{    20,     25,     37}, 0, {   648,    786}, {0x69, 0xb4, 0xff, 0xff}}},\n    {{{   -37,    178,    -60}, 0, {   204,      0}, {0x69, 0xb4, 0xff, 0xff}}},\n    {{{   -40,     25,      0}, 0, {   180,    474}, {0x69, 0xb4, 0xff, 0xff}}},\n    {{{   -66,    178,      0}, 0, {   -24,    476}, {0x69, 0xb4, 0xff, 0xff}}},\n    {{{   -17,     25,    -36}, 0, {   356,    172}, {0x69, 0xb4, 0xff, 0xff}}},\n};\n\n// 0x07009268 - 0x070092E8\nstatic const Vtx bitdw_seg7_vertex_07009268[] = {\n    {{{    43,     25,      0}, 0, {   824,    474}, {0x5f, 0x9c, 0xff, 0xff}}},\n    {{{    20,     25,    -36}, 0, {   648,    172}, {0x5f, 0x9c, 0xff, 0xff}}},\n    {{{    39,    178,    -60}, 0, {   794,      0}, {0x5f, 0x9c, 0xff, 0xff}}},\n    {{{    67,    178,      0}, 0, {  1010,    476}, {0x5f, 0x9c, 0xff, 0xff}}},\n    {{{   -40,     25,      0}, 0, {   180,    474}, {0x5f, 0x9c, 0xff, 0xff}}},\n    {{{   -17,     25,     37}, 0, {   356,    786}, {0x5f, 0x9c, 0xff, 0xff}}},\n    {{{   -37,    178,     62}, 0, {   204,    990}, {0x5f, 0x9c, 0xff, 0xff}}},\n    {{{   -66,    178,      0}, 0, {   -24,    476}, {0x5f, 0x9c, 0xff, 0xff}}},\n};\n\n// 0x070092E8 - 0x070093B0\nstatic const Gfx bitdw_seg7_dl_070092E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bitdw_seg7_texture_07001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_07009078, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07009168, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07009268, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070093B0 - 0x07009430\nconst Gfx bitdw_seg7_dl_070093B0[] = {\n    gsDPPipeSync(),\n    gsDPSetEnvColor(255, 255, 255, 180),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitdw_seg7_dl_070092E8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitdw/areas/1/quartzy_path_1/geo.inc.c",
    "content": "// 0x0E000408\nconst GeoLayout geo_bitdw_000408[] = {\n    GEO_CULLING_RADIUS(4000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitdw_seg7_dl_07003BF0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitdw/areas/1/quartzy_path_1/model.inc.c",
    "content": "// 0x07003688 - 0x07003778\nstatic const Vtx bitdw_seg7_vertex_07003688[] = {\n    {{{  3507,   -588,    205}, 0, {  4226,   -542}, {0x2b, 0x5c, 0x54, 0xff}}},\n    {{{  3712,   -485,    614}, 0, {  4056,  -1054}, {0x2b, 0x5c, 0x54, 0xff}}},\n    {{{  3712,   -588,    614}, 0, {  4056,  -1054}, {0x2b, 0x5c, 0x54, 0xff}}},\n    {{{  3507,   -485,    205}, 0, {  4226,   -542}, {0x2b, 0x5c, 0x54, 0xff}}},\n    {{{ -1305,    333,    614}, 0, {  -116,   3118}, {0x2b, 0x5c, 0x54, 0xff}}},\n    {{{ -1305,    640,    614}, 0, {  -116,   3118}, {0x2b, 0x5c, 0x54, 0xff}}},\n    {{{ -2124,   1152,   -921}, 0, {   478,   5076}, {0x2b, 0x5c, 0x54, 0xff}}},\n    {{{ -1919,    742,   -921}, 0, {   650,   4906}, {0x2b, 0x5c, 0x54, 0xff}}},\n    {{{ -1509,    742,  -1125}, 0, {  1160,   4736}, {0x2b, 0x5c, 0x54, 0xff}}},\n    {{{  -895,    640,      0}, 0, {   734,   3288}, {0x2b, 0x5c, 0x54, 0xff}}},\n    {{{  -895,    230,      0}, 0, {   734,   3288}, {0x2b, 0x5c, 0x54, 0xff}}},\n    {{{ -1509,   1152,  -1125}, 0, {  1160,   4736}, {0x2b, 0x5c, 0x54, 0xff}}},\n    {{{   742,    230,   1126}, 0, {  1160,    990}, {0x37, 0x7e, 0x69, 0xff}}},\n    {{{ -1305,    640,    614}, 0, {  -116,   3118}, {0x37, 0x7e, 0x69, 0xff}}},\n    {{{ -1305,    333,    614}, 0, {  -116,   3118}, {0x37, 0x7e, 0x69, 0xff}}},\n};\n\n// 0x07003778 - 0x07003868\nstatic const Vtx bitdw_seg7_vertex_07003778[] = {\n    {{{  3712,   -588,    614}, 0, {  4056,  -1054}, {0x37, 0x7e, 0x69, 0xff}}},\n    {{{  3712,   -485,    614}, 0, {  4056,  -1054}, {0x37, 0x7e, 0x69, 0xff}}},\n    {{{  2381,   -383,    614}, 0, {  2948,     54}, {0x37, 0x7e, 0x69, 0xff}}},\n    {{{  2381,   -588,    614}, 0, {  2948,     54}, {0x37, 0x7e, 0x69, 0xff}}},\n    {{{  2176,   -485,      0}, 0, {  3290,    734}, {0x37, 0x7e, 0x69, 0xff}}},\n    {{{  3507,   -485,    205}, 0, {  4226,   -542}, {0x37, 0x7e, 0x69, 0xff}}},\n    {{{  3507,   -588,    205}, 0, {  4226,   -542}, {0x37, 0x7e, 0x69, 0xff}}},\n    {{{  2176,   -383,      0}, 0, {  3290,    734}, {0x37, 0x7e, 0x69, 0xff}}},\n    {{{   742,    230,    512}, 0, {  1672,   1500}, {0x37, 0x7e, 0x69, 0xff}}},\n    {{{  -895,    230,      0}, 0, {   734,   3288}, {0x37, 0x7e, 0x69, 0xff}}},\n    {{{  -895,    640,      0}, 0, {   734,   3288}, {0x37, 0x7e, 0x69, 0xff}}},\n    {{{   742,   -178,    512}, 0, {  1672,   1500}, {0x37, 0x7e, 0x69, 0xff}}},\n    {{{   447,    -59,   1044}, 0, {   982,   1302}, {0x37, 0x7e, 0x69, 0xff}}},\n    {{{   742,    230,   1126}, 0, {  1160,    990}, {0x37, 0x7e, 0x69, 0xff}}},\n    {{{ -1305,    333,    614}, 0, {  -116,   3118}, {0x37, 0x7e, 0x69, 0xff}}},\n};\n\n// 0x07003868 - 0x07003968\nstatic const Vtx bitdw_seg7_vertex_07003868[] = {\n    {{{   742,    230,    512}, 0, {  1672,   1500}, {0x2e, 0x9a, 0x73, 0xff}}},\n    {{{  2176,   -383,      0}, 0, {  3290,    734}, {0x2e, 0x9a, 0x73, 0xff}}},\n    {{{  2176,   -485,      0}, 0, {  3290,    734}, {0x2e, 0x9a, 0x73, 0xff}}},\n    {{{   742,   -178,    512}, 0, {  1672,   1500}, {0x2e, 0x9a, 0x73, 0xff}}},\n    {{{  2381,   -588,    614}, 0, {  2948,     54}, {0x2e, 0x9a, 0x73, 0xff}}},\n    {{{   742,    230,   1126}, 0, {  1160,    990}, {0x2e, 0x9a, 0x73, 0xff}}},\n    {{{   447,    -59,   1044}, 0, {   982,   1302}, {0x2e, 0x9a, 0x73, 0xff}}},\n    {{{  2381,   -383,    614}, 0, {  2948,     54}, {0x2e, 0x9a, 0x73, 0xff}}},\n    {{{ -1509,   1152,  -1125}, 0, {  1160,   4736}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2124,   1152,   -921}, 0, {   478,   5076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1305,    640,    614}, 0, {  -116,   3118}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2176,   -383,      0}, 0, {  3290,    734}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2381,   -383,    614}, 0, {  2948,     54}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3712,   -485,    614}, 0, {  4056,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3507,   -485,    205}, 0, {  4226,   -542}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   742,    230,    512}, 0, {  1672,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07003968 - 0x07003A68\nstatic const Vtx bitdw_seg7_vertex_07003968[] = {\n    {{{   742,    230,    512}, 0, {  1672,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   742,    230,   1126}, 0, {  1160,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2381,   -383,    614}, 0, {  2948,     54}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   742,    230,    512}, 0, {  1672,   1498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -895,    640,      0}, 0, {   734,   3288}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1305,    640,    614}, 0, {  -116,   3118}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1509,   1152,  -1125}, 0, {  1160,   4736}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2176,   -485,      0}, 0, {  3290,    734}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{  3507,   -588,    205}, 0, {  4226,   -542}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{  2381,   -588,    614}, 0, {  2948,     54}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{  3712,   -588,    614}, 0, {  4056,  -1054}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{   742,   -178,    512}, 0, {  1672,   1500}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{   447,    -59,   1044}, 0, {   982,   1302}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{ -1305,    333,    614}, 0, {  -116,   3118}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{  -895,    230,      0}, 0, {   734,   3288}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{ -1919,    742,   -921}, 0, {   650,   4906}, {0x00, 0x43, 0x43, 0xff}}},\n};\n\n// 0x07003A68 - 0x07003A98\nstatic const Vtx bitdw_seg7_vertex_07003A68[] = {\n    {{{ -1919,    742,   -921}, 0, {   650,   4906}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{ -1509,    742,  -1125}, 0, {  1160,   4736}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{  -895,    230,      0}, 0, {   734,   3288}, {0x00, 0x43, 0x43, 0xff}}},\n};\n\n// 0x07003A98 - 0x07003BF0\nstatic const Gfx bitdw_seg7_dl_07003A98[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bitdw_seg7_texture_07000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_07003688, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07003778, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07003868, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(14, 11, 13, 0x0, 11, 15, 12, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07003968, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 4,  5,  1, 0x0,  4,  6,  5, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  8, 10,  9, 0x0),\n    gsSP2Triangles(11,  7,  9, 0x0, 11,  9, 12, 0x0),\n    gsSP2Triangles(13, 14, 11, 0x0, 12, 13, 11, 0x0),\n    gsSP1Triangle(13, 15, 14, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07003A68, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07003BF0 - 0x07003C60\nconst Gfx bitdw_seg7_dl_07003BF0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitdw_seg7_dl_07003A98),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitdw/areas/1/quartzy_path_2/geo.inc.c",
    "content": "// 0x0E000420\nconst GeoLayout geo_bitdw_000420[] = {\n    GEO_CULLING_RADIUS(3500),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitdw_seg7_dl_07004318),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitdw/areas/1/quartzy_path_2/model.inc.c",
    "content": "// 0x07003C60 - 0x07003D60\nstatic const Vtx bitdw_seg7_vertex_07003C60[] = {\n    {{{ -1074,    102,     51}, 0, {  1330,   1568}, {0x2b, 0x5c, 0x54, 0xff}}},\n    {{{ -1074,   -101,    -50}, 0, {  1500,   1396}, {0x2b, 0x5c, 0x54, 0xff}}},\n    {{{ -1074,   -101,   -460}, 0, {  2182,   1534}, {0x2b, 0x5c, 0x54, 0xff}}},\n    {{{ -1074,    102,   -562}, 0, {  2352,   1772}, {0x2b, 0x5c, 0x54, 0xff}}},\n    {{{ -2309,   -204,   1075}, 0, {  -370,    922}, {0x37, 0x7e, 0x69, 0xff}}},\n    {{{ -2309,   -613,   1075}, 0, {  -370,    514}, {0x37, 0x7e, 0x69, 0xff}}},\n    {{{ -1795,    -51,     47}, 0, {  1338,   1414}, {0x37, 0x7e, 0x69, 0xff}}},\n    {{{ -1795,   -307,    -55}, 0, {  1508,   1194}, {0x37, 0x7e, 0x69, 0xff}}},\n    {{{ -2718,   -613,   1280}, 0, {     0,    650}, {0x37, 0x7e, 0x69, 0xff}}},\n    {{{ -2923,   -204,   1280}, 0, {     0,    990}, {0x37, 0x7e, 0x69, 0xff}}},\n    {{{ -2004,      0,   -557}, 0, { -3088,   1668}, {0x37, 0x7e, 0x69, 0xff}}},\n    {{{ -1898,   -307,   -259}, 0, { -2592,   1330}, {0x37, 0x7e, 0x69, 0xff}}},\n    {{{ -1898,   -307,   -259}, 0, { -3434,   1766}, {0x2e, 0x9a, 0x73, 0xff}}},\n    {{{ -2004,      0,   -557}, 0, { -3612,   2010}, {0x2e, 0x9a, 0x73, 0xff}}},\n    {{{ -1074,   -101,   -460}, 0, { -2064,   1716}, {0x2e, 0x9a, 0x73, 0xff}}},\n    {{{ -1074,    102,   -562}, 0, { -2064,   1862}, {0x2e, 0x9a, 0x73, 0xff}}},\n};\n\n// 0x07003D60 - 0x07003E60\nstatic const Vtx bitdw_seg7_vertex_07003D60[] = {\n    {{{ -1795,    -51,     47}, 0, { -3264,   1924}, {0x2e, 0x9a, 0x73, 0xff}}},\n    {{{ -1795,   -307,    -55}, 0, { -3264,   1742}, {0x2e, 0x9a, 0x73, 0xff}}},\n    {{{ -1074,    102,     51}, 0, { -2064,   1862}, {0x2e, 0x9a, 0x73, 0xff}}},\n    {{{ -1074,   -101,    -50}, 0, { -2064,   1716}, {0x2e, 0x9a, 0x73, 0xff}}},\n    {{{ -1795,    -51,     47}, 0, {  2442,   4142}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1074,    102,     52}, 0, {  3038,   3538}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2004,      0,   -557}, 0, {  2772,   4818}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1074,    102,   -562}, 0, {  3550,   4050}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2309,   -204,   1075}, 0, {  1160,   3714}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2923,   -204,   1280}, 0, {   478,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1898,   -307,   -259}, 0, {  2614,   4482}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{ -1795,   -307,    -55}, 0, {  2528,   4226}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{ -2309,   -613,   1075}, 0, {  1160,   3714}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{ -1074,   -101,    -50}, 0, {  3124,   3624}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{ -2718,   -613,   1280}, 0, {   650,   3884}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{ -1074,   -101,   -460}, 0, {  3464,   3964}, {0x00, 0x43, 0x43, 0xff}}},\n};\n\n// 0x07003E60 - 0x07003F60\nstatic const Vtx bitdw_seg7_vertex_07003E60[] = {\n    {{{   272,    307,   -613}, 0, {  -540,    480}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{   272,   -306,   -613}, 0, {   990,  -1054}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{  -341,   -306,   -613}, 0, {  2524,    478}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{  -341,    307,   -613}, 0, {   990,   2010}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{  -341,    307,    102}, 0, {   990,   2010}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{  -341,   -306,    102}, 0, {  2524,    478}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{   272,   -306,    102}, 0, {   990,  -1054}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{   272,    307,    102}, 0, {  -540,    480}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{  1792,    102,   -101}, 0, {  1246,   1244}, {0x59, 0x7d, 0x4c, 0xff}}},\n    {{{  1741,    -50,   -101}, 0, {  1628,    862}, {0x59, 0x7d, 0x4c, 0xff}}},\n    {{{  1741,    -50,   -409}, 0, {   862,     96}, {0x59, 0x7d, 0x4c, 0xff}}},\n    {{{  1792,    102,   -409}, 0, {   480,    480}, {0x59, 0x7d, 0x4c, 0xff}}},\n    {{{  1024,    102,   -562}, 0, {    96,     96}, {0x59, 0x7d, 0x4c, 0xff}}},\n    {{{  1024,   -204,    -50}, 0, {  2140,    606}, {0x59, 0x7d, 0x4c, 0xff}}},\n    {{{  1024,    102,     51}, 0, {  1628,   1626}, {0x59, 0x7d, 0x4c, 0xff}}},\n    {{{  1024,   -204,   -460}, 0, {  1118,   -416}, {0x59, 0x7d, 0x4c, 0xff}}},\n};\n\n// 0x07003F60 - 0x07004060\nstatic const Vtx bitdw_seg7_vertex_07003F60[] = {\n    {{{   272,    307,    102}, 0, {  1246,   2266}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{   272,   -306,   -613}, 0, {   990,  -1054}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{   272,    307,   -613}, 0, {  -542,    480}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{   272,   -306,    102}, 0, {  2778,    734}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{  -341,    307,   -613}, 0, {  -542,    480}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{  -341,   -306,   -613}, 0, {   990,  -1054}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{  -341,   -306,    102}, 0, {  2778,    734}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{  -341,    307,    102}, 0, {  1246,   2266}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{  -341,    307,    102}, 0, {     0,    990}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{   272,    307,   -613}, 0, {  3290,   1244}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{  -341,    307,   -613}, 0, {  1756,   2776}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{   272,    307,    102}, 0, {  1500,   -542}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{  -341,   -306,   -613}, 0, {  1756,   2776}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   272,   -306,   -613}, 0, {  3290,   1244}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   272,   -306,    102}, 0, {  1500,   -542}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -341,   -306,    102}, 0, {     0,    990}, {0x55, 0x55, 0x55, 0xff}}},\n};\n\n// 0x07004060 - 0x07004160\nstatic const Vtx bitdw_seg7_vertex_07004060[] = {\n    {{{  1741,    -50,   -101}, 0, {  2352,   1498}, {0x3a, 0x48, 0x35, 0xff}}},\n    {{{  1024,   -204,   -460}, 0, {     0,   2692}, {0x3a, 0x48, 0x35, 0xff}}},\n    {{{  1741,    -50,   -409}, 0, {  2352,   2522}, {0x3a, 0x48, 0x35, 0xff}}},\n    {{{  1024,   -204,    -50}, 0, {     0,   1328}, {0x3a, 0x48, 0x35, 0xff}}},\n    {{{  1792,    102,   -409}, 0, { -3734,  -3736}, {0x66, 0x88, 0x67, 0xff}}},\n    {{{  1741,    -50,   -409}, 0, { -3224,  -3992}, {0x66, 0x88, 0x67, 0xff}}},\n    {{{  1024,    102,   -562}, 0, { -1818,  -1820}, {0x66, 0x88, 0x67, 0xff}}},\n    {{{  1024,   -204,   -460}, 0, { -1052,  -2588}, {0x66, 0x88, 0x67, 0xff}}},\n    {{{  1024,    102,     51}, 0, { -1818,  -1820}, {0x66, 0x88, 0x67, 0xff}}},\n    {{{  1024,   -204,    -50}, 0, { -1052,  -2588}, {0x66, 0x88, 0x67, 0xff}}},\n    {{{  1741,    -50,   -101}, 0, { -3224,  -3992}, {0x66, 0x88, 0x67, 0xff}}},\n    {{{  1792,    102,   -101}, 0, { -3734,  -3736}, {0x66, 0x88, 0x67, 0xff}}},\n    {{{  1792,    102,   -409}, 0, {  6484,  -2970}, {0xbd, 0xdb, 0xb3, 0xff}}},\n    {{{  1024,    102,     51}, 0, {  3418,  -2204}, {0xbd, 0xdb, 0xb3, 0xff}}},\n    {{{  1792,    102,   -101}, 0, {  5716,  -3736}, {0xbd, 0xdb, 0xb3, 0xff}}},\n    {{{  1024,    102,   -562}, 0, {  4950,   -670}, {0xbd, 0xdb, 0xb3, 0xff}}},\n};\n\n// 0x07004160 - 0x07004220\nstatic const Gfx bitdw_seg7_dl_07004160[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bitdw_seg7_texture_07000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_07003C60, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07003D60, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  4,  9, 0x0,  4,  6,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 11, 10, 0x0),\n    gsSP2Triangles(10, 12, 14, 0x0, 10, 15, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07004220 - 0x07004318\nstatic const Gfx bitdw_seg7_dl_07004220[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_07003E60, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07003F60, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07004060, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07004318 - 0x07004390\nconst Gfx bitdw_seg7_dl_07004318[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitdw_seg7_dl_07004160),\n    gsSPDisplayList(bitdw_seg7_dl_07004220),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitdw/areas/1/quartzy_path_fences/geo.inc.c",
    "content": "// 0x0E000438\nconst GeoLayout geo_bitdw_000438[] = {\n    GEO_CULLING_RADIUS(2500),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bitdw_seg7_dl_070045C0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitdw/areas/1/quartzy_path_fences/model.inc.c",
    "content": "// 0x07004390 - 0x07004480\nstatic const Vtx bitdw_seg7_vertex_07004390[] = {\n    {{{   979,    307,  -1022}, 0, {  7430,    990}, {0xaf, 0xce, 0x16, 0xff}}},\n    {{{   253,    255,  -1018}, 0, {   240,    -14}, {0xaf, 0xce, 0x16, 0xff}}},\n    {{{   258,    153,  -1027}, 0, {    70,    990}, {0xaf, 0xce, 0x16, 0xff}}},\n    {{{    49,    205,  -1632}, 0, {   172,    990}, {0xaf, 0xce, 0x16, 0xff}}},\n    {{{   979,    307,  -1637}, 0, {  9510,    990}, {0xaf, 0xce, 0x16, 0xff}}},\n    {{{   979,    410,  -1637}, 0, {  9510,      0}, {0xaf, 0xce, 0x16, 0xff}}},\n    {{{    49,    307,  -1632}, 0, {   238,    -30}, {0xaf, 0xce, 0x16, 0xff}}},\n    {{{    49,    205,  -1632}, 0, { 20784,    990}, {0xaf, 0xce, 0x16, 0xff}}},\n    {{{    49,    307,  -1632}, 0, { 20784,      0}, {0xaf, 0xce, 0x16, 0xff}}},\n    {{{  -874,    102,    214}, 0, {   172,      0}, {0xaf, 0xce, 0x16, 0xff}}},\n    {{{  -869,      0,    205}, 0, {   172,    990}, {0xaf, 0xce, 0x16, 0xff}}},\n    {{{  -874,    102,    214}, 0, { 17900,     -6}, {0xaf, 0xce, 0x16, 0xff}}},\n    {{{   -44,   -413,   1770}, 0, {  -438,      0}, {0xaf, 0xce, 0x16, 0xff}}},\n    {{{   -50,   -511,   1741}, 0, {  -438,    990}, {0xaf, 0xce, 0x16, 0xff}}},\n    {{{  -869,      0,    205}, 0, { 17670,    990}, {0xaf, 0xce, 0x16, 0xff}}},\n};\n\n// 0x07004480 - 0x07004530\nstatic const Vtx bitdw_seg7_vertex_07004480[] = {\n    {{{    33,   -135,    544}, 0, {  -438,      0}, {0xaf, 0xce, 0x16, 0xff}}},\n    {{{  -255,      0,      0}, 0, {  5772,    990}, {0xaf, 0xce, 0x16, 0xff}}},\n    {{{  -258,    102,      8}, 0, {  6092,     20}, {0xaf, 0xce, 0x16, 0xff}}},\n    {{{   979,    307,  -1022}, 0, {  7430,    990}, {0xaf, 0xce, 0x16, 0xff}}},\n    {{{   979,    410,  -1023}, 0, {  7644,    -10}, {0xaf, 0xce, 0x16, 0xff}}},\n    {{{   253,    255,  -1018}, 0, {   240,    -14}, {0xaf, 0xce, 0x16, 0xff}}},\n    {{{   258,    153,  -1027}, 0, { 11336,    990}, {0xaf, 0xce, 0x16, 0xff}}},\n    {{{   253,    255,  -1018}, 0, { 11370,      0}, {0xaf, 0xce, 0x16, 0xff}}},\n    {{{  -258,    102,      8}, 0, {  -186,    -30}, {0xaf, 0xce, 0x16, 0xff}}},\n    {{{  -255,      0,      0}, 0, {  -234,    990}, {0xaf, 0xce, 0x16, 0xff}}},\n    {{{    21,   -230,    508}, 0, {  -438,    990}, {0xaf, 0xce, 0x16, 0xff}}},\n};\n\n// 0x07004530 - 0x070045C0\nstatic const Gfx bitdw_seg7_dl_07004530[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_07004390, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 11, 13, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07004480, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP1Triangle( 0, 10,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070045C0 - 0x07004630\nconst Gfx bitdw_seg7_dl_070045C0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitdw_seg7_dl_07004530),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitdw/areas/1/staircase_slope_and_platform/geo.inc.c",
    "content": "// 0x0E0004E0\nconst GeoLayout geo_bitdw_0004E0[] = {\n    GEO_CULLING_RADIUS(2400),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitdw_seg7_dl_0700A368),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitdw/areas/1/staircase_slope_and_platform/model.inc.c",
    "content": "// 0x07009430 - 0x07009530\nstatic const Vtx bitdw_seg7_vertex_07009430[] = {\n    {{{   307,    955,    307}, 0, { -4538,  -2496}, {0x3b, 0x41, 0x42, 0xff}}},\n    {{{   922,   1024,   -204}, 0, { -4644,  -4306}, {0x3b, 0x41, 0x42, 0xff}}},\n    {{{   922,   1024,    205}, 0, { -5326,  -3624}, {0x3b, 0x41, 0x42, 0xff}}},\n    {{{   307,    955,   -306}, 0, { -3516,  -3518}, {0x3b, 0x41, 0x42, 0xff}}},\n    {{{ -1740,   -818,    307}, 0, {     0,   2010}, {0x3b, 0x41, 0x42, 0xff}}},\n    {{{ -1740,   -818,   -306}, 0, {   990,    990}, {0x3b, 0x41, 0x42, 0xff}}},\n    {{{   307,    955,   -306}, 0, {  6326,   1442}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{   102,   1229,   -306}, 0, {  6612,    478}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{   717,   1229,   -306}, 0, {  7632,   1498}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{   922,   1024,    205}, 0, {  7632,   2180}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{   717,   1229,    307}, 0, {  7632,   1498}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{   307,    955,    307}, 0, {  6326,   1442}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{ -1740,   -818,    307}, 0, {     0,    990}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{   102,   1229,    307}, 0, {  6610,    478}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{ -1740,   -818,   -306}, 0, {     0,    990}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{   102,   1229,   -306}, 0, {  6610,    478}, {0x7c, 0x89, 0x79, 0xff}}},\n};\n\n// 0x07009530 - 0x07009610\nstatic const Vtx bitdw_seg7_vertex_07009530[] = {\n    {{{ -1740,   -818,   -306}, 0, {     0,    990}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{ -1740,    205,   -306}, 0, {  1842,   -884}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{ -1125,    205,   -306}, 0, {  2864,    138}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{   102,   1229,   -306}, 0, {  6610,    478}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{   307,    955,   -306}, 0, {  6326,   1442}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{   717,   1229,   -306}, 0, {  7632,   1498}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{   922,   1024,   -204}, 0, {  7632,   2180}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{ -1740,   -818,    307}, 0, {     0,    990}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{   102,   1229,    307}, 0, {  6610,    478}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{ -1125,    205,    307}, 0, {  2864,    138}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{   717,   1229,    307}, 0, {  7632,   1498}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{   102,   1229,    307}, 0, {  6612,    478}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{   307,    955,    307}, 0, {  6326,   1442}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{ -1740,    205,    307}, 0, {  1842,   -884}, {0x7c, 0x89, 0x79, 0xff}}},\n};\n\n// 0x07009610 - 0x07009690\nstatic const Vtx bitdw_seg7_vertex_07009610[] = {\n    {{{ -1740,   -613,    307}, 0, {   990,      0}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{ -1740,    205,    307}, 0, {  2352,   1328}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{ -1740,    205,   -306}, 0, {  1330,   2350}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{ -1740,   -613,   -306}, 0, {     0,    990}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{   717,   1229,   -306}, 0, {  2012,    990}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{   102,   1229,   -306}, 0, {   990,   2010}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{   102,   1229,    307}, 0, {     0,    990}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{   717,   1229,    307}, 0, {   990,      0}, {0xb7, 0xcd, 0xba, 0xff}}},\n};\n\n// 0x07009690 - 0x07009790\nstatic const Vtx bitdw_seg7_vertex_07009690[] = {\n    {{{  1946,   1331,    205}, 0, {   862,    -30}, {0xd2, 0xd2, 0xd2, 0xff}}},\n    {{{  1741,   1229,    717}, 0, {     0,    990}, {0xd2, 0xd2, 0xd2, 0xff}}},\n    {{{  2150,   1229,    307}, 0, {   990,    990}, {0xd2, 0xd2, 0xd2, 0xff}}},\n    {{{  2150,   1229,   -306}, 0, {     0,    990}, {0xd2, 0xd2, 0xd2, 0xff}}},\n    {{{  1741,   1229,   -716}, 0, {   990,    990}, {0xd2, 0xd2, 0xd2, 0xff}}},\n    {{{  1638,   1331,   -511}, 0, {   990,      0}, {0xd2, 0xd2, 0xd2, 0xff}}},\n    {{{  1946,   1331,   -204}, 0, {   224,      0}, {0xd2, 0xd2, 0xd2, 0xff}}},\n    {{{   922,   1331,   -204}, 0, {   862,    -30}, {0xd2, 0xd2, 0xd2, 0xff}}},\n    {{{  1126,   1229,   -716}, 0, {     0,    990}, {0xd2, 0xd2, 0xd2, 0xff}}},\n    {{{   717,   1229,   -306}, 0, {   990,    990}, {0xd2, 0xd2, 0xd2, 0xff}}},\n    {{{  1229,   1331,   -511}, 0, {    96,    -30}, {0xd2, 0xd2, 0xd2, 0xff}}},\n    {{{   717,   1229,    307}, 0, {     0,    990}, {0xd2, 0xd2, 0xd2, 0xff}}},\n    {{{  1126,   1229,    717}, 0, {   990,    990}, {0xd2, 0xd2, 0xd2, 0xff}}},\n    {{{  1229,   1331,    512}, 0, {   990,      0}, {0xd2, 0xd2, 0xd2, 0xff}}},\n    {{{   922,   1331,    205}, 0, {   224,      0}, {0xd2, 0xd2, 0xd2, 0xff}}},\n    {{{  1638,   1331,    512}, 0, {    96,    -30}, {0xd2, 0xd2, 0xd2, 0xff}}},\n};\n\n// 0x07009790 - 0x07009880\nstatic const Vtx bitdw_seg7_vertex_07009790[] = {\n    {{{   717,   1229,    307}, 0, {   990,    990}, {0xbe, 0xbe, 0xbe, 0xff}}},\n    {{{   922,   1331,    205}, 0, {   820,    -48}, {0xbe, 0xbe, 0xbe, 0xff}}},\n    {{{   922,   1331,   -204}, 0, {   138,    -48}, {0xbe, 0xbe, 0xbe, 0xff}}},\n    {{{   717,   1229,   -306}, 0, {     0,    990}, {0xbe, 0xbe, 0xbe, 0xff}}},\n    {{{  2150,   1229,   -306}, 0, {   990,    990}, {0xbe, 0xbe, 0xbe, 0xff}}},\n    {{{  1946,   1331,    205}, 0, {   308,      0}, {0xbe, 0xbe, 0xbe, 0xff}}},\n    {{{  2150,   1229,    307}, 0, {     0,    990}, {0xbe, 0xbe, 0xbe, 0xff}}},\n    {{{  1946,   1331,   -204}, 0, {   990,      0}, {0xbe, 0xbe, 0xbe, 0xff}}},\n    {{{   717,   1229,   -306}, 0, {   990,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1126,   1229,   -716}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   922,   1024,   -204}, 0, {   862,    526}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  2150,   1229,    307}, 0, {   990,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1741,   1229,    717}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1946,   1024,    205}, 0, {   862,    526}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1638,   1024,    512}, 0, {    96,    526}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x07009880 - 0x07009970\nstatic const Vtx bitdw_seg7_vertex_07009880[] = {\n    {{{   922,   1024,    205}, 0, {   154,    526}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1229,   1024,    512}, 0, {   920,    526}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   717,   1229,    307}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1126,   1229,    717}, 0, {   990,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1638,   1024,   -511}, 0, {   920,    526}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1741,   1229,   -716}, 0, {   990,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  2150,   1229,   -306}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1126,   1229,   -716}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1229,   1024,   -511}, 0, {    96,    526}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   922,   1024,   -204}, 0, {   862,    526}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1946,   1024,   -204}, 0, {   154,    526}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1229,   1331,   -511}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1741,   1229,   -716}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1126,   1229,   -716}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1638,   1331,   -511}, 0, {   308,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07009970 - 0x07009A70\nstatic const Vtx bitdw_seg7_vertex_07009970[] = {\n    {{{  1638,   1331,    512}, 0, {   820,    -26}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1229,   1331,    512}, 0, {   138,    -26}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1126,   1229,    717}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1741,   1229,    717}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2150,   1229,    307}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1946,   1024,    205}, 0, {   206,    582}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2150,   1229,   -306}, 0, {   990,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1946,   1024,   -204}, 0, {   888,    582}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1741,   1229,    717}, 0, {   990,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1126,   1229,    717}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1638,   1024,    512}, 0, {   820,    584}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1229,   1024,    512}, 0, {   138,    584}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1126,   1229,   -716}, 0, {   990,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1741,   1229,   -716}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1229,   1024,   -511}, 0, {   888,    582}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1638,   1024,   -511}, 0, {   206,    582}, {0x96, 0x96, 0x96, 0xff}}},\n};\n\n// 0x07009A70 - 0x07009B60\nstatic const Vtx bitdw_seg7_vertex_07009A70[] = {\n    {{{ -1433,   -204,    922}, 0, {  1194,    990}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{ -1740,   -306,    922}, 0, {  2420,    990}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{ -1433,   -306,    922}, 0, {  1194,    990}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{ -1740,   -204,    922}, 0, {  2420,    990}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{ -1125,     51,    922}, 0, {     0,    990}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{ -1433,    -50,    922}, 0, {  1194,    990}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{ -1125,    -50,    922}, 0, {     0,    990}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{ -1433,     51,    922}, 0, {  1194,    990}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{ -1433,    205,    307}, 0, {  1194,  -1462}, {0xa5, 0xd8, 0x8c, 0xff}}},\n    {{{ -1740,    205,    307}, 0, {  2420,  -1462}, {0xa5, 0xd8, 0x8c, 0xff}}},\n    {{{ -1637,    154,    614}, 0, {  2012,   -236}, {0xa5, 0xd8, 0x8c, 0xff}}},\n    {{{ -1433,   -204,    307}, 0, {  1194,  -1462}, {0xa5, 0xd8, 0x8c, 0xff}}},\n    {{{ -1740,   -204,    922}, 0, {  2420,    990}, {0xa5, 0xd8, 0x8c, 0xff}}},\n    {{{ -1433,   -204,    922}, 0, {  1194,    990}, {0xa5, 0xd8, 0x8c, 0xff}}},\n    {{{ -1740,   -204,    307}, 0, {  2420,  -1462}, {0xa5, 0xd8, 0x8c, 0xff}}},\n};\n\n// 0x07009B60 - 0x07009C50\nstatic const Vtx bitdw_seg7_vertex_07009B60[] = {\n    {{{ -1433,     51,    614}, 0, {  1194,   -236}, {0xa5, 0xd8, 0x8c, 0xff}}},\n    {{{ -1125,     51,    922}, 0, {     0,    990}, {0xa5, 0xd8, 0x8c, 0xff}}},\n    {{{ -1125,     51,    307}, 0, {     0,  -1462}, {0xa5, 0xd8, 0x8c, 0xff}}},\n    {{{ -1433,     51,    922}, 0, {  1194,    990}, {0xa5, 0xd8, 0x8c, 0xff}}},\n    {{{ -1637,     51,    614}, 0, {   480,    734}, {0x70, 0xac, 0x52, 0xff}}},\n    {{{ -1433,    -50,    614}, 0, {     0,    990}, {0x70, 0xac, 0x52, 0xff}}},\n    {{{ -1433,     51,    614}, 0, {     0,    734}, {0x70, 0xac, 0x52, 0xff}}},\n    {{{ -1637,    154,    614}, 0, {   480,    480}, {0x70, 0xac, 0x52, 0xff}}},\n    {{{ -1740,   -306,    307}, 0, {  2420,  -1462}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{ -1433,   -306,    307}, 0, {  1194,  -1462}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{ -1433,   -306,    922}, 0, {  1194,    990}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{ -1740,   -306,    922}, 0, {  2420,    990}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{ -1637,     51,    614}, 0, {  2012,   -236}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{ -1433,    -50,    307}, 0, {  1194,  -1462}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{ -1433,    -50,    614}, 0, {  1194,   -236}, {0x38, 0x4a, 0x3d, 0xff}}},\n};\n\n// 0x07009C50 - 0x07009D50\nstatic const Vtx bitdw_seg7_vertex_07009C50[] = {\n    {{{ -1433,    -50,    307}, 0, {  1194,  -1462}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{ -1125,    -50,    922}, 0, {     0,    990}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{ -1433,    -50,    922}, 0, {  1194,    990}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{ -1125,    -50,    307}, 0, {     0,  -1462}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{ -1740,    102,    307}, 0, {  2420,  -1462}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{ -1637,     51,    614}, 0, {  2012,   -236}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{ -1433,    205,    307}, 0, {  1194,  -1462}, {0x95, 0xcd, 0x7a, 0xff}}},\n    {{{ -1637,    154,    614}, 0, {  2012,   -236}, {0x95, 0xcd, 0x7a, 0xff}}},\n    {{{ -1433,     51,    614}, 0, {  1194,   -236}, {0x95, 0xcd, 0x7a, 0xff}}},\n    {{{ -1125,     51,    307}, 0, {     0,  -1462}, {0x95, 0xcd, 0x7a, 0xff}}},\n    {{{ -1637,    154,    614}, 0, {   734,   -160}, {0x69, 0x8a, 0x4e, 0xff}}},\n    {{{ -1740,    205,    307}, 0, {  1502,   -288}, {0x69, 0x8a, 0x4e, 0xff}}},\n    {{{ -1740,    102,    307}, 0, {  1502,      0}, {0x69, 0x8a, 0x4e, 0xff}}},\n    {{{ -1740,   -306,    922}, 0, {     0,    990}, {0x69, 0x8a, 0x4e, 0xff}}},\n    {{{ -1740,   -204,    922}, 0, {     0,    734}, {0x69, 0x8a, 0x4e, 0xff}}},\n    {{{ -1740,   -204,    307}, 0, {  1502,    734}, {0x69, 0x8a, 0x4e, 0xff}}},\n};\n\n// 0x07009D50 - 0x07009E30\nstatic const Vtx bitdw_seg7_vertex_07009D50[] = {\n    {{{ -1740,   -306,    922}, 0, {     0,    990}, {0x69, 0x8a, 0x4e, 0xff}}},\n    {{{ -1740,   -204,    307}, 0, {  1502,    734}, {0x69, 0x8a, 0x4e, 0xff}}},\n    {{{ -1740,   -306,    307}, 0, {  1502,    990}, {0x69, 0x8a, 0x4e, 0xff}}},\n    {{{ -1433,   -306,    307}, 0, {  1502,    990}, {0x69, 0x8a, 0x4e, 0xff}}},\n    {{{ -1433,   -204,    307}, 0, {  1502,    734}, {0x69, 0x8a, 0x4e, 0xff}}},\n    {{{ -1433,   -204,    922}, 0, {     0,    734}, {0x69, 0x8a, 0x4e, 0xff}}},\n    {{{ -1433,   -306,    922}, 0, {     0,    990}, {0x69, 0x8a, 0x4e, 0xff}}},\n    {{{ -1125,    -50,    307}, 0, {  1502,    352}, {0x69, 0x8a, 0x4e, 0xff}}},\n    {{{ -1125,     51,    307}, 0, {  1502,     96}, {0x69, 0x8a, 0x4e, 0xff}}},\n    {{{ -1125,     51,    922}, 0, {     0,     96}, {0x69, 0x8a, 0x4e, 0xff}}},\n    {{{ -1125,    -50,    922}, 0, {     0,    352}, {0x69, 0x8a, 0x4e, 0xff}}},\n    {{{ -1433,     51,    614}, 0, {   734,     96}, {0x69, 0x8a, 0x4e, 0xff}}},\n    {{{ -1433,    -50,    614}, 0, {   734,    352}, {0x69, 0x8a, 0x4e, 0xff}}},\n    {{{ -1433,     51,    922}, 0, {     0,     96}, {0x69, 0x8a, 0x4e, 0xff}}},\n};\n\n// 0x07009E30 - 0x07009E90\nstatic const Vtx bitdw_seg7_vertex_07009E30[] = {\n    {{{ -1637,     51,    614}, 0, {   734,     96}, {0x69, 0x8a, 0x4e, 0xff}}},\n    {{{ -1637,    154,    614}, 0, {   734,   -160}, {0x69, 0x8a, 0x4e, 0xff}}},\n    {{{ -1740,    102,    307}, 0, {  1502,      0}, {0x69, 0x8a, 0x4e, 0xff}}},\n    {{{ -1433,    -50,    614}, 0, {   734,    352}, {0x69, 0x8a, 0x4e, 0xff}}},\n    {{{ -1433,    -50,    922}, 0, {     0,    352}, {0x69, 0x8a, 0x4e, 0xff}}},\n    {{{ -1433,     51,    922}, 0, {     0,     96}, {0x69, 0x8a, 0x4e, 0xff}}},\n};\n\n// 0x07009E90 - 0x07009F10\nstatic const Vtx bitdw_seg7_vertex_07009E90[] = {\n    {{{  1638,   1024,    512}, 0, {  2012,    990}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1229,   1024,    512}, 0, {     0,    990}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1229,   1024,   -511}, 0, {     0,  -1566}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1946,   1024,    205}, 0, {  3546,    224}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   922,   1024,    205}, 0, { -1564,    224}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1638,   1024,   -511}, 0, {  2012,  -1566}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1946,   1024,   -204}, 0, {  3546,   -798}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   922,   1024,   -204}, 0, { -1564,   -798}, {0x44, 0x44, 0x44, 0xff}}},\n};\n\n// 0x07009F10 - 0x07009F90\nstatic const Vtx bitdw_seg7_vertex_07009F10[] = {\n    {{{  1229,   1331,   -511}, 0, {  1672,   2692}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1638,   1331,    512}, 0, {   650,    308}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1946,   1331,    205}, 0, {  1672,    308}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1946,   1331,   -204}, 0, {  2352,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1638,   1331,   -511}, 0, {  2352,   2010}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   922,   1331,   -204}, 0, {   650,   2692}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   922,   1331,    205}, 0, {     0,   2010}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1229,   1331,    512}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07009F90 - 0x0700A058\nstatic const Gfx bitdw_seg7_dl_07009F90[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_07009430, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  3,  0, 0x0,  4,  5,  3, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 11, 13, 0x0, 14, 15,  6, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07009530, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  7,  9, 13, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07009610, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A058 - 0x0700A188\nstatic const Gfx bitdw_seg7_dl_0700A058[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bitdw_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_07009690, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07009790, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07009880, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  4,  6, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07009970, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A188 - 0x0700A2B8\nstatic const Gfx bitdw_seg7_dl_0700A188[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_07009A70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07009B60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07009C50, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  0,  5, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 8,  9,  6, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07009D50, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07009E30, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A2B8 - 0x0700A310\nstatic const Gfx bitdw_seg7_dl_0700A2B8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_07009E90, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  5,  6,  2, 0x0),\n    gsSP2Triangles( 6,  3,  2, 0x0,  4,  7,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A310 - 0x0700A368\nstatic const Gfx bitdw_seg7_dl_0700A310[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_07009F10, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  5,  6, 0x0,  0,  7,  1, 0x0),\n    gsSP2Triangles( 0,  6,  7, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A368 - 0x0700A3F8\nconst Gfx bitdw_seg7_dl_0700A368[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitdw_seg7_dl_07009F90),\n    gsSPDisplayList(bitdw_seg7_dl_0700A058),\n    gsSPDisplayList(bitdw_seg7_dl_0700A188),\n    gsSPDisplayList(bitdw_seg7_dl_0700A2B8),\n    gsSPDisplayList(bitdw_seg7_dl_0700A310),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitdw/areas/1/starting_platform/geo.inc.c",
    "content": "// 0x0E0003C0\nconst GeoLayout geo_bitdw_0003C0[] = {\n    GEO_CULLING_RADIUS(2000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitdw_seg7_dl_070028A0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitdw/areas/1/starting_platform/model.inc.c",
    "content": "// 0x07002138 - 0x07002238\nstatic const Vtx bitdw_seg7_vertex_07002138[] = {\n    {{{  -613,    819,    514}, 0, {  1808,    376}, {0x3d, 0x41, 0x74, 0xff}}},\n    {{{  -613,    512,   -509}, 0, {  1808,    990}, {0x3d, 0x41, 0x74, 0xff}}},\n    {{{  -613,    819,   -509}, 0, {  1808,    376}, {0x3d, 0x41, 0x74, 0xff}}},\n    {{{  -613,    512,    514}, 0, {  1808,    990}, {0x3d, 0x41, 0x74, 0xff}}},\n    {{{ -1535,    819,    514}, 0, {  1808,    376}, {0x3d, 0x41, 0x74, 0xff}}},\n    {{{ -1535,    819,   -509}, 0, {  1808,    376}, {0x3d, 0x41, 0x74, 0xff}}},\n    {{{ -1535,    512,   -509}, 0, {  1808,    990}, {0x3d, 0x41, 0x74, 0xff}}},\n    {{{ -1535,    512,    514}, 0, {  1808,    990}, {0x3d, 0x41, 0x74, 0xff}}},\n    {{{  -613,    512,   -509}, 0, {  -882,    990}, {0x51, 0x51, 0xa8, 0xff}}},\n    {{{ -1535,    512,   -509}, 0, {  -882,    990}, {0x51, 0x51, 0xa8, 0xff}}},\n    {{{ -1535,    819,   -509}, 0, {  -882,    376}, {0x51, 0x51, 0xa8, 0xff}}},\n    {{{  -613,    819,   -509}, 0, {  -882,    376}, {0x51, 0x51, 0xa8, 0xff}}},\n    {{{ -1535,    512,    514}, 0, {   820,    990}, {0x51, 0x51, 0xa8, 0xff}}},\n    {{{  -613,    819,    514}, 0, {   820,    376}, {0x51, 0x51, 0xa8, 0xff}}},\n    {{{ -1535,    819,    514}, 0, {   820,    376}, {0x51, 0x51, 0xa8, 0xff}}},\n    {{{  -613,    512,    514}, 0, {   820,    990}, {0x51, 0x51, 0xa8, 0xff}}},\n};\n\n// 0x07002238 - 0x070022F8\nstatic const Vtx bitdw_seg7_vertex_07002238[] = {\n    {{{  1331,    614,     53}, 0, {   480,    990}, {0xbf, 0xd8, 0x8c, 0xff}}},\n    {{{  1741,    614,    -49}, 0, {   -36,      0}, {0xbf, 0xd8, 0x8c, 0xff}}},\n    {{{  1331,    614,    -48}, 0, {     0,    990}, {0xbf, 0xd8, 0x8c, 0xff}}},\n    {{{  1741,    614,     53}, 0, {   480,      0}, {0xbf, 0xd8, 0x8c, 0xff}}},\n    {{{  1253,    512,     53}, 0, {     0,    990}, {0x70, 0x98, 0x75, 0xff}}},\n    {{{  1741,    614,     53}, 0, {   990,   -372}, {0x70, 0x98, 0x75, 0xff}}},\n    {{{  1331,    614,     53}, 0, {   990,    990}, {0x70, 0x98, 0x75, 0xff}}},\n    {{{  1741,    512,     53}, 0, {     0,   -372}, {0x70, 0x98, 0x75, 0xff}}},\n    {{{  1741,    512,    -51}, 0, {     0,   -372}, {0x70, 0x98, 0x75, 0xff}}},\n    {{{  1331,    614,    -48}, 0, {   990,    990}, {0x70, 0x98, 0x75, 0xff}}},\n    {{{  1741,    614,    -49}, 0, {   990,   -372}, {0x70, 0x98, 0x75, 0xff}}},\n    {{{  1253,    512,    -48}, 0, {     0,    990}, {0x70, 0x98, 0x75, 0xff}}},\n};\n\n// 0x070022F8 - 0x070023F8\nstatic const Vtx bitdw_seg7_vertex_070022F8[] = {\n    {{{   717,    614,   -304}, 0, {   982,   3024}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{   717,    717,   -304}, 0, {  1236,   2768}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{   717,    717,    309}, 0, {  -294,   1234}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{   717,    614,    309}, 0, {  -550,   1490}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{   102,    717,    309}, 0, {  -294,   1234}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{   102,    819,   -305}, 0, {  1496,   2516}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{   102,    819,    309}, 0, {   -38,    982}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{   102,    717,   -305}, 0, {  1240,   2770}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{   102,    819,   -305}, 0, {  5590,  -1054}, {0x83, 0x91, 0x80, 0xff}}},\n    {{{  -613,   -716,   -304}, 0, {     0,    990}, {0x83, 0x91, 0x80, 0xff}}},\n    {{{  -613,    819,   -304}, 0, {  3800,  -2842}, {0x83, 0x91, 0x80, 0xff}}},\n    {{{ -1125,    512,   -304}, 0, {  1756,  -3354}, {0x83, 0x91, 0x80, 0xff}}},\n    {{{  -613,    512,   -304}, 0, {  3034,  -2076}, {0x83, 0x91, 0x80, 0xff}}},\n    {{{   717,    614,   -304}, 0, {  6612,    990}, {0x83, 0x91, 0x80, 0xff}}},\n    {{{   102,    717,   -305}, 0, {  5334,   -798}, {0x83, 0x91, 0x80, 0xff}}},\n    {{{   307,   -716,   -304}, 0, {  2268,   3288}, {0x83, 0x91, 0x80, 0xff}}},\n};\n\n// 0x070023F8 - 0x070024F8\nstatic const Vtx bitdw_seg7_vertex_070023F8[] = {\n    {{{  -613,   -716,   -304}, 0, {  1500,   -542}, {0x83, 0x91, 0x80, 0xff}}},\n    {{{   102,    819,   -305}, 0, {  2864,   3202}, {0x83, 0x91, 0x80, 0xff}}},\n    {{{   102,    717,   -305}, 0, {  2694,   3032}, {0x83, 0x91, 0x80, 0xff}}},\n    {{{   717,    614,   -304}, 0, {  1500,   3884}, {0x83, 0x91, 0x80, 0xff}}},\n    {{{   717,    717,   -304}, 0, {  1672,   4054}, {0x83, 0x91, 0x80, 0xff}}},\n    {{{  -613,    819,    309}, 0, {  3800,  -2842}, {0x83, 0x91, 0x80, 0xff}}},\n    {{{  -613,   -716,    309}, 0, {     0,    990}, {0x83, 0x91, 0x80, 0xff}}},\n    {{{   102,    819,    309}, 0, {  5590,  -1054}, {0x83, 0x91, 0x80, 0xff}}},\n    {{{   717,    614,   -304}, 0, {  6612,    990}, {0x83, 0x91, 0x80, 0xff}}},\n    {{{  1331,    614,   -304}, 0, {  8144,   2522}, {0x83, 0x91, 0x80, 0xff}}},\n    {{{   307,   -716,   -304}, 0, {  2268,   3288}, {0x83, 0x91, 0x80, 0xff}}},\n    {{{   717,    614,    309}, 0, {  6612,    990}, {0x83, 0x91, 0x80, 0xff}}},\n    {{{   102,    717,    309}, 0, {  5334,   -798}, {0x83, 0x91, 0x80, 0xff}}},\n    {{{   717,    717,    309}, 0, {  6866,    734}, {0x83, 0x91, 0x80, 0xff}}},\n    {{{  1331,    614,    309}, 0, {  8144,   2522}, {0x83, 0x91, 0x80, 0xff}}},\n    {{{   307,   -716,    309}, 0, {  2268,   3288}, {0x83, 0x91, 0x80, 0xff}}},\n};\n\n// 0x070024F8 - 0x070025D8\nstatic const Vtx bitdw_seg7_vertex_070024F8[] = {\n    {{{  -613,    512,    309}, 0, {  3034,  -2076}, {0x83, 0x91, 0x80, 0xff}}},\n    {{{ -1125,    512,    309}, 0, {  1756,  -3354}, {0x83, 0x91, 0x80, 0xff}}},\n    {{{  -613,   -716,    309}, 0, {     0,    990}, {0x83, 0x91, 0x80, 0xff}}},\n    {{{  -613,   -716,    309}, 0, {   480,   1498}, {0x83, 0x91, 0x80, 0xff}}},\n    {{{   102,    717,    309}, 0, {  -712,  -2076}, {0x83, 0x91, 0x80, 0xff}}},\n    {{{   102,    819,    309}, 0, {  -882,  -2246}, {0x83, 0x91, 0x80, 0xff}}},\n    {{{   307,   -716,   -304}, 0, { -2338,   6344}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{  1331,    614,   -304}, 0, {   982,   3024}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{  1331,    614,    309}, 0, {  -550,   1490}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{   307,   -716,    309}, 0, { -3872,   4812}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{   717,    717,   -304}, 0, {  4822,   -798}, {0xcd, 0xdf, 0xcc, 0xff}}},\n    {{{   102,    717,    309}, 0, {  1756,   -798}, {0xcd, 0xdf, 0xcc, 0xff}}},\n    {{{   717,    717,    309}, 0, {  3290,  -2332}, {0xcd, 0xdf, 0xcc, 0xff}}},\n    {{{   102,    717,   -304}, 0, {  3290,    734}, {0xcd, 0xdf, 0xcc, 0xff}}},\n};\n\n// 0x070025D8 - 0x07002658\nstatic const Vtx bitdw_seg7_vertex_070025D8[] = {\n    {{{  1331,    614,   -304}, 0, {  6356,  -2332}, {0xcd, 0xdf, 0xcc, 0xff}}},\n    {{{   717,    614,   -304}, 0, {  4822,   -798}, {0xcd, 0xdf, 0xcc, 0xff}}},\n    {{{   717,    614,    309}, 0, {  3290,  -2332}, {0xcd, 0xdf, 0xcc, 0xff}}},\n    {{{  1331,    614,    309}, 0, {  4822,  -3864}, {0xcd, 0xdf, 0xcc, 0xff}}},\n    {{{   102,    819,   -304}, 0, {  3290,    734}, {0xcd, 0xdf, 0xcc, 0xff}}},\n    {{{  -613,    819,    309}, 0, {     0,    990}, {0xcd, 0xdf, 0xcc, 0xff}}},\n    {{{   102,    819,    309}, 0, {  1756,   -798}, {0xcd, 0xdf, 0xcc, 0xff}}},\n    {{{  -613,    819,   -304}, 0, {  1502,   2522}, {0xcd, 0xdf, 0xcc, 0xff}}},\n};\n\n// 0x07002658 - 0x07002698\nstatic const Vtx bitdw_seg7_vertex_07002658[] = {\n    {{{  -613,    819,   -509}, 0, {  4566,  -4120}, {0x79, 0x9f, 0xeb, 0xff}}},\n    {{{ -1535,    819,   -509}, 0, {     0,  -4120}, {0x79, 0x9f, 0xeb, 0xff}}},\n    {{{ -1535,    819,    514}, 0, {     0,    990}, {0x79, 0x9f, 0xeb, 0xff}}},\n    {{{  -613,    819,    514}, 0, {  4568,    990}, {0x79, 0x9f, 0xeb, 0xff}}},\n};\n\n// 0x07002698 - 0x07002700\nstatic const Gfx bitdw_seg7_dl_07002698[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_07002138, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07002700 - 0x07002758\nstatic const Gfx bitdw_seg7_dl_07002700[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_07002238, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07002758 - 0x07002868\nstatic const Gfx bitdw_seg7_dl_07002758[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_070022F8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 12, 0x0),\n    gsSP2Triangles(13,  9, 14, 0x0,  9, 13, 15, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_070023F8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 6, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(14, 11, 15, 0x0, 11,  6, 15, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_070024F8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_070025D8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07002868 - 0x070028A0\nstatic const Gfx bitdw_seg7_dl_07002868[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_07002658, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070028A0 - 0x07002928\nconst Gfx bitdw_seg7_dl_070028A0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitdw_seg7_dl_07002698),\n    gsSPDisplayList(bitdw_seg7_dl_07002700),\n    gsSPDisplayList(bitdw_seg7_dl_07002758),\n    gsSPDisplayList(bitdw_seg7_dl_07002868),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitdw/areas/1/track_for_pyramid_platforms/geo.inc.c",
    "content": "// 0x0E0004F8\nconst GeoLayout geo_bitdw_0004F8[] = {\n    GEO_CULLING_RADIUS(1100),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bitdw_seg7_dl_0700A6A8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitdw/areas/1/track_for_pyramid_platforms/model.inc.c",
    "content": "// 0x0700A3F8 - 0x0700A4F8\nstatic const Vtx bitdw_seg7_vertex_0700A3F8[] = {\n    {{{  -562,     57,   -568}, 0, {   260,  -6504}, {0xe6, 0xee, 0x91, 0xff}}},\n    {{{   614,     57,   -620}, 0, {   -76,   1328}, {0xe6, 0xee, 0x91, 0xff}}},\n    {{{  -613,     57,   -620}, 0, {   -76,  -6846}, {0xe6, 0xee, 0x91, 0xff}}},\n    {{{   563,     57,    558}, 0, {   260,    990}, {0xe6, 0xee, 0x91, 0xff}}},\n    {{{  -562,     57,    558}, 0, {   260,   8482}, {0xe6, 0xee, 0x91, 0xff}}},\n    {{{  -613,     57,    609}, 0, {   -76,   8824}, {0xe6, 0xee, 0x91, 0xff}}},\n    {{{   614,     57,    609}, 0, {   -76,    650}, {0xe6, 0xee, 0x91, 0xff}}},\n    {{{   563,     57,   -568}, 0, {   260,  -8208}, {0xe6, 0xee, 0x91, 0xff}}},\n    {{{   614,     57,    609}, 0, {   -76,    990}, {0xe6, 0xee, 0x91, 0xff}}},\n    {{{   614,     57,   -620}, 0, {   -76,  -8548}, {0xe6, 0xee, 0x91, 0xff}}},\n    {{{   563,     57,    558}, 0, {   260,    650}, {0xe6, 0xee, 0x91, 0xff}}},\n    {{{  -613,     57,    609}, 0, {   -76,    990}, {0xe6, 0xee, 0x91, 0xff}}},\n    {{{  -562,     57,    558}, 0, {   260,   1328}, {0xe6, 0xee, 0x91, 0xff}}},\n    {{{  -562,     57,   -568}, 0, {   260,  10186}, {0xe6, 0xee, 0x91, 0xff}}},\n    {{{  -613,     57,   -620}, 0, {   -76,  10526}, {0xe6, 0xee, 0x91, 0xff}}},\n    {{{   563,     57,   -568}, 0, {   260,    990}, {0xe6, 0xee, 0x91, 0xff}}},\n};\n\n// 0x0700A4F8 - 0x0700A5F8\nstatic const Vtx bitdw_seg7_vertex_0700A4F8[] = {\n    {{{   563,     57,    558}, 0, {   404,   1328}, {0xb7, 0xc2, 0x52, 0xff}}},\n    {{{   512,      0,    513}, 0, {   -76,    990}, {0xb7, 0xc2, 0x52, 0xff}}},\n    {{{  -511,      0,    513}, 0, {   -76,  -5824}, {0xb7, 0xc2, 0x52, 0xff}}},\n    {{{  -562,     57,    558}, 0, {   404,  -6164}, {0xb7, 0xc2, 0x52, 0xff}}},\n    {{{  -562,     57,   -568}, 0, {   460,    650}, {0xb7, 0xc2, 0x52, 0xff}}},\n    {{{   512,      0,   -511}, 0, {   -76,   7802}, {0xb7, 0xc2, 0x52, 0xff}}},\n    {{{   563,     57,   -568}, 0, {   460,   8142}, {0xb7, 0xc2, 0x52, 0xff}}},\n    {{{  -511,      0,   -511}, 0, {   -76,    990}, {0xb7, 0xc2, 0x52, 0xff}}},\n    {{{   563,     57,   -568}, 0, {   432,    982}, {0x8e, 0xac, 0x52, 0xff}}},\n    {{{   512,      0,    513}, 0, {   -76,   9538}, {0x8e, 0xac, 0x52, 0xff}}},\n    {{{   563,     57,    558}, 0, {   432,   9838}, {0x8e, 0xac, 0x52, 0xff}}},\n    {{{   512,      0,   -511}, 0, {   -76,   1362}, {0x8e, 0xac, 0x52, 0xff}}},\n    {{{  -511,      0,    513}, 0, {   -76,    956}, {0x8e, 0xac, 0x52, 0xff}}},\n    {{{  -511,      0,   -511}, 0, {   -76,  -7220}, {0x8e, 0xac, 0x52, 0xff}}},\n    {{{  -562,     57,   -568}, 0, {   432,  -7602}, {0x8e, 0xac, 0x52, 0xff}}},\n    {{{  -562,     57,    558}, 0, {   432,   1254}, {0x8e, 0xac, 0x52, 0xff}}},\n};\n\n// 0x0700A5F8 - 0x0700A6A8\nstatic const Gfx bitdw_seg7_dl_0700A5F8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_0700A3F8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_0700A4F8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 15, 12, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A6A8 - 0x0700A718\nconst Gfx bitdw_seg7_dl_0700A6A8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitdw_seg7_dl_0700A5F8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitdw/areas/1/wooden_bridge_and_fences/geo.inc.c",
    "content": "// 0x0E0003F0\nconst GeoLayout geo_bitdw_0003F0[] = {\n    GEO_CULLING_RADIUS(2000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bitdw_seg7_dl_07003608),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitdw/areas/1/wooden_bridge_and_fences/model.inc.c",
    "content": "// 0x07003370 - 0x07003460\nstatic const Vtx bitdw_seg7_vertex_07003370[] = {\n    {{{    51,    410,  -1228}, 0, {   912,    -30}, {0xaf, 0xce, 0x16, 0xff}}},\n    {{{ -1021,    492,  -1393}, 0, {-10012,    -24}, {0xaf, 0xce, 0x16, 0xff}}},\n    {{{ -1021,    390,  -1393}, 0, { -9878,    990}, {0xaf, 0xce, 0x16, 0xff}}},\n    {{{    51,    410,  -1228}, 0, {   990,      0}, {0xaf, 0xce, 0x16, 0xff}}},\n    {{{   256,    307,   -818}, 0, { -3578,    990}, {0xaf, 0xce, 0x16, 0xff}}},\n    {{{   264,    409,   -818}, 0, { -3614,    -28}, {0xaf, 0xce, 0x16, 0xff}}},\n    {{{    51,    307,  -1228}, 0, {   990,    990}, {0xaf, 0xce, 0x16, 0xff}}},\n    {{{   264,    409,   -818}, 0, {   786,      0}, {0xaf, 0xce, 0x16, 0xff}}},\n    {{{   162,    417,   -818}, 0, {  -234,      0}, {0xaf, 0xce, 0x16, 0xff}}},\n    {{{   154,    315,   -818}, 0, {  -234,    990}, {0xaf, 0xce, 0x16, 0xff}}},\n    {{{   256,    307,   -818}, 0, {   786,    990}, {0xaf, 0xce, 0x16, 0xff}}},\n    {{{  -146,    441,   -818}, 0, {   800,    -30}, {0xaf, 0xce, 0x16, 0xff}}},\n    {{{ -1074,    512,   -818}, 0, { -8488,    -28}, {0xaf, 0xce, 0x16, 0xff}}},\n    {{{ -1074,    410,   -818}, 0, { -8410,    990}, {0xaf, 0xce, 0x16, 0xff}}},\n    {{{  -146,    338,   -818}, 0, {   878,    990}, {0xaf, 0xce, 0x16, 0xff}}},\n};\n\n// 0x07003460 - 0x070034E0\nstatic const Vtx bitdw_seg7_vertex_07003460[] = {\n    {{{  -153,    205,   -818}, 0, {   990,    990}, {0xdf, 0xbf, 0x1f, 0xff}}},\n    {{{  -153,   -442,   1090}, 0, { -9072,    990}, {0xdf, 0xbf, 0x1f, 0xff}}},\n    {{{  -153,   -215,   1058}, 0, { -8900,    -86}, {0xdf, 0xbf, 0x1f, 0xff}}},\n    {{{  -146,    441,   -818}, 0, {   990,      0}, {0xdf, 0xbf, 0x1f, 0xff}}},\n    {{{   154,   -215,   1058}, 0, { -8900,    -86}, {0xdf, 0xbf, 0x1f, 0xff}}},\n    {{{   154,   -442,   1090}, 0, { -9070,    990}, {0xdf, 0xbf, 0x1f, 0xff}}},\n    {{{   162,    417,   -818}, 0, {   990,      0}, {0xdf, 0xbf, 0x1f, 0xff}}},\n    {{{   154,    205,   -818}, 0, {   990,    990}, {0xdf, 0xbf, 0x1f, 0xff}}},\n};\n\n// 0x070034E0 - 0x07003520\nstatic const Vtx bitdw_seg7_vertex_070034E0[] = {\n    {{{   154,   -306,   1024}, 0, {     0,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   154,    315,   -818}, 0, {  6440,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -146,    338,   -818}, 0, {  6464,    972}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -153,   -306,   1024}, 0, {     0,    988}, {0xff, 0xd4, 0x00, 0xff}}},\n};\n\n// 0x07003520 - 0x07003588\nstatic const Gfx bitdw_seg7_dl_07003520[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_07003370, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07003588 - 0x070035D0\nstatic const Gfx bitdw_seg7_dl_07003588[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09006000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_07003460, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070035D0 - 0x07003608\nstatic const Gfx bitdw_seg7_dl_070035D0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_070034E0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07003608 - 0x07003688\nconst Gfx bitdw_seg7_dl_07003608[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitdw_seg7_dl_07003520),\n    gsSPDisplayList(bitdw_seg7_dl_07003588),\n    gsSPDisplayList(bitdw_seg7_dl_070035D0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitdw/areas/1/wooden_platform/geo.inc.c",
    "content": "// 0x0E000480\nconst GeoLayout geo_bitdw_000480[] = {\n    GEO_CULLING_RADIUS(1500),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitdw_seg7_dl_070065F0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitdw/areas/1/wooden_platform/model.inc.c",
    "content": "// 0x07005C40 - 0x07005D40\nstatic const Vtx bitdw_seg7_vertex_07005C40[] = {\n    {{{  -153,    435,   -716}, 0, {  1672,  -1054}, {0xff, 0xff, 0xa8, 0xff}}},\n    {{{  -562,    435,   -716}, 0, {   308,  -1054}, {0xff, 0xff, 0xa8, 0xff}}},\n    {{{  -869,    435,   -409}, 0, {  -712,   -616}, {0xff, 0xff, 0xa8, 0xff}}},\n    {{{   154,    435,   -409}, 0, {  2694,   -616}, {0xff, 0xff, 0xa8, 0xff}}},\n    {{{   154,    435,    410}, 0, {  2694,    552}, {0xff, 0xff, 0xa8, 0xff}}},\n    {{{  -869,    435,    410}, 0, {  -712,    552}, {0xff, 0xff, 0xa8, 0xff}}},\n    {{{  -562,    435,    717}, 0, {   308,    990}, {0xff, 0xff, 0xa8, 0xff}}},\n    {{{  -153,    435,    717}, 0, {  1672,    990}, {0xff, 0xff, 0xa8, 0xff}}},\n    {{{  -869,    128,   -409}, 0, {  -712,   -616}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{   154,    128,   -409}, 0, {  2694,   -616}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{   154,    128,    410}, 0, {  2694,    552}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  -562,    128,    717}, 0, {   308,    990}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  -869,    128,    410}, 0, {  -712,    552}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  -562,    128,   -716}, 0, {   308,  -1054}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  -153,    128,   -716}, 0, {  1672,  -1054}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  -153,    128,    717}, 0, {  1672,    990}, {0x52, 0x70, 0xac, 0xff}}},\n};\n\n// 0x07005D40 - 0x07005E40\nstatic const Vtx bitdw_seg7_vertex_07005D40[] = {\n    {{{   358,    333,   -306}, 0, {  1864,    160}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{   672,    218,   -306}, 0, {  1150,    490}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{   672,     13,   -306}, 0, {   808,    150}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{  1178,    218,   -306}, 0, {   308,   1328}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{  1178,     13,   -306}, 0, {     0,    990}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{   154,    128,   -306}, 0, {  1864,   -522}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{   672,     13,    307}, 0, {   808,    150}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{  1178,     13,    307}, 0, {     0,    990}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{  1178,    218,    307}, 0, {   308,   1328}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{   672,    218,    307}, 0, {  1150,    490}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{   154,    128,    307}, 0, {  1864,   -522}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{   358,    333,    307}, 0, {  1864,    160}, {0x7c, 0x89, 0x79, 0xff}}},\n    {{{  1178,     13,   -306}, 0, {  1160,   1840}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{  1178,    218,   -306}, 0, {  1502,   1498}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{  1178,    218,    307}, 0, {   478,    478}, {0x68, 0x7b, 0x6e, 0xff}}},\n    {{{  1178,     13,    307}, 0, {   138,    820}, {0x68, 0x7b, 0x6e, 0xff}}},\n};\n\n// 0x07005E40 - 0x07005F20\nstatic const Vtx bitdw_seg7_vertex_07005E40[] = {\n    {{{   672,     13,   -306}, 0, {   150,   1828}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{  1178,     13,    307}, 0, {     0,      0}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{   672,     13,    307}, 0, {  -870,    808}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{   154,    128,   -306}, 0, {  -712,   2692}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{  1178,     13,   -306}, 0, {   990,    990}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{   154,    128,    307}, 0, { -1734,   1670}, {0x38, 0x4a, 0x3d, 0xff}}},\n    {{{   672,    218,    307}, 0, {  -870,    808}, {0xcd, 0xdf, 0xcc, 0xff}}},\n    {{{  1178,    218,    307}, 0, {     0,      0}, {0xcd, 0xdf, 0xcc, 0xff}}},\n    {{{  1178,    218,   -306}, 0, {   990,    990}, {0xcd, 0xdf, 0xcc, 0xff}}},\n    {{{   672,    218,   -306}, 0, {   150,   1828}, {0xcd, 0xdf, 0xcc, 0xff}}},\n    {{{   358,    333,    307}, 0, { -1392,   1328}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{   672,    218,   -306}, 0, {   150,   1828}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{   358,    333,   -306}, 0, {  -370,   2350}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{   672,    218,    307}, 0, {  -870,    808}, {0xb7, 0xcd, 0xba, 0xff}}},\n};\n\n// 0x07005F20 - 0x07006010\nstatic const Vtx bitdw_seg7_vertex_07005F20[] = {\n    {{{  -665,    333,   -921}, 0, {     0,    990}, {0xc7, 0xee, 0xff, 0xff}}},\n    {{{  -562,    435,   -716}, 0, {   308,      0}, {0xc7, 0xee, 0xff, 0xff}}},\n    {{{  -153,    435,   -716}, 0, {   990,      0}, {0xc7, 0xee, 0xff, 0xff}}},\n    {{{   -50,    333,   -921}, 0, {   990,    990}, {0xc7, 0xee, 0xff, 0xff}}},\n    {{{  -665,    333,    922}, 0, {   990,    990}, {0xc7, 0xee, 0xff, 0xff}}},\n    {{{   -50,    333,    922}, 0, {     0,    990}, {0xc7, 0xee, 0xff, 0xff}}},\n    {{{  -562,    435,    717}, 0, {   820,    -26}, {0xc7, 0xee, 0xff, 0xff}}},\n    {{{  -153,    435,    717}, 0, {   138,    -26}, {0xc7, 0xee, 0xff, 0xff}}},\n    {{{  -665,    333,    922}, 0, {     0,    990}, {0xa0, 0xd8, 0xff, 0xff}}},\n    {{{  -562,    435,    717}, 0, {    96,    -30}, {0xa0, 0xd8, 0xff, 0xff}}},\n    {{{  -869,    435,    410}, 0, {   862,    -30}, {0xa0, 0xd8, 0xff, 0xff}}},\n    {{{  -562,    435,   -716}, 0, {   990,      0}, {0xa0, 0xd8, 0xff, 0xff}}},\n    {{{  -665,    333,   -921}, 0, {   990,    990}, {0xa0, 0xd8, 0xff, 0xff}}},\n    {{{ -1074,    333,   -511}, 0, {     0,    990}, {0xa0, 0xd8, 0xff, 0xff}}},\n    {{{  -869,    435,   -409}, 0, {   224,      0}, {0xa0, 0xd8, 0xff, 0xff}}},\n};\n\n// 0x07006010 - 0x070060F0\nstatic const Vtx bitdw_seg7_vertex_07006010[] = {\n    {{{   -50,    333,   -921}, 0, {     0,    990}, {0xa0, 0xd8, 0xff, 0xff}}},\n    {{{  -153,    435,   -716}, 0, {    96,    -30}, {0xa0, 0xd8, 0xff, 0xff}}},\n    {{{   154,    435,   -409}, 0, {   862,    -30}, {0xa0, 0xd8, 0xff, 0xff}}},\n    {{{   358,    333,   -511}, 0, {   990,    990}, {0xa0, 0xd8, 0xff, 0xff}}},\n    {{{  -153,    435,    717}, 0, {   990,      0}, {0xa0, 0xd8, 0xff, 0xff}}},\n    {{{   -50,    333,    922}, 0, {   990,    990}, {0xa0, 0xd8, 0xff, 0xff}}},\n    {{{   358,    333,    512}, 0, {     0,    990}, {0xa0, 0xd8, 0xff, 0xff}}},\n    {{{   154,    435,    410}, 0, {   224,      0}, {0xa0, 0xd8, 0xff, 0xff}}},\n    {{{ -1074,    333,    512}, 0, {   990,    990}, {0xa0, 0xd8, 0xff, 0xff}}},\n    {{{  -665,    333,    922}, 0, {     0,    990}, {0xa0, 0xd8, 0xff, 0xff}}},\n    {{{  -869,    435,    410}, 0, {   862,    -30}, {0xa0, 0xd8, 0xff, 0xff}}},\n    {{{  -869,    435,    410}, 0, {   308,      0}, {0x82, 0xc2, 0xff, 0xff}}},\n    {{{  -869,    435,   -409}, 0, {   990,      0}, {0x82, 0xc2, 0xff, 0xff}}},\n    {{{ -1074,    333,   -511}, 0, {   990,    990}, {0x82, 0xc2, 0xff, 0xff}}},\n};\n\n// 0x070060F0 - 0x070061E0\nstatic const Vtx bitdw_seg7_vertex_070060F0[] = {\n    {{{  -562,    128,    717}, 0, {   820,    584}, {0x82, 0xc2, 0xff, 0xff}}},\n    {{{  -153,    128,    717}, 0, {   138,    584}, {0x82, 0xc2, 0xff, 0xff}}},\n    {{{   -50,    333,    922}, 0, {     0,    990}, {0x82, 0xc2, 0xff, 0xff}}},\n    {{{  -665,    333,    922}, 0, {   990,    990}, {0x82, 0xc2, 0xff, 0xff}}},\n    {{{  -153,    128,   -716}, 0, {   888,    582}, {0x82, 0xc2, 0xff, 0xff}}},\n    {{{  -665,    333,   -921}, 0, {     0,    990}, {0x82, 0xc2, 0xff, 0xff}}},\n    {{{   -50,    333,   -921}, 0, {   990,    990}, {0x82, 0xc2, 0xff, 0xff}}},\n    {{{  -562,    128,   -716}, 0, {   206,    582}, {0x82, 0xc2, 0xff, 0xff}}},\n    {{{   358,    333,   -511}, 0, {     0,    990}, {0x82, 0xc2, 0xff, 0xff}}},\n    {{{   154,    435,   -409}, 0, {   138,    -48}, {0x82, 0xc2, 0xff, 0xff}}},\n    {{{   358,    333,    512}, 0, {   990,    990}, {0x82, 0xc2, 0xff, 0xff}}},\n    {{{   154,    435,    410}, 0, {   820,    -48}, {0x82, 0xc2, 0xff, 0xff}}},\n    {{{ -1074,    333,    512}, 0, {     0,    990}, {0x82, 0xc2, 0xff, 0xff}}},\n    {{{  -869,    435,    410}, 0, {   308,      0}, {0x82, 0xc2, 0xff, 0xff}}},\n    {{{ -1074,    333,   -511}, 0, {   990,    990}, {0x82, 0xc2, 0xff, 0xff}}},\n};\n\n// 0x070061E0 - 0x070062E0\nstatic const Vtx bitdw_seg7_vertex_070061E0[] = {\n    {{{  -869,    128,    410}, 0, {   862,    526}, {0x69, 0xb4, 0xff, 0xff}}},\n    {{{  -665,    333,    922}, 0, {     0,    990}, {0x69, 0xb4, 0xff, 0xff}}},\n    {{{ -1074,    333,    512}, 0, {   990,    990}, {0x69, 0xb4, 0xff, 0xff}}},\n    {{{  -562,    128,    717}, 0, {    96,    526}, {0x69, 0xb4, 0xff, 0xff}}},\n    {{{   358,    333,    512}, 0, {     0,    990}, {0x69, 0xb4, 0xff, 0xff}}},\n    {{{  -153,    128,    717}, 0, {   920,    526}, {0x69, 0xb4, 0xff, 0xff}}},\n    {{{   154,    128,    410}, 0, {   154,    526}, {0x69, 0xb4, 0xff, 0xff}}},\n    {{{   -50,    333,    922}, 0, {   990,    990}, {0x69, 0xb4, 0xff, 0xff}}},\n    {{{   154,    128,   -409}, 0, {   862,    526}, {0x69, 0xb4, 0xff, 0xff}}},\n    {{{  -153,    128,   -716}, 0, {    96,    526}, {0x69, 0xb4, 0xff, 0xff}}},\n    {{{   -50,    333,   -921}, 0, {     0,    990}, {0x69, 0xb4, 0xff, 0xff}}},\n    {{{   358,    333,   -511}, 0, {   990,    990}, {0x69, 0xb4, 0xff, 0xff}}},\n    {{{ -1074,    333,   -511}, 0, {     0,    990}, {0x69, 0xb4, 0xff, 0xff}}},\n    {{{  -562,    128,   -716}, 0, {   920,    526}, {0x69, 0xb4, 0xff, 0xff}}},\n    {{{  -869,    128,   -409}, 0, {   154,    526}, {0x69, 0xb4, 0xff, 0xff}}},\n    {{{  -665,    333,   -921}, 0, {   990,    990}, {0x69, 0xb4, 0xff, 0xff}}},\n};\n\n// 0x070062E0 - 0x07006360\nstatic const Vtx bitdw_seg7_vertex_070062E0[] = {\n    {{{   358,    333,    512}, 0, {     0,    990}, {0x5f, 0x9c, 0xff, 0xff}}},\n    {{{   154,    128,    410}, 0, {   206,    582}, {0x5f, 0x9c, 0xff, 0xff}}},\n    {{{   358,    333,   -511}, 0, {   990,    990}, {0x5f, 0x9c, 0xff, 0xff}}},\n    {{{   154,    128,   -409}, 0, {   888,    582}, {0x5f, 0x9c, 0xff, 0xff}}},\n    {{{ -1074,    333,   -511}, 0, {   990,    990}, {0x5f, 0x9c, 0xff, 0xff}}},\n    {{{  -869,    128,    410}, 0, {   206,    582}, {0x5f, 0x9c, 0xff, 0xff}}},\n    {{{ -1074,    333,    512}, 0, {     0,    990}, {0x5f, 0x9c, 0xff, 0xff}}},\n    {{{  -869,    128,   -409}, 0, {   888,    582}, {0x5f, 0x9c, 0xff, 0xff}}},\n};\n\n// 0x07006360 - 0x070063E8\nstatic const Gfx bitdw_seg7_dl_07006360[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_07005C40, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  3,  2, 0x0,  5,  6,  2, 0x0),\n    gsSP2Triangles( 6,  7,  2, 0x0,  7,  4,  2, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11, 12, 0x0),\n    gsSP2Triangles( 8, 13, 14, 0x0,  8, 15, 11, 0x0),\n    gsSP2Triangles( 8, 14,  9, 0x0,  8, 10, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070063E8 - 0x070064A8\nstatic const Gfx bitdw_seg7_dl_070063E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_07005D40, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10,  6,  9, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07005E40, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  3,  2,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070064A8 - 0x070065F0\nstatic const Gfx bitdw_seg7_dl_070064A8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bitdw_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_07005F20, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 11, 13, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_07006010, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_070060F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_070061E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_070062E0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070065F0 - 0x07006670\nconst Gfx bitdw_seg7_dl_070065F0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitdw_seg7_dl_07006360),\n    gsSPDisplayList(bitdw_seg7_dl_070063E8),\n    gsSPDisplayList(bitdw_seg7_dl_070064A8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitdw/collapsing_stairs_1/collision.inc.c",
    "content": "// 0x0700F91C - 0x0700FA3C\nconst Collision bitdw_seg7_collision_0700F91C[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x14),\n    COL_VERTEX(-409, 512, 307),\n    COL_VERTEX(-716, 512, 307),\n    COL_VERTEX(-716, 256, 307),\n    COL_VERTEX(-716, 512, -306),\n    COL_VERTEX(-716, 256, -306),\n    COL_VERTEX(-409, 512, -306),\n    COL_VERTEX(-409, 768, 307),\n    COL_VERTEX(-409, 768, -306),\n    COL_VERTEX(-101, 768, -306),\n    COL_VERTEX(-101, 768, 307),\n    COL_VERTEX(-1023, 256, 307),\n    COL_VERTEX(-1023, 0, 307),\n    COL_VERTEX(-101, 1024, 307),\n    COL_VERTEX(205, 1024, 307),\n    COL_VERTEX(-1023, 0, -306),\n    COL_VERTEX(-1637, 0, -306),\n    COL_VERTEX(-1637, 0, 307),\n    COL_VERTEX(-101, 1024, -306),\n    COL_VERTEX(205, 1024, -306),\n    COL_VERTEX(-1023, 256, -306),\n    COL_TRI_INIT(SURFACE_DEFAULT, 26),\n    COL_TRI(0, 1, 2),\n    COL_TRI(2, 3, 4),\n    COL_TRI(2, 1, 3),\n    COL_TRI(5, 1, 0),\n    COL_TRI(5, 3, 1),\n    COL_TRI(6, 5, 0),\n    COL_TRI(6, 7, 5),\n    COL_TRI(5, 7, 8),\n    COL_TRI(4, 3, 5),\n    COL_TRI(6, 0, 9),\n    COL_TRI(9, 7, 6),\n    COL_TRI(9, 8, 7),\n    COL_TRI(10, 11, 2),\n    COL_TRI(10, 14, 11),\n    COL_TRI(11, 14, 15),\n    COL_TRI(11, 15, 16),\n    COL_TRI(12, 8, 9),\n    COL_TRI(12, 17, 8),\n    COL_TRI(8, 17, 18),\n    COL_TRI(13, 17, 12),\n    COL_TRI(13, 18, 17),\n    COL_TRI(12, 9, 13),\n    COL_TRI(10, 19, 14),\n    COL_TRI(14, 19, 4),\n    COL_TRI(2, 19, 10),\n    COL_TRI(2, 4, 19),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bitdw/collapsing_stairs_1/geo.inc.c",
    "content": "// 0x0E0005A0\nconst GeoLayout geo_bitdw_0005A0[] = {\n    GEO_CULLING_RADIUS(2000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitdw_seg7_dl_0700C0E0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitdw/collapsing_stairs_1/model.inc.c",
    "content": "// 0x0700BBC8 - 0x0700BCA8\nstatic const Vtx bitdw_seg7_vertex_0700BBC8[] = {\n    {{{  -716,    256,    307}, 0, {  1948,      0}, {0x65, 0xff, 0xb2, 0xff}}},\n    {{{  -716,    256,   -306}, 0, {    32,      0}, {0x65, 0xff, 0xb2, 0xff}}},\n    {{{ -1023,    256,   -306}, 0, {    32,    926}, {0x65, 0xff, 0xb2, 0xff}}},\n    {{{ -1023,    256,    307}, 0, {  1948,    926}, {0x65, 0xff, 0xb2, 0xff}}},\n    {{{ -1023,    256,    307}, 0, {  1948,    926}, {0x52, 0xac, 0x7f, 0xff}}},\n    {{{ -1023,    256,   -306}, 0, {    32,    926}, {0x52, 0xac, 0x7f, 0xff}}},\n    {{{ -1023,      0,   -306}, 0, {    32,    926}, {0x52, 0xac, 0x7f, 0xff}}},\n    {{{ -1023,      0,    307}, 0, {  1948,    926}, {0x52, 0xac, 0x7f, 0xff}}},\n    {{{ -1023,      0,   -306}, 0, {    32,    926}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{ -1023,    256,   -306}, 0, {    32,    926}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{  -716,    256,   -306}, 0, {    32,      0}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{ -1023,    256,    307}, 0, {  1948,    926}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{ -1023,      0,    307}, 0, {  1948,    926}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{  -716,    256,    307}, 0, {  1948,      0}, {0x3f, 0xbf, 0x7f, 0xff}}},\n};\n\n// 0x0700BCA8 - 0x0700BD98\nstatic const Vtx bitdw_seg7_vertex_0700BCA8[] = {\n    {{{  -409,    512,   -306}, 0, {    32,      0}, {0x65, 0xff, 0xcc, 0xff}}},\n    {{{  -716,    512,    307}, 0, {  1948,    926}, {0x65, 0xff, 0xcc, 0xff}}},\n    {{{  -409,    512,    307}, 0, {  1948,      0}, {0x65, 0xff, 0xcc, 0xff}}},\n    {{{  -716,    512,   -306}, 0, {    32,    926}, {0x65, 0xff, 0xcc, 0xff}}},\n    {{{  -101,    768,    307}, 0, {  1948,      0}, {0x65, 0xff, 0xe5, 0xff}}},\n    {{{  -409,    768,   -306}, 0, {    32,    926}, {0x65, 0xff, 0xe5, 0xff}}},\n    {{{  -409,    768,    307}, 0, {  1948,    926}, {0x65, 0xff, 0xe5, 0xff}}},\n    {{{  -101,    768,   -306}, 0, {    32,      0}, {0x65, 0xff, 0xe5, 0xff}}},\n    {{{  -716,    256,    307}, 0, {  1948,    926}, {0x52, 0xac, 0x9d, 0xff}}},\n    {{{  -716,    512,    307}, 0, {  1948,    926}, {0x52, 0xac, 0x9d, 0xff}}},\n    {{{  -716,    512,   -306}, 0, {    32,    926}, {0x52, 0xac, 0x9d, 0xff}}},\n    {{{  -716,    256,   -306}, 0, {    32,    926}, {0x52, 0xac, 0x9d, 0xff}}},\n    {{{  -716,    256,   -306}, 0, {    32,    926}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  -716,    512,   -306}, 0, {    32,    926}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  -409,    512,   -306}, 0, {    32,      0}, {0x3f, 0xbf, 0xaa, 0xff}}},\n};\n\n// 0x0700BD98 - 0x0700BE98\nstatic const Vtx bitdw_seg7_vertex_0700BD98[] = {\n    {{{  -409,    512,    307}, 0, {  1948,      0}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  -716,    512,    307}, 0, {  1948,    926}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  -716,    256,    307}, 0, {  1948,    926}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  -409,    768,    307}, 0, {  1948,    926}, {0x52, 0xac, 0xac, 0xff}}},\n    {{{  -409,    512,   -306}, 0, {    32,    926}, {0x52, 0xac, 0xac, 0xff}}},\n    {{{  -409,    512,    307}, 0, {  1948,    926}, {0x52, 0xac, 0xac, 0xff}}},\n    {{{  -409,    768,   -306}, 0, {    32,    926}, {0x52, 0xac, 0xac, 0xff}}},\n    {{{  -409,    512,   -306}, 0, {    32,    926}, {0x3f, 0xbf, 0xbf, 0xff}}},\n    {{{  -409,    768,   -306}, 0, {    32,    926}, {0x3f, 0xbf, 0xbf, 0xff}}},\n    {{{  -101,    768,   -306}, 0, {    32,      0}, {0x3f, 0xbf, 0xbf, 0xff}}},\n    {{{  -409,    768,    307}, 0, {  1948,    926}, {0x3f, 0xbf, 0xbf, 0xff}}},\n    {{{  -409,    512,    307}, 0, {  1948,    926}, {0x3f, 0xbf, 0xbf, 0xff}}},\n    {{{  -101,    768,    307}, 0, {  1948,      0}, {0x3f, 0xbf, 0xbf, 0xff}}},\n    {{{   205,   1024,    307}, 0, {  1948,      0}, {0x65, 0xe5, 0xff, 0xff}}},\n    {{{   205,   1024,   -306}, 0, {    32,      0}, {0x65, 0xe5, 0xff, 0xff}}},\n    {{{  -101,   1024,   -306}, 0, {    32,    926}, {0x65, 0xe5, 0xff, 0xff}}},\n};\n\n// 0x0700BE98 - 0x0700BF68\nstatic const Vtx bitdw_seg7_vertex_0700BE98[] = {\n    {{{   205,   1024,    307}, 0, {  1948,      0}, {0x65, 0xe5, 0xff, 0xff}}},\n    {{{  -101,   1024,   -306}, 0, {    32,    926}, {0x65, 0xe5, 0xff, 0xff}}},\n    {{{  -101,   1024,    307}, 0, {  1948,    926}, {0x65, 0xe5, 0xff, 0xff}}},\n    {{{  -101,   1024,    307}, 0, {  1948,    926}, {0x52, 0x9d, 0xac, 0xff}}},\n    {{{  -101,    768,   -306}, 0, {    32,    926}, {0x52, 0x9d, 0xac, 0xff}}},\n    {{{  -101,    768,    307}, 0, {  1948,    926}, {0x52, 0x9d, 0xac, 0xff}}},\n    {{{  -101,   1024,   -306}, 0, {    32,    926}, {0x52, 0x9d, 0xac, 0xff}}},\n    {{{  -101,    768,   -306}, 0, {    32,    926}, {0x3f, 0xaa, 0xbf, 0xff}}},\n    {{{  -101,   1024,   -306}, 0, {    32,    926}, {0x3f, 0xaa, 0xbf, 0xff}}},\n    {{{   205,   1024,   -306}, 0, {    32,      0}, {0x3f, 0xaa, 0xbf, 0xff}}},\n    {{{  -101,   1024,    307}, 0, {  1948,    926}, {0x3f, 0xaa, 0xbf, 0xff}}},\n    {{{  -101,    768,    307}, 0, {  1948,    926}, {0x3f, 0xaa, 0xbf, 0xff}}},\n    {{{   205,   1024,    307}, 0, {  1948,      0}, {0x3f, 0xaa, 0xbf, 0xff}}},\n};\n\n// 0x0700BF68 - 0x0700BFA8\nstatic const Vtx bitdw_seg7_vertex_0700BF68[] = {\n    {{{ -1023,      0,    307}, 0, {     0,      0}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{ -1023,      0,   -306}, 0, { -1052,    990}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{ -1637,      0,   -306}, 0, { -2074,      0}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{ -1637,      0,    307}, 0, { -1052,  -1054}, {0xb7, 0xcd, 0xba, 0xff}}},\n};\n\n// 0x0700BFA8 - 0x0700C0A8\nstatic const Gfx bitdw_seg7_dl_0700BFA8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_0700BBC8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_0700BCA8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_0700BD98, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_0700BE98, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle(10, 11, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700C0A8 - 0x0700C0E0\nstatic const Gfx bitdw_seg7_dl_0700C0A8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_0700BF68, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700C0E0 - 0x0700C158\nconst Gfx bitdw_seg7_dl_0700C0E0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitdw_seg7_dl_0700BFA8),\n    gsSPDisplayList(bitdw_seg7_dl_0700C0A8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitdw/collapsing_stairs_2/collision.inc.c",
    "content": "// 0x0700FA3C - 0x0700FB5C\nconst Collision bitdw_seg7_collision_0700FA3C[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x14),\n    COL_VERTEX(-409, 512, 307),\n    COL_VERTEX(-716, 471, 307),\n    COL_VERTEX(-716, 256, 307),\n    COL_VERTEX(-716, 471, -306),\n    COL_VERTEX(-716, 256, -306),\n    COL_VERTEX(-409, 512, -306),\n    COL_VERTEX(-409, 727, 307),\n    COL_VERTEX(-409, 727, -306),\n    COL_VERTEX(-101, 768, -306),\n    COL_VERTEX(-101, 768, 307),\n    COL_VERTEX(-1023, 215, 307),\n    COL_VERTEX(-1023, 0, 307),\n    COL_VERTEX(-101, 983, 307),\n    COL_VERTEX(205, 1024, 307),\n    COL_VERTEX(-1023, 0, -306),\n    COL_VERTEX(-1637, 0, -306),\n    COL_VERTEX(-1637, 0, 307),\n    COL_VERTEX(-101, 983, -306),\n    COL_VERTEX(205, 1024, -306),\n    COL_VERTEX(-1023, 215, -306),\n    COL_TRI_INIT(SURFACE_DEFAULT, 26),\n    COL_TRI(0, 1, 2),\n    COL_TRI(2, 3, 4),\n    COL_TRI(2, 1, 3),\n    COL_TRI(5, 1, 0),\n    COL_TRI(5, 3, 1),\n    COL_TRI(6, 5, 0),\n    COL_TRI(6, 7, 5),\n    COL_TRI(5, 7, 8),\n    COL_TRI(4, 3, 5),\n    COL_TRI(6, 0, 9),\n    COL_TRI(9, 7, 6),\n    COL_TRI(9, 8, 7),\n    COL_TRI(10, 11, 2),\n    COL_TRI(10, 14, 11),\n    COL_TRI(11, 14, 15),\n    COL_TRI(11, 15, 16),\n    COL_TRI(12, 8, 9),\n    COL_TRI(12, 17, 8),\n    COL_TRI(8, 17, 18),\n    COL_TRI(13, 17, 12),\n    COL_TRI(13, 18, 17),\n    COL_TRI(12, 9, 13),\n    COL_TRI(10, 19, 14),\n    COL_TRI(14, 19, 4),\n    COL_TRI(2, 19, 10),\n    COL_TRI(2, 4, 19),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bitdw/collapsing_stairs_2/geo.inc.c",
    "content": "// 0x0E0005B8\nconst GeoLayout geo_bitdw_0005B8[] = {\n    GEO_CULLING_RADIUS(2000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitdw_seg7_dl_0700C670),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitdw/collapsing_stairs_2/model.inc.c",
    "content": "// 0x0700C158 - 0x0700C238\nstatic const Vtx bitdw_seg7_vertex_0700C158[] = {\n    {{{  -716,    256,    307}, 0, {  1948,      0}, {0x65, 0xff, 0xb2, 0xff}}},\n    {{{  -716,    256,   -306}, 0, {    32,      0}, {0x65, 0xff, 0xb2, 0xff}}},\n    {{{ -1023,    215,   -306}, 0, {    32,    926}, {0x65, 0xff, 0xb2, 0xff}}},\n    {{{ -1023,    215,    307}, 0, {  1948,    926}, {0x65, 0xff, 0xb2, 0xff}}},\n    {{{ -1023,    215,    307}, 0, {  1948,    926}, {0x52, 0xac, 0x7f, 0xff}}},\n    {{{ -1023,    215,   -306}, 0, {    32,    926}, {0x52, 0xac, 0x7f, 0xff}}},\n    {{{ -1023,      0,   -306}, 0, {    32,    926}, {0x52, 0xac, 0x7f, 0xff}}},\n    {{{ -1023,      0,    307}, 0, {  1948,    926}, {0x52, 0xac, 0x7f, 0xff}}},\n    {{{ -1023,      0,   -306}, 0, {    32,    926}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{ -1023,    215,   -306}, 0, {    32,    926}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{  -716,    256,   -306}, 0, {    32,      0}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{ -1023,    215,    307}, 0, {  1948,    926}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{ -1023,      0,    307}, 0, {  1948,    926}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{  -716,    256,    307}, 0, {  1948,      0}, {0x3f, 0xbf, 0x7f, 0xff}}},\n};\n\n// 0x0700C238 - 0x0700C328\nstatic const Vtx bitdw_seg7_vertex_0700C238[] = {\n    {{{  -409,    512,   -306}, 0, {    32,      0}, {0x65, 0xff, 0xcc, 0xff}}},\n    {{{  -716,    471,    307}, 0, {  1948,    926}, {0x65, 0xff, 0xcc, 0xff}}},\n    {{{  -409,    512,    307}, 0, {  1948,      0}, {0x65, 0xff, 0xcc, 0xff}}},\n    {{{  -716,    471,   -306}, 0, {    32,    926}, {0x65, 0xff, 0xcc, 0xff}}},\n    {{{  -101,    768,    307}, 0, {  1948,      0}, {0x65, 0xff, 0xe5, 0xff}}},\n    {{{  -409,    727,   -306}, 0, {    32,    926}, {0x65, 0xff, 0xe5, 0xff}}},\n    {{{  -409,    727,    307}, 0, {  1948,    926}, {0x65, 0xff, 0xe5, 0xff}}},\n    {{{  -101,    768,   -306}, 0, {    32,      0}, {0x65, 0xff, 0xe5, 0xff}}},\n    {{{  -716,    256,    307}, 0, {  1948,    926}, {0x52, 0xac, 0x9d, 0xff}}},\n    {{{  -716,    471,    307}, 0, {  1948,    926}, {0x52, 0xac, 0x9d, 0xff}}},\n    {{{  -716,    471,   -306}, 0, {    32,    926}, {0x52, 0xac, 0x9d, 0xff}}},\n    {{{  -716,    256,   -306}, 0, {    32,    926}, {0x52, 0xac, 0x9d, 0xff}}},\n    {{{  -716,    256,   -306}, 0, {    32,    926}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  -716,    471,   -306}, 0, {    32,    926}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  -409,    512,   -306}, 0, {    32,      0}, {0x3f, 0xbf, 0xaa, 0xff}}},\n};\n\n// 0x0700C328 - 0x0700C428\nstatic const Vtx bitdw_seg7_vertex_0700C328[] = {\n    {{{  -409,    512,    307}, 0, {  1948,      0}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  -716,    471,    307}, 0, {  1948,    926}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  -716,    256,    307}, 0, {  1948,    926}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  -409,    727,    307}, 0, {  1948,    926}, {0x52, 0xac, 0xac, 0xff}}},\n    {{{  -409,    512,   -306}, 0, {    32,    926}, {0x52, 0xac, 0xac, 0xff}}},\n    {{{  -409,    512,    307}, 0, {  1948,    926}, {0x52, 0xac, 0xac, 0xff}}},\n    {{{  -409,    727,   -306}, 0, {    32,    926}, {0x52, 0xac, 0xac, 0xff}}},\n    {{{  -409,    512,   -306}, 0, {    32,    926}, {0x3f, 0xbf, 0xbf, 0xff}}},\n    {{{  -409,    727,   -306}, 0, {    32,    926}, {0x3f, 0xbf, 0xbf, 0xff}}},\n    {{{  -101,    768,   -306}, 0, {    32,      0}, {0x3f, 0xbf, 0xbf, 0xff}}},\n    {{{  -409,    727,    307}, 0, {  1948,    926}, {0x3f, 0xbf, 0xbf, 0xff}}},\n    {{{  -409,    512,    307}, 0, {  1948,    926}, {0x3f, 0xbf, 0xbf, 0xff}}},\n    {{{  -101,    768,    307}, 0, {  1948,      0}, {0x3f, 0xbf, 0xbf, 0xff}}},\n    {{{   205,   1024,    307}, 0, {  1948,      0}, {0x65, 0xe5, 0xff, 0xff}}},\n    {{{   205,   1024,   -306}, 0, {    32,      0}, {0x65, 0xe5, 0xff, 0xff}}},\n    {{{  -101,    983,   -306}, 0, {    32,    926}, {0x65, 0xe5, 0xff, 0xff}}},\n};\n\n// 0x0700C428 - 0x0700C4F8\nstatic const Vtx bitdw_seg7_vertex_0700C428[] = {\n    {{{   205,   1024,    307}, 0, {  1948,      0}, {0x65, 0xe5, 0xff, 0xff}}},\n    {{{  -101,    983,   -306}, 0, {    32,    926}, {0x65, 0xe5, 0xff, 0xff}}},\n    {{{  -101,    983,    307}, 0, {  1948,    926}, {0x65, 0xe5, 0xff, 0xff}}},\n    {{{  -101,    983,    307}, 0, {  1948,    926}, {0x52, 0x9d, 0xac, 0xff}}},\n    {{{  -101,    768,   -306}, 0, {    32,    926}, {0x52, 0x9d, 0xac, 0xff}}},\n    {{{  -101,    768,    307}, 0, {  1948,    926}, {0x52, 0x9d, 0xac, 0xff}}},\n    {{{  -101,    983,   -306}, 0, {    32,    926}, {0x52, 0x9d, 0xac, 0xff}}},\n    {{{  -101,    768,   -306}, 0, {    32,    926}, {0x3f, 0xaa, 0xbf, 0xff}}},\n    {{{  -101,    983,   -306}, 0, {    32,    926}, {0x3f, 0xaa, 0xbf, 0xff}}},\n    {{{   205,   1024,   -306}, 0, {    32,      0}, {0x3f, 0xaa, 0xbf, 0xff}}},\n    {{{  -101,    983,    307}, 0, {  1948,    926}, {0x3f, 0xaa, 0xbf, 0xff}}},\n    {{{  -101,    768,    307}, 0, {  1948,    926}, {0x3f, 0xaa, 0xbf, 0xff}}},\n    {{{   205,   1024,    307}, 0, {  1948,      0}, {0x3f, 0xaa, 0xbf, 0xff}}},\n};\n\n// 0x0700C4F8 - 0x0700C538\nstatic const Vtx bitdw_seg7_vertex_0700C4F8[] = {\n    {{{ -1023,      0,    307}, 0, {     0,      0}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{ -1023,      0,   -306}, 0, { -1052,    990}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{ -1637,      0,   -306}, 0, { -2074,      0}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{ -1637,      0,    307}, 0, { -1052,  -1054}, {0xb7, 0xcd, 0xba, 0xff}}},\n};\n\n// 0x0700C538 - 0x0700C638\nstatic const Gfx bitdw_seg7_dl_0700C538[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_0700C158, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_0700C238, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_0700C328, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_0700C428, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle(10, 11, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700C638 - 0x0700C670\nstatic const Gfx bitdw_seg7_dl_0700C638[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_0700C4F8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700C670 - 0x0700C6E8\nconst Gfx bitdw_seg7_dl_0700C670[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitdw_seg7_dl_0700C538),\n    gsSPDisplayList(bitdw_seg7_dl_0700C638),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitdw/collapsing_stairs_3/collision.inc.c",
    "content": "// 0x0700FB5C - 0x0700FC7C\nconst Collision bitdw_seg7_collision_0700FB5C[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x14),\n    COL_VERTEX(-409, 512, 307),\n    COL_VERTEX(-716, 410, 307),\n    COL_VERTEX(-716, 256, 307),\n    COL_VERTEX(-716, 410, -306),\n    COL_VERTEX(-716, 256, -306),\n    COL_VERTEX(-409, 512, -306),\n    COL_VERTEX(-409, 666, 307),\n    COL_VERTEX(-409, 666, -306),\n    COL_VERTEX(-101, 768, -306),\n    COL_VERTEX(-101, 768, 307),\n    COL_VERTEX(-1023, 154, 307),\n    COL_VERTEX(-1023, 0, 307),\n    COL_VERTEX(-101, 922, 307),\n    COL_VERTEX(205, 1024, 307),\n    COL_VERTEX(-1023, 0, -306),\n    COL_VERTEX(-1637, 0, -306),\n    COL_VERTEX(-1637, 0, 307),\n    COL_VERTEX(-101, 922, -306),\n    COL_VERTEX(205, 1024, -306),\n    COL_VERTEX(-1023, 154, -306),\n    COL_TRI_INIT(SURFACE_DEFAULT, 26),\n    COL_TRI(0, 1, 2),\n    COL_TRI(2, 3, 4),\n    COL_TRI(2, 1, 3),\n    COL_TRI(5, 1, 0),\n    COL_TRI(5, 3, 1),\n    COL_TRI(6, 5, 0),\n    COL_TRI(6, 7, 5),\n    COL_TRI(5, 7, 8),\n    COL_TRI(4, 3, 5),\n    COL_TRI(6, 0, 9),\n    COL_TRI(9, 7, 6),\n    COL_TRI(9, 8, 7),\n    COL_TRI(10, 11, 2),\n    COL_TRI(10, 14, 11),\n    COL_TRI(11, 14, 15),\n    COL_TRI(11, 15, 16),\n    COL_TRI(12, 8, 9),\n    COL_TRI(12, 17, 8),\n    COL_TRI(8, 17, 18),\n    COL_TRI(13, 17, 12),\n    COL_TRI(13, 18, 17),\n    COL_TRI(12, 9, 13),\n    COL_TRI(10, 19, 14),\n    COL_TRI(14, 19, 4),\n    COL_TRI(2, 19, 10),\n    COL_TRI(2, 4, 19),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bitdw/collapsing_stairs_3/geo.inc.c",
    "content": "// 0x0E0005D0\nconst GeoLayout geo_bitdw_0005D0[] = {\n    GEO_CULLING_RADIUS(2000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitdw_seg7_dl_0700CC00),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitdw/collapsing_stairs_3/model.inc.c",
    "content": "// 0x0700C6E8 - 0x0700C7C8\nstatic const Vtx bitdw_seg7_vertex_0700C6E8[] = {\n    {{{  -716,    256,    307}, 0, {  1948,      0}, {0x65, 0xff, 0xb2, 0xff}}},\n    {{{  -716,    256,   -306}, 0, {    32,      0}, {0x65, 0xff, 0xb2, 0xff}}},\n    {{{ -1023,    154,   -306}, 0, {    32,    926}, {0x65, 0xff, 0xb2, 0xff}}},\n    {{{ -1023,    154,    307}, 0, {  1948,    926}, {0x65, 0xff, 0xb2, 0xff}}},\n    {{{ -1023,    154,    307}, 0, {  1948,    926}, {0x52, 0xac, 0x7f, 0xff}}},\n    {{{ -1023,    154,   -306}, 0, {    32,    926}, {0x52, 0xac, 0x7f, 0xff}}},\n    {{{ -1023,      0,   -306}, 0, {    32,    926}, {0x52, 0xac, 0x7f, 0xff}}},\n    {{{ -1023,      0,    307}, 0, {  1948,    926}, {0x52, 0xac, 0x7f, 0xff}}},\n    {{{ -1023,      0,   -306}, 0, {    32,    926}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{ -1023,    154,   -306}, 0, {    32,    926}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{  -716,    256,   -306}, 0, {    32,      0}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{ -1023,    154,    307}, 0, {  1948,    926}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{ -1023,      0,    307}, 0, {  1948,    926}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{  -716,    256,    307}, 0, {  1948,      0}, {0x3f, 0xbf, 0x7f, 0xff}}},\n};\n\n// 0x0700C7C8 - 0x0700C8B8\nstatic const Vtx bitdw_seg7_vertex_0700C7C8[] = {\n    {{{  -409,    512,   -306}, 0, {    32,      0}, {0x65, 0xff, 0xcc, 0xff}}},\n    {{{  -716,    410,    307}, 0, {  1948,    926}, {0x65, 0xff, 0xcc, 0xff}}},\n    {{{  -409,    512,    307}, 0, {  1948,      0}, {0x65, 0xff, 0xcc, 0xff}}},\n    {{{  -716,    410,   -306}, 0, {    32,    926}, {0x65, 0xff, 0xcc, 0xff}}},\n    {{{  -101,    768,    307}, 0, {  1948,      0}, {0x65, 0xff, 0xe5, 0xff}}},\n    {{{  -409,    666,   -306}, 0, {    32,    926}, {0x65, 0xff, 0xe5, 0xff}}},\n    {{{  -409,    666,    307}, 0, {  1948,    926}, {0x65, 0xff, 0xe5, 0xff}}},\n    {{{  -101,    768,   -306}, 0, {    32,      0}, {0x65, 0xff, 0xe5, 0xff}}},\n    {{{  -716,    256,    307}, 0, {  1948,    926}, {0x52, 0xac, 0x9d, 0xff}}},\n    {{{  -716,    410,    307}, 0, {  1948,    926}, {0x52, 0xac, 0x9d, 0xff}}},\n    {{{  -716,    410,   -306}, 0, {    32,    926}, {0x52, 0xac, 0x9d, 0xff}}},\n    {{{  -716,    256,   -306}, 0, {    32,    926}, {0x52, 0xac, 0x9d, 0xff}}},\n    {{{  -716,    256,   -306}, 0, {    32,    926}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  -716,    410,   -306}, 0, {    32,    926}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  -409,    512,   -306}, 0, {    32,      0}, {0x3f, 0xbf, 0xaa, 0xff}}},\n};\n\n// 0x0700C8B8 - 0x0700C9B8\nstatic const Vtx bitdw_seg7_vertex_0700C8B8[] = {\n    {{{  -409,    512,    307}, 0, {  1948,      0}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  -716,    410,    307}, 0, {  1948,    926}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  -716,    256,    307}, 0, {  1948,    926}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  -409,    666,    307}, 0, {  1948,    926}, {0x52, 0xac, 0xac, 0xff}}},\n    {{{  -409,    512,   -306}, 0, {    32,    926}, {0x52, 0xac, 0xac, 0xff}}},\n    {{{  -409,    512,    307}, 0, {  1948,    926}, {0x52, 0xac, 0xac, 0xff}}},\n    {{{  -409,    666,   -306}, 0, {    32,    926}, {0x52, 0xac, 0xac, 0xff}}},\n    {{{  -409,    512,   -306}, 0, {    32,    926}, {0x3f, 0xbf, 0xbf, 0xff}}},\n    {{{  -409,    666,   -306}, 0, {    32,    926}, {0x3f, 0xbf, 0xbf, 0xff}}},\n    {{{  -101,    768,   -306}, 0, {    32,      0}, {0x3f, 0xbf, 0xbf, 0xff}}},\n    {{{  -409,    666,    307}, 0, {  1948,    926}, {0x3f, 0xbf, 0xbf, 0xff}}},\n    {{{  -409,    512,    307}, 0, {  1948,    926}, {0x3f, 0xbf, 0xbf, 0xff}}},\n    {{{  -101,    768,    307}, 0, {  1948,      0}, {0x3f, 0xbf, 0xbf, 0xff}}},\n    {{{   205,   1024,    307}, 0, {  1948,      0}, {0x65, 0xe5, 0xff, 0xff}}},\n    {{{   205,   1024,   -306}, 0, {    32,      0}, {0x65, 0xe5, 0xff, 0xff}}},\n    {{{  -101,    922,   -306}, 0, {    32,    926}, {0x65, 0xe5, 0xff, 0xff}}},\n};\n\n// 0x0700C9B8 - 0x0700CA88\nstatic const Vtx bitdw_seg7_vertex_0700C9B8[] = {\n    {{{   205,   1024,    307}, 0, {  1948,      0}, {0x65, 0xe5, 0xff, 0xff}}},\n    {{{  -101,    922,   -306}, 0, {    32,    926}, {0x65, 0xe5, 0xff, 0xff}}},\n    {{{  -101,    922,    307}, 0, {  1948,    926}, {0x65, 0xe5, 0xff, 0xff}}},\n    {{{  -101,    922,    307}, 0, {  1948,    926}, {0x52, 0x9d, 0xac, 0xff}}},\n    {{{  -101,    768,   -306}, 0, {    32,    926}, {0x52, 0x9d, 0xac, 0xff}}},\n    {{{  -101,    768,    307}, 0, {  1948,    926}, {0x52, 0x9d, 0xac, 0xff}}},\n    {{{  -101,    922,   -306}, 0, {    32,    926}, {0x52, 0x9d, 0xac, 0xff}}},\n    {{{  -101,    768,   -306}, 0, {    32,    926}, {0x3f, 0xaa, 0xbf, 0xff}}},\n    {{{  -101,    922,   -306}, 0, {    32,    926}, {0x3f, 0xaa, 0xbf, 0xff}}},\n    {{{   205,   1024,   -306}, 0, {    32,      0}, {0x3f, 0xaa, 0xbf, 0xff}}},\n    {{{  -101,    922,    307}, 0, {  1948,    926}, {0x3f, 0xaa, 0xbf, 0xff}}},\n    {{{  -101,    768,    307}, 0, {  1948,    926}, {0x3f, 0xaa, 0xbf, 0xff}}},\n    {{{   205,   1024,    307}, 0, {  1948,      0}, {0x3f, 0xaa, 0xbf, 0xff}}},\n};\n\n// 0x0700CA88 - 0x0700CAC8\nstatic const Vtx bitdw_seg7_vertex_0700CA88[] = {\n    {{{ -1023,      0,    307}, 0, {     0,      0}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{ -1023,      0,   -306}, 0, { -1052,    990}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{ -1637,      0,   -306}, 0, { -2074,      0}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{ -1637,      0,    307}, 0, { -1052,  -1054}, {0xb7, 0xcd, 0xba, 0xff}}},\n};\n\n// 0x0700CAC8 - 0x0700CBC8\nstatic const Gfx bitdw_seg7_dl_0700CAC8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_0700C6E8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_0700C7C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_0700C8B8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_0700C9B8, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle(10, 11, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700CBC8 - 0x0700CC00\nstatic const Gfx bitdw_seg7_dl_0700CBC8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_0700CA88, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700CC00 - 0x0700CC78\nconst Gfx bitdw_seg7_dl_0700CC00[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitdw_seg7_dl_0700CAC8),\n    gsSPDisplayList(bitdw_seg7_dl_0700CBC8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitdw/collapsing_stairs_4/collision.inc.c",
    "content": "// 0x0700FC7C - 0x0700FD9C\nconst Collision bitdw_seg7_collision_0700FC7C[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x14),\n    COL_VERTEX(-409, 512, 307),\n    COL_VERTEX(-716, 338, 307),\n    COL_VERTEX(-716, 256, 307),\n    COL_VERTEX(-716, 338, -306),\n    COL_VERTEX(-716, 256, -306),\n    COL_VERTEX(-409, 512, -306),\n    COL_VERTEX(-409, 594, 307),\n    COL_VERTEX(-409, 594, -306),\n    COL_VERTEX(-101, 768, -306),\n    COL_VERTEX(-101, 768, 307),\n    COL_VERTEX(-1023, 82, 307),\n    COL_VERTEX(-1023, 0, 307),\n    COL_VERTEX(-101, 850, 307),\n    COL_VERTEX(205, 1024, 307),\n    COL_VERTEX(-1023, 0, -306),\n    COL_VERTEX(-1637, 0, -306),\n    COL_VERTEX(-1637, 0, 307),\n    COL_VERTEX(-101, 850, -306),\n    COL_VERTEX(205, 1024, -306),\n    COL_VERTEX(-1023, 82, -306),\n    COL_TRI_INIT(SURFACE_DEFAULT, 26),\n    COL_TRI(0, 1, 2),\n    COL_TRI(2, 3, 4),\n    COL_TRI(2, 1, 3),\n    COL_TRI(5, 1, 0),\n    COL_TRI(5, 3, 1),\n    COL_TRI(6, 5, 0),\n    COL_TRI(6, 7, 5),\n    COL_TRI(5, 7, 8),\n    COL_TRI(4, 3, 5),\n    COL_TRI(6, 0, 9),\n    COL_TRI(9, 7, 6),\n    COL_TRI(9, 8, 7),\n    COL_TRI(10, 11, 2),\n    COL_TRI(10, 14, 11),\n    COL_TRI(11, 14, 15),\n    COL_TRI(11, 15, 16),\n    COL_TRI(12, 8, 9),\n    COL_TRI(12, 17, 8),\n    COL_TRI(8, 17, 18),\n    COL_TRI(13, 17, 12),\n    COL_TRI(13, 18, 17),\n    COL_TRI(12, 9, 13),\n    COL_TRI(10, 19, 14),\n    COL_TRI(14, 19, 4),\n    COL_TRI(2, 19, 10),\n    COL_TRI(2, 4, 19),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bitdw/collapsing_stairs_4/geo.inc.c",
    "content": "// 0x0E0005E8\nconst GeoLayout geo_bitdw_0005E8[] = {\n    GEO_CULLING_RADIUS(2000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitdw_seg7_dl_0700D190),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitdw/collapsing_stairs_4/model.inc.c",
    "content": "// 0x0700CC78 - 0x0700CD58\nstatic const Vtx bitdw_seg7_vertex_0700CC78[] = {\n    {{{  -716,    256,    307}, 0, {  1948,      0}, {0x65, 0xff, 0xb2, 0xff}}},\n    {{{  -716,    256,   -306}, 0, {    32,      0}, {0x65, 0xff, 0xb2, 0xff}}},\n    {{{ -1023,     82,   -306}, 0, {    32,    926}, {0x65, 0xff, 0xb2, 0xff}}},\n    {{{ -1023,     82,    307}, 0, {  1948,    926}, {0x65, 0xff, 0xb2, 0xff}}},\n    {{{ -1023,     82,    307}, 0, {  1948,    926}, {0x52, 0xac, 0x7f, 0xff}}},\n    {{{ -1023,     82,   -306}, 0, {    32,    926}, {0x52, 0xac, 0x7f, 0xff}}},\n    {{{ -1023,      0,   -306}, 0, {    32,    926}, {0x52, 0xac, 0x7f, 0xff}}},\n    {{{ -1023,      0,    307}, 0, {  1948,    926}, {0x52, 0xac, 0x7f, 0xff}}},\n    {{{ -1023,      0,   -306}, 0, {    32,    926}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{ -1023,     82,   -306}, 0, {    32,    926}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{  -716,    256,   -306}, 0, {    32,      0}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{ -1023,     82,    307}, 0, {  1948,    926}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{ -1023,      0,    307}, 0, {  1948,    926}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{  -716,    256,    307}, 0, {  1948,      0}, {0x3f, 0xbf, 0x7f, 0xff}}},\n};\n\n// 0x0700CD58 - 0x0700CE48\nstatic const Vtx bitdw_seg7_vertex_0700CD58[] = {\n    {{{  -409,    512,   -306}, 0, {    32,      0}, {0x65, 0xff, 0xcc, 0xff}}},\n    {{{  -716,    338,    307}, 0, {  1948,    926}, {0x65, 0xff, 0xcc, 0xff}}},\n    {{{  -409,    512,    307}, 0, {  1948,      0}, {0x65, 0xff, 0xcc, 0xff}}},\n    {{{  -716,    338,   -306}, 0, {    32,    926}, {0x65, 0xff, 0xcc, 0xff}}},\n    {{{  -101,    768,    307}, 0, {  1948,      0}, {0x65, 0xff, 0xe5, 0xff}}},\n    {{{  -409,    594,   -306}, 0, {    32,    926}, {0x65, 0xff, 0xe5, 0xff}}},\n    {{{  -409,    594,    307}, 0, {  1948,    926}, {0x65, 0xff, 0xe5, 0xff}}},\n    {{{  -101,    768,   -306}, 0, {    32,      0}, {0x65, 0xff, 0xe5, 0xff}}},\n    {{{  -716,    256,    307}, 0, {  1948,    926}, {0x52, 0xac, 0x9d, 0xff}}},\n    {{{  -716,    338,    307}, 0, {  1948,    926}, {0x52, 0xac, 0x9d, 0xff}}},\n    {{{  -716,    338,   -306}, 0, {    32,    926}, {0x52, 0xac, 0x9d, 0xff}}},\n    {{{  -716,    256,   -306}, 0, {    32,    926}, {0x52, 0xac, 0x9d, 0xff}}},\n    {{{  -716,    256,   -306}, 0, {    32,    926}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  -716,    338,   -306}, 0, {    32,    926}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  -409,    512,   -306}, 0, {    32,      0}, {0x3f, 0xbf, 0xaa, 0xff}}},\n};\n\n// 0x0700CE48 - 0x0700CF48\nstatic const Vtx bitdw_seg7_vertex_0700CE48[] = {\n    {{{  -409,    512,    307}, 0, {  1948,      0}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  -716,    338,    307}, 0, {  1948,    926}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  -716,    256,    307}, 0, {  1948,    926}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  -409,    594,    307}, 0, {  1948,    926}, {0x52, 0xac, 0xac, 0xff}}},\n    {{{  -409,    512,   -306}, 0, {    32,    926}, {0x52, 0xac, 0xac, 0xff}}},\n    {{{  -409,    512,    307}, 0, {  1948,    926}, {0x52, 0xac, 0xac, 0xff}}},\n    {{{  -409,    594,   -306}, 0, {    32,    926}, {0x52, 0xac, 0xac, 0xff}}},\n    {{{  -409,    512,   -306}, 0, {    32,    926}, {0x3f, 0xbf, 0xbf, 0xff}}},\n    {{{  -409,    594,   -306}, 0, {    32,    926}, {0x3f, 0xbf, 0xbf, 0xff}}},\n    {{{  -101,    768,   -306}, 0, {    32,      0}, {0x3f, 0xbf, 0xbf, 0xff}}},\n    {{{  -409,    594,    307}, 0, {  1948,    926}, {0x3f, 0xbf, 0xbf, 0xff}}},\n    {{{  -409,    512,    307}, 0, {  1948,    926}, {0x3f, 0xbf, 0xbf, 0xff}}},\n    {{{  -101,    768,    307}, 0, {  1948,      0}, {0x3f, 0xbf, 0xbf, 0xff}}},\n    {{{   205,   1024,    307}, 0, {  1948,      0}, {0x65, 0xe5, 0xff, 0xff}}},\n    {{{   205,   1024,   -306}, 0, {    32,      0}, {0x65, 0xe5, 0xff, 0xff}}},\n    {{{  -101,    850,   -306}, 0, {    32,    926}, {0x65, 0xe5, 0xff, 0xff}}},\n};\n\n// 0x0700CF48 - 0x0700D018\nstatic const Vtx bitdw_seg7_vertex_0700CF48[] = {\n    {{{   205,   1024,    307}, 0, {  1948,      0}, {0x65, 0xe5, 0xff, 0xff}}},\n    {{{  -101,    850,   -306}, 0, {    32,    926}, {0x65, 0xe5, 0xff, 0xff}}},\n    {{{  -101,    850,    307}, 0, {  1948,    926}, {0x65, 0xe5, 0xff, 0xff}}},\n    {{{  -101,    850,    307}, 0, {  1948,    926}, {0x52, 0x9d, 0xac, 0xff}}},\n    {{{  -101,    768,   -306}, 0, {    32,    926}, {0x52, 0x9d, 0xac, 0xff}}},\n    {{{  -101,    768,    307}, 0, {  1948,    926}, {0x52, 0x9d, 0xac, 0xff}}},\n    {{{  -101,    850,   -306}, 0, {    32,    926}, {0x52, 0x9d, 0xac, 0xff}}},\n    {{{  -101,    768,   -306}, 0, {    32,    926}, {0x3f, 0xaa, 0xbf, 0xff}}},\n    {{{  -101,    850,   -306}, 0, {    32,    926}, {0x3f, 0xaa, 0xbf, 0xff}}},\n    {{{   205,   1024,   -306}, 0, {    32,      0}, {0x3f, 0xaa, 0xbf, 0xff}}},\n    {{{  -101,    850,    307}, 0, {  1948,    926}, {0x3f, 0xaa, 0xbf, 0xff}}},\n    {{{  -101,    768,    307}, 0, {  1948,    926}, {0x3f, 0xaa, 0xbf, 0xff}}},\n    {{{   205,   1024,    307}, 0, {  1948,      0}, {0x3f, 0xaa, 0xbf, 0xff}}},\n};\n\n// 0x0700D018 - 0x0700D058\nstatic const Vtx bitdw_seg7_vertex_0700D018[] = {\n    {{{ -1023,      0,    307}, 0, {     0,      0}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{ -1023,      0,   -306}, 0, { -1052,    990}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{ -1637,      0,   -306}, 0, { -2074,      0}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{ -1637,      0,    307}, 0, { -1052,  -1054}, {0xb7, 0xcd, 0xba, 0xff}}},\n};\n\n// 0x0700D058 - 0x0700D158\nstatic const Gfx bitdw_seg7_dl_0700D058[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_0700CC78, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_0700CD58, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_0700CE48, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_0700CF48, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle(10, 11, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700D158 - 0x0700D190\nstatic const Gfx bitdw_seg7_dl_0700D158[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_0700D018, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700D190 - 0x0700D208\nconst Gfx bitdw_seg7_dl_0700D190[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitdw_seg7_dl_0700D058),\n    gsSPDisplayList(bitdw_seg7_dl_0700D158),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitdw/collapsing_stairs_5/collision.inc.c",
    "content": "// 0x0700FD9C - 0x0700FE30\nconst Collision bitdw_seg7_collision_0700FD9C[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0xC),\n    COL_VERTEX(-101, 768, 307),\n    COL_VERTEX(-101, 768, -306),\n    COL_VERTEX(-409, 512, -306),\n    COL_VERTEX(-409, 512, 307),\n    COL_VERTEX(-716, 256, -306),\n    COL_VERTEX(-716, 256, 307),\n    COL_VERTEX(205, 1024, 307),\n    COL_VERTEX(205, 1024, -306),\n    COL_VERTEX(-1023, 0, -306),\n    COL_VERTEX(-1023, 0, 307),\n    COL_VERTEX(-1637, 0, -306),\n    COL_VERTEX(-1637, 0, 307),\n    COL_TRI_INIT(SURFACE_DEFAULT, 2),\n    COL_TRI(9, 8, 10),\n    COL_TRI(9, 10, 11),\n    COL_TRI_INIT(SURFACE_VERY_SLIPPERY, 8),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(2, 4, 5),\n    COL_TRI(2, 5, 3),\n    COL_TRI(6, 1, 0),\n    COL_TRI(6, 7, 1),\n    COL_TRI(5, 4, 8),\n    COL_TRI(5, 8, 9),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bitdw/collapsing_stairs_5/geo.inc.c",
    "content": "// 0x0E000600\nconst GeoLayout geo_bitdw_000600[] = {\n    GEO_CULLING_RADIUS(2000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitdw_seg7_dl_0700D3E8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitdw/collapsing_stairs_5/model.inc.c",
    "content": "// 0x0700D208 - 0x0700D308\nstatic const Vtx bitdw_seg7_vertex_0700D208[] = {\n    {{{  -716,    256,    307}, 0, {  1948,      0}, {0x65, 0xff, 0xb2, 0xff}}},\n    {{{ -1023,      0,   -306}, 0, {    32,    926}, {0x65, 0xff, 0xb2, 0xff}}},\n    {{{ -1023,      0,    307}, 0, {  1948,    926}, {0x65, 0xff, 0xb2, 0xff}}},\n    {{{  -716,    256,   -306}, 0, {    32,      0}, {0x65, 0xff, 0xb2, 0xff}}},\n    {{{  -409,    512,   -306}, 0, {    32,      0}, {0x65, 0xff, 0xcc, 0xff}}},\n    {{{  -716,    256,   -306}, 0, {    32,    926}, {0x65, 0xff, 0xcc, 0xff}}},\n    {{{  -716,    256,    307}, 0, {  1948,    926}, {0x65, 0xff, 0xcc, 0xff}}},\n    {{{  -409,    512,    307}, 0, {  1948,      0}, {0x65, 0xff, 0xcc, 0xff}}},\n    {{{  -101,    768,    307}, 0, {  1948,      0}, {0x65, 0xff, 0xe5, 0xff}}},\n    {{{  -409,    512,   -306}, 0, {    32,    926}, {0x65, 0xff, 0xe5, 0xff}}},\n    {{{  -409,    512,    307}, 0, {  1948,    926}, {0x65, 0xff, 0xe5, 0xff}}},\n    {{{  -101,    768,   -306}, 0, {    32,      0}, {0x65, 0xff, 0xe5, 0xff}}},\n    {{{   205,   1024,    307}, 0, {  1948,      0}, {0x65, 0xe5, 0xff, 0xff}}},\n    {{{   205,   1024,   -306}, 0, {    32,      0}, {0x65, 0xe5, 0xff, 0xff}}},\n    {{{  -101,    768,   -306}, 0, {    32,    926}, {0x65, 0xe5, 0xff, 0xff}}},\n    {{{  -101,    768,    307}, 0, {  1948,    926}, {0x65, 0xe5, 0xff, 0xff}}},\n};\n\n// 0x0700D308 - 0x0700D348\nstatic const Vtx bitdw_seg7_vertex_0700D308[] = {\n    {{{ -1023,      0,    307}, 0, {     0,      0}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{ -1023,      0,   -306}, 0, { -1052,    990}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{ -1637,      0,   -306}, 0, { -2074,      0}, {0xb7, 0xcd, 0xba, 0xff}}},\n    {{{ -1637,      0,    307}, 0, { -1052,  -1054}, {0xb7, 0xcd, 0xba, 0xff}}},\n};\n\n// 0x0700D348 - 0x0700D3B0\nstatic const Gfx bitdw_seg7_dl_0700D348[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_0700D208, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700D3B0 - 0x0700D3E8\nstatic const Gfx bitdw_seg7_dl_0700D3B0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_0700D308, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700D3E8 - 0x0700D460\nconst Gfx bitdw_seg7_dl_0700D3E8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitdw_seg7_dl_0700D348),\n    gsSPDisplayList(bitdw_seg7_dl_0700D3B0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitdw/ferris_platform/collision.inc.c",
    "content": "// 0x0700F898 - 0x0700F91C\nconst Collision bitdw_seg7_collision_0700F898[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-204, 0, 307),\n    COL_VERTEX(-204, 102, 307),\n    COL_VERTEX(-204, 102, -306),\n    COL_VERTEX(205, 0, 307),\n    COL_VERTEX(205, 102, 307),\n    COL_VERTEX(205, 102, -306),\n    COL_VERTEX(-204, 0, -306),\n    COL_VERTEX(205, 0, -306),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(1, 0, 3),\n    COL_TRI(4, 1, 3),\n    COL_TRI(1, 4, 5),\n    COL_TRI(2, 1, 5),\n    COL_TRI(6, 0, 2),\n    COL_TRI(3, 0, 6),\n    COL_TRI(4, 3, 7),\n    COL_TRI(7, 3, 6),\n    COL_TRI(5, 4, 7),\n    COL_TRI(5, 7, 6),\n    COL_TRI(2, 5, 6),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bitdw/ferris_platform/geo.inc.c",
    "content": "// 0x0E000588\nconst GeoLayout geo_bitdw_000588[] = {\n    GEO_CULLING_RADIUS(600),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitdw_seg7_dl_0700BB58),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitdw/ferris_platform/model.inc.c",
    "content": "// 0x0700B948 - 0x0700BA48\nstatic const Vtx bitdw_seg7_vertex_0700B948[] = {\n    {{{   205,      0,   -306}, 0, {  2012,  -2076}, {0x3d, 0x41, 0x74, 0xff}}},\n    {{{   205,      0,    307}, 0, {  2012,    990}, {0x3d, 0x41, 0x74, 0xff}}},\n    {{{  -204,      0,   -306}, 0, {     0,  -2076}, {0x3d, 0x41, 0x74, 0xff}}},\n    {{{  -204,      0,    307}, 0, {     0,    990}, {0x3d, 0x41, 0x74, 0xff}}},\n    {{{  -204,    102,   -306}, 0, {     0,  -2076}, {0xc7, 0xee, 0xff, 0xff}}},\n    {{{  -204,    102,    307}, 0, {     0,    990}, {0xc7, 0xee, 0xff, 0xff}}},\n    {{{   205,    102,   -306}, 0, {  2012,  -2076}, {0xc7, 0xee, 0xff, 0xff}}},\n    {{{   205,    102,    307}, 0, {  2012,    990}, {0xc7, 0xee, 0xff, 0xff}}},\n    {{{  -204,    102,   -306}, 0, {  2012,    990}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   205,    102,   -306}, 0, {     0,    990}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -204,      0,   -306}, 0, {  2012,      0}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   205,      0,   -306}, 0, {     0,      0}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   205,    102,    307}, 0, {     0,    990}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -204,    102,    307}, 0, { -2074,    990}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   205,      0,    307}, 0, {     0,      0}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -204,      0,    307}, 0, { -2074,      0}, {0x65, 0x7f, 0xff, 0xff}}},\n};\n\n// 0x0700BA48 - 0x0700BAC8\nstatic const Vtx bitdw_seg7_vertex_0700BA48[] = {\n    {{{  -204,      0,   -306}, 0, { -2074,      0}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  -204,      0,    307}, 0, {   990,      0}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  -204,    102,   -306}, 0, { -2074,    990}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  -204,    102,    307}, 0, {   990,    990}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{   205,    102,   -306}, 0, {  3034,    990}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{   205,    102,    307}, 0, {     0,    990}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{   205,      0,   -306}, 0, {  3034,      0}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{   205,      0,    307}, 0, {     0,      0}, {0x52, 0x61, 0xac, 0xff}}},\n};\n\n// 0x0700BAC8 - 0x0700BB58\nstatic const Gfx bitdw_seg7_dl_0700BAC8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bitdw_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_0700B948, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_0700BA48, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700BB58 - 0x0700BBC8\nconst Gfx bitdw_seg7_dl_0700BB58[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitdw_seg7_dl_0700BAC8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitdw/ferris_wheel_axle/collision.inc.c",
    "content": "// 0x0700F7F0 - 0x0700F898\nconst Collision bitdw_seg7_collision_0700F7F0[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0xA),\n    COL_VERTEX(0, 389, -50),\n    COL_VERTEX(-101, 102, -50),\n    COL_VERTEX(0, 0, 0),\n    COL_VERTEX(102, 102, -50),\n    COL_VERTEX(-388, 0, -50),\n    COL_VERTEX(-101, -101, -50),\n    COL_VERTEX(389, 0, -50),\n    COL_VERTEX(102, -101, -50),\n    COL_VERTEX(0, -388, -50),\n    COL_VERTEX(0, 0, -101),\n    COL_TRI_INIT(SURFACE_DEFAULT, 16),\n    COL_TRI(0, 1, 2),\n    COL_TRI(2, 3, 0),\n    COL_TRI(2, 1, 4),\n    COL_TRI(4, 5, 2),\n    COL_TRI(6, 3, 2),\n    COL_TRI(2, 7, 6),\n    COL_TRI(8, 7, 2),\n    COL_TRI(2, 5, 8),\n    COL_TRI(0, 3, 9),\n    COL_TRI(9, 3, 6),\n    COL_TRI(6, 7, 9),\n    COL_TRI(9, 7, 8),\n    COL_TRI(4, 1, 9),\n    COL_TRI(9, 1, 0),\n    COL_TRI(8, 5, 9),\n    COL_TRI(9, 5, 4),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bitdw/ferris_wheel_axle/geo.inc.c",
    "content": "// 0x0E000570\nconst GeoLayout geo_bitdw_000570[] = {\n    GEO_CULLING_RADIUS(600),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitdw_seg7_dl_0700B8D8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitdw/ferris_wheel_axle/model.inc.c",
    "content": "// 0x0700B4F0 - 0x0700B508\nstatic const Lights1 bitdw_seg7_lights_0700B4F0 = gdSPDefLights1(\n    0x39, 0x6f, 0x5d,\n    0x79, 0xeb, 0xc5, 0x28, 0x28, 0x28\n);\n\n// 0x0700B508 - 0x0700B5F8\nstatic const Vtx bitdw_seg7_vertex_0700B508[] = {\n    {{{     0,    389,    -50}, 0, {   938,      2}, {0xd5, 0x0f, 0x76, 0xff}}},\n    {{{  -101,    102,    -50}, 0, {  -542,    650}, {0xd5, 0x0f, 0x76, 0xff}}},\n    {{{     0,      0,      0}, 0, {     0,    650}, {0xd5, 0x0f, 0x76, 0xff}}},\n    {{{     0,      0,      0}, 0, {     0,    650}, {0x2a, 0x0f, 0x76, 0xff}}},\n    {{{   102,    102,    -50}, 0, {   990,    308}, {0x2a, 0x0f, 0x76, 0xff}}},\n    {{{     0,    389,    -50}, 0, {   938,      2}, {0x2a, 0x0f, 0x76, 0xff}}},\n    {{{     0,      0,      0}, 0, {     0,    650}, {0xf1, 0x2a, 0x76, 0xff}}},\n    {{{  -101,    102,    -50}, 0, {  -542,    650}, {0xf1, 0x2a, 0x76, 0xff}}},\n    {{{  -388,      0,    -50}, 0, { -2942,   1294}, {0xf1, 0x2a, 0x76, 0xff}}},\n    {{{  -388,      0,    -50}, 0, { -2942,   1294}, {0xf1, 0xd5, 0x76, 0xff}}},\n    {{{  -101,   -101,    -50}, 0, { -1052,    990}, {0xf1, 0xd5, 0x76, 0xff}}},\n    {{{     0,      0,      0}, 0, {     0,    650}, {0xf1, 0xd5, 0x76, 0xff}}},\n    {{{   389,      0,    -50}, 0, {  2880,      2}, {0x0f, 0x2a, 0x76, 0xff}}},\n    {{{   102,    102,    -50}, 0, {   990,    308}, {0x0f, 0x2a, 0x76, 0xff}}},\n    {{{     0,      0,      0}, 0, {     0,    650}, {0x0f, 0x2a, 0x76, 0xff}}},\n};\n\n// 0x0700B5F8 - 0x0700B6E8\nstatic const Vtx bitdw_seg7_vertex_0700B5F8[] = {\n    {{{     0,      0,      0}, 0, {     0,    650}, {0x0f, 0xd5, 0x76, 0xff}}},\n    {{{   102,   -101,    -50}, 0, {   480,    650}, {0x0f, 0xd5, 0x76, 0xff}}},\n    {{{   389,      0,    -50}, 0, {  2880,      2}, {0x0f, 0xd5, 0x76, 0xff}}},\n    {{{     0,   -388,    -50}, 0, { -1000,   1294}, {0x2a, 0xf1, 0x76, 0xff}}},\n    {{{   102,   -101,    -50}, 0, {   480,    650}, {0x2a, 0xf1, 0x76, 0xff}}},\n    {{{     0,      0,      0}, 0, {     0,    650}, {0x2a, 0xf1, 0x76, 0xff}}},\n    {{{     0,      0,      0}, 0, {     0,    650}, {0xd5, 0xf1, 0x76, 0xff}}},\n    {{{  -101,   -101,    -50}, 0, { -1052,    990}, {0xd5, 0xf1, 0x76, 0xff}}},\n    {{{     0,   -388,    -50}, 0, { -1000,   1294}, {0xd5, 0xf1, 0x76, 0xff}}},\n    {{{     0,    389,    -50}, 0, {   938,      2}, {0x2b, 0x0f, 0x8a, 0xff}}},\n    {{{   102,    102,    -50}, 0, {   990,    308}, {0x2b, 0x0f, 0x8a, 0xff}}},\n    {{{     0,      0,   -101}, 0, {     0,    650}, {0x2b, 0x0f, 0x8a, 0xff}}},\n    {{{     0,      0,   -101}, 0, {     0,    650}, {0x0f, 0x2b, 0x8a, 0xff}}},\n    {{{   102,    102,    -50}, 0, {   990,    308}, {0x0f, 0x2b, 0x8a, 0xff}}},\n    {{{   389,      0,    -50}, 0, {  2880,      2}, {0x0f, 0x2b, 0x8a, 0xff}}},\n};\n\n// 0x0700B6E8 - 0x0700B7D8\nstatic const Vtx bitdw_seg7_vertex_0700B6E8[] = {\n    {{{   389,      0,    -50}, 0, {  2880,      2}, {0x0f, 0xd4, 0x8a, 0xff}}},\n    {{{   102,   -101,    -50}, 0, {   480,    650}, {0x0f, 0xd4, 0x8a, 0xff}}},\n    {{{     0,      0,   -101}, 0, {     0,    650}, {0x0f, 0xd4, 0x8a, 0xff}}},\n    {{{     0,      0,   -101}, 0, {     0,    650}, {0x2b, 0xf1, 0x8a, 0xff}}},\n    {{{   102,   -101,    -50}, 0, {   480,    650}, {0x2b, 0xf1, 0x8a, 0xff}}},\n    {{{     0,   -388,    -50}, 0, { -1000,   1294}, {0x2b, 0xf1, 0x8a, 0xff}}},\n    {{{  -388,      0,    -50}, 0, { -2942,   1294}, {0xf1, 0x2b, 0x8a, 0xff}}},\n    {{{  -101,    102,    -50}, 0, {  -542,    650}, {0xf1, 0x2b, 0x8a, 0xff}}},\n    {{{     0,      0,   -101}, 0, {     0,    650}, {0xf1, 0x2b, 0x8a, 0xff}}},\n    {{{     0,      0,   -101}, 0, {     0,    650}, {0xd4, 0x0f, 0x8a, 0xff}}},\n    {{{  -101,    102,    -50}, 0, {  -542,    650}, {0xd4, 0x0f, 0x8a, 0xff}}},\n    {{{     0,    389,    -50}, 0, {   938,      2}, {0xd4, 0x0f, 0x8a, 0xff}}},\n    {{{     0,   -388,    -50}, 0, { -1000,   1294}, {0xd4, 0xf1, 0x8a, 0xff}}},\n    {{{  -101,   -101,    -50}, 0, { -1052,    990}, {0xd4, 0xf1, 0x8a, 0xff}}},\n    {{{     0,      0,   -101}, 0, {     0,    650}, {0xd4, 0xf1, 0x8a, 0xff}}},\n};\n\n// 0x0700B7D8 - 0x0700B808\nstatic const Vtx bitdw_seg7_vertex_0700B7D8[] = {\n    {{{     0,      0,   -101}, 0, {     0,    650}, {0xf1, 0xd4, 0x8a, 0xff}}},\n    {{{  -101,   -101,    -50}, 0, { -1052,    990}, {0xf1, 0xd4, 0x8a, 0xff}}},\n    {{{  -388,      0,    -50}, 0, { -2942,   1294}, {0xf1, 0xd4, 0x8a, 0xff}}},\n};\n\n// 0x0700B808 - 0x0700B8D8\nstatic const Gfx bitdw_seg7_dl_0700B808[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bitdw_seg7_lights_0700B4F0.l, 1),\n    gsSPLight(&bitdw_seg7_lights_0700B4F0.a, 2),\n    gsSPVertex(bitdw_seg7_vertex_0700B508, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_0700B5F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_0700B6E8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_0700B7D8, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700B8D8 - 0x0700B948\nconst Gfx bitdw_seg7_dl_0700B8D8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitdw_seg7_dl_0700B808),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitdw/geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"game/level_geo.h\"\n#include \"game/geo_misc.h\"\n#include \"game/camera.h\"\n#include \"game/moving_texture.h\"\n#include \"game/screen_transition.h\"\n#include \"game/paintings.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"levels/bitdw/header.h\"\n\n#include \"levels/bitdw/areas/1/starting_platform/geo.inc.c\"\n#include \"levels/bitdw/areas/1/large_platform/geo.inc.c\"\n#include \"levels/bitdw/areas/1/wooden_bridge_and_fences/geo.inc.c\"\n#include \"levels/bitdw/areas/1/quartzy_path_1/geo.inc.c\"\n#include \"levels/bitdw/areas/1/quartzy_path_2/geo.inc.c\"\n#include \"levels/bitdw/areas/1/quartzy_path_fences/geo.inc.c\"\n#include \"levels/bitdw/areas/1/octogonal_platform/geo.inc.c\"\n#include \"levels/bitdw/areas/1/platform_with_hill/geo.inc.c\"\n#include \"levels/bitdw/areas/1/wooden_platform/geo.inc.c\"\n#include \"levels/bitdw/areas/1/platforms_and_tilting/geo.inc.c\"\n#include \"levels/bitdw/areas/1/platforms_and_tilting_2/geo.inc.c\"\n#include \"levels/bitdw/areas/1/quartz_crystal/geo.inc.c\"\n#include \"levels/bitdw/areas/1/staircase_slope_and_platform/geo.inc.c\"\n#include \"levels/bitdw/areas/1/track_for_pyramid_platforms/geo.inc.c\"\n#include \"levels/bitdw/areas/1/narrow_path_platform/geo.inc.c\"\n#include \"levels/bitdw/sliding_platform/geo.inc.c\"\n#include \"levels/bitdw/seesaw_platform/geo.inc.c\"\n#include \"levels/bitdw/square_platform/geo.inc.c\"\n#include \"levels/bitdw/ferris_wheel_axle/geo.inc.c\"\n#include \"levels/bitdw/ferris_platform/geo.inc.c\"\n#include \"levels/bitdw/collapsing_stairs_1/geo.inc.c\"\n#include \"levels/bitdw/collapsing_stairs_2/geo.inc.c\"\n#include \"levels/bitdw/collapsing_stairs_3/geo.inc.c\"\n#include \"levels/bitdw/collapsing_stairs_4/geo.inc.c\"\n#include \"levels/bitdw/collapsing_stairs_5/geo.inc.c\"\n#include \"levels/bitdw/areas/1/geo.inc.c\"\n"
  },
  {
    "path": "levels/bitdw/header.h",
    "content": "#ifndef BITDW_HEADER_H\n#define BITDW_HEADER_H\n\n#include \"types.h\"\n\n// geo\nextern const GeoLayout geo_bitdw_0003C0[];\nextern const GeoLayout geo_bitdw_0003D8[];\nextern const GeoLayout geo_bitdw_0003F0[];\nextern const GeoLayout geo_bitdw_000408[];\nextern const GeoLayout geo_bitdw_000420[];\nextern const GeoLayout geo_bitdw_000438[];\nextern const GeoLayout geo_bitdw_000450[];\nextern const GeoLayout geo_bitdw_000468[];\nextern const GeoLayout geo_bitdw_000480[];\nextern const GeoLayout geo_bitdw_000498[];\nextern const GeoLayout geo_bitdw_0004B0[];\nextern const GeoLayout geo_bitdw_0004C8[];\nextern const GeoLayout geo_bitdw_0004E0[];\nextern const GeoLayout geo_bitdw_0004F8[];\nextern const GeoLayout geo_bitdw_000510[];\nextern const GeoLayout geo_bitdw_000528[];\nextern const GeoLayout geo_bitdw_000540[];\nextern const GeoLayout geo_bitdw_000558[];\nextern const GeoLayout geo_bitdw_000570[];\nextern const GeoLayout geo_bitdw_000588[];\nextern const GeoLayout geo_bitdw_0005A0[];\nextern const GeoLayout geo_bitdw_0005B8[];\nextern const GeoLayout geo_bitdw_0005D0[];\nextern const GeoLayout geo_bitdw_0005E8[];\nextern const GeoLayout geo_bitdw_000600[];\nextern const GeoLayout geo_bitdw_000618[];\n\n// leveldata\nextern const Gfx bitdw_seg7_dl_070020C8[];\nextern const Gfx bitdw_seg7_dl_070028A0[];\nextern const Gfx bitdw_seg7_dl_070032F8[];\nextern const Gfx bitdw_seg7_dl_07003608[];\nextern const Gfx bitdw_seg7_dl_07003BF0[];\nextern const Gfx bitdw_seg7_dl_07004318[];\nextern const Gfx bitdw_seg7_dl_070045C0[];\nextern const Gfx bitdw_seg7_dl_07005078[];\nextern const Gfx bitdw_seg7_dl_07005BC0[];\nextern const Gfx bitdw_seg7_dl_070065F0[];\nextern const Gfx bitdw_seg7_dl_07007AA8[];\nextern const Gfx bitdw_seg7_dl_07008FF0[];\nextern const Gfx bitdw_seg7_dl_070093B0[];\nextern const Gfx bitdw_seg7_dl_0700A368[];\nextern const Gfx bitdw_seg7_dl_0700A6A8[];\nextern const Gfx bitdw_seg7_dl_0700AD10[];\nextern const Gfx bitdw_seg7_dl_0700AFA0[];\nextern const Gfx bitdw_seg7_dl_0700B220[];\nextern const Gfx bitdw_seg7_dl_0700B480[];\nextern const Gfx bitdw_seg7_dl_0700B8D8[];\nextern const Gfx bitdw_seg7_dl_0700BB58[];\nextern const Gfx bitdw_seg7_dl_0700C0E0[];\nextern const Gfx bitdw_seg7_dl_0700C670[];\nextern const Gfx bitdw_seg7_dl_0700CC00[];\nextern const Gfx bitdw_seg7_dl_0700D190[];\nextern const Gfx bitdw_seg7_dl_0700D3E8[];\nextern const Collision bitdw_seg7_collision_level[];\nextern const MacroObject bitdw_seg7_macro_objs[];\nextern const Collision bitdw_seg7_collision_0700F688[];\nextern const Collision bitdw_seg7_collision_0700F70C[];\nextern const Collision bitdw_seg7_collision_moving_pyramid[];\nextern const Collision bitdw_seg7_collision_0700F7F0[];\nextern const Collision bitdw_seg7_collision_0700F898[];\nextern const Collision bitdw_seg7_collision_0700F91C[];\nextern const Collision bitdw_seg7_collision_0700FA3C[];\nextern const Collision bitdw_seg7_collision_0700FB5C[];\nextern const Collision bitdw_seg7_collision_0700FC7C[];\nextern const Collision bitdw_seg7_collision_0700FD9C[];\n\n// script\nextern const LevelScript level_bitdw_entry[];\n\n#endif\n"
  },
  {
    "path": "levels/bitdw/level.yaml",
    "content": "# Bowser in the Dark World\nshort-name: bitdw\nfull-name: Bowser in the Dark World\ntexture-file: [\"/texture.inc.c\"]\narea-count: 1\nobjects: [collapsing_stairs_1, collapsing_stairs_2, collapsing_stairs_3, collapsing_stairs_4, collapsing_stairs_5, ferris_platform, ferris_wheel_axle, seesaw_platform, sliding_platform, square_platform]\nshared-path: []\n# loaded files\nskybox-bin: bidw\ntexture-bin: sky\neffects: false\nactor-bins: [group11, group17]\ncommon-bin: [common0]\n"
  },
  {
    "path": "levels/bitdw/leveldata.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"surface_terrains.h\"\n#include \"moving_texture_macros.h\"\n#include \"level_misc_macros.h\"\n#include \"macro_presets.h\"\n#include \"special_presets.h\"\n#include \"textures.h\"\n#include \"dialog_ids.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/bitdw/texture.inc.c\"\n#include \"levels/bitdw/areas/1/1/model.inc.c\"\n#include \"levels/bitdw/areas/1/starting_platform/model.inc.c\"\n#include \"levels/bitdw/areas/1/large_platform/model.inc.c\"\n#include \"levels/bitdw/areas/1/wooden_bridge_and_fences/model.inc.c\"\n#include \"levels/bitdw/areas/1/quartzy_path_1/model.inc.c\"\n#include \"levels/bitdw/areas/1/quartzy_path_2/model.inc.c\"\n#include \"levels/bitdw/areas/1/quartzy_path_fences/model.inc.c\"\n#include \"levels/bitdw/areas/1/octogonal_platform/model.inc.c\"\n#include \"levels/bitdw/areas/1/platform_with_hill/model.inc.c\"\n#include \"levels/bitdw/areas/1/wooden_platform/model.inc.c\"\n#include \"levels/bitdw/areas/1/platforms_and_tilting/model.inc.c\"\n#include \"levels/bitdw/areas/1/platforms_and_tilting_2/model.inc.c\"\n#include \"levels/bitdw/areas/1/quartz_crystal/model.inc.c\"\n#include \"levels/bitdw/areas/1/staircase_slope_and_platform/model.inc.c\"\n#include \"levels/bitdw/areas/1/track_for_pyramid_platforms/model.inc.c\"\n#include \"levels/bitdw/areas/1/narrow_path_platform/model.inc.c\"\n#include \"levels/bitdw/sliding_platform/model.inc.c\"\n#include \"levels/bitdw/seesaw_platform/model.inc.c\"\n#include \"levels/bitdw/square_platform/model.inc.c\"\n#include \"levels/bitdw/ferris_wheel_axle/model.inc.c\"\n#include \"levels/bitdw/ferris_platform/model.inc.c\"\n#include \"levels/bitdw/collapsing_stairs_1/model.inc.c\"\n#include \"levels/bitdw/collapsing_stairs_2/model.inc.c\"\n#include \"levels/bitdw/collapsing_stairs_3/model.inc.c\"\n#include \"levels/bitdw/collapsing_stairs_4/model.inc.c\"\n#include \"levels/bitdw/collapsing_stairs_5/model.inc.c\"\n#include \"levels/bitdw/areas/1/collision.inc.c\"\n#include \"levels/bitdw/areas/1/macro.inc.c\"\n#include \"levels/bitdw/sliding_platform/collision.inc.c\"\n#include \"levels/bitdw/seesaw_platform/collision.inc.c\"\n#include \"levels/bitdw/square_platform/collision.inc.c\"\n#include \"levels/bitdw/ferris_wheel_axle/collision.inc.c\"\n#include \"levels/bitdw/ferris_platform/collision.inc.c\"\n#include \"levels/bitdw/collapsing_stairs_1/collision.inc.c\"\n#include \"levels/bitdw/collapsing_stairs_2/collision.inc.c\"\n#include \"levels/bitdw/collapsing_stairs_3/collision.inc.c\"\n#include \"levels/bitdw/collapsing_stairs_4/collision.inc.c\"\n#include \"levels/bitdw/collapsing_stairs_5/collision.inc.c\"\n"
  },
  {
    "path": "levels/bitdw/script.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"behavior_data.h\"\n#include \"model_ids.h\"\n#include \"seq_ids.h\"\n#include \"dialog_ids.h\"\n#include \"segment_symbols.h\"\n#include \"level_commands.h\"\n\n#include \"game/level_update.h\"\n\n#include \"levels/scripts.h\"\n\n#include \"actors/common1.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/bitdw/header.h\"\n\nstatic const LevelScript script_func_local_1[] = {\n    OBJECT(/*model*/ MODEL_BITDW_SQUARE_PLATFORM,   /*pos*/ -1966, -3154,  3586, /*angle*/ 0, 0, 0,  /*bhvParam*/ BPARAM2(0x00), /*bhv*/ bhvSquarishPathMoving),\n    OBJECT(/*model*/ MODEL_BITDW_SQUARE_PLATFORM,   /*pos*/ -1352, -3154,  4200, /*angle*/ 0, 0, 0,  /*bhvParam*/ BPARAM2(0x02), /*bhv*/ bhvSquarishPathMoving),\n    OBJECT(/*model*/ MODEL_BITDW_SQUARE_PLATFORM,   /*pos*/ -2963,  1017, -2464, /*angle*/ 0, 0, 0,  /*bhvParam*/ BPARAM2(0x00), /*bhv*/ bhvSquarishPathMoving),\n    OBJECT(/*model*/ MODEL_BITDW_SQUARE_PLATFORM,   /*pos*/ -2349,  1017, -1849, /*angle*/ 0, 0, 0,  /*bhvParam*/ BPARAM2(0x02), /*bhv*/ bhvSquarishPathMoving),\n    OBJECT(/*model*/ MODEL_BITDW_SQUARE_PLATFORM,   /*pos*/ -2349,  1017, -1235, /*angle*/ 0, 0, 0,  /*bhvParam*/ BPARAM2(0x00), /*bhv*/ bhvSquarishPathMoving),\n    OBJECT(/*model*/ MODEL_BITDW_SQUARE_PLATFORM,   /*pos*/ -1735,  1017,  -621, /*angle*/ 0, 0, 0,  /*bhvParam*/ BPARAM2(0x02), /*bhv*/ bhvSquarishPathMoving),\n    OBJECT(/*model*/ MODEL_BITDW_SEESAW_PLATFORM,   /*pos*/  1491,  1273,   512, /*angle*/ 0, 90, 0, /*bhvParam*/ 0, /*bhv*/ bhvSeesawPlatform),\n    OBJECT(/*model*/ MODEL_BITDW_SEESAW_PLATFORM,   /*pos*/  -147,   894,   512, /*angle*/ 0, 90, 0, /*bhvParam*/ 0, /*bhv*/ bhvSeesawPlatform),\n    OBJECT(/*model*/ MODEL_BITDW_SLIDING_PLATFORM,  /*pos*/ -5728,   819, -2151, /*angle*/ 0, 0, 0,  /*bhvParam*/ BPARAM1(0x03) | BPARAM2(0xCE), /*bhv*/ bhvSlidingPlatform2),\n    OBJECT(/*model*/ MODEL_BITDW_FERRIS_WHEEL_AXLE, /*pos*/  -204, -1924,  3381, /*angle*/ 0, 0, 0,  /*bhvParam*/ BPARAM2(0x01), /*bhv*/ bhvFerrisWheelAxle),\n    OBJECT(/*model*/ MODEL_BITDW_STAIRCASE,         /*pos*/  5279,  1740,    -6, /*angle*/ 0, 0, 0,  /*bhvParam*/ BPARAM2(0x01), /*bhv*/ bhvAnimatesOnFloorSwitchPress),\n    OBJECT(/*model*/ MODEL_PURPLE_SWITCH,           /*pos*/  3922,  1740,    -7, /*angle*/ 0, 0, 0,  /*bhvParam*/ 0, /*bhv*/ bhvFloorSwitchAnimatesObject),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_2[] = {\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -3092, -2795, 2842, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlamethrower),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/  2463, -2386, 2844, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlamethrower),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_3[] = {\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/  7180,  3000,    0, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_1), /*bhv*/ bhvBowserCourseRedCoinStar),\n    RETURN(),\n};\n\nconst LevelScript level_bitdw_entry[] = {\n    INIT_LEVEL(),\n    LOAD_MIO0        (/*seg*/ 0x07, _bitdw_segment_7SegmentRomStart, _bitdw_segment_7SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x0A, _bidw_skybox_mio0SegmentRomStart, _bidw_skybox_mio0SegmentRomEnd),\n    LOAD_MIO0_TEXTURE(/*seg*/ 0x09, _sky_mio0SegmentRomStart, _sky_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x05, _group11_mio0SegmentRomStart, _group11_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0C, _group11_geoSegmentRomStart,  _group11_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x06, _group17_mio0SegmentRomStart, _group17_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0D, _group17_geoSegmentRomStart,  _group17_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x08, _common0_mio0SegmentRomStart, _common0_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0F, _common0_geoSegmentRomStart,  _common0_geoSegmentRomEnd),\n    ALLOC_LEVEL_POOL(),\n    MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),\n    JUMP_LINK(script_func_global_12),\n    JUMP_LINK(script_func_global_18),\n    JUMP_LINK(script_func_global_1),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_03,       geo_bitdw_0003C0),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_04,       geo_bitdw_0003D8),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_05,       geo_bitdw_0003F0),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_06,       geo_bitdw_000408),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_07,       geo_bitdw_000420),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_08,       geo_bitdw_000438),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_09,       geo_bitdw_000450),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_0A,       geo_bitdw_000468),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_0B,       geo_bitdw_000480),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_0C,       geo_bitdw_000498),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_0D,       geo_bitdw_0004B0),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_0E,       geo_bitdw_0004C8),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_0F,       geo_bitdw_0004E0),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_10,       geo_bitdw_0004F8),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_11,       geo_bitdw_000510),\n    LOAD_MODEL_FROM_GEO(MODEL_BITDW_WARP_PIPE,         warp_pipe_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_BITDW_SQUARE_PLATFORM,   geo_bitdw_000558),\n    LOAD_MODEL_FROM_GEO(MODEL_BITDW_SEESAW_PLATFORM,   geo_bitdw_000540),\n    LOAD_MODEL_FROM_GEO(MODEL_BITDW_SLIDING_PLATFORM,  geo_bitdw_000528),\n    LOAD_MODEL_FROM_GEO(MODEL_BITDW_FERRIS_WHEEL_AXLE, geo_bitdw_000570),\n    LOAD_MODEL_FROM_GEO(MODEL_BITDW_BLUE_PLATFORM,     geo_bitdw_000588),\n    LOAD_MODEL_FROM_GEO(MODEL_BITDW_STAIRCASE_FRAME4,  geo_bitdw_0005A0),\n    LOAD_MODEL_FROM_GEO(MODEL_BITDW_STAIRCASE_FRAME3,  geo_bitdw_0005B8),\n    LOAD_MODEL_FROM_GEO(MODEL_BITDW_STAIRCASE_FRAME2,  geo_bitdw_0005D0),\n    LOAD_MODEL_FROM_GEO(MODEL_BITDW_STAIRCASE_FRAME1,  geo_bitdw_0005E8),\n    LOAD_MODEL_FROM_GEO(MODEL_BITDW_STAIRCASE,         geo_bitdw_000600),\n\n    AREA(/*index*/ 1, geo_bitdw_000618),\n        OBJECT(/*model*/ MODEL_NONE,            /*pos*/ -7443, -2153, 3886, /*angle*/ 0, 90, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvAirborneWarp),\n        OBJECT(/*model*/ MODEL_BITDW_WARP_PIPE, /*pos*/  6816,  2860,   -7, /*angle*/ 0, 0, 0,  /*bhvParam*/ BPARAM2(WARP_NODE_0B), /*bhv*/ bhvWarpPipe),\n        OBJECT(/*model*/ MODEL_NONE,            /*pos*/  5910,  3500,   -7, /*angle*/ 0, 90, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0C), /*bhv*/ bhvDeathWarp),\n        WARP_NODE(/*id*/ WARP_NODE_0A,    /*destLevel*/ LEVEL_BITDW,    /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_0B,    /*destLevel*/ LEVEL_BOWSER_1, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_0C,    /*destLevel*/ LEVEL_BITDW,    /*destArea*/ 1, /*destNode*/ WARP_NODE_0C, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH, /*destLevel*/ LEVEL_CASTLE,   /*destArea*/ 1, /*destNode*/ WARP_NODE_25, /*flags*/ WARP_NO_CHECKPOINT),\n        JUMP_LINK(script_func_local_1),\n        JUMP_LINK(script_func_local_2),\n        JUMP_LINK(script_func_local_3),\n        TERRAIN(/*terrainData*/ bitdw_seg7_collision_level),\n        MACRO_OBJECTS(/*objList*/ bitdw_seg7_macro_objs),\n        SHOW_DIALOG(/*index*/ 0x00, DIALOG_090),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0000, /*seq*/ SEQ_LEVEL_KOOPA_ROAD),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_STONE),\n    END_AREA(),\n\n    FREE_LEVEL_POOL(),\n    MARIO_POS(/*area*/ 1, /*yaw*/ 90, /*pos*/ -7443, -3153, 3886),\n    CALL(/*arg*/ 0, /*func*/ lvl_init_or_update),\n    CALL_LOOP(/*arg*/ 1, /*func*/ lvl_init_or_update),\n    CLEAR_LEVEL(),\n    SLEEP_BEFORE_EXIT(/*frames*/ 1),\n    EXIT(),\n};\n"
  },
  {
    "path": "levels/bitdw/seesaw_platform/collision.inc.c",
    "content": "// 0x0700F70C - 0x0700F790\nconst Collision bitdw_seg7_collision_0700F70C[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(307, 0, -767),\n    COL_VERTEX(307, 102, -818),\n    COL_VERTEX(307, 102, 819),\n    COL_VERTEX(-306, 0, -767),\n    COL_VERTEX(-306, 102, -818),\n    COL_VERTEX(-306, 102, 819),\n    COL_VERTEX(-306, 0, 768),\n    COL_VERTEX(307, 0, 768),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(3, 1, 0),\n    COL_TRI(3, 4, 1),\n    COL_TRI(1, 4, 5),\n    COL_TRI(1, 5, 2),\n    COL_TRI(6, 4, 3),\n    COL_TRI(6, 5, 4),\n    COL_TRI(7, 2, 5),\n    COL_TRI(7, 5, 6),\n    COL_TRI(0, 2, 7),\n    COL_TRI(3, 0, 7),\n    COL_TRI(3, 7, 6),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bitdw/seesaw_platform/geo.inc.c",
    "content": "// 0x0E000540\nconst GeoLayout geo_bitdw_000540[] = {\n    GEO_CULLING_RADIUS(1100),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitdw_seg7_dl_0700B220),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitdw/seesaw_platform/model.inc.c",
    "content": "// 0x0700B010 - 0x0700B110\nstatic const Vtx bitdw_seg7_vertex_0700B010[] = {\n    {{{   307,    102,   -818}, 0, {  5760,  -4460}, {0x8d, 0xf0, 0xe3, 0xff}}},\n    {{{  -306,    102,   -818}, 0, {  3716,  -4460}, {0x8d, 0xf0, 0xe3, 0xff}}},\n    {{{  -306,    102,    819}, 0, {  3716,    990}, {0x8d, 0xf0, 0xe3, 0xff}}},\n    {{{   307,    102,    819}, 0, {  5760,    990}, {0x8d, 0xf0, 0xe3, 0xff}}},\n    {{{  -306,      0,    768}, 0, {     0,    990}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  -306,    102,    819}, 0, {   990,   1158}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  -306,    102,   -818}, 0, {   990,  -4290}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  -306,      0,   -767}, 0, {     0,  -4120}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{   307,      0,   -767}, 0, {     0,  -4120}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{   307,    102,    819}, 0, {   990,   1158}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{   307,      0,    768}, 0, {     0,    990}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{   307,    102,   -818}, 0, {   990,  -4290}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  -306,      0,   -767}, 0, {  3716,  -4290}, {0x00, 0x96, 0x96, 0xff}}},\n    {{{   307,    102,   -818}, 0, {  5760,  -4460}, {0x00, 0x96, 0x96, 0xff}}},\n    {{{   307,      0,   -767}, 0, {  5760,  -4290}, {0x00, 0x96, 0x96, 0xff}}},\n    {{{  -306,    102,   -818}, 0, {  3716,  -4460}, {0x00, 0x96, 0x96, 0xff}}},\n};\n\n// 0x0700B110 - 0x0700B190\nstatic const Vtx bitdw_seg7_vertex_0700B110[] = {\n    {{{   307,      0,    768}, 0, {  5760,    820}, {0x00, 0x96, 0x96, 0xff}}},\n    {{{   307,    102,    819}, 0, {  5760,    990}, {0x00, 0x96, 0x96, 0xff}}},\n    {{{  -306,    102,    819}, 0, {  3716,    990}, {0x00, 0x96, 0x96, 0xff}}},\n    {{{  -306,      0,    768}, 0, {  3716,    820}, {0x00, 0x96, 0x96, 0xff}}},\n    {{{  -306,      0,   -767}, 0, {  3716,  -4290}, {0x00, 0x5d, 0x5d, 0xff}}},\n    {{{   307,      0,    768}, 0, {  5760,    820}, {0x00, 0x5d, 0x5d, 0xff}}},\n    {{{  -306,      0,    768}, 0, {  3716,    820}, {0x00, 0x5d, 0x5d, 0xff}}},\n    {{{   307,      0,   -767}, 0, {  5760,  -4290}, {0x00, 0x5d, 0x5d, 0xff}}},\n};\n\n// 0x0700B190 - 0x0700B220\nstatic const Gfx bitdw_seg7_dl_0700B190[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_0700B010, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_0700B110, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700B220 - 0x0700B290\nconst Gfx bitdw_seg7_dl_0700B220[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitdw_seg7_dl_0700B190),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitdw/sliding_platform/collision.inc.c",
    "content": "// 0x0700F688 - 0x0700F70C\nconst Collision bitdw_seg7_collision_0700F688[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-409, 205, 205),\n    COL_VERTEX(-409, 205, -204),\n    COL_VERTEX(-409, 0, -204),\n    COL_VERTEX(-409, 0, 205),\n    COL_VERTEX(973, 0, 205),\n    COL_VERTEX(973, 0, -204),\n    COL_VERTEX(973, 205, 205),\n    COL_VERTEX(973, 205, -204),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(2, 4, 3),\n    COL_TRI(2, 5, 4),\n    COL_TRI(1, 5, 2),\n    COL_TRI(6, 3, 4),\n    COL_TRI(7, 6, 4),\n    COL_TRI(7, 4, 5),\n    COL_TRI(7, 0, 6),\n    COL_TRI(7, 1, 0),\n    COL_TRI(1, 7, 5),\n    COL_TRI(6, 0, 3),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bitdw/sliding_platform/geo.inc.c",
    "content": "// 0x0E000528\nconst GeoLayout geo_bitdw_000528[] = {\n    GEO_CULLING_RADIUS(1500),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitdw_seg7_dl_0700AFA0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitdw/sliding_platform/model.inc.c",
    "content": "// 0x0700AD90 - 0x0700AE90\nstatic const Vtx bitdw_seg7_vertex_0700AD90[] = {\n    {{{  -409,    205,   -204}, 0, {   990,   2010}, {0xce, 0x91, 0x16, 0xff}}},\n    {{{  -409,      0,   -204}, 0, {   478,   1498}, {0xce, 0x91, 0x16, 0xff}}},\n    {{{  -409,      0,    205}, 0, {  1502,    478}, {0xce, 0x91, 0x16, 0xff}}},\n    {{{  -409,    205,    205}, 0, {  2012,    990}, {0xce, 0x91, 0x16, 0xff}}},\n    {{{   973,      0,   -204}, 0, {   480,   1498}, {0xce, 0x91, 0x16, 0xff}}},\n    {{{   973,    205,    205}, 0, {  2012,    990}, {0xce, 0x91, 0x16, 0xff}}},\n    {{{   973,      0,    205}, 0, {  1500,    480}, {0xce, 0x91, 0x16, 0xff}}},\n    {{{   973,    205,   -204}, 0, {   990,   2010}, {0xce, 0x91, 0x16, 0xff}}},\n    {{{  -409,    205,   -204}, 0, {   478,    478}, {0xce, 0xaf, 0x16, 0xff}}},\n    {{{   973,      0,   -204}, 0, {  3418,   4438}, {0xce, 0xaf, 0x16, 0xff}}},\n    {{{  -409,      0,   -204}, 0, {     0,    990}, {0xce, 0xaf, 0x16, 0xff}}},\n    {{{   973,    205,   -204}, 0, {  3928,   3926}, {0xce, 0xaf, 0x16, 0xff}}},\n    {{{   973,    205,    205}, 0, {  3928,   3926}, {0xce, 0xaf, 0x16, 0xff}}},\n    {{{  -409,      0,    205}, 0, {     0,    990}, {0xce, 0xaf, 0x16, 0xff}}},\n    {{{   973,      0,    205}, 0, {  3418,   4438}, {0xce, 0xaf, 0x16, 0xff}}},\n    {{{  -409,    205,    205}, 0, {   478,    478}, {0xce, 0xaf, 0x16, 0xff}}},\n};\n\n// 0x0700AE90 - 0x0700AF10\nstatic const Vtx bitdw_seg7_vertex_0700AE90[] = {\n    {{{  -409,      0,   -204}, 0, {   990,   2010}, {0x91, 0x6d, 0x00, 0xff}}},\n    {{{   973,      0,   -204}, 0, {  4440,  -1438}, {0x91, 0x6d, 0x00, 0xff}}},\n    {{{   973,      0,    205}, 0, {  3418,  -2460}, {0x91, 0x6d, 0x00, 0xff}}},\n    {{{  -409,      0,    205}, 0, {     0,    990}, {0x91, 0x6d, 0x00, 0xff}}},\n    {{{  -409,    205,    205}, 0, {     0,    990}, {0xff, 0xe5, 0x65, 0xff}}},\n    {{{   973,    205,   -204}, 0, {  4440,  -1438}, {0xff, 0xe5, 0x65, 0xff}}},\n    {{{  -409,    205,   -204}, 0, {   990,   2010}, {0xff, 0xe5, 0x65, 0xff}}},\n    {{{   973,    205,    205}, 0, {  3418,  -2460}, {0xff, 0xe5, 0x65, 0xff}}},\n};\n\n// 0x0700AF10 - 0x0700AFA0\nstatic const Gfx bitdw_seg7_dl_0700AF10[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_0700AD90, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_0700AE90, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700AFA0 - 0x0700B010\nconst Gfx bitdw_seg7_dl_0700AFA0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitdw_seg7_dl_0700AF10),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitdw/square_platform/collision.inc.c",
    "content": "// 0x0700F790 - 0x0700F7F0\nconst Collision bitdw_seg7_collision_moving_pyramid[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x6),\n    COL_VERTEX(0, 102, 0),\n    COL_VERTEX(307, 0, -306),\n    COL_VERTEX(-306, 0, -306),\n    COL_VERTEX(307, 0, 307),\n    COL_VERTEX(0, -306, 0),\n    COL_VERTEX(-306, 0, 307),\n    COL_TRI_INIT(SURFACE_DEFAULT, 8),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI(1, 3, 4),\n    COL_TRI(2, 1, 4),\n    COL_TRI(3, 0, 5),\n    COL_TRI(5, 4, 3),\n    COL_TRI(4, 5, 2),\n    COL_TRI(2, 5, 0),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bitdw/square_platform/geo.inc.c",
    "content": "// 0x0E000558\nconst GeoLayout geo_bitdw_000558[] = {\n    GEO_CULLING_RADIUS(600),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitdw_seg7_dl_0700B480),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitdw/square_platform/model.inc.c",
    "content": "// 0x0700B290 - 0x0700B380\nstatic const Vtx bitdw_seg7_vertex_0700B290[] = {\n    {{{     0,    102,      0}, 0, {   990,    -40}, {0xb4, 0xee, 0xfe, 0xff}}},\n    {{{   307,      0,    307}, 0, {     0,   2012}, {0xb4, 0xee, 0xfe, 0xff}}},\n    {{{   307,      0,   -306}, 0, {  2012,   2012}, {0xb4, 0xee, 0xfe, 0xff}}},\n    {{{     0,    102,      0}, 0, {  2012,    -44}, {0xb4, 0xee, 0xfe, 0xff}}},\n    {{{   307,      0,   -306}, 0, {     0,   2012}, {0xb4, 0xee, 0xfe, 0xff}}},\n    {{{  -306,      0,   -306}, 0, {  4056,   2012}, {0xb4, 0xee, 0xfe, 0xff}}},\n    {{{     0,   -306,      0}, 0, {   990,      0}, {0x52, 0x77, 0x8d, 0xff}}},\n    {{{  -306,      0,    307}, 0, {  1994,   2012}, {0x52, 0x77, 0x8d, 0xff}}},\n    {{{  -306,      0,   -306}, 0, {     0,   2012}, {0x52, 0x77, 0x8d, 0xff}}},\n    {{{  -306,      0,    307}, 0, {     0,   2012}, {0x55, 0x86, 0x97, 0xff}}},\n    {{{     0,   -306,      0}, 0, {  2032,    -44}, {0x55, 0x86, 0x97, 0xff}}},\n    {{{   307,      0,    307}, 0, {  4138,   2012}, {0x55, 0x86, 0x97, 0xff}}},\n    {{{   307,      0,   -306}, 0, {  2012,   2012}, {0x67, 0x9b, 0xb0, 0xff}}},\n    {{{   307,      0,    307}, 0, {     0,   2012}, {0x67, 0x9b, 0xb0, 0xff}}},\n    {{{     0,   -306,      0}, 0, {   990,    -40}, {0x67, 0x9b, 0xb0, 0xff}}},\n};\n\n// 0x0700B380 - 0x0700B410\nstatic const Vtx bitdw_seg7_vertex_0700B380[] = {\n    {{{  -306,      0,   -306}, 0, {  4056,   2012}, {0x67, 0x9b, 0xb0, 0xff}}},\n    {{{   307,      0,   -306}, 0, {     0,   2012}, {0x67, 0x9b, 0xb0, 0xff}}},\n    {{{     0,   -306,      0}, 0, {  2012,    -44}, {0x67, 0x9b, 0xb0, 0xff}}},\n    {{{  -306,      0,   -306}, 0, {     0,   2012}, {0x8c, 0xbf, 0xd8, 0xff}}},\n    {{{  -306,      0,    307}, 0, {  1994,   2012}, {0x8c, 0xbf, 0xd8, 0xff}}},\n    {{{     0,    102,      0}, 0, {   990,      0}, {0x8c, 0xbf, 0xd8, 0xff}}},\n    {{{   307,      0,    307}, 0, {  4138,   2012}, {0x8c, 0xbf, 0xd8, 0xff}}},\n    {{{     0,    102,      0}, 0, {  2032,    -44}, {0x8c, 0xbf, 0xd8, 0xff}}},\n    {{{  -306,      0,    307}, 0, {     0,   2012}, {0x8c, 0xbf, 0xd8, 0xff}}},\n};\n\n// 0x0700B410 - 0x0700B480\nstatic const Gfx bitdw_seg7_dl_0700B410[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitdw_seg7_vertex_0700B290, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bitdw_seg7_vertex_0700B380, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700B480 - 0x0700B4F0\nconst Gfx bitdw_seg7_dl_0700B480[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitdw_seg7_dl_0700B410),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitdw/texture.inc.c",
    "content": "// 0x07000000 - 0x07000002\nALIGNED8 static const Texture bitdw_seg7_texture_07000000[] = {\n#include \"levels/bitdw/0.rgba16.inc.c\"\n};\n\n// 0x07000800 - 0x07000802\nALIGNED8 static const Texture bitdw_seg7_texture_07000800[] = {\n#include \"levels/bitdw/1.rgba16.inc.c\"\n};\n\n// 0x07001000 - 0x07001002\nALIGNED8 static const Texture bitdw_seg7_texture_07001000[] = {\n#include \"levels/bitdw/2.rgba16.inc.c\"\n};\n\n// 0x07001800 - 0x07001802\nALIGNED8 static const Texture bitdw_seg7_texture_07001800[] = {\n#include \"levels/bitdw/3.rgba16.inc.c\"\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/1/model.inc.c",
    "content": "// 0x07002000 - 0x070020C0\nstatic const Vtx bitfs_seg7_vertex_07002000[] = {\n    {{{  1280,    348,   -293}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1178,    348,   -293}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1280,    266,   -231}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1178,    266,   -231}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1330,   3625,   -703}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1433,   3625,   -703}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1330,   3543,   -642}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1433,   3543,   -642}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3173,   3625,   -707}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3276,   3625,   -707}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3173,   3543,   -646}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3276,   3543,   -646}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070020C0 - 0x07002118\nstatic const Gfx bitfs_seg7_dl_070020C0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_metal_hole),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_07002000, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07002118 - 0x07002188\nconst Gfx bitfs_seg7_dl_07002118[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_070020C0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/10/geo.inc.c",
    "content": "// 0x0E000570\nconst GeoLayout bitfs_geo_000570[] = {\n    GEO_CULLING_RADIUS(500),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitfs_seg7_dl_07007958),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/10/model.inc.c",
    "content": "// 0x07007798 - 0x07007898\nstatic const Vtx bitfs_seg7_vertex_07007798[] = {\n    {{{   102,      0,    205}, 0, {  4558,  -4386}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{    51,    205,     51}, 0, {  4812,  -3874}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   -50,    205,     51}, 0, {  4558,  -3618}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -101,      0,    205}, 0, {  4046,  -3874}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{    51,    205,    -50}, 0, {  5068,  -3618}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   -50,    205,    -50}, 0, {  4812,  -3364}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   -50,    205,     51}, 0, {  4558,  -3618}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{    51,    205,     51}, 0, {  4812,  -3874}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -101,      0,    205}, 0, {  4046,  -3874}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   -50,    205,     51}, 0, {  4558,  -3618}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -153,      0,   -153}, 0, {  4812,  -2852}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   -50,    205,    -50}, 0, {  4812,  -3364}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   154,      0,   -153}, 0, {  5580,  -3618}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{    51,    205,     51}, 0, {  4812,  -3874}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   102,      0,    205}, 0, {  4558,  -4386}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{    51,    205,    -50}, 0, {  5068,  -3618}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x07007898 - 0x070078D8\nstatic const Vtx bitfs_seg7_vertex_07007898[] = {\n    {{{  -153,      0,   -153}, 0, {  4812,  -2852}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{    51,    205,    -50}, 0, {  5068,  -3618}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   154,      0,   -153}, 0, {  5580,  -3618}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   -50,    205,    -50}, 0, {  4812,  -3364}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x070078D8 - 0x07007958\nstatic const Gfx bitfs_seg7_dl_070078D8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_07007798, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07007898, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007958 - 0x070079C8\nconst Gfx bitfs_seg7_dl_07007958[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_070078D8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/11/geo.inc.c",
    "content": "// 0x0E000588\nconst GeoLayout bitfs_geo_000588[] = {\n    GEO_CULLING_RADIUS(2200),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitfs_seg7_dl_07008F48),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/11/model.inc.c",
    "content": "// 0x070079C8 - 0x07007AC8\nstatic const Vtx bitfs_seg7_vertex_070079C8[] = {\n    {{{   870,    102,    128}, 0, {   606,   -542}, {0xaf, 0xaf, 0xaf, 0xff}}},\n    {{{  1382,   -306,    742}, 0, {   478,    480}, {0xaf, 0xaf, 0xaf, 0xff}}},\n    {{{  1382,   -306,    128}, 0, {   478,    480}, {0xaf, 0xaf, 0xaf, 0xff}}},\n    {{{   870,    102,    742}, 0, {   606,   -542}, {0xaf, 0xaf, 0xaf, 0xff}}},\n    {{{   358,   -306,    128}, 0, {   734,    480}, {0xaf, 0xaf, 0xaf, 0xff}}},\n    {{{   358,   -306,    742}, 0, {   734,    480}, {0xaf, 0xaf, 0xaf, 0xff}}},\n    {{{   768,    102,    128}, 0, {   632,   -542}, {0xaf, 0xaf, 0xaf, 0xff}}},\n    {{{   768,    102,    742}, 0, {   632,   -542}, {0xaf, 0xaf, 0xaf, 0xff}}},\n    {{{   358,   -306,    128}, 0, {   734,    480}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   768,    102,    128}, 0, {   632,   -542}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   870,    102,    128}, 0, {   606,   -542}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1382,   -306,    128}, 0, {   478,    480}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1382,   -306,    742}, 0, {   478,    480}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   870,    102,    742}, 0, {   606,   -542}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   768,    102,    742}, 0, {   632,   -542}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   358,   -306,    742}, 0, {   734,    480}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x07007AC8 - 0x07007B08\nstatic const Vtx bitfs_seg7_vertex_07007AC8[] = {\n    {{{   768,    102,    742}, 0, {   632,   -542}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   870,    102,    742}, 0, {   606,   -542}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   870,    102,    128}, 0, {   606,   -542}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   768,    102,    128}, 0, {   632,   -542}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07007B08 - 0x07007BF8\nstatic const Vtx bitfs_seg7_vertex_07007B08[] = {\n    {{{   102,     26,    102}, 0, {  3352,   2204}, {0xaf, 0xaf, 0xaf, 0xff}}},\n    {{{ -1023,     26,    102}, 0, {   540,   -604}, {0xaf, 0xaf, 0xaf, 0xff}}},\n    {{{ -1023,     51,    128}, 0, {   540,   -604}, {0xaf, 0xaf, 0xaf, 0xff}}},\n    {{{   102,     51,    128}, 0, {  3352,   2204}, {0xaf, 0xaf, 0xaf, 0xff}}},\n    {{{   102,     51,    742}, 0, {  2268,   3288}, {0xaf, 0xaf, 0xaf, 0xff}}},\n    {{{ -1023,     51,    742}, 0, {  -542,    480}, {0xaf, 0xaf, 0xaf, 0xff}}},\n    {{{ -1023,     26,    768}, 0, {  -632,    570}, {0xaf, 0xaf, 0xaf, 0xff}}},\n    {{{   102,     26,    768}, 0, {  2178,   3378}, {0xaf, 0xaf, 0xaf, 0xff}}},\n    {{{  -972,    102,    102}, 0, {  3352,   2204}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -997,   -511,    128}, 0, {  1754,    608}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -997,    102,    128}, 0, {  3352,   2204}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{    51,    102,    102}, 0, {  3352,   2204}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{    26,   -511,    128}, 0, {  1754,    608}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{    26,    102,    128}, 0, {  3352,   2204}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{    51,   -511,    102}, 0, {  1754,    608}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x07007BF8 - 0x07007CE8\nstatic const Vtx bitfs_seg7_vertex_07007BF8[] = {\n    {{{    26,    102,    742}, 0, {  2268,   3288}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{    26,   -511,    742}, 0, {   670,   1690}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{    51,   -511,    768}, 0, {   580,   1780}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{    51,    102,    768}, 0, {  2178,   3378}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -997,    102,    742}, 0, {  2268,   3288}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -997,   -511,    742}, 0, {   670,   1690}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -972,   -511,    768}, 0, {   580,   1780}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -972,    102,    768}, 0, {  2178,   3378}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -972,    102,    102}, 0, {  3352,   2204}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -972,   -511,    102}, 0, {  1754,    608}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -997,   -511,    128}, 0, {  1754,    608}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -921,    614,   -485}, 0, { -1052,    990}, {0x5a, 0x75, 0x5e, 0xff}}},\n    {{{  -921,    512,   -485}, 0, { -1052,    990}, {0x5a, 0x75, 0x5e, 0xff}}},\n    {{{  -921,    512,   -178}, 0, { -1564,    480}, {0x5a, 0x75, 0x5e, 0xff}}},\n    {{{  -921,    614,   -178}, 0, { -1564,    480}, {0x5a, 0x75, 0x5e, 0xff}}},\n};\n\n// 0x07007CE8 - 0x07007DE8\nstatic const Vtx bitfs_seg7_vertex_07007CE8[] = {\n    {{{  -921,    614,   -485}, 0, { -1052,    990}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{   102,    614,   -178}, 0, {   138,  -1224}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{   102,    614,   -485}, 0, {   650,   -714}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{  -204,    614,   -793}, 0, {   650,    308}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{  -613,    614,   -793}, 0, {     0,    990}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{  -204,    614,    128}, 0, {  -882,  -1224}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{  -921,    614,   -178}, 0, { -1564,    480}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{  -613,    614,    128}, 0, { -1564,   -544}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{  -613,    614,   -793}, 0, {     0,    990}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{  -204,    512,   -793}, 0, {   650,    308}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{  -613,    512,   -793}, 0, {     0,    990}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{  -204,    614,   -793}, 0, {   650,    308}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{  -613,    512,    128}, 0, { -1564,   -544}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{  -204,    614,    128}, 0, {  -882,  -1224}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{  -613,    614,    128}, 0, { -1564,   -544}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{  -204,    512,    128}, 0, {  -882,  -1224}, {0x88, 0x98, 0x84, 0xff}}},\n};\n\n// 0x07007DE8 - 0x07007EE8\nstatic const Vtx bitfs_seg7_vertex_07007DE8[] = {\n    {{{  -204,    614,   -793}, 0, {   650,    308}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{   102,    614,   -485}, 0, {   650,   -714}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{   102,    512,   -485}, 0, {   650,   -714}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{  -613,    614,    128}, 0, { -1564,   -544}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{  -921,    614,   -178}, 0, { -1564,    480}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{  -921,    512,   -178}, 0, { -1564,    480}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{  -613,    512,    128}, 0, { -1562,   -544}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{  -204,    512,    128}, 0, {  -882,  -1224}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{   102,    512,   -178}, 0, {   138,  -1224}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{   102,    614,   -178}, 0, {   138,  -1224}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{  -204,    614,    128}, 0, {  -882,  -1224}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{  -613,    512,   -793}, 0, {     0,    990}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{  -921,    512,   -485}, 0, { -1052,    990}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{  -613,    614,   -793}, 0, {     0,    990}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{  -921,    614,   -485}, 0, { -1052,    990}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{  -204,    512,   -793}, 0, {   650,    308}, {0x74, 0x86, 0x75, 0xff}}},\n};\n\n// 0x07007EE8 - 0x07007FD8\nstatic const Vtx bitfs_seg7_vertex_07007EE8[] = {\n    {{{  -613,    512,    128}, 0, { -1564,   -544}, {0x43, 0x56, 0x37, 0xff}}},\n    {{{  -921,    512,   -485}, 0, { -1052,    990}, {0x43, 0x56, 0x37, 0xff}}},\n    {{{  -613,    512,   -793}, 0, {     0,    990}, {0x43, 0x56, 0x37, 0xff}}},\n    {{{  -204,    512,   -793}, 0, {   650,    308}, {0x43, 0x56, 0x37, 0xff}}},\n    {{{   102,    512,   -485}, 0, {   650,   -714}, {0x43, 0x56, 0x37, 0xff}}},\n    {{{   102,    512,   -178}, 0, {   138,  -1224}, {0x43, 0x56, 0x37, 0xff}}},\n    {{{  -204,    512,    128}, 0, {  -882,  -1224}, {0x43, 0x56, 0x37, 0xff}}},\n    {{{  -921,    512,   -178}, 0, { -1564,    480}, {0x43, 0x56, 0x37, 0xff}}},\n    {{{   102,      0,    742}, 0, {  2178,   3378}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1023,     51,    742}, 0, {  -542,    480}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   102,     51,    742}, 0, {  2268,   3288}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{    26,    102,    128}, 0, {  3352,   2204}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{    77,   -511,    128}, 0, {  1664,    698}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{    77,    102,    128}, 0, {  3262,   2294}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{    26,   -511,    128}, 0, {  1754,    608}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x07007FD8 - 0x070080B8\nstatic const Vtx bitfs_seg7_vertex_07007FD8[] = {\n    {{{    77,    102,    742}, 0, {  2178,   3378}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{    26,   -511,    742}, 0, {   670,   1690}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{    26,    102,    742}, 0, {  2268,   3288}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{    77,   -511,    742}, 0, {   580,   1780}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   102,     51,    128}, 0, {  3352,   2204}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1023,     51,    128}, 0, {   540,   -604}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1023,      0,    128}, 0, {   450,   -514}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   102,      0,    128}, 0, {  3262,   2294}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -997,    102,    128}, 0, {  3352,   2204}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -946,   -511,    128}, 0, {  1664,    698}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -946,    102,    128}, 0, {  3262,   2294}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   102,      0,    742}, 0, {  2178,   3378}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1023,      0,    742}, 0, {  -632,    570}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1023,     51,    742}, 0, {  -542,    480}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x070080B8 - 0x070081B8\nstatic const Vtx bitfs_seg7_vertex_070080B8[] = {\n    {{{  -946,    102,    742}, 0, {  2178,   3378}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -997,   -511,    742}, 0, {   670,   1690}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -997,    102,    742}, 0, {  2268,   3288}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -946,   -511,    742}, 0, {   580,   1780}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -997,    102,    128}, 0, {  3352,   2204}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -997,   -511,    128}, 0, {  1754,    608}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -946,   -511,    128}, 0, {  1664,    698}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1023,      0,    128}, 0, {   450,   -514}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1023,     51,    128}, 0, {   540,   -604}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1023,     26,    102}, 0, {   540,   -604}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1023,     26,    768}, 0, {  -632,    570}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1023,     51,    742}, 0, {  -542,    480}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1023,      0,    742}, 0, {  -632,    570}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   102,     51,    128}, 0, {  3352,   2204}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   102,      0,    128}, 0, {  3262,   2294}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   102,     26,    102}, 0, {  3352,   2204}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x070081B8 - 0x070082A8\nstatic const Vtx bitfs_seg7_vertex_070081B8[] = {\n    {{{    51,   -511,    102}, 0, {  1754,    608}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{    51,    102,    102}, 0, {  3352,   2204}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{    77,    102,    128}, 0, {  3262,   2294}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{    77,   -511,    128}, 0, {  1664,    698}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{    77,   -511,    742}, 0, {   580,   1780}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{    51,    102,    768}, 0, {  2178,   3378}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{    51,   -511,    768}, 0, {   580,   1780}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{    77,    102,    742}, 0, {  2178,   3378}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1023,     26,    102}, 0, {   540,   -604}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   102,      0,    128}, 0, {  3262,   2294}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1023,      0,    128}, 0, {   450,   -514}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   102,     26,    102}, 0, {  3352,   2204}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -972,   -511,    102}, 0, {  1754,    608}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -946,    102,    128}, 0, {  3262,   2294}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -946,   -511,    128}, 0, {  1664,    698}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x070082A8 - 0x07008368\nstatic const Vtx bitfs_seg7_vertex_070082A8[] = {\n    {{{   102,     26,    768}, 0, {  2178,   3378}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   102,      0,    742}, 0, {  2178,   3378}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   102,     51,    742}, 0, {  2268,   3288}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1023,      0,    742}, 0, {  -632,    570}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1023,     26,    768}, 0, {  -632,    570}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -946,   -511,    742}, 0, {   580,   1780}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -946,    102,    742}, 0, {  2178,   3378}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -972,    102,    768}, 0, {  2178,   3378}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -972,   -511,    768}, 0, {   580,   1780}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -972,   -511,    102}, 0, {  1754,    608}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -972,    102,    102}, 0, {  3352,   2204}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -946,    102,    128}, 0, {  3262,   2294}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x07008368 - 0x07008468\nstatic const Vtx bitfs_seg7_vertex_07008368[] = {\n    {{{ -1535,   -306,    745}, 0, {  -932,    588}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -716,   -409,    745}, 0, {   624,   2144}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -716,   -409,    130}, 0, {  2268,    224}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1535,   -306,    130}, 0, {   708,  -1336}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{     0,   -306,    742}, 0, { -3608,   4566}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   358,   -306,    742}, 0, { -2712,   3670}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   358,   -306,    128}, 0, { -1180,   5204}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{     0,   -306,    128}, 0, { -2074,   6098}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1382,   -306,    742}, 0, {  -158,   1116}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1638,   -306,    128}, 0, {  2012,   2010}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1382,   -306,    128}, 0, {  1374,   2648}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1638,   -306,    742}, 0, {   480,    478}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   666,      0,   -485}, 0, {  1502,   2522}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   973,      0,   -485}, 0, {  3034,    990}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   973,      0,   -178}, 0, {  1502,   -544}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   666,      0,   -178}, 0, {     0,    990}, {0x43, 0x43, 0x00, 0xff}}},\n};\n\n// 0x07008468 - 0x07008548\nstatic const Vtx bitfs_seg7_vertex_07008468[] = {\n    {{{   666,      0,   -178}, 0, {     0,    990}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{   102,    512,   -178}, 0, { -2840,   3798}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{   102,    512,   -485}, 0, { -1308,   5332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{   666,      0,   -485}, 0, {  1502,   2522}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{   973,    102,   -178}, 0, {   480,    480}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{   973,      0,   -485}, 0, {  1502,   2522}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{   973,    102,   -485}, 0, {  2012,   2010}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{   973,      0,   -178}, 0, {     0,    990}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{   666,    102,   -178}, 0, {   478,    480}, {0x82, 0x82, 0x00, 0xff}}},\n    {{{   102,    512,   -178}, 0, {  -286,  -4376}, {0x82, 0x82, 0x00, 0xff}}},\n    {{{   666,      0,   -178}, 0, {     0,    990}, {0x82, 0x82, 0x00, 0xff}}},\n    {{{   973,    102,   -178}, 0, {  2012,   2010}, {0x82, 0x82, 0x00, 0xff}}},\n    {{{   973,      0,   -178}, 0, {  1500,   2520}, {0x82, 0x82, 0x00, 0xff}}},\n    {{{   102,    614,   -178}, 0, {   224,  -4886}, {0x82, 0x82, 0x00, 0xff}}},\n};\n\n// 0x07008548 - 0x070085A8\nstatic const Vtx bitfs_seg7_vertex_07008548[] = {\n    {{{   666,    102,   -485}, 0, {   478,    480}, {0x82, 0x82, 0x00, 0xff}}},\n    {{{   973,    102,   -485}, 0, {  2012,   2010}, {0x82, 0x82, 0x00, 0xff}}},\n    {{{   973,      0,   -485}, 0, {  1500,   2520}, {0x82, 0x82, 0x00, 0xff}}},\n    {{{   666,      0,   -485}, 0, {     0,    990}, {0x82, 0x82, 0x00, 0xff}}},\n    {{{   102,    512,   -485}, 0, {  -286,  -4376}, {0x82, 0x82, 0x00, 0xff}}},\n    {{{   102,    614,   -485}, 0, {   224,  -4886}, {0x82, 0x82, 0x00, 0xff}}},\n};\n\n// 0x070085A8 - 0x070086A8\nstatic const Vtx bitfs_seg7_vertex_070085A8[] = {\n    {{{   870,    102,   -178}, 0, {   990,      0}, {0xcc, 0xd8, 0x8c, 0xff}}},\n    {{{   768,    102,   -178}, 0, {     0,      0}, {0xcc, 0xd8, 0x8c, 0xff}}},\n    {{{   768,    102,    128}, 0, {     0,    990}, {0xcc, 0xd8, 0x8c, 0xff}}},\n    {{{   870,    102,    128}, 0, {   990,    990}, {0xcc, 0xd8, 0x8c, 0xff}}},\n    {{{   870,      0,    128}, 0, {   990,    990}, {0x5b, 0x6d, 0x41, 0xff}}},\n    {{{   768,      0,    128}, 0, {     0,    990}, {0x5b, 0x6d, 0x41, 0xff}}},\n    {{{   768,      0,   -178}, 0, {     0,      0}, {0x5b, 0x6d, 0x41, 0xff}}},\n    {{{   870,      0,   -178}, 0, {   990,      0}, {0x5b, 0x6d, 0x41, 0xff}}},\n    {{{   870,      0,   -178}, 0, {   990,    990}, {0x67, 0x7b, 0x30, 0xff}}},\n    {{{   870,    102,    128}, 0, {     0,      0}, {0x67, 0x7b, 0x30, 0xff}}},\n    {{{   870,      0,    128}, 0, {   990,      0}, {0x67, 0x7b, 0x30, 0xff}}},\n    {{{   870,    102,   -178}, 0, {     0,    990}, {0x67, 0x7b, 0x30, 0xff}}},\n    {{{   768,      0,    128}, 0, {   990,      0}, {0x67, 0x7b, 0x30, 0xff}}},\n    {{{   768,    102,   -178}, 0, {     0,    990}, {0x67, 0x7b, 0x30, 0xff}}},\n    {{{   768,      0,   -178}, 0, {   990,    990}, {0x67, 0x7b, 0x30, 0xff}}},\n    {{{   768,    102,    128}, 0, {     0,      0}, {0x67, 0x7b, 0x30, 0xff}}},\n};\n\n// 0x070086A8 - 0x07008728\nstatic const Vtx bitfs_seg7_vertex_070086A8[] = {\n    {{{   666,    102,   -485}, 0, { 10188,  -3098}, {0xd0, 0xc2, 0x3e, 0xff}}},\n    {{{   102,    614,   -178}, 0, {    60,    990}, {0xd0, 0xc2, 0x3e, 0xff}}},\n    {{{   666,    102,   -178}, 0, { 10188,    990}, {0xd0, 0xc2, 0x3e, 0xff}}},\n    {{{   102,    614,   -485}, 0, {    60,  -3098}, {0xd0, 0xc2, 0x3e, 0xff}}},\n    {{{   666,    102,   -178}, 0, {     0,    990}, {0xff, 0xe5, 0x65, 0xff}}},\n    {{{   973,    102,   -485}, 0, {  4056,  -3098}, {0xff, 0xe5, 0x65, 0xff}}},\n    {{{   666,    102,   -485}, 0, {     0,  -3098}, {0xff, 0xe5, 0x65, 0xff}}},\n    {{{   973,    102,   -178}, 0, {  4056,    990}, {0xff, 0xe5, 0x65, 0xff}}},\n};\n\n// 0x07008728 - 0x07008828\nstatic const Vtx bitfs_seg7_vertex_07008728[] = {\n    {{{  -716,   -409,    745}, 0, {  2012,    650}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -716,   -511,    745}, 0, {  2012,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -716,   -511,    130}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1535,   -306,    130}, 0, {  -370,    308}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1535,   -511,    130}, 0, {  -370,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1535,   -511,    745}, 0, {  1672,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1535,   -306,    745}, 0, {  1672,    308}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1535,   -306,    745}, 0, {     0,    308}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1535,   -511,    745}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -716,   -511,    745}, 0, {  2694,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -716,   -409,    745}, 0, {  2694,    650}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -716,   -409,    130}, 0, {     0,    650}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -716,   -511,    130}, 0, {  2694,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1535,   -306,    130}, 0, {     0,    308}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -716,   -409,    130}, 0, {  2694,    650}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1535,   -511,    130}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x07008828 - 0x07008928\nstatic const Vtx bitfs_seg7_vertex_07008828[] = {\n    {{{     0,   -306,    128}, 0, {     0,    308}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{     0,   -511,    742}, 0, {  2012,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{     0,   -306,    742}, 0, {  2012,    308}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{     0,   -511,    128}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1638,   -306,    742}, 0, {  2012,    308}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1638,   -511,    128}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1638,   -306,    128}, 0, {     0,    308}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1638,   -511,    742}, 0, {  2012,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1638,   -511,    128}, 0, {  5418,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{     0,   -306,    128}, 0, {     0,    308}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1638,   -306,    128}, 0, {  5418,    308}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{     0,   -511,    128}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{     0,   -306,    742}, 0, {     0,    308}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{     0,   -511,    742}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1638,   -511,    742}, 0, {  5418,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1638,   -306,    742}, 0, {  5418,    308}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x07008928 - 0x070089E8\nstatic const Vtx bitfs_seg7_vertex_07008928[] = {\n    {{{    51,    102,    102}, 0, {     0,      0}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{    26,    102,    128}, 0, {     0,      0}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{    77,    102,    128}, 0, {     0,      0}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{    77,    102,    742}, 0, {     0,      0}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{    26,    102,    742}, 0, {     0,      0}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{    51,    102,    768}, 0, {     0,      0}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -946,    102,    742}, 0, {     0,      0}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -997,    102,    742}, 0, {     0,      0}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -972,    102,    768}, 0, {     0,      0}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -972,    102,    102}, 0, {     0,      0}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -997,    102,    128}, 0, {     0,      0}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -946,    102,    128}, 0, {     0,      0}, {0xc8, 0xc8, 0xc8, 0xff}}},\n};\n\n// 0x070089E8 - 0x07008A68\nstatic const Gfx bitfs_seg7_dl_070089E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_070079C8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07007AC8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008A68 - 0x07008CE0\nstatic const Gfx bitfs_seg7_dl_07008A68[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_07007B08, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07007BF8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07007CE8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  2,  3, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 0,  6,  7, 0x0,  0,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07007DE8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07007EE8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  0,  5,  6, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  0,  7,  1, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07007FD8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_070080B8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_070081B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_070082A8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 3,  1,  0, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008CE0 - 0x07008DB8\nstatic const Gfx bitfs_seg7_dl_07008CE0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_07008368, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07008468, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10, 11,  8, 0x0),\n    gsSP2Triangles(10, 12, 11, 0x0,  8, 13,  9, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07008548, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  3,  5,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008DB8 - 0x07008E20\nstatic const Gfx bitfs_seg7_dl_07008DB8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_070085A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008E20 - 0x07008E68\nstatic const Gfx bitfs_seg7_dl_07008E20[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_070086A8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008E68 - 0x07008F18\nstatic const Gfx bitfs_seg7_dl_07008E68[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bitfs_seg7_texture_07001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_07008728, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  0,  2, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07008828, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 15, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008F18 - 0x07008F48\nstatic const Gfx bitfs_seg7_dl_07008F18[] = {\n    gsSPVertex(bitfs_seg7_vertex_07008928, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008F48 - 0x07009000\nconst Gfx bitfs_seg7_dl_07008F48[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_070089E8),\n    gsSPDisplayList(bitfs_seg7_dl_07008A68),\n    gsSPDisplayList(bitfs_seg7_dl_07008CE0),\n    gsSPDisplayList(bitfs_seg7_dl_07008DB8),\n    gsSPDisplayList(bitfs_seg7_dl_07008E20),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_07008E68),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(bitfs_seg7_dl_07008F18),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/12/geo.inc.c",
    "content": "// 0x0E0005A0\nconst GeoLayout bitfs_geo_0005A0[] = {\n    GEO_CULLING_RADIUS(2100),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bitfs_seg7_dl_070091E0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/12/model.inc.c",
    "content": "// 0x07009000 - 0x07009040\nstatic const Vtx bitfs_seg7_vertex_07009000[] = {\n    {{{  -588,    154,   -306}, 0, {  4464,   3440}, {0x8c, 0xcc, 0xd8, 0xff}}},\n    {{{ -1714,    154,   -306}, 0, {     0,   3440}, {0x8c, 0xcc, 0xd8, 0xff}}},\n    {{{ -1714,    154,    307}, 0, {     0,    990}, {0x8c, 0xcc, 0xd8, 0xff}}},\n    {{{  -588,    154,    307}, 0, {  4464,    990}, {0x8c, 0xcc, 0xd8, 0xff}}},\n};\n\n// 0x07009040 - 0x07009140\nstatic const Vtx bitfs_seg7_vertex_07009040[] = {\n    {{{  1664,   -281,   -204}, 0, {   308,   -372}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1664,   -178,   -204}, 0, {     0,   -372}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1664,   -178,    205}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1664,   -281,    205}, 0, {   308,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1664,   -178,   -204}, 0, {   308,   3372}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   947,   -178,    205}, 0, {  1672,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1664,   -178,    205}, 0, {  1672,   3372}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   947,   -178,   -204}, 0, {   308,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   947,   -383,   -206}, 0, {  1332,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1664,   -178,   -206}, 0, {  2012,   3372}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   947,   -178,   -206}, 0, {  2012,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1664,   -383,   -206}, 0, {  1332,   3372}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   947,   -383,    205}, 0, {  1332,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1664,   -178,    205}, 0, {  2012,   3372}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   947,   -178,    205}, 0, {  2012,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1664,   -383,    205}, 0, {  1332,   3372}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x07009140 - 0x07009178\nstatic const Gfx bitfs_seg7_dl_07009140[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bitfs_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_07009000, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009178 - 0x070091E0\nstatic const Gfx bitfs_seg7_dl_07009178[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_07009040, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070091E0 - 0x07009258\nconst Gfx bitfs_seg7_dl_070091E0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_07009140),\n    gsSPDisplayList(bitfs_seg7_dl_07009178),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/13/geo.inc.c",
    "content": "// 0x0E0005B8\nconst GeoLayout bitfs_geo_0005B8[] = {\n    GEO_CULLING_RADIUS(1300),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitfs_seg7_dl_070095E0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/13/model.inc.c",
    "content": "// 0x07009258 - 0x07009358\nstatic const Vtx bitfs_seg7_vertex_07009258[] = {\n    {{{   819,    205,    307}, 0, {  1414,    308}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   512,      0,    614}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   819,      0,    307}, 0, {  1414,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   819,      0,   -307}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   512,    205,   -615}, 0, {  1414,    308}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   819,    205,   -307}, 0, {     0,    308}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   512,      0,   -615}, 0, {  1414,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -511,    205,   -615}, 0, {     0,    308}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -511,      0,   -615}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -818,      0,   -307}, 0, {  1414,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -818,    205,   -307}, 0, {  1414,    308}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -818,      0,    307}, 0, {  -454,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -511,    205,    614}, 0, {   990,    308}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -818,    205,    307}, 0, {  -454,    308}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -511,      0,    614}, 0, {   990,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   512,    205,    614}, 0, {     0,    308}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x07009358 - 0x07009458\nstatic const Vtx bitfs_seg7_vertex_07009358[] = {\n    {{{  -818,      0,    307}, 0, {  2016,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -818,    205,   -307}, 0, {     0,    308}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -818,      0,   -307}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -818,    205,    307}, 0, {  2016,    308}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   819,      0,   -307}, 0, {  2016,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   819,    205,   -307}, 0, {  2016,    308}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   819,    205,    307}, 0, {     0,    308}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   819,      0,    307}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -511,    205,   -615}, 0, {  3374,    308}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   512,    205,   -615}, 0, {     0,    308}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   512,      0,   -615}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -511,      0,   -615}, 0, {  3374,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   512,    205,    614}, 0, {  3374,    308}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -511,      0,    614}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   512,      0,    614}, 0, {  3374,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -511,    205,    614}, 0, {     0,    308}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x07009458 - 0x070094D8\nstatic const Vtx bitfs_seg7_vertex_07009458[] = {\n    {{{  -818,    205,   -307}, 0, {   736,   2522}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   512,    205,    614}, 0, {  1246,   -288}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   819,    205,    307}, 0, {  2012,   -288}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   819,    205,   -307}, 0, {  2780,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   512,    205,   -615}, 0, {  2780,   1244}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -511,    205,    614}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -511,    205,   -615}, 0, {  1502,   2522}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -818,    205,    307}, 0, {     0,   1754}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070094D8 - 0x07009588\nstatic const Gfx bitfs_seg7_dl_070094D8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bitfs_seg7_texture_07001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_07009258, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07009358, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009588 - 0x070095E0\nstatic const Gfx bitfs_seg7_dl_07009588[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_07009458, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  2,  3, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 0,  4,  6, 0x0,  0,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070095E0 - 0x07009670\nconst Gfx bitfs_seg7_dl_070095E0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_070094D8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_07009588),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/14/geo.inc.c",
    "content": "// 0x0E0005D0\nconst GeoLayout bitfs_geo_0005D0[] = {\n    GEO_CULLING_RADIUS(1900),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitfs_seg7_dl_0700AA00),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/14/model.inc.c",
    "content": "// 0x07009670 - 0x07009770\nstatic const Vtx bitfs_seg7_vertex_07009670[] = {\n    {{{  1331,    333,  -1023}, 0, {  3020,   4040}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1331,    538,   -211}, 0, {  2010,   2348}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1331,    333,   -211}, 0, {  1670,   2690}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1331,    538,  -1023}, 0, {  3362,   3700}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1331,    435,    403}, 0, {   818,   1498}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1331,    333,    403}, 0, {   648,   1668}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1331,    435,   -211}, 0, {  1840,   2520}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1331,    538,    403}, 0, {   988,   1326}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1331,    538,    811}, 0, {   308,    650}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1331,    333,    811}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{     0,   -383,      0}, 0, {  1416,   1584}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{     0,   -485,     51}, 0, {  1160,   1670}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{     0,   -639,      0}, 0, {   990,   2010}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{     0,   -383,     51}, 0, {  1330,   1498}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{     0,   -485,    563}, 0, {   308,    820}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{     0,   -639,    614}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x07009770 - 0x07009870\nstatic const Vtx bitfs_seg7_vertex_07009770[] = {\n    {{{     0,   -383,    563}, 0, {   480,    650}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{     0,   -639,    614}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{     0,   -485,    563}, 0, {   308,    820}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{     0,   -383,    614}, 0, {   394,    564}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -613,   -383,      0}, 0, {  2012,  -3438}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{     0,   -639,      0}, 0, {   564,  -2842}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -634,   -639,      0}, 0, {  1672,  -3780}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{     0,   -383,      0}, 0, {   990,  -2416}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1280,    538,    403}, 0, {   562,    566}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1280,    538,    760}, 0, {   138,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1331,    538,    811}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1331,    538,    403}, 0, {   478,    480}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   666,    538,    760}, 0, {  1160,   2010}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   614,    538,    811}, 0, {  1160,   2180}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   666,    538,   -665}, 0, {  3532,   -360}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   614,    538,   -665}, 0, {  3618,   -274}, {0xc8, 0xc8, 0xc8, 0xff}}},\n};\n\n// 0x07009870 - 0x07009960\nstatic const Vtx bitfs_seg7_vertex_07009870[] = {\n    {{{   666,    435,   -972}, 0, {  5248,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -613,   -178,   -972}, 0, {  3120,   3118}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -665,   -178,   -665}, 0, {  2524,   2692}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   666,    435,   -665}, 0, {  4738,    480}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -665,   -178,   -613}, 0, {  2438,   2606}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1177,   -178,   -613}, 0, {  1586,   3458}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -665,   -485,     51}, 0, {  1330,   1500}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1177,   -485,      0}, 0, {   564,   2436}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -613,    -76,   -613}, 0, {  5576,   1852}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   614,    538,   -613}, 0, {  3532,   -190}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   614,    538,   -665}, 0, {  3618,   -274}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -665,   -383,     51}, 0, {  4554,   3046}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -613,   -383,      0}, 0, {  4554,   2874}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -665,   -383,      0}, 0, {  4640,   2960}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -613,   -383,     51}, 0, {  4468,   2960}, {0xb9, 0xb9, 0xb9, 0xff}}},\n};\n\n// 0x07009960 - 0x07009A60\nstatic const Vtx bitfs_seg7_vertex_07009960[] = {\n    {{{  -613,    -76,   -665}, 0, {  5662,   1768}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -665,    -76,   -613}, 0, {  5662,   1938}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -613,    -76,   -613}, 0, {  5576,   1852}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -665,    -76,   -665}, 0, {  5746,   1852}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -665,   -383,      0}, 0, {  4640,   2960}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -613,   -383,      0}, 0, {  4554,   2874}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   614,    538,  -1023}, 0, {  4214,   -870}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   614,    538,   -972}, 0, {  4128,   -786}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  1280,    538,   -972}, 0, {  3020,  -1892}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   614,    538,   -665}, 0, {  3618,   -274}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -613,   -383,     51}, 0, {  4468,   2960}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{     0,   -383,     51}, 0, {  3446,   1938}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{     0,   -383,      0}, 0, {  3532,   1852}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  1280,    538,   -211}, 0, {  1586,   -458}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  1331,    538,   -211}, 0, {  1500,   -542}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  1331,    538,  -1023}, 0, {  3020,  -2062}, {0xb9, 0xb9, 0xb9, 0xff}}},\n};\n\n// 0x07009A60 - 0x07009B50\nstatic const Vtx bitfs_seg7_vertex_07009A60[] = {\n    {{{   614,    538,   -972}, 0, {  4128,   -786}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   614,    538,  -1023}, 0, {  4214,   -870}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -613,    -76,   -972}, 0, {  6172,   1256}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -613,    -76,  -1023}, 0, {  6258,   1172}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{ -1074,    -76,  -1022}, 0, {  7022,   1940}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{ -1023,    -76,   -972}, 0, {  6854,   1938}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{ -1228,    -76,   -613}, 0, {  6598,   2874}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{ -1177,    -76,   -613}, 0, {  6512,   2790}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{ -1074,    -76,  -1023}, 0, {  7024,   1938}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{ -1228,   -383,      0}, 0, {  5576,   3896}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{ -1177,   -383,      0}, 0, {  5490,   3812}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -921,   -383,    614}, 0, {  4042,   4408}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -890,   -383,    563}, 0, {  4076,   4272}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{     0,   -383,    614}, 0, {  2510,   2874}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{     0,   -383,    563}, 0, {  2596,   2790}, {0xb9, 0xb9, 0xb9, 0xff}}},\n};\n\n// 0x07009B50 - 0x07009C40\nstatic const Vtx bitfs_seg7_vertex_07009B50[] = {\n    {{{   614,    538,   -665}, 0, {  1500,    138}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   666,    538,   -665}, 0, {  1416,    224}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   666,    384,   -665}, 0, {  1160,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   614,    384,   -665}, 0, {  1246,   -118}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -613,   -178,   -665}, 0, {  2352,  -3098}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   666,    538,    760}, 0, {  1416,    224}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1280,    435,    760}, 0, {   224,   1074}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   666,    435,    760}, 0, {  1246,     54}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1280,    538,    760}, 0, {   394,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -613,    -76,   -972}, 0, {  2522,  -2928}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   666,    435,   -972}, 0, {  1246,     54}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   614,    538,   -972}, 0, {  1500,    138}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1280,    435,   -972}, 0, {   224,   1074}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1280,    538,   -972}, 0, {   394,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -613,   -178,   -972}, 0, {  2352,  -3098}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x07009C40 - 0x07009D30\nstatic const Vtx bitfs_seg7_vertex_07009C40[] = {\n    {{{ -1023,   -178,   -972}, 0, {  3034,  -3780}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -613,    -76,   -972}, 0, {  2522,  -2928}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1023,    -76,   -972}, 0, {  3204,  -3608}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -613,   -178,   -972}, 0, {  2352,  -3098}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -613,   -178,   -665}, 0, {  2352,  -3098}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -665,   -178,   -665}, 0, {  2438,  -3184}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -665,    -76,   -665}, 0, {  2608,  -3012}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -613,    -76,   -665}, 0, {  2522,  -2928}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   614,    538,   -665}, 0, {  1500,    138}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -665,   -178,   -613}, 0, { -2756,   -202}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -665,    -76,   -665}, 0, { -3010,   -118}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -665,   -178,   -665}, 0, { -2840,   -288}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -665,    -76,   -613}, 0, { -2926,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -665,   -485,      0}, 0, { -1222,    308}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -665,   -383,      0}, 0, { -1392,    480}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x07009D30 - 0x07009E30\nstatic const Vtx bitfs_seg7_vertex_07009D30[] = {\n    {{{  -665,   -485,     51}, 0, { -1138,    394}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -665,   -383,     51}, 0, { -1308,    564}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -665,   -383,      0}, 0, { -1392,    480}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -665,   -485,      0}, 0, { -1222,    308}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1074,   -281,  -1023}, 0, {   478,    478}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1074,    -76,  -1023}, 0, {   820,    138}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -613,    -76,  -1023}, 0, {  1842,   1158}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -613,   -281,  -1023}, 0, {  1500,   1498}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   614,    333,  -1023}, 0, {  4566,   2520}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   614,    538,  -1023}, 0, {  4908,   2180}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1331,    538,  -1023}, 0, {  6100,   3372}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1331,    333,  -1023}, 0, {  5760,   3714}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -613,   -332,   -613}, 0, {  1500,   1498}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   614,    333,   -613}, 0, {  4566,   2520}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   614,    538,   -613}, 0, {  4908,   2180}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -613,    -76,   -613}, 0, {  1842,   1158}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x07009E30 - 0x07009F30\nstatic const Vtx bitfs_seg7_vertex_07009E30[] = {\n    {{{   614,    333,    811}, 0, {  4566,   2520}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1331,    538,    811}, 0, {  6100,   3372}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   614,    538,    811}, 0, {  4908,   2180}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1331,    333,    811}, 0, {  5760,   3714}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1228,   -332,   -613}, 0, { -2074,   3032}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1074,   -281,  -1023}, 0, { -2756,   3714}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -613,   -281,  -1023}, 0, { -1734,   4736}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -613,   -332,   -613}, 0, { -1052,   4054}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1228,   -639,      0}, 0, { -1052,   2010}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{     0,   -639,      0}, 0, {   990,   4054}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{     0,   -639,    614}, 0, {  2012,   3032}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -921,   -639,    614}, 0, {     0,    990}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   614,    333,  -1023}, 0, {   308,   6780}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1331,    333,  -1023}, 0, {  1500,   7972}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1331,    333,    811}, 0, {  4554,   4918}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   614,    333,    811}, 0, {  3362,   3726}, {0x44, 0x44, 0x44, 0xff}}},\n};\n\n// 0x07009F30 - 0x0700A010\nstatic const Vtx bitfs_seg7_vertex_07009F30[] = {\n    {{{ -1228,   -639,      0}, 0, { -1052,   2010}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -613,   -332,   -613}, 0, { -1052,   4054}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -634,   -639,      0}, 0, {     0,   3032}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1228,   -332,   -613}, 0, { -2074,   3032}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -613,   -281,  -1023}, 0, { -1734,   4736}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   614,    333,  -1023}, 0, {   308,   6780}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   614,    333,   -613}, 0, {   990,   6098}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -665,   -485,     51}, 0, {  1330,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1177,   -485,      0}, 0, {   564,   2436}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -890,   -485,    563}, 0, {   104,   1022}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1280,    435,   -972}, 0, {  6270,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   666,    435,   -972}, 0, {  5248,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1280,    435,    760}, 0, {  3388,  -2914}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   666,    435,    760}, 0, {  2366,  -1892}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700A010 - 0x0700A100\nstatic const Vtx bitfs_seg7_vertex_0700A010[] = {\n    {{{  1280,    435,    403}, 0, { -1120,    752}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1331,    435,    403}, 0, { -1034,    666}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1331,    435,   -211}, 0, {   -14,   1686}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1280,    435,   -211}, 0, {   -98,   1772}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -613,   -178,   -972}, 0, {  3120,   3118}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1023,   -178,   -972}, 0, {  2438,   3798}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1177,   -178,   -613}, 0, {  1586,   3458}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -665,   -178,   -613}, 0, {  2438,   2606}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -665,   -485,     51}, 0, {  1330,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -890,   -485,    563}, 0, {   104,   1022}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -485,    563}, 0, {  1586,   -458}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -485,     51}, 0, {  2438,    394}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1280,    435,    760}, 0, {  4292,  -3334}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1280,    538,    760}, 0, {  4548,  -3078}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1280,    538,    403}, 0, {  3656,  -2186}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x0700A100 - 0x0700A1F0\nstatic const Vtx bitfs_seg7_vertex_0700A100[] = {\n    {{{  1331,    435,    403}, 0, {   138,   1158}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1280,    538,    403}, 0, {   394,   1244}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1331,    538,    403}, 0, {   308,   1328}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1280,    435,    403}, 0, {   224,   1074}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1331,    538,   -211}, 0, {   308,   1328}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1280,    538,   -211}, 0, {   394,   1244}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1280,    435,   -211}, 0, {   224,   1074}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1331,    435,   -211}, 0, {   138,   1158}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   666,    435,   -665}, 0, { -3862,    734}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   666,    538,    760}, 0, { -1662,   3274}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   666,    435,    760}, 0, { -1490,   3104}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   666,    538,   -665}, 0, { -4032,    904}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1177,   -178,   -613}, 0, {  1148,   4552}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1177,    -76,   -613}, 0, {  1318,   4382}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1177,   -383,      0}, 0, {  -214,   3870}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x0700A1F0 - 0x0700A2E0\nstatic const Vtx bitfs_seg7_vertex_0700A1F0[] = {\n    {{{  1280,    435,    760}, 0, {  4292,  -3334}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1280,    538,    403}, 0, {  3656,  -2186}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1280,    435,    403}, 0, {  3400,  -2442}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1280,    435,   -211}, 0, {  1868,   -910}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1280,    538,   -211}, 0, {  2122,   -654}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1280,    538,   -972}, 0, {   224,   1244}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1280,    435,   -972}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1177,    -76,   -613}, 0, {  1316,   4380}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1177,   -178,   -613}, 0, {  1148,   4552}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1023,   -178,   -972}, 0, {  1744,   5148}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1023,    -76,   -972}, 0, {  1914,   4978}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1177,   -383,      0}, 0, {  -214,   3870}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1177,   -485,      0}, 0, {  -384,   4040}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -890,   -383,    563}, 0, { -1150,   2934}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -890,   -485,    563}, 0, { -1320,   3104}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x0700A2E0 - 0x0700A3E0\nstatic const Vtx bitfs_seg7_vertex_0700A2E0[] = {\n    {{{  -921,   -639,    614}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1228,   -383,      0}, 0, { -1392,    480}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1228,   -639,      0}, 0, { -1052,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -921,   -383,    614}, 0, {  -370,   1500}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1228,    -76,   -613}, 0, { -2926,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1228,   -332,   -613}, 0, { -2500,   -458}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1074,   -281,  -1023}, 0, { -3266,  -1054}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1074,    -76,  -1023}, 0, { -3608,   -714}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -613,   -332,   -613}, 0, { -2500,   -458}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -613,    -76,   -613}, 0, { -2926,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -613,   -383,      0}, 0, { -1392,    480}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -634,   -639,      0}, 0, { -1052,    138}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   614,    333,   -613}, 0, {  2340,   3360}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   614,    333,    811}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   614,    538,    811}, 0, {   308,    650}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   614,    538,   -613}, 0, {  2680,   3018}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x0700A3E0 - 0x0700A4A0\nstatic const Vtx bitfs_seg7_vertex_0700A3E0[] = {\n    {{{     0,   -485,    563}, 0, {   820,  -2586}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -890,   -383,    563}, 0, {  2472,  -3898}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{     0,   -383,    563}, 0, {   990,  -2416}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -890,   -485,    563}, 0, {  2302,  -4068}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{     0,   -383,     51}, 0, {   990,  -2416}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -665,   -383,     51}, 0, {  2098,  -3524}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -665,   -485,     51}, 0, {  1926,  -3694}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{     0,   -485,     51}, 0, {   820,  -2586}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -921,   -639,    614}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{     0,   -383,    614}, 0, {  2352,   2692}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -921,   -383,    614}, 0, {   308,    650}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{     0,   -639,    614}, 0, {  2012,   3032}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x0700A4A0 - 0x0700A520\nstatic const Vtx bitfs_seg7_vertex_0700A4A0[] = {\n    {{{ -1177,    -76,   -613}, 0, {     0,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1228,    -76,   -613}, 0, {     0,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1228,   -178,   -613}, 0, {     0,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1177,   -178,   -613}, 0, {     0,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -613,    -76,   -613}, 0, {     0,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -665,    -76,   -613}, 0, {     0,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -665,   -178,   -613}, 0, {     0,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -613,   -178,   -613}, 0, {     0,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x0700A520 - 0x0700A9D0\nstatic const Gfx bitfs_seg7_dl_0700A520[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_07009670, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  2,  6,  4, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  5,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP2Triangles(12, 11, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07009770, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  8, 10, 0x0),\n    gsSP2Triangles(10,  9, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP2Triangles(14, 13, 12, 0x0, 14, 15, 13, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07009870, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07009960, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  2, 0x0,  4,  2,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  0,  2,  9, 0x0),\n    gsSP2Triangles( 5, 10, 11, 0x0,  5, 11, 12, 0x0),\n    gsSP2Triangles( 8, 13, 14, 0x0, 15,  8, 14, 0x0),\n    gsSP1Triangle( 6,  8, 15, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07009A60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  2,  3, 0x0,  4,  5,  2, 0x0),\n    gsSP2Triangles( 6,  7,  5, 0x0,  6,  5,  8, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  7,  6,  9, 0x0),\n    gsSP2Triangles(10,  9, 11, 0x0, 11, 12, 10, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0, 11, 14, 12, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07009B50, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 10, 12, 0x0),\n    gsSP1Triangle( 9, 14, 10, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07009C40, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  4,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 12,  9, 13, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07009D30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  6,  9,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 11,  8, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07009E30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07009F30, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  1, 0x0,  5,  6,  1, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(11, 13, 12, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700A010, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700A100, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700A1F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  8, 11, 12, 0x0),\n    gsSP2Triangles(12, 11, 13, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700A2E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  4,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  8, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700A3E0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A9D0 - 0x0700AA00\nstatic const Gfx bitfs_seg7_dl_0700A9D0[] = {\n    gsSPVertex(bitfs_seg7_vertex_0700A4A0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700AA00 - 0x0700AA78\nconst Gfx bitfs_seg7_dl_0700AA00[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_0700A520),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(bitfs_seg7_dl_0700A9D0),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/15/geo.inc.c",
    "content": "// 0x0E0005E8\nconst GeoLayout bitfs_geo_0005E8[] = {\n    GEO_CULLING_RADIUS(900),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bitfs_seg7_dl_0700AB90),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/15/model.inc.c",
    "content": "// 0x0700AA78 - 0x0700AB38\nstatic const Vtx bitfs_seg7_vertex_0700AA78[] = {\n    {{{   410,     51,   -306}, 0, {  2012,   1340}, {0xaf, 0xaf, 0xaf, 0xff}}},\n    {{{    72,    205,    307}, 0, {     0,      0}, {0xaf, 0xaf, 0xaf, 0xff}}},\n    {{{   410,     51,    307}, 0, {     0,   1340}, {0xaf, 0xaf, 0xaf, 0xff}}},\n    {{{    72,    205,   -306}, 0, {  2012,      0}, {0xaf, 0xaf, 0xaf, 0xff}}},\n    {{{  -409,    205,    307}, 0, {     0,   -542}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{    72,    205,    307}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{    72,    205,   -306}, 0, {  2012,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -409,    205,   -306}, 0, {  2012,   -544}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   410,      0,   -306}, 0, {  1500,  -1258}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   410,     51,    307}, 0, {  2012,    786}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   410,      0,    307}, 0, {  1500,    786}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   410,     51,   -306}, 0, {  2012,  -1258}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x0700AB38 - 0x0700AB90\nstatic const Gfx bitfs_seg7_dl_0700AB38[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_0700AA78, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700AB90 - 0x0700AC00\nconst Gfx bitfs_seg7_dl_0700AB90[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_0700AB38),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/16/geo.inc.c",
    "content": "// 0x0E000600\nconst GeoLayout bitfs_geo_000600[] = {\n    GEO_CULLING_RADIUS(2800),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitfs_seg7_dl_0700BED8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/16/model.inc.c",
    "content": "// 0x0700AC00 - 0x0700AD00\nstatic const Vtx bitfs_seg7_vertex_0700AC00[] = {\n    {{{ -1023,   -716,   -306}, 0, {  2012,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1023,    973,   -357}, 0, {  2182,  -4632}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1023,   -716,   -357}, 0, {  2182,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1023,    973,   -306}, 0, {  2012,  -4632}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2048,    512,   -306}, 0, {  2012,  -3098}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2048,   -716,   -306}, 0, {  2012,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2048,   -716,   -357}, 0, {  2182,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2048,    512,   -357}, 0, {  2182,  -3098}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1023,    307,   -306}, 0, {     0,  -2416}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{ -1023,   -101,   -306}, 0, {     0,  -1054}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{  -409,   -101,   -306}, 0, {  2012,  -1054}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{ -1023,   -716,   -357}, 0, {     0,    990}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{  -409,    973,   -357}, 0, {  2012,  -4630}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{  -409,    742,   -357}, 0, {  2012,  -3864}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{   819,    742,   -357}, 0, {  6100,  -3864}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{   819,    512,   -357}, 0, {  6100,  -3098}, {0x7d, 0x83, 0x7b, 0xff}}},\n};\n\n// 0x0700AD00 - 0x0700AE00\nstatic const Vtx bitfs_seg7_vertex_0700AD00[] = {\n    {{{ -1023,   -716,   -357}, 0, {     0,    990}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{  2048,    512,   -357}, 0, { 10188,  -3098}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{  2048,   -716,   -357}, 0, { 10188,    990}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{   819,    512,   -357}, 0, {  6100,  -3098}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{ -1023,    973,   -357}, 0, {     0,  -4630}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{  -409,    973,   -357}, 0, {  2012,  -4630}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{   205,   -306,   -306}, 0, {  4056,   -372}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{ -1023,    307,   -306}, 0, {     0,  -2416}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{  -409,   -101,   -306}, 0, {  2012,  -1054}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{  -409,    307,   -306}, 0, {  2012,  -2416}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{  -409,    742,   -306}, 0, {  2012,  -3864}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{  -409,   -716,   -306}, 0, {  2012,    990}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{  1434,   -716,   -306}, 0, {  8144,    990}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{  1434,   -101,   -306}, 0, {  8144,  -1054}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{   819,   -306,   -306}, 0, {  6100,   -372}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{   819,    512,   -306}, 0, {  6100,  -3098}, {0x7d, 0x83, 0x7b, 0xff}}},\n};\n\n// 0x0700AE00 - 0x0700AEE0\nstatic const Vtx bitfs_seg7_vertex_0700AE00[] = {\n    {{{  1434,   -101,   -306}, 0, {  8144,  -1054}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{  2048,    512,   -306}, 0, { 10188,  -3098}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{   819,    512,   -306}, 0, {  6100,  -3098}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{  2048,   -101,   -306}, 0, { 10188,  -1054}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{  1434,   -716,   -306}, 0, {  8144,    990}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{   819,   -306,   -306}, 0, {  6100,   -372}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{   205,   -306,   -306}, 0, {  4056,   -372}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{  -409,   -716,   -306}, 0, {  2012,    990}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{   205,    742,   -306}, 0, {  4056,  -3864}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{  -409,    742,   -306}, 0, {  2012,  -3864}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{  2048,   -716,   -306}, 0, {  2012,    990}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  2048,   -460,   -306}, 0, {  2012,    138}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  2048,   -460,    307}, 0, {     0,    138}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  2048,   -716,    307}, 0, {     0,    990}, {0x44, 0x44, 0x44, 0xff}}},\n};\n\n// 0x0700AEE0 - 0x0700AFD0\nstatic const Vtx bitfs_seg7_vertex_0700AEE0[] = {\n    {{{  -409,   -716,   -306}, 0, {  2012,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -409,   -101,   -306}, 0, {  2012,  -1054}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -409,   -101,    307}, 0, {     0,  -1054}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -409,    973,   -306}, 0, {  2012,  -4632}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -409,    742,   -306}, 0, {  2012,  -3864}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -409,    742,   -357}, 0, {  2182,  -3864}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -409,    973,   -357}, 0, {  2182,  -4632}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   819,    742,   -306}, 0, {  2012,  -3864}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   819,    512,   -306}, 0, {  2012,  -3098}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   819,    512,   -357}, 0, {  2182,  -3098}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   819,    742,   -357}, 0, {  2182,  -3864}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1023,   -716,    307}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1023,   -101,   -306}, 0, {  2012,  -1054}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1023,   -716,   -306}, 0, {  2012,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1023,   -101,    307}, 0, {     0,  -1054}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x0700AFD0 - 0x0700B0C0\nstatic const Vtx bitfs_seg7_vertex_0700AFD0[] = {\n    {{{  1434,   -716,    307}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1434,   -101,    307}, 0, {     0,  -1054}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1434,   -101,   -306}, 0, {  2012,  -1054}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -409,   -716,   -306}, 0, {  2012,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -409,   -101,    307}, 0, {     0,  -1054}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -409,   -716,    307}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   819,   -306,   -306}, 0, {  2012,   -372}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   819,    742,   -306}, 0, {  2012,  -3864}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   819,    742,    307}, 0, {     0,  -3864}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   819,   -306,    307}, 0, {     0,   -372}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   205,   -306,    307}, 0, {     0,   -372}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   205,    742,   -306}, 0, {  2012,  -3864}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   205,   -306,   -306}, 0, {  2012,   -372}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   205,    742,    307}, 0, {     0,  -3864}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1434,   -716,   -306}, 0, {  2012,    990}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x0700B0C0 - 0x0700B1B0\nstatic const Vtx bitfs_seg7_vertex_0700B0C0[] = {\n    {{{  -409,    307,   -306}, 0, {  2012,  -2416}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -409,    973,    307}, 0, {     0,  -4632}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -409,    307,    307}, 0, {     0,  -2416}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -409,    973,   -306}, 0, {  2012,  -4632}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1023,    307,    307}, 0, {     0,  -2416}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1023,    973,    307}, 0, {     0,  -4632}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1023,    973,   -306}, 0, {  2012,  -4632}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1023,    307,   -306}, 0, {  2012,  -2416}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -409,    307,    307}, 0, {  2012,  -2416}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1023,    973,    307}, 0, {     0,  -4630}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1023,    307,    307}, 0, {     0,  -2416}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -409,   -716,    307}, 0, {  2012,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -409,   -101,    307}, 0, {  2012,  -1054}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1023,   -101,    307}, 0, {     0,  -1054}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1023,   -716,    307}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x0700B1B0 - 0x0700B260\nstatic const Vtx bitfs_seg7_vertex_0700B1B0[] = {\n    {{{   819,   -306,    307}, 0, {  6100,   -372}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   819,    742,    307}, 0, {  6100,  -3864}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   205,    742,    307}, 0, {  4056,  -3864}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   205,   -306,    307}, 0, {  4056,   -372}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2048,   -716,    307}, 0, { 10188,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2048,   -101,    307}, 0, { 10188,  -1054}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1434,   -101,    307}, 0, {  8144,  -1054}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1434,   -716,    307}, 0, {  8144,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -409,    307,    307}, 0, {  2012,  -2416}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -409,    973,    307}, 0, {  2012,  -4630}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1023,    973,    307}, 0, {     0,  -4630}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x0700B260 - 0x0700B360\nstatic const Vtx bitfs_seg7_vertex_0700B260[] = {\n    {{{  -409,   -101,   -306}, 0, {  2012,  -1054}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1023,   -101,   -306}, 0, {     0,  -1054}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1023,   -101,    307}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -409,   -101,    307}, 0, {  2012,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   819,   -716,   -306}, 0, {  2012,  -1054}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   205,   -716,   -306}, 0, {     0,  -1054}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   205,   -716,    307}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   819,   -716,    307}, 0, {  2012,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1637,   -716,   -306}, 0, {  2012,  -1054}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{ -2252,   -716,   -306}, 0, {     0,  -1054}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{ -2252,   -716,    307}, 0, {     0,    990}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{ -1637,   -716,    307}, 0, {  2012,    990}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  2048,   -101,   -306}, 0, {  2012,  -1054}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  1434,   -101,    307}, 0, {     0,    990}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  2048,   -101,    307}, 0, {  2012,    990}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  1434,   -101,   -306}, 0, {     0,  -1054}, {0xb9, 0xb9, 0xb9, 0xff}}},\n};\n\n// 0x0700B360 - 0x0700B450\nstatic const Vtx bitfs_seg7_vertex_0700B360[] = {\n    {{{  2048,    512,   -357}, 0, {  7760,  -3482}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   819,    512,   -357}, 0, {  4694,   -416}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   819,    512,   -306}, 0, {  4568,   -544}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  2048,    512,   -306}, 0, {  7634,  -3610}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   819,    742,   -357}, 0, {  4694,   -416}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   205,    742,   -357}, 0, {  3162,   1116}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   205,    742,    307}, 0, {  1502,   -544}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -409,    742,   -357}, 0, {  1628,   2648}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -409,    742,   -306}, 0, {  1502,   2520}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   205,    742,   -306}, 0, {  3034,    990}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   819,    742,    307}, 0, {  3034,  -2076}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -409,    973,   -357}, 0, {  1628,   2648}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{ -1023,    973,   -357}, 0, {    96,   4182}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{ -1023,    973,    307}, 0, { -1562,   2520}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -409,    973,    307}, 0, {     0,    990}, {0xb9, 0xb9, 0xb9, 0xff}}},\n};\n\n// 0x0700B450 - 0x0700B4D0\nstatic const Vtx bitfs_seg7_vertex_0700B450[] = {\n    {{{   819,   -306,    307}, 0, {  2012,    990}, {0x33, 0x33, 0x33, 0xff}}},\n    {{{   205,   -306,    307}, 0, {     0,    990}, {0x33, 0x33, 0x33, 0xff}}},\n    {{{   819,   -306,   -306}, 0, {  2012,  -1054}, {0x33, 0x33, 0x33, 0xff}}},\n    {{{   205,   -306,   -306}, 0, {     0,  -1054}, {0x33, 0x33, 0x33, 0xff}}},\n    {{{ -1023,    307,    307}, 0, {     0,    990}, {0x33, 0x33, 0x33, 0xff}}},\n    {{{ -1023,    307,   -306}, 0, {     0,  -1054}, {0x33, 0x33, 0x33, 0xff}}},\n    {{{  -409,    307,   -306}, 0, {  2012,  -1054}, {0x33, 0x33, 0x33, 0xff}}},\n    {{{  -409,    307,    307}, 0, {  2012,    990}, {0x33, 0x33, 0x33, 0xff}}},\n};\n\n// 0x0700B4D0 - 0x0700B5D0\nstatic const Vtx bitfs_seg7_vertex_0700B4D0[] = {\n    {{{ -1023,  -1023,    307}, 0, { -1564,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1023,   -716,    307}, 0, { -1564,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1023,   -716,   -357}, 0, {   650,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1023,  -1023,   -357}, 0, {   650,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2048,   -716,    307}, 0, {     0,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2048,  -1023,   -357}, 0, {  2182,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2048,   -716,   -357}, 0, {  2182,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2048,  -1023,    307}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1023,   -716,   -357}, 0, {     0,      0}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{  2048,  -1023,   -357}, 0, { 10188,    990}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{ -1023,  -1023,   -357}, 0, {     0,    990}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{  2048,   -716,   -357}, 0, { 10188,      0}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{   819,  -1023,   -306}, 0, {  6100,    990}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{  1434,  -1023,   -306}, 0, {  8144,    990}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{  1434,   -716,   -306}, 0, {  8144,      0}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{   819,   -716,   -306}, 0, {  6100,      0}, {0x7d, 0x83, 0x7b, 0xff}}},\n};\n\n// 0x0700B5D0 - 0x0700B6C0\nstatic const Vtx bitfs_seg7_vertex_0700B5D0[] = {\n    {{{   205,   -716,   -306}, 0, {  4056,      0}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{  -409,   -716,   -306}, 0, {  2012,      0}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{  -409,  -1023,   -306}, 0, {  2012,    990}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{   205,  -1023,   -306}, 0, {  4056,    990}, {0x7d, 0x83, 0x7b, 0xff}}},\n    {{{   205,  -1023,    307}, 0, {  2012,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   205,   -716,   -306}, 0, {     0,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   205,  -1023,   -306}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -2252,  -1023,    307}, 0, {  2012,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -2252,   -716,   -306}, 0, {     0,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -2252,  -1023,   -306}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -2252,   -716,    307}, 0, {  2012,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1637,  -1023,   -306}, 0, {  2012,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1637,   -716,   -306}, 0, {  2012,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1637,   -716,    307}, 0, {     0,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1637,  -1023,    307}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x0700B6C0 - 0x0700B7B0\nstatic const Vtx bitfs_seg7_vertex_0700B6C0[] = {\n    {{{  -409,  -1023,   -306}, 0, {  2012,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -409,   -716,   -306}, 0, {  2012,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -409,   -716,    307}, 0, {     0,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -409,  -1023,    307}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1434,  -1023,    307}, 0, {  2012,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1434,   -716,    307}, 0, {  2012,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1434,   -716,   -306}, 0, {     0,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   205,  -1023,    307}, 0, {  2012,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   205,   -716,    307}, 0, {  2012,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   205,   -716,   -306}, 0, {     0,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   819,  -1023,   -306}, 0, {  2012,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   819,   -716,    307}, 0, {     0,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   819,  -1023,    307}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   819,   -716,   -306}, 0, {  2012,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1434,  -1023,   -306}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x0700B7B0 - 0x0700B8A0\nstatic const Vtx bitfs_seg7_vertex_0700B7B0[] = {\n    {{{   819,  -1023,    307}, 0, {  6100,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   205,   -716,    307}, 0, {  4056,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   205,  -1023,    307}, 0, {  4056,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -2252,  -1023,   -306}, 0, {  2012,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1637,   -716,   -306}, 0, {     0,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1637,  -1023,   -306}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -2252,   -716,   -306}, 0, {  2012,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1637,  -1023,    307}, 0, {  2012,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1637,   -716,    307}, 0, {  2012,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -2252,   -716,    307}, 0, {     0,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -2252,  -1023,    307}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -409,  -1023,    307}, 0, {  2012,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1023,   -716,    307}, 0, {     0,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1023,  -1023,    307}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -409,   -716,    307}, 0, {  2012,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x0700B8A0 - 0x0700B910\nstatic const Vtx bitfs_seg7_vertex_0700B8A0[] = {\n    {{{  2048,  -1023,    307}, 0, { 10188,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2048,   -716,    307}, 0, { 10188,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1434,   -716,    307}, 0, {  8144,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   819,  -1023,    307}, 0, {  6100,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   819,   -716,    307}, 0, {  6100,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   205,   -716,    307}, 0, {  4056,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1434,  -1023,    307}, 0, {  8144,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x0700B910 - 0x0700BA10\nstatic const Vtx bitfs_seg7_vertex_0700B910[] = {\n    {{{  2458,   -101,   -306}, 0, {   650,   1670}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2458,   -255,   -306}, 0, {   394,   1924}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2048,   -460,   -306}, 0, {  -626,   1584}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2048,   -101,   -306}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2048,   -101,    307}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2048,   -460,    307}, 0, {  -626,   1584}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2458,   -255,    307}, 0, {   394,   1924}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2458,   -101,    307}, 0, {   650,   1670}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2458,   -255,   -306}, 0, {   990,   2010}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  2458,   -101,   -306}, 0, {  1246,   1754}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  2458,   -101,    307}, 0, {   224,    734}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  2458,   -255,    307}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  2048,   -460,    307}, 0, {     0,    990}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  2458,   -255,   -306}, 0, {  1752,   1248}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  2458,   -255,    307}, 0, {   730,    228}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  2048,   -460,   -306}, 0, {   990,   2010}, {0x44, 0x44, 0x44, 0xff}}},\n};\n\n// 0x0700BA10 - 0x0700BA50\nstatic const Vtx bitfs_seg7_vertex_0700BA10[] = {\n    {{{  2458,   -101,   -306}, 0, {  1672,   1328}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2048,   -101,   -306}, 0, {   990,   2010}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2048,   -101,    307}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2458,   -101,    307}, 0, {   650,    308}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700BA50 - 0x0700BC38\nstatic const Gfx bitfs_seg7_dl_0700BA50[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_0700AC00, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0, 11, 14, 15, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700AD00, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  9,  7, 0x0,  6, 10,  9, 0x0),\n    gsSP2Triangles( 6,  8, 11, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(13, 15, 14, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700AE00, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(10, 12, 13, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700AEE0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700AFD0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700B0C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700B1B0, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP1Triangle( 8,  9, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700BC38 - 0x0700BD10\nstatic const Gfx bitfs_seg7_dl_0700BC38[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_0700B260, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700B360, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 5,  8,  9, 0x0,  4,  6, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 13, 14, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700B450, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700BD10 - 0x0700BE58\nstatic const Gfx bitfs_seg7_dl_0700BD10[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bitfs_seg7_texture_07001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_0700B4D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700B5D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700B6C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 4,  6, 14, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700B7B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700B8A0, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  2,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700BE58 - 0x0700BED8\nstatic const Gfx bitfs_seg7_dl_0700BE58[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_0700B910, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700BA10, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700BED8 - 0x0700BF90\nconst Gfx bitfs_seg7_dl_0700BED8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_0700BA50),\n    gsSPDisplayList(bitfs_seg7_dl_0700BC38),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_0700BD10),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_0700BE58),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/17/geo.inc.c",
    "content": "// 0x0E000618\nconst GeoLayout bitfs_geo_000618[] = {\n    GEO_CULLING_RADIUS(2500),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bitfs_seg7_dl_0700C3C0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/17/model.inc.c",
    "content": "// 0x0700BF90 - 0x0700C090\nstatic const Vtx bitfs_seg7_vertex_0700BF90[] = {\n    {{{ -1637,   -562,    614}, 0, {  2012,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -2252,   -869,    614}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1637,   -869,    614}, 0, {  2012,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -2252,   -562,    614}, 0, {     0,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1637,   -869,   -613}, 0, {  2012,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -2252,   -562,   -613}, 0, {     0,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1637,   -562,   -613}, 0, {  2012,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -2252,   -869,   -613}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1637,   -562,    307}, 0, {  2012,   2010}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -2252,   -562,    614}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1637,   -562,    614}, 0, {  2012,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -2252,   -562,    307}, 0, {     0,   2010}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1637,   -562,   -613}, 0, {  2012,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -2252,   -562,   -306}, 0, {     0,   2010}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1637,   -562,   -306}, 0, {  2012,   2010}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -2252,   -562,   -613}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n};\n\n// 0x0700C090 - 0x0700C190\nstatic const Vtx bitfs_seg7_vertex_0700C090[] = {\n    {{{     0,     51,   -101}, 0, {   992,      0}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{     0,     51,    102}, 0, {   992,  -1054}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   205,     51,   -306}, 0, {     0,    990}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -409,     51,    307}, 0, {     0,    990}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -204,     51,    102}, 0, {   992,      0}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   205,     51,    307}, 0, {     0,  -2076}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -204,     51,   -101}, 0, {   988,  -1054}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -409,     51,   -306}, 0, {     0,  -2076}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -204,     51,    102}, 0, {   988,      0}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{     0,     51,   -101}, 0, {   988,      0}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{ -2252,   -562,    307}, 0, { -1424,    820}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -2252,   -869,    614}, 0, {  -404,   -202}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -2252,   -562,    614}, 0, {  -404,    820}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -2252,   -562,   -613}, 0, {  -368,    820}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -2252,   -869,   -613}, 0, {  -368,   -202}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -2252,   -869,   -306}, 0, { -1392,   -202}, {0x44, 0x44, 0x44, 0xff}}},\n};\n\n// 0x0700C190 - 0x0700C270\nstatic const Vtx bitfs_seg7_vertex_0700C190[] = {\n    {{{ -2252,   -562,   -613}, 0, {  -368,    820}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -2252,   -869,   -306}, 0, { -1392,   -202}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -2252,   -562,   -306}, 0, { -1392,    820}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1637,   -869,   -613}, 0, {  -368,   -202}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1637,   -562,   -306}, 0, { -1392,    820}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1637,   -869,   -306}, 0, { -1392,   -202}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1637,   -562,   -613}, 0, {  -368,    820}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1637,   -869,    307}, 0, { -1424,   -202}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1637,   -562,    614}, 0, {  -404,    820}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1637,   -869,    614}, 0, {  -404,   -202}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1637,   -562,    307}, 0, { -1424,    820}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -2252,   -562,    307}, 0, { -1424,    820}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -2252,   -869,    307}, 0, { -1424,   -202}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -2252,   -869,    614}, 0, {  -404,   -202}, {0x44, 0x44, 0x44, 0xff}}},\n};\n\n// 0x0700C270 - 0x0700C2B0\nstatic const Vtx bitfs_seg7_vertex_0700C270[] = {\n    {{{  -409,   -153,    307}, 0, {  2012,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   205,     51,    307}, 0, {   988,  -2076}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -409,     51,    307}, 0, {   988,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   205,   -153,    307}, 0, {  2012,  -2076}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x0700C2B0 - 0x0700C3C0\nstatic const Gfx bitfs_seg7_dl_0700C2B0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_0700BF90, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700C090, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  4, 0x0),\n    gsSP2Triangles( 3,  5,  1, 0x0,  3,  6,  7, 0x0),\n    gsSP2Triangles( 3,  8,  6, 0x0,  7,  6,  2, 0x0),\n    gsSP2Triangles( 6,  9,  2, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700C190, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700C270, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700C3C0 - 0x0700C430\nconst Gfx bitfs_seg7_dl_0700C3C0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_0700C2B0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/18/geo.inc.c",
    "content": "// 0x0E000630\nconst GeoLayout bitfs_geo_000630[] = {\n    GEO_CULLING_RADIUS(1600),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitfs_seg7_dl_0700EC78),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/18/model.inc.c",
    "content": "// 0x0700C430 - 0x0700C448\nstatic const Lights1 bitfs_seg7_lights_0700C430 = gdSPDefLights1(\n    0x46, 0x46, 0x46,\n    0x8c, 0x8c, 0x8c, 0x28, 0x28, 0x28\n);\n\n// 0x0700C448 - 0x0700C460\nstatic const Lights1 bitfs_seg7_lights_0700C448 = gdSPDefLights1(\n    0x64, 0x64, 0x64,\n    0xc8, 0xc8, 0xc8, 0x28, 0x28, 0x28\n);\n\n// 0x0700C460 - 0x0700C478\nstatic const Lights1 bitfs_seg7_lights_0700C460 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700C478 - 0x0700C490\nstatic const Lights1 bitfs_seg7_lights_0700C478 = gdSPDefLights1(\n    0x32, 0x32, 0x32,\n    0x64, 0x64, 0x64, 0x28, 0x28, 0x28\n);\n\n// 0x0700C490 - 0x0700C4A8\nstatic const Lights1 bitfs_seg7_lights_0700C490 = gdSPDefLights1(\n    0x62, 0x7f, 0x7f,\n    0xc4, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700C4A8 - 0x0700C4C0\nstatic const Lights1 bitfs_seg7_lights_0700C4A8 = gdSPDefLights1(\n    0x32, 0x7f, 0x59,\n    0x65, 0xff, 0xb2, 0x28, 0x28, 0x28\n);\n\n// 0x0700C4C0 - 0x0700C540\nstatic const Vtx bitfs_seg7_vertex_0700C4C0[] = {\n    {{{  -983,    454,    320}, 0, {   224,    734}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -296,    454,    320}, 0, {  1366,   1876}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -574,    608,    320}, 0, {  1160,   1158}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -983,    608,    320}, 0, {   480,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -983,    608,   -293}, 0, {   480,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -296,    454,   -293}, 0, {  1366,   1876}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -983,    454,   -293}, 0, {   224,    734}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -574,    608,   -293}, 0, {  1160,   1158}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700C540 - 0x0700C580\nstatic const Vtx bitfs_seg7_vertex_0700C540[] = {\n    {{{  -983,    608,   -293}, 0, {  -542,   2520}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -983,    454,   -293}, 0, {  -924,   2138}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -983,    454,    320}, 0, {   606,    606}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -983,    608,    320}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700C580 - 0x0700C5C0\nstatic const Vtx bitfs_seg7_vertex_0700C580[] = {\n    {{{  -983,    608,    320}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -574,    608,    320}, 0, {   650,    308}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -574,    608,   -293}, 0, {  1672,   1328}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -983,    608,   -293}, 0, {   990,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700C5C0 - 0x0700C600\nstatic const Vtx bitfs_seg7_vertex_0700C5C0[] = {\n    {{{  -296,    454,    320}, 0, {  1110,   -152}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -983,    454,    320}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -983,    454,   -293}, 0, {   990,   2010}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -296,    454,   -293}, 0, {  2132,    870}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0700C600 - 0x0700C700\nstatic const Vtx bitfs_seg7_vertex_0700C600[] = {\n    {{{    71,    -74,   -283}, 0, {  -724,    500}, {0xbc, 0x52, 0xbc, 0xff}}},\n    {{{   -98,    -74,   -114}, 0, {  -744,    544}, {0xbc, 0x52, 0xbc, 0xff}}},\n    {{{   -49,    -15,    -92}, 0, {  -806,    520}, {0xbc, 0x52, 0xbc, 0xff}}},\n    {{{   446,    -15,    -92}, 0, {  -744,    392}, {0x44, 0x52, 0xbc, 0xff}}},\n    {{{   326,    -74,   -283}, 0, {  -690,    434}, {0x44, 0x52, 0xbc, 0xff}}},\n    {{{   304,    -15,   -234}, 0, {  -762,    428}, {0x44, 0x52, 0xbc, 0xff}}},\n    {{{   304,    -15,   -234}, 0, {  -762,    428}, {0x00, 0x51, 0x9f, 0xff}}},\n    {{{   326,    -74,   -283}, 0, {  -690,    434}, {0x00, 0x51, 0x9f, 0xff}}},\n    {{{    71,    -74,   -283}, 0, {  -724,    500}, {0x00, 0x51, 0x9f, 0xff}}},\n    {{{    92,    -15,   -234}, 0, {  -788,    482}, {0x00, 0x51, 0x9f, 0xff}}},\n    {{{   304,    -15,   -234}, 0, {  -762,    428}, {0xb8, 0x4a, 0x48, 0xff}}},\n    {{{   377,   -112,    -61}, 0, {  -642,    428}, {0xb8, 0x4a, 0x48, 0xff}}},\n    {{{   446,    -15,    -92}, 0, {  -744,    392}, {0xb8, 0x4a, 0x48, 0xff}}},\n    {{{   304,    -15,   -234}, 0, {  -762,    428}, {0xb9, 0x4b, 0x48, 0xff}}},\n    {{{   275,   -112,   -162}, 0, {  -654,    454}, {0xb9, 0x4b, 0x48, 0xff}}},\n    {{{   377,   -112,    -61}, 0, {  -642,    428}, {0xb9, 0x4b, 0x48, 0xff}}},\n};\n\n// 0x0700C700 - 0x0700C7E0\nstatic const Vtx bitfs_seg7_vertex_0700C700[] = {\n    {{{   304,    -15,   -234}, 0, {  -762,    428}, {0x00, 0x4b, 0x65, 0xff}}},\n    {{{    92,    -15,   -234}, 0, {  -788,    482}, {0x00, 0x4b, 0x65, 0xff}}},\n    {{{   123,   -112,   -162}, 0, {  -674,    494}, {0x00, 0x4b, 0x65, 0xff}}},\n    {{{   275,   -112,   -162}, 0, {  -654,    454}, {0x00, 0x4b, 0x65, 0xff}}},\n    {{{   -98,    -74,   -114}, 0, {  -744,    544}, {0xe6, 0x87, 0xe6, 0xff}}},\n    {{{   123,   -112,   -162}, 0, {  -674,    494}, {0xe6, 0x87, 0xe6, 0xff}}},\n    {{{    21,   -112,    -61}, 0, {  -686,    520}, {0xe6, 0x87, 0xe6, 0xff}}},\n    {{{    71,    -74,   -283}, 0, {  -724,    500}, {0xe6, 0x87, 0xe6, 0xff}}},\n    {{{    71,    -74,   -283}, 0, {  -724,    500}, {0x00, 0x87, 0xda, 0xff}}},\n    {{{   275,   -112,   -162}, 0, {  -654,    454}, {0x00, 0x87, 0xda, 0xff}}},\n    {{{   123,   -112,   -162}, 0, {  -674,    494}, {0x00, 0x87, 0xda, 0xff}}},\n    {{{    21,   -112,    -61}, 0, {  -686,    520}, {0x48, 0x4b, 0x48, 0xff}}},\n    {{{   123,   -112,   -162}, 0, {  -674,    494}, {0x48, 0x4b, 0x48, 0xff}}},\n    {{{   -49,    -15,    -92}, 0, {  -806,    520}, {0x48, 0x4b, 0x48, 0xff}}},\n};\n\n// 0x0700C7E0 - 0x0700C8E0\nstatic const Vtx bitfs_seg7_vertex_0700C7E0[] = {\n    {{{   123,   -112,   -162}, 0, {  -674,    494}, {0x48, 0x4c, 0x47, 0xff}}},\n    {{{    92,    -15,   -234}, 0, {  -788,    482}, {0x48, 0x4c, 0x47, 0xff}}},\n    {{{   -49,    -15,    -92}, 0, {  -806,    520}, {0x48, 0x4c, 0x47, 0xff}}},\n    {{{    71,    -74,   -283}, 0, {  -724,    500}, {0x00, 0x87, 0xda, 0xff}}},\n    {{{   326,    -74,   -283}, 0, {  -690,    434}, {0x00, 0x87, 0xda, 0xff}}},\n    {{{   275,   -112,   -162}, 0, {  -654,    454}, {0x00, 0x87, 0xda, 0xff}}},\n    {{{    92,    -15,   -234}, 0, {  -788,    482}, {0xbb, 0x51, 0xbc, 0xff}}},\n    {{{    71,    -74,   -283}, 0, {  -724,    500}, {0xbb, 0x51, 0xbc, 0xff}}},\n    {{{   -49,    -15,    -92}, 0, {  -806,    520}, {0xbb, 0x51, 0xbc, 0xff}}},\n    {{{   -98,    -74,    140}, 0, {  -744,    544}, {0xda, 0x88, 0x00, 0xff}}},\n    {{{    21,   -112,    -61}, 0, {  -686,    520}, {0xda, 0x88, 0x00, 0xff}}},\n    {{{    21,   -112,     91}, 0, {  -686,    520}, {0xda, 0x88, 0x00, 0xff}}},\n    {{{   -98,    -74,   -114}, 0, {  -744,    544}, {0xda, 0x88, 0x00, 0xff}}},\n    {{{   -49,    -15,    119}, 0, {  -806,    520}, {0x66, 0x4a, 0x00, 0xff}}},\n    {{{    21,   -112,    -61}, 0, {  -686,    520}, {0x66, 0x4a, 0x00, 0xff}}},\n    {{{   -49,    -15,    -92}, 0, {  -806,    520}, {0x66, 0x4a, 0x00, 0xff}}},\n};\n\n// 0x0700C8E0 - 0x0700C9E0\nstatic const Vtx bitfs_seg7_vertex_0700C8E0[] = {\n    {{{   -49,    -15,    119}, 0, {  -806,    520}, {0x66, 0x4a, 0x00, 0xff}}},\n    {{{    21,   -112,     91}, 0, {  -686,    520}, {0x66, 0x4a, 0x00, 0xff}}},\n    {{{    21,   -112,    -61}, 0, {  -686,    520}, {0x66, 0x4a, 0x00, 0xff}}},\n    {{{   -49,    -15,    -92}, 0, {  -806,    520}, {0x9f, 0x51, 0x00, 0xff}}},\n    {{{   -98,    -74,    140}, 0, {  -744,    544}, {0x9f, 0x51, 0x00, 0xff}}},\n    {{{   -49,    -15,    119}, 0, {  -806,    520}, {0x9f, 0x51, 0x00, 0xff}}},\n    {{{   -98,    -74,   -114}, 0, {  -744,    544}, {0x9f, 0x51, 0x00, 0xff}}},\n    {{{   -98,    -74,    140}, 0, {  -744,    544}, {0xbb, 0x51, 0x44, 0xff}}},\n    {{{    92,    -15,    261}, 0, {  -788,    482}, {0xbb, 0x51, 0x44, 0xff}}},\n    {{{   -49,    -15,    119}, 0, {  -806,    520}, {0xbb, 0x51, 0x44, 0xff}}},\n    {{{   123,   -112,    193}, 0, {  -674,    494}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{    21,   -112,     91}, 0, {  -686,    520}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{   -49,    -15,    119}, 0, {  -806,    520}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{    92,    -15,    261}, 0, {  -788,    482}, {0x49, 0x4a, 0xb8, 0xff}}},\n    {{{   123,   -112,    193}, 0, {  -674,    494}, {0x49, 0x4a, 0xb8, 0xff}}},\n    {{{   -49,    -15,    119}, 0, {  -806,    520}, {0x49, 0x4a, 0xb8, 0xff}}},\n};\n\n// 0x0700C9E0 - 0x0700CAE0\nstatic const Vtx bitfs_seg7_vertex_0700C9E0[] = {\n    {{{   -98,    -74,    140}, 0, {  -744,    544}, {0xe5, 0x88, 0x1b, 0xff}}},\n    {{{    21,   -112,     91}, 0, {  -686,    520}, {0xe5, 0x88, 0x1b, 0xff}}},\n    {{{   123,   -112,    193}, 0, {  -674,    494}, {0xe5, 0x88, 0x1b, 0xff}}},\n    {{{   326,    -74,    310}, 0, {  -690,    434}, {0x00, 0x51, 0x61, 0xff}}},\n    {{{   304,    -15,    261}, 0, {  -762,    428}, {0x00, 0x51, 0x61, 0xff}}},\n    {{{    92,    -15,    261}, 0, {  -788,    482}, {0x00, 0x51, 0x61, 0xff}}},\n    {{{    71,    -74,    310}, 0, {  -724,    500}, {0x00, 0x51, 0x61, 0xff}}},\n    {{{   -98,    -74,    140}, 0, {  -744,    544}, {0xbb, 0x51, 0x44, 0xff}}},\n    {{{    71,    -74,    310}, 0, {  -724,    500}, {0xbb, 0x51, 0x44, 0xff}}},\n    {{{    92,    -15,    261}, 0, {  -788,    482}, {0xbb, 0x51, 0x44, 0xff}}},\n    {{{   123,   -112,    193}, 0, {  -674,    494}, {0x00, 0x48, 0x99, 0xff}}},\n    {{{    92,    -15,    261}, 0, {  -788,    482}, {0x00, 0x48, 0x99, 0xff}}},\n    {{{   304,    -15,    261}, 0, {  -762,    428}, {0x00, 0x48, 0x99, 0xff}}},\n    {{{    71,    -74,    310}, 0, {  -724,    500}, {0x00, 0x88, 0x27, 0xff}}},\n    {{{   123,   -112,    193}, 0, {  -674,    494}, {0x00, 0x88, 0x27, 0xff}}},\n    {{{   275,   -112,    193}, 0, {  -654,    454}, {0x00, 0x88, 0x27, 0xff}}},\n};\n\n// 0x0700CAE0 - 0x0700CBD0\nstatic const Vtx bitfs_seg7_vertex_0700CAE0[] = {\n    {{{    71,    -74,    310}, 0, {  -724,    500}, {0xe5, 0x87, 0x1b, 0xff}}},\n    {{{   -98,    -74,    140}, 0, {  -744,    544}, {0xe5, 0x87, 0x1b, 0xff}}},\n    {{{   123,   -112,    193}, 0, {  -674,    494}, {0xe5, 0x87, 0x1b, 0xff}}},\n    {{{   123,   -112,    193}, 0, {  -674,    494}, {0x00, 0x48, 0x99, 0xff}}},\n    {{{   304,    -15,    261}, 0, {  -762,    428}, {0x00, 0x48, 0x99, 0xff}}},\n    {{{   275,   -112,    193}, 0, {  -654,    454}, {0x00, 0x48, 0x99, 0xff}}},\n    {{{   495,    -74,    140}, 0, {  -668,    392}, {0x44, 0x51, 0x44, 0xff}}},\n    {{{   446,    -15,    119}, 0, {  -744,    392}, {0x44, 0x51, 0x44, 0xff}}},\n    {{{   304,    -15,    261}, 0, {  -762,    428}, {0x44, 0x51, 0x44, 0xff}}},\n    {{{   326,    -74,    310}, 0, {  -690,    434}, {0x44, 0x52, 0x44, 0xff}}},\n    {{{   495,    -74,    140}, 0, {  -668,    392}, {0x44, 0x52, 0x44, 0xff}}},\n    {{{   304,    -15,    261}, 0, {  -762,    428}, {0x44, 0x52, 0x44, 0xff}}},\n    {{{   275,   -112,    193}, 0, {  -654,    454}, {0xb7, 0x49, 0xb7, 0xff}}},\n    {{{   304,    -15,    261}, 0, {  -762,    428}, {0xb7, 0x49, 0xb7, 0xff}}},\n    {{{   446,    -15,    119}, 0, {  -744,    392}, {0xb7, 0x49, 0xb7, 0xff}}},\n};\n\n// 0x0700CBD0 - 0x0700CCB0\nstatic const Vtx bitfs_seg7_vertex_0700CBD0[] = {\n    {{{   377,   -112,     91}, 0, {  -642,    428}, {0x1b, 0x88, 0x1b, 0xff}}},\n    {{{   495,    -74,    140}, 0, {  -668,    392}, {0x1b, 0x88, 0x1b, 0xff}}},\n    {{{   275,   -112,    193}, 0, {  -654,    454}, {0x1b, 0x88, 0x1b, 0xff}}},\n    {{{   326,    -74,    310}, 0, {  -690,    434}, {0x1b, 0x88, 0x1b, 0xff}}},\n    {{{    71,    -74,    310}, 0, {  -724,    500}, {0x00, 0x88, 0x27, 0xff}}},\n    {{{   275,   -112,    193}, 0, {  -654,    454}, {0x00, 0x88, 0x27, 0xff}}},\n    {{{   326,    -74,    310}, 0, {  -690,    434}, {0x00, 0x88, 0x27, 0xff}}},\n    {{{   275,   -112,    193}, 0, {  -654,    454}, {0xb7, 0x49, 0xb7, 0xff}}},\n    {{{   446,    -15,    119}, 0, {  -744,    392}, {0xb7, 0x49, 0xb7, 0xff}}},\n    {{{   377,   -112,     91}, 0, {  -642,    428}, {0xb7, 0x49, 0xb7, 0xff}}},\n    {{{   446,    -15,    119}, 0, {  -744,    392}, {0x61, 0x51, 0x00, 0xff}}},\n    {{{   495,    -74,    140}, 0, {  -668,    392}, {0x61, 0x51, 0x00, 0xff}}},\n    {{{   495,    -74,   -114}, 0, {  -668,    392}, {0x61, 0x51, 0x00, 0xff}}},\n    {{{   446,    -15,    -92}, 0, {  -744,    392}, {0x61, 0x51, 0x00, 0xff}}},\n};\n\n// 0x0700CCB0 - 0x0700CD90\nstatic const Vtx bitfs_seg7_vertex_0700CCB0[] = {\n    {{{   446,    -15,    -92}, 0, {  -744,    392}, {0x99, 0x49, 0x00, 0xff}}},\n    {{{   377,   -112,     91}, 0, {  -642,    428}, {0x99, 0x49, 0x00, 0xff}}},\n    {{{   446,    -15,    119}, 0, {  -744,    392}, {0x99, 0x49, 0x00, 0xff}}},\n    {{{   377,   -112,     91}, 0, {  -642,    428}, {0x26, 0x88, 0x00, 0xff}}},\n    {{{   495,    -74,   -114}, 0, {  -668,    392}, {0x26, 0x88, 0x00, 0xff}}},\n    {{{   495,    -74,    140}, 0, {  -668,    392}, {0x26, 0x88, 0x00, 0xff}}},\n    {{{   377,   -112,    -61}, 0, {  -642,    428}, {0x99, 0x49, 0x00, 0xff}}},\n    {{{   377,   -112,    -61}, 0, {  -642,    428}, {0x26, 0x88, 0x00, 0xff}}},\n    {{{   446,    -15,    -92}, 0, {  -744,    392}, {0x44, 0x52, 0xbc, 0xff}}},\n    {{{   495,    -74,   -114}, 0, {  -668,    392}, {0x44, 0x52, 0xbc, 0xff}}},\n    {{{   326,    -74,   -283}, 0, {  -690,    434}, {0x44, 0x52, 0xbc, 0xff}}},\n    {{{   377,   -112,    -61}, 0, {  -642,    428}, {0x1a, 0x87, 0xe5, 0xff}}},\n    {{{   275,   -112,   -162}, 0, {  -654,    454}, {0x1a, 0x87, 0xe5, 0xff}}},\n    {{{   495,    -74,   -114}, 0, {  -668,    392}, {0x1a, 0x87, 0xe5, 0xff}}},\n};\n\n// 0x0700CD90 - 0x0700CE70\nstatic const Vtx bitfs_seg7_vertex_0700CD90[] = {\n    {{{   275,   -112,   -162}, 0, {  -654,    454}, {0x1a, 0x87, 0xe6, 0xff}}},\n    {{{   326,    -74,   -283}, 0, {  -690,    434}, {0x1a, 0x87, 0xe6, 0xff}}},\n    {{{   495,    -74,   -114}, 0, {  -668,    392}, {0x1a, 0x87, 0xe6, 0xff}}},\n    {{{   284,   -294,   -188}, 0, {  -442,    488}, {0x00, 0x4b, 0x65, 0xff}}},\n    {{{   112,   -294,   -188}, 0, {  -464,    532}, {0x00, 0x4b, 0x65, 0xff}}},\n    {{{   136,   -372,   -130}, 0, {  -372,    540}, {0x00, 0x4b, 0x65, 0xff}}},\n    {{{   260,   -372,   -130}, 0, {  -356,    508}, {0x00, 0x4b, 0x65, 0xff}}},\n    {{{   284,   -294,   -188}, 0, {  -442,    488}, {0xb8, 0x4b, 0x48, 0xff}}},\n    {{{   260,   -372,   -130}, 0, {  -356,    508}, {0xb8, 0x4b, 0x48, 0xff}}},\n    {{{   343,   -372,    -47}, 0, {  -346,    488}, {0xb8, 0x4b, 0x48, 0xff}}},\n    {{{   398,   -294,    -73}, 0, {  -428,    458}, {0xb8, 0x4b, 0x48, 0xff}}},\n    {{{   398,   -294,    -73}, 0, {  -428,    458}, {0x45, 0x51, 0xbc, 0xff}}},\n    {{{   301,   -342,   -228}, 0, {  -386,    492}, {0x45, 0x51, 0xbc, 0xff}}},\n    {{{   284,   -294,   -188}, 0, {  -442,    488}, {0x45, 0x51, 0xbc, 0xff}}},\n};\n\n// 0x0700CE70 - 0x0700CF60\nstatic const Vtx bitfs_seg7_vertex_0700CE70[] = {\n    {{{   284,   -294,   -188}, 0, {  -442,    488}, {0x00, 0x51, 0x9f, 0xff}}},\n    {{{   301,   -342,   -228}, 0, {  -386,    492}, {0x00, 0x51, 0x9f, 0xff}}},\n    {{{    94,   -342,   -228}, 0, {  -412,    546}, {0x00, 0x51, 0x9f, 0xff}}},\n    {{{   112,   -294,   -188}, 0, {  -464,    532}, {0x00, 0x51, 0x9f, 0xff}}},\n    {{{    94,   -342,   -228}, 0, {  -412,    546}, {0x00, 0x87, 0xdb, 0xff}}},\n    {{{   260,   -372,   -130}, 0, {  -356,    508}, {0x00, 0x87, 0xdb, 0xff}}},\n    {{{   136,   -372,   -130}, 0, {  -372,    540}, {0x00, 0x87, 0xdb, 0xff}}},\n    {{{   301,   -342,   -228}, 0, {  -386,    492}, {0x00, 0x87, 0xdb, 0xff}}},\n    {{{    94,   -342,    253}, 0, {  -412,    546}, {0xe6, 0x87, 0x1a, 0xff}}},\n    {{{   -42,   -342,    115}, 0, {  -430,    580}, {0xe6, 0x87, 0x1a, 0xff}}},\n    {{{   136,   -372,    158}, 0, {  -372,    540}, {0xe6, 0x87, 0x1a, 0xff}}},\n    {{{    54,   -372,    -47}, 0, {  -382,    562}, {0x48, 0x4b, 0x47, 0xff}}},\n    {{{   136,   -372,   -130}, 0, {  -372,    540}, {0x48, 0x4b, 0x47, 0xff}}},\n    {{{    -2,   -294,    -73}, 0, {  -480,    560}, {0x48, 0x4b, 0x47, 0xff}}},\n    {{{   112,   -294,   -188}, 0, {  -464,    532}, {0x48, 0x4b, 0x47, 0xff}}},\n};\n\n// 0x0700CF60 - 0x0700D060\nstatic const Vtx bitfs_seg7_vertex_0700CF60[] = {\n    {{{   -42,   -342,    -90}, 0, {  -430,    580}, {0xe6, 0x87, 0xe7, 0xff}}},\n    {{{    94,   -342,   -228}, 0, {  -412,    546}, {0xe6, 0x87, 0xe7, 0xff}}},\n    {{{   136,   -372,   -130}, 0, {  -372,    540}, {0xe6, 0x87, 0xe7, 0xff}}},\n    {{{   112,   -294,   -188}, 0, {  -464,    532}, {0xbc, 0x52, 0xbc, 0xff}}},\n    {{{    94,   -342,   -228}, 0, {  -412,    546}, {0xbc, 0x52, 0xbc, 0xff}}},\n    {{{    -2,   -294,    -73}, 0, {  -480,    560}, {0xbc, 0x52, 0xbc, 0xff}}},\n    {{{    -2,   -294,     98}, 0, {  -480,    560}, {0x67, 0x4a, 0x00, 0xff}}},\n    {{{    54,   -372,    -47}, 0, {  -382,    562}, {0x67, 0x4a, 0x00, 0xff}}},\n    {{{    -2,   -294,    -73}, 0, {  -480,    560}, {0x67, 0x4a, 0x00, 0xff}}},\n    {{{   -42,   -342,    115}, 0, {  -430,    580}, {0xdb, 0x87, 0x00, 0xff}}},\n    {{{    54,   -372,    -47}, 0, {  -382,    562}, {0xdb, 0x87, 0x00, 0xff}}},\n    {{{    54,   -372,     75}, 0, {  -382,    562}, {0xdb, 0x87, 0x00, 0xff}}},\n    {{{   -42,   -342,    -90}, 0, {  -430,    580}, {0xdb, 0x87, 0x00, 0xff}}},\n    {{{   -42,   -342,    -90}, 0, {  -430,    580}, {0xe6, 0x87, 0xe6, 0xff}}},\n    {{{   136,   -372,   -130}, 0, {  -372,    540}, {0xe6, 0x87, 0xe6, 0xff}}},\n    {{{    54,   -372,    -47}, 0, {  -382,    562}, {0xe6, 0x87, 0xe6, 0xff}}},\n};\n\n// 0x0700D060 - 0x0700D160\nstatic const Vtx bitfs_seg7_vertex_0700D060[] = {\n    {{{    -2,   -294,     98}, 0, {  -480,    560}, {0x67, 0x4a, 0x00, 0xff}}},\n    {{{    54,   -372,     75}, 0, {  -382,    562}, {0x67, 0x4a, 0x00, 0xff}}},\n    {{{    54,   -372,    -47}, 0, {  -382,    562}, {0x67, 0x4a, 0x00, 0xff}}},\n    {{{    94,   -342,   -228}, 0, {  -412,    546}, {0xbb, 0x51, 0xbc, 0xff}}},\n    {{{   -42,   -342,    -90}, 0, {  -430,    580}, {0xbb, 0x51, 0xbc, 0xff}}},\n    {{{    -2,   -294,    -73}, 0, {  -480,    560}, {0xbb, 0x51, 0xbc, 0xff}}},\n    {{{    -2,   -294,    -73}, 0, {  -480,    560}, {0x9f, 0x51, 0x00, 0xff}}},\n    {{{   -42,   -342,    115}, 0, {  -430,    580}, {0x9f, 0x51, 0x00, 0xff}}},\n    {{{    -2,   -294,     98}, 0, {  -480,    560}, {0x9f, 0x51, 0x00, 0xff}}},\n    {{{   -42,   -342,    -90}, 0, {  -430,    580}, {0x9f, 0x51, 0x00, 0xff}}},\n    {{{   112,   -294,    213}, 0, {  -464,    532}, {0x49, 0x49, 0xb8, 0xff}}},\n    {{{   136,   -372,    158}, 0, {  -372,    540}, {0x49, 0x49, 0xb8, 0xff}}},\n    {{{    -2,   -294,     98}, 0, {  -480,    560}, {0x49, 0x49, 0xb8, 0xff}}},\n    {{{   136,   -372,    158}, 0, {  -372,    540}, {0x49, 0x4a, 0xb8, 0xff}}},\n    {{{    54,   -372,     75}, 0, {  -382,    562}, {0x49, 0x4a, 0xb8, 0xff}}},\n    {{{    -2,   -294,     98}, 0, {  -480,    560}, {0x49, 0x4a, 0xb8, 0xff}}},\n};\n\n// 0x0700D160 - 0x0700D260\nstatic const Vtx bitfs_seg7_vertex_0700D160[] = {\n    {{{   -42,   -342,    115}, 0, {  -430,    580}, {0xbb, 0x51, 0x44, 0xff}}},\n    {{{   112,   -294,    213}, 0, {  -464,    532}, {0xbb, 0x51, 0x44, 0xff}}},\n    {{{    -2,   -294,     98}, 0, {  -480,    560}, {0xbb, 0x51, 0x44, 0xff}}},\n    {{{   -42,   -342,    115}, 0, {  -430,    580}, {0xe6, 0x87, 0x1a, 0xff}}},\n    {{{    54,   -372,     75}, 0, {  -382,    562}, {0xe6, 0x87, 0x1a, 0xff}}},\n    {{{   136,   -372,    158}, 0, {  -372,    540}, {0xe6, 0x87, 0x1a, 0xff}}},\n    {{{   -42,   -342,    115}, 0, {  -430,    580}, {0xbc, 0x52, 0x43, 0xff}}},\n    {{{    94,   -342,    253}, 0, {  -412,    546}, {0xbc, 0x52, 0x43, 0xff}}},\n    {{{   112,   -294,    213}, 0, {  -464,    532}, {0xbc, 0x52, 0x43, 0xff}}},\n    {{{   136,   -372,    158}, 0, {  -372,    540}, {0x00, 0x49, 0x99, 0xff}}},\n    {{{   112,   -294,    213}, 0, {  -464,    532}, {0x00, 0x49, 0x99, 0xff}}},\n    {{{   284,   -294,    213}, 0, {  -442,    488}, {0x00, 0x49, 0x99, 0xff}}},\n    {{{   301,   -342,    253}, 0, {  -386,    492}, {0x00, 0x51, 0x61, 0xff}}},\n    {{{   284,   -294,    213}, 0, {  -442,    488}, {0x00, 0x51, 0x61, 0xff}}},\n    {{{   112,   -294,    213}, 0, {  -464,    532}, {0x00, 0x51, 0x61, 0xff}}},\n    {{{    94,   -342,    253}, 0, {  -412,    546}, {0x00, 0x51, 0x61, 0xff}}},\n};\n\n// 0x0700D260 - 0x0700D360\nstatic const Vtx bitfs_seg7_vertex_0700D260[] = {\n    {{{   136,   -372,    158}, 0, {  -372,    540}, {0x00, 0x49, 0x99, 0xff}}},\n    {{{   284,   -294,    213}, 0, {  -442,    488}, {0x00, 0x49, 0x99, 0xff}}},\n    {{{   260,   -372,    158}, 0, {  -356,    508}, {0x00, 0x49, 0x99, 0xff}}},\n    {{{   260,   -372,    158}, 0, {  -356,    508}, {0xb7, 0x49, 0xb8, 0xff}}},\n    {{{   284,   -294,    213}, 0, {  -442,    488}, {0xb7, 0x49, 0xb8, 0xff}}},\n    {{{   398,   -294,     98}, 0, {  -428,    458}, {0xb7, 0x49, 0xb8, 0xff}}},\n    {{{   438,   -342,    115}, 0, {  -368,    458}, {0x45, 0x51, 0x44, 0xff}}},\n    {{{   398,   -294,     98}, 0, {  -428,    458}, {0x45, 0x51, 0x44, 0xff}}},\n    {{{   284,   -294,    213}, 0, {  -442,    488}, {0x45, 0x51, 0x44, 0xff}}},\n    {{{   301,   -342,    253}, 0, {  -386,    492}, {0x45, 0x51, 0x44, 0xff}}},\n    {{{   260,   -372,    158}, 0, {  -356,    508}, {0xb7, 0x49, 0xb7, 0xff}}},\n    {{{   398,   -294,     98}, 0, {  -428,    458}, {0xb7, 0x49, 0xb7, 0xff}}},\n    {{{   343,   -372,     75}, 0, {  -346,    488}, {0xb7, 0x49, 0xb7, 0xff}}},\n    {{{    94,   -342,    253}, 0, {  -412,    546}, {0x00, 0x87, 0x26, 0xff}}},\n    {{{   136,   -372,    158}, 0, {  -372,    540}, {0x00, 0x87, 0x26, 0xff}}},\n    {{{   260,   -372,    158}, 0, {  -356,    508}, {0x00, 0x87, 0x26, 0xff}}},\n};\n\n// 0x0700D360 - 0x0700D440\nstatic const Vtx bitfs_seg7_vertex_0700D360[] = {\n    {{{    94,   -342,    253}, 0, {  -412,    546}, {0x00, 0x87, 0x26, 0xff}}},\n    {{{   260,   -372,    158}, 0, {  -356,    508}, {0x00, 0x87, 0x26, 0xff}}},\n    {{{   301,   -342,    253}, 0, {  -386,    492}, {0x00, 0x87, 0x26, 0xff}}},\n    {{{   343,   -372,     75}, 0, {  -346,    488}, {0x1a, 0x87, 0x1a, 0xff}}},\n    {{{   301,   -342,    253}, 0, {  -386,    492}, {0x1a, 0x87, 0x1a, 0xff}}},\n    {{{   260,   -372,    158}, 0, {  -356,    508}, {0x1a, 0x87, 0x1a, 0xff}}},\n    {{{   398,   -294,    -73}, 0, {  -428,    458}, {0x99, 0x49, 0x00, 0xff}}},\n    {{{   343,   -372,     75}, 0, {  -346,    488}, {0x99, 0x49, 0x00, 0xff}}},\n    {{{   398,   -294,     98}, 0, {  -428,    458}, {0x99, 0x49, 0x00, 0xff}}},\n    {{{   398,   -294,     98}, 0, {  -428,    458}, {0x61, 0x51, 0x00, 0xff}}},\n    {{{   438,   -342,    -90}, 0, {  -368,    458}, {0x61, 0x51, 0x00, 0xff}}},\n    {{{   398,   -294,    -73}, 0, {  -428,    458}, {0x61, 0x51, 0x00, 0xff}}},\n    {{{   438,   -342,    115}, 0, {  -368,    458}, {0x61, 0x51, 0x00, 0xff}}},\n    {{{   343,   -372,    -47}, 0, {  -346,    488}, {0x99, 0x49, 0x00, 0xff}}},\n};\n\n// 0x0700D440 - 0x0700D520\nstatic const Vtx bitfs_seg7_vertex_0700D440[] = {\n    {{{   343,   -372,     75}, 0, {  -346,    488}, {0x26, 0x87, 0x00, 0xff}}},\n    {{{   438,   -342,    -90}, 0, {  -368,    458}, {0x26, 0x87, 0x00, 0xff}}},\n    {{{   438,   -342,    115}, 0, {  -368,    458}, {0x26, 0x87, 0x00, 0xff}}},\n    {{{   343,   -372,    -47}, 0, {  -346,    488}, {0x26, 0x87, 0x00, 0xff}}},\n    {{{   343,   -372,     75}, 0, {  -346,    488}, {0x1a, 0x87, 0x1a, 0xff}}},\n    {{{   438,   -342,    115}, 0, {  -368,    458}, {0x1a, 0x87, 0x1a, 0xff}}},\n    {{{   301,   -342,    253}, 0, {  -386,    492}, {0x1a, 0x87, 0x1a, 0xff}}},\n    {{{   398,   -294,    -73}, 0, {  -428,    458}, {0x44, 0x51, 0xbc, 0xff}}},\n    {{{   438,   -342,    -90}, 0, {  -368,    458}, {0x44, 0x51, 0xbc, 0xff}}},\n    {{{   301,   -342,   -228}, 0, {  -386,    492}, {0x44, 0x51, 0xbc, 0xff}}},\n    {{{   343,   -372,    -47}, 0, {  -346,    488}, {0x1a, 0x87, 0xe6, 0xff}}},\n    {{{   260,   -372,   -130}, 0, {  -356,    508}, {0x1a, 0x87, 0xe6, 0xff}}},\n    {{{   438,   -342,    -90}, 0, {  -368,    458}, {0x1a, 0x87, 0xe6, 0xff}}},\n    {{{   301,   -342,   -228}, 0, {  -386,    492}, {0x1a, 0x87, 0xe6, 0xff}}},\n};\n\n// 0x0700D520 - 0x0700D620\nstatic const Vtx bitfs_seg7_vertex_0700D520[] = {\n    {{{   357,   -551,     79}, 0, {  -138,    518}, {0x5f, 0x53, 0x00, 0xff}}},\n    {{{   390,   -589,     93}, 0, {   -90,    516}, {0x5f, 0x53, 0x00, 0xff}}},\n    {{{   390,   -589,    -71}, 0, {   -90,    516}, {0x5f, 0x53, 0x00, 0xff}}},\n    {{{   357,   -551,    -57}, 0, {  -138,    518}, {0x5f, 0x53, 0x00, 0xff}}},\n    {{{   357,   -551,    -57}, 0, {  -138,    518}, {0x99, 0x49, 0x00, 0xff}}},\n    {{{   313,   -613,     61}, 0, {   -72,    542}, {0x99, 0x49, 0x00, 0xff}}},\n    {{{   357,   -551,     79}, 0, {  -138,    518}, {0x99, 0x49, 0x00, 0xff}}},\n    {{{   247,   -613,    127}, 0, {   -80,    558}, {0xb7, 0x49, 0xb7, 0xff}}},\n    {{{   357,   -551,     79}, 0, {  -138,    518}, {0xb7, 0x49, 0xb7, 0xff}}},\n    {{{   313,   -613,     61}, 0, {   -72,    542}, {0xb7, 0x49, 0xb7, 0xff}}},\n    {{{   247,   -613,    127}, 0, {   -80,    558}, {0xb7, 0x49, 0xb8, 0xff}}},\n    {{{   266,   -551,    171}, 0, {  -150,    542}, {0xb7, 0x49, 0xb8, 0xff}}},\n    {{{   357,   -551,     79}, 0, {  -138,    518}, {0xb7, 0x49, 0xb8, 0xff}}},\n    {{{   390,   -589,     93}, 0, {   -90,    516}, {0x43, 0x53, 0x43, 0xff}}},\n    {{{   357,   -551,     79}, 0, {  -138,    518}, {0x43, 0x53, 0x43, 0xff}}},\n    {{{   266,   -551,    171}, 0, {  -150,    542}, {0x43, 0x53, 0x43, 0xff}}},\n};\n\n// 0x0700D620 - 0x0700D720\nstatic const Vtx bitfs_seg7_vertex_0700D620[] = {\n    {{{   313,   -613,     61}, 0, {   -72,    542}, {0x1a, 0x87, 0x1a, 0xff}}},\n    {{{   390,   -589,     93}, 0, {   -90,    516}, {0x1a, 0x87, 0x1a, 0xff}}},\n    {{{   279,   -589,    203}, 0, {  -104,    546}, {0x1a, 0x87, 0x1a, 0xff}}},\n    {{{   313,   -613,     61}, 0, {   -72,    542}, {0x25, 0x87, 0x00, 0xff}}},\n    {{{   390,   -589,    -71}, 0, {   -90,    516}, {0x25, 0x87, 0x00, 0xff}}},\n    {{{   390,   -589,     93}, 0, {   -90,    516}, {0x25, 0x87, 0x00, 0xff}}},\n    {{{   279,   -589,    203}, 0, {  -104,    546}, {0x44, 0x51, 0x45, 0xff}}},\n    {{{   390,   -589,     93}, 0, {   -90,    516}, {0x44, 0x51, 0x45, 0xff}}},\n    {{{   266,   -551,    171}, 0, {  -150,    542}, {0x44, 0x51, 0x45, 0xff}}},\n    {{{   357,   -551,    -57}, 0, {  -138,    518}, {0x43, 0x53, 0xbd, 0xff}}},\n    {{{   390,   -589,    -71}, 0, {   -90,    516}, {0x43, 0x53, 0xbd, 0xff}}},\n    {{{   279,   -589,   -181}, 0, {  -104,    546}, {0x43, 0x53, 0xbd, 0xff}}},\n    {{{   313,   -613,    -37}, 0, {   -72,    542}, {0x1a, 0x87, 0xe6, 0xff}}},\n    {{{   247,   -613,   -103}, 0, {   -80,    558}, {0x1a, 0x87, 0xe6, 0xff}}},\n    {{{   390,   -589,    -71}, 0, {   -90,    516}, {0x1a, 0x87, 0xe6, 0xff}}},\n    {{{   279,   -589,   -181}, 0, {  -104,    546}, {0x1a, 0x87, 0xe6, 0xff}}},\n};\n\n// 0x0700D720 - 0x0700D810\nstatic const Vtx bitfs_seg7_vertex_0700D720[] = {\n    {{{   313,   -613,     61}, 0, {   -72,    542}, {0x25, 0x87, 0x00, 0xff}}},\n    {{{   313,   -613,    -37}, 0, {   -72,    542}, {0x25, 0x87, 0x00, 0xff}}},\n    {{{   390,   -589,    -71}, 0, {   -90,    516}, {0x25, 0x87, 0x00, 0xff}}},\n    {{{   357,   -551,    -57}, 0, {  -138,    518}, {0x45, 0x51, 0xbc, 0xff}}},\n    {{{   279,   -589,   -181}, 0, {  -104,    546}, {0x45, 0x51, 0xbc, 0xff}}},\n    {{{   266,   -551,   -149}, 0, {  -150,    542}, {0x45, 0x51, 0xbc, 0xff}}},\n    {{{   266,   -551,   -149}, 0, {  -150,    542}, {0xb8, 0x4a, 0x48, 0xff}}},\n    {{{   313,   -613,    -37}, 0, {   -72,    542}, {0xb8, 0x4a, 0x48, 0xff}}},\n    {{{   357,   -551,    -57}, 0, {  -138,    518}, {0xb8, 0x4a, 0x48, 0xff}}},\n    {{{   357,   -551,    -57}, 0, {  -138,    518}, {0x99, 0x49, 0x00, 0xff}}},\n    {{{   313,   -613,    -37}, 0, {   -72,    542}, {0x99, 0x49, 0x00, 0xff}}},\n    {{{   313,   -613,     61}, 0, {   -72,    542}, {0x99, 0x49, 0x00, 0xff}}},\n    {{{   266,   -551,   -149}, 0, {  -150,    542}, {0x00, 0x51, 0x9f, 0xff}}},\n    {{{   279,   -589,   -181}, 0, {  -104,    546}, {0x00, 0x51, 0x9f, 0xff}}},\n    {{{   114,   -589,   -181}, 0, {  -124,    588}, {0x00, 0x51, 0x9f, 0xff}}},\n};\n\n// 0x0700D810 - 0x0700D910\nstatic const Vtx bitfs_seg7_vertex_0700D810[] = {\n    {{{   114,   -589,   -181}, 0, {  -124,    588}, {0x00, 0x87, 0xdb, 0xff}}},\n    {{{   279,   -589,   -181}, 0, {  -104,    546}, {0x00, 0x87, 0xdb, 0xff}}},\n    {{{   247,   -613,   -103}, 0, {   -80,    558}, {0x00, 0x87, 0xdb, 0xff}}},\n    {{{   266,   -551,   -149}, 0, {  -150,    542}, {0xb8, 0x4b, 0x48, 0xff}}},\n    {{{   247,   -613,   -103}, 0, {   -80,    558}, {0xb8, 0x4b, 0x48, 0xff}}},\n    {{{   313,   -613,    -37}, 0, {   -72,    542}, {0xb8, 0x4b, 0x48, 0xff}}},\n    {{{   313,   -613,     61}, 0, {   -72,    542}, {0x1a, 0x87, 0x1a, 0xff}}},\n    {{{   279,   -589,    203}, 0, {  -104,    546}, {0x1a, 0x87, 0x1a, 0xff}}},\n    {{{   247,   -613,    127}, 0, {   -80,    558}, {0x1a, 0x87, 0x1a, 0xff}}},\n    {{{   266,   -551,   -149}, 0, {  -150,    542}, {0x00, 0x51, 0x9f, 0xff}}},\n    {{{   114,   -589,   -181}, 0, {  -124,    588}, {0x00, 0x51, 0x9f, 0xff}}},\n    {{{   128,   -551,   -149}, 0, {  -166,    576}, {0x00, 0x51, 0x9f, 0xff}}},\n    {{{   266,   -551,   -149}, 0, {  -150,    542}, {0x00, 0x4b, 0x65, 0xff}}},\n    {{{   148,   -613,   -103}, 0, {   -92,    584}, {0x00, 0x4b, 0x65, 0xff}}},\n    {{{   247,   -613,   -103}, 0, {   -80,    558}, {0x00, 0x4b, 0x65, 0xff}}},\n    {{{   128,   -551,   -149}, 0, {  -166,    576}, {0x00, 0x4b, 0x65, 0xff}}},\n};\n\n// 0x0700D910 - 0x0700D9F0\nstatic const Vtx bitfs_seg7_vertex_0700D910[] = {\n    {{{   114,   -589,   -181}, 0, {  -124,    588}, {0xbc, 0x52, 0xbc, 0xff}}},\n    {{{     4,   -589,    -71}, 0, {  -138,    616}, {0xbc, 0x52, 0xbc, 0xff}}},\n    {{{    36,   -551,    -57}, 0, {  -178,    600}, {0xbc, 0x52, 0xbc, 0xff}}},\n    {{{   114,   -589,   -181}, 0, {  -124,    588}, {0x00, 0x87, 0xdb, 0xff}}},\n    {{{   247,   -613,   -103}, 0, {   -80,    558}, {0x00, 0x87, 0xdb, 0xff}}},\n    {{{   148,   -613,   -103}, 0, {   -92,    584}, {0x00, 0x87, 0xdb, 0xff}}},\n    {{{     4,   -589,    -71}, 0, {  -138,    616}, {0xe6, 0x87, 0xe6, 0xff}}},\n    {{{   114,   -589,   -181}, 0, {  -124,    588}, {0xe6, 0x87, 0xe6, 0xff}}},\n    {{{   148,   -613,   -103}, 0, {   -92,    584}, {0xe6, 0x87, 0xe6, 0xff}}},\n    {{{   128,   -551,   -149}, 0, {  -166,    576}, {0xbc, 0x52, 0xbc, 0xff}}},\n    {{{   148,   -613,   -103}, 0, {   -92,    584}, {0x47, 0x4c, 0x47, 0xff}}},\n    {{{   128,   -551,   -149}, 0, {  -166,    576}, {0x47, 0x4c, 0x47, 0xff}}},\n    {{{    36,   -551,    -57}, 0, {  -178,    600}, {0x47, 0x4c, 0x47, 0xff}}},\n    {{{    82,   -613,    -37}, 0, {  -100,    600}, {0xe6, 0x87, 0xe6, 0xff}}},\n};\n\n// 0x0700D9F0 - 0x0700DAF0\nstatic const Vtx bitfs_seg7_vertex_0700D9F0[] = {\n    {{{     4,   -589,     93}, 0, {  -138,    616}, {0xdb, 0x87, 0x00, 0xff}}},\n    {{{     4,   -589,    -71}, 0, {  -138,    616}, {0xdb, 0x87, 0x00, 0xff}}},\n    {{{    82,   -613,    -37}, 0, {  -100,    600}, {0xdb, 0x87, 0x00, 0xff}}},\n    {{{    36,   -551,    -57}, 0, {  -178,    600}, {0x9f, 0x51, 0x00, 0xff}}},\n    {{{     4,   -589,    -71}, 0, {  -138,    616}, {0x9f, 0x51, 0x00, 0xff}}},\n    {{{     4,   -589,     93}, 0, {  -138,    616}, {0x9f, 0x51, 0x00, 0xff}}},\n    {{{    36,   -551,     79}, 0, {  -178,    600}, {0x65, 0x4b, 0x00, 0xff}}},\n    {{{    82,   -613,    -37}, 0, {  -100,    600}, {0x65, 0x4b, 0x00, 0xff}}},\n    {{{    36,   -551,    -57}, 0, {  -178,    600}, {0x65, 0x4b, 0x00, 0xff}}},\n    {{{    82,   -613,    -37}, 0, {  -100,    600}, {0x47, 0x4c, 0x47, 0xff}}},\n    {{{   148,   -613,   -103}, 0, {   -92,    584}, {0x47, 0x4c, 0x47, 0xff}}},\n    {{{    36,   -551,    -57}, 0, {  -178,    600}, {0x47, 0x4c, 0x47, 0xff}}},\n    {{{    36,   -551,     79}, 0, {  -178,    600}, {0x9f, 0x51, 0x00, 0xff}}},\n    {{{     4,   -589,     93}, 0, {  -138,    616}, {0xbc, 0x52, 0x44, 0xff}}},\n    {{{   114,   -589,    203}, 0, {  -124,    588}, {0xbc, 0x52, 0x44, 0xff}}},\n    {{{   128,   -551,    171}, 0, {  -166,    576}, {0xbc, 0x52, 0x44, 0xff}}},\n};\n\n// 0x0700DAF0 - 0x0700DBF0\nstatic const Vtx bitfs_seg7_vertex_0700DAF0[] = {\n    {{{   114,   -589,    203}, 0, {  -124,    588}, {0xe6, 0x87, 0x1a, 0xff}}},\n    {{{     4,   -589,     93}, 0, {  -138,    616}, {0xe6, 0x87, 0x1a, 0xff}}},\n    {{{   148,   -613,    127}, 0, {   -92,    584}, {0xe6, 0x87, 0x1a, 0xff}}},\n    {{{    82,   -613,     61}, 0, {  -100,    600}, {0xe6, 0x87, 0x1a, 0xff}}},\n    {{{     4,   -589,     93}, 0, {  -138,    616}, {0xdb, 0x87, 0x00, 0xff}}},\n    {{{    82,   -613,    -37}, 0, {  -100,    600}, {0xdb, 0x87, 0x00, 0xff}}},\n    {{{    82,   -613,     61}, 0, {  -100,    600}, {0xdb, 0x87, 0x00, 0xff}}},\n    {{{     4,   -589,     93}, 0, {  -138,    616}, {0xbc, 0x52, 0x44, 0xff}}},\n    {{{   128,   -551,    171}, 0, {  -166,    576}, {0xbc, 0x52, 0x44, 0xff}}},\n    {{{    36,   -551,     79}, 0, {  -178,    600}, {0xbc, 0x52, 0x44, 0xff}}},\n    {{{   128,   -551,    171}, 0, {  -166,    576}, {0x48, 0x4a, 0xb8, 0xff}}},\n    {{{   148,   -613,    127}, 0, {   -92,    584}, {0x48, 0x4a, 0xb8, 0xff}}},\n    {{{    36,   -551,     79}, 0, {  -178,    600}, {0x48, 0x4a, 0xb8, 0xff}}},\n    {{{    36,   -551,     79}, 0, {  -178,    600}, {0x65, 0x4b, 0x00, 0xff}}},\n    {{{    82,   -613,     61}, 0, {  -100,    600}, {0x65, 0x4b, 0x00, 0xff}}},\n    {{{    82,   -613,    -37}, 0, {  -100,    600}, {0x65, 0x4b, 0x00, 0xff}}},\n};\n\n// 0x0700DBF0 - 0x0700DCE0\nstatic const Vtx bitfs_seg7_vertex_0700DBF0[] = {\n    {{{   148,   -613,    127}, 0, {   -92,    584}, {0x48, 0x4a, 0xb8, 0xff}}},\n    {{{    82,   -613,     61}, 0, {  -100,    600}, {0x48, 0x4a, 0xb8, 0xff}}},\n    {{{    36,   -551,     79}, 0, {  -178,    600}, {0x48, 0x4a, 0xb8, 0xff}}},\n    {{{   114,   -589,    203}, 0, {  -124,    588}, {0x00, 0x87, 0x26, 0xff}}},\n    {{{   247,   -613,    127}, 0, {   -80,    558}, {0x00, 0x87, 0x26, 0xff}}},\n    {{{   279,   -589,    203}, 0, {  -104,    546}, {0x00, 0x87, 0x26, 0xff}}},\n    {{{   279,   -589,    203}, 0, {  -104,    546}, {0x00, 0x51, 0x61, 0xff}}},\n    {{{   128,   -551,    171}, 0, {  -166,    576}, {0x00, 0x51, 0x61, 0xff}}},\n    {{{   114,   -589,    203}, 0, {  -124,    588}, {0x00, 0x51, 0x61, 0xff}}},\n    {{{   148,   -613,    127}, 0, {   -92,    584}, {0x00, 0x49, 0x99, 0xff}}},\n    {{{   266,   -551,    171}, 0, {  -150,    542}, {0x00, 0x49, 0x99, 0xff}}},\n    {{{   247,   -613,    127}, 0, {   -80,    558}, {0x00, 0x49, 0x99, 0xff}}},\n    {{{   128,   -551,    171}, 0, {  -166,    576}, {0x00, 0x49, 0x99, 0xff}}},\n    {{{   266,   -551,    171}, 0, {  -150,    542}, {0x00, 0x51, 0x61, 0xff}}},\n    {{{   148,   -613,    127}, 0, {   -92,    584}, {0x00, 0x87, 0x26, 0xff}}},\n};\n\n// 0x0700DCE0 - 0x0700DDC0\nstatic const Vtx bitfs_seg7_vertex_0700DCE0[] = {\n    {{{   844,    710,    288}, 0, {   408,    314}, {0x4e, 0x63, 0x00, 0xff}}},\n    {{{   973,    608,    344}, 0, {   346,    270}, {0x4e, 0x63, 0x00, 0xff}}},\n    {{{   973,    608,   -319}, 0, {   346,    270}, {0x4e, 0x63, 0x00, 0xff}}},\n    {{{   531,    608,    786}, 0, {   388,    418}, {0x37, 0x63, 0x37, 0xff}}},\n    {{{   844,    710,    288}, 0, {   408,    314}, {0x37, 0x63, 0x37, 0xff}}},\n    {{{   476,    710,    657}, 0, {   442,    436}, {0x37, 0x63, 0x37, 0xff}}},\n    {{{   531,    608,    786}, 0, {   388,    418}, {0x37, 0x64, 0x37, 0xff}}},\n    {{{   973,    608,    344}, 0, {   346,    270}, {0x37, 0x64, 0x37, 0xff}}},\n    {{{   844,    710,    288}, 0, {   408,    314}, {0x37, 0x64, 0x37, 0xff}}},\n    {{{   844,    710,   -264}, 0, {   408,    314}, {0x4e, 0x63, 0x00, 0xff}}},\n    {{{   285,    224,    218}, 0, {   230,    500}, {0xbe, 0x55, 0xbe, 0xff}}},\n    {{{   844,    710,    288}, 0, {   408,    314}, {0xbe, 0x55, 0xbe, 0xff}}},\n    {{{   403,    224,    100}, 0, {   218,    460}, {0xbe, 0x55, 0xbe, 0xff}}},\n    {{{   476,    710,    657}, 0, {   442,    436}, {0xbe, 0x55, 0xbe, 0xff}}},\n};\n\n// 0x0700DDC0 - 0x0700DEA0\nstatic const Vtx bitfs_seg7_vertex_0700DDC0[] = {\n    {{{   844,    710,   -264}, 0, {   408,    314}, {0xa2, 0x55, 0x00, 0xff}}},\n    {{{   403,    224,    100}, 0, {   218,    460}, {0xa2, 0x55, 0x00, 0xff}}},\n    {{{   844,    710,    288}, 0, {   408,    314}, {0xa2, 0x55, 0x00, 0xff}}},\n    {{{   403,    224,    100}, 0, {   218,    460}, {0x31, 0x97, 0x31, 0xff}}},\n    {{{   973,    608,    344}, 0, {   346,    270}, {0x31, 0x97, 0x31, 0xff}}},\n    {{{   285,    224,    218}, 0, {   230,    500}, {0x31, 0x97, 0x31, 0xff}}},\n    {{{   531,    608,    786}, 0, {   388,    418}, {0x31, 0x97, 0x31, 0xff}}},\n    {{{   403,    224,    100}, 0, {   218,    460}, {0x46, 0x97, 0x00, 0xff}}},\n    {{{   973,    608,   -319}, 0, {   346,    270}, {0x46, 0x97, 0x00, 0xff}}},\n    {{{   973,    608,    344}, 0, {   346,    270}, {0x46, 0x97, 0x00, 0xff}}},\n    {{{   403,    224,    -76}, 0, {   218,    460}, {0x46, 0x97, 0x00, 0xff}}},\n    {{{   403,    224,    -76}, 0, {   218,    460}, {0x31, 0x97, 0xcf, 0xff}}},\n    {{{   531,    608,   -761}, 0, {   388,    418}, {0x31, 0x97, 0xcf, 0xff}}},\n    {{{   973,    608,   -319}, 0, {   346,    270}, {0x31, 0x97, 0xcf, 0xff}}},\n};\n\n// 0x0700DEA0 - 0x0700DFA0\nstatic const Vtx bitfs_seg7_vertex_0700DEA0[] = {\n    {{{   844,    710,   -264}, 0, {   408,    314}, {0x37, 0x63, 0xc9, 0xff}}},\n    {{{   973,    608,   -319}, 0, {   346,    270}, {0x37, 0x63, 0xc9, 0xff}}},\n    {{{   531,    608,   -761}, 0, {   388,    418}, {0x37, 0x63, 0xc9, 0xff}}},\n    {{{   476,    710,   -632}, 0, {   442,    436}, {0x37, 0x63, 0xc9, 0xff}}},\n    {{{   844,    710,   -264}, 0, {   408,    314}, {0xa2, 0x55, 0x00, 0xff}}},\n    {{{   403,    224,    -76}, 0, {   218,    460}, {0xa2, 0x55, 0x00, 0xff}}},\n    {{{   403,    224,    100}, 0, {   218,    460}, {0xa2, 0x55, 0x00, 0xff}}},\n    {{{   476,    710,   -632}, 0, {   442,    436}, {0xbe, 0x55, 0x42, 0xff}}},\n    {{{   403,    224,    -76}, 0, {   218,    460}, {0xbe, 0x55, 0x42, 0xff}}},\n    {{{   844,    710,   -264}, 0, {   408,    314}, {0xbe, 0x55, 0x42, 0xff}}},\n    {{{   403,    224,    -76}, 0, {   218,    460}, {0x31, 0x97, 0xcf, 0xff}}},\n    {{{   285,    224,   -194}, 0, {   230,    500}, {0x31, 0x97, 0xcf, 0xff}}},\n    {{{   531,    608,   -761}, 0, {   388,    418}, {0x31, 0x97, 0xcf, 0xff}}},\n    {{{   476,    710,   -632}, 0, {   442,    436}, {0x00, 0x63, 0xb2, 0xff}}},\n    {{{   531,    608,   -761}, 0, {   388,    418}, {0x00, 0x63, 0xb2, 0xff}}},\n    {{{  -131,    608,   -761}, 0, {   452,    638}, {0x00, 0x63, 0xb2, 0xff}}},\n};\n\n// 0x0700DFA0 - 0x0700E0A0\nstatic const Vtx bitfs_seg7_vertex_0700DFA0[] = {\n    {{{  -131,    608,   -761}, 0, {   452,    638}, {0x00, 0x97, 0xb9, 0xff}}},\n    {{{   531,    608,   -761}, 0, {   388,    418}, {0x00, 0x97, 0xb9, 0xff}}},\n    {{{   285,    224,   -194}, 0, {   230,    500}, {0x00, 0x97, 0xb9, 0xff}}},\n    {{{   476,    710,   -632}, 0, {   442,    436}, {0xbe, 0x55, 0x42, 0xff}}},\n    {{{   285,    224,   -194}, 0, {   230,    500}, {0xbe, 0x55, 0x42, 0xff}}},\n    {{{   403,    224,    -76}, 0, {   218,    460}, {0xbe, 0x55, 0x42, 0xff}}},\n    {{{   476,    710,   -632}, 0, {   442,    436}, {0x00, 0x63, 0xb2, 0xff}}},\n    {{{  -131,    608,   -761}, 0, {   452,    638}, {0x00, 0x63, 0xb2, 0xff}}},\n    {{{   -76,    710,   -632}, 0, {   494,    620}, {0x00, 0x63, 0xb2, 0xff}}},\n    {{{   476,    710,   -632}, 0, {   442,    436}, {0x00, 0x55, 0x5e, 0xff}}},\n    {{{   109,    224,   -194}, 0, {   246,    558}, {0x00, 0x55, 0x5e, 0xff}}},\n    {{{   285,    224,   -194}, 0, {   230,    500}, {0x00, 0x55, 0x5e, 0xff}}},\n    {{{   -76,    710,   -632}, 0, {   494,    620}, {0x00, 0x55, 0x5e, 0xff}}},\n    {{{  -131,    608,   -761}, 0, {   452,    638}, {0xce, 0x97, 0xcf, 0xff}}},\n    {{{   109,    224,   -194}, 0, {   246,    558}, {0xce, 0x97, 0xcf, 0xff}}},\n    {{{    -8,    224,    -76}, 0, {   258,    598}, {0xce, 0x97, 0xcf, 0xff}}},\n};\n\n// 0x0700E0A0 - 0x0700E180\nstatic const Vtx bitfs_seg7_vertex_0700E0A0[] = {\n    {{{  -131,    608,   -761}, 0, {   452,    638}, {0x00, 0x97, 0xb9, 0xff}}},\n    {{{   285,    224,   -194}, 0, {   230,    500}, {0x00, 0x97, 0xb9, 0xff}}},\n    {{{   109,    224,   -194}, 0, {   246,    558}, {0x00, 0x97, 0xb9, 0xff}}},\n    {{{   -76,    710,   -632}, 0, {   494,    620}, {0xc9, 0x63, 0xc9, 0xff}}},\n    {{{  -131,    608,   -761}, 0, {   452,    638}, {0xc9, 0x63, 0xc9, 0xff}}},\n    {{{  -574,    608,   -319}, 0, {   494,    786}, {0xc9, 0x63, 0xc9, 0xff}}},\n    {{{  -574,    608,   -319}, 0, {   494,    786}, {0xce, 0x97, 0xce, 0xff}}},\n    {{{  -131,    608,   -761}, 0, {   452,    638}, {0xce, 0x97, 0xce, 0xff}}},\n    {{{    -8,    224,    -76}, 0, {   258,    598}, {0xce, 0x97, 0xce, 0xff}}},\n    {{{  -445,    710,   -264}, 0, {   530,    742}, {0xc9, 0x63, 0xc9, 0xff}}},\n    {{{    -8,    224,    -76}, 0, {   258,    598}, {0x42, 0x55, 0x42, 0xff}}},\n    {{{   -76,    710,   -632}, 0, {   494,    620}, {0x42, 0x55, 0x42, 0xff}}},\n    {{{  -445,    710,   -264}, 0, {   530,    742}, {0x42, 0x55, 0x42, 0xff}}},\n    {{{   109,    224,   -194}, 0, {   246,    558}, {0x42, 0x55, 0x42, 0xff}}},\n};\n\n// 0x0700E180 - 0x0700E260\nstatic const Vtx bitfs_seg7_vertex_0700E180[] = {\n    {{{  -445,    710,   -264}, 0, {   530,    742}, {0xb2, 0x63, 0x00, 0xff}}},\n    {{{  -574,    608,   -319}, 0, {   494,    786}, {0xb2, 0x63, 0x00, 0xff}}},\n    {{{  -574,    608,    344}, 0, {   494,    786}, {0xb2, 0x63, 0x00, 0xff}}},\n    {{{  -574,    608,    344}, 0, {   494,    786}, {0xb9, 0x97, 0x00, 0xff}}},\n    {{{  -574,    608,   -319}, 0, {   494,    786}, {0xb9, 0x97, 0x00, 0xff}}},\n    {{{    -8,    224,    -76}, 0, {   258,    598}, {0xb9, 0x97, 0x00, 0xff}}},\n    {{{  -445,    710,    288}, 0, {   530,    742}, {0xb2, 0x63, 0x00, 0xff}}},\n    {{{  -445,    710,    288}, 0, {   530,    742}, {0x5e, 0x54, 0x00, 0xff}}},\n    {{{    -8,    224,    -76}, 0, {   258,    598}, {0x5e, 0x54, 0x00, 0xff}}},\n    {{{  -445,    710,   -264}, 0, {   530,    742}, {0x5e, 0x54, 0x00, 0xff}}},\n    {{{  -131,    608,    786}, 0, {   452,    638}, {0xcf, 0x97, 0x32, 0xff}}},\n    {{{  -574,    608,    344}, 0, {   494,    786}, {0xcf, 0x97, 0x32, 0xff}}},\n    {{{    -8,    224,    100}, 0, {   258,    598}, {0xcf, 0x97, 0x32, 0xff}}},\n    {{{    -8,    224,    100}, 0, {   258,    598}, {0xb9, 0x97, 0x00, 0xff}}},\n};\n\n// 0x0700E260 - 0x0700E350\nstatic const Vtx bitfs_seg7_vertex_0700E260[] = {\n    {{{  -574,    608,    344}, 0, {   494,    786}, {0xc9, 0x63, 0x37, 0xff}}},\n    {{{  -131,    608,    786}, 0, {   452,    638}, {0xc9, 0x63, 0x37, 0xff}}},\n    {{{   -76,    710,    657}, 0, {   494,    620}, {0xc9, 0x63, 0x37, 0xff}}},\n    {{{  -574,    608,    344}, 0, {   494,    786}, {0xc9, 0x64, 0x37, 0xff}}},\n    {{{   -76,    710,    657}, 0, {   494,    620}, {0xc9, 0x64, 0x37, 0xff}}},\n    {{{  -445,    710,    288}, 0, {   530,    742}, {0xc9, 0x64, 0x37, 0xff}}},\n    {{{   -76,    710,    657}, 0, {   494,    620}, {0x42, 0x55, 0xbe, 0xff}}},\n    {{{    -8,    224,    100}, 0, {   258,    598}, {0x42, 0x55, 0xbe, 0xff}}},\n    {{{  -445,    710,    288}, 0, {   530,    742}, {0x42, 0x55, 0xbe, 0xff}}},\n    {{{  -445,    710,    288}, 0, {   530,    742}, {0x5e, 0x54, 0x00, 0xff}}},\n    {{{    -8,    224,    100}, 0, {   258,    598}, {0x5e, 0x54, 0x00, 0xff}}},\n    {{{    -8,    224,    -76}, 0, {   258,    598}, {0x5e, 0x54, 0x00, 0xff}}},\n    {{{  -131,    608,    786}, 0, {   452,    638}, {0x00, 0x97, 0x47, 0xff}}},\n    {{{   285,    224,    218}, 0, {   230,    500}, {0x00, 0x97, 0x47, 0xff}}},\n    {{{   531,    608,    786}, 0, {   388,    418}, {0x00, 0x97, 0x47, 0xff}}},\n};\n\n// 0x0700E350 - 0x0700E430\nstatic const Vtx bitfs_seg7_vertex_0700E350[] = {\n    {{{   531,    608,    786}, 0, {   388,    418}, {0x00, 0x63, 0x4e, 0xff}}},\n    {{{   -76,    710,    657}, 0, {   494,    620}, {0x00, 0x63, 0x4e, 0xff}}},\n    {{{  -131,    608,    786}, 0, {   452,    638}, {0x00, 0x63, 0x4e, 0xff}}},\n    {{{   476,    710,    657}, 0, {   442,    436}, {0x00, 0x63, 0x4e, 0xff}}},\n    {{{   109,    224,    218}, 0, {   246,    558}, {0x00, 0x55, 0xa2, 0xff}}},\n    {{{   476,    710,    657}, 0, {   442,    436}, {0x00, 0x55, 0xa2, 0xff}}},\n    {{{   285,    224,    218}, 0, {   230,    500}, {0x00, 0x55, 0xa2, 0xff}}},\n    {{{   -76,    710,    657}, 0, {   494,    620}, {0x00, 0x55, 0xa2, 0xff}}},\n    {{{   -76,    710,    657}, 0, {   494,    620}, {0x42, 0x55, 0xbe, 0xff}}},\n    {{{   109,    224,    218}, 0, {   246,    558}, {0x42, 0x55, 0xbe, 0xff}}},\n    {{{    -8,    224,    100}, 0, {   258,    598}, {0x42, 0x55, 0xbe, 0xff}}},\n    {{{  -131,    608,    786}, 0, {   452,    638}, {0x00, 0x97, 0x47, 0xff}}},\n    {{{   109,    224,    218}, 0, {   246,    558}, {0x00, 0x97, 0x47, 0xff}}},\n    {{{   285,    224,    218}, 0, {   230,    500}, {0x00, 0x97, 0x47, 0xff}}},\n};\n\n// 0x0700E430 - 0x0700E460\nstatic const Vtx bitfs_seg7_vertex_0700E430[] = {\n    {{{  -131,    608,    786}, 0, {   452,    638}, {0xce, 0x97, 0x31, 0xff}}},\n    {{{    -8,    224,    100}, 0, {   258,    598}, {0xce, 0x97, 0x31, 0xff}}},\n    {{{   109,    224,    218}, 0, {   246,    558}, {0xce, 0x97, 0x31, 0xff}}},\n};\n\n// 0x0700E460 - 0x0700E530\nstatic const Gfx bitfs_seg7_dl_0700E460[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bitfs_seg7_lights_0700C430.l, 1),\n    gsSPLight(&bitfs_seg7_lights_0700C430.a, 2),\n    gsSPVertex(bitfs_seg7_vertex_0700C4C0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPLight(&bitfs_seg7_lights_0700C448.l, 1),\n    gsSPLight(&bitfs_seg7_lights_0700C448.a, 2),\n    gsSPVertex(bitfs_seg7_vertex_0700C540, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPLight(&bitfs_seg7_lights_0700C460.l, 1),\n    gsSPLight(&bitfs_seg7_lights_0700C460.a, 2),\n    gsSPVertex(bitfs_seg7_vertex_0700C580, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPLight(&bitfs_seg7_lights_0700C478.l, 1),\n    gsSPLight(&bitfs_seg7_lights_0700C478.a, 2),\n    gsSPVertex(bitfs_seg7_vertex_0700C5C0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700E530 - 0x0700EC78\nstatic const Gfx bitfs_seg7_dl_0700E530[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bitfs_seg7_lights_0700C490.l, 1),\n    gsSPLight(&bitfs_seg7_lights_0700C490.a, 2),\n    gsSPVertex(bitfs_seg7_vertex_0700C600, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700C700, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700C7E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700C8E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700C9E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700CAE0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700CBD0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700CCB0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  3,  7,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700CD90, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700CE70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700CF60, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700D060, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700D160, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700D260, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700D360, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0,  6, 13,  7, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700D440, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700D520, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700D620, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700D720, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700D810, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700D910, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  0,  2, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  6,  8, 13, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700D9F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 3,  5, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700DAF0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700DBF0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0,  6, 13,  7, 0x0),\n    gsSP1Triangle( 3, 14,  4, 0x0),\n    gsSPLight(&bitfs_seg7_lights_0700C4A8.l, 1),\n    gsSPLight(&bitfs_seg7_lights_0700C4A8.a, 2),\n    gsSPVertex(bitfs_seg7_vertex_0700DCE0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  0,  2,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700DDC0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700DEA0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700DFA0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700E0A0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  3,  5,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700E180, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  2,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  3,  5, 13, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700E260, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700E350, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700E430, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700EC78 - 0x0700ECF0\nconst Gfx bitfs_seg7_dl_0700EC78[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_0700E460),\n    gsSPDisplayList(bitfs_seg7_dl_0700E530),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/19/geo.inc.c",
    "content": "// 0x0E000648\nconst GeoLayout bitfs_geo_000648[] = {\n    GEO_CULLING_RADIUS(600),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bitfs_seg7_dl_0700ED90),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/19/model.inc.c",
    "content": "// 0x0700ECF0 - 0x0700ED50\nstatic const Vtx bitfs_seg7_vertex_0700ECF0[] = {\n    {{{     0,      0,   -306}, 0, {   334,    528}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{  -278,      0,    283}, 0, {   362,    620}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{    -7,      0,    135}, 0, {   336,    530}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{   262,      0,    283}, 0, {   310,    440}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{   326,      0,   -118}, 0, {   304,    420}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{  -330,      0,   -118}, 0, {   366,    638}, {0xff, 0xff, 0x00, 0xff}}},\n};\n\n// 0x0700ED50 - 0x0700ED90\nstatic const Gfx bitfs_seg7_dl_0700ED50[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_0700ECF0, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP1Triangle( 2,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700ED90 - 0x0700EE10\nconst Gfx bitfs_seg7_dl_0700ED90[] = {\n    gsDPPipeSync(),\n    gsDPSetEnvColor(255, 255, 255, 100),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_0700ED50),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/2/geo.inc.c",
    "content": "// 0x0E0004B0\nconst GeoLayout bitfs_geo_0004B0[] = {\n    GEO_CULLING_RADIUS(2700),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitfs_seg7_dl_07002A78),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/2/model.inc.c",
    "content": "// 0x07002188 - 0x07002288\nstatic const Vtx bitfs_seg7_vertex_07002188[] = {\n    {{{  -101,    205,   -306}, 0, {  1672,  -1054}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -613,    205,    307}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -101,    205,    307}, 0, {  1672,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -613,    205,   -306}, 0, {     0,  -1054}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1125,    307,    307}, 0, {  -746,    990}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -613,    205,   -306}, 0, {   990,  -1054}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{ -1125,    307,   -306}, 0, {  -746,  -1054}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -613,    205,    307}, 0, {   990,    990}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  1485,    328,   -306}, 0, {   990,   2010}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  1485,    328,    307}, 0, {     0,    990}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  1792,    328,    307}, 0, {   308,    650}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  1792,    328,   -306}, 0, {  1330,   1670}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  1792,    328,   -306}, 0, {  2064,   1958}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1792,    328,    307}, 0, {   530,    428}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1792,    102,    307}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1792,    102,   -306}, 0, {  1500,   2520}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x07002288 - 0x07002308\nstatic const Vtx bitfs_seg7_vertex_07002288[] = {\n    {{{  1485,    102,   -306}, 0, {  1500,   2520}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1485,    102,    307}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1485,    328,    307}, 0, {   530,    428}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1485,    328,   -306}, 0, {  2064,   1958}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1792,    328,    307}, 0, {  1042,    938}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1485,    102,    307}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1792,    102,    307}, 0, {   480,   1500}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1485,    328,    307}, 0, {   530,    428}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x07002308 - 0x07002408\nstatic const Vtx bitfs_seg7_vertex_07002308[] = {\n    {{{  1485,    410,   -306}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1792,    410,   -613}, 0, {   820,   1158}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1485,    410,   -613}, 0, {   478,   1500}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1792,    410,   -306}, 0, {   308,    650}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1125,    307,   -511}, 0, {  3120,   1074}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{ -2047,    307,    512}, 0, {  -116,    904}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{ -1125,    307,    512}, 0, {  1416,   -628}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{ -2047,    307,   -511}, 0, {  1586,   2606}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{  1485,    410,   -613}, 0, {  -542,    480}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1331,      0,   -306}, 0, {   650,    308}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1485,    410,   -306}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1331,      0,   -613}, 0, {   138,   -202}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1946,      0,   -613}, 0, {   138,   -202}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1792,    410,   -613}, 0, {  -542,    480}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1792,    410,   -306}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1946,      0,   -306}, 0, {   650,    308}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x07002408 - 0x07002488\nstatic const Vtx bitfs_seg7_vertex_07002408[] = {\n    {{{  1485,    410,   -613}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1946,      0,   -613}, 0, {  1246,   1074}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1331,      0,   -613}, 0, {   394,   1924}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1792,    410,   -613}, 0, {   308,    650}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1792,    410,   -306}, 0, {   308,    650}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1485,    410,   -306}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1331,      0,   -306}, 0, {   394,   1924}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1946,      0,   -306}, 0, {  1246,   1074}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x07002488 - 0x07002588\nstatic const Vtx bitfs_seg7_vertex_07002488[] = {\n    {{{ -2047,    307,    512}, 0, {   990,      0}, {0x67, 0x76, 0x64, 0xff}}},\n    {{{ -2047,    307,   -511}, 0, { -2414,      0}, {0x67, 0x76, 0x64, 0xff}}},\n    {{{ -2047,      0,   -511}, 0, { -2414,    990}, {0x67, 0x76, 0x64, 0xff}}},\n    {{{ -2047,      0,    512}, 0, {   990,    990}, {0x67, 0x76, 0x64, 0xff}}},\n    {{{ -1125,    307,    512}, 0, {     0,      0}, {0x67, 0x76, 0x64, 0xff}}},\n    {{{ -1125,      0,   -511}, 0, {  3374,    990}, {0x67, 0x76, 0x64, 0xff}}},\n    {{{ -1125,    307,   -511}, 0, {  3374,      0}, {0x67, 0x76, 0x64, 0xff}}},\n    {{{ -1125,      0,    512}, 0, {     0,    990}, {0x67, 0x76, 0x64, 0xff}}},\n    {{{ -2047,      0,    512}, 0, {     0,    990}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{ -1125,    307,    512}, 0, {  3034,      0}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{ -2047,    307,    512}, 0, {     0,      0}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{ -1125,      0,    512}, 0, {  3034,    990}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{ -1125,      0,   -511}, 0, {     0,    990}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{ -2047,    307,   -511}, 0, {  3034,      0}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{ -1125,    307,   -511}, 0, {     0,      0}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{ -2047,      0,   -511}, 0, {  3034,    990}, {0x88, 0x98, 0x84, 0xff}}},\n};\n\n// 0x07002588 - 0x07002688\nstatic const Vtx bitfs_seg7_vertex_07002588[] = {\n    {{{  -101,      0,   -306}, 0, {  2012,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -101,    205,    307}, 0, {     0,    308}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -101,      0,    307}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -101,    205,   -306}, 0, {  2012,    308}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -613,    205,   -306}, 0, {  1672,    308}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -101,      0,   -306}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1125,      0,   -306}, 0, {  3374,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1125,    205,   -306}, 0, {  3374,    308}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1125,    307,   -306}, 0, {  3374,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -101,    205,   -306}, 0, {     0,    308}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -613,    205,    307}, 0, {  -712,    308}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1125,    307,    307}, 0, { -2414,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1125,    205,    307}, 0, { -2414,    308}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1125,      0,    322}, 0, { -2414,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -101,      0,    307}, 0, {   990,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -101,    205,    307}, 0, {   990,    308}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x07002688 - 0x07002788\nstatic const Vtx bitfs_seg7_vertex_07002688[] = {\n    {{{  -101,     51,      0}, 0, {-11920,   5562}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{   922,     51,      0}, 0, { -5106,   3006}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  -101,      0,    -50}, 0, {-12430,   5690}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{   870,      0,    -50}, 0, { -5958,   3262}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  1157,   -163,    -50}, 0, { -4050,   2546}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  1208,   -112,      0}, 0, { -3198,   2290}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  1823,   -112,      0}, 0, {   888,    760}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  1874,   -163,    -50}, 0, {   718,    760}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  2130,     41,     10}, 0, {  3034,      0}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  2181,     -9,    -40}, 0, {  2864,      0}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  -101,      0,     51}, 0, {-11408,   5434}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{   870,      0,     51}, 0, { -4936,   3006}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  -101,     51,      0}, 0, {-11920,   5562}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  1208,   -112,      0}, 0, { -3198,   2290}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{   922,     51,      0}, 0, { -5106,   3006}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  1157,   -163,     51}, 0, { -3028,   2290}, {0x52, 0x61, 0xac, 0xff}}},\n};\n\n// 0x07002788 - 0x070027E8\nstatic const Vtx bitfs_seg7_vertex_07002788[] = {\n    {{{  1157,   -163,     51}, 0, { -3028,   2290}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  1874,   -163,     51}, 0, {  1740,    504}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  1208,   -112,      0}, 0, { -3198,   2290}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  1823,   -112,      0}, 0, {   888,    760}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  2181,     -9,     61}, 0, {  3886,   -288}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  2130,     41,     10}, 0, {  3034,      0}, {0x52, 0x61, 0xac, 0xff}}},\n};\n\n// 0x070027E8 - 0x07002878\nstatic const Gfx bitfs_seg7_dl_070027E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_07002188, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07002288, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07002878 - 0x07002908\nstatic const Gfx bitfs_seg7_dl_07002878[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_07002308, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07002408, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07002908 - 0x070029C8\nstatic const Gfx bitfs_seg7_dl_07002908[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bitfs_seg7_texture_07001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_07002488, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07002588, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 4,  7,  8, 0x0,  9,  5,  4, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 14, 0x0),\n    gsSP2Triangles(13, 10, 12, 0x0, 14, 15, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070029C8 - 0x07002A78\nstatic const Gfx bitfs_seg7_dl_070029C8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_07002688, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  1,  5,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  7,  4, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 14, 0x0),\n    gsSP2Triangles(11, 15, 13, 0x0, 11, 14, 12, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07002788, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  1,  5,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07002A78 - 0x07002B30\nconst Gfx bitfs_seg7_dl_07002A78[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_070027E8),\n    gsSPDisplayList(bitfs_seg7_dl_07002878),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_07002908),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_070029C8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/20/geo.inc.c",
    "content": "// 0x0E000660\nconst GeoLayout bitfs_geo_000660[] = {\n    GEO_CULLING_RADIUS(4100),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitfs_seg7_dl_0700F1C8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/20/model.inc.c",
    "content": "// 0x0700EE10 - 0x0700EF10\nstatic const Vtx bitfs_seg7_vertex_0700EE10[] = {\n    {{{  2611,      0,  -1163}, 0, {    60,   -548}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{     5,      0,     -5}, 0, {  4790,    222}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -2559,      0,  -1163}, 0, {  9444,   -514}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -2559,      0,   1147}, 0, {  9444,    990}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  2611,      0,   1147}, 0, {    60,    990}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -2559,    256,  -1112}, 0, { 10290,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2586,    256,  -1137}, 0, { 20562,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2559,    256,  -1163}, 0, { 10290,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2586,    256,   1121}, 0, { 20562,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2559,    256,   1096}, 0, { 10290,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2611,    256,   1147}, 0, { 20612,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2559,    256,   1147}, 0, { 10290,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2611,    256,  -1163}, 0, {  4938,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2586,    256,  -1137}, 0, {  4886,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2611,    256,   1147}, 0, {   326,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2586,    256,   1121}, 0, {   376,    478}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700EF10 - 0x0700EFF0\nstatic const Vtx bitfs_seg7_vertex_0700EF10[] = {\n    {{{  2586,    256,  -1137}, 0, { 20562,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2611,    256,  -1163}, 0, { 20612,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2559,    256,  -1163}, 0, { 10290,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2611,      0,  -1163}, 0, {  4938,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2611,    256,  -1163}, 0, {  4938,    478}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2611,      0,   1147}, 0, {   326,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2611,    256,   1147}, 0, {   326,    478}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2586,    256,  -1137}, 0, {  4886,    478}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2534,    205,  -1086}, 0, {  4784,    582}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2586,    256,   1121}, 0, {   376,    478}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2534,    205,   1070}, 0, {   480,    582}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2611,      0,  -1163}, 0, { 20612,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -2559,    256,  -1163}, 0, { 10290,    478}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2611,    256,  -1163}, 0, { 20612,    478}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x0700EFF0 - 0x0700F0E0\nstatic const Vtx bitfs_seg7_vertex_0700EFF0[] = {\n    {{{  2534,    205,   1070}, 0, { 20460,    582}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -2559,    205,   1044}, 0, { 10290,    582}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2586,    256,   1121}, 0, { 20562,    478}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -2559,    256,   1096}, 0, { 10290,    478}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2611,    256,   1147}, 0, { 20612,    478}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -2559,    256,   1147}, 0, { 10290,    478}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2611,      0,   1147}, 0, { 20612,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -2559,      0,   1147}, 0, { 10290,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2586,    256,  -1137}, 0, { 20562,    478}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -2559,    256,  -1112}, 0, { 10290,    478}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2534,    205,  -1086}, 0, { 20460,    582}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -2559,    205,  -1060}, 0, { 10290,    582}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2611,      0,  -1163}, 0, { 20612,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -2559,      0,  -1163}, 0, { 10290,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -2559,    256,  -1163}, 0, { 10290,    478}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x0700F0E0 - 0x0700F1C8\nstatic const Gfx bitfs_seg7_dl_0700F0E0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_0700EE10, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  1,  0, 0x0,  4,  3,  1, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 9, 11, 10, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(13, 15, 14, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700EF10, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700EFF0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700F1C8 - 0x0700F238\nconst Gfx bitfs_seg7_dl_0700F1C8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_0700F0E0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/3/geo.inc.c",
    "content": "// 0x0E0004C8\nconst GeoLayout bitfs_geo_0004C8[] = {\n    GEO_CULLING_RADIUS(2100),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitfs_seg7_dl_07003670),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/3/model.inc.c",
    "content": "// 0x07002B30 - 0x07002C30\nstatic const Vtx bitfs_seg7_vertex_07002B30[] = {\n    {{{    61,  -1535,    492}, 0, {   240,    990}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{    61,  -1228,    573}, 0, {     0,      0}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{    61,  -1535,    573}, 0, {     0,    990}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{    61,  -1535,   -654}, 0, {   240,    990}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{    61,  -1228,   -572}, 0, {     0,      0}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{    61,  -1535,   -572}, 0, {     0,    990}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{    61,  -1228,   -654}, 0, {   240,      0}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  -142,  -1535,   -572}, 0, {   240,    990}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  -142,  -1228,   -654}, 0, {     0,      0}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  -142,  -1535,   -654}, 0, {     0,    990}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  -142,  -1228,   -572}, 0, {   240,      0}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  -142,  -1535,    573}, 0, {   240,    990}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  -142,  -1228,    492}, 0, {     0,      0}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  -142,  -1535,    492}, 0, {     0,    990}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  -142,  -1228,    573}, 0, {   240,      0}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{    61,  -1228,    492}, 0, {   240,      0}, {0x72, 0x67, 0x34, 0xff}}},\n};\n\n// 0x07002C30 - 0x07002D20\nstatic const Vtx bitfs_seg7_vertex_07002C30[] = {\n    {{{   -81,  -1535,   -511}, 0, {     0,    990}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{   -81,  -1228,   -511}, 0, {     0,      0}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{  -142,  -1228,   -572}, 0, {  -234,      0}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{    61,  -1535,   -572}, 0, {   444,    990}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{    61,  -1228,   -572}, 0, {   444,      0}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{     0,  -1228,   -511}, 0, {   240,      0}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{     0,  -1535,   -511}, 0, {   240,    990}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{     0,  -1535,   -716}, 0, {   240,    990}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{     0,  -1228,   -716}, 0, {   240,      0}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{    61,  -1228,   -654}, 0, {   444,      0}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{    61,  -1535,   -654}, 0, {   444,    990}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{  -142,  -1535,   -654}, 0, {     0,    990}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{   -81,  -1228,   -716}, 0, {   258,      0}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{   -81,  -1535,   -716}, 0, {   258,    990}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{  -142,  -1228,   -654}, 0, {     0,      0}, {0x8a, 0x7d, 0x4c, 0xff}}},\n};\n\n// 0x07002D20 - 0x07002E10\nstatic const Vtx bitfs_seg7_vertex_07002D20[] = {\n    {{{     0,  -1535,    430}, 0, {   240,    990}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{     0,  -1228,    430}, 0, {   240,      0}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{    61,  -1228,    492}, 0, {   444,      0}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{   -81,  -1535,   -511}, 0, {     0,    990}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{  -142,  -1228,   -572}, 0, {  -234,      0}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{  -142,  -1535,   -572}, 0, {  -234,    990}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{   -81,  -1535,    635}, 0, {     0,    990}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{   -81,  -1228,    635}, 0, {     0,      0}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{  -142,  -1228,    573}, 0, {  -234,      0}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{  -142,  -1535,    573}, 0, {  -234,    990}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{  -142,  -1535,    492}, 0, {     0,    990}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{   -81,  -1228,    430}, 0, {   258,      0}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{   -81,  -1535,    430}, 0, {   258,    990}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{  -142,  -1228,    492}, 0, {     0,      0}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{    61,  -1535,    492}, 0, {   444,    990}, {0x8a, 0x7d, 0x4c, 0xff}}},\n};\n\n// 0x07002E10 - 0x07002F00\nstatic const Vtx bitfs_seg7_vertex_07002E10[] = {\n    {{{    61,  -1535,    573}, 0, {   444,    990}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{    61,  -1228,    573}, 0, {   444,      0}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{     0,  -1228,    635}, 0, {   240,      0}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{     0,  -1535,    635}, 0, {   240,    990}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{     0,  -1535,    635}, 0, {   240,    990}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{   -81,  -1228,    635}, 0, {     0,      0}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{   -81,  -1535,    635}, 0, {     0,    990}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{     0,  -1535,   -511}, 0, {   240,    990}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{     0,  -1228,   -511}, 0, {   240,      0}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{   -81,  -1228,   -511}, 0, {     0,      0}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{   -81,  -1535,   -511}, 0, {     0,    990}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{   -81,  -1535,   -716}, 0, {     0,    990}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{   -81,  -1228,   -716}, 0, {     0,      0}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{     0,  -1228,   -716}, 0, {   240,      0}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{     0,  -1535,   -716}, 0, {   240,    990}, {0xac, 0x9d, 0x52, 0xff}}},\n};\n\n// 0x07002F00 - 0x07002F70\nstatic const Vtx bitfs_seg7_vertex_07002F00[] = {\n    {{{   -81,  -1535,    430}, 0, {     0,    990}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{   -81,  -1228,    430}, 0, {     0,      0}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{     0,  -1228,    430}, 0, {   240,      0}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{     0,  -1535,    430}, 0, {   240,    990}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{     0,  -1535,    635}, 0, {   240,    990}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{     0,  -1228,    635}, 0, {   240,      0}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{   -81,  -1228,    635}, 0, {     0,      0}, {0xac, 0x9d, 0x52, 0xff}}},\n};\n\n// 0x07002F70 - 0x07003070\nstatic const Vtx bitfs_seg7_vertex_07002F70[] = {\n    {{{    61,  -1228,   -654}, 0, {   240,    990}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{    61,   1536,   -654}, 0, {   240,  -8208}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{    61,   1536,   -572}, 0, {     0,  -8208}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{    61,  -1228,    492}, 0, {   240,    990}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{    61,   1536,    573}, 0, {     0,  -8208}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{    61,  -1228,    573}, 0, {     0,    990}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{    61,   1536,    492}, 0, {   240,  -8208}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  -142,  -1228,    573}, 0, {   240,    990}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  -142,   1536,    573}, 0, {   240,  -8208}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  -142,   1536,    492}, 0, {     0,  -8208}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  -142,  -1228,    492}, 0, {     0,    990}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  -142,  -1228,   -572}, 0, {   240,    990}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  -142,   1536,   -654}, 0, {     0,  -8208}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  -142,  -1228,   -654}, 0, {     0,    990}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  -142,   1536,   -572}, 0, {   240,  -8208}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{    61,  -1228,   -572}, 0, {     0,    990}, {0x72, 0x67, 0x34, 0xff}}},\n};\n\n// 0x07003070 - 0x07003160\nstatic const Vtx bitfs_seg7_vertex_07003070[] = {\n    {{{   -81,  -1228,    635}, 0, {     0,    990}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{  -142,   1536,    573}, 0, {  -234,  -8208}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{  -142,  -1228,    573}, 0, {  -234,    990}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{    61,  -1228,    573}, 0, {   444,    990}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{    61,   1536,    573}, 0, {   444,  -8208}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{     0,   1536,    635}, 0, {   240,  -8208}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{     0,  -1228,    635}, 0, {   240,    990}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{     0,  -1228,    430}, 0, {   240,    990}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{     0,   1536,    430}, 0, {   240,  -8208}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{    61,   1536,    492}, 0, {   444,  -8208}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{    61,  -1228,    492}, 0, {   444,    990}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{  -142,  -1228,    492}, 0, {     0,    990}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{   -81,   1536,    430}, 0, {   258,  -8208}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{   -81,  -1228,    430}, 0, {   258,    990}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{  -142,   1536,    492}, 0, {     0,  -8208}, {0x8a, 0x7d, 0x4c, 0xff}}},\n};\n\n// 0x07003160 - 0x07003250\nstatic const Vtx bitfs_seg7_vertex_07003160[] = {\n    {{{     0,  -1228,   -716}, 0, {   240,    990}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{    61,   1536,   -654}, 0, {   444,  -8208}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{    61,  -1228,   -654}, 0, {   444,    990}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{   -81,  -1228,    635}, 0, {     0,    990}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{   -81,   1536,    635}, 0, {     0,  -8208}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{  -142,   1536,    573}, 0, {  -234,  -8208}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{   -81,  -1228,   -511}, 0, {     0,    990}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{  -142,   1536,   -572}, 0, {  -234,  -8208}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{  -142,  -1228,   -572}, 0, {  -234,    990}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{   -81,   1536,   -511}, 0, {     0,  -8208}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{  -142,  -1228,   -654}, 0, {     0,    990}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{  -142,   1536,   -654}, 0, {     0,  -8208}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{   -81,   1536,   -716}, 0, {   258,  -8208}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{   -81,  -1228,   -716}, 0, {   258,    990}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{     0,   1536,   -716}, 0, {   240,  -8208}, {0x8a, 0x7d, 0x4c, 0xff}}},\n};\n\n// 0x07003250 - 0x07003340\nstatic const Vtx bitfs_seg7_vertex_07003250[] = {\n    {{{    61,  -1228,   -572}, 0, {   444,    990}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{     0,   1536,   -511}, 0, {   240,  -8208}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{     0,  -1228,   -511}, 0, {   240,    990}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{    61,   1536,   -572}, 0, {   444,  -8208}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{     0,  -1228,   -511}, 0, {   240,    990}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{   -81,   1536,   -511}, 0, {     0,  -8208}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{   -81,  -1228,   -511}, 0, {     0,    990}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{     0,  -1228,    635}, 0, {   240,    990}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{   -81,   1536,    635}, 0, {     0,  -8208}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{   -81,  -1228,    635}, 0, {     0,    990}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{     0,   1536,    635}, 0, {   240,  -8208}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{   -81,  -1228,    430}, 0, {     0,    990}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{     0,   1536,    430}, 0, {   240,  -8208}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{     0,  -1228,    430}, 0, {   240,    990}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{   -81,   1536,    430}, 0, {     0,  -8208}, {0xac, 0x9d, 0x52, 0xff}}},\n};\n\n// 0x07003340 - 0x070033B0\nstatic const Vtx bitfs_seg7_vertex_07003340[] = {\n    {{{   -81,  -1228,   -716}, 0, {  -302,    990}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{     0,   1536,   -716}, 0, {     0,  -8206}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{     0,  -1228,   -716}, 0, {     0,    990}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{   -81,   1536,   -716}, 0, {  -302,  -8206}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{     0,  -1228,   -511}, 0, {   240,    990}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{     0,   1536,   -511}, 0, {   240,  -8208}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{   -81,   1536,   -511}, 0, {     0,  -8208}, {0xac, 0x9d, 0x52, 0xff}}},\n};\n\n// TODO: what is this?\n// Possibly vertices for a perfect triangle, but flag seems to be used here.\n// 0x070033B0 - 0x070033E0\nstatic const s16 bitfs_seg7_todo_070033B0[] = {\n    0x0080, 0x0100, 0x0000, 0x0000, 0x03de, 0x0000, 0xFFFF, 0xFFFF,\n    0xFF81, 0x0100, 0x0000, 0x0000, 0xFBE4, 0x0000, 0xFFFF, 0xFFFF,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x07DA, 0xFFFF, 0xFFFF,\n};\n\n// 0x070033E0 - 0x07003528\nstatic const Gfx bitfs_seg7_dl_070033E0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bitfs_seg7_texture_07001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_07002B30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07002C30, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07002D20, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07002E10, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07002F00, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP1Triangle( 4,  5,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07003528 - 0x07003670\nstatic const Gfx bitfs_seg7_dl_07003528[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_07002F70, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07003070, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07003160, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07003250, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07003340, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP1Triangle( 4,  5,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07003670 - 0x07003700\nconst Gfx bitfs_seg7_dl_07003670[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_070033E0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_07003528),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/4/geo.inc.c",
    "content": "// 0x0E0004E0\nconst GeoLayout bitfs_geo_0004E0[] = {\n    GEO_CULLING_RADIUS(2500),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitfs_seg7_dl_07003C60),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/4/model.inc.c",
    "content": "// 0x07003700 - 0x07003780\nstatic const Vtx bitfs_seg7_vertex_07003700[] = {\n    {{{  1659,    164,    297}, 0, {   734,   1754}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1966,    164,    911}, 0, {   352,    606}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1966,    164,   -316}, 0, {  1884,   2138}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1659,    164,   -316}, 0, {  1500,   2520}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1045,     10,    911}, 0, {  -796,   1754}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  1966,    164,    911}, 0, {   352,    606}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  1659,    164,    297}, 0, {   734,   1754}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  1045,     10,    297}, 0, {     0,   2520}, {0xb9, 0xb9, 0xb9, 0xff}}},\n};\n\n// 0x07003780 - 0x07003870\nstatic const Vtx bitfs_seg7_vertex_07003780[] = {\n    {{{  1434,    -50,     51}, 0, { 25348,  -8336}, {0x97, 0xa0, 0xcd, 0xff}}},\n    {{{  1434,    -50,    -50}, 0, { 24326,  -8080}, {0x97, 0xa0, 0xcd, 0xff}}},\n    {{{  1331,      0,      0}, 0, { 24156,  -7952}, {0x97, 0xa0, 0xcd, 0xff}}},\n    {{{  -297,   -302,     -9}, 0, { 13212,  -3862}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{     0,      0,      0}, 0, { 15298,  -4632}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{    51,    -50,    -50}, 0, { 15128,  -4632}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  1434,    -50,    -50}, 0, { 24326,  -8080}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  1331,      0,      0}, 0, { 24156,  -7952}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  -246,   -353,    -60}, 0, { 13042,  -3862}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  -716,   -306,      0}, 0, { 10528,  -2842}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  -767,   -357,    -50}, 0, {  9678,  -2588}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{ -1125,      0,      0}, 0, {  7804,  -1820}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{ -1177,    -50,    -50}, 0, {  6952,  -1566}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{ -1842,      0,      0}, 0, {  3034,      0}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{ -1791,    -50,    -50}, 0, {  2864,      0}, {0x8c, 0x98, 0xd8, 0xff}}},\n};\n\n// 0x07003870 - 0x07003930\nstatic const Vtx bitfs_seg7_vertex_07003870[] = {\n    {{{    51,    -50,     51}, 0, { 16150,  -4886}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  1434,    -50,     51}, 0, { 25348,  -8336}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  1331,      0,      0}, 0, { 24156,  -7952}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{     0,      0,      0}, 0, { 15298,  -4632}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  -246,   -353,     41}, 0, { 14064,  -4118}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  -297,   -302,     -9}, 0, { 13212,  -3862}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  -716,   -306,      0}, 0, { 10528,  -2842}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  -767,   -357,     51}, 0, { 10700,  -2842}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{ -1177,    -50,     51}, 0, {  7974,  -1820}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{ -1125,      0,      0}, 0, {  7804,  -1820}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{ -1791,    -50,     51}, 0, {  3886,   -288}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{ -1842,      0,      0}, 0, {  3034,      0}, {0x52, 0x61, 0xac, 0xff}}},\n};\n\n// 0x07003930 - 0x07003A30\nstatic const Vtx bitfs_seg7_vertex_07003930[] = {\n    {{{  1659,    -40,    297}, 0, {  2012,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1659,    164,   -316}, 0, {  4056,    308}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1659,    -40,   -316}, 0, {  4056,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1659,    164,    297}, 0, {  2012,    308}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1045,    -40,    297}, 0, {  2012,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1045,    -40,    911}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1045,     10,    911}, 0, {     0,    820}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1045,     10,    297}, 0, {  2012,    820}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1966,    -40,   -316}, 0, {  4056,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1966,    164,   -316}, 0, {  4056,    308}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1966,    164,    911}, 0, {     0,    308}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1966,    -40,    911}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1659,    -40,    297}, 0, {  2012,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1045,    -40,    297}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1045,     10,    297}, 0, {     0,    820}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1659,    164,    297}, 0, {  2012,    308}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x07003A30 - 0x07003AB0\nstatic const Vtx bitfs_seg7_vertex_07003A30[] = {\n    {{{  1045,    -40,    911}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1966,    164,    911}, 0, {  3034,    308}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1045,     10,    911}, 0, {     0,    820}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1966,    -40,    911}, 0, {  3034,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1659,    164,   -316}, 0, {  2012,    308}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1966,    -40,   -316}, 0, {  3034,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1659,    -40,   -316}, 0, {  2012,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1966,    164,   -316}, 0, {  3034,    308}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x07003AB0 - 0x07003AF8\nstatic const Gfx bitfs_seg7_dl_07003AB0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_07003700, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07003AF8 - 0x07003BD0\nstatic const Gfx bitfs_seg7_dl_07003AF8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_07003780, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  4,  7,  6, 0x0),\n    gsSP2Triangles( 3,  5,  8, 0x0,  9,  3, 10, 0x0),\n    gsSP2Triangles( 3,  8, 10, 0x0, 11, 10, 12, 0x0),\n    gsSP2Triangles(11,  9, 10, 0x0, 13, 11, 12, 0x0),\n    gsSP1Triangle(13, 12, 14, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07003870, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  0,  3, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 8,  6,  9, 0x0,  8,  7,  6, 0x0),\n    gsSP2Triangles(10,  8,  9, 0x0, 10,  9, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07003BD0 - 0x07003C60\nstatic const Gfx bitfs_seg7_dl_07003BD0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bitfs_seg7_texture_07001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_07003930, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07003A30, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07003C60 - 0x07003CF8\nconst Gfx bitfs_seg7_dl_07003C60[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_07003AB0),\n    gsSPDisplayList(bitfs_seg7_dl_07003AF8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_07003BD0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/5/geo.inc.c",
    "content": "// 0x0E0004F8\nconst GeoLayout bitfs_geo_0004F8[] = {\n    GEO_CULLING_RADIUS(3200),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitfs_seg7_dl_070040B0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/5/model.inc.c",
    "content": "// 0x07003CF8 - 0x07003DF8\nstatic const Vtx bitfs_seg7_vertex_07003CF8[] = {\n    {{{  2560,      0,   1147}, 0, {  9352,    990}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{    -4,      0,     -5}, 0, {  4698,    222}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  2560,      0,  -1163}, 0, {  9352,   -514}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -2610,      0,   1147}, 0, {     0,    990}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -2610,      0,  -1163}, 0, {     0,   -548}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -2610,    256,   1147}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2560,    256,   1147}, 0, { 10290,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2560,    256,   1096}, 0, { 10290,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2585,    256,   1121}, 0, {    20,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2610,    256,   1147}, 0, {   326,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2585,    256,  -1137}, 0, {  4886,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2610,    256,  -1163}, 0, {  4938,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2585,    256,   1121}, 0, {   376,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2560,    256,  -1163}, 0, { 10290,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2585,    256,  -1137}, 0, {    20,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2560,    256,  -1112}, 0, { 10290,    478}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07003DF8 - 0x07003ED8\nstatic const Vtx bitfs_seg7_vertex_07003DF8[] = {\n    {{{  2560,    256,  -1163}, 0, { 10290,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2610,    256,  -1163}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2585,    256,  -1137}, 0, {    20,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2610,      0,   1147}, 0, {   326,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -2610,    256,   1147}, 0, {   326,    478}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -2610,    256,  -1163}, 0, {  4938,    478}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -2610,      0,  -1163}, 0, {  4938,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -2585,    256,   1121}, 0, {   376,    478}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -2533,    205,  -1086}, 0, {  4784,    582}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -2585,    256,  -1137}, 0, {  4886,    478}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -2533,    205,   1070}, 0, {   480,    582}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -2610,    256,  -1163}, 0, {     0,    478}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2560,    256,  -1163}, 0, { 10290,    478}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -2610,      0,  -1163}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x07003ED8 - 0x07003FC8\nstatic const Vtx bitfs_seg7_vertex_07003ED8[] = {\n    {{{ -2585,    256,   1121}, 0, {    20,    478}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2560,    205,   1044}, 0, { 10290,    582}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -2533,    205,   1070}, 0, {   122,    582}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2560,    256,   1096}, 0, { 10290,    478}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -2610,      0,   1147}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2560,    256,   1147}, 0, { 10290,    478}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -2610,    256,   1147}, 0, {     0,    478}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2560,      0,   1147}, 0, { 10290,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -2533,    205,  -1086}, 0, {   122,    582}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2560,    256,  -1112}, 0, { 10290,    478}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -2585,    256,  -1137}, 0, {    20,    478}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2560,    205,  -1060}, 0, { 10290,    582}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2560,    256,  -1163}, 0, { 10290,    478}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2560,      0,  -1163}, 0, { 10290,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -2610,      0,  -1163}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x07003FC8 - 0x070040B0\nstatic const Gfx bitfs_seg7_dl_07003FC8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_07003CF8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  4,  1,  3, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 12, 10, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07003DF8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07003ED8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070040B0 - 0x07004120\nconst Gfx bitfs_seg7_dl_070040B0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_07003FC8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/6/geo.inc.c",
    "content": "// 0x0E000510\nconst GeoLayout bitfs_geo_000510[] = {\n    GEO_CULLING_RADIUS(2600),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bitfs_seg7_dl_07004630),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/6/model.inc.c",
    "content": "// 0x07004120 - 0x07004210\nstatic const Vtx bitfs_seg7_vertex_07004120[] = {\n    {{{  -153,    922,   -890}, 0, {     0,  -5074}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -767,    922,  -1197}, 0, {  2012,   -986}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1074,    922,   -890}, 0, {     0,   1056}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -153,    922,  -1811}, 0, {     0,  -5142}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -460,    922,  -1197}, 0, {  2012,  -1054}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -153,    922,   -890}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -460,    922,  -1504}, 0, {  2012,  -3098}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1074,    922,  -1811}, 0, {     0,  -5074}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -767,    922,  -1504}, 0, {  2012,  -3030}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -460,    922,  -1504}, 0, {  2012,   -986}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -153,    922,  -1811}, 0, {     0,   1056}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1074,    922,   -890}, 0, {     0,  -5142}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -767,    922,  -1197}, 0, {  2012,  -3098}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -767,    922,  -1504}, 0, {  2012,  -1054}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1074,    922,  -1811}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n};\n\n// 0x07004210 - 0x07004300\nstatic const Vtx bitfs_seg7_vertex_07004210[] = {\n    {{{  1178,    614,   -521}, 0, {  2012,  -5078}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{     0,    614,   -521}, 0, {  2012,  -1406}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{     0,    614,   -214}, 0, {  1000,  -1406}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -153,    922,   -890}, 0, {     0,  -5074}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -460,    922,  -1197}, 0, {  2012,  -3030}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -767,    922,  -1197}, 0, {  2012,   -986}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -767,    614,   -521}, 0, {  2012,  -1054}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -818,    614,   -521}, 0, {  1816,  -1054}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -818,    614,     92}, 0, {  1816,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -767,    614,     92}, 0, {  2012,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -767,    614,   -214}, 0, {  1000,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -409,    614,   -521}, 0, {  2012,   -128}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -767,    614,   -521}, 0, {  2012,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -409,    614,   -214}, 0, {  1000,   -128}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1178,    614,   -214}, 0, {  1000,  -5078}, {0xc8, 0xc8, 0xc8, 0xff}}},\n};\n\n// 0x07004300 - 0x07004400\nstatic const Vtx bitfs_seg7_vertex_07004300[] = {\n    {{{  1178,    614,     92}, 0, {  2012,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1229,    614,     92}, 0, {  1816,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1178,    614,   -521}, 0, {  2012,  -1054}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1178,    614,   -214}, 0, {  1000,  -5078}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   819,    614,     92}, 0, {  2012,  -3960}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1178,    614,     92}, 0, {  2012,  -5078}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   819,    614,   -214}, 0, {  1000,  -3960}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   410,    614,   -214}, 0, {  1000,  -2682}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -767,    614,   -214}, 0, {  1000,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -767,    614,     92}, 0, {  2012,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   410,    614,     92}, 0, {  2012,  -2682}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1229,    307,    461}, 0, {  2012,  -1054}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   819,    307,    461}, 0, {     0,  -1054}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   819,    307,    870}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1229,    307,    870}, 0, {  2012,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1229,    614,   -521}, 0, {  1816,  -1054}, {0xc8, 0xc8, 0xc8, 0xff}}},\n};\n\n// 0x07004400 - 0x07004500\nstatic const Vtx bitfs_seg7_vertex_07004400[] = {\n    {{{  1229,    307,    870}, 0, {     0,  -1054}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   819,      0,    870}, 0, {  1244,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1229,      0,    870}, 0, {  1244,  -1054}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   819,    307,    870}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1229,    307,    461}, 0, {  2012,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   819,    307,    461}, 0, {  2012,  -1054}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1229,      0,    461}, 0, {   736,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   819,      0,    461}, 0, {   736,  -1054}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -818,    922,   -890}, 0, {     0,  -1576}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -409,    614,   -521}, 0, {  2012,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -409,    922,   -890}, 0, {  2012,  -1576}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -818,    614,   -521}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   819,    614,     92}, 0, {     0,  -1576}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1229,    307,    461}, 0, {  2012,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1229,    614,     92}, 0, {  2012,  -1576}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   819,    307,    461}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x07004500 - 0x07004630\nstatic const Gfx bitfs_seg7_dl_07004500[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_07004120, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07004210, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07004300, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  1, 15,  2, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07004400, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07004630 - 0x070046A0\nconst Gfx bitfs_seg7_dl_07004630[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_07004500),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/7/geo.inc.c",
    "content": "// 0x0E000528\nconst GeoLayout bitfs_geo_000528[] = {\n    GEO_CULLING_RADIUS(3500),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitfs_seg7_dl_07006B90),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/7/model.inc.c",
    "content": "// 0x070046A0 - 0x07004790\nstatic const Vtx bitfs_seg7_vertex_070046A0[] = {\n    {{{  -775,    435,    -64}, 0, {   334,  -6088}, {0x8f, 0xef, 0xbe, 0xff}}},\n    {{{  -775,    435,    -37}, 0, {   334,  -6088}, {0x8f, 0xef, 0xbe, 0xff}}},\n    {{{  -759,    435,    -37}, 0, {   386,  -5934}, {0x8f, 0xef, 0xbe, 0xff}}},\n    {{{  -752,    435,    -50}, 0, {   410,  -5858}, {0x8f, 0xef, 0xbe, 0xff}}},\n    {{{  -759,    435,    -64}, 0, {   386,  -5934}, {0x8f, 0xef, 0xbe, 0xff}}},\n    {{{  -782,    435,    -50}, 0, {   308,  -6164}, {0x8f, 0xef, 0xbe, 0xff}}},\n    {{{  -255,    998,    512}, 0, {  3374,    990}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{  -204,    998,   -562}, 0, {  -200,   1158}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{  -255,    998,   -511}, 0, {     0,    990}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{  -204,    998,   -562}, 0, {  3374,   1158}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{ -1279,    998,   -562}, 0, {  -200,   1158}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{ -1279,    998,   -511}, 0, {  -200,    990}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{  -255,    998,   -511}, 0, {  3204,    990}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{ -1586,    998,   -204}, 0, { -1222,      0}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{  -204,    998,    512}, 0, {  3374,   1158}, {0xad, 0xbb, 0xd1, 0xff}}},\n};\n\n// 0x07004790 - 0x07004890\nstatic const Vtx bitfs_seg7_vertex_07004790[] = {\n    {{{ -1586,    486,    205}, 0, {  3204,   -202}, {0xce, 0x72, 0x16, 0xff}}},\n    {{{ -1586,    538,    205}, 0, {  3204,   -202}, {0xce, 0x72, 0x16, 0xff}}},\n    {{{ -1586,    538,   -204}, 0, {  3204,   1158}, {0xce, 0x72, 0x16, 0xff}}},\n    {{{ -1586,    486,   -204}, 0, {  3204,   1158}, {0xce, 0x72, 0x16, 0xff}}},\n    {{{  -921,    333,   -153}, 0, {   990,    990}, {0xce, 0x91, 0x16, 0xff}}},\n    {{{  -921,    384,    154}, 0, {   990,      0}, {0xce, 0x91, 0x16, 0xff}}},\n    {{{  -921,    333,    154}, 0, {   990,      0}, {0xce, 0x91, 0x16, 0xff}}},\n    {{{  -921,    384,   -153}, 0, {   990,    990}, {0xce, 0x91, 0x16, 0xff}}},\n    {{{  -613,    333,    154}, 0, {     0,      0}, {0xce, 0x91, 0x16, 0xff}}},\n    {{{  -613,    384,   -153}, 0, {     0,    990}, {0xce, 0x91, 0x16, 0xff}}},\n    {{{  -613,    333,   -153}, 0, {     0,    990}, {0xce, 0x91, 0x16, 0xff}}},\n    {{{  -613,    384,    154}, 0, {     0,      0}, {0xce, 0x91, 0x16, 0xff}}},\n    {{{ -1586,    538,    205}, 0, {  3204,   -202}, {0xce, 0x91, 0x16, 0xff}}},\n    {{{ -1586,    486,    205}, 0, {  3204,   -202}, {0xce, 0x91, 0x16, 0xff}}},\n    {{{ -1279,    333,    512}, 0, {  2182,  -1224}, {0xce, 0x91, 0x16, 0xff}}},\n    {{{ -1279,    384,    512}, 0, {  2182,  -1224}, {0xce, 0x91, 0x16, 0xff}}},\n};\n\n// 0x07004890 - 0x07004990\nstatic const Vtx bitfs_seg7_vertex_07004890[] = {\n    {{{  -255,    998,   -511}, 0, {  3204,      0}, {0x79, 0x79, 0xeb, 0xff}}},\n    {{{ -1279,    998,   -511}, 0, {  -200,      0}, {0x79, 0x79, 0xeb, 0xff}}},\n    {{{ -1279,    384,   -511}, 0, {  -200,   2010}, {0x79, 0x79, 0xeb, 0xff}}},\n    {{{  -255,    384,   -511}, 0, {  3204,   2010}, {0x79, 0x79, 0xeb, 0xff}}},\n    {{{  -204,    998,    512}, 0, {     0,    820}, {0x79, 0x79, 0xeb, 0xff}}},\n    {{{  -255,    384,    512}, 0, {  2012,    990}, {0x79, 0x79, 0xeb, 0xff}}},\n    {{{  -204,    333,    512}, 0, {  2182,    820}, {0x79, 0x79, 0xeb, 0xff}}},\n    {{{  -255,    998,    512}, 0, {     0,    990}, {0x79, 0x79, 0xeb, 0xff}}},\n    {{{ -1586,    538,   -204}, 0, {  4226,    478}, {0x65, 0x65, 0xff, 0xff}}},\n    {{{ -1279,    384,   -511}, 0, {  3204,    990}, {0x65, 0x65, 0xff, 0xff}}},\n    {{{ -1586,    998,   -204}, 0, {  4226,  -1054}, {0x65, 0x65, 0xff, 0xff}}},\n    {{{ -1279,    998,   -511}, 0, {  3204,  -1054}, {0x65, 0x65, 0xff, 0xff}}},\n    {{{  -255,    998,   -511}, 0, {     0,   3032}, {0x52, 0x52, 0xac, 0xff}}},\n    {{{  -255,    384,   -511}, 0, {     0,    990}, {0x52, 0x52, 0xac, 0xff}}},\n    {{{  -255,    384,    512}, 0, {  3374,    990}, {0x52, 0x52, 0xac, 0xff}}},\n    {{{  -255,    998,    512}, 0, {  3374,   3032}, {0x52, 0x52, 0xac, 0xff}}},\n};\n\n// 0x07004990 - 0x07004A90\nstatic const Vtx bitfs_seg7_vertex_07004990[] = {\n    {{{  -204,    333,   -562}, 0, {  3374,   2180}, {0x7f, 0x65, 0xff, 0xff}}},\n    {{{ -1279,    998,   -562}, 0, {  -200,      0}, {0x7f, 0x65, 0xff, 0xff}}},\n    {{{  -204,    998,   -562}, 0, {  3374,      0}, {0x7f, 0x65, 0xff, 0xff}}},\n    {{{ -1279,    333,   -562}, 0, {  -200,   2180}, {0x7f, 0x65, 0xff, 0xff}}},\n    {{{ -1586,    486,   -204}, 0, { -1222,   1670}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{ -1586,    998,   -204}, 0, { -1222,      0}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{ -1279,    998,   -562}, 0, {  -200,      0}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{ -1279,    333,   -562}, 0, {  -200,   2180}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{  -204,    333,   -562}, 0, {  3204,   2180}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{  -204,    998,   -562}, 0, {  3204,      0}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{  -204,    333,    512}, 0, {  -370,   2180}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{  -204,    998,    512}, 0, {  -370,      0}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{  -782,   -383,    -50}, 0, {   308,   2010}, {0x79, 0xeb, 0xb2, 0xff}}},\n    {{{  -775,    435,    -64}, 0, {   334,  -6088}, {0x79, 0xeb, 0xb2, 0xff}}},\n    {{{  -775,   -383,    -64}, 0, {   334,   2086}, {0x79, 0xeb, 0xb2, 0xff}}},\n    {{{  -782,    435,    -50}, 0, {   308,  -6164}, {0x79, 0xeb, 0xb2, 0xff}}},\n};\n\n// 0x07004A90 - 0x07004B90\nstatic const Vtx bitfs_seg7_vertex_07004A90[] = {\n    {{{  -752,   -383,    -50}, 0, {   410,   2316}, {0x79, 0xeb, 0xb2, 0xff}}},\n    {{{  -752,    435,    -50}, 0, {   410,  -5858}, {0x79, 0xeb, 0xb2, 0xff}}},\n    {{{  -759,    435,    -37}, 0, {   386,  -5934}, {0x79, 0xeb, 0xb2, 0xff}}},\n    {{{  -759,   -383,    -37}, 0, {   386,   2240}, {0x79, 0xeb, 0xb2, 0xff}}},\n    {{{  -775,   -383,    -64}, 0, {   334,   2086}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{  -775,    435,    -64}, 0, {   334,  -6088}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{  -759,    435,    -64}, 0, {   386,  -5934}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{  -759,   -383,    -64}, 0, {   386,   2240}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{  -759,   -383,    -37}, 0, {   386,   2240}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{  -775,    435,    -37}, 0, {   334,  -6088}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{  -775,   -383,    -37}, 0, {   334,   2086}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{  -759,    435,    -37}, 0, {   386,  -5934}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{  -759,   -383,    -64}, 0, {   386,   2240}, {0x1f, 0xdf, 0x7f, 0xff}}},\n    {{{  -759,    435,    -64}, 0, {   386,  -5934}, {0x1f, 0xdf, 0x7f, 0xff}}},\n    {{{  -752,    435,    -50}, 0, {   410,  -5858}, {0x1f, 0xdf, 0x7f, 0xff}}},\n    {{{  -752,   -383,    -50}, 0, {   410,   2316}, {0x1f, 0xdf, 0x7f, 0xff}}},\n};\n\n// 0x07004B90 - 0x07004C90\nstatic const Vtx bitfs_seg7_vertex_07004B90[] = {\n    {{{  -775,   -383,    -37}, 0, {   334,   2086}, {0x1f, 0xdf, 0x7f, 0xff}}},\n    {{{  -782,    435,    -50}, 0, {   308,  -6164}, {0x1f, 0xdf, 0x7f, 0xff}}},\n    {{{  -782,   -383,    -50}, 0, {   308,   2010}, {0x1f, 0xdf, 0x7f, 0xff}}},\n    {{{  -775,    435,    -37}, 0, {   334,  -6088}, {0x1f, 0xdf, 0x7f, 0xff}}},\n    {{{  -613,    384,   -153}, 0, {     0,    990}, {0xdf, 0x9f, 0x1f, 0xff}}},\n    {{{  -921,    384,   -153}, 0, {   990,    990}, {0xdf, 0x9f, 0x1f, 0xff}}},\n    {{{  -921,    333,   -153}, 0, {   990,    990}, {0xdf, 0x9f, 0x1f, 0xff}}},\n    {{{  -613,    333,   -153}, 0, {     0,    990}, {0xdf, 0x9f, 0x1f, 0xff}}},\n    {{{  -613,    333,    154}, 0, {     0,      0}, {0xdf, 0x9f, 0x1f, 0xff}}},\n    {{{  -921,    333,    154}, 0, {   990,      0}, {0xdf, 0x9f, 0x1f, 0xff}}},\n    {{{  -921,    384,    154}, 0, {   990,      0}, {0xdf, 0x9f, 0x1f, 0xff}}},\n    {{{  -613,    384,    154}, 0, {     0,      0}, {0xdf, 0x9f, 0x1f, 0xff}}},\n    {{{  -255,    384,    512}, 0, {  3204,   1328}, {0xdf, 0x9f, 0x1f, 0xff}}},\n    {{{ -1279,    333,    512}, 0, {  -200,   1500}, {0xdf, 0x9f, 0x1f, 0xff}}},\n    {{{  -204,    333,    512}, 0, {  3374,   1498}, {0xdf, 0x9f, 0x1f, 0xff}}},\n    {{{ -1279,    384,    512}, 0, {  -200,   1328}, {0xdf, 0x9f, 0x1f, 0xff}}},\n};\n\n// 0x07004C90 - 0x07004D90\nstatic const Vtx bitfs_seg7_vertex_07004C90[] = {\n    {{{ -1279,    384,    512}, 0, {  2182,  -1224}, {0xdf, 0xbf, 0x1f, 0xff}}},\n    {{{ -1586,    538,   -204}, 0, {  3204,   1158}, {0xdf, 0xbf, 0x1f, 0xff}}},\n    {{{ -1586,    538,    205}, 0, {  3204,   -202}, {0xdf, 0xbf, 0x1f, 0xff}}},\n    {{{ -1279,    384,   -511}, 0, {  2182,   2180}, {0xdf, 0xbf, 0x1f, 0xff}}},\n    {{{  -613,    384,   -153}, 0, {     0,    990}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -255,    384,    512}, 0, { -1222,  -1224}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -255,    384,   -511}, 0, { -1222,   2180}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{ -1279,    384,   -511}, 0, {  2182,   2180}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -921,    384,   -153}, 0, {   990,    990}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -613,    384,    154}, 0, {     0,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -921,    384,    154}, 0, {   990,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{ -1279,    384,    512}, 0, {  2182,  -1224}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{ -1586,    486,    205}, 0, {  3204,   -202}, {0xc8, 0x64, 0x00, 0xff}}},\n    {{{ -1586,    486,   -204}, 0, {  3204,   1158}, {0xc8, 0x64, 0x00, 0xff}}},\n    {{{ -1279,    333,    512}, 0, {  2182,  -1224}, {0xc8, 0x64, 0x00, 0xff}}},\n    {{{ -1279,    333,   -562}, 0, {  2182,   2180}, {0xc8, 0x64, 0x00, 0xff}}},\n};\n\n// 0x07004D90 - 0x07004E10\nstatic const Vtx bitfs_seg7_vertex_07004D90[] = {\n    {{{ -1279,    333,   -562}, 0, {  2182,   2180}, {0xc8, 0x64, 0x00, 0xff}}},\n    {{{  -921,    333,   -153}, 0, {   990,    990}, {0xc8, 0x64, 0x00, 0xff}}},\n    {{{ -1279,    333,    512}, 0, {  2182,  -1224}, {0xc8, 0x64, 0x00, 0xff}}},\n    {{{  -613,    333,   -153}, 0, {     0,    990}, {0xc8, 0x64, 0x00, 0xff}}},\n    {{{  -204,    333,   -562}, 0, { -1222,   2180}, {0xc8, 0x64, 0x00, 0xff}}},\n    {{{  -921,    333,    154}, 0, {   990,      0}, {0xc8, 0x64, 0x00, 0xff}}},\n    {{{  -204,    333,    512}, 0, { -1222,  -1224}, {0xc8, 0x64, 0x00, 0xff}}},\n    {{{  -613,    333,    154}, 0, {     0,      0}, {0xc8, 0x64, 0x00, 0xff}}},\n};\n\n// 0x07004E10 - 0x07004F10\nstatic const Vtx bitfs_seg7_vertex_07004E10[] = {\n    {{{   308,   -542,    -91}, 0, {   606,    862}, {0x53, 0x46, 0x20, 0xff}}},\n    {{{   411,   -542,     10}, 0, {   352,    606}, {0x53, 0x46, 0x20, 0xff}}},\n    {{{   308,   -542,     10}, 0, {   352,    606}, {0x53, 0x46, 0x20, 0xff}}},\n    {{{  1639,   -696,    -91}, 0, {   224,   1244}, {0x53, 0x46, 0x20, 0xff}}},\n    {{{  1742,   -696,     10}, 0, {     0,    990}, {0x53, 0x46, 0x20, 0xff}}},\n    {{{  1639,   -696,     10}, 0, {     0,    990}, {0x53, 0x46, 0x20, 0xff}}},\n    {{{  1742,   -696,    -91}, 0, {   224,   1244}, {0x53, 0x46, 0x20, 0xff}}},\n    {{{   613,   -696,     10}, 0, {     0,    990}, {0x53, 0x46, 0x20, 0xff}}},\n    {{{   511,   -696,     10}, 0, {     0,    990}, {0x53, 0x46, 0x20, 0xff}}},\n    {{{   511,   -696,    -91}, 0, {   224,   1244}, {0x53, 0x46, 0x20, 0xff}}},\n    {{{   613,   -696,    -91}, 0, {   224,   1244}, {0x53, 0x46, 0x20, 0xff}}},\n    {{{  -717,   -542,     10}, 0, {   352,    606}, {0x53, 0x46, 0x20, 0xff}}},\n    {{{  -819,   -542,     10}, 0, {   352,    606}, {0x53, 0x46, 0x20, 0xff}}},\n    {{{  -819,   -542,    -91}, 0, {   606,    862}, {0x53, 0x46, 0x20, 0xff}}},\n    {{{  -717,   -542,    -91}, 0, {   606,    862}, {0x53, 0x46, 0x20, 0xff}}},\n    {{{   411,   -542,    -91}, 0, {   606,    862}, {0x53, 0x46, 0x20, 0xff}}},\n};\n\n// 0x07004F10 - 0x07005010\nstatic const Vtx bitfs_seg7_vertex_07004F10[] = {\n    {{{  1639,   -696,     10}, 0, {     0,    990}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  1639,   -614,     61}, 0, {    44,    658}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  1639,   -532,     10}, 0, {   376,    582}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  1639,   -532,    -91}, 0, {   632,    836}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  1639,   -614,   -142}, 0, {   556,   1166}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  1639,   -696,    -91}, 0, {   224,   1244}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  1742,   -614,   -142}, 0, {   556,   1166}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  1742,   -696,    -91}, 0, {   224,   1244}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  1742,   -532,     10}, 0, {   376,    582}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  1742,   -532,    -91}, 0, {   632,    836}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  1742,   -614,     61}, 0, {    44,    658}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  1742,   -696,     10}, 0, {     0,    990}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{   613,   -614,   -142}, 0, {   556,   1166}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{   613,   -532,    -91}, 0, {   632,    836}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{   613,   -696,     10}, 0, {     0,    990}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{   613,   -532,     10}, 0, {   376,    582}, {0x72, 0x67, 0x34, 0xff}}},\n};\n\n// 0x07005010 - 0x070050F0\nstatic const Vtx bitfs_seg7_vertex_07005010[] = {\n    {{{   613,   -532,     10}, 0, {   376,    582}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{   613,   -614,     61}, 0, {    44,    658}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{   613,   -696,     10}, 0, {     0,    990}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{   613,   -696,    -91}, 0, {   224,   1244}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{   613,   -614,   -142}, 0, {   556,   1166}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  -717,   -378,    -91}, 0, {  1016,    454}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  -717,   -378,     10}, 0, {   760,    198}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  -717,   -542,     10}, 0, {   352,    606}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{   511,   -696,    -91}, 0, {   224,   1244}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{   511,   -614,   -142}, 0, {   556,   1166}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{   511,   -532,     10}, 0, {   376,    582}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{   511,   -532,    -91}, 0, {   632,    836}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{   511,   -614,     61}, 0, {    44,    658}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{   511,   -696,     10}, 0, {     0,    990}, {0x72, 0x67, 0x34, 0xff}}},\n};\n\n// 0x070050F0 - 0x070051F0\nstatic const Vtx bitfs_seg7_vertex_070050F0[] = {\n    {{{  -819,   -460,   -142}, 0, {   938,    786}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  -717,   -460,   -142}, 0, {   938,    786}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  -717,   -542,    -91}, 0, {   606,    862}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  -717,   -378,     10}, 0, {   760,    198}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  -717,   -460,     61}, 0, {   428,    274}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  -717,   -542,     10}, 0, {   352,    606}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  -717,   -378,    -91}, 0, {  1016,    454}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  -819,   -542,    -91}, 0, {   606,    862}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  -819,   -378,    -91}, 0, {  1016,    454}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  -819,   -378,     10}, 0, {   760,    198}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  -819,   -460,     61}, 0, {   428,    274}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{  -819,   -542,     10}, 0, {   352,    606}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{   308,   -542,     10}, 0, {   352,    606}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{   308,   -460,     61}, 0, {   428,    274}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{   308,   -378,     10}, 0, {   760,    198}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{   308,   -378,    -91}, 0, {  1016,    454}, {0x72, 0x67, 0x34, 0xff}}},\n};\n\n// 0x070051F0 - 0x070052D0\nstatic const Vtx bitfs_seg7_vertex_070051F0[] = {\n    {{{   308,   -542,     10}, 0, {   352,    606}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{   308,   -460,   -142}, 0, {   938,    786}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{   308,   -542,    -91}, 0, {   606,    862}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{   308,   -378,    -91}, 0, {  1016,    454}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{   411,   -460,   -142}, 0, {   938,    786}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{   411,   -542,    -91}, 0, {   606,    862}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{   411,   -378,     10}, 0, {   760,    198}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{   411,   -378,    -91}, 0, {  1016,    454}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{   411,   -542,     10}, 0, {   352,    606}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{   411,   -460,     61}, 0, {   428,    274}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{   308,   -460,     61}, 0, {   428,    274}, {0x72, 0x67, 0x34, 0xff}}},\n    {{{   613,   -532,     10}, 0, {   376,    582}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{   511,   -532,     10}, 0, {   376,    582}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{   613,   -614,     61}, 0, {    44,    658}, {0x8a, 0x7d, 0x4c, 0xff}}},\n};\n\n// 0x070052D0 - 0x070053C0\nstatic const Vtx bitfs_seg7_vertex_070052D0[] = {\n    {{{  1639,   -532,    -91}, 0, {   632,    836}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{  1742,   -532,    -91}, 0, {   632,    836}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{  1742,   -614,   -142}, 0, {   556,   1166}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{  1639,   -614,   -142}, 0, {   556,   1166}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{  1639,   -614,     61}, 0, {    44,    658}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{  1742,   -614,     61}, 0, {    44,    658}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{  1742,   -532,     10}, 0, {   376,    582}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{  1639,   -532,     10}, 0, {   376,    582}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{   613,   -614,   -142}, 0, {   556,   1166}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{   511,   -614,   -142}, 0, {   556,   1166}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{   613,   -532,    -91}, 0, {   632,    836}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{   511,   -532,    -91}, 0, {   632,    836}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{   308,   -378,    -91}, 0, {  1016,    454}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{   411,   -378,    -91}, 0, {  1016,    454}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{   411,   -460,   -142}, 0, {   938,    786}, {0x8a, 0x7d, 0x4c, 0xff}}},\n};\n\n// 0x070053C0 - 0x070054A0\nstatic const Vtx bitfs_seg7_vertex_070053C0[] = {\n    {{{   511,   -532,     10}, 0, {   376,    582}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{   511,   -614,     61}, 0, {    44,    658}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{   613,   -614,     61}, 0, {    44,    658}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{  -717,   -460,   -142}, 0, {   938,    786}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{  -819,   -460,   -142}, 0, {   938,    786}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{  -717,   -378,    -91}, 0, {  1016,    454}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{  -819,   -378,    -91}, 0, {  1016,    454}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{  -717,   -378,     10}, 0, {   760,    198}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{  -819,   -378,     10}, 0, {   760,    198}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{  -717,   -460,     61}, 0, {   428,    274}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{  -819,   -460,     61}, 0, {   428,    274}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{   308,   -378,    -91}, 0, {  1016,    454}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{   411,   -460,   -142}, 0, {   938,    786}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{   308,   -460,   -142}, 0, {   938,    786}, {0x8a, 0x7d, 0x4c, 0xff}}},\n};\n\n// 0x070054A0 - 0x07005590\nstatic const Vtx bitfs_seg7_vertex_070054A0[] = {\n    {{{   308,   -460,     61}, 0, {   428,    274}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{   411,   -460,     61}, 0, {   428,    274}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{   411,   -378,     10}, 0, {   760,    198}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{   308,   -378,     10}, 0, {   760,    198}, {0x8a, 0x7d, 0x4c, 0xff}}},\n    {{{   411,   -378,     10}, 0, {   760,    198}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{   308,   -378,    -91}, 0, {  1016,    454}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{   308,   -378,     10}, 0, {   760,    198}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{  1742,   -532,     10}, 0, {   376,    582}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{  1742,   -532,    -91}, 0, {   632,    836}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{  1639,   -532,    -91}, 0, {   632,    836}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{  1639,   -532,     10}, 0, {   376,    582}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{   613,   -532,     10}, 0, {   376,    582}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{   613,   -532,    -91}, 0, {   632,    836}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{   511,   -532,     10}, 0, {   376,    582}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{   511,   -532,    -91}, 0, {   632,    836}, {0xac, 0x9d, 0x52, 0xff}}},\n};\n\n// 0x07005590 - 0x07005600\nstatic const Vtx bitfs_seg7_vertex_07005590[] = {\n    {{{  -717,   -378,     10}, 0, {   760,    198}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{  -717,   -378,    -91}, 0, {  1016,    454}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{  -819,   -378,     10}, 0, {   760,    198}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{  -819,   -378,    -91}, 0, {  1016,    454}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{   411,   -378,     10}, 0, {   760,    198}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{   411,   -378,    -91}, 0, {  1016,    454}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{   308,   -378,    -91}, 0, {  1016,    454}, {0xac, 0x9d, 0x52, 0xff}}},\n};\n\n// 0x07005600 - 0x07005700\nstatic const Vtx bitfs_seg7_vertex_07005600[] = {\n    {{{   563,  -1253,    266}, 0, {     0,    990}, {0xaf, 0xaf, 0xaf, 0xff}}},\n    {{{   563,  -1253,   -347}, 0, {  2012,    990}, {0xaf, 0xaf, 0xaf, 0xff}}},\n    {{{  -357,  -1100,   -347}, 0, {  2012,  -2118}, {0xaf, 0xaf, 0xaf, 0xff}}},\n    {{{  -357,  -1100,    266}, 0, {     0,  -2118}, {0xaf, 0xaf, 0xaf, 0xff}}},\n    {{{  2867,   -485,   -347}, 0, {  2012,  -1054}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  2253,   -485,   -347}, 0, {     0,  -1054}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  2253,   -485,    266}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  2867,   -485,    266}, 0, {  2012,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1996,  -1100,   -654}, 0, {  4568,   2520}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{ -2610,  -1100,   -654}, 0, {  3034,   4054}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{ -2610,  -1100,    573}, 0, {     0,    990}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{ -1996,  -1100,    573}, 0, {  1502,   -544}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   563,  -1253,    266}, 0, {   990,    990}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  1638,  -1253,    266}, 0, { -2586,    990}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  1638,  -1253,   -347}, 0, { -2586,  -1054}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   563,  -1253,   -347}, 0, {   990,  -1054}, {0xb9, 0xb9, 0xb9, 0xff}}},\n};\n\n// 0x07005700 - 0x07005800\nstatic const Vtx bitfs_seg7_vertex_07005700[] = {\n    {{{   513,   -429,     10}, 0, {   734,    734}, {0x68, 0x95, 0x73, 0xff}}},\n    {{{   411,   -378,     10}, 0, {   606,    352}, {0x68, 0x95, 0x73, 0xff}}},\n    {{{   411,   -634,     10}, 0, {     0,    990}, {0x68, 0x95, 0x73, 0xff}}},\n    {{{   513,   -685,     10}, 0, {    96,   1372}, {0x68, 0x95, 0x73, 0xff}}},\n    {{{   513,   -685,    -91}, 0, {    96,   1372}, {0x68, 0x95, 0x73, 0xff}}},\n    {{{   411,   -378,    -91}, 0, {   606,    352}, {0x68, 0x95, 0x73, 0xff}}},\n    {{{   513,   -429,    -91}, 0, {   734,    734}, {0x68, 0x95, 0x73, 0xff}}},\n    {{{   411,   -634,    -91}, 0, {     0,    990}, {0x68, 0x95, 0x73, 0xff}}},\n    {{{   513,   -685,    -91}, 0, {   862,   1372}, {0x49, 0x88, 0x77, 0xff}}},\n    {{{   513,   -429,     10}, 0, {     0,    990}, {0x49, 0x88, 0x77, 0xff}}},\n    {{{   513,   -685,     10}, 0, {   606,   1626}, {0x49, 0x88, 0x77, 0xff}}},\n    {{{   513,   -429,    -91}, 0, {   224,    734}, {0x49, 0x88, 0x77, 0xff}}},\n    {{{   411,   -378,    -91}, 0, {    96,    606}, {0x49, 0x88, 0x77, 0xff}}},\n    {{{   411,   -634,     10}, 0, {   478,   1498}, {0x49, 0x88, 0x77, 0xff}}},\n    {{{   411,   -378,     10}, 0, {  -158,    862}, {0x49, 0x88, 0x77, 0xff}}},\n    {{{   411,   -634,    -91}, 0, {   734,   1244}, {0x49, 0x88, 0x77, 0xff}}},\n};\n\n// 0x07005800 - 0x070058F0\nstatic const Vtx bitfs_seg7_vertex_07005800[] = {\n    {{{ -1996,   2074,    205}, 0, {   650,    990}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{ -2201,   2074,    410}, 0, {     0,    990}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{ -1381,   2074,    410}, 0, {  1330,   -372}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{   513,   -429,    -91}, 0, {   224,    734}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{   411,   -378,     10}, 0, {  -158,    862}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{   513,   -429,     10}, 0, {     0,    990}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{   411,   -378,    -91}, 0, {    96,    606}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{ -1279,  -1100,   -654}, 0, {  1500,   2522}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{  -665,  -1100,    573}, 0, {   734,    224}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{  -357,  -1100,    266}, 0, {  1500,    224}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{ -1586,  -1100,   -347}, 0, {   734,   2522}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{ -1586,  -1100,    266}, 0, {     0,   1754}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{ -1279,  -1100,    573}, 0, {     0,    990}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{  -357,  -1100,   -347}, 0, {  2268,    990}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{  -665,  -1100,   -654}, 0, {  2268,   1754}, {0xbc, 0xca, 0xbf, 0xff}}},\n};\n\n// 0x070058F0 - 0x070059B0\nstatic const Vtx bitfs_seg7_vertex_070058F0[] = {\n    {{{ -2201,   2074,   -409}, 0, {  1330,   2350}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{ -1996,   2074,   -204}, 0, {  1330,   1670}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{ -1586,   2074,   -204}, 0, {  2012,    990}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{ -1381,   2074,    410}, 0, {  1330,   -372}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{ -1586,   2074,    205}, 0, {  1330,    308}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{ -1381,   2074,   -409}, 0, {  2694,    990}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{ -1996,   2074,    205}, 0, {   650,    990}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{ -2201,   2074,    410}, 0, {     0,    990}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{   513,   -685,     10}, 0, {   606,   1626}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{   411,   -634,    -91}, 0, {   734,   1244}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{   513,   -685,    -91}, 0, {   862,   1372}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{   411,   -634,     10}, 0, {   478,   1498}, {0x00, 0x43, 0x43, 0xff}}},\n};\n\n// 0x070059B0 - 0x07005AA0\nstatic const Vtx bitfs_seg7_vertex_070059B0[] = {\n    {{{ -1586,  -1407,    266}, 0, {  2012,    990}, {0x67, 0x76, 0x64, 0xff}}},\n    {{{ -1586,  -1100,    266}, 0, {  2012,      0}, {0x67, 0x76, 0x64, 0xff}}},\n    {{{ -1586,  -1100,   -347}, 0, {     0,      0}, {0x67, 0x76, 0x64, 0xff}}},\n    {{{ -1586,  -1407,   -347}, 0, {     0,    990}, {0x67, 0x76, 0x64, 0xff}}},\n    {{{ -2201,   2074,   -409}, 0, {     0,    308}, {0x67, 0x76, 0x64, 0xff}}},\n    {{{ -2201,   1869,   -409}, 0, {     0,    990}, {0x67, 0x76, 0x64, 0xff}}},\n    {{{ -2201,   1869,    410}, 0, {  2694,    990}, {0x67, 0x76, 0x64, 0xff}}},\n    {{{ -2201,   2074,    410}, 0, {  2694,    308}, {0x67, 0x76, 0x64, 0xff}}},\n    {{{ -1381,   1869,   -409}, 0, {  2694,    990}, {0x67, 0x76, 0x64, 0xff}}},\n    {{{ -1381,   2074,   -409}, 0, {  2694,    308}, {0x67, 0x76, 0x64, 0xff}}},\n    {{{ -1381,   2074,    410}, 0, {     0,    308}, {0x67, 0x76, 0x64, 0xff}}},\n    {{{ -1381,   1869,    410}, 0, {     0,    990}, {0x67, 0x76, 0x64, 0xff}}},\n    {{{ -2201,   2074,   -409}, 0, {  2694,    308}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{ -1381,   1869,   -409}, 0, {     0,    990}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{ -2201,   1869,   -409}, 0, {  2694,    990}, {0x88, 0x98, 0x84, 0xff}}},\n};\n\n// 0x07005AA0 - 0x07005B90\nstatic const Vtx bitfs_seg7_vertex_07005AA0[] = {\n    {{{ -1279,  -1100,   -654}, 0, {  2012,      0}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{  -665,  -1407,   -654}, 0, {     0,    990}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{ -1279,  -1407,   -654}, 0, {  2012,    990}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{  -665,  -1100,   -654}, 0, {     0,      0}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{  -665,  -1100,    573}, 0, {  2012,      0}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{ -1279,  -1407,    573}, 0, {     0,    990}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{  -665,  -1407,    573}, 0, {  2012,    990}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{ -1279,  -1100,    573}, 0, {     0,      0}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{ -1381,   2074,    410}, 0, {  2694,    308}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{ -2201,   1869,    410}, 0, {     0,    990}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{ -1381,   1869,    410}, 0, {  2694,    990}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{ -2201,   2074,    410}, 0, {     0,    308}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{ -2201,   2074,   -409}, 0, {  2694,    308}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{ -1381,   2074,   -409}, 0, {     0,    308}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{ -1381,   1869,   -409}, 0, {     0,    990}, {0x88, 0x98, 0x84, 0xff}}},\n};\n\n// 0x07005B90 - 0x07005C90\nstatic const Vtx bitfs_seg7_vertex_07005B90[] = {\n    {{{  -357,  -1100,    266}, 0, {  1414,      0}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{  -665,  -1407,    573}, 0, {     0,    990}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{  -357,  -1407,    266}, 0, {  1414,    990}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{  -357,  -1407,   -347}, 0, {  -454,    990}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{  -665,  -1407,   -654}, 0, {   990,    990}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{  -665,  -1100,   -654}, 0, {   990,      0}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{  -357,  -1100,   -347}, 0, {  -454,      0}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{ -1586,  -1100,   -347}, 0, {  1414,      0}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{ -1279,  -1100,   -654}, 0, {     0,      0}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{ -1279,  -1407,   -654}, 0, {     0,    990}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{ -1586,  -1407,   -347}, 0, {  1414,    990}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{ -1586,  -1407,    266}, 0, {  -454,    990}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{ -1279,  -1100,    573}, 0, {   990,      0}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{ -1586,  -1100,    266}, 0, {  -454,      0}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{ -1279,  -1407,    573}, 0, {   990,    990}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{  -665,  -1100,    573}, 0, {     0,      0}, {0x74, 0x86, 0x75, 0xff}}},\n};\n\n// 0x07005C90 - 0x07005D80\nstatic const Vtx bitfs_seg7_vertex_07005C90[] = {\n    {{{  2253,  -1407,    266}, 0, {  2012,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2253,  -1100,   -347}, 0, {     0,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2253,  -1407,   -347}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -2610,  -1407,    573}, 0, {  4056,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -2610,  -1100,    573}, 0, {  4056,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -2610,  -1100,   -654}, 0, {     0,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -2610,  -1407,   -654}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1996,  -1407,   -654}, 0, {  4056,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1996,  -1100,    573}, 0, {     0,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1996,  -1407,    573}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1996,  -1100,   -654}, 0, {  4056,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2867,  -1407,   -347}, 0, {  2012,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2867,  -1100,   -347}, 0, {  2012,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2867,  -1100,    266}, 0, {     0,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2867,  -1407,    266}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x07005D80 - 0x07005E60\nstatic const Vtx bitfs_seg7_vertex_07005D80[] = {\n    {{{  1638,  -1253,   -347}, 0, {  2012,    478}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1638,  -1253,    266}, 0, {     0,    478}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1638,  -1407,    266}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2253,  -1407,    266}, 0, {  2012,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2253,  -1100,    266}, 0, {  2012,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2253,  -1100,   -347}, 0, {     0,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1638,  -1407,   -347}, 0, {  2012,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2253,  -1407,   -347}, 0, {  2012,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2253,  -1100,   -347}, 0, {  2012,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2867,  -1100,   -347}, 0, {     0,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1996,  -1407,    573}, 0, {  2012,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -2610,  -1100,    573}, 0, {     0,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -2610,  -1407,    573}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1996,  -1100,    573}, 0, {  2012,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x07005E60 - 0x07005F40\nstatic const Vtx bitfs_seg7_vertex_07005E60[] = {\n    {{{ -1996,  -1407,   -654}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -2610,  -1100,   -654}, 0, {  2012,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1996,  -1100,   -654}, 0, {     0,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -2610,  -1407,   -654}, 0, {  2012,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2867,  -1407,    266}, 0, {  2012,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2253,  -1100,    266}, 0, {     0,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2253,  -1407,    266}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2867,  -1100,    266}, 0, {  2012,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   563,  -1253,   -347}, 0, { -2586,    480}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   563,  -1407,   -347}, 0, { -2586,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -357,  -1407,   -347}, 0, { -5652,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2253,  -1407,   -347}, 0, {  2012,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2867,  -1100,   -347}, 0, {     0,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2867,  -1407,   -347}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x07005F40 - 0x07006000\nstatic const Vtx bitfs_seg7_vertex_07005F40[] = {\n    {{{  -357,  -1100,    266}, 0, {     0,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -357,  -1407,    266}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   563,  -1407,    266}, 0, {  3034,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   563,  -1253,    266}, 0, {  3034,    480}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1638,  -1407,    266}, 0, {  6610,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1638,  -1253,    266}, 0, {  6610,    480}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   563,  -1253,   -347}, 0, { -2586,    480}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -357,  -1407,   -347}, 0, { -5652,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -357,  -1100,   -347}, 0, { -5652,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1638,  -1253,   -347}, 0, {   990,    480}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1638,  -1407,   -347}, 0, {   990,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   563,  -1407,   -347}, 0, { -2586,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x07006000 - 0x070060F0\nstatic const Vtx bitfs_seg7_vertex_07006000[] = {\n    {{{ -1996,   1664,   -204}, 0, {   990,   1328}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1996,   2074,   -204}, 0, {   990,      0}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1996,   2074,    205}, 0, {  -370,      0}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1996,   1663,    205}, 0, {  -370,   1332}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1586,   1664,    205}, 0, { -1222,   1328}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1586,   2074,   -204}, 0, {   138,      0}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1586,   1664,   -204}, 0, {   138,   1328}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1586,   2074,    205}, 0, { -1222,      0}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1586,   2074,    205}, 0, {  -370,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1586,   1664,    205}, 0, {  -370,   1328}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1996,   1663,    205}, 0, {   990,   1332}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2253,  -1100,    266}, 0, {  2012,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2253,   -485,    266}, 0, {  2012,  -1054}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2253,   -485,   -347}, 0, {     0,  -1054}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2253,  -1100,   -347}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x070060F0 - 0x070061E0\nstatic const Vtx bitfs_seg7_vertex_070060F0[] = {\n    {{{  2867,  -1100,   -347}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2867,   -485,   -347}, 0, {     0,  -1054}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2867,   -485,    266}, 0, {  2012,  -1054}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2867,  -1100,    266}, 0, {  2012,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1586,   1664,   -204}, 0, {  1330,   1328}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1586,   2074,   -204}, 0, {  1330,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1996,   2074,   -204}, 0, {     0,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1996,   1664,   -204}, 0, {     0,   1328}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1996,   2074,    205}, 0, {   990,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1586,   2074,    205}, 0, {  -370,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1996,   1663,    205}, 0, {   990,   1332}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2253,  -1100,   -347}, 0, {  2012,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2253,   -485,   -347}, 0, {  2012,  -1054}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2867,   -485,   -347}, 0, {     0,  -1054}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2867,  -1100,   -347}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x070061E0 - 0x07006220\nstatic const Vtx bitfs_seg7_vertex_070061E0[] = {\n    {{{  2867,  -1100,    266}, 0, {  2012,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2253,   -485,    266}, 0, {     0,  -1054}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2253,  -1100,    266}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2867,   -485,    266}, 0, {  2012,  -1054}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x07006220 - 0x070064A8\nstatic const Gfx bitfs_seg7_dl_07006220[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bitfs_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_070046A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  2,  3, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 11, 10, 13, 0x0),\n    gsSP1Triangle( 6, 14,  7, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07004790, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07004890, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 15, 12, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07004990, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07004A90, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07004B90, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07004C90, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  4, 0x0),\n    gsSP2Triangles( 7,  4,  6, 0x0,  4,  9,  5, 0x0),\n    gsSP2Triangles(10, 11,  5, 0x0, 10,  5,  9, 0x0),\n    gsSP2Triangles(11,  8,  7, 0x0, 11, 10,  8, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07004D90, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  3,  0, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles( 6,  2,  5, 0x0,  7,  6,  5, 0x0),\n    gsSP2Triangles( 6,  7,  3, 0x0,  4,  6,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070064A8 - 0x07006790\nstatic const Gfx bitfs_seg7_dl_070064A8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_07004E10, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07004F10, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  0,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  4,  6, 0x0),\n    gsSP2Triangles( 8,  7,  6, 0x0,  8,  6,  9, 0x0),\n    gsSP2Triangles( 0, 10,  1, 0x0,  0, 11, 10, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0,  8, 11,  7, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07005010, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  9,  3, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0, 11,  9, 10, 0x0),\n    gsSP2Triangles( 9,  4,  3, 0x0,  1, 12,  2, 0x0),\n    gsSP2Triangles(13, 12, 10, 0x0, 12, 13,  2, 0x0),\n    gsSP1Triangle( 8, 13, 10, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_070050F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 1,  6,  5, 0x0,  2,  1,  5, 0x0),\n    gsSP2Triangles( 7,  0,  2, 0x0,  8,  0,  9, 0x0),\n    gsSP2Triangles( 0,  7,  9, 0x0,  4, 10,  5, 0x0),\n    gsSP2Triangles(10, 11,  5, 0x0, 11, 10,  9, 0x0),\n    gsSP2Triangles( 7, 11,  9, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 14, 15, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_070051F0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 6,  5,  4, 0x0,  6,  4,  7, 0x0),\n    gsSP2Triangles( 0,  8,  9, 0x0,  0,  9, 10, 0x0),\n    gsSP2Triangles( 6,  9,  8, 0x0,  6,  8,  5, 0x0),\n    gsSP1Triangle(11, 12, 13, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_070052D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_070053C0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_070054A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07005590, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP1Triangle( 4,  5,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07006790 - 0x070067F8\nstatic const Gfx bitfs_seg7_dl_07006790[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_07005600, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070067F8 - 0x07006900\nstatic const Gfx bitfs_seg7_dl_070067F8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_07005700, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07005800, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10, 11, 0x0,  7, 11, 12, 0x0),\n    gsSP2Triangles( 7, 13, 14, 0x0,  7, 12,  8, 0x0),\n    gsSP1Triangle( 7,  9, 13, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_070058F0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 3,  5,  2, 0x0,  6,  3,  4, 0x0),\n    gsSP2Triangles( 7,  6,  1, 0x0,  7,  1,  0, 0x0),\n    gsSP2Triangles( 0,  2,  5, 0x0,  8,  9, 10, 0x0),\n    gsSP1Triangle( 8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07006900 - 0x07006AD8\nstatic const Gfx bitfs_seg7_dl_07006900[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bitfs_seg7_texture_07001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_070059B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07005AA0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07005B90, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07005C90, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07005D80, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  2,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07005E60, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07005F40, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  2,  5,  3, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9, 10, 0x0),\n    gsSP1Triangle( 6, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07006AD8 - 0x07006B90\nstatic const Gfx bitfs_seg7_dl_07006AD8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_07006000, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_070060F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_070061E0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07006B90 - 0x07006C58\nconst Gfx bitfs_seg7_dl_07006B90[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_07006220),\n    gsSPDisplayList(bitfs_seg7_dl_070064A8),\n    gsSPDisplayList(bitfs_seg7_dl_07006790),\n    gsSPDisplayList(bitfs_seg7_dl_070067F8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_07006900),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_07006AD8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/8/geo.inc.c",
    "content": "// 0x0E000540\nconst GeoLayout bitfs_geo_000540[] = {\n    GEO_CULLING_RADIUS(1900),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bitfs_seg7_dl_07007070),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/8/model.inc.c",
    "content": "// 0x07006C58 - 0x07006D58\nstatic const Vtx bitfs_seg7_vertex_07006C58[] = {\n    {{{  1280,   -153,    512}, 0, {   308,   1328}, {0x9a, 0xfe, 0xb3, 0xff}}},\n    {{{  1280,   -153,   -511}, 0, { -3092,   4736}, {0x9a, 0xfe, 0xb3, 0xff}}},\n    {{{   256,   -152,   -511}, 0, { -6500,   1328}, {0x9a, 0xfe, 0xb3, 0xff}}},\n    {{{   256,   -152,    512}, 0, { -3092,  -2076}, {0x9a, 0xfe, 0xb3, 0xff}}},\n    {{{   -50,   -153,   -204}, 0, { -6500,   -714}, {0x9a, 0xfe, 0xb3, 0xff}}},\n    {{{   -50,   -153,    205}, 0, { -5136,  -2076}, {0x9a, 0xfe, 0xb3, 0xff}}},\n    {{{   256,   -153,    512}, 0, { -3092,  -2076}, {0x9a, 0xfe, 0xb3, 0xff}}},\n    {{{   256,   -153,   -511}, 0, { -6500,   1328}, {0x9a, 0xfe, 0xb3, 0xff}}},\n    {{{   256,   -153,    512}, 0, {     0,    990}, {0x8e, 0xf0, 0x98, 0xff}}},\n    {{{   256,   -767,    512}, 0, {  2012,   3032}, {0x8e, 0xf0, 0x98, 0xff}}},\n    {{{  1280,   -767,    512}, 0, {  5420,   -372}, {0x8e, 0xf0, 0x98, 0xff}}},\n    {{{  1280,   -153,    512}, 0, {  3376,  -2416}, {0x8e, 0xf0, 0x98, 0xff}}},\n    {{{   -50,   -153,    205}, 0, { -1732,   -372}, {0xce, 0xaf, 0x16, 0xff}}},\n    {{{   -50,   -153,   -204}, 0, {  -368,  -1736}, {0xce, 0xaf, 0x16, 0xff}}},\n    {{{   -50,    512,   -204}, 0, { -2584,  -3950}, {0xce, 0xaf, 0x16, 0xff}}},\n    {{{   -50,    512,    205}, 0, { -3944,  -2586}, {0xce, 0xaf, 0x16, 0xff}}},\n};\n\n// 0x07006D58 - 0x07006E58\nstatic const Vtx bitfs_seg7_vertex_07006D58[] = {\n    {{{  -460,   -613,    205}, 0, {  -200,   1158}, {0xce, 0xaf, 0x16, 0xff}}},\n    {{{  -460,    512,    205}, 0, { -3944,  -2586}, {0xce, 0xaf, 0x16, 0xff}}},\n    {{{  -460,   -613,   -204}, 0, {  1160,   -202}, {0xce, 0xaf, 0x16, 0xff}}},\n    {{{  -460,    512,   -204}, 0, { -2584,  -3950}, {0xce, 0xaf, 0x16, 0xff}}},\n    {{{   -50,   -153,    205}, 0, {  -368,   1670}, {0x8c, 0xd8, 0x8c, 0xff}}},\n    {{{   -50,   -613,    205}, 0, {  1160,   3202}, {0x8c, 0xd8, 0x8c, 0xff}}},\n    {{{   256,   -767,    512}, 0, {  3716,   1670}, {0x8c, 0xd8, 0x8c, 0xff}}},\n    {{{   256,   -153,    512}, 0, {  1672,   -372}, {0x8c, 0xd8, 0x8c, 0xff}}},\n    {{{   -50,   -613,    205}, 0, { -4968,   4906}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   -50,    512,    205}, 0, { -8716,   1158}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -460,    511,    205}, 0, {-10076,   2524}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -460,   -613,    205}, 0, { -6332,   6268}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   -50,    512,   -204}, 0, { -8716,   1158}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -460,   -613,   -204}, 0, { -6332,   6268}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   -50,   -613,   -204}, 0, { -4968,   4906}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -460,    512,   -204}, 0, {-10076,   2520}, {0xff, 0xd4, 0x00, 0xff}}},\n};\n\n// 0x07006E58 - 0x07006F58\nstatic const Vtx bitfs_seg7_vertex_07006E58[] = {\n    {{{ -1381,    819,    205}, 0, {   308,   2350}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1381,    922,    205}, 0, {     0,   2350}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1381,    922,   -204}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1381,    819,   -204}, 0, {   308,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -665,    922,   -204}, 0, {  1672,  -1394}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1381,    922,    205}, 0, {   308,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -665,    922,    205}, 0, {   308,  -1394}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1381,    922,   -204}, 0, {  1672,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -665,    922,   -206}, 0, {     0,  -1394}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1381,    717,   -204}, 0, {   648,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -665,    717,   -206}, 0, {   648,  -1394}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1381,    922,   -204}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1381,    717,    205}, 0, {   648,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -665,    717,    205}, 0, {   648,  -1394}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -665,    922,    205}, 0, {     0,  -1394}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1381,    922,    205}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x07006F58 - 0x07007008\nstatic const Gfx bitfs_seg7_dl_07006F58[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bitfs_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_07006C58, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  8, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07006D58, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10, 11,  8, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007008 - 0x07007070\nstatic const Gfx bitfs_seg7_dl_07007008[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_07006E58, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007070 - 0x070070E8\nconst Gfx bitfs_seg7_dl_07007070[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_07006F58),\n    gsSPDisplayList(bitfs_seg7_dl_07007008),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/9/geo.inc.c",
    "content": "// 0x0E000558\nconst GeoLayout bitfs_geo_000558[] = {\n    GEO_CULLING_RADIUS(4600),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitfs_seg7_dl_07007720),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/9/model.inc.c",
    "content": "// 0x070070E8 - 0x070071C8\nstatic const Vtx bitfs_seg7_vertex_070070E8[] = {\n    {{{ -3737,      0,  -1177}, 0, {  9352,   -514}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1280,      0,    108}, 0, { 18458,    308}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1280,      1,    519}, 0, { 18456,    582}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  3533,      0,   1133}, 0, { 22544,    990}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1690,      0,    519}, 0, { 19200,    582}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1690,      0,    109}, 0, { 19200,    308}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -255,      0,   1133}, 0, { 15670,    990}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  3533,      0,  -1177}, 0, { 22544,   -548}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -255,      0,  -1177}, 0, { 15668,   -514}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -3737,      0,   1133}, 0, {  9352,    990}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  3507,    256,   1107}, 0, { 14532,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -255,    256,   1133}, 0, {  7020,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3533,    256,   1133}, 0, { 14582,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -255,    256,   1107}, 0, {  7020,    478}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070071C8 - 0x070072A8\nstatic const Vtx bitfs_seg7_vertex_070071C8[] = {\n    {{{  -255,    256,  -1177}, 0, {  7018,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3737,    256,  -1177}, 0, {    70,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3737,    256,  -1125}, 0, {    70,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -255,    256,  -1151}, 0, {  7018,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3507,    256,  -1151}, 0, { 14532,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3533,    256,  -1177}, 0, { 14582,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3533,    256,  -1177}, 0, {  3864,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3507,    256,  -1151}, 0, {  3814,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3507,    256,   1107}, 0, {  -694,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3533,    256,   1133}, 0, {  -746,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -255,    256,   1107}, 0, {  7020,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3737,    256,   1133}, 0, {    70,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -255,    256,   1133}, 0, {  7020,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3737,    256,   1082}, 0, {    70,    480}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070072A8 - 0x070073A8\nstatic const Vtx bitfs_seg7_vertex_070072A8[] = {\n    {{{  3533,      0,  -1177}, 0, {  3864,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  3533,    256,  -1177}, 0, {  3864,    478}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  3533,    256,   1133}, 0, {  -746,    478}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  3533,      0,   1133}, 0, {  -746,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  3507,    256,   1107}, 0, {  -694,    478}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  3456,    205,  -1100}, 0, {  3712,    582}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  3456,    205,   1056}, 0, {  -592,    582}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  3507,    256,  -1151}, 0, {  3814,    478}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -255,    205,  -1100}, 0, {  7018,    582}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  3456,    205,  -1100}, 0, { 14430,    582}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  3507,    256,  -1151}, 0, { 14532,    478}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -255,    256,  -1151}, 0, {  7018,    478}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  3456,    205,   1056}, 0, { 14430,    582}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -255,    256,   1107}, 0, {  7020,    478}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  3507,    256,   1107}, 0, { 14532,    478}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -255,    205,   1056}, 0, {  7020,    582}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x070073A8 - 0x07007488\nstatic const Vtx bitfs_seg7_vertex_070073A8[] = {\n    {{{  -255,    205,   1056}, 0, {  7020,    582}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -3737,    256,   1082}, 0, {    70,    480}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -255,    256,   1107}, 0, {  7020,    480}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -3737,    205,   1031}, 0, {    70,    582}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  3533,    256,   1133}, 0, { 14582,    478}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -255,      0,   1133}, 0, {  7020,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  3533,      0,   1133}, 0, { 14582,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -255,    256,   1133}, 0, {  7020,    478}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -255,      0,  -1177}, 0, {  7020,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -3737,      0,  -1177}, 0, {    70,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -255,    256,  -1177}, 0, {  7020,    480}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -255,    256,   1133}, 0, {  7020,    480}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -3737,      0,   1133}, 0, {    70,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -3737,    256,   1133}, 0, {    70,    480}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x07007488 - 0x07007538\nstatic const Vtx bitfs_seg7_vertex_07007488[] = {\n    {{{  -255,    256,  -1151}, 0, {  7018,    478}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -3737,    256,  -1125}, 0, {    70,    478}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -3737,    205,  -1074}, 0, {    70,    582}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -255,    205,  -1100}, 0, {  7018,    582}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  3533,      0,  -1177}, 0, { 14582,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -255,      0,  -1177}, 0, {  7020,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  3533,    256,  -1177}, 0, { 14582,    478}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -255,    256,  -1177}, 0, {  7020,    478}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -3737,      0,  -1177}, 0, {    70,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -3737,    256,  -1177}, 0, {    70,    480}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -255,    256,  -1177}, 0, {  7020,    480}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x07007538 - 0x07007578\nstatic const Vtx bitfs_seg7_vertex_07007538[] = {\n    {{{  1280,    246,    519}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  1690,    246,    519}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  1690,    246,    109}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  1280,    246,    109}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07007578 - 0x07007700\nstatic const Gfx bitfs_seg7_dl_07007578[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_070070E8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0,  4,  6,  2, 0x0),\n    gsSP2Triangles( 3,  5,  7, 0x0,  8,  5,  1, 0x0),\n    gsSP2Triangles( 8,  7,  5, 0x0,  2,  6,  9, 0x0),\n    gsSP2Triangles( 9,  0,  2, 0x0,  0,  8,  1, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_070071C8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_070072A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_070073A8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12,  5, 0x0),\n    gsSP1Triangle(11, 13, 12, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07007488, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP1Triangle( 8,  9, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007700 - 0x07007720\nstatic const Gfx bitfs_seg7_dl_07007700[] = {\n    gsSPVertex(bitfs_seg7_vertex_07007538, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007720 - 0x07007798\nconst Gfx bitfs_seg7_dl_07007720[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_07007578),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(bitfs_seg7_dl_07007700),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/collision.inc.c",
    "content": "// 0x07011E98 - 0x07014F90\nconst Collision bitfs_seg7_collision_level[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x33D),\n    COL_VERTEX(6462, 4506, 740),\n    COL_VERTEX(7015, 5120, 740),\n    COL_VERTEX(7015, 4506, 740),\n    COL_VERTEX(7384, 5120, 371),\n    COL_VERTEX(7384, 4506, 371),\n    COL_VERTEX(6811, 4019, 271),\n    COL_VERTEX(6661, 4019, 271),\n    COL_VERTEX(6462, 5120, 740),\n    COL_VERTEX(7384, 5120, -181),\n    COL_VERTEX(7384, 4506, -181),\n    COL_VERTEX(6912, 4019, 170),\n    COL_VERTEX(7015, 4506, -549),\n    COL_VERTEX(6462, 5120, -549),\n    COL_VERTEX(6462, 4506, -549),\n    COL_VERTEX(7015, 5120, -549),\n    COL_VERTEX(6912, 4019, 20),\n    COL_VERTEX(6811, 4019, -79),\n    COL_VERTEX(6661, 4019, -79),\n    COL_VERTEX(6561, 4019, 20),\n    COL_VERTEX(6561, 4019, 170),\n    COL_VERTEX(6640, 3988, 321),\n    COL_VERTEX(6513, 3988, 194),\n    COL_VERTEX(6830, 3988, 321),\n    COL_VERTEX(6640, 2899, -122),\n    COL_VERTEX(6957, 3988, 194),\n    COL_VERTEX(6957, 3988, 4),\n    COL_VERTEX(6830, 3988, -122),\n    COL_VERTEX(6640, 3988, -122),\n    COL_VERTEX(6513, 3988, 4),\n    COL_VERTEX(6407, 4403, 869),\n    COL_VERTEX(7513, 4403, 426),\n    COL_VERTEX(6407, 4403, -678),\n    COL_VERTEX(5965, 4403, -236),\n    COL_VERTEX(5965, 4403, 426),\n    COL_VERTEX(6094, 4506, 371),\n    COL_VERTEX(6094, 4506, -181),\n    COL_VERTEX(6661, 3072, 271),\n    COL_VERTEX(6561, 3072, 170),\n    COL_VERTEX(6811, 3072, 271),\n    COL_VERTEX(6561, 3072, 20),\n    COL_VERTEX(6661, 3072, -79),\n    COL_VERTEX(6811, 3072, -79),\n    COL_VERTEX(6912, 3072, 20),\n    COL_VERTEX(6912, 3072, 170),\n    COL_VERTEX(6640, 2899, 321),\n    COL_VERTEX(6830, 2899, 321),\n    COL_VERTEX(6957, 2899, 194),\n    COL_VERTEX(6513, 2899, 194),\n    COL_VERTEX(6957, 2899, 4),\n    COL_VERTEX(6513, 2899, 4),\n    COL_VERTEX(6830, 2899, -122),\n    COL_VERTEX(7071, 4403, 869),\n    COL_VERTEX(7513, 4403, -236),\n    COL_VERTEX(7071, 4403, -678),\n    COL_VERTEX(-8191, -3071, 8192),\n    COL_VERTEX(8192, -3071, -8191),\n    COL_VERTEX(-8191, -3071, -8191),\n    COL_VERTEX(8192, -3071, 8192),\n    COL_VERTEX(1126, 205, 1050),\n    COL_VERTEX(3072, 205, 512),\n    COL_VERTEX(2662, 207, 512),\n    COL_VERTEX(4838, 205, 1050),\n    COL_VERTEX(4838, 205, -1106),\n    COL_VERTEX(3072, 205, 102),\n    COL_VERTEX(-2354, 205, -1081),\n    COL_VERTEX(-2354, 205, 1024),\n    COL_VERTEX(2663, 205, 101),\n    COL_VERTEX(1126, 205, -1106),\n    COL_VERTEX(-7449, 205, -1106),\n    COL_VERTEX(-4919, 205, -26),\n    COL_VERTEX(-7449, 205, 1050),\n    COL_VERTEX(-4530, 3482, 1050),\n    COL_VERTEX(-4530, 3482, -1106),\n    COL_VERTEX(563, 3482, -1081),\n    COL_VERTEX(563, 3482, 1024),\n    COL_VERTEX(3128, 3482, -26),\n    COL_VERTEX(5658, 3482, -1106),\n    COL_VERTEX(-2000, 3482, -26),\n    COL_VERTEX(5658, 3482, 1050),\n    COL_VERTEX(-2354, 256, 1126),\n    COL_VERTEX(1126, 256, 1126),\n    COL_VERTEX(-7525, 256, 1126),\n    COL_VERTEX(4915, 256, 1126),\n    COL_VERTEX(-4167, 3482, 404),\n    COL_VERTEX(-4167, 3523, 404),\n    COL_VERTEX(-4167, 3523, -209),\n    COL_VERTEX(-4167, 3482, -209),\n    COL_VERTEX(-4146, 3482, -209),\n    COL_VERTEX(-4146, 3533, 404),\n    COL_VERTEX(-4146, 3482, 404),\n    COL_VERTEX(-4146, 3533, -209),\n    COL_VERTEX(768, -2170, -2211),\n    COL_VERTEX(1690, -2170, -2211),\n    COL_VERTEX(768, -2170, -1289),\n    COL_VERTEX(1690, -2170, -1289),\n    COL_VERTEX(1434, -2170, -1289),\n    COL_VERTEX(1434, -2477, -921),\n    COL_VERTEX(2253, -2477, -306),\n    COL_VERTEX(1024, -2477, -306),\n    COL_VERTEX(1024, -2477, -921),\n    COL_VERTEX(2253, -2477, -613),\n    COL_VERTEX(1843, -2477, -613),\n    COL_VERTEX(1843, -2477, -921),\n    COL_VERTEX(3072, -2477, -306),\n    COL_VERTEX(3072, -2477, -921),\n    COL_VERTEX(3072, -2784, 61),\n    COL_VERTEX(-4146, -2969, 307),\n    COL_VERTEX(-4146, -2743, 307),\n    COL_VERTEX(-4453, -2969, -306),\n    COL_VERTEX(-4146, -2743, -306),\n    COL_VERTEX(-6962, 3072, -612),\n    COL_VERTEX(-4197, 205, 1),\n    COL_VERTEX(-4197, 410, 617),\n    COL_VERTEX(-4505, 410, 924),\n    COL_VERTEX(-5836, 205, 617),\n    COL_VERTEX(-5836, 410, 1),\n    COL_VERTEX(-5529, 410, -305),\n    COL_VERTEX(205, 205, 512),\n    COL_VERTEX(922, 307, 102),\n    COL_VERTEX(205, 410, 102),\n    COL_VERTEX(922, 410, 102),\n    COL_VERTEX(-4965, 3666, -209),\n    COL_VERTEX(-7525, 256, -1183),\n    COL_VERTEX(-2354, 0, -1183),\n    COL_VERTEX(-2354, 256, -1183),\n    COL_VERTEX(1126, 0, -1183),\n    COL_VERTEX(4915, 0, -1183),\n    COL_VERTEX(-1330, 732, 0),\n    COL_VERTEX(-2457, 753, 0),\n    COL_VERTEX(-2431, 819, 0),\n    COL_VERTEX(-2431, 788, 0),\n    COL_VERTEX(-2431, 717, 0),\n    COL_VERTEX(-2405, 205, -25),\n    COL_VERTEX(-2405, 742, -25),\n    COL_VERTEX(-2405, 819, -25),\n    COL_VERTEX(-1381, 742, -25),\n    COL_VERTEX(-1381, 819, -25),\n    COL_VERTEX(-1381, 205, -25),\n    COL_VERTEX(-1407, 717, 0),\n    COL_VERTEX(-1407, 788, 0),\n    COL_VERTEX(-1407, 819, 0),\n    COL_VERTEX(-2380, 788, 614),\n    COL_VERTEX(-2380, 819, 614),\n    COL_VERTEX(-2380, 717, 614),\n    COL_VERTEX(-2380, 205, 614),\n    COL_VERTEX(-2431, 717, 614),\n    COL_VERTEX(-2431, 819, 614),\n    COL_VERTEX(-1356, 717, 614),\n    COL_VERTEX(-1356, 205, 614),\n    COL_VERTEX(-1407, 717, 614),\n    COL_VERTEX(-1407, 819, 614),\n    COL_VERTEX(-1356, 788, 614),\n    COL_VERTEX(-1356, 819, 614),\n    COL_VERTEX(-1330, 788, 0),\n    COL_VERTEX(-2457, 742, -25),\n    COL_VERTEX(-1330, 742, -25),\n    COL_VERTEX(-2457, 717, 0),\n    COL_VERTEX(-1330, 788, 614),\n    COL_VERTEX(-2457, 717, 614),\n    COL_VERTEX(-1330, 742, 640),\n    COL_VERTEX(-1330, 717, 614),\n    COL_VERTEX(-2457, 742, 640),\n    COL_VERTEX(-2149, 307, 617),\n    COL_VERTEX(-2969, 410, 617),\n    COL_VERTEX(-2969, 410, 2),\n    COL_VERTEX(-2149, 205, 2),\n    COL_VERTEX(-3173, 3686, -876),\n    COL_VERTEX(-3378, 3482, -978),\n    COL_VERTEX(-3071, 3482, -978),\n    COL_VERTEX(-3276, 3686, -774),\n    COL_VERTEX(-3327, 3482, -620),\n    COL_VERTEX(-3122, 3482, -620),\n    COL_VERTEX(1075, 205, -564),\n    COL_VERTEX(1382, 205, -564),\n    COL_VERTEX(1280, 410, -462),\n    COL_VERTEX(1178, 410, -359),\n    COL_VERTEX(1126, 205, -206),\n    COL_VERTEX(1331, 205, -206),\n    COL_VERTEX(-1535, 3482, -975),\n    COL_VERTEX(-1228, 3482, -975),\n    COL_VERTEX(-1330, 3686, -872),\n    COL_VERTEX(-1279, 3482, -616),\n    COL_VERTEX(-1433, 3686, -770),\n    COL_VERTEX(-1484, 3482, -616),\n    COL_VERTEX(1741, 307, 512),\n    COL_VERTEX(1741, 205, 102),\n    COL_VERTEX(4403, -1279, 819),\n    COL_VERTEX(4403, -665, -204),\n    COL_VERTEX(4454, -665, 819),\n    COL_VERTEX(4403, -665, 819),\n    COL_VERTEX(3072, -1125, 512),\n    COL_VERTEX(1741, 205, 512),\n    COL_VERTEX(2458, 205, 102),\n    COL_VERTEX(2662, -1125, 102),\n    COL_VERTEX(3072, 0, 102),\n    COL_VERTEX(3072, 0, 512),\n    COL_VERTEX(3379, -1279, -204),\n    COL_VERTEX(3072, -1125, 102),\n    COL_VERTEX(3379, -665, -204),\n    COL_VERTEX(3072, -1177, 512),\n    COL_VERTEX(2662, 0, 512),\n    COL_VERTEX(2662, 410, 512),\n    COL_VERTEX(3072, 410, 512),\n    COL_VERTEX(2662, 0, 102),\n    COL_VERTEX(3379, -1279, 819),\n    COL_VERTEX(4915, 0, 1126),\n    COL_VERTEX(-2354, 0, 1126),\n    COL_VERTEX(-4919, 0, -26),\n    COL_VERTEX(1126, 256, -1183),\n    COL_VERTEX(-7525, 0, 1126),\n    COL_VERTEX(2662, 1, 512),\n    COL_VERTEX(4915, 256, -1183),\n    COL_VERTEX(3277, 205, -101),\n    COL_VERTEX(2458, 410, -101),\n    COL_VERTEX(3277, 410, 717),\n    COL_VERTEX(4045, -1330, 154),\n    COL_VERTEX(4454, -1330, -255),\n    COL_VERTEX(4454, -1330, 819),\n    COL_VERTEX(4045, -1330, 461),\n    COL_VERTEX(4045, -1279, 154),\n    COL_VERTEX(3738, -1330, 154),\n    COL_VERTEX(3379, -1330, -255),\n    COL_VERTEX(3072, -1177, 102),\n    COL_VERTEX(4454, -665, -255),\n    COL_VERTEX(7526, -2764, 573),\n    COL_VERTEX(7526, -2764, -40),\n    COL_VERTEX(7526, -3071, -40),\n    COL_VERTEX(7526, -3071, 573),\n    COL_VERTEX(6912, -2764, 573),\n    COL_VERTEX(6912, -3071, 573),\n    COL_VERTEX(6912, -2764, -40),\n    COL_VERTEX(6912, -3071, -40),\n    COL_VERTEX(5222, -3071, 573),\n    COL_VERTEX(4301, -2764, 573),\n    COL_VERTEX(6298, -2917, -40),\n    COL_VERTEX(5222, -2917, -40),\n    COL_VERTEX(4301, -3071, -40),\n    COL_VERTEX(3994, -2764, 881),\n    COL_VERTEX(3072, -3071, 573),\n    COL_VERTEX(3072, -2764, -40),\n    COL_VERTEX(3379, -2764, -347),\n    COL_VERTEX(4967, -2206, 215),\n    COL_VERTEX(4967, -2206, 317),\n    COL_VERTEX(5070, -2042, 317),\n    COL_VERTEX(3941, -2042, 317),\n    COL_VERTEX(3941, -2206, 215),\n    COL_VERTEX(3941, -2124, 164),\n    COL_VERTEX(3941, -2042, 215),\n    COL_VERTEX(3941, -2206, 317),\n    COL_VERTEX(3839, -2124, 369),\n    COL_VERTEX(3839, -2206, 215),\n    COL_VERTEX(3839, -2206, 317),\n    COL_VERTEX(3941, -2124, 369),\n    COL_VERTEX(3839, -2124, 164),\n    COL_VERTEX(3839, -2042, 215),\n    COL_VERTEX(5273, -2360, 317),\n    COL_VERTEX(5273, -2360, 215),\n    COL_VERTEX(5273, -2196, 317),\n    COL_VERTEX(5273, -2278, 164),\n    COL_VERTEX(5273, -2196, 215),\n    COL_VERTEX(5170, -2278, 369),\n    COL_VERTEX(5170, -2360, 215),\n    COL_VERTEX(5170, -2360, 317),\n    COL_VERTEX(5273, -2278, 369),\n    COL_VERTEX(5170, -2278, 164),\n    COL_VERTEX(5170, -2196, 215),\n    COL_VERTEX(6299, -2360, 317),\n    COL_VERTEX(6299, -2360, 215),\n    COL_VERTEX(6401, -2196, 317),\n    COL_VERTEX(5172, -2349, 215),\n    COL_VERTEX(5172, -2349, 317),\n    COL_VERTEX(5070, -2042, 215),\n    COL_VERTEX(5172, -2093, 215),\n    COL_VERTEX(5172, -2093, 317),\n    COL_VERTEX(2662, -3071, -347),\n    COL_VERTEX(2048, -3071, 881),\n    COL_VERTEX(2662, -3071, 881),\n    COL_VERTEX(3072, -2764, 471),\n    COL_VERTEX(3072, -3071, 61),\n    COL_VERTEX(563, 3277, -1183),\n    COL_VERTEX(-4607, 3277, -1183),\n    COL_VERTEX(-2000, 3277, -26),\n    COL_VERTEX(563, 3277, 1126),\n    COL_VERTEX(-4607, 3533, 1126),\n    COL_VERTEX(-4607, 3277, 1126),\n    COL_VERTEX(-7525, 0, -1183),\n    COL_VERTEX(0, -3071, -306),\n    COL_VERTEX(-306, -2866, -306),\n    COL_VERTEX(-921, -3071, 922),\n    COL_VERTEX(-306, -3071, 307),\n    COL_VERTEX(-921, -3020, 307),\n    COL_VERTEX(-921, -3071, 307),\n    COL_VERTEX(4342, 205, -470),\n    COL_VERTEX(4403, 205, -531),\n    COL_VERTEX(4260, 205, -470),\n    COL_VERTEX(4403, 205, -613),\n    COL_VERTEX(4342, 205, -675),\n    COL_VERTEX(4260, 205, -675),\n    COL_VERTEX(4198, 205, -613),\n    COL_VERTEX(4198, 205, -531),\n    COL_VERTEX(4260, 205, 676),\n    COL_VERTEX(4342, 205, 676),\n    COL_VERTEX(4198, 205, 614),\n    COL_VERTEX(4198, 205, 532),\n    COL_VERTEX(4260, 205, 471),\n    COL_VERTEX(4342, 205, 471),\n    COL_VERTEX(4403, 205, 532),\n    COL_VERTEX(4403, 205, 614),\n    COL_VERTEX(-5488, -3071, 676),\n    COL_VERTEX(-5426, -3071, 614),\n    COL_VERTEX(-5570, -3071, 676),\n    COL_VERTEX(-5426, -3071, 532),\n    COL_VERTEX(-5488, -3071, 471),\n    COL_VERTEX(-5570, -3071, 471),\n    COL_VERTEX(-5631, -3071, 532),\n    COL_VERTEX(-5631, -3071, 614),\n    COL_VERTEX(-5488, -3071, -470),\n    COL_VERTEX(-5570, -3071, -470),\n    COL_VERTEX(-5631, -3071, -531),\n    COL_VERTEX(-5631, -3071, -613),\n    COL_VERTEX(-5570, -3071, -675),\n    COL_VERTEX(-5488, -3071, -675),\n    COL_VERTEX(-5426, -3071, -613),\n    COL_VERTEX(-5426, -3071, -531),\n    COL_VERTEX(-5488, -2764, -470),\n    COL_VERTEX(-5426, -2764, -531),\n    COL_VERTEX(-5570, -2764, -470),\n    COL_VERTEX(-5426, -2764, -613),\n    COL_VERTEX(-5488, -2764, -675),\n    COL_VERTEX(-5570, -2764, -675),\n    COL_VERTEX(-5631, -2764, -613),\n    COL_VERTEX(-5631, -2764, -531),\n    COL_VERTEX(-5570, -2764, 676),\n    COL_VERTEX(-5488, -2764, 676),\n    COL_VERTEX(-5631, -2764, 614),\n    COL_VERTEX(-5631, -2764, 532),\n    COL_VERTEX(-5570, -2764, 471),\n    COL_VERTEX(-5488, -2764, 471),\n    COL_VERTEX(-5426, -2764, 532),\n    COL_VERTEX(-5426, -2764, 614),\n    COL_VERTEX(-4146, -2661, -306),\n    COL_VERTEX(-4453, -2661, -613),\n    COL_VERTEX(-3993, -3071, -613),\n    COL_VERTEX(-7986, -3071, 512),\n    COL_VERTEX(-7065, -2764, 512),\n    COL_VERTEX(-7065, -3071, -511),\n    COL_VERTEX(-7986, -2764, 512),\n    COL_VERTEX(-6553, -2866, 307),\n    COL_VERTEX(-6041, -3071, 307),\n    COL_VERTEX(-7065, -3071, 322),\n    COL_VERTEX(-6041, -2866, -306),\n    COL_VERTEX(-6553, -2866, -306),\n    COL_VERTEX(-6041, -3071, -306),\n    COL_VERTEX(-7065, -2866, -306),\n    COL_VERTEX(-6297, 2867, 564),\n    COL_VERTEX(-6297, 2765, 564),\n    COL_VERTEX(-6297, 2611, 1),\n    COL_VERTEX(-7525, 2611, 1),\n    COL_VERTEX(-6297, 2867, 1),\n    COL_VERTEX(-6297, 2867, 52),\n    COL_VERTEX(-7218, 2611, 616),\n    COL_VERTEX(-6911, 2867, 1),\n    COL_VERTEX(-4965, 3584, 404),\n    COL_VERTEX(-4965, 3789, 404),\n    COL_VERTEX(-5682, 3584, 813),\n    COL_VERTEX(-5682, 3584, -1022),\n    COL_VERTEX(-4965, 3584, -1022),\n    COL_VERTEX(-4965, 3584, -209),\n    COL_VERTEX(-4965, 3686, 404),\n    COL_VERTEX(-5017, 3686, 404),\n    COL_VERTEX(-4965, 3789, -1022),\n    COL_VERTEX(-5017, 3789, -971),\n    COL_VERTEX(-6911, 3174, -1022),\n    COL_VERTEX(-6911, 2970, -1022),\n    COL_VERTEX(-5682, 3789, -1022),\n    COL_VERTEX(-6911, 2918, -612),\n    COL_VERTEX(-5682, 3584, -612),\n    COL_VERTEX(-4965, 3789, 813),\n    COL_VERTEX(-7525, 2867, 1),\n    COL_VERTEX(-6932, 2611, 1),\n    COL_VERTEX(-7525, 2918, -612),\n    COL_VERTEX(-7372, 2970, -1022),\n    COL_VERTEX(-7525, 3174, -612),\n    COL_VERTEX(-7474, 2867, 1),\n    COL_VERTEX(-7218, 2867, 616),\n    COL_VERTEX(-7474, 2765, 1),\n    COL_VERTEX(-7474, 3174, -612),\n    COL_VERTEX(-7474, 3072, -612),\n    COL_VERTEX(-7372, 3174, -1021),\n    COL_VERTEX(-7474, 3174, -611),\n    COL_VERTEX(-5682, 3789, -971),\n    COL_VERTEX(-6911, 3174, -971),\n    COL_VERTEX(-7321, 3072, -971),\n    COL_VERTEX(-5017, 3686, -209),\n    COL_VERTEX(-6911, 3174, -612),\n    COL_VERTEX(-6911, 3174, -663),\n    COL_VERTEX(-6962, 2867, 1),\n    COL_VERTEX(-6962, 2867, 52),\n    COL_VERTEX(-6962, 3174, -612),\n    COL_VERTEX(-6962, 2765, 52),\n    COL_VERTEX(-5682, 3789, -663),\n    COL_VERTEX(-5631, 3789, -663),\n    COL_VERTEX(-6911, 3072, -663),\n    COL_VERTEX(-5017, 3686, 761),\n    COL_VERTEX(-5631, 3789, 761),\n    COL_VERTEX(-5631, 3686, -663),\n    COL_VERTEX(-4965, 3789, -209),\n    COL_VERTEX(-767, 717, -306),\n    COL_VERTEX(-767, 717, -613),\n    COL_VERTEX(-767, 819, -306),\n    COL_VERTEX(-460, 819, -306),\n    COL_VERTEX(-767, 819, -613),\n    COL_VERTEX(-2354, 1331, -613),\n    COL_VERTEX(-562, 717, -306),\n    COL_VERTEX(-562, 819, -306),\n    COL_VERTEX(-665, 717, 0),\n    COL_VERTEX(-1637, 1229, 0),\n    COL_VERTEX(-562, 717, 0),\n    COL_VERTEX(-2047, 1229, 0),\n    COL_VERTEX(-2047, 1331, 0),\n    COL_VERTEX(-2047, 1229, -921),\n    COL_VERTEX(-2354, 1229, -613),\n    COL_VERTEX(-2047, 1331, -921),\n    COL_VERTEX(-1637, 1331, -921),\n    COL_VERTEX(-50, 410, 614),\n    COL_VERTEX(-665, 819, 614),\n    COL_VERTEX(-1074, 410, 0),\n    COL_VERTEX(-562, 819, 0),\n    COL_VERTEX(-1433, 410, 0),\n    COL_VERTEX(205, 205, 0),\n    COL_VERTEX(-1433, 410, 614),\n    COL_VERTEX(205, 205, 614),\n    COL_VERTEX(205, 410, 614),\n    COL_VERTEX(922, 3482, -262),\n    COL_VERTEX(922, 3482, -210),\n    COL_VERTEX(1536, 5478, -210),\n    COL_VERTEX(2765, 5248, -210),\n    COL_VERTEX(3994, 5018, -262),\n    COL_VERTEX(3994, 3482, -262),\n    COL_VERTEX(922, 4813, 403),\n    COL_VERTEX(3379, 4403, -210),\n    COL_VERTEX(3379, 3789, -210),\n    COL_VERTEX(2765, 3482, -210),\n    COL_VERTEX(2150, 4198, -210),\n    COL_VERTEX(2150, 3789, -210),\n    COL_VERTEX(922, 4813, -210),\n    COL_VERTEX(2150, 5248, -262),\n    COL_VERTEX(2765, 4198, -210),\n    COL_VERTEX(2150, 4198, 403),\n    COL_VERTEX(4342, 512, -470),\n    COL_VERTEX(4403, 512, -531),\n    COL_VERTEX(4260, 512, -470),\n    COL_VERTEX(4403, 512, -613),\n    COL_VERTEX(4342, 512, -675),\n    COL_VERTEX(4260, 512, -675),\n    COL_VERTEX(4198, 512, -613),\n    COL_VERTEX(4198, 512, -531),\n    COL_VERTEX(4260, 512, 676),\n    COL_VERTEX(4342, 512, 676),\n    COL_VERTEX(4198, 512, 614),\n    COL_VERTEX(4198, 512, 532),\n    COL_VERTEX(4260, 512, 471),\n    COL_VERTEX(4342, 512, 471),\n    COL_VERTEX(4403, 512, 532),\n    COL_VERTEX(4403, 512, 614),\n    COL_VERTEX(5734, 3533, 1126),\n    COL_VERTEX(563, 3533, 1126),\n    COL_VERTEX(5734, 3533, -1183),\n    COL_VERTEX(563, 3533, -1183),\n    COL_VERTEX(5734, 3277, 1126),\n    COL_VERTEX(5734, 3277, -1183),\n    COL_VERTEX(2150, 4383, -210),\n    COL_VERTEX(2150, 4383, 403),\n    COL_VERTEX(1741, 4383, -6),\n    COL_VERTEX(1536, 4383, -210),\n    COL_VERTEX(1946, 4403, -6),\n    COL_VERTEX(1946, 4383, 198),\n    COL_VERTEX(1741, 4383, 198),\n    COL_VERTEX(1741, 4403, 198),\n    COL_VERTEX(1536, 4198, 382),\n    COL_VERTEX(1536, 4198, 403),\n    COL_VERTEX(-4607, 3533, -1183),\n    COL_VERTEX(1536, 4813, 403),\n    COL_VERTEX(2765, 4198, 403),\n    COL_VERTEX(4403, 4250, -210),\n    COL_VERTEX(3994, 4045, 403),\n    COL_VERTEX(3994, 4403, 403),\n    COL_VERTEX(4403, 4403, -210),\n    COL_VERTEX(1536, 4813, -210),\n    COL_VERTEX(3994, 3789, 403),\n    COL_VERTEX(3994, 3789, -210),\n    COL_VERTEX(3994, 3482, 403),\n    COL_VERTEX(3994, 3482, -210),\n    COL_VERTEX(3379, 3789, 403),\n    COL_VERTEX(3379, 3482, 403),\n    COL_VERTEX(2765, 3482, 403),\n    COL_VERTEX(2150, 3482, 403),\n    COL_VERTEX(1536, 3482, 403),\n    COL_VERTEX(1536, 3482, -210),\n    COL_VERTEX(1536, 3789, -210),\n    COL_VERTEX(1536, 3789, 403),\n    COL_VERTEX(922, 3789, 403),\n    COL_VERTEX(922, 3482, 403),\n    COL_VERTEX(307, 3482, 710),\n    COL_VERTEX(307, 3482, -518),\n    COL_VERTEX(-306, 3482, 710),\n    COL_VERTEX(-306, 3482, -518),\n    COL_VERTEX(5965, 4255, 426),\n    COL_VERTEX(5555, 4403, -210),\n    COL_VERTEX(5965, 4403, -210),\n    COL_VERTEX(5555, 4250, 403),\n    COL_VERTEX(1075, -2170, -1904),\n    COL_VERTEX(1075, -2170, -1596),\n    COL_VERTEX(1382, -2170, -1904),\n    COL_VERTEX(1382, -2170, -1596),\n    COL_VERTEX(1024, -2170, -1289),\n    COL_VERTEX(1434, -2477, -613),\n    COL_VERTEX(2662, -2477, -613),\n    COL_VERTEX(2662, -2477, -306),\n    COL_VERTEX(2662, -2784, 61),\n    COL_VERTEX(-4146, -2969, -306),\n    COL_VERTEX(-4453, -2969, 307),\n    COL_VERTEX(-4453, -2743, 307),\n    COL_VERTEX(-4453, -2743, -306),\n    COL_VERTEX(-6962, 3072, -663),\n    COL_VERTEX(-4197, 410, 1),\n    COL_VERTEX(-4197, 205, 617),\n    COL_VERTEX(-4505, 205, 924),\n    COL_VERTEX(-5529, 205, 924),\n    COL_VERTEX(-5529, 410, 924),\n    COL_VERTEX(-5836, 205, 1),\n    COL_VERTEX(-5836, 410, 617),\n    COL_VERTEX(-5529, 205, -305),\n    COL_VERTEX(-4505, 410, -305),\n    COL_VERTEX(-4505, 205, -305),\n    COL_VERTEX(922, 410, 512),\n    COL_VERTEX(205, 410, 512),\n    COL_VERTEX(922, 205, 512),\n    COL_VERTEX(922, 307, 512),\n    COL_VERTEX(205, 205, 101),\n    COL_VERTEX(922, 205, 102),\n    COL_VERTEX(-4484, 3666, -209),\n    COL_VERTEX(-4484, 3666, 404),\n    COL_VERTEX(-4965, 3666, 404),\n    COL_VERTEX(-1330, 753, 614),\n    COL_VERTEX(-1330, 732, 614),\n    COL_VERTEX(-1330, 753, 0),\n    COL_VERTEX(-2457, 732, 614),\n    COL_VERTEX(-2457, 753, 614),\n    COL_VERTEX(-2457, 732, 0),\n    COL_VERTEX(-2380, 788, 0),\n    COL_VERTEX(-2380, 717, 0),\n    COL_VERTEX(-2380, 205, 0),\n    COL_VERTEX(-2431, 205, 0),\n    COL_VERTEX(-2380, 819, 0),\n    COL_VERTEX(-1407, 205, 0),\n    COL_VERTEX(-1356, 717, 0),\n    COL_VERTEX(-1356, 205, 0),\n    COL_VERTEX(-1356, 819, 0),\n    COL_VERTEX(-1356, 788, 0),\n    COL_VERTEX(-2431, 788, 614),\n    COL_VERTEX(-2431, 205, 614),\n    COL_VERTEX(-2405, 742, 640),\n    COL_VERTEX(-2405, 205, 640),\n    COL_VERTEX(-2405, 819, 640),\n    COL_VERTEX(-1407, 205, 614),\n    COL_VERTEX(-1381, 742, 640),\n    COL_VERTEX(-1381, 205, 640),\n    COL_VERTEX(-1381, 819, 640),\n    COL_VERTEX(-1407, 788, 614),\n    COL_VERTEX(-1330, 717, 0),\n    COL_VERTEX(-2457, 788, 0),\n    COL_VERTEX(-2457, 788, 614),\n    COL_VERTEX(-2149, 205, 617),\n    COL_VERTEX(-2969, 205, 617),\n    COL_VERTEX(-2969, 205, 2),\n    COL_VERTEX(-2149, 307, 2),\n    COL_VERTEX(-3276, 3686, -876),\n    COL_VERTEX(-3173, 3686, -774),\n    COL_VERTEX(1280, 410, -359),\n    COL_VERTEX(1178, 410, -462),\n    COL_VERTEX(-1330, 3686, -770),\n    COL_VERTEX(-1433, 3686, -872),\n    COL_VERTEX(1741, 410, 512),\n    COL_VERTEX(1741, 410, 102),\n    COL_VERTEX(1741, 307, 102),\n    COL_VERTEX(2458, 410, 102),\n    COL_VERTEX(4403, -1279, -204),\n    COL_VERTEX(3379, -1330, 819),\n    COL_VERTEX(3379, -665, 819),\n    COL_VERTEX(2458, 410, 512),\n    COL_VERTEX(2458, 205, 512),\n    COL_VERTEX(2662, -1125, 512),\n    COL_VERTEX(3379, -665, -255),\n    COL_VERTEX(3072, -665, 512),\n    COL_VERTEX(3072, -665, 102),\n    COL_VERTEX(3072, 410, 102),\n    COL_VERTEX(2662, 410, 102),\n    COL_VERTEX(2663, 0, 101),\n    COL_VERTEX(1126, 0, 1126),\n    COL_VERTEX(3277, 410, -101),\n    COL_VERTEX(3277, 205, 717),\n    COL_VERTEX(2458, 205, -101),\n    COL_VERTEX(2458, 205, 717),\n    COL_VERTEX(2458, 410, 717),\n    COL_VERTEX(3738, -1330, 461),\n    COL_VERTEX(3738, -1279, 154),\n    COL_VERTEX(3738, -1279, 461),\n    COL_VERTEX(4045, -1279, 461),\n    COL_VERTEX(7526, -2149, 573),\n    COL_VERTEX(6912, -2149, 573),\n    COL_VERTEX(7526, -2149, -40),\n    COL_VERTEX(6912, -2149, -40),\n    COL_VERTEX(6298, -2917, 573),\n    COL_VERTEX(5222, -2917, 573),\n    COL_VERTEX(6298, -3071, 573),\n    COL_VERTEX(4301, -3071, 573),\n    COL_VERTEX(3994, -3071, 881),\n    COL_VERTEX(6298, -3071, -40),\n    COL_VERTEX(5222, -3071, -40),\n    COL_VERTEX(4301, -2764, -40),\n    COL_VERTEX(3994, -2764, -347),\n    COL_VERTEX(3994, -3071, -347),\n    COL_VERTEX(3379, -3071, 881),\n    COL_VERTEX(3379, -2764, 881),\n    COL_VERTEX(3072, -2764, 573),\n    COL_VERTEX(3072, -3071, -40),\n    COL_VERTEX(3379, -3071, -347),\n    COL_VERTEX(5070, -2206, 215),\n    COL_VERTEX(5070, -2206, 317),\n    COL_VERTEX(4967, -2124, 164),\n    COL_VERTEX(5070, -2124, 164),\n    COL_VERTEX(5070, -2124, 369),\n    COL_VERTEX(4967, -2042, 215),\n    COL_VERTEX(4967, -2042, 317),\n    COL_VERTEX(4967, -2124, 369),\n    COL_VERTEX(3839, -2042, 317),\n    COL_VERTEX(5170, -2196, 317),\n    COL_VERTEX(6299, -2278, 164),\n    COL_VERTEX(6401, -2360, 317),\n    COL_VERTEX(6401, -2360, 215),\n    COL_VERTEX(6401, -2278, 164),\n    COL_VERTEX(6401, -2278, 369),\n    COL_VERTEX(6299, -2278, 369),\n    COL_VERTEX(6299, -2196, 317),\n    COL_VERTEX(6299, -2196, 215),\n    COL_VERTEX(6401, -2196, 215),\n    COL_VERTEX(5070, -2298, 215),\n    COL_VERTEX(5070, -2298, 317),\n    COL_VERTEX(2662, -2764, -347),\n    COL_VERTEX(2662, -2764, 881),\n    COL_VERTEX(2048, -2764, -347),\n    COL_VERTEX(2048, -3071, -347),\n    COL_VERTEX(2048, -2764, 881),\n    COL_VERTEX(2662, -3071, 471),\n    COL_VERTEX(3072, -3071, 471),\n    COL_VERTEX(2662, -2764, 471),\n    COL_VERTEX(2662, -2764, 61),\n    COL_VERTEX(3072, -2764, 61),\n    COL_VERTEX(2662, -3071, 61),\n    COL_VERTEX(3128, 3277, -26),\n    COL_VERTEX(0, -2866, -306),\n    COL_VERTEX(0, -2866, 922),\n    COL_VERTEX(0, -3071, 922),\n    COL_VERTEX(-306, -3071, -306),\n    COL_VERTEX(-306, -2866, 307),\n    COL_VERTEX(-921, -3020, 922),\n    COL_VERTEX(-5488, 0, -470),\n    COL_VERTEX(-5570, 0, -470),\n    COL_VERTEX(-5426, 0, -531),\n    COL_VERTEX(-5631, 0, -531),\n    COL_VERTEX(-5426, 0, -613),\n    COL_VERTEX(-5488, 0, -675),\n    COL_VERTEX(-5570, 0, -675),\n    COL_VERTEX(-5631, 0, -613),\n    COL_VERTEX(-5570, 0, 676),\n    COL_VERTEX(-5631, 0, 614),\n    COL_VERTEX(-5488, 0, 676),\n    COL_VERTEX(-5631, 0, 532),\n    COL_VERTEX(-5570, 0, 471),\n    COL_VERTEX(-5488, 0, 471),\n    COL_VERTEX(-5426, 0, 532),\n    COL_VERTEX(-5426, 0, 614),\n    COL_VERTEX(-4607, -3071, -306),\n    COL_VERTEX(-3993, -3071, -306),\n    COL_VERTEX(-4453, -2661, -306),\n    COL_VERTEX(-4607, -3071, -613),\n    COL_VERTEX(-4146, -2661, -613),\n    COL_VERTEX(-7065, -3071, 512),\n    COL_VERTEX(-7065, -2764, -511),\n    COL_VERTEX(-7986, -3071, -511),\n    COL_VERTEX(-7986, -2764, -511),\n    COL_VERTEX(-6041, -2866, 307),\n    COL_VERTEX(-7065, -2764, 307),\n    COL_VERTEX(-7065, -2866, 307),\n    COL_VERTEX(-7065, -3071, -306),\n    COL_VERTEX(-7065, -2764, -306),\n    COL_VERTEX(-6297, 2867, 616),\n    COL_VERTEX(-6297, 2611, 616),\n    COL_VERTEX(-7187, 2765, 564),\n    COL_VERTEX(-7187, 2867, 564),\n    COL_VERTEX(-6297, 2765, 52),\n    COL_VERTEX(-6911, 2867, 52),\n    COL_VERTEX(-4965, 3584, 813),\n    COL_VERTEX(-5017, 3789, 404),\n    COL_VERTEX(-5017, 3789, 761),\n    COL_VERTEX(-5682, 3789, 813),\n    COL_VERTEX(-4965, 3686, -209),\n    COL_VERTEX(-5017, 3789, -209),\n    COL_VERTEX(-5682, 3789, -612),\n    COL_VERTEX(-7372, 3174, -1022),\n    COL_VERTEX(-5017, 3686, -971),\n    COL_VERTEX(-5631, 3686, -971),\n    COL_VERTEX(-7321, 3174, -971),\n    COL_VERTEX(-6911, 3072, -971),\n    COL_VERTEX(-6962, 3174, -663),\n    COL_VERTEX(-6962, 2765, 1),\n    COL_VERTEX(-5682, 3635, -663),\n    COL_VERTEX(-5631, 3635, -663),\n    COL_VERTEX(-5631, 3686, 761),\n    COL_VERTEX(-6911, 3072, -612),\n    COL_VERTEX(-7525, 3072, -612),\n    COL_VERTEX(-460, 717, -306),\n    COL_VERTEX(-1330, 1229, -306),\n    COL_VERTEX(-1330, 1229, -613),\n    COL_VERTEX(-460, 717, -613),\n    COL_VERTEX(-460, 819, -613),\n    COL_VERTEX(-1330, 1331, -306),\n    COL_VERTEX(-1330, 1331, -613),\n    COL_VERTEX(-2354, 1229, -306),\n    COL_VERTEX(-2354, 1331, -306),\n    COL_VERTEX(-665, 819, 0),\n    COL_VERTEX(-665, 819, -306),\n    COL_VERTEX(-665, 717, -306),\n    COL_VERTEX(-1637, 1331, 0),\n    COL_VERTEX(-1637, 1229, -921),\n    COL_VERTEX(-562, 819, 614),\n    COL_VERTEX(-1074, 410, 614),\n    COL_VERTEX(-50, 410, 0),\n    COL_VERTEX(-1433, 205, 0),\n    COL_VERTEX(-1433, 205, 614),\n    COL_VERTEX(205, 410, 0),\n    COL_VERTEX(2765, 5248, -262),\n    COL_VERTEX(2765, 5018, -262),\n    COL_VERTEX(922, 5478, -262),\n    COL_VERTEX(1536, 5248, -262),\n    COL_VERTEX(1536, 5478, -262),\n    COL_VERTEX(922, 5478, -210),\n    COL_VERTEX(1536, 5248, -210),\n    COL_VERTEX(2765, 5018, -210),\n    COL_VERTEX(3994, 5018, -210),\n    COL_VERTEX(922, 5478, 403),\n    COL_VERTEX(3994, 4403, -210),\n    COL_VERTEX(2765, 3789, -210),\n    COL_VERTEX(3379, 3482, -210),\n    COL_VERTEX(1536, 4403, -210),\n    COL_VERTEX(2150, 5248, -210),\n    COL_VERTEX(922, 4403, -210),\n    COL_VERTEX(2150, 3482, -210),\n    COL_VERTEX(2765, 5248, 403),\n    COL_VERTEX(2150, 5248, 403),\n    COL_VERTEX(4260, 3277, -470),\n    COL_VERTEX(4342, 3277, -470),\n    COL_VERTEX(4403, 3277, -531),\n    COL_VERTEX(4198, 3277, -531),\n    COL_VERTEX(4403, 3277, -613),\n    COL_VERTEX(4198, 3277, -613),\n    COL_VERTEX(4342, 3277, -675),\n    COL_VERTEX(4260, 3277, -675),\n    COL_VERTEX(4198, 3277, 614),\n    COL_VERTEX(4260, 3277, 676),\n    COL_VERTEX(4342, 3277, 676),\n    COL_VERTEX(4198, 3277, 532),\n    COL_VERTEX(4260, 3277, 471),\n    COL_VERTEX(4342, 3277, 471),\n    COL_VERTEX(4403, 3277, 532),\n    COL_VERTEX(4403, 3277, 614),\n    COL_VERTEX(1946, 4383, -6),\n    COL_VERTEX(1741, 4403, -6),\n    COL_VERTEX(1536, 4383, 403),\n    COL_VERTEX(1946, 4403, 198),\n    COL_VERTEX(2150, 4383, 382),\n    COL_VERTEX(1536, 4383, 382),\n    COL_VERTEX(2150, 4198, 382),\n    COL_VERTEX(2150, 4403, 403),\n    COL_VERTEX(1536, 4403, 403),\n    COL_VERTEX(4403, 4403, 403),\n    COL_VERTEX(4403, 4250, 403),\n    COL_VERTEX(3994, 4045, -210),\n    COL_VERTEX(1536, 5478, 403),\n    COL_VERTEX(3379, 4403, 403),\n    COL_VERTEX(2765, 3789, 403),\n    COL_VERTEX(2150, 3789, 403),\n    COL_VERTEX(922, 4403, 403),\n    COL_VERTEX(922, 3789, -210),\n    COL_VERTEX(307, 3789, 710),\n    COL_VERTEX(-306, 3789, 710),\n    COL_VERTEX(307, 3789, -518),\n    COL_VERTEX(-306, 3789, -518),\n    COL_VERTEX(5555, 4250, -210),\n    COL_VERTEX(5965, 4255, -187),\n    COL_VERTEX(5555, 4403, 403),\n    COL_VERTEX(5965, 4403, 403),\n    COL_VERTEX(3379, -664, 819),\n    COL_VERTEX(-4484, 3686, 404),\n    COL_VERTEX(-4484, 3686, -209),\n    COL_VERTEX(2662, -2457, -306),\n    COL_VERTEX(2662, -2457, -613),\n    COL_VERTEX(2253, -2457, -613),\n    COL_VERTEX(1843, -2457, -613),\n    COL_VERTEX(1434, -2457, -613),\n    COL_VERTEX(1024, -2149, -1289),\n    COL_VERTEX(1690, -2149, -1289),\n    COL_VERTEX(1690, -2149, -2211),\n    COL_VERTEX(768, -2149, -1289),\n    COL_VERTEX(768, -2149, -2211),\n    COL_VERTEX(2150, 4403, -210),\n    COL_VERTEX(3072, -2457, -306),\n    COL_VERTEX(3072, -2457, -921),\n    COL_VERTEX(1843, -2457, -921),\n    COL_VERTEX(2253, -2457, -306),\n    COL_VERTEX(1024, -2457, -306),\n    COL_VERTEX(1024, -2457, -921),\n    COL_VERTEX(1434, -2457, -921),\n    COL_VERTEX(1434, -2149, -1289),\n    COL_VERTEX(1382, -2149, -1596),\n    COL_VERTEX(1075, -2149, -1596),\n    COL_VERTEX(1382, -2149, -1904),\n    COL_VERTEX(1075, -2149, -1904),\n    COL_TRI_INIT(SURFACE_DEFAULT, 949),\n    COL_TRI(58, 65, 79),\n    COL_TRI(79, 80, 58),\n    COL_TRI(81, 79, 65),\n    COL_TRI(61, 80, 82),\n    COL_TRI(61, 58, 80),\n    COL_TRI(83, 84, 85),\n    COL_TRI(83, 85, 86),\n    COL_TRI(87, 88, 89),\n    COL_TRI(87, 90, 88),\n    COL_TRI(91, 511, 512),\n    COL_TRI(91, 512, 93),\n    COL_TRI(92, 511, 91),\n    COL_TRI(92, 513, 511),\n    COL_TRI(93, 512, 514),\n    COL_TRI(93, 514, 94),\n    COL_TRI(94, 513, 92),\n    COL_TRI(94, 514, 513),\n    COL_TRI(95, 96, 515),\n    COL_TRI(101, 102, 100),\n    COL_TRI(96, 99, 515),\n    COL_TRI(97, 98, 516),\n    COL_TRI(98, 99, 516),\n    COL_TRI(99, 96, 516),\n    COL_TRI(97, 516, 101),\n    COL_TRI(100, 97, 101),\n    COL_TRI(102, 104, 517),\n    COL_TRI(102, 517, 100),\n    COL_TRI(103, 518, 517),\n    COL_TRI(104, 103, 517),\n    COL_TRI(105, 519, 518),\n    COL_TRI(103, 105, 518),\n    COL_TRI(106, 108, 520),\n    COL_TRI(106, 521, 108),\n    COL_TRI(109, 107, 106),\n    COL_TRI(107, 522, 521),\n    COL_TRI(107, 521, 106),\n    COL_TRI(108, 521, 522),\n    COL_TRI(109, 106, 520),\n    COL_TRI(51, 2, 0),\n    COL_TRI(51, 0, 29),\n    COL_TRI(51, 30, 4),\n    COL_TRI(51, 4, 2),\n    COL_TRI(112, 113, 527),\n    COL_TRI(4, 52, 9),\n    COL_TRI(4, 30, 52),\n    COL_TRI(9, 52, 53),\n    COL_TRI(110, 524, 387),\n    COL_TRI(111, 525, 112),\n    COL_TRI(111, 112, 526),\n    COL_TRI(116, 534, 532),\n    COL_TRI(113, 528, 527),\n    COL_TRI(112, 527, 526),\n    COL_TRI(113, 529, 528),\n    COL_TRI(114, 115, 530),\n    COL_TRI(114, 528, 529),\n    COL_TRI(114, 529, 531),\n    COL_TRI(114, 531, 115),\n    COL_TRI(115, 116, 530),\n    COL_TRI(116, 532, 530),\n    COL_TRI(116, 533, 534),\n    COL_TRI(119, 120, 539),\n    COL_TRI(111, 534, 533),\n    COL_TRI(111, 533, 525),\n    COL_TRI(117, 535, 536),\n    COL_TRI(117, 537, 535),\n    COL_TRI(118, 120, 535),\n    COL_TRI(118, 535, 538),\n    COL_TRI(120, 540, 539),\n    COL_TRI(84, 541, 85),\n    COL_TRI(84, 542, 541),\n    COL_TRI(121, 542, 543),\n    COL_TRI(121, 541, 542),\n    COL_TRI(122, 124, 285),\n    COL_TRI(127, 546, 544),\n    COL_TRI(123, 124, 208),\n    COL_TRI(124, 123, 285),\n    COL_TRI(125, 123, 208),\n    COL_TRI(126, 125, 211),\n    COL_TRI(125, 208, 211),\n    COL_TRI(127, 544, 545),\n    COL_TRI(132, 551, 552),\n    COL_TRI(128, 547, 548),\n    COL_TRI(128, 549, 547),\n    COL_TRI(129, 130, 550),\n    COL_TRI(130, 551, 550),\n    COL_TRI(130, 131, 551),\n    COL_TRI(131, 552, 551),\n    COL_TRI(131, 553, 552),\n    COL_TRI(129, 550, 554),\n    COL_TRI(132, 133, 551),\n    COL_TRI(133, 132, 553),\n    COL_TRI(133, 554, 550),\n    COL_TRI(133, 134, 554),\n    COL_TRI(134, 133, 130),\n    COL_TRI(133, 553, 131),\n    COL_TRI(135, 555, 138),\n    COL_TRI(135, 137, 555),\n    COL_TRI(140, 139, 559),\n    COL_TRI(137, 556, 557),\n    COL_TRI(137, 135, 556),\n    COL_TRI(135, 558, 559),\n    COL_TRI(135, 136, 558),\n    COL_TRI(138, 555, 557),\n    COL_TRI(138, 557, 556),\n    COL_TRI(139, 556, 559),\n    COL_TRI(139, 138, 556),\n    COL_TRI(142, 141, 560),\n    COL_TRI(140, 559, 558),\n    COL_TRI(134, 130, 129),\n    COL_TRI(136, 139, 140),\n    COL_TRI(136, 135, 139),\n    COL_TRI(141, 145, 560),\n    COL_TRI(141, 143, 145),\n    COL_TRI(146, 562, 564),\n    COL_TRI(143, 561, 145),\n    COL_TRI(143, 144, 561),\n    COL_TRI(142, 560, 146),\n    COL_TRI(144, 143, 562),\n    COL_TRI(144, 562, 563),\n    COL_TRI(145, 563, 562),\n    COL_TRI(145, 561, 563),\n    COL_TRI(146, 560, 562),\n    COL_TRI(147, 565, 149),\n    COL_TRI(147, 148, 565),\n    COL_TRI(148, 147, 566),\n    COL_TRI(148, 566, 567),\n    COL_TRI(149, 567, 566),\n    COL_TRI(150, 566, 568),\n    COL_TRI(150, 569, 566),\n    COL_TRI(151, 568, 566),\n    COL_TRI(149, 565, 567),\n    COL_TRI(151, 149, 569),\n    COL_TRI(151, 147, 149),\n    COL_TRI(152, 151, 569),\n    COL_TRI(152, 569, 150),\n    COL_TRI(142, 564, 562),\n    COL_TRI(141, 142, 562),\n    COL_TRI(151, 152, 568),\n    COL_TRI(136, 140, 558),\n    COL_TRI(153, 156, 570),\n    COL_TRI(152, 150, 568),\n    COL_TRI(153, 570, 155),\n    COL_TRI(154, 155, 570),\n    COL_TRI(155, 154, 571),\n    COL_TRI(155, 571, 153),\n    COL_TRI(154, 570, 156),\n    COL_TRI(156, 571, 154),\n    COL_TRI(153, 571, 156),\n    COL_TRI(142, 146, 564),\n    COL_TRI(157, 161, 159),\n    COL_TRI(158, 159, 161),\n    COL_TRI(159, 160, 157),\n    COL_TRI(158, 160, 159),\n    COL_TRI(160, 158, 572),\n    COL_TRI(160, 572, 157),\n    COL_TRI(161, 572, 158),\n    COL_TRI(157, 572, 161),\n    COL_TRI(165, 164, 576),\n    COL_TRI(134, 129, 554),\n    COL_TRI(162, 573, 165),\n    COL_TRI(163, 573, 162),\n    COL_TRI(163, 574, 573),\n    COL_TRI(164, 574, 163),\n    COL_TRI(164, 575, 574),\n    COL_TRI(165, 575, 164),\n    COL_TRI(162, 165, 576),\n    COL_TRI(166, 577, 169),\n    COL_TRI(166, 169, 578),\n    COL_TRI(167, 577, 166),\n    COL_TRI(167, 166, 168),\n    COL_TRI(168, 166, 578),\n    COL_TRI(169, 577, 167),\n    COL_TRI(170, 169, 167),\n    COL_TRI(171, 578, 169),\n    COL_TRI(171, 169, 170),\n    COL_TRI(168, 578, 171),\n    COL_TRI(172, 174, 173),\n    COL_TRI(173, 174, 579),\n    COL_TRI(172, 580, 174),\n    COL_TRI(174, 580, 175),\n    COL_TRI(174, 175, 579),\n    COL_TRI(175, 580, 172),\n    COL_TRI(176, 175, 172),\n    COL_TRI(177, 579, 175),\n    COL_TRI(177, 175, 176),\n    COL_TRI(173, 579, 177),\n    COL_TRI(178, 180, 179),\n    COL_TRI(179, 180, 581),\n    COL_TRI(179, 581, 181),\n    COL_TRI(180, 582, 182),\n    COL_TRI(180, 182, 581),\n    COL_TRI(178, 582, 180),\n    COL_TRI(181, 581, 182),\n    COL_TRI(182, 582, 178),\n    COL_TRI(187, 587, 186),\n    COL_TRI(181, 182, 183),\n    COL_TRI(183, 182, 178),\n    COL_TRI(184, 583, 584),\n    COL_TRI(184, 584, 585),\n    COL_TRI(185, 584, 586),\n    COL_TRI(186, 189, 187),\n    COL_TRI(191, 591, 590),\n    COL_TRI(188, 189, 186),\n    COL_TRI(186, 204, 588),\n    COL_TRI(186, 589, 189),\n    COL_TRI(186, 204, 589),\n    COL_TRI(189, 188, 223),\n    COL_TRI(189, 223, 187),\n    COL_TRI(190, 588, 204),\n    COL_TRI(191, 590, 583),\n    COL_TRI(197, 196, 595),\n    COL_TRI(192, 185, 586),\n    COL_TRI(193, 200, 592),\n    COL_TRI(193, 203, 200),\n    COL_TRI(194, 193, 197),\n    COL_TRI(194, 203, 193),\n    COL_TRI(195, 194, 594),\n    COL_TRI(194, 595, 594),\n    COL_TRI(196, 198, 595),\n    COL_TRI(199, 190, 197),\n    COL_TRI(190, 199, 588),\n    COL_TRI(190, 592, 200),\n    COL_TRI(200, 195, 190),\n    COL_TRI(201, 202, 200),\n    COL_TRI(202, 195, 200),\n    COL_TRI(203, 201, 200),\n    COL_TRI(195, 202, 596),\n    COL_TRI(195, 596, 194),\n    COL_TRI(190, 594, 589),\n    COL_TRI(204, 190, 589),\n    COL_TRI(125, 126, 194),\n    COL_TRI(125, 194, 598),\n    COL_TRI(205, 195, 194),\n    COL_TRI(205, 194, 126),\n    COL_TRI(123, 125, 598),\n    COL_TRI(195, 205, 599),\n    COL_TRI(195, 599, 210),\n    COL_TRI(285, 207, 209),\n    COL_TRI(206, 123, 210),\n    COL_TRI(123, 598, 210),\n    COL_TRI(123, 207, 285),\n    COL_TRI(206, 207, 123),\n    COL_TRI(207, 206, 209),\n    COL_TRI(208, 124, 64),\n    COL_TRI(208, 64, 67),\n    COL_TRI(68, 64, 124),\n    COL_TRI(80, 79, 206),\n    COL_TRI(80, 206, 599),\n    COL_TRI(209, 206, 79),\n    COL_TRI(209, 79, 81),\n    COL_TRI(210, 599, 206),\n    COL_TRI(82, 80, 599),\n    COL_TRI(82, 599, 205),\n    COL_TRI(82, 211, 62),\n    COL_TRI(67, 62, 211),\n    COL_TRI(67, 211, 208),\n    COL_TRI(82, 62, 61),\n    COL_TRI(126, 211, 82),\n    COL_TRI(126, 82, 205),\n    COL_TRI(194, 596, 597),\n    COL_TRI(194, 597, 203),\n    COL_TRI(203, 597, 201),\n    COL_TRI(212, 600, 214),\n    COL_TRI(212, 214, 601),\n    COL_TRI(213, 600, 212),\n    COL_TRI(213, 212, 602),\n    COL_TRI(214, 603, 601),\n    COL_TRI(214, 604, 603),\n    COL_TRI(213, 602, 603),\n    COL_TRI(213, 603, 604),\n    COL_TRI(215, 220, 221),\n    COL_TRI(216, 215, 221),\n    COL_TRI(217, 218, 215),\n    COL_TRI(216, 217, 215),\n    COL_TRI(218, 219, 215),\n    COL_TRI(219, 220, 215),\n    COL_TRI(220, 605, 588),\n    COL_TRI(221, 220, 588),\n    COL_TRI(220, 606, 607),\n    COL_TRI(220, 607, 605),\n    COL_TRI(217, 588, 605),\n    COL_TRI(218, 217, 605),\n    COL_TRI(188, 186, 217),\n    COL_TRI(222, 221, 588),\n    COL_TRI(216, 223, 217),\n    COL_TRI(218, 608, 219),\n    COL_TRI(218, 605, 607),\n    COL_TRI(218, 607, 608),\n    COL_TRI(186, 588, 217),\n    COL_TRI(223, 188, 217),\n    COL_TRI(199, 222, 588),\n    COL_TRI(199, 197, 222),\n    COL_TRI(216, 221, 593),\n    COL_TRI(216, 593, 223),\n    COL_TRI(223, 198, 187),\n    COL_TRI(223, 593, 198),\n    COL_TRI(187, 198, 196),\n    COL_TRI(198, 593, 595),\n    COL_TRI(228, 610, 612),\n    COL_TRI(187, 196, 587),\n    COL_TRI(224, 609, 610),\n    COL_TRI(224, 610, 228),\n    COL_TRI(225, 609, 224),\n    COL_TRI(226, 225, 224),\n    COL_TRI(226, 224, 227),\n    COL_TRI(227, 224, 228),\n    COL_TRI(225, 611, 609),\n    COL_TRI(228, 612, 230),\n    COL_TRI(227, 228, 229),\n    COL_TRI(229, 228, 230),\n    COL_TRI(230, 611, 225),\n    COL_TRI(231, 230, 225),\n    COL_TRI(231, 225, 226),\n    COL_TRI(230, 612, 611),\n    COL_TRI(229, 230, 231),\n    COL_TRI(232, 613, 614),\n    COL_TRI(232, 615, 613),\n    COL_TRI(233, 616, 232),\n    COL_TRI(233, 232, 614),\n    COL_TRI(234, 613, 615),\n    COL_TRI(234, 615, 618),\n    COL_TRI(235, 618, 619),\n    COL_TRI(235, 234, 618),\n    COL_TRI(235, 236, 620),\n    COL_TRI(235, 619, 236),\n    COL_TRI(236, 621, 620),\n    COL_TRI(236, 622, 621),\n    COL_TRI(233, 617, 616),\n    COL_TRI(233, 237, 617),\n    COL_TRI(241, 628, 629),\n    COL_TRI(237, 623, 617),\n    COL_TRI(237, 624, 623),\n    COL_TRI(238, 624, 625),\n    COL_TRI(238, 623, 624),\n    COL_TRI(238, 239, 626),\n    COL_TRI(238, 625, 239),\n    COL_TRI(239, 627, 626),\n    COL_TRI(239, 240, 627),\n    COL_TRI(240, 622, 627),\n    COL_TRI(240, 621, 622),\n    COL_TRI(241, 629, 242),\n    COL_TRI(241, 631, 628),\n    COL_TRI(242, 629, 632),\n    COL_TRI(242, 633, 630),\n    COL_TRI(242, 634, 633),\n    COL_TRI(242, 630, 241),\n    COL_TRI(242, 635, 634),\n    COL_TRI(243, 271, 633),\n    COL_TRI(241, 630, 631),\n    COL_TRI(243, 633, 634),\n    COL_TRI(243, 631, 271),\n    COL_TRI(243, 632, 629),\n    COL_TRI(243, 629, 628),\n    COL_TRI(243, 628, 631),\n    COL_TRI(242, 632, 635),\n    COL_TRI(244, 247, 636),\n    COL_TRI(244, 252, 248),\n    COL_TRI(245, 246, 248),\n    COL_TRI(246, 247, 248),\n    COL_TRI(247, 244, 248),\n    COL_TRI(248, 250, 245),\n    COL_TRI(248, 251, 250),\n    COL_TRI(249, 251, 248),\n    COL_TRI(250, 253, 245),\n    COL_TRI(253, 246, 245),\n    COL_TRI(247, 254, 636),\n    COL_TRI(250, 251, 636),\n    COL_TRI(251, 249, 636),\n    COL_TRI(252, 249, 248),\n    COL_TRI(253, 250, 636),\n    COL_TRI(254, 253, 636),\n    COL_TRI(259, 265, 637),\n    COL_TRI(255, 262, 261),\n    COL_TRI(255, 261, 256),\n    COL_TRI(256, 258, 255),\n    COL_TRI(257, 263, 255),\n    COL_TRI(258, 259, 255),\n    COL_TRI(259, 257, 255),\n    COL_TRI(260, 262, 255),\n    COL_TRI(261, 264, 256),\n    COL_TRI(264, 258, 256),\n    COL_TRI(257, 259, 637),\n    COL_TRI(261, 262, 637),\n    COL_TRI(262, 260, 637),\n    COL_TRI(263, 260, 255),\n    COL_TRI(264, 261, 637),\n    COL_TRI(265, 264, 637),\n    COL_TRI(268, 645, 644),\n    COL_TRI(266, 638, 267),\n    COL_TRI(267, 639, 266),\n    COL_TRI(267, 640, 639),\n    COL_TRI(267, 641, 640),\n    COL_TRI(266, 639, 642),\n    COL_TRI(266, 643, 644),\n    COL_TRI(266, 645, 638),\n    COL_TRI(266, 644, 645),\n    COL_TRI(267, 638, 641),\n    COL_TRI(268, 646, 645),\n    COL_TRI(268, 639, 640),\n    COL_TRI(268, 640, 641),\n    COL_TRI(268, 641, 646),\n    COL_TRI(268, 642, 639),\n    COL_TRI(266, 642, 643),\n    COL_TRI(269, 272, 273),\n    COL_TRI(269, 273, 270),\n    COL_TRI(270, 647, 269),\n    COL_TRI(269, 647, 271),\n    COL_TRI(269, 271, 272),\n    COL_TRI(271, 647, 648),\n    COL_TRI(270, 648, 647),\n    COL_TRI(271, 648, 243),\n    COL_TRI(272, 271, 243),\n    COL_TRI(272, 243, 273),\n    COL_TRI(273, 648, 270),\n    COL_TRI(273, 243, 648),\n    COL_TRI(274, 649, 650),\n    COL_TRI(274, 650, 276),\n    COL_TRI(274, 651, 649),\n    COL_TRI(274, 652, 651),\n    COL_TRI(275, 651, 652),\n    COL_TRI(275, 653, 651),\n    COL_TRI(276, 650, 653),\n    COL_TRI(276, 653, 275),\n    COL_TRI(277, 654, 655),\n    COL_TRI(277, 656, 654),\n    COL_TRI(278, 657, 658),\n    COL_TRI(278, 659, 657),\n    COL_TRI(279, 281, 280),\n    COL_TRI(280, 281, 284),\n    COL_TRI(281, 282, 284),\n    COL_TRI(282, 281, 279),\n    COL_TRI(283, 466, 74),\n    COL_TRI(283, 74, 71),\n    COL_TRI(283, 71, 72),\n    COL_TRI(283, 72, 481),\n    COL_TRI(72, 468, 481),\n    COL_TRI(72, 73, 468),\n    COL_TRI(284, 283, 481),\n    COL_TRI(284, 466, 283),\n    COL_TRI(284, 481, 280),\n    COL_TRI(81, 65, 70),\n    COL_TRI(81, 70, 68),\n    COL_TRI(81, 68, 122),\n    COL_TRI(68, 124, 122),\n    COL_TRI(209, 81, 122),\n    COL_TRI(209, 122, 285),\n    COL_TRI(286, 661, 662),\n    COL_TRI(286, 662, 663),\n    COL_TRI(287, 661, 286),\n    COL_TRI(288, 663, 662),\n    COL_TRI(289, 665, 287),\n    COL_TRI(287, 286, 664),\n    COL_TRI(289, 287, 664),\n    COL_TRI(290, 291, 666),\n    COL_TRI(291, 288, 666),\n    COL_TRI(289, 291, 290),\n    COL_TRI(289, 290, 665),\n    COL_TRI(295, 452, 450),\n    COL_TRI(288, 662, 666),\n    COL_TRI(292, 449, 451),\n    COL_TRI(292, 451, 294),\n    COL_TRI(293, 449, 292),\n    COL_TRI(293, 450, 449),\n    COL_TRI(294, 451, 456),\n    COL_TRI(294, 456, 299),\n    COL_TRI(295, 450, 293),\n    COL_TRI(301, 457, 300),\n    COL_TRI(296, 452, 295),\n    COL_TRI(296, 453, 452),\n    COL_TRI(297, 453, 296),\n    COL_TRI(297, 454, 453),\n    COL_TRI(298, 454, 297),\n    COL_TRI(298, 455, 454),\n    COL_TRI(299, 455, 298),\n    COL_TRI(299, 456, 455),\n    COL_TRI(300, 457, 459),\n    COL_TRI(300, 459, 302),\n    COL_TRI(305, 463, 306),\n    COL_TRI(301, 458, 457),\n    COL_TRI(302, 459, 460),\n    COL_TRI(302, 460, 303),\n    COL_TRI(303, 460, 461),\n    COL_TRI(303, 461, 304),\n    COL_TRI(304, 461, 462),\n    COL_TRI(304, 462, 305),\n    COL_TRI(305, 462, 463),\n    COL_TRI(310, 334, 315),\n    COL_TRI(306, 463, 464),\n    COL_TRI(306, 464, 307),\n    COL_TRI(307, 464, 458),\n    COL_TRI(307, 458, 301),\n    COL_TRI(308, 332, 310),\n    COL_TRI(308, 333, 332),\n    COL_TRI(309, 333, 308),\n    COL_TRI(310, 332, 334),\n    COL_TRI(315, 334, 335),\n    COL_TRI(309, 339, 333),\n    COL_TRI(311, 339, 309),\n    COL_TRI(311, 338, 339),\n    COL_TRI(312, 338, 311),\n    COL_TRI(312, 337, 338),\n    COL_TRI(313, 337, 312),\n    COL_TRI(313, 336, 337),\n    COL_TRI(314, 336, 313),\n    COL_TRI(314, 335, 336),\n    COL_TRI(315, 335, 314),\n    COL_TRI(321, 328, 327),\n    COL_TRI(316, 326, 317),\n    COL_TRI(317, 331, 318),\n    COL_TRI(317, 326, 331),\n    COL_TRI(318, 331, 330),\n    COL_TRI(318, 330, 319),\n    COL_TRI(316, 324, 326),\n    COL_TRI(319, 330, 329),\n    COL_TRI(319, 329, 320),\n    COL_TRI(320, 329, 328),\n    COL_TRI(320, 328, 321),\n    COL_TRI(325, 669, 667),\n    COL_TRI(321, 327, 322),\n    COL_TRI(322, 327, 325),\n    COL_TRI(322, 325, 323),\n    COL_TRI(323, 325, 324),\n    COL_TRI(323, 324, 316),\n    COL_TRI(324, 667, 668),\n    COL_TRI(324, 668, 326),\n    COL_TRI(325, 667, 324),\n    COL_TRI(330, 673, 329),\n    COL_TRI(326, 668, 670),\n    COL_TRI(326, 670, 331),\n    COL_TRI(327, 669, 325),\n    COL_TRI(327, 671, 669),\n    COL_TRI(328, 671, 327),\n    COL_TRI(328, 672, 671),\n    COL_TRI(329, 672, 328),\n    COL_TRI(329, 673, 672),\n    COL_TRI(334, 678, 335),\n    COL_TRI(330, 674, 673),\n    COL_TRI(331, 674, 330),\n    COL_TRI(331, 670, 674),\n    COL_TRI(332, 675, 676),\n    COL_TRI(333, 675, 332),\n    COL_TRI(332, 676, 334),\n    COL_TRI(333, 677, 675),\n    COL_TRI(334, 676, 678),\n    COL_TRI(108, 522, 523),\n    COL_TRI(335, 678, 679),\n    COL_TRI(335, 679, 336),\n    COL_TRI(336, 679, 680),\n    COL_TRI(336, 680, 337),\n    COL_TRI(337, 680, 681),\n    COL_TRI(337, 681, 338),\n    COL_TRI(338, 681, 682),\n    COL_TRI(338, 682, 339),\n    COL_TRI(339, 682, 677),\n    COL_TRI(339, 677, 333),\n    COL_TRI(343, 344, 346),\n    COL_TRI(340, 683, 684),\n    COL_TRI(340, 685, 683),\n    COL_TRI(341, 683, 685),\n    COL_TRI(341, 686, 683),\n    COL_TRI(342, 340, 684),\n    COL_TRI(342, 687, 340),\n    COL_TRI(341, 687, 342),\n    COL_TRI(341, 342, 686),\n    COL_TRI(349, 347, 694),\n    COL_TRI(344, 688, 345),\n    COL_TRI(344, 345, 689),\n    COL_TRI(343, 688, 344),\n    COL_TRI(345, 690, 691),\n    COL_TRI(345, 691, 689),\n    COL_TRI(346, 691, 690),\n    COL_TRI(346, 690, 343),\n    COL_TRI(347, 349, 348),\n    COL_TRI(348, 692, 347),\n    COL_TRI(347, 693, 694),\n    COL_TRI(350, 352, 351),\n    COL_TRI(351, 352, 695),\n    COL_TRI(352, 350, 692),\n    COL_TRI(352, 692, 348),\n    COL_TRI(353, 351, 695),\n    COL_TRI(351, 353, 696),\n    COL_TRI(354, 697, 698),\n    COL_TRI(354, 698, 355),\n    COL_TRI(355, 699, 700),\n    COL_TRI(355, 700, 354),\n    COL_TRI(356, 701, 355),\n    COL_TRI(356, 355, 698),\n    COL_TRI(357, 356, 698),\n    COL_TRI(358, 701, 356),\n    COL_TRI(359, 399, 701),\n    COL_TRI(358, 359, 701),\n    COL_TRI(357, 698, 360),\n    COL_TRI(360, 698, 697),\n    COL_TRI(361, 358, 356),\n    COL_TRI(361, 359, 358),\n    COL_TRI(361, 702, 359),\n    COL_TRI(362, 363, 377),\n    COL_TRI(362, 377, 703),\n    COL_TRI(363, 704, 705),\n    COL_TRI(363, 705, 377),\n    COL_TRI(364, 703, 377),\n    COL_TRI(365, 703, 364),\n    COL_TRI(365, 366, 703),\n    COL_TRI(371, 708, 406),\n    COL_TRI(366, 406, 367),\n    COL_TRI(367, 368, 362),\n    COL_TRI(367, 707, 368),\n    COL_TRI(368, 369, 704),\n    COL_TRI(368, 704, 363),\n    COL_TRI(369, 368, 707),\n    COL_TRI(366, 370, 406),\n    COL_TRI(370, 371, 406),\n    COL_TRI(372, 374, 365),\n    COL_TRI(372, 365, 373),\n    COL_TRI(365, 376, 375),\n    COL_TRI(373, 365, 375),\n    COL_TRI(374, 366, 365),\n    COL_TRI(375, 376, 709),\n    COL_TRI(376, 364, 706),\n    COL_TRI(376, 706, 709),\n    COL_TRI(364, 377, 706),\n    COL_TRI(377, 404, 706),\n    COL_TRI(375, 709, 394),\n    COL_TRI(360, 378, 357),\n    COL_TRI(378, 380, 357),\n    COL_TRI(357, 380, 379),\n    COL_TRI(360, 384, 378),\n    COL_TRI(360, 697, 384),\n    COL_TRI(361, 356, 379),\n    COL_TRI(375, 394, 361),\n    COL_TRI(379, 375, 361),\n    COL_TRI(380, 375, 379),\n    COL_TRI(380, 381, 373),\n    COL_TRI(374, 390, 371),\n    COL_TRI(374, 371, 370),\n    COL_TRI(374, 370, 366),\n    COL_TRI(380, 373, 375),\n    COL_TRI(381, 710, 372),\n    COL_TRI(381, 372, 373),\n    COL_TRI(385, 700, 699),\n    COL_TRI(382, 381, 380),\n    COL_TRI(382, 710, 381),\n    COL_TRI(378, 382, 380),\n    COL_TRI(383, 378, 384),\n    COL_TRI(384, 700, 383),\n    COL_TRI(384, 697, 354),\n    COL_TRI(384, 354, 700),\n    COL_TRI(385, 383, 700),\n    COL_TRI(389, 387, 392),\n    COL_TRI(386, 378, 383),\n    COL_TRI(386, 382, 378),\n    COL_TRI(387, 386, 383),\n    COL_TRI(387, 383, 385),\n    COL_TRI(382, 386, 713),\n    COL_TRI(382, 713, 710),\n    COL_TRI(388, 713, 391),\n    COL_TRI(389, 392, 713),\n    COL_TRI(390, 712, 711),\n    COL_TRI(388, 391, 372),\n    COL_TRI(374, 372, 391),\n    COL_TRI(390, 374, 391),\n    COL_TRI(391, 714, 712),\n    COL_TRI(391, 712, 390),\n    COL_TRI(392, 714, 391),\n    COL_TRI(392, 391, 713),\n    COL_TRI(390, 711, 371),\n    COL_TRI(395, 715, 398),\n    COL_TRI(393, 708, 371),\n    COL_TRI(394, 709, 400),\n    COL_TRI(395, 394, 400),\n    COL_TRI(396, 394, 398),\n    COL_TRI(396, 361, 394),\n    COL_TRI(395, 398, 394),\n    COL_TRI(397, 361, 396),\n    COL_TRI(359, 397, 399),\n    COL_TRI(397, 702, 361),\n    COL_TRI(110, 398, 715),\n    COL_TRI(398, 716, 396),\n    COL_TRI(398, 110, 716),\n    COL_TRI(110, 715, 524),\n    COL_TRI(399, 396, 716),\n    COL_TRI(399, 397, 396),\n    COL_TRI(400, 717, 402),\n    COL_TRI(400, 402, 395),\n    COL_TRI(401, 400, 706),\n    COL_TRI(400, 718, 717),\n    COL_TRI(402, 715, 395),\n    COL_TRI(402, 524, 715),\n    COL_TRI(400, 401, 718),\n    COL_TRI(401, 706, 404),\n    COL_TRI(377, 705, 404),\n    COL_TRI(403, 704, 369),\n    COL_TRI(403, 705, 704),\n    COL_TRI(404, 705, 403),\n    COL_TRI(393, 371, 711),\n    COL_TRI(404, 403, 719),\n    COL_TRI(405, 401, 404),\n    COL_TRI(405, 404, 719),\n    COL_TRI(406, 708, 393),\n    COL_TRI(406, 393, 707),\n    COL_TRI(369, 707, 393),\n    COL_TRI(394, 110, 720),\n    COL_TRI(394, 398, 110),\n    COL_TRI(408, 725, 722),\n    COL_TRI(386, 721, 387),\n    COL_TRI(386, 382, 721),\n    COL_TRI(407, 410, 409),\n    COL_TRI(407, 722, 410),\n    COL_TRI(408, 722, 407),\n    COL_TRI(409, 723, 407),\n    COL_TRI(407, 724, 408),\n    COL_TRI(407, 723, 724),\n    COL_TRI(410, 725, 726),\n    COL_TRI(410, 722, 725),\n    COL_TRI(414, 731, 427),\n    COL_TRI(409, 727, 723),\n    COL_TRI(411, 725, 408),\n    COL_TRI(411, 726, 725),\n    COL_TRI(412, 729, 730),\n    COL_TRI(412, 421, 729),\n    COL_TRI(413, 414, 427),\n    COL_TRI(414, 732, 731),\n    COL_TRI(413, 427, 417),\n    COL_TRI(415, 732, 733),\n    COL_TRI(415, 731, 732),\n    COL_TRI(408, 728, 411),\n    COL_TRI(408, 724, 728),\n    COL_TRI(418, 416, 734),\n    COL_TRI(416, 723, 727),\n    COL_TRI(417, 733, 413),\n    COL_TRI(417, 415, 733),\n    COL_TRI(418, 734, 419),\n    COL_TRI(419, 729, 418),\n    COL_TRI(419, 730, 729),\n    COL_TRI(418, 420, 735),\n    COL_TRI(418, 723, 416),\n    COL_TRI(416, 727, 734),\n    COL_TRI(420, 421, 422),\n    COL_TRI(421, 412, 422),\n    COL_TRI(422, 423, 735),\n    COL_TRI(422, 735, 420),\n    COL_TRI(423, 724, 735),\n    COL_TRI(423, 728, 724),\n    COL_TRI(418, 735, 724),\n    COL_TRI(418, 421, 420),\n    COL_TRI(418, 724, 723),\n    COL_TRI(418, 729, 421),\n    COL_TRI(424, 736, 425),\n    COL_TRI(424, 425, 737),\n    COL_TRI(425, 426, 737),\n    COL_TRI(425, 731, 426),\n    COL_TRI(425, 736, 427),\n    COL_TRI(427, 736, 424),\n    COL_TRI(426, 731, 427),\n    COL_TRI(426, 427, 738),\n    COL_TRI(427, 424, 738),\n    COL_TRI(428, 739, 740),\n    COL_TRI(428, 740, 430),\n    COL_TRI(429, 428, 741),\n    COL_TRI(433, 742, 743),\n    COL_TRI(430, 740, 431),\n    COL_TRI(431, 432, 430),\n    COL_TRI(429, 739, 428),\n    COL_TRI(432, 429, 741),\n    COL_TRI(432, 431, 429),\n    COL_TRI(425, 427, 731),\n    COL_TRI(437, 743, 749),\n    COL_TRI(433, 743, 437),\n    COL_TRI(434, 744, 433),\n    COL_TRI(433, 745, 742),\n    COL_TRI(433, 744, 746),\n    COL_TRI(434, 747, 744),\n    COL_TRI(433, 746, 745),\n    COL_TRI(435, 745, 746),\n    COL_TRI(435, 748, 745),\n    COL_TRI(436, 743, 742),\n    COL_TRI(436, 749, 743),\n    COL_TRI(433, 437, 438),\n    COL_TRI(438, 437, 750),\n    COL_TRI(438, 750, 492),\n    COL_TRI(439, 751, 747),\n    COL_TRI(439, 747, 445),\n    COL_TRI(440, 750, 749),\n    COL_TRI(440, 752, 750),\n    COL_TRI(441, 447, 443),\n    COL_TRI(441, 440, 447),\n    COL_TRI(440, 749, 447),\n    COL_TRI(443, 499, 441),\n    COL_TRI(443, 755, 499),\n    COL_TRI(443, 445, 755),\n    COL_TRI(443, 488, 445),\n    COL_TRI(443, 748, 488),\n    COL_TRI(443, 756, 748),\n    COL_TRI(444, 499, 498),\n    COL_TRI(445, 757, 755),\n    COL_TRI(446, 748, 756),\n    COL_TRI(446, 745, 748),\n    COL_TRI(442, 441, 753),\n    COL_TRI(442, 754, 441),\n    COL_TRI(444, 498, 758),\n    COL_TRI(447, 436, 759),\n    COL_TRI(448, 756, 443),\n    COL_TRI(448, 760, 756),\n    COL_TRI(452, 765, 763),\n    COL_TRI(437, 749, 750),\n    COL_TRI(449, 761, 451),\n    COL_TRI(450, 762, 449),\n    COL_TRI(449, 762, 761),\n    COL_TRI(450, 763, 762),\n    COL_TRI(451, 761, 764),\n    COL_TRI(451, 764, 456),\n    COL_TRI(452, 763, 450),\n    COL_TRI(458, 770, 457),\n    COL_TRI(453, 765, 452),\n    COL_TRI(453, 767, 765),\n    COL_TRI(454, 767, 453),\n    COL_TRI(454, 768, 767),\n    COL_TRI(455, 768, 454),\n    COL_TRI(455, 766, 768),\n    COL_TRI(456, 766, 455),\n    COL_TRI(456, 764, 766),\n    COL_TRI(457, 769, 459),\n    COL_TRI(457, 770, 769),\n    COL_TRI(462, 775, 463),\n    COL_TRI(458, 771, 770),\n    COL_TRI(459, 769, 772),\n    COL_TRI(459, 772, 460),\n    COL_TRI(460, 772, 773),\n    COL_TRI(460, 773, 461),\n    COL_TRI(461, 773, 774),\n    COL_TRI(461, 774, 462),\n    COL_TRI(462, 774, 775),\n    COL_TRI(284, 282, 466),\n    COL_TRI(463, 775, 776),\n    COL_TRI(463, 776, 464),\n    COL_TRI(464, 776, 771),\n    COL_TRI(464, 771, 458),\n    COL_TRI(78, 74, 465),\n    COL_TRI(74, 466, 465),\n    COL_TRI(465, 466, 469),\n    COL_TRI(466, 282, 469),\n    COL_TRI(467, 468, 76),\n    COL_TRI(468, 73, 76),\n    COL_TRI(279, 660, 282),\n    COL_TRI(469, 282, 660),\n    COL_TRI(470, 660, 279),\n    COL_TRI(469, 660, 470),\n    COL_TRI(472, 777, 471),\n    COL_TRI(467, 76, 465),\n    COL_TRI(76, 78, 465),\n    COL_TRI(467, 465, 469),\n    COL_TRI(470, 467, 469),\n    COL_TRI(471, 473, 474),\n    COL_TRI(471, 777, 473),\n    COL_TRI(479, 783, 781),\n    COL_TRI(473, 478, 477),\n    COL_TRI(473, 778, 478),\n    COL_TRI(474, 473, 477),\n    COL_TRI(475, 473, 777),\n    COL_TRI(475, 778, 473),\n    COL_TRI(474, 477, 779),\n    COL_TRI(476, 475, 777),\n    COL_TRI(472, 476, 777),\n    COL_TRI(477, 476, 472),\n    COL_TRI(477, 472, 779),\n    COL_TRI(476, 780, 475),\n    COL_TRI(478, 476, 477),\n    COL_TRI(478, 780, 476),\n    COL_TRI(479, 781, 782),\n    COL_TRI(482, 439, 488),\n    COL_TRI(448, 479, 783),\n    COL_TRI(448, 480, 479),\n    COL_TRI(480, 448, 784),\n    COL_TRI(480, 784, 785),\n    COL_TRI(470, 279, 468),\n    COL_TRI(470, 468, 467),\n    COL_TRI(481, 468, 280),\n    COL_TRI(468, 279, 280),\n    COL_TRI(485, 788, 484),\n    COL_TRI(439, 445, 488),\n    COL_TRI(483, 448, 447),\n    COL_TRI(448, 443, 447),\n    COL_TRI(484, 786, 787),\n    COL_TRI(484, 487, 786),\n    COL_TRI(485, 484, 787),\n    COL_TRI(486, 787, 786),\n    COL_TRI(486, 485, 787),\n    COL_TRI(487, 788, 752),\n    COL_TRI(487, 484, 788),\n    COL_TRI(482, 751, 439),\n    COL_TRI(482, 789, 751),\n    COL_TRI(488, 435, 789),\n    COL_TRI(488, 789, 482),\n    COL_TRI(495, 791, 792),\n    COL_TRI(489, 486, 790),\n    COL_TRI(489, 790, 493),\n    COL_TRI(490, 486, 489),\n    COL_TRI(491, 489, 493),\n    COL_TRI(492, 490, 489),\n    COL_TRI(492, 489, 491),\n    COL_TRI(490, 752, 486),\n    COL_TRI(493, 790, 440),\n    COL_TRI(491, 493, 494),\n    COL_TRI(493, 440, 441),\n    COL_TRI(494, 493, 441),\n    COL_TRI(494, 441, 754),\n    COL_TRI(495, 792, 496),\n    COL_TRI(442, 791, 495),\n    COL_TRI(442, 753, 791),\n    COL_TRI(496, 792, 444),\n    COL_TRI(496, 444, 758),\n    COL_TRI(483, 760, 448),\n    COL_TRI(483, 759, 760),\n    COL_TRI(447, 759, 483),\n    COL_TRI(503, 795, 796),\n    COL_TRI(497, 500, 501),\n    COL_TRI(498, 499, 500),\n    COL_TRI(498, 500, 497),\n    COL_TRI(499, 785, 500),\n    COL_TRI(500, 785, 793),\n    COL_TRI(500, 793, 501),\n    COL_TRI(499, 755, 785),\n    COL_TRI(501, 793, 757),\n    COL_TRI(497, 501, 502),\n    COL_TRI(501, 757, 794),\n    COL_TRI(502, 501, 794),\n    COL_TRI(502, 794, 434),\n    COL_TRI(503, 796, 505),\n    COL_TRI(504, 795, 503),\n    COL_TRI(504, 797, 795),\n    COL_TRI(505, 796, 798),\n    COL_TRI(505, 798, 506),\n    COL_TRI(506, 797, 504),\n    COL_TRI(506, 798, 797),\n    COL_TRI(9, 53, 11),\n    COL_TRI(11, 53, 31),\n    COL_TRI(11, 31, 13),\n    COL_TRI(13, 31, 32),\n    COL_TRI(13, 32, 35),\n    COL_TRI(33, 29, 0),\n    COL_TRI(33, 0, 34),\n    COL_TRI(507, 510, 799),\n    COL_TRI(507, 799, 800),\n    COL_TRI(508, 509, 799),\n    COL_TRI(509, 800, 799),\n    COL_TRI(510, 507, 801),\n    COL_TRI(507, 802, 801),\n    COL_TRI(508, 510, 801),\n    COL_TRI(508, 799, 510),\n    COL_TRI_INIT(SURFACE_BURNING, 24),\n    COL_TRI(54, 55, 56),\n    COL_TRI(54, 57, 55),\n    COL_TRI(58, 59, 60),\n    COL_TRI(58, 61, 59),\n    COL_TRI(62, 59, 61),\n    COL_TRI(62, 63, 59),\n    COL_TRI(60, 64, 65),\n    COL_TRI(58, 60, 65),\n    COL_TRI(60, 66, 64),\n    COL_TRI(66, 63, 62),\n    COL_TRI(66, 67, 64),\n    COL_TRI(66, 62, 67),\n    COL_TRI(68, 69, 64),\n    COL_TRI(64, 69, 65),\n    COL_TRI(70, 65, 69),\n    COL_TRI(71, 77, 72),\n    COL_TRI(71, 74, 77),\n    COL_TRI(70, 69, 68),\n    COL_TRI(72, 77, 73),\n    COL_TRI(73, 77, 74),\n    COL_TRI(74, 75, 73),\n    COL_TRI(73, 75, 76),\n    COL_TRI(75, 74, 78),\n    COL_TRI(76, 75, 78),\n    COL_TRI_INIT(SURFACE_HANGABLE, 6),\n    COL_TRI(545, 549, 127),\n    COL_TRI(545, 547, 549),\n    COL_TRI(198, 589, 595),\n    COL_TRI(589, 594, 595),\n    COL_TRI(198, 189, 803),\n    COL_TRI(198, 187, 189),\n    COL_TRI_INIT(SURFACE_VERY_SLIPPERY, 80),\n    COL_TRI(9, 8, 14),\n    COL_TRI(0, 1, 2),\n    COL_TRI(2, 1, 3),\n    COL_TRI(2, 3, 4),\n    COL_TRI(5, 2, 4),\n    COL_TRI(6, 0, 2),\n    COL_TRI(6, 2, 5),\n    COL_TRI(0, 7, 1),\n    COL_TRI(4, 3, 8),\n    COL_TRI(4, 8, 9),\n    COL_TRI(9, 10, 4),\n    COL_TRI(5, 4, 10),\n    COL_TRI(11, 12, 13),\n    COL_TRI(11, 14, 12),\n    COL_TRI(9, 14, 11),\n    COL_TRI(11, 15, 9),\n    COL_TRI(18, 17, 13),\n    COL_TRI(18, 13, 35),\n    COL_TRI(11, 13, 17),\n    COL_TRI(9, 15, 10),\n    COL_TRI(0, 19, 34),\n    COL_TRI(0, 6, 19),\n    COL_TRI(5, 36, 6),\n    COL_TRI(34, 19, 18),\n    COL_TRI(34, 18, 35),\n    COL_TRI(6, 37, 19),\n    COL_TRI(6, 36, 37),\n    COL_TRI(19, 37, 39),\n    COL_TRI(19, 39, 18),\n    COL_TRI(5, 38, 36),\n    COL_TRI(18, 39, 40),\n    COL_TRI(18, 40, 17),\n    COL_TRI(17, 40, 41),\n    COL_TRI(17, 41, 16),\n    COL_TRI(16, 41, 42),\n    COL_TRI(23, 44, 45),\n    COL_TRI(16, 42, 15),\n    COL_TRI(15, 42, 43),\n    COL_TRI(15, 43, 10),\n    COL_TRI(10, 43, 38),\n    COL_TRI(10, 38, 5),\n    COL_TRI(20, 44, 45),\n    COL_TRI(21, 44, 20),\n    COL_TRI(20, 45, 22),\n    COL_TRI(22, 45, 46),\n    COL_TRI(23, 45, 46),\n    COL_TRI(27, 23, 49),\n    COL_TRI(22, 46, 24),\n    COL_TRI(23, 47, 44),\n    COL_TRI(21, 47, 44),\n    COL_TRI(24, 46, 48),\n    COL_TRI(23, 46, 48),\n    COL_TRI(24, 48, 25),\n    COL_TRI(25, 48, 50),\n    COL_TRI(23, 48, 50),\n    COL_TRI(25, 50, 26),\n    COL_TRI(26, 50, 23),\n    COL_TRI(26, 23, 27),\n    COL_TRI(23, 49, 47),\n    COL_TRI(30, 51, 22),\n    COL_TRI(27, 49, 28),\n    COL_TRI(28, 49, 47),\n    COL_TRI(28, 47, 21),\n    COL_TRI(29, 21, 20),\n    COL_TRI(29, 33, 21),\n    COL_TRI(29, 22, 51),\n    COL_TRI(29, 20, 22),\n    COL_TRI(24, 30, 22),\n    COL_TRI(24, 52, 30),\n    COL_TRI(24, 25, 52),\n    COL_TRI(25, 26, 53),\n    COL_TRI(25, 53, 52),\n    COL_TRI(31, 53, 26),\n    COL_TRI(32, 31, 28),\n    COL_TRI(31, 26, 27),\n    COL_TRI(31, 27, 28),\n    COL_TRI(33, 32, 28),\n    COL_TRI(33, 28, 21),\n    COL_TRI(11, 16, 15),\n    COL_TRI(11, 17, 16),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 156),\n    COL_TRI(524, 714, 387),\n    COL_TRI(714, 392, 387),\n    COL_TRI(712, 714, 524),\n    COL_TRI(110, 387, 399),\n    COL_TRI(387, 385, 399),\n    COL_TRI(712, 524, 405),\n    COL_TRI(368, 804, 805),\n    COL_TRI(368, 805, 707),\n    COL_TRI(120, 119, 536),\n    COL_TRI(90, 805, 804),\n    COL_TRI(90, 804, 88),\n    COL_TRI(115, 525, 533),\n    COL_TRI(115, 533, 116),\n    COL_TRI(115, 112, 525),\n    COL_TRI(115, 531, 529),\n    COL_TRI(115, 529, 113),\n    COL_TRI(115, 113, 112),\n    COL_TRI(586, 583, 590),\n    COL_TRI(120, 536, 535),\n    COL_TRI(546, 548, 544),\n    COL_TRI(546, 128, 548),\n    COL_TRI(163, 576, 164),\n    COL_TRI(163, 162, 576),\n    COL_TRI(586, 584, 583),\n    COL_TRI(204, 607, 606),\n    COL_TRI(201, 604, 214),\n    COL_TRI(604, 201, 597),\n    COL_TRI(604, 597, 213),\n    COL_TRI(213, 597, 596),\n    COL_TRI(213, 596, 600),\n    COL_TRI(214, 600, 596),\n    COL_TRI(214, 596, 202),\n    COL_TRI(201, 214, 202),\n    COL_TRI(607, 186, 608),\n    COL_TRI(607, 204, 186),\n    COL_TRI(204, 197, 190),\n    COL_TRI(204, 606, 196),\n    COL_TRI(204, 196, 197),\n    COL_TRI(219, 608, 186),\n    COL_TRI(219, 186, 587),\n    COL_TRI(196, 606, 219),\n    COL_TRI(196, 219, 587),\n    COL_TRI(219, 606, 220),\n    COL_TRI(611, 612, 610),\n    COL_TRI(611, 610, 609),\n    COL_TRI(614, 613, 234),\n    COL_TRI(614, 620, 233),\n    COL_TRI(614, 235, 620),\n    COL_TRI(614, 234, 235),\n    COL_TRI(240, 620, 621),\n    COL_TRI(240, 233, 620),\n    COL_TRI(240, 239, 625),\n    COL_TRI(240, 625, 624),\n    COL_TRI(240, 237, 233),\n    COL_TRI(240, 624, 237),\n    COL_TRI(253, 254, 247),\n    COL_TRI(635, 632, 243),\n    COL_TRI(635, 243, 634),\n    COL_TRI(633, 271, 631),\n    COL_TRI(633, 631, 630),\n    COL_TRI(244, 636, 252),\n    COL_TRI(636, 249, 252),\n    COL_TRI(643, 268, 644),\n    COL_TRI(246, 253, 247),\n    COL_TRI(257, 637, 263),\n    COL_TRI(637, 260, 263),\n    COL_TRI(264, 265, 259),\n    COL_TRI(258, 264, 259),\n    COL_TRI(643, 642, 268),\n    COL_TRI(645, 641, 638),\n    COL_TRI(645, 646, 641),\n    COL_TRI(649, 651, 653),\n    COL_TRI(649, 653, 650),\n    COL_TRI(806, 657, 658),\n    COL_TRI(806, 658, 817),\n    COL_TRI(658, 656, 277),\n    COL_TRI(658, 657, 656),\n    COL_TRI(807, 818, 819),\n    COL_TRI(807, 806, 817),\n    COL_TRI(807, 817, 818),\n    COL_TRI(808, 807, 819),\n    COL_TRI(808, 819, 809),\n    COL_TRI(809, 820, 808),\n    COL_TRI(809, 810, 820),\n    COL_TRI(810, 821, 820),\n    COL_TRI(810, 822, 821),\n    COL_TRI(810, 823, 822),\n    COL_TRI(290, 666, 665),\n    COL_TRI(811, 823, 824),\n    COL_TRI(811, 822, 823),\n    COL_TRI(812, 825, 826),\n    COL_TRI(812, 826, 814),\n    COL_TRI(813, 825, 812),\n    COL_TRI(813, 827, 825),\n    COL_TRI(814, 826, 828),\n    COL_TRI(814, 828, 815),\n    COL_TRI(815, 828, 827),\n    COL_TRI(815, 827, 813),\n    COL_TRI(685, 340, 687),\n    COL_TRI(665, 662, 661),\n    COL_TRI(666, 662, 665),\n    COL_TRI(665, 661, 287),\n    COL_TRI(523, 522, 107),\n    COL_TRI(523, 107, 109),\n    COL_TRI(685, 687, 341),\n    COL_TRI(399, 355, 701),\n    COL_TRI(689, 346, 344),\n    COL_TRI(689, 691, 346),\n    COL_TRI(350, 347, 692),\n    COL_TRI(350, 351, 347),\n    COL_TRI(693, 347, 351),\n    COL_TRI(693, 351, 696),\n    COL_TRI(399, 699, 355),\n    COL_TRI(399, 385, 699),\n    COL_TRI(412, 734, 727),\n    COL_TRI(712, 719, 403),\n    COL_TRI(711, 712, 403),\n    COL_TRI(411, 727, 409),\n    COL_TRI(409, 410, 726),\n    COL_TRI(409, 726, 411),\n    COL_TRI(411, 728, 727),\n    COL_TRI(412, 730, 419),\n    COL_TRI(412, 419, 734),\n    COL_TRI(424, 741, 738),\n    COL_TRI(412, 728, 423),\n    COL_TRI(412, 423, 422),\n    COL_TRI(412, 727, 728),\n    COL_TRI(430, 426, 428),\n    COL_TRI(430, 737, 426),\n    COL_TRI(424, 432, 741),\n    COL_TRI(752, 440, 790),\n    COL_TRI(753, 444, 792),\n    COL_TRI(753, 792, 791),\n    COL_TRI(487, 752, 486),\n    COL_TRI(487, 486, 786),\n    COL_TRI(746, 744, 751),\n    COL_TRI(746, 751, 789),\n    COL_TRI(797, 796, 795),\n    COL_TRI(752, 790, 486),\n    COL_TRI(742, 760, 759),\n    COL_TRI(742, 446, 760),\n    COL_TRI(755, 757, 793),\n    COL_TRI(755, 793, 785),\n    COL_TRI(797, 798, 796),\n    COL_TRI(801, 509, 508),\n    COL_TRI(785, 784, 780),\n    COL_TRI(785, 780, 478),\n    COL_TRI(785, 778, 755),\n    COL_TRI(785, 478, 778),\n    COL_TRI(755, 778, 475),\n    COL_TRI(755, 475, 816),\n    COL_TRI(816, 780, 784),\n    COL_TRI(816, 475, 780),\n    COL_TRI(35, 32, 33),\n    COL_TRI(35, 33, 34),\n    COL_TRI(801, 802, 509),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(24),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_null_start,   /*pos*/ -7577, -2764,    0, /*yaw*/ 64), // unused, probably an early way to set initial position\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/ -5938, -3071,    0, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_04, /*pos*/ -5488, -1535,   41, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_04, /*pos*/  4342,  1741,   41, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_05, /*pos*/ -1965, -3030,   10, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_06, /*pos*/ -1996,  3277,  -19, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_06, /*pos*/ -4914,     0,  -19, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_07, /*pos*/  1843, -3071, -398, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_08, /*pos*/  4659, -1663,  307, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_09, /*pos*/  3123,  -511,  307, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0A, /*pos*/  1382,     0,   -6, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0B, /*pos*/  1229,   205, -410, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0B, /*pos*/ -3225,  3482, -825, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0B, /*pos*/ -1381,  3482, -821, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0C, /*pos*/ -1433,   717, -127, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0D, /*pos*/  -741,   589,  307, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0E, /*pos*/ -5017,   205,  310, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0F, /*pos*/ -6297,  3251,    1, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_10, /*pos*/ -4556,  3482,   97, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_11, /*pos*/  1946,  4506,   96, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_12, /*pos*/  1946,  4352,   96, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_13, /*pos*/  6540,  3796,   83, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_14, /*pos*/  6740,  4224,   74, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_15, /*pos*/  3123,  3277,  -19, /*yaw*/  0),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/geo.inc.c",
    "content": "// 0x0E0007A0\nconst GeoLayout bitfs_geo_0007A0[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND(BACKGROUND_FLAMING_SKY, geo_skybox_main),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 20000, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(14, 0, 2000, 6000, 0, -4500, -8000, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_ALPHA, bitfs_seg7_dl_07002118),\n                    GEO_ASM(   0, geo_movtex_pause_control),\n                    GEO_ASM(0x1901, geo_movtex_draw_nocolor),\n                    GEO_ASM(0x1902, geo_movtex_draw_nocolor),\n                    GEO_ASM(0x1903, geo_movtex_draw_nocolor),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(  12, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/macro.inc.c",
    "content": "// 0x07014F90 - 0x07015122\nconst MacroObject bitfs_seg7_macro_objs[] = {\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/ -1990, -2780,  -590),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/ -2860, -2780,  -580),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal_flying, /*yaw*/   0, /*pos*/  1130, -3000,   400),\n    MACRO_OBJECT               (/*preset*/ macro_1up,                         /*yaw*/   0, /*pos*/ -4320, -2640,  -500),\n    MACRO_OBJECT               (/*preset*/ macro_small_bully,                 /*yaw*/   0, /*pos*/  2340, -2764,   580),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_circling_amp,                /*yaw*/   0, /*pos*/  6600, -2770,   280, /*bhvParam*/ AMP_BP_ROT_RADIUS_200),\n    MACRO_OBJECT               (/*preset*/ macro_recovery_heart,              /*yaw*/   0, /*pos*/  3660, -2700,   280),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_in_pole,          /*yaw*/   0, /*pos*/  3880, -1140,   260),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_horizontal_flying, /*yaw*/   0, /*pos*/ -1900,   652,   320),\n    MACRO_OBJECT               (/*preset*/ macro_small_bully,                 /*yaw*/   0, /*pos*/ -1720,  1320,  -340),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,        /*yaw*/   0, /*pos*/  -640,   800,   180),\n    MACRO_OBJECT               (/*preset*/ macro_small_bully,                 /*yaw*/   0, /*pos*/ -5340,   410,    20),\n    MACRO_OBJECT               (/*preset*/ macro_small_bully,                 /*yaw*/   0, /*pos*/ -5200,   410,   700),\n    MACRO_OBJECT               (/*preset*/ macro_box_1up,                     /*yaw*/   0, /*pos*/ -7400,  1500,     0),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,          /*yaw*/   0, /*pos*/ -6150,  1480,   500),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,          /*yaw*/   0, /*pos*/ -6150,  2600,   500),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,          /*yaw*/   0, /*pos*/ -6150,  3080,   500),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_hidden_1up,                  /*yaw*/   0, /*pos*/ -6460,  2760,   320, /*bhvParam*/ 3),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,        /*yaw*/  90, /*pos*/ -6360,  3760,  -840),\n    MACRO_OBJECT               (/*preset*/ macro_recovery_heart,              /*yaw*/   0, /*pos*/   -20,  3850,   160),\n    MACRO_OBJECT               (/*preset*/ macro_box_1up,                     /*yaw*/   0, /*pos*/  2440,  5520,   140),\n    MACRO_OBJECT               (/*preset*/ macro_1up_beat_bitfs_bowser,       /*yaw*/   0, /*pos*/  1198,  5478,   103),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal_flying, /*yaw*/   0, /*pos*/ -2610,  3600,     0),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_horizontal,        /*yaw*/   0, /*pos*/  1231, -2168, -1747),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_vertical_flying,   /*yaw*/   0, /*pos*/ -5705,   800,     0),\n    MACRO_OBJECT               (/*preset*/ macro_goomba_triplet_spawner,      /*yaw*/   0, /*pos*/  3660, -2764,   300),\n    MACRO_OBJECT               (/*preset*/ macro_1up_beat_bitfs_bowser,       /*yaw*/   0, /*pos*/  -174, -2840,  -138),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  2888, -1375,   310),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  1230, -1900, -1747),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  5800, -2000,     0),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -1846,  1600,  -476),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -4210,  2615,   280),\n    MACRO_OBJECT               (/*preset*/ macro_bobomb,                      /*yaw*/   0, /*pos*/ -5361,  3686,   315),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -1390,  3575,  -420),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  3065,  4610,    92),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  4330,  -790,   -50),\n    MACRO_OBJECT               (/*preset*/ macro_box_three_coins,             /*yaw*/   0, /*pos*/  7220, -1800,   260),\n    MACRO_OBJECT               (/*preset*/ macro_fire_spitter,                /*yaw*/   0, /*pos*/ -7280,  3100,  -925),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_circling_amp,                /*yaw*/   0, /*pos*/ -2325,  3625,     0, /*bhvParam*/ AMP_BP_ROT_RADIUS_400),\n    MACRO_OBJECT               (/*preset*/ macro_box_ten_coins,               /*yaw*/   0, /*pos*/ -5340,  4000,   100),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/movtext.inc.c",
    "content": "// 0x07015AF0 - 0x07015B1C\nMovtex bitfs_movtex_tris_lava_first_section[] = {\n    MOV_TEX_SPD(  2),\n    MOV_TEX_TRIS(-7450,   205,  1050, 0, 0),\n    MOV_TEX_TRIS( 4838,   205,  1050, 6, 0),\n    MOV_TEX_TRIS( 4838,   205, -1108, 6, 2),\n    MOV_TEX_TRIS(-7450,   205, -1108, 0, 2),\n    MOV_TEX_END(),\n};\n\n// 0x07015B1C - 0x07015B48\nMovtex bitfs_movtex_tris_lava_second_section[] = {\n    MOV_TEX_SPD( -3),\n    MOV_TEX_TRIS(-4531,  3487,  1050, 0, 0),\n    MOV_TEX_TRIS( 5658,  3487,  1050, 6, 0),\n    MOV_TEX_TRIS( 5658,  3487, -1108, 6, 2),\n    MOV_TEX_TRIS(-4531,  3487, -1108, 0, 2),\n    MOV_TEX_END(),\n};\n\n// 0x07015B48 - 0x07015BA8\nMovtex bitfs_movtex_tris_lava_floor[] = {\n    MOV_TEX_SPD( -2),\n    MOV_TEX_TRIS( 8191, -3067,  8192, 0, 0),\n    MOV_TEX_TRIS(    0, -3067,  8192, 0, 2),\n    MOV_TEX_TRIS(-8191, -3067,  8192, 0, 4),\n    MOV_TEX_TRIS( 8191, -3067,     0, 2, 0),\n    MOV_TEX_TRIS(    0, -3067,     0, 2, 2),\n    MOV_TEX_TRIS(-8191, -3067,     0, 2, 4),\n    MOV_TEX_TRIS( 8191, -3067, -8192, 4, 0),\n    MOV_TEX_TRIS(    0, -3067, -8192, 4, 2),\n    MOV_TEX_TRIS(-8191, -3067, -8192, 4, 4),\n    MOV_TEX_END(),\n};\n\n// 0x07015BA8 - 0x07015BC0\nconst Gfx bitfs_dl_lava_sections[] = {\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07015BC0 - 0x07015C08\nconst Gfx bitfs_dl_lava_floor[] = {\n    gsSP2Triangles( 0,  3,  1, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 4,  7,  5, 0x0,  5,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitfs/areas/1/trajectory.inc.c",
    "content": "// 0x070159AC - 0x07015AEE\nconst Trajectory bitfs_seg7_trajectory_070159AC[] = {\n    TRAJECTORY_POS(0, /*pos*/ -5744, -3072,     0),\n    TRAJECTORY_POS(1, /*pos*/ -5444, -3072,     0),\n    TRAJECTORY_POS(2, /*pos*/ -5144, -3072,     0),\n    TRAJECTORY_POS(3, /*pos*/ -4954, -3122,     0),\n    TRAJECTORY_POS(4, /*pos*/ -4754, -3172,     0),\n    TRAJECTORY_POS(5, /*pos*/ -4300, -3172,     0),\n    TRAJECTORY_POS(6, /*pos*/ -3850, -3172,     0),\n    TRAJECTORY_POS(7, /*pos*/ -3650, -3122,     0),\n    TRAJECTORY_POS(8, /*pos*/ -3460, -3072,     0),\n    TRAJECTORY_POS(9, /*pos*/ -3160, -3072,     0),\n    TRAJECTORY_POS(10, /*pos*/ -3000, -3150,     0),\n    TRAJECTORY_POS(11, /*pos*/ -2800, -3300,     0),\n    TRAJECTORY_POS(12, /*pos*/ -2600, -3450,     0),\n    TRAJECTORY_POS(13, /*pos*/ -2400, -3500,     0),\n    TRAJECTORY_POS(14, /*pos*/ -2200, -3450,     0),\n    TRAJECTORY_POS(15, /*pos*/ -2000, -3300,     0),\n    TRAJECTORY_POS(16, /*pos*/ -1800, -3150,     0),\n    TRAJECTORY_POS(17, /*pos*/ -1600, -3072,     0),\n    TRAJECTORY_POS(18, /*pos*/ -1300, -3072,     0),\n    TRAJECTORY_POS(19, /*pos*/ -1000, -3072,     0),\n    TRAJECTORY_POS(20, /*pos*/  -608, -3072,     0),\n    TRAJECTORY_POS(21, /*pos*/ -1000, -3072,     0),\n    TRAJECTORY_POS(22, /*pos*/ -1300, -3072,     0),\n    TRAJECTORY_POS(23, /*pos*/ -1600, -3072,     0),\n    TRAJECTORY_POS(24, /*pos*/ -1800, -3150,     0),\n    TRAJECTORY_POS(25, /*pos*/ -2000, -3300,     0),\n    TRAJECTORY_POS(26, /*pos*/ -2200, -3450,     0),\n    TRAJECTORY_POS(27, /*pos*/ -2400, -3500,     0),\n    TRAJECTORY_POS(28, /*pos*/ -2600, -3450,     0),\n    TRAJECTORY_POS(29, /*pos*/ -2800, -3300,     0),\n    TRAJECTORY_POS(30, /*pos*/ -3000, -3150,     0),\n    TRAJECTORY_POS(31, /*pos*/ -3160, -3072,     0),\n    TRAJECTORY_POS(32, /*pos*/ -3460, -3072,     0),\n    TRAJECTORY_POS(33, /*pos*/ -3650, -3122,     0),\n    TRAJECTORY_POS(34, /*pos*/ -3850, -3172,     0),\n    TRAJECTORY_POS(35, /*pos*/ -4300, -3172,     0),\n    TRAJECTORY_POS(36, /*pos*/ -4754, -3172,     0),\n    TRAJECTORY_POS(37, /*pos*/ -4954, -3122,     0),\n    TRAJECTORY_POS(38, /*pos*/ -5144, -3072,     0),\n    TRAJECTORY_POS(39, /*pos*/ -5444, -3072,     0),\n    TRAJECTORY_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/elevator/collision.inc.c",
    "content": "// 0x07015124 - 0x070151B4\nconst Collision bitfs_seg7_collision_07015124[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-204, 154, -204),\n    COL_VERTEX(205, 154, -204),\n    COL_VERTEX(184, 0, -183),\n    COL_VERTEX(-183, 0, -183),\n    COL_VERTEX(184, 0, 184),\n    COL_VERTEX(-183, 0, 184),\n    COL_VERTEX(205, 154, 205),\n    COL_VERTEX(-204, 154, 205),\n    COL_TRI_INIT(SURFACE_DEFAULT, 14),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(3, 4, 5),\n    COL_TRI(3, 2, 4),\n    COL_TRI(2, 6, 4),\n    COL_TRI(6, 5, 4),\n    COL_TRI(2, 1, 6),\n    COL_TRI(1, 3, 2),\n    COL_TRI(6, 7, 5),\n    COL_TRI(5, 7, 0),\n    COL_TRI(5, 0, 3),\n    COL_TRI(7, 6, 1),\n    COL_TRI(7, 1, 0),\n    COL_TRI(1, 0, 3),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/elevator/geo.inc.c",
    "content": "// 0x0E000678\nconst GeoLayout bitfs_geo_000678[] = {\n    GEO_CULLING_RADIUS(400),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitfs_seg7_dl_0700F508),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/elevator/model.inc.c",
    "content": "// 0x0700F238 - 0x0700F278\nstatic const Vtx bitfs_seg7_vertex_0700F238[] = {\n    {{{  -204,    154,    205}, 0, {   650,    990}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{   205,    154,   -204}, 0, {  2012,    990}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{  -204,    154,   -204}, 0, {  1330,   1670}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{   205,    154,    205}, 0, {  1330,    308}, {0xbc, 0xca, 0xbf, 0xff}}},\n};\n\n// 0x0700F278 - 0x0700F378\nstatic const Vtx bitfs_seg7_vertex_0700F278[] = {\n    {{{   184,      0,   -183}, 0, {   938,    480}, {0x67, 0x76, 0x64, 0xff}}},\n    {{{   205,    154,   -204}, 0, {   990,      0}, {0x67, 0x76, 0x64, 0xff}}},\n    {{{   205,    154,    205}, 0, {     0,      0}, {0x67, 0x76, 0x64, 0xff}}},\n    {{{   184,      0,    184}, 0, {    20,    480}, {0x67, 0x76, 0x64, 0xff}}},\n    {{{  -183,      0,    184}, 0, {   938,    480}, {0x67, 0x76, 0x64, 0xff}}},\n    {{{  -204,    154,    205}, 0, {   990,      0}, {0x67, 0x76, 0x64, 0xff}}},\n    {{{  -204,    154,   -204}, 0, {     0,      0}, {0x67, 0x76, 0x64, 0xff}}},\n    {{{  -183,      0,   -183}, 0, {    20,    480}, {0x67, 0x76, 0x64, 0xff}}},\n    {{{  -204,    154,   -204}, 0, {   990,      0}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{   184,      0,   -183}, 0, {    20,    480}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{  -183,      0,   -183}, 0, {   938,    480}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{   205,    154,   -204}, 0, {     0,      0}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{   205,    154,    205}, 0, {   990,      0}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{  -204,    154,    205}, 0, {     0,      0}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{  -183,      0,    184}, 0, {    20,    478}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{   184,      0,    184}, 0, {   938,    478}, {0x74, 0x86, 0x75, 0xff}}},\n};\n\n// 0x0700F378 - 0x0700F3B8\nstatic const Vtx bitfs_seg7_vertex_0700F378[] = {\n    {{{  -183,      0,   -183}, 0, {     0,    990}, {0x43, 0x56, 0x37, 0xff}}},\n    {{{   184,      0,    184}, 0, {  2176,    254}, {0x43, 0x56, 0x37, 0xff}}},\n    {{{  -183,      0,    184}, 0, {   704,   -482}, {0x43, 0x56, 0x37, 0xff}}},\n    {{{   184,      0,   -183}, 0, {  1440,   1724}, {0x43, 0x56, 0x37, 0xff}}},\n};\n\n// 0x0700F3B8 - 0x0700F3F8\nstatic const Vtx bitfs_seg7_vertex_0700F3B8[] = {\n    {{{   205,    154,   -204}, 0, {   990,      0}, {0x79, 0xb2, 0xeb, 0xff}}},\n    {{{  -183,      0,   -183}, 0, {    20,     20}, {0x79, 0xb2, 0xeb, 0xff}}},\n    {{{   184,      0,   -183}, 0, {   938,     20}, {0x79, 0xb2, 0xeb, 0xff}}},\n    {{{  -204,    154,   -204}, 0, {     0,      0}, {0x79, 0xb2, 0xeb, 0xff}}},\n};\n\n// 0x0700F3F8 - 0x0700F430\nstatic const Gfx bitfs_seg7_dl_0700F3F8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_0700F238, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700F430 - 0x0700F498\nstatic const Gfx bitfs_seg7_dl_0700F430[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_0700F278, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700F498 - 0x0700F4D0\nstatic const Gfx bitfs_seg7_dl_0700F498[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_0700F378, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700F4D0 - 0x0700F508\nstatic const Gfx bitfs_seg7_dl_0700F4D0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bitfs_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_0700F3B8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700F508 - 0x0700F590\nconst Gfx bitfs_seg7_dl_0700F508[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_0700F3F8),\n    gsSPDisplayList(bitfs_seg7_dl_0700F430),\n    gsSPDisplayList(bitfs_seg7_dl_0700F498),\n    gsSPDisplayList(bitfs_seg7_dl_0700F4D0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitfs/geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"game/level_geo.h\"\n#include \"game/geo_misc.h\"\n#include \"game/camera.h\"\n#include \"game/moving_texture.h\"\n#include \"game/screen_transition.h\"\n#include \"game/paintings.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"levels/bitfs/header.h\"\n\n#include \"levels/bitfs/areas/1/2/geo.inc.c\"\n#include \"levels/bitfs/areas/1/3/geo.inc.c\"\n#include \"levels/bitfs/areas/1/4/geo.inc.c\"\n#include \"levels/bitfs/areas/1/5/geo.inc.c\"\n#include \"levels/bitfs/areas/1/6/geo.inc.c\"\n#include \"levels/bitfs/areas/1/7/geo.inc.c\"\n#include \"levels/bitfs/areas/1/8/geo.inc.c\"\n#include \"levels/bitfs/areas/1/9/geo.inc.c\"\n#include \"levels/bitfs/areas/1/10/geo.inc.c\"\n#include \"levels/bitfs/areas/1/11/geo.inc.c\"\n#include \"levels/bitfs/areas/1/12/geo.inc.c\"\n#include \"levels/bitfs/areas/1/13/geo.inc.c\"\n#include \"levels/bitfs/areas/1/14/geo.inc.c\"\n#include \"levels/bitfs/areas/1/15/geo.inc.c\"\n#include \"levels/bitfs/areas/1/16/geo.inc.c\"\n#include \"levels/bitfs/areas/1/17/geo.inc.c\"\n#include \"levels/bitfs/areas/1/18/geo.inc.c\"\n#include \"levels/bitfs/areas/1/19/geo.inc.c\"\n#include \"levels/bitfs/areas/1/20/geo.inc.c\"\n#include \"levels/bitfs/elevator/geo.inc.c\"\n#include \"levels/bitfs/sinking_cage_platform/geo.inc.c\"\n#include \"levels/bitfs/sinking_cage_pole/geo.inc.c\"\n#include \"levels/bitfs/tilting_square_platform/geo.inc.c\"\n#include \"levels/bitfs/tumbling_platform_near/geo.inc.c\"\n#include \"levels/bitfs/tumbling_platform_far/geo.inc.c\"\n#include \"levels/bitfs/stretching_platform/geo.inc.c\"\n#include \"levels/bitfs/moving_square_platform/geo.inc.c\"\n#include \"levels/bitfs/sliding_platform/geo.inc.c\"\n#include \"levels/bitfs/platform_on_track/geo.inc.c\"\n#include \"levels/bitfs/sinking_platforms/geo.inc.c\"\n#include \"levels/bitfs/seesaw_platform/geo.inc.c\"\n#include \"levels/bitfs/areas/1/geo.inc.c\"\n"
  },
  {
    "path": "levels/bitfs/header.h",
    "content": "#ifndef BITFS_HEADER_H\n#define BITFS_HEADER_H\n\n#include \"types.h\"\n\n// geo\nextern const GeoLayout bitfs_geo_0004B0[];\nextern const GeoLayout bitfs_geo_0004C8[];\nextern const GeoLayout bitfs_geo_0004E0[];\nextern const GeoLayout bitfs_geo_0004F8[];\nextern const GeoLayout bitfs_geo_000510[];\nextern const GeoLayout bitfs_geo_000528[];\nextern const GeoLayout bitfs_geo_000540[];\nextern const GeoLayout bitfs_geo_000558[];\nextern const GeoLayout bitfs_geo_000570[];\nextern const GeoLayout bitfs_geo_000588[];\nextern const GeoLayout bitfs_geo_0005A0[];\nextern const GeoLayout bitfs_geo_0005B8[];\nextern const GeoLayout bitfs_geo_0005D0[];\nextern const GeoLayout bitfs_geo_0005E8[];\nextern const GeoLayout bitfs_geo_000600[];\nextern const GeoLayout bitfs_geo_000618[];\nextern const GeoLayout bitfs_geo_000630[];\nextern const GeoLayout bitfs_geo_000648[];\nextern const GeoLayout bitfs_geo_000660[];\nextern const GeoLayout bitfs_geo_000678[];\nextern const GeoLayout bitfs_geo_000690[];\nextern const GeoLayout bitfs_geo_0006A8[];\nextern const GeoLayout bitfs_geo_0006C0[];\nextern const GeoLayout bitfs_geo_0006D8[];\nextern const GeoLayout bitfs_geo_0006F0[];\nextern const GeoLayout bitfs_geo_000708[];\nextern const GeoLayout bitfs_geo_000728[];\nextern const GeoLayout bitfs_geo_000740[];\nextern const GeoLayout bitfs_geo_000758[];\nextern const GeoLayout bitfs_geo_000770[];\nextern const GeoLayout bitfs_geo_000788[];\nextern const GeoLayout bitfs_geo_0007A0[];\n\n// leveldata\nextern const Gfx bitfs_seg7_dl_07002118[];\nextern const Gfx bitfs_seg7_dl_07002A78[];\nextern const Gfx bitfs_seg7_dl_07003670[];\nextern const Gfx bitfs_seg7_dl_07003C60[];\nextern const Gfx bitfs_seg7_dl_070040B0[];\nextern const Gfx bitfs_seg7_dl_07004630[];\nextern const Gfx bitfs_seg7_dl_07006B90[];\nextern const Gfx bitfs_seg7_dl_07007070[];\nextern const Gfx bitfs_seg7_dl_07007720[];\nextern const Gfx bitfs_seg7_dl_07007958[];\nextern const Gfx bitfs_seg7_dl_07008F48[];\nextern const Gfx bitfs_seg7_dl_070091E0[];\nextern const Gfx bitfs_seg7_dl_070095E0[];\nextern const Gfx bitfs_seg7_dl_0700AA00[];\nextern const Gfx bitfs_seg7_dl_0700AB90[];\nextern const Gfx bitfs_seg7_dl_0700BED8[];\nextern const Gfx bitfs_seg7_dl_0700C3C0[];\nextern const Gfx bitfs_seg7_dl_0700EC78[];\nextern const Gfx bitfs_seg7_dl_0700ED90[];\nextern const Gfx bitfs_seg7_dl_0700F1C8[];\nextern const Gfx bitfs_seg7_dl_0700F508[];\nextern const Gfx bitfs_seg7_dl_0700F6A8[];\nextern const Gfx bitfs_seg7_dl_0700FB38[];\nextern const Gfx bitfs_seg7_dl_0700FD08[];\nextern const Gfx bitfs_seg7_dl_0700FF90[];\nextern const Gfx bitfs_seg7_dl_07010168[];\nextern const Gfx bitfs_seg7_dl_07010340[];\nextern const Gfx bitfs_seg7_dl_07011138[];\nextern const Gfx bitfs_seg7_dl_07011318[];\nextern const Gfx bitfs_seg7_dl_07011568[];\nextern const Gfx bitfs_seg7_dl_07011798[];\nextern const Gfx bitfs_seg7_dl_07011BA0[];\nextern const Gfx bitfs_seg7_dl_07011D98[];\nextern const Gfx bitfs_seg7_dl_07011E28[];\nextern const Collision bitfs_seg7_collision_level[];\nextern const MacroObject bitfs_seg7_macro_objs[];\nextern const Collision bitfs_seg7_collision_07015124[];\nextern const Collision bitfs_seg7_collision_sinking_cage_platform[];\nextern const Collision bitfs_seg7_collision_inverted_pyramid[];\nextern const Collision bitfs_seg7_collision_07015288[];\nextern const Collision bitfs_seg7_collision_squishable_platform[];\nextern const Collision bitfs_seg7_collision_07015714[];\nextern const Collision bitfs_seg7_collision_07015768[];\nextern const Collision bitfs_seg7_collision_070157E0[];\nextern const Collision bitfs_seg7_collision_sinking_platform[];\nextern const Collision bitfs_seg7_collision_07015928[];\nextern const Trajectory bitfs_seg7_trajectory_070159AC[];\nextern Movtex bitfs_movtex_tris_lava_first_section[];\nextern Movtex bitfs_movtex_tris_lava_second_section[];\nextern Movtex bitfs_movtex_tris_lava_floor[];\nextern const Gfx bitfs_dl_lava_sections[];\nextern const Gfx bitfs_dl_lava_floor[];\n\n// script\nextern const LevelScript level_bitfs_entry[];\n\n#endif\n"
  },
  {
    "path": "levels/bitfs/level.yaml",
    "content": "# Bowser in the Fire Sea\nshort-name: bitfs\nfull-name: Bowser in the Fire Sea\ntexture-file: [\"/texture.inc.c\"]\narea-count: 1\nobjects: [elevator, moving_square_platform, platform_on_track, seesaw_platform, sinking_cage_platform, sinking_cage_pole, sinking_platforms, sliding_platform, stretching_platform, tilting_square_platform, tumbling_platform_far, tumbling_platform_near]\nshared-path: []\n# loaded files\nskybox-bin: bitfs\ntexture-bin: sky\neffects: true\nactor-bins: [group2, group17]\ncommon-bin: [common0]\n"
  },
  {
    "path": "levels/bitfs/leveldata.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"surface_terrains.h\"\n#include \"moving_texture_macros.h\"\n#include \"level_misc_macros.h\"\n#include \"macro_presets.h\"\n#include \"special_presets.h\"\n#include \"textures.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/bitfs/texture.inc.c\"\n#include \"levels/bitfs/areas/1/1/model.inc.c\"\n#include \"levels/bitfs/areas/1/2/model.inc.c\"\n#include \"levels/bitfs/areas/1/3/model.inc.c\"\n#include \"levels/bitfs/areas/1/4/model.inc.c\"\n#include \"levels/bitfs/areas/1/5/model.inc.c\"\n#include \"levels/bitfs/areas/1/6/model.inc.c\"\n#include \"levels/bitfs/areas/1/7/model.inc.c\"\n#include \"levels/bitfs/areas/1/8/model.inc.c\"\n#include \"levels/bitfs/areas/1/9/model.inc.c\"\n#include \"levels/bitfs/areas/1/10/model.inc.c\"\n#include \"levels/bitfs/areas/1/11/model.inc.c\"\n#include \"levels/bitfs/areas/1/12/model.inc.c\"\n#include \"levels/bitfs/areas/1/13/model.inc.c\"\n#include \"levels/bitfs/areas/1/14/model.inc.c\"\n#include \"levels/bitfs/areas/1/15/model.inc.c\"\n#include \"levels/bitfs/areas/1/16/model.inc.c\"\n#include \"levels/bitfs/areas/1/17/model.inc.c\"\n#include \"levels/bitfs/areas/1/18/model.inc.c\"\n#include \"levels/bitfs/areas/1/19/model.inc.c\"\n#include \"levels/bitfs/areas/1/20/model.inc.c\"\n#include \"levels/bitfs/elevator/model.inc.c\"\n#include \"levels/bitfs/sinking_cage_platform/model.inc.c\"\n#include \"levels/bitfs/sinking_cage_pole/model.inc.c\"\n#include \"levels/bitfs/tilting_square_platform/model.inc.c\"\n#include \"levels/bitfs/tumbling_platform_near/model.inc.c\"\n#include \"levels/bitfs/tumbling_platform_far/model.inc.c\"\n#include \"levels/bitfs/stretching_platform/1.inc.c\"\n#include \"levels/bitfs/stretching_platform/2.inc.c\"\n#include \"levels/bitfs/moving_square_platform/model.inc.c\"\n#include \"levels/bitfs/sliding_platform/model.inc.c\"\n#include \"levels/bitfs/platform_on_track/model.inc.c\"\n#include \"levels/bitfs/sinking_platforms/model.inc.c\"\n#include \"levels/bitfs/seesaw_platform/model.inc.c\"\n#include \"levels/bitfs/areas/1/collision.inc.c\"\n#include \"levels/bitfs/areas/1/macro.inc.c\"\n#include \"levels/bitfs/elevator/collision.inc.c\"\n#include \"levels/bitfs/sinking_cage_platform/collision.inc.c\"\n#include \"levels/bitfs/tilting_square_platform/collision.inc.c\"\n#include \"levels/bitfs/tumbling_platform_near/collision.inc.c\"\n#include \"levels/bitfs/stretching_platform/collision.inc.c\"\n#include \"levels/bitfs/moving_square_platform/collision.inc.c\"\n#include \"levels/bitfs/sliding_platform/collision.inc.c\"\n#include \"levels/bitfs/platform_on_track/collision.inc.c\"\n#include \"levels/bitfs/sinking_platforms/collision.inc.c\"\n#include \"levels/bitfs/seesaw_platform/collision.inc.c\"\n#include \"levels/bitfs/areas/1/trajectory.inc.c\"\n#include \"levels/bitfs/areas/1/movtext.inc.c\"\n"
  },
  {
    "path": "levels/bitfs/moving_square_platform/collision.inc.c",
    "content": "// 0x07015714 - 0x07015766\nconst Collision bitfs_seg7_collision_07015714[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x5),\n    COL_VERTEX(0, 0, 0),\n    COL_VERTEX(307, 307, -306),\n    COL_VERTEX(307, 307, 307),\n    COL_VERTEX(-306, 307, -306),\n    COL_VERTEX(-306, 307, 307),\n    COL_TRI_INIT(SURFACE_DEFAULT, 4),\n    COL_TRI(0, 1, 2),\n    COL_TRI(1, 0, 3),\n    COL_TRI(4, 3, 0),\n    COL_TRI(0, 2, 4),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 2),\n    COL_TRI(1, 3, 4),\n    COL_TRI(1, 4, 2),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/moving_square_platform/geo.inc.c",
    "content": "// 0x0E000728\nconst GeoLayout bitfs_geo_000728[] = {\n    GEO_CULLING_RADIUS(650),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitfs_seg7_dl_07011318),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/moving_square_platform/model.inc.c",
    "content": "// 0x070111A8 - 0x070111E8\nstatic const Vtx bitfs_seg7_vertex_070111A8[] = {\n    {{{   307,    307,   -306}, 0, {  5078,  -4120}, {0xe0, 0xf5, 0xc9, 0xff}}},\n    {{{  -306,    307,    307}, 0, {     0,    990}, {0xe0, 0xf5, 0xc9, 0xff}}},\n    {{{   307,    307,    307}, 0, {  5078,    990}, {0xe0, 0xf5, 0xc9, 0xff}}},\n    {{{  -306,    307,   -306}, 0, {     0,  -4120}, {0xe0, 0xf5, 0xc9, 0xff}}},\n};\n\n// 0x070111E8 - 0x07011298\nstatic const Vtx bitfs_seg7_vertex_070111E8[] = {\n    {{{   307,    307,   -306}, 0, {     0,   1604}, {0xff, 0x00, 0x00, 0xff}}},\n    {{{     0,      0,      0}, 0, {   990,   -132}, {0xff, 0x00, 0x00, 0xff}}},\n    {{{  -306,    307,   -306}, 0, {  2012,   1604}, {0xff, 0x00, 0x00, 0xff}}},\n    {{{     0,      0,      0}, 0, {   734,   -132}, {0xff, 0x00, 0x00, 0xff}}},\n    {{{   307,    307,    307}, 0, {  1500,   1604}, {0xff, 0x00, 0x00, 0xff}}},\n    {{{  -306,    307,    307}, 0, {     0,   1604}, {0xff, 0x00, 0x00, 0xff}}},\n    {{{     0,      0,      0}, 0, {   990,   -132}, {0x96, 0x00, 0x00, 0xff}}},\n    {{{   307,    307,   -306}, 0, {  2012,   1604}, {0x96, 0x00, 0x00, 0xff}}},\n    {{{   307,    307,    307}, 0, {     0,   1604}, {0x96, 0x00, 0x00, 0xff}}},\n    {{{  -306,    307,    307}, 0, {  2012,   1604}, {0x96, 0x00, 0x00, 0xff}}},\n    {{{  -306,    307,   -306}, 0, {     0,   1604}, {0x96, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07011298 - 0x070112D0\nstatic const Gfx bitfs_seg7_dl_07011298[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_070111A8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070112D0 - 0x07011318\nstatic const Gfx bitfs_seg7_dl_070112D0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_070111E8, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07011318 - 0x070113A8\nconst Gfx bitfs_seg7_dl_07011318[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_07011298),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_070112D0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitfs/platform_on_track/collision.inc.c",
    "content": "// 0x070157E0 - 0x07015858\nconst Collision bitfs_seg7_collision_070157E0[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(307, 0, -306),\n    COL_VERTEX(-306, 205, -306),\n    COL_VERTEX(307, 205, -306),\n    COL_VERTEX(-306, 0, -306),\n    COL_VERTEX(307, 205, 307),\n    COL_VERTEX(307, 0, 307),\n    COL_VERTEX(-306, 205, 307),\n    COL_VERTEX(-306, 0, 307),\n    COL_TRI_INIT(SURFACE_DEFAULT, 10),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI(0, 4, 5),\n    COL_TRI(0, 2, 4),\n    COL_TRI(2, 1, 6),\n    COL_TRI(7, 6, 1),\n    COL_TRI(7, 1, 3),\n    COL_TRI(2, 6, 4),\n    COL_TRI(4, 7, 5),\n    COL_TRI(4, 6, 7),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/platform_on_track/geo.inc.c",
    "content": "// 0x0E000758\nconst GeoLayout bitfs_geo_000758[] = {\n    GEO_CULLING_RADIUS(600),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bitfs_seg7_dl_07011798),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/platform_on_track/model.inc.c",
    "content": "// 0x070115D8 - 0x070116D8\nstatic const Vtx bitfs_seg7_vertex_070115D8[] = {\n    {{{   307,    205,   -306}, 0, {  4056,   5076}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{  -306,    205,   -306}, 0, {     0,   5076}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{  -306,    205,    307}, 0, {     0,    990}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{   307,    205,    307}, 0, {  4056,    990}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{   307,      0,   -306}, 0, {     0,    990}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  -306,    205,   -306}, 0, {  4056,      0}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{   307,    205,   -306}, 0, {     0,      0}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  -306,      0,   -306}, 0, {  4056,    990}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{   307,    205,    307}, 0, {  4056,      0}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  -306,      0,    307}, 0, {     0,    990}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{   307,      0,    307}, 0, {  4056,    990}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  -306,    205,    307}, 0, {     0,      0}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{   307,      0,   -306}, 0, {  4056,    990}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{   307,    205,    307}, 0, {     0,      0}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{   307,      0,    307}, 0, {     0,    990}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{   307,    205,   -306}, 0, {  4056,      0}, {0x52, 0x61, 0xac, 0xff}}},\n};\n\n// 0x070116D8 - 0x07011718\nstatic const Vtx bitfs_seg7_vertex_070116D8[] = {\n    {{{  -306,      0,    307}, 0, {     0,    990}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  -306,    205,    307}, 0, {     0,      0}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  -306,    205,   -306}, 0, {  4056,      0}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  -306,      0,   -306}, 0, {  4056,    990}, {0x52, 0x61, 0xac, 0xff}}},\n};\n\n// 0x07011718 - 0x07011798\nstatic const Gfx bitfs_seg7_dl_07011718[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bitfs_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_070115D8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_070116D8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07011798 - 0x07011808\nconst Gfx bitfs_seg7_dl_07011798[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_07011718),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitfs/script.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"behavior_data.h\"\n#include \"model_ids.h\"\n#include \"seq_ids.h\"\n#include \"segment_symbols.h\"\n#include \"level_commands.h\"\n\n#include \"game/level_update.h\"\n\n#include \"levels/scripts.h\"\n\n#include \"actors/common1.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/bitfs/header.h\"\n\nstatic const LevelScript script_func_local_1[] = {\n    OBJECT(/*model*/ MODEL_BITFS_PLATFORM_ON_TRACK,       /*pos*/ -5733, -3071,    0, /*angle*/ 0, 0, 0,   /*bhvParam*/ BPARAM1(0x07) | BPARAM2(0x33), /*bhv*/ bhvPlatformOnTrack),\n    OBJECT(/*model*/ MODEL_BITFS_TILTING_SQUARE_PLATFORM, /*pos*/ -1945, -3225, -715, /*angle*/ 0, 0, 0,   /*bhvParam*/ 0, /*bhv*/ bhvBitFSTiltingInvertedPyramid),\n    OBJECT(/*model*/ MODEL_BITFS_TILTING_SQUARE_PLATFORM, /*pos*/ -2866, -3225, -715, /*angle*/ 0, 0, 0,   /*bhvParam*/ 0, /*bhv*/ bhvBitFSTiltingInvertedPyramid),\n    OBJECT(/*model*/ MODEL_BITFS_SINKING_PLATFORMS,       /*pos*/ -1381,  3487,   96, /*angle*/ 0, 0, 0,   /*bhvParam*/ 0, /*bhv*/ bhvBitFSSinkingPlatforms),\n    OBJECT(/*model*/ MODEL_BITFS_SINKING_PLATFORMS,       /*pos*/  1126, -3065,  307, /*angle*/ 0, 0, 0,   /*bhvParam*/ 0, /*bhv*/ bhvBitFSSinkingPlatforms),\n    OBJECT(/*model*/ MODEL_BITFS_SINKING_PLATFORMS,       /*pos*/ -3225,  3487,   96, /*angle*/ 0, 0, 0,   /*bhvParam*/ 0, /*bhv*/ bhvBitFSSinkingPlatforms),\n    OBJECT(/*model*/ MODEL_BITFS_SINKING_CAGE_PLATFORM,   /*pos*/  6605, -3071,  266, /*angle*/ 0, 0, 0,   /*bhvParam*/ BPARAM2(0x00), /*bhv*/ bhvBitFSSinkingCagePlatform),\n    OBJECT(/*model*/ MODEL_BITFS_SINKING_CAGE_PLATFORM,   /*pos*/  1843,  3584,   96, /*angle*/ 0, 0, 0,   /*bhvParam*/ BPARAM2(0x01), /*bhv*/ bhvBitFSSinkingCagePlatform),\n    OBJECT(/*model*/ MODEL_BITFS_SINKING_CAGE_PLATFORM,   /*pos*/   614,  3584,   96, /*angle*/ 0, 0, 0,   /*bhvParam*/ BPARAM2(0x01), /*bhv*/ bhvBitFSSinkingCagePlatform),\n    OBJECT(/*model*/ MODEL_BITFS_SINKING_CAGE_PLATFORM,   /*pos*/  3072,  3584,   96, /*angle*/ 0, 0, 0,   /*bhvParam*/ BPARAM2(0x01), /*bhv*/ bhvBitFSSinkingCagePlatform),\n    OBJECT(/*model*/ MODEL_BITFS_ELEVATOR,                /*pos*/  2867, -1279,  307, /*angle*/ 0, 0, 0,   /*bhvParam*/ BPARAM1(ACTIVATED_BF_PLAT_TYPE_BITFS_ELEVATOR) | BPARAM2(159), /*bhv*/ bhvActivatedBackAndForthPlatform),\n    OBJECT(/*model*/ MODEL_BITFS_STRETCHING_PLATFORMS,    /*pos*/ -5836,   410,  300, /*angle*/ 0, 0, 0,   /*bhvParam*/ 0, /*bhv*/ bhvSquishablePlatform),\n    OBJECT(/*model*/ MODEL_BITFS_SEESAW_PLATFORM,         /*pos*/  4454, -2226,  266, /*angle*/ 0, 0, 0,   /*bhvParam*/ BPARAM2(0x04), /*bhv*/ bhvSeesawPlatform),\n    OBJECT(/*model*/ MODEL_BITFS_SEESAW_PLATFORM,         /*pos*/  5786, -2380,  266, /*angle*/ 0, 0, 0,   /*bhvParam*/ BPARAM2(0x04), /*bhv*/ bhvSeesawPlatform),\n    OBJECT(/*model*/ MODEL_BITFS_MOVING_SQUARE_PLATFORM,  /*pos*/ -3890,   102,  617, /*angle*/ 0, 90, 0,  /*bhvParam*/ BPARAM1(0x01) | BPARAM2(0x0C), /*bhv*/ bhvSlidingPlatform2),\n    OBJECT(/*model*/ MODEL_BITFS_MOVING_SQUARE_PLATFORM,  /*pos*/ -3276,   102,    2, /*angle*/ 0, 270, 0, /*bhvParam*/ BPARAM1(0x01) | BPARAM2(0x0C), /*bhv*/ bhvSlidingPlatform2),\n    OBJECT(/*model*/ MODEL_BITFS_SLIDING_PLATFORM,        /*pos*/  2103,   198,  312, /*angle*/ 0, 0, 0,   /*bhvParam*/ BPARAM1(0x01) | BPARAM2(0x9F), /*bhv*/ bhvSlidingPlatform2),\n    OBJECT(/*model*/ MODEL_BITFS_TUMBLING_PLATFORM,       /*pos*/  4979,  4250,   96, /*angle*/ 0, 0, 0,   /*bhvParam*/ BPARAM2(TUMBLING_BRIDGE_BP_BITFS), /*bhv*/ bhvTumblingBridge),\n    OBJECT(/*model*/ MODEL_NONE,                          /*pos*/  3890, -2043,  266, /*angle*/ 0, 0, 0,   /*bhvParam*/ BPARAM2(82),   /*bhv*/ bhvPoleGrabbing),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_2[] = {\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -3226, 3584, -822, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlamethrower),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -1382, 3584, -822, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlamethrower),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/  1229,  307, -412, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlamethrower),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_3[] = {\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/  1200, 5700,  160, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_1), /*bhv*/ bhvBowserCourseRedCoinStar),\n    RETURN(),\n};\n\nconst LevelScript level_bitfs_entry[] = {\n    INIT_LEVEL(),\n    LOAD_MIO0        (/*seg*/ 0x07, _bitfs_segment_7SegmentRomStart, _bitfs_segment_7SegmentRomEnd),\n    LOAD_MIO0_TEXTURE(/*seg*/ 0x09, _sky_mio0SegmentRomStart, _sky_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x0A, _bitfs_skybox_mio0SegmentRomStart, _bitfs_skybox_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x0B, _effect_mio0SegmentRomStart, _effect_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x05, _group2_mio0SegmentRomStart, _group2_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0C, _group2_geoSegmentRomStart, _group2_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x06, _group17_mio0SegmentRomStart, _group17_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0D, _group17_geoSegmentRomStart, _group17_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x08, _common0_mio0SegmentRomStart, _common0_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0F, _common0_geoSegmentRomStart, _common0_geoSegmentRomEnd),\n    ALLOC_LEVEL_POOL(),\n    MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),\n    JUMP_LINK(script_func_global_3),\n    JUMP_LINK(script_func_global_18),\n    JUMP_LINK(script_func_global_1),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_03,             bitfs_geo_0004B0),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_04,             bitfs_geo_0004C8),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_05,             bitfs_geo_0004E0),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_06,             bitfs_geo_0004F8),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_07,             bitfs_geo_000510),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_08,             bitfs_geo_000528),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_09,             bitfs_geo_000540),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_0A,             bitfs_geo_000558),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_0B,             bitfs_geo_000570),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_0C,             bitfs_geo_000588),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_0D,             bitfs_geo_0005A0),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_0E,             bitfs_geo_0005B8),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_0F,             bitfs_geo_0005D0),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_10,             bitfs_geo_0005E8),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_11,             bitfs_geo_000600),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_12,             bitfs_geo_000618),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_13,             bitfs_geo_000630),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_14,             bitfs_geo_000648),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_15,             bitfs_geo_000660),\n    LOAD_MODEL_FROM_GEO(MODEL_BITFS_PLATFORM_ON_TRACK,       bitfs_geo_000758),\n    LOAD_MODEL_FROM_GEO(MODEL_BITFS_TILTING_SQUARE_PLATFORM, bitfs_geo_0006C0),\n    LOAD_MODEL_FROM_GEO(MODEL_BITFS_SINKING_PLATFORMS,       bitfs_geo_000770),\n    LOAD_MODEL_FROM_GEO(MODEL_BITFS_BLUE_POLE,               bitfs_geo_0006A8),\n    LOAD_MODEL_FROM_GEO(MODEL_BITFS_SINKING_CAGE_PLATFORM,   bitfs_geo_000690),\n    LOAD_MODEL_FROM_GEO(MODEL_BITFS_ELEVATOR,                bitfs_geo_000678),\n    LOAD_MODEL_FROM_GEO(MODEL_BITFS_STRETCHING_PLATFORMS,    bitfs_geo_000708),\n    LOAD_MODEL_FROM_GEO(MODEL_BITFS_SEESAW_PLATFORM,         bitfs_geo_000788),\n    LOAD_MODEL_FROM_GEO(MODEL_BITFS_MOVING_SQUARE_PLATFORM,  bitfs_geo_000728),\n    LOAD_MODEL_FROM_GEO(MODEL_BITFS_SLIDING_PLATFORM,        bitfs_geo_000740),\n    LOAD_MODEL_FROM_GEO(MODEL_BITFS_TUMBLING_PLATFORM_PART,  bitfs_geo_0006D8),\n    LOAD_MODEL_FROM_GEO(MODEL_BITFS_TUMBLING_PLATFORM,       bitfs_geo_0006F0),\n\n    AREA(/*index*/ 1, bitfs_geo_0007A0),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ -7577, -1764,  0, /*angle*/ 0, 90, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvAirborneWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/  6735,  3681, 99, /*angle*/ 0, 0, 0,  /*bhvParam*/ BPARAM1(20) | BPARAM2(WARP_NODE_0B), /*bhv*/ bhvWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/  5886,  5000, 99, /*angle*/ 0, 90, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0C), /*bhv*/ bhvDeathWarp),\n        WARP_NODE(/*id*/ WARP_NODE_0A,    /*destLevel*/ LEVEL_BITFS,    /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_0B,    /*destLevel*/ LEVEL_BOWSER_2, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_0C,    /*destLevel*/ LEVEL_BITFS,    /*destArea*/ 1, /*destNode*/ WARP_NODE_0C, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH, /*destLevel*/ LEVEL_CASTLE,   /*destArea*/ 3, /*destNode*/ WARP_NODE_68, /*flags*/ WARP_NO_CHECKPOINT),\n        JUMP_LINK(script_func_local_1),\n        JUMP_LINK(script_func_local_2),\n        JUMP_LINK(script_func_local_3),\n        TERRAIN(/*terrainData*/ bitfs_seg7_collision_level),\n        MACRO_OBJECTS(/*objList*/ bitfs_seg7_macro_objs),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0000, /*seq*/ SEQ_LEVEL_KOOPA_ROAD),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_STONE),\n    END_AREA(),\n\n    FREE_LEVEL_POOL(),\n    MARIO_POS(/*area*/ 1, /*yaw*/ 90, /*pos*/ -7577, -2764, 0),\n    CALL(/*arg*/ 0, /*func*/ lvl_init_or_update),\n    CALL_LOOP(/*arg*/ 1, /*func*/ lvl_init_or_update),\n    CLEAR_LEVEL(),\n    SLEEP_BEFORE_EXIT(/*frames*/ 1),\n    EXIT(),\n};\n"
  },
  {
    "path": "levels/bitfs/seesaw_platform/collision.inc.c",
    "content": "// 0x07015928 - 0x070159AC\nconst Collision bitfs_seg7_collision_07015928[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-511, 179, 307),\n    COL_VERTEX(512, 179, 307),\n    COL_VERTEX(512, 179, -306),\n    COL_VERTEX(512, 26, -306),\n    COL_VERTEX(512, 26, 307),\n    COL_VERTEX(-511, 26, 307),\n    COL_VERTEX(-511, 26, -306),\n    COL_VERTEX(-511, 179, -306),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(1, 3, 2),\n    COL_TRI(1, 4, 3),\n    COL_TRI(5, 1, 0),\n    COL_TRI(5, 4, 1),\n    COL_TRI(4, 6, 3),\n    COL_TRI(7, 2, 3),\n    COL_TRI(0, 2, 7),\n    COL_TRI(4, 5, 6),\n    COL_TRI(0, 6, 5),\n    COL_TRI(0, 7, 6),\n    COL_TRI(7, 3, 6),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/seesaw_platform/geo.inc.c",
    "content": "// 0x0E000788\nconst GeoLayout bitfs_geo_000788[] = {\n    GEO_CULLING_RADIUS(800),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitfs_seg7_dl_07011E28),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/seesaw_platform/model.inc.c",
    "content": "// 0x07011C18 - 0x07011D18\nstatic const Vtx bitfs_seg7_vertex_07011C18[] = {\n    {{{  -511,    179,    307}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   512,    179,    307}, 0, {  1672,   -714}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   512,    179,   -306}, 0, {  2694,    308}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -511,    179,   -306}, 0, {   990,   2010}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   512,     26,    307}, 0, {  1672,   -714}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -511,     26,    307}, 0, {     0,    990}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -511,     26,   -306}, 0, {   990,   2010}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   512,     26,   -306}, 0, {  2694,    308}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   512,    179,    307}, 0, {   478,    478}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   512,     26,   -306}, 0, {  1246,   1754}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   512,    179,   -306}, 0, {  1500,   1498}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   512,     26,    307}, 0, {   224,    734}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -511,    179,    307}, 0, {   478,    478}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -511,    179,   -306}, 0, {  1500,   1498}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -511,     26,   -306}, 0, {  1246,   1754}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -511,     26,    307}, 0, {   224,    734}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x07011D18 - 0x07011D98\nstatic const Vtx bitfs_seg7_vertex_07011D18[] = {\n    {{{  -511,     26,    307}, 0, { -1988,  -1480}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   512,    179,    307}, 0, {     0,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -511,    179,    307}, 0, { -1734,  -1736}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   512,     26,    307}, 0, {  -286,    224}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -511,    179,   -306}, 0, { -1734,  -1736}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   512,     26,   -306}, 0, {  -286,    224}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -511,     26,   -306}, 0, { -1988,  -1480}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   512,    179,   -306}, 0, {     0,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x07011D98 - 0x07011E28\nconst Gfx bitfs_seg7_dl_07011D98[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_07011C18, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07011D18, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07011E28 - 0x07011E98\nconst Gfx bitfs_seg7_dl_07011E28[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_07011D98),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitfs/sinking_cage_platform/collision.inc.c",
    "content": "// 0x070151B4 - 0x07015238\nconst Collision bitfs_seg7_collision_sinking_cage_platform[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0xA),\n    COL_VERTEX(307, 0, 307),\n    COL_VERTEX(307, 0, -306),\n    COL_VERTEX(307, 152, 307),\n    COL_VERTEX(307, 152, -306),\n    COL_VERTEX(-306, 0, -306),\n    COL_VERTEX(307, 154, -306),\n    COL_VERTEX(-306, 154, -306),\n    COL_VERTEX(-306, 0, 307),\n    COL_VERTEX(-306, 154, 307),\n    COL_VERTEX(307, 154, 307),\n    COL_TRI_INIT(SURFACE_DEFAULT, 10),\n    COL_TRI(0, 1, 2),\n    COL_TRI(1, 3, 2),\n    COL_TRI(1, 4, 5),\n    COL_TRI(6, 4, 7),\n    COL_TRI(4, 6, 5),\n    COL_TRI(8, 6, 7),\n    COL_TRI(3, 6, 8),\n    COL_TRI(9, 7, 0),\n    COL_TRI(9, 8, 7),\n    COL_TRI(3, 8, 2),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/sinking_cage_platform/geo.inc.c",
    "content": "// 0x0E000690\nconst GeoLayout bitfs_geo_000690[] = {\n    GEO_CULLING_RADIUS(550),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bitfs_seg7_dl_0700F6A8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/sinking_cage_platform/model.inc.c",
    "content": "// 0x0700F590 - 0x0700F650\nstatic const Vtx bitfs_seg7_vertex_0700F590[] = {\n    {{{   307,    152,   -288}, 0, { -3092,  -2076}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{  -306,    154,   -288}, 0, {     0,  -2076}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{  -306,    154,    307}, 0, {     0,    990}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{   307,    152,    307}, 0, { -3092,    990}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{   307,    154,   -286}, 0, {  3060,   -722}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  -306,      0,   -286}, 0, {    -8,     44}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{   307,      0,   -286}, 0, {  3060,     44}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  -306,    154,   -286}, 0, {    -8,   -722}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{   307,    154,    307}, 0, {  3060,   -722}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  -306,      0,    307}, 0, {    -8,     44}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{   307,      0,    307}, 0, {  3060,     44}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  -306,    154,    307}, 0, {    -8,   -722}, {0x8c, 0x98, 0xd8, 0xff}}},\n};\n\n// 0x0700F650 - 0x0700F6A8\nstatic const Gfx bitfs_seg7_dl_0700F650[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bitfs_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_0700F590, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700F6A8 - 0x0700F718\nconst Gfx bitfs_seg7_dl_0700F6A8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_0700F650),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitfs/sinking_cage_pole/geo.inc.c",
    "content": "// 0x0E0006A8\nconst GeoLayout bitfs_geo_0006A8[] = {\n    GEO_CULLING_RADIUS(900),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitfs_seg7_dl_0700FB38),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/sinking_cage_pole/model.inc.c",
    "content": "// 0x0700F718 - 0x0700F818\nstatic const Vtx bitfs_seg7_vertex_0700F718[] = {\n    {{{    -7,    742,    -12}, 0, {   334,  -7110}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{     8,    742,     13}, 0, {   386,  -6956}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{    15,    742,      0}, 0, {   410,  -6880}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{    -7,    742,     13}, 0, {   334,  -7110}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{   -14,    742,      0}, 0, {   308,  -7186}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{     8,    742,    -12}, 0, {   386,  -6956}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{   297,      0,    307}, 0, {   308,   4054}, {0x5e, 0x58, 0xa6, 0xff}}},\n    {{{   297,    152,    307}, 0, {   644,   4054}, {0x5e, 0x58, 0xa6, 0xff}}},\n    {{{   297,      1,   -288}, 0, {   308,  -2076}, {0x5e, 0x58, 0xa6, 0xff}}},\n    {{{  -306,      0,    307}, 0, {   308,   4054}, {0x5e, 0x58, 0xa6, 0xff}}},\n    {{{  -306,    154,    307}, 0, {   650,   4054}, {0x5e, 0x58, 0xa6, 0xff}}},\n    {{{  -306,    154,   -288}, 0, {   650,  -2076}, {0x5e, 0x58, 0xa6, 0xff}}},\n    {{{  -306,      1,   -288}, 0, {   308,  -2076}, {0x5e, 0x58, 0xa6, 0xff}}},\n    {{{   307,      1,   -288}, 0, {   308,  -2076}, {0x5e, 0x58, 0xa6, 0xff}}},\n    {{{   307,    152,   -288}, 0, {   644,  -2076}, {0x5e, 0x58, 0xa6, 0xff}}},\n    {{{   307,    152,    307}, 0, {   644,   4054}, {0x5e, 0x58, 0xa6, 0xff}}},\n};\n\n// 0x0700F818 - 0x0700F8F8\nstatic const Vtx bitfs_seg7_vertex_0700F818[] = {\n    {{{   307,      1,   -288}, 0, {   308,  -2076}, {0x5e, 0x58, 0xa6, 0xff}}},\n    {{{   307,    152,    307}, 0, {   644,   4054}, {0x5e, 0x58, 0xa6, 0xff}}},\n    {{{   307,      0,    307}, 0, {   308,   4054}, {0x5e, 0x58, 0xa6, 0xff}}},\n    {{{  -296,      1,   -288}, 0, {   308,  -2076}, {0x5e, 0x58, 0xa6, 0xff}}},\n    {{{  -296,    154,   -288}, 0, {   650,  -2076}, {0x5e, 0x58, 0xa6, 0xff}}},\n    {{{  -296,      0,    307}, 0, {   308,   4054}, {0x5e, 0x58, 0xa6, 0xff}}},\n    {{{  -296,    154,    307}, 0, {   650,   4054}, {0x5e, 0x58, 0xa6, 0xff}}},\n    {{{   297,    152,    307}, 0, {   644,   4054}, {0x5e, 0x58, 0xa6, 0xff}}},\n    {{{   297,    152,   -288}, 0, {   644,  -2076}, {0x5e, 0x58, 0xa6, 0xff}}},\n    {{{   297,      1,   -288}, 0, {   308,  -2076}, {0x5e, 0x58, 0xa6, 0xff}}},\n    {{{   -14,      0,      0}, 0, {   308,   2010}, {0x97, 0xa0, 0xcd, 0xff}}},\n    {{{   -14,    742,      0}, 0, {   308,  -7186}, {0x97, 0xa0, 0xcd, 0xff}}},\n    {{{    -7,    742,    -12}, 0, {   334,  -7110}, {0x97, 0xa0, 0xcd, 0xff}}},\n    {{{    -7,      0,    -12}, 0, {   334,   2086}, {0x97, 0xa0, 0xcd, 0xff}}},\n};\n\n// 0x0700F8F8 - 0x0700F9F8\nstatic const Vtx bitfs_seg7_vertex_0700F8F8[] = {\n    {{{    15,      0,      0}, 0, {   410,   2316}, {0x97, 0xa0, 0xcd, 0xff}}},\n    {{{     8,    742,     13}, 0, {   386,  -6956}, {0x97, 0xa0, 0xcd, 0xff}}},\n    {{{     8,      0,     13}, 0, {   386,   2240}, {0x97, 0xa0, 0xcd, 0xff}}},\n    {{{    15,    742,      0}, 0, {   410,  -6880}, {0x97, 0xa0, 0xcd, 0xff}}},\n    {{{     8,      0,    -12}, 0, {   386,   2240}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{    15,    742,      0}, 0, {   410,  -6880}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{    15,      0,      0}, 0, {   410,   2316}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{     8,    742,    -12}, 0, {   386,  -6956}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{    -7,      0,     13}, 0, {   334,   2086}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{    -7,    742,     13}, 0, {   334,  -7110}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{   -14,    742,      0}, 0, {   308,  -7186}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{   -14,      0,      0}, 0, {   308,   2010}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{    -7,      0,    -12}, 0, {   334,   2086}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{    -7,    742,    -12}, 0, {   334,  -7110}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{     8,    742,    -12}, 0, {   386,  -6956}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{     8,      0,    -12}, 0, {   386,   2240}, {0x79, 0x8c, 0xeb, 0xff}}},\n};\n\n// 0x0700F9F8 - 0x0700FA38\nstatic const Vtx bitfs_seg7_vertex_0700F9F8[] = {\n    {{{     8,      0,     13}, 0, {   386,   2240}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{    -7,    742,     13}, 0, {   334,  -7110}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{    -7,      0,     13}, 0, {   334,   2086}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{     8,    742,     13}, 0, {   386,  -6956}, {0x79, 0x8c, 0xeb, 0xff}}},\n};\n\n// 0x0700FA38 - 0x0700FB38\nstatic const Gfx bitfs_seg7_dl_0700FA38[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bitfs_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_0700F718, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700F818, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700F8F8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700F9F8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700FB38 - 0x0700FBA8\nconst Gfx bitfs_seg7_dl_0700FB38[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_0700FA38),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitfs/sinking_platforms/collision.inc.c",
    "content": "// 0x07015858 - 0x07015928\nconst Collision bitfs_seg7_collision_sinking_platform[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0xE),\n    COL_VERTEX(922, 0, 614),\n    COL_VERTEX(614, 56, 614),\n    COL_VERTEX(307, 0, 614),\n    COL_VERTEX(922, 0, -613),\n    COL_VERTEX(307, 0, -613),\n    COL_VERTEX(614, 56, -613),\n    COL_VERTEX(0, 56, 614),\n    COL_VERTEX(-306, 0, 614),\n    COL_VERTEX(-613, 56, 614),\n    COL_VERTEX(-921, 0, 614),\n    COL_VERTEX(-306, 0, -613),\n    COL_VERTEX(0, 56, -613),\n    COL_VERTEX(-921, 0, -613),\n    COL_VERTEX(-613, 56, -613),\n    COL_TRI_INIT(SURFACE_DEFAULT, 6),\n    COL_TRI(0, 1, 2),\n    COL_TRI(3, 4, 5),\n    COL_TRI(2, 6, 7),\n    COL_TRI(7, 8, 9),\n    COL_TRI(4, 10, 11),\n    COL_TRI(10, 12, 13),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 12),\n    COL_TRI(5, 1, 0),\n    COL_TRI(12, 8, 13),\n    COL_TRI(12, 9, 8),\n    COL_TRI(13, 8, 7),\n    COL_TRI(13, 7, 10),\n    COL_TRI(10, 7, 6),\n    COL_TRI(10, 6, 11),\n    COL_TRI(11, 6, 2),\n    COL_TRI(11, 2, 4),\n    COL_TRI(4, 2, 1),\n    COL_TRI(4, 1, 5),\n    COL_TRI(5, 0, 3),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/sinking_platforms/geo.inc.c",
    "content": "// 0x0E000770\nconst GeoLayout bitfs_geo_000770[] = {\n    GEO_CULLING_RADIUS(1300),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitfs_seg7_dl_07011BA0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/sinking_platforms/model.inc.c",
    "content": "// 0x07011808 - 0x07011908\nstatic const Vtx bitfs_seg7_vertex_07011808[] = {\n    {{{  -921,      0,   -613}, 0, {     0,   3236}, {0x8c, 0x8c, 0xd8, 0xff}}},\n    {{{  -921,      0,    614}, 0, {  4056,   3236}, {0x8c, 0x8c, 0xd8, 0xff}}},\n    {{{  -613,     56,    614}, 0, {  4056,   1996}, {0x8c, 0x8c, 0xd8, 0xff}}},\n    {{{  -613,     56,   -613}, 0, {     0,   1996}, {0x8c, 0x8c, 0xd8, 0xff}}},\n    {{{  -306,      0,   -613}, 0, {     0,   3236}, {0x8c, 0x8c, 0xd8, 0xff}}},\n    {{{  -306,      0,    614}, 0, {  4056,   3236}, {0x8c, 0x8c, 0xd8, 0xff}}},\n    {{{     0,     56,    614}, 0, {  4056,   1996}, {0x8c, 0x8c, 0xd8, 0xff}}},\n    {{{     0,     56,   -613}, 0, {     0,   1996}, {0x8c, 0x8c, 0xd8, 0xff}}},\n    {{{   307,      0,   -613}, 0, {     0,   3236}, {0x8c, 0x8c, 0xd8, 0xff}}},\n    {{{   614,     56,    614}, 0, {  4056,   1996}, {0x8c, 0x8c, 0xd8, 0xff}}},\n    {{{   614,     56,   -613}, 0, {     0,   1996}, {0x8c, 0x8c, 0xd8, 0xff}}},\n    {{{   307,      0,    614}, 0, {  4056,   3236}, {0x8c, 0x8c, 0xd8, 0xff}}},\n    {{{  -613,     56,   -613}, 0, {     0,   2012}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  -613,     56,    614}, 0, {  4056,   2012}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  -306,      0,    614}, 0, {  4056,   3252}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  -306,      0,   -613}, 0, {     0,   3252}, {0x8c, 0x98, 0xd8, 0xff}}},\n};\n\n// 0x07011908 - 0x07011988\nstatic const Vtx bitfs_seg7_vertex_07011908[] = {\n    {{{     0,     56,   -613}, 0, {   990,   1996}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{   307,      0,    614}, 0, { -3096,   3236}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{   307,      0,   -613}, 0, {   990,   3236}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{     0,     56,    614}, 0, { -3096,   1996}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{   614,     56,   -613}, 0, {   990,   2012}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{   614,     56,    614}, 0, { -3096,   2012}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{   922,      0,    614}, 0, { -3096,   3252}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{   922,      0,   -613}, 0, {   990,   3252}, {0x8c, 0x98, 0xd8, 0xff}}},\n};\n\n// 0x07011988 - 0x07011A68\nstatic const Vtx bitfs_seg7_vertex_07011988[] = {\n    {{{   307,      0,    614}, 0, {     0,      0}, {0x48, 0x3b, 0x7d, 0xff}}},\n    {{{     0,     56,    614}, 0, {     0,      0}, {0x48, 0x3b, 0x7d, 0xff}}},\n    {{{  -306,      0,    614}, 0, {     0,      0}, {0x48, 0x3b, 0x7d, 0xff}}},\n    {{{   922,      0,    614}, 0, {     0,      0}, {0x48, 0x3b, 0x7d, 0xff}}},\n    {{{   614,     56,    614}, 0, {     0,      0}, {0x48, 0x3b, 0x7d, 0xff}}},\n    {{{   922,      0,   -613}, 0, {     0,      0}, {0x48, 0x3b, 0x7d, 0xff}}},\n    {{{   307,      0,   -613}, 0, {     0,      0}, {0x48, 0x3b, 0x7d, 0xff}}},\n    {{{   614,     56,   -613}, 0, {     0,      0}, {0x48, 0x3b, 0x7d, 0xff}}},\n    {{{  -306,      0,   -613}, 0, {     0,      0}, {0x48, 0x3b, 0x7d, 0xff}}},\n    {{{     0,     56,   -613}, 0, {     0,      0}, {0x48, 0x3b, 0x7d, 0xff}}},\n    {{{  -921,      0,   -613}, 0, {     0,      0}, {0x48, 0x3b, 0x7d, 0xff}}},\n    {{{  -613,     56,   -613}, 0, {     0,      0}, {0x48, 0x3b, 0x7d, 0xff}}},\n    {{{  -613,     56,    614}, 0, {     0,      0}, {0x48, 0x3b, 0x7d, 0xff}}},\n    {{{  -921,      0,    614}, 0, {     0,      0}, {0x48, 0x3b, 0x7d, 0xff}}},\n};\n\n// 0x07011A68 - 0x07011AB8\nstatic const Vtx bitfs_seg7_vertex_07011A68[] = {\n    {{{   307,      0,    614}, 0, {     0,      0}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{     0,     56,    614}, 0, {     0,      0}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{  -306,      0,    614}, 0, {     0,      0}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{  -613,     56,    614}, 0, {     0,      0}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{  -921,      0,    614}, 0, {     0,      0}, {0x79, 0x8c, 0xeb, 0xff}}},\n};\n\n// 0x07011AB8 - 0x07011B48\nstatic const Gfx bitfs_seg7_dl_07011AB8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_07011808, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07011908, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07011B48 - 0x07011BA0\nstatic const Gfx bitfs_seg7_dl_07011B48[] = {\n    gsSPVertex(bitfs_seg7_vertex_07011988, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0,  2, 12, 13, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07011A68, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07011BA0 - 0x07011C18\nconst Gfx bitfs_seg7_dl_07011BA0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_07011AB8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(bitfs_seg7_dl_07011B48),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitfs/sliding_platform/collision.inc.c",
    "content": "// 0x07015768 - 0x070157E0\nconst Collision bitfs_seg7_collision_07015768[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-361, 109, 179),\n    COL_VERTEX(355, 109, 179),\n    COL_VERTEX(355, 109, -188),\n    COL_VERTEX(355, 7, 179),\n    COL_VERTEX(355, 7, -188),\n    COL_VERTEX(-361, 7, 179),\n    COL_VERTEX(-361, 7, -188),\n    COL_VERTEX(-361, 109, -188),\n    COL_TRI_INIT(SURFACE_DEFAULT, 10),\n    COL_TRI(0, 1, 2),\n    COL_TRI(1, 3, 4),\n    COL_TRI(1, 4, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI(0, 5, 3),\n    COL_TRI(2, 4, 6),\n    COL_TRI(2, 6, 7),\n    COL_TRI(0, 2, 7),\n    COL_TRI(7, 5, 0),\n    COL_TRI(7, 6, 5),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/sliding_platform/geo.inc.c",
    "content": "// 0x0E000740\nconst GeoLayout bitfs_geo_000740[] = {\n    GEO_CULLING_RADIUS(550),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitfs_seg7_dl_07011568),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/sliding_platform/model.inc.c",
    "content": "// 0x070113A8 - 0x070114A8\nstatic const Vtx bitfs_seg7_vertex_070113A8[] = {\n    {{{   355,    109,    179}, 0, {   990,      0}, {0xce, 0x35, 0x16, 0xff}}},\n    {{{   355,      7,    179}, 0, {   990,    480}, {0xce, 0x35, 0x16, 0xff}}},\n    {{{   355,      7,   -188}, 0, {     0,    480}, {0xce, 0x35, 0x16, 0xff}}},\n    {{{   355,    109,   -188}, 0, {     0,      0}, {0xce, 0x35, 0x16, 0xff}}},\n    {{{  -361,    109,   -188}, 0, {   734,    480}, {0xce, 0x35, 0x16, 0xff}}},\n    {{{  -361,      7,   -188}, 0, {   734,    990}, {0xce, 0x35, 0x16, 0xff}}},\n    {{{  -361,      7,    179}, 0, {  -286,    990}, {0xce, 0x35, 0x16, 0xff}}},\n    {{{  -361,    109,    179}, 0, {  -286,    480}, {0xce, 0x35, 0x16, 0xff}}},\n    {{{  -361,    109,    179}, 0, {   224,    650}, {0xdf, 0x3f, 0x1f, 0xff}}},\n    {{{   355,      7,    179}, 0, {  2268,    820}, {0xdf, 0x3f, 0x1f, 0xff}}},\n    {{{   355,    109,    179}, 0, {  2268,    650}, {0xdf, 0x3f, 0x1f, 0xff}}},\n    {{{  -361,      7,    179}, 0, {   224,    820}, {0xdf, 0x3f, 0x1f, 0xff}}},\n    {{{   355,    109,   -188}, 0, {     0,    478}, {0xdf, 0x3f, 0x1f, 0xff}}},\n    {{{  -361,      7,   -188}, 0, {  -322,   2522}, {0xdf, 0x3f, 0x1f, 0xff}}},\n    {{{  -361,    109,   -188}, 0, {     0,   2522}, {0xdf, 0x3f, 0x1f, 0xff}}},\n    {{{   355,      7,   -188}, 0, {  -322,    478}, {0xdf, 0x3f, 0x1f, 0xff}}},\n};\n\n// 0x070114A8 - 0x070114E8\nstatic const Vtx bitfs_seg7_vertex_070114A8[] = {\n    {{{  -361,    109,    179}, 0, {   990,    990}, {0xff, 0xe5, 0x65, 0xff}}},\n    {{{   355,    109,   -188}, 0, {     0,   3032}, {0xff, 0xe5, 0x65, 0xff}}},\n    {{{  -361,    109,   -188}, 0, {     0,    990}, {0xff, 0xe5, 0x65, 0xff}}},\n    {{{   355,    109,    179}, 0, {   990,   3032}, {0xff, 0xe5, 0x65, 0xff}}},\n};\n\n// 0x070114E8 - 0x07011568\nstatic const Gfx bitfs_seg7_dl_070114E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_070113A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_070114A8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07011568 - 0x070115D8\nconst Gfx bitfs_seg7_dl_07011568[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_070114E8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitfs/stretching_platform/1.inc.c",
    "content": "// 0x070101D8 - 0x070102D8\nstatic const Vtx bitfs_seg7_vertex_070101D8[] = {\n    {{{     0,      0,   -298}, 0, {     0,   1000}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{ -1125,    717,    315}, 0, {  2012,  -3438}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{     0,      0,    314}, 0, {  2004,   1002}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  1331,   1946,   -911}, 0, {  2008,    990}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   154,   2662,   -298}, 0, {     0,  -3596}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  1331,   1946,   -298}, 0, {     0,    990}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   154,   2662,   -913}, 0, {  2012,  -3596}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   614,   1331,    315}, 0, {  2012,    990}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  1331,   1946,   -298}, 0, {     0,  -2150}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   614,   1331,   -298}, 0, {     0,    990}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  1331,   1946,    321}, 0, {  2032,  -2150}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -306,   1331,   -918}, 0, {  2028,  -2416}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{ -1125,    717,   -913}, 0, {  2012,    990}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{ -1125,    717,   -298}, 0, {     0,    990}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -306,   1331,   -298}, 0, {     0,  -2416}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{ -1125,    717,   -298}, 0, {     0,  -3440}, {0xff, 0xd4, 0x00, 0xff}}},\n};\n\n// 0x070102D8 - 0x07010340\nstatic const Gfx bitfs_seg7_dl_070102D8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_070101D8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07010340 - 0x070103B0\nconst Gfx bitfs_seg7_dl_07010340[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_070102D8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitfs/stretching_platform/2.inc.c",
    "content": "// 0x070103B0 - 0x070104A0\nstatic const Vtx bitfs_seg7_vertex_070103B0[] = {\n    {{{  1946,   1946,   -292}, 0, { -1818,   5842}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{  1843,   1741,   -292}, 0, { -1946,   5204}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{  1638,   1946,   -292}, 0, { -1052,   5076}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{   154,   2662,   -913}, 0, {  4440,   3160}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{    51,   2458,   -810}, 0, {  4312,   2520}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{  -357,   2458,   -810}, 0, {  5334,   1498}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{  -460,   2662,   -913}, 0, {  5972,   1626}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{  -460,   2662,    315}, 0, {  5972,   1626}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{  -357,   2458,    213}, 0, {  5334,   1498}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{  -153,   2458,    213}, 0, {  4822,   2010}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{  -153,   2662,    315}, 0, {  5206,   2394}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{  -153,   2662,   -298}, 0, {  5206,   2394}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{    51,   2458,   -298}, 0, {  4312,   2520}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{   154,   2662,   -298}, 0, {  4440,   3160}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{  -153,   2458,   -298}, 0, {  4822,   2010}, {0x7f, 0x52, 0xac, 0xff}}},\n};\n\n// 0x070104A0 - 0x07010590\nstatic const Vtx bitfs_seg7_vertex_070104A0[] = {\n    {{{ -1740,    717,    315}, 0, {  4312,  -6420}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{ -1637,    512,    213}, 0, {  3672,  -6548}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{ -1228,    512,    213}, 0, {  2650,  -5526}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{  1843,   1741,   -292}, 0, { -1946,   5204}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{  1638,   1741,   -292}, 0, { -1436,   4692}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{  1638,   1946,   -292}, 0, { -1052,   5076}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{  1638,   1741,   -804}, 0, { -1436,   4692}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{  1331,   1946,   -906}, 0, {  -286,   4310}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{  1638,   1946,   -906}, 0, { -1052,   5076}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{  1434,   1741,   -804}, 0, {  -924,   4182}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{  1434,   1741,    219}, 0, {  -924,   4182}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{  1843,   1741,    219}, 0, { -1946,   5204}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{  1946,   1946,    321}, 0, { -1818,   5842}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{  1331,   1946,    321}, 0, {  -286,   4310}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{ -1125,    717,    315}, 0, {  2778,  -4886}, {0x7f, 0x52, 0xac, 0xff}}},\n};\n\n// 0x07010590 - 0x07010680\nstatic const Vtx bitfs_seg7_vertex_07010590[] = {\n    {{{ -1125,    717,   -913}, 0, {  2778,  -4886}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{ -1228,    512,   -810}, 0, {  2650,  -5526}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{ -1637,    512,   -810}, 0, {  3672,  -6548}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{ -1740,    717,   -913}, 0, {  4312,  -6420}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{  -204,   1126,    208}, 0, {  1628,  -1438}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{   614,   1331,    310}, 0, {     0,    990}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{  -306,   1331,    310}, 0, {  2268,  -1310}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{   512,   1126,    208}, 0, {  -158,    352}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{   512,   1126,   -815}, 0, {  -158,    352}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{  -204,   1126,   -815}, 0, {  1628,  -1438}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{  -306,   1331,   -918}, 0, {  2268,  -1310}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{   614,   1331,   -918}, 0, {     0,    990}, {0x7f, 0x52, 0xac, 0xff}}},\n    {{{  1638,   1741,   -804}, 0, {  -142,   6466}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{  1638,   1946,   -906}, 0, {   -16,   7104}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{  1638,   1946,   -292}, 0, {  1516,   5572}, {0x56, 0x3d, 0x86, 0xff}}},\n};\n\n// 0x07010680 - 0x07010770\nstatic const Vtx bitfs_seg7_vertex_07010680[] = {\n    {{{  -460,   2662,   -913}, 0, {  1756,   8908}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{  -357,   2458,    213}, 0, {  4184,   5714}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{  -460,   2662,    315}, 0, {  4822,   5842}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{  -357,   2458,   -810}, 0, {  1628,   8270}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{    51,   2458,   -810}, 0, {  1628,   8270}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{   154,   2662,   -913}, 0, {  1756,   8908}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{   154,   2662,   -298}, 0, {  3290,   7376}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{    51,   2458,   -298}, 0, {  2906,   6992}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{  -153,   2458,   -298}, 0, {  2906,   6992}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{  -153,   2662,   -298}, 0, {  3290,   7376}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{  -153,   2662,    315}, 0, {  4822,   5842}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{  -153,   2458,    213}, 0, {  4184,   5714}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{ -1228,    512,   -810}, 0, { -3224,   3416}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{ -1125,    717,    315}, 0, {     0,    990}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{ -1228,    512,    213}, 0, {  -668,    862}, {0x56, 0x3d, 0x86, 0xff}}},\n};\n\n// 0x07010770 - 0x07010850\nstatic const Vtx bitfs_seg7_vertex_07010770[] = {\n    {{{  1638,   1741,   -804}, 0, {  -142,   6466}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{  1638,   1946,   -292}, 0, {  1516,   5572}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{  1638,   1741,   -292}, 0, {  1134,   5188}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{  1946,   1946,   -292}, 0, {  1516,   5572}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{  1946,   1946,    321}, 0, {  3050,   4038}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{  1843,   1741,    219}, 0, {  2412,   3910}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{  1843,   1741,   -292}, 0, {  1134,   5188}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{  1434,   1741,    219}, 0, {  2412,   3910}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{  1331,   1946,    321}, 0, {  3050,   4038}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{  1434,   1741,   -804}, 0, {  -142,   6466}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{  1331,   1946,   -906}, 0, {   -16,   7104}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{ -1228,    512,   -810}, 0, { -3224,   3416}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{ -1125,    717,   -913}, 0, { -3096,   4054}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{ -1125,    717,    315}, 0, {     0,    990}, {0x56, 0x3d, 0x86, 0xff}}},\n};\n\n// 0x07010850 - 0x07010940\nstatic const Vtx bitfs_seg7_vertex_07010850[] = {\n    {{{     0,   1331,   -150}, 0, {  1502,   -542}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{   307,   1331,   -150}, 0, {   734,    224}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{   307,   1126,   -150}, 0, {   352,   -160}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{ -1637,    512,    213}, 0, {  -668,    862}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{ -1740,    717,    315}, 0, {     0,    990}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{ -1740,    717,   -913}, 0, { -3096,   4054}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{ -1637,    512,   -810}, 0, { -3224,   3416}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{  -204,   1126,    208}, 0, {   850,   2406}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{  -306,   1331,    310}, 0, {  1488,   2534}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{  -204,   1126,   -815}, 0, { -1704,   4962}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{  -306,   1331,   -918}, 0, { -1576,   5600}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{   614,   1331,   -918}, 0, { -1576,   5600}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{   512,   1126,    208}, 0, {   850,   2406}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{   512,   1126,   -815}, 0, { -1704,   4962}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{   614,   1331,    310}, 0, {  1488,   2534}, {0x56, 0x3d, 0x86, 0xff}}},\n};\n\n// 0x07010940 - 0x07010A40\nstatic const Vtx bitfs_seg7_vertex_07010940[] = {\n    {{{     0,   1126,   -457}, 0, {  1118,   -926}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{   307,   1331,   -457}, 0, {   734,    224}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{     0,   1331,   -457}, 0, {  1502,   -542}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{     0,   1331,   -150}, 0, {  1502,   -542}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{   307,   1126,   -150}, 0, {   352,   -160}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{     0,   1126,   -150}, 0, {  1118,   -926}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{   307,   1126,   -457}, 0, {   352,   -160}, {0x56, 0x3d, 0x86, 0xff}}},\n    {{{ -1125,    717,   -913}, 0, {  1374,   5714}, {0xb5, 0xc0, 0xff, 0xff}}},\n    {{{ -1740,    717,    315}, 0, { -3224,   4182}, {0xb5, 0xc0, 0xff, 0xff}}},\n    {{{ -1125,    717,    315}, 0, { -1690,   2648}, {0xb5, 0xc0, 0xff, 0xff}}},\n    {{{  -460,   2662,   -913}, 0, {  3034,   4054}, {0xb5, 0xc0, 0xff, 0xff}}},\n    {{{  -460,   2662,    315}, 0, {     0,    990}, {0xb5, 0xc0, 0xff, 0xff}}},\n    {{{  -153,   2662,    315}, 0, {   734,    224}, {0xb5, 0xc0, 0xff, 0xff}}},\n    {{{   154,   2662,   -298}, 0, {  3034,    990}, {0xb5, 0xc0, 0xff, 0xff}}},\n    {{{   154,   2662,   -913}, 0, {  4568,   2520}, {0xb5, 0xc0, 0xff, 0xff}}},\n    {{{  -153,   2662,   -298}, 0, {  2268,   1754}, {0xb5, 0xc0, 0xff, 0xff}}},\n};\n\n// 0x07010A40 - 0x07010B30\nstatic const Vtx bitfs_seg7_vertex_07010A40[] = {\n    {{{  1331,   1946,    321}, 0, {  4424,  -3498}, {0xb5, 0xc0, 0xff, 0xff}}},\n    {{{  1638,   1946,   -292}, 0, {  6722,  -2730}, {0xb5, 0xc0, 0xff, 0xff}}},\n    {{{  1638,   1946,   -906}, 0, {  8256,  -1198}, {0xb5, 0xc0, 0xff, 0xff}}},\n    {{{  1331,   1946,   -906}, 0, {  7490,   -432}, {0xb5, 0xc0, 0xff, 0xff}}},\n    {{{  1946,   1946,    321}, 0, {  5956,  -5030}, {0xb5, 0xc0, 0xff, 0xff}}},\n    {{{  1946,   1946,   -292}, 0, {  7490,  -3498}, {0xb5, 0xc0, 0xff, 0xff}}},\n    {{{  -306,   1331,    310}, 0, {   364,    620}, {0xb5, 0xc0, 0xff, 0xff}}},\n    {{{     0,   1331,   -150}, 0, {  2280,   1000}, {0xb5, 0xc0, 0xff, 0xff}}},\n    {{{     0,   1331,   -457}, 0, {  3046,   1768}, {0xb5, 0xc0, 0xff, 0xff}}},\n    {{{ -1125,    717,   -913}, 0, {  1374,   5714}, {0xb5, 0xc0, 0xff, 0xff}}},\n    {{{ -1740,    717,   -913}, 0, {  -158,   7248}, {0xb5, 0xc0, 0xff, 0xff}}},\n    {{{ -1740,    717,    315}, 0, { -3224,   4182}, {0xb5, 0xc0, 0xff, 0xff}}},\n    {{{   614,   1331,   -918}, 0, {  5730,   1384}, {0xb5, 0xc0, 0xff, 0xff}}},\n    {{{   307,   1331,   -150}, 0, {  3046,    236}, {0xb5, 0xc0, 0xff, 0xff}}},\n    {{{   614,   1331,    310}, 0, {  2664,  -1680}, {0xb5, 0xc0, 0xff, 0xff}}},\n};\n\n// 0x07010B30 - 0x07010C30\nstatic const Vtx bitfs_seg7_vertex_07010B30[] = {\n    {{{  -306,   1331,   -918}, 0, {  3430,   3684}, {0xb5, 0xc0, 0xff, 0xff}}},\n    {{{   307,   1331,   -457}, 0, {  3814,   1000}, {0xb5, 0xc0, 0xff, 0xff}}},\n    {{{   614,   1331,   -918}, 0, {  5730,   1384}, {0xb5, 0xc0, 0xff, 0xff}}},\n    {{{   307,   1331,   -150}, 0, {  3046,    236}, {0xb5, 0xc0, 0xff, 0xff}}},\n    {{{     0,   1331,   -457}, 0, {  3046,   1768}, {0xb5, 0xc0, 0xff, 0xff}}},\n    {{{  -306,   1331,    310}, 0, {   364,    620}, {0xb5, 0xc0, 0xff, 0xff}}},\n    {{{   614,   1331,    310}, 0, {  2664,  -1680}, {0xb5, 0xc0, 0xff, 0xff}}},\n    {{{     0,   1331,   -150}, 0, {  2280,   1000}, {0xb5, 0xc0, 0xff, 0xff}}},\n    {{{ -1228,    512,    213}, 0, {  2510,   3556}, {0x42, 0x1f, 0x6b, 0xff}}},\n    {{{ -1637,    512,    213}, 0, {  3532,   4578}, {0x42, 0x1f, 0x6b, 0xff}}},\n    {{{ -1637,    512,   -810}, 0, {  6088,   2022}, {0x42, 0x1f, 0x6b, 0xff}}},\n    {{{  -357,   2458,   -810}, 0, {  2894,  -1168}, {0x42, 0x1f, 0x6b, 0xff}}},\n    {{{  -153,   2458,    213}, 0, {  -170,    876}, {0x42, 0x1f, 0x6b, 0xff}}},\n    {{{  -357,   2458,    213}, 0, {   338,   1384}, {0x42, 0x1f, 0x6b, 0xff}}},\n    {{{  -153,   2458,   -298}, 0, {  1104,   -402}, {0x42, 0x1f, 0x6b, 0xff}}},\n    {{{    51,   2458,   -298}, 0, {   594,   -914}, {0x42, 0x1f, 0x6b, 0xff}}},\n};\n\n// 0x07010C30 - 0x07010D20\nstatic const Vtx bitfs_seg7_vertex_07010C30[] = {\n    {{{  -357,   2458,   -810}, 0, {  2894,  -1168}, {0x42, 0x1f, 0x6b, 0xff}}},\n    {{{    51,   2458,   -810}, 0, {  1872,  -2190}, {0x42, 0x1f, 0x6b, 0xff}}},\n    {{{    51,   2458,   -298}, 0, {   594,   -914}, {0x42, 0x1f, 0x6b, 0xff}}},\n    {{{  1434,   1741,    219}, 0, { -4146,  -3070}, {0x42, 0x1f, 0x6b, 0xff}}},\n    {{{  1843,   1741,   -292}, 0, { -3892,  -5368}, {0x42, 0x1f, 0x6b, 0xff}}},\n    {{{  1843,   1741,    219}, 0, { -5168,  -4092}, {0x42, 0x1f, 0x6b, 0xff}}},\n    {{{  1638,   1741,   -292}, 0, { -3380,  -4858}, {0x42, 0x1f, 0x6b, 0xff}}},\n    {{{  1638,   1741,   -804}, 0, { -2102,  -6136}, {0x42, 0x1f, 0x6b, 0xff}}},\n    {{{  1434,   1741,   -804}, 0, { -1592,  -5624}, {0x42, 0x1f, 0x6b, 0xff}}},\n    {{{  -204,   1126,   -815}, 0, {  2522,  -1564}, {0x42, 0x1f, 0x6b, 0xff}}},\n    {{{     0,   1126,   -457}, 0, {  1118,  -1182}, {0x42, 0x1f, 0x6b, 0xff}}},\n    {{{     0,   1126,   -150}, 0, {   352,   -416}, {0x42, 0x1f, 0x6b, 0xff}}},\n    {{{ -1228,    512,    213}, 0, {  2510,   3556}, {0x42, 0x1f, 0x6b, 0xff}}},\n    {{{ -1637,    512,   -810}, 0, {  6088,   2022}, {0x42, 0x1f, 0x6b, 0xff}}},\n    {{{ -1228,    512,   -810}, 0, {  5066,   1000}, {0x42, 0x1f, 0x6b, 0xff}}},\n};\n\n// 0x07010D20 - 0x07010E20\nstatic const Vtx bitfs_seg7_vertex_07010D20[] = {\n    {{{     0,   1126,   -457}, 0, {  1514,    748}, {0x42, 0x1f, 0x6b, 0xff}}},\n    {{{     0,   1331,   -457}, 0, {  1898,    364}, {0x42, 0x1f, 0x6b, 0xff}}},\n    {{{     0,   1331,   -150}, 0, {  1130,   -402}, {0x42, 0x1f, 0x6b, 0xff}}},\n    {{{     0,   1126,   -150}, 0, {   748,    -20}, {0x42, 0x1f, 0x6b, 0xff}}},\n    {{{   307,   1126,   -150}, 0, {   748,    -20}, {0x42, 0x1f, 0x6b, 0xff}}},\n    {{{   307,   1331,   -457}, 0, {  1898,    364}, {0x42, 0x1f, 0x6b, 0xff}}},\n    {{{   307,   1126,   -457}, 0, {  1514,    748}, {0x42, 0x1f, 0x6b, 0xff}}},\n    {{{   307,   1331,   -150}, 0, {  1130,   -402}, {0x42, 0x1f, 0x6b, 0xff}}},\n    {{{   512,   1126,   -815}, 0, {   734,  -3354}, {0x42, 0x1f, 0x6b, 0xff}}},\n    {{{     0,   1126,   -457}, 0, {  1118,  -1182}, {0x42, 0x1f, 0x6b, 0xff}}},\n    {{{  -204,   1126,   -815}, 0, {  2522,  -1564}, {0x42, 0x1f, 0x6b, 0xff}}},\n    {{{   307,   1126,   -457}, 0, {   352,  -1948}, {0x42, 0x1f, 0x6b, 0xff}}},\n    {{{     0,   1126,   -150}, 0, {   352,   -416}, {0x42, 0x1f, 0x6b, 0xff}}},\n    {{{  -204,   1126,    208}, 0, {     0,    990}, {0x42, 0x1f, 0x6b, 0xff}}},\n    {{{   512,   1126,    208}, 0, { -1818,   -798}, {0x42, 0x1f, 0x6b, 0xff}}},\n    {{{   307,   1126,   -150}, 0, {  -414,  -1182}, {0x42, 0x1f, 0x6b, 0xff}}},\n};\n\n// 0x07010E20 - 0x07011138\nstatic const Gfx bitfs_seg7_dl_07010E20[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_070103B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_070104A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle(14,  0,  2, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07010590, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07010680, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07010770, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07010850, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07010940, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 14, 0x0),\n    gsSP2Triangles(10, 15, 13, 0x0, 10, 12, 15, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07010A40, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07010B30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  5,  6,  3, 0x0),\n    gsSP2Triangles( 5,  3,  7, 0x0,  5,  4,  0, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0, 11, 15, 14, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07010C30, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  7,  6, 0x0),\n    gsSP2Triangles( 3,  8,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_07010D20, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(10, 12, 13, 0x0, 12, 14, 13, 0x0),\n    gsSP2Triangles(12, 15, 14, 0x0, 14, 15, 11, 0x0),\n    gsSP1Triangle(14, 11,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07011138 - 0x070111A8\nconst Gfx bitfs_seg7_dl_07011138[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_07010E20),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitfs/stretching_platform/collision.inc.c",
    "content": "// 0x0701530C - 0x07015714\nconst Collision bitfs_seg7_collision_squishable_platform[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x46),\n    COL_VERTEX(-306, 1331, 310),\n    COL_VERTEX(0, 1331, -150),\n    COL_VERTEX(0, 1331, -457),\n    COL_VERTEX(-306, 1331, -918),\n    COL_VERTEX(614, 1331, 310),\n    COL_VERTEX(307, 1331, -150),\n    COL_VERTEX(307, 1126, -150),\n    COL_VERTEX(614, 1331, -918),\n    COL_VERTEX(307, 1331, -457),\n    COL_VERTEX(0, 1126, -150),\n    COL_VERTEX(0, 1126, -457),\n    COL_VERTEX(307, 1126, -457),\n    COL_VERTEX(512, 1126, 208),\n    COL_VERTEX(512, 1126, -815),\n    COL_VERTEX(-204, 1126, -815),\n    COL_VERTEX(-204, 1126, 208),\n    COL_VERTEX(-1228, 512, 213),\n    COL_VERTEX(-1228, 512, -810),\n    COL_VERTEX(-1740, 717, 315),\n    COL_VERTEX(-1637, 512, 213),\n    COL_VERTEX(-1637, 512, -810),\n    COL_VERTEX(-1125, 717, -913),\n    COL_VERTEX(-1740, 717, -913),\n    COL_VERTEX(-1125, 717, 315),\n    COL_VERTEX(1331, 1946, 321),\n    COL_VERTEX(1434, 1741, 219),\n    COL_VERTEX(1946, 1946, -292),\n    COL_VERTEX(1843, 1741, -292),\n    COL_VERTEX(1638, 1741, -804),\n    COL_VERTEX(-460, 2662, -913),\n    COL_VERTEX(-357, 2458, 213),\n    COL_VERTEX(1331, 1946, -911),\n    COL_VERTEX(51, 2458, -810),\n    COL_VERTEX(154, 2662, -913),\n    COL_VERTEX(-153, 2662, -298),\n    COL_VERTEX(-153, 2458, -298),\n    COL_VERTEX(-357, 2458, -810),\n    COL_VERTEX(51, 2458, -298),\n    COL_VERTEX(-153, 2662, 315),\n    COL_VERTEX(-460, 2662, 315),\n    COL_VERTEX(0, 0, -298),\n    COL_VERTEX(614, 1331, 315),\n    COL_VERTEX(-19, -19, 314),\n    COL_VERTEX(-1146, 696, 315),\n    COL_VERTEX(-327, 1311, -298),\n    COL_VERTEX(-1146, 696, -298),\n    COL_VERTEX(594, 1311, -298),\n    COL_VERTEX(1311, 1925, -298),\n    COL_VERTEX(133, 2642, -298),\n    COL_VERTEX(1946, 1946, 321),\n    COL_VERTEX(1638, 1946, -292),\n    COL_VERTEX(1638, 1946, -906),\n    COL_VERTEX(1331, 1946, -906),\n    COL_VERTEX(1434, 1741, -804),\n    COL_VERTEX(1843, 1741, 219),\n    COL_VERTEX(1638, 1741, -292),\n    COL_VERTEX(154, 2662, -298),\n    COL_VERTEX(-153, 2458, 213),\n    COL_VERTEX(1331, 1946, -298),\n    COL_VERTEX(-1125, 717, -298),\n    COL_VERTEX(0, 0, 314),\n    COL_VERTEX(-306, 1331, -298),\n    COL_VERTEX(614, 1331, -298),\n    COL_VERTEX(-19, -19, -298),\n    COL_VERTEX(-327, 1311, -918),\n    COL_VERTEX(-1146, 696, -913),\n    COL_VERTEX(594, 1311, 315),\n    COL_VERTEX(1311, 1925, 321),\n    COL_VERTEX(1311, 1925, -911),\n    COL_VERTEX(133, 2642, -913),\n    COL_TRI_INIT(SURFACE_DEFAULT, 100),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(0, 4, 5),\n    COL_TRI(0, 5, 1),\n    COL_TRI(1, 5, 6),\n    COL_TRI(7, 8, 5),\n    COL_TRI(7, 5, 4),\n    COL_TRI(1, 6, 9),\n    COL_TRI(10, 2, 1),\n    COL_TRI(10, 1, 9),\n    COL_TRI(10, 8, 2),\n    COL_TRI(3, 2, 8),\n    COL_TRI(3, 8, 7),\n    COL_TRI(10, 11, 8),\n    COL_TRI(12, 11, 13),\n    COL_TRI(13, 11, 10),\n    COL_TRI(13, 10, 14),\n    COL_TRI(14, 10, 9),\n    COL_TRI(12, 6, 11),\n    COL_TRI(9, 6, 12),\n    COL_TRI(14, 9, 15),\n    COL_TRI(9, 12, 15),\n    COL_TRI(6, 5, 8),\n    COL_TRI(6, 8, 11),\n    COL_TRI(16, 20, 17),\n    COL_TRI(16, 19, 20),\n    COL_TRI(17, 23, 16),\n    COL_TRI(17, 21, 23),\n    COL_TRI(18, 19, 16),\n    COL_TRI(19, 18, 22),\n    COL_TRI(20, 19, 22),\n    COL_TRI(21, 22, 18),\n    COL_TRI(21, 18, 23),\n    COL_TRI(13, 14, 3),\n    COL_TRI(13, 3, 7),\n    COL_TRI(7, 12, 13),\n    COL_TRI(0, 3, 14),\n    COL_TRI(7, 4, 12),\n    COL_TRI(15, 12, 4),\n    COL_TRI(15, 4, 0),\n    COL_TRI(15, 0, 14),\n    COL_TRI(22, 21, 20),\n    COL_TRI(21, 17, 20),\n    COL_TRI(23, 18, 16),\n    COL_TRI(26, 27, 50),\n    COL_TRI(24, 49, 26),\n    COL_TRI(24, 26, 50),\n    COL_TRI(24, 50, 51),\n    COL_TRI(24, 51, 52),\n    COL_TRI(25, 24, 53),\n    COL_TRI(24, 52, 53),\n    COL_TRI(25, 49, 24),\n    COL_TRI(25, 54, 49),\n    COL_TRI(26, 54, 27),\n    COL_TRI(26, 49, 54),\n    COL_TRI(27, 55, 50),\n    COL_TRI(28, 51, 50),\n    COL_TRI(28, 50, 55),\n    COL_TRI(28, 52, 51),\n    COL_TRI(28, 53, 52),\n    COL_TRI(25, 28, 55),\n    COL_TRI(25, 55, 27),\n    COL_TRI(25, 27, 54),\n    COL_TRI(25, 53, 28),\n    COL_TRI(29, 39, 38),\n    COL_TRI(37, 32, 56),\n    COL_TRI(29, 38, 34),\n    COL_TRI(29, 34, 56),\n    COL_TRI(29, 56, 33),\n    COL_TRI(31, 33, 56),\n    COL_TRI(29, 33, 36),\n    COL_TRI(32, 33, 56),\n    COL_TRI(33, 32, 36),\n    COL_TRI(34, 35, 37),\n    COL_TRI(34, 37, 56),\n    COL_TRI(35, 34, 38),\n    COL_TRI(36, 57, 30),\n    COL_TRI(36, 35, 57),\n    COL_TRI(36, 32, 37),\n    COL_TRI(36, 37, 35),\n    COL_TRI(35, 38, 57),\n    COL_TRI(38, 39, 57),\n    COL_TRI(39, 30, 57),\n    COL_TRI(30, 29, 36),\n    COL_TRI(41, 24, 58),\n    COL_TRI(29, 30, 39),\n    COL_TRI(40, 59, 23),\n    COL_TRI(40, 23, 60),\n    COL_TRI(3, 59, 61),\n    COL_TRI(3, 21, 59),\n    COL_TRI(41, 58, 62),\n    COL_TRI(31, 56, 58),\n    COL_TRI(42, 43, 63),\n    COL_TRI(43, 45, 63),\n    COL_TRI(44, 45, 64),\n    COL_TRI(45, 65, 64),\n    COL_TRI(46, 47, 66),\n    COL_TRI(48, 69, 68),\n    COL_TRI(47, 48, 68),\n    COL_TRI(47, 67, 66),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/stretching_platform/geo.inc.c",
    "content": "// 0x0E000708\nconst GeoLayout bitfs_geo_000708[] = {\n    GEO_CULLING_RADIUS(3000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bitfs_seg7_dl_07010340),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitfs_seg7_dl_07011138),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/texture.inc.c",
    "content": "// 0x07000000 - 0x07001000\nALIGNED8 static const Texture bitfs_seg7_texture_07000000[] = {\n#include \"levels/bitfs/0.rgba16.inc.c\"\n};\n\n// 0x07001000 - 0x07001800\nALIGNED8 static const Texture bitfs_seg7_texture_07001000[] = {\n#include \"levels/bitfs/1.rgba16.inc.c\"\n};\n\n// 0x07001800 - 0x07002000\nALIGNED8 static const Texture bitfs_seg7_texture_07001800[] = {\n#include \"levels/bitfs/2.rgba16.inc.c\"\n};\n"
  },
  {
    "path": "levels/bitfs/tilting_square_platform/collision.inc.c",
    "content": "// 0x07015238 - 0x07015286\nconst Collision bitfs_seg7_collision_inverted_pyramid[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x5),\n    COL_VERTEX(307, 307, -306),\n    COL_VERTEX(-306, 307, -306),\n    COL_VERTEX(-306, 307, 307),\n    COL_VERTEX(307, 307, 307),\n    COL_VERTEX(0, 0, 0),\n    COL_TRI_INIT(SURFACE_DEFAULT, 6),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(2, 1, 4),\n    COL_TRI(4, 3, 2),\n    COL_TRI(0, 4, 1),\n    COL_TRI(4, 0, 3),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/tilting_square_platform/geo.inc.c",
    "content": "// 0x0E0006C0\nconst GeoLayout bitfs_geo_0006C0[] = {\n    GEO_CULLING_RADIUS(700),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitfs_seg7_dl_0700FD08),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/tilting_square_platform/model.inc.c",
    "content": "// 0x0700FBA8 - 0x0700FBE8\nstatic const Vtx bitfs_seg7_vertex_0700FBA8[] = {\n    {{{   307,    307,   -306}, 0, {  2420,    990}, {0x70, 0x7f, 0x60, 0xff}}},\n    {{{  -306,    307,    307}, 0, {     0,    990}, {0x70, 0x7f, 0x60, 0xff}}},\n    {{{   307,    307,    307}, 0, {  1194,   -236}, {0x70, 0x7f, 0x60, 0xff}}},\n    {{{  -306,    307,   -306}, 0, {  1194,   2214}, {0x70, 0x7f, 0x60, 0xff}}},\n};\n\n// 0x0700FBE8 - 0x0700FC88\nstatic const Vtx bitfs_seg7_vertex_0700FBE8[] = {\n    {{{   307,    307,   -306}, 0, {   478,   1498}, {0xff, 0x00, 0x00, 0xff}}},\n    {{{     0,      0,      0}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0xff}}},\n    {{{  -306,    307,   -306}, 0, {   478,    480}, {0xff, 0x00, 0x00, 0xff}}},\n    {{{   307,    307,    307}, 0, {  -540,   1498}, {0xff, 0x00, 0x00, 0xff}}},\n    {{{  -306,    307,    307}, 0, {  -542,    480}, {0xff, 0x00, 0x00, 0xff}}},\n    {{{  -306,    307,    307}, 0, {  -542,    480}, {0x96, 0x00, 0x00, 0xff}}},\n    {{{  -306,    307,   -306}, 0, {   478,    480}, {0x96, 0x00, 0x00, 0xff}}},\n    {{{     0,      0,      0}, 0, {     0,    990}, {0x96, 0x00, 0x00, 0xff}}},\n    {{{   307,    307,   -306}, 0, {   478,   1498}, {0x96, 0x00, 0x00, 0xff}}},\n    {{{   307,    307,    307}, 0, {  -540,   1498}, {0x96, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700FC88 - 0x0700FCC0\nstatic const Gfx bitfs_seg7_dl_0700FC88[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_0700FBA8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700FCC0 - 0x0700FD08\nstatic const Gfx bitfs_seg7_dl_0700FCC0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bitfs_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_0700FBE8, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  7,  8,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700FD08 - 0x0700FD80\nconst Gfx bitfs_seg7_dl_0700FD08[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_0700FC88),\n    gsSPDisplayList(bitfs_seg7_dl_0700FCC0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitfs/tumbling_platform_far/geo.inc.c",
    "content": "// 0x0E0006F0\nconst GeoLayout bitfs_geo_0006F0[] = {\n    GEO_CULLING_RADIUS(800),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitfs_seg7_dl_07010168),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/tumbling_platform_far/model.inc.c",
    "content": "// 0x07010000 - 0x07010100\nstatic const Vtx bitfs_seg7_vertex_07010000[] = {\n    {{{  -575,      0,    307}, 0, {   480,   -542}, {0xd3, 0x53, 0x00, 0xff}}},\n    {{{   576,    154,    307}, 0, {  9678,   -542}, {0xd3, 0x53, 0x00, 0xff}}},\n    {{{  -575,    154,    307}, 0, {   480,   -542}, {0xd3, 0x53, 0x00, 0xff}}},\n    {{{   576,      0,    307}, 0, {  9678,   -542}, {0xd3, 0x53, 0x00, 0xff}}},\n    {{{  -575,    154,   -306}, 0, {   480,    480}, {0xd3, 0x53, 0x00, 0xff}}},\n    {{{   576,      0,   -306}, 0, {  9678,    480}, {0xd3, 0x53, 0x00, 0xff}}},\n    {{{  -575,      0,   -306}, 0, {   480,    480}, {0xd3, 0x53, 0x00, 0xff}}},\n    {{{   576,    154,   -306}, 0, {  9678,    480}, {0xd3, 0x53, 0x00, 0xff}}},\n    {{{  -575,      0,   -306}, 0, {   480,    480}, {0x78, 0x16, 0x01, 0xff}}},\n    {{{   576,      0,   -306}, 0, {  9678,    480}, {0x78, 0x16, 0x01, 0xff}}},\n    {{{   576,      0,    307}, 0, {  9678,   -542}, {0x78, 0x16, 0x01, 0xff}}},\n    {{{  -575,      0,    307}, 0, {   480,   -542}, {0x78, 0x16, 0x01, 0xff}}},\n    {{{  -575,    154,    307}, 0, {   480,   -542}, {0xfe, 0xa5, 0x39, 0xff}}},\n    {{{   576,    154,   -306}, 0, {  9678,    480}, {0xfe, 0xa5, 0x39, 0xff}}},\n    {{{  -575,    154,   -306}, 0, {   480,    480}, {0xfe, 0xa5, 0x39, 0xff}}},\n    {{{   576,    154,    307}, 0, {  9678,   -542}, {0xfe, 0xa5, 0x39, 0xff}}},\n};\n\n// 0x07010100 - 0x07010168\nstatic const Gfx bitfs_seg7_dl_07010100[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bitfs_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_07010000, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07010168 - 0x070101D8\nconst Gfx bitfs_seg7_dl_07010168[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_07010100),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bitfs/tumbling_platform_near/collision.inc.c",
    "content": "// 0x07015288 - 0x0701530C\nconst Collision bitfs_seg7_collision_07015288[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(64, 0, -306),\n    COL_VERTEX(64, 154, -306),\n    COL_VERTEX(64, 154, 307),\n    COL_VERTEX(64, 0, 307),\n    COL_VERTEX(-63, 154, 307),\n    COL_VERTEX(-63, 0, 307),\n    COL_VERTEX(-63, 154, -306),\n    COL_VERTEX(-63, 0, -306),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(2, 4, 5),\n    COL_TRI(2, 5, 3),\n    COL_TRI(6, 4, 2),\n    COL_TRI(6, 2, 1),\n    COL_TRI(5, 4, 6),\n    COL_TRI(5, 6, 7),\n    COL_TRI(0, 3, 5),\n    COL_TRI(0, 5, 7),\n    COL_TRI(7, 6, 1),\n    COL_TRI(7, 1, 0),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/tumbling_platform_near/geo.inc.c",
    "content": "// 0x0E0006D8\nconst GeoLayout bitfs_geo_0006D8[] = {\n    GEO_CULLING_RADIUS(400),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bitfs_seg7_dl_0700FF90),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bitfs/tumbling_platform_near/model.inc.c",
    "content": "// 0x0700FD80 - 0x0700FE80\nstatic const Vtx bitfs_seg7_vertex_0700FD80[] = {\n    {{{   -63,      0,    307}, 0, {  9678,   -542}, {0xb2, 0x45, 0x00, 0xff}}},\n    {{{   -63,    154,   -306}, 0, {  9678,    480}, {0xb2, 0x45, 0x00, 0xff}}},\n    {{{   -63,      0,   -306}, 0, {  9678,    480}, {0xb2, 0x45, 0x00, 0xff}}},\n    {{{   -63,    154,    307}, 0, {  9678,   -542}, {0xb2, 0x45, 0x00, 0xff}}},\n    {{{    64,      0,   -306}, 0, { 10700,    480}, {0xb2, 0x45, 0x00, 0xff}}},\n    {{{    64,    154,   -306}, 0, { 10700,    480}, {0xb2, 0x45, 0x00, 0xff}}},\n    {{{    64,    154,    307}, 0, { 10700,   -542}, {0xb2, 0x45, 0x00, 0xff}}},\n    {{{    64,      0,    307}, 0, { 10700,   -542}, {0xb2, 0x45, 0x00, 0xff}}},\n    {{{    64,    154,    307}, 0, { 10700,   -542}, {0xd3, 0x53, 0x00, 0xff}}},\n    {{{   -63,    154,    307}, 0, {  9678,   -542}, {0xd3, 0x53, 0x00, 0xff}}},\n    {{{   -63,      0,    307}, 0, {  9678,   -542}, {0xd3, 0x53, 0x00, 0xff}}},\n    {{{    64,      0,    307}, 0, { 10700,   -542}, {0xd3, 0x53, 0x00, 0xff}}},\n    {{{   -63,      0,   -306}, 0, {  9678,    480}, {0xd3, 0x53, 0x00, 0xff}}},\n    {{{    64,    154,   -306}, 0, { 10700,    480}, {0xd3, 0x53, 0x00, 0xff}}},\n    {{{    64,      0,   -306}, 0, { 10700,    480}, {0xd3, 0x53, 0x00, 0xff}}},\n    {{{   -63,    154,   -306}, 0, {  9678,    480}, {0xd3, 0x53, 0x00, 0xff}}},\n};\n\n// 0x0700FE80 - 0x0700FF00\nstatic const Vtx bitfs_seg7_vertex_0700FE80[] = {\n    {{{    64,      0,   -306}, 0, { 10700,    480}, {0x78, 0x16, 0x01, 0xff}}},\n    {{{    64,      0,    307}, 0, { 10700,   -542}, {0x78, 0x16, 0x01, 0xff}}},\n    {{{   -63,      0,    307}, 0, {  9678,   -542}, {0x78, 0x16, 0x01, 0xff}}},\n    {{{   -63,      0,   -306}, 0, {  9678,    480}, {0x78, 0x16, 0x01, 0xff}}},\n    {{{   -63,    154,   -306}, 0, {  9678,    480}, {0xfe, 0xa5, 0x39, 0xff}}},\n    {{{   -63,    154,    307}, 0, {  9678,   -542}, {0xfe, 0xa5, 0x39, 0xff}}},\n    {{{    64,    154,    307}, 0, { 10700,   -542}, {0xfe, 0xa5, 0x39, 0xff}}},\n    {{{    64,    154,   -306}, 0, { 10700,    480}, {0xfe, 0xa5, 0x39, 0xff}}},\n};\n\n// 0x0700FF00 - 0x0700FF90\nstatic const Gfx bitfs_seg7_dl_0700FF00[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bitfs_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bitfs_seg7_vertex_0700FD80, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bitfs_seg7_vertex_0700FE80, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700FF90 - 0x07010000\nconst Gfx bitfs_seg7_dl_0700FF90[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bitfs_seg7_dl_0700FF00),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/1/model.inc.c",
    "content": "// 0x07002800 - 0x070028C0\nstatic const Vtx bits_seg7_vertex_07002800[] = {\n    {{{  5570,   3242,  -3991}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5468,   3242,  -3991}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5570,   3160,  -3930}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5468,   3160,  -3930}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6517,   3791,  -1836}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6414,   3791,  -1836}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6517,   3709,  -1774}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6414,   3709,  -1774}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5966,   3777,  -3991}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5864,   3777,  -3991}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5966,   3695,  -3930}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5864,   3695,  -3930}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070028C0 - 0x07002918\nstatic const Gfx bits_seg7_dl_070028C0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_metal_hole),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_07002800, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07002918 - 0x07002988\nconst Gfx bits_seg7_dl_07002918[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bits_seg7_dl_070028C0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/10/geo.inc.c",
    "content": "// 0x0E0004F0\nconst GeoLayout bits_geo_0004F0[] = {\n    GEO_CULLING_RADIUS(1800),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bits_seg7_dl_07009690),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/10/model.inc.c",
    "content": "// 0x07009058 - 0x07009158\nstatic const Vtx bits_seg7_vertex_07009058[] = {\n    {{{   614,    154,    819}, 0, {   990,   -542}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{  1229,    154,    717}, 0, {  2182,  -1394}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{  1229,    154,    102}, 0, {  3204,   -372}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{   307,    154,      0}, 0, {  1842,   1328}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{  -562,    -50,    205}, 0, {    54,   2436}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{  -101,     51,    205}, 0, {   820,   1670}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{  -460,    -50,   -306}, 0, {  1076,   3118}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{ -1023,   -101,   -204}, 0, {     0,   3884}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{ -1023,   -101,   -613}, 0, {   650,   4564}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{ -1504,    -20,   -188}, 0, {  -858,   4658}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{ -1504,    -20,   -546}, 0, {  -260,   5254}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{  -153,    -50,    666}, 0, {     0,    990}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{ -1023,   -101,   -204}, 0, {     0,   3884}, {0x54, 0x16, 0xce, 0xff}}},\n    {{{  -562,   -153,    205}, 0, {    54,   2436}, {0x54, 0x16, 0xce, 0xff}}},\n    {{{  -562,    -50,    205}, 0, {    54,   2436}, {0x54, 0x16, 0xce, 0xff}}},\n    {{{ -1023,   -204,   -204}, 0, {     0,   3884}, {0x54, 0x16, 0xce, 0xff}}},\n};\n\n// 0x07009158 - 0x07009258\nstatic const Vtx bits_seg7_vertex_07009158[] = {\n    {{{  -153,    -50,    666}, 0, {     0,    990}, {0x54, 0x16, 0xce, 0xff}}},\n    {{{  -153,   -153,    666}, 0, {     0,    990}, {0x54, 0x16, 0xce, 0xff}}},\n    {{{   614,    154,    819}, 0, {   990,   -542}, {0x54, 0x16, 0xce, 0xff}}},\n    {{{   512,   -153,    666}, 0, {  1076,   -118}, {0x54, 0x16, 0xce, 0xff}}},\n    {{{ -1023,   -101,   -613}, 0, {   650,   4564}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{ -1023,   -204,   -613}, 0, {   650,   4564}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{ -1504,    -20,   -546}, 0, {  -260,   5254}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{ -1504,   -225,   -546}, 0, {  -260,   5254}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{   205,   -255,      0}, 0, {  1672,   1500}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{  -101,    -50,    205}, 0, {   820,   1670}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{  -101,     51,    205}, 0, {   820,   1670}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{   307,    154,      0}, 0, {  1842,   1328}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{  1126,    -50,    102}, 0, {  3034,   -202}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{  1229,    154,    717}, 0, {  2182,  -1394}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{  1126,    -50,    666}, 0, {  2098,  -1140}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{  1229,    154,    102}, 0, {  3204,   -372}, {0x61, 0x52, 0xac, 0xff}}},\n};\n\n// 0x07009258 - 0x07009338\nstatic const Vtx bits_seg7_vertex_07009258[] = {\n    {{{  -460,    -50,   -306}, 0, {  1076,   3118}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{  -460,   -153,   -306}, 0, {  1076,   3118}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{ -1023,   -204,   -613}, 0, {   650,   4564}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{  -101,     51,    205}, 0, {   820,   1670}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{ -1023,   -101,   -613}, 0, {   650,   4564}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{  -101,    -50,    205}, 0, {   820,   1670}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{  -562,    -50,    205}, 0, {    54,   2436}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{  -153,   -153,    666}, 0, {     0,    990}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{  -153,    -50,    666}, 0, {     0,    990}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{  -562,   -153,    205}, 0, {    54,   2436}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{   307,    154,      0}, 0, {  1842,   1328}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{  1229,    154,    102}, 0, {  3204,   -372}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{  1126,    -50,    102}, 0, {  3034,   -202}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{   205,   -255,      0}, 0, {  1672,   1500}, {0x41, 0x43, 0x8c, 0xff}}},\n};\n\n// 0x07009338 - 0x07009438\nstatic const Vtx bits_seg7_vertex_07009338[] = {\n    {{{ -1504,    -20,   -188}, 0, {  -858,   4658}, {0x6a, 0x3f, 0xbf, 0xff}}},\n    {{{ -1504,   -225,   -188}, 0, {  -858,   4658}, {0x6a, 0x3f, 0xbf, 0xff}}},\n    {{{ -1023,   -204,   -204}, 0, {     0,   3884}, {0x6a, 0x3f, 0xbf, 0xff}}},\n    {{{ -1023,   -101,   -204}, 0, {     0,   3884}, {0x6a, 0x3f, 0xbf, 0xff}}},\n    {{{   512,   -153,    666}, 0, {  1076,   -118}, {0x6a, 0x3f, 0xbf, 0xff}}},\n    {{{  1126,    -50,    666}, 0, {  2098,  -1140}, {0x6a, 0x3f, 0xbf, 0xff}}},\n    {{{  1229,    154,    717}, 0, {  2182,  -1394}, {0x6a, 0x3f, 0xbf, 0xff}}},\n    {{{   614,    154,    819}, 0, {   990,   -542}, {0x6a, 0x3f, 0xbf, 0xff}}},\n    {{{  -101,    -50,    205}, 0, {   820,   1670}, {0x35, 0x00, 0x35, 0xff}}},\n    {{{   205,   -255,      0}, 0, {  1672,   1500}, {0x35, 0x00, 0x35, 0xff}}},\n    {{{   512,   -153,    666}, 0, {  1076,   -118}, {0x35, 0x00, 0x35, 0xff}}},\n    {{{  -153,   -153,    666}, 0, {     0,    990}, {0x35, 0x00, 0x35, 0xff}}},\n    {{{  -460,   -153,   -306}, 0, {  1076,   3118}, {0x35, 0x00, 0x35, 0xff}}},\n    {{{  -562,   -153,    205}, 0, {    54,   2436}, {0x35, 0x00, 0x35, 0xff}}},\n    {{{ -1023,   -204,   -204}, 0, {     0,   3884}, {0x35, 0x00, 0x35, 0xff}}},\n    {{{ -1023,   -204,   -613}, 0, {   650,   4564}, {0x35, 0x00, 0x35, 0xff}}},\n};\n\n// 0x07009438 - 0x070094F8\nstatic const Vtx bits_seg7_vertex_07009438[] = {\n    {{{   205,   -255,      0}, 0, {  1672,   1500}, {0x43, 0x00, 0x43, 0xff}}},\n    {{{  1126,    -50,    666}, 0, {  2098,  -1140}, {0x43, 0x00, 0x43, 0xff}}},\n    {{{   512,   -153,    666}, 0, {  1076,   -118}, {0x43, 0x00, 0x43, 0xff}}},\n    {{{  -101,    -50,    205}, 0, {   820,   1670}, {0x43, 0x00, 0x43, 0xff}}},\n    {{{  -153,   -153,    666}, 0, {     0,    990}, {0x43, 0x00, 0x43, 0xff}}},\n    {{{  -562,   -153,    205}, 0, {    54,   2436}, {0x43, 0x00, 0x43, 0xff}}},\n    {{{ -1504,   -225,   -188}, 0, {  -858,   4658}, {0x43, 0x00, 0x43, 0xff}}},\n    {{{ -1504,   -225,   -546}, 0, {  -260,   5254}, {0x43, 0x00, 0x43, 0xff}}},\n    {{{ -1023,   -204,   -613}, 0, {   650,   4564}, {0x43, 0x00, 0x43, 0xff}}},\n    {{{  -460,   -153,   -306}, 0, {  1076,   3118}, {0x43, 0x00, 0x43, 0xff}}},\n    {{{ -1023,   -204,   -204}, 0, {     0,   3884}, {0x43, 0x00, 0x43, 0xff}}},\n    {{{  1126,    -50,    102}, 0, {  3034,   -202}, {0x43, 0x00, 0x43, 0xff}}},\n};\n\n// 0x070094F8 - 0x07009690\nstatic const Gfx bits_seg7_dl_070094F8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_07009058, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  8,  9,  7, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0,  4, 11,  5, 0x0),\n    gsSP2Triangles( 0,  3,  5, 0x0, 11,  0,  5, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_07009158, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  8, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_07009258, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  3,  5,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_07009338, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 15, 12, 0x0),\n    gsSPVertex(bits_seg7_vertex_07009438, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  3,  5, 0x0),\n    gsSP2Triangles(10,  6,  8, 0x0,  0, 11,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009690 - 0x07009700\nconst Gfx bits_seg7_dl_07009690[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bits_seg7_dl_070094F8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/11/geo.inc.c",
    "content": "// 0x0E000508\nconst GeoLayout bits_geo_000508[] = {\n    GEO_CULLING_RADIUS(3200),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bits_seg7_dl_0700B4A0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/11/model.inc.c",
    "content": "// 0x07009700 - 0x070097E0\nstatic const Vtx bits_seg7_vertex_07009700[] = {\n    {{{  -844,  -1433,    543}, 0, {  4738,  -5142}, {0xc2, 0xff, 0xc0, 0xff}}},\n    {{{ -1765,  -1433,    645}, 0, {  4056,    990}, {0xc2, 0xff, 0xc0, 0xff}}},\n    {{{  -844,  -1433,   1362}, 0, {  -712,  -5142}, {0xc2, 0xff, 0xc0, 0xff}}},\n    {{{ -1765,  -1433,   1260}, 0, {     0,    990}, {0xc2, 0xff, 0xc0, 0xff}}},\n    {{{  2099,   1808,   -498}, 0, { 11182, -24780}, {0xc2, 0xff, 0xc0, 0xff}}},\n    {{{  1818,   1741,  -1117}, 0, { 15298, -22906}, {0xc2, 0xff, 0xc0, 0xff}}},\n    {{{  1324,   1545,   -539}, 0, { 11452, -19626}, {0xc2, 0xff, 0xc0, 0xff}}},\n    {{{  1289,   1528,  -1369}, 0, { 16980, -19388}, {0xc2, 0xff, 0xc0, 0xff}}},\n    {{{  2070,   1768,    319}, 0, {  5742, -24586}, {0xc2, 0xff, 0xc0, 0xff}}},\n    {{{  1292,   1500,    380}, 0, {  5332, -19406}, {0xc2, 0xff, 0xc0, 0xff}}},\n    {{{  1292,   1500,    380}, 0, {  5330, -19418}, {0xc2, 0xff, 0xc0, 0xff}}},\n    {{{  1873,   1764,    894}, 0, {  1914, -23284}, {0xc2, 0xff, 0xc0, 0xff}}},\n    {{{  2070,   1768,    319}, 0, {  5740, -24596}, {0xc2, 0xff, 0xc0, 0xff}}},\n    {{{  1396,   1587,   1188}, 0, {   -42, -20112}, {0xc2, 0xff, 0xc0, 0xff}}},\n};\n\n// 0x070097E0 - 0x070098E0\nstatic const Vtx bits_seg7_vertex_070097E0[] = {\n    {{{   179,    102,    543}, 0, {  4738, -11824}, {0xc2, 0xff, 0xc0, 0xff}}},\n    {{{   179,    102,   1362}, 0, {  -712, -11824}, {0xc2, 0xff, 0xc0, 0xff}}},\n    {{{   589,    205,   1362}, 0, {  -712, -14548}, {0xc2, 0xff, 0xc0, 0xff}}},\n    {{{   589,    205,    543}, 0, {  4738, -14548}, {0xc2, 0xff, 0xc0, 0xff}}},\n    {{{ -1000,   -246,  -1612}, 0, { 18774,  -4100}, {0xc2, 0xff, 0xc0, 0xff}}},\n    {{{ -1612,   -306,   -793}, 0, { 13322,      0}, {0xc2, 0xff, 0xc0, 0xff}}},\n    {{{ -1000,   -246,   -793}, 0, { 13322,  -4100}, {0xc2, 0xff, 0xc0, 0xff}}},\n    {{{ -1612,   -306,  -1612}, 0, { 18774,      0}, {0xc2, 0xff, 0xc0, 0xff}}},\n    {{{ -2226,   -306,   -793}, 0, { 13322,   4054}, {0xc2, 0xff, 0xc0, 0xff}}},\n    {{{ -2226,   -306,  -1612}, 0, { 18774,   4054}, {0xc2, 0xff, 0xc0, 0xff}}},\n    {{{  -127,   -101,    543}, 0, { -4800, -13060}, {0xb0, 0xe5, 0xa4, 0xff}}},\n    {{{  -127,   -101,   1362}, 0, {   650, -13060}, {0xb0, 0xe5, 0xa4, 0xff}}},\n    {{{   179,    102,   1362}, 0, {   650, -15498}, {0xb0, 0xe5, 0xa4, 0xff}}},\n    {{{  -844,  -1433,    543}, 0, { -4800,  -4630}, {0xb0, 0xe5, 0xa4, 0xff}}},\n    {{{  -434,  -1228,   1362}, 0, {   650,  -7678}, {0xb0, 0xe5, 0xa4, 0xff}}},\n    {{{  -434,  -1228,    543}, 0, { -4800,  -7678}, {0xb0, 0xe5, 0xa4, 0xff}}},\n};\n\n// 0x070098E0 - 0x070099C0\nstatic const Vtx bits_seg7_vertex_070098E0[] = {\n    {{{  -844,  -1433,    543}, 0, { -4800,  -4630}, {0xb0, 0xe5, 0xa4, 0xff}}},\n    {{{  -844,  -1433,   1362}, 0, {   650,  -4630}, {0xb0, 0xe5, 0xa4, 0xff}}},\n    {{{  -434,  -1228,   1362}, 0, {   650,  -7678}, {0xb0, 0xe5, 0xa4, 0xff}}},\n    {{{  1289,   1528,  -1369}, 0, { -4546,    -56}, {0xb0, 0xe5, 0xa4, 0xff}}},\n    {{{   530,   1154,  -1612}, 0, { -6354,   5514}, {0xb0, 0xe5, 0xa4, 0xff}}},\n    {{{   530,   1154,   -793}, 0, {  -906,   5700}, {0xb0, 0xe5, 0xa4, 0xff}}},\n    {{{  1324,   1545,   -539}, 0, {   984,   -130}, {0xb0, 0xe5, 0xa4, 0xff}}},\n    {{{   968,   1190,   1395}, 0, {   850, -23610}, {0xb0, 0xe5, 0xa4, 0xff}}},\n    {{{  1396,   1587,   1188}, 0, {  -524, -27342}, {0xb0, 0xe5, 0xa4, 0xff}}},\n    {{{  1292,   1500,    380}, 0, { -5898, -26462}, {0xb0, 0xe5, 0xa4, 0xff}}},\n    {{{   948,   1170,    551}, 0, { -4764, -23438}, {0xb0, 0xe5, 0xa4, 0xff}}},\n    {{{  -246,     73,   -793}, 0, {-13384, -12126}, {0xb0, 0xe5, 0xa4, 0xff}}},\n    {{{  -246,     73,  -1612}, 0, {-18836, -12126}, {0xb0, 0xe5, 0xa4, 0xff}}},\n    {{{ -1000,   -246,  -1612}, 0, {-18836,  -6686}, {0xb0, 0xe5, 0xa4, 0xff}}},\n};\n\n// 0x070099C0 - 0x07009AA0\nstatic const Vtx bits_seg7_vertex_070099C0[] = {\n    {{{  -127,   -101,    543}, 0, { -4800, -13060}, {0xb0, 0xe5, 0xa4, 0xff}}},\n    {{{   179,    102,   1362}, 0, {   650, -15498}, {0xb0, 0xe5, 0xa4, 0xff}}},\n    {{{   179,    102,    543}, 0, { -4800, -15498}, {0xb0, 0xe5, 0xa4, 0xff}}},\n    {{{  -246,     73,   -793}, 0, {-13384, -12126}, {0xb0, 0xe5, 0xa4, 0xff}}},\n    {{{ -1000,   -246,  -1612}, 0, {-18836,  -6686}, {0xb0, 0xe5, 0xa4, 0xff}}},\n    {{{ -1000,   -246,   -793}, 0, {-13384,  -6686}, {0xb0, 0xe5, 0xa4, 0xff}}},\n    {{{   530,   1154,   -793}, 0, {  5210,  -7628}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   530,   1154,  -1612}, 0, {  -238,  -7766}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -246,     73,  -1612}, 0, {  -460,   1086}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -246,     73,   -793}, 0, {  4988,   1224}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   589,    205,   1362}, 0, {   650,  -9912}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   968,   1190,   1395}, 0, {   868, -16466}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   948,   1170,    551}, 0, { -4746, -16336}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   589,    205,    543}, 0, { -4800,  -9912}, {0x97, 0xcd, 0x97, 0xff}}},\n};\n\n// 0x07009AA0 - 0x07009AE0\nstatic const Vtx bits_seg7_vertex_07009AA0[] = {\n    {{{  -434,  -1228,    543}, 0, { -4800,   -504}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -434,  -1228,   1362}, 0, {   650,   -504}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -127,   -101,   1362}, 0, {   650,  -7998}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -127,   -101,    543}, 0, { -4800,  -7998}, {0x97, 0xcd, 0x97, 0xff}}},\n};\n\n// 0x07009AE0 - 0x07009BD0\nstatic const Vtx bits_seg7_vertex_07009AE0[] = {\n    {{{   932,   1099,   -139}, 0, {   932,   1302}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   830,   1099,    -36}, 0, {   420,   1302}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   932,   1099,    -36}, 0, {   676,   1046}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   830,   1099,   -139}, 0, {   676,   1558}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   -13,    550,  -2294}, 0, {   734,   1244}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -116,    550,  -2192}, 0, {   734,    734}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   -13,    550,  -2192}, 0, {   990,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -116,    550,  -2294}, 0, {   478,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   382,   1085,  -2294}, 0, {   734,   1244}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   280,   1085,  -2294}, 0, {   478,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   280,   1085,  -2192}, 0, {   734,    734}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   382,   1085,  -2192}, 0, {   990,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1035,    894,   -241}, 0, {  1442,   1302}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   932,    741,   -139}, 0, {   932,   1302}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   830,    741,   -139}, 0, {   676,   1558}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x07009BD0 - 0x07009CD0\nstatic const Vtx bits_seg7_vertex_07009BD0[] = {\n    {{{   779,    894,    116}, 0, {   -88,   1046}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   830,   1099,    -36}, 0, {   420,   1302}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   728,    894,   -241}, 0, {   676,   2068}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   830,   1099,   -139}, 0, {   676,   1558}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1035,    894,   -241}, 0, {  1442,   1302}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   932,   1099,    -36}, 0, {   676,   1046}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   984,    894,    116}, 0, {   420,    538}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   932,   1099,   -139}, 0, {   932,   1302}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   830,    741,    -36}, 0, {   420,   1302}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   932,    741,    -36}, 0, {   676,   1046}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{    88,    346,  -2397}, 0, {   734,   1754}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   -13,    550,  -2192}, 0, {   990,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{    37,    346,  -2038}, 0, {  1502,    734}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   830,    741,   -139}, 0, {   676,   1558}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -116,    192,  -2294}, 0, {   478,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -218,    346,  -2397}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x07009CD0 - 0x07009DC0\nstatic const Vtx bits_seg7_vertex_07009CD0[] = {\n    {{{    88,    346,  -2397}, 0, {   734,   1754}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   -13,    192,  -2294}, 0, {   734,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -116,    192,  -2294}, 0, {   478,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -167,    346,  -2038}, 0, {   990,    224}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -116,    192,  -2192}, 0, {   734,    734}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   -13,    192,  -2192}, 0, {   990,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{    37,    346,  -2038}, 0, {  1502,    734}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   -13,    550,  -2294}, 0, {   734,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   -13,    550,  -2192}, 0, {   990,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   229,    880,  -2038}, 0, {   990,    224}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   382,    727,  -2192}, 0, {   990,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   433,    880,  -2038}, 0, {  1502,    734}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -116,    550,  -2192}, 0, {   734,    734}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -116,    550,  -2294}, 0, {   478,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -218,    346,  -2397}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x07009DC0 - 0x07009EC0\nstatic const Vtx bits_seg7_vertex_07009DC0[] = {\n    {{{   229,    880,  -2038}, 0, {   990,    224}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   280,   1085,  -2192}, 0, {   734,    734}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   177,    880,  -2397}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   280,   1085,  -2294}, 0, {   478,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   485,    880,  -2397}, 0, {   734,   1754}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   382,   1085,  -2192}, 0, {   990,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   433,    880,  -2038}, 0, {  1502,    734}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   382,   1085,  -2294}, 0, {   734,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   382,    727,  -2294}, 0, {   734,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   280,    727,  -2294}, 0, {   478,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   280,    727,  -2192}, 0, {   734,    734}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   382,    727,  -2192}, 0, {   990,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   932,    741,    -36}, 0, {   676,   1046}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{   830,    741,   -139}, 0, {   676,   1558}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{   932,    741,   -139}, 0, {   932,   1302}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{   830,    741,    -36}, 0, {   420,   1302}, {0x50, 0x50, 0x50, 0xff}}},\n};\n\n// 0x07009EC0 - 0x07009FB0\nstatic const Vtx bits_seg7_vertex_07009EC0[] = {\n    {{{   -13,    192,  -2192}, 0, {   990,    990}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{  -116,    192,  -2192}, 0, {   734,    734}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{  -116,    192,  -2294}, 0, {   478,    990}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{   -13,    192,  -2294}, 0, {   734,   1244}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{   382,    727,  -2192}, 0, {   990,    990}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{   280,    727,  -2294}, 0, {   478,    990}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{   382,    727,  -2294}, 0, {   734,   1244}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{   280,    727,  -2192}, 0, {   734,    734}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{   -13,    192,  -2192}, 0, {   990,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   -13,    192,  -2294}, 0, {   734,   1244}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{    88,    346,  -2397}, 0, {   734,   1754}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   932,    741,    -36}, 0, {   676,   1046}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   932,    741,   -139}, 0, {   932,   1302}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1035,    894,   -241}, 0, {  1442,   1302}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   984,    894,    116}, 0, {   420,    538}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x07009FB0 - 0x0700A090\nstatic const Vtx bits_seg7_vertex_07009FB0[] = {\n    {{{   728,    894,   -241}, 0, {   676,   2068}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   830,    741,   -139}, 0, {   676,   1558}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   830,    741,    -36}, 0, {   420,   1302}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   779,    894,    116}, 0, {   -88,   1046}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -218,    346,  -2397}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -116,    192,  -2192}, 0, {   734,    734}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -167,    346,  -2038}, 0, {   990,    224}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -116,    192,  -2294}, 0, {   478,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   177,    880,  -2397}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   280,    727,  -2192}, 0, {   734,    734}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   229,    880,  -2038}, 0, {   990,    224}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{    37,    346,  -2038}, 0, {  1502,    734}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   -13,    192,  -2192}, 0, {   990,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{    88,    346,  -2397}, 0, {   734,   1754}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x0700A090 - 0x0700A170\nstatic const Vtx bits_seg7_vertex_0700A090[] = {\n    {{{   433,    880,  -2038}, 0, {  1502,    734}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   382,    727,  -2192}, 0, {   990,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   485,    880,  -2397}, 0, {   734,   1754}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   382,    727,  -2294}, 0, {   734,   1244}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   177,    880,  -2397}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   280,    727,  -2294}, 0, {   478,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   280,    727,  -2192}, 0, {   734,    734}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -218,    346,  -2397}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   -13,    550,  -2294}, 0, {   734,   1244}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{    88,    346,  -2397}, 0, {   734,   1754}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   728,    894,   -241}, 0, {   676,   2068}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   830,   1099,   -139}, 0, {   676,   1558}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   932,   1099,   -139}, 0, {   932,   1302}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1035,    894,   -241}, 0, {  1442,   1302}, {0x96, 0x96, 0x96, 0xff}}},\n};\n\n// 0x0700A170 - 0x0700A250\nstatic const Vtx bits_seg7_vertex_0700A170[] = {\n    {{{   984,    894,    116}, 0, {   420,    538}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   830,   1099,    -36}, 0, {   420,   1302}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   779,    894,    116}, 0, {   -88,   1046}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   932,   1099,    -36}, 0, {   676,   1046}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{    37,    346,  -2038}, 0, {  1502,    734}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -116,    550,  -2192}, 0, {   734,    734}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -167,    346,  -2038}, 0, {   990,    224}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   -13,    550,  -2192}, 0, {   990,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   433,    880,  -2038}, 0, {  1502,    734}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   382,   1085,  -2192}, 0, {   990,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   280,   1085,  -2192}, 0, {   734,    734}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -218,    346,  -2397}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -116,    550,  -2294}, 0, {   478,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   -13,    550,  -2294}, 0, {   734,   1244}, {0x96, 0x96, 0x96, 0xff}}},\n};\n\n// 0x0700A250 - 0x0700A2C0\nstatic const Vtx bits_seg7_vertex_0700A250[] = {\n    {{{   177,    880,  -2397}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   382,   1085,  -2294}, 0, {   734,   1244}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   485,    880,  -2397}, 0, {   734,   1754}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   280,   1085,  -2294}, 0, {   478,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   433,    880,  -2038}, 0, {  1502,    734}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   280,   1085,  -2192}, 0, {   734,    734}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   229,    880,  -2038}, 0, {   990,    224}, {0x96, 0x96, 0x96, 0xff}}},\n};\n\n// 0x0700A2C0 - 0x0700A3A0\nstatic const Vtx bits_seg7_vertex_0700A2C0[] = {\n    {{{   550,   1133,  -1612}, 0, {  1200,   9394}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{   550,   1133,   -793}, 0, {  -842,   7350}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{  -205,    -29,   -793}, 0, { -2780,   9288}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{  -205,    -29,  -1612}, 0, {  -736,  11332}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{   609,    164,    543}, 0, { -4030,   3868}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{   969,   1150,    551}, 0, { -3152,   2952}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{   988,   1169,   1395}, 0, { -5210,    800}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{   609,    164,   1362}, 0, { -6074,   1824}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{  1396,   1546,   1188}, 0, { -3880,    502}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{  1292,   1480,    380}, 0, { -2126,   2776}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{   609,    164,    543}, 0, { 10444,   3288}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{   948,   1170,    551}, 0, { 13750,    756}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{   969,   1150,    551}, 0, { 13750,   1776}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{   589,    205,    543}, 0, { 10444,   2266}, {0x61, 0x52, 0xac, 0xff}}},\n};\n\n// 0x0700A3A0 - 0x0700A4A0\nstatic const Vtx bits_seg7_vertex_0700A3A0[] = {\n    {{{   -66,   -163,   1337}, 0, { -7862,   3614}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{   -66,   -163,    543}, 0, { -5818,   5658}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{   173,     37,    543}, 0, { -5306,   5146}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{   173,     37,   1362}, 0, { -7350,   3102}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{  -332,  -1310,   1362}, 0, { -8628,   4380}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{  -332,  -1310,    543}, 0, { -6584,   6424}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{  2099,   1808,   -498}, 0, {  2620,   2416}, {0x7f, 0x7a, 0xc2, 0xff}}},\n    {{{  2099,   1788,   -498}, 0, {  1854,   3184}, {0x7f, 0x7a, 0xc2, 0xff}}},\n    {{{  1818,   1720,  -1117}, 0, {  3228,   4896}, {0x7f, 0x7a, 0xc2, 0xff}}},\n    {{{  1818,   1741,  -1117}, 0, {  3994,   4130}, {0x7f, 0x7a, 0xc2, 0xff}}},\n    {{{  2070,   1748,    319}, 0, {  -286,   1244}, {0x7f, 0x7a, 0xc2, 0xff}}},\n    {{{  2070,   1768,    319}, 0, {   478,    478}, {0x7f, 0x7a, 0xc2, 0xff}}},\n    {{{ -2124,   -511,  -1612}, 0, {     0,    990}, {0x7f, 0x7a, 0xc2, 0xff}}},\n    {{{ -2124,   -511,   -793}, 0, {  2012,  -1054}, {0x7f, 0x7a, 0xc2, 0xff}}},\n    {{{ -2226,   -306,   -793}, 0, {  2522,   -542}, {0x7f, 0x7a, 0xc2, 0xff}}},\n    {{{ -2226,   -306,  -1612}, 0, {   480,   1500}, {0x7f, 0x7a, 0xc2, 0xff}}},\n};\n\n// 0x0700A4A0 - 0x0700A580\nstatic const Vtx bits_seg7_vertex_0700A4A0[] = {\n    {{{  1292,   1500,    380}, 0, {  9962,   1036}, {0x7f, 0x7a, 0xc2, 0xff}}},\n    {{{  1324,   1525,   -539}, 0, {  7012,   2676}, {0x7f, 0x7a, 0xc2, 0xff}}},\n    {{{  1292,   1480,    380}, 0, {  9194,    270}, {0x7f, 0x7a, 0xc2, 0xff}}},\n    {{{  1324,   1545,   -539}, 0, {  7778,   3444}, {0x7f, 0x7a, 0xc2, 0xff}}},\n    {{{  1873,   1764,    894}, 0, {  -964,   -946}, {0x7f, 0x7a, 0xc2, 0xff}}},\n    {{{  2070,   1748,    319}, 0, {  -286,   1244}, {0x7f, 0x7a, 0xc2, 0xff}}},\n    {{{  2070,   1768,    319}, 0, {   478,    478}, {0x7f, 0x7a, 0xc2, 0xff}}},\n    {{{  1873,   1741,    894}, 0, { -1730,   -180}, {0x7f, 0x7a, 0xc2, 0xff}}},\n    {{{  -844,  -1596,    543}, 0, {  1246,   2776}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{  -844,  -1433,    543}, 0, {  2778,   2776}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{  -434,  -1228,    543}, 0, {  4312,   3288}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{  -332,  -1310,    543}, 0, {  4312,   4310}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{  -127,   -101,    543}, 0, {  7888,   1244}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{   -66,   -163,    543}, 0, {  7888,   2266}, {0x66, 0x5b, 0xa3, 0xff}}},\n};\n\n// 0x0700A580 - 0x0700A680\nstatic const Vtx bits_seg7_vertex_0700A580[] = {\n    {{{   -66,   -163,   1337}, 0, {  7888,   2266}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{  -434,  -1228,   1362}, 0, {  4312,   3288}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{  -332,  -1310,   1362}, 0, {  4312,   4310}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{  -844,  -1433,   1362}, 0, {  2778,   2776}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{  -844,  -1596,   1362}, 0, {  2012,   3544}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{  -127,   -101,   1362}, 0, {  7888,   1244}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{ -1765,  -1637,   1260}, 0, {     0,    990}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{ -1765,  -1433,   1260}, 0, {   478,    480}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{  -844,  -1596,    543}, 0, {  1246,   2776}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{ -1765,  -1433,    645}, 0, {   478,    478}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{  -844,  -1433,    543}, 0, {  2778,   2776}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{ -1765,  -1637,    645}, 0, {     0,    990}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{  -246,     73,  -1612}, 0, {  8028,    512}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{ -1000,   -410,  -1612}, 0, {  4838,    448}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{ -1000,   -246,  -1612}, 0, {  5350,   -574}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{  -205,    -29,  -1612}, 0, {  8028,   1532}, {0x66, 0x5b, 0xa3, 0xff}}},\n};\n\n// 0x0700A680 - 0x0700A780\nstatic const Vtx bits_seg7_vertex_0700A680[] = {\n    {{{  -205,    -29,  -1612}, 0, {  8028,   1532}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{  -246,     73,  -1612}, 0, {  8028,    512}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{   530,   1154,  -1612}, 0, { 12664,   -248}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{   550,   1133,  -1612}, 0, { 12664,    774}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{ -1000,   -410,  -1612}, 0, {  4838,    448}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{ -1714,   -511,  -1612}, 0, {  2906,  -1692}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{ -1612,   -306,  -1612}, 0, {  3672,  -1948}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{ -1000,   -246,  -1612}, 0, {  5350,   -574}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{  1818,   1741,  -1117}, 0, { 17342,   1500}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{  1818,   1720,  -1117}, 0, { 16830,   2522}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{  1289,   1507,  -1369}, 0, { 14980,   1734}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{  1289,   1528,  -1369}, 0, { 15492,    714}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{  1324,   1525,   -539}, 0, { 15112,   1778}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{  1324,   1545,   -539}, 0, { 15624,    758}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{   530,   1154,   -793}, 0, { 12664,   -248}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{   550,   1133,   -793}, 0, { 12664,    774}, {0x66, 0x5b, 0xa3, 0xff}}},\n};\n\n// 0x0700A780 - 0x0700A880\nstatic const Vtx bits_seg7_vertex_0700A780[] = {\n    {{{   550,   1133,   -793}, 0, { 12664,    774}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{   530,   1154,   -793}, 0, { 12664,   -248}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{  -246,     73,   -793}, 0, {  8028,    512}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{  -205,    -29,   -793}, 0, {  8028,   1532}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{ -1000,   -246,   -793}, 0, {  5350,   -574}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{ -1000,   -410,   -793}, 0, {  4838,    448}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{   948,   1170,    551}, 0, { 13750,    756}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{  1292,   1500,    380}, 0, { 15428,    790}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{  1292,   1480,    380}, 0, { 14918,   1810}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{   969,   1150,    551}, 0, { 13750,   1776}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{   988,   1169,   1395}, 0, { 13846,   1774}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{   968,   1190,   1395}, 0, { 13846,    754}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{   589,    205,   1362}, 0, { 10444,   2266}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{   609,    164,   1362}, 0, { 10444,   3288}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{  1396,   1546,   1188}, 0, { 15396,   1852}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{  1396,   1587,   1188}, 0, { 15908,    832}, {0x66, 0x5b, 0xa3, 0xff}}},\n};\n\n// 0x0700A880 - 0x0700A970\nstatic const Vtx bits_seg7_vertex_0700A880[] = {\n    {{{   179,    102,   1362}, 0, {  9166,   1500}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{   173,     37,   1362}, 0, {  8654,   2522}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{   609,    164,   1362}, 0, { 10444,   3288}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{   589,    205,   1362}, 0, { 10444,   2266}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{   -66,   -163,    543}, 0, {  7888,   2266}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{   179,    102,    543}, 0, {  9166,   1500}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{   173,     37,    543}, 0, {  8654,   2522}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{  1396,   1587,   1188}, 0, { 15908,    832}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{  1873,   1741,    894}, 0, { 17026,   2600}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{  1873,   1764,    894}, 0, { 17538,   1578}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{  1396,   1546,   1188}, 0, { 15396,   1852}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{  -127,   -101,   1362}, 0, {  7888,   1244}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{   -66,   -163,   1337}, 0, {  7888,   2266}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{   589,    205,    543}, 0, { 10444,   2266}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{   609,    164,    543}, 0, { 10444,   3288}, {0x66, 0x5b, 0xa3, 0xff}}},\n};\n\n// 0x0700A970 - 0x0700AA70\nstatic const Vtx bits_seg7_vertex_0700A970[] = {\n    {{{ -1714,   -511,  -1612}, 0, {  2906,  -1692}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{ -2226,   -306,  -1612}, 0, {  2140,  -3482}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{ -1612,   -306,  -1612}, 0, {  3672,  -1948}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{   -66,   -163,    543}, 0, {  7888,   2266}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{  -127,   -101,    543}, 0, {  7888,   1244}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{   179,    102,    543}, 0, {  9166,   1500}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{ -1000,   -246,   -793}, 0, {  5350,   -574}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{ -1612,   -306,   -793}, 0, {  3672,  -1948}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{ -1714,   -511,   -793}, 0, {  2906,  -1692}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{ -1000,   -410,   -793}, 0, {  4838,    448}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{ -2124,   -511,  -1612}, 0, {  1884,  -2714}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{  -844,  -1596,   1362}, 0, {-10162,   5912}, {0x5e, 0x4a, 0x95, 0xff}}},\n    {{{  -844,  -1596,    543}, 0, { -8884,   8724}, {0x5e, 0x4a, 0x95, 0xff}}},\n    {{{  -332,  -1310,    543}, 0, { -6584,   6424}, {0x5e, 0x4a, 0x95, 0xff}}},\n    {{{  -332,  -1310,   1362}, 0, { -8628,   4380}, {0x5e, 0x4a, 0x95, 0xff}}},\n    {{{ -1765,  -1637,   1260}, 0, {-12206,   8468}, {0x5e, 0x4a, 0x95, 0xff}}},\n};\n\n// 0x0700AA70 - 0x0700AB70\nstatic const Vtx bits_seg7_vertex_0700AA70[] = {\n    {{{ -1765,  -1637,   1260}, 0, {-12206,   8468}, {0x5e, 0x4a, 0x95, 0xff}}},\n    {{{ -1765,  -1637,    645}, 0, {-10672,  10000}, {0x5e, 0x4a, 0x95, 0xff}}},\n    {{{  -844,  -1596,    543}, 0, { -8884,   8724}, {0x5e, 0x4a, 0x95, 0xff}}},\n    {{{  1818,   1720,  -1117}, 0, {  2922,   5202}, {0x5e, 0x4a, 0x95, 0xff}}},\n    {{{  2099,   1788,   -498}, 0, {  2082,   2956}, {0x5e, 0x4a, 0x95, 0xff}}},\n    {{{  1289,   1507,  -1369}, 0, {  2234,   7150}, {0x5e, 0x4a, 0x95, 0xff}}},\n    {{{  1324,   1525,   -539}, 0, {   250,   4990}, {0x5e, 0x4a, 0x95, 0xff}}},\n    {{{   550,   1133,   -793}, 0, {  -842,   7350}, {0x5e, 0x4a, 0x95, 0xff}}},\n    {{{   550,   1133,  -1612}, 0, {  1200,   9394}, {0x5e, 0x4a, 0x95, 0xff}}},\n    {{{  1292,   1480,    380}, 0, { -2126,   2776}, {0x5e, 0x4a, 0x95, 0xff}}},\n    {{{  1396,   1546,   1188}, 0, { -3880,    502}, {0x5e, 0x4a, 0x95, 0xff}}},\n    {{{  2070,   1748,    319}, 0, {     0,    990}, {0x5e, 0x4a, 0x95, 0xff}}},\n    {{{  1873,   1741,    894}, 0, { -1958,     48}, {0x5e, 0x4a, 0x95, 0xff}}},\n    {{{   173,     37,   1362}, 0, { -7350,   3102}, {0x5e, 0x4a, 0x95, 0xff}}},\n    {{{   173,     37,    543}, 0, { -5306,   5146}, {0x5e, 0x4a, 0x95, 0xff}}},\n    {{{   609,    164,    543}, 0, { -4030,   3868}, {0x5e, 0x4a, 0x95, 0xff}}},\n};\n\n// 0x0700AB70 - 0x0700AC20\nstatic const Vtx bits_seg7_vertex_0700AB70[] = {\n    {{{   173,     37,   1362}, 0, { -7350,   3102}, {0x5e, 0x4a, 0x95, 0xff}}},\n    {{{   609,    164,    543}, 0, { -4030,   3868}, {0x5e, 0x4a, 0x95, 0xff}}},\n    {{{   609,    164,   1362}, 0, { -6074,   1824}, {0x5e, 0x4a, 0x95, 0xff}}},\n    {{{  -205,    -29,  -1612}, 0, {  -736,  11332}, {0x5e, 0x4a, 0x95, 0xff}}},\n    {{{  -205,    -29,   -793}, 0, { -2780,   9288}, {0x5e, 0x4a, 0x95, 0xff}}},\n    {{{ -1000,   -410,   -793}, 0, { -4918,  11426}, {0x5e, 0x4a, 0x95, 0xff}}},\n    {{{ -1000,   -410,  -1612}, 0, { -2874,  13470}, {0x5e, 0x4a, 0x95, 0xff}}},\n    {{{ -1714,   -511,   -793}, 0, { -6954,  13464}, {0x5e, 0x4a, 0x95, 0xff}}},\n    {{{ -1714,   -511,  -1612}, 0, { -4910,  15508}, {0x5e, 0x4a, 0x95, 0xff}}},\n    {{{ -2124,   -511,  -1612}, 0, { -5932,  16530}, {0x5e, 0x4a, 0x95, 0xff}}},\n    {{{ -2124,   -511,   -793}, 0, { -7976,  14486}, {0x5e, 0x4a, 0x95, 0xff}}},\n};\n\n// 0x0700AC20 - 0x0700AD20\nstatic const Vtx bits_seg7_vertex_0700AC20[] = {\n    {{{ -1714,   -511,   1152}, 0, {  1672,    660}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -2124,   -511,   -793}, 0, {   308,  -5604}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1714,   -511,   -793}, 0, {  1672,  -5604}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -2124,   -511,   1152}, 0, {   308,    660}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -2226,   -306,   1254}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1612,   -306,   1254}, 0, {  2012,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1612,   -306,   -793}, 0, {  2012,  -5604}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2226,   -306,   -793}, 0, {     0,  -5604}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2226,   -306,   1254}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -2124,   -511,   1152}, 0, {   308,    660}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1714,   -511,   1152}, 0, {  1672,    660}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1612,   -306,   1254}, 0, {  2012,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -2226,   -306,   -793}, 0, {     0,  -5604}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -2124,   -511,   -793}, 0, {   308,  -5604}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -2124,   -511,   1152}, 0, {   308,    660}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -2226,   -306,   1254}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n};\n\n// 0x0700AD20 - 0x0700AD60\nstatic const Vtx bits_seg7_vertex_0700AD20[] = {\n    {{{ -1612,   -306,   1254}, 0, {  2012,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1714,   -511,   -793}, 0, {  1672,  -5604}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1612,   -306,   -793}, 0, {  2012,  -5604}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1714,   -511,   1152}, 0, {  1672,    660}, {0x96, 0x96, 0x96, 0xff}}},\n};\n\n// 0x0700AD60 - 0x0700AE98\nstatic const Gfx bits_seg7_dl_0700AD60[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_07009700, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  4,  6, 0x0,  8,  6,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(bits_seg7_vertex_070097E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 7,  8,  5, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_070098E0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_070099C0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 10, 12, 0x0),\n    gsSPVertex(bits_seg7_vertex_07009AA0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700AE98 - 0x0700B0E0\nstatic const Gfx bits_seg7_dl_0700AE98[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_07009AE0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_07009BD0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 0,  8,  9, 0x0,  0,  9,  6, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  4, 13,  2, 0x0),\n    gsSP1Triangle(10, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_07009CD0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  0,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle( 3, 12, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_07009DC0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 4,  8,  9, 0x0,  0, 10, 11, 0x0),\n    gsSP2Triangles( 4,  9,  2, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 15, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_07009EC0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 11, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_07009FB0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700A090, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700A170, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700A250, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP1Triangle( 4,  5,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700B0E0 - 0x0700B420\nstatic const Gfx bits_seg7_dl_0700B0E0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_0700A2C0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 6,  5,  8, 0x0,  5,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700A3A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  1,  0, 0x0,  4,  5,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10,  6, 11, 0x0, 10,  7,  6, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700A4A0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(11, 10, 12, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700A580, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700A680, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 3, 11, 10, 0x0,  3,  2, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700A780, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  3, 0x0,  4,  3,  2, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP2Triangles(14, 15, 10, 0x0, 15, 11, 10, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700A880, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  1,  0, 11, 0x0),\n    gsSP2Triangles( 1, 11, 12, 0x0, 13,  6,  5, 0x0),\n    gsSP1Triangle(13, 14,  6, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700A970, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 0, 10,  1, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0, 11, 15, 12, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700AA70, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  9,  6,  4, 0x0),\n    gsSP2Triangles(10,  9, 11, 0x0,  9,  4, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700AB70, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  6,  5, 0x0),\n    gsSP2Triangles( 7,  8,  6, 0x0,  7,  9,  8, 0x0),\n    gsSP1Triangle( 7, 10,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700B420 - 0x0700B4A0\nstatic const Gfx bits_seg7_dl_0700B420[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_0700AC20, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700AD20, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700B4A0 - 0x0700B528\nconst Gfx bits_seg7_dl_0700B4A0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bits_seg7_dl_0700AD60),\n    gsSPDisplayList(bits_seg7_dl_0700AE98),\n    gsSPDisplayList(bits_seg7_dl_0700B0E0),\n    gsSPDisplayList(bits_seg7_dl_0700B420),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/12/geo.inc.c",
    "content": "// 0x0E000520\nconst GeoLayout bits_geo_000520[] = {\n    GEO_CULLING_RADIUS(1100),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bits_seg7_dl_0700B820),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/12/model.inc.c",
    "content": "// 0x0700B528 - 0x0700B5A8\nstatic const Vtx bits_seg7_vertex_0700B528[] = {\n    {{{   836,   -306,    401}, 0, {  2694,   6438}, {0x44, 0x53, 0x41, 0xff}}},\n    {{{  -801,   -306,   -417}, 0, {     0,    990}, {0x44, 0x53, 0x41, 0xff}}},\n    {{{   836,   -306,   -417}, 0, {     0,   6438}, {0x44, 0x53, 0x41, 0xff}}},\n    {{{  -801,   -306,    401}, 0, {  2694,    990}, {0x44, 0x53, 0x41, 0xff}}},\n    {{{  -801,      0,    401}, 0, {  2694,    990}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{   836,      0,   -417}, 0, {     0,   6438}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{  -801,      0,   -417}, 0, {     0,    990}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{   836,      0,    401}, 0, {  2694,   6438}, {0xbc, 0xca, 0xbf, 0xff}}},\n};\n\n// 0x0700B5A8 - 0x0700B698\nstatic const Vtx bits_seg7_vertex_0700B5A8[] = {\n    {{{   836,      0,   -417}, 0, {  5076,      0}, {0x6e, 0x7c, 0x6c, 0xff}}},\n    {{{  -801,   -306,   -417}, 0, {     0,    990}, {0x6e, 0x7c, 0x6c, 0xff}}},\n    {{{  -801,      0,   -417}, 0, {     0,      0}, {0x6e, 0x7c, 0x6c, 0xff}}},\n    {{{   836,   -306,   -417}, 0, {  5076,    990}, {0x6e, 0x7c, 0x6c, 0xff}}},\n    {{{  -801,      0,    401}, 0, {     0,      0}, {0x6e, 0x7c, 0x6c, 0xff}}},\n    {{{   836,   -306,    401}, 0, {  5076,    990}, {0x6e, 0x7c, 0x6c, 0xff}}},\n    {{{   836,      0,    401}, 0, {  5076,      0}, {0x6e, 0x7c, 0x6c, 0xff}}},\n    {{{  -801,   -306,    401}, 0, {     0,    990}, {0x6e, 0x7c, 0x6c, 0xff}}},\n    {{{  -801,      0,     -8}, 0, {  2808,      0}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{  -801,   -306,    401}, 0, {   992,    990}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{  -801,      0,    401}, 0, {   992,      0}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{   836,   -306,     -8}, 0, {  2240,    990}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{   836,   -306,   -417}, 0, {  4056,    990}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{   836,      0,   -417}, 0, {  4056,      0}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{   836,      0,     -8}, 0, {  2240,      0}, {0x88, 0x98, 0x84, 0xff}}},\n};\n\n// 0x0700B698 - 0x0700B748\nstatic const Vtx bits_seg7_vertex_0700B698[] = {\n    {{{   836,      0,    401}, 0, {   992,      0}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{   836,   -306,     -8}, 0, {  2808,    990}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{   836,      0,     -8}, 0, {  2808,      0}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{   836,   -306,    401}, 0, {   992,    990}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{  -801,      0,     -8}, 0, {  2240,      0}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{  -801,      0,   -417}, 0, {  4056,      0}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{  -801,   -306,   -417}, 0, {  4056,    990}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{  -801,   -306,     -8}, 0, {  2240,    990}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{  -801,      0,     -8}, 0, {  2808,      0}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{  -801,   -306,     -8}, 0, {  2808,    990}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{  -801,   -306,    401}, 0, {   992,    990}, {0x88, 0x98, 0x84, 0xff}}},\n};\n\n// 0x0700B748 - 0x0700B790\nstatic const Gfx bits_seg7_dl_0700B748[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_0700B528, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700B790 - 0x0700B820\nstatic const Gfx bits_seg7_dl_0700B790[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bits_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_0700B5A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700B698, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP1Triangle( 8,  9, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700B820 - 0x0700B8B0\nconst Gfx bits_seg7_dl_0700B820[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bits_seg7_dl_0700B748),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bits_seg7_dl_0700B790),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/13/geo.inc.c",
    "content": "// 0x0E000538\nconst GeoLayout bits_geo_000538[] = {\n    GEO_CULLING_RADIUS(800),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bits_seg7_dl_0700BA18),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/13/model.inc.c",
    "content": "// 0x0700B8B0 - 0x0700B9B0\nstatic const Vtx bits_seg7_vertex_0700B8B0[] = {\n    {{{   410,      0,    410}, 0, {  2012,   1040}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   410,      0,   -409}, 0, {  2012,  -3046}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   154,    154,   -153}, 0, {   -20,  -1770}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   154,    154,    154}, 0, {   -20,   -236}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -409,      0,   -409}, 0, {  2012,   1040}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -409,      0,    410}, 0, {  2012,  -3046}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -153,    154,    154}, 0, {   -40,  -1770}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -153,    154,   -153}, 0, {   -40,   -236}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -409,      0,    410}, 0, {  2012,    990}, {0xbe, 0xbe, 0x00, 0xff}}},\n    {{{   154,    154,    154}, 0, {   -40,  -1820}, {0xbe, 0xbe, 0x00, 0xff}}},\n    {{{  -153,    154,    154}, 0, {   -40,   -288}, {0xbe, 0xbe, 0x00, 0xff}}},\n    {{{   410,      0,    410}, 0, {  2012,  -3098}, {0xbe, 0xbe, 0x00, 0xff}}},\n    {{{  -409,      0,   -409}, 0, {  2012,  -3098}, {0xbe, 0xbe, 0x00, 0xff}}},\n    {{{  -153,    154,   -153}, 0, {   -40,  -1820}, {0xbe, 0xbe, 0x00, 0xff}}},\n    {{{   154,    154,   -153}, 0, {   -40,   -288}, {0xbe, 0xbe, 0x00, 0xff}}},\n    {{{   410,      0,   -409}, 0, {  2012,    990}, {0xbe, 0xbe, 0x00, 0xff}}},\n};\n\n// 0x0700B9B0 - 0x0700BA18\nstatic const Gfx bits_seg7_dl_0700B9B0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_0700B8B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700BA18 - 0x0700BA88\nconst Gfx bits_seg7_dl_0700BA18[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bits_seg7_dl_0700B9B0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/14/geo.inc.c",
    "content": "// 0x0E000550\nconst GeoLayout bits_geo_000550[] = {\n    GEO_CULLING_RADIUS(2900),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bits_seg7_dl_0700CDC0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/14/model.inc.c",
    "content": "// 0x0700BA88 - 0x0700BB88\nstatic const Vtx bits_seg7_vertex_0700BA88[] = {\n    {{{  2648,   -352,    307}, 0, {  1462,      0}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{  1843,   -352,   -306}, 0, {   804,   2144}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{  1843,   -352,    307}, 0, {    -6,   1026}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{  2648,   -352,   -306}, 0, {  2270,   1086}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{  1843,   -455,    307}, 0, {    -6,   1026}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  2648,   -455,   -306}, 0, {  2270,   1086}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  2648,   -455,    307}, 0, {  1462,      0}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  1843,   -455,   -306}, 0, {   804,   2144}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  2648,   -455,    307}, 0, {  1462,      0}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{  2648,   -455,   -306}, 0, {  2270,   1086}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{  2648,   -352,   -306}, 0, {  2270,   1086}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{  2648,   -352,    307}, 0, {  1462,      0}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{  1843,   -352,    307}, 0, {    -6,   1026}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{  1843,   -352,   -306}, 0, {   804,   2144}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{  1843,   -455,   -306}, 0, {   804,   2144}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{  1843,   -455,    307}, 0, {    -6,   1026}, {0x6b, 0x72, 0xb5, 0xff}}},\n};\n\n// 0x0700BB88 - 0x0700BC08\nstatic const Vtx bits_seg7_vertex_0700BB88[] = {\n    {{{  2648,   -455,   -306}, 0, {  2270,   1086}, {0x52, 0x52, 0xac, 0xff}}},\n    {{{  1843,   -455,   -306}, 0, {   804,   2144}, {0x52, 0x52, 0xac, 0xff}}},\n    {{{  1843,   -352,   -306}, 0, {   804,   2144}, {0x52, 0x52, 0xac, 0xff}}},\n    {{{  2648,   -352,   -306}, 0, {  2270,   1086}, {0x52, 0x52, 0xac, 0xff}}},\n    {{{  2648,   -352,    307}, 0, {  1462,      0}, {0x52, 0x52, 0xac, 0xff}}},\n    {{{  1843,   -455,    307}, 0, {    -6,   1026}, {0x52, 0x52, 0xac, 0xff}}},\n    {{{  2648,   -455,    307}, 0, {  1462,      0}, {0x52, 0x52, 0xac, 0xff}}},\n    {{{  1843,   -352,    307}, 0, {    -6,   1026}, {0x52, 0x52, 0xac, 0xff}}},\n};\n\n// 0x0700BC08 - 0x0700BD08\nstatic const Vtx bits_seg7_vertex_0700BC08[] = {\n    {{{ -2402,   1111,    -12}, 0, { -6332,    650}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{ -2402,   1111,     13}, 0, { -6332,    650}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{ -2387,   1111,     13}, 0, { -6128,    598}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{ -2379,   1111,      0}, 0, { -6026,    572}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{ -2387,   1111,    -12}, 0, { -6128,    598}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{ -2410,   1111,      0}, 0, { -6434,    674}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{ -2402,    343,     13}, 0, {  1330,    650}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{ -2410,    343,      0}, 0, {  1228,    674}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{ -2402,    343,    -12}, 0, {  1330,    650}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{ -2387,    343,     13}, 0, {  1536,    598}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{ -2379,    343,      0}, 0, {  1638,    572}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{ -2387,    343,    -12}, 0, {  1536,    598}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{ -2410,    343,      0}, 0, {  1228,    674}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{ -2410,   1111,      0}, 0, { -6434,    674}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{ -2402,   1111,    -12}, 0, { -6332,    650}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{ -2402,    343,    -12}, 0, {  1330,    650}, {0x97, 0xa9, 0xcd, 0xff}}},\n};\n\n// 0x0700BD08 - 0x0700BE08\nstatic const Vtx bits_seg7_vertex_0700BD08[] = {\n    {{{ -2379,    343,      0}, 0, {  1638,    572}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{ -2387,   1111,     13}, 0, { -6128,    598}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{ -2387,    343,     13}, 0, {  1536,    598}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{ -2379,   1111,      0}, 0, { -6026,    572}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{ -2402,    343,    -12}, 0, {  1330,    650}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{ -2402,   1111,    -12}, 0, { -6332,    650}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{ -2387,   1111,    -12}, 0, { -6128,    598}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{ -2387,    343,    -12}, 0, {  1536,    598}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{ -2387,    343,     13}, 0, {  1536,    598}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{ -2387,   1111,     13}, 0, { -6128,    598}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{ -2402,   1111,     13}, 0, { -6332,    650}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{ -2402,    343,     13}, 0, {  1330,    650}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{ -2387,    343,    -12}, 0, {  1536,    598}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{ -2387,   1111,    -12}, 0, { -6128,    598}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{ -2379,   1111,      0}, 0, { -6026,    572}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{ -2379,    343,      0}, 0, {  1638,    572}, {0x79, 0x8c, 0xeb, 0xff}}},\n};\n\n// 0x0700BE08 - 0x0700BE48\nstatic const Vtx bits_seg7_vertex_0700BE08[] = {\n    {{{ -2402,    343,     13}, 0, {  1330,    650}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{ -2410,   1111,      0}, 0, { -6434,    674}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{ -2410,    343,      0}, 0, {  1228,    674}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{ -2402,   1111,     13}, 0, { -6332,    650}, {0x79, 0x8c, 0xeb, 0xff}}},\n};\n\n// 0x0700BE48 - 0x0700BF48\nstatic const Vtx bits_seg7_vertex_0700BE48[] = {\n    {{{ -2610,   -414,    307}, 0, { -2074,      0}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{ -2610,   -414,   -306}, 0, { -2074,      0}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{ -2201,   -414,   -306}, 0, {  -712,      0}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{ -2201,   -414,    307}, 0, {  -712,      0}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{ -2201,   -414,    307}, 0, {  -712,      0}, {0x79, 0x9f, 0xeb, 0xff}}},\n    {{{ -2201,   -414,   -306}, 0, {  -712,      0}, {0x79, 0x9f, 0xeb, 0xff}}},\n    {{{ -2388,    148,   -306}, 0, { -2824,   -646}, {0x79, 0x9f, 0xeb, 0xff}}},\n    {{{ -2388,    148,    307}, 0, { -2824,   -646}, {0x79, 0x9f, 0xeb, 0xff}}},\n    {{{ -2422,    148,    307}, 0, { -2824,   -646}, {0x79, 0x9f, 0xeb, 0xff}}},\n    {{{ -2422,    148,   -306}, 0, { -2824,   -646}, {0x79, 0x9f, 0xeb, 0xff}}},\n    {{{ -2610,   -414,   -306}, 0, { -2074,      0}, {0x79, 0x9f, 0xeb, 0xff}}},\n    {{{ -2610,   -414,    307}, 0, { -2074,      0}, {0x79, 0x9f, 0xeb, 0xff}}},\n    {{{ -2610,   -414,   -306}, 0, { -2074,      0}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{ -2422,    148,   -306}, 0, { -2762,   -594}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{ -2388,    148,   -306}, 0, { -2648,   -594}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{ -2201,   -414,   -306}, 0, {  -712,      0}, {0x52, 0x70, 0xac, 0xff}}},\n};\n\n// 0x0700BF48 - 0x0700BF88\nstatic const Vtx bits_seg7_vertex_0700BF48[] = {\n    {{{ -2201,   -414,    307}, 0, {  -712,      0}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{ -2422,    148,    307}, 0, { -2762,   -594}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{ -2610,   -414,    307}, 0, { -2074,      0}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{ -2388,    148,    307}, 0, { -2648,   -594}, {0x52, 0x70, 0xac, 0xff}}},\n};\n\n// 0x0700BF88 - 0x0700C088\nstatic const Vtx bits_seg7_vertex_0700BF88[] = {\n    {{{  1010,   -250,    307}, 0, { 11284,  -1638}, {0xeb, 0xeb, 0x79, 0xff}}},\n    {{{  1215,   -250,    307}, 0, { 12598,  -1930}, {0xeb, 0xeb, 0x79, 0xff}}},\n    {{{  1215,   -250,   -306}, 0, { 12598,  -1930}, {0xeb, 0xeb, 0x79, 0xff}}},\n    {{{ -1344,   -147,    307}, 0, { -4338,   1718}, {0xeb, 0xeb, 0x79, 0xff}}},\n    {{{ -1139,   -147,   -306}, 0, { -3024,   1426}, {0xeb, 0xeb, 0x79, 0xff}}},\n    {{{ -1344,   -147,   -306}, 0, { -4338,   1718}, {0xeb, 0xeb, 0x79, 0xff}}},\n    {{{ -1139,   -147,    307}, 0, { -3024,   1426}, {0xeb, 0xeb, 0x79, 0xff}}},\n    {{{  -525,   -147,    307}, 0, {   918,    552}, {0xeb, 0xeb, 0x79, 0xff}}},\n    {{{  -320,   -147,   -306}, 0, {  2232,    260}, {0xeb, 0xeb, 0x79, 0xff}}},\n    {{{  -525,   -147,   -306}, 0, {   918,    552}, {0xeb, 0xeb, 0x79, 0xff}}},\n    {{{  -320,   -147,    307}, 0, {  2232,    260}, {0xeb, 0xeb, 0x79, 0xff}}},\n    {{{   396,   -250,    307}, 0, {  7342,   -762}, {0xeb, 0xeb, 0x79, 0xff}}},\n    {{{   600,   -250,    307}, 0, {  8656,  -1054}, {0xeb, 0xeb, 0x79, 0xff}}},\n    {{{   600,   -250,   -306}, 0, {  8656,  -1054}, {0xeb, 0xeb, 0x79, 0xff}}},\n    {{{   396,   -250,   -306}, 0, {  7342,   -762}, {0xeb, 0xeb, 0x79, 0xff}}},\n    {{{  1010,   -250,   -306}, 0, { 11284,  -1638}, {0xeb, 0xeb, 0x79, 0xff}}},\n};\n\n// 0x0700C088 - 0x0700C188\nstatic const Vtx bits_seg7_vertex_0700C088[] = {\n    {{{  -832,    261,    307}, 0, {   990,   7120}, {0xff, 0xff, 0x65, 0xff}}},\n    {{{  -832,    261,   -306}, 0, {   990,   7120}, {0xff, 0xff, 0x65, 0xff}}},\n    {{{  -935,    159,   -306}, 0, {  2012,   7120}, {0xff, 0xff, 0x65, 0xff}}},\n    {{{   805,    159,    307}, 0, { -6672,  -1566}, {0xff, 0xff, 0x65, 0xff}}},\n    {{{   703,     56,   -306}, 0, { -5650,  -1566}, {0xff, 0xff, 0x65, 0xff}}},\n    {{{   703,     56,    307}, 0, { -5650,  -1566}, {0xff, 0xff, 0x65, 0xff}}},\n    {{{   805,    159,   -306}, 0, { -6672,  -1566}, {0xff, 0xff, 0x65, 0xff}}},\n    {{{   908,     56,    307}, 0, {  9094,  -1492}, {0xff, 0xff, 0x65, 0xff}}},\n    {{{   908,     56,   -306}, 0, {  9094,  -1492}, {0xff, 0xff, 0x65, 0xff}}},\n    {{{   805,    159,   -306}, 0, {  7926,  -1346}, {0xff, 0xff, 0x65, 0xff}}},\n    {{{   805,    159,    307}, 0, {  7926,  -1346}, {0xff, 0xff, 0x65, 0xff}}},\n    {{{  -730,    159,    307}, 0, { -1928,    844}, {0xff, 0xff, 0x65, 0xff}}},\n    {{{  -832,    261,   -306}, 0, { -3096,    990}, {0xff, 0xff, 0x65, 0xff}}},\n    {{{  -832,    261,    307}, 0, { -3096,    990}, {0xff, 0xff, 0x65, 0xff}}},\n    {{{  -730,    159,   -306}, 0, { -1928,    844}, {0xff, 0xff, 0x65, 0xff}}},\n    {{{  -935,    159,    307}, 0, {  2012,   7120}, {0xff, 0xff, 0x65, 0xff}}},\n};\n\n// 0x0700C188 - 0x0700C288\nstatic const Vtx bits_seg7_vertex_0700C188[] = {\n    {{{  1010,   -455,    307}, 0, { 12306,  -1638}, {0x62, 0x51, 0x52, 0xff}}},\n    {{{  1010,   -455,   -306}, 0, { 12306,  -1638}, {0x62, 0x51, 0x52, 0xff}}},\n    {{{  1215,   -455,   -306}, 0, { 13620,  -1930}, {0x62, 0x51, 0x52, 0xff}}},\n    {{{ -1344,   -455,    307}, 0, { -2804,   1718}, {0x62, 0x51, 0x52, 0xff}}},\n    {{{ -1344,   -455,   -306}, 0, { -2804,   1718}, {0x62, 0x51, 0x52, 0xff}}},\n    {{{ -1139,   -455,   -306}, 0, { -1490,   1426}, {0x62, 0x51, 0x52, 0xff}}},\n    {{{ -1139,   -455,    307}, 0, { -1490,   1426}, {0x62, 0x51, 0x52, 0xff}}},\n    {{{  -525,   -455,    307}, 0, {  2450,    552}, {0x62, 0x51, 0x52, 0xff}}},\n    {{{  -320,   -455,   -306}, 0, {  3764,    260}, {0x62, 0x51, 0x52, 0xff}}},\n    {{{  -320,   -455,    307}, 0, {  3764,    260}, {0x62, 0x51, 0x52, 0xff}}},\n    {{{  -525,   -455,   -306}, 0, {  2450,    552}, {0x62, 0x51, 0x52, 0xff}}},\n    {{{   396,   -455,    307}, 0, {  8364,   -762}, {0x62, 0x51, 0x52, 0xff}}},\n    {{{   600,   -455,   -306}, 0, {  9678,  -1054}, {0x62, 0x51, 0x52, 0xff}}},\n    {{{   600,   -455,    307}, 0, {  9678,  -1054}, {0x62, 0x51, 0x52, 0xff}}},\n    {{{   396,   -455,   -306}, 0, {  8364,   -762}, {0x62, 0x51, 0x52, 0xff}}},\n    {{{  1215,   -455,    307}, 0, { 13620,  -1930}, {0x62, 0x51, 0x52, 0xff}}},\n};\n\n// 0x0700C288 - 0x0700C378\nstatic const Vtx bits_seg7_vertex_0700C288[] = {\n    {{{  -320,   -147,    307}, 0, {  2232,    260}, {0xbb, 0x96, 0x6c, 0xff}}},\n    {{{  -320,   -455,   -306}, 0, {  3764,    260}, {0xbb, 0x96, 0x6c, 0xff}}},\n    {{{  -320,   -147,   -306}, 0, {  2232,    260}, {0xbb, 0x96, 0x6c, 0xff}}},\n    {{{ -1139,   -147,    307}, 0, { -3024,   1426}, {0xbb, 0x96, 0x6c, 0xff}}},\n    {{{ -1139,   -455,    307}, 0, { -1490,   1426}, {0xbb, 0x96, 0x6c, 0xff}}},\n    {{{ -1139,   -455,   -306}, 0, { -1490,   1426}, {0xbb, 0x96, 0x6c, 0xff}}},\n    {{{ -1139,   -147,   -306}, 0, { -3024,   1426}, {0xbb, 0x96, 0x6c, 0xff}}},\n    {{{ -1344,   -147,   -306}, 0, { -4338,   1718}, {0xbb, 0x96, 0x6c, 0xff}}},\n    {{{ -1344,   -455,   -306}, 0, { -2804,   1718}, {0xbb, 0x96, 0x6c, 0xff}}},\n    {{{ -1344,   -455,    307}, 0, { -2804,   1718}, {0xbb, 0x96, 0x6c, 0xff}}},\n    {{{ -1344,   -147,    307}, 0, { -4338,   1718}, {0xbb, 0x96, 0x6c, 0xff}}},\n    {{{  -525,   -147,   -306}, 0, {   918,    552}, {0xbb, 0x96, 0x6c, 0xff}}},\n    {{{  -525,   -455,    307}, 0, {  2450,    552}, {0xbb, 0x96, 0x6c, 0xff}}},\n    {{{  -525,   -147,    307}, 0, {   918,    552}, {0xbb, 0x96, 0x6c, 0xff}}},\n    {{{  -525,   -455,   -306}, 0, {  2450,    552}, {0xbb, 0x96, 0x6c, 0xff}}},\n};\n\n// 0x0700C378 - 0x0700C468\nstatic const Vtx bits_seg7_vertex_0700C378[] = {\n    {{{  1010,   -250,   -306}, 0, { 11284,  -1638}, {0xbb, 0x96, 0x6c, 0xff}}},\n    {{{  1010,   -455,   -306}, 0, { 12306,  -1638}, {0xbb, 0x96, 0x6c, 0xff}}},\n    {{{  1010,   -455,    307}, 0, { 12306,  -1638}, {0xbb, 0x96, 0x6c, 0xff}}},\n    {{{  -320,   -147,    307}, 0, {  2232,    260}, {0xbb, 0x96, 0x6c, 0xff}}},\n    {{{  -320,   -455,    307}, 0, {  3764,    260}, {0xbb, 0x96, 0x6c, 0xff}}},\n    {{{  -320,   -455,   -306}, 0, {  3764,    260}, {0xbb, 0x96, 0x6c, 0xff}}},\n    {{{   600,   -250,    307}, 0, {  8656,  -1054}, {0xbb, 0x96, 0x6c, 0xff}}},\n    {{{   600,   -455,    307}, 0, {  9678,  -1054}, {0xbb, 0x96, 0x6c, 0xff}}},\n    {{{   600,   -455,   -306}, 0, {  9678,  -1054}, {0xbb, 0x96, 0x6c, 0xff}}},\n    {{{   600,   -250,   -306}, 0, {  8656,  -1054}, {0xbb, 0x96, 0x6c, 0xff}}},\n    {{{   396,   -250,   -306}, 0, {  7342,   -762}, {0xbb, 0x96, 0x6c, 0xff}}},\n    {{{   396,   -455,    307}, 0, {  8364,   -762}, {0xbb, 0x96, 0x6c, 0xff}}},\n    {{{   396,   -250,    307}, 0, {  7342,   -762}, {0xbb, 0x96, 0x6c, 0xff}}},\n    {{{   396,   -455,   -306}, 0, {  8364,   -762}, {0xbb, 0x96, 0x6c, 0xff}}},\n    {{{  1010,   -250,    307}, 0, { 11284,  -1638}, {0xbb, 0x96, 0x6c, 0xff}}},\n};\n\n// 0x0700C468 - 0x0700C558\nstatic const Vtx bits_seg7_vertex_0700C468[] = {\n    {{{  1215,   -250,    307}, 0, { 12598,  -1930}, {0xbb, 0x96, 0x6c, 0xff}}},\n    {{{  1215,   -455,    307}, 0, { 13620,  -1930}, {0xbb, 0x96, 0x6c, 0xff}}},\n    {{{  1215,   -455,   -306}, 0, { 13620,  -1930}, {0xbb, 0x96, 0x6c, 0xff}}},\n    {{{  1215,   -250,   -306}, 0, { 12598,  -1930}, {0xbb, 0x96, 0x6c, 0xff}}},\n    {{{   600,   -250,    307}, 0, {  8656,  -1054}, {0x90, 0x6b, 0x59, 0xff}}},\n    {{{   396,   -455,    307}, 0, {  8364,   -762}, {0x90, 0x6b, 0x59, 0xff}}},\n    {{{   600,   -455,    307}, 0, {  9678,  -1054}, {0x90, 0x6b, 0x59, 0xff}}},\n    {{{ -1139,   -147,    307}, 0, { -3024,   1426}, {0x90, 0x6b, 0x59, 0xff}}},\n    {{{ -1344,   -147,    307}, 0, { -4338,   1718}, {0x90, 0x6b, 0x59, 0xff}}},\n    {{{ -1344,   -455,    307}, 0, { -2804,   1718}, {0x90, 0x6b, 0x59, 0xff}}},\n    {{{ -1139,   -455,    307}, 0, { -1490,   1426}, {0x90, 0x6b, 0x59, 0xff}}},\n    {{{  -320,   -147,    307}, 0, {  2232,    260}, {0x90, 0x6b, 0x59, 0xff}}},\n    {{{  -525,   -455,    307}, 0, {  2450,    552}, {0x90, 0x6b, 0x59, 0xff}}},\n    {{{  -320,   -455,    307}, 0, {  3764,    260}, {0x90, 0x6b, 0x59, 0xff}}},\n    {{{  -525,   -147,    307}, 0, {   918,    552}, {0x90, 0x6b, 0x59, 0xff}}},\n};\n\n// 0x0700C558 - 0x0700C648\nstatic const Vtx bits_seg7_vertex_0700C558[] = {\n    {{{   703,     56,    307}, 0, {  7780,  -1200}, {0x90, 0x6b, 0x59, 0xff}}},\n    {{{   805,    -45,    307}, 0, {  8948,  -1346}, {0x90, 0x6b, 0x59, 0xff}}},\n    {{{   908,     56,    307}, 0, {  9094,  -1492}, {0x90, 0x6b, 0x59, 0xff}}},\n    {{{   805,    159,    307}, 0, {  7926,  -1346}, {0x90, 0x6b, 0x59, 0xff}}},\n    {{{  -935,    159,    307}, 0, { -3242,   1134}, {0x90, 0x6b, 0x59, 0xff}}},\n    {{{  -832,     56,    307}, 0, { -2074,    990}, {0x90, 0x6b, 0x59, 0xff}}},\n    {{{  -730,    159,    307}, 0, { -1928,    844}, {0x90, 0x6b, 0x59, 0xff}}},\n    {{{   600,   -250,    307}, 0, {  8656,  -1054}, {0x90, 0x6b, 0x59, 0xff}}},\n    {{{   396,   -250,    307}, 0, {  7342,   -762}, {0x90, 0x6b, 0x59, 0xff}}},\n    {{{   396,   -455,    307}, 0, {  8364,   -762}, {0x90, 0x6b, 0x59, 0xff}}},\n    {{{  1215,   -250,    307}, 0, { 12598,  -1930}, {0x90, 0x6b, 0x59, 0xff}}},\n    {{{  1010,   -250,    307}, 0, { 11284,  -1638}, {0x90, 0x6b, 0x59, 0xff}}},\n    {{{  1010,   -455,    307}, 0, { 12306,  -1638}, {0x90, 0x6b, 0x59, 0xff}}},\n    {{{  1215,   -455,    307}, 0, { 13620,  -1930}, {0x90, 0x6b, 0x59, 0xff}}},\n    {{{  -832,    261,    307}, 0, { -3096,    990}, {0x90, 0x6b, 0x59, 0xff}}},\n};\n\n// 0x0700C648 - 0x0700C738\nstatic const Vtx bits_seg7_vertex_0700C648[] = {\n    {{{   703,     56,    307}, 0, {  7780,  -1200}, {0x76, 0x6a, 0x52, 0xff}}},\n    {{{   703,     56,   -306}, 0, {  7780,  -1200}, {0x76, 0x6a, 0x52, 0xff}}},\n    {{{   805,    -45,   -306}, 0, {  8948,  -1346}, {0x76, 0x6a, 0x52, 0xff}}},\n    {{{   805,    -45,    307}, 0, {  8948,  -1346}, {0x76, 0x6a, 0x52, 0xff}}},\n    {{{   908,     56,   -306}, 0, {  9094,  -1492}, {0x76, 0x6a, 0x52, 0xff}}},\n    {{{   908,     56,    307}, 0, {  9094,  -1492}, {0x76, 0x6a, 0x52, 0xff}}},\n    {{{  -832,     56,    307}, 0, { -2074,    990}, {0x76, 0x6a, 0x52, 0xff}}},\n    {{{  -730,    159,   -306}, 0, { -1928,    844}, {0x76, 0x6a, 0x52, 0xff}}},\n    {{{  -730,    159,    307}, 0, { -1928,    844}, {0x76, 0x6a, 0x52, 0xff}}},\n    {{{  -832,     56,   -306}, 0, { -2074,    990}, {0x76, 0x6a, 0x52, 0xff}}},\n    {{{  -935,    159,    307}, 0, { -3242,   1134}, {0x76, 0x6a, 0x52, 0xff}}},\n    {{{  -935,    159,   -306}, 0, { -3242,   1134}, {0x76, 0x6a, 0x52, 0xff}}},\n    {{{   600,   -455,   -306}, 0, {  9678,  -1054}, {0xbf, 0xaa, 0x3f, 0xff}}},\n    {{{   396,   -250,   -306}, 0, {  7342,   -762}, {0xbf, 0xaa, 0x3f, 0xff}}},\n    {{{   600,   -250,   -306}, 0, {  8656,  -1054}, {0xbf, 0xaa, 0x3f, 0xff}}},\n};\n\n// 0x0700C738 - 0x0700C828\nstatic const Vtx bits_seg7_vertex_0700C738[] = {\n    {{{ -1139,   -455,   -306}, 0, { -1490,   1426}, {0xbf, 0xaa, 0x3f, 0xff}}},\n    {{{ -1344,   -455,   -306}, 0, { -2804,   1718}, {0xbf, 0xaa, 0x3f, 0xff}}},\n    {{{ -1344,   -147,   -306}, 0, { -4338,   1718}, {0xbf, 0xaa, 0x3f, 0xff}}},\n    {{{ -1139,   -147,   -306}, 0, { -3024,   1426}, {0xbf, 0xaa, 0x3f, 0xff}}},\n    {{{  -320,   -455,   -306}, 0, {  3764,    260}, {0xbf, 0xaa, 0x3f, 0xff}}},\n    {{{  -525,   -147,   -306}, 0, {   918,    552}, {0xbf, 0xaa, 0x3f, 0xff}}},\n    {{{  -320,   -147,   -306}, 0, {  2232,    260}, {0xbf, 0xaa, 0x3f, 0xff}}},\n    {{{  -525,   -455,   -306}, 0, {  2450,    552}, {0xbf, 0xaa, 0x3f, 0xff}}},\n    {{{   805,    159,   -306}, 0, {  7926,  -1346}, {0xbf, 0xaa, 0x3f, 0xff}}},\n    {{{   805,    -45,   -306}, 0, {  8948,  -1346}, {0xbf, 0xaa, 0x3f, 0xff}}},\n    {{{   703,     56,   -306}, 0, {  7780,  -1200}, {0xbf, 0xaa, 0x3f, 0xff}}},\n    {{{   908,     56,   -306}, 0, {  9094,  -1492}, {0xbf, 0xaa, 0x3f, 0xff}}},\n    {{{  -832,    261,   -306}, 0, { -3096,    990}, {0xbf, 0xaa, 0x3f, 0xff}}},\n    {{{  -730,    159,   -306}, 0, { -1928,    844}, {0xbf, 0xaa, 0x3f, 0xff}}},\n    {{{  -832,     56,   -306}, 0, { -2074,    990}, {0xbf, 0xaa, 0x3f, 0xff}}},\n};\n\n// 0x0700C828 - 0x0700C8C8\nstatic const Vtx bits_seg7_vertex_0700C828[] = {\n    {{{   600,   -455,   -306}, 0, {  9678,  -1054}, {0xbf, 0xaa, 0x3f, 0xff}}},\n    {{{   396,   -455,   -306}, 0, {  8364,   -762}, {0xbf, 0xaa, 0x3f, 0xff}}},\n    {{{   396,   -250,   -306}, 0, {  7342,   -762}, {0xbf, 0xaa, 0x3f, 0xff}}},\n    {{{  1215,   -455,   -306}, 0, { 13620,  -1930}, {0xbf, 0xaa, 0x3f, 0xff}}},\n    {{{  1010,   -455,   -306}, 0, { 12306,  -1638}, {0xbf, 0xaa, 0x3f, 0xff}}},\n    {{{  1010,   -250,   -306}, 0, { 11284,  -1638}, {0xbf, 0xaa, 0x3f, 0xff}}},\n    {{{  1215,   -250,   -306}, 0, { 12598,  -1930}, {0xbf, 0xaa, 0x3f, 0xff}}},\n    {{{  -832,    261,   -306}, 0, { -3096,    990}, {0xbf, 0xaa, 0x3f, 0xff}}},\n    {{{  -832,     56,   -306}, 0, { -2074,    990}, {0xbf, 0xaa, 0x3f, 0xff}}},\n    {{{  -935,    159,   -306}, 0, { -3242,   1134}, {0xbf, 0xaa, 0x3f, 0xff}}},\n};\n\n// 0x0700C8C8 - 0x0700C908\nstatic const Vtx bits_seg7_vertex_0700C8C8[] = {\n    {{{ -2388,    148,   -306}, 0, {     0,      0}, {0x8f, 0xb8, 0xef, 0xff}}},\n    {{{ -2422,    148,   -306}, 0, {     0,      0}, {0x8f, 0xb8, 0xef, 0xff}}},\n    {{{ -2422,    148,    307}, 0, {     0,      0}, {0x8f, 0xb8, 0xef, 0xff}}},\n    {{{ -2388,    148,    307}, 0, {     0,      0}, {0x8f, 0xb8, 0xef, 0xff}}},\n};\n\n// 0x0700C908 - 0x0700C998\nstatic const Gfx bits_seg7_dl_0700C908[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_0700BA88, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700BB88, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700C998 - 0x0700CA70\nstatic const Gfx bits_seg7_dl_0700C998[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_0700BC08, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  2,  3, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6,  8, 0x0),\n    gsSP2Triangles(10,  9,  8, 0x0, 11, 10,  8, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700BD08, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700BE08, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700CA70 - 0x0700CAF0\nstatic const Gfx bits_seg7_dl_0700CA70[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_0700BE48, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700BF48, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700CAF0 - 0x0700CDA0\nstatic const Gfx bits_seg7_dl_0700CAF0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_0700BF88, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700C088, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700C188, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700C288, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700C378, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700C468, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700C558, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 4,  6, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700C648, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10,  9,  6, 0x0, 10, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700C738, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700C828, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700CDA0 - 0x0700CDC0\nstatic const Gfx bits_seg7_dl_0700CDA0[] = {\n    gsSPVertex(bits_seg7_vertex_0700C8C8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700CDC0 - 0x0700CE50\nconst Gfx bits_seg7_dl_0700CDC0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bits_seg7_dl_0700C908),\n    gsSPDisplayList(bits_seg7_dl_0700C998),\n    gsSPDisplayList(bits_seg7_dl_0700CA70),\n    gsSPDisplayList(bits_seg7_dl_0700CAF0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(bits_seg7_dl_0700CDA0),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/15/geo.inc.c",
    "content": "// 0x0E000568\nconst GeoLayout bits_geo_000568[] = {\n    GEO_CULLING_RADIUS(2400),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bits_seg7_dl_0700D278),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/15/model.inc.c",
    "content": "// 0x0700CE50 - 0x0700CF50\nstatic const Vtx bits_seg7_vertex_0700CE50[] = {\n    {{{ -2047,    205,    307}, 0, {   480,    478}, {0x7d, 0x7d, 0x9b, 0xff}}},\n    {{{ -2047,    205,   -306}, 0, {  2012,   2010}, {0x7d, 0x7d, 0x9b, 0xff}}},\n    {{{ -2047,      0,   -306}, 0, {  1502,   2522}, {0x7d, 0x7d, 0x9b, 0xff}}},\n    {{{ -2047,      0,    307}, 0, {     0,    990}, {0x7d, 0x7d, 0x9b, 0xff}}},\n    {{{   102,   1741,   -306}, 0, {  6866,  -2842}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   102,   1741,    307}, 0, {  5334,  -4376}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1331,   1741,    307}, 0, {  8400,  -7442}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1331,   1741,   -306}, 0, {  9932,  -5908}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   102,   1741,    307}, 0, {  9678,   2010}, {0x6f, 0x6b, 0x89, 0xff}}},\n    {{{  1331,   1536,    307}, 0, { 12232,   5588}, {0x6f, 0x6b, 0x89, 0xff}}},\n    {{{  1331,   1741,    307}, 0, { 12744,   5076}, {0x6f, 0x6b, 0x89, 0xff}}},\n    {{{   307,   1536,    307}, 0, {  9678,   3032}, {0x6f, 0x6b, 0x89, 0xff}}},\n    {{{ -1740,    205,    307}, 0, {  1246,   1244}, {0x6f, 0x6b, 0x89, 0xff}}},\n    {{{ -1525,      7,    307}, 0, {  1288,   2272}, {0x6f, 0x6b, 0x89, 0xff}}},\n    {{{ -2047,    205,    307}, 0, {   480,    478}, {0x6f, 0x6b, 0x89, 0xff}}},\n    {{{ -2047,      0,    307}, 0, {     0,    990}, {0x6f, 0x6b, 0x89, 0xff}}},\n};\n\n// 0x0700CF50 - 0x0700D040\nstatic const Vtx bits_seg7_vertex_0700CF50[] = {\n    {{{   102,   1741,   -306}, 0, {  9678,   2010}, {0x6f, 0x6b, 0x89, 0xff}}},\n    {{{   307,   1536,   -306}, 0, {  9678,   3032}, {0x6f, 0x6b, 0x89, 0xff}}},\n    {{{ -1525,      7,   -306}, 0, {  1288,   2272}, {0x6f, 0x6b, 0x89, 0xff}}},\n    {{{ -1740,    205,   -306}, 0, {  1246,   1244}, {0x6f, 0x6b, 0x89, 0xff}}},\n    {{{ -2047,    205,   -306}, 0, {   480,    478}, {0x6f, 0x6b, 0x89, 0xff}}},\n    {{{ -2047,      0,   -306}, 0, {     0,    990}, {0x6f, 0x6b, 0x89, 0xff}}},\n    {{{  1331,   1741,   -306}, 0, { 12744,   5076}, {0x6f, 0x6b, 0x89, 0xff}}},\n    {{{   102,   1741,    307}, 0, {  9678,   2010}, {0x6f, 0x6b, 0x89, 0xff}}},\n    {{{   307,   1536,    307}, 0, {  9678,   3032}, {0x6f, 0x6b, 0x89, 0xff}}},\n    {{{  1331,   1536,    307}, 0, { 12232,   5588}, {0x6f, 0x6b, 0x89, 0xff}}},\n    {{{  1331,   1536,   -306}, 0, { 12232,   5588}, {0x6f, 0x6b, 0x89, 0xff}}},\n    {{{ -1525,      7,    307}, 0, {  2802,    758}, {0x54, 0x47, 0x61, 0xff}}},\n    {{{   307,   1536,   -306}, 0, {  5844,   6864}, {0x54, 0x47, 0x61, 0xff}}},\n    {{{   307,   1536,    307}, 0, {  7378,   5332}, {0x54, 0x47, 0x61, 0xff}}},\n    {{{ -1525,      7,   -306}, 0, {  1270,   2290}, {0x54, 0x47, 0x61, 0xff}}},\n};\n\n// 0x0700D040 - 0x0700D0C0\nstatic const Vtx bits_seg7_vertex_0700D040[] = {\n    {{{ -2047,      0,    307}, 0, {  1502,   -544}, {0x43, 0x3b, 0x58, 0xff}}},\n    {{{ -2047,      0,   -306}, 0, {     0,    990}, {0x43, 0x3b, 0x58, 0xff}}},\n    {{{ -1525,      7,   -306}, 0, {  1270,   2290}, {0x43, 0x3b, 0x58, 0xff}}},\n    {{{ -1525,      7,    307}, 0, {  2802,    758}, {0x43, 0x3b, 0x58, 0xff}}},\n    {{{   307,   1536,   -306}, 0, {  5844,   6864}, {0x43, 0x3b, 0x58, 0xff}}},\n    {{{  1331,   1536,   -306}, 0, {  8400,   9420}, {0x43, 0x3b, 0x58, 0xff}}},\n    {{{  1331,   1536,    307}, 0, {  9932,   7886}, {0x43, 0x3b, 0x58, 0xff}}},\n    {{{   307,   1536,    307}, 0, {  7378,   5332}, {0x43, 0x3b, 0x58, 0xff}}},\n};\n\n// 0x0700D0C0 - 0x0700D140\nstatic const Vtx bits_seg7_vertex_0700D0C0[] = {\n    {{{  1280,   1587,   -281}, 0, {     0,      0}, {0x43, 0x3b, 0x58, 0xff}}},\n    {{{  1382,   1587,    282}, 0, {     0,      0}, {0x43, 0x3b, 0x58, 0xff}}},\n    {{{  1280,   1587,    282}, 0, {     0,      0}, {0x43, 0x3b, 0x58, 0xff}}},\n    {{{  1382,   1715,    282}, 0, {     0,      0}, {0x43, 0x3b, 0x58, 0xff}}},\n    {{{  1280,   1715,    282}, 0, {     0,      0}, {0x43, 0x3b, 0x58, 0xff}}},\n    {{{  1382,   1587,   -281}, 0, {     0,      0}, {0x43, 0x3b, 0x58, 0xff}}},\n    {{{  1382,   1715,   -281}, 0, {     0,      0}, {0x43, 0x3b, 0x58, 0xff}}},\n    {{{  1280,   1715,   -281}, 0, {     0,      0}, {0x43, 0x3b, 0x58, 0xff}}},\n};\n\n// 0x0700D140 - 0x0700D228\nstatic const Gfx bits_seg7_dl_0700D140[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_0700CE50, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  8, 12, 0x0),\n    gsSP2Triangles(12, 13, 11, 0x0, 12, 14, 13, 0x0),\n    gsSP1Triangle(14, 15, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700CF50, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 2,  4,  3, 0x0,  2,  5,  4, 0x0),\n    gsSP2Triangles( 6,  1,  0, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 6, 10,  1, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700D040, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700D228 - 0x0700D278\nstatic const Gfx bits_seg7_dl_0700D228[] = {\n    gsSPVertex(bits_seg7_vertex_0700D0C0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 7,  5,  0, 0x0,  7,  6,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700D278 - 0x0700D2F0\nconst Gfx bits_seg7_dl_0700D278[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bits_seg7_dl_0700D140),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(bits_seg7_dl_0700D228),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/16/geo.inc.c",
    "content": "// 0x0E000580\nconst GeoLayout bits_geo_000580[] = {\n    GEO_CULLING_RADIUS(3500),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, bits_seg7_dl_0700D5A0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/16/model.inc.c",
    "content": "// 0x0700D2F0 - 0x0700D3F0\nstatic const Vtx bits_seg7_vertex_0700D2F0[] = {\n    {{{ -3043,     51,    -50}, 0, { 23342,    678}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{     0,     51,    -50}, 0, { 10684,    678}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{     0,      0,      0}, 0, { 10862,    748}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{ -3043,      0,      0}, 0, { 23520,    748}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{  2765,     51,    -50}, 0, {  -810,    678}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{  2765,      0,      0}, 0, {  -634,    748}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{ -3043,     51,     51}, 0, { 23342,    678}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{     0,    102,      0}, 0, { 10508,    606}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{ -3043,    102,      0}, 0, { 23164,    606}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{     0,     51,     51}, 0, { 10684,    678}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{  2765,    102,      0}, 0, {  -988,    606}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{  2765,     51,     51}, 0, {  -810,    678}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{ -3043,    102,      0}, 0, { 23164,    606}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{     0,     51,    -50}, 0, { 10684,    678}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{ -3043,     51,    -50}, 0, { 23342,    678}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{     0,    102,      0}, 0, { 10508,    606}, {0x8c, 0x98, 0xd8, 0xff}}},\n};\n\n// 0x0700D3F0 - 0x0700D4D0\nstatic const Vtx bits_seg7_vertex_0700D3F0[] = {\n    {{{     0,    102,      0}, 0, { 10508,    606}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  2765,     51,    -50}, 0, {  -810,    678}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{     0,     51,    -50}, 0, { 10684,    678}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  2765,    102,      0}, 0, {  -988,    606}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{ -3043,     51,    -50}, 0, { 23342,    678}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{ -3043,      0,      0}, 0, { 23520,    748}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{ -3043,     51,     51}, 0, { 23342,    678}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{     0,     51,     51}, 0, { 10684,    678}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{     0,      0,      0}, 0, { 10862,    748}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  2765,     51,     51}, 0, {  -810,    678}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  2765,      0,      0}, 0, {  -634,    748}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{ -3043,    102,      0}, 0, { 23164,    606}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  2765,    102,      0}, 0, {  -988,    606}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  2765,     51,    -50}, 0, {  -810,    678}, {0x52, 0x61, 0xac, 0xff}}},\n};\n\n// 0x0700D4D0 - 0x0700D5A0\nstatic const Gfx bits_seg7_dl_0700D4D0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_0700D2F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700D3F0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 5,  8,  7, 0x0,  8,  9,  7, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0,  4,  6, 11, 0x0),\n    gsSP2Triangles(12,  9, 10, 0x0, 12, 10, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700D5A0 - 0x0700D620\nconst Gfx bits_seg7_dl_0700D5A0[] = {\n    gsDPPipeSync(),\n    gsDPSetEnvColor(255, 255, 255, 180),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bits_seg7_dl_0700D4D0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/17/geo.inc.c",
    "content": "// 0x0E000598\nconst GeoLayout bits_geo_000598[] = {\n    GEO_CULLING_RADIUS(2200),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bits_seg7_dl_0700DD00),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/17/model.inc.c",
    "content": "// 0x0700D620 - 0x0700D720\nstatic const Vtx bits_seg7_vertex_0700D620[] = {\n    {{{  1581,     51,   -108}, 0, {  1246,   2328}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{  1536,     51,      0}, 0, {   478,   2010}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{  1581,     51,    109}, 0, {   162,   1244}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{  1690,     51,    154}, 0, {   480,    478}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{  1798,     51,    109}, 0, {  1246,    162}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{  1843,     51,      0}, 0, {  2012,    480}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{  1798,     51,   -108}, 0, {  2330,   1244}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{  1690,     51,   -153}, 0, {  2012,   2010}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{  1798,      0,    109}, 0, {  1246,    162}, {0x96, 0x96, 0x00, 0xff}}},\n    {{{  1690,     51,    154}, 0, {   480,    478}, {0x96, 0x96, 0x00, 0xff}}},\n    {{{  1690,      0,    154}, 0, {   478,    480}, {0x96, 0x96, 0x00, 0xff}}},\n    {{{  1798,     51,    109}, 0, {  1246,    162}, {0x96, 0x96, 0x00, 0xff}}},\n    {{{  1690,      0,   -153}, 0, {  2012,   2010}, {0x96, 0x96, 0x00, 0xff}}},\n    {{{  1690,     51,   -153}, 0, {  2012,   2010}, {0x96, 0x96, 0x00, 0xff}}},\n    {{{  1798,     51,   -108}, 0, {  2330,   1244}, {0x96, 0x96, 0x00, 0xff}}},\n    {{{  1798,      0,   -108}, 0, {  2330,   1244}, {0x96, 0x96, 0x00, 0xff}}},\n};\n\n// 0x0700D720 - 0x0700D820\nstatic const Vtx bits_seg7_vertex_0700D720[] = {\n    {{{  1581,      0,    109}, 0, {   162,   1244}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  1536,     51,      0}, 0, {   478,   2010}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  1536,      0,      0}, 0, {   478,   2010}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  1581,     51,    109}, 0, {   162,   1244}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  1798,      0,   -108}, 0, {  2330,   1244}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  1843,     51,      0}, 0, {  2012,    480}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  1843,      0,      0}, 0, {  2012,    480}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  1798,     51,   -108}, 0, {  2330,   1244}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  1536,      0,      0}, 0, {   478,   2010}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  1581,     51,   -108}, 0, {  1246,   2328}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  1581,      0,   -108}, 0, {  1246,   2328}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  1536,     51,      0}, 0, {   478,   2010}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  1843,      0,      0}, 0, {  2012,    480}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  1843,     51,      0}, 0, {  2012,    480}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  1798,     51,    109}, 0, {  1246,    162}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  1798,      0,    109}, 0, {  1246,    162}, {0x6b, 0x6b, 0x00, 0xff}}},\n};\n\n// 0x0700D820 - 0x0700D8A0\nstatic const Vtx bits_seg7_vertex_0700D820[] = {\n    {{{  1581,      0,   -108}, 0, {  1246,   2328}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  1690,     51,   -153}, 0, {  2012,   2010}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  1690,      0,   -153}, 0, {  2012,   2010}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  1581,     51,   -108}, 0, {  1246,   2328}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  1690,      0,    154}, 0, {   478,    480}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  1690,     51,    154}, 0, {   480,    478}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  1581,     51,    109}, 0, {   162,   1244}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  1581,      0,    109}, 0, {   162,   1244}, {0x78, 0x78, 0x00, 0xff}}},\n};\n\n// 0x0700D8A0 - 0x0700D980\nstatic const Vtx bits_seg7_vertex_0700D8A0[] = {\n    {{{    -7,   2068,    -12}, 0, {   224, -19654}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{    15,   2068,      0}, 0, {   280, -19424}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{     8,   2068,    -12}, 0, {   262, -19502}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{     8,   2068,     13}, 0, {   262, -19502}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{   -14,   2068,      0}, 0, {   204, -19732}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{    -7,   2068,     13}, 0, {   224, -19654}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{    15,      0,      0}, 0, {   280,   1218}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{     8,   2068,     13}, 0, {   262, -19502}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{     8,      0,     13}, 0, {   262,   1142}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{    15,   2068,      0}, 0, {   280, -19424}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{   -14,      0,      0}, 0, {   204,    914}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{   -14,   2068,      0}, 0, {   204, -19732}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{    -7,   2068,    -12}, 0, {   224, -19654}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{    -7,      0,    -12}, 0, {   224,    990}, {0x97, 0xa9, 0xcd, 0xff}}},\n};\n\n// 0x0700D980 - 0x0700DA80\nstatic const Vtx bits_seg7_vertex_0700D980[] = {\n    {{{    -7,      0,    -12}, 0, {   224,    990}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{     8,   2068,    -12}, 0, {   262, -19502}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{     8,      0,    -12}, 0, {   262,   1142}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{    -7,   2068,    -12}, 0, {   224, -19654}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{     8,      0,     13}, 0, {   262,   1142}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{     8,   2068,     13}, 0, {   262, -19502}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{    -7,   2068,     13}, 0, {   224, -19654}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{    -7,      0,     13}, 0, {   224,    990}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{     8,      0,    -12}, 0, {   262,   1142}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{     8,   2068,    -12}, 0, {   262, -19502}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{    15,   2068,      0}, 0, {   280, -19424}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{    15,      0,      0}, 0, {   280,   1218}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{    -7,      0,     13}, 0, {   224,    990}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{    -7,   2068,     13}, 0, {   224, -19654}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{   -14,   2068,      0}, 0, {   204, -19732}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{   -14,      0,      0}, 0, {   204,    914}, {0x8c, 0x98, 0xd8, 0xff}}},\n};\n\n// 0x0700DA80 - 0x0700DB20\nstatic const Vtx bits_seg7_vertex_0700DA80[] = {\n    {{{  1690,    307,      0}, 0, {   480,      0}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1587,     51,      0}, 0, {     0,   1672}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1690,     51,    102}, 0, {   480,   1672}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1792,     51,      0}, 0, {   990,   1672}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1690,     51,   -101}, 0, {   480,   1672}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1690,     51,    102}, 0, {   480,   1672}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1792,     51,      0}, 0, {   990,   1672}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1690,    307,      0}, 0, {   480,      0}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1690,     51,   -101}, 0, {   480,   1672}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1587,     51,      0}, 0, {     0,   1672}, {0xc8, 0xc8, 0xc8, 0xff}}},\n};\n\n// 0x0700DB20 - 0x0700DC08\nstatic const Gfx bits_seg7_dl_0700DB20[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_0700D620, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  6,  7, 0x0,  0,  5,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700D720, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700D820, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700DC08 - 0x0700DCB8\nstatic const Gfx bits_seg7_dl_0700DC08[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_0700D8A0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  0,  5,  3, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700D980, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700DCB8 - 0x0700DD00\nstatic const Gfx bits_seg7_dl_0700DCB8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_0700DA80, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  7,  8,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700DD00 - 0x0700DD98\nconst Gfx bits_seg7_dl_0700DD00[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bits_seg7_dl_0700DB20),\n    gsSPDisplayList(bits_seg7_dl_0700DC08),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bits_seg7_dl_0700DCB8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/18/geo.inc.c",
    "content": "// 0x0E0005B0\nconst GeoLayout bits_geo_0005B0[] = {\n    GEO_CULLING_RADIUS(2700),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bits_seg7_dl_0700FC70),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/18/model.inc.c",
    "content": "// 0x0700DD98 - 0x0700DE98\nstatic const Vtx bits_seg7_vertex_0700DD98[] = {\n    {{{  1132,   1009,   -922}, 0, { -5320,   1468}, {0x90, 0x92, 0xee, 0xff}}},\n    {{{  1183,   1009,   -973}, 0, { -5086,   1410}, {0x90, 0x92, 0xee, 0xff}}},\n    {{{  1132,   1009,  -1025}, 0, { -5320,   1468}, {0x90, 0x92, 0xee, 0xff}}},\n    {{{  1080,   1009,   -973}, 0, { -5552,   1528}, {0x90, 0x92, 0xee, 0xff}}},\n    {{{  1183,    958,   -922}, 0, { -4872,   1390}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{    56,    907,   -973}, 0, { -9796,   2656}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  1183,    907,   -973}, 0, { -4658,   1372}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  1971,    -19,   -979}, 0, {  2816,    122}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  1050,     31,  -1030}, 0, { -1602,   1190}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  1971,     31,  -1030}, 0, {  2602,    142}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  1050,    -19,   -979}, 0, { -1388,   1170}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  1971,     31,   -927}, 0, {  2602,    142}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  1050,     31,   -927}, 0, { -1602,   1190}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{   159,    907,   -666}, 0, { -2974,   1724}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{   210,    958,   -973}, 0, {  3892,   -808}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{   210,    958,   -666}, 0, { -3300,   1806}, {0x3d, 0x3c, 0x76, 0xff}}},\n};\n\n// 0x0700DE98 - 0x0700DF98\nstatic const Vtx bits_seg7_vertex_0700DE98[] = {\n    {{{   159,    907,   -666}, 0, { -2974,   1724}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{   159,    907,   -973}, 0, {  4220,   -890}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{   210,    958,   -973}, 0, {  3892,   -808}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{   108,    958,   -666}, 0, { -3300,   1806}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{   108,    958,   -973}, 0, {  3892,   -808}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  1183,    907,   -973}, 0, { -4658,   1372}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{    56,    958,  -1025}, 0, {-10010,   2676}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  1183,    958,  -1025}, 0, { -4872,   1390}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  1183,    958,   -922}, 0, { -4872,   1390}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{    56,    958,   -922}, 0, {-10010,   2676}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{    56,    907,   -973}, 0, { -9796,   2656}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  1203,   -173,   -927}, 0, {   -44,    940}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  1050,   -173,   -927}, 0, {  -744,   1112}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  1050,   -224,   -979}, 0, {  -530,   1092}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  1203,   -224,   -979}, 0, {   168,    920}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  1050,   -173,  -1030}, 0, {  -744,   1112}, {0x3d, 0x3c, 0x76, 0xff}}},\n};\n\n// 0x0700DF98 - 0x0700E078\nstatic const Vtx bits_seg7_vertex_0700DF98[] = {\n    {{{  1203,   -224,   -979}, 0, {   168,    920}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  1050,   -173,  -1030}, 0, {  -744,   1112}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  1203,   -173,  -1030}, 0, {   -44,    940}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  1080,   -255,   -973}, 0, {  -264,   1046}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  1132,   -255,  -1025}, 0, {     0,    990}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  1183,   -255,   -973}, 0, {   202,    932}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  1132,   -255,   -922}, 0, {     0,    990}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  1971,     31,  -1030}, 0, {  2602,    142}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{  1050,     82,   -979}, 0, { -1816,   1210}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{  1971,     82,   -979}, 0, {  2388,    160}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{  1050,     31,  -1030}, 0, { -1602,   1190}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{  1050,    -19,   -979}, 0, { -1388,   1170}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{  1050,     31,   -927}, 0, { -1602,   1190}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{  1971,     31,   -927}, 0, {  2602,    142}, {0x6b, 0x72, 0xb5, 0xff}}},\n};\n\n// 0x0700E078 - 0x0700E178\nstatic const Vtx bits_seg7_vertex_0700E078[] = {\n    {{{   159,   1009,   -666}, 0, { -3628,   1888}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{   159,   1009,   -973}, 0, {  3566,   -726}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{   108,    958,   -973}, 0, {  3892,   -808}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{   108,    958,   -666}, 0, { -3300,   1806}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{  1183,    958,  -1025}, 0, { -4872,   1390}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{    56,    958,  -1025}, 0, {-10010,   2676}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{    56,   1009,   -973}, 0, {-10224,   2696}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{  1183,   1009,   -973}, 0, { -5086,   1410}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{    56,    958,   -922}, 0, {-10010,   2676}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{  1183,    958,   -922}, 0, { -4872,   1390}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{  1203,   -122,   -979}, 0, {  -258,    958}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{  1050,   -173,   -927}, 0, {  -744,   1112}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{  1203,   -173,   -927}, 0, {   -44,    940}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{  1050,   -122,   -979}, 0, {  -958,   1132}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{  1203,   -173,  -1030}, 0, {   -44,    940}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{  1050,   -173,  -1030}, 0, {  -744,   1112}, {0x6b, 0x72, 0xb5, 0xff}}},\n};\n\n// 0x0700E178 - 0x0700E268\nstatic const Vtx bits_seg7_vertex_0700E178[] = {\n    {{{   159,   1009,   -973}, 0, { -9758,   2578}, {0x73, 0xb0, 0xd3, 0xff}}},\n    {{{   210,    958,   -973}, 0, { -9310,   2500}, {0x73, 0xb0, 0xd3, 0xff}}},\n    {{{   159,    907,   -973}, 0, { -9330,   2540}, {0x73, 0xb0, 0xd3, 0xff}}},\n    {{{   108,    958,   -973}, 0, { -9776,   2618}, {0x73, 0xb0, 0xd3, 0xff}}},\n    {{{    56,   1009,   -973}, 0, {-10224,   2696}, {0x73, 0xb0, 0xd3, 0xff}}},\n    {{{    56,    958,  -1025}, 0, {-10010,   2676}, {0x73, 0xb0, 0xd3, 0xff}}},\n    {{{    56,    907,   -973}, 0, { -9796,   2656}, {0x73, 0xb0, 0xd3, 0xff}}},\n    {{{    56,    958,   -922}, 0, {-10010,   2676}, {0x73, 0xb0, 0xd3, 0xff}}},\n    {{{  1183,   1009,   -973}, 0, { -5086,   1410}, {0x52, 0x52, 0xac, 0xff}}},\n    {{{  1183,    958,   -922}, 0, { -4872,   1390}, {0x52, 0x52, 0xac, 0xff}}},\n    {{{  1183,    907,   -973}, 0, { -4658,   1372}, {0x52, 0x52, 0xac, 0xff}}},\n    {{{  1971,     31,   -927}, 0, {  2602,    142}, {0x52, 0x52, 0xac, 0xff}}},\n    {{{  1971,     31,  -1030}, 0, {  2602,    142}, {0x52, 0x52, 0xac, 0xff}}},\n    {{{  1971,     82,   -979}, 0, {  2388,    160}, {0x52, 0x52, 0xac, 0xff}}},\n    {{{  1971,    -19,   -979}, 0, {  2816,    122}, {0x52, 0x52, 0xac, 0xff}}},\n};\n\n// 0x0700E268 - 0x0700E358\nstatic const Vtx bits_seg7_vertex_0700E268[] = {\n    {{{   159,   1009,   -666}, 0, { -3628,   1888}, {0x52, 0x52, 0xac, 0xff}}},\n    {{{   108,    958,   -666}, 0, { -3300,   1806}, {0x52, 0x52, 0xac, 0xff}}},\n    {{{   159,    907,   -666}, 0, { -2974,   1724}, {0x52, 0x52, 0xac, 0xff}}},\n    {{{   210,    958,   -666}, 0, { -3300,   1806}, {0x52, 0x52, 0xac, 0xff}}},\n    {{{  1203,   -173,   -927}, 0, {   -44,    940}, {0x52, 0x52, 0xac, 0xff}}},\n    {{{  1203,   -173,  -1030}, 0, {   -44,    940}, {0x52, 0x52, 0xac, 0xff}}},\n    {{{  1203,   -122,   -979}, 0, {  -258,    958}, {0x52, 0x52, 0xac, 0xff}}},\n    {{{  1203,   -224,   -979}, 0, {   168,    920}, {0x52, 0x52, 0xac, 0xff}}},\n    {{{  1183,   1009,   -973}, 0, { -5086,   1410}, {0x52, 0x52, 0xac, 0xff}}},\n    {{{  1183,    907,   -973}, 0, { -4658,   1372}, {0x52, 0x52, 0xac, 0xff}}},\n    {{{  1183,    958,  -1025}, 0, { -4872,   1390}, {0x52, 0x52, 0xac, 0xff}}},\n    {{{  1183,   1009,   -973}, 0, { -5086,   1410}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{  1132,   -255,  -1025}, 0, {     0,    990}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{  1132,   1009,  -1025}, 0, { -5320,   1468}, {0x61, 0x52, 0xac, 0xff}}},\n    {{{  1183,   -255,   -973}, 0, {   202,    932}, {0x61, 0x52, 0xac, 0xff}}},\n};\n\n// 0x0700E358 - 0x0700E458\nstatic const Vtx bits_seg7_vertex_0700E358[] = {\n    {{{  1132,   1009,   -922}, 0, { -5320,   1468}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{  1132,   -255,   -922}, 0, {     0,    990}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{  1183,   -255,   -973}, 0, {   202,    932}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{  1183,   1009,   -973}, 0, { -5086,   1410}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{  1132,   1009,  -1025}, 0, { -5320,   1468}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{  1132,   -255,  -1025}, 0, {     0,    990}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{  1080,   -255,   -973}, 0, {  -264,   1046}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{  1080,   1009,   -973}, 0, { -5552,   1528}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{  1080,   1009,   -973}, 0, { -5552,   1528}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{  1080,   -255,   -973}, 0, {  -264,   1046}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{  1132,   -255,   -922}, 0, {     0,    990}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{  1132,   1009,   -922}, 0, { -5320,   1468}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{   210,    958,   -666}, 0, { -3300,   1806}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{   159,   1009,   -973}, 0, {  3566,   -726}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{   159,   1009,   -666}, 0, { -3628,   1888}, {0x66, 0x5b, 0xa3, 0xff}}},\n    {{{   210,    958,   -973}, 0, {  3892,   -808}, {0x66, 0x5b, 0xa3, 0xff}}},\n};\n\n// 0x0700E458 - 0x0700E548\nstatic const Vtx bits_seg7_vertex_0700E458[] = {\n    {{{  -434,   -460,  -1279}, 0, {   -94,   4118}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -434,   -460,  -1228}, 0, {     0,   4054}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   333,    -50,  -1279}, 0, {   862,   5076}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   384,   -153,  -1893}, 0, {   160,   5906}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -434,   -562,  -1893}, 0, {  -860,   4884}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -485,   -562,  -1279}, 0, {  -158,   4054}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   384,   -153,  -1279}, 0, {   926,   5140}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{ -1202,   -869,   -767}, 0, {  -414,   2522}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -485,   -562,  -1228}, 0, {   -94,   3990}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{ -1202,   -562,  -1535}, 0, { -1372,   3480}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -485,   -869,   -409}, 0, {   926,   2968}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{ -1253,   -460,  -1535}, 0, { -1436,   3416}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{ -1253,   -767,   -818}, 0, {  -542,   2522}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{ -1202,   -767,   -818}, 0, {  -478,   2584}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{ -1202,   -460,  -1535}, 0, { -1372,   3480}, {0xb9, 0xb9, 0xb9, 0xff}}},\n};\n\n// 0x0700E548 - 0x0700E628\nstatic const Vtx bits_seg7_vertex_0700E548[] = {\n    {{{  -434,   -767,   -409}, 0, {   990,   3032}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -434,   -460,  -1228}, 0, {     0,   4054}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -485,   -460,  -1228}, 0, {   -94,   3990}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   333,    -50,  -1228}, 0, {   926,   5012}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   333,    -50,  -1279}, 0, {   862,   5076}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   333,    -50,  -1893}, 0, {    96,   5842}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   333,    -50,  -1945}, 0, {    32,   5906}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -434,   -460,  -1893}, 0, {  -860,   4884}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -434,   -460,  -1945}, 0, {  -924,   4948}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -485,   -767,   -409}, 0, {   926,   2968}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{ -1663,   -767,      0}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1663,   -767,    -50}, 0, {   -94,   1052}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1663,   -869,    -50}, 0, {   -94,   1052}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1663,   -869,      0}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x0700E628 - 0x0700E718\nstatic const Vtx bits_seg7_vertex_0700E628[] = {\n    {{{ -1663,   -869,   -818}, 0, { -1052,   2010}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1663,   -767,   -767}, 0, {  -988,   1946}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1663,   -767,   -818}, 0, { -1052,   2010}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1663,   -869,   -767}, 0, {  -988,   1946}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -434,   -562,  -1228}, 0, {     0,   4054}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -434,   -460,  -1228}, 0, {     0,   4054}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -485,   -460,  -1228}, 0, {   -94,   3990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -485,   -562,  -1228}, 0, {   -94,   3990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1202,   -562,  -1535}, 0, { -1372,   3480}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1202,   -460,  -1535}, 0, { -1372,   3480}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1253,   -460,  -1535}, 0, { -1436,   3416}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1253,   -562,  -1535}, 0, { -1436,   3416}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1050,    -50,    197}, 0, {  3600,   4128}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   998,    -50,    146}, 0, {  3472,   4128}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   384,    -50,    146}, 0, {  2704,   3362}, {0xc8, 0xc8, 0xc8, 0xff}}},\n};\n\n// 0x0700E718 - 0x0700E808\nstatic const Vtx bits_seg7_vertex_0700E718[] = {\n    {{{   998,   -153,  -1893}, 0, {   926,   6672}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   384,   -153,  -1893}, 0, {   160,   5906}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   998,   -153,    146}, 0, {  3472,   4128}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   384,   -153,    146}, 0, {  2704,   3362}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   998,   -153,   -211}, 0, {  3026,   4574}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1050,   -153,   -825}, 0, {  2322,   5404}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   998,   -153,   -825}, 0, {  2260,   5340}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1050,   -153,   -211}, 0, {  3090,   4638}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1050,    -50,   -211}, 0, {  3090,   4638}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   998,    -50,   -211}, 0, {  3026,   4574}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1050,    -50,    197}, 0, {  3600,   4128}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   998,    -50,    146}, 0, {  3472,   4128}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -875,   -869,    -50}, 0, {   888,   2036}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -485,   -869,   -409}, 0, {   926,   2968}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1202,   -869,   -767}, 0, {  -414,   2522}, {0xc8, 0xc8, 0xc8, 0xff}}},\n};\n\n// 0x0700E808 - 0x0700E908\nstatic const Vtx bits_seg7_vertex_0700E808[] = {\n    {{{  1050,    -50,    197}, 0, {  3600,   4128}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   384,    -50,    146}, 0, {  2704,   3362}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   333,    -50,    197}, 0, {  2704,   3234}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   384,    -50,  -1279}, 0, {   926,   5140}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   333,    -50,  -1279}, 0, {   862,   5076}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -485,   -562,  -1228}, 0, {   -94,   3990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -434,   -562,  -1893}, 0, {  -860,   4884}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1202,   -562,  -1535}, 0, { -1372,   3480}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -793,   -562,  -1893}, 0, { -1308,   4438}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1663,   -869,    -50}, 0, {   -94,   1052}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -875,   -869,    -50}, 0, {   888,   2036}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1202,   -869,   -767}, 0, {  -414,   2522}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1663,   -767,   -818}, 0, { -1052,   2010}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1663,   -767,   -767}, 0, {  -988,   1946}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1253,   -767,   -818}, 0, {  -542,   2522}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1663,   -869,   -767}, 0, {  -988,   1946}, {0xc8, 0xc8, 0xc8, 0xff}}},\n};\n\n// 0x0700E908 - 0x0700EA08\nstatic const Vtx bits_seg7_vertex_0700E908[] = {\n    {{{ -1202,   -767,   -818}, 0, {  -478,   2584}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1253,   -767,   -818}, 0, {  -542,   2520}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1202,   -767,   -767}, 0, {  -414,   2520}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1253,   -767,   -767}, 0, {  -478,   2458}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -434,   -460,  -1279}, 0, {   -94,   4118}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -485,   -460,  -1279}, 0, {  -158,   4054}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -485,   -460,  -1228}, 0, {   -94,   3990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -434,   -460,  -1228}, 0, {     0,   4054}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1663,   -767,   -767}, 0, {  -988,   1946}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1253,   -767,   -818}, 0, {  -542,   2522}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   998,    -50,  -1893}, 0, {   926,   6672}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   998,    -50,   -825}, 0, {  2260,   5340}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1050,    -50,   -825}, 0, {  2322,   5404}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   333,    -50,  -1945}, 0, {    32,   5906}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   333,    -50,  -1893}, 0, {    96,   5842}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1050,    -50,  -1945}, 0, {   926,   6800}, {0xc8, 0xc8, 0xc8, 0xff}}},\n};\n\n// 0x0700EA08 - 0x0700EB08\nstatic const Vtx bits_seg7_vertex_0700EA08[] = {\n    {{{  -844,   -460,  -1944}, 0, { -1434,   4436}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -793,   -460,  -1893}, 0, { -1308,   4438}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -434,   -460,  -1893}, 0, {  -860,   4884}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -434,   -460,  -1945}, 0, {  -924,   4948}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1253,   -460,  -1535}, 0, { -1436,   3416}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1202,   -460,  -1535}, 0, { -1372,   3480}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -844,   -460,  -1945}, 0, { -1436,   4438}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -844,   -767,      0}, 0, {   990,   2010}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -434,   -767,   -409}, 0, {   990,   3032}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -485,   -767,   -409}, 0, {   926,   2968}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -875,   -767,    -50}, 0, {   888,   2036}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1663,   -767,    -50}, 0, {   -94,   1052}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1663,   -767,      0}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   998,   -153,   -825}, 0, {    24,   3104}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   998,    -50,  -1893}, 0, { -1180,   4566}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   998,   -153,  -1893}, 0, { -1308,   4438}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x0700EB08 - 0x0700EBF8\nstatic const Vtx bits_seg7_vertex_0700EB08[] = {\n    {{{   384,   -153,  -1279}, 0, { -2394,    160}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   384,    -50,    146}, 0, {  -742,   2064}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   384,   -153,    146}, 0, {  -614,   1936}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   384,    -50,  -1279}, 0, { -2522,    288}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   384,    -50,    146}, 0, {  3418,   2648}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   998,   -153,    146}, 0, {  4056,   3544}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   384,   -153,    146}, 0, {  3290,   2776}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   998,    -50,    146}, 0, {  4184,   3416}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   998,   -153,    146}, 0, {  1236,   1892}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   998,    -50,    146}, 0, {  1364,   2020}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   998,    -50,   -211}, 0, {   918,   2466}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   998,   -153,   -211}, 0, {   790,   2338}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1202,   -869,   -818}, 0, {  -924,   -160}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1202,   -562,  -1535}, 0, { -2202,   -670}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1202,   -460,  -1535}, 0, { -2330,   -544}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x0700EBF8 - 0x0700ECD8\nstatic const Vtx bits_seg7_vertex_0700EBF8[] = {\n    {{{   998,   -153,   -825}, 0, {    24,   3104}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   998,    -50,   -825}, 0, {   152,   3232}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   998,    -50,  -1893}, 0, { -1180,   4566}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -485,   -562,  -1228}, 0, { -1818,   -288}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -485,   -460,  -1279}, 0, { -2010,   -224}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -485,   -562,  -1279}, 0, { -1882,   -352}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -485,   -460,  -1228}, 0, { -1946,   -160}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1202,   -869,   -818}, 0, {  -478,   2584}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1202,   -767,   -818}, 0, {  -478,   2584}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1202,   -869,   -767}, 0, {  -414,   2520}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1202,   -767,   -767}, 0, {  -414,   2520}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1202,   -767,   -818}, 0, { -1052,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1202,   -869,   -818}, 0, {  -924,   -160}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1202,   -460,  -1535}, 0, { -2330,   -544}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x0700ECD8 - 0x0700EDC8\nstatic const Vtx bits_seg7_vertex_0700ECD8[] = {\n    {{{   333,   -255,  -1228}, 0, {  -604,   3480}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   333,    -50,    197}, 0, {  1428,   1956}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   333,    -50,  -1228}, 0, {  -350,   3734}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -485,   -767,   -409}, 0, {  -222,   1818}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -485,   -460,  -1228}, 0, {  -860,   3224}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -485,   -562,  -1228}, 0, {  -988,   3096}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -485,   -869,   -409}, 0, {  -350,   1690}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -434,  -1023,   -409}, 0, {  -542,   1500}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -434,   -716,  -1228}, 0, { -1180,   2904}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -434,   -767,   -409}, 0, {  -222,   1818}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -434,   -460,  -1228}, 0, {  -860,   3224}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1253,   -767,   -818}, 0, {  -732,   2330}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1253,   -460,  -1535}, 0, { -1244,   3606}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1253,   -716,  -1535}, 0, { -1562,   3288}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1232,  -1023,   -818}, 0, { -1052,   2010}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x0700EDC8 - 0x0700EEC8\nstatic const Vtx bits_seg7_vertex_0700EDC8[] = {\n    {{{  1050,   -255,   -211}, 0, {  -932,   1362}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1050,    -50,    197}, 0, {  -678,   2128}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1050,   -255,    197}, 0, {  -424,   1872}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   333,   -255,  -1228}, 0, {  -604,   3480}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   333,   -255,    197}, 0, {  1172,   1700}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   333,    -50,    197}, 0, {  1428,   1956}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1050,   -255,  -1945}, 0, { -3096,   -798}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1050,    -50,  -1945}, 0, { -3352,   -542}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1050,    -50,   -825}, 0, { -1954,    854}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1050,   -255,   -825}, 0, { -1700,    598}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1050,   -153,   -825}, 0, { -1826,    726}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1050,   -153,   -211}, 0, { -1060,   1490}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1050,    -50,   -211}, 0, { -1188,   1618}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   333,   -255,  -1945}, 0, {    32,   5906}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1050,   -255,  -1945}, 0, {   926,   6800}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1050,   -255,    197}, 0, {  3600,   4128}, {0x44, 0x44, 0x44, 0xff}}},\n};\n\n// 0x0700EEC8 - 0x0700EFC8\nstatic const Vtx bits_seg7_vertex_0700EEC8[] = {\n    {{{ -1253,   -716,  -1535}, 0, { -1436,   3416}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -434,   -665,  -1945}, 0, {  -924,   4948}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -434,   -716,  -1228}, 0, {     0,   4054}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -844,   -665,  -1945}, 0, { -1436,   4438}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -844,  -1023,      0}, 0, {   990,   2010}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1663,  -1023,      0}, 0, {     0,    990}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -434,  -1023,   -409}, 0, {   990,   3032}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1663,  -1023,   -818}, 0, { -1052,   2010}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1232,  -1023,   -818}, 0, {  -514,   2548}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   333,   -255,  -1945}, 0, {    32,   5906}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1050,   -255,    197}, 0, {  3600,   4128}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   333,   -255,    197}, 0, {  2704,   3234}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1253,   -716,  -1535}, 0, { -1436,   3416}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{  -434,   -716,  -1228}, 0, {     0,   4054}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{  -434,  -1023,   -409}, 0, {   990,   3032}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{ -1232,  -1023,   -818}, 0, {  -514,   2548}, {0x50, 0x50, 0x50, 0xff}}},\n};\n\n// 0x0700EFC8 - 0x0700F0B8\nstatic const Vtx bits_seg7_vertex_0700EFC8[] = {\n    {{{  -434,   -665,  -1945}, 0, {  -924,   4948}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{   333,   -255,  -1945}, 0, {    32,   5906}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{  -434,   -716,  -1228}, 0, {     0,   4054}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{   333,   -255,  -1228}, 0, {   926,   5012}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{ -1253,   -460,  -1535}, 0, {   160,   2202}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -844,   -460,  -1945}, 0, {  -350,   2712}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -844,   -665,  -1945}, 0, {  -604,   2458}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{ -1202,   -460,  -1534}, 0, { -1348,   3058}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -793,   -562,  -1893}, 0, { -2154,   3610}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -793,   -460,  -1893}, 0, { -2028,   3738}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{ -1202,   -562,  -1535}, 0, { -1476,   2932}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -875,   -767,    -50}, 0, {  -808,   1774}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -485,   -767,   -409}, 0, { -1468,   2434}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -485,   -869,   -409}, 0, { -1596,   2306}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -875,   -869,    -50}, 0, {  -936,   1646}, {0x73, 0x73, 0x73, 0xff}}},\n};\n\n// 0x0700F0B8 - 0x0700F198\nstatic const Vtx bits_seg7_vertex_0700F0B8[] = {\n    {{{  -434,  -1023,   -409}, 0, { -1564,   2520}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -434,   -767,   -409}, 0, { -1244,   2840}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -844,  -1023,      0}, 0, { -1052,   2010}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -844,   -767,      0}, 0, {  -732,   2330}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{ -1253,   -460,  -1535}, 0, {   160,   2202}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -844,   -665,  -1945}, 0, {  -604,   2458}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{ -1253,   -716,  -1535}, 0, {  -158,   1882}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   333,    -50,  -1279}, 0, {  3354,   2584}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   333,   -204,  -1279}, 0, {  3162,   2776}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -434,   -562,  -1279}, 0, {  1756,   2266}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1050,   -153,   -211}, 0, { -2330,   5460}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   998,   -153,   -211}, 0, { -2266,   5396}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   998,    -50,   -211}, 0, { -2138,   5524}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1050,    -50,   -211}, 0, { -2202,   5588}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x0700F198 - 0x0700F298\nstatic const Vtx bits_seg7_vertex_0700F198[] = {\n    {{{  1050,    -50,   -825}, 0, { -2202,   5588}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   998,    -50,   -825}, 0, { -2138,   5524}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   998,   -153,   -825}, 0, { -2266,   5396}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1050,   -153,   -825}, 0, { -2330,   5460}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   333,    -50,  -1279}, 0, {  3354,   2584}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   384,    -50,  -1279}, 0, {  3418,   2648}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   384,   -204,  -1279}, 0, {  3226,   2840}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   333,   -204,  -1279}, 0, {  3162,   2776}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -434,   -562,  -1279}, 0, {  1756,   2266}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -485,   -562,  -1279}, 0, {  1692,   2202}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -485,   -460,  -1279}, 0, {  1820,   2074}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   333,    -50,  -1893}, 0, { -1308,   4692}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   384,   -153,  -1893}, 0, { -1500,   4628}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   998,   -153,  -1893}, 0, { -2266,   5396}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   998,    -50,  -1893}, 0, { -2138,   5524}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -434,   -460,  -1893}, 0, {  -860,   3224}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x0700F298 - 0x0700F398\nstatic const Vtx bits_seg7_vertex_0700F298[] = {\n    {{{  -434,   -460,  -1893}, 0, {  -860,   3224}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -434,   -562,  -1893}, 0, {  -988,   3096}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   384,   -153,  -1893}, 0, { -1500,   4628}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -793,   -562,  -1893}, 0, {  -540,   2648}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -793,   -460,  -1893}, 0, {  -414,   2776}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   333,    -50,  -1279}, 0, {  3354,   2584}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -434,   -562,  -1279}, 0, {  1756,   2266}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -434,   -460,  -1279}, 0, {  1884,   2138}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -485,   -460,  -1279}, 0, {  1820,   2074}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -875,   -767,    -50}, 0, {  -694,   2292}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -875,   -869,    -50}, 0, {  -822,   2164}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1663,   -869,    -50}, 0, {   160,   1180}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1663,   -767,    -50}, 0, {   288,   1308}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1202,   -869,   -767}, 0, {  -414,   1754}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1202,   -767,   -767}, 0, {  -286,   1882}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1663,   -767,   -767}, 0, {   288,   1308}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x0700F398 - 0x0700F478\nstatic const Vtx bits_seg7_vertex_0700F398[] = {\n    {{{ -1663,   -869,   -767}, 0, {   160,   1180}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1202,   -869,   -767}, 0, {  -414,   1754}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1663,   -767,   -767}, 0, {   288,   1308}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -844,   -665,  -1945}, 0, {  -604,   2458}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -434,   -460,  -1945}, 0, {  -860,   3224}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -434,   -665,  -1945}, 0, { -1116,   2968}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -844,   -460,  -1945}, 0, {  -350,   2712}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   333,    -50,  -1945}, 0, { -1308,   4692}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   333,   -255,  -1945}, 0, { -1562,   4438}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1232,  -1023,   -818}, 0, {  -568,   1526}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1663,  -1023,   -818}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1253,   -767,   -818}, 0, {  -222,   1818}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1050,    -50,  -1945}, 0, { -2202,   5586}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1050,   -255,  -1945}, 0, { -2458,   5332}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x0700F478 - 0x0700F568\nstatic const Vtx bits_seg7_vertex_0700F478[] = {\n    {{{  -434,   -716,  -1228}, 0, { -1180,   2904}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   333,   -255,  -1228}, 0, { -1562,   4438}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   333,    -50,  -1228}, 0, { -1308,   4692}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -434,   -460,  -1228}, 0, {  -860,   3224}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   333,   -255,    197}, 0, { -1562,   4438}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1050,    -50,    197}, 0, { -2202,   5588}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   333,    -50,    197}, 0, { -1308,   4692}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1050,   -255,    197}, 0, { -2458,   5332}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -844,   -767,      0}, 0, {  -732,   2330}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1663,   -767,      0}, 0, {   288,   1308}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -844,  -1023,      0}, 0, { -1052,   2010}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1663,  -1023,   -818}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1663,   -767,   -818}, 0, {   288,   1308}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1253,   -767,   -818}, 0, {  -222,   1818}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1663,  -1023,      0}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x0700F568 - 0x0700F790\nstatic const Gfx bits_seg7_dl_0700F568[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_0700DD98, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 10,  7, 0x0),\n    gsSP2Triangles(11, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700DE98, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 3,  4,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  5, 10,  6, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 13, 14, 0x0),\n    gsSP1Triangle(14, 13, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700DF98, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 8, 11, 12, 0x0,  9,  8, 12, 0x0),\n    gsSP1Triangle( 9, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700E078, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP2Triangles(14, 13, 10, 0x0, 14, 15, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700E178, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700E268, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700E358, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700F790 - 0x0700FC70\nstatic const Gfx bits_seg7_dl_0700F790[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_0700E458, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 11, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700E548, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  6,  8,  7, 0x0),\n    gsSP2Triangles( 9,  0,  2, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(10, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700E628, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  8, 10, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700E718, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700E808, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 3,  4,  2, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 15,  9, 11, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700E908, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  3,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(13, 14, 10, 0x0, 13, 10, 15, 0x0),\n    gsSP1Triangle(15, 10, 12, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700EA08, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  1, 0x0,  4,  1,  6, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0, 10, 11,  7, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0, 11, 12,  7, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700EB08, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700EBF8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700ECD8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700EDC8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 11,  0, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700EEC8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 7,  8,  6, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 15, 12, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700EFC8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 11, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700F0B8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700F198, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0, 15, 12, 11, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700F298, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 3,  1,  0, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12,  9, 11, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700F398, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 4,  8,  5, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 7, 12, 13, 0x0,  7, 13,  8, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700F478, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 9, 14, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700FC70 - 0x0700FCE8\nconst Gfx bits_seg7_dl_0700FC70[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bits_seg7_dl_0700F568),\n    gsSPDisplayList(bits_seg7_dl_0700F790),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/19/geo.inc.c",
    "content": "// 0x0E0005C8\nconst GeoLayout bits_geo_0005C8[] = {\n    GEO_CULLING_RADIUS(3300),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bits_seg7_dl_070128F0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/19/model.inc.c",
    "content": "// 0x0700FCE8 - 0x0700FDE8\nstatic const Vtx bits_seg7_vertex_0700FCE8[] = {\n    {{{  -364,    179,  -2914}, 0, {  3146,   4016}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{  -896,    179,  -1602}, 0, {    78,   2718}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{  -409,    179,  -1049}, 0, {     0,    990}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{   410,    179,  -1049}, 0, {  1330,   -372}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{   947,    179,  -1602}, 0, {  3144,   -346}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{   947,    179,  -2347}, 0, {  4384,    894}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{   403,    179,  -2914}, 0, {  4424,   2738}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{  -896,    179,  -2347}, 0, {  1318,   3958}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{  -306,   -639,   1715}, 0, {  3716,   -372}, {0x3a, 0x4c, 0x39, 0xff}}},\n    {{{   307,   -639,   2739}, 0, {   990,    308}, {0x3a, 0x4c, 0x39, 0xff}}},\n    {{{  -306,   -639,   2739}, 0, {  2012,   1328}, {0x3a, 0x4c, 0x39, 0xff}}},\n    {{{   307,   -639,   1715}, 0, {  2694,  -1394}, {0x3a, 0x4c, 0x39, 0xff}}},\n    {{{   410,    179,  -1049}, 0, {  1330,   2350}, {0x47, 0x6e, 0x5f, 0xff}}},\n    {{{   307,    -25,  -1049}, 0, {   820,   2520}, {0x47, 0x6e, 0x5f, 0xff}}},\n    {{{   410,    -25,  -1049}, 0, {   990,   2692}, {0x47, 0x6e, 0x5f, 0xff}}},\n    {{{   307,    179,  -1049}, 0, {  1160,   2180}, {0x47, 0x6e, 0x5f, 0xff}}},\n};\n\n// 0x0700FDE8 - 0x0700FED8\nstatic const Vtx bits_seg7_vertex_0700FDE8[] = {\n    {{{  -409,    -25,  -1049}, 0, {  -370,   1328}, {0x47, 0x6e, 0x5f, 0xff}}},\n    {{{  -306,    179,  -1049}, 0, {   138,   1158}, {0x47, 0x6e, 0x5f, 0xff}}},\n    {{{  -409,    179,  -1049}, 0, {     0,    990}, {0x47, 0x6e, 0x5f, 0xff}}},\n    {{{  -306,    -25,  -1049}, 0, {  -200,   1498}, {0x47, 0x6e, 0x5f, 0xff}}},\n    {{{   403,    -25,  -2914}, 0, {   980,   2680}, {0x47, 0x6e, 0x5f, 0xff}}},\n    {{{  -364,    179,  -2914}, 0, {    42,   1062}, {0x47, 0x6e, 0x5f, 0xff}}},\n    {{{   403,    179,  -2914}, 0, {  1320,   2340}, {0x47, 0x6e, 0x5f, 0xff}}},\n    {{{  -364,    -25,  -2914}, 0, {  -296,   1404}, {0x47, 0x6e, 0x5f, 0xff}}},\n    {{{   307,   -434,   2022}, 0, {  2182,   -884}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{  -306,   -434,   2739}, 0, {  2012,   1328}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{   307,   -434,   2739}, 0, {   990,    308}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{  -306,   -434,   2022}, 0, {  3204,    138}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{   947,    179,  -1602}, 0, {  2200,   3220}, {0x52, 0x86, 0x6a, 0xff}}},\n    {{{   410,    179,  -1049}, 0, {   916,   1936}, {0x52, 0x86, 0x6a, 0xff}}},\n    {{{   410,    -25,  -1049}, 0, {   576,   2278}, {0x52, 0x86, 0x6a, 0xff}}},\n};\n\n// 0x0700FED8 - 0x0700FFC8\nstatic const Vtx bits_seg7_vertex_0700FED8[] = {\n    {{{   947,    -25,  -2347}, 0, {  -500,    778}, {0x52, 0x86, 0x6a, 0xff}}},\n    {{{   403,    179,  -2914}, 0, { -1478,   2414}, {0x52, 0x86, 0x6a, 0xff}}},\n    {{{   947,    179,  -2347}, 0, {  -162,   1118}, {0x52, 0x86, 0x6a, 0xff}}},\n    {{{   403,    -25,  -2914}, 0, { -1816,   2070}, {0x52, 0x86, 0x6a, 0xff}}},\n    {{{  -896,    179,  -2347}, 0, {   954,   1974}, {0x52, 0x86, 0x6a, 0xff}}},\n    {{{  -364,    179,  -2914}, 0, {  2248,   3268}, {0x52, 0x86, 0x6a, 0xff}}},\n    {{{  -896,    -25,  -2347}, 0, {   614,   2314}, {0x52, 0x86, 0x6a, 0xff}}},\n    {{{  -364,    -25,  -2914}, 0, {  1906,   3608}, {0x52, 0x86, 0x6a, 0xff}}},\n    {{{  -896,    -25,  -1602}, 0, { -1604,   1862}, {0x52, 0x86, 0x6a, 0xff}}},\n    {{{  -409,    -25,  -1049}, 0, {  -368,    646}, {0x52, 0x86, 0x6a, 0xff}}},\n    {{{  -409,    179,  -1049}, 0, {     0,    990}, {0x52, 0x86, 0x6a, 0xff}}},\n    {{{  -896,    179,  -1602}, 0, { -1266,   2206}, {0x52, 0x86, 0x6a, 0xff}}},\n    {{{   947,    179,  -1602}, 0, {  2200,   3220}, {0x52, 0x86, 0x6a, 0xff}}},\n    {{{   410,    -25,  -1049}, 0, {   576,   2278}, {0x52, 0x86, 0x6a, 0xff}}},\n    {{{   947,    -25,  -1602}, 0, {  1860,   3560}, {0x52, 0x86, 0x6a, 0xff}}},\n};\n\n// 0x0700FFC8 - 0x070100C8\nstatic const Vtx bits_seg7_vertex_0700FFC8[] = {\n    {{{   947,    -25,  -2347}, 0, { -2530,   2806}, {0x64, 0x97, 0x75, 0xff}}},\n    {{{   947,    179,  -2347}, 0, { -2190,   3148}, {0x64, 0x97, 0x75, 0xff}}},\n    {{{   947,    179,  -1602}, 0, {  -950,   1908}, {0x64, 0x97, 0x75, 0xff}}},\n    {{{   947,    -25,  -1602}, 0, { -1292,   1568}, {0x64, 0x97, 0x75, 0xff}}},\n    {{{  -896,    -25,  -1602}, 0, { -1292,   1568}, {0x64, 0x97, 0x75, 0xff}}},\n    {{{  -896,    179,  -1602}, 0, {  -950,   1908}, {0x64, 0x97, 0x75, 0xff}}},\n    {{{  -896,    179,  -2347}, 0, { -2190,   3148}, {0x64, 0x97, 0x75, 0xff}}},\n    {{{  -896,    -25,  -2347}, 0, { -2530,   2806}, {0x64, 0x97, 0x75, 0xff}}},\n    {{{   205,   -127,   -434}, 0, {  1672,    650}, {0x3f, 0xbf, 0xbf, 0xff}}},\n    {{{  -204,   -127,   -434}, 0, {   308,    650}, {0x3f, 0xbf, 0xbf, 0xff}}},\n    {{{  -204,   -229,   -434}, 0, {   308,    990}, {0x3f, 0xbf, 0xbf, 0xff}}},\n    {{{   205,   -229,   -434}, 0, {  1672,    990}, {0x3f, 0xbf, 0xbf, 0xff}}},\n    {{{   205,   -127,   -639}, 0, {  1330,    308}, {0x8c, 0xcc, 0xd8, 0xff}}},\n    {{{  -204,   -127,   -434}, 0, {     0,    990}, {0x8c, 0xcc, 0xd8, 0xff}}},\n    {{{   205,   -127,   -434}, 0, {  1330,    990}, {0x8c, 0xcc, 0xd8, 0xff}}},\n    {{{  -204,   -127,   -639}, 0, {     0,    308}, {0x8c, 0xcc, 0xd8, 0xff}}},\n};\n\n// 0x070100C8 - 0x070101C8\nstatic const Vtx bits_seg7_vertex_070100C8[] = {\n    {{{   205,    -25,   -639}, 0, {  1672,    308}, {0x3f, 0xaa, 0xbf, 0xff}}},\n    {{{  -204,    -25,   -639}, 0, {   308,    308}, {0x3f, 0xaa, 0xbf, 0xff}}},\n    {{{  -204,   -127,   -639}, 0, {   308,    650}, {0x3f, 0xaa, 0xbf, 0xff}}},\n    {{{   205,   -127,   -639}, 0, {  1672,    650}, {0x3f, 0xaa, 0xbf, 0xff}}},\n    {{{   205,    -25,   -844}, 0, {  1330,   -372}, {0x92, 0xbc, 0xdf, 0xff}}},\n    {{{  -204,    -25,   -639}, 0, {     0,    308}, {0x92, 0xbc, 0xdf, 0xff}}},\n    {{{   205,    -25,   -639}, 0, {  1330,    308}, {0x92, 0xbc, 0xdf, 0xff}}},\n    {{{  -204,    -25,   -844}, 0, {     0,   -372}, {0x92, 0xbc, 0xdf, 0xff}}},\n    {{{   205,     77,   -844}, 0, {  1672,      0}, {0x3f, 0x94, 0xbf, 0xff}}},\n    {{{  -204,    -25,   -844}, 0, {   308,    308}, {0x3f, 0x94, 0xbf, 0xff}}},\n    {{{   205,    -25,   -844}, 0, {  1672,    308}, {0x3f, 0x94, 0xbf, 0xff}}},\n    {{{  -204,     77,   -844}, 0, {   308,      0}, {0x3f, 0x94, 0xbf, 0xff}}},\n    {{{   205,     77,  -1049}, 0, {  1330,  -1054}, {0x8c, 0xb2, 0xd8, 0xff}}},\n    {{{  -204,     77,  -1049}, 0, {     0,  -1054}, {0x8c, 0xb2, 0xd8, 0xff}}},\n    {{{  -204,     77,   -844}, 0, {     0,   -372}, {0x8c, 0xb2, 0xd8, 0xff}}},\n    {{{   205,     77,   -844}, 0, {  1330,   -372}, {0x8c, 0xb2, 0xd8, 0xff}}},\n};\n\n// 0x070101C8 - 0x07010208\nstatic const Vtx bits_seg7_vertex_070101C8[] = {\n    {{{   205,    179,  -1049}, 0, {  1672,   -372}, {0x3f, 0x7f, 0xbf, 0xff}}},\n    {{{  -204,    179,  -1049}, 0, {   308,   -372}, {0x3f, 0x7f, 0xbf, 0xff}}},\n    {{{  -204,     77,  -1049}, 0, {   308,      0}, {0x3f, 0x7f, 0xbf, 0xff}}},\n    {{{   205,     77,  -1049}, 0, {  1672,      0}, {0x3f, 0x7f, 0xbf, 0xff}}},\n};\n\n// 0x07010208 - 0x07010308\nstatic const Vtx bits_seg7_vertex_07010208[] = {\n    {{{   947,    -25,  -1602}, 0, {  1736,   1212}, {0x81, 0x38, 0x8f, 0xff}}},\n    {{{   532,   -537,  -2194}, 0, {   766,   1360}, {0x81, 0x38, 0x8f, 0xff}}},\n    {{{   947,    -25,  -2347}, 0, {   990,   1958}, {0x81, 0x38, 0x8f, 0xff}}},\n    {{{   532,   -537,  -1755}, 0, {  1140,    990}, {0x81, 0x38, 0x8f, 0xff}}},\n    {{{  -896,    -25,  -2347}, 0, {  -604,    362}, {0x81, 0x38, 0x8f, 0xff}}},\n    {{{  -527,   -537,  -1755}, 0, {   340,    192}, {0x81, 0x38, 0x8f, 0xff}}},\n    {{{  -896,    -25,  -1602}, 0, {   138,   -384}, {0x81, 0x38, 0x8f, 0xff}}},\n    {{{  -527,   -537,  -2194}, 0, {     0,    564}, {0x81, 0x38, 0x8f, 0xff}}},\n    {{{   307,    179,  -1049}, 0, {  2352,  -5482}, {0xdc, 0xdc, 0xdc, 0xff}}},\n    {{{   205,    179,  -1049}, 0, {  2524,  -5312}, {0xdc, 0xdc, 0xdc, 0xff}}},\n    {{{   205,    -25,   -434}, 0, {  1502,  -4290}, {0xdc, 0xdc, 0xdc, 0xff}}},\n    {{{   307,    -25,   -434}, 0, {  1330,  -4460}, {0xdc, 0xdc, 0xdc, 0xff}}},\n    {{{  -306,    -25,   -434}, 0, {  2352,  -3438}, {0xdc, 0xdc, 0xdc, 0xff}}},\n    {{{  -204,    -25,   -434}, 0, {  2182,  -3610}, {0xdc, 0xdc, 0xdc, 0xff}}},\n    {{{  -204,    179,  -1049}, 0, {  3204,  -4632}, {0xdc, 0xdc, 0xdc, 0xff}}},\n    {{{  -306,    179,  -1049}, 0, {  3374,  -4460}, {0xdc, 0xdc, 0xdc, 0xff}}},\n};\n\n// 0x07010308 - 0x070103F8\nstatic const Vtx bits_seg7_vertex_07010308[] = {\n#ifdef VERSION_JP\n    {{{  -921,   -229,   -434}, 0, {   308,    650}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -306,   -383,   -434}, 0, {  1076,   1924}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -921,   -383,   -434}, 0, {    54,    904}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -306,   -229,   -434}, 0, {  1330,   1670}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   922,   -383,   -434}, 0, {  3120,   3968}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   307,   -383,   -434}, 0, {  2098,   2946}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   307,   -229,   -434}, 0, {  2352,   2692}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   922,   -229,   -434}, 0, {  3374,   3714}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   922,   -383,   -741}, 0, {  3546,  -1564}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   296,   -383,   -741}, 0, {  2504,   -524}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   296,   -383,   -434}, 0, {  1992,  -1034}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   205,    -25,   -434}, 0, { -1222,    478}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   205,   -229,   -434}, 0, {  -882,    138}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   205,   -229,   -332}, 0, {  -712,    308}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   205,    -25,   -332}, 0, { -1052,    650}, {0x96, 0x96, 0x96, 0xff}}},\n#else\n    {{{  -921,   -229,   -434}, 0, {   308,    650}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -306,   -383,   -434}, 0, {  1076,   1924}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -921,   -383,   -434}, 0, {    54,    904}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -306,   -240,   -434}, 0, {  1330,   1670}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   922,   -383,   -434}, 0, {  3120,   3968}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   307,   -383,   -434}, 0, {  2098,   2946}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   307,   -240,   -434}, 0, {  2352,   2692}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   922,   -229,   -434}, 0, {  3374,   3714}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   922,   -383,   -741}, 0, {  3546,  -1564}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   296,   -383,   -741}, 0, {  2504,   -524}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   296,   -383,   -434}, 0, {  1992,  -1034}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   205,    -25,   -434}, 0, { -1222,    478}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   205,   -229,   -434}, 0, {  -882,    138}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   205,   -229,   -332}, 0, {  -712,    308}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   205,    -25,   -332}, 0, { -1052,    650}, {0x96, 0x96, 0x96, 0xff}}},\n#endif\n};\n\n// 0x070103F8 - 0x070104D8\nstatic const Vtx bits_seg7_vertex_070103F8[] = {\n    {{{  -204,    -25,   -332}, 0, {  3544,   3884}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -204,   -229,   -332}, 0, {  3204,   4224}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -204,   -229,   -434}, 0, {  3374,   4394}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -204,    -25,   -434}, 0, {  3716,   4054}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -313,   -383,   -741}, 0, {  1490,    490}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -921,   -383,   -741}, 0, {   480,   1500}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -921,   -383,   -434}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -313,   -383,   -434}, 0, {   978,    -20}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   922,   -383,   -741}, 0, {  3546,  -1564}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   296,   -383,   -434}, 0, {  1992,  -1034}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   922,   -383,   -434}, 0, {  3034,  -2076}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   722,    230,    379}, 0, { -1836,   3372}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   507,    230,    379}, 0, { -1392,   3816}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   722,    230,    594}, 0, { -1392,   2930}, {0xc8, 0xc8, 0xc8, 0xff}}},\n};\n\n// 0x070104D8 - 0x070105C8\nstatic const Vtx bits_seg7_vertex_070104D8[] = {\n    {{{  -721,    230,    594}, 0, { -1392,   2930}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -506,    230,    594}, 0, {  -950,   3372}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -506,    230,    379}, 0, { -1392,   3816}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -721,    230,    379}, 0, { -1836,   3372}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -414,    128,   1311}, 0, {   308,   2248}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -199,    128,   1311}, 0, {   752,   2692}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -199,    128,   1096}, 0, {   308,   3134}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -414,    128,   1096}, 0, {  -132,   2692}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   200,    128,   1311}, 0, {   308,   2248}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   415,    128,   1311}, 0, {   752,   2692}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   415,    128,   1096}, 0, {   308,   3134}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   200,    128,   1096}, 0, {  -132,   2692}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   507,    230,    379}, 0, { -1392,   3816}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   507,    230,    594}, 0, {  -950,   3372}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   722,    230,    594}, 0, { -1392,   2930}, {0xc8, 0xc8, 0xc8, 0xff}}},\n};\n\n// 0x070105C8 - 0x070106C8\nstatic const Vtx bits_seg7_vertex_070105C8[] = {\n    {{{   205,   -229,   -434}, 0, {  5248,   2522}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -204,   -229,   -332}, 0, {  4396,   3032}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   205,   -229,   -332}, 0, {  5078,   2350}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -204,   -229,   -434}, 0, {  4568,   3202}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   922,   -229,   -332}, 0, {  6270,   1158}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -921,   -229,   1613}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -511,   -229,   2022}, 0, {     0,   -372}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   512,   -229,   2022}, 0, {  1672,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   922,   -229,   1613}, 0, {  3034,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -921,   -229,   -332}, 0, {  3204,   4224}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -204,    -25,   -434}, 0, {  3716,   4054}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -204,   -229,   -434}, 0, {  3374,   4394}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -204,    179,  -1049}, 0, {  5078,   4736}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   922,   -434,   -434}, 0, { -3096,  -2758}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   922,   -229,   1613}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   922,   -434,   1613}, 0, {   308,    650}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x070106C8 - 0x070107A8\nstatic const Vtx bits_seg7_vertex_070106C8[] = {\n#ifdef VERSION_JP\n    {{{   922,   -434,   -434}, 0, { -3096,  -2758}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   922,   -229,   -434}, 0, { -3436,  -2416}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   922,   -229,   1613}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -921,   -434,   1613}, 0, {   308,    650}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -921,   -229,   1613}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -921,   -229,   -434}, 0, { -3436,  -2416}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -921,   -434,   -434}, 0, { -3096,  -2758}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   307,   -229,   -434}, 0, {  -882,    138}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   307,    -25,  -1049}, 0, { -2244,   -544}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   307,    179,  -1049}, 0, { -2584,   -202}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   307,    -25,   -434}, 0, { -1222,    478}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -517,    179,  -1759}, 0, {  -252,   1788}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -517,    282,  -1759}, 0, {     0,   1532}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -517,    282,  -2190}, 0, {  1076,   2608}, {0x7d, 0x7d, 0x7d, 0xff}}},\n#else\n    {{{   922,   -434,   -434}, 0, { -3096,  -2758}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   922,   -229,   -434}, 0, { -3436,  -2416}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   922,   -229,   1613}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -921,   -434,   1613}, 0, {   308,    650}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -921,   -229,   1613}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -921,   -229,   -434}, 0, { -3436,  -2416}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -921,   -434,   -434}, 0, { -3096,  -2758}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   307,   -240,   -434}, 0, {  -882,    138}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   307,    -25,  -1049}, 0, { -2244,   -544}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   307,    179,  -1049}, 0, { -2584,   -202}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   307,    -25,   -434}, 0, { -1222,    478}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -517,    179,  -1759}, 0, {  -252,   1788}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -517,    282,  -1759}, 0, {     0,   1532}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -517,    282,  -2190}, 0, {  1076,   2608}, {0x7d, 0x7d, 0x7d, 0xff}}},\n#endif\n};\n\n// 0x070107A8 - 0x07010888\nstatic const Vtx bits_seg7_vertex_070107A8[] = {\n#ifdef VERSION_JP\n    {{{  -204,   -229,   -434}, 0, {  3374,   4394}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -204,     77,  -1049}, 0, {  4908,   4906}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -204,    179,  -1049}, 0, {  5078,   4736}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -306,   -229,   -434}, 0, {  -882,    138}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -306,    -25,   -434}, 0, { -1222,    478}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -306,    -25,  -1049}, 0, { -2244,   -544}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -306,    179,  -1049}, 0, { -2584,   -202}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   205,   -229,   -434}, 0, {  -882,    138}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   205,    -25,   -434}, 0, { -1222,    478}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   205,     77,  -1049}, 0, { -2414,   -372}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   205,    179,  -1049}, 0, { -2584,   -202}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -517,    179,  -1759}, 0, {  -252,   1788}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -517,    282,  -2190}, 0, {  1076,   2608}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -517,    179,  -2190}, 0, {   820,   2862}, {0x7d, 0x7d, 0x7d, 0xff}}},\n#else\n    {{{  -204,   -229,   -434}, 0, {  3374,   4394}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -204,     77,  -1049}, 0, {  4908,   4906}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -204,    179,  -1049}, 0, {  5078,   4736}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -306,   -240,   -434}, 0, {  -882,    138}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -306,    -25,   -434}, 0, { -1222,    478}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -306,    -25,  -1049}, 0, { -2244,   -544}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -306,    179,  -1049}, 0, { -2584,   -202}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   205,   -229,   -434}, 0, {  -882,    138}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   205,    -25,   -434}, 0, { -1222,    478}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   205,     77,  -1049}, 0, { -2414,   -372}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   205,    179,  -1049}, 0, { -2584,   -202}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -517,    179,  -1759}, 0, {  -252,   1788}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -517,    282,  -2190}, 0, {  1076,   2608}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -517,    179,  -2190}, 0, {   820,   2862}, {0x7d, 0x7d, 0x7d, 0xff}}},\n#endif\n};\n\n// 0x07010888 - 0x07010978\nstatic const Vtx bits_seg7_vertex_07010888[] = {\n#ifdef VERSION_JP\n    {{{  -921,   -229,   -332}, 0, {  -712,    308}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -921,    -25,   -434}, 0, { -1222,    478}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -921,   -229,   -434}, 0, {  -882,    138}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   522,    179,  -2190}, 0, {   820,   2862}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   524,    282,  -1757}, 0, {    -4,   1528}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   524,    179,  -1757}, 0, {  -258,   1782}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   522,    282,  -2190}, 0, {  1076,   2608}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -328,    282,  -1837}, 0, {   196,   1728}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -328,    384,  -2112}, 0, {  1136,   2156}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -328,    282,  -2112}, 0, {   880,   2412}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -328,    384,  -1837}, 0, {   452,   1472}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   333,    282,  -2112}, 0, {   880,   2412}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   333,    384,  -2112}, 0, {  1136,   2156}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   333,    384,  -1837}, 0, {  1136,   2156}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   333,    282,  -1837}, 0, {   880,   2412}, {0x7d, 0x7d, 0x7d, 0xff}}},\n#else\n    {{{  -921,   -229,   -332}, 0, {  -712,    308}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -921,    -25,   -434}, 0, { -1222,    478}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -921,   -229,   -434}, 0, {  -882,    138}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   522,    179,  -2190}, 0, {   820,   2862}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   524,    282,  -1757}, 0, {    -4,   1528}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   524,    179,  -1757}, 0, {  -258,   1782}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   522,    282,  -2190}, 0, {  1076,   2608}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -328,    282,  -1837}, 0, {   196,   1728}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -328,    384,  -2112}, 0, {  1136,   2156}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -328,    282,  -2112}, 0, {   880,   2412}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -328,    384,  -1837}, 0, {   452,   1472}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   333,    282,  -2112}, 0, {  -194,    826}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   333,    384,  -2112}, 0, {    60,    570}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   333,    384,  -1837}, 0, {  -624,   -114}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   333,    282,  -1837}, 0, {  -878,    142}, {0x7d, 0x7d, 0x7d, 0xff}}},\n#endif\n};\n\n// 0x07010978 - 0x07010A68\nstatic const Vtx bits_seg7_vertex_07010978[] = {\n    {{{  -721,    179,    594}, 0, { -2534,    190}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -721,    230,    594}, 0, { -2620,    274}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -721,    230,    379}, 0, { -3062,   -168}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -921,   -229,   -332}, 0, {  -712,    308}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -921,    -25,   -332}, 0, { -1052,    650}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -921,    -25,   -434}, 0, { -1222,    478}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   922,   -229,   -434}, 0, {  -882,    138}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   922,    -25,   -332}, 0, { -1052,    650}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   922,   -229,   -332}, 0, {  -712,    308}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   922,    -25,   -434}, 0, { -1222,    478}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -506,    179,    379}, 0, { -2976,   -254}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -506,    230,    594}, 0, { -2620,    274}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -506,    179,    594}, 0, { -2534,    190}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -506,    230,    379}, 0, { -3062,   -168}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -721,    179,    379}, 0, { -2976,   -254}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x07010A68 - 0x07010B58\nstatic const Vtx bits_seg7_vertex_07010A68[] = {\n    {{{   415,     77,   1096}, 0, { -1614,    768}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   415,    128,   1096}, 0, { -1700,    854}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   415,    128,   1311}, 0, { -1256,   1294}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -199,     77,   1096}, 0, { -1614,    768}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -199,    128,   1311}, 0, { -1256,   1294}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -199,     77,   1311}, 0, { -1172,   1210}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -199,    128,   1096}, 0, { -1700,    854}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -414,     77,   1311}, 0, { -1172,   1210}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -414,    128,   1096}, 0, { -1700,    854}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -414,     77,   1096}, 0, { -1614,    768}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -414,    128,   1311}, 0, { -1256,   1294}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   200,     77,   1311}, 0, { -1172,   1210}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   200,    128,   1311}, 0, { -1256,   1294}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   200,    128,   1096}, 0, { -1700,    854}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   200,     77,   1096}, 0, { -1614,    768}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x07010B58 - 0x07010C48\nstatic const Vtx bits_seg7_vertex_07010B58[] = {\n    {{{  -921,   -383,   -434}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -921,   -383,   -741}, 0, {   478,   1498}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -921,   -434,   -741}, 0, {   394,   1584}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   415,     77,   1096}, 0, { -1614,    768}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   415,    128,   1311}, 0, { -1256,   1294}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   415,     77,   1311}, 0, { -1172,   1210}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   722,    179,    379}, 0, { -2976,   -254}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   722,    230,    379}, 0, { -3062,   -168}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   722,    179,    594}, 0, { -2534,    190}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   722,    230,    594}, 0, { -2620,    274}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   507,    179,    594}, 0, { -2534,    190}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   507,    230,    594}, 0, { -2620,    274}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   507,    179,    379}, 0, { -2976,   -254}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   507,    230,    379}, 0, { -3062,   -168}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -921,   -434,   -434}, 0, {  -116,   1074}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x07010C48 - 0x07010D38\nstatic const Vtx bits_seg7_vertex_07010C48[] = {\n#ifdef VERSION_JP\n    {{{   922,   -434,   -434}, 0, {  -116,   1074}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   922,   -383,   -741}, 0, {   480,   1500}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   922,   -383,   -434}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   922,   -434,   -741}, 0, {   394,   1584}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   200,     77,   1096}, 0, {  -132,   2692}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   415,     77,   1311}, 0, {   752,   2692}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   200,     77,   1311}, 0, {   308,   2248}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   307,    -25,  -1049}, 0, {  2352,  -5482}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   307,   -229,   -434}, 0, {  1330,  -4460}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -306,   -229,   -434}, 0, {  2352,  -3438}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -306,    -25,  -1049}, 0, {  3374,  -4460}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -721,    179,    379}, 0, { -1836,   3372}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -506,    179,    594}, 0, {  -950,   3372}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -721,    179,    594}, 0, { -1392,   2930}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -506,    179,    379}, 0, { -1392,   3816}, {0x44, 0x44, 0x44, 0xff}}},\n#else\n    {{{   922,   -434,   -434}, 0, {  -116,   1074}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   922,   -383,   -741}, 0, {   480,   1500}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   922,   -383,   -434}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   922,   -434,   -741}, 0, {   394,   1584}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   200,     77,   1096}, 0, {  -132,   2692}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   415,     77,   1311}, 0, {   752,   2692}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   200,     77,   1311}, 0, {   308,   2248}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   307,    -25,  -1049}, 0, {  2352,  -5482}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   307,   -240,   -434}, 0, {  1330,  -4460}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -306,   -240,   -434}, 0, {  2352,  -3438}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -306,    -25,  -1049}, 0, {  3374,  -4460}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -721,    179,    379}, 0, { -1836,   3372}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -506,    179,    594}, 0, {  -950,   3372}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -721,    179,    594}, 0, { -1392,   2930}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -506,    179,    379}, 0, { -1392,   3816}, {0x44, 0x44, 0x44, 0xff}}},\n#endif\n};\n\n// 0x07010D38 - 0x07010E18\nstatic const Vtx bits_seg7_vertex_07010D38[] = {\n    {{{  -414,     77,   1096}, 0, {  -132,   2692}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -199,     77,   1311}, 0, {   752,   2692}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -414,     77,   1311}, 0, {   308,   2248}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -199,     77,   1096}, 0, {   308,   3134}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -511,   -434,   2022}, 0, { -7014,  -1224}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -921,   -434,   -741}, 0, { -3096,   4054}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   922,   -434,   -741}, 0, {     0,    990}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   200,     77,   1096}, 0, {  -132,   2692}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   415,     77,   1096}, 0, {   308,   3134}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   415,     77,   1311}, 0, {   752,   2692}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   722,    179,    594}, 0, { -1392,   2930}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   507,    179,    594}, 0, {  -950,   3372}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   722,    179,    379}, 0, { -1836,   3372}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   507,    179,    379}, 0, { -1392,   3816}, {0x44, 0x44, 0x44, 0xff}}},\n};\n\n// 0x07010E18 - 0x07010EF8\nstatic const Vtx bits_seg7_vertex_07010E18[] = {\n#ifdef VERSION_JP\n    {{{   307,   -383,   -434}, 0, {  2098,   2946}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -306,   -229,   -434}, 0, {  1330,   1670}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   307,   -229,   -434}, 0, {  2352,   2692}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -306,   -383,   -434}, 0, {  1076,   1924}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -511,   -434,   2022}, 0, { -7014,  -1224}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -921,   -434,   1613}, 0, { -7014,    138}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -921,   -434,   -741}, 0, { -3096,   4054}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   922,   -434,   -741}, 0, {     0,    990}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   922,   -434,   1613}, 0, { -3948,  -2928}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   512,   -434,   2022}, 0, { -5310,  -2928}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   296,   -383,   -741}, 0, {  2504,   -524}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{  -313,   -383,   -741}, 0, {  1490,    490}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{  -313,   -383,   -434}, 0, {   978,    -20}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{   296,   -383,   -434}, 0, {  1992,  -1034}, {0x50, 0x50, 0x50, 0xff}}},\n#else\n    {{{   307,   -383,   -434}, 0, {  2098,   2946}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -306,   -240,   -434}, 0, {  1330,   1670}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   307,   -240,   -434}, 0, {  2352,   2692}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -306,   -383,   -434}, 0, {  1076,   1924}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -511,   -434,   2022}, 0, { -7014,  -1224}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -921,   -434,   1613}, 0, { -7014,    138}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -921,   -434,   -741}, 0, { -3096,   4054}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   922,   -434,   -741}, 0, {     0,    990}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   922,   -434,   1613}, 0, { -3948,  -2928}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   512,   -434,   2022}, 0, { -5310,  -2928}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   296,   -383,   -741}, 0, {  2504,   -524}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{  -313,   -383,   -741}, 0, {  1490,    490}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{  -313,   -383,   -434}, 0, {   978,    -20}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{   296,   -383,   -434}, 0, {  1992,  -1034}, {0x50, 0x50, 0x50, 0xff}}},\n#endif\n};\n\n// 0x07010EF8 - 0x07010FE8\nstatic const Vtx bits_seg7_vertex_07010EF8[] = {\n    {{{  -134,    384,  -2306}, 0, {  1620,   2640}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -134,    384,  -1643}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   139,    384,  -1643}, 0, {   652,    306}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -212,    282,  -2495}, 0, {  1896,   3308}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -517,    282,  -1759}, 0, {  -698,   2232}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -212,    282,  -1454}, 0, {  -698,    714}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   218,    282,  -1454}, 0, {   376,   -362}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -517,    282,  -2190}, 0, {   376,   3308}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   522,    282,  -2190}, 0, {  2972,    714}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   218,    282,  -2495}, 0, {  2972,   2232}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   524,    282,  -1757}, 0, {  1896,   -372}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   333,    384,  -1837}, 0, {  1620,    306}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   333,    384,  -2112}, 0, {  2304,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -328,    384,  -2112}, 0, {   652,   2640}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -328,    384,  -1837}, 0, {     0,   1956}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07010FE8 - 0x070110C8\nstatic const Vtx bits_seg7_vertex_07010FE8[] = {\n    {{{  -921,    -25,   -332}, 0, {  3204,  -2246}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -204,    -25,   -434}, 0, {  2182,  -3610}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -921,    -25,   -434}, 0, {  3374,  -2416}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -134,    384,  -2306}, 0, {  1620,   2640}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   333,    384,  -2112}, 0, {  2304,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   139,    384,  -2306}, 0, {  2304,   1956}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   922,    -25,   -434}, 0, {   308,  -5482}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   205,    -25,   -434}, 0, {  1502,  -4290}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   205,    -25,   -332}, 0, {  1330,  -4120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   922,    -25,   -332}, 0, {   138,  -5312}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -204,    -25,   -332}, 0, {  2012,  -3438}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   524,    179,  -1757}, 0, {  1102,   3144}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   218,    282,  -1454}, 0, {   592,   2124}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   218,    179,  -1454}, 0, {   336,   2378}, {0x73, 0x73, 0x73, 0xff}}},\n};\n\n// 0x070110C8 - 0x070111B8\nstatic const Vtx bits_seg7_vertex_070110C8[] = {\n    {{{  -212,    179,  -1454}, 0, {  -736,   1304}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -517,    282,  -1759}, 0, { -1242,    290}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -517,    179,  -1759}, 0, { -1498,    544}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -212,    282,  -1454}, 0, {  -482,   1048}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -517,    179,  -2190}, 0, { -1498,    544}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -212,    282,  -2495}, 0, {  -482,   1048}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -212,    179,  -2495}, 0, {  -736,   1304}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -517,    282,  -2190}, 0, { -1242,    290}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   218,    179,  -2495}, 0, {   336,   2378}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   218,    282,  -2495}, 0, {   592,   2124}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   522,    282,  -2190}, 0, {  1352,   2884}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   522,    179,  -2190}, 0, {  1098,   3140}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   139,    282,  -2306}, 0, {   396,   1928}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   139,    384,  -2306}, 0, {   652,   1672}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   333,    384,  -2112}, 0, {  1136,   2156}, {0x73, 0x73, 0x73, 0xff}}},\n};\n\n// 0x070111B8 - 0x07011298\nstatic const Vtx bits_seg7_vertex_070111B8[] = {\n    {{{   524,    179,  -1757}, 0, {  1102,   3144}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   524,    282,  -1757}, 0, {  1358,   2888}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   218,    282,  -1454}, 0, {   592,   2124}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -134,    282,  -1643}, 0, {  -286,   1244}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -328,    384,  -1837}, 0, {  -514,    506}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -328,    282,  -1837}, 0, {  -770,    762}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -134,    384,  -1643}, 0, {     0,    990}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -328,    282,  -2112}, 0, {  -770,    762}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -328,    384,  -2112}, 0, {  -514,    506}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -134,    384,  -2306}, 0, {     0,    990}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -134,    282,  -2306}, 0, {  -286,   1244}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   139,    282,  -2306}, 0, {   396,   1928}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   333,    384,  -2112}, 0, {  1136,   2156}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   333,    282,  -2112}, 0, {   880,   2412}, {0x73, 0x73, 0x73, 0xff}}},\n};\n\n// 0x07011298 - 0x07011388\nstatic const Vtx bits_seg7_vertex_07011298[] = {\n    {{{   333,    282,  -1837}, 0, {   880,   2412}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   139,    384,  -1643}, 0, {   652,   1672}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   139,    282,  -1643}, 0, {   396,   1928}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   333,    384,  -1837}, 0, {  1136,   2156}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -921,   -434,   1613}, 0, {   308,    650}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -511,   -229,   2022}, 0, {   932,   1952}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -921,   -229,   1613}, 0, {     0,    990}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -511,   -434,   2022}, 0, {  1272,   1610}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   512,   -434,   2022}, 0, {  1514,   1852}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   922,   -434,   1613}, 0, {  2476,   2816}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   922,   -229,   1613}, 0, {  2136,   3156}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   512,   -229,   2022}, 0, {  1172,   2192}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -134,    282,  -2306}, 0, {  -286,   1244}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   139,    384,  -2306}, 0, {   652,   1672}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   139,    282,  -2306}, 0, {   396,   1928}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x07011388 - 0x07011478\nstatic const Vtx bits_seg7_vertex_07011388[] = {\n#ifdef VERSION_JP\n    {{{   512,   -434,   2022}, 0, { -2756,   3032}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -511,   -229,   2022}, 0, {  -712,   1670}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -511,   -434,   2022}, 0, { -1052,   1328}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   512,   -229,   2022}, 0, { -2414,   3372}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -212,    179,  -2495}, 0, {  -736,   1304}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   218,    282,  -2495}, 0, {   592,   2124}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   218,    179,  -2495}, 0, {   336,   2378}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -212,    282,  -2495}, 0, {  -482,   1048}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   218,    179,  -1454}, 0, {   336,   2378}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -212,    282,  -1454}, 0, {  -482,   1048}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -212,    179,  -1454}, 0, {  -736,   1304}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   218,    282,  -1454}, 0, {   592,   2124}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -921,    -25,   -434}, 0, {   650,    308}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -306,   -229,   -434}, 0, {  1330,   1670}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -921,   -229,   -434}, 0, {   308,    650}, {0x64, 0x64, 0x64, 0xff}}},\n#else\n    {{{   512,   -434,   2022}, 0, { -2756,   3032}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -511,   -229,   2022}, 0, {  -712,   1670}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -511,   -434,   2022}, 0, { -1052,   1328}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   512,   -229,   2022}, 0, { -2414,   3372}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -212,    179,  -2495}, 0, {  -736,   1304}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   218,    282,  -2495}, 0, {   592,   2124}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   218,    179,  -2495}, 0, {   336,   2378}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -212,    282,  -2495}, 0, {  -482,   1048}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   218,    179,  -1454}, 0, {   336,   2378}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -212,    282,  -1454}, 0, {  -482,   1048}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -212,    179,  -1454}, 0, {  -736,   1304}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   218,    282,  -1454}, 0, {   592,   2124}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -921,    -25,   -434}, 0, {   650,    308}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -306,   -240,   -434}, 0, {  1330,   1670}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -921,   -229,   -434}, 0, {   308,    650}, {0x64, 0x64, 0x64, 0xff}}},\n#endif\n};\n\n// 0x07011478 - 0x07011558\nstatic const Vtx bits_seg7_vertex_07011478[] = {\n#ifdef VERSION_JP\n    {{{  -134,    282,  -2306}, 0, {  -286,   1244}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -134,    384,  -2306}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   139,    384,  -2306}, 0, {   652,   1672}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   139,    282,  -1643}, 0, {   396,   1928}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   139,    384,  -1643}, 0, {   652,   1672}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -134,    384,  -1643}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -134,    282,  -1643}, 0, {  -286,   1244}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   307,    -25,   -434}, 0, {  2694,   2350}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   922,    -25,   -434}, 0, {  3716,   3372}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   922,   -229,   -434}, 0, {  3374,   3714}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   307,   -229,   -434}, 0, {  2352,   2692}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -921,    -25,   -434}, 0, {   650,    308}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -306,    -25,   -434}, 0, {  1672,   1328}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -306,   -229,   -434}, 0, {  1330,   1670}, {0x64, 0x64, 0x64, 0xff}}},\n#else\n    {{{  -134,    282,  -2306}, 0, {  -286,   1244}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -134,    384,  -2306}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   139,    384,  -2306}, 0, {   652,   1672}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   139,    282,  -1643}, 0, {   396,   1928}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   139,    384,  -1643}, 0, {   652,   1672}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -134,    384,  -1643}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -134,    282,  -1643}, 0, {  -286,   1244}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   307,    -25,   -434}, 0, {  2694,   2350}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   922,    -25,   -434}, 0, {  3716,   3372}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   922,   -229,   -434}, 0, {  3374,   3714}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   307,   -240,   -434}, 0, {  2352,   2692}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -921,    -25,   -434}, 0, {   650,    308}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -306,    -25,   -434}, 0, {  1672,   1328}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -306,   -240,   -434}, 0, {  1330,   1670}, {0x64, 0x64, 0x64, 0xff}}},\n#endif\n};\n\n// 0x07011558 - 0x07011648\nstatic const Vtx bits_seg7_vertex_07011558[] = {\n    {{{  -721,    179,    379}, 0, {  -592,   -152}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -721,    230,    379}, 0, {  -678,   -236}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -506,    230,    379}, 0, {  -234,   -680}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   922,    -25,   -332}, 0, {  3374,   3714}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   205,    -25,   -332}, 0, {  2182,   2520}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   205,   -229,   -332}, 0, {  1842,   2862}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   922,   -229,   -332}, 0, {  3034,   4054}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -921,   -229,   -332}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -204,    -25,   -332}, 0, {  1500,   1840}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -921,    -25,   -332}, 0, {   308,    650}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -204,   -229,   -332}, 0, {  1160,   2180}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -506,    179,    594}, 0, {  -150,   -594}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -506,    230,    594}, 0, {  -234,   -680}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -721,    230,    594}, 0, {  -678,   -236}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -721,    179,    594}, 0, {  -592,   -152}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x07011648 - 0x07011738\nstatic const Vtx bits_seg7_vertex_07011648[] = {\n    {{{   200,     77,   1096}, 0, {    88,   -492}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   200,    128,   1096}, 0, {     2,   -578}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   415,    128,   1096}, 0, {   444,  -1020}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -721,    179,    379}, 0, {  -592,   -152}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -506,    230,    379}, 0, {  -234,   -680}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -506,    179,    379}, 0, {  -150,   -594}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -199,     77,   1311}, 0, {   530,   -934}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -414,    128,   1311}, 0, {     2,   -578}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -414,     77,   1311}, 0, {    88,   -492}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -199,    128,   1311}, 0, {   444,  -1020}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -414,     77,   1096}, 0, {    88,   -492}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -199,    128,   1096}, 0, {   444,  -1020}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -199,     77,   1096}, 0, {   530,   -934}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -414,    128,   1096}, 0, {     2,   -578}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   415,     77,   1096}, 0, {   530,   -934}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x07011738 - 0x07011838\nstatic const Vtx bits_seg7_vertex_07011738[] = {\n    {{{   922,   -434,   -741}, 0, {  3034,   4054}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -921,   -434,   -741}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -921,   -383,   -741}, 0, {    54,    904}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   415,     77,   1311}, 0, {   530,   -934}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   200,    128,   1311}, 0, {     2,   -578}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   200,     77,   1311}, 0, {    88,   -492}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   415,    128,   1311}, 0, {   444,  -1020}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   507,    179,    379}, 0, {  -150,   -594}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   507,    230,    379}, 0, {  -234,   -680}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   722,    179,    379}, 0, {  -592,   -152}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   722,    230,    379}, 0, {  -678,   -236}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   722,    179,    594}, 0, {  -592,   -152}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   722,    230,    594}, 0, {  -678,   -236}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   507,    179,    594}, 0, {  -150,   -594}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   507,    230,    594}, 0, {  -234,   -680}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   922,   -383,   -741}, 0, {  3120,   3968}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x07011838 - 0x07011938\nstatic const Vtx bits_seg7_vertex_07011838[] = {\n    {{{  -527,   -537,  -1755}, 0, {   340,    192}, {0x53, 0x2e, 0x5c, 0xff}}},\n    {{{   222,   -537,  -2504}, 0, {   340,   1360}, {0x53, 0x2e, 0x5c, 0xff}}},\n    {{{   532,   -537,  -2194}, 0, {   766,   1360}, {0x53, 0x2e, 0x5c, 0xff}}},\n    {{{   222,   -537,  -1445}, 0, {  1140,    564}, {0x53, 0x2e, 0x5c, 0xff}}},\n    {{{  -216,   -537,  -1445}, 0, {   766,    192}, {0x53, 0x2e, 0x5c, 0xff}}},\n    {{{   532,   -537,  -1755}, 0, {  1140,    990}, {0x53, 0x2e, 0x5c, 0xff}}},\n    {{{  -527,   -537,  -2194}, 0, {     0,    564}, {0x53, 0x2e, 0x5c, 0xff}}},\n    {{{  -216,   -537,  -2504}, 0, {     0,    990}, {0x53, 0x2e, 0x5c, 0xff}}},\n    {{{  -409,    -25,  -1049}, 0, {   990,   -384}, {0x62, 0x28, 0x74, 0xff}}},\n    {{{  -216,   -537,  -1445}, 0, {   766,    192}, {0x62, 0x28, 0x74, 0xff}}},\n    {{{   222,   -537,  -1445}, 0, {  1140,    564}, {0x62, 0x28, 0x74, 0xff}}},\n    {{{   410,    -25,  -1049}, 0, {  1736,    362}, {0x62, 0x28, 0x74, 0xff}}},\n    {{{   403,    -25,  -2914}, 0, {   138,   1958}, {0x62, 0x28, 0x74, 0xff}}},\n    {{{   222,   -537,  -2504}, 0, {   340,   1360}, {0x62, 0x28, 0x74, 0xff}}},\n    {{{  -216,   -537,  -2504}, 0, {     0,    990}, {0x62, 0x28, 0x74, 0xff}}},\n    {{{  -364,    -25,  -2914}, 0, {  -604,   1212}, {0x62, 0x28, 0x74, 0xff}}},\n};\n\n// 0x07011938 - 0x07011A38\nstatic const Vtx bits_seg7_vertex_07011938[] = {\n    {{{  -364,    -25,  -2914}, 0, {  -604,   1212}, {0x70, 0x2d, 0x89, 0xff}}},\n    {{{  -216,   -537,  -2504}, 0, {     0,    990}, {0x70, 0x2d, 0x89, 0xff}}},\n    {{{  -896,    -25,  -2347}, 0, {  -604,    362}, {0x70, 0x2d, 0x89, 0xff}}},\n    {{{  -896,    -25,  -1602}, 0, {   138,   -384}, {0x70, 0x2d, 0x89, 0xff}}},\n    {{{  -527,   -537,  -1755}, 0, {   340,    192}, {0x70, 0x2d, 0x89, 0xff}}},\n    {{{  -216,   -537,  -1445}, 0, {   766,    192}, {0x70, 0x2d, 0x89, 0xff}}},\n    {{{  -409,    -25,  -1049}, 0, {   990,   -384}, {0x70, 0x2d, 0x89, 0xff}}},\n    {{{   410,    -25,  -1049}, 0, {  1736,    362}, {0x70, 0x2d, 0x89, 0xff}}},\n    {{{   222,   -537,  -1445}, 0, {  1140,    564}, {0x70, 0x2d, 0x89, 0xff}}},\n    {{{   532,   -537,  -1755}, 0, {  1140,    990}, {0x70, 0x2d, 0x89, 0xff}}},\n    {{{   947,    -25,  -1602}, 0, {  1736,   1212}, {0x70, 0x2d, 0x89, 0xff}}},\n    {{{   532,   -537,  -2194}, 0, {   766,   1360}, {0x70, 0x2d, 0x89, 0xff}}},\n    {{{   222,   -537,  -2504}, 0, {   340,   1360}, {0x70, 0x2d, 0x89, 0xff}}},\n    {{{   403,    -25,  -2914}, 0, {   138,   1958}, {0x70, 0x2d, 0x89, 0xff}}},\n    {{{   947,    -25,  -2347}, 0, {   990,   1958}, {0x70, 0x2d, 0x89, 0xff}}},\n    {{{  -527,   -537,  -2194}, 0, {     0,    564}, {0x70, 0x2d, 0x89, 0xff}}},\n};\n\n// 0x07011A38 - 0x07011B38\nstatic const Vtx bits_seg7_vertex_07011A38[] = {\n    {{{  -690,   -229,    563}, 0, {   990,   2688}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -690,    179,    563}, 0, {   990,      0}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -690,    179,    410}, 0, {     0,      0}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -229,   -229,   1126}, 0, {   990,   2012}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -229,     77,   1126}, 0, {   990,      0}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -229,     77,   1280}, 0, {     0,      0}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -229,   -229,   1280}, 0, {     0,   2012}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -383,   -229,   1280}, 0, {   990,   2012}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -383,     77,   1280}, 0, {   990,      0}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -383,     77,   1126}, 0, {     0,      0}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -383,   -229,   1126}, 0, {     0,   2012}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -537,   -229,    410}, 0, {   990,   2688}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -537,    179,    563}, 0, {     0,      0}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -537,   -229,    563}, 0, {     0,   2688}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -537,    179,    410}, 0, {   990,      0}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -690,   -229,    410}, 0, {     0,   2688}, {0x96, 0x96, 0x96, 0xff}}},\n};\n\n// 0x07011B38 - 0x07011C38\nstatic const Vtx bits_seg7_vertex_07011B38[] = {\n    {{{   230,   -229,   1280}, 0, {   990,   2008}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   230,     77,   1280}, 0, {   990,    -36}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   230,     77,   1126}, 0, {     0,    -36}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   230,   -229,   1126}, 0, {     0,   2008}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   384,   -229,   1126}, 0, {   990,   2012}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   384,     77,   1126}, 0, {   990,      0}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   384,     77,   1280}, 0, {     0,      0}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   384,   -229,   1280}, 0, {     0,   2012}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   691,   -229,    410}, 0, {   990,   2688}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   691,    179,    410}, 0, {   990,      0}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   691,   -229,    563}, 0, {     0,   2688}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   538,    179,    563}, 0, {   990,      0}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   538,    179,    410}, 0, {     0,      0}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   538,   -229,    410}, 0, {     0,   2688}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   691,    179,    563}, 0, {     0,      0}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   538,   -229,    563}, 0, {   990,   2688}, {0x96, 0x96, 0x96, 0xff}}},\n};\n\n// 0x07011C38 - 0x07011D38\nstatic const Vtx bits_seg7_vertex_07011C38[] = {\n    {{{  -690,   -229,    410}, 0, {   990,   2688}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -537,    179,    410}, 0, {     0,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -537,   -229,    410}, 0, {     0,   2688}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -229,   -229,   1280}, 0, {   990,   2012}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -383,     77,   1280}, 0, {     0,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -383,   -229,   1280}, 0, {     0,   2012}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -229,     77,   1280}, 0, {   990,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -383,   -229,   1126}, 0, {   990,   2012}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -383,     77,   1126}, 0, {   990,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -229,     77,   1126}, 0, {     0,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -229,   -229,   1126}, 0, {     0,   2012}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -537,   -229,    563}, 0, {   990,   2688}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -690,    179,    563}, 0, {     0,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -690,   -229,    563}, 0, {     0,   2688}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -537,    179,    563}, 0, {   990,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -690,    179,    410}, 0, {   990,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x07011D38 - 0x07011E38\nstatic const Vtx bits_seg7_vertex_07011D38[] = {\n    {{{   230,   -229,   1126}, 0, {   990,   2012}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   230,     77,   1126}, 0, {   990,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   384,     77,   1126}, 0, {     0,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   384,   -229,   1126}, 0, {     0,   2012}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   384,   -229,   1280}, 0, {   990,   2012}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   384,     77,   1280}, 0, {   990,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   230,     77,   1280}, 0, {     0,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   230,   -229,   1280}, 0, {     0,   2012}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   538,   -229,    410}, 0, {   990,   2688}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   538,    179,    410}, 0, {   990,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   691,   -229,    410}, 0, {     0,   2688}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   691,    179,    563}, 0, {   990,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   538,    179,    563}, 0, {     0,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   538,   -229,    563}, 0, {     0,   2688}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   691,    179,    410}, 0, {     0,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   691,   -229,    563}, 0, {   990,   2688}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x07011E38 - 0x07011EF8\nstatic const Vtx bits_seg7_vertex_07011E38[] = {\n    {{{  -306,   -639,   1715}, 0, {  -232,    990}, {0x3a, 0x4c, 0x39, 0xff}}},\n    {{{  -306,   -434,   1715}, 0, {  -232,      0}, {0x3a, 0x4c, 0x39, 0xff}}},\n    {{{   307,   -434,   1715}, 0, {  2216,      0}, {0x3a, 0x4c, 0x39, 0xff}}},\n    {{{   307,   -639,   1715}, 0, {  2216,    990}, {0x3a, 0x4c, 0x39, 0xff}}},\n    {{{  -306,   -639,   2739}, 0, {  3160,    990}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{  -306,   -434,   1715}, 0, {  8272,      0}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{  -306,   -639,   1715}, 0, {  8272,    990}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{  -306,   -434,   2739}, 0, {  3160,      0}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{   307,   -639,   1715}, 0, {  8272,    990}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{   307,   -434,   2739}, 0, {  3160,      0}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{   307,   -639,   2739}, 0, {  3160,    990}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{   307,   -434,   1715}, 0, {  8272,      0}, {0x74, 0x86, 0x75, 0xff}}},\n};\n\n// 0x07011EF8 - 0x07012098\nstatic const Gfx bits_seg7_dl_07011EF8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_0700FCE8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  0,  5,  6, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  0,  7,  1, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700FDE8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700FED8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_0700FFC8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_070100C8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_070101C8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07012098 - 0x07012758\nstatic const Gfx bits_seg7_dl_07012098[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_07010208, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10, 11,  8, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 15, 12, 0x0),\n    gsSPVertex(bits_seg7_vertex_07010308, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_070103F8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_070104D8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_070105C8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  4,  9,  5, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_070106C8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_070107A8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_07010888, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_07010978, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_07010A68, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_07010B58, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_07010C48, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bits_seg7_vertex_07010D38, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSPVertex(bits_seg7_vertex_07010E18, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 4,  8,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(10, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_07010EF8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  3,  7,  4, 0x0),\n    gsSP2Triangles( 3,  8,  9, 0x0,  3,  6, 10, 0x0),\n    gsSP2Triangles( 3, 10,  8, 0x0,  0, 11, 12, 0x0),\n    gsSP2Triangles( 0,  2, 11, 0x0,  0, 13, 14, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(bits_seg7_vertex_07010FE8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 0, 10,  1, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_070110C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_070111B8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_07011298, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_07011388, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_07011478, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_07011558, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_07011648, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_07011738, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_07011838, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  2,  5, 0x0,  0,  5,  3, 0x0),\n    gsSP2Triangles( 0,  6,  7, 0x0,  0,  7,  1, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_07011938, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(14, 11, 13, 0x0,  1, 15,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07012758 - 0x07012898\nstatic const Gfx bits_seg7_dl_07012758[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bits_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_07011A38, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_07011B38, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles( 9, 14, 10, 0x0, 15, 11, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_07011C38, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(bits_seg7_vertex_07011D38, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles( 9, 14, 10, 0x0, 15, 11, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07012898 - 0x070128F0\nstatic const Gfx bits_seg7_dl_07012898[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bits_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_07011E38, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070128F0 - 0x070129A8\nconst Gfx bits_seg7_dl_070128F0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bits_seg7_dl_07011EF8),\n    gsSPDisplayList(bits_seg7_dl_07012098),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bits_seg7_dl_07012758),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bits_seg7_dl_07012898),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/2/geo.inc.c",
    "content": "// 0x0E000430\nconst GeoLayout bits_geo_000430[] = {\n    GEO_CULLING_RADIUS(3200),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bits_seg7_dl_07003670),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/2/model.inc.c",
    "content": "// 0x07002988 - 0x07002A88\nstatic const Vtx bits_seg7_vertex_07002988[] = {\n    {{{  2662,   1024,    410}, 0, {  2352,  -1736}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{  1638,   1024,   -306}, 0, {     0,    990}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{  1638,   1024,    307}, 0, {  2012,    990}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{  1434,    594,    307}, 0, {  5418,   1328}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{   819,    594,   -306}, 0, {  4056,   -714}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{   819,    594,    307}, 0, {  4056,   1328}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{  1434,    594,   -306}, 0, {  5418,   -714}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{   614,    410,    307}, 0, {  3374,   1328}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{   614,    410,   -306}, 0, {  3374,   -714}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{     0,    410,   -306}, 0, {  2012,   -714}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{     0,    410,    307}, 0, {  2012,   1328}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{  -204,    205,    307}, 0, {  1330,   1328}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{  -818,    205,   -204}, 0, {     0,   -372}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{  -818,    205,    205}, 0, {     0,    990}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{  -204,    205,   -306}, 0, {  1330,   -714}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{  2662,   1024,   -409}, 0, {  -370,  -1736}, {0xb9, 0xd0, 0xad, 0xff}}},\n};\n\n// 0x07002A88 - 0x07002B78\nstatic const Vtx bits_seg7_vertex_07002A88[] = {\n    {{{  1434,    594,    307}, 0, {  1502,   -542}, {0x5a, 0x58, 0x96, 0xff}}},\n    {{{   819,      0,    307}, 0, {     0,    938}, {0x5a, 0x58, 0x96, 0xff}}},\n    {{{  1434,      0,    307}, 0, {  1502,    938}, {0x5a, 0x58, 0x96, 0xff}}},\n    {{{  -204,      0,   -306}, 0, {  -542,    990}, {0x5a, 0x58, 0x96, 0xff}}},\n    {{{  -818,      0,   -204}, 0, { -2074,    990}, {0x5a, 0x58, 0x96, 0xff}}},\n    {{{  -818,    205,   -204}, 0, { -2074,    480}, {0x5a, 0x58, 0x96, 0xff}}},\n    {{{  -204,    205,   -306}, 0, {  -542,    480}, {0x5a, 0x58, 0x96, 0xff}}},\n    {{{   614,      0,   -306}, 0, {  1500,    990}, {0x5a, 0x58, 0x96, 0xff}}},\n    {{{     0,      0,   -306}, 0, {     0,    990}, {0x5a, 0x58, 0x96, 0xff}}},\n    {{{     0,    410,   -306}, 0, {     0,      0}, {0x5a, 0x58, 0x96, 0xff}}},\n    {{{   614,    410,   -306}, 0, {  1500,      0}, {0x5a, 0x58, 0x96, 0xff}}},\n    {{{  1434,      0,   -306}, 0, {  1502,    938}, {0x5a, 0x58, 0x96, 0xff}}},\n    {{{   819,      0,   -306}, 0, {     0,    938}, {0x5a, 0x58, 0x96, 0xff}}},\n    {{{   819,    594,   -306}, 0, {     0,   -542}, {0x5a, 0x58, 0x96, 0xff}}},\n    {{{  1434,    594,   -306}, 0, {  1502,   -542}, {0x5a, 0x58, 0x96, 0xff}}},\n};\n\n// 0x07002B78 - 0x07002C68\nstatic const Vtx bits_seg7_vertex_07002B78[] = {\n    {{{  2662,   1024,    410}, 0, {  6610,  -1564}, {0x5a, 0x58, 0x96, 0xff}}},\n    {{{  1638,   1024,    307}, 0, {  4056,  -1564}, {0x5a, 0x58, 0x96, 0xff}}},\n    {{{  1638,      0,    307}, 0, {  4056,    990}, {0x5a, 0x58, 0x96, 0xff}}},\n    {{{  1434,    594,    307}, 0, {  1502,   -542}, {0x5a, 0x58, 0x96, 0xff}}},\n    {{{   819,    594,    307}, 0, {     0,   -542}, {0x5a, 0x58, 0x96, 0xff}}},\n    {{{   819,      0,    307}, 0, {     0,    938}, {0x5a, 0x58, 0x96, 0xff}}},\n    {{{   614,    410,    307}, 0, {  1500,      0}, {0x5a, 0x58, 0x96, 0xff}}},\n    {{{     0,      0,    307}, 0, {     0,    990}, {0x5a, 0x58, 0x96, 0xff}}},\n    {{{   614,      0,    307}, 0, {  1500,    990}, {0x5a, 0x58, 0x96, 0xff}}},\n    {{{     0,    410,    307}, 0, {     0,      0}, {0x5a, 0x58, 0x96, 0xff}}},\n    {{{  -204,    205,    307}, 0, {  -540,    480}, {0x5a, 0x58, 0x96, 0xff}}},\n    {{{  -818,    205,    205}, 0, { -2074,    480}, {0x5a, 0x58, 0x96, 0xff}}},\n    {{{  -818,      0,    205}, 0, { -2074,    990}, {0x5a, 0x58, 0x96, 0xff}}},\n    {{{  -204,      0,    307}, 0, {  -540,    990}, {0x5a, 0x58, 0x96, 0xff}}},\n    {{{  2662,      0,    410}, 0, {  6610,    990}, {0x5a, 0x58, 0x96, 0xff}}},\n};\n\n// 0x07002C68 - 0x07002D68\nstatic const Vtx bits_seg7_vertex_07002C68[] = {\n    {{{  2662,      0,   -409}, 0, {  6610,    990}, {0x5a, 0x58, 0x96, 0xff}}},\n    {{{  1638,      0,   -306}, 0, {  4056,    990}, {0x5a, 0x58, 0x96, 0xff}}},\n    {{{  1638,   1024,   -306}, 0, {  4056,  -1564}, {0x5a, 0x58, 0x96, 0xff}}},\n    {{{  2662,      0,   -409}, 0, {  6560,    990}, {0x5a, 0x58, 0x96, 0xff}}},\n    {{{  1638,   1024,   -306}, 0, {  4004,  -1564}, {0x5a, 0x58, 0x96, 0xff}}},\n    {{{  2662,   1024,   -409}, 0, {  6560,  -1564}, {0x5a, 0x58, 0x96, 0xff}}},\n    {{{     0,    410,    307}, 0, {   224,      0}, {0x7d, 0x80, 0xb4, 0xff}}},\n    {{{     0,    410,   -306}, 0, {  1756,      0}, {0x7d, 0x80, 0xb4, 0xff}}},\n    {{{     0,      0,   -306}, 0, {  1756,    990}, {0x7d, 0x80, 0xb4, 0xff}}},\n    {{{  1434,      0,    307}, 0, { -1308,    938}, {0x7d, 0x80, 0xb4, 0xff}}},\n    {{{  1434,    594,   -306}, 0, {   224,   -542}, {0x7d, 0x80, 0xb4, 0xff}}},\n    {{{  1434,    594,    307}, 0, { -1308,   -542}, {0x7d, 0x80, 0xb4, 0xff}}},\n    {{{  1434,      0,   -306}, 0, {   224,    938}, {0x7d, 0x80, 0xb4, 0xff}}},\n    {{{   819,    594,    307}, 0, { -1308,   -542}, {0x7d, 0x80, 0xb4, 0xff}}},\n    {{{   819,      0,   -306}, 0, {   224,    938}, {0x7d, 0x80, 0xb4, 0xff}}},\n    {{{   819,      0,    307}, 0, { -1308,    938}, {0x7d, 0x80, 0xb4, 0xff}}},\n};\n\n// 0x07002D68 - 0x07002E68\nstatic const Vtx bits_seg7_vertex_07002D68[] = {\n    {{{   819,    594,    307}, 0, { -1308,   -542}, {0x7d, 0x80, 0xb4, 0xff}}},\n    {{{   819,    594,   -306}, 0, {   224,   -542}, {0x7d, 0x80, 0xb4, 0xff}}},\n    {{{   819,      0,   -306}, 0, {   224,    938}, {0x7d, 0x80, 0xb4, 0xff}}},\n    {{{   614,      0,    307}, 0, {   224,    990}, {0x7d, 0x80, 0xb4, 0xff}}},\n    {{{   614,    410,   -306}, 0, {  1756,      0}, {0x7d, 0x80, 0xb4, 0xff}}},\n    {{{   614,    410,    307}, 0, {   224,      0}, {0x7d, 0x80, 0xb4, 0xff}}},\n    {{{   614,      0,   -306}, 0, {  1756,    990}, {0x7d, 0x80, 0xb4, 0xff}}},\n    {{{  1638,   1024,    307}, 0, {     0,  -1564}, {0x7d, 0x80, 0xb4, 0xff}}},\n    {{{  1638,   1024,   -306}, 0, {  1502,  -1564}, {0x7d, 0x80, 0xb4, 0xff}}},\n    {{{  1638,      0,   -306}, 0, {  1502,    990}, {0x7d, 0x80, 0xb4, 0xff}}},\n    {{{     0,    410,    307}, 0, {   224,      0}, {0x7d, 0x80, 0xb4, 0xff}}},\n    {{{     0,      0,   -306}, 0, {  1756,    990}, {0x7d, 0x80, 0xb4, 0xff}}},\n    {{{     0,      0,    307}, 0, {   224,    990}, {0x7d, 0x80, 0xb4, 0xff}}},\n    {{{  -204,      0,    307}, 0, {   224,    990}, {0x7d, 0x80, 0xb4, 0xff}}},\n    {{{  -204,    205,   -306}, 0, {  1756,    480}, {0x7d, 0x80, 0xb4, 0xff}}},\n    {{{  -204,    205,    307}, 0, {   224,    480}, {0x7d, 0x80, 0xb4, 0xff}}},\n};\n\n// 0x07002E68 - 0x07002F48\nstatic const Vtx bits_seg7_vertex_07002E68[] = {\n    {{{  -204,      0,    307}, 0, {   224,    990}, {0x7d, 0x80, 0xb4, 0xff}}},\n    {{{  -204,      0,   -306}, 0, {  1756,    990}, {0x7d, 0x80, 0xb4, 0xff}}},\n    {{{  -204,    205,   -306}, 0, {  1756,    480}, {0x7d, 0x80, 0xb4, 0xff}}},\n    {{{  -818,    205,    205}, 0, {   478,    480}, {0x7d, 0x80, 0xb4, 0xff}}},\n    {{{  -818,      0,   -204}, 0, {  1500,    990}, {0x7d, 0x80, 0xb4, 0xff}}},\n    {{{  -818,      0,    205}, 0, {   478,    990}, {0x7d, 0x80, 0xb4, 0xff}}},\n    {{{  -818,    205,   -204}, 0, {  1500,    480}, {0x7d, 0x80, 0xb4, 0xff}}},\n    {{{  1638,   1024,    307}, 0, {     0,  -1564}, {0x7d, 0x80, 0xb4, 0xff}}},\n    {{{  1638,      0,   -306}, 0, {  1502,    990}, {0x7d, 0x80, 0xb4, 0xff}}},\n    {{{  1638,      0,    307}, 0, {     0,    990}, {0x7d, 0x80, 0xb4, 0xff}}},\n    {{{  2662,      0,    410}, 0, {  -286,    990}, {0x7d, 0x80, 0xb4, 0xff}}},\n    {{{  2662,   1024,   -409}, 0, {  1756,  -1564}, {0x7d, 0x80, 0xb4, 0xff}}},\n    {{{  2662,   1024,    410}, 0, {  -286,  -1564}, {0x7d, 0x80, 0xb4, 0xff}}},\n    {{{  2662,      0,   -409}, 0, {  1756,    990}, {0x7d, 0x80, 0xb4, 0xff}}},\n};\n\n// 0x07002F48 - 0x07003048\nstatic const Vtx bits_seg7_vertex_07002F48[] = {\n    {{{ -1740,      0,    614}, 0, {   -82,    632}, {0xa7, 0x43, 0x00, 0xff}}},\n    {{{ -1023,      0,    102}, 0, {  1456,    412}, {0xa7, 0x43, 0x00, 0xff}}},\n    {{{ -1023,    184,    102}, 0, {  1500,    734}, {0xa7, 0x43, 0x00, 0xff}}},\n    {{{ -1740,    307,    205}, 0, {   480,   1498}, {0xa7, 0x43, 0x00, 0xff}}},\n    {{{ -2969,      0,    410}, 0, { -1622,   2336}, {0xa7, 0x43, 0x00, 0xff}}},\n    {{{ -1740,      0,    205}, 0, {   164,   1058}, {0xa7, 0x43, 0x00, 0xff}}},\n    {{{ -2969,    307,    410}, 0, { -1308,   2776}, {0xa7, 0x43, 0x00, 0xff}}},\n    {{{ -2969,    307,   -409}, 0, {  -286,   3798}, {0xa7, 0x43, 0x00, 0xff}}},\n    {{{ -1740,    307,   -204}, 0, {   990,   2010}, {0xa7, 0x43, 0x00, 0xff}}},\n    {{{ -1740,      0,   -204}, 0, {  1432,   2326}, {0xa7, 0x43, 0x00, 0xff}}},\n    {{{ -2969,      0,   -409}, 0, {   154,   4114}, {0xa7, 0x43, 0x00, 0xff}}},\n    {{{ -1023,      0,   -101}, 0, {  2078,   1034}, {0xa7, 0x43, 0x00, 0xff}}},\n    {{{ -1740,      0,   -613}, 0, {  1858,   2572}, {0xa7, 0x43, 0x00, 0xff}}},\n    {{{ -1740,    205,   -613}, 0, {  1500,   2520}, {0xa7, 0x43, 0x00, 0xff}}},\n    {{{ -1023,    184,   -101}, 0, {  1756,    990}, {0xa7, 0x43, 0x00, 0xff}}},\n    {{{ -1740,    205,    614}, 0, {     0,    990}, {0xa7, 0x43, 0x00, 0xff}}},\n};\n\n// 0x07003048 - 0x07003148\nstatic const Vtx bits_seg7_vertex_07003048[] = {\n    {{{ -2969,      0,    410}, 0, { -1690,   3160}, {0xff, 0x6e, 0x01, 0xff}}},\n    {{{ -2969,    307,    410}, 0, { -1308,   2776}, {0xff, 0x6e, 0x01, 0xff}}},\n    {{{ -2969,    307,   -409}, 0, {  -286,   3798}, {0xff, 0x6e, 0x01, 0xff}}},\n    {{{ -1740,    205,    614}, 0, {     0,    990}, {0xff, 0x6e, 0x01, 0xff}}},\n    {{{ -1740,    307,    205}, 0, {   478,   1498}, {0xff, 0x6e, 0x01, 0xff}}},\n    {{{ -1740,      0,    205}, 0, {    18,   1780}, {0xff, 0x6e, 0x01, 0xff}}},\n    {{{ -1740,      0,    614}, 0, {  -338,   1176}, {0xff, 0x6e, 0x01, 0xff}}},\n    {{{ -1740,      0,   -613}, 0, {  1314,   2828}, {0xff, 0x6e, 0x01, 0xff}}},\n    {{{ -1740,      0,   -204}, 0, {   708,   2472}, {0xff, 0x6e, 0x01, 0xff}}},\n    {{{ -1740,    307,   -204}, 0, {   990,   2010}, {0xff, 0x6e, 0x01, 0xff}}},\n    {{{ -1740,    205,   -613}, 0, {  1502,   2520}, {0xff, 0x6e, 0x01, 0xff}}},\n    {{{ -1023,      0,    102}, 0, {  1730,    504}, {0xff, 0x6e, 0x01, 0xff}}},\n    {{{ -1023,      0,   -101}, 0, {  1986,    760}, {0xff, 0x6e, 0x01, 0xff}}},\n    {{{ -1023,    184,   -101}, 0, {  1756,    990}, {0xff, 0x6e, 0x01, 0xff}}},\n    {{{ -1023,    184,    102}, 0, {  1500,    734}, {0xff, 0x6e, 0x01, 0xff}}},\n    {{{ -2969,      0,   -409}, 0, {  -668,   4182}, {0xff, 0x6e, 0x01, 0xff}}},\n};\n\n// 0x07003148 - 0x070031C8\nstatic const Vtx bits_seg7_vertex_07003148[] = {\n    {{{ -1740,    307,    205}, 0, {   478,   1498}, {0xff, 0xcc, 0x65, 0xff}}},\n    {{{ -1740,    307,   -204}, 0, {   990,   2010}, {0xff, 0xcc, 0x65, 0xff}}},\n    {{{ -2969,    307,   -409}, 0, {  -286,   3798}, {0xff, 0xcc, 0x65, 0xff}}},\n    {{{ -2969,    307,    410}, 0, { -1308,   2776}, {0xff, 0xcc, 0x65, 0xff}}},\n    {{{ -1740,    205,    614}, 0, {     0,    990}, {0xff, 0xcc, 0x65, 0xff}}},\n    {{{ -1023,    184,    102}, 0, {  1500,    734}, {0xff, 0xcc, 0x65, 0xff}}},\n    {{{ -1023,    184,   -101}, 0, {  1756,    990}, {0xff, 0xcc, 0x65, 0xff}}},\n    {{{ -1740,    205,   -613}, 0, {  1500,   2520}, {0xff, 0xcc, 0x65, 0xff}}},\n};\n\n// 0x070031C8 - 0x070032C8\nstatic const Vtx bits_seg7_vertex_070031C8[] = {\n    {{{  2816,   1008,     52}, 0, {     0,   -544}, {0xff, 0xe5, 0x65, 0xff}}},\n    {{{  2816,   1008,    -29}, 0, {   786,   -544}, {0xff, 0xe5, 0x65, 0xff}}},\n    {{{  2662,   1008,    -29}, 0, {   786,    990}, {0xff, 0xe5, 0x65, 0xff}}},\n    {{{  2662,   1008,     52}, 0, {     0,    990}, {0xff, 0xe5, 0x65, 0xff}}},\n    {{{  2662,    942,     93}, 0, {  -438,    990}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  2816,    942,     93}, 0, {  -438,   -544}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  2816,   1008,     52}, 0, {     0,   -544}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  2662,   1008,     52}, 0, {     0,    990}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  2662,   1008,    -29}, 0, {   786,    990}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  2816,    942,    -70}, 0, {  1194,   -544}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  2662,    942,    -70}, 0, {  1194,    990}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  2816,   1008,    -29}, 0, {   786,   -544}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  2662,    877,    -29}, 0, {   786,    990}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  2816,    877,    -29}, 0, {   786,   -544}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  2816,    877,     52}, 0, {     0,   -544}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  2662,    877,     52}, 0, {     0,    990}, {0x50, 0x50, 0x00, 0xff}}},\n};\n\n// 0x070032C8 - 0x07003348\nstatic const Vtx bits_seg7_vertex_070032C8[] = {\n    {{{  2662,    877,     52}, 0, {     0,    990}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  2816,    942,     93}, 0, {  -438,   -544}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  2662,    942,     93}, 0, {  -438,    990}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  2816,    877,     52}, 0, {     0,   -544}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  2662,    877,    -29}, 0, {   786,    990}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  2816,    942,    -70}, 0, {  1194,   -544}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  2816,    877,    -29}, 0, {   786,   -544}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  2662,    942,    -70}, 0, {  1194,    990}, {0x6b, 0x6b, 0x00, 0xff}}},\n};\n\n// 0x07003348 - 0x070033B0\nstatic const Gfx bits_seg7_dl_07003348[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_07002988, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070033B0 - 0x070034F8\nstatic const Gfx bits_seg7_dl_070033B0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_07002A88, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_07002B78, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_07002C68, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_07002D68, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_07002E68, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070034F8 - 0x070035E0\nstatic const Gfx bits_seg7_dl_070034F8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_07002F48, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_07003048, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_07003148, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 4,  5,  0, 0x0,  1,  0,  5, 0x0),\n    gsSP2Triangles( 5,  6,  1, 0x0,  6,  7,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070035E0 - 0x07003670\nstatic const Gfx bits_seg7_dl_070035E0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_070031C8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_070032C8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07003670 - 0x070036F8\nconst Gfx bits_seg7_dl_07003670[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bits_seg7_dl_07003348),\n    gsSPDisplayList(bits_seg7_dl_070033B0),\n    gsSPDisplayList(bits_seg7_dl_070034F8),\n    gsSPDisplayList(bits_seg7_dl_070035E0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/20/collision.inc.c",
    "content": "// 0x0701A9A0 - 0x0701AA0C\nconst Collision bits_seg7_collision_0701A9A0[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(307, 205, 287),\n    COL_VERTEX(-511, 0, 287),\n    COL_VERTEX(307, 0, 287),\n    COL_VERTEX(-511, 205, -286),\n    COL_VERTEX(-511, 205, 287),\n    COL_VERTEX(307, 205, -286),\n    COL_VERTEX(-511, 0, -286),\n    COL_VERTEX(307, 0, -286),\n    COL_TRI_INIT(SURFACE_DEFAULT, 8),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 4),\n    COL_TRI(0, 5, 3),\n    COL_TRI(0, 4, 1),\n    COL_TRI(4, 6, 1),\n    COL_TRI(4, 3, 6),\n    COL_TRI(7, 6, 3),\n    COL_TRI(7, 3, 5),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/20/geo.inc.c",
    "content": "// 0x0E0005E0\nconst GeoLayout bits_geo_0005E0[] = {\n    GEO_CULLING_RADIUS(1100),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bits_seg7_dl_07012B10),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/20/model.inc.c",
    "content": "// 0x070129A8 - 0x07012AA8\nstatic const Vtx bits_seg7_vertex_070129A8[] = {\n    {{{   307,    205,    287}, 0, {  2012,  -1054}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{   307,    205,   -286}, 0, {  3442,    376}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{  -511,    205,   -286}, 0, {  1398,   2418}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{  -511,    205,    287}, 0, {     0,    990}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{  -511,    205,    287}, 0, {  1910,     70}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  -511,    205,   -286}, 0, {   478,   1498}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  -511,      0,   -286}, 0, {     0,    990}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  -511,      0,    287}, 0, {  1398,   -440}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{   307,    205,    287}, 0, {  2524,   2522}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  -511,      0,    287}, 0, {     0,    990}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{   307,      0,    287}, 0, {  2012,   3032}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  -511,    205,    287}, 0, {   480,    480}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{   307,      0,   -286}, 0, {  2012,   3032}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  -511,    205,   -286}, 0, {   478,    480}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{   307,    205,   -286}, 0, {  2524,   2522}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  -511,      0,   -286}, 0, {     0,    990}, {0x52, 0x61, 0xac, 0xff}}},\n};\n\n// 0x07012AA8 - 0x07012B10\nstatic const Gfx bits_seg7_dl_07012AA8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_070129A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07012B10 - 0x07012B80\nconst Gfx bits_seg7_dl_07012B10[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bits_seg7_dl_07012AA8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/21/collision.inc.c",
    "content": "// 0x0701AA0C - 0x0701AA84\nconst Collision bits_seg7_collision_0701AA0C[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-460, 205, 205),\n    COL_VERTEX(512, 205, 205),\n    COL_VERTEX(512, 205, -204),\n    COL_VERTEX(512, 0, -204),\n    COL_VERTEX(512, 0, 205),\n    COL_VERTEX(-460, 0, -204),\n    COL_VERTEX(-460, 205, -204),\n    COL_VERTEX(-460, 0, 205),\n    COL_TRI_INIT(SURFACE_DEFAULT, 10),\n    COL_TRI(0, 1, 2),\n    COL_TRI(1, 3, 2),\n    COL_TRI(1, 4, 3),\n    COL_TRI(0, 4, 1),\n    COL_TRI(4, 5, 3),\n    COL_TRI(2, 3, 5),\n    COL_TRI(0, 2, 6),\n    COL_TRI(2, 5, 6),\n    COL_TRI(4, 7, 5),\n    COL_TRI(0, 7, 4),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/21/geo.inc.c",
    "content": "// 0x0E0005F8\nconst GeoLayout bits_geo_0005F8[] = {\n    GEO_CULLING_RADIUS(700),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bits_seg7_dl_07012D40),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/21/model.inc.c",
    "content": "// 0x07012B80 - 0x07012C80\nstatic const Vtx bits_seg7_vertex_07012B80[] = {\n    {{{   563,    205,   -204}, 0, {   990,   2112}, {0xff, 0x7c, 0x00, 0xff}}},\n    {{{  -460,      0,   -204}, 0, {     0,     72}, {0xff, 0x7c, 0x00, 0xff}}},\n    {{{  -460,    205,   -204}, 0, {   990,     72}, {0xff, 0x7c, 0x00, 0xff}}},\n    {{{   563,      0,   -204}, 0, {     0,   2112}, {0xff, 0x7c, 0x00, 0xff}}},\n    {{{  -460,    205,    205}, 0, {   990,     72}, {0xff, 0x7c, 0x00, 0xff}}},\n    {{{  -460,      0,    205}, 0, {     0,     72}, {0xff, 0x7c, 0x00, 0xff}}},\n    {{{   563,      0,    205}, 0, {     0,   2112}, {0xff, 0x7c, 0x00, 0xff}}},\n    {{{   563,    205,    205}, 0, {   990,   2112}, {0xff, 0x7c, 0x00, 0xff}}},\n    {{{  -460,    205,   -204}, 0, {   990,     72}, {0xff, 0x8b, 0x18, 0xff}}},\n    {{{  -460,      0,   -204}, 0, {     0,     72}, {0xff, 0x8b, 0x18, 0xff}}},\n    {{{  -460,      0,    205}, 0, {     0,     72}, {0xff, 0x8b, 0x18, 0xff}}},\n    {{{  -460,    205,    205}, 0, {   990,     72}, {0xff, 0x8b, 0x18, 0xff}}},\n    {{{  -460,    205,    205}, 0, {   990,     72}, {0xff, 0xb4, 0x4c, 0xff}}},\n    {{{   563,    205,    205}, 0, {   990,   2112}, {0xff, 0xb4, 0x4c, 0xff}}},\n    {{{   563,    205,   -204}, 0, {   990,   2112}, {0xff, 0xb4, 0x4c, 0xff}}},\n    {{{  -460,    205,   -204}, 0, {   990,     72}, {0xff, 0xb4, 0x4c, 0xff}}},\n};\n\n// 0x07012C80 - 0x07012CC0\nstatic const Vtx bits_seg7_vertex_07012C80[] = {\n    {{{   563,      0,    205}, 0, {     0,   2112}, {0x78, 0x3c, 0x00, 0xff}}},\n    {{{  -460,      0,    205}, 0, {     0,     72}, {0x78, 0x3c, 0x00, 0xff}}},\n    {{{  -460,      0,   -204}, 0, {     0,     72}, {0x78, 0x3c, 0x00, 0xff}}},\n    {{{   563,      0,   -204}, 0, {     0,   2112}, {0x78, 0x3c, 0x00, 0xff}}},\n};\n\n// 0x07012CC0 - 0x07012D40\nstatic const Gfx bits_seg7_dl_07012CC0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_07012B80, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_07012C80, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07012D40 - 0x07012DB0\nconst Gfx bits_seg7_dl_07012D40[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bits_seg7_dl_07012CC0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/22/collision.inc.c",
    "content": "// 0x0701AA84 - 0x0701AC28\nconst Collision bits_seg7_collision_0701AA84[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x18),\n    COL_VERTEX(-385, -306, 179),\n    COL_VERTEX(-180, -306, 384),\n    COL_VERTEX(-349, 102, 768),\n    COL_VERTEX(-759, 102, 358),\n    COL_VERTEX(-180, -306, -383),\n    COL_VERTEX(177, -306, -383),\n    COL_VERTEX(382, -306, -178),\n    COL_VERTEX(382, -306, 179),\n    COL_VERTEX(177, -306, 384),\n    COL_VERTEX(-385, -306, -178),\n    COL_VERTEX(-759, 102, -357),\n    COL_VERTEX(367, 307, 768),\n    COL_VERTEX(367, 102, 768),\n    COL_VERTEX(-349, 307, 768),\n    COL_VERTEX(-759, 307, -357),\n    COL_VERTEX(-759, 307, 358),\n    COL_VERTEX(776, 307, 358),\n    COL_VERTEX(776, 102, 358),\n    COL_VERTEX(776, 102, -357),\n    COL_VERTEX(367, 102, -767),\n    COL_VERTEX(-349, 102, -767),\n    COL_VERTEX(-349, 307, -767),\n    COL_VERTEX(367, 307, -767),\n    COL_VERTEX(776, 307, -357),\n    COL_TRI_INIT(SURFACE_DEFAULT, 44),\n    COL_TRI(0, 1, 2),\n    COL_TRI(3, 0, 2),\n    COL_TRI(0, 4, 5),\n    COL_TRI(0, 5, 6),\n    COL_TRI(0, 6, 7),\n    COL_TRI(0, 7, 8),\n    COL_TRI(0, 8, 1),\n    COL_TRI(0, 9, 4),\n    COL_TRI(10, 9, 0),\n    COL_TRI(10, 0, 3),\n    COL_TRI(2, 1, 8),\n    COL_TRI(11, 2, 12),\n    COL_TRI(11, 13, 2),\n    COL_TRI(3, 2, 13),\n    COL_TRI(2, 8, 12),\n    COL_TRI(12, 8, 7),\n    COL_TRI(18, 6, 19),\n    COL_TRI(3, 14, 10),\n    COL_TRI(3, 15, 14),\n    COL_TRI(3, 13, 15),\n    COL_TRI(16, 12, 17),\n    COL_TRI(16, 11, 12),\n    COL_TRI(12, 7, 17),\n    COL_TRI(17, 7, 6),\n    COL_TRI(18, 16, 17),\n    COL_TRI(17, 6, 18),\n    COL_TRI(6, 5, 19),\n    COL_TRI(21, 23, 22),\n    COL_TRI(18, 22, 23),\n    COL_TRI(18, 19, 22),\n    COL_TRI(18, 23, 16),\n    COL_TRI(19, 5, 4),\n    COL_TRI(19, 20, 21),\n    COL_TRI(19, 21, 22),\n    COL_TRI(19, 4, 20),\n    COL_TRI(20, 4, 9),\n    COL_TRI(20, 9, 10),\n    COL_TRI(21, 20, 10),\n    COL_TRI(14, 21, 10),\n    COL_TRI(21, 16, 23),\n    COL_TRI(21, 11, 16),\n    COL_TRI(21, 13, 11),\n    COL_TRI(21, 15, 13),\n    COL_TRI(21, 14, 15),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/22/geo.inc.c",
    "content": "// 0x0E000610\nconst GeoLayout bits_geo_000610[] = {\n    GEO_CULLING_RADIUS(1300),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bits_seg7_dl_070135A0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/22/model.inc.c",
    "content": "// 0x07012DB0 - 0x07012DC8\nstatic const Lights1 bits_seg7_lights_07012DB0 = gdSPDefLights1(\n    0x58, 0x5f, 0x7d,\n    0xb1, 0xbf, 0xfa, 0x28, 0x28, 0x28\n);\n\n// 0x07012DC8 - 0x07012DE0\nstatic const Lights1 bits_seg7_lights_07012DC8 = gdSPDefLights1(\n    0x4c, 0x46, 0x6c,\n    0x98, 0x8c, 0xd8, 0x28, 0x28, 0x28\n);\n\n// 0x07012DE0 - 0x07012DF8\nstatic const Lights1 bits_seg7_lights_07012DE0 = gdSPDefLights1(\n    0x59, 0x32, 0x7f,\n    0xb2, 0x65, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07012DF8 - 0x07012E78\nstatic const Vtx bits_seg7_vertex_07012DF8[] = {\n    {{{  -349,    307,   -767}, 0, {  2524,   3542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -759,    307,    358}, 0, {     0,   2350}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -349,    307,    768}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   367,    307,    768}, 0, {  1160,   -202}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   776,    307,    358}, 0, {  2522,   -202}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   776,    307,   -357}, 0, {  3716,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   367,    307,   -767}, 0, {  3716,   2350}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -759,    307,   -357}, 0, {  1160,   3542}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07012E78 - 0x07012F58\nstatic const Vtx bits_seg7_vertex_07012E78[] = {\n    {{{  -759,    102,    358}, 0, {     0,   2350}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -349,    307,    768}, 0, {     0,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -759,    307,    358}, 0, {     0,   2350}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   367,    102,   -767}, 0, {  3716,   2350}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -349,    102,   -767}, 0, {  2524,   3542}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -349,    307,   -767}, 0, {  2524,   3542}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   776,    102,   -357}, 0, {  3716,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   367,    102,   -767}, 0, {  3716,   2350}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   367,    307,   -767}, 0, {  3716,   2350}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   367,    307,   -767}, 0, {  3716,   2350}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -349,    307,   -767}, 0, {  2524,   3542}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -349,    102,   -767}, 0, {  2524,   3542}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -759,    102,   -357}, 0, {  1160,   3542}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -759,    307,   -357}, 0, {  1160,   3542}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07012F58 - 0x07013058\nstatic const Vtx bits_seg7_vertex_07012F58[] = {\n    {{{  -759,    102,    358}, 0, {     0,   2350}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -759,    307,    358}, 0, {     0,   2350}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -759,    307,   -357}, 0, {  1160,   3542}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -759,    102,   -357}, 0, {  1160,   3542}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -759,    102,    358}, 0, {     0,   2350}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -349,    102,    768}, 0, {     0,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -349,    307,    768}, 0, {     0,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   776,    307,    358}, 0, {  2522,   -202}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   367,    102,    768}, 0, {  1160,   -202}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   776,    102,    358}, 0, {  2522,   -202}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   776,    102,   -357}, 0, {  3716,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   367,    307,   -767}, 0, {  3716,   2350}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   776,    307,   -357}, 0, {  3716,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   776,    102,   -357}, 0, {  3716,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   776,    307,   -357}, 0, {  3716,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   776,    307,    358}, 0, {  2522,   -202}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07013058 - 0x070130F8\nstatic const Vtx bits_seg7_vertex_07013058[] = {\n    {{{   776,    102,   -357}, 0, {  3716,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   776,    307,    358}, 0, {  2522,   -202}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   776,    102,    358}, 0, {  2522,   -202}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   776,    307,    358}, 0, {  2522,   -202}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   367,    307,    768}, 0, {  1160,   -202}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   367,    102,    768}, 0, {  1160,   -202}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   367,    307,    768}, 0, {  1160,   -202}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -349,    307,    768}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -349,    102,    768}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   367,    102,    768}, 0, {  1160,   -202}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070130F8 - 0x070131E8\nstatic const Vtx bits_seg7_vertex_070130F8[] = {\n    {{{   776,    102,    358}, 0, {  2522,   -202}, {0x5b, 0xa8, 0x00, 0xff}}},\n    {{{   382,   -306,    179}, 0, {  2164,    752}, {0x5b, 0xa8, 0x00, 0xff}}},\n    {{{   382,   -306,   -178}, 0, {  2762,   1346}, {0x5b, 0xa8, 0x00, 0xff}}},\n    {{{  -385,   -306,    179}, 0, {   888,   2028}, {0xc0, 0xa9, 0x40, 0xff}}},\n    {{{  -180,   -306,    384}, 0, {   888,   1346}, {0xc0, 0xa9, 0x40, 0xff}}},\n    {{{  -349,    102,    768}, 0, {     0,    990}, {0xc0, 0xa9, 0x40, 0xff}}},\n    {{{  -759,    102,    358}, 0, {     0,   2350}, {0xc0, 0xa9, 0x40, 0xff}}},\n    {{{  -385,   -306,    179}, 0, {   888,   2028}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -180,   -306,   -383}, 0, {  2164,   2624}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   177,   -306,   -383}, 0, {  2762,   2028}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   382,   -306,   -178}, 0, {  2762,   1346}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   382,   -306,    179}, 0, {  2164,    752}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   177,   -306,    384}, 0, {  1484,    752}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -180,   -306,    384}, 0, {   888,   1346}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -385,   -306,   -178}, 0, {  1484,   2624}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x070131E8 - 0x070132D8\nstatic const Vtx bits_seg7_vertex_070131E8[] = {\n    {{{  -759,    102,   -357}, 0, {  1160,   3542}, {0xa3, 0xab, 0x00, 0xff}}},\n    {{{  -385,   -306,   -178}, 0, {  1484,   2624}, {0xa3, 0xab, 0x00, 0xff}}},\n    {{{  -385,   -306,    179}, 0, {   888,   2028}, {0xa3, 0xab, 0x00, 0xff}}},\n    {{{  -759,    102,    358}, 0, {     0,   2350}, {0xa3, 0xab, 0x00, 0xff}}},\n    {{{  -349,    102,    768}, 0, {     0,    990}, {0x00, 0xa9, 0x5c, 0xff}}},\n    {{{  -180,   -306,    384}, 0, {   888,   1346}, {0x00, 0xa9, 0x5c, 0xff}}},\n    {{{   177,   -306,    384}, 0, {  1484,    752}, {0x00, 0xa9, 0x5c, 0xff}}},\n    {{{   367,    102,    768}, 0, {  1160,   -202}, {0x00, 0xa9, 0x5c, 0xff}}},\n    {{{   367,    102,    768}, 0, {  1160,   -202}, {0x3f, 0xa7, 0x3f, 0xff}}},\n    {{{   177,   -306,    384}, 0, {  1484,    752}, {0x3f, 0xa7, 0x3f, 0xff}}},\n    {{{   382,   -306,    179}, 0, {  2164,    752}, {0x3f, 0xa7, 0x3f, 0xff}}},\n    {{{   776,    102,    358}, 0, {  2522,   -202}, {0x3f, 0xa7, 0x3f, 0xff}}},\n    {{{  -349,    102,   -767}, 0, {  2524,   3542}, {0xc0, 0xa9, 0xc0, 0xff}}},\n    {{{  -385,   -306,   -178}, 0, {  1484,   2624}, {0xc0, 0xa9, 0xc0, 0xff}}},\n    {{{  -759,    102,   -357}, 0, {  1160,   3542}, {0xc0, 0xa9, 0xc0, 0xff}}},\n};\n\n// 0x070132D8 - 0x070133B8\nstatic const Vtx bits_seg7_vertex_070132D8[] = {\n    {{{   776,    102,    358}, 0, {  2522,   -202}, {0x5b, 0xa8, 0x00, 0xff}}},\n    {{{   382,   -306,   -178}, 0, {  2762,   1346}, {0x5b, 0xa8, 0x00, 0xff}}},\n    {{{   776,    102,   -357}, 0, {  3716,    990}, {0x5b, 0xa8, 0x00, 0xff}}},\n    {{{   382,   -306,   -178}, 0, {  2762,   1346}, {0x3f, 0xa7, 0xc1, 0xff}}},\n    {{{   177,   -306,   -383}, 0, {  2762,   2028}, {0x3f, 0xa7, 0xc1, 0xff}}},\n    {{{   367,    102,   -767}, 0, {  3716,   2350}, {0x3f, 0xa7, 0xc1, 0xff}}},\n    {{{   776,    102,   -357}, 0, {  3716,    990}, {0x3f, 0xa7, 0xc1, 0xff}}},\n    {{{   367,    102,   -767}, 0, {  3716,   2350}, {0x00, 0xa9, 0xa4, 0xff}}},\n    {{{   177,   -306,   -383}, 0, {  2762,   2028}, {0x00, 0xa9, 0xa4, 0xff}}},\n    {{{  -180,   -306,   -383}, 0, {  2164,   2624}, {0x00, 0xa9, 0xa4, 0xff}}},\n    {{{  -349,    102,   -767}, 0, {  2524,   3542}, {0x00, 0xa9, 0xa4, 0xff}}},\n    {{{  -349,    102,   -767}, 0, {  2524,   3542}, {0xc0, 0xa9, 0xc0, 0xff}}},\n    {{{  -180,   -306,   -383}, 0, {  2164,   2624}, {0xc0, 0xa9, 0xc0, 0xff}}},\n    {{{  -385,   -306,   -178}, 0, {  1484,   2624}, {0xc0, 0xa9, 0xc0, 0xff}}},\n};\n\n// 0x070133B8 - 0x070135A0\nstatic const Gfx bits_seg7_dl_070133B8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bits_seg7_lights_07012DB0.l, 1),\n    gsSPLight(&bits_seg7_lights_07012DB0.a, 2),\n    gsSPVertex(bits_seg7_vertex_07012DF8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  0,  5,  6, 0x0),\n    gsSP2Triangles( 0,  7,  1, 0x0,  0,  4,  5, 0x0),\n    gsSPLight(&bits_seg7_lights_07012DC8.l, 1),\n    gsSPLight(&bits_seg7_lights_07012DC8.a, 2),\n    gsSPVertex(bits_seg7_vertex_07012E78, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  3,  5,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 10, 12, 0x0),\n    gsSPVertex(bits_seg7_vertex_07012F58, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_07013058, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSPLight(&bits_seg7_lights_07012DE0.l, 1),\n    gsSPLight(&bits_seg7_lights_07012DE0.a, 2),\n    gsSPVertex(bits_seg7_vertex_070130F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  7, 10, 11, 0x0),\n    gsSP2Triangles( 7, 11, 12, 0x0,  7, 12, 13, 0x0),\n    gsSP1Triangle( 7, 14,  8, 0x0),\n    gsSPVertex(bits_seg7_vertex_070131E8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_070132D8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070135A0 - 0x07013610\nconst Gfx bits_seg7_dl_070135A0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bits_seg7_dl_070133B8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/23/collision.inc.c",
    "content": "// 0x0701AC28 - 0x0701ACAC\nconst Collision bits_seg7_collision_0701AC28[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-204, 0, -306),\n    COL_VERTEX(-204, 0, 307),\n    COL_VERTEX(-204, 102, 307),\n    COL_VERTEX(205, 0, 307),\n    COL_VERTEX(205, 102, 307),\n    COL_VERTEX(205, 0, -306),\n    COL_VERTEX(205, 102, -306),\n    COL_VERTEX(-204, 102, -306),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(1, 3, 4),\n    COL_TRI(1, 4, 2),\n    COL_TRI(5, 3, 1),\n    COL_TRI(5, 1, 0),\n    COL_TRI(6, 4, 3),\n    COL_TRI(6, 3, 5),\n    COL_TRI(7, 2, 4),\n    COL_TRI(7, 4, 6),\n    COL_TRI(0, 2, 7),\n    COL_TRI(5, 0, 7),\n    COL_TRI(5, 7, 6),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/23/geo.inc.c",
    "content": "// 0x0E000628\nconst GeoLayout bits_geo_000628[] = {\n    GEO_CULLING_RADIUS(600),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bits_seg7_dl_07013820),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/23/model.inc.c",
    "content": "// 0x07013610 - 0x07013710\nstatic const Vtx bits_seg7_vertex_07013610[] = {\n    {{{  -204,    102,   -306}, 0, {    38,   2968}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{  -204,    102,    307}, 0, {    38,   1052}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{   205,    102,    307}, 0, {  1448,   1052}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{   205,    102,   -306}, 0, {  1448,   2968}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{   205,      0,   -306}, 0, {  1448,   2968}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{   205,      0,    307}, 0, {  1448,   1052}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  -204,      0,    307}, 0, {    38,   1052}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  -204,      0,   -306}, 0, {    38,   2968}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  -204,      0,   -306}, 0, {    38,   2968}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{  -204,    102,    307}, 0, {    38,   1052}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{  -204,    102,   -306}, 0, {    38,   2968}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{  -204,      0,    307}, 0, {    38,   1052}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{   205,    102,   -306}, 0, {  1448,   2968}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   205,    102,    307}, 0, {  1448,   1052}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   205,      0,    307}, 0, {  1448,   1052}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   205,      0,   -306}, 0, {  1448,   2968}, {0x65, 0x7f, 0xff, 0xff}}},\n};\n\n// 0x07013710 - 0x07013790\nstatic const Vtx bits_seg7_vertex_07013710[] = {\n    {{{  -204,      0,    307}, 0, {    38,   1052}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{   205,      0,    307}, 0, {  1448,   1052}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{   205,    102,    307}, 0, {  1448,   1052}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  -204,    102,    307}, 0, {    38,   1052}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{   205,      0,   -306}, 0, {  1448,   2968}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  -204,    102,   -306}, 0, {    38,   2968}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{   205,    102,   -306}, 0, {  1448,   2968}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  -204,      0,   -306}, 0, {    38,   2968}, {0x52, 0x61, 0xac, 0xff}}},\n};\n\n// 0x07013790 - 0x07013820\nstatic const Gfx bits_seg7_dl_07013790[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_07013610, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_07013710, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07013820 - 0x07013890\nconst Gfx bits_seg7_dl_07013820[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bits_seg7_dl_07013790),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/24/collision.inc.c",
    "content": "// 0x0701ACAC - 0x0701AD54\nconst Collision bits_seg7_collision_0701ACAC[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0xA),\n    COL_VERTEX(-388, 389, 0),\n    COL_VERTEX(-101, 287, 0),\n    COL_VERTEX(0, 389, 51),\n    COL_VERTEX(-101, 492, 0),\n    COL_VERTEX(0, 389, -50),\n    COL_VERTEX(0, 778, 0),\n    COL_VERTEX(0, 0, 0),\n    COL_VERTEX(102, 287, 0),\n    COL_VERTEX(102, 492, 0),\n    COL_VERTEX(389, 389, 0),\n    COL_TRI_INIT(SURFACE_DEFAULT, 16),\n    COL_TRI(0, 1, 2),\n    COL_TRI(2, 3, 0),\n    COL_TRI(0, 3, 4),\n    COL_TRI(4, 1, 0),\n    COL_TRI(4, 3, 5),\n    COL_TRI(6, 1, 4),\n    COL_TRI(4, 7, 6),\n    COL_TRI(5, 8, 4),\n    COL_TRI(4, 8, 9),\n    COL_TRI(9, 7, 4),\n    COL_TRI(2, 1, 6),\n    COL_TRI(6, 7, 2),\n    COL_TRI(2, 7, 9),\n    COL_TRI(5, 3, 2),\n    COL_TRI(9, 8, 2),\n    COL_TRI(2, 8, 5),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/24/geo.inc.c",
    "content": "// 0x0E000640\nconst GeoLayout bits_geo_000640[] = {\n    GEO_CULLING_RADIUS(600),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bits_seg7_dl_07013C78),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/24/model.inc.c",
    "content": "// 0x07013890 - 0x070138A8\nstatic const Lights1 bits_seg7_lights_07013890 = gdSPDefLights1(\n    0x14, 0x2f, 0x29,\n    0x50, 0xbf, 0xa7, 0x28, 0x28, 0x28\n);\n\n// 0x070138A8 - 0x07013998\nstatic const Vtx bits_seg7_vertex_070138A8[] = {\n    {{{     0,      0,      0}, 0, {  -712,    536}, {0x2a, 0x0f, 0x76, 0xff}}},\n    {{{   102,    102,    -50}, 0, {  -882,    422}, {0x2a, 0x0f, 0x76, 0xff}}},\n    {{{     0,    389,    -50}, 0, { -3300,    104}, {0x2a, 0x0f, 0x76, 0xff}}},\n    {{{     0,    389,    -50}, 0, { -3300,    104}, {0xd5, 0x0f, 0x76, 0xff}}},\n    {{{  -101,    102,    -50}, 0, { -1904,    422}, {0xd5, 0x0f, 0x76, 0xff}}},\n    {{{     0,      0,      0}, 0, {  -712,    536}, {0xd5, 0x0f, 0x76, 0xff}}},\n    {{{   389,      0,    -50}, 0, {  1228,    536}, {0x0f, 0x2a, 0x76, 0xff}}},\n    {{{   102,    102,    -50}, 0, {  -882,    422}, {0x0f, 0x2a, 0x76, 0xff}}},\n    {{{     0,      0,      0}, 0, {  -712,    536}, {0x0f, 0x2a, 0x76, 0xff}}},\n    {{{     0,      0,      0}, 0, {  -712,    536}, {0x0f, 0xd5, 0x76, 0xff}}},\n    {{{   102,   -101,    -50}, 0, {   478,    650}, {0x0f, 0xd5, 0x76, 0xff}}},\n    {{{   389,      0,    -50}, 0, {  1228,    536}, {0x0f, 0xd5, 0x76, 0xff}}},\n    {{{     0,      0,      0}, 0, {  -712,    536}, {0xf1, 0x2a, 0x76, 0xff}}},\n    {{{  -101,    102,    -50}, 0, { -1904,    422}, {0xf1, 0x2a, 0x76, 0xff}}},\n    {{{  -388,      0,    -50}, 0, { -2654,    536}, {0xf1, 0x2a, 0x76, 0xff}}},\n};\n\n// 0x07013998 - 0x07013A88\nstatic const Vtx bits_seg7_vertex_07013998[] = {\n    {{{  -388,      0,    -50}, 0, { -2654,    536}, {0xf1, 0xd5, 0x76, 0xff}}},\n    {{{  -101,   -101,    -50}, 0, {  -540,    650}, {0xf1, 0xd5, 0x76, 0xff}}},\n    {{{     0,      0,      0}, 0, {  -712,    536}, {0xf1, 0xd5, 0x76, 0xff}}},\n    {{{     0,      0,      0}, 0, {  -712,    536}, {0xd5, 0xf1, 0x76, 0xff}}},\n    {{{  -101,   -101,    -50}, 0, {  -540,    650}, {0xd5, 0xf1, 0x76, 0xff}}},\n    {{{     0,   -388,    -50}, 0, {  1876,    968}, {0xd5, 0xf1, 0x76, 0xff}}},\n    {{{     0,   -388,    -50}, 0, {  1876,    968}, {0x2a, 0xf1, 0x76, 0xff}}},\n    {{{   102,   -101,    -50}, 0, {   478,    650}, {0x2a, 0xf1, 0x76, 0xff}}},\n    {{{     0,      0,      0}, 0, {  -712,    536}, {0x2a, 0xf1, 0x76, 0xff}}},\n    {{{     0,      0,   -101}, 0, {  -712,    536}, {0xd4, 0x0f, 0x8a, 0xff}}},\n    {{{  -101,    102,    -50}, 0, { -1904,    422}, {0xd4, 0x0f, 0x8a, 0xff}}},\n    {{{     0,    389,    -50}, 0, { -3300,    104}, {0xd4, 0x0f, 0x8a, 0xff}}},\n    {{{     0,    389,    -50}, 0, { -3300,    104}, {0x2b, 0x0f, 0x8a, 0xff}}},\n    {{{   102,    102,    -50}, 0, {  -882,    422}, {0x2b, 0x0f, 0x8a, 0xff}}},\n    {{{     0,      0,   -101}, 0, {  -712,    536}, {0x2b, 0x0f, 0x8a, 0xff}}},\n};\n\n// 0x07013A88 - 0x07013B78\nstatic const Vtx bits_seg7_vertex_07013A88[] = {\n    {{{   389,      0,    -50}, 0, {  1228,    536}, {0x0f, 0xd4, 0x8a, 0xff}}},\n    {{{   102,   -101,    -50}, 0, {   478,    650}, {0x0f, 0xd4, 0x8a, 0xff}}},\n    {{{     0,      0,   -101}, 0, {  -712,    536}, {0x0f, 0xd4, 0x8a, 0xff}}},\n    {{{     0,      0,   -101}, 0, {  -712,    536}, {0x0f, 0x2b, 0x8a, 0xff}}},\n    {{{   102,    102,    -50}, 0, {  -882,    422}, {0x0f, 0x2b, 0x8a, 0xff}}},\n    {{{   389,      0,    -50}, 0, {  1228,    536}, {0x0f, 0x2b, 0x8a, 0xff}}},\n    {{{     0,      0,   -101}, 0, {  -712,    536}, {0x2b, 0xf1, 0x8a, 0xff}}},\n    {{{   102,   -101,    -50}, 0, {   478,    650}, {0x2b, 0xf1, 0x8a, 0xff}}},\n    {{{     0,   -388,    -50}, 0, {  1876,    968}, {0x2b, 0xf1, 0x8a, 0xff}}},\n    {{{  -388,      0,    -50}, 0, { -2654,    536}, {0xf1, 0x2b, 0x8a, 0xff}}},\n    {{{  -101,    102,    -50}, 0, { -1904,    422}, {0xf1, 0x2b, 0x8a, 0xff}}},\n    {{{     0,      0,   -101}, 0, {  -712,    536}, {0xf1, 0x2b, 0x8a, 0xff}}},\n    {{{     0,   -388,    -50}, 0, {  1876,    968}, {0xd4, 0xf1, 0x8a, 0xff}}},\n    {{{  -101,   -101,    -50}, 0, {  -540,    650}, {0xd4, 0xf1, 0x8a, 0xff}}},\n    {{{     0,      0,   -101}, 0, {  -712,    536}, {0xd4, 0xf1, 0x8a, 0xff}}},\n};\n\n// 0x07013B78 - 0x07013BA8\nstatic const Vtx bits_seg7_vertex_07013B78[] = {\n    {{{     0,      0,   -101}, 0, {  -712,    536}, {0xf1, 0xd4, 0x8a, 0xff}}},\n    {{{  -101,   -101,    -50}, 0, {  -540,    650}, {0xf1, 0xd4, 0x8a, 0xff}}},\n    {{{  -388,      0,    -50}, 0, { -2654,    536}, {0xf1, 0xd4, 0x8a, 0xff}}},\n};\n\n// 0x07013BA8 - 0x07013C78\nstatic const Gfx bits_seg7_dl_07013BA8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bits_seg7_lights_07013890.l, 1),\n    gsSPLight(&bits_seg7_lights_07013890.a, 2),\n    gsSPVertex(bits_seg7_vertex_070138A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_07013998, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_07013A88, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_07013B78, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07013C78 - 0x07013CE8\nconst Gfx bits_seg7_dl_07013C78[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bits_seg7_dl_07013BA8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/25/collision.inc.c",
    "content": "// 0x0701AD54 - 0x0701ADD8\nconst Collision bits_seg7_collision_0701AD54[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-460, 0, -306),\n    COL_VERTEX(461, 0, 307),\n    COL_VERTEX(-460, 0, 307),\n    COL_VERTEX(461, 0, -306),\n    COL_VERTEX(-460, 102, -306),\n    COL_VERTEX(461, 102, 307),\n    COL_VERTEX(461, 102, -306),\n    COL_VERTEX(-460, 102, 307),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI(4, 3, 0),\n    COL_TRI(2, 4, 0),\n    COL_TRI(2, 1, 5),\n    COL_TRI(6, 5, 1),\n    COL_TRI(6, 1, 3),\n    COL_TRI(2, 5, 7),\n    COL_TRI(2, 7, 4),\n    COL_TRI(4, 6, 3),\n    COL_TRI(6, 4, 7),\n    COL_TRI(6, 7, 5),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/25/geo.inc.c",
    "content": "// 0x0E000658\nconst GeoLayout bits_geo_000658[] = {\n    GEO_CULLING_RADIUS(700),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bits_seg7_dl_07013EF8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/25/model.inc.c",
    "content": "// 0x07013CE8 - 0x07013DE8\nstatic const Vtx bits_seg7_vertex_07013CE8[] = {\n    {{{  -460,    102,   -306}, 0, {   990,    -10}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   461,      0,   -306}, 0, {   990,    968}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -460,      0,   -306}, 0, {   990,    -10}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   461,    102,   -306}, 0, {   990,    968}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -460,      0,    307}, 0, {     0,    -10}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   461,      0,    307}, 0, {     0,    968}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   461,    102,    307}, 0, {     0,    968}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -460,    102,    307}, 0, {     0,    -10}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -460,      0,   -306}, 0, {   990,    -10}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   461,      0,    307}, 0, {     0,    968}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -460,      0,    307}, 0, {     0,    -10}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   461,      0,   -306}, 0, {   990,    968}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   461,    102,   -306}, 0, {   990,    968}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -460,    102,   -306}, 0, {   990,    -10}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -460,    102,    307}, 0, {     0,    -10}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   461,    102,    307}, 0, {     0,    968}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07013DE8 - 0x07013E68\nstatic const Vtx bits_seg7_vertex_07013DE8[] = {\n    {{{  -460,      0,    307}, 0, {     0,    -10}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -460,    102,   -306}, 0, {   990,    -10}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -460,      0,   -306}, 0, {   990,    -10}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -460,    102,    307}, 0, {     0,    -10}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   461,    102,   -306}, 0, {   990,    968}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   461,      0,    307}, 0, {     0,    968}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   461,      0,   -306}, 0, {   990,    968}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   461,    102,    307}, 0, {     0,    968}, {0x96, 0x96, 0x96, 0xff}}},\n};\n\n// 0x07013E68 - 0x07013EF8\nstatic const Gfx bits_seg7_dl_07013E68[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bits_seg7_texture_07002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_07013CE8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_07013DE8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07013EF8 - 0x07013F68\nconst Gfx bits_seg7_dl_07013EF8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bits_seg7_dl_07013E68),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/26/collision.inc.c",
    "content": "// 0x0701ADD8 - 0x0701AE5C\nconst Collision bits_seg7_collision_0701ADD8[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(307, 102, 819),\n    COL_VERTEX(307, 0, -767),\n    COL_VERTEX(307, 102, -818),\n    COL_VERTEX(-306, 102, -818),\n    COL_VERTEX(-306, 0, -767),\n    COL_VERTEX(-306, 0, 768),\n    COL_VERTEX(-306, 102, 819),\n    COL_VERTEX(307, 0, 768),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(2, 4, 3),\n    COL_TRI(2, 1, 4),\n    COL_TRI(5, 4, 1),\n    COL_TRI(3, 4, 5),\n    COL_TRI(0, 3, 6),\n    COL_TRI(3, 5, 6),\n    COL_TRI(0, 7, 1),\n    COL_TRI(5, 1, 7),\n    COL_TRI(6, 5, 7),\n    COL_TRI(6, 7, 0),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/26/geo.inc.c",
    "content": "// 0x0E000670\nconst GeoLayout bits_geo_000670[] = {\n    GEO_CULLING_RADIUS(1100),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bits_seg7_dl_07014178),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/26/model.inc.c",
    "content": "// 0x07013F68 - 0x07014068\nstatic const Vtx bits_seg7_vertex_07013F68[] = {\n    {{{   307,    102,   -818}, 0, {     0,  -2076}, {0xbb, 0x73, 0x84, 0xff}}},\n    {{{  -306,      0,   -767}, 0, {   480,    990}, {0xbb, 0x73, 0x84, 0xff}}},\n    {{{  -306,    102,   -818}, 0, {     0,    990}, {0xbb, 0x73, 0x84, 0xff}}},\n    {{{   307,      0,   -767}, 0, {   478,  -2076}, {0xbb, 0x73, 0x84, 0xff}}},\n    {{{  -306,    102,    819}, 0, {     0,    990}, {0xbb, 0x73, 0x84, 0xff}}},\n    {{{  -306,      0,    768}, 0, {   480,    990}, {0xbb, 0x73, 0x84, 0xff}}},\n    {{{   307,      0,    768}, 0, {   478,  -2076}, {0xbb, 0x73, 0x84, 0xff}}},\n    {{{   307,    102,    819}, 0, {     0,  -2076}, {0xbb, 0x73, 0x84, 0xff}}},\n    {{{  -306,    102,   -818}, 0, {   990,    990}, {0x7c, 0x56, 0x6a, 0xff}}},\n    {{{  -306,      0,    768}, 0, {   480,   9164}, {0x7c, 0x56, 0x6a, 0xff}}},\n    {{{  -306,    102,    819}, 0, {   990,   9164}, {0x7c, 0x56, 0x6a, 0xff}}},\n    {{{  -306,      0,   -767}, 0, {   478,    990}, {0x7c, 0x56, 0x6a, 0xff}}},\n    {{{   307,    102,    819}, 0, {   990,   9164}, {0x7c, 0x56, 0x6a, 0xff}}},\n    {{{   307,      0,    768}, 0, {   480,   9164}, {0x7c, 0x56, 0x6a, 0xff}}},\n    {{{   307,      0,   -767}, 0, {   478,    990}, {0x7c, 0x56, 0x6a, 0xff}}},\n    {{{   307,    102,   -818}, 0, {   990,    990}, {0x7c, 0x56, 0x6a, 0xff}}},\n};\n\n// 0x07014068 - 0x070140E8\nstatic const Vtx bits_seg7_vertex_07014068[] = {\n    {{{  -306,      0,    768}, 0, {     0,    990}, {0x5e, 0x3c, 0x45, 0xff}}},\n    {{{   307,      0,   -767}, 0, {  1500,   5076}, {0x5e, 0x3c, 0x45, 0xff}}},\n    {{{   307,      0,    768}, 0, {  1502,    990}, {0x5e, 0x3c, 0x45, 0xff}}},\n    {{{  -306,      0,   -767}, 0, {     0,   5076}, {0x5e, 0x3c, 0x45, 0xff}}},\n    {{{   307,    102,    819}, 0, {  1502,    990}, {0xff, 0xcc, 0x65, 0xff}}},\n    {{{   307,    102,   -818}, 0, {  1502,   5076}, {0xff, 0xcc, 0x65, 0xff}}},\n    {{{  -306,    102,   -818}, 0, {     0,   5076}, {0xff, 0xcc, 0x65, 0xff}}},\n    {{{  -306,    102,    819}, 0, {     0,    990}, {0xff, 0xcc, 0x65, 0xff}}},\n};\n\n// 0x070140E8 - 0x07014178\nstatic const Gfx bits_seg7_dl_070140E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_07013F68, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_07014068, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07014178 - 0x070141E8\nconst Gfx bits_seg7_dl_07014178[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bits_seg7_dl_070140E8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/27/collision.inc.c",
    "content": "// 0x0701AE5C - 0x0701B0D2\nconst Collision bits_seg7_collision_0701AE5C[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x24),\n    COL_VERTEX(614, 51, 216),\n    COL_VERTEX(819, 51, 216),\n    COL_VERTEX(307, 51, 779),\n    COL_VERTEX(614, 205, 216),\n    COL_VERTEX(819, 205, 216),\n    COL_VERTEX(973, 205, -193),\n    COL_VERTEX(973, 51, -193),\n    COL_VERTEX(1382, 51, -193),\n    COL_VERTEX(1382, 51, 216),\n    COL_VERTEX(1024, 51, 779),\n    COL_VERTEX(1024, 205, 779),\n    COL_VERTEX(1382, 205, -193),\n    COL_VERTEX(-1381, 205, -193),\n    COL_VERTEX(-972, 51, -193),\n    COL_VERTEX(-1381, 51, 216),\n    COL_VERTEX(-818, 205, 216),\n    COL_VERTEX(-972, 205, -193),\n    COL_VERTEX(-613, 205, 216),\n    COL_VERTEX(-1381, 205, 216),\n    COL_VERTEX(-1023, 205, 779),\n    COL_VERTEX(-101, 205, 164),\n    COL_VERTEX(-306, 205, 779),\n    COL_VERTEX(307, 205, 779),\n    COL_VERTEX(102, 205, 164),\n    COL_VERTEX(1382, 205, 216),\n    COL_VERTEX(307, 205, -551),\n    COL_VERTEX(307, 51, -551),\n    COL_VERTEX(-306, 205, -551),\n    COL_VERTEX(-613, 51, 216),\n    COL_VERTEX(-1023, 51, 779),\n    COL_VERTEX(102, 51, 164),\n    COL_VERTEX(-101, 51, 164),\n    COL_VERTEX(-1381, 51, -193),\n    COL_VERTEX(-818, 51, 216),\n    COL_VERTEX(-306, 51, 779),\n    COL_VERTEX(-306, 51, -551),\n    COL_TRI_INIT(SURFACE_DEFAULT, 67),\n    COL_TRI(0, 1, 2),\n    COL_TRI(3, 4, 1),\n    COL_TRI(3, 1, 0),\n    COL_TRI(1, 4, 5),\n    COL_TRI(1, 5, 6),\n    COL_TRI(1, 6, 7),\n    COL_TRI(1, 7, 8),\n    COL_TRI(1, 8, 9),\n    COL_TRI(1, 9, 2),\n    COL_TRI(10, 5, 4),\n    COL_TRI(10, 4, 3),\n    COL_TRI(10, 11, 5),\n    COL_TRI(5, 7, 6),\n    COL_TRI(12, 13, 32),\n    COL_TRI(12, 16, 13),\n    COL_TRI(13, 16, 15),\n    COL_TRI(13, 15, 33),\n    COL_TRI(14, 13, 33),\n    COL_TRI(14, 32, 13),\n    COL_TRI(15, 16, 19),\n    COL_TRI(16, 18, 19),\n    COL_TRI(16, 12, 18),\n    COL_TRI(12, 32, 14),\n    COL_TRI(12, 14, 18),\n    COL_TRI(15, 17, 28),\n    COL_TRI(15, 28, 33),\n    COL_TRI(17, 15, 19),\n    COL_TRI(18, 14, 29),\n    COL_TRI(19, 18, 29),\n    COL_TRI(19, 21, 20),\n    COL_TRI(17, 19, 20),\n    COL_TRI(20, 21, 34),\n    COL_TRI(21, 19, 29),\n    COL_TRI(21, 29, 34),\n    COL_TRI(20, 34, 31),\n    COL_TRI(20, 23, 27),\n    COL_TRI(20, 27, 17),\n    COL_TRI(22, 23, 30),\n    COL_TRI(23, 20, 31),\n    COL_TRI(23, 31, 30),\n    COL_TRI(23, 10, 3),\n    COL_TRI(23, 3, 27),\n    COL_TRI(23, 22, 10),\n    COL_TRI(22, 30, 2),\n    COL_TRI(7, 24, 8),\n    COL_TRI(24, 10, 9),\n    COL_TRI(10, 22, 2),\n    COL_TRI(10, 2, 9),\n    COL_TRI(10, 24, 11),\n    COL_TRI(24, 9, 8),\n    COL_TRI(7, 11, 24),\n    COL_TRI(3, 25, 27),\n    COL_TRI(3, 26, 25),\n    COL_TRI(3, 0, 26),\n    COL_TRI(27, 25, 26),\n    COL_TRI(27, 26, 35),\n    COL_TRI(27, 35, 28),\n    COL_TRI(27, 28, 17),\n    COL_TRI(28, 35, 26),\n    COL_TRI(29, 28, 26),\n    COL_TRI(29, 14, 28),\n    COL_TRI(0, 2, 30),\n    COL_TRI(26, 0, 30),\n    COL_TRI(31, 29, 26),\n    COL_TRI(26, 30, 31),\n    COL_TRI(31, 34, 29),\n    COL_TRI(5, 11, 7),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/27/geo.inc.c",
    "content": "// 0x0E000688\nconst GeoLayout bits_geo_000688[] = {\n    GEO_CULLING_RADIUS(1900),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bits_seg7_dl_07014C28),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/27/model.inc.c",
    "content": "// 0x070141E8 - 0x070142E8\nstatic const Vtx bits_seg7_vertex_070141E8[] = {\n    {{{   102,    205,    164}, 0, {  2268,   2394}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{   307,    205,    779}, 0, {  3290,   1882}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{  1024,    205,    779}, 0, {  4184,   2776}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{  -818,    205,    216}, 0, {  1182,   1180}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{  -972,    205,   -193}, 0, {   478,   1500}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{ -1023,    205,    779}, 0, {  1628,    224}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{ -1381,    205,   -193}, 0, {     0,    990}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{ -1381,    205,    216}, 0, {   478,    480}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{  -613,    205,    216}, 0, {  1438,   1436}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{  -101,    205,    164}, 0, {  2012,   2138}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{  -306,    205,    779}, 0, {  2522,   1116}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{  -306,    205,   -551}, 0, {   862,   2776}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{   614,    205,    216}, 0, {  2970,   2968}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{   307,    205,   -551}, 0, {  1628,   3544}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{   819,    205,    216}, 0, {  3226,   3224}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{   973,    205,   -193}, 0, {  2906,   3926}, {0xb1, 0xbf, 0xfa, 0xff}}},\n};\n\n// 0x070142E8 - 0x070143D8\nstatic const Vtx bits_seg7_vertex_070142E8[] = {\n    {{{  1024,    205,    779}, 0, {  4184,   2776}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{  1382,    205,   -193}, 0, {  3418,   4438}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{   973,    205,   -193}, 0, {  2906,   3926}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{  1382,    205,    216}, 0, {  3928,   3926}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{ -1023,     51,    779}, 0, {  1628,    224}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{ -1381,     51,    216}, 0, {   478,    480}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{  -613,     51,    216}, 0, {  1438,   1436}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{  -972,     51,   -193}, 0, {   478,   1500}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{  -818,     51,    216}, 0, {  1182,   1180}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{ -1381,     51,   -193}, 0, {     0,    990}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{   307,     51,   -551}, 0, {  1628,   3544}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{  -306,     51,   -551}, 0, {   862,   2776}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{  -101,     51,    164}, 0, {  2012,   2138}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{   614,     51,    216}, 0, {  2970,   2968}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{   102,     51,    164}, 0, {  2268,   2394}, {0x41, 0x43, 0x8c, 0xff}}},\n};\n\n// 0x070143D8 - 0x070144B8\nstatic const Vtx bits_seg7_vertex_070143D8[] = {\n    {{{   819,     51,    216}, 0, {  3226,   3224}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{  1024,     51,    779}, 0, {  4184,   2776}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{   307,     51,    779}, 0, {  3290,   1882}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{  1382,     51,    216}, 0, {  3928,   3926}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{   614,     51,    216}, 0, {  2970,   2968}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{   102,     51,    164}, 0, {  2268,   2394}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{  -101,     51,    164}, 0, {  2012,   2138}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{  -306,     51,    779}, 0, {  2522,   1116}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{ -1023,     51,    779}, 0, {  1628,    224}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{   973,     51,   -193}, 0, {  2906,   3926}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{  1382,     51,   -193}, 0, {  3418,   4438}, {0x41, 0x43, 0x8c, 0xff}}},\n    {{{  -101,    205,    164}, 0, {  2012,   2138}, {0x80, 0x6c, 0xd1, 0xff}}},\n    {{{  -306,     51,    779}, 0, {  2524,   1116}, {0x80, 0x6c, 0xd1, 0xff}}},\n    {{{  -101,     51,    164}, 0, {  2012,   2138}, {0x80, 0x6c, 0xd1, 0xff}}},\n};\n\n// 0x070144B8 - 0x070145A8\nstatic const Vtx bits_seg7_vertex_070144B8[] = {\n    {{{  -306,    205,   -551}, 0, {   862,   2776}, {0x80, 0x6c, 0xd1, 0xff}}},\n    {{{  -613,     51,    216}, 0, {  1438,   1436}, {0x80, 0x6c, 0xd1, 0xff}}},\n    {{{  -613,    205,    216}, 0, {  1438,   1436}, {0x80, 0x6c, 0xd1, 0xff}}},\n    {{{  -306,     51,   -551}, 0, {   862,   2776}, {0x80, 0x6c, 0xd1, 0xff}}},\n    {{{   614,    205,    216}, 0, {  2970,   2968}, {0x80, 0x6c, 0xd1, 0xff}}},\n    {{{   307,     51,   -551}, 0, {  1628,   3544}, {0x80, 0x6c, 0xd1, 0xff}}},\n    {{{   307,    205,   -551}, 0, {  1628,   3544}, {0x80, 0x6c, 0xd1, 0xff}}},\n    {{{   614,     51,    216}, 0, {  2970,   2968}, {0x80, 0x6c, 0xd1, 0xff}}},\n    {{{  1382,    205,    216}, 0, {  3928,   3926}, {0x80, 0x6c, 0xd1, 0xff}}},\n    {{{  1024,    205,    779}, 0, {  4184,   2776}, {0x80, 0x6c, 0xd1, 0xff}}},\n    {{{  1024,     51,    779}, 0, {  4184,   2776}, {0x80, 0x6c, 0xd1, 0xff}}},\n    {{{  1382,     51,    216}, 0, {  3928,   3926}, {0x80, 0x6c, 0xd1, 0xff}}},\n    {{{   307,    205,    779}, 0, {  3290,   1882}, {0x80, 0x6c, 0xd1, 0xff}}},\n    {{{   102,    205,    164}, 0, {  2268,   2394}, {0x80, 0x6c, 0xd1, 0xff}}},\n    {{{   102,     51,    164}, 0, {  2268,   2394}, {0x80, 0x6c, 0xd1, 0xff}}},\n};\n\n// 0x070145A8 - 0x070146A8\nstatic const Vtx bits_seg7_vertex_070145A8[] = {\n    {{{  -101,    205,    164}, 0, {  2012,   2138}, {0x80, 0x6c, 0xd1, 0xff}}},\n    {{{  -306,    205,    779}, 0, {  2522,   1116}, {0x80, 0x6c, 0xd1, 0xff}}},\n    {{{  -306,     51,    779}, 0, {  2524,   1116}, {0x80, 0x6c, 0xd1, 0xff}}},\n    {{{ -1381,    205,    216}, 0, {   478,    480}, {0x80, 0x6c, 0xd1, 0xff}}},\n    {{{ -1381,     51,    216}, 0, {   478,    480}, {0x80, 0x6c, 0xd1, 0xff}}},\n    {{{ -1023,     51,    779}, 0, {  1628,    224}, {0x80, 0x6c, 0xd1, 0xff}}},\n    {{{ -1023,    205,    779}, 0, {  1628,    224}, {0x80, 0x6c, 0xd1, 0xff}}},\n    {{{   307,    205,    779}, 0, {  3290,   1882}, {0x80, 0x6c, 0xd1, 0xff}}},\n    {{{   102,     51,    164}, 0, {  2268,   2394}, {0x80, 0x6c, 0xd1, 0xff}}},\n    {{{   307,     51,    779}, 0, {  3290,   1882}, {0x80, 0x6c, 0xd1, 0xff}}},\n    {{{ -1381,    205,   -193}, 0, {     0,    990}, {0x8e, 0x79, 0xe5, 0xff}}},\n    {{{ -1381,     51,    216}, 0, {   478,    480}, {0x8e, 0x79, 0xe5, 0xff}}},\n    {{{ -1381,    205,    216}, 0, {   478,    480}, {0x8e, 0x79, 0xe5, 0xff}}},\n    {{{   819,     51,    216}, 0, {  3226,   3224}, {0x8e, 0x79, 0xe5, 0xff}}},\n    {{{   819,    205,    216}, 0, {  3226,   3224}, {0x8e, 0x79, 0xe5, 0xff}}},\n    {{{   973,    205,   -193}, 0, {  2906,   3926}, {0x8e, 0x79, 0xe5, 0xff}}},\n};\n\n// 0x070146A8 - 0x07014788\nstatic const Vtx bits_seg7_vertex_070146A8[] = {\n    {{{   819,     51,    216}, 0, {  3226,   3224}, {0x8e, 0x79, 0xe5, 0xff}}},\n    {{{   973,    205,   -193}, 0, {  2906,   3926}, {0x8e, 0x79, 0xe5, 0xff}}},\n    {{{   973,     51,   -193}, 0, {  2906,   3926}, {0x8e, 0x79, 0xe5, 0xff}}},\n    {{{  -972,     51,   -193}, 0, {   478,   1500}, {0x8e, 0x79, 0xe5, 0xff}}},\n    {{{  -972,    205,   -193}, 0, {   478,   1500}, {0x8e, 0x79, 0xe5, 0xff}}},\n    {{{  -818,    205,    216}, 0, {  1182,   1180}, {0x8e, 0x79, 0xe5, 0xff}}},\n    {{{  -818,     51,    216}, 0, {  1182,   1180}, {0x8e, 0x79, 0xe5, 0xff}}},\n    {{{  1382,     51,   -193}, 0, {  3418,   4438}, {0x8e, 0x79, 0xe5, 0xff}}},\n    {{{  1382,    205,   -193}, 0, {  3418,   4438}, {0x8e, 0x79, 0xe5, 0xff}}},\n    {{{  1382,    205,    216}, 0, {  3928,   3926}, {0x8e, 0x79, 0xe5, 0xff}}},\n    {{{  1382,     51,    216}, 0, {  3928,   3926}, {0x8e, 0x79, 0xe5, 0xff}}},\n    {{{ -1381,    205,   -193}, 0, {     0,    990}, {0x8e, 0x79, 0xe5, 0xff}}},\n    {{{ -1381,     51,   -193}, 0, {     0,    990}, {0x8e, 0x79, 0xe5, 0xff}}},\n    {{{ -1381,     51,    216}, 0, {   478,    480}, {0x8e, 0x79, 0xe5, 0xff}}},\n};\n\n// 0x07014788 - 0x07014878\nstatic const Vtx bits_seg7_vertex_07014788[] = {\n    {{{  -306,    205,   -551}, 0, {   862,   2776}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{   307,    205,   -551}, 0, {  1628,   3544}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{   307,     51,   -551}, 0, {  1628,   3544}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{  -818,    205,    216}, 0, {  1182,   1180}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{  -613,    205,    216}, 0, {  1438,   1436}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{  -613,     51,    216}, 0, {  1438,   1436}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{  -818,     51,    216}, 0, {  1182,   1180}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{   614,    205,    216}, 0, {  2970,   2968}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{   819,    205,    216}, 0, {  3226,   3224}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{   819,     51,    216}, 0, {  3226,   3224}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{   614,     51,    216}, 0, {  2970,   2968}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{ -1381,    205,   -193}, 0, {     0,    990}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{  -972,    205,   -193}, 0, {   478,   1500}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{  -972,     51,   -193}, 0, {   478,   1500}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{ -1381,     51,   -193}, 0, {     0,    990}, {0x72, 0x58, 0xae, 0xff}}},\n};\n\n// 0x07014878 - 0x07014968\nstatic const Vtx bits_seg7_vertex_07014878[] = {\n    {{{   102,    205,    164}, 0, {  2268,   2394}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{  -101,    205,    164}, 0, {  2012,   2138}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{  -101,     51,    164}, 0, {  2012,   2138}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{  -306,    205,   -551}, 0, {   862,   2776}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{   307,     51,   -551}, 0, {  1628,   3544}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{  -306,     51,   -551}, 0, {   862,   2776}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{   973,    205,   -193}, 0, {  2906,   3926}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{  1382,    205,   -193}, 0, {  3418,   4438}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{  1382,     51,   -193}, 0, {  3418,   4438}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{   973,     51,   -193}, 0, {  2906,   3926}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{  1024,    205,    779}, 0, {  4184,   2776}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{   307,     51,    779}, 0, {  3290,   1882}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{  1024,     51,    779}, 0, {  4184,   2776}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{   307,    205,    779}, 0, {  3290,   1882}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{   102,     51,    164}, 0, {  2268,   2394}, {0x72, 0x58, 0xae, 0xff}}},\n};\n\n// 0x07014968 - 0x070149A8\nstatic const Vtx bits_seg7_vertex_07014968[] = {\n    {{{  -306,    205,    779}, 0, {  2522,   1116}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{ -1023,    205,    779}, 0, {  1628,    224}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{ -1023,     51,    779}, 0, {  1628,    224}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{  -306,     51,    779}, 0, {  2522,   1116}, {0x72, 0x58, 0xae, 0xff}}},\n};\n\n// 0x070149A8 - 0x07014C28\nstatic const Gfx bits_seg7_dl_070149A8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_070141E8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  5,  9, 0x0,  8,  3,  5, 0x0),\n    gsSP2Triangles( 5, 10,  9, 0x0,  9,  0, 11, 0x0),\n    gsSP2Triangles( 9, 11,  8, 0x0,  0,  2, 12, 0x0),\n    gsSP2Triangles( 0, 12, 11, 0x0, 12, 13, 11, 0x0),\n    gsSP2Triangles( 2, 14, 12, 0x0,  2, 15, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_070142E8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 5,  9,  7, 0x0,  4,  6, 10, 0x0),\n    gsSP2Triangles( 6, 11, 10, 0x0, 12,  4, 10, 0x0),\n    gsSP2Triangles(10, 13, 14, 0x0, 10, 14, 12, 0x0),\n    gsSPVertex(bits_seg7_vertex_070143D8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  0,  2, 0x0,  4,  2,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  0,  9, 10, 0x0),\n    gsSP2Triangles( 0, 10,  3, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_070144B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_070145A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_070146A8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_07014788, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_07014878, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_07014968, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07014C28 - 0x07014C98\nconst Gfx bits_seg7_dl_07014C28[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bits_seg7_dl_070149A8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/28/collision.inc.c",
    "content": "// 0x0701B0D4 - 0x0701B26C\nconst Collision bits_seg7_collision_0701B0D4[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x1C),\n    COL_VERTEX(-409, 512, 307),\n    COL_VERTEX(-716, 512, 307),\n    COL_VERTEX(-716, 256, 307),\n    COL_VERTEX(-716, 512, -306),\n    COL_VERTEX(-716, 256, -306),\n    COL_VERTEX(-409, 512, -306),\n    COL_VERTEX(-409, 768, -306),\n    COL_VERTEX(-101, 768, -306),\n    COL_VERTEX(-409, 768, 307),\n    COL_VERTEX(-101, 768, 307),\n    COL_VERTEX(-1023, 256, 307),\n    COL_VERTEX(-1023, 0, 307),\n    COL_VERTEX(512, 1536, 307),\n    COL_VERTEX(819, 1536, 307),\n    COL_VERTEX(512, 1280, -306),\n    COL_VERTEX(205, 1280, 307),\n    COL_VERTEX(205, 1024, -306),\n    COL_VERTEX(512, 1280, 307),\n    COL_VERTEX(-101, 1024, 307),\n    COL_VERTEX(205, 1024, 307),\n    COL_VERTEX(-1023, 0, -306),\n    COL_VERTEX(-1330, 0, -306),\n    COL_VERTEX(-1330, 0, 307),\n    COL_VERTEX(512, 1536, -306),\n    COL_VERTEX(819, 1536, -306),\n    COL_VERTEX(-1023, 256, -306),\n    COL_VERTEX(205, 1280, -306),\n    COL_VERTEX(-101, 1024, -306),\n    COL_TRI_INIT(SURFACE_DEFAULT, 38),\n    COL_TRI(0, 1, 2),\n    COL_TRI(2, 1, 3),\n    COL_TRI(2, 3, 4),\n    COL_TRI(5, 3, 1),\n    COL_TRI(5, 1, 0),\n    COL_TRI(5, 6, 7),\n    COL_TRI(8, 6, 5),\n    COL_TRI(8, 5, 0),\n    COL_TRI(4, 3, 5),\n    COL_TRI(8, 0, 9),\n    COL_TRI(9, 7, 6),\n    COL_TRI(9, 6, 8),\n    COL_TRI(10, 20, 11),\n    COL_TRI(10, 11, 2),\n    COL_TRI(11, 20, 21),\n    COL_TRI(11, 21, 22),\n    COL_TRI(12, 17, 13),\n    COL_TRI(12, 23, 14),\n    COL_TRI(12, 14, 17),\n    COL_TRI(13, 23, 12),\n    COL_TRI(13, 24, 23),\n    COL_TRI(14, 23, 24),\n    COL_TRI(15, 26, 16),\n    COL_TRI(15, 16, 19),\n    COL_TRI(16, 26, 14),\n    COL_TRI(17, 14, 26),\n    COL_TRI(17, 26, 15),\n    COL_TRI(15, 19, 17),\n    COL_TRI(18, 9, 19),\n    COL_TRI(19, 16, 27),\n    COL_TRI(19, 27, 18),\n    COL_TRI(18, 7, 9),\n    COL_TRI(7, 27, 16),\n    COL_TRI(18, 27, 7),\n    COL_TRI(10, 25, 20),\n    COL_TRI(20, 25, 4),\n    COL_TRI(2, 25, 10),\n    COL_TRI(2, 4, 25),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/28/geo.inc.c",
    "content": "// 0x0E0006A0\nconst GeoLayout bits_geo_0006A0[] = {\n    GEO_CULLING_RADIUS(2100),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bits_seg7_dl_070153C0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/28/model.inc.c",
    "content": "// 0x07014C98 - 0x07014CD8\nstatic const Vtx bits_seg7_vertex_07014C98[] = {\n    {{{ -1023,      0,    307}, 0, {   990,      0}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1330,      0,   -306}, 0, {  1502,   2522}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1330,      0,    307}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1023,      0,   -306}, 0, {  2524,   1500}, {0xc8, 0xc8, 0xc8, 0xff}}},\n};\n\n// 0x07014CD8 - 0x07014DD8\nstatic const Vtx bits_seg7_vertex_07014CD8[] = {\n    {{{ -1023,      0,   -306}, 0, {    32,    930}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{ -1023,    256,   -306}, 0, {    32,    930}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{  -716,    256,   -306}, 0, {    32,     28}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{ -1023,    256,    307}, 0, {  1948,    930}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{ -1023,      0,    307}, 0, {  1948,    930}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{  -716,    256,    307}, 0, {  1948,     28}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{ -1023,    256,    307}, 0, {  1948,    930}, {0xdf, 0xdf, 0x1f, 0xff}}},\n    {{{ -1023,      0,   -306}, 0, {    32,    930}, {0xdf, 0xdf, 0x1f, 0xff}}},\n    {{{ -1023,      0,    307}, 0, {  1948,    930}, {0xdf, 0xdf, 0x1f, 0xff}}},\n    {{{ -1023,    256,   -306}, 0, {    32,    930}, {0xdf, 0xdf, 0x1f, 0xff}}},\n    {{{  -716,    256,   -306}, 0, {    32,    930}, {0xaa, 0xbf, 0x3f, 0xff}}},\n    {{{  -716,    512,   -306}, 0, {    32,    930}, {0xaa, 0xbf, 0x3f, 0xff}}},\n    {{{  -409,    512,   -306}, 0, {    32,     28}, {0xaa, 0xbf, 0x3f, 0xff}}},\n    {{{  -409,    512,    307}, 0, {  1948,     28}, {0xaa, 0xbf, 0x3f, 0xff}}},\n    {{{  -716,    512,    307}, 0, {  1948,    930}, {0xaa, 0xbf, 0x3f, 0xff}}},\n    {{{  -716,    256,    307}, 0, {  1948,    930}, {0xaa, 0xbf, 0x3f, 0xff}}},\n};\n\n// 0x07014DD8 - 0x07014EC8\nstatic const Vtx bits_seg7_vertex_07014DD8[] = {\n    {{{  -716,    256,    307}, 0, {  1948,    930}, {0xbf, 0xdf, 0x1f, 0xff}}},\n    {{{  -716,    512,    307}, 0, {  1948,    930}, {0xbf, 0xdf, 0x1f, 0xff}}},\n    {{{  -716,    512,   -306}, 0, {    32,    930}, {0xbf, 0xdf, 0x1f, 0xff}}},\n    {{{  -716,    256,   -306}, 0, {    32,    930}, {0xbf, 0xdf, 0x1f, 0xff}}},\n    {{{  -716,    256,    307}, 0, {  1948,     28}, {0xd4, 0xff, 0x00, 0xff}}},\n    {{{ -1023,    256,   -306}, 0, {    32,    930}, {0xd4, 0xff, 0x00, 0xff}}},\n    {{{ -1023,    256,    307}, 0, {  1948,    930}, {0xd4, 0xff, 0x00, 0xff}}},\n    {{{  -716,    256,   -306}, 0, {    32,     28}, {0xd4, 0xff, 0x00, 0xff}}},\n    {{{  -409,    512,   -306}, 0, {    32,    930}, {0x94, 0xbf, 0x3f, 0xff}}},\n    {{{  -409,    768,   -306}, 0, {    32,    930}, {0x94, 0xbf, 0x3f, 0xff}}},\n    {{{  -101,    768,   -306}, 0, {    32,     28}, {0x94, 0xbf, 0x3f, 0xff}}},\n    {{{  -409,    512,   -306}, 0, {    32,     28}, {0xaa, 0xff, 0x00, 0xff}}},\n    {{{  -716,    512,    307}, 0, {  1948,    930}, {0xaa, 0xff, 0x00, 0xff}}},\n    {{{  -409,    512,    307}, 0, {  1948,     28}, {0xaa, 0xff, 0x00, 0xff}}},\n    {{{  -716,    512,   -306}, 0, {    32,    930}, {0xaa, 0xff, 0x00, 0xff}}},\n};\n\n// 0x07014EC8 - 0x07014FA8\nstatic const Vtx bits_seg7_vertex_07014EC8[] = {\n    {{{  -409,    768,    307}, 0, {  1948,    930}, {0x7f, 0xbf, 0x3f, 0xff}}},\n    {{{  -409,    512,    307}, 0, {  1948,    930}, {0x7f, 0xbf, 0x3f, 0xff}}},\n    {{{  -101,    768,    307}, 0, {  1948,     28}, {0x7f, 0xbf, 0x3f, 0xff}}},\n    {{{  -409,    768,    307}, 0, {  1948,    930}, {0x7f, 0xdf, 0x1f, 0xff}}},\n    {{{  -409,    768,   -306}, 0, {    32,    930}, {0x7f, 0xdf, 0x1f, 0xff}}},\n    {{{  -409,    512,   -306}, 0, {    32,    930}, {0x7f, 0xdf, 0x1f, 0xff}}},\n    {{{  -409,    512,    307}, 0, {  1948,    930}, {0x7f, 0xdf, 0x1f, 0xff}}},\n    {{{  -101,    768,    307}, 0, {  1948,     28}, {0x7f, 0xff, 0x00, 0xff}}},\n    {{{  -409,    768,   -306}, 0, {    32,    930}, {0x7f, 0xff, 0x00, 0xff}}},\n    {{{  -409,    768,    307}, 0, {  1948,    930}, {0x7f, 0xff, 0x00, 0xff}}},\n    {{{  -101,    768,   -306}, 0, {    32,     28}, {0x7f, 0xff, 0x00, 0xff}}},\n    {{{  -101,    768,   -306}, 0, {    32,    930}, {0x6a, 0xbf, 0x3f, 0xff}}},\n    {{{  -101,   1024,   -306}, 0, {    32,    930}, {0x6a, 0xbf, 0x3f, 0xff}}},\n    {{{   205,   1024,   -306}, 0, {    32,     28}, {0x6a, 0xbf, 0x3f, 0xff}}},\n};\n\n// 0x07014FA8 - 0x07015088\nstatic const Vtx bits_seg7_vertex_07014FA8[] = {\n    {{{  -101,   1024,    307}, 0, {  1948,    930}, {0x6a, 0xbf, 0x3f, 0xff}}},\n    {{{  -101,    768,    307}, 0, {  1948,    930}, {0x6a, 0xbf, 0x3f, 0xff}}},\n    {{{   205,   1024,    307}, 0, {  1948,     28}, {0x6a, 0xbf, 0x3f, 0xff}}},\n    {{{  -101,   1024,    307}, 0, {  1948,    930}, {0x5f, 0xdf, 0x1f, 0xff}}},\n    {{{  -101,   1024,   -306}, 0, {    32,    930}, {0x5f, 0xdf, 0x1f, 0xff}}},\n    {{{  -101,    768,   -306}, 0, {    32,    930}, {0x5f, 0xdf, 0x1f, 0xff}}},\n    {{{  -101,    768,    307}, 0, {  1948,    930}, {0x5f, 0xdf, 0x1f, 0xff}}},\n    {{{   205,   1024,    307}, 0, {  1948,     28}, {0x2a, 0xff, 0x00, 0xff}}},\n    {{{   205,   1024,   -306}, 0, {    32,     28}, {0x2a, 0xff, 0x00, 0xff}}},\n    {{{  -101,   1024,   -306}, 0, {    32,    930}, {0x2a, 0xff, 0x00, 0xff}}},\n    {{{  -101,   1024,    307}, 0, {  1948,    930}, {0x2a, 0xff, 0x00, 0xff}}},\n    {{{   205,   1024,   -306}, 0, {    32,    930}, {0x3f, 0xbf, 0x55, 0xff}}},\n    {{{   205,   1280,   -306}, 0, {    32,    930}, {0x3f, 0xbf, 0x55, 0xff}}},\n    {{{   512,   1280,   -306}, 0, {    32,     28}, {0x3f, 0xbf, 0x55, 0xff}}},\n};\n\n// 0x07015088 - 0x07015168\nstatic const Vtx bits_seg7_vertex_07015088[] = {\n    {{{   205,   1280,    307}, 0, {  1948,    930}, {0x3f, 0xbf, 0x55, 0xff}}},\n    {{{   205,   1024,    307}, 0, {  1948,    930}, {0x3f, 0xbf, 0x55, 0xff}}},\n    {{{   512,   1280,    307}, 0, {  1948,     28}, {0x3f, 0xbf, 0x55, 0xff}}},\n    {{{   205,   1280,    307}, 0, {  1948,    930}, {0x1f, 0xdf, 0x3f, 0xff}}},\n    {{{   205,   1280,   -306}, 0, {    32,    930}, {0x1f, 0xdf, 0x3f, 0xff}}},\n    {{{   205,   1024,   -306}, 0, {    32,    930}, {0x1f, 0xdf, 0x3f, 0xff}}},\n    {{{   205,   1024,    307}, 0, {  1948,    930}, {0x1f, 0xdf, 0x3f, 0xff}}},\n    {{{   512,   1280,    307}, 0, {  1948,     28}, {0x00, 0xff, 0x55, 0xff}}},\n    {{{   512,   1280,   -306}, 0, {    32,     28}, {0x00, 0xff, 0x55, 0xff}}},\n    {{{   205,   1280,   -306}, 0, {    32,    930}, {0x00, 0xff, 0x55, 0xff}}},\n    {{{   205,   1280,    307}, 0, {  1948,    930}, {0x00, 0xff, 0x55, 0xff}}},\n    {{{   512,   1536,    307}, 0, {  1948,    930}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{   512,   1280,    307}, 0, {  1948,    930}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{   819,   1536,    307}, 0, {  1948,     28}, {0x3f, 0xbf, 0x7f, 0xff}}},\n};\n\n// 0x07015168 - 0x07015218\nstatic const Vtx bits_seg7_vertex_07015168[] = {\n    {{{   512,   1280,   -306}, 0, {    32,    930}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{   512,   1536,   -306}, 0, {    32,    930}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{   819,   1536,   -306}, 0, {    32,     28}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{   512,   1536,    307}, 0, {  1948,    930}, {0x1f, 0xdf, 0x7f, 0xff}}},\n    {{{   512,   1536,   -306}, 0, {    32,    930}, {0x1f, 0xdf, 0x7f, 0xff}}},\n    {{{   512,   1280,   -306}, 0, {    32,    930}, {0x1f, 0xdf, 0x7f, 0xff}}},\n    {{{   512,   1280,    307}, 0, {  1948,    930}, {0x1f, 0xdf, 0x7f, 0xff}}},\n    {{{   819,   1536,    307}, 0, {  1948,     28}, {0x00, 0xff, 0x7f, 0xff}}},\n    {{{   819,   1536,   -306}, 0, {    32,     28}, {0x00, 0xff, 0x7f, 0xff}}},\n    {{{   512,   1536,   -306}, 0, {    32,    930}, {0x00, 0xff, 0x7f, 0xff}}},\n    {{{   512,   1536,    307}, 0, {  1948,    930}, {0x00, 0xff, 0x7f, 0xff}}},\n};\n\n// 0x07015218 - 0x07015250\nstatic const Gfx bits_seg7_dl_07015218[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_07014C98, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07015250 - 0x070153C0\nstatic const Gfx bits_seg7_dl_07015250[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_07014CD8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_07014DD8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bits_seg7_vertex_07014EC8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_07014FA8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_07015088, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_07015168, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle( 7,  9, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070153C0 - 0x07015438\nconst Gfx bits_seg7_dl_070153C0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bits_seg7_dl_07015218),\n    gsSPDisplayList(bits_seg7_dl_07015250),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/29/collision.inc.c",
    "content": "// 0x0701B26C - 0x0701B404\nconst Collision bits_seg7_collision_0701B26C[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x1C),\n    COL_VERTEX(-409, 512, 307),\n    COL_VERTEX(-716, 471, 307),\n    COL_VERTEX(-716, 256, 307),\n    COL_VERTEX(-716, 471, -306),\n    COL_VERTEX(-716, 256, -306),\n    COL_VERTEX(-409, 512, -306),\n    COL_VERTEX(-409, 727, -306),\n    COL_VERTEX(-101, 768, -306),\n    COL_VERTEX(-409, 727, 307),\n    COL_VERTEX(-101, 768, 307),\n    COL_VERTEX(-1023, 215, 307),\n    COL_VERTEX(-1023, 0, 307),\n    COL_VERTEX(512, 1495, 307),\n    COL_VERTEX(819, 1536, 307),\n    COL_VERTEX(512, 1280, -306),\n    COL_VERTEX(205, 1239, 307),\n    COL_VERTEX(205, 1024, -306),\n    COL_VERTEX(512, 1280, 307),\n    COL_VERTEX(-101, 983, 307),\n    COL_VERTEX(205, 1024, 307),\n    COL_VERTEX(-1023, 0, -306),\n    COL_VERTEX(-1330, 0, -306),\n    COL_VERTEX(-1330, 0, 307),\n    COL_VERTEX(512, 1495, -306),\n    COL_VERTEX(819, 1536, -306),\n    COL_VERTEX(-1023, 215, -306),\n    COL_VERTEX(205, 1239, -306),\n    COL_VERTEX(-101, 983, -306),\n    COL_TRI_INIT(SURFACE_DEFAULT, 38),\n    COL_TRI(0, 1, 2),\n    COL_TRI(2, 1, 3),\n    COL_TRI(2, 3, 4),\n    COL_TRI(5, 3, 1),\n    COL_TRI(5, 1, 0),\n    COL_TRI(5, 6, 7),\n    COL_TRI(8, 6, 5),\n    COL_TRI(8, 5, 0),\n    COL_TRI(4, 3, 5),\n    COL_TRI(8, 0, 9),\n    COL_TRI(9, 7, 6),\n    COL_TRI(9, 6, 8),\n    COL_TRI(10, 20, 11),\n    COL_TRI(10, 11, 2),\n    COL_TRI(11, 20, 21),\n    COL_TRI(11, 21, 22),\n    COL_TRI(12, 17, 13),\n    COL_TRI(12, 23, 14),\n    COL_TRI(12, 14, 17),\n    COL_TRI(13, 23, 12),\n    COL_TRI(13, 24, 23),\n    COL_TRI(14, 23, 24),\n    COL_TRI(15, 26, 16),\n    COL_TRI(15, 16, 19),\n    COL_TRI(16, 26, 14),\n    COL_TRI(17, 14, 26),\n    COL_TRI(17, 26, 15),\n    COL_TRI(15, 19, 17),\n    COL_TRI(18, 9, 19),\n    COL_TRI(19, 16, 27),\n    COL_TRI(19, 27, 18),\n    COL_TRI(18, 7, 9),\n    COL_TRI(7, 27, 16),\n    COL_TRI(18, 27, 7),\n    COL_TRI(10, 25, 20),\n    COL_TRI(20, 25, 4),\n    COL_TRI(2, 25, 10),\n    COL_TRI(2, 4, 25),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/29/geo.inc.c",
    "content": "// 0x0E0006B8\nconst GeoLayout bits_geo_0006B8[] = {\n    GEO_CULLING_RADIUS(2100),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bits_seg7_dl_07015B60),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/29/model.inc.c",
    "content": "// 0x07015438 - 0x07015478\nstatic const Vtx bits_seg7_vertex_07015438[] = {\n    {{{ -1023,      0,    307}, 0, {   990,      0}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1330,      0,   -306}, 0, {  1502,   2522}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1330,      0,    307}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1023,      0,   -306}, 0, {  2524,   1500}, {0xc8, 0xc8, 0xc8, 0xff}}},\n};\n\n// 0x07015478 - 0x07015578\nstatic const Vtx bits_seg7_vertex_07015478[] = {\n    {{{ -1023,      0,   -306}, 0, {    32,    930}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{ -1023,    215,   -306}, 0, {    32,    930}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{  -716,    256,   -306}, 0, {    32,     28}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{ -1023,    215,    307}, 0, {  1948,    930}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{ -1023,      0,    307}, 0, {  1948,    930}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{  -716,    256,    307}, 0, {  1948,     28}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{ -1023,    215,    307}, 0, {  1948,    930}, {0xdf, 0xdf, 0x1f, 0xff}}},\n    {{{ -1023,      0,   -306}, 0, {    32,    930}, {0xdf, 0xdf, 0x1f, 0xff}}},\n    {{{ -1023,      0,    307}, 0, {  1948,    930}, {0xdf, 0xdf, 0x1f, 0xff}}},\n    {{{ -1023,    215,   -306}, 0, {    32,    930}, {0xdf, 0xdf, 0x1f, 0xff}}},\n    {{{  -716,    256,   -306}, 0, {    32,    930}, {0xaa, 0xbf, 0x3f, 0xff}}},\n    {{{  -716,    471,   -306}, 0, {    32,    930}, {0xaa, 0xbf, 0x3f, 0xff}}},\n    {{{  -409,    512,   -306}, 0, {    32,     28}, {0xaa, 0xbf, 0x3f, 0xff}}},\n    {{{  -409,    512,    307}, 0, {  1948,     28}, {0xaa, 0xbf, 0x3f, 0xff}}},\n    {{{  -716,    471,    307}, 0, {  1948,    930}, {0xaa, 0xbf, 0x3f, 0xff}}},\n    {{{  -716,    256,    307}, 0, {  1948,    930}, {0xaa, 0xbf, 0x3f, 0xff}}},\n};\n\n// 0x07015578 - 0x07015668\nstatic const Vtx bits_seg7_vertex_07015578[] = {\n    {{{  -716,    256,    307}, 0, {  1948,    930}, {0xbf, 0xdf, 0x1f, 0xff}}},\n    {{{  -716,    471,    307}, 0, {  1948,    930}, {0xbf, 0xdf, 0x1f, 0xff}}},\n    {{{  -716,    471,   -306}, 0, {    32,    930}, {0xbf, 0xdf, 0x1f, 0xff}}},\n    {{{  -716,    256,   -306}, 0, {    32,    930}, {0xbf, 0xdf, 0x1f, 0xff}}},\n    {{{  -716,    256,    307}, 0, {  1948,     28}, {0xd4, 0xff, 0x00, 0xff}}},\n    {{{ -1023,    215,   -306}, 0, {    32,    930}, {0xd4, 0xff, 0x00, 0xff}}},\n    {{{ -1023,    215,    307}, 0, {  1948,    930}, {0xd4, 0xff, 0x00, 0xff}}},\n    {{{  -716,    256,   -306}, 0, {    32,     28}, {0xd4, 0xff, 0x00, 0xff}}},\n    {{{  -409,    512,   -306}, 0, {    32,    930}, {0x94, 0xbf, 0x3f, 0xff}}},\n    {{{  -409,    727,   -306}, 0, {    32,    930}, {0x94, 0xbf, 0x3f, 0xff}}},\n    {{{  -101,    768,   -306}, 0, {    32,     28}, {0x94, 0xbf, 0x3f, 0xff}}},\n    {{{  -409,    512,   -306}, 0, {    32,     28}, {0xaa, 0xff, 0x00, 0xff}}},\n    {{{  -716,    471,    307}, 0, {  1948,    930}, {0xaa, 0xff, 0x00, 0xff}}},\n    {{{  -409,    512,    307}, 0, {  1948,     28}, {0xaa, 0xff, 0x00, 0xff}}},\n    {{{  -716,    471,   -306}, 0, {    32,    930}, {0xaa, 0xff, 0x00, 0xff}}},\n};\n\n// 0x07015668 - 0x07015748\nstatic const Vtx bits_seg7_vertex_07015668[] = {\n    {{{  -409,    727,    307}, 0, {  1948,    930}, {0x7f, 0xbf, 0x3f, 0xff}}},\n    {{{  -409,    512,    307}, 0, {  1948,    930}, {0x7f, 0xbf, 0x3f, 0xff}}},\n    {{{  -101,    768,    307}, 0, {  1948,     28}, {0x7f, 0xbf, 0x3f, 0xff}}},\n    {{{  -409,    727,    307}, 0, {  1948,    930}, {0x7f, 0xdf, 0x1f, 0xff}}},\n    {{{  -409,    727,   -306}, 0, {    32,    930}, {0x7f, 0xdf, 0x1f, 0xff}}},\n    {{{  -409,    512,   -306}, 0, {    32,    930}, {0x7f, 0xdf, 0x1f, 0xff}}},\n    {{{  -409,    512,    307}, 0, {  1948,    930}, {0x7f, 0xdf, 0x1f, 0xff}}},\n    {{{  -101,    768,    307}, 0, {  1948,     28}, {0x7f, 0xff, 0x00, 0xff}}},\n    {{{  -409,    727,   -306}, 0, {    32,    930}, {0x7f, 0xff, 0x00, 0xff}}},\n    {{{  -409,    727,    307}, 0, {  1948,    930}, {0x7f, 0xff, 0x00, 0xff}}},\n    {{{  -101,    768,   -306}, 0, {    32,     28}, {0x7f, 0xff, 0x00, 0xff}}},\n    {{{  -101,    768,   -306}, 0, {    32,    930}, {0x6a, 0xbf, 0x3f, 0xff}}},\n    {{{  -101,    983,   -306}, 0, {    32,    930}, {0x6a, 0xbf, 0x3f, 0xff}}},\n    {{{   205,   1024,   -306}, 0, {    32,     28}, {0x6a, 0xbf, 0x3f, 0xff}}},\n};\n\n// 0x07015748 - 0x07015828\nstatic const Vtx bits_seg7_vertex_07015748[] = {\n    {{{  -101,    983,    307}, 0, {  1948,    930}, {0x6a, 0xbf, 0x3f, 0xff}}},\n    {{{  -101,    768,    307}, 0, {  1948,    930}, {0x6a, 0xbf, 0x3f, 0xff}}},\n    {{{   205,   1024,    307}, 0, {  1948,     28}, {0x6a, 0xbf, 0x3f, 0xff}}},\n    {{{  -101,    983,    307}, 0, {  1948,    930}, {0x5f, 0xdf, 0x1f, 0xff}}},\n    {{{  -101,    983,   -306}, 0, {    32,    930}, {0x5f, 0xdf, 0x1f, 0xff}}},\n    {{{  -101,    768,   -306}, 0, {    32,    930}, {0x5f, 0xdf, 0x1f, 0xff}}},\n    {{{  -101,    768,    307}, 0, {  1948,    930}, {0x5f, 0xdf, 0x1f, 0xff}}},\n    {{{   205,   1024,    307}, 0, {  1948,     28}, {0x2a, 0xff, 0x00, 0xff}}},\n    {{{   205,   1024,   -306}, 0, {    32,     28}, {0x2a, 0xff, 0x00, 0xff}}},\n    {{{  -101,    983,   -306}, 0, {    32,    930}, {0x2a, 0xff, 0x00, 0xff}}},\n    {{{  -101,    983,    307}, 0, {  1948,    930}, {0x2a, 0xff, 0x00, 0xff}}},\n    {{{   205,   1024,   -306}, 0, {    32,    930}, {0x3f, 0xbf, 0x55, 0xff}}},\n    {{{   205,   1239,   -306}, 0, {    32,    930}, {0x3f, 0xbf, 0x55, 0xff}}},\n    {{{   512,   1280,   -306}, 0, {    32,     28}, {0x3f, 0xbf, 0x55, 0xff}}},\n};\n\n// 0x07015828 - 0x07015908\nstatic const Vtx bits_seg7_vertex_07015828[] = {\n    {{{   205,   1239,    307}, 0, {  1948,    930}, {0x3f, 0xbf, 0x55, 0xff}}},\n    {{{   205,   1024,    307}, 0, {  1948,    930}, {0x3f, 0xbf, 0x55, 0xff}}},\n    {{{   512,   1280,    307}, 0, {  1948,     28}, {0x3f, 0xbf, 0x55, 0xff}}},\n    {{{   205,   1239,    307}, 0, {  1948,    930}, {0x1f, 0xdf, 0x3f, 0xff}}},\n    {{{   205,   1239,   -306}, 0, {    32,    930}, {0x1f, 0xdf, 0x3f, 0xff}}},\n    {{{   205,   1024,   -306}, 0, {    32,    930}, {0x1f, 0xdf, 0x3f, 0xff}}},\n    {{{   205,   1024,    307}, 0, {  1948,    930}, {0x1f, 0xdf, 0x3f, 0xff}}},\n    {{{   512,   1280,    307}, 0, {  1948,     28}, {0x00, 0xff, 0x55, 0xff}}},\n    {{{   512,   1280,   -306}, 0, {    32,     28}, {0x00, 0xff, 0x55, 0xff}}},\n    {{{   205,   1239,   -306}, 0, {    32,    930}, {0x00, 0xff, 0x55, 0xff}}},\n    {{{   205,   1239,    307}, 0, {  1948,    930}, {0x00, 0xff, 0x55, 0xff}}},\n    {{{   512,   1495,    307}, 0, {  1948,    930}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{   512,   1280,    307}, 0, {  1948,    930}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{   819,   1536,    307}, 0, {  1948,     28}, {0x3f, 0xbf, 0x7f, 0xff}}},\n};\n\n// 0x07015908 - 0x070159B8\nstatic const Vtx bits_seg7_vertex_07015908[] = {\n    {{{   512,   1280,   -306}, 0, {    32,    930}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{   512,   1495,   -306}, 0, {    32,    930}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{   819,   1536,   -306}, 0, {    32,     28}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{   512,   1495,    307}, 0, {  1948,    930}, {0x1f, 0xdf, 0x7f, 0xff}}},\n    {{{   512,   1495,   -306}, 0, {    32,    930}, {0x1f, 0xdf, 0x7f, 0xff}}},\n    {{{   512,   1280,   -306}, 0, {    32,    930}, {0x1f, 0xdf, 0x7f, 0xff}}},\n    {{{   512,   1280,    307}, 0, {  1948,    930}, {0x1f, 0xdf, 0x7f, 0xff}}},\n    {{{   819,   1536,    307}, 0, {  1948,     28}, {0x00, 0xff, 0x7f, 0xff}}},\n    {{{   819,   1536,   -306}, 0, {    32,     28}, {0x00, 0xff, 0x7f, 0xff}}},\n    {{{   512,   1495,   -306}, 0, {    32,    930}, {0x00, 0xff, 0x7f, 0xff}}},\n    {{{   512,   1495,    307}, 0, {  1948,    930}, {0x00, 0xff, 0x7f, 0xff}}},\n};\n\n// 0x070159B8 - 0x070159F0\nstatic const Gfx bits_seg7_dl_070159B8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_07015438, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070159F0 - 0x07015B60\nstatic const Gfx bits_seg7_dl_070159F0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_07015478, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_07015578, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bits_seg7_vertex_07015668, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_07015748, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_07015828, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_07015908, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle( 7,  9, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07015B60 - 0x07015BD8\nconst Gfx bits_seg7_dl_07015B60[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bits_seg7_dl_070159B8),\n    gsSPDisplayList(bits_seg7_dl_070159F0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/3/geo.inc.c",
    "content": "// 0x0E000448\nconst GeoLayout bits_geo_000448[] = {\n    GEO_CULLING_RADIUS(3200),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bits_seg7_dl_070047F0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/3/model.inc.c",
    "content": "// 0x070036F8 - 0x070037F8\nstatic const Vtx bits_seg7_vertex_070036F8[] = {\n    {{{  1843,   -537,   -741}, 0, {   734,   1244}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{  2099,   -537,   -895}, 0, {   606,    606}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{  1894,   -537,   -895}, 0, {   990,    990}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{  2150,   -537,   -741}, 0, {   352,    862}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{  2714,   -383,    -25}, 0, {  7122,  -4632}, {0x79, 0x70, 0x97, 0xff}}},\n    {{{  2816,   -383,    384}, 0, {  6738,  -5270}, {0x79, 0x70, 0x97, 0xff}}},\n    {{{  2816,   -383,    -25}, 0, {  7250,  -4758}, {0x79, 0x70, 0x97, 0xff}}},\n    {{{  2714,   -383,    384}, 0, {  6610,  -5142}, {0x79, 0x70, 0x97, 0xff}}},\n    {{{ -2405,   -383,   -741}, 0, {  1628,   2648}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{  2816,   -383,   -537}, 0, {  7888,  -4120}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{  2406,   -383,   -741}, 0, {  7632,  -3354}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{ -2405,   -383,    589}, 0, {     0,    990}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{  2406,   -383,    589}, 0, {  5972,  -5014}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{ -2815,   -383,   -537}, 0, {   862,   2904}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{ -2815,   -383,    384}, 0, {  -286,   1754}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{  2714,   -383,    -25}, 0, {  7122,  -4632}, {0xb1, 0xbf, 0xfa, 0xff}}},\n};\n\n// 0x070037F8 - 0x070038F8\nstatic const Vtx bits_seg7_vertex_070037F8[] = {\n    {{{  2816,   -383,    -25}, 0, {  7250,  -4758}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{  2816,   -383,   -537}, 0, {  7888,  -4120}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{  2714,   -383,    -25}, 0, {  7122,  -4632}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{  2406,   -383,    589}, 0, {  5972,  -5014}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{  2714,   -383,    384}, 0, {  6610,  -5142}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{  2816,   -383,    384}, 0, {  6738,  -5270}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{  2150,   -537,   -741}, 0, {   352,    862}, {0x82, 0x72, 0xba, 0xff}}},\n    {{{  2150,   -588,   -741}, 0, {   352,    862}, {0x82, 0x72, 0xba, 0xff}}},\n    {{{  2099,   -588,   -895}, 0, {   606,    606}, {0x82, 0x72, 0xba, 0xff}}},\n    {{{ -2815,   -383,    384}, 0, {   224,   1244}, {0x82, 0x72, 0xba, 0xff}}},\n    {{{ -2815,   -383,   -537}, 0, {  1374,   2394}, {0x82, 0x72, 0xba, 0xff}}},\n    {{{ -2815,   -588,   -537}, 0, {  1118,   2648}, {0x82, 0x72, 0xba, 0xff}}},\n    {{{ -2815,   -588,    384}, 0, {     0,   1500}, {0x82, 0x72, 0xba, 0xff}}},\n    {{{  2816,   -588,    384}, 0, {     0,   1500}, {0x82, 0x72, 0xba, 0xff}}},\n    {{{  2816,   -383,   -537}, 0, {  1374,   2394}, {0x82, 0x72, 0xba, 0xff}}},\n    {{{  2816,   -383,    384}, 0, {   224,   1244}, {0x82, 0x72, 0xba, 0xff}}},\n};\n\n// 0x070038F8 - 0x070039D8\nstatic const Vtx bits_seg7_vertex_070038F8[] = {\n    {{{  2816,   -588,    384}, 0, {     0,   1500}, {0x82, 0x72, 0xba, 0xff}}},\n    {{{  2816,   -588,   -537}, 0, {  1118,   2648}, {0x82, 0x72, 0xba, 0xff}}},\n    {{{  2816,   -383,   -537}, 0, {  1374,   2394}, {0x82, 0x72, 0xba, 0xff}}},\n    {{{  1894,   -537,   -895}, 0, {   990,    990}, {0x82, 0x72, 0xba, 0xff}}},\n    {{{  1843,   -588,   -741}, 0, {   734,   1244}, {0x82, 0x72, 0xba, 0xff}}},\n    {{{  1843,   -537,   -741}, 0, {   734,   1244}, {0x82, 0x72, 0xba, 0xff}}},\n    {{{  1894,   -588,   -895}, 0, {   990,    990}, {0x82, 0x72, 0xba, 0xff}}},\n    {{{  2150,   -537,   -741}, 0, {   352,    862}, {0x82, 0x72, 0xba, 0xff}}},\n    {{{  2099,   -588,   -895}, 0, {   606,    606}, {0x82, 0x72, 0xba, 0xff}}},\n    {{{  2099,   -537,   -895}, 0, {   606,    606}, {0x82, 0x72, 0xba, 0xff}}},\n    {{{ -2405,   -588,    589}, 0, {  -286,    734}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{  2406,   -588,    589}, 0, {  5716,  -5270}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{  2406,   -383,    589}, 0, {  5972,  -5014}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{ -2405,   -383,    589}, 0, {     0,    990}, {0x72, 0x58, 0xae, 0xff}}},\n};\n\n// 0x070039D8 - 0x07003AC8\nstatic const Vtx bits_seg7_vertex_070039D8[] = {\n    {{{ -2405,   -383,   -741}, 0, {     0,    990}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{  2406,   -383,   -741}, 0, {  5972,  -5014}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{  2406,   -588,   -741}, 0, {  5716,  -5270}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{ -2405,   -588,   -741}, 0, {  -286,    734}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{  2099,   -588,   -895}, 0, {   606,    606}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{  1894,   -537,   -895}, 0, {   990,    990}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{  2099,   -537,   -895}, 0, {   606,    606}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{  1894,   -588,   -895}, 0, {   990,    990}, {0x72, 0x58, 0xae, 0xff}}},\n    {{{  2406,   -588,    589}, 0, {  5716,  -5270}, {0x7d, 0x61, 0xae, 0xff}}},\n    {{{  2816,   -588,    384}, 0, {  6228,  -5780}, {0x7d, 0x61, 0xae, 0xff}}},\n    {{{  2816,   -383,    384}, 0, {  6484,  -5526}, {0x7d, 0x61, 0xae, 0xff}}},\n    {{{ -2405,   -383,    589}, 0, {     0,    990}, {0x7d, 0x61, 0xae, 0xff}}},\n    {{{ -2815,   -588,    384}, 0, {  -796,   1244}, {0x7d, 0x61, 0xae, 0xff}}},\n    {{{ -2405,   -588,    589}, 0, {  -286,    734}, {0x7d, 0x61, 0xae, 0xff}}},\n    {{{ -2815,   -383,    384}, 0, {  -542,   1500}, {0x7d, 0x61, 0xae, 0xff}}},\n};\n\n// 0x07003AC8 - 0x07003BC8\nstatic const Vtx bits_seg7_vertex_07003AC8[] = {\n    {{{ -2405,   -588,   -741}, 0, {  -286,    734}, {0x7d, 0x61, 0xae, 0xff}}},\n    {{{ -2815,   -588,   -537}, 0, {  -796,   1244}, {0x7d, 0x61, 0xae, 0xff}}},\n    {{{ -2815,   -383,   -537}, 0, {  -542,   1500}, {0x7d, 0x61, 0xae, 0xff}}},\n    {{{ -2405,   -383,   -741}, 0, {     0,    990}, {0x7d, 0x61, 0xae, 0xff}}},\n    {{{  2406,   -383,   -741}, 0, {  5972,  -5014}, {0x7d, 0x61, 0xae, 0xff}}},\n    {{{  2816,   -588,   -537}, 0, {  6228,  -5780}, {0x7d, 0x61, 0xae, 0xff}}},\n    {{{  2406,   -588,   -741}, 0, {  5716,  -5270}, {0x7d, 0x61, 0xae, 0xff}}},\n    {{{  2816,   -383,   -537}, 0, {  6484,  -5526}, {0x7d, 0x61, 0xae, 0xff}}},\n    {{{  2406,   -588,    589}, 0, {  5716,  -5270}, {0x7d, 0x61, 0xae, 0xff}}},\n    {{{  2816,   -383,    384}, 0, {  6484,  -5526}, {0x7d, 0x61, 0xae, 0xff}}},\n    {{{  2406,   -383,    589}, 0, {  5972,  -5014}, {0x7d, 0x61, 0xae, 0xff}}},\n    {{{ -2815,   -588,    384}, 0, {  -600,    856}, {0x37, 0x18, 0x48, 0xff}}},\n    {{{  2816,   -588,    384}, 0, {  4928,   5462}, {0x37, 0x18, 0x48, 0xff}}},\n    {{{  2406,   -588,    589}, 0, {  4692,   4926}, {0x37, 0x18, 0x48, 0xff}}},\n    {{{ -2405,   -588,   -741}, 0, { -1120,   2294}, {0x37, 0x18, 0x48, 0xff}}},\n    {{{  2406,   -588,   -741}, 0, {  3604,   6232}, {0x37, 0x18, 0x48, 0xff}}},\n};\n\n// 0x07003BC8 - 0x07003C88\nstatic const Vtx bits_seg7_vertex_07003BC8[] = {\n    {{{ -2815,   -588,    384}, 0, {  -600,    856}, {0x37, 0x18, 0x48, 0xff}}},\n    {{{  2816,   -588,   -537}, 0, {  4174,   6366}, {0x37, 0x18, 0x48, 0xff}}},\n    {{{  2816,   -588,    384}, 0, {  4928,   5462}, {0x37, 0x18, 0x48, 0xff}}},\n    {{{  2406,   -588,    589}, 0, {  4692,   4926}, {0x37, 0x18, 0x48, 0xff}}},\n    {{{ -2405,   -588,    589}, 0, {     0,    990}, {0x37, 0x18, 0x48, 0xff}}},\n    {{{ -2815,   -588,   -537}, 0, { -1354,   1758}, {0x37, 0x18, 0x48, 0xff}}},\n    {{{ -2405,   -588,   -741}, 0, { -1120,   2294}, {0x37, 0x18, 0x48, 0xff}}},\n    {{{  2406,   -588,   -741}, 0, {  3604,   6232}, {0x37, 0x18, 0x48, 0xff}}},\n    {{{  1894,   -588,   -895}, 0, {   990,    990}, {0x37, 0x18, 0x48, 0xff}}},\n    {{{  2099,   -588,   -895}, 0, {   606,    606}, {0x37, 0x18, 0x48, 0xff}}},\n    {{{  2150,   -588,   -741}, 0, {   352,    862}, {0x37, 0x18, 0x48, 0xff}}},\n    {{{  1843,   -588,   -741}, 0, {   734,   1244}, {0x37, 0x18, 0x48, 0xff}}},\n};\n\n// 0x07003C88 - 0x07003D88\nstatic const Vtx bits_seg7_vertex_07003C88[] = {\n    {{{   543,    742,   -537}, 0, {   260,  -4192}, {0x4d, 0x70, 0xc4, 0xff}}},\n    {{{   543,   -383,   -537}, 0, {   260,   1426}, {0x4d, 0x70, 0xc4, 0xff}}},\n    {{{   492,   -383,   -485}, 0, {   186,   1316}, {0x4d, 0x70, 0xc4, 0xff}}},\n    {{{   492,    742,   -485}, 0, {   188,  -4302}, {0x4d, 0x70, 0xc4, 0xff}}},\n    {{{   543,    742,   -434}, 0, {   260,  -4192}, {0x4d, 0x70, 0xc4, 0xff}}},\n    {{{   594,   -383,   -485}, 0, {   332,   1536}, {0x4d, 0x70, 0xc4, 0xff}}},\n    {{{   594,    742,   -485}, 0, {   332,  -4084}, {0x4d, 0x70, 0xc4, 0xff}}},\n    {{{   543,   -383,   -434}, 0, {   260,   1426}, {0x4d, 0x70, 0xc4, 0xff}}},\n    {{{   594,    742,   -485}, 0, {   332,  -4084}, {0x3f, 0x55, 0xbf, 0xff}}},\n    {{{   543,   -383,   -537}, 0, {   260,   1426}, {0x3f, 0x55, 0xbf, 0xff}}},\n    {{{   543,    742,   -537}, 0, {   260,  -4192}, {0x3f, 0x55, 0xbf, 0xff}}},\n    {{{   594,   -383,   -485}, 0, {   332,   1536}, {0x3f, 0x55, 0xbf, 0xff}}},\n    {{{   492,    742,   -485}, 0, {   188,  -4302}, {0x3f, 0x55, 0xbf, 0xff}}},\n    {{{   543,   -383,   -434}, 0, {   260,   1426}, {0x3f, 0x55, 0xbf, 0xff}}},\n    {{{   543,    742,   -434}, 0, {   260,  -4192}, {0x3f, 0x55, 0xbf, 0xff}}},\n    {{{   492,   -383,   -485}, 0, {   186,   1316}, {0x3f, 0x55, 0xbf, 0xff}}},\n};\n\n// 0x07003D88 - 0x07003E68\nstatic const Vtx bits_seg7_vertex_07003D88[] = {\n    {{{  2344,    415,   -380}, 0, { -1234,    918}, {0x11, 0x7f, 0x7b, 0xff}}},\n    {{{  2344,   -378,   -380}, 0, {  2158,    162}, {0x11, 0x7f, 0x7b, 0xff}}},\n    {{{  2293,   -378,   -380}, 0, {  1574,    406}, {0x11, 0x7f, 0x7b, 0xff}}},\n    {{{  2293,    415,   -380}, 0, { -1818,   1158}, {0x11, 0x7f, 0x7b, 0xff}}},\n    {{{  2293,    415,    479}, 0, { -1818,   1158}, {0x11, 0x7f, 0x7b, 0xff}}},\n    {{{  2293,   -378,    479}, 0, {  1574,    406}, {0x11, 0x7f, 0x7b, 0xff}}},\n    {{{  2344,   -378,    479}, 0, {  2158,    162}, {0x11, 0x7f, 0x7b, 0xff}}},\n    {{{  2344,    415,    479}, 0, { -1234,    918}, {0x11, 0x7f, 0x7b, 0xff}}},\n    {{{  2293,    671,   -278}, 0, { -1418,    186}, {0x32, 0xb2, 0x92, 0xff}}},\n    {{{  2293,    415,   -380}, 0, {  -322,    552}, {0x32, 0xb2, 0x92, 0xff}}},\n    {{{  2242,    415,   -278}, 0, {  -396,    698}, {0x32, 0xb2, 0x92, 0xff}}},\n    {{{  2421,    415,   -278}, 0, {  1136,    698}, {0x32, 0xb2, 0x92, 0xff}}},\n    {{{  2344,    415,   -380}, 0, {   188,    552}, {0x32, 0xb2, 0x92, 0xff}}},\n    {{{  2344,    671,   -278}, 0, {  -906,    186}, {0x32, 0xb2, 0x92, 0xff}}},\n};\n\n// 0x07003E68 - 0x07003F68\nstatic const Vtx bits_seg7_vertex_07003E68[] = {\n    {{{  2344,    671,    377}, 0, {  -906,    186}, {0x32, 0xb2, 0x92, 0xff}}},\n    {{{  2344,    415,    479}, 0, {   186,    552}, {0x32, 0xb2, 0x92, 0xff}}},\n    {{{  2421,    415,    377}, 0, {  1136,    698}, {0x32, 0xb2, 0x92, 0xff}}},\n    {{{  2242,    415,    377}, 0, {  -396,    698}, {0x32, 0xb2, 0x92, 0xff}}},\n    {{{  2293,    415,    479}, 0, {  -322,    552}, {0x32, 0xb2, 0x92, 0xff}}},\n    {{{  2293,    671,    377}, 0, { -1418,    186}, {0x32, 0xb2, 0x92, 0xff}}},\n    {{{  2242,    415,    377}, 0, { -2402,   1402}, {0x21, 0x96, 0x8a, 0xff}}},\n    {{{  2293,   -378,    479}, 0, {  1574,    406}, {0x21, 0x96, 0x8a, 0xff}}},\n    {{{  2293,    415,    479}, 0, { -1818,   1158}, {0x21, 0x96, 0x8a, 0xff}}},\n    {{{  2293,    415,   -380}, 0, { -1818,   1158}, {0x21, 0x96, 0x8a, 0xff}}},\n    {{{  2242,   -378,   -278}, 0, {   990,    650}, {0x21, 0x96, 0x8a, 0xff}}},\n    {{{  2242,    415,   -278}, 0, { -2402,   1402}, {0x21, 0x96, 0x8a, 0xff}}},\n    {{{  2293,   -378,   -380}, 0, {  1574,    406}, {0x21, 0x96, 0x8a, 0xff}}},\n    {{{  2421,    415,   -278}, 0, {  -650,    674}, {0x21, 0x96, 0x8a, 0xff}}},\n    {{{  2344,   -378,   -380}, 0, {  2158,    162}, {0x21, 0x96, 0x8a, 0xff}}},\n    {{{  2344,    415,   -380}, 0, { -1234,    918}, {0x21, 0x96, 0x8a, 0xff}}},\n};\n\n// 0x07003F68 - 0x07004048\nstatic const Vtx bits_seg7_vertex_07003F68[] = {\n    {{{  2421,    415,   -278}, 0, {  -650,    674}, {0x21, 0x96, 0x8a, 0xff}}},\n    {{{  2421,   -378,   -278}, 0, {  2742,    -80}, {0x21, 0x96, 0x8a, 0xff}}},\n    {{{  2344,   -378,   -380}, 0, {  2158,    162}, {0x21, 0x96, 0x8a, 0xff}}},\n    {{{  2344,    415,    479}, 0, { -1234,    918}, {0x21, 0x96, 0x8a, 0xff}}},\n    {{{  2421,   -378,    377}, 0, {  2742,    -80}, {0x21, 0x96, 0x8a, 0xff}}},\n    {{{  2421,    415,    377}, 0, {  -650,    674}, {0x21, 0x96, 0x8a, 0xff}}},\n    {{{  2344,   -378,    479}, 0, {  2158,    162}, {0x21, 0x96, 0x8a, 0xff}}},\n    {{{  2242,    415,    377}, 0, { -2402,   1402}, {0x21, 0x96, 0x8a, 0xff}}},\n    {{{  2242,   -378,    377}, 0, {   990,    650}, {0x21, 0x96, 0x8a, 0xff}}},\n    {{{  2293,   -378,    479}, 0, {  1574,    406}, {0x21, 0x96, 0x8a, 0xff}}},\n    {{{  2344,    415,   -380}, 0, {   188,    552}, {0x2f, 0xa0, 0x93, 0xff}}},\n    {{{  2293,    671,   -278}, 0, { -1418,    186}, {0x2f, 0xa0, 0x93, 0xff}}},\n    {{{  2344,    671,   -278}, 0, {  -906,    186}, {0x2f, 0xa0, 0x93, 0xff}}},\n    {{{  2293,    415,   -380}, 0, {  -322,    552}, {0x2f, 0xa0, 0x93, 0xff}}},\n};\n\n// 0x07004048 - 0x07004138\nstatic const Vtx bits_seg7_vertex_07004048[] = {\n    {{{  2344,    671,    377}, 0, {  -906,    186}, {0x2f, 0xa0, 0x93, 0xff}}},\n    {{{  2293,    415,    479}, 0, {  -322,    552}, {0x2f, 0xa0, 0x93, 0xff}}},\n    {{{  2344,    415,    479}, 0, {   186,    552}, {0x2f, 0xa0, 0x93, 0xff}}},\n    {{{  2293,    671,    377}, 0, { -1418,    186}, {0x2f, 0xa0, 0x93, 0xff}}},\n    {{{  2421,    415,    377}, 0, {  -650,    674}, {0x00, 0x50, 0x50, 0xff}}},\n    {{{  2421,   -378,    377}, 0, {  2742,    -80}, {0x00, 0x50, 0x50, 0xff}}},\n    {{{  2242,   -378,    377}, 0, {   990,    650}, {0x00, 0x50, 0x50, 0xff}}},\n    {{{  2293,    671,   -278}, 0, { -1418,    186}, {0x00, 0x50, 0x50, 0xff}}},\n    {{{  2421,    415,   -278}, 0, {  1136,    698}, {0x00, 0x50, 0x50, 0xff}}},\n    {{{  2344,    671,   -278}, 0, {  -906,    186}, {0x00, 0x50, 0x50, 0xff}}},\n    {{{  2242,    415,   -278}, 0, {  -396,    698}, {0x00, 0x50, 0x50, 0xff}}},\n    {{{  2344,    671,    377}, 0, {  -906,    186}, {0x00, 0x50, 0x50, 0xff}}},\n    {{{  2421,    415,    377}, 0, {  1136,    698}, {0x00, 0x50, 0x50, 0xff}}},\n    {{{  2242,    415,    377}, 0, {  -396,    698}, {0x00, 0x50, 0x50, 0xff}}},\n    {{{  2293,    671,    377}, 0, { -1418,    186}, {0x00, 0x50, 0x50, 0xff}}},\n};\n\n// 0x07004138 - 0x070041A8\nstatic const Vtx bits_seg7_vertex_07004138[] = {\n    {{{  2242,    415,   -278}, 0, { -2402,   1402}, {0x00, 0x50, 0x50, 0xff}}},\n    {{{  2242,   -378,   -278}, 0, {   990,    650}, {0x00, 0x50, 0x50, 0xff}}},\n    {{{  2421,   -378,   -278}, 0, {  2742,    -80}, {0x00, 0x50, 0x50, 0xff}}},\n    {{{  2421,    415,   -278}, 0, {  -650,    674}, {0x00, 0x50, 0x50, 0xff}}},\n    {{{  2421,    415,    377}, 0, {  -650,    674}, {0x00, 0x50, 0x50, 0xff}}},\n    {{{  2242,   -378,    377}, 0, {   990,    650}, {0x00, 0x50, 0x50, 0xff}}},\n    {{{  2242,    415,    377}, 0, { -2402,   1402}, {0x00, 0x50, 0x50, 0xff}}},\n};\n\n// 0x070041A8 - 0x070042A8\nstatic const Vtx bits_seg7_vertex_070041A8[] = {\n    {{{ -1083,   -383,    -13}, 0, {  -162,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1083,    435,    -13}, 0, {  -162,  -1310}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1083,    435,   -114}, 0, {  -414,  -1310}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1083,   -383,   -114}, 0, {  -414,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -867,   -383,   -114}, 0, {  -414,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -867,    435,    -13}, 0, {  -162,  -1310}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -867,   -383,    -13}, 0, {  -162,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -867,    435,   -114}, 0, {  -414,  -1310}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -925,   -383,     44}, 0, {   220,    990}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{  -925,    435,     44}, 0, {   220,  -1310}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{ -1025,    435,     44}, 0, {     0,  -1310}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{ -1025,   -383,     44}, 0, {     0,    990}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{ -1025,   -383,   -171}, 0, {     0,    990}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{ -1025,    435,   -171}, 0, {     0,  -1310}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{  -925,    435,   -171}, 0, {   220,  -1310}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{  -925,   -383,   -171}, 0, {   220,    990}, {0x50, 0x50, 0x50, 0xff}}},\n};\n\n// 0x070042A8 - 0x070043A8\nstatic const Vtx bits_seg7_vertex_070042A8[] = {\n    {{{  -925,   -383,   -171}, 0, {   220,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -925,    435,   -171}, 0, {   220,  -1310}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -867,    435,   -114}, 0, {   364,  -1310}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1025,   -383,     44}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1025,    435,     44}, 0, {     0,  -1310}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1083,    435,    -13}, 0, {  -174,  -1310}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1083,   -383,    -13}, 0, {  -174,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1083,   -383,   -114}, 0, {  -174,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1025,    435,   -171}, 0, {     0,  -1310}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1025,   -383,   -171}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1083,    435,   -114}, 0, {  -174,  -1310}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -867,   -383,    -13}, 0, {   364,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -925,    435,     44}, 0, {   220,  -1310}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -925,   -383,     44}, 0, {   220,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -867,    435,    -13}, 0, {   364,  -1310}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -867,   -383,   -114}, 0, {   364,    990}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x070043A8 - 0x070043E8\nstatic const Vtx bits_seg7_vertex_070043A8[] = {\n    {{{   543,    742,   -434}, 0, {     0,      0}, {0xa9, 0xe1, 0xe1, 0xff}}},\n    {{{   594,    742,   -485}, 0, {     0,      0}, {0xa9, 0xe1, 0xe1, 0xff}}},\n    {{{   543,    742,   -537}, 0, {     0,      0}, {0xa9, 0xe1, 0xe1, 0xff}}},\n    {{{   492,    742,   -485}, 0, {     0,      0}, {0xa9, 0xe1, 0xe1, 0xff}}},\n};\n\n// 0x070043E8 - 0x07004590\nstatic const Gfx bits_seg7_dl_070043E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_070036F8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11, 12, 0x0),\n    gsSP2Triangles( 8, 13, 14, 0x0,  8, 14, 11, 0x0),\n    gsSP2Triangles(15,  8, 12, 0x0,  9,  8, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_070037F8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 4,  3,  5, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_070038F8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_070039D8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bits_seg7_vertex_07003AC8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_07003BC8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  5,  6, 0x0,  0,  7,  1, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07004590 - 0x070045F8\nstatic const Gfx bits_seg7_dl_07004590[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_07003C88, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070045F8 - 0x07004720\nstatic const Gfx bits_seg7_dl_070045F8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_07003D88, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_07003E68, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_07003F68, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(bits_seg7_vertex_07004048, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_07004138, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP1Triangle( 4,  5,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07004720 - 0x070047D0\nstatic const Gfx bits_seg7_dl_07004720[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_070041A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_070042A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070047D0 - 0x070047F0\nstatic const Gfx bits_seg7_dl_070047D0[] = {\n    gsSPVertex(bits_seg7_vertex_070043A8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070047F0 - 0x07004880\nconst Gfx bits_seg7_dl_070047F0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bits_seg7_dl_070043E8),\n    gsSPDisplayList(bits_seg7_dl_07004590),\n    gsSPDisplayList(bits_seg7_dl_070045F8),\n    gsSPDisplayList(bits_seg7_dl_07004720),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(bits_seg7_dl_070047D0),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/30/collision.inc.c",
    "content": "// 0x0701B404 - 0x0701B59C\nconst Collision bits_seg7_collision_0701B404[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x1C),\n    COL_VERTEX(-409, 512, 307),\n    COL_VERTEX(-716, 410, 307),\n    COL_VERTEX(-716, 256, 307),\n    COL_VERTEX(-716, 410, -306),\n    COL_VERTEX(-716, 256, -306),\n    COL_VERTEX(-409, 512, -306),\n    COL_VERTEX(-409, 666, -306),\n    COL_VERTEX(-101, 768, -306),\n    COL_VERTEX(-409, 666, 307),\n    COL_VERTEX(-101, 768, 307),\n    COL_VERTEX(-1023, 154, 307),\n    COL_VERTEX(-1023, 0, 307),\n    COL_VERTEX(512, 1434, 307),\n    COL_VERTEX(819, 1536, 307),\n    COL_VERTEX(512, 1280, -306),\n    COL_VERTEX(205, 1178, 307),\n    COL_VERTEX(205, 1024, -306),\n    COL_VERTEX(512, 1280, 307),\n    COL_VERTEX(-101, 922, 307),\n    COL_VERTEX(205, 1024, 307),\n    COL_VERTEX(-1023, 0, -306),\n    COL_VERTEX(-1330, 0, -306),\n    COL_VERTEX(-1330, 0, 307),\n    COL_VERTEX(512, 1434, -306),\n    COL_VERTEX(819, 1536, -306),\n    COL_VERTEX(-1023, 154, -306),\n    COL_VERTEX(205, 1178, -306),\n    COL_VERTEX(-101, 922, -306),\n    COL_TRI_INIT(SURFACE_DEFAULT, 38),\n    COL_TRI(0, 1, 2),\n    COL_TRI(2, 1, 3),\n    COL_TRI(2, 3, 4),\n    COL_TRI(5, 3, 1),\n    COL_TRI(5, 1, 0),\n    COL_TRI(5, 6, 7),\n    COL_TRI(8, 6, 5),\n    COL_TRI(8, 5, 0),\n    COL_TRI(4, 3, 5),\n    COL_TRI(8, 0, 9),\n    COL_TRI(9, 7, 6),\n    COL_TRI(9, 6, 8),\n    COL_TRI(10, 20, 11),\n    COL_TRI(10, 11, 2),\n    COL_TRI(11, 20, 21),\n    COL_TRI(11, 21, 22),\n    COL_TRI(12, 17, 13),\n    COL_TRI(12, 23, 14),\n    COL_TRI(12, 14, 17),\n    COL_TRI(13, 23, 12),\n    COL_TRI(13, 24, 23),\n    COL_TRI(14, 23, 24),\n    COL_TRI(15, 26, 16),\n    COL_TRI(15, 16, 19),\n    COL_TRI(16, 26, 14),\n    COL_TRI(17, 14, 26),\n    COL_TRI(17, 26, 15),\n    COL_TRI(15, 19, 17),\n    COL_TRI(18, 9, 19),\n    COL_TRI(19, 16, 27),\n    COL_TRI(19, 27, 18),\n    COL_TRI(18, 7, 9),\n    COL_TRI(7, 27, 16),\n    COL_TRI(18, 27, 7),\n    COL_TRI(10, 25, 20),\n    COL_TRI(20, 25, 4),\n    COL_TRI(2, 25, 10),\n    COL_TRI(2, 4, 25),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/30/geo.inc.c",
    "content": "// 0x0E0006D0\nconst GeoLayout bits_geo_0006D0[] = {\n    GEO_CULLING_RADIUS(2100),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bits_seg7_dl_07016300),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/30/model.inc.c",
    "content": "// 0x07015BD8 - 0x07015C18\nstatic const Vtx bits_seg7_vertex_07015BD8[] = {\n    {{{ -1023,      0,    307}, 0, {   990,      0}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1330,      0,   -306}, 0, {  1502,   2522}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1330,      0,    307}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1023,      0,   -306}, 0, {  2524,   1500}, {0xc8, 0xc8, 0xc8, 0xff}}},\n};\n\n// 0x07015C18 - 0x07015D18\nstatic const Vtx bits_seg7_vertex_07015C18[] = {\n    {{{ -1023,      0,   -306}, 0, {    32,    930}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{ -1023,    154,   -306}, 0, {    32,    930}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{  -716,    256,   -306}, 0, {    32,     28}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{ -1023,    154,    307}, 0, {  1948,    930}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{ -1023,      0,    307}, 0, {  1948,    930}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{  -716,    256,    307}, 0, {  1948,     28}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{ -1023,    154,    307}, 0, {  1948,    930}, {0xdf, 0xdf, 0x1f, 0xff}}},\n    {{{ -1023,      0,   -306}, 0, {    32,    930}, {0xdf, 0xdf, 0x1f, 0xff}}},\n    {{{ -1023,      0,    307}, 0, {  1948,    930}, {0xdf, 0xdf, 0x1f, 0xff}}},\n    {{{ -1023,    154,   -306}, 0, {    32,    930}, {0xdf, 0xdf, 0x1f, 0xff}}},\n    {{{  -716,    256,   -306}, 0, {    32,    930}, {0xaa, 0xbf, 0x3f, 0xff}}},\n    {{{  -716,    410,   -306}, 0, {    32,    930}, {0xaa, 0xbf, 0x3f, 0xff}}},\n    {{{  -409,    512,   -306}, 0, {    32,     28}, {0xaa, 0xbf, 0x3f, 0xff}}},\n    {{{  -409,    512,    307}, 0, {  1948,     28}, {0xaa, 0xbf, 0x3f, 0xff}}},\n    {{{  -716,    410,    307}, 0, {  1948,    930}, {0xaa, 0xbf, 0x3f, 0xff}}},\n    {{{  -716,    256,    307}, 0, {  1948,    930}, {0xaa, 0xbf, 0x3f, 0xff}}},\n};\n\n// 0x07015D18 - 0x07015E08\nstatic const Vtx bits_seg7_vertex_07015D18[] = {\n    {{{  -716,    256,    307}, 0, {  1948,    930}, {0xbf, 0xdf, 0x1f, 0xff}}},\n    {{{  -716,    410,    307}, 0, {  1948,    930}, {0xbf, 0xdf, 0x1f, 0xff}}},\n    {{{  -716,    410,   -306}, 0, {    32,    930}, {0xbf, 0xdf, 0x1f, 0xff}}},\n    {{{  -716,    256,   -306}, 0, {    32,    930}, {0xbf, 0xdf, 0x1f, 0xff}}},\n    {{{  -716,    256,    307}, 0, {  1948,     28}, {0xd4, 0xff, 0x00, 0xff}}},\n    {{{ -1023,    154,   -306}, 0, {    32,    930}, {0xd4, 0xff, 0x00, 0xff}}},\n    {{{ -1023,    154,    307}, 0, {  1948,    930}, {0xd4, 0xff, 0x00, 0xff}}},\n    {{{  -716,    256,   -306}, 0, {    32,     28}, {0xd4, 0xff, 0x00, 0xff}}},\n    {{{  -409,    512,   -306}, 0, {    32,    930}, {0x94, 0xbf, 0x3f, 0xff}}},\n    {{{  -409,    666,   -306}, 0, {    32,    930}, {0x94, 0xbf, 0x3f, 0xff}}},\n    {{{  -101,    768,   -306}, 0, {    32,     28}, {0x94, 0xbf, 0x3f, 0xff}}},\n    {{{  -409,    512,   -306}, 0, {    32,     28}, {0xaa, 0xff, 0x00, 0xff}}},\n    {{{  -716,    410,    307}, 0, {  1948,    930}, {0xaa, 0xff, 0x00, 0xff}}},\n    {{{  -409,    512,    307}, 0, {  1948,     28}, {0xaa, 0xff, 0x00, 0xff}}},\n    {{{  -716,    410,   -306}, 0, {    32,    930}, {0xaa, 0xff, 0x00, 0xff}}},\n};\n\n// 0x07015E08 - 0x07015EE8\nstatic const Vtx bits_seg7_vertex_07015E08[] = {\n    {{{  -409,    666,    307}, 0, {  1948,    930}, {0x7f, 0xbf, 0x3f, 0xff}}},\n    {{{  -409,    512,    307}, 0, {  1948,    930}, {0x7f, 0xbf, 0x3f, 0xff}}},\n    {{{  -101,    768,    307}, 0, {  1948,     28}, {0x7f, 0xbf, 0x3f, 0xff}}},\n    {{{  -409,    666,    307}, 0, {  1948,    930}, {0x7f, 0xdf, 0x1f, 0xff}}},\n    {{{  -409,    666,   -306}, 0, {    32,    930}, {0x7f, 0xdf, 0x1f, 0xff}}},\n    {{{  -409,    512,   -306}, 0, {    32,    930}, {0x7f, 0xdf, 0x1f, 0xff}}},\n    {{{  -409,    512,    307}, 0, {  1948,    930}, {0x7f, 0xdf, 0x1f, 0xff}}},\n    {{{  -101,    768,    307}, 0, {  1948,     28}, {0x7f, 0xff, 0x00, 0xff}}},\n    {{{  -409,    666,   -306}, 0, {    32,    930}, {0x7f, 0xff, 0x00, 0xff}}},\n    {{{  -409,    666,    307}, 0, {  1948,    930}, {0x7f, 0xff, 0x00, 0xff}}},\n    {{{  -101,    768,   -306}, 0, {    32,     28}, {0x7f, 0xff, 0x00, 0xff}}},\n    {{{  -101,    768,   -306}, 0, {    32,    930}, {0x6a, 0xbf, 0x3f, 0xff}}},\n    {{{  -101,    922,   -306}, 0, {    32,    930}, {0x6a, 0xbf, 0x3f, 0xff}}},\n    {{{   205,   1024,   -306}, 0, {    32,     28}, {0x6a, 0xbf, 0x3f, 0xff}}},\n};\n\n// 0x07015EE8 - 0x07015FC8\nstatic const Vtx bits_seg7_vertex_07015EE8[] = {\n    {{{  -101,    922,    307}, 0, {  1948,    930}, {0x6a, 0xbf, 0x3f, 0xff}}},\n    {{{  -101,    768,    307}, 0, {  1948,    930}, {0x6a, 0xbf, 0x3f, 0xff}}},\n    {{{   205,   1024,    307}, 0, {  1948,     28}, {0x6a, 0xbf, 0x3f, 0xff}}},\n    {{{  -101,    922,    307}, 0, {  1948,    930}, {0x5f, 0xdf, 0x1f, 0xff}}},\n    {{{  -101,    922,   -306}, 0, {    32,    930}, {0x5f, 0xdf, 0x1f, 0xff}}},\n    {{{  -101,    768,   -306}, 0, {    32,    930}, {0x5f, 0xdf, 0x1f, 0xff}}},\n    {{{  -101,    768,    307}, 0, {  1948,    930}, {0x5f, 0xdf, 0x1f, 0xff}}},\n    {{{   205,   1024,    307}, 0, {  1948,     28}, {0x2a, 0xff, 0x00, 0xff}}},\n    {{{   205,   1024,   -306}, 0, {    32,     28}, {0x2a, 0xff, 0x00, 0xff}}},\n    {{{  -101,    922,   -306}, 0, {    32,    930}, {0x2a, 0xff, 0x00, 0xff}}},\n    {{{  -101,    922,    307}, 0, {  1948,    930}, {0x2a, 0xff, 0x00, 0xff}}},\n    {{{   205,   1024,   -306}, 0, {    32,    930}, {0x3f, 0xbf, 0x55, 0xff}}},\n    {{{   205,   1178,   -306}, 0, {    32,    930}, {0x3f, 0xbf, 0x55, 0xff}}},\n    {{{   512,   1280,   -306}, 0, {    32,     28}, {0x3f, 0xbf, 0x55, 0xff}}},\n};\n\n// 0x07015FC8 - 0x070160A8\nstatic const Vtx bits_seg7_vertex_07015FC8[] = {\n    {{{   205,   1178,    307}, 0, {  1948,    930}, {0x3f, 0xbf, 0x55, 0xff}}},\n    {{{   205,   1024,    307}, 0, {  1948,    930}, {0x3f, 0xbf, 0x55, 0xff}}},\n    {{{   512,   1280,    307}, 0, {  1948,     28}, {0x3f, 0xbf, 0x55, 0xff}}},\n    {{{   205,   1178,    307}, 0, {  1948,    930}, {0x1f, 0xdf, 0x3f, 0xff}}},\n    {{{   205,   1178,   -306}, 0, {    32,    930}, {0x1f, 0xdf, 0x3f, 0xff}}},\n    {{{   205,   1024,   -306}, 0, {    32,    930}, {0x1f, 0xdf, 0x3f, 0xff}}},\n    {{{   205,   1024,    307}, 0, {  1948,    930}, {0x1f, 0xdf, 0x3f, 0xff}}},\n    {{{   512,   1280,    307}, 0, {  1948,     28}, {0x00, 0xff, 0x55, 0xff}}},\n    {{{   512,   1280,   -306}, 0, {    32,     28}, {0x00, 0xff, 0x55, 0xff}}},\n    {{{   205,   1178,   -306}, 0, {    32,    930}, {0x00, 0xff, 0x55, 0xff}}},\n    {{{   205,   1178,    307}, 0, {  1948,    930}, {0x00, 0xff, 0x55, 0xff}}},\n    {{{   512,   1434,    307}, 0, {  1948,    930}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{   512,   1280,    307}, 0, {  1948,    930}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{   819,   1536,    307}, 0, {  1948,     28}, {0x3f, 0xbf, 0x7f, 0xff}}},\n};\n\n// 0x070160A8 - 0x07016158\nstatic const Vtx bits_seg7_vertex_070160A8[] = {\n    {{{   512,   1280,   -306}, 0, {    32,    930}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{   512,   1434,   -306}, 0, {    32,    930}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{   819,   1536,   -306}, 0, {    32,     28}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{   512,   1434,    307}, 0, {  1948,    930}, {0x1f, 0xdf, 0x7f, 0xff}}},\n    {{{   512,   1434,   -306}, 0, {    32,    930}, {0x1f, 0xdf, 0x7f, 0xff}}},\n    {{{   512,   1280,   -306}, 0, {    32,    930}, {0x1f, 0xdf, 0x7f, 0xff}}},\n    {{{   512,   1280,    307}, 0, {  1948,    930}, {0x1f, 0xdf, 0x7f, 0xff}}},\n    {{{   819,   1536,    307}, 0, {  1948,     28}, {0x00, 0xff, 0x7f, 0xff}}},\n    {{{   819,   1536,   -306}, 0, {    32,     28}, {0x00, 0xff, 0x7f, 0xff}}},\n    {{{   512,   1434,   -306}, 0, {    32,    930}, {0x00, 0xff, 0x7f, 0xff}}},\n    {{{   512,   1434,    307}, 0, {  1948,    930}, {0x00, 0xff, 0x7f, 0xff}}},\n};\n\n// 0x07016158 - 0x07016190\nstatic const Gfx bits_seg7_dl_07016158[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_07015BD8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07016190 - 0x07016300\nstatic const Gfx bits_seg7_dl_07016190[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_07015C18, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_07015D18, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bits_seg7_vertex_07015E08, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_07015EE8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_07015FC8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_070160A8, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle( 7,  9, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07016300 - 0x07016378\nconst Gfx bits_seg7_dl_07016300[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bits_seg7_dl_07016158),\n    gsSPDisplayList(bits_seg7_dl_07016190),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/31/collision.inc.c",
    "content": "// 0x0701B59C - 0x0701B734\nconst Collision bits_seg7_collision_0701B59C[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x1C),\n    COL_VERTEX(-409, 512, 307),\n    COL_VERTEX(-716, 338, 307),\n    COL_VERTEX(-716, 256, 307),\n    COL_VERTEX(-716, 338, -306),\n    COL_VERTEX(-716, 256, -306),\n    COL_VERTEX(-409, 512, -306),\n    COL_VERTEX(-409, 594, -306),\n    COL_VERTEX(-101, 768, -306),\n    COL_VERTEX(-409, 594, 307),\n    COL_VERTEX(-101, 768, 307),\n    COL_VERTEX(-1023, 82, 307),\n    COL_VERTEX(-1023, 0, 307),\n    COL_VERTEX(512, 1362, 307),\n    COL_VERTEX(819, 1536, 307),\n    COL_VERTEX(512, 1280, -306),\n    COL_VERTEX(205, 1106, 307),\n    COL_VERTEX(205, 1024, -306),\n    COL_VERTEX(512, 1280, 307),\n    COL_VERTEX(-101, 850, 307),\n    COL_VERTEX(205, 1024, 307),\n    COL_VERTEX(-1023, 0, -306),\n    COL_VERTEX(-1330, 0, -306),\n    COL_VERTEX(-1330, 0, 307),\n    COL_VERTEX(512, 1362, -306),\n    COL_VERTEX(819, 1536, -306),\n    COL_VERTEX(-1023, 82, -306),\n    COL_VERTEX(205, 1106, -306),\n    COL_VERTEX(-101, 850, -306),\n    COL_TRI_INIT(SURFACE_DEFAULT, 38),\n    COL_TRI(0, 1, 2),\n    COL_TRI(2, 1, 3),\n    COL_TRI(2, 3, 4),\n    COL_TRI(5, 3, 1),\n    COL_TRI(5, 1, 0),\n    COL_TRI(5, 6, 7),\n    COL_TRI(8, 6, 5),\n    COL_TRI(8, 5, 0),\n    COL_TRI(4, 3, 5),\n    COL_TRI(8, 0, 9),\n    COL_TRI(9, 7, 6),\n    COL_TRI(9, 6, 8),\n    COL_TRI(10, 20, 11),\n    COL_TRI(10, 11, 2),\n    COL_TRI(11, 20, 21),\n    COL_TRI(11, 21, 22),\n    COL_TRI(12, 17, 13),\n    COL_TRI(12, 23, 14),\n    COL_TRI(12, 14, 17),\n    COL_TRI(13, 23, 12),\n    COL_TRI(13, 24, 23),\n    COL_TRI(14, 23, 24),\n    COL_TRI(15, 26, 16),\n    COL_TRI(15, 16, 19),\n    COL_TRI(16, 26, 14),\n    COL_TRI(17, 14, 26),\n    COL_TRI(17, 26, 15),\n    COL_TRI(15, 19, 17),\n    COL_TRI(18, 9, 19),\n    COL_TRI(19, 16, 27),\n    COL_TRI(19, 27, 18),\n    COL_TRI(18, 7, 9),\n    COL_TRI(7, 27, 16),\n    COL_TRI(18, 27, 7),\n    COL_TRI(10, 25, 20),\n    COL_TRI(20, 25, 4),\n    COL_TRI(2, 25, 10),\n    COL_TRI(2, 4, 25),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/31/geo.inc.c",
    "content": "// 0x0E0006E8\nconst GeoLayout bits_geo_0006E8[] = {\n    GEO_CULLING_RADIUS(2100),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bits_seg7_dl_07016AA0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/31/model.inc.c",
    "content": "// 0x07016378 - 0x070163B8\nstatic const Vtx bits_seg7_vertex_07016378[] = {\n    {{{ -1023,      0,    307}, 0, {   990,      0}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1330,      0,   -306}, 0, {  1502,   2522}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1330,      0,    307}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1023,      0,   -306}, 0, {  2524,   1500}, {0xc8, 0xc8, 0xc8, 0xff}}},\n};\n\n// 0x070163B8 - 0x070164B8\nstatic const Vtx bits_seg7_vertex_070163B8[] = {\n    {{{ -1023,      0,   -306}, 0, {    32,    930}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{ -1023,     82,   -306}, 0, {    32,    930}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{  -716,    256,   -306}, 0, {    32,     28}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{ -1023,     82,    307}, 0, {  1948,    930}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{ -1023,      0,    307}, 0, {  1948,    930}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{  -716,    256,    307}, 0, {  1948,     28}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{ -1023,     82,    307}, 0, {  1948,    930}, {0xdf, 0xdf, 0x1f, 0xff}}},\n    {{{ -1023,      0,   -306}, 0, {    32,    930}, {0xdf, 0xdf, 0x1f, 0xff}}},\n    {{{ -1023,      0,    307}, 0, {  1948,    930}, {0xdf, 0xdf, 0x1f, 0xff}}},\n    {{{ -1023,     82,   -306}, 0, {    32,    930}, {0xdf, 0xdf, 0x1f, 0xff}}},\n    {{{  -716,    256,   -306}, 0, {    32,    930}, {0xaa, 0xbf, 0x3f, 0xff}}},\n    {{{  -716,    338,   -306}, 0, {    32,    930}, {0xaa, 0xbf, 0x3f, 0xff}}},\n    {{{  -409,    512,   -306}, 0, {    32,     28}, {0xaa, 0xbf, 0x3f, 0xff}}},\n    {{{  -409,    512,    307}, 0, {  1948,     28}, {0xaa, 0xbf, 0x3f, 0xff}}},\n    {{{  -716,    338,    307}, 0, {  1948,    930}, {0xaa, 0xbf, 0x3f, 0xff}}},\n    {{{  -716,    256,    307}, 0, {  1948,    930}, {0xaa, 0xbf, 0x3f, 0xff}}},\n};\n\n// 0x070164B8 - 0x070165A8\nstatic const Vtx bits_seg7_vertex_070164B8[] = {\n    {{{  -716,    256,    307}, 0, {  1948,    930}, {0xbf, 0xdf, 0x1f, 0xff}}},\n    {{{  -716,    338,    307}, 0, {  1948,    930}, {0xbf, 0xdf, 0x1f, 0xff}}},\n    {{{  -716,    338,   -306}, 0, {    32,    930}, {0xbf, 0xdf, 0x1f, 0xff}}},\n    {{{  -716,    256,   -306}, 0, {    32,    930}, {0xbf, 0xdf, 0x1f, 0xff}}},\n    {{{  -716,    256,    307}, 0, {  1948,     28}, {0xd4, 0xff, 0x00, 0xff}}},\n    {{{ -1023,     82,   -306}, 0, {    32,    930}, {0xd4, 0xff, 0x00, 0xff}}},\n    {{{ -1023,     82,    307}, 0, {  1948,    930}, {0xd4, 0xff, 0x00, 0xff}}},\n    {{{  -716,    256,   -306}, 0, {    32,     28}, {0xd4, 0xff, 0x00, 0xff}}},\n    {{{  -409,    512,   -306}, 0, {    32,    930}, {0x94, 0xbf, 0x3f, 0xff}}},\n    {{{  -409,    594,   -306}, 0, {    32,    930}, {0x94, 0xbf, 0x3f, 0xff}}},\n    {{{  -101,    768,   -306}, 0, {    32,     28}, {0x94, 0xbf, 0x3f, 0xff}}},\n    {{{  -409,    512,   -306}, 0, {    32,     28}, {0xaa, 0xff, 0x00, 0xff}}},\n    {{{  -716,    338,    307}, 0, {  1948,    930}, {0xaa, 0xff, 0x00, 0xff}}},\n    {{{  -409,    512,    307}, 0, {  1948,     28}, {0xaa, 0xff, 0x00, 0xff}}},\n    {{{  -716,    338,   -306}, 0, {    32,    930}, {0xaa, 0xff, 0x00, 0xff}}},\n};\n\n// 0x070165A8 - 0x07016688\nstatic const Vtx bits_seg7_vertex_070165A8[] = {\n    {{{  -409,    594,    307}, 0, {  1948,    930}, {0x7f, 0xbf, 0x3f, 0xff}}},\n    {{{  -409,    512,    307}, 0, {  1948,    930}, {0x7f, 0xbf, 0x3f, 0xff}}},\n    {{{  -101,    768,    307}, 0, {  1948,     28}, {0x7f, 0xbf, 0x3f, 0xff}}},\n    {{{  -409,    594,    307}, 0, {  1948,    930}, {0x7f, 0xdf, 0x1f, 0xff}}},\n    {{{  -409,    594,   -306}, 0, {    32,    930}, {0x7f, 0xdf, 0x1f, 0xff}}},\n    {{{  -409,    512,   -306}, 0, {    32,    930}, {0x7f, 0xdf, 0x1f, 0xff}}},\n    {{{  -409,    512,    307}, 0, {  1948,    930}, {0x7f, 0xdf, 0x1f, 0xff}}},\n    {{{  -101,    768,    307}, 0, {  1948,     28}, {0x7f, 0xff, 0x00, 0xff}}},\n    {{{  -409,    594,   -306}, 0, {    32,    930}, {0x7f, 0xff, 0x00, 0xff}}},\n    {{{  -409,    594,    307}, 0, {  1948,    930}, {0x7f, 0xff, 0x00, 0xff}}},\n    {{{  -101,    768,   -306}, 0, {    32,     28}, {0x7f, 0xff, 0x00, 0xff}}},\n    {{{  -101,    768,   -306}, 0, {    32,    930}, {0x6a, 0xbf, 0x3f, 0xff}}},\n    {{{  -101,    850,   -306}, 0, {    32,    930}, {0x6a, 0xbf, 0x3f, 0xff}}},\n    {{{   205,   1024,   -306}, 0, {    32,     28}, {0x6a, 0xbf, 0x3f, 0xff}}},\n};\n\n// 0x07016688 - 0x07016768\nstatic const Vtx bits_seg7_vertex_07016688[] = {\n    {{{  -101,    850,    307}, 0, {  1948,    930}, {0x6a, 0xbf, 0x3f, 0xff}}},\n    {{{  -101,    768,    307}, 0, {  1948,    930}, {0x6a, 0xbf, 0x3f, 0xff}}},\n    {{{   205,   1024,    307}, 0, {  1948,     28}, {0x6a, 0xbf, 0x3f, 0xff}}},\n    {{{  -101,    850,    307}, 0, {  1948,    930}, {0x5f, 0xdf, 0x1f, 0xff}}},\n    {{{  -101,    850,   -306}, 0, {    32,    930}, {0x5f, 0xdf, 0x1f, 0xff}}},\n    {{{  -101,    768,   -306}, 0, {    32,    930}, {0x5f, 0xdf, 0x1f, 0xff}}},\n    {{{  -101,    768,    307}, 0, {  1948,    930}, {0x5f, 0xdf, 0x1f, 0xff}}},\n    {{{   205,   1024,    307}, 0, {  1948,     28}, {0x2a, 0xff, 0x00, 0xff}}},\n    {{{   205,   1024,   -306}, 0, {    32,     28}, {0x2a, 0xff, 0x00, 0xff}}},\n    {{{  -101,    850,   -306}, 0, {    32,    930}, {0x2a, 0xff, 0x00, 0xff}}},\n    {{{  -101,    850,    307}, 0, {  1948,    930}, {0x2a, 0xff, 0x00, 0xff}}},\n    {{{   205,   1024,   -306}, 0, {    32,    930}, {0x3f, 0xbf, 0x55, 0xff}}},\n    {{{   205,   1106,   -306}, 0, {    32,    930}, {0x3f, 0xbf, 0x55, 0xff}}},\n    {{{   512,   1280,   -306}, 0, {    32,     28}, {0x3f, 0xbf, 0x55, 0xff}}},\n};\n\n// 0x07016768 - 0x07016848\nstatic const Vtx bits_seg7_vertex_07016768[] = {\n    {{{   205,   1106,    307}, 0, {  1948,    930}, {0x3f, 0xbf, 0x55, 0xff}}},\n    {{{   205,   1024,    307}, 0, {  1948,    930}, {0x3f, 0xbf, 0x55, 0xff}}},\n    {{{   512,   1280,    307}, 0, {  1948,     28}, {0x3f, 0xbf, 0x55, 0xff}}},\n    {{{   205,   1106,    307}, 0, {  1948,    930}, {0x1f, 0xdf, 0x3f, 0xff}}},\n    {{{   205,   1106,   -306}, 0, {    32,    930}, {0x1f, 0xdf, 0x3f, 0xff}}},\n    {{{   205,   1024,   -306}, 0, {    32,    930}, {0x1f, 0xdf, 0x3f, 0xff}}},\n    {{{   205,   1024,    307}, 0, {  1948,    930}, {0x1f, 0xdf, 0x3f, 0xff}}},\n    {{{   512,   1280,    307}, 0, {  1948,     28}, {0x00, 0xff, 0x55, 0xff}}},\n    {{{   512,   1280,   -306}, 0, {    32,     28}, {0x00, 0xff, 0x55, 0xff}}},\n    {{{   205,   1106,   -306}, 0, {    32,    930}, {0x00, 0xff, 0x55, 0xff}}},\n    {{{   205,   1106,    307}, 0, {  1948,    930}, {0x00, 0xff, 0x55, 0xff}}},\n    {{{   512,   1362,    307}, 0, {  1948,    930}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{   512,   1280,    307}, 0, {  1948,    930}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{   819,   1536,    307}, 0, {  1948,     28}, {0x3f, 0xbf, 0x7f, 0xff}}},\n};\n\n// 0x07016848 - 0x070168F8\nstatic const Vtx bits_seg7_vertex_07016848[] = {\n    {{{   512,   1280,   -306}, 0, {    32,    930}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{   512,   1362,   -306}, 0, {    32,    930}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{   819,   1536,   -306}, 0, {    32,     28}, {0x3f, 0xbf, 0x7f, 0xff}}},\n    {{{   512,   1362,    307}, 0, {  1948,    930}, {0x1f, 0xdf, 0x7f, 0xff}}},\n    {{{   512,   1362,   -306}, 0, {    32,    930}, {0x1f, 0xdf, 0x7f, 0xff}}},\n    {{{   512,   1280,   -306}, 0, {    32,    930}, {0x1f, 0xdf, 0x7f, 0xff}}},\n    {{{   512,   1280,    307}, 0, {  1948,    930}, {0x1f, 0xdf, 0x7f, 0xff}}},\n    {{{   819,   1536,    307}, 0, {  1948,     28}, {0x00, 0xff, 0x7f, 0xff}}},\n    {{{   819,   1536,   -306}, 0, {    32,     28}, {0x00, 0xff, 0x7f, 0xff}}},\n    {{{   512,   1362,   -306}, 0, {    32,    930}, {0x00, 0xff, 0x7f, 0xff}}},\n    {{{   512,   1362,    307}, 0, {  1948,    930}, {0x00, 0xff, 0x7f, 0xff}}},\n};\n\n// 0x070168F8 - 0x07016930\nstatic const Gfx bits_seg7_dl_070168F8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_07016378, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07016930 - 0x07016AA0\nstatic const Gfx bits_seg7_dl_07016930[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_070163B8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_070164B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bits_seg7_vertex_070165A8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_07016688, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_07016768, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_07016848, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle( 7,  9, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07016AA0 - 0x07016B18\nconst Gfx bits_seg7_dl_07016AA0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bits_seg7_dl_070168F8),\n    gsSPDisplayList(bits_seg7_dl_07016930),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/32/collision.inc.c",
    "content": "// 0x0701B734 - 0x0701B7F4\nconst Collision bits_seg7_collision_0701B734[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x10),\n    COL_VERTEX(-409, 512, -306),\n    COL_VERTEX(-716, 256, -306),\n    COL_VERTEX(-716, 256, 307),\n    COL_VERTEX(-409, 512, 307),\n    COL_VERTEX(-1023, 0, 307),\n    COL_VERTEX(-1023, 0, -306),\n    COL_VERTEX(-1330, 0, -306),\n    COL_VERTEX(-1330, 0, 307),\n    COL_VERTEX(819, 1536, 307),\n    COL_VERTEX(819, 1536, -306),\n    COL_VERTEX(512, 1280, -306),\n    COL_VERTEX(512, 1280, 307),\n    COL_VERTEX(205, 1024, 307),\n    COL_VERTEX(-101, 768, 307),\n    COL_VERTEX(205, 1024, -306),\n    COL_VERTEX(-101, 768, -306),\n    COL_TRI_INIT(SURFACE_DEFAULT, 14),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(4, 5, 6),\n    COL_TRI(4, 6, 7),\n    COL_TRI(2, 1, 5),\n    COL_TRI(2, 5, 4),\n    COL_TRI(8, 9, 10),\n    COL_TRI(8, 10, 11),\n    COL_TRI(11, 14, 12),\n    COL_TRI(11, 10, 14),\n    COL_TRI(12, 14, 15),\n    COL_TRI(12, 15, 13),\n    COL_TRI(13, 15, 0),\n    COL_TRI(13, 0, 3),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/32/geo.inc.c",
    "content": "// 0x0E000700\nconst GeoLayout bits_geo_000700[] = {\n    GEO_CULLING_RADIUS(2100),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bits_seg7_dl_07016DA0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/32/model.inc.c",
    "content": "// 0x07016B18 - 0x07016B58\nstatic const Vtx bits_seg7_vertex_07016B18[] = {\n    {{{ -1023,      0,    307}, 0, {   480,    478}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1330,      0,   -306}, 0, {   990,   2010}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1330,      0,    307}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1023,      0,   -306}, 0, {  1502,   1498}, {0xc8, 0xc8, 0xc8, 0xff}}},\n};\n\n// 0x07016B58 - 0x07016C58\nstatic const Vtx bits_seg7_vertex_07016B58[] = {\n    {{{  -716,    256,    307}, 0, {  1948,      0}, {0xd4, 0xff, 0x00, 0xff}}},\n    {{{  -716,    256,   -306}, 0, {    32,      0}, {0xd4, 0xff, 0x00, 0xff}}},\n    {{{ -1023,      0,   -306}, 0, {    32,    926}, {0xd4, 0xff, 0x00, 0xff}}},\n    {{{ -1023,      0,    307}, 0, {  1948,    926}, {0xd4, 0xff, 0x00, 0xff}}},\n    {{{  -409,    512,   -306}, 0, {    32,      0}, {0xaa, 0xff, 0x00, 0xff}}},\n    {{{  -716,    256,   -306}, 0, {    32,    926}, {0xaa, 0xff, 0x00, 0xff}}},\n    {{{  -716,    256,    307}, 0, {  1948,    926}, {0xaa, 0xff, 0x00, 0xff}}},\n    {{{  -409,    512,    307}, 0, {  1948,      0}, {0xaa, 0xff, 0x00, 0xff}}},\n    {{{  -101,    768,    307}, 0, {  1948,      0}, {0x7f, 0xff, 0x00, 0xff}}},\n    {{{  -101,    768,   -306}, 0, {    32,      0}, {0x7f, 0xff, 0x00, 0xff}}},\n    {{{  -409,    512,   -306}, 0, {    32,    926}, {0x7f, 0xff, 0x00, 0xff}}},\n    {{{  -409,    512,    307}, 0, {  1948,    926}, {0x7f, 0xff, 0x00, 0xff}}},\n    {{{   205,   1024,    307}, 0, {  1948,      0}, {0x2a, 0xff, 0x00, 0xff}}},\n    {{{   205,   1024,   -306}, 0, {    32,      0}, {0x2a, 0xff, 0x00, 0xff}}},\n    {{{  -101,    768,   -306}, 0, {    32,    926}, {0x2a, 0xff, 0x00, 0xff}}},\n    {{{  -101,    768,    307}, 0, {  1948,    926}, {0x2a, 0xff, 0x00, 0xff}}},\n};\n\n// 0x07016C58 - 0x07016CD8\nstatic const Vtx bits_seg7_vertex_07016C58[] = {\n    {{{   512,   1280,    307}, 0, {  1948,      0}, {0x00, 0xff, 0x55, 0xff}}},\n    {{{   205,   1024,   -306}, 0, {    32,    926}, {0x00, 0xff, 0x55, 0xff}}},\n    {{{   205,   1024,    307}, 0, {  1948,    926}, {0x00, 0xff, 0x55, 0xff}}},\n    {{{   512,   1280,   -306}, 0, {    32,      0}, {0x00, 0xff, 0x55, 0xff}}},\n    {{{   819,   1536,    307}, 0, {  1948,      0}, {0x00, 0xff, 0x7f, 0xff}}},\n    {{{   819,   1536,   -306}, 0, {    32,      0}, {0x00, 0xff, 0x7f, 0xff}}},\n    {{{   512,   1280,   -306}, 0, {    32,    926}, {0x00, 0xff, 0x7f, 0xff}}},\n    {{{   512,   1280,    307}, 0, {  1948,    926}, {0x00, 0xff, 0x7f, 0xff}}},\n};\n\n// 0x07016CD8 - 0x07016D10\nstatic const Gfx bits_seg7_dl_07016CD8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_07016B18, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07016D10 - 0x07016DA0\nstatic const Gfx bits_seg7_dl_07016D10[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_07016B58, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_07016C58, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07016DA0 - 0x07016E18\nconst Gfx bits_seg7_dl_07016DA0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bits_seg7_dl_07016CD8),\n    gsSPDisplayList(bits_seg7_dl_07016D10),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/4/geo.inc.c",
    "content": "// 0x0E000460\nconst GeoLayout bits_geo_000460[] = {\n    GEO_CULLING_RADIUS(3900),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bits_seg7_dl_07005DB8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/4/model.inc.c",
    "content": "// 0x07004880 - 0x07004980\nstatic const Vtx bits_seg7_vertex_07004880[] = {\n    {{{ -2661,   -835,    676}, 0, {   172,   -544}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{ -2815,   -835,    676}, 0, {   172,    990}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{ -2815,   -835,    758}, 0, {   990,    990}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{ -2661,   -835,    758}, 0, {   990,   -544}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{ -2661,   -835,    758}, 0, {   990,   -544}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{ -2815,   -835,    758}, 0, {   990,    990}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{ -2661,   -900,    799}, 0, {  1398,   -544}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{ -2815,   -900,    799}, 0, {  1398,    990}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{ -2815,   -900,    635}, 0, {  -234,    990}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{ -2815,   -835,    676}, 0, {   172,    990}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{ -2661,   -835,    676}, 0, {   172,   -544}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{ -2661,   -900,    635}, 0, {  -234,   -544}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{ -2661,   -966,    758}, 0, {   990,   -544}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{ -2815,   -966,    758}, 0, {   990,    990}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{ -2815,   -966,    676}, 0, {   172,    990}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{ -2661,   -966,    676}, 0, {   172,   -544}, {0x50, 0x50, 0x00, 0xff}}},\n};\n\n// 0x07004980 - 0x07004A00\nstatic const Vtx bits_seg7_vertex_07004980[] = {\n    {{{ -2661,   -900,    799}, 0, {  1398,   -544}, {0x6e, 0x6e, 0x00, 0xff}}},\n    {{{ -2815,   -900,    799}, 0, {  1398,    990}, {0x6e, 0x6e, 0x00, 0xff}}},\n    {{{ -2661,   -966,    758}, 0, {   990,   -544}, {0x6e, 0x6e, 0x00, 0xff}}},\n    {{{ -2815,   -966,    758}, 0, {   990,    990}, {0x6e, 0x6e, 0x00, 0xff}}},\n    {{{ -2815,   -966,    676}, 0, {   172,    990}, {0x6e, 0x6e, 0x00, 0xff}}},\n    {{{ -2815,   -900,    635}, 0, {  -234,    990}, {0x6e, 0x6e, 0x00, 0xff}}},\n    {{{ -2661,   -966,    676}, 0, {   172,   -544}, {0x6e, 0x6e, 0x00, 0xff}}},\n    {{{ -2661,   -900,    635}, 0, {  -234,   -544}, {0x6e, 0x6e, 0x00, 0xff}}},\n};\n\n// 0x07004A00 - 0x07004B00\nstatic const Vtx bits_seg7_vertex_07004A00[] = {\n    {{{  1894,   1485,   1075}, 0, {   862,   -160}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  1894,   1587,   1075}, 0, {   990,      0}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  2662,   1587,    717}, 0, {    32,    926}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  2662,   1485,    716}, 0, {   -94,    798}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  2714,   1372,    768}, 0, {  -298,    722}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  2714,   1587,    768}, 0, {     0,    990}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  1894,   1587,   1126}, 0, {   990,      0}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  1894,   1372,   1126}, 0, {   722,   -300}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  1178,   1823,   -818}, 0, {  2242,   2674}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  1285,   1926,   -869}, 0, {  2436,   2608}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  1178,   1823,   -869}, 0, {  2306,   2738}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  1894,   1587,    358}, 0, {  1502,   1498}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  1843,   1587,    307}, 0, {  1628,   1498}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   922,   1331,    358}, 0, {  2714,   2712}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   922,   1331,    307}, 0, {  2778,   2648}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  1843,   1925,   -818}, 0, {  3034,     96}, {0xb9, 0xb9, 0xb9, 0xff}}},\n};\n\n// 0x07004B00 - 0x07004C00\nstatic const Vtx bits_seg7_vertex_07004B00[] = {\n    {{{  1285,   1926,  -1381}, 0, {  3074,   3248}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  1178,   1823,  -1433}, 0, {  3008,   3440}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  1178,   1823,  -1381}, 0, {  2944,   3376}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  1285,   1926,  -1433}, 0, {  3138,   3312}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  1178,   1823,   -818}, 0, {  2242,   2674}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  1285,   1926,   -818}, 0, {  2372,   2546}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  1285,   1926,   -869}, 0, {  2436,   2608}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  1894,   1823,   -869}, 0, {  3034,      0}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  1894,   1485,    358}, 0, {  1502,   1498}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  2662,   1823,   -869}, 0, {  2076,   -990}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  1894,   1485,   1075}, 0, {   606,   2394}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   922,   1229,    358}, 0, {  2714,   2712}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   922,   1229,   1075}, 0, {  1820,   3606}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  1894,   1587,   1075}, 0, {   606,   2394}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   922,   1331,   1075}, 0, {  1820,   3606}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   922,   1331,   1126}, 0, {  1756,   3670}, {0xb9, 0xb9, 0xb9, 0xff}}},\n};\n\n// 0x07004C00 - 0x07004D00\nstatic const Vtx bits_seg7_vertex_07004C00[] = {\n    {{{  1894,   1587,   1075}, 0, {   606,   2394}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   922,   1331,   1126}, 0, {  1756,   3670}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  1894,   1587,   1126}, 0, {   542,   2458}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  2662,   1925,   -869}, 0, {  2076,   -990}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  2714,   1587,    307}, 0, {   542,    416}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  2714,   1925,   -869}, 0, {  2012,  -1054}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  2662,   1587,    307}, 0, {   606,    480}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  1894,   1485,    358}, 0, {  1502,   1498}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  2662,   1485,    307}, 0, {   606,    480}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  2662,   1823,   -869}, 0, {  2076,   -990}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  1894,   1925,   -818}, 0, {  2970,     32}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  1843,   1925,   -818}, 0, {  3034,     96}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  1894,   1587,    358}, 0, {  1502,   1498}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  2662,   1587,    717}, 0, {    96,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  2714,   1587,    768}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  2714,   1587,    307}, 0, {   542,    416}, {0xc8, 0xc8, 0xc8, 0xff}}},\n};\n\n// 0x07004D00 - 0x07004DF0\nstatic const Vtx bits_seg7_vertex_07004D00[] = {\n    {{{  2714,   1925,  -1433}, 0, {  2714,  -1756}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1285,   1926,  -1433}, 0, {  4496,     26}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1285,   1926,  -1381}, 0, {  4434,     90}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  2662,   1925,  -1381}, 0, {  2714,  -1628}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  2662,   1925,   -869}, 0, {  2076,   -990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  2714,   1925,   -869}, 0, {  2012,  -1054}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  2662,   1485,    717}, 0, {    96,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1894,   1485,    358}, 0, {  1502,   1498}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1894,   1485,   1075}, 0, {   606,   2394}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  2662,   1485,    307}, 0, {   606,    480}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  2714,   1587,    768}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  2662,   1587,    717}, 0, {    96,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1894,   1587,   1075}, 0, {   606,   2394}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  2714,   1587,    307}, 0, {   542,    416}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  2662,   1587,    307}, 0, {   606,    480}, {0xc8, 0xc8, 0xc8, 0xff}}},\n};\n\n// 0x07004DF0 - 0x07004EE0\nstatic const Vtx bits_seg7_vertex_07004DF0[] = {\n    {{{  1285,   1926,   -818}, 0, {  3730,    792}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1894,   1925,   -818}, 0, {  2970,     32}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1894,   1925,   -869}, 0, {  3034,      0}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  2714,   1587,    768}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1894,   1587,   1075}, 0, {   606,   2394}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1894,   1587,   1126}, 0, {   542,   2458}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1178,   1823,  -1381}, 0, {  4568,    224}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1894,   1823,   -869}, 0, {  3034,      0}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  2662,   1823,   -869}, 0, {  2076,   -990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  2662,   1823,  -1381}, 0, {  2714,  -1628}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1178,   1823,   -869}, 0, {  3928,    862}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1285,   1926,   -869}, 0, {  3794,    728}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  2662,   1587,    717}, 0, {    32,   1052}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  2662,   1587,    307}, 0, {   542,   1562}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  2662,   1485,    307}, 0, {   416,   1690}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x07004EE0 - 0x07004FD0\nstatic const Vtx bits_seg7_vertex_07004EE0[] = {\n    {{{  1178,   1720,  -1433}, 0, {  2880,   3568}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1178,   1823,   -818}, 0, {  2242,   2674}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1178,   1823,  -1433}, 0, {  3008,   3440}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1178,   1720,   -818}, 0, {  2114,   2802}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   922,   1331,   1075}, 0, {  -732,    926}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   922,   1229,   1126}, 0, {  -924,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   922,   1331,   1126}, 0, {  -796,    862}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   922,   1229,   1075}, 0, {  -860,   1052}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   922,   1331,    307}, 0, {   224,   1882}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   922,   1229,    307}, 0, {    96,   2010}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   922,   1229,    358}, 0, {    32,   1946}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   922,   1331,    358}, 0, {   160,   1818}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  2662,   1587,    717}, 0, {    32,   1052}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  2662,   1485,    307}, 0, {   416,   1690}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  2662,   1485,    717}, 0, {   -94,   1180}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x07004FD0 - 0x070050D0\nstatic const Vtx bits_seg7_vertex_07004FD0[] = {\n    {{{  2714,   1372,    768}, 0, {  -298,   1256}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  2714,   1587,    307}, 0, {   542,   1562}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  2714,   1587,    768}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  2714,   1372,    307}, 0, {   274,   1832}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  2714,   1925,  -1433}, 0, {  3136,   3314}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  2714,   1710,   -869}, 0, {  2166,   2878}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  2714,   1710,  -1433}, 0, {  2868,   3582}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  2714,   1925,   -869}, 0, {  2434,   2610}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1843,   1587,    307}, 0, {   542,   1562}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1843,   1710,   -818}, 0, {  2102,   2814}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1843,   1372,    307}, 0, {   274,   1832}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  2662,   1823,  -1381}, 0, {  2944,   3376}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  2662,   1925,   -869}, 0, {  2434,   2610}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  2662,   1925,  -1381}, 0, {  3072,   3250}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  2662,   1823,   -869}, 0, {  2306,   2738}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  2662,   1587,    307}, 0, {   542,   1562}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x070050D0 - 0x070051D0\nstatic const Vtx bits_seg7_vertex_070050D0[] = {\n    {{{  2662,   1823,   -869}, 0, {  2306,   2738}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  2662,   1485,    307}, 0, {   416,   1690}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  2662,   1587,    307}, 0, {   542,   1562}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  2714,   1372,    307}, 0, {   274,   1832}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  2714,   1925,   -869}, 0, {  2434,   2610}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  2714,   1587,    307}, 0, {   542,   1562}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1843,   1587,    307}, 0, {   542,   1562}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1843,   1925,   -818}, 0, {  2370,   2546}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1843,   1710,   -818}, 0, {  2102,   2814}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  2714,   1710,   -818}, 0, {  1948,   -990}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1178,   1720,   -818}, 0, {  3864,    926}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1178,   1720,  -1433}, 0, {  4630,    160}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  2714,   1710,  -1433}, 0, {  2714,  -1756}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1843,   1372,    307}, 0, {  1628,   1498}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1843,   1710,   -818}, 0, {  3034,     96}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  2714,   1710,   -869}, 0, {  2012,  -1054}, {0x44, 0x44, 0x44, 0xff}}},\n};\n\n// 0x070051D0 - 0x070052B0\nstatic const Vtx bits_seg7_vertex_070051D0[] = {\n    {{{  1843,   1372,    307}, 0, {  1628,   1498}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  2714,   1710,   -869}, 0, {  2012,  -1054}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  2714,   1372,    307}, 0, {   542,    416}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1894,   1372,   1126}, 0, {   542,   2458}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  2714,   1372,    768}, 0, {     0,    990}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1894,   1372,   1126}, 0, {   542,   2458}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{   922,   1024,   1126}, 0, {  1756,   3670}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{   922,   1024,    307}, 0, {  2778,   2648}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{  1843,   1372,    307}, 0, {  1628,   1498}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{  2714,   1710,  -1433}, 0, {   122,   1142}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1178,   1720,  -1433}, 0, {  2050,   -760}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1178,   1823,  -1433}, 0, {  2178,   -632}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1285,   1926,  -1433}, 0, {  2174,   -370}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2714,   1925,  -1433}, 0, {   390,   1410}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x070052B0 - 0x070053B0\nstatic const Vtx bits_seg7_vertex_070052B0[] = {\n    {{{  1178,   1823,   -869}, 0, {  2178,   -632}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1894,   1925,   -869}, 0, {  1412,    390}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1894,   1823,   -869}, 0, {  1284,    262}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1285,   1926,   -869}, 0, {  2174,   -370}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1178,   1823,   -818}, 0, {  2178,   -632}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1843,   1710,   -818}, 0, {  1208,     58}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1843,   1925,   -818}, 0, {  1476,    326}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1178,   1720,   -818}, 0, {  2050,   -760}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1285,   1926,   -818}, 0, {  2174,   -370}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1843,   1587,    307}, 0, {  1054,    -96}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1843,   1372,    307}, 0, {   786,   -364}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   922,   1331,    307}, 0, {  1884,  -1564}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1894,   1485,    358}, 0, {   862,   -160}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1894,   1587,    358}, 0, {   990,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   922,   1331,    358}, 0, {  1884,  -1564}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   922,   1229,    358}, 0, {  1756,  -1692}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x070053B0 - 0x070054A0\nstatic const Vtx bits_seg7_vertex_070053B0[] = {\n    {{{  1894,   1372,   1126}, 0, {   722,   -300}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1894,   1587,   1126}, 0, {   990,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   922,   1331,   1126}, 0, {  1884,  -1564}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   922,   1024,   1126}, 0, {  1500,  -1948}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   922,   1229,   1075}, 0, {  1756,  -1692}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1894,   1587,   1075}, 0, {   990,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1894,   1485,   1075}, 0, {   862,   -160}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   922,   1331,   1075}, 0, {  1884,  -1564}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1843,   1372,    307}, 0, {   786,   -364}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   922,   1024,    307}, 0, {  1500,  -1948}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   922,   1331,    307}, 0, {  1884,  -1564}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2662,   1823,  -1381}, 0, {   326,   1218}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2662,   1925,  -1381}, 0, {   454,   1346}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1285,   1926,  -1381}, 0, {  2174,   -370}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1178,   1823,  -1381}, 0, {  2178,   -632}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x070054A0 - 0x070054F0\nstatic const Vtx bits_seg7_vertex_070054A0[] = {\n    {{{  1894,   1823,   -869}, 0, {  2306,   2738}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1894,   1925,   -818}, 0, {  2370,   2546}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1894,   1587,    358}, 0, {   480,   1500}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1894,   1485,    358}, 0, {   352,   1626}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1894,   1925,   -869}, 0, {  2434,   2610}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x070054F0 - 0x070055F0\nstatic const Vtx bits_seg7_vertex_070054F0[] = {\n    {{{ -2661,   -818,   1024}, 0, {  -796,    480}, {0x8c, 0x8c, 0xd8, 0xff}}},\n    {{{ -2661,   -818,    410}, 0, {   734,    480}, {0x8c, 0x8c, 0xd8, 0xff}}},\n    {{{ -2661,  -1023,    410}, 0, {   734,    990}, {0x8c, 0x8c, 0xd8, 0xff}}},\n    {{{ -2661,  -1023,   1024}, 0, {  -796,    990}, {0x8c, 0x8c, 0xd8, 0xff}}},\n    {{{ -1433,   -613,   1126}, 0, {   734,      0}, {0x7d, 0x5f, 0xa8, 0xff}}},\n    {{{ -1842,   -818,   1126}, 0, {  -286,    478}, {0x7d, 0x5f, 0xa8, 0xff}}},\n    {{{  -613,  -1023,   1126}, 0, {  2778,    990}, {0x7d, 0x5f, 0xa8, 0xff}}},\n    {{{ -2661,   -818,    410}, 0, { -2330,    478}, {0x7d, 0x5f, 0xa8, 0xff}}},\n    {{{ -1842,   -818,    307}, 0, {  -286,    478}, {0x7d, 0x5f, 0xa8, 0xff}}},\n    {{{ -1842,  -1023,    307}, 0, {  -286,    990}, {0x7d, 0x5f, 0xa8, 0xff}}},\n    {{{ -2661,  -1023,    410}, 0, { -2330,    990}, {0x7d, 0x5f, 0xa8, 0xff}}},\n    {{{  -613,  -1023,    307}, 0, {  2778,    990}, {0x7d, 0x5f, 0xa8, 0xff}}},\n    {{{ -2661,   -818,   1024}, 0, { -2330,    478}, {0x7d, 0x5f, 0xa8, 0xff}}},\n    {{{ -2661,  -1023,   1024}, 0, { -2330,    990}, {0x7d, 0x5f, 0xa8, 0xff}}},\n    {{{ -1842,  -1023,   1126}, 0, {  -286,    990}, {0x7d, 0x5f, 0xa8, 0xff}}},\n    {{{ -1433,   -613,    307}, 0, {   734,      0}, {0x7d, 0x5f, 0xa8, 0xff}}},\n};\n\n// 0x070055F0 - 0x070056E0\nstatic const Vtx bits_seg7_vertex_070055F0[] = {\n    {{{  -613,  -1023,    307}, 0, {  2778,    990}, {0x7d, 0x5f, 0xa8, 0xff}}},\n    {{{ -1433,   -613,    307}, 0, {   734,      0}, {0x7d, 0x5f, 0xa8, 0xff}}},\n    {{{  -613,   1229,    307}, 0, {  2778,  -4632}, {0x7d, 0x5f, 0xa8, 0xff}}},\n    {{{ -1023,   1024,    307}, 0, {  1756,  -4120}, {0x7d, 0x5f, 0xa8, 0xff}}},\n    {{{   922,   1229,    307}, 0, {  5844,  -4632}, {0x7d, 0x5f, 0xa8, 0xff}}},\n    {{{   922,   1024,    307}, 0, {  5844,  -4120}, {0x7d, 0x5f, 0xa8, 0xff}}},\n    {{{  -613,   1024,    307}, 0, {  2778,  -4120}, {0x7d, 0x5f, 0xa8, 0xff}}},\n    {{{  -613,   1229,   1126}, 0, {  2778,  -4632}, {0x7d, 0x5f, 0xa8, 0xff}}},\n    {{{ -1023,   1024,   1126}, 0, {  1756,  -4120}, {0x7d, 0x5f, 0xa8, 0xff}}},\n    {{{ -1433,   -613,   1126}, 0, {   734,      0}, {0x7d, 0x5f, 0xa8, 0xff}}},\n    {{{  -613,  -1023,   1126}, 0, {  2778,    990}, {0x7d, 0x5f, 0xa8, 0xff}}},\n    {{{  -613,   1024,   1126}, 0, {   734,    990}, {0x7d, 0x5f, 0xa8, 0xff}}},\n    {{{   922,   1024,   1126}, 0, {  3800,    990}, {0x7d, 0x5f, 0xa8, 0xff}}},\n    {{{  -613,   1229,   1126}, 0, {   734,    478}, {0x7d, 0x5f, 0xa8, 0xff}}},\n    {{{   922,   1229,   1126}, 0, {  3800,    478}, {0x7d, 0x5f, 0xa8, 0xff}}},\n};\n\n// 0x070056E0 - 0x07005760\nstatic const Vtx bits_seg7_vertex_070056E0[] = {\n    {{{  -613,  -1023,    307}, 0, {   734,    990}, {0x54, 0x2b, 0x5e, 0xff}}},\n    {{{  -613,   1024,    307}, 0, {   734,  -4120}, {0x54, 0x2b, 0x5e, 0xff}}},\n    {{{  -613,   1024,   1126}, 0, { -1308,  -4120}, {0x54, 0x2b, 0x5e, 0xff}}},\n    {{{  -613,  -1023,   1126}, 0, { -1308,    990}, {0x54, 0x2b, 0x5e, 0xff}}},\n    {{{   922,   1024,   1126}, 0, {  3034,    990}, {0x34, 0x17, 0x55, 0xff}}},\n    {{{  -613,   1024,   1126}, 0, {     0,    990}, {0x34, 0x17, 0x55, 0xff}}},\n    {{{  -613,   1024,    307}, 0, {     0,   3032}, {0x34, 0x17, 0x55, 0xff}}},\n    {{{   922,   1024,    307}, 0, {  3034,   3032}, {0x34, 0x17, 0x55, 0xff}}},\n};\n\n// 0x07005760 - 0x07005860\nstatic const Vtx bits_seg7_vertex_07005760[] = {\n    {{{ -1433,   -613,   1126}, 0, {   -90,   1110}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{ -1433,   -613,    307}, 0, {  1082,   1110}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{ -1842,   -818,    307}, 0, {  1082,   1768}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{ -1842,   -818,   1126}, 0, {   -90,   1768}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{  -613,   1229,   1126}, 0, {   -90,  -1964}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{ -1023,   1024,    307}, 0, {  1082,  -1308}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{ -1023,   1024,   1126}, 0, {   -90,  -1308}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{  -613,   1229,    307}, 0, {  1082,  -1964}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{ -1842,   -818,   1126}, 0, {   -90,   1768}, {0xff, 0xe5, 0x65, 0xff}}},\n    {{{ -1842,   -818,    307}, 0, {  1082,   1768}, {0xff, 0xe5, 0x65, 0xff}}},\n    {{{ -2661,   -818,    410}, 0, {   934,   2942}, {0xff, 0xe5, 0x65, 0xff}}},\n    {{{ -2661,   -818,   1024}, 0, {    54,   2942}, {0xff, 0xe5, 0x65, 0xff}}},\n    {{{   922,   1229,   1126}, 0, {   -90,  -4166}, {0xff, 0xe5, 0x65, 0xff}}},\n    {{{   922,   1229,    307}, 0, {  1082,  -4166}, {0xff, 0xe5, 0x65, 0xff}}},\n    {{{  -613,   1229,    307}, 0, {  1082,  -1964}, {0xff, 0xe5, 0x65, 0xff}}},\n    {{{  -613,   1229,   1126}, 0, {   -90,  -1964}, {0xff, 0xe5, 0x65, 0xff}}},\n};\n\n// 0x07005860 - 0x070058A0\nstatic const Vtx bits_seg7_vertex_07005860[] = {\n    {{{ -1023,   1024,   1126}, 0, {   -90,  -1308}, {0x82, 0x82, 0x00, 0xff}}},\n    {{{ -1023,   1024,    307}, 0, {  1082,  -1308}, {0x82, 0x82, 0x00, 0xff}}},\n    {{{ -1433,   -613,    307}, 0, {  1082,   1110}, {0x82, 0x82, 0x00, 0xff}}},\n    {{{ -1433,   -613,   1126}, 0, {   -90,   1110}, {0x82, 0x82, 0x00, 0xff}}},\n};\n\n// 0x070058A0 - 0x07005930\nstatic const Gfx bits_seg7_dl_070058A0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_07004880, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  8, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_07004980, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07005930 - 0x07005C50\nstatic const Gfx bits_seg7_dl_07005930[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_07004A00, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0, 15, 12, 11, 0x0),\n    gsSPVertex(bits_seg7_vertex_07004B00, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  8, 11, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_07004C00, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_07004D00, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  0, 0x0,  4,  0,  3, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_07004DF0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 6, 10,  7, 0x0,  0,  2, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_07004EE0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_07004FD0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 3,  5,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 14, 12, 0x0),\n    gsSP1Triangle(14, 15, 12, 0x0),\n    gsSPVertex(bits_seg7_vertex_070050D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_070051D0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  5,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0,  9, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_070052B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 4,  6,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_070053B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_070054A0, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP1Triangle( 0,  4,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07005C50 - 0x07005D38\nstatic const Gfx bits_seg7_dl_07005C50[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_070054F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  9,  8, 11, 0x0),\n    gsSP2Triangles( 5, 12, 13, 0x0,  5, 13, 14, 0x0),\n    gsSP2Triangles( 5, 14,  6, 0x0, 11,  8, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_070055F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  2,  5,  6, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 12, 14, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_070056E0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07005D38 - 0x07005DB8\nstatic const Gfx bits_seg7_dl_07005D38[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bits_seg7_texture_07002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_07005760, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_07005860, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07005DB8 - 0x07005E58\nconst Gfx bits_seg7_dl_07005DB8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bits_seg7_dl_070058A0),\n    gsSPDisplayList(bits_seg7_dl_07005930),\n    gsSPDisplayList(bits_seg7_dl_07005C50),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bits_seg7_dl_07005D38),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/5/geo.inc.c",
    "content": "// 0x0E000478\nconst GeoLayout bits_geo_000478[] = {\n    GEO_CULLING_RADIUS(2500),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bits_seg7_dl_07007AF0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/5/model.inc.c",
    "content": "// 0x07005E58 - 0x07005F58\nstatic const Vtx bits_seg7_vertex_07005E58[] = {\n    {{{ -1228,   -613,    102}, 0, { -9658,   1784}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  -992,   -583,     72}, 0, { -8330,   2806}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  -992,   -613,    102}, 0, { -8482,   2960}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  -343,    430,    -27}, 0, {     0,    990}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  -374,    430,      3}, 0, {  -184,    836}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  -374,   -265,      3}, 0, { -3658,   4310}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  -343,   -265,    -27}, 0, { -3504,   4462}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  -404,   -265,    -27}, 0, { -3812,   4156}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  -374,    430,    -58}, 0, {  -184,    836}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  -374,   -265,    -58}, 0, { -3658,   4310}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{ -1228,   -583,     72}, 0, { -9504,   1632}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  -992,   -583,    133}, 0, { -8330,   2806}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{ -1228,   -583,    133}, 0, { -9504,   1632}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  -992,   -265,    102}, 0, { -6746,   1222}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{ -1023,   -629,    133}, 0, { -8712,   2884}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  -992,   -629,    102}, 0, { -8560,   3036}, {0x3d, 0x3c, 0x76, 0xff}}},\n};\n\n// 0x07005F58 - 0x07006058\nstatic const Vtx bits_seg7_vertex_07005F58[] = {\n    {{{  -992,   -265,    102}, 0, { -6746,   1222}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{ -1023,   -265,    133}, 0, { -6898,   1070}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{ -1023,   -629,    133}, 0, { -8712,   2884}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{ -1054,   -629,    102}, 0, { -8866,   2730}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  -992,   -629,    102}, 0, { -8560,   3036}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{ -1023,   -629,     72}, 0, { -8712,   2884}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{ -1023,   -265,     72}, 0, { -6898,   1070}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  -343,   -250,    -27}, 0, { -3428,   4386}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  -562,   -219,      3}, 0, { -4368,   3138}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  -562,   -250,    -27}, 0, { -4522,   3292}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  -343,   -219,      3}, 0, { -3274,   4232}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  -562,   -219,    -58}, 0, { -4368,   3138}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  -343,   -219,    -58}, 0, { -3274,   4232}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{ -1054,   -629,   -204}, 0, { -8866,   2730}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  -992,   -629,   -204}, 0, { -8560,   3036}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{ -1023,   -629,   -173}, 0, { -8712,   2884}, {0x3d, 0x3c, 0x76, 0xff}}},\n};\n\n// 0x07006058 - 0x07006158\nstatic const Vtx bits_seg7_vertex_07006058[] = {\n    {{{ -1054,   -629,   -204}, 0, { -8866,   2730}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{ -1023,   -629,   -235}, 0, { -8712,   2884}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  -992,   -629,   -204}, 0, { -8560,   3036}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{ -1023,   -265,   -235}, 0, { -6898,   1070}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  -992,   -265,   -204}, 0, { -6746,   1222}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{ -1228,   -613,   -204}, 0, { -9658,   1784}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{ -1228,   -583,   -235}, 0, { -9504,   1632}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  -992,   -583,   -235}, 0, { -8330,   2806}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{ -1023,   -265,   -173}, 0, { -6898,   1070}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{ -1023,   -629,   -173}, 0, { -8712,   2884}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  -992,   -613,   -204}, 0, { -8482,   2960}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{ -1228,   -583,   -173}, 0, { -9504,   1632}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{  -992,   -552,    102}, 0, { -8176,   2654}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{  -992,   -583,     72}, 0, { -8330,   2806}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{ -1228,   -583,     72}, 0, { -9504,   1632}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{ -1228,   -552,    102}, 0, { -9352,   1478}, {0x6b, 0x72, 0xb5, 0xff}}},\n};\n\n// 0x07006158 - 0x07006248\nstatic const Vtx bits_seg7_vertex_07006158[] = {\n    {{{  -343,   -188,    -27}, 0, { -3122,   4080}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{  -343,   -219,    -58}, 0, { -3274,   4232}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{  -562,   -219,    -58}, 0, { -4368,   3138}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{  -562,   -188,    -27}, 0, { -4216,   2986}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{  -992,   -552,   -204}, 0, { -8176,   2654}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{  -992,   -583,   -235}, 0, { -8330,   2806}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{ -1228,   -583,   -235}, 0, { -9504,   1632}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{ -1228,   -552,   -204}, 0, { -9352,   1478}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{  -220,    532,   -488}, 0, {  1182,   1308}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   291,    532,   -488}, 0, {  1820,    670}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   295,    799,  -1043}, 0, {  2518,   1356}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -216,    799,  -1043}, 0, {  1880,   1996}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   961,    512,  -1043}, 0, {  3350,    528}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   961,    512,  -1606}, 0, {  4052,   1228}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   295,    799,  -1606}, 0, {  3222,   2058}, {0xb9, 0xb9, 0xb9, 0xff}}},\n};\n\n// 0x07006248 - 0x07006328\nstatic const Vtx bits_seg7_vertex_07006248[] = {\n    {{{   295,    901,  -1606}, 0, {  3222,   2058}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   961,    614,  -1606}, 0, {  4052,   1228}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   961,    614,  -1658}, 0, {  4116,   1292}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   295,    901,  -1658}, 0, {  3286,   2122}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   346,    901,   -992}, 0, {  2518,   1228}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   961,    614,  -1043}, 0, {  3350,    528}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   295,    901,  -1043}, 0, {  2518,   1356}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   961,    614,   -992}, 0, {  3286,    464}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   291,    635,   -488}, 0, {  1820,    670}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{   342,    635,   -488}, 0, {  1884,    606}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -267,    901,  -1043}, 0, {  1816,   2058}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -220,    635,   -488}, 0, {  1182,   1308}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -216,    901,  -1043}, 0, {  1880,   1996}, {0xb9, 0xb9, 0xb9, 0xff}}},\n    {{{  -271,    635,   -488}, 0, {  1118,   1372}, {0xb9, 0xb9, 0xb9, 0xff}}},\n};\n\n// 0x07006328 - 0x07006418\nstatic const Vtx bits_seg7_vertex_07006328[] = {\n    {{{  -267,    901,  -1043}, 0, {  1816,   2058}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -216,    901,  -1043}, 0, {  1880,   1996}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -216,    901,  -1606}, 0, {  2582,   2698}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   961,    614,  -1606}, 0, {  4052,   1228}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1370,    614,  -1658}, 0, {  4626,    784}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   961,    614,  -1658}, 0, {  4116,   1292}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1370,    614,  -1606}, 0, {  4562,    720}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   961,    614,   -992}, 0, {  3286,    464}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1370,    614,  -1043}, 0, {  3860,     16}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   961,    614,  -1043}, 0, {  3350,    528}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1370,    614,   -992}, 0, {  3796,    -46}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1473,    512,  -1606}, 0, {  4690,    592}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   961,    512,  -1606}, 0, {  4052,   1228}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   961,    512,  -1043}, 0, {  3350,    528}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1473,    512,  -1043}, 0, {  3988,   -110}, {0xc8, 0xc8, 0xc8, 0xff}}},\n};\n\n// 0x07006418 - 0x070064F8\nstatic const Vtx bits_seg7_vertex_07006418[] = {\n    {{{   295,    901,  -1606}, 0, {  3222,   2058}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -267,    901,  -1658}, 0, {  2582,   2826}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -216,    901,  -1606}, 0, {  2582,   2698}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -267,    901,  -1043}, 0, {  1816,   2058}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   295,    901,  -1658}, 0, {  3286,   2122}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   291,    532,   -488}, 0, {  1820,    670}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -271,    532,    126}, 0, {   352,    606}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   291,    532,     75}, 0, {  1118,      0}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -578,    532,   -488}, 0, {   734,   1754}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -578,    532,    126}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -216,    799,  -1043}, 0, {  1880,   1996}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   295,    799,  -1043}, 0, {  2518,   1356}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   295,    799,  -1606}, 0, {  3222,   2058}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -216,    799,  -1606}, 0, {  2582,   2698}, {0xc8, 0xc8, 0xc8, 0xff}}},\n};\n\n// 0x070064F8 - 0x070065D8\nstatic const Vtx bits_seg7_vertex_070064F8[] = {\n    {{{   342,    635,   -488}, 0, {  1884,    606}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   291,    635,     75}, 0, {  1118,      0}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   342,    635,    126}, 0, {  1118,   -160}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   291,    635,   -488}, 0, {  1820,    670}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -271,    635,     75}, 0, {   416,    670}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -271,    635,    126}, 0, {   352,    606}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1330,   -163,   -255}, 0, {   480,   1500}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1330,   -163,    154}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -562,   -163,    154}, 0, {   926,     32}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -562,   -163,   -255}, 0, {  1438,    542}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -204,    195,    126}, 0, {  1122,    952}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -562,    195,    126}, 0, {   526,   1546}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -562,    195,    461}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -204,    195,    461}, 0, {   564,    394}, {0xc8, 0xc8, 0xc8, 0xff}}},\n};\n\n// 0x070065D8 - 0x070066D8\nstatic const Vtx bits_seg7_vertex_070065D8[] = {\n    {{{  -343,   -265,    -27}, 0, { -3504,   4462}, {0x47, 0x4f, 0x97, 0xff}}},\n    {{{  -374,   -265,    -58}, 0, { -3658,   4310}, {0x47, 0x4f, 0x97, 0xff}}},\n    {{{  -374,    430,    -58}, 0, {  -184,    836}, {0x47, 0x4f, 0x97, 0xff}}},\n    {{{  -992,   -613,    102}, 0, { -8482,   2960}, {0x47, 0x4f, 0x97, 0xff}}},\n    {{{  -992,   -552,    102}, 0, { -8176,   2654}, {0x47, 0x4f, 0x97, 0xff}}},\n    {{{  -992,   -583,    133}, 0, { -8330,   2806}, {0x47, 0x4f, 0x97, 0xff}}},\n    {{{  -992,   -583,     72}, 0, { -8330,   2806}, {0x47, 0x4f, 0x97, 0xff}}},\n    {{{  -343,   -250,    -27}, 0, { -3428,   4386}, {0x47, 0x4f, 0x97, 0xff}}},\n    {{{  -343,   -188,    -27}, 0, { -3122,   4080}, {0x47, 0x4f, 0x97, 0xff}}},\n    {{{  -343,   -219,      3}, 0, { -3274,   4232}, {0x47, 0x4f, 0x97, 0xff}}},\n    {{{  -343,   -219,    -58}, 0, { -3274,   4232}, {0x47, 0x4f, 0x97, 0xff}}},\n    {{{  -992,   -613,   -204}, 0, { -8482,   2960}, {0x47, 0x4f, 0x97, 0xff}}},\n    {{{  -992,   -583,   -173}, 0, { -8330,   2806}, {0x47, 0x4f, 0x97, 0xff}}},\n    {{{ -1228,   -583,   -173}, 0, { -9504,   1632}, {0x47, 0x4f, 0x97, 0xff}}},\n    {{{  -992,   -552,   -204}, 0, { -8176,   2654}, {0x47, 0x4f, 0x97, 0xff}}},\n    {{{  -992,   -583,   -235}, 0, { -8330,   2806}, {0x47, 0x4f, 0x97, 0xff}}},\n};\n\n// 0x070066D8 - 0x070067C8\nstatic const Vtx bits_seg7_vertex_070066D8[] = {\n    {{{ -1228,   -552,    102}, 0, { -9352,   1478}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{ -1228,   -583,    133}, 0, { -9504,   1632}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  -992,   -583,    133}, 0, { -8330,   2806}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  -992,   -552,    102}, 0, { -8176,   2654}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  -562,   -219,      3}, 0, { -4368,   3138}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  -343,   -188,    -27}, 0, { -3122,   4080}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  -562,   -188,    -27}, 0, { -4216,   2986}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  -343,   -219,      3}, 0, { -3274,   4232}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{ -1228,   -552,   -204}, 0, { -9352,   1478}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{ -1228,   -583,   -173}, 0, { -9504,   1632}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  -992,   -583,   -173}, 0, { -8330,   2806}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  -992,   -552,   -204}, 0, { -8176,   2654}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{ -1054,   -265,    102}, 0, { -7052,    918}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{ -1023,   -629,     72}, 0, { -8712,   2884}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{ -1054,   -629,    102}, 0, { -8866,   2730}, {0x52, 0x61, 0xac, 0xff}}},\n};\n\n// 0x070067C8 - 0x070068B8\nstatic const Vtx bits_seg7_vertex_070067C8[] = {\n    {{{  -404,   -265,    -27}, 0, { -3812,   4156}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  -374,    430,      3}, 0, {  -184,    836}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  -404,    430,    -27}, 0, {  -336,    684}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  -374,   -265,      3}, 0, { -3658,   4310}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  -374,    430,    -58}, 0, {  -184,    836}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  -374,   -265,    -58}, 0, { -3658,   4310}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{ -1054,   -629,    102}, 0, { -8866,   2730}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{ -1023,   -629,    133}, 0, { -8712,   2884}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{ -1023,   -265,    133}, 0, { -6898,   1070}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{ -1054,   -265,    102}, 0, { -7052,    918}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{ -1054,   -629,   -204}, 0, { -8866,   2730}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{ -1023,   -629,   -173}, 0, { -8712,   2884}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{ -1023,   -265,   -173}, 0, { -6898,   1070}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{ -1023,   -265,     72}, 0, { -6898,   1070}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{ -1023,   -629,     72}, 0, { -8712,   2884}, {0x52, 0x61, 0xac, 0xff}}},\n};\n\n// 0x070068B8 - 0x070069A8\nstatic const Vtx bits_seg7_vertex_070068B8[] = {\n    {{{ -1054,   -265,   -204}, 0, { -7052,    918}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{ -1023,   -265,   -235}, 0, { -6898,   1070}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{ -1023,   -629,   -235}, 0, { -8712,   2884}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{ -1054,   -629,   -204}, 0, { -8866,   2730}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{ -1023,   -265,   -173}, 0, { -6898,   1070}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  1473,    399,  -1658}, 0, {  1900,   3508}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1473,    512,  -1658}, 0, {  2040,   3368}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1473,    512,   -992}, 0, {  1210,   2536}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1473,    399,   -992}, 0, {  1070,   2678}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   961,    614,  -1043}, 0, {  -572,   1990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1473,    512,  -1043}, 0, { -1338,   2500}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   961,    512,  -1043}, 0, {  -700,   1862}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1370,    614,  -1043}, 0, { -1082,   2500}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   295,    901,  -1043}, 0, {   614,   1518}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   295,    799,  -1043}, 0, {   486,   1390}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x070069A8 - 0x07006A98\nstatic const Vtx bits_seg7_vertex_070069A8[] = {\n    {{{  -216,    799,  -1606}, 0, {  2334,   2946}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -216,    901,  -1043}, 0, {  1760,   2116}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -216,    799,  -1043}, 0, {  1632,   2244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -216,    901,  -1606}, 0, {  2462,   2818}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   342,    635,   -488}, 0, {   734,   1754}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   342,    430,   -488}, 0, {   478,   2010}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   346,    686,   -992}, 0, {  1428,   2320}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -271,    430,   -488}, 0, {   478,   2010}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -271,    635,   -488}, 0, {   734,   1754}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -267,    901,  -1043}, 0, {  1760,   2116}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -267,    686,   -992}, 0, {  1428,   2320}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -220,    635,   -488}, 0, {   734,   1754}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -220,    532,   -488}, 0, {   606,   1882}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -267,    901,  -1658}, 0, {  2526,   2882}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -267,    686,  -1658}, 0, {  2258,   3150}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x07006A98 - 0x07006B78\nstatic const Vtx bits_seg7_vertex_07006A98[] = {\n    {{{   291,    532,     75}, 0, {  1054,    -96}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -271,    635,     75}, 0, {   224,    480}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   291,    635,     75}, 0, {   926,   -224}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   342,    635,    126}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   342,    430,    126}, 0, {  -286,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   342,    430,   -488}, 0, {   478,   2010}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   342,    635,   -488}, 0, {   734,   1754}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   346,    686,   -992}, 0, {  1428,   2320}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   346,    901,   -992}, 0, {  1696,   2052}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -578,    430,   -488}, 0, {   478,   2010}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -578,    430,    126}, 0, {  -286,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -578,    532,    126}, 0, {  -158,   1116}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -578,    532,   -488}, 0, {   606,   1882}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -271,    532,     75}, 0, {   352,    606}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x07006B78 - 0x07006C68\nstatic const Vtx bits_seg7_vertex_07006B78[] = {\n    {{{  -204,    195,   -255}, 0, {  1246,   1074}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -204,     92,    461}, 0, {  -116,     54}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -204,     92,   -255}, 0, {  1076,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -271,    532,    126}, 0, {  -158,   1116}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -271,    635,    126}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -271,    635,     75}, 0, {    32,   1052}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -271,    532,     75}, 0, {   -94,   1180}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1330,   -265,   -255}, 0, {   480,   1840}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1330,   -163,    154}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1330,   -163,   -255}, 0, {   650,   1670}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1330,   -265,    154}, 0, {  -200,   1158}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -562,   -163,   -255}, 0, {   650,   1670}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -562,   -265,    154}, 0, {  -200,   1158}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -562,   -265,   -255}, 0, {   480,   1840}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -562,   -163,    154}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x07006C68 - 0x07006D68\nstatic const Vtx bits_seg7_vertex_07006C68[] = {\n    {{{  -562,     92,   -255}, 0, {  1076,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -562,    195,    461}, 0, {    54,   -118}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -562,    195,   -255}, 0, {  1246,   1074}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -204,    195,   -255}, 0, {  1246,   1074}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -204,    195,    461}, 0, {    54,   -118}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -204,     92,    461}, 0, {  -116,     54}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -562,     92,    461}, 0, {  -116,     54}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -267,    686,   -992}, 0, {  1752,   1996}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   346,    686,   -992}, 0, {  2518,   1228}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   342,    430,   -488}, 0, {  1884,    606}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -267,    686,  -1658}, 0, {  2582,   2826}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   346,    686,  -1658}, 0, {  3350,   2058}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -271,    430,   -488}, 0, {  1118,   1372}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1473,    399,   -992}, 0, {  3924,   -174}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   961,    399,   -992}, 0, {  3286,    464}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   961,    399,  -1658}, 0, {  4116,   1292}, {0x44, 0x44, 0x44, 0xff}}},\n};\n\n// 0x07006D68 - 0x07006E58\nstatic const Vtx bits_seg7_vertex_07006D68[] = {\n    {{{  1473,    399,   -992}, 0, {  3924,   -174}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   961,    399,  -1658}, 0, {  4116,   1292}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1473,    399,  -1658}, 0, {  4754,    656}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   342,    430,    126}, 0, {  1118,   -160}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -578,    430,   -488}, 0, {   734,   1754}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   342,    430,   -488}, 0, {  1884,    606}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -578,    430,    126}, 0, {     0,    990}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -562,   -265,   -255}, 0, {  1438,    542}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -562,   -265,    154}, 0, {   926,     32}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1330,   -265,    154}, 0, {     0,    990}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1330,   -265,   -255}, 0, {   480,   1500}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -204,     92,   -255}, 0, {  2352,      0}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -562,     92,    461}, 0, {   564,   -628}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -562,     92,   -255}, 0, {  1756,    564}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -204,     92,    461}, 0, {  1160,  -1224}, {0x44, 0x44, 0x44, 0xff}}},\n};\n\n// 0x07006E58 - 0x07006F58\nstatic const Vtx bits_seg7_vertex_07006E58[] = {\n    {{{   961,    399,  -1658}, 0, {  4116,   1292}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{   961,    399,   -992}, 0, {  3286,    464}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{   346,    686,   -992}, 0, {  2518,   1228}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{   346,    686,  -1658}, 0, {  3350,   2058}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{   961,    614,   -992}, 0, {  1788,  -1034}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1473,    512,   -992}, 0, {  2554,  -1544}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1370,    614,   -992}, 0, {  2298,  -1544}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   295,    799,  -1606}, 0, {   726,   -434}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   961,    512,  -1606}, 0, {  1916,   -906}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   961,    614,  -1606}, 0, {  1788,  -1034}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1473,    512,  -1606}, 0, {  2554,  -1544}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1370,    614,  -1606}, 0, {  2298,  -1544}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   295,    901,  -1606}, 0, {   600,   -562}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   346,    901,   -992}, 0, {   664,   -624}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   346,    686,   -992}, 0, {   932,   -356}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   961,    399,   -992}, 0, {  2056,   -766}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x07006F58 - 0x07007058\nstatic const Vtx bits_seg7_vertex_07006F58[] = {\n    {{{   961,    614,   -992}, 0, {  1788,  -1034}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   961,    399,   -992}, 0, {  2056,   -766}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1473,    399,   -992}, 0, {  2694,  -1404}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1473,    512,   -992}, 0, {  2554,  -1544}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -267,    901,  -1658}, 0, {  -102,    142}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   346,    686,  -1658}, 0, {   932,   -356}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -267,    686,  -1658}, 0, {   164,    410}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -216,    799,  -1606}, 0, {    88,    206}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   295,    799,  -1606}, 0, {   726,   -434}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   295,    901,  -1606}, 0, {   600,   -562}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -216,    901,  -1606}, 0, {   -38,     78}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   961,    399,  -1658}, 0, {  2056,   -766}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1473,    512,  -1658}, 0, {  2554,  -1544}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1473,    399,  -1658}, 0, {  2694,  -1404}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   295,    901,  -1658}, 0, {   600,   -562}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   961,    614,  -1658}, 0, {  1788,  -1034}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x07007058 - 0x07007138\nstatic const Vtx bits_seg7_vertex_07007058[] = {\n    {{{   961,    399,  -1658}, 0, {  2056,   -766}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1370,    614,  -1658}, 0, {  2298,  -1544}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1473,    512,  -1658}, 0, {  2554,  -1544}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   961,    614,  -1658}, 0, {  1788,  -1034}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -267,    901,  -1658}, 0, {  -102,    142}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   295,    901,  -1658}, 0, {   600,   -562}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   346,    686,  -1658}, 0, {   932,   -356}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -204,    195,    461}, 0, {  2268,   2096}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -562,    195,    461}, 0, {  1672,   1500}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -562,     92,    461}, 0, {  1500,   1670}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -271,    532,   -488}, 0, {   606,    606}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -220,    532,   -488}, 0, {   542,    670}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -220,    635,   -488}, 0, {   670,    798}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -271,    635,   -488}, 0, {   734,    734}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x07007138 - 0x07007218\nstatic const Vtx bits_seg7_vertex_07007138[] = {\n    {{{  -578,    532,   -488}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -271,    532,   -488}, 0, {   352,    606}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -271,    430,   -488}, 0, {   478,    734}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -578,    430,   -488}, 0, {    96,   1116}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -562,   -163,    154}, 0, {   926,     32}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1330,   -163,    154}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1330,   -265,    154}, 0, {    96,   1116}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -562,   -265,    154}, 0, {  1054,    160}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -562,    195,    126}, 0, {   526,   1546}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -204,    195,    126}, 0, {  1122,    952}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -204,    195,   -255}, 0, {  1756,   1584}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -204,    195,    461}, 0, {  2268,   2096}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -562,     92,    461}, 0, {  1500,   1670}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -204,     92,    461}, 0, {  2098,   2266}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x07007218 - 0x07007308\nstatic const Vtx bits_seg7_vertex_07007218[] = {\n    {{{  -562,   -265,   -255}, 0, {  1054,    160}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1330,   -265,   -255}, 0, {    96,   1116}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1330,   -163,   -255}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -562,   -163,   -255}, 0, {   926,     32}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -204,     92,   -255}, 0, {  2098,   2266}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -562,    195,   -255}, 0, {  1672,   1500}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -204,    195,   -255}, 0, {  2268,   2096}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -562,     92,   -255}, 0, {  1500,   1670}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -562,    195,    126}, 0, {   526,   1546}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -204,    195,   -255}, 0, {  1756,   1584}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -562,    195,   -255}, 0, {  1160,   2180}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -578,    532,    126}, 0, {    96,    862}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -578,    430,    126}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   342,    430,    126}, 0, {  1118,   2138}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -271,    532,    126}, 0, {   478,   1244}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x07007308 - 0x070073F8\nstatic const Vtx bits_seg7_vertex_07007308[] = {\n    {{{   342,    430,    126}, 0, {  1118,   2138}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   342,    635,    126}, 0, {  1374,   1882}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -271,    635,    126}, 0, {   606,   1116}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -271,    532,    126}, 0, {   478,   1244}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   291,    635,   -488}, 0, {   734,   1754}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   291,    532,     75}, 0, {   -94,   1180}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   291,    635,     75}, 0, {    32,   1052}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1473,    512,  -1658}, 0, {  2040,   3368}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1370,    614,  -1606}, 0, {  2104,   3176}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1473,    512,  -1606}, 0, {  1976,   3304}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1370,    614,  -1658}, 0, {  2168,   3240}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1473,    512,  -1043}, 0, {  1274,   2600}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1370,    614,  -1043}, 0, {  1402,   2474}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1370,    614,   -992}, 0, {  1338,   2410}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1473,    512,   -992}, 0, {  1210,   2536}, {0x96, 0x96, 0x96, 0xff}}},\n};\n\n// 0x070073F8 - 0x07007448\nstatic const Vtx bits_seg7_vertex_070073F8[] = {\n    {{{   291,    532,   -488}, 0, {   606,   1882}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   295,    901,  -1043}, 0, {  1760,   2116}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   295,    799,  -1043}, 0, {  1632,   2244}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   291,    635,   -488}, 0, {   734,   1754}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   291,    532,     75}, 0, {   -94,   1180}, {0x96, 0x96, 0x96, 0xff}}},\n};\n\n// 0x07007448 - 0x07007AF0\nstatic const Gfx bits_seg7_dl_07007448[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_07005E58, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  6,  5, 0x0),\n    gsSP2Triangles( 6,  8,  3, 0x0,  7,  9,  6, 0x0),\n    gsSP2Triangles( 0, 10,  1, 0x0,  2, 11, 12, 0x0),\n    gsSP2Triangles( 2, 12,  0, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_07005F58, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  0, 0x0),\n    gsSP2Triangles( 3,  5,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12,  7, 0x0),\n    gsSP2Triangles(11,  7,  9, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_07006058, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 4,  8,  9, 0x0,  4,  9,  2, 0x0),\n    gsSP2Triangles(10, 11,  5, 0x0,  5,  7, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_07006158, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(10, 12, 13, 0x0, 10, 13, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_07006248, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  4,  6, 0x0,  8,  9,  4, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(bits_seg7_vertex_07006328, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_07006418, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  9, 0x0,  5,  9,  6, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_070064F8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  2, 0x0,  4,  2,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_070065D8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0, 11, 15, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_070066D8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_070067C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  2,  5,  0, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  9, 13, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_070068B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  4,  0, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13,  9, 11, 0x0),\n    gsSP1Triangle(13, 11, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_070069A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  2, 11, 12, 0x0),\n    gsSP2Triangles( 2,  1, 11, 0x0, 10,  9, 13, 0x0),\n    gsSP1Triangle(10, 13, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_07006A98, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 11, 12, 0x0),\n    gsSP1Triangle( 0, 13,  1, 0x0),\n    gsSPVertex(bits_seg7_vertex_07006B78, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bits_seg7_vertex_07006C68, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0,  8,  7, 10, 0x0),\n    gsSP2Triangles( 7,  9, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_07006D68, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bits_seg7_vertex_07006E58, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles( 7,  9, 12, 0x0,  4, 13, 14, 0x0),\n    gsSP1Triangle( 4, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_07006F58, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11,  5, 14, 0x0, 11, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_07007058, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_07007138, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_07007218, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(13, 14, 11, 0x0),\n    gsSPVertex(bits_seg7_vertex_07007308, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_070073F8, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP1Triangle( 3,  0,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007AF0 - 0x07007B60\nconst Gfx bits_seg7_dl_07007AF0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bits_seg7_dl_07007448),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/6/geo.inc.c",
    "content": "// 0x0E000490\nconst GeoLayout bits_geo_000490[] = {\n    GEO_CULLING_RADIUS(1000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bits_seg7_dl_07007C28),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/6/model.inc.c",
    "content": "// 0x07007B60 - 0x07007BE0\nstatic const Vtx bits_seg7_vertex_07007B60[] = {\n    {{{  -716,      0,   -306}, 0, {   480,    990}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   717,      0,   -306}, 0, { 14788,    990}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   717,    102,   -306}, 0, { 14788,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -716,    102,   -306}, 0, {   480,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -716,      0,    307}, 0, {   480,    990}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   717,      0,    307}, 0, { 14788,    990}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   717,    102,    307}, 0, { 14788,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -716,    102,    307}, 0, {   480,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n};\n\n// 0x07007BE0 - 0x07007C28\nstatic const Gfx bits_seg7_dl_07007BE0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_07007B60, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007C28 - 0x07007C98\nconst Gfx bits_seg7_dl_07007C28[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bits_seg7_dl_07007BE0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/7/geo.inc.c",
    "content": "// 0x0E0004A8\nconst GeoLayout bits_geo_0004A8[] = {\n    GEO_CULLING_RADIUS(1000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bits_seg7_dl_07007EC8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/7/model.inc.c",
    "content": "// 0x07007C98 - 0x07007D18\nstatic const Vtx bits_seg7_vertex_07007C98[] = {\n    {{{   717,      0,    307}, 0, {  6270,   6268}, {0x44, 0x53, 0x41, 0xff}}},\n    {{{  -716,      0,    307}, 0, {  3886,   3884}, {0x44, 0x53, 0x41, 0xff}}},\n    {{{  -716,      0,   -306}, 0, {  2864,   4906}, {0x44, 0x53, 0x41, 0xff}}},\n    {{{   717,      0,   -306}, 0, {  5248,   7290}, {0x44, 0x53, 0x41, 0xff}}},\n    {{{   717,    205,   -306}, 0, {  1842,   3884}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{  -716,    205,    307}, 0, {   480,    480}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{   717,    205,    307}, 0, {  2864,   2862}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{  -716,    205,   -306}, 0, {  -540,   1500}, {0xbc, 0xca, 0xbf, 0xff}}},\n};\n\n// 0x07007D18 - 0x07007E18\nstatic const Vtx bits_seg7_vertex_07007D18[] = {\n    {{{   717,    205,   -306}, 0, {     0,      0}, {0x6e, 0x7c, 0x6c, 0xff}}},\n    {{{   717,      0,   -306}, 0, {     0,    990}, {0x6e, 0x7c, 0x6c, 0xff}}},\n    {{{  -716,      0,   -306}, 0, {  6120,    990}, {0x6e, 0x7c, 0x6c, 0xff}}},\n    {{{  -716,    205,   -306}, 0, {  6120,      0}, {0x6e, 0x7c, 0x6c, 0xff}}},\n    {{{  -716,    205,    307}, 0, {     0,      0}, {0x6e, 0x7c, 0x6c, 0xff}}},\n    {{{   717,      0,    307}, 0, {  6120,    990}, {0x6e, 0x7c, 0x6c, 0xff}}},\n    {{{   717,    205,    307}, 0, {  6120,      0}, {0x6e, 0x7c, 0x6c, 0xff}}},\n    {{{  -716,      0,    307}, 0, {     0,    990}, {0x6e, 0x7c, 0x6c, 0xff}}},\n    {{{  -716,    205,   -306}, 0, { -1048,      0}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{  -716,      0,   -306}, 0, { -1052,    990}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{  -716,      0,    307}, 0, {  2012,    990}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{  -716,    205,    307}, 0, {  2012,      0}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{   717,    205,    307}, 0, {     0,      0}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{   717,      0,   -306}, 0, {  3036,    990}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{   717,    205,   -306}, 0, {  3036,      0}, {0x88, 0x98, 0x84, 0xff}}},\n    {{{   717,      0,    307}, 0, {     0,    990}, {0x88, 0x98, 0x84, 0xff}}},\n};\n\n// 0x07007E18 - 0x07007E60\nstatic const Gfx bits_seg7_dl_07007E18[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_07007C98, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007E60 - 0x07007EC8\nstatic const Gfx bits_seg7_dl_07007E60[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bits_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_07007D18, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007EC8 - 0x07007F58\nconst Gfx bits_seg7_dl_07007EC8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bits_seg7_dl_07007E18),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bits_seg7_dl_07007E60),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/8/geo.inc.c",
    "content": "// 0x0E0004C0\nconst GeoLayout bits_geo_0004C0[] = {\n    GEO_CULLING_RADIUS(2700),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bits_seg7_dl_07008D18),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/8/model.inc.c",
    "content": "// 0x07007F58 - 0x07008058\nstatic const Vtx bits_seg7_vertex_07007F58[] = {\n    {{{ -1842,    -25,    589}, 0, {  1502,    734}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{ -1228,    -25,     77}, 0, {     0,   -544}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{ -1842,    -25,    179}, 0, {  1502,   -288}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{ -1228,    -25,    691}, 0, {     0,    990}, {0xb1, 0xbf, 0xfa, 0xff}}},\n    {{{ -2047,   -434,    589}, 0, {     0,    308}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{ -1842,    -25,    179}, 0, {   514,  -1326}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{ -2047,   -434,    179}, 0, {  1058,   -236}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{ -1842,    -25,    589}, 0, {  -576,   -782}, {0x6b, 0x72, 0xb5, 0xff}}},\n    {{{ -2047,   -434,    589}, 0, { -2482,   1534}, {0x41, 0x45, 0x98, 0xff}}},\n    {{{ -1228,    -25,    691}, 0, {  -848,   -646}, {0x41, 0x45, 0x98, 0xff}}},\n    {{{ -1842,    -25,    589}, 0, { -2482,    172}, {0x41, 0x45, 0x98, 0xff}}},\n    {{{ -1228,   -639,    691}, 0, {     0,    990}, {0x41, 0x45, 0x98, 0xff}}},\n    {{{ -1842,    -25,    179}, 0, {   786,   3440}, {0x41, 0x45, 0x98, 0xff}}},\n    {{{ -1228,    -25,     77}, 0, {  -848,   2624}, {0x41, 0x45, 0x98, 0xff}}},\n    {{{ -2047,   -434,    179}, 0, {  1876,   2624}, {0x41, 0x45, 0x98, 0xff}}},\n    {{{ -1228,   -639,     77}, 0, {     0,    990}, {0x41, 0x45, 0x98, 0xff}}},\n};\n\n// 0x07008058 - 0x07008098\nstatic const Vtx bits_seg7_vertex_07008058[] = {\n    {{{ -1228,   -434,     77}, 0, {  1330,   -372}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{ -1228,    -25,    691}, 0, {  -848,   -646}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{ -1228,   -434,    691}, 0, {  -302,    444}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{ -1228,    -25,     77}, 0, {   786,  -1462}, {0x52, 0x61, 0xac, 0xff}}},\n};\n\n// 0x07008098 - 0x07008188\nstatic const Vtx bits_seg7_vertex_07008098[] = {\n    {{{ -2047,   -434,    589}, 0, {  1672,  -1820}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{ -2047,   -434,    179}, 0, {   308,  -1820}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{ -1228,   -639,     77}, 0, {     0,    990}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{ -1228,   -639,    691}, 0, {  2012,    990}, {0x3d, 0x3c, 0x76, 0xff}}},\n    {{{   410,   -741,    538}, 0, {     0,    990}, {0x3a, 0x4c, 0x39, 0xff}}},\n    {{{   410,   -741,    230}, 0, {  -540,   1498}, {0x3a, 0x4c, 0x39, 0xff}}},\n    {{{  1331,   -741,    230}, 0, {  1502,   3542}, {0x3a, 0x4c, 0x39, 0xff}}},\n    {{{  1331,   -741,    538}, 0, {  2012,   3032}, {0x3a, 0x4c, 0x39, 0xff}}},\n    {{{  1946,   -741,     78}, 0, {  1758,   4308}, {0x3a, 0x4c, 0x39, 0xff}}},\n    {{{  2355,   -741,     77}, 0, {  2438,   4990}, {0x3a, 0x4c, 0x39, 0xff}}},\n    {{{  1331,   -741,    230}, 0, {   480,   1498}, {0x3a, 0x4c, 0x39, 0xff}}},\n    {{{  1946,   -741,    693}, 0, {   732,   -290}, {0x3a, 0x4c, 0x39, 0xff}}},\n    {{{  1331,   -741,    538}, 0, {     0,    990}, {0x3a, 0x4c, 0x39, 0xff}}},\n    {{{  2355,   -741,    691}, 0, {  1416,   -968}, {0x3a, 0x4c, 0x39, 0xff}}},\n    {{{  2355,   -741,     77}, 0, {  2438,     54}, {0x3a, 0x4c, 0x39, 0xff}}},\n};\n\n// 0x07008188 - 0x07008288\nstatic const Vtx bits_seg7_vertex_07008188[] = {\n    {{{  1485,    282,    691}, 0, {  5178,   2642}, {0x3a, 0x4c, 0x39, 0xff}}},\n    {{{  -101,    282,    691}, 0, {  9138,  -1316}, {0x3a, 0x4c, 0x39, 0xff}}},\n    {{{  -101,    282,     77}, 0, {  7606,  -2850}, {0x3a, 0x4c, 0x39, 0xff}}},\n    {{{   631,    282,   -683}, 0, {  3878,  -2920}, {0x3a, 0x4c, 0x39, 0xff}}},\n    {{{ -1228,   -639,     77}, 0, {  -540,   1500}, {0x3a, 0x4c, 0x39, 0xff}}},\n    {{{   205,   -639,    691}, 0, {  2864,   2862}, {0x3a, 0x4c, 0x39, 0xff}}},\n    {{{ -1228,   -639,    691}, 0, {   480,    480}, {0x3a, 0x4c, 0x39, 0xff}}},\n    {{{   205,   -639,     77}, 0, {  1842,   3884}, {0x3a, 0x4c, 0x39, 0xff}}},\n    {{{  2197,    282,   -325}, 0, {   862,   1882}, {0x3a, 0x4c, 0x39, 0xff}}},\n    {{{  2197,    282,   -683}, 0, {     0,    990}, {0x3a, 0x4c, 0x39, 0xff}}},\n    {{{  1946,   -434,     78}, 0, {  1754,    732}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{  2355,   -434,    691}, 0, {  1416,   -968}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{  2355,   -434,     77}, 0, {  2438,     54}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{  1331,   -434,    230}, 0, {   478,   1500}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{  1331,   -434,    538}, 0, {     0,    990}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{  1946,   -434,    693}, 0, {   732,   -290}, {0xbc, 0xca, 0xbf, 0xff}}},\n};\n\n// 0x07008288 - 0x07008388\nstatic const Vtx bits_seg7_vertex_07008288[] = {\n    {{{   410,   -434,    538}, 0, {     0,    990}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{  1024,   -434,    538}, 0, {   990,   2010}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{  1024,   -434,    230}, 0, {   480,   2520}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{   410,   -434,    230}, 0, {  -540,   1498}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{  1024,   -639,    538}, 0, {   990,   2010}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{  1331,   -639,    538}, 0, {  2012,   3032}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{  1331,   -639,    229}, 0, {  1498,   3546}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{  1024,   -639,    230}, 0, {   480,   2520}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{ -1228,   -434,    691}, 0, {   480,    480}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{   205,   -434,    691}, 0, {  2864,   2862}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{   205,   -434,     77}, 0, {  1842,   3884}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{ -1228,   -434,     77}, 0, {  -540,   1500}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{  -101,    486,    691}, 0, {  1570,  -4272}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{  1485,    486,    691}, 0, {  5530,   -310}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{   631,    486,   -683}, 0, {     0,    990}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{  -101,    486,     77}, 0, {    38,  -2738}, {0xbc, 0xca, 0xbf, 0xff}}},\n};\n\n// 0x07008388 - 0x07008468\nstatic const Vtx bits_seg7_vertex_07008388[] = {\n    {{{  1485,    486,    691}, 0, {  5530,   -310}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{  2197,    486,   -325}, 0, {  4772,   4002}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{   631,    486,   -683}, 0, {     0,    990}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{  2197,    486,   -683}, 0, {  3878,   4898}, {0xbc, 0xca, 0xbf, 0xff}}},\n    {{{  -665,    179,    691}, 0, {  1194,    444}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -665,    179,     77}, 0, {  1194,    444}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -869,    179,     77}, 0, {   514,    444}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -869,    179,    691}, 0, {   514,    444}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -665,    179,     77}, 0, {  1194,    444}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{  -767,    -25,     77}, 0, {  1398,    582}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{  -869,    179,     77}, 0, {   514,    444}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{  -869,    179,    691}, 0, {   514,    444}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{  -767,    -25,    691}, 0, {  1398,    582}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{  -665,    179,    691}, 0, {  1194,    444}, {0x50, 0x50, 0x50, 0xff}}},\n};\n\n// 0x07008468 - 0x070084C8\nstatic const Vtx bits_seg7_vertex_07008468[] = {\n    {{{  -869,    179,    691}, 0, {   514,    444}, {0x32, 0x32, 0x32, 0xff}}},\n    {{{  -869,    179,     77}, 0, {   514,    444}, {0x32, 0x32, 0x32, 0xff}}},\n    {{{  -767,    -25,     77}, 0, {  1398,    582}, {0x32, 0x32, 0x32, 0xff}}},\n    {{{  -767,    -25,    691}, 0, {  1398,    582}, {0x32, 0x32, 0x32, 0xff}}},\n    {{{  -665,    179,     77}, 0, {  1194,    444}, {0x32, 0x32, 0x32, 0xff}}},\n    {{{  -665,    179,    691}, 0, {  1194,    444}, {0x32, 0x32, 0x32, 0xff}}},\n};\n\n// 0x070084C8 - 0x070085C8\nstatic const Vtx bits_seg7_vertex_070084C8[] = {\n    {{{   410,   -741,    230}, 0, {  -200,    990}, {0x5c, 0x6b, 0x58, 0xff}}},\n    {{{  1024,   -639,    230}, 0, {  1842,    650}, {0x5c, 0x6b, 0x58, 0xff}}},\n    {{{  1331,   -639,    230}, 0, {  3886,    650}, {0x5c, 0x6b, 0x58, 0xff}}},\n    {{{  1331,   -741,    230}, 0, {  3886,    990}, {0x5c, 0x6b, 0x58, 0xff}}},\n    {{{   410,   -434,    230}, 0, {  -200,      0}, {0x5c, 0x6b, 0x58, 0xff}}},\n    {{{  1024,   -434,    230}, 0, {  1842,      0}, {0x5c, 0x6b, 0x58, 0xff}}},\n    {{{  1024,   -639,    538}, 0, {  2012,    650}, {0x5c, 0x6b, 0x58, 0xff}}},\n    {{{   410,   -434,    538}, 0, {     0,      0}, {0x5c, 0x6b, 0x58, 0xff}}},\n    {{{   410,   -741,    538}, 0, {     0,    990}, {0x5c, 0x6b, 0x58, 0xff}}},\n    {{{  1024,   -434,    538}, 0, {  2012,      0}, {0x5c, 0x6b, 0x58, 0xff}}},\n    {{{  1331,   -639,    538}, 0, {  3034,    650}, {0x5c, 0x6b, 0x58, 0xff}}},\n    {{{  1331,   -741,    538}, 0, {  3034,    990}, {0x5c, 0x6b, 0x58, 0xff}}},\n    {{{  2355,   -434,     77}, 0, {  6440,      0}, {0x5c, 0x6b, 0x58, 0xff}}},\n    {{{  2355,   -741,     77}, 0, {  6440,    990}, {0x5c, 0x6b, 0x58, 0xff}}},\n    {{{  1946,   -741,     78}, 0, {  5078,    990}, {0x5c, 0x6b, 0x58, 0xff}}},\n    {{{  1946,   -434,     78}, 0, {  5078,      0}, {0x5c, 0x6b, 0x58, 0xff}}},\n};\n\n// 0x070085C8 - 0x070086C8\nstatic const Vtx bits_seg7_vertex_070085C8[] = {\n    {{{  1946,   -434,    693}, 0, {  5078,      0}, {0x5c, 0x6b, 0x58, 0xff}}},\n    {{{  2355,   -741,    691}, 0, {  6440,    990}, {0x5c, 0x6b, 0x58, 0xff}}},\n    {{{  2355,   -434,    691}, 0, {  6440,      0}, {0x5c, 0x6b, 0x58, 0xff}}},\n    {{{  1946,   -741,    693}, 0, {  5078,    990}, {0x5c, 0x6b, 0x58, 0xff}}},\n    {{{  1024,   -639,    230}, 0, {  1330,    650}, {0x68, 0x77, 0x61, 0xff}}},\n    {{{  1024,   -434,    538}, 0, {   308,      0}, {0x68, 0x77, 0x61, 0xff}}},\n    {{{  1024,   -639,    538}, 0, {   308,    650}, {0x68, 0x77, 0x61, 0xff}}},\n    {{{  1024,   -434,    230}, 0, {  1330,      0}, {0x68, 0x77, 0x61, 0xff}}},\n    {{{  1946,   -434,    693}, 0, {  5078,      0}, {0x68, 0x77, 0x61, 0xff}}},\n    {{{  1331,   -741,    538}, 0, {  3034,    990}, {0x68, 0x77, 0x61, 0xff}}},\n    {{{  1946,   -741,    693}, 0, {  5078,    990}, {0x68, 0x77, 0x61, 0xff}}},\n    {{{  1331,   -434,    538}, 0, {  3034,      0}, {0x68, 0x77, 0x61, 0xff}}},\n    {{{  1331,   -434,    230}, 0, {  3034,      0}, {0x68, 0x77, 0x61, 0xff}}},\n    {{{  1946,   -741,     78}, 0, {  5078,    990}, {0x68, 0x77, 0x61, 0xff}}},\n    {{{  1331,   -741,    230}, 0, {  3034,    990}, {0x68, 0x77, 0x61, 0xff}}},\n    {{{  1946,   -434,     78}, 0, {  5078,      0}, {0x68, 0x77, 0x61, 0xff}}},\n};\n\n// 0x070086C8 - 0x07008788\nstatic const Vtx bits_seg7_vertex_070086C8[] = {\n    {{{  1331,   -639,    538}, 0, {   308,    650}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{  1331,   -434,    230}, 0, {  1330,      0}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{  1331,   -639,    230}, 0, {  1330,    650}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{  1331,   -434,    538}, 0, {   308,      0}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{   410,   -741,    538}, 0, {   308,    990}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{   410,   -434,    230}, 0, {  1330,      0}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{   410,   -741,    230}, 0, {  1330,    990}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{   410,   -434,    538}, 0, {   308,      0}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{  2355,   -434,    691}, 0, {  -200,      0}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{  2355,   -741,     77}, 0, {  1842,    990}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{  2355,   -434,     77}, 0, {  1842,      0}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{  2355,   -741,    691}, 0, {  -200,    990}, {0x74, 0x86, 0x75, 0xff}}},\n};\n\n// 0x07008788 - 0x07008888\nstatic const Vtx bits_seg7_vertex_07008788[] = {\n    {{{  2197,    486,   -683}, 0, { 11140,      0}, {0x5c, 0x6b, 0x58, 0xff}}},\n    {{{  2197,    282,   -683}, 0, { 11140,    990}, {0x5c, 0x6b, 0x58, 0xff}}},\n    {{{   631,    282,   -683}, 0, {  3320,    990}, {0x5c, 0x6b, 0x58, 0xff}}},\n    {{{ -1228,   -434,    691}, 0, {     0,      0}, {0x5c, 0x6b, 0x58, 0xff}}},\n    {{{   205,   -639,    691}, 0, {  6120,    990}, {0x5c, 0x6b, 0x58, 0xff}}},\n    {{{   205,   -434,    691}, 0, {  6120,      0}, {0x5c, 0x6b, 0x58, 0xff}}},\n    {{{ -1228,   -639,    691}, 0, {     0,    990}, {0x5c, 0x6b, 0x58, 0xff}}},\n    {{{  -101,    282,    691}, 0, {   120,    990}, {0x5c, 0x6b, 0x58, 0xff}}},\n    {{{  1485,    282,    691}, 0, {  8040,    990}, {0x5c, 0x6b, 0x58, 0xff}}},\n    {{{  1485,    486,    691}, 0, {  8040,      0}, {0x5c, 0x6b, 0x58, 0xff}}},\n    {{{  -101,    486,    691}, 0, {   120,      0}, {0x5c, 0x6b, 0x58, 0xff}}},\n    {{{   205,   -639,     77}, 0, {     0,    990}, {0x5c, 0x6b, 0x58, 0xff}}},\n    {{{ -1228,   -434,     77}, 0, {  6120,      0}, {0x5c, 0x6b, 0x58, 0xff}}},\n    {{{   205,   -434,     77}, 0, {     0,      0}, {0x5c, 0x6b, 0x58, 0xff}}},\n    {{{ -1228,   -639,     77}, 0, {  6120,    990}, {0x5c, 0x6b, 0x58, 0xff}}},\n    {{{   631,    486,   -683}, 0, {  3320,      0}, {0x5c, 0x6b, 0x58, 0xff}}},\n};\n\n// 0x07008888 - 0x07008988\nstatic const Vtx bits_seg7_vertex_07008888[] = {\n    {{{   631,    282,   -683}, 0, {  -132,    990}, {0x68, 0x77, 0x61, 0xff}}},\n    {{{  -101,    282,     77}, 0, {  5140,    990}, {0x68, 0x77, 0x61, 0xff}}},\n    {{{  -101,    486,     77}, 0, {  5140,      0}, {0x68, 0x77, 0x61, 0xff}}},\n    {{{   631,    486,   -683}, 0, {  -132,      0}, {0x68, 0x77, 0x61, 0xff}}},\n    {{{  1485,    486,    691}, 0, {  -180,      0}, {0x68, 0x77, 0x61, 0xff}}},\n    {{{  2197,    282,   -325}, 0, {  6012,    990}, {0x68, 0x77, 0x61, 0xff}}},\n    {{{  2197,    486,   -325}, 0, {  6012,      0}, {0x68, 0x77, 0x61, 0xff}}},\n    {{{  1485,    282,    691}, 0, {  -180,    990}, {0x68, 0x77, 0x61, 0xff}}},\n    {{{   205,   -434,    691}, 0, {     0,      0}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{   205,   -639,     77}, 0, {  3032,    990}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{   205,   -434,     77}, 0, {  3032,      0}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{   205,   -639,    691}, 0, {     0,    990}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{  -101,    282,    691}, 0, {  2164,    990}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{  -101,    486,     77}, 0, {  -896,      0}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{  -101,    282,     77}, 0, {  -896,    990}, {0x74, 0x86, 0x75, 0xff}}},\n    {{{  -101,    486,    691}, 0, {  2164,      0}, {0x74, 0x86, 0x75, 0xff}}},\n};\n\n// 0x07008988 - 0x07008A08\nstatic const Gfx bits_seg7_dl_07008988[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_07007F58, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_07008058, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008A08 - 0x07008B70\nstatic const Gfx bits_seg7_dl_07008A08[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_07008098, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(10, 13, 11, 0x0, 10, 14, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_07008188, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  0,  3, 0x0,  8,  3,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 14, 0x0),\n    gsSP2Triangles(10, 15, 11, 0x0, 10, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_07008288, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_07008388, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_07008468, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008B70 - 0x07008C68\nstatic const Gfx bits_seg7_dl_07008B70[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_070084C8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10,  8, 11, 0x0, 10,  6,  8, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_070085C8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bits_seg7_vertex_070086C8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008C68 - 0x07008D18\nstatic const Gfx bits_seg7_dl_07008C68[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bits_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_07008788, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(bits_seg7_vertex_07008888, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008D18 - 0x07008DB8\nconst Gfx bits_seg7_dl_07008D18[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bits_seg7_dl_07008988),\n    gsSPDisplayList(bits_seg7_dl_07008A08),\n    gsSPDisplayList(bits_seg7_dl_07008B70),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bits_seg7_dl_07008C68),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/9/geo.inc.c",
    "content": "// 0x0E0004D8\nconst GeoLayout bits_geo_0004D8[] = {\n    GEO_CULLING_RADIUS(1600),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bits_seg7_dl_07008FE8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/9/model.inc.c",
    "content": "// 0x07008DB8 - 0x07008EA8\nstatic const Vtx bits_seg7_vertex_07008DB8[] = {\n    {{{ -1121,    -50,    147}, 0, {  -788,    990}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -388,     51,   -613}, 0, {  8758,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{ -1121,     51,    147}, 0, {  -788,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  1178,    -50,   -255}, 0, {  8598,    990}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  1178,     51,   -255}, 0, {  8598,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   465,     51,    761}, 0, {   582,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   465,    -50,    761}, 0, {   582,    990}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{ -1121,    -50,    761}, 0, {  -644,    990}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   465,    -50,    761}, 0, { 10596,    990}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   465,     51,    761}, 0, { 10596,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{ -1121,     51,    761}, 0, {  -644,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -388,    -50,   -613}, 0, {  -644,    990}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  1178,    -50,   -613}, 0, { 10596,    990}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  1178,     51,   -613}, 0, { 10596,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -388,     51,   -613}, 0, {  -644,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n};\n\n// 0x07008EA8 - 0x07008F58\nstatic const Vtx bits_seg7_vertex_07008EA8[] = {\n    {{{     4,  -1177,    607}, 0, {     0,    990}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   315,  -1177,    607}, 0, {  3034,    990}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   315,  -1074,    607}, 0, {  3034,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{ -1121,    -50,    147}, 0, {  -788,    990}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -388,    -50,   -613}, 0, {  8758,    990}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -388,     51,   -613}, 0, {  8758,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{     4,  -1177,    299}, 0, {     0,    990}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   315,  -1074,    299}, 0, {  3034,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{     4,  -1074,    299}, 0, {     0,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   315,  -1177,    299}, 0, {  3034,    990}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{     4,  -1074,    607}, 0, {     0,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n};\n\n// 0x07008F58 - 0x07008FE8\nstatic const Gfx bits_seg7_dl_07008F58[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bits_seg7_vertex_07008DB8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bits_seg7_vertex_07008EA8, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP1Triangle( 0,  2, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008FE8 - 0x07009058\nconst Gfx bits_seg7_dl_07008FE8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bits_seg7_dl_07008F58),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/collision.inc.c",
    "content": "// 0x07016E18 - 0x0701A76A\nconst Collision bits_seg7_collision_level[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x3D5),\n    COL_VERTEX(554, 6038, -4387),\n    COL_VERTEX(1041, 6038, -3645),\n    COL_VERTEX(1271, 6038, -3579),\n    COL_VERTEX(1041, 6038, -3491),\n    COL_VERTEX(964, 6038, -3158),\n    COL_VERTEX(1271, 6038, -2441),\n    COL_VERTEX(733, 6038, -2928),\n    COL_VERTEX(887, 6038, -3491),\n    COL_VERTEX(733, 6038, -2774),\n    COL_VERTEX(657, 6038, -2441),\n    COL_VERTEX(-571, 6038, -2441),\n    COL_VERTEX(861, 6038, -2032),\n    COL_VERTEX(887, 6038, -3645),\n    COL_VERTEX(-187, 6038, -3645),\n    COL_VERTEX(-341, 6038, -3645),\n    COL_VERTEX(-264, 6038, -3158),\n    COL_VERTEX(-571, 6038, -3568),\n    COL_VERTEX(-187, 6038, -3491),\n    COL_VERTEX(-34, 6038, -2928),\n    COL_VERTEX(-34, 6038, -2774),\n    COL_VERTEX(-162, 6038, -2032),\n    COL_VERTEX(42, 6038, -2441),\n    COL_VERTEX(119, 6038, -2928),\n    COL_VERTEX(856, 6499, -3675),\n    COL_VERTEX(1071, 6499, -3675),\n    COL_VERTEX(549, 6397, -2743),\n    COL_VERTEX(-64, 6396, -2743),\n    COL_VERTEX(-371, 6499, -3460),\n    COL_VERTEX(145, 6038, -4387),\n    COL_VERTEX(-341, 6038, -3491),\n    COL_VERTEX(580, 6038, -2774),\n    COL_VERTEX(119, 6038, -2774),\n    COL_VERTEX(580, 6038, -2928),\n    COL_VERTEX(856, 6499, -3460),\n    COL_VERTEX(1071, 6499, -3460),\n    COL_VERTEX(764, 6397, -2958),\n    COL_VERTEX(549, 6397, -2958),\n    COL_VERTEX(764, 6397, -2743),\n    COL_VERTEX(150, 6396, -2743),\n    COL_VERTEX(150, 6396, -2958),\n    COL_VERTEX(-64, 6396, -2958),\n    COL_VERTEX(-156, 6499, -3675),\n    COL_VERTEX(-371, 6499, -3675),\n    COL_VERTEX(-156, 6499, -3460),\n    COL_VERTEX(-3317, -2457, -718),\n    COL_VERTEX(-3317, -1637, -718),\n    COL_VERTEX(-3375, -1637, -776),\n    COL_VERTEX(-3375, -2457, -776),\n    COL_VERTEX(-3217, -2457, -718),\n    COL_VERTEX(-3217, -1637, -718),\n    COL_VERTEX(-3375, -1637, -876),\n    COL_VERTEX(-3375, -2457, -876),\n    COL_VERTEX(-3317, -1637, -934),\n    COL_VERTEX(-3317, -2457, -934),\n    COL_VERTEX(-3217, -1637, -934),\n    COL_VERTEX(-3217, -2457, -934),\n    COL_VERTEX(-3159, -1637, -876),\n    COL_VERTEX(-3159, -2457, -876),\n    COL_VERTEX(-3159, -2457, -776),\n    COL_VERTEX(-1748, -1330, -1299),\n    COL_VERTEX(-1799, -1330, -1248),\n    COL_VERTEX(-1748, -1330, -1197),\n    COL_VERTEX(-1697, -1330, -1248),\n    COL_VERTEX(52, -1402, -385),\n    COL_VERTEX(129, -1658, -385),\n    COL_VERTEX(52, -1658, -283),\n    COL_VERTEX(-75, -1658, -385),\n    COL_VERTEX(1, -1658, -283),\n    COL_VERTEX(1, -1658, -1143),\n    COL_VERTEX(-75, -1658, -1040),\n    COL_VERTEX(1, -1402, -1040),\n    COL_VERTEX(129, -1658, -1040),\n    COL_VERTEX(52, -1658, -1143),\n    COL_VERTEX(760, -2600, -429),\n    COL_VERTEX(760, -2539, -429),\n    COL_VERTEX(729, -2569, -398),\n    COL_VERTEX(698, -2615, -429),\n    COL_VERTEX(760, -2252, -429),\n    COL_VERTEX(760, -2615, -429),\n    COL_VERTEX(698, -2252, -429),\n    COL_VERTEX(729, -2569, -459),\n    COL_VERTEX(524, -2539, -429),\n    COL_VERTEX(667, -2569, -398),\n    COL_VERTEX(1378, -2144, -528),\n    COL_VERTEX(1378, -1893, -528),\n    COL_VERTEX(1347, -2175, -559),\n    COL_VERTEX(1394, -2252, -544),\n    COL_VERTEX(1363, -2252, -544),\n    COL_VERTEX(1378, -2206, -590),\n    COL_VERTEX(1409, -2252, -559),\n    COL_VERTEX(1378, -1893, -590),\n    COL_VERTEX(1347, -2252, -559),\n    COL_VERTEX(1190, -2206, -528),\n    COL_VERTEX(1378, -2206, -528),\n    COL_VERTEX(1317, -2206, -590),\n    COL_VERTEX(1190, -2206, -590),\n    COL_VERTEX(1378, -1791, -528),\n    COL_VERTEX(1409, -1555, -559),\n    COL_VERTEX(1347, -1555, -559),\n    COL_VERTEX(1378, -1791, -590),\n    COL_VERTEX(2275, 5679, -1417),\n    COL_VERTEX(2223, 5679, -1469),\n    COL_VERTEX(2326, 5679, -1469),\n    COL_VERTEX(2275, 5679, -1520),\n    COL_VERTEX(1199, 5679, -1469),\n    COL_VERTEX(2275, 5628, -1520),\n    COL_VERTEX(2223, 5577, -1469),\n    COL_VERTEX(2172, 5628, -1417),\n    COL_VERTEX(2275, 5628, -1417),\n    COL_VERTEX(3114, 4701, -1525),\n    COL_VERTEX(3114, 4752, -1474),\n    COL_VERTEX(2280, 4701, -1422),\n    COL_VERTEX(667, -2569, -705),\n    COL_VERTEX(729, -2569, -705),\n    COL_VERTEX(760, -2600, -736),\n    COL_VERTEX(524, -2539, -736),\n    COL_VERTEX(760, -2539, -736),\n    COL_VERTEX(729, -2569, -767),\n    COL_VERTEX(698, -2252, -736),\n    COL_VERTEX(760, -2615, -736),\n    COL_VERTEX(760, -2252, -736),\n    COL_VERTEX(698, -2615, -736),\n    COL_VERTEX(1041, 6447, -3491),\n    COL_VERTEX(1041, 6447, -3645),\n    COL_VERTEX(887, 6447, -3491),\n    COL_VERTEX(887, 6447, -3645),\n    COL_VERTEX(-4878, 2090, -1012),\n    COL_VERTEX(-4923, 2039, -904),\n    COL_VERTEX(-4878, 2039, -1012),\n    COL_VERTEX(-4878, 2039, -795),\n    COL_VERTEX(-4770, 2039, -750),\n    COL_VERTEX(-4661, 2039, -795),\n    COL_VERTEX(-4616, 2039, -904),\n    COL_VERTEX(-4661, 2039, -1012),\n    COL_VERTEX(-4770, 2039, -1057),\n    COL_VERTEX(-4770, 2346, -904),\n    COL_VERTEX(-4770, 2090, -801),\n    COL_VERTEX(-3159, -1637, -776),\n    COL_VERTEX(-1799, -2457, -1248),\n    COL_VERTEX(-1748, -2457, -1197),\n    COL_VERTEX(-1748, -2457, -1299),\n    COL_VERTEX(-1697, -2457, -1248),\n    COL_VERTEX(129, -2451, -385),\n    COL_VERTEX(-75, -2451, -385),\n    COL_VERTEX(52, -2451, -283),\n    COL_VERTEX(1, -2451, -283),\n    COL_VERTEX(1, -1402, -385),\n    COL_VERTEX(-75, -2451, -1040),\n    COL_VERTEX(129, -2451, -1040),\n    COL_VERTEX(1, -2451, -1143),\n    COL_VERTEX(52, -2451, -1143),\n    COL_VERTEX(52, -1402, -1040),\n    COL_VERTEX(760, -2569, -398),\n    COL_VERTEX(760, -2569, -459),\n    COL_VERTEX(729, -2615, -398),\n    COL_VERTEX(729, -2252, -398),\n    COL_VERTEX(729, -2615, -459),\n    COL_VERTEX(729, -2252, -459),\n    COL_VERTEX(524, -2569, -459),\n    COL_VERTEX(698, -2539, -429),\n    COL_VERTEX(524, -2569, -398),\n    COL_VERTEX(1347, -1893, -559),\n    COL_VERTEX(1409, -2175, -559),\n    COL_VERTEX(1378, -2252, -528),\n    COL_VERTEX(1409, -1893, -559),\n    COL_VERTEX(1378, -2252, -590),\n    COL_VERTEX(1347, -2236, -559),\n    COL_VERTEX(1409, -2236, -559),\n    COL_VERTEX(1190, -2236, -559),\n    COL_VERTEX(1190, -2175, -559),\n    COL_VERTEX(1378, -1555, -528),\n    COL_VERTEX(1347, -1791, -559),\n    COL_VERTEX(1409, -1791, -559),\n    COL_VERTEX(1378, -1555, -590),\n    COL_VERTEX(2275, 4415, -1417),\n    COL_VERTEX(2326, 4415, -1469),\n    COL_VERTEX(2275, 4415, -1520),\n    COL_VERTEX(2223, 4415, -1469),\n    COL_VERTEX(1199, 5628, -1417),\n    COL_VERTEX(1199, 5628, -1520),\n    COL_VERTEX(1199, 5577, -1469),\n    COL_VERTEX(2269, 4701, -1525),\n    COL_VERTEX(2321, 4752, -1474),\n    COL_VERTEX(2372, 4701, -1422),\n    COL_VERTEX(3114, 4701, -1422),\n    COL_VERTEX(2326, 4747, -1469),\n    COL_VERTEX(698, -2539, -736),\n    COL_VERTEX(760, -2569, -705),\n    COL_VERTEX(760, -2569, -767),\n    COL_VERTEX(524, -2569, -705),\n    COL_VERTEX(524, -2569, -767),\n    COL_VERTEX(729, -2252, -767),\n    COL_VERTEX(729, -2615, -767),\n    COL_VERTEX(729, -2615, -705),\n    COL_VERTEX(729, -2252, -705),\n    COL_VERTEX(733, 6345, -2774),\n    COL_VERTEX(580, 6345, -2774),\n    COL_VERTEX(733, 6345, -2928),\n    COL_VERTEX(580, 6345, -2928),\n    COL_VERTEX(-341, 6447, -3645),\n    COL_VERTEX(-341, 6447, -3491),\n    COL_VERTEX(-187, 6447, -3645),\n    COL_VERTEX(-187, 6447, -3491),\n    COL_VERTEX(-34, 6345, -2928),\n    COL_VERTEX(-34, 6345, -2774),\n    COL_VERTEX(119, 6345, -2928),\n    COL_VERTEX(119, 6345, -2774),\n    COL_VERTEX(-4923, 2090, -904),\n    COL_VERTEX(-4878, 2090, -795),\n    COL_VERTEX(-4770, 2090, -750),\n    COL_VERTEX(-4770, 2090, -1057),\n    COL_VERTEX(-4661, 2090, -795),\n    COL_VERTEX(-4616, 2090, -904),\n    COL_VERTEX(-4661, 2090, -1012),\n    COL_VERTEX(-4872, 2090, -904),\n    COL_VERTEX(-4667, 2090, -904),\n    COL_VERTEX(-4770, 2090, -1006),\n    COL_VERTEX(-520, 3646, -494),\n    COL_VERTEX(-520, 3646, -1313),\n    COL_VERTEX(708, 3646, -904),\n    COL_VERTEX(-89, 3646, -1313),\n    COL_VERTEX(-110, 3902, -1313),\n    COL_VERTEX(-110, 3954, -2030),\n    COL_VERTEX(298, 3646, -494),\n    COL_VERTEX(708, 3954, -1723),\n    COL_VERTEX(708, 3902, -904),\n    COL_VERTEX(-520, 3800, -1313),\n    COL_VERTEX(-520, 3902, -1262),\n    COL_VERTEX(-520, 3902, -1313),\n    COL_VERTEX(-520, 3800, -1262),\n    COL_VERTEX(-59, 3800, -1262),\n    COL_VERTEX(-520, 3902, -494),\n    COL_VERTEX(298, 3902, -494),\n    COL_VERTEX(268, 3902, -545),\n    COL_VERTEX(-520, 3902, -545),\n    COL_VERTEX(2193, 4414, -706),\n    COL_VERTEX(1476, 4414, -297),\n    COL_VERTEX(2193, 4619, -706),\n    COL_VERTEX(2193, 4414, -2440),\n    COL_VERTEX(2193, 4414, -1320),\n    COL_VERTEX(2193, 4517, -706),\n    COL_VERTEX(2193, 4619, -2440),\n    COL_VERTEX(2141, 4619, -2389),\n    COL_VERTEX(1476, 4414, -1723),\n    COL_VERTEX(2193, 4619, -297),\n    COL_VERTEX(-110, 4210, -2030),\n    COL_VERTEX(1476, 4619, -2440),\n    COL_VERTEX(708, 4210, -2440),\n    COL_VERTEX(298, 4005, -2440),\n    COL_VERTEX(708, 4210, -1723),\n    COL_VERTEX(657, 3902, -904),\n    COL_VERTEX(268, 3800, -545),\n    COL_VERTEX(657, 3800, -904),\n    COL_VERTEX(298, 4210, -2439),\n    COL_VERTEX(-59, 4209, -2029),\n    COL_VERTEX(1476, 4619, -2389),\n    COL_VERTEX(708, 4210, -2389),\n    COL_VERTEX(349, 4107, -2389),\n    COL_VERTEX(2141, 4517, -1320),\n    COL_VERTEX(708, 4210, -1774),\n    COL_VERTEX(-59, 4210, -2030),\n    COL_VERTEX(-59, 3902, -1313),\n    COL_VERTEX(-59, 3800, -1313),\n    COL_VERTEX(657, 4107, -1723),\n    COL_VERTEX(1476, 4619, -1774),\n    COL_VERTEX(1527, 4619, -1774),\n    COL_VERTEX(708, 4107, -1774),\n    COL_VERTEX(2141, 4517, -348),\n    COL_VERTEX(2141, 4619, -706),\n    COL_VERTEX(1527, 4619, -348),\n    COL_VERTEX(1527, 4517, -1774),\n    COL_VERTEX(2193, 4619, -1320),\n    COL_VERTEX(-110, 4107, -2030),\n    COL_VERTEX(-59, 4107, -2030),\n    COL_VERTEX(708, 4107, -1723),\n    COL_VERTEX(5365, 3081, -4249),\n    COL_VERTEX(5672, 3081, -4249),\n    COL_VERTEX(5569, 3286, -4146),\n    COL_VERTEX(5416, 3081, -3890),\n    COL_VERTEX(5467, 3286, -4044),\n    COL_VERTEX(5621, 3081, -3890),\n    COL_VERTEX(5569, 2927, -4044),\n    COL_VERTEX(6068, 3615, -4249),\n    COL_VERTEX(5761, 3615, -4249),\n    COL_VERTEX(5966, 3820, -4146),\n    COL_VERTEX(6017, 3615, -3890),\n    COL_VERTEX(5863, 3820, -4044),\n    COL_VERTEX(5812, 3615, -3890),\n    COL_VERTEX(5966, 3462, -4044),\n    COL_VERTEX(-2957, -1330, -479),\n    COL_VERTEX(-3571, -1535, -634),\n    COL_VERTEX(-3878, -1535, -634),\n    COL_VERTEX(-3571, -1330, -941),\n    COL_VERTEX(-2547, -1330, -1094),\n    COL_VERTEX(-3571, -1637, -941),\n    COL_VERTEX(-4493, -1637, -941),\n    COL_VERTEX(-3878, -1535, -941),\n    COL_VERTEX(-4493, -1637, -634),\n    COL_VERTEX(-3571, -1433, -634),\n    COL_VERTEX(-2547, -1330, -480),\n    COL_VERTEX(1271, 5833, -4489),\n    COL_VERTEX(861, 5833, -2032),\n    COL_VERTEX(-571, 5833, -2441),\n    COL_VERTEX(-571, 6243, -4489),\n    COL_VERTEX(-571, 5884, -4489),\n    COL_VERTEX(145, 6243, -4387),\n    COL_VERTEX(-571, 6038, -4387),\n    COL_VERTEX(-571, 6243, -4387),\n    COL_VERTEX(145, 6038, -4489),\n    COL_VERTEX(145, 6243, -4489),\n    COL_VERTEX(1296, 6243, -6402),\n    COL_VERTEX(1296, 6243, -5657),\n    COL_VERTEX(1296, 6447, -5657),\n    COL_VERTEX(759, 6243, -5104),\n    COL_VERTEX(-546, 6243, -5657),\n    COL_VERTEX(-546, 6243, -6402),\n    COL_VERTEX(554, 6447, -5104),\n    COL_VERTEX(554, 6345, -4899),\n    COL_VERTEX(554, 6243, -4694),\n    COL_VERTEX(554, 6140, -4489),\n    COL_VERTEX(657, 6243, -4489),\n    COL_VERTEX(657, 6038, -4489),\n    COL_VERTEX(554, 6243, -4489),\n    COL_VERTEX(657, 6447, -5104),\n    COL_VERTEX(42, 6243, -4489),\n    COL_VERTEX(145, 6447, -5104),\n    COL_VERTEX(42, 6038, -4489),\n    COL_VERTEX(554, 6038, -4489),\n    COL_VERTEX(567, 6447, -5509),\n    COL_VERTEX(136, 6447, -5509),\n    COL_VERTEX(-168, 6447, -5814),\n    COL_VERTEX(-168, 6447, -6245),\n    COL_VERTEX(136, 6447, -6550),\n    COL_VERTEX(567, 6447, -6550),\n    COL_VERTEX(872, 6447, -6245),\n    COL_VERTEX(874, 6447, -5812),\n    COL_VERTEX(214, 6550, -5698),\n    COL_VERTEX(489, 6550, -5698),\n    COL_VERTEX(21, 6550, -5892),\n    COL_VERTEX(21, 6550, -6167),\n    COL_VERTEX(214, 6550, -6361),\n    COL_VERTEX(489, 6550, -6361),\n    COL_VERTEX(683, 6550, -6167),\n    COL_VERTEX(683, 6550, -5892),\n    COL_VERTEX(759, 6447, -5104),\n    COL_VERTEX(782, 6447, -5104),\n    COL_VERTEX(-59, 6243, -5104),\n    COL_VERTEX(753, 6243, -6969),\n    COL_VERTEX(-14, 6447, -6969),\n    COL_VERTEX(-546, 6447, -6402),\n    COL_VERTEX(1271, 6038, -4489),\n    COL_VERTEX(1271, 6243, -4489),\n    COL_VERTEX(1271, 6243, -4387),\n    COL_VERTEX(1271, 5884, -4489),\n    COL_VERTEX(-3071, -5119, 307),\n    COL_VERTEX(-3071, -4525, 307),\n    COL_VERTEX(-3071, -5119, -306),\n    COL_VERTEX(-3685, -4525, 307),\n    COL_VERTEX(-3890, -5119, 307),\n    COL_VERTEX(-3890, -4709, 307),\n    COL_VERTEX(-3890, -5119, -306),\n    COL_VERTEX(-4505, -4709, 307),\n    COL_VERTEX(-4709, -5119, 307),\n    COL_VERTEX(-4709, -4914, 307),\n    COL_VERTEX(-4709, -5119, -306),\n    COL_VERTEX(-5324, -4914, 205),\n    COL_VERTEX(-7474, -5119, 410),\n    COL_VERTEX(-6245, -4812, 205),\n    COL_VERTEX(-7474, -4812, -409),\n    COL_VERTEX(-6245, -4914, 614),\n    COL_VERTEX(-6245, -5119, 614),\n    COL_VERTEX(-5529, -5119, 102),\n    COL_VERTEX(-5529, -5119, -101),\n    COL_VERTEX(-6245, -5119, -613),\n    COL_VERTEX(-1689, -4111, 52),\n    COL_VERTEX(-1842, -4111, -29),\n    COL_VERTEX(-1842, -4177, 93),\n    COL_VERTEX(-1842, -5119, 410),\n    COL_VERTEX(-1842, -4095, 410),\n    COL_VERTEX(-2866, -4095, 307),\n    COL_VERTEX(-1842, -5119, -409),\n    COL_VERTEX(114, -2661, -173),\n    COL_VERTEX(-4697, -2661, -173),\n    COL_VERTEX(524, -2661, -378),\n    COL_VERTEX(114, -2457, -1504),\n    COL_VERTEX(-4697, -2457, -1504),\n    COL_VERTEX(-4697, -2457, -173),\n    COL_VERTEX(-5107, -2457, -378),\n    COL_VERTEX(-4697, -2661, -1504),\n    COL_VERTEX(1229, -4095, 318),\n    COL_VERTEX(1229, -4095, -295),\n    COL_VERTEX(2048, -4300, -398),\n    COL_VERTEX(2048, -4095, 420),\n    COL_VERTEX(3277, -4300, -398),\n    COL_VERTEX(2458, -3890, 420),\n    COL_VERTEX(3277, -2047, -398),\n    COL_VERTEX(2458, -3890, -398),\n    COL_VERTEX(3277, -2047, 420),\n    COL_VERTEX(3277, -2252, 420),\n    COL_VERTEX(4813, -2252, 420),\n    COL_VERTEX(1229, -4111, 52),\n    COL_VERTEX(1229, -4111, -29),\n    COL_VERTEX(1229, -4177, -70),\n    COL_VERTEX(1075, -4177, -70),\n    COL_VERTEX(1075, -4111, 52),\n    COL_VERTEX(5734, -1351, -1524),\n    COL_VERTEX(5734, -1689, -398),\n    COL_VERTEX(5786, -1689, -347),\n    COL_VERTEX(4813, -1945, -398),\n    COL_VERTEX(5786, -1791, -347),\n    COL_VERTEX(6605, -1566, -2139),\n    COL_VERTEX(6554, -1351, -1575),\n    COL_VERTEX(6605, -1351, -2139),\n    COL_VERTEX(6554, -1351, -2087),\n    COL_VERTEX(5176, -1349, -2087),\n    COL_VERTEX(6554, -1453, -2087),\n    COL_VERTEX(5069, -1555, -2139),\n    COL_VERTEX(5069, -1453, -1524),\n    COL_VERTEX(5069, -1453, -1575),\n    COL_VERTEX(5786, -1453, -1575),\n    COL_VERTEX(5176, -1349, -1524),\n    COL_VERTEX(4813, -1945, 369),\n    COL_VERTEX(5786, -1689, 369),\n    COL_VERTEX(4813, -2047, 369),\n    COL_VERTEX(5786, -1904, 420),\n    COL_VERTEX(6554, -1689, 11),\n    COL_VERTEX(6605, -1689, 62),\n    COL_VERTEX(5786, -1791, 369),\n    COL_VERTEX(6605, -1904, 62),\n    COL_VERTEX(5734, -1904, -398),\n    COL_VERTEX(6605, -1904, -398),\n    COL_VERTEX(6554, -1453, -1575),\n    COL_VERTEX(5786, -1351, -1524),\n    COL_VERTEX(2714, -1586, -2190),\n    COL_VERTEX(3226, -1586, -2190),\n    COL_VERTEX(2714, -1371, -1524),\n    COL_VERTEX(3226, -1474, -1575),\n    COL_VERTEX(2714, -1474, -2139),\n    COL_VERTEX(2048, -1187, -2139),\n    COL_VERTEX(3226, -1474, -2190),\n    COL_VERTEX(2714, -1371, -2139),\n    COL_VERTEX(2048, -1084, -2139),\n    COL_VERTEX(2714, -1371, -1575),\n    COL_VERTEX(2048, -1084, -1575),\n    COL_VERTEX(1536, -1187, -2139),\n    COL_VERTEX(1485, -1084, -1575),\n    COL_VERTEX(1485, -1299, -1524),\n    COL_VERTEX(1485, -1084, -2190),\n    COL_VERTEX(2099, -1084, -1524),\n    COL_VERTEX(2095, -1351, -1020),\n    COL_VERTEX(2044, -1453, -1020),\n    COL_VERTEX(2044, -1351, -1020),\n    COL_VERTEX(1481, -1453, -1020),\n    COL_VERTEX(1481, -1555, -1020),\n    COL_VERTEX(1536, -1187, -1575),\n    COL_VERTEX(1173, -1453, -1020),\n    COL_VERTEX(2095, -1351, -405),\n    COL_VERTEX(2095, -1555, -405),\n    COL_VERTEX(2044, -1453, -457),\n    COL_VERTEX(1481, -1351, -457),\n    COL_VERTEX(1173, -1555, -405),\n    COL_VERTEX(1173, -1555, -1020),\n    COL_VERTEX(1481, -1453, -405),\n    COL_VERTEX(1190, -2149, -787),\n    COL_VERTEX(1190, -2149, -378),\n    COL_VERTEX(422, -2252, -787),\n    COL_VERTEX(1190, -2252, -787),\n    COL_VERTEX(1548, -1791, -787),\n    COL_VERTEX(1548, -1791, -70),\n    COL_VERTEX(1548, -1893, -787),\n    COL_VERTEX(1190, -1893, -787),\n    COL_VERTEX(-6131, -1330, -1094),\n    COL_VERTEX(-4697, -1535, -1094),\n    COL_VERTEX(-6131, -1228, -480),\n    COL_VERTEX(-4697, -1228, -480),\n    COL_VERTEX(-6131, -1330, -480),\n    COL_VERTEX(-3899, 2059, -1211),\n    COL_VERTEX(-2466, 2059, -1211),\n    COL_VERTEX(-3899, 2162, -597),\n    COL_VERTEX(-2466, 2162, -597),\n    COL_VERTEX(-3899, 2059, -597),\n    COL_VERTEX(1476, 5628, -701),\n    COL_VERTEX(42, 5833, -701),\n    COL_VERTEX(1476, 5833, -701),\n    COL_VERTEX(1476, 5833, -1315),\n    COL_VERTEX(42, 5833, -1315),\n    COL_VERTEX(-2466, 2059, -597),\n    COL_VERTEX(-3417, -409, -480),\n    COL_VERTEX(-2705, -613, -1497),\n    COL_VERTEX(-2705, -409, -1855),\n    COL_VERTEX(-4697, -1330, -480),\n    COL_VERTEX(-6131, -921, -1094),\n    COL_VERTEX(-6745, -921, -992),\n    COL_VERTEX(-6950, -1330, -582),\n    COL_VERTEX(-3417, -613, -480),\n    COL_VERTEX(-5005, -613, -480),\n    COL_VERTEX(-4271, -613, -1855),\n    COL_VERTEX(-5005, -409, -1094),\n    COL_VERTEX(-5773, -716, -480),\n    COL_VERTEX(-5670, -921, -480),\n    COL_VERTEX(-5568, -716, -1094),\n    COL_VERTEX(-3417, -306, -480),\n    COL_VERTEX(-5005, -306, -480),\n    COL_VERTEX(-4271, -409, -1855),\n    COL_VERTEX(-1302, -336, -1103),\n    COL_VERTEX(-1660, -438, -1615),\n    COL_VERTEX(-2223, -592, -1513),\n    COL_VERTEX(-2223, -490, -1923),\n    COL_VERTEX(-2705, -409, -1497),\n    COL_VERTEX(-2223, -490, -1513),\n    COL_VERTEX(-1660, -541, -1615),\n    COL_VERTEX(-1763, -438, -1103),\n    COL_VERTEX(-892, -234, -1308),\n    COL_VERTEX(-995, -643, -1308),\n    COL_VERTEX(-2223, -592, -1923),\n    COL_VERTEX(-1302, -438, -1103),\n    COL_VERTEX(-1353, -438, -643),\n    COL_VERTEX(-1353, -541, -643),\n    COL_VERTEX(-687, -541, -643),\n    COL_VERTEX(-73, -438, -1206),\n    COL_VERTEX(-6050, 3800, -494),\n    COL_VERTEX(-4411, 3493, -494),\n    COL_VERTEX(-4411, 3800, -1313),\n    COL_VERTEX(-6050, 3493, -494),\n    COL_VERTEX(-4411, 3493, -1313),\n    COL_VERTEX(-520, 3493, -494),\n    COL_VERTEX(-2158, 3800, -494),\n    COL_VERTEX(-2158, 3493, -494),\n    COL_VERTEX(-520, 3493, -1313),\n    COL_VERTEX(-3319, 3032, -1211),\n    COL_VERTEX(-3541, 2469, -1211),\n    COL_VERTEX(-3131, 2469, -597),\n    COL_VERTEX(-3541, 2469, -597),\n    COL_VERTEX(-3353, 3032, -597),\n    COL_VERTEX(-2275, 2428, -597),\n    COL_VERTEX(-2070, 2735, -597),\n    COL_VERTEX(-2275, 2735, -1211),\n    COL_VERTEX(-2070, 2428, -1211),\n    COL_VERTEX(-1455, 2735, -1211),\n    COL_VERTEX(-1251, 2428, -1211),\n    COL_VERTEX(-1251, 2735, -597),\n    COL_VERTEX(-1455, 2428, -597),\n    COL_VERTEX(-227, 2940, -597),\n    COL_VERTEX(-22, 2940, -597),\n    COL_VERTEX(-124, 3042, -597),\n    COL_VERTEX(-124, 3042, -1211),\n    COL_VERTEX(-124, 2837, -597),\n    COL_VERTEX(-534, 2428, -597),\n    COL_VERTEX(-329, 2633, -597),\n    COL_VERTEX(-534, 2633, -1211),\n    COL_VERTEX(-329, 2428, -1211),\n    COL_VERTEX(284, 2428, -1211),\n    COL_VERTEX(80, 2633, -1211),\n    COL_VERTEX(284, 2633, -597),\n    COL_VERTEX(-1865, 3042, -597),\n    COL_VERTEX(-1763, 3145, -597),\n    COL_VERTEX(-1763, 2940, -597),\n    COL_VERTEX(-1660, 3042, -597),\n    COL_VERTEX(-1763, 3145, -1211),\n    COL_VERTEX(80, 2428, -597),\n    COL_VERTEX(1718, 2428, -597),\n    COL_VERTEX(913, 2428, -597),\n    COL_VERTEX(1718, 2530, -597),\n    COL_VERTEX(1718, 2428, -1211),\n    COL_VERTEX(913, 2530, -597),\n    COL_VERTEX(745, -234, -591),\n    COL_VERTEX(2793, 1097, -591),\n    COL_VERTEX(438, -234, -591),\n    COL_VERTEX(960, -431, -1206),\n    COL_VERTEX(2588, 1301, -1206),\n    COL_VERTEX(2588, 1301, -591),\n    COL_VERTEX(4739, 1138, -1308),\n    COL_VERTEX(3817, 1301, -1206),\n    COL_VERTEX(-6306, 3928, -750),\n    COL_VERTEX(-6306, 3928, -1057),\n    COL_VERTEX(-6306, 3954, -1057),\n    COL_VERTEX(-6050, 3774, -1313),\n    COL_VERTEX(-6613, 3928, -1057),\n    COL_VERTEX(-6869, 3774, -494),\n    COL_VERTEX(-6613, 3928, -750),\n    COL_VERTEX(-6613, 3954, -750),\n    COL_VERTEX(42, 5628, -2339),\n    COL_VERTEX(42, 5628, -1315),\n    COL_VERTEX(657, 5628, -2339),\n    COL_VERTEX(5251, 1424, -1308),\n    COL_VERTEX(5517, 2571, -514),\n    COL_VERTEX(5251, 1424, -489),\n    COL_VERTEX(4739, 1301, -489),\n    COL_VERTEX(3356, 2428, -2645),\n    COL_VERTEX(3356, 2428, -597),\n    COL_VERTEX(3868, 2223, -699),\n    COL_VERTEX(3971, 2428, -597),\n    COL_VERTEX(7653, 4483, -1532),\n    COL_VERTEX(7683, 4543, -2350),\n    COL_VERTEX(7401, 4476, -2969),\n    COL_VERTEX(3868, 2223, -3464),\n    COL_VERTEX(3459, 2223, -3464),\n    COL_VERTEX(5336, 2808, -3464),\n    COL_VERTEX(5377, 2705, -3464),\n    COL_VERTEX(4582, 2325, -3464),\n    COL_VERTEX(6134, 3868, -3464),\n    COL_VERTEX(6908, 4260, -2391),\n    COL_VERTEX(6134, 3868, -2645),\n    COL_VERTEX(4582, 2488, -2645),\n    COL_VERTEX(6875, 4235, -1471),\n    COL_VERTEX(6532, 3905, -1300),\n    COL_VERTEX(6552, 3885, -1300),\n    COL_VERTEX(7456, 4499, -957),\n    COL_VERTEX(6193, 2899, -1308),\n    COL_VERTEX(6172, 2940, -1308),\n    COL_VERTEX(6572, 3904, -456),\n    COL_VERTEX(6979, 4282, -663),\n    COL_VERTEX(6979, 4322, -663),\n    COL_VERTEX(5763, 2837, -489),\n    COL_VERTEX(5756, 2772, -489),\n    COL_VERTEX(5517, 2571, -1308),\n    COL_VERTEX(6618, 3629, -2093),\n    COL_VERTEX(6516, 3834, -1991),\n    COL_VERTEX(6311, 3629, -2093),\n    COL_VERTEX(6414, 3834, -1888),\n    COL_VERTEX(6567, 3629, -1735),\n    COL_VERTEX(6362, 3629, -1735),\n    COL_VERTEX(6516, 3476, -1888),\n    COL_VERTEX(1071, 6447, -3460),\n    COL_VERTEX(856, 6447, -3460),\n    COL_VERTEX(856, 6447, -3675),\n    COL_VERTEX(1071, 6447, -3675),\n    COL_VERTEX(549, 6345, -2958),\n    COL_VERTEX(549, 6345, -2743),\n    COL_VERTEX(764, 6345, -2958),\n    COL_VERTEX(764, 6345, -2743),\n    COL_VERTEX(-64, 6345, -2958),\n    COL_VERTEX(-64, 6345, -2743),\n    COL_VERTEX(150, 6345, -2743),\n    COL_VERTEX(150, 6345, -2958),\n    COL_VERTEX(-371, 6447, -3675),\n    COL_VERTEX(-371, 6447, -3460),\n    COL_VERTEX(-156, 6447, -3460),\n    COL_VERTEX(-156, 6447, -3675),\n    COL_VERTEX(-3878, -1433, -634),\n    COL_VERTEX(-3878, -1535, -942),\n    COL_VERTEX(-571, 5884, -4797),\n    COL_VERTEX(-192, -2661, -1658),\n    COL_VERTEX(-141, -2610, -1504),\n    COL_VERTEX(-397, -2661, -1658),\n    COL_VERTEX(-397, -2610, -1658),\n    COL_VERTEX(-520, 3800, -545),\n    COL_VERTEX(-520, 3800, -494),\n    COL_VERTEX(-110, 3902, -1262),\n    COL_VERTEX(-59, 3902, -1262),\n    COL_VERTEX(2193, 4414, -297),\n    COL_VERTEX(2193, 4517, -1320),\n    COL_VERTEX(1476, 4619, -297),\n    COL_VERTEX(2141, 4619, -348),\n    COL_VERTEX(2141, 4517, -706),\n    COL_VERTEX(2141, 4619, -1320),\n    COL_VERTEX(1476, 4619, -1723),\n    COL_VERTEX(1476, 4414, -2440),\n    COL_VERTEX(708, 4005, -2440),\n    COL_VERTEX(298, 4210, -2440),\n    COL_VERTEX(1527, 4517, -2389),\n    COL_VERTEX(2141, 4517, -2389),\n    COL_VERTEX(657, 4210, -1723),\n    COL_VERTEX(349, 4210, -2389),\n    COL_VERTEX(708, 4107, -2389),\n    COL_VERTEX(657, 4210, -1774),\n    COL_VERTEX(657, 4107, -1774),\n    COL_VERTEX(1476, 4466, -1774),\n    COL_VERTEX(1527, 4466, -1774),\n    COL_VERTEX(1527, 4517, -348),\n    COL_VERTEX(5467, 3286, -4146),\n    COL_VERTEX(5569, 3286, -4044),\n    COL_VERTEX(5467, 2927, -4044),\n    COL_VERTEX(5569, 2927, -4146),\n    COL_VERTEX(5467, 2927, -4146),\n    COL_VERTEX(5966, 3820, -4044),\n    COL_VERTEX(5863, 3820, -4146),\n    COL_VERTEX(5863, 3462, -4044),\n    COL_VERTEX(5863, 3462, -4146),\n    COL_VERTEX(5966, 3462, -4146),\n    COL_VERTEX(-3571, -1330, -634),\n    COL_VERTEX(-3571, -1637, -634),\n    COL_VERTEX(-2957, -1637, -479),\n    COL_VERTEX(-2547, -1637, -480),\n    COL_VERTEX(-3571, -1535, -941),\n    COL_VERTEX(-2957, -1637, -1093),\n    COL_VERTEX(-2957, -1330, -1093),\n    COL_VERTEX(-4493, -1330, -634),\n    COL_VERTEX(-3878, -1330, -634),\n    COL_VERTEX(-4493, -1330, -941),\n    COL_VERTEX(-2547, -1637, -1094),\n    COL_VERTEX(-3878, -1330, -941),\n    COL_VERTEX(1271, 5833, -2441),\n    COL_VERTEX(-162, 5833, -2032),\n    COL_VERTEX(-571, 6038, -4489),\n    COL_VERTEX(-571, 5833, -4489),\n    COL_VERTEX(-571, 5833, -4797),\n    COL_VERTEX(145, 6345, -5104),\n    COL_VERTEX(42, 6243, -5104),\n    COL_VERTEX(657, 6243, -5104),\n    COL_VERTEX(1296, 6447, -6402),\n    COL_VERTEX(753, 6447, -6969),\n    COL_VERTEX(881, 5731, -6249),\n    COL_VERTEX(881, 5731, -5810),\n    COL_VERTEX(42, 6447, -5104),\n    COL_VERTEX(571, 5731, -5500),\n    COL_VERTEX(-14, 6243, -6969),\n    COL_VERTEX(-546, 6447, -5657),\n    COL_VERTEX(-59, 6447, -5104),\n    COL_VERTEX(132, 5731, -5500),\n    COL_VERTEX(-177, 5731, -5810),\n    COL_VERTEX(-177, 5731, -6249),\n    COL_VERTEX(554, 6345, -5104),\n    COL_VERTEX(145, 6243, -4899),\n    COL_VERTEX(554, 6243, -4899),\n    COL_VERTEX(145, 6345, -4899),\n    COL_VERTEX(145, 6140, -4694),\n    COL_VERTEX(554, 6140, -4694),\n    COL_VERTEX(145, 6243, -4694),\n    COL_VERTEX(145, 6140, -4489),\n    COL_VERTEX(136, 6550, -5509),\n    COL_VERTEX(-168, 6550, -5814),\n    COL_VERTEX(567, 6550, -5509),\n    COL_VERTEX(-168, 6550, -6245),\n    COL_VERTEX(136, 6550, -6550),\n    COL_VERTEX(567, 6550, -6550),\n    COL_VERTEX(872, 6550, -6245),\n    COL_VERTEX(874, 6550, -5812),\n    COL_VERTEX(214, 6652, -5698),\n    COL_VERTEX(21, 6652, -5892),\n    COL_VERTEX(489, 6652, -5698),\n    COL_VERTEX(21, 6652, -6167),\n    COL_VERTEX(214, 6652, -6361),\n    COL_VERTEX(489, 6652, -6361),\n    COL_VERTEX(683, 6652, -6167),\n    COL_VERTEX(683, 6652, -5892),\n    COL_VERTEX(782, 6243, -5104),\n    COL_VERTEX(1271, 6038, -4387),\n    COL_VERTEX(554, 6243, -4387),\n    COL_VERTEX(-3071, -4525, -306),\n    COL_VERTEX(-3685, -5119, 307),\n    COL_VERTEX(-3685, -4525, -306),\n    COL_VERTEX(-3685, -5119, -306),\n    COL_VERTEX(1271, 5884, -4797),\n    COL_VERTEX(-3890, -4709, -306),\n    COL_VERTEX(-4505, -5119, 307),\n    COL_VERTEX(-4505, -4709, -306),\n    COL_VERTEX(-4505, -5119, -306),\n    COL_VERTEX(-4709, -4914, -306),\n    COL_VERTEX(-5324, -5119, 205),\n    COL_VERTEX(-5324, -4914, -204),\n    COL_VERTEX(-5324, -5119, -204),\n    COL_VERTEX(-7474, -4812, 410),\n    COL_VERTEX(-7474, -5119, -409),\n    COL_VERTEX(-6245, -5119, 205),\n    COL_VERTEX(-6245, -4812, -204),\n    COL_VERTEX(-6245, -5119, -204),\n    COL_VERTEX(-5529, -4935, 102),\n    COL_VERTEX(-5529, -4935, -101),\n    COL_VERTEX(-6245, -4914, -613),\n    COL_VERTEX(-1689, -4111, -29),\n    COL_VERTEX(-1842, -4111, 52),\n    COL_VERTEX(-1689, -4177, -70),\n    COL_VERTEX(-1842, -4177, -70),\n    COL_VERTEX(-1689, -4177, 93),\n    COL_VERTEX(-1842, -4095, -409),\n    COL_VERTEX(-2866, -5119, 307),\n    COL_VERTEX(-2866, -5119, -306),\n    COL_VERTEX(-2866, -4095, -306),\n    COL_VERTEX(524, -2457, -378),\n    COL_VERTEX(114, -2457, -173),\n    COL_VERTEX(524, -2661, -1299),\n    COL_VERTEX(524, -2457, -1299),\n    COL_VERTEX(114, -2661, -1504),\n    COL_VERTEX(-5107, -2661, -378),\n    COL_VERTEX(-5107, -2661, -1299),\n    COL_VERTEX(-5107, -2457, -1299),\n    COL_VERTEX(1229, -4300, -295),\n    COL_VERTEX(2048, -4095, -398),\n    COL_VERTEX(1229, -4300, 318),\n    COL_VERTEX(2048, -4300, 420),\n    COL_VERTEX(3277, -4300, 420),\n    COL_VERTEX(3277, -2252, -398),\n    COL_VERTEX(4813, -2252, -398),\n    COL_VERTEX(2867, -2252, -398),\n    COL_VERTEX(4813, -2047, -398),\n    COL_VERTEX(2867, -2252, 420),\n    COL_VERTEX(4813, -2047, 420),\n    COL_VERTEX(1075, -4111, -29),\n    COL_VERTEX(1229, -4177, 93),\n    COL_VERTEX(1075, -4177, 93),\n    COL_VERTEX(5734, -1566, -1524),\n    COL_VERTEX(4813, -1945, -347),\n    COL_VERTEX(4813, -2047, -347),\n    COL_VERTEX(5176, -1349, -2139),\n    COL_VERTEX(6605, -1351, -1575),\n    COL_VERTEX(6605, -1566, -1575),\n    COL_VERTEX(5069, -1453, -2139),\n    COL_VERTEX(6605, -1689, -398),\n    COL_VERTEX(6554, -1689, -398),\n    COL_VERTEX(5069, -1453, -2087),\n    COL_VERTEX(5069, -1555, -1524),\n    COL_VERTEX(5176, -1349, -1575),\n    COL_VERTEX(5786, -1351, -1575),\n    COL_VERTEX(4813, -1945, 420),\n    COL_VERTEX(5786, -1689, 420),\n    COL_VERTEX(6554, -1791, -398),\n    COL_VERTEX(6554, -1791, 11),\n    COL_VERTEX(3226, -1474, -1524),\n    COL_VERTEX(3226, -1586, -1524),\n    COL_VERTEX(3123, -1371, -1524),\n    COL_VERTEX(2714, -1586, -1524),\n    COL_VERTEX(3123, -1371, -2139),\n    COL_VERTEX(3123, -1371, -2190),\n    COL_VERTEX(2714, -1371, -2190),\n    COL_VERTEX(3123, -1371, -1575),\n    COL_VERTEX(2099, -1299, -1524),\n    COL_VERTEX(2099, -1299, -2190),\n    COL_VERTEX(2048, -1084, -2190),\n    COL_VERTEX(3226, -1474, -2139),\n    COL_VERTEX(2714, -1474, -1575),\n    COL_VERTEX(2048, -1187, -1575),\n    COL_VERTEX(1536, -1084, -2139),\n    COL_VERTEX(1536, -1084, -1575),\n    COL_VERTEX(1485, -1299, -2190),\n    COL_VERTEX(2095, -1555, -1020),\n    COL_VERTEX(2044, -1351, -457),\n    COL_VERTEX(1532, -1351, -1020),\n    COL_VERTEX(1481, -1351, -1020),\n    COL_VERTEX(1532, -1453, -1020),\n    COL_VERTEX(1481, -1351, -405),\n    COL_VERTEX(1173, -1453, -405),\n    COL_VERTEX(1481, -1453, -457),\n    COL_VERTEX(2095, -1453, -405),\n    COL_VERTEX(1190, -2252, -378),\n    COL_VERTEX(422, -2149, -378),\n    COL_VERTEX(422, -2252, -378),\n    COL_VERTEX(422, -2149, -787),\n    COL_VERTEX(1548, -1893, -70),\n    COL_VERTEX(1190, -1791, -70),\n    COL_VERTEX(1190, -1893, -70),\n    COL_VERTEX(1190, -1791, -787),\n    COL_VERTEX(-4697, -1228, -1094),\n    COL_VERTEX(-6131, -1228, -1094),\n    COL_VERTEX(-4697, -1330, -1094),\n    COL_VERTEX(-6131, -1535, -1094),\n    COL_VERTEX(-4697, -1535, -480),\n    COL_VERTEX(-6131, -1535, -480),\n    COL_VERTEX(-2466, 2162, -1211),\n    COL_VERTEX(-3899, 2162, -1211),\n    COL_VERTEX(-3899, 1854, -1211),\n    COL_VERTEX(-3899, 1854, -597),\n    COL_VERTEX(-2466, 1854, -597),\n    COL_VERTEX(-2466, 1854, -1211),\n    COL_VERTEX(42, 5628, -701),\n    COL_VERTEX(1476, 5628, -1315),\n    COL_VERTEX(-2705, -613, -1855),\n    COL_VERTEX(-6131, -921, -480),\n    COL_VERTEX(-6950, -1330, -992),\n    COL_VERTEX(-6745, -921, -582),\n    COL_VERTEX(-5005, -613, -1094),\n    COL_VERTEX(-5005, -409, -480),\n    COL_VERTEX(-4271, -306, -1855),\n    COL_VERTEX(-5568, -716, -480),\n    COL_VERTEX(-5773, -716, -1094),\n    COL_VERTEX(-5670, -921, -1094),\n    COL_VERTEX(-5005, -306, -1094),\n    COL_VERTEX(-2705, -306, -1855),\n    COL_VERTEX(-2705, -306, -1497),\n    COL_VERTEX(-1763, -541, -1103),\n    COL_VERTEX(-585, -234, -489),\n    COL_VERTEX(-73, -438, -643),\n    COL_VERTEX(28, -234, -591),\n    COL_VERTEX(28, -234, -1206),\n    COL_VERTEX(-6050, 3493, -1313),\n    COL_VERTEX(-4411, 3800, -494),\n    COL_VERTEX(-6050, 3800, -1313),\n    COL_VERTEX(-2158, 3493, -1313),\n    COL_VERTEX(-2158, 3800, -1313),\n    COL_VERTEX(-3353, 3032, -1211),\n    COL_VERTEX(-3319, 3032, -597),\n    COL_VERTEX(-3131, 2469, -1211),\n    COL_VERTEX(-2070, 2428, -597),\n    COL_VERTEX(-2275, 2428, -1211),\n    COL_VERTEX(-2275, 2735, -597),\n    COL_VERTEX(-2070, 2735, -1211),\n    COL_VERTEX(-1455, 2428, -1211),\n    COL_VERTEX(-1455, 2735, -597),\n    COL_VERTEX(-1251, 2735, -1211),\n    COL_VERTEX(-1251, 2428, -597),\n    COL_VERTEX(-227, 2940, -1211),\n    COL_VERTEX(-124, 2837, -1211),\n    COL_VERTEX(-22, 2940, -1211),\n    COL_VERTEX(-534, 2428, -1211),\n    COL_VERTEX(-329, 2428, -597),\n    COL_VERTEX(-329, 2633, -1211),\n    COL_VERTEX(-534, 2633, -597),\n    COL_VERTEX(80, 2428, -1211),\n    COL_VERTEX(284, 2633, -1211),\n    COL_VERTEX(80, 2633, -597),\n    COL_VERTEX(284, 2428, -597),\n    COL_VERTEX(-1865, 3042, -1211),\n    COL_VERTEX(-1763, 2940, -1211),\n    COL_VERTEX(-1660, 3042, -1211),\n    COL_VERTEX(1718, 2530, -1211),\n    COL_VERTEX(913, 2428, -1211),\n    COL_VERTEX(913, 2530, -1211),\n    COL_VERTEX(960, -431, -591),\n    COL_VERTEX(438, -438, -591),\n    COL_VERTEX(438, -438, -1206),\n    COL_VERTEX(438, -234, -1206),\n    COL_VERTEX(745, -234, -1206),\n    COL_VERTEX(2793, 1097, -1206),\n    COL_VERTEX(3817, 1097, -591),\n    COL_VERTEX(3817, 1301, -591),\n    COL_VERTEX(3817, 1097, -1206),\n    COL_VERTEX(4739, 1301, -1308),\n    COL_VERTEX(-6050, 3774, -494),\n    COL_VERTEX(-6869, 3774, -1313),\n    COL_VERTEX(-6613, 3954, -1057),\n    COL_VERTEX(-6306, 3954, -750),\n    COL_VERTEX(-6869, 3800, -1313),\n    COL_VERTEX(-6869, 3800, -494),\n    COL_VERTEX(657, 5833, -2339),\n    COL_VERTEX(42, 5833, -2339),\n    COL_VERTEX(657, 5833, -1315),\n    COL_VERTEX(657, 5628, -1315),\n    COL_VERTEX(5148, 1506, -1308),\n    COL_VERTEX(5456, 2633, -1308),\n    COL_VERTEX(5763, 2837, -1308),\n    COL_VERTEX(5148, 1506, -489),\n    COL_VERTEX(4739, 1138, -489),\n    COL_VERTEX(5456, 2633, -489),\n    COL_VERTEX(3459, 2223, -699),\n    COL_VERTEX(3459, 2223, -2645),\n    COL_VERTEX(3868, 2223, -2645),\n    COL_VERTEX(3971, 2428, -2645),\n    COL_VERTEX(7653, 4503, -1532),\n    COL_VERTEX(7683, 4523, -2350),\n    COL_VERTEX(7401, 4455, -2969),\n    COL_VERTEX(6872, 4242, -3221),\n    COL_VERTEX(6872, 4263, -3221),\n    COL_VERTEX(3356, 2428, -3464),\n    COL_VERTEX(3971, 2428, -3464),\n    COL_VERTEX(4582, 2488, -3464),\n    COL_VERTEX(6113, 3889, -3464),\n    COL_VERTEX(6113, 3889, -2645),\n    COL_VERTEX(6908, 4280, -2391),\n    COL_VERTEX(5336, 2808, -2645),\n    COL_VERTEX(5377, 2705, -2645),\n    COL_VERTEX(4582, 2325, -2645),\n    COL_VERTEX(6875, 4215, -1471),\n    COL_VERTEX(7456, 4476, -957),\n    COL_VERTEX(5756, 2772, -1308),\n    COL_VERTEX(6551, 3925, -456),\n    COL_VERTEX(6172, 2940, -489),\n    COL_VERTEX(6193, 2899, -489),\n    COL_VERTEX(6516, 3834, -1888),\n    COL_VERTEX(6414, 3834, -1991),\n    COL_VERTEX(6516, 3476, -1991),\n    COL_VERTEX(6414, 3476, -1888),\n    COL_VERTEX(6414, 3476, -1991),\n    COL_VERTEX(-3571, -1535, -942),\n    COL_VERTEX(-3571, -1433, -942),\n    COL_VERTEX(-3878, -1433, -942),\n    COL_VERTEX(1271, 5833, -4797),\n    COL_VERTEX(-192, -2610, -1658),\n    COL_VERTEX(-141, -2661, -1504),\n    COL_VERTEX(-448, -2661, -1504),\n    COL_VERTEX(-448, -2610, -1504),\n    COL_VERTEX(8192, -8191, 0),\n    COL_VERTEX(0, -8191, 0),\n    COL_VERTEX(0, -8191, 8192),\n    COL_VERTEX(-8191, -8191, 8192),\n    COL_VERTEX(-8191, -8191, 0),\n    COL_VERTEX(8192, -8191, -8191),\n    COL_VERTEX(0, -8191, -8191),\n    COL_VERTEX(-8191, -8191, -8191),\n    COL_VERTEX(8192, -8191, 8192),\n    COL_VERTEX(657, 5833, -2032),\n    COL_VERTEX(42, 5833, -2032),\n    COL_TRI_INIT(SURFACE_DEFAULT, 952),\n    COL_TRI(217, 218, 219),\n    COL_TRI(218, 220, 219),\n    COL_TRI(220, 218, 221),\n    COL_TRI(220, 222, 219),\n    COL_TRI(221, 222, 220),\n    COL_TRI(223, 217, 219),\n    COL_TRI(222, 224, 219),\n    COL_TRI(219, 225, 223),\n    COL_TRI(219, 224, 225),\n    COL_TRI(226, 227, 228),\n    COL_TRI(226, 229, 227),\n    COL_TRI(218, 228, 221),\n    COL_TRI(228, 227, 221),\n    COL_TRI(229, 230, 227),\n    COL_TRI(231, 217, 223),\n    COL_TRI(232, 231, 223),\n    COL_TRI(231, 646, 647),\n    COL_TRI(231, 234, 646),\n    COL_TRI(238, 271, 239),\n    COL_TRI(233, 251, 646),\n    COL_TRI(234, 233, 646),\n    COL_TRI(235, 237, 244),\n    COL_TRI(235, 244, 650),\n    COL_TRI(236, 650, 244),\n    COL_TRI(237, 268, 244),\n    COL_TRI(242, 655, 271),\n    COL_TRI(239, 651, 240),\n    COL_TRI(239, 240, 235),\n    COL_TRI(240, 268, 237),\n    COL_TRI(240, 654, 268),\n    COL_TRI(238, 241, 271),\n    COL_TRI(241, 242, 271),\n    COL_TRI(243, 652, 656),\n    COL_TRI(243, 236, 652),\n    COL_TRI(224, 243, 656),\n    COL_TRI(236, 244, 652),\n    COL_TRI(244, 269, 652),\n    COL_TRI(224, 656, 249),\n    COL_TRI(225, 232, 223),\n    COL_TRI(221, 245, 222),\n    COL_TRI(248, 659, 247),\n    COL_TRI(246, 242, 241),\n    COL_TRI(246, 255, 242),\n    COL_TRI(246, 238, 657),\n    COL_TRI(246, 241, 238),\n    COL_TRI(247, 246, 657),\n    COL_TRI(247, 657, 658),\n    COL_TRI(222, 658, 224),\n    COL_TRI(248, 247, 658),\n    COL_TRI(222, 248, 658),\n    COL_TRI(245, 659, 248),\n    COL_TRI(245, 248, 222),\n    COL_TRI(224, 249, 225),\n    COL_TRI(232, 225, 250),\n    COL_TRI(234, 231, 232),\n    COL_TRI(233, 234, 232),\n    COL_TRI(250, 233, 232),\n    COL_TRI(251, 233, 252),\n    COL_TRI(233, 250, 252),\n    COL_TRI(250, 225, 662),\n    COL_TRI(252, 250, 263),\n    COL_TRI(250, 662, 263),\n    COL_TRI(225, 249, 662),\n    COL_TRI(245, 663, 659),\n    COL_TRI(245, 260, 663),\n    COL_TRI(253, 663, 256),\n    COL_TRI(254, 257, 663),\n    COL_TRI(253, 256, 247),\n    COL_TRI(255, 246, 256),\n    COL_TRI(256, 660, 255),\n    COL_TRI(255, 660, 661),\n    COL_TRI(255, 661, 242),\n    COL_TRI(246, 247, 256),\n    COL_TRI(257, 664, 256),\n    COL_TRI(257, 256, 663),\n    COL_TRI(256, 664, 660),\n    COL_TRI(258, 655, 242),\n    COL_TRI(227, 648, 221),\n    COL_TRI(259, 249, 264),\n    COL_TRI(249, 656, 264),\n    COL_TRI(260, 245, 261),\n    COL_TRI(245, 221, 261),\n    COL_TRI(259, 665, 662),\n    COL_TRI(259, 662, 249),\n    COL_TRI(261, 221, 649),\n    COL_TRI(221, 648, 649),\n    COL_TRI(230, 649, 227),\n    COL_TRI(254, 273, 257),\n    COL_TRI(261, 649, 230),\n    COL_TRI(262, 261, 230),\n    COL_TRI(261, 262, 260),\n    COL_TRI(262, 273, 260),\n    COL_TRI(263, 665, 666),\n    COL_TRI(263, 662, 665),\n    COL_TRI(264, 266, 259),\n    COL_TRI(264, 667, 266),\n    COL_TRI(265, 264, 652),\n    COL_TRI(267, 268, 654),\n    COL_TRI(266, 666, 665),\n    COL_TRI(266, 665, 259),\n    COL_TRI(264, 668, 667),\n    COL_TRI(264, 265, 668),\n    COL_TRI(265, 652, 269),\n    COL_TRI(244, 653, 269),\n    COL_TRI(270, 269, 669),\n    COL_TRI(267, 653, 268),\n    COL_TRI(268, 653, 244),\n    COL_TRI(269, 653, 267),\n    COL_TRI(258, 242, 661),\n    COL_TRI(269, 267, 669),\n    COL_TRI(270, 265, 269),\n    COL_TRI(275, 277, 276),\n    COL_TRI(271, 655, 258),\n    COL_TRI(271, 258, 651),\n    COL_TRI(272, 273, 245),\n    COL_TRI(273, 260, 245),\n    COL_TRI(263, 274, 662),\n    COL_TRI(274, 249, 662),\n    COL_TRI(281, 673, 276),\n    COL_TRI(275, 670, 277),\n    COL_TRI(276, 277, 671),\n    COL_TRI(277, 670, 279),\n    COL_TRI(278, 279, 275),\n    COL_TRI(279, 670, 275),\n    COL_TRI(280, 279, 278),\n    COL_TRI(280, 671, 279),\n    COL_TRI(277, 279, 671),\n    COL_TRI(276, 671, 280),\n    COL_TRI(278, 281, 280),\n    COL_TRI(280, 281, 276),\n    COL_TRI(278, 672, 281),\n    COL_TRI(276, 674, 275),\n    COL_TRI(276, 673, 674),\n    COL_TRI(275, 674, 672),\n    COL_TRI(275, 672, 278),\n    COL_TRI(282, 284, 675),\n    COL_TRI(283, 284, 282),\n    COL_TRI(284, 676, 286),\n    COL_TRI(284, 286, 675),\n    COL_TRI(283, 676, 284),\n    COL_TRI(285, 675, 286),\n    COL_TRI(285, 286, 287),\n    COL_TRI(286, 676, 283),\n    COL_TRI(287, 286, 283),\n    COL_TRI(282, 675, 285),\n    COL_TRI(289, 680, 681),\n    COL_TRI(285, 288, 282),\n    COL_TRI(287, 288, 285),\n    COL_TRI(288, 677, 678),\n    COL_TRI(288, 679, 282),\n    COL_TRI(288, 678, 679),\n    COL_TRI(287, 677, 288),\n    COL_TRI(282, 679, 678),\n    COL_TRI(282, 678, 283),\n    COL_TRI(283, 678, 677),\n    COL_TRI(283, 677, 287),\n    COL_TRI(289, 681, 682),\n    COL_TRI(290, 680, 292),\n    COL_TRI(290, 291, 681),\n    COL_TRI(291, 297, 681),\n    COL_TRI(289, 682, 683),\n    COL_TRI(290, 292, 684),\n    COL_TRI(292, 685, 294),\n    COL_TRI(292, 686, 685),\n    COL_TRI(291, 688, 687),\n    COL_TRI(293, 685, 686),\n    COL_TRI(293, 690, 685),\n    COL_TRI(294, 295, 684),\n    COL_TRI(295, 296, 684),\n    COL_TRI(296, 688, 291),\n    COL_TRI(291, 687, 297),\n    COL_TRI(299, 690, 293),\n    COL_TRI(297, 687, 689),\n    COL_TRI(297, 689, 295),\n    COL_TRI(298, 290, 291),\n    COL_TRI(295, 689, 691),\n    COL_TRI(295, 691, 296),\n    COL_TRI(296, 691, 688),\n    COL_TRI(301, 11, 20),\n    COL_TRI(299, 683, 690),\n    COL_TRI(289, 683, 299),\n    COL_TRI(300, 5, 692),\n    COL_TRI(300, 350, 5),\n    COL_TRI(301, 5, 11),\n    COL_TRI(301, 692, 5),\n    COL_TRI(302, 693, 20),\n    COL_TRI(302, 20, 10),\n    COL_TRI(302, 10, 694),\n    COL_TRI(301, 20, 693),\n    COL_TRI(305, 308, 309),\n    COL_TRI(302, 694, 695),\n    COL_TRI(303, 326, 694),\n    COL_TRI(304, 696, 695),\n    COL_TRI(305, 28, 308),\n    COL_TRI(306, 28, 305),\n    COL_TRI(306, 305, 307),\n    COL_TRI(312, 313, 311),\n    COL_TRI(308, 697, 325),\n    COL_TRI(309, 308, 325),\n    COL_TRI(310, 312, 311),\n    COL_TRI(310, 700, 312),\n    COL_TRI(310, 701, 700),\n    COL_TRI(310, 347, 701),\n    COL_TRI(311, 702, 310),\n    COL_TRI(312, 344, 313),\n    COL_TRI(311, 703, 702),\n    COL_TRI(313, 703, 311),\n    COL_TRI(314, 349, 315),\n    COL_TRI(314, 707, 349),\n    COL_TRI(314, 346, 708),\n    COL_TRI(314, 708, 707),\n    COL_TRI(314, 709, 346),\n    COL_TRI(314, 710, 709),\n    COL_TRI(315, 710, 314),\n    COL_TRI(315, 711, 710),\n    COL_TRI(319, 719, 308),\n    COL_TRI(316, 325, 697),\n    COL_TRI(316, 697, 712),\n    COL_TRI(317, 713, 714),\n    COL_TRI(317, 715, 713),\n    COL_TRI(318, 716, 717),\n    COL_TRI(318, 718, 716),\n    COL_TRI(325, 704, 324),\n    COL_TRI(319, 308, 327),\n    COL_TRI(320, 321, 323),\n    COL_TRI(321, 699, 323),\n    COL_TRI(322, 320, 323),\n    COL_TRI(323, 316, 322),\n    COL_TRI(324, 309, 325),\n    COL_TRI(324, 704, 698),\n    COL_TRI(326, 324, 698),\n    COL_TRI(303, 324, 326),\n    COL_TRI(327, 322, 712),\n    COL_TRI(322, 316, 712),\n    COL_TRI(328, 720, 329),\n    COL_TRI(329, 720, 721),\n    COL_TRI(329, 721, 330),\n    COL_TRI(333, 726, 334),\n    COL_TRI(328, 722, 720),\n    COL_TRI(330, 721, 723),\n    COL_TRI(330, 723, 331),\n    COL_TRI(331, 723, 724),\n    COL_TRI(331, 724, 332),\n    COL_TRI(332, 724, 725),\n    COL_TRI(332, 725, 333),\n    COL_TRI(333, 725, 726),\n    COL_TRI(338, 729, 731),\n    COL_TRI(334, 726, 727),\n    COL_TRI(334, 727, 335),\n    COL_TRI(335, 727, 722),\n    COL_TRI(335, 722, 328),\n    COL_TRI(336, 728, 729),\n    COL_TRI(337, 728, 336),\n    COL_TRI(336, 729, 338),\n    COL_TRI(337, 730, 728),\n    COL_TRI(343, 730, 337),\n    COL_TRI(338, 731, 339),\n    COL_TRI(339, 731, 732),\n    COL_TRI(339, 732, 340),\n    COL_TRI(340, 732, 733),\n    COL_TRI(340, 733, 341),\n    COL_TRI(341, 733, 734),\n    COL_TRI(341, 734, 342),\n    COL_TRI(342, 734, 735),\n    COL_TRI(342, 735, 343),\n    COL_TRI(343, 735, 730),\n    COL_TRI(344, 699, 313),\n    COL_TRI(344, 323, 699),\n    COL_TRI(326, 698, 699),\n    COL_TRI(326, 699, 321),\n    COL_TRI(345, 699, 736),\n    COL_TRI(346, 705, 313),\n    COL_TRI(313, 705, 703),\n    COL_TRI(346, 698, 704),\n    COL_TRI(346, 709, 705),\n    COL_TRI(346, 704, 708),\n    COL_TRI(347, 348, 701),\n    COL_TRI(347, 706, 348),\n    COL_TRI(348, 706, 315),\n    COL_TRI(349, 348, 315),\n    COL_TRI(320, 351, 350),\n    COL_TRI(320, 350, 321),\n    COL_TRI(350, 352, 737),\n    COL_TRI(350, 351, 352),\n    COL_TRI(306, 307, 303),\n    COL_TRI(351, 738, 352),\n    COL_TRI(351, 322, 738),\n    COL_TRI(322, 0, 738),\n    COL_TRI(322, 327, 0),\n    COL_TRI(352, 738, 0),\n    COL_TRI(307, 309, 303),\n    COL_TRI(307, 305, 309),\n    COL_TRI(306, 303, 694),\n    COL_TRI(356, 741, 739),\n    COL_TRI(352, 0, 737),\n    COL_TRI(353, 304, 694),\n    COL_TRI(353, 694, 350),\n    COL_TRI(354, 739, 355),\n    COL_TRI(354, 356, 739),\n    COL_TRI(355, 740, 354),\n    COL_TRI(359, 361, 745),\n    COL_TRI(355, 357, 740),\n    COL_TRI(356, 742, 741),\n    COL_TRI(357, 741, 742),\n    COL_TRI(357, 742, 740),\n    COL_TRI(358, 360, 744),\n    COL_TRI(358, 744, 359),\n    COL_TRI(359, 745, 358),\n    COL_TRI(360, 746, 744),\n    COL_TRI(365, 750, 751),\n    COL_TRI(360, 747, 746),\n    COL_TRI(361, 746, 747),\n    COL_TRI(361, 747, 745),\n    COL_TRI(362, 748, 363),\n    COL_TRI(362, 364, 748),\n    COL_TRI(363, 749, 362),\n    COL_TRI(364, 750, 748),\n    COL_TRI(363, 365, 749),\n    COL_TRI(364, 751, 750),\n    COL_TRI(365, 751, 749),\n    COL_TRI(366, 752, 368),\n    COL_TRI(366, 368, 753),\n    COL_TRI(367, 752, 366),\n    COL_TRI(367, 366, 754),\n    COL_TRI(368, 755, 756),\n    COL_TRI(368, 756, 753),\n    COL_TRI(369, 754, 370),\n    COL_TRI(370, 371, 757),\n    COL_TRI(370, 757, 369),\n    COL_TRI(369, 367, 754),\n    COL_TRI(371, 758, 757),\n    COL_TRI(371, 372, 758),\n    COL_TRI(372, 373, 759),\n    COL_TRI(372, 759, 758),\n    COL_TRI(373, 756, 755),\n    COL_TRI(373, 755, 759),\n    COL_TRI(374, 760, 375),\n    COL_TRI(374, 375, 761),\n    COL_TRI(375, 760, 762),\n    COL_TRI(375, 762, 763),\n    COL_TRI(61, 62, 59),\n    COL_TRI(376, 374, 761),\n    COL_TRI(376, 764, 374),\n    COL_TRI(377, 765, 378),\n    COL_TRI(378, 379, 766),\n    COL_TRI(378, 766, 377),\n    COL_TRI(379, 767, 766),\n    COL_TRI(379, 768, 767),\n    COL_TRI(377, 380, 765),\n    COL_TRI(380, 768, 765),\n    COL_TRI(380, 767, 768),\n    COL_TRI(61, 59, 60),\n    COL_TRI(381, 383, 769),\n    COL_TRI(381, 769, 770),\n    COL_TRI(382, 381, 770),\n    COL_TRI(383, 771, 772),\n    COL_TRI(383, 772, 769),\n    COL_TRI(382, 770, 386),\n    COL_TRI(384, 772, 771),\n    COL_TRI(384, 771, 773),\n    COL_TRI(385, 384, 773),\n    COL_TRI(385, 773, 388),\n    COL_TRI(386, 387, 774),\n    COL_TRI(386, 774, 382),\n    COL_TRI(387, 775, 774),\n    COL_TRI(387, 776, 775),\n    COL_TRI(388, 775, 776),\n    COL_TRI(388, 776, 385),\n    COL_TRI(389, 390, 777),\n    COL_TRI(390, 778, 391),\n    COL_TRI(390, 391, 777),\n    COL_TRI(391, 778, 393),\n    COL_TRI(392, 780, 781),\n    COL_TRI(392, 389, 779),\n    COL_TRI(392, 779, 780),\n    COL_TRI(393, 398, 781),\n    COL_TRI(394, 392, 781),\n    COL_TRI(395, 785, 783),\n    COL_TRI(389, 777, 779),\n    COL_TRI(393, 782, 398),\n    COL_TRI(395, 783, 782),\n    COL_TRI(393, 396, 395),\n    COL_TRI(393, 778, 396),\n    COL_TRI(396, 784, 395),\n    COL_TRI(397, 786, 394),\n    COL_TRI(398, 399, 397),\n    COL_TRI(399, 787, 397),\n    COL_TRI(397, 394, 781),\n    COL_TRI(400, 401, 404),\n    COL_TRI(401, 788, 404),\n    COL_TRI(402, 403, 401),\n    COL_TRI(403, 788, 401),\n    COL_TRI(400, 404, 789),\n    COL_TRI(404, 790, 789),\n    COL_TRI(405, 406, 407),\n    COL_TRI(406, 791, 429),\n    COL_TRI(406, 405, 791),\n    COL_TRI(406, 408, 792),\n    COL_TRI(407, 406, 792),\n    COL_TRI(406, 429, 408),\n    COL_TRI(408, 785, 793),\n    COL_TRI(408, 793, 792),\n    COL_TRI(409, 407, 792),\n    COL_TRI(410, 794, 412),\n    COL_TRI(411, 412, 413),\n    COL_TRI(411, 795, 412),\n    COL_TRI(412, 794, 414),\n    COL_TRI(413, 412, 414),\n    COL_TRI(412, 796, 410),\n    COL_TRI(409, 792, 793),\n    COL_TRI(416, 417, 797),\n    COL_TRI(410, 797, 794),\n    COL_TRI(414, 794, 797),\n    COL_TRI(414, 797, 800),\n    COL_TRI(415, 414, 800),\n    COL_TRI(415, 413, 414),\n    COL_TRI(415, 411, 413),\n    COL_TRI(410, 416, 797),\n    COL_TRI(416, 801, 417),\n    COL_TRI(417, 802, 418),\n    COL_TRI(418, 802, 803),\n    COL_TRI(418, 803, 419),\n    COL_TRI(417, 420, 802),\n    COL_TRI(419, 803, 432),\n    COL_TRI(420, 432, 803),\n    COL_TRI(420, 803, 802),\n    COL_TRI(417, 405, 420),\n    COL_TRI(417, 801, 791),\n    COL_TRI(417, 791, 405),\n    COL_TRI(424, 805, 804),\n    COL_TRI(421, 423, 787),\n    COL_TRI(421, 787, 804),\n    COL_TRI(422, 421, 804),\n    COL_TRI(422, 804, 805),\n    COL_TRI(423, 421, 422),\n    COL_TRI(424, 804, 399),\n    COL_TRI(423, 422, 427),\n    COL_TRI(425, 799, 806),\n    COL_TRI(425, 426, 798),\n    COL_TRI(425, 798, 799),\n    COL_TRI(426, 425, 422),\n    COL_TRI(425, 806, 807),\n    COL_TRI(427, 425, 807),\n    COL_TRI(427, 422, 425),\n    COL_TRI(412, 795, 796),\n    COL_TRI(426, 422, 805),\n    COL_TRI(428, 426, 805),\n    COL_TRI(428, 798, 426),\n    COL_TRI(428, 805, 424),\n    COL_TRI(428, 430, 798),\n    COL_TRI(429, 783, 408),\n    COL_TRI(430, 796, 795),\n    COL_TRI(415, 431, 411),\n    COL_TRI(431, 799, 411),\n    COL_TRI(431, 806, 799),\n    COL_TRI(411, 798, 795),\n    COL_TRI(411, 799, 798),\n    COL_TRI(430, 795, 798),\n    COL_TRI(432, 405, 407),\n    COL_TRI(419, 432, 407),\n    COL_TRI(419, 407, 409),\n    COL_TRI(433, 439, 434),\n    COL_TRI(434, 808, 809),\n    COL_TRI(434, 439, 808),\n    COL_TRI(435, 808, 810),\n    COL_TRI(435, 809, 808),\n    COL_TRI(436, 810, 808),\n    COL_TRI(435, 811, 809),\n    COL_TRI(437, 812, 440),\n    COL_TRI(437, 819, 812),\n    COL_TRI(438, 437, 440),\n    COL_TRI(439, 812, 819),\n    COL_TRI(440, 812, 813),\n    COL_TRI(439, 813, 812),\n    COL_TRI(440, 813, 814),\n    COL_TRI(438, 440, 441),\n    COL_TRI(441, 440, 814),\n    COL_TRI(442, 436, 820),\n    COL_TRI(433, 814, 813),\n    COL_TRI(433, 813, 439),\n    COL_TRI(435, 815, 442),\n    COL_TRI(435, 810, 815),\n    COL_TRI(435, 816, 811),\n    COL_TRI(435, 448, 816),\n    COL_TRI(436, 815, 810),\n    COL_TRI(442, 815, 436),\n    COL_TRI(443, 442, 820),\n    COL_TRI(443, 820, 821),\n    COL_TRI(444, 822, 823),\n    COL_TRI(444, 823, 454),\n    COL_TRI(444, 441, 822),\n    COL_TRI(445, 822, 447),\n    COL_TRI(445, 823, 822),\n    COL_TRI(441, 447, 822),\n    COL_TRI(441, 814, 818),\n    COL_TRI(444, 438, 441),\n    COL_TRI(446, 445, 447),\n    COL_TRI(446, 447, 824),\n    COL_TRI(447, 818, 817),\n    COL_TRI(447, 817, 824),\n    COL_TRI(441, 818, 447),\n    COL_TRI(433, 817, 818),\n    COL_TRI(433, 818, 814),\n    COL_TRI(448, 435, 442),\n    COL_TRI(448, 442, 443),\n    COL_TRI(449, 816, 448),\n    COL_TRI(449, 825, 816),\n    COL_TRI(449, 451, 826),\n    COL_TRI(451, 449, 448),\n    COL_TRI(453, 828, 445),\n    COL_TRI(450, 451, 443),\n    COL_TRI(451, 448, 443),\n    COL_TRI(450, 443, 821),\n    COL_TRI(445, 827, 823),\n    COL_TRI(445, 828, 827),\n    COL_TRI(452, 827, 828),\n    COL_TRI(456, 457, 825),\n    COL_TRI(454, 827, 829),\n    COL_TRI(454, 823, 827),\n    COL_TRI(455, 453, 461),\n    COL_TRI(455, 452, 453),\n    COL_TRI(453, 445, 446),\n    COL_TRI(452, 829, 827),\n    COL_TRI(456, 825, 449),\n    COL_TRI(451, 450, 458),\n    COL_TRI(451, 458, 826),\n    COL_TRI(458, 832, 459),\n    COL_TRI(458, 459, 826),\n    COL_TRI(459, 830, 456),\n    COL_TRI(459, 456, 826),\n    COL_TRI(456, 830, 462),\n    COL_TRI(456, 462, 833),\n    COL_TRI(449, 826, 456),\n    COL_TRI(462, 830, 459),\n    COL_TRI(462, 459, 832),\n    COL_TRI(464, 836, 834),\n    COL_TRI(460, 457, 833),\n    COL_TRI(461, 831, 455),\n    COL_TRI(461, 460, 831),\n    COL_TRI(460, 833, 831),\n    COL_TRI(457, 460, 461),\n    COL_TRI(457, 461, 825),\n    COL_TRI(463, 464, 834),\n    COL_TRI(464, 835, 836),\n    COL_TRI(465, 836, 835),\n    COL_TRI(465, 835, 837),\n    COL_TRI(466, 836, 465),\n    COL_TRI(466, 834, 836),\n    COL_TRI(463, 834, 466),\n    COL_TRI(467, 468, 838),\n    COL_TRI(467, 838, 469),\n    COL_TRI(468, 839, 840),\n    COL_TRI(468, 840, 838),\n    COL_TRI(469, 838, 840),\n    COL_TRI(469, 841, 467),\n    COL_TRI(469, 840, 470),\n    COL_TRI(470, 840, 839),\n    COL_TRI(470, 839, 841),\n    COL_TRI(466, 465, 837),\n    COL_TRI(466, 837, 463),\n    COL_TRI(469, 470, 841),\n    COL_TRI(490, 846, 472),\n    COL_TRI(471, 842, 843),\n    COL_TRI(471, 844, 842),\n    COL_TRI(472, 845, 471),\n    COL_TRI(472, 471, 844),\n    COL_TRI(473, 474, 475),\n    COL_TRI(474, 490, 475),\n    COL_TRI(475, 846, 490),\n    COL_TRI(475, 847, 846),\n    COL_TRI(480, 852, 486),\n    COL_TRI(476, 848, 849),\n    COL_TRI(476, 477, 848),\n    COL_TRI(477, 850, 476),\n    COL_TRI(476, 851, 480),\n    COL_TRI(476, 850, 851),\n    COL_TRI(478, 479, 480),\n    COL_TRI(479, 486, 480),\n    COL_TRI(480, 851, 852),\n    COL_TRI(486, 852, 853),\n    COL_TRI(481, 854, 582),\n    COL_TRI(482, 481, 483),\n    COL_TRI(482, 854, 481),\n    COL_TRI(481, 582, 855),\n    COL_TRI(483, 481, 855),\n    COL_TRI(484, 855, 582),\n    COL_TRI(485, 582, 854),\n    COL_TRI(484, 582, 485),\n    COL_TRI(483, 855, 484),\n    COL_TRI(485, 854, 482),\n    COL_TRI(486, 853, 477),\n    COL_TRI(477, 853, 850),\n    COL_TRI(487, 494, 488),\n    COL_TRI(487, 488, 508),\n    COL_TRI(488, 494, 496),\n    COL_TRI(488, 496, 856),\n    COL_TRI(489, 856, 496),\n    COL_TRI(489, 496, 503),\n    COL_TRI(490, 472, 844),\n    COL_TRI(471, 491, 857),\n    COL_TRI(494, 860, 496),\n    COL_TRI(491, 845, 858),\n    COL_TRI(493, 492, 858),\n    COL_TRI(492, 491, 858),\n    COL_TRI(493, 847, 857),\n    COL_TRI(493, 857, 859),\n    COL_TRI(471, 857, 475),\n    COL_TRI(498, 499, 863),\n    COL_TRI(494, 495, 860),\n    COL_TRI(495, 497, 860),\n    COL_TRI(496, 860, 497),\n    COL_TRI(496, 497, 503),\n    COL_TRI(495, 861, 497),\n    COL_TRI(495, 487, 861),\n    COL_TRI(495, 494, 487),\n    COL_TRI(497, 503, 862),\n    COL_TRI(498, 864, 865),\n    COL_TRI(499, 865, 500),\n    COL_TRI(499, 500, 863),\n    COL_TRI(498, 865, 499),\n    COL_TRI(500, 865, 864),\n    COL_TRI(493, 859, 492),\n    COL_TRI(501, 487, 861),\n    COL_TRI(502, 501, 861),\n    COL_TRI(503, 489, 867),\n    COL_TRI(503, 867, 862),\n    COL_TRI(497, 862, 866),\n    COL_TRI(501, 868, 508),\n    COL_TRI(501, 508, 487),\n    COL_TRI(504, 510, 505),\n    COL_TRI(509, 869, 511),\n    COL_TRI(505, 514, 507),\n    COL_TRI(506, 514, 510),\n    COL_TRI(505, 510, 514),\n    COL_TRI(506, 488, 514),\n    COL_TRI(507, 514, 489),\n    COL_TRI(508, 488, 506),\n    COL_TRI(508, 506, 509),\n    COL_TRI(509, 506, 869),\n    COL_TRI(510, 869, 506),\n    COL_TRI(510, 515, 869),\n    COL_TRI(511, 869, 517),\n    COL_TRI(511, 517, 516),\n    COL_TRI(512, 513, 504),\n    COL_TRI(513, 515, 504),\n    COL_TRI(504, 515, 510),\n    COL_TRI(488, 856, 514),\n    COL_TRI(514, 856, 489),\n    COL_TRI(515, 517, 869),\n    COL_TRI(516, 517, 870),\n    COL_TRI(515, 518, 517),\n    COL_TRI(517, 518, 870),\n    COL_TRI(515, 513, 518),\n    COL_TRI(521, 523, 874),\n    COL_TRI(513, 519, 871),\n    COL_TRI(513, 871, 518),\n    COL_TRI(512, 519, 513),\n    COL_TRI(518, 871, 872),\n    COL_TRI(519, 872, 871),\n    COL_TRI(518, 872, 870),\n    COL_TRI(512, 873, 519),\n    COL_TRI(519, 873, 872),\n    COL_TRI(520, 523, 521),\n    COL_TRI(521, 874, 524),\n    COL_TRI(522, 524, 874),\n    COL_TRI(522, 874, 876),\n    COL_TRI(523, 520, 876),\n    COL_TRI(523, 876, 874),\n    COL_TRI(524, 522, 875),\n    COL_TRI(520, 521, 875),\n    COL_TRI(527, 878, 877),\n    COL_TRI(524, 875, 521),\n    COL_TRI(525, 877, 528),\n    COL_TRI(525, 527, 877),\n    COL_TRI(526, 527, 525),\n    COL_TRI(526, 525, 647),\n    COL_TRI(226, 877, 878),\n    COL_TRI(226, 528, 877),\n    COL_TRI(527, 526, 878),\n    COL_TRI(528, 226, 647),\n    COL_TRI(528, 647, 525),\n    COL_TRI(529, 879, 533),\n    COL_TRI(529, 533, 880),\n    COL_TRI(530, 879, 529),\n    COL_TRI(531, 880, 533),\n    COL_TRI(530, 529, 881),\n    COL_TRI(532, 530, 881),\n    COL_TRI(533, 530, 532),\n    COL_TRI(533, 879, 530),\n    COL_TRI(532, 881, 531),\n    COL_TRI(531, 881, 529),\n    COL_TRI(531, 533, 532),\n    COL_TRI(531, 529, 880),\n    COL_TRI(534, 537, 882),\n    COL_TRI(534, 883, 537),\n    COL_TRI(538, 886, 541),\n    COL_TRI(535, 884, 534),\n    COL_TRI(535, 534, 882),\n    COL_TRI(535, 537, 885),\n    COL_TRI(535, 882, 537),\n    COL_TRI(536, 534, 884),\n    COL_TRI(536, 883, 534),\n    COL_TRI(537, 536, 885),\n    COL_TRI(537, 883, 536),\n    COL_TRI(541, 539, 889),\n    COL_TRI(538, 541, 887),\n    COL_TRI(539, 538, 888),\n    COL_TRI(540, 887, 541),\n    COL_TRI(540, 541, 889),\n    COL_TRI(540, 889, 539),\n    COL_TRI(540, 539, 888),\n    COL_TRI(539, 886, 538),\n    COL_TRI(541, 886, 539),\n    COL_TRI(548, 894, 550),\n    COL_TRI(542, 543, 544),\n    COL_TRI(543, 545, 544),\n    COL_TRI(544, 890, 542),\n    COL_TRI(544, 545, 890),\n    COL_TRI(545, 891, 890),\n    COL_TRI(542, 890, 891),\n    COL_TRI(542, 546, 543),\n    COL_TRI(542, 891, 546),\n    COL_TRI(543, 892, 545),\n    COL_TRI(545, 892, 891),\n    COL_TRI(546, 891, 892),\n    COL_TRI(546, 892, 543),\n    COL_TRI(547, 893, 550),\n    COL_TRI(547, 550, 894),\n    COL_TRI(551, 552, 898),\n    COL_TRI(548, 550, 895),\n    COL_TRI(548, 547, 894),\n    COL_TRI(548, 896, 547),\n    COL_TRI(549, 547, 896),\n    COL_TRI(549, 893, 547),\n    COL_TRI(550, 893, 549),\n    COL_TRI(550, 549, 895),\n    COL_TRI(551, 897, 552),\n    COL_TRI(555, 901, 554),\n    COL_TRI(552, 897, 559),\n    COL_TRI(553, 899, 559),\n    COL_TRI(553, 559, 900),\n    COL_TRI(552, 559, 899),\n    COL_TRI(553, 551, 898),\n    COL_TRI(553, 900, 551),\n    COL_TRI(554, 556, 557),\n    COL_TRI(554, 557, 555),\n    COL_TRI(554, 902, 556),\n    COL_TRI(556, 903, 557),\n    COL_TRI(556, 902, 903),\n    COL_TRI(557, 903, 558),\n    COL_TRI(557, 558, 555),\n    COL_TRI(555, 558, 901),\n    COL_TRI(558, 903, 902),\n    COL_TRI(558, 902, 901),\n    COL_TRI(554, 901, 902),\n    COL_TRI(559, 897, 551),\n    COL_TRI(559, 551, 900),\n    COL_TRI(560, 563, 904),\n    COL_TRI(560, 904, 562),\n    COL_TRI(561, 563, 560),\n    COL_TRI(563, 905, 906),\n    COL_TRI(561, 905, 563),\n    COL_TRI(563, 906, 904),\n    COL_TRI(562, 564, 561),\n    COL_TRI(562, 561, 560),\n    COL_TRI(564, 905, 561),\n    COL_TRI(564, 906, 905),\n    COL_TRI(565, 567, 907),\n    COL_TRI(566, 570, 565),\n    COL_TRI(565, 907, 566),\n    COL_TRI(570, 566, 913),\n    COL_TRI(567, 908, 907),\n    COL_TRI(567, 909, 908),\n    COL_TRI(567, 910, 909),\n    COL_TRI(568, 909, 910),\n    COL_TRI(568, 910, 911),\n    COL_TRI(568, 911, 569),\n    COL_TRI(569, 912, 568),\n    COL_TRI(570, 913, 914),\n    COL_TRI(571, 915, 572),\n    COL_TRI(571, 572, 916),\n    COL_TRI(572, 915, 912),\n    COL_TRI(572, 912, 569),\n    COL_TRI(573, 575, 574),\n    COL_TRI(574, 576, 917),\n    COL_TRI(573, 574, 917),\n    COL_TRI(575, 577, 574),\n    COL_TRI(576, 574, 918),\n    COL_TRI(574, 577, 918),\n    COL_TRI(577, 919, 580),\n    COL_TRI(577, 580, 579),\n    COL_TRI(575, 919, 577),\n    COL_TRI(577, 579, 918),\n    COL_TRI(578, 921, 918),\n    COL_TRI(579, 578, 918),\n    COL_TRI(579, 573, 578),\n    COL_TRI(580, 573, 579),\n    COL_TRI(573, 917, 578),\n    COL_TRI(573, 920, 575),\n    COL_TRI(580, 920, 573),\n    COL_TRI(520, 578, 917),\n    COL_TRI(582, 924, 581),\n    COL_TRI(576, 921, 876),\n    COL_TRI(576, 918, 921),\n    COL_TRI(578, 922, 921),\n    COL_TRI(520, 922, 578),\n    COL_TRI(581, 923, 583),\n    COL_TRI(581, 924, 923),\n    COL_TRI(584, 928, 615),\n    COL_TRI(583, 923, 925),\n    COL_TRI(583, 925, 926),\n    COL_TRI(582, 485, 924),\n    COL_TRI(571, 927, 584),\n    COL_TRI(571, 916, 927),\n    COL_TRI(584, 927, 928),\n    COL_TRI(589, 933, 590),\n    COL_TRI(585, 930, 586),\n    COL_TRI(586, 587, 931),\n    COL_TRI(586, 930, 587),\n    COL_TRI(585, 932, 930),\n    COL_TRI(587, 913, 931),\n    COL_TRI(587, 914, 913),\n    COL_TRI(588, 933, 589),\n    COL_TRI(589, 590, 591),\n    COL_TRI(593, 938, 939),\n    COL_TRI(590, 933, 934),\n    COL_TRI(590, 934, 935),\n    COL_TRI(591, 590, 935),\n    COL_TRI(591, 935, 936),\n    COL_TRI(588, 934, 933),\n    COL_TRI(592, 593, 937),\n    COL_TRI(592, 938, 593),\n    COL_TRI(593, 939, 594),\n    COL_TRI(594, 939, 940),\n    COL_TRI(594, 940, 941),\n    COL_TRI(595, 596, 942),\n    COL_TRI(596, 588, 942),\n    COL_TRI(596, 934, 588),\n    COL_TRI(595, 942, 943),\n    COL_TRI(597, 598, 599),\n    COL_TRI(597, 599, 944),\n    COL_TRI(599, 943, 944),\n    COL_TRI(599, 595, 943),\n    COL_TRI(598, 945, 600),\n    COL_TRI(598, 597, 945),\n    COL_TRI(600, 941, 940),\n    COL_TRI(600, 945, 941),\n    COL_TRI(601, 946, 602),\n    COL_TRI(601, 947, 946),\n    COL_TRI(602, 946, 948),\n    COL_TRI(602, 948, 949),\n    COL_TRI(603, 949, 948),\n    COL_TRI(603, 950, 949),\n    COL_TRI(609, 608, 953),\n    COL_TRI(604, 947, 601),\n    COL_TRI(604, 601, 951),\n    COL_TRI(605, 604, 951),\n    COL_TRI(606, 605, 951),\n    COL_TRI(607, 592, 937),\n    COL_TRI(607, 952, 592),\n    COL_TRI(608, 609, 605),\n    COL_TRI(608, 605, 606),\n    COL_TRI(610, 954, 955),\n    COL_TRI(610, 955, 956),\n    COL_TRI(611, 612, 610),\n    COL_TRI(612, 954, 610),\n    COL_TRI(613, 614, 956),\n    COL_TRI(613, 956, 955),\n    COL_TRI(612, 952, 607),\n    COL_TRI(612, 611, 952),\n    COL_TRI(614, 613, 932),\n    COL_TRI(614, 932, 585),\n    COL_TRI(619, 958, 618),\n    COL_TRI(609, 953, 929),\n    COL_TRI(615, 929, 953),\n    COL_TRI(615, 928, 929),\n    COL_TRI(603, 935, 950),\n    COL_TRI(603, 936, 935),\n    COL_TRI(616, 617, 957),\n    COL_TRI(617, 958, 619),\n    COL_TRI(617, 619, 957),\n    COL_TRI(618, 958, 617),\n    COL_TRI(618, 617, 616),\n    COL_TRI(616, 959, 961),\n    COL_TRI(620, 619, 621),\n    COL_TRI(620, 957, 619),\n    COL_TRI(621, 619, 618),\n    COL_TRI(616, 957, 620),\n    COL_TRI(622, 959, 616),\n    COL_TRI(620, 622, 616),\n    COL_TRI(621, 622, 620),\n    COL_TRI(621, 960, 622),\n    COL_TRI(24, 34, 623),\n    COL_TRI(616, 961, 618),\n    COL_TRI(618, 960, 621),\n    COL_TRI(618, 961, 960),\n    COL_TRI(34, 33, 624),\n    COL_TRI(623, 34, 624),\n    COL_TRI(624, 33, 625),\n    COL_TRI(623, 624, 626),\n    COL_TRI(624, 625, 626),\n    COL_TRI(33, 23, 625),\n    COL_TRI(625, 23, 626),\n    COL_TRI(626, 24, 623),\n    COL_TRI(23, 24, 626),\n    COL_TRI(627, 629, 630),\n    COL_TRI(628, 36, 627),\n    COL_TRI(627, 630, 628),\n    COL_TRI(627, 35, 629),\n    COL_TRI(627, 36, 35),\n    COL_TRI(629, 35, 37),\n    COL_TRI(629, 37, 630),\n    COL_TRI(630, 37, 25),\n    COL_TRI(630, 25, 628),\n    COL_TRI(628, 25, 36),\n    COL_TRI(631, 633, 632),\n    COL_TRI(632, 40, 631),\n    COL_TRI(632, 26, 40),\n    COL_TRI(633, 26, 632),\n    COL_TRI(635, 42, 41),\n    COL_TRI(631, 40, 39),\n    COL_TRI(631, 634, 633),\n    COL_TRI(631, 39, 634),\n    COL_TRI(633, 38, 26),\n    COL_TRI(634, 39, 38),\n    COL_TRI(634, 38, 633),\n    COL_TRI(635, 637, 636),\n    COL_TRI(636, 42, 635),\n    COL_TRI(636, 27, 42),\n    COL_TRI(637, 27, 636),\n    COL_TRI(635, 638, 637),\n    COL_TRI(635, 41, 638),\n    COL_TRI(637, 43, 27),\n    COL_TRI(638, 41, 43),\n    COL_TRI(638, 43, 637),\n    COL_TRI(639, 298, 291),\n    COL_TRI(640, 962, 963),\n    COL_TRI(640, 963, 964),\n    COL_TRI(300, 743, 353),\n    COL_TRI(353, 641, 304),\n    COL_TRI(353, 743, 641),\n    COL_TRI(304, 641, 696),\n    COL_TRI(641, 743, 965),\n    COL_TRI(641, 965, 696),\n    COL_TRI(300, 965, 743),\n    COL_TRI(642, 645, 966),\n    COL_TRI(642, 644, 645),\n    COL_TRI(643, 642, 966),\n    COL_TRI(644, 642, 967),\n    COL_TRI(643, 967, 642),\n    COL_TRI(645, 644, 968),\n    COL_TRI(645, 968, 969),\n    COL_TRI_INIT(SURFACE_DEATH_PLANE, 8),\n    COL_TRI(970, 971, 972),\n    COL_TRI(971, 973, 972),\n    COL_TRI(971, 974, 973),\n    COL_TRI(975, 971, 970),\n    COL_TRI(975, 976, 971),\n    COL_TRI(976, 974, 971),\n    COL_TRI(976, 977, 974),\n    COL_TRI(970, 972, 978),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 199),\n    COL_TRI(664, 257, 273),\n    COL_TRI(229, 646, 230),\n    COL_TRI(646, 251, 230),\n    COL_TRI(251, 252, 230),\n    COL_TRI(230, 263, 273),\n    COL_TRI(230, 252, 263),\n    COL_TRI(263, 664, 273),\n    COL_TRI(686, 299, 293),\n    COL_TRI(660, 666, 270),\n    COL_TRI(660, 664, 666),\n    COL_TRI(661, 660, 267),\n    COL_TRI(660, 669, 267),\n    COL_TRI(654, 651, 258),\n    COL_TRI(654, 240, 651),\n    COL_TRI(291, 962, 296),\n    COL_TRI(686, 289, 299),\n    COL_TRI(686, 292, 680),\n    COL_TRI(686, 680, 289),\n    COL_TRI(687, 688, 691),\n    COL_TRI(687, 691, 689),\n    COL_TRI(291, 290, 962),\n    COL_TRI(712, 715, 317),\n    COL_TRI(2, 737, 0),\n    COL_TRI(327, 28, 0),\n    COL_TRI(327, 308, 28),\n    COL_TRI(28, 306, 16),\n    COL_TRI(7, 4, 3),\n    COL_TRI(712, 697, 715),\n    COL_TRI(724, 727, 726),\n    COL_TRI(714, 718, 318),\n    COL_TRI(714, 713, 718),\n    COL_TRI(717, 716, 719),\n    COL_TRI(717, 719, 319),\n    COL_TRI(724, 720, 722),\n    COL_TRI(724, 721, 720),\n    COL_TRI(724, 723, 721),\n    COL_TRI(724, 722, 727),\n    COL_TRI(732, 729, 728),\n    COL_TRI(724, 726, 725),\n    COL_TRI(348, 707, 708),\n    COL_TRI(348, 349, 707),\n    COL_TRI(348, 708, 344),\n    COL_TRI(348, 344, 312),\n    COL_TRI(348, 312, 700),\n    COL_TRI(348, 700, 701),\n    COL_TRI(732, 731, 729),\n    COL_TRI(732, 728, 730),\n    COL_TRI(732, 730, 735),\n    COL_TRI(732, 735, 734),\n    COL_TRI(732, 734, 733),\n    COL_TRI(355, 741, 357),\n    COL_TRI(355, 739, 741),\n    COL_TRI(359, 746, 361),\n    COL_TRI(359, 744, 746),\n    COL_TRI(363, 750, 365),\n    COL_TRI(363, 748, 750),\n    COL_TRI(757, 758, 755),\n    COL_TRI(755, 367, 757),\n    COL_TRI(367, 755, 368),\n    COL_TRI(758, 759, 755),\n    COL_TRI(369, 757, 367),\n    COL_TRI(368, 752, 367),\n    COL_TRI(392, 390, 389),\n    COL_TRI(378, 768, 379),\n    COL_TRI(378, 765, 768),\n    COL_TRI(385, 770, 769),\n    COL_TRI(385, 772, 384),\n    COL_TRI(385, 769, 772),\n    COL_TRI(385, 776, 387),\n    COL_TRI(385, 386, 770),\n    COL_TRI(385, 387, 386),\n    COL_TRI(427, 793, 423),\n    COL_TRI(394, 778, 392),\n    COL_TRI(392, 778, 390),\n    COL_TRI(394, 396, 778),\n    COL_TRI(396, 394, 786),\n    COL_TRI(396, 786, 784),\n    COL_TRI(397, 784, 786),\n    COL_TRI(397, 395, 784),\n    COL_TRI(427, 409, 793),\n    COL_TRI(807, 409, 427),\n    COL_TRI(807, 806, 409),\n    COL_TRI(800, 419, 431),\n    COL_TRI(800, 431, 415),\n    COL_TRI(419, 409, 431),\n    COL_TRI(409, 806, 431),\n    COL_TRI(800, 418, 419),\n    COL_TRI(450, 831, 462),\n    COL_TRI(397, 787, 785),\n    COL_TRI(397, 785, 395),\n    COL_TRI(819, 437, 820),\n    COL_TRI(819, 820, 436),\n    COL_TRI(450, 455, 831),\n    COL_TRI(450, 462, 458),\n    COL_TRI(821, 437, 438),\n    COL_TRI(821, 820, 437),\n    COL_TRI(829, 821, 454),\n    COL_TRI(829, 450, 821),\n    COL_TRI(454, 821, 438),\n    COL_TRI(454, 438, 444),\n    COL_TRI(837, 835, 464),\n    COL_TRI(837, 464, 463),\n    COL_TRI(477, 480, 486),\n    COL_TRI(841, 839, 468),\n    COL_TRI(96, 841, 468),\n    COL_TRI(467, 96, 468),\n    COL_TRI(484, 485, 482),\n    COL_TRI(484, 482, 483),\n    COL_TRI(477, 476, 480),\n    COL_TRI(475, 490, 844),\n    COL_TRI(489, 503, 508),\n    COL_TRI(487, 508, 503),\n    COL_TRI(861, 503, 497),\n    COL_TRI(861, 487, 503),\n    COL_TRI(863, 500, 864),\n    COL_TRI(863, 864, 498),\n    COL_TRI(509, 511, 505),\n    COL_TRI(475, 844, 471),\n    COL_TRI(859, 491, 492),\n    COL_TRI(859, 857, 491),\n    COL_TRI(870, 873, 512),\n    COL_TRI(870, 872, 873),\n    COL_TRI(505, 507, 509),\n    COL_TRI(507, 489, 508),\n    COL_TRI(507, 508, 509),\n    COL_TRI(511, 516, 504),\n    COL_TRI(511, 504, 505),\n    COL_TRI(516, 870, 504),\n    COL_TRI(870, 512, 504),\n    COL_TRI(520, 875, 522),\n    COL_TRI(520, 522, 876),\n    COL_TRI(526, 647, 226),\n    COL_TRI(526, 226, 878),\n    COL_TRI(520, 575, 920),\n    COL_TRI(520, 876, 575),\n    COL_TRI(922, 520, 920),\n    COL_TRI(921, 919, 575),\n    COL_TRI(921, 575, 876),\n    COL_TRI(922, 920, 580),\n    COL_TRI(921, 922, 580),\n    COL_TRI(921, 580, 919),\n    COL_TRI(899, 553, 898),\n    COL_TRI(884, 535, 885),\n    COL_TRI(884, 885, 536),\n    COL_TRI(887, 888, 538),\n    COL_TRI(887, 540, 888),\n    COL_TRI(896, 548, 895),\n    COL_TRI(896, 895, 549),\n    COL_TRI(569, 570, 914),\n    COL_TRI(899, 898, 552),\n    COL_TRI(562, 904, 906),\n    COL_TRI(562, 906, 564),\n    COL_TRI(565, 911, 910),\n    COL_TRI(565, 910, 567),\n    COL_TRI(572, 569, 914),\n    COL_TRI(29, 15, 17),\n    COL_TRI(572, 914, 587),\n    COL_TRI(916, 572, 587),\n    COL_TRI(30, 9, 8),\n    COL_TRI(19, 21, 31),\n    COL_TRI(979, 980, 485),\n    COL_TRI(979, 485, 925),\n    COL_TRI(916, 930, 927),\n    COL_TRI(916, 587, 930),\n    COL_TRI(927, 930, 932),\n    COL_TRI(927, 932, 928),\n    COL_TRI(593, 594, 947),\n    COL_TRI(594, 941, 947),\n    COL_TRI(947, 941, 946),\n    COL_TRI(941, 945, 946),\n    COL_TRI(937, 593, 947),\n    COL_TRI(946, 945, 597),\n    COL_TRI(946, 597, 948),\n    COL_TRI(937, 947, 604),\n    COL_TRI(955, 954, 605),\n    COL_TRI(609, 955, 605),\n    COL_TRI(948, 944, 603),\n    COL_TRI(605, 954, 604),\n    COL_TRI(954, 612, 604),\n    COL_TRI(604, 612, 607),\n    COL_TRI(604, 607, 937),\n    COL_TRI(929, 955, 609),\n    COL_TRI(928, 613, 929),\n    COL_TRI(929, 613, 955),\n    COL_TRI(928, 932, 613),\n    COL_TRI(589, 591, 936),\n    COL_TRI(948, 597, 944),\n    COL_TRI(944, 943, 936),\n    COL_TRI(944, 936, 603),\n    COL_TRI(943, 588, 936),\n    COL_TRI(943, 942, 588),\n    COL_TRI(589, 936, 588),\n    COL_TRI(171, 99, 841),\n    COL_TRI(969, 966, 645),\n    COL_TRI(969, 643, 966),\n    COL_TRI(467, 172, 96),\n    COL_TRI(99, 172, 467),\n    COL_TRI(99, 467, 841),\n    COL_TRI(96, 171, 841),\n    COL_TRI_INIT(SURFACE_HORIZONTAL_WIND, 38),\n    COL_TRI_SPECIAL(0, 1, 2, 0x100),\n    COL_TRI_SPECIAL(3, 2, 1, 0x100),\n    COL_TRI_SPECIAL(4, 2, 3, 0x100),\n    COL_TRI_SPECIAL(2, 4, 5, 0x100),\n    COL_TRI_SPECIAL(5, 4, 6, 0x100),\n    COL_TRI_SPECIAL(4, 7, 6, 0x100),\n    COL_TRI_SPECIAL(5, 8, 9, 0x100),\n    COL_TRI_SPECIAL(6, 8, 5, 0x100),\n    COL_TRI_SPECIAL(10, 11, 5, 0x100),\n    COL_TRI_SPECIAL(0, 12, 1, 0x100),\n    COL_TRI_SPECIAL(10, 18, 15, 0x100),\n    COL_TRI_SPECIAL(13, 0, 28, 0x100),\n    COL_TRI_SPECIAL(13, 12, 0, 0x100),\n    COL_TRI_SPECIAL(14, 16, 29, 0x100),\n    COL_TRI_SPECIAL(15, 29, 16, 0x100),\n    COL_TRI_SPECIAL(15, 16, 10, 0x100),\n    COL_TRI_SPECIAL(16, 14, 28, 0x100),\n    COL_TRI_SPECIAL(14, 13, 28, 0x100),\n    COL_TRI_SPECIAL(17, 12, 13, 0x100),\n    COL_TRI_SPECIAL(17, 7, 12, 0x100),\n    COL_TRI_SPECIAL(17, 15, 18, 0x100),\n    COL_TRI_SPECIAL(18, 7, 17, 0x100),\n    COL_TRI_SPECIAL(18, 6, 7, 0x100),\n    COL_TRI_SPECIAL(24, 23, 34, 0x100),\n    COL_TRI_SPECIAL(10, 19, 18, 0x100),\n    COL_TRI_SPECIAL(10, 20, 11, 0x100),\n    COL_TRI_SPECIAL(21, 19, 10, 0x100),\n    COL_TRI_SPECIAL(21, 9, 30, 0x100),\n    COL_TRI_SPECIAL(21, 30, 31, 0x100),\n    COL_TRI_SPECIAL(22, 30, 32, 0x100),\n    COL_TRI_SPECIAL(22, 31, 30, 0x100),\n    COL_TRI_SPECIAL(23, 33, 34, 0x100),\n    COL_TRI_SPECIAL(25, 35, 36, 0x100),\n    COL_TRI_SPECIAL(25, 37, 35, 0x100),\n    COL_TRI_SPECIAL(26, 38, 39, 0x100),\n    COL_TRI_SPECIAL(26, 39, 40, 0x100),\n    COL_TRI_SPECIAL(27, 41, 42, 0x100),\n    COL_TRI_SPECIAL(27, 43, 41, 0x100),\n    COL_TRI_INIT(SURFACE_NO_CAM_COLLISION, 213),\n    COL_TRI(55, 54, 56),\n    COL_TRI(44, 45, 46),\n    COL_TRI(44, 46, 47),\n    COL_TRI(48, 45, 44),\n    COL_TRI(48, 49, 45),\n    COL_TRI(47, 46, 50),\n    COL_TRI(47, 50, 51),\n    COL_TRI(51, 50, 52),\n    COL_TRI(51, 52, 53),\n    COL_TRI(53, 52, 54),\n    COL_TRI(53, 54, 55),\n    COL_TRI(59, 140, 138),\n    COL_TRI(55, 56, 57),\n    COL_TRI(57, 56, 137),\n    COL_TRI(57, 137, 58),\n    COL_TRI(58, 137, 49),\n    COL_TRI(58, 49, 48),\n    COL_TRI(59, 138, 60),\n    COL_TRI(60, 139, 61),\n    COL_TRI(60, 138, 139),\n    COL_TRI(61, 139, 141),\n    COL_TRI(61, 141, 62),\n    COL_TRI(62, 141, 140),\n    COL_TRI(62, 140, 59),\n    COL_TRI(63, 64, 66),\n    COL_TRI(64, 142, 143),\n    COL_TRI(64, 143, 66),\n    COL_TRI(65, 142, 64),\n    COL_TRI(63, 65, 64),\n    COL_TRI(65, 144, 142),\n    COL_TRI(70, 68, 69),\n    COL_TRI(66, 143, 145),\n    COL_TRI(66, 145, 67),\n    COL_TRI(63, 66, 146),\n    COL_TRI(66, 67, 146),\n    COL_TRI(67, 145, 144),\n    COL_TRI(67, 144, 65),\n    COL_TRI(63, 67, 65),\n    COL_TRI(63, 146, 67),\n    COL_TRI(68, 147, 69),\n    COL_TRI(69, 147, 148),\n    COL_TRI(69, 148, 71),\n    COL_TRI(70, 69, 71),\n    COL_TRI(73, 153, 74),\n    COL_TRI(68, 149, 147),\n    COL_TRI(71, 148, 150),\n    COL_TRI(71, 150, 72),\n    COL_TRI(71, 72, 151),\n    COL_TRI(70, 71, 151),\n    COL_TRI(72, 150, 149),\n    COL_TRI(72, 149, 68),\n    COL_TRI(72, 70, 151),\n    COL_TRI(72, 68, 70),\n    COL_TRI(73, 74, 152),\n    COL_TRI(78, 156, 157),\n    COL_TRI(74, 153, 80),\n    COL_TRI(75, 152, 74),\n    COL_TRI(76, 154, 155),\n    COL_TRI(76, 155, 79),\n    COL_TRI(77, 155, 154),\n    COL_TRI(77, 154, 78),\n    COL_TRI(81, 82, 159),\n    COL_TRI(79, 157, 156),\n    COL_TRI(79, 156, 76),\n    COL_TRI(78, 157, 77),\n    COL_TRI(80, 158, 81),\n    COL_TRI(80, 81, 159),\n    COL_TRI(81, 160, 82),\n    COL_TRI(86, 163, 87),\n    COL_TRI(82, 75, 159),\n    COL_TRI(83, 161, 85),\n    COL_TRI(84, 83, 162),\n    COL_TRI(83, 84, 161),\n    COL_TRI(83, 163, 89),\n    COL_TRI(85, 163, 83),\n    COL_TRI(83, 89, 162),\n    COL_TRI(85, 87, 163),\n    COL_TRI(84, 162, 164),\n    COL_TRI(87, 91, 165),\n    COL_TRI(87, 165, 89),\n    COL_TRI(87, 89, 86),\n    COL_TRI(88, 165, 91),\n    COL_TRI(88, 91, 166),\n    COL_TRI(89, 165, 88),\n    COL_TRI(89, 88, 167),\n    COL_TRI(90, 88, 85),\n    COL_TRI(88, 166, 85),\n    COL_TRI(90, 85, 161),\n    COL_TRI(88, 90, 164),\n    COL_TRI(88, 164, 162),\n    COL_TRI(88, 162, 167),\n    COL_TRI(91, 87, 166),\n    COL_TRI(85, 166, 87),\n    COL_TRI(92, 93, 85),\n    COL_TRI(93, 92, 168),\n    COL_TRI(92, 85, 169),\n    COL_TRI(93, 168, 166),\n    COL_TRI(88, 94, 85),\n    COL_TRI(94, 169, 85),\n    COL_TRI(94, 95, 169),\n    COL_TRI(95, 166, 168),\n    COL_TRI(95, 94, 166),\n    COL_TRI(94, 88, 166),\n    COL_TRI(100, 102, 103),\n    COL_TRI(96, 170, 98),\n    COL_TRI(97, 170, 96),\n    COL_TRI(96, 98, 171),\n    COL_TRI(97, 96, 172),\n    COL_TRI(98, 99, 171),\n    COL_TRI(98, 173, 99),\n    COL_TRI(99, 97, 172),\n    COL_TRI(99, 173, 97),\n    COL_TRI(100, 103, 101),\n    COL_TRI(101, 174, 100),\n    COL_TRI(100, 174, 175),\n    COL_TRI(102, 176, 103),\n    COL_TRI(102, 175, 176),\n    COL_TRI(100, 175, 102),\n    COL_TRI(103, 176, 177),\n    COL_TRI(103, 177, 101),\n    COL_TRI(101, 177, 174),\n    COL_TRI(101, 104, 178),\n    COL_TRI(104, 179, 180),\n    COL_TRI(104, 180, 178),\n    COL_TRI(105, 179, 104),\n    COL_TRI(105, 104, 101),\n    COL_TRI(109, 182, 110),\n    COL_TRI(106, 180, 179),\n    COL_TRI(106, 179, 105),\n    COL_TRI(107, 180, 106),\n    COL_TRI(107, 178, 180),\n    COL_TRI(101, 178, 107),\n    COL_TRI(101, 107, 108),\n    COL_TRI(108, 107, 106),\n    COL_TRI(109, 181, 182),\n    COL_TRI(110, 182, 183),\n    COL_TRI(110, 183, 184),\n    COL_TRI(111, 183, 185),\n    COL_TRI(112, 113, 186),\n    COL_TRI(113, 187, 116),\n    COL_TRI(114, 116, 187),\n    COL_TRI(115, 189, 112),\n    COL_TRI(115, 112, 186),\n    COL_TRI(116, 188, 117),\n    COL_TRI(114, 188, 116),\n    COL_TRI(117, 115, 186),\n    COL_TRI(117, 190, 115),\n    COL_TRI(118, 191, 192),\n    COL_TRI(118, 192, 121),\n    COL_TRI(123, 122, 3),\n    COL_TRI(119, 192, 191),\n    COL_TRI(119, 191, 120),\n    COL_TRI(120, 193, 119),\n    COL_TRI(120, 194, 193),\n    COL_TRI(121, 193, 194),\n    COL_TRI(121, 194, 118),\n    COL_TRI(3, 122, 7),\n    COL_TRI(122, 124, 7),\n    COL_TRI(6, 197, 195),\n    COL_TRI(7, 124, 12),\n    COL_TRI(124, 125, 12),\n    COL_TRI(1, 123, 3),\n    COL_TRI(12, 125, 1),\n    COL_TRI(125, 123, 1),\n    COL_TRI(6, 195, 8),\n    COL_TRI(8, 196, 30),\n    COL_TRI(8, 195, 196),\n    COL_TRI(14, 201, 13),\n    COL_TRI(30, 196, 198),\n    COL_TRI(30, 198, 32),\n    COL_TRI(32, 197, 6),\n    COL_TRI(32, 198, 197),\n    COL_TRI(29, 199, 14),\n    COL_TRI(29, 200, 199),\n    COL_TRI(17, 200, 29),\n    COL_TRI(14, 199, 201),\n    COL_TRI(22, 206, 31),\n    COL_TRI(17, 202, 200),\n    COL_TRI(13, 201, 202),\n    COL_TRI(13, 202, 17),\n    COL_TRI(19, 203, 18),\n    COL_TRI(19, 204, 203),\n    COL_TRI(31, 204, 19),\n    COL_TRI(18, 203, 205),\n    COL_TRI(18, 205, 22),\n    COL_TRI(31, 206, 204),\n    COL_TRI(22, 205, 206),\n    COL_TRI(131, 211, 209),\n    COL_TRI(126, 207, 208),\n    COL_TRI(126, 208, 209),\n    COL_TRI(127, 126, 128),\n    COL_TRI(127, 207, 126),\n    COL_TRI(128, 126, 210),\n    COL_TRI(126, 209, 211),\n    COL_TRI(126, 211, 212),\n    COL_TRI(126, 212, 213),\n    COL_TRI(126, 213, 210),\n    COL_TRI(129, 207, 127),\n    COL_TRI(129, 208, 207),\n    COL_TRI(130, 208, 129),\n    COL_TRI(130, 209, 208),\n    COL_TRI(131, 209, 130),\n    COL_TRI(136, 215, 135),\n    COL_TRI(132, 211, 131),\n    COL_TRI(132, 212, 211),\n    COL_TRI(133, 213, 212),\n    COL_TRI(133, 212, 132),\n    COL_TRI(134, 213, 133),\n    COL_TRI(134, 210, 213),\n    COL_TRI(128, 210, 134),\n    COL_TRI(135, 214, 136),\n    COL_TRI(135, 215, 216),\n    COL_TRI(135, 216, 214),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(22),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_null_start,   /*pos*/ -7039, -4812,     4, /*yaw*/ 64), // unused, probably an early way to set initial position\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/ -4505, -5119,     0, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_04, /*pos*/ -2291, -2073,  -762, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_05, /*pos*/  3891, -3276,  -705, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_06, /*pos*/  1753, -1986,  -531, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_07, /*pos*/ -5414, -1330,  -787, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_07, /*pos*/ -3182,  2059,  -904, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_08, /*pos*/ -3182,  1854,  -904, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_08, /*pos*/   759,  5628, -1008, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_09, /*pos*/ -4902,  -895, -1171, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0A, /*pos*/ -3882,  -357, -1241, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0B, /*pos*/ -1199,  -387, -1308, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0C, /*pos*/  5584,  2735, -1851, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0D, /*pos*/ -5248,  3800,  -895, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0D, /*pos*/ -1356,  3800,  -895, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0E, /*pos*/ -6459,  3800,  -904, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0F, /*pos*/  -930,  2884,  -904, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_10, /*pos*/  2486,  -438,  -899, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_11, /*pos*/   563,  2249,  -904, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_12, /*pos*/ -6459,  2039,  -904, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_13, /*pos*/  1143,  4670,  -494, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_14, /*pos*/   349,  6268, -4054, /*yaw*/  0),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/geo.inc.c",
    "content": "// 0x0E000718\nconst GeoLayout bits_geo_000718[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND(BACKGROUND_PURPLE_SKY, geo_skybox_main),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 20000, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(14, 0, 2000, 6000, 0, -4500, -8000, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_ALPHA, bits_seg7_dl_07002918),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(0, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bits/areas/1/macro.inc.c",
    "content": "// 0x0701A76C - 0x0701A99E\nconst MacroObject bits_seg7_macro_objs[] = {\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,          /*yaw*/   0, /*pos*/ -1400, -4000,     0),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,          /*yaw*/   0, /*pos*/  -272, -4000,     0),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,          /*yaw*/   0, /*pos*/   840, -4000,     0),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_circling_amp,           /*yaw*/   0, /*pos*/  4100, -1320, -1800, /*bhvParam*/ AMP_BP_ROT_RADIUS_300),\n    MACRO_OBJECT               (/*preset*/ macro_goomba,                 /*yaw*/   0, /*pos*/  6180, -1791,     0),\n    MACRO_OBJECT               (/*preset*/ macro_goomba,                 /*yaw*/   0, /*pos*/  6260, -1453, -1800),\n    MACRO_OBJECT               (/*preset*/ macro_fire_piranha_plant_1,   /*yaw*/   0, /*pos*/  1920, -1187, -1840),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,   /*yaw*/   0, /*pos*/ -5080, -2457,  -800),\n    MACRO_OBJECT               (/*preset*/ macro_1up,                    /*yaw*/   0, /*pos*/  1380, -1740,  -660),\n    MACRO_OBJECT               (/*preset*/ macro_whomp,                  /*yaw*/  90, /*pos*/ -4180, -1330,  -800),\n    MACRO_OBJECT               (/*preset*/ macro_chuckya,                /*yaw*/  90, /*pos*/ -3909,  -409, -1199),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,          /*yaw*/   0, /*pos*/   600,  -200,  -900),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,          /*yaw*/   0, /*pos*/   900,    60,  -900),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,          /*yaw*/   0, /*pos*/  1200,   310,  -900),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,          /*yaw*/   0, /*pos*/  1500,   560,  -900),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,          /*yaw*/   0, /*pos*/  1800,   810,  -900),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,          /*yaw*/   0, /*pos*/  2100,  1060,  -900),\n    MACRO_OBJECT               (/*preset*/ macro_recovery_heart,         /*yaw*/   0, /*pos*/  1279,  2639,  -959),\n    MACRO_OBJECT               (/*preset*/ macro_1up,                    /*yaw*/   0, /*pos*/ -1399,  2750, -1159),\n    MACRO_OBJECT               (/*preset*/ macro_bobomb,                 /*yaw*/   0, /*pos*/ -2839,  2059,  -959),\n    MACRO_OBJECT               (/*preset*/ macro_bobomb,                 /*yaw*/   0, /*pos*/ -3479,  2059,  -799),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,          /*yaw*/   0, /*pos*/ -7200,  2080,  -890),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,          /*yaw*/   0, /*pos*/ -6600,  2080,  -180),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,          /*yaw*/   0, /*pos*/ -6600,  2080, -1550),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,     /*yaw*/   0, /*pos*/ -6600,  2080,  -180),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,     /*yaw*/   0, /*pos*/ -7200,  2080,  -890),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,     /*yaw*/   0, /*pos*/ -6600,  2080, -1550),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_hidden_1up,             /*yaw*/   0, /*pos*/ -6640,  2280,  -890, /*bhvParam*/ 3),\n    MACRO_OBJECT               (/*preset*/ macro_goomba_triplet_spawner, /*yaw*/   0, /*pos*/ -5239,  3839,  -999),\n    MACRO_OBJECT               (/*preset*/ macro_bobomb,                 /*yaw*/   0, /*pos*/ -1559,  3800, -1079),\n    MACRO_OBJECT               (/*preset*/ macro_bobomb,                 /*yaw*/   0, /*pos*/ -1079,  3800, -1039),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,   /*yaw*/   0, /*pos*/  1879,  4639, -1559),\n    MACRO_OBJECT               (/*preset*/ macro_1up,                    /*yaw*/   0, /*pos*/  -259,  6059, -3759),\n    MACRO_OBJECT               (/*preset*/ macro_recovery_heart,         /*yaw*/   0, /*pos*/   359,  6099, -3219),\n    MACRO_OBJECT               (/*preset*/ macro_fire_piranha_plant_1,   /*yaw*/   0, /*pos*/  3680,  2428, -1840),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_circling_amp,           /*yaw*/   0, /*pos*/ -6460,  2080,  -900, /*bhvParam*/ AMP_BP_ROT_RADIUS_400),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_circling_amp,           /*yaw*/   0, /*pos*/ -6460,  2280,  -900, /*bhvParam*/ AMP_BP_ROT_RADIUS_200),\n    MACRO_OBJECT               (/*preset*/ macro_goomba_triplet_spawner, /*yaw*/   0, /*pos*/   360,  6040, -2880),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,   /*yaw*/   0, /*pos*/  -302, -2457,  -800),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,               /*yaw*/   0, /*pos*/  1590, -1120, -2055),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,               /*yaw*/   0, /*pos*/ -2960, -3360,     0),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,               /*yaw*/   0, /*pos*/  -298, -2600, -1600),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,               /*yaw*/   0, /*pos*/  7618,  4850, -1909),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,               /*yaw*/   0, /*pos*/  -136,  3109,  -909),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,               /*yaw*/   0, /*pos*/ -3330,  4050,  -900),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,               /*yaw*/   0, /*pos*/ -4830,  2103, -1030),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,               /*yaw*/   0, /*pos*/   348,  5921, -4585),\n    MACRO_OBJECT               (/*preset*/ macro_pushable_metal_box,     /*yaw*/   0, /*pos*/ -2300, -4100,     0),\n    MACRO_OBJECT               (/*preset*/ macro_fire_spitter,           /*yaw*/   0, /*pos*/ -4769,  2344,  -904),\n    MACRO_OBJECT               (/*preset*/ macro_fire_spitter,           /*yaw*/   0, /*pos*/   377,  4140, -2042),\n    MACRO_OBJECT               (/*preset*/ macro_1up,                    /*yaw*/   0, /*pos*/ -1751, -1246,  -805),\n    MACRO_OBJECT               (/*preset*/ macro_fire_spitter,           /*yaw*/   0, /*pos*/ -6712,  -899,  -796),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,   /*yaw*/   0, /*pos*/  7322,  4566, -1922),\n    MACRO_OBJECT               (/*preset*/ macro_fire_spitter,           /*yaw*/   0, /*pos*/ -3600, -2433,  -800),\n    MACRO_OBJECT               (/*preset*/ macro_fire_spitter,           /*yaw*/   0, /*pos*/ -2656, -2442,  -800),\n    MACRO_OBJECT               (/*preset*/ macro_box_1up_running_away,   /*yaw*/   0, /*pos*/  4100, -1050, -1800),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/bits/geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"game/level_geo.h\"\n#include \"game/geo_misc.h\"\n#include \"game/camera.h\"\n#include \"game/moving_texture.h\"\n#include \"game/screen_transition.h\"\n#include \"game/paintings.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"levels/bits/header.h\"\n\n#include \"levels/bits/areas/1/2/geo.inc.c\"\n#include \"levels/bits/areas/1/3/geo.inc.c\"\n#include \"levels/bits/areas/1/4/geo.inc.c\"\n#include \"levels/bits/areas/1/5/geo.inc.c\"\n#include \"levels/bits/areas/1/6/geo.inc.c\"\n#include \"levels/bits/areas/1/7/geo.inc.c\"\n#include \"levels/bits/areas/1/8/geo.inc.c\"\n#include \"levels/bits/areas/1/9/geo.inc.c\"\n#include \"levels/bits/areas/1/10/geo.inc.c\"\n#include \"levels/bits/areas/1/11/geo.inc.c\"\n#include \"levels/bits/areas/1/12/geo.inc.c\"\n#include \"levels/bits/areas/1/13/geo.inc.c\"\n#include \"levels/bits/areas/1/14/geo.inc.c\"\n#include \"levels/bits/areas/1/15/geo.inc.c\"\n#include \"levels/bits/areas/1/16/geo.inc.c\"\n#include \"levels/bits/areas/1/17/geo.inc.c\"\n#include \"levels/bits/areas/1/18/geo.inc.c\"\n#include \"levels/bits/areas/1/19/geo.inc.c\"\n#include \"levels/bits/areas/1/20/geo.inc.c\"\n#include \"levels/bits/areas/1/21/geo.inc.c\"\n#include \"levels/bits/areas/1/22/geo.inc.c\"\n#include \"levels/bits/areas/1/23/geo.inc.c\"\n#include \"levels/bits/areas/1/24/geo.inc.c\"\n#include \"levels/bits/areas/1/25/geo.inc.c\"\n#include \"levels/bits/areas/1/26/geo.inc.c\"\n#include \"levels/bits/areas/1/27/geo.inc.c\"\n#include \"levels/bits/areas/1/28/geo.inc.c\"\n#include \"levels/bits/areas/1/29/geo.inc.c\"\n#include \"levels/bits/areas/1/30/geo.inc.c\"\n#include \"levels/bits/areas/1/31/geo.inc.c\"\n#include \"levels/bits/areas/1/32/geo.inc.c\"\n#include \"levels/bits/areas/1/geo.inc.c\"\n"
  },
  {
    "path": "levels/bits/header.h",
    "content": "#ifndef BITS_HEADER_H\n#define BITS_HEADER_H\n\n#include \"types.h\"\n\n// geo\nextern const GeoLayout bits_geo_000430[];\nextern const GeoLayout bits_geo_000448[];\nextern const GeoLayout bits_geo_000460[];\nextern const GeoLayout bits_geo_000478[];\nextern const GeoLayout bits_geo_000490[];\nextern const GeoLayout bits_geo_0004A8[];\nextern const GeoLayout bits_geo_0004C0[];\nextern const GeoLayout bits_geo_0004D8[];\nextern const GeoLayout bits_geo_0004F0[];\nextern const GeoLayout bits_geo_000508[];\nextern const GeoLayout bits_geo_000520[];\nextern const GeoLayout bits_geo_000538[];\nextern const GeoLayout bits_geo_000550[];\nextern const GeoLayout bits_geo_000568[];\nextern const GeoLayout bits_geo_000580[];\nextern const GeoLayout bits_geo_000598[];\nextern const GeoLayout bits_geo_0005B0[];\nextern const GeoLayout bits_geo_0005C8[];\nextern const GeoLayout bits_geo_0005E0[];\nextern const GeoLayout bits_geo_0005F8[];\nextern const GeoLayout bits_geo_000610[];\nextern const GeoLayout bits_geo_000628[];\nextern const GeoLayout bits_geo_000640[];\nextern const GeoLayout bits_geo_000658[];\nextern const GeoLayout bits_geo_000670[];\nextern const GeoLayout bits_geo_000688[];\nextern const GeoLayout bits_geo_0006A0[];\nextern const GeoLayout bits_geo_0006B8[];\nextern const GeoLayout bits_geo_0006D0[];\nextern const GeoLayout bits_geo_0006E8[];\nextern const GeoLayout bits_geo_000700[];\nextern const GeoLayout bits_geo_000718[];\n\n// leveldata\nextern const Gfx bits_seg7_dl_07002918[];\nextern const Gfx bits_seg7_dl_07003670[];\nextern const Gfx bits_seg7_dl_070047F0[];\nextern const Gfx bits_seg7_dl_07005DB8[];\nextern const Gfx bits_seg7_dl_07007AF0[];\nextern const Gfx bits_seg7_dl_07007C28[];\nextern const Gfx bits_seg7_dl_07007EC8[];\nextern const Gfx bits_seg7_dl_07008D18[];\nextern const Gfx bits_seg7_dl_07008FE8[];\nextern const Gfx bits_seg7_dl_07009690[];\nextern const Gfx bits_seg7_dl_0700B4A0[];\nextern const Gfx bits_seg7_dl_0700B820[];\nextern const Gfx bits_seg7_dl_0700BA18[];\nextern const Gfx bits_seg7_dl_0700CDC0[];\nextern const Gfx bits_seg7_dl_0700D278[];\nextern const Gfx bits_seg7_dl_0700D5A0[];\nextern const Gfx bits_seg7_dl_0700DD00[];\nextern const Gfx bits_seg7_dl_0700FC70[];\nextern const Gfx bits_seg7_dl_070128F0[];\nextern const Gfx bits_seg7_dl_07012B10[];\nextern const Gfx bits_seg7_dl_07012D40[];\nextern const Gfx bits_seg7_dl_070135A0[];\nextern const Gfx bits_seg7_dl_07013820[];\nextern const Gfx bits_seg7_dl_07013C78[];\nextern const Gfx bits_seg7_dl_07013EF8[];\nextern const Gfx bits_seg7_dl_07014178[];\nextern const Gfx bits_seg7_dl_07014C28[];\nextern const Gfx bits_seg7_dl_070153C0[];\nextern const Gfx bits_seg7_dl_07015B60[];\nextern const Gfx bits_seg7_dl_07016300[];\nextern const Gfx bits_seg7_dl_07016AA0[];\nextern const Gfx bits_seg7_dl_07016DA0[];\nextern const Collision bits_seg7_collision_level[];\nextern const MacroObject bits_seg7_macro_objs[];\nextern const Collision bits_seg7_collision_0701A9A0[];\nextern const Collision bits_seg7_collision_0701AA0C[];\nextern const Collision bits_seg7_collision_0701AA84[];\nextern const Collision bits_seg7_collision_0701AC28[];\nextern const Collision bits_seg7_collision_0701ACAC[];\nextern const Collision bits_seg7_collision_0701AD54[];\nextern const Collision bits_seg7_collision_0701ADD8[];\nextern const Collision bits_seg7_collision_0701AE5C[];\nextern const Collision bits_seg7_collision_0701B0D4[];\nextern const Collision bits_seg7_collision_0701B26C[];\nextern const Collision bits_seg7_collision_0701B404[];\nextern const Collision bits_seg7_collision_0701B59C[];\nextern const Collision bits_seg7_collision_0701B734[];\n\n// script\nextern const LevelScript level_bits_entry[];\n\n#endif\n"
  },
  {
    "path": "levels/bits/level.yaml",
    "content": "# Bowser in the Sky\nshort-name: bits\nfull-name: Bowser in the Sky\ntexture-file: [\"/texture.inc.c\"]\narea-count: 1\nobjects: []\nshared-path: []\n# loaded files\nskybox-bin: bits\ntexture-bin: sky\neffects: false\nactor-bins: [group14]\ncommon-bin: [common0]\n"
  },
  {
    "path": "levels/bits/leveldata.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"surface_terrains.h\"\n#include \"moving_texture_macros.h\"\n#include \"level_misc_macros.h\"\n#include \"macro_presets.h\"\n#include \"special_presets.h\"\n#include \"textures.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/bits/texture.inc.c\"\n#include \"levels/bits/areas/1/1/model.inc.c\"\n#include \"levels/bits/areas/1/2/model.inc.c\"\n#include \"levels/bits/areas/1/3/model.inc.c\"\n#include \"levels/bits/areas/1/4/model.inc.c\"\n#include \"levels/bits/areas/1/5/model.inc.c\"\n#include \"levels/bits/areas/1/6/model.inc.c\"\n#include \"levels/bits/areas/1/7/model.inc.c\"\n#include \"levels/bits/areas/1/8/model.inc.c\"\n#include \"levels/bits/areas/1/9/model.inc.c\"\n#include \"levels/bits/areas/1/10/model.inc.c\"\n#include \"levels/bits/areas/1/11/model.inc.c\"\n#include \"levels/bits/areas/1/12/model.inc.c\"\n#include \"levels/bits/areas/1/13/model.inc.c\"\n#include \"levels/bits/areas/1/14/model.inc.c\"\n#include \"levels/bits/areas/1/15/model.inc.c\"\n#include \"levels/bits/areas/1/16/model.inc.c\"\n#include \"levels/bits/areas/1/17/model.inc.c\"\n#include \"levels/bits/areas/1/18/model.inc.c\"\n#include \"levels/bits/areas/1/19/model.inc.c\"\n#include \"levels/bits/areas/1/20/model.inc.c\"\n#include \"levels/bits/areas/1/21/model.inc.c\"\n#include \"levels/bits/areas/1/22/model.inc.c\"\n#include \"levels/bits/areas/1/23/model.inc.c\"\n#include \"levels/bits/areas/1/24/model.inc.c\"\n#include \"levels/bits/areas/1/25/model.inc.c\"\n#include \"levels/bits/areas/1/26/model.inc.c\"\n#include \"levels/bits/areas/1/27/model.inc.c\"\n#include \"levels/bits/areas/1/28/model.inc.c\"\n#include \"levels/bits/areas/1/29/model.inc.c\"\n#include \"levels/bits/areas/1/30/model.inc.c\"\n#include \"levels/bits/areas/1/31/model.inc.c\"\n#include \"levels/bits/areas/1/32/model.inc.c\"\n#include \"levels/bits/areas/1/collision.inc.c\"\n#include \"levels/bits/areas/1/macro.inc.c\"\n#include \"levels/bits/areas/1/20/collision.inc.c\"\n#include \"levels/bits/areas/1/21/collision.inc.c\"\n#include \"levels/bits/areas/1/22/collision.inc.c\"\n#include \"levels/bits/areas/1/23/collision.inc.c\"\n#include \"levels/bits/areas/1/24/collision.inc.c\"\n#include \"levels/bits/areas/1/25/collision.inc.c\"\n#include \"levels/bits/areas/1/26/collision.inc.c\"\n#include \"levels/bits/areas/1/27/collision.inc.c\"\n#include \"levels/bits/areas/1/28/collision.inc.c\"\n#include \"levels/bits/areas/1/29/collision.inc.c\"\n#include \"levels/bits/areas/1/30/collision.inc.c\"\n#include \"levels/bits/areas/1/31/collision.inc.c\"\n#include \"levels/bits/areas/1/32/collision.inc.c\"\n"
  },
  {
    "path": "levels/bits/script.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"behavior_data.h\"\n#include \"model_ids.h\"\n#include \"seq_ids.h\"\n#include \"segment_symbols.h\"\n#include \"level_commands.h\"\n\n#include \"game/level_update.h\"\n\n#include \"levels/scripts.h\"\n\n#include \"actors/common1.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/bits/header.h\"\n\nstatic const LevelScript script_func_local_1[] = {\n    OBJECT(/*model*/ MODEL_BITS_SLIDING_PLATFORM,       /*pos*/ -2370, -4525,     0, /*angle*/ 0, 0, 0,   /*bhvParam*/ BPARAM2(0x10), /*bhv*/ bhvSlidingPlatform2),\n    OBJECT(/*model*/ MODEL_BITS_TWIN_SLIDING_PLATFORMS, /*pos*/ -2611,  3544,  -904, /*angle*/ 0, 0, 0,   /*bhvParam*/ BPARAM2(0xCF), /*bhv*/ bhvSlidingPlatform2),\n    OBJECT(/*model*/ MODEL_BITS_TWIN_SLIDING_PLATFORMS, /*pos*/ -4700,  3544,  -904, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(0x8F), /*bhv*/ bhvSlidingPlatform2),\n    OBJECT(/*model*/ MODEL_BITS_OCTAGONAL_PLATFORM,     /*pos*/  4139, -1740, -1831, /*angle*/ 0, 0, 0,   /*bhvParam*/ BPARAM1(0x02), /*bhv*/ bhvOctagonalPlatformRotating),\n    OBJECT(/*model*/ MODEL_BITS_OCTAGONAL_PLATFORM,     /*pos*/ -6459,  1732,  -904, /*angle*/ 0, 0, 0,   /*bhvParam*/ 0, /*bhv*/ bhvOctagonalPlatformRotating),\n    OBJECT(/*model*/ MODEL_BITS_OCTAGONAL_PLATFORM,     /*pos*/ -4770,  1732,  -904, /*angle*/ 0, 0, 0,   /*bhvParam*/ BPARAM1(0x02), /*bhv*/ bhvOctagonalPlatformRotating),\n    OBJECT(/*model*/ MODEL_BITS_FERRIS_WHEEL_AXLE,      /*pos*/ -1748, -1330, -1094, /*angle*/ 0, 0, 0,   /*bhvParam*/ 0, /*bhv*/ bhvFerrisWheelAxle),\n    OBJECT(/*model*/ MODEL_BITS_FERRIS_WHEEL_AXLE,      /*pos*/  2275,  5628, -1315, /*angle*/ 0, 0, 0,   /*bhvParam*/ 0, /*bhv*/ bhvFerrisWheelAxle),\n    OBJECT(/*model*/ MODEL_BITS_FERRIS_WHEEL_AXLE,      /*pos*/  3114,  4701, -1320, /*angle*/ 0, 0, 0,   /*bhvParam*/ 0, /*bhv*/ bhvFerrisWheelAxle),\n    OBJECT(/*model*/ MODEL_BITS_ARROW_PLATFORM,         /*pos*/  2793,  2325,  -904, /*angle*/ 0, 0, 0,   /*bhvParam*/ BPARAM1(ACTIVATED_BF_PLAT_TYPE_BITS_ARROW_PLAT) | BPARAM2(97), /*bhv*/ bhvActivatedBackAndForthPlatform),\n    OBJECT(/*model*/ MODEL_BITS_SEESAW_PLATFORM,        /*pos*/    27, -1555,  -713, /*angle*/ 0, 90, 0,  /*bhvParam*/ BPARAM2(0x01), /*bhv*/ bhvSeesawPlatform),\n    OBJECT(/*model*/ MODEL_BITS_TILTING_W_PLATFORM,     /*pos*/  -306, -4300,     0, /*angle*/ 0, 0, 0,   /*bhvParam*/ BPARAM2(0x02), /*bhv*/ bhvSeesawPlatform),\n    OBJECT(/*model*/ MODEL_BITS_STAIRCASE,              /*pos*/  1769,  -234,  -899, /*angle*/ 0, 0, 0,   /*bhvParam*/ 0, /*bhv*/ bhvAnimatesOnFloorSwitchPress),\n    OBJECT(/*model*/ MODEL_PURPLE_SWITCH,               /*pos*/  -279,  -234,  -900, /*angle*/ 0, 0, 0,   /*bhvParam*/ 0, /*bhv*/ bhvFloorSwitchAnimatesObject),\n    OBJECT(/*model*/ MODEL_NONE,                        /*pos*/ -6460,  2039,  -905, /*angle*/ 0, 0, 0,   /*bhvParam*/ BPARAM2(207),  /*bhv*/ bhvPoleGrabbing),\n    OBJECT(/*model*/ MODEL_NONE,                        /*pos*/ -3326,  3227,  -905, /*angle*/ 0, 0, 0,   /*bhvParam*/ BPARAM2(77),   /*bhv*/ bhvPoleGrabbing),\n    OBJECT(/*model*/ MODEL_NONE,                        /*pos*/  5518,  3184, -4019, /*angle*/ 0, 0, 0,   /*bhvParam*/ 0, /*bhv*/ bhvFlamethrower),\n    OBJECT(/*model*/ MODEL_NONE,                        /*pos*/  6465,  3731, -1915, /*angle*/ 0, 0, 0,   /*bhvParam*/ 0, /*bhv*/ bhvFlamethrower),\n    OBJECT(/*model*/ MODEL_NONE,                        /*pos*/  5915,  3718, -4019, /*angle*/ 0, 0, 0,   /*bhvParam*/ 0, /*bhv*/ bhvFlamethrower),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_2[] = {\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ 350, 6800, -6800, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_1), /*bhv*/ bhvBowserCourseRedCoinStar),\n    RETURN(),\n};\n\nconst LevelScript level_bits_entry[] = {\n    INIT_LEVEL(),\n    LOAD_MIO0        (/*seg*/ 0x07, _bits_segment_7SegmentRomStart, _bits_segment_7SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x0A, _bits_skybox_mio0SegmentRomStart, _bits_skybox_mio0SegmentRomEnd),\n    LOAD_MIO0_TEXTURE(/*seg*/ 0x09, _sky_mio0SegmentRomStart, _sky_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x06, _group14_mio0SegmentRomStart, _group14_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0D, _group14_geoSegmentRomStart,  _group14_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x08, _common0_mio0SegmentRomStart, _common0_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0F, _common0_geoSegmentRomStart,  _common0_geoSegmentRomEnd),\n    ALLOC_LEVEL_POOL(),\n    MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),\n    JUMP_LINK(script_func_global_15),\n    JUMP_LINK(script_func_global_1),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_03,           bits_geo_000430),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_04,           bits_geo_000448),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_05,           bits_geo_000460),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_06,           bits_geo_000478),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_07,           bits_geo_000490),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_08,           bits_geo_0004A8),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_09,           bits_geo_0004C0),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_0A,           bits_geo_0004D8),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_0B,           bits_geo_0004F0),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_0C,           bits_geo_000508),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_0D,           bits_geo_000520),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_0E,           bits_geo_000538),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_0F,           bits_geo_000550),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_10,           bits_geo_000568),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_11,           bits_geo_000580),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_12,           bits_geo_000598),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_13,           bits_geo_0005B0),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_14,           bits_geo_0005C8),\n    LOAD_MODEL_FROM_GEO(MODEL_BITS_SLIDING_PLATFORM,       bits_geo_0005E0),\n    LOAD_MODEL_FROM_GEO(MODEL_BITS_TWIN_SLIDING_PLATFORMS, bits_geo_0005F8),\n    LOAD_MODEL_FROM_GEO(MODEL_BITS_OCTAGONAL_PLATFORM,     bits_geo_000610),\n    LOAD_MODEL_FROM_GEO(MODEL_BITS_BLUE_PLATFORM,          bits_geo_000628),\n    LOAD_MODEL_FROM_GEO(MODEL_BITS_FERRIS_WHEEL_AXLE,      bits_geo_000640),\n    LOAD_MODEL_FROM_GEO(MODEL_BITS_ARROW_PLATFORM,         bits_geo_000658),\n    LOAD_MODEL_FROM_GEO(MODEL_BITS_SEESAW_PLATFORM,        bits_geo_000670),\n    LOAD_MODEL_FROM_GEO(MODEL_BITS_TILTING_W_PLATFORM,     bits_geo_000688),\n    LOAD_MODEL_FROM_GEO(MODEL_BITS_STAIRCASE,              bits_geo_0006A0),\n    LOAD_MODEL_FROM_GEO(MODEL_BITS_STAIRCASE_FRAME1,       bits_geo_0006B8),\n    LOAD_MODEL_FROM_GEO(MODEL_BITS_STAIRCASE_FRAME2,       bits_geo_0006D0),\n    LOAD_MODEL_FROM_GEO(MODEL_BITS_STAIRCASE_FRAME3,       bits_geo_0006E8),\n    LOAD_MODEL_FROM_GEO(MODEL_BITS_STAIRCASE_FRAME4,       bits_geo_000700),\n    LOAD_MODEL_FROM_GEO(MODEL_BITS_WARP_PIPE,              warp_pipe_geo),\n\n    AREA(/*index*/ 1, bits_geo_000718),\n        OBJECT(/*model*/ MODEL_NONE,           /*pos*/ -7039, -3812,     4, /*angle*/ 0, 90, 0,  /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvAirborneWarp),\n        OBJECT(/*model*/ MODEL_BITS_WARP_PIPE, /*pos*/   351,  6652, -6030, /*angle*/ 0, 0, 0,   /*bhvParam*/ BPARAM2(WARP_NODE_0B), /*bhv*/ bhvWarpPipe),\n        OBJECT(/*model*/ MODEL_NONE,           /*pos*/   351,  6800, -3900, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0C), /*bhv*/ bhvDeathWarp),\n        WARP_NODE(/*id*/ WARP_NODE_0A,    /*destLevel*/ LEVEL_BITS,     /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_0B,    /*destLevel*/ LEVEL_BOWSER_3, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_0C,    /*destLevel*/ LEVEL_BITS,     /*destArea*/ 1, /*destNode*/ WARP_NODE_0C, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH, /*destLevel*/ LEVEL_CASTLE,   /*destArea*/ 2, /*destNode*/ WARP_NODE_6B, /*flags*/ WARP_NO_CHECKPOINT),\n        JUMP_LINK(script_func_local_1),\n        JUMP_LINK(script_func_local_2),\n        TERRAIN(/*terrainData*/ bits_seg7_collision_level),\n        MACRO_OBJECTS(/*objList*/ bits_seg7_macro_objs),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0000, /*seq*/ SEQ_LEVEL_KOOPA_ROAD),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_STONE),\n    END_AREA(),\n\n    FREE_LEVEL_POOL(),\n    MARIO_POS(/*area*/ 1, /*yaw*/ 90, /*pos*/ -7039, -4812, 4),\n    CALL(/*arg*/ 0, /*func*/ lvl_init_or_update),\n    CALL_LOOP(/*arg*/ 1, /*func*/ lvl_init_or_update),\n    CLEAR_LEVEL(),\n    SLEEP_BEFORE_EXIT(/*frames*/ 1),\n    EXIT(),\n};\n"
  },
  {
    "path": "levels/bits/texture.inc.c",
    "content": "// 0x07000000 - 0x07001000\nALIGNED8 static const Texture bits_seg7_texture_07000000[] = {\n#include \"levels/bits/0.rgba16.inc.c\"\n};\n\n// 0x07001000 - 0x07002000\nALIGNED8 static const Texture bits_seg7_texture_07001000[] = {\n#include \"levels/bits/1.rgba16.inc.c\"\n};\n\n// 0x07002000 - 0x07002800\nALIGNED8 static const Texture bits_seg7_texture_07002000[] = {\n#include \"levels/bits/2.rgba16.inc.c\"\n};\n"
  },
  {
    "path": "levels/bob/areas/1/1/model.inc.c",
    "content": "// 0x07002800 - 0x07002818\nstatic const Lights1 bob_seg7_lights_07002800 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07002818 - 0x07002908\nstatic const Vtx bob_seg7_vertex_07002818[] = {\n    {{{  4864,   1024,   4096}, 0, { 22366,  -6504}, {0xf8, 0x7e, 0xf9, 0xff}}},\n    {{{  7680,    768,      0}, 0, { 27050, -13318}, {0xd6, 0x77, 0x00, 0xff}}},\n    {{{  3840,    768,   2304}, 0, { 20664,  -9486}, {0xf9, 0x7e, 0xf8, 0xff}}},\n    {{{  2304,    768,   4352}, 0, { 18108,  -6078}, {0xfc, 0x7e, 0xff, 0xff}}},\n    {{{  3584,    656,   -767}, 0, { 20238, -14596}, {0x0b, 0x7b, 0x1b, 0xff}}},\n    {{{  5888,   1024,   4096}, 0, { 24070,  -6504}, {0x0b, 0x7e, 0xfe, 0xff}}},\n    {{{  7686,    768,   7100}, 0, { 27060,  -1506}, {0xed, 0x7d, 0xf9, 0xff}}},\n    {{{  8192,   2560,   4096}, 0, { 27902,  -6504}, {0x90, 0x3b, 0x04, 0xff}}},\n    {{{  8192,   1855,   1024}, 0, { 27902, -11614}, {0x85, 0x1c, 0xff, 0xff}}},\n    {{{  6289,    912,  -2653}, 0, { 24738, -17732}, {0x57, 0x45, 0x3c, 0xff}}},\n    {{{  5468,    912,  -1870}, 0, { 23372, -16430}, {0x35, 0x4e, 0x54, 0xff}}},\n    {{{ -2815,   1024,    256}, 0, {  9592, -12892}, {0x01, 0x7e, 0xff, 0xff}}},\n    {{{ -4991,   1024,  -2431}, 0, {  5972, -17364}, {0x07, 0x7e, 0xfe, 0xff}}},\n    {{{ -3231,   1024,   -159}, 0, {  8900, -13584}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1692,    768,   3192}, 0, { 17092,  -8008}, {0x00, 0x7e, 0x00, 0xff}}},\n};\n\n// 0x07002908 - 0x070029F8\nstatic const Vtx bob_seg7_vertex_07002908[] = {\n    {{{ -1535,    256,   5888}, 0, { 11720,  -3524}, {0xff, 0x7d, 0x10, 0xff}}},\n    {{{ -3071,      0,   7168}, 0, {  9166,  -1394}, {0xff, 0x7b, 0xe5, 0xff}}},\n    {{{  -921,      0,   6400}, 0, { 12742,  -2672}, {0x03, 0x7c, 0x19, 0xff}}},\n    {{{  -921,    256,   5888}, 0, { 12742,  -3524}, {0xef, 0x75, 0x2c, 0xff}}},\n    {{{ -2559,    179,   5888}, 0, { 10018,  -3524}, {0xf1, 0x7d, 0x05, 0xff}}},\n    {{{ -3583,      0,   5888}, 0, {  8314,  -3524}, {0xf6, 0x7e, 0x01, 0xff}}},\n    {{{ -2815,   1024,    256}, 0, {  9592, -12892}, {0x01, 0x7e, 0xff, 0xff}}},\n    {{{ -1791,    973,   -767}, 0, { 11296, -14596}, {0x0c, 0x7c, 0xeb, 0xff}}},\n    {{{ -4991,   1024,  -2431}, 0, {  5972, -17364}, {0x07, 0x7e, 0xfe, 0xff}}},\n    {{{ -4991,   1024,  -4479}, 0, {  5972, -20770}, {0x0f, 0x7c, 0xee, 0xff}}},\n    {{{ -4132,    513,  -6035}, 0, {  7402, -23358}, {0x12, 0x7c, 0xf1, 0xff}}},\n    {{{ -7167,   1024,  -7167}, 0, {  2352, -25242}, {0x09, 0x79, 0x23, 0xff}}},\n    {{{ -1872,    768,  -1441}, 0, { 11160, -15716}, {0x11, 0x7b, 0xea, 0xff}}},\n    {{{ -2559,    768,  -2815}, 0, { 10018, -18002}, {0x11, 0x7d, 0x05, 0xff}}},\n    {{{ -4095,   1024,  -2943}, 0, {  7462, -18216}, {0x1c, 0x7b, 0x07, 0xff}}},\n};\n\n// 0x070029F8 - 0x07002AD8\nstatic const Vtx bob_seg7_vertex_070029F8[] = {\n    {{{ -7167,   1024,    512}, 0, {  2352, -12466}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4991,   1024,  -2431}, 0, {  5972, -17364}, {0x07, 0x7e, 0xfe, 0xff}}},\n    {{{ -5887,   1024,  -2943}, 0, {  4482, -18216}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4991,   1024,  -4479}, 0, {  5972, -20770}, {0x0f, 0x7c, 0xee, 0xff}}},\n    {{{ -4095,   1024,  -3967}, 0, {  7462, -19918}, {0x19, 0x7a, 0xec, 0xff}}},\n    {{{ -4132,    513,  -6035}, 0, {  7402, -23358}, {0x12, 0x7c, 0xf1, 0xff}}},\n    {{{ -6015,   1024,  -3839}, 0, {  4268, -19706}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -7167,   1024,  -7167}, 0, {  2352, -25242}, {0x09, 0x79, 0x23, 0xff}}},\n    {{{ -3151,    512,  -6526}, 0, {  9032, -24174}, {0x0c, 0x7c, 0x17, 0xff}}},\n    {{{ -7167,   1024,   4096}, 0, {  2352,  -6504}, {0x5f, 0x52, 0x09, 0xff}}},\n    {{{ -8191,   1536,  -8191}, 0, {   650, -26944}, {0x2e, 0x71, 0x20, 0xff}}},\n    {{{ -3151,   1024,  -6526}, 0, {  9032, -24174}, {0x06, 0x74, 0x32, 0xff}}},\n    {{{ -4095,   1792,  -8191}, 0, {  7462, -26944}, {0x00, 0x67, 0x49, 0xff}}},\n    {{{ -6143,   2560,  -8191}, 0, {  4056, -26944}, {0xf6, 0x4b, 0x65, 0xff}}},\n};\n\n// 0x07002AD8 - 0x07002BD8\nstatic const Vtx bob_seg7_vertex_07002AD8[] = {\n    {{{  8093,   1936,  -6029}, 0, {   432,   1198}, {0xb4, 0x65, 0x05, 0xff}}},\n    {{{  8093,   1936,  -5934}, 0, {   590,   1208}, {0xb8, 0x5d, 0x2e, 0xff}}},\n    {{{  8093,   2064,  -5934}, 0, {   602,    998}, {0x82, 0x01, 0x00, 0xff}}},\n    {{{  8093,   2085,  -5982}, 0, {   524,    962}, {0x82, 0x08, 0x00, 0xff}}},\n    {{{  8093,   2064,  -6029}, 0, {   444,    990}, {0x82, 0x02, 0xfd, 0xff}}},\n    {{{  8192,   2560,  -8191}, 0, { -3102,      0}, {0x99, 0x33, 0x34, 0xff}}},\n    {{{  7680,    768,      0}, 0, { 10348,   3740}, {0xd6, 0x77, 0x00, 0xff}}},\n    {{{  8192,   1855,   1024}, 0, { 12144,   1906}, {0x85, 0x1c, 0xff, 0xff}}},\n    {{{  8192,   2720,  -5119}, 0, {  2012,      0}, {0x83, 0x12, 0x00, 0xff}}},\n    {{{  8093,   1936,  -6029}, 0, { -1052,      0}, {0xb4, 0x65, 0x05, 0xff}}},\n    {{{  8192,   2560,  -8191}, 0, { -1052,  -3778}, {0x99, 0x33, 0x34, 0xff}}},\n    {{{  7680,   2080,  -7679}, 0, { -2016,  -2702}, {0xf7, 0x7b, 0x1a, 0xff}}},\n    {{{  6289,    912,  -2653}, 0, { 24738, -17732}, {0x57, 0x45, 0x3c, 0xff}}},\n    {{{  7680,    768,      0}, 0, { 27050, -13318}, {0xd6, 0x77, 0x00, 0xff}}},\n    {{{  7029,    912,  -3999}, 0, { 25968, -19972}, {0x17, 0x75, 0x28, 0xff}}},\n    {{{  8093,   1936,  -5934}, 0, { 27920, -23520}, {0xb8, 0x5d, 0x2e, 0xff}}},\n};\n\n// 0x07002BD8 - 0x07002CC8\nstatic const Vtx bob_seg7_vertex_07002BD8[] = {\n    {{{  3840,   2048,   8192}, 0, { 20664,    308}, {0xf6, 0x6c, 0xbf, 0xff}}},\n    {{{  7686,    768,   7100}, 0, { 27060,  -1506}, {0xed, 0x7d, 0xf9, 0xff}}},\n    {{{   768,    768,   7168}, 0, { 15554,  -1394}, {0xee, 0x78, 0xdc, 0xff}}},\n    {{{  6289,   1936,  -2653}, 0, { 24738, -17732}, {0x30, 0x69, 0x34, 0xff}}},\n    {{{  8093,   1936,  -5934}, 0, { 27920, -23520}, {0xb8, 0x5d, 0x2e, 0xff}}},\n    {{{  8093,   1936,  -6029}, 0, { 27852, -23556}, {0xb4, 0x65, 0x05, 0xff}}},\n    {{{  8093,   1936,  -5934}, 0, {  9204,   6322}, {0xb8, 0x5d, 0x2e, 0xff}}},\n    {{{  6289,    912,  -2653}, 0, {  3412,   4224}, {0x57, 0x45, 0x3c, 0xff}}},\n    {{{  7029,    912,  -3999}, 0, {  5222,   5504}, {0x17, 0x75, 0x28, 0xff}}},\n    {{{  6289,   1936,  -2653}, 0, {  4554,   3032}, {0x30, 0x69, 0x34, 0xff}}},\n    {{{  3097,   1741,   -733}, 0, {  -152,  -1010}, {0x0d, 0x56, 0x5c, 0xff}}},\n    {{{  5468,    912,  -1870}, 0, {  2012,   3032}, {0x35, 0x4e, 0x54, 0xff}}},\n    {{{   768,    768,   5888}, 0, { 15554,  -3524}, {0xfa, 0x75, 0x2f, 0xff}}},\n    {{{ -3071,    640,   8192}, 0, {  9166,    308}, {0xfb, 0x63, 0xb1, 0xff}}},\n    {{{   768,    768,   7680}, 0, { 15554,   -542}, {0xec, 0x65, 0xb7, 0xff}}},\n};\n\n// 0x07002CC8 - 0x07002DC8\nstatic const Vtx bob_seg7_vertex_07002CC8[] = {\n    {{{ -3071,      0,   7168}, 0, {  9166,  -1394}, {0xff, 0x7b, 0xe5, 0xff}}},\n    {{{   768,    768,   7680}, 0, { 15554,   -542}, {0xec, 0x65, 0xb7, 0xff}}},\n    {{{   768,      0,   7168}, 0, { 15554,  -1394}, {0x00, 0x7b, 0xe4, 0xff}}},\n    {{{   768,    768,   7168}, 0, { 15554,  -1394}, {0xee, 0x78, 0xdc, 0xff}}},\n    {{{  3840,   2048,   8192}, 0, { 20664,    308}, {0xf6, 0x6c, 0xbf, 0xff}}},\n    {{{  7686,    768,   7100}, 0, { 27060,  -1506}, {0xed, 0x7d, 0xf9, 0xff}}},\n    {{{  8192,   1024,   8192}, 0, { 27902,    308}, {0xd5, 0x76, 0xf9, 0xff}}},\n    {{{  -869,   1024,  -5528}, 0, { 12830, -22514}, {0xf0, 0x7d, 0x0a, 0xff}}},\n    {{{  3072,   2513,  -7679}, 0, { 19386, -26092}, {0xf2, 0x7e, 0x00, 0xff}}},\n    {{{  3072,   2513,  -8191}, 0, { 19386, -26944}, {0x01, 0x6d, 0x40, 0xff}}},\n    {{{ -3105,   1024,  -6549}, 0, {  9108, -24214}, {0xfe, 0x71, 0x39, 0xff}}},\n    {{{ -3071,    640,   8192}, 0, {  9166,    308}, {0xfb, 0x63, 0xb1, 0xff}}},\n    {{{ -8191,   1280,   8192}, 0, {   650,    308}, {0x4d, 0x5f, 0xe0, 0xff}}},\n    {{{  5888,   1024,   5120}, 0, { 24070,  -4802}, {0x08, 0x7e, 0x08, 0xff}}},\n    {{{  4864,   1024,   5120}, 0, { 22366,  -4802}, {0xf7, 0x7e, 0x06, 0xff}}},\n    {{{  5888,   1024,   4096}, 0, { 24070,  -6504}, {0x0b, 0x7e, 0xfe, 0xff}}},\n};\n\n// 0x07002DC8 - 0x07002EB8\nstatic const Vtx bob_seg7_vertex_07002DC8[] = {\n    {{{  1792,    768,   5376}, 0, { 17256,  -4376}, {0xfd, 0x7e, 0x03, 0xff}}},\n    {{{   768,    768,   5888}, 0, { 15554,  -3524}, {0xfa, 0x75, 0x2f, 0xff}}},\n    {{{  7686,    768,   7100}, 0, { 27060,  -1506}, {0xed, 0x7d, 0xf9, 0xff}}},\n    {{{  4864,   1024,   5120}, 0, { 22366,  -4802}, {0xf7, 0x7e, 0x06, 0xff}}},\n    {{{  8192,   1024,   8192}, 0, { 27902,    308}, {0xd5, 0x76, 0xf9, 0xff}}},\n    {{{  8192,   2560,   4096}, 0, { 27902,  -6504}, {0x90, 0x3b, 0x04, 0xff}}},\n    {{{  3097,   1741,   -733}, 0, {  -152,  -1010}, {0x0d, 0x56, 0x5c, 0xff}}},\n    {{{  3584,    656,   -767}, 0, {  -894,    822}, {0x0b, 0x7b, 0x1b, 0xff}}},\n    {{{  5468,    912,  -1870}, 0, {  2012,   3032}, {0x35, 0x4e, 0x54, 0xff}}},\n    {{{ -8191,   1280,   8192}, 0, {   650,    308}, {0x4d, 0x5f, 0xe0, 0xff}}},\n    {{{ -7167,      0,   7168}, 0, {  2352,  -1394}, {0x0f, 0x7d, 0xf1, 0xff}}},\n    {{{ -7167,      0,   4096}, 0, {  2352,  -6504}, {0x2c, 0x76, 0x06, 0xff}}},\n    {{{ -5375,      0,   6464}, 0, {  5334,  -2566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3071,      0,   7168}, 0, {  9166,  -1394}, {0xff, 0x7b, 0xe5, 0xff}}},\n    {{{ -3583,      0,   5888}, 0, {  8314,  -3524}, {0xf6, 0x7e, 0x01, 0xff}}},\n};\n\n// 0x07002EB8 - 0x07002FB8\nstatic const Vtx bob_seg7_vertex_07002EB8[] = {\n    {{{  -921,      0,   6400}, 0, { 12742,  -2672}, {0x03, 0x7c, 0x19, 0xff}}},\n    {{{ -3071,      0,   7168}, 0, {  9166,  -1394}, {0xff, 0x7b, 0xe5, 0xff}}},\n    {{{  -383,      0,   6400}, 0, { 13638,  -2672}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   768,      0,   7168}, 0, { 15554,  -1394}, {0x00, 0x7b, 0xe4, 0xff}}},\n    {{{ -7167,      0,   7168}, 0, {  2352,  -1394}, {0x0f, 0x7d, 0xf1, 0xff}}},\n    {{{ -8191,   1280,   8192}, 0, {   650,    308}, {0x4d, 0x5f, 0xe0, 0xff}}},\n    {{{ -7167,   1024,   4096}, 0, {   990,   -470}, {0x5f, 0x52, 0x09, 0xff}}},\n    {{{ -8191,   1280,   8192}, 0, { -5028,   -836}, {0x4d, 0x5f, 0xe0, 0xff}}},\n    {{{ -7167,      0,   4096}, 0, {   990,    990}, {0x2c, 0x76, 0x06, 0xff}}},\n    {{{ -6591,      0,   5312}, 0, {  3310,  -4482}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -7167,      0,   4096}, 0, {  2352,  -6504}, {0x2c, 0x76, 0x06, 0xff}}},\n    {{{ -7167,   1024,   4096}, 0, {  2352,  -6504}, {0x5f, 0x52, 0x09, 0xff}}},\n    {{{ -8191,   2048,      0}, 0, {   650, -13318}, {0x54, 0x5e, 0x02, 0xff}}},\n    {{{ -6015,      0,   6464}, 0, {  4268,  -2566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6591,      0,   5888}, 0, {  3310,  -3524}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5375,      0,   6464}, 0, {  5334,  -2566}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07002FB8 - 0x070030B8\nstatic const Vtx bob_seg7_vertex_07002FB8[] = {\n    {{{ -7167,   1024,   4096}, 0, {  2352,  -6504}, {0x5f, 0x52, 0x09, 0xff}}},\n    {{{ -8191,   1536,  -8191}, 0, {   650, -26944}, {0x2e, 0x71, 0x20, 0xff}}},\n    {{{ -8191,   2048,      0}, 0, {   650, -13318}, {0x54, 0x5e, 0x02, 0xff}}},\n    {{{  4352,   3712,  -8191}, 0, {  1808,   -702}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   512,   3328,  -8191}, 0, { -3670,   -206}, {0xfa, 0x39, 0x71, 0xff}}},\n    {{{  3072,   2513,  -8191}, 0, {     0,    990}, {0x01, 0x6d, 0x40, 0xff}}},\n    {{{  8192,   2560,  -8191}, 0, {  7268,    990}, {0x99, 0x33, 0x34, 0xff}}},\n    {{{ -4095,   1792,  -8191}, 0, {  7462, -26944}, {0x00, 0x67, 0x49, 0xff}}},\n    {{{ -3151,   1024,  -6526}, 0, {  9032, -24174}, {0x06, 0x74, 0x32, 0xff}}},\n    {{{ -3105,   1024,  -6549}, 0, {  9108, -24214}, {0xfe, 0x71, 0x39, 0xff}}},\n    {{{   512,   3328,  -8191}, 0, { 15128, -26944}, {0xfa, 0x39, 0x71, 0xff}}},\n    {{{  3072,   2513,  -8191}, 0, { 19386, -26944}, {0x01, 0x6d, 0x40, 0xff}}},\n    {{{  8192,   2560,  -8191}, 0, { 27902, -26944}, {0x99, 0x33, 0x34, 0xff}}},\n    {{{  7680,   2080,  -7679}, 0, { 27050, -26092}, {0xf7, 0x7b, 0x1a, 0xff}}},\n    {{{  6246,   2080,  -6962}, 0, { 24666, -24900}, {0x0b, 0x7e, 0x00, 0xff}}},\n    {{{  6246,   2080,  -7167}, 0, { 24666, -25242}, {0x08, 0x7e, 0x08, 0xff}}},\n};\n\n// 0x070030B8 - 0x070031B8\nstatic const Vtx bob_seg7_vertex_070030B8[] = {\n    {{{  3072,   2513,  -8191}, 0, { 19386, -26944}, {0x01, 0x6d, 0x40, 0xff}}},\n    {{{  6265,   2080,  -6527}, 0, { 24696, -24176}, {0x0a, 0x7e, 0x01, 0xff}}},\n    {{{  6246,   2080,  -6962}, 0, { 24666, -24900}, {0x0b, 0x7e, 0x00, 0xff}}},\n    {{{  7680,   2080,  -7679}, 0, { 27050, -26092}, {0xf7, 0x7b, 0x1a, 0xff}}},\n    {{{  6451,   2080,  -6962}, 0, { 25006, -24900}, {0x03, 0x7e, 0x03, 0xff}}},\n    {{{  8093,   1936,  -6029}, 0, { 27852, -23556}, {0xb4, 0x65, 0x05, 0xff}}},\n    {{{ -4095,   1024,  -2943}, 0, {  7462, -18216}, {0x1c, 0x7b, 0x07, 0xff}}},\n    {{{ -2559,    768,  -2815}, 0, { 10018, -18002}, {0x11, 0x7d, 0x05, 0xff}}},\n    {{{ -3445,    777,  -4662}, 0, {  8544, -21074}, {0x1b, 0x7b, 0xf3, 0xff}}},\n    {{{ -2458,   1024,  -5155}, 0, { 10184, -21894}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2240,   1024,  -4835}, 0, { 10548, -21362}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2413,   1024,  -5178}, 0, { 10260, -21932}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2285,   1024,  -4812}, 0, { 10472, -21324}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,   1024,  -5528}, 0, { 12830, -22514}, {0xf0, 0x7d, 0x0a, 0xff}}},\n    {{{ -3105,   1024,  -6549}, 0, {  9108, -24214}, {0xfe, 0x71, 0x39, 0xff}}},\n    {{{ -4095,   1024,  -3967}, 0, {  7462, -19918}, {0x19, 0x7a, 0xec, 0xff}}},\n};\n\n// 0x070031B8 - 0x07003298\nstatic const Vtx bob_seg7_vertex_070031B8[] = {\n    {{{ -4095,   1024,  -3967}, 0, {  7462, -19918}, {0x19, 0x7a, 0xec, 0xff}}},\n    {{{ -3445,    777,  -4662}, 0, {  8544, -21074}, {0x1b, 0x7b, 0xf3, 0xff}}},\n    {{{ -4132,    513,  -6035}, 0, {  7402, -23358}, {0x12, 0x7c, 0xf1, 0xff}}},\n    {{{  1280,    768,   3328}, 0, { 16406,  -7782}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2304,    768,   4352}, 0, { 18108,  -6078}, {0xfc, 0x7e, 0xff, 0xff}}},\n    {{{  1692,    768,   3192}, 0, { 17092,  -8008}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{ -1535,    768,   1536}, 0, { 11720, -10762}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2304,    768,   4864}, 0, { 18108,  -5228}, {0xfc, 0x7e, 0xfe, 0xff}}},\n    {{{  4864,   1024,   5120}, 0, { 22366,  -4802}, {0xf7, 0x7e, 0x06, 0xff}}},\n    {{{  4864,   1024,   4096}, 0, { 22366,  -6504}, {0xf8, 0x7e, 0xf9, 0xff}}},\n    {{{ -7167,    768,    512}, 0, {  2352, -12466}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3368,    768,    246}, 0, {  8672, -12908}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3503,    768,    111}, 0, {  8448, -13134}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3071,    768,    512}, 0, {  9166, -12466}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07003298 - 0x07003398\nstatic const Vtx bob_seg7_vertex_07003298[] = {\n    {{{  6265,   2080,  -6527}, 0, { 24696, -24176}, {0x0a, 0x7e, 0x01, 0xff}}},\n    {{{  3072,   2513,  -8191}, 0, { 19386, -26944}, {0x01, 0x6d, 0x40, 0xff}}},\n    {{{  3072,   2513,  -7679}, 0, { 19386, -26092}, {0xf2, 0x7e, 0x00, 0xff}}},\n    {{{  7680,   2080,  -7679}, 0, { 27050, -26092}, {0xf7, 0x7b, 0x1a, 0xff}}},\n    {{{  6246,   2080,  -7167}, 0, { 24666, -25242}, {0x08, 0x7e, 0x08, 0xff}}},\n    {{{  6451,   2080,  -7167}, 0, { 25006, -25242}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6246,   2080,  -6962}, 0, { 24666, -24900}, {0x0b, 0x7e, 0x00, 0xff}}},\n    {{{  6451,   2080,  -6962}, 0, { 25006, -24900}, {0x03, 0x7e, 0x03, 0xff}}},\n    {{{  8093,   1936,  -6029}, 0, { 27852, -23556}, {0xb4, 0x65, 0x05, 0xff}}},\n    {{{  6252,   1936,  -2700}, 0, { 24676, -17810}, {0x01, 0x7e, 0x02, 0xff}}},\n    {{{  6289,   1936,  -2653}, 0, { 24738, -17732}, {0x30, 0x69, 0x34, 0xff}}},\n    {{{ -4095,    768,   4096}, 0, {  7462,  -6504}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3071,    768,   3072}, 0, {  9166,  -8208}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -7167,    768,    512}, 0, {  2352, -12466}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3071,    768,    512}, 0, {  9166, -12466}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -7167,    768,   4096}, 0, {  2352,  -6504}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07003398 - 0x07003498\nstatic const Vtx bob_seg7_vertex_07003398[] = {\n    {{{ -1535,    768,   1536}, 0, { 11720, -10762}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1692,    768,   3192}, 0, { 17092,  -8008}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  1024,    768,    171}, 0, { 15980, -13034}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1888,    768,    720}, 0, { 17416, -12120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6591,      0,   5312}, 0, {  3310,  -4482}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6015,      0,   4736}, 0, {  4268,  -5440}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -7167,      0,   4096}, 0, {  2352,  -6504}, {0x2c, 0x76, 0x06, 0xff}}},\n    {{{ -5375,      0,   4736}, 0, {  5334,  -5440}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4095,      0,   4096}, 0, {  7462,  -6504}, {0xfc, 0x7e, 0xf8, 0xff}}},\n    {{{ -3583,      0,   5376}, 0, {  8314,  -4376}, {0xf9, 0x7e, 0x01, 0xff}}},\n    {{{ -4799,      0,   5312}, 0, {  6292,  -4482}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2559,    179,   5376}, 0, { 10018,  -4376}, {0xf1, 0x7e, 0x00, 0xff}}},\n    {{{ -1535,    256,   5376}, 0, { 11720,  -4376}, {0xff, 0x7d, 0xea, 0xff}}},\n    {{{  -383,      0,   6400}, 0, { 13638,  -2672}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -921,      0,   5888}, 0, { 12742,  -3524}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -921,      0,   6400}, 0, { 12742,  -2672}, {0x03, 0x7c, 0x19, 0xff}}},\n};\n\n// 0x07003498 - 0x07003598\nstatic const Vtx bob_seg7_vertex_07003498[] = {\n    {{{ -4799,      0,   5888}, 0, {  6292,  -3524}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5375,      0,   6464}, 0, {  5334,  -2566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3583,      0,   5888}, 0, {  8314,  -3524}, {0xf6, 0x7e, 0x01, 0xff}}},\n    {{{ -4095,      0,   4096}, 0, {  7462,  -6504}, {0xfc, 0x7e, 0xf8, 0xff}}},\n    {{{ -3583,      0,   5376}, 0, {  8314,  -4376}, {0xf9, 0x7e, 0x01, 0xff}}},\n    {{{ -2559,    179,   5376}, 0, { 10018,  -4376}, {0xf1, 0x7e, 0x00, 0xff}}},\n    {{{ -1535,    256,   5376}, 0, { 11720,  -4376}, {0xff, 0x7d, 0xea, 0xff}}},\n    {{{  -921,      0,   4865}, 0, { 12742,  -5226}, {0x05, 0x73, 0xcd, 0xff}}},\n    {{{  -921,    256,   5375}, 0, { 12742,  -4376}, {0xf9, 0x6a, 0xbc, 0xff}}},\n    {{{ -3231,   1024,   -159}, 0, {  8900, -13584}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4991,   1024,  -2431}, 0, {  5972, -17364}, {0x07, 0x7e, 0xfe, 0xff}}},\n    {{{ -3503,   1024,    111}, 0, {  8448, -13134}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -7167,   1024,    512}, 0, {  2352, -12466}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6015,      0,   4736}, 0, {  4268,  -5440}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5375,      0,   4736}, 0, {  5334,  -5440}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -7167,      0,   4096}, 0, {  2352,  -6504}, {0x2c, 0x76, 0x06, 0xff}}},\n};\n\n// 0x07003598 - 0x07003678\nstatic const Vtx bob_seg7_vertex_07003598[] = {\n    {{{  2304,    768,   4864}, 0, { 18108,  -5228}, {0xfc, 0x7e, 0xfe, 0xff}}},\n    {{{  1792,    768,   5376}, 0, { 17256,  -4376}, {0xfd, 0x7e, 0x03, 0xff}}},\n    {{{  4864,   1024,   5120}, 0, { 22366,  -4802}, {0xf7, 0x7e, 0x06, 0xff}}},\n    {{{ -7167,   1024,  -7167}, 0, {  2352, -25242}, {0x09, 0x79, 0x23, 0xff}}},\n    {{{ -7167,   1024,    512}, 0, {  2352, -12466}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6015,   1024,  -3839}, 0, {  4268, -19706}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5887,   1024,  -2943}, 0, {  4482, -18216}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   768,      0,   7168}, 0, { 15554,  -1394}, {0x00, 0x7b, 0xe4, 0xff}}},\n    {{{   768,      0,   5888}, 0, { 15554,  -3524}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,      0,   6400}, 0, { 14702,  -2672}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -383,      0,   6400}, 0, { 13638,  -2672}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  7680,   2080,  -7679}, 0, { 27050, -26092}, {0xf7, 0x7b, 0x1a, 0xff}}},\n    {{{  6451,   2080,  -7167}, 0, { 25006, -25242}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6451,   2080,  -6962}, 0, { 25006, -24900}, {0x03, 0x7e, 0x03, 0xff}}},\n};\n\n// 0x07003678 - 0x07003758\nstatic const Vtx bob_seg7_vertex_07003678[] = {\n    {{{  3060,   1741,   -780}, 0, { 19366, -14616}, {0xe1, 0x78, 0x18, 0xff}}},\n    {{{  6289,   1936,  -2653}, 0, { 24738, -17732}, {0x30, 0x69, 0x34, 0xff}}},\n    {{{  6252,   1936,  -2700}, 0, { 24676, -17810}, {0x01, 0x7e, 0x02, 0xff}}},\n    {{{  5888,   3072,   1230}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4454,   3072,   1127}, 0, {  1222,   2546}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4454,   3072,   1332}, 0, {  1576,   2342}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3097,   1741,   -733}, 0, { 19426, -14538}, {0x0d, 0x56, 0x5c, 0xff}}},\n    {{{  2079,   1368,  -1535}, 0, { 17734, -15872}, {0xb3, 0x50, 0x3c, 0xff}}},\n    {{{  1888,    768,    720}, 0, { 17416, -12120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2076,    768,    425}, 0, { 17728, -12610}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1212,    768,   -123}, 0, { 16292, -13524}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,    768,    171}, 0, { 15980, -13034}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5120,   3072,   2560}, 0, {  3034,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5120,   3072,    -99}, 0, { -1564,   2622}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07003758 - 0x070037E8\nstatic const Vtx bob_seg7_vertex_07003758[] = {\n    {{{  3584,   3072,   2560}, 0, {  4566,   2622}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4250,   3072,   1332}, 0, {  1780,   2696}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2816,   3072,   1230}, 0, {  3034,   5276}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4454,   3072,   1127}, 0, {  1222,   2546}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5120,   3072,    -99}, 0, { -1564,   2622}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3584,   3072,    -99}, 0, {     0,   5276}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4250,   3072,   1127}, 0, {  1426,   2900}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5120,   3072,   2560}, 0, {  3034,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4454,   3072,   1332}, 0, {  1576,   2342}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070037E8 - 0x070038E8\nstatic const Vtx bob_seg7_vertex_070037E8[] = {\n    {{{   768,    768,   5888}, 0, {   990,   1484}, {0xfa, 0x75, 0x2f, 0xff}}},\n    {{{  1792,    768,   4864}, 0, {   -26,  -1562}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   768,    768,   5376}, 0, {   -26,    978}, {0xe9, 0x76, 0xd8, 0xff}}},\n    {{{  1792,    768,   5376}, 0, {   990,  -1054}, {0xfd, 0x7e, 0x03, 0xff}}},\n    {{{  1792,    768,   5376}, 0, {   990,   2010}, {0xfd, 0x7e, 0x03, 0xff}}},\n    {{{  2304,    768,   4864}, 0, {   990,      0}, {0xfc, 0x7e, 0xfe, 0xff}}},\n    {{{  1792,    768,   4864}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1791,    768,   1792}, 0, {  1020,   1252}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,    768,   2048}, 0, {  1020,    222}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,    768,   1536}, 0, {   -12,   1252}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -921,    256,   5375}, 0, {     0,  -1256}, {0xf9, 0x6a, 0xbc, 0xff}}},\n    {{{ -1535,    256,   5376}, 0, {     0,      0}, {0xff, 0x7d, 0xea, 0xff}}},\n    {{{ -1535,    256,   5888}, 0, {   990,      0}, {0xff, 0x7d, 0x10, 0xff}}},\n    {{{  -921,    256,   5888}, 0, {   990,  -1256}, {0xef, 0x75, 0x2c, 0xff}}},\n    {{{ -2559,    179,   5376}, 0, {     0,   2016}, {0xf1, 0x7e, 0x00, 0xff}}},\n    {{{ -2559,    179,   5888}, 0, {   990,   2016}, {0xf1, 0x7d, 0x05, 0xff}}},\n};\n\n// 0x070038E8 - 0x070039E8\nstatic const Vtx bob_seg7_vertex_070038E8[] = {\n    {{{ -3583,      0,   5376}, 0, {    60,      0}, {0xf9, 0x7e, 0x01, 0xff}}},\n    {{{ -4799,      0,   5312}, 0, {   -54,   2172}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4799,      0,   5888}, 0, {   990,   2172}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3583,      0,   5888}, 0, {   990,      0}, {0xf6, 0x7e, 0x01, 0xff}}},\n    {{{ -2559,    179,   5376}, 0, {     0,   2016}, {0xf1, 0x7e, 0x00, 0xff}}},\n    {{{ -3583,      0,   5376}, 0, {     0,   4080}, {0xf9, 0x7e, 0x01, 0xff}}},\n    {{{ -3583,      0,   5888}, 0, {   990,   4080}, {0xf6, 0x7e, 0x01, 0xff}}},\n    {{{ -2559,    179,   5888}, 0, {   990,   2016}, {0xf1, 0x7d, 0x05, 0xff}}},\n    {{{  1792,    768,   4352}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1792,    768,   4864}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2304,    768,   4864}, 0, {     0,      0}, {0xfc, 0x7e, 0xfe, 0xff}}},\n    {{{  2304,    768,   4352}, 0, {     0,    990}, {0xfc, 0x7e, 0xff, 0xff}}},\n    {{{ -1535,    768,   2048}, 0, {  1030,   1316}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,    768,   3840}, 0, {  1030,  -7894}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,    768,   1536}, 0, {     0,   2024}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,    768,   3328}, 0, {     0,  -7186}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070039E8 - 0x07003A68\nstatic const Vtx bob_seg7_vertex_070039E8[] = {\n    {{{  1280,    768,   3840}, 0, {  1000,   1020}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1792,    768,   4352}, 0, {  1000,  -1044}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2304,    768,   4352}, 0, {     0,  -2076}, {0xfc, 0x7e, 0xff, 0xff}}},\n    {{{  1280,    768,   3328}, 0, {     0,   2052}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3071,    768,    512}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2815,    768,    256}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3097,    768,    -24}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3368,    768,    246}, 0, {   -92,    -34}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07003A68 - 0x07003B58\nstatic const Vtx bob_seg7_vertex_07003A68[] = {\n    {{{   768,    717,   5376}, 0, {  6040,      0}, {0x1a, 0xaa, 0xa7, 0xff}}},\n    {{{   768,    717,   5888}, 0, {  6042,   2012}, {0x1a, 0xab, 0x59, 0xff}}},\n    {{{  -921,    205,   5888}, 0, { -1004,   2012}, {0x1a, 0xab, 0x59, 0xff}}},\n    {{{  -921,    205,   5376}, 0, { -1006,    -28}, {0x1a, 0xaa, 0xa8, 0xff}}},\n    {{{  -921,    256,   5375}, 0, {  -946,      0}, {0xf9, 0x6a, 0xbc, 0xff}}},\n    {{{   768,    768,   5376}, 0, {  6100,      0}, {0xe9, 0x76, 0xd8, 0xff}}},\n    {{{  -921,    256,   5888}, 0, {  -946,   2012}, {0xef, 0x75, 0x2c, 0xff}}},\n    {{{   768,    768,   5888}, 0, {  6100,   2012}, {0xfa, 0x75, 0x2f, 0xff}}},\n    {{{  3319,   2944,  -1866}, 0, {     0,   2012}, {0x71, 0xcd, 0xea, 0xff}}},\n    {{{  3319,   2970,  -1866}, 0, {     0,   3008}, {0x3a, 0x55, 0xb8, 0xff}}},\n    {{{  3279,   2970,  -1718}, 0, {   970,   3008}, {0x56, 0x33, 0x4d, 0xff}}},\n    {{{  3279,   2944,  -1718}, 0, {   970,   2012}, {0x17, 0xad, 0x5c, 0xff}}},\n    {{{  3279,   2944,  -1718}, 0, {   228,    -40}, {0x17, 0xad, 0x5c, 0xff}}},\n    {{{  3279,   2970,  -1718}, 0, {   480,    -40}, {0x56, 0x33, 0x4d, 0xff}}},\n    {{{  2407,   2943,  -1925}, 0, {   218,   2020}, {0xc2, 0x54, 0x46, 0xff}}},\n};\n\n// 0x07003B58 - 0x07003C48\nstatic const Vtx bob_seg7_vertex_07003B58[] = {\n    {{{  2407,   2917,  -1925}, 0, {  1136,    968}, {0x90, 0xcc, 0x18, 0xff}}},\n    {{{  2407,   2943,  -1925}, 0, {  1136,   1972}, {0xc2, 0x54, 0x46, 0xff}}},\n    {{{  2447,   2943,  -2073}, 0, {   134,   1972}, {0xa9, 0x32, 0xb4, 0xff}}},\n    {{{  2447,   2917,  -2073}, 0, {   134,    968}, {0xee, 0xac, 0xa4, 0xff}}},\n    {{{  3319,   2970,  -1866}, 0, {     0,      0}, {0x3a, 0x55, 0xb8, 0xff}}},\n    {{{  2447,   2943,  -2073}, 0, {     0,   2028}, {0xa9, 0x32, 0xb4, 0xff}}},\n    {{{  2407,   2943,  -1925}, 0, {   970,   2040}, {0xc2, 0x54, 0x46, 0xff}}},\n    {{{  3279,   2970,  -1718}, 0, {   970,    -20}, {0x56, 0x33, 0x4d, 0xff}}},\n    {{{  2447,   2917,  -2073}, 0, {     0,   2012}, {0xee, 0xac, 0xa4, 0xff}}},\n    {{{  3319,   2970,  -1866}, 0, {   480,    -52}, {0x3a, 0x55, 0xb8, 0xff}}},\n    {{{  3319,   2944,  -1866}, 0, {   228,    -52}, {0x71, 0xcd, 0xea, 0xff}}},\n    {{{  2447,   2943,  -2073}, 0, {   218,   2012}, {0xa9, 0x32, 0xb4, 0xff}}},\n    {{{  3279,   2944,  -1718}, 0, {   970,    -20}, {0x17, 0xad, 0x5c, 0xff}}},\n    {{{  2447,   2917,  -2073}, 0, {     0,   2032}, {0xee, 0xac, 0xa4, 0xff}}},\n    {{{  3319,   2944,  -1866}, 0, {     0,      0}, {0x71, 0xcd, 0xea, 0xff}}},\n};\n\n// 0x07003C48 - 0x07003CA8\nstatic const Vtx bob_seg7_vertex_07003C48[] = {\n    {{{  3279,   2944,  -1718}, 0, {   228,    -40}, {0x17, 0xad, 0x5c, 0xff}}},\n    {{{  2407,   2943,  -1925}, 0, {   218,   2020}, {0xc2, 0x54, 0x46, 0xff}}},\n    {{{  2407,   2917,  -1925}, 0, {     0,   2020}, {0x90, 0xcc, 0x18, 0xff}}},\n    {{{  3279,   2944,  -1718}, 0, {   970,    -20}, {0x17, 0xad, 0x5c, 0xff}}},\n    {{{  2407,   2917,  -1925}, 0, {   970,   2040}, {0x90, 0xcc, 0x18, 0xff}}},\n    {{{  2447,   2917,  -2073}, 0, {     0,   2032}, {0xee, 0xac, 0xa4, 0xff}}},\n};\n\n// 0x07003CA8 - 0x070041E0\nstatic const Gfx bob_seg7_dl_07003CA8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bob_seg7_lights_07002800.l, 1),\n    gsSPLight(&bob_seg7_lights_07002800.a, 2),\n    gsSPVertex(bob_seg7_vertex_07002818, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 3,  0,  2, 0x0,  2,  1,  4, 0x0),\n    gsSP2Triangles( 0,  5,  1, 0x0,  1,  5,  6, 0x0),\n    gsSP2Triangles( 1,  7,  8, 0x0,  6,  7,  1, 0x0),\n    gsSP2Triangles( 1,  9, 10, 0x0,  4,  1, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0,  3,  4, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_07002908, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  4,  5,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 7, 12,  8, 0x0, 13, 14,  8, 0x0),\n    gsSP1Triangle(12, 13,  8, 0x0),\n    gsSPVertex(bob_seg7_vertex_070029F8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  7, 0x0,  5,  8,  7, 0x0),\n    gsSP2Triangles( 9,  7, 10, 0x0,  7, 11, 12, 0x0),\n    gsSP2Triangles( 7, 12, 13, 0x0, 10,  7, 13, 0x0),\n    gsSPVertex(bob_seg7_vertex_07002AD8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  0,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  4, 0x0,  1,  6,  7, 0x0),\n    gsSP2Triangles( 7,  2,  1, 0x0,  3,  2,  7, 0x0),\n    gsSP2Triangles( 3,  7,  8, 0x0,  3,  8,  5, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(13, 15, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_07002BD8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  7,  9, 11, 0x0),\n    gsSP2Triangles(12,  2,  1, 0x0, 13,  0, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_07002CC8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  4, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0, 11,  1,  0, 0x0),\n    gsSP2Triangles(12, 11,  0, 0x0,  5, 13, 14, 0x0),\n    gsSP1Triangle(15, 13,  5, 0x0),\n    gsSPVertex(bob_seg7_vertex_07002DC8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(13, 12, 10, 0x0),\n    gsSPVertex(bob_seg7_vertex_07002EB8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10,  4, 0x0, 11, 12,  5, 0x0),\n    gsSP2Triangles(13, 14,  4, 0x0, 15, 13,  4, 0x0),\n    gsSP1Triangle( 4, 14,  9, 0x0),\n    gsSPVertex(bob_seg7_vertex_07002FB8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 11, 13, 0x0, 11, 14, 15, 0x0),\n    gsSP1Triangle(11, 15, 13, 0x0),\n    gsSPVertex(bob_seg7_vertex_070030B8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 10, 13, 11, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0, 15,  6,  8, 0x0),\n    gsSPVertex(bob_seg7_vertex_070031B8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 4,  8,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(10, 13, 11, 0x0),\n    gsSPVertex(bob_seg7_vertex_07003298, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  0,  7, 0x0,  0,  8,  7, 0x0),\n    gsSP2Triangles( 9, 10,  8, 0x0,  9,  8,  0, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 14, 13, 12, 0x0),\n    gsSP1Triangle(13, 15, 11, 0x0),\n    gsSPVertex(bob_seg7_vertex_07003398, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9,  7, 10, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles(11, 12,  8, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bob_seg7_vertex_07003498, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  6,  8,  7, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 12, 11, 10, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(bob_seg7_vertex_07003598, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle( 7,  9, 10, 0x0),\n    gsSP1Triangle(11, 12, 13, 0x0),\n    gsSPVertex(bob_seg7_vertex_07003678, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  0,  7, 0x0,  0,  6,  1, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12,  3,  5, 0x0,  3, 13,  4, 0x0),\n    gsSPVertex(bob_seg7_vertex_07003758, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  6,  5,  2, 0x0),\n    gsSP2Triangles( 1,  6,  2, 0x0,  7,  8,  1, 0x0),\n    gsSP1Triangle( 0,  7,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070041E0 - 0x070042B8\nstatic const Gfx bob_seg7_dl_070041E0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09009800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bob_seg7_vertex_070037E8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 10, 12, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0, 14, 15, 12, 0x0),\n    gsSPVertex(bob_seg7_vertex_070038E8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_070039E8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070042B8 - 0x07004390\nstatic const Gfx bob_seg7_dl_070042B8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09006000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bob_seg7_vertex_07003A68, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  0,  4,  5, 0x0),\n    gsSP2Triangles( 6,  5,  4, 0x0,  6,  7,  5, 0x0),\n    gsSP2Triangles( 2,  1,  7, 0x0,  2,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_07003B58, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_07003C48, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07004390 - 0x07004478\nconst Gfx bob_seg7_dl_07004390[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(160, 160, 160, 255),\n    gsSPFogPosition(980, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bob_seg7_dl_07003CA8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bob_seg7_dl_070041E0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bob_seg7_dl_070042B8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bob/areas/1/2/model.inc.c",
    "content": "// 0x07004478 - 0x07004490\nstatic const Lights1 bob_seg7_lights_07004478 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07004490 - 0x07004590\nstatic const Vtx bob_seg7_vertex_07004490[] = {\n    {{{ -6591,      0,   5888}, 0, { -3020,   3702}, {0xd4, 0x77, 0x00, 0xff}}},\n    {{{ -6245,    128,   5816}, 0, { -1640,   3416}, {0xd4, 0x77, 0x00, 0xff}}},\n    {{{ -6245,    128,   5384}, 0, { -1640,   1690}, {0xd4, 0x77, 0x00, 0xff}}},\n    {{{ -6245,    128,   5816}, 0, { -1640,   3416}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5842,    128,   6248}, 0, {     0,   5140}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5797,    128,   5702}, 0, {   146,   2962}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6245,    128,   5384}, 0, { -1640,   1690}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5842,    128,   6248}, 0, {     0,   5140}, {0xdc, 0x74, 0x21, 0xff}}},\n    {{{ -6245,    128,   5816}, 0, { -1640,   3416}, {0xdc, 0x74, 0x21, 0xff}}},\n    {{{ -6591,      0,   5888}, 0, { -3020,   3702}, {0xdc, 0x74, 0x21, 0xff}}},\n    {{{ -5593,    128,   5702}, 0, {   964,   2962}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5548,    128,   6248}, 0, {  1144,   5140}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5375,      0,   6464}, 0, {  1834,   6002}, {0x00, 0x6d, 0x40, 0xff}}},\n    {{{ -5842,    128,   6248}, 0, {     0,   5140}, {0x00, 0x6d, 0x40, 0xff}}},\n    {{{ -6015,      0,   6464}, 0, {  -720,   6002}, {0x00, 0x6d, 0x40, 0xff}}},\n    {{{ -5548,    128,   6248}, 0, {  1144,   5140}, {0x00, 0x6d, 0x40, 0xff}}},\n};\n\n// 0x07004590 - 0x07004690\nstatic const Vtx bob_seg7_vertex_07004590[] = {\n    {{{ -6015,      0,   6464}, 0, {  -720,   6002}, {0xdb, 0x73, 0x25, 0xff}}},\n    {{{ -5842,    128,   6248}, 0, {     0,   5140}, {0xdb, 0x73, 0x25, 0xff}}},\n    {{{ -6591,      0,   5888}, 0, { -3020,   3702}, {0xdb, 0x73, 0x25, 0xff}}},\n    {{{ -6245,    128,   5384}, 0, { -1640,   1690}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5797,    128,   5702}, 0, {   146,   2962}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5797,    128,   5498}, 0, {   146,   2144}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5593,    128,   5498}, 0, {   964,   2144}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5593,    128,   5702}, 0, {   964,   2962}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5145,    128,   5816}, 0, {  2752,   3416}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5548,    128,   6248}, 0, {  1144,   5140}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4799,      0,   5888}, 0, {  4132,   3702}, {0x25, 0x73, 0x25, 0xff}}},\n    {{{ -5548,    128,   6248}, 0, {  1144,   5140}, {0x25, 0x73, 0x25, 0xff}}},\n    {{{ -5375,      0,   6464}, 0, {  1834,   6002}, {0x25, 0x73, 0x25, 0xff}}},\n    {{{ -4799,      0,   5888}, 0, {  4132,   3702}, {0x24, 0x74, 0x21, 0xff}}},\n    {{{ -5145,    128,   5816}, 0, {  2752,   3416}, {0x24, 0x74, 0x21, 0xff}}},\n    {{{ -5548,    128,   6248}, 0, {  1144,   5140}, {0x24, 0x74, 0x21, 0xff}}},\n};\n\n// 0x07004690 - 0x07004790\nstatic const Vtx bob_seg7_vertex_07004690[] = {\n    {{{ -5593,    128,   5498}, 0, {   964,   2144}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5145,    128,   5816}, 0, {  2752,   3416}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5145,    128,   5384}, 0, {  2752,   1690}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4799,      0,   5312}, 0, {  4132,   1404}, {0x2c, 0x77, 0x00, 0xff}}},\n    {{{ -5145,    128,   5816}, 0, {  2752,   3416}, {0x2c, 0x77, 0x00, 0xff}}},\n    {{{ -4799,      0,   5888}, 0, {  4132,   3702}, {0x2c, 0x77, 0x00, 0xff}}},\n    {{{ -5145,    128,   5384}, 0, {  2752,   1690}, {0x2c, 0x77, 0x00, 0xff}}},\n    {{{ -6591,      0,   5888}, 0, { -3020,   3702}, {0xd4, 0x77, 0x00, 0xff}}},\n    {{{ -6245,    128,   5384}, 0, { -1640,   1690}, {0xd4, 0x77, 0x00, 0xff}}},\n    {{{ -6591,      0,   5312}, 0, { -3020,   1404}, {0xd4, 0x77, 0x00, 0xff}}},\n    {{{ -6245,    128,   5384}, 0, { -1640,   1690}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5797,    128,   5498}, 0, {   146,   2144}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5842,    128,   4952}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6591,      0,   5312}, 0, { -3020,   1404}, {0xdc, 0x74, 0xdf, 0xff}}},\n    {{{ -6245,    128,   5384}, 0, { -1640,   1690}, {0xdc, 0x74, 0xdf, 0xff}}},\n    {{{ -5842,    128,   4952}, 0, {     0,      0}, {0xdc, 0x74, 0xdf, 0xff}}},\n};\n\n// 0x07004790 - 0x07004870\nstatic const Vtx bob_seg7_vertex_07004790[] = {\n    {{{ -5842,    128,   4952}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5593,    128,   5498}, 0, {   964,   2144}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5548,    128,   4952}, 0, {  1144,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6591,      0,   5312}, 0, { -3020,   1404}, {0xdb, 0x73, 0xdb, 0xff}}},\n    {{{ -5842,    128,   4952}, 0, {     0,      0}, {0xdb, 0x73, 0xdb, 0xff}}},\n    {{{ -6015,      0,   4736}, 0, {  -720,   -894}, {0xdb, 0x73, 0xdb, 0xff}}},\n    {{{ -6015,      0,   4736}, 0, {  -720,   -894}, {0x00, 0x6d, 0xc0, 0xff}}},\n    {{{ -5842,    128,   4952}, 0, {     0,      0}, {0x00, 0x6d, 0xc0, 0xff}}},\n    {{{ -5548,    128,   4952}, 0, {  1144,      0}, {0x00, 0x6d, 0xc0, 0xff}}},\n    {{{ -5145,    128,   5384}, 0, {  2752,   1690}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5548,    128,   4952}, 0, {  1144,      0}, {0x24, 0x74, 0xdf, 0xff}}},\n    {{{ -5145,    128,   5384}, 0, {  2752,   1690}, {0x24, 0x74, 0xdf, 0xff}}},\n    {{{ -4799,      0,   5312}, 0, {  4132,   1404}, {0x24, 0x74, 0xdf, 0xff}}},\n    {{{ -5375,      0,   4736}, 0, {  1834,   -894}, {0x00, 0x6d, 0xc0, 0xff}}},\n};\n\n// 0x07004870 - 0x070048A0\nstatic const Vtx bob_seg7_vertex_07004870[] = {\n    {{{ -5375,      0,   4736}, 0, {  1834,   -894}, {0x25, 0x73, 0xdb, 0xff}}},\n    {{{ -5548,    128,   4952}, 0, {  1144,      0}, {0x25, 0x73, 0xdb, 0xff}}},\n    {{{ -4799,      0,   5312}, 0, {  4132,   1404}, {0x25, 0x73, 0xdb, 0xff}}},\n};\n\n// 0x070048A0 - 0x07004990\nstatic const Vtx bob_seg7_vertex_070048A0[] = {\n    {{{ -3151,   1741,  -6526}, 0, { 12232,    582}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2459,   1741,  -5155}, 0, {     0,    582}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2413,   1741,  -5178}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3105,   1690,  -6549}, 0, { 12232,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2459,   1690,  -5155}, 0, {     0,    582}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3151,   1690,  -6526}, 0, { 12232,    582}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2413,   1690,  -5178}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2459,   1690,  -5155}, 0, {   990,   1396}, {0x8f, 0x00, 0x39, 0xff}}},\n    {{{ -2459,   1741,  -5155}, 0, {   990,    990}, {0x8f, 0x00, 0x39, 0xff}}},\n    {{{ -3151,   1741,  -6526}, 0, {-11272,    990}, {0x8f, 0x00, 0x39, 0xff}}},\n    {{{ -3151,   1690,  -6526}, 0, {-11272,   1396}, {0x8f, 0x00, 0x39, 0xff}}},\n    {{{ -3105,   1690,  -6549}, 0, { 12232,    990}, {0x71, 0x00, 0xc7, 0xff}}},\n    {{{ -3105,   1741,  -6549}, 0, { 12232,    582}, {0x71, 0x00, 0xc7, 0xff}}},\n    {{{ -2413,   1741,  -5178}, 0, {     0,    582}, {0x71, 0x00, 0xc7, 0xff}}},\n    {{{ -2413,   1690,  -5178}, 0, {     0,    990}, {0x71, 0x00, 0xc7, 0xff}}},\n};\n\n// 0x07004990 - 0x07004A80\nstatic const Vtx bob_seg7_vertex_07004990[] = {\n    {{{ -3151,   1075,  -6526}, 0, { 12232,    582}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2458,   1075,  -5155}, 0, {     0,    582}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2413,   1075,  -5178}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3151,   1741,  -6526}, 0, { 12232,    582}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2413,   1741,  -5178}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3105,   1741,  -6549}, 0, { 12232,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2458,   1024,  -5155}, 0, {   990,   1396}, {0x8f, 0x00, 0x39, 0xff}}},\n    {{{ -3151,   1075,  -6526}, 0, {-11272,    990}, {0x8f, 0x00, 0x39, 0xff}}},\n    {{{ -3151,   1024,  -6526}, 0, {-11272,   1396}, {0x8f, 0x00, 0x39, 0xff}}},\n    {{{ -2458,   1075,  -5155}, 0, {   990,    990}, {0x8f, 0x00, 0x39, 0xff}}},\n    {{{ -3105,   1024,  -6549}, 0, { 12232,    990}, {0x71, 0x00, 0xc7, 0xff}}},\n    {{{ -3105,   1075,  -6549}, 0, { 12232,    582}, {0x71, 0x00, 0xc7, 0xff}}},\n    {{{ -2413,   1075,  -5178}, 0, {     0,    582}, {0x71, 0x00, 0xc7, 0xff}}},\n    {{{ -2413,   1024,  -5178}, 0, {     0,    990}, {0x71, 0x00, 0xc7, 0xff}}},\n    {{{ -3105,   1075,  -6549}, 0, { 12232,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07004A80 - 0x07004B70\nstatic const Vtx bob_seg7_vertex_07004A80[] = {\n    {{{ -1016,   1690,  -2299}, 0, { 22452,   1396}, {0x8f, 0x00, 0x39, 0xff}}},\n    {{{ -1016,   1741,  -2299}, 0, { 22452,    990}, {0x8f, 0x00, 0x39, 0xff}}},\n    {{{ -2285,   1741,  -4812}, 0, {     0,    990}, {0x8f, 0x00, 0x39, 0xff}}},\n    {{{ -3151,   1024,  -6526}, 0, {   990,  14274}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -3151,   1075,  -6526}, 0, {   990,  13252}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -3105,   1075,  -6549}, 0, {     0,  13252}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -3105,   1024,  -6549}, 0, {     0,  14274}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -2413,   1024,  -5178}, 0, {   376,    376}, {0x39, 0x00, 0x71, 0xff}}},\n    {{{ -2413,   1075,  -5178}, 0, {   376,      0}, {0x39, 0x00, 0x71, 0xff}}},\n    {{{ -2458,   1075,  -5155}, 0, {     0,      0}, {0x39, 0x00, 0x71, 0xff}}},\n    {{{ -2458,   1024,  -5155}, 0, {     0,    376}, {0x39, 0x00, 0x71, 0xff}}},\n    {{{ -2240,   1690,  -4835}, 0, {   990, -21494}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -970,   1690,  -2322}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1016,   1690,  -2299}, 0, {   582,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2285,   1690,  -4812}, 0, {   582, -21494}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07004B70 - 0x07004C60\nstatic const Vtx bob_seg7_vertex_07004B70[] = {\n    {{{ -1016,   1024,  -2299}, 0, { 22452,   1396}, {0x8f, 0x00, 0x39, 0xff}}},\n    {{{ -2285,   1075,  -4812}, 0, {     0,    990}, {0x8f, 0x00, 0x39, 0xff}}},\n    {{{ -2285,   1024,  -4812}, 0, {     0,   1396}, {0x8f, 0x00, 0x39, 0xff}}},\n    {{{ -1016,   1690,  -2299}, 0, { 22452,   1396}, {0x8f, 0x00, 0x39, 0xff}}},\n    {{{ -2285,   1741,  -4812}, 0, {     0,    990}, {0x8f, 0x00, 0x39, 0xff}}},\n    {{{ -2285,   1690,  -4812}, 0, {     0,   1396}, {0x8f, 0x00, 0x39, 0xff}}},\n    {{{ -2285,   1741,  -4812}, 0, {   582, -21494}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -970,   1741,  -2322}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2240,   1741,  -4835}, 0, {   990, -21494}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1016,   1741,  -2299}, 0, {   582,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2240,   1690,  -4835}, 0, {   990,    990}, {0x71, 0x00, 0xc7, 0xff}}},\n    {{{ -2240,   1741,  -4835}, 0, {   990,    582}, {0x71, 0x00, 0xc7, 0xff}}},\n    {{{  -970,   1741,  -2322}, 0, {-21492,    582}, {0x71, 0x00, 0xc7, 0xff}}},\n    {{{  -970,   1690,  -2322}, 0, {-21492,    990}, {0x71, 0x00, 0xc7, 0xff}}},\n    {{{ -1016,   1075,  -2299}, 0, { 22452,    990}, {0x8f, 0x00, 0x39, 0xff}}},\n};\n\n// 0x07004C60 - 0x07004D50\nstatic const Vtx bob_seg7_vertex_07004C60[] = {\n    {{{  -970,   1024,  -2322}, 0, {   376,    376}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -1016,   1075,  -2299}, 0, {     0,      0}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -1016,   1024,  -2299}, 0, {     0,    376}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -2285,   1024,  -4812}, 0, {   376,    376}, {0xc7, 0x00, 0x8f, 0xff}}},\n    {{{ -2285,   1075,  -4812}, 0, {   376,      0}, {0xc7, 0x00, 0x8f, 0xff}}},\n    {{{ -2240,   1075,  -4835}, 0, {     0,      0}, {0xc7, 0x00, 0x8f, 0xff}}},\n    {{{ -2240,   1024,  -4835}, 0, {     0,    376}, {0xc7, 0x00, 0x8f, 0xff}}},\n    {{{ -2240,   1024,  -4835}, 0, {   990,    990}, {0x71, 0x00, 0xc7, 0xff}}},\n    {{{  -970,   1075,  -2322}, 0, {-21492,    582}, {0x71, 0x00, 0xc7, 0xff}}},\n    {{{  -970,   1024,  -2322}, 0, {-21492,    990}, {0x71, 0x00, 0xc7, 0xff}}},\n    {{{ -2240,   1075,  -4835}, 0, {   990,    582}, {0x71, 0x00, 0xc7, 0xff}}},\n    {{{ -2285,   1075,  -4812}, 0, {   582, -21494}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -970,   1075,  -2322}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2240,   1075,  -4835}, 0, {   990, -21494}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1016,   1075,  -2299}, 0, {   582,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07004D50 - 0x07004E40\nstatic const Vtx bob_seg7_vertex_07004D50[] = {\n    {{{ -2285,   1741,  -4812}, 0, {  3034,      0}, {0x8f, 0x00, 0x39, 0xff}}},\n    {{{ -2458,   1690,  -5155}, 0, {     0,    376}, {0x8f, 0x00, 0x39, 0xff}}},\n    {{{ -2285,   1690,  -4812}, 0, {  3034,    376}, {0x8f, 0x00, 0x39, 0xff}}},\n    {{{  -970,   1024,  -2322}, 0, {   376,    376}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  -970,   1075,  -2322}, 0, {   376,      0}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -1016,   1075,  -2299}, 0, {     0,      0}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  -970,   1690,  -2322}, 0, {   376,    376}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  -970,   1741,  -2322}, 0, {   376,      0}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -1016,   1741,  -2299}, 0, {     0,      0}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -1016,   1690,  -2299}, 0, {     0,    376}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -3151,   1690,  -6526}, 0, {   990,    990}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -3105,   1741,  -6549}, 0, {     0,      0}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -3105,   1690,  -6549}, 0, {     0,    990}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -3151,   1741,  -6526}, 0, {   990,      0}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -2458,   1741,  -5155}, 0, {     0,      0}, {0x8f, 0x00, 0x39, 0xff}}},\n};\n\n// 0x07004E40 - 0x07004F30\nstatic const Vtx bob_seg7_vertex_07004E40[] = {\n    {{{ -5797,    128,   5702}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -5797,   -383,   5498}, 0, {   990,   2522}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -5797,    128,   5498}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2240,   1741,  -4835}, 0, {  3034,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2413,   1741,  -5178}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2458,   1741,  -5155}, 0, {     0,    376}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2285,   1741,  -4812}, 0, {  3034,    376}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2240,   1690,  -4835}, 0, {     0,    376}, {0x71, 0x00, 0xc7, 0xff}}},\n    {{{ -2413,   1690,  -5178}, 0, {  3034,    376}, {0x71, 0x00, 0xc7, 0xff}}},\n    {{{ -2413,   1741,  -5178}, 0, {  3034,      0}, {0x71, 0x00, 0xc7, 0xff}}},\n    {{{ -2240,   1741,  -4835}, 0, {     0,      0}, {0x71, 0x00, 0xc7, 0xff}}},\n    {{{ -2285,   1690,  -4812}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2458,   1690,  -5155}, 0, {  3034,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2413,   1690,  -5178}, 0, {  3034,    582}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2240,   1690,  -4835}, 0, {     0,    582}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07004F30 - 0x07005020\nstatic const Vtx bob_seg7_vertex_07004F30[] = {\n    {{{ -5593,    128,   5702}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5797,   -383,   5702}, 0, {   990,   2520}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5797,    128,   5702}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5797,    128,   5702}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -5797,   -383,   5702}, 0, {     0,   2522}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -5797,   -383,   5498}, 0, {   990,   2522}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -5797,    128,   5498}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5593,   -383,   5498}, 0, {   990,   2522}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5593,    128,   5498}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5797,   -383,   5498}, 0, {     0,   2522}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5593,    128,   5498}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5593,   -383,   5702}, 0, {   990,   2520}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5593,    128,   5702}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5593,   -383,   5498}, 0, {     0,   2520}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5593,   -383,   5702}, 0, {     0,   2520}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07005020 - 0x07005120\nstatic const Vtx bob_seg7_vertex_07005020[] = {\n    {{{ -5119,   1331,  -3429}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -5119,    819,  -3634}, 0, {   990,   2522}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -5119,   1331,  -3634}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -5797,   -383,   5702}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5593,   -383,   5702}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5593,   -383,   5498}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5797,   -383,   5498}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4914,    819,  -3634}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5119,    819,  -3634}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5119,    819,  -3429}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4914,    819,  -3429}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5119,   1331,  -3634}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4914,    819,  -3634}, 0, {   990,   2522}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4914,   1331,  -3634}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5119,    819,  -3634}, 0, {     0,   2522}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5119,    819,  -3429}, 0, {     0,   2522}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07005120 - 0x07005200\nstatic const Vtx bob_seg7_vertex_07005120[] = {\n    {{{ -4914,   1331,  -3429}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4914,    819,  -3429}, 0, {     0,   2520}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5119,    819,  -3429}, 0, {   990,   2520}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5119,   1331,  -3429}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4914,   1331,  -3634}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4914,    819,  -3429}, 0, {   990,   2520}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4914,   1331,  -3429}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4914,    819,  -3634}, 0, {     0,   2520}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2175,    358,   1024}, 0, {     0,    990}, {0x57, 0x1f, 0xa9, 0xff}}},\n    {{{ -2303,    358,    896}, 0, {   972,    990}, {0x57, 0x1f, 0xa9, 0xff}}},\n    {{{ -2303,    717,   1024}, 0, {   470,  -1060}, {0x57, 0x1f, 0xa9, 0xff}}},\n    {{{ -2303,      0,    896}, 0, {   990,   2010}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2175,    358,   1024}, 0, {   -14,     24}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2175,      0,   1024}, 0, {   -14,   2010}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07005200 - 0x070052F0\nstatic const Vtx bob_seg7_vertex_07005200[] = {\n    {{{ -2431,      0,   1024}, 0, {   972,   1954}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2431,    358,   1024}, 0, {   972,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2303,    358,    896}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2303,      0,    896}, 0, {     0,   1954}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2303,      0,   1152}, 0, {   972,   1954}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2431,    358,   1024}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2431,      0,   1024}, 0, {     0,   1954}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2303,    358,   1152}, 0, {   972,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2175,      0,   1024}, 0, {   990,   2010}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2303,    358,   1152}, 0, {   -14,     24}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2303,      0,   1152}, 0, {   -14,   2010}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2175,    358,   1024}, 0, {   990,     24}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1434,      0,   4352}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1434,      0,   4864}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1792,      0,   4352}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070052F0 - 0x070053E0\nstatic const Vtx bob_seg7_vertex_070052F0[] = {\n    {{{ -2303,      0,    896}, 0, {   990,   2010}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2303,    358,    896}, 0, {   990,     24}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2175,    358,   1024}, 0, {   -14,     24}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2431,    358,   1024}, 0, {   -14,    990}, {0xa9, 0x1f, 0x57, 0xff}}},\n    {{{ -2303,    358,   1152}, 0, {   990,    990}, {0xa9, 0x1f, 0x57, 0xff}}},\n    {{{ -2303,    717,   1024}, 0, {   488,  -1060}, {0xa9, 0x1f, 0x57, 0xff}}},\n    {{{ -2303,    358,    896}, 0, {     0,    990}, {0xa9, 0x1f, 0xa9, 0xff}}},\n    {{{ -2431,    358,   1024}, 0, {   972,    990}, {0xa9, 0x1f, 0xa9, 0xff}}},\n    {{{ -2303,    717,   1024}, 0, {   470,  -1060}, {0xa9, 0x1f, 0xa9, 0xff}}},\n    {{{ -2303,    358,   1152}, 0, {     0,    990}, {0x57, 0x1f, 0x57, 0xff}}},\n    {{{ -2175,    358,   1024}, 0, {   972,    990}, {0x57, 0x1f, 0x57, 0xff}}},\n    {{{ -2303,    717,   1024}, 0, {   470,  -1060}, {0x57, 0x1f, 0x57, 0xff}}},\n    {{{  6246,   2080,  -6962}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6246,   1568,  -7167}, 0, {   990,   2522}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6246,   2080,  -7167}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070053E0 - 0x070054C0\nstatic const Vtx bob_seg7_vertex_070053E0[] = {\n    {{{  1434,      0,   4864}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1792,      0,   4864}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1792,      0,   4352}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6246,   2080,  -7167}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6246,   1568,  -7167}, 0, {     0,   2522}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6451,   1568,  -7167}, 0, {   990,   2522}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6451,   2080,  -7167}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6246,   1568,  -7167}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6246,   1568,  -6962}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6451,   1568,  -6962}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6451,   1568,  -7167}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6246,   2080,  -6962}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6246,   1568,  -6962}, 0, {     0,   2522}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6246,   1568,  -7167}, 0, {   990,   2522}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070054C0 - 0x070055B0\nstatic const Vtx bob_seg7_vertex_070054C0[] = {\n    {{{  4147,   3072,  -2354}, 0, {   990,   -268}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4147,   2560,  -2559}, 0, {     0,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4147,   3072,  -2559}, 0, {     0,   -268}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6451,   2080,  -6962}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6451,   1568,  -6962}, 0, {     0,   2522}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6246,   1568,  -6962}, 0, {   990,   2522}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6246,   2080,  -6962}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6451,   2080,  -7167}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6451,   1568,  -7167}, 0, {     0,   2522}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6451,   1568,  -6962}, 0, {   990,   2522}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6451,   2080,  -6962}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4352,   2560,  -2559}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4147,   2560,  -2354}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4352,   2560,  -2354}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4147,   2560,  -2559}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070055B0 - 0x070056A0\nstatic const Vtx bob_seg7_vertex_070055B0[] = {\n    {{{  4147,   3072,  -2559}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4147,   2560,  -2559}, 0, {   990,   2246}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4352,   2560,  -2559}, 0, {     0,   2246}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4147,   3072,  -2354}, 0, {   990,   -268}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4147,   2560,  -2354}, 0, {   990,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4147,   2560,  -2559}, 0, {     0,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4352,   3072,  -2354}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4352,   2560,  -2354}, 0, {     0,   2246}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4147,   2560,  -2354}, 0, {   990,   2246}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4147,   3072,  -2354}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4352,   3072,  -2559}, 0, {     0,   -268}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4352,   2560,  -2559}, 0, {     0,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4352,   2560,  -2354}, 0, {   990,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4352,   3072,  -2354}, 0, {   990,   -268}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4352,   3072,  -2559}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070056A0 - 0x07005790\nstatic const Vtx bob_seg7_vertex_070056A0[] = {\n    {{{  4250,   3072,   1127}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4454,   2560,   1127}, 0, {   990,   2522}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4454,   3072,   1127}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4454,   2560,   1127}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4250,   2560,   1332}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4454,   2560,   1332}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4250,   2560,   1127}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4454,   3072,   1127}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4454,   2560,   1332}, 0, {   990,   2522}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4454,   3072,   1332}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4454,   2560,   1127}, 0, {     0,   2520}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4454,   3072,   1332}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4454,   2560,   1332}, 0, {     0,   2520}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4250,   2560,   1332}, 0, {   990,   2522}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4250,   3072,   1332}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07005790 - 0x07005800\nstatic const Vtx bob_seg7_vertex_07005790[] = {\n    {{{  4250,   3072,   1332}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4250,   2560,   1332}, 0, {     0,   2520}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4250,   2560,   1127}, 0, {   990,   2522}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4250,   3072,   1127}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4250,   2560,   1127}, 0, {     0,   2520}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4454,   2560,   1127}, 0, {   990,   2522}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4250,   3072,   1127}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07005800 - 0x070058F0\nstatic const Vtx bob_seg7_vertex_07005800[] = {\n    {{{  5147,    923,   -957}, 0, {  2038,     34}, {0xcf, 0x73, 0xec, 0xff}}},\n    {{{  5345,    966,  -1188}, 0, {  2236,   -196}, {0xcf, 0x73, 0xec, 0xff}}},\n    {{{  5097,    825,  -1387}, 0, {  1990,   -394}, {0xcf, 0x73, 0xec, 0xff}}},\n    {{{  5314,    717,   -540}, 0, {  2206,    450}, {0x0d, 0x54, 0x5d, 0xff}}},\n    {{{  5812,    759,   -649}, 0, {  2702,    342}, {0x0d, 0x54, 0x5d, 0xff}}},\n    {{{  5669,    927,   -780}, 0, {  2560,    210}, {0x0d, 0x54, 0x5d, 0xff}}},\n    {{{  5314,    717,   -540}, 0, {  2206,    450}, {0xeb, 0x6c, 0x3e, 0xff}}},\n    {{{  5669,    927,   -780}, 0, {  2560,    210}, {0xeb, 0x6c, 0x3e, 0xff}}},\n    {{{  5147,    923,   -957}, 0, {  2038,     34}, {0xeb, 0x6c, 0x3e, 0xff}}},\n    {{{  5669,    927,   -780}, 0, {  2560,    210}, {0x21, 0x79, 0xf1, 0xff}}},\n    {{{  5842,    832,  -1155}, 0, {  2732,   -164}, {0x21, 0x79, 0xf1, 0xff}}},\n    {{{  5345,    966,  -1188}, 0, {  2236,   -196}, {0x21, 0x79, 0xf1, 0xff}}},\n    {{{  5314,    717,   -540}, 0, {  2206,    450}, {0xce, 0x5f, 0x43, 0xff}}},\n    {{{  5147,    923,   -957}, 0, {  2038,     34}, {0xce, 0x5f, 0x43, 0xff}}},\n    {{{  4845,    748,   -936}, 0, {  1738,     54}, {0xce, 0x5f, 0x43, 0xff}}},\n};\n\n// 0x070058F0 - 0x070059E0\nstatic const Vtx bob_seg7_vertex_070058F0[] = {\n    {{{  5842,    832,  -1155}, 0, { -1246,  -7570}, {0x58, 0x59, 0x12, 0xff}}},\n    {{{  5669,    927,   -780}, 0, { -1000,  -7532}, {0x58, 0x59, 0x12, 0xff}}},\n    {{{  5812,    759,   -649}, 0, {  -986,  -7638}, {0x58, 0x59, 0x12, 0xff}}},\n    {{{  5452,    857,  -1485}, 0, {  2344,   -494}, {0xe8, 0x71, 0xce, 0xff}}},\n    {{{  5097,    825,  -1387}, 0, {  1990,   -394}, {0xe8, 0x71, 0xce, 0xff}}},\n    {{{  5345,    966,  -1188}, 0, {  2236,   -196}, {0xe8, 0x71, 0xce, 0xff}}},\n    {{{  5097,    825,  -1387}, 0, {  1990,   -394}, {0xc1, 0x6c, 0xef, 0xff}}},\n    {{{  4845,    748,   -936}, 0, {  1738,     54}, {0xc1, 0x6c, 0xef, 0xff}}},\n    {{{  5147,    923,   -957}, 0, {  2038,     34}, {0xc1, 0x6c, 0xef, 0xff}}},\n    {{{  5452,    857,  -1485}, 0, {  2344,   -494}, {0x21, 0x76, 0xe1, 0xff}}},\n    {{{  5345,    966,  -1188}, 0, {  2236,   -196}, {0x21, 0x76, 0xe1, 0xff}}},\n    {{{  5842,    832,  -1155}, 0, {  2732,   -164}, {0x21, 0x76, 0xe1, 0xff}}},\n    {{{  5345,    966,  -1188}, 0, {  2236,   -196}, {0xfa, 0x7d, 0x11, 0xff}}},\n    {{{  5147,    923,   -957}, 0, {  2038,     34}, {0xfa, 0x7d, 0x11, 0xff}}},\n    {{{  5669,    927,   -780}, 0, {  2560,    210}, {0xfa, 0x7d, 0x11, 0xff}}},\n};\n\n// 0x070059E0 - 0x07005AD0\nstatic const Vtx bob_seg7_vertex_070059E0[] = {\n    {{{ -5322,   1136,  -5756}, 0, {   566,    718}, {0xf0, 0x5b, 0xaa, 0xff}}},\n    {{{ -5235,   1071,  -5842}, 0, {   370,    638}, {0xf0, 0x5b, 0xaa, 0xff}}},\n    {{{ -5518,    849,  -6024}, 0, {   172,    990}, {0xf0, 0x5b, 0xaa, 0xff}}},\n    {{{ -5198,    899,  -5376}, 0, {   990,    308}, {0x2c, 0x63, 0x41, 0xff}}},\n    {{{ -4852,    799,  -5458}, 0, {   582,      0}, {0x2c, 0x63, 0x41, 0xff}}},\n    {{{ -5070,   1081,  -5738}, 0, {   446,    388}, {0x2c, 0x63, 0x41, 0xff}}},\n    {{{ -5198,    899,  -5376}, 0, {   990,    308}, {0x13, 0x6d, 0x3d, 0xff}}},\n    {{{ -5070,   1081,  -5738}, 0, {   446,    388}, {0x13, 0x6d, 0x3d, 0xff}}},\n    {{{ -5322,   1136,  -5756}, 0, {   566,    718}, {0x13, 0x6d, 0x3d, 0xff}}},\n    {{{ -5070,   1081,  -5738}, 0, {   446,    388}, {0x3c, 0x30, 0x9c, 0xff}}},\n    {{{ -4855,    738,  -5776}, 0, {   172,    138}, {0x3c, 0x30, 0x9c, 0xff}}},\n    {{{ -5235,   1071,  -5842}, 0, {   370,    638}, {0x3c, 0x30, 0x9c, 0xff}}},\n    {{{ -5198,    899,  -5376}, 0, {   990,    308}, {0xf9, 0x6a, 0x44, 0xff}}},\n    {{{ -5322,   1136,  -5756}, 0, {   566,    718}, {0xf9, 0x6a, 0x44, 0xff}}},\n    {{{ -5577,    963,  -5517}, 0, {   990,    990}, {0xf9, 0x6a, 0x44, 0xff}}},\n};\n\n// 0x07005AD0 - 0x07005BC0\nstatic const Vtx bob_seg7_vertex_07005AD0[] = {\n    {{{ -4855,    738,  -5776}, 0, {   172,    138}, {0x6a, 0x44, 0xf2, 0xff}}},\n    {{{ -5070,   1081,  -5738}, 0, {   446,    388}, {0x6a, 0x44, 0xf2, 0xff}}},\n    {{{ -4852,    799,  -5458}, 0, {   582,      0}, {0x6a, 0x44, 0xf2, 0xff}}},\n    {{{ -5203,    776,  -6012}, 0, {     0,    650}, {0x12, 0x40, 0x95, 0xff}}},\n    {{{ -5518,    849,  -6024}, 0, {   172,    990}, {0x12, 0x40, 0x95, 0xff}}},\n    {{{ -5235,   1071,  -5842}, 0, {   370,    638}, {0x12, 0x40, 0x95, 0xff}}},\n    {{{ -5518,    849,  -6024}, 0, {   172,    990}, {0xa9, 0x57, 0xe3, 0xff}}},\n    {{{ -5577,    963,  -5517}, 0, {   990,    990}, {0xa9, 0x57, 0xe3, 0xff}}},\n    {{{ -5322,   1136,  -5756}, 0, {   566,    718}, {0xa9, 0x57, 0xe3, 0xff}}},\n    {{{ -5203,    776,  -6012}, 0, {     0,    650}, {0x43, 0x3b, 0xa7, 0xff}}},\n    {{{ -5235,   1071,  -5842}, 0, {   370,    638}, {0x43, 0x3b, 0xa7, 0xff}}},\n    {{{ -4855,    738,  -5776}, 0, {   172,    138}, {0x43, 0x3b, 0xa7, 0xff}}},\n    {{{ -5235,   1071,  -5842}, 0, {   370,    638}, {0x1c, 0x6e, 0xc9, 0xff}}},\n    {{{ -5322,   1136,  -5756}, 0, {   566,    718}, {0x1c, 0x6e, 0xc9, 0xff}}},\n    {{{ -5070,   1081,  -5738}, 0, {   446,    388}, {0x1c, 0x6e, 0xc9, 0xff}}},\n};\n\n// 0x07005BC0 - 0x07005CC0\nstatic const Vtx bob_seg7_vertex_07005BC0[] = {\n    {{{ -5887,   1024,  -2943}, 0, {   144,    758}, {0xc3, 0x6e, 0x08, 0xff}}},\n    {{{ -5460,   1331,  -3788}, 0, {   224,    478}, {0xc3, 0x6e, 0x08, 0xff}}},\n    {{{ -6015,   1024,  -3839}, 0, {   -52,    326}, {0xc3, 0x6e, 0x08, 0xff}}},\n    {{{ -4991,   1024,  -2431}, 0, {   458,   1026}, {0x1f, 0x6d, 0x37, 0xff}}},\n    {{{ -4095,   1024,  -2943}, 0, {   904,    772}, {0x1f, 0x6d, 0x37, 0xff}}},\n    {{{ -5017,   1331,  -3020}, 0, {   444,    862}, {0x1f, 0x6d, 0x37, 0xff}}},\n    {{{ -4095,   1024,  -2943}, 0, {   904,    772}, {0x44, 0x6a, 0x00, 0xff}}},\n    {{{ -4095,   1024,  -3967}, 0, {   904,    262}, {0x44, 0x6a, 0x00, 0xff}}},\n    {{{ -4573,   1331,  -3788}, 0, {   666,    478}, {0x44, 0x6a, 0x00, 0xff}}},\n    {{{ -4991,   1024,  -2431}, 0, {   458,   1026}, {0xdf, 0x6c, 0x39, 0xff}}},\n    {{{ -5017,   1331,  -3020}, 0, {   444,    862}, {0xdf, 0x6c, 0x39, 0xff}}},\n    {{{ -5887,   1024,  -2943}, 0, {   144,    758}, {0xdf, 0x6c, 0x39, 0xff}}},\n    {{{ -5017,   1331,  -3020}, 0, {   444,    862}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4573,   1331,  -3788}, 0, {   666,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4914,   1331,  -3429}, 0, {   496,    658}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5119,   1331,  -3429}, 0, {   394,    658}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07005CC0 - 0x07005DB0\nstatic const Vtx bob_seg7_vertex_07005CC0[] = {\n    {{{ -5460,   1331,  -3788}, 0, {   224,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5017,   1331,  -3020}, 0, {   444,    862}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5119,   1331,  -3429}, 0, {   394,    658}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4573,   1331,  -3788}, 0, {   666,    478}, {0x25, 0x77, 0x15, 0xff}}},\n    {{{ -5017,   1331,  -3020}, 0, {   444,    862}, {0x25, 0x77, 0x15, 0xff}}},\n    {{{ -4095,   1024,  -2943}, 0, {   904,    772}, {0x25, 0x77, 0x15, 0xff}}},\n    {{{ -4991,   1024,  -4479}, 0, {   458,      6}, {0xd3, 0x5d, 0xb8, 0xff}}},\n    {{{ -6015,   1024,  -3839}, 0, {   -52,    326}, {0xd3, 0x5d, 0xb8, 0xff}}},\n    {{{ -5460,   1331,  -3788}, 0, {   224,    478}, {0xd3, 0x5d, 0xb8, 0xff}}},\n    {{{ -4991,   1024,  -4479}, 0, {   458,      6}, {0x00, 0x74, 0xcd, 0xff}}},\n    {{{ -5460,   1331,  -3788}, 0, {   224,    478}, {0x00, 0x74, 0xcd, 0xff}}},\n    {{{ -4573,   1331,  -3788}, 0, {   666,    478}, {0x00, 0x74, 0xcd, 0xff}}},\n    {{{ -5460,   1331,  -3788}, 0, {   224,    478}, {0xd9, 0x76, 0x16, 0xff}}},\n    {{{ -5887,   1024,  -2943}, 0, {   144,    758}, {0xd9, 0x76, 0x16, 0xff}}},\n    {{{ -5017,   1331,  -3020}, 0, {   444,    862}, {0xd9, 0x76, 0x16, 0xff}}},\n};\n\n// 0x07005DB0 - 0x07005EA0\nstatic const Vtx bob_seg7_vertex_07005DB0[] = {\n    {{{ -4991,   1024,  -4479}, 0, {   458,      6}, {0x26, 0x64, 0xbd, 0xff}}},\n    {{{ -4573,   1331,  -3788}, 0, {   666,    478}, {0x26, 0x64, 0xbd, 0xff}}},\n    {{{ -4095,   1024,  -3967}, 0, {   904,    262}, {0x26, 0x64, 0xbd, 0xff}}},\n    {{{ -2815,   1207,   -537}, 0, {   698,    522}, {0xfc, 0x66, 0x4b, 0xff}}},\n    {{{ -3199,   1207,   -562}, 0, {   346,    676}, {0xfc, 0x66, 0x4b, 0xff}}},\n    {{{ -2772,   1011,   -268}, 0, {   862,    734}, {0xfc, 0x66, 0x4b, 0xff}}},\n    {{{ -4573,   1331,  -3788}, 0, {   666,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4914,   1331,  -3634}, 0, {   496,    556}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4914,   1331,  -3429}, 0, {   496,    658}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5460,   1331,  -3788}, 0, {   224,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5119,   1331,  -3429}, 0, {   394,    658}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5119,   1331,  -3634}, 0, {   394,    556}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2815,   1207,   -537}, 0, {   698,    522}, {0x32, 0x61, 0x3f, 0xff}}},\n    {{{ -2772,   1011,   -268}, 0, {   862,    734}, {0x32, 0x61, 0x3f, 0xff}}},\n    {{{ -2540,   1001,   -436}, 0, {   990,    480}, {0x32, 0x61, 0x3f, 0xff}}},\n};\n\n// 0x07005EA0 - 0x07005F90\nstatic const Vtx bob_seg7_vertex_07005EA0[] = {\n    {{{ -2815,   1207,   -844}, 0, {   556,    250}, {0x43, 0x68, 0xe9, 0xff}}},\n    {{{ -2422,    993,   -663}, 0, {   990,    224}, {0x43, 0x68, 0xe9, 0xff}}},\n    {{{ -2477,    990,   -835}, 0, {   862,     96}, {0x43, 0x68, 0xe9, 0xff}}},\n    {{{ -2772,   1011,   -268}, 0, {   862,    734}, {0x02, 0x6b, 0x44, 0xff}}},\n    {{{ -3199,   1207,   -562}, 0, {   346,    676}, {0x02, 0x6b, 0x44, 0xff}}},\n    {{{ -3058,   1019,   -272}, 0, {   606,    862}, {0x02, 0x6b, 0x44, 0xff}}},\n    {{{ -3045,   1207,   -895}, 0, {   328,    312}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2815,   1207,   -537}, 0, {   698,    522}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2815,   1207,   -844}, 0, {   556,    250}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3058,   1019,   -272}, 0, {   606,    862}, {0xb0, 0x3b, 0x4d, 0xff}}},\n    {{{ -3199,   1207,   -562}, 0, {   346,    676}, {0xb0, 0x3b, 0x4d, 0xff}}},\n    {{{ -3339,   1020,   -563}, 0, {   224,    734}, {0xb0, 0x3b, 0x4d, 0xff}}},\n    {{{ -3199,   1207,   -562}, 0, {   346,    676}, {0xcc, 0x70, 0xe8, 0xff}}},\n    {{{ -3045,   1207,   -895}, 0, {   328,    312}, {0xcc, 0x70, 0xe8, 0xff}}},\n    {{{ -3448,   1015,   -908}, 0, {     0,    480}, {0xcc, 0x70, 0xe8, 0xff}}},\n};\n\n// 0x07005F90 - 0x07006080\nstatic const Vtx bob_seg7_vertex_07005F90[] = {\n    {{{ -3045,   1207,   -895}, 0, {   328,    312}, {0xd4, 0x62, 0xbd, 0xff}}},\n    {{{ -3217,   1005,  -1076}, 0, {    96,    224}, {0xd4, 0x62, 0xbd, 0xff}}},\n    {{{ -3448,   1015,   -908}, 0, {     0,    480}, {0xd4, 0x62, 0xbd, 0xff}}},\n    {{{ -3217,   1005,  -1076}, 0, {    96,    224}, {0xea, 0x5d, 0xae, 0xff}}},\n    {{{ -3045,   1207,   -895}, 0, {   328,    312}, {0xea, 0x5d, 0xae, 0xff}}},\n    {{{ -2872,    993,  -1185}, 0, {   352,      0}, {0xea, 0x5d, 0xae, 0xff}}},\n    {{{ -3339,   1020,   -563}, 0, {   224,    734}, {0x9e, 0x49, 0x1e, 0xff}}},\n    {{{ -3199,   1207,   -562}, 0, {   346,    676}, {0x9e, 0x49, 0x1e, 0xff}}},\n    {{{ -3448,   1015,   -908}, 0, {     0,    480}, {0x9e, 0x49, 0x1e, 0xff}}},\n    {{{ -2872,    993,  -1185}, 0, {   352,      0}, {0x20, 0x6b, 0xc5, 0xff}}},\n    {{{ -3045,   1207,   -895}, 0, {   328,    312}, {0x20, 0x6b, 0xc5, 0xff}}},\n    {{{ -2645,    990,  -1067}, 0, {   606,      0}, {0x20, 0x6b, 0xc5, 0xff}}},\n    {{{ -3045,   1207,   -895}, 0, {   328,    312}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3199,   1207,   -562}, 0, {   346,    676}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2815,   1207,   -537}, 0, {   698,    522}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07006080 - 0x07006170\nstatic const Vtx bob_seg7_vertex_07006080[] = {\n    {{{ -2815,   1207,   -844}, 0, {   556,    250}, {0x11, 0x60, 0xb0, 0xff}}},\n    {{{ -2645,    990,  -1067}, 0, {   606,      0}, {0x11, 0x60, 0xb0, 0xff}}},\n    {{{ -3045,   1207,   -895}, 0, {   328,    312}, {0x11, 0x60, 0xb0, 0xff}}},\n    {{{ -2815,   1207,   -844}, 0, {   556,    250}, {0x40, 0x62, 0xd2, 0xff}}},\n    {{{ -2477,    990,   -835}, 0, {   862,     96}, {0x40, 0x62, 0xd2, 0xff}}},\n    {{{ -2645,    990,  -1067}, 0, {   606,      0}, {0x40, 0x62, 0xd2, 0xff}}},\n    {{{ -2815,   1207,   -844}, 0, {   556,    250}, {0x3c, 0x6f, 0x00, 0xff}}},\n    {{{ -2815,   1207,   -537}, 0, {   698,    522}, {0x3c, 0x6f, 0x00, 0xff}}},\n    {{{ -2422,    993,   -663}, 0, {   990,    224}, {0x3c, 0x6f, 0x00, 0xff}}},\n    {{{ -2540,   1001,   -436}, 0, {   990,    480}, {0x42, 0x67, 0x1e, 0xff}}},\n    {{{ -2422,    993,   -663}, 0, {   990,    224}, {0x42, 0x67, 0x1e, 0xff}}},\n    {{{ -2815,   1207,   -537}, 0, {   698,    522}, {0x42, 0x67, 0x1e, 0xff}}},\n    {{{ -2123,    173,   6244}, 0, {   530,   1540}, {0x35, 0x51, 0x51, 0xff}}},\n    {{{ -2316,    245,   6300}, 0, {   -24,   1254}, {0x35, 0x51, 0x51, 0xff}}},\n    {{{ -2357,    134,   6439}, 0, {    -8,   1790}, {0x35, 0x51, 0x51, 0xff}}},\n};\n\n// 0x07006170 - 0x07006260\nstatic const Vtx bob_seg7_vertex_07006170[] = {\n    {{{ -2357,    134,   6439}, 0, {    -8,   1790}, {0x08, 0x61, 0x51, 0xff}}},\n    {{{ -2401,    235,   6323}, 0, {  -362,   1348}, {0x08, 0x61, 0x51, 0xff}}},\n    {{{ -2579,    111,   6491}, 0, {  -400,   1646}, {0x08, 0x61, 0x51, 0xff}}},\n    {{{ -2357,    134,   6439}, 0, {    -8,   1790}, {0x0a, 0x61, 0x50, 0xff}}},\n    {{{ -2316,    245,   6300}, 0, {   -24,   1254}, {0x0a, 0x61, 0x50, 0xff}}},\n    {{{ -2401,    235,   6323}, 0, {  -362,   1348}, {0x0a, 0x61, 0x50, 0xff}}},\n    {{{ -2316,    245,   6300}, 0, {   -24,   1254}, {0x0a, 0x7d, 0xf2, 0xff}}},\n    {{{ -2242,    197,   5944}, 0, {   532,    516}, {0x0a, 0x7d, 0xf2, 0xff}}},\n    {{{ -2364,    239,   6216}, 0, {  -216,    922}, {0x0a, 0x7d, 0xf2, 0xff}}},\n    {{{ -2579,    111,   6491}, 0, {  -400,   1646}, {0xd7, 0x71, 0x28, 0xff}}},\n    {{{ -2401,    235,   6323}, 0, {  -362,   1348}, {0xd7, 0x71, 0x28, 0xff}}},\n    {{{ -2644,    115,   6413}, 0, {  -684,   1410}, {0xd7, 0x71, 0x28, 0xff}}},\n    {{{ -2386,    187,   5931}, 0, {  -166,    338}, {0xfa, 0x7c, 0xea, 0xff}}},\n    {{{ -2364,    239,   6216}, 0, {  -216,    922}, {0xfa, 0x7c, 0xea, 0xff}}},\n    {{{ -2242,    197,   5944}, 0, {   532,    516}, {0xfa, 0x7c, 0xea, 0xff}}},\n};\n\n// 0x07006260 - 0x07006350\nstatic const Vtx bob_seg7_vertex_07006260[] = {\n    {{{ -2401,    235,   6323}, 0, {  -362,   1348}, {0xce, 0x74, 0xfb, 0xff}}},\n    {{{ -2542,    161,   6061}, 0, {  -612,    702}, {0xce, 0x74, 0xfb, 0xff}}},\n    {{{ -2632,    132,   6269}, 0, {  -754,   1094}, {0xce, 0x74, 0xfb, 0xff}}},\n    {{{ -2401,    235,   6323}, 0, {  -362,   1348}, {0xd5, 0x77, 0xf6, 0xff}}},\n    {{{ -2364,    239,   6216}, 0, {  -216,    922}, {0xd5, 0x77, 0xf6, 0xff}}},\n    {{{ -2542,    161,   6061}, 0, {  -612,    702}, {0xd5, 0x77, 0xf6, 0xff}}},\n    {{{ -2542,    161,   6061}, 0, {  -612,    702}, {0xdc, 0x78, 0xed, 0xff}}},\n    {{{ -2364,    239,   6216}, 0, {  -216,    922}, {0xdc, 0x78, 0xed, 0xff}}},\n    {{{ -2386,    187,   5931}, 0, {  -166,    338}, {0xdc, 0x78, 0xed, 0xff}}},\n    {{{ -2644,    115,   6413}, 0, {  -684,   1410}, {0xcb, 0x72, 0x09, 0xff}}},\n    {{{ -2401,    235,   6323}, 0, {  -362,   1348}, {0xcb, 0x72, 0x09, 0xff}}},\n    {{{ -2632,    132,   6269}, 0, {  -754,   1094}, {0xcb, 0x72, 0x09, 0xff}}},\n    {{{ -2364,    239,   6216}, 0, {  -216,    922}, {0xf2, 0x7e, 0x00, 0xff}}},\n    {{{ -2401,    235,   6323}, 0, {  -362,   1348}, {0xf2, 0x7e, 0x00, 0xff}}},\n    {{{ -2316,    245,   6300}, 0, {   -24,   1254}, {0xf2, 0x7e, 0x00, 0xff}}},\n};\n\n// 0x07006350 - 0x07006440\nstatic const Vtx bob_seg7_vertex_07006350[] = {\n    {{{ -2242,    197,   5944}, 0, {   532,    516}, {0x16, 0x7c, 0xf4, 0xff}}},\n    {{{ -2316,    245,   6300}, 0, {   -24,   1254}, {0x16, 0x7c, 0xf4, 0xff}}},\n    {{{ -2110,    189,   6101}, 0, {   692,    942}, {0x16, 0x7c, 0xf4, 0xff}}},\n    {{{ -2316,    245,   6300}, 0, {   -24,   1254}, {0x30, 0x74, 0x11, 0xff}}},\n    {{{ -2123,    173,   6244}, 0, {   530,   1540}, {0x30, 0x74, 0x11, 0xff}}},\n    {{{ -2110,    189,   6101}, 0, {   692,    942}, {0x30, 0x74, 0x11, 0xff}}},\n    {{{  4827,   1329,   1183}, 0, {  1846,   2192}, {0x23, 0x79, 0x09, 0xff}}},\n    {{{  5248,   1249,    675}, 0, {  2266,   1686}, {0x23, 0x79, 0x09, 0xff}}},\n    {{{  4966,   1333,    645}, 0, {  1984,   1654}, {0x23, 0x79, 0x09, 0xff}}},\n    {{{  4827,   1329,   1183}, 0, {  1846,   2192}, {0xb7, 0x28, 0x5f, 0xff}}},\n    {{{  4582,    747,   1241}, 0, {  1416,   2366}, {0xb7, 0x28, 0x5f, 0xff}}},\n    {{{  4810,    757,   1414}, 0, {  1668,   2400}, {0xb7, 0x28, 0x5f, 0xff}}},\n    {{{  5360,    763,   1257}, 0, {  2336,   2232}, {0x20, 0x2d, 0x72, 0xff}}},\n    {{{  4827,   1329,   1183}, 0, {  1846,   2192}, {0x20, 0x2d, 0x72, 0xff}}},\n    {{{  4810,    757,   1414}, 0, {  1668,   2400}, {0x20, 0x2d, 0x72, 0xff}}},\n};\n\n// 0x07006440 - 0x07006530\nstatic const Vtx bob_seg7_vertex_07006440[] = {\n    {{{  4827,   1329,   1183}, 0, {  1846,   2192}, {0x4a, 0x57, 0x36, 0xff}}},\n    {{{  5683,    759,    927}, 0, {  2496,   1996}, {0x4a, 0x57, 0x36, 0xff}}},\n    {{{  5856,    754,    699}, 0, {  2658,   1760}, {0x4a, 0x57, 0x36, 0xff}}},\n    {{{  5070,    715,     31}, 0, {  1862,   1012}, {0xf3, 0x57, 0xa6, 0xff}}},\n    {{{  4966,   1333,    645}, 0, {  1984,   1654}, {0xf3, 0x57, 0xa6, 0xff}}},\n    {{{  5471,    721,    -23}, 0, {  2258,    938}, {0xf3, 0x57, 0xa6, 0xff}}},\n    {{{  4966,   1333,    645}, 0, {  1984,   1654}, {0xa2, 0x50, 0xe9, 0xff}}},\n    {{{  4378,    732,    943}, 0, {  1324,   2096}, {0xa2, 0x50, 0xe9, 0xff}}},\n    {{{  4827,   1329,   1183}, 0, {  1846,   2192}, {0xa2, 0x50, 0xe9, 0xff}}},\n    {{{  4966,   1333,    645}, 0, {  1984,   1654}, {0x25, 0x66, 0xbf, 0xff}}},\n    {{{  5248,   1249,    675}, 0, {  2266,   1686}, {0x25, 0x66, 0xbf, 0xff}}},\n    {{{  5471,    721,    -23}, 0, {  2258,    938}, {0x25, 0x66, 0xbf, 0xff}}},\n    {{{  4378,    732,    943}, 0, {  1324,   2096}, {0x9e, 0x2f, 0x40, 0xff}}},\n    {{{  4582,    747,   1241}, 0, {  1416,   2366}, {0x9e, 0x2f, 0x40, 0xff}}},\n    {{{  4827,   1329,   1183}, 0, {  1846,   2192}, {0x9e, 0x2f, 0x40, 0xff}}},\n};\n\n// 0x07006530 - 0x07006620\nstatic const Vtx bob_seg7_vertex_07006530[] = {\n    {{{  5248,   1249,    675}, 0, {  2266,   1686}, {0x49, 0x5c, 0x2e, 0xff}}},\n    {{{  4827,   1329,   1183}, 0, {  1846,   2192}, {0x49, 0x5c, 0x2e, 0xff}}},\n    {{{  5856,    754,    699}, 0, {  2658,   1760}, {0x49, 0x5c, 0x2e, 0xff}}},\n    {{{  4966,   1333,    645}, 0, {  1984,   1654}, {0xb0, 0x56, 0xd2, 0xff}}},\n    {{{  4496,    713,    314}, 0, {  1430,   1340}, {0xb0, 0x56, 0xd2, 0xff}}},\n    {{{  4299,    721,    668}, 0, {  1250,   1702}, {0xb0, 0x56, 0xd2, 0xff}}},\n    {{{  5471,    721,    -23}, 0, {  2258,    938}, {0x43, 0x5f, 0xce, 0xff}}},\n    {{{  5248,   1249,    675}, 0, {  2266,   1686}, {0x43, 0x5f, 0xce, 0xff}}},\n    {{{  5777,    743,    424}, 0, {  2710,   1382}, {0x43, 0x5f, 0xce, 0xff}}},\n    {{{  5777,    743,    424}, 0, {  2710,   1382}, {0x4f, 0x5f, 0xe6, 0xff}}},\n    {{{  5248,   1249,    675}, 0, {  2266,   1686}, {0x4f, 0x5f, 0xe6, 0xff}}},\n    {{{  5856,    754,    699}, 0, {  2658,   1760}, {0x4f, 0x5f, 0xe6, 0xff}}},\n    {{{  4496,    713,    314}, 0, {  1430,   1340}, {0xd5, 0x50, 0xa8, 0xff}}},\n    {{{  4966,   1333,    645}, 0, {  1984,   1654}, {0xd5, 0x50, 0xa8, 0xff}}},\n    {{{  5070,    715,     31}, 0, {  1862,   1012}, {0xd5, 0x50, 0xa8, 0xff}}},\n};\n\n// 0x07006620 - 0x07006680\nstatic const Vtx bob_seg7_vertex_07006620[] = {\n    {{{  4378,    732,    943}, 0, {  1324,   2096}, {0xac, 0x5c, 0x14, 0xff}}},\n    {{{  4966,   1333,    645}, 0, {  1984,   1654}, {0xac, 0x5c, 0x14, 0xff}}},\n    {{{  4299,    721,    668}, 0, {  1250,   1702}, {0xac, 0x5c, 0x14, 0xff}}},\n    {{{  5683,    759,    927}, 0, {  2496,   1996}, {0x48, 0x4d, 0x45, 0xff}}},\n    {{{  4827,   1329,   1183}, 0, {  1846,   2192}, {0x48, 0x4d, 0x45, 0xff}}},\n    {{{  5360,    763,   1257}, 0, {  2336,   2232}, {0x48, 0x4d, 0x45, 0xff}}},\n};\n\n// 0x07006680 - 0x07006760\nstatic const Vtx bob_seg7_vertex_07006680[] = {\n    {{{ -2458,   1024,  -5155}, 0, {     0,  -3098}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -2793,    640,  -4988}, 0, {  1462,  -1566}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -3137,    640,  -4816}, 0, {  2996,  -1566}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -2458,      0,  -5155}, 0, {     0,    990}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -2679,      0,  -5045}, 0, {   952,    990}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -2679,    384,  -5045}, 0, {   952,   -544}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -3445,    777,  -4662}, 0, {  4370,  -2110}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -3251,    384,  -4759}, 0, {  3506,   -544}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -3251,      0,  -4759}, 0, {  3506,    990}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -3445,      1,  -4662}, 0, {  4370,    956}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -3445,    777,  -4662}, 0, { -8206,   4564}, {0xe8, 0x7b, 0x0c, 0xff}}},\n    {{{ -2559,    768,  -2815}, 0, {   990,   4698}, {0xe8, 0x7b, 0x0c, 0xff}}},\n    {{{ -2458,   1024,  -5155}, 0, { -8150,      0}, {0xe8, 0x7b, 0x0c, 0xff}}},\n    {{{ -1535,   1024,  -3327}, 0, {   990,      0}, {0xe8, 0x7b, 0x0c, 0xff}}},\n};\n\n// 0x07006760 - 0x07006860\nstatic const Vtx bob_seg7_vertex_07006760[] = {\n    {{{ -1878,    640,  -3155}, 0, {  -542,  -1564}, {0x39, 0x00, 0x71, 0xff}}},\n    {{{ -1764,    384,  -3213}, 0, {     0,   -542}, {0x39, 0x00, 0x71, 0xff}}},\n    {{{ -1535,   1024,  -3327}, 0, {   990,  -3098}, {0x39, 0x00, 0x71, 0xff}}},\n    {{{ -1764,    384,  -3213}, 0, {     0,   -542}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -1764,      0,  -3213}, 0, {     0,    990}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -1535,   1024,  -3327}, 0, {   990,  -3098}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -1535,      0,  -3327}, 0, {   990,    990}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -2222,    640,  -2984}, 0, { -2074,  -1564}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -2559,    768,  -2815}, 0, { -3578,  -1872}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -1878,    640,  -3155}, 0, {  -542,  -1564}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -1764,    384,  -3213}, 0, {  4566,      0}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -2679,    384,  -5045}, 0, {     0,      0}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -2679,      0,  -5045}, 0, {     0,   1498}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -2336,    384,  -2926}, 0, { -2584,   -542}, {0x39, 0x00, 0x71, 0xff}}},\n    {{{ -2222,    640,  -2984}, 0, { -2074,  -1564}, {0x39, 0x00, 0x71, 0xff}}},\n    {{{ -2559,    768,  -2815}, 0, { -3578,  -1872}, {0x39, 0x00, 0x71, 0xff}}},\n};\n\n// 0x07006860 - 0x07006950\nstatic const Vtx bob_seg7_vertex_07006860[] = {\n    {{{ -2559,      0,  -2815}, 0, { -3578,    990}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -2336,    384,  -2926}, 0, { -2584,   -542}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -2559,    768,  -2815}, 0, { -3578,  -1872}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -2336,      0,  -2926}, 0, { -2584,    990}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -2336,      0,  -2926}, 0, {     0,   1498}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{ -3251,    384,  -4759}, 0, {  4568,      0}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{ -2336,    384,  -2926}, 0, {     0,      0}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{ -3251,      0,  -4759}, 0, {  4566,   1498}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{ -1764,    384,  -3213}, 0, {  4566,      0}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -2679,      0,  -5045}, 0, {     0,   1498}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -1764,      0,  -3213}, 0, {  4566,   1500}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -2336,    384,  -2926}, 0, { -1052,    990}, {0x65, 0xc8, 0xce, 0xff}}},\n    {{{ -3251,    384,  -4759}, 0, {  3544,    990}, {0x65, 0xc8, 0xce, 0xff}}},\n    {{{ -3137,    640,  -4816}, 0, {  3546,   -152}, {0x65, 0xc8, 0xce, 0xff}}},\n    {{{ -2222,    640,  -2984}, 0, { -1052,   -152}, {0x65, 0xc8, 0xce, 0xff}}},\n};\n\n// 0x07006950 - 0x070069D0\nstatic const Vtx bob_seg7_vertex_07006950[] = {\n    {{{ -1878,    640,  -3155}, 0, {  4566,   -152}, {0x9b, 0xc8, 0x32, 0xff}}},\n    {{{ -2679,    384,  -5045}, 0, {     0,    990}, {0x9b, 0xc8, 0x32, 0xff}}},\n    {{{ -1764,    384,  -3213}, 0, {  4566,    990}, {0x9b, 0xc8, 0x32, 0xff}}},\n    {{{ -2793,    640,  -4988}, 0, {     0,   -152}, {0x9b, 0xc8, 0x32, 0xff}}},\n    {{{ -2222,    640,  -2984}, 0, {   990,   9164}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3137,    640,  -4816}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2793,    640,  -4988}, 0, {  -540,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1878,    640,  -3155}, 0, {  -542,   9164}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x070069D0 - 0x07006AC0\nstatic const Vtx bob_seg7_vertex_070069D0[] = {\n    {{{  1024,   1536,    171}, 0, {  -422,   -512}, {0xdc, 0x69, 0xc4, 0xff}}},\n    {{{  3097,   1741,   -733}, 0, { -4676,    912}, {0xdc, 0x69, 0xc4, 0xff}}},\n    {{{  1186,   1408,   -149}, 0, {  -880,      0}, {0xdc, 0x69, 0xc4, 0xff}}},\n    {{{  1024,   1408,    171}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1212,   1408,   -123}, 0, {     0,    316}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2076,   1408,    425}, 0, {   990,    316}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1888,   1408,    720}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1888,   1536,    720}, 0, {   990,   -160}, {0xbc, 0x00, 0x6b, 0xff}}},\n    {{{  1024,   1408,    171}, 0, {     0,      0}, {0xbc, 0x00, 0x6b, 0xff}}},\n    {{{  1888,   1408,    720}, 0, {   990,      0}, {0xbc, 0x00, 0x6b, 0xff}}},\n    {{{  1024,   1536,    171}, 0, {     0,   -160}, {0xbc, 0x00, 0x6b, 0xff}}},\n    {{{  1024,    768,    171}, 0, {   642,    990}, {0x6a, 0x00, 0x44, 0xff}}},\n    {{{  1212,   1408,   -123}, 0, {   990,    224}, {0x6a, 0x00, 0x44, 0xff}}},\n    {{{  1024,   1408,    171}, 0, {   642,    224}, {0x6a, 0x00, 0x44, 0xff}}},\n    {{{  1212,    768,   -123}, 0, {   990,    990}, {0x6a, 0x00, 0x44, 0xff}}},\n};\n\n// 0x07006AC0 - 0x07006BC0\nstatic const Vtx bob_seg7_vertex_07006AC0[] = {\n    {{{ -1535,      0,   1536}, 0, {  6100,      0}, {0xbe, 0x00, 0x95, 0xff}}},\n    {{{ -1535,    768,   1536}, 0, {  5482,  -1436}, {0xbe, 0x00, 0x95, 0xff}}},\n    {{{  1186,   1408,   -149}, 0, {  -880,      0}, {0xbe, 0x00, 0x95, 0xff}}},\n    {{{ -1535,    768,   1536}, 0, {  5482,  -1436}, {0xc2, 0x58, 0xbe, 0xff}}},\n    {{{  1024,   1536,    171}, 0, {  -422,   -512}, {0xc2, 0x58, 0xbe, 0xff}}},\n    {{{  1186,   1408,   -149}, 0, {  -880,      0}, {0xc2, 0x58, 0xbe, 0xff}}},\n    {{{  3097,   1741,   -733}, 0, {  2528,    232}, {0xcd, 0x27, 0x93, 0xff}}},\n    {{{  1024,   1536,    171}, 0, {  1502,   1074}, {0xcd, 0x27, 0x93, 0xff}}},\n    {{{  1950,   2049,    -82}, 0, {  1974,    934}, {0xcd, 0x27, 0x93, 0xff}}},\n    {{{  1888,   1536,    720}, 0, {  1932,   1348}, {0x3c, 0x5b, 0x3f, 0xff}}},\n    {{{  3097,   1741,   -733}, 0, {  2528,    232}, {0x3c, 0x5b, 0x3f, 0xff}}},\n    {{{  1950,   2049,    -82}, 0, {  1974,    934}, {0x3c, 0x5b, 0x3f, 0xff}}},\n    {{{  1024,   1536,    171}, 0, {  1502,   1074}, {0xd9, 0x66, 0x3e, 0xff}}},\n    {{{  1888,   1536,    720}, 0, {  1932,   1348}, {0xd9, 0x66, 0x3e, 0xff}}},\n    {{{  1950,   2049,    -82}, 0, {  1974,    934}, {0xd9, 0x66, 0x3e, 0xff}}},\n    {{{  1186,    768,   -149}, 0, {  -366,   1136}, {0xbe, 0x00, 0x95, 0xff}}},\n};\n\n// 0x07006BC0 - 0x07006CC0\nstatic const Vtx bob_seg7_vertex_07006BC0[] = {\n    {{{  1186,    768,   -149}, 0, {  -366,   1136}, {0xdb, 0x00, 0x87, 0xff}}},\n    {{{  1186,   1408,   -149}, 0, {  -880,      0}, {0xdb, 0x00, 0x87, 0xff}}},\n    {{{  3097,   1741,   -733}, 0, { -4676,    912}, {0xdb, 0x00, 0x87, 0xff}}},\n    {{{  3584,    656,   -767}, 0, {  2778,    606}, {0x5a, 0x26, 0x50, 0xff}}},\n    {{{  3097,   1741,   -733}, 0, {  2528,    232}, {0x5a, 0x26, 0x50, 0xff}}},\n    {{{  1888,   1536,    720}, 0, {  1932,   1348}, {0x5a, 0x26, 0x50, 0xff}}},\n    {{{  3584,    656,   -767}, 0, {  2778,    606}, {0x4f, 0x5c, 0x23, 0xff}}},\n    {{{  1888,   1536,    720}, 0, {  1932,   1348}, {0x4f, 0x5c, 0x23, 0xff}}},\n    {{{  1692,    768,   3192}, 0, {  1628,   2648}, {0x4f, 0x5c, 0x23, 0xff}}},\n    {{{ -1535,    768,   1536}, 0, { -4800,    990}, {0x3b, 0x00, 0x70, 0xff}}},\n    {{{  1024,    768,    171}, 0, {   990,    990}, {0x3b, 0x00, 0x70, 0xff}}},\n    {{{  1024,   1536,    171}, 0, {   990,   -542}, {0x3b, 0x00, 0x70, 0xff}}},\n    {{{  1212,   1408,   -123}, 0, {     0,      0}, {0xbc, 0x00, 0x6b, 0xff}}},\n    {{{  2076,    768,    425}, 0, {   990,    734}, {0xbc, 0x00, 0x6b, 0xff}}},\n    {{{  2076,   1408,    425}, 0, {   990,      0}, {0xbc, 0x00, 0x6b, 0xff}}},\n    {{{  1212,    768,   -123}, 0, {     0,    734}, {0xbc, 0x00, 0x6b, 0xff}}},\n};\n\n// 0x07006CC0 - 0x07006DB0\nstatic const Vtx bob_seg7_vertex_07006CC0[] = {\n    {{{  -767,      0,   -767}, 0, {     0,   1128}, {0xcd, 0x72, 0x15, 0xff}}},\n    {{{  1186,    768,   -149}, 0, {     0,  -1054}, {0xcd, 0x72, 0x15, 0xff}}},\n    {{{  3097,   1741,   -733}, 0, { -1158,  -2932}, {0xcd, 0x72, 0x15, 0xff}}},\n    {{{  -767,      0,   -767}, 0, {     0,   1128}, {0xd6, 0x76, 0xf2, 0xff}}},\n    {{{ -1535,      0,   1536}, 0, {  2392,   1164}, {0xd6, 0x76, 0xf2, 0xff}}},\n    {{{  1186,    768,   -149}, 0, {     0,  -1054}, {0xd6, 0x76, 0xf2, 0xff}}},\n    {{{  2079,   1368,  -1535}, 0, { -1616,  -1668}, {0xcc, 0x73, 0x0c, 0xff}}},\n    {{{  -767,      0,   -767}, 0, {     0,   1128}, {0xcc, 0x73, 0x0c, 0xff}}},\n    {{{  3097,   1741,   -733}, 0, { -1158,  -2932}, {0xcc, 0x73, 0x0c, 0xff}}},\n    {{{  -767,      0,   -767}, 0, {     0,   1128}, {0xcc, 0x73, 0x08, 0xff}}},\n    {{{  2079,   1368,  -1535}, 0, { -1616,  -1668}, {0xcc, 0x73, 0x08, 0xff}}},\n    {{{ -1016,      0,  -2299}, 0, { -1412,   1782}, {0xcc, 0x73, 0x08, 0xff}}},\n    {{{  1692,    768,   3192}, 0, {  5078,      0}, {0x82, 0x00, 0xf6, 0xff}}},\n    {{{  1888,   1536,    720}, 0, {  -102,      0}, {0x82, 0x00, 0xf6, 0xff}}},\n    {{{  1888,    768,    720}, 0, {   350,   1430}, {0x82, 0x00, 0xf6, 0xff}}},\n};\n\n// 0x07006DB0 - 0x07006E30\nstatic const Vtx bob_seg7_vertex_07006DB0[] = {\n    {{{  1888,   1408,    720}, 0, {   990,      0}, {0x95, 0x00, 0xbc, 0xff}}},\n    {{{  2076,    768,    425}, 0, {   642,    734}, {0x95, 0x00, 0xbc, 0xff}}},\n    {{{  1888,    768,    720}, 0, {   990,    734}, {0x95, 0x00, 0xbc, 0xff}}},\n    {{{  2076,   1408,    425}, 0, {   642,      0}, {0x95, 0x00, 0xbc, 0xff}}},\n    {{{  1260,   2918,  -2327}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1521,   2918,  -2452}, 0, {   988,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1328,   2918,  -2520}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1452,   2918,  -2259}, 0, {   988,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07006E30 - 0x07006F30\nstatic const Vtx bob_seg7_vertex_07006E30[] = {\n    {{{  5478,   1536,   4506}, 0, {  3546,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5478,   1024,   4506}, 0, {  3546,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5478,   1024,   4710}, 0, {  4568,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5478,   1536,   4710}, 0, {  4568,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5274,   1536,   4506}, 0, {  2524,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5478,   1024,   4506}, 0, {  3546,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5478,   1536,   4506}, 0, {  3546,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5274,   1024,   4506}, 0, {  2522,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5478,   1536,   4710}, 0, {   478,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5478,   1024,   4710}, 0, {   480,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5274,   1024,   4710}, 0, {  1502,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5274,   1536,   4710}, 0, {  1502,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5274,   1536,   4710}, 0, {  1502,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5274,   1024,   4710}, 0, {  1502,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5274,   1024,   4506}, 0, {  2522,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5274,   1536,   4506}, 0, {  2524,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07006F30 - 0x07007020\nstatic const Vtx bob_seg7_vertex_07006F30[] = {\n    {{{  5478,   1024,   4506}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5274,   1024,   4710}, 0, {   786,    786}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5478,   1024,   4710}, 0, {   786,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5274,   1024,   4506}, 0, {     0,    786}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5888,   1024,   5120}, 0, {  1502,   1108}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  5632,   1536,   4864}, 0, {   990,      0}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  5120,   1536,   4864}, 0, {     0,      0}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  5120,   1536,   4864}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5632,   1536,   4864}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5478,   1536,   4710}, 0, {   684,    684}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5632,   1536,   4352}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5478,   1536,   4506}, 0, {   684,    274}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5274,   1536,   4506}, 0, {   274,    274}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5274,   1536,   4710}, 0, {   274,    684}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5120,   1536,   4352}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07007020 - 0x07007100\nstatic const Vtx bob_seg7_vertex_07007020[] = {\n    {{{  5888,   1024,   4096}, 0, {  1506,   1108}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  5632,   1536,   4864}, 0, {   -26,      0}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  5888,   1024,   5120}, 0, {  -536,   1108}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  5632,   1536,   4352}, 0, {   996,      0}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{ -3503,    960,    111}, 0, {  -924,   -132}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3187,    960,   -115}, 0, {   990,     90}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3231,    960,   -159}, 0, {   990,   -134}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5888,   1024,   5120}, 0, {  1502,   1108}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  5120,   1536,   4864}, 0, {     0,      0}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  4864,   1024,   5120}, 0, {  -542,   1108}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  4864,   1024,   5120}, 0, {  1500,   1108}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  5120,   1536,   4352}, 0, {     0,      0}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  4864,   1024,   4096}, 0, {  -540,   1108}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  5120,   1536,   4864}, 0, {   990,      0}, {0x8f, 0x38, 0x00, 0xff}}},\n};\n\n// 0x07007100 - 0x07007200\nstatic const Vtx bob_seg7_vertex_07007100[] = {\n    {{{  4864,   1024,   4096}, 0, {  1502,   1108}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  5632,   1536,   4352}, 0, {     0,      0}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  5888,   1024,   4096}, 0, {  -542,   1108}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  5120,   1536,   4352}, 0, {   990,      0}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{ -3503,    960,    111}, 0, {  -924,   -132}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3458,    960,    156}, 0, {  -924,     90}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3187,    960,   -115}, 0, {   990,     90}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3186,    896,   -114}, 0, {   990,    316}, {0x59, 0x02, 0x59, 0xff}}},\n    {{{ -3187,    960,   -115}, 0, {   990,     90}, {0x59, 0x02, 0x59, 0xff}}},\n    {{{ -3458,    960,    156}, 0, {  -924,     90}, {0x59, 0x02, 0x59, 0xff}}},\n    {{{ -3186,    896,   -114}, 0, {   990,    316}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{ -3458,    960,    156}, 0, {  -924,     90}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{ -3458,    896,    156}, 0, {  -924,    316}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{ -3142,    832,    -69}, 0, {   990,    766}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3413,    896,    201}, 0, {  -924,    540}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3413,    832,    201}, 0, {  -924,    766}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07007200 - 0x070072F0\nstatic const Vtx bob_seg7_vertex_07007200[] = {\n    {{{ -3142,    832,    -69}, 0, {   990,    766}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3142,    896,    -69}, 0, {   990,    540}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3413,    896,    201}, 0, {  -924,    540}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3458,    896,    156}, 0, {  -924,    316}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3413,    896,    201}, 0, {  -924,    540}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3142,    896,    -69}, 0, {   990,    540}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3186,    896,   -114}, 0, {   990,    316}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3413,    832,    201}, 0, {  -924,    766}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3368,    832,    246}, 0, {  -924,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3097,    832,    -24}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3142,    832,    -69}, 0, {   990,    766}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3097,    768,    -24}, 0, {   990,   1214}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3097,    832,    -24}, 0, {   990,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3368,    832,    246}, 0, {  -924,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3368,    768,    246}, 0, {  -924,   1214}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x070072F0 - 0x07007370\nstatic const Vtx bob_seg7_vertex_070072F0[] = {\n    {{{ -3503,    768,    111}, 0, {     0,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -3368,    768,    246}, 0, {  1024,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -3413,    832,    201}, 0, {   672,    636}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -3458,    896,    156}, 0, {   318,    280}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -3503,    960,    111}, 0, {     0,    -74}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -3413,    896,    201}, 0, {   672,    280}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -3458,    960,    156}, 0, {   318,    -74}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -3368,    832,    246}, 0, {  1024,    636}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07007370 - 0x07007470\nstatic const Vtx bob_seg7_vertex_07007370[] = {\n    {{{ -6677,   1075,  -3554}, 0, { -1052,  -3608}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6537,   1075,  -3167}, 0, {  3034,   3506}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6405,   1075,  -3324}, 0, {  5078,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1879,    819,   6421}, 0, { -1052,  -3608}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2151,    819,   6650}, 0, {  5078,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2081,    819,   6456}, 0, {  3034,  -3608}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1747,    819,   6579}, 0, { -3096,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1817,    819,   6772}, 0, { -1052,   3506}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2019,    819,   6807}, 0, {  3034,   3506}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6133,   1075,  -5503}, 0, { -1052,  -3608}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6194,   1075,  -5152}, 0, { -1052,   3506}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5993,   1075,  -5116}, 0, {  3034,   3506}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5861,   1075,  -5273}, 0, {  5078,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5931,   1075,  -5468}, 0, {  3034,  -3608}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6265,   1075,  -5344}, 0, { -3096,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6739,   1075,  -3202}, 0, { -1052,   3506}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07007470 - 0x070074C0\nstatic const Vtx bob_seg7_vertex_07007470[] = {\n    {{{ -6677,   1075,  -3554}, 0, { -1052,  -3608}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6809,   1075,  -3395}, 0, { -3096,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6739,   1075,  -3202}, 0, { -1052,   3506}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6405,   1075,  -3324}, 0, {  5078,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6475,   1075,  -3518}, 0, {  3034,  -3608}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070074C0 - 0x070075B0\nstatic const Vtx bob_seg7_vertex_070074C0[] = {\n    {{{  2151,    768,   6650}, 0, {  4056,    990}, {0x61, 0x00, 0x51, 0xff}}},\n    {{{  2151,    819,   6650}, 0, {  4056,      0}, {0x61, 0x00, 0x51, 0xff}}},\n    {{{  2019,    819,   6807}, 0, {     0,      0}, {0x61, 0x00, 0x51, 0xff}}},\n    {{{  1747,    768,   6579}, 0, {  3544,    990}, {0x9f, 0x00, 0xaf, 0xff}}},\n    {{{  1747,    819,   6579}, 0, {  3544,      0}, {0x9f, 0x00, 0xaf, 0xff}}},\n    {{{  1879,    819,   6421}, 0, {  -354,      0}, {0x9f, 0x00, 0xaf, 0xff}}},\n    {{{  1879,    768,   6421}, 0, {  -354,    990}, {0x9f, 0x00, 0xaf, 0xff}}},\n    {{{  1879,    768,   6421}, 0, {  4056,    990}, {0x15, 0x00, 0x83, 0xff}}},\n    {{{  1879,    819,   6421}, 0, {  4056,      0}, {0x15, 0x00, 0x83, 0xff}}},\n    {{{  2081,    819,   6456}, 0, {  -214,      0}, {0x15, 0x00, 0x83, 0xff}}},\n    {{{  2081,    768,   6456}, 0, {  -214,    990}, {0x15, 0x00, 0x83, 0xff}}},\n    {{{  2081,    768,   6456}, 0, {  4056,    990}, {0x77, 0x00, 0xd5, 0xff}}},\n    {{{  2151,    819,   6650}, 0, {     0,      0}, {0x77, 0x00, 0xd5, 0xff}}},\n    {{{  2151,    768,   6650}, 0, {     0,    990}, {0x77, 0x00, 0xd5, 0xff}}},\n    {{{  2081,    819,   6456}, 0, {  4056,      0}, {0x77, 0x00, 0xd5, 0xff}}},\n};\n\n// 0x070075B0 - 0x070076A0\nstatic const Vtx bob_seg7_vertex_070075B0[] = {\n    {{{ -6265,   1024,  -5344}, 0, {  3544,    990}, {0x9f, 0x00, 0xaf, 0xff}}},\n    {{{ -6265,   1075,  -5344}, 0, {  3544,      0}, {0x9f, 0x00, 0xaf, 0xff}}},\n    {{{ -6133,   1075,  -5503}, 0, {  -354,      0}, {0x9f, 0x00, 0xaf, 0xff}}},\n    {{{  2151,    768,   6650}, 0, {  4056,    990}, {0x61, 0x00, 0x51, 0xff}}},\n    {{{  2019,    819,   6807}, 0, {     0,      0}, {0x61, 0x00, 0x51, 0xff}}},\n    {{{  2019,    768,   6807}, 0, {     0,    990}, {0x61, 0x00, 0x51, 0xff}}},\n    {{{  2019,    768,   6807}, 0, {  4056,    990}, {0xeb, 0x00, 0x7d, 0xff}}},\n    {{{  2019,    819,   6807}, 0, {  4056,      0}, {0xeb, 0x00, 0x7d, 0xff}}},\n    {{{  1817,    819,   6772}, 0, {     0,      0}, {0xeb, 0x00, 0x7d, 0xff}}},\n    {{{  1817,    768,   6772}, 0, {     0,    990}, {0xeb, 0x00, 0x7d, 0xff}}},\n    {{{  1817,    768,   6772}, 0, {  4056,    990}, {0x89, 0x00, 0x2b, 0xff}}},\n    {{{  1817,    819,   6772}, 0, {  4056,      0}, {0x89, 0x00, 0x2b, 0xff}}},\n    {{{  1747,    819,   6579}, 0, {     0,      0}, {0x89, 0x00, 0x2b, 0xff}}},\n    {{{  1747,    768,   6579}, 0, {     0,    990}, {0x89, 0x00, 0x2b, 0xff}}},\n    {{{ -6133,   1024,  -5503}, 0, {  -354,    990}, {0x9f, 0x00, 0xaf, 0xff}}},\n};\n\n// 0x070076A0 - 0x07007790\nstatic const Vtx bob_seg7_vertex_070076A0[] = {\n    {{{ -5993,   1024,  -5116}, 0, {  4056,    990}, {0xea, 0x00, 0x7d, 0xff}}},\n    {{{ -6194,   1075,  -5152}, 0, {     0,      0}, {0xea, 0x00, 0x7d, 0xff}}},\n    {{{ -6194,   1024,  -5152}, 0, {     0,    990}, {0xea, 0x00, 0x7d, 0xff}}},\n    {{{ -6133,   1024,  -5503}, 0, {  4056,    990}, {0x15, 0x00, 0x83, 0xff}}},\n    {{{ -5931,   1075,  -5468}, 0, {  -214,      0}, {0x15, 0x00, 0x83, 0xff}}},\n    {{{ -5931,   1024,  -5468}, 0, {  -214,    990}, {0x15, 0x00, 0x83, 0xff}}},\n    {{{ -6133,   1075,  -5503}, 0, {  4056,      0}, {0x15, 0x00, 0x83, 0xff}}},\n    {{{ -5931,   1024,  -5468}, 0, {  4056,    990}, {0x77, 0x00, 0xd6, 0xff}}},\n    {{{ -5931,   1075,  -5468}, 0, {  4056,      0}, {0x77, 0x00, 0xd6, 0xff}}},\n    {{{ -5861,   1075,  -5273}, 0, {     0,      0}, {0x77, 0x00, 0xd6, 0xff}}},\n    {{{ -5861,   1024,  -5273}, 0, {     0,    990}, {0x77, 0x00, 0xd6, 0xff}}},\n    {{{ -5861,   1024,  -5273}, 0, {  4056,    990}, {0x61, 0x00, 0x51, 0xff}}},\n    {{{ -5861,   1075,  -5273}, 0, {  4056,      0}, {0x61, 0x00, 0x51, 0xff}}},\n    {{{ -5993,   1075,  -5116}, 0, {     0,      0}, {0x61, 0x00, 0x51, 0xff}}},\n    {{{ -5993,   1024,  -5116}, 0, {     0,    990}, {0x61, 0x00, 0x51, 0xff}}},\n};\n\n// 0x07007790 - 0x07007880\nstatic const Vtx bob_seg7_vertex_07007790[] = {\n    {{{ -6677,   1024,  -3554}, 0, {  4056,    990}, {0x16, 0x00, 0x83, 0xff}}},\n    {{{ -6475,   1075,  -3518}, 0, {  -214,      0}, {0x16, 0x00, 0x83, 0xff}}},\n    {{{ -6475,   1024,  -3518}, 0, {  -214,    990}, {0x16, 0x00, 0x83, 0xff}}},\n    {{{ -5993,   1024,  -5116}, 0, {  4056,    990}, {0xea, 0x00, 0x7d, 0xff}}},\n    {{{ -5993,   1075,  -5116}, 0, {  4056,      0}, {0xea, 0x00, 0x7d, 0xff}}},\n    {{{ -6194,   1075,  -5152}, 0, {     0,      0}, {0xea, 0x00, 0x7d, 0xff}}},\n    {{{ -6194,   1024,  -5152}, 0, {  4056,    990}, {0x89, 0x00, 0x2c, 0xff}}},\n    {{{ -6194,   1075,  -5152}, 0, {  4056,      0}, {0x89, 0x00, 0x2c, 0xff}}},\n    {{{ -6265,   1075,  -5344}, 0, {     0,      0}, {0x89, 0x00, 0x2c, 0xff}}},\n    {{{ -6265,   1024,  -5344}, 0, {     0,    990}, {0x89, 0x00, 0x2c, 0xff}}},\n    {{{ -6809,   1024,  -3395}, 0, {  3544,    990}, {0x9f, 0x00, 0xaf, 0xff}}},\n    {{{ -6809,   1075,  -3395}, 0, {  3544,      0}, {0x9f, 0x00, 0xaf, 0xff}}},\n    {{{ -6677,   1075,  -3554}, 0, {  -354,      0}, {0x9f, 0x00, 0xaf, 0xff}}},\n    {{{ -6677,   1024,  -3554}, 0, {  -354,    990}, {0x9f, 0x00, 0xaf, 0xff}}},\n    {{{ -6677,   1075,  -3554}, 0, {  4056,      0}, {0x16, 0x00, 0x83, 0xff}}},\n};\n\n// 0x07007880 - 0x07007980\nstatic const Vtx bob_seg7_vertex_07007880[] = {\n    {{{ -6739,   1024,  -3202}, 0, {  4056,    990}, {0x89, 0x00, 0x2b, 0xff}}},\n    {{{ -6739,   1075,  -3202}, 0, {  4056,      0}, {0x89, 0x00, 0x2b, 0xff}}},\n    {{{ -6809,   1075,  -3395}, 0, {     0,      0}, {0x89, 0x00, 0x2b, 0xff}}},\n    {{{ -6475,   1024,  -3518}, 0, {  4056,    990}, {0x77, 0x00, 0xd5, 0xff}}},\n    {{{ -6405,   1075,  -3324}, 0, {     0,      0}, {0x77, 0x00, 0xd5, 0xff}}},\n    {{{ -6405,   1024,  -3324}, 0, {     0,    990}, {0x77, 0x00, 0xd5, 0xff}}},\n    {{{ -6475,   1075,  -3518}, 0, {  4056,      0}, {0x77, 0x00, 0xd5, 0xff}}},\n    {{{ -6405,   1024,  -3324}, 0, {  4056,    990}, {0x61, 0x00, 0x51, 0xff}}},\n    {{{ -6405,   1075,  -3324}, 0, {  4056,      0}, {0x61, 0x00, 0x51, 0xff}}},\n    {{{ -6537,   1075,  -3167}, 0, {     0,      0}, {0x61, 0x00, 0x51, 0xff}}},\n    {{{ -6537,   1024,  -3167}, 0, {     0,    990}, {0x61, 0x00, 0x51, 0xff}}},\n    {{{ -6537,   1024,  -3167}, 0, {  4056,    990}, {0xeb, 0x00, 0x7d, 0xff}}},\n    {{{ -6739,   1075,  -3202}, 0, {     0,      0}, {0xeb, 0x00, 0x7d, 0xff}}},\n    {{{ -6739,   1024,  -3202}, 0, {     0,    990}, {0xeb, 0x00, 0x7d, 0xff}}},\n    {{{ -6537,   1075,  -3167}, 0, {  4056,      0}, {0xeb, 0x00, 0x7d, 0xff}}},\n    {{{ -6809,   1024,  -3395}, 0, {     0,    990}, {0x89, 0x00, 0x2b, 0xff}}},\n};\n\n// 0x07007980 - 0x07007A80\nstatic const Vtx bob_seg7_vertex_07007980[] = {\n    {{{  2276,    802,   4352}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2276,    802,   4438}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2276,    888,   4438}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4466,   1052,  -1975}, 0, {     0,    990}, {0x55, 0x00, 0x5e, 0xff}}},\n    {{{ -4402,   1138,  -2033}, 0, {   990,      0}, {0x55, 0x00, 0x5e, 0xff}}},\n    {{{ -4466,   1138,  -1975}, 0, {     0,      0}, {0x55, 0x00, 0x5e, 0xff}}},\n    {{{ -4466,   1052,  -1975}, 0, {     0,    990}, {0x54, 0x00, 0x5e, 0xff}}},\n    {{{ -4401,   1052,  -2033}, 0, {   990,    990}, {0x54, 0x00, 0x5e, 0xff}}},\n    {{{ -4402,   1138,  -2033}, 0, {   990,      0}, {0x54, 0x00, 0x5e, 0xff}}},\n    {{{ -3543,    857,  -4185}, 0, {     0,    990}, {0x34, 0x07, 0x73, 0xff}}},\n    {{{ -3465,    943,  -4226}, 0, {   990,      0}, {0x34, 0x07, 0x73, 0xff}}},\n    {{{ -3544,    943,  -4190}, 0, {     0,      0}, {0x34, 0x07, 0x73, 0xff}}},\n    {{{ -3464,    856,  -4221}, 0, {   990,    990}, {0x34, 0x07, 0x73, 0xff}}},\n    {{{ -4247,   1058,   -763}, 0, {     0,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -4186,   1058,   -824}, 0, {   990,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -4186,   1144,   -824}, 0, {   990,      0}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07007A80 - 0x07007B20\nstatic const Vtx bob_seg7_vertex_07007A80[] = {\n    {{{ -4247,   1058,   -763}, 0, {     0,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -4186,   1144,   -824}, 0, {   990,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -4247,   1144,   -763}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  6205,    907,  -1524}, 0, {   990,    990}, {0x58, 0x00, 0x5b, 0xff}}},\n    {{{  6267,    907,  -1584}, 0, {   -24,    990}, {0x58, 0x00, 0x5b, 0xff}}},\n    {{{  6267,    993,  -1584}, 0, {   -24,    -24}, {0x58, 0x00, 0x5b, 0xff}}},\n    {{{  2276,    802,   4352}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2276,    888,   4438}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2276,    888,   4352}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6205,    993,  -1524}, 0, {   990,    -24}, {0x58, 0x00, 0x5b, 0xff}}},\n};\n\n// 0x07007B20 - 0x07007C10\nstatic const Vtx bob_seg7_vertex_07007B20[] = {\n    {{{ -4442,   1145,  -2005}, 0, {   990,      0}, {0xd1, 0xfc, 0x75, 0xff}}},\n    {{{ -4448,   1018,  -2012}, 0, {   654,   2000}, {0xd1, 0xfc, 0x75, 0xff}}},\n    {{{ -4438,   1018,  -2008}, 0, {   880,   1996}, {0xd1, 0xfc, 0x75, 0xff}}},\n    {{{ -4445,   1145,  -2016}, 0, {   538,      0}, {0x9c, 0x48, 0x1b, 0xff}}},\n    {{{ -4442,   1145,  -2005}, 0, {   990,      0}, {0x9c, 0x48, 0x1b, 0xff}}},\n    {{{ -4441,   1149,  -2012}, 0, {   752,    -88}, {0x9c, 0x48, 0x1b, 0xff}}},\n    {{{ -4448,   1018,  -2012}, 0, {   654,   2000}, {0x86, 0x03, 0x21, 0xff}}},\n    {{{ -4442,   1145,  -2005}, 0, {   990,      0}, {0x86, 0x03, 0x21, 0xff}}},\n    {{{ -4445,   1145,  -2016}, 0, {   538,      0}, {0x86, 0x03, 0x21, 0xff}}},\n    {{{ -4434,   1145,  -2013}, 0, {   764,    -36}, {0x7c, 0xfc, 0xea, 0xff}}},\n    {{{ -4438,   1018,  -2008}, 0, {   880,   1996}, {0x7c, 0xfc, 0xea, 0xff}}},\n    {{{ -4440,   1018,  -2019}, 0, {   428,   1996}, {0x7c, 0xfc, 0xea, 0xff}}},\n    {{{ -4440,   1018,  -2019}, 0, {   428,   1996}, {0x21, 0x04, 0x86, 0xff}}},\n    {{{ -4445,   1145,  -2016}, 0, {   538,      0}, {0x21, 0x04, 0x86, 0xff}}},\n    {{{ -4434,   1145,  -2013}, 0, {   764,    -36}, {0x21, 0x04, 0x86, 0xff}}},\n};\n\n// 0x07007C10 - 0x07007D00\nstatic const Vtx bob_seg7_vertex_07007C10[] = {\n    {{{ -4441,   1149,  -2012}, 0, {   752,    -88}, {0x1b, 0x48, 0x9c, 0xff}}},\n    {{{ -4434,   1145,  -2013}, 0, {   764,    -36}, {0x1b, 0x48, 0x9c, 0xff}}},\n    {{{ -4445,   1145,  -2016}, 0, {   538,      0}, {0x1b, 0x48, 0x9c, 0xff}}},\n    {{{ -4445,   1145,  -2016}, 0, {   194,    -20}, {0xad, 0xff, 0xa1, 0xff}}},\n    {{{ -4440,   1018,  -2019}, 0, {     0,   2012}, {0xad, 0xff, 0xa1, 0xff}}},\n    {{{ -4448,   1018,  -2012}, 0, {   420,   2012}, {0xad, 0xff, 0xa1, 0xff}}},\n    {{{ -4438,   1018,  -2008}, 0, {   194,   2000}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -4434,   1145,  -2013}, 0, {   420,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -4442,   1145,  -2005}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -4408,   1052,  -2040}, 0, {  1884,      0}, {0xab, 0x00, 0xa2, 0xff}}},\n    {{{ -4472,   1138,  -1982}, 0, {     0,   1692}, {0xab, 0x00, 0xa2, 0xff}}},\n    {{{ -4408,   1138,  -2040}, 0, {     0,      0}, {0xab, 0x00, 0xa2, 0xff}}},\n    {{{ -4441,   1149,  -2012}, 0, {   194,    -84}, {0x3d, 0x5c, 0x3d, 0xff}}},\n    {{{ -4442,   1145,  -2005}, 0, {     0,      0}, {0x3d, 0x5c, 0x3d, 0xff}}},\n    {{{ -4434,   1145,  -2013}, 0, {   420,      0}, {0x3d, 0x5c, 0x3d, 0xff}}},\n};\n\n// 0x07007D00 - 0x07007DE0\nstatic const Vtx bob_seg7_vertex_07007D00[] = {\n    {{{ -4472,   1138,  -1982}, 0, {   990,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4402,   1138,  -2033}, 0, {   606,    288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4408,   1138,  -2040}, 0, {   990,    288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4466,   1138,  -1975}, 0, {   606,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4408,   1052,  -2040}, 0, {   990,    288}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -4401,   1052,  -2033}, 0, {   606,    288}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -4466,   1052,  -1975}, 0, {   606,   2012}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -4472,   1052,  -1982}, 0, {   990,   2012}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -4408,   1052,  -2040}, 0, {  1884,      0}, {0xab, 0x00, 0xa2, 0xff}}},\n    {{{ -4472,   1052,  -1982}, 0, {  1884,   1692}, {0xab, 0x00, 0xa2, 0xff}}},\n    {{{ -4472,   1138,  -1982}, 0, {     0,   1692}, {0xab, 0x00, 0xa2, 0xff}}},\n    {{{ -3515,    822,  -4213}, 0, {   654,   2000}, {0x82, 0x02, 0xf5, 0xff}}},\n    {{{ -3513,    950,  -4212}, 0, {   990,      0}, {0x82, 0x02, 0xf5, 0xff}}},\n    {{{ -3512,    949,  -4223}, 0, {   538,      0}, {0x82, 0x02, 0xf5, 0xff}}},\n};\n\n// 0x07007DE0 - 0x07007EE0\nstatic const Vtx bob_seg7_vertex_07007DE0[] = {\n    {{{ -4401,   1052,  -2033}, 0, {   352,   2012}, {0x60, 0x01, 0xae, 0xff}}},\n    {{{ -4408,   1138,  -2040}, 0, {     0,     96}, {0x60, 0x01, 0xae, 0xff}}},\n    {{{ -4402,   1138,  -2033}, 0, {   352,     96}, {0x60, 0x01, 0xae, 0xff}}},\n    {{{ -4401,   1052,  -2033}, 0, {   352,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -4408,   1052,  -2040}, 0, {     0,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -4408,   1138,  -2040}, 0, {     0,     96}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -4472,   1052,  -1982}, 0, {     0,   2012}, {0xa0, 0x00, 0x52, 0xff}}},\n    {{{ -4466,   1052,  -1975}, 0, {   352,   2012}, {0xa0, 0x00, 0x52, 0xff}}},\n    {{{ -4466,   1138,  -1975}, 0, {   352,     96}, {0xa0, 0x00, 0x52, 0xff}}},\n    {{{ -4472,   1138,  -1982}, 0, {     0,     96}, {0xa0, 0x00, 0x52, 0xff}}},\n    {{{ -3513,    950,  -4212}, 0, {   990,      0}, {0xb8, 0x00, 0x68, 0xff}}},\n    {{{ -3515,    822,  -4213}, 0, {   654,   2000}, {0xb8, 0x00, 0x68, 0xff}}},\n    {{{ -3505,    823,  -4206}, 0, {   880,   1996}, {0xb8, 0x00, 0x68, 0xff}}},\n    {{{ -3512,    949,  -4223}, 0, {   538,      0}, {0xa6, 0x57, 0xf0, 0xff}}},\n    {{{ -3513,    950,  -4212}, 0, {   990,      0}, {0xa6, 0x57, 0xf0, 0xff}}},\n    {{{ -3509,    953,  -4218}, 0, {   752,    -88}, {0xa6, 0x57, 0xf0, 0xff}}},\n};\n\n// 0x07007EE0 - 0x07007FD0\nstatic const Vtx bob_seg7_vertex_07007EE0[] = {\n    {{{ -3548,    943,  -4199}, 0, {   990,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3544,    943,  -4190}, 0, {   606,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3465,    943,  -4226}, 0, {   606,    288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3502,    950,  -4217}, 0, {   764,    -36}, {0x7e, 0xfe, 0x0a, 0xff}}},\n    {{{ -3505,    823,  -4206}, 0, {   880,   1996}, {0x7e, 0xfe, 0x0a, 0xff}}},\n    {{{ -3504,    822,  -4218}, 0, {   428,   1996}, {0x7e, 0xfe, 0x0a, 0xff}}},\n    {{{ -3509,    953,  -4218}, 0, {   752,    -88}, {0x2d, 0x4d, 0xa7, 0xff}}},\n    {{{ -3502,    950,  -4217}, 0, {   764,    -36}, {0x2d, 0x4d, 0xa7, 0xff}}},\n    {{{ -3512,    949,  -4223}, 0, {   538,      0}, {0x2d, 0x4d, 0xa7, 0xff}}},\n    {{{ -3504,    822,  -4218}, 0, {   428,   1996}, {0x41, 0x00, 0x94, 0xff}}},\n    {{{ -3512,    949,  -4223}, 0, {   538,      0}, {0x41, 0x00, 0x94, 0xff}}},\n    {{{ -3502,    950,  -4217}, 0, {   764,    -36}, {0x41, 0x00, 0x94, 0xff}}},\n    {{{ -3512,    949,  -4223}, 0, {   194,    -20}, {0xcc, 0xf9, 0x8d, 0xff}}},\n    {{{ -3504,    822,  -4218}, 0, {     0,   2012}, {0xcc, 0xf9, 0x8d, 0xff}}},\n    {{{ -3515,    822,  -4213}, 0, {   420,   2012}, {0xcc, 0xf9, 0x8d, 0xff}}},\n};\n\n// 0x07007FD0 - 0x070080D0\nstatic const Vtx bob_seg7_vertex_07007FD0[] = {\n    {{{ -3505,    823,  -4206}, 0, {   194,   2000}, {0x34, 0x08, 0x73, 0xff}}},\n    {{{ -3502,    950,  -4217}, 0, {   420,      0}, {0x34, 0x08, 0x73, 0xff}}},\n    {{{ -3513,    950,  -4212}, 0, {     0,      0}, {0x34, 0x08, 0x73, 0xff}}},\n    {{{ -3509,    953,  -4218}, 0, {   194,    -84}, {0x20, 0x63, 0x47, 0xff}}},\n    {{{ -3513,    950,  -4212}, 0, {     0,      0}, {0x20, 0x63, 0x47, 0xff}}},\n    {{{ -3502,    950,  -4217}, 0, {   420,      0}, {0x20, 0x63, 0x47, 0xff}}},\n    {{{ -3464,    856,  -4221}, 0, {   352,   2012}, {0x74, 0xff, 0xcd, 0xff}}},\n    {{{ -3469,    942,  -4235}, 0, {     0,     96}, {0x74, 0xff, 0xcd, 0xff}}},\n    {{{ -3465,    943,  -4226}, 0, {   352,     96}, {0x74, 0xff, 0xcd, 0xff}}},\n    {{{ -3548,    943,  -4199}, 0, {   990,   2012}, {0xfd, 0x7e, 0xf4, 0xff}}},\n    {{{ -3465,    943,  -4226}, 0, {   606,    288}, {0xfd, 0x7e, 0xf4, 0xff}}},\n    {{{ -3469,    942,  -4235}, 0, {   990,    288}, {0xfd, 0x7e, 0xf4, 0xff}}},\n    {{{ -3468,    856,  -4229}, 0, {   990,    288}, {0xff, 0x82, 0x00, 0xff}}},\n    {{{ -3464,    856,  -4221}, 0, {   606,    288}, {0xff, 0x82, 0x00, 0xff}}},\n    {{{ -3543,    857,  -4185}, 0, {   606,   2012}, {0xff, 0x82, 0x00, 0xff}}},\n    {{{ -3547,    857,  -4194}, 0, {   990,   2012}, {0xff, 0x82, 0x00, 0xff}}},\n};\n\n// 0x070080D0 - 0x070081D0\nstatic const Vtx bob_seg7_vertex_070080D0[] = {\n    {{{ -3468,    856,  -4229}, 0, {  1884,      0}, {0xcc, 0xf8, 0x8d, 0xff}}},\n    {{{ -3548,    943,  -4199}, 0, {     0,   1692}, {0xcc, 0xf8, 0x8d, 0xff}}},\n    {{{ -3469,    942,  -4235}, 0, {     0,      0}, {0xcc, 0xf8, 0x8d, 0xff}}},\n    {{{ -3468,    856,  -4229}, 0, {  1884,      0}, {0xcd, 0xf9, 0x8d, 0xff}}},\n    {{{ -3547,    857,  -4194}, 0, {  1884,   1692}, {0xcd, 0xf9, 0x8d, 0xff}}},\n    {{{ -3548,    943,  -4199}, 0, {     0,   1692}, {0xcd, 0xf9, 0x8d, 0xff}}},\n    {{{ -3464,    856,  -4221}, 0, {   352,   2012}, {0x71, 0xfe, 0xc8, 0xff}}},\n    {{{ -3468,    856,  -4229}, 0, {     0,   2012}, {0x71, 0xfe, 0xc8, 0xff}}},\n    {{{ -3469,    942,  -4235}, 0, {     0,     96}, {0x71, 0xfe, 0xc8, 0xff}}},\n    {{{ -4228,   1151,   -804}, 0, {   194,    -20}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -4224,   1024,   -808}, 0, {     0,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -4232,   1024,   -800}, 0, {   420,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -3547,    857,  -4194}, 0, {     0,   2012}, {0x8c, 0x01, 0x33, 0xff}}},\n    {{{ -3543,    857,  -4185}, 0, {   352,   2012}, {0x8c, 0x01, 0x33, 0xff}}},\n    {{{ -3544,    943,  -4190}, 0, {   352,     96}, {0x8c, 0x01, 0x33, 0xff}}},\n    {{{ -3548,    943,  -4199}, 0, {     0,     96}, {0x8c, 0x01, 0x33, 0xff}}},\n};\n\n// 0x070081D0 - 0x070082C0\nstatic const Vtx bob_seg7_vertex_070081D0[] = {\n    {{{ -4232,   1024,   -800}, 0, {   654,   2000}, {0x87, 0x04, 0x24, 0xff}}},\n    {{{ -4225,   1151,   -794}, 0, {   990,      0}, {0x87, 0x04, 0x24, 0xff}}},\n    {{{ -4228,   1151,   -804}, 0, {   538,      0}, {0x87, 0x04, 0x24, 0xff}}},\n    {{{ -4225,   1151,   -794}, 0, {   990,      0}, {0xdf, 0xfd, 0x7a, 0xff}}},\n    {{{ -4232,   1024,   -800}, 0, {   654,   2000}, {0xdf, 0xfd, 0x7a, 0xff}}},\n    {{{ -4221,   1024,   -797}, 0, {   880,   1996}, {0xdf, 0xfd, 0x7a, 0xff}}},\n    {{{ -4228,   1151,   -804}, 0, {   538,      0}, {0x9b, 0x46, 0x1e, 0xff}}},\n    {{{ -4225,   1151,   -794}, 0, {   990,      0}, {0x9b, 0x46, 0x1e, 0xff}}},\n    {{{ -4224,   1155,   -800}, 0, {   752,    -88}, {0x9b, 0x46, 0x1e, 0xff}}},\n    {{{ -4217,   1151,   -802}, 0, {   764,    -36}, {0x7a, 0xfb, 0xdf, 0xff}}},\n    {{{ -4221,   1024,   -797}, 0, {   880,   1996}, {0x7a, 0xfb, 0xdf, 0xff}}},\n    {{{ -4224,   1024,   -808}, 0, {   428,   1996}, {0x7a, 0xfb, 0xdf, 0xff}}},\n    {{{ -4224,   1155,   -800}, 0, {   752,    -88}, {0x11, 0x4f, 0x9f, 0xff}}},\n    {{{ -4217,   1151,   -802}, 0, {   764,    -36}, {0x11, 0x4f, 0x9f, 0xff}}},\n    {{{ -4228,   1151,   -804}, 0, {   538,      0}, {0x11, 0x4f, 0x9f, 0xff}}},\n};\n\n// 0x070082C0 - 0x070083C0\nstatic const Vtx bob_seg7_vertex_070082C0[] = {\n    {{{ -4224,   1024,   -808}, 0, {   428,   1996}, {0x16, 0x04, 0x84, 0xff}}},\n    {{{ -4228,   1151,   -804}, 0, {   538,      0}, {0x16, 0x04, 0x84, 0xff}}},\n    {{{ -4217,   1151,   -802}, 0, {   764,    -36}, {0x16, 0x04, 0x84, 0xff}}},\n    {{{ -4193,   1058,   -830}, 0, {  1884,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -4254,   1144,   -769}, 0, {     0,   1692}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -4193,   1144,   -830}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -4221,   1024,   -797}, 0, {   194,   2000}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -4217,   1151,   -802}, 0, {   420,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -4225,   1151,   -794}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -4224,   1155,   -800}, 0, {   194,    -84}, {0x43, 0x54, 0x43, 0xff}}},\n    {{{ -4225,   1151,   -794}, 0, {     0,      0}, {0x43, 0x54, 0x43, 0xff}}},\n    {{{ -4217,   1151,   -802}, 0, {   420,      0}, {0x43, 0x54, 0x43, 0xff}}},\n    {{{ -4254,   1144,   -769}, 0, {   990,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4186,   1144,   -824}, 0, {   606,    288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4193,   1144,   -830}, 0, {   990,    288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4247,   1144,   -763}, 0, {   606,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070083C0 - 0x070084A0\nstatic const Vtx bob_seg7_vertex_070083C0[] = {\n    {{{ -4193,   1058,   -830}, 0, {   990,    288}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -4247,   1058,   -763}, 0, {   606,   2012}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -4254,   1058,   -769}, 0, {   990,   2012}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -4186,   1058,   -824}, 0, {   606,    288}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2286,    802,   4352}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2276,    888,   4352}, 0, {   352,     96}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2286,    888,   4352}, 0, {     0,     96}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4193,   1058,   -830}, 0, {  1884,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -4254,   1058,   -769}, 0, {  1884,   1692}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -4254,   1144,   -769}, 0, {     0,   1692}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -4186,   1058,   -824}, 0, {   352,   2012}, {0x52, 0x00, 0xa0, 0xff}}},\n    {{{ -4193,   1058,   -830}, 0, {     0,   2012}, {0x52, 0x00, 0xa0, 0xff}}},\n    {{{ -4193,   1144,   -830}, 0, {     0,     96}, {0x52, 0x00, 0xa0, 0xff}}},\n    {{{ -4186,   1144,   -824}, 0, {   352,     96}, {0x52, 0x00, 0xa0, 0xff}}},\n};\n\n// 0x070084A0 - 0x07008580\nstatic const Vtx bob_seg7_vertex_070084A0[] = {\n    {{{ -4254,   1058,   -769}, 0, {     0,   2012}, {0xae, 0x00, 0x60, 0xff}}},\n    {{{ -4247,   1058,   -763}, 0, {   352,   2012}, {0xae, 0x00, 0x60, 0xff}}},\n    {{{ -4247,   1144,   -763}, 0, {   352,     96}, {0xae, 0x00, 0x60, 0xff}}},\n    {{{ -4254,   1144,   -769}, 0, {     0,     96}, {0xae, 0x00, 0x60, 0xff}}},\n    {{{  2286,    802,   4352}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2276,    802,   4352}, 0, {   352,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2276,    888,   4352}, 0, {   352,     96}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2286,    888,   4352}, 0, {   990,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2276,    888,   4352}, 0, {   606,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2276,    888,   4438}, 0, {   606,    288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2276,    802,   4438}, 0, {   352,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2286,    802,   4438}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2286,    888,   4438}, 0, {     0,     96}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2276,    888,   4438}, 0, {   352,     96}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07008580 - 0x07008660\nstatic const Vtx bob_seg7_vertex_07008580[] = {\n    {{{  2286,    802,   4438}, 0, {  1884,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2286,    888,   4352}, 0, {     0,   1692}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2286,    888,   4438}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2286,    802,   4352}, 0, {  1884,   1692}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2286,    802,   4438}, 0, {   990,    288}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2276,    802,   4352}, 0, {   606,   2012}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2286,    802,   4352}, 0, {   990,   2012}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2276,    802,   4438}, 0, {   606,    288}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2286,    888,   4352}, 0, {   990,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2276,    888,   4438}, 0, {   606,    288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2286,    888,   4438}, 0, {   990,    288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2286,    899,   4395}, 0, {   752,    -88}, {0x36, 0x51, 0x51, 0xff}}},\n    {{{  2283,    895,   4401}, 0, {   764,    -36}, {0x36, 0x51, 0x51, 0xff}}},\n    {{{  2292,    895,   4395}, 0, {   538,      0}, {0x36, 0x51, 0x51, 0xff}}},\n};\n\n// 0x07008660 - 0x07008750\nstatic const Vtx bob_seg7_vertex_07008660[] = {\n    {{{  2292,    895,   4395}, 0, {   538,      0}, {0x31, 0x4a, 0xa7, 0xff}}},\n    {{{  2283,    895,   4390}, 0, {   990,      0}, {0x31, 0x4a, 0xa7, 0xff}}},\n    {{{  2286,    899,   4395}, 0, {   752,    -88}, {0x31, 0x4a, 0xa7, 0xff}}},\n    {{{  2283,    895,   4401}, 0, {   764,    -36}, {0xba, 0xfc, 0x69, 0xff}}},\n    {{{  2283,    768,   4395}, 0, {   880,   1996}, {0xba, 0xfc, 0x69, 0xff}}},\n    {{{  2292,    768,   4401}, 0, {   428,   1996}, {0xba, 0xfc, 0x69, 0xff}}},\n    {{{  2292,    768,   4401}, 0, {   428,   1996}, {0x46, 0x04, 0x69, 0xff}}},\n    {{{  2292,    895,   4395}, 0, {   538,      0}, {0x46, 0x04, 0x69, 0xff}}},\n    {{{  2283,    895,   4401}, 0, {   764,    -36}, {0x46, 0x04, 0x69, 0xff}}},\n    {{{  2292,    768,   4390}, 0, {   654,   2000}, {0x3d, 0x04, 0x92, 0xff}}},\n    {{{  2283,    895,   4390}, 0, {   990,      0}, {0x3d, 0x04, 0x92, 0xff}}},\n    {{{  2292,    895,   4395}, 0, {   538,      0}, {0x3d, 0x04, 0x92, 0xff}}},\n    {{{  2286,    899,   4395}, 0, {   194,    -84}, {0x9b, 0x4c, 0x00, 0xff}}},\n    {{{  2283,    895,   4390}, 0, {     0,      0}, {0x9b, 0x4c, 0x00, 0xff}}},\n    {{{  2283,    895,   4401}, 0, {   420,      0}, {0x9b, 0x4c, 0x00, 0xff}}},\n};\n\n// 0x07008750 - 0x07008840\nstatic const Vtx bob_seg7_vertex_07008750[] = {\n    {{{  2283,    895,   4390}, 0, {   990,      0}, {0xc3, 0xfc, 0x92, 0xff}}},\n    {{{  2292,    768,   4390}, 0, {   654,   2000}, {0xc3, 0xfc, 0x92, 0xff}}},\n    {{{  2283,    768,   4395}, 0, {   880,   1996}, {0xc3, 0xfc, 0x92, 0xff}}},\n    {{{  2283,    768,   4395}, 0, {   194,   2000}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2283,    895,   4401}, 0, {   420,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2283,    895,   4390}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2292,    895,   4395}, 0, {   194,    -20}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2292,    768,   4401}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2292,    768,   4390}, 0, {   420,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6221,    873,  -1562}, 0, {   654,   2000}, {0x84, 0x04, 0x16, 0xff}}},\n    {{{  6227,   1000,  -1555}, 0, {   990,      0}, {0x84, 0x04, 0x16, 0xff}}},\n    {{{  6225,   1000,  -1566}, 0, {   538,      0}, {0x84, 0x04, 0x16, 0xff}}},\n    {{{  6225,   1000,  -1566}, 0, {   538,      0}, {0x9f, 0x4f, 0x11, 0xff}}},\n    {{{  6227,   1000,  -1555}, 0, {   990,      0}, {0x9f, 0x4f, 0x11, 0xff}}},\n    {{{  6229,   1004,  -1562}, 0, {   752,    -88}, {0x9f, 0x4f, 0x11, 0xff}}},\n};\n\n// 0x07008840 - 0x07008930\nstatic const Vtx bob_seg7_vertex_07008840[] = {\n    {{{  6227,   1000,  -1555}, 0, {   990,      0}, {0xdf, 0xfb, 0x7a, 0xff}}},\n    {{{  6221,    873,  -1562}, 0, {   654,   2000}, {0xdf, 0xfb, 0x7a, 0xff}}},\n    {{{  6232,    873,  -1559}, 0, {   880,   1996}, {0xdf, 0xfb, 0x7a, 0xff}}},\n    {{{  6236,   1000,  -1563}, 0, {   764,    -36}, {0x7a, 0xfc, 0xdf, 0xff}}},\n    {{{  6232,    873,  -1559}, 0, {   880,   1996}, {0x7a, 0xfc, 0xdf, 0xff}}},\n    {{{  6229,    873,  -1570}, 0, {   428,   1996}, {0x7a, 0xfc, 0xdf, 0xff}}},\n    {{{  6229,   1004,  -1562}, 0, {   752,    -88}, {0x1b, 0x48, 0x9c, 0xff}}},\n    {{{  6236,   1000,  -1563}, 0, {   764,    -36}, {0x1b, 0x48, 0x9c, 0xff}}},\n    {{{  6225,   1000,  -1566}, 0, {   538,      0}, {0x1b, 0x48, 0x9c, 0xff}}},\n    {{{  6229,    873,  -1570}, 0, {   428,   1996}, {0x21, 0x04, 0x86, 0xff}}},\n    {{{  6225,   1000,  -1566}, 0, {   538,      0}, {0x21, 0x04, 0x86, 0xff}}},\n    {{{  6236,   1000,  -1563}, 0, {   764,    -36}, {0x21, 0x04, 0x86, 0xff}}},\n    {{{  6260,    907,  -1591}, 0, {   990,    288}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  6267,    907,  -1584}, 0, {   606,    288}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  6205,    907,  -1524}, 0, {   606,   2012}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07008930 - 0x07008A30\nstatic const Vtx bob_seg7_vertex_07008930[] = {\n    {{{  6225,   1000,  -1566}, 0, {   194,    -20}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  6229,    873,  -1570}, 0, {     0,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  6221,    873,  -1562}, 0, {   420,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  6232,    873,  -1559}, 0, {   194,   2000}, {0x54, 0x00, 0x5e, 0xff}}},\n    {{{  6236,   1000,  -1563}, 0, {   420,      0}, {0x54, 0x00, 0x5e, 0xff}}},\n    {{{  6227,   1000,  -1555}, 0, {     0,      0}, {0x54, 0x00, 0x5e, 0xff}}},\n    {{{  6229,   1004,  -1562}, 0, {   194,    -84}, {0x3c, 0x58, 0x43, 0xff}}},\n    {{{  6227,   1000,  -1555}, 0, {     0,      0}, {0x3c, 0x58, 0x43, 0xff}}},\n    {{{  6236,   1000,  -1563}, 0, {   420,      0}, {0x3c, 0x58, 0x43, 0xff}}},\n    {{{  6198,    993,  -1531}, 0, {   990,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6205,    993,  -1524}, 0, {   606,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6267,    993,  -1584}, 0, {   606,    288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6260,    993,  -1591}, 0, {   990,    288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6260,    907,  -1591}, 0, {   990,    288}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  6205,    907,  -1524}, 0, {   606,   2012}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  6198,    907,  -1531}, 0, {   990,   2012}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07008A30 - 0x07008AF0\nstatic const Vtx bob_seg7_vertex_07008A30[] = {\n    {{{  6260,    907,  -1591}, 0, {  1884,      0}, {0xa8, 0x00, 0xa5, 0xff}}},\n    {{{  6198,    993,  -1531}, 0, {     0,   1692}, {0xa8, 0x00, 0xa5, 0xff}}},\n    {{{  6260,    993,  -1591}, 0, {     0,      0}, {0xa8, 0x00, 0xa5, 0xff}}},\n    {{{  6198,    907,  -1531}, 0, {  1884,   1692}, {0xa8, 0x00, 0xa5, 0xff}}},\n    {{{  6267,    907,  -1584}, 0, {   352,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  6260,    907,  -1591}, 0, {     0,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  6260,    993,  -1591}, 0, {     0,     96}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  6267,    993,  -1584}, 0, {   352,     96}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  6198,    907,  -1531}, 0, {     0,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  6205,    907,  -1524}, 0, {   352,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  6205,    993,  -1524}, 0, {   352,     96}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  6198,    993,  -1531}, 0, {     0,     96}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07008AF0 - 0x07008C28\nstatic const Gfx bob_seg7_dl_07008AF0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bob_seg7_lights_07004478.l, 1),\n    gsSPLight(&bob_seg7_lights_07004478.a, 2),\n    gsSPVertex(bob_seg7_vertex_07004490, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 4, 10,  5, 0x0,  4, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bob_seg7_vertex_07004590, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  8,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bob_seg7_vertex_07004690, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSP1Triangle(12, 11,  0, 0x0),\n    gsSPVertex(bob_seg7_vertex_07004790, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  1,  9,  2, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  6,  8, 13, 0x0),\n    gsSPVertex(bob_seg7_vertex_07004870, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008C28 - 0x07009050\nstatic const Gfx bob_seg7_dl_07008C28[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bob_seg7_vertex_070048A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_07004990, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_07004A80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_07004B70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(bob_seg7_vertex_07004C60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bob_seg7_vertex_07004D50, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(bob_seg7_vertex_07004E40, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_07004F30, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(bob_seg7_vertex_07005020, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(bob_seg7_vertex_07005120, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bob_seg7_vertex_07005200, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_070052F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_070053E0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bob_seg7_vertex_070054C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bob_seg7_vertex_070055B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_070056A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_07005790, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  2,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009050 - 0x07009370\nstatic const Gfx bob_seg7_dl_07009050[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bob_seg7_vertex_07005800, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_070058F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_070059E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_07005AD0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_07005BC0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bob_seg7_vertex_07005CC0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_07005DB0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 6, 11,  7, 0x0,  6,  9, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_07005EA0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_07005F90, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_07006080, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_07006170, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_07006260, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_07006350, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_07006440, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_07006530, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_07006620, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009370 - 0x07009490\nstatic const Gfx bob_seg7_dl_07009370[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bob_seg7_vertex_07006680, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0,  0,  2,  6, 0x0),\n    gsSP2Triangles( 0,  5,  1, 0x0,  2,  7,  6, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSPVertex(bob_seg7_vertex_07006760, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  5,  8, 0x0),\n    gsSP2Triangles( 7,  9,  5, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(bob_seg7_vertex_07006860, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_07006950, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009490 - 0x070095B8\nstatic const Gfx bob_seg7_dl_07009490[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bob_seg7_vertex_070069D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bob_seg7_vertex_07006AC0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(bob_seg7_vertex_07006BC0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bob_seg7_vertex_07006CC0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_07006DB0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070095B8 - 0x07009768\nstatic const Gfx bob_seg7_dl_070095B8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bob_seg7_vertex_07006E30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bob_seg7_vertex_07006F30, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(10, 12, 11, 0x0,  7,  9, 13, 0x0),\n    gsSP2Triangles(10, 14, 12, 0x0, 14,  7, 13, 0x0),\n    gsSP1Triangle(14, 13, 12, 0x0),\n    gsSPVertex(bob_seg7_vertex_07007020, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(bob_seg7_vertex_07007100, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bob_seg7_vertex_07007200, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_070072F0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  2,  5,  3, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  1,  7,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009768 - 0x070097F8\nstatic const Gfx bob_seg7_dl_07009768[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bob_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bob_seg7_vertex_07007370, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  3,  7,  8, 0x0),\n    gsSP2Triangles( 3,  8,  4, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 13, 0x0,  9, 11, 12, 0x0),\n    gsSP2Triangles( 9, 14, 10, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(bob_seg7_vertex_07007470, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070097F8 - 0x07009960\nstatic const Gfx bob_seg7_dl_070097F8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bob_seg7_texture_07001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bob_seg7_vertex_070074C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bob_seg7_vertex_070075B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_070076A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_07007790, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(bob_seg7_vertex_07007880, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009960 - 0x070099E0\nstatic const Gfx bob_seg7_dl_07009960[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bob_seg7_texture_07000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bob_seg7_vertex_07007980, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bob_seg7_vertex_07007A80, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  3,  5,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070099E0 - 0x07009D80\nstatic const Gfx bob_seg7_dl_070099E0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09006000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bob_seg7_vertex_07007B20, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_07007C10, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_07007D00, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bob_seg7_vertex_07007DE0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bob_seg7_vertex_07007EE0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_07007FD0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bob_seg7_vertex_070080D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bob_seg7_vertex_070081D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_070082C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(bob_seg7_vertex_070083C0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(bob_seg7_vertex_070084A0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(bob_seg7_vertex_07008580, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bob_seg7_vertex_07008660, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_07008750, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_07008840, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_07008930, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bob_seg7_vertex_07008A30, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009D80 - 0x07009E98\nconst Gfx bob_seg7_dl_07009D80[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(160, 160, 160, 255),\n    gsSPFogPosition(980, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bob_seg7_dl_07008AF0),\n    gsSPDisplayList(bob_seg7_dl_07008C28),\n    gsSPDisplayList(bob_seg7_dl_07009050),\n    gsSPDisplayList(bob_seg7_dl_07009370),\n    gsSPDisplayList(bob_seg7_dl_07009490),\n    gsSPDisplayList(bob_seg7_dl_070095B8),\n    gsSPDisplayList(bob_seg7_dl_07009768),\n    gsSPDisplayList(bob_seg7_dl_070097F8),\n    gsSPDisplayList(bob_seg7_dl_07009960),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bob_seg7_dl_070099E0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bob/areas/1/3/model.inc.c",
    "content": "// 0x07009E98 - 0x07009F88\nstatic const Vtx bob_seg7_vertex_07009E98[] = {\n    {{{ -3890,    768,   2867}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -4300,    768,   2867}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -4300,    768,   3277}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{  4485,    963,   3846}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{  3930,    891,   3698}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{  4132,    941,   4051}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{  4284,    912,   3493}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{  3165,    768,   5778}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{  2657,    768,   6056}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{  3050,    768,   6171}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{  2772,    768,   5663}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -4001,      0,   4882}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -4153,      0,   4501}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -4534,      0,   4653}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -4382,      0,   5034}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n};\n\n// 0x07009F88 - 0x0700A078\nstatic const Vtx bob_seg7_vertex_07009F88[] = {\n    {{{ -5761,   1024,  -4942}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -5822,   1024,  -4366}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -5504,   1024,  -4624}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -3890,    768,   2867}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -4300,    768,   3277}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -3890,    768,   3277}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -4914,    768,   1843}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -5324,    768,   2253}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -4914,    768,   2253}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -5324,    768,   1843}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{  5729,    891,   5972}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{  5160,    835,   6061}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{  5494,    804,   6296}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{  5395,    922,   5737}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -6080,   1024,  -4685}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n};\n\n// 0x0700A078 - 0x0700A168\nstatic const Vtx bob_seg7_vertex_0700A078[] = {\n    {{{ -3890,    768,   1331}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -4300,    768,   1331}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -4300,    768,   1741}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -5857,    821,  -6563}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -6199,    861,  -6786}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -6403,    979,  -6450}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -6061,    939,  -6228}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -6677,   1024,  -5127}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -7065,   1024,  -4993}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -6931,   1024,  -4606}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -6543,   1024,  -4740}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{  6261,   2213,  -7837}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{  5856,   2251,  -7882}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{  5804,   2175,  -7483}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{  6210,   2137,  -7438}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n};\n\n// 0x0700A168 - 0x0700A258\nstatic const Vtx bob_seg7_vertex_0700A168[] = {\n    {{{ -5967,   1024,   -635}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -6377,   1024,   -635}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -6377,   1024,   -225}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -3890,    768,   1331}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -4300,    768,   1741}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -3890,    768,   1741}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -6450,    768,   3379}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -6860,    768,   3379}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -6860,    768,   3789}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -6450,    768,   3789}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -3378,    768,   2355}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -3788,    768,   2765}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -3378,    768,   2765}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -3788,    768,   2355}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -5967,   1024,   -225}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n};\n\n// 0x0700A258 - 0x0700A318\nstatic const Vtx bob_seg7_vertex_0700A258[] = {\n    {{{  7040,   1998,  -5748}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{  6559,   2018,  -5426}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{  6960,   1988,  -5347}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{  6639,   2028,  -5827}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{  4301,   3072,   1434}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{  3891,   3072,   1434}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{  3891,   3072,   1843}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{  4301,   3072,   1843}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -1497,     39,   4825}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -1797,    163,   5074}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -1220,    125,   5114}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -1520,    250,   5364}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n};\n\n// 0x0700A318 - 0x0700A470\nstatic const Gfx bob_seg7_dl_0700A318[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, generic_0900B000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bob_seg7_vertex_07009E98, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_07009F88, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700A078, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700A168, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700A258, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A470 - 0x0700A4E0\nconst Gfx bob_seg7_dl_0700A470[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bob_seg7_dl_0700A318),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bob/areas/1/4/model.inc.c",
    "content": "// 0x0700A4E0 - 0x0700A560\nstatic const Vtx bob_seg7_vertex_0700A4E0[] = {\n    {{{  -993,   1690,  -2310}, 0, { 22656,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2262,   1690,  -4824}, 0, {   172,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2262,   1075,  -4824}, 0, {   172,    950}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -993,   1075,  -2310}, 0, { 22656,    950}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3128,   1690,  -6537}, 0, {-11272,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3128,   1075,  -6537}, 0, {-11272,    950}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2436,   1075,  -5167}, 0, {   990,    950}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2436,   1690,  -5167}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700A560 - 0x0700A650\nstatic const Vtx bob_seg7_vertex_0700A560[] = {\n    {{{ -3071,    768,   1536}, 0, {  6100,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3071,   1024,   3072}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3071,    768,   3072}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   768,    870,   5847}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1751,    768,   5335}, 0, {-10434,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   768,    768,   5847}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1751,    870,   5335}, 0, {-10434,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1751,    870,   5335}, 0, {   808,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2263,    768,   4864}, 0, { -6418,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1751,    768,   5335}, 0, {   808,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2263,    870,   4864}, 0, { -6418,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2263,    870,   4864}, 0, {  3800,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2263,    870,   4480}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2262,    768,   4480}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2263,    768,   4864}, 0, {  3800,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700A650 - 0x0700A740\nstatic const Vtx bob_seg7_vertex_0700A650[] = {\n    {{{  3078,   1741,   -756}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3078,   1869,   -756}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6271,   2064,  -2677}, 0, {-23536,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3071,    768,   1536}, 0, {  6100,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3071,   1024,   1536}, 0, {  6100,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3071,   1024,   3072}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4095,   1024,   4096}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7167,   1024,   4096}, 0, {-11272,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7167,    768,   4096}, 0, {-11274,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4095,    768,   4096}, 0, {   988,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4095,    768,   4096}, 0, {   318,    996}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3071,    768,   3072}, 0, {  6100,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3071,   1024,   3072}, 0, {  6100,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4095,   1024,   4096}, 0, {   318,    -24}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6270,   1936,  -2677}, 0, {-23536,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700A740 - 0x0700A800\nstatic const Vtx bob_seg7_vertex_0700A740[] = {\n    {{{  6271,   2064,  -2677}, 0, { 11912,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  8093,   2064,  -5982}, 0, {-18564,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6270,   1936,  -2677}, 0, { 11890,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  8093,   1936,  -5982}, 0, {-18588,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1521,    891,   2034}, 0, { -8206,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1288,    768,   3820}, 0, { 19480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1288,    891,   3820}, 0, { 19480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1521,    768,   2034}, 0, { -8206,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   768,    768,   7168}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   768,    870,   7168}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   768,    870,   5847}, 0, {-12192,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   768,    768,   5847}, 0, {-12192,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700A800 - 0x0700A848\nstatic const Gfx bob_seg7_dl_0700A800[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bob_seg7_vertex_0700A4E0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A848 - 0x0700A920\nstatic const Gfx bob_seg7_dl_0700A848[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bob_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bob_seg7_vertex_0700A560, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 11, 13, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700A650, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle(14,  0,  2, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700A740, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A920 - 0x0700A9E0\nconst Gfx bob_seg7_dl_0700A920[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(160, 160, 160, 255),\n    gsSPFogPosition(980, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bob_seg7_dl_0700A800),\n    gsSPDisplayList(bob_seg7_dl_0700A848),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bob/areas/1/5/model.inc.c",
    "content": "// 0x0700A9E0 - 0x0700A9F8\nstatic const Lights1 bob_seg7_lights_0700A9E0 = gdSPDefLights1(\n    0x33, 0x33, 0x33,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700A9F8 - 0x0700AA10\nstatic const Lights1 bob_seg7_lights_0700A9F8 = gdSPDefLights1(\n    0x14, 0x14, 0x14,\n    0x64, 0x64, 0x64, 0x28, 0x28, 0x28\n);\n\n// 0x0700AA10 - 0x0700AAF0\nstatic const Vtx bob_seg7_vertex_0700AA10[] = {\n    {{{ -2815,   1024,    256}, 0, {   990,      0}, {0xe8, 0x00, 0x7c, 0xff}}},\n    {{{ -3231,    960,   -159}, 0, { -1358,    224}, {0xe7, 0x00, 0x7c, 0xff}}},\n    {{{ -3097,    768,    -24}, 0, {  -596,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2815,    768,    256}, 0, {   990,    990}, {0x28, 0x00, 0x78, 0xff}}},\n    {{{ -3231,   1024,   -159}, 0, { -1358,      0}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{ -3231,    768,   -159}, 0, { -1356,    990}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{ -3231,    960,   -159}, 0, {   990,    224}, {0xe7, 0x00, 0x7c, 0xff}}},\n    {{{ -3231,   1024,   -159}, 0, {   990,      0}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{ -3503,   1024,    111}, 0, {  -542,      0}, {0x43, 0x00, 0x6b, 0xff}}},\n    {{{ -3503,    960,    111}, 0, {  -542,    224}, {0x22, 0x00, 0x7a, 0xff}}},\n    {{{ -7167,    768,   4096}, 0, { -3096,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -7167,      0,   4096}, 0, { -3096,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4095,      0,   4096}, 0, {   990,    990}, {0x2a, 0x3c, 0x67, 0xff}}},\n    {{{ -4095,    768,   4096}, 0, {   990,      0}, {0x30, 0x00, 0x75, 0xff}}},\n};\n\n// 0x0700AAF0 - 0x0700ABF0\nstatic const Vtx bob_seg7_vertex_0700AAF0[] = {\n    {{{   768,    768,   7680}, 0, {  1672,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   768,    768,   7168}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   768,      0,   7168}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   768,    768,   5888}, 0, {  -712,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   768,    717,   5888}, 0, {  -712,     36}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   768,      0,   5888}, 0, {  -712,    990}, {0xba, 0x69, 0x00, 0xff}}},\n    {{{  3776,   2560,   2227}, 0, {    32,    452}, {0xcd, 0xa1, 0x42, 0xff}}},\n    {{{  2816,   3072,   1230}, 0, {   990,   -542}, {0x9c, 0xb5, 0x13, 0xff}}},\n    {{{  3200,   2560,   1230}, 0, {   606,   -542}, {0xad, 0xa1, 0xf5, 0xff}}},\n    {{{  4352,   2048,   1230}, 0, {  -540,   -544}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{  3584,   3072,    -99}, 0, {   224,  -1870}, {0xce, 0xb4, 0xa8, 0xff}}},\n    {{{  3776,   2560,    232}, 0, {    32,  -1538}, {0xd9, 0x9d, 0xbd, 0xff}}},\n    {{{  3584,   3072,   2560}, 0, {   224,    784}, {0xdf, 0xb5, 0x60, 0xff}}},\n    {{{  5120,   3072,    -99}, 0, { -1308,  -1870}, {0x32, 0xb4, 0xa8, 0xff}}},\n    {{{  4928,   2560,    232}, 0, { -1116,  -1538}, {0x2b, 0xa4, 0xb5, 0xff}}},\n    {{{  4928,   2560,   2227}, 0, { -1116,    452}, {0x1f, 0xa1, 0x4d, 0xff}}},\n};\n\n// 0x0700ABF0 - 0x0700ACF0\nstatic const Vtx bob_seg7_vertex_0700ABF0[] = {\n    {{{  4352,   2048,   1230}, 0, {  -540,   -544}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{  4928,   2560,    232}, 0, { -1116,  -1538}, {0x2b, 0xa4, 0xb5, 0xff}}},\n    {{{  5504,   2560,   1230}, 0, { -1690,   -544}, {0x52, 0xa1, 0x0b, 0xff}}},\n    {{{  4928,   2560,   2227}, 0, { -1116,    452}, {0x1f, 0xa1, 0x4d, 0xff}}},\n    {{{  5120,   3072,    -99}, 0, { -1308,  -1870}, {0x32, 0xb4, 0xa8, 0xff}}},\n    {{{  5888,   3072,   1230}, 0, { -2074,   -544}, {0x64, 0xb5, 0xed, 0xff}}},\n    {{{  5120,   3072,   2560}, 0, { -1308,    784}, {0x42, 0xb5, 0x4d, 0xff}}},\n    {{{  3584,   3072,   2560}, 0, {   224,    784}, {0xdf, 0xb5, 0x60, 0xff}}},\n    {{{  3776,   2560,   2227}, 0, {    32,    452}, {0xcd, 0xa1, 0x42, 0xff}}},\n    {{{ -7167,    768,   4096}, 0, {-13316,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -7167,    768,    512}, 0, {   990,    990}, {0x42, 0x00, 0x6c, 0xff}}},\n    {{{ -7167,   1024,    512}, 0, {   990,      0}, {0x5e, 0x00, 0x54, 0xff}}},\n    {{{ -7167,   1024,   4096}, 0, {-13316,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3503,   1024,    111}, 0, { 16320,      0}, {0x43, 0x00, 0x6b, 0xff}}},\n    {{{ -7167,   1024,    512}, 0, {     0,      0}, {0x5e, 0x00, 0x54, 0xff}}},\n    {{{ -3503,    960,    111}, 0, { 16320,    224}, {0x22, 0x00, 0x7a, 0xff}}},\n};\n\n// 0x0700ACF0 - 0x0700ADF0\nstatic const Vtx bob_seg7_vertex_0700ACF0[] = {\n    {{{ -7167,   1024,    512}, 0, {     0,      0}, {0x5e, 0x00, 0x54, 0xff}}},\n    {{{ -7167,    768,    512}, 0, {     0,    990}, {0x42, 0x00, 0x6c, 0xff}}},\n    {{{ -3503,    960,    111}, 0, { 16320,    224}, {0x22, 0x00, 0x7a, 0xff}}},\n    {{{ -3503,    768,    111}, 0, { 16320,    990}, {0x0d, 0x00, 0x7e, 0xff}}},\n    {{{  2851,   1613,  -1919}, 0, {   394,   2128}, {0xe1, 0x64, 0x46, 0xff}}},\n    {{{  3072,   2945,  -2047}, 0, {   180,   -116}, {0xba, 0x68, 0x10, 0xff}}},\n    {{{  3072,   2894,  -2175}, 0, {     0,      0}, {0xb6, 0x66, 0xf5, 0xff}}},\n    {{{  3072,   2894,  -2431}, 0, {  -456,      0}, {0xb3, 0x60, 0x1a, 0xff}}},\n    {{{  2802,   1613,  -2653}, 0, {  -826,   2142}, {0x9c, 0x3d, 0x2f, 0xff}}},\n    {{{  3072,   2349,  -2047}, 0, {   180,    860}, {0x0f, 0xd2, 0x75, 0xff}}},\n    {{{  3328,   2493,  -1603}, 0, {   920,    552}, {0xf4, 0xbf, 0x6b, 0xff}}},\n    {{{  3328,   2944,  -1603}, 0, {   918,   -188}, {0xf5, 0x69, 0x46, 0xff}}},\n    {{{  5289,   2493,  -3327}, 0, {  5086,    990}, {0x66, 0xc1, 0x26, 0xff}}},\n    {{{  5543,   2637,  -2883}, 0, {  5098,    -72}, {0x66, 0xc1, 0x26, 0xff}}},\n    {{{  3328,   2493,  -1603}, 0, {   -16,    -72}, {0xf4, 0xbf, 0x6b, 0xff}}},\n    {{{  3072,   2945,  -2559}, 0, {  -668,   -116}, {0xdb, 0x1f, 0x75, 0xff}}},\n};\n\n// 0x0700ADF0 - 0x0700AED0\nstatic const Vtx bob_seg7_vertex_0700ADF0[] = {\n    {{{  3072,   3521,  -7167}, 0, {   990,    544}, {0x9c, 0xc6, 0xcd, 0xff}}},\n    {{{  3072,   3666,  -7167}, 0, {   990,      0}, {0xed, 0x7d, 0x0a, 0xff}}},\n    {{{  3072,   3666,  -7679}, 0, {    68,      0}, {0xcf, 0x3a, 0x9b, 0xff}}},\n    {{{  3072,   3521,  -7679}, 0, {    68,    256}, {0xd7, 0x96, 0xca, 0xff}}},\n    {{{  5289,   2493,  -3327}, 0, {   990,    734}, {0x66, 0xc1, 0x26, 0xff}}},\n    {{{  5289,   3089,  -3327}, 0, {   990,      0}, {0x1b, 0x7a, 0xec, 0xff}}},\n    {{{  5543,   3089,  -2883}, 0, { -1052,      0}, {0x64, 0x43, 0x26, 0xff}}},\n    {{{  5543,   2637,  -2883}, 0, {     0,    352}, {0x66, 0xc1, 0x26, 0xff}}},\n    {{{  5289,   2493,  -3327}, 0, {  5086,    990}, {0x66, 0xc1, 0x26, 0xff}}},\n    {{{  3328,   2493,  -1603}, 0, {   -16,    -72}, {0xf4, 0xbf, 0x6b, 0xff}}},\n    {{{  3072,   2349,  -2047}, 0, {     0,    990}, {0x0f, 0xd2, 0x75, 0xff}}},\n    {{{   167,   2709,  -3757}, 0, {   236,  -1352}, {0x38, 0x67, 0x2f, 0xff}}},\n    {{{    54,   2762,  -3700}, 0, {     0,  -1458}, {0xc3, 0x38, 0x5f, 0xff}}},\n    {{{    54,   1024,  -3700}, 0, {     0,   2010}, {0xc2, 0x33, 0x61, 0xff}}},\n};\n\n// 0x0700AED0 - 0x0700AFC0\nstatic const Vtx bob_seg7_vertex_0700AED0[] = {\n    {{{  3072,   3521,  -7167}, 0, {   638,  -6200}, {0x9c, 0xc6, 0xcd, 0xff}}},\n    {{{  3072,   3521,  -7679}, 0, {  -272,  -6082}, {0xd7, 0x96, 0xca, 0xff}}},\n    {{{  5289,   3088,  -5887}, 0, {   990,  -1054}, {0x3d, 0x9e, 0xce, 0xff}}},\n    {{{  5733,   3089,  -6143}, 0, {   136,  -1054}, {0x70, 0xc7, 0xf8, 0xff}}},\n    {{{  5733,   3089,  -6143}, 0, {   990,    990}, {0x70, 0xc7, 0xf8, 0xff}}},\n    {{{  5732,   3233,  -6143}, 0, {   990,    702}, {0x44, 0x6a, 0x08, 0xff}}},\n    {{{  5289,   3233,  -5887}, 0, {     0,    700}, {0x28, 0x5f, 0x49, 0xff}}},\n    {{{  5289,   3088,  -5887}, 0, {     0,    990}, {0x3d, 0x9e, 0xce, 0xff}}},\n    {{{   419,   2706,  -3884}, 0, {   772,  -1346}, {0x15, 0x6b, 0x40, 0xff}}},\n    {{{   167,   2709,  -3757}, 0, {   236,  -1352}, {0x38, 0x67, 0x2f, 0xff}}},\n    {{{    54,   1024,  -3700}, 0, {     0,   2010}, {0xc2, 0x33, 0x61, 0xff}}},\n    {{{   533,   2755,  -3942}, 0, {  1038,  -1444}, {0xae, 0x3f, 0x48, 0xff}}},\n    {{{   169,   1024,  -3471}, 0, {  1080,   3444}, {0x88, 0x25, 0xf1, 0xff}}},\n    {{{   537,   2721,  -3657}, 0, {   238,     66}, {0xc8, 0x54, 0xb4, 0xff}}},\n    {{{   652,   2772,  -3715}, 0, {     0,      0}, {0x93, 0x3a, 0x1a, 0xff}}},\n};\n\n// 0x0700AFC0 - 0x0700B0C0\nstatic const Vtx bob_seg7_vertex_0700AFC0[] = {\n    {{{   169,   1024,  -3471}, 0, {  1080,   3444}, {0x88, 0x25, 0xf1, 0xff}}},\n    {{{   169,   2775,  -3471}, 0, {  1046,    -50}, {0xd5, 0x6c, 0xcf, 0xff}}},\n    {{{   286,   2723,  -3530}, 0, {   778,     56}, {0xea, 0x65, 0xb8, 0xff}}},\n    {{{   537,   2721,  -3657}, 0, {   238,     66}, {0xc8, 0x54, 0xb4, 0xff}}},\n    {{{  2560,   2862,  -2613}, 0, {   724,   -688}, {0x40, 0x6c, 0x0b, 0xff}}},\n    {{{  2560,   2864,  -2367}, 0, {   396,   -692}, {0x5d, 0x52, 0xe7, 0xff}}},\n    {{{  2560,   1613,  -2737}, 0, {   886,    990}, {0x52, 0x46, 0x42, 0xff}}},\n    {{{  2560,   2912,  -2736}, 0, {   886,   -754}, {0xf0, 0x2f, 0x74, 0xff}}},\n    {{{  2560,   1612,  -2244}, 0, {     0,    990}, {0x05, 0x5c, 0x56, 0xff}}},\n    {{{  2560,   2917,  -2244}, 0, {   232,   -762}, {0x2a, 0x70, 0x2a, 0xff}}},\n    {{{   400,   2546,  -3014}, 0, {     0,    606}, {0xbe, 0x99, 0x1f, 0xff}}},\n    {{{   228,   2802,  -2532}, 0, {  1246,      0}, {0xb8, 0x66, 0x12, 0xff}}},\n    {{{   400,   2802,  -3014}, 0, {     0,      0}, {0xc3, 0x6e, 0x00, 0xff}}},\n    {{{    54,   1024,  -3700}, 0, {  8306,  -3244}, {0xc2, 0x33, 0x61, 0xff}}},\n    {{{   652,   2772,  -3715}, 0, {  8126,  -1500}, {0x93, 0x3a, 0x1a, 0xff}}},\n    {{{   533,   2755,  -3942}, 0, {  8410,  -1516}, {0xae, 0x3f, 0x48, 0xff}}},\n};\n\n// 0x0700B0C0 - 0x0700B1B0\nstatic const Vtx bob_seg7_vertex_0700B0C0[] = {\n    {{{  2560,   2917,  -2244}, 0, {   734,      0}, {0x2a, 0x70, 0x2a, 0xff}}},\n    {{{  2388,   2917,  -1762}, 0, {  -542,      0}, {0x1a, 0x64, 0x49, 0xff}}},\n    {{{  2560,   2661,  -2244}, 0, {   734,    606}, {0x49, 0xb2, 0x43, 0xff}}},\n    {{{   400,   2546,  -3014}, 0, {  7584,  -1726}, {0xbe, 0x99, 0x1f, 0xff}}},\n    {{{  2388,   2917,  -1762}, 0, {  5240,  -1354}, {0x1a, 0x64, 0x49, 0xff}}},\n    {{{   228,   2802,  -2532}, 0, {  7312,  -1470}, {0xb8, 0x66, 0x12, 0xff}}},\n    {{{  2560,   2661,  -2244}, 0, {  5170,  -1610}, {0x49, 0xb2, 0x43, 0xff}}},\n    {{{   400,   1024,  -3014}, 0, {  7584,  -3244}, {0xbb, 0x60, 0x2b, 0xff}}},\n    {{{  2560,   1612,  -2244}, 0, {  5170,  -2656}, {0x05, 0x5c, 0x56, 0xff}}},\n    {{{  2560,   2917,  -2244}, 0, {  5170,  -1354}, {0x2a, 0x70, 0x2a, 0xff}}},\n    {{{   400,   2802,  -3014}, 0, {  7584,  -1470}, {0xc3, 0x6e, 0x00, 0xff}}},\n    {{{    54,   1024,  -3700}, 0, {  8306,  -3244}, {0xc2, 0x33, 0x61, 0xff}}},\n    {{{   169,   1024,  -3471}, 0, {  8068,  -3244}, {0x88, 0x25, 0xf1, 0xff}}},\n    {{{   652,   2772,  -3715}, 0, {  8126,  -1500}, {0x93, 0x3a, 0x1a, 0xff}}},\n    {{{   169,   2775,  -3471}, 0, {  8068,  -1496}, {0xd5, 0x6c, 0xcf, 0xff}}},\n};\n\n// 0x0700B1B0 - 0x0700B2B0\nstatic const Vtx bob_seg7_vertex_0700B1B0[] = {\n    {{{  1298,   3810,  -5631}, 0, { 10712,   -464}, {0xa9, 0x38, 0xb8, 0xff}}},\n    {{{  1343,   3835,  -5657}, 0, { 10778,   -438}, {0xc1, 0x00, 0x93, 0xff}}},\n    {{{  1697,   3835,  -5861}, 0, { 11352,   -438}, {0xc1, 0x00, 0x92, 0xff}}},\n    {{{  3072,   3666,  -6655}, 0, { 13792,   -608}, {0x02, 0x4d, 0x9c, 0xff}}},\n    {{{  3072,   4294,  -6655}, 0, { 13792,      0}, {0xe8, 0x00, 0x84, 0xff}}},\n    {{{  1697,   4091,  -5861}, 0, { 11352,   -184}, {0xc1, 0x00, 0x93, 0xff}}},\n    {{{  1609,   4194,  -5810}, 0, { 11200,    -80}, {0xc1, 0x00, 0x92, 0xff}}},\n    {{{  1298,   4293,  -5631}, 0, { 10712,      0}, {0xb2, 0x16, 0x9f, 0xff}}},\n    {{{  4846,   3233,  -5631}, 0, { 16844,  -1040}, {0x58, 0x4c, 0xcf, 0xff}}},\n    {{{  2560,   1613,  -2737}, 0, {  5322,  -2656}, {0x52, 0x46, 0x42, 0xff}}},\n    {{{  3072,   2945,  -2559}, 0, {  4540,  -1328}, {0xdb, 0x1f, 0x75, 0xff}}},\n    {{{  2560,   2912,  -2736}, 0, {  5322,  -1360}, {0xf0, 0x2f, 0x74, 0xff}}},\n    {{{  1298,   4293,  -3583}, 0, {  7620,      0}, {0xaa, 0x43, 0x40, 0xff}}},\n    {{{  1431,   4194,  -5708}, 0, { 10912,    -80}, {0xc1, 0x00, 0x92, 0xff}}},\n    {{{  1343,   4091,  -5657}, 0, { 10778,   -184}, {0xc1, 0x00, 0x93, 0xff}}},\n    {{{  1298,   3954,  -3583}, 0, {  7620,   -320}, {0xbd, 0x62, 0x2b, 0xff}}},\n};\n\n// 0x0700B2B0 - 0x0700B3B0\nstatic const Vtx bob_seg7_vertex_0700B2B0[] = {\n    {{{  4846,   3089,  -3583}, 0, {  1488,  -1184}, {0x59, 0x41, 0x3e, 0xff}}},\n    {{{  4846,   4242,  -3583}, 0, {  1488,      0}, {0x32, 0x6f, 0x22, 0xff}}},\n    {{{  3072,   4097,  -2559}, 0, {  4540,   -176}, {0xfd, 0x5c, 0x57, 0xff}}},\n    {{{  3072,   2945,  -2559}, 0, {  4540,  -1328}, {0xdb, 0x1f, 0x75, 0xff}}},\n    {{{  2560,   1613,  -2737}, 0, {  5322,  -2656}, {0x52, 0x46, 0x42, 0xff}}},\n    {{{  2802,   1613,  -2653}, 0, {  4942,  -2656}, {0x9c, 0x3d, 0x2f, 0xff}}},\n    {{{   851,   3818,  -5894}, 0, { -1752,   1682}, {0xdd, 0x48, 0x9e, 0xff}}},\n    {{{   507,   3042,  -5697}, 0, { -2182,    756}, {0xc1, 0x00, 0x92, 0xff}}},\n    {{{   329,   3042,  -5595}, 0, { -2422,    746}, {0xc1, 0x00, 0x92, 0xff}}},\n    {{{  2560,   2912,  -2736}, 0, {  5322,  -1360}, {0xf0, 0x2f, 0x74, 0xff}}},\n    {{{   868,   3954,  -3302}, 0, {  7590,   -320}, {0xb3, 0x4f, 0x3d, 0xff}}},\n    {{{   868,   2801,  -3302}, 0, {  7590,  -1470}, {0xbb, 0x4a, 0x4b, 0xff}}},\n    {{{   652,   2772,  -3715}, 0, {  8126,  -1500}, {0x93, 0x3a, 0x1a, 0xff}}},\n    {{{  -181,   2658,  -5302}, 0, {  9786,  -1614}, {0xa4, 0x20, 0xb0, 0xff}}},\n    {{{  -181,   3818,  -5302}, 0, {  9786,   -456}, {0x9c, 0x46, 0xe0, 0xff}}},\n    {{{   533,   2755,  -3942}, 0, {  8410,  -1516}, {0xae, 0x3f, 0x48, 0xff}}},\n};\n\n// 0x0700B3B0 - 0x0700B4B0\nstatic const Vtx bob_seg7_vertex_0700B3B0[] = {\n    {{{   851,   3818,  -5894}, 0, { -1752,   1682}, {0xdd, 0x48, 0x9e, 0xff}}},\n    {{{  3072,   2513,  -7167}, 0, {  1308,    268}, {0xf5, 0x3d, 0x92, 0xff}}},\n    {{{   596,   2939,  -5748}, 0, { -2058,    640}, {0xc1, 0x00, 0x92, 0xff}}},\n    {{{  3072,   3666,  -7167}, 0, {  1256,   1620}, {0xed, 0x7d, 0x0a, 0xff}}},\n    {{{  -181,   2658,  -5302}, 0, { -3096,    268}, {0xa4, 0x20, 0xb0, 0xff}}},\n    {{{   596,   2683,  -5748}, 0, { -2046,    340}, {0xc1, 0xff, 0x92, 0xff}}},\n    {{{  3072,   2513,  -7167}, 0, { 13786,  -1758}, {0xf5, 0x3d, 0x92, 0xff}}},\n    {{{  5289,   3088,  -5887}, 0, { 16842,  -1184}, {0x3d, 0x9e, 0xce, 0xff}}},\n    {{{  5289,   2080,  -5887}, 0, { 16842,  -2190}, {0x63, 0x4a, 0xe6, 0xff}}},\n    {{{  3072,   3521,  -7167}, 0, { 13786,   -752}, {0x9c, 0xc6, 0xcd, 0xff}}},\n    {{{  5289,   3233,  -5887}, 0, { 16842,  -1040}, {0x28, 0x5f, 0x49, 0xff}}},\n    {{{  5289,   3089,  -3327}, 0, { 19886,  -1182}, {0x1b, 0x7a, 0xec, 0xff}}},\n    {{{  5289,   1936,  -3327}, 0, { 19886,  -2334}, {0x55, 0x4b, 0x39, 0xff}}},\n    {{{  5543,   3089,  -2883}, 0, {  1742,  -1182}, {0x64, 0x43, 0x26, 0xff}}},\n    {{{  3328,   2944,  -1603}, 0, {  4300,  -1328}, {0xf5, 0x69, 0x46, 0xff}}},\n    {{{  3328,   2493,  -1603}, 0, {  4300,  -1778}, {0xf4, 0xbf, 0x6b, 0xff}}},\n};\n\n// 0x0700B4B0 - 0x0700B5A0\nstatic const Vtx bob_seg7_vertex_0700B4B0[] = {\n    {{{  3072,   3521,  -7679}, 0, { 13782,   -752}, {0xd7, 0x96, 0xca, 0xff}}},\n    {{{  3072,   3666,  -7679}, 0, { 13782,   -608}, {0xcf, 0x3a, 0x9b, 0xff}}},\n    {{{  5733,   3089,  -6143}, 0, { 16840,  -1184}, {0x70, 0xc7, 0xf8, 0xff}}},\n    {{{  5732,   3233,  -6143}, 0, { 16840,  -1040}, {0x44, 0x6a, 0x08, 0xff}}},\n    {{{  5289,   2493,  -3327}, 0, {  1490,  -1778}, {0x66, 0xc1, 0x26, 0xff}}},\n    {{{  3072,   2349,  -2047}, 0, {  4546,  -1922}, {0x0f, 0xd2, 0x75, 0xff}}},\n    {{{  2851,   1613,  -1919}, 0, {  4788,  -2656}, {0xe1, 0x64, 0x46, 0xff}}},\n    {{{  5289,   1936,  -3327}, 0, {  1490,  -2334}, {0x55, 0x4b, 0x39, 0xff}}},\n    {{{  3072,   2945,  -2047}, 0, {  4546,  -1328}, {0xba, 0x68, 0x10, 0xff}}},\n    {{{  5543,   2637,  -2883}, 0, {  1742,  -1634}, {0x66, 0xc1, 0x26, 0xff}}},\n    {{{  5543,   3089,  -2883}, 0, {  1742,  -1182}, {0x64, 0x43, 0x26, 0xff}}},\n    {{{  3328,   2493,  -1603}, 0, {  4300,  -1778}, {0xf4, 0xbf, 0x6b, 0xff}}},\n    {{{  -869,   1024,  -5528}, 0, {  9842,  -3244}, {0xe9, 0x66, 0x46, 0xff}}},\n    {{{    54,   2762,  -3700}, 0, {  8306,  -1510}, {0xc3, 0x38, 0x5f, 0xff}}},\n    {{{  -869,   2657,  -5528}, 0, {  9842,  -1614}, {0xea, 0x7a, 0xe6, 0xff}}},\n};\n\n// 0x0700B5A0 - 0x0700B6A0\nstatic const Vtx bob_seg7_vertex_0700B5A0[] = {\n    {{{  3072,   4294,  -6655}, 0, { 13792,      0}, {0xe8, 0x00, 0x84, 0xff}}},\n    {{{  4846,   4242,  -5631}, 0, { 16844,      0}, {0x4c, 0x60, 0xe2, 0xff}}},\n    {{{  4846,   3233,  -5631}, 0, { 16844,  -1040}, {0x58, 0x4c, 0xcf, 0xff}}},\n    {{{  4846,   3089,  -3583}, 0, { 19884,  -1184}, {0x59, 0x41, 0x3e, 0xff}}},\n    {{{  4846,   4242,  -3583}, 0, { 19884,      0}, {0x32, 0x6f, 0x22, 0xff}}},\n    {{{  3072,   4097,  -3071}, 0, {  4532,   -176}, {0x09, 0x31, 0x74, 0xff}}},\n    {{{  3072,   4293,  -3071}, 0, {  4532,      0}, {0x0a, 0x5d, 0x55, 0xff}}},\n    {{{  1298,   4293,  -3583}, 0, {  7620,      0}, {0xaa, 0x43, 0x40, 0xff}}},\n    {{{  4402,   4294,  -3839}, 0, {  1484,      0}, {0x3a, 0x5f, 0x3c, 0xff}}},\n    {{{  4402,   4293,  -3839}, 0, {  1484,      0}, {0x2a, 0x4e, 0x5a, 0xff}}},\n    {{{  1298,   3954,  -3583}, 0, {  7620,   -320}, {0xbd, 0x62, 0x2b, 0xff}}},\n    {{{  -869,   1024,  -5528}, 0, {  9842,  -3244}, {0xe9, 0x66, 0x46, 0xff}}},\n    {{{    54,   1024,  -3700}, 0, {  8306,  -3244}, {0xc2, 0x33, 0x61, 0xff}}},\n    {{{    54,   2762,  -3700}, 0, {  8306,  -1510}, {0xc3, 0x38, 0x5f, 0xff}}},\n    {{{  3072,   2513,  -7679}, 0, { 13782,  -1758}, {0xfd, 0x7e, 0x06, 0xff}}},\n    {{{  -869,   2657,  -5528}, 0, {  9842,  -1614}, {0xea, 0x7a, 0xe6, 0xff}}},\n};\n\n// 0x0700B6A0 - 0x0700B790\nstatic const Vtx bob_seg7_vertex_0700B6A0[] = {\n    {{{  -181,   2658,  -5302}, 0, { -3096,    268}, {0xa4, 0x20, 0xb0, 0xff}}},\n    {{{   851,   3818,  -5894}, 0, { -1752,   1682}, {0xdd, 0x48, 0x9e, 0xff}}},\n    {{{   329,   3042,  -5595}, 0, { -2422,    746}, {0xc1, 0x00, 0x92, 0xff}}},\n    {{{   596,   2939,  -5748}, 0, { -2058,    640}, {0xc1, 0x00, 0x92, 0xff}}},\n    {{{   507,   3042,  -5697}, 0, { -2182,    756}, {0xc1, 0x00, 0x92, 0xff}}},\n    {{{   240,   2939,  -5544}, 0, { -2538,    622}, {0xc1, 0x00, 0x92, 0xff}}},\n    {{{   240,   2683,  -5544}, 0, { -2526,    320}, {0xc1, 0xff, 0x92, 0xff}}},\n    {{{   596,   2683,  -5748}, 0, { -2046,    340}, {0xc1, 0xff, 0x92, 0xff}}},\n    {{{  -181,   3818,  -5302}, 0, { -3148,   1628}, {0x9c, 0x46, 0xe0, 0xff}}},\n    {{{ -7167,   1024,  -7167}, 0, { -4420,      0}, {0xec, 0x00, 0x7d, 0xff}}},\n    {{{ -3151,    512,  -6526}, 0, {   990,    650}, {0xb6, 0x26, 0x5f, 0xff}}},\n    {{{ -3151,   1024,  -6526}, 0, {   990,      0}, {0xb6, 0x00, 0x66, 0xff}}},\n    {{{  2079,   1368,  -1535}, 0, {  3150,   -376}, {0xe7, 0x7c, 0x00, 0xff}}},\n    {{{ -1016,   1024,  -2299}, 0, {     0,      0}, {0xb4, 0x3e, 0x50, 0xff}}},\n    {{{ -1016,      0,  -2299}, 0, {     0,    990}, {0xcc, 0x68, 0x30, 0xff}}},\n};\n\n// 0x0700B790 - 0x0700B890\nstatic const Vtx bob_seg7_vertex_0700B790[] = {\n    {{{ -2458,   1024,  -5155}, 0, {   990,      0}, {0x8f, 0x00, 0x39, 0xff}}},\n    {{{ -2633,      0,  -5497}, 0, {   398,   1328}, {0xd8, 0x6e, 0x2f, 0xff}}},\n    {{{ -2458,      0,  -5155}, 0, {   990,   1328}, {0xb1, 0x59, 0x28, 0xff}}},\n    {{{ -3151,    512,  -6526}, 0, { -1052,    650}, {0xb6, 0x26, 0x5f, 0xff}}},\n    {{{ -3151,   1024,  -6526}, 0, { -1052,      0}, {0xb6, 0x00, 0x66, 0xff}}},\n    {{{ -3445,      1,  -4662}, 0, {   396,    990}, {0x65, 0x38, 0xce, 0xff}}},\n    {{{ -3617,      1,  -5005}, 0, {   990,    990}, {0x21, 0x7a, 0xfe, 0xff}}},\n    {{{ -4132,    513,  -6035}, 0, {  2442,    310}, {0x60, 0x51, 0xf9, 0xff}}},\n    {{{ -3445,    777,  -4662}, 0, {   396,    -42}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{ -1791,      0,   -767}, 0, {  1402,    990}, {0x5c, 0x51, 0x1f, 0xff}}},\n    {{{ -2815,   1024,    256}, 0, { -1050,   -344}, {0xe8, 0x00, 0x7c, 0xff}}},\n    {{{ -2815,      0,    256}, 0, { -1052,    990}, {0x28, 0x71, 0x28, 0xff}}},\n    {{{ -2559,      0,  -2815}, 0, {   990,   2010}, {0x32, 0x71, 0xe7, 0xff}}},\n    {{{ -2559,    768,  -2815}, 0, {   990,    990}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{ -1872,      0,  -1441}, 0, { -1294,   2010}, {0x62, 0x47, 0xdc, 0xff}}},\n    {{{ -1872,    768,  -1441}, 0, { -1294,    990}, {0x7b, 0x00, 0xe3, 0xff}}},\n};\n\n// 0x0700B890 - 0x0700B970\nstatic const Vtx bob_seg7_vertex_0700B890[] = {\n    {{{ -1016,      0,  -2299}, 0, {   990,    990}, {0xcc, 0x68, 0x30, 0xff}}},\n    {{{ -1535,   1024,  -3327}, 0, {  -158,      0}, {0x8f, 0x00, 0x39, 0xff}}},\n    {{{ -1535,      0,  -3327}, 0, {  -158,    990}, {0xb0, 0x59, 0x28, 0xff}}},\n    {{{ -1016,   1024,  -2299}, 0, {   990,      0}, {0xb4, 0x3e, 0x50, 0xff}}},\n    {{{ -1791,      0,   -767}, 0, {   308,    990}, {0x5c, 0x51, 0x1f, 0xff}}},\n    {{{ -1872,      0,  -1441}, 0, {   990,    990}, {0x62, 0x47, 0xdc, 0xff}}},\n    {{{ -1872,    768,  -1441}, 0, {   990,      0}, {0x7b, 0x00, 0xe3, 0xff}}},\n    {{{ -1791,    973,   -767}, 0, {   308,   -304}, {0x78, 0x00, 0x29, 0xff}}},\n    {{{  1434,      0,   4864}, 0, {  1398,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -921,      0,   5377}, 0, {  -950,    736}, {0x4c, 0x65, 0x00, 0xff}}},\n    {{{   768,      0,   5376}, 0, {   734,    734}, {0xbb, 0x60, 0xd5, 0xff}}},\n    {{{ -1791,      0,   -767}, 0, {  1402,    990}, {0x5c, 0x51, 0x1f, 0xff}}},\n    {{{ -1791,    973,   -767}, 0, {  1402,   -304}, {0x78, 0x00, 0x29, 0xff}}},\n    {{{ -2815,   1024,    256}, 0, { -1054,   -400}, {0xe8, 0x00, 0x7c, 0xff}}},\n};\n\n// 0x0700B970 - 0x0700BA70\nstatic const Vtx bob_seg7_vertex_0700B970[] = {\n    {{{   768,    717,   5376}, 0, {  1160,     36}, {0xa4, 0x00, 0xa9, 0xff}}},\n    {{{   768,    768,   5376}, 0, {  1160,      0}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  1792,    768,   4864}, 0, {  -362,      0}, {0x9d, 0x00, 0xb1, 0xff}}},\n    {{{   768,      0,   5376}, 0, {  1160,    990}, {0xbb, 0x60, 0xd5, 0xff}}},\n    {{{  1792,      0,   4864}, 0, {  -362,    990}, {0xa3, 0x40, 0xc7, 0xff}}},\n    {{{  1434,      0,   4864}, 0, {  1398,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1434,      0,   4352}, 0, {  1398,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -921,      0,   5377}, 0, {  -950,    736}, {0x4c, 0x65, 0x00, 0xff}}},\n    {{{   768,      0,   5376}, 0, {   734,    734}, {0xbb, 0x60, 0xd5, 0xff}}},\n    {{{  1792,      0,   4864}, 0, {  1756,    224}, {0xa3, 0x40, 0xc7, 0xff}}},\n    {{{   768,      0,   5888}, 0, {   734,   1244}, {0xba, 0x69, 0x00, 0xff}}},\n    {{{  -921,      0,   5888}, 0, {  -950,   1244}, {0x46, 0x69, 0x00, 0xff}}},\n    {{{  -383,      0,   6400}, 0, {  -414,   1754}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3071,      0,   3072}, 0, { -3096,  -1566}, {0x3c, 0x6e, 0x0f, 0xff}}},\n    {{{ -4095,      0,   4096}, 0, { -4118,   -544}, {0x2a, 0x3c, 0x67, 0xff}}},\n    {{{  -921,      0,   4865}, 0, {  -950,    224}, {0x38, 0x71, 0x00, 0xff}}},\n};\n\n// 0x0700BA70 - 0x0700BB50\nstatic const Vtx bob_seg7_vertex_0700BA70[] = {\n    {{{   768,      0,   5888}, 0, {   734,   1244}, {0xba, 0x69, 0x00, 0xff}}},\n    {{{  -383,      0,   6400}, 0, {  -414,   1754}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,      0,   6400}, 0, {   224,   1754}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3071,    768,    512}, 0, {  3034,    308}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{ -3071,    768,   3072}, 0, { -1052,    308}, {0x6d, 0x00, 0x40, 0xff}}},\n    {{{ -3071,      0,   3072}, 0, { -1052,    990}, {0x3c, 0x6e, 0x0f, 0xff}}},\n    {{{ -1791,      0,   1792}, 0, { -1818,  -2842}, {0xd6, 0x77, 0x00, 0xff}}},\n    {{{ -3071,      0,    512}, 0, { -3096,  -4120}, {0x59, 0x49, 0x34, 0xff}}},\n    {{{ -3071,      0,   3072}, 0, { -3096,  -1566}, {0x3c, 0x6e, 0x0f, 0xff}}},\n    {{{ -1535,      0,   2048}, 0, { -1564,  -2588}, {0xba, 0x39, 0x58, 0xff}}},\n    {{{  1280,      0,   3840}, 0, {  1246,   -798}, {0xc6, 0x5a, 0x43, 0xff}}},\n    {{{  -921,    256,   5888}, 0, {     0,    -26}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -921,      0,   6400}, 0, { -2072,    998}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -921,      0,   5888}, 0, {   -30,    994}, {0x46, 0x69, 0x00, 0xff}}},\n};\n\n// 0x0700BB50 - 0x0700BC50\nstatic const Vtx bob_seg7_vertex_0700BB50[] = {\n    {{{  -921,      0,   4865}, 0, {  4056,    984}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{  -921,    256,   5375}, 0, {  2014,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -921,      0,   5377}, 0, {  2012,    990}, {0x4c, 0x65, 0x00, 0xff}}},\n    {{{ -3071,    768,    512}, 0, {  3034,    308}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{ -3071,      0,   3072}, 0, { -1052,    990}, {0x3c, 0x6e, 0x0f, 0xff}}},\n    {{{ -3071,      0,    512}, 0, {  3034,    990}, {0x59, 0x49, 0x34, 0xff}}},\n    {{{  1792,      0,   4352}, 0, {  1756,   -288}, {0x8d, 0x2a, 0x1e, 0xff}}},\n    {{{  1280,      0,   3840}, 0, {  1246,   -798}, {0xc6, 0x5a, 0x43, 0xff}}},\n    {{{  1434,      0,   4352}, 0, {  1398,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4095,      0,   4096}, 0, {    84,    990}, {0x2a, 0x3c, 0x67, 0xff}}},\n    {{{ -3071,    768,   3072}, 0, {  2012,    308}, {0x6d, 0x00, 0x40, 0xff}}},\n    {{{ -4095,    768,   4096}, 0, {    84,    308}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{ -3071,      0,   3072}, 0, {  2012,    990}, {0x3c, 0x6e, 0x0f, 0xff}}},\n    {{{ -1791,    768,   1792}, 0, { -4870,      0}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{ -1791,      0,   1792}, 0, { -4870,    990}, {0xd6, 0x77, 0x00, 0xff}}},\n    {{{ -1535,      0,   2048}, 0, { -4394,    990}, {0xba, 0x39, 0x58, 0xff}}},\n};\n\n// 0x0700BC50 - 0x0700BD30\nstatic const Vtx bob_seg7_vertex_0700BC50[] = {\n    {{{ -1535,      0,   2048}, 0, { -4394,    990}, {0xba, 0x39, 0x58, 0xff}}},\n    {{{  1280,      0,   3840}, 0, {    40,    990}, {0xc6, 0x5a, 0x43, 0xff}}},\n    {{{  1280,    768,   3840}, 0, {    40,      0}, {0xb5, 0x00, 0x65, 0xff}}},\n    {{{ -1535,    768,   2048}, 0, { -4394,      0}, {0xb1, 0x00, 0x63, 0xff}}},\n    {{{  1792,    768,   4352}, 0, {   990,      0}, {0x93, 0x00, 0x40, 0xff}}},\n    {{{  1792,      0,   4352}, 0, {     0,    990}, {0x8d, 0x2a, 0x1e, 0xff}}},\n    {{{  1792,      0,   4864}, 0, {   650,    990}, {0xa3, 0x40, 0xc7, 0xff}}},\n    {{{  1792,    768,   4864}, 0, {   650,      0}, {0x9d, 0x00, 0xb1, 0xff}}},\n    {{{  1280,      0,   3840}, 0, {  1246,   -798}, {0xc6, 0x5a, 0x43, 0xff}}},\n    {{{ -3071,      0,   3072}, 0, { -3096,  -1566}, {0x3c, 0x6e, 0x0f, 0xff}}},\n    {{{  1434,      0,   4352}, 0, {  1398,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1792,      0,   4352}, 0, {   990,    990}, {0x8d, 0x2a, 0x1e, 0xff}}},\n    {{{  1792,    768,   4352}, 0, {     0,      0}, {0x93, 0x00, 0x40, 0xff}}},\n    {{{ -1791,    768,   1792}, 0, { -4870,      0}, {0x82, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700BD30 - 0x0700BE30\nstatic const Vtx bob_seg7_vertex_0700BD30[] = {\n    {{{ -1535,      0,   1536}, 0, { -1564,  -3098}, {0xc1, 0x59, 0xc1, 0xff}}},\n    {{{  -767,      0,   -767}, 0, {  -796,  -5398}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2815,      0,    256}, 0, { -2840,  -4376}, {0x28, 0x71, 0x28, 0xff}}},\n    {{{ -1791,      0,   -767}, 0, { -1818,  -5398}, {0x5c, 0x51, 0x1f, 0xff}}},\n    {{{ -1016,      0,  -2299}, 0, { -1044,  -6926}, {0xcc, 0x68, 0x30, 0xff}}},\n    {{{ -1872,      0,  -1441}, 0, { -1900,  -6070}, {0x62, 0x47, 0xdc, 0xff}}},\n    {{{ -1535,      0,  -3327}, 0, { -1564,  -7952}, {0xb0, 0x59, 0x28, 0xff}}},\n    {{{ -2559,      0,  -2815}, 0, { -2586,  -7442}, {0x32, 0x71, 0xe7, 0xff}}},\n    {{{ -4132,    513,  -6035}, 0, { -4184, -10640}, {0x60, 0x51, 0xf9, 0xff}}},\n    {{{ -3617,      1,  -5005}, 0, { -3682,  -9674}, {0x21, 0x7a, 0xfe, 0xff}}},\n    {{{ -2633,      0,  -5497}, 0, { -2686, -10174}, {0xd8, 0x6e, 0x2f, 0xff}}},\n    {{{ -2679,      0,  -5045}, 0, { -2704,  -9666}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{ -3251,      0,  -4759}, 0, { -3276,  -9382}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{ -3151,    512,  -6526}, 0, { -3176, -11146}, {0xb6, 0x26, 0x5f, 0xff}}},\n    {{{ -3445,      1,  -4662}, 0, { -3470,  -9284}, {0x65, 0x38, 0xce, 0xff}}},\n    {{{ -2458,      0,  -5155}, 0, { -2484,  -9776}, {0xb1, 0x59, 0x28, 0xff}}},\n};\n\n// 0x0700BE30 - 0x0700BF30\nstatic const Vtx bob_seg7_vertex_0700BE30[] = {\n    {{{ -2096,    922,  -4764}, 0, {  -796,   1404}, {0x3a, 0x6f, 0x14, 0xff}}},\n    {{{ -2240,   1024,  -4835}, 0, {  -882,   1498}, {0x4b, 0x66, 0xfc, 0xff}}},\n    {{{  -942,    922,  -2479}, 0, {   904,   1404}, {0x06, 0x6e, 0xc2, 0xff}}},\n    {{{  -970,   1024,  -2322}, 0, {   990,   1500}, {0x1a, 0x6a, 0xc0, 0xff}}},\n    {{{  -869,   1024,  -5528}, 0, {  -882,      0}, {0xe9, 0x66, 0x46, 0xff}}},\n    {{{ -1552,    717,  -4752}, 0, {  -626,    926}, {0x1d, 0x77, 0x20, 0xff}}},\n    {{{ -1210,    717,  -4925}, 0, {  -626,    542}, {0x07, 0x7a, 0x22, 0xff}}},\n    {{{ -1867,    819,  -4737}, 0, {  -712,   1212}, {0x2d, 0x76, 0x08, 0xff}}},\n    {{{  -828,    819,  -2680}, 0, {   820,   1212}, {0x13, 0x76, 0xd6, 0xff}}},\n    {{{  -286,    717,  -3097}, 0, {   734,    542}, {0xe1, 0x79, 0xea, 0xff}}},\n    {{{  -629,    717,  -2924}, 0, {   734,    926}, {0x00, 0x7a, 0xe0, 0xff}}},\n    {{{    28,    819,  -3113}, 0, {   820,    256}, {0xd2, 0x75, 0xf2, 0xff}}},\n    {{{   257,    922,  -3085}, 0, {   904,     64}, {0xbb, 0x6a, 0x01, 0xff}}},\n    {{{   400,   1024,  -3014}, 0, {   990,      0}, {0xbb, 0x60, 0x2b, 0xff}}},\n    {{{ -1010,    819,  -5170}, 0, {  -712,    256}, {0xf4, 0x76, 0x2c, 0xff}}},\n    {{{  -897,    922,  -5370}, 0, {  -796,     64}, {0xcd, 0x6b, 0x2c, 0xff}}},\n};\n\n// 0x0700BF30 - 0x0700BF90\nstatic const Vtx bob_seg7_vertex_0700BF30[] = {\n    {{{    54,   1024,  -3700}, 0, {   478,      0}, {0xc2, 0x33, 0x61, 0xff}}},\n    {{{  -869,   1024,  -5528}, 0, {  -882,      0}, {0xe9, 0x66, 0x46, 0xff}}},\n    {{{  -897,    922,  -5370}, 0, {  -796,     64}, {0xcd, 0x6b, 0x2c, 0xff}}},\n    {{{   257,    922,  -3085}, 0, {   904,     64}, {0xbb, 0x6a, 0x01, 0xff}}},\n    {{{   169,   1024,  -3471}, 0, {   650,      0}, {0x88, 0x25, 0xf1, 0xff}}},\n    {{{   400,   1024,  -3014}, 0, {   990,      0}, {0xbb, 0x60, 0x2b, 0xff}}},\n};\n\n// 0x0700BF90 - 0x0700C080\nstatic const Vtx bob_seg7_vertex_0700BF90[] = {\n    {{{   768,    717,   5888}, 0, {  -712,     36}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   768,    717,   5376}, 0, { -1392,     36}, {0xa4, 0x00, 0xa9, 0xff}}},\n    {{{   768,      0,   5376}, 0, { -1392,    990}, {0xbb, 0x60, 0xd5, 0xff}}},\n    {{{ -3071,      0,    512}, 0, {     0,    990}, {0x59, 0x49, 0x34, 0xff}}},\n    {{{ -2815,      0,    256}, 0, {   450,    990}, {0x28, 0x71, 0x28, 0xff}}},\n    {{{ -2815,    768,    256}, 0, {   450,    322}, {0x28, 0x00, 0x78, 0xff}}},\n    {{{ -3071,    768,    512}, 0, {   -30,    336}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{  -921,      0,   5888}, 0, {  -950,   1244}, {0x46, 0x69, 0x00, 0xff}}},\n    {{{   768,      0,   5376}, 0, {   734,    734}, {0xbb, 0x60, 0xd5, 0xff}}},\n    {{{  -921,      0,   5377}, 0, {  -950,    736}, {0x4c, 0x65, 0x00, 0xff}}},\n    {{{   768,      0,   5888}, 0, {   734,   1244}, {0xba, 0x69, 0x00, 0xff}}},\n    {{{  -921,      0,   5377}, 0, {  2012,    990}, {0x4c, 0x65, 0x00, 0xff}}},\n    {{{  -921,    205,   5888}, 0, {     0,    178}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -921,      0,   5888}, 0, {   -30,    994}, {0x46, 0x69, 0x00, 0xff}}},\n    {{{  -921,    205,   5376}, 0, {  2012,    172}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700C080 - 0x0700C170\nstatic const Vtx bob_seg7_vertex_0700C080[] = {\n    {{{ -1764,      0,  -3213}, 0, { -1792,  -7838}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2679,      0,  -5045}, 0, { -2704,  -9666}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{ -3251,      0,  -4759}, 0, { -3276,  -9382}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{   768,    717,   5888}, 0, {  -712,     36}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   768,      0,   5376}, 0, { -1392,    990}, {0xbb, 0x60, 0xd5, 0xff}}},\n    {{{   768,      0,   5888}, 0, {  -712,    990}, {0xba, 0x69, 0x00, 0xff}}},\n    {{{ -1791,    768,   1792}, 0, {   450,      0}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{ -1535,      0,   1536}, 0, {     0,    922}, {0xc1, 0x59, 0xc1, 0xff}}},\n    {{{ -1791,      0,   1792}, 0, {   450,    922}, {0xd6, 0x77, 0x00, 0xff}}},\n    {{{ -1535,    768,   1536}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1791,      0,   1792}, 0, { -1818,  -2842}, {0xd6, 0x77, 0x00, 0xff}}},\n    {{{ -2815,      0,    256}, 0, { -2840,  -4376}, {0x28, 0x71, 0x28, 0xff}}},\n    {{{ -3071,      0,    512}, 0, { -3096,  -4120}, {0x59, 0x49, 0x34, 0xff}}},\n    {{{ -1535,      0,   1536}, 0, { -1564,  -3098}, {0xc1, 0x59, 0xc1, 0xff}}},\n    {{{ -2336,      0,  -2926}, 0, { -2362,  -7552}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700C170 - 0x0700C250\nstatic const Vtx bob_seg7_vertex_0700C170[] = {\n    {{{  2851,   1613,  -1919}, 0, {   622,   1882}, {0xe1, 0x64, 0x46, 0xff}}},\n    {{{  2802,   1613,  -2653}, 0, {   540,    664}, {0x9c, 0x3d, 0x2f, 0xff}}},\n    {{{  2560,   1613,  -2737}, 0, {   138,    524}, {0x52, 0x46, 0x42, 0xff}}},\n    {{{  2560,   1612,  -2244}, 0, {   138,   1342}, {0x05, 0x5c, 0x56, 0xff}}},\n    {{{  2874,   1576,  -1794}, 0, {   660,   2090}, {0xd7, 0x76, 0x12, 0xff}}},\n    {{{   400,   1024,  -3014}, 0, { -3452,     62}, {0xbb, 0x60, 0x2b, 0xff}}},\n    {{{  2488,   1369,  -2138}, 0, {    18,   1518}, {0xc6, 0x69, 0x26, 0xff}}},\n    {{{  4147,   3072,  -2559}, 0, {  2778,    820}, {0xee, 0x7c, 0xee, 0xff}}},\n    {{{  5289,   3089,  -3327}, 0, {  4678,   -458}, {0x1b, 0x7a, 0xec, 0xff}}},\n    {{{  3072,   2945,  -2047}, 0, {   990,   1670}, {0xba, 0x68, 0x10, 0xff}}},\n    {{{   228,   2802,  -2532}, 0, {   348,   5972}, {0xb8, 0x66, 0x12, 0xff}}},\n    {{{  1328,   2918,  -2520}, 0, {  2178,   5992}, {0xfd, 0x7e, 0xf2, 0xff}}},\n    {{{   400,   2802,  -3014}, 0, {   634,   5170}, {0xc3, 0x6e, 0x00, 0xff}}},\n    {{{  1260,   2918,  -2327}, 0, {  2064,   6312}, {0xf4, 0x7d, 0x0d, 0xff}}},\n};\n\n// 0x0700C250 - 0x0700C350\nstatic const Vtx bob_seg7_vertex_0700C250[] = {\n    {{{  4352,   3072,  -2354}, 0, {  7208,   6268}, {0x03, 0x7d, 0x11, 0xff}}},\n    {{{  4147,   3072,  -2354}, 0, {  6866,   6268}, {0xf7, 0x7e, 0x09, 0xff}}},\n    {{{  3328,   2944,  -1603}, 0, {  5504,   7518}, {0xf5, 0x69, 0x46, 0xff}}},\n    {{{  1260,   2918,  -2327}, 0, {  2064,   6312}, {0xf4, 0x7d, 0x0d, 0xff}}},\n    {{{   228,   2802,  -2532}, 0, {   348,   5972}, {0xb8, 0x66, 0x12, 0xff}}},\n    {{{  2388,   2917,  -1762}, 0, {  3940,   7254}, {0x1a, 0x64, 0x49, 0xff}}},\n    {{{  1452,   2918,  -2259}, 0, {  2384,   6428}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  2560,   2917,  -2244}, 0, {  4226,   6452}, {0x2a, 0x70, 0x2a, 0xff}}},\n    {{{   400,   2802,  -3014}, 0, {   634,   5170}, {0xc3, 0x6e, 0x00, 0xff}}},\n    {{{  1328,   2918,  -2520}, 0, {  2178,   5992}, {0xfd, 0x7e, 0xf2, 0xff}}},\n    {{{  1521,   2918,  -2452}, 0, {  2498,   6106}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  4147,   3072,  -2559}, 0, {  6866,   5928}, {0xee, 0x7c, 0xee, 0xff}}},\n    {{{  3072,   2945,  -2047}, 0, {  5078,   6780}, {0xba, 0x68, 0x10, 0xff}}},\n    {{{  3072,   4293,  -6655}, 0, {  5078,   -884}, {0x01, 0x7e, 0xff, 0xff}}},\n    {{{  4402,   4294,  -5375}, 0, {  7290,   1244}, {0x16, 0x7c, 0x00, 0xff}}},\n    {{{  4846,   4242,  -5631}, 0, {  8028,    820}, {0x4c, 0x60, 0xe2, 0xff}}},\n};\n\n// 0x0700C350 - 0x0700C440\nstatic const Vtx bob_seg7_vertex_0700C350[] = {\n    {{{  4147,   3072,  -2559}, 0, {  6866,   5928}, {0xee, 0x7c, 0xee, 0xff}}},\n    {{{  4352,   3072,  -2559}, 0, {  7208,   5928}, {0xff, 0x7e, 0x01, 0xff}}},\n    {{{  5289,   3089,  -3327}, 0, {  8766,   4650}, {0x1b, 0x7a, 0xec, 0xff}}},\n    {{{  4352,   3072,  -2354}, 0, {  7208,   6268}, {0x03, 0x7d, 0x11, 0xff}}},\n    {{{  5543,   3089,  -2883}, 0, {  9188,   5390}, {0x64, 0x43, 0x26, 0xff}}},\n    {{{  3328,   2944,  -1603}, 0, {  5504,   7518}, {0xf5, 0x69, 0x46, 0xff}}},\n    {{{  3072,   4293,  -6655}, 0, {  5078,   -884}, {0x01, 0x7e, 0xff, 0xff}}},\n    {{{  1298,   4293,  -5631}, 0, {  2128,    820}, {0xb2, 0x16, 0x9f, 0xff}}},\n    {{{  1298,   4293,  -3583}, 0, {  2128,   4224}, {0xaa, 0x43, 0x40, 0xff}}},\n    {{{  3072,   4293,  -3071}, 0, {  5078,   5076}, {0x0a, 0x5d, 0x55, 0xff}}},\n    {{{  4402,   4294,  -3839}, 0, {  7290,   3798}, {0x3a, 0x5f, 0x3c, 0xff}}},\n    {{{  4402,   4294,  -5375}, 0, {  7290,   1244}, {0x16, 0x7c, 0x00, 0xff}}},\n    {{{  5732,   3233,  -6143}, 0, {  9504,      0}, {0x44, 0x6a, 0x08, 0xff}}},\n    {{{  3072,   3666,  -7679}, 0, {  5078,  -2586}, {0xcf, 0x3a, 0x9b, 0xff}}},\n    {{{  3072,   3666,  -7167}, 0, {  5078,  -1736}, {0xed, 0x7d, 0x0a, 0xff}}},\n};\n\n// 0x0700C440 - 0x0700C4A0\nstatic const Vtx bob_seg7_vertex_0700C440[] = {\n    {{{   868,   3954,  -3302}, 0, {  1412,   4692}, {0xb3, 0x4f, 0x3d, 0xff}}},\n    {{{   851,   3818,  -5894}, 0, {  1384,    382}, {0xdd, 0x48, 0x9e, 0xff}}},\n    {{{  -181,   3818,  -5302}, 0, {  -332,   1364}, {0x9c, 0x46, 0xe0, 0xff}}},\n    {{{  5289,   3233,  -5887}, 0, {  8766,    394}, {0x28, 0x5f, 0x49, 0xff}}},\n    {{{  5732,   3233,  -6143}, 0, {  9504,      0}, {0x44, 0x6a, 0x08, 0xff}}},\n    {{{  3072,   3666,  -7167}, 0, {  5078,  -1736}, {0xed, 0x7d, 0x0a, 0xff}}},\n};\n\n// 0x0700C4A0 - 0x0700C5A0\nstatic const Vtx bob_seg7_vertex_0700C4A0[] = {\n    {{{  6131,   1885,  -2767}, 0, {   740,  -6022}, {0xeb, 0x7c, 0xf5, 0xff}}},\n    {{{  3037,   1669,   -904}, 0, {   736,   1200}, {0xed, 0x7a, 0xe6, 0xff}}},\n    {{{  3060,   1741,   -780}, 0, {   990,   1280}, {0xec, 0x71, 0xcb, 0xff}}},\n    {{{  3072,   2513,  -7167}, 0, {     0,    990}, {0xf5, 0x3d, 0x92, 0xff}}},\n    {{{  3072,   2462,  -7295}, 0, {   188,   1118}, {0x0c, 0x7d, 0xf2, 0xff}}},\n    {{{  -353,   2606,  -5359}, 0, {   234,  -6740}, {0xf0, 0x7d, 0xf5, 0xff}}},\n    {{{  -181,   2658,  -5302}, 0, {     0,  -6502}, {0xa4, 0x20, 0xb0, 0xff}}},\n    {{{  3072,   2462,  -7551}, 0, {   770,    870}, {0x08, 0x7c, 0x19, 0xff}}},\n    {{{  3072,   2513,  -7679}, 0, {   990,    990}, {0xfd, 0x7e, 0x06, 0xff}}},\n    {{{  -697,   2606,  -5472}, 0, {   730,  -7728}, {0x11, 0x7d, 0x05, 0xff}}},\n    {{{  -353,   2606,  -5359}, 0, {   204,  -7232}, {0xf0, 0x7d, 0xf5, 0xff}}},\n    {{{  3072,   2462,  -7295}, 0, {   322,    626}, {0x0c, 0x7d, 0xf2, 0xff}}},\n    {{{  -869,   2657,  -5528}, 0, {   990,  -7978}, {0xea, 0x7a, 0xe6, 0xff}}},\n    {{{   167,   2709,  -3757}, 0, {   750,  -2070}, {0x38, 0x67, 0x2f, 0xff}}},\n    {{{  -697,   2606,  -5472}, 0, {   722,   1766}, {0x11, 0x7d, 0x05, 0xff}}},\n    {{{  -869,   2657,  -5528}, 0, {   982,   2018}, {0xea, 0x7a, 0xe6, 0xff}}},\n};\n\n// 0x0700C5A0 - 0x0700C690\nstatic const Vtx bob_seg7_vertex_0700C5A0[] = {\n    {{{  2079,   1368,  -1535}, 0, {   990,    976}, {0xe7, 0x7c, 0x00, 0xff}}},\n    {{{  3060,   1741,   -780}, 0, {   990,   -542}, {0xec, 0x71, 0xcb, 0xff}}},\n    {{{  3037,   1669,   -904}, 0, {   892,   -414}, {0xed, 0x7a, 0xe6, 0xff}}},\n    {{{  2874,   1576,  -1794}, 0, {   178,    374}, {0xd7, 0x76, 0x12, 0xff}}},\n    {{{  -353,   2606,  -5359}, 0, {   216,   1250}, {0xf0, 0x7d, 0xf5, 0xff}}},\n    {{{   533,   2755,  -3942}, 0, {   -46,  -2084}, {0xae, 0x3f, 0x48, 0xff}}},\n    {{{  -181,   2658,  -5302}, 0, {     0,    990}, {0xa4, 0x20, 0xb0, 0xff}}},\n    {{{   419,   2706,  -3884}, 0, {   204,  -2076}, {0x15, 0x6b, 0x40, 0xff}}},\n    {{{  -697,   2606,  -5472}, 0, {   722,   1766}, {0x11, 0x7d, 0x05, 0xff}}},\n    {{{   167,   2709,  -3757}, 0, {   750,  -2070}, {0x38, 0x67, 0x2f, 0xff}}},\n    {{{   517,   2750,  -3086}, 0, {   742,  -2258}, {0x0c, 0x7c, 0xeb, 0xff}}},\n    {{{   169,   2775,  -3471}, 0, {  1016,  -1262}, {0xd5, 0x6c, 0xcf, 0xff}}},\n    {{{   400,   2802,  -3014}, 0, {  1018,  -2284}, {0xc3, 0x6e, 0x00, 0xff}}},\n    {{{  -869,   2657,  -5528}, 0, {   982,   2018}, {0xea, 0x7a, 0xe6, 0xff}}},\n    {{{    54,   2762,  -3700}, 0, {  1022,  -2074}, {0xc3, 0x38, 0x5f, 0xff}}},\n};\n\n// 0x0700C690 - 0x0700C790\nstatic const Vtx bob_seg7_vertex_0700C690[] = {\n    {{{   751,   2750,  -3230}, 0, {   194,  -2212}, {0xeb, 0x7c, 0x0e, 0xff}}},\n    {{{   868,   2801,  -3302}, 0, {   -74,  -2196}, {0xbb, 0x4a, 0x4b, 0xff}}},\n    {{{   652,   2772,  -3715}, 0, {   -60,  -1262}, {0x93, 0x3a, 0x1a, 0xff}}},\n    {{{   537,   2721,  -3657}, 0, {   204,  -1258}, {0xc8, 0x54, 0xb4, 0xff}}},\n    {{{   286,   2723,  -3530}, 0, {   742,  -1256}, {0xea, 0x65, 0xb8, 0xff}}},\n    {{{   517,   2750,  -3086}, 0, {   742,  -2258}, {0x0c, 0x7c, 0xeb, 0xff}}},\n    {{{   169,   2775,  -3471}, 0, {  1016,  -1262}, {0xd5, 0x6c, 0xcf, 0xff}}},\n    {{{  4956,   3038,  -3519}, 0, {   232,  -4272}, {0x12, 0x7c, 0x0e, 0xff}}},\n    {{{  4846,   3089,  -3583}, 0, {     0,  -4120}, {0x59, 0x41, 0x3e, 0xff}}},\n    {{{  3072,   2894,  -2431}, 0, {   232,    904}, {0xb3, 0x60, 0x1a, 0xff}}},\n    {{{  4402,   4294,  -3839}, 0, {     0,    990}, {0x3a, 0x5f, 0x3c, 0xff}}},\n    {{{  4513,   4190,  -3775}, 0, {   228,   1138}, {0x16, 0x7b, 0x15, 0xff}}},\n    {{{  4402,   4294,  -5375}, 0, {     0,  -2618}, {0x16, 0x7c, 0x00, 0xff}}},\n    {{{  4735,   4190,  -3647}, 0, {   748,   1438}, {0xed, 0x7c, 0xf6, 0xff}}},\n    {{{  4846,   4242,  -5631}, 0, {  1010,  -3218}, {0x4c, 0x60, 0xe2, 0xff}}},\n    {{{  4846,   4242,  -3583}, 0, {  1010,   1590}, {0x32, 0x6f, 0x22, 0xff}}},\n};\n\n// 0x0700C790 - 0x0700C870\nstatic const Vtx bob_seg7_vertex_0700C790[] = {\n    {{{  2079,   1368,  -1535}, 0, {   990,  -1700}, {0xe7, 0x7c, 0x00, 0xff}}},\n    {{{   400,   1024,  -3014}, 0, {   -48,    306}, {0xbb, 0x60, 0x2b, 0xff}}},\n    {{{ -1016,   1024,  -2299}, 0, {   990,   1500}, {0xb4, 0x3e, 0x50, 0xff}}},\n    {{{  2079,   1368,  -1535}, 0, {   990,    976}, {0xe7, 0x7c, 0x00, 0xff}}},\n    {{{  2874,   1576,  -1794}, 0, {   178,    374}, {0xd7, 0x76, 0x12, 0xff}}},\n    {{{  2488,   1369,  -2138}, 0, {   -14,   1030}, {0xc6, 0x69, 0x26, 0xff}}},\n    {{{  4956,   3038,  -3519}, 0, {   232,  -4272}, {0x12, 0x7c, 0x0e, 0xff}}},\n    {{{  3072,   2894,  -2431}, 0, {   232,    904}, {0xb3, 0x60, 0x1a, 0xff}}},\n    {{{  3072,   2894,  -2175}, 0, {   758,   1206}, {0xb6, 0x66, 0xf5, 0xff}}},\n    {{{  4846,   3089,  -3583}, 0, {     0,  -4120}, {0x59, 0x41, 0x3e, 0xff}}},\n    {{{  3072,   2945,  -2559}, 0, {     0,    752}, {0xdb, 0x1f, 0x75, 0xff}}},\n    {{{  3072,   2945,  -2047}, 0, {  1020,   1358}, {0xba, 0x68, 0x10, 0xff}}},\n    {{{  5178,   3038,  -3391}, 0, {   758,  -4576}, {0xeb, 0x7c, 0xf7, 0xff}}},\n    {{{  5289,   3089,  -3327}, 0, {  1022,  -4728}, {0x1b, 0x7a, 0xec, 0xff}}},\n};\n\n// 0x0700C870 - 0x0700C950\nstatic const Vtx bob_seg7_vertex_0700C870[] = {\n    {{{  4956,   3182,  -5695}, 0, {   200,  -4642}, {0x1c, 0x7b, 0xfd, 0xff}}},\n    {{{  4846,   3233,  -5631}, 0, {   -62,  -4490}, {0x58, 0x4c, 0xcf, 0xff}}},\n    {{{  4956,   3038,  -3519}, 0, {   200,    534}, {0x12, 0x7c, 0x0e, 0xff}}},\n    {{{  5178,   3182,  -5823}, 0, {   726,  -4946}, {0xf3, 0x7c, 0x12, 0xff}}},\n    {{{  5178,   3038,  -3391}, 0, {   726,    838}, {0xeb, 0x7c, 0xf7, 0xff}}},\n    {{{  5289,   3233,  -5887}, 0, {   990,    990}, {0x28, 0x5f, 0x49, 0xff}}},\n    {{{  3072,   3666,  -7167}, 0, {   990,  -5132}, {0xed, 0x7d, 0x0a, 0xff}}},\n    {{{  3072,   3614,  -7039}, 0, {   726,  -4980}, {0x09, 0x7b, 0x19, 0xff}}},\n    {{{  4846,   3089,  -3583}, 0, {   -60,    382}, {0x59, 0x41, 0x3e, 0xff}}},\n    {{{  5289,   3089,  -3327}, 0, {   990,    990}, {0x1b, 0x7a, 0xec, 0xff}}},\n    {{{  5289,   3233,  -5887}, 0, {   990,  -5098}, {0x28, 0x5f, 0x49, 0xff}}},\n    {{{  5178,   3182,  -5823}, 0, {   728,    838}, {0xf3, 0x7c, 0x12, 0xff}}},\n    {{{  4956,   3182,  -5695}, 0, {   204,    536}, {0x1c, 0x7b, 0xfd, 0xff}}},\n    {{{  3072,   3614,  -6783}, 0, {   198,  -4678}, {0x0a, 0x7c, 0xeb, 0xff}}},\n};\n\n// 0x0700C950 - 0x0700CA40\nstatic const Vtx bob_seg7_vertex_0700C950[] = {\n    {{{  1188,   3902,  -3519}, 0, {   232,  -4034}, {0xee, 0x7d, 0x03, 0xff}}},\n    {{{  1298,   3954,  -3583}, 0, {     0,  -3882}, {0xbd, 0x62, 0x2b, 0xff}}},\n    {{{  1188,   3758,  -5695}, 0, {   232,   1140}, {0xed, 0x7c, 0xf2, 0xff}}},\n    {{{  4956,   3182,  -5695}, 0, {   204,    536}, {0x1c, 0x7b, 0xfd, 0xff}}},\n    {{{  3072,   3614,  -6783}, 0, {   198,  -4678}, {0x0a, 0x7c, 0xeb, 0xff}}},\n    {{{  3072,   3666,  -6655}, 0, {   -64,  -4528}, {0x02, 0x4d, 0x9c, 0xff}}},\n    {{{  4846,   3233,  -5631}, 0, {   -56,    386}, {0x58, 0x4c, 0xcf, 0xff}}},\n    {{{  3072,   3614,  -7039}, 0, {   758,   1444}, {0x09, 0x7b, 0x19, 0xff}}},\n    {{{  3072,   3666,  -7167}, 0, {  1020,   1596}, {0xed, 0x7d, 0x0a, 0xff}}},\n    {{{   966,   3758,  -5823}, 0, {   758,  -4338}, {0x17, 0x7c, 0x0a, 0xff}}},\n    {{{  1188,   3758,  -5695}, 0, {   232,  -4034}, {0xed, 0x7c, 0xf2, 0xff}}},\n    {{{  3072,   3614,  -6783}, 0, {   232,   1140}, {0x0a, 0x7c, 0xeb, 0xff}}},\n    {{{   851,   3818,  -5894}, 0, {  1022,  -4490}, {0xdd, 0x48, 0x9e, 0xff}}},\n    {{{  1298,   3810,  -5631}, 0, {     0,  -3882}, {0xa9, 0x38, 0xb8, 0xff}}},\n    {{{  3072,   3666,  -6655}, 0, {     0,    990}, {0x02, 0x4d, 0x9c, 0xff}}},\n};\n\n// 0x0700CA40 - 0x0700CB20\nstatic const Vtx bob_seg7_vertex_0700CA40[] = {\n    {{{  3072,   4046,  -2687}, 0, {   702,  -4490}, {0xf9, 0x7c, 0xe9, 0xff}}},\n    {{{  3072,   4046,  -2943}, 0, {   128,  -4292}, {0xfc, 0x7a, 0x20, 0xff}}},\n    {{{   966,   3902,  -3391}, 0, {   760,    792}, {0x12, 0x7c, 0xf2, 0xff}}},\n    {{{   966,   3902,  -3391}, 0, {   758,  -4338}, {0x12, 0x7c, 0xf2, 0xff}}},\n    {{{  1188,   3902,  -3519}, 0, {   232,  -4034}, {0xee, 0x7d, 0x03, 0xff}}},\n    {{{   966,   3758,  -5823}, 0, {   758,   1444}, {0x17, 0x7c, 0x0a, 0xff}}},\n    {{{  1298,   3954,  -3583}, 0, {     0,  -3882}, {0xbd, 0x62, 0x2b, 0xff}}},\n    {{{  1298,   3810,  -5631}, 0, {     0,    990}, {0xa9, 0x38, 0xb8, 0xff}}},\n    {{{  1188,   3758,  -5695}, 0, {   232,   1140}, {0xed, 0x7c, 0xf2, 0xff}}},\n    {{{   851,   3818,  -5894}, 0, {  1020,   1596}, {0xdd, 0x48, 0x9e, 0xff}}},\n    {{{   868,   3954,  -3302}, 0, {  1022,  -4490}, {0xb3, 0x4f, 0x3d, 0xff}}},\n    {{{  1298,   3954,  -3583}, 0, {    70,    194}, {0xbd, 0x62, 0x2b, 0xff}}},\n    {{{  1188,   3902,  -3519}, 0, {   300,    394}, {0xee, 0x7d, 0x03, 0xff}}},\n    {{{  3072,   4097,  -3071}, 0, {  -158,  -4192}, {0x09, 0x31, 0x74, 0xff}}},\n};\n\n// 0x0700CB20 - 0x0700CC10\nstatic const Vtx bob_seg7_vertex_0700CB20[] = {\n    {{{  6131,   2029,  -6447}, 0, {   728,   1858}, {0xf5, 0x7d, 0x10, 0xff}}},\n    {{{  6265,   2080,  -6527}, 0, {   990,   2010}, {0xef, 0x77, 0x26, 0xff}}},\n    {{{  3072,   2462,  -7551}, 0, {   726,  -5168}, {0x08, 0x7c, 0x19, 0xff}}},\n    {{{   868,   3954,  -3302}, 0, {   990,    990}, {0xb3, 0x4f, 0x3d, 0xff}}},\n    {{{  3072,   4046,  -2687}, 0, {   702,  -4490}, {0xf9, 0x7c, 0xe9, 0xff}}},\n    {{{   966,   3902,  -3391}, 0, {   760,    792}, {0x12, 0x7c, 0xf2, 0xff}}},\n    {{{  3072,   4097,  -2559}, 0, {   990,  -4590}, {0xfd, 0x5c, 0x57, 0xff}}},\n    {{{  4513,   4190,  -3775}, 0, {   232,  -3250}, {0x16, 0x7b, 0x15, 0xff}}},\n    {{{  4402,   4293,  -3839}, 0, {     0,  -3098}, {0x2a, 0x4e, 0x5a, 0xff}}},\n    {{{  3072,   4046,  -2943}, 0, {   232,    710}, {0xfc, 0x7a, 0x20, 0xff}}},\n    {{{  3072,   4046,  -2687}, 0, {   758,   1012}, {0xf9, 0x7c, 0xe9, 0xff}}},\n    {{{  4735,   4190,  -3647}, 0, {   758,  -3554}, {0xed, 0x7c, 0xf6, 0xff}}},\n    {{{  3072,   4097,  -3071}, 0, {     0,    560}, {0x09, 0x31, 0x74, 0xff}}},\n    {{{  3072,   4097,  -2559}, 0, {  1022,   1164}, {0xfd, 0x5c, 0x57, 0xff}}},\n    {{{  4846,   4242,  -3583}, 0, {  1022,  -3706}, {0x32, 0x6f, 0x22, 0xff}}},\n};\n\n// 0x0700CC10 - 0x0700CD00\nstatic const Vtx bob_seg7_vertex_0700CC10[] = {\n    {{{  5400,   1885,  -3263}, 0, {   222,   1134}, {0x0e, 0x7d, 0x10, 0xff}}},\n    {{{  5400,   2029,  -5951}, 0, {   222,  -5030}, {0x1a, 0x7c, 0xfb, 0xff}}},\n    {{{  5289,   2080,  -5887}, 0, {     0,  -4884}, {0x63, 0x4a, 0xe6, 0xff}}},\n    {{{  6265,   2080,  -6527}, 0, {   990,   2010}, {0xef, 0x77, 0x26, 0xff}}},\n    {{{  3072,   2513,  -7679}, 0, {   990,  -5320}, {0xfd, 0x7e, 0x06, 0xff}}},\n    {{{  3072,   2462,  -7551}, 0, {   726,  -5168}, {0x08, 0x7c, 0x19, 0xff}}},\n    {{{  5400,   2029,  -5951}, 0, {   204,   1556}, {0x1a, 0x7c, 0xfb, 0xff}}},\n    {{{  3072,   2462,  -7295}, 0, {   198,  -4866}, {0x0c, 0x7d, 0xf2, 0xff}}},\n    {{{  3072,   2513,  -7167}, 0, {   -64,  -4714}, {0xf5, 0x3d, 0x92, 0xff}}},\n    {{{  5289,   2080,  -5887}, 0, {   -58,   1404}, {0x63, 0x4a, 0xe6, 0xff}}},\n    {{{  6265,   2080,  -6527}, 0, {   986,  -5470}, {0xef, 0x77, 0x26, 0xff}}},\n    {{{  6131,   2029,  -6447}, 0, {   730,  -5324}, {0xf5, 0x7d, 0x10, 0xff}}},\n    {{{  6252,   1936,  -2700}, 0, {   986,   1576}, {0xd7, 0x77, 0xf7, 0xff}}},\n    {{{  6131,   1885,  -2767}, 0, {   730,   1428}, {0xeb, 0x7c, 0xf5, 0xff}}},\n    {{{  5289,   1936,  -3327}, 0, {     0,    990}, {0x55, 0x4b, 0x39, 0xff}}},\n};\n\n// 0x0700CD00 - 0x0700CE00\nstatic const Vtx bob_seg7_vertex_0700CD00[] = {\n    {{{  5400,   1885,  -3263}, 0, {   828,   1104}, {0x0e, 0x7d, 0x10, 0xff}}},\n    {{{  5289,   1936,  -3327}, 0, {   990,    990}, {0x55, 0x4b, 0x39, 0xff}}},\n    {{{  2851,   1613,  -1919}, 0, {   992,  -4666}, {0xe1, 0x64, 0x46, 0xff}}},\n    {{{  2874,   1576,  -1794}, 0, {   828,  -4760}, {0xd7, 0x76, 0x12, 0xff}}},\n    {{{  6131,   1885,  -2767}, 0, {   740,  -6022}, {0xeb, 0x7c, 0xf5, 0xff}}},\n    {{{  3060,   1741,   -780}, 0, {   990,   1280}, {0xec, 0x71, 0xcb, 0xff}}},\n    {{{  6252,   1936,  -2700}, 0, {   990,  -6164}, {0xd7, 0x77, 0xf7, 0xff}}},\n    {{{  2079,   1368,  -1535}, 0, {  1028,  -1628}, {0xe7, 0x7c, 0x00, 0xff}}},\n    {{{  2488,   1369,  -2138}, 0, {    32,  -1888}, {0xc6, 0x69, 0x26, 0xff}}},\n    {{{   400,   1024,  -3014}, 0, {     0,    990}, {0xbb, 0x60, 0x2b, 0xff}}},\n    {{{  2560,   2912,  -2736}, 0, {   -58,  -3234}, {0xf0, 0x2f, 0x74, 0xff}}},\n    {{{   868,   2801,  -3302}, 0, {    18,    818}, {0xbb, 0x4a, 0x4b, 0xff}}},\n    {{{   751,   2750,  -3230}, 0, {   256,   1018}, {0xeb, 0x7c, 0x0e, 0xff}}},\n    {{{  2560,   2862,  -2613}, 0, {   198,  -3322}, {0x40, 0x6c, 0x0b, 0xff}}},\n    {{{   517,   2750,  -3086}, 0, {   742,   1408}, {0x0c, 0x7c, 0xeb, 0xff}}},\n    {{{  2560,   2864,  -2367}, 0, {   722,  -3510}, {0x5d, 0x52, 0xe7, 0xff}}},\n};\n\n// 0x0700CE00 - 0x0700CE40\nstatic const Vtx bob_seg7_vertex_0700CE00[] = {\n    {{{   400,   2802,  -3014}, 0, {   990,   1598}, {0xc3, 0x6e, 0x00, 0xff}}},\n    {{{  2560,   2917,  -2244}, 0, {   990,  -3608}, {0x2a, 0x70, 0x2a, 0xff}}},\n    {{{  2560,   2864,  -2367}, 0, {   722,  -3510}, {0x5d, 0x52, 0xe7, 0xff}}},\n    {{{   517,   2750,  -3086}, 0, {   742,   1408}, {0x0c, 0x7c, 0xeb, 0xff}}},\n};\n\n// 0x0700CE40 - 0x0700CEC0\nstatic const Vtx bob_seg7_vertex_0700CE40[] = {\n    {{{  1782,    666,   4659}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1782,    768,   4557}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1782,    666,   4557}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1782,    768,   4659}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1782,    179,   4557}, 0, {     0,  10186}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1782,    282,   4659}, 0, {   990,   9164}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1782,    282,   4557}, 0, {     0,   9164}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1782,    179,   4659}, 0, {   990,  10186}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700CEC0 - 0x0700CF80\nstatic const Vtx bob_seg7_vertex_0700CEC0[] = {\n    {{{  5400,   2029,  -5951}, 0, {  -426,    -38}, {0x1a, 0x7c, 0xfb, 0xff}}},\n    {{{  6131,   2029,  -6447}, 0, {   990,    990}, {0xf5, 0x7d, 0x10, 0xff}}},\n    {{{  3072,   2462,  -7295}, 0, {   508,  -5388}, {0x0c, 0x7d, 0xf2, 0xff}}},\n    {{{  3072,   2462,  -7551}, 0, {   990,  -5560}, {0x08, 0x7c, 0x19, 0xff}}},\n    {{{  5400,   1885,  -3263}, 0, {  -466,      0}, {0x0e, 0x7d, 0x10, 0xff}}},\n    {{{  6131,   1885,  -2767}, 0, {   990,    990}, {0xeb, 0x7c, 0xf5, 0xff}}},\n    {{{  5400,   2029,  -5951}, 0, {  -468,  -5372}, {0x1a, 0x7c, 0xfb, 0xff}}},\n    {{{  6131,   2029,  -6447}, 0, {   990,  -6362}, {0xf5, 0x7d, 0x10, 0xff}}},\n    {{{  6131,   1885,  -2767}, 0, {  -512,  -5762}, {0xeb, 0x7c, 0xf5, 0xff}}},\n    {{{  5400,   1885,  -3263}, 0, { -1750,  -4506}, {0x0e, 0x7d, 0x10, 0xff}}},\n    {{{  3037,   1669,   -904}, 0, {  2280,    990}, {0xed, 0x7a, 0xe6, 0xff}}},\n    {{{  2874,   1576,  -1794}, 0, {  1124,    990}, {0xd7, 0x76, 0x12, 0xff}}},\n};\n\n// 0x0700CF80 - 0x0700CFC0\nstatic const Vtx bob_seg7_vertex_0700CF80[] = {\n    {{{  1782,    282,   4659}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1782,    666,   4557}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1782,    282,   4557}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1782,    666,   4659}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700CFC0 - 0x0700D7D8\nstatic const Gfx bob_seg7_dl_0700CFC0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09009000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bob_seg7_lights_0700A9E0.l, 1),\n    gsSPLight(&bob_seg7_lights_0700A9E0.a, 2),\n    gsSPVertex(bob_seg7_vertex_0700AA10, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 13, 10, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700AAF0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6,  8, 0x0),\n    gsSP2Triangles( 8,  7, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 9,  8, 11, 0x0,  6, 12,  7, 0x0),\n    gsSP2Triangles(10, 13, 14, 0x0, 11, 10, 14, 0x0),\n    gsSP2Triangles( 9, 11, 14, 0x0,  9, 15,  6, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700ABF0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles( 2,  5,  6, 0x0,  2,  6,  3, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  3,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 11, 12,  9, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700ACF0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 4,  7,  8, 0x0,  5,  9, 10, 0x0),\n    gsSP2Triangles(11,  5, 10, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle( 7, 15,  8, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700ADF0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700AED0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700AFC0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  5,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700B0C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(12, 10, 14, 0x0, 12,  7, 10, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700B1B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  2,  5,  4, 0x0),\n    gsSP2Triangles( 5,  6,  4, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 3,  4,  8, 0x0,  7,  1,  0, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 12,  7,  0, 0x0),\n    gsSP2Triangles( 7, 13, 14, 0x0,  7,  6, 13, 0x0),\n    gsSP2Triangles( 7, 14,  1, 0x0, 15, 12,  0, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700B2B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  3, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 3,  2,  9, 0x0,  2, 10,  9, 0x0),\n    gsSP2Triangles(10, 11,  9, 0x0, 11, 10, 12, 0x0),\n    gsSP2Triangles(13, 10, 14, 0x0, 10, 15, 12, 0x0),\n    gsSP1Triangle(10, 13, 15, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700B3B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  1, 0x0,  5,  2,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0,  8, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700B4B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 6,  5,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700B5A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 6,  5,  8, 0x0,  5,  9,  8, 0x0),\n    gsSP2Triangles( 5,  7, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 11, 15, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700B6A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 5,  6,  0, 0x0,  5,  0,  2, 0x0),\n    gsSP2Triangles( 0,  6,  7, 0x0,  1,  0,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700B790, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700B890, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700B970, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  3,  2, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9,  5, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles( 6, 13, 14, 0x0,  6, 15,  7, 0x0),\n    gsSP1Triangle(15,  6, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700BA70, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6,  8, 0x0),\n    gsSP2Triangles(10,  9,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700BB50, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700BC50, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  1, 11,  4, 0x0),\n    gsSP2Triangles(12,  5,  7, 0x0,  0,  3, 13, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700BD30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  4,  5,  3, 0x0),\n    gsSP2Triangles( 6,  7,  4, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles( 9, 12, 11, 0x0, 13,  8, 10, 0x0),\n    gsSP2Triangles( 9, 14, 12, 0x0, 11, 15, 10, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700BE30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  1,  0, 0x0,  4,  5,  6, 0x0),\n    gsSP2Triangles( 7,  0,  2, 0x0,  7,  2,  8, 0x0),\n    gsSP2Triangles( 2,  9, 10, 0x0,  2, 10,  8, 0x0),\n    gsSP2Triangles( 2, 11,  9, 0x0,  2, 12, 11, 0x0),\n    gsSP2Triangles( 2, 13, 12, 0x0,  2,  3, 13, 0x0),\n    gsSP2Triangles( 4,  0,  7, 0x0,  7,  8, 10, 0x0),\n    gsSP2Triangles( 5,  7, 10, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 6, 10,  9, 0x0,  6,  5, 10, 0x0),\n    gsSP2Triangles(14,  6,  9, 0x0,  4,  6, 14, 0x0),\n    gsSP2Triangles(14,  9, 11, 0x0,  4, 14, 15, 0x0),\n    gsSP2Triangles(15, 14, 11, 0x0, 15, 11, 12, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700BF30, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  0,  3, 0x0,  4,  3,  5, 0x0),\n    gsSPLight(&bob_seg7_lights_0700A9F8.l, 1),\n    gsSPLight(&bob_seg7_lights_0700A9F8.a, 2),\n    gsSPVertex(bob_seg7_vertex_0700BF90, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700C080, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700D7D8 - 0x0700D910\nstatic const Gfx bob_seg7_dl_0700D7D8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bob_seg7_lights_0700A9E0.l, 1),\n    gsSPLight(&bob_seg7_lights_0700A9E0.a, 2),\n    gsSPVertex(bob_seg7_vertex_0700C170, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  5,  6,  3, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700C250, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0, 10,  5,  7, 0x0),\n    gsSP2Triangles(10,  6,  5, 0x0,  1, 11, 12, 0x0),\n    gsSP2Triangles( 2,  1, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700C350, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  2,  3, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9, 10, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0,  6, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700C440, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700D910 - 0x0700DC40\nstatic const Gfx bob_seg7_dl_0700D910[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09009800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bob_seg7_vertex_0700C4A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11,  7, 10, 0x0),\n    gsSP2Triangles( 8, 12,  9, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700C5A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 7,  4,  8, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  9, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700C690, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  0,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 13, 14, 0x0),\n    gsSP2Triangles(12, 11, 13, 0x0, 15, 14, 13, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700C790, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10,  7, 0x0),\n    gsSP2Triangles(11, 12,  8, 0x0, 12,  6,  8, 0x0),\n    gsSP1Triangle(11, 13, 12, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700C870, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 1,  8,  2, 0x0,  9,  3,  4, 0x0),\n    gsSP2Triangles( 9, 10,  3, 0x0, 11,  5,  7, 0x0),\n    gsSP2Triangles(12, 11, 13, 0x0, 11,  7, 13, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700C950, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11,  7, 10, 0x0),\n    gsSP2Triangles( 8, 12,  9, 0x0, 13, 11, 10, 0x0),\n    gsSP1Triangle(13, 14, 11, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700CA40, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  4,  8,  5, 0x0),\n    gsSP2Triangles( 3,  5,  9, 0x0, 10,  3,  9, 0x0),\n    gsSP2Triangles( 1, 11, 12, 0x0,  1, 13, 11, 0x0),\n    gsSP1Triangle( 1, 12,  2, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700CB20, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11,  7, 10, 0x0),\n    gsSP2Triangles( 8, 12,  9, 0x0, 13, 11, 10, 0x0),\n    gsSP1Triangle(13, 14, 11, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700CC10, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSP1Triangle(14,  0,  2, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700CD00, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP2Triangles(13, 12, 14, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700CE00, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700DC40 - 0x0700DC88\nstatic const Gfx bob_seg7_dl_0700DC40[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bob_seg7_texture_07002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bob_seg7_vertex_0700CE40, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700DC88 - 0x0700DCE0\nstatic const Gfx bob_seg7_dl_0700DC88[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_0900A000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bob_seg7_vertex_0700CEC0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700DCE0 - 0x0700DD18\nstatic const Gfx bob_seg7_dl_0700DCE0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09006000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bob_seg7_vertex_0700CF80, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700DD18 - 0x0700DE30\nconst Gfx bob_seg7_dl_0700DD18[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(160, 160, 160, 255),\n    gsSPFogPosition(980, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bob_seg7_dl_0700CFC0),\n    gsSPDisplayList(bob_seg7_dl_0700D7D8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bob_seg7_dl_0700D910),\n    gsSPDisplayList(bob_seg7_dl_0700DC40),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bob_seg7_dl_0700DC88),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bob_seg7_dl_0700DCE0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bob/areas/1/6/model.inc.c",
    "content": "// 0x0700DE30 - 0x0700DE48\nstatic const Lights1 bob_seg7_lights_0700DE30 = gdSPDefLights1(\n    0x33, 0x33, 0x33,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700DE48 - 0x0700DF38\nstatic const Vtx bob_seg7_vertex_0700DE48[] = {\n    {{{  1902,   3835,  -5506}, 0, {     0,    990}, {0xb1, 0x37, 0xae, 0xff}}},\n    {{{  1814,   4191,  -5455}, 0, {   240,     44}, {0xae, 0xa8, 0xda, 0xff}}},\n    {{{  1902,   4088,  -5506}, 0, {     0,    316}, {0x87, 0xe3, 0x14, 0xff}}},\n    {{{  1697,   4091,  -5861}, 0, {   172,    -30}, {0xa1, 0xc1, 0x36, 0xff}}},\n    {{{  1814,   4191,  -5455}, 0, {   444,   1056}, {0xae, 0xa8, 0xda, 0xff}}},\n    {{{  1609,   4194,  -5810}, 0, {   444,      0}, {0xe4, 0x86, 0x0f, 0xff}}},\n    {{{  1902,   4088,  -5506}, 0, {   172,   1058}, {0x87, 0xe3, 0x14, 0xff}}},\n    {{{  1636,   4191,  -5353}, 0, {   990,   1056}, {0xf2, 0x9d, 0xb3, 0xff}}},\n    {{{  1431,   4194,  -5708}, 0, {   990,      0}, {0x37, 0x93, 0xdf, 0xff}}},\n    {{{  1548,   4088,  -5302}, 0, {  1262,   1058}, {0x28, 0xcd, 0x94, 0xff}}},\n    {{{  1343,   4091,  -5657}, 0, {  1262,    -30}, {0x6a, 0xe1, 0xc3, 0xff}}},\n    {{{  1343,   4091,  -5657}, 0, {     0,      0}, {0x6a, 0xe1, 0xc3, 0xff}}},\n    {{{  1548,   4088,  -5302}, 0, {  1604,    -22}, {0x28, 0xcd, 0x94, 0xff}}},\n    {{{  1548,   3835,  -5302}, 0, {  1604,    990}, {0x3f, 0x33, 0xa0, 0xff}}},\n    {{{  1343,   3835,  -5657}, 0, {     0,    990}, {0x31, 0x71, 0xe4, 0xff}}},\n};\n\n// 0x0700DF38 - 0x0700E038\nstatic const Vtx bob_seg7_vertex_0700DF38[] = {\n    {{{  1697,   3835,  -5861}, 0, {     0,    990}, {0x9e, 0x38, 0x38, 0xff}}},\n    {{{  1902,   3835,  -5506}, 0, {  1604,    990}, {0xb1, 0x37, 0xae, 0xff}}},\n    {{{  1902,   4088,  -5506}, 0, {  1604,    -22}, {0x87, 0xe3, 0x14, 0xff}}},\n    {{{  1902,   3835,  -5506}, 0, {     0,    990}, {0xb1, 0x37, 0xae, 0xff}}},\n    {{{  1548,   4088,  -5302}, 0, {  1058,    316}, {0x28, 0xcd, 0x94, 0xff}}},\n    {{{  1636,   4191,  -5353}, 0, {   786,     44}, {0xf2, 0x9d, 0xb3, 0xff}}},\n    {{{  1814,   4191,  -5455}, 0, {   240,     44}, {0xae, 0xa8, 0xda, 0xff}}},\n    {{{  1548,   3835,  -5302}, 0, {  1058,    990}, {0x3f, 0x33, 0xa0, 0xff}}},\n    {{{  1343,   3835,  -5657}, 0, {  1058,   1056}, {0x31, 0x71, 0xe4, 0xff}}},\n    {{{  1902,   3835,  -5506}, 0, {     0,      0}, {0xb1, 0x37, 0xae, 0xff}}},\n    {{{  1697,   3835,  -5861}, 0, {     0,   1056}, {0x9e, 0x38, 0x38, 0xff}}},\n    {{{  1548,   3835,  -5302}, 0, {  1058,      0}, {0x3f, 0x33, 0xa0, 0xff}}},\n    {{{  1697,   4091,  -5861}, 0, {     0,      0}, {0xa1, 0xc1, 0x36, 0xff}}},\n    {{{   240,   2683,  -5544}, 0, {  3748,   2264}, {0x31, 0x71, 0xe4, 0xff}}},\n    {{{   445,   2683,  -5189}, 0, {  3748,   1174}, {0x3f, 0x33, 0xa0, 0xff}}},\n    {{{   801,   2683,  -5393}, 0, {  2658,   1170}, {0xa0, 0x34, 0xc0, 0xff}}},\n};\n\n// 0x0700E038 - 0x0700E128\nstatic const Vtx bob_seg7_vertex_0700E038[] = {\n    {{{   596,   2939,  -5748}, 0, {  2862,  -1214}, {0x9b, 0xd0, 0x3a, 0xff}}},\n    {{{   803,   2940,  -5394}, 0, {  2854,   -122}, {0x89, 0xd5, 0x00, 0xff}}},\n    {{{   712,   3042,  -5342}, 0, {  3136,   -126}, {0xaf, 0xa7, 0xda, 0xff}}},\n    {{{   507,   3042,  -5697}, 0, {  3136,  -1216}, {0xe5, 0x86, 0x10, 0xff}}},\n    {{{   534,   3042,  -5240}, 0, {  3680,   -128}, {0xf2, 0x9d, 0xb3, 0xff}}},\n    {{{   329,   3042,  -5595}, 0, {  3680,  -1218}, {0x37, 0x93, 0xe0, 0xff}}},\n    {{{   445,   2939,  -5189}, 0, {  3954,   -126}, {0x28, 0xcc, 0x94, 0xff}}},\n    {{{   240,   2939,  -5544}, 0, {  3954,  -1218}, {0x6a, 0xe0, 0xc3, 0xff}}},\n    {{{   240,   2939,  -5544}, 0, { -1842,   4564}, {0x6a, 0xe0, 0xc3, 0xff}}},\n    {{{   445,   2683,  -5189}, 0, {  -206,   5586}, {0x3f, 0x33, 0xa0, 0xff}}},\n    {{{   240,   2683,  -5544}, 0, { -1842,   5586}, {0x31, 0x71, 0xe4, 0xff}}},\n    {{{   445,   2939,  -5189}, 0, {  -206,   4564}, {0x28, 0xcc, 0x94, 0xff}}},\n    {{{   801,   2683,  -5393}, 0, {  2658,   4054}, {0xa0, 0x34, 0xc0, 0xff}}},\n    {{{   712,   3042,  -5342}, 0, {  2932,   3100}, {0xaf, 0xa7, 0xda, 0xff}}},\n    {{{   803,   2940,  -5394}, 0, {  2650,   3372}, {0x89, 0xd5, 0x00, 0xff}}},\n};\n\n// 0x0700E128 - 0x0700E1E8\nstatic const Vtx bob_seg7_vertex_0700E128[] = {\n    {{{   240,   2683,  -5544}, 0, {  3748,   2264}, {0x31, 0x71, 0xe4, 0xff}}},\n    {{{   801,   2683,  -5393}, 0, {  2658,   1170}, {0xa0, 0x34, 0xc0, 0xff}}},\n    {{{   596,   2683,  -5748}, 0, {  2658,   2262}, {0xb3, 0x59, 0x2c, 0xff}}},\n    {{{   596,   2683,  -5748}, 0, { -1836,   5586}, {0xb3, 0x59, 0x2c, 0xff}}},\n    {{{   801,   2683,  -5393}, 0, {  -200,   5586}, {0xa0, 0x34, 0xc0, 0xff}}},\n    {{{   596,   2939,  -5748}, 0, { -1836,   4564}, {0x9b, 0xd0, 0x3a, 0xff}}},\n    {{{   803,   2940,  -5394}, 0, {  -200,   4564}, {0x89, 0xd5, 0x00, 0xff}}},\n    {{{   801,   2683,  -5393}, 0, {  2658,   4054}, {0xa0, 0x34, 0xc0, 0xff}}},\n    {{{   445,   2683,  -5189}, 0, {  3748,   4054}, {0x3f, 0x33, 0xa0, 0xff}}},\n    {{{   445,   2939,  -5189}, 0, {  3748,   3372}, {0x28, 0xcc, 0x94, 0xff}}},\n    {{{   534,   3042,  -5240}, 0, {  3476,   3100}, {0xf2, 0x9d, 0xb3, 0xff}}},\n    {{{   712,   3042,  -5342}, 0, {  2932,   3100}, {0xaf, 0xa7, 0xda, 0xff}}},\n};\n\n// 0x0700E1E8 - 0x0700E338\nstatic const Gfx bob_seg7_dl_0700E1E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09009000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bob_seg7_lights_0700DE30.l, 1),\n    gsSPLight(&bob_seg7_lights_0700DE30.a, 2),\n    gsSPVertex(bob_seg7_vertex_0700DE48, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  5,  4,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700DF38, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  3,  7,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700E038, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700E128, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  7, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700E338 - 0x0700E3E0\nconst Gfx bob_seg7_dl_0700E338[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(160, 160, 160, 255),\n    gsSPFogPosition(980, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bob_seg7_dl_0700E1E8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bob/areas/1/collision.inc.c",
    "content": "// 0x0700E958 - 0x0701104C\nconst Collision bob_seg7_collision_level[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x23A),\n    COL_VERTEX(-3538, 944, -4176),\n    COL_VERTEX(-3460, 944, -4212),\n    COL_VERTEX(-3477, 941, -4251),\n    COL_VERTEX(-3556, 942, -4215),\n    COL_VERTEX(-3536, 825, -4169),\n    COL_VERTEX(-3538, 945, -4176),\n    COL_VERTEX(-3458, 824, -4204),\n    COL_VERTEX(-3554, 822, -4208),\n    COL_VERTEX(-3476, 821, -4243),\n    COL_VERTEX(-4454, 1138, -1962),\n    COL_VERTEX(-4453, 1018, -1962),\n    COL_VERTEX(-4389, 1018, -2019),\n    COL_VERTEX(-4390, 1138, -2020),\n    COL_VERTEX(-4482, 1138, -1994),\n    COL_VERTEX(-4418, 1138, -2052),\n    COL_VERTEX(-4269, 1144, -785),\n    COL_VERTEX(-4208, 1144, -846),\n    COL_VERTEX(-4238, 1144, -754),\n    COL_VERTEX(-4178, 1144, -815),\n    COL_VERTEX(6215, 993, -1513),\n    COL_VERTEX(6185, 993, -1544),\n    COL_VERTEX(6277, 993, -1573),\n    COL_VERTEX(6247, 993, -1604),\n    COL_VERTEX(-2303, 0, 896),\n    COL_VERTEX(-2175, 0, 1024),\n    COL_VERTEX(-2303, 358, 1152),\n    COL_VERTEX(-2175, 358, 1024),\n    COL_VERTEX(-2303, 358, 896),\n    COL_VERTEX(-2431, 0, 1024),\n    COL_VERTEX(-2431, 358, 1024),\n    COL_VERTEX(-2303, 0, 1152),\n    COL_VERTEX(2304, 888, 4438),\n    COL_VERTEX(2261, 888, 4438),\n    COL_VERTEX(2304, 888, 4352),\n    COL_VERTEX(2261, 888, 4352),\n    COL_VERTEX(-4482, 1018, -1994),\n    COL_VERTEX(-4418, 1018, -2051),\n    COL_VERTEX(-4269, 1024, -785),\n    COL_VERTEX(-4238, 1024, -754),\n    COL_VERTEX(-4208, 1024, -846),\n    COL_VERTEX(-4178, 1024, -815),\n    COL_VERTEX(6215, 873, -1513),\n    COL_VERTEX(6277, 873, -1573),\n    COL_VERTEX(6247, 873, -1604),\n    COL_VERTEX(6185, 873, -1544),\n    COL_VERTEX(-2303, 717, 1024),\n    COL_VERTEX(2304, 768, 4438),\n    COL_VERTEX(2304, 768, 4352),\n    COL_VERTEX(2261, 768, 4352),\n    COL_VERTEX(2261, 768, 4438),\n    COL_VERTEX(-921, 205, 5376),\n    COL_VERTEX(768, 717, 5376),\n    COL_VERTEX(-921, 205, 5888),\n    COL_VERTEX(768, 717, 5888),\n    COL_VERTEX(-2458, 1024, -5155),\n    COL_VERTEX(-2458, 0, -5155),\n    COL_VERTEX(-2679, 0, -5045),\n    COL_VERTEX(-2679, 384, -5045),\n    COL_VERTEX(-3445, 777, -4662),\n    COL_VERTEX(-3251, 0, -4759),\n    COL_VERTEX(-3445, 1, -4662),\n    COL_VERTEX(-3251, 384, -4759),\n    COL_VERTEX(-2793, 640, -4988),\n    COL_VERTEX(-3137, 640, -4816),\n    COL_VERTEX(-2222, 640, -2984),\n    COL_VERTEX(-1878, 640, -3155),\n    COL_VERTEX(-2336, 384, -2926),\n    COL_VERTEX(-1764, 384, -3213),\n    COL_VERTEX(-1764, 0, -3213),\n    COL_VERTEX(-2559, 0, -2815),\n    COL_VERTEX(-2336, 0, -2926),\n    COL_VERTEX(-1016, 0, -2299),\n    COL_VERTEX(-7167, 1024, -7167),\n    COL_VERTEX(-4132, 513, -6035),\n    COL_VERTEX(-5203, 776, -6012),\n    COL_VERTEX(-4991, 1024, -4479),\n    COL_VERTEX(-4095, 1024, -3967),\n    COL_VERTEX(-3617, 1, -5005),\n    COL_VERTEX(-3151, 512, -6526),\n    COL_VERTEX(-1791, 0, 1792),\n    COL_VERTEX(-1535, 0, 2048),\n    COL_VERTEX(-1535, 0, 1536),\n    COL_VERTEX(-767, 0, -767),\n    COL_VERTEX(-2815, 0, 256),\n    COL_VERTEX(-1791, 768, 1792),\n    COL_VERTEX(-1535, 0, -3327),\n    COL_VERTEX(-1535, 1024, -3327),\n    COL_VERTEX(-2559, 768, -2815),\n    COL_VERTEX(-1872, 0, -1441),\n    COL_VERTEX(-1791, 0, -767),\n    COL_VERTEX(-4855, 738, -5776),\n    COL_VERTEX(-4852, 799, -5458),\n    COL_VERTEX(-2633, 0, -5497),\n    COL_VERTEX(-3071, 0, 512),\n    COL_VERTEX(-3071, 0, 3072),\n    COL_VERTEX(-1535, 768, 2048),\n    COL_VERTEX(-1535, 768, 1536),\n    COL_VERTEX(8192, 2560, -8191),\n    COL_VERTEX(4352, 3712, -8191),\n    COL_VERTEX(3072, 2513, -8191),\n    COL_VERTEX(7680, 2080, -7679),\n    COL_VERTEX(8093, 2085, -5982),\n    COL_VERTEX(8093, 2064, -6029),\n    COL_VERTEX(8192, 2720, -5119),\n    COL_VERTEX(8093, 1936, -6029),\n    COL_VERTEX(-3105, 1024, -6549),\n    COL_VERTEX(512, 3328, -8191),\n    COL_VERTEX(-4095, 1792, -8191),\n    COL_VERTEX(-3151, 1024, -6526),\n    COL_VERTEX(-8191, 1536, -8191),\n    COL_VERTEX(-7167, 1024, 4096),\n    COL_VERTEX(-8191, 1280, 8192),\n    COL_VERTEX(-3071, 0, 7168),\n    COL_VERTEX(-3071, 640, 8192),\n    COL_VERTEX(3840, 2048, 8192),\n    COL_VERTEX(7686, 768, 7100),\n    COL_VERTEX(768, 768, 7168),\n    COL_VERTEX(7680, 768, 0),\n    COL_VERTEX(8093, 1936, -5934),\n    COL_VERTEX(8192, 1855, 1024),\n    COL_VERTEX(8093, 2064, -5934),\n    COL_VERTEX(6289, 912, -2653),\n    COL_VERTEX(6289, 1936, -2653),\n    COL_VERTEX(3097, 1741, -733),\n    COL_VERTEX(-869, 1024, -5528),\n    COL_VERTEX(-6143, 2560, -8191),\n    COL_VERTEX(-8191, 2048, 0),\n    COL_VERTEX(-7167, 0, 4096),\n    COL_VERTEX(-7167, 0, 7168),\n    COL_VERTEX(768, 768, 7680),\n    COL_VERTEX(768, 0, 7168),\n    COL_VERTEX(8192, 1024, 8192),\n    COL_VERTEX(8192, 2560, 4096),\n    COL_VERTEX(5468, 912, -1870),\n    COL_VERTEX(3584, 656, -767),\n    COL_VERTEX(3072, 2513, -7679),\n    COL_VERTEX(7029, 912, -3999),\n    COL_VERTEX(3072, 4293, -6655),\n    COL_VERTEX(4402, 4294, -3839),\n    COL_VERTEX(4402, 4294, -5375),\n    COL_VERTEX(1298, 4293, -3583),\n    COL_VERTEX(3072, 4293, -3071),\n    COL_VERTEX(1298, 4293, -5631),\n    COL_VERTEX(4846, 4294, -5631),\n    COL_VERTEX(5097, 825, -1387),\n    COL_VERTEX(5452, 857, -1485),\n    COL_VERTEX(5842, 832, -1155),\n    COL_VERTEX(-5577, 963, -5517),\n    COL_VERTEX(-5518, 849, -6024),\n    COL_VERTEX(-5198, 899, -5376),\n    COL_VERTEX(-6015, 1024, -3839),\n    COL_VERTEX(-3339, 1020, -563),\n    COL_VERTEX(-3448, 1015, -908),\n    COL_VERTEX(-4991, 1024, -2431),\n    COL_VERTEX(-2815, 1024, 256),\n    COL_VERTEX(-1791, 973, -767),\n    COL_VERTEX(-1872, 768, -1441),\n    COL_VERTEX(-7167, 1024, 512),\n    COL_VERTEX(-2123, 173, 6244),\n    COL_VERTEX(-2386, 187, 5931),\n    COL_VERTEX(-2242, 197, 5944),\n    COL_VERTEX(-2559, 179, 5888),\n    COL_VERTEX(-1535, 256, 5888),\n    COL_VERTEX(-921, 0, 6400),\n    COL_VERTEX(-2644, 115, 6413),\n    COL_VERTEX(-5375, 0, 6464),\n    COL_VERTEX(-2632, 132, 6269),\n    COL_VERTEX(-2542, 161, 6061),\n    COL_VERTEX(-3231, 1024, -159),\n    COL_VERTEX(5070, 715, 31),\n    COL_VERTEX(5471, 721, -23),\n    COL_VERTEX(5314, 717, -540),\n    COL_VERTEX(5812, 759, -649),\n    COL_VERTEX(5777, 743, 424),\n    COL_VERTEX(5360, 763, 1257),\n    COL_VERTEX(5683, 759, 927),\n    COL_VERTEX(5856, 754, 699),\n    COL_VERTEX(4864, 1024, 4096),\n    COL_VERTEX(5888, 1024, 4096),\n    COL_VERTEX(3840, 768, 2304),\n    COL_VERTEX(4299, 721, 668),\n    COL_VERTEX(4496, 713, 314),\n    COL_VERTEX(4845, 748, -936),\n    COL_VERTEX(4378, 732, 943),\n    COL_VERTEX(4582, 747, 1241),\n    COL_VERTEX(4810, 757, 1414),\n    COL_VERTEX(4250, 3072, 1127),\n    COL_VERTEX(4250, 3072, 1332),\n    COL_VERTEX(4454, 3072, 1127),\n    COL_VERTEX(3584, 3072, 2560),\n    COL_VERTEX(5120, 3072, 2560),\n    COL_VERTEX(5888, 3072, 1230),\n    COL_VERTEX(1888, 768, 720),\n    COL_VERTEX(1280, 768, 3328),\n    COL_VERTEX(6252, 1936, -2700),\n    COL_VERTEX(3060, 1741, -780),\n    COL_VERTEX(6265, 2080, -6527),\n    COL_VERTEX(-383, 0, 6400),\n    COL_VERTEX(6246, 2080, -7167),\n    COL_VERTEX(4864, 1024, 5120),\n    COL_VERTEX(1792, 768, 5376),\n    COL_VERTEX(768, 768, 5888),\n    COL_VERTEX(-4095, 0, 4096),\n    COL_VERTEX(-2559, 179, 5376),\n    COL_VERTEX(-1535, 256, 5376),\n    COL_VERTEX(2304, 768, 4864),\n    COL_VERTEX(-4095, 1024, -2943),\n    COL_VERTEX(-6015, 0, 4736),\n    COL_VERTEX(-6591, 0, 5312),\n    COL_VERTEX(-3583, 0, 5376),\n    COL_VERTEX(-4799, 0, 5888),\n    COL_VERTEX(-6015, 0, 6464),\n    COL_VERTEX(1692, 768, 3192),\n    COL_VERTEX(-7167, 768, 512),\n    COL_VERTEX(-3071, 768, 512),\n    COL_VERTEX(-4095, 768, 4096),\n    COL_VERTEX(6246, 2080, -6962),\n    COL_VERTEX(5289, 3233, -5887),\n    COL_VERTEX(5732, 3233, -6143),\n    COL_VERTEX(-3217, 1005, -1076),\n    COL_VERTEX(-2872, 993, -1185),\n    COL_VERTEX(-5887, 1024, -2943),\n    COL_VERTEX(-3058, 1019, -272),\n    COL_VERTEX(-2540, 1001, -436),\n    COL_VERTEX(-2772, 1011, -268),\n    COL_VERTEX(-2477, 990, -835),\n    COL_VERTEX(-2422, 993, -663),\n    COL_VERTEX(-2645, 990, -1067),\n    COL_VERTEX(-2110, 189, 6101),\n    COL_VERTEX(-2357, 134, 6439),\n    COL_VERTEX(-2579, 111, 6491),\n    COL_VERTEX(-921, 256, 5888),\n    COL_VERTEX(-3583, 0, 5888),\n    COL_VERTEX(-3503, 1024, 111),\n    COL_VERTEX(5888, 1024, 5120),\n    COL_VERTEX(3584, 3072, -99),\n    COL_VERTEX(2816, 3072, 1230),\n    COL_VERTEX(5120, 3072, -99),\n    COL_VERTEX(4454, 3072, 1332),\n    COL_VERTEX(2076, 768, 425),\n    COL_VERTEX(1212, 768, -123),\n    COL_VERTEX(1024, 768, 171),\n    COL_VERTEX(6451, 2080, -6962),\n    COL_VERTEX(6451, 2080, -7167),\n    COL_VERTEX(2079, 1368, -1535),\n    COL_VERTEX(-921, 0, 5888),\n    COL_VERTEX(256, 0, 6400),\n    COL_VERTEX(768, 0, 5888),\n    COL_VERTEX(-921, 0, 4865),\n    COL_VERTEX(-921, 256, 5375),\n    COL_VERTEX(-5375, 0, 4736),\n    COL_VERTEX(-6591, 0, 5888),\n    COL_VERTEX(-4799, 0, 5312),\n    COL_VERTEX(-7167, 768, 4096),\n    COL_VERTEX(-3071, 768, 3072),\n    COL_VERTEX(-3368, 768, 246),\n    COL_VERTEX(-3503, 768, 111),\n    COL_VERTEX(3072, 3666, -7167),\n    COL_VERTEX(3072, 3666, -7679),\n    COL_VERTEX(-2413, 1024, -5178),\n    COL_VERTEX(-2240, 1024, -4835),\n    COL_VERTEX(-2285, 1024, -4812),\n    COL_VERTEX(768, 870, 5847),\n    COL_VERTEX(1751, 870, 5335),\n    COL_VERTEX(1751, 768, 5335),\n    COL_VERTEX(768, 768, 5847),\n    COL_VERTEX(809, 768, 5868),\n    COL_VERTEX(1792, 870, 5376),\n    COL_VERTEX(809, 870, 5868),\n    COL_VERTEX(809, 870, 7168),\n    COL_VERTEX(809, 768, 7168),\n    COL_VERTEX(788, 891, 7168),\n    COL_VERTEX(768, 870, 7168),\n    COL_VERTEX(-5797, 128, 5702),\n    COL_VERTEX(-5593, 128, 5702),\n    COL_VERTEX(-5797, 128, 5498),\n    COL_VERTEX(-5797, -383, 5702),\n    COL_VERTEX(-5593, 128, 5498),\n    COL_VERTEX(5478, 1536, 4506),\n    COL_VERTEX(5274, 1536, 4506),\n    COL_VERTEX(5478, 1536, 4710),\n    COL_VERTEX(5478, 1024, 4506),\n    COL_VERTEX(5274, 1536, 4710),\n    COL_VERTEX(-5119, 1331, -3634),\n    COL_VERTEX(-4914, 1331, -3634),\n    COL_VERTEX(-4914, 819, -3634),\n    COL_VERTEX(-4914, 1331, -3429),\n    COL_VERTEX(-5119, 1331, -3429),\n    COL_VERTEX(6246, 1568, -7167),\n    COL_VERTEX(4352, 2560, -2559),\n    COL_VERTEX(4352, 3072, -2559),\n    COL_VERTEX(4147, 3072, -2559),\n    COL_VERTEX(4147, 3072, -2354),\n    COL_VERTEX(4352, 3072, -2354),\n    COL_VERTEX(2263, 768, 4864),\n    COL_VERTEX(2263, 870, 4864),\n    COL_VERTEX(2304, 768, 4480),\n    COL_VERTEX(2263, 870, 4480),\n    COL_VERTEX(-3071, 768, 1536),\n    COL_VERTEX(-3112, 768, 3031),\n    COL_VERTEX(-3112, 1024, 3031),\n    COL_VERTEX(-4095, 1024, 4096),\n    COL_VERTEX(-4136, 768, 4055),\n    COL_VERTEX(-4136, 1024, 4055),\n    COL_VERTEX(3097, 1869, -733),\n    COL_VERTEX(6289, 2064, -2653),\n    COL_VERTEX(-970, 1024, -2322),\n    COL_VERTEX(-2285, 1741, -4812),\n    COL_VERTEX(-1016, 1024, -2299),\n    COL_VERTEX(-3151, 1741, -6526),\n    COL_VERTEX(2304, 870, 4480),\n    COL_VERTEX(6252, 2064, -2700),\n    COL_VERTEX(1302, 891, 3805),\n    COL_VERTEX(1280, 768, 3840),\n    COL_VERTEX(-1506, 768, 2019),\n    COL_VERTEX(-1535, 891, 2048),\n    COL_VERTEX(1792, 0, 4352),\n    COL_VERTEX(1792, 768, 4352),\n    COL_VERTEX(-5797, -383, 5498),\n    COL_VERTEX(-5593, -383, 5498),\n    COL_VERTEX(-5593, -383, 5702),\n    COL_VERTEX(5478, 1024, 4710),\n    COL_VERTEX(5274, 1024, 4710),\n    COL_VERTEX(5274, 1024, 4506),\n    COL_VERTEX(-5119, 819, -3634),\n    COL_VERTEX(-4914, 819, -3429),\n    COL_VERTEX(-5119, 819, -3429),\n    COL_VERTEX(6451, 1568, -7167),\n    COL_VERTEX(6451, 1568, -6962),\n    COL_VERTEX(6246, 1568, -6962),\n    COL_VERTEX(4147, 2560, -2354),\n    COL_VERTEX(4352, 2560, -2354),\n    COL_VERTEX(4147, 2560, -2559),\n    COL_VERTEX(2262, 768, 4480),\n    COL_VERTEX(2284, 891, 4480),\n    COL_VERTEX(-3112, 1024, 1536),\n    COL_VERTEX(-3071, 1024, 1536),\n    COL_VERTEX(-3112, 768, 1536),\n    COL_VERTEX(2304, 870, 4864),\n    COL_VERTEX(-3071, 1024, 3072),\n    COL_VERTEX(-7167, 1024, 4055),\n    COL_VERTEX(-7167, 768, 4055),\n    COL_VERTEX(3060, 1869, -780),\n    COL_VERTEX(3078, 1889, -756),\n    COL_VERTEX(-2240, 1741, -4835),\n    COL_VERTEX(-1016, 1741, -2299),\n    COL_VERTEX(-970, 1741, -2322),\n    COL_VERTEX(-2459, 1741, -5155),\n    COL_VERTEX(-2413, 1741, -5178),\n    COL_VERTEX(-3105, 1741, -6549),\n    COL_VERTEX(-1506, 891, 2019),\n    COL_VERTEX(1302, 768, 3805),\n    COL_VERTEX(1280, 891, 3840),\n    COL_VERTEX(1291, 911, 3823),\n    COL_VERTEX(-1521, 911, 2034),\n    COL_VERTEX(1792, 0, 4864),\n    COL_VERTEX(1792, 768, 4864),\n    COL_VERTEX(1888, 1536, 720),\n    COL_VERTEX(1950, 2049, -82),\n    COL_VERTEX(1024, 1536, 171),\n    COL_VERTEX(-6245, 128, 5816),\n    COL_VERTEX(-5842, 128, 6248),\n    COL_VERTEX(-6245, 128, 5384),\n    COL_VERTEX(-5548, 128, 6248),\n    COL_VERTEX(-5842, 128, 4952),\n    COL_VERTEX(5632, 1536, 4864),\n    COL_VERTEX(5120, 1536, 4864),\n    COL_VERTEX(5632, 1536, 4352),\n    COL_VERTEX(5120, 1536, 4352),\n    COL_VERTEX(1260, 2918, -2327),\n    COL_VERTEX(1434, 0, 4352),\n    COL_VERTEX(1434, 0, 4864),\n    COL_VERTEX(4454, 2560, 1127),\n    COL_VERTEX(-3503, 960, 111),\n    COL_VERTEX(-3231, 960, -159),\n    COL_VERTEX(-3458, 896, 156),\n    COL_VERTEX(-3186, 896, -114),\n    COL_VERTEX(-3142, 832, -69),\n    COL_VERTEX(-3413, 832, 201),\n    COL_VERTEX(-3097, 768, -24),\n    COL_VERTEX(768, 0, 5376),\n    COL_VERTEX(3279, 2944, -1718),\n    COL_VERTEX(3319, 2944, -1866),\n    COL_VERTEX(3319, 2970, -1866),\n    COL_VERTEX(2407, 2917, -1925),\n    COL_VERTEX(2447, 2917, -2073),\n    COL_VERTEX(-921, 0, 5377),\n    COL_VERTEX(-1010, 819, -5170),\n    COL_VERTEX(-1210, 717, -4925),\n    COL_VERTEX(-1552, 717, -4752),\n    COL_VERTEX(-1867, 819, -4737),\n    COL_VERTEX(1280, 0, 3840),\n    COL_VERTEX(-2815, 768, 256),\n    COL_VERTEX(868, 2801, -3302),\n    COL_VERTEX(868, 3954, -3302),\n    COL_VERTEX(-181, 2658, -5302),\n    COL_VERTEX(851, 3818, -5894),\n    COL_VERTEX(240, 2939, -5544),\n    COL_VERTEX(-353, 2606, -5359),\n    COL_VERTEX(3072, 2513, -7167),\n    COL_VERTEX(596, 2683, -5748),\n    COL_VERTEX(5289, 2080, -5887),\n    COL_VERTEX(5400, 2029, -5951),\n    COL_VERTEX(240, 2683, -5544),\n    COL_VERTEX(596, 2939, -5748),\n    COL_VERTEX(801, 2683, -5393),\n    COL_VERTEX(507, 3042, -5697),\n    COL_VERTEX(329, 3042, -5595),\n    COL_VERTEX(5289, 2493, -3327),\n    COL_VERTEX(5289, 1936, -3327),\n    COL_VERTEX(2851, 1613, -1919),\n    COL_VERTEX(2560, 1613, -2737),\n    COL_VERTEX(3072, 2945, -2047),\n    COL_VERTEX(3328, 2944, -1603),\n    COL_VERTEX(167, 2709, -3757),\n    COL_VERTEX(169, 1024, -3471),\n    COL_VERTEX(54, 1024, -3700),\n    COL_VERTEX(2560, 2862, -2613),\n    COL_VERTEX(2560, 2864, -2367),\n    COL_VERTEX(3072, 2894, -2431),\n    COL_VERTEX(3072, 2945, -2559),\n    COL_VERTEX(4846, 3089, -3583),\n    COL_VERTEX(2560, 2912, -2736),\n    COL_VERTEX(3072, 4097, -3071),\n    COL_VERTEX(1298, 3954, -3583),\n    COL_VERTEX(1298, 3810, -5631),\n    COL_VERTEX(1609, 4194, -5810),\n    COL_VERTEX(3072, 4294, -6655),\n    COL_VERTEX(3072, 3666, -6655),\n    COL_VERTEX(4846, 3233, -5631),\n    COL_VERTEX(5543, 2637, -2883),\n    COL_VERTEX(5543, 3089, -2883),\n    COL_VERTEX(5400, 1885, -3263),\n    COL_VERTEX(3072, 3521, -7679),\n    COL_VERTEX(3072, 3521, -7167),\n    COL_VERTEX(5733, 3089, -6143),\n    COL_VERTEX(5289, 3088, -5887),\n    COL_VERTEX(3072, 4097, -2559),\n    COL_VERTEX(6131, 1885, -2767),\n    COL_VERTEX(1697, 3835, -5861),\n    COL_VERTEX(1697, 4091, -5861),\n    COL_VERTEX(1343, 3835, -5657),\n    COL_VERTEX(1343, 4091, -5657),\n    COL_VERTEX(1431, 4194, -5708),\n    COL_VERTEX(1902, 3835, -5506),\n    COL_VERTEX(419, 2706, -3884),\n    COL_VERTEX(400, 1024, -3014),\n    COL_VERTEX(400, 2802, -3014),\n    COL_VERTEX(400, 2546, -3014),\n    COL_VERTEX(2560, 2917, -2244),\n    COL_VERTEX(537, 2721, -3657),\n    COL_VERTEX(751, 2750, -3230),\n    COL_VERTEX(6131, 2029, -6447),\n    COL_VERTEX(3072, 2462, -7295),\n    COL_VERTEX(3072, 2462, -7551),\n    COL_VERTEX(4735, 4190, -3647),\n    COL_VERTEX(4513, 4190, -3775),\n    COL_VERTEX(3072, 4046, -2687),\n    COL_VERTEX(3072, 4046, -2943),\n    COL_VERTEX(966, 3902, -3391),\n    COL_VERTEX(1188, 3902, -3519),\n    COL_VERTEX(5178, 3182, -5823),\n    COL_VERTEX(4956, 3182, -5695),\n    COL_VERTEX(3072, 3614, -6783),\n    COL_VERTEX(3072, 3614, -7039),\n    COL_VERTEX(5178, 3038, -3391),\n    COL_VERTEX(4956, 3038, -3519),\n    COL_VERTEX(517, 2750, -3086),\n    COL_VERTEX(4352, 2048, 1230),\n    COL_VERTEX(3776, 2560, 2227),\n    COL_VERTEX(4928, 2560, 2227),\n    COL_VERTEX(3200, 2560, 1230),\n    COL_VERTEX(5504, 2560, 1230),\n    COL_VERTEX(4928, 2560, 232),\n    COL_VERTEX(3776, 2560, 232),\n    COL_VERTEX(-5145, 128, 5816),\n    COL_VERTEX(-5145, 128, 5384),\n    COL_VERTEX(-5548, 128, 4952),\n    COL_VERTEX(1452, 2918, -2259),\n    COL_VERTEX(1521, 2918, -2452),\n    COL_VERTEX(1328, 2918, -2520),\n    COL_VERTEX(4250, 2560, 1127),\n    COL_VERTEX(4250, 2560, 1332),\n    COL_VERTEX(4454, 2560, 1332),\n    COL_VERTEX(-3458, 960, 156),\n    COL_VERTEX(-3187, 960, -115),\n    COL_VERTEX(-3413, 896, 201),\n    COL_VERTEX(-3142, 896, -69),\n    COL_VERTEX(-3097, 832, -24),\n    COL_VERTEX(-3368, 832, 246),\n    COL_VERTEX(768, 768, 5376),\n    COL_VERTEX(3279, 2970, -1718),\n    COL_VERTEX(2407, 2943, -1925),\n    COL_VERTEX(2447, 2943, -2073),\n    COL_VERTEX(-286, 717, -3097),\n    COL_VERTEX(28, 819, -3113),\n    COL_VERTEX(-629, 717, -2924),\n    COL_VERTEX(-828, 819, -2680),\n    COL_VERTEX(-3231, 768, -159),\n    COL_VERTEX(652, 2772, -3715),\n    COL_VERTEX(533, 2755, -3942),\n    COL_VERTEX(-181, 3818, -5302),\n    COL_VERTEX(3037, 1669, -904),\n    COL_VERTEX(445, 2683, -5189),\n    COL_VERTEX(445, 2939, -5189),\n    COL_VERTEX(2560, 1612, -2244),\n    COL_VERTEX(2488, 1369, -2138),\n    COL_VERTEX(2874, 1576, -1794),\n    COL_VERTEX(-869, 2657, -5528),\n    COL_VERTEX(803, 2940, -5394),\n    COL_VERTEX(712, 3042, -5342),\n    COL_VERTEX(5289, 3089, -3327),\n    COL_VERTEX(534, 3042, -5240),\n    COL_VERTEX(3072, 2349, -2047),\n    COL_VERTEX(3072, 2894, -2175),\n    COL_VERTEX(2802, 1613, -2653),\n    COL_VERTEX(3328, 2493, -1603),\n    COL_VERTEX(54, 2762, -3700),\n    COL_VERTEX(-697, 2606, -5472),\n    COL_VERTEX(169, 2775, -3471),\n    COL_VERTEX(286, 2723, -3530),\n    COL_VERTEX(4846, 4242, -3583),\n    COL_VERTEX(4402, 4293, -3839),\n    COL_VERTEX(1902, 4088, -5506),\n    COL_VERTEX(1548, 3835, -5302),\n    COL_VERTEX(1636, 4191, -5353),\n    COL_VERTEX(1814, 4191, -5455),\n    COL_VERTEX(1548, 4088, -5302),\n    COL_VERTEX(2388, 2917, -1762),\n    COL_VERTEX(228, 2802, -2532),\n    COL_VERTEX(2560, 2661, -2244),\n    COL_VERTEX(966, 3758, -5823),\n    COL_VERTEX(1188, 3758, -5695),\n    COL_VERTEX(788, 891, 5857),\n    COL_VERTEX(1772, 891, 5356),\n    COL_VERTEX(2284, 891, 4864),\n    COL_VERTEX(1024, 1408, 171),\n    COL_VERTEX(1212, 1408, -123),\n    COL_VERTEX(1888, 1408, 720),\n    COL_VERTEX(1186, 768, -149),\n    COL_VERTEX(-7167, 1044, 4076),\n    COL_VERTEX(-4115, 1044, 4076),\n    COL_VERTEX(-3091, 1044, 3052),\n    COL_VERTEX(-3091, 1044, 1536),\n    COL_VERTEX(2076, 1408, 425),\n    COL_VERTEX(1186, 1408, -149),\n    COL_VERTEX(6271, 2084, -2676),\n    COL_VERTEX(5669, 927, -780),\n    COL_VERTEX(5147, 923, -957),\n    COL_VERTEX(5345, 966, -1188),\n    COL_VERTEX(-5070, 1081, -5738),\n    COL_VERTEX(-5322, 1136, -5756),\n    COL_VERTEX(-5235, 1071, -5842),\n    COL_VERTEX(-5017, 1331, -3020),\n    COL_VERTEX(-5460, 1331, -3788),\n    COL_VERTEX(-4573, 1331, -3788),\n    COL_VERTEX(-2815, 1207, -537),\n    COL_VERTEX(-2815, 1207, -844),\n    COL_VERTEX(-3045, 1207, -895),\n    COL_VERTEX(-3199, 1207, -562),\n    COL_VERTEX(-2316, 245, 6300),\n    COL_VERTEX(-2401, 235, 6323),\n    COL_VERTEX(-2364, 239, 6216),\n    COL_VERTEX(4827, 1329, 1183),\n    COL_VERTEX(4966, 1333, 645),\n    COL_VERTEX(5248, 1249, 675),\n    COL_VERTEX(-897, 922, -5370),\n    COL_VERTEX(-2096, 922, -4764),\n    COL_VERTEX(-942, 922, -2479),\n    COL_VERTEX(257, 922, -3085),\n    COL_TRI_INIT(SURFACE_DEFAULT, 378),\n    COL_TRI(362, 360, 273),\n    COL_TRI(60, 73, 58),\n    COL_TRI(58, 87, 54),\n    COL_TRI(87, 86, 54),\n    COL_TRI(71, 86, 85),\n    COL_TRI(71, 308, 86),\n    COL_TRI(360, 361, 273),\n    COL_TRI(365, 278, 280),\n    COL_TRI(361, 363, 274),\n    COL_TRI(361, 274, 273),\n    COL_TRI(362, 273, 275),\n    COL_TRI(277, 274, 475),\n    COL_TRI(363, 475, 274),\n    COL_TRI(277, 475, 476),\n    COL_TRI(362, 275, 364),\n    COL_TRI(364, 275, 277),\n    COL_TRI(364, 277, 477),\n    COL_TRI(277, 476, 477),\n    COL_TRI(234, 365, 366),\n    COL_TRI(365, 367, 278),\n    COL_TRI(366, 365, 280),\n    COL_TRI(178, 365, 234),\n    COL_TRI(367, 279, 278),\n    COL_TRI(366, 280, 282),\n    COL_TRI(177, 368, 367),\n    COL_TRI(177, 367, 178),\n    COL_TRI(367, 368, 279),\n    COL_TRI(178, 367, 365),\n    COL_TRI(199, 366, 368),\n    COL_TRI(234, 366, 199),\n    COL_TRI(368, 366, 282),\n    COL_TRI(368, 282, 279),\n    COL_TRI(199, 368, 177),\n    COL_TRI(369, 478, 479),\n    COL_TRI(369, 479, 480),\n    COL_TRI(370, 371, 316),\n    COL_TRI(371, 355, 316),\n    COL_TRI(186, 372, 188),\n    COL_TRI(186, 481, 372),\n    COL_TRI(372, 482, 483),\n    COL_TRI(372, 481, 482),\n    COL_TRI(188, 372, 483),\n    COL_TRI(238, 483, 482),\n    COL_TRI(187, 482, 481),\n    COL_TRI(238, 482, 187),\n    COL_TRI(188, 483, 238),\n    COL_TRI(187, 481, 186),\n    COL_TRI(373, 484, 485),\n    COL_TRI(373, 485, 374),\n    COL_TRI(374, 233, 373),\n    COL_TRI(256, 375, 373),\n    COL_TRI(375, 484, 373),\n    COL_TRI(378, 486, 375),\n    COL_TRI(376, 485, 484),\n    COL_TRI(374, 168, 233),\n    COL_TRI(376, 484, 375),\n    COL_TRI(377, 486, 378),\n    COL_TRI(377, 487, 486),\n    COL_TRI(375, 486, 487),\n    COL_TRI(213, 256, 373),\n    COL_TRI(375, 487, 376),\n    COL_TRI(256, 378, 375),\n    COL_TRI(378, 488, 377),\n    COL_TRI(378, 489, 488),\n    COL_TRI(255, 489, 378),\n    COL_TRI(256, 255, 378),\n    COL_TRI(379, 488, 489),\n    COL_TRI(379, 489, 255),\n    COL_TRI(214, 379, 255),\n    COL_TRI(214, 392, 379),\n    COL_TRI(313, 317, 47),\n    COL_TRI(313, 47, 193),\n    COL_TRI(317, 205, 47),\n    COL_TRI(95, 313, 96),\n    COL_TRI(249, 204, 162),\n    COL_TRI(80, 391, 313),\n    COL_TRI(80, 313, 95),\n    COL_TRI(313, 391, 317),\n    COL_TRI(313, 193, 96),\n    COL_TRI(317, 356, 205),\n    COL_TRI(204, 203, 162),\n    COL_TRI(203, 232, 161),\n    COL_TRI(203, 161, 162),\n    COL_TRI(203, 209, 232),\n    COL_TRI(231, 249, 162),\n    COL_TRI(209, 210, 232),\n    COL_TRI(209, 252, 210),\n    COL_TRI(52, 201, 231),\n    COL_TRI(84, 95, 96),\n    COL_TRI(200, 205, 356),\n    COL_TRI(201, 200, 356),\n    COL_TRI(380, 51, 356),\n    COL_TRI(355, 380, 356),\n    COL_TRI(51, 490, 356),\n    COL_TRI(201, 356, 490),\n    COL_TRI(381, 384, 385),\n    COL_TRI(381, 385, 382),\n    COL_TRI(52, 53, 201),\n    COL_TRI(382, 491, 381),\n    COL_TRI(381, 491, 492),\n    COL_TRI(381, 492, 384),\n    COL_TRI(383, 492, 491),\n    COL_TRI(383, 493, 492),\n    COL_TRI(384, 492, 493),\n    COL_TRI(384, 493, 385),\n    COL_TRI(382, 383, 491),\n    COL_TRI(385, 493, 383),\n    COL_TRI(385, 383, 382),\n    COL_TRI(386, 50, 52),\n    COL_TRI(386, 52, 245),\n    COL_TRI(231, 490, 249),\n    COL_TRI(231, 201, 490),\n    COL_TRI(51, 249, 490),\n    COL_TRI(51, 50, 249),\n    COL_TRI(387, 494, 495),\n    COL_TRI(387, 388, 494),\n    COL_TRI(388, 496, 494),\n    COL_TRI(388, 389, 496),\n    COL_TRI(389, 390, 496),\n    COL_TRI(390, 497, 496),\n    COL_TRI(248, 370, 202),\n    COL_TRI(316, 391, 370),\n    COL_TRI(391, 316, 317),\n    COL_TRI(391, 94, 370),\n    COL_TRI(391, 80, 94),\n    COL_TRI(248, 249, 386),\n    COL_TRI(370, 248, 386),\n    COL_TRI(371, 386, 380),\n    COL_TRI(370, 94, 202),\n    COL_TRI(371, 370, 386),\n    COL_TRI(202, 94, 254),\n    COL_TRI(53, 380, 247),\n    COL_TRI(53, 51, 380),\n    COL_TRI(53, 247, 130),\n    COL_TRI(130, 201, 53),\n    COL_TRI(245, 380, 386),\n    COL_TRI(202, 254, 215),\n    COL_TRI(214, 254, 94),\n    COL_TRI(214, 94, 93),\n    COL_TRI(231, 163, 245),\n    COL_TRI(245, 247, 380),\n    COL_TRI(247, 245, 197),\n    COL_TRI(247, 197, 246),\n    COL_TRI(380, 355, 371),\n    COL_TRI(89, 88, 156),\n    COL_TRI(89, 156, 155),\n    COL_TRI(89, 155, 154),\n    COL_TRI(89, 154, 83),\n    COL_TRI(93, 83, 392),\n    COL_TRI(93, 392, 214),\n    COL_TRI(392, 154, 379),\n    COL_TRI(154, 374, 379),\n    COL_TRI(154, 168, 374),\n    COL_TRI(87, 156, 88),\n    COL_TRI(69, 87, 88),\n    COL_TRI(72, 78, 108),\n    COL_TRI(60, 77, 73),\n    COL_TRI(54, 108, 78),\n    COL_TRI(54, 78, 92),\n    COL_TRI(54, 92, 55),\n    COL_TRI(393, 394, 499),\n    COL_TRI(394, 395, 500),\n    COL_TRI(394, 500, 499),\n    COL_TRI(394, 396, 501),\n    COL_TRI(395, 394, 501),\n    COL_TRI(396, 395, 501),\n    COL_TRI(244, 308, 71),\n    COL_TRI(244, 195, 502),\n    COL_TRI(244, 446, 308),\n    COL_TRI(397, 395, 407),\n    COL_TRI(395, 396, 407),\n    COL_TRI(397, 403, 395),\n    COL_TRI(395, 403, 400),\n    COL_TRI(395, 399, 398),\n    COL_TRI(135, 124, 508),\n    COL_TRI(395, 400, 399),\n    COL_TRI(399, 436, 401),\n    COL_TRI(399, 434, 436),\n    COL_TRI(396, 257, 399),\n    COL_TRI(396, 399, 404),\n    COL_TRI(400, 404, 399),\n    COL_TRI(399, 453, 398),\n    COL_TRI(397, 503, 403),\n    COL_TRI(403, 503, 405),\n    COL_TRI(403, 405, 400),\n    COL_TRI(400, 405, 404),\n    COL_TRI(396, 404, 406),\n    COL_TRI(404, 509, 510),\n    COL_TRI(404, 510, 406),\n    COL_TRI(405, 509, 404),\n    COL_TRI(396, 406, 407),\n    COL_TRI(406, 512, 407),\n    COL_TRI(406, 510, 512),\n    COL_TRI(407, 504, 397),\n    COL_TRI(407, 512, 504),\n    COL_TRI(397, 504, 503),\n    COL_TRI(405, 503, 504),\n    COL_TRI(405, 504, 512),\n    COL_TRI(405, 510, 509),\n    COL_TRI(405, 512, 510),\n    COL_TRI(408, 513, 410),\n    COL_TRI(409, 408, 410),\n    COL_TRI(410, 513, 412),\n    COL_TRI(410, 412, 514),\n    COL_TRI(410, 514, 419),\n    COL_TRI(411, 505, 410),\n    COL_TRI(410, 515, 411),\n    COL_TRI(410, 419, 515),\n    COL_TRI(408, 516, 513),\n    COL_TRI(412, 513, 516),\n    COL_TRI(415, 446, 447),\n    COL_TRI(413, 412, 516),\n    COL_TRI(124, 517, 508),\n    COL_TRI(124, 416, 517),\n    COL_TRI(414, 518, 508),\n    COL_TRI(414, 508, 517),\n    COL_TRI(415, 447, 519),\n    COL_TRI(421, 437, 420),\n    COL_TRI(415, 519, 520),\n    COL_TRI(411, 515, 420),\n    COL_TRI(411, 420, 422),\n    COL_TRI(417, 411, 422),\n    COL_TRI(417, 418, 411),\n    COL_TRI(418, 505, 411),\n    COL_TRI(419, 420, 515),\n    COL_TRI(420, 437, 422),\n    COL_TRI(425, 439, 428),\n    COL_TRI(422, 451, 417),\n    COL_TRI(422, 393, 451),\n    COL_TRI(423, 140, 424),\n    COL_TRI(424, 140, 425),\n    COL_TRI(140, 142, 425),\n    COL_TRI(423, 141, 140),\n    COL_TRI(425, 441, 439),\n    COL_TRI(142, 441, 425),\n    COL_TRI(429, 143, 421),\n    COL_TRI(142, 442, 441),\n    COL_TRI(142, 426, 443),\n    COL_TRI(142, 443, 442),\n    COL_TRI(426, 142, 427),\n    COL_TRI(423, 522, 138),\n    COL_TRI(141, 423, 138),\n    COL_TRI(427, 143, 429),\n    COL_TRI(428, 427, 429),\n    COL_TRI(401, 511, 409),\n    COL_TRI(143, 521, 421),\n    COL_TRI(421, 521, 437),\n    COL_TRI(428, 439, 427),\n    COL_TRI(430, 431, 516),\n    COL_TRI(408, 430, 516),\n    COL_TRI(431, 413, 516),\n    COL_TRI(433, 258, 435),\n    COL_TRI(408, 511, 431),\n    COL_TRI(408, 431, 430),\n    COL_TRI(401, 217, 511),\n    COL_TRI(432, 402, 401),\n    COL_TRI(409, 432, 401),\n    COL_TRI(401, 402, 399),\n    COL_TRI(434, 433, 436),\n    COL_TRI(258, 218, 435),\n    COL_TRI(435, 218, 217),\n    COL_TRI(436, 435, 217),\n    COL_TRI(433, 435, 436),\n    COL_TRI(434, 257, 258),\n    COL_TRI(434, 258, 433),\n    COL_TRI(394, 393, 422),\n    COL_TRI(432, 409, 410),\n    COL_TRI(437, 394, 422),\n    COL_TRI(432, 438, 402),\n    COL_TRI(438, 432, 502),\n    COL_TRI(432, 507, 502),\n    COL_TRI(432, 410, 507),\n    COL_TRI(439, 440, 427),\n    COL_TRI(440, 426, 427),\n    COL_TRI(440, 523, 526),\n    COL_TRI(416, 415, 499),\n    COL_TRI(439, 523, 440),\n    COL_TRI(426, 525, 443),\n    COL_TRI(426, 526, 525),\n    COL_TRI(440, 526, 426),\n    COL_TRI(441, 444, 439),\n    COL_TRI(439, 444, 523),\n    COL_TRI(441, 524, 444),\n    COL_TRI(442, 524, 441),\n    COL_TRI(443, 525, 527),\n    COL_TRI(443, 527, 442),\n    COL_TRI(442, 527, 524),\n    COL_TRI(444, 524, 527),\n    COL_TRI(444, 527, 525),\n    COL_TRI(444, 526, 523),\n    COL_TRI(444, 525, 526),\n    COL_TRI(416, 499, 500),\n    COL_TRI(445, 416, 500),\n    COL_TRI(415, 450, 499),\n    COL_TRI(446, 505, 449),\n    COL_TRI(446, 449, 447),\n    COL_TRI(244, 506, 446),\n    COL_TRI(447, 418, 467),\n    COL_TRI(447, 449, 418),\n    COL_TRI(417, 451, 467),\n    COL_TRI(448, 528, 529),\n    COL_TRI(448, 530, 528),\n    COL_TRI(449, 528, 530),\n    COL_TRI(448, 529, 447),\n    COL_TRI(418, 449, 505),\n    COL_TRI(417, 467, 418),\n    COL_TRI(445, 414, 416),\n    COL_TRI(244, 502, 507),\n    COL_TRI(244, 507, 506),\n    COL_TRI(450, 451, 499),\n    COL_TRI(415, 520, 450),\n    COL_TRI(451, 520, 467),\n    COL_TRI(451, 450, 520),\n    COL_TRI(452, 454, 453),\n    COL_TRI(414, 517, 416),\n    COL_TRI(438, 452, 402),\n    COL_TRI(438, 195, 194),\n    COL_TRI(196, 452, 194),\n    COL_TRI(452, 438, 194),\n    COL_TRI(402, 453, 399),\n    COL_TRI(402, 452, 453),\n    COL_TRI(452, 196, 454),\n    COL_TRI(455, 456, 457),\n    COL_TRI(196, 135, 454),\n    COL_TRI(438, 502, 195),\n    COL_TRI(453, 454, 398),\n    COL_TRI(454, 518, 398),\n    COL_TRI(454, 135, 518),\n    COL_TRI(135, 508, 518),\n    COL_TRI(139, 455, 143),\n    COL_TRI(139, 456, 455),\n    COL_TRI(464, 531, 532),\n    COL_TRI(456, 458, 457),\n    COL_TRI(457, 458, 459),\n    COL_TRI(458, 460, 459),\n    COL_TRI(459, 460, 531),\n    COL_TRI(460, 532, 531),\n    COL_TRI(461, 464, 463),\n    COL_TRI(462, 461, 463),\n    COL_TRI(463, 464, 532),\n    COL_TRI(451, 393, 499),\n    COL_TRI(461, 462, 465),\n    COL_TRI(462, 466, 465),\n    COL_TRI(465, 466, 514),\n    COL_TRI(466, 419, 514),\n    COL_TRI(467, 519, 447),\n    COL_TRI(467, 520, 519),\n    COL_TRI(445, 398, 518),\n    COL_TRI(445, 518, 414),\n    COL_TRI(398, 445, 500),\n    COL_TRI(398, 500, 395),\n    COL_TRI(157, 213, 373),\n    COL_TRI(233, 157, 373),\n    COL_TRI(157, 110, 253),\n    COL_TRI(253, 213, 157),\n    COL_TRI(468, 471, 474),\n    COL_TRI(468, 470, 469),\n    COL_TRI(468, 469, 471),\n    COL_TRI(468, 473, 472),\n    COL_TRI(468, 474, 473),\n    COL_TRI(468, 472, 470),\n    COL_TRI(469, 189, 236),\n    COL_TRI(469, 236, 471),\n    COL_TRI(470, 189, 469),\n    COL_TRI(471, 235, 474),\n    COL_TRI(471, 236, 235),\n    COL_TRI(470, 190, 189),\n    COL_TRI(472, 190, 470),\n    COL_TRI(472, 191, 190),\n    COL_TRI(473, 191, 472),\n    COL_TRI(473, 237, 191),\n    COL_TRI(235, 237, 473),\n    COL_TRI(474, 235, 473),\n    COL_TRI(374, 498, 379),\n    COL_TRI(116, 201, 130),\n    COL_TRI(129, 116, 130),\n    COL_TRI(253, 127, 202),\n    COL_TRI(202, 215, 253),\n    COL_TRI_INIT(SURFACE_HANGABLE, 2),\n    COL_TRI(50, 51, 52),\n    COL_TRI(51, 53, 52),\n    COL_TRI_INIT(SURFACE_CLOSE_CAMERA, 55),\n    COL_TRI(54, 63, 58),\n    COL_TRI(54, 55, 56),\n    COL_TRI(54, 56, 57),\n    COL_TRI(58, 59, 60),\n    COL_TRI(58, 61, 59),\n    COL_TRI(54, 62, 63),\n    COL_TRI(54, 57, 62),\n    COL_TRI(64, 63, 62),\n    COL_TRI(65, 62, 57),\n    COL_TRI(64, 62, 65),\n    COL_TRI(66, 61, 63),\n    COL_TRI(66, 63, 64),\n    COL_TRI(63, 61, 58),\n    COL_TRI(65, 57, 67),\n    COL_TRI(67, 57, 56),\n    COL_TRI(65, 67, 86),\n    COL_TRI(67, 56, 68),\n    COL_TRI(67, 68, 86),\n    COL_TRI(64, 65, 86),\n    COL_TRI(68, 56, 59),\n    COL_TRI(68, 59, 70),\n    COL_TRI(68, 85, 86),\n    COL_TRI(64, 86, 87),\n    COL_TRI(66, 64, 87),\n    COL_TRI(69, 66, 87),\n    COL_TRI(70, 61, 66),\n    COL_TRI(69, 70, 66),\n    COL_TRI(71, 69, 88),\n    COL_TRI(70, 59, 61),\n    COL_TRI(72, 74, 73),\n    COL_TRI(73, 90, 91),\n    COL_TRI(74, 90, 73),\n    COL_TRI(75, 73, 91),\n    COL_TRI(75, 76, 73),\n    COL_TRI(73, 78, 72),\n    COL_TRI(78, 73, 92),\n    COL_TRI(76, 58, 73),\n    COL_TRI(77, 56, 92),\n    COL_TRI(56, 55, 92),\n    COL_TRI(77, 59, 56),\n    COL_TRI(77, 60, 59),\n    COL_TRI(73, 77, 92),\n    COL_TRI(79, 93, 94),\n    COL_TRI(80, 79, 94),\n    COL_TRI(81, 82, 83),\n    COL_TRI(82, 71, 89),\n    COL_TRI(83, 82, 89),\n    COL_TRI(79, 81, 83),\n    COL_TRI(79, 83, 93),\n    COL_TRI(84, 81, 79),\n    COL_TRI(84, 96, 81),\n    COL_TRI(84, 79, 80),\n    COL_TRI(85, 69, 71),\n    COL_TRI(71, 88, 89),\n    COL_TRI(80, 95, 84),\n    COL_TRI_INIT(SURFACE_VERY_SLIPPERY, 5),\n    COL_TRI(134, 123, 357),\n    COL_TRI(357, 123, 358),\n    COL_TRI(123, 359, 358),\n    COL_TRI(359, 357, 358),\n    COL_TRI(134, 357, 212),\n    COL_TRI_INIT(SURFACE_SLIPPERY, 62),\n    COL_TRI(262, 533, 263),\n    COL_TRI(533, 267, 534),\n    COL_TRI(533, 534, 263),\n    COL_TRI(533, 268, 267),\n    COL_TRI(263, 535, 295),\n    COL_TRI(263, 534, 535),\n    COL_TRI(534, 267, 535),\n    COL_TRI(267, 338, 535),\n    COL_TRI(272, 533, 262),\n    COL_TRI(272, 271, 533),\n    COL_TRI(271, 269, 533),\n    COL_TRI(269, 268, 533),\n    COL_TRI(357, 359, 536),\n    COL_TRI(357, 536, 538),\n    COL_TRI(536, 537, 544),\n    COL_TRI(536, 544, 538),\n    COL_TRI(241, 537, 536),\n    COL_TRI(537, 239, 544),\n    COL_TRI(538, 544, 239),\n    COL_TRI(538, 239, 192),\n    COL_TRI(81, 96, 545),\n    COL_TRI(537, 240, 239),\n    COL_TRI(241, 240, 537),\n    COL_TRI(212, 357, 192),\n    COL_TRI(96, 241, 359),\n    COL_TRI(359, 123, 545),\n    COL_TRI(96, 359, 545),\n    COL_TRI(303, 542, 300),\n    COL_TRI(81, 545, 539),\n    COL_TRI(82, 81, 539),\n    COL_TRI(82, 539, 123),\n    COL_TRI(539, 545, 123),\n    COL_TRI(244, 82, 123),\n    COL_TRI(82, 244, 71),\n    COL_TRI(303, 340, 541),\n    COL_TRI(303, 541, 542),\n    COL_TRI(110, 301, 541),\n    COL_TRI(540, 110, 541),\n    COL_TRI(340, 540, 541),\n    COL_TRI(541, 301, 339),\n    COL_TRI(541, 339, 542),\n    COL_TRI(335, 300, 542),\n    COL_TRI(542, 339, 543),\n    COL_TRI(335, 542, 543),\n    COL_TRI(339, 336, 543),\n    COL_TRI(543, 336, 335),\n    COL_TRI(310, 334, 535),\n    COL_TRI(310, 535, 338),\n    COL_TRI(343, 304, 305),\n    COL_TRI(334, 295, 535),\n    COL_TRI(334, 297, 295),\n    COL_TRI(342, 343, 546),\n    COL_TRI(342, 546, 311),\n    COL_TRI(311, 546, 101),\n    COL_TRI(101, 546, 305),\n    COL_TRI(343, 305, 546),\n    COL_TRI(102, 311, 101),\n    COL_TRI(353, 312, 354),\n    COL_TRI(101, 305, 120),\n    COL_TRI(352, 354, 315),\n    COL_TRI(352, 353, 354),\n    COL_TRI(312, 350, 354),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 167),\n    COL_TRI(251, 362, 208),\n    COL_TRI(251, 360, 362),\n    COL_TRI(211, 361, 251),\n    COL_TRI(361, 360, 251),\n    COL_TRI(208, 362, 364),\n    COL_TRI(208, 364, 207),\n    COL_TRI(207, 364, 477),\n    COL_TRI(207, 477, 250),\n    COL_TRI(250, 477, 252),\n    COL_TRI(477, 476, 252),\n    COL_TRI(252, 475, 210),\n    COL_TRI(252, 476, 475),\n    COL_TRI(547, 146, 549),\n    COL_TRI(210, 475, 363),\n    COL_TRI(210, 363, 165),\n    COL_TRI(165, 363, 361),\n    COL_TRI(165, 361, 211),\n    COL_TRI(171, 172, 547),\n    COL_TRI(171, 547, 548),\n    COL_TRI(145, 549, 146),\n    COL_TRI(171, 548, 182),\n    COL_TRI(548, 549, 144),\n    COL_TRI(145, 144, 549),\n    COL_TRI(144, 182, 548),\n    COL_TRI(550, 90, 552),\n    COL_TRI(549, 548, 547),\n    COL_TRI(146, 547, 172),\n    COL_TRI(149, 91, 550),\n    COL_TRI(149, 550, 551),\n    COL_TRI(74, 552, 90),\n    COL_TRI(149, 551, 147),\n    COL_TRI(551, 552, 148),\n    COL_TRI(74, 148, 552),\n    COL_TRI(148, 147, 551),\n    COL_TRI(153, 553, 221),\n    COL_TRI(552, 551, 550),\n    COL_TRI(90, 550, 91),\n    COL_TRI(153, 206, 553),\n    COL_TRI(206, 76, 555),\n    COL_TRI(553, 555, 286),\n    COL_TRI(553, 286, 287),\n    COL_TRI(554, 553, 287),\n    COL_TRI(221, 554, 150),\n    COL_TRI(75, 150, 554),\n    COL_TRI(75, 554, 555),\n    COL_TRI(555, 283, 284),\n    COL_TRI(554, 221, 553),\n    COL_TRI(75, 555, 76),\n    COL_TRI(555, 553, 206),\n    COL_TRI(555, 284, 286),\n    COL_TRI(554, 287, 283),\n    COL_TRI(555, 554, 283),\n    COL_TRI(556, 224, 223),\n    COL_TRI(557, 226, 225),\n    COL_TRI(556, 559, 224),\n    COL_TRI(224, 559, 222),\n    COL_TRI(558, 556, 557),\n    COL_TRI(222, 559, 151),\n    COL_TRI(220, 558, 227),\n    COL_TRI(559, 558, 152),\n    COL_TRI(558, 219, 152),\n    COL_TRI(219, 558, 220),\n    COL_TRI(151, 559, 152),\n    COL_TRI(558, 559, 556),\n    COL_TRI(557, 227, 558),\n    COL_TRI(557, 225, 227),\n    COL_TRI(557, 556, 226),\n    COL_TRI(223, 226, 556),\n    COL_TRI(158, 560, 229),\n    COL_TRI(167, 562, 159),\n    COL_TRI(229, 560, 561),\n    COL_TRI(229, 561, 230),\n    COL_TRI(560, 160, 562),\n    COL_TRI(230, 561, 164),\n    COL_TRI(561, 562, 167),\n    COL_TRI(561, 167, 166),\n    COL_TRI(164, 561, 166),\n    COL_TRI(159, 562, 160),\n    COL_TRI(562, 561, 560),\n    COL_TRI(160, 560, 228),\n    COL_TRI(560, 158, 228),\n    COL_TRI(563, 565, 564),\n    COL_TRI(563, 175, 176),\n    COL_TRI(564, 183, 563),\n    COL_TRI(564, 565, 170),\n    COL_TRI(169, 564, 170),\n    COL_TRI(183, 184, 563),\n    COL_TRI(565, 563, 176),\n    COL_TRI(564, 181, 180),\n    COL_TRI(170, 565, 173),\n    COL_TRI(173, 565, 176),\n    COL_TRI(181, 564, 169),\n    COL_TRI(183, 564, 180),\n    COL_TRI(124, 388, 387),\n    COL_TRI(563, 184, 185),\n    COL_TRI(174, 563, 185),\n    COL_TRI(175, 563, 174),\n    COL_TRI(124, 387, 566),\n    COL_TRI(124, 260, 567),\n    COL_TRI(124, 567, 390),\n    COL_TRI(124, 390, 389),\n    COL_TRI(124, 389, 388),\n    COL_TRI(566, 387, 495),\n    COL_TRI(416, 124, 566),\n    COL_TRI(416, 566, 569),\n    COL_TRI(566, 495, 569),\n    COL_TRI(390, 567, 568),\n    COL_TRI(390, 568, 497),\n    COL_TRI(567, 260, 568),\n    COL_TRI(260, 306, 568),\n    COL_TRI(568, 306, 446),\n    COL_TRI(568, 446, 569),\n    COL_TRI(568, 569, 495),\n    COL_TRI(568, 495, 494),\n    COL_TRI(431, 293, 413),\n    COL_TRI(568, 494, 496),\n    COL_TRI(568, 496, 497),\n    COL_TRI(415, 416, 569),\n    COL_TRI(415, 569, 446),\n    COL_TRI(446, 506, 505),\n    COL_TRI(431, 511, 293),\n    COL_TRI(511, 290, 293),\n    COL_TRI(291, 290, 511),\n    COL_TRI(291, 511, 412),\n    COL_TRI(293, 292, 413),\n    COL_TRI(292, 291, 412),\n    COL_TRI(413, 292, 412),\n    COL_TRI(479, 449, 480),\n    COL_TRI(479, 528, 449),\n    COL_TRI(479, 478, 528),\n    COL_TRI(449, 447, 480),\n    COL_TRI(394, 457, 459),\n    COL_TRI(529, 369, 480),\n    COL_TRI(529, 480, 447),\n    COL_TRI(478, 369, 528),\n    COL_TRI(369, 529, 528),\n    COL_TRI(437, 455, 457),\n    COL_TRI(437, 521, 455),\n    COL_TRI(394, 437, 457),\n    COL_TRI(521, 143, 455),\n    COL_TRI(460, 424, 532),\n    COL_TRI(456, 522, 458),\n    COL_TRI(138, 456, 139),\n    COL_TRI(522, 423, 458),\n    COL_TRI(458, 424, 460),\n    COL_TRI(458, 423, 424),\n    COL_TRI(394, 459, 396),\n    COL_TRI(459, 531, 396),\n    COL_TRI(424, 425, 532),\n    COL_TRI(425, 463, 532),\n    COL_TRI(425, 428, 463),\n    COL_TRI(462, 463, 428),\n    COL_TRI(429, 462, 428),\n    COL_TRI(464, 257, 531),\n    COL_TRI(461, 217, 464),\n    COL_TRI(217, 257, 464),\n    COL_TRI(257, 396, 531),\n    COL_TRI(462, 429, 466),\n    COL_TRI(429, 421, 466),\n    COL_TRI(410, 505, 507),\n    COL_TRI(511, 461, 465),\n    COL_TRI(511, 217, 461),\n    COL_TRI(412, 511, 465),\n    COL_TRI(412, 465, 514),\n    COL_TRI(466, 421, 419),\n    COL_TRI(421, 420, 419),\n    COL_TRI(505, 506, 507),\n    COL_TRI_INIT(SURFACE_WALL_MISC, 198),\n    COL_TRI(9, 10, 11),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(3, 4, 5),\n    COL_TRI(5, 4, 6),\n    COL_TRI(5, 6, 1),\n    COL_TRI(3, 7, 4),\n    COL_TRI(1, 6, 8),\n    COL_TRI(1, 8, 2),\n    COL_TRI(2, 8, 7),\n    COL_TRI(2, 7, 3),\n    COL_TRI(9, 11, 12),\n    COL_TRI(13, 10, 9),\n    COL_TRI(13, 35, 10),\n    COL_TRI(12, 11, 36),\n    COL_TRI(12, 36, 14),\n    COL_TRI(14, 36, 35),\n    COL_TRI(14, 35, 13),\n    COL_TRI(9, 14, 13),\n    COL_TRI(9, 12, 14),\n    COL_TRI(15, 37, 38),\n    COL_TRI(15, 38, 17),\n    COL_TRI(16, 39, 37),\n    COL_TRI(16, 37, 15),\n    COL_TRI(17, 38, 40),\n    COL_TRI(17, 40, 18),\n    COL_TRI(18, 39, 16),\n    COL_TRI(18, 40, 39),\n    COL_TRI(17, 18, 16),\n    COL_TRI(17, 16, 15),\n    COL_TRI(19, 22, 20),\n    COL_TRI(23, 26, 24),\n    COL_TRI(19, 21, 22),\n    COL_TRI(20, 41, 19),\n    COL_TRI(19, 42, 21),\n    COL_TRI(19, 41, 42),\n    COL_TRI(21, 42, 43),\n    COL_TRI(21, 43, 22),\n    COL_TRI(20, 44, 41),\n    COL_TRI(22, 43, 44),\n    COL_TRI(22, 44, 20),\n    COL_TRI(23, 27, 26),\n    COL_TRI(24, 26, 25),\n    COL_TRI(27, 29, 45),\n    COL_TRI(28, 29, 27),\n    COL_TRI(26, 27, 45),\n    COL_TRI(28, 27, 23),\n    COL_TRI(29, 25, 45),\n    COL_TRI(25, 26, 45),\n    COL_TRI(30, 29, 28),\n    COL_TRI(30, 25, 29),\n    COL_TRI(24, 25, 30),\n    COL_TRI(31, 34, 32),\n    COL_TRI(31, 33, 34),\n    COL_TRI(32, 46, 31),\n    COL_TRI(31, 47, 33),\n    COL_TRI(31, 46, 47),\n    COL_TRI(33, 47, 48),\n    COL_TRI(33, 48, 34),\n    COL_TRI(32, 49, 46),\n    COL_TRI(34, 48, 49),\n    COL_TRI(34, 49, 32),\n    COL_TRI(116, 269, 272),\n    COL_TRI(262, 263, 264),\n    COL_TRI(262, 264, 265),\n    COL_TRI(266, 267, 268),\n    COL_TRI(266, 200, 267),\n    COL_TRI(266, 268, 269),\n    COL_TRI(266, 269, 270),\n    COL_TRI(269, 271, 272),\n    COL_TRI(116, 270, 269),\n    COL_TRI(279, 281, 278),\n    COL_TRI(273, 276, 318),\n    COL_TRI(273, 318, 275),\n    COL_TRI(274, 276, 273),\n    COL_TRI(275, 318, 319),\n    COL_TRI(276, 319, 318),\n    COL_TRI(275, 319, 277),\n    COL_TRI(274, 320, 276),\n    COL_TRI(276, 320, 319),\n    COL_TRI(277, 319, 320),\n    COL_TRI(277, 320, 274),\n    COL_TRI(278, 281, 321),\n    COL_TRI(278, 321, 280),\n    COL_TRI(280, 321, 322),\n    COL_TRI(281, 322, 321),\n    COL_TRI(280, 322, 282),\n    COL_TRI(281, 323, 322),\n    COL_TRI(279, 323, 281),\n    COL_TRI(282, 322, 323),\n    COL_TRI(282, 323, 279),\n    COL_TRI(283, 324, 285),\n    COL_TRI(283, 285, 284),\n    COL_TRI(284, 285, 325),\n    COL_TRI(285, 324, 326),\n    COL_TRI(285, 326, 325),\n    COL_TRI(286, 326, 287),\n    COL_TRI(287, 326, 324),\n    COL_TRI(286, 325, 326),\n    COL_TRI(284, 325, 286),\n    COL_TRI(287, 324, 283),\n    COL_TRI(198, 327, 243),\n    COL_TRI(198, 288, 327),\n    COL_TRI(216, 288, 198),\n    COL_TRI(243, 327, 328),\n    COL_TRI(288, 328, 327),\n    COL_TRI(292, 332, 291),\n    COL_TRI(243, 328, 242),\n    COL_TRI(288, 329, 328),\n    COL_TRI(216, 329, 288),\n    COL_TRI(242, 328, 329),\n    COL_TRI(242, 329, 216),\n    COL_TRI(289, 330, 331),\n    COL_TRI(289, 332, 330),\n    COL_TRI(290, 289, 331),\n    COL_TRI(291, 289, 290),\n    COL_TRI(291, 332, 289),\n    COL_TRI(292, 330, 332),\n    COL_TRI(293, 330, 292),\n    COL_TRI(293, 331, 330),\n    COL_TRI(290, 331, 293),\n    COL_TRI(298, 337, 335),\n    COL_TRI(263, 295, 294),\n    COL_TRI(263, 294, 264),\n    COL_TRI(294, 295, 333),\n    COL_TRI(295, 297, 333),\n    COL_TRI(296, 333, 297),\n    COL_TRI(297, 334, 310),\n    COL_TRI(296, 297, 310),\n    COL_TRI(298, 335, 336),\n    COL_TRI(301, 110, 215),\n    COL_TRI(298, 336, 339),\n    COL_TRI(299, 300, 337),\n    COL_TRI(300, 335, 337),\n    COL_TRI(215, 339, 301),\n    COL_TRI(215, 254, 339),\n    COL_TRI(298, 339, 254),\n    COL_TRI(195, 123, 304),\n    COL_TRI(110, 253, 215),\n    COL_TRI(302, 340, 303),\n    COL_TRI(302, 341, 340),\n    COL_TRI(303, 300, 302),\n    COL_TRI(300, 299, 302),\n    COL_TRI(195, 304, 342),\n    COL_TRI(260, 261, 344),\n    COL_TRI(304, 343, 342),\n    COL_TRI(305, 304, 122),\n    COL_TRI(304, 123, 122),\n    COL_TRI(194, 342, 311),\n    COL_TRI(194, 195, 342),\n    COL_TRI(306, 260, 344),\n    COL_TRI(54, 348, 347),\n    COL_TRI(261, 308, 345),\n    COL_TRI(261, 345, 307),\n    COL_TRI(261, 307, 344),\n    COL_TRI(307, 346, 344),\n    COL_TRI(307, 345, 346),\n    COL_TRI(308, 346, 345),\n    COL_TRI(308, 306, 346),\n    COL_TRI(306, 344, 346),\n    COL_TRI(108, 54, 347),\n    COL_TRI(54, 259, 348),\n    COL_TRI(200, 205, 338),\n    COL_TRI(309, 347, 348),\n    COL_TRI(309, 348, 349),\n    COL_TRI(259, 349, 348),\n    COL_TRI(108, 347, 309),\n    COL_TRI(259, 105, 349),\n    COL_TRI(108, 349, 105),\n    COL_TRI(108, 309, 349),\n    COL_TRI(310, 205, 296),\n    COL_TRI(310, 338, 205),\n    COL_TRI(200, 338, 267),\n    COL_TRI(311, 102, 194),\n    COL_TRI(102, 104, 194),\n    COL_TRI(120, 305, 118),\n    COL_TRI(104, 120, 101),\n    COL_TRI(104, 118, 120),\n    COL_TRI(305, 122, 118),\n    COL_TRI(312, 314, 350),\n    COL_TRI(312, 351, 314),\n    COL_TRI(313, 351, 312),\n    COL_TRI(95, 314, 351),\n    COL_TRI(314, 315, 350),\n    COL_TRI(314, 95, 315),\n    COL_TRI(315, 354, 350),\n    COL_TRI(95, 351, 313),\n    COL_TRI(313, 312, 352),\n    COL_TRI(312, 353, 352),\n    COL_TRI(315, 313, 352),\n    COL_TRI(315, 95, 313),\n    COL_TRI(317, 316, 356),\n    COL_TRI(104, 101, 102),\n    COL_TRI(316, 355, 356),\n    COL_TRI(262, 264, 265),\n    COL_TRI(262, 263, 264),\n    COL_TRI(116, 262, 265),\n    COL_TRI(116, 272, 262),\n    COL_TRI_INIT(SURFACE_NOISE_DEFAULT, 141),\n    COL_TRI(134, 144, 133),\n    COL_TRI(133, 145, 146),\n    COL_TRI(144, 145, 133),\n    COL_TRI(117, 133, 146),\n    COL_TRI(72, 75, 147),\n    COL_TRI(148, 72, 147),\n    COL_TRI(72, 148, 74),\n    COL_TRI(75, 91, 149),\n    COL_TRI(75, 149, 147),\n    COL_TRI(150, 75, 72),\n    COL_TRI(151, 152, 153),\n    COL_TRI(152, 219, 153),\n    COL_TRI(153, 219, 220),\n    COL_TRI(154, 151, 153),\n    COL_TRI(155, 153, 220),\n    COL_TRI(87, 206, 153),\n    COL_TRI(155, 156, 153),\n    COL_TRI(156, 87, 153),\n    COL_TRI(157, 153, 221),\n    COL_TRI(154, 222, 151),\n    COL_TRI(154, 223, 224),\n    COL_TRI(154, 155, 223),\n    COL_TRI(154, 224, 222),\n    COL_TRI(155, 225, 226),\n    COL_TRI(155, 226, 223),\n    COL_TRI(155, 220, 227),\n    COL_TRI(155, 227, 225),\n    COL_TRI(158, 162, 228),\n    COL_TRI(112, 158, 229),\n    COL_TRI(112, 162, 158),\n    COL_TRI(159, 160, 162),\n    COL_TRI(160, 228, 162),\n    COL_TRI(161, 159, 162),\n    COL_TRI(162, 112, 163),\n    COL_TRI(163, 231, 162),\n    COL_TRI(112, 230, 164),\n    COL_TRI(112, 229, 230),\n    COL_TRI(112, 166, 161),\n    COL_TRI(164, 166, 112),\n    COL_TRI(165, 112, 232),\n    COL_TRI(166, 167, 161),\n    COL_TRI(167, 159, 161),\n    COL_TRI(161, 232, 112),\n    COL_TRI(168, 154, 153),\n    COL_TRI(168, 153, 233),\n    COL_TRI(157, 233, 153),\n    COL_TRI(169, 170, 134),\n    COL_TRI(170, 117, 134),\n    COL_TRI(117, 178, 115),\n    COL_TRI(117, 171, 134),\n    COL_TRI(117, 172, 171),\n    COL_TRI(117, 146, 172),\n    COL_TRI(117, 173, 176),\n    COL_TRI(117, 174, 179),\n    COL_TRI(117, 175, 174),\n    COL_TRI(117, 176, 175),\n    COL_TRI(117, 170, 173),\n    COL_TRI(177, 178, 117),\n    COL_TRI(177, 117, 179),\n    COL_TRI(174, 185, 179),\n    COL_TRI(179, 180, 134),\n    COL_TRI(180, 181, 134),\n    COL_TRI(181, 169, 134),\n    COL_TRI(171, 182, 134),\n    COL_TRI(182, 144, 134),\n    COL_TRI(47, 134, 212),\n    COL_TRI(189, 190, 187),\n    COL_TRI(183, 180, 179),\n    COL_TRI(184, 183, 179),\n    COL_TRI(185, 184, 179),\n    COL_TRI(186, 235, 236),\n    COL_TRI(187, 186, 236),\n    COL_TRI(186, 188, 235),\n    COL_TRI(188, 237, 235),\n    COL_TRI(189, 187, 236),\n    COL_TRI(190, 238, 187),\n    COL_TRI(190, 191, 238),\n    COL_TRI(191, 188, 238),\n    COL_TRI(191, 237, 188),\n    COL_TRI(192, 239, 240),\n    COL_TRI(192, 240, 241),\n    COL_TRI(193, 47, 212),\n    COL_TRI(47, 179, 134),\n    COL_TRI(47, 177, 179),\n    COL_TRI(194, 104, 196),\n    COL_TRI(195, 122, 194),\n    COL_TRI(194, 122, 104),\n    COL_TRI(195, 123, 122),\n    COL_TRI(122, 118, 104),\n    COL_TRI(196, 104, 242),\n    COL_TRI(100, 242, 104),\n    COL_TRI(163, 112, 197),\n    COL_TRI(123, 195, 244),\n    COL_TRI(99, 196, 216),\n    COL_TRI(197, 245, 163),\n    COL_TRI(130, 246, 197),\n    COL_TRI(99, 216, 198),\n    COL_TRI(99, 198, 100),\n    COL_TRI(100, 198, 243),\n    COL_TRI(100, 243, 242),\n    COL_TRI(112, 130, 197),\n    COL_TRI(130, 247, 246),\n    COL_TRI(115, 234, 199),\n    COL_TRI(47, 205, 199),\n    COL_TRI(47, 199, 177),\n    COL_TRI(199, 200, 115),\n    COL_TRI(200, 201, 115),\n    COL_TRI(201, 116, 115),\n    COL_TRI(178, 234, 115),\n    COL_TRI(202, 204, 248),\n    COL_TRI(203, 204, 202),\n    COL_TRI(204, 249, 248),\n    COL_TRI(72, 157, 150),\n    COL_TRI(157, 221, 150),\n    COL_TRI(205, 200, 199),\n    COL_TRI(202, 209, 203),\n    COL_TRI(76, 206, 58),\n    COL_TRI(206, 87, 58),\n    COL_TRI(207, 250, 127),\n    COL_TRI(208, 207, 127),\n    COL_TRI(208, 127, 128),\n    COL_TRI(128, 251, 208),\n    COL_TRI(165, 211, 128),\n    COL_TRI(127, 250, 202),\n    COL_TRI(202, 250, 209),\n    COL_TRI(209, 250, 252),\n    COL_TRI(210, 165, 232),\n    COL_TRI(112, 165, 128),\n    COL_TRI(211, 251, 128),\n    COL_TRI(96, 212, 241),\n    COL_TRI(212, 192, 241),\n    COL_TRI(213, 253, 215),\n    COL_TRI(214, 213, 254),\n    COL_TRI(215, 254, 213),\n    COL_TRI(193, 212, 96),\n    COL_TRI(196, 99, 135),\n    COL_TRI(216, 196, 242),\n    COL_TRI(213, 214, 255),\n    COL_TRI(213, 255, 256),\n    COL_TRI(217, 218, 257),\n    COL_TRI(218, 258, 257),\n    COL_TRI_INIT(SURFACE_NOISE_SLIPPERY, 43),\n    COL_TRI(107, 105, 106),\n    COL_TRI(97, 98, 99),\n    COL_TRI(97, 99, 100),\n    COL_TRI(101, 97, 102),\n    COL_TRI(101, 103, 97),\n    COL_TRI(104, 97, 100),\n    COL_TRI(104, 102, 97),\n    COL_TRI(105, 99, 106),\n    COL_TRI(98, 106, 99),\n    COL_TRI(107, 108, 105),\n    COL_TRI(109, 72, 125),\n    COL_TRI(110, 72, 109),\n    COL_TRI(110, 109, 126),\n    COL_TRI(72, 108, 107),\n    COL_TRI(72, 107, 125),\n    COL_TRI(110, 111, 127),\n    COL_TRI(110, 126, 111),\n    COL_TRI(111, 113, 112),\n    COL_TRI(112, 128, 111),\n    COL_TRI(113, 129, 112),\n    COL_TRI(112, 129, 130),\n    COL_TRI(113, 114, 129),\n    COL_TRI(111, 128, 127),\n    COL_TRI(114, 115, 116),\n    COL_TRI(115, 114, 131),\n    COL_TRI(115, 131, 132),\n    COL_TRI(116, 129, 114),\n    COL_TRI(117, 132, 119),\n    COL_TRI(115, 132, 117),\n    COL_TRI(117, 121, 133),\n    COL_TRI(118, 117, 119),\n    COL_TRI(101, 119, 103),\n    COL_TRI(101, 120, 119),\n    COL_TRI(119, 120, 118),\n    COL_TRI(121, 122, 133),\n    COL_TRI(118, 122, 121),\n    COL_TRI(122, 123, 133),\n    COL_TRI(123, 134, 133),\n    COL_TRI(124, 135, 99),\n    COL_TRI(99, 105, 124),\n    COL_TRI(117, 118, 136),\n    COL_TRI(118, 121, 136),\n    COL_TRI(121, 117, 136),\n    COL_TRI_INIT(SURFACE_BOSS_FIGHT_CAMERA, 5),\n    COL_TRI(137, 139, 143),\n    COL_TRI(137, 138, 139),\n    COL_TRI(137, 140, 141),\n    COL_TRI(137, 142, 140),\n    COL_TRI(137, 141, 138),\n    COL_TRI_INIT(SURFACE_CAMERA_ROTATE_LEFT, 4),\n    COL_TRI(259, 124, 105),\n    COL_TRI(54, 260, 259),\n    COL_TRI(54, 261, 260),\n    COL_TRI(260, 124, 259),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(17),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree, /*pos*/ -5792, 1024, -4654),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree, /*pos*/ -1509,  144,  5094),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree, /*pos*/ -4095,  768,  3072),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree, /*pos*/ -5119,  768,  2048),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree, /*pos*/  5444,  863,  6016),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree, /*pos*/ -6655,  768,  3584),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree, /*pos*/ -6130,  900, -6507),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree, /*pos*/ -6804, 1024, -4866),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree, /*pos*/  6033, 2194, -7660),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree, /*pos*/ -4095,  768,  1536),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree, /*pos*/ -4268,    0,  4768),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree, /*pos*/ -3583,  768,  2560),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree, /*pos*/ -6172, 1024,  -430),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree, /*pos*/  4096, 3072,  1638),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree, /*pos*/  6799, 2008, -5587),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree, /*pos*/  2911,  768,  5917),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree, /*pos*/  4208,  927,  3772),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bob/areas/1/geo.inc.c",
    "content": "// 0x0E000488\nconst GeoLayout bob_geo_000488[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND(BACKGROUND_OCEAN_SKY, geo_skybox_main),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 30000, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(1, 0, 2000, 6000, 3072, 0, -4608, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, bob_seg7_dl_07004390),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, bob_seg7_dl_07009D80),\n                    GEO_DISPLAY_LIST(LAYER_TRANSPARENT_DECAL, bob_seg7_dl_0700A470),\n                    GEO_DISPLAY_LIST(LAYER_ALPHA, bob_seg7_dl_0700A920),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, bob_seg7_dl_0700DD18),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, bob_seg7_dl_0700E338),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(0, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_cannon_circle_base),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bob/areas/1/macro.inc.c",
    "content": "// 0x0701104C - 0x070113BE\nconst MacroObject bob_seg7_macro_objs[] = {\n    MACRO_OBJECT               (/*preset*/ macro_chain_chomp,               /*yaw*/   0, /*pos*/   260,   735,  1920),\n    MACRO_OBJECT               (/*preset*/ macro_breakable_box_no_coins,    /*yaw*/   0, /*pos*/ -3979,     0,  6827),\n    MACRO_OBJECT               (/*preset*/ macro_goomba,                    /*yaw*/   0, /*pos*/ -2713,   152,  5778),\n    MACRO_OBJECT               (/*preset*/ macro_goomba,                    /*yaw*/   0, /*pos*/  -342,   400,  5433),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_water_bomb_spawner,        /*yaw*/   0, /*pos*/  3620,  4000,  4800, /*bhvParam*/ 15),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_water_bomb_spawner,        /*yaw*/   0, /*pos*/ -5141,  3764,  -743, /*bhvParam*/ 25),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_water_bomb_spawner,        /*yaw*/   0, /*pos*/ -4208,  3769, -2036, /*bhvParam*/ 10),\n    MACRO_OBJECT               (/*preset*/ macro_water_bomb_cannon_2,       /*yaw*/ 315, /*pos*/  1388,  2918, -2383),\n    MACRO_OBJECT               (/*preset*/ macro_wooden_post_1,             /*yaw*/   0, /*pos*/ -6500,   768,  1800),\n    MACRO_OBJECT               (/*preset*/ macro_wooden_post_1,             /*yaw*/   0, /*pos*/ -5500,   768,  1800),\n    MACRO_OBJECT               (/*preset*/ macro_wooden_post_1,             /*yaw*/   0, /*pos*/ -6500,   768,  3000),\n    MACRO_OBJECT               (/*preset*/ macro_wooden_post_1,             /*yaw*/   0, /*pos*/ -5500,   768,  3000),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,           /*yaw*/ 270, /*pos*/ -4000,     0,  6050, /*bhvParam*/ DIALOG_015),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,           /*yaw*/   0, /*pos*/  1230,   768,  3258, /*bhvParam*/ DIALOG_008),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_cannon_closed,             /*yaw*/   0, /*pos*/ -5018,  1332, -3533, /*bhvParam*/ 0x00),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_cannon_closed,             /*yaw*/   0, /*pos*/  6349,  2080, -7066, /*bhvParam*/ 0xC0),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_cannon_closed,             /*yaw*/   0, /*pos*/  4243,  3071, -2451, /*bhvParam*/ 0xC0),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_cannon_closed,             /*yaw*/   0, /*pos*/  4352,  3072,  1229, /*bhvParam*/ 0x80),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_cannon_closed,             /*yaw*/   0, /*pos*/  5376,  1537,  4610, /*bhvParam*/ 0x40),\n    MACRO_OBJECT               (/*preset*/ macro_bobomb,                    /*yaw*/   0, /*pos*/ -3080,     0, -5200),\n    MACRO_OBJECT               (/*preset*/ macro_bobomb,                    /*yaw*/   0, /*pos*/ -3688,   885, -3813),\n    MACRO_OBJECT               (/*preset*/ macro_bobomb,                    /*yaw*/   0, /*pos*/ -4629,  1024, -1772),\n    MACRO_OBJECT               (/*preset*/ macro_bobomb,                    /*yaw*/   0, /*pos*/ -3480,   891, -2120),\n    MACRO_OBJECT               (/*preset*/ macro_bobomb,                    /*yaw*/   0, /*pos*/ -3800,  1024,  -460),\n    MACRO_OBJECT               (/*preset*/ macro_bobomb,                    /*yaw*/   0, /*pos*/  6888,  2002, -5608),\n    MACRO_OBJECT               (/*preset*/ macro_recovery_heart,            /*yaw*/   0, /*pos*/  3603,  3659, -7070),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_horizontal,      /*yaw*/   0, /*pos*/ -6060,  1060, -5340),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,      /*yaw*/  90, /*pos*/  -129,     0,  5668),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,      /*yaw*/  75, /*pos*/  1851,  2917, -2234),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                  /*yaw*/   0, /*pos*/ -5500,   768,  2400),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                  /*yaw*/   0, /*pos*/ -6500,   768,  2400),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                  /*yaw*/   0, /*pos*/  1135,  1920, -7161),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                  /*yaw*/   0, /*pos*/   250,  1000,  1920),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                  /*yaw*/   0, /*pos*/  1600,   980,  4440),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                  /*yaw*/   0, /*pos*/ -2755,     0, -4083),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                  /*yaw*/   0, /*pos*/  4934,  1352,   861),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                  /*yaw*/   0, /*pos*/  4100,  3672,  1629),\n    MACRO_OBJECT               (/*preset*/ macro_box_wing_cap,              /*yaw*/   0, /*pos*/ -6710,  1300, -2170),\n    MACRO_OBJECT               (/*preset*/ macro_breakable_box_small,       /*yaw*/   0, /*pos*/ -3740,     0,  6180),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,           /*yaw*/ 270, /*pos*/ -4000,     0,  6300, /*bhvParam*/ DIALOG_095),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_hidden_1up,                /*yaw*/   0, /*pos*/ -6060,  1060, -5340, /*bhvParam*/ 4),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,        /*yaw*/   0, /*pos*/ -5760,  1060, -5340),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,        /*yaw*/   0, /*pos*/ -6360,  1060, -5340),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,        /*yaw*/   0, /*pos*/ -6060,  1060, -5640),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,        /*yaw*/   0, /*pos*/ -6060,  1040, -5040),\n    MACRO_OBJECT               (/*preset*/ macro_box_wing_cap,              /*yaw*/   0, /*pos*/  3789,  3340,  1818),\n    MACRO_OBJECT               (/*preset*/ macro_bobomb,                    /*yaw*/   0, /*pos*/  2350,   757,  3700),\n    MACRO_OBJECT               (/*preset*/ macro_bobomb,                    /*yaw*/   0, /*pos*/ -1750,     0, -2800),\n    MACRO_OBJECT               (/*preset*/ macro_bobomb,                    /*yaw*/   0, /*pos*/ -1400,     0,  -950),\n    MACRO_OBJECT               (/*preset*/ macro_bobomb,                    /*yaw*/   0, /*pos*/ -2650,     0,  1750),\n    MACRO_OBJECT               (/*preset*/ macro_bobomb,                    /*yaw*/   0, /*pos*/ -1900,     0,  3450),\n    MACRO_OBJECT               (/*preset*/ macro_1up,                       /*yaw*/   0, /*pos*/ -2531,     0, -4201),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_in_pole,        /*yaw*/   0, /*pos*/  5444,  1400,  6016),\n    MACRO_OBJECT               (/*preset*/ macro_goomba_triplet_spawner,    /*yaw*/   0, /*pos*/  3640,   768,  6280),\n    MACRO_OBJECT               (/*preset*/ macro_goomba_triplet_spawner,    /*yaw*/   0, /*pos*/  6060,   877,  2000),\n    MACRO_OBJECT               (/*preset*/ macro_goomba_triplet_spawner,    /*yaw*/   0, /*pos*/ -6050,   768,  1250),\n    MACRO_OBJECT               (/*preset*/ macro_box_wing_cap,              /*yaw*/   0, /*pos*/   400,   350,  6500),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,           /*yaw*/ 270, /*pos*/    66,     0,  6977, /*bhvParam*/ DIALOG_113),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,           /*yaw*/   0, /*pos*/  3394,  3072,  1846, /*bhvParam*/ DIALOG_064),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,           /*yaw*/ 270, /*pos*/ -3110,   104,  5064, /*bhvParam*/ DIALOG_035),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,           /*yaw*/   0, /*pos*/  6860,  2041, -6640, /*bhvParam*/ DIALOG_074),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,           /*yaw*/   0, /*pos*/ -6020,   768,  2957, /*bhvParam*/ DIALOG_104),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_vertical_flying, /*yaw*/  90, /*pos*/ -1506,  5317,  1250),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_star_trigger,       /*yaw*/   0, /*pos*/ -1506,  5517,  1250),\n    MACRO_OBJECT               (/*preset*/ macro_breakable_box_no_coins,    /*yaw*/   0, /*pos*/  7157,  2027, -6714),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_vertical_flying, /*yaw*/  90, /*pos*/  1000,  3400,  1250),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_vertical_flying, /*yaw*/  90, /*pos*/  2000,  3400,  1250),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_vertical_flying, /*yaw*/  90, /*pos*/  3000,  3400,  1250),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_star_trigger,       /*yaw*/   0, /*pos*/  1000,  3600,  1250),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_star_trigger,       /*yaw*/   0, /*pos*/  2000,  3600,  1250),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_star_trigger,       /*yaw*/   0, /*pos*/  3000,  3600,  1250),\n    MACRO_OBJECT               (/*preset*/ macro_bobomb_stationary,         /*yaw*/   0, /*pos*/  1127,  2897, -2495),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,      /*yaw*/ 120, /*pos*/  4836,  3079, -2707),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,           /*yaw*/  45, /*pos*/ -3530,  1415,   430, /*bhvParam*/ DIALOG_050),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,           /*yaw*/   0, /*pos*/  5053,  3073,  2180, /*bhvParam*/ DIALOG_053),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,             /*yaw*/   0, /*pos*/ -1506,  5517,  1250),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,             /*yaw*/   0, /*pos*/  1000,  3600,  1250),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,             /*yaw*/   0, /*pos*/  2000,  3600,  1250),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,             /*yaw*/   0, /*pos*/  3000,  3600,  1250),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_star_trigger,       /*yaw*/   0, /*pos*/  -300,  4200,  1250),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,           /*yaw*/ 270, /*pos*/ -2224,   990, -4359, /*bhvParam*/ DIALOG_039),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,           /*yaw*/  60, /*pos*/  3911,  3529, -7081, /*bhvParam*/ DIALOG_112),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,           /*yaw*/   0, /*pos*/ -7000,  1024, -2099, /*bhvParam*/ DIALOG_032),\n    MACRO_OBJECT               (/*preset*/ macro_breakable_box_three_coins, /*yaw*/   0, /*pos*/ -3979,     0,  6627),\n    MACRO_OBJECT               (/*preset*/ macro_box_star_act_3,            /*yaw*/   0, /*pos*/  5540,  3350,  1200),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_vertical_flying, /*yaw*/  90, /*pos*/  -300,  4000,  1250),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,             /*yaw*/   0, /*pos*/  -300,  4200,  1250),\n    MACRO_OBJECT               (/*preset*/ macro_breakable_box_small,       /*yaw*/   0, /*pos*/ -6800,  1024,    40),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/bob/areas/1/trajectory.inc.c",
    "content": "// 0x07011530\nconst Trajectory bob_seg7_metal_ball_path0[] = {\n    TRAJECTORY_POS(0, /*pos*/  1535,  3839, -5561),\n    TRAJECTORY_POS(1, /*pos*/  1514,  3804, -5886),\n    TRAJECTORY_POS(2, /*pos*/  1927,  3827, -6232),\n    TRAJECTORY_POS(3, /*pos*/  2717,  3715, -6740),\n    TRAJECTORY_POS(4, /*pos*/  3113,  3668, -6918),\n    TRAJECTORY_POS(5, /*pos*/  3503,  3638, -6783),\n    TRAJECTORY_POS(6, /*pos*/  4863,  3354, -5954),\n    TRAJECTORY_POS(7, /*pos*/  5081,  3221, -5754),\n    TRAJECTORY_POS(8, /*pos*/  5118,  3209, -5481),\n    TRAJECTORY_POS(9, /*pos*/  5147,  3185, -3712),\n    TRAJECTORY_POS(10, /*pos*/  5016,  3149, -3370),\n    TRAJECTORY_POS(11, /*pos*/  4609,  3137, -3118),\n    TRAJECTORY_POS(12, /*pos*/  3075,  2909, -2345),\n    TRAJECTORY_POS(13, /*pos*/  2784,  1634, -2237),\n    TRAJECTORY_POS(14, /*pos*/  1926,  1505, -1139),\n    TRAJECTORY_POS(15, /*pos*/   517,   773,  -438),\n    TRAJECTORY_POS(16, /*pos*/ -1275,   179,   -83),\n    TRAJECTORY_POS(17, /*pos*/ -2089,     5,   -24),\n    TRAJECTORY_END(),\n};\n\n// 0x070115C4\nconst Trajectory bob_seg7_metal_ball_path1[] = {\n    TRAJECTORY_POS(0, /*pos*/   524,  2825, -5400),\n    TRAJECTORY_POS(1, /*pos*/   399,  2597, -5725),\n    TRAJECTORY_POS(2, /*pos*/   499,  2567, -5975),\n    TRAJECTORY_POS(3, /*pos*/   699,  2556, -6150),\n    TRAJECTORY_POS(4, /*pos*/   949,  2548, -6250),\n    TRAJECTORY_POS(5, /*pos*/  1549,  2525, -6600),\n    TRAJECTORY_POS(6, /*pos*/  2575,  2482, -7125),\n    TRAJECTORY_POS(7, /*pos*/  2975,  2466, -7425),\n    TRAJECTORY_POS(8, /*pos*/  3275,  2433, -7450),\n    TRAJECTORY_POS(9, /*pos*/  3800,  2337, -6950),\n    TRAJECTORY_POS(10, /*pos*/  4125,  2279, -6775),\n    TRAJECTORY_POS(11, /*pos*/  5310,  2119, -6500),\n    TRAJECTORY_POS(12, /*pos*/  5635,  2062, -6340),\n    TRAJECTORY_POS(13, /*pos*/  6010,  2004, -5730),\n    TRAJECTORY_POS(14, /*pos*/  5955,  1987, -5270),\n    TRAJECTORY_POS(15, /*pos*/  5540,  1947, -4330),\n    TRAJECTORY_POS(16, /*pos*/  5549,  1933, -4060),\n    TRAJECTORY_POS(17, /*pos*/  6014,  1906, -3198),\n    TRAJECTORY_POS(18, /*pos*/  5740,  1876, -2651),\n    TRAJECTORY_POS(19, /*pos*/  5273,  1840, -2467),\n    TRAJECTORY_POS(20, /*pos*/  3983,  1728, -2218),\n    TRAJECTORY_POS(21, /*pos*/  3640,  1682, -2072),\n    TRAJECTORY_POS(22, /*pos*/  3395,  1683, -1501),\n    TRAJECTORY_POS(23, /*pos*/  3211,  1676, -1190),\n    TRAJECTORY_POS(24, /*pos*/  2961,  1665,  -920),\n    TRAJECTORY_POS(25, /*pos*/   654,   640,  -758),\n    TRAJECTORY_POS(26, /*pos*/ -1618,     0,  -939),\n    TRAJECTORY_END(),\n};\n\n// 0x070116A0\nconst Trajectory bob_seg7_trajectory_koopa[] = {\n    TRAJECTORY_POS(0, /*pos*/ -2220,   204,  5520),\n    TRAJECTORY_POS(1, /*pos*/ -2020,   204,  5820),\n    TRAJECTORY_POS(2, /*pos*/   760,   765,  5680),\n    TRAJECTORY_POS(3, /*pos*/  1920,   768,  5040),\n    TRAJECTORY_POS(4, /*pos*/  2000,   768,  4360),\n    TRAJECTORY_POS(5, /*pos*/  1240,   768,  3600),\n    TRAJECTORY_POS(6, /*pos*/  -280,   768,  2720),\n    TRAJECTORY_POS(7, /*pos*/ -1680,   768,  1840),\n    TRAJECTORY_POS(8, /*pos*/ -2280,     0,  1800),\n    TRAJECTORY_POS(9, /*pos*/ -2720,     0,  1120),\n    TRAJECTORY_POS(10, /*pos*/ -2520,     0,   480),\n    TRAJECTORY_POS(11, /*pos*/ -1720,     0,   120),\n    TRAJECTORY_POS(12, /*pos*/   560,   630,  -840),\n    TRAJECTORY_POS(13, /*pos*/  2700,  1571, -1500),\n    TRAJECTORY_POS(14, /*pos*/  4520,  1830, -2600),\n    TRAJECTORY_POS(15, /*pos*/  6240,  1943, -3500),\n    TRAJECTORY_POS(16, /*pos*/  6380,  2066, -6180),\n    TRAJECTORY_POS(17, /*pos*/  4000,  2390, -7720),\n    TRAJECTORY_POS(18, /*pos*/  -120,  2608, -5515),\n    TRAJECTORY_POS(19, /*pos*/  -180,  2641, -4860),\n    TRAJECTORY_POS(20, /*pos*/   580,  2769, -3380),\n    TRAJECTORY_POS(21, /*pos*/  1670,  2867, -2580),\n    TRAJECTORY_POS(22, /*pos*/  2216,  2900, -2126),\n    TRAJECTORY_POS(23, /*pos*/  3167,  2965, -1870),\n    TRAJECTORY_POS(24, /*pos*/  4069,  3050, -2487),\n    TRAJECTORY_POS(25, /*pos*/  4880,  3037, -3416),\n    TRAJECTORY_POS(26, /*pos*/  5020,  3181, -5760),\n    TRAJECTORY_POS(27, /*pos*/  4660,  3354, -6300),\n    TRAJECTORY_POS(28, /*pos*/  3940,  3514, -6800),\n    TRAJECTORY_POS(29, /*pos*/  3200,  3619, -6850),\n    TRAJECTORY_POS(30, /*pos*/  1290,  3768, -5793),\n    TRAJECTORY_POS(31, /*pos*/  1150,  3900, -3670),\n    TRAJECTORY_POS(32, /*pos*/  2980,  4046, -2930),\n    TRAJECTORY_POS(33, /*pos*/  4334,  4186, -3680),\n    TRAJECTORY_POS(34, /*pos*/  4180,  4242, -4220),\n    TRAJECTORY_POS(35, /*pos*/  3660,  4242, -4380),\n    TRAJECTORY_END(),\n};\n"
  },
  {
    "path": "levels/bob/chain_chomp_gate/collision.inc.c",
    "content": "// 0x070113C0 - 0x070113F0\nconst Collision bob_seg7_collision_chain_chomp_gate[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x4),\n    COL_VERTEX(512, 0, 0),\n    COL_VERTEX(512, 640, 0),\n    COL_VERTEX(-511, 640, 0),\n    COL_VERTEX(-511, 0, 0),\n    COL_TRI_INIT(SURFACE_DEFAULT, 2),\n    COL_TRI(0, 1, 2),\n    COL_TRI(3, 0, 2),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bob/chain_chomp_gate/geo.inc.c",
    "content": "// 0x0E000440\nconst GeoLayout bob_geo_000440[] = {\n    GEO_CULLING_RADIUS(1000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bob_seg7_dl_0700E458),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bob/chain_chomp_gate/model.inc.c",
    "content": "// 0x0700E3E0 - 0x0700E420\nstatic const Vtx bob_seg7_vertex_0700E3E0[] = {\n    {{{   512,      0,      0}, 0, { -7184,  -5142}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   512,    640,      0}, 0, { -7184,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -511,    640,      0}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -511,      0,      0}, 0, {   990,  -5142}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700E420 - 0x0700E458\nstatic const Gfx bob_seg7_dl_0700E420[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bob_seg7_vertex_0700E3E0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700E458 - 0x0700E510\nconst Gfx bob_seg7_dl_0700E458[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(160, 160, 160, 255),\n    gsSPFogPosition(980, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bob_seg7_dl_0700E420),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bob/geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"game/level_geo.h\"\n#include \"game/geo_misc.h\"\n#include \"game/camera.h\"\n#include \"game/moving_texture.h\"\n#include \"game/screen_transition.h\"\n#include \"game/paintings.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"levels/bob/header.h\"\n\n#include \"levels/bob/chain_chomp_gate/geo.inc.c\"\n#include \"levels/bob/seesaw_platform/geo.inc.c\"\n#include \"levels/bob/grate_door/geo.inc.c\"\n#include \"levels/bob/areas/1/geo.inc.c\"\n"
  },
  {
    "path": "levels/bob/grate_door/collision.inc.c",
    "content": "// 0x07011474 - 0x0701152E\nconst Collision bob_seg7_collision_gate[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0xF),\n    COL_VERTEX(320, 0, -20),\n    COL_VERTEX(0, 0, -19),\n    COL_VERTEX(0, 384, -19),\n    COL_VERTEX(1, 384, 21),\n    COL_VERTEX(1, 0, 21),\n    COL_VERTEX(129, 640, 21),\n    COL_VERTEX(128, 640, -19),\n    COL_VERTEX(320, 640, -20),\n    COL_VERTEX(321, 0, 20),\n    COL_VERTEX(321, 640, 20),\n    COL_VERTEX(0, 384, 21),\n    COL_VERTEX(0, 0, 21),\n    COL_VERTEX(320, 0, 20),\n    COL_VERTEX(320, 640, 20),\n    COL_VERTEX(128, 640, 21),\n    COL_TRI_INIT(SURFACE_NO_CAM_COLLISION, 14),\n    COL_TRI(9, 7, 6),\n    COL_TRI(0, 1, 2),\n    COL_TRI(3, 2, 1),\n    COL_TRI(3, 1, 4),\n    COL_TRI(5, 6, 2),\n    COL_TRI(5, 2, 3),\n    COL_TRI(6, 7, 2),\n    COL_TRI(7, 0, 2),\n    COL_TRI(8, 0, 7),\n    COL_TRI(8, 7, 9),\n    COL_TRI(9, 6, 5),\n    COL_TRI(10, 12, 13),\n    COL_TRI(10, 11, 12),\n    COL_TRI(10, 13, 14),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bob/grate_door/geo.inc.c",
    "content": "// 0x0E000470\nconst GeoLayout bob_geo_000470[] = {\n    GEO_CULLING_RADIUS(800),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, bob_seg7_dl_0700E8A0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bob/grate_door/model.inc.c",
    "content": "// 0x0700E810 - 0x0700E860\nstatic const Vtx bob_seg7_vertex_0700E810[] = {\n    {{{     0,    384,      0}, 0, { -1956,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   320,    640,      0}, 0, {   598,  -4120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   128,    640,      0}, 0, {  -934,  -4120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,      0}, 0, { -1956,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   320,      0,      0}, 0, {   598,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700E860 - 0x0700E8A0\nstatic const Gfx bob_seg7_dl_0700E860[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bob_seg7_vertex_0700E810, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP1Triangle( 0,  4,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700E8A0 - 0x0700E958\nconst Gfx bob_seg7_dl_0700E8A0[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(160, 160, 160, 255),\n    gsSPFogPosition(980, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bob_seg7_dl_0700E860),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bob/header.h",
    "content": "#ifndef BOB_HEADER_H\n#define BOB_HEADER_H\n\n#include \"types.h\"\n\n// geo\nextern const GeoLayout bob_geo_000440[];\nextern const GeoLayout bob_geo_000458[];\nextern const GeoLayout bob_geo_000470[];\nextern const GeoLayout bob_geo_000488[];\n\n// leveldata\nextern const Gfx bob_seg7_dl_07004390[];\nextern const Gfx bob_seg7_dl_07009D80[];\nextern const Gfx bob_seg7_dl_0700A470[];\nextern const Gfx bob_seg7_dl_0700A920[];\nextern const Gfx bob_seg7_dl_0700DD18[];\nextern const Gfx bob_seg7_dl_0700E338[];\nextern const Gfx bob_seg7_dl_0700E458[];\nextern const Gfx bob_seg7_dl_0700E768[];\nextern const Gfx bob_seg7_dl_0700E8A0[];\nextern const Collision bob_seg7_collision_level[];\nextern const MacroObject bob_seg7_macro_objs[];\nextern const Collision bob_seg7_collision_chain_chomp_gate[];\nextern const Collision bob_seg7_collision_bridge[];\nextern const Collision bob_seg7_collision_gate[];\nextern const Trajectory bob_seg7_metal_ball_path0[];\nextern const Trajectory bob_seg7_metal_ball_path1[];\nextern const Trajectory bob_seg7_trajectory_koopa[];\n\n// script\nextern const LevelScript level_bob_entry[];\n\n#endif\n"
  },
  {
    "path": "levels/bob/level.yaml",
    "content": "# Bob-omb Battlefield\nshort-name: bob\nfull-name: Bob-omb Battlefield\ntexture-file: [\"/texture.inc.c\"]\narea-count: 1\nobjects: [chain_chomp_gate, grate_door, seesaw_platform]\nshared-path: []\n# loaded files\nskybox-bin: water\ntexture-bin: generic\neffects: false\nactor-bins: [group3, group14]\ncommon-bin: [common0]\n"
  },
  {
    "path": "levels/bob/leveldata.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"surface_terrains.h\"\n#include \"moving_texture_macros.h\"\n#include \"level_misc_macros.h\"\n#include \"macro_presets.h\"\n#include \"special_presets.h\"\n#include \"textures.h\"\n#include \"dialog_ids.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/bob/texture.inc.c\"\n#include \"levels/bob/areas/1/1/model.inc.c\"\n#include \"levels/bob/areas/1/2/model.inc.c\"\n#include \"levels/bob/areas/1/3/model.inc.c\"\n#include \"levels/bob/areas/1/4/model.inc.c\"\n#include \"levels/bob/areas/1/5/model.inc.c\"\n#include \"levels/bob/areas/1/6/model.inc.c\"\n#include \"levels/bob/chain_chomp_gate/model.inc.c\"\n#include \"levels/bob/seesaw_platform/model.inc.c\"\n#include \"levels/bob/grate_door/model.inc.c\"\n#include \"levels/bob/areas/1/collision.inc.c\"\n#include \"levels/bob/areas/1/macro.inc.c\"\n#include \"levels/bob/chain_chomp_gate/collision.inc.c\"\n#include \"levels/bob/seesaw_platform/collision.inc.c\"\n#include \"levels/bob/grate_door/collision.inc.c\"\n#include \"levels/bob/areas/1/trajectory.inc.c\"\n"
  },
  {
    "path": "levels/bob/script.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"behavior_data.h\"\n#include \"model_ids.h\"\n#include \"seq_ids.h\"\n#include \"dialog_ids.h\"\n#include \"segment_symbols.h\"\n#include \"level_commands.h\"\n\n#include \"game/level_update.h\"\n\n#include \"levels/scripts.h\"\n\n#include \"actors/common1.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/bob/header.h\"\n\nstatic const LevelScript script_func_local_1[] = {\n    OBJECT(/*model*/ MODEL_BOB_CHAIN_CHOMP_GATE,  /*pos*/  1456,   768,   446, /*angle*/ 0, 326, 0,  /*bhvParam*/ 0, /*bhv*/ bhvChainChompGate),\n    OBJECT(/*model*/ MODEL_BOB_SEESAW_PLATFORM,   /*pos*/ -2303,   717,  1024, /*angle*/ 0, 45, 0,   /*bhvParam*/ BPARAM2(0x03), /*bhv*/ bhvSeesawPlatform),\n    OBJECT(/*model*/ MODEL_NONE,                  /*pos*/ -2050,     0, -3069, /*angle*/ 0, 25, 0,   /*bhvParam*/ BPARAM2(OPENABLE_GRILL_BP_BOB), /*bhv*/ bhvOpenableGrill),\n    OBJECT(/*model*/ MODEL_PURPLE_SWITCH,         /*pos*/ -2283,     0, -3682, /*angle*/ 0, 27, 0,   /*bhvParam*/ 0, /*bhv*/ bhvFloorSwitchGrills),\n    OBJECT(/*model*/ MODEL_CHECKERBOARD_PLATFORM, /*pos*/  1612,   300,  4611, /*angle*/ 0, 0, 0,    /*bhvParam*/ BPARAM1(0) | BPARAM2(40), /*bhv*/ bhvCheckerboardElevatorGroup),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_2[] = {\n    OBJECT_WITH_ACTS(/*model*/ MODEL_NONE,                  /*pos*/  1535, 3840, -5561, /*angle*/ 0, 0, 0,   /*bhvParam*/ BPARAM2(BBALL_BP_STYPE_BOB_UPPER), /*bhv*/ bhvBoBBowlingBallSpawner,  /*acts*/ ACT_1 | ACT_2),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_NONE,                  /*pos*/  1535, 3840, -5561, /*angle*/ 0, 0, 0,   /*bhvParam*/ BPARAM2(BBALL_BP_STYPE_BOB_UPPER), /*bhv*/ bhvTTMBowlingBallSpawner,  /*acts*/ ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_NONE,                  /*pos*/   524, 2825, -5400, /*angle*/ 0, 0, 0,   /*bhvParam*/ BPARAM2(BBALL_BP_STYPE_BOB_LOWER), /*bhv*/ bhvBoBBowlingBallSpawner,  /*acts*/ ACT_1 | ACT_2),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_NONE,                  /*pos*/   524, 2825, -5400, /*angle*/ 0, 0, 0,   /*bhvParam*/ BPARAM2(BBALL_BP_STYPE_BOB_LOWER), /*bhv*/ bhvTTMBowlingBallSpawner,  /*acts*/ ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    OBJECT          (/*model*/ MODEL_BOWLING_BALL,          /*pos*/  -993,  886, -3565, /*angle*/ 0, 0, 0,   /*bhvParam*/ 0, /*bhv*/ bhvPitBowlingBall),\n    OBJECT          (/*model*/ MODEL_BOWLING_BALL,          /*pos*/  -785,  886, -4301, /*angle*/ 0, 0, 0,   /*bhvParam*/ 0, /*bhv*/ bhvPitBowlingBall),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_BOWLING_BALL,          /*pos*/   -93,  886, -3414, /*angle*/ 0, 0, 0,   /*bhvParam*/ 0, /*bhv*/ bhvPitBowlingBall,         /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_BOBOMB_BUDDY,          /*pos*/ -5723,  140,  6017, /*angle*/ 0, 0, 0,   /*bhvParam*/ BPARAM2(DIALOG_002), /*bhv*/ bhvBobombBuddy,            /*acts*/ ACT_1),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_BOBOMB_BUDDY,          /*pos*/ -6250,    0,  6680, /*angle*/ 0, 0, 0,   /*bhvParam*/ BPARAM2(DIALOG_001), /*bhv*/ bhvBobombBuddy,            /*acts*/ ACT_1),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_BOBOMB_BUDDY,          /*pos*/ -5723,  140,  6017, /*angle*/ 0, 0, 0,   /*bhvParam*/ 0,       /*bhv*/ bhvBobombBuddyOpensCannon, /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_BOBOMB_BUDDY,          /*pos*/ -6250,    0,  6680, /*angle*/ 0, 0, 0,   /*bhvParam*/ BPARAM2(DIALOG_003), /*bhv*/ bhvBobombBuddy,            /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_CANNON_BASE,           /*pos*/ -5694,  128,  5600, /*angle*/ 0, 135, 0, /*bhvParam*/ BPARAM2(0x01), /*bhv*/ bhvWaterBombCannon,        /*acts*/ ACT_1),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_DL_CANNON_LID,         /*pos*/ -5694,  128,  5600, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(0x00), /*bhv*/ bhvCannonClosed,           /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_NONE,                  /*pos*/  3304, 4242, -4603, /*angle*/ 0, 0, 0,   /*bhvParam*/ 0, /*bhv*/ bhvKoopaRaceEndpoint,      /*acts*/ ACT_2),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_KOOPA_WITH_SHELL,      /*pos*/  3400,  770,  6500, /*angle*/ 0, 0, 0,   /*bhvParam*/ BPARAM2(KOOPA_BP_NORMAL), /*bhv*/ bhvKoopa,                  /*acts*/ ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_3[] = {\n    OBJECT_WITH_ACTS(/*model*/ MODEL_KING_BOBOMB,           /*pos*/  1636, 4242, -5567, /*angle*/ 0, -147, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_1), /*bhv*/ bhvKingBobomb,            /*acts*/ ACT_1),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_KOOPA_WITH_SHELL,      /*pos*/ -4004,    0,  5221, /*angle*/ 0, 0, 0,    /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_2) | BPARAM2(KOOPA_BP_KOOPA_THE_QUICK_BOB), /*bhv*/ bhvKoopa,                 /*acts*/ ACT_2),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_NONE,                  /*pos*/ -6000, 1000,  2400, /*angle*/ 0, 0, 0,    /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_4), /*bhv*/ bhvHiddenRedCoinStar,     /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_NONE,                  /*pos*/ -6600, 1000,  1250, /*angle*/ 0, 0, 0,    /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_5) | BPARAM2(0x04), /*bhv*/ bhvHiddenStar,            /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_STAR,                  /*pos*/  1550, 1200,   300, /*angle*/ 0, 0, 0,    /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_6), /*bhv*/ bhvStar,                  /*acts*/ ALL_ACTS),\n    RETURN(),\n};\n\nconst LevelScript level_bob_entry[] = {\n    INIT_LEVEL(),\n    LOAD_MIO0        (/*seg*/ 0x07, _bob_segment_7SegmentRomStart, _bob_segment_7SegmentRomEnd),\n    LOAD_MIO0_TEXTURE(/*seg*/ 0x09, _generic_mio0SegmentRomStart, _generic_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x0A, _water_skybox_mio0SegmentRomStart, _water_skybox_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x05, _group3_mio0SegmentRomStart, _group3_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0C, _group3_geoSegmentRomStart,  _group3_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x06, _group14_mio0SegmentRomStart, _group14_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0D, _group14_geoSegmentRomStart,  _group14_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x08, _common0_mio0SegmentRomStart, _common0_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0F, _common0_geoSegmentRomStart,  _common0_geoSegmentRomEnd),\n    ALLOC_LEVEL_POOL(),\n    MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),\n    JUMP_LINK(script_func_global_1),\n    JUMP_LINK(script_func_global_4),\n    JUMP_LINK(script_func_global_15),\n    LOAD_MODEL_FROM_GEO(MODEL_BOB_BUBBLY_TREE,      bubbly_tree_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_BOB_CHAIN_CHOMP_GATE, bob_geo_000440),\n    LOAD_MODEL_FROM_GEO(MODEL_BOB_SEESAW_PLATFORM,  bob_geo_000458),\n    LOAD_MODEL_FROM_GEO(MODEL_BOB_BARS_GRILLS,      bob_geo_000470),\n\n    AREA(/*index*/ 1, bob_geo_000488),\n        JUMP_LINK(script_func_local_1),\n        JUMP_LINK(script_func_local_2),\n        JUMP_LINK(script_func_local_3),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ -6558,  1000,  6464, /*angle*/ 0, 135, 0,  /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvSpinAirborneWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/   583,  2683, -5387, /*angle*/ 0, -154, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0B), /*bhv*/ bhvFadingWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/  1680,  3835, -5523, /*angle*/ 0, -153, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0C), /*bhv*/ bhvFadingWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ -6612,  1024, -3351, /*angle*/ 0, 107, 0,  /*bhvParam*/ BPARAM2(WARP_NODE_0D), /*bhv*/ bhvFadingWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/  1980,   768,  6618, /*angle*/ 0, -151, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0E), /*bhv*/ bhvFadingWarp),\n        WARP_NODE(/*id*/ WARP_NODE_0A,      /*destLevel*/ LEVEL_BOB,    /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_0B,      /*destLevel*/ LEVEL_BOB,    /*destArea*/ 1, /*destNode*/ WARP_NODE_0C, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_0C,      /*destLevel*/ LEVEL_BOB,    /*destArea*/ 1, /*destNode*/ WARP_NODE_0B, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_0D,      /*destLevel*/ LEVEL_BOB,    /*destArea*/ 1, /*destNode*/ WARP_NODE_0E, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_0E,      /*destLevel*/ LEVEL_BOB,    /*destArea*/ 1, /*destNode*/ WARP_NODE_0D, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_SUCCESS, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_32, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH,   /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_64, /*flags*/ WARP_NO_CHECKPOINT),\n        TERRAIN(/*terrainData*/ bob_seg7_collision_level),\n        MACRO_OBJECTS(/*objList*/ bob_seg7_macro_objs),\n        SHOW_DIALOG(/*index*/ 0x00, DIALOG_000),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0000, /*seq*/ SEQ_LEVEL_GRASS),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_GRASS),\n    END_AREA(),\n\n    FREE_LEVEL_POOL(),\n    MARIO_POS(/*area*/ 1, /*yaw*/ 135, /*pos*/ -6558, 0, 6464),\n    CALL(/*arg*/ 0, /*func*/ lvl_init_or_update),\n    CALL_LOOP(/*arg*/ 1, /*func*/ lvl_init_or_update),\n    CLEAR_LEVEL(),\n    SLEEP_BEFORE_EXIT(/*frames*/ 1),\n    EXIT(),\n};\n"
  },
  {
    "path": "levels/bob/seesaw_platform/collision.inc.c",
    "content": "// 0x070113F0 - 0x07011474\nconst Collision bob_seg7_collision_bridge[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-180, 51, -904),\n    COL_VERTEX(-180, 0, -904),\n    COL_VERTEX(-180, 51, 905),\n    COL_VERTEX(181, 0, -904),\n    COL_VERTEX(-180, 0, 905),\n    COL_VERTEX(181, 0, 905),\n    COL_VERTEX(181, 51, -904),\n    COL_VERTEX(181, 51, 905),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(3, 1, 0),\n    COL_TRI(1, 4, 2),\n    COL_TRI(1, 3, 5),\n    COL_TRI(4, 1, 5),\n    COL_TRI(3, 0, 6),\n    COL_TRI(5, 3, 6),\n    COL_TRI(4, 5, 7),\n    COL_TRI(7, 5, 6),\n    COL_TRI(4, 7, 2),\n    COL_TRI(6, 0, 2),\n    COL_TRI(7, 6, 2),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bob/seesaw_platform/geo.inc.c",
    "content": "// 0x0E000458\nconst GeoLayout bob_geo_000458[] = {\n    GEO_CULLING_RADIUS(1200),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bob_seg7_dl_0700E768),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bob/seesaw_platform/model.inc.c",
    "content": "// 0x0700E510 - 0x0700E528\nstatic const Lights1 bob_seg7_lights_0700E510 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700E528 - 0x0700E628\nstatic const Vtx bob_seg7_vertex_0700E528[] = {\n    {{{  -180,     51,   -904}, 0, {   990,      0}, {0xcd, 0x33, 0x99, 0xff}}},\n    {{{  -180,      0,   -904}, 0, {   950,    284}, {0xac, 0xac, 0xd6, 0xff}}},\n    {{{  -180,     51,    905}, 0, { -3222,      0}, {0xac, 0x54, 0x2a, 0xff}}},\n    {{{  -180,      0,   -904}, 0, { -3204,      0}, {0xac, 0xac, 0xd6, 0xff}}},\n    {{{   181,      0,   -904}, 0, { -3204,   2012}, {0x33, 0xcd, 0x99, 0xff}}},\n    {{{   181,      0,    905}, 0, {   990,   2012}, {0x54, 0xac, 0x2a, 0xff}}},\n    {{{  -180,      0,    905}, 0, {   990,      0}, {0xcd, 0xcd, 0x67, 0xff}}},\n    {{{   181,     51,   -904}, 0, {   990,   2012}, {0x54, 0x54, 0xd6, 0xff}}},\n    {{{   181,     51,    905}, 0, { -3222,   2012}, {0x33, 0x33, 0x67, 0xff}}},\n    {{{   181,      0,    905}, 0, { -3244,    304}, {0x54, 0xac, 0x2a, 0xff}}},\n    {{{   181,      0,   -904}, 0, {   950,    284}, {0x33, 0xcd, 0x99, 0xff}}},\n    {{{   181,     51,   -904}, 0, {   990,      0}, {0x54, 0x54, 0xd6, 0xff}}},\n    {{{   181,     51,    905}, 0, { -3222,      0}, {0x33, 0x33, 0x67, 0xff}}},\n    {{{  -180,      0,    905}, 0, {     0,    172}, {0xcd, 0xcd, 0x67, 0xff}}},\n    {{{   181,     51,    905}, 0, {   690,      0}, {0x33, 0x33, 0x67, 0xff}}},\n    {{{  -180,     51,    905}, 0, {     0,      0}, {0xac, 0x54, 0x2a, 0xff}}},\n};\n\n// 0x0700E628 - 0x0700E6C8\nstatic const Vtx bob_seg7_vertex_0700E628[] = {\n    {{{  -180,      0,   -904}, 0, {   950,    284}, {0xac, 0xac, 0xd6, 0xff}}},\n    {{{  -180,      0,    905}, 0, { -3244,    304}, {0xcd, 0xcd, 0x67, 0xff}}},\n    {{{  -180,     51,    905}, 0, { -3222,      0}, {0xac, 0x54, 0x2a, 0xff}}},\n    {{{   181,      0,   -904}, 0, {   268,   2012}, {0x33, 0xcd, 0x99, 0xff}}},\n    {{{  -180,      0,   -904}, 0, {   990,   2012}, {0xac, 0xac, 0xd6, 0xff}}},\n    {{{  -180,     51,   -904}, 0, {   990,   1808}, {0xcd, 0x33, 0x99, 0xff}}},\n    {{{   181,     51,   -904}, 0, {   268,   1808}, {0x54, 0x54, 0xd6, 0xff}}},\n    {{{  -180,      0,    905}, 0, {     0,    172}, {0xcd, 0xcd, 0x67, 0xff}}},\n    {{{   181,      0,    905}, 0, {   690,    172}, {0x54, 0xac, 0x2a, 0xff}}},\n    {{{   181,     51,    905}, 0, {   690,      0}, {0x33, 0x33, 0x67, 0xff}}},\n};\n\n// 0x0700E6C8 - 0x0700E768\nstatic const Gfx bob_seg7_dl_0700E6C8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09006000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bob_seg7_lights_0700E510.l, 1),\n    gsSPLight(&bob_seg7_lights_0700E510.a, 2),\n    gsSPVertex(bob_seg7_vertex_0700E528, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  0,  2, 0x0),\n    gsSP2Triangles( 8,  7,  2, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12,  9, 11, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bob_seg7_vertex_0700E628, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700E768 - 0x0700E810\nconst Gfx bob_seg7_dl_0700E768[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(160, 160, 160, 255),\n    gsSPFogPosition(980, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bob_seg7_dl_0700E6C8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bob/texture.inc.c",
    "content": "// 0x07000000 - 0x07000800\nALIGNED8 static const Texture bob_seg7_texture_07000000[] = {\n#include \"levels/bob/0.rgba16.inc.c\"\n};\n\n// 0x07000800 - 0x07001000\nALIGNED8 static const Texture bob_seg7_texture_07000800[] = {\n#include \"levels/bob/1.rgba16.inc.c\"\n};\n\n// 0x07001000 - 0x07001800\nALIGNED8 static const Texture bob_seg7_texture_07001000[] = {\n#include \"levels/bob/2.rgba16.inc.c\"\n};\n\n// 0x07001800 - 0x07002000\nALIGNED8 static const Texture bob_seg7_texture_07001800[] = {\n#include \"levels/bob/3.rgba16.inc.c\"\n};\n\n// 0x07002000 - 0x07002800\nALIGNED8 static const Texture bob_seg7_texture_07002000[] = {\n#include \"levels/bob/4.rgba16.inc.c\"\n};\n"
  },
  {
    "path": "levels/bowser_1/areas/1/1/model.inc.c",
    "content": "// 0x07002000 - 0x07002018\nstatic const Lights1 bowser_1_seg7_lights_07002000 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07002018 - 0x07002108\nstatic const Vtx bowser_1_seg7_vertex_07002018[] = {\n    {{{ -1535,    307,      0}, 0, {  3034,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    307,      0}, 0, {  1502,  -2712}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1085,    307,  -1085}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1086,    307,  -1085}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    307,  -1535}, 0, {  3034,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1085,    307,   1086}, 0, {  3034,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,    307,      0}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1086,    307,  -1085}, 0, {  3034,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,    307,      0}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    307,  -1535}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1085,    307,  -1085}, 0, {  3034,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1086,    307,   1086}, 0, {  3034,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    307,   1536}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    307,   1536}, 0, {  3034,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1085,    307,   1086}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07002108 - 0x07002138\nstatic const Vtx bowser_1_seg7_vertex_07002108[] = {\n    {{{  1536,    307,      0}, 0, {  3034,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    307,      0}, 0, {  1502,  -2712}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1086,    307,   1086}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07002138 - 0x07002228\nstatic const Vtx bowser_1_seg7_vertex_07002138[] = {\n    {{{  1086,    307,  -1085}, 0, {   990,  -1478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2172,    307,  -2171}, 0, {     0,    990}, {0x3e, 0x49, 0xae, 0xff}}},\n    {{{     0,    307,  -3071}, 0, {  4056,    990}, {0xf5, 0x5c, 0xab, 0xff}}},\n    {{{ -3071,    307,      0}, 0, {  4056,    990}, {0xb8, 0x68, 0x09, 0xff}}},\n    {{{ -1535,    307,      0}, 0, {  3034,  -1478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1085,    307,  -1085}, 0, {   990,  -1478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2171,    307,  -2171}, 0, {     0,    990}, {0xbb, 0x5c, 0xcc, 0xff}}},\n    {{{ -3071,    307,      0}, 0, {     0,    990}, {0xb8, 0x68, 0x09, 0xff}}},\n    {{{ -1085,    307,   1086}, 0, {  3034,  -1478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,    307,      0}, 0, {   990,  -1478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2171,    307,   2172}, 0, {  4056,    990}, {0xcc, 0x5c, 0x45, 0xff}}},\n    {{{     0,    307,  -1535}, 0, {   990,  -1478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2171,    307,  -2171}, 0, {  4056,    990}, {0xbb, 0x5c, 0xcc, 0xff}}},\n    {{{ -1085,    307,  -1085}, 0, {  3034,  -1478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    307,  -3071}, 0, {     0,    990}, {0xf5, 0x5c, 0xab, 0xff}}},\n};\n\n// 0x07002228 - 0x07002318\nstatic const Vtx bowser_1_seg7_vertex_07002228[] = {\n    {{{  2172,    307,   2172}, 0, {     0,    990}, {0x45, 0x5c, 0x34, 0xff}}},\n    {{{  3072,    307,      0}, 0, {  4056,    990}, {0x55, 0x5c, 0xf5, 0xff}}},\n    {{{  1536,    307,      0}, 0, {  3034,  -1478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1086,    307,  -1085}, 0, {   990,  -1478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    307,  -3071}, 0, {  4056,    990}, {0xf5, 0x5c, 0xab, 0xff}}},\n    {{{     0,    307,  -1535}, 0, {  3034,  -1478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2171,    307,   2172}, 0, {     0,    990}, {0xcc, 0x5c, 0x45, 0xff}}},\n    {{{     0,    307,   3072}, 0, {  4056,    990}, {0x0b, 0x5c, 0x55, 0xff}}},\n    {{{     0,    307,   1536}, 0, {  3034,  -1478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1085,    307,   1086}, 0, {   990,  -1478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    307,   3072}, 0, {     0,    990}, {0x0b, 0x5c, 0x55, 0xff}}},\n    {{{  1086,    307,   1086}, 0, {  3034,  -1478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    307,   1536}, 0, {   990,  -1478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2172,    307,   2172}, 0, {  4056,    990}, {0x45, 0x5c, 0x34, 0xff}}},\n    {{{  1086,    307,   1086}, 0, {   990,  -1478}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07002318 - 0x07002358\nstatic const Vtx bowser_1_seg7_vertex_07002318[] = {\n    {{{  3072,    307,      0}, 0, {     0,    990}, {0x55, 0x5c, 0xf5, 0xff}}},\n    {{{  1086,    307,  -1085}, 0, {  3034,  -1478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,    307,      0}, 0, {   990,  -1478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2172,    307,  -2171}, 0, {  4056,    990}, {0x3e, 0x49, 0xae, 0xff}}},\n};\n\n// 0x07002358 - 0x07002448\nstatic const Vtx bowser_1_seg7_vertex_07002358[] = {\n    {{{     0,  -2047,   3072}, 0, {   990,   1996}, {0xef, 0x00, 0x7d, 0xff}}},\n    {{{     0,    307,   3072}, 0, {   990,     -4}, {0x0b, 0x5c, 0x55, 0xff}}},\n    {{{ -2171,    307,   2172}, 0, {     0,     -8}, {0xcc, 0x5c, 0x45, 0xff}}},\n    {{{  2172,  -2047,  -2171}, 0, {   990,   1984}, {0x65, 0x00, 0xb4, 0xff}}},\n    {{{  3072,    307,      0}, 0, {     0,    -12}, {0x55, 0x5c, 0xf5, 0xff}}},\n    {{{  3072,  -2047,      0}, 0, {     0,   1988}, {0x7d, 0x00, 0x11, 0xff}}},\n    {{{  2172,    307,  -2171}, 0, {   990,    -16}, {0x3e, 0x49, 0xae, 0xff}}},\n    {{{  3072,  -2047,      0}, 0, {   990,   1984}, {0x7d, 0x00, 0x11, 0xff}}},\n    {{{  2172,    307,   2172}, 0, {     0,    -20}, {0x45, 0x5c, 0x34, 0xff}}},\n    {{{  2172,  -2047,   2172}, 0, {     0,   1980}, {0x4c, 0x00, 0x65, 0xff}}},\n    {{{  3072,    307,      0}, 0, {   990,    -16}, {0x55, 0x5c, 0xf5, 0xff}}},\n    {{{  2172,  -2047,   2172}, 0, {   990,   1988}, {0x4c, 0x00, 0x65, 0xff}}},\n    {{{     0,    307,   3072}, 0, {     0,    -16}, {0x0b, 0x5c, 0x55, 0xff}}},\n    {{{     0,  -2047,   3072}, 0, {     0,   1984}, {0xef, 0x00, 0x7d, 0xff}}},\n    {{{  2172,    307,   2172}, 0, {   990,    -16}, {0x45, 0x5c, 0x34, 0xff}}},\n};\n\n// 0x07002448 - 0x07002538\nstatic const Vtx bowser_1_seg7_vertex_07002448[] = {\n    {{{ -2171,  -2047,   2172}, 0, {   990,   1992}, {0x9b, 0x00, 0x4c, 0xff}}},\n    {{{ -2171,    307,   2172}, 0, {   990,    -12}, {0xcc, 0x5c, 0x45, 0xff}}},\n    {{{ -3071,    307,      0}, 0, {     0,    -16}, {0xb8, 0x68, 0x09, 0xff}}},\n    {{{     0,  -2047,   3072}, 0, {   990,   1996}, {0xef, 0x00, 0x7d, 0xff}}},\n    {{{ -2171,    307,   2172}, 0, {     0,     -8}, {0xcc, 0x5c, 0x45, 0xff}}},\n    {{{ -2171,  -2047,   2172}, 0, {     0,   1992}, {0x9b, 0x00, 0x4c, 0xff}}},\n    {{{     0,  -2047,  -3071}, 0, {   990,   1992}, {0x11, 0x00, 0x83, 0xff}}},\n    {{{     0,    307,  -3071}, 0, {   990,    -16}, {0xf5, 0x5c, 0xab, 0xff}}},\n    {{{  2172,    307,  -2171}, 0, {     0,    -20}, {0x3e, 0x49, 0xae, 0xff}}},\n    {{{  2172,  -2047,  -2171}, 0, {     0,   1988}, {0x65, 0x00, 0xb4, 0xff}}},\n    {{{ -2171,  -2047,  -2171}, 0, {   990,   1996}, {0xb4, 0x00, 0x9b, 0xff}}},\n    {{{ -2171,    307,  -2171}, 0, {   990,    -12}, {0xbb, 0x5c, 0xcc, 0xff}}},\n    {{{     0,    307,  -3071}, 0, {     0,    -16}, {0xf5, 0x5c, 0xab, 0xff}}},\n    {{{     0,  -2047,  -3071}, 0, {     0,   1996}, {0x11, 0x00, 0x83, 0xff}}},\n    {{{ -3071,  -2047,      0}, 0, {     0,   1988}, {0x83, 0x00, 0xef, 0xff}}},\n};\n\n// 0x07002538 - 0x07002578\nstatic const Vtx bowser_1_seg7_vertex_07002538[] = {\n    {{{ -3071,  -2047,      0}, 0, {   990,   1996}, {0x83, 0x00, 0xef, 0xff}}},\n    {{{ -2171,    307,  -2171}, 0, {     0,    -16}, {0xbb, 0x5c, 0xcc, 0xff}}},\n    {{{ -2171,  -2047,  -2171}, 0, {     0,   1988}, {0xb4, 0x00, 0x9b, 0xff}}},\n    {{{ -3071,    307,      0}, 0, {   990,     -8}, {0xb8, 0x68, 0x09, 0xff}}},\n};\n\n// 0x07002578 - 0x070025F8\nstatic const Gfx bowser_1_seg7_dl_07002578[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_1_seg7_texture_07001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bowser_1_seg7_lights_07002000.l, 1),\n    gsSPLight(&bowser_1_seg7_lights_07002000.a, 2),\n    gsSPVertex(bowser_1_seg7_vertex_07002018, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 5,  1,  6, 0x0,  7,  1,  8, 0x0),\n    gsSP2Triangles( 1,  9, 10, 0x0, 11,  1, 12, 0x0),\n    gsSP1Triangle(13,  1, 14, 0x0),\n    gsSPVertex(bowser_1_seg7_vertex_07002108, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070025F8 - 0x070026B0\nstatic const Gfx bowser_1_seg7_dl_070025F8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_1_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_1_seg7_vertex_07002138, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bowser_1_seg7_vertex_07002228, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(bowser_1_seg7_vertex_07002318, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070026B0 - 0x07002768\nstatic const Gfx bowser_1_seg7_dl_070026B0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_1_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_1_seg7_vertex_07002358, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(bowser_1_seg7_vertex_07002448, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(bowser_1_seg7_vertex_07002538, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07002768 - 0x07002838\nconst Gfx bowser_1_seg7_dl_07002768[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(10, 30, 20, 255),\n    gsSPFogFactor(0x10AA, 0xF056), // This isn't gsSPFogPosition since there is no valid min/max pair that corresponds to 0x10AAF056\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_1_seg7_dl_07002578),\n    gsSPDisplayList(bowser_1_seg7_dl_070025F8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_1_seg7_dl_070026B0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bowser_1/areas/1/collision.inc.c",
    "content": "// 0x07002838 - 0x07002AC8\nconst Collision bowser_1_seg7_collision_level[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x1D),\n    COL_VERTEX(2172, 307, -2171),\n    COL_VERTEX(0, 307, -3071),\n    COL_VERTEX(1086, 307, -1085),\n    COL_VERTEX(-2171, 307, -2171),\n    COL_VERTEX(0, 307, -1535),\n    COL_VERTEX(-2171, 307, 2172),\n    COL_VERTEX(0, -2047, 3072),\n    COL_VERTEX(0, 307, 3072),\n    COL_VERTEX(-3071, -2047, 0),\n    COL_VERTEX(-3071, 307, 0),\n    COL_VERTEX(-2171, -2047, 2172),\n    COL_VERTEX(-1535, 307, 0),\n    COL_VERTEX(-1085, 307, -1085),\n    COL_VERTEX(-1085, 307, 1086),\n    COL_VERTEX(-2171, -2047, -2171),\n    COL_VERTEX(0, 307, 1536),\n    COL_VERTEX(3072, 307, 0),\n    COL_VERTEX(0, -2047, -3071),\n    COL_VERTEX(2172, -2047, 2172),\n    COL_VERTEX(3072, -2047, 0),\n    COL_VERTEX(2172, 307, 2172),\n    COL_VERTEX(2172, -2047, -2171),\n    COL_VERTEX(1536, 307, 0),\n    COL_VERTEX(1086, 307, 1086),\n    COL_VERTEX(0, 307, 0),\n    COL_VERTEX(7168, -6143, -7167),\n    COL_VERTEX(-7167, -6143, -7167),\n    COL_VERTEX(-7167, -6143, 7168),\n    COL_VERTEX(7168, -6143, 7168),\n    COL_TRI_INIT(SURFACE_DEFAULT, 40),\n    COL_TRI(5, 6, 7),\n    COL_TRI(0, 1, 2),\n    COL_TRI(1, 3, 4),\n    COL_TRI(5, 7, 15),\n    COL_TRI(8, 9, 3),\n    COL_TRI(10, 9, 8),\n    COL_TRI(10, 5, 9),\n    COL_TRI(9, 11, 12),\n    COL_TRI(9, 13, 11),\n    COL_TRI(9, 5, 13),\n    COL_TRI(9, 12, 3),\n    COL_TRI(4, 3, 12),\n    COL_TRI(8, 3, 14),\n    COL_TRI(14, 3, 1),\n    COL_TRI(6, 5, 10),\n    COL_TRI(5, 15, 13),\n    COL_TRI(7, 20, 23),\n    COL_TRI(2, 1, 4),\n    COL_TRI(16, 0, 2),\n    COL_TRI(16, 2, 22),\n    COL_TRI(14, 1, 17),\n    COL_TRI(17, 1, 0),\n    COL_TRI(18, 20, 7),\n    COL_TRI(18, 7, 6),\n    COL_TRI(7, 23, 15),\n    COL_TRI(17, 0, 21),\n    COL_TRI(19, 20, 18),\n    COL_TRI(19, 16, 20),\n    COL_TRI(20, 22, 23),\n    COL_TRI(20, 16, 22),\n    COL_TRI(21, 16, 19),\n    COL_TRI(21, 0, 16),\n    COL_TRI(11, 24, 12),\n    COL_TRI(13, 24, 11),\n    COL_TRI(2, 24, 22),\n    COL_TRI(24, 2, 4),\n    COL_TRI(23, 24, 15),\n    COL_TRI(24, 4, 12),\n    COL_TRI(15, 24, 13),\n    COL_TRI(22, 24, 23),\n    COL_TRI_INIT(SURFACE_DEATH_PLANE, 2),\n    COL_TRI(25, 26, 27),\n    COL_TRI(25, 27, 28),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(22),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_null_start,   /*pos*/     0, 1843,     0, /*yaw*/ 1423), // unused, probably an early way to set initial position\n    SPECIAL_OBJECT(/*preset*/ special_mine,         /*pos*/  2949,  589,     0),\n    SPECIAL_OBJECT(/*preset*/ special_mine,         /*pos*/     0,  589, -2949),\n    SPECIAL_OBJECT(/*preset*/ special_mine,         /*pos*/     0,  589,  2949),\n    SPECIAL_OBJECT(/*preset*/ special_mine,         /*pos*/ -2949,  589,     0),\n    SPECIAL_OBJECT(/*preset*/ special_bowser,       /*pos*/     0,  300, -1000),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/     0,  384,  3072, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/ -2171,  384, -2171, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/     0,  384, -3071, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/ -3071,  384,     0, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/ -2171,  384,  2172, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/ -2621,  384,  1086, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/  2172,  384,  2172, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/  3072,  384,     0, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/  2172,  384, -2171, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/ -1085,  384,  2622, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/  2622,  384,  1086, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/ -2621,  384, -1085, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/ -1085,  384, -2621, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/  1086,  384, -2621, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/  2622,  384, -1085, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/  1086,  384,  2622, /*yaw*/    0),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bowser_1/areas/1/geo.inc.c",
    "content": "// 0x0E0000D0\nconst GeoLayout bowser_1_geo_0000D0[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND(BACKGROUND_GREEN_SKY, geo_skybox_main),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 12800, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(11, 0, 2000, 6000, 0, 0, 0, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, bowser_1_seg7_dl_07002768),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(0, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bowser_1/geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"game/level_geo.h\"\n#include \"game/geo_misc.h\"\n#include \"game/camera.h\"\n#include \"game/moving_texture.h\"\n#include \"game/screen_transition.h\"\n#include \"game/paintings.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"levels/bowser_1/header.h\"\n\n#include \"levels/bowser_1/areas/1/geo.inc.c\"\n"
  },
  {
    "path": "levels/bowser_1/header.h",
    "content": "#ifndef BOWSER_1_HEADER_H\n#define BOWSER_1_HEADER_H\n\n#include \"types.h\"\n\n// geo\nextern const GeoLayout bowser_1_geo_0000D0[];\n\n// leveldata\nextern const Gfx bowser_1_seg7_dl_07002768[];\nextern const Collision bowser_1_seg7_collision_level[];\n\n// script\nextern const LevelScript level_bowser_1_entry[];\n\n#endif\n"
  },
  {
    "path": "levels/bowser_1/level.yaml",
    "content": "# Bowser in the Dark World (Boss Area)\nshort-name: bowser_1\nfull-name: Bowser in the Dark World (Boss Area)\ntexture-file: [\"/texture.inc.c\"]\narea-count: 1\nobjects: []\nshared-path: []\n# loaded files\nskybox-bin: bidw\ntexture-bin: null\neffects: false\nactor-bins: [group12]\ncommon-bin: []\n"
  },
  {
    "path": "levels/bowser_1/leveldata.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"surface_terrains.h\"\n#include \"moving_texture_macros.h\"\n#include \"level_misc_macros.h\"\n#include \"macro_presets.h\"\n#include \"special_presets.h\"\n#include \"textures.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/bowser_1/texture.inc.c\"\n#include \"levels/bowser_1/areas/1/1/model.inc.c\"\n#include \"levels/bowser_1/areas/1/collision.inc.c\"\n"
  },
  {
    "path": "levels/bowser_1/script.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"behavior_data.h\"\n#include \"model_ids.h\"\n#include \"seq_ids.h\"\n#include \"segment_symbols.h\"\n#include \"level_commands.h\"\n\n#include \"game/level_update.h\"\n\n#include \"levels/scripts.h\"\n\n#include \"actors/common1.h\"\n#include \"actors/group12.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/bowser_1/header.h\"\n\nconst LevelScript level_bowser_1_entry[] = {\n    INIT_LEVEL(),\n    LOAD_MIO0(/*seg*/ 0x07, _bowser_1_segment_7SegmentRomStart, _bowser_1_segment_7SegmentRomEnd),\n    LOAD_MIO0(/*seg*/ 0x0A, _bidw_skybox_mio0SegmentRomStart, _bidw_skybox_mio0SegmentRomEnd),\n    LOAD_MIO0(/*seg*/ 0x06, _group12_mio0SegmentRomStart, _group12_mio0SegmentRomEnd),\n    LOAD_RAW (/*seg*/ 0x0D, _group12_geoSegmentRomStart, _group12_geoSegmentRomEnd),\n    ALLOC_LEVEL_POOL(),\n    MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),\n    JUMP_LINK(script_func_global_13),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_03, bowser_1_yellow_sphere_geo),\n\n    AREA(/*index*/ 1, bowser_1_geo_0000D0),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, 1307, 0, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvSpinAirborneCircleWarp),\n        WARP_NODE(/*id*/ WARP_NODE_0A,      /*destLevel*/ LEVEL_BOWSER_1, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A,  /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_SUCCESS, /*destLevel*/ LEVEL_CASTLE,   /*destArea*/ 1, /*destNode*/ WARP_NODE_24,  /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH,   /*destLevel*/ LEVEL_BITDW,    /*destArea*/ 1, /*destNode*/ WARP_NODE_0C,  /*flags*/ WARP_NO_CHECKPOINT),\n        TERRAIN(/*terrainData*/ bowser_1_seg7_collision_level),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0002, /*seq*/ SEQ_LEVEL_BOSS_KOOPA),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_STONE),\n    END_AREA(),\n\n    FREE_LEVEL_POOL(),\n    MARIO_POS(/*area*/ 1, /*yaw*/ 180, /*pos*/ 0, 307, 0),\n    CALL(/*arg*/ 0, /*func*/ lvl_init_or_update),\n    CALL_LOOP(/*arg*/ 1, /*func*/ lvl_init_or_update),\n    CLEAR_LEVEL(),\n    SLEEP_BEFORE_EXIT(/*frames*/ 1),\n    EXIT(),\n};\n"
  },
  {
    "path": "levels/bowser_1/texture.inc.c",
    "content": "// 0x07000000 - 0x07000002\nALIGNED8 static const Texture bowser_1_seg7_texture_07000000[] = {\n#include \"levels/bowser_1/0.rgba16.inc.c\"\n};\n\n// 0x07001000 - 0x07001002\nALIGNED8 static const Texture bowser_1_seg7_texture_07001000[] = {\n#include \"levels/bowser_1/1.rgba16.inc.c\"\n};\n\n// 0x07001800 - 0x07001802\nALIGNED8 static const Texture bowser_1_seg7_texture_07001800[] = {\n#include \"levels/bowser_1/2.rgba16.inc.c\"\n};\n"
  },
  {
    "path": "levels/bowser_2/areas/1/1/model.inc.c",
    "content": "// 0x070010B0 - 0x070011B0\nstatic const Vtx bowser_2_seg7_vertex_070010B0[] = {\n    {{{  6546,   -511,   2618}, 0, {  4910,    248}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6480,  -3071,  -2776}, 0, {  8112,    772}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6480,   -511,  -2776}, 0, {  8100,    232}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6545,   -511,  -2617}, 0, { 17484,    232}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6545,  -3071,  -2617}, 0, { 17472,    772}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6479,  -3071,   2777}, 0, { 20664,    790}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6479,   -511,   2777}, 0, { 20676,    248}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2776,   -511,  -6479}, 0, { 14348,    220}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2617,  -3071,   6546}, 0, { 23924,    800}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2617,   -511,   6546}, 0, { 23930,    260}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2776,  -3071,  -6479}, 0, { 14342,    762}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2618,   -511,  -6545}, 0, { 11236,    220}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2618,  -3071,  -6545}, 0, { 11240,    762}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2776,   -511,  -6479}, 0, {   782,   1298}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2777,   -511,   6480}, 0, { -1526,  -4090}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6546,   -511,   2618}, 0, { -3092,  -2484}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070011B0 - 0x070012B0\nstatic const Vtx bowser_2_seg7_vertex_070011B0[] = {\n    {{{  6546,   -511,   2618}, 0, {  4910,    248}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6546,  -3071,   2618}, 0, {  4924,    788}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6480,  -3071,  -2776}, 0, {  8112,    772}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2777,   -511,   6480}, 0, {  1658,    260}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2777,  -3071,   6480}, 0, {  1664,    800}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2617,   -511,   6546}, 0, { 23930,    260}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2617,  -3071,   6546}, 0, { 23924,    800}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2777,  -3071,   6480}, 0, { 27214,    800}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2777,   -511,   6480}, 0, { 27208,    260}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2776,   -511,  -6479}, 0, {   782,   1298}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6545,   -511,  -2617}, 0, {  2350,   -306}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6479,   -511,   2777}, 0, {  2322,  -2550}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2617,   -511,   6546}, 0, {   716,  -4116}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2777,   -511,   6480}, 0, { -1526,  -4090}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6546,   -511,   2618}, 0, { -3092,  -2484}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6480,   -511,  -2776}, 0, { -3066,   -240}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070012B0 - 0x070012E0\nstatic const Vtx bowser_2_seg7_vertex_070012B0[] = {\n    {{{ -2776,   -511,  -6479}, 0, {   782,   1298}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6480,   -511,  -2776}, 0, { -3066,   -240}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2618,   -511,  -6545}, 0, { -1460,   1326}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070012E0 - 0x070013E0\nstatic const Vtx bowser_2_seg7_vertex_070012E0[] = {\n    {{{ -3512,   -511,   -889}, 0, {  -356,    984}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{ -3159,   -511,   -886}, 0, {  -360,    440}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{ -3323,    399,  -1105}, 0, {   -26,    692}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  1240,   -511,  -5279}, 0, {  -356,    984}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  1593,   -511,  -5276}, 0, {  -360,    440}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  1429,    399,  -5496}, 0, {   -26,    692}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  1152,   -511,  -5616}, 0, {   160,   1116}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  1732,   -511,  -5615}, 0, {   158,    228}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  1344,   -511,  -5811}, 0, {   458,    824}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{ -3407,   -511,   3474}, 0, {   458,    824}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{ -3600,   -511,   3669}, 0, {   160,   1116}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{ -3322,    399,   3790}, 0, {   -26,    692}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{ -3511,   -511,   4006}, 0, {  -356,    984}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{ -3158,   -511,   4009}, 0, {  -360,    440}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{ -3019,   -511,   3670}, 0, {   158,    228}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{ -3021,   -511,  -1224}, 0, {   158,    228}, {0xfd, 0x42, 0x34, 0xff}}},\n};\n\n// 0x070013E0 - 0x070014E0\nstatic const Vtx bowser_2_seg7_vertex_070013E0[] = {\n    {{{ -3021,   -511,  -1224}, 0, {   158,    228}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{ -3408,   -511,  -1420}, 0, {   458,    824}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{ -3323,    399,  -1105}, 0, {   -26,    692}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{ -3601,   -511,  -1226}, 0, {   160,   1116}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{ -3512,   -511,   -889}, 0, {  -356,    984}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  4200,   -511,   -835}, 0, {   160,   1116}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  4288,   -511,   -498}, 0, {  -356,    984}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  4478,    399,   -715}, 0, {   -26,    692}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  4392,   -511,  -1030}, 0, {   458,    824}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  4642,   -511,   -495}, 0, {  -360,    440}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  4780,   -511,   -834}, 0, {   158,    228}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  2820,   -511,   2679}, 0, {   160,   1116}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  2909,   -511,   3016}, 0, {  -356,    984}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  3098,    399,   2799}, 0, {   -26,    692}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  3262,   -511,   3019}, 0, {  -360,    440}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  3400,   -511,   2680}, 0, {   158,    228}, {0xfd, 0x42, 0x34, 0xff}}},\n};\n\n// 0x070014E0 - 0x070015E0\nstatic const Vtx bowser_2_seg7_vertex_070014E0[] = {\n    {{{  3013,   -511,   2484}, 0, {   458,    824}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  2820,   -511,   2679}, 0, {   160,   1116}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  3098,    399,   2799}, 0, {   -26,    692}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  3400,   -511,   2680}, 0, {   158,    228}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  -130,   -511,  -4068}, 0, {   762,    860}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  -426,   -511,  -3769}, 0, {   464,    564}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{     0,   1229,  -3583}, 0, {   278,    990}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  -290,   -511,  -3250}, 0, {   -52,    700}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{   253,   -511,  -3245}, 0, {   -56,   1242}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{   465,   -511,  -3767}, 0, {   462,   1454}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  -126,   -511,   3113}, 0, {   324,    450}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  -422,   -511,   3412}, 0, {   326,    748}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{     4,   1229,   3598}, 0, {   632,    628}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  -286,   -511,   3931}, 0, {   652,    938}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{   256,   -511,   3936}, 0, {   926,    670}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{   469,   -511,   3415}, 0, {   772,    304}, {0xfd, 0x42, 0x34, 0xff}}},\n};\n\n// 0x070015E0 - 0x070016A0\nstatic const Vtx bowser_2_seg7_vertex_070015E0[] = {\n    {{{  3453,   -511,   -484}, 0, {   458,    824}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  3157,   -511,   -185}, 0, {   160,   1116}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  3584,   1229,      0}, 0, {   -26,    692}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  3293,   -511,    333}, 0, {  -356,    984}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  3837,   -511,    338}, 0, {  -360,    440}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  4049,   -511,   -183}, 0, {   158,    228}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{ -3714,   -511,   -484}, 0, {  -516,    396}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{ -4010,   -511,   -185}, 0, {  -218,    692}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{ -3583,   1229,      0}, 0, {     0,    266}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{ -3874,   -511,    333}, 0, {   298,    556}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{ -3118,   -511,   -183}, 0, {  -216,   -198}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{ -3330,   -511,    338}, 0, {   302,     14}, {0xfd, 0x42, 0x34, 0xff}}},\n};\n\n// 0x070016A0 - 0x07001788\nstatic const Gfx bowser_2_seg7_dl_070016A0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_2_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_2_seg7_vertex_070010B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  4,  3, 0x0),\n    gsSP2Triangles( 6,  5,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  4, 0x0, 11, 10,  7, 0x0),\n    gsSP2Triangles(11, 12, 10, 0x0,  2, 12, 11, 0x0),\n    gsSP2Triangles( 2,  1, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bowser_2_seg7_vertex_070011B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 3,  4,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0,  9, 12, 13, 0x0),\n    gsSP1Triangle( 9, 14, 15, 0x0),\n    gsSPVertex(bowser_2_seg7_vertex_070012B0, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07001788 - 0x07001930\nstatic const Gfx bowser_2_seg7_dl_07001788[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_2_seg7_vertex_070012E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 7,  8,  5, 0x0,  8,  6,  5, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 10, 12, 11, 0x0),\n    gsSP2Triangles(12, 13, 11, 0x0, 14,  9, 11, 0x0),\n    gsSP2Triangles(13, 14, 11, 0x0,  1, 15,  2, 0x0),\n    gsSPVertex(bowser_2_seg7_vertex_070013E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 3,  4,  2, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  5,  7, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0, 10,  8,  7, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 12, 14, 13, 0x0),\n    gsSP1Triangle(14, 15, 13, 0x0),\n    gsSPVertex(bowser_2_seg7_vertex_070014E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 7,  8,  6, 0x0,  8,  9,  6, 0x0),\n    gsSP2Triangles( 9,  4,  6, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(11, 13, 12, 0x0, 13, 14, 12, 0x0),\n    gsSP2Triangles(15, 10, 12, 0x0, 14, 15, 12, 0x0),\n    gsSPVertex(bowser_2_seg7_vertex_070015E0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 3,  4,  2, 0x0,  4,  5,  2, 0x0),\n    gsSP2Triangles( 5,  0,  2, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 7,  9,  8, 0x0, 10,  6,  8, 0x0),\n    gsSP2Triangles(11, 10,  8, 0x0,  9, 11,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07001930 - 0x070019F0\nconst Gfx bowser_2_seg7_dl_07001930[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(200, 50, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_2_seg7_dl_070016A0),\n    gsSPDisplayList(bowser_2_seg7_dl_07001788),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bowser_2/areas/1/collision.inc.c",
    "content": "// 0x070019F0 - 0x07001A66\nconst Collision bowser_2_seg7_collision_lava[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-2776, -1023, -6479),\n    COL_VERTEX(-6545, -1023, -2617),\n    COL_VERTEX(-6479, -1023, 2777),\n    COL_VERTEX(6480, -1023, -2776),\n    COL_VERTEX(2618, -1023, -6545),\n    COL_VERTEX(-2617, -1023, 6546),\n    COL_VERTEX(6546, -1023, 2618),\n    COL_VERTEX(2777, -1023, 6480),\n    COL_TRI_INIT(SURFACE_BURNING, 6),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 4),\n    COL_TRI(0, 2, 5),\n    COL_TRI(0, 6, 3),\n    COL_TRI(0, 7, 6),\n    COL_TRI(0, 5, 7),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(2),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_null_start, /*pos*/  0, 1229,     0, /*yaw*/ 128), // unused, probably an early way to set initial position\n    SPECIAL_OBJECT(/*preset*/ special_bowser,     /*pos*/ -8, 1229, -1418),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bowser_2/areas/1/geo.inc.c",
    "content": "// 0x0E000188\nconst GeoLayout bowser_2_geo_000188[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND(BACKGROUND_FLAMING_SKY, geo_skybox_main),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 20000, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(11, 0, 2000, 6000, 0, 0, 0, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, bowser_2_seg7_dl_07001930),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(12, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bowser_2/geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"game/level_geo.h\"\n#include \"game/geo_misc.h\"\n#include \"game/camera.h\"\n#include \"game/moving_texture.h\"\n#include \"game/screen_transition.h\"\n#include \"game/paintings.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"levels/bowser_2/header.h\"\n\n#include \"levels/bowser_2/tilting_platform/geo.inc.c\"\n#include \"levels/bowser_2/areas/1/geo.inc.c\"\n"
  },
  {
    "path": "levels/bowser_2/header.h",
    "content": "#ifndef BOWSER_2_HEADER_H\n#define BOWSER_2_HEADER_H\n\n#include \"types.h\"\n\n// geo\nextern const GeoLayout bowser_2_geo_000170[];\nextern const GeoLayout bowser_2_geo_000188[];\n\n// leveldata\nextern const Gfx bowser_2_seg7_dl_07000D30[];\nextern const Gfx bowser_2_seg7_dl_07000FE0[];\nextern const Gfx bowser_2_seg7_dl_07001930[];\nextern const Collision bowser_2_seg7_collision_lava[];\nextern const Collision bowser_2_seg7_collision_tilting_platform[];\n\n// script\nextern const LevelScript level_bowser_2_entry[];\n\n#endif\n"
  },
  {
    "path": "levels/bowser_2/level.yaml",
    "content": "# Bowser in the Fire Sea (Boss Area)\nshort-name: bowser_2\nfull-name: Bowser in the Fire Sea (Boss Area)\ntexture-file: [\"/texture.inc.c\"]\narea-count: 1\nobjects: [tilting_platform]\nshared-path: []\n# loaded files\nskybox-bin: bitfs\ntexture-bin: fire\neffects: true\nactor-bins: [group12]\ncommon-bin: []\n"
  },
  {
    "path": "levels/bowser_2/leveldata.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"surface_terrains.h\"\n#include \"moving_texture_macros.h\"\n#include \"level_misc_macros.h\"\n#include \"macro_presets.h\"\n#include \"special_presets.h\"\n#include \"textures.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/bowser_2/texture.inc.c\"\n#include \"levels/bowser_2/tilting_platform/model.inc.c\"\n#include \"levels/bowser_2/areas/1/1/model.inc.c\"\n#include \"levels/bowser_2/areas/1/collision.inc.c\"\n#include \"levels/bowser_2/tilting_platform/collision.inc.c\"\n"
  },
  {
    "path": "levels/bowser_2/script.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"behavior_data.h\"\n#include \"model_ids.h\"\n#include \"seq_ids.h\"\n#include \"segment_symbols.h\"\n#include \"level_commands.h\"\n\n#include \"game/level_update.h\"\n\n#include \"levels/scripts.h\"\n\n#include \"actors/common1.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/bowser_2/header.h\"\n\nstatic const LevelScript script_func_local_1[] = {\n    OBJECT(/*model*/ MODEL_BOWSER_2_TILTING_ARENA, /*pos*/     0,    0,     0, /*angle*/ 0, 90, 0, /*bhvParam*/ 0, /*bhv*/ bhvTiltingBowserLavaPlatform),\n    OBJECT(/*model*/ MODEL_BOWSER_BOMB,            /*pos*/     4, 1329,  3598, /*angle*/ 0, 90, 0, /*bhvParam*/ 0, /*bhv*/ bhvBowserBomb),\n    OBJECT(/*model*/ MODEL_BOWSER_BOMB,            /*pos*/  3584, 1329,     0, /*angle*/ 0, 90, 0, /*bhvParam*/ 0, /*bhv*/ bhvBowserBomb),\n    OBJECT(/*model*/ MODEL_BOWSER_BOMB,            /*pos*/     0, 1329, -3583, /*angle*/ 0, 90, 0, /*bhvParam*/ 0, /*bhv*/ bhvBowserBomb),\n    OBJECT(/*model*/ MODEL_BOWSER_BOMB,            /*pos*/ -3583, 1329,     0, /*angle*/ 0, 90, 0, /*bhvParam*/ 0, /*bhv*/ bhvBowserBomb),\n    RETURN(),\n};\n\nconst LevelScript level_bowser_2_entry[] = {\n    INIT_LEVEL(),\n    LOAD_MIO0        (/*seg*/ 0x0A, _bitfs_skybox_mio0SegmentRomStart, _bitfs_skybox_mio0SegmentRomEnd),\n    LOAD_MIO0_TEXTURE(/*seg*/ 0x09, _fire_mio0SegmentRomStart, _fire_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x0B, _effect_mio0SegmentRomStart, _effect_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x07, _bowser_2_segment_7SegmentRomStart, _bowser_2_segment_7SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x06, _group12_mio0SegmentRomStart, _group12_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0D, _group12_geoSegmentRomStart, _group12_geoSegmentRomEnd),\n    ALLOC_LEVEL_POOL(),\n    MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),\n    JUMP_LINK(script_func_global_13),\n    LOAD_MODEL_FROM_GEO(MODEL_BOWSER_2_TILTING_ARENA, bowser_2_geo_000170),\n\n    AREA(/*index*/ 1, bowser_2_geo_000188),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, 2229, 0, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvSpinAirborneCircleWarp),\n        WARP_NODE(/*id*/ WARP_NODE_0A,      /*destLevel*/ LEVEL_BOWSER_2, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_SUCCESS, /*destLevel*/ LEVEL_CASTLE,   /*destArea*/ 3, /*destNode*/ WARP_NODE_36, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH,   /*destLevel*/ LEVEL_BITFS,    /*destArea*/ 1, /*destNode*/ WARP_NODE_0C, /*flags*/ WARP_NO_CHECKPOINT),\n        JUMP_LINK(script_func_local_1),\n        TERRAIN(/*terrainData*/ bowser_2_seg7_collision_lava),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0002, /*seq*/ SEQ_LEVEL_BOSS_KOOPA),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_STONE),\n    END_AREA(),\n\n    FREE_LEVEL_POOL(),\n    MARIO_POS(/*area*/ 1, /*yaw*/ 180, /*pos*/ 0, 1229, 0),\n    CALL(/*arg*/ 0, /*func*/ lvl_init_or_update),\n    CALL_LOOP(/*arg*/ 1, /*func*/ lvl_init_or_update),\n    CLEAR_LEVEL(),\n    SLEEP_BEFORE_EXIT(/*frames*/ 1),\n    EXIT(),\n};\n"
  },
  {
    "path": "levels/bowser_2/texture.inc.c",
    "content": "// 0x07000000 - 0x07000800\nALIGNED8 static const Texture bowser_2_seg7_texture_07000000[] = {\n#include \"levels/bowser_2/0.rgba16.inc.c\"\n};\n"
  },
  {
    "path": "levels/bowser_2/tilting_platform/collision.inc.c",
    "content": "// 0x07001A68 - 0x07001BA0\nconst Collision bowser_2_seg7_collision_tilting_platform[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x12),\n    COL_VERTEX(1176, 784, 2838),\n    COL_VERTEX(-1175, 784, 2838),\n    COL_VERTEX(0, -306, 0),\n    COL_VERTEX(2838, 784, 1176),\n    COL_VERTEX(1176, 1229, 2838),\n    COL_VERTEX(-1175, 1229, 2838),\n    COL_VERTEX(0, 1229, 0),\n    COL_VERTEX(2838, 1229, 1176),\n    COL_VERTEX(-2837, 1229, 1176),\n    COL_VERTEX(-2837, 784, 1176),\n    COL_VERTEX(2838, 784, -1175),\n    COL_VERTEX(2838, 1229, -1175),\n    COL_VERTEX(1176, 784, -2837),\n    COL_VERTEX(1176, 1229, -2837),\n    COL_VERTEX(-1175, 784, -2837),\n    COL_VERTEX(-2837, 784, -1175),\n    COL_VERTEX(-1175, 1229, -2837),\n    COL_VERTEX(-2837, 1229, -1175),\n    COL_TRI_INIT(SURFACE_DEFAULT, 32),\n    COL_TRI(0, 1, 2),\n    COL_TRI(3, 0, 2),\n    COL_TRI(3, 4, 0),\n    COL_TRI(0, 5, 1),\n    COL_TRI(0, 4, 5),\n    COL_TRI(5, 4, 6),\n    COL_TRI(4, 7, 6),\n    COL_TRI(3, 7, 4),\n    COL_TRI(8, 5, 6),\n    COL_TRI(1, 5, 8),\n    COL_TRI(2, 1, 9),\n    COL_TRI(1, 8, 9),\n    COL_TRI(10, 3, 2),\n    COL_TRI(10, 7, 3),\n    COL_TRI(7, 11, 6),\n    COL_TRI(10, 11, 7),\n    COL_TRI(12, 10, 2),\n    COL_TRI(12, 11, 10),\n    COL_TRI(11, 13, 6),\n    COL_TRI(12, 13, 11),\n    COL_TRI(14, 12, 2),\n    COL_TRI(14, 13, 12),\n    COL_TRI(13, 16, 6),\n    COL_TRI(14, 16, 13),\n    COL_TRI(15, 14, 2),\n    COL_TRI(15, 16, 14),\n    COL_TRI(16, 17, 6),\n    COL_TRI(15, 17, 16),\n    COL_TRI(9, 15, 2),\n    COL_TRI(9, 17, 15),\n    COL_TRI(17, 8, 6),\n    COL_TRI(9, 8, 17),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bowser_2/tilting_platform/geo.inc.c",
    "content": "// 0x0E000170\nconst GeoLayout bowser_2_geo_000170[] = {\n    GEO_CULLING_RADIUS(5000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bowser_2_seg7_dl_07000FE0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bowser_2/tilting_platform/model.inc.c",
    "content": "// 0x07000800 - 0x07000900\nstatic const Vtx bowser_2_seg7_vertex_07000800[] = {\n    {{{  1176,    784,  -2837}, 0, {  6612,    678}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2838,   1229,  -1175}, 0, {  7634,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2838,    784,  -1175}, 0, {  7634,    678}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1176,    784,   2838}, 0, {  1502,    678}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1176,   1229,   2838}, 0, {  1502,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1175,   1229,   2838}, 0, {  2524,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2838,    784,   1176}, 0, {   480,    678}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1175,    784,   2838}, 0, {  2524,    678}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2838,   1229,   1176}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2837,   1229,   1176}, 0, {  3546,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2837,    784,   1176}, 0, {  3546,    678}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2838,   1229,   1176}, 0, {  8656,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2838,    784,   1176}, 0, {  8656,    678}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -306,      0}, 0, {  1502,    552}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1175,    784,   2838}, 0, {  1246,    812}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2837,    784,   1176}, 0, {  1756,    812}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07000900 - 0x07000A00\nstatic const Vtx bowser_2_seg7_vertex_07000900[] = {\n    {{{  1176,    784,  -2837}, 0, {  6612,    678}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1176,   1229,  -2837}, 0, {  6612,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2838,   1229,  -1175}, 0, {  7634,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1175,    784,  -2837}, 0, {  5590,    678}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1175,   1229,  -2837}, 0, {  5590,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2837,    784,  -1175}, 0, {  4568,    678}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2837,   1229,  -1175}, 0, {  4568,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2837,    784,   1176}, 0, {  3546,    678}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2837,   1229,   1176}, 0, {  3546,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2837,    784,   1176}, 0, {  1756,    812}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2837,    784,  -1175}, 0, {  2268,    812}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -306,      0}, 0, {  2012,    552}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1175,    784,  -2837}, 0, {  2778,    812}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -306,      0}, 0, {  2524,    552}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1176,    784,  -2837}, 0, {  3290,    812}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -306,      0}, 0, {  3034,    552}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07000A00 - 0x07000AA0\nstatic const Vtx bowser_2_seg7_vertex_07000A00[] = {\n    {{{  1176,    784,  -2837}, 0, {  3290,    812}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2838,    784,  -1175}, 0, {  3800,    812}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -306,      0}, 0, {  3546,    552}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2838,    784,   1176}, 0, {  4312,    812}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -306,      0}, 0, {  4056,    552}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2838,    784,   1176}, 0, {   224,    812}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1176,    784,   2838}, 0, {   734,    812}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -306,      0}, 0, {   480,    552}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1175,    784,   2838}, 0, {  1246,    812}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -306,      0}, 0, {   990,    552}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07000AA0 - 0x07000BA0\nstatic const Vtx bowser_2_seg7_vertex_07000AA0[] = {\n    {{{  2838,   1229,  -1175}, 0, {  5298,  -4574}, {0xad, 0x10, 0x16, 0xff}}},\n    {{{  1703,   1229,    705}, 0, {  3210,  -1892}, {0xad, 0x10, 0x16, 0xff}}},\n    {{{  2838,   1229,   1176}, 0, {  4460,  -1222}, {0xad, 0x10, 0x16, 0xff}}},\n    {{{ -2837,   1229,  -1175}, 0, { -1782,  -4574}, {0xad, 0x10, 0x16, 0xff}}},\n    {{{  -704,   1229,  -1702}, 0, {  1064,  -5326}, {0xad, 0x10, 0x16, 0xff}}},\n    {{{ -1175,   1229,  -2837}, 0, {   882,  -6944}, {0xad, 0x10, 0x16, 0xff}}},\n    {{{ -2837,   1229,   1176}, 0, { -2620,  -1222}, {0xad, 0x10, 0x16, 0xff}}},\n    {{{ -1702,   1229,   -704}, 0, {  -534,  -3904}, {0xad, 0x10, 0x16, 0xff}}},\n    {{{ -1702,   1229,    705}, 0, { -1036,  -1892}, {0xad, 0x10, 0x16, 0xff}}},\n    {{{   705,   1229,  -1702}, 0, {  2824,  -5326}, {0xad, 0x10, 0x16, 0xff}}},\n    {{{  1176,   1229,  -2837}, 0, {  3816,  -6944}, {0xad, 0x10, 0x16, 0xff}}},\n    {{{ -1175,   1229,   2838}, 0, { -1138,   1146}, {0xad, 0x10, 0x16, 0xff}}},\n    {{{  -704,   1229,   1703}, 0, {  -148,   -470}, {0xad, 0x10, 0x16, 0xff}}},\n    {{{  1176,   1229,   2838}, 0, {  1792,   1146}, {0xad, 0x10, 0x16, 0xff}}},\n    {{{   705,   1229,   1703}, 0, {  1610,   -470}, {0xad, 0x10, 0x16, 0xff}}},\n    {{{  1703,   1229,   -704}, 0, {  3714,  -3904}, {0xad, 0x10, 0x16, 0xff}}},\n};\n\n// 0x07000BA0 - 0x07000C30\nstatic const Vtx bowser_2_seg7_vertex_07000BA0[] = {\n    {{{ -1418,   1229,    588}, 0, {  3034,  -2076}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  -587,   1229,   1419}, 0, {  5202,  -1178}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{     0,   1229,      0}, 0, {  3034,    990}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{   588,   1229,   1419}, 0, {  6100,    990}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  1419,   1229,    588}, 0, {  5202,   3156}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{ -1418,   1229,   -587}, 0, {   866,  -1178}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  1419,   1229,   -587}, 0, {  3034,   4054}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{   588,   1229,  -1418}, 0, {   866,   3156}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  -587,   1229,  -1418}, 0, {     0,    990}, {0xfd, 0x42, 0x34, 0xff}}},\n};\n\n// 0x07000C30 - 0x07000D30\nstatic const Vtx bowser_2_seg7_vertex_07000C30[] = {\n    {{{  -704,   1229,   1703}, 0, {     0,    850}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{   705,   1229,   1703}, 0, {  4568,  -1054}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{   588,   1229,   1419}, 0, {  3800,  -1820}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{ -1702,   1229,    705}, 0, { -4630,  -1054}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{ -1418,   1229,   -587}, 0, { -5450,  -5654}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{ -1702,   1229,   -704}, 0, { -6534,  -5654}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  -587,   1229,  -1418}, 0, { -3862,  -9486}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  -704,   1229,  -1702}, 0, { -4628, -10252}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{ -1418,   1229,    588}, 0, { -3862,  -1820}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{   588,   1229,  -1418}, 0, {     0, -11072}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{   705,   1229,  -1702}, 0, {     0, -12156}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  -587,   1229,   1419}, 0, {     0,   -234}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  1703,   1229,    705}, 0, {  6472,  -5652}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  1419,   1229,    588}, 0, {  5388,  -5652}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  1703,   1229,   -704}, 0, {  4568, -10252}, {0xfd, 0x42, 0x34, 0xff}}},\n    {{{  1419,   1229,   -587}, 0, {  3800,  -9486}, {0xfd, 0x42, 0x34, 0xff}}},\n};\n\n// 0x07000D30 - 0x07000E28\nconst Gfx bowser_2_seg7_dl_07000D30[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09009800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_2_seg7_vertex_07000800, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  4,  3, 0x0,  3,  5,  7, 0x0),\n    gsSP2Triangles( 6,  8,  4, 0x0,  7,  5,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  2, 11, 12, 0x0),\n    gsSP2Triangles( 2,  1, 11, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bowser_2_seg7_vertex_07000900, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 3,  4,  1, 0x0,  5,  4,  3, 0x0),\n    gsSP2Triangles( 5,  6,  4, 0x0,  7,  6,  5, 0x0),\n    gsSP2Triangles( 7,  8,  6, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(10, 12, 13, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(bowser_2_seg7_vertex_07000A00, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  6,  8,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07000E28 - 0x07000ED0\nstatic const Gfx bowser_2_seg7_dl_07000E28[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_2_seg7_vertex_07000AA0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  3, 0x0,  3,  7,  4, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  5,  4,  9, 0x0),\n    gsSP2Triangles( 5,  9, 10, 0x0, 11,  8,  6, 0x0),\n    gsSP2Triangles(11, 12,  8, 0x0, 11, 13, 14, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0, 10,  9, 15, 0x0),\n    gsSP2Triangles( 2,  1, 14, 0x0,  0, 15,  1, 0x0),\n    gsSP2Triangles( 2, 14, 13, 0x0, 10, 15,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07000ED0 - 0x07000F38\nstatic const Gfx bowser_2_seg7_dl_07000ED0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_2_seg7_vertex_07000BA0, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 3,  4,  2, 0x0,  5,  0,  2, 0x0),\n    gsSP2Triangles( 6,  7,  2, 0x0,  4,  6,  2, 0x0),\n    gsSP2Triangles( 8,  5,  2, 0x0,  7,  8,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07000F38 - 0x07000FE0\nstatic const Gfx bowser_2_seg7_dl_07000F38[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_2_seg7_vertex_07000C30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 3,  8,  4, 0x0,  7,  6,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  0,  8,  3, 0x0),\n    gsSP2Triangles( 0, 11,  8, 0x0, 12, 13,  2, 0x0),\n    gsSP2Triangles(14, 13, 12, 0x0, 12,  2,  1, 0x0),\n    gsSP2Triangles( 0,  2, 11, 0x0, 10,  9, 15, 0x0),\n    gsSP2Triangles(14, 15, 13, 0x0, 10, 15, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07000FE0 - 0x070010B0\nconst Gfx bowser_2_seg7_dl_07000FE0[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(200, 50, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_2_seg7_dl_07000D30),\n    gsSPDisplayList(bowser_2_seg7_dl_07000E28),\n    gsSPDisplayList(bowser_2_seg7_dl_07000ED0),\n    gsSPDisplayList(bowser_2_seg7_dl_07000F38),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bowser_3/areas/1/1/model.inc.c",
    "content": "// 0x07004030 - 0x07004048\nstatic const Lights1 bowser_3_seg7_lights_07004030 = gdSPDefLights1(\n    0x22, 0x22, 0x22,\n    0x89, 0x89, 0x8a, 0x28, 0x28, 0x28\n);\n\n// 0x07004048 - 0x07004060\nstatic const Lights1 bowser_3_seg7_lights_07004048 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07004060 - 0x07004160\nstatic const Vtx bowser_3_seg7_vertex_07004060[] = {\n    {{{ -1182,  -2364,    394}, 0, {  2232,     24}, {0xd8, 0x89, 0xf5, 0xff}}},\n    {{{ -2364,  -1852,   -787}, 0, {  3412,   1202}, {0xd8, 0x89, 0xf5, 0xff}}},\n    {{{  -787,  -2364,  -1024}, 0, {  3648,   -370}, {0xd8, 0x89, 0xf5, 0xff}}},\n    {{{ -1182,  -2364,    394}, 0, {  2232,     24}, {0xe9, 0x88, 0x20, 0xff}}},\n    {{{     0,  -2364,   1262}, 0, {  1366,  -1156}, {0xe9, 0x88, 0x20, 0xff}}},\n    {{{ -1497,  -1852,   2050}, 0, {   580,    338}, {0xe9, 0x88, 0x20, 0xff}}},\n    {{{     0,  -2364,   1262}, 0, {  1366,  -1156}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1182,  -2364,    394}, 0, {  2232,     24}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -787,  -2364,  -1024}, 0, {  3648,   -370}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -787,  -2364,  -1024}, 0, {  3648,   -370}, {0x00, 0x88, 0xd7, 0xff}}},\n    {{{     0,  -1852,  -2522}, 0, {  5144,  -1156}, {0x00, 0x88, 0xd7, 0xff}}},\n    {{{   788,  -2364,  -1024}, 0, {  3648,  -1944}, {0x00, 0x88, 0xd7, 0xff}}},\n    {{{   788,  -2364,  -1024}, 0, {  3648,  -1944}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1498,  -1852,   2050}, 0, {   580,  -2652}, {0x17, 0x88, 0x20, 0xff}}},\n    {{{     0,  -2364,   1262}, 0, {  1366,  -1156}, {0x17, 0x88, 0x20, 0xff}}},\n    {{{  1183,  -2364,    394}, 0, {  2232,  -2336}, {0x17, 0x88, 0x20, 0xff}}},\n};\n\n// 0x07004160 - 0x070041C0\nstatic const Vtx bowser_3_seg7_vertex_07004160[] = {\n    {{{     0,  -2364,   1262}, 0, {  1366,  -1156}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   788,  -2364,  -1024}, 0, {  3648,  -1944}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1183,  -2364,    394}, 0, {  2232,  -2336}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1183,  -2364,    394}, 0, {  2232,  -2336}, {0x28, 0x89, 0xf5, 0xff}}},\n    {{{   788,  -2364,  -1024}, 0, {  3648,  -1944}, {0x28, 0x89, 0xf5, 0xff}}},\n    {{{  2365,  -1852,   -787}, 0, {  3412,  -3518}, {0x28, 0x89, 0xf5, 0xff}}},\n};\n\n// 0x070041C0 - 0x07004260\nstatic const Vtx bowser_3_seg7_vertex_070041C0[] = {\n    {{{ -2364,    307,   -787}, 0, {  -582,  -1714}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1182,    307,    394}, 0, {   204,   -928}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -787,    307,  -1024}, 0, {   466,  -1872}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    307,   1262}, 0, {   990,   -350}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1497,    307,   2050}, 0, {    -6,    174}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1183,    307,    394}, 0, {  1776,   -928}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   788,    307,  -1024}, 0, {  1514,  -1872}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    307,  -2522}, 0, {   990,  -2870}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1498,    307,   2050}, 0, {  1986,    174}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2365,    307,   -787}, 0, {  2564,  -1714}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07004260 - 0x07004350\nstatic const Vtx bowser_3_seg7_vertex_07004260[] = {\n    {{{     0,  -1852,  -2522}, 0, {   990,   2012}, {0x70, 0x00, 0xc5, 0xff}}},\n    {{{     0,    307,  -2522}, 0, {   990,      0}, {0x70, 0x00, 0xc5, 0xff}}},\n    {{{   788,  -2364,  -1024}, 0, {  -698,   2012}, {0x70, 0x00, 0xc5, 0xff}}},\n    {{{  2365,  -1852,   -787}, 0, {   990,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1183,    307,    394}, 0, {  -678,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1183,  -2364,    394}, 0, {  -678,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2365,    307,   -787}, 0, {   990,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1183,  -2364,    394}, 0, {  -690,   2012}, {0x7c, 0x00, 0xe9, 0xff}}},\n    {{{  1498,    307,   2050}, 0, {   990,      0}, {0x7c, 0x00, 0xe9, 0xff}}},\n    {{{  1498,  -1852,   2050}, 0, {   990,   2012}, {0x7c, 0x00, 0xe9, 0xff}}},\n    {{{  1183,    307,    394}, 0, {  -690,      0}, {0x7c, 0x00, 0xe9, 0xff}}},\n    {{{  -787,  -2364,  -1024}, 0, {  -698,   2012}, {0x90, 0x00, 0xc5, 0xff}}},\n    {{{  -787,    307,  -1024}, 0, {  -698,      0}, {0x90, 0x00, 0xc5, 0xff}}},\n    {{{     0,    307,  -2522}, 0, {   990,      0}, {0x90, 0x00, 0xc5, 0xff}}},\n    {{{     0,  -1852,  -2522}, 0, {   990,   2012}, {0x90, 0x00, 0xc5, 0xff}}},\n};\n\n// 0x07004350 - 0x07004440\nstatic const Vtx bowser_3_seg7_vertex_07004350[] = {\n    {{{  1498,  -1852,   2050}, 0, {   990,   2012}, {0xc5, 0x00, 0x70, 0xff}}},\n    {{{  1498,    307,   2050}, 0, {   990,      0}, {0xc5, 0x00, 0x70, 0xff}}},\n    {{{     0,    307,   1262}, 0, {  -698,      0}, {0xc5, 0x00, 0x70, 0xff}}},\n    {{{     0,    307,  -2522}, 0, {   990,      0}, {0x70, 0x00, 0xc5, 0xff}}},\n    {{{   788,    307,  -1024}, 0, {  -698,      0}, {0x70, 0x00, 0xc5, 0xff}}},\n    {{{   788,  -2364,  -1024}, 0, {  -698,   2012}, {0x70, 0x00, 0xc5, 0xff}}},\n    {{{ -2364,    307,   -787}, 0, {   990,      0}, {0xee, 0x00, 0x83, 0xff}}},\n    {{{  -787,    307,  -1024}, 0, {  -600,      0}, {0xee, 0x00, 0x83, 0xff}}},\n    {{{  -787,  -2364,  -1024}, 0, {  -600,   2012}, {0xee, 0x00, 0x83, 0xff}}},\n    {{{ -2364,  -1852,   -787}, 0, {   990,   2012}, {0xee, 0x00, 0x83, 0xff}}},\n    {{{   788,  -2364,  -1024}, 0, {  -600,   2012}, {0x12, 0x00, 0x83, 0xff}}},\n    {{{  2365,    307,   -787}, 0, {   990,      0}, {0x12, 0x00, 0x83, 0xff}}},\n    {{{  2365,  -1852,   -787}, 0, {   990,   2012}, {0x12, 0x00, 0x83, 0xff}}},\n    {{{   788,    307,  -1024}, 0, {  -600,      0}, {0x12, 0x00, 0x83, 0xff}}},\n    {{{     0,  -2364,   1262}, 0, {  -698,   2012}, {0xc5, 0x00, 0x70, 0xff}}},\n};\n\n// 0x07004440 - 0x07004500\nstatic const Vtx bowser_3_seg7_vertex_07004440[] = {\n    {{{     0,  -2364,   1262}, 0, {  -698,   2012}, {0x3b, 0x00, 0x70, 0xff}}},\n    {{{     0,    307,   1262}, 0, {  -698,      0}, {0x3b, 0x00, 0x70, 0xff}}},\n    {{{ -1497,    307,   2050}, 0, {   990,      0}, {0x3b, 0x00, 0x70, 0xff}}},\n    {{{ -1497,  -1852,   2050}, 0, {   990,   2012}, {0x3b, 0x00, 0x70, 0xff}}},\n    {{{ -1497,  -1852,   2050}, 0, {   990,   2012}, {0x84, 0x00, 0xe9, 0xff}}},\n    {{{ -1497,    307,   2050}, 0, {   990,      0}, {0x84, 0x00, 0xe9, 0xff}}},\n    {{{ -1182,    307,    394}, 0, {  -690,      0}, {0x84, 0x00, 0xe9, 0xff}}},\n    {{{ -1182,  -2364,    394}, 0, {  -690,   2012}, {0x84, 0x00, 0xe9, 0xff}}},\n    {{{ -1182,  -2364,    394}, 0, {  -678,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2364,    307,   -787}, 0, {   990,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2364,  -1852,   -787}, 0, {   990,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1182,    307,    394}, 0, {  -678,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07004500 - 0x070045D8\nstatic const Gfx bowser_3_seg7_dl_07004500[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_3_seg7_texture_07000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bowser_3_seg7_lights_07004030.l, 1),\n    gsSPLight(&bowser_3_seg7_lights_07004030.a, 2),\n    gsSPVertex(bowser_3_seg7_vertex_07004060, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 6,  8, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(bowser_3_seg7_vertex_07004160, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPLight(&bowser_3_seg7_lights_07004048.l, 1),\n    gsSPLight(&bowser_3_seg7_lights_07004048.a, 2),\n    gsSPVertex(bowser_3_seg7_vertex_070041C0, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  2,  3,  5, 0x0),\n    gsSP2Triangles( 2,  5,  6, 0x0,  6,  7,  2, 0x0),\n    gsSP2Triangles( 3,  8,  5, 0x0,  5,  9,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070045D8 - 0x070046B0\nstatic const Gfx bowser_3_seg7_dl_070045D8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_3_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_3_seg7_vertex_07004260, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(bowser_3_seg7_vertex_07004350, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(bowser_3_seg7_vertex_07004440, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070046B0 - 0x07004740\nconst Gfx bowser_3_seg7_dl_070046B0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_3_seg7_dl_07004500),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_3_seg7_dl_070045D8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bowser_3/areas/1/bomb_stand/geo.inc.c",
    "content": "// 0x0E000380\nconst GeoLayout bowser_3_geo_000380[] = {\n    GEO_CULLING_RADIUS(700),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bowser_3_seg7_dl_07004958),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bowser_3/areas/1/bomb_stand/model.inc.c",
    "content": "// 0x07004740 - 0x07004758\nstatic const Lights1 bowser_3_seg7_lights_07004740 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07004758 - 0x07004848\nstatic const Vtx bowser_3_seg7_vertex_07004758[] = {\n    {{{   205,    256,      0}, 0, {   478,    478}, {0x4d, 0x3e, 0xb2, 0xff}}},\n    {{{     0,    256,   -204}, 0, {   734,    478}, {0x4d, 0x3e, 0xb2, 0xff}}},\n    {{{     0,    512,      0}, 0, {   606,      0}, {0x4d, 0x3e, 0xb2, 0xff}}},\n    {{{     0,    256,    205}, 0, {   224,    480}, {0x4e, 0x3e, 0x4e, 0xff}}},\n    {{{   205,    256,      0}, 0, {   478,    478}, {0x4e, 0x3e, 0x4e, 0xff}}},\n    {{{     0,    512,      0}, 0, {   352,      0}, {0x4e, 0x3e, 0x4e, 0xff}}},\n    {{{   205,    256,      0}, 0, {   478,    478}, {0x4e, 0xc2, 0x4e, 0xff}}},\n    {{{     0,    256,    205}, 0, {   224,    480}, {0x4e, 0xc2, 0x4e, 0xff}}},\n    {{{     0,      0,      0}, 0, {   352,    990}, {0x4e, 0xc2, 0x4e, 0xff}}},\n    {{{     0,    256,   -204}, 0, {   734,    478}, {0x4d, 0xc2, 0xb2, 0xff}}},\n    {{{   205,    256,      0}, 0, {   478,    478}, {0x4d, 0xc2, 0xb2, 0xff}}},\n    {{{     0,      0,      0}, 0, {   606,    990}, {0x4d, 0xc2, 0xb2, 0xff}}},\n    {{{  -204,    256,      0}, 0, {     0,    480}, {0xb2, 0x3e, 0x4d, 0xff}}},\n    {{{     0,    256,    205}, 0, {   224,    480}, {0xb2, 0x3e, 0x4d, 0xff}}},\n    {{{     0,    512,      0}, 0, {    96,      0}, {0xb2, 0x3e, 0x4d, 0xff}}},\n};\n\n// 0x07004848 - 0x070048D8\nstatic const Vtx bowser_3_seg7_vertex_07004848[] = {\n    {{{     0,    256,    205}, 0, {   224,    480}, {0xb2, 0xc2, 0x4d, 0xff}}},\n    {{{  -204,    256,      0}, 0, {     0,    480}, {0xb2, 0xc2, 0x4d, 0xff}}},\n    {{{     0,      0,      0}, 0, {    96,    990}, {0xb2, 0xc2, 0x4d, 0xff}}},\n    {{{     0,    256,   -204}, 0, {   734,    478}, {0xb2, 0x3e, 0xb2, 0xff}}},\n    {{{  -204,    256,      0}, 0, {   990,    480}, {0xb2, 0x3e, 0xb2, 0xff}}},\n    {{{     0,    512,      0}, 0, {   862,      0}, {0xb2, 0x3e, 0xb2, 0xff}}},\n    {{{  -204,    256,      0}, 0, {   990,    480}, {0xb2, 0xc2, 0xb2, 0xff}}},\n    {{{     0,    256,   -204}, 0, {   734,    478}, {0xb2, 0xc2, 0xb2, 0xff}}},\n    {{{     0,      0,      0}, 0, {   862,    990}, {0xb2, 0xc2, 0xb2, 0xff}}},\n};\n\n// 0x070048D8 - 0x07004958\nstatic const Gfx bowser_3_seg7_dl_070048D8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_3_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bowser_3_seg7_lights_07004740.l, 1),\n    gsSPLight(&bowser_3_seg7_lights_07004740.a, 2),\n    gsSPVertex(bowser_3_seg7_vertex_07004758, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(bowser_3_seg7_vertex_07004848, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07004958 - 0x070049C8\nconst Gfx bowser_3_seg7_dl_07004958[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_3_seg7_dl_070048D8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bowser_3/areas/1/collision.inc.c",
    "content": "// 0x070049C8 - 0x07004B94\nconst Collision bowser_3_seg7_collision_level[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x18),\n    COL_VERTEX(-8191, -6143, 8192),\n    COL_VERTEX(8192, -6143, 8192),\n    COL_VERTEX(8192, -6143, -8191),\n    COL_VERTEX(-8191, -6143, -8191),\n    COL_VERTEX(-1182, -2364, 394),\n    COL_VERTEX(-1182, 307, 394),\n    COL_VERTEX(-2364, 307, -787),\n    COL_VERTEX(-2364, -1852, -787),\n    COL_VERTEX(-787, 307, -1024),\n    COL_VERTEX(-787, -2364, -1024),\n    COL_VERTEX(-1497, -1852, 2050),\n    COL_VERTEX(-1497, 307, 2050),\n    COL_VERTEX(0, 307, 1262),\n    COL_VERTEX(788, 307, -1024),\n    COL_VERTEX(0, 307, -2522),\n    COL_VERTEX(1183, 307, 394),\n    COL_VERTEX(1498, -1852, 2050),\n    COL_VERTEX(1498, 307, 2050),\n    COL_VERTEX(0, -2364, 1262),\n    COL_VERTEX(2365, 307, -787),\n    COL_VERTEX(2365, -1852, -787),\n    COL_VERTEX(1183, -2364, 394),\n    COL_VERTEX(788, -2364, -1024),\n    COL_VERTEX(0, -1852, -2522),\n    COL_TRI_INIT(SURFACE_DEFAULT, 36),\n    COL_TRI(4, 18, 10),\n    COL_TRI(4, 5, 6),\n    COL_TRI(4, 6, 7),\n    COL_TRI(6, 5, 8),\n    COL_TRI(6, 8, 9),\n    COL_TRI(7, 6, 9),\n    COL_TRI(10, 5, 4),\n    COL_TRI(10, 11, 5),\n    COL_TRI(5, 11, 12),\n    COL_TRI(8, 5, 12),\n    COL_TRI(13, 14, 8),\n    COL_TRI(8, 12, 15),\n    COL_TRI(8, 15, 13),\n    COL_TRI(9, 8, 14),\n    COL_TRI(16, 17, 12),\n    COL_TRI(16, 12, 18),\n    COL_TRI(18, 12, 11),\n    COL_TRI(12, 17, 15),\n    COL_TRI(18, 11, 10),\n    COL_TRI(18, 4, 9),\n    COL_TRI(4, 7, 9),\n    COL_TRI(9, 23, 22),\n    COL_TRI(15, 19, 13),\n    COL_TRI(20, 19, 15),\n    COL_TRI(20, 15, 21),\n    COL_TRI(21, 15, 17),\n    COL_TRI(22, 13, 19),\n    COL_TRI(14, 13, 22),\n    COL_TRI(23, 14, 22),\n    COL_TRI(9, 14, 23),\n    COL_TRI(22, 19, 20),\n    COL_TRI(21, 17, 16),\n    COL_TRI(21, 22, 20),\n    COL_TRI(18, 22, 21),\n    COL_TRI(16, 18, 21),\n    COL_TRI(18, 9, 22),\n    COL_TRI_INIT(SURFACE_DEATH_PLANE, 2),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(7),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_null_start,   /*pos*/     0,   307,     0, /*yaw*/  128), // unused, probably an early way to set initial position\n    SPECIAL_OBJECT(/*preset*/ special_bowser,       /*pos*/    13,   307, -1024),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/ -3362,  -204,  1121, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/     0,  -204,  3584, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/  3362,  -204,  1126, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/  2123,  -204, -2912, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/ -2122,  -204, -2912, /*yaw*/    0),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bowser_3/areas/1/geo.inc.c",
    "content": "// 0x0E000398\nconst GeoLayout bowser_3_geo_000398[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND(BACKGROUND_PURPLE_SKY, geo_skybox_main),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 12800, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(11, 0, 2000, 6000, 0, 0, 0, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, bowser_3_seg7_dl_070046B0),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(0, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bowser_3/falling_platform_1/collision.inc.c",
    "content": "// 0x07004B94 - 0x07004C18\nconst Collision bowser_3_seg7_collision_07004B94[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-3071, 307, -1023),\n    COL_VERTEX(-2364, 307, -787),\n    COL_VERTEX(-787, 307, -1024),\n    COL_VERTEX(-3071, -1340, -1023),\n    COL_VERTEX(-2364, -1852, -787),\n    COL_VERTEX(-1945, 307, -2661),\n    COL_VERTEX(-1945, -1340, -2661),\n    COL_VERTEX(-787, -2364, -1024),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(1, 0, 3),\n    COL_TRI(1, 3, 4),\n    COL_TRI(2, 1, 4),\n    COL_TRI(0, 2, 5),\n    COL_TRI(0, 5, 6),\n    COL_TRI(3, 0, 6),\n    COL_TRI(6, 4, 3),\n    COL_TRI(6, 7, 4),\n    COL_TRI(7, 2, 4),\n    COL_TRI(5, 2, 7),\n    COL_TRI(6, 5, 7),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bowser_3/falling_platform_1/geo.inc.c",
    "content": "// 0x0E000290\nconst GeoLayout bowser_3_geo_000290[] = {\n    GEO_CULLING_RADIUS(5000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bowser_3_seg7_dl_070022A8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bowser_3/falling_platform_1/model.inc.c",
    "content": "// 0x07002000 - 0x07002018\nstatic const Lights1 bowser_3_seg7_lights_07002000 = gdSPDefLights1(\n    0x22, 0x22, 0x22,\n    0x89, 0x89, 0x8a, 0x28, 0x28, 0x28\n);\n\n// 0x07002018 - 0x07002030\nstatic const Lights1 bowser_3_seg7_lights_07002018 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07002030 - 0x07002090\nstatic const Vtx bowser_3_seg7_vertex_07002030[] = {\n    {{{ -1945,  -1340,  -2661}, 0, {  5282,    786}, {0xc4, 0x99, 0xd7, 0xff}}},\n    {{{ -2364,  -1852,   -787}, 0, {  3412,   1202}, {0xc4, 0x99, 0xd7, 0xff}}},\n    {{{ -3071,  -1340,  -1023}, 0, {  3648,   1908}, {0xc4, 0x99, 0xd7, 0xff}}},\n    {{{ -1945,  -1340,  -2661}, 0, {  5282,    786}, {0xd6, 0x90, 0xd8, 0xff}}},\n    {{{  -787,  -2364,  -1024}, 0, {  3648,   -370}, {0xd6, 0x90, 0xd8, 0xff}}},\n    {{{ -2364,  -1852,   -787}, 0, {  3412,   1202}, {0xd6, 0x90, 0xd8, 0xff}}},\n};\n\n// 0x07002090 - 0x070020D0\nstatic const Vtx bowser_3_seg7_vertex_07002090[] = {\n    {{{ -3071,    307,  -1023}, 0, { -1052,  -1872}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -787,    307,  -1024}, 0, {   466,  -1872}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1945,    307,  -2661}, 0, {  -302,  -2962}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2364,    307,   -787}, 0, {  -582,  -1714}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070020D0 - 0x070021D0\nstatic const Vtx bowser_3_seg7_vertex_070020D0[] = {\n    {{{ -1945,  -1340,  -2661}, 0, {   990,   2012}, {0x67, 0x00, 0xb7, 0xff}}},\n    {{{ -1945,    307,  -2661}, 0, {   990,      0}, {0x67, 0x00, 0xb7, 0xff}}},\n    {{{  -787,  -2364,  -1024}, 0, { -1010,   2012}, {0x67, 0x00, 0xb7, 0xff}}},\n    {{{ -2364,    307,   -787}, 0, {   494,      0}, {0xd8, 0x00, 0x78, 0xff}}},\n    {{{ -3071,    307,  -1023}, 0, {   990,      0}, {0xd8, 0x00, 0x78, 0xff}}},\n    {{{ -3071,  -1340,  -1023}, 0, {   990,   2012}, {0xd8, 0x00, 0x78, 0xff}}},\n    {{{ -2364,  -1852,   -787}, 0, {   494,   2012}, {0xd8, 0x00, 0x78, 0xff}}},\n    {{{  -787,  -2364,  -1024}, 0, {  -504,   2012}, {0x12, 0x00, 0x7d, 0xff}}},\n    {{{  -787,    307,  -1024}, 0, {  -506,      0}, {0x12, 0x00, 0x7d, 0xff}}},\n    {{{ -2364,  -1852,   -787}, 0, {  1048,   2012}, {0x12, 0x00, 0x7d, 0xff}}},\n    {{{ -2364,    307,   -787}, 0, {  1046,      0}, {0x12, 0x00, 0x7d, 0xff}}},\n    {{{ -3071,  -1340,  -1023}, 0, { 14512,   1816}, {0x98, 0x00, 0xb9, 0xff}}},\n    {{{ -3071,    307,  -1023}, 0, { 14512,    172}, {0x98, 0x00, 0xb9, 0xff}}},\n    {{{ -1945,  -1340,  -2661}, 0, { 13006,   1816}, {0x98, 0x00, 0xb9, 0xff}}},\n    {{{ -1945,    307,  -2661}, 0, { 13006,    172}, {0x98, 0x00, 0xb9, 0xff}}},\n    {{{  -787,    307,  -1024}, 0, { -1010,      0}, {0x67, 0x00, 0xb7, 0xff}}},\n};\n\n// 0x070021D0 - 0x07002240\nstatic const Gfx bowser_3_seg7_dl_070021D0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_3_seg7_texture_07000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bowser_3_seg7_lights_07002000.l, 1),\n    gsSPLight(&bowser_3_seg7_lights_07002000.a, 2),\n    gsSPVertex(bowser_3_seg7_vertex_07002030, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPLight(&bowser_3_seg7_lights_07002018.l, 1),\n    gsSPLight(&bowser_3_seg7_lights_07002018.a, 2),\n    gsSPVertex(bowser_3_seg7_vertex_07002090, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07002240 - 0x070022A8\nstatic const Gfx bowser_3_seg7_dl_07002240[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_3_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_3_seg7_vertex_070020D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0,  1, 15,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070022A8 - 0x07002338\nconst Gfx bowser_3_seg7_dl_070022A8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_3_seg7_dl_070021D0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_3_seg7_dl_07002240),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bowser_3/falling_platform_10/collision.inc.c",
    "content": "// 0x07005038 - 0x070050BC\nconst Collision bowser_3_seg7_collision_07005038[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-787, 307, -1024),\n    COL_VERTEX(-1945, 307, -2661),\n    COL_VERTEX(-1945, -1340, -2661),\n    COL_VERTEX(-787, -2364, -1024),\n    COL_VERTEX(0, 307, -2522),\n    COL_VERTEX(0, 307, -3276),\n    COL_VERTEX(0, -1852, -2522),\n    COL_VERTEX(0, -1340, -3276),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(3, 0, 2),\n    COL_TRI(4, 0, 3),\n    COL_TRI(0, 4, 5),\n    COL_TRI(0, 5, 1),\n    COL_TRI(4, 3, 6),\n    COL_TRI(7, 5, 4),\n    COL_TRI(7, 4, 6),\n    COL_TRI(2, 1, 5),\n    COL_TRI(2, 5, 7),\n    COL_TRI(7, 6, 2),\n    COL_TRI(6, 3, 2),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bowser_3/falling_platform_10/geo.inc.c",
    "content": "// 0x0E000368\nconst GeoLayout bowser_3_geo_000368[] = {\n    GEO_CULLING_RADIUS(5000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bowser_3_seg7_dl_07003FA0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bowser_3/falling_platform_10/model.inc.c",
    "content": "// 0x07003CF8 - 0x07003D10\nstatic const Lights1 bowser_3_seg7_lights_07003CF8 = gdSPDefLights1(\n    0x22, 0x22, 0x22,\n    0x89, 0x89, 0x8a, 0x28, 0x28, 0x28\n);\n\n// 0x07003D10 - 0x07003D28\nstatic const Lights1 bowser_3_seg7_lights_07003D10 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07003D28 - 0x07003D88\nstatic const Vtx bowser_3_seg7_vertex_07003D28[] = {\n    {{{     0,  -1340,  -3276}, 0, {  5896,  -1156}, {0xea, 0x99, 0xba, 0xff}}},\n    {{{     0,  -1852,  -2522}, 0, {  5144,  -1156}, {0xea, 0x99, 0xba, 0xff}}},\n    {{{ -1945,  -1340,  -2661}, 0, {  5282,    786}, {0xea, 0x99, 0xba, 0xff}}},\n    {{{     0,  -1852,  -2522}, 0, {  5144,  -1156}, {0xe7, 0x90, 0xcc, 0xff}}},\n    {{{  -787,  -2364,  -1024}, 0, {  3648,   -370}, {0xe7, 0x90, 0xcc, 0xff}}},\n    {{{ -1945,  -1340,  -2661}, 0, {  5282,    786}, {0xe7, 0x90, 0xcc, 0xff}}},\n};\n\n// 0x07003D88 - 0x07003DC8\nstatic const Vtx bowser_3_seg7_vertex_07003D88[] = {\n    {{{  -787,    307,  -1024}, 0, {   466,  -1872}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    307,  -2522}, 0, {   990,  -2870}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    307,  -3276}, 0, {   990,  -3370}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1945,    307,  -2661}, 0, {  -302,  -2962}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07003DC8 - 0x07003EC8\nstatic const Vtx bowser_3_seg7_vertex_07003DC8[] = {\n    {{{  -787,  -2364,  -1024}, 0, { -1010,   2012}, {0x99, 0x00, 0x49, 0xff}}},\n    {{{  -787,    307,  -1024}, 0, { -1010,      0}, {0x99, 0x00, 0x49, 0xff}}},\n    {{{ -1945,  -1340,  -2661}, 0, {   990,   2012}, {0x99, 0x00, 0x49, 0xff}}},\n    {{{ -1945,  -1340,  -2661}, 0, { 13006,   1816}, {0xda, 0x00, 0x87, 0xff}}},\n    {{{     0,    307,  -3276}, 0, { 11466,    172}, {0xda, 0x00, 0x87, 0xff}}},\n    {{{     0,  -1340,  -3276}, 0, { 11466,   1816}, {0xda, 0x00, 0x87, 0xff}}},\n    {{{ -1945,    307,  -2661}, 0, { 13006,    172}, {0xda, 0x00, 0x87, 0xff}}},\n    {{{     0,  -1340,  -3276}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,    307,  -3276}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,    307,  -2522}, 0, {   238,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,  -1852,  -2522}, 0, {   238,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,    307,  -2522}, 0, {  -698,      0}, {0x70, 0x00, 0x3b, 0xff}}},\n    {{{  -787,  -2364,  -1024}, 0, {   990,   2012}, {0x70, 0x00, 0x3b, 0xff}}},\n    {{{     0,  -1852,  -2522}, 0, {  -698,   2012}, {0x70, 0x00, 0x3b, 0xff}}},\n    {{{  -787,    307,  -1024}, 0, {   990,      0}, {0x70, 0x00, 0x3b, 0xff}}},\n    {{{ -1945,    307,  -2661}, 0, {   990,      0}, {0x99, 0x00, 0x49, 0xff}}},\n};\n\n// 0x07003EC8 - 0x07003F38\nstatic const Gfx bowser_3_seg7_dl_07003EC8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_3_seg7_texture_07000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bowser_3_seg7_lights_07003CF8.l, 1),\n    gsSPLight(&bowser_3_seg7_lights_07003CF8.a, 2),\n    gsSPVertex(bowser_3_seg7_vertex_07003D28, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPLight(&bowser_3_seg7_lights_07003D10.l, 1),\n    gsSPLight(&bowser_3_seg7_lights_07003D10.a, 2),\n    gsSPVertex(bowser_3_seg7_vertex_07003D88, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07003F38 - 0x07003FA0\nstatic const Gfx bowser_3_seg7_dl_07003F38[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_3_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_3_seg7_vertex_07003DC8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  1, 15,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07003FA0 - 0x07004030\nconst Gfx bowser_3_seg7_dl_07003FA0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_3_seg7_dl_07003EC8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_3_seg7_dl_07003F38),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bowser_3/falling_platform_2/collision.inc.c",
    "content": "// 0x07004C18 - 0x07004C9C\nconst Collision bowser_3_seg7_collision_07004C18[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-1182, -2364, 394),\n    COL_VERTEX(-1182, 307, 394),\n    COL_VERTEX(-3071, 307, 1024),\n    COL_VERTEX(-3071, -1340, 1024),\n    COL_VERTEX(-2364, 307, -787),\n    COL_VERTEX(-3071, 307, -1023),\n    COL_VERTEX(-2364, -1852, -787),\n    COL_VERTEX(-3071, -1340, -1023),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(2, 1, 4),\n    COL_TRI(2, 4, 5),\n    COL_TRI(3, 2, 5),\n    COL_TRI(4, 1, 0),\n    COL_TRI(4, 0, 6),\n    COL_TRI(7, 5, 4),\n    COL_TRI(7, 4, 6),\n    COL_TRI(3, 5, 7),\n    COL_TRI(6, 0, 3),\n    COL_TRI(6, 3, 7),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bowser_3/falling_platform_2/geo.inc.c",
    "content": "// 0x0E0002A8\nconst GeoLayout bowser_3_geo_0002A8[] = {\n    GEO_CULLING_RADIUS(5000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bowser_3_seg7_dl_070025E0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bowser_3/falling_platform_2/model.inc.c",
    "content": "// 0x07002338 - 0x07002350\nstatic const Lights1 bowser_3_seg7_lights_07002338 = gdSPDefLights1(\n    0x22, 0x22, 0x22,\n    0x89, 0x89, 0x8a, 0x28, 0x28, 0x28\n);\n\n// 0x07002350 - 0x07002368\nstatic const Lights1 bowser_3_seg7_lights_07002350 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07002368 - 0x070023C8\nstatic const Vtx bowser_3_seg7_vertex_07002368[] = {\n    {{{ -2364,  -1852,   -787}, 0, {  3412,   1202}, {0xb6, 0x9a, 0x00, 0xff}}},\n    {{{ -3071,  -1340,   1024}, 0, {  1604,   1908}, {0xb6, 0x9a, 0x00, 0xff}}},\n    {{{ -3071,  -1340,  -1023}, 0, {  3648,   1908}, {0xb6, 0x9a, 0x00, 0xff}}},\n    {{{ -2364,  -1852,   -787}, 0, {  3412,   1202}, {0xc7, 0x90, 0x09, 0xff}}},\n    {{{ -1182,  -2364,    394}, 0, {  2232,     24}, {0xc7, 0x90, 0x09, 0xff}}},\n    {{{ -3071,  -1340,   1024}, 0, {  1604,   1908}, {0xc7, 0x90, 0x09, 0xff}}},\n};\n\n// 0x070023C8 - 0x07002408\nstatic const Vtx bowser_3_seg7_vertex_070023C8[] = {\n    {{{ -3071,    307,   1024}, 0, { -1052,   -508}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1182,    307,    394}, 0, {   204,   -928}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2364,    307,   -787}, 0, {  -582,  -1714}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3071,    307,  -1023}, 0, { -1052,  -1872}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07002408 - 0x07002508\nstatic const Vtx bowser_3_seg7_vertex_07002408[] = {\n    {{{ -1182,  -2364,    394}, 0, {  -996,   2012}, {0x28, 0x00, 0x78, 0xff}}},\n    {{{ -3071,    307,   1024}, 0, {   990,      0}, {0x28, 0x00, 0x78, 0xff}}},\n    {{{ -3071,  -1340,   1024}, 0, {   990,   2012}, {0x28, 0x00, 0x78, 0xff}}},\n    {{{ -3071,  -1340,   1024}, 0, { 16084,   1816}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3071,    307,  -1023}, 0, { 14512,    172}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3071,  -1340,  -1023}, 0, { 14512,   1816}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3071,    307,   1024}, 0, { 16084,    172}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3071,  -1340,  -1023}, 0, {   990,   2012}, {0x28, 0x00, 0x88, 0xff}}},\n    {{{ -3071,    307,  -1023}, 0, {   990,      0}, {0x28, 0x00, 0x88, 0xff}}},\n    {{{ -2364,    307,   -787}, 0, {   246,      0}, {0x28, 0x00, 0x88, 0xff}}},\n    {{{ -2364,  -1852,   -787}, 0, {   246,   2012}, {0x28, 0x00, 0x88, 0xff}}},\n    {{{ -2364,    307,   -787}, 0, {  -678,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1182,  -2364,    394}, 0, {   990,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2364,  -1852,   -787}, 0, {  -678,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1182,    307,    394}, 0, {   990,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1182,    307,    394}, 0, {  -996,      0}, {0x28, 0x00, 0x78, 0xff}}},\n};\n\n// 0x07002508 - 0x07002578\nstatic const Gfx bowser_3_seg7_dl_07002508[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_3_seg7_texture_07000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bowser_3_seg7_lights_07002338.l, 1),\n    gsSPLight(&bowser_3_seg7_lights_07002338.a, 2),\n    gsSPVertex(bowser_3_seg7_vertex_07002368, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPLight(&bowser_3_seg7_lights_07002350.l, 1),\n    gsSPLight(&bowser_3_seg7_lights_07002350.a, 2),\n    gsSPVertex(bowser_3_seg7_vertex_070023C8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07002578 - 0x070025E0\nstatic const Gfx bowser_3_seg7_dl_07002578[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_3_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_3_seg7_vertex_07002408, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070025E0 - 0x07002670\nconst Gfx bowser_3_seg7_dl_070025E0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_3_seg7_dl_07002508),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_3_seg7_dl_07002578),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bowser_3/falling_platform_3/collision.inc.c",
    "content": "// 0x07004C9C - 0x07004D20\nconst Collision bowser_3_seg7_collision_07004C9C[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-1497, 307, 2050),\n    COL_VERTEX(-1945, -1340, 2662),\n    COL_VERTEX(-1497, -1852, 2050),\n    COL_VERTEX(-3071, -1340, 1024),\n    COL_VERTEX(-1945, 307, 2662),\n    COL_VERTEX(-3071, 307, 1024),\n    COL_VERTEX(-1182, 307, 394),\n    COL_VERTEX(-1182, -2364, 394),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(3, 2, 1),\n    COL_TRI(0, 4, 1),\n    COL_TRI(1, 4, 5),\n    COL_TRI(1, 5, 3),\n    COL_TRI(5, 4, 0),\n    COL_TRI(3, 5, 6),\n    COL_TRI(5, 0, 6),\n    COL_TRI(3, 6, 7),\n    COL_TRI(3, 7, 2),\n    COL_TRI(7, 6, 0),\n    COL_TRI(7, 0, 2),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bowser_3/falling_platform_3/geo.inc.c",
    "content": "// 0x0E0002C0\nconst GeoLayout bowser_3_geo_0002C0[] = {\n    GEO_CULLING_RADIUS(5000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bowser_3_seg7_dl_07002918),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bowser_3/falling_platform_3/model.inc.c",
    "content": "// 0x07002670 - 0x07002688\nstatic const Lights1 bowser_3_seg7_lights_07002670 = gdSPDefLights1(\n    0x22, 0x22, 0x22,\n    0x89, 0x89, 0x8a, 0x28, 0x28, 0x28\n);\n\n// 0x07002688 - 0x070026A0\nstatic const Lights1 bowser_3_seg7_lights_07002688 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x070026A0 - 0x07002700\nstatic const Vtx bowser_3_seg7_vertex_070026A0[] = {\n    {{{ -3071,  -1340,   1024}, 0, {  1604,   1908}, {0xc4, 0x99, 0x29, 0xff}}},\n    {{{ -1497,  -1852,   2050}, 0, {   580,    338}, {0xc4, 0x99, 0x29, 0xff}}},\n    {{{ -1945,  -1340,   2662}, 0, {     0,    786}, {0xc4, 0x99, 0x29, 0xff}}},\n    {{{ -3071,  -1340,   1024}, 0, {  1604,   1908}, {0xcc, 0x90, 0x18, 0xff}}},\n    {{{ -1182,  -2364,    394}, 0, {  2232,     24}, {0xcc, 0x90, 0x18, 0xff}}},\n    {{{ -1497,  -1852,   2050}, 0, {   580,    338}, {0xcc, 0x90, 0x18, 0xff}}},\n};\n\n// 0x07002700 - 0x07002740\nstatic const Vtx bowser_3_seg7_vertex_07002700[] = {\n    {{{ -3071,    307,   1024}, 0, { -1052,   -508}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1497,    307,   2050}, 0, {    -6,    174}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1182,    307,    394}, 0, {   204,   -928}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1945,    307,   2662}, 0, {  -302,    582}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07002740 - 0x07002840\nstatic const Vtx bowser_3_seg7_vertex_07002740[] = {\n    {{{ -3071,  -1340,   1024}, 0, {  -996,   2012}, {0xd8, 0x00, 0x88, 0xff}}},\n    {{{ -1182,    307,    394}, 0, {   990,      0}, {0xd8, 0x00, 0x88, 0xff}}},\n    {{{ -1182,  -2364,    394}, 0, {   990,   2012}, {0xd8, 0x00, 0x88, 0xff}}},\n    {{{ -1945,  -1340,   2662}, 0, {  2260,   1816}, {0x98, 0x00, 0x47, 0xff}}},\n    {{{ -1945,    307,   2662}, 0, {  2260,    172}, {0x98, 0x00, 0x47, 0xff}}},\n    {{{ -3071,    307,   1024}, 0, {   754,    172}, {0x98, 0x00, 0x47, 0xff}}},\n    {{{ -3071,  -1340,   1024}, 0, {   754,   1816}, {0x98, 0x00, 0x47, 0xff}}},\n    {{{ -1182,  -2364,    394}, 0, {  -690,   2012}, {0x7c, 0x00, 0x17, 0xff}}},\n    {{{ -1497,    307,   2050}, 0, {   990,      0}, {0x7c, 0x00, 0x17, 0xff}}},\n    {{{ -1497,  -1852,   2050}, 0, {   990,   2012}, {0x7c, 0x00, 0x17, 0xff}}},\n    {{{ -1182,    307,    394}, 0, {  -690,      0}, {0x7c, 0x00, 0x17, 0xff}}},\n    {{{ -1497,    307,   2050}, 0, {   234,      0}, {0x66, 0x00, 0x4b, 0xff}}},\n    {{{ -1945,  -1340,   2662}, 0, {   990,   2012}, {0x66, 0x00, 0x4b, 0xff}}},\n    {{{ -1497,  -1852,   2050}, 0, {   234,   2012}, {0x66, 0x00, 0x4b, 0xff}}},\n    {{{ -1945,    307,   2662}, 0, {   990,      0}, {0x66, 0x00, 0x4b, 0xff}}},\n    {{{ -3071,    307,   1024}, 0, {  -996,      0}, {0xd8, 0x00, 0x88, 0xff}}},\n};\n\n// 0x07002840 - 0x070028B0\nstatic const Gfx bowser_3_seg7_dl_07002840[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_3_seg7_texture_07000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bowser_3_seg7_lights_07002670.l, 1),\n    gsSPLight(&bowser_3_seg7_lights_07002670.a, 2),\n    gsSPVertex(bowser_3_seg7_vertex_070026A0, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPLight(&bowser_3_seg7_lights_07002688.l, 1),\n    gsSPLight(&bowser_3_seg7_lights_07002688.a, 2),\n    gsSPVertex(bowser_3_seg7_vertex_07002700, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070028B0 - 0x07002918\nstatic const Gfx bowser_3_seg7_dl_070028B0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_3_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_3_seg7_vertex_07002740, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07002918 - 0x070029A8\nconst Gfx bowser_3_seg7_dl_07002918[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_3_seg7_dl_07002840),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_3_seg7_dl_070028B0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bowser_3/falling_platform_4/collision.inc.c",
    "content": "// 0x07004D20 - 0x07004DA4\nconst Collision bowser_3_seg7_collision_07004D20[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-1945, 307, 2662),\n    COL_VERTEX(0, 307, 3277),\n    COL_VERTEX(0, 307, 1262),\n    COL_VERTEX(-1497, 307, 2050),\n    COL_VERTEX(0, -1340, 3277),\n    COL_VERTEX(-1945, -1340, 2662),\n    COL_VERTEX(-1497, -1852, 2050),\n    COL_VERTEX(0, -2364, 1262),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(4, 1, 0),\n    COL_TRI(4, 0, 5),\n    COL_TRI(0, 3, 6),\n    COL_TRI(5, 0, 6),\n    COL_TRI(2, 1, 4),\n    COL_TRI(7, 2, 4),\n    COL_TRI(3, 2, 7),\n    COL_TRI(3, 7, 6),\n    COL_TRI(6, 4, 5),\n    COL_TRI(6, 7, 4),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bowser_3/falling_platform_4/geo.inc.c",
    "content": "// 0x0E0002D8\nconst GeoLayout bowser_3_geo_0002D8[] = {\n    GEO_CULLING_RADIUS(5000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bowser_3_seg7_dl_07002C50),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bowser_3/falling_platform_4/model.inc.c",
    "content": "// 0x070029A8 - 0x070029C0\nstatic const Lights1 bowser_3_seg7_lights_070029A8 = gdSPDefLights1(\n    0x22, 0x22, 0x22,\n    0x89, 0x89, 0x8a, 0x28, 0x28, 0x28\n);\n\n// 0x070029C0 - 0x070029D8\nstatic const Lights1 bowser_3_seg7_lights_070029C0 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x070029D8 - 0x07002A38\nstatic const Vtx bowser_3_seg7_vertex_070029D8[] = {\n    {{{ -1497,  -1852,   2050}, 0, {   580,    338}, {0xf8, 0x90, 0x39, 0xff}}},\n    {{{     0,  -2364,   1262}, 0, {  1366,  -1156}, {0xf8, 0x90, 0x39, 0xff}}},\n    {{{     0,  -1340,   3277}, 0, {  -644,  -1156}, {0xf8, 0x90, 0x39, 0xff}}},\n    {{{ -1497,  -1852,   2050}, 0, {   580,    338}, {0xea, 0x99, 0x46, 0xff}}},\n    {{{     0,  -1340,   3277}, 0, {  -644,  -1156}, {0xea, 0x99, 0x46, 0xff}}},\n    {{{ -1945,  -1340,   2662}, 0, {     0,    786}, {0xea, 0x99, 0x46, 0xff}}},\n};\n\n// 0x07002A38 - 0x07002A78\nstatic const Vtx bowser_3_seg7_vertex_07002A38[] = {\n    {{{ -1945,    307,   2662}, 0, {  -302,    582}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    307,   3277}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    307,   1262}, 0, {   990,   -350}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1497,    307,   2050}, 0, {    -6,    174}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07002A78 - 0x07002B78\nstatic const Vtx bowser_3_seg7_vertex_07002A78[] = {\n    {{{     0,  -2364,   1262}, 0, { -1020,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,    307,   1262}, 0, { -1020,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,  -1340,   3277}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,  -1340,   3277}, 0, {  3800,   1816}, {0xda, 0x00, 0x79, 0xff}}},\n    {{{ -1945,    307,   2662}, 0, {  2260,    172}, {0xda, 0x00, 0x79, 0xff}}},\n    {{{ -1945,  -1340,   2662}, 0, {  2260,   1816}, {0xda, 0x00, 0x79, 0xff}}},\n    {{{     0,    307,   3277}, 0, {  3800,    172}, {0xda, 0x00, 0x79, 0xff}}},\n    {{{ -1945,    307,   2662}, 0, {   234,      0}, {0x9a, 0x00, 0xb5, 0xff}}},\n    {{{ -1497,    307,   2050}, 0, {   990,      0}, {0x9a, 0x00, 0xb5, 0xff}}},\n    {{{ -1497,  -1852,   2050}, 0, {   990,   2012}, {0x9a, 0x00, 0xb5, 0xff}}},\n    {{{ -1945,  -1340,   2662}, 0, {   234,   2012}, {0x9a, 0x00, 0xb5, 0xff}}},\n    {{{ -1497,    307,   2050}, 0, {  -698,      0}, {0xc5, 0x00, 0x90, 0xff}}},\n    {{{     0,  -2364,   1262}, 0, {   990,   2012}, {0xc5, 0x00, 0x90, 0xff}}},\n    {{{ -1497,  -1852,   2050}, 0, {  -698,   2012}, {0xc5, 0x00, 0x90, 0xff}}},\n    {{{     0,    307,   1262}, 0, {   990,      0}, {0xc5, 0x00, 0x90, 0xff}}},\n    {{{     0,    307,   3277}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07002B78 - 0x07002BE8\nstatic const Gfx bowser_3_seg7_dl_07002B78[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_3_seg7_texture_07000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bowser_3_seg7_lights_070029A8.l, 1),\n    gsSPLight(&bowser_3_seg7_lights_070029A8.a, 2),\n    gsSPVertex(bowser_3_seg7_vertex_070029D8, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPLight(&bowser_3_seg7_lights_070029C0.l, 1),\n    gsSPLight(&bowser_3_seg7_lights_070029C0.a, 2),\n    gsSPVertex(bowser_3_seg7_vertex_07002A38, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07002BE8 - 0x07002C50\nstatic const Gfx bowser_3_seg7_dl_07002BE8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_3_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_3_seg7_vertex_07002A78, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  1, 15,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07002C50 - 0x07002CE0\nconst Gfx bowser_3_seg7_dl_07002C50[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_3_seg7_dl_07002B78),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_3_seg7_dl_07002BE8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bowser_3/falling_platform_5/collision.inc.c",
    "content": "// 0x07004DA4 - 0x07004E28\nconst Collision bowser_3_seg7_collision_07004DA4[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(1498, 307, 2050),\n    COL_VERTEX(1946, 307, 2662),\n    COL_VERTEX(1946, -1340, 2662),\n    COL_VERTEX(1498, -1852, 2050),\n    COL_VERTEX(0, -2364, 1262),\n    COL_VERTEX(0, 307, 1262),\n    COL_VERTEX(0, 307, 3277),\n    COL_VERTEX(0, -1340, 3277),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(4, 5, 0),\n    COL_TRI(4, 0, 3),\n    COL_TRI(6, 1, 0),\n    COL_TRI(6, 0, 5),\n    COL_TRI(2, 1, 6),\n    COL_TRI(2, 6, 7),\n    COL_TRI(3, 2, 7),\n    COL_TRI(4, 3, 7),\n    COL_TRI(6, 5, 4),\n    COL_TRI(7, 6, 4),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bowser_3/falling_platform_5/geo.inc.c",
    "content": "// 0x0E0002F0\nconst GeoLayout bowser_3_geo_0002F0[] = {\n    GEO_CULLING_RADIUS(5000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bowser_3_seg7_dl_07002F88),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bowser_3/falling_platform_5/model.inc.c",
    "content": "// 0x07002CE0 - 0x07002CF8\nstatic const Lights1 bowser_3_seg7_lights_07002CE0 = gdSPDefLights1(\n    0x22, 0x22, 0x22,\n    0x89, 0x89, 0x8a, 0x28, 0x28, 0x28\n);\n\n// 0x07002CF8 - 0x07002D10\nstatic const Lights1 bowser_3_seg7_lights_07002CF8 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07002D10 - 0x07002D70\nstatic const Vtx bowser_3_seg7_vertex_07002D10[] = {\n    {{{     0,  -2364,   1262}, 0, {  1366,  -1156}, {0x08, 0x90, 0x39, 0xff}}},\n    {{{  1498,  -1852,   2050}, 0, {   580,  -2652}, {0x08, 0x90, 0x39, 0xff}}},\n    {{{     0,  -1340,   3277}, 0, {  -644,  -1156}, {0x08, 0x90, 0x39, 0xff}}},\n    {{{  1498,  -1852,   2050}, 0, {   580,  -2652}, {0x16, 0x99, 0x46, 0xff}}},\n    {{{  1946,  -1340,   2662}, 0, {     0,  -3098}, {0x16, 0x99, 0x46, 0xff}}},\n    {{{     0,  -1340,   3277}, 0, {  -644,  -1156}, {0x16, 0x99, 0x46, 0xff}}},\n};\n\n// 0x07002D70 - 0x07002DB0\nstatic const Vtx bowser_3_seg7_vertex_07002D70[] = {\n    {{{     0,    307,   3277}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1946,    307,   2662}, 0, {  2284,    582}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1498,    307,   2050}, 0, {  1986,    174}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    307,   1262}, 0, {   990,   -350}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07002DB0 - 0x07002EB0\nstatic const Vtx bowser_3_seg7_vertex_07002DB0[] = {\n    {{{     0,  -1340,   3277}, 0, {   958,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,    307,   3277}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,  -2364,   1262}, 0, { -1052,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1498,    307,   2050}, 0, {   234,      0}, {0x66, 0x00, 0xb5, 0xff}}},\n    {{{  1946,    307,   2662}, 0, {   990,      0}, {0x66, 0x00, 0xb5, 0xff}}},\n    {{{  1946,  -1340,   2662}, 0, {   990,   2012}, {0x66, 0x00, 0xb5, 0xff}}},\n    {{{  1498,  -1852,   2050}, 0, {   234,   2012}, {0x66, 0x00, 0xb5, 0xff}}},\n    {{{     0,  -2364,   1262}, 0, {   990,   2012}, {0x3b, 0x00, 0x90, 0xff}}},\n    {{{     0,    307,   1262}, 0, {   990,      0}, {0x3b, 0x00, 0x90, 0xff}}},\n    {{{  1498,    307,   2050}, 0, {  -698,      0}, {0x3b, 0x00, 0x90, 0xff}}},\n    {{{  1498,  -1852,   2050}, 0, {  -698,   2012}, {0x3b, 0x00, 0x90, 0xff}}},\n    {{{  1946,  -1340,   2662}, 0, {  5340,   1816}, {0x26, 0x00, 0x79, 0xff}}},\n    {{{     0,    307,   3277}, 0, {  3800,    172}, {0x26, 0x00, 0x79, 0xff}}},\n    {{{     0,  -1340,   3277}, 0, {  3800,   1816}, {0x26, 0x00, 0x79, 0xff}}},\n    {{{  1946,    307,   2662}, 0, {  5340,    172}, {0x26, 0x00, 0x79, 0xff}}},\n    {{{     0,    307,   1262}, 0, { -1020,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07002EB0 - 0x07002F20\nstatic const Gfx bowser_3_seg7_dl_07002EB0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_3_seg7_texture_07000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bowser_3_seg7_lights_07002CE0.l, 1),\n    gsSPLight(&bowser_3_seg7_lights_07002CE0.a, 2),\n    gsSPVertex(bowser_3_seg7_vertex_07002D10, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPLight(&bowser_3_seg7_lights_07002CF8.l, 1),\n    gsSPLight(&bowser_3_seg7_lights_07002CF8.a, 2),\n    gsSPVertex(bowser_3_seg7_vertex_07002D70, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07002F20 - 0x07002F88\nstatic const Gfx bowser_3_seg7_dl_07002F20[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_3_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_3_seg7_vertex_07002DB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  1, 15,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07002F88 - 0x07003018\nconst Gfx bowser_3_seg7_dl_07002F88[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_3_seg7_dl_07002EB0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_3_seg7_dl_07002F20),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bowser_3/falling_platform_6/collision.inc.c",
    "content": "// 0x07004E28 - 0x07004EAC\nconst Collision bowser_3_seg7_collision_07004E28[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(1183, -2364, 394),\n    COL_VERTEX(1183, 307, 394),\n    COL_VERTEX(3072, 307, 1024),\n    COL_VERTEX(3072, -1340, 1024),\n    COL_VERTEX(1498, 307, 2050),\n    COL_VERTEX(1946, 307, 2662),\n    COL_VERTEX(1498, -1852, 2050),\n    COL_VERTEX(1946, -1340, 2662),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(2, 1, 4),\n    COL_TRI(2, 4, 5),\n    COL_TRI(3, 2, 5),\n    COL_TRI(4, 1, 6),\n    COL_TRI(1, 0, 6),\n    COL_TRI(7, 5, 4),\n    COL_TRI(7, 4, 6),\n    COL_TRI(3, 5, 7),\n    COL_TRI(0, 3, 6),\n    COL_TRI(3, 7, 6),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bowser_3/falling_platform_6/geo.inc.c",
    "content": "// 0x0E000308\nconst GeoLayout bowser_3_geo_000308[] = {\n    GEO_CULLING_RADIUS(5000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bowser_3_seg7_dl_070032C0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bowser_3/falling_platform_6/model.inc.c",
    "content": "// 0x07003018 - 0x07003030\nstatic const Lights1 bowser_3_seg7_lights_07003018 = gdSPDefLights1(\n    0x22, 0x22, 0x22,\n    0x89, 0x89, 0x8a, 0x28, 0x28, 0x28\n);\n\n// 0x07003030 - 0x07003048\nstatic const Lights1 bowser_3_seg7_lights_07003030 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07003048 - 0x070030A8\nstatic const Vtx bowser_3_seg7_vertex_07003048[] = {\n    {{{  1183,  -2364,    394}, 0, {  2232,  -2336}, {0x34, 0x90, 0x18, 0xff}}},\n    {{{  3072,  -1340,   1024}, 0, {  1604,  -4222}, {0x34, 0x90, 0x18, 0xff}}},\n    {{{  1498,  -1852,   2050}, 0, {   580,  -2652}, {0x34, 0x90, 0x18, 0xff}}},\n    {{{  3072,  -1340,   1024}, 0, {  1604,  -4222}, {0x3c, 0x99, 0x29, 0xff}}},\n    {{{  1946,  -1340,   2662}, 0, {     0,  -3098}, {0x3c, 0x99, 0x29, 0xff}}},\n    {{{  1498,  -1852,   2050}, 0, {   580,  -2652}, {0x3c, 0x99, 0x29, 0xff}}},\n};\n\n// 0x070030A8 - 0x070030E8\nstatic const Vtx bowser_3_seg7_vertex_070030A8[] = {\n    {{{  3072,    307,   1024}, 0, {  3034,   -508}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1183,    307,    394}, 0, {  1776,   -928}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1498,    307,   2050}, 0, {  1986,    174}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1946,    307,   2662}, 0, {  2284,    582}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070030E8 - 0x070031E8\nstatic const Vtx bowser_3_seg7_vertex_070030E8[] = {\n    {{{  1183,  -2364,    394}, 0, {  -996,   2012}, {0x28, 0x00, 0x88, 0xff}}},\n    {{{  3072,    307,   1024}, 0, {   990,      0}, {0x28, 0x00, 0x88, 0xff}}},\n    {{{  3072,  -1340,   1024}, 0, {   990,   2012}, {0x28, 0x00, 0x88, 0xff}}},\n    {{{  3072,  -1340,   1024}, 0, {  6848,   1816}, {0x68, 0x00, 0x47, 0xff}}},\n    {{{  1946,    307,   2662}, 0, {  5340,    172}, {0x68, 0x00, 0x47, 0xff}}},\n    {{{  1946,  -1340,   2662}, 0, {  5340,   1816}, {0x68, 0x00, 0x47, 0xff}}},\n    {{{  3072,    307,   1024}, 0, {  6848,    172}, {0x68, 0x00, 0x47, 0xff}}},\n    {{{  1946,  -1340,   2662}, 0, {   990,   2012}, {0x9a, 0x00, 0x4b, 0xff}}},\n    {{{  1946,    307,   2662}, 0, {   990,      0}, {0x9a, 0x00, 0x4b, 0xff}}},\n    {{{  1498,    307,   2050}, 0, {   234,      0}, {0x9a, 0x00, 0x4b, 0xff}}},\n    {{{  1498,  -1852,   2050}, 0, {   234,   2012}, {0x9a, 0x00, 0x4b, 0xff}}},\n    {{{  1498,    307,   2050}, 0, {  -690,      0}, {0x84, 0x00, 0x17, 0xff}}},\n    {{{  1183,    307,    394}, 0, {   990,      0}, {0x84, 0x00, 0x17, 0xff}}},\n    {{{  1498,  -1852,   2050}, 0, {  -690,   2012}, {0x84, 0x00, 0x17, 0xff}}},\n    {{{  1183,  -2364,    394}, 0, {   990,   2012}, {0x84, 0x00, 0x17, 0xff}}},\n    {{{  1183,    307,    394}, 0, {  -996,      0}, {0x28, 0x00, 0x88, 0xff}}},\n};\n\n// 0x070031E8 - 0x07003258\nstatic const Gfx bowser_3_seg7_dl_070031E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_3_seg7_texture_07000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bowser_3_seg7_lights_07003018.l, 1),\n    gsSPLight(&bowser_3_seg7_lights_07003018.a, 2),\n    gsSPVertex(bowser_3_seg7_vertex_07003048, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPLight(&bowser_3_seg7_lights_07003030.l, 1),\n    gsSPLight(&bowser_3_seg7_lights_07003030.a, 2),\n    gsSPVertex(bowser_3_seg7_vertex_070030A8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07003258 - 0x070032C0\nstatic const Gfx bowser_3_seg7_dl_07003258[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_3_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_3_seg7_vertex_070030E8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070032C0 - 0x07003350\nconst Gfx bowser_3_seg7_dl_070032C0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_3_seg7_dl_070031E8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_3_seg7_dl_07003258),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bowser_3/falling_platform_7/collision.inc.c",
    "content": "// 0x07004EAC - 0x07004F30\nconst Collision bowser_3_seg7_collision_07004EAC[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(3072, 307, 1024),\n    COL_VERTEX(2365, 307, -787),\n    COL_VERTEX(1183, 307, 394),\n    COL_VERTEX(3072, 307, -1023),\n    COL_VERTEX(3072, -1340, -1023),\n    COL_VERTEX(2365, -1852, -787),\n    COL_VERTEX(1183, -2364, 394),\n    COL_VERTEX(3072, -1340, 1024),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI(1, 3, 4),\n    COL_TRI(1, 4, 5),\n    COL_TRI(6, 2, 1),\n    COL_TRI(6, 1, 5),\n    COL_TRI(4, 3, 0),\n    COL_TRI(7, 5, 4),\n    COL_TRI(4, 0, 7),\n    COL_TRI(7, 6, 5),\n    COL_TRI(7, 2, 6),\n    COL_TRI(7, 0, 2),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bowser_3/falling_platform_7/geo.inc.c",
    "content": "// 0x0E000320\nconst GeoLayout bowser_3_geo_000320[] = {\n    GEO_CULLING_RADIUS(5000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bowser_3_seg7_dl_070035F8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bowser_3/falling_platform_7/model.inc.c",
    "content": "// 0x07003350 - 0x07003368\nstatic const Lights1 bowser_3_seg7_lights_07003350 = gdSPDefLights1(\n    0x22, 0x22, 0x22,\n    0x89, 0x89, 0x8a, 0x28, 0x28, 0x28\n);\n\n// 0x07003368 - 0x07003380\nstatic const Lights1 bowser_3_seg7_lights_07003368 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07003380 - 0x070033E0\nstatic const Vtx bowser_3_seg7_vertex_07003380[] = {\n    {{{  3072,  -1340,   1024}, 0, {  1604,  -4222}, {0x39, 0x90, 0x09, 0xff}}},\n    {{{  1183,  -2364,    394}, 0, {  2232,  -2336}, {0x39, 0x90, 0x09, 0xff}}},\n    {{{  2365,  -1852,   -787}, 0, {  3412,  -3518}, {0x39, 0x90, 0x09, 0xff}}},\n    {{{  3072,  -1340,   1024}, 0, {  1604,  -4222}, {0x4a, 0x9a, 0x00, 0xff}}},\n    {{{  2365,  -1852,   -787}, 0, {  3412,  -3518}, {0x4a, 0x9a, 0x00, 0xff}}},\n    {{{  3072,  -1340,  -1023}, 0, {  3648,  -4222}, {0x4a, 0x9a, 0x00, 0xff}}},\n};\n\n// 0x070033E0 - 0x07003420\nstatic const Vtx bowser_3_seg7_vertex_070033E0[] = {\n    {{{  3072,    307,   1024}, 0, {  3034,   -508}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2365,    307,   -787}, 0, {  2564,  -1714}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1183,    307,    394}, 0, {  1776,   -928}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3072,    307,  -1023}, 0, {  3034,  -1872}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07003420 - 0x07003520\nstatic const Vtx bowser_3_seg7_vertex_07003420[] = {\n    {{{  3072,  -1340,   1024}, 0, {   990,   2012}, {0xd8, 0x00, 0x78, 0xff}}},\n    {{{  1183,    307,    394}, 0, {  -996,      0}, {0xd8, 0x00, 0x78, 0xff}}},\n    {{{  1183,  -2364,    394}, 0, {  -996,   2012}, {0xd8, 0x00, 0x78, 0xff}}},\n    {{{  2365,    307,   -787}, 0, {   246,      0}, {0xd8, 0x00, 0x88, 0xff}}},\n    {{{  3072,    307,  -1023}, 0, {   990,      0}, {0xd8, 0x00, 0x88, 0xff}}},\n    {{{  3072,  -1340,  -1023}, 0, {   990,   2012}, {0xd8, 0x00, 0x88, 0xff}}},\n    {{{  2365,  -1852,   -787}, 0, {   246,   2012}, {0xd8, 0x00, 0x88, 0xff}}},\n    {{{  1183,  -2364,    394}, 0, {  -678,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2365,    307,   -787}, 0, {   990,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2365,  -1852,   -787}, 0, {   990,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1183,    307,    394}, 0, {  -678,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  3072,  -1340,  -1023}, 0, {  8418,   1816}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3072,    307,   1024}, 0, {  6848,    172}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3072,  -1340,   1024}, 0, {  6848,   1816}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3072,    307,  -1023}, 0, {  8418,    172}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3072,    307,   1024}, 0, {   990,      0}, {0xd8, 0x00, 0x78, 0xff}}},\n};\n\n// 0x07003520 - 0x07003590\nstatic const Gfx bowser_3_seg7_dl_07003520[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_3_seg7_texture_07000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bowser_3_seg7_lights_07003350.l, 1),\n    gsSPLight(&bowser_3_seg7_lights_07003350.a, 2),\n    gsSPVertex(bowser_3_seg7_vertex_07003380, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPLight(&bowser_3_seg7_lights_07003368.l, 1),\n    gsSPLight(&bowser_3_seg7_lights_07003368.a, 2),\n    gsSPVertex(bowser_3_seg7_vertex_070033E0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07003590 - 0x070035F8\nstatic const Gfx bowser_3_seg7_dl_07003590[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_3_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_3_seg7_vertex_07003420, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070035F8 - 0x07003688\nconst Gfx bowser_3_seg7_dl_070035F8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_3_seg7_dl_07003520),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_3_seg7_dl_07003590),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bowser_3/falling_platform_8/collision.inc.c",
    "content": "// 0x07004F30 - 0x07004FB4\nconst Collision bowser_3_seg7_collision_07004F30[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(788, -2364, -1024),\n    COL_VERTEX(1946, 307, -2661),\n    COL_VERTEX(1946, -1340, -2661),\n    COL_VERTEX(2365, -1852, -787),\n    COL_VERTEX(3072, -1340, -1023),\n    COL_VERTEX(3072, 307, -1023),\n    COL_VERTEX(788, 307, -1024),\n    COL_VERTEX(2365, 307, -787),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(3, 0, 2),\n    COL_TRI(3, 2, 4),\n    COL_TRI(2, 1, 5),\n    COL_TRI(2, 5, 4),\n    COL_TRI(0, 6, 1),\n    COL_TRI(6, 5, 1),\n    COL_TRI(6, 7, 5),\n    COL_TRI(4, 5, 7),\n    COL_TRI(4, 7, 3),\n    COL_TRI(7, 6, 3),\n    COL_TRI(6, 0, 3),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bowser_3/falling_platform_8/geo.inc.c",
    "content": "// 0x0E000338\nconst GeoLayout bowser_3_geo_000338[] = {\n    GEO_CULLING_RADIUS(5000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bowser_3_seg7_dl_07003930),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bowser_3/falling_platform_8/model.inc.c",
    "content": "// 0x07003688 - 0x070036A0\nstatic const Lights1 bowser_3_seg7_lights_07003688 = gdSPDefLights1(\n    0x22, 0x22, 0x22,\n    0x89, 0x89, 0x8a, 0x28, 0x28, 0x28\n);\n\n// 0x070036A0 - 0x070036B8\nstatic const Lights1 bowser_3_seg7_lights_070036A0 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x070036B8 - 0x07003718\nstatic const Vtx bowser_3_seg7_vertex_070036B8[] = {\n    {{{  2365,  -1852,   -787}, 0, {  3412,  -3518}, {0x3c, 0x99, 0xd7, 0xff}}},\n    {{{  1946,  -1340,  -2661}, 0, {  5282,  -3098}, {0x3c, 0x99, 0xd7, 0xff}}},\n    {{{  3072,  -1340,  -1023}, 0, {  3648,  -4222}, {0x3c, 0x99, 0xd7, 0xff}}},\n    {{{  2365,  -1852,   -787}, 0, {  3412,  -3518}, {0x2a, 0x90, 0xd8, 0xff}}},\n    {{{   788,  -2364,  -1024}, 0, {  3648,  -1944}, {0x2a, 0x90, 0xd8, 0xff}}},\n    {{{  1946,  -1340,  -2661}, 0, {  5282,  -3098}, {0x2a, 0x90, 0xd8, 0xff}}},\n};\n\n// 0x07003718 - 0x07003758\nstatic const Vtx bowser_3_seg7_vertex_07003718[] = {\n    {{{   788,    307,  -1024}, 0, {  1514,  -1872}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3072,    307,  -1023}, 0, {  3034,  -1872}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1946,    307,  -2661}, 0, {  2284,  -2962}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2365,    307,   -787}, 0, {  2564,  -1714}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07003758 - 0x07003858\nstatic const Vtx bowser_3_seg7_vertex_07003758[] = {\n    {{{   788,  -2364,  -1024}, 0, { -1010,   2012}, {0x99, 0x00, 0xb7, 0xff}}},\n    {{{  1946,    307,  -2661}, 0, {   990,      0}, {0x99, 0x00, 0xb7, 0xff}}},\n    {{{  1946,  -1340,  -2661}, 0, {   990,   2012}, {0x99, 0x00, 0xb7, 0xff}}},\n    {{{  1946,  -1340,  -2661}, 0, {  9926,   1816}, {0x68, 0x00, 0xb9, 0xff}}},\n    {{{  1946,    307,  -2661}, 0, {  9926,    172}, {0x68, 0x00, 0xb9, 0xff}}},\n    {{{  3072,    307,  -1023}, 0, {  8418,    172}, {0x68, 0x00, 0xb9, 0xff}}},\n    {{{  3072,  -1340,  -1023}, 0, {  8418,   1816}, {0x68, 0x00, 0xb9, 0xff}}},\n    {{{  3072,  -1340,  -1023}, 0, {   990,   2012}, {0x28, 0x00, 0x78, 0xff}}},\n    {{{  2365,    307,   -787}, 0, {   246,      0}, {0x28, 0x00, 0x78, 0xff}}},\n    {{{  2365,  -1852,   -787}, 0, {   246,   2012}, {0x28, 0x00, 0x78, 0xff}}},\n    {{{  3072,    307,  -1023}, 0, {   990,      0}, {0x28, 0x00, 0x78, 0xff}}},\n    {{{  2365,    307,   -787}, 0, {   990,      0}, {0xee, 0x00, 0x7d, 0xff}}},\n    {{{   788,    307,  -1024}, 0, {  -600,      0}, {0xee, 0x00, 0x7d, 0xff}}},\n    {{{  2365,  -1852,   -787}, 0, {   990,   2012}, {0xee, 0x00, 0x7d, 0xff}}},\n    {{{   788,  -2364,  -1024}, 0, {  -600,   2012}, {0xee, 0x00, 0x7d, 0xff}}},\n    {{{   788,    307,  -1024}, 0, { -1010,      0}, {0x99, 0x00, 0xb7, 0xff}}},\n};\n\n// 0x07003858 - 0x070038C8\nstatic const Gfx bowser_3_seg7_dl_07003858[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_3_seg7_texture_07000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bowser_3_seg7_lights_07003688.l, 1),\n    gsSPLight(&bowser_3_seg7_lights_07003688.a, 2),\n    gsSPVertex(bowser_3_seg7_vertex_070036B8, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPLight(&bowser_3_seg7_lights_070036A0.l, 1),\n    gsSPLight(&bowser_3_seg7_lights_070036A0.a, 2),\n    gsSPVertex(bowser_3_seg7_vertex_07003718, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070038C8 - 0x07003930\nstatic const Gfx bowser_3_seg7_dl_070038C8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_3_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_3_seg7_vertex_07003758, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07003930 - 0x070039C0\nconst Gfx bowser_3_seg7_dl_07003930[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_3_seg7_dl_07003858),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_3_seg7_dl_070038C8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bowser_3/falling_platform_9/collision.inc.c",
    "content": "// 0x07004FB4 - 0x07005038\nconst Collision bowser_3_seg7_collision_07004FB4[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(0, -1340, -3276),\n    COL_VERTEX(0, 307, -3276),\n    COL_VERTEX(1946, 307, -2661),\n    COL_VERTEX(0, -1852, -2522),\n    COL_VERTEX(0, 307, -2522),\n    COL_VERTEX(788, 307, -1024),\n    COL_VERTEX(1946, -1340, -2661),\n    COL_VERTEX(788, -2364, -1024),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(1, 0, 3),\n    COL_TRI(4, 1, 3),\n    COL_TRI(1, 4, 5),\n    COL_TRI(1, 5, 2),\n    COL_TRI(0, 2, 6),\n    COL_TRI(3, 0, 6),\n    COL_TRI(7, 3, 6),\n    COL_TRI(5, 4, 3),\n    COL_TRI(7, 5, 3),\n    COL_TRI(6, 2, 5),\n    COL_TRI(6, 5, 7),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/bowser_3/falling_platform_9/geo.inc.c",
    "content": "// 0x0E000350\nconst GeoLayout bowser_3_geo_000350[] = {\n    GEO_CULLING_RADIUS(5000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, bowser_3_seg7_dl_07003C68),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/bowser_3/falling_platform_9/model.inc.c",
    "content": "// 0x070039C0 - 0x070039D8\nstatic const Lights1 bowser_3_seg7_lights_070039C0 = gdSPDefLights1(\n    0x22, 0x22, 0x22,\n    0x89, 0x89, 0x8a, 0x28, 0x28, 0x28\n);\n\n// 0x070039D8 - 0x070039F0\nstatic const Lights1 bowser_3_seg7_lights_070039D8 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x070039F0 - 0x07003A50\nstatic const Vtx bowser_3_seg7_vertex_070039F0[] = {\n    {{{   788,  -2364,  -1024}, 0, {  3648,  -1944}, {0x19, 0x90, 0xcc, 0xff}}},\n    {{{     0,  -1852,  -2522}, 0, {  5144,  -1156}, {0x19, 0x90, 0xcc, 0xff}}},\n    {{{  1946,  -1340,  -2661}, 0, {  5282,  -3098}, {0x19, 0x90, 0xcc, 0xff}}},\n    {{{     0,  -1852,  -2522}, 0, {  5144,  -1156}, {0x16, 0x99, 0xba, 0xff}}},\n    {{{     0,  -1340,  -3276}, 0, {  5896,  -1156}, {0x16, 0x99, 0xba, 0xff}}},\n    {{{  1946,  -1340,  -2661}, 0, {  5282,  -3098}, {0x16, 0x99, 0xba, 0xff}}},\n};\n\n// 0x07003A50 - 0x07003A90\nstatic const Vtx bowser_3_seg7_vertex_07003A50[] = {\n    {{{     0,    307,  -3276}, 0, {   990,  -3370}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    307,  -2522}, 0, {   990,  -2870}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   788,    307,  -1024}, 0, {  1514,  -1872}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1946,    307,  -2661}, 0, {  2284,  -2962}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07003A90 - 0x07003B90\nstatic const Vtx bowser_3_seg7_vertex_07003A90[] = {\n    {{{  1946,  -1340,  -2661}, 0, {   990,   2012}, {0x67, 0x00, 0x49, 0xff}}},\n    {{{   788,    307,  -1024}, 0, { -1010,      0}, {0x67, 0x00, 0x49, 0xff}}},\n    {{{   788,  -2364,  -1024}, 0, { -1010,   2012}, {0x67, 0x00, 0x49, 0xff}}},\n    {{{     0,    307,  -3276}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,  -1340,  -3276}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,  -1852,  -2522}, 0, {   238,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,    307,  -2522}, 0, {   238,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   788,    307,  -1024}, 0, {  -698,      0}, {0x90, 0x00, 0x3b, 0xff}}},\n    {{{     0,    307,  -2522}, 0, {   990,      0}, {0x90, 0x00, 0x3b, 0xff}}},\n    {{{     0,  -1852,  -2522}, 0, {   990,   2012}, {0x90, 0x00, 0x3b, 0xff}}},\n    {{{   788,  -2364,  -1024}, 0, {  -698,   2012}, {0x90, 0x00, 0x3b, 0xff}}},\n    {{{     0,  -1340,  -3276}, 0, { -1044,   2012}, {0x26, 0x00, 0x87, 0xff}}},\n    {{{  1946,    307,  -2661}, 0, {   990,      0}, {0x26, 0x00, 0x87, 0xff}}},\n    {{{  1946,  -1340,  -2661}, 0, {   990,   2012}, {0x26, 0x00, 0x87, 0xff}}},\n    {{{     0,    307,  -3276}, 0, { -1044,      0}, {0x26, 0x00, 0x87, 0xff}}},\n    {{{  1946,    307,  -2661}, 0, {   990,      0}, {0x67, 0x00, 0x49, 0xff}}},\n};\n\n// 0x07003B90 - 0x07003C00\nstatic const Gfx bowser_3_seg7_dl_07003B90[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_3_seg7_texture_07000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&bowser_3_seg7_lights_070039C0.l, 1),\n    gsSPLight(&bowser_3_seg7_lights_070039C0.a, 2),\n    gsSPVertex(bowser_3_seg7_vertex_070039F0, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPLight(&bowser_3_seg7_lights_070039D8.l, 1),\n    gsSPLight(&bowser_3_seg7_lights_070039D8.a, 2),\n    gsSPVertex(bowser_3_seg7_vertex_07003A50, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07003C00 - 0x07003C68\nstatic const Gfx bowser_3_seg7_dl_07003C00[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_3_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(bowser_3_seg7_vertex_07003A90, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07003C68 - 0x07003CF8\nconst Gfx bowser_3_seg7_dl_07003C68[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_3_seg7_dl_07003B90),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(bowser_3_seg7_dl_07003C00),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/bowser_3/geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"game/level_geo.h\"\n#include \"game/geo_misc.h\"\n#include \"game/camera.h\"\n#include \"game/moving_texture.h\"\n#include \"game/screen_transition.h\"\n#include \"game/paintings.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"levels/bowser_3/header.h\"\n\n#include \"levels/bowser_3/falling_platform_1/geo.inc.c\"\n#include \"levels/bowser_3/falling_platform_2/geo.inc.c\"\n#include \"levels/bowser_3/falling_platform_3/geo.inc.c\"\n#include \"levels/bowser_3/falling_platform_4/geo.inc.c\"\n#include \"levels/bowser_3/falling_platform_5/geo.inc.c\"\n#include \"levels/bowser_3/falling_platform_6/geo.inc.c\"\n#include \"levels/bowser_3/falling_platform_7/geo.inc.c\"\n#include \"levels/bowser_3/falling_platform_8/geo.inc.c\"\n#include \"levels/bowser_3/falling_platform_9/geo.inc.c\"\n#include \"levels/bowser_3/falling_platform_10/geo.inc.c\"\n#include \"levels/bowser_3/areas/1/bomb_stand/geo.inc.c\"\n#include \"levels/bowser_3/areas/1/geo.inc.c\"\n"
  },
  {
    "path": "levels/bowser_3/header.h",
    "content": "#ifndef BOWSER_3_HEADER_H\n#define BOWSER_3_HEADER_H\n\n#include \"types.h\"\n\n// geo\nextern const GeoLayout bowser_3_geo_000290[];\nextern const GeoLayout bowser_3_geo_0002A8[];\nextern const GeoLayout bowser_3_geo_0002C0[];\nextern const GeoLayout bowser_3_geo_0002D8[];\nextern const GeoLayout bowser_3_geo_0002F0[];\nextern const GeoLayout bowser_3_geo_000308[];\nextern const GeoLayout bowser_3_geo_000320[];\nextern const GeoLayout bowser_3_geo_000338[];\nextern const GeoLayout bowser_3_geo_000350[];\nextern const GeoLayout bowser_3_geo_000368[];\nextern const GeoLayout bowser_3_geo_000380[];\nextern const GeoLayout bowser_3_geo_000398[];\n\n// leveldata\nextern const Gfx bowser_3_seg7_dl_070022A8[];\nextern const Gfx bowser_3_seg7_dl_070025E0[];\nextern const Gfx bowser_3_seg7_dl_07002918[];\nextern const Gfx bowser_3_seg7_dl_07002C50[];\nextern const Gfx bowser_3_seg7_dl_07002F88[];\nextern const Gfx bowser_3_seg7_dl_070032C0[];\nextern const Gfx bowser_3_seg7_dl_070035F8[];\nextern const Gfx bowser_3_seg7_dl_07003930[];\nextern const Gfx bowser_3_seg7_dl_07003C68[];\nextern const Gfx bowser_3_seg7_dl_07003FA0[];\nextern const Gfx bowser_3_seg7_dl_070046B0[];\nextern const Gfx bowser_3_seg7_dl_07004958[];\nextern const Collision bowser_3_seg7_collision_level[];\nextern const Collision bowser_3_seg7_collision_07004B94[];\nextern const Collision bowser_3_seg7_collision_07004C18[];\nextern const Collision bowser_3_seg7_collision_07004C9C[];\nextern const Collision bowser_3_seg7_collision_07004D20[];\nextern const Collision bowser_3_seg7_collision_07004DA4[];\nextern const Collision bowser_3_seg7_collision_07004E28[];\nextern const Collision bowser_3_seg7_collision_07004EAC[];\nextern const Collision bowser_3_seg7_collision_07004F30[];\nextern const Collision bowser_3_seg7_collision_07004FB4[];\nextern const Collision bowser_3_seg7_collision_07005038[];\n\n// script\nextern const LevelScript level_bowser_3_entry[];\n\n#endif\n"
  },
  {
    "path": "levels/bowser_3/level.yaml",
    "content": "# Bowser in the Sky (Boss Area)\nshort-name: bowser_3\nfull-name: Bowser in the Sky (Boss Area)\ntexture-file: [\"/texture.inc.c\"]\narea-count: 1\nobjects: [falling_platform_1, falling_platform_2, falling_platform_3, falling_platform_4, falling_platform_5, falling_platform_6, falling_platform_7, falling_platform_8, falling_platform_9, falling_platform_10]\nshared-path: []\n# loaded files\nskybox-bin: bits\ntexture-bin: null\neffects: false\nactor-bins: [group12]\ncommon-bin: []\n"
  },
  {
    "path": "levels/bowser_3/leveldata.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"surface_terrains.h\"\n#include \"moving_texture_macros.h\"\n#include \"level_misc_macros.h\"\n#include \"macro_presets.h\"\n#include \"special_presets.h\"\n#include \"textures.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/bowser_3/texture.inc.c\"\n#include \"levels/bowser_3/falling_platform_1/model.inc.c\"\n#include \"levels/bowser_3/falling_platform_2/model.inc.c\"\n#include \"levels/bowser_3/falling_platform_3/model.inc.c\"\n#include \"levels/bowser_3/falling_platform_4/model.inc.c\"\n#include \"levels/bowser_3/falling_platform_5/model.inc.c\"\n#include \"levels/bowser_3/falling_platform_6/model.inc.c\"\n#include \"levels/bowser_3/falling_platform_7/model.inc.c\"\n#include \"levels/bowser_3/falling_platform_8/model.inc.c\"\n#include \"levels/bowser_3/falling_platform_9/model.inc.c\"\n#include \"levels/bowser_3/falling_platform_10/model.inc.c\"\n#include \"levels/bowser_3/areas/1/1/model.inc.c\"\n#include \"levels/bowser_3/areas/1/bomb_stand/model.inc.c\"\n#include \"levels/bowser_3/areas/1/collision.inc.c\"\n#include \"levels/bowser_3/falling_platform_1/collision.inc.c\"\n#include \"levels/bowser_3/falling_platform_2/collision.inc.c\"\n#include \"levels/bowser_3/falling_platform_3/collision.inc.c\"\n#include \"levels/bowser_3/falling_platform_4/collision.inc.c\"\n#include \"levels/bowser_3/falling_platform_5/collision.inc.c\"\n#include \"levels/bowser_3/falling_platform_6/collision.inc.c\"\n#include \"levels/bowser_3/falling_platform_7/collision.inc.c\"\n#include \"levels/bowser_3/falling_platform_8/collision.inc.c\"\n#include \"levels/bowser_3/falling_platform_9/collision.inc.c\"\n#include \"levels/bowser_3/falling_platform_10/collision.inc.c\"\n"
  },
  {
    "path": "levels/bowser_3/script.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"behavior_data.h\"\n#include \"model_ids.h\"\n#include \"seq_ids.h\"\n#include \"segment_symbols.h\"\n#include \"level_commands.h\"\n\n#include \"game/level_update.h\"\n\n#include \"levels/scripts.h\"\n\n#include \"actors/common1.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/bowser_3/header.h\"\n\nstatic const LevelScript script_func_local_1[] = {\n    OBJECT(/*model*/ MODEL_BOWSER_3_FALLING_PLATFORM_1,  /*pos*/     0,   0,     0, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(1), /*bhv*/ bhvFallingBowserPlatform),\n    OBJECT(/*model*/ MODEL_BOWSER_3_FALLING_PLATFORM_2,  /*pos*/     0,   0,     0, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(2), /*bhv*/ bhvFallingBowserPlatform),\n    OBJECT(/*model*/ MODEL_BOWSER_3_FALLING_PLATFORM_3,  /*pos*/     0,   0,     0, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(3), /*bhv*/ bhvFallingBowserPlatform),\n    OBJECT(/*model*/ MODEL_BOWSER_3_FALLING_PLATFORM_4,  /*pos*/     0,   0,     0, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(4), /*bhv*/ bhvFallingBowserPlatform),\n    OBJECT(/*model*/ MODEL_BOWSER_3_FALLING_PLATFORM_5,  /*pos*/     0,   0,     0, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(5), /*bhv*/ bhvFallingBowserPlatform),\n    OBJECT(/*model*/ MODEL_BOWSER_3_FALLING_PLATFORM_6,  /*pos*/     0,   0,     0, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(6), /*bhv*/ bhvFallingBowserPlatform),\n    OBJECT(/*model*/ MODEL_BOWSER_3_FALLING_PLATFORM_7,  /*pos*/     0,   0,     0, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(7), /*bhv*/ bhvFallingBowserPlatform),\n    OBJECT(/*model*/ MODEL_BOWSER_3_FALLING_PLATFORM_8,  /*pos*/     0,   0,     0, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(8), /*bhv*/ bhvFallingBowserPlatform),\n    OBJECT(/*model*/ MODEL_BOWSER_3_FALLING_PLATFORM_9,  /*pos*/     0,   0,     0, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(9), /*bhv*/ bhvFallingBowserPlatform),\n    OBJECT(/*model*/ MODEL_BOWSER_3_FALLING_PLATFORM_10, /*pos*/     0,   0,     0, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(10), /*bhv*/ bhvFallingBowserPlatform),\n    OBJECT(/*model*/ MODEL_BOWSER_BOMB,                  /*pos*/ -2122, 512, -2912, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvBowserBomb),\n    OBJECT(/*model*/ MODEL_BOWSER_BOMB,                  /*pos*/ -3362, 512,  1121, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvBowserBomb),\n    OBJECT(/*model*/ MODEL_BOWSER_BOMB,                  /*pos*/     0, 512,  3584, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvBowserBomb),\n    OBJECT(/*model*/ MODEL_BOWSER_BOMB,                  /*pos*/  3363, 512,  1121, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvBowserBomb),\n    OBJECT(/*model*/ MODEL_BOWSER_BOMB,                  /*pos*/  2123, 512, -2912, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvBowserBomb),\n    RETURN(),\n};\n\nconst LevelScript level_bowser_3_entry[] = {\n    INIT_LEVEL(),\n    LOAD_MIO0(/*seg*/ 0x07, _bowser_3_segment_7SegmentRomStart, _bowser_3_segment_7SegmentRomEnd),\n    LOAD_MIO0(/*seg*/ 0x06, _group12_mio0SegmentRomStart, _group12_mio0SegmentRomEnd),\n    LOAD_RAW (/*seg*/ 0x0D, _group12_geoSegmentRomStart,  _group12_geoSegmentRomEnd),\n    LOAD_MIO0(/*seg*/ 0x0A, _bits_skybox_mio0SegmentRomStart, _bits_skybox_mio0SegmentRomEnd),\n    ALLOC_LEVEL_POOL(),\n    MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),\n    JUMP_LINK(script_func_global_13),\n    LOAD_MODEL_FROM_GEO(MODEL_BOWSER_3_FALLING_PLATFORM_1,  bowser_3_geo_000290),\n    LOAD_MODEL_FROM_GEO(MODEL_BOWSER_3_FALLING_PLATFORM_2,  bowser_3_geo_0002A8),\n    LOAD_MODEL_FROM_GEO(MODEL_BOWSER_3_FALLING_PLATFORM_3,  bowser_3_geo_0002C0),\n    LOAD_MODEL_FROM_GEO(MODEL_BOWSER_3_FALLING_PLATFORM_4,  bowser_3_geo_0002D8),\n    LOAD_MODEL_FROM_GEO(MODEL_BOWSER_3_FALLING_PLATFORM_5,  bowser_3_geo_0002F0),\n    LOAD_MODEL_FROM_GEO(MODEL_BOWSER_3_FALLING_PLATFORM_6,  bowser_3_geo_000308),\n    LOAD_MODEL_FROM_GEO(MODEL_BOWSER_3_FALLING_PLATFORM_7,  bowser_3_geo_000320),\n    LOAD_MODEL_FROM_GEO(MODEL_BOWSER_3_FALLING_PLATFORM_8,  bowser_3_geo_000338),\n    LOAD_MODEL_FROM_GEO(MODEL_BOWSER_3_FALLING_PLATFORM_9,  bowser_3_geo_000350),\n    LOAD_MODEL_FROM_GEO(MODEL_BOWSER_3_FALLING_PLATFORM_10, bowser_3_geo_000368),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_03,            bowser_3_geo_000380),\n\n    AREA(/*index*/ 1, bowser_3_geo_000398),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, 1307, 0, /*angle*/ 0, 183, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvSpinAirborneCircleWarp),\n        WARP_NODE(/*id*/ WARP_NODE_0A,    /*destLevel*/ LEVEL_BOWSER_3, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        JUMP_LINK(script_func_local_1),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH, /*destLevel*/ LEVEL_BITS,     /*destArea*/ 1, /*destNode*/ WARP_NODE_0C, /*flags*/ WARP_NO_CHECKPOINT),\n        TERRAIN(/*terrainData*/ bowser_3_seg7_collision_level),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0002, /*seq*/ SEQ_LEVEL_BOSS_KOOPA_FINAL),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_STONE),\n    END_AREA(),\n\n    FREE_LEVEL_POOL(),\n    MARIO_POS(/*area*/ 1, /*yaw*/ 183, /*pos*/ 0, 307, 0),\n    CALL(/*arg*/ 0, /*func*/ lvl_init_or_update),\n    CALL_LOOP(/*arg*/ 1, /*func*/ lvl_init_or_update),\n    CLEAR_LEVEL(),\n    SLEEP_BEFORE_EXIT(/*frames*/ 1),\n    EXIT(),\n};\n"
  },
  {
    "path": "levels/bowser_3/texture.inc.c",
    "content": "// 0x07000000 - 0x07000800\nALIGNED8 static const Texture bowser_3_seg7_texture_07000000[] = {\n#include \"levels/bowser_3/0.rgba16.inc.c\"\n};\n\n// 0x07000800 - 0x07001000\nALIGNED8 static const Texture bowser_3_seg7_texture_07000800[] = {\n#include \"levels/bowser_3/1.rgba16.inc.c\"\n};\n\n// 0x07001000 - 0x07002000\nALIGNED8 static const Texture bowser_3_seg7_texture_07001000[] = {\n#include \"levels/bowser_3/2.rgba16.inc.c\"\n};\n"
  },
  {
    "path": "levels/castle_courtyard/areas/1/1/model.inc.c",
    "content": "// 0x07000000 - 0x070000F0\nstatic const Vtx castle_courtyard_seg7_vertex_07000000[] = {\n    {{{  2867,      0,    307}, 0, {     0,    479}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{  2939,     20,    717}, 0, {  2012,    -36}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{  2939,     20,    317}, 0, {    16,    -36}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{  2867,      0,    717}, 0, {  2012,    479}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{   984,     20,  -3707}, 0, {    72,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  1025,      0,  -3727}, 0, {     0,    479}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{   902,     20,  -3789}, 0, {   890,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  -653,     20,  -3707}, 0, {    72,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  -715,      0,  -3830}, 0, {   990,    479}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  -735,     20,  -3789}, 0, {   890,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  -612,      0,  -3727}, 0, {     0,    479}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  -919,      0,  -3420}, 0, {   990,    479}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  -899,     20,  -3461}, 0, {   888,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  -981,     20,  -3543}, 0, {    70,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -1022,      0,  -3522}, 0, {     0,    479}, {0xc4, 0xc4, 0xd0, 0xff}}},\n};\n\n// 0x070000F0 - 0x070001D0\nstatic const Vtx castle_courtyard_seg7_vertex_070000F0[] = {\n    {{{   718,      0,  -3420}, 0, {   990,    479}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{   738,     20,  -3461}, 0, {   888,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{   616,      0,  -3522}, 0, {     0,    479}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{   657,     20,  -3543}, 0, {    70,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{   922,      0,      0}, 0, {   990,    479}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{   983,     20,    123}, 0, {    70,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  1024,      0,    102}, 0, {     0,    479}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  1025,      0,  -3727}, 0, {     0,    479}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{   923,      0,  -3830}, 0, {   990,    479}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{   902,     20,  -3789}, 0, {   890,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  -613,      0,    307}, 0, {     0,    479}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  -613,      0,    102}, 0, {   990,    479}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  -654,     20,    123}, 0, {   890,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  -654,     20,    287}, 0, {    72,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n};\n\n// 0x070001D0 - 0x070002C0\nstatic const Vtx castle_courtyard_seg7_vertex_070001D0[] = {\n    {{{  -736,     20,     41}, 0, {   890,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  -654,     20,    123}, 0, {    72,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  -613,      0,    102}, 0, {     0,    479}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  -716,      0,      0}, 0, {   990,    479}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{   922,      0,      0}, 0, {   990,    479}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{   901,     20,     41}, 0, {   888,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{   983,     20,    123}, 0, {    70,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{   922,      0,      0}, 0, {     0,    479}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{   717,      0,      0}, 0, {   990,    479}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{   737,     20,     41}, 0, {   888,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{   901,     20,     41}, 0, {    72,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{   983,     20,    287}, 0, {    72,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  1024,      0,    307}, 0, {     0,    479}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  1024,      0,    102}, 0, {   990,    479}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{   983,     20,    123}, 0, {   890,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n};\n\n// 0x070002C0 - 0x070003B0\nstatic const Vtx castle_courtyard_seg7_vertex_070002C0[] = {\n    {{{   718,      0,  -3830}, 0, {   990,    479}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   738,     20,  -3789}, 0, {   888,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   923,      0,  -3830}, 0, {     0,    479}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -981,     20,  -3707}, 0, {    70,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -1022,      0,  -3522}, 0, {   990,    479}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -981,     20,  -3543}, 0, {   888,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -1022,      0,  -3727}, 0, {     0,    479}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -919,      0,  -3830}, 0, {   990,    479}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -899,     20,  -3789}, 0, {   888,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -735,     20,  -3789}, 0, {    70,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -715,      0,  -3830}, 0, {     0,    479}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   657,     20,  -3707}, 0, {    70,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   616,      0,  -3727}, 0, {     0,    479}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   657,     20,  -3543}, 0, {   888,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   616,      0,  -3522}, 0, {   990,    479}, {0xad, 0xad, 0xbc, 0xff}}},\n};\n\n// 0x070003B0 - 0x070004A0\nstatic const Vtx castle_courtyard_seg7_vertex_070003B0[] = {\n    {{{ -3583,     20,     71}, 0, {  2012,    -36}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -3184,     20,     71}, 0, {    22,    -36}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -3173,      0,      0}, 0, {     0,    479}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   738,     20,  -3789}, 0, {   888,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   902,     20,  -3789}, 0, {    70,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   923,      0,  -3830}, 0, {     0,    479}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -2938,     20,    317}, 0, {  1958,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -2938,     20,    717}, 0, {   -36,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -2866,      0,    717}, 0, {     0,    479}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -2866,      0,    307}, 0, {  2012,    479}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -3184,     20,     71}, 0, {  1908,    -25}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -2866,      0,    307}, 0, {   -46,    482}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -3173,      0,      0}, 0, {  2120,    482}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -2938,     20,    317}, 0, {   174,    -25}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -3583,      0,      0}, 0, {  2012,    479}, {0xad, 0xad, 0xbc, 0xff}}},\n};\n\n// 0x070004A0 - 0x07000590\nstatic const Vtx castle_courtyard_seg7_vertex_070004A0[] = {\n    {{{   614,      0,    102}, 0, {   990,    479}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   655,     20,    123}, 0, {   888,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   737,     20,     41}, 0, {    70,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -716,      0,    410}, 0, {     0,    479}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -613,      0,    307}, 0, {   990,    479}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -654,     20,    287}, 0, {   884,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -736,     20,    369}, 0, {    68,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -736,     20,     41}, 0, {    70,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -716,      0,      0}, 0, {     0,    479}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -921,      0,      0}, 0, {   990,    479}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -900,     20,     41}, 0, {   888,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -982,     20,    123}, 0, {   886,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -900,     20,     41}, 0, {    68,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -921,      0,      0}, 0, {     0,    479}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -1023,      0,    102}, 0, {   990,    479}, {0xad, 0xad, 0xbc, 0xff}}},\n};\n\n// 0x07000590 - 0x07000670\nstatic const Vtx castle_courtyard_seg7_vertex_07000590[] = {\n    {{{   901,     20,    369}, 0, {    72,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   922,      0,    410}, 0, {     0,    479}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  1024,      0,    307}, 0, {   990,    479}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   614,      0,    102}, 0, {   990,    479}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   737,     20,     41}, 0, {    70,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   717,      0,      0}, 0, {     0,    479}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   983,     20,    287}, 0, {   890,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  3584,      0,      0}, 0, {     0,    479}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  3185,     20,     71}, 0, {  1958,    -29}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  3584,     20,     71}, 0, {     0,    -29}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -899,     20,  -3789}, 0, {    74,      0}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{ -1022,      0,  -3727}, 0, {   990,    479}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -981,     20,  -3707}, 0, {   892,      0}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -919,      0,  -3830}, 0, {     0,    479}, {0x9c, 0x9c, 0xae, 0xff}}},\n};\n\n// 0x07000670 - 0x07000750\nstatic const Vtx castle_courtyard_seg7_vertex_07000670[] = {\n    {{{   738,     20,  -3789}, 0, {    70,      0}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{   718,      0,  -3830}, 0, {     0,    479}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{   657,     20,  -3707}, 0, {   888,      0}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{   616,      0,  -3727}, 0, {   990,    479}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  3174,      0,      0}, 0, {     0,    479}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  2939,     20,    317}, 0, {  1916,    -36}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  3185,     20,     71}, 0, {   182,    -36}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  2867,      0,    307}, 0, {  2136,    479}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -736,     20,    369}, 0, {   884,      0}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -900,     20,    369}, 0, {    68,      0}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -921,      0,    410}, 0, {     0,    479}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  3584,      0,      0}, 0, {     0,    479}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  3174,      0,      0}, 0, {  2012,    479}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  3185,     20,     71}, 0, {  1958,    -29}, {0x9c, 0x9c, 0xae, 0xff}}},\n};\n\n// 0x07000750 - 0x07000840\nstatic const Vtx castle_courtyard_seg7_vertex_07000750[] = {\n    {{{  -982,     20,    123}, 0, {    72,      0}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{ -1023,      0,    102}, 0, {     0,    479}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -982,     20,    287}, 0, {   888,      0}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{ -1023,      0,    307}, 0, {   990,    479}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -982,     20,    287}, 0, {    68,      0}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{ -1023,      0,    307}, 0, {     0,    479}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -900,     20,    369}, 0, {   884,      0}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -921,      0,    410}, 0, {   990,    479}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -716,      0,    410}, 0, {   990,    479}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -736,     20,    369}, 0, {   884,      0}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -921,      0,    410}, 0, {     0,    479}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{   655,     20,    123}, 0, {    68,      0}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{   614,      0,    102}, 0, {     0,    479}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{   614,      0,    307}, 0, {   990,    479}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{   655,     20,    287}, 0, {   886,      0}, {0x9c, 0x9c, 0xae, 0xff}}},\n};\n\n// 0x07000840 - 0x07000930\nstatic const Vtx castle_courtyard_seg7_vertex_07000840[] = {\n    {{{   655,     20,    287}, 0, {    72,      0}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{   614,      0,    307}, 0, {     0,    479}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{   717,      0,    410}, 0, {   990,    479}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{   737,     20,    369}, 0, {   890,      0}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{   922,      0,    410}, 0, {   990,    479}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{   737,     20,    369}, 0, {    68,      0}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{   717,      0,    410}, 0, {     0,    479}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{   901,     20,    369}, 0, {   886,      0}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  1025,      0,  -3522}, 0, {   990,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   984,     20,  -3543}, 0, {   888,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   923,      0,  -3420}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -653,     20,  -3543}, 0, {    72,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -612,      0,  -3727}, 0, {   990,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -653,     20,  -3707}, 0, {   890,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -612,      0,  -3522}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07000930 - 0x07000A10\nstatic const Vtx castle_courtyard_seg7_vertex_07000930[] = {\n    {{{  -612,      0,  -3522}, 0, {   990,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -735,     20,  -3461}, 0, {    74,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -715,      0,  -3420}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -653,     20,  -3543}, 0, {   892,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -919,      0,  -3420}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -715,      0,  -3420}, 0, {   990,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -735,     20,  -3461}, 0, {   886,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -899,     20,  -3461}, 0, {    68,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1025,      0,  -3522}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1025,      0,  -3727}, 0, {   990,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   984,     20,  -3707}, 0, {   886,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   984,     20,  -3543}, 0, {   888,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   902,     20,  -3461}, 0, {    70,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   923,      0,  -3420}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07000A10 - 0x07000A80\nstatic const Vtx castle_courtyard_seg7_vertex_07000A10[] = {\n    {{{   902,     20,  -3461}, 0, {   888,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   738,     20,  -3461}, 0, {    70,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   923,      0,  -3420}, 0, {   990,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   718,      0,  -3420}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   984,     20,  -3543}, 0, {    68,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1025,      0,  -3522}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   984,     20,  -3707}, 0, {   886,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07000A80 - 0x07000B80\nstatic const Vtx castle_courtyard_seg7_vertex_07000A80[] = {\n    {{{  -653,     20,  -3543}, 0, {  -166,    444}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{  -653,     20,  -3707}, 0, {  -166,   -100}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{  -735,     20,  -3789}, 0, {   104,   -372}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{  2939,     20,    717}, 0, {  1692,    990}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{  3185,     20,     71}, 0, {     0,    990}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{  2939,     20,    317}, 0, {   760,   1272}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{  3584,     20,    717}, 0, {  1120,   -212}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{  3584,     20,     71}, 0, {  -384,    246}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{  -981,     20,  -3543}, 0, {   922,    444}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{  -899,     20,  -3461}, 0, {   650,    718}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{  -899,     20,  -3789}, 0, {   650,   -372}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{  -981,     20,  -3707}, 0, {   922,   -100}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{  -735,     20,  -3461}, 0, {   104,    718}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{ -2938,     20,    317}, 0, {   760,   1272}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{ -3184,     20,     71}, 0, {     0,    990}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{ -2938,     20,    717}, 0, {  1692,    990}, {0xb5, 0xa0, 0x58, 0xff}}},\n};\n\n// 0x07000B80 - 0x07000C70\nstatic const Vtx castle_courtyard_seg7_vertex_07000B80[] = {\n    {{{   984,     20,  -3543}, 0, {  -166,    786}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{   902,     20,  -3789}, 0, {   104,      0}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{   738,     20,  -3789}, 0, {   650,      0}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{   657,     20,  -3707}, 0, {   922,    240}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{   657,     20,  -3543}, 0, {   922,    786}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{   984,     20,  -3707}, 0, {  -166,    240}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{   738,     20,  -3461}, 0, {   650,   1056}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{   902,     20,  -3461}, 0, {   104,   1056}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{ -3184,     20,     71}, 0, {     0,    990}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{ -3583,     20,     71}, 0, {  -384,    246}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{ -2938,     20,    717}, 0, {  1692,    990}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{ -3583,     20,    717}, 0, {  1120,   -212}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{   901,     20,    369}, 0, {   104,      0}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{   983,     20,    123}, 0, {  -166,    786}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{   901,     20,     41}, 0, {   104,   1056}, {0xb5, 0xa0, 0x58, 0xff}}},\n};\n\n// 0x07000C70 - 0x07000D70\nstatic const Vtx castle_courtyard_seg7_vertex_07000C70[] = {\n    {{{  -736,     20,    369}, 0, {   104,   -372}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{  -736,     20,     41}, 0, {   104,    718}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{  -900,     20,     41}, 0, {   650,    718}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{  -654,     20,    123}, 0, {  -166,    444}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{  -654,     20,    287}, 0, {  -166,   -100}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{  -982,     20,    123}, 0, {   922,    444}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{  -982,     20,    287}, 0, {   922,   -100}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{  -900,     20,    369}, 0, {   650,   -372}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{   901,     20,    369}, 0, {   104,      0}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{   737,     20,     41}, 0, {   650,   1056}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{   655,     20,    123}, 0, {   922,    786}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{   901,     20,     41}, 0, {   104,   1056}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{   655,     20,    287}, 0, {   922,    240}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{   737,     20,    369}, 0, {   650,      0}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{   983,     20,    287}, 0, {  -166,    240}, {0xb5, 0xa0, 0x58, 0xff}}},\n    {{{   983,     20,    123}, 0, {  -166,    786}, {0xb5, 0xa0, 0x58, 0xff}}},\n};\n\n// 0x07000D70 - 0x07000E70\nstatic const Vtx castle_courtyard_seg7_vertex_07000D70[] = {\n    {{{  -818,      0,  -1125}, 0, { 12232,    990}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{  -818,    102,  -2354}, 0, {     0,      0}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{  -818,      0,  -2354}, 0, {     0,    990}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{  -818,    102,  -1125}, 0, { 12232,      0}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{  -613,      0,   -921}, 0, {  2950,    990}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{  -613,    102,   -921}, 0, {  2950,      0}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{  -818,    102,  -1125}, 0, {    60,      0}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{  -818,      0,  -1125}, 0, {    60,    990}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{  -818,      0,  -2354}, 0, {  2982,    990}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{  -613,    102,  -2559}, 0, {    92,      0}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{  -613,      0,  -2559}, 0, {    92,    990}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{  -818,    102,  -2354}, 0, {  2982,      0}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{  -613,      0,  -2559}, 0, { 12232,    990}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{   614,    102,  -2559}, 0, {     0,      0}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{   614,      0,  -2559}, 0, {     0,    990}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  -613,    102,  -2559}, 0, { 12232,      0}, {0x6f, 0x6f, 0x89, 0xff}}},\n};\n\n// 0x07000E70 - 0x07000F70\nstatic const Vtx castle_courtyard_seg7_vertex_07000E70[] = {\n    {{{   614,      0,   -921}, 0, { 12232,    990}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{   614,    102,   -921}, 0, { 12232,      0}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{  -613,    102,   -921}, 0, {     0,      0}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{  -613,      0,   -921}, 0, {     0,    990}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{   819,      0,  -2354}, 0, { 12232,    990}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{   819,    102,  -1125}, 0, {     0,      0}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{   819,      0,  -1125}, 0, {     0,    990}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{   819,    102,  -2354}, 0, { 12232,      0}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{   614,      0,  -2559}, 0, {  2954,    990}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{   614,    102,  -2559}, 0, {  2954,      0}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{   819,    102,  -2354}, 0, {    62,      0}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{   819,      0,  -2354}, 0, {    62,    990}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{   819,      0,  -1125}, 0, {  2960,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   819,    102,  -1125}, 0, {  2960,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   614,    102,   -921}, 0, {    68,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   614,      0,   -921}, 0, {    68,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n};\n\n// 0x07000F70 - 0x07001060\nstatic const Vtx castle_courtyard_seg7_vertex_07000F70[] = {\n    {{{ -1740,   -101,  -1433}, 0, {  3034,    480}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -1740,      0,  -2047}, 0, {     0,      0}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -1740,   -101,  -2047}, 0, {     0,    480}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{  1331,   2150,    102}, 0, { -5650,      0}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{   922,   2048,    410}, 0, { -3606,    990}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{   922,   2150,    410}, 0, { -3606,      0}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{  1331,   2048,    102}, 0, { -5650,    990}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -2252,   2150,    102}, 0, { 12232,      0}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -2661,   2048,    512}, 0, { 14276,    990}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -2661,   2150,    512}, 0, { 14276,      0}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -2252,   2048,    102}, 0, { 12232,    990}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -1330,   -204,  -1023}, 0, {     0,    990}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -1330,    102,    205}, 0, {  4056,      0}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -1330,    102,  -1023}, 0, {     0,      0}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -1330,   -204,    205}, 0, {  4056,    990}, {0x60, 0x60, 0x75, 0xff}}},\n};\n\n// 0x07001060 - 0x07001150\nstatic const Vtx castle_courtyard_seg7_vertex_07001060[] = {\n    {{{ -1945,   -204,  -1330}, 0, {  4056,    480}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -1945,   -101,  -1330}, 0, {  4056,      0}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -1945,   -101,  -2149}, 0, {     0,      0}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -1740,   -101,  -1433}, 0, {  3034,    480}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -1740,      0,  -1433}, 0, {  3034,      0}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -1740,      0,  -2047}, 0, {     0,      0}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -1740,      0,  -2047}, 0, {  2868,      0}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -1329,      0,  -2458}, 0, {     0,      0}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -1330,   -101,  -2459}, 0, {     0,    478}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -1740,   -101,  -2047}, 0, {  2868,    480}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -1945,   -101,  -2149}, 0, {  4056,      0}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -1330,   -204,  -2764}, 0, {  -278,    478}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -1945,   -204,  -2149}, 0, {  4056,    478}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -1330,   -101,  -2764}, 0, {  -278,      0}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -1945,   -204,  -2149}, 0, {     0,    480}, {0x60, 0x60, 0x75, 0xff}}},\n};\n\n// 0x07001150 - 0x07001250\nstatic const Vtx castle_courtyard_seg7_vertex_07001150[] = {\n    {{{  3072,      0,   -613}, 0, {     0,      0}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{  3072,   -204,   -613}, 0, {     0,    990}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{  2253,   -204,    205}, 0, {  5750,    990}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{  1229,    102,  -1023}, 0, {     0,      0}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{  1229,      0,  -1023}, 0, {     0,    308}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{  1229,      0,    307}, 0, {  4396,    308}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{  1229,    102,    307}, 0, {  4396,      0}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -1330,    102,  -1023}, 0, {   308,      0}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -1228,    102,  -1023}, 0, {     0,      0}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -1228,      0,  -1023}, 0, {     0,    308}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -1330,      0,  -1023}, 0, {   308,    308}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{  1229,    102,  -1023}, 0, {   308,      0}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{  1331,      0,  -1023}, 0, {     0,    308}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{  1229,      0,  -1023}, 0, {   308,    308}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{  1331,    102,  -1023}, 0, {     0,      0}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{  2253,      0,    205}, 0, {  5750,      0}, {0x60, 0x60, 0x75, 0xff}}},\n};\n\n// 0x07001250 - 0x07001330\nstatic const Vtx castle_courtyard_seg7_vertex_07001250[] = {\n    {{{   111,    205,  -1791}, 0, {   994,     14}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -93,    205,  -1689}, 0, {   -28,     14}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   111,    205,  -1689}, 0, {   994,     14}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3071,      0,   -613}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3071,   -204,  -3173}, 0, { 12744,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3071,      0,  -3173}, 0, { 12744,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -93,    205,  -1791}, 0, {   -28,     14}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3071,   -204,   -613}, 0, {     0,    990}, {0x7d, 0x7d, 0x95, 0xff}}},\n    {{{ -3071,   -204,  -3173}, 0, { 12744,    990}, {0x7d, 0x7d, 0x95, 0xff}}},\n    {{{ -3071,      0,   -613}, 0, {     0,      0}, {0x7d, 0x7d, 0x95, 0xff}}},\n    {{{  1946,   -204,  -2149}, 0, {  4056,    478}, {0x7d, 0x7d, 0x95, 0xff}}},\n    {{{  1946,   -101,  -2149}, 0, {  4056,      0}, {0x7d, 0x7d, 0x95, 0xff}}},\n    {{{  1946,   -101,  -1330}, 0, {     0,      0}, {0x7d, 0x7d, 0x95, 0xff}}},\n    {{{  1946,   -204,  -1330}, 0, {     0,    478}, {0x7d, 0x7d, 0x95, 0xff}}},\n};\n\n// 0x07001330 - 0x07001420\nstatic const Vtx castle_courtyard_seg7_vertex_07001330[] = {\n    {{{ -1228,    102,    307}, 0, {     0,      0}, {0x7d, 0x7d, 0x95, 0xff}}},\n    {{{ -1228,      0,    307}, 0, {     0,    308}, {0x7d, 0x7d, 0x95, 0xff}}},\n    {{{ -1228,      0,  -1023}, 0, {  4396,    308}, {0x7d, 0x7d, 0x95, 0xff}}},\n    {{{ -1228,    102,  -1023}, 0, {  4396,      0}, {0x7d, 0x7d, 0x95, 0xff}}},\n    {{{  1741,   -101,  -2047}, 0, {  3034,    478}, {0x7d, 0x7d, 0x95, 0xff}}},\n    {{{  1741,      0,  -2047}, 0, {  3034,      0}, {0x7d, 0x7d, 0x95, 0xff}}},\n    {{{  1741,   -101,  -1433}, 0, {     0,    478}, {0x7d, 0x7d, 0x95, 0xff}}},\n    {{{  1741,      0,  -1433}, 0, {     0,      0}, {0x7d, 0x7d, 0x95, 0xff}}},\n    {{{ -1330,      0,  -2457}, 0, {  6866,      0}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{ -1330,      0,  -3839}, 0, {     0,      0}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{ -1330,   -204,  -3839}, 0, {     0,    990}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  2253,   2150,    102}, 0, {-10250,      0}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  2253,   2048,    102}, 0, {-10250,    990}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  1331,   2048,    102}, 0, { -5650,    990}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  1331,   2150,    102}, 0, { -5650,      0}, {0x6f, 0x6f, 0x89, 0xff}}},\n};\n\n// 0x07001420 - 0x07001500\nstatic const Vtx castle_courtyard_seg7_vertex_07001420[] = {\n    {{{   922,   2150,    410}, 0, { -3606,      0}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{   922,   2048,    410}, 0, { -3606,    990}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  -921,   2048,    410}, 0, {  5588,    990}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  -921,   2150,    410}, 0, {  5588,      0}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{ -1330,   2150,    102}, 0, {  7632,      0}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{ -1330,   2048,    102}, 0, {  7632,    990}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{ -2252,   2048,    102}, 0, { 12232,    990}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{ -2252,   2150,    102}, 0, { 12232,      0}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  1946,   -204,  -2149}, 0, {     0,    480}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  1331,   -101,  -2764}, 0, {  4304,      0}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  1946,   -101,  -2149}, 0, {     0,      0}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{ -1330,      0,  -2457}, 0, {  6866,      0}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{ -1330,   -204,  -3839}, 0, {     0,    990}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{ -1330,   -204,  -2457}, 0, {  6866,    990}, {0x6f, 0x6f, 0x89, 0xff}}},\n};\n\n// 0x07001500 - 0x070015E0\nstatic const Vtx castle_courtyard_seg7_vertex_07001500[] = {\n    {{{ -2252,   -204,    205}, 0, {     0,    990}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{ -3071,   -204,   -613}, 0, {  5750,    990}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{ -3071,      0,   -613}, 0, {  5750,      0}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{ -2252,      0,    205}, 0, {     0,      0}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  1331,    102,  -1023}, 0, {  4056,      0}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  1331,    102,    205}, 0, {     0,      0}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  1331,   -204,    205}, 0, {     0,    990}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  1331,   -204,  -1023}, 0, {  4056,    990}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  1946,   -204,  -2149}, 0, {     0,    480}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  1331,   -204,  -2764}, 0, {  4304,    480}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  1331,   -101,  -2764}, 0, {  4304,      0}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  1741,      0,  -1433}, 0, {  2858,      0}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  1331,      0,  -1023}, 0, {     0,      0}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  1741,   -101,  -1433}, 0, {  2858,    478}, {0x6f, 0x6f, 0x89, 0xff}}},\n};\n\n// 0x070015E0 - 0x070016D0\nstatic const Vtx castle_courtyard_seg7_vertex_070015E0[] = {\n    {{{  1946,   -101,  -1330}, 0, {  4304,      0}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  1331,   -101,   -716}, 0, {     0,      0}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  1331,   -204,   -716}, 0, {     0,    480}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  1946,   -204,  -1330}, 0, {  4304,    478}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{ -1740,   -101,  -1433}, 0, {     0,    480}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{ -1330,      0,  -1023}, 0, {  2858,      0}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{ -1740,      0,  -1433}, 0, {     0,      0}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{ -1330,   -101,  -1023}, 0, {  2858,    480}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{ -1945,   -204,  -1330}, 0, {     0,    480}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{ -1330,   -204,   -716}, 0, {  4304,    480}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{ -1945,   -101,  -1330}, 0, {     0,      0}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{ -1330,   -101,   -716}, 0, {  4304,      0}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  -195,    -50,  -1586}, 0, {  3034,    990}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{   -93,    205,  -1689}, 0, {  2012,     72}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{   -93,    205,  -1791}, 0, {   990,     72}, {0x6f, 0x6f, 0x89, 0xff}}},\n};\n\n// 0x070016D0 - 0x070017B0\nstatic const Vtx castle_courtyard_seg7_vertex_070016D0[] = {\n    {{{  1331,      0,  -1023}, 0, {     0,      0}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  1331,   -101,  -1023}, 0, {     0,    480}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  1741,   -101,  -1433}, 0, {  2858,    478}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  1331,   -101,  -2459}, 0, {  2868,    480}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  1741,      0,  -2047}, 0, {     0,      0}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  1741,   -101,  -2047}, 0, {     0,    478}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  1330,      0,  -2458}, 0, {  2868,      0}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  3072,      0,   -613}, 0, { 12742,      0}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  3072,      0,  -3173}, 0, {     0,      0}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  3072,   -204,   -613}, 0, { 12742,    990}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  3072,   -204,  -3173}, 0, {     0,    990}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  -195,    -50,  -1586}, 0, {  3034,    990}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{   -93,    205,  -1791}, 0, {   990,     72}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  -195,    -50,  -1893}, 0, {     0,    990}, {0x6f, 0x6f, 0x89, 0xff}}},\n};\n\n// 0x070017B0 - 0x070018B0\nstatic const Vtx castle_courtyard_seg7_vertex_070017B0[] = {\n    {{{ -2661,   2150,    512}, 0, {     0,      0}, {0x58, 0x58, 0x62, 0xff}}},\n    {{{ -2661,   2048,    512}, 0, {     0,    990}, {0x58, 0x58, 0x62, 0xff}}},\n    {{{ -2661,   2048,   2048}, 0, {  2524,    990}, {0x58, 0x58, 0x62, 0xff}}},\n    {{{ -2661,   2150,   2048}, 0, {  2524,      0}, {0x58, 0x58, 0x62, 0xff}}},\n    {{{   214,    -50,  -1893}, 0, {  2012,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   111,    205,  -1791}, 0, {  1330,     72}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   111,    205,  -1689}, 0, {   650,     72}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   214,    -50,  -1586}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3071,      0,  -3173}, 0, {     0,      0}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{ -2661,   -204,  -3583}, 0, {  2858,    990}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{ -2661,      0,  -3583}, 0, {  2858,      0}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{ -3071,   -204,  -3173}, 0, {     0,    990}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{  1331,   -204,  -2457}, 0, {     0,    990}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  1331,   -204,  -3839}, 0, {  6866,    990}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  1331,      0,  -2457}, 0, {     0,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  1331,      0,  -3839}, 0, {  6866,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n};\n\n// 0x070018B0 - 0x070019B0\nstatic const Vtx castle_courtyard_seg7_vertex_070018B0[] = {\n    {{{   214,    -50,  -1586}, 0, {  2830,    984}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{   111,    205,  -1689}, 0, {  2148,     66}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{   -93,    205,  -1689}, 0, {   786,     66}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  -195,    -50,  -1586}, 0, {   104,    984}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  2662,   2150,    512}, 0, {-12294,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  2253,   2048,    102}, 0, {-10250,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  2253,   2150,    102}, 0, {-10250,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  2662,   2048,    512}, 0, {-12294,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -921,   2150,    410}, 0, {  5588,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -921,   2048,    410}, 0, {  5588,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -1330,   2048,    102}, 0, {  7632,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -1330,   2150,    102}, 0, {  7632,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  2662,   -204,  -3583}, 0, { -1898,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  3072,   -204,  -3173}, 0, {   990,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  3072,      0,  -3173}, 0, {   990,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  2662,      0,  -3583}, 0, { -1898,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n};\n\n// 0x070019B0 - 0x07001AB0\nstatic const Vtx castle_courtyard_seg7_vertex_070019B0[] = {\n    {{{  1229,    102,    307}, 0, {  6610,      0}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  1331,    102,  -1023}, 0, {     0,      0}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  1229,    102,  -1023}, 0, {     0,      0}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  1331,    102,    307}, 0, {  6610,      0}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{ -1228,    102,  -1023}, 0, {     0,   -542}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{ -1330,    102,  -1023}, 0, {     0,   -542}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{ -1330,    102,    307}, 0, {  6610,   -544}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{ -1228,    102,    307}, 0, {  6610,   -544}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -195,    -50,  -1893}, 0, {  2694,    990}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{   -93,    205,  -1791}, 0, {  2012,     72}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{   111,    205,  -1791}, 0, {   650,     72}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{   214,    -50,  -1893}, 0, {     0,    990}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  2662,   2150,   2048}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2662,   2048,    512}, 0, {  2524,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2662,   2150,    512}, 0, {  2524,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2662,   2048,   2048}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07001AB0 - 0x07001BA0\nstatic const Vtx castle_courtyard_seg7_vertex_07001AB0[] = {\n    {{{  2541,   -204,  -3583}, 0, {  6716,  -1890}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1331,   -204,  -3583}, 0, {  5962,  -5234}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1331,   -204,  -2457}, 0, {  3116,  -4148}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2657,   -204,  -1872}, 0, {  2466,     78}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1330,   -204,  -3583}, 0, {   254,   5444}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{ -3071,   -204,  -3583}, 0, {  4440,   2934}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{ -1330,   -204,    205}, 0, { -5330,  -2238}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{ -3071,   -204,    205}, 0, { -1144,  -4748}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  1331,   -204,  -2457}, 0, {  3116,  -4148}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  1331,   -204,    205}, 0, { -3608,  -1582}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  3072,   -204,  -1689}, 0, {  2262,   1400}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  3072,   -204,    205}, 0, { -2524,   3228}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  3072,   -204,  -3583}, 0, {  7048,   -424}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  2657,   -204,  -1872}, 0, {  2466,     78}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  2541,   -204,  -3583}, 0, {  6716,  -1890}, {0x6f, 0x6f, 0x89, 0xff}}},\n};\n\n// 0x07001BA0 - 0x07001CA0\nstatic const Vtx castle_courtyard_seg7_vertex_07001BA0[] = {\n    {{{ -3071,      0,   -613}, 0, { -1562, -13828}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3071,      0,  -3173}, 0, { -1562,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3583,      0,  -3583}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3583,      0,      0}, 0, {   990, -16894}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3584,      0,  -3583}, 0, { -2074,  -1564}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{  2662,      0,  -3583}, 0, { -2074,   3032}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{  3072,      0,  -3173}, 0, {     0,    990}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{  3584,      0,      0}, 0, { 15808,  -1566}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{  1331,   -101,   -716}, 0, {   990,  -9230}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{  1946,   -101,  -1330}, 0, { -2074,  -6164}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{  1946,   -101,  -2149}, 0, { -2074,  -2076}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{  1331,   -101,  -2459}, 0, {   990,   -532}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{ -1330,   -101,  -2764}, 0, {     0,    990}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{ -1945,   -101,  -2149}, 0, {  3034,  -2076}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{ -1945,   -101,  -1330}, 0, {  3034,  -6164}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{ -1330,   -101,   -716}, 0, {     0,  -9230}, {0x95, 0x95, 0xa9, 0xff}}},\n};\n\n// 0x07001CA0 - 0x07001D90\nstatic const Vtx castle_courtyard_seg7_vertex_07001CA0[] = {\n    {{{  2355,      0,    717}, 0, { 19386,   4564}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{  2867,      0,    307}, 0, { 17342,   2010}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{  2253,      0,    205}, 0, { 16830,   5076}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{  2867,      0,    717}, 0, { 19386,   2010}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{  3174,      0,      0}, 0, { 15808,    478}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{  3072,      0,   -613}, 0, { 12742,    990}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{  3584,      0,      0}, 0, { 15808,  -1566}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{  3072,      0,  -3173}, 0, {     0,    990}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{ -2252,      0,    205}, 0, { -5650, -17916}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{ -3071,      0,   -613}, 0, { -1562, -13828}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{ -3173,      0,      0}, 0, { -1052, -16894}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{ -2866,      0,    307}, 0, { -2584, -18428}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{ -2866,      0,    717}, 0, { -2584, -20472}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{ -2354,      0,    717}, 0, { -5140, -20472}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{ -3583,      0,      0}, 0, {   990, -16894}, {0x95, 0x95, 0xa9, 0xff}}},\n};\n\n// 0x07001D90 - 0x07001E90\nstatic const Vtx castle_courtyard_seg7_vertex_07001D90[] = {\n    {{{  1229,      0,   -921}, 0, {   480, -13574}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   666,      0,  -2707}, 0, {  3290,  -4658}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   666,      0,  -1074}, 0, {  3290, -12806}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  1331,      0,  -2457}, 0, {     0,  -5908}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  1741,      0,  -2047}, 0, { -2074,  -7952}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  1229,      0,    512}, 0, {   480, -20728}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  1741,      0,  -1433}, 0, { -2074, -11018}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -811,      0,  -2346}, 0, { 10664,  -6458}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -802,      0,  -2663}, 0, { 10616,  -4880}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   666,      0,  -2434}, 0, {  3290,  -6022}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -1330,      0,  -3839}, 0, { 13254,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -1330,      0,  -2457}, 0, { 13254,  -5908}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -1228,      0,   -921}, 0, { 12742, -13574}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -1740,      0,  -2047}, 0, { 15298,  -7952}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -665,      0,  -1074}, 0, {  9932, -12806}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -1740,      0,  -1433}, 0, { 15298, -11018}, {0xad, 0xad, 0xbc, 0xff}}},\n};\n\n// 0x07001E90 - 0x07001F90\nstatic const Vtx castle_courtyard_seg7_vertex_07001E90[] = {\n    {{{ -3071,      0,  -3173}, 0, { -1562,  -1054}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -2661,      0,  -3583}, 0, { -3606,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -3583,      0,  -3583}, 0, {   990,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -665,      0,  -1074}, 0, {  9932, -12806}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -1228,      0,   -921}, 0, { 12742, -13574}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -1228,      0,    512}, 0, { 12742, -20728}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   666,      0,  -1074}, 0, {  3290, -12806}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  1229,      0,    512}, 0, {   480, -20728}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   666,      0,  -2707}, 0, {  3290,  -4658}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1331,      0,  -2457}, 0, {     0,  -5908}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1331,      0,  -3839}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -802,      0,  -2663}, 0, { 10616,  -4880}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1330,      0,  -3839}, 0, { 13254,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1946,   -101,  -2149}, 0, { -2074,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1331,   -101,  -2764}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1331,   -101,  -2459}, 0, {   990,   -532}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07001F90 - 0x07002090\nstatic const Vtx castle_courtyard_seg7_vertex_07001F90[] = {\n    {{{  -264,      0,  -2354}, 0, { -2250, -10252}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   162,    -50,  -2149}, 0, {  2012,  -8208}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   265,      0,  -2354}, 0, {  3034, -10252}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   614,      0,  -2005}, 0, {  6524,  -6762}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -349,    -50,  -1330}, 0, { -3096,      0}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{   367,    -50,  -1330}, 0, {  4056,      0}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{   367,    -50,  -2149}, 0, {  4056,  -8208}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{  -349,    -50,  -2149}, 0, { -3096,  -8208}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{   162,    -50,  -1330}, 0, {  2012,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -144,    -50,  -1330}, 0, { -1052,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -264,      0,  -1125}, 0, { -2250,   2010}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   265,      0,  -1125}, 0, {  3034,   2010}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   367,    -50,  -1535}, 0, {  4056,  -2076}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -349,    -50,  -1535}, 0, { -3096,  -2076}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -613,      0,  -1475}, 0, { -5738,  -1478}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   614,      0,  -1475}, 0, {  6524,  -1478}, {0xad, 0xad, 0xbc, 0xff}}},\n};\n\n// 0x07002090 - 0x07002140\nstatic const Vtx castle_courtyard_seg7_vertex_07002090[] = {\n    {{{   367,    -50,  -1535}, 0, {  4056,  -2076}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   614,      0,  -1475}, 0, {  6524,  -1478}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   367,    -50,  -1945}, 0, {  4056,  -6164}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   614,      0,  -2005}, 0, {  6524,  -6762}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -349,    -50,  -1535}, 0, { -3096,  -2076}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -613,      0,  -2005}, 0, { -5738,  -6762}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -613,      0,  -1475}, 0, { -5738,  -1478}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -349,    -50,  -1945}, 0, { -3096,  -6164}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -144,    -50,  -2149}, 0, { -1052,  -8208}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -264,      0,  -2354}, 0, { -2250, -10252}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   162,    -50,  -2149}, 0, {  2012,  -8208}, {0xad, 0xad, 0xbc, 0xff}}},\n};\n\n// 0x07002140 - 0x07002180\nstatic const Vtx castle_courtyard_seg7_vertex_07002140[] = {\n    {{{    80,    190,  -1677}, 0, {   990,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{   -62,    190,  -1677}, 0, {     0,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{   -62,     92,  -1638}, 0, {     0,    990}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{    80,     92,  -1638}, 0, {   990,    990}, {0xc4, 0xc4, 0xd0, 0xff}}},\n};\n\n// 0x07002180 - 0x070021C0\nstatic const Vtx castle_courtyard_seg7_vertex_07002180[] = {\n    {{{   307,      0,    512}, 0, {     0,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -306,      0,   1126}, 0, {   990,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   307,      0,   1126}, 0, {     0,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -306,      0,    512}, 0, {   990,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n};\n\n// 0x070021C0 - 0x070022A0\nstatic const Vtx castle_courtyard_seg7_vertex_070021C0[] = {\n    {{{ -4095,    728,  -3378}, 0, {   192,   2084}, {0x30, 0xdb, 0x02, 0xff}}},\n    {{{ -4486,   1000,  -2810}, 0, {   364,   1576}, {0x30, 0xdb, 0x02, 0xff}}},\n    {{{ -3583,    512,  -3071}, 0, {    36,   1792}, {0x30, 0xdb, 0x02, 0xff}}},\n    {{{ -3583,    614,  -2047}, 0, {    96,    868}, {0x30, 0xdb, 0x02, 0xff}}},\n    {{{ -4914,    898,  -2047}, 0, {   482,   1040}, {0x30, 0xdb, 0x02, 0xff}}},\n    {{{ -4709,   1382,  -1228}, 0, {   556,    120}, {0x30, 0xdb, 0x02, 0xff}}},\n    {{{ -3583,    614,  -1228}, 0, {   130,    160}, {0x30, 0xdb, 0x02, 0xff}}},\n    {{{ -3583,    512,   -511}, 0, {   138,   -424}, {0x30, 0xdb, 0x02, 0xff}}},\n    {{{ -4699,   1280,   -501}, 0, {   564,   -480}, {0x30, 0xdb, 0x02, 0xff}}},\n    {{{ -4455,   1638,    434}, 0, {   610,  -1464}, {0x30, 0xdb, 0x02, 0xff}}},\n    {{{ -3583,    614,    307}, 0, {   192,  -1172}, {0x30, 0xdb, 0x02, 0xff}}},\n    {{{ -4147,   1690,    755}, 0, {   556,  -1820}, {0x30, 0xdb, 0x02, 0xff}}},\n    {{{ -3839,   1638,   1075}, 0, {   482,  -2144}, {0x30, 0xdb, 0x02, 0xff}}},\n    {{{ -3071,    614,    717}, 0, {    80,  -1628}, {0x30, 0xdb, 0x02, 0xff}}},\n};\n\n// 0x070022A0 - 0x07002380\nstatic const Vtx castle_courtyard_seg7_vertex_070022A0[] = {\n    {{{  4545,    666,  -1135}, 0, {   614,   2096}, {0x30, 0xdb, 0x02, 0xff}}},\n    {{{  3584,    614,  -1228}, 0, {    62,   1720}, {0x30, 0xdb, 0x02, 0xff}}},\n    {{{  3584,    512,   -511}, 0, {   124,   1020}, {0x30, 0xdb, 0x02, 0xff}}},\n    {{{ -3839,   1638,   1075}, 0, {   482,  -2144}, {0x30, 0xdb, 0x02, 0xff}}},\n    {{{ -3071,   1126,   1434}, 0, {   208,  -2428}, {0x30, 0xdb, 0x02, 0xff}}},\n    {{{ -3071,    614,    717}, 0, {    80,  -1628}, {0x30, 0xdb, 0x02, 0xff}}},\n    {{{ -2559,    512,    717}, 0, {   -64,  -1696}, {0x30, 0xdb, 0x02, 0xff}}},\n    {{{ -2559,   1024,   1434}, 0, {    62,  -2496}, {0x30, 0xdb, 0x02, 0xff}}},\n    {{{  3584,    614,    307}, 0, {   284,    240}, {0x30, 0xdb, 0x02, 0xff}}},\n    {{{  4198,   1126,    307}, 0, {   820,    584}, {0x30, 0xdb, 0x02, 0xff}}},\n    {{{  3651,   1000,    987}, 0, {   574,   -348}, {0x30, 0xdb, 0x02, 0xff}}},\n    {{{  3072,    614,    717}, 0, {    68,   -404}, {0x30, 0xdb, 0x02, 0xff}}},\n    {{{  4318,   1024,   -460}, 0, {   732,   1376}, {0x30, 0xdb, 0x02, 0xff}}},\n    {{{  3584,    614,  -2047}, 0, {   -54,   2508}, {0x30, 0xdb, 0x02, 0xff}}},\n};\n\n// 0x07002380 - 0x07002470\nstatic const Vtx castle_courtyard_seg7_vertex_07002380[] = {\n    {{{   106,    203,  -1735}, 0, {   354,   1840}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{     9,    240,  -1735}, 0, {   290,   1288}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{     9,    311,  -1781}, 0, {   476,   1076}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{   -88,    203,  -1735}, 0, {    32,    956}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{    83,    285,  -1735}, 0, {   532,   1492}, {0x7d, 0x7d, 0x95, 0xff}}},\n    {{{   106,    203,  -1735}, 0, {   354,   1840}, {0x7d, 0x7d, 0x95, 0xff}}},\n    {{{     9,    311,  -1781}, 0, {   476,   1076}, {0x7d, 0x7d, 0x95, 0xff}}},\n    {{{   -88,    203,  -1735}, 0, {    32,    956}, {0x7d, 0x7d, 0x95, 0xff}}},\n    {{{   -65,    285,  -1735}, 0, {   284,    816}, {0x7d, 0x7d, 0x95, 0xff}}},\n    {{{     9,    311,  -1781}, 0, {   476,   1076}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{   -65,    285,  -1735}, 0, {   284,    816}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  -122,    350,  -1735}, 0, {   360,    360}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{     9,    311,  -1689}, 0, {   476,   1076}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{     9,    240,  -1735}, 0, {   290,   1288}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{   106,    203,  -1735}, 0, {   354,   1840}, {0x6f, 0x6f, 0x89, 0xff}}},\n};\n\n// 0x07002470 - 0x07002550\nstatic const Vtx castle_courtyard_seg7_vertex_07002470[] = {\n    {{{     9,    311,  -1689}, 0, {   476,   1076}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{    83,    285,  -1735}, 0, {   532,   1492}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{   140,    350,  -1735}, 0, {   798,   1560}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{     9,    311,  -1781}, 0, {   476,   1076}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{     9,    433,  -1735}, 0, {   798,    712}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{   -39,    358,  -1735}, 0, {   518,    712}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{     9,    311,  -1689}, 0, {   476,   1076}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{   -88,    203,  -1735}, 0, {    32,    956}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{     9,    240,  -1735}, 0, {   290,   1288}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{     9,    311,  -1689}, 0, {   476,   1076}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{   140,    350,  -1735}, 0, {   798,   1560}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{    58,    358,  -1735}, 0, {   682,   1160}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{     9,    433,  -1735}, 0, {   798,    712}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{     9,    311,  -1781}, 0, {   476,   1076}, {0xc4, 0xc4, 0xd0, 0xff}}},\n};\n\n// 0x07002550 - 0x07002650\nstatic const Vtx castle_courtyard_seg7_vertex_07002550[] = {\n    {{{   -39,    358,  -1735}, 0, {   518,    712}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{     9,    311,  -1689}, 0, {   476,   1076}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{     9,    433,  -1735}, 0, {   798,    712}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{     9,    311,  -1781}, 0, {   476,   1076}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -122,    350,  -1735}, 0, {   360,    360}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{    58,    358,  -1735}, 0, {   682,   1160}, {0xdc, 0xdc, 0xe3, 0xff}}},\n    {{{   140,    350,  -1735}, 0, {   798,   1560}, {0xdc, 0xdc, 0xe3, 0xff}}},\n    {{{     9,    311,  -1781}, 0, {   476,   1076}, {0xdc, 0xdc, 0xe3, 0xff}}},\n    {{{     9,    311,  -1689}, 0, {   476,   1076}, {0xdc, 0xdc, 0xe3, 0xff}}},\n    {{{   -65,    285,  -1735}, 0, {   284,    816}, {0xdc, 0xdc, 0xe3, 0xff}}},\n    {{{   -88,    203,  -1735}, 0, {    32,    956}, {0xdc, 0xdc, 0xe3, 0xff}}},\n    {{{     9,    433,  -1735}, 0, {   798,    712}, {0xdc, 0xdc, 0xe3, 0xff}}},\n    {{{   -39,    358,  -1735}, 0, {   518,    712}, {0xdc, 0xdc, 0xe3, 0xff}}},\n    {{{  -122,    350,  -1735}, 0, {   360,    360}, {0xdc, 0xdc, 0xe3, 0xff}}},\n    {{{   106,    203,  -1735}, 0, {   354,   1840}, {0xdc, 0xdc, 0xe3, 0xff}}},\n    {{{    83,    285,  -1735}, 0, {   532,   1492}, {0xdc, 0xdc, 0xe3, 0xff}}},\n};\n\n// 0x07002650 - 0x07002740\nstatic const Vtx castle_courtyard_seg7_vertex_07002650[] = {\n    {{{  2662,   2048,    512}, 0, {-12804,   1500}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{  2662,   2048,   2048}, 0, {-12804,   4054}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -2661,   2048,   2048}, 0, { 13764,   4054}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -2252,   2048,    205}, 0, { 12232,  -4120}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -2559,      0,    512}, 0, { 13764,   6098}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -2559,   2048,    512}, 0, { 13764,  -4120}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -2252,      0,    205}, 0, { 12232,   6098}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{  1331,   2048,    205}, 0, { -5648,  -4120}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{  1331,      0,    205}, 0, { -5648,   6098}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{   922,      0,    512}, 0, { -3604,   6098}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{   922,   2048,    512}, 0, { -3604,  -4120}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{   265,      0,  -1125}, 0, {  3500,    990}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{   265,    102,  -1125}, 0, {  3500,      0}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{   614,    102,  -1475}, 0, {     8,      0}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{   614,      0,  -1475}, 0, {     8,    990}, {0x60, 0x60, 0x75, 0xff}}},\n};\n\n// 0x07002740 - 0x07002830\nstatic const Vtx castle_courtyard_seg7_vertex_07002740[] = {\n    {{{   922,   2048,    410}, 0, { -4116,    990}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{  2253,   2048,    102}, 0, {-10760,   -544}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{  2662,   2048,    512}, 0, {-12804,   1500}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -2661,   2048,   2048}, 0, { 13764,   4054}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -2661,   2048,    512}, 0, { 13764,   1500}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -1330,   2048,    102}, 0, {  7124,   -544}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{  -921,   2048,    410}, 0, {  5080,    990}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -2252,   2048,    102}, 0, { 11720,   -544}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{  1331,   2048,    102}, 0, { -6160,   -544}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -2559,      0,   2048}, 0, {     0,    990}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -4095,      0,   2048}, 0, {  6100,    990}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -2559,   2048,   2048}, 0, {     0,  -9230}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{ -2661,   2048,    512}, 0, { 13764,   1500}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{  -921,   2048,    410}, 0, {  5080,    990}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{   922,   2048,    410}, 0, { -4116,    990}, {0x70, 0x70, 0x8a, 0xff}}},\n};\n\n// 0x07002830 - 0x07002910\nstatic const Vtx castle_courtyard_seg7_vertex_07002830[] = {\n    {{{  -264,      0,  -1125}, 0, {  4656,    990}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{   265,    102,  -1125}, 0, {  -624,      0}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{   265,      0,  -1125}, 0, {  -624,    990}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{  -264,    102,  -1125}, 0, {  4656,      0}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{   614,    102,  -2005}, 0, { 14276,  -1354}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   819,    102,  -2354}, 0, { 16320,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   614,    102,  -2559}, 0, { 14276,  -4120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   265,    102,  -2354}, 0, { 10788,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -613,    102,  -2559}, 0, {  2012,  -4120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -264,    102,  -2354}, 0, {  5500,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   265,      0,  -2354}, 0, {  4104,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   265,    102,  -2354}, 0, {  4104,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -264,    102,  -2354}, 0, { -1176,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -264,      0,  -2354}, 0, { -1176,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07002910 - 0x070029F0\nstatic const Vtx castle_courtyard_seg7_vertex_07002910[] = {\n    {{{   922,   2048,    410}, 0, { -4116,    990}, {0x7d, 0x7d, 0x95, 0xff}}},\n    {{{  2662,   2048,    512}, 0, {-12804,   1500}, {0x7d, 0x7d, 0x95, 0xff}}},\n    {{{ -2661,   2048,    512}, 0, { 13764,   1500}, {0x7d, 0x7d, 0x95, 0xff}}},\n    {{{  -613,      0,  -2005}, 0, {  5160,    990}, {0x7d, 0x7d, 0x95, 0xff}}},\n    {{{  -613,    102,  -2005}, 0, {  5160,      0}, {0x7d, 0x7d, 0x95, 0xff}}},\n    {{{  -613,    102,  -1475}, 0, {  -120,      0}, {0x7d, 0x7d, 0x95, 0xff}}},\n    {{{  -613,      0,  -1475}, 0, {  -120,    990}, {0x7d, 0x7d, 0x95, 0xff}}},\n    {{{  -264,      0,  -2354}, 0, {  3536,    990}, {0x7d, 0x7d, 0x95, 0xff}}},\n    {{{  -613,    102,  -2005}, 0, {    44,      0}, {0x7d, 0x7d, 0x95, 0xff}}},\n    {{{  -613,      0,  -2005}, 0, {    44,    990}, {0x7d, 0x7d, 0x95, 0xff}}},\n    {{{  -264,    102,  -2354}, 0, {  3536,      0}, {0x7d, 0x7d, 0x95, 0xff}}},\n    {{{ -1330,   -204,    205}, 0, {  7632,   5076}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{ -2252,   2048,    205}, 0, { 12232,  -6164}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{ -1330,   2048,    205}, 0, {  7632,  -6164}, {0x6f, 0x6f, 0x89, 0xff}}},\n};\n\n// 0x070029F0 - 0x07002AE0\nstatic const Vtx castle_courtyard_seg7_vertex_070029F0[] = {\n    {{{   922,   2048,    512}, 0, { -3604,  -6164}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{   922,      0,    512}, 0, { -3604,   4054}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{   307,      0,    512}, 0, {  -540,   4054}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  -306,    512,    512}, 0, {  2524,   1500}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  -921,   2048,    512}, 0, {  5588,  -6164}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{   307,    512,    512}, 0, {  -540,   1500}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  -306,      0,    512}, 0, {  2524,   4054}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  -921,      0,    512}, 0, {  5588,   4054}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  2253,   -204,    205}, 0, {-10248,   5076}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  1331,   -204,    205}, 0, { -5648,   5076}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  1331,   2048,    205}, 0, { -5648,  -6164}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  2253,   2048,    205}, 0, {-10248,  -6164}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{ -1330,   -204,    205}, 0, {  7632,   5076}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{ -2252,   -204,    205}, 0, { 12232,   5076}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{ -2252,   2048,    205}, 0, { 12232,  -6164}, {0x6f, 0x6f, 0x89, 0xff}}},\n};\n\n// 0x07002AE0 - 0x07002BD0\nstatic const Vtx castle_courtyard_seg7_vertex_07002AE0[] = {\n    {{{   614,      0,  -1475}, 0, {  5144,    990}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{   614,    102,  -2005}, 0, {  -136,      0}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{   614,      0,  -2005}, 0, {  -136,    990}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{   614,    102,  -1475}, 0, {  5144,      0}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  2560,   2048,   2048}, 0, {  6100,  -9230}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  4096,   2048,   2048}, 0, {     0,  -9230}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  2560,      0,   2048}, 0, {  6100,    990}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  4096,      0,   2048}, 0, {     0,    990}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{ -4095,      0,   2048}, 0, {  6100,    990}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{ -4095,   2048,   2048}, 0, {  6100,  -9230}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{ -2559,   2048,   2048}, 0, {     0,  -9230}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{ -2559,   2048,    512}, 0, {  1196,    478}, {0x58, 0x58, 0x62, 0xff}}},\n    {{{ -2559,      0,    512}, 0, {  1196,  10698}, {0x58, 0x58, 0x62, 0xff}}},\n    {{{ -2559,      0,   2048}, 0, {  7328,  10698}, {0x58, 0x58, 0x62, 0xff}}},\n    {{{ -2559,   2048,   2048}, 0, {  7328,    478}, {0x58, 0x58, 0x62, 0xff}}},\n};\n\n// 0x07002BD0 - 0x07002CD0\nstatic const Vtx castle_courtyard_seg7_vertex_07002BD0[] = {\n    {{{  2560,   2048,   2048}, 0, {     0,  -9230}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{  2560,      0,   2048}, 0, {     0,    990}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{  2560,      0,    512}, 0, {  6100,    990}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{  2560,    713,    512}, 0, {  6100,  -2570}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{  -613,      0,  -1475}, 0, {  2956,    990}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{  -264,    102,  -1125}, 0, {  -532,      0}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{  -264,      0,  -1125}, 0, {  -532,    990}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{  -613,    102,  -1475}, 0, {  2956,      0}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{   614,      0,  -2005}, 0, {  2012,    990}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{   265,    102,  -2354}, 0, { -1472,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{   265,      0,  -2354}, 0, { -1472,    990}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{   614,    102,  -2005}, 0, {  2012,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  2560,   2048,    512}, 0, {-11780,  -4120}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  2253,      0,    205}, 0, {-10248,   6098}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  2253,   2048,    205}, 0, {-10248,  -4120}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  2560,      0,    512}, 0, {-11780,   6098}, {0xad, 0xad, 0xbc, 0xff}}},\n};\n\n// 0x07002CD0 - 0x07002DB0\nstatic const Vtx castle_courtyard_seg7_vertex_07002CD0[] = {\n    {{{  -264,    102,  -2354}, 0, {  5500,  -3098}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -613,    102,  -2559}, 0, {  2012,  -4120}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -818,    102,  -2354}, 0, {     0,  -3098}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -613,    102,  -2005}, 0, {  2012,  -1354}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -818,    102,  -1125}, 0, {     0,   3032}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -613,    102,  -1475}, 0, {  2012,   1288}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -613,    102,   -921}, 0, {  2012,   4054}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -264,    102,  -1125}, 0, {  5500,   3032}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   265,    102,  -1125}, 0, { 10788,   3032}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   614,    102,   -921}, 0, { 14276,   4054}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   819,    102,  -1125}, 0, { 16320,   3032}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   614,    102,  -1475}, 0, { 14276,   1288}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   819,    102,  -2354}, 0, { 16320,  -3098}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   614,    102,  -2005}, 0, { 14276,  -1354}, {0xad, 0xad, 0xbc, 0xff}}},\n};\n\n// 0x07002DB0 - 0x07002E20\nstatic const Vtx castle_courtyard_seg7_vertex_07002DB0[] = {\n    {{{  -921,   2048,    512}, 0, {  5588,  -4120}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -921,      0,    512}, 0, {  5588,   6098}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{ -1331,     -1,    205}, 0, {  7636,   6108}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{ -1331,   2046,    205}, 0, {  7636,  -4110}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  2560,   2048,   2048}, 0, {     0,  -9230}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2560,    713,    512}, 0, {  6100,  -2570}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2560,   2048,    512}, 0, {  6100,  -9230}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07002E20 - 0x07002F20\nstatic const Vtx castle_courtyard_seg7_vertex_07002E20[] = {\n    {{{  3072,    819,    717}, 0, {  -540,  -3098}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{  2560,      0,    717}, 0, {  2012,    990}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{  2560,    819,    717}, 0, {  2012,  -3098}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{    77,    256,    512}, 0, {   192,    478}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{   -76,    256,    512}, 0, {  1724,    478}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{   -76,    256,    410}, 0, {  1724,      0}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{    77,    256,    410}, 0, {   192,      0}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{  -306,      0,    410}, 0, {  2012,    990}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{  -306,      0,    512}, 0, {  1468,    990}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{  -306,    512,    512}, 0, {  1468,  -4120}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{  -306,    512,    410}, 0, {  2012,  -4120}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{  3584,    819,    205}, 0, {     0,  -3098}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{  3072,      0,    717}, 0, {  3580,    990}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{  3072,    819,    717}, 0, {  3580,  -3098}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{  3584,      0,    205}, 0, {     0,    990}, {0x60, 0x60, 0x75, 0xff}}},\n    {{{  3072,      0,    717}, 0, {  -540,    990}, {0x60, 0x60, 0x75, 0xff}}},\n};\n\n// 0x07002F20 - 0x07003020\nstatic const Vtx castle_courtyard_seg7_vertex_07002F20[] = {\n    {{{ -2559,    819,    717}, 0, {     0,  -3098}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{ -3071,      0,    717}, 0, {  2524,    990}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{ -3071,    819,    717}, 0, {  2524,  -3098}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{ -2559,      0,    717}, 0, {     0,    990}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{ -3583,    819,    205}, 0, {     0,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3583,      0,    205}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3583,      0,  -3071}, 0, { 16320,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3583,    819,  -3071}, 0, { 16320,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3378,   2048,  -3071}, 0, {  8532,  10186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3378,      0,  -3071}, 0, {  8532,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3071,      0,  -3378}, 0, {  6888,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3071,   2048,  -3378}, 0, {  6888,  10186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   307,    512,    512}, 0, {  1436,  -4120}, {0x7d, 0x7d, 0x95, 0xff}}},\n    {{{   307,      0,    512}, 0, {  1436,    990}, {0x7d, 0x7d, 0x95, 0xff}}},\n    {{{   307,    512,    410}, 0, {  2012,  -4120}, {0x7d, 0x7d, 0x95, 0xff}}},\n    {{{   307,      0,    410}, 0, {  2012,    990}, {0x7d, 0x7d, 0x95, 0xff}}},\n};\n\n// 0x07003020 - 0x07003120\nstatic const Vtx castle_courtyard_seg7_vertex_07003020[] = {\n    {{{ -4095,   2048,  -3378}, 0, { 11532,  10186}, {0x7d, 0x7d, 0x95, 0xff}}},\n    {{{ -4095,      0,  -3378}, 0, { 11532,      0}, {0x7d, 0x7d, 0x95, 0xff}}},\n    {{{ -3788,      0,  -3071}, 0, { 10016,      0}, {0x7d, 0x7d, 0x95, 0xff}}},\n    {{{ -3788,   2048,  -3071}, 0, { 10016,  10186}, {0x7d, 0x7d, 0x95, 0xff}}},\n    {{{  3584,    819,  -3071}, 0, {     0,  -3098}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  3584,      0,  -3071}, 0, {     0,    990}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  3584,      0,    205}, 0, { 16320,    990}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{ -3071,    819,    717}, 0, {     0,  -3610}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{ -3071,      0,    717}, 0, {     0,    478}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{ -3583,      0,    205}, 0, {  3580,    478}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{ -3583,    819,    205}, 0, {  3580,  -3610}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{   307,      0,    410}, 0, {     0,    990}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{    77,    256,    410}, 0, {  2268,  -1566}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{   307,    512,    410}, 0, {     0,  -4120}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{    77,      0,    410}, 0, {  2268,    990}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  -306,    512,    410}, 0, {  6100,  -4120}, {0x6f, 0x6f, 0x89, 0xff}}},\n};\n\n// 0x07003120 - 0x07003210\nstatic const Vtx castle_courtyard_seg7_vertex_07003120[] = {\n    {{{    77,    256,    410}, 0, {  2268,  -1566}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{   -76,    256,    410}, 0, {  3800,  -1566}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  -306,    512,    410}, 0, {  6100,  -4120}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  -306,      0,    410}, 0, {  6100,    990}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{   -76,      0,    410}, 0, {  3800,    990}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  3584,    819,  -3071}, 0, {     0,  -3098}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  3584,      0,    205}, 0, { 16320,    990}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{  3584,    819,    205}, 0, { 16320,  -3098}, {0x6f, 0x6f, 0x89, 0xff}}},\n    {{{    77,    256,    410}, 0, {  2012,  -1566}, {0x58, 0x58, 0x62, 0xff}}},\n    {{{    77,      0,    512}, 0, {   988,    990}, {0x58, 0x58, 0x62, 0xff}}},\n    {{{    77,    256,    512}, 0, {   988,  -1566}, {0x58, 0x58, 0x62, 0xff}}},\n    {{{    77,      0,    410}, 0, {  2012,    990}, {0x58, 0x58, 0x62, 0xff}}},\n    {{{ -1330,   -204,  -3583}, 0, {   480,    990}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{ -1245,    819,  -3644}, 0, {  1000,  -4120}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{ -1330,    819,  -3583}, 0, {   480,  -4120}, {0x95, 0x95, 0xa9, 0xff}}},\n};\n\n// 0x07003210 - 0x07003300\nstatic const Vtx castle_courtyard_seg7_vertex_07003210[] = {\n    {{{   -76,    256,    512}, 0, {   988,  -1566}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{   -76,      0,    512}, 0, {   988,    990}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{   -76,      0,    410}, 0, {  2012,    990}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{   -76,    256,    410}, 0, {  2012,  -1566}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{   307,    512,    410}, 0, {     0,      0}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{  -306,    512,    410}, 0, {  6100,      0}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{  -306,    512,    512}, 0, {  6100,    990}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{   307,    512,    512}, 0, {     0,    990}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{ -3071,   -204,  -3583}, 0, {     0,    990}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{ -1330,    819,  -3583}, 0, {  8656,  -4120}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{ -3071,    819,  -3583}, 0, {     0,  -4120}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{ -1330,   -204,  -3583}, 0, {  8656,    990}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{ -1330,   -204,  -3583}, 0, {   480,    990}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{ -1245,   -166,  -3644}, 0, {  1000,    802}, {0x95, 0x95, 0xa9, 0xff}}},\n    {{{ -1245,    819,  -3644}, 0, {  1000,  -4120}, {0x95, 0x95, 0xa9, 0xff}}},\n};\n\n// 0x07003300 - 0x070033F0\nstatic const Vtx castle_courtyard_seg7_vertex_07003300[] = {\n    {{{   973,      0,  -3839}, 0, { 10188,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -972,    819,  -3839}, 0, {   480,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -972,      0,  -3839}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   973,    819,  -3839}, 0, { 10188,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3788,   2048,  -3071}, 0, { 10016,  10186}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -3378,      0,  -3071}, 0, {  8532,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -3378,   2048,  -3071}, 0, {  8532,  10186}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -3788,      0,  -3071}, 0, { 10016,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -3071,   2048,  -3788}, 0, {  5312,  10186}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -3071,      0,  -3788}, 0, {  5312,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -3378,      0,  -4095}, 0, {  3668,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  3072,   2048,  -3378}, 0, {  6808,  -9230}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  3072,      0,  -3378}, 0, {  6808,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  3379,      0,  -3071}, 0, {  8408,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  3379,   2048,  -3071}, 0, {  8408,  -9230}, {0xad, 0xad, 0xbc, 0xff}}},\n};\n\n// 0x070033F0 - 0x070034E0\nstatic const Vtx castle_courtyard_seg7_vertex_070033F0[] = {\n    {{{  3379,      0,  -3071}, 0, {  8408,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  3789,      0,  -3071}, 0, {  9924,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  3584,    819,  -3071}, 0, {  9168,  -3098}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  3379,    745,  -3071}, 0, {  8408,  -2730}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  3379,   2048,  -4095}, 0, {  3764,  -9230}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  3072,      0,  -3788}, 0, {  5324,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  3072,   2048,  -3788}, 0, {  5324,  -9230}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  3379,      0,  -4095}, 0, {  3764,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  2541,   -204,  -3583}, 0, {  6004,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  3072,   -204,  -3583}, 0, {  8656,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  3072,    819,  -3583}, 0, {  8656,  -4120}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   973,      0,  -3839}, 0, {  -180,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  1331,    819,  -3583}, 0, {  2012,  -4120}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   973,    819,  -3839}, 0, {  -180,  -4120}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  1331,   -204,  -3583}, 0, {  2012,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n};\n\n// 0x070034E0 - 0x070035C0\nstatic const Vtx castle_courtyard_seg7_vertex_070034E0[] = {\n    {{{  1331,   -204,  -3583}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3072,    819,  -3583}, 0, {  8656,  -4120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1331,    819,  -3583}, 0, {     0,  -4120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2541,   -204,  -3583}, 0, {  6004,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3071,   2048,  -3378}, 0, {  6888,  10186}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{ -3071,      0,  -3378}, 0, {  6888,      0}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{ -3071,      0,  -3788}, 0, {  5312,      0}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  3072,   2048,  -3788}, 0, {  5324,  -9230}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  3072,      0,  -3788}, 0, {  5324,    990}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  3072,      0,  -3378}, 0, {  6808,    990}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  3072,   2048,  -3378}, 0, {  6808,  -9230}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{ -3071,   2048,  -3788}, 0, {  5312,  10186}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{ -3378,      0,  -4095}, 0, {  3668,      0}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{ -3378,   2048,  -4095}, 0, {  3668,  10186}, {0x9c, 0x9c, 0xae, 0xff}}},\n};\n\n// 0x070035C0 - 0x07003670\nstatic const Vtx castle_courtyard_seg7_vertex_070035C0[] = {\n    {{{ -1245,   -166,  -3644}, 0, {  1000,    802}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -972,    819,  -3839}, 0, {  2676,  -4120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1245,    819,  -3644}, 0, {  1000,  -4120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3379,   2048,  -3071}, 0, {  8408,  -9230}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3379,    745,  -3071}, 0, {  8408,  -2730}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3584,    819,  -3071}, 0, {  9168,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3789,      0,  -3071}, 0, {  9924,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3789,   2048,  -3071}, 0, {  9924,  -9230}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4096,      0,  -3378}, 0, { 11524,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4096,   2048,  -3378}, 0, { 11524,  -9230}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -972,      0,  -3839}, 0, {  2676,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07003670 - 0x070036F0\nstatic const Vtx castle_courtyard_seg7_vertex_07003670[] = {\n    {{{   307,    512,   1126}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -306,      0,   1126}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -306,    512,   1126}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -306,    512,    512}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -306,      0,    512}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   307,      0,   1126}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   307,    512,    512}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   307,      0,    512}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070036F0 - 0x070039D0\nstatic const Gfx castle_courtyard_seg7_dl_070036F0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_0900B000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 16 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_courtyard_seg7_vertex_07000000, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_070000F0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 10, 12, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_070001D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_070002C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_070003B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_070004A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 11, 13, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_07000590, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  2,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_07000670, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_07000750, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_07000840, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_07000930, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_07000A10, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP1Triangle( 4,  5,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070039D0 - 0x07003AF8\nstatic const Gfx castle_courtyard_seg7_dl_070039D0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09009000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_courtyard_seg7_vertex_07000A80, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  3,  7,  4, 0x0),\n    gsSP2Triangles( 0,  8,  9, 0x0,  0,  2, 10, 0x0),\n    gsSP2Triangles( 0, 10, 11, 0x0,  0, 11,  8, 0x0),\n    gsSP2Triangles( 0,  9, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_07000B80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 0,  6,  7, 0x0,  0,  4,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_07000C70, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 0,  6,  7, 0x0,  0,  5,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles( 8, 12, 13, 0x0,  8, 10, 12, 0x0),\n    gsSP1Triangle( 8, 14, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07003AF8 - 0x07003BA8\nstatic const Gfx castle_courtyard_seg7_dl_07003AF8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_courtyard_seg7_vertex_07000D70, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_07000E70, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07003BA8 - 0x07003EC8\nstatic const Gfx castle_courtyard_seg7_dl_07003BA8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_courtyard_seg7_vertex_07000F70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_07001060, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_07001150, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0, 15,  0,  2, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_07001250, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_07001330, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_07001420, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_07001500, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_070015E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_070016D0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_070017B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_070018B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 15, 12, 14, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_070019B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07003EC8 - 0x07003F30\nstatic const Gfx castle_courtyard_seg7_dl_07003EC8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_courtyard_seg7_vertex_07001AB0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 10, 0x0, 12, 14, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07003F30 - 0x070040A8\nstatic const Gfx castle_courtyard_seg7_dl_07003F30[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_0900A000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_courtyard_seg7_vertex_07001BA0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_07001CA0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  6,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11, 12, 0x0),\n    gsSP2Triangles( 8, 12, 13, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle( 9, 14, 10, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_07001D90, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 0,  6,  4, 0x0,  7,  1,  8, 0x0),\n    gsSP2Triangles( 7,  9,  1, 0x0, 10, 11,  8, 0x0),\n    gsSP2Triangles(12, 11, 13, 0x0, 12,  8, 11, 0x0),\n    gsSP2Triangles(12, 14,  8, 0x0, 12, 13, 15, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_07001E90, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  7, 0x0,  3,  5,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10, 11,  8, 0x0),\n    gsSP2Triangles(10, 12, 11, 0x0, 13, 14, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070040A8 - 0x07004168\nstatic const Gfx castle_courtyard_seg7_dl_070040A8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_courtyard_seg7_vertex_07001F90, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12,  8, 11, 0x0, 10,  9, 13, 0x0),\n    gsSP2Triangles(10, 13, 14, 0x0, 15, 12, 11, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_07002090, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7,  9,  5, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0, 10,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07004168 - 0x070041A0\nstatic const Gfx castle_courtyard_seg7_dl_07004168[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_courtyard_seg7_vertex_07002140, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070041A0 - 0x070041D8\nstatic const Gfx castle_courtyard_seg7_dl_070041A0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09006000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_courtyard_seg7_vertex_07002180, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070041D8 - 0x07004370\nstatic const Gfx castle_courtyard_seg7_dl_070041D8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_courtyard_seg7_vertex_070021C0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  4,  5,  3, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  7,  6,  5, 0x0),\n    gsSP2Triangles( 7,  5,  8, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(11, 12, 10, 0x0, 12, 13, 10, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_070022A0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  4,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9,  2, 0x0,  8, 10,  9, 0x0),\n    gsSP2Triangles( 8, 11, 10, 0x0,  9, 12,  2, 0x0),\n    gsSP2Triangles(12,  0,  2, 0x0, 13,  1,  0, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_07002380, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  6, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 11, 10, 12, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_07002470, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  3,  5, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 12, 11, 13, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_07002550, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 8,  5, 11, 0x0, 12, 13,  8, 0x0),\n    gsSP1Triangle( 8, 14, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07004370 - 0x070045F0\nstatic const Gfx castle_courtyard_seg7_dl_07004370[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_courtyard_seg7_vertex_07002650, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_07002740, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 0,  8,  1, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_07002830, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_07002910, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_070029F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 0,  2,  5, 0x0,  0,  5,  3, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  3,  7,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_07002AE0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_07002BD0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_07002CD0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  7,  6, 0x0,  8,  6,  9, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0, 11, 10, 12, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0,  8,  9, 10, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_07002DB0, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP1Triangle( 4,  5,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070045F0 - 0x07004868\nstatic const Gfx castle_courtyard_seg7_dl_070045F0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09006800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_courtyard_seg7_vertex_07002E20, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_07002F20, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_07003020, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_07003120, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_07003210, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_07003300, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_070033F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_070034E0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 4,  6, 11, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_070035C0, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  3,  6,  7, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle( 0, 10,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07004868 - 0x070048B8\nstatic const Gfx castle_courtyard_seg7_dl_07004868[] = {\n    gsSPVertex(castle_courtyard_seg7_vertex_07003670, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  2,  4,  3, 0x0),\n    gsSP2Triangles( 0,  5,  1, 0x0,  0,  3,  6, 0x0),\n    gsSP2Triangles( 6,  5,  0, 0x0,  6,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070048B8 - 0x070049E8\nconst Gfx castle_courtyard_seg7_dl_070048B8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (16 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(castle_courtyard_seg7_dl_070036F0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(castle_courtyard_seg7_dl_070039D0),\n    gsSPDisplayList(castle_courtyard_seg7_dl_07003AF8),\n    gsSPDisplayList(castle_courtyard_seg7_dl_07003BA8),\n    gsSPDisplayList(castle_courtyard_seg7_dl_07003EC8),\n    gsSPDisplayList(castle_courtyard_seg7_dl_07003F30),\n    gsSPDisplayList(castle_courtyard_seg7_dl_070040A8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(castle_courtyard_seg7_dl_07004168),\n    gsSPDisplayList(castle_courtyard_seg7_dl_070041A0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(castle_courtyard_seg7_dl_070041D8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(castle_courtyard_seg7_dl_07004370),\n    gsSPDisplayList(castle_courtyard_seg7_dl_070045F0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(castle_courtyard_seg7_dl_07004868),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_courtyard/areas/1/2/model.inc.c",
    "content": "// 0x07005110 - 0x07005200\nstatic const Vtx castle_courtyard_seg7_vertex_07005110[] = {\n    {{{  -921,     20,  -3526}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -716,     20,  -3526}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -716,     20,  -3731}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -923,     20,    303}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -718,     20,     98}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -923,     20,     98}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -718,     20,    303}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   716,     20,    305}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   920,     20,    100}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   716,     20,    100}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   920,     20,    305}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   716,     20,  -3525}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   921,     20,  -3730}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   716,     20,  -3730}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   921,     20,  -3525}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07005200 - 0x070052F0\nstatic const Vtx castle_courtyard_seg7_vertex_07005200[] = {\n    {{{  2662,   -204,  -1417}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2867,   -204,  -1417}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2867,   -204,  -1621}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -921,     20,  -3526}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -716,     20,  -3731}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -921,     20,  -3731}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1573,   -204,    -25}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1778,   -204,    -25}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1778,   -204,   -229}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1573,   -204,   -229}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2275,   -204,   -736}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2480,   -204,   -736}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2480,   -204,   -940}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2275,   -204,   -940}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2662,   -204,  -1621}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070052F0 - 0x070053E0\nstatic const Vtx castle_courtyard_seg7_vertex_070052F0[] = {\n    {{{ -1966,   -204,     52}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1761,   -204,   -152}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1966,   -204,   -152}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2164,   -204,  -1325}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2369,   -204,  -1530}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2164,   -204,  -1530}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2369,   -204,  -1325}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2336,   -204,  -2222}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2541,   -204,  -2427}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2336,   -204,  -2427}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2541,   -204,  -2222}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1944,   -204,  -2934}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2149,   -204,  -3139}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1944,   -204,  -3139}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2149,   -204,  -2934}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070053E0 - 0x070054D0\nstatic const Vtx castle_courtyard_seg7_vertex_070053E0[] = {\n    {{{ -2920,   -204,  -1217}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2715,   -204,  -1217}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2715,   -204,  -1422}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1966,   -204,     52}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1761,   -204,     52}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1761,   -204,   -152}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2635,   -204,   -661}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2430,   -204,   -866}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2635,   -204,   -866}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2430,   -204,   -661}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2547,   -204,  -1685}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2342,   -204,  -1685}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2342,   -204,  -1890}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2547,   -204,  -1890}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2920,   -204,  -1422}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070054D0 - 0x07005550\nstatic const Vtx castle_courtyard_seg7_vertex_070054D0[] = {\n    {{{ -2822,   -204,  -2076}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2617,   -204,  -2281}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2822,   -204,  -2281}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2617,   -204,  -2076}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1742,   -204,  -3126}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1538,   -204,  -3330}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1742,   -204,  -3330}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1538,   -204,  -3126}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07005550 - 0x07005698\nstatic const Gfx castle_courtyard_seg7_dl_07005550[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, outside_0900BC00),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_courtyard_seg7_vertex_07005110, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_07005200, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_070052F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_070053E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_070054D0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07005698 - 0x07005708\nconst Gfx castle_courtyard_seg7_dl_07005698[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(castle_courtyard_seg7_dl_07005550),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_courtyard/areas/1/3/model.inc.c",
    "content": "// 0x07005708 - 0x070057F8\nstatic const Vtx castle_courtyard_seg7_vertex_07005708[] = {\n    {{{   205,   1741,    502}, 0, {   990,      0}, {0xa2, 0xa2, 0xc1, 0xff}}},\n    {{{   614,   1741,    502}, 0, {     0,      0}, {0xa2, 0xa2, 0xc1, 0xff}}},\n    {{{   614,   1331,    502}, 0, {     0,    990}, {0xa2, 0xa2, 0xc1, 0xff}}},\n    {{{ -2047,   1126,    195}, 0, {   990,      0}, {0xa2, 0xa2, 0xc1, 0xff}}},\n    {{{ -1637,    717,    195}, 0, {     0,    990}, {0xa2, 0xa2, 0xc1, 0xff}}},\n    {{{ -2047,    717,    195}, 0, {   990,    990}, {0xa2, 0xa2, 0xc1, 0xff}}},\n    {{{ -1637,   1126,    195}, 0, {     0,      0}, {0xa2, 0xa2, 0xc1, 0xff}}},\n    {{{ -2047,   1741,    195}, 0, {   990,      0}, {0xa2, 0xa2, 0xc1, 0xff}}},\n    {{{ -1637,   1331,    195}, 0, {     0,    990}, {0xa2, 0xa2, 0xc1, 0xff}}},\n    {{{ -2047,   1331,    195}, 0, {   990,    990}, {0xa2, 0xa2, 0xc1, 0xff}}},\n    {{{ -1637,   1741,    195}, 0, {     0,      0}, {0xa2, 0xa2, 0xc1, 0xff}}},\n    {{{  -613,   1741,    502}, 0, {   990,      0}, {0xa2, 0xa2, 0xc1, 0xff}}},\n    {{{  -204,   1331,    502}, 0, {     0,    990}, {0xa2, 0xa2, 0xc1, 0xff}}},\n    {{{  -613,   1331,    502}, 0, {   990,    990}, {0xa2, 0xa2, 0xc1, 0xff}}},\n    {{{  -204,   1741,    502}, 0, {     0,      0}, {0xa2, 0xa2, 0xc1, 0xff}}},\n};\n\n// 0x070057F8 - 0x070058A8\nstatic const Vtx castle_courtyard_seg7_vertex_070057F8[] = {\n    {{{  1638,   1741,    195}, 0, {   990,      0}, {0xa2, 0xa2, 0xc1, 0xff}}},\n    {{{  2048,   1741,    195}, 0, {     0,      0}, {0xa2, 0xa2, 0xc1, 0xff}}},\n    {{{  2048,   1331,    195}, 0, {     0,    990}, {0xa2, 0xa2, 0xc1, 0xff}}},\n    {{{   205,   1741,    502}, 0, {   990,      0}, {0xa2, 0xa2, 0xc1, 0xff}}},\n    {{{   614,   1331,    502}, 0, {     0,    990}, {0xa2, 0xa2, 0xc1, 0xff}}},\n    {{{   205,   1331,    502}, 0, {   990,    990}, {0xa2, 0xa2, 0xc1, 0xff}}},\n    {{{  1638,   1126,    195}, 0, {   990,      0}, {0xa2, 0xa2, 0xc1, 0xff}}},\n    {{{  2048,   1126,    195}, 0, {     0,      0}, {0xa2, 0xa2, 0xc1, 0xff}}},\n    {{{  2048,    717,    195}, 0, {     0,    990}, {0xa2, 0xa2, 0xc1, 0xff}}},\n    {{{  1638,    717,    195}, 0, {   990,    990}, {0xa2, 0xa2, 0xc1, 0xff}}},\n    {{{  1638,   1331,    195}, 0, {   990,    990}, {0xa2, 0xa2, 0xc1, 0xff}}},\n};\n\n// 0x070058A8 - 0x07005938\nstatic const Gfx castle_courtyard_seg7_dl_070058A8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_0900A800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_courtyard_seg7_vertex_07005708, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_070057F8, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP1Triangle( 0,  2, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07005938 - 0x070059A8\nconst Gfx castle_courtyard_seg7_dl_07005938[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(castle_courtyard_seg7_dl_070058A8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_courtyard/areas/1/collision.inc.c",
    "content": "// 0x070059A8 - 0x07006E1E\nconst Collision castle_courtyard_seg7_collision[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x127),\n    COL_VERTEX(9, 240, -1735),\n    COL_VERTEX(-88, 203, -1735),\n    COL_VERTEX(9, 311, -1781),\n    COL_VERTEX(-65, 285, -1735),\n    COL_VERTEX(9, 311, -1689),\n    COL_VERTEX(-122, 350, -1735),\n    COL_VERTEX(58, 358, -1735),\n    COL_VERTEX(140, 350, -1735),\n    COL_VERTEX(83, 285, -1735),\n    COL_VERTEX(106, 203, -1735),\n    COL_VERTEX(-39, 358, -1735),\n    COL_VERTEX(9, 433, -1735),\n    COL_VERTEX(214, -50, -1893),\n    COL_VERTEX(-195, -50, -1893),\n    COL_VERTEX(111, 205, -1791),\n    COL_VERTEX(214, -50, -1586),\n    COL_VERTEX(-195, -50, -1586),\n    COL_VERTEX(111, 205, -1689),\n    COL_VERTEX(-93, 205, -1689),\n    COL_VERTEX(-93, 205, -1791),\n    COL_VERTEX(-306, 512, 1126),\n    COL_VERTEX(-306, 0, 1126),\n    COL_VERTEX(-306, 0, 512),\n    COL_VERTEX(307, 0, 512),\n    COL_VERTEX(77, 0, 512),\n    COL_VERTEX(-76, 0, 512),\n    COL_VERTEX(307, 512, 1126),\n    COL_VERTEX(307, 0, 1126),\n    COL_VERTEX(-921, 0, 410),\n    COL_VERTEX(-921, 0, 512),\n    COL_VERTEX(-716, 0, 410),\n    COL_VERTEX(-306, 0, 410),\n    COL_VERTEX(-613, 0, 307),\n    COL_VERTEX(-306, 512, 512),\n    COL_VERTEX(307, 512, 512),\n    COL_VERTEX(922, 0, 512),\n    COL_VERTEX(922, 0, 410),\n    COL_VERTEX(77, 256, 512),\n    COL_VERTEX(-76, 256, 512),\n    COL_VERTEX(77, 256, 410),\n    COL_VERTEX(922, 2048, 512),\n    COL_VERTEX(-921, 2048, 512),\n    COL_VERTEX(307, 512, 410),\n    COL_VERTEX(2253, -204, 205),\n    COL_VERTEX(2253, 0, 205),\n    COL_VERTEX(-1330, -204, 205),\n    COL_VERTEX(-2252, 2048, 205),\n    COL_VERTEX(-1228, 102, 282),\n    COL_VERTEX(-1331, 2047, 205),\n    COL_VERTEX(-2252, 2048, 102),\n    COL_VERTEX(2662, 2150, 512),\n    COL_VERTEX(2253, 2048, 205),\n    COL_VERTEX(2253, 2150, 102),\n    COL_VERTEX(1331, 2150, 102),\n    COL_VERTEX(922, 2150, 410),\n    COL_VERTEX(-921, 2150, 410),\n    COL_VERTEX(-1330, 2150, 102),\n    COL_VERTEX(-2252, 2150, 102),\n    COL_VERTEX(-2559, 2048, 512),\n    COL_VERTEX(-1228, 0, 282),\n    COL_VERTEX(-2559, 0, 512),\n    COL_VERTEX(-306, 512, 410),\n    COL_VERTEX(-3583, 20, 205),\n    COL_VERTEX(-3071, 20, 717),\n    COL_VERTEX(-3583, 819, 205),\n    COL_VERTEX(-2559, 819, 717),\n    COL_VERTEX(-2866, 0, 717),\n    COL_VERTEX(-2938, 20, 317),\n    COL_VERTEX(-2938, 20, 717),\n    COL_VERTEX(2560, 819, 717),\n    COL_VERTEX(2560, 2048, 512),\n    COL_VERTEX(2662, 2048, 512),\n    COL_VERTEX(1331, 2048, 205),\n    COL_VERTEX(1331, 102, 205),\n    COL_VERTEX(1229, 2, 282),\n    COL_VERTEX(77, 0, 410),\n    COL_VERTEX(614, 0, 307),\n    COL_VERTEX(307, 0, 410),\n    COL_VERTEX(-76, 256, 410),\n    COL_VERTEX(3584, 819, -3071),\n    COL_VERTEX(3379, 0, -3071),\n    COL_VERTEX(3584, 0, 0),\n    COL_VERTEX(3072, 20, 717),\n    COL_VERTEX(3072, 819, 717),\n    COL_VERTEX(3072, 2048, -3583),\n    COL_VERTEX(3072, 819, -3583),\n    COL_VERTEX(2662, 0, -3583),\n    COL_VERTEX(1331, -204, -3583),\n    COL_VERTEX(1331, 0, -3583),\n    COL_VERTEX(3072, 2048, -3378),\n    COL_VERTEX(3072, 0, -3173),\n    COL_VERTEX(3574, 2048, -3071),\n    COL_VERTEX(3379, 2048, -3071),\n    COL_VERTEX(614, 102, -2005),\n    COL_VERTEX(614, 0, -2559),\n    COL_VERTEX(265, 102, -2354),\n    COL_VERTEX(-613, 0, -2559),\n    COL_VERTEX(614, 0, -2005),\n    COL_VERTEX(265, 0, -2354),\n    COL_VERTEX(-264, 102, -2354),\n    COL_VERTEX(-818, 0, -2354),\n    COL_VERTEX(-264, 0, -2354),\n    COL_VERTEX(-818, 0, -1125),\n    COL_VERTEX(-613, 102, -2005),\n    COL_VERTEX(-613, 102, -1475),\n    COL_VERTEX(-613, 0, -921),\n    COL_VERTEX(-613, 0, -2005),\n    COL_VERTEX(265, 102, -1125),\n    COL_VERTEX(614, 0, -921),\n    COL_VERTEX(-264, 0, -1125),\n    COL_VERTEX(-613, 0, -1475),\n    COL_VERTEX(614, 102, -1475),\n    COL_VERTEX(265, 0, -1125),\n    COL_VERTEX(819, 0, -1125),\n    COL_VERTEX(819, 0, -2354),\n    COL_VERTEX(922, 0, 0),\n    COL_VERTEX(-921, 0, 0),\n    COL_VERTEX(-1228, 0, -1023),\n    COL_VERTEX(1229, 0, -1023),\n    COL_VERTEX(614, 0, -1475),\n    COL_VERTEX(-612, 0, -3522),\n    COL_VERTEX(-1022, 0, -3522),\n    COL_VERTEX(-1330, 0, -2457),\n    COL_VERTEX(-1330, 0, -3583),\n    COL_VERTEX(718, 0, -3420),\n    COL_VERTEX(923, 0, -3420),\n    COL_VERTEX(1331, 0, -2457),\n    COL_VERTEX(1024, 0, 102),\n    COL_VERTEX(1741, -101, -2047),\n    COL_VERTEX(1741, 0, -2047),\n    COL_VERTEX(-2661, -204, -3583),\n    COL_VERTEX(-1330, -101, -2764),\n    COL_VERTEX(-1740, 0, -2047),\n    COL_VERTEX(-1330, -204, -716),\n    COL_VERTEX(-1330, -101, -716),\n    COL_VERTEX(-1330, -204, -2764),\n    COL_VERTEX(-2252, -204, 205),\n    COL_VERTEX(-3071, 0, -613),\n    COL_VERTEX(-3071, -204, -613),\n    COL_VERTEX(1331, 102, -1023),\n    COL_VERTEX(1229, 102, 282),\n    COL_VERTEX(1331, -204, 205),\n    COL_VERTEX(1946, -204, -2149),\n    COL_VERTEX(1946, -101, -1330),\n    COL_VERTEX(1331, -101, -716),\n    COL_VERTEX(-1740, -101, -1433),\n    COL_VERTEX(-1330, -101, -1023),\n    COL_VERTEX(-1740, -101, -2047),\n    COL_VERTEX(-1330, -101, -2459),\n    COL_VERTEX(-1945, -101, -2149),\n    COL_VERTEX(-1945, -204, -1330),\n    COL_VERTEX(-1330, 102, 205),\n    COL_VERTEX(-1330, 0, -1023),\n    COL_VERTEX(-1945, -101, -1330),\n    COL_VERTEX(2560, 0, 512),\n    COL_VERTEX(2867, 0, 717),\n    COL_VERTEX(2867, 0, 307),\n    COL_VERTEX(3174, 0, 0),\n    COL_VERTEX(3072, 0, -613),\n    COL_VERTEX(2939, 20, 717),\n    COL_VERTEX(3584, 20, 71),\n    COL_VERTEX(-3583, 819, -3071),\n    COL_VERTEX(-3583, 2048, -3071),\n    COL_VERTEX(-3071, 0, -3378),\n    COL_VERTEX(-3378, 2048, -3071),\n    COL_VERTEX(-3071, 0, -3173),\n    COL_VERTEX(-3071, 2048, -3378),\n    COL_VERTEX(-3071, 0, -3583),\n    COL_VERTEX(-1330, 819, -3583),\n    COL_VERTEX(-2252, 0, 205),\n    COL_VERTEX(-3184, 20, 71),\n    COL_VERTEX(-3583, 20, 71),\n    COL_VERTEX(1229, 102, -1023),\n    COL_VERTEX(-1740, 0, -1433),\n    COL_VERTEX(-1023, 0, 102),\n    COL_VERTEX(-1330, 102, -1023),\n    COL_VERTEX(-1228, 102, -1023),\n    COL_VERTEX(1741, 0, -1433),\n    COL_VERTEX(1331, 0, -1023),\n    COL_VERTEX(1331, -101, -2459),\n    COL_VERTEX(1331, -101, -2764),\n    COL_VERTEX(1331, -204, -2764),\n    COL_VERTEX(1025, 0, -3727),\n    COL_VERTEX(1025, 0, -3522),\n    COL_VERTEX(973, 0, -3839),\n    COL_VERTEX(2662, -204, -3583),\n    COL_VERTEX(-972, 0, -3839),\n    COL_VERTEX(-1022, 0, -3727),\n    COL_VERTEX(-653, 20, -3543),\n    COL_VERTEX(-653, 20, -3707),\n    COL_VERTEX(-919, 0, -3830),\n    COL_VERTEX(-899, 20, -3789),\n    COL_VERTEX(-981, 20, -3707),\n    COL_VERTEX(-919, 0, -3420),\n    COL_VERTEX(-612, 0, -3727),\n    COL_VERTEX(984, 20, -3543),\n    COL_VERTEX(984, 20, -3707),\n    COL_VERTEX(738, 20, -3789),\n    COL_VERTEX(718, 0, -3830),\n    COL_VERTEX(616, 0, -3727),\n    COL_VERTEX(657, 20, -3707),\n    COL_VERTEX(738, 20, -3461),\n    COL_VERTEX(902, 20, -3461),\n    COL_VERTEX(-736, 20, 369),\n    COL_VERTEX(-982, 20, 287),\n    COL_VERTEX(-982, 20, 123),\n    COL_VERTEX(-1023, 0, 307),\n    COL_VERTEX(-900, 20, 41),\n    COL_VERTEX(-736, 20, 41),\n    COL_VERTEX(-716, 0, 0),\n    COL_VERTEX(-654, 20, 287),\n    COL_VERTEX(901, 20, 369),\n    COL_VERTEX(655, 20, 287),\n    COL_VERTEX(655, 20, 123),\n    COL_VERTEX(614, 0, 102),\n    COL_VERTEX(983, 20, 287),\n    COL_VERTEX(717, 0, 410),\n    COL_VERTEX(-76, 0, 410),\n    COL_VERTEX(-1330, 2048, 102),\n    COL_VERTEX(-921, 2048, 410),\n    COL_VERTEX(2253, 2048, 102),\n    COL_VERTEX(1331, 2048, 102),\n    COL_VERTEX(922, 2048, 410),\n    COL_VERTEX(-2661, 2048, 512),\n    COL_VERTEX(-2661, 2150, 512),\n    COL_VERTEX(-2559, 0, 717),\n    COL_VERTEX(-2866, 0, 307),\n    COL_VERTEX(-3071, 819, 717),\n    COL_VERTEX(-3583, 0, -3071),\n    COL_VERTEX(-3583, 0, 0),\n    COL_VERTEX(-3173, 0, 0),\n    COL_VERTEX(2560, 0, 717),\n    COL_VERTEX(2560, 713, 512),\n    COL_VERTEX(-613, 0, 102),\n    COL_VERTEX(1024, 0, 307),\n    COL_VERTEX(3584, 0, -3071),\n    COL_VERTEX(3584, 819, 205),\n    COL_VERTEX(3584, 20, 205),\n    COL_VERTEX(3072, 0, -3378),\n    COL_VERTEX(3185, 20, 71),\n    COL_VERTEX(3072, 0, -3583),\n    COL_VERTEX(1331, 819, -3583),\n    COL_VERTEX(3072, -204, -3173),\n    COL_VERTEX(614, 102, -2559),\n    COL_VERTEX(819, 102, -2354),\n    COL_VERTEX(-613, 102, -2559),\n    COL_VERTEX(-715, 0, -3420),\n    COL_VERTEX(-818, 102, -2354),\n    COL_VERTEX(-818, 102, -1125),\n    COL_VERTEX(-613, 102, -921),\n    COL_VERTEX(-264, 102, -1125),\n    COL_VERTEX(614, 102, -921),\n    COL_VERTEX(819, 102, -1125),\n    COL_VERTEX(717, 0, 0),\n    COL_VERTEX(737, 20, 41),\n    COL_VERTEX(901, 20, 41),\n    COL_VERTEX(983, 20, 123),\n    COL_VERTEX(-972, 819, -3839),\n    COL_VERTEX(-1330, -204, -3583),\n    COL_VERTEX(-735, 20, -3461),\n    COL_VERTEX(-981, 20, -3543),\n    COL_VERTEX(616, 0, -3522),\n    COL_VERTEX(1741, -101, -1433),\n    COL_VERTEX(1331, -101, -1023),\n    COL_VERTEX(-3378, 0, -3071),\n    COL_VERTEX(-3071, -204, -3173),\n    COL_VERTEX(1331, -204, -716),\n    COL_VERTEX(1946, -101, -2149),\n    COL_VERTEX(1946, -204, -1330),\n    COL_VERTEX(-1945, -204, -2149),\n    COL_VERTEX(2939, 20, 317),\n    COL_VERTEX(3072, -204, -613),\n    COL_VERTEX(-3071, 819, -3583),\n    COL_VERTEX(-2661, 0, -3583),\n    COL_VERTEX(-3071, 2048, -3583),\n    COL_VERTEX(-1228, 100, 282),\n    COL_VERTEX(1330, 0, -2458),\n    COL_VERTEX(923, 0, -3830),\n    COL_VERTEX(973, 819, -3839),\n    COL_VERTEX(-715, 0, -3830),\n    COL_VERTEX(-735, 20, -3789),\n    COL_VERTEX(-899, 20, -3461),\n    COL_VERTEX(657, 20, -3543),\n    COL_VERTEX(902, 20, -3789),\n    COL_VERTEX(-900, 20, 369),\n    COL_VERTEX(-654, 20, 123),\n    COL_VERTEX(737, 20, 369),\n    COL_VERTEX(162, -50, -1330),\n    COL_VERTEX(-144, -50, -1330),\n    COL_VERTEX(-349, -50, -1535),\n    COL_VERTEX(367, -50, -1535),\n    COL_VERTEX(367, -50, -1945),\n    COL_VERTEX(-349, -50, -1945),\n    COL_VERTEX(162, -50, -2149),\n    COL_VERTEX(-144, -50, -2149),\n    COL_TRI_INIT(SURFACE_DEFAULT, 470),\n    COL_TRI(22, 30, 28),\n    COL_TRI(20, 21, 22),\n    COL_TRI(21, 23, 24),\n    COL_TRI(24, 25, 21),\n    COL_TRI(26, 21, 20),\n    COL_TRI(26, 27, 21),\n    COL_TRI(23, 21, 27),\n    COL_TRI(25, 22, 21),\n    COL_TRI(22, 28, 29),\n    COL_TRI(20, 22, 33),\n    COL_TRI(26, 20, 33),\n    COL_TRI(31, 22, 33),\n    COL_TRI(34, 27, 26),\n    COL_TRI(26, 33, 34),\n    COL_TRI(34, 23, 27),\n    COL_TRI(35, 36, 23),\n    COL_TRI(36, 216, 23),\n    COL_TRI(37, 78, 39),\n    COL_TRI(37, 38, 78),\n    COL_TRI(38, 25, 217),\n    COL_TRI(38, 217, 78),\n    COL_TRI(39, 75, 24),\n    COL_TRI(39, 24, 37),\n    COL_TRI(33, 22, 29),\n    COL_TRI(33, 41, 40),\n    COL_TRI(40, 34, 33),\n    COL_TRI(40, 23, 34),\n    COL_TRI(40, 35, 23),\n    COL_TRI(34, 23, 42),\n    COL_TRI(33, 29, 41),\n    COL_TRI(45, 169, 46),\n    COL_TRI(41, 47, 48),\n    COL_TRI(42, 33, 34),\n    COL_TRI(43, 73, 72),\n    COL_TRI(44, 72, 51),\n    COL_TRI(52, 220, 221),\n    COL_TRI(45, 46, 48),\n    COL_TRI(46, 49, 48),\n    COL_TRI(47, 151, 48),\n    COL_TRI(48, 218, 219),\n    COL_TRI(49, 218, 48),\n    COL_TRI(41, 48, 219),\n    COL_TRI(50, 71, 220),\n    COL_TRI(51, 221, 220),\n    COL_TRI(50, 220, 52),\n    COL_TRI(52, 221, 53),\n    COL_TRI(51, 72, 221),\n    COL_TRI(53, 221, 222),\n    COL_TRI(53, 222, 54),\n    COL_TRI(40, 219, 222),\n    COL_TRI(40, 222, 221),\n    COL_TRI(40, 221, 72),\n    COL_TRI(56, 49, 57),\n    COL_TRI(54, 222, 219),\n    COL_TRI(54, 219, 55),\n    COL_TRI(55, 219, 218),\n    COL_TRI(55, 218, 56),\n    COL_TRI(56, 218, 49),\n    COL_TRI(57, 49, 223),\n    COL_TRI(41, 29, 59),\n    COL_TRI(57, 223, 224),\n    COL_TRI(58, 223, 49),\n    COL_TRI(59, 47, 41),\n    COL_TRI(40, 41, 219),\n    COL_TRI(58, 49, 46),\n    COL_TRI(46, 60, 58),\n    COL_TRI(46, 169, 60),\n    COL_TRI(60, 225, 65),\n    COL_TRI(60, 226, 66),\n    COL_TRI(60, 66, 225),\n    COL_TRI(58, 60, 65),\n    COL_TRI(23, 77, 42),\n    COL_TRI(171, 62, 63),\n    COL_TRI(39, 61, 42),\n    COL_TRI(61, 31, 33),\n    COL_TRI(62, 171, 64),\n    COL_TRI(63, 64, 227),\n    COL_TRI(63, 62, 64),\n    COL_TRI(64, 228, 161),\n    COL_TRI(68, 63, 227),\n    COL_TRI(64, 229, 228),\n    COL_TRI(65, 225, 66),\n    COL_TRI(66, 68, 227),\n    COL_TRI(67, 66, 226),\n    COL_TRI(67, 68, 66),\n    COL_TRI(65, 66, 227),\n    COL_TRI(69, 231, 154),\n    COL_TRI(70, 154, 44),\n    COL_TRI(69, 232, 70),\n    COL_TRI(71, 70, 51),\n    COL_TRI(70, 44, 51),\n    COL_TRI(72, 44, 43),\n    COL_TRI(77, 39, 42),\n    COL_TRI(72, 140, 35),\n    COL_TRI(74, 36, 35),\n    COL_TRI(72, 35, 40),\n    COL_TRI(75, 77, 32),\n    COL_TRI(76, 77, 23),\n    COL_TRI(77, 75, 39),\n    COL_TRI(32, 31, 217),\n    COL_TRI(31, 32, 22),\n    COL_TRI(42, 61, 33),\n    COL_TRI(32, 217, 75),\n    COL_TRI(61, 78, 31),\n    COL_TRI(78, 217, 31),\n    COL_TRI(39, 78, 61),\n    COL_TRI(79, 235, 81),\n    COL_TRI(80, 235, 79),\n    COL_TRI(79, 81, 236),\n    COL_TRI(81, 160, 236),\n    COL_TRI(82, 236, 237),\n    COL_TRI(82, 83, 236),\n    COL_TRI(83, 82, 159),\n    COL_TRI(83, 159, 155),\n    COL_TRI(83, 231, 69),\n    COL_TRI(83, 155, 231),\n    COL_TRI(84, 85, 238),\n    COL_TRI(84, 238, 89),\n    COL_TRI(85, 88, 87),\n    COL_TRI(85, 240, 238),\n    COL_TRI(86, 240, 85),\n    COL_TRI(80, 238, 90),\n    COL_TRI(86, 238, 240),\n    COL_TRI(86, 90, 238),\n    COL_TRI(89, 238, 80),\n    COL_TRI(89, 80, 92),\n    COL_TRI(81, 235, 80),\n    COL_TRI(90, 81, 80),\n    COL_TRI(96, 245, 243),\n    COL_TRI(91, 92, 79),\n    COL_TRI(92, 80, 79),\n    COL_TRI(93, 243, 95),\n    COL_TRI(93, 244, 243),\n    COL_TRI(94, 244, 114),\n    COL_TRI(95, 243, 245),\n    COL_TRI(94, 243, 244),\n    COL_TRI(96, 243, 94),\n    COL_TRI(95, 245, 99),\n    COL_TRI(97, 93, 95),\n    COL_TRI(98, 95, 99),\n    COL_TRI(99, 245, 247),\n    COL_TRI(100, 245, 96),\n    COL_TRI(100, 247, 245),\n    COL_TRI(101, 99, 103),\n    COL_TRI(98, 99, 101),\n    COL_TRI(99, 247, 103),\n    COL_TRI(102, 247, 100),\n    COL_TRI(102, 248, 247),\n    COL_TRI(103, 248, 104),\n    COL_TRI(103, 247, 248),\n    COL_TRI(101, 103, 106),\n    COL_TRI(104, 248, 249),\n    COL_TRI(105, 248, 102),\n    COL_TRI(104, 249, 250),\n    COL_TRI(106, 104, 110),\n    COL_TRI(106, 103, 104),\n    COL_TRI(107, 249, 251),\n    COL_TRI(107, 250, 249),\n    COL_TRI(108, 249, 105),\n    COL_TRI(108, 251, 249),\n    COL_TRI(109, 250, 107),\n    COL_TRI(110, 250, 109),\n    COL_TRI(110, 104, 250),\n    COL_TRI(114, 252, 113),\n    COL_TRI(107, 252, 111),\n    COL_TRI(111, 244, 93),\n    COL_TRI(111, 252, 244),\n    COL_TRI(112, 111, 119),\n    COL_TRI(112, 107, 111),\n    COL_TRI(107, 251, 252),\n    COL_TRI(113, 252, 251),\n    COL_TRI(114, 244, 252),\n    COL_TRI(108, 118, 113),\n    COL_TRI(109, 107, 112),\n    COL_TRI(113, 251, 108),\n    COL_TRI(108, 115, 118),\n    COL_TRI(108, 209, 253),\n    COL_TRI(108, 105, 209),\n    COL_TRI(115, 108, 253),\n    COL_TRI(116, 105, 117),\n    COL_TRI(116, 209, 105),\n    COL_TRI(117, 105, 102),\n    COL_TRI(118, 114, 113),\n    COL_TRI(119, 93, 97),\n    COL_TRI(119, 111, 93),\n    COL_TRI(123, 122, 96),\n    COL_TRI(105, 249, 248),\n    COL_TRI(117, 100, 122),\n    COL_TRI(120, 246, 96),\n    COL_TRI(96, 94, 120),\n    COL_TRI(96, 246, 193),\n    COL_TRI(121, 96, 193),\n    COL_TRI(121, 123, 96),\n    COL_TRI(122, 100, 96),\n    COL_TRI(94, 126, 88),\n    COL_TRI(97, 95, 98),\n    COL_TRI(124, 120, 94),\n    COL_TRI(125, 124, 94),\n    COL_TRI(126, 94, 114),\n    COL_TRI(94, 183, 125),\n    COL_TRI(94, 88, 183),\n    COL_TRI(118, 129, 126),\n    COL_TRI(118, 126, 114),\n    COL_TRI(118, 115, 127),\n    COL_TRI(127, 74, 118),\n    COL_TRI(118, 178, 177),\n    COL_TRI(118, 177, 129),\n    COL_TRI(128, 129, 262),\n    COL_TRI(129, 177, 262),\n    COL_TRI(123, 257, 168),\n    COL_TRI(123, 186, 257),\n    COL_TRI(123, 187, 186),\n    COL_TRI(123, 121, 187),\n    COL_TRI(130, 258, 123),\n    COL_TRI(131, 148, 122),\n    COL_TRI(122, 258, 131),\n    COL_TRI(122, 123, 258),\n    COL_TRI(134, 151, 175),\n    COL_TRI(117, 122, 132),\n    COL_TRI(117, 102, 100),\n    COL_TRI(117, 132, 173),\n    COL_TRI(133, 45, 151),\n    COL_TRI(137, 228, 229),\n    COL_TRI(130, 123, 168),\n    COL_TRI(135, 131, 258),\n    COL_TRI(136, 138, 137),\n    COL_TRI(136, 137, 169),\n    COL_TRI(137, 264, 228),\n    COL_TRI(138, 165, 137),\n    COL_TRI(141, 266, 144),\n    COL_TRI(139, 73, 141),\n    COL_TRI(73, 139, 140),\n    COL_TRI(140, 139, 172),\n    COL_TRI(139, 141, 178),\n    COL_TRI(43, 141, 73),\n    COL_TRI(141, 144, 178),\n    COL_TRI(142, 267, 143),\n    COL_TRI(142, 180, 267),\n    COL_TRI(142, 181, 180),\n    COL_TRI(142, 143, 268),\n    COL_TRI(143, 266, 268),\n    COL_TRI(143, 128, 262),\n    COL_TRI(143, 267, 128),\n    COL_TRI(143, 262, 263),\n    COL_TRI(144, 263, 178),\n    COL_TRI(143, 263, 144),\n    COL_TRI(143, 144, 266),\n    COL_TRI(134, 145, 153),\n    COL_TRI(134, 146, 145),\n    COL_TRI(145, 152, 173),\n    COL_TRI(145, 146, 152),\n    COL_TRI(145, 132, 147),\n    COL_TRI(145, 173, 132),\n    COL_TRI(146, 134, 152),\n    COL_TRI(147, 132, 148),\n    COL_TRI(132, 122, 148),\n    COL_TRI(148, 131, 147),\n    COL_TRI(149, 131, 135),\n    COL_TRI(131, 149, 147),\n    COL_TRI(149, 135, 269),\n    COL_TRI(150, 149, 269),\n    COL_TRI(151, 134, 133),\n    COL_TRI(150, 133, 153),\n    COL_TRI(133, 134, 153),\n    COL_TRI(156, 155, 159),\n    COL_TRI(152, 134, 175),\n    COL_TRI(150, 153, 149),\n    COL_TRI(153, 147, 149),\n    COL_TRI(153, 145, 147),\n    COL_TRI(154, 155, 156),\n    COL_TRI(155, 154, 231),\n    COL_TRI(44, 158, 43),\n    COL_TRI(154, 156, 44),\n    COL_TRI(156, 159, 270),\n    COL_TRI(156, 158, 44),\n    COL_TRI(156, 157, 158),\n    COL_TRI(157, 156, 270),\n    COL_TRI(157, 270, 239),\n    COL_TRI(157, 81, 158),\n    COL_TRI(158, 271, 43),\n    COL_TRI(81, 90, 158),\n    COL_TRI(81, 157, 239),\n    COL_TRI(81, 239, 160),\n    COL_TRI(159, 237, 160),\n    COL_TRI(159, 82, 237),\n    COL_TRI(159, 160, 239),\n    COL_TRI(160, 237, 236),\n    COL_TRI(159, 239, 270),\n    COL_TRI(164, 163, 166),\n    COL_TRI(161, 228, 264),\n    COL_TRI(162, 161, 264),\n    COL_TRI(163, 264, 165),\n    COL_TRI(164, 264, 163),\n    COL_TRI(162, 264, 164),\n    COL_TRI(137, 165, 264),\n    COL_TRI(169, 137, 230),\n    COL_TRI(165, 273, 163),\n    COL_TRI(166, 163, 167),\n    COL_TRI(167, 272, 166),\n    COL_TRI(166, 272, 274),\n    COL_TRI(163, 273, 167),\n    COL_TRI(168, 167, 273),\n    COL_TRI(169, 230, 226),\n    COL_TRI(170, 226, 230),\n    COL_TRI(169, 226, 60),\n    COL_TRI(137, 229, 230),\n    COL_TRI(171, 230, 229),\n    COL_TRI(171, 229, 64),\n    COL_TRI(138, 265, 165),\n    COL_TRI(165, 265, 130),\n    COL_TRI(165, 130, 273),\n    COL_TRI(130, 168, 273),\n    COL_TRI(172, 74, 140),\n    COL_TRI(172, 118, 74),\n    COL_TRI(172, 178, 118),\n    COL_TRI(47, 117, 176),\n    COL_TRI(175, 117, 152),\n    COL_TRI(59, 117, 275),\n    COL_TRI(173, 152, 117),\n    COL_TRI(117, 59, 174),\n    COL_TRI(174, 116, 117),\n    COL_TRI(175, 176, 117),\n    COL_TRI(176, 175, 151),\n    COL_TRI(179, 129, 128),\n    COL_TRI(172, 139, 178),\n    COL_TRI(177, 178, 262),\n    COL_TRI(178, 263, 262),\n    COL_TRI(179, 180, 126),\n    COL_TRI(180, 179, 128),\n    COL_TRI(179, 276, 129),\n    COL_TRI(184, 88, 241),\n    COL_TRI(181, 87, 180),\n    COL_TRI(87, 185, 86),\n    COL_TRI(87, 126, 180),\n    COL_TRI(87, 86, 85),\n    COL_TRI(87, 88, 126),\n    COL_TRI(180, 128, 267),\n    COL_TRI(182, 88, 277),\n    COL_TRI(88, 184, 277),\n    COL_TRI(183, 88, 182),\n    COL_TRI(88, 85, 241),\n    COL_TRI(185, 242, 90),\n    COL_TRI(86, 185, 90),\n    COL_TRI(90, 242, 271),\n    COL_TRI(158, 90, 271),\n    COL_TRI(186, 277, 184),\n    COL_TRI(184, 241, 278),\n    COL_TRI(154, 232, 69),\n    COL_TRI(184, 278, 257),\n    COL_TRI(184, 257, 186),\n    COL_TRI(187, 190, 186),\n    COL_TRI(167, 168, 272),\n    COL_TRI(189, 194, 279),\n    COL_TRI(188, 194, 189),\n    COL_TRI(188, 120, 194),\n    COL_TRI(120, 188, 259),\n    COL_TRI(188, 280, 191),\n    COL_TRI(188, 189, 280),\n    COL_TRI(188, 281, 259),\n    COL_TRI(188, 260, 281),\n    COL_TRI(188, 192, 260),\n    COL_TRI(192, 121, 260),\n    COL_TRI(189, 279, 280),\n    COL_TRI(190, 280, 279),\n    COL_TRI(190, 191, 280),\n    COL_TRI(188, 191, 192),\n    COL_TRI(191, 190, 187),\n    COL_TRI(191, 187, 192),\n    COL_TRI(193, 281, 260),\n    COL_TRI(193, 259, 281),\n    COL_TRI(193, 246, 259),\n    COL_TRI(120, 259, 246),\n    COL_TRI(192, 187, 121),\n    COL_TRI(193, 260, 121),\n    COL_TRI(195, 282, 201),\n    COL_TRI(186, 279, 277),\n    COL_TRI(124, 261, 120),\n    COL_TRI(120, 199, 194),\n    COL_TRI(120, 261, 199),\n    COL_TRI(194, 198, 279),\n    COL_TRI(194, 199, 198),\n    COL_TRI(195, 202, 125),\n    COL_TRI(195, 201, 202),\n    COL_TRI(197, 198, 200),\n    COL_TRI(195, 200, 282),\n    COL_TRI(195, 283, 197),\n    COL_TRI(195, 196, 283),\n    COL_TRI(196, 182, 283),\n    COL_TRI(195, 183, 196),\n    COL_TRI(197, 283, 277),\n    COL_TRI(182, 277, 283),\n    COL_TRI(198, 197, 277),\n    COL_TRI(195, 197, 200),\n    COL_TRI(198, 199, 200),\n    COL_TRI(183, 182, 196),\n    COL_TRI(199, 261, 282),\n    COL_TRI(200, 199, 282),\n    COL_TRI(201, 282, 261),\n    COL_TRI(202, 201, 125),\n    COL_TRI(124, 201, 261),\n    COL_TRI(183, 195, 125),\n    COL_TRI(201, 124, 125),\n    COL_TRI(67, 170, 68),\n    COL_TRI(170, 171, 68),\n    COL_TRI(170, 67, 226),\n    COL_TRI(171, 63, 68),\n    COL_TRI(171, 170, 230),\n    COL_TRI(30, 203, 28),\n    COL_TRI(203, 30, 210),\n    COL_TRI(203, 207, 205),\n    COL_TRI(203, 205, 204),\n    COL_TRI(203, 204, 284),\n    COL_TRI(203, 208, 207),\n    COL_TRI(204, 206, 284),\n    COL_TRI(205, 174, 204),\n    COL_TRI(174, 206, 204),\n    COL_TRI(203, 284, 28),\n    COL_TRI(206, 28, 284),\n    COL_TRI(174, 205, 116),\n    COL_TRI(205, 207, 116),\n    COL_TRI(207, 208, 116),\n    COL_TRI(211, 234, 215),\n    COL_TRI(208, 209, 116),\n    COL_TRI(209, 208, 233),\n    COL_TRI(203, 285, 208),\n    COL_TRI(208, 285, 233),\n    COL_TRI(210, 32, 285),\n    COL_TRI(32, 233, 285),\n    COL_TRI(203, 210, 285),\n    COL_TRI(30, 32, 210),\n    COL_TRI(36, 211, 286),\n    COL_TRI(211, 255, 254),\n    COL_TRI(211, 254, 213),\n    COL_TRI(211, 213, 212),\n    COL_TRI(212, 76, 216),\n    COL_TRI(212, 216, 286),\n    COL_TRI(213, 76, 212),\n    COL_TRI(211, 212, 286),\n    COL_TRI(36, 286, 216),\n    COL_TRI(214, 213, 254),\n    COL_TRI(213, 214, 76),\n    COL_TRI(214, 254, 253),\n    COL_TRI(115, 253, 254),\n    COL_TRI(115, 254, 255),\n    COL_TRI(211, 215, 256),\n    COL_TRI(115, 255, 256),\n    COL_TRI(211, 256, 255),\n    COL_TRI(115, 256, 127),\n    COL_TRI(215, 127, 256),\n    COL_TRI(215, 234, 127),\n    COL_TRI(174, 59, 206),\n    COL_TRI(206, 59, 28),\n    COL_TRI(32, 77, 76),\n    COL_TRI(214, 32, 76),\n    COL_TRI(214, 233, 32),\n    COL_TRI(32, 30, 22),\n    COL_TRI(214, 209, 233),\n    COL_TRI(214, 253, 209),\n    COL_TRI(74, 127, 234),\n    COL_TRI(76, 23, 216),\n    COL_TRI(73, 140, 72),\n    COL_TRI(211, 36, 234),\n    COL_TRI(74, 234, 36),\n    COL_TRI(45, 136, 169),\n    COL_TRI(59, 29, 28),\n    COL_TRI(71, 51, 220),\n    COL_TRI(74, 35, 140),\n    COL_TRI(75, 25, 24),\n    COL_TRI(75, 217, 25),\n    COL_TRI(176, 151, 47),\n    COL_TRI_INIT(SURFACE_WATER, 28),\n    COL_TRI(290, 15, 287),\n    COL_TRI(287, 288, 109),\n    COL_TRI(109, 288, 289),\n    COL_TRI(16, 289, 288),\n    COL_TRI(15, 288, 287),\n    COL_TRI(15, 16, 288),\n    COL_TRI(287, 109, 112),\n    COL_TRI(109, 289, 110),\n    COL_TRI(290, 287, 112),\n    COL_TRI(119, 290, 112),\n    COL_TRI(291, 15, 290),\n    COL_TRI(290, 119, 291),\n    COL_TRI(119, 97, 291),\n    COL_TRI(289, 292, 106),\n    COL_TRI(289, 106, 110),\n    COL_TRI(289, 13, 292),\n    COL_TRI(289, 16, 13),\n    COL_TRI(101, 294, 293),\n    COL_TRI(292, 294, 101),\n    COL_TRI(292, 13, 294),\n    COL_TRI(293, 294, 13),\n    COL_TRI(98, 293, 97),\n    COL_TRI(293, 291, 97),\n    COL_TRI(293, 13, 12),\n    COL_TRI(293, 12, 291),\n    COL_TRI(292, 101, 106),\n    COL_TRI(101, 293, 98),\n    COL_TRI(291, 12, 15),\n    COL_TRI_INIT(SURFACE_WALL_MISC, 30),\n    COL_TRI(4, 7, 6),\n    COL_TRI(0, 1, 2),\n    COL_TRI(1, 3, 2),\n    COL_TRI(4, 3, 1),\n    COL_TRI(2, 3, 5),\n    COL_TRI(6, 7, 2),\n    COL_TRI(7, 8, 2),\n    COL_TRI(8, 9, 2),\n    COL_TRI(9, 0, 2),\n    COL_TRI(4, 0, 9),\n    COL_TRI(4, 8, 7),\n    COL_TRI(4, 1, 0),\n    COL_TRI(4, 6, 11),\n    COL_TRI(5, 3, 4),\n    COL_TRI(10, 5, 4),\n    COL_TRI(2, 5, 10),\n    COL_TRI(10, 4, 11),\n    COL_TRI(11, 6, 2),\n    COL_TRI(11, 2, 10),\n    COL_TRI(4, 9, 8),\n    COL_TRI(12, 14, 17),\n    COL_TRI(13, 14, 12),\n    COL_TRI(14, 18, 17),\n    COL_TRI(14, 19, 18),\n    COL_TRI(13, 19, 14),\n    COL_TRI(12, 17, 15),\n    COL_TRI(15, 17, 18),\n    COL_TRI(15, 18, 16),\n    COL_TRI(16, 18, 19),\n    COL_TRI(16, 19, 13),\n    COL_TRI_INIT(SURFACE_NOISE_DEFAULT, 16),\n    COL_TRI(271, 268, 266),\n    COL_TRI(271, 266, 43),\n    COL_TRI(266, 141, 43),\n    COL_TRI(271, 242, 142),\n    COL_TRI(271, 142, 268),\n    COL_TRI(242, 185, 181),\n    COL_TRI(242, 181, 142),\n    COL_TRI(185, 87, 181),\n    COL_TRI(269, 135, 130),\n    COL_TRI(130, 135, 258),\n    COL_TRI(269, 130, 265),\n    COL_TRI(138, 269, 265),\n    COL_TRI(138, 150, 269),\n    COL_TRI(136, 133, 150),\n    COL_TRI(136, 150, 138),\n    COL_TRI(136, 45, 133),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(19),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_null_start,       /*pos*/    15,    0,   202, /*yaw*/ 128), // unused, probably an early way to set initial position\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03,     /*pos*/     0, 2048,  2662, /*yaw*/   0),\n    SPECIAL_OBJECT(/*preset*/ special_spiky_tree,       /*pos*/  2272, -214, -1432),\n    SPECIAL_OBJECT(/*preset*/ special_spiky_tree,       /*pos*/   818,   10,   203),\n    SPECIAL_OBJECT(/*preset*/ special_spiky_tree,       /*pos*/  -820,   10,   201),\n    SPECIAL_OBJECT(/*preset*/ special_spiky_tree,       /*pos*/  1681, -214,  -132),\n    SPECIAL_OBJECT(/*preset*/ special_spiky_tree,       /*pos*/  2382, -214,  -843),\n    SPECIAL_OBJECT(/*preset*/ special_spiky_tree,       /*pos*/  -817,   10, -3630),\n    SPECIAL_OBJECT(/*preset*/ special_spiky_tree,       /*pos*/  2769, -214, -1523),\n    SPECIAL_OBJECT(/*preset*/ special_spiky_tree,       /*pos*/  2444, -214, -2330),\n    SPECIAL_OBJECT(/*preset*/ special_spiky_tree,       /*pos*/  2042, -214, -3032),\n    SPECIAL_OBJECT(/*preset*/ special_spiky_tree,       /*pos*/   824,   10, -3633),\n    SPECIAL_OBJECT(/*preset*/ special_spiky_tree,       /*pos*/ -2537, -214,  -759),\n    SPECIAL_OBJECT(/*preset*/ special_spiky_tree,       /*pos*/ -1640, -214, -3228),\n    SPECIAL_OBJECT(/*preset*/ special_spiky_tree,       /*pos*/ -2732, -214, -2166),\n    SPECIAL_OBJECT(/*preset*/ special_spiky_tree,       /*pos*/ -2446, -214, -1786),\n    SPECIAL_OBJECT(/*preset*/ special_spiky_tree,       /*pos*/ -2820, -214, -1317),\n    SPECIAL_OBJECT(/*preset*/ special_spiky_tree,       /*pos*/ -1868, -214,   -45),\n    SPECIAL_OBJECT_WITH_YAW_AND_PARAM(/*preset*/ special_wooden_door_warp, /*pos*/     0,    0,   461, /*yaw*/   0, /*bhvParam2*/ 1),\n    COL_WATER_BOX_INIT(1),\n    COL_WATER_BOX(0, -656, -2405, 674, -1074, 51),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/castle_courtyard/areas/1/geo.inc.c",
    "content": "// 0x0E000218\nconst GeoLayout castle_courtyard_geo_000218[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND(BACKGROUND_OCEAN_SKY, geo_skybox_main),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 12800, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(16, 0, 2000, 6000, 0, 0, 0, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, castle_courtyard_seg7_dl_070048B8),\n                    GEO_DISPLAY_LIST(LAYER_TRANSPARENT_DECAL, castle_courtyard_seg7_dl_07005698),\n                    GEO_DISPLAY_LIST(LAYER_ALPHA, castle_courtyard_seg7_dl_07005938),\n                    GEO_ASM(   0, geo_movtex_pause_control),\n                    GEO_ASM(0x2601, geo_movtex_draw_water_regions),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(0, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/castle_courtyard/areas/1/macro.inc.c",
    "content": "// 0x07006E20 - 0x07006E4A\nconst MacroObject castle_courtyard_seg7_macro_objs[] = {\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 225, /*pos*/  3180,    20,   330, /*bhvParam*/ DIALOG_158),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 135, /*pos*/ -3180,    20,   330, /*bhvParam*/ DIALOG_159),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/   0, /*pos*/   300,     0, -3600, /*bhvParam*/ DIALOG_102),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/   0, /*pos*/  -300,     0, -3600, /*bhvParam*/ DIALOG_160),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/castle_courtyard/areas/1/movtext.inc.c",
    "content": "// 0x07006E4C - 0x07006E7C\nstatic Movtex castle_courtyard_movtex_star_statue_water_data[] = {\n    MOV_TEX_INIT_LOAD(   1),\n    MOV_TEX_ROT_SPEED(   5),\n    MOV_TEX_ROT_SCALE(   3),\n    MOV_TEX_4_BOX_TRIS(-656, -2405),\n    MOV_TEX_4_BOX_TRIS(-656, -1074),\n    MOV_TEX_4_BOX_TRIS( 674, -1074),\n    MOV_TEX_4_BOX_TRIS( 674, -2405),\n    MOV_TEX_ROT(     ROTATE_COUNTER_CLOCKWISE),\n    MOV_TEX_ALPHA(    0x96),\n    MOV_TEX_DEFINE(  TEXTURE_WATER),\n    MOV_TEX_END(),\n};\n\nconst struct MovtexQuadCollection castle_courtyard_movtex_star_statue_water[] = {\n    {0, castle_courtyard_movtex_star_statue_water_data},\n    {-1, NULL},\n};\n"
  },
  {
    "path": "levels/castle_courtyard/areas/1/spire/geo.inc.c",
    "content": "// 0x0E000200\nconst GeoLayout castle_courtyard_geo_000200[] = {\n    GEO_CULLING_RADIUS(2600),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, castle_courtyard_seg7_dl_07005078),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/castle_courtyard/areas/1/spire/model.inc.c",
    "content": "// 0x070049E8 - 0x07004AC8\nstatic const Vtx castle_courtyard_seg7_vertex_070049E8[] = {\n    {{{     0,   4741,    -96}, 0, {   632,  -2850}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{     0,   3660,   -546}, 0, {     0,    990}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{  -358,   3662,   -375}, 0, {  1292,    990}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{     0,   2136,   -792}, 0, {   638,   -734}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{     0,   1751,  -1195}, 0, {     0,    990}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{  -554,   2139,   -518}, 0, {  2694,   -662}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{  -936,   1751,   -654}, 0, {  3566,    990}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{     0,   3660,   -546}, 0, {   238,     46}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{     0,   3431,   -733}, 0, {     0,    990}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{  -358,   3662,   -375}, 0, {  1560,     44}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{  -508,   3430,   -487}, 0, {  1850,    990}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{     0,   4741,    -96}, 0, {   628,  -2850}, {0xc3, 0xc3, 0xcd, 0xff}}},\n    {{{   359,   3662,   -375}, 0, {     0,    990}, {0xc3, 0xc3, 0xcd, 0xff}}},\n    {{{     0,   3660,   -546}, 0, {  1292,    990}, {0xc3, 0xc3, 0xcd, 0xff}}},\n};\n\n// 0x07004AC8 - 0x07004BB8\nstatic const Vtx castle_courtyard_seg7_vertex_07004AC8[] = {\n    {{{     0,   2136,   -792}, 0, {  2896,   -738}, {0xc3, 0xc3, 0xcd, 0xff}}},\n    {{{   555,   2139,   -518}, 0, {   840,   -658}, {0xc3, 0xc3, 0xcd, 0xff}}},\n    {{{     0,   1751,  -1195}, 0, {  3566,    990}, {0xc3, 0xc3, 0xcd, 0xff}}},\n    {{{   937,   1751,   -654}, 0, {     0,    990}, {0xc3, 0xc3, 0xcd, 0xff}}},\n    {{{     0,   3660,   -546}, 0, {  1580,     46}, {0xc3, 0xc3, 0xcd, 0xff}}},\n    {{{   359,   3662,   -375}, 0, {   256,     44}, {0xc3, 0xc3, 0xcd, 0xff}}},\n    {{{     0,   3431,   -733}, 0, {  1850,    990}, {0xc3, 0xc3, 0xcd, 0xff}}},\n    {{{   509,   3430,   -487}, 0, {     0,    990}, {0xc3, 0xc3, 0xcd, 0xff}}},\n    {{{     0,   4741,    -96}, 0, {   738,  -2776}, {0xdc, 0xdc, 0xe3, 0xff}}},\n    {{{   349,   3669,    156}, 0, {     0,    990}, {0xdc, 0xdc, 0xe3, 0xff}}},\n    {{{   359,   3662,   -375}, 0, {  1738,    990}, {0xdc, 0xdc, 0xe3, 0xff}}},\n    {{{   555,   2139,   -518}, 0, {  2982,   -824}, {0xdc, 0xdc, 0xe3, 0xff}}},\n    {{{   562,   2150,    244}, 0, {   446,   -846}, {0xdc, 0xdc, 0xe3, 0xff}}},\n    {{{   937,   1751,   -654}, 0, {  3426,    990}, {0xdc, 0xdc, 0xe3, 0xff}}},\n    {{{   945,   1751,    384}, 0, {     0,    990}, {0xdc, 0xdc, 0xe3, 0xff}}},\n};\n\n// 0x07004BB8 - 0x07004CA8\nstatic const Vtx castle_courtyard_seg7_vertex_07004BB8[] = {\n    {{{   349,   3669,    156}, 0, {   202,     36}, {0xdc, 0xdc, 0xe3, 0xff}}},\n    {{{   508,   3431,    227}, 0, {     0,    990}, {0xdc, 0xdc, 0xe3, 0xff}}},\n    {{{   359,   3662,   -375}, 0, {  1972,     72}, {0xdc, 0xdc, 0xe3, 0xff}}},\n    {{{   509,   3430,   -487}, 0, {  2344,    990}, {0xdc, 0xdc, 0xe3, 0xff}}},\n    {{{     0,   4741,    -96}, 0, {   968,  -2776}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -358,   3662,   -375}, 0, {     0,    990}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -348,   3669,    156}, 0, {  1738,    990}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -554,   2139,   -518}, 0, {   412,   -824}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -936,   1751,   -654}, 0, {     0,    990}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -561,   2150,    244}, 0, {  2948,   -846}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -944,   1751,    384}, 0, {  3426,    990}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -348,   3669,    156}, 0, {  2110,     36}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -358,   3662,   -375}, 0, {   340,     72}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -507,   3431,    227}, 0, {  2344,    990}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -508,   3430,   -487}, 0, {     0,    990}, {0x9c, 0x9c, 0xae, 0xff}}},\n};\n\n// 0x07004CA8 - 0x07004DA8\nstatic const Vtx castle_courtyard_seg7_vertex_07004CA8[] = {\n    {{{  -936,   1751,   -654}, 0, {  5364,  -7748}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{     0,   1751,  -1195}, 0, {     0,  -7748}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{     0,      0,  -1195}, 0, {     0,    990}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{     0,   2136,   -792}, 0, {  2036,    990}, {0xc3, 0xc3, 0xcd, 0xff}}},\n    {{{     0,   3431,   -733}, 0, {  1864,  -5480}, {0xc3, 0xc3, 0xcd, 0xff}}},\n    {{{   509,   3430,   -487}, 0, {  -952,  -5458}, {0xc3, 0xc3, 0xcd, 0xff}}},\n    {{{   555,   2139,   -518}, 0, { -1052,    990}, {0xc3, 0xc3, 0xcd, 0xff}}},\n    {{{   937,      0,   -654}, 0, { -3328,    990}, {0xc3, 0xc3, 0xcd, 0xff}}},\n    {{{     0,      0,  -1195}, 0, {  2012,    990}, {0xc3, 0xc3, 0xcd, 0xff}}},\n    {{{     0,   1751,  -1195}, 0, {  1612,  -7748}, {0xc3, 0xc3, 0xcd, 0xff}}},\n    {{{   937,   1751,   -654}, 0, { -3728,  -7748}, {0xc3, 0xc3, 0xcd, 0xff}}},\n    {{{  -936,      0,   -654}, 0, {  5364,    990}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{  -508,   3430,   -487}, 0, {  2960,  -5458}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{     0,   3431,   -733}, 0, {   136,  -5480}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{  -554,   2139,   -518}, 0, {  3056,    990}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{     0,   2136,   -792}, 0, {     0,    990}, {0x72, 0x72, 0x8c, 0xff}}},\n};\n\n// 0x07004DA8 - 0x07004EA8\nstatic const Vtx castle_courtyard_seg7_vertex_07004DA8[] = {\n    {{{   945,   1751,    384}, 0, { -3096,  -7748}, {0xdc, 0xdc, 0xe3, 0xff}}},\n    {{{   945,      0,    384}, 0, { -3092,    990}, {0xdc, 0xdc, 0xe3, 0xff}}},\n    {{{   937,   1751,   -654}, 0, {  2088,  -7748}, {0xdc, 0xdc, 0xe3, 0xff}}},\n    {{{   937,      0,   -654}, 0, {  2088,    990}, {0xdc, 0xdc, 0xe3, 0xff}}},\n    {{{   509,   3430,   -487}, 0, {  2000,  -5454}, {0xdc, 0xdc, 0xe3, 0xff}}},\n    {{{   508,   3431,    227}, 0, { -1560,  -5410}, {0xdc, 0xdc, 0xe3, 0xff}}},\n    {{{   555,   2139,   -518}, 0, {  2240,    990}, {0xdc, 0xdc, 0xe3, 0xff}}},\n    {{{   562,   2150,    244}, 0, { -1560,    990}, {0xdc, 0xdc, 0xe3, 0xff}}},\n    {{{  -936,   1751,   -654}, 0, { -1052,  -7748}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -936,      0,   -654}, 0, { -1052,    990}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -944,   1751,    384}, 0, {  4132,  -7748}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -944,      0,    384}, 0, {  4132,    990}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -508,   3430,   -487}, 0, {   208,  -5454}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -554,   2139,   -518}, 0, {     0,    990}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -507,   3431,    227}, 0, {  3772,  -5410}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -561,   2150,    244}, 0, {  3772,    990}, {0x9c, 0x9c, 0xae, 0xff}}},\n};\n\n// 0x07004EA8 - 0x07004ED8\nstatic const Vtx castle_courtyard_seg7_vertex_07004EA8[] = {\n    {{{   -25,   4639,    -96}, 0, {     0,      0}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{     0,   5253,    -96}, 0, {     0,      0}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{    26,   4639,    -96}, 0, {     0,      0}, {0x70, 0x70, 0x8a, 0xff}}},\n};\n\n// 0x07004ED8 - 0x07004FB0\nstatic const Gfx castle_courtyard_seg7_dl_07004ED8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_courtyard_seg7_vertex_070049E8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_07004AC8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_07004BB8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07004FB0 - 0x07005060\nstatic const Gfx castle_courtyard_seg7_dl_07004FB0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_courtyard_seg7_vertex_07004CA8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  0,  2, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(castle_courtyard_seg7_vertex_07004DA8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07005060 - 0x07005078\nstatic const Gfx castle_courtyard_seg7_dl_07005060[] = {\n    gsSPVertex(castle_courtyard_seg7_vertex_07004EA8, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07005078 - 0x07005110\nconst Gfx castle_courtyard_seg7_dl_07005078[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(castle_courtyard_seg7_dl_07004ED8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(castle_courtyard_seg7_dl_07004FB0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(castle_courtyard_seg7_dl_07005060),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_courtyard/geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"game/level_geo.h\"\n#include \"game/geo_misc.h\"\n#include \"game/camera.h\"\n#include \"game/moving_texture.h\"\n#include \"game/screen_transition.h\"\n#include \"game/paintings.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"levels/castle_courtyard/header.h\"\n\n#include \"levels/castle_courtyard/areas/1/spire/geo.inc.c\"\n#include \"levels/castle_courtyard/areas/1/geo.inc.c\"\n"
  },
  {
    "path": "levels/castle_courtyard/header.h",
    "content": "#ifndef CASTLE_COURTYARD_HEADER_H\n#define CASTLE_COURTYARD_HEADER_H\n\n#include \"types.h\"\n#include \"game/moving_texture.h\"\n\n// geo\nextern const GeoLayout castle_courtyard_geo_000200[];\nextern const GeoLayout castle_courtyard_geo_000218[];\n\n// leveldata\nextern const Gfx castle_courtyard_seg7_dl_070048B8[];\nextern const Gfx castle_courtyard_seg7_dl_07005078[];\nextern const Gfx castle_courtyard_seg7_dl_07005698[];\nextern const Gfx castle_courtyard_seg7_dl_07005938[];\nextern const Collision castle_courtyard_seg7_collision[];\nextern const MacroObject castle_courtyard_seg7_macro_objs[];\nextern const struct MovtexQuadCollection castle_courtyard_movtex_star_statue_water[];\n\n// script\nextern const LevelScript level_castle_courtyard_entry[];\n\n#endif\n"
  },
  {
    "path": "levels/castle_courtyard/level.yaml",
    "content": "# Princess Peach's Castle (Castle Courtyard)\nshort-name: castle_courtyard\nfull-name: Princess Peach's Castle (Castle Courtyard)\ntexture-file: [\"/texture.inc.c\"]\narea-count: 1\nobjects: []\nshared-path: []\n# loaded files\nskybox-bin: water\ntexture-bin: outside\neffects: false\nactor-bins: [group9]\ncommon-bin: [common0]\n"
  },
  {
    "path": "levels/castle_courtyard/leveldata.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"surface_terrains.h\"\n#include \"moving_texture_macros.h\"\n#include \"level_misc_macros.h\"\n#include \"macro_presets.h\"\n#include \"special_presets.h\"\n#include \"textures.h\"\n#include \"dialog_ids.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/castle_courtyard/texture.inc.c\"\n#include \"levels/castle_courtyard/areas/1/1/model.inc.c\"\n#include \"levels/castle_courtyard/areas/1/spire/model.inc.c\"\n#include \"levels/castle_courtyard/areas/1/2/model.inc.c\"\n#include \"levels/castle_courtyard/areas/1/3/model.inc.c\"\n#include \"levels/castle_courtyard/areas/1/collision.inc.c\"\n#include \"levels/castle_courtyard/areas/1/macro.inc.c\"\n#include \"levels/castle_courtyard/areas/1/movtext.inc.c\"\n"
  },
  {
    "path": "levels/castle_courtyard/script.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"behavior_data.h\"\n#include \"model_ids.h\"\n#include \"seq_ids.h\"\n#include \"segment_symbols.h\"\n#include \"level_commands.h\"\n\n#include \"game/level_update.h\"\n\n#include \"levels/scripts.h\"\n\n#include \"actors/common1.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/castle_courtyard/header.h\"\n\nstatic const LevelScript script_func_local_1[] = {\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/     0, 200, -1652, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvAmbientSounds),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -2700,   0, -1652, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(0x00), /*bhv*/ bhvBirdsSoundLoop),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/  2700,   0, -1652, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(0x01), /*bhv*/ bhvBirdsSoundLoop),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_2[] = {\n    OBJECT(/*model*/ MODEL_BOO, /*pos*/ -3217, 100,  -101, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvCourtyardBooTriplet),\n    OBJECT(/*model*/ MODEL_BOO, /*pos*/  3317, 100, -1701, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvCourtyardBooTriplet),\n    OBJECT(/*model*/ MODEL_BOO, /*pos*/   -71,   1, -1387, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvCourtyardBooTriplet),\n    RETURN(),\n};\n\nconst LevelScript level_castle_courtyard_entry[] = {\n    INIT_LEVEL(),\n    LOAD_MIO0        (/*seg*/ 0x07, _castle_courtyard_segment_7SegmentRomStart, _castle_courtyard_segment_7SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x0A, _water_skybox_mio0SegmentRomStart, _water_skybox_mio0SegmentRomEnd),\n    LOAD_MIO0_TEXTURE(/*seg*/ 0x09, _outside_mio0SegmentRomStart, _outside_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x05, _group9_mio0SegmentRomStart, _group9_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0C, _group9_geoSegmentRomStart,  _group9_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x08, _common0_mio0SegmentRomStart, _common0_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0F, _common0_geoSegmentRomStart,  _common0_geoSegmentRomEnd),\n    ALLOC_LEVEL_POOL(),\n    MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),\n    JUMP_LINK(script_func_global_1),\n    JUMP_LINK(script_func_global_10),\n    LOAD_MODEL_FROM_GEO(MODEL_COURTYARD_SPIKY_TREE,  spiky_tree_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_COURTYARD_WOODEN_DOOR, wooden_door_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_03,     castle_courtyard_geo_000200),\n\n    AREA(/*index*/ 1, castle_courtyard_geo_000218),\n        OBJECT(/*model*/ MODEL_BOO,  /*pos*/ -2360, -100, -2712, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(1) | BPARAM2(WARP_NODE_05), /*bhv*/ bhvBooWithCage),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/     0,   51, -1000, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvLaunchStarCollectWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/     0,   51, -1000, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0B), /*bhv*/ bhvLaunchDeathWarp),\n        WARP_NODE(/*id*/ WARP_NODE_05,    /*destLevel*/ LEVEL_BBH,              /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_0A,    /*destLevel*/ LEVEL_CASTLE_COURTYARD, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_0B,    /*destLevel*/ LEVEL_CASTLE_COURTYARD, /*destArea*/ 1, /*destNode*/ WARP_NODE_0B, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_01,    /*destLevel*/ LEVEL_CASTLE,           /*destArea*/ 1, /*destNode*/ WARP_NODE_02, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH, /*destLevel*/ LEVEL_CASTLE_GROUNDS,   /*destArea*/ 1, /*destNode*/ WARP_NODE_03, /*flags*/ WARP_NO_CHECKPOINT),\n        JUMP_LINK(script_func_local_1),\n        JUMP_LINK(script_func_local_2),\n        TERRAIN(/*terrainData*/ castle_courtyard_seg7_collision),\n        MACRO_OBJECTS(/*objList*/ castle_courtyard_seg7_macro_objs),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0000, /*seq*/ SEQ_SOUND_PLAYER),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_STONE),\n    END_AREA(),\n\n    FREE_LEVEL_POOL(),\n    MARIO_POS(/*area*/ 1, /*yaw*/ 0, /*pos*/ -14, 0, -201),\n    CALL(/*arg*/ 0, /*func*/ lvl_init_or_update),\n    CALL_LOOP(/*arg*/ 1, /*func*/ lvl_init_or_update),\n    CLEAR_LEVEL(),\n    SLEEP_BEFORE_EXIT(/*frames*/ 1),\n    EXIT(),\n};\n"
  },
  {
    "path": "levels/castle_courtyard/texture.inc.c",
    "content": "// Blank File\n\n"
  },
  {
    "path": "levels/castle_grounds/areas/1/1/model.inc.c",
    "content": "// 0x07003000 - 0x070030F0\nstatic const Vtx castle_grounds_seg7_vertex_07003000[] = {\n    {{{  3784,  -1330,    590}, 0, {     0,    906}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{  5019,  -1330,    140}, 0, {     0,  -5654}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{  4897,   -972,   -194}, 0, {  3294,  -5652}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{  3662,   -972,    254}, 0, {  3294,    906}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{ -3541,   -921,  -3361}, 0, {  1542,  -2588}, {0xa0, 0xa0, 0xa0, 0xff}}},\n    {{{ -4686,   -921,  -3361}, 0, {  1542,   3126}, {0xa0, 0xa0, 0xa0, 0xff}}},\n    {{{ -4686,   -869,  -3151}, 0, {   494,   3126}, {0xa0, 0xa0, 0xa0, 0xff}}},\n    {{{  3495,   -665,   -201}, 0, {     0,  -1480}, {0xa0, 0xa0, 0xa0, 0xff}}},\n    {{{  4597,   -665,  -1016}, 0, {  1502,   5076}, {0xa0, 0xa0, 0xa0, 0xff}}},\n    {{{  3362,   -665,   -567}, 0, {  1502,  -1480}, {0xa0, 0xa0, 0xa0, 0xff}}},\n    {{{  4730,   -665,   -651}, 0, {     0,   5076}, {0xa0, 0xa0, 0xa0, 0xff}}},\n    {{{  3495,   -869,   -201}, 0, {  2848,  -1480}, {0xa0, 0xa0, 0xa0, 0xff}}},\n    {{{  4897,   -921,   -194}, 0, {     0,   5076}, {0xa0, 0xa0, 0xa0, 0xff}}},\n    {{{  4730,   -869,   -651}, 0, {  2848,   5076}, {0xa0, 0xa0, 0xa0, 0xff}}},\n    {{{  3662,   -921,    254}, 0, {     0,  -1480}, {0xa0, 0xa0, 0xa0, 0xff}}},\n};\n\n// 0x070030F0 - 0x070031E0\nstatic const Vtx castle_grounds_seg7_vertex_070030F0[] = {\n    {{{ -3481,   -716,  -3361}, 0, {  1542,  -2886}, {0xa0, 0xa0, 0xa0, 0xff}}},\n    {{{ -3912,   -716,  -3151}, 0, {   494,   -736}, {0xa0, 0xa0, 0xa0, 0xff}}},\n    {{{ -3481,   -716,  -3151}, 0, {   494,  -2886}, {0xa0, 0xa0, 0xa0, 0xff}}},\n    {{{ -3788,   -716,  -3361}, 0, {  1542,  -1352}, {0xa0, 0xa0, 0xa0, 0xff}}},\n    {{{ -3541,   -921,  -3361}, 0, {  1542,  -2588}, {0xa0, 0xa0, 0xa0, 0xff}}},\n    {{{ -4686,   -869,  -3151}, 0, {   494,   3126}, {0xa0, 0xa0, 0xa0, 0xff}}},\n    {{{ -3912,   -869,  -3151}, 0, {   494,   -736}, {0xa0, 0xa0, 0xa0, 0xff}}},\n    {{{ -4796,   -511,   -168}, 0, {     2, -18178}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1023,   -511,   -162}, 0, {     0,    652}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3225,   -511,  -1871}, 0, {  8496, -10336}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3532,   -511,  -1871}, 0, {  8496, -11868}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3532,   -511,  -2178}, 0, { 10030, -11868}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3515,   -511,  -3151}, 0, { 14884, -11784}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1023,   -511,  -2553}, 0, { 11900,    652}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3225,   -511,  -2178}, 0, { 10030, -10336}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070031E0 - 0x070032E0\nstatic const Vtx castle_grounds_seg7_vertex_070031E0[] = {\n    {{{ -3515,   -511,  -3151}, 0, { 14884, -28136}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3532,   -511,  -2178}, 0, { 10030, -28220}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3225,   -511,  -2178}, 0, { 10030, -26688}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3481,  -1228,  -3663}, 0, {   990,      0}, {0x67, 0x67, 0x69, 0xff}}},\n    {{{ -4703,  -1228,  -3663}, 0, {   990,   6066}, {0x67, 0x67, 0x69, 0xff}}},\n    {{{ -3541,   -972,  -3361}, 0, { -1346,    270}, {0x67, 0x67, 0x69, 0xff}}},\n    {{{ -4686,   -972,  -3361}, 0, { -1346,   5982}, {0x67, 0x67, 0x69, 0xff}}},\n    {{{  3362,   -511,   -567}, 0, {  1990,   6186}, {0xa0, 0xa0, 0xa0, 0xff}}},\n    {{{  4597,   -511,  -1016}, 0, {  4232,  12350}, {0xa0, 0xa0, 0xa0, 0xff}}},\n    {{{  3072,   -511,  -2741}, 0, { 12840,   4738}, {0xa0, 0xa0, 0xa0, 0xff}}},\n    {{{  5052,   -511,  -2053}, 0, {  9404,  14616}, {0xa0, 0xa0, 0xa0, 0xff}}},\n    {{{  4407,   -511,  -3689}, 0, { 17568,  11398}, {0xa0, 0xa0, 0xa0, 0xff}}},\n    {{{  3482,   -511,  -3663}, 0, { 17440,   6782}, {0xa0, 0xa0, 0xa0, 0xff}}},\n    {{{ -4796,   -511,   -168}, 0, {     2, -18178}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3515,   -511,  -3151}, 0, { 14884, -11784}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4796,   -511,  -3151}, 0, { 14884, -18178}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070032E0 - 0x07003370\nstatic const Vtx castle_grounds_seg7_vertex_070032E0[] = {\n    {{{  2321,   -511,   -162}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3072,   -511,  -2741}, 0, { 12840,   4738}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    83,   -511,  -2766}, 0, { 12964, -10176}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    83,   -511,   -162}, 0, {     0, -10176}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3362,   -511,   -567}, 0, {  1990,   6186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    83,   -511,   -162}, 0, {     0, -10176}, {0x58, 0x58, 0x62, 0xff}}},\n    {{{    83,   -511,  -2766}, 0, { 12964, -10176}, {0x58, 0x58, 0x62, 0xff}}},\n    {{{ -1023,   -511,   -162}, 0, {     0, -15700}, {0x58, 0x58, 0x62, 0xff}}},\n    {{{ -1023,   -511,  -2553}, 0, { 11900, -15700}, {0x58, 0x58, 0x62, 0xff}}},\n};\n\n// 0x07003370 - 0x070033B0\nstatic const Vtx castle_grounds_seg7_vertex_07003370[] = {\n    {{{  -562,    803,  -3718}, 0, {     0,      2}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{   563,    803,  -3206}, 0, {   990,    990}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{   563,    803,  -3718}, 0, {   990,      2}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{  -562,    803,  -3206}, 0, {     0,    990}, {0x70, 0x70, 0x8a, 0xff}}},\n};\n\n// 0x070033B0 - 0x07003490\nstatic const Vtx castle_grounds_seg7_vertex_070033B0[] = {\n    {{{  3482,   -511,  -3663}, 0, {     0,    990}, {0xa0, 0xa0, 0xa0, 0xff}}},\n    {{{  4407,   -511,  -3689}, 0, {  4586,    990}, {0xa0, 0xa0, 0xa0, 0xff}}},\n    {{{  4409,    545,  -5437}, 0, {  4840,  -9200}, {0xa0, 0xa0, 0xa0, 0xff}}},\n    {{{  -450,    811,   -162}, 0, { -3510,   1086}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   451,    906,   -796}, 0, {   990,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -450,    906,   -796}, 0, { -3510,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3482,   -511,  -3663}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4409,    545,  -5437}, 0, {  4840,  -9200}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3468,    545,  -5438}, 0, {   148,  -9316}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   451,    906,  -1512}, 0, {   990,  -5654}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -450,    803,  -2127}, 0, { -3510,  -8720}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -450,    906,  -1512}, 0, { -3510,  -5654}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   451,    803,  -2127}, 0, {   990,  -8720}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   451,    811,   -162}, 0, {   990,   1086}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07003490 - 0x070034D0\nstatic const Vtx castle_grounds_seg7_vertex_07003490[] = {\n    {{{  3201,   -506,  -3347}, 0, {  2522,  -2076}, {0x58, 0x58, 0x62, 0xff}}},\n    {{{  2875,   -506,  -3022}, 0, { -2074,  -2076}, {0x58, 0x58, 0x62, 0xff}}},\n    {{{  3419,   -511,  -3130}, 0, {  2522,    990}, {0x58, 0x58, 0x62, 0xff}}},\n    {{{  3093,   -511,  -2804}, 0, { -2074,    990}, {0x58, 0x58, 0x62, 0xff}}},\n};\n\n// 0x070034D0 - 0x070035B0\nstatic const Vtx castle_grounds_seg7_vertex_070034D0[] = {\n    {{{  1846,   3174,  -6131}, 0, { -8192,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1842,   3174,  -6143}, 0, {  1010,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1846,   3174,  -3571}, 0, { -8212,  -5398}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   945,   3174,  -3574}, 0, { -5966,  -5398}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   945,   3174,  -4199}, 0, { -5960,  -3838}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3834,   3349,  -6646}, 0, {  1310,  -1594}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{ -3154,   2339,  -6614}, 0, {  -286,    990}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{ -4361,   2339,  -7116}, 0, {  2974,    990}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{  4362,   2339,  -7116}, 0, {  -542,    990}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{  3155,   2339,  -6614}, 0, {  2720,    990}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{  3835,   3349,  -6646}, 0, {  1122,  -1594}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{  3484,   2339,  -7274}, 0, {     0,    990}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{ -3481,   2339,  -7274}, 0, { 17348,    990}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{  1846,   3174,  -6131}, 0, {  4056,  -2540}, {0x99, 0x99, 0xac, 0xff}}},\n};\n\n// 0x070035B0 - 0x070036B0\nstatic const Vtx castle_grounds_seg7_vertex_070035B0[] = {\n    {{{ -3481,   2339,  -7274}, 0, { -1860,   2712}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{ -2869,   2662,  -6131}, 0, {   990,    990}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{ -1842,   3174,  -6143}, 0, {   964,  -1872}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{ -3481,   2339,  -7274}, 0, { 17348,    990}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{ -1842,   3174,  -6143}, 0, { 13260,  -2518}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{  1846,   3174,  -6131}, 0, {  4056,  -2540}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{  3484,   2339,  -7274}, 0, {  2820,   2718}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  1846,   3174,  -6131}, 0, {     0,  -1866}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  2870,   2662,  -6131}, 0, {     0,    990}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -1842,   3174,  -6143}, 0, {  1010,    990}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{ -1842,   3174,  -3583}, 0, {   990,  -5398}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{   945,   3174,  -3574}, 0, { -5966,  -5398}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{   945,   3174,  -4199}, 0, { -5960,  -3838}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{ -3481,   2339,  -3663}, 0, {  -540,   1244}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{ -3788,   2339,  -3048}, 0, {  1170,   1244}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{ -3212,   3349,  -3009}, 0, {   616,  -1602}, {0x70, 0x70, 0x8a, 0xff}}},\n};\n\n// 0x070036B0 - 0x070037B0\nstatic const Vtx castle_grounds_seg7_vertex_070036B0[] = {\n    {{{  2867,   2662,  -3356}, 0, {  3576,   -560}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   898,   2867,  -2998}, 0, { -1416,   -962}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2560,   2339,  -2741}, 0, {  2522,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   898,   2867,  -2998}, 0, {   876,  -1252}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1024,   2460,  -2127}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1536,   2339,  -2536}, 0, {  1632,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2559,   2339,  -2741}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1535,   2339,  -2536}, 0, {  2574,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -897,   2867,  -2998}, 0, {  3910,   -962}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2866,   2662,  -3356}, 0, { -1082,   -560}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1842,   3174,  -3583}, 0, {  1310,  -2196}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -897,   2867,  -2998}, 0, {    26,   1098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   898,   2867,  -2998}, 0, {  4506,   1086}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1846,   3174,  -3571}, 0, {  6866,   -544}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1842,   3174,  -3583}, 0, { -2336,   -542}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1846,   3174,  -3571}, 0, {  1182,  -2174}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070037B0 - 0x07003890\nstatic const Vtx castle_grounds_seg7_vertex_070037B0[] = {\n    {{{  1846,   3174,  -3571}, 0, { -5396,  -1866}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2867,   2662,  -3356}, 0, { -5934,    984}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2870,   2662,  -6131}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1846,   3174,  -6131}, 0, {   990,  -1866}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1024,   2460,  -2127}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   945,   2867,  -3540}, 0, {  2644,  -1528}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   466,   4069,  -2998}, 0, {     0,  -3782}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   3584,  -2047}, 0, {     0,  -1070}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   532,   2652,  -2047}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   532,   2652,  -2846}, 0, {  1502,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   3584,  -2846}, 0, {  1502,  -1070}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3484,   2339,  -7274}, 0, {  3842,   2274}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2870,   2662,  -6131}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2867,   2662,  -3356}, 0, { -5934,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07003890 - 0x07003980\nstatic const Vtx castle_grounds_seg7_vertex_07003890[] = {\n    {{{   898,   2867,  -2998}, 0, { -1416,   -962}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1536,   2339,  -2536}, 0, {   -80,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2560,   2339,  -2741}, 0, {  2522,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3213,   3349,  -3009}, 0, {   502,  -1818}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3584,   2339,  -2639}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3789,   2339,  -3048}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3173,   2339,  -2434}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2559,   2339,  -2741}, 0, {  1682,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3212,   3349,  -3009}, 0, {   522,  -1856}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2867,   2662,  -3356}, 0, { -5934,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3482,   2339,  -3663}, 0, { -5166,   2274}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3484,   2339,  -7274}, 0, {  3842,   2274}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3788,   2339,  -3048}, 0, {     0,    990}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{ -3583,   2339,  -2639}, 0, {  1110,    990}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{ -3212,   3349,  -3009}, 0, {   698,  -1818}, {0x91, 0x91, 0xa5, 0xff}}},\n};\n\n// 0x07003980 - 0x07003A60\nstatic const Vtx castle_grounds_seg7_vertex_07003980[] = {\n    {{{  -531,   2652,  -2846}, 0, {  -540,   1004}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{     0,   3584,  -2047}, 0, {   990,  -1054}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{     0,   3584,  -2846}, 0, {  -540,  -1054}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{  -531,   2652,  -2047}, 0, {   990,   1004}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{  3213,   3349,  -3009}, 0, {   826,  -1878}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{  2867,   2662,  -3356}, 0, {  -524,    -20}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{  2560,   2339,  -2741}, 0, {   990,    990}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{ -4361,   2339,  -7116}, 0, {  -540,   1244}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{ -4369,   2339,  -6429}, 0, {  1170,   1244}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{ -3834,   3349,  -6646}, 0, {   616,  -1602}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{  1024,   2460,  -2127}, 0, {  5078,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   466,   4069,  -2998}, 0, {  3686,  -3574}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -465,   4069,  -2998}, 0, {  1360,  -3574}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1023,   2460,  -2127}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07003A60 - 0x07003B60\nstatic const Vtx castle_grounds_seg7_vertex_07003A60[] = {\n    {{{ -4005,   2339,  -6151}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3547,   2339,  -6145}, 0, {  1110,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3834,   3349,  -6646}, 0, {   382,  -1818}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3835,   3349,  -6646}, 0, {   698,  -1818}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4006,   2339,  -6151}, 0, {  1110,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4370,   2339,  -6429}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1535,   2339,  -2536}, 0, {     0,    990}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{ -1023,   2460,  -2127}, 0, {  1632,    990}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{  -897,   2867,  -2998}, 0, {   722,  -1252}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{ -2866,   2662,  -3356}, 0, {  6894,      0}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{ -2869,   2662,  -6131}, 0, {     0,      0}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{ -3481,   2339,  -7274}, 0, { -2882,   1690}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{ -3481,   2339,  -3663}, 0, {  6126,   1698}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{ -2866,   2662,  -3356}, 0, {  6922,   1034}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{ -1842,   3174,  -3583}, 0, {  6356,  -1820}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{ -2869,   2662,  -6131}, 0, {    -4,   1040}, {0x99, 0x99, 0xac, 0xff}}},\n};\n\n// 0x07003B60 - 0x07003C50\nstatic const Vtx castle_grounds_seg7_vertex_07003B60[] = {\n    {{{ -1842,   3174,  -3583}, 0, {  6356,  -1820}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{ -1842,   3174,  -6143}, 0, {     0,  -1820}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{ -2869,   2662,  -6131}, 0, {    -4,   1040}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{  -944,   2867,  -3540}, 0, { -1684,  -1098}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{ -1023,   2460,  -2127}, 0, {   990,   1416}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{  -465,   4069,  -2998}, 0, {   990,  -3354}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{  3213,   3349,  -3009}, 0, {   934,  -2690}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{  3482,   2339,  -3663}, 0, {     0,    998}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{  2867,   2662,  -3356}, 0, {  1974,   -172}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{  3213,   3349,  -3009}, 0, {   522,  -1856}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  3789,   2339,  -3048}, 0, {     0,    990}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  3482,   2339,  -3663}, 0, {  1682,    990}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -3547,   2339,  -6145}, 0, {     0,    990}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -3154,   2339,  -6614}, 0, {  1682,    990}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -3834,   3349,  -6646}, 0, {   522,  -1856}, {0xc4, 0xc4, 0xd0, 0xff}}},\n};\n\n// 0x07003C50 - 0x07003D40\nstatic const Vtx castle_grounds_seg7_vertex_07003C50[] = {\n    {{{  3835,   3349,  -6646}, 0, {   616,  -1602}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  4370,   2339,  -6429}, 0, {  1170,   1244}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  4362,   2339,  -7116}, 0, {  -540,   1244}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -2559,   2339,  -2741}, 0, {   -58,   1528}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -2866,   2662,  -3356}, 0, {  1366,     66}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -3212,   3349,  -3009}, 0, {   -16,  -1878}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  3213,   3349,  -3009}, 0, {  1128,  -1856}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  2560,   2339,  -2741}, 0, {     0,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  3174,   2339,  -2434}, 0, {  1682,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -4369,   2339,  -6429}, 0, {     0,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -4005,   2339,  -6151}, 0, {  1110,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -3834,   3349,  -6646}, 0, {   698,  -1818}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  3835,   3349,  -6646}, 0, {   522,  -1856}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  3155,   2339,  -6614}, 0, {  1682,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  3548,   2339,  -6145}, 0, {     0,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n};\n\n// 0x07003D40 - 0x07003E00\nstatic const Vtx castle_grounds_seg7_vertex_07003D40[] = {\n    {{{ -2866,   2662,  -3356}, 0, {  -894,   -268}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -3481,   2339,  -3663}, 0, {   852,    898}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -3212,   3349,  -3009}, 0, {    26,  -2412}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -3583,   2339,  -2639}, 0, {     0,    990}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{ -3173,   2339,  -2434}, 0, {  1110,    990}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{ -3212,   3349,  -3009}, 0, {   382,  -1818}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  3213,   3349,  -3009}, 0, {   620,  -1520}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  3174,   2339,  -2434}, 0, {     0,    990}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  3584,   2339,  -2639}, 0, {   990,    990}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  3835,   3349,  -6646}, 0, {   382,  -1818}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  3548,   2339,  -6145}, 0, {  1110,    990}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  4006,   2339,  -6151}, 0, {     0,    990}, {0xe5, 0xe5, 0xea, 0xff}}},\n};\n\n// 0x07003E00 - 0x07003EF0\nstatic const Vtx castle_grounds_seg7_vertex_07003E00[] = {\n    {{{ -3180,   2346,  -2419}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3180,   2243,  -2419}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2554,   2243,  -2732}, 0, {  6952,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3180,    900,  -2419}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3180,    797,  -2419}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2555,    797,  -2730}, 0, {  6952,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2555,    900,  -2730}, 0, {  6952,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3589,    798,  -2630}, 0, { -3640,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3798,    798,  -3044}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3798,    906,  -3044}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3589,    906,  -2630}, 0, { -3640,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3181,    798,  -2419}, 0, { -4032,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3589,    906,  -2630}, 0, {   460,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3181,    906,  -2419}, 0, { -4032,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3589,    798,  -2630}, 0, {   460,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07003EF0 - 0x07003FE0\nstatic const Vtx castle_grounds_seg7_vertex_07003EF0[] = {\n    {{{  -532,   2650,  -2047}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -414,   2616,  -2007}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   3375,  -2007}, 0, {  8872,   1010}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3180,   2346,  -2419}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2555,   2243,  -2730}, 0, {  6952,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2555,   2346,  -2730}, 0, {  6952,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3181,   2239,  -2419}, 0, { -4032,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3589,   2239,  -2630}, 0, {   460,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3589,   2347,  -2630}, 0, {   460,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3181,   2347,  -2419}, 0, { -4032,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3589,   2239,  -2630}, 0, { -3640,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3798,   2239,  -3044}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3798,   2347,  -3044}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3589,   2347,  -2630}, 0, { -3640,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   3584,  -2047}, 0, { 10700,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07003FE0 - 0x070040D0\nstatic const Vtx castle_grounds_seg7_vertex_07003FE0[] = {\n    {{{  -531,   2120,  -2047}, 0, { -1564,    -20}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   415,   2207,  -2007}, 0, {  7888,    952}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -414,   2207,  -2007}, 0, {  -386,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   3375,  -2007}, 0, {  8872,   1010}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   415,   2616,  -2007}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   533,   2650,  -2047}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   3584,  -2047}, 0, { 10700,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -531,   2120,  -2047}, 0, { -4060,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -414,   2616,  -2007}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -532,   2650,  -2047}, 0, {  1296,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -414,   2207,  -2007}, 0, { -3142,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   533,   2650,  -2047}, 0, {  1296,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   415,   2207,  -2007}, 0, { -3142,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   532,   2120,  -2047}, 0, { -4060,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   415,   2616,  -2007}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070040D0 - 0x070041C0\nstatic const Vtx castle_grounds_seg7_vertex_070040D0[] = {\n    {{{  2556,    906,  -2730}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1537,    803,  -2526}, 0, { 10188,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2556,    803,  -2730}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -531,   2120,  -2047}, 0, { -1564,    -20}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   532,   2120,  -2047}, 0, {  9064,    -70}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   415,   2207,  -2007}, 0, {  7888,    952}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2555,   2243,  -2730}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1536,   2346,  -2526}, 0, { 10188,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2555,   2346,  -2730}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1536,   2243,  -2526}, 0, { 10188,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2555,    797,  -2730}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1536,    900,  -2526}, 0, { 10188,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2555,    900,  -2730}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1536,    797,  -2526}, 0, { 10188,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1537,    906,  -2526}, 0, { 10188,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070041C0 - 0x070042B0\nstatic const Vtx castle_grounds_seg7_vertex_070041C0[] = {\n    {{{   554,    605,  -2127}, 0, {  4998,    858}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   554,    803,  -2127}, 0, {  4998,    364}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   554,    811,   -162}, 0, {    94,    354}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2556,   2346,  -2730}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1537,   2243,  -2526}, 0, { 10188,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2556,   2243,  -2730}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1537,   2346,  -2526}, 0, { 10188,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1537,   2346,  -2526}, 0, {   -22,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1024,   2467,  -2116}, 0, {  6646,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1024,   2363,  -2116}, 0, {  6456,    988}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1537,   2243,  -2526}, 0, {  -206,    974}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1023,   2363,  -2116}, 0, {  -584,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1024,   2363,  -2116}, 0, { 19854,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1024,   2467,  -2116}, 0, { 19854,    -48}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1023,   2467,  -2116}, 0, {  -584,    -48}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070042B0 - 0x07004390\nstatic const Vtx castle_grounds_seg7_vertex_070042B0[] = {\n    {{{   554,    803,  -2229}, 0, {  5254,    364}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   554,    957,  -2127}, 0, {  4998,    -20}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   554,    964,   -258}, 0, {   336,    -30}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   554,    811,   -162}, 0, {    94,    354}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   554,    605,  -2127}, 0, {  4998,    858}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   554,    607,   -162}, 0, {    96,    862}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3797,    900,  -3044}, 0, {   990,      0}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{ -3490,    797,  -3667}, 0, { -5946,    990}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{ -3797,    797,  -3044}, 0, {   990,    990}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{ -3490,    900,  -3667}, 0, { -5946,      0}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{ -3797,   2346,  -3044}, 0, {   990,      0}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{ -3490,   2243,  -3667}, 0, { -5946,    990}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{ -3797,   2243,  -3044}, 0, {   990,    990}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{ -3490,   2346,  -3667}, 0, { -5946,      0}, {0x72, 0x72, 0x8c, 0xff}}},\n};\n\n// 0x07004390 - 0x07004490\nstatic const Vtx castle_grounds_seg7_vertex_07004390[] = {\n    {{{ -3588,    900,  -2630}, 0, {   478,      0}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{ -3797,    900,  -3044}, 0, { -4150,      0}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{ -3797,    797,  -3044}, 0, { -4150,    990}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{ -3588,    797,  -2630}, 0, {   480,    990}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{ -3588,   2346,  -2630}, 0, {   478,      0}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{ -3797,   2243,  -3044}, 0, { -4150,    990}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{ -3588,   2243,  -2630}, 0, {   480,    990}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{ -3797,   2346,  -3044}, 0, { -4150,      0}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{ -1536,   2243,  -2526}, 0, {  -206,    974}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{ -1023,   2467,  -2116}, 0, {  6646,      0}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{ -1536,   2346,  -2526}, 0, {   -22,      0}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{ -1023,   2363,  -2116}, 0, {  6456,    988}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{ -3180,    900,  -2419}, 0, {   990,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -3588,    797,  -2630}, 0, { -3584,    990}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -3180,    797,  -2419}, 0, {   990,    990}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -3588,    900,  -2630}, 0, { -3584,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n};\n\n// 0x07004490 - 0x07004590\nstatic const Vtx castle_grounds_seg7_vertex_07004490[] = {\n    {{{ -3180,   2346,  -2419}, 0, {   990,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -3588,   2243,  -2630}, 0, { -3584,    990}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -3180,   2243,  -2419}, 0, {   990,    990}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -3588,   2346,  -2630}, 0, { -3584,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  2555,    906,  -2732}, 0, { -5992,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  3181,    798,  -2419}, 0, {   990,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  3181,    906,  -2419}, 0, {   990,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  2555,    798,  -2732}, 0, { -5992,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  2555,   2347,  -2732}, 0, { -5992,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  2555,   2239,  -2732}, 0, { -5992,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  3181,   2239,  -2419}, 0, {   990,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  3181,   2347,  -2419}, 0, {   990,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  3798,    798,  -3044}, 0, { -6116,    990}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  3491,    798,  -3667}, 0, {   990,    990}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  3491,    906,  -3667}, 0, {   990,    -58}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  3798,    906,  -3044}, 0, { -6116,    -58}, {0xe5, 0xe5, 0xea, 0xff}}},\n};\n\n// 0x07004590 - 0x07004640\nstatic const Vtx castle_grounds_seg7_vertex_07004590[] = {\n    {{{  3798,   2239,  -3044}, 0, { -6116,    990}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  3491,   2347,  -3667}, 0, {   990,    -58}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  3798,   2347,  -3044}, 0, { -6116,    -58}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  3491,   2239,  -3667}, 0, {   990,    990}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  -553,    607,   -162}, 0, {  4998,    862}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -553,    803,  -2127}, 0, {    96,    364}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -553,    604,  -2127}, 0, {    96,    862}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -553,    811,   -162}, 0, {  5000,    354}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -553,    957,  -2127}, 0, {    98,    -20}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -553,    803,  -2229}, 0, {  -156,    364}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -553,    964,   -264}, 0, {  4744,    -30}, {0x9c, 0x9c, 0xae, 0xff}}},\n};\n\n// 0x07004640 - 0x07004700\nstatic const Vtx castle_grounds_seg7_vertex_07004640[] = {\n    {{{ -5786,  -1228,  -6147}, 0, {     0,    990}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{ -4044,  -1228,  -5557}, 0, {  1146,  -2564}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{ -4044,  -1228,  -6069}, 0, {   124,  -2564}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{ -3481,  -1228,  -3663}, 0, {  4928,  -3686}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{ -3481,  -1228,  -6149}, 0, {     0,  -3688}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{ -5786,  -1228,  -3663}, 0, {  4926,    990}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{ -3532,  -1228,  -5557}, 0, {  1146,  -3586}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{ -3532,  -1228,  -6069}, 0, {   124,  -3586}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{   554,    607,   -162}, 0, {   948,    972}, {0x58, 0x58, 0x62, 0xff}}},\n    {{{  -553,    607,   -162}, 0, {   948,      0}, {0x58, 0x58, 0x62, 0xff}}},\n    {{{  -553,    604,  -2127}, 0, {     0,      0}, {0x58, 0x58, 0x62, 0xff}}},\n    {{{   554,    605,  -2127}, 0, {     0,    972}, {0x58, 0x58, 0x62, 0xff}}},\n};\n\n// 0x07004700 - 0x070047F0\nstatic const Vtx castle_grounds_seg7_vertex_07004700[] = {\n    {{{ -3225,   -511,  -1871}, 0, {     0,      0}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{ -3225,   -818,  -1871}, 0, {   990,      0}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{ -3532,   -818,  -1871}, 0, {   990,   2012}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{ -3532,   -818,  -2178}, 0, {   990,      0}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{ -3225,   -818,  -2178}, 0, {   990,   2012}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{ -3225,   -511,  -2178}, 0, {     0,   2012}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{ -3225,   -511,  -2178}, 0, {     0,      0}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{ -3225,   -818,  -2178}, 0, {   990,      0}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{ -3225,   -818,  -1871}, 0, {   990,   2012}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{ -3225,   -511,  -1871}, 0, {     0,   2012}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{ -3532,   -511,  -1871}, 0, {     0,   2012}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{  -553,    803,  -2229}, 0, {    98,  -8304}, {0xd8, 0xd8, 0xd8, 0xff}}},\n    {{{  -553,    957,  -2127}, 0, {   480,  -7792}, {0xd8, 0xd8, 0xd8, 0xff}}},\n    {{{  -450,    957,  -2127}, 0, {   480,  -7792}, {0xd8, 0xd8, 0xd8, 0xff}}},\n    {{{  -450,    803,  -2229}, 0, {    98,  -8304}, {0xd8, 0xd8, 0xd8, 0xff}}},\n};\n\n// 0x070047F0 - 0x070048F0\nstatic const Vtx castle_grounds_seg7_vertex_070047F0[] = {\n    {{{   451,    803,  -2229}, 0, {   116,   1888}, {0xd8, 0xd8, 0xd8, 0xff}}},\n    {{{   451,    957,  -2127}, 0, {   552,   1372}, {0xd8, 0xd8, 0xd8, 0xff}}},\n    {{{   554,    957,  -2127}, 0, {   552,   1372}, {0xd8, 0xd8, 0xd8, 0xff}}},\n    {{{   554,    803,  -2229}, 0, {   116,   1888}, {0xd8, 0xd8, 0xd8, 0xff}}},\n    {{{  -450,    803,  -2229}, 0, {    98,  -8304}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -450,    964,   -264}, 0, {   480,   1504}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -450,    811,   -162}, 0, {    96,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -553,    811,   -162}, 0, {    96,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -450,    957,  -2127}, 0, {   480,  -7792}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -553,    964,   -264}, 0, {   480,   1504}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -553,    957,  -2127}, 0, {   480,  -7792}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   554,    811,   -162}, 0, {   112,  -8432}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   554,    964,   -258}, 0, {   552,  -7952}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   451,    964,   -258}, 0, {   552,  -7952}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   451,    811,   -162}, 0, {   112,  -8432}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   554,    957,  -2127}, 0, {   552,   1372}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070048F0 - 0x070049D0\nstatic const Vtx castle_grounds_seg7_vertex_070048F0[] = {\n    {{{   554,    957,  -2127}, 0, {   552,   1372}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   451,    957,  -2127}, 0, {   552,   1372}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   451,    964,   -258}, 0, {   552,  -7952}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3532,   -511,  -1871}, 0, {     0,   2012}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -3532,   -818,  -1871}, 0, {   990,   2012}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -3532,   -818,  -2178}, 0, {   990,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -3532,   -511,  -2178}, 0, {     0,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{   451,    811,   -162}, 0, {   112,  -8432}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{   451,    957,  -2127}, 0, {   552,   1372}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{   451,    803,  -2229}, 0, {   116,   1888}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{ -3532,   -818,  -2178}, 0, {   990,      0}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{ -3225,   -511,  -2178}, 0, {     0,   2012}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{ -3532,   -511,  -2178}, 0, {     0,      0}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{   451,    964,   -258}, 0, {   552,  -7952}, {0x9c, 0x9c, 0xae, 0xff}}},\n};\n\n// 0x070049D0 - 0x07004AD0\nstatic const Vtx castle_grounds_seg7_vertex_070049D0[] = {\n    {{{ -3532,  -1228,  -5557}, 0, {     0,    992}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{ -3532,  -1842,  -5557}, 0, {     0,   2012}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{ -4044,  -1842,  -5557}, 0, {   990,   2012}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{ -4044,  -1228,  -5557}, 0, {   990,    992}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{ -4044,  -1228,  -5557}, 0, {     0,    992}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{ -4044,  -1842,  -5557}, 0, {     0,   2012}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{ -4044,  -1842,  -6069}, 0, {   990,   2012}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{ -4044,  -1228,  -6069}, 0, {   990,    992}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{ -4044,  -1228,  -6069}, 0, {     0,    992}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{ -3532,  -1842,  -6069}, 0, {   990,   2012}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{ -3532,  -1228,  -6069}, 0, {   990,    992}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{ -4044,  -1842,  -6069}, 0, {     0,   2012}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{ -3532,  -1228,  -6069}, 0, {     0,    988}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{ -3532,  -1842,  -6069}, 0, {     0,   2012}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{ -3532,  -1842,  -5557}, 0, {   990,   2012}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{ -3532,  -1228,  -5557}, 0, {   990,    988}, {0x91, 0x91, 0xa5, 0xff}}},\n};\n\n// 0x07004AD0 - 0x07004BD0\nstatic const Vtx castle_grounds_seg7_vertex_07004AD0[] = {\n    {{{ -3481,  -1228,  -3663}, 0, {  -624,    990}, {0x66, 0x66, 0x7f, 0xff}}},\n    {{{ -3584,   -869,  -3151}, 0, {  1976,   -798}, {0x66, 0x66, 0x7f, 0xff}}},\n    {{{ -3583,   -511,  -3151}, 0, {  1976,  -2588}, {0x66, 0x66, 0x7f, 0xff}}},\n    {{{   554,    803,  -2127}, 0, {  1712,    990}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{   554,    803,  -3104}, 0, {  1712,  -3884}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{  -553,    803,  -3104}, 0, { -3808,  -3884}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{  -531,   2120,  -2047}, 0, {   376,      0}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{  -531,   1967,  -2127}, 0, {   376,    828}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{   532,   1967,  -2127}, 0, {  5688,    828}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{   532,   2120,  -2047}, 0, {  5688,      0}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{  -531,   1967,  -2127}, 0, {  1620,   3378}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{  -531,   2120,  -2047}, 0, {  2016,   2614}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{  -531,   2173,  -2127}, 0, {  1620,   2350}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{  -553,    803,  -2127}, 0, { -3808,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   554,    803,  -2127}, 0, {  1712,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -553,    803,  -3104}, 0, { -3808,  -3884}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07004BD0 - 0x07004CC0\nstatic const Vtx castle_grounds_seg7_vertex_07004BD0[] = {\n    {{{   532,   2120,  -2047}, 0, {     0,   2614}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   532,   1967,  -2127}, 0, {   360,   3378}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   532,   2173,  -2127}, 0, {   360,   2350}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4370,    545,  -6149}, 0, {     0,   1358}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4370,    545,  -7787}, 0, {  8144,   1358}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4370,   2339,  -7787}, 0, {  8144,  -7594}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4370,   2339,  -6149}, 0, {     0,  -7594}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3482,   2339,  -7274}, 0, {  4400,  -4624}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4370,   2339,  -6149}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4370,   2339,  -7787}, 0, {     0,  -7050}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3482,   2339,  -6149}, 0, {  4400,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4369,   2339,  -7760}, 0, {     0,  -7050}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -4369,   2339,  -6149}, 0, {     0,    990}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -3481,   2339,  -6149}, 0, {  4400,    990}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -3481,   2339,  -7274}, 0, {  4400,  -4624}, {0xc4, 0xc4, 0xd0, 0xff}}},\n};\n\n// 0x07004CC0 - 0x07004DB0\nstatic const Vtx castle_grounds_seg7_vertex_07004CC0[] = {\n    {{{  3482,    545,  -6149}, 0, {   136,    852}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  4370,   2339,  -6149}, 0, {  4568,  -8102}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  3482,   2339,  -6149}, 0, {   136,  -8102}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  4370,    545,  -6149}, 0, {  4568,    852}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -3788,    803,  -3048}, 0, {  1876,    -60}, {0x66, 0x66, 0x7f, 0xff}}},\n    {{{ -3481,    803,  -3663}, 0, { -1724,      8}, {0x66, 0x66, 0x7f, 0xff}}},\n    {{{ -3582,    461,  -3148}, 0, {   936,   1800}, {0x66, 0x66, 0x7f, 0xff}}},\n    {{{ -3583,   -511,  -3151}, 0, {  2524,    990}, {0x66, 0x66, 0x7f, 0xff}}},\n    {{{ -3582,    461,  -3148}, 0, {  2536,  -3864}, {0x66, 0x66, 0x7f, 0xff}}},\n    {{{ -3481,  -1228,  -3663}, 0, {   -80,   4566}, {0x66, 0x66, 0x7f, 0xff}}},\n    {{{ -3481,    803,  -3663}, 0, {   -80,  -5574}, {0x66, 0x66, 0x7f, 0xff}}},\n    {{{ -3788,    803,  -3048}, 0, {  1796,   1100}, {0x66, 0x66, 0x7f, 0xff}}},\n    {{{ -3788,   2339,  -3048}, 0, {  1796,  -6562}, {0x66, 0x66, 0x7f, 0xff}}},\n    {{{ -3481,   2339,  -3663}, 0, { -1628,  -6562}, {0x66, 0x66, 0x7f, 0xff}}},\n    {{{ -3481,    803,  -3663}, 0, { -1628,   1100}, {0x66, 0x66, 0x7f, 0xff}}},\n};\n\n// 0x07004DB0 - 0x07004EA0\nstatic const Vtx castle_grounds_seg7_vertex_07004DB0[] = {\n    {{{  -153,   1059,  -3206}, 0, {   480,   -210}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{  -153,   1059,  -3104}, 0, {     0,   -210}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{  -153,    803,  -3104}, 0, {     0,   1066}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{ -3583,    803,  -2639}, 0, {  2304,    -48}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{ -3788,    803,  -3048}, 0, {   -24,    -66}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{ -3582,    461,  -3148}, 0, {   -20,   1800}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{  -348,   1692,  -3104}, 0, {  4844,  -2490}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{   349,   1692,  -2127}, 0, {     0,    990}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{  -348,   1692,  -2127}, 0, {     0,  -2490}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{   349,   1692,  -3104}, 0, {  4844,    990}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{   154,   1059,  -3206}, 0, {  2292,    478}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{  -153,   1059,  -3104}, 0, {   760,    990}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{  -153,   1059,  -3206}, 0, {   760,    478}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{   154,   1059,  -3104}, 0, {  2292,    990}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{  -153,    803,  -3206}, 0, {   480,   1066}, {0x70, 0x70, 0x8a, 0xff}}},\n};\n\n// 0x07004EA0 - 0x07004F90\nstatic const Vtx castle_grounds_seg7_vertex_07004EA0[] = {\n    {{{ -4369,  -1228,  -6149}, 0, {  2012,    990}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{ -4369,   2339,  -6149}, 0, {  2012, -16816}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{ -4369,   2339,  -7760}, 0, { -6024, -16816}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{   154,   1059,  -3104}, 0, {     0,   -200}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{   154,   1059,  -3206}, 0, {   376,   -200}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{   154,    803,  -3206}, 0, {   376,   1076}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{   154,    803,  -3104}, 0, {     0,   1076}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{   349,   1692,  -2127}, 0, {     0,    194}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{   349,   1692,  -3151}, 0, {  4936,    194}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{   554,   1487,  -3151}, 0, {  4936,   1312}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{   554,   1487,  -2127}, 0, {     0,   1312}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{ -3481,  -1228,  -6149}, 0, { -9876,    990}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{ -3481,  -1228,  -3663}, 0, {  2524,    990}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{ -3481,   2339,  -3663}, 0, {  2524, -16816}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{ -3481,   2339,  -6149}, 0, { -9876, -16816}, {0x70, 0x70, 0x8a, 0xff}}},\n};\n\n// 0x07004F90 - 0x07005070\nstatic const Vtx castle_grounds_seg7_vertex_07004F90[] = {\n    {{{ -3481,   2339,  -6149}, 0, {  2356, -16816}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{ -4369,  -1228,  -6149}, 0, { -2072,    990}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{ -3481,  -1228,  -6149}, 0, {  2356,    990}, {0x70, 0x70, 0x8a, 0xff}}},\n    {{{  3584,    803,  -2639}, 0, {  2524,   1062}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3174,   2339,  -2434}, 0, {   236,  -6600}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3174,    803,  -2434}, 0, {   236,   1062}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3071,   -511,  -2639}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2559,   -511,  -2741}, 0, {  2572,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3070,    461,  -2639}, 0, {   -24,  -3864}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2559,    803,  -2741}, 0, {  2572,  -5574}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2559,    803,  -2741}, 0, {  2012,   1076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3173,   2339,  -2434}, 0, { -1412,  -6588}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3173,    803,  -2434}, 0, { -1412,   1076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2559,   2339,  -2741}, 0, {  2012,  -6588}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07005070 - 0x07005150\nstatic const Vtx castle_grounds_seg7_vertex_07005070[] = {\n    {{{  1536,   2339,  -2536}, 0, {  2216, -13238}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1024,   2460,  -2127}, 0, { -1052, -13844}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1536,   -511,  -2536}, 0, {  2216,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1024,   -511,  -2127}, 0, { -1052,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3072,   -511,  -2639}, 0, { -2072,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3274,   -255,  -2840}, 0, {  -648,   -288}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3071,    461,  -2639}, 0, { -2076,  -3864}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3584,    803,  -2639}, 0, {  2524,   1062}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3584,   2339,  -2639}, 0, {  2524,  -6600}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3174,   2339,  -2434}, 0, {   236,  -6600}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3789,    803,  -3048}, 0, {  2764,   1060}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3789,   2339,  -3048}, 0, {  2764,  -6604}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3584,   2339,  -2639}, 0, {   480,  -6604}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3584,    803,  -2639}, 0, {   480,   1060}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07005150 - 0x07005240\nstatic const Vtx castle_grounds_seg7_vertex_07005150[] = {\n    {{{  3482,    803,  -3663}, 0, {  2064,  -5574}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3583,    461,  -3148}, 0, {  -552,  -3864}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3482,   -511,  -3663}, 0, {  2064,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3584,   -511,  -3151}, 0, {  -540,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3072,   -511,  -2639}, 0, { -2072,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3274,   -511,  -2841}, 0, {  -648,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3274,   -255,  -2840}, 0, {  -648,   -288}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3484,   2339,  -7274}, 0, { 17988, -13238}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3482,   2339,  -3663}, 0, {     0, -13238}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3482,   -511,  -3663}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3382,   -255,  -2949}, 0, {   112,   -288}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3071,    461,  -2639}, 0, { -2076,  -3864}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3583,    461,  -3148}, 0, {  1524,  -3864}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3382,   -511,  -2949}, 0, {   112,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3584,   -511,  -3151}, 0, {  1536,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07005240 - 0x07005340\nstatic const Vtx castle_grounds_seg7_vertex_07005240[] = {\n    {{{   532,   2652,  -2846}, 0, {  3952,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   532,   2652,  -2047}, 0, {     0,    -40}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   532,   2120,  -2047}, 0, {     0,   2614}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -553,    803,  -2127}, 0, {  -420,   1066}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -553,    803,  -3104}, 0, {  4452,   1066}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -553,   1487,  -2127}, 0, {  -420,  -2344}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3484,   2339,  -7274}, 0, { 17988, -13238}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3482,   -511,  -3663}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3484,   -511,  -7274}, 0, { 17988,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3583,    803,  -2639}, 0, {  2008,   1110}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{ -3583,   2339,  -2639}, 0, {  2008,  -6552}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{ -3788,   2339,  -3048}, 0, {  -276,  -6552}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{ -3788,    803,  -3048}, 0, {  -276,   1110}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{ -3173,    803,  -2434}, 0, {  2004,    -36}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{ -3583,    803,  -2639}, 0, {  -592,    -42}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{ -3070,    461,  -2639}, 0, {  2000,   1752}, {0x91, 0x91, 0xa5, 0xff}}},\n};\n\n// 0x07005340 - 0x07005440\nstatic const Vtx castle_grounds_seg7_vertex_07005340[] = {\n    {{{  3583,    461,  -3148}, 0, {   364,   1812}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{  3482,    803,  -3663}, 0, {  2884,      0}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{  3789,    803,  -3048}, 0, {  -540,      0}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{  3583,    461,  -3148}, 0, {  1684,   1796}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{  3789,    803,  -3048}, 0, {  1740,      0}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{  3584,    803,  -2639}, 0, {  -548,    -24}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{  -553,   1487,  -2127}, 0, {     0,   1312}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{  -553,   1487,  -3151}, 0, {  4936,   1312}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{  -348,   1692,  -2127}, 0, {     0,    194}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{  -348,   1692,  -3151}, 0, {  4936,    194}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{ -3582,    461,  -3148}, 0, { -1948,   1280}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{ -3070,    461,  -2639}, 0, {  1924,   1298}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{ -3583,    803,  -2639}, 0, {   -20,   -570}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{  3584,    803,  -2639}, 0, {  1508,      0}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{  3071,    461,  -2639}, 0, {  -332,   1806}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{  3583,    461,  -3148}, 0, {  3280,   1806}, {0x72, 0x72, 0x8c, 0xff}}},\n};\n\n// 0x07005440 - 0x07005540\nstatic const Vtx castle_grounds_seg7_vertex_07005440[] = {\n    {{{   554,   1487,  -2127}, 0, {  3084,  -2344}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{   554,   1487,  -3104}, 0, { -1784,  -2344}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{   554,    803,  -3104}, 0, { -1784,   1066}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{  3071,    461,  -2639}, 0, {  1256,   1802}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{  3584,    803,  -2639}, 0, {  3544,    -34}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{  3174,    803,  -2434}, 0, {  1260,      0}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{  3071,    461,  -2639}, 0, {  2476,   1806}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{  3174,    803,  -2434}, 0, {  3396,      0}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{  2555,    798,  -2732}, 0, {     0,      0}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{  -531,   2120,  -2047}, 0, {  2016,   2614}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{  -531,   2652,  -2047}, 0, {  2012,    -40}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{  -531,   2652,  -2846}, 0, { -1968,      0}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{   554,    803,  -2127}, 0, {  3084,   1066}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{   154,    803,  -3104}, 0, {  2304,    752}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{   154,    803,  -3206}, 0, {  2304,    240}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{  -153,    803,  -3206}, 0, {   772,    240}, {0x72, 0x72, 0x8c, 0xff}}},\n};\n\n// 0x07005540 - 0x07005630\nstatic const Vtx castle_grounds_seg7_vertex_07005540[] = {\n    {{{   154,    803,  -3104}, 0, {  2304,    752}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{  -153,    803,  -3206}, 0, {   772,    240}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{  -153,    803,  -3104}, 0, {   772,    752}, {0x72, 0x72, 0x8c, 0xff}}},\n    {{{ -1023,   -511,  -2127}, 0, { -7180,    990}, {0x58, 0x58, 0x62, 0xff}}},\n    {{{   352,    635,  -2127}, 0, {  -316,  -4734}, {0x58, 0x58, 0x62, 0xff}}},\n    {{{  -553,    803,  -2127}, 0, { -4836,  -5574}, {0x58, 0x58, 0x62, 0xff}}},\n    {{{    83,   -511,  -2127}, 0, { -1656,    990}, {0x58, 0x58, 0x62, 0xff}}},\n    {{{   554,    803,  -2127}, 0, {   688,  -5574}, {0x58, 0x58, 0x62, 0xff}}},\n    {{{  3274,   -255,  -2840}, 0, {  1384,    990}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{  3310,   -255,  -3021}, 0, {  2148,    478}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{  3382,   -255,  -2949}, 0, {  2148,    990}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{ -3583,   -511,  -3151}, 0, { -1560,    990}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{ -3071,   -511,  -2639}, 0, {  2048,    990}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{ -3582,    461,  -3148}, 0, { -1548,  -3864}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{ -3070,    461,  -2639}, 0, {  2052,  -3864}, {0x99, 0x99, 0xac, 0xff}}},\n};\n\n// 0x07005630 - 0x07005720\nstatic const Vtx castle_grounds_seg7_vertex_07005630[] = {\n    {{{ -1535,   -511,  -2536}, 0, { -1256,    990}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{ -1023,   2460,  -2127}, 0, {  2012, -13844}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{ -1535,   2339,  -2536}, 0, { -1256, -13238}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{ -1023,   -511,  -2127}, 0, {  2012,    990}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{  3174,   2339,  -2434}, 0, {  4416,  -6606}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{  2560,   2339,  -2741}, 0, {   992,  -6606}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{  2555,    798,  -2732}, 0, {   992,   1058}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{  3174,    803,  -2434}, 0, {  4416,   1058}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{  3274,   -255,  -2840}, 0, {  1384,    990}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{  3201,   -255,  -2913}, 0, {  1384,    480}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{  3310,   -255,  -3021}, 0, {  2148,    478}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{  3274,   -511,  -2841}, 0, {     0,    990}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{  3201,   -511,  -2913}, 0, {   480,    990}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{  3201,   -255,  -2913}, 0, {   480,   -288}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{  3274,   -255,  -2840}, 0, {     0,   -288}, {0x99, 0x99, 0xac, 0xff}}},\n};\n\n// 0x07005720 - 0x07005800\nstatic const Vtx castle_grounds_seg7_vertex_07005720[] = {\n    {{{  3382,   -255,  -2949}, 0, {  2012,   -288}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{  3310,   -511,  -3022}, 0, {  1500,    990}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{  3382,   -511,  -2949}, 0, {  2012,    990}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{  3310,   -255,  -3021}, 0, {  1500,   -288}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{  -553,   1487,  -3104}, 0, {  4452,  -2344}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{  -553,   1487,  -2127}, 0, {  -420,  -2344}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{  -553,    803,  -3104}, 0, {  4452,   1066}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{ -2559,   -511,  -2741}, 0, { -2584,    990}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -1535,   2339,  -2536}, 0, {  2624, -13238}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -2559,   2339,  -2741}, 0, { -2584, -13238}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -1535,   -511,  -2536}, 0, {  2624,    990}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  3071,    461,  -2639}, 0, {  2056,  -3864}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  2560,   -511,  -2741}, 0, {  -540,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  3072,   -511,  -2639}, 0, {  2064,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n};\n\n// 0x07005800 - 0x07005900\nstatic const Vtx castle_grounds_seg7_vertex_07005800[] = {\n    {{{ -3173,    803,  -2434}, 0, {  2252,   1100}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -3583,   2339,  -2639}, 0, {     0,  -6562}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -3583,    803,  -2639}, 0, {     0,   1100}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -3173,   2339,  -2434}, 0, {  2252,  -6562}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -2559,    803,  -2741}, 0, {   -52,     32}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -3173,    803,  -2434}, 0, {  3224,    -70}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -3070,    461,  -2639}, 0, {  2348,   1796}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  2555,    798,  -2732}, 0, {  -540,  -5574}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  2560,   -511,  -2741}, 0, {  -540,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  3071,    461,  -2639}, 0, {  2056,  -3864}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -1023,   2460,  -2127}, 0, { -7184, -13844}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  1024,   1692,  -2127}, 0, {  3032, -10006}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  1024,   2460,  -2127}, 0, {  3032, -13844}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{ -1023,   1692,  -2127}, 0, { -7184, -10006}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  -553,   1692,  -2127}, 0, { -4836, -10006}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{ -1023,    803,  -2127}, 0, { -7180,  -5574}, {0xe5, 0xe5, 0xea, 0xff}}},\n};\n\n// 0x07005900 - 0x07005A00\nstatic const Vtx castle_grounds_seg7_vertex_07005900[] = {\n    {{{  1024,    803,  -2127}, 0, {  3032,  -5574}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  1024,   1692,  -2127}, 0, {  3032, -10006}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{   554,   1692,  -2127}, 0, {   688, -10006}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{   554,    803,  -2127}, 0, {   688,  -5574}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{    83,   -511,  -2127}, 0, { -1656,    990}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  1024,   -511,  -2127}, 0, {  3032,    990}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{   349,   1692,  -2127}, 0, {  -332, -10006}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{   554,   1487,  -2127}, 0, {   688,  -8984}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  3482,    803,  -3663}, 0, {  4056,   1072}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  3482,   2339,  -3663}, 0, {  4056,  -6590}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  3789,   2339,  -3048}, 0, {   628,  -6590}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  -553,   1487,  -2127}, 0, { -4836,  -8984}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  -348,   1692,  -2127}, 0, { -3812, -10006}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  -553,   1692,  -2127}, 0, { -4836, -10006}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{ -1023,    803,  -2127}, 0, { -7180,  -5574}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  -553,    803,  -2127}, 0, { -4836,  -5574}, {0xe5, 0xe5, 0xea, 0xff}}},\n};\n\n// 0x07005A00 - 0x07005AF0\nstatic const Vtx castle_grounds_seg7_vertex_07005A00[] = {\n    {{{  -553,    803,  -2127}, 0, { -4836,  -5574}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{ -1023,    803,  -2127}, 0, { -7180,  -5574}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{ -1023,   -511,  -2127}, 0, { -7180,    990}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  2560,   2339,  -2741}, 0, {  1500, -13238}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  1536,   -511,  -2536}, 0, { -3708,    990}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  2560,   -511,  -2741}, 0, {  1500,    990}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  1536,   2339,  -2536}, 0, { -3708, -13238}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  3482,    803,  -3663}, 0, {  4056,   1072}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  3789,   2339,  -3048}, 0, {   628,  -6590}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  3789,    803,  -3048}, 0, {   628,   1072}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{   532,   2652,  -2047}, 0, {  5284,  -1668}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{     0,   3584,  -2047}, 0, {  2624,  -6318}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  -531,   2652,  -2047}, 0, {     0,  -1668}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{   532,   2120,  -2047}, 0, {  5284,    990}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  -531,   2120,  -2047}, 0, {     0,    990}, {0xe5, 0xe5, 0xea, 0xff}}},\n};\n\n// 0x07005AF0 - 0x07005BE0\nstatic const Vtx castle_grounds_seg7_vertex_07005AF0[] = {\n    {{{ -3481,   2339,  -6149}, 0, {  2356, -16816}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{ -4369,   2339,  -6149}, 0, { -2072, -16816}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{ -4369,  -1228,  -6149}, 0, { -2072,    990}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  3484,   -511,  -7274}, 0, {   192,    990}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  4997,   -511,  -8085}, 0, {  9164,    990}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  4997,   2339,  -8085}, 0, {  9164, -13238}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  3484,   2339,  -7274}, 0, {   192, -13238}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  -553,    803,  -3104}, 0, { -5856,  -5574}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -153,   1059,  -3104}, 0, { -3860,  -6850}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -553,   1692,  -3104}, 0, { -5856, -10006}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -153,    803,  -3104}, 0, { -3860,  -5574}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{   154,   1059,  -3104}, 0, { -2328,  -6850}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{   554,   1692,  -3104}, 0, {  -332, -10006}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{   154,    803,  -3104}, 0, { -2328,  -5574}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{   554,    803,  -3104}, 0, {  -332,  -5574}, {0x9c, 0x9c, 0xae, 0xff}}},\n};\n\n// 0x07005BE0 - 0x07005CE0\nstatic const Vtx castle_grounds_seg7_vertex_07005BE0[] = {\n    {{{ -3541,   -972,  -3361}, 0, { -4672,    480}, {0x67, 0x67, 0x69, 0xff}}},\n    {{{ -4686,   -972,  -3361}, 0, {  4464,    478}, {0x67, 0x67, 0x69, 0xff}}},\n    {{{ -4686,   -921,  -3361}, 0, {  4464,    990}, {0x67, 0x67, 0x69, 0xff}}},\n    {{{ -3541,   -921,  -3361}, 0, { -4672,    990}, {0x67, 0x67, 0x69, 0xff}}},\n    {{{  4730,   -869,   -651}, 0, {  6612,    990}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{  4730,   -665,   -651}, 0, {  6612,      0}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{  3495,   -665,   -201}, 0, {    52,      0}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{  3495,   -869,   -201}, 0, {    52,    990}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{  3662,   -972,    254}, 0, { -4544,    990}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{  4897,   -972,   -194}, 0, {  2012,    990}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{  4897,   -921,   -194}, 0, {  2012,    478}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{  3662,   -921,    254}, 0, { -4544,    480}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{ -3788,   -921,  -3361}, 0, {  1500,    734}, {0x58, 0x58, 0x62, 0xff}}},\n    {{{ -3481,   -716,  -3361}, 0, {     0,      0}, {0x58, 0x58, 0x62, 0xff}}},\n    {{{ -3481,   -921,  -3361}, 0, {     0,    734}, {0x58, 0x58, 0x62, 0xff}}},\n    {{{ -3788,   -716,  -3361}, 0, {  1500,      0}, {0x58, 0x58, 0x62, 0xff}}},\n};\n\n// 0x07005CE0 - 0x07005DA0\nstatic const Vtx castle_grounds_seg7_vertex_07005CE0[] = {\n    {{{ -4686,   -869,  -3151}, 0, {  5468,    744}, {0x58, 0x58, 0x62, 0xff}}},\n    {{{ -4686,   -511,  -3151}, 0, {  5472,  -1046}, {0x58, 0x58, 0x62, 0xff}}},\n    {{{ -3583,   -511,  -3151}, 0, {     0,  -1054}, {0x58, 0x58, 0x62, 0xff}}},\n    {{{ -3584,   -869,  -3151}, 0, {     0,    734}, {0x58, 0x58, 0x62, 0xff}}},\n    {{{ -3912,   -869,  -3151}, 0, {  1588,    480}, {0x89, 0x89, 0x8a, 0xff}}},\n    {{{ -3788,   -716,  -3361}, 0, {     0,      0}, {0x89, 0x89, 0x8a, 0xff}}},\n    {{{ -3788,   -921,  -3361}, 0, {     0,    650}, {0x89, 0x89, 0x8a, 0xff}}},\n    {{{ -3912,   -716,  -3151}, 0, {  1588,      0}, {0x89, 0x89, 0x8a, 0xff}}},\n    {{{  3362,   -665,   -567}, 0, { -4544,    990}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{  4597,   -511,  -1016}, 0, {  2012,    -18}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{  3362,   -511,   -567}, 0, { -4544,    -18}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{  4597,   -665,  -1016}, 0, {  2012,    990}, {0x99, 0x99, 0xac, 0xff}}},\n};\n\n// 0x07005DA0 - 0x07005E90\nstatic const Vtx castle_grounds_seg7_vertex_07005DA0[] = {\n    {{{  3202,   -101,  -3347}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  2876,   -506,  -3022}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  3201,   -506,  -3348}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{ -3225,   -818,  -2178}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{ -3532,   -818,  -2178}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{ -3532,   -818,  -1871}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{ -3225,   -818,  -1871}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  2876,   -101,  -3021}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  3093,   -101,  -2804}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  3093,   -511,  -2804}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  3419,   -101,  -3130}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  3419,   -511,  -3130}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -562,    803,  -3718}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   563,   1936,  -3718}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -562,   1936,  -3718}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07005E90 - 0x07005F60\nstatic const Vtx castle_grounds_seg7_vertex_07005E90[] = {\n    {{{  -562,    803,  -3206}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -562,   1930,  -3718}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -562,   1930,  -3206}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -562,    803,  -3718}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   563,    803,  -3718}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   563,   1930,  -3206}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   563,   1930,  -3718}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   563,    803,  -3206}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   563,   1936,  -3718}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{ -4044,  -1842,  -6069}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{ -4044,  -1842,  -5557}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{ -3532,  -1842,  -5557}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{ -3532,  -1842,  -6069}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07005F60 - 0x07006090\nstatic const Gfx castle_grounds_seg7_dl_07005F60[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_grounds_seg7_vertex_07003000, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_070030F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0,  7, 10, 11, 0x0),\n    gsSP2Triangles( 7, 11, 12, 0x0,  9,  8, 13, 0x0),\n    gsSP2Triangles(13, 14,  9, 0x0, 13, 12, 14, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_070031E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_070032E0, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  1,  0, 0x0,  5,  6,  7, 0x0),\n    gsSP1Triangle( 6,  8,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07006090 - 0x070060C8\nstatic const Gfx castle_grounds_seg7_dl_07006090[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09006000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_grounds_seg7_vertex_07003370, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070060C8 - 0x07006148\nstatic const Gfx castle_grounds_seg7_dl_070060C8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_0900A000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_grounds_seg7_vertex_070033B0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0,  4,  9, 11, 0x0),\n    gsSP2Triangles( 4, 11,  5, 0x0,  3, 13,  4, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07003490, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07006148 - 0x07006378\nstatic const Gfx castle_grounds_seg7_dl_07006148[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_grounds_seg7_vertex_070034D0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP1Triangle(11, 12, 13, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_070035B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_070036B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(14, 11, 13, 0x0,  1,  0, 15, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_070037B0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07003890, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07003980, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07003A60, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(11, 12,  9, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07003B60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07003C50, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07003D40, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07006378 - 0x070065E0\nstatic const Gfx castle_grounds_seg7_dl_07006378[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_grounds_seg7_vertex_07003E00, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07003EF0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07003FE0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_070040D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_070041C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_070042B0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  3,  5, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  9,  7, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(10, 13, 11, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07004390, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07004490, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07004590, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7, 10,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070065E0 - 0x07006658\nstatic const Gfx castle_grounds_seg7_dl_070065E0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09009000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_grounds_seg7_vertex_07004640, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  0,  5,  3, 0x0),\n    gsSP2Triangles( 6,  1,  3, 0x0,  6,  3,  4, 0x0),\n    gsSP2Triangles( 6,  4,  7, 0x0,  2,  7,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07006658 - 0x07006750\nstatic const Gfx castle_grounds_seg7_dl_07006658[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_grounds_seg7_vertex_07004700, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 0,  2, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_070047F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 8,  9,  5, 0x0,  4,  8,  5, 0x0),\n    gsSP2Triangles( 5,  9,  7, 0x0,  8, 10,  9, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 13, 14, 0x0),\n    gsSP1Triangle(15, 13, 12, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_070048F0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  7, 13,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07006750 - 0x070067B8\nstatic const Gfx castle_grounds_seg7_dl_07006750[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_grounds_seg7_vertex_070049D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070067B8 - 0x07006C38\nstatic const Gfx castle_grounds_seg7_dl_070067B8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_grounds_seg7_vertex_07004AD0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07004BD0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07004CC0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07004DB0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07004EA0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07004F90, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07005070, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07005150, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 6, 10, 11, 0x0, 10, 12, 11, 0x0),\n    gsSP2Triangles(10, 13, 14, 0x0, 10, 14, 12, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07005240, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07005340, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07005440, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12,  0,  2, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07005540, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 12, 14, 13, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07005630, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07005720, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07005800, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle(14, 13, 15, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07005900, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  0,  3, 0x0,  4,  5,  0, 0x0),\n    gsSP2Triangles( 2,  6,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07005A00, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 13, 10, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07005AF0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(11, 12,  9, 0x0, 11, 13, 14, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07006C38 - 0x07006CD8\nstatic const Gfx castle_grounds_seg7_dl_07006C38[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09006800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_grounds_seg7_vertex_07005BE0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07005CE0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07006CD8 - 0x07006D70\nstatic const Gfx castle_grounds_seg7_dl_07006CD8[] = {\n    gsSPVertex(castle_grounds_seg7_vertex_07005DA0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  1, 0x0),\n    gsSP2Triangles( 8,  9,  1, 0x0, 10,  0,  2, 0x0),\n    gsSP2Triangles(10,  2, 11, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle( 0,  7,  1, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07005E90, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 3,  4,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle( 9, 11, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07006D70 - 0x07006ED8\nconst Gfx castle_grounds_seg7_dl_07006D70[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(castle_grounds_seg7_dl_07005F60),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(castle_grounds_seg7_dl_07006090),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(castle_grounds_seg7_dl_070060C8),\n    gsSPDisplayList(castle_grounds_seg7_dl_07006148),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(castle_grounds_seg7_dl_07006378),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(castle_grounds_seg7_dl_070065E0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(castle_grounds_seg7_dl_07006658),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(castle_grounds_seg7_dl_07006750),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(castle_grounds_seg7_dl_070067B8),\n    gsSPDisplayList(castle_grounds_seg7_dl_07006C38),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(castle_grounds_seg7_dl_07006CD8),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_grounds/areas/1/10/model.inc.c",
    "content": "// 0x0700C2A0 - 0x0700C2E0\nstatic const Vtx castle_grounds_seg7_vertex_0700C2A0[] = {\n    {{{   268,    803,  -3206}, 0, {   990,    328}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  -243,    803,  -3206}, 0, {     0,    330}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  -245,    803,  -2844}, 0, {     0,    970}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{   266,    803,  -2844}, 0, {   990,    966}, {0xc4, 0xc4, 0xd0, 0xff}}},\n};\n\n// 0x0700C2E0 - 0x0700C3A0\nstatic const Vtx castle_grounds_seg7_vertex_0700C2E0[] = {\n    {{{   205,   1110,  -3104}, 0, { -4534,      0}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{   154,    803,  -3104}, 0, {  1596,    990}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{   205,    803,  -3104}, 0, {  1596,      0}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{   154,   1059,  -3104}, 0, { -3512,    990}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{   205,   1110,  -3104}, 0, {  6610,      0}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -153,   1059,  -3104}, 0, {  -542,    990}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{   154,   1059,  -3104}, 0, {  5588,    990}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -204,   1110,  -3104}, 0, { -1564,      0}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -153,   1059,  -3104}, 0, {  4564,    990}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -204,    803,  -3104}, 0, {  -544,      0}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -153,    803,  -3104}, 0, {  -544,    990}, {0x9c, 0x9c, 0xae, 0xff}}},\n    {{{  -204,   1110,  -3104}, 0, {  5586,      0}, {0x9c, 0x9c, 0xae, 0xff}}},\n};\n\n// 0x0700C3A0 - 0x0700C3D8\nstatic const Gfx castle_grounds_seg7_dl_0700C3A0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09006000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_grounds_seg7_vertex_0700C2A0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700C3D8 - 0x0700C430\nstatic const Gfx castle_grounds_seg7_dl_0700C3D8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_grounds_seg7_vertex_0700C2E0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700C430 - 0x0700C4C0\nconst Gfx castle_grounds_seg7_dl_0700C430[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(castle_grounds_seg7_dl_0700C3A0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(castle_grounds_seg7_dl_0700C3D8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_grounds/areas/1/11/anim.inc.c",
    "content": "// 0x0700C7C8 - 0x0700C8F0\nstatic const s16 castle_grounds_seg7_animvalue_flags[] = {\n        0,   480, 16383,  4835,  3907,  2463,   721, -1101, -2789, -4125, -4928, -5481, -5883, -6121, -6182, -6054,\n    -5723, -5177, -4309, -2785,  -812,  1339,  3401,  5102,  6174,  6692,  6939,  6952,  6769,  6428,  5967,  5423,\n     3581,  2871,  1610,   109, -1318, -2361, -2855, -3215, -3491, -3677, -3768, -3758, -3642, -3414, -3068, -2526,\n    -1519,  -188,  1277,  2685,  3848,  4573,  4906,  5041,  5011,  4851,  4594,  4274,  3925, -3009, -3210, -3342,\n    -3401, -3389, -3303, -3143, -2907, -2485, -1816,  -982,   -59,   871,  1731,  2443,  2931,  3205,  3300,  3237,\n     3037,  2722,  2296,  1701,   979,   182,  -633, -1414, -2107, -2657, -2628, -2534, -2270, -1862, -1337,  -720,\n      -40,   678,  1408,  2089,  2618,  3004,  3257,  3391,  3404,  3140,  2619,  1925,  1144,   361,  -339,  -873,\n    -1218, -1535, -1829, -2091, -2312, -2481, -2590,  1258,  1203,  1057,   844,   592,   327,    75,  -137,  -342,\n     -573,  -807, -1022, -1195, -1305, -1328, -1243, -1060,  -810,  -524,  -233,    32,   242,   418,   595,   766,\n      922,  1058,  1164,  1233,\n};\n\n// 0x0700C8F0 - 0x0700C944\nstatic const u16 castle_grounds_seg7_animindex_flags[] = {\n    0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0002, 0x0001, 0x0000, 0x0001, 0x0000,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001D, 0x0077,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001D, 0x005A,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001D, 0x003D,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001D, 0x0020,\n    0x0001, 0x0000, 0x0001, 0x0000, 0x001D, 0x0003,\n};\n\n// 0x0700C944 - 0x0700C95C\nstatic const struct Animation castle_grounds_seg7_anim_flags = {\n    0,\n    0,\n    0,\n    0,\n    0x1D,\n    ANIMINDEX_NUMPARTS(castle_grounds_seg7_animindex_flags),\n    castle_grounds_seg7_animvalue_flags,\n    castle_grounds_seg7_animindex_flags,\n    0,\n};\n\n// 0x0700C95C - 0x0700C960\nconst struct Animation *const castle_grounds_seg7_anims_flags[] = {\n    &castle_grounds_seg7_anim_flags, // 0x0700C944\n};\n"
  },
  {
    "path": "levels/castle_grounds/areas/1/11/geo.inc.c",
    "content": "// 0x0E000660\nconst GeoLayout castle_grounds_geo_000660[] = {\n    GEO_CULLING_RADIUS(1000),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 24576),\n        GEO_OPEN_NODE(),\n            GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, NULL),\n            GEO_OPEN_NODE(),\n                GEO_ANIMATED_PART(LAYER_OPAQUE, 0, 0, 0, castle_grounds_seg7_dl_0700C768),\n                GEO_OPEN_NODE(),\n                    GEO_ANIMATED_PART(LAYER_OPAQUE, 459, 0, 0, castle_grounds_seg7_dl_0700C728),\n                    GEO_OPEN_NODE(),\n                        GEO_ANIMATED_PART(LAYER_OPAQUE, 460, 0, 0, castle_grounds_seg7_dl_0700C6E8),\n                        GEO_OPEN_NODE(),\n                            GEO_ANIMATED_PART(LAYER_OPAQUE, 345, 0, 0, castle_grounds_seg7_dl_0700C6A8),\n                            GEO_OPEN_NODE(),\n                                GEO_ANIMATED_PART(LAYER_OPAQUE, 287, 0, 0, castle_grounds_seg7_dl_0700C670),\n                            GEO_CLOSE_NODE(),\n                        GEO_CLOSE_NODE(),\n                    GEO_CLOSE_NODE(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(), //! more close than open nodes\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/castle_grounds/areas/1/11/model.inc.c",
    "content": "// TODO: what is this? 0700C4C0-0700C4C8 [8,8]\nUNUSED static const u64 castle_grounds_unused_0 = 0;\n\n// 0x0700C4C8 - 0x0700C4E0\nstatic const Lights1 castle_grounds_seg7_lights_0700C4C8 = gdSPDefLights1(\n    0x66, 0x00, 0x00,\n    0xff, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x0700C4E0 - 0x0700C4F8\nstatic const Lights1 castle_grounds_seg7_lights_0700C4E0 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// TODO: what is this? 0700C4F8-0700C500 [8,8]\nUNUSED static const u64 castle_grounds_unused_1 = 0;\n\n// 0x0700C500 - 0x0700C530\nstatic const Vtx castle_grounds_seg7_vertex_0700C500[] = {\n    {{{     0,      0,     75}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   287,      0,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{     0,      0,    -74}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n};\n\n// 0x0700C530 - 0x0700C570\nstatic const Vtx castle_grounds_seg7_vertex_0700C530[] = {\n    {{{     0,      0,    150}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   287,      0,     75}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   287,      0,    -74}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{     0,      0,   -149}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700C570 - 0x0700C5B0\nstatic const Vtx castle_grounds_seg7_vertex_0700C570[] = {\n    {{{     0,      0,    240}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   345,      0,    150}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   345,      0,   -149}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{     0,      0,   -239}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700C5B0 - 0x0700C5F0\nstatic const Vtx castle_grounds_seg7_vertex_0700C5B0[] = {\n    {{{     0,      0,    360}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   460,      0,    240}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   460,      0,   -239}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{     0,      0,   -359}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700C5F0 - 0x0700C640\nstatic const Vtx castle_grounds_seg7_vertex_0700C5F0[] = {\n    {{{   460,      0,   -359}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{     0,      0,   -479}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{     0,      0,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{     0,      0,    480}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   460,      0,    360}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700C640 - 0x0700C670\nstatic const Vtx castle_grounds_seg7_vertex_0700C640[] = {\n    {{{   460,      0,    360}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{   460,      0,   -359}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n    {{{     0,      0,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x00}}},\n};\n\n// 0x0700C670 - 0x0700C6A8\nconst Gfx castle_grounds_seg7_dl_0700C670[] = {\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsSPLight(&castle_grounds_seg7_lights_0700C4C8.l, 1),\n    gsSPLight(&castle_grounds_seg7_lights_0700C4C8.a, 2),\n    gsSPVertex(castle_grounds_seg7_vertex_0700C500, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700C6A8 - 0x0700C6E8\nconst Gfx castle_grounds_seg7_dl_0700C6A8[] = {\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsSPLight(&castle_grounds_seg7_lights_0700C4C8.l, 1),\n    gsSPLight(&castle_grounds_seg7_lights_0700C4C8.a, 2),\n    gsSPVertex(castle_grounds_seg7_vertex_0700C530, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700C6E8 - 0x0700C728\nconst Gfx castle_grounds_seg7_dl_0700C6E8[] = {\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsSPLight(&castle_grounds_seg7_lights_0700C4C8.l, 1),\n    gsSPLight(&castle_grounds_seg7_lights_0700C4C8.a, 2),\n    gsSPVertex(castle_grounds_seg7_vertex_0700C570, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700C728 - 0x0700C768\nconst Gfx castle_grounds_seg7_dl_0700C728[] = {\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsSPLight(&castle_grounds_seg7_lights_0700C4C8.l, 1),\n    gsSPLight(&castle_grounds_seg7_lights_0700C4C8.a, 2),\n    gsSPVertex(castle_grounds_seg7_vertex_0700C5B0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700C768 - 0x0700C7C8\nconst Gfx castle_grounds_seg7_dl_0700C768[] = {\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsSPLight(&castle_grounds_seg7_lights_0700C4E0.l, 1),\n    gsSPLight(&castle_grounds_seg7_lights_0700C4E0.a, 2),\n    gsSPVertex(castle_grounds_seg7_vertex_0700C5F0, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSPLight(&castle_grounds_seg7_lights_0700C4C8.l, 1),\n    gsSPLight(&castle_grounds_seg7_lights_0700C4C8.a, 2),\n    gsSPVertex(castle_grounds_seg7_vertex_0700C640, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_grounds/areas/1/12/model.inc.c",
    "content": "// TODO: what is this? 0700C960-0700C968 [8,8]\nUNUSED static const u64 castle_grounds_unused_2 = 0;\n\n// 0x0700C968 - 0x0700C9A8\nstatic const Vtx castle_grounds_seg7_vertex_0700C968[] = {\n    {{{     0,     82,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -71,    -81,      0}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    -81,      0}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -71,     82,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700C9A8 - 0x0700C9E8\nstatic const Vtx castle_grounds_seg7_vertex_0700C9A8[] = {\n    {{{    72,     82,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    -81,      0}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    72,    -81,      0}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,     82,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700C9E8 - 0x0700D9E8\nALIGNED8 static const Texture castle_grounds_seg7_texture_0700C9E8[] = {\n#include \"levels/castle_grounds/3.rgba16.inc.c\"\n};\n\n// 0x0700D9E8 - 0x0700E9E8\nALIGNED8 static const Texture castle_grounds_seg7_texture_0700D9E8[] = {\n#include \"levels/castle_grounds/4.rgba16.inc.c\"\n};\n\n// 0x0700E9E8 - 0x0700EA20\nstatic const Gfx castle_grounds_seg7_dl_0700E9E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, castle_grounds_seg7_texture_0700C9E8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_grounds_seg7_vertex_0700C968, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700EA20 - 0x0700EA58\nstatic const Gfx castle_grounds_seg7_dl_0700EA20[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, castle_grounds_seg7_texture_0700D9E8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_grounds_seg7_vertex_0700C9A8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700EA58 - 0x0700EAE8\nconst Gfx castle_grounds_seg7_dl_0700EA58[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALFADEA, G_CC_DECALFADEA),\n    gsDPSetRenderMode(G_RM_XLU_SURF, G_RM_XLU_SURF2),\n    gsDPSetTextureFilter(G_TF_BILERP),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(castle_grounds_seg7_dl_0700E9E8),\n    gsSPDisplayList(castle_grounds_seg7_dl_0700EA20),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_grounds/areas/1/13/model.inc.c",
    "content": "ALIGNED8 static const Texture castle_grounds_seg7_us_texture_0700EAE8[] = {\n#include \"levels/castle_grounds/5.ia8.inc.c\"\n};\n\n// 0x0700F2E8\nconst Gfx castle_grounds_seg7_us_dl_0700F2E8[] = {\n    gsDPPipeSync(),\n    gsDPSetTexturePersp(G_TP_NONE),\n    gsDPSetCombineMode(G_CC_FADEA, G_CC_FADEA),\n    gsDPSetRenderMode(G_RM_AA_XLU_SURF, G_RM_AA_XLU_SURF2),\n    gsDPSetTextureFilter(G_TF_POINT),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_8b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_8b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_8b, 1, castle_grounds_seg7_us_texture_0700EAE8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(116 << 2, 166 << 2, (116 + 64) << 2, (166 + 32) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10),\n    gsDPPipeSync(),\n    gsDPSetTexturePersp(G_TP_PERSP),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPSetTextureFilter(G_TF_BILERP),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_grounds/areas/1/2/model.inc.c",
    "content": "// 0x07006ED8 - 0x07006EF0\nstatic const Lights1 castle_grounds_seg7_lights_07006ED8 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07006EF0 - 0x07006F08\nstatic const Lights1 castle_grounds_seg7_lights_07006EF0 = gdSPDefLights1(\n    0x4e, 0x4e, 0x53,\n    0xc4, 0xc4, 0xd0, 0x28, 0x28, 0x28\n);\n\n// 0x07006F08 - 0x07006F20\nstatic const Lights1 castle_grounds_seg7_lights_07006F08 = gdSPDefLights1(\n    0x36, 0x36, 0x37,\n    0x89, 0x89, 0x8a, 0x28, 0x28, 0x28\n);\n\n// 0x07006F20 - 0x07006F38\nstatic const Lights1 castle_grounds_seg7_lights_07006F20 = gdSPDefLights1(\n    0x2d, 0x2d, 0x38,\n    0x72, 0x72, 0x8c, 0x28, 0x28, 0x28\n);\n\n// 0x07006F38 - 0x07006F50\nstatic const Lights1 castle_grounds_seg7_lights_07006F38 = gdSPDefLights1(\n    0x29, 0x29, 0x2a,\n    0x67, 0x67, 0x69, 0x28, 0x28, 0x28\n);\n\n// 0x07006F50 - 0x07006F68\nstatic const Lights1 castle_grounds_seg7_lights_07006F50 = gdSPDefLights1(\n    0x56, 0x56, 0x56,\n    0xd8, 0xd8, 0xd8, 0x28, 0x28, 0x28\n);\n\n// 0x07006F68 - 0x07006F80\nstatic const Lights1 castle_grounds_seg7_lights_07006F68 = gdSPDefLights1(\n    0x23, 0x23, 0x27,\n    0x58, 0x58, 0x62, 0x28, 0x28, 0x28\n);\n\n// 0x07006F80 - 0x07006F98\nstatic const Lights1 castle_grounds_seg7_lights_07006F80 = gdSPDefLights1(\n    0x13, 0x57, 0x00,\n    0x30, 0xdb, 0x02, 0x28, 0x28, 0x28\n);\n\n// 0x07006F98 - 0x07006FD8\nstatic const Vtx castle_grounds_seg7_vertex_07006F98[] = {\n    {{{  3555,    343,    -37}, 0, {     0,    479}, {0x13, 0x8f, 0x34, 0xff}}},\n    {{{  4791,    343,   -485}, 0, {  6518,    479}, {0x26, 0xc7, 0x6a, 0xff}}},\n    {{{  3556,    405,    -36}, 0, {     0,      0}, {0x46, 0x61, 0x28, 0xff}}},\n    {{{  4791,    405,   -485}, 0, {  6520,      0}, {0xc8, 0x57, 0x48, 0xff}}},\n};\n\n// 0x07006FD8 - 0x07007018\nstatic const Vtx castle_grounds_seg7_vertex_07006FD8[] = {\n    {{{  3363,    343,   -566}, 0, {     0,    479}, {0x2b, 0xb6, 0xa3, 0xff}}},\n    {{{  3362,    405,   -567}, 0, {   -38,      0}, {0xd8, 0x38, 0x96, 0xff}}},\n    {{{  4597,    343,  -1016}, 0, {  6558,    479}, {0xe2, 0xa6, 0xad, 0xff}}},\n    {{{  4597,    405,  -1016}, 0, {  6550,      0}, {0xb6, 0x60, 0xde, 0xff}}},\n};\n\n// 0x07007018 - 0x07007118\nstatic const Vtx castle_grounds_seg7_vertex_07007018[] = {\n    {{{  4989,    545,  -7072}, 0, { -3174,   -468}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4997,    545,  -8085}, 0, { -3902,   -874}, {0xc8, 0x6a, 0x28, 0xff}}},\n    {{{  4065,    545,  -7585}, 0, { -3928,     44}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6899,    371,  -2047}, 0, {  3586,  -6692}, {0x41, 0x68, 0x1e, 0xff}}},\n    {{{ -7685,    260,      0}, 0, {  1086,  -5464}, {0x3a, 0x70, 0x0b, 0xff}}},\n    {{{ -5438,    405,  -1522}, 0, {  4174,  -4760}, {0x00, 0x7e, 0x04, 0xff}}},\n    {{{ -4825,    553,   5288}, 0, { -1800,   2480}, {0x1b, 0x72, 0xd2, 0xff}}},\n    {{{ -4318,    260,   3323}, 0, {   466,   1044}, {0x07, 0x7e, 0xfb, 0xff}}},\n    {{{ -6678,    590,   4409}, 0, { -2358,   -172}, {0x2f, 0x6a, 0xce, 0xff}}},\n    {{{ -2047,    260,   5792}, 0, {  -164,   5658}, {0x00, 0x5a, 0xa7, 0xff}}},\n    {{{ -3471,    260,   4623}, 0, {  -124,   3134}, {0x12, 0x7c, 0xf0, 0xff}}},\n    {{{ -4599,    260,   2299}, 0, {  1222,   -224}, {0x03, 0x7e, 0xf8, 0xff}}},\n    {{{ -7415,    508,   3183}, 0, { -1742,  -2088}, {0x47, 0x63, 0xde, 0xff}}},\n    {{{ -7685,    260,   2269}, 0, { -1050,  -3252}, {0x4b, 0x65, 0xf1, 0xff}}},\n    {{{ -4666,    260,   1401}, 0, {  2016,  -1166}, {0xfe, 0x7e, 0x04, 0xff}}},\n    {{{ -4363,    371,    255}, 0, {  3306,  -1982}, {0xf9, 0x7e, 0x05, 0xff}}},\n};\n\n// 0x07007118 - 0x07007208\nstatic const Vtx castle_grounds_seg7_vertex_07007118[] = {\n    {{{ -2317,    639,   2048}, 0, {   360,    262}, {0xf0, 0x7d, 0x0e, 0xff}}},\n    {{{  -816,    260,   3370}, 0, {  1848,   1754}, {0xe3, 0x74, 0x29, 0xff}}},\n    {{{     0,    727,   2146}, 0, {  3038,    476}, {0x13, 0x7c, 0x0c, 0xff}}},\n    {{{  6623,    371,      0}, 0, {  2618,   1070}, {0xea, 0x78, 0x1f, 0xff}}},\n    {{{  7168,    474,      0}, 0, {  2838,    634}, {0xc0, 0x6b, 0x15, 0xff}}},\n    {{{  6301,    474,   -958}, 0, {  1786,    928}, {0xf2, 0x7d, 0x08, 0xff}}},\n    {{{  5249,    397,   -636}, 0, {  1588,   1878}, {0xfe, 0x7e, 0x0c, 0xff}}},\n    {{{  7203,    627,  -1945}, 0, {  1438,   -180}, {0xbb, 0x69, 0x07, 0xff}}},\n    {{{  5633,    371,  -2047}, 0, {   730,   1030}, {0xf5, 0x7e, 0x06, 0xff}}},\n    {{{ -2317,    260,   3579}, 0, {    62,   1908}, {0xf9, 0x7b, 0x1e, 0xff}}},\n    {{{ -3372,    260,   2933}, 0, { -1038,   1162}, {0xf6, 0x7e, 0x08, 0xff}}},\n    {{{ -3727,    260,   2048}, 0, { -1276,    194}, {0xf3, 0x7e, 0x06, 0xff}}},\n    {{{ -2317,    518,    929}, 0, {   580,   -944}, {0xec, 0x7d, 0xf8, 0xff}}},\n    {{{ -3360,    420,   1187}, 0, {  -682,   -714}, {0xef, 0x7d, 0x01, 0xff}}},\n    {{{ -1112,    801,   1396}, 0, {  1890,   -384}, {0xf7, 0x7e, 0x02, 0xff}}},\n};\n\n// 0x07007208 - 0x07007308\nstatic const Vtx castle_grounds_seg7_vertex_07007208[] = {\n    {{{ -5307,    543,  -3479}, 0, {  6096,  -6534}, {0x00, 0x7e, 0x0a, 0xff}}},\n    {{{ -5864,    543,  -3689}, 0, {  5880,  -7280}, {0x00, 0x7e, 0x06, 0xff}}},\n    {{{ -5220,    422,  -2744}, 0, {  5486,  -5738}, {0x00, 0x7e, 0x0b, 0xff}}},\n    {{{ -6899,    371,  -2047}, 0, {  3586,  -6692}, {0x41, 0x68, 0x1e, 0xff}}},\n    {{{ -5438,    405,  -1522}, 0, {  4174,  -4760}, {0x00, 0x7e, 0x04, 0xff}}},\n    {{{ -6641,    543,  -3573}, 0, {  5190,  -7922}, {0x37, 0x71, 0x10, 0xff}}},\n    {{{  7203,    627,  -1945}, 0, {  1438,   -180}, {0xbb, 0x69, 0x07, 0xff}}},\n    {{{  7305,    868,  -4095}, 0, {   -84,  -1140}, {0xc7, 0x6f, 0x10, 0xff}}},\n    {{{  5633,    371,  -2047}, 0, {   730,   1030}, {0xf5, 0x7e, 0x06, 0xff}}},\n    {{{  4963,    544,  -3762}, 0, {  -794,    852}, {0xf6, 0x7e, 0x07, 0xff}}},\n    {{{ -6479,    543,  -4496}, 0, {  6180,  -8664}, {0x43, 0x68, 0xe7, 0xff}}},\n    {{{  6789,   1022,  -5679}, 0, { -1450,  -1384}, {0xc6, 0x6d, 0x1a, 0xff}}},\n    {{{  5438,    704,  -5679}, 0, { -1992,   -292}, {0xe1, 0x7a, 0x07, 0xff}}},\n    {{{  4997,    545,  -8085}, 0, { -3902,   -874}, {0xc8, 0x6a, 0x28, 0xff}}},\n    {{{  4981,    545,  -6167}, 0, { -2524,   -108}, {0xeb, 0x7d, 0x00, 0xff}}},\n    {{{  5974,    910,  -7191}, 0, { -2872,  -1332}, {0xbe, 0x5d, 0x36, 0xff}}},\n};\n\n// 0x07007308 - 0x07007388\nstatic const Vtx castle_grounds_seg7_vertex_07007308[] = {\n    {{{ -5864,    543,  -3689}, 0, {  5880,  -7280}, {0x00, 0x7e, 0x06, 0xff}}},\n    {{{ -5784,    543,  -4360}, 0, {  6570,  -7856}, {0x1e, 0x5e, 0xb2, 0xff}}},\n    {{{ -6479,    543,  -4496}, 0, {  6180,  -8664}, {0x43, 0x68, 0xe7, 0xff}}},\n    {{{  5438,    704,  -5679}, 0, { -1992,   -292}, {0xe1, 0x7a, 0x07, 0xff}}},\n    {{{  4981,    545,  -6167}, 0, { -2524,   -108}, {0xeb, 0x7d, 0x00, 0xff}}},\n    {{{  4963,    544,  -3762}, 0, {  -794,    852}, {0xf6, 0x7e, 0x07, 0xff}}},\n    {{{  6789,   1022,  -5679}, 0, { -1450,  -1384}, {0xc6, 0x6d, 0x1a, 0xff}}},\n    {{{  5974,    910,  -7191}, 0, { -2872,  -1332}, {0xbe, 0x5d, 0x36, 0xff}}},\n};\n\n// 0x07007388 - 0x07007488\nstatic const Vtx castle_grounds_seg7_vertex_07007388[] = {\n    {{{  3468,    545,  -5438}, 0, {   362,  -7036}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4989,    545,  -7072}, 0, {  3454,  -8724}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4065,    545,  -7585}, 0, {  2328,  -9954}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4409,    545,  -5437}, 0, {  1770,  -6566}, {0xd8, 0x78, 0x00, 0xff}}},\n    {{{  4981,    545,  -6167}, 0, {  2992,  -7374}, {0xeb, 0x7d, 0x00, 0xff}}},\n    {{{ -2317,    518,    929}, 0, { -1958,  -4904}, {0xec, 0x7d, 0xf8, 0xff}}},\n    {{{ -2047,    518,   -162}, 0, { -1854,  -7084}, {0xfb, 0x64, 0xb3, 0xff}}},\n    {{{ -3360,    420,   1187}, 0, { -3934,  -4388}, {0xef, 0x7d, 0x01, 0xff}}},\n    {{{ -4318,    260,   3323}, 0, { -4996,   -126}, {0x07, 0x7e, 0xfb, 0xff}}},\n    {{{ -3884,    260,   6005}, 0, { -3058,   5226}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3372,    260,   2933}, 0, { -3262,   -904}, {0xf6, 0x7e, 0x08, 0xff}}},\n    {{{ -4599,    260,   2299}, 0, { -5964,  -2170}, {0x03, 0x7e, 0xf8, 0xff}}},\n    {{{ -3727,    260,   2048}, 0, { -4324,  -2670}, {0xf3, 0x7e, 0x06, 0xff}}},\n    {{{   723,    260,   2933}, 0, {  4912,   -904}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   723,    260,   6005}, 0, {  6138,   5226}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4666,    260,   1401}, 0, { -6458,  -3962}, {0xfe, 0x7e, 0x04, 0xff}}},\n};\n\n// 0x07007488 - 0x07007588\nstatic const Vtx castle_grounds_seg7_vertex_07007488[] = {\n    {{{ -3360,    420,   1187}, 0, { -3934,  -4388}, {0xef, 0x7d, 0x01, 0xff}}},\n    {{{ -4363,    371,    255}, 0, { -6308,  -6248}, {0xf9, 0x7e, 0x05, 0xff}}},\n    {{{ -3727,    260,   2048}, 0, { -4324,  -2670}, {0xf3, 0x7e, 0x06, 0xff}}},\n    {{{ -4666,    260,   1401}, 0, { -6458,  -3962}, {0xfe, 0x7e, 0x04, 0xff}}},\n    {{{ -2047,    518,   -162}, 0, { -1854,  -7084}, {0xfb, 0x64, 0xb3, 0xff}}},\n    {{{ -4132,    371,   -562}, 0, { -6174,  -7884}, {0x24, 0x5d, 0xb3, 0xff}}},\n    {{{ -4671,    422,  -2545}, 0, {  1452,   -334}, {0x68, 0x46, 0x0c, 0xff}}},\n    {{{ -5220,    422,  -2744}, 0, {   360,   -740}, {0x00, 0x7e, 0x0b, 0xff}}},\n    {{{ -4796,    405,  -1606}, 0, {  1258,   1260}, {0x52, 0x5c, 0xe5, 0xff}}},\n    {{{  4791,    405,   -485}, 0, {  -126,   1036}, {0xc8, 0x57, 0x48, 0xff}}},\n    {{{  5249,    397,   -636}, 0, {   632,   1040}, {0xfe, 0x7e, 0x0c, 0xff}}},\n    {{{  4597,    405,  -1016}, 0, {  -150,    146}, {0xb6, 0x60, 0xde, 0xff}}},\n    {{{  5633,    371,  -2047}, 0, {  1912,   -880}, {0xf5, 0x7e, 0x06, 0xff}}},\n    {{{  5052,    371,  -2053}, 0, {  1044,  -1178}, {0xb9, 0x68, 0x0c, 0xff}}},\n    {{{  4963,    544,  -3762}, 0, {  1764,  -3782}, {0xf6, 0x7e, 0x07, 0xff}}},\n    {{{  4407,    545,  -3689}, 0, {   896,  -3950}, {0xaa, 0x5a, 0x15, 0xff}}},\n};\n\n// 0x07007588 - 0x07007688\nstatic const Vtx castle_grounds_seg7_vertex_07007588[] = {\n    {{{ -4796,    405,  -1606}, 0, {  1258,   1260}, {0x52, 0x5c, 0xe5, 0xff}}},\n    {{{ -5438,    405,  -1522}, 0, {     0,    990}, {0x00, 0x7e, 0x04, 0xff}}},\n    {{{ -4132,    371,   -562}, 0, {  2490,   3082}, {0x24, 0x5d, 0xb3, 0xff}}},\n    {{{ -4363,    371,    255}, 0, {  2100,   4468}, {0xf9, 0x7e, 0x05, 0xff}}},\n    {{{ -5220,    422,  -2744}, 0, {   360,   -740}, {0x00, 0x7e, 0x0b, 0xff}}},\n    {{{ -5307,    543,  -3479}, 0, {   276,  -1966}, {0x00, 0x7e, 0x0a, 0xff}}},\n    {{{ -4700,    543,  -3663}, 0, {  1366,  -2246}, {0x58, 0x5a, 0xfb, 0xff}}},\n    {{{ -4671,    422,  -2545}, 0, {  1452,   -334}, {0x68, 0x46, 0x0c, 0xff}}},\n    {{{ -2047,    518,   -162}, 0, { -1854,  -7084}, {0xfb, 0x64, 0xb3, 0xff}}},\n    {{{ -2317,    518,    929}, 0, { -1958,  -4904}, {0xec, 0x7d, 0xf8, 0xff}}},\n    {{{  -553,    811,   -162}, 0, {  1128,  -7084}, {0xf1, 0x76, 0xd4, 0xff}}},\n    {{{  4407,    545,  -3689}, 0, {   896,  -3950}, {0xaa, 0x5a, 0x15, 0xff}}},\n    {{{  4963,    544,  -3762}, 0, {  1764,  -3782}, {0xf6, 0x7e, 0x07, 0xff}}},\n    {{{  4409,    545,  -5437}, 0, {  1770,  -6566}, {0xd8, 0x78, 0x00, 0xff}}},\n    {{{  4981,    545,  -6167}, 0, {  2992,  -7374}, {0xeb, 0x7d, 0x00, 0xff}}},\n    {{{ -1112,    801,   1396}, 0, {   632,  -3972}, {0xf7, 0x7e, 0x02, 0xff}}},\n};\n\n// 0x07007688 - 0x07007788\nstatic const Vtx castle_grounds_seg7_vertex_07007688[] = {\n    {{{  2314,    371,   -162}, 0, {  6852,  -7084}, {0xfb, 0x5a, 0xa7, 0xff}}},\n    {{{   554,    811,   -162}, 0, {  3338,  -7084}, {0x0e, 0x7a, 0xe4, 0xff}}},\n    {{{  2318,    371,    683}, 0, {  7198,  -5396}, {0x1e, 0x77, 0x1f, 0xff}}},\n    {{{  -553,    811,   -162}, 0, {  1128,  -7084}, {0xf1, 0x76, 0xd4, 0xff}}},\n    {{{ -1112,    801,   1396}, 0, {   632,  -3972}, {0xf7, 0x7e, 0x02, 0xff}}},\n    {{{    91,    801,   1396}, 0, {  3038,  -3972}, {0x0d, 0x7d, 0x09, 0xff}}},\n    {{{  3556,    405,    -36}, 0, {  8994,  -6764}, {0x46, 0x61, 0x28, 0xff}}},\n    {{{  3362,    405,   -567}, 0, {  8782,  -7892}, {0xd8, 0x38, 0x96, 0xff}}},\n    {{{ -4700,    543,  -3663}, 0, {  1366,  -2246}, {0x58, 0x5a, 0xfb, 0xff}}},\n    {{{ -4928,    543,  -4193}, 0, {   938,  -3164}, {0x3c, 0x52, 0xb5, 0xff}}},\n    {{{ -5307,    543,  -3479}, 0, {   276,  -1966}, {0x00, 0x7e, 0x0a, 0xff}}},\n    {{{ -5864,    543,  -3689}, 0, {  -734,  -2358}, {0x00, 0x7e, 0x06, 0xff}}},\n    {{{ -5784,    543,  -4360}, 0, {  -612,  -3498}, {0x1e, 0x5e, 0xb2, 0xff}}},\n    {{{  3468,    545,  -5438}, 0, {   362,  -7036}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4981,    545,  -6167}, 0, {  2992,  -7374}, {0xeb, 0x7d, 0x00, 0xff}}},\n    {{{  4989,    545,  -7072}, 0, {  3454,  -8724}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07007788 - 0x070077B8\nstatic const Vtx castle_grounds_seg7_vertex_07007788[] = {\n    {{{  4065,    545,  -7585}, 0, {  2328,  -9954}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3484,    545,  -7274}, 0, {  1304,  -9776}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3468,    545,  -5438}, 0, {   362,  -7036}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070077B8 - 0x07007858\nstatic const Vtx castle_grounds_seg7_vertex_070077B8[] = {\n    {{{  5709,  -1330,   4034}, 0, {   190,  -1150}, {0x3c, 0x6a, 0x1f, 0xff}}},\n    {{{  5667,  -1330,   3225}, 0, {   -40,    260}, {0x5b, 0x4a, 0xd2, 0xff}}},\n    {{{  5372,   -924,   3298}, 0, {   566,    188}, {0x0a, 0x7d, 0xee, 0xff}}},\n    {{{  5384,  -1330,   2982}, 0, {   420,    734}, {0xf4, 0x4d, 0x9d, 0xff}}},\n    {{{  4832,  -1330,   3682}, 0, {  1778,   -374}, {0xad, 0x5d, 0xee, 0xff}}},\n    {{{  5125,  -1330,   4077}, 0, {  1354,  -1114}, {0xe7, 0x71, 0x33, 0xff}}},\n    {{{  4994,  -1330,   4855}, 0, {   534,   -690}, {0xb5, 0x65, 0x09, 0xff}}},\n    {{{  5385,  -1330,   4964}, 0, {   592,    538}, {0x33, 0x62, 0x3e, 0xff}}},\n    {{{  5255,  -1125,   4748}, 0, {   652,    954}, {0x00, 0x7e, 0x09, 0xff}}},\n    {{{  5400,  -1330,   4459}, 0, {   -96,   1552}, {0x16, 0x6a, 0xc0, 0xff}}},\n};\n\n// 0x07007858 - 0x07007928\nstatic const Vtx castle_grounds_seg7_vertex_07007858[] = {\n    {{{  1704,     41,   2512}, 0, {  1884,    794}, {0x26, 0x78, 0x06, 0xff}}},\n    {{{  2076,     15,   2280}, 0, {  1166,    882}, {0x0f, 0x7d, 0x09, 0xff}}},\n    {{{  2102,     58,   1692}, 0, {   930,   1848}, {0x0f, 0x7d, 0x0a, 0xff}}},\n    {{{  2601,   -101,   2939}, 0, {   472,   -660}, {0x24, 0x77, 0x18, 0xff}}},\n    {{{  2103,     89,   1305}, 0, {   802,   2500}, {0x1f, 0x78, 0x18, 0xff}}},\n    {{{  2757,    -72,   2338}, 0, {     8,    226}, {0x0f, 0x7d, 0x0a, 0xff}}},\n    {{{  2708,    -10,   1639}, 0, {  -132,   1444}, {0x0f, 0x7d, 0x08, 0xff}}},\n    {{{  3238,    -89,   1787}, 0, { -1000,    760}, {0x23, 0x78, 0x10, 0xff}}},\n    {{{  1713,     -7,   3720}, 0, {  2268,  -1238}, {0x4f, 0x62, 0xf6, 0xff}}},\n    {{{  2967,  -1330,   5005}, 0, {   314,  -4684}, {0x62, 0x3f, 0xcf, 0xff}}},\n    {{{  3587,  -1330,   4339}, 0, {  -966,  -4062}, {0x39, 0x65, 0x31, 0xff}}},\n    {{{  4402,  -1330,   3226}, 0, { -2732,  -2850}, {0x54, 0x5c, 0x14, 0xff}}},\n    {{{  3362,      0,    725}, 0, { -1556,   2452}, {0x54, 0x5c, 0x17, 0xff}}},\n};\n\n// 0x07007928 - 0x07007968\nstatic const Vtx castle_grounds_seg7_vertex_07007928[] = {\n    {{{  2698,  -1330,   6144}, 0, {  2198,  -3082}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  7683,  -1330,    140}, 0, { -3330,   1754}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2698,  -1330,    140}, 0, {  3300,   2170}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  7724,  -1330,   5997}, 0, { -4458,  -3372}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07007968 - 0x070079C8\nstatic const Vtx castle_grounds_seg7_vertex_07007968[] = {\n    {{{  3784,  -1330,    590}, 0, { -2574,   2028}, {0x7b, 0x19, 0xf3, 0xff}}},\n    {{{  3362,      0,    725}, 0, { -1556,   2452}, {0x54, 0x5c, 0x17, 0xff}}},\n    {{{  4099,  -1330,   1483}, 0, { -2808,    294}, {0x72, 0x2e, 0xe2, 0xff}}},\n    {{{  4402,  -1330,   3226}, 0, { -2732,  -2850}, {0x54, 0x5c, 0x14, 0xff}}},\n    {{{  3238,    -89,   1787}, 0, { -1000,    760}, {0x23, 0x78, 0x10, 0xff}}},\n    {{{  2601,   -101,   2939}, 0, {   472,   -660}, {0x24, 0x77, 0x18, 0xff}}},\n};\n\n// 0x070079C8 - 0x07007A08\nstatic const Vtx castle_grounds_seg7_vertex_070079C8[] = {\n    {{{  3362,    405,   -567}, 0, {     0,    -36}, {0xd8, 0x38, 0x96, 0xff}}},\n    {{{  3556,    405,    -36}, 0, {     0,    990}, {0x46, 0x61, 0x28, 0xff}}},\n    {{{  4597,    405,  -1016}, 0, {  4068,    -36}, {0xb6, 0x60, 0xde, 0xff}}},\n    {{{  4791,    405,   -485}, 0, {  4068,    990}, {0xc8, 0x57, 0x48, 0xff}}},\n};\n\n// 0x07007A08 - 0x07007A48\nstatic const Vtx castle_grounds_seg7_vertex_07007A08[] = {\n    {{{  3363,    343,   -566}, 0, {     0,    -34}, {0x2b, 0xb6, 0xa3, 0xff}}},\n    {{{  4597,    343,  -1016}, 0, {  4068,    -36}, {0xe2, 0xa6, 0xad, 0xff}}},\n    {{{  3555,    343,    -37}, 0, {     0,    988}, {0x13, 0x8f, 0x34, 0xff}}},\n    {{{  4791,    343,   -485}, 0, {  4068,    990}, {0x26, 0xc7, 0x6a, 0xff}}},\n};\n\n// 0x07007A48 - 0x07007B38\nstatic const Vtx castle_grounds_seg7_vertex_07007A48[] = {\n    {{{  7552,    -58,   2256}, 0, {  3288,  -3310}, {0xb0, 0x5a, 0x24, 0xff}}},\n    {{{  6623,    371,      0}, 0, {  1644,   -944}, {0xea, 0x78, 0x1f, 0xff}}},\n    {{{  6237,    -52,    823}, 0, {  2446,   -972}, {0xc1, 0x58, 0x41, 0xff}}},\n    {{{  7168,    474,      0}, 0, {  1492,  -1570}, {0xc0, 0x6b, 0x15, 0xff}}},\n    {{{  5249,    397,   -636}, 0, {  1490,   1004}, {0xfe, 0x7e, 0x0c, 0xff}}},\n    {{{  4791,    405,   -485}, 0, {  1746,   1444}, {0xc8, 0x57, 0x48, 0xff}}},\n    {{{  -816,    260,   3370}, 0, { -1188,   -248}, {0xe3, 0x74, 0x29, 0xff}}},\n    {{{    48,    260,   3912}, 0, { -2002,   1104}, {0xaa, 0x53, 0x28, 0xff}}},\n    {{{   512,    925,   3527}, 0, { -1546,   1646}, {0xe8, 0x7c, 0x00, 0xff}}},\n    {{{     0,    727,   2146}, 0, {   330,    558}, {0x13, 0x7c, 0x0c, 0xff}}},\n    {{{  1062,    558,   3465}, 0, { -1528,   2396}, {0x47, 0x64, 0xe3, 0xff}}},\n    {{{  2103,     89,   1305}, 0, {  1198,   3260}, {0x1f, 0x78, 0x18, 0xff}}},\n    {{{  2318,    371,    683}, 0, {  1994,   3390}, {0x1e, 0x77, 0x1f, 0xff}}},\n    {{{    91,    801,   1396}, 0, {  1308,    480}, {0x0d, 0x7d, 0x09, 0xff}}},\n    {{{ -1112,    801,   1396}, 0, {  1446,  -1200}, {0xf7, 0x7e, 0x02, 0xff}}},\n};\n\n// 0x07007B38 - 0x07007BC8\nstatic const Vtx castle_grounds_seg7_vertex_07007B38[] = {\n    {{{  3556,    405,    -36}, 0, {  2800,   4920}, {0x46, 0x61, 0x28, 0xff}}},\n    {{{  2318,    371,    683}, 0, {  1994,   3390}, {0x1e, 0x77, 0x1f, 0xff}}},\n    {{{  3362,      0,    725}, 0, {  1818,   4858}, {0x54, 0x5c, 0x17, 0xff}}},\n    {{{  2103,     89,   1305}, 0, {  1198,   3260}, {0x1f, 0x78, 0x18, 0xff}}},\n    {{{  1173,    324,   2385}, 0, {  -116,   2256}, {0x32, 0x74, 0xff, 0xff}}},\n    {{{  1704,     41,   2512}, 0, {  -346,   3032}, {0x26, 0x78, 0x06, 0xff}}},\n    {{{     0,    727,   2146}, 0, {   330,    558}, {0x13, 0x7c, 0x0c, 0xff}}},\n    {{{  1062,    558,   3465}, 0, { -1528,   2396}, {0x47, 0x64, 0xe3, 0xff}}},\n    {{{  1713,     -7,   3720}, 0, { -1938,   3374}, {0x4f, 0x62, 0xf6, 0xff}}},\n};\n\n// 0x07007BC8 - 0x07007C98\nstatic const Vtx castle_grounds_seg7_vertex_07007BC8[] = {\n    {{{  7245,   -702,   4780}, 0, {  1496,   1008}, {0xb6, 0x55, 0xc7, 0xff}}},\n    {{{  5882,  -1330,   5370}, 0, {   552,   1788}, {0xd9, 0x3d, 0x99, 0xff}}},\n    {{{  6045,   -554,   5617}, 0, {   604,    740}, {0xe0, 0x44, 0x9b, 0xff}}},\n    {{{  6659,  -1330,   4236}, 0, {  1544,   1888}, {0xa8, 0x5a, 0xf7, 0xff}}},\n    {{{  2816,   -511,   5376}, 0, {  8900,    704}, {0x4d, 0x3c, 0xb0, 0xff}}},\n    {{{  2630,   -448,   4746}, 0, {  8568,    676}, {0x68, 0x36, 0xd2, 0xff}}},\n    {{{  2048,    236,   4760}, 0, {  8402,   -232}, {0x58, 0x4d, 0xd0, 0xff}}},\n    {{{  2967,  -1330,   5005}, 0, {  8830,   1820}, {0x62, 0x3f, 0xcf, 0xff}}},\n    {{{  1713,     -7,   3720}, 0, {  7880,    180}, {0x4f, 0x62, 0xf6, 0xff}}},\n    {{{  3784,  -1330,    590}, 0, {   528,   1824}, {0x7b, 0x19, 0xf3, 0xff}}},\n    {{{  3362,   -665,   -567}, 0, {  1986,   1436}, {0x77, 0x00, 0xd5, 0xff}}},\n    {{{  3556,    405,    -36}, 0, {  1142,      8}, {0x46, 0x61, 0x28, 0xff}}},\n    {{{  3363,    343,   -566}, 0, {  1864,    332}, {0x2b, 0xb6, 0xa3, 0xff}}},\n};\n\n// 0x07007C98 - 0x07007D58\nstatic const Vtx castle_grounds_seg7_vertex_07007C98[] = {\n    {{{ -4132,   -511,   -562}, 0, {  3088,    892}, {0x55, 0x00, 0xa3, 0xff}}},\n    {{{ -4132,    371,   -562}, 0, {  3206,    324}, {0x24, 0x5d, 0xb3, 0xff}}},\n    {{{ -2047,   -511,   -162}, 0, {  2220,    892}, {0x10, 0x00, 0x83, 0xff}}},\n    {{{ -2047,    518,   -162}, 0, {  2358,    228}, {0xfb, 0x64, 0xb3, 0xff}}},\n    {{{  -553,   -511,   -162}, 0, {  1598,    892}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3362,    405,   -567}, 0, {    94,    300}, {0xd8, 0x38, 0x96, 0xff}}},\n    {{{  3362,   -511,   -567}, 0, {   -30,    892}, {0xd2, 0x00, 0x8a, 0xff}}},\n    {{{  2321,   -511,   -162}, 0, {   404,    892}, {0xe1, 0x00, 0x85, 0xff}}},\n    {{{  2314,    371,   -162}, 0, {   524,    324}, {0xfb, 0x5a, 0xa7, 0xff}}},\n    {{{   554,   -511,   -162}, 0, {  1138,    892}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -553,    811,   -162}, 0, {  1776,     40}, {0xf1, 0x76, 0xd4, 0xff}}},\n    {{{   554,    811,   -162}, 0, {  1316,     40}, {0x0e, 0x7a, 0xe4, 0xff}}},\n};\n\n// 0x07007D58 - 0x07007D98\nstatic const Vtx castle_grounds_seg7_vertex_07007D58[] = {\n    {{{ -4928,    543,  -4193}, 0, {  2134,    164}, {0x3c, 0x52, 0xb5, 0xff}}},\n    {{{ -4700,    543,  -3663}, 0, {  1870,    164}, {0x58, 0x5a, 0xfb, 0xff}}},\n    {{{ -4702,  -1228,  -3663}, 0, {  1586,   1428}, {0x7a, 0x00, 0xdd, 0xff}}},\n    {{{ -4929,  -1228,  -4194}, 0, {  1850,   1428}, {0x4f, 0x00, 0x9e, 0xff}}},\n};\n\n// 0x07007D98 - 0x07007E78\nstatic const Vtx castle_grounds_seg7_vertex_07007D98[] = {\n    {{{  4403,   -657,   5715}, 0, {  9788,    868}, {0x04, 0x4a, 0x9a, 0xff}}},\n    {{{  3510,      0,   6358}, 0, {  9450,    -64}, {0x37, 0x57, 0xb7, 0xff}}},\n    {{{  4302,   -190,   6316}, 0, {  9808,    196}, {0x01, 0x64, 0xb3, 0xff}}},\n    {{{  6237,    -52,    823}, 0, {  4320,    496}, {0xc1, 0x58, 0x41, 0xff}}},\n    {{{  6864,  -1330,   2905}, 0, {  2716,   2008}, {0x9a, 0x3f, 0x27, 0xff}}},\n    {{{  7552,    -58,   2256}, 0, {  3110,    380}, {0xb0, 0x5a, 0x24, 0xff}}},\n    {{{  6045,  -1330,   1574}, 0, {  4140,   2120}, {0xa0, 0x34, 0x40, 0xff}}},\n    {{{  6659,  -1330,   4236}, 0, {  1544,   1888}, {0xa8, 0x5a, 0xf7, 0xff}}},\n    {{{  7245,   -702,   4780}, 0, {  1496,   1008}, {0xb6, 0x55, 0xc7, 0xff}}},\n    {{{  8018,   -101,   3280}, 0, {  2482,    344}, {0xa8, 0x59, 0x10, 0xff}}},\n    {{{  2048,    236,   4760}, 0, {  8402,   -232}, {0x58, 0x4d, 0xd0, 0xff}}},\n    {{{  2630,   -448,   4746}, 0, {  8568,    676}, {0x68, 0x36, 0xd2, 0xff}}},\n    {{{  1713,     -7,   3720}, 0, {  7880,    180}, {0x4f, 0x62, 0xf6, 0xff}}},\n    {{{  2816,   -511,   5376}, 0, {  8900,    704}, {0x4d, 0x3c, 0xb0, 0xff}}},\n};\n\n// 0x07007E78 - 0x07007F78\nstatic const Vtx castle_grounds_seg7_vertex_07007E78[] = {\n    {{{ -5940,   1466,  -6875}, 0, {   704,    412}, {0x3a, 0x2f, 0x66, 0xff}}},\n    {{{ -7318,   1567,  -5405}, 0, {  -220,    368}, {0x6a, 0x40, 0x17, 0xff}}},\n    {{{ -5900,    533,  -6711}, 0, {   666,    680}, {0x2c, 0x28, 0x6f, 0xff}}},\n    {{{  5019,  -1330,    140}, 0, {  5090,   2248}, {0x9b, 0x1a, 0x47, 0xff}}},\n    {{{  6237,    -52,    823}, 0, {  4320,    496}, {0xc1, 0x58, 0x41, 0xff}}},\n    {{{  4791,    405,   -485}, 0, {  5188,      8}, {0xc8, 0x57, 0x48, 0xff}}},\n    {{{  6045,  -1330,   1574}, 0, {  4140,   2120}, {0xa0, 0x34, 0x40, 0xff}}},\n    {{{ -5786,  -1228,  -4362}, 0, {   -78,   1232}, {0x59, 0x31, 0xb4, 0xff}}},\n    {{{ -5631,      0,  -6655}, 0, {   734,    840}, {0x2d, 0x3e, 0x64, 0xff}}},\n    {{{ -6613,    203,  -5005}, 0, {  -128,    784}, {0x67, 0x47, 0xf0, 0xff}}},\n    {{{ -4704,  -1228,  -5911}, 0, {   780,   1236}, {0x17, 0x32, 0x72, 0xff}}},\n    {{{ -4369,    373,  -6149}, 0, {   956,    792}, {0xf0, 0x22, 0x79, 0xff}}},\n    {{{ -5344,   1494,  -6924}, 0, {   906,    424}, {0x09, 0x37, 0x71, 0xff}}},\n    {{{ -6230,   1949,  -7009}, 0, {   656,    264}, {0x27, 0x4a, 0x5f, 0xff}}},\n    {{{ -7463,   2074,  -5749}, 0, {  -152,    212}, {0x5b, 0x4d, 0x2a, 0xff}}},\n    {{{ -3906,  -1228,  -6149}, 0, {  1108,   1256}, {0x24, 0x0a, 0x79, 0xff}}},\n};\n\n// 0x07007F78 - 0x07008078\nstatic const Vtx castle_grounds_seg7_vertex_07007F78[] = {\n    {{{ -4796,   -511,  -1606}, 0, {   674,    916}, {0x7e, 0x00, 0xf4, 0xff}}},\n    {{{ -4796,    405,  -1606}, 0, {   844,    164}, {0x52, 0x5c, 0xe5, 0xff}}},\n    {{{ -4132,   -511,   -562}, 0, {   154,    916}, {0x55, 0x00, 0xa3, 0xff}}},\n    {{{ -4132,    371,   -562}, 0, {   294,    288}, {0x24, 0x5d, 0xb3, 0xff}}},\n    {{{ -4671,    422,  -2545}, 0, {  1292,    252}, {0x68, 0x46, 0x0c, 0xff}}},\n    {{{ -4671,   -511,  -2545}, 0, {  1142,    916}, {0x7e, 0x00, 0x03, 0xff}}},\n    {{{ -7463,   2074,  -5749}, 0, {  -152,    212}, {0x5b, 0x4d, 0x2a, 0xff}}},\n    {{{ -7318,   1567,  -5405}, 0, {  -220,    368}, {0x6a, 0x40, 0x17, 0xff}}},\n    {{{ -5940,   1466,  -6875}, 0, {   704,    412}, {0x3a, 0x2f, 0x66, 0xff}}},\n    {{{ -5940,   1466,  -6875}, 0, {   630,    660}, {0x3a, 0x2f, 0x66, 0xff}}},\n    {{{ -5344,   1494,  -6924}, 0, {   802,    672}, {0x09, 0x37, 0x71, 0xff}}},\n    {{{ -6230,   1949,  -7009}, 0, {   598,    464}, {0x27, 0x4a, 0x5f, 0xff}}},\n    {{{ -8191,   3121,  -6586}, 0, {  -104,   -124}, {0x65, 0x4c, 0x06, 0xff}}},\n    {{{ -7796,   2569,  -6392}, 0, {   -42,     48}, {0x4b, 0x61, 0x1d, 0xff}}},\n    {{{ -8191,   3079,  -7570}, 0, {   226,   -136}, {0x35, 0x5f, 0x3f, 0xff}}},\n    {{{ -6230,   1949,  -7009}, 0, {   656,    264}, {0x27, 0x4a, 0x5f, 0xff}}},\n};\n\n// 0x07008078 - 0x07008178\nstatic const Vtx castle_grounds_seg7_vertex_07008078[] = {\n    {{{ -7796,   2569,  -6392}, 0, {   -42,     48}, {0x4b, 0x61, 0x1d, 0xff}}},\n    {{{ -7164,   2688,  -7336}, 0, {   470,     16}, {0x15, 0x53, 0x5c, 0xff}}},\n    {{{ -8191,   3079,  -7570}, 0, {   226,   -136}, {0x35, 0x5f, 0x3f, 0xff}}},\n    {{{ -6230,   1949,  -7009}, 0, {   656,    264}, {0x27, 0x4a, 0x5f, 0xff}}},\n    {{{ -6922,   2865,  -7377}, 0, {   558,    -28}, {0x08, 0x36, 0x72, 0xff}}},\n    {{{ -4671,    422,  -2545}, 0, {  1292,    252}, {0x68, 0x46, 0x0c, 0xff}}},\n    {{{ -4671,   -511,  -2545}, 0, {  1142,    916}, {0x7e, 0x00, 0x03, 0xff}}},\n    {{{ -4700,    543,  -3663}, 0, {  1870,    164}, {0x58, 0x5a, 0xfb, 0xff}}},\n    {{{ -4702,  -1228,  -3663}, 0, {  1586,   1428}, {0x7a, 0x00, 0xdd, 0xff}}},\n    {{{ -5344,   1494,  -6924}, 0, {   906,    424}, {0x09, 0x37, 0x71, 0xff}}},\n    {{{  4403,   -657,   5715}, 0, {  9788,    868}, {0x04, 0x4a, 0x9a, 0xff}}},\n    {{{  6045,   -554,   5617}, 0, { 10824,    740}, {0xe0, 0x44, 0x9b, 0xff}}},\n    {{{  5882,  -1330,   5370}, 0, { 10772,   1788}, {0xd9, 0x3d, 0x99, 0xff}}},\n    {{{  7878,   -101,   4665}, 0, {  1750,    224}, {0xab, 0x50, 0xd0, 0xff}}},\n    {{{  8018,   -101,   3280}, 0, {  2482,    344}, {0xa8, 0x59, 0x10, 0xff}}},\n    {{{  7245,   -702,   4780}, 0, {  1496,   1008}, {0xb6, 0x55, 0xc7, 0xff}}},\n};\n\n// 0x07008178 - 0x07008268\nstatic const Vtx castle_grounds_seg7_vertex_07008178[] = {\n    {{{  7552,    -58,   2256}, 0, {   226,    900}, {0xb0, 0x5a, 0x24, 0xff}}},\n    {{{  8018,   -101,   3280}, 0, {   880,    896}, {0xa8, 0x59, 0x10, 0xff}}},\n    {{{  8192,   1355,   1650}, 0, {    48,     16}, {0x9b, 0x45, 0x20, 0xff}}},\n    {{{  6377,   -101,   5989}, 0, {   698,    104}, {0xdc, 0x56, 0xab, 0xff}}},\n    {{{  7245,   -702,   4780}, 0, {  1496,   1008}, {0xb6, 0x55, 0xc7, 0xff}}},\n    {{{  6045,   -554,   5617}, 0, {   604,    740}, {0xe0, 0x44, 0x9b, 0xff}}},\n    {{{  7878,   -101,   4665}, 0, {  1750,    224}, {0xab, 0x50, 0xd0, 0xff}}},\n    {{{  6377,   -101,   5989}, 0, { 10918,    104}, {0xdc, 0x56, 0xab, 0xff}}},\n    {{{  4403,   -657,   5715}, 0, {  9788,    868}, {0x04, 0x4a, 0x9a, 0xff}}},\n    {{{  4302,   -190,   6316}, 0, {  9808,    196}, {0x01, 0x64, 0xb3, 0xff}}},\n    {{{  6045,   -554,   5617}, 0, { 10824,    740}, {0xe0, 0x44, 0x9b, 0xff}}},\n    {{{  2967,  -1330,   5005}, 0, {  8830,   1820}, {0x62, 0x3f, 0xcf, 0xff}}},\n    {{{  2816,   -511,   5376}, 0, {  8900,    704}, {0x4d, 0x3c, 0xb0, 0xff}}},\n    {{{  3913,  -1330,   5495}, 0, {  9464,   1776}, {0x19, 0x29, 0x8b, 0xff}}},\n    {{{  5882,  -1330,   5370}, 0, { 10772,   1788}, {0xd9, 0x3d, 0x99, 0xff}}},\n};\n\n// 0x07008268 - 0x070082C8\nstatic const Vtx castle_grounds_seg7_vertex_07008268[] = {\n    {{{ -6613,    203,  -5005}, 0, {   984,    620}, {0x67, 0x47, 0xf0, 0xff}}},\n    {{{ -6479,    543,  -4496}, 0, {   892,    424}, {0x43, 0x68, 0xe7, 0xff}}},\n    {{{ -5784,    543,  -4360}, 0, {   544,    388}, {0x1e, 0x5e, 0xb2, 0xff}}},\n    {{{ -5786,  -1228,  -4362}, 0, {   432,   1340}, {0x59, 0x31, 0xb4, 0xff}}},\n    {{{ -4928,    543,  -4193}, 0, {   114,    340}, {0x3c, 0x52, 0xb5, 0xff}}},\n    {{{ -4929,  -1228,  -4194}, 0, {     2,   1292}, {0x4f, 0x00, 0x9e, 0xff}}},\n};\n\n// 0x070082C8 - 0x07008338\nstatic const Vtx castle_grounds_seg7_vertex_070082C8[] = {\n    {{{ -6479,    543,  -4496}, 0, {   892,    424}, {0x43, 0x68, 0xe7, 0xff}}},\n    {{{ -6613,    203,  -5005}, 0, {   984,    620}, {0x67, 0x47, 0xf0, 0xff}}},\n    {{{ -7318,   1567,  -5405}, 0, {  1450,    -72}, {0x6a, 0x40, 0x17, 0xff}}},\n    {{{  4597,    405,  -1016}, 0, {   334,    176}, {0xb6, 0x60, 0xde, 0xff}}},\n    {{{  4597,   -665,  -1016}, 0, {   208,   1228}, {0x89, 0x00, 0x2b, 0xff}}},\n    {{{  4791,    405,   -485}, 0, {   756,    -44}, {0xc8, 0x57, 0x48, 0xff}}},\n    {{{  5019,  -1330,    140}, 0, {  1028,   1604}, {0x9b, 0x1a, 0x47, 0xff}}},\n};\n\n// 0x07008338 - 0x07008368\nstatic const Vtx castle_grounds_seg7_vertex_07008338[] = {\n    {{{  3362,      0,    725}, 0, {   346,     12}, {0x54, 0x5c, 0x17, 0xff}}},\n    {{{  3784,  -1330,    590}, 0, {   528,   1824}, {0x7b, 0x19, 0xf3, 0xff}}},\n    {{{  3556,    405,    -36}, 0, {  1142,      8}, {0x46, 0x61, 0x28, 0xff}}},\n};\n\n// 0x07008368 - 0x07008458\nstatic const Vtx castle_grounds_seg7_vertex_07008368[] = {\n    {{{ -8011,   1630,   3950}, 0, {   720,  -4336}, {0x5c, 0x48, 0xd1, 0xff}}},\n    {{{ -7167,   1937,   5120}, 0, {   862,  -5772}, {0x4a, 0x43, 0xb3, 0xff}}},\n    {{{ -6678,    590,   4409}, 0, {   356,  -5088}, {0x2f, 0x6a, 0xce, 0xff}}},\n    {{{  7203,    627,  -1945}, 0, {   140,    692}, {0xbb, 0x69, 0x07, 0xff}}},\n    {{{  8192,   1876,  -2047}, 0, {   804,   1080}, {0x9e, 0x4f, 0x09, 0xff}}},\n    {{{  8192,   2189,  -4095}, 0, {   852,  -1320}, {0x99, 0x49, 0x09, 0xff}}},\n    {{{  7305,    868,  -4095}, 0, {   144,  -1860}, {0xc7, 0x6f, 0x10, 0xff}}},\n    {{{  8192,   1710,      0}, 0, {   836,   3532}, {0x9e, 0x50, 0x09, 0xff}}},\n    {{{  7168,    474,      0}, 0, {   172,   3024}, {0xc0, 0x6b, 0x15, 0xff}}},\n    {{{  8192,   1355,   1650}, 0, {   718,   5880}, {0x9b, 0x45, 0x20, 0xff}}},\n    {{{  7552,    -58,   2256}, 0, {   128,   5428}, {0xb0, 0x5a, 0x24, 0xff}}},\n    {{{  8192,   2540,  -6143}, 0, {   920,  -3700}, {0xa6, 0x4f, 0x29, 0xff}}},\n    {{{  6789,   1022,  -5679}, 0, {   134,  -3752}, {0xc6, 0x6d, 0x1a, 0xff}}},\n    {{{ -7415,    508,   3183}, 0, {   294,  -3548}, {0x47, 0x63, 0xde, 0xff}}},\n    {{{ -8191,   1729,   2324}, 0, {   712,  -2256}, {0x73, 0x34, 0xf4, 0xff}}},\n};\n\n// 0x07008458 - 0x07008558\nstatic const Vtx castle_grounds_seg7_vertex_07008458[] = {\n    {{{ -8191,   1667,      0}, 0, {   630,    680}, {0x71, 0x37, 0x06, 0xff}}},\n    {{{ -8191,   1729,   2324}, 0, {   712,  -2256}, {0x73, 0x34, 0xf4, 0xff}}},\n    {{{ -7835,   1019,      0}, 0, {   394,    576}, {0x77, 0x2a, 0x02, 0xff}}},\n    {{{ -4090,   1231,   6630}, 0, {   618,   3240}, {0x08, 0x5e, 0xac, 0xff}}},\n    {{{ -4825,    553,   5288}, 0, {   310,   4244}, {0x1b, 0x72, 0xd2, 0xff}}},\n    {{{ -5750,   1704,   6144}, 0, {   772,   4928}, {0x34, 0x54, 0xb2, 0xff}}},\n    {{{ -6678,    590,   4409}, 0, {   274,   6272}, {0x2f, 0x6a, 0xce, 0xff}}},\n    {{{ -7167,   1937,   5120}, 0, {   832,   6424}, {0x4a, 0x43, 0xb3, 0xff}}},\n    {{{ -2047,    260,   5792}, 0, {   264,   1276}, {0x00, 0x5a, 0xa7, 0xff}}},\n    {{{ -7685,    260,   2269}, 0, {   180,  -2428}, {0x4b, 0x65, 0xf1, 0xff}}},\n    {{{ -7415,    508,   3183}, 0, {   294,  -3548}, {0x47, 0x63, 0xde, 0xff}}},\n    {{{ -2069,   1169,   6155}, 0, {   648,   1036}, {0xf7, 0x4e, 0x9d, 0xff}}},\n    {{{ -2064,   1550,   6813}, 0, {   810,    924}, {0xfe, 0x6d, 0xc0, 0xff}}},\n    {{{  2155,   1057,   6472}, 0, {   720,  -3580}, {0x33, 0x6c, 0xd9, 0xff}}},\n    {{{  1536,    718,   4698}, 0, {   558,  -2800}, {0x3d, 0x69, 0xdd, 0xff}}},\n    {{{   785,    996,   5113}, 0, {   656,  -2052}, {0xed, 0x78, 0xde, 0xff}}},\n};\n\n// 0x07008558 - 0x07008638\nstatic const Vtx castle_grounds_seg7_vertex_07008558[] = {\n    {{{  2155,   1057,   6472}, 0, {   720,  -3580}, {0x33, 0x6c, 0xd9, 0xff}}},\n    {{{  2048,    236,   4760}, 0, {   368,  -3224}, {0x58, 0x4d, 0xd0, 0xff}}},\n    {{{  1536,    718,   4698}, 0, {   558,  -2800}, {0x3d, 0x69, 0xdd, 0xff}}},\n    {{{  3510,      0,   6358}, 0, {   310,  -4764}, {0x37, 0x57, 0xb7, 0xff}}},\n    {{{   785,    996,   5113}, 0, {   656,  -2052}, {0xed, 0x78, 0xde, 0xff}}},\n    {{{   -19,   1473,   6727}, 0, {   834,  -1304}, {0xfb, 0x74, 0xcf, 0xff}}},\n    {{{ -7685,    260,   2269}, 0, {   180,  -2428}, {0x4b, 0x65, 0xf1, 0xff}}},\n    {{{ -7685,    260,      0}, 0, {   120,    452}, {0x3a, 0x70, 0x0b, 0xff}}},\n    {{{ -7835,   1019,      0}, 0, {   394,    576}, {0x77, 0x2a, 0x02, 0xff}}},\n    {{{ -2069,   1169,   6155}, 0, {   648,   1036}, {0xf7, 0x4e, 0x9d, 0xff}}},\n    {{{ -2064,   1550,   6813}, 0, {   810,    924}, {0xfe, 0x6d, 0xc0, 0xff}}},\n    {{{  -265,   1126,   6164}, 0, {   682,   -936}, {0xe5, 0x61, 0xb3, 0xff}}},\n    {{{ -2047,    260,   5792}, 0, {   264,   1276}, {0x00, 0x5a, 0xa7, 0xff}}},\n    {{{  -829,    260,   5658}, 0, {   298,    -64}, {0xe8, 0x42, 0x97, 0xff}}},\n};\n\n// 0x07008638 - 0x07008738\nstatic const Vtx castle_grounds_seg7_vertex_07008638[] = {\n    {{{   512,    925,   3527}, 0, {   688,  -1004}, {0xe8, 0x7c, 0x00, 0xff}}},\n    {{{   -24,    260,   5009}, 0, {   330,   1340}, {0xac, 0x56, 0xda, 0xff}}},\n    {{{   785,    996,   5113}, 0, {   804,    736}, {0xed, 0x78, 0xde, 0xff}}},\n    {{{  -829,    260,   5658}, 0, {   298,    -64}, {0xe8, 0x42, 0x97, 0xff}}},\n    {{{  -265,   1126,   6164}, 0, {   682,   -936}, {0xe5, 0x61, 0xb3, 0xff}}},\n    {{{   -24,    260,   5009}, 0, {   320,   -952}, {0xac, 0x56, 0xda, 0xff}}},\n    {{{   785,    996,   5113}, 0, {   656,  -2052}, {0xed, 0x78, 0xde, 0xff}}},\n    {{{ -7685,    260,      0}, 0, {   120,    452}, {0x3a, 0x70, 0x0b, 0xff}}},\n    {{{ -6899,    371,  -2047}, 0, {   106,   3064}, {0x41, 0x68, 0x1e, 0xff}}},\n    {{{ -7867,   1237,  -1398}, 0, {   436,   2380}, {0x6c, 0x3c, 0x1b, 0xff}}},\n    {{{ -7835,   1019,      0}, 0, {   394,    576}, {0x77, 0x2a, 0x02, 0xff}}},\n    {{{ -8191,   1667,      0}, 0, {   630,    680}, {0x71, 0x37, 0x06, 0xff}}},\n    {{{ -8164,   2413,  -2679}, 0, {   864,   4368}, {0x67, 0x45, 0x17, 0xff}}},\n    {{{  1536,    718,   4698}, 0, {   608,    536}, {0x3d, 0x69, 0xdd, 0xff}}},\n    {{{  1062,    558,   3465}, 0, {   452,   -712}, {0x47, 0x64, 0xe3, 0xff}}},\n    {{{    48,    260,   3912}, 0, {   282,     88}, {0xaa, 0x53, 0x28, 0xff}}},\n};\n\n// 0x07008738 - 0x07008818\nstatic const Vtx castle_grounds_seg7_vertex_07008738[] = {\n    {{{ -7337,   1521,  -2854}, 0, {   500,   4276}, {0x62, 0x4a, 0x1d, 0xff}}},\n    {{{ -8164,   2413,  -2679}, 0, {   864,   4368}, {0x67, 0x45, 0x17, 0xff}}},\n    {{{ -7867,   1237,  -1398}, 0, {   436,   2380}, {0x6c, 0x3c, 0x1b, 0xff}}},\n    {{{ -6899,    371,  -2047}, 0, {   106,   3064}, {0x41, 0x68, 0x1e, 0xff}}},\n    {{{ -6641,    543,  -3573}, 0, {    66,   5000}, {0x37, 0x71, 0x10, 0xff}}},\n    {{{ -7091,   1592,  -4094}, 0, {   494,   5860}, {0x65, 0x4c, 0x06, 0xff}}},\n    {{{ -8191,   2574,  -4095}, 0, {   848,   6024}, {0x5f, 0x52, 0x0c, 0xff}}},\n    {{{ -6479,    543,  -4496}, 0, {   104,   6200}, {0x43, 0x68, 0xe7, 0xff}}},\n    {{{ -7318,   1567,  -5405}, 0, {   450,   7520}, {0x6a, 0x40, 0x17, 0xff}}},\n    {{{ -7463,   2074,  -5749}, 0, {   624,   8040}, {0x5b, 0x4d, 0x2a, 0xff}}},\n    {{{ -8191,   3121,  -6586}, 0, {   980,   9272}, {0x65, 0x4c, 0x06, 0xff}}},\n    {{{  1062,    558,   3465}, 0, {   452,   -712}, {0x47, 0x64, 0xe3, 0xff}}},\n    {{{  1536,    718,   4698}, 0, {   608,    536}, {0x3d, 0x69, 0xdd, 0xff}}},\n    {{{  2048,    236,   4760}, 0, {   304,   1080}, {0x58, 0x4d, 0xd0, 0xff}}},\n};\n\n// 0x07008818 - 0x07008908\nstatic const Vtx castle_grounds_seg7_vertex_07008818[] = {\n    {{{ -5344,   1494,  -6924}, 0, {   392,   1780}, {0x09, 0x37, 0x71, 0xff}}},\n    {{{ -4369,    373,  -6149}, 0, {   -54,   2004}, {0xf0, 0x22, 0x79, 0xff}}},\n    {{{ -4369,   2195,  -7760}, 0, {   446,    276}, {0x1b, 0x4d, 0x60, 0xff}}},\n    {{{ -6922,   2865,  -7377}, 0, {   962,   2064}, {0x08, 0x36, 0x72, 0xff}}},\n    {{{  4997,    545,  -8085}, 0, {    48,  -7608}, {0xc8, 0x6a, 0x28, 0xff}}},\n    {{{  5974,    910,  -7191}, 0, {    38,  -6100}, {0xbe, 0x5d, 0x36, 0xff}}},\n    {{{  4997,   2201,  -8085}, 0, {   512,  -6632}, {0xc3, 0x1b, 0x6b, 0xff}}},\n    {{{  6684,   2540,  -7764}, 0, {   556,  -5844}, {0xc6, 0x3b, 0x60, 0xff}}},\n    {{{  5974,    910,  -7191}, 0, {   -16,  -5664}, {0xbe, 0x5d, 0x36, 0xff}}},\n    {{{  6789,   1022,  -5679}, 0, {   134,  -3752}, {0xc6, 0x6d, 0x1a, 0xff}}},\n    {{{  8192,   2540,  -6143}, 0, {   920,  -3700}, {0xa6, 0x4f, 0x29, 0xff}}},\n    {{{  6684,   2540,  -7764}, 0, {   826,  -5700}, {0xc6, 0x3b, 0x60, 0xff}}},\n    {{{  1713,     -7,   3720}, 0, {   150,   -324}, {0x4f, 0x62, 0xf6, 0xff}}},\n    {{{  1062,    558,   3465}, 0, {   452,   -712}, {0x47, 0x64, 0xe3, 0xff}}},\n    {{{  2048,    236,   4760}, 0, {   304,   1080}, {0x58, 0x4d, 0xd0, 0xff}}},\n};\n\n// 0x07008908 - 0x070089B8\nstatic const Vtx castle_grounds_seg7_vertex_07008908[] = {\n    {{{   554,   -511,   -162}, 0, {   576,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -553,   -511,   -162}, 0, {  6100,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -553,    607,   -162}, 0, {  6100,  -5610}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5052,   -511,  -2053}, 0, { -5628,    820}, {0x83, 0x00, 0xed, 0xff}}},\n    {{{  4597,   -511,  -1016}, 0, {  2012,    990}, {0x8c, 0x00, 0xcd, 0xff}}},\n    {{{  4597,    405,  -1016}, 0, {  2112,  -3584}, {0xb6, 0x60, 0xde, 0xff}}},\n    {{{  5052,    371,  -2053}, 0, { -5532,  -3584}, {0xb9, 0x68, 0x0c, 0xff}}},\n    {{{  4407,   -511,  -3689}, 0, {  1744,    794}, {0x85, 0x00, 0x1f, 0xff}}},\n    {{{  4407,    545,  -3689}, 0, {  1744,  -4480}, {0xaa, 0x5a, 0x15, 0xff}}},\n    {{{  4409,    545,  -5437}, 0, { -6976,  -4480}, {0xd8, 0x78, 0x00, 0xff}}},\n    {{{   554,    607,   -162}, 0, {   576,  -5610}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070089B8 - 0x070089F8\nstatic const Vtx castle_grounds_seg7_vertex_070089B8[] = {\n    {{{  5052,   -511,  -2053}, 0, {  2412,    810}, {0x83, 0x00, 0xed, 0xff}}},\n    {{{  5052,    371,  -2053}, 0, {  2412,  -3594}, {0xb9, 0x68, 0x0c, 0xff}}},\n    {{{  4407,   -511,  -3689}, 0, { -6360,    810}, {0x85, 0x00, 0x1f, 0xff}}},\n    {{{  4407,    545,  -3689}, 0, { -6360,  -4462}, {0xaa, 0x5a, 0x15, 0xff}}},\n};\n\n// 0x070089F8 - 0x07008A68\nstatic const Gfx castle_grounds_seg7_dl_070089F8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_0900B000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 16 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&castle_grounds_seg7_lights_07006ED8.l, 1),\n    gsSPLight(&castle_grounds_seg7_lights_07006ED8.a, 2),\n    gsSPVertex(castle_grounds_seg7_vertex_07006F98, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSPLight(&castle_grounds_seg7_lights_07006EF0.l, 1),\n    gsSPLight(&castle_grounds_seg7_lights_07006EF0.a, 2),\n    gsSPVertex(castle_grounds_seg7_vertex_07006FD8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008A68 - 0x07008BF0\nstatic const Gfx castle_grounds_seg7_dl_07008A68[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&castle_grounds_seg7_lights_07006ED8.l, 1),\n    gsSPLight(&castle_grounds_seg7_lights_07006ED8.a, 2),\n    gsSPVertex(castle_grounds_seg7_vertex_07007018, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10,  6, 0x0),\n    gsSP2Triangles( 7,  6, 10, 0x0,  7, 11,  8, 0x0),\n    gsSP2Triangles(12,  8, 11, 0x0, 13, 12, 11, 0x0),\n    gsSP2Triangles(11, 14, 13, 0x0, 13, 14,  4, 0x0),\n    gsSP2Triangles(15,  4, 14, 0x0, 15,  5,  4, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07007118, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  7,  5,  4, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 9,  1,  0, 0x0,  9,  0, 10, 0x0),\n    gsSP2Triangles(11, 10,  0, 0x0, 12, 13,  0, 0x0),\n    gsSP2Triangles( 0, 13, 11, 0x0,  2, 14,  0, 0x0),\n    gsSP1Triangle(12,  0, 14, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07007208, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 2,  5,  4, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 7,  9,  8, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles( 1, 10,  5, 0x0, 11, 12,  7, 0x0),\n    gsSP2Triangles(12,  9,  7, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07007308, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  3, 0x0,  3,  7,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008BF0 - 0x07008D70\nstatic const Gfx castle_grounds_seg7_dl_07008BF0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_grounds_seg7_vertex_07007388, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(11,  8, 12, 0x0, 10, 12,  8, 0x0),\n    gsSP2Triangles( 9, 13, 10, 0x0,  9, 14, 13, 0x0),\n    gsSP1Triangle(11, 12, 15, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07007488, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  1,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 10, 0x0, 11, 10, 13, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0, 15, 13, 14, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07007588, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  5,  4,  6, 0x0),\n    gsSP2Triangles( 6,  4,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 14, 13, 12, 0x0),\n    gsSP1Triangle(15, 10,  9, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07007688, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 2,  1,  5, 0x0,  0,  6,  7, 0x0),\n    gsSP2Triangles( 2,  6,  0, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(10,  9, 11, 0x0, 12, 11,  9, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07007788, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008D70 - 0x07008DE8\nstatic const Gfx castle_grounds_seg7_dl_07008D70[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09009000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&castle_grounds_seg7_lights_07006F08.l, 1),\n    gsSPLight(&castle_grounds_seg7_lights_07006F08.a, 2),\n    gsSPVertex(castle_grounds_seg7_vertex_070077B8, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 3,  4,  2, 0x0,  5,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  2, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9,  6,  8, 0x0,  7,  9,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008DE8 - 0x07008EE8\nstatic const Gfx castle_grounds_seg7_dl_07008DE8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09009800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&castle_grounds_seg7_lights_07006ED8.l, 1),\n    gsSPLight(&castle_grounds_seg7_lights_07006ED8.a, 2),\n    gsSPVertex(castle_grounds_seg7_vertex_07007858, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  1,  3,  5, 0x0),\n    gsSP2Triangles( 4,  2,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 7,  6,  5, 0x0,  7,  5,  3, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10, 11,  3, 0x0),\n    gsSP2Triangles( 3,  8, 10, 0x0,  8,  3,  0, 0x0),\n    gsSP1Triangle( 4,  7, 12, 0x0),\n    gsSPLight(&castle_grounds_seg7_lights_07006F08.l, 1),\n    gsSPLight(&castle_grounds_seg7_lights_07006F08.a, 2),\n    gsSPVertex(castle_grounds_seg7_vertex_07007928, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPLight(&castle_grounds_seg7_lights_07006ED8.l, 1),\n    gsSPLight(&castle_grounds_seg7_lights_07006ED8.a, 2),\n    gsSPVertex(castle_grounds_seg7_vertex_07007968, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 3,  1,  4, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008EE8 - 0x07008F48\nstatic const Gfx castle_grounds_seg7_dl_07008EE8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_0900B400),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_grounds_seg7_vertex_070079C8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSPLight(&castle_grounds_seg7_lights_07006F20.l, 1),\n    gsSPLight(&castle_grounds_seg7_lights_07006F20.a, 2),\n    gsSPVertex(castle_grounds_seg7_vertex_07007A08, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008F48 - 0x07009010\nstatic const Gfx castle_grounds_seg7_dl_07008F48[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&castle_grounds_seg7_lights_07006ED8.l, 1),\n    gsSPLight(&castle_grounds_seg7_lights_07006ED8.a, 2),\n    gsSPVertex(castle_grounds_seg7_vertex_07007A48, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  4,  5,  2, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6,  8, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0,  9, 11, 12, 0x0),\n    gsSP2Triangles(12, 13,  9, 0x0, 13, 14,  9, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07007B38, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  3,  6,  4, 0x0),\n    gsSP2Triangles( 4,  7,  5, 0x0,  6,  7,  4, 0x0),\n    gsSP1Triangle( 7,  8,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009010 - 0x07009330\nstatic const Gfx castle_grounds_seg7_dl_07009010[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_grounds_seg7_vertex_07007BC8, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  4,  7, 0x0),\n    gsSP2Triangles( 8,  5,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(10, 12, 11, 0x0),\n    gsSPLight(&castle_grounds_seg7_lights_07006F38.l, 1),\n    gsSPLight(&castle_grounds_seg7_lights_07006F38.a, 2),\n    gsSPVertex(castle_grounds_seg7_vertex_07007C98, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles( 3, 10,  4, 0x0,  8,  9, 11, 0x0),\n    gsSPLight(&castle_grounds_seg7_lights_07006F50.l, 1),\n    gsSPLight(&castle_grounds_seg7_lights_07006F50.a, 2),\n    gsSPVertex(castle_grounds_seg7_vertex_07007D58, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSPLight(&castle_grounds_seg7_lights_07006ED8.l, 1),\n    gsSPLight(&castle_grounds_seg7_lights_07006ED8.a, 2),\n    gsSPVertex(castle_grounds_seg7_vertex_07007D98, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  4,  3, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9,  7, 0x0,  5,  7,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10,  1, 13, 0x0),\n    gsSP1Triangle( 0, 13,  1, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07007E78, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  8,  7, 0x0, 10, 11,  8, 0x0),\n    gsSP2Triangles( 2,  8, 11, 0x0,  2,  9,  8, 0x0),\n    gsSP2Triangles( 9,  2,  1, 0x0,  2, 11, 12, 0x0),\n    gsSP2Triangles(12,  0,  2, 0x0, 13, 14,  0, 0x0),\n    gsSP1Triangle(15, 11, 10, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07007F78, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 1,  0,  4, 0x0,  5,  4,  0, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12,  6, 13, 0x0),\n    gsSP1Triangle( 6, 15, 13, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07008078, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  4,  1,  3, 0x0),\n    gsSP2Triangles( 9,  4,  3, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07008178, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles( 8, 14, 13, 0x0, 12,  8, 13, 0x0),\n    gsSPLight(&castle_grounds_seg7_lights_07006F68.l, 1),\n    gsSPLight(&castle_grounds_seg7_lights_07006F68.a, 2),\n    gsSPVertex(castle_grounds_seg7_vertex_07008268, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 2,  4,  3, 0x0,  3,  4,  5, 0x0),\n    gsSPLight(&castle_grounds_seg7_lights_07006F08.l, 1),\n    gsSPLight(&castle_grounds_seg7_lights_07006F08.a, 2),\n    gsSPVertex(castle_grounds_seg7_vertex_070082C8, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 5,  4,  6, 0x0),\n    gsSPLight(&castle_grounds_seg7_lights_07006ED8.l, 1),\n    gsSPLight(&castle_grounds_seg7_lights_07006ED8.a, 2),\n    gsSPVertex(castle_grounds_seg7_vertex_07008338, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009330 - 0x07009568\nstatic const Gfx castle_grounds_seg7_dl_07009330[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&castle_grounds_seg7_lights_07006F80.l, 1),\n    gsSPLight(&castle_grounds_seg7_lights_07006F80.a, 2),\n    gsSPVertex(castle_grounds_seg7_vertex_07008368, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  3,  7,  4, 0x0),\n    gsSP2Triangles( 3,  8,  7, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  9,  8, 0x0,  6,  5, 11, 0x0),\n    gsSP2Triangles( 6, 11, 12, 0x0,  2, 13,  0, 0x0),\n    gsSP1Triangle( 0, 13, 14, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07008458, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  5,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  4,  3, 0x0,  9,  1, 10, 0x0),\n    gsSP2Triangles( 3, 11,  8, 0x0, 12, 11,  3, 0x0),\n    gsSP2Triangles( 9,  2,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07008558, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  5, 11, 10, 0x0),\n    gsSP2Triangles(12,  9, 13, 0x0, 11, 13,  9, 0x0),\n    gsSP1Triangle( 5,  4, 11, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07008638, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  5,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(12, 11,  9, 0x0,  0,  2, 13, 0x0),\n    gsSP2Triangles(14,  0, 13, 0x0,  1,  0, 15, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07008738, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  0,  3, 0x0,  4,  5,  0, 0x0),\n    gsSP2Triangles( 6,  0,  5, 0x0,  1,  0,  6, 0x0),\n    gsSP2Triangles( 4,  7,  5, 0x0,  5,  8,  6, 0x0),\n    gsSP2Triangles( 8,  5,  7, 0x0,  9, 10,  6, 0x0),\n    gsSP2Triangles( 8,  9,  6, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07008818, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009568 - 0x070095F0\nstatic const Gfx castle_grounds_seg7_dl_07009568[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09006800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&castle_grounds_seg7_lights_07006F38.l, 1),\n    gsSPLight(&castle_grounds_seg7_lights_07006F38.a, 2),\n    gsSPVertex(castle_grounds_seg7_vertex_07008908, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle( 0,  2, 10, 0x0),\n    gsSPLight(&castle_grounds_seg7_lights_07006F08.l, 1),\n    gsSPLight(&castle_grounds_seg7_lights_07006F08.a, 2),\n    gsSPVertex(castle_grounds_seg7_vertex_070089B8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070095F0 - 0x070096F8\nconst Gfx castle_grounds_seg7_dl_070095F0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (16 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(castle_grounds_seg7_dl_070089F8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(castle_grounds_seg7_dl_07008A68),\n    gsSPDisplayList(castle_grounds_seg7_dl_07008BF0),\n    gsSPDisplayList(castle_grounds_seg7_dl_07008D70),\n    gsSPDisplayList(castle_grounds_seg7_dl_07008DE8),\n    gsSPDisplayList(castle_grounds_seg7_dl_07008EE8),\n    gsSPDisplayList(castle_grounds_seg7_dl_07008F48),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(castle_grounds_seg7_dl_07009010),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(castle_grounds_seg7_dl_07009330),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(castle_grounds_seg7_dl_07009568),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_grounds/areas/1/3/geo.inc.c",
    "content": "// 0x0E0006F4\nconst GeoLayout castle_grounds_geo_0006F4[] = {\n    GEO_CULLING_RADIUS(2100),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, castle_grounds_seg7_dl_0700A290),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/castle_grounds/areas/1/3/model.inc.c",
    "content": "// 0x070096F8 - 0x070097F8\nstatic const Vtx castle_grounds_seg7_vertex_070096F8[] = {\n    {{{   349,   3669,    156}, 0, {   198,    328}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   508,   3431,    227}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   359,   3662,   -375}, 0, {  1968,    366}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   555,   2139,   -518}, 0, {  2974,   -448}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   562,   2150,    244}, 0, {   436,   -438}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   937,   1751,   -654}, 0, {  3426,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   945,   1751,    384}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   562,   2150,    244}, 0, {  1874,   -426}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   307,   2154,    551}, 0, {   544,   -392}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   945,   1751,    384}, 0, {  2374,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   466,   1751,    926}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -306,   2154,    551}, 0, {   496,   -410}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -465,   1751,    926}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   307,   2154,    551}, 0, {  2538,   -410}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   466,   1751,    926}, 0, {  3068,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   509,   3430,   -487}, 0, {  2344,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070097F8 - 0x070098D8\nstatic const Vtx castle_grounds_seg7_vertex_070097F8[] = {\n    {{{   349,   3669,    156}, 0, {   998,    306}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   202,   3672,    340}, 0, {   214,    318}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   508,   3431,    227}, 0, {  1156,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   282,   3431,    503}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   202,   3672,    340}, 0, {  1580,    326}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -201,   3672,    340}, 0, {   234,    326}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   282,   3431,    503}, 0, {  1844,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -281,   3431,    503}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   4741,    -96}, 0, {   728,  -2344}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   349,   3669,    156}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   359,   3662,   -375}, 0, {  1738,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   4741,    -96}, 0, {   990,  -2430}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   202,   3672,    340}, 0, {   206,    976}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   349,   3669,    156}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070098D8 - 0x070099B8\nstatic const Vtx castle_grounds_seg7_vertex_070098D8[] = {\n    {{{     0,   4741,    -96}, 0, {   640,  -2440}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -201,   3672,    340}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   202,   3672,    340}, 0, {  1314,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   4741,    -96}, 0, {   646,  -2434}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{     0,   3660,   -546}, 0, {     0,    990}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{  -358,   3662,   -375}, 0, {  1292,    990}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{     0,   2136,   -792}, 0, {   642,   -136}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{     0,   1751,  -1195}, 0, {     0,    990}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{  -554,   2139,   -518}, 0, {  2698,     -4}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{  -936,   1751,   -654}, 0, {  3566,    990}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{     0,   3660,   -546}, 0, {   240,    320}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{     0,   3431,   -733}, 0, {     0,    990}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{  -358,   3662,   -375}, 0, {  1564,    320}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{  -508,   3430,   -487}, 0, {  1850,    990}, {0x91, 0x91, 0xa5, 0xff}}},\n};\n\n// 0x070099B8 - 0x07009AA8\nstatic const Vtx castle_grounds_seg7_vertex_070099B8[] = {\n    {{{     0,   3660,   -546}, 0, {  1578,    320}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{   359,   3662,   -375}, 0, {   254,    320}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{     0,   3431,   -733}, 0, {  1850,    990}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{   509,   3430,   -487}, 0, {     0,    990}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{     0,   4741,    -96}, 0, {   978,  -2344}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -358,   3662,   -375}, 0, {     0,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -348,   3669,    156}, 0, {  1738,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -561,   2150,    244}, 0, {  2906,   -438}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -936,   1751,   -654}, 0, {   -82,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -944,   1751,    384}, 0, {  3374,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -554,   2139,   -518}, 0, {   368,   -448}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{     0,   2136,   -792}, 0, {  2892,   -348}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   555,   2139,   -518}, 0, {   836,   -242}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{     0,   1751,  -1195}, 0, {  3566,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   937,   1751,   -654}, 0, {     0,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n};\n\n// 0x07009AA8 - 0x07009B98\nstatic const Vtx castle_grounds_seg7_vertex_07009AA8[] = {\n    {{{  -348,   3669,    156}, 0, {  2114,    328}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -358,   3662,   -375}, 0, {   344,    366}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -507,   3431,    227}, 0, {  2344,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -508,   3430,   -487}, 0, {     0,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -561,   2150,    244}, 0, {   468,   -426}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  -944,   1751,    384}, 0, {     0,    990}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  -306,   2154,    551}, 0, {  1798,   -392}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  -465,   1751,    926}, 0, {  2374,    990}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  -348,   3669,    156}, 0, {   124,    306}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  -507,   3431,    227}, 0, {     0,    990}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  -201,   3672,    340}, 0, {   908,    318}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  -281,   3431,    503}, 0, {  1156,    990}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{     0,   4741,    -96}, 0, {    26,  -2430}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  -348,   3669,    156}, 0, {     0,    990}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  -201,   3672,    340}, 0, {   752,    990}, {0xe5, 0xe5, 0xea, 0xff}}},\n};\n\n// 0x07009B98 - 0x07009BC8\nstatic const Vtx castle_grounds_seg7_vertex_07009B98[] = {\n    {{{     0,   4741,    -96}, 0, {   612,  -2434}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{   359,   3662,   -375}, 0, {     0,    990}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{     0,   3660,   -546}, 0, {  1292,    990}, {0xe5, 0xe5, 0xea, 0xff}}},\n};\n\n// 0x07009BC8 - 0x07009CB8\nstatic const Vtx castle_grounds_seg7_vertex_07009BC8[] = {\n    {{{  -936,   1751,   -654}, 0, {  2012,  -7748}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{     0,   1751,  -1195}, 0, { -3380,  -7748}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{     0,      0,  -1195}, 0, { -3380,    990}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{   937,      0,   -654}, 0, {   480,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{     0,   1751,  -1195}, 0, {  5876,  -7748}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   937,   1751,   -654}, 0, {   480,  -7748}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{     0,      0,  -1195}, 0, {  5876,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   555,   2139,   -518}, 0, {     0,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{     0,   2136,   -792}, 0, {  3056,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   509,   3430,   -487}, 0, {    64,  -5458}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{     0,   3431,   -733}, 0, {  2888,  -5480}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   945,   1751,    384}, 0, {  3576,  -7748}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   466,   1751,    926}, 0, {     0,  -7748}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   945,      0,    384}, 0, {  3576,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   466,      0,    926}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07009CB8 - 0x07009DA8\nstatic const Vtx castle_grounds_seg7_vertex_07009CB8[] = {\n    {{{   508,   3431,    227}, 0, {  1788,  -5406}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   307,   2154,    551}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   562,   2150,    244}, 0, {  1964,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   282,   3431,    503}, 0, {     8,  -5388}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -508,   3430,   -487}, 0, {  2448,  -5458}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{     0,   3431,   -733}, 0, {  -368,  -5480}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{  -554,   2139,   -518}, 0, {  2544,    990}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{  -936,   1751,   -654}, 0, {  2012,  -7748}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{     0,      0,  -1195}, 0, { -3380,    990}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{  -936,      0,   -654}, 0, {  2012,    990}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{     0,   2136,   -792}, 0, {  -540,    990}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{  -944,   1751,    384}, 0, {  2012,  -7748}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -936,      0,   -654}, 0, { -3172,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -944,      0,    384}, 0, {  2012,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -936,   1751,   -654}, 0, { -3172,  -7748}, {0xad, 0xad, 0xbc, 0xff}}},\n};\n\n// 0x07009DA8 - 0x07009E98\nstatic const Vtx castle_grounds_seg7_vertex_07009DA8[] = {\n    {{{  -508,   3430,   -487}, 0, {   720,  -5454}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -554,   2139,   -518}, 0, {   480,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -507,   3431,    227}, 0, {  4284,  -5410}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{  -561,   2150,    244}, 0, {  4284,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{   509,   3430,   -487}, 0, {  3536,  -5454}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{   508,   3431,    227}, 0, {     0,  -5410}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{   555,   2139,   -518}, 0, {  3772,    990}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{   937,   1751,   -654}, 0, {  4644,  -7748}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{   945,      0,    384}, 0, {  -540,    990}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{   937,      0,   -654}, 0, {  4644,    990}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{   945,   1751,    384}, 0, {  -540,  -7748}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  -944,      0,    384}, 0, { -1592,    990}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  -465,      0,    926}, 0, {  2012,    990}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  -944,   1751,    384}, 0, { -1592,  -7748}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  -465,   1751,    926}, 0, {  2012,  -7748}, {0xe5, 0xe5, 0xea, 0xff}}},\n};\n\n// 0x07009E98 - 0x07009F88\nstatic const Vtx castle_grounds_seg7_vertex_07009E98[] = {\n    {{{  -507,   3431,    227}, 0, {   144,  -5406}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  -561,   2150,    244}, 0, {     0,    990}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  -306,   2154,    551}, 0, {  1964,    990}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{  -281,   3431,    503}, 0, {  1924,  -5388}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{   508,   3431,    227}, 0, {     0,  -5410}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{   562,   2150,    244}, 0, {     0,    990}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{   555,   2139,   -518}, 0, {  3772,    990}, {0xe5, 0xe5, 0xea, 0xff}}},\n    {{{   466,   1751,    926}, 0, {  2012,  -7748}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -465,      0,    926}, 0, { -2632,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   466,      0,    926}, 0, {  2012,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -465,   1751,    926}, 0, { -2632,  -7748}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   282,   3431,    503}, 0, {  2908,  -5388}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -306,   2154,    551}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   307,   2154,    551}, 0, {  3032,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -281,   3431,    503}, 0, {    92,  -5388}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07009F88 - 0x07009FD8\nstatic const Vtx castle_grounds_seg7_vertex_07009F88[] = {\n    {{{    26,   4639,    -96}, 0, {     0,      0}, {0x32, 0x32, 0x32, 0xff}}},\n    {{{     0,   5253,    -96}, 0, {     0,      0}, {0x32, 0x32, 0x32, 0xff}}},\n    {{{     0,   4639,    -76}, 0, {     0,      0}, {0x32, 0x32, 0x32, 0xff}}},\n    {{{     0,   4639,   -117}, 0, {     0,      0}, {0x32, 0x32, 0x32, 0xff}}},\n    {{{   -25,   4639,    -96}, 0, {     0,      0}, {0x32, 0x32, 0x32, 0xff}}},\n};\n\n// 0x07009FD8 - 0x0700A140\nstatic const Gfx castle_grounds_seg7_dl_07009FD8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_grounds_seg7_vertex_070096F8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(13, 12, 14, 0x0,  2,  1, 15, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_070097F8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_070098D8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_070099B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  8,  7, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07009AA8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07009B98, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A140 - 0x0700A260\nstatic const Gfx castle_grounds_seg7_dl_0700A140[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_grounds_seg7_vertex_07009BC8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(13, 12, 14, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07009CB8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 5, 10,  6, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 12, 11, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07009DA8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  8,  7, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(13, 12, 14, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_07009E98, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  8,  7, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 12, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A260 - 0x0700A290\nstatic const Gfx castle_grounds_seg7_dl_0700A260[] = {\n    gsSPVertex(castle_grounds_seg7_vertex_07009F88, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  4,  1,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A290 - 0x0700A328\nconst Gfx castle_grounds_seg7_dl_0700A290[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(castle_grounds_seg7_dl_07009FD8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(castle_grounds_seg7_dl_0700A140),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(castle_grounds_seg7_dl_0700A260),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_grounds/areas/1/4/model.inc.c",
    "content": "// 0x0700A328 - 0x0700A418\nstatic const Vtx castle_grounds_seg7_vertex_0700A328[] = {\n    {{{ -4817,    405,  -1601}, 0, { 18906,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4817,    508,  -1601}, 0, { 18872,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4692,    524,  -2546}, 0, {  -154,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5856,    543,  -4352}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4942,    540,  -4175}, 0, { 18556,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5856,    646,  -4352}, 0, {   -38,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4942,    642,  -4175}, 0, { 18550,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4942,    540,  -4175}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4723,    645,  -3663}, 0, { 11102,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4942,    642,  -4175}, 0, {   -20,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4723,    543,  -3663}, 0, { 11090,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4723,    543,  -3663}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4692,    422,  -2546}, 0, { 22390,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4692,    524,  -2546}, 0, { 22168,    -20}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4723,    645,  -3663}, 0, {  -250,    -20}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700A418 - 0x0700A508\nstatic const Vtx castle_grounds_seg7_vertex_0700A418[] = {\n    {{{ -4817,    405,  -1601}, 0, {   500,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4144,    370,   -544}, 0, { 25534,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4144,    473,   -544}, 0, { 25476,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4692,    422,  -2546}, 0, {  -118,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4817,    405,  -1601}, 0, { 18906,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4692,    524,  -2546}, 0, {  -154,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4144,    370,   -544}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3098,    444,   -343}, 0, { 21296,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3098,    547,   -343}, 0, { 21438,    -28}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4144,    473,   -544}, 0, {   110,    -28}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3098,    444,   -343}, 0, {   -38,   2008}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2051,    518,   -142}, 0, { 21288,   2008}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2051,    621,   -142}, 0, { 21430,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3098,    547,   -343}, 0, {   102,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4817,    508,  -1601}, 0, {   442,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700A508 - 0x0700A5F8\nstatic const Vtx castle_grounds_seg7_vertex_0700A508[] = {\n    {{{  5231,    387,   -651}, 0, { -8206,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4795,    394,   -508}, 0, {   956,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4795,    497,   -508}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1305,    767,   -142}, 0, { 15460,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2051,    518,   -142}, 0, {   -98,   1972}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1295,    667,   -142}, 0, { 15266,   1972}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2051,    621,   -142}, 0, {   294,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -612,    903,   -141}, 0, { 14240,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1295,    667,   -142}, 0, {   -62,   1972}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -592,    805,   -141}, 0, { 14236,   1972}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1305,    767,   -142}, 0, {   130,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4616,    404,  -1008}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5070,    473,  -2042}, 0, { 22452,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4617,    507,  -1011}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5068,    371,  -2039}, 0, { 22452,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700A5F8 - 0x0700A6E8\nstatic const Vtx castle_grounds_seg7_vertex_0700A5F8[] = {\n    {{{  2316,    371,   -141}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3323,    403,   -530}, 0, { 21430,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3323,    506,   -530}, 0, { 21430,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5231,    387,   -651}, 0, { -8206,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4795,    497,   -508}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5232,    489,   -652}, 0, { -8206,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2316,    473,   -141}, 0, { 17278,     32}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1459,    584,   -141}, 0, {   192,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2316,    371,   -141}, 0, { 17790,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1471,    684,   -141}, 0, {   -54,     32}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1471,    684,   -141}, 0, { 17318,     32}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   603,    798,   -141}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1459,    584,   -141}, 0, { 17566,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   628,    894,   -141}, 0, {   -16,     32}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2316,    473,   -141}, 0, {    16,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700A6E8 - 0x0700A728\nstatic const Vtx castle_grounds_seg7_vertex_0700A6E8[] = {\n    {{{ -5856,    543,  -4352}, 0, { 18364,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5856,    646,  -4352}, 0, { 18364,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6620,    646,  -3837}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6620,    543,  -3837}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700A728 - 0x0700A860\nstatic const Gfx castle_grounds_seg7_dl_0700A728[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, castle_grounds_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_grounds_seg7_vertex_0700A328, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_0700A418, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_0700A508, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_0700A5F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_0700A6E8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A860 - 0x0700A8D0\nconst Gfx castle_grounds_seg7_dl_0700A860[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(castle_grounds_seg7_dl_0700A728),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_grounds/areas/1/5/model.inc.c",
    "content": "// 0x0700A8D0 - 0x0700A9C0\nstatic const Vtx castle_grounds_seg7_vertex_0700A8D0[] = {\n    {{{ -4998,    316,    603}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5397,    265,   1006}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4993,    281,   1006}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4857,    316,   3006}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5259,    380,   3413}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4855,    330,   3415}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5260,    366,   3004}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6012,    435,   3247}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6417,    458,   3248}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6414,    499,   3655}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6009,    476,   3654}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6303,    260,   1201}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6705,    260,   1608}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6300,    260,   1607}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6708,    260,   1202}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700A9C0 - 0x0700AAB0\nstatic const Vtx castle_grounds_seg7_vertex_0700A9C0[] = {\n    {{{ -6070,    452,  -2345}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6473,    427,  -2347}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6468,    386,  -1945}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4998,    316,    603}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5402,    299,    602}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5397,    265,   1006}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4507,    367,    226}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4906,    317,    629}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4502,    333,    630}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4911,    351,    226}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5311,    382,   -850}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5715,    367,   -850}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5711,    351,   -446}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5307,    365,   -446}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6064,    411,  -1944}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700AAB0 - 0x0700ABA0\nstatic const Vtx castle_grounds_seg7_vertex_0700AAB0[] = {\n    {{{ -2355,    535,   2446}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2757,    382,   2818}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2358,    439,   2832}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5396,    437,  -2835}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5797,    465,  -2834}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5793,    454,  -2430}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5392,    426,  -2431}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5751,    536,  -3646}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6152,    543,  -3647}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6149,    497,  -3247}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5747,    490,  -3245}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1700,    463,   2673}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2113,    381,   3062}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1704,    368,   3059}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2109,    476,   2676}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700ABA0 - 0x0700AC90\nstatic const Vtx castle_grounds_seg7_vertex_0700ABA0[] = {\n    {{{    35,    716,   2812}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -290,    551,   2805}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -283,    537,   3214}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2355,    535,   2446}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2753,    478,   2432}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2757,    382,   2818}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1118,    755,   1671}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1524,    672,   2067}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1115,    690,   2070}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1527,    737,   1668}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1805,    653,   1265}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2220,    615,   1656}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1822,    692,   1653}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2203,    577,   1268}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    43,    701,   3221}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700AC90 - 0x0700AD80\nstatic const Vtx castle_grounds_seg7_vertex_0700AC90[] = {\n    {{{  2115,    312,    950}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1723,    265,   1363}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2078,    112,   1291}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1612,    100,   3077}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1333,    325,   3494}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1605,     92,   3486}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1340,    333,   3085}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   935,    415,   2391}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   574,    558,   2423}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   594,    621,   2820}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   955,    478,   2787}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1315,    318,   1775}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   937,    415,   2191}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1307,    293,   2183}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   945,    439,   1783}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700AD80 - 0x0700AE70\nstatic const Vtx castle_grounds_seg7_vertex_0700AD80[] = {\n    {{{  5978,    431,  -1320}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5570,    413,   -910}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5977,    448,   -911}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2115,    312,    950}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1763,    465,   1020}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1723,    265,   1363}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3364,    277,    273}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2993,    377,    310}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2954,    179,    654}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3327,     80,    614}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6369,    323,      3}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5984,    112,    334}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6383,    172,    360}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5970,    263,    -22}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5572,    396,  -1319}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700AE70 - 0x0700AF60\nstatic const Vtx castle_grounds_seg7_vertex_0700AE70[] = {\n    {{{  6064,    734,  -4652}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5661,    681,  -4649}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5665,    661,  -4246}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6604,    528,  -1890}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6204,    461,  -1480}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6605,    526,  -1481}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6202,    463,  -1888}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6154,    580,  -3051}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5751,    532,  -3047}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5759,    474,  -2647}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6163,    522,  -2651}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5664,    584,  -3471}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5260,    536,  -3467}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5268,    478,  -3066}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5672,    526,  -3070}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700AF60 - 0x0700AFD0\nstatic const Vtx castle_grounds_seg7_vertex_0700AF60[] = {\n    {{{  6597,    947,  -5509}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6217,    790,  -5117}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6610,    882,  -5114}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6064,    734,  -4652}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5665,    661,  -4246}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6068,    714,  -4250}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6203,    855,  -5512}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700AFD0 - 0x0700B1D0\nstatic const Gfx castle_grounds_seg7_dl_0700AFD0[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, outside_0900BC00),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_grounds_seg7_vertex_0700A8D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_0700A9C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_0700AAB0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_0700ABA0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_0700AC90, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_0700AD80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_0700AE70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_0700AF60, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  6,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700B1D0 - 0x0700B240\nconst Gfx castle_grounds_seg7_dl_0700B1D0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(castle_grounds_seg7_dl_0700AFD0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_grounds/areas/1/6/model.inc.c",
    "content": "// 0x0700B240 - 0x0700B340\nstatic const Vtx castle_grounds_seg7_vertex_0700B240[] = {\n    {{{ -3491,   1630,  -5396}, 0, {     0,      0}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{ -3491,   1630,  -5716}, 0, {   990,      0}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{ -3491,   1310,  -5716}, 0, {   990,    990}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{ -3491,   1310,  -5396}, 0, {     0,    990}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{ -3491,   1627,  -4682}, 0, {     0,      0}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{ -3491,   1627,  -5002}, 0, {   990,      0}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{ -3491,   1308,  -5002}, 0, {   990,    990}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{ -3491,   1308,  -4682}, 0, {     0,    990}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{ -3491,   1630,  -3962}, 0, {     0,      0}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{ -3491,   1630,  -4282}, 0, {   990,      0}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{ -3491,   1311,  -4282}, 0, {   990,    990}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{ -3491,   1311,  -3962}, 0, {     0,    990}, {0x91, 0x91, 0xa5, 0xff}}},\n    {{{ -3766,   1996,  -2982}, 0, {   990,      0}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{ -3766,   1689,  -2982}, 0, {   990,    990}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{ -3628,   1689,  -2707}, 0, {     0,    990}, {0x99, 0x99, 0xac, 0xff}}},\n    {{{ -3628,   1996,  -2707}, 0, {     0,      0}, {0x99, 0x99, 0xac, 0xff}}},\n};\n\n// 0x0700B340 - 0x0700B430\nstatic const Vtx castle_grounds_seg7_vertex_0700B340[] = {\n    {{{ -1945,   1737,  -2607}, 0, {   990,    990}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -1631,   1737,  -2544}, 0, {     0,    990}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -1631,   2056,  -2544}, 0, {     0,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -1945,   1020,  -2607}, 0, {   990,    990}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -1631,   1020,  -2544}, 0, {     0,    990}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -1631,   1340,  -2544}, 0, {     0,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -1945,   1340,  -2607}, 0, {   990,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -2447,   1020,  -2707}, 0, {   990,    990}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -2133,   1020,  -2645}, 0, {     0,    990}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -2133,   1340,  -2645}, 0, {     0,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -2447,   1340,  -2707}, 0, {   990,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -2447,   1737,  -2707}, 0, {   990,    990}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -2133,   1737,  -2645}, 0, {     0,    990}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -2133,   2056,  -2645}, 0, {     0,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -2447,   2056,  -2707}, 0, {   990,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n};\n\n// 0x0700B430 - 0x0700B520\nstatic const Vtx castle_grounds_seg7_vertex_0700B430[] = {\n    {{{   158,   6094,  -3403}, 0, {     0,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  -148,   6094,  -3403}, 0, {   990,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  -148,   5787,  -3392}, 0, {   990,    990}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -1945,   1737,  -2607}, 0, {   990,    990}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -1631,   2056,  -2544}, 0, {     0,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -1945,   2056,  -2607}, 0, {   990,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{   155,   4467,  -2988}, 0, {     0,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  -164,   4467,  -2988}, 0, {   990,      0}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{  -164,   4147,  -2988}, 0, {   990,    990}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{   155,   4147,  -2988}, 0, {     0,    990}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{   158,   5787,  -3392}, 0, {     0,    990}, {0xc4, 0xc4, 0xd0, 0xff}}},\n    {{{ -3525,   1996,  -2598}, 0, {   990,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -3525,   1689,  -2598}, 0, {   990,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -3250,   1689,  -2461}, 0, {     0,    990}, {0xad, 0xad, 0xbc, 0xff}}},\n    {{{ -3250,   1996,  -2461}, 0, {     0,      0}, {0xad, 0xad, 0xbc, 0xff}}},\n};\n\n// 0x0700B520 - 0x0700B610\nstatic const Vtx castle_grounds_seg7_vertex_0700B520[] = {\n    {{{  3493,   1309,  -4681}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3493,   1309,  -5001}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3493,   1629,  -5001}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3251,   1996,  -2461}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3526,   1689,  -2598}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3526,   1996,  -2598}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3251,   1689,  -2461}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3629,   1996,  -2707}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3629,   1689,  -2707}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3767,   1996,  -2982}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3767,   1689,  -2982}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3492,   1310,  -3965}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3492,   1629,  -4284}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3492,   1629,  -3965}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3492,   1310,  -4284}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700B610 - 0x0700B6F0\nstatic const Vtx castle_grounds_seg7_vertex_0700B610[] = {\n    {{{  3493,   1309,  -5397}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3493,   1628,  -5717}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3493,   1628,  -5397}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3493,   1309,  -4681}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3493,   1629,  -5001}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3493,   1629,  -4681}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3493,   1309,  -5717}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2448,   1340,  -2707}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2134,   1020,  -2645}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2448,   1020,  -2707}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1946,   2056,  -2607}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1632,   2056,  -2544}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1632,   1737,  -2544}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1946,   1737,  -2607}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700B6F0 - 0x0700B7A0\nstatic const Vtx castle_grounds_seg7_vertex_0700B6F0[] = {\n    {{{  2448,   2056,  -2707}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2134,   1737,  -2645}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2448,   1737,  -2707}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2134,   2056,  -2645}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1946,   1340,  -2607}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1632,   1020,  -2544}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1946,   1020,  -2607}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1632,   1340,  -2544}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2448,   1340,  -2707}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2134,   1340,  -2645}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2134,   1020,  -2645}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700B7A0 - 0x0700B7E0\nstatic const Vtx castle_grounds_seg7_vertex_0700B7A0[] = {\n    {{{  -402,   2604,  -2037}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   402,   2201,  -2037}, 0, {  2012,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   402,   2604,  -2037}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -402,   2201,  -2037}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700B7E0 - 0x0700B820\nstatic const Vtx castle_grounds_seg7_vertex_0700B7E0[] = {\n    {{{   402,   3006,  -2037}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -402,   3006,  -2037}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -402,   2604,  -2037}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   402,   2604,  -2037}, 0, {  2012,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700B820 - 0x0700B9B0\nstatic const Gfx castle_grounds_seg7_dl_0700B820[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_0900A800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_grounds_seg7_vertex_0700B240, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_0700B340, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_0700B430, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 0,  2, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_0700B520, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_0700B610, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(castle_grounds_seg7_vertex_0700B6F0, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP1Triangle( 8,  9, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700B9B0 - 0x0700B9E8\nstatic const Gfx castle_grounds_seg7_dl_0700B9B0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, castle_grounds_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_grounds_seg7_vertex_0700B7A0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700B9E8 - 0x0700BA20\nstatic const Gfx castle_grounds_seg7_dl_0700B9E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, castle_grounds_seg7_texture_07002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_grounds_seg7_vertex_0700B7E0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700BA20 - 0x0700BAB8\nconst Gfx castle_grounds_seg7_dl_0700BA20[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(castle_grounds_seg7_dl_0700B820),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(castle_grounds_seg7_dl_0700B9B0),\n    gsSPDisplayList(castle_grounds_seg7_dl_0700B9E8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_grounds/areas/1/7/collision.inc.c",
    "content": "// 0x07010DB4 - 0x07010E10\nconst Collision castle_grounds_seg7_collision_moat_grills[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-3225, -562, -2178),\n    COL_VERTEX(-3532, -562, -2178),\n    COL_VERTEX(-3225, -562, -1871),\n    COL_VERTEX(-3532, -562, -1871),\n    COL_VERTEX(-3532, -1330, -6069),\n    COL_VERTEX(-4044, -1330, -6069),\n    COL_VERTEX(-4044, -1330, -5557),\n    COL_VERTEX(-3532, -1330, -5557),\n    COL_TRI_INIT(SURFACE_FLOWING_WATER, 4),\n    COL_TRI_SPECIAL(0, 1, 2, 0x235),\n    COL_TRI_SPECIAL(1, 3, 2, 0x235),\n    COL_TRI_SPECIAL(4, 5, 6, 0x100),\n    COL_TRI_SPECIAL(4, 6, 7, 0x100),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/castle_grounds/areas/1/7/geo.inc.c",
    "content": "// 0x0E00070C\nconst GeoLayout castle_grounds_geo_00070C[] = {\n    GEO_CULLING_RADIUS(15000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, castle_grounds_seg7_dl_0700BB80),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/castle_grounds/areas/1/7/model.inc.c",
    "content": "// 0x0700BAB8 - 0x0700BB38\nstatic const Vtx castle_grounds_seg7_vertex_0700BAB8[] = {\n    {{{ -3532,  -1330,  -6069}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4044,  -1330,  -5557}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3532,  -1330,  -5557}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4044,  -1330,  -6069}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3225,   -562,  -2178}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3532,   -562,  -2178}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3225,   -562,  -1871}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3532,   -562,  -1871}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700BB38 - 0x0700BB80\nstatic const Gfx castle_grounds_seg7_dl_0700BB38[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_grounds_seg7_vertex_0700BAB8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700BB80 - 0x0700BBF0\nconst Gfx castle_grounds_seg7_dl_0700BB80[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(castle_grounds_seg7_dl_0700BB38),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_grounds/areas/1/8/collision.inc.c",
    "content": "// 0x07010E10 - 0x07010E40\nconst Collision castle_grounds_seg7_collision_cannon_grill[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x4),\n    COL_VERTEX(2283, 65, 2072),\n    COL_VERTEX(2485, 65, 1849),\n    COL_VERTEX(2283, 65, 1849),\n    COL_VERTEX(2485, 65, 2072),\n    COL_TRI_INIT(SURFACE_DEFAULT, 2),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/castle_grounds/areas/1/8/geo.inc.c",
    "content": "// 0x0E000724\nconst GeoLayout castle_grounds_geo_000724[] = {\n    GEO_CULLING_RADIUS(15000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, castle_grounds_seg7_dl_0700BC68),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/castle_grounds/areas/1/8/model.inc.c",
    "content": "// 0x0700BBF0 - 0x0700BC30\nstatic const Vtx castle_grounds_seg7_vertex_0700BBF0[] = {\n    {{{  2283,     65,   2072}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2485,     65,   2072}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2485,     65,   1849}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2283,     65,   1849}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700BC30 - 0x0700BC68\nstatic const Gfx castle_grounds_seg7_dl_0700BC30[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(castle_grounds_seg7_vertex_0700BBF0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700BC68 - 0x0700BCD8\nconst Gfx castle_grounds_seg7_dl_0700BC68[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(castle_grounds_seg7_dl_0700BC30),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_grounds/areas/1/9/model.inc.c",
    "content": "// 0x0700BCD8 - 0x0700BCE0\nstatic const Lights1 castle_grounds_seg7_lights_0700BCD8 = gdSPDefLights1(\n    0x3d, 0x3d, 0x44,\n    0x99, 0x99, 0xac, 0x28, 0x28, 0x28\n);\n\n// 0x0700BCF0 - 0x0700BD08\nstatic const Lights1 castle_grounds_seg7_lights_0700BCF0 = gdSPDefLights1(\n    0x58, 0x58, 0x5a,\n    0xdc, 0xdc, 0xe3, 0x28, 0x28, 0x28\n);\n\n// 0x0700BD08 - 0x0700BD20\nstatic const Lights1 castle_grounds_seg7_lights_0700BD08 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700BD20 - 0x0700BD38\nstatic const Lights1 castle_grounds_seg7_lights_0700BD20 = gdSPDefLights1(\n    0x4e, 0x4e, 0x53,\n    0xc4, 0xc4, 0xd0, 0x28, 0x28, 0x28\n);\n\n// 0x0700BD38 - 0x0700BD50\nstatic const Lights1 castle_grounds_seg7_lights_0700BD38 = gdSPDefLights1(\n    0x45, 0x45, 0x4b,\n    0xad, 0xad, 0xbc, 0x28, 0x28, 0x28\n);\n\n// 0x0700BD50 - 0x0700BE10\nstatic const Vtx castle_grounds_seg7_vertex_0700BD50[] = {\n    {{{  2283,   -422,   2072}, 0, {     6,   1824}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2485,   -422,   2072}, 0, {   206,   2104}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2485,   -422,   1849}, 0, {   300,   1608}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2283,   -422,   1849}, 0, {   100,   1324}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2485,     89,   2072}, 0, {     0,   1996}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2283,   -422,   2072}, 0, {   432,    648}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2283,     89,   2072}, 0, {     0,    648}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2485,   -422,   2072}, 0, {   432,   1996}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2485,     89,   1849}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2485,   -422,   2072}, 0, {   820,    536}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2485,     89,   2072}, 0, {     0,    536}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2485,   -422,   1849}, 0, {   820,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700BE10 - 0x0700BE90\nstatic const Vtx castle_grounds_seg7_vertex_0700BE10[] = {\n    {{{  2283,     89,   1849}, 0, {     0,   1996}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2485,   -422,   1849}, 0, {   536,    648}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2485,     89,   1849}, 0, {     0,    648}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2283,   -422,   1849}, 0, {   536,   1996}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2283,     89,   2072}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2283,   -422,   1849}, 0, {   332,   -232}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2283,     89,   1849}, 0, {     0,   -204}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2283,   -422,   2072}, 0, {   332,   1984}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700BE90 - 0x0700BF50\nstatic const Vtx castle_grounds_seg7_vertex_0700BE90[] = {\n    {{{  2640,     89,   2223}, 0, {  2012,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2485,     89,   2072}, 0, {  1404,   -440}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2283,     89,   2072}, 0, {  1400,    368}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2485,     89,   1849}, 0, {   516,   -446}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2637,     89,   1711}, 0, {     0,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2128,     89,   2226}, 0, {  2012,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2283,     89,   1849}, 0, {   512,    360}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2125,     89,   1714}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2708,    -10,   1639}, 0, {  4588,    582}, {0x66, 0x4a, 0x00, 0xff}}},\n    {{{  2637,     89,   1711}, 0, {  4136,      0}, {0x66, 0x4a, 0x00, 0xff}}},\n    {{{  2757,    -72,   2338}, 0, {   108,    964}, {0x66, 0x4a, 0x00, 0xff}}},\n    {{{  2640,     89,   2223}, 0, {   856,      0}, {0x66, 0x4a, 0x00, 0xff}}},\n};\n\n// 0x0700BF50 - 0x0700BFB0\nstatic const Vtx castle_grounds_seg7_vertex_0700BF50[] = {\n    {{{  2102,     58,   1692}, 0, {  3524,    158}, {0x00, 0x49, 0x99, 0xff}}},\n    {{{  2125,     89,   1714}, 0, {  3376,      0}, {0x00, 0x49, 0x99, 0xff}}},\n    {{{  2637,     89,   1711}, 0, {     0,      0}, {0x00, 0x49, 0x99, 0xff}}},\n    {{{  2102,     58,   1692}, 0, {  3524,    158}, {0x00, 0x4a, 0x9a, 0xff}}},\n    {{{  2637,     89,   1711}, 0, {     0,      0}, {0x00, 0x4a, 0x9a, 0xff}}},\n    {{{  2708,    -10,   1639}, 0, {  -504,    582}, {0x00, 0x4a, 0x9a, 0xff}}},\n};\n\n// 0x0700BFB0 - 0x0700C010\nstatic const Vtx castle_grounds_seg7_vertex_0700BFB0[] = {\n    {{{  2076,     15,   2280}, 0, {  3540,    424}, {0x9a, 0x4b, 0x00, 0xff}}},\n    {{{  2125,     89,   1714}, 0, {   -88,      0}, {0x9a, 0x4b, 0x00, 0xff}}},\n    {{{  2102,     58,   1692}, 0, {  -232,    158}, {0x9a, 0x4b, 0x00, 0xff}}},\n    {{{  2076,     15,   2280}, 0, {  3540,    424}, {0x99, 0x49, 0x00, 0xff}}},\n    {{{  2128,     89,   2226}, 0, {  3200,      0}, {0x99, 0x49, 0x00, 0xff}}},\n    {{{  2125,     89,   1714}, 0, {   -88,      0}, {0x99, 0x49, 0x00, 0xff}}},\n};\n\n// 0x0700C010 - 0x0700C070\nstatic const Vtx castle_grounds_seg7_vertex_0700C010[] = {\n    {{{  2757,    -72,   2338}, 0, {  2752,    964}, {0x00, 0x4a, 0x67, 0xff}}},\n    {{{  2640,     89,   2223}, 0, {  2012,      0}, {0x00, 0x4a, 0x67, 0xff}}},\n    {{{  2128,     89,   2226}, 0, { -1240,    -30}, {0x00, 0x4a, 0x67, 0xff}}},\n    {{{  2757,    -72,   2338}, 0, {  2752,    964}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{  2128,     89,   2226}, 0, { -1240,    -30}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{  2076,     15,   2280}, 0, { -1576,    424}, {0x00, 0x4a, 0x66, 0xff}}},\n};\n\n// 0x0700C070 - 0x0700C110\nstatic const Gfx castle_grounds_seg7_dl_0700C070[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&castle_grounds_seg7_lights_0700BCD8.l, 1),\n    gsSPLight(&castle_grounds_seg7_lights_0700BCD8.a, 2),\n    gsSPVertex(castle_grounds_seg7_vertex_0700BD50, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPLight(&castle_grounds_seg7_lights_0700BCF0.l, 1),\n    gsSPLight(&castle_grounds_seg7_lights_0700BCF0.a, 2),\n    gsSPVertex(castle_grounds_seg7_vertex_0700BE10, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700C110 - 0x0700C210\nstatic const Gfx castle_grounds_seg7_dl_0700C110[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&castle_grounds_seg7_lights_0700BD08.l, 1),\n    gsSPLight(&castle_grounds_seg7_lights_0700BD08.a, 2),\n    gsSPVertex(castle_grounds_seg7_vertex_0700BE90, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 6,  4,  7, 0x0,  6,  3,  4, 0x0),\n    gsSP2Triangles( 2,  6,  7, 0x0,  5,  2,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSPLight(&castle_grounds_seg7_lights_0700BD20.l, 1),\n    gsSPLight(&castle_grounds_seg7_lights_0700BD20.a, 2),\n    gsSPVertex(castle_grounds_seg7_vertex_0700BF50, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPLight(&castle_grounds_seg7_lights_0700BD38.l, 1),\n    gsSPLight(&castle_grounds_seg7_lights_0700BD38.a, 2),\n    gsSPVertex(castle_grounds_seg7_vertex_0700BFB0, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPLight(&castle_grounds_seg7_lights_0700BCF0.l, 1),\n    gsSPLight(&castle_grounds_seg7_lights_0700BCF0.a, 2),\n    gsSPVertex(castle_grounds_seg7_vertex_0700C010, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700C210 - 0x0700C2A0\nconst Gfx castle_grounds_seg7_dl_0700C210[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(castle_grounds_seg7_dl_0700C070),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(castle_grounds_seg7_dl_0700C110),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_grounds/areas/1/collision.inc.c",
    "content": "// 0x0700EAE8 - 0x07010D08\nconst Collision castle_grounds_seg7_collision_level[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x1EA),\n    COL_VERTEX(-4671, -511, -2545),\n    COL_VERTEX(-4686, -511, -3151),\n    COL_VERTEX(-4700, 543, -3663),\n    COL_VERTEX(-4686, -869, -3151),\n    COL_VERTEX(-4686, -921, -3361),\n    COL_VERTEX(-4702, -1228, -3663),\n    COL_VERTEX(2314, 371, -162),\n    COL_VERTEX(554, 607, -162),\n    COL_VERTEX(554, 811, -162),\n    COL_VERTEX(451, 811, -162),\n    COL_VERTEX(-1112, 801, 1396),\n    COL_VERTEX(-450, 811, -162),\n    COL_VERTEX(-553, 607, -162),\n    COL_VERTEX(-2047, 518, -162),\n    COL_VERTEX(-553, 811, -162),\n    COL_VERTEX(4730, -665, -651),\n    COL_VERTEX(4897, -921, -194),\n    COL_VERTEX(4597, -665, -1016),\n    COL_VERTEX(5052, -511, -2053),\n    COL_VERTEX(3362, -511, -567),\n    COL_VERTEX(3495, -665, -201),\n    COL_VERTEX(3363, 343, -566),\n    COL_VERTEX(3556, 405, -36),\n    COL_VERTEX(3662, -921, 254),\n    COL_VERTEX(-829, 260, 5658),\n    COL_VERTEX(-24, 260, 5009),\n    COL_VERTEX(-2047, 260, 5792),\n    COL_VERTEX(-2317, 260, 3579),\n    COL_VERTEX(4730, -869, -651),\n    COL_VERTEX(5019, -1330, 140),\n    COL_VERTEX(4791, 405, -485),\n    COL_VERTEX(4791, 343, -485),\n    COL_VERTEX(4597, 343, -1016),\n    COL_VERTEX(4597, -511, -1016),\n    COL_VERTEX(4597, 405, -1016),\n    COL_VERTEX(2321, -511, -162),\n    COL_VERTEX(3362, -665, -567),\n    COL_VERTEX(3362, 405, -567),\n    COL_VERTEX(3495, -869, -201),\n    COL_VERTEX(3784, -1330, 590),\n    COL_VERTEX(-816, 260, 3370),\n    COL_VERTEX(48, 260, 3912),\n    COL_VERTEX(-3471, 260, 4623),\n    COL_VERTEX(-3372, 260, 2933),\n    COL_VERTEX(-4318, 260, 3323),\n    COL_VERTEX(3483, 545, -5438),\n    COL_VERTEX(4409, 545, -5437),\n    COL_VERTEX(4981, 545, -6167),\n    COL_VERTEX(6045, -1330, 1574),\n    COL_VERTEX(5384, -1330, 2982),\n    COL_VERTEX(5667, -1330, 3225),\n    COL_VERTEX(6864, -1330, 2905),\n    COL_VERTEX(5709, -1330, 4034),\n    COL_VERTEX(5372, -924, 3298),\n    COL_VERTEX(4099, -1330, 1483),\n    COL_VERTEX(4402, -1330, 3226),\n    COL_VERTEX(4832, -1330, 3682),\n    COL_VERTEX(5125, -1330, 4077),\n    COL_VERTEX(4994, -1330, 4855),\n    COL_VERTEX(5400, -1330, 4459),\n    COL_VERTEX(6659, -1330, 4236),\n    COL_VERTEX(3913, -1330, 5495),\n    COL_VERTEX(3587, -1330, 4339),\n    COL_VERTEX(5255, -1125, 4748),\n    COL_VERTEX(5385, -1330, 4964),\n    COL_VERTEX(5882, -1330, 5370),\n    COL_VERTEX(2967, -1330, 5005),\n    COL_VERTEX(7245, -702, 4780),\n    COL_VERTEX(6045, -554, 5617),\n    COL_VERTEX(3662, -972, 254),\n    COL_VERTEX(-4686, -972, -3361),\n    COL_VERTEX(-3788, -921, -3361),\n    COL_VERTEX(4897, -972, -194),\n    COL_VERTEX(-3541, -972, -3361),\n    COL_VERTEX(-3541, -921, -3361),\n    COL_VERTEX(4370, 545, -6149),\n    COL_VERTEX(3483, 545, -6149),\n    COL_VERTEX(4989, 545, -7072),\n    COL_VERTEX(4370, 545, -7749),\n    COL_VERTEX(2601, -101, 2939),\n    COL_VERTEX(1713, -7, 3720),\n    COL_VERTEX(1704, 41, 2512),\n    COL_VERTEX(2102, 58, 1692),\n    COL_VERTEX(2103, 89, 1305),\n    COL_VERTEX(2708, -10, 1639),\n    COL_VERTEX(3238, -89, 1787),\n    COL_VERTEX(2757, -72, 2338),\n    COL_VERTEX(2076, 15, 2280),\n    COL_VERTEX(-5344, 1494, -6924),\n    COL_VERTEX(-6922, 2865, -7377),\n    COL_VERTEX(-6230, 1949, -7009),\n    COL_VERTEX(-5529, 1160, -6863),\n    COL_VERTEX(2816, -511, 5376),\n    COL_VERTEX(2630, -448, 4746),\n    COL_VERTEX(2048, 236, 4760),\n    COL_VERTEX(4997, 545, -8085),\n    COL_VERTEX(-3481, -1228, -3663),\n    COL_VERTEX(-4671, 422, -2545),\n    COL_VERTEX(-4796, -511, -1606),\n    COL_VERTEX(-4928, 543, -4193),\n    COL_VERTEX(-5220, 422, -2744),\n    COL_VERTEX(-5307, 543, -3479),\n    COL_VERTEX(-4929, -1228, -4194),\n    COL_VERTEX(2318, 371, 683),\n    COL_VERTEX(554, -511, -162),\n    COL_VERTEX(91, 801, 1396),\n    COL_VERTEX(-553, -511, -162),\n    COL_VERTEX(-2317, 518, 929),\n    COL_VERTEX(-2047, -511, -162),\n    COL_VERTEX(-4363, 371, 255),\n    COL_VERTEX(-3360, 420, 1187),\n    COL_VERTEX(3555, 343, -37),\n    COL_VERTEX(-4599, 260, 2299),\n    COL_VERTEX(-5786, -1228, -4362),\n    COL_VERTEX(-5784, 543, -4360),\n    COL_VERTEX(-5864, 543, -3689),\n    COL_VERTEX(4407, 545, -3689),\n    COL_VERTEX(4407, -511, -3689),\n    COL_VERTEX(5633, 371, -2047),\n    COL_VERTEX(-4132, -511, -562),\n    COL_VERTEX(-4796, 405, -1606),\n    COL_VERTEX(-4666, 260, 1401),\n    COL_VERTEX(-4132, 371, -562),\n    COL_VERTEX(5249, 397, -636),\n    COL_VERTEX(-3727, 260, 2048),\n    COL_VERTEX(-5438, 405, -1522),\n    COL_VERTEX(5052, 371, -2053),\n    COL_VERTEX(4963, 544, -3762),\n    COL_VERTEX(7552, -58, 2256),\n    COL_VERTEX(8018, -101, 3280),\n    COL_VERTEX(7878, -101, 4665),\n    COL_VERTEX(6377, -101, 5989),\n    COL_VERTEX(4403, -657, 5715),\n    COL_VERTEX(4302, -190, 6316),\n    COL_VERTEX(3510, 0, 6358),\n    COL_VERTEX(-3906, -1228, -6149),\n    COL_VERTEX(-4704, -1228, -5911),\n    COL_VERTEX(-4369, 373, -6149),\n    COL_VERTEX(-5183, 132, -6475),\n    COL_VERTEX(6237, -52, 823),\n    COL_VERTEX(6623, 371, 0),\n    COL_VERTEX(7168, 474, 0),\n    COL_VERTEX(3362, 0, 725),\n    COL_VERTEX(512, 925, 3527),\n    COL_VERTEX(785, 996, 5113),\n    COL_VERTEX(1062, 558, 3465),\n    COL_VERTEX(1536, 718, 4698),\n    COL_VERTEX(2155, 1057, 6472),\n    COL_VERTEX(-19, 1473, 6727),\n    COL_VERTEX(-265, 1126, 6164),\n    COL_VERTEX(5974, 910, -7191),\n    COL_VERTEX(8192, 2540, -6143),\n    COL_VERTEX(6684, 2540, -7764),\n    COL_VERTEX(6789, 1022, -5679),\n    COL_VERTEX(4997, 2201, -8085),\n    COL_VERTEX(7305, 868, -4095),\n    COL_VERTEX(7203, 627, -1945),\n    COL_VERTEX(-4090, 1231, 6630),\n    COL_VERTEX(-6678, 590, 4409),\n    COL_VERTEX(-2064, 1550, 6813),\n    COL_VERTEX(-2069, 1169, 6155),\n    COL_VERTEX(-7463, 2074, -5749),\n    COL_VERTEX(-8191, 3121, -6586),\n    COL_VERTEX(-7318, 1567, -5405),\n    COL_VERTEX(-7091, 1592, -4094),\n    COL_VERTEX(-8164, 2413, -2679),\n    COL_VERTEX(-8191, 2574, -4095),\n    COL_VERTEX(-6641, 543, -3573),\n    COL_VERTEX(-6899, 371, -2047),\n    COL_VERTEX(-7337, 1521, -2854),\n    COL_VERTEX(-7685, 260, 0),\n    COL_VERTEX(-7835, 1019, 0),\n    COL_VERTEX(-8191, 1667, 0),\n    COL_VERTEX(-7685, 260, 2269),\n    COL_VERTEX(-8011, 1630, 3950),\n    COL_VERTEX(8192, 1710, 0),\n    COL_VERTEX(-5750, 1704, 6144),\n    COL_VERTEX(8192, 2189, -4095),\n    COL_VERTEX(8192, 1876, -2047),\n    COL_VERTEX(-4825, 553, 5288),\n    COL_VERTEX(-4369, 2339, -7760),\n    COL_VERTEX(-7415, 508, 3183),\n    COL_VERTEX(-7167, 1937, 5120),\n    COL_VERTEX(-8132, 2961, -6761),\n    COL_VERTEX(-6479, 543, -4496),\n    COL_VERTEX(-7867, 1237, -1398),\n    COL_VERTEX(-8191, 1729, 2324),\n    COL_VERTEX(8192, 1355, 1650),\n    COL_VERTEX(-6577, 215, -4901),\n    COL_VERTEX(5438, 704, -5679),\n    COL_VERTEX(0, 727, 2146),\n    COL_VERTEX(1173, 324, 2385),\n    COL_VERTEX(-2317, 639, 2048),\n    COL_VERTEX(6301, 474, -958),\n    COL_VERTEX(554, 605, -2127),\n    COL_VERTEX(554, 803, -2127),\n    COL_VERTEX(554, 803, -2229),\n    COL_VERTEX(554, 964, -258),\n    COL_VERTEX(451, 964, -258),\n    COL_VERTEX(451, 957, -2127),\n    COL_VERTEX(451, 803, -2229),\n    COL_VERTEX(-553, 803, -2127),\n    COL_VERTEX(-553, 604, -2127),\n    COL_VERTEX(-450, 964, -264),\n    COL_VERTEX(-553, 957, -2127),\n    COL_VERTEX(-553, 964, -264),\n    COL_VERTEX(-450, 803, -2229),\n    COL_VERTEX(-3541, -716, -3361),\n    COL_VERTEX(-1535, -511, -2536),\n    COL_VERTEX(-1023, 803, -2127),\n    COL_VERTEX(1024, 803, -2127),\n    COL_VERTEX(-3481, -1228, -6149),\n    COL_VERTEX(1536, -511, -2536),\n    COL_VERTEX(3483, 2339, -6149),\n    COL_VERTEX(3482, -511, -3663),\n    COL_VERTEX(3201, -511, -2913),\n    COL_VERTEX(-531, 1967, -2127),\n    COL_VERTEX(-531, 2120, -2047),\n    COL_VERTEX(532, 2120, -2047),\n    COL_VERTEX(154, 1059, -3104),\n    COL_VERTEX(-553, 803, -2229),\n    COL_VERTEX(-553, 803, -3104),\n    COL_VERTEX(-348, 1692, -3104),\n    COL_VERTEX(451, 906, -1512),\n    COL_VERTEX(-450, 803, -2127),\n    COL_VERTEX(554, 957, -2127),\n    COL_VERTEX(-450, 957, -2127),\n    COL_VERTEX(451, 906, -796),\n    COL_VERTEX(2876, -101, -3021),\n    COL_VERTEX(3093, -101, -2804),\n    COL_VERTEX(3419, -101, -3130),\n    COL_VERTEX(3202, -101, -3347),\n    COL_VERTEX(3201, -506, -3347),\n    COL_VERTEX(2875, -506, -3022),\n    COL_VERTEX(-562, 803, -3206),\n    COL_VERTEX(563, 803, -3718),\n    COL_VERTEX(-562, 803, -3718),\n    COL_VERTEX(-450, 906, -796),\n    COL_VERTEX(-3583, -716, -3151),\n    COL_VERTEX(-3583, -511, -3151),\n    COL_VERTEX(-450, 906, -1512),\n    COL_VERTEX(-3582, 461, -3148),\n    COL_VERTEX(-1023, 2460, -2127),\n    COL_VERTEX(-553, 1487, -2127),\n    COL_VERTEX(-553, 1692, -2127),\n    COL_VERTEX(1024, 2460, -2127),\n    COL_VERTEX(554, 1692, -2127),\n    COL_VERTEX(2560, -511, -2741),\n    COL_VERTEX(554, 1487, -2127),\n    COL_VERTEX(-3481, 803, -3663),\n    COL_VERTEX(-3481, 2339, -3663),\n    COL_VERTEX(2560, 798, -2741),\n    COL_VERTEX(3482, 2339, -3663),\n    COL_VERTEX(3482, 803, -3663),\n    COL_VERTEX(3274, -511, -2841),\n    COL_VERTEX(3382, -511, -2949),\n    COL_VERTEX(3310, -511, -3022),\n    COL_VERTEX(-531, 2173, -2127),\n    COL_VERTEX(532, 1967, -2127),\n    COL_VERTEX(532, 2173, -2127),\n    COL_VERTEX(554, 803, -3104),\n    COL_VERTEX(154, 803, -3104),\n    COL_VERTEX(554, 1487, -3104),\n    COL_VERTEX(349, 1692, -3104),\n    COL_VERTEX(-153, 803, -3104),\n    COL_VERTEX(-553, 1487, -3104),\n    COL_VERTEX(-153, 1059, -3104),\n    COL_VERTEX(451, 803, -2127),\n    COL_VERTEX(-4369, 2339, -6149),\n    COL_VERTEX(-3481, 2339, -6149),\n    COL_VERTEX(-3481, 2339, -7274),\n    COL_VERTEX(4370, 2339, -7750),\n    COL_VERTEX(4370, 2339, -6149),\n    COL_VERTEX(2876, -506, -3022),\n    COL_VERTEX(3093, -511, -2804),\n    COL_VERTEX(3201, -506, -3348),\n    COL_VERTEX(3419, -511, -3130),\n    COL_VERTEX(-562, 1930, -3718),\n    COL_VERTEX(-562, 1930, -3206),\n    COL_VERTEX(563, 1930, -3206),\n    COL_VERTEX(563, 1930, -3718),\n    COL_VERTEX(563, 803, -3206),\n    COL_VERTEX(563, 1936, -3718),\n    COL_VERTEX(-562, 1936, -3718),\n    COL_VERTEX(3072, -511, -2639),\n    COL_VERTEX(3505, -511, -2621),\n    COL_VERTEX(3584, -511, -3151),\n    COL_VERTEX(-3912, -869, -3151),\n    COL_VERTEX(-3788, -716, -3361),\n    COL_VERTEX(-3788, -972, -3361),\n    COL_VERTEX(-3225, -511, -1871),\n    COL_VERTEX(-1023, -511, -2127),\n    COL_VERTEX(-3225, -511, -2178),\n    COL_VERTEX(-3225, -818, -2178),\n    COL_VERTEX(-3912, -716, -3151),\n    COL_VERTEX(-4879, -1242, -5687),\n    COL_VERTEX(-4044, -1228, -6069),\n    COL_VERTEX(-3532, -511, -2178),\n    COL_VERTEX(-3532, -511, -1871),\n    COL_VERTEX(-2559, -511, -2741),\n    COL_VERTEX(-3071, -511, -2639),\n    COL_VERTEX(-3532, -818, -1871),\n    COL_VERTEX(-3225, -818, -1871),\n    COL_VERTEX(-3532, -818, -2178),\n    COL_VERTEX(1024, -511, -2127),\n    COL_VERTEX(-531, 2652, -2231),\n    COL_VERTEX(0, 3584, -2736),\n    COL_VERTEX(466, 4069, -2998),\n    COL_VERTEX(532, 2652, -2231),\n    COL_VERTEX(-531, 2460, -2127),\n    COL_VERTEX(977, 2890, -2977),\n    COL_VERTEX(1846, 3174, -3540),\n    COL_VERTEX(945, 3174, -3540),\n    COL_VERTEX(532, 2460, -2127),\n    COL_VERTEX(-1842, 3174, -3540),\n    COL_VERTEX(-976, 2887, -2972),\n    COL_VERTEX(-944, 3174, -3540),\n    COL_VERTEX(-1842, 3174, -6143),\n    COL_VERTEX(-936, 3174, -4580),\n    COL_VERTEX(2560, 2339, -2741),\n    COL_VERTEX(2867, 2662, -3356),\n    COL_VERTEX(937, 3174, -4580),\n    COL_VERTEX(0, 3174, -5120),\n    COL_VERTEX(3174, 2339, -2434),\n    COL_VERTEX(3789, 2339, -3048),\n    COL_VERTEX(3584, 2339, -2639),\n    COL_VERTEX(-2866, 2662, -3356),\n    COL_VERTEX(1846, 3174, -6131),\n    COL_VERTEX(3213, 3349, -3009),\n    COL_VERTEX(3484, 2339, -7274),\n    COL_VERTEX(-2869, 2662, -6131),\n    COL_VERTEX(2870, 2662, -6131),\n    COL_VERTEX(1024, 1692, -2127),\n    COL_VERTEX(-1023, 1692, -2127),\n    COL_VERTEX(-3583, 803, -2639),\n    COL_VERTEX(-3788, 803, -3048),\n    COL_VERTEX(-3070, 461, -2639),\n    COL_VERTEX(-2559, 803, -2741),\n    COL_VERTEX(-3173, 803, -2434),\n    COL_VERTEX(-1535, 2339, -2536),\n    COL_VERTEX(-2559, 2339, -2741),\n    COL_VERTEX(-531, 2652, -2047),\n    COL_VERTEX(1536, 2339, -2536),\n    COL_VERTEX(349, 1692, -2127),\n    COL_VERTEX(-3788, 2339, -3048),\n    COL_VERTEX(-3583, 2339, -2639),\n    COL_VERTEX(-3173, 2339, -2434),\n    COL_VERTEX(3174, 803, -2434),\n    COL_VERTEX(3072, 461, -2639),\n    COL_VERTEX(3584, 803, -2639),\n    COL_VERTEX(3382, -255, -2949),\n    COL_VERTEX(3274, -255, -2841),\n    COL_VERTEX(3789, 803, -3048),\n    COL_VERTEX(3584, 461, -3151),\n    COL_VERTEX(532, 2652, -2047),\n    COL_VERTEX(154, 1059, -3206),\n    COL_VERTEX(-153, 1059, -3206),\n    COL_VERTEX(-348, 1692, -2127),\n    COL_VERTEX(0, 3584, -2047),\n    COL_VERTEX(3201, -255, -2913),\n    COL_VERTEX(3310, -255, -3021),\n    COL_VERTEX(-153, 803, -3206),\n    COL_VERTEX(154, 803, -3206),\n    COL_VERTEX(-4044, -1228, -5557),\n    COL_VERTEX(-3532, -1228, -5557),\n    COL_VERTEX(-3532, -1228, -6069),\n    COL_VERTEX(-4044, -1842, -6069),\n    COL_VERTEX(-4044, -1842, -5557),\n    COL_VERTEX(-3532, -1842, -5557),\n    COL_VERTEX(-3532, -1842, -6069),\n    COL_VERTEX(-465, 4069, -2998),\n    COL_VERTEX(-3212, 3349, -3009),\n    COL_VERTEX(-7294, 2487, -6235),\n    COL_VERTEX(-7603, 3004, -7160),\n    COL_VERTEX(-6278, 1036, -5412),\n    COL_VERTEX(-5619, 1078, -6162),\n    COL_VERTEX(-6777, 2507, -6813),\n    COL_VERTEX(0, 4618, -5120),\n    COL_VERTEX(937, 4618, -4580),\n    COL_VERTEX(-936, 4618, -4580),\n    COL_VERTEX(555, 5007, -4443),\n    COL_VERTEX(0, 5003, -4717),\n    COL_VERTEX(509, 6298, -4412),\n    COL_VERTEX(0, 6298, -4658),\n    COL_VERTEX(945, 4618, -3540),\n    COL_VERTEX(508, 6298, -3698),\n    COL_VERTEX(562, 5017, -3681),\n    COL_VERTEX(-554, 5007, -4443),\n    COL_VERTEX(-944, 4618, -3540),\n    COL_VERTEX(466, 4618, -2998),\n    COL_VERTEX(-465, 4618, -2998),\n    COL_VERTEX(-507, 6298, -3698),\n    COL_VERTEX(-281, 6298, -3421),\n    COL_VERTEX(282, 6298, -3421),\n    COL_VERTEX(-508, 6298, -4412),\n    COL_VERTEX(307, 5021, -3373),\n    COL_VERTEX(-561, 5017, -3681),\n    COL_VERTEX(-306, 5021, -3373),\n    COL_VERTEX(-348, 6536, -3768),\n    COL_VERTEX(-201, 6539, -3584),\n    COL_VERTEX(-358, 6529, -4300),\n    COL_VERTEX(0, 7608, -4021),\n    COL_VERTEX(202, 6539, -3584),\n    COL_VERTEX(0, 6527, -4471),\n    COL_VERTEX(359, 6529, -4300),\n    COL_VERTEX(349, 6536, -3768),\n    COL_VERTEX(2283, -422, 2072),\n    COL_VERTEX(2485, -422, 1849),\n    COL_VERTEX(2283, -422, 1849),\n    COL_VERTEX(2485, -422, 2072),\n    COL_VERTEX(2640, 89, 2223),\n    COL_VERTEX(2637, 89, 1711),\n    COL_VERTEX(2485, 89, 1849),\n    COL_VERTEX(2485, 89, 2072),\n    COL_VERTEX(2283, 89, 2072),\n    COL_VERTEX(2128, 89, 2226),\n    COL_VERTEX(2283, 89, 1849),\n    COL_VERTEX(2125, 89, 1714),\n    COL_VERTEX(-600, 801, -162),\n    COL_VERTEX(-600, 884, -121),\n    COL_VERTEX(-600, 803, -121),\n    COL_VERTEX(-600, 882, -162),\n    COL_VERTEX(-2047, 600, -162),\n    COL_VERTEX(-604, 903, -142),\n    COL_VERTEX(-2054, 621, -142),\n    COL_VERTEX(-2053, 601, -121),\n    COL_VERTEX(-2053, 519, -121),\n    COL_VERTEX(-4146, 473, -544),\n    COL_VERTEX(-4132, 453, -562),\n    COL_VERTEX(-4157, 452, -525),\n    COL_VERTEX(-4839, 487, -1597),\n    COL_VERTEX(-4796, 487, -1606),\n    COL_VERTEX(-4817, 508, -1601),\n    COL_VERTEX(-4693, 523, -2548),\n    COL_VERTEX(-4746, 625, -3666),\n    COL_VERTEX(-4712, 502, -2551),\n    COL_VERTEX(-4671, 503, -2545),\n    COL_VERTEX(-4700, 625, -3663),\n    COL_VERTEX(-4724, 646, -3662),\n    COL_VERTEX(-4955, 625, -4156),\n    COL_VERTEX(-5855, 646, -4353),\n    COL_VERTEX(-4941, 646, -4174),\n    COL_VERTEX(-4928, 625, -4193),\n    COL_VERTEX(-5859, 625, -4375),\n    COL_VERTEX(-6632, 543, -3854),\n    COL_VERTEX(-5850, 625, -4331),\n    COL_VERTEX(-6609, 625, -3820),\n    COL_VERTEX(5229, 479, -629),\n    COL_VERTEX(5229, 397, -629),\n    COL_VERTEX(5223, 500, -649),\n    COL_VERTEX(5217, 397, -668),\n    COL_VERTEX(4821, 404, -495),\n    COL_VERTEX(4821, 486, -495),\n    COL_VERTEX(5217, 479, -668),\n    COL_VERTEX(4808, 404, -534),\n    COL_VERTEX(4808, 486, -534),\n    COL_VERTEX(4635, 404, -1000),\n    COL_VERTEX(4597, 487, -1016),\n    COL_VERTEX(5050, 453, -2048),\n    COL_VERTEX(5050, 371, -2048),\n    COL_VERTEX(5087, 370, -2031),\n    COL_VERTEX(4617, 507, -1009),\n    COL_VERTEX(605, 798, -121),\n    COL_VERTEX(2314, 370, -120),\n    COL_VERTEX(2314, 451, -120),\n    COL_VERTEX(605, 877, -121),\n    COL_VERTEX(610, 897, -141),\n    COL_VERTEX(605, 877, -162),\n    COL_VERTEX(605, 798, -162),\n    COL_VERTEX(3341, 484, -515),\n    COL_VERTEX(3341, 404, -515),\n    COL_VERTEX(3326, 403, -553),\n    COL_VERTEX(3326, 484, -553),\n    COL_VERTEX(3332, 502, -535),\n    COL_VERTEX(-4157, 370, -525),\n    COL_VERTEX(-4839, 405, -1597),\n    COL_VERTEX(-4712, 422, -2551),\n    COL_VERTEX(-4746, 543, -3666),\n    COL_VERTEX(-4955, 543, -4156),\n    COL_VERTEX(-5850, 543, -4331),\n    COL_VERTEX(-6632, 625, -3854),\n    COL_VERTEX(-5859, 543, -4375),\n    COL_VERTEX(-6620, 646, -3837),\n    COL_VERTEX(-6609, 543, -3820),\n    COL_VERTEX(4815, 507, -515),\n    COL_VERTEX(4635, 486, -1000),\n    COL_VERTEX(5069, 473, -2040),\n    COL_VERTEX(5087, 452, -2031),\n    COL_VERTEX(2314, 447, -162),\n    COL_VERTEX(2314, 468, -142),\n    COL_TRI_INIT(SURFACE_DEFAULT, 336),\n    COL_TRI(406, 407, 408),\n    COL_TRI(406, 409, 407),\n    COL_TRI(410, 411, 412),\n    COL_TRI(410, 412, 413),\n    COL_TRI(410, 413, 414),\n    COL_TRI(410, 414, 415),\n    COL_TRI(416, 412, 411),\n    COL_TRI(416, 411, 417),\n    COL_TRI(414, 416, 417),\n    COL_TRI(415, 414, 417),\n    COL_TRI(381, 383, 382),\n    COL_TRI(321, 322, 377),\n    COL_TRI(321, 377, 378),\n    COL_TRI(379, 377, 322),\n    COL_TRI(380, 381, 382),\n    COL_TRI(378, 312, 321),\n    COL_TRI(384, 312, 378),\n    COL_TRI(379, 322, 318),\n    COL_TRI(385, 386, 380),\n    COL_TRI(382, 385, 380),\n    COL_TRI(383, 381, 387),\n    COL_TRI(379, 318, 388),\n    COL_TRI(388, 318, 316),\n    COL_TRI(312, 389, 307),\n    COL_TRI(384, 389, 312),\n    COL_TRI(388, 370, 390),\n    COL_TRI(316, 370, 388),\n    COL_TRI(389, 370, 307),\n    COL_TRI(390, 370, 389),\n    COL_TRI(391, 396, 397),\n    COL_TRI(392, 391, 397),\n    COL_TRI(393, 395, 385),\n    COL_TRI(392, 397, 393),\n    COL_TRI(393, 397, 395),\n    COL_TRI(394, 383, 387),\n    COL_TRI(385, 395, 386),\n    COL_TRI(12, 14, 201),\n    COL_TRI(194, 8, 7),\n    COL_TRI(194, 195, 8),\n    COL_TRI(196, 197, 8),\n    COL_TRI(8, 198, 9),\n    COL_TRI(8, 197, 198),\n    COL_TRI(9, 198, 199),\n    COL_TRI(9, 199, 200),\n    COL_TRI(12, 201, 202),\n    COL_TRI(11, 203, 14),\n    COL_TRI(203, 205, 14),\n    COL_TRI(14, 204, 220),\n    COL_TRI(14, 205, 204),\n    COL_TRI(206, 203, 11),\n    COL_TRI(11, 9, 227),\n    COL_TRI(11, 227, 237),\n    COL_TRI(207, 238, 239),\n    COL_TRI(96, 207, 241),\n    COL_TRI(96, 74, 207),\n    COL_TRI(208, 209, 242),\n    COL_TRI(209, 202, 201),\n    COL_TRI(209, 243, 244),\n    COL_TRI(210, 212, 245),\n    COL_TRI(213, 252, 253),\n    COL_TRI(210, 195, 194),\n    COL_TRI(210, 246, 248),\n    COL_TRI(211, 249, 250),\n    COL_TRI(212, 247, 251),\n    COL_TRI(218, 258, 259),\n    COL_TRI(214, 45, 213),\n    COL_TRI(215, 254, 255),\n    COL_TRI(215, 255, 256),\n    COL_TRI(216, 217, 257),\n    COL_TRI(217, 216, 258),\n    COL_TRI(217, 258, 218),\n    COL_TRI(196, 261, 264),\n    COL_TRI(196, 260, 261),\n    COL_TRI(219, 262, 263),\n    COL_TRI(196, 264, 221),\n    COL_TRI(220, 206, 221),\n    COL_TRI(206, 200, 221),\n    COL_TRI(221, 200, 196),\n    COL_TRI(220, 226, 206),\n    COL_TRI(222, 265, 266),\n    COL_TRI(223, 224, 240),\n    COL_TRI(223, 267, 224),\n    COL_TRI(224, 267, 200),\n    COL_TRI(224, 200, 206),\n    COL_TRI(200, 225, 196),\n    COL_TRI(200, 199, 225),\n    COL_TRI(206, 226, 203),\n    COL_TRI(196, 225, 197),\n    COL_TRI(137, 135, 268),\n    COL_TRI(180, 268, 269),\n    COL_TRI(180, 269, 270),\n    COL_TRI(75, 78, 271),\n    COL_TRI(75, 271, 272),\n    COL_TRI(227, 240, 237),\n    COL_TRI(226, 205, 203),\n    COL_TRI(226, 204, 205),\n    COL_TRI(220, 204, 226),\n    COL_TRI(225, 198, 197),\n    COL_TRI(225, 199, 198),\n    COL_TRI(227, 223, 240),\n    COL_TRI(232, 233, 276),\n    COL_TRI(228, 229, 273),\n    COL_TRI(229, 274, 273),\n    COL_TRI(230, 275, 276),\n    COL_TRI(230, 231, 275),\n    COL_TRI(231, 273, 275),\n    COL_TRI(231, 228, 273),\n    COL_TRI(236, 235, 282),\n    COL_TRI(233, 274, 276),\n    COL_TRI(234, 236, 277),\n    COL_TRI(234, 277, 278),\n    COL_TRI(235, 279, 280),\n    COL_TRI(235, 281, 279),\n    COL_TRI(236, 282, 283),\n    COL_TRI(236, 234, 281),\n    COL_TRI(236, 281, 235),\n    COL_TRI(76, 75, 272),\n    COL_TRI(76, 272, 213),\n    COL_TRI(45, 76, 213),\n    COL_TRI(271, 329, 272),\n    COL_TRI(329, 213, 272),\n    COL_TRI(258, 332, 259),\n    COL_TRI(259, 332, 313),\n    COL_TRI(332, 216, 333),\n    COL_TRI(332, 258, 216),\n    COL_TRI(333, 216, 257),\n    COL_TRI(333, 257, 309),\n    COL_TRI(299, 208, 339),\n    COL_TRI(239, 300, 241),\n    COL_TRI(239, 241, 207),\n    COL_TRI(96, 241, 249),\n    COL_TRI(334, 335, 241),\n    COL_TRI(335, 249, 241),\n    COL_TRI(241, 336, 334),\n    COL_TRI(300, 336, 241),\n    COL_TRI(300, 299, 336),\n    COL_TRI(336, 299, 337),\n    COL_TRI(337, 338, 336),\n    COL_TRI(338, 334, 336),\n    COL_TRI(299, 339, 340),\n    COL_TRI(208, 291, 209),\n    COL_TRI(208, 242, 339),\n    COL_TRI(202, 209, 291),\n    COL_TRI(291, 194, 202),\n    COL_TRI(291, 304, 194),\n    COL_TRI(243, 209, 201),\n    COL_TRI(244, 333, 209),\n    COL_TRI(242, 333, 309),\n    COL_TRI(309, 341, 305),\n    COL_TRI(341, 309, 257),\n    COL_TRI(308, 354, 313),\n    COL_TRI(313, 332, 245),\n    COL_TRI(313, 354, 218),\n    COL_TRI(313, 218, 259),\n    COL_TRI(210, 332, 246),\n    COL_TRI(341, 218, 354),\n    COL_TRI(342, 245, 212),\n    COL_TRI(304, 210, 194),\n    COL_TRI(210, 304, 212),\n    COL_TRI(195, 210, 248),\n    COL_TRI(246, 343, 248),\n    COL_TRI(248, 262, 260),\n    COL_TRI(343, 262, 248),\n    COL_TRI(195, 248, 260),\n    COL_TRI(211, 96, 249),\n    COL_TRI(243, 265, 357),\n    COL_TRI(243, 357, 244),\n    COL_TRI(201, 221, 243),\n    COL_TRI(265, 243, 221),\n    COL_TRI(265, 222, 357),\n    COL_TRI(343, 263, 262),\n    COL_TRI(335, 250, 249),\n    COL_TRI(334, 344, 335),\n    COL_TRI(335, 344, 250),\n    COL_TRI(334, 345, 344),\n    COL_TRI(211, 250, 269),\n    COL_TRI(338, 345, 334),\n    COL_TRI(338, 346, 345),\n    COL_TRI(337, 346, 338),\n    COL_TRI(337, 340, 346),\n    COL_TRI(319, 342, 212),\n    COL_TRI(353, 352, 349),\n    COL_TRI(319, 212, 251),\n    COL_TRI(323, 319, 251),\n    COL_TRI(347, 323, 251),\n    COL_TRI(251, 247, 348),\n    COL_TRI(348, 347, 251),\n    COL_TRI(348, 247, 284),\n    COL_TRI(349, 348, 353),\n    COL_TRI(348, 349, 347),\n    COL_TRI(350, 353, 348),\n    COL_TRI(351, 350, 348),\n    COL_TRI(284, 351, 348),\n    COL_TRI(349, 325, 323),\n    COL_TRI(349, 323, 347),\n    COL_TRI(352, 325, 349),\n    COL_TRI(284, 254, 351),\n    COL_TRI(214, 353, 286),\n    COL_TRI(253, 353, 214),\n    COL_TRI(353, 253, 352),\n    COL_TRI(350, 286, 353),\n    COL_TRI(253, 252, 324),\n    COL_TRI(253, 324, 352),\n    COL_TRI(213, 253, 214),\n    COL_TRI(352, 324, 325),\n    COL_TRI(341, 217, 218),\n    COL_TRI(350, 255, 286),\n    COL_TRI(351, 359, 360),\n    COL_TRI(351, 360, 350),\n    COL_TRI(254, 359, 351),\n    COL_TRI(254, 215, 359),\n    COL_TRI(350, 360, 256),\n    COL_TRI(350, 256, 255),\n    COL_TRI(217, 341, 257),\n    COL_TRI(356, 266, 264),\n    COL_TRI(354, 358, 341),\n    COL_TRI(219, 260, 262),\n    COL_TRI(219, 261, 260),\n    COL_TRI(221, 266, 265),\n    COL_TRI(221, 264, 266),\n    COL_TRI(355, 219, 266),\n    COL_TRI(355, 266, 356),\n    COL_TRI(266, 219, 222),\n    COL_TRI(269, 268, 135),\n    COL_TRI(356, 264, 361),\n    COL_TRI(261, 361, 264),\n    COL_TRI(219, 263, 222),\n    COL_TRI(219, 355, 362),\n    COL_TRI(219, 362, 261),\n    COL_TRI(261, 362, 361),\n    COL_TRI(137, 268, 180),\n    COL_TRI(269, 135, 211),\n    COL_TRI(78, 95, 154),\n    COL_TRI(78, 154, 271),\n    COL_TRI(0, 1, 2),\n    COL_TRI(1, 3, 2),\n    COL_TRI(2, 4, 5),\n    COL_TRI(2, 3, 4),\n    COL_TRI(6, 7, 8),\n    COL_TRI(8, 9, 10),\n    COL_TRI(9, 11, 10),\n    COL_TRI(12, 13, 14),\n    COL_TRI(19, 35, 21),\n    COL_TRI(15, 28, 16),\n    COL_TRI(16, 29, 30),\n    COL_TRI(15, 16, 31),\n    COL_TRI(15, 32, 33),\n    COL_TRI(15, 31, 32),\n    COL_TRI(17, 15, 33),\n    COL_TRI(18, 33, 32),\n    COL_TRI(18, 32, 34),\n    COL_TRI(20, 36, 19),\n    COL_TRI(19, 21, 22),\n    COL_TRI(21, 35, 37),\n    COL_TRI(19, 22, 20),\n    COL_TRI(22, 23, 20),\n    COL_TRI(23, 38, 20),\n    COL_TRI(23, 22, 39),\n    COL_TRI(24, 25, 40),\n    COL_TRI(25, 41, 40),\n    COL_TRI(26, 24, 40),\n    COL_TRI(27, 26, 40),\n    COL_TRI(27, 42, 26),\n    COL_TRI(27, 43, 44),\n    COL_TRI(27, 44, 42),\n    COL_TRI(45, 46, 47),\n    COL_TRI(75, 76, 45),\n    COL_TRI(45, 47, 75),\n    COL_TRI(75, 47, 77),\n    COL_TRI(77, 78, 75),\n    COL_TRI(29, 16, 72),\n    COL_TRI(39, 69, 23),\n    COL_TRI(5, 4, 70),\n    COL_TRI(96, 73, 74),\n    COL_TRI(30, 31, 16),\n    COL_TRI(97, 0, 2),\n    COL_TRI(0, 97, 98),\n    COL_TRI(99, 2, 5),\n    COL_TRI(2, 100, 97),\n    COL_TRI(101, 100, 2),\n    COL_TRI(2, 99, 101),\n    COL_TRI(102, 99, 5),\n    COL_TRI(37, 35, 6),\n    COL_TRI(6, 8, 103),\n    COL_TRI(35, 104, 6),\n    COL_TRI(13, 107, 14),\n    COL_TRI(104, 12, 7),\n    COL_TRI(6, 104, 7),\n    COL_TRI(8, 10, 105),\n    COL_TRI(103, 8, 105),\n    COL_TRI(11, 14, 10),\n    COL_TRI(10, 14, 107),\n    COL_TRI(104, 106, 12),\n    COL_TRI(13, 12, 106),\n    COL_TRI(110, 13, 109),\n    COL_TRI(107, 13, 110),\n    COL_TRI(108, 13, 106),\n    COL_TRI(109, 13, 122),\n    COL_TRI(108, 122, 13),\n    COL_TRI(30, 22, 31),\n    COL_TRI(111, 31, 22),\n    COL_TRI(21, 37, 32),\n    COL_TRI(34, 32, 37),\n    COL_TRI(37, 22, 34),\n    COL_TRI(30, 34, 22),\n    COL_TRI(34, 123, 126),\n    COL_TRI(18, 34, 126),\n    COL_TRI(18, 126, 117),\n    COL_TRI(30, 123, 34),\n    COL_TRI(6, 22, 37),\n    COL_TRI(43, 124, 44),\n    COL_TRI(112, 44, 124),\n    COL_TRI(117, 126, 116),\n    COL_TRI(113, 99, 102),\n    COL_TRI(114, 115, 99),\n    COL_TRI(101, 99, 115),\n    COL_TRI(114, 99, 113),\n    COL_TRI(103, 22, 6),\n    COL_TRI(116, 127, 46),\n    COL_TRI(117, 116, 46),\n    COL_TRI(116, 126, 127),\n    COL_TRI(118, 127, 126),\n    COL_TRI(47, 46, 127),\n    COL_TRI(118, 126, 123),\n    COL_TRI(119, 122, 108),\n    COL_TRI(97, 100, 120),\n    COL_TRI(120, 100, 125),\n    COL_TRI(119, 120, 122),\n    COL_TRI(120, 125, 122),\n    COL_TRI(120, 98, 97),\n    COL_TRI(110, 109, 124),\n    COL_TRI(121, 124, 109),\n    COL_TRI(122, 125, 109),\n    COL_TRI(98, 120, 119),\n    COL_TRI(112, 124, 121),\n    COL_TRI(142, 39, 22),\n    COL_TRI_INIT(SURFACE_HANGABLE, 6),\n    COL_TRI(222, 263, 343),\n    COL_TRI(222, 343, 357),\n    COL_TRI(7, 202, 194),\n    COL_TRI(7, 12, 202),\n    COL_TRI(111, 32, 31),\n    COL_TRI(21, 32, 111),\n    COL_TRI_INIT(SURFACE_WATER, 30),\n    COL_TRI(286, 117, 214),\n    COL_TRI(286, 18, 117),\n    COL_TRI(60, 52, 59),\n    COL_TRI(48, 49, 50),\n    COL_TRI(48, 50, 51),\n    COL_TRI(51, 50, 52),\n    COL_TRI(52, 50, 53),\n    COL_TRI(50, 49, 53),\n    COL_TRI(54, 55, 49),\n    COL_TRI(54, 49, 48),\n    COL_TRI(55, 56, 49),\n    COL_TRI(49, 56, 53),\n    COL_TRI(57, 52, 53),\n    COL_TRI(56, 57, 53),\n    COL_TRI(56, 58, 57),\n    COL_TRI(55, 58, 56),\n    COL_TRI(59, 57, 58),\n    COL_TRI(57, 59, 52),\n    COL_TRI(51, 52, 60),\n    COL_TRI(62, 66, 61),\n    COL_TRI(58, 61, 64),\n    COL_TRI(62, 61, 58),\n    COL_TRI(55, 62, 58),\n    COL_TRI(59, 58, 63),\n    COL_TRI(58, 64, 63),\n    COL_TRI(60, 64, 65),\n    COL_TRI(65, 64, 61),\n    COL_TRI(59, 64, 60),\n    COL_TRI(64, 59, 63),\n    COL_TRI(39, 54, 48),\n    COL_TRI_INIT(SURFACE_FLOWING_WATER, 94),\n    COL_TRI_SPECIAL(136, 295, 102, 0x0),\n    COL_TRI_SPECIAL(5, 289, 73, 0x200),\n    COL_TRI_SPECIAL(284, 33, 285, 0x20B),\n    COL_TRI_SPECIAL(285, 33, 286, 0x20B),\n    COL_TRI_SPECIAL(286, 33, 18, 0x200),\n    COL_TRI_SPECIAL(287, 288, 71, 0x0),\n    COL_TRI_SPECIAL(71, 4, 3, 0x200),\n    COL_TRI_SPECIAL(71, 3, 287, 0x200),\n    COL_TRI_SPECIAL(71, 207, 74, 0x0),\n    COL_TRI_SPECIAL(71, 288, 207, 0x0),\n    COL_TRI_SPECIAL(0, 98, 119, 0x235),\n    COL_TRI_SPECIAL(136, 296, 135, 0x0),\n    COL_TRI_SPECIAL(136, 102, 96, 0x10F),\n    COL_TRI_SPECIAL(119, 108, 290, 0x240),\n    COL_TRI_SPECIAL(119, 297, 239, 0x215),\n    COL_TRI_SPECIAL(119, 298, 297, 0x235),\n    COL_TRI_SPECIAL(290, 298, 119, 0x240),\n    COL_TRI_SPECIAL(292, 299, 300, 0x215),\n    COL_TRI_SPECIAL(108, 106, 290, 0x240),\n    COL_TRI_SPECIAL(290, 106, 291, 0x235),\n    COL_TRI_SPECIAL(291, 292, 290, 0x23A),\n    COL_TRI_SPECIAL(292, 291, 299, 0x22B),\n    COL_TRI_SPECIAL(291, 208, 299, 0x22B),\n    COL_TRI_SPECIAL(239, 297, 292, 0x215),\n    COL_TRI_SPECIAL(3, 1, 239, 0x0),\n    COL_TRI_SPECIAL(3, 239, 294, 0x0),\n    COL_TRI_SPECIAL(239, 238, 294, 0x0),\n    COL_TRI_SPECIAL(239, 292, 300, 0x215),\n    COL_TRI_SPECIAL(293, 301, 302, 0x240),\n    COL_TRI_SPECIAL(293, 303, 301, 0x240),\n    COL_TRI_SPECIAL(102, 5, 96, 0x200),\n    COL_TRI_SPECIAL(212, 304, 104, 0x23D),\n    COL_TRI_SPECIAL(104, 247, 212, 0x23D),\n    COL_TRI_SPECIAL(285, 254, 284, 0xB),\n    COL_TRI_SPECIAL(295, 113, 102, 0x2B),\n    COL_TRI_SPECIAL(287, 294, 288, 0x0),\n    COL_TRI_SPECIAL(3, 294, 287, 0x0),\n    COL_TRI_SPECIAL(207, 288, 294, 0x200),\n    COL_TRI_SPECIAL(207, 294, 238, 0x200),\n    COL_TRI_SPECIAL(285, 286, 255, 0xB),\n    COL_TRI_SPECIAL(285, 255, 254, 0x10),\n    COL_TRI_SPECIAL(136, 96, 363, 0x100),\n    COL_TRI_SPECIAL(19, 33, 284, 0x215),\n    COL_TRI_SPECIAL(19, 284, 35, 0x24B),\n    COL_TRI_SPECIAL(5, 70, 289, 0x200),\n    COL_TRI_SPECIAL(96, 5, 73, 0x200),\n    COL_TRI_SPECIAL(135, 296, 211, 0x0),\n    COL_TRI_SPECIAL(136, 363, 296, 0x100),\n    COL_TRI_SPECIAL(104, 35, 247, 0x240),\n    COL_TRI_SPECIAL(119, 239, 0, 0x215),\n    COL_TRI_SPECIAL(104, 304, 106, 0x23D),\n    COL_TRI_SPECIAL(304, 291, 106, 0x240),\n    COL_TRI_SPECIAL(239, 1, 0, 0x215),\n    COL_TRI_SPECIAL(364, 96, 211, 0x0),\n    COL_TRI_SPECIAL(364, 363, 96, 0x2F5),\n    COL_TRI_SPECIAL(366, 368, 369, 0x200),\n    COL_TRI_SPECIAL(35, 284, 247, 0x240),\n    COL_TRI_SPECIAL(296, 365, 211, 0x0),\n    COL_TRI_SPECIAL(364, 211, 365, 0x0),\n    COL_TRI_SPECIAL(366, 367, 368, 0x200),\n    COL_TRI_SPECIAL(38, 16, 28, 0x20B),\n    COL_TRI_SPECIAL(60, 65, 67, 0x295),\n    COL_TRI_SPECIAL(67, 65, 68, 0x2A0),\n    COL_TRI_SPECIAL(36, 17, 33, 0x0),\n    COL_TRI_SPECIAL(36, 33, 19, 0x0),\n    COL_TRI_SPECIAL(20, 17, 36, 0x20B),\n    COL_TRI_SPECIAL(20, 15, 17, 0x20B),\n    COL_TRI_SPECIAL(28, 20, 38, 0x0),\n    COL_TRI_SPECIAL(28, 15, 20, 0x0),\n    COL_TRI_SPECIAL(71, 74, 73, 0x0),\n    COL_TRI_SPECIAL(38, 23, 16, 0x20A),\n    COL_TRI_SPECIAL(69, 16, 23, 0x0),\n    COL_TRI_SPECIAL(69, 72, 16, 0x0),\n    COL_TRI_SPECIAL(39, 72, 69, 0x215),\n    COL_TRI_SPECIAL(39, 29, 72, 0x20B),\n    COL_TRI_SPECIAL(29, 39, 48, 0x220),\n    COL_TRI_SPECIAL(70, 4, 71, 0x0),\n    COL_TRI_SPECIAL(70, 71, 73, 0x0),\n    COL_TRI_SPECIAL(92, 132, 61, 0x282),\n    COL_TRI_SPECIAL(51, 60, 128, 0x2B5),\n    COL_TRI_SPECIAL(67, 129, 60, 0x2B5),\n    COL_TRI_SPECIAL(128, 60, 129, 0x2B5),\n    COL_TRI_SPECIAL(130, 129, 67, 0xAB),\n    COL_TRI_SPECIAL(131, 130, 67, 0xA0),\n    COL_TRI_SPECIAL(131, 67, 68, 0x95),\n    COL_TRI_SPECIAL(131, 68, 132, 0x8B),\n    COL_TRI_SPECIAL(131, 132, 133, 0x80),\n    COL_TRI_SPECIAL(132, 68, 65, 0x295),\n    COL_TRI_SPECIAL(132, 65, 61, 0x280),\n    COL_TRI_SPECIAL(132, 92, 134, 0x75),\n    COL_TRI_SPECIAL(132, 134, 133, 0x80),\n    COL_TRI_SPECIAL(136, 137, 138, 0x0),\n    COL_TRI_SPECIAL(66, 92, 61, 0x275),\n    COL_TRI_SPECIAL(135, 137, 136, 0x0),\n    COL_TRI_INIT(SURFACE_VERY_SLIPPERY, 78),\n    COL_TRI(376, 90, 89),\n    COL_TRI(373, 376, 89),\n    COL_TRI(161, 372, 183),\n    COL_TRI(163, 374, 161),\n    COL_TRI(376, 91, 90),\n    COL_TRI(376, 375, 91),\n    COL_TRI(376, 374, 375),\n    COL_TRI(374, 376, 372),\n    COL_TRI(113, 295, 374),\n    COL_TRI(374, 372, 161),\n    COL_TRI(375, 295, 136),\n    COL_TRI(183, 372, 373),\n    COL_TRI(113, 374, 163),\n    COL_TRI(375, 138, 91),\n    COL_TRI(372, 376, 373),\n    COL_TRI(375, 136, 138),\n    COL_TRI(374, 295, 375),\n    COL_TRI(88, 89, 90),\n    COL_TRI(91, 88, 90),\n    COL_TRI(150, 153, 151),\n    COL_TRI(25, 143, 41),\n    COL_TRI(143, 25, 144),\n    COL_TRI(145, 143, 146),\n    COL_TRI(143, 144, 146),\n    COL_TRI(147, 144, 148),\n    COL_TRI(148, 144, 149),\n    COL_TRI(144, 25, 149),\n    COL_TRI(147, 146, 144),\n    COL_TRI(147, 94, 146),\n    COL_TRI(145, 146, 94),\n    COL_TRI(80, 145, 94),\n    COL_TRI(150, 151, 152),\n    COL_TRI(155, 151, 153),\n    COL_TRI(155, 177, 151),\n    COL_TRI(150, 152, 154),\n    COL_TRI(156, 177, 155),\n    COL_TRI(156, 178, 177),\n    COL_TRI(26, 160, 24),\n    COL_TRI(26, 179, 157),\n    COL_TRI(157, 160, 26),\n    COL_TRI(157, 179, 176),\n    COL_TRI(158, 176, 179),\n    COL_TRI(159, 160, 157),\n    COL_TRI(160, 159, 149),\n    COL_TRI(149, 24, 160),\n    COL_TRI(95, 150, 154),\n    COL_TRI(88, 180, 89),\n    COL_TRI(88, 137, 180),\n    COL_TRI(165, 172, 185),\n    COL_TRI(161, 162, 166),\n    COL_TRI(162, 161, 183),\n    COL_TRI(163, 161, 166),\n    COL_TRI(164, 163, 166),\n    COL_TRI(165, 169, 166),\n    COL_TRI(166, 169, 164),\n    COL_TRI(167, 164, 169),\n    COL_TRI(163, 164, 184),\n    COL_TRI(167, 184, 164),\n    COL_TRI(168, 169, 185),\n    COL_TRI(169, 165, 185),\n    COL_TRI(167, 169, 168),\n    COL_TRI(170, 185, 171),\n    COL_TRI(170, 168, 185),\n    COL_TRI(171, 185, 172),\n    COL_TRI(172, 186, 171),\n    COL_TRI(173, 170, 171),\n    COL_TRI(173, 171, 186),\n    COL_TRI(24, 149, 25),\n    COL_TRI(173, 186, 181),\n    COL_TRI(174, 181, 186),\n    COL_TRI(175, 141, 187),\n    COL_TRI(128, 187, 141),\n    COL_TRI(156, 141, 175),\n    COL_TRI(148, 149, 159),\n    COL_TRI(158, 181, 174),\n    COL_TRI(174, 182, 158),\n    COL_TRI(176, 158, 182),\n    COL_TRI(156, 175, 178),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 130),\n    COL_TRI(82, 411, 84),\n    COL_TRI(411, 410, 86),\n    COL_TRI(84, 411, 86),\n    COL_TRI(82, 417, 411),\n    COL_TRI(86, 410, 415),\n    COL_TRI(86, 415, 87),\n    COL_TRI(87, 417, 82),\n    COL_TRI(87, 415, 417),\n    COL_TRI(317, 314, 316),\n    COL_TRI(327, 321, 311),\n    COL_TRI(397, 390, 395),\n    COL_TRI(396, 388, 397),\n    COL_TRI(397, 388, 390),\n    COL_TRI(396, 379, 388),\n    COL_TRI(395, 390, 389),\n    COL_TRI(387, 379, 396),\n    COL_TRI(391, 387, 396),\n    COL_TRI(387, 377, 379),\n    COL_TRI(381, 377, 387),\n    COL_TRI(394, 387, 391),\n    COL_TRI(381, 380, 377),\n    COL_TRI(380, 378, 377),\n    COL_TRI(401, 400, 398),\n    COL_TRI(380, 386, 378),\n    COL_TRI(386, 384, 378),\n    COL_TRI(386, 395, 384),\n    COL_TRI(395, 389, 384),\n    COL_TRI(398, 391, 399),\n    COL_TRI(398, 400, 391),\n    COL_TRI(399, 391, 392),\n    COL_TRI(400, 394, 391),\n    COL_TRI(401, 398, 399),\n    COL_TRI(401, 399, 402),\n    COL_TRI(402, 399, 393),\n    COL_TRI(399, 392, 393),\n    COL_TRI(403, 383, 400),\n    COL_TRI(400, 383, 394),\n    COL_TRI(403, 404, 383),\n    COL_TRI(404, 382, 383),\n    COL_TRI(401, 405, 404),\n    COL_TRI(405, 385, 404),\n    COL_TRI(401, 404, 403),\n    COL_TRI(404, 385, 382),\n    COL_TRI(405, 402, 385),\n    COL_TRI(402, 393, 385),\n    COL_TRI(401, 402, 405),\n    COL_TRI(401, 403, 400),\n    COL_TRI(314, 315, 316),\n    COL_TRI(242, 305, 306),\n    COL_TRI(307, 306, 308),\n    COL_TRI(307, 308, 245),\n    COL_TRI(242, 309, 305),\n    COL_TRI(310, 311, 312),\n    COL_TRI(313, 245, 308),\n    COL_TRI(320, 213, 329),\n    COL_TRI(270, 269, 326),\n    COL_TRI(317, 322, 327),\n    COL_TRI(316, 318, 317),\n    COL_TRI(318, 322, 317),\n    COL_TRI(319, 328, 320),\n    COL_TRI(252, 320, 328),\n    COL_TRI(321, 312, 311),\n    COL_TRI(322, 321, 327),\n    COL_TRI(214, 117, 46),\n    COL_TRI(214, 46, 45),\n    COL_TRI(319, 323, 328),\n    COL_TRI(323, 325, 328),\n    COL_TRI(324, 252, 328),\n    COL_TRI(325, 324, 328),\n    COL_TRI(270, 330, 317),\n    COL_TRI(270, 317, 327),\n    COL_TRI(329, 270, 327),\n    COL_TRI(329, 327, 331),\n    COL_TRI(339, 242, 315),\n    COL_TRI(306, 370, 242),\n    COL_TRI(306, 307, 370),\n    COL_TRI(305, 358, 306),\n    COL_TRI(358, 308, 306),\n    COL_TRI(310, 312, 307),\n    COL_TRI(245, 310, 307),\n    COL_TRI(316, 315, 370),\n    COL_TRI(315, 242, 370),\n    COL_TRI(326, 315, 314),\n    COL_TRI(320, 310, 319),\n    COL_TRI(310, 342, 319),\n    COL_TRI(310, 245, 342),\n    COL_TRI(310, 320, 311),\n    COL_TRI(340, 326, 371),\n    COL_TRI(346, 340, 371),\n    COL_TRI(340, 339, 315),\n    COL_TRI(340, 315, 326),\n    COL_TRI(311, 320, 331),\n    COL_TRI(326, 250, 371),\n    COL_TRI(326, 314, 330),\n    COL_TRI(326, 330, 270),\n    COL_TRI(269, 250, 326),\n    COL_TRI(314, 317, 330),\n    COL_TRI(250, 344, 371),\n    COL_TRI(329, 331, 320),\n    COL_TRI(320, 252, 213),\n    COL_TRI(345, 346, 371),\n    COL_TRI(311, 331, 327),\n    COL_TRI(305, 341, 358),\n    COL_TRI(358, 354, 308),\n    COL_TRI(344, 345, 371),\n    COL_TRI(80, 66, 62),\n    COL_TRI(62, 55, 79),\n    COL_TRI(79, 80, 62),\n    COL_TRI(81, 82, 83),\n    COL_TRI(83, 84, 85),\n    COL_TRI(83, 82, 84),\n    COL_TRI(85, 84, 86),\n    COL_TRI(85, 86, 79),\n    COL_TRI(87, 79, 86),\n    COL_TRI(81, 79, 87),\n    COL_TRI(81, 87, 82),\n    COL_TRI(39, 142, 54),\n    COL_TRI(29, 139, 30),\n    COL_TRI(139, 29, 48),\n    COL_TRI(123, 30, 139),\n    COL_TRI(128, 140, 139),\n    COL_TRI(139, 51, 128),\n    COL_TRI(48, 51, 139),\n    COL_TRI(140, 123, 139),\n    COL_TRI(128, 141, 140),\n    COL_TRI(80, 79, 81),\n    COL_TRI(55, 142, 85),\n    COL_TRI(142, 55, 54),\n    COL_TRI(83, 85, 142),\n    COL_TRI(55, 85, 79),\n    COL_TRI_INIT(SURFACE_WALL_MISC, 24),\n    COL_TRI(413, 409, 406),\n    COL_TRI(413, 406, 414),\n    COL_TRI(412, 409, 413),\n    COL_TRI(412, 407, 409),\n    COL_TRI(414, 406, 408),\n    COL_TRI(414, 408, 416),\n    COL_TRI(416, 407, 412),\n    COL_TRI(416, 408, 407),\n    COL_TRI(298, 303, 297),\n    COL_TRI(303, 293, 292),\n    COL_TRI(303, 292, 297),\n    COL_TRI(298, 301, 303),\n    COL_TRI(292, 293, 302),\n    COL_TRI(292, 302, 290),\n    COL_TRI(290, 302, 301),\n    COL_TRI(290, 301, 298),\n    COL_TRI(296, 369, 365),\n    COL_TRI(296, 366, 369),\n    COL_TRI(363, 366, 296),\n    COL_TRI(365, 369, 368),\n    COL_TRI(365, 368, 364),\n    COL_TRI(363, 367, 366),\n    COL_TRI(364, 368, 367),\n    COL_TRI(364, 367, 363),\n    COL_TRI_INIT(SURFACE_NOISE_DEFAULT, 52),\n    COL_TRI(77, 95, 78),\n    COL_TRI(190, 10, 192),\n    COL_TRI(95, 47, 150),\n    COL_TRI(189, 47, 127),\n    COL_TRI(189, 150, 47),\n    COL_TRI(153, 150, 189),\n    COL_TRI(190, 145, 191),\n    COL_TRI(190, 83, 103),\n    COL_TRI(105, 10, 190),\n    COL_TRI(103, 105, 190),\n    COL_TRI(83, 190, 191),\n    COL_TRI(190, 143, 145),\n    COL_TRI(26, 42, 179),\n    COL_TRI(191, 145, 81),\n    COL_TRI(145, 80, 81),\n    COL_TRI(83, 191, 81),\n    COL_TRI(83, 142, 103),\n    COL_TRI(190, 40, 143),\n    COL_TRI(40, 41, 143),\n    COL_TRI(107, 192, 10),\n    COL_TRI(44, 179, 42),\n    COL_TRI(179, 44, 158),\n    COL_TRI(153, 189, 155),\n    COL_TRI(189, 127, 155),\n    COL_TRI(155, 127, 118),\n    COL_TRI(22, 103, 142),\n    COL_TRI(192, 110, 124),\n    COL_TRI(101, 115, 100),\n    COL_TRI(115, 114, 184),\n    COL_TRI(115, 184, 167),\n    COL_TRI(115, 167, 100),\n    COL_TRI(100, 167, 125),\n    COL_TRI(107, 110, 192),\n    COL_TRI(192, 40, 190),\n    COL_TRI(27, 40, 192),\n    COL_TRI(27, 192, 43),\n    COL_TRI(124, 43, 192),\n    COL_TRI(156, 155, 118),\n    COL_TRI(193, 156, 118),\n    COL_TRI(193, 118, 123),\n    COL_TRI(168, 125, 167),\n    COL_TRI(109, 125, 170),\n    COL_TRI(168, 170, 125),\n    COL_TRI(156, 193, 141),\n    COL_TRI(140, 141, 193),\n    COL_TRI(193, 123, 140),\n    COL_TRI(109, 170, 121),\n    COL_TRI(44, 112, 158),\n    COL_TRI(173, 121, 170),\n    COL_TRI(112, 121, 173),\n    COL_TRI(173, 181, 112),\n    COL_TRI(181, 158, 112),\n    COL_TRI_INIT(SURFACE_NOISE_SLIPPERY, 12),\n    COL_TRI(80, 93, 66),\n    COL_TRI(92, 93, 94),\n    COL_TRI(93, 92, 66),\n    COL_TRI(94, 134, 92),\n    COL_TRI(147, 134, 94),\n    COL_TRI(94, 93, 80),\n    COL_TRI(128, 129, 187),\n    COL_TRI(91, 138, 137),\n    COL_TRI(91, 137, 88),\n    COL_TRI(188, 184, 114),\n    COL_TRI(188, 114, 113),\n    COL_TRI(184, 188, 163),\n    COL_TRI_INIT(SURFACE_NO_CAM_COLLISION, 117),\n    COL_TRI(418, 419, 420),\n    COL_TRI(418, 421, 419),\n    COL_TRI(422, 418, 13),\n    COL_TRI(422, 421, 418),\n    COL_TRI(419, 421, 423),\n    COL_TRI(421, 422, 423),\n    COL_TRI(424, 419, 423),\n    COL_TRI(424, 425, 419),\n    COL_TRI(419, 425, 426),\n    COL_TRI(420, 419, 426),\n    COL_TRI(422, 427, 424),\n    COL_TRI(422, 428, 427),\n    COL_TRI(422, 424, 423),\n    COL_TRI(422, 122, 428),\n    COL_TRI(422, 13, 122),\n    COL_TRI(427, 425, 424),\n    COL_TRI(430, 435, 476),\n    COL_TRI(427, 429, 425),\n    COL_TRI(426, 425, 429),\n    COL_TRI(426, 429, 474),\n    COL_TRI(429, 475, 474),\n    COL_TRI(429, 430, 475),\n    COL_TRI(430, 429, 427),\n    COL_TRI(122, 120, 428),\n    COL_TRI(120, 431, 428),\n    COL_TRI(431, 432, 428),\n    COL_TRI(432, 427, 428),\n    COL_TRI(433, 430, 432),\n    COL_TRI(433, 435, 430),\n    COL_TRI(430, 476, 475),\n    COL_TRI(432, 430, 427),\n    COL_TRI(434, 435, 433),\n    COL_TRI(435, 477, 476),\n    COL_TRI(435, 434, 477),\n    COL_TRI(97, 436, 431),\n    COL_TRI(431, 436, 432),\n    COL_TRI(436, 433, 432),\n    COL_TRI(437, 436, 97),\n    COL_TRI(436, 437, 433),\n    COL_TRI(438, 434, 433),\n    COL_TRI(437, 438, 433),\n    COL_TRI(97, 431, 120),\n    COL_TRI(437, 97, 2),\n    COL_TRI(442, 440, 441),\n    COL_TRI(434, 439, 478),\n    COL_TRI(434, 478, 477),\n    COL_TRI(439, 434, 438),\n    COL_TRI(439, 479, 478),\n    COL_TRI(439, 445, 479),\n    COL_TRI(440, 439, 441),\n    COL_TRI(440, 445, 439),\n    COL_TRI(441, 439, 438),\n    COL_TRI(442, 437, 2),\n    COL_TRI(437, 441, 438),\n    COL_TRI(437, 442, 441),\n    COL_TRI(442, 2, 99),\n    COL_TRI(443, 442, 99),\n    COL_TRI(442, 443, 440),\n    COL_TRI(443, 99, 481),\n    COL_TRI(444, 443, 481),\n    COL_TRI(444, 480, 443),\n    COL_TRI(440, 480, 482),\n    COL_TRI(440, 443, 480),\n    COL_TRI(445, 446, 479),\n    COL_TRI(446, 483, 479),\n    COL_TRI(446, 440, 482),\n    COL_TRI(446, 445, 440),\n    COL_TRI(447, 448, 450),\n    COL_TRI(448, 452, 451),\n    COL_TRI(449, 447, 453),\n    COL_TRI(450, 453, 447),\n    COL_TRI(448, 447, 452),\n    COL_TRI(447, 484, 452),\n    COL_TRI(447, 449, 484),\n    COL_TRI(451, 452, 455),\n    COL_TRI(452, 484, 455),\n    COL_TRI(451, 455, 454),\n    COL_TRI(453, 450, 454),\n    COL_TRI(454, 455, 453),\n    COL_TRI(455, 449, 453),\n    COL_TRI(455, 484, 449),\n    COL_TRI(456, 457, 34),\n    COL_TRI(34, 458, 459),\n    COL_TRI(34, 457, 458),\n    COL_TRI(464, 465, 462),\n    COL_TRI(456, 485, 457),\n    COL_TRI(457, 485, 461),\n    COL_TRI(458, 457, 461),\n    COL_TRI(458, 486, 487),\n    COL_TRI(459, 458, 487),\n    COL_TRI(458, 461, 486),\n    COL_TRI(459, 487, 460),\n    COL_TRI(460, 485, 456),\n    COL_TRI(460, 487, 485),\n    COL_TRI(461, 485, 487),\n    COL_TRI(461, 487, 486),\n    COL_TRI(462, 467, 468),\n    COL_TRI(462, 465, 467),\n    COL_TRI(463, 464, 462),\n    COL_TRI(472, 488, 489),\n    COL_TRI(465, 466, 467),\n    COL_TRI(466, 465, 464),\n    COL_TRI(467, 488, 6),\n    COL_TRI(467, 489, 488),\n    COL_TRI(467, 466, 489),\n    COL_TRI(468, 467, 6),\n    COL_TRI(6, 472, 471),\n    COL_TRI(6, 488, 472),\n    COL_TRI(469, 489, 464),\n    COL_TRI(466, 464, 489),\n    COL_TRI(470, 464, 463),\n    COL_TRI(470, 469, 464),\n    COL_TRI(471, 469, 470),\n    COL_TRI(471, 472, 469),\n    COL_TRI(473, 472, 489),\n    COL_TRI(469, 473, 489),\n    COL_TRI(472, 473, 469),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(30),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03,     /*pos*/     0, 2867, -3924, /*yaw*/ 0),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree,      /*pos*/ -1333,  711,  1881),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree,      /*pos*/ -6220,  468,  3458),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree,      /*pos*/ -5069,  350,  3221),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree,      /*pos*/ -2566,  438,  2626),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree,      /*pos*/ -1900,  401,  2868),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree,      /*pos*/  6399,  494, -1680),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree,      /*pos*/   767,  498,  2598),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree,      /*pos*/  1476,  189,  3280),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree,      /*pos*/  3153,  206,   469),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree,      /*pos*/  6178,  219,   167),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree,      /*pos*/ -6510,  260,  1411),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree,      /*pos*/  5457,  528, -3259),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree,      /*pos*/  5868,  698, -4453),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree,      /*pos*/  6408,  869, -5314),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree,      /*pos*/ -4711,  342,   433),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree,      /*pos*/  1132,  365,  1977),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree,      /*pos*/ -5506,  364,  -661),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree,      /*pos*/ -6269,  402, -2145),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree,      /*pos*/ -5600,  440, -2627),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree,      /*pos*/  1919,  268,  1157),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree,      /*pos*/ -5957,  517, -3447),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree,      /*pos*/ -2021,  633,  1468),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree,      /*pos*/  -109,  613,  3008),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree,      /*pos*/  5774,  413, -1114),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree,      /*pos*/  5954,  526, -2846),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree,      /*pos*/ -5204,  296,   811),\n    SPECIAL_OBJECT_WITH_YAW_AND_PARAM(/*preset*/ special_metal_door_warp,  /*pos*/  3292, -511, -2931, /*yaw*/ 160, /*bhvParam2*/ 2),\n    SPECIAL_OBJECT_WITH_YAW_AND_PARAM(/*preset*/ special_castle_door_warp, /*pos*/   -76,  803, -3155, /*yaw*/   0, /*bhvParam2*/ 0),\n    SPECIAL_OBJECT_WITH_YAW_AND_PARAM(/*preset*/ special_castle_door_warp, /*pos*/    77,  803, -3155, /*yaw*/ 128, /*bhvParam2*/ 1),\n    COL_WATER_BOX_INIT(2),\n    COL_WATER_BOX(0, -7129, -7222, 8253, -58, -81),\n    COL_WATER_BOX(1, 1024, -58, 8230, 8137, -81),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/castle_grounds/areas/1/geo.inc.c",
    "content": "// 0x0E00073C\nconst GeoLayout castle_grounds_geo_00073C[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND(BACKGROUND_OCEAN_SKY, geo_skybox_main),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 20000, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(16, 0, 1500, 2500, 0, 1500, -12000, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, castle_grounds_seg7_dl_07006D70),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, castle_grounds_seg7_dl_070095F0),\n                    GEO_DISPLAY_LIST(LAYER_ALPHA, castle_grounds_seg7_dl_0700A860),\n                    GEO_DISPLAY_LIST(LAYER_TRANSPARENT_DECAL, castle_grounds_seg7_dl_0700B1D0),\n                    GEO_DISPLAY_LIST(LAYER_ALPHA, castle_grounds_seg7_dl_0700BA20),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE_DECAL, castle_grounds_seg7_dl_0700C430),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, castle_grounds_seg7_dl_0700C210),\n                    GEO_ASM(   0, geo_movtex_pause_control),\n                    GEO_ASM(0x1601, geo_movtex_draw_nocolor),\n                    GEO_ASM(0x1601, geo_movtex_draw_water_regions),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(0, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_cannon_circle_base),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/castle_grounds/areas/1/macro.inc.c",
    "content": "// 0x07010D08 - 0x07010DB4\nconst MacroObject castle_grounds_seg7_macro_objs[] = {\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,            /*yaw*/ 262, /*pos*/  5288,   722,  -800, /*bhvParam*/ DIALOG_050),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,            /*yaw*/  90, /*pos*/  1740,    35,  2500, /*bhvParam*/ DIALOG_065),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,            /*yaw*/   0, /*pos*/ -1566,   260,  3503, /*bhvParam*/ DIALOG_167),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,            /*yaw*/  82, /*pos*/ -4666,   260,   922, /*bhvParam*/ DIALOG_051),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_in_pole,         /*yaw*/   0, /*pos*/ -6270,   975, -2145),\n    MACRO_OBJECT               (/*preset*/ macro_1up,                        /*yaw*/   0, /*pos*/  -440,  3180, -5000),\n    MACRO_OBJECT               (/*preset*/ macro_1up,                        /*yaw*/   0, /*pos*/     0,  3180, -5200),\n    MACRO_OBJECT               (/*preset*/ macro_1up,                        /*yaw*/   0, /*pos*/   440,  3180, -5000),\n    MACRO_OBJECT               (/*preset*/ macro_box_wing_cap,               /*yaw*/   0, /*pos*/    13,  3476, -5646),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,         /*yaw*/   0, /*pos*/     0,   535,  -500),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,         /*yaw*/   0, /*pos*/     0,   535, -1774),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_hidden_1up,                 /*yaw*/   0, /*pos*/     0,   510, -1170, /*bhvParam*/ 2),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,              /*yaw*/   0, /*pos*/     0,   540, -1774),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,              /*yaw*/   0, /*pos*/     0,   540,  -500),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_cannon_open,                /*yaw*/   0, /*pos*/  2384,    70,  1961, /*bhvParam*/ 0x40),\n    MACRO_OBJECT               (/*preset*/ macro_butterfly_triplet_no_bombs, /*yaw*/   0, /*pos*/ -6240,   295,   320),\n    MACRO_OBJECT               (/*preset*/ macro_butterfly_triplet_no_bombs, /*yaw*/   0, /*pos*/  6330,   710, -3760),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/castle_grounds/areas/1/movtext.inc.c",
    "content": "// 0x07010E40 - 0x07010E60\nstatic Movtex castle_grounds_movtex_moat_water_data[] = {\n    MOV_TEX_INIT_LOAD(    1),\n    MOV_TEX_ROT_SPEED(   20),\n    MOV_TEX_ROT_SCALE(   15),\n    MOV_TEX_4_BOX_TRIS(-7129, -7222),\n    MOV_TEX_4_BOX_TRIS(-7129,   -58),\n    MOV_TEX_4_BOX_TRIS( 8253,   -58),\n    MOV_TEX_4_BOX_TRIS( 8253, -7222),\n    MOV_TEX_ROT(     ROTATE_COUNTER_CLOCKWISE),\n    MOV_TEX_ALPHA(    0x96),\n    MOV_TEX_DEFINE(  TEXTURE_WATER),\n    MOV_TEX_END(),\n};\n\n// 0x07010E60 - 0x07010E80\nstatic Movtex castle_grounds_movtex_lake_water_data[] = {\n    MOV_TEX_INIT_LOAD(   1),\n    MOV_TEX_ROT_SPEED(  15),\n    MOV_TEX_ROT_SCALE(  10),\n    MOV_TEX_4_BOX_TRIS(1024,  -58),\n    MOV_TEX_4_BOX_TRIS(1024, 8137),\n    MOV_TEX_4_BOX_TRIS(8230, 8137),\n    MOV_TEX_4_BOX_TRIS(8230,  -58),\n    MOV_TEX_ROT(     ROTATE_CLOCKWISE),\n    MOV_TEX_ALPHA(    0x96),\n    MOV_TEX_DEFINE(  TEXTURE_WATER),\n    MOV_TEX_END(),\n};\n\n// 0x07010E80\nconst struct MovtexQuadCollection castle_grounds_movtex_water[] = {\n    {0, castle_grounds_movtex_moat_water_data},\n    {1, castle_grounds_movtex_lake_water_data},\n    {-1, NULL},\n};\n\nMovtex castle_grounds_movtex_tris_waterfall[] = {\n    MOV_TEX_SPD(    70),\n    MOV_TEX_TRIS(-4469, -800, -6413, 0, 0),\n    MOV_TEX_TRIS(-5525, 1171, -7026, 2, 0),\n    MOV_TEX_TRIS(-6292, 2028, -7463, 4, 0),\n    MOV_TEX_TRIS(-7302, 2955, -7461, 6, 0),\n    MOV_TEX_TRIS(-4883, -800, -5690, 0, 3),\n    MOV_TEX_TRIS(-5547, 1110, -6097, 2, 3),\n    MOV_TEX_TRIS(-6732, 2587, -6770, 4, 3),\n    MOV_TEX_TRIS(-7603, 3004, -7160, 6, 3),\n    MOV_TEX_TRIS(-5580, -800, -4740, 0, 6),\n    MOV_TEX_TRIS(-6205, 1068, -5347, 2, 6),\n    MOV_TEX_TRIS(-7249, 2566, -6192, 4, 6),\n    MOV_TEX_TRIS(-6895, -800, -4714, 0, 9),\n    MOV_TEX_TRIS(-7201, 1083, -5071, 2, 9),\n    MOV_TEX_TRIS(-7578, 2042, -5766, 4, 9),\n    MOV_TEX_TRIS(-8132, 2961, -6761, 6, 9),\n};\n\n// 0x07010F30 - 0x07010FC0\nconst Gfx castle_grounds_dl_waterfall[] = {\n    gsSP2Triangles( 0,  1,  5, 0x0,  0,  5,  4, 0x0),\n    gsSP2Triangles( 1,  2,  6, 0x0,  1,  6,  5, 0x0),\n    gsSP2Triangles( 2,  3,  6, 0x0,  3,  7,  6, 0x0),\n    gsSP2Triangles( 4,  5,  9, 0x0,  4,  9,  8, 0x0),\n    gsSP2Triangles( 5,  6,  9, 0x0,  6, 10,  9, 0x0),\n    gsSP2Triangles( 6,  7, 10, 0x0,  8,  9, 12, 0x0),\n    gsSP2Triangles( 8, 12, 11, 0x0,  9, 10, 13, 0x0),\n    gsSP2Triangles( 9, 13, 12, 0x0, 10,  7, 14, 0x0),\n    gsSP1Triangle(10, 14, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_grounds/geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"game/level_geo.h\"\n#include \"game/geo_misc.h\"\n#include \"game/camera.h\"\n#include \"game/moving_texture.h\"\n#include \"game/screen_transition.h\"\n#include \"game/paintings.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"levels/castle_grounds/header.h\"\n\n#include \"levels/castle_grounds/areas/1/11/geo.inc.c\"\n#include \"levels/castle_grounds/areas/1/3/geo.inc.c\"\n#include \"levels/castle_grounds/areas/1/7/geo.inc.c\"\n#include \"levels/castle_grounds/areas/1/8/geo.inc.c\"\n#include \"levels/castle_grounds/areas/1/geo.inc.c\"\n"
  },
  {
    "path": "levels/castle_grounds/header.h",
    "content": "#ifndef CASTLE_GROUNDS_HEADER_H\n#define CASTLE_GROUNDS_HEADER_H\n\n#include \"types.h\"\n#include \"game/moving_texture.h\"\n\n// geo\nextern const GeoLayout castle_grounds_geo_000660[];\nextern const GeoLayout castle_grounds_geo_0006F4[];\nextern const GeoLayout castle_grounds_geo_00070C[];\nextern const GeoLayout castle_grounds_geo_000724[];\nextern const GeoLayout castle_grounds_geo_00073C[];\n\n// leveldata\nextern const Gfx castle_grounds_seg7_dl_07006D70[];\nextern const Gfx castle_grounds_seg7_dl_070095F0[];\nextern const Gfx castle_grounds_seg7_dl_0700A290[];\nextern const Gfx castle_grounds_seg7_dl_0700A860[];\nextern const Gfx castle_grounds_seg7_dl_0700B1D0[];\nextern const Gfx castle_grounds_seg7_dl_0700BA20[];\nextern const Gfx castle_grounds_seg7_dl_0700BB80[];\nextern const Gfx castle_grounds_seg7_dl_0700BC68[];\nextern const Gfx castle_grounds_seg7_dl_0700C210[];\nextern const Gfx castle_grounds_seg7_dl_0700C430[];\nextern const Gfx castle_grounds_seg7_dl_0700C670[];\nextern const Gfx castle_grounds_seg7_dl_0700C6A8[];\nextern const Gfx castle_grounds_seg7_dl_0700C6E8[];\nextern const Gfx castle_grounds_seg7_dl_0700C728[];\nextern const Gfx castle_grounds_seg7_dl_0700C768[];\nextern const struct Animation *const castle_grounds_seg7_anims_flags[];\nextern const Gfx castle_grounds_seg7_dl_0700EA58[];\nextern const Gfx castle_grounds_seg7_us_dl_0700F2E8[];\nextern const Collision castle_grounds_seg7_collision_level[];\nextern const MacroObject castle_grounds_seg7_macro_objs[];\nextern const Collision castle_grounds_seg7_collision_moat_grills[];\nextern const Collision castle_grounds_seg7_collision_cannon_grill[];\nextern const struct MovtexQuadCollection castle_grounds_movtex_water[];\nextern Movtex castle_grounds_movtex_tris_waterfall[];\nextern const Gfx castle_grounds_dl_waterfall[];\n\n// script\nextern const LevelScript level_castle_grounds_entry[];\n\n#endif\n"
  },
  {
    "path": "levels/castle_grounds/level.yaml",
    "content": "# Princess Peach's Castle (Castle Grounds)\nshort-name: castle_grounds\nfull-name: Princess Peach's Castle (Castle Grounds)\ntexture-file: [\"/texture.inc.c\"]\narea-count: 1\nobjects: []\nshared-path: []\n# loaded files\nskybox-bin: water\ntexture-bin: outside\neffects: false\nactor-bins: [group10, group15]\ncommon-bin: [common0]\n"
  },
  {
    "path": "levels/castle_grounds/leveldata.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"surface_terrains.h\"\n#include \"moving_texture_macros.h\"\n#include \"level_misc_macros.h\"\n#include \"macro_presets.h\"\n#include \"special_presets.h\"\n#include \"textures.h\"\n#include \"dialog_ids.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/castle_grounds/texture.inc.c\"\n#include \"levels/castle_grounds/areas/1/1/model.inc.c\"\n#include \"levels/castle_grounds/areas/1/2/model.inc.c\"\n#include \"levels/castle_grounds/areas/1/3/model.inc.c\"\n#include \"levels/castle_grounds/areas/1/4/model.inc.c\"\n#include \"levels/castle_grounds/areas/1/5/model.inc.c\"\n#include \"levels/castle_grounds/areas/1/6/model.inc.c\"\n#include \"levels/castle_grounds/areas/1/7/model.inc.c\"\n#include \"levels/castle_grounds/areas/1/8/model.inc.c\"\n#include \"levels/castle_grounds/areas/1/9/model.inc.c\"\n#include \"levels/castle_grounds/areas/1/10/model.inc.c\"\n#include \"levels/castle_grounds/areas/1/11/model.inc.c\"\n#include \"levels/castle_grounds/areas/1/11/anim.inc.c\"\n#include \"levels/castle_grounds/areas/1/12/model.inc.c\" // Letter\n#ifndef VERSION_JP\n#include \"levels/castle_grounds/areas/1/13/model.inc.c\" // Peach signature\n#endif\n#include \"levels/castle_grounds/areas/1/collision.inc.c\"\n#include \"levels/castle_grounds/areas/1/macro.inc.c\"\n#include \"levels/castle_grounds/areas/1/7/collision.inc.c\"\n#include \"levels/castle_grounds/areas/1/8/collision.inc.c\"\n#include \"levels/castle_grounds/areas/1/movtext.inc.c\"\n"
  },
  {
    "path": "levels/castle_grounds/script.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"behavior_data.h\"\n#include \"model_ids.h\"\n#include \"seq_ids.h\"\n#include \"segment_symbols.h\"\n#include \"level_commands.h\"\n\n#include \"game/level_update.h\"\n\n#include \"levels/scripts.h\"\n\n#include \"actors/common1.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/castle_grounds/header.h\"\n\nstatic const LevelScript script_func_local_1[] = {\n    WARP_NODE(/*id*/ WARP_NODE_00, /*destLevel*/ LEVEL_CASTLE,         /*destArea*/ 1, /*destNode*/ WARP_NODE_00, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_01, /*destLevel*/ LEVEL_CASTLE,         /*destArea*/ 1, /*destNode*/ WARP_NODE_01, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_02, /*destLevel*/ LEVEL_CASTLE,         /*destArea*/ 3, /*destNode*/ WARP_NODE_02, /*flags*/ WARP_NO_CHECKPOINT),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/     0,   900, -1710, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_03), /*bhv*/ bhvDeathWarp),\n    WARP_NODE(/*id*/ WARP_NODE_03, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 1, /*destNode*/ WARP_NODE_03, /*flags*/ WARP_NO_CHECKPOINT),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -1328,   260,  4664, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_04), /*bhv*/ bhvSpinAirborneCircleWarp),\n    WARP_NODE(/*id*/ WARP_NODE_04, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 1, /*destNode*/ WARP_NODE_04, /*flags*/ WARP_NO_CHECKPOINT),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -3379,  -815, -2025, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(60) | BPARAM2(WARP_NODE_05), /*bhv*/ bhvWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -3379,  -500, -2025, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_06), /*bhv*/ bhvLaunchDeathWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -3799, -1199, -5816, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(WARP_NODE_07), /*bhv*/ bhvSwimmingWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -3379,  -500, -2025, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_08), /*bhv*/ bhvLaunchStarCollectWarp),\n    WARP_NODE(/*id*/ WARP_NODE_05, /*destLevel*/ LEVEL_VCUTM,          /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_06, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 1, /*destNode*/ WARP_NODE_06, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_07, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 1, /*destNode*/ WARP_NODE_07, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_08, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 1, /*destNode*/ WARP_NODE_08, /*flags*/ WARP_NO_CHECKPOINT),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/  5408,  4500,  3637, /*angle*/ 0, 225, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvAirborneWarp),\n    WARP_NODE(/*id*/ WARP_NODE_0A, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -6901,  2376, -6509, /*angle*/ 0, 230, 0, /*bhvParam*/ BPARAM2(WARP_NODE_14), /*bhv*/ bhvAirborneWarp),\n    WARP_NODE(/*id*/ WARP_NODE_14, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 1, /*destNode*/ WARP_NODE_14, /*flags*/ WARP_NO_CHECKPOINT),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/  4997, -1250,  2258, /*angle*/ 0, 210, 0, /*bhvParam*/ BPARAM2(WARP_NODE_1E), /*bhv*/ bhvSwimmingWarp),\n    WARP_NODE(/*id*/ WARP_NODE_1E, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 1, /*destNode*/ WARP_NODE_1E, /*flags*/ WARP_NO_CHECKPOINT),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_2[] = {\n    OBJECT(/*model*/ MODEL_NONE,                        /*pos*/ -5812,  100, -5937, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvWaterfallSoundLoop),\n    OBJECT(/*model*/ MODEL_NONE,                        /*pos*/ -7430, 1500,   873, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(0x00), /*bhv*/ bhvBirdsSoundLoop),\n    OBJECT(/*model*/ MODEL_NONE,                        /*pos*/   -80, 1500,  5004, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(0x01), /*bhv*/ bhvBirdsSoundLoop),\n    OBJECT(/*model*/ MODEL_NONE,                        /*pos*/  7131, 1500, -2989, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(0x02), /*bhv*/ bhvBirdsSoundLoop),\n    OBJECT(/*model*/ MODEL_NONE,                        /*pos*/ -7430, 1500, -5937, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvAmbientSounds),\n    OBJECT(/*model*/ MODEL_CASTLE_GROUNDS_VCUTM_GRILL,  /*pos*/     0,    0,     0, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvMoatGrills),\n    OBJECT(/*model*/ MODEL_NONE,                        /*pos*/     0,    0,     0, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvInvisibleObjectsUnderBridge),\n    OBJECT(/*model*/ MODEL_MIST,                        /*pos*/ -4878, -787, -5690, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvWaterMist2),\n    OBJECT(/*model*/ MODEL_MIST,                        /*pos*/ -4996, -787, -5548, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(0x01), /*bhv*/ bhvWaterMist2),\n    OBJECT(/*model*/ MODEL_MIST,                        /*pos*/ -5114, -787, -5406, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(0x02), /*bhv*/ bhvWaterMist2),\n    OBJECT(/*model*/ MODEL_MIST,                        /*pos*/ -5212, -787, -5219, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(0x03), /*bhv*/ bhvWaterMist2),\n    OBJECT(/*model*/ MODEL_MIST,                        /*pos*/ -5311, -787, -5033, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(0x04), /*bhv*/ bhvWaterMist2),\n    OBJECT(/*model*/ MODEL_MIST,                        /*pos*/ -5419, -787, -4895, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(0x05), /*bhv*/ bhvWaterMist2),\n    OBJECT(/*model*/ MODEL_MIST,                        /*pos*/ -5527, -787, -4757, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(0x06), /*bhv*/ bhvWaterMist2),\n    OBJECT(/*model*/ MODEL_MIST,                        /*pos*/ -5686, -787, -4733, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(0x07), /*bhv*/ bhvWaterMist2),\n    OBJECT(/*model*/ MODEL_MIST,                        /*pos*/ -5845, -787, -4710, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(0x08), /*bhv*/ bhvWaterMist2),\n    OBJECT(/*model*/ MODEL_NONE,                        /*pos*/  5223, -975,  1667, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvManyBlueFishSpawner),\n    OBJECT(/*model*/ MODEL_BIRDS,                       /*pos*/ -5069,  850,  3221, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(BIRD_BP_SPAWNER), /*bhv*/ bhvBird),\n    OBJECT(/*model*/ MODEL_BIRDS,                       /*pos*/ -4711,  742,   433, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(BIRD_BP_SPAWNER), /*bhv*/ bhvBird),\n    OBJECT(/*model*/ MODEL_BIRDS,                       /*pos*/  5774,  913, -1114, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(BIRD_BP_SPAWNER), /*bhv*/ bhvBird),\n    OBJECT(/*model*/ MODEL_NONE,                        /*pos*/ -1328,  260,  4664, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(0x28), /*bhv*/ bhvIntroScene),\n    OBJECT(/*model*/ MODEL_CASTLE_GROUNDS_CANNON_GRILL, /*pos*/     0,    0,     0, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvHiddenAt120Stars),\n    OBJECT(/*model*/ MODEL_LAKITU,                      /*pos*/    11,  803, -3015, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(CAMERA_LAKITU_BP_INTRO), /*bhv*/ bhvCameraLakitu),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_3[] = {\n    OBJECT(/*model*/ MODEL_CASTLE_GROUNDS_FLAG, /*pos*/ -3213, 3348, -3011, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvCastleFlagWaving),\n    OBJECT(/*model*/ MODEL_CASTLE_GROUNDS_FLAG, /*pos*/  3213, 3348, -3011, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvCastleFlagWaving),\n    OBJECT(/*model*/ MODEL_CASTLE_GROUNDS_FLAG, /*pos*/ -3835, 3348, -6647, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvCastleFlagWaving),\n    OBJECT(/*model*/ MODEL_CASTLE_GROUNDS_FLAG, /*pos*/  3835, 3348, -6647, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvCastleFlagWaving),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_4[] = {\n    OBJECT(/*model*/ MODEL_BUTTERFLY, /*pos*/ -4508,  406,  4400, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvButterfly),\n    OBJECT(/*model*/ MODEL_BUTTERFLY, /*pos*/ -4408,  406,  4500, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvButterfly),\n    OBJECT(/*model*/ MODEL_BUTTERFLY, /*pos*/ -4708,  406,  4100, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvButterfly),\n    OBJECT(/*model*/ MODEL_BUTTERFLY, /*pos*/ -6003,  473, -2621, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvButterfly),\n    OBJECT(/*model*/ MODEL_BUTTERFLY, /*pos*/ -6003,  473, -2321, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvButterfly),\n    OBJECT(/*model*/ MODEL_BUTTERFLY, /*pos*/  6543,  461,  -617, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvButterfly),\n    OBJECT(/*model*/ MODEL_BUTTERFLY, /*pos*/  6143,  461,  -617, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvButterfly),\n    OBJECT(/*model*/ MODEL_BUTTERFLY, /*pos*/  5773,  775, -5722, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvButterfly),\n    OBJECT(/*model*/ MODEL_BUTTERFLY, /*pos*/  5873,  775, -5622, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvButterfly),\n    OBJECT(/*model*/ MODEL_BUTTERFLY, /*pos*/  5473,  775, -5322, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvButterfly),\n    OBJECT(/*model*/ MODEL_BUTTERFLY, /*pos*/ -1504,  326,  3196, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvButterfly),\n    OBJECT(/*model*/ MODEL_BUTTERFLY, /*pos*/ -1204,  326,  3296, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvButterfly),\n    OBJECT(/*model*/ MODEL_YOSHI,     /*pos*/     0, 3174, -5625, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvYoshi),\n    RETURN(),\n};\n\nconst LevelScript level_castle_grounds_entry[] = {\n    INIT_LEVEL(),\n    LOAD_MIO0        (/*seg*/ 0x07, _castle_grounds_segment_7SegmentRomStart, _castle_grounds_segment_7SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x0A, _water_skybox_mio0SegmentRomStart, _water_skybox_mio0SegmentRomEnd),\n    LOAD_MIO0_TEXTURE(/*seg*/ 0x09, _outside_mio0SegmentRomStart, _outside_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x05, _group10_mio0SegmentRomStart, _group10_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0C, _group10_geoSegmentRomStart,  _group10_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x06, _group15_mio0SegmentRomStart, _group15_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0D, _group15_geoSegmentRomStart,  _group15_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x08, _common0_mio0SegmentRomStart, _common0_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0F, _common0_geoSegmentRomStart,  _common0_geoSegmentRomEnd),\n    ALLOC_LEVEL_POOL(),\n    MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),\n    JUMP_LINK(script_func_global_1),\n    JUMP_LINK(script_func_global_11),\n    JUMP_LINK(script_func_global_16),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_03,           castle_grounds_geo_0006F4),\n    LOAD_MODEL_FROM_GEO(MODEL_CASTLE_GROUNDS_BUBBLY_TREE,  bubbly_tree_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_CASTLE_GROUNDS_WARP_PIPE,    warp_pipe_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_CASTLE_GROUNDS_CASTLE_DOOR,  castle_door_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_CASTLE_GROUNDS_METAL_DOOR,   metal_door_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_CASTLE_GROUNDS_VCUTM_GRILL,  castle_grounds_geo_00070C),\n    LOAD_MODEL_FROM_GEO(MODEL_CASTLE_GROUNDS_FLAG,         castle_grounds_geo_000660),\n    LOAD_MODEL_FROM_GEO(MODEL_CASTLE_GROUNDS_CANNON_GRILL, castle_grounds_geo_000724),\n\n    AREA(/*index*/ 1, castle_grounds_geo_00073C),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 1, /*destNode*/ WARP_NODE_03, /*flags*/ WARP_NO_CHECKPOINT),\n        JUMP_LINK(script_func_local_1),\n        JUMP_LINK(script_func_local_2),\n        JUMP_LINK(script_func_local_3),\n        JUMP_LINK(script_func_local_4),\n        TERRAIN(/*terrainData*/ castle_grounds_seg7_collision_level),\n        MACRO_OBJECTS(/*objList*/ castle_grounds_seg7_macro_objs),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0000, /*seq*/ SEQ_SOUND_PLAYER),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_GRASS),\n    END_AREA(),\n\n    FREE_LEVEL_POOL(),\n    MARIO_POS(/*area*/ 1, /*yaw*/ 180, /*pos*/ -1328, 260, 4664),\n    CALL(/*arg*/ 0, /*func*/ lvl_init_or_update),\n    CALL_LOOP(/*arg*/ 1, /*func*/ lvl_init_or_update),\n    CLEAR_LEVEL(),\n    SLEEP_BEFORE_EXIT(/*frames*/ 1),\n    EXIT(),\n};\n"
  },
  {
    "path": "levels/castle_grounds/texture.inc.c",
    "content": "// 0x07000000 - 0x07001000\nALIGNED8 static const Texture castle_grounds_seg7_texture_07000000[] = {\n#include \"levels/castle_grounds/0.rgba16.inc.c\"\n};\n\n// 0x07001000 - 0x07002000\nALIGNED8 static const Texture castle_grounds_seg7_texture_07001000[] = {\n#include \"levels/castle_grounds/1.rgba16.inc.c\"\n};\n\n// 0x07002000 - 0x07003000\nALIGNED8 static const Texture castle_grounds_seg7_texture_07002000[] = {\n#include \"levels/castle_grounds/2.rgba16.inc.c\"\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/1/1/model.inc.c",
    "content": "// 0x07023CB0 - 0x07023DB0\nstatic const Vtx inside_castle_seg7_vertex_07023CB0[] = {\n    {{{ -7395,   1126,  -5772}, 0, {     0,    992}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7178,   1126,  -5989}, 0, {   992,    992}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7178,   1434,  -5989}, 0, {   992,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7395,   1434,  -5772}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7178,   1126,  -5989}, 0, {     0,    992}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6961,   1126,  -6206}, 0, {   992,    992}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6961,   1434,  -6206}, 0, {   992,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7178,   1434,  -5989}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7395,    819,  -5772}, 0, {     0,    992}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7178,    819,  -5989}, 0, {   992,    992}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7178,   1126,  -5989}, 0, {   992,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7395,   1126,  -5772}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7178,    819,  -5989}, 0, {     0,    992}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6961,    819,  -6206}, 0, {   992,    992}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6961,   1126,  -6206}, 0, {   992,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7178,   1126,  -5989}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07023DB0 - 0x07023FE0\nconst Gfx inside_castle_seg7_dl_07023DB0[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetCombineMode(G_CC_TRILERP, G_CC_DECALRGB2),\n    gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetTextureLOD(G_TL_LOD),\n    gsSPClearGeometryMode(G_LIGHTING | G_SHADING_SMOOTH),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 256, G_TX_RENDERTILE + 1, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(1, 0, 0, 124, 124),\n    gsSPTexture(0xFFFF, 0xFFFF, 1, G_TX_RENDERTILE, G_ON),\n    gsSPVertex(inside_castle_seg7_vertex_07023CB0, 16, 0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07008000),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07006000),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 256, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07008800),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07006800),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 256, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07009000),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07007000),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 256, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07009800),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07007800),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 256, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 1, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsDPSetTextureLOD(G_TL_TILE),\n    gsSPSetGeometryMode(G_LIGHTING | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/1/10/model.inc.c",
    "content": "// 0x0702FDD8 - 0x0702FDF0\nstatic const Lights1 inside_castle_seg7_lights_0702FDD8 = gdSPDefLights1(\n    0x5f, 0x5f, 0x5f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0702FDF0 - 0x0702FE70\nstatic const Vtx inside_castle_seg7_vertex_0702FDF0[] = {\n#ifdef VERSION_JP\n    {{{  1422,    614,  -2869}, 0, {  1774,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2038,    614,  -2616}, 0, { -1294,   -274}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1784,    614,  -2869}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1169,    614,  -2254}, 0, {  3040,  -2082}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1422,    614,  -2001}, 0, {  1774,  -3346}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2038,    614,  -2254}, 0, { -1294,  -2082}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1784,    614,  -2001}, 0, {     0,  -3346}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1169,    614,  -2616}, 0, {  3040,   -274}, {0x00, 0x7f, 0x00, 0xff}}},\n#else\n    {{{  1422,    614,  -2869}, 0, {  1774,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1169,    614,  -2616}, 0, {  3040,   -274}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1169,    614,  -2254}, 0, {  3040,  -2082}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2038,    614,  -2254}, 0, { -1294,  -2082}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2038,    614,  -2616}, 0, { -1294,   -274}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1784,    614,  -2001}, 0, {     0,  -3346}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1422,    614,  -2001}, 0, {  1774,  -3346}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1784,    614,  -2869}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n#endif\n};\n\n// 0x0702FE70 - 0x0702FF70\nstatic const Vtx inside_castle_seg7_vertex_0702FE70[] = {\n#ifdef VERSION_JP\n    {{{  1857,    768,  -2073}, 0, {  6834,   2794}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2110,    768,  -2037}, 0, {  9362,   3156}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1965,    768,  -2182}, 0, {  7918,   1710}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2002,    768,  -1928}, 0, {  8278,   4240}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1857,    922,  -2073}, 0, {  6834,   2794}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2002,    768,  -1928}, 0, {  8278,   4240}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1857,    768,  -2073}, 0, {  6834,   2794}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2002,    922,  -1928}, 0, {  8278,   4240}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1350,    768,  -2797}, 0, {  1774,  -4430}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1096,    768,  -2833}, 0, {  -752,  -4792}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1241,    768,  -2688}, 0, {   690,  -3346}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1205,    768,  -2942}, 0, {   330,  -5876}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   553,    614,  -1638}, 0, {     0,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1422,    614,  -2001}, 0, {  4312,   1498}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1169,    614,  -2254}, 0, {  4312,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   807,    614,  -1385}, 0, {     0,   1498}, {0x00, 0x7f, 0x00, 0xff}}},\n#else\n    {{{   590,    614,  -1530}, 0, {  -286,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   734,    614,  -1457}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   626,    614,  -1566}, 0, {     0,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1857,    768,  -2073}, 0, {  6834,   2794}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2110,    768,  -2037}, 0, {  9362,   3156}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1965,    768,  -2182}, 0, {  7918,   1710}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2002,    768,  -1928}, 0, {  8278,   4240}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1350,    768,  -2797}, 0, {  1774,  -4430}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1096,    768,  -2833}, 0, {  -752,  -4792}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1241,    768,  -2688}, 0, {   690,  -3346}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1205,    768,  -2942}, 0, {   330,  -5876}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   553,    614,  -1638}, 0, {     0,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1422,    614,  -2001}, 0, {  4312,   1498}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1169,    614,  -2254}, 0, {  4312,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   807,    614,  -1385}, 0, {     0,   1498}, {0x00, 0x7f, 0x00, 0xff}}},\n#endif\n};\n\n// 0x0702FF70 - 0x0702FFF0\nstatic const Vtx inside_castle_seg7_vertex_0702FF70[] = {\n#ifdef VERSION_JP\n    {{{   590,    614,  -1530}, 0, {  -286,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   698,    614,  -1421}, 0, {  -286,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   734,    614,  -1457}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   626,    614,  -1566}, 0, {     0,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1965,    768,  -2688}, 0, {  7918,  -3346}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2001,    768,  -2942}, 0, {  8278,  -5876}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1857,    768,  -2797}, 0, {  6834,  -4430}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2110,    768,  -2833}, 0, {  9362,  -4792}, {0x00, 0x7f, 0x00, 0xff}}},\n#else\n    {{{  1965,    768,  -2688}, 0, {  7918,  -3346}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2001,    768,  -2942}, 0, {  8278,  -5876}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1857,    768,  -2797}, 0, {  6834,  -4430}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   590,    614,  -1530}, 0, {  -286,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   698,    614,  -1421}, 0, {  -286,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   734,    614,  -1457}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2110,    768,  -2833}, 0, {  9362,  -4792}, {0x00, 0x7f, 0x00, 0xff}}},\n#endif\n};\n\n// 0x0702FFF0 - 0x070300E0\nstatic const Vtx inside_castle_seg7_vertex_0702FFF0[] = {\n    {{{  1446,   1126,  -2169}, 0, { 10018,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   626,   1126,  -1566}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1338,   1126,  -2278}, 0, { 10018,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1338,   1126,  -2278}, 0, { 10018,  -4120}, {0x50, 0xc7, 0x50, 0xff}}},\n    {{{   553,    922,  -1638}, 0, {     0,  -2076}, {0x50, 0xc7, 0x50, 0xff}}},\n    {{{  1169,    922,  -2254}, 0, {  8654,  -2076}, {0x50, 0xc7, 0x50, 0xff}}},\n    {{{  1169,    922,  -2254}, 0, {  8654,  -2076}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   553,    922,  -1638}, 0, {     0,  -2076}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   553,    614,  -1638}, 0, {     0,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1169,    614,  -2254}, 0, {  8654,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   626,   1126,  -1566}, 0, {     0,  -4120}, {0x50, 0xc7, 0x50, 0xff}}},\n    {{{  1422,    614,  -2001}, 0, {  8654,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   807,    614,  -1385}, 0, {     0,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   807,    922,  -1385}, 0, {     0,  -2076}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1422,    922,  -2001}, 0, {  8654,  -2076}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x070300E0 - 0x070301D0\nstatic const Vtx inside_castle_seg7_vertex_070300E0[] = {\n    {{{  1422,    922,  -2001}, 0, {  8654,  -2076}, {0xb0, 0xc7, 0xb0, 0xff}}},\n    {{{   807,    922,  -1385}, 0, {     0,  -2076}, {0xb0, 0xc7, 0xb0, 0xff}}},\n    {{{   734,   1126,  -1457}, 0, {     0,  -4120}, {0xb0, 0xc7, 0xb0, 0xff}}},\n    {{{  1422,    922,  -2001}, 0, {  8654,  -2076}, {0xb0, 0xc8, 0xb0, 0xff}}},\n    {{{   734,   1126,  -1457}, 0, {     0,  -4120}, {0xb0, 0xc8, 0xb0, 0xff}}},\n    {{{  1446,   1126,  -2169}, 0, { 10018,  -4120}, {0xb0, 0xc8, 0xb0, 0xff}}},\n    {{{  1965,    768,  -2182}, 0, {  -540,   -544}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2038,    614,  -2254}, 0, { -1562,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1784,    614,  -2001}, 0, {  2012,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1446,   1126,  -2169}, 0, { 10018,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   734,   1126,  -1457}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   626,   1126,  -1566}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1422,    922,  -2001}, 0, { -1052,  -1054}, {0x4a, 0xba, 0xb6, 0xff}}},\n    {{{  1446,   1126,  -2169}, 0, {     0,  -3098}, {0x4a, 0xba, 0xb6, 0xff}}},\n    {{{  1507,   1229,  -2205}, 0, {  -206,  -4120}, {0x4a, 0xba, 0xb6, 0xff}}},\n};\n\n// 0x070301D0 - 0x070302B0\nstatic const Vtx inside_castle_seg7_vertex_070301D0[] = {\n    {{{  1446,   1126,  -2169}, 0, {     0,  -3098}, {0x4b, 0xba, 0xb6, 0xff}}},\n    {{{  1338,   1126,  -2278}, 0, {  1502,  -3098}, {0x4b, 0xba, 0xb6, 0xff}}},\n    {{{  1507,   1229,  -2205}, 0, {  -206,  -4120}, {0x4b, 0xba, 0xb6, 0xff}}},\n    {{{  1374,   1229,  -2339}, 0, {  1676,  -4120}, {0x4b, 0xba, 0xb6, 0xff}}},\n    {{{  1338,   1126,  -2278}, 0, {  1502,  -3098}, {0x4a, 0xba, 0xb5, 0xff}}},\n    {{{  1169,    922,  -2254}, 0, {  2524,  -1054}, {0x4a, 0xba, 0xb5, 0xff}}},\n    {{{  1374,   1229,  -2339}, 0, {  1676,  -4120}, {0x4a, 0xba, 0xb5, 0xff}}},\n    {{{  1784,    614,  -2001}, 0, {  2012,    990}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{  1857,    768,  -2073}, 0, {   990,   -544}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{  1965,    768,  -2182}, 0, {  -540,   -544}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{  1965,    768,  -2182}, 0, {  -540,   -544}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{  1965,    922,  -2182}, 0, {  -540,  -2076}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{  2038,    922,  -2254}, 0, { -1562,  -2076}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{  2038,    614,  -2254}, 0, { -1562,    990}, {0xa7, 0x00, 0xa6, 0xff}}},\n};\n\n// 0x070302B0 - 0x070303B0\nstatic const Vtx inside_castle_seg7_vertex_070302B0[] = {\n#ifdef VERSION_JP\n    {{{  1965,    768,  -2182}, 0, {  5588,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2110,    768,  -2037}, 0, {  7632,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2110,    922,  -2037}, 0, {  7632,   -544}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1784,    614,  -2001}, 0, {  2012,    990}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{  1784,    922,  -2001}, 0, {  2012,  -2076}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{  1857,    922,  -2073}, 0, {   990,  -2076}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{  1857,    768,  -2073}, 0, {   990,   -544}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{  2038,    922,  -2254}, 0, { -1562,  -2076}, {0xb6, 0xba, 0xb6, 0xff}}},\n    {{{  1881,   1024,  -2194}, 0, {     0,  -3098}, {0xb6, 0xba, 0xb6, 0xff}}},\n    {{{  1833,   1229,  -2339}, 0, {  -716,  -5142}, {0xb6, 0xba, 0xb6, 0xff}}},\n    {{{  2038,    922,  -2254}, 0, { -1562,  -2076}, {0xb6, 0xba, 0xb5, 0xff}}},\n    {{{  1965,    922,  -2182}, 0, {  -540,  -2076}, {0xb6, 0xba, 0xb5, 0xff}}},\n    {{{  1881,   1024,  -2194}, 0, {     0,  -3098}, {0xb6, 0xba, 0xb5, 0xff}}},\n    {{{  1845,   1024,  -2157}, 0, {   478,  -3098}, {0xb6, 0xba, 0xb5, 0xff}}},\n    {{{  1857,    922,  -2073}, 0, {   990,  -2076}, {0xb6, 0xba, 0xb5, 0xff}}},\n    {{{  1784,    922,  -2001}, 0, {  2012,  -2076}, {0xb6, 0xba, 0xb5, 0xff}}},\n#else\n    {{{  1965,    768,  -2182}, 0, {     0,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2110,    922,  -2037}, 0, {  2012,   -542}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1965,    922,  -2182}, 0, {     0,   -542}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1784,    614,  -2001}, 0, {  2012,    990}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{  1784,    922,  -2001}, 0, {  2012,  -2076}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{  1857,    922,  -2073}, 0, {   990,  -2076}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{  1857,    768,  -2073}, 0, {   990,   -544}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{  2038,    922,  -2254}, 0, { -1562,  -2076}, {0xb6, 0xba, 0xb6, 0xff}}},\n    {{{  1881,   1024,  -2194}, 0, {     0,  -3098}, {0xb6, 0xba, 0xb6, 0xff}}},\n    {{{  1833,   1229,  -2339}, 0, {  -716,  -5142}, {0xb6, 0xba, 0xb6, 0xff}}},\n    {{{  2038,    922,  -2254}, 0, { -1562,  -2076}, {0xb6, 0xba, 0xb5, 0xff}}},\n    {{{  1965,    922,  -2182}, 0, {  -540,  -2076}, {0xb6, 0xba, 0xb5, 0xff}}},\n    {{{  1881,   1024,  -2194}, 0, {     0,  -3098}, {0xb6, 0xba, 0xb5, 0xff}}},\n    {{{  1845,   1024,  -2157}, 0, {   478,  -3098}, {0xb6, 0xba, 0xb5, 0xff}}},\n    {{{  1857,    922,  -2073}, 0, {   990,  -2076}, {0xb6, 0xba, 0xb5, 0xff}}},\n    {{{  1784,    922,  -2001}, 0, {  2012,  -2076}, {0xb6, 0xba, 0xb5, 0xff}}},\n#endif\n};\n\n// 0x070303B0 - 0x07030490\nstatic const Vtx inside_castle_seg7_vertex_070303B0[] = {\n#ifdef VERSION_JP\n    {{{  1965,    768,  -2182}, 0, {  5588,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2110,    922,  -2037}, 0, {  7632,   -544}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1965,    922,  -2182}, 0, {  5588,   -544}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1881,   1024,  -2194}, 0, {     0,  -3098}, {0xb6, 0xba, 0xb6, 0xff}}},\n    {{{  1699,   1229,  -2205}, 0, {  1166,  -5142}, {0xb6, 0xba, 0xb6, 0xff}}},\n    {{{  1833,   1229,  -2339}, 0, {  -716,  -5142}, {0xb6, 0xba, 0xb6, 0xff}}},\n    {{{  1965,    922,  -2182}, 0, {  5588,   -544}, {0xb0, 0xc8, 0x50, 0xff}}},\n    {{{  2110,    922,  -2037}, 0, {  7632,   -544}, {0xb0, 0xc8, 0x50, 0xff}}},\n    {{{  2074,   1024,  -2001}, 0, {  7632,  -1566}, {0xb0, 0xc8, 0x50, 0xff}}},\n    {{{  1881,   1024,  -2194}, 0, {  4908,  -1566}, {0xb0, 0xc8, 0x50, 0xff}}},\n    {{{  1845,   1024,  -2157}, 0, {  4908,  -1566}, {0x50, 0xc8, 0xb0, 0xff}}},\n    {{{  2038,   1024,  -1964}, 0, {  7632,  -1566}, {0x50, 0xc8, 0xb0, 0xff}}},\n    {{{  2002,    922,  -1928}, 0, {  7632,   -544}, {0x50, 0xc8, 0xb0, 0xff}}},\n    {{{  1857,    922,  -2073}, 0, {  5588,   -544}, {0x50, 0xc8, 0xb0, 0xff}}},\n#else\n    {{{  1965,    768,  -2182}, 0, {     0,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2110,    768,  -2037}, 0, {  2012,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2110,    922,  -2037}, 0, {  2012,   -542}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1965,    922,  -2182}, 0, {  5588,   -544}, {0xb0, 0xc8, 0x50, 0xff}}},\n    {{{  2110,    922,  -2037}, 0, {  7632,   -544}, {0xb0, 0xc8, 0x50, 0xff}}},\n    {{{  2074,   1024,  -2001}, 0, {  7632,  -1566}, {0xb0, 0xc8, 0x50, 0xff}}},\n    {{{  1857,    922,  -2073}, 0, {     0,   -544}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2002,    768,  -1928}, 0, {  2012,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1857,    768,  -2073}, 0, {     0,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2002,    922,  -1928}, 0, {  2012,   -542}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1845,   1024,  -2157}, 0, {  4908,  -1566}, {0x50, 0xc8, 0xb0, 0xff}}},\n    {{{  2038,   1024,  -1964}, 0, {  7632,  -1566}, {0x50, 0xc8, 0xb0, 0xff}}},\n    {{{  2002,    922,  -1928}, 0, {  7632,   -544}, {0x50, 0xc8, 0xb0, 0xff}}},\n    {{{  1857,    922,  -2073}, 0, {  5588,   -544}, {0x50, 0xc8, 0xb0, 0xff}}},\n#endif\n};\n\n// 0x07030490 - 0x07030590\nstatic const Vtx inside_castle_seg7_vertex_07030490[] = {\n#ifdef VERSION_JP\n    {{{  1881,   1024,  -2194}, 0, {  7292,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2074,   1024,  -2001}, 0, { 10018,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2038,   1024,  -1964}, 0, { 10018,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1845,   1024,  -2157}, 0, {  7292,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1845,   1024,  -2157}, 0, {   478,  -3098}, {0xb6, 0xba, 0xb5, 0xff}}},\n    {{{  1784,    922,  -2001}, 0, {  2012,  -2076}, {0xb6, 0xba, 0xb5, 0xff}}},\n    {{{  1699,   1229,  -2205}, 0, {  1166,  -5142}, {0xb6, 0xba, 0xb5, 0xff}}},\n    {{{  1881,   1024,  -2194}, 0, {     0,  -3098}, {0xb5, 0xba, 0xb7, 0xff}}},\n    {{{  1845,   1024,  -2157}, 0, {   478,  -3098}, {0xb5, 0xba, 0xb7, 0xff}}},\n    {{{  1699,   1229,  -2205}, 0, {  1166,  -5142}, {0xb5, 0xba, 0xb7, 0xff}}},\n    {{{  1507,   1229,  -2665}, 0, {  -716,  -5142}, {0x4b, 0xba, 0x49, 0xff}}},\n    {{{  1326,   1024,  -2676}, 0, {   478,  -3098}, {0x4b, 0xba, 0x49, 0xff}}},\n    {{{  1362,   1024,  -2713}, 0, {     0,  -3098}, {0x4b, 0xba, 0x49, 0xff}}},\n    {{{  1507,   1229,  -2665}, 0, {  -716,  -5142}, {0x4a, 0xba, 0x4a, 0xff}}},\n    {{{  1362,   1024,  -2713}, 0, {     0,  -3098}, {0x4a, 0xba, 0x4a, 0xff}}},\n    {{{  1422,    922,  -2869}, 0, { -1564,  -2076}, {0x4a, 0xba, 0x4a, 0xff}}},\n#else\n    {{{  1881,   1024,  -2194}, 0, {  7292,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2074,   1024,  -2001}, 0, { 10018,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2038,   1024,  -1964}, 0, { 10018,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1845,   1024,  -2157}, 0, {  7292,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1507,   1229,  -2665}, 0, {  -716,  -5142}, {0x4b, 0xba, 0x4a, 0xff}}},\n    {{{  1374,   1229,  -2531}, 0, {  1166,  -5142}, {0x4b, 0xba, 0x4a, 0xff}}},\n    {{{  1326,   1024,  -2676}, 0, {   478,  -3098}, {0x4b, 0xba, 0x4a, 0xff}}},\n    {{{  1965,    922,  -2182}, 0, {  5588,   -544}, {0xb0, 0xc8, 0x50, 0xff}}},\n    {{{  2074,   1024,  -2001}, 0, {  7632,  -1566}, {0xb0, 0xc8, 0x50, 0xff}}},\n    {{{  1881,   1024,  -2194}, 0, {  4908,  -1566}, {0xb0, 0xc8, 0x50, 0xff}}},\n    {{{  1881,   1024,  -2194}, 0, {     0,  -3098}, {0xb5, 0xba, 0xb7, 0xff}}},\n    {{{  1845,   1024,  -2157}, 0, {   478,  -3098}, {0xb5, 0xba, 0xb7, 0xff}}},\n    {{{  1699,   1229,  -2205}, 0, {  1166,  -5142}, {0xb5, 0xba, 0xb7, 0xff}}},\n    {{{  1881,   1024,  -2194}, 0, {     0,  -3098}, {0xb6, 0xba, 0xb6, 0xff}}},\n    {{{  1699,   1229,  -2205}, 0, {  1166,  -5142}, {0xb6, 0xba, 0xb6, 0xff}}},\n    {{{  1833,   1229,  -2339}, 0, {  -716,  -5142}, {0xb6, 0xba, 0xb6, 0xff}}},\n#endif\n};\n\n// 0x07030590 - 0x07030670\nstatic const Vtx inside_castle_seg7_vertex_07030590[] = {\n#ifdef VERSION_JP\n    {{{  1507,   1229,  -2665}, 0, {  -716,  -5142}, {0x4b, 0xba, 0x4a, 0xff}}},\n    {{{  1374,   1229,  -2531}, 0, {  1166,  -5142}, {0x4b, 0xba, 0x4a, 0xff}}},\n    {{{  1326,   1024,  -2676}, 0, {   478,  -3098}, {0x4b, 0xba, 0x4a, 0xff}}},\n    {{{  1362,   1024,  -2713}, 0, {     0,  -3098}, {0x4a, 0xba, 0x4a, 0xff}}},\n    {{{  1350,    922,  -2797}, 0, {  -542,  -2076}, {0x4a, 0xba, 0x4a, 0xff}}},\n    {{{  1422,    922,  -2869}, 0, { -1564,  -2076}, {0x4a, 0xba, 0x4a, 0xff}}},\n    {{{  1422,    614,  -2869}, 0, { -1564,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1422,    922,  -2869}, 0, { -1564,  -2076}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1350,    922,  -2797}, 0, {  -542,  -2076}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1350,    768,  -2797}, 0, {  -542,   -542}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1169,    922,  -2616}, 0, {  2012,  -2076}, {0x4a, 0xba, 0x4a, 0xff}}},\n    {{{  1241,    922,  -2688}, 0, {   990,  -2076}, {0x4a, 0xba, 0x4a, 0xff}}},\n    {{{  1326,   1024,  -2676}, 0, {   478,  -3098}, {0x4a, 0xba, 0x4a, 0xff}}},\n    {{{  1374,   1229,  -2531}, 0, {  1166,  -5142}, {0x4a, 0xba, 0x4a, 0xff}}},\n#else\n    {{{  1845,   1024,  -2157}, 0, {   478,  -3098}, {0xb6, 0xba, 0xb5, 0xff}}},\n    {{{  1784,    922,  -2001}, 0, {  2012,  -2076}, {0xb6, 0xba, 0xb5, 0xff}}},\n    {{{  1699,   1229,  -2205}, 0, {  1166,  -5142}, {0xb6, 0xba, 0xb5, 0xff}}},\n    {{{  1507,   1229,  -2665}, 0, {  -716,  -5142}, {0x4a, 0xba, 0x4a, 0xff}}},\n    {{{  1362,   1024,  -2713}, 0, {     0,  -3098}, {0x4a, 0xba, 0x4a, 0xff}}},\n    {{{  1422,    922,  -2869}, 0, { -1564,  -2076}, {0x4a, 0xba, 0x4a, 0xff}}},\n    {{{  1507,   1229,  -2665}, 0, {  -716,  -5142}, {0x4b, 0xba, 0x49, 0xff}}},\n    {{{  1326,   1024,  -2676}, 0, {   478,  -3098}, {0x4b, 0xba, 0x49, 0xff}}},\n    {{{  1362,   1024,  -2713}, 0, {     0,  -3098}, {0x4b, 0xba, 0x49, 0xff}}},\n    {{{  1422,    614,  -2869}, 0, { -1564,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1350,    768,  -2797}, 0, {  -542,   -542}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1241,    768,  -2688}, 0, {   990,   -542}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1350,    922,  -2797}, 0, {  -542,  -2076}, {0x4a, 0xba, 0x4a, 0xff}}},\n    {{{  1422,    922,  -2869}, 0, { -1564,  -2076}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1350,    922,  -2797}, 0, {  -542,  -2076}, {0x59, 0x00, 0x59, 0xff}}},\n#endif\n};\n\n// 0x07030670 - 0x07030760\nstatic const Vtx inside_castle_seg7_vertex_07030670[] = {\n#ifdef VERSION_JP\n    {{{  1326,   1024,  -2676}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1169,   1024,  -2906}, 0, { -2756,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1362,   1024,  -2713}, 0, {     0,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1241,    768,  -2688}, 0, {   990,   -542}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1241,    922,  -2688}, 0, {   990,  -2076}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1169,    922,  -2616}, 0, {  2012,  -2076}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1362,   1024,  -2713}, 0, { -2414,  -1566}, {0xb0, 0xc8, 0x50, 0xff}}},\n    {{{  1169,   1024,  -2906}, 0, { -5140,  -1566}, {0xb0, 0xc8, 0x50, 0xff}}},\n    {{{  1205,    922,  -2942}, 0, { -5140,   -544}, {0xb0, 0xc8, 0x50, 0xff}}},\n    {{{  1350,    922,  -2797}, 0, { -3096,   -544}, {0xb0, 0xc8, 0x50, 0xff}}},\n    {{{  1350,    922,  -2797}, 0, { -3096,   -544}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1205,    922,  -2942}, 0, { -5140,   -544}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1205,    768,  -2942}, 0, { -5140,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1350,    768,  -2797}, 0, { -3096,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1133,   1024,  -2869}, 0, { -2756,      0}, {0x00, 0x81, 0x00, 0xff}}},\n#else\n    {{{  1169,    922,  -2616}, 0, {  2012,  -2076}, {0x4a, 0xba, 0x4a, 0xff}}},\n    {{{  1241,    922,  -2688}, 0, {   990,  -2076}, {0x4a, 0xba, 0x4a, 0xff}}},\n    {{{  1326,   1024,  -2676}, 0, {   478,  -3098}, {0x4a, 0xba, 0x4a, 0xff}}},\n    {{{  1374,   1229,  -2531}, 0, {  1166,  -5142}, {0x4a, 0xba, 0x4a, 0xff}}},\n    {{{  1241,    768,  -2688}, 0, {   990,   -542}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1241,    922,  -2688}, 0, {   990,  -2076}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1169,    922,  -2616}, 0, {  2012,  -2076}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1362,   1024,  -2713}, 0, { -2414,  -1566}, {0xb0, 0xc8, 0x50, 0xff}}},\n    {{{  1169,   1024,  -2906}, 0, { -5140,  -1566}, {0xb0, 0xc8, 0x50, 0xff}}},\n    {{{  1205,    922,  -2942}, 0, { -5140,   -544}, {0xb0, 0xc8, 0x50, 0xff}}},\n    {{{  1350,    922,  -2797}, 0, { -3096,   -544}, {0xb0, 0xc8, 0x50, 0xff}}},\n    {{{  1241,    922,  -2688}, 0, { -3096,   -542}, {0x50, 0xc7, 0xb0, 0xff}}},\n    {{{  1133,   1024,  -2869}, 0, { -5140,  -1564}, {0x50, 0xc7, 0xb0, 0xff}}},\n    {{{  1326,   1024,  -2676}, 0, { -2414,  -1566}, {0x50, 0xc7, 0xb0, 0xff}}},\n#endif\n};\n\n// 0x07030760 - 0x07030860\nstatic const Vtx inside_castle_seg7_vertex_07030760[] = {\n#ifdef VERSION_JP\n    {{{  1784,    922,  -2001}, 0, { -1052,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1422,    614,  -2001}, 0, {  2560,   2010}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1422,    922,  -2001}, 0, {  2560,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1241,    768,  -2688}, 0, { -3096,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1096,    922,  -2833}, 0, { -5140,   -542}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1241,    922,  -2688}, 0, { -3096,   -542}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1241,    922,  -2688}, 0, { -3096,   -542}, {0x50, 0xc7, 0xb0, 0xff}}},\n    {{{  1096,    922,  -2833}, 0, { -5140,   -542}, {0x50, 0xc7, 0xb0, 0xff}}},\n    {{{  1133,   1024,  -2869}, 0, { -5140,  -1564}, {0x50, 0xc7, 0xb0, 0xff}}},\n    {{{  1326,   1024,  -2676}, 0, { -2414,  -1566}, {0x50, 0xc7, 0xb0, 0xff}}},\n    {{{  1096,    768,  -2833}, 0, { -5140,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1241,    768,  -2688}, 0, {   990,   -542}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1169,    922,  -2616}, 0, {  2012,  -2076}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1169,    614,  -2616}, 0, {  2012,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1422,    614,  -2869}, 0, { -1564,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1350,    768,  -2797}, 0, {  -542,   -542}, {0x59, 0x00, 0x59, 0xff}}},\n#else\n    {{{  1350,    922,  -2797}, 0, { -3096,   -544}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1205,    922,  -2942}, 0, { -5140,   -544}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1205,    768,  -2942}, 0, { -5140,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1350,    768,  -2797}, 0, { -3096,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1326,   1024,  -2676}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1133,   1024,  -2869}, 0, { -2756,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1169,   1024,  -2906}, 0, { -2756,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1362,   1024,  -2713}, 0, {     0,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1241,    768,  -2688}, 0, { -3096,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1096,    922,  -2833}, 0, { -5140,   -542}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1241,    922,  -2688}, 0, { -3096,   -542}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1241,    922,  -2688}, 0, { -3096,   -542}, {0x50, 0xc7, 0xb0, 0xff}}},\n    {{{  1096,    922,  -2833}, 0, { -5140,   -542}, {0x50, 0xc7, 0xb0, 0xff}}},\n    {{{  1133,   1024,  -2869}, 0, { -5140,  -1564}, {0x50, 0xc7, 0xb0, 0xff}}},\n#endif\n};\n\n// 0x07030860 - 0x07030940\nstatic const Vtx inside_castle_seg7_vertex_07030860[] = {\n#ifdef VERSION_JP\n    {{{  1784,    922,  -2001}, 0, { -1052,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1784,    614,  -2001}, 0, { -1052,   2010}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1422,    614,  -2001}, 0, {  2560,   2010}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   626,    870,  -1566}, 0, {  1502,   -544}, {0x59, 0x01, 0xa7, 0xff}}},\n    {{{   553,    922,  -1638}, 0, {  2524,  -1054}, {0x59, 0x01, 0xa7, 0xff}}},\n    {{{   807,    922,  -1385}, 0, { -1052,  -1054}, {0x59, 0x01, 0xa7, 0xff}}},\n    {{{  2038,    922,  -2616}, 0, {  2560,  -1054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2038,    614,  -2254}, 0, { -1052,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2038,    922,  -2254}, 0, { -1052,  -1054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2038,    614,  -2616}, 0, {  2560,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1169,    922,  -2254}, 0, { -1052,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1169,    614,  -2254}, 0, { -1052,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1169,    614,  -2616}, 0, {  2560,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1169,    922,  -2616}, 0, {  2560,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n#else\n    {{{  2038,    922,  -2616}, 0, {  2560,  -1054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2038,    614,  -2616}, 0, {  2560,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2038,    614,  -2254}, 0, { -1052,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1241,    768,  -2688}, 0, { -3096,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1096,    768,  -2833}, 0, { -5140,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1096,    922,  -2833}, 0, { -5140,   -542}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1241,    768,  -2688}, 0, {   990,   -542}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1169,    614,  -2616}, 0, {  2012,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1422,    614,  -2869}, 0, { -1564,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1169,    922,  -2616}, 0, {  2012,  -2076}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1784,    922,  -2001}, 0, { -1052,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1784,    614,  -2001}, 0, { -1052,   2010}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1422,    614,  -2001}, 0, {  2560,   2010}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1422,    922,  -2001}, 0, {  2560,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2038,    922,  -2254}, 0, { -1052,  -1054}, {0x81, 0x00, 0x00, 0xff}}},\n#endif\n};\n\n// 0x07030940 - 0x07030A40\nconst Vtx inside_castle_seg7_vertex_07030940[] = {\n#ifdef VERSION_JP\n    {{{   807,    922,  -1385}, 0, { -1052,  -1054}, {0x5a, 0xfe, 0xa7, 0xff}}},\n    {{{   734,    870,  -1457}, 0, {     0,   -544}, {0x5a, 0xfe, 0xa7, 0xff}}},\n    {{{   626,    870,  -1566}, 0, {  1502,   -544}, {0x5a, 0xfe, 0xa7, 0xff}}},\n    {{{   626,    870,  -1566}, 0, {  1502,   -544}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{   626,    614,  -1566}, 0, {  1502,   2010}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{   553,    922,  -1638}, 0, {  2524,  -1054}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  1784,    922,  -2869}, 0, { -1052,  -1054}, {0x00, 0xba, 0x69, 0xff}}},\n    {{{  1507,   1229,  -2665}, 0, {  1712,  -4120}, {0x00, 0xba, 0x69, 0xff}}},\n    {{{  1422,    922,  -2869}, 0, {  2560,  -1054}, {0x00, 0xba, 0x69, 0xff}}},\n    {{{   553,    922,  -1638}, 0, {  2524,  -1054}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   734,   1126,  -1457}, 0, {     0,  -3098}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   807,    922,  -1385}, 0, { -1052,  -1054}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   553,    922,  -1638}, 0, {  2524,  -1054}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{   626,   1126,  -1566}, 0, {  1500,  -3098}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{   734,   1126,  -1457}, 0, {     0,  -3098}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{   553,    614,  -1638}, 0, {  2524,   2010}, {0x59, 0x00, 0xa6, 0xff}}},\n#else\n    {{{  1169,    922,  -2254}, 0, { -1052,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1169,    614,  -2616}, 0, {  2560,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1169,    922,  -2616}, 0, {  2560,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1169,    614,  -2254}, 0, { -1052,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   807,    922,  -1385}, 0, { -1052,  -1054}, {0x5a, 0xfe, 0xa7, 0xff}}},\n    {{{   734,    870,  -1457}, 0, {     0,   -544}, {0x5a, 0xfe, 0xa7, 0xff}}},\n    {{{   626,    870,  -1566}, 0, {  1502,   -544}, {0x5a, 0xfe, 0xa7, 0xff}}},\n    {{{   626,    870,  -1566}, 0, {  1502,   -544}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{   626,    614,  -1566}, 0, {  1502,   2010}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{   553,    922,  -1638}, 0, {  2524,  -1054}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{   626,    870,  -1566}, 0, {  1502,   -544}, {0x59, 0x01, 0xa7, 0xff}}},\n    {{{   553,    922,  -1638}, 0, {  2524,  -1054}, {0x59, 0x01, 0xa7, 0xff}}},\n    {{{   807,    922,  -1385}, 0, { -1052,  -1054}, {0x59, 0x01, 0xa7, 0xff}}},\n    {{{   553,    614,  -1638}, 0, {  2524,   2010}, {0x59, 0x00, 0xa6, 0xff}}},\n#endif\n};\n\n// 0x07030A40 - 0x07030B30\nstatic const Vtx inside_castle_seg7_vertex_07030A40[] = {\n#ifdef VERSION_JP\n    {{{   807,    922,  -1385}, 0, { -1052,  -1054}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{   807,    614,  -1385}, 0, { -1052,   2010}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{   734,    614,  -1457}, 0, {     0,   2010}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{   734,    870,  -1457}, 0, {     0,   -544}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  1422,    922,  -2869}, 0, {  2560,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1784,    614,  -2869}, 0, { -1052,   2010}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1784,    922,  -2869}, 0, { -1052,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1422,    614,  -2869}, 0, {  2560,   2010}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1784,    922,  -2869}, 0, { -4118,  -2076}, {0x00, 0xba, 0x69, 0xff}}},\n    {{{  1699,   1229,  -2665}, 0, { -2074,  -5142}, {0x00, 0xba, 0x69, 0xff}}},\n    {{{  1507,   1229,  -2665}, 0, {  -716,  -5142}, {0x00, 0xba, 0x69, 0xff}}},\n    {{{  2038,    922,  -2254}, 0, { -1052,  -1054}, {0x97, 0xba, 0x00, 0xff}}},\n    {{{  1833,   1229,  -2339}, 0, {  -206,  -4120}, {0x97, 0xba, 0x00, 0xff}}},\n    {{{  2038,    922,  -2616}, 0, {  2560,  -1054}, {0x97, 0xba, 0x00, 0xff}}},\n    {{{  1833,   1229,  -2531}, 0, {  1712,  -4120}, {0x97, 0xba, 0x00, 0xff}}},\n#else\n    {{{   553,    922,  -1638}, 0, {  2524,  -1054}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{   626,   1126,  -1566}, 0, {  1500,  -3098}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{   734,   1126,  -1457}, 0, {     0,  -3098}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{   553,    922,  -1638}, 0, {  2524,  -1054}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   734,   1126,  -1457}, 0, {     0,  -3098}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   807,    922,  -1385}, 0, { -1052,  -1054}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   807,    922,  -1385}, 0, { -1052,  -1054}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{   734,    614,  -1457}, 0, {     0,   2010}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{   734,    870,  -1457}, 0, {     0,   -544}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{   807,    614,  -1385}, 0, { -1052,   2010}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  1422,    922,  -2001}, 0, {  2560,  -1054}, {0x00, 0xba, 0x97, 0xff}}},\n    {{{  1507,   1229,  -2205}, 0, {  1712,  -4120}, {0x00, 0xba, 0x97, 0xff}}},\n    {{{  1699,   1229,  -2205}, 0, {  -206,  -4120}, {0x00, 0xba, 0x97, 0xff}}},\n    {{{  1422,    922,  -2869}, 0, {  2560,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1784,    614,  -2869}, 0, { -1052,   2010}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1784,    922,  -2869}, 0, { -1052,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n#endif\n};\n\n// 0x07030B30 - 0x07030C20\nstatic const Vtx inside_castle_seg7_vertex_07030B30[] = {\n#ifdef VERSION_JP\n    {{{  1422,    922,  -2001}, 0, {  2560,  -1054}, {0x00, 0xba, 0x97, 0xff}}},\n    {{{  1507,   1229,  -2205}, 0, {  1712,  -4120}, {0x00, 0xba, 0x97, 0xff}}},\n    {{{  1699,   1229,  -2205}, 0, {  -206,  -4120}, {0x00, 0xba, 0x97, 0xff}}},\n    {{{  1784,    922,  -2001}, 0, { -1052,  -1054}, {0x00, 0xba, 0x97, 0xff}}},\n    {{{   590,    614,  -1530}, 0, {  -542,   2010}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   626,    614,  -1566}, 0, {     0,   2010}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   626,    870,  -1566}, 0, {     0,   -542}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1169,    922,  -2616}, 0, {  2560,  -1054}, {0x69, 0xba, 0x00, 0xff}}},\n    {{{  1374,   1229,  -2531}, 0, {  1712,  -4120}, {0x69, 0xba, 0x00, 0xff}}},\n    {{{  1169,    922,  -2254}, 0, { -1052,  -1054}, {0x69, 0xba, 0x00, 0xff}}},\n    {{{  1374,   1229,  -2339}, 0, {  -206,  -4120}, {0x69, 0xba, 0x00, 0xff}}},\n    {{{   698,    870,  -1421}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   590,    870,  -1530}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   626,    870,  -1566}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   734,    870,  -1457}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n#else\n    {{{  1784,    922,  -2869}, 0, { -1052,  -1054}, {0x00, 0xba, 0x69, 0xff}}},\n    {{{  1507,   1229,  -2665}, 0, {  1712,  -4120}, {0x00, 0xba, 0x69, 0xff}}},\n    {{{  1422,    922,  -2869}, 0, {  2560,  -1054}, {0x00, 0xba, 0x69, 0xff}}},\n    {{{  1422,    922,  -2869}, 0, {  2560,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1422,    614,  -2869}, 0, {  2560,   2010}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1784,    614,  -2869}, 0, { -1052,   2010}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1784,    922,  -2869}, 0, { -4118,  -2076}, {0x00, 0xba, 0x69, 0xff}}},\n    {{{  1699,   1229,  -2665}, 0, { -2074,  -5142}, {0x00, 0xba, 0x69, 0xff}}},\n    {{{  1507,   1229,  -2665}, 0, {  -716,  -5142}, {0x00, 0xba, 0x69, 0xff}}},\n    {{{  2038,    922,  -2254}, 0, { -1052,  -1054}, {0x97, 0xba, 0x00, 0xff}}},\n    {{{  1833,   1229,  -2339}, 0, {  -206,  -4120}, {0x97, 0xba, 0x00, 0xff}}},\n    {{{  2038,    922,  -2616}, 0, {  2560,  -1054}, {0x97, 0xba, 0x00, 0xff}}},\n    {{{  1833,   1229,  -2531}, 0, {  1712,  -4120}, {0x97, 0xba, 0x00, 0xff}}},\n    {{{   734,    614,  -1457}, 0, {     0,   2010}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   698,    870,  -1421}, 0, {  -542,   -544}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   734,    870,  -1457}, 0, {     0,   -544}, {0xa7, 0x00, 0xa7, 0xff}}},\n#endif\n};\n\n// 0x07030C20 - 0x07030D20\nstatic const Vtx inside_castle_seg7_vertex_07030C20[] = {\n#ifdef VERSION_JP\n    {{{   734,    614,  -1457}, 0, {     0,   2010}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   698,    870,  -1421}, 0, {  -542,   -544}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   734,    870,  -1457}, 0, {     0,   -544}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   698,    614,  -1421}, 0, {  -542,   2010}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2038,    614,  -2616}, 0, { -1052,   2010}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{  1965,    922,  -2688}, 0, {     0,  -1054}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{  1965,    768,  -2688}, 0, {     0,    480}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{   590,    614,  -1530}, 0, {  -542,   2010}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   626,    870,  -1566}, 0, {     0,   -542}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   590,    870,  -1530}, 0, {  -542,   -544}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1965,    922,  -2688}, 0, {     0,  -1054}, {0xb6, 0xba, 0x4b, 0xff}}},\n    {{{  2038,    922,  -2616}, 0, { -1052,  -1054}, {0xb6, 0xba, 0x4b, 0xff}}},\n    {{{  1881,   1024,  -2676}, 0, {   480,  -2076}, {0xb6, 0xba, 0x4b, 0xff}}},\n    {{{  1881,   1024,  -2676}, 0, {   480,  -2076}, {0xb6, 0xba, 0x4a, 0xff}}},\n    {{{  2038,    922,  -2616}, 0, { -1052,  -1054}, {0xb6, 0xba, 0x4a, 0xff}}},\n    {{{  1833,   1229,  -2531}, 0, {  -206,  -4120}, {0xb6, 0xba, 0x4a, 0xff}}},\n#else\n    {{{  1422,    922,  -2001}, 0, {  2560,  -1054}, {0x00, 0xba, 0x97, 0xff}}},\n    {{{  1699,   1229,  -2205}, 0, {  -206,  -4120}, {0x00, 0xba, 0x97, 0xff}}},\n    {{{  1784,    922,  -2001}, 0, { -1052,  -1054}, {0x00, 0xba, 0x97, 0xff}}},\n    {{{  1169,    922,  -2616}, 0, {  2560,  -1054}, {0x69, 0xba, 0x00, 0xff}}},\n    {{{  1374,   1229,  -2531}, 0, {  1712,  -4120}, {0x69, 0xba, 0x00, 0xff}}},\n    {{{  1169,    922,  -2254}, 0, { -1052,  -1054}, {0x69, 0xba, 0x00, 0xff}}},\n    {{{  1374,   1229,  -2339}, 0, {  -206,  -4120}, {0x69, 0xba, 0x00, 0xff}}},\n    {{{   698,    870,  -1421}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   626,    870,  -1566}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   734,    870,  -1457}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   590,    870,  -1530}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   734,    614,  -1457}, 0, {     0,   2010}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   698,    614,  -1421}, 0, {  -542,   2010}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   698,    870,  -1421}, 0, {  -542,   -544}, {0xa7, 0x00, 0xa7, 0xff}}},\n#endif\n};\n\n// 0x07030D20 - 0x07030E20\nstatic const Vtx inside_castle_seg7_vertex_07030D20[] = {\n#ifdef VERSION_JP\n    {{{  1881,   1024,  -2676}, 0, {   480,  -2076}, {0xb5, 0xba, 0x49, 0xff}}},\n    {{{  1699,   1229,  -2665}, 0, {  1676,  -4120}, {0xb5, 0xba, 0x49, 0xff}}},\n    {{{  1845,   1024,  -2713}, 0, {   990,  -2076}, {0xb5, 0xba, 0x49, 0xff}}},\n    {{{  1881,   1024,  -2676}, 0, {   480,  -2076}, {0xb6, 0xba, 0x4a, 0xff}}},\n    {{{  1833,   1229,  -2531}, 0, {  -206,  -4120}, {0xb6, 0xba, 0x4a, 0xff}}},\n    {{{  1699,   1229,  -2665}, 0, {  1676,  -4120}, {0xb6, 0xba, 0x4a, 0xff}}},\n    {{{  1784,    922,  -2869}, 0, {  2524,  -1054}, {0xb6, 0xba, 0x4b, 0xff}}},\n    {{{  1845,   1024,  -2713}, 0, {   990,  -2076}, {0xb6, 0xba, 0x4b, 0xff}}},\n    {{{  1699,   1229,  -2665}, 0, {  1676,  -4120}, {0xb6, 0xba, 0x4b, 0xff}}},\n    {{{  1857,    922,  -2797}, 0, {  1502,  -1054}, {0xb6, 0xba, 0x4b, 0xff}}},\n    {{{  2038,    614,  -2616}, 0, { -1052,   2010}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  1965,    768,  -2688}, 0, {     0,    480}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  1857,    768,  -2797}, 0, {  1502,    480}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  1857,    768,  -2797}, 0, {  1502,    480}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{  1857,    922,  -2797}, 0, {  1502,  -1054}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{  1784,    922,  -2869}, 0, {  2524,  -1054}, {0xa7, 0x00, 0x5a, 0xff}}},\n#else\n    {{{   590,    614,  -1530}, 0, {  -542,   2010}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   626,    614,  -1566}, 0, {     0,   2010}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   626,    870,  -1566}, 0, {     0,   -542}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   590,    870,  -1530}, 0, {  -542,   -544}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1965,    922,  -2688}, 0, {     0,  -1054}, {0xb6, 0xba, 0x4b, 0xff}}},\n    {{{  2038,    922,  -2616}, 0, { -1052,  -1054}, {0xb6, 0xba, 0x4b, 0xff}}},\n    {{{  1881,   1024,  -2676}, 0, {   480,  -2076}, {0xb6, 0xba, 0x4b, 0xff}}},\n    {{{  1881,   1024,  -2676}, 0, {   480,  -2076}, {0xb6, 0xba, 0x4a, 0xff}}},\n    {{{  2038,    922,  -2616}, 0, { -1052,  -1054}, {0xb6, 0xba, 0x4a, 0xff}}},\n    {{{  1833,   1229,  -2531}, 0, {  -206,  -4120}, {0xb6, 0xba, 0x4a, 0xff}}},\n    {{{  1881,   1024,  -2676}, 0, {   480,  -2076}, {0xb5, 0xba, 0x49, 0xff}}},\n    {{{  1699,   1229,  -2665}, 0, {  1676,  -4120}, {0xb5, 0xba, 0x49, 0xff}}},\n    {{{  1845,   1024,  -2713}, 0, {   990,  -2076}, {0xb5, 0xba, 0x49, 0xff}}},\n    {{{  1699,   1229,  -2665}, 0, {  1676,  -4120}, {0xb6, 0xba, 0x4a, 0xff}}},\n#endif\n};\n\n// 0x07030E20 - 0x07030F10\nstatic const Vtx inside_castle_seg7_vertex_07030E20[] = {\n#ifdef VERSION_JP\n    {{{  2038,    614,  -2616}, 0, { -1052,   2010}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{  2038,    922,  -2616}, 0, { -1052,  -1054}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{  1965,    922,  -2688}, 0, {     0,  -1054}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{  1857,    768,  -2797}, 0, {  1502,    480}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{  1784,    922,  -2869}, 0, {  2524,  -1054}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{  1784,    614,  -2869}, 0, {  2524,   2010}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{  1857,    768,  -2797}, 0, {  1502,    480}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1784,    614,  -2869}, 0, {  2524,   2010}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2038,    614,  -2616}, 0, { -1052,   2010}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1857,    768,  -2797}, 0, { -1052,    990}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{  2001,    922,  -2942}, 0, {   990,   -544}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{  1857,    922,  -2797}, 0, { -1052,   -544}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{  1857,    922,  -2797}, 0, { -1052,   -544}, {0x50, 0xc8, 0x50, 0xff}}},\n    {{{  2001,    922,  -2942}, 0, {   990,   -544}, {0x50, 0xc8, 0x50, 0xff}}},\n    {{{  1845,   1024,  -2713}, 0, { -1734,  -1566}, {0x50, 0xc8, 0x50, 0xff}}},\n#else\n    {{{  1784,    922,  -2869}, 0, {  2524,  -1054}, {0xb6, 0xba, 0x4b, 0xff}}},\n    {{{  1845,   1024,  -2713}, 0, {   990,  -2076}, {0xb6, 0xba, 0x4b, 0xff}}},\n    {{{  1699,   1229,  -2665}, 0, {  1676,  -4120}, {0xb6, 0xba, 0x4b, 0xff}}},\n    {{{  1857,    922,  -2797}, 0, {  1502,  -1054}, {0xb6, 0xba, 0x4b, 0xff}}},\n    {{{  2038,    614,  -2616}, 0, { -1052,   2010}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  1965,    768,  -2688}, 0, {     0,    480}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  1857,    768,  -2797}, 0, {  1502,    480}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  1857,    768,  -2797}, 0, {  1502,    480}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{  1857,    922,  -2797}, 0, {  1502,  -1054}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{  1784,    922,  -2869}, 0, {  2524,  -1054}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{  1784,    614,  -2869}, 0, {  2524,   2010}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{  1857,    768,  -2797}, 0, {  1502,    480}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1784,    614,  -2869}, 0, {  2524,   2010}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2038,    614,  -2616}, 0, { -1052,   2010}, {0xa7, 0x00, 0x59, 0xff}}},\n#endif\n};\n\n// 0x07030F10 - 0x07030FF0\nstatic const Vtx inside_castle_seg7_vertex_07030F10[] = {\n#ifdef VERSION_JP\n    {{{  2001,    922,  -2942}, 0, {   990,   -544}, {0x50, 0xc7, 0x50, 0xff}}},\n    {{{  2038,   1024,  -2906}, 0, {   990,  -1566}, {0x50, 0xc7, 0x50, 0xff}}},\n    {{{  1845,   1024,  -2713}, 0, { -1734,  -1566}, {0x50, 0xc7, 0x50, 0xff}}},\n    {{{  1857,    768,  -2797}, 0, { -1052,    990}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{  2001,    768,  -2942}, 0, {   990,    990}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{  2001,    922,  -2942}, 0, {   990,   -544}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{  2038,   1024,  -2906}, 0, {  3204,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2074,   1024,  -2869}, 0, {  3204,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1881,   1024,  -2676}, 0, {   480,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1845,   1024,  -2713}, 0, {   480,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1881,   1024,  -2676}, 0, { -1734,  -1566}, {0xb0, 0xc8, 0xb0, 0xff}}},\n    {{{  2074,   1024,  -2869}, 0, {   990,  -1566}, {0xb0, 0xc8, 0xb0, 0xff}}},\n    {{{  1965,    922,  -2688}, 0, { -1052,   -544}, {0xb0, 0xc8, 0xb0, 0xff}}},\n    {{{  2110,    922,  -2833}, 0, {   990,   -544}, {0xb0, 0xc8, 0xb0, 0xff}}},\n#else\n    {{{  2038,    614,  -2616}, 0, { -1052,   2010}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{  2038,    922,  -2616}, 0, { -1052,  -1054}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{  1965,    922,  -2688}, 0, {     0,  -1054}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{  1965,    768,  -2688}, 0, {     0,    480}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{  1857,    768,  -2797}, 0, { -1052,    990}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{  2001,    922,  -2942}, 0, {   990,   -544}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{  1857,    922,  -2797}, 0, { -1052,   -544}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{  1857,    922,  -2797}, 0, { -1052,   -544}, {0x50, 0xc8, 0x50, 0xff}}},\n    {{{  2001,    922,  -2942}, 0, {   990,   -544}, {0x50, 0xc8, 0x50, 0xff}}},\n    {{{  1845,   1024,  -2713}, 0, { -1734,  -1566}, {0x50, 0xc8, 0x50, 0xff}}},\n    {{{  2001,    922,  -2942}, 0, {   990,   -544}, {0x50, 0xc7, 0x50, 0xff}}},\n    {{{  2038,   1024,  -2906}, 0, {   990,  -1566}, {0x50, 0xc7, 0x50, 0xff}}},\n    {{{  1845,   1024,  -2713}, 0, { -1734,  -1566}, {0x50, 0xc7, 0x50, 0xff}}},\n    {{{  2001,    768,  -2942}, 0, {   990,    990}, {0x5a, 0x00, 0x59, 0xff}}},\n#endif\n};\n\n// 0x07030FF0 - 0x07031070\nstatic const Vtx inside_castle_seg7_vertex_07030FF0[] = {\n#ifdef VERSION_JP\n    {{{  1965,    922,  -2688}, 0, { -1052,   -544}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2110,    768,  -2833}, 0, {   990,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1965,    768,  -2688}, 0, { -1052,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2110,    922,  -2833}, 0, {   990,   -544}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1833,   1229,  -2665}, 0, { -2074,  -1302}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1833,   1229,  -2205}, 0, { -2074,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1374,   1229,  -2205}, 0, {  2508,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1374,   1229,  -2665}, 0, {  2508,  -1302}, {0x00, 0x81, 0x00, 0xff}}},\n#else\n    {{{  2038,   1024,  -2906}, 0, {  3204,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2074,   1024,  -2869}, 0, {  3204,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1881,   1024,  -2676}, 0, {   480,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1845,   1024,  -2713}, 0, {   480,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1881,   1024,  -2676}, 0, { -1734,  -1566}, {0xb0, 0xc8, 0xb0, 0xff}}},\n    {{{  2074,   1024,  -2869}, 0, {   990,  -1566}, {0xb0, 0xc8, 0xb0, 0xff}}},\n    {{{  1965,    922,  -2688}, 0, { -1052,   -544}, {0xb0, 0xc8, 0xb0, 0xff}}},\n    {{{  2110,    922,  -2833}, 0, {   990,   -544}, {0xb0, 0xc8, 0xb0, 0xff}}},\n    {{{  1965,    922,  -2688}, 0, { -1052,   -544}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2110,    768,  -2833}, 0, {   990,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1965,    768,  -2688}, 0, { -1052,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2110,    922,  -2833}, 0, {   990,   -544}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1833,   1229,  -2665}, 0, { -2074,  -1302}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1833,   1229,  -2205}, 0, { -2074,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1374,   1229,  -2205}, 0, {  2508,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1374,   1229,  -2665}, 0, {  2508,  -1302}, {0x00, 0x81, 0x00, 0xff}}},\n#endif\n};\n\n// 0x07031070 - 0x070310D8\nstatic const Gfx inside_castle_seg7_dl_07031070[] = {\n#ifdef VERSION_JP\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_0702FDD8.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0702FDD8.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0702FDF0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  5,  1, 0x0,  0,  6,  5, 0x0),\n    gsSP2Triangles( 0,  7,  3, 0x0,  0,  4,  6, 0x0),\n    gsSPEndDisplayList(),\n#else\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_0702FDD8.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0702FDD8.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0702FDF0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  5,  3, 0x0,  0,  2,  6, 0x0),\n    gsSP2Triangles( 0,  4,  7, 0x0,  0,  6,  5, 0x0),\n    gsSPEndDisplayList(),\n#endif\n};\n\n// 0x070310D8 - 0x07031168\nstatic const Gfx inside_castle_seg7_dl_070310D8[] = {\n#ifdef VERSION_JP\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0702FE70, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702FF70, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n#else\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0702FE70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702FF70, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  6,  1, 0x0),\n    gsSPEndDisplayList(),\n#endif\n};\n\n// 0x07031168 - 0x07031588\nconst Gfx inside_castle_seg7_dl_07031168[] = {\n#ifdef VERSION_JP\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0702FFF0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 3, 10,  4, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070300E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070301D0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070302B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070303B0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07030490, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07030590, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 10, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07030670, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07030760, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 3, 10,  4, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0, 14, 15, 11, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07030860, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07030940, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0,  4, 15,  5, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07030A40, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07030B30, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07030C20, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07030D20, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07030E20, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07030F10, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07030FF0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n#else\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0702FFF0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 3, 10,  4, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070300E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070301D0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070302B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070303B0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07030490, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07030590, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 4, 12,  5, 0x0,  9, 13, 14, 0x0),\n    gsSP1Triangle( 9, 14, 10, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07030670, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07030760, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07030860, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07030940, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  8, 13,  9, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07030A40, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07030B30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(10, 12, 11, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07030C20, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07030D20, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  7,  9, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07030E20, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07030F10, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  4, 13,  5, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07030FF0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPEndDisplayList(),\n#endif\n};\n\n// 0x07031588 - 0x07031608\nconst Gfx inside_castle_seg7_dl_07031588[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07031070),\n    gsSPDisplayList(inside_castle_seg7_dl_070310D8),\n    gsSPDisplayList(inside_castle_seg7_dl_07031168),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/1/11/model.inc.c",
    "content": "// 0x07031608 - 0x070316C8\nstatic const Vtx inside_castle_seg7_vertex_07031608[] = {\n    {{{  2001,   1024,  -2688}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1857,   1024,  -2833}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2001,    691,  -2688}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1857,    691,  -2833}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1857,   1024,  -2037}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2001,   1024,  -2182}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1857,    691,  -2037}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2001,    691,  -2182}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1205,    691,  -2688}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1350,   1024,  -2833}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1205,   1024,  -2688}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1350,    691,  -2833}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070316C8 - 0x07031720\nstatic const Gfx inside_castle_seg7_dl_070316C8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07031608, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07031720 - 0x07031790\nconst Gfx inside_castle_seg7_dl_07031720[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_070316C8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/1/12/model.inc.c",
    "content": "// 0x07031790 - 0x070317A8\nstatic const Lights1 inside_castle_seg7_lights_07031790 = gdSPDefLights1(\n    0x5f, 0x5f, 0x5f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x070317A8 - 0x070317E8\nstatic const Vtx inside_castle_seg7_vertex_070317A8[] = {\n    {{{  1179,    819,  -2510}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1179,    819,  -2356}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1179,    666,  -2356}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1179,    666,  -2510}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070317E8 - 0x07031830\nstatic const Gfx inside_castle_seg7_dl_070317E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_07031790.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07031790.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_070317A8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07031830 - 0x070318A0\nconst Gfx inside_castle_seg7_dl_07031830[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_070317E8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/1/13/model.inc.c",
    "content": "// 0x070318A0 - 0x070318B8\nstatic const Lights1 inside_castle_seg7_lights_070318A0 = gdSPDefLights1(\n    0x52, 0x52, 0x52,\n    0xdd, 0xdd, 0xdd, 0x28, 0x28, 0x28\n);\n\n// 0x070318B8 - 0x070318D0\nstatic const Lights1 inside_castle_seg7_lights_070318B8 = gdSPDefLights1(\n    0x5f, 0x5f, 0x5f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x070318D0 - 0x070319D0\nstatic const Vtx inside_castle_seg7_vertex_070318D0[] = {\n    {{{ -4121,    282,   -613}, 0, {  3034,    326}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4121,    282,   -306}, 0, {     0,    326}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4121,    256,   -306}, 0, {     0,    530}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4146,    282,   -613}, 0, {  3034,    172}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4146,    307,   -613}, 0, {  3034,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4146,    307,   -306}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4146,    282,   -306}, 0, {     0,    172}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4069,    230,   -613}, 0, {  3034,   1040}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4069,    205,   -306}, 0, {     0,   1244}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4069,    205,   -613}, 0, {  3034,   1244}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4069,    230,   -306}, 0, {     0,   1040}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4095,    256,   -613}, 0, {  3034,    684}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4095,    256,   -306}, 0, {     0,    684}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4095,    230,   -306}, 0, {     0,    888}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4095,    230,   -613}, 0, {  3034,    888}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4121,    256,   -613}, 0, {  3034,    530}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070319D0 - 0x07031AB0\nstatic const Vtx inside_castle_seg7_vertex_070319D0[] = {\n    {{{ -5221,    205,  -1484}, 0, {  5078,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5221,    205,   -869}, 0, {  2012,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4402,    205,   -869}, 0, {  2012,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3173,    205,  -1484}, 0, {  5078,   7120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4197,    205,   -665}, 0, {   990,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3173,    205,    563}, 0, { -5140,   7120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4197,    205,   -255}, 0, { -1052,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4402,    205,    -50}, 0, { -2074,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5221,    205,    563}, 0, { -5140,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5221,    205,    -50}, 0, { -2074,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3173,    205,   -716}, 0, {  2012,    734}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3122,    205,   -869}, 0, {  2268,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3173,    205,   -869}, 0, {  2012,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3122,    205,   -716}, 0, {  2268,    734}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07031AB0 - 0x07031B70\nstatic const Vtx inside_castle_seg7_vertex_07031AB0[] = {\n    {{{ -4095,    230,   -613}, 0, {  3034,    888}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4095,    230,   -306}, 0, {     0,    888}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4069,    230,   -306}, 0, {     0,   1040}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4069,    230,   -613}, 0, {  3034,   1040}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4121,    256,   -613}, 0, {  3034,    530}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4121,    256,   -306}, 0, {     0,    530}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4095,    256,   -306}, 0, {     0,    684}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4095,    256,   -613}, 0, {  3034,    684}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4146,    282,   -613}, 0, {  3034,    172}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4121,    282,   -306}, 0, {     0,    326}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4121,    282,   -613}, 0, {  3034,    326}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4146,    282,   -306}, 0, {     0,    172}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07031B70 - 0x07031C70\nstatic const Vtx inside_castle_seg7_vertex_07031B70[] = {\n    {{{ -3173,   1126,  -1177}, 0, {  3546,  -6164}, {0xcb, 0x9b, 0x36, 0xff}}},\n    {{{ -3650,   1434,  -1074}, 0, {  3034,  -3784}, {0xcb, 0x9b, 0x36, 0xff}}},\n    {{{ -3481,   1126,  -1484}, 0, {  5078,  -4630}, {0xcb, 0x9b, 0x36, 0xff}}},\n    {{{ -4812,   1434,    154}, 0, { -3096,   2010}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -4812,   1434,  -1074}, 0, {  3034,   2010}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3583,   1434,  -1074}, 0, {  3034,  -4120}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3583,   1434,    154}, 0, { -3096,  -4120}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -4402,    307,   -869}, 0, {  2012,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5221,    307,   -869}, 0, {  2012,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5221,    307,    -50}, 0, { -2074,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4402,    307,    -50}, 0, { -2074,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4197,    307,   -255}, 0, { -1052,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4197,    307,   -665}, 0, {   990,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3481,   1126,  -1484}, 0, {  5078,  -4630}, {0x00, 0x9b, 0x4c, 0xff}}},\n    {{{ -4745,   1434,  -1074}, 0, {  3034,   1674}, {0x00, 0x9b, 0x4c, 0xff}}},\n    {{{ -4914,   1126,  -1484}, 0, {  5078,   2522}, {0x00, 0x9b, 0x4c, 0xff}}},\n};\n\n// 0x07031C70 - 0x07031D70\nstatic const Vtx inside_castle_seg7_vertex_07031C70[] = {\n    {{{ -3481,   1126,  -1484}, 0, {  5078,  -4630}, {0x00, 0x9b, 0x4c, 0xff}}},\n    {{{ -3650,   1434,  -1074}, 0, {  3034,  -3784}, {0x00, 0x9b, 0x4c, 0xff}}},\n    {{{ -4745,   1434,  -1074}, 0, {  3034,   1674}, {0x00, 0x9b, 0x4c, 0xff}}},\n    {{{ -4914,   1126,    563}, 0, { -5140,   2520}, {0x00, 0x9b, 0xb4, 0xff}}},\n    {{{ -3650,   1434,    154}, 0, { -3096,  -3784}, {0x00, 0x9b, 0xb4, 0xff}}},\n    {{{ -3481,   1126,    563}, 0, { -5140,  -4630}, {0x00, 0x9b, 0xb4, 0xff}}},\n    {{{ -3173,   1126,  -1177}, 0, {  3546,  -6164}, {0xcb, 0x9b, 0x35, 0xff}}},\n    {{{ -3583,   1434,  -1007}, 0, {  2698,  -4120}, {0xcb, 0x9b, 0x35, 0xff}}},\n    {{{ -3650,   1434,  -1074}, 0, {  3034,  -3784}, {0xcb, 0x9b, 0x35, 0xff}}},\n    {{{ -4914,   1126,  -1484}, 0, {  5078,   2522}, {0x35, 0x9b, 0x35, 0xff}}},\n    {{{ -4745,   1434,  -1074}, 0, {  3034,   1674}, {0x35, 0x9b, 0x35, 0xff}}},\n    {{{ -4812,   1434,  -1007}, 0, {  2698,   2010}, {0x35, 0x9b, 0x35, 0xff}}},\n    {{{ -5221,   1126,  -1177}, 0, {  3546,   4054}, {0x35, 0x9b, 0x35, 0xff}}},\n    {{{ -5221,   1126,  -1177}, 0, {  3546,   4054}, {0x4c, 0x9b, 0x00, 0xff}}},\n    {{{ -4812,   1434,  -1007}, 0, {  2698,   2010}, {0x4c, 0x9b, 0x00, 0xff}}},\n    {{{ -4812,   1434,     86}, 0, { -2760,   2010}, {0x4c, 0x9b, 0x00, 0xff}}},\n};\n\n// 0x07031D70 - 0x07031E60\nstatic const Vtx inside_castle_seg7_vertex_07031D70[] = {\n    {{{ -5221,   1126,  -1177}, 0, {  3546,   4054}, {0x4c, 0x9b, 0x00, 0xff}}},\n    {{{ -4812,   1434,     86}, 0, { -2760,   2010}, {0x4c, 0x9b, 0x00, 0xff}}},\n    {{{ -5221,   1126,    256}, 0, { -3608,   4054}, {0x4c, 0x9b, 0x00, 0xff}}},\n    {{{ -5221,   1126,    256}, 0, { -3608,   4054}, {0x36, 0x9b, 0xcb, 0xff}}},\n    {{{ -4812,   1434,     86}, 0, { -2760,   2010}, {0x36, 0x9b, 0xcb, 0xff}}},\n    {{{ -4745,   1434,    154}, 0, { -3096,   1674}, {0x36, 0x9b, 0xcb, 0xff}}},\n    {{{ -5221,   1126,    256}, 0, { -3608,   4054}, {0x36, 0x9b, 0xca, 0xff}}},\n    {{{ -4745,   1434,    154}, 0, { -3096,   1674}, {0x36, 0x9b, 0xca, 0xff}}},\n    {{{ -4914,   1126,    563}, 0, { -5140,   2520}, {0x36, 0x9b, 0xca, 0xff}}},\n    {{{ -4914,   1126,    563}, 0, { -5140,   2520}, {0x00, 0x9b, 0xb4, 0xff}}},\n    {{{ -4745,   1434,    154}, 0, { -3096,   1674}, {0x00, 0x9b, 0xb4, 0xff}}},\n    {{{ -3650,   1434,    154}, 0, { -3096,  -3784}, {0x00, 0x9b, 0xb4, 0xff}}},\n    {{{ -3481,   1126,    563}, 0, { -5140,  -4630}, {0xcb, 0x9b, 0xca, 0xff}}},\n    {{{ -3650,   1434,    154}, 0, { -3096,  -3784}, {0xcb, 0x9b, 0xca, 0xff}}},\n    {{{ -3173,   1126,    256}, 0, { -3608,  -6164}, {0xcb, 0x9b, 0xca, 0xff}}},\n};\n\n// 0x07031E60 - 0x07031F10\nstatic const Vtx inside_castle_seg7_vertex_07031E60[] = {\n    {{{ -3650,   1434,    154}, 0, { -3096,  -3784}, {0xca, 0x9b, 0xcb, 0xff}}},\n    {{{ -3583,   1434,     86}, 0, { -2760,  -4120}, {0xca, 0x9b, 0xcb, 0xff}}},\n    {{{ -3173,   1126,    256}, 0, { -3608,  -6164}, {0xca, 0x9b, 0xcb, 0xff}}},\n    {{{ -3173,   1126,    256}, 0, { -3608,  -6164}, {0xb4, 0x9b, 0x00, 0xff}}},\n    {{{ -3583,   1434,     86}, 0, { -2760,  -4120}, {0xb4, 0x9b, 0x00, 0xff}}},\n    {{{ -3583,   1434,  -1007}, 0, {  2698,  -4120}, {0xb4, 0x9b, 0x00, 0xff}}},\n    {{{ -3173,   1126,  -1177}, 0, {  3546,  -6164}, {0xb4, 0x9b, 0x00, 0xff}}},\n    {{{ -4197,    307,   -306}, 0, {  -796,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4146,    307,   -613}, 0, {   734,   3288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4197,    307,   -613}, 0, {   734,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4146,    307,   -306}, 0, {  -796,   3288}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07031F10 - 0x07032000\nstatic const Vtx inside_castle_seg7_vertex_07031F10[] = {\n    {{{ -4018,    205,   -665}, 0, {  -240,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4197,    205,   -665}, 0, { -1506,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4197,    358,   -665}, 0, { -1506,   -544}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4018,    205,   -255}, 0, { -3132,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4146,    358,   -255}, 0, { -4034,   -542}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4197,    358,   -255}, 0, { -4396,   -542}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4197,    205,   -255}, 0, { -4396,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4018,    282,   -255}, 0, { -3132,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4069,    282,   -255}, 0, { -3492,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4018,    205,   -306}, 0, { -2770,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4197,    205,   -306}, 0, { -4034,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4197,    358,   -306}, 0, { -4034,   -542}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4069,    282,   -306}, 0, { -3132,    224}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4018,    282,   -306}, 0, { -2770,    224}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4146,    358,   -306}, 0, { -3674,   -542}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07032000 - 0x070320F0\nstatic const Vtx inside_castle_seg7_vertex_07032000[] = {\n    {{{ -4197,    307,   -613}, 0, {   480,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4197,    358,   -665}, 0, {     0,   -542}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4197,    307,   -665}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4018,    205,   -665}, 0, {  -240,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4197,    358,   -665}, 0, { -1506,   -544}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4146,    358,   -665}, 0, { -1144,   -544}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4069,    282,   -665}, 0, {  -602,    224}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4018,    282,   -665}, 0, {  -240,    224}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4018,    205,   -613}, 0, {  -602,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4146,    358,   -613}, 0, { -1506,   -544}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4197,    358,   -613}, 0, { -1866,   -544}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4197,    205,   -613}, 0, { -1866,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4069,    282,   -613}, 0, {  -964,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4018,    282,   -613}, 0, {  -602,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4197,    358,   -613}, 0, {   480,   -542}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070320F0 - 0x070321F0\nstatic const Vtx inside_castle_seg7_vertex_070320F0[] = {\n    {{{ -4018,    282,   -665}, 0, {  3546,    224}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4018,    282,   -613}, 0, {  3034,    224}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4018,    205,   -613}, 0, {  3034,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4018,    205,   -665}, 0, {  3546,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4018,    282,   -665}, 0, {  3546,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4069,    282,   -613}, 0, {  3034,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4018,    282,   -613}, 0, {  3034,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4069,    282,   -665}, 0, {  3546,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4146,    358,   -665}, 0, {  3546,   -544}, {0x59, 0x5a, 0x00, 0xff}}},\n    {{{ -4146,    358,   -613}, 0, {  3034,   -544}, {0x59, 0x5a, 0x00, 0xff}}},\n    {{{ -4069,    282,   -613}, 0, {  3034,    224}, {0x59, 0x5a, 0x00, 0xff}}},\n    {{{ -4069,    282,   -665}, 0, {  3546,    224}, {0x59, 0x5a, 0x00, 0xff}}},\n    {{{ -4197,    358,   -665}, 0, {  3546,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4146,    358,   -613}, 0, {  3034,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4146,    358,   -665}, 0, {  3546,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4197,    358,   -613}, 0, {  3034,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070321F0 - 0x070322F0\nstatic const Vtx inside_castle_seg7_vertex_070321F0[] = {\n    {{{ -4197,    307,   -255}, 0, {  4056,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4197,    358,   -255}, 0, {  4056,   -542}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4197,    358,   -306}, 0, {  3544,   -542}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4197,    307,   -306}, 0, {  3544,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4069,    282,   -306}, 0, {     0,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4069,    282,   -255}, 0, {  -542,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4018,    282,   -306}, 0, {     0,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4018,    282,   -306}, 0, {     0,    224}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4018,    205,   -255}, 0, {  -542,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4018,    205,   -306}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4018,    282,   -255}, 0, {  -542,    224}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4018,    282,   -255}, 0, {  -542,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4146,    358,   -306}, 0, {     0,   -544}, {0x59, 0x5a, 0x00, 0xff}}},\n    {{{ -4146,    358,   -255}, 0, {  -542,   -544}, {0x59, 0x5a, 0x00, 0xff}}},\n    {{{ -4069,    282,   -255}, 0, {  -542,    224}, {0x59, 0x5a, 0x00, 0xff}}},\n    {{{ -4069,    282,   -306}, 0, {     0,    224}, {0x59, 0x5a, 0x00, 0xff}}},\n};\n\n// 0x070322F0 - 0x070323F0\nstatic const Vtx inside_castle_seg7_vertex_070322F0[] = {\n    {{{ -4197,    358,   -306}, 0, {     0,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4146,    358,   -255}, 0, {  -542,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4146,    358,   -306}, 0, {     0,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4197,    358,   -255}, 0, {  -542,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4402,    307,   -869}, 0, { -1506,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5221,    205,   -869}, 0, { -7286,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5221,    307,   -869}, 0, { -7286,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4402,    205,   -869}, 0, { -1506,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4197,    307,   -665}, 0, {  3546,      0}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{ -4197,    205,   -665}, 0, {  3546,    990}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{ -4402,    205,   -869}, 0, {  5590,    990}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{ -4402,    307,   -869}, 0, {  5590,      0}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{ -4402,    307,    -50}, 0, { -2586,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -4197,    205,   -255}, 0, {  -540,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -4197,    307,   -255}, 0, {  -540,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -4402,    205,    -50}, 0, { -2586,    990}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x070323F0 - 0x07032430\nstatic const Vtx inside_castle_seg7_vertex_070323F0[] = {\n    {{{ -5221,    307,    -50}, 0, {-13068,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4402,    205,    -50}, 0, { -7286,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4402,    307,    -50}, 0, { -7286,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5221,    205,    -50}, 0, {-13068,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07032430 - 0x07032530\nstatic const Vtx inside_castle_seg7_vertex_07032430[] = {\n    {{{ -4914,   1126,    563}, 0, {  3544,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3481,    205,    563}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4914,    205,    563}, 0, {  3544,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3481,   1126,    563}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3481,   1126,  -1484}, 0, {  3546,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4914,   1126,  -1484}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4914,    205,  -1484}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3481,    205,  -1484}, 0, {  3546,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3173,   1126,  -1177}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3173,    205,  -1177}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3173,    461,   -869}, 0, {   734,   1444}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3173,    205,   -869}, 0, {   734,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3173,    205,   -869}, 0, {   734,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3122,    461,   -869}, 0, {   734,   1444}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3173,    461,   -869}, 0, {   734,   1444}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3122,    205,   -869}, 0, {   734,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07032530 - 0x07032630\nstatic const Vtx inside_castle_seg7_vertex_07032530[] = {\n    {{{ -5221,   1024,   -153}, 0, {   990,    196}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -5221,   1024,   -767}, 0, {  2522,    196}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -5221,   1126,  -1177}, 0, {  3544,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3173,    461,   -869}, 0, {   734,   1444}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3122,    461,   -716}, 0, {  1118,   1444}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3173,    461,   -716}, 0, {  1118,   1444}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3122,    461,   -869}, 0, {   734,   1444}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3173,   1126,  -1177}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3173,    461,   -869}, 0, {   734,   1444}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3173,    461,   -716}, 0, {  1118,   1444}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3173,   1126,    256}, 0, {  3546,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3173,    205,   -716}, 0, {  1118,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3173,    205,    256}, 0, {  3546,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3173,    461,   -716}, 0, {  1118,   1444}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3122,    205,   -716}, 0, {  1118,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3173,    205,   -716}, 0, {  1118,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07032630 - 0x070326E0\nstatic const Vtx inside_castle_seg7_vertex_07032630[] = {\n    {{{ -3173,    461,   -716}, 0, {  1118,   1444}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3122,    461,   -716}, 0, {  1118,   1444}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3122,    205,   -716}, 0, {  1118,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5221,    410,   -767}, 0, {  2522,   1556}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -5221,    410,   -153}, 0, {   990,   1556}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -5221,    205,    256}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -5221,   1024,   -153}, 0, {   990,    196}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -5221,   1126,    256}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -5221,   1024,   -767}, 0, {  2522,    196}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -5221,    205,  -1177}, 0, {  3544,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -5221,   1126,  -1177}, 0, {  3544,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070326E0 - 0x070327E0\nstatic const Vtx inside_castle_seg7_vertex_070326E0[] = {\n    {{{ -3378,   1235,    256}, 0, {   308,     52}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{ -3378,    205,    256}, 0, {   308,   2012}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{ -3481,    205,    358}, 0, {   650,   2012}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{ -3481,   1235,    358}, 0, {   650,     52}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{ -3173,   1126,    256}, 0, {     0,    260}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3173,    205,    256}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3378,    205,    256}, 0, {   308,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3378,   1235,    256}, 0, {   308,     52}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3481,   1235,    358}, 0, {   650,     52}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3481,    205,    358}, 0, {   650,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3481,    205,    563}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3481,   1126,    563}, 0, {   990,    260}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5017,   1235,    256}, 0, {   650,    144}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5017,    205,    256}, 0, {   650,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5221,    205,    256}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5221,   1126,    256}, 0, {   990,    340}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070327E0 - 0x070328D0\nstatic const Vtx inside_castle_seg7_vertex_070327E0[] = {\n    {{{ -3481,   1235,  -1279}, 0, {   308,     52}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{ -3481,    205,  -1279}, 0, {   308,   2012}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{ -3378,    205,  -1177}, 0, {   650,   2012}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{ -4914,   1235,    358}, 0, {   308,    144}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{ -5017,    205,    256}, 0, {   650,   2012}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{ -5017,   1235,    256}, 0, {   650,    144}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{ -4914,    205,    358}, 0, {   308,   2012}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{ -4914,   1126,    563}, 0, {     0,    340}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4914,    205,    563}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4914,    205,    358}, 0, {   308,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4914,   1235,    358}, 0, {   308,    144}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3481,   1126,  -1484}, 0, {     0,    260}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3481,    205,  -1484}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3481,    205,  -1279}, 0, {   308,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3481,   1235,  -1279}, 0, {   308,     52}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070328D0 - 0x070329C0\nstatic const Vtx inside_castle_seg7_vertex_070328D0[] = {\n    {{{ -5017,   1235,  -1177}, 0, {   308,     52}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{ -4914,    205,  -1279}, 0, {   650,   2012}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{ -4914,   1235,  -1279}, 0, {   650,     52}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{ -3481,   1235,  -1279}, 0, {   308,     52}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{ -3378,    205,  -1177}, 0, {   650,   2012}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{ -3378,   1235,  -1177}, 0, {   650,     52}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{ -3378,   1235,  -1177}, 0, {   650,     52}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3378,    205,  -1177}, 0, {   650,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3173,    205,  -1177}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3173,   1126,  -1177}, 0, {   990,    260}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5221,   1126,  -1177}, 0, {     0,    260}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5017,    205,  -1177}, 0, {   308,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5017,   1235,  -1177}, 0, {   308,     52}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5221,    205,  -1177}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5017,    205,  -1177}, 0, {   308,   2012}, {0x59, 0x00, 0x5a, 0xff}}},\n};\n\n// 0x070329C0 - 0x07032A00\nstatic const Vtx inside_castle_seg7_vertex_070329C0[] = {\n    {{{ -4914,   1235,  -1279}, 0, {   650,     52}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4914,    205,  -1279}, 0, {   650,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4914,    205,  -1484}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4914,   1126,  -1484}, 0, {   990,    260}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07032A00 - 0x07032B18\nstatic const Gfx inside_castle_seg7_dl_07032A00[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_070318A0.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_070318A0.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_070318D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_070318B8.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_070318B8.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_070319D0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  5,  3,  4, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  5,  7, 0x0,  9,  8,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07031AB0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07032B18 - 0x07032C18\nstatic const Gfx inside_castle_seg7_dl_07032B18[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07031B70, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  7, 10, 11, 0x0),\n    gsSP2Triangles( 7, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07031C70, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07031D70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07031E60, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle( 7, 10,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07032C18 - 0x07032DC8\nstatic const Gfx inside_castle_seg7_dl_07032C18[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07031F10, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  3,  7,  8, 0x0),\n    gsSP2Triangles( 3,  8,  4, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 13, 0x0,  9, 11, 14, 0x0),\n    gsSP1Triangle( 9, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07032000, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  3,  5,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10, 11,  8, 0x0),\n    gsSP2Triangles( 8, 12,  9, 0x0,  8, 13, 12, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070320F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  5,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070321F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  6,  5, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070322F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070323F0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07032DC8 - 0x07032EC0\nstatic const Gfx inside_castle_seg7_dl_07032DC8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_0900A000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07032430, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07032530, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  9, 11, 12, 0x0),\n    gsSP2Triangles(10,  9, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07032630, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  3,  9, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 6, 10,  7, 0x0,  3,  5,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07032EC0 - 0x07032FC0\nstatic const Gfx inside_castle_seg7_dl_07032EC0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_070326E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070327E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070328D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070329C0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07032FC0 - 0x07033068\nconst Gfx inside_castle_seg7_dl_07032FC0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07032A00),\n    gsSPDisplayList(inside_castle_seg7_dl_07032B18),\n    gsSPDisplayList(inside_castle_seg7_dl_07032C18),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07032DC8),\n    gsSPDisplayList(inside_castle_seg7_dl_07032EC0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/1/14/model.inc.c",
    "content": "// 0x07033068 - 0x07033080\nstatic const Lights1 inside_castle_seg7_lights_07033068 = gdSPDefLights1(\n    0x5f, 0x5f, 0x5f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07033080 - 0x07033100\nstatic const Vtx inside_castle_seg7_vertex_07033080[] = {\n    {{{ -3184,    410,   -127}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3184,    256,   -127}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3184,    256,     26}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3184,    410,     26}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3184,    410,   -485}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3184,    256,   -332}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3184,    410,   -332}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3184,    256,   -485}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07033100 - 0x07033158\nstatic const Gfx inside_castle_seg7_dl_07033100[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_07033068.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07033068.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07033080, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07033158 - 0x070331C8\nconst Gfx inside_castle_seg7_dl_07033158[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07033100),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/1/15/model.inc.c",
    "content": "// 0x070331C8 - 0x070331E0\nstatic const Lights1 inside_castle_seg7_lights_070331C8 = gdSPDefLights1(\n    0x52, 0x52, 0x52,\n    0xdd, 0xdd, 0xdd, 0x28, 0x28, 0x28\n);\n\n// 0x070331E0 - 0x070331F8\nstatic const Lights1 inside_castle_seg7_lights_070331E0 = gdSPDefLights1(\n    0x5f, 0x5f, 0x5f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x070331F8 - 0x070332F8\nstatic const Vtx inside_castle_seg7_vertex_070331F8[] = {\n    {{{   -25,      0,  -1842}, 0, {  3544,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   538,      0,  -1842}, 0, { -2074,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   538,    -25,  -1842}, 0, { -2074,    172}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -25,    -76,  -1919}, 0, {  3544,   1040}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   538,    -76,  -1919}, 0, { -2074,   1040}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   538,   -101,  -1919}, 0, { -2074,   1244}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -25,   -101,  -1919}, 0, {  3544,   1244}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -25,    -50,  -1893}, 0, {  3544,    684}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   538,    -76,  -1893}, 0, { -2074,    888}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -25,    -76,  -1893}, 0, {  3544,    888}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   538,    -50,  -1893}, 0, { -2074,    684}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -25,    -25,  -1868}, 0, {  3544,    326}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   538,    -50,  -1868}, 0, { -2074,    530}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -25,    -50,  -1868}, 0, {  3544,    530}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   538,    -25,  -1868}, 0, { -2074,    326}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -25,    -25,  -1842}, 0, {  3544,    172}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070332F8 - 0x070333F8\nstatic const Vtx inside_castle_seg7_vertex_070332F8[] = {\n    {{{   -25,      0,  -1125}, 0, {   990,   2776}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   538,      0,  -1842}, 0, { -2584,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -25,      0,  -1842}, 0, { -2584,   2776}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   538,      0,  -1125}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   538,   -101,  -2559}, 0, {  2012,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    77,   -101,  -2713}, 0, {  2778,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -25,   -101,  -2559}, 0, {  2012,   -798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   435,   -101,  -2713}, 0, {  2778,   1500}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1050,   -101,  -1740}, 0, { -2074,   4564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1050,   -101,  -2661}, 0, {  2524,   4564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   742,   -101,  -2559}, 0, {  2012,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   742,   -101,  -2661}, 0, {  2522,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1050,   -101,  -2661}, 0, {  2524,   4564}, {0x00, 0x7c, 0xe8, 0xff}}},\n    {{{  1050,   -306,  -3685}, 0, {  7632,   4564}, {0x00, 0x7c, 0xe8, 0xff}}},\n    {{{   742,   -306,  -3685}, 0, {  7632,   3032}, {0x00, 0x7c, 0xe8, 0xff}}},\n    {{{   742,   -101,  -2661}, 0, {  2522,   3032}, {0x00, 0x7c, 0xe8, 0xff}}},\n};\n\n// 0x070333F8 - 0x070334F8\nstatic const Vtx inside_castle_seg7_vertex_070333F8[] = {\n    {{{   -25,    -76,  -1893}, 0, {  3544,    888}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   538,    -76,  -1893}, 0, { -2074,    888}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   538,    -76,  -1919}, 0, { -2074,   1040}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -229,   -101,  -2661}, 0, {  2522,  -1820}, {0x00, 0x7c, 0xe8, 0xff}}},\n    {{{  -229,   -306,  -3685}, 0, {  7632,  -1820}, {0x00, 0x7c, 0xe8, 0xff}}},\n    {{{  -537,   -306,  -3685}, 0, {  7632,  -3354}, {0x00, 0x7c, 0xe8, 0xff}}},\n    {{{  -537,   -101,  -2661}, 0, {  2522,  -3354}, {0x00, 0x7c, 0xe8, 0xff}}},\n    {{{  -229,   -101,  -2559}, 0, {  2012,  -1820}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -229,   -101,  -2661}, 0, {  2522,  -1820}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -537,   -101,  -2661}, 0, {  2522,  -3354}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -537,   -101,  -1740}, 0, { -2074,  -3354}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   742,   -101,  -2559}, 0, {  2012,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1050,   -101,  -1740}, 0, { -2074,   4564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   333,      0,  -1125}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   179,      0,  -1074}, 0, {  1246,   1754}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   333,      0,  -1074}, 0, {  1246,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070334F8 - 0x070335D8\nstatic const Vtx inside_castle_seg7_vertex_070334F8[] = {\n    {{{   333,      0,  -1125}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   179,      0,  -1125}, 0, {   990,   1754}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   179,      0,  -1074}, 0, {  1246,   1754}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -25,    -25,  -1842}, 0, {  3544,    172}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   538,    -25,  -1842}, 0, { -2074,    172}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   538,    -25,  -1868}, 0, { -2074,    326}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -25,    -76,  -1893}, 0, {  3544,    888}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   538,    -76,  -1919}, 0, { -2074,   1040}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -25,    -76,  -1919}, 0, {  3544,   1040}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -25,    -50,  -1893}, 0, {  3544,    684}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   538,    -50,  -1868}, 0, { -2074,    530}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   538,    -50,  -1893}, 0, { -2074,    684}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -25,    -50,  -1868}, 0, {  3544,    530}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -25,    -25,  -1868}, 0, {  3544,    326}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070335D8 - 0x070336C8\nstatic const Vtx inside_castle_seg7_vertex_070335D8[] = {\n    {{{  -229,    512,  -2047}, 0, { -2074,  -5142}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   742,    512,  -2047}, 0, {  2778,  -5142}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1050,    512,  -1740}, 0, {  4312,  -6676}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -229,   -306,  -3685}, 0, {     0,  -1820}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -229,   -306,  -2559}, 0, { -5650,  -1820}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   742,   -306,  -2559}, 0, { -5650,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1050,   -306,  -4505}, 0, {  4056,   4566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -537,   -306,  -4505}, 0, {  4056,  -3354}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   742,   -306,  -3685}, 0, {     0,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -537,   -306,  -3685}, 0, {     0,  -3354}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1050,   -306,  -3685}, 0, {     0,   4566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -25,    666,  -3993}, 0, { -1052,   4566}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   538,    666,  -3993}, 0, {  1756,   4566}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   538,    666,  -2252}, 0, {  1756,  -4120}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -25,    666,  -2252}, 0, { -1052,  -4120}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x070336C8 - 0x07033748\nstatic const Vtx inside_castle_seg7_vertex_070336C8[] = {\n    {{{  -537,    512,  -4505}, 0, { -3606,   7120}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   742,    512,  -4197}, 0, {  2778,   5588}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -229,    512,  -4197}, 0, { -2074,   5588}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -537,    512,  -1740}, 0, { -3606,  -6676}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -229,    512,  -2047}, 0, { -2074,  -5142}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1050,    512,  -4505}, 0, {  4312,   7120}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1050,    512,  -1740}, 0, {  4312,  -6676}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   742,    512,  -2047}, 0, {  2778,  -5142}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07033748 - 0x07033838\nstatic const Vtx inside_castle_seg7_vertex_07033748[] = {\n    {{{   -25,   -101,  -1740}, 0, {   990,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -25,     77,  -1842}, 0, {  2012,    224}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -25,     77,  -1740}, 0, {   990,    224}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   589,   -101,  -1740}, 0, {   990,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   589,     77,  -1842}, 0, {  2012,    224}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   589,     77,  -1740}, 0, {   990,    224}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   589,      0,  -1919}, 0, {  2778,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   589,      0,  -1970}, 0, {  3290,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   589,   -101,  -1970}, 0, {  3290,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -76,      0,  -1970}, 0, {  3290,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -76,   -101,  -1970}, 0, {  3290,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -76,   -101,  -1740}, 0, {   990,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -76,      0,  -1919}, 0, {  2778,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -76,     77,  -1740}, 0, {   990,    224}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -76,     77,  -1842}, 0, {  2012,    224}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07033838 - 0x07033928\nstatic const Vtx inside_castle_seg7_vertex_07033838[] = {\n    {{{   -25,   -101,  -1740}, 0, {   990,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -25,   -101,  -1970}, 0, {  3290,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -25,      0,  -1970}, 0, {  3290,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -25,      0,  -1919}, 0, {  2778,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -25,     77,  -1842}, 0, {  2012,    224}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   538,   -101,  -1740}, 0, {   990,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   538,      0,  -1919}, 0, {  2778,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   538,      0,  -1970}, 0, {  3290,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   538,   -101,  -1970}, 0, {  3290,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   538,     77,  -1842}, 0, {  2012,    224}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   538,     77,  -1740}, 0, {   990,    224}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -229,   -101,  -2559}, 0, { -5140,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -229,   -306,  -2559}, 0, { -5140,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -229,   -101,  -2661}, 0, { -4118,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -229,   -306,  -3685}, 0, {  6100,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07033928 - 0x07033A18\nstatic const Vtx inside_castle_seg7_vertex_07033928[] = {\n    {{{   742,   -101,  -2661}, 0, { -4118,  -1054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   742,   -306,  -2559}, 0, { -5140,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   742,   -101,  -2559}, 0, { -5140,  -1054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   742,   -306,  -3685}, 0, {  6100,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   538,    307,  -1740}, 0, {  3034,  -2076}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{   538,    307,  -1125}, 0, {     0,  -2076}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{   435,    410,  -1125}, 0, {     0,  -3098}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{   538,      0,  -1740}, 0, {  3034,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   538,    307,  -1125}, 0, {     0,  -2076}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   538,    307,  -1740}, 0, {  3034,  -2076}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   435,    410,  -1740}, 0, {  3034,  -3098}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{   -25,    307,  -1740}, 0, {  3034,  -2076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -25,      0,  -1125}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -25,      0,  -1740}, 0, {  3034,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   538,      0,  -1125}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07033A18 - 0x07033AF8\nstatic const Vtx inside_castle_seg7_vertex_07033A18[] = {\n    {{{   435,    410,  -1740}, 0, {     0,   2010}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    77,    410,  -1125}, 0, {  3034,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    77,    410,  -1740}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   435,    410,  -1125}, 0, {  3034,   2010}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    77,    410,  -1740}, 0, {  3034,  -3098}, {0x5a, 0xa7, 0x00, 0xff}}},\n    {{{   -25,    307,  -1125}, 0, {     0,  -2076}, {0x5a, 0xa7, 0x00, 0xff}}},\n    {{{   -25,    307,  -1740}, 0, {  3034,  -2076}, {0x5a, 0xa7, 0x00, 0xff}}},\n    {{{    77,    410,  -1125}, 0, {     0,  -3098}, {0x5a, 0xa7, 0x00, 0xff}}},\n    {{{   -25,    307,  -1740}, 0, {  3034,  -2076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -25,    307,  -1125}, 0, {     0,  -2076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -25,      0,  -1125}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   179,      0,  -1125}, 0, {   734,   3032}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -25,      0,  -1125}, 0, {  1756,   3032}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -25,    307,  -1125}, 0, {  1756,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07033AF8 - 0x07033BE8\nstatic const Vtx inside_castle_seg7_vertex_07033AF8[] = {\n    {{{   179,    256,  -1074}, 0, {   478,  -1566}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   179,      0,  -1125}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   179,    256,  -1125}, 0, {   990,  -1566}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   179,      0,  -1074}, 0, {   478,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   333,    256,  -1125}, 0, {  -542,  -1564}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   333,      0,  -1074}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   333,    256,  -1074}, 0, {     0,  -1564}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   333,      0,  -1125}, 0, {  -542,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   179,    256,  -1125}, 0, {  1500,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   333,    256,  -1074}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   179,    256,  -1074}, 0, {  1500,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   333,    256,  -1125}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    77,   -101,  -2713}, 0, { -3608,  -1054}, {0x97, 0x00, 0xba, 0xff}}},\n    {{{    77,   -306,  -2713}, 0, { -3608,    990}, {0x97, 0x00, 0xba, 0xff}}},\n    {{{   -25,   -306,  -2559}, 0, { -5140,    990}, {0x97, 0x00, 0xba, 0xff}}},\n};\n\n// 0x07033BE8 - 0x07033CD8\nstatic const Vtx inside_castle_seg7_vertex_07033BE8[] = {\n    {{{   179,    256,  -1125}, 0, {   734,    478}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -25,    307,  -1125}, 0, {  1756,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   538,    307,  -1125}, 0, { -1052,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   179,      0,  -1125}, 0, {   734,   3032}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    77,    410,  -1125}, 0, {  1246,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   435,    410,  -1125}, 0, {  -542,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   333,    256,  -1125}, 0, {     0,    478}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   333,      0,  -1125}, 0, {     0,   3032}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   538,      0,  -1125}, 0, { -1052,   3032}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    77,   -101,  -2713}, 0, { -3608,  -1054}, {0x97, 0x00, 0xba, 0xff}}},\n    {{{   -25,   -306,  -2559}, 0, { -5140,    990}, {0x97, 0x00, 0xba, 0xff}}},\n    {{{   -25,   -101,  -2559}, 0, { -5140,  -1054}, {0x97, 0x00, 0xba, 0xff}}},\n    {{{   -25,   -306,  -2559}, 0, {  4568,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -229,   -101,  -2559}, 0, {  6612,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -25,   -101,  -2559}, 0, {  4568,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07033CD8 - 0x07033DC8\nstatic const Vtx inside_castle_seg7_vertex_07033CD8[] = {\n    {{{   435,   -101,  -2713}, 0, {     0,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   435,   -306,  -2713}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    77,   -306,  -2713}, 0, {  3546,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    77,   -101,  -2713}, 0, {  3546,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   538,   -101,  -2559}, 0, { -5140,  -1054}, {0x69, 0x00, 0xba, 0xff}}},\n    {{{   538,   -306,  -2559}, 0, { -5140,    990}, {0x69, 0x00, 0xba, 0xff}}},\n    {{{   435,   -306,  -2713}, 0, { -3608,    990}, {0x69, 0x00, 0xba, 0xff}}},\n    {{{   435,   -101,  -2713}, 0, { -3608,  -1054}, {0x69, 0x00, 0xba, 0xff}}},\n    {{{   742,   -101,  -2559}, 0, { -3096,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   538,   -306,  -2559}, 0, { -1052,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   538,   -101,  -2559}, 0, { -1052,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   742,   -306,  -2559}, 0, { -3096,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   538,     77,  -1740}, 0, { -1562,   -798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   589,     77,  -1740}, 0, { -2074,   -798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   589,     77,  -1842}, 0, { -2074,   -798}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07033DC8 - 0x07033EB8\nstatic const Vtx inside_castle_seg7_vertex_07033DC8[] = {\n    {{{   -25,   -306,  -2559}, 0, {  4568,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -229,   -306,  -2559}, 0, {  6612,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -229,   -101,  -2559}, 0, {  6612,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   538,      0,  -1919}, 0, { -1564,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   589,      0,  -1970}, 0, { -2074,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   538,      0,  -1970}, 0, { -1564,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   538,      0,  -1970}, 0, { -1564,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   589,      0,  -1970}, 0, { -2074,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   589,   -101,  -1970}, 0, { -2074,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   538,   -101,  -1970}, 0, { -1564,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   589,      0,  -1919}, 0, { -2074,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   538,     77,  -1842}, 0, { -1562,   -798}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{   589,      0,  -1919}, 0, { -2074,      0}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{   538,      0,  -1919}, 0, { -1564,      0}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{   589,     77,  -1842}, 0, { -2074,   -798}, {0x00, 0x59, 0xa7, 0xff}}},\n};\n\n// 0x07033EB8 - 0x07033FA8\nstatic const Vtx inside_castle_seg7_vertex_07033EB8[] = {\n    {{{   538,     77,  -1740}, 0, { -1562,   -798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   589,     77,  -1842}, 0, { -2074,   -798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   538,     77,  -1842}, 0, { -1562,   -798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -76,      0,  -1919}, 0, {  4568,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -25,      0,  -1970}, 0, {  4056,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -76,      0,  -1970}, 0, {  4568,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -76,      0,  -1970}, 0, {  4568,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -25,   -101,  -1970}, 0, {  4056,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -76,   -101,  -1970}, 0, {  4568,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -25,      0,  -1970}, 0, {  4056,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -25,      0,  -1919}, 0, {  4056,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -76,     77,  -1842}, 0, {  4568,   -798}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{   -25,      0,  -1919}, 0, {  4056,      0}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{   -76,      0,  -1919}, 0, {  4568,      0}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{   -25,     77,  -1842}, 0, {  4056,   -798}, {0x00, 0x59, 0xa7, 0xff}}},\n};\n\n// 0x07033FA8 - 0x07033FE8\nstatic const Vtx inside_castle_seg7_vertex_07033FA8[] = {\n    {{{   -76,     77,  -1740}, 0, {  4568,   -798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -25,     77,  -1842}, 0, {  4056,   -798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -76,     77,  -1842}, 0, {  4568,   -798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -25,     77,  -1740}, 0, {  4056,   -798}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07033FE8 - 0x070340E8\nstatic const Vtx inside_castle_seg7_vertex_07033FE8[] = {\n    {{{  -229,    512,  -4197}, 0, {     0,      0}, {0x4c, 0x9b, 0x00, 0xff}}},\n    {{{   -25,    666,  -2252}, 0, { 19386,   2010}, {0x4c, 0x9b, 0x00, 0xff}}},\n    {{{  -229,    512,  -2047}, 0, { 21430,      0}, {0x4c, 0x9b, 0x00, 0xff}}},\n    {{{   538,    666,  -3993}, 0, { -1564,  -7186}, {0x00, 0x9b, 0x4c, 0xff}}},\n    {{{   -25,    666,  -3993}, 0, {  4056,  -7186}, {0x00, 0x9b, 0x4c, 0xff}}},\n    {{{  -229,    512,  -4197}, 0, {  6100,  -9230}, {0x00, 0x9b, 0x4c, 0xff}}},\n    {{{   742,    512,  -4197}, 0, { -3608,  -9230}, {0x00, 0x9b, 0x4c, 0xff}}},\n    {{{   742,    512,  -2047}, 0, { 21430,   9676}, {0xb4, 0x9b, 0x00, 0xff}}},\n    {{{   538,    666,  -3993}, 0, {  2012,   7632}, {0xb4, 0x9b, 0x00, 0xff}}},\n    {{{   742,    512,  -4197}, 0, {     0,   9676}, {0xb4, 0x9b, 0x00, 0xff}}},\n    {{{   538,    666,  -2252}, 0, { 19386,   7632}, {0xb4, 0x9b, 0x00, 0xff}}},\n    {{{   -25,    666,  -2252}, 0, {  4056,  10186}, {0x00, 0x9b, 0xb4, 0xff}}},\n    {{{   538,    666,  -2252}, 0, { -1562,  10186}, {0x00, 0x9b, 0xb4, 0xff}}},\n    {{{   742,    512,  -2047}, 0, { -3606,  12230}, {0x00, 0x9b, 0xb4, 0xff}}},\n    {{{  -229,    512,  -2047}, 0, {  6100,  12230}, {0x00, 0x9b, 0xb4, 0xff}}},\n    {{{   -25,    666,  -3993}, 0, {  2012,   2010}, {0x4c, 0x9b, 0x00, 0xff}}},\n};\n\n// 0x070340E8 - 0x070341D8\nstatic const Vtx inside_castle_seg7_vertex_070340E8[] = {\n    {{{   947,    512,  -4300}, 0, {   734,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1050,   -306,  -4300}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1050,    512,  -4300}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -434,    512,  -4300}, 0, {   224,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -332,   -306,  -4402}, 0, {   734,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -332,    512,  -4402}, 0, {   734,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -332,    512,  -4402}, 0, {   734,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -332,   -306,  -4505}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -332,    512,  -4505}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -332,   -306,  -4402}, 0, {   734,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -434,   -306,  -4300}, 0, {   224,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -537,    512,  -4300}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -434,   -306,  -4300}, 0, {   224,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -434,    512,  -4300}, 0, {   224,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -537,   -306,  -4300}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070341D8 - 0x070342B8\nstatic const Vtx inside_castle_seg7_vertex_070341D8[] = {\n    {{{   845,    512,  -4402}, 0, {   224,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   947,   -306,  -4300}, 0, {   734,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   947,    512,  -4300}, 0, {   734,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   947,    512,  -4300}, 0, {   734,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   947,   -306,  -4300}, 0, {   734,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1050,   -306,  -4300}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   845,    512,  -1842}, 0, {   734,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   845,   -101,  -1740}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   845,    512,  -1740}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   845,   -306,  -4402}, 0, {   224,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   845,    512,  -4505}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   845,   -306,  -4402}, 0, {   224,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   845,    512,  -4402}, 0, {   224,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   845,   -306,  -4505}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070342B8 - 0x070343A8\nstatic const Vtx inside_castle_seg7_vertex_070342B8[] = {\n    {{{  1050,    512,  -1945}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1050,   -101,  -1945}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   947,   -101,  -1945}, 0, {   224,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   947,    512,  -1945}, 0, {   224,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   947,    512,  -1945}, 0, {   224,      0}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{   947,   -101,  -1945}, 0, {   224,   2012}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{   845,   -101,  -1842}, 0, {   734,   2012}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{   845,    512,  -1842}, 0, {   734,      0}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{   845,    512,  -1842}, 0, {   734,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   845,   -101,  -1842}, 0, {   734,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   845,   -101,  -1740}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -434,    512,  -1945}, 0, {   734,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -434,   -101,  -1945}, 0, {   734,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -537,   -101,  -1945}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -537,    512,  -1945}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070343A8 - 0x07034428\nstatic const Vtx inside_castle_seg7_vertex_070343A8[] = {\n    {{{  -332,    512,  -1842}, 0, {   224,      0}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{  -434,   -101,  -1945}, 0, {   734,   2012}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{  -434,    512,  -1945}, 0, {   734,      0}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{  -332,   -101,  -1842}, 0, {   224,   2012}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{  -332,    512,  -1740}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -332,   -101,  -1842}, 0, {   224,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -332,    512,  -1842}, 0, {   224,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -332,   -101,  -1740}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07034428 - 0x07034528\nstatic const Vtx inside_castle_seg7_vertex_07034428[] = {\n    {{{  1050,    512,  -1945}, 0, {  5844,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1050,    512,  -4300}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1050,   -306,  -4300}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1050,   -306,  -1945}, 0, {  5844,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   589,     77,  -1740}, 0, {  1118,   1052}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   538,     77,  -1740}, 0, {  1246,   1052}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   538,    307,  -1740}, 0, {  1246,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   845,   -101,  -1740}, 0, {   480,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   589,   -101,  -1740}, 0, {  1118,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   845,    512,  -1740}, 0, {   480,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -25,    307,  -1740}, 0, {  2650,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -25,     77,  -1740}, 0, {  2650,   1052}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -76,     77,  -1740}, 0, {  2778,   1052}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -332,   -101,  -1740}, 0, {  3418,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -332,    512,  -1740}, 0, {  3418,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -76,   -101,  -1740}, 0, {  2778,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07034528 - 0x07034628\nstatic const Vtx inside_castle_seg7_vertex_07034528[] = {\n    {{{   563,   -204,  -4505}, 0, {  2076,   1756}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -332,   -306,  -4505}, 0, {  -158,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   845,   -306,  -4505}, 0, {  2778,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   563,    410,  -4505}, 0, {  2076,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -50,   -204,  -4505}, 0, {   542,   1756}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -50,    410,  -4505}, 0, {   542,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -332,    512,  -4505}, 0, {  -158,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   845,    512,  -4505}, 0, {  2778,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    77,    410,  -1740}, 0, {  2396,    224}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -25,    307,  -1740}, 0, {  2650,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -332,    512,  -1740}, 0, {  3418,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -537,    512,  -1945}, 0, {  5844,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -537,   -306,  -4300}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -537,    512,  -4300}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   435,    410,  -1740}, 0, {  1502,    224}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   845,    512,  -1740}, 0, {   480,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07034628 - 0x07034688\nstatic const Vtx inside_castle_seg7_vertex_07034628[] = {\n    {{{   538,    307,  -1740}, 0, {  1246,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   435,    410,  -1740}, 0, {  1502,    224}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   845,    512,  -1740}, 0, {   480,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -537,    512,  -1945}, 0, {  5844,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -537,   -306,  -1945}, 0, {  5844,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -537,   -306,  -4300}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07034688 - 0x070347D8\nstatic const Gfx inside_castle_seg7_dl_07034688[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_070331C8.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_070331C8.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_070331F8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0,  2, 15, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_070331E0.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_070331E0.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_070332F8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070333F8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11,  7, 10, 0x0),\n    gsSP2Triangles(11, 10, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070334F8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 10,  9, 0x0,  3,  5, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070347D8 - 0x07034888\nstatic const Gfx inside_castle_seg7_dl_070347D8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_070335D8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  3,  8,  6, 0x0),\n    gsSP2Triangles( 3,  7,  9, 0x0,  3,  5,  8, 0x0),\n    gsSP2Triangles( 8, 10,  6, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070336C8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  7,  1, 0x0),\n    gsSP2Triangles( 4,  6,  3, 0x0,  3,  0,  2, 0x0),\n    gsSP1Triangle( 0,  5,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07034888 - 0x07034B28\nstatic const Gfx inside_castle_seg7_dl_07034888[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07033748, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  7,  6, 0x0),\n    gsSP2Triangles( 3,  8,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(11, 12,  9, 0x0, 11, 13, 14, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07033838, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 7,  8,  5, 0x0,  5,  9,  6, 0x0),\n    gsSP2Triangles( 5, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07033928, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 4,  6, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 7, 14,  8, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07033A18, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07033AF8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07033BE8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles( 2,  6,  0, 0x0,  2,  7,  6, 0x0),\n    gsSP2Triangles( 2,  8,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07033CD8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07033DC8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 3, 10,  4, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07033EB8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 3, 10,  4, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07033FA8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07034B28 - 0x07034B90\nstatic const Gfx inside_castle_seg7_dl_07034B28[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07033FE8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07034B90 - 0x07034C90\nstatic const Gfx inside_castle_seg7_dl_07034B90[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_070340E8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 3, 10,  4, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070341D8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  0,  9,  1, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070342B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070343A8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07034C90 - 0x07034D88\nstatic const Gfx inside_castle_seg7_dl_07034C90[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_0900A000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07034428, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  4, 0x0),\n    gsSP2Triangles( 7,  4,  6, 0x0,  7,  6,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP2Triangles(10, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07034528, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  1,  4,  5, 0x0),\n    gsSP2Triangles( 1,  5,  6, 0x0,  3,  2,  7, 0x0),\n    gsSP2Triangles( 5,  3,  7, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(14,  8, 10, 0x0, 14, 10, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07034628, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07034D88 - 0x07034E50\nconst Gfx inside_castle_seg7_dl_07034D88[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07034688),\n    gsSPDisplayList(inside_castle_seg7_dl_070347D8),\n    gsSPDisplayList(inside_castle_seg7_dl_07034888),\n    gsSPDisplayList(inside_castle_seg7_dl_07034B28),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07034B90),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07034C90),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/1/16/model.inc.c",
    "content": "// 0x07034E50 - 0x07034F40\nstatic const Vtx inside_castle_seg7_vertex_07034E50[] = {\n    {{{    88,   -101,  -2692}, 0, { -1048,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -14,      0,  -2539}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    88,      0,  -2692}, 0, { -1048,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -250,      0,  -2661}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -250,   -101,  -2539}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -250,   -101,  -2661}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -250,      0,  -2539}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -250,   -204,  -3685}, 0, { 10084,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -250,   -101,  -2661}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -250,   -306,  -3685}, 0, { 10080,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -250,      0,  -2661}, 0, {   -28,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -250,      0,  -2539}, 0, {  6612,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -14,      0,  -2539}, 0, {  4568,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -14,   -101,  -2539}, 0, {  4568,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -250,   -101,  -2539}, 0, {  6612,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07034F40 - 0x07035030\nstatic const Vtx inside_castle_seg7_vertex_07034F40[] = {\n    {{{   763,   -101,  -2661}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   762,      0,  -2539}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   763,      0,  -2661}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    88,   -101,  -2692}, 0, { -1048,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -14,   -101,  -2539}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -14,      0,  -2539}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    88,      0,  -2692}, 0, {  3546,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   424,   -101,  -2692}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    88,   -101,  -2692}, 0, {  3546,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   424,      0,  -2692}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   424,      0,  -2692}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   526,      0,  -2539}, 0, { -1048,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   526,   -101,  -2539}, 0, { -1048,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   424,   -101,  -2692}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   762,   -101,  -2539}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07035030 - 0x070350B0\nstatic const Vtx inside_castle_seg7_vertex_07035030[] = {\n    {{{   526,      0,  -2539}, 0, { -1052,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   762,   -101,  -2539}, 0, { -3096,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   526,   -101,  -2539}, 0, { -1052,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   762,      0,  -2539}, 0, { -3096,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   763,   -306,  -3685}, 0, { 10080,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   763,      0,  -2661}, 0, {   -28,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   763,   -204,  -3685}, 0, { 10084,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   763,   -101,  -2661}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070350B0 - 0x07035178\nstatic const Gfx inside_castle_seg7_dl_070350B0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07034E50, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07034F40, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07035030, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07035178 - 0x070351E8\nconst Gfx inside_castle_seg7_dl_07035178[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_070350B0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/1/17/model.inc.c",
    "content": "// 0x070351E8 - 0x07035200\nstatic const Lights1 inside_castle_seg7_lights_070351E8 = gdSPDefLights1(\n    0x5f, 0x5f, 0x5f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07035200 - 0x07035240\nstatic const Vtx inside_castle_seg7_vertex_07035200[] = {\n    {{{   512,     51,  -1136}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   358,     51,  -1136}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   358,    205,  -1136}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   512,    205,  -1136}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07035240 - 0x07035288\nstatic const Gfx inside_castle_seg7_dl_07035240[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_070351E8.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_070351E8.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07035200, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07035288 - 0x070352F8\nconst Gfx inside_castle_seg7_dl_07035288[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07035240),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/1/18/model.inc.c",
    "content": "// 0x070352F8 - 0x07035310\nstatic const Lights1 inside_castle_seg7_lights_070352F8 = gdSPDefLights1(\n    0x19, 0x19, 0x19,\n    0x44, 0x44, 0x44, 0x28, 0x28, 0x28\n);\n\n// 0x07035310 - 0x07035328\nstatic const Lights1 inside_castle_seg7_lights_07035310 = gdSPDefLights1(\n    0x26, 0x26, 0x26,\n    0x66, 0x66, 0x66, 0x28, 0x28, 0x28\n);\n\n// 0x07035328 - 0x07035340\nstatic const Lights1 inside_castle_seg7_lights_07035328 = gdSPDefLights1(\n    0x1f, 0x1f, 0x1f,\n    0x55, 0x55, 0x55, 0x28, 0x28, 0x28\n);\n\n// 0x07035340 - 0x07035358\nstatic const Lights1 inside_castle_seg7_lights_07035340 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x07035358 - 0x07035458\nstatic const Vtx inside_castle_seg7_vertex_07035358[] = {\n    {{{  1971,    307,     51}, 0, {  2778,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1971,    307,   -511}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1971,    282,   -511}, 0, {     0,     70}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1894,    230,     51}, 0, {  2778,    504}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1894,    230,   -511}, 0, {     0,    504}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1894,    205,   -511}, 0, {     0,    606}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1894,    205,     51}, 0, {  2778,    606}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1920,    256,     51}, 0, {  2778,    326}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1920,    256,   -511}, 0, {     0,    326}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1920,    230,   -511}, 0, {     0,    428}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1920,    230,     51}, 0, {  2778,    428}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1946,    282,     51}, 0, {  2778,    146}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1946,    282,   -511}, 0, {     0,    146}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1946,    256,   -511}, 0, {     0,    250}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1946,    256,     51}, 0, {  2778,    250}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1971,    282,     51}, 0, {  2778,     70}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07035458 - 0x07035548\nstatic const Vtx inside_castle_seg7_vertex_07035458[] = {\n    {{{  1894,    205,   -511}, 0, {  1118,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1126,    205,   -511}, 0, {  -796,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1126,    205,     51}, 0, {  -796,   1372}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1920,    230,     51}, 0, {  2778,    428}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1894,    230,   -511}, 0, {     0,    504}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1894,    230,     51}, 0, {  2778,    504}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1920,    230,   -511}, 0, {     0,    428}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1920,    256,     51}, 0, {  2778,    326}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1946,    256,   -511}, 0, {     0,    250}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1920,    256,   -511}, 0, {     0,    326}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1946,    256,     51}, 0, {  2778,    250}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1971,    282,     51}, 0, {  2778,     70}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1971,    282,   -511}, 0, {     0,     70}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1946,    282,   -511}, 0, {     0,    146}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1946,    282,     51}, 0, {  2778,    146}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07035548 - 0x070355B8\nstatic const Vtx inside_castle_seg7_vertex_07035548[] = {\n    {{{  1126,    205,   -306}, 0, {     0,   2520}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1075,    205,   -153}, 0, {   734,   2776}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1126,    205,   -153}, 0, {   734,   2520}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1894,    205,   -511}, 0, {  1118,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1126,    205,     51}, 0, {  -796,   1372}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1894,    205,     51}, 0, {  1118,   1372}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1075,    205,   -306}, 0, {     0,   2776}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070355B8 - 0x070355F8\nstatic const Vtx inside_castle_seg7_vertex_070355B8[] = {\n    {{{  1126,   1229,   -460}, 0, {  1412,    954}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1229,   1229,   -460}, 0, {  1410,   1012}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1229,   1229,      0}, 0, {  1590,   1024}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1126,   1229,      0}, 0, {  1592,    966}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x070355F8 - 0x070356B8\nstatic const Vtx inside_castle_seg7_vertex_070355F8[] = {\n    {{{  1229,    307,   -716}, 0, { -3608,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1229,    307,   -511}, 0, { -3608,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1971,    307,   -511}, 0, { -1754,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2253,    307,  -1740}, 0, { -1052,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4301,    307,   -716}, 0, {  4056,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4301,    307,    256}, 0, {  4056,   1882}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1971,    307,     51}, 0, { -1754,   1372}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3277,    307,  -1740}, 0, {  1502,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2253,    307,   1280}, 0, { -1052,   4438}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3277,    307,   1280}, 0, {  1500,   4438}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1229,    307,    256}, 0, { -3608,   1882}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1229,    307,     51}, 0, { -3608,   1372}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070356B8 - 0x070357B8\nstatic const Vtx inside_castle_seg7_vertex_070356B8[] = {\n    {{{  4301,   1024,     77}, 0, {  6866,  -6164}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4301,    410,     77}, 0, {  6866,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4301,    307,    154}, 0, {  7632,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4301,   1024,   -537}, 0, {   734,  -6164}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4301,   1229,    154}, 0, {  7632,  -8208}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4301,    410,   -537}, 0, {   734,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4301,   1229,   -613}, 0, {     0,  -8208}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4301,    307,   -613}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1229,    307,   -511}, 0, {  5590,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,    307,   -460}, 0, {  5078,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,    205,   -460}, 0, {  5078,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,    205,   -511}, 0, {  5590,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,    205,      0}, 0, {   480,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,    307,     51}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,    205,     51}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,    307,      0}, 0, {   480,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070357B8 - 0x070358A8\nstatic const Vtx inside_castle_seg7_vertex_070357B8[] = {\n    {{{  1229,    205,   -460}, 0, {  5078,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1178,    307,   -409}, 0, {  4568,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1178,    205,   -409}, 0, {  4568,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1229,    307,   -460}, 0, {  5078,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1178,    205,   -409}, 0, {  4568,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1178,    307,   -409}, 0, {  4568,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1126,    307,   -409}, 0, {  4568,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1126,    205,   -409}, 0, {  4568,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1126,    205,    -50}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1126,    307,    -50}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1178,    307,    -50}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1178,    205,    -50}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1126,    461,   -306}, 0, {  3546,  -1566}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1126,    205,   -306}, 0, {  3546,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1126,   1229,   -409}, 0, {  4566,  -9230}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070358A8 - 0x07035998\nstatic const Vtx inside_castle_seg7_vertex_070358A8[] = {\n    {{{  1178,    205,    -50}, 0, {   990,    990}, {0x58, 0x00, 0xa6, 0xff}}},\n    {{{  1229,    307,      0}, 0, {   478,      0}, {0x58, 0x00, 0xa6, 0xff}}},\n    {{{  1229,    205,      0}, 0, {   478,    990}, {0x58, 0x00, 0xa6, 0xff}}},\n    {{{  1178,    307,    -50}, 0, {   990,      0}, {0x58, 0x00, 0xa6, 0xff}}},\n    {{{  1971,    307,   -511}, 0, { -6418,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1229,    205,   -511}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1971,    205,   -511}, 0, { -6418,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1229,    307,   -511}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1971,    205,     51}, 0, { -6418,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1229,    205,     51}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1229,    307,     51}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1971,    307,     51}, 0, { -6418,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1126,    205,   -306}, 0, {  3546,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1126,    205,   -409}, 0, {  4566,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1126,   1229,   -409}, 0, {  4566,  -9230}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07035998 - 0x07035A98\nstatic const Vtx inside_castle_seg7_vertex_07035998[] = {\n    {{{  1126,   1229,   -409}, 0, {  4566,  -9230}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1126,    205,    -50}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1126,    461,   -153}, 0, {  2012,  -1566}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1126,    461,   -306}, 0, {  3546,  -1566}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1126,   1229,    -50}, 0, {   990,  -9230}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1126,    205,   -153}, 0, {  2012,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1126,    461,   -153}, 0, {     0,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1075,    461,   -306}, 0, {   480,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1126,    461,   -306}, 0, {     0,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1075,    461,   -153}, 0, {   480,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1126,    461,   -306}, 0, {     0,  -1564}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1075,    205,   -306}, 0, {   480,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1126,    205,   -306}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1126,    205,   -153}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1075,    461,   -153}, 0, {   480,  -1564}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1126,    461,   -153}, 0, {     0,  -1564}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07035A98 - 0x07035AF8\nstatic const Vtx inside_castle_seg7_vertex_07035A98[] = {\n    {{{  1126,    461,   -306}, 0, {     0,  -1564}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1075,    461,   -306}, 0, {   480,  -1564}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1075,    205,   -306}, 0, {   480,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1126,    205,   -153}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1075,    205,   -153}, 0, {   480,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1075,    461,   -153}, 0, {   480,  -1564}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07035AF8 - 0x07035B98\nstatic const Vtx inside_castle_seg7_vertex_07035AF8[] = {\n    {{{  4250,   1229,    154}, 0, {   376,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4198,   1229,    205}, 0, {   276,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4198,   1229,    358}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4301,   1229,    256}, 0, {   172,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4301,   1229,    154}, 0, {   376,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4301,   1229,   -716}, 0, {   172,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4198,   1229,   -665}, 0, {   276,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4250,   1229,   -613}, 0, {   376,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4198,   1229,   -818}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4301,   1229,   -613}, 0, {   376,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07035B98 - 0x07035C98\nstatic const Vtx inside_castle_seg7_vertex_07035B98[] = {\n    {{{  1229,    307,   -716}, 0, {  2012,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,   1229,   -716}, 0, {  2012,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,   1229,   -460}, 0, {  1500,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,    307,   -460}, 0, {  1500,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,    307,   -460}, 0, {  1500,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1229,   1229,   -460}, 0, {  1500,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1178,   1229,   -409}, 0, {  1400,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1178,    307,   -409}, 0, {  1400,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1178,    307,   -409}, 0, {  1400,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1178,   1229,   -409}, 0, {  1400,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1126,   1229,   -409}, 0, {  1400,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1126,    307,   -409}, 0, {  1400,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1126,    307,    -50}, 0, {  1400,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1126,   1229,    -50}, 0, {  1400,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1178,   1229,    -50}, 0, {  1400,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1178,    307,    -50}, 0, {  1400,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07035C98 - 0x07035D98\nstatic const Vtx inside_castle_seg7_vertex_07035C98[] = {\n    {{{  1178,    307,    -50}, 0, {  1400,    990}, {0x58, 0x00, 0xa6, 0xff}}},\n    {{{  1178,   1229,    -50}, 0, {  1400,      0}, {0x58, 0x00, 0xa6, 0xff}}},\n    {{{  1229,   1229,      0}, 0, {  1500,      0}, {0x58, 0x00, 0xa6, 0xff}}},\n    {{{  1229,    307,      0}, 0, {  1500,    990}, {0x58, 0x00, 0xa6, 0xff}}},\n    {{{  1229,    307,      0}, 0, {  1500,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,   1229,      0}, 0, {  1500,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,   1229,    256}, 0, {  2012,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,    307,    256}, 0, {  2012,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2036,   1024,  -1523}, 0, {  1080,    196}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1229,   1229,   -716}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1229,    307,   -716}, 0, {     0,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2253,   1229,  -1740}, 0, {  1376,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2036,    819,  -1523}, 0, {  1080,    422}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2180,   1024,  -1667}, 0, {  1276,    196}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2180,    819,  -1667}, 0, {  1276,    422}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2253,    307,  -1740}, 0, {  1376,    990}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07035D98 - 0x07035E88\nstatic const Vtx inside_castle_seg7_vertex_07035D98[] = {\n    {{{  2036,    819,   1063}, 0, {  1080,    422}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1229,    307,    256}, 0, {     0,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1229,   1229,    256}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2253,    307,   1280}, 0, {  1376,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2253,    307,   1280}, 0, {  1376,    990}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{  2036,    819,   1063}, 0, {  1080,    422}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{  2180,    819,   1208}, 0, {  1276,    422}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{  2036,   1024,   1063}, 0, {  1080,    196}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2253,   1229,   1280}, 0, {  1376,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2253,   1229,   1280}, 0, {  1376,      0}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  2253,    307,   1280}, 0, {  1376,    990}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  2180,    819,   1208}, 0, {  1276,    422}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  2253,   1229,   1280}, 0, {  1376,      0}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{  2180,   1024,   1208}, 0, {  1276,    196}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{  2036,   1024,   1063}, 0, {  1080,    196}, {0x5a, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07035E88 - 0x07035F78\nstatic const Vtx inside_castle_seg7_vertex_07035E88[] = {\n    {{{  2253,    307,   1280}, 0, {  1376,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2355,    358,   1280}, 0, {  1520,    934}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3174,    358,   1280}, 0, {  2648,    934}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3277,    307,   1280}, 0, {  2788,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2253,   1229,   1280}, 0, {  1376,      0}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  2180,    819,   1208}, 0, {  1276,    422}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  2180,   1024,   1208}, 0, {  1276,    196}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  2253,   1229,   1280}, 0, {  1376,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2355,    768,   1280}, 0, {  1520,    478}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3277,   1229,   1280}, 0, {  2788,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3277,   1229,   1280}, 0, {  2788,      0}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{  3385,    768,   1171}, 0, {  2936,    480}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{  3385,    358,   1171}, 0, {  2936,    934}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{  3277,    307,   1280}, 0, {  2788,    990}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{  3174,    768,   1280}, 0, {  2648,    478}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07035F78 - 0x07036078\nstatic const Vtx inside_castle_seg7_vertex_07035F78[] = {\n    {{{  4198,    307,    358}, 0, {  4056,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  3385,    358,   1171}, 0, {  2936,    934}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  4109,    358,    447}, 0, {  3932,    934}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  3385,    358,  -1631}, 0, {  2936,    934}, {0xa7, 0xff, 0x59, 0xff}}},\n    {{{  3277,    307,  -1740}, 0, {  2788,    990}, {0xa7, 0xff, 0x59, 0xff}}},\n    {{{  4198,    307,   -818}, 0, {  4056,    990}, {0xa7, 0xff, 0x59, 0xff}}},\n    {{{  3277,    307,  -1740}, 0, {  2788,    990}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  3385,    768,  -1631}, 0, {  2936,    480}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  3277,   1229,  -1740}, 0, {  2788,      0}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  3385,    358,  -1631}, 0, {  2936,    934}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  3174,    768,  -1740}, 0, {  2648,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3277,    307,  -1740}, 0, {  2788,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3277,   1229,  -1740}, 0, {  2788,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3174,    358,  -1740}, 0, {  2648,    934}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2355,    358,  -1740}, 0, {  1520,    934}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2253,    307,  -1740}, 0, {  1376,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07036078 - 0x07036168\nstatic const Vtx inside_castle_seg7_vertex_07036078[] = {\n    {{{  2253,   1229,  -1740}, 0, {  1376,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2355,    358,  -1740}, 0, {  1520,    934}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2355,    768,  -1740}, 0, {  1520,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2253,    307,  -1740}, 0, {  1376,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3174,    768,  -1740}, 0, {  2648,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3277,   1229,  -1740}, 0, {  2788,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4198,   1229,   -818}, 0, {  4056,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3277,   1229,  -1740}, 0, {  2788,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3385,    768,  -1631}, 0, {  2936,    480}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  4109,    768,   -907}, 0, {  3932,    480}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  4109,    358,   -907}, 0, {  3932,    934}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  4198,    307,    358}, 0, {  4056,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  4109,    358,    447}, 0, {  3932,    934}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  4109,    768,    447}, 0, {  3932,    478}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  4198,   1229,    358}, 0, {  4056,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07036168 - 0x07036268\nstatic const Vtx inside_castle_seg7_vertex_07036168[] = {\n    {{{  4198,    307,    358}, 0, {  4056,    990}, {0xa7, 0xff, 0xa7, 0xff}}},\n    {{{  3277,    307,   1280}, 0, {  2788,    990}, {0xa7, 0xff, 0xa7, 0xff}}},\n    {{{  3385,    358,   1171}, 0, {  2936,    934}, {0xa7, 0xff, 0xa7, 0xff}}},\n    {{{  4109,    768,    447}, 0, {  3932,    478}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  3385,    768,   1171}, 0, {  2936,    478}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  3277,   1229,   1280}, 0, {  2788,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  4198,   1229,    358}, 0, {  4056,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  4109,    358,   -907}, 0, {  3932,    934}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3385,    358,  -1631}, 0, {  2936,    934}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  4198,    307,   -818}, 0, {  4056,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  4198,   1229,   -818}, 0, {  4056,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3385,    768,  -1631}, 0, {  2936,    480}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  4109,    768,   -907}, 0, {  3932,    480}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  4250,    307,    154}, 0, {   376,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4250,   1229,    154}, 0, {   376,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4301,   1229,    154}, 0, {   376,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07036268 - 0x07036368\nstatic const Vtx inside_castle_seg7_vertex_07036268[] = {\n    {{{  4198,    307,   -665}, 0, {   276,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4198,   1229,   -818}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4198,    307,   -818}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4198,   1229,   -665}, 0, {   276,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4250,    307,   -613}, 0, {   376,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  4198,   1229,   -665}, 0, {   276,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  4198,    307,   -665}, 0, {   276,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  4250,   1229,   -613}, 0, {   376,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  4198,   1229,    358}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4198,    307,    205}, 0, {   276,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4198,    307,    358}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4198,   1229,    205}, 0, {   276,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4198,    307,    205}, 0, {   276,    990}, {0xa8, 0x00, 0xa6, 0xff}}},\n    {{{  4198,   1229,    205}, 0, {   276,      0}, {0xa8, 0x00, 0xa6, 0xff}}},\n    {{{  4250,   1229,    154}, 0, {   376,      0}, {0xa8, 0x00, 0xa6, 0xff}}},\n    {{{  4250,    307,    154}, 0, {   376,    990}, {0xa8, 0x00, 0xa6, 0xff}}},\n};\n\n// 0x07036368 - 0x070363D8\nstatic const Vtx inside_castle_seg7_vertex_07036368[] = {\n    {{{  4301,    307,   -613}, 0, {   376,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4250,   1229,   -613}, 0, {   376,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4250,    307,   -613}, 0, {   376,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4250,    307,    154}, 0, {   376,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4301,   1229,    154}, 0, {   376,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4301,    307,    154}, 0, {   376,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4301,   1229,   -613}, 0, {   376,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070363D8 - 0x070364B8\nstatic const Vtx inside_castle_seg7_vertex_070363D8[] = {\n    {{{  2180,   1024,   1208}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1891,   1024,   1208}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2036,   1024,   1063}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1891,    819,  -1667}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2036,    819,  -1812}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2036,   1024,  -1812}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1891,   1024,  -1667}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2180,    819,  -1667}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2036,    819,  -1812}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1891,    819,  -1667}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2036,    819,  -1523}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2036,    819,  -1523}, 0, {     0,      0}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  1891,    819,  -1667}, 0, {     0,      0}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  1891,   1024,  -1667}, 0, {     0,      0}, {0x59, 0x00, 0xa6, 0xff}}},\n};\n\n// 0x070364B8 - 0x070365A8\nstatic const Vtx inside_castle_seg7_vertex_070364B8[] = {\n    {{{  2180,   1024,  -1667}, 0, {     0,      0}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  2036,   1024,  -1812}, 0, {     0,      0}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  2036,    819,  -1812}, 0, {     0,      0}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  2180,    819,  -1667}, 0, {     0,      0}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  2036,   1024,  -1523}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1891,   1024,  -1667}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2036,   1024,  -1812}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2180,   1024,  -1667}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2036,    819,  -1523}, 0, {     0,      0}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  1891,   1024,  -1667}, 0, {     0,      0}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  2036,   1024,  -1523}, 0, {     0,      0}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  2036,   1024,   1063}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1891,    819,   1208}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2036,    819,   1063}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1891,   1024,   1208}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x070365A8 - 0x07036698\nstatic const Vtx inside_castle_seg7_vertex_070365A8[] = {\n    {{{  2180,    819,   1208}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2036,   1024,   1352}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2180,   1024,   1208}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1891,   1024,   1208}, 0, {     0,      0}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  2036,    819,   1352}, 0, {     0,      0}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  1891,    819,   1208}, 0, {     0,      0}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  2036,   1024,   1352}, 0, {     0,      0}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  2180,   1024,   1208}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2036,   1024,   1352}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1891,   1024,   1208}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2036,    819,   1063}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1891,    819,   1208}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2036,    819,   1352}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2180,    819,   1208}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2036,    819,   1352}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07036698 - 0x07036780\nstatic const Gfx inside_castle_seg7_dl_07036698[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_070352F8.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_070352F8.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07035358, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_07035310.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07035310.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07035458, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  8,  7, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07035548, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  6,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07036780 - 0x070367C8\nstatic const Gfx inside_castle_seg7_dl_07036780[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_07035328.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07035328.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_070355B8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070367C8 - 0x07036850\nstatic const Gfx inside_castle_seg7_dl_070367C8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_07035310.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07035310.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_070355F8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  3,  2, 0x0,  5,  4,  2, 0x0),\n    gsSP2Triangles( 5,  2,  6, 0x0,  4,  7,  3, 0x0),\n    gsSP2Triangles( 8,  9,  5, 0x0,  8,  5,  6, 0x0),\n    gsSP2Triangles(10,  8,  6, 0x0, 11, 10,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07036850 - 0x070369B8\nstatic const Gfx inside_castle_seg7_dl_07036850[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_070356B8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  2,  1,  5, 0x0),\n    gsSP2Triangles( 3,  4,  6, 0x0,  7,  5,  3, 0x0),\n    gsSP2Triangles( 7,  3,  6, 0x0,  2,  5,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070357B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070358A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07035998, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07035A98, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070369B8 - 0x07036CB8\nstatic const Gfx inside_castle_seg7_dl_070369B8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_07035328.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07035328.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07035AF8, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  2,  3, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  5,  7,  9, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_07035310.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07035310.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07035B98, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07035C98, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9,  8, 11, 0x0),\n    gsSP2Triangles( 8, 10, 12, 0x0,  8, 13, 11, 0x0),\n    gsSP2Triangles(13, 14, 11, 0x0, 14, 15, 11, 0x0),\n    gsSP2Triangles(14, 12, 15, 0x0, 12, 10, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07035D98, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  0,  2,  7, 0x0),\n    gsSP2Triangles( 8,  7,  2, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07035E88, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  1,  0,  7, 0x0),\n    gsSP2Triangles( 8,  7,  9, 0x0,  8,  1,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP2Triangles( 9,  3,  2, 0x0,  9, 14,  8, 0x0),\n    gsSP1Triangle( 9,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07035F78, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP2Triangles(11, 14, 15, 0x0, 11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07036078, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  0, 0x0,  0,  2,  4, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 13, 14, 11, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07036168, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  7,  9, 10, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07036268, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07036368, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  6,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07036CB8 - 0x07036D88\nstatic const Gfx inside_castle_seg7_dl_07036CB8[] = {\n    gsSPLight(&inside_castle_seg7_lights_07035340.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07035340.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_070363D8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070364B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070365A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07036D88 - 0x07036E68\nconst Gfx inside_castle_seg7_dl_07036D88[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07036698),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07036780),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_070367C8),\n    gsSPDisplayList(inside_castle_seg7_dl_07036850),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_070369B8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(inside_castle_seg7_dl_07036CB8),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/1/19/model.inc.c",
    "content": "// 0x07036E68 - 0x07036E80\nstatic const Lights1 inside_castle_seg7_lights_07036E68 = gdSPDefLights1(\n    0xcc, 0xcc, 0xcc,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07036E80 - 0x07036F70\nstatic const Vtx inside_castle_seg7_vertex_07036E80[] = {\n    {{{  4109,    768,    447}, 0, { -3096,    480}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  4182,    358,    520}, 0, {   990,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  4182,    768,    520}, 0, { -3096,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  4109,    358,    447}, 0, {     0,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3385,    358,   1171}, 0, { 10188,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3458,    358,   1244}, 0, { 10188,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4182,    358,    520}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4182,    768,    520}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3458,    768,   1244}, 0, { 10188,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3385,    768,   1171}, 0, { 10188,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4109,    768,    447}, 0, {     0,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3458,    768,   1244}, 0, { -3096,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  3458,    358,   1244}, 0, {   990,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  3385,    358,   1171}, 0, {   990,    480}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  3385,    768,   1171}, 0, { -3096,    480}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07036F70 - 0x07037060\nstatic const Vtx inside_castle_seg7_vertex_07036F70[] = {\n    {{{  4109,    768,   -907}, 0, {  6100,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3458,    768,  -1704}, 0, { -4118,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4182,    768,   -980}, 0, {  6100,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4109,    768,    447}, 0, { -3096,    480}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  4109,    358,    447}, 0, {   990,    480}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  4182,    358,    520}, 0, {   990,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  4182,    768,   -980}, 0, { -3096,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  4182,    358,   -980}, 0, {   990,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  4109,    358,   -907}, 0, {   990,    480}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  4109,    768,   -907}, 0, { -3096,    480}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  3385,    768,  -1631}, 0, { -3096,    480}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3385,    358,  -1631}, 0, {   990,    480}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3458,    358,  -1704}, 0, {   990,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3458,    768,  -1704}, 0, { -3096,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3385,    768,  -1631}, 0, { -4118,    480}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07037060 - 0x07037150\nstatic const Vtx inside_castle_seg7_vertex_07037060[] = {\n    {{{  3174,    768,   1280}, 0, {     0,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2355,    768,   1382}, 0, {  8144,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2355,    768,   1280}, 0, {  8144,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4182,    358,   -980}, 0, {  6100,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3458,    358,  -1704}, 0, { -4118,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3385,    358,  -1631}, 0, { -4118,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4109,    358,   -907}, 0, {  6100,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3174,    768,  -1842}, 0, {  8144,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3174,    768,  -1740}, 0, {  8144,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2355,    768,  -1740}, 0, {     0,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2355,    768,  -1842}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3174,    358,  -1740}, 0, {  8144,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3174,    358,  -1842}, 0, {  8144,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2355,    358,  -1842}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2355,    358,  -1740}, 0, {     0,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07037150 - 0x07037240\nstatic const Vtx inside_castle_seg7_vertex_07037150[] = {\n    {{{  3174,    358,  -1842}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3174,    768,  -1740}, 0, {  4056,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3174,    768,  -1842}, 0, {  4056,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3174,    768,   1280}, 0, {     0,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3174,    768,   1382}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2355,    768,   1382}, 0, {  8144,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3174,    358,   1382}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2355,    358,   1280}, 0, {  8144,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2355,    358,   1382}, 0, {  8144,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3174,    358,   1280}, 0, {     0,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2355,    358,  -1740}, 0, {     0,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2355,    768,  -1842}, 0, {  4056,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2355,    768,  -1740}, 0, {  4056,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2355,    358,  -1842}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3174,    358,  -1740}, 0, {     0,    480}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07037240 - 0x07037320\nstatic const Vtx inside_castle_seg7_vertex_07037240[] = {\n    {{{  2355,    358,   1382}, 0, {  4056,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2355,    358,   1280}, 0, {  4056,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2355,    768,   1280}, 0, {     0,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2355,    768,   1382}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3174,    358,   1280}, 0, {  4056,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3174,    358,   1382}, 0, {  4056,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3174,    768,   1382}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3174,    768,   1280}, 0, {     0,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4403,    307,   -767}, 0, { -8206,   1372}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3573,    307,  -2457}, 0, { -4062,   5586}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3319,    307,  -1842}, 0, { -2796,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4836,    307,  -1203}, 0, {-10366,   2460}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2253,    307,  -2457}, 0, {  2522,   5586}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2253,    307,  -1842}, 0, {  2522,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07037320 - 0x07037420\nstatic const Vtx inside_castle_seg7_vertex_07037320[] = {\n    {{{  4836,   1024,  -1203}, 0, {  9688,  -2588}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{  4836,    307,  -1203}, 0, {  9688,    990}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{  4403,    307,   -767}, 0, {  7510,    990}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{  2253,   1024,  -1842}, 0, {  2522,   4054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2253,   1024,  -2457}, 0, {  2522,   5586}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3573,   1024,  -2457}, 0, { -4062,   5586}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3319,   1024,  -1842}, 0, { -2796,   4054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4836,   1024,  -1203}, 0, {-10366,   2460}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4403,   1024,   -767}, 0, { -8206,   1372}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2253,   1024,  -2457}, 0, { -6672,  -2588}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3573,    307,  -2457}, 0, {   -86,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3573,   1024,  -2457}, 0, {   -86,  -2588}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3573,   1024,  -2457}, 0, {   -86,  -2588}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{  3573,    307,  -2457}, 0, {   -86,    990}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{  4836,    307,  -1203}, 0, {  6216,    990}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{  4836,   1024,  -1203}, 0, {  6216,  -2588}, {0xa7, 0x00, 0x5a, 0xff}}},\n};\n\n// 0x07037420 - 0x07037520\nstatic const Vtx inside_castle_seg7_vertex_07037420[] = {\n    {{{  2253,   1024,  -2457}, 0, { -6672,  -2588}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2253,    307,  -2457}, 0, { -6672,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3573,    307,  -2457}, 0, {   -86,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4836,   1024,    743}, 0, {  6216,  -2588}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{  4836,    307,    743}, 0, {  6216,    990}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{  3573,    307,   1997}, 0, {   -86,    990}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{  4836,   1024,  -1203}, 0, {  9688,  -2588}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{  4403,    307,   -767}, 0, {  7510,    990}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{  4403,   1024,   -767}, 0, {  7510,  -2586}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{  2253,   1024,  -1842}, 0, { 12876,  -2588}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2253,    307,  -1842}, 0, { 12876,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2253,    307,  -2457}, 0, { 15942,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2253,   1024,  -2457}, 0, { 15942,  -2588}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3573,   1024,   1997}, 0, {   -86,  -2588}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3573,    307,   1997}, 0, {   -86,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2253,    307,   1997}, 0, { -6672,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07037520 - 0x07037620\nstatic const Vtx inside_castle_seg7_vertex_07037520[] = {\n    {{{  3573,   1024,   1997}, 0, {   -86,  -2588}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2253,    307,   1997}, 0, { -6672,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2253,   1024,   1997}, 0, { -6672,  -2588}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4836,   1024,    743}, 0, {  6216,  -2588}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{  3573,    307,   1997}, 0, {   -86,    990}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{  3573,   1024,   1997}, 0, {   -86,  -2588}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{  3319,   1024,   1382}, 0, { -4330,   1500}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3573,   1024,   1997}, 0, { -5596,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2253,   1024,   1997}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2253,   1024,   1997}, 0, { -6284,  -2586}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2253,    307,   1997}, 0, { -6284,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2253,    307,   1382}, 0, { -3218,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2253,   1024,   1382}, 0, { -3218,  -2586}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4403,   1024,    307}, 0, {  2144,  -2586}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  4403,    307,    307}, 0, {  2144,    990}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  4836,    307,    743}, 0, {     0,    990}, {0xa6, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07037620 - 0x07037710\nstatic const Vtx inside_castle_seg7_vertex_07037620[] = {\n    {{{  4403,   1024,    307}, 0, {  2144,  -2586}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  4836,    307,    743}, 0, {     0,    990}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  4836,   1024,    743}, 0, {     0,  -2586}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  4403,   1024,    307}, 0, { -9740,   4182}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4836,   1024,    743}, 0, {-11898,   3094}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3573,   1024,   1997}, 0, { -5596,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3319,   1024,   1382}, 0, { -4330,   1500}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2253,    307,   1382}, 0, {   990,   1498}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2253,    307,   1997}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3573,    307,   1997}, 0, { -5596,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2253,   1024,   1997}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2253,   1024,   1382}, 0, {   990,   1498}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3319,    307,   1382}, 0, { -4330,   1500}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4836,    307,    743}, 0, {-11898,   3094}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4403,    307,    307}, 0, { -9740,   4182}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07037710 - 0x07037988\nstatic const Gfx inside_castle_seg7_dl_07037710[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_07036E68.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07036E68.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07036E80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07036F70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07037060, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07037150, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07037240, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(10,  9, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07037320, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07037420, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07037520, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07037620, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 6, 10, 11, 0x0, 12,  9, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0,  7,  9, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07037988 - 0x070379F8\nconst Gfx inside_castle_seg7_dl_07037988[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07037710),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/1/2/model.inc.c",
    "content": "// 0x07023FE0 - 0x07023FF8\nstatic const Lights1 inside_castle_seg7_lights_07023FE0 = gdSPDefLights1(\n    0x52, 0x52, 0x52,\n    0xdd, 0xdd, 0xdd, 0x28, 0x28, 0x28\n);\n\n// 0x07023FF8 - 0x07024010\nstatic const Lights1 inside_castle_seg7_lights_07023FF8 = gdSPDefLights1(\n    0x5f, 0x5f, 0x5f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07024010 - 0x07024028\nstatic const Lights1 inside_castle_seg7_lights_07024010 = gdSPDefLights1(\n    0x2c, 0x2c, 0x2c,\n    0x77, 0x77, 0x77, 0x28, 0x28, 0x28\n);\n\n// 0x07024028 - 0x07024118\nstatic const Vtx inside_castle_seg7_vertex_07024028[] = {\n    {{{ -2330,    102,    163}, 0, {  2012,   1106}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2619,     77,    452}, 0, {   -28,   1170}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2330,     77,    163}, 0, {  2012,   1170}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2221,     26,    272}, 0, {  2012,   1962}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2510,     26,    561}, 0, {   -28,   1962}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2510,      0,    561}, 0, {   -28,   2026}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2221,      0,    272}, 0, {  2012,   2026}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2257,     51,    235}, 0, {  2012,   1678}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2547,     51,    524}, 0, {   -28,   1678}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2547,     26,    524}, 0, {   -28,   1740}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2257,     26,    235}, 0, {  2012,   1740}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2294,     77,    199}, 0, {  2012,   1392}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2583,     51,    488}, 0, {   -28,   1456}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2294,     51,    199}, 0, {  2012,   1456}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2583,     77,    488}, 0, {   -28,   1392}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07024118 - 0x07024208\nstatic const Vtx inside_castle_seg7_vertex_07024118[] = {\n    {{{ -2438,    179,     54}, 0, {  2012,    254}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2728,    154,    343}, 0, {   -28,    316}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2438,    154,     54}, 0, {  2012,    316}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2330,    102,    163}, 0, {  2012,   1106}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2619,    102,    452}, 0, {   -28,   1106}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2619,     77,    452}, 0, {   -28,   1170}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2366,    128,    127}, 0, {  2012,    824}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2655,    102,    416}, 0, {   -28,    888}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2366,    102,    127}, 0, {  2012,    888}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2655,    128,    416}, 0, {   -28,    824}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2402,    154,     91}, 0, {  2012,    538}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2691,    128,    380}, 0, {   -28,    602}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2402,    128,     91}, 0, {  2012,    602}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2691,    154,    380}, 0, {   -28,    538}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2728,    179,    343}, 0, {   -28,    254}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07024208 - 0x070242F8\nstatic const Vtx inside_castle_seg7_vertex_07024208[] = {\n    {{{   355,    128,     91}, 0, {   -36,    586}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   644,    128,    380}, 0, {  2002,    586}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   644,    154,    380}, 0, {  2002,    522}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2475,    205,     18}, 0, {  2012,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2764,    179,    307}, 0, {   -28,     32}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2475,    179,     18}, 0, {  2012,     32}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2764,    205,    307}, 0, {   -28,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   428,    179,     18}, 0, {   -36,     16}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   717,    205,    307}, 0, {  2002,    -48}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   428,    205,     18}, 0, {   -36,    -48}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   717,    179,    307}, 0, {  2002,     16}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   391,    154,     54}, 0, {   -36,    300}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   681,    179,    343}, 0, {  2002,    238}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   391,    179,     54}, 0, {   -36,    238}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   681,    154,    343}, 0, {  2002,    300}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x070242F8 - 0x070243E8\nstatic const Vtx inside_castle_seg7_vertex_070242F8[] = {\n    {{{   247,     51,    199}, 0, {   -36,   1440}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   536,     51,    488}, 0, {  2002,   1440}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   536,     77,    488}, 0, {  2002,   1376}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   355,    128,     91}, 0, {   -36,    586}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   644,    154,    380}, 0, {  2002,    522}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   355,    154,     91}, 0, {   -36,    522}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   319,    102,    127}, 0, {   -36,    872}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   608,    128,    416}, 0, {  2002,    808}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   319,    128,    127}, 0, {   -36,    808}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   608,    102,    416}, 0, {  2002,    872}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   283,     77,    163}, 0, {   -36,   1154}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   572,     77,    452}, 0, {  2002,   1154}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   572,    102,    452}, 0, {  2002,   1090}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   283,    102,    163}, 0, {   -36,   1090}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   247,     77,    199}, 0, {   -36,   1376}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x070243E8 - 0x070244D8\nstatic const Vtx inside_castle_seg7_vertex_070243E8[] = {\n    {{{  -869,    205,    -50}, 0, {  1756,    216}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,    205,    -50}, 0, { -1818,    216}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,    179,    -50}, 0, { -1818,    396}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   210,     26,    235}, 0, {   -36,   1724}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   500,     26,    524}, 0, {  2002,   1724}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   500,     51,    524}, 0, {  2002,   1662}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   210,     51,    235}, 0, {   -36,   1662}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   174,      0,    272}, 0, {   -36,   2010}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   463,     26,    561}, 0, {  2002,   1946}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   174,     26,    272}, 0, {   -36,   1946}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   463,      0,    561}, 0, {  2002,   2010}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -869,    230,    -76}, 0, {  1756,   -146}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,    205,    -76}, 0, { -1818,     36}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,    205,    -76}, 0, {  1756,     36}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,    230,    -76}, 0, { -1818,   -146}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070244D8 - 0x070245C8\nstatic const Vtx inside_castle_seg7_vertex_070244D8[] = {\n    {{{  -869,    128,     26}, 0, {  1756,   1298}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,    102,     26}, 0, { -1818,   1478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,    102,     26}, 0, {  1756,   1478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,    205,    -50}, 0, {  1756,    216}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,    179,    -50}, 0, { -1818,    396}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,    179,    -50}, 0, {  1756,    396}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,    179,    -25}, 0, {  1756,    578}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,    154,    -25}, 0, { -1818,    758}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,    154,    -25}, 0, {  1756,    758}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,    179,    -25}, 0, { -1818,    578}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,    154,      0}, 0, {  1756,    938}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,    128,      0}, 0, { -1818,   1118}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,    128,      0}, 0, {  1756,   1118}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,    154,      0}, 0, { -1818,    938}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,    128,     26}, 0, { -1818,   1298}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070245C8 - 0x070246B8\nstatic const Vtx inside_castle_seg7_vertex_070245C8[] = {\n    {{{  -869,     26,    128}, 0, {  1756,   2744}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,      0,    128}, 0, { -1818,   2924}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,      0,    128}, 0, {  1756,   2924}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,    102,     51}, 0, {  1756,   1660}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,    102,     51}, 0, { -1818,   1660}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,     77,     51}, 0, { -1818,   1840}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,     77,     51}, 0, {  1756,   1840}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,     77,     77}, 0, {  1756,   2020}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,     51,     77}, 0, { -1818,   2202}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,     51,     77}, 0, {  1756,   2202}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,     77,     77}, 0, { -1818,   2020}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,     51,    102}, 0, {  1756,   2382}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,     26,    102}, 0, { -1818,   2562}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,     26,    102}, 0, {  1756,   2562}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,     51,    102}, 0, { -1818,   2382}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070246B8 - 0x070247A8\nstatic const Vtx inside_castle_seg7_vertex_070246B8[] = {\n    {{{  -869,    435,   -281}, 0, {  1756,  -3036}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,    410,   -281}, 0, { -1818,  -2856}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,    410,   -281}, 0, {  1756,  -2856}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,     26,    128}, 0, {  1756,   2744}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,     26,    128}, 0, { -1818,   2744}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,      0,    128}, 0, { -1818,   2924}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,    486,   -332}, 0, {  1756,  -3758}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,    486,   -332}, 0, { -1818,  -3758}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,    461,   -332}, 0, { -1818,  -3578}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,    461,   -332}, 0, {  1756,  -3578}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,    461,   -306}, 0, {  1756,  -3398}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,    435,   -306}, 0, { -1818,  -3216}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,    435,   -306}, 0, {  1756,  -3216}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,    461,   -306}, 0, { -1818,  -3398}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,    435,   -281}, 0, { -1818,  -3036}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070247A8 - 0x07024898\nstatic const Vtx inside_castle_seg7_vertex_070247A8[] = {\n    {{{  -869,    333,   -178}, 0, {  1756,  -1590}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,    333,   -178}, 0, { -1818,  -1590}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,    307,   -178}, 0, { -1818,  -1410}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,    410,   -255}, 0, {  1756,  -2674}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,    384,   -255}, 0, { -1818,  -2494}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,    384,   -255}, 0, {  1756,  -2494}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,    410,   -255}, 0, { -1818,  -2674}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,    384,   -229}, 0, {  1756,  -2314}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,    384,   -229}, 0, { -1818,  -2314}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,    358,   -229}, 0, { -1818,  -2132}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,    358,   -229}, 0, {  1756,  -2132}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,    358,   -204}, 0, {  1756,  -1952}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,    333,   -204}, 0, { -1818,  -1772}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,    333,   -204}, 0, {  1756,  -1772}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,    358,   -204}, 0, { -1818,  -1952}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07024898 - 0x07024988\nstatic const Vtx inside_castle_seg7_vertex_07024898[] = {\n    {{{  -869,    256,   -101}, 0, {  1756,   -506}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,    230,   -101}, 0, { -1818,   -326}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,    230,   -101}, 0, {  1756,   -326}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,    333,   -178}, 0, {  1756,  -1590}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,    307,   -178}, 0, { -1818,  -1410}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,    307,   -178}, 0, {  1756,  -1410}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,    307,   -153}, 0, {  1756,  -1230}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,    282,   -153}, 0, { -1818,  -1048}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,    282,   -153}, 0, {  1756,  -1048}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,    307,   -153}, 0, { -1818,  -1230}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,    282,   -127}, 0, {  1756,   -868}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,    256,   -127}, 0, { -1818,   -688}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,    256,   -127}, 0, {  1756,   -688}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,    282,   -127}, 0, { -1818,   -868}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,    256,   -101}, 0, { -1818,   -506}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07024988 - 0x070249C8\nstatic const Vtx inside_castle_seg7_vertex_07024988[] = {\n    {{{  -869,    512,   -357}, 0, {  1756,  -4120}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,    486,   -357}, 0, { -1818,  -3940}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,    486,   -357}, 0, {  1756,  -3940}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,    512,   -357}, 0, { -1818,  -4120}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070249C8 - 0x07024AB8\nstatic const Vtx inside_castle_seg7_vertex_070249C8[] = {\n    {{{ -2330,     77,    163}, 0, {  2012,   1170}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2619,     77,    452}, 0, {   -28,   1170}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2583,     77,    488}, 0, {   -28,   1392}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -562,      0,   2202}, 0, {  2522,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1484,      0,   2202}, 0, { -2074,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1484,      0,   2714}, 0, { -2074,   2520}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -562,      0,   2714}, 0, {  2522,   2520}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2257,     26,    235}, 0, {  2012,   1740}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2510,     26,    561}, 0, {   -28,   1962}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2221,     26,    272}, 0, {  2012,   1962}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2547,     26,    524}, 0, {   -28,   1740}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2294,     51,    199}, 0, {  2012,   1456}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2583,     51,    488}, 0, {   -28,   1456}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2547,     51,    524}, 0, {   -28,   1678}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2257,     51,    235}, 0, {  2012,   1678}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07024AB8 - 0x07024BA8\nstatic const Vtx inside_castle_seg7_vertex_07024AB8[] = {\n    {{{ -2438,    154,     54}, 0, {  2012,    316}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2728,    154,    343}, 0, {   -28,    316}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2691,    154,    380}, 0, {   -28,    538}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2330,     77,    163}, 0, {  2012,   1170}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2583,     77,    488}, 0, {   -28,   1392}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2294,     77,    199}, 0, {  2012,   1392}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2366,    102,    127}, 0, {  2012,    888}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2619,    102,    452}, 0, {   -28,   1106}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2330,    102,    163}, 0, {  2012,   1106}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2655,    102,    416}, 0, {   -28,    888}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2402,    128,     91}, 0, {  2012,    602}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2655,    128,    416}, 0, {   -28,    824}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2366,    128,    127}, 0, {  2012,    824}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2691,    128,    380}, 0, {   -28,    602}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2402,    154,     91}, 0, {  2012,    538}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07024BA8 - 0x07024C98\nstatic const Vtx inside_castle_seg7_vertex_07024BA8[] = {\n    {{{   319,    128,    127}, 0, {   -36,    808}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   644,    128,    380}, 0, {  2002,    586}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   355,    128,     91}, 0, {   -36,    586}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2475,    179,     18}, 0, {  2012,     32}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2764,    179,    307}, 0, {   -28,     32}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2728,    179,    343}, 0, {   -28,    254}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2438,    179,     54}, 0, {  2012,    254}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   391,    179,     54}, 0, {   -36,    238}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   681,    179,    343}, 0, {  2002,    238}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   717,    179,    307}, 0, {  2002,     16}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   428,    179,     18}, 0, {   -36,     16}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   355,    154,     91}, 0, {   -36,    522}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   681,    154,    343}, 0, {  2002,    300}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   391,    154,     54}, 0, {   -36,    300}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   644,    154,    380}, 0, {  2002,    522}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07024C98 - 0x07024D88\nstatic const Vtx inside_castle_seg7_vertex_07024C98[] = {\n    {{{   210,     51,    235}, 0, {   -36,   1662}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   536,     51,    488}, 0, {  2002,   1440}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   247,     51,    199}, 0, {   -36,   1440}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   319,    128,    127}, 0, {   -36,    808}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   608,    128,    416}, 0, {  2002,    808}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   644,    128,    380}, 0, {  2002,    586}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   283,    102,    163}, 0, {   -36,   1090}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   608,    102,    416}, 0, {  2002,    872}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   319,    102,    127}, 0, {   -36,    872}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   572,    102,    452}, 0, {  2002,   1090}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   247,     77,    199}, 0, {   -36,   1376}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   536,     77,    488}, 0, {  2002,   1376}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   572,     77,    452}, 0, {  2002,   1154}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   283,     77,    163}, 0, {   -36,   1154}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   500,     51,    524}, 0, {  2002,   1662}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07024D88 - 0x07024E78\nstatic const Vtx inside_castle_seg7_vertex_07024D88[] = {\n    {{{   512,    205,   -101}, 0, {  6610,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   717,    205,    307}, 0, {  7632,   2520}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,    205,      0}, 0, {  9166,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   174,     26,    272}, 0, {   -36,   1946}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   463,     26,    561}, 0, {  2002,   1946}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   500,     26,    524}, 0, {  2002,   1724}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   210,     26,    235}, 0, {   -36,   1724}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,    205,  -1023}, 0, {  9166,  -4120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   819,    205,  -1228}, 0, {  8144,  -5142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,    205,  -1023}, 0, {  6610,  -4120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   410,    205,      0}, 0, {  6100,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1075,    205,   -306}, 0, {     0,   2776}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,    205,   -153}, 0, {   734,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1075,    205,   -153}, 0, {   734,   2776}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,    205,   -306}, 0, {     0,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07024E78 - 0x07024F68\nstatic const Vtx inside_castle_seg7_vertex_07024E78[] = {\n    {{{ -3122,    205,   -716}, 0, {  2268,    734}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3071,    205,   -716}, 0, {  2522,    734}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3071,    205,   -869}, 0, {  2522,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3122,    205,   -869}, 0, {  2268,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2559,    205,  -1023}, 0, { -8716,  -4120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3071,    205,      0}, 0, {-11272,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2559,    205,   -101}, 0, { -8716,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3071,    205,  -1023}, 0, {-11272,  -4120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2457,    205,      0}, 0, { -8206,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2764,    205,    307}, 0, { -9738,   2520}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2866,    205,  -1228}, 0, {-10250,  -5142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,      0,   2202}, 0, {     0,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,      0,   2202}, 0, {  1502,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,      0,   2150}, 0, {  1502,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,      0,   2150}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07024F68 - 0x07025048\nstatic const Vtx inside_castle_seg7_vertex_07024F68[] = {\n    {{{ -1330,      0,   2150}, 0, {  -540,  10698}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,      0,   1536}, 0, {  2522,   7630}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,      0,   1536}, 0, {  -540,   7630}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,      0,   2150}, 0, {  2522,  10698}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -818,      0,   1229}, 0, {  2012,   6098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,      0,   1229}, 0, {     0,   6098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,      0,   1536}, 0, { -1562,   7632}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,      0,   1536}, 0, {  3544,   7632}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2203,      0,    253}, 0, { -4898,   1230}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,      0,   1536}, 0, { -1562,   7630}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2510,      0,    561}, 0, { -6430,   2764}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   463,      0,    561}, 0, {  8412,   2764}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   156,      0,    253}, 0, {  6880,   1230}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,      0,   1536}, 0, {  3544,   7630}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07025048 - 0x07025148\nstatic const Vtx inside_castle_seg7_vertex_07025048[] = {\n    {{{  -869,    230,   -101}, 0, {  1756,   -326}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    230,   -101}, 0, { -1818,   -326}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    230,    -76}, 0, { -1818,   -146}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    154,    -25}, 0, {  1756,    758}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    154,      0}, 0, { -1818,    938}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    154,      0}, 0, {  1756,    938}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    230,    -76}, 0, {  1756,   -146}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    205,    -76}, 0, {  1756,     36}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    205,    -76}, 0, { -1818,     36}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    205,    -50}, 0, { -1818,    216}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    205,    -50}, 0, {  1756,    216}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    179,    -50}, 0, {  1756,    396}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    179,    -50}, 0, { -1818,    396}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    179,    -25}, 0, { -1818,    578}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    179,    -25}, 0, {  1756,    578}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    154,    -25}, 0, { -1818,    758}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07025148 - 0x07025238\nstatic const Vtx inside_castle_seg7_vertex_07025148[] = {\n    {{{  -869,     51,     77}, 0, {  1756,   2202}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,     51,     77}, 0, { -1818,   2202}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,     51,    102}, 0, { -1818,   2382}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    128,      0}, 0, {  1756,   1118}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    128,      0}, 0, { -1818,   1118}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    128,     26}, 0, { -1818,   1298}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    128,     26}, 0, {  1756,   1298}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    102,     26}, 0, {  1756,   1478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    102,     51}, 0, { -1818,   1660}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    102,     51}, 0, {  1756,   1660}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    102,     26}, 0, { -1818,   1478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,     77,     51}, 0, {  1756,   1840}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,     77,     51}, 0, { -1818,   1840}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,     77,     77}, 0, { -1818,   2020}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,     77,     77}, 0, {  1756,   2020}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07025238 - 0x07025328\nstatic const Vtx inside_castle_seg7_vertex_07025238[] = {\n    {{{  -869,    461,   -332}, 0, {  1756,  -3578}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    461,   -306}, 0, { -1818,  -3398}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    461,   -306}, 0, {  1756,  -3398}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,     51,     77}, 0, {  1756,   2202}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,     51,    102}, 0, { -1818,   2382}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,     51,    102}, 0, {  1756,   2382}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,     26,    102}, 0, {  1756,   2562}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,     26,    128}, 0, { -1818,   2744}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,     26,    128}, 0, {  1756,   2744}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,     26,    102}, 0, { -1818,   2562}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    486,   -357}, 0, {  1756,  -3940}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    486,   -357}, 0, { -1818,  -3940}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    486,   -332}, 0, { -1818,  -3758}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    486,   -332}, 0, {  1756,  -3758}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    461,   -332}, 0, { -1818,  -3578}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07025328 - 0x07025418\nstatic const Vtx inside_castle_seg7_vertex_07025328[] = {\n    {{{  -869,    358,   -229}, 0, {  1756,  -2132}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    358,   -229}, 0, { -1818,  -2132}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    358,   -204}, 0, { -1818,  -1952}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    435,   -306}, 0, {  1756,  -3216}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    435,   -281}, 0, { -1818,  -3036}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    435,   -281}, 0, {  1756,  -3036}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    435,   -306}, 0, { -1818,  -3216}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    410,   -281}, 0, {  1756,  -2856}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    410,   -281}, 0, { -1818,  -2856}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    410,   -255}, 0, { -1818,  -2674}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    410,   -255}, 0, {  1756,  -2674}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    384,   -255}, 0, {  1756,  -2494}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    384,   -255}, 0, { -1818,  -2494}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    384,   -229}, 0, { -1818,  -2314}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    384,   -229}, 0, {  1756,  -2314}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07025418 - 0x07025508\nstatic const Vtx inside_castle_seg7_vertex_07025418[] = {\n    {{{  -869,    282,   -153}, 0, {  1756,  -1048}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    282,   -153}, 0, { -1818,  -1048}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    282,   -127}, 0, { -1818,   -868}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    358,   -229}, 0, {  1756,  -2132}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    358,   -204}, 0, { -1818,  -1952}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    358,   -204}, 0, {  1756,  -1952}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    333,   -204}, 0, {  1756,  -1772}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    333,   -204}, 0, { -1818,  -1772}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    333,   -178}, 0, { -1818,  -1590}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    333,   -178}, 0, {  1756,  -1590}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    307,   -178}, 0, {  1756,  -1410}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    307,   -178}, 0, { -1818,  -1410}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    307,   -153}, 0, { -1818,  -1230}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    307,   -153}, 0, {  1756,  -1230}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    282,   -127}, 0, {  1756,   -868}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07025508 - 0x07025588\nstatic const Vtx inside_castle_seg7_vertex_07025508[] = {\n    {{{  -869,    256,   -127}, 0, {  1756,   -688}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    256,   -127}, 0, { -1818,   -688}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    256,   -101}, 0, { -1818,   -506}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    256,   -101}, 0, {  1756,   -506}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    512,   -409}, 0, {  1500,  -4482}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    512,   -409}, 0, { -1564,  -4482}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    512,   -357}, 0, { -1564,  -4120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    512,   -357}, 0, {  1500,  -4120}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07025588 - 0x07025668\nstatic const Vtx inside_castle_seg7_vertex_07025588[] = {\n    {{{  -818,      0,    102}, 0, {  1500,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,      0,    205}, 0, {  -542,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -818,      0,    205}, 0, {  1500,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,      0,    102}, 0, {  -542,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -613,    -50,    307}, 0, {  3034,   2522}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1433,    -50,    307}, 0, { -1052,   2522}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1433,    -50,   1126}, 0, { -1052,   6610}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -613,    -50,   1126}, 0, {  3034,   6610}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2761,    512,  -1355}, 0, { -6658,  -3730}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2724,    512,  -1318}, 0, { -6476,  -3550}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2507,    512,  -1536}, 0, { -5392,  -4634}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2543,    512,  -1572}, 0, { -5574,  -4814}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2661,    512,  -1023}, 0, { -6162,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2493,    512,  -1550}, 0, { -5320,  -4706}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07025668 - 0x07025768\nstatic const Vtx inside_castle_seg7_vertex_07025668[] = {\n    {{{   553,    614,  -1494}, 0, {  7840,  -2380}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   662,    614,  -1385}, 0, {  8382,  -1838}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   698,    614,  -1421}, 0, {  8562,  -2020}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2724,    512,  -1318}, 0, { -6476,  -3550}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2779,    512,  -1264}, 0, { -6748,  -3278}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2661,    512,  -1023}, 0, { -6162,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2866,    512,  -1228}, 0, { -7184,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2493,    512,  -1550}, 0, { -5320,  -4706}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2047,    512,  -1023}, 0, { -3096,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2149,    512,  -1637}, 0, { -3608,  -5142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2457,    512,  -1637}, 0, { -5140,  -5142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,    512,  -1023}, 0, {  -540,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1433,    512,   -409}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   590,    614,  -1530}, 0, {  8020,  -2562}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -613,    512,   -409}, 0, {  4056,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,    512,  -1023}, 0, {  4568,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07025768 - 0x07025858\nstatic const Vtx inside_castle_seg7_vertex_07025768[] = {\n    {{{  -255,    512,   -767}, 0, {  5844,   -798}, {0xe8, 0x7a, 0x18, 0xff}}},\n    {{{  -255,    614,  -1279}, 0, {  5844,  -3354}, {0xe8, 0x7a, 0x18, 0xff}}},\n    {{{  -511,    512,  -1023}, 0, {  4568,  -2076}, {0xe8, 0x7a, 0x18, 0xff}}},\n    {{{     0,    614,  -1023}, 0, {  7122,  -2076}, {0xe8, 0x7a, 0x18, 0xff}}},\n    {{{  -613,    512,   -409}, 0, {  4056,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,    512,   -767}, 0, {  5844,   -798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,    512,  -1023}, 0, {  4568,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,    614,  -1637}, 0, {  7632,  -5142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,    614,  -1279}, 0, {  5844,  -3354}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    614,  -1023}, 0, {  7122,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   410,    614,  -1637}, 0, {  9166,  -5142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   614,    614,  -1023}, 0, { 10188,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   819,    614,  -1228}, 0, { 11210,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,    512,  -1023}, 0, {  -540,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1433,    512,   -409}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07025858 - 0x07025948\nstatic const Vtx inside_castle_seg7_vertex_07025858[] = {\n    {{{  -289,      0,   -733}, 0, {  3632,   1412}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -216,      0,   -878}, 0, {  3994,    690}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -325,      0,   -770}, 0, {  3452,   1230}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   333,      0,  -1074}, 0, {  6738,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   179,      0,  -1023}, 0, {  5972,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   333,      0,  -1023}, 0, {  6738,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   179,      0,  -1074}, 0, {  5972,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2380,      0,  -1023}, 0, { -6800,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2226,      0,  -1023}, 0, { -6034,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2226,      0,  -1074}, 0, { -6034,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2380,      0,  -1074}, 0, { -6800,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    512,  -1074}, 0, {   734,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    512,  -1074}, 0, {  -796,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    512,  -1023}, 0, {  -796,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    512,  -1023}, 0, {   734,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07025948 - 0x07025A38\nstatic const Vtx inside_castle_seg7_vertex_07025948[] = {\n    {{{ -1433,    -50,    563}, 0, { -1052,   2776}, {0x25, 0x73, 0x25, 0xff}}},\n    {{{ -1228,      0,    205}, 0, {     0,    990}, {0x25, 0x73, 0x25, 0xff}}},\n    {{{ -1535,      0,    512}, 0, { -1562,   2520}, {0x25, 0x73, 0x25, 0xff}}},\n    {{{  -289,      0,   -733}, 0, {  3632,   1412}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -180,      0,   -842}, 0, {  4174,    872}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -216,      0,   -878}, 0, {  3994,    690}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1721,      0,   -770}, 0, { -3514,   1230}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1830,      0,   -878}, 0, { -4056,    690}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1866,      0,   -842}, 0, { -4236,    872}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1757,      0,   -733}, 0, { -3694,   1412}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,      0,    922}, 0, { -1562,   4566}, {0x37, 0x72, 0x00, 0xff}}},\n    {{{ -1433,    -50,    870}, 0, { -1052,   4310}, {0x37, 0x72, 0x00, 0xff}}},\n    {{{ -1433,    -50,    563}, 0, { -1052,   2776}, {0x37, 0x72, 0x00, 0xff}}},\n    {{{ -1535,      0,    512}, 0, { -1562,   2520}, {0x37, 0x72, 0x00, 0xff}}},\n    {{{ -1177,    -50,    307}, 0, {   224,   1500}, {0x25, 0x73, 0x25, 0xff}}},\n};\n\n// 0x07025A38 - 0x07025B38\nstatic const Vtx inside_castle_seg7_vertex_07025A38[] = {\n    {{{ -1228,      0,    205}, 0, {     0,    990}, {0x00, 0x72, 0x37, 0xff}}},\n    {{{  -869,    -50,    307}, 0, {  1756,   1500}, {0x00, 0x72, 0x37, 0xff}}},\n    {{{  -818,      0,    205}, 0, {  2012,    990}, {0x00, 0x72, 0x37, 0xff}}},\n    {{{ -1177,    -50,    307}, 0, {   224,   1500}, {0x00, 0x72, 0x37, 0xff}}},\n    {{{ -1228,      0,   1229}, 0, {     0,   6098}, {0x25, 0x73, 0xdb, 0xff}}},\n    {{{ -1433,    -50,    870}, 0, { -1052,   4310}, {0x25, 0x73, 0xdb, 0xff}}},\n    {{{ -1535,      0,    922}, 0, { -1562,   4566}, {0x25, 0x73, 0xdb, 0xff}}},\n    {{{ -1177,    -50,   1126}, 0, {   224,   5588}, {0x25, 0x73, 0xdb, 0xff}}},\n    {{{  -818,      0,   1229}, 0, {  2012,   6098}, {0x00, 0x72, 0xc9, 0xff}}},\n    {{{ -1177,    -50,   1126}, 0, {   224,   5588}, {0x00, 0x72, 0xc9, 0xff}}},\n    {{{ -1228,      0,   1229}, 0, {     0,   6098}, {0x00, 0x72, 0xc9, 0xff}}},\n    {{{  -869,    -50,   1126}, 0, {  1756,   5588}, {0x00, 0x72, 0xc9, 0xff}}},\n    {{{  -511,      0,    922}, 0, {  3544,   4566}, {0xdb, 0x73, 0xdb, 0xff}}},\n    {{{  -869,    -50,   1126}, 0, {  1756,   5588}, {0xdb, 0x73, 0xdb, 0xff}}},\n    {{{  -818,      0,   1229}, 0, {  2012,   6098}, {0xdb, 0x73, 0xdb, 0xff}}},\n    {{{  -613,    -50,    870}, 0, {  3034,   4310}, {0xdb, 0x73, 0xdb, 0xff}}},\n};\n\n// 0x07025B38 - 0x07025C38\nstatic const Vtx inside_castle_seg7_vertex_07025B38[] = {\n    {{{  -511,      0,    512}, 0, {  3544,   2520}, {0xc9, 0x72, 0x00, 0xff}}},\n    {{{  -613,    -50,    870}, 0, {  3034,   4310}, {0xc9, 0x72, 0x00, 0xff}}},\n    {{{  -511,      0,    922}, 0, {  3544,   4566}, {0xc9, 0x72, 0x00, 0xff}}},\n    {{{  -869,    -50,    307}, 0, {  1756,   1500}, {0xdb, 0x73, 0x25, 0xff}}},\n    {{{  -511,      0,    512}, 0, {  3544,   2520}, {0xdb, 0x73, 0x25, 0xff}}},\n    {{{  -818,      0,    205}, 0, {  2012,    990}, {0xdb, 0x73, 0x25, 0xff}}},\n    {{{   512,      0,   -101}, 0, {  8654,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,      0,  -1023}, 0, {  8654,  -4120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,      0,  -1023}, 0, {  6100,  -4120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -613,    -50,    563}, 0, {  3034,   2776}, {0xc9, 0x72, 0x00, 0xff}}},\n    {{{  -613,    -50,    563}, 0, {  3034,   2776}, {0xdb, 0x73, 0x25, 0xff}}},\n    {{{ -1535,      0,    512}, 0, { -1562,   3542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2047,      0,  -1023}, 0, { -4118,  -4120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2559,      0,   -101}, 0, { -6672,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2559,      0,  -1023}, 0, { -6672,  -4120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,      0,   -204}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07025C38 - 0x07025D38\nstatic const Vtx inside_castle_seg7_vertex_07025C38[] = {\n    {{{ -1535,      0,    512}, 0, { -1562,   3542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2559,      0,   -101}, 0, { -6672,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2203,      0,    253}, 0, { -4898,   2252}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,      0,    922}, 0, { -1562,   5588}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,      0,    205}, 0, {     0,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,      0,   -204}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1433,    384,   -409}, 0, {   478,   -542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,    384,   -204}, 0, {  1500,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,    384,   -409}, 0, {  1500,   -542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   156,      0,    253}, 0, {  6880,   2252}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,      0,   -101}, 0, {  8654,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,      0,    512}, 0, {  3544,   3542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,      0,  -1023}, 0, {  6100,  -4120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -818,      0,   -204}, 0, {  2012,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -818,      0,    205}, 0, {  2012,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,      0,    922}, 0, {  3544,   5588}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07025D38 - 0x07025DE8\nstatic const Vtx inside_castle_seg7_vertex_07025D38[] = {\n    {{{ -1433,    384,   -409}, 0, {   478,   -542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,    384,   -511}, 0, {     0,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,    384,   -306}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1433,    384,   -204}, 0, {   478,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,    384,   -204}, 0, {  1500,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -613,    384,   -409}, 0, {  4566,   -542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -613,    384,   -204}, 0, {  4566,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,    384,   -306}, 0, {  5078,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,    384,   -511}, 0, {  5078,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -818,    384,   -204}, 0, {  3544,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -818,    384,   -409}, 0, {  3544,   -542}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07025DE8 - 0x07025EE8\nstatic const Vtx inside_castle_seg7_vertex_07025DE8[] = {\n    {{{ -1177,    256,   2150}, 0, {  2268,   -288}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -869,    256,   2150}, 0, {   734,   -288}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -869,    256,   2202}, 0, {   734,   -288}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -869,    256,   2150}, 0, {   734,   -288}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -869,      0,   2202}, 0, {   734,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -869,    256,   2202}, 0, {   734,   -288}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -716,    410,   2150}, 0, {     0,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -869,    256,   2150}, 0, {   734,   -288}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1177,    256,   2150}, 0, {  2268,   -288}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -716,      0,   2150}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -869,      0,   2150}, 0, {   734,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -869,      0,   2150}, 0, {   734,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1177,    256,   2202}, 0, {  2268,   -288}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,      0,   2202}, 0, {  2268,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,      0,   2150}, 0, {  2268,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,    256,   2150}, 0, {  2268,   -288}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07025EE8 - 0x07025FE8\nstatic const Vtx inside_castle_seg7_vertex_07025EE8[] = {\n    {{{ -1177,    256,   2150}, 0, {  2268,   -288}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1177,      0,   2150}, 0, {  2268,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1330,      0,   2150}, 0, {  3034,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -716,    410,   2150}, 0, {     0,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1330,    410,   2150}, 0, {  3034,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -716,    410,   1562}, 0, {     0,  -1054}, {0x97, 0xba, 0x00, 0xff}}},\n    {{{  -921,    717,   2150}, 0, {  3034,  -2588}, {0x97, 0xba, 0x00, 0xff}}},\n    {{{  -921,    717,   1562}, 0, {     0,  -2588}, {0x97, 0xba, 0x00, 0xff}}},\n    {{{ -1177,    256,   2150}, 0, {  2268,   -288}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -869,    256,   2202}, 0, {   734,   -288}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1177,    256,   2202}, 0, {  2268,   -288}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1125,    717,   2150}, 0, {  2012,  -2588}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -921,    717,   2150}, 0, {   990,  -2588}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -716,      0,   1562}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -716,      0,   2150}, 0, {  3034,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -716,    410,   2150}, 0, {  3034,  -1054}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07025FE8 - 0x070260C8\nstatic const Vtx inside_castle_seg7_vertex_07025FE8[] = {\n    {{{  -716,      0,   1562}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -716,    410,   2150}, 0, {  3034,  -1054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -716,    410,   1562}, 0, {     0,  -1054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -716,    410,   1562}, 0, {     0,  -1054}, {0x97, 0xba, 0x00, 0xff}}},\n    {{{  -716,    410,   2150}, 0, {  3034,  -1054}, {0x97, 0xba, 0x00, 0xff}}},\n    {{{  -921,    717,   2150}, 0, {  3034,  -2588}, {0x97, 0xba, 0x00, 0xff}}},\n    {{{  -921,    717,   1562}, 0, {  2012,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -921,    717,   2150}, 0, { -1052,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1125,    717,   2150}, 0, { -1052,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1125,    717,   1562}, 0, {  2012,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1125,    717,   1562}, 0, {   990,  -2586}, {0x69, 0xba, 0x00, 0xff}}},\n    {{{ -1125,    717,   2150}, 0, { -2074,  -2586}, {0x69, 0xba, 0x00, 0xff}}},\n    {{{ -1330,    410,   2150}, 0, { -2074,  -1054}, {0x69, 0xba, 0x00, 0xff}}},\n    {{{ -1330,    410,   1562}, 0, {   990,  -1054}, {0x69, 0xba, 0x00, 0xff}}},\n};\n\n// 0x070260C8 - 0x07026108\nstatic const Vtx inside_castle_seg7_vertex_070260C8[] = {\n    {{{ -1330,    410,   1562}, 0, {   990,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1330,    410,   2150}, 0, { -2074,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1330,      0,   2150}, 0, { -2074,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1330,      0,   1562}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07026108 - 0x07026188\nstatic const Vtx inside_castle_seg7_vertex_07026108[] = {\n    {{{  -869,    512,   -306}, 0, {  1704,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -869,    614,   -460}, 0, {  2012,    786}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -869,    512,   -460}, 0, {  2012,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -869,    614,   -409}, 0, {  1908,    786}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1177,    614,   -460}, 0, {  2012,    786}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,    614,   -409}, 0, {  1908,    786}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,    512,   -306}, 0, {  1704,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,    512,   -460}, 0, {  2012,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07026188 - 0x07026278\nstatic const Vtx inside_castle_seg7_vertex_07026188[] = {\n    {{{     0,    614,  -1023}, 0, {  6100,    786}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,    512,  -1023}, 0, {  6100,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   614,    512,  -1023}, 0, {  7328,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -784,    512,   1562}, 0, {   512,    990}, {0x97, 0xba, 0x00, 0xff}}},\n    {{{  -921,    717,   1562}, 0, {   784,    582}, {0x97, 0xba, 0x00, 0xff}}},\n    {{{  -921,    717,   1536}, 0, {   784,    582}, {0x97, 0xba, 0x00, 0xff}}},\n    {{{  -784,    512,   1536}, 0, {   512,    990}, {0x97, 0xba, 0x00, 0xff}}},\n    {{{  -921,    717,   1536}, 0, {   784,    582}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -921,    717,   1562}, 0, {   784,    582}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1125,    717,   1562}, 0, {  1196,    582}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1125,    717,   1536}, 0, {  1196,    582}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1125,    717,   1536}, 0, {  1196,    582}, {0x69, 0xba, 0x00, 0xff}}},\n    {{{ -1125,    717,   1562}, 0, {  1196,    582}, {0x69, 0xba, 0x00, 0xff}}},\n    {{{ -1262,    512,   1562}, 0, {  1468,    990}, {0x69, 0xba, 0x00, 0xff}}},\n    {{{ -1262,    512,   1536}, 0, {  1468,    990}, {0x69, 0xba, 0x00, 0xff}}},\n};\n\n// 0x07026278 - 0x07026358\nstatic const Vtx inside_castle_seg7_vertex_07026278[] = {\n    {{{   614,    614,  -1023}, 0, {  7328,    786}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   819,    512,  -1228}, 0, {  7736,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   819,    614,  -1228}, 0, {  7736,    786}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   614,    512,  -1023}, 0, {  7328,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{     0,    614,  -1023}, 0, {  6100,    786}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   614,    512,  -1023}, 0, {  7328,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   614,    614,  -1023}, 0, {  7328,    786}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,    512,   -767}, 0, {  5588,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{     0,    512,  -1023}, 0, {  6100,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{     0,    614,  -1023}, 0, {  6100,    786}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2761,    768,  -1355}, 0, {   588,    478}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2724,    768,  -1318}, 0, {   660,    478}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2761,    512,  -1355}, 0, {   588,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2724,    512,  -1318}, 0, {   660,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07026358 - 0x07026448\nstatic const Vtx inside_castle_seg7_vertex_07026358[] = {\n    {{{ -2543,    512,  -1572}, 0, {  1020,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2507,    512,  -1536}, 0, {  1092,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2507,    768,  -1536}, 0, {  1092,    478}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2543,    768,  -1572}, 0, {  1020,    478}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -869,    768,  -1023}, 0, {  4364,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1177,    768,  -1023}, 0, {  3748,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1177,    768,  -1074}, 0, {  3748,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2507,    768,  -1536}, 0, {  1092,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2761,    768,  -1355}, 0, {   588,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2543,    768,  -1572}, 0, {  1020,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2724,    768,  -1318}, 0, {   660,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   698,    614,  -1421}, 0, {  7492,    786}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   662,    614,  -1385}, 0, {  7420,    786}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   662,    870,  -1385}, 0, {  7420,    274}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   698,    870,  -1421}, 0, {  7492,    274}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07026448 - 0x07026538\nstatic const Vtx inside_castle_seg7_vertex_07026448[] = {\n    {{{   662,    870,  -1385}, 0, {  7420,    274}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   553,    870,  -1494}, 0, {  7204,    274}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   590,    870,  -1530}, 0, {  7276,    274}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   698,    870,  -1421}, 0, {  7492,    274}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   553,    614,  -1494}, 0, {  7204,    786}, {0x58, 0x00, 0x5b, 0xff}}},\n    {{{   590,    614,  -1530}, 0, {  7276,    786}, {0x58, 0x00, 0x5b, 0xff}}},\n    {{{   590,    870,  -1530}, 0, {  7276,    274}, {0x58, 0x00, 0x5b, 0xff}}},\n    {{{   553,    870,  -1494}, 0, {  7204,    274}, {0x58, 0x00, 0x5b, 0xff}}},\n    {{{  -869,    768,  -1023}, 0, {  4364,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1177,    768,  -1074}, 0, {  3748,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -869,    768,  -1074}, 0, {  4364,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -869,    768,  -1074}, 0, {  4364,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -869,    512,  -1023}, 0, {  4364,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -869,    768,  -1023}, 0, {  4364,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -869,    512,  -1074}, 0, {  4364,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07026538 - 0x07026638\nstatic const Vtx inside_castle_seg7_vertex_07026538[] = {\n    {{{ -1177,    768,  -1023}, 0, {  3748,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,    512,  -1023}, 0, {  3748,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,    512,  -1074}, 0, {  3748,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,    768,  -1074}, 0, {  3748,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -818,    512,   -306}, 0, {  1704,    990}, {0x00, 0x5a, 0x59, 0xff}}},\n    {{{  -818,    614,   -409}, 0, {  1908,    786}, {0x00, 0x5a, 0x59, 0xff}}},\n    {{{  -869,    614,   -409}, 0, {  1908,    786}, {0x00, 0x5a, 0x59, 0xff}}},\n    {{{  -869,    614,   -409}, 0, {  1908,    786}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -818,    614,   -409}, 0, {  1908,    786}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -818,    614,   -460}, 0, {  2012,    786}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -818,    614,   -460}, 0, {  2012,    786}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -818,    614,   -409}, 0, {  1908,    786}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -818,    512,   -306}, 0, {  1704,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1228,    512,   -306}, 0, {  1704,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1228,    614,   -460}, 0, {  2012,    786}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1228,    512,   -460}, 0, {  2012,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07026638 - 0x07026738\nstatic const Vtx inside_castle_seg7_vertex_07026638[] = {\n    {{{  -869,    614,   -409}, 0, {  1908,    786}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -818,    614,   -460}, 0, {  2012,    786}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    614,   -460}, 0, {  2012,    786}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -818,    614,   -460}, 0, {  2012,    786}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -818,    512,   -306}, 0, {  1704,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -818,    512,   -460}, 0, {  2012,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -818,    512,   -306}, 0, {  1704,    990}, {0x00, 0x5a, 0x59, 0xff}}},\n    {{{  -869,    614,   -409}, 0, {  1908,    786}, {0x00, 0x5a, 0x59, 0xff}}},\n    {{{  -869,    512,   -306}, 0, {  1704,    990}, {0x00, 0x5a, 0x59, 0xff}}},\n    {{{ -1228,    614,   -409}, 0, {  1908,    786}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    614,   -460}, 0, {  2012,    786}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,    614,   -460}, 0, {  2012,    786}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    614,   -409}, 0, {  1908,    786}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    512,   -306}, 0, {  1704,    990}, {0x00, 0x5a, 0x59, 0xff}}},\n    {{{ -1177,    614,   -409}, 0, {  1908,    786}, {0x00, 0x5a, 0x59, 0xff}}},\n    {{{ -1228,    614,   -409}, 0, {  1908,    786}, {0x00, 0x5a, 0x59, 0xff}}},\n};\n\n// 0x07026738 - 0x07026818\nstatic const Vtx inside_castle_seg7_vertex_07026738[] = {\n    {{{ -1177,    512,   -306}, 0, {  1704,    990}, {0x00, 0x5a, 0x59, 0xff}}},\n    {{{ -1228,    614,   -409}, 0, {  1908,    786}, {0x00, 0x5a, 0x59, 0xff}}},\n    {{{ -1228,    512,   -306}, 0, {  1704,    990}, {0x00, 0x5a, 0x59, 0xff}}},\n    {{{ -1228,    512,   -306}, 0, {  1704,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1228,    614,   -409}, 0, {  1908,    786}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1228,    614,   -460}, 0, {  2012,    786}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1228,    614,   -460}, 0, {  2012,    786}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1177,    614,   -460}, 0, {  2012,    786}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1177,    512,   -460}, 0, {  2012,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1228,    512,   -460}, 0, {  2012,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -869,    614,   -460}, 0, {  2012,    786}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -818,    614,   -460}, 0, {  2012,    786}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -818,    512,   -460}, 0, {  2012,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -869,    512,   -460}, 0, {  2012,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07026818 - 0x07026918\nstatic const Vtx inside_castle_seg7_vertex_07026818[] = {\n    {{{ -2493,    973,  -1550}, 0, {  1124,     70}, {0x49, 0x49, 0x49, 0xff}}},\n    {{{ -2457,   1024,  -1637}, 0, {  1196,      0}, {0x49, 0x49, 0x49, 0xff}}},\n    {{{ -2866,   1024,  -1228}, 0, {   376,      0}, {0x49, 0x49, 0x49, 0xff}}},\n    {{{ -2779,    973,  -1264}, 0, {   552,     70}, {0x49, 0x49, 0x49, 0xff}}},\n    {{{ -2866,   1024,  -1228}, 0, {   376,      0}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{ -2866,    512,  -1228}, 0, {   376,    990}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{ -2779,    512,  -1264}, 0, {   552,    990}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{ -2779,    973,  -1264}, 0, {   552,     70}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{ -2724,    768,  -1318}, 0, {   660,    480}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2493,    973,  -1550}, 0, {  1124,     70}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2779,    973,  -1264}, 0, {   552,     70}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2724,    768,  -1318}, 0, {   660,    480}, {0x58, 0x00, 0x5a, 0xff}}},\n    {{{ -2779,    973,  -1264}, 0, {   552,     70}, {0x58, 0x00, 0x5a, 0xff}}},\n    {{{ -2779,    512,  -1264}, 0, {   552,    990}, {0x58, 0x00, 0x5a, 0xff}}},\n    {{{ -2507,    768,  -1536}, 0, {  1092,    480}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2493,    512,  -1550}, 0, {  1124,    990}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07026918 - 0x070269E8\nstatic const Vtx inside_castle_seg7_vertex_07026918[] = {\n    {{{ -2724,    768,  -1318}, 0, {   660,    480}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{ -2507,    768,  -1536}, 0, {  1092,    480}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{ -2493,    973,  -1550}, 0, {  1124,     70}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{ -2457,    512,  -1637}, 0, {  1196,    990}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{ -2457,   1024,  -1637}, 0, {  1196,      0}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{ -2493,    973,  -1550}, 0, {  1124,     70}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{ -2493,    512,  -1550}, 0, {  1124,    990}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{ -2507,    768,  -1536}, 0, {  1092,    480}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2507,    512,  -1536}, 0, {  1092,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2493,    512,  -1550}, 0, {  1124,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2779,    512,  -1264}, 0, {   552,    990}, {0x58, 0x00, 0x5a, 0xff}}},\n    {{{ -2724,    512,  -1318}, 0, {   660,    990}, {0x58, 0x00, 0x5a, 0xff}}},\n    {{{ -2724,    768,  -1318}, 0, {   660,    480}, {0x58, 0x00, 0x5a, 0xff}}},\n};\n\n// 0x070269E8 - 0x07026A88\nstatic const Vtx inside_castle_seg7_vertex_070269E8[] = {\n    {{{  -869,    512,   -460}, 0, {  2012,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -869,      0,    154}, 0, {   784,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -869,     51,    154}, 0, {   784,    888}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -869,    512,   -306}, 0, {  1704,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -869,      0,   -460}, 0, {  2012,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1177,      0,    154}, 0, {   784,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,    512,   -306}, 0, {  1704,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,     51,    154}, 0, {   784,    888}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,      0,   -460}, 0, {  2012,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,    512,   -460}, 0, {  2012,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07026A88 - 0x07026B68\nstatic const Vtx inside_castle_seg7_vertex_07026A88[] = {\n    {{{ -1637,      0,   1434}, 0, {  1244,    990}, {0xa6, 0x00, 0xa8, 0xff}}},\n    {{{ -1637,    102,   1434}, 0, {  1244,    786}, {0xa6, 0x00, 0xa8, 0xff}}},\n    {{{ -1586,    102,   1382}, 0, {  1396,    786}, {0xa6, 0x00, 0xa8, 0xff}}},\n    {{{  -716,    410,   1562}, 0, {   376,    172}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -716,    410,   1536}, 0, {   376,    172}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -716,      0,   1536}, 0, {   376,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -716,      0,   1562}, 0, {   376,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -716,    410,   1536}, 0, {   376,    172}, {0x97, 0xba, 0x00, 0xff}}},\n    {{{  -716,    410,   1562}, 0, {   376,    172}, {0x97, 0xba, 0x00, 0xff}}},\n    {{{  -784,    512,   1562}, 0, {   512,      0}, {0x97, 0xba, 0x00, 0xff}}},\n    {{{  -784,    512,   1536}, 0, {   512,      0}, {0x97, 0xba, 0x00, 0xff}}},\n    {{{ -1330,      0,   1562}, 0, {  1604,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1330,    410,   1536}, 0, {  1604,    172}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1330,    410,   1562}, 0, {  1604,    172}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07026B68 - 0x07026C68\nstatic const Vtx inside_castle_seg7_vertex_07026B68[] = {\n    {{{ -1330,    410,   1562}, 0, {  1604,    172}, {0x69, 0xba, 0x00, 0xff}}},\n    {{{ -1330,    410,   1536}, 0, {  1604,    172}, {0x69, 0xba, 0x00, 0xff}}},\n    {{{ -1262,    512,   1536}, 0, {  1468,      0}, {0x69, 0xba, 0x00, 0xff}}},\n    {{{ -1262,    512,   1562}, 0, {  1468,      0}, {0x69, 0xba, 0x00, 0xff}}},\n    {{{ -1330,      0,   1562}, 0, {  1604,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1330,      0,   1536}, 0, {  1604,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1330,    410,   1536}, 0, {  1604,    172}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1637,      0,   1434}, 0, {  1244,    990}, {0xa6, 0x00, 0xa8, 0xff}}},\n    {{{ -1586,    102,   1382}, 0, {  1396,    786}, {0xa6, 0x00, 0xa8, 0xff}}},\n    {{{ -1586,      0,   1382}, 0, {  1396,    990}, {0xa6, 0x00, 0xa8, 0xff}}},\n    {{{ -1586,      0,   1382}, 0, {  1396,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1586,    102,   1382}, 0, {  1396,    786}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1433,    102,   1382}, 0, {  1692,    786}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1637,    102,   1434}, 0, {  1244,    786}, {0xcc, 0x67, 0xcd, 0xff}}},\n    {{{ -1535,    205,   1536}, 0, {  1320,    582}, {0xcc, 0x67, 0xcd, 0xff}}},\n    {{{ -1586,    102,   1382}, 0, {  1396,    786}, {0xcc, 0x67, 0xcd, 0xff}}},\n};\n\n// 0x07026C68 - 0x07026D68\nstatic const Vtx inside_castle_seg7_vertex_07026C68[] = {\n    {{{ -1535,    205,   1536}, 0, {  1544,    582}, {0x00, 0x69, 0xba, 0xff}}},\n    {{{ -1433,    102,   1382}, 0, {  1692,    786}, {0x00, 0x69, 0xba, 0xff}}},\n    {{{ -1586,    102,   1382}, 0, {  1396,    786}, {0x00, 0x69, 0xba, 0xff}}},\n    {{{ -1586,      0,   1382}, 0, {  1396,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1433,    102,   1382}, 0, {  1692,    786}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1433,      0,   1382}, 0, {  1692,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1535,    205,   1536}, 0, {  1852,    582}, {0x45, 0x67, 0xe9, 0xff}}},\n    {{{ -1381,    102,   1536}, 0, {  2012,    786}, {0x45, 0x67, 0xe9, 0xff}}},\n    {{{ -1433,    102,   1382}, 0, {  1692,    786}, {0x45, 0x67, 0xe9, 0xff}}},\n    {{{ -1433,      0,   1382}, 0, {  1692,    990}, {0x78, 0x00, 0xd8, 0xff}}},\n    {{{ -1433,    102,   1382}, 0, {  1692,    786}, {0x78, 0x00, 0xd8, 0xff}}},\n    {{{ -1381,    102,   1536}, 0, {  2012,    786}, {0x78, 0x00, 0xd8, 0xff}}},\n    {{{ -1381,      0,   1536}, 0, {  2012,    990}, {0x78, 0x00, 0xd8, 0xff}}},\n    {{{  -665,      0,   1536}, 0, {  2012,    990}, {0x88, 0x00, 0xd8, 0xff}}},\n    {{{  -665,    102,   1536}, 0, {  2012,    786}, {0x88, 0x00, 0xd8, 0xff}}},\n    {{{  -613,    102,   1382}, 0, {  1692,    786}, {0x88, 0x00, 0xd8, 0xff}}},\n};\n\n// 0x07026D68 - 0x07026E68\nstatic const Vtx inside_castle_seg7_vertex_07026D68[] = {\n    {{{  -665,      0,   1536}, 0, {  2012,    990}, {0x88, 0x00, 0xd8, 0xff}}},\n    {{{  -613,    102,   1382}, 0, {  1692,    786}, {0x88, 0x00, 0xd8, 0xff}}},\n    {{{  -613,      0,   1382}, 0, {  1692,    990}, {0x88, 0x00, 0xd8, 0xff}}},\n    {{{ -1757,      0,   -733}, 0, {   784,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1433,      0,   -409}, 0, {  1704,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1433,    256,   -409}, 0, {  1704,    478}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -613,      0,   1382}, 0, {  1692,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -613,    102,   1382}, 0, {  1692,    786}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,    102,   1382}, 0, {  1396,    786}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -613,    102,   1382}, 0, {  1692,    786}, {0xbb, 0x67, 0xe9, 0xff}}},\n    {{{  -665,    102,   1536}, 0, {  2012,    786}, {0xbb, 0x67, 0xe9, 0xff}}},\n    {{{  -511,    205,   1536}, 0, {  1852,    582}, {0xbb, 0x67, 0xe9, 0xff}}},\n    {{{  -460,    102,   1382}, 0, {  1396,    786}, {0x34, 0x67, 0xcd, 0xff}}},\n    {{{  -511,    205,   1536}, 0, {  1320,    582}, {0x34, 0x67, 0xcd, 0xff}}},\n    {{{  -409,    102,   1434}, 0, {  1244,    786}, {0x34, 0x67, 0xcd, 0xff}}},\n    {{{  -460,      0,   1382}, 0, {  1396,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07026E68 - 0x07026F48\nstatic const Vtx inside_castle_seg7_vertex_07026E68[] = {\n    {{{  -460,      0,   1382}, 0, {  1396,    990}, {0x5a, 0x00, 0xa8, 0xff}}},\n    {{{  -460,    102,   1382}, 0, {  1396,    786}, {0x5a, 0x00, 0xa8, 0xff}}},\n    {{{  -409,    102,   1434}, 0, {  1244,    786}, {0x5a, 0x00, 0xa8, 0xff}}},\n    {{{  -460,    102,   1382}, 0, {  1396,    786}, {0x00, 0x69, 0xba, 0xff}}},\n    {{{  -613,    102,   1382}, 0, {  1692,    786}, {0x00, 0x69, 0xba, 0xff}}},\n    {{{  -511,    205,   1536}, 0, {  1544,    582}, {0x00, 0x69, 0xba, 0xff}}},\n    {{{  -409,      0,   1434}, 0, {  1244,    990}, {0x5a, 0x00, 0xa8, 0xff}}},\n    {{{ -1757,    256,   -733}, 0, {   784,    480}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1757,      0,   -733}, 0, {   784,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1433,    256,   -409}, 0, {  1704,    478}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   512,      0,   -101}, 0, {  1808,    990}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{   156,      0,    253}, 0, {  2516,    990}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{   156,     26,    253}, 0, {  2516,    938}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{ -1433,    512,   -409}, 0, {  1704,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07026F48 - 0x07027048\nstatic const Vtx inside_castle_seg7_vertex_07026F48[] = {\n    {{{  -613,    256,   -409}, 0, {     0,    478}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -289,      0,   -733}, 0, {  1048,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -289,    256,   -733}, 0, {  1048,    480}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -613,    512,   -409}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -613,      0,   -409}, 0, {     0,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   512,      0,   -101}, 0, {  1808,    990}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{   410,    205,      0}, 0, {  2012,    582}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{   512,    205,   -101}, 0, {  1808,    582}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{   156,     26,    253}, 0, {  2516,    938}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{   512,      0,   -101}, 0, {  1808,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,    205,   -101}, 0, {  1808,    582}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,    205,  -1023}, 0, {     0,    582}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,      0,  -1023}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2559,      0,  -1023}, 0, {  2012,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2559,    205,   -101}, 0, {   172,    582}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2559,      0,   -101}, 0, {   172,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07027048 - 0x07027138\nstatic const Vtx inside_castle_seg7_vertex_07027048[] = {\n    {{{ -2559,      0,  -1023}, 0, {  2012,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2559,    205,  -1023}, 0, {  2012,    582}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2559,    205,   -101}, 0, {   172,    582}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2559,      0,   -101}, 0, {   172,    990}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{ -2559,    205,   -101}, 0, {   172,    582}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{ -2457,    205,      0}, 0, {     0,    582}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{ -2203,     26,    253}, 0, {  -532,    938}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{ -2203,      0,    253}, 0, {  -532,    990}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{   614,    512,  -1023}, 0, {  1196,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   614,    205,  -1023}, 0, {  1196,    582}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   819,    205,  -1228}, 0, {  1604,    582}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   819,    512,  -1228}, 0, {  1604,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   333,    256,  -1074}, 0, {   632,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   333,      0,  -1023}, 0, {   632,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   333,    256,  -1023}, 0, {   632,    478}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07027138 - 0x07027228\nstatic const Vtx inside_castle_seg7_vertex_07027138[] = {\n    {{{   333,    256,  -1023}, 0, {   632,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   614,    512,  -1023}, 0, {  1196,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,    512,  -1023}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   614,      0,  -1023}, 0, {  1196,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   333,      0,  -1023}, 0, {   632,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,      0,  -1023}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   179,      0,  -1023}, 0, {   324,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   179,    256,  -1023}, 0, {   324,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   333,    256,  -1074}, 0, {   632,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   333,      0,  -1074}, 0, {   632,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   333,      0,  -1023}, 0, {   632,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   179,    256,  -1023}, 0, {   324,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   179,      0,  -1074}, 0, {   324,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   179,    256,  -1074}, 0, {   324,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   179,      0,  -1023}, 0, {   324,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07027228 - 0x07027308\nstatic const Vtx inside_castle_seg7_vertex_07027228[] = {\n    {{{  -255,    512,   -767}, 0, {  1160,      0}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{  -180,    256,   -842}, 0, {  1408,    480}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{     0,      0,  -1023}, 0, {  2012,    990}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{  -255,    512,   -767}, 0, {  1160,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{     0,      0,  -1023}, 0, {  2012,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{     0,    512,  -1023}, 0, {  2012,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -325,    256,   -770}, 0, {  1048,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -180,    256,   -842}, 0, {  1408,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -289,    256,   -733}, 0, {  1048,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -216,    256,   -878}, 0, {  1408,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -180,      0,   -842}, 0, {  1408,    990}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{  -289,    256,   -733}, 0, {  1048,    480}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -180,    256,   -842}, 0, {  1408,    480}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -613,    512,   -409}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07027308 - 0x070273E8\nstatic const Vtx inside_castle_seg7_vertex_07027308[] = {\n    {{{   156,     26,    253}, 0, {  2516,    938}, {0xd7, 0x71, 0x26, 0xff}}},\n    {{{   174,     26,    272}, 0, {  2552,    938}, {0xd7, 0x71, 0x26, 0xff}}},\n    {{{   428,    205,     18}, 0, {  2048,    582}, {0xd7, 0x71, 0x26, 0xff}}},\n    {{{   156,     26,    253}, 0, {  2516,    938}, {0xd8, 0x71, 0x28, 0xff}}},\n    {{{   428,    205,     18}, 0, {  2048,    582}, {0xd8, 0x71, 0x28, 0xff}}},\n    {{{   410,    205,      0}, 0, {  2012,    582}, {0xd8, 0x71, 0x28, 0xff}}},\n    {{{   428,    179,     18}, 0, {  2048,    632}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   428,    205,     18}, 0, {  2048,    582}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   174,     26,    272}, 0, {  2552,    938}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   174,      0,    272}, 0, {  2552,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2221,      0,    272}, 0, {  -568,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2475,    205,     18}, 0, {   -64,    582}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2475,    179,     18}, 0, {   -64,    632}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2221,     26,    272}, 0, {  -568,    938}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x070273E8 - 0x070274C8\nstatic const Vtx inside_castle_seg7_vertex_070273E8[] = {\n    {{{ -2457,    205,      0}, 0, {     0,    582}, {0x28, 0x71, 0x28, 0xff}}},\n    {{{ -2475,    205,     18}, 0, {   -64,    582}, {0x28, 0x71, 0x28, 0xff}}},\n    {{{ -2221,     26,    272}, 0, {  -568,    938}, {0x28, 0x71, 0x28, 0xff}}},\n    {{{ -2457,    205,      0}, 0, {     0,    582}, {0x29, 0x71, 0x27, 0xff}}},\n    {{{ -2221,     26,    272}, 0, {  -568,    938}, {0x29, 0x71, 0x27, 0xff}}},\n    {{{ -2203,     26,    253}, 0, {  -532,    938}, {0x29, 0x71, 0x27, 0xff}}},\n    {{{ -2203,     26,    253}, 0, {  -532,    938}, {0x5c, 0x00, 0x57, 0xff}}},\n    {{{ -2221,     26,    272}, 0, {  -568,    938}, {0x5c, 0x00, 0x57, 0xff}}},\n    {{{ -2221,      0,    272}, 0, {  -568,    990}, {0x5c, 0x00, 0x57, 0xff}}},\n    {{{ -2203,      0,    253}, 0, {  -532,    990}, {0x5c, 0x00, 0x57, 0xff}}},\n    {{{   156,      0,    253}, 0, {  2516,    990}, {0xa4, 0x00, 0x57, 0xff}}},\n    {{{   174,     26,    272}, 0, {  2552,    938}, {0xa4, 0x00, 0x57, 0xff}}},\n    {{{   156,     26,    253}, 0, {  2516,    938}, {0xa4, 0x00, 0x57, 0xff}}},\n    {{{   174,      0,    272}, 0, {  2552,    990}, {0xa4, 0x00, 0x57, 0xff}}},\n};\n\n// 0x070274C8 - 0x070275C8\nstatic const Vtx inside_castle_seg7_vertex_070274C8[] = {\n    {{{ -2047,    512,  -1023}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2047,      0,  -1023}, 0, {     0,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1866,    256,   -842}, 0, {   480,    480}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1866,      0,   -842}, 0, {   480,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1757,    256,   -733}, 0, {   784,    480}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1757,    256,   -733}, 0, {   784,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1866,    256,   -842}, 0, {   480,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1830,    256,   -878}, 0, {   480,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1433,    512,   -409}, 0, {  1704,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1075,    461,   -153}, 0, {  1704,     70}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1024,    461,   -153}, 0, {  1704,     70}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1024,    461,   -306}, 0, {  1400,     70}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   179,    256,  -1074}, 0, {   324,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   333,    256,  -1074}, 0, {   632,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   333,    256,  -1023}, 0, {   632,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1075,    461,   -306}, 0, {  1400,     70}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x070275C8 - 0x070276A8\nstatic const Vtx inside_castle_seg7_vertex_070275C8[] = {\n    {{{  1075,    205,   -153}, 0, {  1704,    582}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1024,    461,   -153}, 0, {  1704,     70}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1075,    461,   -153}, 0, {  1704,     70}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1024,    205,   -153}, 0, {  1704,    582}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1075,    461,   -306}, 0, {  1400,     70}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1024,    461,   -306}, 0, {  1400,     70}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1024,    205,   -306}, 0, {  1400,    582}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1075,    205,   -306}, 0, {  1400,    582}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   179,    256,  -1074}, 0, {   324,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   333,    256,  -1023}, 0, {   632,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   179,    256,  -1023}, 0, {   324,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2661,    512,  -1023}, 0, {   896,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2661,      0,  -1023}, 0, {   896,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2380,    256,  -1023}, 0, {  1408,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070276A8 - 0x07027798\nstatic const Vtx inside_castle_seg7_vertex_070276A8[] = {\n    {{{ -2226,    256,  -1023}, 0, {  1688,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2380,    256,  -1074}, 0, {  1408,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2226,    256,  -1074}, 0, {  1688,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2380,    256,  -1023}, 0, {  1408,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2380,    256,  -1023}, 0, {  1408,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2380,      0,  -1023}, 0, {  1408,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2380,      0,  -1074}, 0, {  1408,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2380,    256,  -1074}, 0, {  1408,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2226,    256,  -1074}, 0, {  1688,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2226,      0,  -1074}, 0, {  1688,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2226,      0,  -1023}, 0, {  1688,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2226,    256,  -1023}, 0, {  1688,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2661,      0,  -1023}, 0, {   896,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2380,      0,  -1023}, 0, {  1408,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2380,    256,  -1023}, 0, {  1408,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07027798 - 0x07027878\nstatic const Vtx inside_castle_seg7_vertex_07027798[] = {\n    {{{ -2047,    512,  -1023}, 0, {  2012,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2380,    256,  -1023}, 0, {  1408,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2226,    256,  -1023}, 0, {  1688,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2661,    512,  -1023}, 0, {   896,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2047,      0,  -1023}, 0, {  2012,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2226,      0,  -1023}, 0, {  1688,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3122,    205,   -869}, 0, {  1704,    582}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3071,    205,   -869}, 0, {  1704,    582}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3071,    461,   -869}, 0, {  1704,     70}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3122,    461,   -869}, 0, {  1704,     70}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3122,    461,   -716}, 0, {  1400,     70}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3071,    205,   -716}, 0, {  1400,    582}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3122,    205,   -716}, 0, {  1400,    582}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3071,    461,   -716}, 0, {  1400,     70}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07027878 - 0x07027968\nstatic const Vtx inside_castle_seg7_vertex_07027878[] = {\n    {{{ -3122,    461,   -869}, 0, {  1704,     70}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3071,    461,   -716}, 0, {  1400,     70}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3122,    461,   -716}, 0, {  1400,     70}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3071,    461,   -869}, 0, {  1704,     70}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2866,    512,  -1228}, 0, {   376,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2661,    205,  -1023}, 0, {   956,    582}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2661,    512,  -1023}, 0, {   956,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2866,    205,  -1228}, 0, {   376,    582}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -289,    256,   -733}, 0, {  1048,    480}, {0x5b, 0x00, 0xa8, 0xff}}},\n    {{{  -289,      0,   -733}, 0, {  1048,    990}, {0x5b, 0x00, 0xa8, 0xff}}},\n    {{{  -325,    256,   -770}, 0, {  1048,    480}, {0x5b, 0x00, 0xa8, 0xff}}},\n    {{{ -1721,    256,   -770}, 0, {   784,    480}, {0xa5, 0x00, 0xa8, 0xff}}},\n    {{{ -1721,      0,   -770}, 0, {   784,    990}, {0xa5, 0x00, 0xa8, 0xff}}},\n    {{{ -1757,      0,   -733}, 0, {   784,    990}, {0xa5, 0x00, 0xa8, 0xff}}},\n    {{{  -325,      0,   -770}, 0, {  1048,    990}, {0x5b, 0x00, 0xa8, 0xff}}},\n};\n\n// 0x07027968 - 0x07027A48\nstatic const Vtx inside_castle_seg7_vertex_07027968[] = {\n    {{{  -216,    256,   -878}, 0, {  1408,    480}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -216,      0,   -878}, 0, {  1408,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -180,    256,   -842}, 0, {  1408,    480}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -180,      0,   -842}, 0, {  1408,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1866,    256,   -842}, 0, {   480,    480}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1830,      0,   -878}, 0, {   480,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1830,    256,   -878}, 0, {   480,    480}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1866,      0,   -842}, 0, {   480,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1721,    256,   -770}, 0, {   784,    480}, {0xa5, 0x00, 0xa8, 0xff}}},\n    {{{ -1757,      0,   -733}, 0, {   784,    990}, {0xa5, 0x00, 0xa8, 0xff}}},\n    {{{ -1757,    256,   -733}, 0, {   784,    480}, {0xa5, 0x00, 0xa8, 0xff}}},\n    {{{ -1535,    384,   -306}, 0, {  1704,    224}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1535,      0,   -306}, 0, {  1704,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1433,    384,   -204}, 0, {  1992,    224}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07027A48 - 0x07027B28\nstatic const Vtx inside_castle_seg7_vertex_07027A48[] = {\n    {{{ -1757,    256,   -733}, 0, {   784,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1830,    256,   -878}, 0, {   480,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1721,    256,   -770}, 0, {   784,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -613,    512,   -409}, 0, {  2012,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1433,    512,   -409}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1433,    256,   -409}, 0, {     0,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -613,    256,   -409}, 0, {  2012,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1433,    384,   -204}, 0, {     0,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1433,      0,   -204}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1228,      0,   -204}, 0, {   480,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1228,    384,   -204}, 0, {   480,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1535,      0,   -306}, 0, {  1704,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1433,      0,   -204}, 0, {  1992,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1433,    384,   -204}, 0, {  1992,    224}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07027B28 - 0x07027C28\nstatic const Vtx inside_castle_seg7_vertex_07027B28[] = {\n    {{{  -511,    384,   -306}, 0, {     0,    224}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -511,      0,   -511}, 0, {   308,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -511,    384,   -511}, 0, {   308,    224}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1535,    384,   -511}, 0, {  1412,    224}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1535,      0,   -306}, 0, {  1704,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1535,    384,   -306}, 0, {  1704,    224}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1535,      0,   -511}, 0, {  1412,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -818,    384,   -204}, 0, {  1500,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -818,      0,   -204}, 0, {  1500,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -613,      0,   -204}, 0, {  2012,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -613,    384,   -204}, 0, {  2012,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -613,    384,   -204}, 0, {  -368,    224}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -511,      0,   -306}, 0, {     0,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -511,    384,   -306}, 0, {     0,    224}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -511,      0,   -306}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -613,      0,   -204}, 0, {  -368,    990}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07027C28 - 0x07027D28\nstatic const Vtx inside_castle_seg7_vertex_07027C28[] = {\n    {{{  -869,      0,    154}, 0, {   784,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -818,      0,    154}, 0, {   784,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -818,     51,    154}, 0, {   784,    888}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,     51,    154}, 0, {   784,    888}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -818,      0,    154}, 0, {   784,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -818,      0,   -460}, 0, {  2012,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -818,    512,   -460}, 0, {  2012,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -818,    512,   -306}, 0, {  1704,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -818,     51,    154}, 0, {   784,    888}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -869,     51,    154}, 0, {   784,    888}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{  -818,     51,    154}, 0, {   784,    888}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{  -818,    512,   -306}, 0, {  1704,      0}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{  -869,    512,   -306}, 0, {  1704,      0}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -1228,      0,    154}, 0, {   784,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,      0,    154}, 0, {   784,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,     51,    154}, 0, {   784,    888}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07027D28 - 0x07027DE8\nstatic const Vtx inside_castle_seg7_vertex_07027D28[] = {\n    {{{ -1228,      0,    154}, 0, {   784,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,     51,    154}, 0, {   784,    888}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1228,     51,    154}, 0, {   784,    888}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1228,    512,   -460}, 0, {  2012,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1228,      0,   -460}, 0, {  2012,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1228,      0,    154}, 0, {   784,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1228,     51,    154}, 0, {   784,    888}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -1177,     51,    154}, 0, {   784,    888}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -1177,    512,   -306}, 0, {  1704,      0}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -1228,    512,   -306}, 0, {  1704,      0}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -1228,     51,    154}, 0, {   784,    888}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1228,    512,   -306}, 0, {  1704,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07027DE8 - 0x07028418\nstatic const Gfx inside_castle_seg7_dl_07027DE8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_07023FE0.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07023FE0.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07024028, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07024118, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07024208, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070242F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070243E8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070244D8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070245C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070246B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070247A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07024898, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07024988, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_07023FF8.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07023FF8.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_070249C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07024AB8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07024BA8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07024C98, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07024D88, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 0,  2,  7, 0x0,  0,  7,  9, 0x0),\n    gsSP2Triangles( 0, 10,  1, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07024E78, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  5,  9,  8, 0x0),\n    gsSP2Triangles( 4, 10,  7, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07024F68, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9,  5, 0x0,  8, 10,  6, 0x0),\n    gsSP2Triangles(11, 12,  7, 0x0,  4, 13, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07025048, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  2,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  3, 15,  4, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07025148, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07025238, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07025328, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07025418, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07025508, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07028418 - 0x070286C0\nstatic const Gfx inside_castle_seg7_dl_07028418[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07025588, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 10, 0x0, 12, 10,  9, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07025668, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  5,  8, 0x0),\n    gsSP2Triangles( 9,  7,  8, 0x0,  9, 10,  7, 0x0),\n    gsSP2Triangles(11,  8, 12, 0x0, 11,  9,  8, 0x0),\n    gsSP2Triangles( 0,  2, 13, 0x0, 14, 15, 11, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07025768, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(12, 10, 11, 0x0,  4, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07025858, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07025948, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07025A38, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07025B38, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  0,  9,  1, 0x0),\n    gsSP2Triangles( 3, 10,  4, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0, 11, 15, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07025C38, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 10, 12, 11, 0x0),\n    gsSP2Triangles(12, 13, 11, 0x0, 13, 14, 11, 0x0),\n    gsSP1Triangle( 9, 11, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07025D38, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  5,  9,  6, 0x0),\n    gsSP1Triangle( 5, 10,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070286C0 - 0x070287C0\nstatic const Gfx inside_castle_seg7_dl_070286C0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07025DE8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0,  3, 11,  4, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07025EE8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  3,  4, 11, 0x0),\n    gsSP2Triangles( 3, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07025FE8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070260C8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070287C0 - 0x07028A38\nstatic const Gfx inside_castle_seg7_dl_070287C0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_07024010.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07024010.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07026108, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_07023FF8.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07023FF8.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07026188, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 11, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07026278, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07026358, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07026448, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07026538, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07026638, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07026738, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07026818, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 15,  9, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07026918, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle(10, 11, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07028A38 - 0x07028FD0\nstatic const Gfx inside_castle_seg7_dl_07028A38[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_07024010.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07024010.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_070269E8, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  9, 0x0,  5,  9,  6, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_07023FF8.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07023FF8.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07026A88, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07026B68, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07026C68, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07026D68, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0,  6,  8, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07026E68, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  2,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13,  7,  9, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07026F48, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07027048, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  3,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07027138, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  2,  5,  6, 0x0),\n    gsSP2Triangles( 2,  6,  7, 0x0,  2,  7,  0, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07027228, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 1, 10,  2, 0x0,  3, 11, 12, 0x0),\n    gsSP1Triangle( 3, 13, 11, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07027308, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070273E8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070274C8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  0,  4, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0,  9, 11, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070275C8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070276A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07027798, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  2,  5,  4, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07027878, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 9, 14, 10, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07027968, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07027A48, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07027B28, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles( 0, 14,  1, 0x0, 11, 15, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07027C28, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 4,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07027D28, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 3,  5, 10, 0x0,  3, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07028FD0 - 0x07029078\nconst Gfx inside_castle_seg7_dl_07028FD0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07027DE8),\n    gsSPDisplayList(inside_castle_seg7_dl_07028418),\n    gsSPDisplayList(inside_castle_seg7_dl_070286C0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_070287C0),\n    gsSPDisplayList(inside_castle_seg7_dl_07028A38),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/1/20/model.inc.c",
    "content": "// 0x070379F8 - 0x07037A10\nstatic const Lights1 inside_castle_seg7_lights_070379F8 = gdSPDefLights1(\n    0x5f, 0x5f, 0x5f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07037A10 - 0x07037B10\nstatic const Vtx inside_castle_seg7_vertex_07037A10[] = {\n    {{{  4301,   1229,   -716}, 0, {  1204,   2804}, {0xbf, 0x9b, 0x26, 0xff}}},\n    {{{  3789,   1638,   -504}, 0, {  1304,   2510}, {0xd3, 0x8b, 0x0b, 0xff}}},\n    {{{  3065,   1638,  -1228}, 0, {  1046,   2070}, {0xe9, 0x8b, 0x28, 0xff}}},\n    {{{  1229,   1229,    256}, 0, {  1688,   1030}, {0x41, 0x9b, 0xda, 0xff}}},\n    {{{  1741,   1638,     44}, 0, {  1588,   1324}, {0x19, 0x84, 0xfa, 0xff}}},\n    {{{  2465,   1638,    768}, 0, {  1846,   1764}, {0x1d, 0x90, 0xce, 0xff}}},\n    {{{  1229,   1229,   -716}, 0, {  1310,   1006}, {0x49, 0x9b, 0x13, 0xff}}},\n    {{{  1741,   1638,   -504}, 0, {  1374,   1312}, {0x32, 0x90, 0x1d, 0xff}}},\n    {{{  3789,   1638,     44}, 0, {  1518,   2522}, {0xdc, 0x88, 0xf2, 0xff}}},\n    {{{  3065,   1638,    768}, 0, {  1826,   2114}, {0xed, 0x8d, 0xd0, 0xff}}},\n    {{{  2465,   1638,  -1228}, 0, {  1068,   1718}, {0x0b, 0x8b, 0x2d, 0xff}}},\n    {{{  2253,   1229,  -1740}, 0, {   874,   1582}, {0x26, 0x9b, 0x41, 0xff}}},\n    {{{  3277,   1229,  -1740}, 0, {   840,   2182}, {0xed, 0x9b, 0x49, 0xff}}},\n    {{{  2253,   1229,   1280}, 0, {  2054,   1652}, {0x13, 0x9b, 0xb7, 0xff}}},\n    {{{  4301,   1229,    256}, 0, {  1584,   2826}, {0xbb, 0x9a, 0xe4, 0xff}}},\n    {{{  3277,   1229,   1280}, 0, {  2018,   2250}, {0xe4, 0x9a, 0xbb, 0xff}}},\n};\n\n// 0x07037B10 - 0x07037BF8\nstatic const Gfx inside_castle_seg7_dl_07037B10[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_070379F8.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_070379F8.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07037A10, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  4,  3, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 4,  8,  9, 0x0,  4,  1,  8, 0x0),\n    gsSP2Triangles( 4,  2,  1, 0x0,  4, 10,  2, 0x0),\n    gsSP2Triangles( 4,  7, 10, 0x0,  4,  9,  5, 0x0),\n    gsSP2Triangles(11,  7,  6, 0x0, 11, 10,  7, 0x0),\n    gsSP2Triangles(12, 10, 11, 0x0, 12,  2, 10, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0,  3,  5, 13, 0x0),\n    gsSP2Triangles(14,  1,  0, 0x0, 14,  8,  1, 0x0),\n    gsSP2Triangles( 9,  8, 14, 0x0, 13,  5,  9, 0x0),\n    gsSP2Triangles(15,  9, 14, 0x0, 13,  9, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07037BF8 - 0x07037C58\nconst Gfx inside_castle_seg7_dl_07037BF8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07037B10),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/1/21/model.inc.c",
    "content": "// 0x07037C58 - 0x07037C70\nstatic const Lights1 inside_castle_seg7_lights_07037C58 = gdSPDefLights1(\n    0x37, 0x37, 0x37,\n    0xdd, 0xdd, 0xdd, 0x28, 0x28, 0x28\n);\n\n// 0x07037C70 - 0x07037D70\nstatic const Vtx inside_castle_seg7_vertex_07037C70[] = {\n    {{{  3422,    768,   1208}, 0, {   860,    578}, {0x37, 0x37, 0x37, 0xff}}},\n    {{{  4146,    358,    484}, 0, {  1346,    778}, {0x37, 0x37, 0x37, 0xff}}},\n    {{{  3422,    358,   1208}, 0, {   778,    706}, {0x37, 0x37, 0x37, 0xff}}},\n    {{{  3422,    768,  -1667}, 0, {   860,    578}, {0x37, 0x37, 0x37, 0xff}}},\n    {{{  3422,    358,  -1667}, 0, {   778,    706}, {0x37, 0x37, 0x37, 0xff}}},\n    {{{  4146,    358,   -943}, 0, {  1346,    778}, {0x37, 0x37, 0x37, 0xff}}},\n    {{{  4146,    768,   -943}, 0, {  1428,    648}, {0x37, 0x37, 0x37, 0xff}}},\n    {{{  3174,    768,  -1791}, 0, {   666,    554}, {0x37, 0x37, 0x37, 0xff}}},\n    {{{  2355,    768,  -1791}, 0, {    22,    474}, {0x37, 0x37, 0x37, 0xff}}},\n    {{{  2355,    358,  -1791}, 0, {   -58,    604}, {0x37, 0x37, 0x37, 0xff}}},\n    {{{  3174,    358,  -1791}, 0, {   584,    682}, {0x37, 0x37, 0x37, 0xff}}},\n    {{{  2355,    768,   1331}, 0, {    22,    474}, {0x37, 0x37, 0x37, 0xff}}},\n    {{{  3174,    358,   1331}, 0, {   584,    682}, {0x37, 0x37, 0x37, 0xff}}},\n    {{{  2355,    358,   1331}, 0, {   -58,    604}, {0x37, 0x37, 0x37, 0xff}}},\n    {{{  3174,    768,   1331}, 0, {   666,    554}, {0x37, 0x37, 0x37, 0xff}}},\n    {{{  4146,    768,    484}, 0, {  1428,    648}, {0x37, 0x37, 0x37, 0xff}}},\n};\n\n// 0x07037D70 - 0x07037DE8\nstatic const Gfx inside_castle_seg7_dl_07037D70[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_0900B000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_07037C58.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07037C58.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07037C70, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07037DE8 - 0x07037E38\nconst Gfx inside_castle_seg7_dl_07037DE8[] = {\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetEnvColor(255, 255, 255, 100),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(inside_castle_seg7_dl_07037D70),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/1/22/model.inc.c",
    "content": "static const Vtx dl_castle_aquarium_light_vertex_group_1[] = {\n    {{{  3385,    358,  -1631}, 0, {     0,    536}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  3060,    307,  -1305}, 0, {     0,      0}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  3385,    768,  -1631}, 0, {     0,    990}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  3174,    307,  -1279}, 0, {   990,      0}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  2355,    768,  -1740}, 0, {     0,    990}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  2355,    307,  -1279}, 0, {     0,      0}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  3174,    768,  -1740}, 0, {   990,    990}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  3174,    307,  -1689}, 0, {   990,    422}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  3174,    358,  -1740}, 0, {   990,    536}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  2355,    358,  -1740}, 0, {     0,    536}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  2355,    307,  -1689}, 0, {     0,    422}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  3784,    307,   -581}, 0, {   990,      0}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  4109,    768,   -907}, 0, {   990,    990}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  3385,    358,   1171}, 0, {     0,    536}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  3349,    307,   1135}, 0, {     0,    422}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  4073,    307,    411}, 0, {   990,    422}, {0xbb, 0xc7, 0xff, 0x80}}},\n};\n\nstatic const Vtx dl_castle_aquarium_light_vertex_group_2[] = {\n    {{{  3385,    358,  -1631}, 0, {     0,    536}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  3349,    307,  -1595}, 0, {     0,    422}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  3060,    307,  -1305}, 0, {     0,      0}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  4109,    768,   -907}, 0, {   990,    990}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  3784,    307,   -581}, 0, {   990,      0}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  4073,    307,   -871}, 0, {   990,    422}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  4109,    358,   -907}, 0, {   990,    536}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  3385,    358,   1171}, 0, {     0,    536}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  4073,    307,    411}, 0, {   990,    422}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  4109,    358,    447}, 0, {   990,    536}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  3784,    307,    121}, 0, {   990,      0}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  4109,    768,    447}, 0, {   990,    990}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  2355,    307,   1229}, 0, {     0,    422}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  2355,    358,   1280}, 0, {     0,    536}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  2355,    768,   1280}, 0, {     0,    990}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  3060,    307,    846}, 0, {     0,      0}, {0xbb, 0xc7, 0xff, 0x80}}},\n};\n\nstatic const Vtx dl_castle_aquarium_light_vertex_group_3[] = {\n    {{{  4109,    768,    447}, 0, {   990,    990}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  3060,    307,    846}, 0, {     0,      0}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  3385,    768,   1171}, 0, {     0,    990}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  3385,    358,   1171}, 0, {     0,    536}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  3349,    307,   1135}, 0, {     0,    422}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  3174,    307,   1229}, 0, {   990,    422}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  3174,    358,   1280}, 0, {   990,    536}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  2355,    358,   1280}, 0, {     0,    536}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  3174,    307,    819}, 0, {   990,      0}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  2355,    307,   1229}, 0, {     0,    422}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  3174,    768,   1280}, 0, {   990,    990}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  2355,    768,   1280}, 0, {     0,    990}, {0xbb, 0xc7, 0xff, 0x80}}},\n    {{{  2355,    307,    819}, 0, {     0,      0}, {0xbb, 0xc7, 0xff, 0x80}}},\n};\n\nstatic const Gfx dl_castle_aquarium_light_model[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, texture_castle_light),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(dl_castle_aquarium_light_vertex_group_1, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  6,  3, 0x0),\n    gsSP2Triangles( 7,  8,  6, 0x0,  5,  4,  9, 0x0),\n    gsSP2Triangles( 5,  9, 10, 0x0, 10,  9,  8, 0x0),\n    gsSP2Triangles(10,  8,  7, 0x0,  2,  1, 11, 0x0),\n    gsSP2Triangles( 2, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(dl_castle_aquarium_light_vertex_group_2, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  6,  1,  0, 0x0),\n    gsSP2Triangles( 6,  5,  1, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9,  8, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 11, 10, 15, 0x0),\n    gsSPVertex(dl_castle_aquarium_light_vertex_group_3, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  6,  5, 0x0,  5,  7,  9, 0x0),\n    gsSP2Triangles( 8, 10,  6, 0x0,  9, 11, 12, 0x0),\n    gsSP2Triangles(12, 10,  8, 0x0, 12, 11, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07038240 - 0x070382B0\nconst Gfx dl_castle_aquarium_light[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(dl_castle_aquarium_light_model),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/1/23/model.inc.c",
    "content": "// 0x070382B0 - 0x070382C8\nstatic const Lights1 inside_castle_seg7_lights_070382B0 = gdSPDefLights1(\n    0x5f, 0x5f, 0x5f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x070382C8 - 0x07038308\nstatic const Vtx inside_castle_seg7_vertex_070382C8[] = {\n    {{{  1616,    512,  -1089}, 0, {     0,      0}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{  1616,    358,  -1089}, 0, {     0,    990}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{  1725,    358,  -1197}, 0, {   990,    990}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{  1725,    512,  -1197}, 0, {   990,      0}, {0x59, 0x00, 0x5a, 0xff}}},\n};\n\n// 0x07038308 - 0x07038350\nstatic const Gfx inside_castle_seg7_dl_07038308[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_070382B0.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_070382B0.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_070382C8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07038350 - 0x070383C0\nconst Gfx inside_castle_seg7_dl_07038350[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07038308),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/1/24/model.inc.c",
    "content": "// 0x070383C0 - 0x070383D8\nstatic const Lights1 inside_castle_seg7_lights_070383C0 = gdSPDefLights1(\n    0x52, 0x52, 0x52,\n    0xdd, 0xdd, 0xdd, 0x28, 0x28, 0x28\n);\n\n// 0x070383D8 - 0x070383F0\nstatic const Lights1 inside_castle_seg7_lights_070383D8 = gdSPDefLights1(\n    0x5f, 0x5f, 0x5f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x070383F0 - 0x07038408\nstatic const Lights1 inside_castle_seg7_lights_070383F0 = gdSPDefLights1(\n    0x46, 0x46, 0x46,\n    0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28\n);\n\n// 0x07038408 - 0x070384F8\nstatic const Vtx inside_castle_seg7_vertex_07038408[] = {\n    {{{ -2175,   -101,  -2124}, 0, { -1052,    220}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2431,   -101,  -2124}, 0, {  1502,    220}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2431,    -76,  -2124}, 0, {  1502,     28}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2431,      0,  -2047}, 0, {  1502,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2175,    -25,  -2047}, 0, { -1052,   -862}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2431,    -25,  -2047}, 0, {  1502,   -862}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2175,      0,  -2047}, 0, { -1052,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2175,    -50,  -2073}, 0, { -1052,   -502}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2431,    -25,  -2073}, 0, {  1502,   -694}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2175,    -25,  -2073}, 0, { -1052,   -694}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2431,    -50,  -2073}, 0, {  1502,   -502}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2175,    -76,  -2098}, 0, { -1052,   -140}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2431,    -76,  -2098}, 0, {  1502,   -140}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2431,    -50,  -2098}, 0, {  1502,   -332}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2175,    -50,  -2098}, 0, { -1052,   -332}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070384F8 - 0x070385E8\nstatic const Vtx inside_castle_seg7_vertex_070384F8[] = {\n    {{{ -2175,   -178,  -2201}, 0, { -1052,   1300}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2431,   -153,  -2201}, 0, {  1502,   1108}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2175,   -153,  -2201}, 0, { -1052,   1108}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2175,   -101,  -2124}, 0, { -1052,    220}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2431,    -76,  -2124}, 0, {  1502,     28}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2175,    -76,  -2124}, 0, { -1052,     28}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2175,   -127,  -2149}, 0, { -1052,    580}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2431,   -127,  -2149}, 0, {  1502,    580}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2431,   -101,  -2149}, 0, {  1502,    388}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2175,   -101,  -2149}, 0, { -1052,    388}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2175,   -153,  -2175}, 0, { -1052,    940}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2431,   -127,  -2175}, 0, {  1502,    748}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2175,   -127,  -2175}, 0, { -1052,    748}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2431,   -153,  -2175}, 0, {  1502,    940}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2431,   -178,  -2201}, 0, {  1502,   1300}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070385E8 - 0x07038628\nstatic const Vtx inside_castle_seg7_vertex_070385E8[] = {\n    {{{ -2175,   -204,  -2226}, 0, { -1052,   1660}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2431,   -204,  -2226}, 0, {  1502,   1660}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2431,   -178,  -2226}, 0, {  1502,   1468}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2175,   -178,  -2226}, 0, { -1052,   1468}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07038628 - 0x07038708\nstatic const Vtx inside_castle_seg7_vertex_07038628[] = {\n    {{{ -2175,      0,  -2047}, 0, { -1052,   5076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2431,      0,  -2047}, 0, {   224,   5076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2431,      0,  -1996}, 0, {   224,   4820}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2175,      0,  -1996}, 0, { -1052,   4820}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2453,      0,  -1996}, 0, {   334,   4820}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2585,      0,  -1740}, 0, {   990,   3728}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2585,      0,  -1125}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2021,      0,  -1125}, 0, { -1818,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2021,      0,  -1740}, 0, { -1818,   3728}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2153,      0,  -1996}, 0, { -1162,   4820}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2175,    -25,  -2073}, 0, { -1052,   -694}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2431,    -25,  -2073}, 0, {  1502,   -694}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2175,    -25,  -2047}, 0, { -1052,   -862}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2431,    -25,  -2047}, 0, {  1502,   -862}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07038708 - 0x070387F8\nstatic const Vtx inside_castle_seg7_vertex_07038708[] = {\n    {{{ -2175,   -127,  -2149}, 0, { -1052,    580}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2431,   -127,  -2175}, 0, {  1502,    748}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2431,   -127,  -2149}, 0, {  1502,    580}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2175,    -50,  -2098}, 0, { -1052,   -332}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2431,    -50,  -2098}, 0, {  1502,   -332}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2431,    -50,  -2073}, 0, {  1502,   -502}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2175,    -50,  -2073}, 0, { -1052,   -502}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2175,    -76,  -2124}, 0, { -1052,     28}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2431,    -76,  -2098}, 0, {  1502,   -140}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2175,    -76,  -2098}, 0, { -1052,   -140}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2431,    -76,  -2124}, 0, {  1502,     28}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2175,   -101,  -2149}, 0, { -1052,    388}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2431,   -101,  -2124}, 0, {  1502,    220}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2175,   -101,  -2124}, 0, { -1052,    220}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2431,   -101,  -2149}, 0, {  1502,    388}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070387F8 - 0x070388A8\nstatic const Vtx inside_castle_seg7_vertex_070387F8[] = {\n    {{{ -2175,   -178,  -2226}, 0, { -1052,   1468}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2431,   -178,  -2226}, 0, {  1502,   1468}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2175,   -178,  -2201}, 0, { -1052,   1300}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2175,   -127,  -2175}, 0, { -1052,    748}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2431,   -127,  -2175}, 0, {  1502,    748}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2175,   -127,  -2149}, 0, { -1052,    580}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2175,   -153,  -2175}, 0, { -1052,    940}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2431,   -153,  -2201}, 0, {  1502,   1108}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2431,   -153,  -2175}, 0, {  1502,    940}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2175,   -153,  -2201}, 0, { -1052,   1108}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2431,   -178,  -2201}, 0, {  1502,   1300}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070388A8 - 0x070389A8\nstatic const Vtx inside_castle_seg7_vertex_070388A8[] = {\n    {{{ -2636,   -204,  -2866}, 0, {  2012,   1754}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3097,   -204,  -2866}, 0, {  2012,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2482,   -204,  -2047}, 0, {  6100,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1509,    410,  -1740}, 0, {  4566,  -5908}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3097,    410,  -1740}, 0, { -3352,  -5908}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3097,    410,  -3634}, 0, { -3352,   3544}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1919,    410,  -4351}, 0, {  2522,   7120}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1509,    410,  -3634}, 0, {  4566,   3542}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2687,    410,  -4351}, 0, { -1308,   7120}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2124,   -204,  -2047}, 0, {  6100,   -798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1919,   -204,  -2866}, 0, {  2012,  -1820}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2509,   -204,  -2940}, 0, {  1644,   1122}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2046,   -204,  -2940}, 0, {  1644,  -1188}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1868,   -303,  -3238}, 0, {   154,  -2076}, {0x00, 0x7a, 0xe0, 0xff}}},\n    {{{ -2021,   -237,  -2991}, 0, {  1388,  -1310}, {0x00, 0x7a, 0xe0, 0xff}}},\n    {{{ -1509,   -204,  -2866}, 0, {  2012,  -3864}, {0x00, 0x7a, 0xe0, 0xff}}},\n};\n\n// 0x070389A8 - 0x07038A98\nstatic const Vtx inside_castle_seg7_vertex_070389A8[] = {\n    {{{ -2533,   -237,  -2991}, 0, {  1388,   1244}, {0x00, 0x7a, 0xe0, 0xff}}},\n    {{{ -3097,   -204,  -2866}, 0, {  2012,   4054}, {0x00, 0x7a, 0xe0, 0xff}}},\n    {{{ -2636,   -204,  -2866}, 0, {  2012,   1754}, {0x00, 0x7a, 0xe0, 0xff}}},\n    {{{ -2687,   -303,  -3238}, 0, {   154,   2010}, {0x00, 0x7a, 0xe0, 0xff}}},\n    {{{ -3097,   -409,  -3634}, 0, { -1818,   4054}, {0x00, 0x7a, 0xe0, 0xff}}},\n    {{{ -3097,   -204,  -2866}, 0, {  2012,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2636,   -204,  -1740}, 0, {  7632,   1754}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2482,   -204,  -2047}, 0, {  6100,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2124,   -204,  -2047}, 0, {  6100,   -798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1509,   -204,  -2866}, 0, {  2012,  -3864}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1919,   -204,  -2866}, 0, {  2012,  -1820}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2021,   -237,  -2991}, 0, {  1388,  -1310}, {0x00, 0x7a, 0xe0, 0xff}}},\n    {{{ -1919,   -204,  -2866}, 0, {  2012,  -1820}, {0x00, 0x7a, 0xe0, 0xff}}},\n    {{{ -1509,   -204,  -2866}, 0, {  2012,  -3864}, {0x00, 0x7a, 0xe0, 0xff}}},\n    {{{ -1970,   -204,  -1740}, 0, {  7632,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07038A98 - 0x07038B98\nstatic const Vtx inside_castle_seg7_vertex_07038A98[] = {\n    {{{ -1868,   -303,  -3238}, 0, {   154,  -2076}, {0x00, 0x7a, 0xe0, 0xff}}},\n    {{{ -1509,   -204,  -2866}, 0, {  2012,  -3864}, {0x00, 0x7a, 0xe0, 0xff}}},\n    {{{ -1509,   -409,  -3634}, 0, { -1818,  -3864}, {0x00, 0x7a, 0xe0, 0xff}}},\n    {{{ -2687,   -409,  -3634}, 0, { -1818,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2688,   -409,  -3239}, 0, {   150,   2014}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1867,   -409,  -3239}, 0, {   150,  -2080}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1868,   -409,  -3634}, 0, { -1818,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2533,   -409,  -2991}, 0, {  1388,   1244}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2021,   -409,  -2991}, 0, {  1388,  -1310}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1868,   -409,  -3634}, 0, { -1818,  -2076}, {0x00, 0x7a, 0xe0, 0xff}}},\n    {{{ -2687,   -303,  -3238}, 0, {   154,   2010}, {0x00, 0x7a, 0xe0, 0xff}}},\n    {{{ -2687,   -409,  -3634}, 0, { -1818,   2010}, {0x00, 0x7a, 0xe0, 0xff}}},\n    {{{ -3097,   -409,  -3634}, 0, { -1818,   4054}, {0x00, 0x7a, 0xe0, 0xff}}},\n    {{{ -1509,   -409,  -3634}, 0, { -1818,  -3864}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2687,   -409,  -4351}, 0, { -5396,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3097,   -409,  -3634}, 0, { -1818,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07038B98 - 0x07038C28\nstatic const Vtx inside_castle_seg7_vertex_07038B98[] = {\n    {{{ -1509,   -409,  -3634}, 0, { -1818,  -3864}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1919,   -409,  -4351}, 0, { -5396,  -1820}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2687,   -409,  -4351}, 0, { -5396,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1970,   -204,  -1740}, 0, {  7632,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1509,   -204,  -1740}, 0, {  7632,  -3864}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1509,   -204,  -2866}, 0, {  2012,  -3864}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2636,   -204,  -1740}, 0, {  7632,   1754}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3097,   -204,  -2866}, 0, {  2012,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3097,   -204,  -1740}, 0, {  7632,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07038C28 - 0x07038D28\nstatic const Vtx inside_castle_seg7_vertex_07038C28[] = {\n    {{{ -2021,    307,  -1740}, 0, { -5140,  -2076}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2021,      0,  -1125}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2021,    307,  -1125}, 0, {   990,  -2076}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2021,      0,  -1740}, 0, { -5140,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2585,      0,  -1740}, 0, { -5140,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2585,    307,  -1125}, 0, {   990,  -2076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2585,      0,  -1125}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2585,    307,  -1740}, 0, { -5140,  -2076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2533,   -153,  -2991}, 0, {  5078,  -1564}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2021,   -409,  -2991}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2533,   -409,  -2991}, 0, {  5078,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2021,   -153,  -2991}, 0, {     0,  -1566}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2021,   -153,  -2991}, 0, {     0,  -1566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2046,   -153,  -2940}, 0, {   210,  -1566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1919,   -153,  -2866}, 0, { -1052,  -1566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2533,   -153,  -2991}, 0, {  5078,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07038D28 - 0x07038E08\nstatic const Vtx inside_castle_seg7_vertex_07038D28[] = {\n    {{{ -2687,   -303,  -3238}, 0, {  3918,    -64}, {0x7e, 0xff, 0x00, 0xff}}},\n    {{{ -2688,   -409,  -3239}, 0, {  3908,    990}, {0x7e, 0xff, 0x00, 0xff}}},\n    {{{ -2687,   -409,  -3634}, 0, {     0,    990}, {0x7e, 0xff, 0x00, 0xff}}},\n    {{{ -2509,   -153,  -2940}, 0, {  4836,  -1564}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2046,   -204,  -2940}, 0, {   210,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2046,   -153,  -2940}, 0, {   210,  -1566}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2046,   -153,  -2940}, 0, {   210,  -1566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1959,   -153,  -2834}, 0, {  -656,  -1566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1919,   -153,  -2866}, 0, { -1052,  -1566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2533,   -153,  -2991}, 0, {  5078,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2509,   -153,  -2940}, 0, {  4836,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2596,   -153,  -2834}, 0, {  5704,  -1566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2636,   -153,  -2866}, 0, {  6100,  -1566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2509,   -204,  -2940}, 0, {  4836,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07038E08 - 0x07038EE8\nstatic const Vtx inside_castle_seg7_vertex_07038E08[] = {\n    {{{ -2687,   -303,  -3238}, 0, {  3918,    -64}, {0x6b, 0x00, 0xbd, 0xff}}},\n    {{{ -2533,   -409,  -2991}, 0, {  6386,    990}, {0x6b, 0x00, 0xbd, 0xff}}},\n    {{{ -2688,   -409,  -3239}, 0, {  3908,    990}, {0x6b, 0x00, 0xbd, 0xff}}},\n    {{{ -2533,   -237,  -2991}, 0, {  6386,   -722}, {0x6b, 0x00, 0xbd, 0xff}}},\n    {{{ -2431,   -204,  -2047}, 0, { -1562,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2431,   -204,  -2277}, 0, { -3862,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2431,   -127,  -2277}, 0, { -3862,    224}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2021,   -409,  -2991}, 0, {  6386,    990}, {0x95, 0x00, 0xbe, 0xff}}},\n    {{{ -1868,   -303,  -3238}, 0, {  3918,    -64}, {0x95, 0x00, 0xbe, 0xff}}},\n    {{{ -1867,   -409,  -3239}, 0, {  3908,    990}, {0x95, 0x00, 0xbe, 0xff}}},\n    {{{ -2021,   -237,  -2991}, 0, {  6386,   -722}, {0x95, 0x00, 0xbe, 0xff}}},\n    {{{ -1868,   -409,  -3634}, 0, {     0,    990}, {0x82, 0xff, 0x00, 0xff}}},\n    {{{ -1867,   -409,  -3239}, 0, {  3908,    990}, {0x82, 0xff, 0x00, 0xff}}},\n    {{{ -1868,   -303,  -3238}, 0, {  3918,    -64}, {0x82, 0xff, 0x00, 0xff}}},\n};\n\n// 0x07038EE8 - 0x07038FC8\nstatic const Vtx inside_castle_seg7_vertex_07038EE8[] = {\n    {{{ -2124,   -204,  -2047}, 0, { -1562,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2124,   -127,  -2226}, 0, { -3352,    224}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2124,     51,  -2047}, 0, { -1562,  -1564}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2124,   -127,  -2277}, 0, { -3862,    224}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2124,   -204,  -2277}, 0, { -3862,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2431,   -204,  -2047}, 0, { -1562,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2431,   -127,  -2226}, 0, { -3352,    224}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2431,     51,  -2047}, 0, { -1562,  -1564}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2431,   -127,  -2277}, 0, { -3862,    224}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2482,   -127,  -2277}, 0, { -3862,    224}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2482,   -204,  -2277}, 0, { -3862,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2482,   -204,  -2047}, 0, { -1562,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2482,   -127,  -2226}, 0, { -3352,    224}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2482,     51,  -2047}, 0, { -1562,  -1564}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07038FC8 - 0x070390C8\nstatic const Vtx inside_castle_seg7_vertex_07038FC8[] = {\n    {{{ -2175,   -204,  -2047}, 0, { -1562,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2175,   -127,  -2226}, 0, { -3352,    224}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2175,   -127,  -2277}, 0, { -3862,    224}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2175,   -204,  -2277}, 0, { -3862,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2175,     51,  -2047}, 0, { -1562,  -1564}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2175,     51,  -1996}, 0, { -1052,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2124,     51,  -2047}, 0, { -1562,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2175,     51,  -2047}, 0, { -1562,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2482,     51,  -2047}, 0, { -1562,  -1564}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{ -2636,   -204,  -1740}, 0, {   990,    990}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{ -2636,     51,  -1740}, 0, {   990,  -1564}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{ -2482,   -204,  -2047}, 0, { -1562,    990}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{ -1970,     51,  -1740}, 0, {   990,  -1564}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{ -1970,   -204,  -1740}, 0, {   990,    990}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{ -2124,   -204,  -2047}, 0, { -1562,    990}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{ -2124,     51,  -2047}, 0, { -1562,  -1564}, {0x71, 0x00, 0xc8, 0xff}}},\n};\n\n// 0x070390C8 - 0x070391C8\nstatic const Vtx inside_castle_seg7_vertex_070390C8[] = {\n    {{{ -2175,     51,  -2047}, 0, { -1562,  -1564}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2175,      0,  -1996}, 0, { -1052,  -1054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2175,     51,  -1996}, 0, { -1052,  -1564}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2175,      0,  -2047}, 0, { -1562,  -1054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2175,     51,  -1996}, 0, { -1052,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2153,     51,  -1996}, 0, { -1052,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2124,     51,  -2047}, 0, { -1562,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2431,      0,  -2047}, 0, { -1562,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2431,     51,  -1996}, 0, { -1052,  -1564}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2431,      0,  -1996}, 0, { -1052,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2431,     51,  -2047}, 0, { -1562,  -1564}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2482,     51,  -2047}, 0, { -1562,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2431,     51,  -1996}, 0, { -1052,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2431,     51,  -2047}, 0, { -1562,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2453,     51,  -1996}, 0, { -1052,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2636,     51,  -1740}, 0, {   990,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070391C8 - 0x070392C8\nstatic const Vtx inside_castle_seg7_vertex_070391C8[] = {\n    {{{ -2585,     51,  -1740}, 0, {  1132,  -1564}, {0x70, 0x00, 0x3a, 0xff}}},\n    {{{ -2453,      0,  -1996}, 0, { -1052,  -1054}, {0x70, 0x00, 0x3a, 0xff}}},\n    {{{ -2453,     51,  -1996}, 0, { -1052,  -1564}, {0x70, 0x00, 0x3a, 0xff}}},\n    {{{ -2636,     51,  -1740}, 0, {   990,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2585,     51,  -1740}, 0, {  1132,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2453,     51,  -1996}, 0, { -1052,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2153,     51,  -1996}, 0, { -1052,  -1564}, {0x90, 0x00, 0x3a, 0xff}}},\n    {{{ -2153,      0,  -1996}, 0, { -1052,  -1054}, {0x90, 0x00, 0x3a, 0xff}}},\n    {{{ -2021,      0,  -1740}, 0, {  1132,  -1054}, {0x90, 0x00, 0x3a, 0xff}}},\n    {{{ -2021,     51,  -1740}, 0, {  1132,  -1564}, {0x90, 0x00, 0x3a, 0xff}}},\n    {{{ -2124,     51,  -2047}, 0, { -1562,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2153,     51,  -1996}, 0, { -1052,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2021,     51,  -1740}, 0, {  1132,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2585,    307,  -1125}, 0, {  4568,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2482,    410,  -1125}, 0, {  3546,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2124,    410,  -1125}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070392C8 - 0x070393C8\nstatic const Vtx inside_castle_seg7_vertex_070392C8[] = {\n    {{{ -2124,     51,  -2047}, 0, { -1562,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2021,     51,  -1740}, 0, {  1132,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1970,     51,  -1740}, 0, {   990,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2585,     51,  -1740}, 0, {  1132,  -1564}, {0x70, 0x00, 0x3a, 0xff}}},\n    {{{ -2585,      0,  -1740}, 0, {  1132,  -1054}, {0x70, 0x00, 0x3a, 0xff}}},\n    {{{ -2453,      0,  -1996}, 0, { -1052,  -1054}, {0x70, 0x00, 0x3a, 0xff}}},\n    {{{ -2585,      0,  -1125}, 0, {  4568,   4054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2585,    307,  -1125}, 0, {  4568,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2380,    256,  -1125}, 0, {  2524,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2226,    256,  -1125}, 0, {   990,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2021,    307,  -1125}, 0, { -1052,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2124,    410,  -1125}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2380,    256,  -1074}, 0, {  -540,  -1566}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2380,      0,  -1074}, 0, {  -542,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2380,      0,  -1125}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2021,      0,  -1125}, 0, { -1052,   4054}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070393C8 - 0x070394C8\nstatic const Vtx inside_castle_seg7_vertex_070393C8[] = {\n    {{{ -2021,      0,  -1125}, 0, { -1052,   4054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2226,      0,  -1125}, 0, {   990,   4054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2226,    256,  -1125}, 0, {   990,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2380,      0,  -1125}, 0, {  2524,   4054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2585,      0,  -1125}, 0, {  4568,   4054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2380,    256,  -1125}, 0, {  2524,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2226,    256,  -1074}, 0, {   990,   1500}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2380,    256,  -1125}, 0, {  2524,   1500}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2226,    256,  -1125}, 0, {   990,   1500}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2380,    256,  -1074}, 0, {  2524,   1500}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2380,    256,  -1074}, 0, {  -540,  -1566}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2380,      0,  -1125}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2380,    256,  -1125}, 0, {     0,  -1566}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2124,    410,  -1740}, 0, {     0,   2010}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2482,    410,  -1125}, 0, {  6100,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2482,    410,  -1740}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x070394C8 - 0x070395B8\nstatic const Vtx inside_castle_seg7_vertex_070394C8[] = {\n    {{{ -2226,    256,  -1125}, 0, {     0,  -1566}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2226,      0,  -1125}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2226,      0,  -1074}, 0, {  -542,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2226,    256,  -1074}, 0, {  -540,  -1566}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2380,      0,  -1074}, 0, {  2524,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2226,      0,  -1074}, 0, {   990,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2226,      0,  -1125}, 0, {   990,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2380,      0,  -1125}, 0, {  2524,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2021,    307,  -1740}, 0, { -5140,  -2076}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{ -2124,    410,  -1125}, 0, {   990,  -3098}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{ -2124,    410,  -1740}, 0, { -5140,  -3098}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{ -2021,    307,  -1125}, 0, {   990,  -2076}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{ -2175,      0,  -1996}, 0, {     0,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2153,     51,  -1996}, 0, {  -252,  -1566}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2175,     51,  -1996}, 0, {     0,  -1566}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070395B8 - 0x07039698\nstatic const Vtx inside_castle_seg7_vertex_070395B8[] = {\n    {{{ -2124,    410,  -1740}, 0, {     0,   2010}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2124,    410,  -1125}, 0, {  6100,   2010}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2482,    410,  -1125}, 0, {  6100,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2482,    410,  -1740}, 0, { -5140,  -3098}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{ -2585,    307,  -1125}, 0, {   990,  -2076}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{ -2585,    307,  -1740}, 0, { -5140,  -2076}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{ -2482,    410,  -1125}, 0, {   990,  -3098}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{ -2453,     51,  -1996}, 0, {  2744,  -1566}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2431,      0,  -1996}, 0, {  2522,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2431,     51,  -1996}, 0, {  2522,  -1566}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2453,      0,  -1996}, 0, {  2744,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2175,      0,  -1996}, 0, {     0,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2153,      0,  -1996}, 0, {  -252,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2153,     51,  -1996}, 0, {  -252,  -1566}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07039698 - 0x07039788\nstatic const Vtx inside_castle_seg7_vertex_07039698[] = {\n    {{{ -2636,   -153,  -2866}, 0, {  7632,  -1566}, {0xb1, 0x00, 0x63, 0xff}}},\n    {{{ -2636,   -204,  -2866}, 0, {  7632,  -1054}, {0xb1, 0x00, 0x63, 0xff}}},\n    {{{ -2596,   -204,  -2834}, 0, {  7958,  -1054}, {0xb1, 0x00, 0x63, 0xff}}},\n    {{{ -1959,   -153,  -2834}, 0, {  7958,  -1566}, {0x4f, 0x00, 0x63, 0xff}}},\n    {{{ -1919,   -204,  -2866}, 0, {  7632,  -1054}, {0x4f, 0x00, 0x63, 0xff}}},\n    {{{ -1919,   -153,  -2866}, 0, {  7632,  -1566}, {0x4f, 0x00, 0x63, 0xff}}},\n    {{{ -1919,   -153,  -2866}, 0, {  7632,  -1566}, {0x62, 0x00, 0xb0, 0xff}}},\n    {{{ -2021,   -237,  -2991}, 0, {  6386,   -722}, {0x62, 0x00, 0xb0, 0xff}}},\n    {{{ -2021,   -153,  -2991}, 0, {  6386,  -1566}, {0x62, 0x00, 0xb0, 0xff}}},\n    {{{ -1919,   -204,  -2866}, 0, {  7632,  -1054}, {0x62, 0x00, 0xb0, 0xff}}},\n    {{{ -1959,   -204,  -2834}, 0, {  7958,  -1054}, {0x4f, 0x00, 0x63, 0xff}}},\n    {{{ -2046,   -153,  -2940}, 0, {  6898,  -1566}, {0x9e, 0x00, 0x50, 0xff}}},\n    {{{ -1959,   -204,  -2834}, 0, {  7958,  -1054}, {0x9e, 0x00, 0x50, 0xff}}},\n    {{{ -1959,   -153,  -2834}, 0, {  7958,  -1566}, {0x9e, 0x00, 0x50, 0xff}}},\n    {{{ -2046,   -204,  -2940}, 0, {  6898,  -1054}, {0x9e, 0x00, 0x50, 0xff}}},\n};\n\n// 0x07039788 - 0x07039868\nstatic const Vtx inside_castle_seg7_vertex_07039788[] = {\n    {{{ -2533,   -153,  -2991}, 0, {  6386,  -1566}, {0x9e, 0x00, 0xb0, 0xff}}},\n    {{{ -2636,   -204,  -2866}, 0, {  7632,  -1054}, {0x9e, 0x00, 0xb0, 0xff}}},\n    {{{ -2636,   -153,  -2866}, 0, {  7632,  -1566}, {0x9e, 0x00, 0xb0, 0xff}}},\n    {{{ -2533,   -237,  -2991}, 0, {  6386,   -722}, {0x9e, 0x00, 0xb0, 0xff}}},\n    {{{ -2431,   -204,  -2277}, 0, {  2524,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2482,   -204,  -2277}, 0, {  3034,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2482,   -127,  -2277}, 0, {  3034,    224}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2636,   -153,  -2866}, 0, {  7632,  -1566}, {0xb1, 0x00, 0x63, 0xff}}},\n    {{{ -2596,   -204,  -2834}, 0, {  7958,  -1054}, {0xb1, 0x00, 0x63, 0xff}}},\n    {{{ -2596,   -153,  -2834}, 0, {  7958,  -1566}, {0xb1, 0x00, 0x63, 0xff}}},\n    {{{ -2596,   -153,  -2834}, 0, {  7958,  -1566}, {0x62, 0x00, 0x50, 0xff}}},\n    {{{ -2509,   -204,  -2940}, 0, {  6898,  -1054}, {0x62, 0x00, 0x50, 0xff}}},\n    {{{ -2509,   -153,  -2940}, 0, {  6898,  -1564}, {0x62, 0x00, 0x50, 0xff}}},\n    {{{ -2596,   -204,  -2834}, 0, {  7958,  -1054}, {0x62, 0x00, 0x50, 0xff}}},\n};\n\n// 0x07039868 - 0x07039948\nstatic const Vtx inside_castle_seg7_vertex_07039868[] = {\n    {{{ -2431,   -127,  -2277}, 0, {  2524,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2482,   -127,  -2226}, 0, {  3034,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2431,   -127,  -2226}, 0, {  2524,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2431,   -127,  -2226}, 0, {  2524,    224}, {0x00, 0x5a, 0xa7, 0xff}}},\n    {{{ -2482,     51,  -2047}, 0, {  3034,  -1566}, {0x00, 0x5a, 0xa7, 0xff}}},\n    {{{ -2431,     51,  -2047}, 0, {  2524,  -1566}, {0x00, 0x5a, 0xa7, 0xff}}},\n    {{{ -2482,   -127,  -2226}, 0, {  3034,    224}, {0x00, 0x5a, 0xa7, 0xff}}},\n    {{{ -2482,   -127,  -2277}, 0, {  3034,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2431,   -204,  -2277}, 0, {  2524,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2482,   -127,  -2277}, 0, {  3034,    224}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2431,   -127,  -2277}, 0, {  2524,    224}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2124,   -127,  -2277}, 0, {  -542,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2175,   -127,  -2226}, 0, {     0,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2124,   -127,  -2226}, 0, {  -542,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07039948 - 0x070399F8\nstatic const Vtx inside_castle_seg7_vertex_07039948[] = {\n    {{{ -2124,   -127,  -2226}, 0, {  -542,    224}, {0x00, 0x5a, 0xa7, 0xff}}},\n    {{{ -2175,     51,  -2047}, 0, {     0,  -1566}, {0x00, 0x5a, 0xa7, 0xff}}},\n    {{{ -2124,     51,  -2047}, 0, {  -542,  -1566}, {0x00, 0x5a, 0xa7, 0xff}}},\n    {{{ -2175,   -127,  -2226}, 0, {     0,    224}, {0x00, 0x5a, 0xa7, 0xff}}},\n    {{{ -2124,   -127,  -2277}, 0, {  -542,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2175,   -127,  -2277}, 0, {     0,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2175,   -127,  -2226}, 0, {     0,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2124,   -204,  -2277}, 0, {  -540,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2175,   -127,  -2277}, 0, {     0,    224}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2124,   -127,  -2277}, 0, {  -542,    224}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2175,   -204,  -2277}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070399F8 - 0x07039AF8\nstatic const Vtx inside_castle_seg7_vertex_070399F8[] = {\n    {{{ -3097,   -409,  -3634}, 0, {  4694,   2012}, {0x6e, 0x00, 0x3f, 0xff}}},\n    {{{ -3046,   -306,  -3723}, 0, {  4916,   1756}, {0x6e, 0x00, 0x3f, 0xff}}},\n    {{{ -3046,    307,  -3723}, 0, {  4916,    224}, {0x6e, 0x00, 0x3f, 0xff}}},\n    {{{ -1509,    410,  -3634}, 0, {  4694,      0}, {0x92, 0x00, 0x3f, 0xff}}},\n    {{{ -1560,   -306,  -3723}, 0, {  4916,   1756}, {0x92, 0x00, 0x3f, 0xff}}},\n    {{{ -1509,   -409,  -3634}, 0, {  4694,   2012}, {0x92, 0x00, 0x3f, 0xff}}},\n    {{{ -1560,    307,  -3723}, 0, {  4916,    224}, {0x92, 0x00, 0x3f, 0xff}}},\n    {{{ -1865,    307,  -4257}, 0, {  6248,    224}, {0x92, 0x00, 0x3f, 0xff}}},\n    {{{ -1919,    410,  -4351}, 0, {  6484,      0}, {0x92, 0x00, 0x3f, 0xff}}},\n    {{{ -1865,    307,  -4257}, 0, {  6248,    224}, {0x92, 0x00, 0x3e, 0xff}}},\n    {{{ -1560,    307,  -3723}, 0, {  4916,    224}, {0x92, 0x00, 0x3e, 0xff}}},\n    {{{ -1509,    410,  -3634}, 0, {  4694,      0}, {0x92, 0x00, 0x3e, 0xff}}},\n    {{{ -1919,   -409,  -4351}, 0, {  6484,   2012}, {0x92, 0x00, 0x3f, 0xff}}},\n    {{{ -1919,   -409,  -4351}, 0, {  6484,   2012}, {0x92, 0x00, 0x3e, 0xff}}},\n    {{{ -1560,   -306,  -3723}, 0, {  4916,   1756}, {0x92, 0x00, 0x3e, 0xff}}},\n    {{{ -1865,   -306,  -4257}, 0, {  6248,   1756}, {0x92, 0x00, 0x3e, 0xff}}},\n};\n\n// 0x07039AF8 - 0x07039BE8\nstatic const Vtx inside_castle_seg7_vertex_07039AF8[] = {\n    {{{ -1919,   -409,  -4351}, 0, {  6484,   2012}, {0x92, 0x00, 0x3f, 0xff}}},\n    {{{ -1865,   -306,  -4257}, 0, {  6248,   1756}, {0x92, 0x00, 0x3f, 0xff}}},\n    {{{ -1865,    307,  -4257}, 0, {  6248,    224}, {0x92, 0x00, 0x3f, 0xff}}},\n    {{{ -3046,   -306,  -3723}, 0, {  4916,   1756}, {0x6e, 0x00, 0x3f, 0xff}}},\n    {{{ -3097,   -409,  -3634}, 0, {  4694,   2012}, {0x6e, 0x00, 0x3f, 0xff}}},\n    {{{ -2687,   -409,  -4351}, 0, {  6484,   2012}, {0x6e, 0x00, 0x3f, 0xff}}},\n    {{{ -3046,    307,  -3723}, 0, {  4916,    224}, {0x6e, 0x00, 0x3f, 0xff}}},\n    {{{ -3097,    410,  -3634}, 0, {  4694,      0}, {0x6e, 0x00, 0x3f, 0xff}}},\n    {{{ -1996,   -306,  -4351}, 0, {  1692,   1756}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2610,   -306,  -4351}, 0, {   160,   1756}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1919,   -409,  -4351}, 0, {  1884,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2741,   -306,  -4257}, 0, {  6248,   1756}, {0x6e, 0x00, 0x3e, 0xff}}},\n    {{{ -3046,   -306,  -3723}, 0, {  4916,   1756}, {0x6e, 0x00, 0x3e, 0xff}}},\n    {{{ -2687,   -409,  -4351}, 0, {  6484,   2012}, {0x6e, 0x00, 0x3e, 0xff}}},\n    {{{ -2687,    410,  -4351}, 0, {  6484,      0}, {0x6e, 0x00, 0x3f, 0xff}}},\n};\n\n// 0x07039BE8 - 0x07039CE8\nstatic const Vtx inside_castle_seg7_vertex_07039BE8[] = {\n    {{{ -2687,    410,  -4351}, 0, {  6484,      0}, {0x6e, 0x00, 0x3e, 0xff}}},\n    {{{ -3046,    307,  -3723}, 0, {  4916,    224}, {0x6e, 0x00, 0x3e, 0xff}}},\n    {{{ -2741,    307,  -4257}, 0, {  6248,    224}, {0x6e, 0x00, 0x3e, 0xff}}},\n    {{{ -2741,   -306,  -4257}, 0, {  6248,   1756}, {0x6e, 0x00, 0x3f, 0xff}}},\n    {{{ -2687,   -409,  -4351}, 0, {  6484,   2012}, {0x6e, 0x00, 0x3f, 0xff}}},\n    {{{ -2687,    410,  -4351}, 0, {  6484,      0}, {0x6e, 0x00, 0x3f, 0xff}}},\n    {{{ -2741,    307,  -4257}, 0, {  6248,    224}, {0x6e, 0x00, 0x3f, 0xff}}},\n    {{{ -2610,   -306,  -4351}, 0, {   160,   1756}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2687,   -409,  -4351}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1919,   -409,  -4351}, 0, {  1884,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2610,    307,  -4351}, 0, {   160,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2687,    410,  -4351}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1970,     51,  -1740}, 0, {  1118,    864}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2021,     51,  -1740}, 0, {  1246,    864}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2021,    307,  -1740}, 0, {  1246,    224}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1919,    410,  -4351}, 0, {  1884,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07039CE8 - 0x07039DC8\nstatic const Vtx inside_castle_seg7_vertex_07039CE8[] = {\n    {{{ -1919,    410,  -4351}, 0, {  1884,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2610,    307,  -4351}, 0, {   160,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1996,    307,  -4351}, 0, {  1692,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1996,   -306,  -4351}, 0, {  1692,   1756}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1919,   -409,  -4351}, 0, {  1884,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2585,    307,  -1740}, 0, {  2650,    224}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2585,     51,  -1740}, 0, {  2650,    864}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2636,     51,  -1740}, 0, {  2778,    864}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3097,    410,  -1740}, 0, {  3928,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2636,   -204,  -1740}, 0, {  2778,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3097,   -204,  -1740}, 0, {  3928,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3097,    410,  -1740}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3097,   -409,  -3634}, 0, {  4694,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3097,    410,  -3634}, 0, {  4694,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07039DC8 - 0x07039EC8\nstatic const Vtx inside_castle_seg7_vertex_07039DC8[] = {\n    {{{ -1509,   -204,  -1740}, 0, {     0,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1970,     51,  -1740}, 0, {  1118,    864}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1509,    410,  -1740}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1970,   -204,  -1740}, 0, {  1118,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2021,    307,  -1740}, 0, {  1246,    224}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2482,    410,  -1740}, 0, {  2396,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2585,    307,  -1740}, 0, {  2650,    224}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3097,    410,  -1740}, 0, {  3928,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2124,    410,  -1740}, 0, {  1500,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3097,    410,  -1740}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3097,   -409,  -1740}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3097,   -409,  -3634}, 0, {  4694,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1509,    410,  -3634}, 0, {  4694,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1509,   -409,  -1740}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1509,    410,  -1740}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1509,   -409,  -3634}, 0, {  4694,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07039EC8 - 0x0703A058\nstatic const Gfx inside_castle_seg7_dl_07039EC8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_070383C0.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_070383C0.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07038408, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070384F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070385E8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_070383D8.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_070383D8.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07038628, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 4,  7,  8, 0x0,  4,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07038708, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070387F8, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  7,  6, 0x0),\n    gsSP1Triangle( 2,  1, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0703A058 - 0x0703A178\nstatic const Gfx inside_castle_seg7_dl_0703A058[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_070388A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  8,  6, 0x0),\n    gsSP2Triangles( 3,  5,  7, 0x0,  9,  0,  2, 0x0),\n    gsSP2Triangles( 9, 10,  0, 0x0, 10, 11,  0, 0x0),\n    gsSP2Triangles(10, 12, 11, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070389A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 0,  3,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 9,  8, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07038A98, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 4,  8,  5, 0x0,  9,  0,  2, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07038B98, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0703A178 - 0x0703A540\nstatic const Gfx inside_castle_seg7_dl_0703A178[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07038C28, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 15, 13, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07038D28, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10,  6, 0x0),\n    gsSP2Triangles(11, 10,  9, 0x0, 12, 11,  9, 0x0),\n    gsSP1Triangle( 3, 13,  4, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07038E08, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07038EE8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(11, 12,  9, 0x0, 11, 13, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07038FC8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070390C8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0, 15, 14, 11, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070391C8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070392C8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles( 7, 10,  9, 0x0,  7, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 10, 15,  9, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070393C8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070394C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070395B8, 14, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  3,  6,  4, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7, 10,  8, 0x0),\n    gsSP1Triangle(11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07039698, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 3, 10,  4, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07039788, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07039868, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  0,  7,  1, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07039948, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle( 7, 10,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0703A540 - 0x0703A6C8\nstatic const Gfx inside_castle_seg7_dl_0703A540[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_0900A000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_070383F0.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_070383F0.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_070399F8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  3,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 12,  5,  4, 0x0),\n    gsSP2Triangles(13, 14, 15, 0x0,  7,  8, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07039AF8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 14,  7,  6, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07039BE8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0,  8,  7, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 15, 11, 10, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07039CE8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 0,  2,  3, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  5,  7, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles( 8,  7, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07039DC8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 4,  8,  2, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0703A6C8 - 0x0703A768\nconst Gfx inside_castle_seg7_dl_0703A6C8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07039EC8),\n    gsSPDisplayList(inside_castle_seg7_dl_0703A058),\n    gsSPDisplayList(inside_castle_seg7_dl_0703A178),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_0703A540),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/1/25/model.inc.c",
    "content": "// 0x0703A768 - 0x0703A780\nstatic const Lights1 inside_castle_seg7_lights_0703A768 = gdSPDefLights1(\n    0x5f, 0x5f, 0x5f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0703A780 - 0x0703A7C0\nstatic const Vtx inside_castle_seg7_vertex_0703A780[] = {\n    {{{ -2354,   -204,  -3001}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2201,   -204,  -3001}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2201,   -357,  -3001}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2354,   -357,  -3001}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0703A7C0 - 0x0703A808\nstatic const Gfx inside_castle_seg7_dl_0703A7C0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_0703A768.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0703A768.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0703A780, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0703A808 - 0x0703A878\nconst Gfx inside_castle_seg7_dl_0703A808[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_0703A7C0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/1/26/model.inc.c",
    "content": "// 0x0703A878 - 0x0703A890\nstatic const Lights1 inside_castle_seg7_lights_0703A878 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0xcc, 0xcc, 0xcc, 0x28, 0x28, 0x28\n);\n\n// 0x0703A890 - 0x0703A8A8\nstatic const Lights1 inside_castle_seg7_lights_0703A890 = gdSPDefLights1(\n    0x5f, 0x5f, 0x5f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0703A8A8 - 0x0703A998\nstatic const Vtx inside_castle_seg7_vertex_0703A8A8[] = {\n    {{{ -1381,   1024,  -1125}, 0, {     0,   3032}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{ -1202,   1178,  -1279}, 0, {   734,   2138}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{  -844,   1178,  -1279}, 0, {   734,    352}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{  -665,   1024,  -1125}, 0, {     0,   -544}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{ -1202,   1178,  -1279}, 0, {   734,   2138}, {0x52, 0xa0, 0x00, 0xff}}},\n    {{{ -1381,   1024,  -1125}, 0, {     0,   3032}, {0x52, 0xa0, 0x00, 0xff}}},\n    {{{ -1381,   1024,  -1535}, 0, {  2012,   3032}, {0x52, 0xa0, 0x00, 0xff}}},\n    {{{ -1202,   1178,  -1279}, 0, {   734,   2138}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1202,   1178,  -1535}, 0, {  2012,   2138}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -844,   1178,  -1535}, 0, {  2012,    352}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -844,   1178,  -1279}, 0, {   734,    352}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1202,   1178,  -1535}, 0, {  2012,   2138}, {0x52, 0xa0, 0x00, 0xff}}},\n    {{{  -665,   1024,  -1125}, 0, {     0,   -544}, {0xae, 0xa0, 0x00, 0xff}}},\n    {{{  -844,   1178,  -1279}, 0, {   734,    352}, {0xae, 0xa0, 0x00, 0xff}}},\n    {{{  -844,   1178,  -1535}, 0, {  2012,    352}, {0xae, 0xa0, 0x00, 0xff}}},\n};\n\n// 0x0703A998 - 0x0703AA98\nstatic const Vtx inside_castle_seg7_vertex_0703A998[] = {\n    {{{ -1381,   1024,  -1535}, 0, {  2012,   3032}, {0x43, 0xb2, 0x48, 0xff}}},\n    {{{ -1279,    922,  -1740}, 0, {  3034,   2522}, {0x43, 0xb2, 0x48, 0xff}}},\n    {{{ -1202,   1178,  -1535}, 0, {  2012,   2138}, {0x43, 0xb2, 0x48, 0xff}}},\n    {{{ -1279,    922,  -1740}, 0, {  3034,   2522}, {0x4c, 0xb4, 0x42, 0xff}}},\n    {{{ -1177,   1024,  -1740}, 0, {  3034,   2010}, {0x4c, 0xb4, 0x42, 0xff}}},\n    {{{ -1202,   1178,  -1535}, 0, {  2012,   2138}, {0x4c, 0xb4, 0x42, 0xff}}},\n    {{{ -1177,   1024,  -1740}, 0, {  3034,   2010}, {0x00, 0x9b, 0x4c, 0xff}}},\n    {{{  -844,   1178,  -1535}, 0, {  2012,    352}, {0x00, 0x9b, 0x4c, 0xff}}},\n    {{{ -1202,   1178,  -1535}, 0, {  2012,   2138}, {0x00, 0x9b, 0x4c, 0xff}}},\n    {{{  -869,   1024,  -1740}, 0, {  3034,    478}, {0x00, 0x9b, 0x4c, 0xff}}},\n    {{{  -665,   1024,  -1125}, 0, {     0,   -544}, {0xae, 0xa0, 0x00, 0xff}}},\n    {{{  -844,   1178,  -1535}, 0, {  2012,    352}, {0xae, 0xa0, 0x00, 0xff}}},\n    {{{  -665,   1024,  -1535}, 0, {  2012,   -544}, {0xae, 0xa0, 0x00, 0xff}}},\n    {{{  -767,    922,  -1740}, 0, {  3034,      0}, {0xbd, 0xb2, 0x48, 0xff}}},\n    {{{  -665,   1024,  -1535}, 0, {  2012,   -544}, {0xbd, 0xb2, 0x48, 0xff}}},\n    {{{  -844,   1178,  -1535}, 0, {  2012,    352}, {0xbd, 0xb2, 0x48, 0xff}}},\n};\n\n// 0x0703AA98 - 0x0703AB88\nstatic const Vtx inside_castle_seg7_vertex_0703AA98[] = {\n    {{{  -869,   1024,  -1740}, 0, {  3034,    478}, {0xb4, 0xb4, 0x42, 0xff}}},\n    {{{  -767,    922,  -1740}, 0, {  3034,      0}, {0xb4, 0xb4, 0x42, 0xff}}},\n    {{{  -844,   1178,  -1535}, 0, {  2012,    352}, {0xb4, 0xb4, 0x42, 0xff}}},\n    {{{ -1279,    922,  -1740}, 0, {  3034,   2522}, {0x59, 0xa7, 0xf2, 0xff}}},\n    {{{ -1279,   1024,  -2354}, 0, {  6100,   2522}, {0x59, 0xa7, 0xf2, 0xff}}},\n    {{{ -1177,   1126,  -2354}, 0, {  6100,   2010}, {0x59, 0xa7, 0xf2, 0xff}}},\n    {{{ -1177,   1024,  -1740}, 0, {  3034,   2010}, {0x59, 0xa7, 0xf2, 0xff}}},\n    {{{ -1177,   1024,  -1740}, 0, {  3034,   2010}, {0x00, 0x83, 0xec, 0xff}}},\n    {{{ -1177,   1126,  -2354}, 0, {  6100,   2010}, {0x00, 0x83, 0xec, 0xff}}},\n    {{{  -869,   1126,  -2354}, 0, {  6100,    480}, {0x00, 0x83, 0xec, 0xff}}},\n    {{{  -869,   1024,  -1740}, 0, {  3034,    478}, {0x00, 0x83, 0xec, 0xff}}},\n    {{{  -869,   1024,  -1740}, 0, {  3034,    478}, {0xa7, 0xa7, 0xf2, 0xff}}},\n    {{{  -869,   1126,  -2354}, 0, {  6100,    480}, {0xa7, 0xa7, 0xf2, 0xff}}},\n    {{{  -767,   1024,  -2354}, 0, {  6100,      0}, {0xa7, 0xa7, 0xf2, 0xff}}},\n    {{{  -767,    922,  -1740}, 0, {  3034,      0}, {0xa7, 0xa7, 0xf2, 0xff}}},\n};\n\n// 0x0703AB88 - 0x0703ABC8\nstatic const Vtx inside_castle_seg7_vertex_0703AB88[] = {\n    {{{ -1381,   1152,  -2866}, 0, { -3096,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -767,   1152,  -2866}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -767,   1152,  -2354}, 0, {     0,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1381,   1152,  -2354}, 0, { -3096,  -1566}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0703ABC8 - 0x0703ACC8\nstatic const Vtx inside_castle_seg7_vertex_0703ABC8[] = {\n    {{{ -1381,    512,  -1125}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -665,    512,  -1535}, 0, { -1052,  -2586}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1381,    512,  -1535}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,    512,  -1740}, 0, { -2074,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -665,    512,  -1125}, 0, {   990,  -2586}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,    512,  -1740}, 0, { -2074,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    512,  -1125}, 0, {   990,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    512,  -1125}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    512,  -1074}, 0, {  1246,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    512,  -1074}, 0, {  1246,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,    614,  -2354}, 0, { -5140,  -2076}, {0x00, 0x7d, 0x14, 0xff}}},\n    {{{ -1177,    614,  -2354}, 0, { -5140,      0}, {0x00, 0x7d, 0x14, 0xff}}},\n    {{{ -1207,    602,  -2282}, 0, { -4778,    118}, {0x00, 0x7d, 0x14, 0xff}}},\n    {{{  -767,    512,  -1740}, 0, { -2074,  -2076}, {0x00, 0x7d, 0x14, 0xff}}},\n    {{{ -1279,    512,  -1740}, 0, { -2074,    480}, {0x00, 0x7d, 0x14, 0xff}}},\n    {{{ -1279,    597,  -2252}, 0, { -4628,    480}, {0x00, 0x7d, 0x14, 0xff}}},\n};\n\n// 0x0703ACC8 - 0x0703ADB8\nstatic const Vtx inside_castle_seg7_vertex_0703ACC8[] = {\n    {{{ -1279,    768,  -2354}, 0, { -1052,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,    742,  -2354}, 0, { -1052,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,    742,  -2866}, 0, { -6162,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,    768,  -2866}, 0, { -6162,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,    742,  -2354}, 0, { -1052,    990}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{ -1279,    717,  -2354}, 0, { -1052,    990}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{ -1146,    717,  -2849}, 0, { -5988,   -332}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{ -1146,    742,  -2849}, 0, { -5988,   -332}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{ -1279,    742,  -2354}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1146,    742,  -2849}, 0, { -5988,   -332}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,    742,  -2866}, 0, { -6162,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,    717,  -2354}, 0, { -1052,    990}, {0x6e, 0x00, 0x3f, 0xff}}},\n    {{{ -1023,    691,  -2798}, 0, { -5478,  -1566}, {0x6e, 0x00, 0x3f, 0xff}}},\n    {{{ -1023,    717,  -2798}, 0, { -5478,  -1566}, {0x6e, 0x00, 0x3f, 0xff}}},\n    {{{ -1279,    691,  -2354}, 0, { -1052,    990}, {0x6e, 0x00, 0x3f, 0xff}}},\n};\n\n// 0x0703ADB8 - 0x0703AEB8\nstatic const Vtx inside_castle_seg7_vertex_0703ADB8[] = {\n    {{{ -1279,    717,  -2354}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,    717,  -2798}, 0, { -5478,  -1566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1146,    717,  -2849}, 0, { -5988,   -332}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,    691,  -2354}, 0, { -1052,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -917,    666,  -2716}, 0, { -4666,  -2624}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -917,    691,  -2716}, 0, { -4666,  -2624}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1279,    666,  -2354}, 0, { -1052,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1279,    640,  -2354}, 0, { -1052,    990}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  -784,    614,  -2487}, 0, { -2374,  -3946}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  -784,    640,  -2487}, 0, { -2374,  -3946}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{ -1279,    691,  -2354}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -917,    691,  -2716}, 0, { -4666,  -2624}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,    691,  -2798}, 0, { -5478,  -1566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,    640,  -2354}, 0, { -1052,    990}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{  -836,    666,  -2610}, 0, { -3606,  -3436}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{ -1279,    666,  -2354}, 0, { -1052,    990}, {0x3f, 0x00, 0x6d, 0xff}}},\n};\n\n// 0x0703AEB8 - 0x0703AFA8\nstatic const Vtx inside_castle_seg7_vertex_0703AEB8[] = {\n    {{{ -1279,    666,  -2354}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -836,    666,  -2610}, 0, { -3606,  -3436}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -917,    666,  -2716}, 0, { -4666,  -2624}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,    640,  -2354}, 0, { -1052,    990}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{  -836,    640,  -2610}, 0, { -3606,  -3436}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{  -836,    666,  -2610}, 0, { -3606,  -3436}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{ -1279,    640,  -2354}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -784,    640,  -2487}, 0, { -2374,  -3946}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -836,    640,  -2610}, 0, { -3606,  -3436}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,    640,  -2354}, 0, { -1052,    990}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{ -1279,    614,  -2354}, 0, { -1052,    990}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  -784,    614,  -2487}, 0, { -2374,  -3946}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  -784,    614,  -2487}, 0, { -2374,  -3946}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,    614,  -2354}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,    614,  -2354}, 0, { -1052,  -4120}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0703AFA8 - 0x0703B0A8\nstatic const Vtx inside_castle_seg7_vertex_0703AFA8[] = {\n    {{{ -1381,    512,  -1125}, 0, {  7122,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1177,    768,  -1125}, 0, {  5078,  -1566}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1177,    512,  -1125}, 0, {  5078,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -869,   1126,  -2354}, 0, {   990,    224}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1177,   1126,  -2354}, 0, {  4056,    224}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1177,   1152,  -2354}, 0, {  4056,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -767,   1152,  -2354}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -767,   1024,  -2354}, 0, {     0,   1244}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -665,    512,  -1125}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -869,    512,  -1125}, 0, {  2012,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -869,    768,  -1125}, 0, {  2012,  -1566}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -665,   1024,  -1125}, 0, {     0,  -4120}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1381,   1024,  -1125}, 0, {  7122,  -4120}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1177,    768,  -1074}, 0, {   480,  -1564}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,    512,  -1074}, 0, {   480,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,    512,  -1125}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0703B0A8 - 0x0703B1A8\nstatic const Vtx inside_castle_seg7_vertex_0703B0A8[] = {\n    {{{  -665,    512,  -1535}, 0, {     0,    990}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  -665,   1024,  -1535}, 0, {     0,  -4120}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  -767,    922,  -1740}, 0, { -2074,  -3098}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  -767,    512,  -1740}, 0, { -2074,    990}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  -665,   1024,  -1535}, 0, {     0,  -4120}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -665,    512,  -1535}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -665,    512,  -1125}, 0, {  4056,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -665,   1024,  -1125}, 0, {  4056,  -4120}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1381,    512,  -1535}, 0, {   990,    990}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{ -1279,    512,  -1740}, 0, {  3034,    990}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{ -1279,    922,  -1740}, 0, {  3034,  -3098}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{ -1381,   1024,  -1535}, 0, {   990,  -4120}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{ -1381,   1024,  -1125}, 0, { -3096,  -4120}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1381,    512,  -1125}, 0, { -3096,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1381,    512,  -1535}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1381,   1024,  -1535}, 0, {   990,  -4120}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0703B1A8 - 0x0703B298\nstatic const Vtx inside_castle_seg7_vertex_0703B1A8[] = {\n    {{{ -1279,    512,  -1740}, 0, {  3034,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,    597,  -2252}, 0, {  8144,    138}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,    922,  -1740}, 0, {  3034,  -3098}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,    768,  -1074}, 0, {   480,  -1564}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,    512,  -1125}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,    768,  -1125}, 0, {     0,  -1564}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -869,    768,  -1125}, 0, {     0,  -1564}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -869,    512,  -1125}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -869,    512,  -1074}, 0, {   480,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -869,    768,  -1074}, 0, {   480,  -1564}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -869,    768,  -1074}, 0, {   480,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1177,    768,  -1125}, 0, {     0,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -869,    768,  -1125}, 0, {     0,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1177,    768,  -1074}, 0, {   480,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1279,   1007,  -2252}, 0, {  8144,  -3950}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0703B298 - 0x0703B398\nstatic const Vtx inside_castle_seg7_vertex_0703B298[] = {\n    {{{ -1279,   1152,  -2866}, 0, { -1052,   2520}, {0xf0, 0x00, 0x7d, 0xff}}},\n    {{{ -1279,    742,  -2866}, 0, { -1052,   6608}, {0xf0, 0x00, 0x7d, 0xff}}},\n    {{{ -1146,    742,  -2849}, 0, {     4,   6608}, {0xf0, 0x00, 0x7d, 0xff}}},\n    {{{ -1146,   1152,  -2849}, 0, {     4,   2520}, {0xf0, 0x00, 0x7d, 0xff}}},\n    {{{ -1146,   1152,  -2849}, 0, {     4,   2520}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{ -1146,    717,  -2849}, 0, {     4,   6864}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{ -1023,    717,  -2798}, 0, {  1236,   6864}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{ -1023,   1152,  -2798}, 0, {  1236,   2520}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{ -1023,   1152,  -2798}, 0, {  1236,   2520}, {0xb3, 0x00, 0x64, 0xff}}},\n    {{{ -1023,    691,  -2798}, 0, {  1236,   7120}, {0xb3, 0x00, 0x64, 0xff}}},\n    {{{  -917,    691,  -2716}, 0, {  2560,   7120}, {0xb3, 0x00, 0x64, 0xff}}},\n    {{{  -917,   1152,  -2716}, 0, {  2560,   2520}, {0xb3, 0x00, 0x64, 0xff}}},\n    {{{  -917,   1152,  -2716}, 0, {  2560,   2520}, {0x9c, 0x00, 0x4d, 0xff}}},\n    {{{  -917,    666,  -2716}, 0, {  2560,   7376}, {0x9c, 0x00, 0x4d, 0xff}}},\n    {{{  -836,    666,  -2610}, 0, {  3882,   7376}, {0x9c, 0x00, 0x4d, 0xff}}},\n    {{{  -836,   1152,  -2610}, 0, {  3882,   2522}, {0x9c, 0x00, 0x4d, 0xff}}},\n};\n\n// 0x0703B398 - 0x0703B458\nstatic const Vtx inside_castle_seg7_vertex_0703B398[] = {\n    {{{  -836,   1152,  -2610}, 0, {  3882,   2522}, {0x8c, 0x00, 0x31, 0xff}}},\n    {{{  -784,    640,  -2487}, 0, {  5114,   7630}, {0x8c, 0x00, 0x31, 0xff}}},\n    {{{  -784,   1152,  -2487}, 0, {  5114,   2522}, {0x8c, 0x00, 0x31, 0xff}}},\n    {{{  -836,    640,  -2610}, 0, {  3882,   7630}, {0x8c, 0x00, 0x31, 0xff}}},\n    {{{  -784,   1152,  -2487}, 0, {  5114,   2522}, {0x83, 0x00, 0x10, 0xff}}},\n    {{{  -767,    614,  -2354}, 0, {  6172,   7886}, {0x83, 0x00, 0x10, 0xff}}},\n    {{{  -767,   1152,  -2354}, 0, {  6172,   2522}, {0x83, 0x00, 0x10, 0xff}}},\n    {{{  -784,    614,  -2487}, 0, {  5114,   7886}, {0x83, 0x00, 0x10, 0xff}}},\n    {{{  -767,    922,  -1740}, 0, { -2074,  -3098}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -767,    614,  -2354}, 0, { -8206,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -767,    512,  -1740}, 0, { -2074,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -767,   1024,  -2354}, 0, { -8206,  -4120}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0703B458 - 0x0703B548\nstatic const Vtx inside_castle_seg7_vertex_0703B458[] = {\n    {{{ -1177,   1152,  -2354}, 0, {   990,   1100}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{ -1177,    614,  -2354}, 0, {   990,   2012}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{ -1207,    614,  -2427}, 0, {   840,   2012}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{ -1207,   1152,  -2427}, 0, {   840,   1100}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{ -1381,   1818,  -2354}, 0, {     0,      0}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{ -1381,    614,  -2354}, 0, {     0,   2012}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{ -1351,    602,  -2282}, 0, {   118,   2028}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{ -1351,   1818,  -2282}, 0, {   118,      0}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{ -1351,   1818,  -2282}, 0, {   118,      0}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{ -1351,    602,  -2282}, 0, {   118,   2028}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{ -1279,    597,  -2252}, 0, {   478,   2036}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{ -1279,   1818,  -2252}, 0, {   478,      0}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{ -1279,   1818,  -2252}, 0, {   478,      0}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{ -1207,    602,  -2282}, 0, {   840,   2028}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{ -1207,   1818,  -2282}, 0, {   840,      0}, {0x30, 0x00, 0x75, 0xff}}},\n};\n\n// 0x0703B548 - 0x0703B5B8\nstatic const Vtx inside_castle_seg7_vertex_0703B548[] = {\n    {{{ -1207,   1818,  -2282}, 0, {   840,      0}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{ -1207,    602,  -2282}, 0, {   840,   2028}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{ -1177,    614,  -2354}, 0, {   990,   2012}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{ -1177,   1818,  -2354}, 0, {   990,      0}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{ -1279,   1818,  -2252}, 0, {   478,      0}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{ -1279,    597,  -2252}, 0, {   478,   2036}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{ -1207,    602,  -2282}, 0, {   840,   2028}, {0x30, 0x00, 0x75, 0xff}}},\n};\n\n// 0x0703B5B8 - 0x0703B6C8\nstatic const Gfx inside_castle_seg7_dl_0703B5B8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_0900B000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_0703A878.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0703A878.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0703A8A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0,  4,  6, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703A998, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703AA98, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_0703A890.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0703A890.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0703AB88, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0703B6C8 - 0x0703B740\nstatic const Gfx inside_castle_seg7_dl_0703B6C8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0703ABC8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  1,  5,  3, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 10, 12, 0x0),\n    gsSP2Triangles(13, 12, 14, 0x0, 12, 15, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0703B740 - 0x0703B808\nstatic const Gfx inside_castle_seg7_dl_0703B740[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0703ACC8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703ADB8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703AEB8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0703B808 - 0x0703B988\nstatic const Gfx inside_castle_seg7_dl_0703B808[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0703AFA8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  3,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  8, 10, 0x0),\n    gsSP2Triangles(12, 11, 10, 0x0, 12, 10,  1, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703B0A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703B1A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 1, 14,  2, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703B298, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703B398, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0703B988 - 0x0703BA08\nstatic const Gfx inside_castle_seg7_dl_0703B988[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0703B458, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703B548, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP1Triangle( 4,  5,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0703BA08 - 0x0703BAB0\nconst Gfx inside_castle_seg7_dl_0703BA08[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_0703B5B8),\n    gsSPDisplayList(inside_castle_seg7_dl_0703B6C8),\n    gsSPDisplayList(inside_castle_seg7_dl_0703B740),\n    gsSPDisplayList(inside_castle_seg7_dl_0703B808),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_0703B988),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/1/3/model.inc.c",
    "content": "// 0x07029078 - 0x07029168\nstatic const Vtx inside_castle_seg7_vertex_07029078[] = {\n    {{{   -13,    614,  -1037}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    717,  -1043}, 0, {   114,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -13,    717,  -1037}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    614,  -1043}, 0, {   114,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   606,    717,  -1043}, 0, {  6160,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   606,    614,  -1043}, 0, {  6160,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   532,    307,  -1023}, 0, {  9166,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   532,    205,  -1023}, 0, {  9166,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   532,    307,    -93}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   532,    205,    -93}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   424,    205,     14}, 0, { -1052,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   424,    307,     14}, 0, { -1052,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2579,    307,    -93}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2579,    205,  -1023}, 0, {  9166,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2579,    307,  -1023}, 0, {  9166,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07029168 - 0x07029268\nstatic const Vtx inside_castle_seg7_vertex_07029168[] = {\n    {{{   171,     26,    268}, 0, { -2584,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   171,    128,    268}, 0, { -2584,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   424,    307,     14}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   424,    205,     14}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2471,    307,     14}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2218,    128,    268}, 0, { -2584,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2218,     26,    268}, 0, { -2586,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2471,    205,     14}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2579,    307,    -93}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2471,    307,     14}, 0, { -1052,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2471,    205,     14}, 0, { -1052,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2579,    205,    -93}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -269,    614,   -781}, 0, {  8656,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -622,    614,   -429}, 0, {  5078,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -622,    512,   -429}, 0, {  5078,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2579,    205,  -1023}, 0, {  9166,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07029268 - 0x07029348\nstatic const Vtx inside_castle_seg7_vertex_07029268[] = {\n    {{{   606,    614,  -1043}, 0, {  6100,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   805,    717,  -1242}, 0, {  8144,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   606,    717,  -1043}, 0, {  6100,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   805,    614,  -1242}, 0, {  8144,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -13,    717,  -1037}, 0, {  3570,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -269,    512,   -781}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -13,    614,  -1037}, 0, {  3572,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -269,    614,   -781}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -269,    614,   -781}, 0, {  8656,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -622,    512,   -429}, 0, {  5078,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -269,    512,   -781}, 0, {  8656,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1424,    512,   -429}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1228,    512,   -429}, 0, {  1928,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1424,    614,   -429}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07029348 - 0x07029438\nstatic const Vtx inside_castle_seg7_vertex_07029348[] = {\n    {{{  -622,    614,   -429}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -818,    512,   -429}, 0, {  -966,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -622,    512,   -429}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -818,    614,   -429}, 0, {  -966,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1424,    614,   -429}, 0, { -3096,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2039,    614,  -1044}, 0, { -9228,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2039,    512,  -1044}, 0, { -9228,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1424,    512,   -429}, 0, { -3096,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2653,    512,  -1043}, 0, {-15360,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2653,    614,  -1043}, 0, {-15360,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2852,    512,  -1242}, 0, {-17404,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2852,    614,  -1242}, 0, {-17404,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1228,    512,   -429}, 0, {  1928,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1228,    614,   -429}, 0, {  1928,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1424,    614,   -429}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07029438 - 0x07029578\nstatic const Gfx inside_castle_seg7_dl_07029438[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07029078, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  3,  5, 0x0,  4,  1,  3, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles( 9, 10,  8, 0x0, 10, 11,  8, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07029168, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0,  8, 11, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07029268, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07029348, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  5,  9,  8, 0x0),\n    gsSP2Triangles( 9, 10,  8, 0x0,  9, 11, 10, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07029578 - 0x070295E8\nconst Gfx inside_castle_seg7_dl_07029578[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07029438),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/1/4/model.inc.c",
    "content": "// 0x070295E8 - 0x07029600\nstatic const Lights1 inside_castle_seg7_lights_070295E8 = gdSPDefLights1(\n    0x26, 0x26, 0x26,\n    0x66, 0x66, 0x66, 0x28, 0x28, 0x28\n);\n\n// 0x07029600 - 0x07029618\nstatic const Lights1 inside_castle_seg7_lights_07029600 = gdSPDefLights1(\n    0x33, 0x33, 0x33,\n    0x88, 0x88, 0x88, 0x28, 0x28, 0x28\n);\n\n// 0x07029618 - 0x07029630\nstatic const Lights1 inside_castle_seg7_lights_07029618 = gdSPDefLights1(\n    0x5f, 0x5f, 0x5f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07029630 - 0x07029648\nstatic const Lights1 inside_castle_seg7_lights_07029630 = gdSPDefLights1(\n    0x1f, 0x1f, 0x1f,\n    0x55, 0x55, 0x55, 0x28, 0x28, 0x28\n);\n\n// 0x07029648 - 0x07029660\nstatic const Lights1 inside_castle_seg7_lights_07029648 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xaa, 0xaa, 0xaa, 0x28, 0x28, 0x28\n);\n\n// 0x07029660 - 0x07029678\nstatic const Lights1 inside_castle_seg7_lights_07029660 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0xcc, 0xcc, 0xcc, 0x28, 0x28, 0x28\n);\n\n// 0x07029678 - 0x070296D8\nstatic const Vtx inside_castle_seg7_vertex_07029678[] = {\n    {{{  -511,   1024,   1536}, 0, {     0,      0}, {0xcc, 0xe1, 0x91, 0xff}}},\n    {{{  -765,   1741,   1536}, 0, {   222,   -748}, {0xd4, 0x93, 0xd2, 0xff}}},\n    {{{  -765,   1741,    922}, 0, {   222,   -748}, {0xdd, 0x87, 0xf3, 0xff}}},\n    {{{ -1281,   1741,    922}, 0, {   736,   -748}, {0x23, 0x87, 0xf3, 0xff}}},\n    {{{ -1281,   1741,   1536}, 0, {   736,   -748}, {0x2e, 0xbf, 0x9e, 0xff}}},\n    {{{ -1535,   1024,   1536}, 0, {   990,      0}, {0x39, 0xe5, 0x93, 0xff}}},\n};\n\n// 0x070296D8 - 0x07029718\nstatic const Vtx inside_castle_seg7_vertex_070296D8[] = {\n    {{{  -765,   1741,   1536}, 0, {   222,   -748}, {0xd4, 0x93, 0xd2, 0xff}}},\n    {{{ -1281,   1741,   1536}, 0, {   736,   -748}, {0x2e, 0xbf, 0x9e, 0xff}}},\n    {{{ -1281,   1741,    922}, 0, {   736,   -748}, {0x23, 0x87, 0xf3, 0xff}}},\n    {{{  -765,   1741,    922}, 0, {   222,   -748}, {0xdd, 0x87, 0xf3, 0xff}}},\n};\n\n// 0x07029718 - 0x070297F8\nstatic const Vtx inside_castle_seg7_vertex_07029718[] = {\n    {{{   102,   1024,  -1637}, 0, {   -56,   -194}, {0x2b, 0xee, 0x75, 0xff}}},\n    {{{   410,   1024,  -1637}, 0, {  -202,   -194}, {0xc5, 0xd2, 0x65, 0xff}}},\n    {{{   155,   1741,  -1023}, 0, {   -80,    130}, {0xf7, 0x93, 0x3e, 0xff}}},\n    {{{ -2457,   1024,  -1637}, 0, {  1160,   -194}, {0x25, 0xbc, 0x63, 0xff}}},\n    {{{ -2457,   1741,   -769}, 0, {  1160,    264}, {0x48, 0x9c, 0x1d, 0xff}}},\n    {{{ -3071,   1024,  -1023}, 0, {  1452,    130}, {0x6b, 0xdb, 0x38, 0xff}}},\n    {{{ -2202,   1741,  -1023}, 0, {  1038,    130}, {0x09, 0x8c, 0x31, 0xff}}},\n    {{{ -2149,   1024,  -1637}, 0, {  1014,   -194}, {0xd5, 0xee, 0x75, 0xff}}},\n    {{{ -1535,   1415,  -1302}, 0, {   722,    -18}, {0xef, 0xf7, 0x7d, 0xff}}},\n    {{{  -765,   1741,    922}, 0, {   356,   1150}, {0xdd, 0x87, 0xf3, 0xff}}},\n    {{{ -1281,   1741,    922}, 0, {   600,   1150}, {0x23, 0x87, 0xf3, 0xff}}},\n    {{{ -2457,   1741,   -253}, 0, {  1160,    534}, {0x33, 0x91, 0xe2, 0xff}}},\n    {{{  -511,   1415,  -1302}, 0, {   234,    -18}, {0x1a, 0xf5, 0x7b, 0xff}}},\n    {{{   410,   1741,   -769}, 0, {  -202,    264}, {0xb8, 0x9c, 0x1d, 0xff}}},\n};\n\n// 0x070297F8 - 0x070298D8\nstatic const Vtx inside_castle_seg7_vertex_070297F8[] = {\n    {{{  -511,   1024,   1536}, 0, {   234,   1472}, {0xcc, 0xe1, 0x91, 0xff}}},\n    {{{   410,   1741,   -253}, 0, {  -202,    534}, {0xcd, 0x91, 0xe2, 0xff}}},\n    {{{  1024,   1024,      0}, 0, {  -494,    668}, {0x8f, 0xd8, 0xd8, 0xff}}},\n    {{{ -2457,   1741,   -769}, 0, {  1160,    264}, {0x48, 0x9c, 0x1d, 0xff}}},\n    {{{ -2457,   1741,   -253}, 0, {  1160,    534}, {0x33, 0x91, 0xe2, 0xff}}},\n    {{{ -3071,   1024,      0}, 0, {  1452,    668}, {0x72, 0xd2, 0xe3, 0xff}}},\n    {{{ -3071,   1024,  -1023}, 0, {  1452,    130}, {0x6b, 0xdb, 0x38, 0xff}}},\n    {{{ -1535,   1024,   1536}, 0, {   722,   1472}, {0x39, 0xe5, 0x93, 0xff}}},\n    {{{ -1281,   1741,    922}, 0, {   600,   1150}, {0x23, 0x87, 0xf3, 0xff}}},\n    {{{  1024,   1024,  -1023}, 0, {  -494,    130}, {0x99, 0xe6, 0x44, 0xff}}},\n    {{{   410,   1741,   -769}, 0, {  -202,    264}, {0xb8, 0x9c, 0x1d, 0xff}}},\n    {{{   410,   1024,  -1637}, 0, {  -202,   -194}, {0xc5, 0xd2, 0x65, 0xff}}},\n    {{{   155,   1741,  -1023}, 0, {   -80,    130}, {0xf7, 0x93, 0x3e, 0xff}}},\n    {{{  -765,   1741,    922}, 0, {   356,   1150}, {0xdd, 0x87, 0xf3, 0xff}}},\n};\n\n// 0x070298D8 - 0x07029938\nstatic const Vtx inside_castle_seg7_vertex_070298D8[] = {\n    {{{ -1535,   1024,  -1023}, 0, {     0,   2288}, {0xdb, 0x1d, 0x75, 0xff}}},\n    {{{ -1535,   1415,  -1302}, 0, {     0,   2010}, {0xef, 0xf7, 0x7d, 0xff}}},\n    {{{ -2149,   1024,  -1637}, 0, {  -644,   1676}, {0xd5, 0xee, 0x75, 0xff}}},\n    {{{  -511,   1024,  -1023}, 0, {   990,   2288}, {0x1a, 0x20, 0x77, 0xff}}},\n    {{{  -511,   1415,  -1302}, 0, {   990,   2010}, {0x1a, 0xf5, 0x7b, 0xff}}},\n    {{{   102,   1024,  -1637}, 0, {  1604,   1676}, {0x2b, 0xee, 0x75, 0xff}}},\n};\n\n// 0x07029938 - 0x07029978\nstatic const Vtx inside_castle_seg7_vertex_07029938[] = {\n    {{{ -1281,   1741,   1536}, 0, {  1336,      0}, {0x2e, 0xbf, 0x9e, 0xff}}},\n    {{{  -693,   1536,   1536}, 0, {   552,    224}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1353,   1536,   1536}, 0, {  1432,    224}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -765,   1741,   1536}, 0, {   648,      0}, {0xd4, 0x93, 0xd2, 0xff}}},\n};\n\n// 0x07029978 - 0x070299B8\nstatic const Vtx inside_castle_seg7_vertex_07029978[] = {\n    {{{ -1353,   1536,   1536}, 0, {  1648,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -693,   1536,   1536}, 0, {   332,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -647,   1408,   1536}, 0, {   240,    224}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1399,   1408,   1536}, 0, {  1740,    224}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070299B8 - 0x070299F8\nstatic const Vtx inside_castle_seg7_vertex_070299B8[] = {\n    {{{ -1399,   1408,   1536}, 0, {  1536,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -647,   1408,   1536}, 0, {    36,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -602,   1280,   1536}, 0, {   -52,    224}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1444,   1280,   1536}, 0, {  1628,    224}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070299F8 - 0x07029A38\nstatic const Vtx inside_castle_seg7_vertex_070299F8[] = {\n    {{{ -1444,   1280,   1536}, 0, {  1832,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -602,   1280,   1536}, 0, {   148,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -556,   1152,   1536}, 0, {    60,    224}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1490,   1152,   1536}, 0, {  1920,    224}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07029A38 - 0x07029A78\nstatic const Vtx inside_castle_seg7_vertex_07029A38[] = {\n    {{{ -1490,   1152,   1536}, 0, {  1716,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -511,   1024,   1536}, 0, {  -232,    224}, {0xcc, 0xe1, 0x91, 0xff}}},\n    {{{ -1535,   1024,   1536}, 0, {  1808,    224}, {0x39, 0xe5, 0x93, 0xff}}},\n    {{{  -556,   1152,   1536}, 0, {  -140,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07029A78 - 0x07029B78\nstatic const Vtx inside_castle_seg7_vertex_07029A78[] = {\n    {{{  -869,    768,  -1023}, 0, {  4364,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,    512,  -1023}, 0, {  5080,    990}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{  -511,   1024,  -1023}, 0, {  5080,      0}, {0x1a, 0x20, 0x77, 0xff}}},\n    {{{  -869,    512,  -1023}, 0, {  4364,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,    768,  -1023}, 0, {  3748,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1535,   1024,  -1023}, 0, {  3036,      0}, {0xdb, 0x1d, 0x75, 0xff}}},\n    {{{ -1535,    512,  -1023}, 0, {  3036,    990}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{ -1177,    512,  -1023}, 0, {  3748,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,   1024,  -1637}, 0, {  6304,      0}, {0x2b, 0xee, 0x75, 0xff}}},\n    {{{   102,    614,  -1637}, 0, {  6304,    786}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{   410,    614,  -1637}, 0, {  6916,    786}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{   410,   1024,  -1637}, 0, {  6916,      0}, {0xc5, 0xd2, 0x65, 0xff}}},\n    {{{   662,    614,  -1385}, 0, {  7420,    786}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1024,    512,  -1023}, 0, {  8144,    990}, {0x89, 0x00, 0x29, 0xff}}},\n    {{{  1024,   1024,  -1023}, 0, {  8144,      0}, {0x99, 0xe6, 0x44, 0xff}}},\n    {{{   553,    870,  -1494}, 0, {  7204,    274}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07029B78 - 0x07029C78\nstatic const Vtx inside_castle_seg7_vertex_07029B78[] = {\n    {{{   410,    614,  -1637}, 0, {  6916,    786}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{   553,    614,  -1494}, 0, {  7204,    786}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   553,    870,  -1494}, 0, {  7204,    274}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1024,   1024,  -1023}, 0, {  8144,      0}, {0x99, 0xe6, 0x44, 0xff}}},\n    {{{   410,   1024,  -1637}, 0, {  6916,      0}, {0xc5, 0xd2, 0x65, 0xff}}},\n    {{{   662,    870,  -1385}, 0, {  7420,    274}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   662,    614,  -1385}, 0, {  7420,    786}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   819,    512,  -1228}, 0, {  7736,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1024,    512,  -1023}, 0, {  8144,    990}, {0x89, 0x00, 0x29, 0xff}}},\n    {{{  1024,    512,  -1023}, 0, {     0,    990}, {0x89, 0x00, 0x29, 0xff}}},\n    {{{  1024,    512,      0}, 0, {  2012,    990}, {0x88, 0x00, 0xd7, 0xff}}},\n    {{{  1024,   1024,      0}, 0, {  2012,      0}, {0x8f, 0xd8, 0xd8, 0xff}}},\n    {{{  1024,   1024,  -1023}, 0, {     0,      0}, {0x99, 0xe6, 0x44, 0xff}}},\n    {{{  1024,   1024,      0}, 0, { -2076,      0}, {0x8f, 0xd8, 0xd8, 0xff}}},\n    {{{  1024,    512,      0}, 0, { -2076,    990}, {0x88, 0x00, 0xd7, 0xff}}},\n    {{{  -511,    512,   1536}, 0, {  2012,    990}, {0xd7, 0x00, 0x89, 0xff}}},\n};\n\n// 0x07029C78 - 0x07029D58\nstatic const Vtx inside_castle_seg7_vertex_07029C78[] = {\n    {{{  1024,   1024,      0}, 0, { -2076,      0}, {0x8f, 0xd8, 0xd8, 0xff}}},\n    {{{  -511,    512,   1536}, 0, {  2012,    990}, {0xd7, 0x00, 0x89, 0xff}}},\n    {{{  -511,   1024,   1536}, 0, {  2012,      0}, {0xcc, 0xe1, 0x91, 0xff}}},\n    {{{  -511,    512,   1536}, 0, {     0,    990}, {0xd7, 0x00, 0x89, 0xff}}},\n    {{{  -784,    512,   1536}, 0, {   512,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -921,    717,   1536}, 0, {   784,    582}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -511,   1024,   1536}, 0, {     0,      0}, {0xcc, 0xe1, 0x91, 0xff}}},\n    {{{ -1535,   1024,   1536}, 0, {  2012,      0}, {0x39, 0xe5, 0x93, 0xff}}},\n    {{{ -1125,    717,   1536}, 0, {  1196,    582}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3071,   1024,  -1023}, 0, {     0,      0}, {0x6b, 0xdb, 0x38, 0xff}}},\n    {{{ -2866,    512,  -1228}, 0, {   376,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2866,   1024,  -1228}, 0, {   376,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1535,    512,   1536}, 0, {  2012,    990}, {0x29, 0x00, 0x89, 0xff}}},\n    {{{ -1262,    512,   1536}, 0, {  1468,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07029D58 - 0x07029E58\nstatic const Vtx inside_castle_seg7_vertex_07029D58[] = {\n    {{{ -1535,   1024,   1536}, 0, { -2076,      0}, {0x39, 0xe5, 0x93, 0xff}}},\n    {{{ -3071,    512,      0}, 0, {  2012,    990}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{ -3071,   1024,      0}, 0, {  2012,      0}, {0x72, 0xd2, 0xe3, 0xff}}},\n    {{{ -1535,    512,   1536}, 0, { -2076,    990}, {0x29, 0x00, 0x89, 0xff}}},\n    {{{ -3071,    512,  -1023}, 0, {  2012,    990}, {0x79, 0x00, 0x24, 0xff}}},\n    {{{ -3071,   1024,  -1023}, 0, {  2012,      0}, {0x6b, 0xdb, 0x38, 0xff}}},\n    {{{ -3071,   1024,      0}, 0, {     0,      0}, {0x72, 0xd2, 0xe3, 0xff}}},\n    {{{ -3071,    512,      0}, 0, {     0,    990}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{ -2149,   1024,  -1637}, 0, {  1808,      0}, {0xd5, 0xee, 0x75, 0xff}}},\n    {{{ -1535,    512,  -1023}, 0, {  3036,    990}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{ -1535,   1024,  -1023}, 0, {  3036,      0}, {0xdb, 0x1d, 0x75, 0xff}}},\n    {{{ -3071,   1024,  -1023}, 0, {     0,      0}, {0x6b, 0xdb, 0x38, 0xff}}},\n    {{{ -3071,    512,  -1023}, 0, {     0,    990}, {0x79, 0x00, 0x24, 0xff}}},\n    {{{ -2866,    512,  -1228}, 0, {   376,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2457,    512,  -1637}, 0, {  1196,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2149,    512,  -1637}, 0, {  1808,    990}, {0xd0, 0x00, 0x75, 0xff}}},\n};\n\n// 0x07029E58 - 0x07029EA8\nstatic const Vtx inside_castle_seg7_vertex_07029E58[] = {\n    {{{ -2149,   1024,  -1637}, 0, {  1808,      0}, {0xd5, 0xee, 0x75, 0xff}}},\n    {{{ -2457,   1024,  -1637}, 0, {  1196,      0}, {0x25, 0xbc, 0x63, 0xff}}},\n    {{{ -2457,    512,  -1637}, 0, {  1196,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2149,    512,  -1637}, 0, {  1808,    990}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{ -1535,    512,  -1023}, 0, {  3036,    990}, {0xd0, 0x00, 0x75, 0xff}}},\n};\n\n// 0x07029EA8 - 0x07029F98\nstatic const Vtx inside_castle_seg7_vertex_07029EA8[] = {\n    {{{  1024,    512,      0}, 0, { -2076,      0}, {0x88, 0x00, 0xd7, 0xff}}},\n    {{{  -511,      0,   1536}, 0, {  2012,    990}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{  -511,    512,   1536}, 0, {  2012,      0}, {0xd7, 0x00, 0x89, 0xff}}},\n    {{{   819,    512,  -1228}, 0, {  1604,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1024,    205,  -1023}, 0, {  2012,    582}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{  1024,    512,  -1023}, 0, {  2012,      0}, {0x89, 0x00, 0x29, 0xff}}},\n    {{{   819,    205,  -1228}, 0, {  1604,    582}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1024,    205,  -1023}, 0, {     0,    582}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{  1024,    461,   -306}, 0, {  1400,     70}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,    512,  -1023}, 0, {     0,      0}, {0x89, 0x00, 0x29, 0xff}}},\n    {{{  1024,    205,   -306}, 0, {  1400,    582}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,    461,   -153}, 0, {  1704,     70}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,    512,      0}, 0, {  2012,      0}, {0x88, 0x00, 0xd7, 0xff}}},\n    {{{  1024,    205,   -153}, 0, {  1704,    582}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,    205,      0}, 0, {  2012,    582}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07029F98 - 0x0702A088\nstatic const Vtx inside_castle_seg7_vertex_07029F98[] = {\n    {{{ -1535,    512,   1536}, 0, {  2012,      0}, {0x29, 0x00, 0x89, 0xff}}},\n    {{{ -1262,    512,   1536}, 0, {  1468,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1330,    410,   1536}, 0, {  1604,    172}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1024,    512,      0}, 0, { -2076,      0}, {0x88, 0x00, 0xd7, 0xff}}},\n    {{{  1024,      0,      0}, 0, { -2076,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -511,      0,   1536}, 0, {  2012,    990}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{ -1535,    512,   1536}, 0, { -2076,      0}, {0x29, 0x00, 0x89, 0xff}}},\n    {{{ -3071,      0,      0}, 0, {  2012,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -3071,    512,      0}, 0, {  2012,      0}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{ -1535,      0,   1536}, 0, { -2076,    990}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{  -511,      0,   1536}, 0, {     0,    990}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{  -716,      0,   1536}, 0, {   376,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -716,    410,   1536}, 0, {   376,    172}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -511,    512,   1536}, 0, {     0,      0}, {0xd7, 0x00, 0x89, 0xff}}},\n    {{{  -784,    512,   1536}, 0, {   512,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0702A088 - 0x0702A188\nstatic const Vtx inside_castle_seg7_vertex_0702A088[] = {\n    {{{ -3071,    512,  -1023}, 0, {     0,      0}, {0x79, 0x00, 0x24, 0xff}}},\n    {{{ -2866,    205,  -1228}, 0, {   376,    582}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2866,    512,  -1228}, 0, {   376,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1535,    512,   1536}, 0, {  2012,      0}, {0x29, 0x00, 0x89, 0xff}}},\n    {{{ -1330,    410,   1536}, 0, {  1604,    172}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1535,      0,   1536}, 0, {  2012,    990}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{ -1330,      0,   1536}, 0, {  1604,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3071,    205,      0}, 0, {     0,    582}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3071,    461,   -716}, 0, {  1400,     70}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3071,    512,      0}, 0, {     0,      0}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{ -3071,    205,   -716}, 0, {  1400,    582}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3071,    461,   -869}, 0, {  1704,     70}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3071,    512,  -1023}, 0, {  2012,      0}, {0x79, 0x00, 0x24, 0xff}}},\n    {{{ -3071,    205,  -1023}, 0, {  2012,    582}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{ -3071,    205,  -1023}, 0, {     0,    582}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{ -3071,    205,   -869}, 0, {  1704,    582}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0702A188 - 0x0702A300\nstatic const Gfx inside_castle_seg7_dl_0702A188[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_070295E8.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_070295E8.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07029678, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_07029600.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07029600.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_070296D8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_07029618.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07029618.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07029718, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  7,  6, 0x0),\n    gsSP2Triangles( 7,  8,  6, 0x0,  8,  2,  6, 0x0),\n    gsSP2Triangles( 6,  9, 10, 0x0, 11,  4,  6, 0x0),\n    gsSP2Triangles(11,  6, 10, 0x0,  6,  2,  9, 0x0),\n    gsSP2Triangles( 8, 12,  2, 0x0, 12,  0,  2, 0x0),\n    gsSP1Triangle(13,  2,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070297F8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  5,  4,  7, 0x0),\n    gsSP2Triangles( 4,  8,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 2, 10,  9, 0x0,  2,  1, 10, 0x0),\n    gsSP2Triangles(12, 10,  1, 0x0, 12,  1, 13, 0x0),\n    gsSP1Triangle( 0, 13,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070298D8, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 3,  4,  1, 0x0,  5,  4,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0702A300 - 0x0702A548\nstatic const Gfx inside_castle_seg7_dl_0702A300[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_07029630.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07029630.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07029938, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_070295E8.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_070295E8.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07029978, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_07029600.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07029600.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_070299B8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_07029648.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07029648.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_070299F8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_07029660.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07029660.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07029A38, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_07029618.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07029618.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07029A78, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  0,  2, 0x0,  4,  2,  5, 0x0),\n    gsSP2Triangles( 6,  7,  4, 0x0,  6,  4,  5, 0x0),\n    gsSP2Triangles( 2,  1,  8, 0x0,  1,  9,  8, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 10, 15, 11, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07029B78, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 2,  5,  3, 0x0,  5,  6,  3, 0x0),\n    gsSP2Triangles( 7,  8,  6, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07029C78, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 5,  8,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 8, 12,  7, 0x0,  8, 13, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07029D58, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 8, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07029E58, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0702A548 - 0x0702A650\nstatic const Gfx inside_castle_seg7_dl_0702A548[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07029EA8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  8, 11, 12, 0x0),\n    gsSP2Triangles( 8, 12,  9, 0x0, 11, 13, 14, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07029F98, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702A088, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  8, 11, 12, 0x0),\n    gsSP2Triangles( 8, 12,  9, 0x0, 11, 13, 12, 0x0),\n    gsSP2Triangles( 0, 14,  1, 0x0, 11, 15, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0702A650 - 0x0702A6D8\nconst Gfx inside_castle_seg7_dl_0702A650[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_0702A188),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_0702A300),\n    gsSPDisplayList(inside_castle_seg7_dl_0702A548),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/1/5/model.inc.c",
    "content": "static const Vtx dl_castle_lobby_wing_cap_light_vertex_group[] = {\n    {{{ -1075,   1741,   -380}, 0, {  -360,    -62}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{ -1125,    -50,    461}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{ -1279,    -50,    594}, 0, {   612,    990}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{ -1075,   1741,   -130}, 0, {  -110,    -62}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{  -921,    -50,    973}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{  -968,   1741,   -130}, 0, {  -110,    -62}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{  -767,    -50,    819}, 0, {   836,    990}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{  -896,   1741,   -201}, 0, {  -180,    -62}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{ -1125,    -50,    973}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{  -767,    -50,    614}, 0, {   632,    990}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{  -896,   1741,   -309}, 0, {  -288,    -62}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{  -921,    -50,    461}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{  -968,   1741,   -380}, 0, {  -360,    -62}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{ -1147,   1741,   -201}, 0, {  -180,    -62}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{ -1147,   1741,   -309}, 0, {  -288,    -62}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{ -1279,    -50,    819}, 0, {   836,    990}, {0xff, 0xff, 0xff, 0x80}}},\n};\n\nstatic const Gfx dl_castle_lobby_wing_cap_light_model[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, texture_castle_light),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(dl_castle_lobby_wing_cap_light_vertex_group, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 3,  8,  4, 0x0,  7,  6,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11,  1, 0x0),\n    gsSP2Triangles(12,  1,  0, 0x0, 13,  8,  3, 0x0),\n    gsSP2Triangles( 0,  2, 14, 0x0, 14,  2, 15, 0x0),\n    gsSP2Triangles(14, 15, 13, 0x0, 13, 15,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\nconst Gfx dl_castle_lobby_wing_cap_light[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(dl_castle_lobby_wing_cap_light_model),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/1/6/model.inc.c",
    "content": "// 0x0702A8F0 - 0x0702A908\nstatic const Lights1 inside_castle_seg7_lights_0702A8F0 = gdSPDefLights1(\n    0x5f, 0x5f, 0x5f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0702A908 - 0x0702A998\nstatic const Vtx inside_castle_seg7_vertex_0702A908[] = {\n    {{{  -757,    -50,    717}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,    -50,    983}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -757,    -50,    983}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,    -50,    451}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1289,    -50,    451}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1289,    -50,    717}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,    -50,    717}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -757,    -50,    451}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1289,    -50,    983}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0702A998 - 0x0702AA10\nstatic const Gfx inside_castle_seg7_dl_0702A998[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_0702A8F0.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0702A8F0.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0702A908, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  3,  6, 0x0),\n    gsSP2Triangles( 7,  6,  0, 0x0,  6,  8,  1, 0x0),\n    gsSP2Triangles( 6,  5,  8, 0x0,  0,  6,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0702AA10 - 0x0702AA80\nconst Gfx inside_castle_seg7_dl_0702AA10[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_0702A998),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/1/7/model.inc.c",
    "content": "// 0x0702AA80 - 0x0702AA98\nstatic const Lights1 inside_castle_seg7_lights_0702AA80 = gdSPDefLights1(\n    0x5f, 0x5f, 0x5f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0702AA98 - 0x0702AAD8\nstatic const Vtx inside_castle_seg7_vertex_0702AA98[] = {\n    {{{ -1330,   1690,   1526}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -716,   1690,   1526}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -716,   1075,   1526}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1330,   1075,   1526}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0702AAD8 - 0x0702AB20\nstatic const Gfx inside_castle_seg7_dl_0702AAD8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_0702AA80.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0702AA80.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0702AA98, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0702AB20 - 0x0702AB90\nconst Gfx inside_castle_seg7_dl_0702AB20[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_0702AAD8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/1/8/model.inc.c",
    "content": "// 0x0702AB90 - 0x0702ABA8\nstatic const Lights1 inside_castle_seg7_lights_0702AB90 = gdSPDefLights1(\n    0x46, 0x46, 0x46,\n    0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28\n);\n\n// 0x0702ABA8 - 0x0702ABC0\nstatic const Lights1 inside_castle_seg7_lights_0702ABA8 = gdSPDefLights1(\n    0x5f, 0x5f, 0x5f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0702ABC0 - 0x0702ACB0\nstatic const Vtx inside_castle_seg7_vertex_0702ABC0[] = {\n    {{{  -716,   -383,   -639}, 0, {  2888,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -409,   -639}, 0, {  2746,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -409,   -639}, 0, {  2746,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -831,   -153,  -1005}, 0, {  7204,   1880}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1215,   -178,  -1005}, 0, {  7062,  -1946}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -831,   -178,  -1005}, 0, {  7062,   1880}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1215,   -153,  -1005}, 0, {  7204,  -1946}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -847,   -127,  -1074}, 0, {  7918,   1726}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1199,   -153,  -1074}, 0, {  7778,  -1792}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -847,   -153,  -1074}, 0, {  7778,   1726}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1199,   -127,  -1074}, 0, {  7918,  -1792}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -767,   -357,   -677}, 0, {  3348,   2520}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1279,   -357,   -677}, 0, {  3348,  -2588}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1279,   -383,   -677}, 0, {  3206,  -2588}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -767,   -383,   -677}, 0, {  3206,   2520}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0702ACB0 - 0x0702ADA0\nstatic const Vtx inside_castle_seg7_vertex_0702ACB0[] = {\n    {{{  -869,   -101,  -1177}, 0, {  8910,   1498}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,   -127,  -1177}, 0, {  8770,  -1564}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,   -127,  -1177}, 0, {  8770,   1498}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -383,   -639}, 0, {  2888,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -383,   -639}, 0, {  2888,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -409,   -639}, 0, {  2746,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -434,   -562}, 0, {  1966,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -434,   -562}, 0, {  1966,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -460,   -562}, 0, {  1824,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -460,   -562}, 0, {  1824,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -409,   -601}, 0, {  2426,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -409,   -601}, 0, {  2426,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -434,   -601}, 0, {  2286,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -434,   -601}, 0, {  2286,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,   -101,  -1177}, 0, {  8910,  -1564}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0702ADA0 - 0x0702AE90\nstatic const Vtx inside_castle_seg7_vertex_0702ADA0[] = {\n    {{{  -784,   -281,   -793}, 0, {  4730,   2350}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1262,   -306,   -793}, 0, {  4588,  -2416}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -784,   -306,   -793}, 0, {  4588,   2350}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -818,   -178,   -946}, 0, {  6572,   2010}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1228,   -204,   -946}, 0, {  6430,  -2076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -818,   -204,   -946}, 0, {  6430,   2010}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1228,   -178,   -946}, 0, {  6572,  -2076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -810,   -204,   -908}, 0, {  6112,   2096}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1236,   -229,   -908}, 0, {  5970,  -2162}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -810,   -229,   -908}, 0, {  5970,   2096}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1236,   -204,   -908}, 0, {  6112,  -2162}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -801,   -229,   -869}, 0, {  5652,   2180}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1245,   -229,   -869}, 0, {  5652,  -2246}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1245,   -255,   -869}, 0, {  5510,  -2246}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -801,   -255,   -869}, 0, {  5510,   2180}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0702AE90 - 0x0702AF80\nstatic const Vtx inside_castle_seg7_vertex_0702AE90[] = {\n    {{{  -767,   -332,   -716}, 0, {  3808,   2522}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1279,   -332,   -716}, 0, {  3808,  -2588}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1279,   -357,   -716}, 0, {  3668,  -2588}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -784,   -281,   -793}, 0, {  4730,   2350}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1262,   -281,   -793}, 0, {  4730,  -2416}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1262,   -306,   -793}, 0, {  4588,  -2416}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -793,   -255,   -831}, 0, {  5190,   2266}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1253,   -255,   -831}, 0, {  5190,  -2332}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1253,   -281,   -831}, 0, {  5048,  -2332}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -793,   -281,   -831}, 0, {  5048,   2266}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -776,   -306,   -754}, 0, {  4270,   2436}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1270,   -332,   -754}, 0, {  4128,  -2502}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -776,   -332,   -754}, 0, {  4128,   2436}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1270,   -306,   -754}, 0, {  4270,  -2502}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -767,   -357,   -716}, 0, {  3668,   2522}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0702AF80 - 0x0702B070\nstatic const Vtx inside_castle_seg7_vertex_0702AF80[] = {\n    {{{  -716,   -537,   -409}, 0, {   124,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -537,   -409}, 0, {   124,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -562,   -409}, 0, {   -18,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -460,   -524}, 0, {  1506,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -485,   -524}, 0, {  1364,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -485,   -524}, 0, {  1364,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -460,   -524}, 0, {  1506,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -485,   -485}, 0, {  1046,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -511,   -485}, 0, {   904,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -511,   -485}, 0, {   904,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -485,   -485}, 0, {  1046,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -511,   -447}, 0, {   584,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -537,   -447}, 0, {   442,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -537,   -447}, 0, {   442,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -511,   -447}, 0, {   584,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0702B070 - 0x0702B160\nstatic const Vtx inside_castle_seg7_vertex_0702B070[] = {\n    {{{  -716,   -613,   -293}, 0, { -1256,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -613,   -293}, 0, { -1256,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -639,   -293}, 0, { -1398,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -537,   -409}, 0, {   124,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -562,   -409}, 0, {   -18,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -562,   -409}, 0, {   -18,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -562,   -370}, 0, {  -334,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -588,   -370}, 0, {  -476,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -588,   -370}, 0, {  -476,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -562,   -370}, 0, {  -334,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -588,   -332}, 0, {  -796,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -588,   -332}, 0, {  -796,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -613,   -332}, 0, {  -938,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -613,   -332}, 0, {  -938,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -639,   -293}, 0, { -1398,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0702B160 - 0x0702B250\nstatic const Vtx inside_castle_seg7_vertex_0702B160[] = {\n    {{{  -716,   -665,   -217}, 0, { -2178,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -665,   -217}, 0, { -2178,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -690,   -217}, 0, { -2318,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -639,   -255}, 0, { -1716,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -665,   -255}, 0, { -1858,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -665,   -255}, 0, { -1858,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -639,   -255}, 0, { -1716,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -741,   -101}, 0, { -3558,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -767,   -101}, 0, { -3700,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -767,   -101}, 0, { -3700,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -741,   -101}, 0, { -3558,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -716,   -140}, 0, { -3098,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -741,   -140}, 0, { -3240,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -741,   -140}, 0, { -3240,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -716,   -140}, 0, { -3098,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0702B250 - 0x0702B340\nstatic const Vtx inside_castle_seg7_vertex_0702B250[] = {\n    {{{  -716,   -793,    -25}, 0, { -4480,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -818,    -25}, 0, { -4622,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -818,    -25}, 0, { -4622,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -665,   -217}, 0, { -2178,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -690,   -217}, 0, { -2318,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -690,   -217}, 0, { -2318,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -690,   -178}, 0, { -2638,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -690,   -178}, 0, { -2638,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -716,   -178}, 0, { -2780,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -716,   -178}, 0, { -2780,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -767,    -63}, 0, { -4020,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -793,    -63}, 0, { -4162,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -793,    -63}, 0, { -4162,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -767,    -63}, 0, { -4020,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -793,    -25}, 0, { -4480,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0702B340 - 0x0702B430\nstatic const Vtx inside_castle_seg7_vertex_0702B340[] = {\n    {{{  -716,   -869,     90}, 0, { -5862,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -869,     90}, 0, { -5862,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -895,     90}, 0, { -6004,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -818,     13}, 0, { -4940,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -844,     13}, 0, { -5082,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -844,     13}, 0, { -5082,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -818,     13}, 0, { -4940,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -844,     51}, 0, { -5402,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -869,     51}, 0, { -5544,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -869,     51}, 0, { -5544,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -844,     51}, 0, { -5402,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -895,    128}, 0, { -6322,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -895,    128}, 0, { -6322,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -921,    128}, 0, { -6464,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -921,    128}, 0, { -6464,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0702B430 - 0x0702B520\nstatic const Vtx inside_castle_seg7_vertex_0702B430[] = {\n    {{{  -716,   -972,    243}, 0, { -7704,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -972,    243}, 0, { -7704,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -997,    243}, 0, { -7846,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -869,     90}, 0, { -5862,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -895,     90}, 0, { -6004,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -895,     90}, 0, { -6004,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -921,    166}, 0, { -6784,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -921,    166}, 0, { -6784,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -946,    166}, 0, { -6924,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -946,    166}, 0, { -6924,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -946,    205}, 0, { -7244,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -972,    205}, 0, { -7386,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -972,    205}, 0, { -7386,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -946,    205}, 0, { -7244,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -997,    243}, 0, { -7846,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0702B520 - 0x0702B5E0\nstatic const Vtx inside_castle_seg7_vertex_0702B520[] = {\n    {{{  -716,   -997,    282}, 0, { -8166,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -997,    282}, 0, { -8166,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,  -1023,    282}, 0, { -8306,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,  -1023,    282}, 0, { -8306,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,  -1023,    320}, 0, { -8626,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,  -1049,    320}, 0, { -8768,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,  -1049,    320}, 0, { -8768,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,  -1023,    320}, 0, { -8626,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,  -1049,    358}, 0, { -9086,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,  -1074,    358}, 0, { -9228,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,  -1074,    358}, 0, { -9228,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,  -1049,    358}, 0, { -9086,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0702B5E0 - 0x0702B6D0\nstatic const Vtx inside_castle_seg7_vertex_0702B5E0[] = {\n    {{{ -1279,   -357,   -677}, 0, {  3348,  -2588}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,   -357,   -677}, 0, {  3348,   2520}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,   -357,   -716}, 0, {  3668,   2522}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,   -178,   -946}, 0, {  6572,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -818,   -178,   -946}, 0, {  6572,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -831,   -178,  -1005}, 0, {  7062,   1880}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1215,   -178,  -1005}, 0, {  7062,  -1946}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1215,   -153,  -1005}, 0, {  7204,  -1946}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -831,   -153,  -1005}, 0, {  7204,   1880}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -847,   -153,  -1074}, 0, {  7778,   1726}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1199,   -153,  -1074}, 0, {  7778,  -1792}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1199,   -127,  -1074}, 0, {  7918,  -1792}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,   -127,  -1177}, 0, {  8770,   1498}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,   -127,  -1177}, 0, {  8770,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -847,   -127,  -1074}, 0, {  7918,   1726}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0702B6D0 - 0x0702B7C0\nstatic const Vtx inside_castle_seg7_vertex_0702B6D0[] = {\n    {{{ -1330,   -434,   -562}, 0, {  1966,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -434,   -601}, 0, {  2286,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -434,   -601}, 0, {  2286,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,   -357,   -677}, 0, {  3348,  -2588}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,   -357,   -716}, 0, {  3668,   2522}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,   -357,   -716}, 0, {  3668,  -2588}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -383,   -639}, 0, {  2888,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -383,   -639}, 0, {  2888,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -383,   -677}, 0, {  3206,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -383,   -677}, 0, {  3206,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -409,   -601}, 0, {  2426,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -409,   -601}, 0, {  2426,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -409,   -639}, 0, {  2746,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -409,   -639}, 0, {  2746,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -434,   -562}, 0, {  1966,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0702B7C0 - 0x0702B8C0\nstatic const Vtx inside_castle_seg7_vertex_0702B7C0[] = {\n    {{{ -1245,   -229,   -869}, 0, {  5652,  -2246}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -810,   -229,   -908}, 0, {  5970,   2096}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1236,   -229,   -908}, 0, {  5970,  -2162}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -460,   -562}, 0, {  1824,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -724,   -460,   -524}, 0, {  1506,   2946}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -460,   -527}, 0, {  1532,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -460,   -562}, 0, {  1824,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -460,   -524}, 0, {  1506,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1236,   -204,   -908}, 0, {  6112,  -2162}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -810,   -204,   -908}, 0, {  6112,   2096}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -818,   -204,   -946}, 0, {  6430,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,   -204,   -946}, 0, {  6430,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -801,   -229,   -869}, 0, {  5652,   2180}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,   -332,   -716}, 0, {  3808,  -2588}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -776,   -332,   -754}, 0, {  4128,   2436}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1270,   -332,   -754}, 0, {  4128,  -2502}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0702B8C0 - 0x0702B9B0\nstatic const Vtx inside_castle_seg7_vertex_0702B8C0[] = {\n    {{{ -1262,   -281,   -793}, 0, {  4730,  -2416}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -793,   -281,   -831}, 0, {  5048,   2266}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1253,   -281,   -831}, 0, {  5048,  -2332}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -784,   -281,   -793}, 0, {  4730,   2350}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1253,   -255,   -831}, 0, {  5190,  -2332}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -793,   -255,   -831}, 0, {  5190,   2266}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -801,   -255,   -869}, 0, {  5510,   2180}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1245,   -255,   -869}, 0, {  5510,  -2246}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1270,   -306,   -754}, 0, {  4270,  -2502}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -784,   -306,   -793}, 0, {  4588,   2350}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1262,   -306,   -793}, 0, {  4588,  -2416}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -776,   -306,   -754}, 0, {  4270,   2436}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -537,   -409}, 0, {   124,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -537,   -447}, 0, {   442,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -537,   -447}, 0, {   442,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0702B9B0 - 0x0702BA90\nstatic const Vtx inside_castle_seg7_vertex_0702B9B0[] = {\n    {{{ -1279,   -332,   -716}, 0, {  3808,  -2588}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,   -332,   -716}, 0, {  3808,   2522}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -776,   -332,   -754}, 0, {  4128,   2436}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -485,   -485}, 0, {  1046,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -485,   -485}, 0, {  1046,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -485,   -524}, 0, {  1364,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -485,   -524}, 0, {  1364,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -511,   -447}, 0, {   584,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -511,   -447}, 0, {   584,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -511,   -485}, 0, {   904,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -511,   -485}, 0, {   904,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -537,   -409}, 0, {   124,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -537,   -409}, 0, {   124,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -537,   -447}, 0, {   442,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0702BA90 - 0x0702BB80\nstatic const Vtx inside_castle_seg7_vertex_0702BA90[] = {\n    {{{ -1330,   -639,   -255}, 0, { -1716,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -639,   -255}, 0, { -1716,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -639,   -293}, 0, { -1398,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -562,   -370}, 0, {  -334,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -562,   -370}, 0, {  -334,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -562,   -409}, 0, {   -18,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -562,   -409}, 0, {   -18,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -588,   -332}, 0, {  -796,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -588,   -332}, 0, {  -796,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -588,   -370}, 0, {  -476,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -588,   -370}, 0, {  -476,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -613,   -293}, 0, { -1256,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -613,   -332}, 0, {  -938,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -613,   -332}, 0, {  -938,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -613,   -293}, 0, { -1256,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0702BB80 - 0x0702BC70\nstatic const Vtx inside_castle_seg7_vertex_0702BB80[] = {\n    {{{ -1330,   -665,   -217}, 0, { -2178,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -665,   -255}, 0, { -1858,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -665,   -255}, 0, { -1858,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -639,   -255}, 0, { -1716,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -639,   -293}, 0, { -1398,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -639,   -293}, 0, { -1398,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -741,   -101}, 0, { -3558,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -741,   -101}, 0, { -3558,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -741,   -140}, 0, { -3240,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -741,   -140}, 0, { -3240,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -716,   -140}, 0, { -3098,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -716,   -178}, 0, { -2780,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -716,   -178}, 0, { -2780,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -716,   -140}, 0, { -3098,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -665,   -217}, 0, { -2178,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0702BC70 - 0x0702BD60\nstatic const Vtx inside_castle_seg7_vertex_0702BC70[] = {\n    {{{ -1330,   -818,     13}, 0, { -4940,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -818,     13}, 0, { -4940,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -818,    -25}, 0, { -4622,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -690,   -178}, 0, { -2638,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -690,   -178}, 0, { -2638,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -690,   -217}, 0, { -2318,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -690,   -217}, 0, { -2318,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -767,    -63}, 0, { -4020,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -767,    -63}, 0, { -4020,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -767,   -101}, 0, { -3700,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -767,   -101}, 0, { -3700,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -793,    -25}, 0, { -4480,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -793,    -63}, 0, { -4162,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -793,    -63}, 0, { -4162,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -793,    -25}, 0, { -4480,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0702BD60 - 0x0702BE50\nstatic const Vtx inside_castle_seg7_vertex_0702BD60[] = {\n    {{{ -1330,   -869,     90}, 0, { -5862,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -869,     90}, 0, { -5862,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -869,     51}, 0, { -5544,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -818,     13}, 0, { -4940,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -818,    -25}, 0, { -4622,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -818,    -25}, 0, { -4622,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -844,     51}, 0, { -5402,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -844,     13}, 0, { -5082,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -844,     13}, 0, { -5082,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -844,     51}, 0, { -5402,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -895,    128}, 0, { -6322,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -895,     90}, 0, { -6004,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -895,     90}, 0, { -6004,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -895,    128}, 0, { -6322,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -869,     51}, 0, { -5544,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0702BE50 - 0x0702BF40\nstatic const Vtx inside_castle_seg7_vertex_0702BE50[] = {\n    {{{ -1330,   -997,    282}, 0, { -8166,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -997,    282}, 0, { -8166,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -997,    243}, 0, { -7846,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -921,    166}, 0, { -6784,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -921,    166}, 0, { -6784,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -921,    128}, 0, { -6464,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -921,    128}, 0, { -6464,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -946,    205}, 0, { -7244,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -946,    166}, 0, { -6924,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -946,    166}, 0, { -6924,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -946,    205}, 0, { -7244,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -972,    243}, 0, { -7704,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -972,    243}, 0, { -7704,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -972,    205}, 0, { -7386,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -972,    205}, 0, { -7386,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0702BF40 - 0x0702C020\nstatic const Vtx inside_castle_seg7_vertex_0702BF40[] = {\n    {{{ -1421,    -76,  -1504}, 0, {  2684,   1438}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    -76,  -1177}, 0, { -1232,    524}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,    -76,  -1595}, 0, {  2510,   2458}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -997,    282}, 0, { -8166,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -997,    243}, 0, { -7846,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -997,    243}, 0, { -7846,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,  -1023,    320}, 0, { -8626,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,  -1023,    320}, 0, { -8626,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,  -1023,    282}, 0, { -8306,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,  -1023,    282}, 0, { -8306,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,  -1049,    358}, 0, { -9086,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,  -1049,    320}, 0, { -8768,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,  -1049,    320}, 0, { -8768,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,  -1049,    358}, 0, { -9086,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0702C020 - 0x0702C110\nstatic const Vtx inside_castle_seg7_vertex_0702C020[] = {\n    {{{ -1177,    -76,  -1177}, 0, { -1232,    524}, {0x77, 0x00, 0xd5, 0xff}}},\n    {{{ -1330,   -101,  -1595}, 0, {  2510,   2610}, {0x77, 0x00, 0xd5, 0xff}}},\n    {{{ -1330,    -76,  -1595}, 0, {  2510,   2458}, {0x77, 0x00, 0xd5, 0xff}}},\n    {{{ -1421,    -76,  -1504}, 0, {  2684,   1438}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1188,    -76,  -1127}, 0, { -1444,    148}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    -76,  -1177}, 0, { -1232,    524}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,   -101,  -1177}, 0, { -1232,    674}, {0x77, 0x00, 0xd5, 0xff}}},\n    {{{ -1188,    -50,  -1127}, 0, { -1444,     -2}, {0x6c, 0x00, 0xbe, 0xff}}},\n    {{{ -1188,    -76,  -1127}, 0, { -1444,    148}, {0x6c, 0x00, 0xbe, 0xff}}},\n    {{{ -1421,    -76,  -1504}, 0, {  2684,   1438}, {0x6c, 0x00, 0xbe, 0xff}}},\n    {{{ -1421,    -50,  -1504}, 0, {  2684,   1288}, {0x6c, 0x00, 0xbe, 0xff}}},\n    {{{ -1421,    -50,  -1504}, 0, {  2684,   1288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1199,    -50,  -1077}, 0, { -1656,   -378}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1188,    -50,  -1127}, 0, { -1444,     -2}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1511,    -50,  -1414}, 0, {  2860,    268}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0702C110 - 0x0702C200\nstatic const Vtx inside_castle_seg7_vertex_0702C110[] = {\n    {{{ -1511,    -50,  -1414}, 0, {  2860,    268}, {0x5d, 0x00, 0xaa, 0xff}}},\n    {{{ -1511,    -25,  -1414}, 0, {  2860,    118}, {0x5d, 0x00, 0xaa, 0xff}}},\n    {{{ -1199,    -25,  -1077}, 0, { -1656,   -528}, {0x5d, 0x00, 0xaa, 0xff}}},\n    {{{ -1199,    -50,  -1077}, 0, { -1656,   -378}, {0x5d, 0x00, 0xaa, 0xff}}},\n    {{{ -1511,    -25,  -1414}, 0, {  2860,    118}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1602,    -25,  -1323}, 0, {  3034,   -902}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1210,    -25,  -1027}, 0, { -1870,   -902}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1199,    -25,  -1077}, 0, { -1656,   -528}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -858,    -50,  -1127}, 0, {  2404,   1018}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -535,    -50,  -1414}, 0, { -1900,   1288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -625,    -50,  -1504}, 0, { -1724,   2310}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1602,    -25,  -1323}, 0, {  3034,   -902}, {0x4c, 0x00, 0x9b, 0xff}}},\n    {{{ -1602,      0,  -1323}, 0, {  3034,  -1054}, {0x4c, 0x00, 0x9b, 0xff}}},\n    {{{ -1210,      0,  -1027}, 0, { -1870,  -1054}, {0x4c, 0x00, 0x9b, 0xff}}},\n    {{{ -1210,    -25,  -1027}, 0, { -1870,   -902}, {0x4c, 0x00, 0x9b, 0xff}}},\n};\n\n// 0x0702C200 - 0x0702C2F0\nstatic const Vtx inside_castle_seg7_vertex_0702C200[] = {\n    {{{  -716,    -76,  -1595}, 0, { -1550,   3480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -858,    -76,  -1127}, 0, {  2404,   1168}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -625,    -76,  -1504}, 0, { -1724,   2460}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    -76,  -1177}, 0, {  2192,   1544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,    -76,  -1595}, 0, { -1550,   3480}, {0x89, 0x00, 0xd5, 0xff}}},\n    {{{  -716,   -101,  -1595}, 0, { -1550,   3632}, {0x89, 0x00, 0xd5, 0xff}}},\n    {{{  -869,   -101,  -1177}, 0, {  2192,   1694}, {0x89, 0x00, 0xd5, 0xff}}},\n    {{{  -869,    -76,  -1177}, 0, {  2192,   1544}, {0x89, 0x00, 0xd5, 0xff}}},\n    {{{  -625,    -50,  -1504}, 0, { -1724,   2310}, {0x94, 0x00, 0xbe, 0xff}}},\n    {{{  -625,    -76,  -1504}, 0, { -1724,   2460}, {0x94, 0x00, 0xbe, 0xff}}},\n    {{{  -858,    -76,  -1127}, 0, {  2404,   1168}, {0x94, 0x00, 0xbe, 0xff}}},\n    {{{  -858,    -50,  -1127}, 0, {  2404,   1018}, {0x94, 0x00, 0xbe, 0xff}}},\n    {{{ -1330,   -101,  -5119}, 0, { -8928,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -101,  -1595}, 0, {  8656,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -101,  -5119}, 0, { -8928,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0702C2F0 - 0x0702C3E0\nstatic const Vtx inside_castle_seg7_vertex_0702C2F0[] = {\n    {{{  -858,    -50,  -1127}, 0, {  2404,   1018}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -847,    -50,  -1077}, 0, {  2616,    644}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -535,    -50,  -1414}, 0, { -1900,   1288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -847,    -50,  -1077}, 0, {  2616,    644}, {0xa3, 0x00, 0xaa, 0xff}}},\n    {{{  -535,    -25,  -1414}, 0, { -1900,   1138}, {0xa3, 0x00, 0xaa, 0xff}}},\n    {{{  -535,    -50,  -1414}, 0, { -1900,   1288}, {0xa3, 0x00, 0xaa, 0xff}}},\n    {{{  -847,    -25,  -1077}, 0, {  2616,    494}, {0xa3, 0x00, 0xaa, 0xff}}},\n    {{{  -847,    -25,  -1077}, 0, {  2616,    494}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -836,    -25,  -1027}, 0, {  2830,    120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -535,    -25,  -1414}, 0, { -1900,   1138}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -444,    -25,  -1323}, 0, { -2074,    120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -836,    -25,  -1027}, 0, {  2830,    120}, {0xb4, 0x00, 0x9b, 0xff}}},\n    {{{  -836,      0,  -1027}, 0, {  2830,      0}, {0xb4, 0x00, 0x9b, 0xff}}},\n    {{{  -444,    -25,  -1323}, 0, { -2074,    120}, {0xb4, 0x00, 0x9b, 0xff}}},\n    {{{  -444,      0,  -1323}, 0, { -2074,      0}, {0xb4, 0x00, 0x9b, 0xff}}},\n};\n\n// 0x0702C3E0 - 0x0702C430\nstatic const Vtx inside_castle_seg7_vertex_0702C3E0[] = {\n    {{{ -1330,   -101,  -5119}, 0, { -8928,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -101,  -1595}, 0, {  8656,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -101,  -1595}, 0, {  8656,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,   -101,  -1177}, 0, { 10742,   1244}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,   -101,  -1177}, 0, { 10742,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0702C430 - 0x0702C490\nstatic const Vtx inside_castle_seg7_vertex_0702C430[] = {\n    {{{  -451,    410,   -716}, 0, {  2474,  -2376}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1595,    410,   -716}, 0, {  2474,   3332}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1330,    410,  -1595}, 0, {  6556,   2010}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1902,    410,  -1023}, 0, {  3900,   4864}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -716,    410,  -1595}, 0, {  6556,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -144,    410,  -1023}, 0, {  3900,  -3908}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0702C490 - 0x0702C570\nstatic const Vtx inside_castle_seg7_vertex_0702C490[] = {\n    {{{ -1210,      0,  -1027}, 0, {  2178,   1518}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1602,      0,  -1323}, 0, {  4134,   2998}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1595,      0,   -716}, 0, {  4100,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1902,      0,  -1023}, 0, {  5632,   1498}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,      0,   -716}, 0, {  2522,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,      0,   -716}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -451,      0,   -716}, 0, { -1606,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -836,      0,  -1027}, 0, {   312,   1518}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -144,      0,  -1023}, 0, { -3140,   1498}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -444,      0,  -1323}, 0, { -1640,   2998}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1685,      0,   -806}, 0, {  4548,    418}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1794,      0,   -914}, 0, {  5090,    960}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1830,      0,   -878}, 0, {  5272,    778}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1721,      0,   -770}, 0, {  4730,    236}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0702C570 - 0x0702C670\nstatic const Vtx inside_castle_seg7_vertex_0702C570[] = {\n    {{{  -460,  -1074,    922}, 0, {  2778,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1586,  -1074,   1536}, 0, { -2840,   2776}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,  -1074,   1536}, 0, {  2778,   2776}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -325,      0,   -770}, 0, { -2236,    236}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -216,      0,   -878}, 0, { -2778,    778}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -252,      0,   -914}, 0, { -2598,    960}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -361,      0,   -806}, 0, { -2056,    418}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,  -1074,    922}, 0, {  2268,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,  -1074,    922}, 0, {   734,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,  -1074,    870}, 0, {   734,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,  -1074,    870}, 0, {  2268,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,  -1074,    358}, 0, {  3034,   2522}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,  -1074,    870}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,  -1074,    358}, 0, {     0,   2522}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,  -1074,    870}, 0, {  3034,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1586,  -1074,    922}, 0, { -2840,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0702C670 - 0x0702C770\nstatic const Vtx inside_castle_seg7_vertex_0702C670[] = {\n    {{{ -1199,    -50,  -1077}, 0, {  9190,  -3098}, {0x7c, 0x00, 0x1b, 0xff}}},\n    {{{ -1199,    -25,  -1077}, 0, {  9190,  -3354}, {0x7c, 0x00, 0x1b, 0xff}}},\n    {{{ -1210,    -25,  -1027}, 0, {  8692,  -3354}, {0x7c, 0x00, 0x1b, 0xff}}},\n    {{{  -767,   -383,   -716}, 0, {  5588,    224}, {0x84, 0x00, 0x1b, 0xff}}},\n    {{{  -836,    -25,  -1027}, 0, {  8692,  -3354}, {0x84, 0x00, 0x1b, 0xff}}},\n    {{{  -869,   -101,  -1177}, 0, { 10188,  -2588}, {0x84, 0x00, 0x1b, 0xff}}},\n    {{{  -767,   -383,   -716}, 0, {  5588,    224}, {0x85, 0x00, 0x1b, 0xff}}},\n    {{{  -767,      0,   -716}, 0, {  5590,  -3610}, {0x85, 0x00, 0x1b, 0xff}}},\n    {{{  -836,    -25,  -1027}, 0, {  8692,  -3354}, {0x85, 0x00, 0x1b, 0xff}}},\n    {{{  -869,   -127,  -1177}, 0, { 10188,  -2332}, {0x84, 0x00, 0x1b, 0xff}}},\n    {{{  -847,    -25,  -1077}, 0, {  9190,  -3354}, {0x84, 0x00, 0x1b, 0xff}}},\n    {{{  -847,    -50,  -1077}, 0, {  9190,  -3098}, {0x84, 0x00, 0x1b, 0xff}}},\n    {{{  -836,      0,  -1027}, 0, {  8692,  -3610}, {0x85, 0x00, 0x1b, 0xff}}},\n    {{{ -1177,   -127,  -1177}, 0, { 10188,  -2332}, {0x7c, 0x00, 0x1b, 0xff}}},\n    {{{ -1177,   -101,  -1177}, 0, { 10188,  -2588}, {0x7c, 0x00, 0x1b, 0xff}}},\n    {{{ -1279,   -383,   -716}, 0, {  5588,    224}, {0x7c, 0x00, 0x1b, 0xff}}},\n};\n\n// 0x0702C770 - 0x0702C850\nstatic const Vtx inside_castle_seg7_vertex_0702C770[] = {\n    {{{ -1210,    -25,  -1027}, 0, {  8692,  -3354}, {0x7b, 0x00, 0x1b, 0xff}}},\n    {{{ -1279,      0,   -716}, 0, {  5590,  -3610}, {0x7b, 0x00, 0x1b, 0xff}}},\n    {{{ -1279,   -383,   -716}, 0, {  5588,    224}, {0x7b, 0x00, 0x1b, 0xff}}},\n    {{{ -1210,      0,  -1027}, 0, {  8692,  -3610}, {0x7b, 0x00, 0x1b, 0xff}}},\n    {{{  -847,    -50,  -1077}, 0, {  9190,  -3098}, {0x84, 0x00, 0x1b, 0xff}}},\n    {{{  -858,    -50,  -1127}, 0, {  9690,  -3098}, {0x84, 0x00, 0x1b, 0xff}}},\n    {{{  -858,    -76,  -1127}, 0, {  9690,  -2842}, {0x84, 0x00, 0x1b, 0xff}}},\n    {{{  -869,    -76,  -1177}, 0, { 10188,  -2842}, {0x84, 0x00, 0x1b, 0xff}}},\n    {{{  -869,   -101,  -1177}, 0, { 10188,  -2588}, {0x84, 0x00, 0x1b, 0xff}}},\n    {{{ -1177,   -101,  -1177}, 0, { 10188,  -2588}, {0x7c, 0x00, 0x1b, 0xff}}},\n    {{{ -1177,    -76,  -1177}, 0, { 10188,  -2842}, {0x7c, 0x00, 0x1b, 0xff}}},\n    {{{ -1188,    -76,  -1127}, 0, {  9690,  -2842}, {0x7c, 0x00, 0x1b, 0xff}}},\n    {{{ -1188,    -50,  -1127}, 0, {  9690,  -3098}, {0x7c, 0x00, 0x1b, 0xff}}},\n    {{{ -1199,    -50,  -1077}, 0, {  9190,  -3098}, {0x7c, 0x00, 0x1b, 0xff}}},\n};\n\n// 0x0702C850 - 0x0702C950\nstatic const Vtx inside_castle_seg7_vertex_0702C850[] = {\n    {{{  -946,    154,  -5119}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1100,    154,  -5170}, 0, {   480,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -946,    154,  -5170}, 0, {   480,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1100,    154,  -5119}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1100,    154,  -5119}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1100,   -101,  -5119}, 0, {     0,   2522}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1100,   -101,  -5170}, 0, {   480,   2522}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1100,    154,  -5170}, 0, {   480,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -946,    154,  -5170}, 0, {   480,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -946,   -101,  -5119}, 0, {     0,   2522}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -946,    154,  -5119}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -946,   -101,  -5170}, 0, {   480,   2522}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -946,   -101,  -5170}, 0, {   480,   2522}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1100,   -101,  -5170}, 0, {   480,   2522}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1100,   -101,  -5119}, 0, {     0,   2522}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -946,   -101,  -5119}, 0, {     0,   2522}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0702C950 - 0x0702CA30\nstatic const Vtx inside_castle_seg7_vertex_0702C950[] = {\n    {{{ -1100,    154,  -5119}, 0, {  2268,  -1564}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -946,    154,  -5119}, 0, {  3800,  -1564}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -818,    410,  -5119}, 0, {  5078,  -4120}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,    307,  -5119}, 0, {  6100,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -101,  -5119}, 0, {  6100,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -946,   -101,  -5119}, 0, {  3800,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1228,    410,  -5119}, 0, {   990,  -4120}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,    307,  -5119}, 0, {     0,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -101,  -5119}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1100,   -101,  -5119}, 0, {  2268,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1279,    410,   -716}, 0, { 11298,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1279,      0,   -716}, 0, { 11298,   4054}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1330,      0,   -767}, 0, { 11808,   4054}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1330,    410,   -767}, 0, { 11808,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0702CA30 - 0x0702CB30\nstatic const Vtx inside_castle_seg7_vertex_0702CA30[] = {\n    {{{ -1330,    410,   -767}, 0, { 11808,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1330,      0,   -767}, 0, { 11808,   4054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1381,      0,   -767}, 0, { 12320,   4054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1381,    410,   -767}, 0, { 12320,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1902,    -76,  -1023}, 0, { -7360,   3798}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1330,    -76,  -1595}, 0, { -1650,   3798}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1902,    410,  -1023}, 0, { -7360,  -1054}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1330,    410,  -1595}, 0, { -1650,  -1054}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -144,    410,  -1023}, 0, { 10188,  -1054}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -716,    -76,  -1595}, 0, {  4480,   3798}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -144,    -76,  -1023}, 0, { 10188,   3798}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -716,    410,  -1595}, 0, {  4480,  -1054}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1381,    410,   -767}, 0, { 12320,      0}, {0xa8, 0x00, 0xa6, 0xff}}},\n    {{{ -1381,      0,   -767}, 0, { 12320,   4054}, {0xa8, 0x00, 0xa6, 0xff}}},\n    {{{ -1433,      0,   -716}, 0, { 12830,   4054}, {0xa8, 0x00, 0xa6, 0xff}}},\n    {{{ -1433,    410,   -716}, 0, { 12830,      0}, {0xa8, 0x00, 0xa6, 0xff}}},\n};\n\n// 0x0702CB30 - 0x0702CC10\nstatic const Vtx inside_castle_seg7_vertex_0702CB30[] = {\n    {{{ -1279,    256,   -716}, 0, { 11298,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1279,    410,   -716}, 0, { 11298,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1228,    307,   -716}, 0, { 10786,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -767,    410,   -716}, 0, {  6188,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -818,    307,   -716}, 0, {  6698,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -767,    256,   -716}, 0, {  6188,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1279,    219,   -665}, 0, {  5078,  -5800}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,   -383,   -716}, 0, {  5590,    224}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,    256,   -716}, 0, {  5590,  -6164}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,   -420,   -665}, 0, {  5078,    588}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1330,    132,   -613}, 0, {  4568,  -4924}, {0x5a, 0x00, 0x58, 0xff}}},\n    {{{ -1330,   -456,   -613}, 0, {  4568,    954}, {0x5a, 0x00, 0x58, 0xff}}},\n    {{{ -1279,   -420,   -665}, 0, {  5078,    588}, {0x5a, 0x00, 0x58, 0xff}}},\n    {{{ -1279,    219,   -665}, 0, {  5078,  -5800}, {0x5a, 0x00, 0x58, 0xff}}},\n};\n\n// 0x0702CC10 - 0x0702CD00\nstatic const Vtx inside_castle_seg7_vertex_0702CC10[] = {\n    {{{  -613,    410,   -716}, 0, {  4654,      0}, {0x58, 0x00, 0xa6, 0xff}}},\n    {{{  -613,      0,   -716}, 0, {  4654,   4054}, {0x58, 0x00, 0xa6, 0xff}}},\n    {{{  -665,      0,   -767}, 0, {  5166,   4054}, {0x58, 0x00, 0xa6, 0xff}}},\n    {{{ -1433,      0,   -716}, 0, { 12830,   4054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1595,      0,   -716}, 0, { 14452,   4054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1595,    410,   -716}, 0, { 14452,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1433,    410,   -716}, 0, { 12830,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1330,    132,   -613}, 0, {  4568,  -4924}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1330,   -562,    358}, 0, { -5140,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1330,   -456,   -613}, 0, {  4568,    954}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1330,  -1074,    358}, 0, { -5140,   7120}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -451,    410,   -716}, 0, {  3034,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -451,      0,   -716}, 0, {  3034,   4054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -613,      0,   -716}, 0, {  4654,   4054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -613,    410,   -716}, 0, {  4654,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0702CD00 - 0x0702CE00\nstatic const Vtx inside_castle_seg7_vertex_0702CD00[] = {\n    {{{  -716,    307,  -1595}, 0, {  4480,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,    410,  -1595}, 0, {  4480,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -818,    410,  -1595}, 0, {  3458,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -613,    410,   -716}, 0, {  4654,      0}, {0x58, 0x00, 0xa6, 0xff}}},\n    {{{  -665,      0,   -767}, 0, {  5166,   4054}, {0x58, 0x00, 0xa6, 0xff}}},\n    {{{  -665,    410,   -767}, 0, {  5166,      0}, {0x58, 0x00, 0xa6, 0xff}}},\n    {{{  -716,   -456,   -613}, 0, {  4568,    954}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -716,   -562,    358}, 0, { -5140,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -716,    132,   -613}, 0, {  4568,  -4924}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -716,  -1074,    358}, 0, { -5140,   7120}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1228,    410,  -1595}, 0, {  -628,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,    410,  -1595}, 0, { -1650,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,    307,  -1595}, 0, { -1650,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -252,    256,   -914}, 0, {  1052,   1500}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{  -361,    256,   -806}, 0, {  2136,   1500}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{  -451,    410,   -716}, 0, {  3034,      0}, {0xa7, 0x00, 0xa6, 0xff}}},\n};\n\n// 0x0702CE00 - 0x0702CF00\nstatic const Vtx inside_castle_seg7_vertex_0702CE00[] = {\n    {{{ -1595,      0,   -716}, 0, { 14452,   4054}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1685,      0,   -806}, 0, { 15350,   4054}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1685,    256,   -806}, 0, { 15350,   1500}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1595,    410,   -716}, 0, { 14452,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1595,    410,   -716}, 0, { 14452,      0}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{ -1685,    256,   -806}, 0, { 15350,   1500}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{ -1794,    256,   -914}, 0, { 16434,   1500}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{ -1902,    410,  -1023}, 0, { 17518,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1794,    256,   -914}, 0, { 16434,   1500}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1902,    410,  -1023}, 0, { 17518,      0}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{ -1794,    256,   -914}, 0, { 16434,   1500}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{ -1902,      0,  -1023}, 0, { 17518,   4054}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{ -1794,      0,   -914}, 0, { 16434,   4054}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{  -361,    256,   -806}, 0, {  2136,   1500}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -361,      0,   -806}, 0, {  2136,   4054}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -451,      0,   -716}, 0, {  3034,   4054}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0702CF00 - 0x0702D000\nstatic const Vtx inside_castle_seg7_vertex_0702CF00[] = {\n    {{{  -361,    256,   -806}, 0, {  2136,   1500}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -451,      0,   -716}, 0, {  3034,   4054}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -451,    410,   -716}, 0, {  3034,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1721,    256,   -770}, 0, {     0,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1830,    256,   -878}, 0, {     0,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1794,    256,   -914}, 0, {   480,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -252,    256,   -914}, 0, {  1052,   1500}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -144,    410,  -1023}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -144,      0,  -1023}, 0, {     0,   4054}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{  -252,    256,   -914}, 0, {  1052,   1500}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{  -144,    410,  -1023}, 0, {     0,      0}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{  -252,      0,   -914}, 0, {  1052,   4054}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{ -1830,    256,   -878}, 0, {     0,  -1564}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1794,      0,   -914}, 0, {   480,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1794,    256,   -914}, 0, {   480,  -1564}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1830,      0,   -878}, 0, {     0,    990}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x0702D000 - 0x0702D0E0\nstatic const Vtx inside_castle_seg7_vertex_0702D000[] = {\n    {{{ -1721,    256,   -770}, 0, {     0,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1794,    256,   -914}, 0, {   480,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1685,    256,   -806}, 0, {   480,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -252,      0,   -914}, 0, {   480,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -216,      0,   -878}, 0, {   990,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -216,    256,   -878}, 0, {   990,  -1566}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1685,    256,   -806}, 0, {   480,  -1564}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1685,      0,   -806}, 0, {   480,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1721,      0,   -770}, 0, {     0,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1721,    256,   -770}, 0, {     0,  -1564}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -325,    256,   -770}, 0, {   990,  -1566}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -361,      0,   -806}, 0, {   478,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -361,    256,   -806}, 0, {   480,  -1566}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -325,      0,   -770}, 0, {   990,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0702D0E0 - 0x0702D1C0\nstatic const Vtx inside_castle_seg7_vertex_0702D0E0[] = {\n    {{{  -361,    256,   -806}, 0, {   480,  -1566}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -252,    256,   -914}, 0, {   480,  -1566}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -216,    256,   -878}, 0, {   990,  -1566}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -325,    256,   -770}, 0, {   990,  -1566}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -869,   -818,    870}, 0, {   990,  -1564}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -869,  -1074,    870}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -869,  -1074,    922}, 0, {   478,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -252,    256,   -914}, 0, {   480,  -1566}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -252,      0,   -914}, 0, {   480,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -216,    256,   -878}, 0, {   990,  -1566}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1177,   -818,    870}, 0, {   990,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -869,   -818,    870}, 0, {   990,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -869,   -818,    922}, 0, {   478,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1177,   -818,    922}, 0, {   478,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0702D1C0 - 0x0702D2C0\nstatic const Vtx inside_castle_seg7_vertex_0702D1C0[] = {\n    {{{ -1177,   -818,    922}, 0, {   478,  -1564}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,  -1074,    922}, 0, {   478,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,  -1074,    870}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,   -818,    870}, 0, {   990,  -1564}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -869,   -818,    870}, 0, {   990,  -1564}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -869,  -1074,    922}, 0, {   478,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -869,   -818,    922}, 0, {   478,  -1564}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -716,  -1074,    870}, 0, { -2074,   6098}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -818,   -460,    870}, 0, { -1052,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -716,   -562,    870}, 0, { -2074,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -869,   -818,    870}, 0, {  -542,   3542}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -869,  -1074,    870}, 0, {  -542,   6098}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1177,   -818,    870}, 0, {  2524,   3542}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1228,   -460,    870}, 0, {  3034,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1330,  -1074,    870}, 0, {  4056,   6098}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1177,  -1074,    870}, 0, {  2524,   6098}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0702D2C0 - 0x0702D3A0\nstatic const Vtx inside_castle_seg7_vertex_0702D2C0[] = {\n    {{{ -1330,  -1074,    870}, 0, {  4056,   6098}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1330,   -562,    870}, 0, {  4056,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1228,   -460,    870}, 0, {  3034,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -716,  -1074,    870}, 0, {  4056,   3032}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -716,   -562,    870}, 0, {  4056,  -2076}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -716,   -562,    358}, 0, { -1052,  -2076}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -716,  -1074,    358}, 0, { -1052,   3032}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1330,   -562,    358}, 0, { -1052,  -2076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1330,   -562,    870}, 0, {  4056,  -2076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1330,  -1074,    870}, 0, {  4056,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -716,   -562,    358}, 0, { -1052,  -2076}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  -716,   -562,    870}, 0, {  4056,  -2076}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  -818,   -460,    870}, 0, {  4056,  -3098}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  -818,   -460,    358}, 0, { -1052,  -3098}, {0xa7, 0xa7, 0x00, 0xff}}},\n};\n\n// 0x0702D3A0 - 0x0702D480\nstatic const Vtx inside_castle_seg7_vertex_0702D3A0[] = {\n    {{{  -818,   -460,    358}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1228,   -460,    870}, 0, {  4056,   5076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1228,   -460,    358}, 0, {  4056,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -818,   -460,    870}, 0, {     0,   5076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1228,   -460,    358}, 0, { -1052,  -3098}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{ -1228,   -460,    870}, 0, {  4056,  -3098}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{ -1330,   -562,    870}, 0, {  4056,  -2076}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{ -1330,   -562,    358}, 0, { -1052,  -2076}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{  -716,   -101,  -5119}, 0, {-17404,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -716,    307,  -1595}, 0, { 17766,  -3098}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -716,    307,  -5119}, 0, {-17404,  -3098}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1330,   -562,    358}, 0, { -1052,  -2076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1330,  -1074,    870}, 0, {  4056,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1330,  -1074,    358}, 0, { -1052,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0702D480 - 0x0702D570\nstatic const Vtx inside_castle_seg7_vertex_0702D480[] = {\n    {{{  -716,    205,   -716}, 0, { -1052,  -2588}, {0xb0, 0xb0, 0xc7, 0xff}}},\n    {{{  -818,   -460,    358}, 0, {     0,   4054}, {0xb0, 0xb0, 0xc7, 0xff}}},\n    {{{  -818,    307,   -716}, 0, {     0,  -3610}, {0xb0, 0xb0, 0xc7, 0xff}}},\n    {{{  -716,   -562,    358}, 0, { -1052,   5076}, {0xb0, 0xb0, 0xc7, 0xff}}},\n    {{{  -818,    307,   -716}, 0, {     0,  -3610}, {0x00, 0x99, 0xb7, 0xff}}},\n    {{{  -818,   -460,    358}, 0, {     0,   4054}, {0x00, 0x99, 0xb7, 0xff}}},\n    {{{ -1228,   -460,    358}, 0, {  4056,   4054}, {0x00, 0x99, 0xb7, 0xff}}},\n    {{{ -1228,    307,   -716}, 0, {  4056,  -3610}, {0x00, 0x99, 0xb7, 0xff}}},\n    {{{ -1228,    307,   -716}, 0, {  4056,  -3610}, {0x50, 0xb0, 0xc7, 0xff}}},\n    {{{ -1228,   -460,    358}, 0, {  4056,   4054}, {0x50, 0xb0, 0xc7, 0xff}}},\n    {{{ -1330,   -562,    358}, 0, {  5078,   5076}, {0x50, 0xb0, 0xc7, 0xff}}},\n    {{{ -1330,    205,   -716}, 0, {  5078,  -2588}, {0x50, 0xb0, 0xc7, 0xff}}},\n    {{{  -716,   -101,  -5119}, 0, {-17404,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -716,   -101,  -1595}, 0, { 17766,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -716,    307,  -1595}, 0, { 17766,  -3098}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0702D570 - 0x0702D670\nstatic const Vtx inside_castle_seg7_vertex_0702D570[] = {\n    {{{  -716,    307,  -5119}, 0, {-17404,  -3098}, {0xa6, 0xa7, 0x00, 0xff}}},\n    {{{  -818,    410,  -1595}, 0, { 17766,  -4120}, {0xa6, 0xa7, 0x00, 0xff}}},\n    {{{  -818,    410,  -5119}, 0, {-17404,  -4120}, {0xa6, 0xa7, 0x00, 0xff}}},\n    {{{  -716,    307,  -1595}, 0, { 17766,  -3098}, {0xa6, 0xa7, 0x00, 0xff}}},\n    {{{  -818,    410,  -5119}, 0, {-18426,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -818,    410,  -1595}, 0, { 16744,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1228,    410,  -1595}, 0, { 16744,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1228,    410,  -5119}, 0, {-18426,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1228,    410,  -5119}, 0, {-17404,  -4120}, {0x5a, 0xa7, 0x00, 0xff}}},\n    {{{ -1228,    410,  -1595}, 0, { 17766,  -4120}, {0x5a, 0xa7, 0x00, 0xff}}},\n    {{{ -1330,    307,  -1595}, 0, { 17766,  -3098}, {0x5a, 0xa7, 0x00, 0xff}}},\n    {{{ -1330,    307,  -5119}, 0, {-17404,  -3098}, {0x5a, 0xa7, 0x00, 0xff}}},\n    {{{ -1330,    307,  -5119}, 0, {-17404,  -3098}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1330,    307,  -1595}, 0, { 17766,  -3098}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1330,   -101,  -1595}, 0, { 17766,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1330,   -101,  -5119}, 0, {-17404,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0702D670 - 0x0702D770\nstatic const Vtx inside_castle_seg7_vertex_0702D670[] = {\n    {{{  -716,    410,   -767}, 0, {  5676,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -716,      0,   -767}, 0, {  5676,   4054}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -767,      0,   -716}, 0, {  6188,   4054}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -767,    410,   -716}, 0, {  6188,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -665,    410,   -767}, 0, {  5166,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -716,      0,   -767}, 0, {  5676,   4054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -716,    410,   -767}, 0, {  5676,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -665,      0,   -767}, 0, {  5166,   4054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -767,    219,   -665}, 0, {  5078,  -5800}, {0xa6, 0x00, 0x58, 0xff}}},\n    {{{  -716,   -456,   -613}, 0, {  4568,    954}, {0xa6, 0x00, 0x58, 0xff}}},\n    {{{  -716,    132,   -613}, 0, {  4568,  -4924}, {0xa6, 0x00, 0x58, 0xff}}},\n    {{{  -767,   -420,   -665}, 0, {  5078,    588}, {0xa6, 0x00, 0x58, 0xff}}},\n    {{{  -767,    256,   -716}, 0, {  5590,  -6164}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -767,   -420,   -665}, 0, {  5078,    588}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -767,    219,   -665}, 0, {  5078,  -5800}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -767,   -383,   -716}, 0, {  5590,    224}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0702D770 - 0x0702DE40\nstatic const Gfx inside_castle_seg7_dl_0702D770[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_0702AB90.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0702AB90.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0702ABC0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702ACB0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702ADA0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702AE90, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702AF80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702B070, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702B160, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702B250, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702B340, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702B430, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702B520, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_0702ABA8.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0702ABA8.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0702B5E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702B6D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702B7C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  3,  7,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702B8C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702B9B0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702BA90, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702BB80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702BC70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702BD60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702BE50, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702BF40, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702C020, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702C110, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702C200, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702C2F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702C3E0, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP1Triangle( 1,  4,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0702DE40 - 0x0702DE88\nstatic const Gfx inside_castle_seg7_dl_0702DE40[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_0900B000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0702C430, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  0,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0702DE88 - 0x0702DF38\nstatic const Gfx inside_castle_seg7_dl_0702DE88[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0702C490, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702C570, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0702DF38 - 0x0702E408\nstatic const Gfx inside_castle_seg7_dl_0702DF38[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0702C670, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  3,  5,  9, 0x0),\n    gsSP2Triangles( 4, 10, 11, 0x0,  7, 12,  8, 0x0),\n    gsSP2Triangles(13, 14,  2, 0x0, 13,  2, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702C770, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702C850, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702C950, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  1,  5,  4, 0x0),\n    gsSP2Triangles( 0,  2,  6, 0x0,  0,  6,  7, 0x0),\n    gsSP2Triangles( 0,  7,  8, 0x0,  9,  0,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702CA30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702CB30, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 3,  4,  2, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702CC10, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 11, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702CD00, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702CE00, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  3,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 10, 12, 11, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702CF00, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  2,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 8, 11,  9, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 15, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702D000, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702D0E0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702D1C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  7, 11, 10, 0x0),\n    gsSP2Triangles(10, 12, 13, 0x0, 10, 13,  8, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0, 12, 15, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702D2C0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702D3A0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702D480, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702D570, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702D670, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0702E408 - 0x0702E490\nconst Gfx inside_castle_seg7_dl_0702E408[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_0702D770),\n    gsSPDisplayList(inside_castle_seg7_dl_0702DE40),\n    gsSPDisplayList(inside_castle_seg7_dl_0702DE88),\n    gsSPDisplayList(inside_castle_seg7_dl_0702DF38),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/1/9/model.inc.c",
    "content": "// 0x0702E490 - 0x0702E4A8\nstatic const Lights1 inside_castle_seg7_lights_0702E490 = gdSPDefLights1(\n    0x52, 0x52, 0x52,\n    0xdd, 0xdd, 0xdd, 0x28, 0x28, 0x28\n);\n\n// 0x0702E4A8 - 0x0702E4C0\nstatic const Lights1 inside_castle_seg7_lights_0702E4A8 = gdSPDefLights1(\n    0x5f, 0x5f, 0x5f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0702E4C0 - 0x0702E4D8\nstatic const Lights1 inside_castle_seg7_lights_0702E4C0 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x0702E4D8 - 0x0702E4F0\nstatic const Lights1 inside_castle_seg7_lights_0702E4D8 = gdSPDefLights1(\n    0x07, 0x07, 0x07,\n    0x13, 0x13, 0x13, 0x28, 0x28, 0x28\n);\n\n// 0x0702E4F0 - 0x0702E508\nstatic const Lights1 inside_castle_seg7_lights_0702E4F0 = gdSPDefLights1(\n    0x0f, 0x0f, 0x0f,\n    0x29, 0x29, 0x29, 0x28, 0x28, 0x28\n);\n\n// 0x0702E508 - 0x0702E608\nstatic const Vtx inside_castle_seg7_vertex_0702E508[] = {\n    {{{ -3087,    640,  -2404}, 0, {  6100,   1048}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3593,    640,  -1898}, 0, { -1052,   1048}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3593,    614,  -1898}, 0, { -1052,   1240}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3141,    717,  -2459}, 0, {  6100,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3648,    717,  -1952}, 0, { -1052,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3648,    691,  -1952}, 0, { -1052,    160}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3141,    691,  -2459}, 0, {  6100,    160}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3123,    691,  -2441}, 0, {  6100,    328}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3630,    691,  -1934}, 0, { -1052,    328}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3123,    666,  -2441}, 0, {  6100,    520}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3630,    666,  -1934}, 0, { -1052,    520}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3105,    666,  -2423}, 0, {  6100,    690}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3611,    666,  -1916}, 0, { -1052,    690}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3105,    640,  -2423}, 0, {  6100,    882}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3611,    640,  -1916}, 0, { -1052,    882}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3087,    614,  -2404}, 0, {  6100,   1240}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x0702E608 - 0x0702E708\nstatic const Vtx inside_castle_seg7_vertex_0702E608[] = {\n    {{{ -3068,    614,  -2386}, 0, {  6100,   1408}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3575,    589,  -1879}, 0, { -1052,   1600}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3068,    589,  -2386}, 0, {  6100,   1600}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3575,    614,  -1879}, 0, { -1052,   1408}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3050,    589,  -2368}, 0, {  6100,   1768}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3557,    589,  -1861}, 0, { -1052,   1768}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3557,    563,  -1861}, 0, { -1052,   1960}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3050,    563,  -2368}, 0, {  6100,   1960}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3032,    563,  -2350}, 0, {  6100,   2130}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3539,    563,  -1843}, 0, { -1052,   2130}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3032,    538,  -2350}, 0, {  6100,   2322}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3014,    512,  -2332}, 0, {  6100,   2682}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3521,    538,  -1825}, 0, { -1052,   2490}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3521,    512,  -1825}, 0, { -1052,   2682}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3539,    538,  -1843}, 0, { -1052,   2322}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3014,    538,  -2332}, 0, {  6100,   2490}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x0702E708 - 0x0702E808\nstatic const Vtx inside_castle_seg7_vertex_0702E708[] = {\n    {{{ -3141,    691,  -2459}, 0, {  6100,    160}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3648,    691,  -1952}, 0, { -1052,    160}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3630,    691,  -1934}, 0, { -1052,    328}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5983,    717,  -4287}, 0, { -1052,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -5983,    666,  -4287}, 0, { -1052,    478}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -5476,    666,  -4794}, 0, {  6100,    480}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -5476,    717,  -4794}, 0, {  6100,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -5548,    717,  -3853}, 0, {   990,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -5042,    717,  -4359}, 0, { -6162,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -5042,    666,  -4359}, 0, { -6162,    480}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -5548,    666,  -3853}, 0, {   990,    478}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -5042,    717,  -4359}, 0, {  3546,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3648,    717,  -1952}, 0, {     0,  14402}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3141,    717,  -2459}, 0, {  3546,  14402}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5548,    717,  -3853}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3123,    691,  -2441}, 0, {  6100,    328}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0702E808 - 0x0702E8F8\nstatic const Vtx inside_castle_seg7_vertex_0702E808[] = {\n    {{{ -3123,    666,  -2441}, 0, {  6100,    520}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3611,    666,  -1916}, 0, { -1052,    690}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3105,    666,  -2423}, 0, {  6100,    690}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3630,    666,  -1934}, 0, { -1052,    520}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3105,    640,  -2423}, 0, {  6100,    882}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3611,    640,  -1916}, 0, { -1052,    882}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3593,    640,  -1898}, 0, { -1052,   1048}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3087,    640,  -2404}, 0, {  6100,   1048}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3087,    614,  -2404}, 0, {  6100,   1240}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3593,    614,  -1898}, 0, { -1052,   1240}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3068,    614,  -2386}, 0, {  6100,   1408}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3032,    538,  -2350}, 0, {  6100,   2322}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3539,    538,  -1843}, 0, { -1052,   2322}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3521,    538,  -1825}, 0, { -1052,   2490}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3575,    614,  -1879}, 0, { -1052,   1408}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0702E8F8 - 0x0702E9E8\nstatic const Vtx inside_castle_seg7_vertex_0702E8F8[] = {\n    {{{ -3068,    589,  -2386}, 0, {  6100,   1600}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3575,    589,  -1879}, 0, { -1052,   1600}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3557,    589,  -1861}, 0, { -1052,   1768}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3050,    589,  -2368}, 0, {  6100,   1768}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3050,    563,  -2368}, 0, {  6100,   1960}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3539,    563,  -1843}, 0, { -1052,   2130}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3032,    563,  -2350}, 0, {  6100,   2130}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3557,    563,  -1861}, 0, { -1052,   1960}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3032,    538,  -2350}, 0, {  6100,   2322}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3521,    538,  -1825}, 0, { -1052,   2490}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3014,    538,  -2332}, 0, {  6100,   2490}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5983,    717,  -4287}, 0, {     0,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5476,    717,  -4794}, 0, {  3546,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6924,    717,  -6242}, 0, {  3544, -12296}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -7431,    717,  -5735}, 0, {     0, -12296}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0702E9E8 - 0x0702EA68\nstatic const Vtx inside_castle_seg7_vertex_0702E9E8[] = {\n    {{{ -2797,    512,  -1391}, 0, {  2522,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2543,    512,  -1572}, 0, {  2778,   -542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2580,    512,  -1608}, 0, {  2524,   -542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2761,    512,  -1355}, 0, {  2778,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2942,    512,  -1246}, 0, {  2522,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2435,    512,  -1753}, 0, {  2524,  -1566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3014,    512,  -2332}, 0, { -1562,  -1566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3521,    512,  -1825}, 0, { -1562,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0702EA68 - 0x0702EB58\nstatic const Vtx inside_castle_seg7_vertex_0702EA68[] = {\n    {{{ -5114,   1536,  -3418}, 0, { -4118,  -2586}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2435,   1536,  -1753}, 0, { 11210,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2942,   1536,  -1246}, 0, { 11210,  -2588}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -6960,   1434,  -6206}, 0, {  2012,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -6924,    717,  -6242}, 0, {  2268,   7120}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -6924,   1536,  -6242}, 0, {  2268,  -1054}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -6960,    819,  -6206}, 0, {  2012,   6098}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -7395,    819,  -5771}, 0, { -1052,   6098}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -7431,    717,  -5735}, 0, { -1308,   7120}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -7431,   1536,  -5735}, 0, { -1308,  -1054}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -7395,   1434,  -5771}, 0, { -1052,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -6924,   1536,  -6242}, 0, {-10250,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -4716,   1536,  -4034}, 0, {  5334,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -5223,   1536,  -3527}, 0, {  5334,  -2588}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -7431,   1536,  -5735}, 0, {-10250,  -2588}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0702EB58 - 0x0702EC48\nstatic const Vtx inside_castle_seg7_vertex_0702EB58[] = {\n    {{{ -5114,   1536,  -3418}, 0, {  7634,  -6164}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2942,    717,  -1246}, 0, { -7694,   2010}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -5114,    717,  -3418}, 0, {  7634,   2010}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -5114,   1536,  -3418}, 0, { -4118,  -2586}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -4607,   1536,  -3925}, 0, { -4118,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2435,   1536,  -1753}, 0, { 11210,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -7431,    717,  -5735}, 0, { -7694,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -5223,   1536,  -3527}, 0, {  7888,  -7186}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -5223,    717,  -3527}, 0, {  7888,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -7431,   1536,  -5735}, 0, { -7694,  -7186}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -4716,   1536,  -4034}, 0, {  7888,  -7186}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -6924,   1536,  -6242}, 0, { -7694,  -7186}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -6924,    717,  -6242}, 0, { -7694,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -4716,    717,  -4034}, 0, {  7888,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2942,   1536,  -1246}, 0, { -7696,  -6164}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0702EC48 - 0x0702ED48\nstatic const Vtx inside_castle_seg7_vertex_0702EC48[] = {\n    {{{ -2797,    768,  -1391}, 0, {  1502,   3542}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2942,    512,  -1246}, 0, {  2524,   6098}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2942,   1536,  -1246}, 0, {  2524,  -4120}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2435,    717,  -1753}, 0, { -7696,   2010}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2435,   1536,  -1753}, 0, { -7696,  -6164}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -4607,   1536,  -3925}, 0, {  7634,  -6164}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -4607,    717,  -3925}, 0, {  7634,   2010}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2435,    512,  -1753}, 0, { -7694,   4054}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -3159,    512,  -2477}, 0, { -2584,   4054}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -3159,    717,  -2477}, 0, { -2584,   2010}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -3666,    512,  -1970}, 0, { -2584,   4054}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -3666,    717,  -1970}, 0, { -2584,   2010}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2942,    512,  -1246}, 0, { -7694,   4054}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2942,    717,  -1246}, 0, { -7694,   2010}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2580,    768,  -1608}, 0, {     0,   3542}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2797,    512,  -1391}, 0, {  1502,   6098}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0702ED48 - 0x0702EE48\nstatic const Vtx inside_castle_seg7_vertex_0702ED48[] = {\n    {{{ -2580,    768,  -1608}, 0, {     0,   3542}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2942,   1536,  -1246}, 0, {  2524,  -4120}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2435,   1536,  -1753}, 0, { -1052,  -4120}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2435,    512,  -1753}, 0, { -1052,   6098}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2580,    512,  -1608}, 0, {     0,   6098}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2580,    512,  -1608}, 0, {     0,    990}, {0xa8, 0x00, 0x5b, 0xff}}},\n    {{{ -2543,    768,  -1572}, 0, {   480,  -1564}, {0xa8, 0x00, 0x5b, 0xff}}},\n    {{{ -2580,    768,  -1608}, 0, {     0,  -1564}, {0xa8, 0x00, 0x5b, 0xff}}},\n    {{{ -2543,    512,  -1572}, 0, {   478,    990}, {0xa8, 0x00, 0x5b, 0xff}}},\n    {{{ -2797,    768,  -1391}, 0, {     0,  -1564}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2761,    768,  -1355}, 0, {   480,  -1564}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2761,    512,  -1355}, 0, {   478,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2543,    768,  -1572}, 0, {   480,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2761,    768,  -1355}, 0, {   480,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2797,    768,  -1391}, 0, {     0,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2797,    512,  -1391}, 0, {     0,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0702EE48 - 0x0702EE78\nstatic const Vtx inside_castle_seg7_vertex_0702EE48[] = {\n    {{{ -2543,    768,  -1572}, 0, {   480,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2797,    768,  -1391}, 0, {     0,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2580,    768,  -1608}, 0, {     0,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0702EE78 - 0x0702EF68\nstatic const Vtx inside_castle_seg7_vertex_0702EE78[] = {\n    {{{ -6128,    717,  -5373}, 0, {   650,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -6164,   1485,  -5409}, 0, {   308,     96}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -6164,    717,  -5409}, 0, {   308,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -6671,    717,  -4975}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6671,   1536,  -4975}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6598,   1485,  -4975}, 0, {   650,     96}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6598,    717,  -4975}, 0, {   650,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6598,    717,  -4975}, 0, {   650,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -6598,   1485,  -4975}, 0, {   650,     96}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -6562,   1485,  -4939}, 0, {   308,     96}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -6562,    717,  -4939}, 0, {   308,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -6598,   1485,  -4975}, 0, {   308,    116}, {0xc1, 0xa6, 0xc1, 0xff}}},\n    {{{ -6671,   1536,  -4975}, 0, {     0,      0}, {0xc1, 0xa6, 0xc1, 0xff}}},\n    {{{ -6164,   1536,  -5482}, 0, {     0,   2012}, {0xc1, 0xa6, 0xc1, 0xff}}},\n    {{{ -6164,   1485,  -5409}, 0, {   308,   1868}, {0xc1, 0xa6, 0xc1, 0xff}}},\n};\n\n// 0x0702EF68 - 0x0702F048\nstatic const Vtx inside_castle_seg7_vertex_0702EF68[] = {\n    {{{ -6164,    717,  -5409}, 0, {   308,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -6164,   1485,  -5409}, 0, {   308,     96}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -6164,   1536,  -5482}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -6164,    717,  -5482}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -6128,    717,  -5373}, 0, {   650,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -6128,   1485,  -5373}, 0, {   650,     96}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -6164,   1485,  -5409}, 0, {   308,     96}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -6055,    717,  -5373}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -6128,   1485,  -5373}, 0, {   650,     96}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -6128,    717,  -5373}, 0, {   650,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -6128,   1485,  -5373}, 0, {   650,   1868}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -6562,   1485,  -4939}, 0, {   650,    116}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -6598,   1485,  -4975}, 0, {   308,    116}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -6164,   1485,  -5409}, 0, {   308,   1868}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0702F048 - 0x0702F138\nstatic const Vtx inside_castle_seg7_vertex_0702F048[] = {\n    {{{ -5223,    717,  -3527}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5223,   1536,  -3527}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5150,   1485,  -3527}, 0, {   308,     96}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6562,   1536,  -4866}, 0, {   990,      0}, {0x3f, 0xa6, 0x3f, 0xff}}},\n    {{{ -6562,   1485,  -4939}, 0, {   650,    116}, {0x3f, 0xa6, 0x3f, 0xff}}},\n    {{{ -6128,   1485,  -5373}, 0, {   650,   1868}, {0x3f, 0xa6, 0x3f, 0xff}}},\n    {{{ -6055,   1536,  -5373}, 0, {   990,   2012}, {0x3f, 0xa6, 0x3f, 0xff}}},\n    {{{ -6562,    717,  -4939}, 0, {   308,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6562,   1485,  -4939}, 0, {   308,     96}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6562,   1536,  -4866}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6562,    717,  -4866}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6055,    717,  -5373}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -6055,   1536,  -5373}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -6128,   1485,  -5373}, 0, {   650,     96}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5150,    717,  -3527}, 0, {   308,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0702F138 - 0x0702F228\nstatic const Vtx inside_castle_seg7_vertex_0702F138[] = {\n    {{{ -4679,    717,  -3925}, 0, {   650,   2012}, {0xa8, 0x00, 0x5b, 0xff}}},\n    {{{ -4716,   1485,  -3961}, 0, {   308,     96}, {0xa8, 0x00, 0x5b, 0xff}}},\n    {{{ -4716,    717,  -3961}, 0, {   308,   2012}, {0xa8, 0x00, 0x5b, 0xff}}},\n    {{{ -5150,    717,  -3527}, 0, {   308,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -5150,   1485,  -3527}, 0, {   308,     96}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -5114,   1485,  -3491}, 0, {   650,     96}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -5114,    717,  -3491}, 0, {   650,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -4716,   1485,  -3961}, 0, {   308,   1864}, {0xc1, 0xa6, 0xc1, 0xff}}},\n    {{{ -5150,   1485,  -3527}, 0, {   308,    112}, {0xc1, 0xa6, 0xc1, 0xff}}},\n    {{{ -5223,   1536,  -3527}, 0, {     0,      0}, {0xc1, 0xa6, 0xc1, 0xff}}},\n    {{{ -4716,   1536,  -4034}, 0, {     0,   2012}, {0xc1, 0xa6, 0xc1, 0xff}}},\n    {{{ -4716,    717,  -3961}, 0, {   308,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4716,   1485,  -3961}, 0, {   308,     96}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4716,   1536,  -4034}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4716,    717,  -4034}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0702F228 - 0x0702F328\nstatic const Vtx inside_castle_seg7_vertex_0702F228[] = {\n    {{{ -4607,    717,  -3925}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4679,   1485,  -3925}, 0, {   650,     96}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4679,    717,  -3925}, 0, {   650,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4679,    717,  -3925}, 0, {   650,   2012}, {0xa8, 0x00, 0x5b, 0xff}}},\n    {{{ -4679,   1485,  -3925}, 0, {   650,     96}, {0xa8, 0x00, 0x5b, 0xff}}},\n    {{{ -4716,   1485,  -3961}, 0, {   308,     96}, {0xa8, 0x00, 0x5b, 0xff}}},\n    {{{ -4679,   1485,  -3925}, 0, {   650,   1864}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -5114,   1485,  -3491}, 0, {   650,    112}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -5150,   1485,  -3527}, 0, {   308,    112}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -4716,   1485,  -3961}, 0, {   308,   1864}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -4607,   1536,  -3925}, 0, {   990,   2012}, {0x3f, 0xa6, 0x3f, 0xff}}},\n    {{{ -5114,   1536,  -3418}, 0, {   990,      0}, {0x3f, 0xa6, 0x3f, 0xff}}},\n    {{{ -5114,   1485,  -3491}, 0, {   650,    112}, {0x3f, 0xa6, 0x3f, 0xff}}},\n    {{{ -4607,   1536,  -3925}, 0, {   990,   2012}, {0x3f, 0xa7, 0x3f, 0xff}}},\n    {{{ -5114,   1485,  -3491}, 0, {   650,    112}, {0x3f, 0xa7, 0x3f, 0xff}}},\n    {{{ -4679,   1485,  -3925}, 0, {   650,   1864}, {0x3f, 0xa7, 0x3f, 0xff}}},\n};\n\n// 0x0702F328 - 0x0702F418\nstatic const Vtx inside_castle_seg7_vertex_0702F328[] = {\n    {{{ -3774,    717,  -2079}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3702,   1485,  -2079}, 0, {   650,     96}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3702,    717,  -2079}, 0, {   650,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5114,    717,  -3491}, 0, {   650,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -5114,   1485,  -3491}, 0, {   650,     96}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -5114,   1536,  -3418}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -5114,    717,  -3418}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4607,    717,  -3925}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4607,   1536,  -3925}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4679,   1485,  -3925}, 0, {   650,     96}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3666,    717,  -2042}, 0, {   308,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3666,   1485,  -2042}, 0, {   308,     96}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3666,   1536,  -1970}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3666,    717,  -1970}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3774,   1536,  -2079}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0702F418 - 0x0702F508\nstatic const Vtx inside_castle_seg7_vertex_0702F418[] = {\n    {{{ -3231,   1485,  -2477}, 0, {   308,    116}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3666,   1485,  -2042}, 0, {   308,   1868}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3702,   1485,  -2079}, 0, {   650,   1868}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3702,    717,  -2079}, 0, {   650,   2012}, {0x5b, 0x00, 0xa8, 0xff}}},\n    {{{ -3702,   1485,  -2079}, 0, {   650,     96}, {0x5b, 0x00, 0xa8, 0xff}}},\n    {{{ -3666,   1485,  -2042}, 0, {   308,     96}, {0x5b, 0x00, 0xa8, 0xff}}},\n    {{{ -3666,    717,  -2042}, 0, {   308,   2012}, {0x5b, 0x00, 0xa8, 0xff}}},\n    {{{ -3268,   1485,  -2513}, 0, {   650,    116}, {0xc1, 0xa7, 0xc1, 0xff}}},\n    {{{ -3702,   1485,  -2079}, 0, {   650,   1868}, {0xc1, 0xa7, 0xc1, 0xff}}},\n    {{{ -3774,   1536,  -2079}, 0, {   990,   2012}, {0xc1, 0xa7, 0xc1, 0xff}}},\n    {{{ -3268,   1536,  -2585}, 0, {   990,      0}, {0xc1, 0xa7, 0xc1, 0xff}}},\n    {{{ -3159,   1536,  -2477}, 0, {     0,      0}, {0x3f, 0xa7, 0x3f, 0xff}}},\n    {{{ -3666,   1536,  -1970}, 0, {     0,   2012}, {0x3f, 0xa7, 0x3f, 0xff}}},\n    {{{ -3666,   1485,  -2042}, 0, {   308,   1864}, {0x3f, 0xa7, 0x3f, 0xff}}},\n    {{{ -3231,   1485,  -2477}, 0, {   308,    116}, {0x3f, 0xa7, 0x3f, 0xff}}},\n};\n\n// 0x0702F508 - 0x0702F5F8\nstatic const Vtx inside_castle_seg7_vertex_0702F508[] = {\n    {{{ -3231,    717,  -2477}, 0, {   308,   2012}, {0xa8, 0x00, 0x5b, 0xff}}},\n    {{{ -3231,   1485,  -2477}, 0, {   308,     96}, {0xa8, 0x00, 0x5b, 0xff}}},\n    {{{ -3268,   1485,  -2513}, 0, {   650,     96}, {0xa8, 0x00, 0x5b, 0xff}}},\n    {{{ -3231,   1485,  -2477}, 0, {   308,    116}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3702,   1485,  -2079}, 0, {   650,   1868}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3268,   1485,  -2513}, 0, {   650,    116}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3268,    717,  -2513}, 0, {   650,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3268,   1536,  -2585}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3268,    717,  -2585}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3268,    717,  -2513}, 0, {   650,   2012}, {0xa8, 0x00, 0x5b, 0xff}}},\n    {{{ -3268,   1485,  -2513}, 0, {   650,     96}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3159,    717,  -2477}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3159,   1536,  -2477}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3231,   1485,  -2477}, 0, {   308,     96}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3231,    717,  -2477}, 0, {   308,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0702F5F8 - 0x0702F638\nstatic const Vtx inside_castle_seg7_vertex_0702F5F8[] = {\n    {{{ -5548,    512,  -3853}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5042,    512,  -4359}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5476,    512,  -4794}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5983,    512,  -4287}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0702F638 - 0x0702F6B8\nstatic const Vtx inside_castle_seg7_vertex_0702F638[] = {\n    {{{ -5476,    666,  -4794}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -5983,    666,  -4287}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -5983,    512,  -4287}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -5476,    512,  -4794}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -5548,    666,  -3853}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -5042,    512,  -4359}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -5548,    512,  -3853}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -5042,    666,  -4359}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0702F6B8 - 0x0702F738\nstatic const Vtx inside_castle_seg7_vertex_0702F6B8[] = {\n    {{{ -5983,    512,  -4287}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -5983,    717,  -4287}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -5548,    717,  -3853}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -5548,    512,  -3853}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -5042,    512,  -4359}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -5476,    717,  -4794}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -5476,    512,  -4794}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -5042,    717,  -4359}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x0702F738 - 0x0702F8D0\nstatic const Gfx inside_castle_seg7_dl_0702F738[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_0702E490.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0702E490.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0702E508, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(13, 12, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702E608, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(10,  9, 14, 0x0, 15, 12, 11, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_0702E4A8.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0702E4A8.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0702E708, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702E808, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(10,  9, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702E8F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0702F8D0 - 0x0702F918\nstatic const Gfx inside_castle_seg7_dl_0702F8D0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0702E9E8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0702F918 - 0x0702FA80\nstatic const Gfx inside_castle_seg7_dl_0702F918[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0702EA68, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 4,  7,  8, 0x0,  9,  7, 10, 0x0),\n    gsSP2Triangles( 9,  8,  7, 0x0,  3,  5,  9, 0x0),\n    gsSP2Triangles( 9, 10,  3, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 11, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702EB58, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702EC48, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  3,  8, 0x0),\n    gsSP2Triangles( 3,  9,  8, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(11, 13, 12, 0x0, 14,  0,  2, 0x0),\n    gsSP1Triangle( 0, 15,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702ED48, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 3,  0,  2, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0,  9, 11, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702EE48, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0702FA80 - 0x0702FC90\nstatic const Gfx inside_castle_seg7_dl_0702FA80[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0702EE78, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 11, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702EF68, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702F048, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702F138, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702F228, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702F328, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702F418, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0702F508, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  0,  2,  9, 0x0),\n    gsSP2Triangles( 6, 10,  7, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0702FC90 - 0x0702FD30\nstatic const Gfx inside_castle_seg7_dl_0702FC90[] = {\n    gsSPLight(&inside_castle_seg7_lights_0702E4C0.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0702E4C0.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0702F5F8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_0702E4D8.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0702E4D8.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0702F638, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_0702E4F0.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0702E4F0.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0702F6B8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0702FD30 - 0x0702FDD8\nconst Gfx inside_castle_seg7_dl_0702FD30[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_0702F738),\n    gsSPDisplayList(inside_castle_seg7_dl_0702F8D0),\n    gsSPDisplayList(inside_castle_seg7_dl_0702F918),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_0702FA80),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(inside_castle_seg7_dl_0702FC90),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/1/collision.inc.c",
    "content": "// 0x07068B88 - 0x0706E362\nconst Collision inside_castle_seg7_area_1_collision[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x61B),\n    COL_VERTEX(-1125, -50, 973),\n    COL_VERTEX(-921, -50, 973),\n    COL_VERTEX(-1279, -50, 819),\n    COL_VERTEX(-767, -50, 614),\n    COL_VERTEX(-1125, -50, 461),\n    COL_VERTEX(-767, -50, 819),\n    COL_VERTEX(-921, -50, 461),\n    COL_VERTEX(-1279, -50, 594),\n    COL_VERTEX(783, 0, -2518),\n    COL_VERTEX(742, -30, -2661),\n    COL_VERTEX(742, -30, -2559),\n    COL_VERTEX(783, 0, -2661),\n    COL_VERTEX(516, 0, -2518),\n    COL_VERTEX(783, -204, -3685),\n    COL_VERTEX(742, -235, -3685),\n    COL_VERTEX(538, -30, -2559),\n    COL_VERTEX(413, 0, -2672),\n    COL_VERTEX(435, -30, -2713),\n    COL_VERTEX(99, 0, -2672),\n    COL_VERTEX(77, -30, -2713),\n    COL_VERTEX(-3, 0, -2518),\n    COL_VERTEX(-25, -30, -2559),\n    COL_VERTEX(-270, 0, -2518),\n    COL_VERTEX(-229, -235, -3685),\n    COL_VERTEX(-1416, 614, -450),\n    COL_VERTEX(-818, 614, -450),\n    COL_VERTEX(-613, 594, -409),\n    COL_VERTEX(-460, 102, 1382),\n    COL_VERTEX(-613, 102, 1382),\n    COL_VERTEX(-1637, 102, 1434),\n    COL_VERTEX(-1535, 205, 1536),\n    COL_VERTEX(439, 307, 29),\n    COL_VERTEX(553, 307, -84),\n    COL_VERTEX(-2457, 287, 0),\n    COL_VERTEX(-2559, 287, -101),\n    COL_VERTEX(-2232, 128, 282),\n    COL_VERTEX(0, 696, -1023),\n    COL_VERTEX(614, 696, -1023),\n    COL_VERTEX(819, 696, -1228),\n    COL_VERTEX(-255, 594, -767),\n    COL_VERTEX(-2030, 614, -1064),\n    COL_VERTEX(-2644, 614, -1064),\n    COL_VERTEX(-2837, 614, -1257),\n    COL_VERTEX(-229, -30, -2559),\n    COL_VERTEX(-229, -30, -2661),\n    COL_VERTEX(-270, 0, -2661),\n    COL_VERTEX(-270, -204, -3685),\n    COL_VERTEX(-2047, 594, -1023),\n    COL_VERTEX(-1433, 594, -409),\n    COL_VERTEX(-1228, 594, -409),\n    COL_VERTEX(-1228, 614, -450),\n    COL_VERTEX(-2661, 594, -1023),\n    COL_VERTEX(-818, 594, -409),\n    COL_VERTEX(-630, 614, -450),\n    COL_VERTEX(-284, 614, -796),\n    COL_VERTEX(-511, 205, 1536),\n    COL_VERTEX(-409, 102, 1434),\n    COL_VERTEX(-665, 102, 1536),\n    COL_VERTEX(-1586, 102, 1382),\n    COL_VERTEX(-1381, 102, 1536),\n    COL_VERTEX(-1433, 102, 1382),\n    COL_VERTEX(512, 287, -101),\n    COL_VERTEX(553, 307, -1023),\n    COL_VERTEX(512, 287, -1023),\n    COL_VERTEX(410, 287, 0),\n    COL_VERTEX(156, 108, 253),\n    COL_VERTEX(185, 128, 282),\n    COL_VERTEX(-2600, 307, -84),\n    COL_VERTEX(-2600, 307, -1023),\n    COL_VERTEX(-2559, 287, -1023),\n    COL_VERTEX(-2486, 307, 29),\n    COL_VERTEX(-2203, 108, 253),\n    COL_VERTEX(597, 717, -1064),\n    COL_VERTEX(790, 717, -1257),\n    COL_VERTEX(0, 717, -1064),\n    COL_VERTEX(-28, 717, -1052),\n    COL_VERTEX(-2866, 594, -1228),\n    COL_VERTEX(-5548, 512, -3853),\n    COL_VERTEX(-5042, 512, -4359),\n    COL_VERTEX(-5476, 512, -4794),\n    COL_VERTEX(-5983, 512, -4287),\n    COL_VERTEX(-1177, 512, -357),\n    COL_VERTEX(-869, 0, 128),\n    COL_VERTEX(-869, 512, -357),\n    COL_VERTEX(-1177, 0, 128),\n    COL_VERTEX(-5631, 307, -153),\n    COL_VERTEX(-5252, 307, -357),\n    COL_VERTEX(-5631, 307, -357),\n    COL_VERTEX(-5252, 307, -153),\n    COL_VERTEX(-5252, 307, -562),\n    COL_VERTEX(-5631, 307, -562),\n    COL_VERTEX(-5252, 307, -767),\n    COL_VERTEX(-5631, 307, -767),\n    COL_VERTEX(-5119, 307, -357),\n    COL_VERTEX(-5221, 307, -357),\n    COL_VERTEX(-5221, 307, -153),\n    COL_VERTEX(-5119, 307, -153),\n    COL_VERTEX(-5119, 307, -562),\n    COL_VERTEX(-5221, 307, -562),\n    COL_VERTEX(-5119, 307, -767),\n    COL_VERTEX(-5221, 307, -767),\n    COL_VERTEX(-2405, -409, -4351),\n    COL_VERTEX(-2610, -409, -4249),\n    COL_VERTEX(-2405, -409, -4249),\n    COL_VERTEX(-2610, -409, -4351),\n    COL_VERTEX(-2405, -409, -4761),\n    COL_VERTEX(-2610, -409, -4761),\n    COL_VERTEX(-2610, -409, -4382),\n    COL_VERTEX(-2405, -409, -4382),\n    COL_VERTEX(-2201, -409, -4351),\n    COL_VERTEX(-2201, -409, -4249),\n    COL_VERTEX(-2201, -409, -4382),\n    COL_VERTEX(-2201, -409, -4761),\n    COL_VERTEX(-1996, -409, -4351),\n    COL_VERTEX(-1996, -409, -4249),\n    COL_VERTEX(-1996, -409, -4761),\n    COL_VERTEX(-1996, -409, -4382),\n    COL_VERTEX(-229, -306, -3685),\n    COL_VERTEX(-270, -306, -3685),\n    COL_VERTEX(-270, -101, -2518),\n    COL_VERTEX(783, -306, -3685),\n    COL_VERTEX(742, -306, -3685),\n    COL_VERTEX(783, -101, -2518),\n    COL_VERTEX(413, -101, -2672),\n    COL_VERTEX(516, -101, -2518),\n    COL_VERTEX(-3, -101, -2518),\n    COL_VERTEX(-630, 512, -450),\n    COL_VERTEX(185, 26, 282),\n    COL_VERTEX(156, 26, 253),\n    COL_VERTEX(553, 205, -84),\n    COL_VERTEX(-2232, 26, 282),\n    COL_VERTEX(597, 614, -1064),\n    COL_VERTEX(790, 614, -1257),\n    COL_VERTEX(-28, 614, -1052),\n    COL_VERTEX(-284, 512, -796),\n    COL_VERTEX(-2644, 512, -1064),\n    COL_VERTEX(-2030, 512, -1064),\n    COL_VERTEX(-1416, 512, -450),\n    COL_VERTEX(99, -101, -2672),\n    COL_VERTEX(-1228, 512, -450),\n    COL_VERTEX(-818, 512, -450),\n    COL_VERTEX(553, 26, -84),\n    COL_VERTEX(553, 205, -1023),\n    COL_VERTEX(-2600, 26, -84),\n    COL_VERTEX(-2203, 26, 253),\n    COL_VERTEX(-2600, 205, -1023),\n    COL_VERTEX(-2600, 205, -84),\n    COL_VERTEX(0, 614, -1064),\n    COL_VERTEX(-2837, 512, -1257),\n    COL_VERTEX(154, -306, -4505),\n    COL_VERTEX(-50, -306, -4402),\n    COL_VERTEX(154, -306, -4402),\n    COL_VERTEX(-50, -306, -4505),\n    COL_VERTEX(154, -306, -4914),\n    COL_VERTEX(-50, -306, -4914),\n    COL_VERTEX(-50, -306, -4535),\n    COL_VERTEX(154, -306, -4535),\n    COL_VERTEX(358, -306, -4505),\n    COL_VERTEX(358, -306, -4402),\n    COL_VERTEX(358, -306, -4535),\n    COL_VERTEX(358, -306, -4914),\n    COL_VERTEX(563, -306, -4505),\n    COL_VERTEX(563, -306, -4402),\n    COL_VERTEX(563, -306, -4914),\n    COL_VERTEX(563, -306, -4535),\n    COL_VERTEX(4198, 307, 77),\n    COL_VERTEX(4301, 307, -127),\n    COL_VERTEX(4198, 307, -127),\n    COL_VERTEX(4301, 307, 77),\n    COL_VERTEX(4301, 307, -332),\n    COL_VERTEX(4198, 307, -332),\n    COL_VERTEX(4301, 307, -537),\n    COL_VERTEX(4198, 307, -537),\n    COL_VERTEX(4710, 307, -127),\n    COL_VERTEX(4332, 307, 77),\n    COL_VERTEX(4710, 307, 77),\n    COL_VERTEX(4332, 307, -127),\n    COL_VERTEX(4710, 307, -332),\n    COL_VERTEX(4332, 307, -332),\n    COL_VERTEX(4710, 307, -537),\n    COL_VERTEX(4332, 307, -537),\n    COL_VERTEX(-869, 768, -1023),\n    COL_VERTEX(-1177, 768, -1074),\n    COL_VERTEX(-869, 768, -1074),\n    COL_VERTEX(-1177, 768, -1125),\n    COL_VERTEX(-869, 768, -1125),\n    COL_VERTEX(-1177, 768, -1023),\n    COL_VERTEX(-665, 512, -1125),\n    COL_VERTEX(-869, 512, -1125),\n    COL_VERTEX(-869, 512, -1074),\n    COL_VERTEX(-665, 1024, -1125),\n    COL_VERTEX(-1381, 1024, -1125),\n    COL_VERTEX(-869, 512, -1023),\n    COL_VERTEX(-1177, 512, -1125),\n    COL_VERTEX(-1177, 512, -1074),\n    COL_VERTEX(-1381, 512, -1125),\n    COL_VERTEX(-665, 512, -1535),\n    COL_VERTEX(-1279, 512, -1228),\n    COL_VERTEX(-1279, 512, -1125),\n    COL_VERTEX(-767, 512, -1228),\n    COL_VERTEX(-3097, 410, -1740),\n    COL_VERTEX(-3097, -409, -3634),\n    COL_VERTEX(-1919, 410, -4351),\n    COL_VERTEX(-2687, -409, -4351),\n    COL_VERTEX(-2610, -306, -4351),\n    COL_VERTEX(-1919, -409, -4351),\n    COL_VERTEX(-1996, -306, -4351),\n    COL_VERTEX(-1509, 410, -3634),\n    COL_VERTEX(-2124, -204, -2277),\n    COL_VERTEX(-2124, -204, -2047),\n    COL_VERTEX(-2175, -127, -2277),\n    COL_VERTEX(-2124, -127, -2277),\n    COL_VERTEX(-2175, -204, -2047),\n    COL_VERTEX(-2124, -127, -2226),\n    COL_VERTEX(-2175, 51, -1996),\n    COL_VERTEX(-2431, -204, -2277),\n    COL_VERTEX(-2431, -204, -2047),\n    COL_VERTEX(-2482, -127, -2277),\n    COL_VERTEX(-2431, -127, -2277),\n    COL_VERTEX(-2482, -204, -2047),\n    COL_VERTEX(-2431, -127, -2226),\n    COL_VERTEX(-2533, -153, -2991),\n    COL_VERTEX(-2636, -153, -2866),\n    COL_VERTEX(-2509, -204, -2940),\n    COL_VERTEX(-2596, -153, -2834),\n    COL_VERTEX(-2509, -153, -2940),\n    COL_VERTEX(-2046, -153, -2940),\n    COL_VERTEX(-2021, -153, -2991),\n    COL_VERTEX(-1959, -153, -2834),\n    COL_VERTEX(-1919, -153, -2866),\n    COL_VERTEX(-2175, -204, -2226),\n    COL_VERTEX(-2175, -178, -2201),\n    COL_VERTEX(-2175, -178, -2226),\n    COL_VERTEX(-2175, -153, -2175),\n    COL_VERTEX(-2175, -153, -2201),\n    COL_VERTEX(-2175, -127, -2149),\n    COL_VERTEX(-2175, -127, -2175),\n    COL_VERTEX(-2175, -101, -2149),\n    COL_VERTEX(-2175, -101, -2124),\n    COL_VERTEX(-2175, -76, -2124),\n    COL_VERTEX(-2175, -76, -2098),\n    COL_VERTEX(-2175, -50, -2098),\n    COL_VERTEX(-2175, -50, -2073),\n    COL_VERTEX(-2175, -25, -2047),\n    COL_VERTEX(-2175, -25, -2073),\n    COL_VERTEX(-2431, 0, -2047),\n    COL_VERTEX(-2175, 0, -1996),\n    COL_VERTEX(-2153, 51, -1996),\n    COL_VERTEX(-2124, 51, -2047),\n    COL_VERTEX(-2021, 0, -1740),\n    COL_VERTEX(-2585, 51, -1740),\n    COL_VERTEX(-2636, 51, -1740),\n    COL_VERTEX(-2585, 0, -1740),\n    COL_VERTEX(-2453, 51, -1996),\n    COL_VERTEX(-2482, 51, -2047),\n    COL_VERTEX(-2175, 51, -2047),\n    COL_VERTEX(-2124, 410, -1740),\n    COL_VERTEX(-2482, 410, -1740),\n    COL_VERTEX(-2585, 307, -1125),\n    COL_VERTEX(-2585, 0, -1125),\n    COL_VERTEX(-2021, 307, -1740),\n    COL_VERTEX(-2021, 307, -1125),\n    COL_VERTEX(-2380, 256, -1023),\n    COL_VERTEX(-2380, 0, -1023),\n    COL_VERTEX(-2380, 0, -1074),\n    COL_VERTEX(-2380, 256, -1074),\n    COL_VERTEX(-2226, 256, -1125),\n    COL_VERTEX(-2226, 256, -1074),\n    COL_VERTEX(-2226, 256, -1023),\n    COL_VERTEX(-2380, 0, -1125),\n    COL_VERTEX(-2021, 0, -1125),\n    COL_VERTEX(-2175, 0, -2047),\n    COL_VERTEX(-1509, -204, -1740),\n    COL_VERTEX(-1970, 51, -1740),\n    COL_VERTEX(-2585, 307, -1740),\n    COL_VERTEX(-2636, -204, -1740),\n    COL_VERTEX(-1970, -204, -1740),\n    COL_VERTEX(-1509, -204, -2866),\n    COL_VERTEX(-2021, -237, -2991),\n    COL_VERTEX(-1868, -303, -3238),\n    COL_VERTEX(-2636, -204, -2866),\n    COL_VERTEX(-3097, -204, -2866),\n    COL_VERTEX(-2687, -303, -3238),\n    COL_VERTEX(-2533, -237, -2991),\n    COL_VERTEX(-1868, -409, -3634),\n    COL_VERTEX(-2687, -409, -3634),\n    COL_VERTEX(-1509, -409, -3634),\n    COL_VERTEX(-2021, -409, -2991),\n    COL_VERTEX(-1509, 410, -1740),\n    COL_VERTEX(-3097, 410, -3634),\n    COL_VERTEX(-2124, 0, -1228),\n    COL_VERTEX(4301, 307, 154),\n    COL_VERTEX(2253, 1024, -1842),\n    COL_VERTEX(4403, 1024, -767),\n    COL_VERTEX(2253, 1024, 1997),\n    COL_VERTEX(2253, 307, 1382),\n    COL_VERTEX(3319, 307, 1382),\n    COL_VERTEX(3319, 1024, 1382),\n    COL_VERTEX(4403, 1024, 307),\n    COL_VERTEX(4146, 768, -943),\n    COL_VERTEX(3422, 768, -1667),\n    COL_VERTEX(3174, 768, -1791),\n    COL_VERTEX(2355, 768, 1331),\n    COL_VERTEX(3422, 768, 1208),\n    COL_VERTEX(4301, 307, -613),\n    COL_VERTEX(4198, 307, -818),\n    COL_VERTEX(4198, 307, 358),\n    COL_VERTEX(4301, 1024, 77),\n    COL_VERTEX(2253, 307, 1280),\n    COL_VERTEX(1971, 307, 51),\n    COL_VERTEX(2253, 307, -1740),\n    COL_VERTEX(1229, 307, -716),\n    COL_VERTEX(1229, 307, 256),\n    COL_VERTEX(1229, 307, 51),\n    COL_VERTEX(1894, 205, 51),\n    COL_VERTEX(1894, 205, -511),\n    COL_VERTEX(1229, 205, -409),\n    COL_VERTEX(1126, 1229, -460),\n    COL_VERTEX(4250, 1229, 154),\n    COL_VERTEX(4301, 1229, -716),\n    COL_VERTEX(1741, 1638, 44),\n    COL_VERTEX(1229, 1229, -716),\n    COL_VERTEX(1229, 1229, 256),\n    COL_VERTEX(2253, 1229, -1740),\n    COL_VERTEX(3277, 1229, -1740),\n    COL_VERTEX(4301, 1229, 256),\n    COL_VERTEX(3065, 1638, 768),\n    COL_VERTEX(3277, 1229, 1280),\n    COL_VERTEX(2253, 1229, 1280),\n    COL_VERTEX(4301, 1024, -537),\n    COL_VERTEX(1229, 307, -511),\n    COL_VERTEX(1229, 205, 0),\n    COL_VERTEX(1229, 307, 0),\n    COL_VERTEX(1971, 205, 51),\n    COL_VERTEX(1229, 307, -460),\n    COL_VERTEX(1229, 205, -460),\n    COL_VERTEX(1178, 307, -409),\n    COL_VERTEX(1178, 205, -409),\n    COL_VERTEX(1126, 307, -50),\n    COL_VERTEX(1126, 205, -50),\n    COL_VERTEX(1178, 307, -50),\n    COL_VERTEX(1178, 205, -50),\n    COL_VERTEX(2036, 819, 1063),\n    COL_VERTEX(2036, 1024, -1523),\n    COL_VERTEX(2036, 819, -1523),\n    COL_VERTEX(2180, 1024, -1667),\n    COL_VERTEX(2180, 819, -1667),\n    COL_VERTEX(1891, 819, -1667),\n    COL_VERTEX(2036, 1024, 1063),\n    COL_VERTEX(2180, 1024, 1208),\n    COL_VERTEX(1891, 1024, 1208),\n    COL_VERTEX(2180, 819, 1208),\n    COL_VERTEX(2355, 358, 1280),\n    COL_VERTEX(2355, 768, 1280),\n    COL_VERTEX(4182, 768, 520),\n    COL_VERTEX(3458, 768, 1244),\n    COL_VERTEX(4109, 358, 447),\n    COL_VERTEX(4109, 768, 447),\n    COL_VERTEX(4109, 768, -907),\n    COL_VERTEX(4182, 768, -980),\n    COL_VERTEX(4182, 358, -980),\n    COL_VERTEX(3385, 768, -1631),\n    COL_VERTEX(3174, 768, -1842),\n    COL_VERTEX(3174, 358, -1842),\n    COL_VERTEX(2355, 358, -1740),\n    COL_VERTEX(3174, 358, -1740),\n    COL_VERTEX(3174, 768, 1280),\n    COL_VERTEX(3174, 358, 1280),\n    COL_VERTEX(2355, 358, 1382),\n    COL_VERTEX(3174, 358, 1382),\n    COL_VERTEX(4836, 1024, -1203),\n    COL_VERTEX(4403, 307, -767),\n    COL_VERTEX(3573, 1024, -2457),\n    COL_VERTEX(2253, 1024, -2457),\n    COL_VERTEX(3319, 307, -1842),\n    COL_VERTEX(3319, 1024, -1842),\n    COL_VERTEX(3573, 1024, 1997),\n    COL_VERTEX(4836, 1024, 743),\n    COL_VERTEX(3174, 768, -1740),\n    COL_VERTEX(3385, 358, -1631),\n    COL_VERTEX(3277, 307, -1740),\n    COL_VERTEX(4198, 1229, -818),\n    COL_VERTEX(4109, 358, -907),\n    COL_VERTEX(4198, 307, -665),\n    COL_VERTEX(4250, 307, -613),\n    COL_VERTEX(4198, 1229, 358),\n    COL_VERTEX(4198, 307, 205),\n    COL_VERTEX(4250, 307, 154),\n    COL_VERTEX(1971, 307, -511),\n    COL_VERTEX(1126, 205, -306),\n    COL_VERTEX(1126, 461, -306),\n    COL_VERTEX(1126, 1229, -409),\n    COL_VERTEX(1920, 230, 51),\n    COL_VERTEX(1894, 230, 51),\n    COL_VERTEX(1920, 256, 51),\n    COL_VERTEX(1946, 256, 51),\n    COL_VERTEX(1946, 282, 51),\n    COL_VERTEX(1971, 282, 51),\n    COL_VERTEX(1126, 461, -153),\n    COL_VERTEX(1075, 461, -153),\n    COL_VERTEX(1075, 461, -306),\n    COL_VERTEX(1075, 205, -306),\n    COL_VERTEX(1126, 205, -153),\n    COL_VERTEX(1075, 205, -153),\n    COL_VERTEX(1050, -306, -3685),\n    COL_VERTEX(1050, -306, -4505),\n    COL_VERTEX(77, 0, -1125),\n    COL_VERTEX(-25, 0, -1842),\n    COL_VERTEX(435, 0, -1228),\n    COL_VERTEX(-25, 0, -1125),\n    COL_VERTEX(1050, 512, -1945),\n    COL_VERTEX(845, -101, -1740),\n    COL_VERTEX(589, 77, -1740),\n    COL_VERTEX(-25, 307, -1740),\n    COL_VERTEX(-76, 77, -1740),\n    COL_VERTEX(589, -101, -1740),\n    COL_VERTEX(538, 77, -1740),\n    COL_VERTEX(538, 77, -1842),\n    COL_VERTEX(538, 0, -1919),\n    COL_VERTEX(538, 0, -1970),\n    COL_VERTEX(-76, -101, -1740),\n    COL_VERTEX(-76, 0, -1970),\n    COL_VERTEX(-76, 77, -1842),\n    COL_VERTEX(-76, 0, -1919),\n    COL_VERTEX(-25, -101, -1740),\n    COL_VERTEX(538, -101, -1740),\n    COL_VERTEX(538, -101, -2559),\n    COL_VERTEX(563, -204, -4505),\n    COL_VERTEX(563, 410, -4505),\n    COL_VERTEX(-332, -306, -4505),\n    COL_VERTEX(-50, 410, -4505),\n    COL_VERTEX(-229, 512, -4197),\n    COL_VERTEX(538, 666, -3993),\n    COL_VERTEX(-25, 666, -3993),\n    COL_VERTEX(-25, 666, -2252),\n    COL_VERTEX(742, 512, -2047),\n    COL_VERTEX(-229, 512, -2047),\n    COL_VERTEX(-537, 512, -1740),\n    COL_VERTEX(1050, 512, -4505),\n    COL_VERTEX(-537, 512, -4505),\n    COL_VERTEX(77, 410, -1740),\n    COL_VERTEX(435, 410, -1740),\n    COL_VERTEX(538, 307, -1740),\n    COL_VERTEX(-434, 512, -4300),\n    COL_VERTEX(-332, 512, -4402),\n    COL_VERTEX(-537, 512, -4300),\n    COL_VERTEX(1050, -101, -1740),\n    COL_VERTEX(1050, -101, -2661),\n    COL_VERTEX(742, -306, -2559),\n    COL_VERTEX(-229, -101, -2559),\n    COL_VERTEX(-229, -101, -2661),\n    COL_VERTEX(742, -101, -2559),\n    COL_VERTEX(538, 0, -1740),\n    COL_VERTEX(-25, 307, -1125),\n    COL_VERTEX(179, 256, -1125),\n    COL_VERTEX(538, 307, -1125),\n    COL_VERTEX(179, 0, -1125),\n    COL_VERTEX(333, 0, -1125),\n    COL_VERTEX(333, 256, -1125),\n    COL_VERTEX(333, 0, -1074),\n    COL_VERTEX(333, 256, -1074),\n    COL_VERTEX(179, 256, -1023),\n    COL_VERTEX(179, 256, -1074),\n    COL_VERTEX(845, 512, -4402),\n    COL_VERTEX(947, 512, -4300),\n    COL_VERTEX(845, 512, -4505),\n    COL_VERTEX(-25, -306, -2559),\n    COL_VERTEX(947, 512, -1945),\n    COL_VERTEX(845, 512, -1842),\n    COL_VERTEX(-332, 512, -1842),\n    COL_VERTEX(-434, 512, -1945),\n    COL_VERTEX(-332, 512, -1740),\n    COL_VERTEX(-25, -76, -1893),\n    COL_VERTEX(-25, -76, -1919),\n    COL_VERTEX(-25, -50, -1893),\n    COL_VERTEX(-25, -50, -1868),\n    COL_VERTEX(-25, -25, -1868),\n    COL_VERTEX(-25, -25, -1842),\n    COL_VERTEX(-537, 512, -1945),\n    COL_VERTEX(-5221, 307, -869),\n    COL_VERTEX(-4402, 307, -50),\n    COL_VERTEX(-5221, 307, -50),\n    COL_VERTEX(-4197, 307, -665),\n    COL_VERTEX(-4402, 307, -869),\n    COL_VERTEX(-4146, 282, -613),\n    COL_VERTEX(-4121, 282, -613),\n    COL_VERTEX(-4121, 256, -613),\n    COL_VERTEX(-4095, 256, -613),\n    COL_VERTEX(-4095, 230, -613),\n    COL_VERTEX(-4069, 230, -613),\n    COL_VERTEX(-4018, 205, -306),\n    COL_VERTEX(-4197, 358, -306),\n    COL_VERTEX(-4197, 307, -255),\n    COL_VERTEX(-4018, 205, -255),\n    COL_VERTEX(-4197, 358, -255),\n    COL_VERTEX(-4146, 358, -306),\n    COL_VERTEX(-4018, 282, -306),\n    COL_VERTEX(-4069, 282, -306),\n    COL_VERTEX(-4197, 307, -306),\n    COL_VERTEX(-4018, 205, -665),\n    COL_VERTEX(-4197, 358, -665),\n    COL_VERTEX(-4197, 307, -613),\n    COL_VERTEX(-4018, 205, -613),\n    COL_VERTEX(-4197, 358, -613),\n    COL_VERTEX(-4146, 358, -665),\n    COL_VERTEX(-4018, 282, -665),\n    COL_VERTEX(-4069, 282, -665),\n    COL_VERTEX(-4914, 1235, -1279),\n    COL_VERTEX(-5017, 1235, -1177),\n    COL_VERTEX(-5221, 1126, -1177),\n    COL_VERTEX(-3378, 1235, -1177),\n    COL_VERTEX(-3481, 1235, -1279),\n    COL_VERTEX(-3481, 1126, -1484),\n    COL_VERTEX(-4914, 1126, 563),\n    COL_VERTEX(-4914, 1235, 358),\n    COL_VERTEX(-5017, 1235, 256),\n    COL_VERTEX(-5221, 410, -767),\n    COL_VERTEX(-5221, 205, 256),\n    COL_VERTEX(-3481, 1235, 358),\n    COL_VERTEX(-3378, 1235, 256),\n    COL_VERTEX(-3173, 1126, 256),\n    COL_VERTEX(-5221, 1024, -153),\n    COL_VERTEX(-5221, 1024, -767),\n    COL_VERTEX(-3173, 205, -716),\n    COL_VERTEX(-3122, 205, -716),\n    COL_VERTEX(-3122, 205, -869),\n    COL_VERTEX(-3173, 205, -869),\n    COL_VERTEX(-3173, 205, -1177),\n    COL_VERTEX(-3173, 461, -716),\n    COL_VERTEX(-3122, 461, -716),\n    COL_VERTEX(-3173, 1126, -1177),\n    COL_VERTEX(-3173, 461, -869),\n    COL_VERTEX(-3122, 461, -869),\n    COL_VERTEX(-3650, 1434, 154),\n    COL_VERTEX(-3481, 1126, 563),\n    COL_VERTEX(-5221, 1126, 256),\n    COL_VERTEX(-4914, 1126, -1484),\n    COL_VERTEX(-4812, 1434, 154),\n    COL_VERTEX(-5221, 205, -50),\n    COL_VERTEX(-5221, 205, 563),\n    COL_VERTEX(-3173, 205, 563),\n    COL_VERTEX(-3173, 205, -1484),\n    COL_VERTEX(-5221, 205, -1484),\n    COL_VERTEX(-4197, 205, -255),\n    COL_VERTEX(-4197, 205, -665),\n    COL_VERTEX(-3276, 205, -613),\n    COL_VERTEX(-3276, 205, -972),\n    COL_VERTEX(1833, 1229, -2665),\n    COL_VERTEX(1857, 768, -2797),\n    COL_VERTEX(1784, 922, -2869),\n    COL_VERTEX(1857, 922, -2797),\n    COL_VERTEX(1875, 922, -2815),\n    COL_VERTEX(1911, 1024, -2779),\n    COL_VERTEX(1881, 1024, -2676),\n    COL_VERTEX(1947, 1024, -2743),\n    COL_VERTEX(1965, 922, -2688),\n    COL_VERTEX(2038, 614, -2616),\n    COL_VERTEX(1965, 768, -2688),\n    COL_VERTEX(590, 614, -1530),\n    COL_VERTEX(698, 870, -1421),\n    COL_VERTEX(734, 614, -1457),\n    COL_VERTEX(1422, 922, -2869),\n    COL_VERTEX(1422, 614, -2869),\n    COL_VERTEX(1169, 922, -2616),\n    COL_VERTEX(1374, 1229, -2531),\n    COL_VERTEX(1338, 1126, -2278),\n    COL_VERTEX(1422, 922, -2001),\n    COL_VERTEX(1446, 1126, -2169),\n    COL_VERTEX(1845, 1024, -2157),\n    COL_VERTEX(1881, 1024, -2194),\n    COL_VERTEX(2038, 922, -2254),\n    COL_VERTEX(1833, 1229, -2339),\n    COL_VERTEX(1965, 768, -2182),\n    COL_VERTEX(626, 614, -1566),\n    COL_VERTEX(626, 870, -1566),\n    COL_VERTEX(1169, 922, -2254),\n    COL_VERTEX(553, 922, -1638),\n    COL_VERTEX(807, 922, -1385),\n    COL_VERTEX(1422, 614, -2001),\n    COL_VERTEX(2038, 922, -2616),\n    COL_VERTEX(1784, 922, -2001),\n    COL_VERTEX(1241, 768, -2688),\n    COL_VERTEX(1507, 1229, -2665),\n    COL_VERTEX(1362, 1024, -2713),\n    COL_VERTEX(1350, 922, -2797),\n    COL_VERTEX(1350, 768, -2797),\n    COL_VERTEX(1241, 922, -2688),\n    COL_VERTEX(1223, 922, -2706),\n    COL_VERTEX(1326, 1024, -2676),\n    COL_VERTEX(1857, 922, -2073),\n    COL_VERTEX(1784, 614, -2001),\n    COL_VERTEX(1965, 922, -2182),\n    COL_VERTEX(2110, 768, -2037),\n    COL_VERTEX(1857, 768, -2073),\n    COL_VERTEX(553, 614, -1638),\n    COL_VERTEX(879, 614, -1457),\n    COL_VERTEX(-2580, 768, -1608),\n    COL_VERTEX(-2797, 768, -1391),\n    COL_VERTEX(-2797, 512, -1391),\n    COL_VERTEX(-2435, 512, -1753),\n    COL_VERTEX(-2580, 512, -1608),\n    COL_VERTEX(-2543, 768, -1572),\n    COL_VERTEX(-5983, 717, -4287),\n    COL_VERTEX(-5476, 717, -4794),\n    COL_VERTEX(-5548, 717, -3853),\n    COL_VERTEX(-3014, 538, -2332),\n    COL_VERTEX(-3014, 512, -2332),\n    COL_VERTEX(-3032, 538, -2350),\n    COL_VERTEX(-3032, 563, -2350),\n    COL_VERTEX(-3050, 563, -2368),\n    COL_VERTEX(-3050, 589, -2368),\n    COL_VERTEX(-3068, 589, -2386),\n    COL_VERTEX(-3068, 614, -2386),\n    COL_VERTEX(-3087, 614, -2404),\n    COL_VERTEX(-3087, 640, -2404),\n    COL_VERTEX(-3105, 640, -2423),\n    COL_VERTEX(-3105, 666, -2423),\n    COL_VERTEX(-3123, 666, -2441),\n    COL_VERTEX(-3123, 691, -2441),\n    COL_VERTEX(-3141, 691, -2459),\n    COL_VERTEX(-3141, 717, -2459),\n    COL_VERTEX(-5042, 717, -4359),\n    COL_VERTEX(-3666, 717, -1970),\n    COL_VERTEX(-3666, 512, -1970),\n    COL_VERTEX(-2435, 717, -1753),\n    COL_VERTEX(-3159, 717, -2477),\n    COL_VERTEX(-3231, 717, -2477),\n    COL_VERTEX(-3268, 717, -2513),\n    COL_VERTEX(-3231, 1485, -2477),\n    COL_VERTEX(-3159, 1536, -2477),\n    COL_VERTEX(-3268, 1485, -2513),\n    COL_VERTEX(-3702, 717, -2079),\n    COL_VERTEX(-3774, 717, -2079),\n    COL_VERTEX(-3666, 717, -2042),\n    COL_VERTEX(-4607, 717, -3925),\n    COL_VERTEX(-4679, 717, -3925),\n    COL_VERTEX(-5114, 717, -3491),\n    COL_VERTEX(-4607, 1536, -3925),\n    COL_VERTEX(-5150, 717, -3527),\n    COL_VERTEX(-5223, 717, -3527),\n    COL_VERTEX(-4679, 1485, -3925),\n    COL_VERTEX(-4716, 717, -3961),\n    COL_VERTEX(-4716, 1485, -3961),\n    COL_VERTEX(-6055, 717, -5373),\n    COL_VERTEX(-6128, 717, -5373),\n    COL_VERTEX(-6562, 717, -4939),\n    COL_VERTEX(-6055, 1536, -5373),\n    COL_VERTEX(-6562, 1536, -4866),\n    COL_VERTEX(-6598, 717, -4975),\n    COL_VERTEX(-6671, 717, -4975),\n    COL_VERTEX(-6128, 1485, -5373),\n    COL_VERTEX(-6164, 717, -5409),\n    COL_VERTEX(-6598, 1485, -4975),\n    COL_VERTEX(-6164, 1485, -5409),\n    COL_VERTEX(-5114, 1536, -3418),\n    COL_VERTEX(-4716, 1536, -4034),\n    COL_VERTEX(-7431, 717, -5735),\n    COL_VERTEX(-7431, 1536, -5735),\n    COL_VERTEX(-6924, 1536, -6242),\n    COL_VERTEX(-6960, 1434, -6206),\n    COL_VERTEX(-6924, 717, -6242),\n    COL_VERTEX(-2869, 512, -1318),\n    COL_VERTEX(-2580, 512, -1753),\n    COL_VERTEX(-2942, 512, -1391),\n    COL_VERTEX(-5476, 1536, -4794),\n    COL_VERTEX(-665, -1074, 922),\n    COL_VERTEX(-613, 410, -716),\n    COL_VERTEX(-451, 410, -716),\n    COL_VERTEX(-665, 410, -767),\n    COL_VERTEX(-767, 256, -716),\n    COL_VERTEX(-767, 219, -665),\n    COL_VERTEX(-716, 410, -767),\n    COL_VERTEX(-1330, -101, -1595),\n    COL_VERTEX(-1228, 410, -5119),\n    COL_VERTEX(-1330, 307, -5119),\n    COL_VERTEX(-1330, -101, -5119),\n    COL_VERTEX(-818, 410, -5119),\n    COL_VERTEX(-716, 307, -5119),\n    COL_VERTEX(-716, -101, -5119),\n    COL_VERTEX(-818, 307, -716),\n    COL_VERTEX(-1228, 307, -716),\n    COL_VERTEX(-716, 205, -716),\n    COL_VERTEX(-716, -456, -613),\n    COL_VERTEX(-1228, -460, 358),\n    COL_VERTEX(-1330, -562, 358),\n    COL_VERTEX(-1330, -1074, 358),\n    COL_VERTEX(-1177, -818, 870),\n    COL_VERTEX(-1330, -1074, 870),\n    COL_VERTEX(-818, -460, 358),\n    COL_VERTEX(-869, -818, 870),\n    COL_VERTEX(-716, -562, 358),\n    COL_VERTEX(-716, -1074, 870),\n    COL_VERTEX(-716, -1074, 358),\n    COL_VERTEX(-1177, -1074, 922),\n    COL_VERTEX(-1177, -818, 922),\n    COL_VERTEX(-252, 256, -914),\n    COL_VERTEX(-252, 0, -914),\n    COL_VERTEX(-361, 256, -806),\n    COL_VERTEX(-144, 0, -1023),\n    COL_VERTEX(-325, 0, -770),\n    COL_VERTEX(-325, 256, -770),\n    COL_VERTEX(-1685, 256, -806),\n    COL_VERTEX(-1595, 410, -716),\n    COL_VERTEX(-1595, 0, -716),\n    COL_VERTEX(-1685, 0, -806),\n    COL_VERTEX(-1794, 256, -914),\n    COL_VERTEX(-1721, 256, -770),\n    COL_VERTEX(-1902, 410, -1023),\n    COL_VERTEX(-1830, 256, -878),\n    COL_VERTEX(-252, 0, -1059),\n    COL_VERTEX(-444, 0, -1323),\n    COL_VERTEX(-716, 307, -1595),\n    COL_VERTEX(-1228, 410, -1595),\n    COL_VERTEX(-451, 0, -716),\n    COL_VERTEX(-836, 0, -1027),\n    COL_VERTEX(-767, 0, -716),\n    COL_VERTEX(-1330, 132, -613),\n    COL_VERTEX(-1381, 410, -767),\n    COL_VERTEX(-1433, 0, -716),\n    COL_VERTEX(-1210, 0, -1027),\n    COL_VERTEX(-1330, 410, -767),\n    COL_VERTEX(-1279, 219, -665),\n    COL_VERTEX(-767, 410, -716),\n    COL_VERTEX(-1279, 256, -716),\n    COL_VERTEX(-1279, 410, -716),\n    COL_VERTEX(-144, 410, -1023),\n    COL_VERTEX(-716, -76, -1595),\n    COL_VERTEX(-1177, -76, -1177),\n    COL_VERTEX(-1421, -76, -1504),\n    COL_VERTEX(-1330, -76, -1595),\n    COL_VERTEX(-1902, -76, -1023),\n    COL_VERTEX(-836, -25, -1027),\n    COL_VERTEX(-847, -25, -1077),\n    COL_VERTEX(-847, -50, -1077),\n    COL_VERTEX(-858, -50, -1127),\n    COL_VERTEX(-625, -50, -1504),\n    COL_VERTEX(-1210, -25, -1027),\n    COL_VERTEX(-1602, -25, -1323),\n    COL_VERTEX(-1511, -25, -1414),\n    COL_VERTEX(-1540, 0, -806),\n    COL_VERTEX(-1177, -127, -1177),\n    COL_VERTEX(-1199, -50, -1077),\n    COL_VERTEX(-1511, -50, -1414),\n    COL_VERTEX(-1421, -50, -1504),\n    COL_VERTEX(-1188, -76, -1127),\n    COL_VERTEX(-1188, -50, -1127),\n    COL_VERTEX(-1177, -101, -1177),\n    COL_VERTEX(-1100, -101, -5119),\n    COL_VERTEX(-1100, 154, -5119),\n    COL_VERTEX(-946, 154, -5119),\n    COL_VERTEX(-946, -101, -5221),\n    COL_VERTEX(-946, 154, -5221),\n    COL_VERTEX(-858, -76, -1127),\n    COL_VERTEX(-767, -383, -716),\n    COL_VERTEX(-716, -1049, 358),\n    COL_VERTEX(-1330, -1049, 358),\n    COL_VERTEX(-716, -1023, 320),\n    COL_VERTEX(-1330, -1023, 320),\n    COL_VERTEX(-716, -997, 282),\n    COL_VERTEX(-1330, -997, 282),\n    COL_VERTEX(-716, -972, 243),\n    COL_VERTEX(-1330, -972, 243),\n    COL_VERTEX(-716, -946, 205),\n    COL_VERTEX(-1330, -946, 205),\n    COL_VERTEX(-716, -921, 166),\n    COL_VERTEX(-1330, -921, 166),\n    COL_VERTEX(-716, -895, 128),\n    COL_VERTEX(-1330, -869, 90),\n    COL_VERTEX(-716, -844, 51),\n    COL_VERTEX(-716, -869, 90),\n    COL_VERTEX(-1330, -895, 128),\n    COL_VERTEX(-1330, -844, 51),\n    COL_VERTEX(-716, -818, 13),\n    COL_VERTEX(-1330, -818, 13),\n    COL_VERTEX(-716, -793, -25),\n    COL_VERTEX(-1330, -793, -25),\n    COL_VERTEX(-716, -767, -63),\n    COL_VERTEX(-1330, -767, -63),\n    COL_VERTEX(-716, -741, -101),\n    COL_VERTEX(-716, -690, -178),\n    COL_VERTEX(-1330, -716, -140),\n    COL_VERTEX(-1330, -690, -178),\n    COL_VERTEX(-716, -665, -217),\n    COL_VERTEX(-1330, -665, -217),\n    COL_VERTEX(-716, -639, -255),\n    COL_VERTEX(-716, -716, -140),\n    COL_VERTEX(-1330, -741, -101),\n    COL_VERTEX(-1330, -639, -255),\n    COL_VERTEX(-716, -613, -293),\n    COL_VERTEX(-1330, -613, -293),\n    COL_VERTEX(-716, -588, -332),\n    COL_VERTEX(-1330, -588, -332),\n    COL_VERTEX(-716, -562, -370),\n    COL_VERTEX(-1330, -562, -370),\n    COL_VERTEX(-716, -537, -409),\n    COL_VERTEX(-1330, -537, -409),\n    COL_VERTEX(-716, -511, -447),\n    COL_VERTEX(-1330, -511, -447),\n    COL_VERTEX(-716, -485, -485),\n    COL_VERTEX(-1330, -485, -485),\n    COL_VERTEX(-716, -460, -524),\n    COL_VERTEX(-767, -332, -716),\n    COL_VERTEX(-1279, -357, -677),\n    COL_VERTEX(-1279, -332, -716),\n    COL_VERTEX(-776, -306, -754),\n    COL_VERTEX(-1270, -306, -754),\n    COL_VERTEX(-784, -281, -793),\n    COL_VERTEX(-1253, -255, -831),\n    COL_VERTEX(-793, -255, -831),\n    COL_VERTEX(-1262, -281, -793),\n    COL_VERTEX(-801, -229, -869),\n    COL_VERTEX(-810, -204, -908),\n    COL_VERTEX(-1245, -229, -869),\n    COL_VERTEX(-1236, -204, -908),\n    COL_VERTEX(-818, -178, -946),\n    COL_VERTEX(-869, -101, -1177),\n    COL_VERTEX(-1199, -127, -1074),\n    COL_VERTEX(-716, -460, -562),\n    COL_VERTEX(-716, -434, -562),\n    COL_VERTEX(-1330, -434, -562),\n    COL_VERTEX(-716, -409, -601),\n    COL_VERTEX(-1330, -409, -601),\n    COL_VERTEX(-716, -383, -639),\n    COL_VERTEX(-1330, -383, -639),\n    COL_VERTEX(-767, -357, -677),\n    COL_VERTEX(-847, -127, -1074),\n    COL_VERTEX(-1215, -153, -1005),\n    COL_VERTEX(-831, -153, -1005),\n    COL_VERTEX(-1228, -178, -946),\n    COL_VERTEX(-1202, -101, -5221),\n    COL_VERTEX(-1202, 307, -5221),\n    COL_VERTEX(-844, 307, -5529),\n    COL_VERTEX(-1202, 307, -5529),\n    COL_VERTEX(-844, -101, -5221),\n    COL_VERTEX(-1100, 154, -5221),\n    COL_VERTEX(-433, 0, -733),\n    COL_VERTEX(-1902, 0, -1023),\n    COL_VERTEX(-1794, 0, -1059),\n    COL_VERTEX(-1228, 614, -460),\n    COL_VERTEX(-869, 614, -460),\n    COL_VERTEX(-1177, 51, 154),\n    COL_VERTEX(-1177, 0, 154),\n    COL_VERTEX(-1177, 614, -409),\n    COL_VERTEX(-1177, 614, -460),\n    COL_VERTEX(-818, 614, -409),\n    COL_VERTEX(-818, 51, 154),\n    COL_VERTEX(-818, 0, 154),\n    COL_VERTEX(-818, 614, -460),\n    COL_VERTEX(-613, 384, -204),\n    COL_VERTEX(-818, 384, -204),\n    COL_VERTEX(-613, 384, -409),\n    COL_VERTEX(-511, 384, -306),\n    COL_VERTEX(-1433, 384, -409),\n    COL_VERTEX(-1535, 384, -511),\n    COL_VERTEX(-1535, 384, -306),\n    COL_VERTEX(-1535, 0, -306),\n    COL_VERTEX(-1433, 384, -204),\n    COL_VERTEX(-869, 0, 154),\n    COL_VERTEX(-818, 0, 205),\n    COL_VERTEX(-869, 512, -409),\n    COL_VERTEX(-1433, 256, -409),\n    COL_VERTEX(-613, 256, -409),\n    COL_VERTEX(-289, 256, -733),\n    COL_VERTEX(-613, 0, -409),\n    COL_VERTEX(-1228, 512, -409),\n    COL_VERTEX(-1757, 256, -733),\n    COL_VERTEX(-511, 0, 922),\n    COL_VERTEX(-511, 0, 512),\n    COL_VERTEX(-613, -50, 563),\n    COL_VERTEX(-613, -50, 870),\n    COL_VERTEX(-818, 0, 1229),\n    COL_VERTEX(-1177, -50, 1126),\n    COL_VERTEX(-1228, 0, 1229),\n    COL_VERTEX(-1433, -50, 870),\n    COL_VERTEX(-1535, 0, 922),\n    COL_VERTEX(-1433, -50, 563),\n    COL_VERTEX(-1177, -50, 307),\n    COL_VERTEX(-1228, 0, 205),\n    COL_VERTEX(-869, -50, 307),\n    COL_VERTEX(-460, 0, 1382),\n    COL_VERTEX(-613, 0, 1382),\n    COL_VERTEX(-665, 0, 1536),\n    COL_VERTEX(-1586, 0, 1382),\n    COL_VERTEX(-1433, 0, 1382),\n    COL_VERTEX(-1637, 0, 1434),\n    COL_VERTEX(-1535, 512, -1023),\n    COL_VERTEX(-2047, 512, -1023),\n    COL_VERTEX(-2149, 512, -1637),\n    COL_VERTEX(-2420, 512, -1478),\n    COL_VERTEX(-2457, 512, -1637),\n    COL_VERTEX(-2493, 512, -1550),\n    COL_VERTEX(-2507, 768, -1536),\n    COL_VERTEX(-2779, 512, -1264),\n    COL_VERTEX(-2670, 512, -1228),\n    COL_VERTEX(-2724, 768, -1318),\n    COL_VERTEX(-2761, 512, -1355),\n    COL_VERTEX(-2543, 512, -1572),\n    COL_VERTEX(-2761, 768, -1355),\n    COL_VERTEX(-2779, 973, -1264),\n    COL_VERTEX(-2493, 973, -1550),\n    COL_VERTEX(-511, 512, -1023),\n    COL_VERTEX(-767, 512, -1023),\n    COL_VERTEX(-1279, 512, -921),\n    COL_VERTEX(-767, 512, -921),\n    COL_VERTEX(819, 614, -1228),\n    COL_VERTEX(734, 614, -1313),\n    COL_VERTEX(409, 614, -1494),\n    COL_VERTEX(614, 614, -1023),\n    COL_VERTEX(156, 0, 253),\n    COL_VERTEX(463, 0, 561),\n    COL_VERTEX(102, 1024, -1637),\n    COL_VERTEX(-1535, 1415, -1302),\n    COL_VERTEX(-511, 1415, -1302),\n    COL_VERTEX(-511, 1024, -1023),\n    COL_VERTEX(-2149, 1024, -1637),\n    COL_VERTEX(-1535, 1024, -1023),\n    COL_VERTEX(-2457, 1741, -253),\n    COL_VERTEX(-3071, 1024, -1023),\n    COL_VERTEX(-3071, 1024, 0),\n    COL_VERTEX(-2457, 1024, -1637),\n    COL_VERTEX(1024, 1024, -1023),\n    COL_VERTEX(1024, 1024, 0),\n    COL_VERTEX(-511, 1024, 1536),\n    COL_VERTEX(-1535, 1024, 1536),\n    COL_VERTEX(-1281, 1741, 922),\n    COL_VERTEX(-180, 256, -842),\n    COL_VERTEX(0, 0, -1023),\n    COL_VERTEX(333, 256, -1023),\n    COL_VERTEX(-2268, 26, 246),\n    COL_VERTEX(-2268, 51, 246),\n    COL_VERTEX(-2305, 51, 210),\n    COL_VERTEX(-2305, 77, 210),\n    COL_VERTEX(-2341, 77, 174),\n    COL_VERTEX(-2341, 102, 174),\n    COL_VERTEX(-2377, 102, 138),\n    COL_VERTEX(-2377, 128, 138),\n    COL_VERTEX(-2413, 128, 101),\n    COL_VERTEX(-2413, 154, 101),\n    COL_VERTEX(-2449, 154, 65),\n    COL_VERTEX(-2449, 179, 65),\n    COL_VERTEX(-2486, 179, 29),\n    COL_VERTEX(-2486, 205, 29),\n    COL_VERTEX(-3071, 205, 0),\n    COL_VERTEX(439, 179, 29),\n    COL_VERTEX(402, 179, 65),\n    COL_VERTEX(402, 154, 65),\n    COL_VERTEX(366, 154, 101),\n    COL_VERTEX(366, 128, 101),\n    COL_VERTEX(330, 128, 138),\n    COL_VERTEX(330, 102, 138),\n    COL_VERTEX(294, 102, 174),\n    COL_VERTEX(294, 77, 174),\n    COL_VERTEX(258, 77, 210),\n    COL_VERTEX(258, 51, 210),\n    COL_VERTEX(221, 51, 246),\n    COL_VERTEX(221, 26, 246),\n    COL_VERTEX(-3071, 461, -716),\n    COL_VERTEX(-3071, 461, -869),\n    COL_VERTEX(-2969, 205, -613),\n    COL_VERTEX(-2559, 205, -101),\n    COL_VERTEX(-921, 717, 1536),\n    COL_VERTEX(-1330, 410, 1536),\n    COL_VERTEX(-511, 0, 1536),\n    COL_VERTEX(1024, 461, -306),\n    COL_VERTEX(1024, 461, -153),\n    COL_VERTEX(1024, 205, -1023),\n    COL_VERTEX(-1125, 717, 1536),\n    COL_VERTEX(-2203, 0, 253),\n    COL_VERTEX(-2866, 1024, -1228),\n    COL_VERTEX(662, 870, -1385),\n    COL_VERTEX(553, 614, -1494),\n    COL_VERTEX(553, 870, -1494),\n    COL_VERTEX(698, 614, -1421),\n    COL_VERTEX(662, 614, -1385),\n    COL_VERTEX(410, 614, -1637),\n    COL_VERTEX(-613, 512, -409),\n    COL_VERTEX(-255, 512, -767),\n    COL_VERTEX(102, 614, -1637),\n    COL_VERTEX(512, 205, -101),\n    COL_VERTEX(1024, 205, 0),\n    COL_VERTEX(-2559, 205, -1023),\n    COL_VERTEX(-2866, 205, -1228),\n    COL_VERTEX(-1330, 0, 3174),\n    COL_VERTEX(-289, 0, -733),\n    COL_VERTEX(-216, 256, -878),\n    COL_VERTEX(-216, 0, -878),\n    COL_VERTEX(-1866, 256, -842),\n    COL_VERTEX(-2047, 0, -1023),\n    COL_VERTEX(-1721, 0, -770),\n    COL_VERTEX(-1177, 256, 2150),\n    COL_VERTEX(-716, 410, 2150),\n    COL_VERTEX(-1330, 0, 2150),\n    COL_VERTEX(-716, 0, 1536),\n    COL_VERTEX(-716, 0, 2150),\n    COL_VERTEX(-716, 410, 1536),\n    COL_VERTEX(-1535, 0, 512),\n    COL_VERTEX(-818, 0, -204),\n    COL_VERTEX(-2510, 26, 561),\n    COL_VERTEX(614, 205, -1023),\n    COL_VERTEX(-2661, 0, -1023),\n    COL_VERTEX(512, 0, -1023),\n    COL_VERTEX(435, 0, -1023),\n    COL_VERTEX(77, 0, -921),\n    COL_VERTEX(512, 0, -101),\n    COL_VERTEX(-35, 0, -842),\n    COL_VERTEX(-108, 0, -914),\n    COL_VERTEX(-289, 0, -589),\n    COL_VERTEX(-2011, 0, -842),\n    COL_VERTEX(-1757, 0, -589),\n    COL_VERTEX(-1938, 0, -914),\n    COL_VERTEX(-2482, 0, -921),\n    COL_VERTEX(-2124, 0, -921),\n    COL_VERTEX(-1228, 0, -204),\n    COL_VERTEX(-2969, 205, -972),\n    COL_VERTEX(-3071, 205, -1023),\n    COL_VERTEX(512, 205, -1023),\n    COL_VERTEX(922, 205, -50),\n    COL_VERTEX(922, 205, -409),\n    COL_VERTEX(-1177, 512, -1023),\n    COL_VERTEX(-1279, 512, -1740),\n    COL_VERTEX(-1381, 512, -1535),\n    COL_VERTEX(-767, 512, -1740),\n    COL_VERTEX(-767, 512, -1125),\n    COL_VERTEX(-2610, 307, -4351),\n    COL_VERTEX(-3097, -409, -1740),\n    COL_VERTEX(-2687, 410, -4351),\n    COL_VERTEX(-1509, -409, -1740),\n    COL_VERTEX(-1996, 307, -4351),\n    COL_VERTEX(-2175, -204, -2277),\n    COL_VERTEX(-2175, -127, -2226),\n    COL_VERTEX(-2482, -204, -2277),\n    COL_VERTEX(-2482, -127, -2226),\n    COL_VERTEX(-2021, 51, -1740),\n    COL_VERTEX(-2431, 51, -2047),\n    COL_VERTEX(-2596, -204, -2834),\n    COL_VERTEX(-2046, -204, -2940),\n    COL_VERTEX(-1919, -204, -2866),\n    COL_VERTEX(-1959, -204, -2834),\n    COL_VERTEX(-2431, -178, -2226),\n    COL_VERTEX(-2431, -204, -2226),\n    COL_VERTEX(-2533, -409, -2991),\n    COL_VERTEX(-2431, -178, -2201),\n    COL_VERTEX(-2431, -153, -2201),\n    COL_VERTEX(-2431, -153, -2175),\n    COL_VERTEX(-2431, -127, -2175),\n    COL_VERTEX(-2431, -127, -2149),\n    COL_VERTEX(-2431, -101, -2149),\n    COL_VERTEX(-2431, -101, -2124),\n    COL_VERTEX(-2431, -76, -2124),\n    COL_VERTEX(-2431, -76, -2098),\n    COL_VERTEX(-2431, -50, -2098),\n    COL_VERTEX(-2431, -50, -2073),\n    COL_VERTEX(-2431, -25, -2073),\n    COL_VERTEX(-2431, -25, -2047),\n    COL_VERTEX(-2153, 0, -1996),\n    COL_VERTEX(-2453, 0, -1996),\n    COL_VERTEX(-2431, 0, -1996),\n    COL_VERTEX(-2431, 51, -1996),\n    COL_VERTEX(-2482, 410, -1125),\n    COL_VERTEX(-2124, 410, -1125),\n    COL_VERTEX(-2380, 256, -1125),\n    COL_VERTEX(-2226, 0, -1074),\n    COL_VERTEX(-2226, 0, -1125),\n    COL_VERTEX(-2226, 0, -1023),\n    COL_VERTEX(-3097, -204, -1740),\n    COL_VERTEX(-1867, -409, -3239),\n    COL_VERTEX(-2688, -409, -3239),\n    COL_VERTEX(-2482, 0, -1125),\n    COL_VERTEX(-2124, 0, -1125),\n    COL_VERTEX(-2482, 0, -1228),\n    COL_VERTEX(2253, 307, -1842),\n    COL_VERTEX(4301, 410, -537),\n    COL_VERTEX(2253, 1024, 1382),\n    COL_VERTEX(2253, 307, 1997),\n    COL_VERTEX(3573, 307, 1997),\n    COL_VERTEX(4836, 307, 743),\n    COL_VERTEX(4403, 307, 307),\n    COL_VERTEX(4146, 358, -943),\n    COL_VERTEX(3422, 358, -1667),\n    COL_VERTEX(2355, 358, -1791),\n    COL_VERTEX(3174, 358, -1791),\n    COL_VERTEX(2355, 768, -1791),\n    COL_VERTEX(3174, 358, 1331),\n    COL_VERTEX(2355, 358, 1331),\n    COL_VERTEX(3174, 768, 1331),\n    COL_VERTEX(4146, 358, 484),\n    COL_VERTEX(3422, 358, 1208),\n    COL_VERTEX(4146, 768, 484),\n    COL_VERTEX(4301, 1229, -613),\n    COL_VERTEX(4301, 1229, 154),\n    COL_VERTEX(4301, 410, 77),\n    COL_VERTEX(3277, 307, 1280),\n    COL_VERTEX(1126, 205, -409),\n    COL_VERTEX(1229, 205, -511),\n    COL_VERTEX(1229, 205, -50),\n    COL_VERTEX(1229, 205, 51),\n    COL_VERTEX(1229, 1229, 0),\n    COL_VERTEX(1126, 1229, 0),\n    COL_VERTEX(1229, 1229, -460),\n    COL_VERTEX(4198, 1229, 205),\n    COL_VERTEX(4250, 1229, -613),\n    COL_VERTEX(4198, 1229, -665),\n    COL_VERTEX(2465, 1638, 768),\n    COL_VERTEX(1741, 1638, -504),\n    COL_VERTEX(3789, 1638, 44),\n    COL_VERTEX(3789, 1638, -504),\n    COL_VERTEX(3065, 1638, -1228),\n    COL_VERTEX(2465, 1638, -1228),\n    COL_VERTEX(1178, 1229, -409),\n    COL_VERTEX(1126, 307, -409),\n    COL_VERTEX(1178, 1229, -50),\n    COL_VERTEX(1126, 1229, -50),\n    COL_VERTEX(1891, 819, 1208),\n    COL_VERTEX(2036, 819, 1352),\n    COL_VERTEX(1891, 1024, -1667),\n    COL_VERTEX(2036, 1024, -1812),\n    COL_VERTEX(2036, 819, -1812),\n    COL_VERTEX(2036, 1024, 1352),\n    COL_VERTEX(3385, 358, 1171),\n    COL_VERTEX(3385, 768, 1171),\n    COL_VERTEX(3458, 358, 1244),\n    COL_VERTEX(4182, 358, 520),\n    COL_VERTEX(3458, 768, -1704),\n    COL_VERTEX(3458, 358, -1704),\n    COL_VERTEX(2355, 768, -1740),\n    COL_VERTEX(2355, 768, -1842),\n    COL_VERTEX(2355, 358, -1842),\n    COL_VERTEX(2355, 768, 1382),\n    COL_VERTEX(3174, 768, 1382),\n    COL_VERTEX(4836, 307, -1203),\n    COL_VERTEX(3573, 307, -2457),\n    COL_VERTEX(2253, 307, -2457),\n    COL_VERTEX(1971, 205, -511),\n    COL_VERTEX(1971, 282, -511),\n    COL_VERTEX(1894, 230, -511),\n    COL_VERTEX(1920, 230, -511),\n    COL_VERTEX(1920, 256, -511),\n    COL_VERTEX(1946, 256, -511),\n    COL_VERTEX(1946, 282, -511),\n    COL_VERTEX(1024, 205, -306),\n    COL_VERTEX(1024, 205, -153),\n    COL_VERTEX(-537, -306, -4505),\n    COL_VERTEX(-537, -306, -3685),\n    COL_VERTEX(77, 0, -1228),\n    COL_VERTEX(538, 0, -1842),\n    COL_VERTEX(538, 0, -1125),\n    COL_VERTEX(435, 0, -1125),\n    COL_VERTEX(1050, 512, -4300),\n    COL_VERTEX(1050, -306, -4300),\n    COL_VERTEX(1050, -306, -1945),\n    COL_VERTEX(845, 512, -1740),\n    COL_VERTEX(-332, -101, -1740),\n    COL_VERTEX(-25, 77, -1740),\n    COL_VERTEX(589, -101, -1970),\n    COL_VERTEX(589, 0, -1970),\n    COL_VERTEX(589, 0, -1919),\n    COL_VERTEX(589, 77, -1842),\n    COL_VERTEX(538, -101, -1970),\n    COL_VERTEX(-76, -101, -1970),\n    COL_VERTEX(-25, 0, -1919),\n    COL_VERTEX(-25, 0, -1970),\n    COL_VERTEX(-25, -101, -1970),\n    COL_VERTEX(-25, 77, -1842),\n    COL_VERTEX(-229, -306, -2559),\n    COL_VERTEX(435, -101, -2713),\n    COL_VERTEX(77, -101, -2713),\n    COL_VERTEX(-25, -101, -2559),\n    COL_VERTEX(-50, -204, -4505),\n    COL_VERTEX(845, -306, -4505),\n    COL_VERTEX(-332, 512, -4505),\n    COL_VERTEX(538, 666, -2252),\n    COL_VERTEX(742, 512, -4197),\n    COL_VERTEX(1050, 512, -1740),\n    COL_VERTEX(-332, -306, -4402),\n    COL_VERTEX(-434, -306, -4300),\n    COL_VERTEX(-537, -306, -4300),\n    COL_VERTEX(742, -101, -2661),\n    COL_VERTEX(-537, -101, -2661),\n    COL_VERTEX(-537, -101, -1740),\n    COL_VERTEX(435, 410, -1125),\n    COL_VERTEX(77, 410, -1125),\n    COL_VERTEX(-25, 0, -1740),\n    COL_VERTEX(179, 0, -1074),\n    COL_VERTEX(179, 0, -1023),\n    COL_VERTEX(333, 0, -1023),\n    COL_VERTEX(614, 0, -1023),\n    COL_VERTEX(77, -306, -2713),\n    COL_VERTEX(435, -306, -2713),\n    COL_VERTEX(538, -306, -2559),\n    COL_VERTEX(947, -306, -4300),\n    COL_VERTEX(845, -306, -4402),\n    COL_VERTEX(1050, -101, -1945),\n    COL_VERTEX(947, -101, -1945),\n    COL_VERTEX(845, -101, -1842),\n    COL_VERTEX(-434, -101, -1945),\n    COL_VERTEX(-537, -101, -1945),\n    COL_VERTEX(-332, -101, -1842),\n    COL_VERTEX(538, -76, -1919),\n    COL_VERTEX(538, -101, -1919),\n    COL_VERTEX(-25, -101, -1919),\n    COL_VERTEX(538, -76, -1893),\n    COL_VERTEX(538, -50, -1893),\n    COL_VERTEX(538, -50, -1868),\n    COL_VERTEX(538, -25, -1868),\n    COL_VERTEX(538, -25, -1842),\n    COL_VERTEX(-537, -306, -1945),\n    COL_VERTEX(-4402, 205, -50),\n    COL_VERTEX(-4402, 205, -869),\n    COL_VERTEX(-5221, 205, -869),\n    COL_VERTEX(-4121, 282, -306),\n    COL_VERTEX(-4146, 282, -306),\n    COL_VERTEX(-4121, 256, -306),\n    COL_VERTEX(-4095, 256, -306),\n    COL_VERTEX(-4095, 230, -306),\n    COL_VERTEX(-4069, 230, -306),\n    COL_VERTEX(-4069, 205, -306),\n    COL_VERTEX(-4069, 205, -613),\n    COL_VERTEX(-4197, 205, -306),\n    COL_VERTEX(-4146, 358, -255),\n    COL_VERTEX(-4069, 282, -255),\n    COL_VERTEX(-4018, 282, -255),\n    COL_VERTEX(-4146, 307, -613),\n    COL_VERTEX(-4146, 307, -306),\n    COL_VERTEX(-4146, 358, -613),\n    COL_VERTEX(-4197, 205, -613),\n    COL_VERTEX(-4069, 282, -613),\n    COL_VERTEX(-4018, 282, -613),\n    COL_VERTEX(-4914, 205, -1484),\n    COL_VERTEX(-4914, 205, -1279),\n    COL_VERTEX(-5017, 205, -1177),\n    COL_VERTEX(-5221, 205, -1177),\n    COL_VERTEX(-3378, 205, -1177),\n    COL_VERTEX(-3481, 205, -1279),\n    COL_VERTEX(-3481, 205, -1484),\n    COL_VERTEX(-4914, 205, 563),\n    COL_VERTEX(-4914, 205, 358),\n    COL_VERTEX(-5017, 205, 256),\n    COL_VERTEX(-5221, 410, -153),\n    COL_VERTEX(-3481, 205, 563),\n    COL_VERTEX(-3481, 205, 358),\n    COL_VERTEX(-3378, 205, 256),\n    COL_VERTEX(-3173, 205, 256),\n    COL_VERTEX(-3071, 205, -869),\n    COL_VERTEX(-3071, 205, -716),\n    COL_VERTEX(-3650, 1434, -1074),\n    COL_VERTEX(-3583, 1434, -1007),\n    COL_VERTEX(-3583, 1434, 86),\n    COL_VERTEX(-4745, 1434, -1074),\n    COL_VERTEX(-4745, 1434, 154),\n    COL_VERTEX(-4812, 1434, 86),\n    COL_VERTEX(-4812, 1434, -1007),\n    COL_VERTEX(-3583, 1434, -1074),\n    COL_VERTEX(-3583, 1434, 154),\n    COL_VERTEX(-4812, 1434, -1074),\n    COL_VERTEX(-3173, 205, -613),\n    COL_VERTEX(-3173, 205, -972),\n    COL_VERTEX(1833, 1229, -2205),\n    COL_VERTEX(1374, 1229, -2205),\n    COL_VERTEX(1374, 1229, -2665),\n    COL_VERTEX(1845, 1024, -2713),\n    COL_VERTEX(1699, 1229, -2665),\n    COL_VERTEX(1784, 614, -2869),\n    COL_VERTEX(1833, 1229, -2531),\n    COL_VERTEX(1875, 768, -2815),\n    COL_VERTEX(1983, 922, -2706),\n    COL_VERTEX(1983, 768, -2706),\n    COL_VERTEX(590, 870, -1530),\n    COL_VERTEX(734, 870, -1457),\n    COL_VERTEX(2038, 614, -2254),\n    COL_VERTEX(1169, 614, -2254),\n    COL_VERTEX(1169, 614, -2616),\n    COL_VERTEX(1374, 1229, -2339),\n    COL_VERTEX(1507, 1229, -2205),\n    COL_VERTEX(1699, 1229, -2205),\n    COL_VERTEX(626, 1126, -1566),\n    COL_VERTEX(734, 1126, -1457),\n    COL_VERTEX(2002, 922, -1928),\n    COL_VERTEX(2038, 1024, -1964),\n    COL_VERTEX(2074, 1024, -2001),\n    COL_VERTEX(2002, 768, -1928),\n    COL_VERTEX(2110, 922, -2037),\n    COL_VERTEX(807, 614, -1385),\n    COL_VERTEX(1223, 768, -2706),\n    COL_VERTEX(1332, 768, -2815),\n    COL_VERTEX(1332, 922, -2815),\n    COL_VERTEX(1259, 1024, -2743),\n    COL_VERTEX(1296, 1024, -2779),\n    COL_VERTEX(626, 614, -1711),\n    COL_VERTEX(-2942, 1536, -1246),\n    COL_VERTEX(-2942, 512, -1246),\n    COL_VERTEX(-2435, 1536, -1753),\n    COL_VERTEX(-3521, 538, -1825),\n    COL_VERTEX(-3521, 512, -1825),\n    COL_VERTEX(-3539, 538, -1843),\n    COL_VERTEX(-3539, 563, -1843),\n    COL_VERTEX(-3557, 563, -1861),\n    COL_VERTEX(-3557, 589, -1861),\n    COL_VERTEX(-3575, 589, -1879),\n    COL_VERTEX(-3575, 614, -1879),\n    COL_VERTEX(-3593, 614, -1898),\n    COL_VERTEX(-3593, 640, -1898),\n    COL_VERTEX(-3611, 640, -1916),\n    COL_VERTEX(-3611, 666, -1916),\n    COL_VERTEX(-3630, 666, -1934),\n    COL_VERTEX(-3630, 691, -1934),\n    COL_VERTEX(-3648, 691, -1952),\n    COL_VERTEX(-3648, 717, -1952),\n    COL_VERTEX(-2942, 717, -1246),\n    COL_VERTEX(-3159, 512, -2477),\n    COL_VERTEX(-3268, 1536, -2585),\n    COL_VERTEX(-3268, 717, -2585),\n    COL_VERTEX(-3666, 1485, -2042),\n    COL_VERTEX(-3702, 1485, -2079),\n    COL_VERTEX(-3666, 1536, -1970),\n    COL_VERTEX(-3774, 1536, -2079),\n    COL_VERTEX(-5114, 1485, -3491),\n    COL_VERTEX(-5114, 717, -3418),\n    COL_VERTEX(-5150, 1485, -3527),\n    COL_VERTEX(-5223, 1536, -3527),\n    COL_VERTEX(-4716, 717, -4034),\n    COL_VERTEX(-6562, 1485, -4939),\n    COL_VERTEX(-6562, 717, -4866),\n    COL_VERTEX(-6164, 1536, -5482),\n    COL_VERTEX(-6164, 717, -5482),\n    COL_VERTEX(-6671, 1536, -4975),\n    COL_VERTEX(-7395, 819, -5771),\n    COL_VERTEX(-7395, 1434, -5771),\n    COL_VERTEX(-6960, 819, -6206),\n    COL_VERTEX(-2507, 512, -1680),\n    COL_VERTEX(-5983, 1536, -4287),\n    COL_VERTEX(-1381, -1074, 1434),\n    COL_VERTEX(-665, -1074, 1434),\n    COL_VERTEX(-1381, -1074, 922),\n    COL_VERTEX(-613, 0, -716),\n    COL_VERTEX(-665, 0, -767),\n    COL_VERTEX(-716, 0, -767),\n    COL_VERTEX(-767, -420, -665),\n    COL_VERTEX(-1330, 410, -1595),\n    COL_VERTEX(-716, 410, -1595),\n    COL_VERTEX(-716, 132, -613),\n    COL_VERTEX(-716, -101, -1595),\n    COL_VERTEX(-1330, 307, -1595),\n    COL_VERTEX(-818, 410, -1595),\n    COL_VERTEX(-1330, 205, -716),\n    COL_VERTEX(-1330, -562, 870),\n    COL_VERTEX(-1228, -460, 870),\n    COL_VERTEX(-1177, -1074, 870),\n    COL_VERTEX(-818, -460, 870),\n    COL_VERTEX(-716, -562, 870),\n    COL_VERTEX(-869, -1074, 870),\n    COL_VERTEX(-869, -1074, 922),\n    COL_VERTEX(-869, -818, 922),\n    COL_VERTEX(-361, 0, -806),\n    COL_VERTEX(-1830, 0, -878),\n    COL_VERTEX(-1794, 0, -914),\n    COL_VERTEX(-180, 0, -987),\n    COL_VERTEX(-506, 0, -806),\n    COL_VERTEX(-1330, -456, -613),\n    COL_VERTEX(-1433, 410, -716),\n    COL_VERTEX(-1381, 0, -767),\n    COL_VERTEX(-1279, 0, -716),\n    COL_VERTEX(-1279, -420, -665),\n    COL_VERTEX(-1279, -383, -716),\n    COL_VERTEX(-1330, 0, -767),\n    COL_VERTEX(-144, -76, -1023),\n    COL_VERTEX(-869, -76, -1177),\n    COL_VERTEX(-625, -76, -1504),\n    COL_VERTEX(-444, -25, -1323),\n    COL_VERTEX(-535, -25, -1414),\n    COL_VERTEX(-535, -50, -1414),\n    COL_VERTEX(-1602, 0, -1323),\n    COL_VERTEX(-1199, -25, -1077),\n    COL_VERTEX(-1866, 0, -987),\n    COL_VERTEX(-1613, 0, -733),\n    COL_VERTEX(-946, -101, -5119),\n    COL_VERTEX(-1100, -101, -5221),\n    COL_VERTEX(-869, -127, -1177),\n    COL_VERTEX(-716, -1049, 320),\n    COL_VERTEX(-1330, -1049, 320),\n    COL_VERTEX(-716, -1023, 282),\n    COL_VERTEX(-1330, -1023, 282),\n    COL_VERTEX(-716, -997, 243),\n    COL_VERTEX(-1330, -997, 243),\n    COL_VERTEX(-716, -972, 205),\n    COL_VERTEX(-1330, -972, 205),\n    COL_VERTEX(-716, -946, 166),\n    COL_VERTEX(-1330, -946, 166),\n    COL_VERTEX(-716, -921, 128),\n    COL_VERTEX(-1330, -921, 128),\n    COL_VERTEX(-716, -869, 51),\n    COL_VERTEX(-1330, -869, 51),\n    COL_VERTEX(-1330, -895, 90),\n    COL_VERTEX(-716, -895, 90),\n    COL_VERTEX(-716, -844, 13),\n    COL_VERTEX(-1330, -844, 13),\n    COL_VERTEX(-716, -818, -25),\n    COL_VERTEX(-1330, -818, -25),\n    COL_VERTEX(-716, -793, -63),\n    COL_VERTEX(-1330, -793, -63),\n    COL_VERTEX(-716, -767, -101),\n    COL_VERTEX(-1330, -767, -101),\n    COL_VERTEX(-1330, -716, -178),\n    COL_VERTEX(-716, -716, -178),\n    COL_VERTEX(-716, -690, -217),\n    COL_VERTEX(-1330, -690, -217),\n    COL_VERTEX(-716, -665, -255),\n    COL_VERTEX(-1330, -665, -255),\n    COL_VERTEX(-1330, -741, -140),\n    COL_VERTEX(-716, -741, -140),\n    COL_VERTEX(-716, -639, -293),\n    COL_VERTEX(-1330, -639, -293),\n    COL_VERTEX(-716, -613, -332),\n    COL_VERTEX(-1330, -613, -332),\n    COL_VERTEX(-716, -588, -370),\n    COL_VERTEX(-1330, -588, -370),\n    COL_VERTEX(-716, -562, -409),\n    COL_VERTEX(-1330, -562, -409),\n    COL_VERTEX(-716, -537, -447),\n    COL_VERTEX(-1330, -537, -447),\n    COL_VERTEX(-716, -511, -485),\n    COL_VERTEX(-1330, -511, -485),\n    COL_VERTEX(-716, -485, -524),\n    COL_VERTEX(-1330, -485, -524),\n    COL_VERTEX(-1330, -460, -524),\n    COL_VERTEX(-1279, -357, -716),\n    COL_VERTEX(-767, -357, -716),\n    COL_VERTEX(-776, -332, -754),\n    COL_VERTEX(-1270, -332, -754),\n    COL_VERTEX(-784, -306, -793),\n    COL_VERTEX(-1262, -306, -793),\n    COL_VERTEX(-801, -255, -869),\n    COL_VERTEX(-1245, -255, -869),\n    COL_VERTEX(-1253, -281, -831),\n    COL_VERTEX(-793, -281, -831),\n    COL_VERTEX(-1236, -229, -908),\n    COL_VERTEX(-810, -229, -908),\n    COL_VERTEX(-818, -204, -946),\n    COL_VERTEX(-1228, -204, -946),\n    COL_VERTEX(-724, -460, -524),\n    COL_VERTEX(-716, -460, -527),\n    COL_VERTEX(-1330, -460, -562),\n    COL_VERTEX(-716, -434, -601),\n    COL_VERTEX(-1330, -434, -601),\n    COL_VERTEX(-716, -409, -639),\n    COL_VERTEX(-1330, -409, -639),\n    COL_VERTEX(-716, -383, -677),\n    COL_VERTEX(-1330, -383, -677),\n    COL_VERTEX(-1279, -383, -677),\n    COL_VERTEX(-767, -383, -677),\n    COL_VERTEX(-1199, -153, -1074),\n    COL_VERTEX(-847, -153, -1074),\n    COL_VERTEX(-1215, -178, -1005),\n    COL_VERTEX(-831, -178, -1005),\n    COL_VERTEX(-844, -101, -5529),\n    COL_VERTEX(-1202, -101, -5529),\n    COL_VERTEX(-844, 307, -5221),\n    COL_VERTEX(-1177, 512, -460),\n    COL_VERTEX(-1228, 512, -460),\n    COL_VERTEX(-818, 512, -460),\n    COL_VERTEX(-869, 512, -460),\n    COL_VERTEX(-1228, 0, 154),\n    COL_VERTEX(-1228, 51, 154),\n    COL_VERTEX(-1228, 0, -460),\n    COL_VERTEX(-1177, 0, -460),\n    COL_VERTEX(-1228, 614, -409),\n    COL_VERTEX(-869, 51, 154),\n    COL_VERTEX(-869, 0, -460),\n    COL_VERTEX(-818, 0, -460),\n    COL_VERTEX(-869, 614, -409),\n    COL_VERTEX(-511, 0, -306),\n    COL_VERTEX(-613, 0, -204),\n    COL_VERTEX(-511, 0, -511),\n    COL_VERTEX(-511, 384, -511),\n    COL_VERTEX(-818, 384, -409),\n    COL_VERTEX(-1535, 0, -511),\n    COL_VERTEX(-1433, 0, -204),\n    COL_VERTEX(-1228, 384, -204),\n    COL_VERTEX(-1228, 384, -409),\n    COL_VERTEX(-1177, 512, -409),\n    COL_VERTEX(-818, 512, -409),\n    COL_VERTEX(-1433, 0, -409),\n    COL_VERTEX(-1757, 0, -733),\n    COL_VERTEX(-869, -50, 1126),\n    COL_VERTEX(-1535, 0, 1536),\n    COL_VERTEX(-2559, 0, -101),\n    COL_VERTEX(-409, 0, 1434),\n    COL_VERTEX(-1381, 0, 1536),\n    COL_VERTEX(-1433, 512, -409),\n    COL_VERTEX(-2661, 512, -1023),\n    COL_VERTEX(-2507, 512, -1536),\n    COL_VERTEX(-2743, 512, -1300),\n    COL_VERTEX(-2866, 512, -1228),\n    COL_VERTEX(-2724, 512, -1318),\n    COL_VERTEX(-1279, 512, -1023),\n    COL_VERTEX(-2457, 1741, -769),\n    COL_VERTEX(-2202, 1741, -1023),\n    COL_VERTEX(662, 614, -1240),\n    COL_VERTEX(481, 614, -1566),\n    COL_VERTEX(0, 614, -1023),\n    COL_VERTEX(819, 205, -1228),\n    COL_VERTEX(463, 26, 561),\n    COL_VERTEX(500, 26, 524),\n    COL_VERTEX(155, 1741, -1023),\n    COL_VERTEX(410, 1024, -1637),\n    COL_VERTEX(-765, 1741, 922),\n    COL_VERTEX(410, 1741, -253),\n    COL_VERTEX(410, 1741, -769),\n    COL_VERTEX(-180, 0, -842),\n    COL_VERTEX(-2547, 26, 524),\n    COL_VERTEX(-2547, 51, 524),\n    COL_VERTEX(-2583, 51, 488),\n    COL_VERTEX(-2583, 77, 488),\n    COL_VERTEX(-2619, 77, 452),\n    COL_VERTEX(-2619, 102, 452),\n    COL_VERTEX(-2655, 102, 416),\n    COL_VERTEX(-2655, 128, 416),\n    COL_VERTEX(-2691, 128, 380),\n    COL_VERTEX(-2691, 154, 380),\n    COL_VERTEX(-2728, 154, 343),\n    COL_VERTEX(-2728, 179, 343),\n    COL_VERTEX(-2764, 179, 307),\n    COL_VERTEX(-2764, 205, 307),\n    COL_VERTEX(-2457, 205, 0),\n    COL_VERTEX(717, 179, 307),\n    COL_VERTEX(717, 205, 307),\n    COL_VERTEX(439, 205, 29),\n    COL_VERTEX(681, 179, 343),\n    COL_VERTEX(681, 154, 343),\n    COL_VERTEX(644, 154, 380),\n    COL_VERTEX(644, 128, 380),\n    COL_VERTEX(608, 128, 416),\n    COL_VERTEX(608, 102, 416),\n    COL_VERTEX(572, 102, 452),\n    COL_VERTEX(572, 77, 452),\n    COL_VERTEX(536, 77, 488),\n    COL_VERTEX(536, 51, 488),\n    COL_VERTEX(500, 51, 524),\n    COL_VERTEX(-3071, 205, -613),\n    COL_VERTEX(-1330, 0, 1536),\n    COL_VERTEX(-3071, 0, 0),\n    COL_VERTEX(-1330, 410, 2150),\n    COL_VERTEX(-1125, 717, 2150),\n    COL_VERTEX(-2510, 0, 561),\n    COL_VERTEX(1024, 0, 0),\n    COL_VERTEX(-255, 614, -1279),\n    COL_VERTEX(410, 205, 0),\n    COL_VERTEX(1024, 205, -50),\n    COL_VERTEX(-1866, 0, -842),\n    COL_VERTEX(1024, 205, -409),\n    COL_VERTEX(-2661, 205, -1023),\n    COL_VERTEX(-716, 0, 3174),\n    COL_VERTEX(-1177, 0, 2150),\n    COL_VERTEX(-869, 256, 2150),\n    COL_VERTEX(-869, 0, 2150),\n    COL_VERTEX(-921, 717, 2150),\n    COL_VERTEX(-2559, 0, -1023),\n    COL_VERTEX(435, 0, -921),\n    COL_VERTEX(77, 0, -1023),\n    COL_VERTEX(-361, 0, -661),\n    COL_VERTEX(-1685, 0, -661),\n    COL_VERTEX(-2124, 0, -1023),\n    COL_VERTEX(-2482, 0, -1023),\n    COL_VERTEX(-3071, 205, -972),\n    COL_TRI_INIT(SURFACE_DEFAULT, 1977),\n    COL_TRI(181, 182, 183),\n    COL_TRI(183, 184, 185),\n    COL_TRI(183, 182, 184),\n    COL_TRI(181, 186, 182),\n    COL_TRI(187, 188, 185),\n    COL_TRI(185, 189, 183),\n    COL_TRI(185, 188, 189),\n    COL_TRI(190, 187, 185),\n    COL_TRI(191, 185, 184),\n    COL_TRI(191, 190, 185),\n    COL_TRI(183, 189, 192),\n    COL_TRI(183, 192, 181),\n    COL_TRI(186, 194, 182),\n    COL_TRI(182, 193, 184),\n    COL_TRI(182, 194, 193),\n    COL_TRI(189, 194, 1018),\n    COL_TRI(186, 1018, 194),\n    COL_TRI(188, 193, 194),\n    COL_TRI(188, 194, 189),\n    COL_TRI(195, 184, 193),\n    COL_TRI(198, 1022, 199),\n    COL_TRI(195, 191, 184),\n    COL_TRI(189, 1018, 192),\n    COL_TRI(196, 1019, 1020),\n    COL_TRI(196, 1021, 1019),\n    COL_TRI(197, 195, 198),\n    COL_TRI(198, 199, 197),\n    COL_TRI(199, 1022, 187),\n    COL_TRI(199, 187, 196),\n    COL_TRI(197, 199, 196),\n    COL_TRI(197, 196, 1020),\n    COL_TRI(197, 1020, 195),\n    COL_TRI(104, 113, 116),\n    COL_TRI(104, 116, 107),\n    COL_TRI(102, 104, 203),\n    COL_TRI(206, 204, 205),\n    COL_TRI(200, 1024, 201),\n    COL_TRI(200, 201, 289),\n    COL_TRI(201, 203, 1025),\n    COL_TRI(201, 1025, 289),\n    COL_TRI(202, 1025, 1023),\n    COL_TRI(203, 1023, 1025),\n    COL_TRI(102, 203, 201),\n    COL_TRI(204, 203, 205),\n    COL_TRI(203, 204, 1023),\n    COL_TRI(205, 286, 207),\n    COL_TRI(205, 207, 202),\n    COL_TRI(206, 205, 202),\n    COL_TRI(209, 208, 211),\n    COL_TRI(207, 1026, 288),\n    COL_TRI(207, 286, 1026),\n    COL_TRI(202, 1027, 206),\n    COL_TRI(202, 1023, 1027),\n    COL_TRI(208, 1028, 210),\n    COL_TRI(208, 210, 211),\n    COL_TRI(210, 1028, 212),\n    COL_TRI(211, 210, 1029),\n    COL_TRI(212, 1029, 210),\n    COL_TRI(211, 1029, 213),\n    COL_TRI(209, 211, 213),\n    COL_TRI(213, 1029, 255),\n    COL_TRI(212, 255, 1029),\n    COL_TRI(213, 255, 248),\n    COL_TRI(209, 213, 248),\n    COL_TRI(214, 248, 255),\n    COL_TRI(215, 217, 218),\n    COL_TRI(215, 1030, 217),\n    COL_TRI(217, 1030, 219),\n    COL_TRI(218, 217, 1031),\n    COL_TRI(219, 1031, 217),\n    COL_TRI(218, 1031, 220),\n    COL_TRI(216, 215, 218),\n    COL_TRI(216, 218, 220),\n    COL_TRI(220, 1031, 254),\n    COL_TRI(219, 254, 1031),\n    COL_TRI(220, 254, 1033),\n    COL_TRI(216, 220, 1033),\n    COL_TRI(221, 280, 222),\n    COL_TRI(222, 1034, 224),\n    COL_TRI(222, 280, 1034),\n    COL_TRI(222, 224, 221),\n    COL_TRI(221, 283, 280),\n    COL_TRI(223, 280, 219),\n    COL_TRI(224, 1034, 223),\n    COL_TRI(224, 223, 225),\n    COL_TRI(224, 225, 221),\n    COL_TRI(225, 223, 1035),\n    COL_TRI(223, 1036, 1035),\n    COL_TRI(223, 209, 1036),\n    COL_TRI(223, 219, 209),\n    COL_TRI(225, 1035, 226),\n    COL_TRI(221, 225, 226),\n    COL_TRI(221, 226, 227),\n    COL_TRI(230, 1039, 1038),\n    COL_TRI(226, 1035, 1037),\n    COL_TRI(226, 1037, 228),\n    COL_TRI(227, 226, 229),\n    COL_TRI(226, 228, 229),\n    COL_TRI(228, 1037, 1036),\n    COL_TRI(228, 1036, 229),\n    COL_TRI(229, 1036, 278),\n    COL_TRI(229, 278, 227),\n    COL_TRI(221, 227, 287),\n    COL_TRI(230, 1038, 232),\n    COL_TRI(231, 1038, 1041),\n    COL_TRI(232, 1038, 231),\n    COL_TRI(231, 1042, 234),\n    COL_TRI(231, 1041, 1042),\n    COL_TRI(233, 1042, 1043),\n    COL_TRI(234, 1042, 233),\n    COL_TRI(233, 1044, 236),\n    COL_TRI(233, 1043, 1044),\n    COL_TRI(235, 1044, 1045),\n    COL_TRI(236, 1044, 235),\n    COL_TRI(235, 1046, 237),\n    COL_TRI(235, 1045, 1046),\n    COL_TRI(242, 1051, 1052),\n    COL_TRI(237, 1046, 1047),\n    COL_TRI(237, 1047, 238),\n    COL_TRI(238, 1047, 1048),\n    COL_TRI(238, 1048, 239),\n    COL_TRI(239, 1048, 1049),\n    COL_TRI(239, 1049, 240),\n    COL_TRI(240, 1049, 1050),\n    COL_TRI(240, 1050, 241),\n    COL_TRI(241, 1050, 1051),\n    COL_TRI(241, 1051, 242),\n    COL_TRI(248, 247, 1032),\n    COL_TRI(242, 1052, 244),\n    COL_TRI(243, 1052, 1053),\n    COL_TRI(244, 1052, 243),\n    COL_TRI(245, 243, 1053),\n    COL_TRI(245, 271, 243),\n    COL_TRI(246, 247, 214),\n    COL_TRI(246, 1054, 247),\n    COL_TRI(247, 249, 1032),\n    COL_TRI(247, 1054, 249),\n    COL_TRI(214, 247, 248),\n    COL_TRI(249, 1054, 1055),\n    COL_TRI(249, 1055, 252),\n    COL_TRI(248, 1032, 273),\n    COL_TRI(250, 1055, 253),\n    COL_TRI(250, 252, 1055),\n    COL_TRI(251, 250, 253),\n    COL_TRI(252, 258, 259),\n    COL_TRI(252, 274, 258),\n    COL_TRI(257, 1058, 258),\n    COL_TRI(253, 1055, 1056),\n    COL_TRI(253, 1056, 1057),\n    COL_TRI(251, 253, 254),\n    COL_TRI(254, 253, 1057),\n    COL_TRI(255, 271, 246),\n    COL_TRI(255, 246, 214),\n    COL_TRI(254, 1057, 1033),\n    COL_TRI(256, 1058, 257),\n    COL_TRI(262, 264, 265),\n    COL_TRI(258, 1058, 1059),\n    COL_TRI(256, 1059, 1058),\n    COL_TRI(258, 1059, 261),\n    COL_TRI(258, 266, 1060),\n    COL_TRI(258, 261, 266),\n    COL_TRI(259, 258, 1060),\n    COL_TRI(257, 258, 274),\n    COL_TRI(260, 1059, 256),\n    COL_TRI(260, 261, 1059),\n    COL_TRI(261, 270, 266),\n    COL_TRI(267, 1061, 1063),\n    COL_TRI(263, 1061, 264),\n    COL_TRI(264, 1061, 1062),\n    COL_TRI(264, 1062, 269),\n    COL_TRI(263, 1063, 1061),\n    COL_TRI(265, 269, 1060),\n    COL_TRI(265, 264, 269),\n    COL_TRI(266, 1061, 267),\n    COL_TRI(266, 1062, 1061),\n    COL_TRI(270, 1062, 266),\n    COL_TRI(267, 1063, 268),\n    COL_TRI(268, 265, 267),\n    COL_TRI(267, 1060, 266),\n    COL_TRI(267, 265, 1060),\n    COL_TRI(268, 262, 265),\n    COL_TRI(269, 259, 1060),\n    COL_TRI(271, 245, 1056),\n    COL_TRI(260, 256, 288),\n    COL_TRI(257, 274, 200),\n    COL_TRI(245, 1033, 1057),\n    COL_TRI(271, 1056, 246),\n    COL_TRI(200, 251, 1064),\n    COL_TRI(245, 1057, 1056),\n    COL_TRI(272, 276, 273),\n    COL_TRI(272, 273, 288),\n    COL_TRI(273, 1032, 260),\n    COL_TRI(273, 260, 288),\n    COL_TRI(200, 274, 251),\n    COL_TRI(274, 250, 251),\n    COL_TRI(251, 275, 1064),\n    COL_TRI(273, 209, 248),\n    COL_TRI(273, 276, 209),\n    COL_TRI(254, 275, 251),\n    COL_TRI(254, 219, 275),\n    COL_TRI(279, 277, 286),\n    COL_TRI(275, 281, 1064),\n    COL_TRI(276, 272, 277),\n    COL_TRI(209, 277, 1036),\n    COL_TRI(277, 209, 276),\n    COL_TRI(278, 1036, 277),\n    COL_TRI(279, 278, 277),\n    COL_TRI(280, 281, 219),\n    COL_TRI(281, 275, 219),\n    COL_TRI(282, 201, 281),\n    COL_TRI(283, 282, 281),\n    COL_TRI(283, 281, 280),\n    COL_TRI(284, 1065, 279),\n    COL_TRI(285, 1065, 284),\n    COL_TRI(284, 279, 286),\n    COL_TRI(282, 285, 201),\n    COL_TRI(286, 102, 201),\n    COL_TRI(287, 279, 1065),\n    COL_TRI(285, 287, 1065),\n    COL_TRI(287, 278, 279),\n    COL_TRI(285, 1040, 287),\n    COL_TRI(282, 283, 1040),\n    COL_TRI(282, 1040, 1066),\n    COL_TRI(282, 1066, 285),\n    COL_TRI(285, 1066, 1040),\n    COL_TRI(260, 249, 270),\n    COL_TRI(221, 287, 1040),\n    COL_TRI(288, 289, 207),\n    COL_TRI(288, 200, 289),\n    COL_TRI(289, 202, 207),\n    COL_TRI(289, 1025, 202),\n    COL_TRI(260, 270, 261),\n    COL_TRI(205, 113, 114),\n    COL_TRI(290, 1067, 1068),\n    COL_TRI(290, 1069, 1067),\n    COL_TRI(249, 1069, 290),\n    COL_TRI(290, 270, 249),\n    COL_TRI(290, 1068, 270),\n    COL_TRI(249, 259, 1069),\n    COL_TRI(259, 1067, 1069),\n    COL_TRI(249, 252, 259),\n    COL_TRI(286, 114, 102),\n    COL_TRI(286, 205, 114),\n    COL_TRI(293, 374, 375),\n    COL_TRI(291, 168, 165),\n    COL_TRI(168, 174, 180),\n    COL_TRI(168, 180, 171),\n    COL_TRI(171, 304, 172),\n    COL_TRI(292, 374, 1070),\n    COL_TRI(292, 375, 374),\n    COL_TRI(376, 1074, 1073),\n    COL_TRI(293, 371, 374),\n    COL_TRI(294, 295, 1072),\n    COL_TRI(294, 1073, 295),\n    COL_TRI(295, 1074, 296),\n    COL_TRI(295, 1073, 1074),\n    COL_TRI(295, 297, 1072),\n    COL_TRI(295, 296, 297),\n    COL_TRI(296, 1074, 1075),\n    COL_TRI(296, 1075, 1076),\n    COL_TRI(297, 296, 1076),\n    COL_TRI(297, 294, 1072),\n    COL_TRI(297, 376, 294),\n    COL_TRI(298, 376, 297),\n    COL_TRI(297, 1076, 298),\n    COL_TRI(298, 1076, 1075),\n    COL_TRI(376, 1073, 294),\n    COL_TRI(302, 1082, 1083),\n    COL_TRI(298, 377, 376),\n    COL_TRI(298, 1075, 377),\n    COL_TRI(299, 300, 1077),\n    COL_TRI(300, 1078, 1077),\n    COL_TRI(301, 1079, 1080),\n    COL_TRI(301, 1081, 1079),\n    COL_TRI(302, 1084, 1082),\n    COL_TRI(303, 1085, 1086),\n    COL_TRI(303, 1087, 1085),\n    COL_TRI(304, 329, 1088),\n    COL_TRI(304, 1071, 329),\n    COL_TRI(304, 305, 172),\n    COL_TRI(309, 306, 388),\n    COL_TRI(305, 310, 388),\n    COL_TRI(305, 380, 310),\n    COL_TRI(306, 305, 388),\n    COL_TRI(307, 291, 1089),\n    COL_TRI(307, 1090, 291),\n    COL_TRI(306, 291, 165),\n    COL_TRI(308, 306, 309),\n    COL_TRI(308, 1091, 306),\n    COL_TRI(315, 1093, 1092),\n    COL_TRI(310, 311, 388),\n    COL_TRI(311, 330, 388),\n    COL_TRI(312, 308, 309),\n    COL_TRI(313, 312, 309),\n    COL_TRI(314, 315, 316),\n    COL_TRI(315, 1092, 316),\n    COL_TRI(316, 1092, 339),\n    COL_TRI(316, 339, 1094),\n    COL_TRI(314, 316, 1094),\n    COL_TRI(314, 339, 1095),\n    COL_TRI(314, 1094, 339),\n    COL_TRI(317, 1096, 1097),\n    COL_TRI(317, 1098, 1096),\n    COL_TRI(318, 385, 325),\n    COL_TRI(318, 1099, 385),\n    COL_TRI(318, 325, 1089),\n    COL_TRI(319, 1100, 1088),\n    COL_TRI(319, 1101, 1100),\n    COL_TRI(319, 381, 1101),\n    COL_TRI(320, 326, 1102),\n    COL_TRI(321, 1103, 320),\n    COL_TRI(322, 320, 1102),\n    COL_TRI(321, 320, 322),\n    COL_TRI(320, 1104, 326),\n    COL_TRI(320, 1105, 1104),\n    COL_TRI(320, 1106, 1105),\n    COL_TRI(320, 1107, 1106),\n    COL_TRI(320, 1103, 1107),\n    COL_TRI(323, 1103, 321),\n    COL_TRI(323, 1107, 1103),\n    COL_TRI(324, 1107, 323),\n    COL_TRI(324, 1106, 1107),\n    COL_TRI(319, 1106, 324),\n    COL_TRI(319, 1105, 1106),\n    COL_TRI(325, 1104, 1105),\n    COL_TRI(325, 1105, 319),\n    COL_TRI(326, 1104, 325),\n    COL_TRI(327, 326, 325),\n    COL_TRI(328, 326, 327),\n    COL_TRI(328, 1102, 326),\n    COL_TRI(330, 335, 1093),\n    COL_TRI(322, 1102, 328),\n    COL_TRI(329, 307, 1089),\n    COL_TRI(291, 1090, 1071),\n    COL_TRI(329, 1089, 1088),\n    COL_TRI(291, 1071, 304),\n    COL_TRI(330, 334, 335),\n    COL_TRI(333, 1095, 313),\n    COL_TRI(311, 1098, 334),\n    COL_TRI(331, 313, 1095),\n    COL_TRI(331, 332, 313),\n    COL_TRI(332, 322, 312),\n    COL_TRI(332, 1096, 322),\n    COL_TRI(333, 313, 309),\n    COL_TRI(338, 1111, 1110),\n    COL_TRI(311, 321, 1098),\n    COL_TRI(334, 1098, 1108),\n    COL_TRI(335, 334, 336),\n    COL_TRI(334, 1108, 336),\n    COL_TRI(336, 1108, 391),\n    COL_TRI(337, 336, 1109),\n    COL_TRI(336, 391, 1109),\n    COL_TRI(335, 336, 337),\n    COL_TRI(337, 1109, 1092),\n    COL_TRI(338, 1110, 340),\n    COL_TRI(328, 348, 322),\n    COL_TRI(340, 1110, 1096),\n    COL_TRI(339, 338, 340),\n    COL_TRI(341, 340, 332),\n    COL_TRI(340, 1096, 332),\n    COL_TRI(339, 340, 341),\n    COL_TRI(341, 332, 331),\n    COL_TRI(342, 322, 348),\n    COL_TRI(342, 312, 322),\n    COL_TRI(348, 1112, 342),\n    COL_TRI(343, 321, 311),\n    COL_TRI(321, 343, 323),\n    COL_TRI(344, 1114, 343),\n    COL_TRI(343, 311, 344),\n    COL_TRI(343, 345, 323),\n    COL_TRI(343, 1115, 345),\n    COL_TRI(343, 1114, 1115),\n    COL_TRI(345, 346, 323),\n    COL_TRI(346, 310, 323),\n    COL_TRI(345, 1116, 346),\n    COL_TRI(345, 1115, 1116),\n    COL_TRI(346, 344, 310),\n    COL_TRI(346, 347, 344),\n    COL_TRI(346, 1116, 347),\n    COL_TRI(344, 311, 310),\n    COL_TRI(344, 347, 1114),\n    COL_TRI(347, 1116, 1115),\n    COL_TRI(347, 1115, 1114),\n    COL_TRI(308, 352, 367),\n    COL_TRI(348, 350, 1112),\n    COL_TRI(349, 350, 348),\n    COL_TRI(349, 1117, 350),\n    COL_TRI(350, 1113, 1112),\n    COL_TRI(350, 1117, 1113),\n    COL_TRI(342, 1112, 1113),\n    COL_TRI(342, 1113, 351),\n    COL_TRI(308, 342, 351),\n    COL_TRI(308, 312, 342),\n    COL_TRI(351, 1113, 1117),\n    COL_TRI(351, 1117, 349),\n    COL_TRI(328, 308, 351),\n    COL_TRI(328, 351, 349),\n    COL_TRI(328, 349, 348),\n    COL_TRI(352, 308, 328),\n    COL_TRI(308, 367, 1091),\n    COL_TRI(353, 352, 328),\n    COL_TRI(353, 328, 327),\n    COL_TRI(327, 1118, 1091),\n    COL_TRI(327, 1119, 1118),\n    COL_TRI(327, 1091, 367),\n    COL_TRI(327, 367, 366),\n    COL_TRI(327, 366, 353),\n    COL_TRI(354, 355, 1119),\n    COL_TRI(355, 1118, 1119),\n    COL_TRI(354, 1119, 357),\n    COL_TRI(356, 1118, 1120),\n    COL_TRI(355, 1120, 1118),\n    COL_TRI(361, 379, 1123),\n    COL_TRI(356, 1120, 1121),\n    COL_TRI(357, 356, 1121),\n    COL_TRI(357, 1121, 354),\n    COL_TRI(358, 1122, 359),\n    COL_TRI(359, 382, 358),\n    COL_TRI(359, 360, 382),\n    COL_TRI(360, 379, 382),\n    COL_TRI(360, 1123, 379),\n    COL_TRI(358, 361, 1122),\n    COL_TRI(361, 1123, 1122),\n    COL_TRI(367, 1128, 366),\n    COL_TRI(362, 1124, 1125),\n    COL_TRI(362, 378, 1124),\n    COL_TRI(363, 378, 362),\n    COL_TRI(363, 365, 378),\n    COL_TRI(364, 1125, 1124),\n    COL_TRI(364, 1126, 1125),\n    COL_TRI(365, 363, 1126),\n    COL_TRI(365, 1126, 364),\n    COL_TRI(366, 1127, 353),\n    COL_TRI(366, 1128, 1127),\n    COL_TRI(371, 1129, 1130),\n    COL_TRI(367, 369, 1128),\n    COL_TRI(368, 353, 1127),\n    COL_TRI(368, 352, 353),\n    COL_TRI(369, 352, 368),\n    COL_TRI(369, 367, 352),\n    COL_TRI(370, 371, 293),\n    COL_TRI(370, 1129, 371),\n    COL_TRI(371, 1130, 374),\n    COL_TRI(377, 1074, 376),\n    COL_TRI(372, 1129, 370),\n    COL_TRI(372, 1130, 1129),\n    COL_TRI(373, 1130, 372),\n    COL_TRI(373, 1131, 1130),\n    COL_TRI(374, 1131, 1070),\n    COL_TRI(374, 1130, 1131),\n    COL_TRI(292, 1131, 373),\n    COL_TRI(292, 1070, 1131),\n    COL_TRI(292, 373, 372),\n    COL_TRI(292, 372, 375),\n    COL_TRI(375, 372, 370),\n    COL_TRI(375, 370, 293),\n    COL_TRI(377, 1075, 1074),\n    COL_TRI(378, 380, 324),\n    COL_TRI(378, 365, 380),\n    COL_TRI(379, 380, 305),\n    COL_TRI(380, 361, 324),\n    COL_TRI(380, 379, 361),\n    COL_TRI(380, 364, 310),\n    COL_TRI(380, 365, 364),\n    COL_TRI(323, 364, 1124),\n    COL_TRI(323, 310, 364),\n    COL_TRI(378, 324, 323),\n    COL_TRI(323, 1124, 378),\n    COL_TRI(382, 305, 381),\n    COL_TRI(381, 324, 361),\n    COL_TRI(306, 356, 357),\n    COL_TRI(306, 1118, 356),\n    COL_TRI(306, 1091, 1118),\n    COL_TRI(357, 385, 306),\n    COL_TRI(357, 1119, 327),\n    COL_TRI(357, 327, 385),\n    COL_TRI(382, 379, 305),\n    COL_TRI(381, 361, 358),\n    COL_TRI(383, 381, 305),\n    COL_TRI(383, 1101, 381),\n    COL_TRI(381, 358, 382),\n    COL_TRI(384, 1101, 383),\n    COL_TRI(384, 1100, 1101),\n    COL_TRI(385, 386, 306),\n    COL_TRI(385, 1099, 386),\n    COL_TRI(386, 1099, 318),\n    COL_TRI(386, 318, 387),\n    COL_TRI(387, 318, 1089),\n    COL_TRI(387, 1089, 291),\n    COL_TRI(304, 1100, 384),\n    COL_TRI(304, 1088, 1100),\n    COL_TRI(388, 1093, 1132),\n    COL_TRI(388, 330, 1093),\n    COL_TRI(393, 1134, 315),\n    COL_TRI(389, 1092, 391),\n    COL_TRI(390, 389, 391),\n    COL_TRI(391, 1111, 339),\n    COL_TRI(391, 398, 390),\n    COL_TRI(391, 339, 398),\n    COL_TRI(339, 402, 398),\n    COL_TRI(392, 1134, 393),\n    COL_TRI(393, 315, 314),\n    COL_TRI(309, 388, 1133),\n    COL_TRI(392, 1135, 1134),\n    COL_TRI(394, 1135, 392),\n    COL_TRI(394, 1136, 1135),\n    COL_TRI(395, 1137, 394),\n    COL_TRI(394, 1137, 1136),\n    COL_TRI(396, 1137, 395),\n    COL_TRI(396, 1138, 1137),\n    COL_TRI(397, 1138, 396),\n    COL_TRI(397, 1133, 1138),\n    COL_TRI(309, 1133, 397),\n    COL_TRI(389, 401, 403),\n    COL_TRI(398, 400, 390),\n    COL_TRI(398, 399, 400),\n    COL_TRI(399, 963, 400),\n    COL_TRI(399, 964, 963),\n    COL_TRI(390, 401, 389),\n    COL_TRI(390, 400, 401),\n    COL_TRI(400, 1139, 401),\n    COL_TRI(400, 963, 1139),\n    COL_TRI(401, 1140, 403),\n    COL_TRI(401, 1139, 1140),\n    COL_TRI(389, 403, 402),\n    COL_TRI(402, 399, 398),\n    COL_TRI(402, 403, 399),\n    COL_TRI(403, 1140, 964),\n    COL_TRI(403, 964, 399),\n    COL_TRI(150, 152, 1141),\n    COL_TRI(152, 161, 164),\n    COL_TRI(152, 164, 155),\n    COL_TRI(406, 1146, 408),\n    COL_TRI(404, 405, 162),\n    COL_TRI(405, 161, 162),\n    COL_TRI(404, 162, 150),\n    COL_TRI(404, 150, 1142),\n    COL_TRI(150, 1141, 1142),\n    COL_TRI(406, 408, 1143),\n    COL_TRI(407, 1143, 408),\n    COL_TRI(407, 408, 1144),\n    COL_TRI(408, 1145, 1144),\n    COL_TRI(408, 1146, 1145),\n    COL_TRI(412, 416, 442),\n    COL_TRI(407, 409, 1143),\n    COL_TRI(409, 406, 1143),\n    COL_TRI(410, 1147, 1148),\n    COL_TRI(410, 1148, 1149),\n    COL_TRI(411, 412, 442),\n    COL_TRI(411, 415, 412),\n    COL_TRI(411, 442, 1150),\n    COL_TRI(413, 414, 1151),\n    COL_TRI(413, 1152, 414),\n    COL_TRI(414, 420, 1151),\n    COL_TRI(415, 1153, 1154),\n    COL_TRI(415, 1154, 1155),\n    COL_TRI(415, 1155, 1156),\n    COL_TRI(415, 1156, 412),\n    COL_TRI(420, 423, 421),\n    COL_TRI(416, 412, 1156),\n    COL_TRI(416, 1156, 417),\n    COL_TRI(417, 1156, 1155),\n    COL_TRI(417, 1155, 418),\n    COL_TRI(418, 1155, 1154),\n    COL_TRI(418, 1154, 419),\n    COL_TRI(419, 1154, 1153),\n    COL_TRI(419, 1153, 1157),\n    COL_TRI(420, 414, 422),\n    COL_TRI(420, 422, 423),\n    COL_TRI(422, 1159, 423),\n    COL_TRI(423, 1159, 1160),\n    COL_TRI(423, 1160, 421),\n    COL_TRI(421, 1158, 420),\n    COL_TRI(421, 1160, 1161),\n    COL_TRI(421, 1161, 1158),\n    COL_TRI(422, 1162, 1159),\n    COL_TRI(414, 1162, 422),\n    COL_TRI(414, 1152, 1162),\n    COL_TRI(424, 1161, 1160),\n    COL_TRI(424, 1160, 1159),\n    COL_TRI(424, 1159, 1162),\n    COL_TRI(424, 1162, 1152),\n    COL_TRI(425, 416, 417),\n    COL_TRI(426, 1165, 1166),\n    COL_TRI(425, 417, 418),\n    COL_TRI(425, 418, 419),\n    COL_TRI(419, 1157, 425),\n    COL_TRI(117, 1163, 448),\n    COL_TRI(117, 448, 121),\n    COL_TRI(426, 1164, 1165),\n    COL_TRI(427, 1167, 429),\n    COL_TRI(427, 429, 1168),\n    COL_TRI(428, 427, 1168),\n    COL_TRI(429, 430, 1169),\n    COL_TRI(429, 1167, 430),\n    COL_TRI(428, 1168, 465),\n    COL_TRI(430, 428, 465),\n    COL_TRI(430, 465, 1169),\n    COL_TRI(431, 433, 434),\n    COL_TRI(432, 433, 431),\n    COL_TRI(433, 432, 1170),\n    COL_TRI(433, 1170, 434),\n    COL_TRI(434, 1170, 435),\n    COL_TRI(435, 1170, 432),\n    COL_TRI(431, 434, 436),\n    COL_TRI(434, 435, 436),\n    COL_TRI(435, 432, 1171),\n    COL_TRI(432, 431, 1171),\n    COL_TRI(436, 435, 1172),\n    COL_TRI(436, 1172, 437),\n    COL_TRI(437, 431, 436),\n    COL_TRI(438, 1172, 435),\n    COL_TRI(442, 441, 1150),\n    COL_TRI(437, 439, 431),\n    COL_TRI(438, 435, 1171),\n    COL_TRI(439, 438, 1171),\n    COL_TRI(439, 1171, 431),\n    COL_TRI(440, 413, 471),\n    COL_TRI(413, 1151, 471),\n    COL_TRI(441, 440, 471),\n    COL_TRI(441, 471, 1150),\n    COL_TRI(447, 121, 1176),\n    COL_TRI(443, 1173, 444),\n    COL_TRI(444, 1173, 429),\n    COL_TRI(444, 429, 1169),\n    COL_TRI(443, 1174, 1173),\n    COL_TRI(445, 1174, 443),\n    COL_TRI(445, 1175, 1174),\n    COL_TRI(446, 447, 1176),\n    COL_TRI(446, 1176, 451),\n    COL_TRI(447, 404, 121),\n    COL_TRI(448, 14, 121),\n    COL_TRI(449, 450, 1177),\n    COL_TRI(450, 117, 1142),\n    COL_TRI(450, 1142, 1177),\n    COL_TRI(449, 1177, 1178),\n    COL_TRI(451, 449, 1178),\n    COL_TRI(451, 1178, 446),\n    COL_TRI(442, 455, 1179),\n    COL_TRI(442, 1179, 441),\n    COL_TRI(452, 455, 442),\n    COL_TRI(441, 1179, 1180),\n    COL_TRI(453, 1180, 1179),\n    COL_TRI(453, 1179, 455),\n    COL_TRI(441, 1180, 440),\n    COL_TRI(452, 1145, 455),\n    COL_TRI(454, 453, 455),\n    COL_TRI(455, 458, 454),\n    COL_TRI(455, 1145, 457),\n    COL_TRI(455, 457, 458),\n    COL_TRI(440, 1180, 453),\n    COL_TRI(440, 453, 413),\n    COL_TRI(458, 459, 460),\n    COL_TRI(413, 453, 409),\n    COL_TRI(454, 456, 453),\n    COL_TRI(456, 409, 453),\n    COL_TRI(413, 409, 1181),\n    COL_TRI(457, 456, 1182),\n    COL_TRI(457, 1182, 459),\n    COL_TRI(458, 457, 459),\n    COL_TRI(459, 1182, 1183),\n    COL_TRI(459, 1183, 1184),\n    COL_TRI(460, 459, 1184),\n    COL_TRI(454, 460, 462),\n    COL_TRI(461, 1182, 462),\n    COL_TRI(462, 456, 454),\n    COL_TRI(462, 1182, 456),\n    COL_TRI(461, 1183, 1182),\n    COL_TRI(460, 1184, 927),\n    COL_TRI(454, 458, 460),\n    COL_TRI(463, 1189, 464),\n    COL_TRI(462, 460, 927),\n    COL_TRI(462, 927, 461),\n    COL_TRI(17, 1186, 19),\n    COL_TRI(19, 1186, 466),\n    COL_TRI(19, 466, 21),\n    COL_TRI(17, 1187, 1186),\n    COL_TRI(15, 1187, 17),\n    COL_TRI(15, 1188, 1187),\n    COL_TRI(448, 10, 9),\n    COL_TRI(464, 1189, 1148),\n    COL_TRI(464, 1148, 1147),\n    COL_TRI(463, 1190, 1189),\n    COL_TRI(465, 1190, 463),\n    COL_TRI(465, 1168, 1190),\n    COL_TRI(10, 448, 1188),\n    COL_TRI(10, 1188, 15),\n    COL_TRI(448, 9, 14),\n    COL_TRI(469, 1194, 470),\n    COL_TRI(466, 1163, 43),\n    COL_TRI(466, 43, 21),\n    COL_TRI(410, 1191, 1192),\n    COL_TRI(410, 1192, 467),\n    COL_TRI(467, 1192, 1193),\n    COL_TRI(467, 1193, 468),\n    COL_TRI(468, 1193, 411),\n    COL_TRI(468, 411, 1150),\n    COL_TRI(470, 1194, 1195),\n    COL_TRI(470, 1195, 478),\n    COL_TRI(469, 1196, 1194),\n    COL_TRI(471, 1196, 469),\n    COL_TRI(471, 1151, 1196),\n    COL_TRI(472, 1197, 473),\n    COL_TRI(473, 1197, 1198),\n    COL_TRI(473, 1198, 1199),\n    COL_TRI(407, 1144, 1204),\n    COL_TRI(472, 1200, 1197),\n    COL_TRI(474, 1200, 472),\n    COL_TRI(474, 1201, 1200),\n    COL_TRI(474, 1202, 1201),\n    COL_TRI(475, 1202, 474),\n    COL_TRI(476, 1203, 1202),\n    COL_TRI(476, 1202, 475),\n    COL_TRI(477, 1203, 476),\n    COL_TRI(477, 1204, 1203),\n    COL_TRI(407, 1204, 477),\n    COL_TRI(478, 1175, 445),\n    COL_TRI(478, 1205, 1175),\n    COL_TRI(23, 44, 1163),\n    COL_TRI(44, 43, 1163),\n    COL_TRI(117, 23, 1163),\n    COL_TRI(479, 100, 99),\n    COL_TRI(100, 91, 88),\n    COL_TRI(100, 88, 95),\n    COL_TRI(96, 95, 481),\n    COL_TRI(480, 96, 481),\n    COL_TRI(481, 1206, 480),\n    COL_TRI(481, 538, 1206),\n    COL_TRI(480, 1206, 543),\n    COL_TRI(480, 99, 96),\n    COL_TRI(480, 483, 99),\n    COL_TRI(480, 482, 483),\n    COL_TRI(480, 492, 482),\n    COL_TRI(480, 543, 492),\n    COL_TRI(482, 1207, 483),\n    COL_TRI(482, 544, 1207),\n    COL_TRI(486, 1212, 487),\n    COL_TRI(483, 1207, 1208),\n    COL_TRI(483, 479, 99),\n    COL_TRI(483, 1208, 479),\n    COL_TRI(484, 1209, 485),\n    COL_TRI(484, 1210, 1209),\n    COL_TRI(485, 1209, 1211),\n    COL_TRI(485, 1211, 486),\n    COL_TRI(486, 1211, 1212),\n    COL_TRI(492, 494, 491),\n    COL_TRI(487, 1212, 1213),\n    COL_TRI(487, 1213, 488),\n    COL_TRI(488, 1213, 1214),\n    COL_TRI(488, 1214, 489),\n    COL_TRI(489, 1214, 1215),\n    COL_TRI(489, 1215, 1216),\n    COL_TRI(490, 491, 495),\n    COL_TRI(490, 1217, 491),\n    COL_TRI(491, 1218, 495),\n    COL_TRI(491, 494, 1218),\n    COL_TRI(492, 491, 498),\n    COL_TRI(493, 1218, 494),\n    COL_TRI(494, 543, 493),\n    COL_TRI(493, 1219, 1218),\n    COL_TRI(495, 1218, 1219),\n    COL_TRI(490, 495, 497),\n    COL_TRI(495, 1219, 497),\n    COL_TRI(493, 1220, 1219),\n    COL_TRI(496, 1219, 1220),\n    COL_TRI(497, 1219, 496),\n    COL_TRI(490, 497, 496),\n    COL_TRI(496, 493, 490),\n    COL_TRI(496, 1220, 493),\n    COL_TRI(498, 1221, 501),\n    COL_TRI(498, 1222, 1221),\n    COL_TRI(499, 500, 504),\n    COL_TRI(499, 544, 500),\n    COL_TRI(500, 1223, 504),\n    COL_TRI(500, 503, 1223),\n    COL_TRI(501, 500, 482),\n    COL_TRI(501, 503, 500),\n    COL_TRI(502, 1223, 503),\n    COL_TRI(503, 1224, 502),\n    COL_TRI(502, 1225, 1223),\n    COL_TRI(504, 1223, 1225),\n    COL_TRI(499, 504, 506),\n    COL_TRI(504, 1225, 506),\n    COL_TRI(502, 1226, 1225),\n    COL_TRI(505, 1225, 1226),\n    COL_TRI(506, 1225, 505),\n    COL_TRI(499, 506, 505),\n    COL_TRI(505, 1226, 502),\n    COL_TRI(505, 502, 499),\n    COL_TRI(507, 1227, 536),\n    COL_TRI(507, 1228, 1227),\n    COL_TRI(508, 1228, 507),\n    COL_TRI(508, 1229, 1228),\n    COL_TRI(509, 1230, 1229),\n    COL_TRI(509, 1229, 508),\n    COL_TRI(510, 527, 530),\n    COL_TRI(510, 1231, 527),\n    COL_TRI(511, 1231, 510),\n    COL_TRI(511, 1232, 1231),\n    COL_TRI(512, 1232, 511),\n    COL_TRI(512, 1233, 1232),\n    COL_TRI(513, 1234, 1235),\n    COL_TRI(513, 1235, 514),\n    COL_TRI(514, 1235, 1236),\n    COL_TRI(514, 1236, 515),\n    COL_TRI(515, 1236, 517),\n    COL_TRI(515, 517, 535),\n    COL_TRI(516, 517, 1230),\n    COL_TRI(516, 1237, 517),\n    COL_TRI(517, 521, 535),\n    COL_TRI(517, 1237, 521),\n    COL_TRI(518, 1238, 534),\n    COL_TRI(518, 1239, 1238),\n    COL_TRI(519, 1239, 518),\n    COL_TRI(519, 1240, 1239),\n    COL_TRI(520, 1240, 519),\n    COL_TRI(520, 1241, 1240),\n    COL_TRI(521, 509, 535),\n    COL_TRI(521, 522, 509),\n    COL_TRI(526, 532, 531),\n    COL_TRI(522, 516, 1230),\n    COL_TRI(522, 1230, 509),\n    COL_TRI(523, 525, 526),\n    COL_TRI(523, 524, 525),\n    COL_TRI(524, 1242, 525),\n    COL_TRI(524, 1243, 1242),\n    COL_TRI(525, 957, 532),\n    COL_TRI(525, 1242, 957),\n    COL_TRI(526, 525, 532),\n    COL_TRI(527, 526, 531),\n    COL_TRI(531, 532, 529),\n    COL_TRI(528, 524, 523),\n    COL_TRI(528, 529, 524),\n    COL_TRI(529, 1243, 524),\n    COL_TRI(529, 956, 1243),\n    COL_TRI(528, 523, 1241),\n    COL_TRI(530, 527, 531),\n    COL_TRI(530, 531, 528),\n    COL_TRI(531, 529, 528),\n    COL_TRI(532, 956, 529),\n    COL_TRI(532, 957, 956),\n    COL_TRI(520, 528, 1241),\n    COL_TRI(530, 528, 520),\n    COL_TRI(520, 1245, 530),\n    COL_TRI(530, 1244, 512),\n    COL_TRI(530, 1245, 1244),\n    COL_TRI(520, 1246, 1245),\n    COL_TRI(509, 1249, 535),\n    COL_TRI(512, 1244, 1247),\n    COL_TRI(512, 1247, 536),\n    COL_TRI(533, 1246, 520),\n    COL_TRI(534, 533, 520),\n    COL_TRI(513, 533, 534),\n    COL_TRI(513, 1248, 533),\n    COL_TRI(535, 1248, 513),\n    COL_TRI(535, 1249, 1248),\n    COL_TRI(513, 534, 1238),\n    COL_TRI(509, 1250, 1249),\n    COL_TRI(536, 1250, 509),\n    COL_TRI(536, 1247, 1250),\n    COL_TRI(512, 1227, 1233),\n    COL_TRI(512, 536, 1227),\n    COL_TRI(513, 1238, 1234),\n    COL_TRI(540, 543, 1206),\n    COL_TRI(484, 1221, 1222),\n    COL_TRI(484, 1222, 1210),\n    COL_TRI(537, 1251, 1252),\n    COL_TRI(537, 1253, 1251),\n    COL_TRI(538, 539, 1206),\n    COL_TRI(539, 540, 1206),\n    COL_TRI(544, 546, 541),\n    COL_TRI(541, 542, 1207),\n    COL_TRI(541, 1207, 544),\n    COL_TRI(542, 1208, 1207),\n    COL_TRI(540, 1254, 545),\n    COL_TRI(543, 540, 545),\n    COL_TRI(544, 543, 545),\n    COL_TRI(544, 545, 546),\n    COL_TRI(545, 1255, 546),\n    COL_TRI(545, 1254, 1255),\n    COL_TRI(546, 1255, 541),\n    COL_TRI(548, 551, 550),\n    COL_TRI(547, 1256, 1257),\n    COL_TRI(547, 1257, 1258),\n    COL_TRI(548, 550, 549),\n    COL_TRI(549, 550, 1259),\n    COL_TRI(549, 1259, 1260),\n    COL_TRI(548, 549, 1261),\n    COL_TRI(550, 551, 1259),\n    COL_TRI(551, 552, 1259),\n    COL_TRI(552, 553, 1259),\n    COL_TRI(553, 1260, 1259),\n    COL_TRI(553, 1262, 1260),\n    COL_TRI(553, 554, 555),\n    COL_TRI(554, 1264, 555),\n    COL_TRI(555, 1265, 557),\n    COL_TRI(555, 1264, 1265),\n    COL_TRI(556, 555, 557),\n    COL_TRI(556, 579, 555),\n    COL_TRI(555, 579, 553),\n    COL_TRI(552, 554, 553),\n    COL_TRI(553, 579, 1262),\n    COL_TRI(548, 1263, 551),\n    COL_TRI(551, 554, 552),\n    COL_TRI(551, 1264, 554),\n    COL_TRI(551, 1265, 1264),\n    COL_TRI(551, 1263, 1265),\n    COL_TRI(557, 1263, 548),\n    COL_TRI(557, 1265, 1263),\n    COL_TRI(556, 557, 548),\n    COL_TRI(561, 1261, 549),\n    COL_TRI(548, 1261, 556),\n    COL_TRI(558, 574, 1266),\n    COL_TRI(558, 573, 574),\n    COL_TRI(558, 560, 573),\n    COL_TRI(558, 972, 560),\n    COL_TRI(559, 574, 1267),\n    COL_TRI(559, 1266, 574),\n    COL_TRI(560, 972, 559),\n    COL_TRI(560, 559, 1267),\n    COL_TRI(549, 582, 561),\n    COL_TRI(561, 562, 1261),\n    COL_TRI(562, 556, 1261),\n    COL_TRI(549, 1260, 582),\n    COL_TRI(562, 1268, 556),\n    COL_TRI(562, 590, 1268),\n    COL_TRI(562, 578, 590),\n    COL_TRI(562, 1269, 578),\n    COL_TRI(562, 1270, 1269),\n    COL_TRI(569, 1273, 571),\n    COL_TRI(563, 564, 575),\n    COL_TRI(564, 1271, 575),\n    COL_TRI(565, 1271, 1272),\n    COL_TRI(565, 575, 1271),\n    COL_TRI(566, 1272, 1273),\n    COL_TRI(566, 1273, 580),\n    COL_TRI(566, 567, 1272),\n    COL_TRI(567, 565, 1272),\n    COL_TRI(568, 580, 1273),\n    COL_TRI(569, 568, 1273),\n    COL_TRI(574, 573, 576),\n    COL_TRI(568, 589, 580),\n    COL_TRI(570, 571, 579),\n    COL_TRI(571, 1262, 579),\n    COL_TRI(570, 569, 571),\n    COL_TRI(572, 570, 1268),\n    COL_TRI(572, 591, 570),\n    COL_TRI(570, 591, 569),\n    COL_TRI(573, 594, 576),\n    COL_TRI(575, 594, 1269),\n    COL_TRI(575, 576, 594),\n    COL_TRI(576, 1275, 577),\n    COL_TRI(576, 1274, 1275),\n    COL_TRI(565, 576, 575),\n    COL_TRI(565, 1274, 576),\n    COL_TRI(574, 576, 577),\n    COL_TRI(567, 1275, 1274),\n    COL_TRI(567, 1274, 565),\n    COL_TRI(566, 1275, 567),\n    COL_TRI(566, 577, 1275),\n    COL_TRI(577, 1281, 560),\n    COL_TRI(578, 577, 566),\n    COL_TRI(578, 1281, 577),\n    COL_TRI(577, 1267, 574),\n    COL_TRI(577, 560, 1267),\n    COL_TRI(581, 1270, 562),\n    COL_TRI(575, 1270, 563),\n    COL_TRI(575, 1269, 1270),\n    COL_TRI(579, 556, 1268),\n    COL_TRI(579, 1268, 570),\n    COL_TRI(580, 578, 566),\n    COL_TRI(580, 590, 578),\n    COL_TRI(562, 585, 581),\n    COL_TRI(562, 584, 585),\n    COL_TRI(562, 561, 584),\n    COL_TRI(582, 583, 561),\n    COL_TRI(583, 584, 561),\n    COL_TRI(584, 1283, 585),\n    COL_TRI(584, 1284, 1283),\n    COL_TRI(583, 1284, 584),\n    COL_TRI(585, 1283, 1282),\n    COL_TRI(585, 1282, 581),\n    COL_TRI(581, 587, 586),\n    COL_TRI(581, 1282, 587),\n    COL_TRI(581, 563, 1270),\n    COL_TRI(581, 586, 563),\n    COL_TRI(587, 1283, 1284),\n    COL_TRI(587, 1282, 1283),\n    COL_TRI(586, 1285, 588),\n    COL_TRI(586, 587, 1285),\n    COL_TRI(563, 586, 588),\n    COL_TRI(587, 1286, 1285),\n    COL_TRI(587, 1284, 1286),\n    COL_TRI(583, 1286, 1284),\n    COL_TRI(588, 1286, 583),\n    COL_TRI(588, 1285, 1286),\n    COL_TRI(582, 588, 583),\n    COL_TRI(582, 564, 588),\n    COL_TRI(564, 563, 588),\n    COL_TRI(568, 1276, 589),\n    COL_TRI(568, 1277, 1276),\n    COL_TRI(569, 1277, 568),\n    COL_TRI(589, 1279, 593),\n    COL_TRI(589, 1276, 1279),\n    COL_TRI(590, 589, 593),\n    COL_TRI(590, 580, 589),\n    COL_TRI(572, 1280, 591),\n    COL_TRI(591, 1278, 569),\n    COL_TRI(591, 1280, 1278),\n    COL_TRI(569, 1278, 1277),\n    COL_TRI(572, 592, 1280),\n    COL_TRI(592, 1278, 1280),\n    COL_TRI(592, 1277, 1278),\n    COL_TRI(592, 1276, 1277),\n    COL_TRI(592, 1279, 1276),\n    COL_TRI(593, 1279, 592),\n    COL_TRI(593, 592, 572),\n    COL_TRI(590, 593, 572),\n    COL_TRI(597, 895, 598),\n    COL_TRI(572, 1268, 590),\n    COL_TRI(594, 595, 1287),\n    COL_TRI(594, 1281, 595),\n    COL_TRI(595, 1269, 1287),\n    COL_TRI(595, 578, 1269),\n    COL_TRI(596, 597, 1288),\n    COL_TRI(597, 1289, 1288),\n    COL_TRI(597, 598, 1289),\n    COL_TRI(598, 896, 600),\n    COL_TRI(598, 895, 896),\n    COL_TRI(596, 1288, 1290),\n    COL_TRI(599, 600, 596),\n    COL_TRI(599, 596, 1290),\n    COL_TRI(600, 601, 596),\n    COL_TRI(600, 896, 601),\n    COL_TRI(597, 897, 895),\n    COL_TRI(601, 897, 597),\n    COL_TRI(601, 597, 596),\n    COL_TRI(602, 660, 656),\n    COL_TRI(602, 603, 660),\n    COL_TRI(78, 621, 603),\n    COL_TRI(78, 603, 79),\n    COL_TRI(603, 80, 79),\n    COL_TRI(603, 602, 80),\n    COL_TRI(80, 602, 604),\n    COL_TRI(80, 604, 77),\n    COL_TRI(604, 78, 77),\n    COL_TRI(604, 621, 78),\n    COL_TRI(605, 1291, 606),\n    COL_TRI(606, 1291, 1292),\n    COL_TRI(607, 1293, 1291),\n    COL_TRI(607, 1291, 605),\n    COL_TRI(608, 1294, 607),\n    COL_TRI(607, 1294, 1293),\n    COL_TRI(609, 1295, 1294),\n    COL_TRI(609, 1294, 608),\n    COL_TRI(615, 1300, 614),\n    COL_TRI(610, 1295, 609),\n    COL_TRI(610, 1296, 1295),\n    COL_TRI(611, 1296, 610),\n    COL_TRI(611, 1297, 1296),\n    COL_TRI(612, 1297, 611),\n    COL_TRI(612, 1298, 1297),\n    COL_TRI(612, 1299, 1298),\n    COL_TRI(613, 1299, 612),\n    COL_TRI(614, 1300, 1299),\n    COL_TRI(614, 1299, 613),\n    COL_TRI(620, 1306, 1305),\n    COL_TRI(615, 1301, 1300),\n    COL_TRI(616, 1302, 615),\n    COL_TRI(615, 1302, 1301),\n    COL_TRI(617, 1303, 1302),\n    COL_TRI(617, 1302, 616),\n    COL_TRI(617, 1304, 1303),\n    COL_TRI(618, 1304, 617),\n    COL_TRI(619, 1305, 1304),\n    COL_TRI(619, 1304, 618),\n    COL_TRI(620, 1305, 619),\n    COL_TRI(625, 628, 626),\n    COL_TRI(621, 1306, 620),\n    COL_TRI(621, 604, 1306),\n    COL_TRI(622, 1307, 1289),\n    COL_TRI(623, 622, 1289),\n    COL_TRI(599, 624, 1308),\n    COL_TRI(624, 625, 1308),\n    COL_TRI(628, 1312, 630),\n    COL_TRI(626, 628, 630),\n    COL_TRI(626, 630, 627),\n    COL_TRI(627, 630, 1309),\n    COL_TRI(627, 1309, 1310),\n    COL_TRI(625, 629, 628),\n    COL_TRI(628, 1311, 1312),\n    COL_TRI(632, 1312, 631),\n    COL_TRI(629, 1311, 628),\n    COL_TRI(629, 1313, 1311),\n    COL_TRI(630, 1314, 1309),\n    COL_TRI(630, 1312, 1314),\n    COL_TRI(631, 1312, 1311),\n    COL_TRI(631, 1311, 633),\n    COL_TRI(635, 640, 642),\n    COL_TRI(632, 1314, 1312),\n    COL_TRI(633, 1313, 622),\n    COL_TRI(633, 1311, 1313),\n    COL_TRI(634, 640, 635),\n    COL_TRI(634, 637, 640),\n    COL_TRI(635, 642, 641),\n    COL_TRI(639, 1317, 638),\n    COL_TRI(636, 1315, 654),\n    COL_TRI(636, 654, 1316),\n    COL_TRI(637, 654, 1315),\n    COL_TRI(637, 1315, 640),\n    COL_TRI(638, 1317, 1315),\n    COL_TRI(638, 1315, 636),\n    COL_TRI(639, 1318, 1317),\n    COL_TRI(640, 1317, 642),\n    COL_TRI(640, 1315, 1317),\n    COL_TRI(641, 642, 655),\n    COL_TRI(641, 655, 1319),\n    COL_TRI(642, 1317, 1318),\n    COL_TRI(642, 1318, 655),\n    COL_TRI(643, 646, 650),\n    COL_TRI(643, 650, 644),\n    COL_TRI(644, 653, 651),\n    COL_TRI(644, 650, 653),\n    COL_TRI(645, 1320, 647),\n    COL_TRI(645, 647, 1321),\n    COL_TRI(646, 647, 650),\n    COL_TRI(647, 1320, 650),\n    COL_TRI(651, 1322, 1323),\n    COL_TRI(648, 652, 1320),\n    COL_TRI(648, 1320, 645),\n    COL_TRI(649, 652, 648),\n    COL_TRI(650, 652, 653),\n    COL_TRI(650, 1320, 652),\n    COL_TRI(651, 653, 1322),\n    COL_TRI(654, 1288, 1307),\n    COL_TRI(652, 1324, 1322),\n    COL_TRI(653, 652, 1322),\n    COL_TRI(649, 1324, 652),\n    COL_TRI(624, 637, 634),\n    COL_TRI(624, 1290, 637),\n    COL_TRI(654, 1307, 1316),\n    COL_TRI(657, 658, 1318),\n    COL_TRI(655, 660, 1319),\n    COL_TRI(655, 658, 660),\n    COL_TRI(656, 657, 1318),\n    COL_TRI(656, 1318, 639),\n    COL_TRI(654, 1290, 1288),\n    COL_TRI(654, 637, 1290),\n    COL_TRI(661, 662, 663),\n    COL_TRI(658, 655, 1318),\n    COL_TRI(657, 656, 1325),\n    COL_TRI(657, 1325, 1326),\n    COL_TRI(657, 1326, 659),\n    COL_TRI(659, 658, 657),\n    COL_TRI(660, 1325, 656),\n    COL_TRI(660, 1327, 1325),\n    COL_TRI(659, 1327, 660),\n    COL_TRI(659, 660, 658),\n    COL_TRI(661, 663, 1289),\n    COL_TRI(665, 1330, 1331),\n    COL_TRI(662, 1328, 599),\n    COL_TRI(661, 1328, 662),\n    COL_TRI(663, 662, 606),\n    COL_TRI(662, 599, 606),\n    COL_TRI(663, 1292, 1289),\n    COL_TRI(663, 606, 1292),\n    COL_TRI(664, 602, 603),\n    COL_TRI(664, 1329, 602),\n    COL_TRI(665, 1332, 1330),\n    COL_TRI(666, 1333, 1334),\n    COL_TRI(666, 1334, 668),\n    COL_TRI(666, 667, 1333),\n    COL_TRI(667, 713, 1333),\n    COL_TRI(668, 1335, 671),\n    COL_TRI(668, 1334, 1335),\n    COL_TRI(669, 753, 1336),\n    COL_TRI(672, 815, 1340),\n    COL_TRI(670, 1336, 682),\n    COL_TRI(669, 1336, 670),\n    COL_TRI(670, 682, 1339),\n    COL_TRI(671, 1335, 715),\n    COL_TRI(671, 715, 722),\n    COL_TRI(672, 746, 815),\n    COL_TRI(673, 1341, 674),\n    COL_TRI(674, 672, 675),\n    COL_TRI(674, 1341, 672),\n    COL_TRI(675, 672, 1340),\n    COL_TRI(675, 1340, 678),\n    COL_TRI(673, 712, 1341),\n    COL_TRI(676, 712, 673),\n    COL_TRI(676, 1342, 712),\n    COL_TRI(677, 1342, 676),\n    COL_TRI(677, 711, 1342),\n    COL_TRI(678, 711, 677),\n    COL_TRI(678, 1340, 711),\n    COL_TRI(679, 683, 680),\n    COL_TRI(680, 683, 684),\n    COL_TRI(680, 684, 1343),\n    COL_TRI(679, 688, 683),\n    COL_TRI(681, 688, 679),\n    COL_TRI(681, 690, 688),\n    COL_TRI(682, 692, 690),\n    COL_TRI(682, 690, 1339),\n    COL_TRI(683, 1344, 684),\n    COL_TRI(684, 687, 685),\n    COL_TRI(684, 1344, 687),\n    COL_TRI(685, 687, 691),\n    COL_TRI(686, 687, 1345),\n    COL_TRI(687, 1344, 1345),\n    COL_TRI(686, 1346, 687),\n    COL_TRI(685, 691, 692),\n    COL_TRI(683, 1345, 1344),\n    COL_TRI(688, 1345, 683),\n    COL_TRI(688, 1347, 1345),\n    COL_TRI(689, 686, 1345),\n    COL_TRI(689, 1345, 1347),\n    COL_TRI(691, 689, 1347),\n    COL_TRI(690, 1347, 688),\n    COL_TRI(690, 1348, 1347),\n    COL_TRI(691, 1347, 1348),\n    COL_TRI(692, 691, 690),\n    COL_TRI(691, 1348, 690),\n    COL_TRI(691, 1349, 689),\n    COL_TRI(693, 1349, 1346),\n    COL_TRI(693, 1350, 1349),\n    COL_TRI(689, 1350, 1351),\n    COL_TRI(689, 1349, 1350),\n    COL_TRI(697, 695, 984),\n    COL_TRI(694, 693, 1346),\n    COL_TRI(694, 1346, 686),\n    COL_TRI(686, 689, 1351),\n    COL_TRI(686, 1351, 694),\n    COL_TRI(695, 696, 984),\n    COL_TRI(696, 985, 984),\n    COL_TRI(700, 699, 1352),\n    COL_TRI(698, 695, 725),\n    COL_TRI(698, 696, 695),\n    COL_TRI(695, 697, 667),\n    COL_TRI(695, 667, 725),\n    COL_TRI(697, 984, 700),\n    COL_TRI(699, 985, 696),\n    COL_TRI(699, 696, 1352),\n    COL_TRI(700, 1352, 697),\n    COL_TRI(704, 1354, 1353),\n    COL_TRI(697, 1352, 713),\n    COL_TRI(697, 713, 667),\n    COL_TRI(701, 704, 988),\n    COL_TRI(701, 988, 706),\n    COL_TRI(702, 701, 705),\n    COL_TRI(702, 703, 701),\n    COL_TRI(703, 704, 701),\n    COL_TRI(704, 1353, 988),\n    COL_TRI(705, 1354, 836),\n    COL_TRI(706, 705, 701),\n    COL_TRI(706, 708, 705),\n    COL_TRI(707, 705, 836),\n    COL_TRI(707, 702, 705),\n    COL_TRI(708, 1353, 1354),\n    COL_TRI(708, 1354, 705),\n    COL_TRI(709, 1355, 698),\n    COL_TRI(714, 713, 1356),\n    COL_TRI(711, 1338, 1342),\n    COL_TRI(712, 1337, 1341),\n    COL_TRI(667, 1337, 1338),\n    COL_TRI(667, 702, 1337),\n    COL_TRI(667, 1338, 725),\n    COL_TRI(713, 835, 1356),\n    COL_TRI(716, 684, 1357),\n    COL_TRI(684, 685, 1357),\n    COL_TRI(717, 718, 1358),\n    COL_TRI(717, 1359, 718),\n    COL_TRI(718, 702, 1358),\n    COL_TRI(718, 703, 702),\n    COL_TRI(702, 707, 1337),\n    COL_TRI(719, 703, 1360),\n    COL_TRI(720, 1359, 717),\n    COL_TRI(716, 1357, 1361),\n    COL_TRI(716, 1361, 721),\n    COL_TRI(721, 1361, 1362),\n    COL_TRI(721, 1362, 723),\n    COL_TRI(722, 679, 680),\n    COL_TRI(722, 680, 724),\n    COL_TRI(679, 722, 669),\n    COL_TRI(723, 724, 680),\n    COL_TRI(724, 1363, 720),\n    COL_TRI(720, 1363, 1359),\n    COL_TRI(715, 713, 714),\n    COL_TRI(725, 1338, 726),\n    COL_TRI(725, 726, 1364),\n    COL_TRI(726, 815, 1365),\n    COL_TRI(726, 1340, 815),\n    COL_TRI(726, 752, 1366),\n    COL_TRI(726, 1365, 752),\n    COL_TRI(727, 672, 729),\n    COL_TRI(728, 727, 729),\n    COL_TRI(729, 1337, 707),\n    COL_TRI(730, 729, 707),\n    COL_TRI(710, 709, 698),\n    COL_TRI(714, 710, 1367),\n    COL_TRI(731, 714, 1367),\n    COL_TRI(710, 1356, 709),\n    COL_TRI(710, 714, 1356),\n    COL_TRI(731, 1367, 1368),\n    COL_TRI(732, 731, 1368),\n    COL_TRI(733, 1368, 1369),\n    COL_TRI(733, 732, 1368),\n    COL_TRI(734, 733, 1369),\n    COL_TRI(738, 737, 736),\n    COL_TRI(734, 1369, 735),\n    COL_TRI(735, 752, 734),\n    COL_TRI(735, 1366, 752),\n    COL_TRI(724, 1360, 1363),\n    COL_TRI(736, 1360, 1362),\n    COL_TRI(736, 719, 1360),\n    COL_TRI(737, 1370, 719),\n    COL_TRI(737, 719, 736),\n    COL_TRI(743, 742, 741),\n    COL_TRI(739, 719, 1370),\n    COL_TRI(739, 703, 719),\n    COL_TRI(740, 746, 736),\n    COL_TRI(740, 736, 1362),\n    COL_TRI(738, 736, 1371),\n    COL_TRI(741, 1371, 736),\n    COL_TRI(742, 738, 1371),\n    COL_TRI(742, 1371, 741),\n    COL_TRI(748, 673, 674),\n    COL_TRI(743, 741, 745),\n    COL_TRI(744, 745, 741),\n    COL_TRI(745, 728, 743),\n    COL_TRI(745, 744, 728),\n    COL_TRI(728, 744, 727),\n    COL_TRI(746, 727, 744),\n    COL_TRI(727, 746, 672),\n    COL_TRI(747, 748, 675),\n    COL_TRI(748, 676, 673),\n    COL_TRI(748, 674, 675),\n    COL_TRI(748, 1375, 834),\n    COL_TRI(749, 1374, 678),\n    COL_TRI(749, 678, 677),\n    COL_TRI(749, 677, 676),\n    COL_TRI(748, 749, 676),\n    COL_TRI(750, 1375, 747),\n    COL_TRI(750, 747, 1374),\n    COL_TRI(751, 750, 1374),\n    COL_TRI(751, 1374, 749),\n    COL_TRI(748, 747, 1375),\n    COL_TRI(749, 834, 751),\n    COL_TRI(749, 748, 834),\n    COL_TRI(733, 734, 752),\n    COL_TRI(752, 1365, 815),\n    COL_TRI(731, 732, 733),\n    COL_TRI(753, 731, 815),\n    COL_TRI(753, 715, 731),\n    COL_TRI(715, 714, 731),\n    COL_TRI(753, 815, 1376),\n    COL_TRI(754, 755, 685),\n    COL_TRI(754, 685, 692),\n    COL_TRI(755, 1377, 1378),\n    COL_TRI(755, 754, 1377),\n    COL_TRI(756, 1378, 1377),\n    COL_TRI(756, 757, 1378),\n    COL_TRI(757, 756, 1379),\n    COL_TRI(757, 1379, 1380),\n    COL_TRI(758, 1380, 1379),\n    COL_TRI(758, 759, 1380),\n    COL_TRI(759, 758, 1381),\n    COL_TRI(759, 1381, 1382),\n    COL_TRI(760, 761, 1382),\n    COL_TRI(760, 1382, 1381),\n    COL_TRI(761, 760, 1383),\n    COL_TRI(761, 1383, 1384),\n    COL_TRI(762, 1384, 1383),\n    COL_TRI(762, 763, 1384),\n    COL_TRI(763, 1385, 1386),\n    COL_TRI(763, 762, 1385),\n    COL_TRI(764, 1386, 1385),\n    COL_TRI(764, 765, 1386),\n    COL_TRI(765, 1387, 1388),\n    COL_TRI(765, 764, 1387),\n    COL_TRI(766, 1388, 1387),\n    COL_TRI(766, 770, 1388),\n    COL_TRI(767, 769, 1389),\n    COL_TRI(767, 1389, 1390),\n    COL_TRI(768, 1390, 1389),\n    COL_TRI(768, 771, 1390),\n    COL_TRI(769, 1391, 1392),\n    COL_TRI(769, 767, 1391),\n    COL_TRI(770, 1392, 1391),\n    COL_TRI(770, 766, 1392),\n    COL_TRI(771, 768, 1393),\n    COL_TRI(771, 1393, 1394),\n    COL_TRI(772, 1394, 1393),\n    COL_TRI(772, 773, 1394),\n    COL_TRI(773, 1395, 1396),\n    COL_TRI(773, 772, 1395),\n    COL_TRI(774, 775, 1396),\n    COL_TRI(774, 1396, 1395),\n    COL_TRI(775, 1397, 1398),\n    COL_TRI(775, 774, 1397),\n    COL_TRI(776, 777, 1398),\n    COL_TRI(776, 1398, 1397),\n    COL_TRI(777, 1399, 1400),\n    COL_TRI(777, 776, 1399),\n    COL_TRI(778, 786, 1400),\n    COL_TRI(778, 1400, 1399),\n    COL_TRI(779, 1401, 1402),\n    COL_TRI(779, 781, 1401),\n    COL_TRI(783, 782, 1405),\n    COL_TRI(780, 1402, 1401),\n    COL_TRI(781, 1403, 1404),\n    COL_TRI(781, 779, 1403),\n    COL_TRI(782, 1404, 1403),\n    COL_TRI(782, 783, 1404),\n    COL_TRI(783, 1405, 1406),\n    COL_TRI(784, 787, 1406),\n    COL_TRI(784, 1406, 1405),\n    COL_TRI(780, 785, 1402),\n    COL_TRI(785, 1407, 1408),\n    COL_TRI(785, 780, 1407),\n    COL_TRI(786, 1408, 1407),\n    COL_TRI(789, 788, 1411),\n    COL_TRI(786, 778, 1408),\n    COL_TRI(787, 784, 1409),\n    COL_TRI(787, 1409, 1410),\n    COL_TRI(788, 789, 1410),\n    COL_TRI(788, 1410, 1409),\n    COL_TRI(789, 1411, 1412),\n    COL_TRI(790, 1412, 1411),\n    COL_TRI(790, 791, 1412),\n    COL_TRI(791, 1413, 1414),\n    COL_TRI(791, 790, 1413),\n    COL_TRI(792, 793, 1414),\n    COL_TRI(792, 1414, 1413),\n    COL_TRI(793, 1415, 1416),\n    COL_TRI(793, 792, 1415),\n    COL_TRI(794, 795, 1416),\n    COL_TRI(794, 1416, 1415),\n    COL_TRI(795, 794, 1417),\n    COL_TRI(795, 1417, 1418),\n    COL_TRI(796, 797, 1418),\n    COL_TRI(796, 1418, 1417),\n    COL_TRI(797, 1419, 1420),\n    COL_TRI(797, 796, 1419),\n    COL_TRI(798, 1420, 1419),\n    COL_TRI(798, 799, 1420),\n    COL_TRI(799, 798, 1421),\n    COL_TRI(799, 1421, 1422),\n    COL_TRI(800, 1422, 1421),\n    COL_TRI(800, 1423, 1422),\n    COL_TRI(801, 803, 1424),\n    COL_TRI(801, 1424, 1425),\n    COL_TRI(805, 1428, 1429),\n    COL_TRI(802, 1425, 1424),\n    COL_TRI(802, 824, 1425),\n    COL_TRI(803, 1426, 1427),\n    COL_TRI(803, 801, 1426),\n    COL_TRI(804, 805, 1427),\n    COL_TRI(804, 1427, 1426),\n    COL_TRI(805, 804, 1428),\n    COL_TRI(806, 1429, 1428),\n    COL_TRI(807, 1430, 1431),\n    COL_TRI(807, 808, 1430),\n    COL_TRI(808, 807, 1432),\n    COL_TRI(808, 1432, 1433),\n    COL_TRI(811, 813, 1434),\n    COL_TRI(809, 1433, 1432),\n    COL_TRI(809, 806, 1433),\n    COL_TRI(806, 809, 1429),\n    COL_TRI(810, 812, 1431),\n    COL_TRI(810, 1431, 1430),\n    COL_TRI(811, 1434, 1435),\n    COL_TRI(812, 1435, 1434),\n    COL_TRI(812, 810, 1435),\n    COL_TRI(813, 811, 1436),\n    COL_TRI(813, 1436, 1437),\n    COL_TRI(814, 1437, 1436),\n    COL_TRI(814, 828, 1437),\n    COL_TRI(815, 746, 740),\n    COL_TRI(815, 740, 1376),\n    COL_TRI(816, 1376, 740),\n    COL_TRI(817, 1423, 1438),\n    COL_TRI(817, 1438, 1439),\n    COL_TRI(817, 1440, 1423),\n    COL_TRI(818, 819, 1440),\n    COL_TRI(818, 1440, 817),\n    COL_TRI(819, 818, 1441),\n    COL_TRI(819, 1441, 1442),\n    COL_TRI(820, 1442, 1441),\n    COL_TRI(820, 821, 1442),\n    COL_TRI(821, 820, 1443),\n    COL_TRI(821, 1443, 1444),\n    COL_TRI(822, 1444, 1443),\n    COL_TRI(822, 823, 1444),\n    COL_TRI(823, 822, 1445),\n    COL_TRI(823, 1445, 1446),\n    COL_TRI(826, 827, 1450),\n    COL_TRI(824, 802, 1447),\n    COL_TRI(824, 1447, 1448),\n    COL_TRI(816, 825, 1376),\n    COL_TRI(825, 816, 1449),\n    COL_TRI(825, 1449, 1450),\n    COL_TRI(826, 1450, 1449),\n    COL_TRI(831, 1453, 833),\n    COL_TRI(827, 826, 1451),\n    COL_TRI(827, 1451, 1452),\n    COL_TRI(828, 814, 1452),\n    COL_TRI(828, 1452, 1451),\n    COL_TRI(829, 833, 1453),\n    COL_TRI(829, 1453, 1454),\n    COL_TRI(830, 829, 1454),\n    COL_TRI(831, 833, 1455),\n    COL_TRI(834, 829, 830),\n    COL_TRI(832, 1454, 1453),\n    COL_TRI(832, 1453, 831),\n    COL_TRI(830, 1454, 832),\n    COL_TRI(832, 1455, 830),\n    COL_TRI(832, 831, 1455),\n    COL_TRI(833, 751, 1455),\n    COL_TRI(833, 750, 751),\n    COL_TRI(751, 834, 830),\n    COL_TRI(751, 830, 1455),\n    COL_TRI(834, 1375, 829),\n    COL_TRI(838, 843, 1456),\n    COL_TRI(835, 1355, 709),\n    COL_TRI(835, 709, 1356),\n    COL_TRI(836, 837, 1370),\n    COL_TRI(836, 1372, 837),\n    COL_TRI(837, 739, 1370),\n    COL_TRI(739, 837, 1372),\n    COL_TRI(739, 1372, 1373),\n    COL_TRI(739, 1373, 703),\n    COL_TRI(838, 1460, 1461),\n    COL_TRI(838, 1456, 1457),\n    COL_TRI(839, 847, 1458),\n    COL_TRI(839, 1458, 1459),\n    COL_TRI(840, 1460, 841),\n    COL_TRI(840, 1461, 1460),\n    COL_TRI(841, 842, 840),\n    COL_TRI(842, 1461, 840),\n    COL_TRI(838, 1462, 1460),\n    COL_TRI(841, 1463, 843),\n    COL_TRI(841, 843, 842),\n    COL_TRI(842, 1464, 1461),\n    COL_TRI(838, 1461, 1464),\n    COL_TRI(843, 838, 1464),\n    COL_TRI(843, 1464, 842),\n    COL_TRI(844, 1465, 845),\n    COL_TRI(845, 1465, 857),\n    COL_TRI(845, 857, 846),\n    COL_TRI(846, 844, 845),\n    COL_TRI(839, 1466, 857),\n    COL_TRI(839, 857, 1465),\n    COL_TRI(850, 848, 851),\n    COL_TRI(846, 1467, 847),\n    COL_TRI(846, 847, 844),\n    COL_TRI(844, 1468, 1465),\n    COL_TRI(839, 1465, 1468),\n    COL_TRI(847, 1468, 844),\n    COL_TRI(847, 839, 1468),\n    COL_TRI(848, 1469, 851),\n    COL_TRI(849, 1470, 848),\n    COL_TRI(848, 1470, 1469),\n    COL_TRI(850, 849, 848),\n    COL_TRI(851, 1469, 1471),\n    COL_TRI(851, 1471, 1472),\n    COL_TRI(850, 851, 1472),\n    COL_TRI(849, 996, 1470),\n    COL_TRI(850, 1473, 849),\n    COL_TRI(852, 853, 854),\n    COL_TRI(853, 1474, 855),\n    COL_TRI(853, 855, 854),\n    COL_TRI(858, 841, 877),\n    COL_TRI(854, 855, 856),\n    COL_TRI(855, 1475, 856),\n    COL_TRI(852, 854, 856),\n    COL_TRI(852, 856, 1476),\n    COL_TRI(856, 1475, 1012),\n    COL_TRI(856, 1012, 1476),\n    COL_TRI(852, 1476, 1477),\n    COL_TRI(857, 84, 841),\n    COL_TRI(841, 1460, 877),\n    COL_TRI(858, 857, 841),\n    COL_TRI(858, 846, 857),\n    COL_TRI(857, 82, 84),\n    COL_TRI(859, 1478, 81),\n    COL_TRI(859, 81, 83),\n    COL_TRI(860, 861, 1479),\n    COL_TRI(861, 26, 1479),\n    COL_TRI(862, 39, 26),\n    COL_TRI(863, 862, 26),\n    COL_TRI(26, 52, 1479),\n    COL_TRI(860, 1479, 864),\n    COL_TRI(860, 864, 48),\n    COL_TRI(864, 49, 48),\n    COL_TRI(865, 48, 47),\n    COL_TRI(865, 1480, 48),\n    COL_TRI(866, 869, 1482),\n    COL_TRI(867, 868, 869),\n    COL_TRI(867, 869, 866),\n    COL_TRI(868, 5, 869),\n    COL_TRI(869, 5, 1482),\n    COL_TRI(868, 3, 5),\n    COL_TRI(5, 1, 1482),\n    COL_TRI(866, 1482, 870),\n    COL_TRI(870, 1482, 871),\n    COL_TRI(871, 1482, 1),\n    COL_TRI(871, 1, 0),\n    COL_TRI(870, 871, 872),\n    COL_TRI(872, 871, 873),\n    COL_TRI(873, 871, 0),\n    COL_TRI(878, 4, 6),\n    COL_TRI(873, 0, 2),\n    COL_TRI(874, 873, 875),\n    COL_TRI(872, 873, 874),\n    COL_TRI(875, 873, 2),\n    COL_TRI(875, 2, 7),\n    COL_TRI(875, 877, 995),\n    COL_TRI(875, 876, 877),\n    COL_TRI(874, 875, 995),\n    COL_TRI(875, 7, 4),\n    COL_TRI(876, 875, 4),\n    COL_TRI(877, 876, 878),\n    COL_TRI(878, 876, 4),\n    COL_TRI(880, 28, 27),\n    COL_TRI(877, 878, 858),\n    COL_TRI(878, 867, 858),\n    COL_TRI(878, 868, 867),\n    COL_TRI(878, 6, 3),\n    COL_TRI(868, 878, 3),\n    COL_TRI(879, 56, 1485),\n    COL_TRI(879, 27, 56),\n    COL_TRI(880, 27, 879),\n    COL_TRI(885, 887, 886),\n    COL_TRI(881, 28, 880),\n    COL_TRI(881, 57, 28),\n    COL_TRI(882, 60, 883),\n    COL_TRI(883, 59, 1486),\n    COL_TRI(883, 60, 59),\n    COL_TRI(882, 58, 60),\n    COL_TRI(884, 58, 882),\n    COL_TRI(884, 29, 58),\n    COL_TRI(886, 887, 888),\n    COL_TRI(888, 889, 890),\n    COL_TRI(887, 889, 888),\n    COL_TRI(889, 899, 890),\n    COL_TRI(889, 919, 899),\n    COL_TRI(888, 893, 1488),\n    COL_TRI(886, 888, 1488),\n    COL_TRI(890, 893, 888),\n    COL_TRI(891, 1489, 890),\n    COL_TRI(891, 890, 899),\n    COL_TRI(891, 894, 897),\n    COL_TRI(892, 1491, 1488),\n    COL_TRI(893, 892, 1488),\n    COL_TRI(892, 1492, 894),\n    COL_TRI(894, 898, 892),\n    COL_TRI(893, 1490, 892),\n    COL_TRI(894, 899, 898),\n    COL_TRI(894, 891, 899),\n    COL_TRI(891, 897, 601),\n    COL_TRI(900, 901, 903),\n    COL_TRI(895, 1489, 896),\n    COL_TRI(896, 1489, 891),\n    COL_TRI(896, 891, 601),\n    COL_TRI(895, 1492, 1489),\n    COL_TRI(897, 894, 895),\n    COL_TRI(894, 1492, 895),\n    COL_TRI(898, 899, 968),\n    COL_TRI(899, 919, 968),\n    COL_TRI(885, 886, 1487),\n    COL_TRI(901, 902, 903),\n    COL_TRI(901, 1493, 902),\n    COL_TRI(902, 1493, 885),\n    COL_TRI(903, 902, 1487),\n    COL_TRI(902, 885, 1487),\n    COL_TRI(903, 1487, 975),\n    COL_TRI(900, 903, 975),\n    COL_TRI(890, 1490, 893),\n    COL_TRI(904, 905, 1496),\n    COL_TRI(905, 906, 1496),\n    COL_TRI(905, 1497, 906),\n    COL_TRI(906, 1497, 974),\n    COL_TRI(906, 974, 1498),\n    COL_TRI(907, 1496, 906),\n    COL_TRI(907, 906, 1498),\n    COL_TRI(907, 904, 1496),\n    COL_TRI(63, 1003, 61),\n    COL_TRI(63, 1000, 1003),\n    COL_TRI(908, 1003, 867),\n    COL_TRI(908, 61, 1003),\n    COL_TRI(127, 1500, 1501),\n    COL_TRI(908, 64, 61),\n    COL_TRI(870, 962, 908),\n    COL_TRI(908, 65, 64),\n    COL_TRI(908, 909, 128),\n    COL_TRI(909, 908, 962),\n    COL_TRI(909, 1500, 128),\n    COL_TRI(910, 912, 913),\n    COL_TRI(911, 912, 1502),\n    COL_TRI(912, 1503, 1502),\n    COL_TRI(912, 910, 1503),\n    COL_TRI(913, 912, 911),\n    COL_TRI(913, 911, 915),\n    COL_TRI(914, 911, 1495),\n    COL_TRI(911, 1502, 1495),\n    COL_TRI(915, 911, 914),\n    COL_TRI(916, 1504, 924),\n    COL_TRI(916, 1505, 1504),\n    COL_TRI(916, 1495, 1502),\n    COL_TRI(922, 1504, 1505),\n    COL_TRI(916, 1506, 1505),\n    COL_TRI(916, 1502, 1506),\n    COL_TRI(917, 1494, 916),\n    COL_TRI(919, 1494, 917),\n    COL_TRI(919, 1495, 1494),\n    COL_TRI(916, 1494, 1495),\n    COL_TRI(919, 914, 1495),\n    COL_TRI(920, 1502, 1503),\n    COL_TRI(920, 1506, 1502),\n    COL_TRI(921, 1505, 1506),\n    COL_TRI(921, 1506, 920),\n    COL_TRI(922, 1505, 921),\n    COL_TRI(923, 924, 922),\n    COL_TRI(924, 1504, 922),\n    COL_TRI(914, 919, 889),\n    COL_TRI(917, 916, 918),\n    COL_TRI(918, 916, 924),\n    COL_TRI(918, 924, 923),\n    COL_TRI(925, 926, 36),\n    COL_TRI(925, 36, 39),\n    COL_TRI(36, 926, 461),\n    COL_TRI(36, 461, 927),\n    COL_TRI(926, 1183, 461),\n    COL_TRI(927, 1185, 37),\n    COL_TRI(36, 927, 37),\n    COL_TRI(927, 1184, 1185),\n    COL_TRI(928, 997, 130),\n    COL_TRI(928, 1508, 997),\n    COL_TRI(929, 1508, 928),\n    COL_TRI(929, 1509, 1508),\n    COL_TRI(930, 1509, 929),\n    COL_TRI(930, 1510, 1509),\n    COL_TRI(931, 1510, 930),\n    COL_TRI(931, 1511, 1510),\n    COL_TRI(932, 1511, 931),\n    COL_TRI(932, 1512, 1511),\n    COL_TRI(933, 1512, 932),\n    COL_TRI(933, 1513, 1512),\n    COL_TRI(934, 1514, 1513),\n    COL_TRI(934, 1513, 933),\n    COL_TRI(935, 1514, 934),\n    COL_TRI(935, 1515, 1514),\n    COL_TRI(936, 1515, 935),\n    COL_TRI(936, 1516, 1515),\n    COL_TRI(937, 1516, 936),\n    COL_TRI(937, 1517, 1516),\n    COL_TRI(938, 1517, 937),\n    COL_TRI(938, 1518, 1517),\n    COL_TRI(939, 1518, 938),\n    COL_TRI(939, 1519, 1518),\n    COL_TRI(940, 1519, 939),\n    COL_TRI(940, 1520, 1519),\n    COL_TRI(941, 1520, 940),\n    COL_TRI(941, 1521, 1520),\n    COL_TRI(945, 1527, 1526),\n    COL_TRI(942, 1521, 1522),\n    COL_TRI(943, 1523, 1524),\n    COL_TRI(943, 1524, 1525),\n    COL_TRI(944, 1523, 943),\n    COL_TRI(944, 1526, 1523),\n    COL_TRI(945, 1526, 944),\n    COL_TRI(946, 1527, 945),\n    COL_TRI(946, 1528, 1527),\n    COL_TRI(947, 1528, 946),\n    COL_TRI(947, 1529, 1528),\n    COL_TRI(948, 1529, 947),\n    COL_TRI(948, 1530, 1529),\n    COL_TRI(949, 1530, 948),\n    COL_TRI(949, 1531, 1530),\n    COL_TRI(950, 1532, 1531),\n    COL_TRI(950, 1531, 949),\n    COL_TRI(951, 1532, 950),\n    COL_TRI(951, 1533, 1532),\n    COL_TRI(952, 1533, 951),\n    COL_TRI(952, 1534, 1533),\n    COL_TRI(953, 1534, 952),\n    COL_TRI(953, 1535, 1534),\n    COL_TRI(954, 1536, 1535),\n    COL_TRI(954, 1535, 953),\n    COL_TRI(955, 1536, 954),\n    COL_TRI(955, 1501, 1536),\n    COL_TRI(127, 1501, 955),\n    COL_TRI(956, 957, 917),\n    COL_TRI(957, 1014, 917),\n    COL_TRI(957, 1242, 1014),\n    COL_TRI(959, 958, 942),\n    COL_TRI(917, 1014, 981),\n    COL_TRI(956, 917, 918),\n    COL_TRI(942, 956, 918),\n    COL_TRI(942, 1243, 956),\n    COL_TRI(942, 1522, 959),\n    COL_TRI(958, 1537, 942),\n    COL_TRI(964, 1140, 979),\n    COL_TRI(960, 923, 922),\n    COL_TRI(960, 966, 923),\n    COL_TRI(961, 1538, 1483),\n    COL_TRI(962, 992, 994),\n    COL_TRI(963, 964, 921),\n    COL_TRI(964, 979, 921),\n    COL_TRI(963, 921, 920),\n    COL_TRI(965, 963, 920),\n    COL_TRI(965, 1139, 963),\n    COL_TRI(917, 981, 968),\n    COL_TRI(923, 961, 1483),\n    COL_TRI(966, 961, 923),\n    COL_TRI(923, 1483, 1539),\n    COL_TRI(923, 1539, 918),\n    COL_TRI(968, 1491, 892),\n    COL_TRI(870, 1483, 962),\n    COL_TRI(870, 872, 1483),\n    COL_TRI(967, 1542, 1483),\n    COL_TRI(921, 962, 922),\n    COL_TRI(921, 1543, 962),\n    COL_TRI(968, 892, 898),\n    COL_TRI(914, 889, 887),\n    COL_TRI(913, 900, 910),\n    COL_TRI(900, 977, 910),\n    COL_TRI(910, 977, 974),\n    COL_TRI(910, 974, 1503),\n    COL_TRI(914, 887, 885),\n    COL_TRI(914, 885, 915),\n    COL_TRI(181, 900, 913),\n    COL_TRI(186, 181, 913),\n    COL_TRI(181, 192, 900),\n    COL_TRI(186, 913, 915),\n    COL_TRI(885, 186, 915),\n    COL_TRI(885, 1018, 186),\n    COL_TRI(969, 971, 1266),\n    COL_TRI(970, 1266, 971),\n    COL_TRI(971, 920, 1503),\n    COL_TRI(971, 969, 920),\n    COL_TRI(974, 971, 1503),\n    COL_TRI(969, 1266, 559),\n    COL_TRI(972, 969, 559),\n    COL_TRI(972, 973, 969),\n    COL_TRI(973, 904, 969),\n    COL_TRI(904, 920, 969),\n    COL_TRI(904, 965, 920),\n    COL_TRI(970, 972, 558),\n    COL_TRI(970, 973, 972),\n    COL_TRI(970, 558, 1266),\n    COL_TRI(974, 970, 971),\n    COL_TRI(904, 1499, 965),\n    COL_TRI(975, 976, 900),\n    COL_TRI(976, 1544, 900),\n    COL_TRI(976, 1498, 1544),\n    COL_TRI(977, 1544, 1498),\n    COL_TRI(974, 977, 1498),\n    COL_TRI(965, 1499, 1015),\n    COL_TRI(262, 263, 264),\n    COL_TRI(978, 1524, 979),\n    COL_TRI(978, 1545, 1524),\n    COL_TRI(979, 1546, 1016),\n    COL_TRI(978, 979, 1016),\n    COL_TRI(268, 1063, 987),\n    COL_TRI(268, 987, 47),\n    COL_TRI(262, 268, 47),\n    COL_TRI(980, 981, 1014),\n    COL_TRI(981, 1549, 51),\n    COL_TRI(981, 51, 76),\n    COL_TRI(982, 993, 991),\n    COL_TRI(982, 1550, 993),\n    COL_TRI(262, 47, 51),\n    COL_TRI(863, 983, 862),\n    COL_TRI(983, 1507, 985),\n    COL_TRI(983, 985, 699),\n    COL_TRI(700, 925, 862),\n    COL_TRI(700, 984, 925),\n    COL_TRI(862, 983, 700),\n    COL_TRI(983, 699, 700),\n    COL_TRI(862, 925, 39),\n    COL_TRI(984, 985, 925),\n    COL_TRI(985, 1507, 925),\n    COL_TRI(925, 1507, 926),\n    COL_TRI(986, 1547, 1353),\n    COL_TRI(986, 1353, 708),\n    COL_TRI(706, 1481, 865),\n    COL_TRI(706, 988, 1481),\n    COL_TRI(989, 1551, 991),\n    COL_TRI(865, 708, 706),\n    COL_TRI(865, 986, 708),\n    COL_TRI(986, 865, 47),\n    COL_TRI(865, 1481, 1480),\n    COL_TRI(987, 986, 47),\n    COL_TRI(987, 1547, 986),\n    COL_TRI(988, 1547, 1481),\n    COL_TRI(988, 1353, 1547),\n    COL_TRI(993, 1553, 1552),\n    COL_TRI(990, 989, 1540),\n    COL_TRI(990, 1552, 989),\n    COL_TRI(991, 992, 1538),\n    COL_TRI(991, 993, 992),\n    COL_TRI(961, 991, 1538),\n    COL_TRI(961, 1540, 991),\n    COL_TRI(989, 991, 1540),\n    COL_TRI(966, 1541, 1540),\n    COL_TRI(966, 1540, 961),\n    COL_TRI(990, 1540, 1541),\n    COL_TRI(992, 993, 990),\n    COL_TRI(990, 993, 1552),\n    COL_TRI(995, 1484, 967),\n    COL_TRI(994, 990, 1554),\n    COL_TRI(992, 990, 994),\n    COL_TRI(990, 1541, 1554),\n    COL_TRI(960, 1541, 966),\n    COL_TRI(960, 1554, 1541),\n    COL_TRI(994, 1554, 960),\n    COL_TRI(962, 994, 922),\n    COL_TRI(994, 960, 922),\n    COL_TRI(995, 877, 1012),\n    COL_TRI(874, 995, 967),\n    COL_TRI(908, 867, 866),\n    COL_TRI(996, 858, 867),\n    COL_TRI(967, 34, 33),\n    COL_TRI(967, 1484, 34),\n    COL_TRI(967, 33, 71),\n    COL_TRI(997, 967, 144),\n    COL_TRI(997, 1542, 967),\n    COL_TRI(967, 1483, 872),\n    COL_TRI(1000, 1001, 1556),\n    COL_TRI(998, 38, 37),\n    COL_TRI(998, 1499, 38),\n    COL_TRI(999, 263, 262),\n    COL_TRI(999, 262, 51),\n    COL_TRI(34, 1555, 69),\n    COL_TRI(34, 1484, 1555),\n    COL_TRI(1003, 1004, 1006),\n    COL_TRI(1001, 1002, 1556),\n    COL_TRI(1002, 1557, 926),\n    COL_TRI(1001, 1557, 1002),\n    COL_TRI(1003, 1556, 1002),\n    COL_TRI(1004, 1002, 926),\n    COL_TRI(1003, 1002, 1004),\n    COL_TRI(1003, 1000, 1556),\n    COL_TRI(1004, 926, 1005),\n    COL_TRI(1005, 1558, 1006),\n    COL_TRI(1005, 1006, 1004),\n    COL_TRI(1009, 987, 1011),\n    COL_TRI(1006, 1558, 996),\n    COL_TRI(1003, 1006, 867),\n    COL_TRI(867, 1006, 996),\n    COL_TRI(1007, 1011, 1484),\n    COL_TRI(1008, 1007, 1484),\n    COL_TRI(1007, 1559, 1009),\n    COL_TRI(1007, 1008, 1559),\n    COL_TRI(1009, 1011, 1007),\n    COL_TRI(987, 1560, 1011),\n    COL_TRI(1010, 1011, 1560),\n    COL_TRI(959, 980, 1013),\n    COL_TRI(1011, 1010, 1484),\n    COL_TRI(995, 1008, 1484),\n    COL_TRI(1010, 1560, 1561),\n    COL_TRI(1010, 1561, 1555),\n    COL_TRI(1010, 1555, 1484),\n    COL_TRI(1012, 1559, 1008),\n    COL_TRI(1012, 1008, 995),\n    COL_TRI(980, 1014, 1013),\n    COL_TRI(959, 1013, 958),\n    COL_TRI(1013, 1537, 958),\n    COL_TRI(1014, 1562, 1013),\n    COL_TRI(1013, 1562, 1537),\n    COL_TRI(1015, 1016, 1017),\n    COL_TRI(1015, 978, 1016),\n    COL_TRI(1016, 1548, 1017),\n    COL_TRI(1016, 1546, 1548),\n    COL_TRI(1017, 1548, 965),\n    COL_TRI(1015, 1017, 965),\n    COL_TRI_INIT(SURFACE_VERY_SLIPPERY, 55),\n    COL_TRI(20, 18, 19),\n    COL_TRI(8, 9, 10),\n    COL_TRI(8, 11, 9),\n    COL_TRI(12, 8, 10),\n    COL_TRI(9, 11, 13),\n    COL_TRI(9, 13, 14),\n    COL_TRI(12, 10, 15),\n    COL_TRI(16, 12, 17),\n    COL_TRI(12, 15, 17),\n    COL_TRI(18, 16, 17),\n    COL_TRI(18, 17, 19),\n    COL_TRI(24, 48, 49),\n    COL_TRI(20, 19, 21),\n    COL_TRI(22, 20, 21),\n    COL_TRI(22, 21, 43),\n    COL_TRI(22, 43, 44),\n    COL_TRI(22, 44, 45),\n    COL_TRI(23, 45, 44),\n    COL_TRI(23, 46, 45),\n    COL_TRI(24, 47, 48),\n    COL_TRI(24, 40, 47),\n    COL_TRI(24, 49, 50),\n    COL_TRI(25, 52, 26),\n    COL_TRI(25, 26, 53),\n    COL_TRI(26, 54, 53),\n    COL_TRI(26, 39, 54),\n    COL_TRI(27, 28, 55),\n    COL_TRI(27, 55, 56),\n    COL_TRI(28, 57, 55),\n    COL_TRI(29, 30, 58),\n    COL_TRI(33, 34, 67),\n    COL_TRI(30, 59, 60),\n    COL_TRI(30, 60, 58),\n    COL_TRI(31, 32, 61),\n    COL_TRI(32, 62, 63),\n    COL_TRI(32, 63, 61),\n    COL_TRI(31, 61, 64),\n    COL_TRI(31, 65, 66),\n    COL_TRI(31, 64, 65),\n    COL_TRI(34, 68, 67),\n    COL_TRI(34, 69, 68),\n    COL_TRI(33, 67, 70),\n    COL_TRI(35, 33, 70),\n    COL_TRI(35, 71, 33),\n    COL_TRI(36, 37, 72),\n    COL_TRI(37, 38, 72),\n    COL_TRI(38, 73, 72),\n    COL_TRI(36, 72, 74),\n    COL_TRI(36, 74, 75),\n    COL_TRI(39, 36, 54),\n    COL_TRI(36, 75, 54),\n    COL_TRI(40, 41, 51),\n    COL_TRI(41, 42, 51),\n    COL_TRI(42, 76, 51),\n    COL_TRI(40, 51, 47),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 2),\n    COL_TRI(81, 82, 83),\n    COL_TRI(81, 84, 82),\n    COL_TRI_INIT(SURFACE_LOOK_UP_WARP, 6),\n    COL_TRI(0, 1, 2),\n    COL_TRI(1, 3, 4),\n    COL_TRI(1, 4, 2),\n    COL_TRI(1, 5, 3),\n    COL_TRI(3, 6, 4),\n    COL_TRI(4, 7, 2),\n    COL_TRI_INIT(SURFACE_NO_CAM_COLLISION, 54),\n    COL_TRI(123, 12, 16),\n    COL_TRI(117, 46, 23),\n    COL_TRI(117, 118, 46),\n    COL_TRI(45, 46, 118),\n    COL_TRI(45, 118, 119),\n    COL_TRI(120, 121, 14),\n    COL_TRI(120, 14, 13),\n    COL_TRI(120, 13, 11),\n    COL_TRI(122, 120, 11),\n    COL_TRI(123, 124, 12),\n    COL_TRI(125, 18, 20),\n    COL_TRI(125, 138, 18),\n    COL_TRI(20, 119, 125),\n    COL_TRI(20, 22, 119),\n    COL_TRI(22, 45, 119),\n    COL_TRI(24, 50, 139),\n    COL_TRI(16, 138, 123),\n    COL_TRI(16, 18, 138),\n    COL_TRI(122, 11, 8),\n    COL_TRI(8, 12, 124),\n    COL_TRI(8, 124, 122),\n    COL_TRI(24, 139, 137),\n    COL_TRI(129, 62, 32),\n    COL_TRI(126, 140, 25),\n    COL_TRI(126, 25, 53),\n    COL_TRI(66, 127, 141),\n    COL_TRI(66, 141, 32),\n    COL_TRI(66, 32, 31),\n    COL_TRI(127, 66, 65),\n    COL_TRI(128, 127, 65),\n    COL_TRI(129, 142, 62),\n    COL_TRI(131, 74, 72),\n    COL_TRI(130, 71, 35),\n    COL_TRI(67, 143, 130),\n    COL_TRI(67, 130, 35),\n    COL_TRI(130, 144, 71),\n    COL_TRI(67, 35, 70),\n    COL_TRI(68, 145, 146),\n    COL_TRI(68, 146, 67),\n    COL_TRI(131, 147, 74),\n    COL_TRI(134, 54, 75),\n    COL_TRI(132, 131, 73),\n    COL_TRI(131, 72, 73),\n    COL_TRI(133, 75, 74),\n    COL_TRI(133, 74, 147),\n    COL_TRI(134, 126, 53),\n    COL_TRI(134, 53, 54),\n    COL_TRI(133, 134, 75),\n    COL_TRI(135, 148, 42),\n    COL_TRI(135, 42, 41),\n    COL_TRI(136, 135, 41),\n    COL_TRI(136, 41, 40),\n    COL_TRI(137, 136, 24),\n    COL_TRI(136, 40, 24),\n    COL_TRI_INIT(SURFACE_PAINTING_WOBBLE_A6, 2),\n    COL_TRI(93, 94, 95),\n    COL_TRI(93, 95, 96),\n    COL_TRI_INIT(SURFACE_PAINTING_WOBBLE_A7, 2),\n    COL_TRI(97, 98, 94),\n    COL_TRI(97, 94, 93),\n    COL_TRI_INIT(SURFACE_PAINTING_WOBBLE_A8, 2),\n    COL_TRI(99, 100, 98),\n    COL_TRI(99, 98, 97),\n    COL_TRI_INIT(SURFACE_PAINTING_WOBBLE_A9, 2),\n    COL_TRI(101, 102, 103),\n    COL_TRI(101, 104, 102),\n    COL_TRI_INIT(SURFACE_PAINTING_WOBBLE_AA, 2),\n    COL_TRI(109, 101, 103),\n    COL_TRI(109, 103, 110),\n    COL_TRI_INIT(SURFACE_PAINTING_WOBBLE_AB, 2),\n    COL_TRI(113, 109, 110),\n    COL_TRI(113, 110, 114),\n    COL_TRI_INIT(SURFACE_PAINTING_WOBBLE_AC, 2),\n    COL_TRI(149, 150, 151),\n    COL_TRI(149, 152, 150),\n    COL_TRI_INIT(SURFACE_PAINTING_WOBBLE_AD, 2),\n    COL_TRI(157, 151, 158),\n    COL_TRI(157, 149, 151),\n    COL_TRI_INIT(SURFACE_PAINTING_WOBBLE_AE, 2),\n    COL_TRI(161, 158, 162),\n    COL_TRI(161, 157, 158),\n    COL_TRI_INIT(SURFACE_PAINTING_WOBBLE_AF, 2),\n    COL_TRI(170, 171, 172),\n    COL_TRI(170, 169, 171),\n    COL_TRI_INIT(SURFACE_PAINTING_WOBBLE_B0, 2),\n    COL_TRI(167, 166, 169),\n    COL_TRI(167, 169, 170),\n    COL_TRI_INIT(SURFACE_PAINTING_WOBBLE_B1, 2),\n    COL_TRI(165, 166, 167),\n    COL_TRI(165, 168, 166),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_D3, 2),\n    COL_TRI(85, 86, 87),\n    COL_TRI(85, 88, 86),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_D4, 2),\n    COL_TRI(87, 86, 89),\n    COL_TRI(87, 89, 90),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_D5, 2),\n    COL_TRI(90, 91, 92),\n    COL_TRI(90, 89, 91),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_D6, 2),\n    COL_TRI(105, 106, 107),\n    COL_TRI(105, 107, 108),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_D7, 2),\n    COL_TRI(108, 111, 112),\n    COL_TRI(108, 112, 105),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_D8, 2),\n    COL_TRI(111, 115, 112),\n    COL_TRI(111, 116, 115),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_D9, 2),\n    COL_TRI(153, 154, 155),\n    COL_TRI(153, 155, 156),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_DA, 2),\n    COL_TRI(156, 159, 160),\n    COL_TRI(156, 160, 153),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_DB, 2),\n    COL_TRI(159, 163, 160),\n    COL_TRI(159, 164, 163),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_DC, 2),\n    COL_TRI(179, 180, 178),\n    COL_TRI(179, 178, 177),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_DD, 2),\n    COL_TRI(177, 178, 176),\n    COL_TRI(177, 176, 173),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_DE, 2),\n    COL_TRI(173, 174, 175),\n    COL_TRI(173, 176, 174),\n    COL_TRI_INIT(SURFACE_TRAPDOOR, 2),\n    COL_TRI(77, 78, 79),\n    COL_TRI(77, 79, 80),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(11),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_null_start,        /*pos*/ -1023,    0,  1152, /*yaw*/ 128), // unused, probably an early way to set initial position\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_wooden_door,       /*pos*/  -271,    0,  -824, /*yaw*/  32),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_wooden_door,       /*pos*/ -1775,    0,  -824, /*yaw*/ 224),\n    SPECIAL_OBJECT_WITH_YAW_AND_PARAM(/*preset*/ special_castle_door_warp,  /*pos*/ -1100,    0,  2202, /*yaw*/   0, /*bhvParam2*/ 0),\n    SPECIAL_OBJECT_WITH_YAW_AND_PARAM(/*preset*/ special_castle_door_warp,  /*pos*/ -946,     0,  2202, /*yaw*/ 128, /*bhvParam2*/ 1),\n    SPECIAL_OBJECT_WITH_YAW_AND_PARAM(/*preset*/ special_wooden_door_warp,  /*pos*/ -1023, -101, -5170, /*yaw*/   0, /*bhvParam2*/ 2),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_0stars_door,       /*pos*/ -3122,  205,  -793, /*yaw*/  64),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_1star_door,        /*pos*/   256,    0, -1074, /*yaw*/   0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_1star_door,        /*pos*/   644,  614, -1476, /*yaw*/ 224),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_3star_door,        /*pos*/  1075,  205,  -229, /*yaw*/ 192),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_3star_door,        /*pos*/ -2303,    0, -1074, /*yaw*/   0),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/1/geo.inc.c",
    "content": "// 0x0E000F30\nconst GeoLayout castle_geo_000F30[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07028FD0),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07029578),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0702A650),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT_DECAL, inside_castle_seg7_dl_0702AA10),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_0702AB20),\n        GEO_ASM(0, geo_exec_inside_castle_light),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000F70\nconst GeoLayout castle_geo_000F70[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0702E408),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000F88\nconst GeoLayout castle_geo_000F88[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0702FD30),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07023DB0),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000FA8\nconst GeoLayout castle_geo_000FA8[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07031588),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07031720),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07031830),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000FD0\nconst GeoLayout castle_geo_000FD0[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07032FC0),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07033158),\n        GEO_ASM(  0, geo_painting_update),\n        GEO_ASM(PAINTING_ID(0, 1), geo_painting_draw),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E001000\nconst GeoLayout castle_geo_001000[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07034D88),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07035178),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07035288),\n        GEO_ASM(  0, geo_painting_update),\n        GEO_ASM(PAINTING_ID(2, 1), geo_painting_draw),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E001038\nconst GeoLayout castle_geo_001038[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07036D88),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07037988),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07037BF8),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_07037DE8),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, dl_castle_aquarium_light),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07038350),\n        GEO_ASM(  0, geo_painting_update),\n        GEO_ASM(PAINTING_ID(3, 1), geo_painting_draw),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E001088\nconst GeoLayout castle_geo_001088[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0703A6C8),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_0703A808),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_070234C0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07023520),\n        GEO_ASM(  0, geo_painting_update),\n        GEO_ASM(PAINTING_ID(1, 1), geo_painting_draw),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E0010C8\nconst GeoLayout castle_geo_0010C8[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07028FD0),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07029578),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0702A650),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT_DECAL, inside_castle_seg7_dl_0702AA10),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_0702AB20),\n        GEO_ASM(0, geo_exec_inside_castle_light),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0703BA08),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E001110\nconst GeoLayout castle_geo_001110[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07028FD0),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07029578),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0702A650),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT_DECAL, inside_castle_seg7_dl_0702AA10),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_0702AB20),\n        GEO_ASM(0, geo_exec_inside_castle_light),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0702E408),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E001158\nconst GeoLayout castle_geo_001158[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07028FD0),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07029578),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0702A650),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT_DECAL, inside_castle_seg7_dl_0702AA10),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_0702AB20),\n        GEO_ASM(0, geo_exec_inside_castle_light),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0702FD30),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07023DB0),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E0011A8\nconst GeoLayout castle_geo_0011A8[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07028FD0),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07029578),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0702A650),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT_DECAL, inside_castle_seg7_dl_0702AA10),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_0702AB20),\n        GEO_ASM(0, geo_exec_inside_castle_light),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07031588),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07031720),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07031830),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E001200\nconst GeoLayout castle_geo_001200[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07028FD0),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07029578),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0702A650),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT_DECAL, inside_castle_seg7_dl_0702AA10),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_0702AB20),\n        GEO_ASM(  0, geo_exec_inside_castle_light),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07032FC0),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07033158),\n        GEO_ASM(  0, geo_painting_update),\n        GEO_ASM(256, geo_painting_draw),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E001260\nconst GeoLayout castle_geo_001260[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07028FD0),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07029578),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0702A650),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT_DECAL, inside_castle_seg7_dl_0702AA10),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_0702AB20),\n        GEO_ASM(  0, geo_exec_inside_castle_light),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07034D88),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07035178),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07035288),\n        GEO_ASM(  0, geo_painting_update),\n        GEO_ASM(258, geo_painting_draw),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E0012C8\nconst GeoLayout castle_geo_0012C8[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07028FD0),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07029578),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0702A650),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT_DECAL, inside_castle_seg7_dl_0702AA10),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_0702AB20),\n        GEO_ASM(  0, geo_exec_inside_castle_light),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07036D88),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07037988),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07037BF8),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_07037DE8),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, dl_castle_aquarium_light),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07038350),\n        GEO_ASM(  0, geo_painting_update),\n        GEO_ASM(PAINTING_ID(3, 1), geo_painting_draw),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E001348\nconst GeoLayout castle_geo_001348[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07028FD0),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07029578),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0702A650),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT_DECAL, inside_castle_seg7_dl_0702AA10),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_0702AB20),\n        GEO_ASM(  0, geo_exec_inside_castle_light),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0703A6C8),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_0703A808),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_070234C0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07023520),\n        GEO_ASM(  0, geo_painting_update),\n        GEO_ASM(PAINTING_ID(1, 1), geo_painting_draw),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E0013B8\nconst GeoLayout castle_geo_0013B8[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07028FD0),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07029578),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0702A650),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT_DECAL, inside_castle_seg7_dl_0702AA10),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_0702AB20),\n        GEO_ASM(0, geo_exec_inside_castle_light),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0703BA08),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E001400\nconst GeoLayout castle_geo_001400[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND_COLOR(0x0001),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(64, 50, 7000, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(13, 0, 2000, 6000, 0, 0, 0, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_SWITCH_CASE(17, geo_switch_area),\n                    GEO_OPEN_NODE(),\n                        GEO_BRANCH(1, castle_geo_000F30), // 0x0E000F30\n                        GEO_BRANCH(1, castle_geo_000F70), // 0x0E000F70\n                        GEO_BRANCH(1, castle_geo_000F88), // 0x0E000F88\n                        GEO_BRANCH(1, castle_geo_000FA8), // 0x0E000FA8\n                        GEO_BRANCH(1, castle_geo_000FD0), // 0x0E000FD0\n                        GEO_BRANCH(1, castle_geo_001000), // 0x0E001000\n                        GEO_BRANCH(1, castle_geo_001038), // 0x0E001038\n                        GEO_BRANCH(1, castle_geo_001088), // 0x0E001088\n                        GEO_BRANCH(1, castle_geo_0010C8), // 0x0E0010C8\n                        GEO_BRANCH(1, castle_geo_001110), // 0x0E001110\n                        GEO_BRANCH(1, castle_geo_001158), // 0x0E001158\n                        GEO_BRANCH(1, castle_geo_0011A8), // 0x0E0011A8\n                        GEO_BRANCH(1, castle_geo_001200), // 0x0E001200\n                        GEO_BRANCH(1, castle_geo_001260), // 0x0E001260\n                        GEO_BRANCH(1, castle_geo_0012C8), // 0x0E0012C8\n                        GEO_BRANCH(1, castle_geo_001348), // 0x0E001348\n                        GEO_BRANCH(1, castle_geo_0013B8), // 0x0E0013B8\n                    GEO_CLOSE_NODE(),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(0, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/1/macro.inc.c",
    "content": "// 0x07077764 - 0x070777DE\nconst MacroObject inside_castle_seg7_area_1_macro_objs[] = {\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_sign_on_wall,       /*yaw*/  90, /*pos*/  1178,   614, -2434, /*bhvParam*/ DIALOG_075),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_sign_on_wall,       /*yaw*/ 270, /*pos*/ -3185,   205,  -410, /*bhvParam*/ DIALOG_046),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_sign_on_wall,       /*yaw*/ 270, /*pos*/ -3185,   205,   -51, /*bhvParam*/ DIALOG_070),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_sign_on_wall,       /*yaw*/ 180, /*pos*/   435,     0, -1137, /*bhvParam*/ DIALOG_069),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_sign_on_wall,       /*yaw*/  45, /*pos*/  1670,   307, -1144, /*bhvParam*/ DIALOG_147),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_sign_on_wall,       /*yaw*/ 180, /*pos*/ -2278,  -410, -3002, /*bhvParam*/ DIALOG_052),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,      /*yaw*/   0, /*pos*/  -618,   388,  -324),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,      /*yaw*/   0, /*pos*/ -1430,   388,  -324),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,      /*yaw*/   0, /*pos*/  -724,   388,  -324),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,      /*yaw*/   0, /*pos*/ -1324,   388,  -324),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger, /*yaw*/   0, /*pos*/  2005,   800, -1694),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_hidden_1up,         /*yaw*/   0, /*pos*/  2036,   800, -1673, /*bhvParam*/ 1),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/1/room.inc.c",
    "content": "// 0x0707782C - 0x0707808C\nconst RoomData inside_castle_seg7_area_1_rooms[] = {\n     1,  9,  9,  1,  9,  9,  9,  9, // 0-7\n     9,  9,  1,  1,  1,  9,  9, 17, // 8-15\n     1,  9,  9,  9,  9,  9, 17,  9, // 16-23\n     9,  9,  9,  9,  9,  9,  9,  9, // 24-31\n     8,  8,  8,  8,  8,  8,  8,  8, // 32-39\n     8,  8,  8,  8,  8,  8,  8,  8, // 40-47\n     8,  8,  8,  8,  8,  8,  8,  8, // 48-55\n     8,  8,  8,  8,  8,  8,  8,  8, // 56-63\n     8,  8,  8,  8,  8,  8,  8,  8, // 64-71\n     8,  8,  8,  8,  8,  8,  8,  8, // 72-79\n     8,  8,  8,  8,  8,  8,  8,  8, // 80-87\n     8,  8,  8,  8,  8,  8,  8,  8, // 88-95\n     8,  8,  8,  8,  8,  8,  8,  8, // 96-103\n     8,  8,  8,  8,  8,  8,  8,  8, // 104-111\n     8,  8,  8,  8,  8,  8,  8,  8, // 112-119\n     8,  8,  8,  8,  8,  8,  8,  8, // 120-127\n     8,  8,  8,  8,  8,  8,  8,  8, // 128-135\n     8,  8,  8,  8,  8,  8,  8,  8, // 136-143\n     8,  8,  8,  8,  8,  8,  8,  8, // 144-151\n     8,  8,  8,  1,  8,  8,  8,  8, // 152-159\n     8,  8,  8,  8,  8,  8,  1, 16, // 160-167\n    16, 16, 16,  8,  8,  8,  8,  8, // 168-175\n     1,  1,  8,  8,  1,  8,  8,  8, // 176-183\n     8,  8,  8,  8,  8,  8,  8,  8, // 184-191\n     8,  8,  8,  8,  8,  8,  8,  8, // 192-199\n     8,  8,  8,  8,  8,  8,  8,  8, // 200-207\n     8,  8,  8,  8,  8,  8,  8,  8, // 208-215\n     8,  8,  8,  8,  8,  8,  8,  8, // 216-223\n     8,  8,  8,  8,  8,  8,  8,  8, // 224-231\n     8, 16, 16,  8,  8,  8,  8,  8, // 232-239\n     8,  8,  8,  7,  7,  7,  7,  7, // 240-247\n     7,  7,  7,  7,  7,  7,  7,  7, // 248-255\n     7,  7,  7,  7,  7,  7,  7,  7, // 256-263\n     7,  7,  7,  7,  7,  7,  7,  7, // 264-271\n     7,  7,  7,  7,  7,  7,  7,  7, // 272-279\n     7,  7,  7,  7,  7,  7,  7,  7, // 280-287\n     7,  7,  7,  7,  7,  7,  7,  7, // 288-295\n    15, 15,  7,  7,  7,  7,  7,  7, // 296-303\n     7,  7,  7,  7,  7,  7,  7,  7, // 304-311\n     7,  7,  7,  7,  7,  7,  7,  7, // 312-319\n     7,  7,  7,  7,  7,  7,  7,  7, // 320-327\n     7,  7,  7,  7,  7,  7,  7,  7, // 328-335\n     7,  7,  7,  7,  7,  7,  7,  7, // 336-343\n     7,  7,  7,  7,  7,  7,  7,  7, // 344-351\n     7,  7,  7,  7,  7,  7,  7,  7, // 352-359\n     7,  7,  7,  7,  7,  7,  7,  7, // 360-367\n     7,  7,  7,  7,  7,  7,  7,  7, // 368-375\n     7,  7,  7,  7,  7,  7,  7,  7, // 376-383\n     7,  7,  7,  7,  7,  7,  7,  7, // 384-391\n     7,  7,  7,  7,  7,  7,  7,  7, // 392-399\n     7,  7,  7,  7,  7,  7,  7,  7, // 400-407\n     7,  7,  7,  7,  7,  7,  7,  7, // 408-415\n     7,  7,  7,  7,  7,  7,  7,  7, // 416-423\n     7,  7,  7,  7,  7,  7,  7,  7, // 424-431\n     7,  7,  7,  7,  7,  7,  7,  7, // 432-439\n     7,  7,  7,  7,  7,  7,  7,  7, // 440-447\n     7,  7,  7,  7,  7,  7,  7,  7, // 448-455\n     7,  7,  7,  7,  7,  7,  7,  7, // 456-463\n     7,  7,  7,  7,  7,  7,  7,  7, // 464-471\n     7,  7,  7,  7,  7,  7,  7,  7, // 472-479\n     7,  7,  7,  7,  7,  7,  7,  7, // 480-487\n     7,  7,  7,  7,  7,  7,  7,  7, // 488-495\n     7,  7,  7,  7,  7,  7,  7,  7, // 496-503\n     7,  7,  7,  7,  7,  7,  7,  7, // 504-511\n     7, 15,  7,  7,  1,  1,  7,  7, // 512-519\n     1,  1, 15, 15, 15,  7,  7,  1, // 520-527\n     1,  6,  6,  6, 14,  6,  6,  6, // 528-535\n     6,  6, 14,  6,  6,  6,  6,  6, // 536-543\n     6,  6,  6,  6,  6,  6,  6,  6, // 544-551\n     6,  6,  6,  6,  6,  6,  6,  6, // 552-559\n     6,  6,  6,  6,  6,  6,  6,  6, // 560-567\n     6,  6,  6,  6,  6,  6,  6,  6, // 568-575\n     6,  6,  6,  6,  6,  6,  6,  6, // 576-583\n     6,  6,  6,  6,  6,  6,  6,  6, // 584-591\n     6,  6,  6,  6,  6,  6,  6,  6, // 592-599\n     6,  6,  6,  6,  6,  6,  6,  6, // 600-607\n     6,  6,  6,  6,  6,  6,  6,  6, // 608-615\n     6,  6,  6,  6,  6,  6,  6,  6, // 616-623\n     6,  6,  6,  6,  6,  6,  6,  6, // 624-631\n     6,  6,  6,  6,  6,  6,  6,  6, // 632-639\n     6,  6,  6,  6,  6,  6,  6,  6, // 640-647\n     6,  6,  6,  6,  6,  6,  6,  6, // 648-655\n     6, 14, 14,  6, 14, 14,  1,  6, // 656-663\n     1,  6,  6,  1,  1,  6,  6,  1, // 664-671\n     1,  6,  6,  6,  6,  6,  6,  6, // 672-679\n     6,  6,  6,  6,  6,  6,  6,  6, // 680-687\n     6,  6,  6,  6,  6,  6,  6,  6, // 688-695\n     6,  6,  6,  6,  6,  6,  6,  6, // 696-703\n     6,  6,  6,  6,  6,  6,  6,  6, // 704-711\n     6,  6,  6,  6,  6,  6,  6,  6, // 712-719\n     6,  5,  5,  5,  5,  5,  5,  5, // 720-727\n     5,  5,  5,  5,  5,  5,  5,  5, // 728-735\n     5,  5,  5,  5,  5,  5,  5,  5, // 736-743\n     5,  5,  5,  5,  5,  5,  5,  5, // 744-751\n     5,  5,  5,  5,  5,  5,  5,  5, // 752-759\n     5,  5,  5,  5,  5,  5,  5,  5, // 760-767\n     5,  5,  5,  5,  5,  5,  5,  5, // 768-775\n     5,  5,  5,  5,  5,  5,  5,  5, // 776-783\n     5,  5,  5,  5,  5,  5,  5,  5, // 784-791\n     5,  5,  5,  5,  5,  5,  5,  5, // 792-799\n     5,  5,  5,  5,  5,  5,  5,  5, // 800-807\n     5,  5,  5,  5,  5,  5,  5,  5, // 808-815\n     5,  5,  5,  5,  5,  5, 13, 13, // 816-823\n    13, 13,  1,  1,  5,  5,  5,  5, // 824-831\n     5,  1,  1,  5,  5,  5,  5,  1, // 832-839\n     1,  5,  5,  5,  5,  5,  5,  5, // 840-847\n     5,  5,  5,  5,  5,  5,  5,  5, // 848-855\n     5,  5,  5,  5,  5,  5,  5,  5, // 856-863\n     5,  5,  5,  5,  5,  5,  5,  5, // 864-871\n     5,  5,  5,  5,  5,  5, 13, 13, // 872-879\n     5,  4,  4,  4,  4,  4,  4,  4, // 880-887\n     4,  4,  4,  4,  4,  4,  4,  4, // 888-895\n     4,  4,  4,  4,  4,  4,  4,  4, // 896-903\n     4,  4,  4,  4,  4,  4,  4,  4, // 904-911\n     4,  4, 12, 12,  4,  4,  4,  4, // 912-919\n     4,  4,  4,  4,  4,  4,  4,  4, // 920-927\n     4,  4,  4,  4,  4,  4,  4,  4, // 928-935\n     4,  4,  4,  4,  4,  4,  4,  4, // 936-943\n     4,  4,  4,  4,  4,  4,  4,  4, // 944-951\n     4,  4,  4,  4,  4,  4,  4,  4, // 952-959\n     4,  4,  4,  4,  4,  4,  4,  4, // 960-967\n     4,  4,  4,  4,  4,  4,  4,  4, // 968-975\n     4,  4,  4,  4,  4,  4,  4,  4, // 976-983\n     4,  4,  4,  4,  4,  4,  4,  4, // 984-991\n     4,  4,  4,  4,  4,  4,  4,  4, // 992-999\n     4,  4,  4,  4,  4,  4,  4,  4, // 1000-1007\n     4,  4,  4,  4,  4,  4,  4,  4, // 1008-1015\n     4,  4,  3,  4, 12, 12,  4,  4, // 1016-1023\n     3,  3,  3, 11, 11,  3,  3,  3, // 1024-1031\n     3,  3,  3,  3,  3,  3,  3,  3, // 1032-1039\n     3,  3,  3,  3,  3,  3,  3,  3, // 1040-1047\n     3,  3,  3,  3,  3,  3,  3,  3, // 1048-1055\n     3,  3,  3,  3,  3,  3,  3,  3, // 1056-1063\n     3,  3,  3,  3,  3,  3,  3,  3, // 1064-1071\n     3,  3,  3,  3,  3,  3,  3,  3, // 1072-1079\n     3,  3,  3,  3,  3,  3,  3,  3, // 1080-1087\n     3,  3,  3,  3,  3,  3,  3,  3, // 1088-1095\n     3,  3,  3,  3,  3,  3,  3,  3, // 1096-1103\n     3,  3,  3,  3,  3,  3,  3,  3, // 1104-1111\n     3,  3,  3,  3,  3,  3,  3,  3, // 1112-1119\n     3,  3,  3,  3,  3,  3,  3,  3, // 1120-1127\n     3,  3,  3,  3,  3,  3,  3,  3, // 1128-1135\n     3,  3,  3,  3,  3,  3,  3,  3, // 1136-1143\n     3,  3,  3,  3, 11,  3,  3,  3, // 1144-1151\n     3,  3,  3,  3,  3,  3,  3,  2, // 1152-1159\n     3, 11,  3,  3,  3,  3,  3,  3, // 1160-1167\n     2,  2,  2,  2,  2,  2,  2,  2, // 1168-1175\n     2,  2,  2,  2,  2,  2,  2,  2, // 1176-1183\n     2,  2,  2,  2,  2,  2,  2,  2, // 1184-1191\n     2,  2,  2,  2,  2,  2,  2,  2, // 1192-1199\n     2,  2,  2,  2,  2,  2,  2,  2, // 1200-1207\n     2,  2,  2,  2,  2,  2,  2,  2, // 1208-1215\n     2,  2,  2,  2,  2,  2,  2,  2, // 1216-1223\n     2,  2,  2,  2,  2,  2,  2,  2, // 1224-1231\n     2,  2,  2,  2,  2,  2,  2,  2, // 1232-1239\n    10, 10,  2, 10,  2,  2,  2,  2, // 1240-1247\n     2,  2,  2, 10,  2,  2,  2,  2, // 1248-1255\n     2,  2,  2,  2,  2,  2,  2,  2, // 1256-1263\n     2,  2,  2,  2,  2,  2,  2,  2, // 1264-1271\n     2,  2,  2,  2,  2,  2,  2,  2, // 1272-1279\n     2,  2,  2,  2,  2,  2,  2,  2, // 1280-1287\n     2,  2,  2,  2,  2,  2,  2,  2, // 1288-1295\n     2,  2,  2,  2,  2,  2,  2,  2, // 1296-1303\n     2,  2,  2,  2,  2,  2,  2,  2, // 1304-1311\n     2,  2,  2,  2,  2,  2,  2,  2, // 1312-1319\n     2,  2,  2,  2,  2,  2,  2,  2, // 1320-1327\n     2,  2,  2,  2,  2,  2,  2,  2, // 1328-1335\n     2,  2,  2,  2,  2,  2,  2,  2, // 1336-1343\n     2,  2,  2,  2,  2,  2,  2,  2, // 1344-1351\n     2,  2,  2,  2,  2,  2,  2,  2, // 1352-1359\n     2,  2,  2,  2,  2,  2,  2,  2, // 1360-1367\n     2,  2,  2,  2,  2,  2,  2,  2, // 1368-1375\n     2,  2,  2,  2,  2,  2,  2,  2, // 1376-1383\n     2,  2,  2,  2,  2,  2,  2,  2, // 1384-1391\n     2,  2,  2,  2,  2,  2,  2,  2, // 1392-1399\n     2,  2,  2,  2,  2,  2,  2,  2, // 1400-1407\n     2,  2,  2,  2,  2,  2,  2,  2, // 1408-1415\n     2,  2,  2,  2,  2,  2,  2,  2, // 1416-1423\n     2,  2,  2,  2,  2,  2,  2,  2, // 1424-1431\n     2,  2,  2,  2,  2,  2,  2,  2, // 1432-1439\n     2,  2,  2,  2,  2,  2,  2,  2, // 1440-1447\n     2,  2,  2,  2,  2,  2,  2,  2, // 1448-1455\n     2,  2,  2,  2,  2,  2,  2,  2, // 1456-1463\n     2,  2,  2,  2,  2,  2,  2,  2, // 1464-1471\n     2,  2,  2,  2,  2,  2,  2,  2, // 1472-1479\n     2,  2,  2,  2,  2,  2,  2,  2, // 1480-1487\n     2,  2,  2,  2,  2,  2,  2,  2, // 1488-1495\n     2,  2,  2,  2,  2,  2,  2,  2, // 1496-1503\n     2,  2,  2,  2,  2,  2,  2,  2, // 1504-1511\n     2,  2,  2,  2,  2,  2,  2,  2, // 1512-1519\n     2,  2,  1, 10, 10,  2,  2,  2, // 1520-1527\n    10, 10,  2,  1,  1,  1,  1,  1, // 1528-1535\n     1,  1,  1,  1,  1,  1,  1,  1, // 1536-1543\n     1,  1,  1,  1,  1,  1,  1,  1, // 1544-1551\n     1,  1,  1,  1,  1,  1,  1,  1, // 1552-1559\n     1,  1,  1,  1,  1,  1,  1,  1, // 1560-1567\n     1,  1,  1,  1,  1,  1,  1,  1, // 1568-1575\n     1,  1,  1,  1,  1,  1,  1,  1, // 1576-1583\n     1,  1,  1,  1,  1,  1,  1,  1, // 1584-1591\n     1,  1,  1,  1,  1,  1,  1,  1, // 1592-1599\n     1,  1,  1,  1,  1,  1,  1,  1, // 1600-1607\n     1,  1,  1,  1,  1,  1,  1,  1, // 1608-1615\n     1,  1,  1,  1,  1,  1,  1,  1, // 1616-1623\n     1,  1,  1,  1,  1,  1,  1,  1, // 1624-1631\n     1,  1,  1,  1,  1,  1,  1,  1, // 1632-1639\n     1,  1, 11,  1,  1,  1,  1,  1, // 1640-1647\n    11,  1,  1,  1,  1,  1,  1,  1, // 1648-1655\n    11,  1,  1,  1,  1, 11,  1,  1, // 1656-1663\n    11,  1,  1,  1,  1,  1, 17, 17, // 1664-1671\n     1,  1,  1,  1,  1, 11,  1, 12, // 1672-1679\n    12,  1,  1,  1,  1,  1,  1,  1, // 1680-1687\n     1,  1,  1,  1,  1,  1,  1,  1, // 1688-1695\n     1,  1,  1,  1,  1,  1,  1,  1, // 1696-1703\n     1,  1,  1,  1,  1,  1,  1,  1, // 1704-1711\n     1,  1,  1,  1,  1,  1,  1,  1, // 1712-1719\n     1,  1,  1,  1,  1,  1,  1,  1, // 1720-1727\n     1,  1,  1,  1,  1,  1,  1,  1, // 1728-1735\n     1,  1,  1,  1,  1,  1,  1,  1, // 1736-1743\n     1,  1,  1,  1,  1,  1,  1,  1, // 1744-1751\n     1,  1,  1,  1,  1,  1,  1,  1, // 1752-1759\n     1,  1,  1,  1,  1,  1,  1,  1, // 1760-1767\n     1,  1,  1,  1,  1,  1,  1,  1, // 1768-1775\n     1,  1,  1,  1,  1,  1,  1,  1, // 1776-1783\n     1,  1,  1,  1,  1,  1,  1,  1, // 1784-1791\n     1,  1,  1,  1,  1,  1,  1,  1, // 1792-1799\n     1,  1,  1,  1,  1,  1,  1,  1, // 1800-1807\n     1,  1,  1,  1,  1,  1,  1,  1, // 1808-1815\n     1,  1,  1,  1,  1,  1,  1,  1, // 1816-1823\n     1,  1,  1,  1,  1,  1,  1,  1, // 1824-1831\n     1,  1,  1,  1,  1,  1,  1,  1, // 1832-1839\n     1,  1,  1,  1,  1,  1,  1,  1, // 1840-1847\n    12, 12,  1,  1,  1,  1,  1,  1, // 1848-1855\n     1,  1,  1,  1,  1,  1,  1,  1, // 1856-1863\n     1,  1,  1,  1,  1,  1,  1,  1, // 1864-1871\n     1,  1, 10, 10,  1,  1,  1,  1, // 1872-1879\n     1,  1,  1,  1,  1,  1,  1,  1, // 1880-1887\n     1,  1,  1,  1,  1,  1,  1, 10, // 1888-1895\n    10,  1,  1,  1,  1,  1,  1,  1, // 1896-1903\n     1,  1,  1,  1,  1,  1,  1,  1, // 1904-1911\n     1,  1,  1,  1,  1,  1,  1,  1, // 1912-1919\n     1,  1,  1,  1,  1,  1,  1,  1, // 1920-1927\n     1,  1,  1,  1,  1,  1,  1,  1, // 1928-1935\n     1, 14,  1, 14,  1,  1,  1,  1, // 1936-1943\n     1, 10, 10,  1,  1,  1,  1,  1, // 1944-1951\n     1, 10, 10,  1,  1, 16,  1,  1, // 1952-1959\n     1, 16,  1,  1,  1,  1,  1,  1, // 1960-1967\n    13,  1, 13,  1,  1, 15, 15,  1, // 1968-1975\n     1,  6,  6,  6,  6,  6,  6,  6, // 1976-1983\n     6,  6,  6,  6,  1,  6,  6,  6, // 1984-1991\n     6,  6,  6,  6,  1,  1,  1,  1, // 1992-1999\n     1,  1,  1,  1,  1,  1,  1,  1, // 2000-2007\n     1,  1,  1,  1,  1,  1,  1,  1, // 2008-2015\n     1,  1,  1,  1,  1,  1,  1,  1, // 2016-2023\n     1,  1,  1,  1,  1,  1,  1,  1, // 2024-2031\n     1,  1,  1,  1,  1,  1,  1,  1, // 2032-2039\n     6,  6,  6,  6,  6,  6,  6,  6, // 2040-2047\n     6,  6,  6,  6,  6,  6,  6,  1, // 2048-2055\n     6,  6,  6,  6,  6,  1,  1,  1, // 2056-2063\n     1,  1,  1,  1,  1,  1,  1,  1, // 2064-2071\n     1,  1,  1,  1,  1,  1,  1,  1, // 2072-2079\n     1,  1,  1,  1,  1,  1,  1,  1, // 2080-2087\n     1,  1,  1,  1,  1,  1,  5,  5, // 2088-2095\n     5,  5,  5,  5,  8,  8,  8,  8, // 2096-2103\n     8,  8,  6,  6,  6,  6,  6,  6, // 2104-2111\n     7,  7,  7,  7,  7,  7,  5,  5, // 2112-2119\n     5,  5,  5,  5,  8,  8,  8,  8, // 2120-2127\n     8,  8,  6,  6,  6,  6,  6,  6, // 2128-2135\n     7,  7,  7,  7,  7,  7,  3,  3, // 2136-2143\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/2/1/model.inc.c",
    "content": "// 0x0703C040 - 0x0703C058\nstatic const Lights1 inside_castle_seg7_lights_0703C040 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0xcc, 0xcc, 0xcc, 0x28, 0x28, 0x28\n);\n\n// 0x0703C058 - 0x0703C070\nstatic const Lights1 inside_castle_seg7_lights_0703C058 = gdSPDefLights1(\n    0x5f, 0x5f, 0x5f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0703C070 - 0x0703C160\nstatic const Vtx inside_castle_seg7_vertex_0703C070[] = {\n    {{{ -1381,   1024,   2970}, 0, {     0,   3032}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{  -844,   1178,   2816}, 0, {   734,    352}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{  -665,   1024,   2970}, 0, {     0,   -544}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{ -1202,   1178,   2816}, 0, {   734,   2138}, {0x52, 0xa0, 0x00, 0xff}}},\n    {{{ -1381,   1024,   2970}, 0, {     0,   3032}, {0x52, 0xa0, 0x00, 0xff}}},\n    {{{ -1381,   1024,   2560}, 0, {  2012,   3032}, {0x52, 0xa0, 0x00, 0xff}}},\n    {{{ -1202,   1178,   2816}, 0, {   734,   2138}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{ -1202,   1178,   2560}, 0, {  2012,   2138}, {0x52, 0xa0, 0x00, 0xff}}},\n    {{{  -844,   1178,   2816}, 0, {   734,    352}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1202,   1178,   2816}, 0, {   734,   2138}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -844,   1178,   2560}, 0, {  2012,    352}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1202,   1178,   2560}, 0, {  2012,   2138}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -665,   1024,   2970}, 0, {     0,   -544}, {0xae, 0xa0, 0x00, 0xff}}},\n    {{{  -844,   1178,   2816}, 0, {   734,    352}, {0xae, 0xa0, 0x00, 0xff}}},\n    {{{  -844,   1178,   2560}, 0, {  2012,    352}, {0xae, 0xa0, 0x00, 0xff}}},\n};\n\n// 0x0703C160 - 0x0703C260\nstatic const Vtx inside_castle_seg7_vertex_0703C160[] = {\n    {{{ -1381,   1024,   2560}, 0, {  2012,   3032}, {0x43, 0xb2, 0x48, 0xff}}},\n    {{{ -1279,    922,   2355}, 0, {  3034,   2522}, {0x43, 0xb2, 0x48, 0xff}}},\n    {{{ -1202,   1178,   2560}, 0, {  2012,   2138}, {0x43, 0xb2, 0x48, 0xff}}},\n    {{{ -1177,   1024,   2355}, 0, {  3034,   2010}, {0x00, 0x9b, 0x4c, 0xff}}},\n    {{{  -844,   1178,   2560}, 0, {  2012,    352}, {0x00, 0x9b, 0x4c, 0xff}}},\n    {{{ -1202,   1178,   2560}, 0, {  2012,   2138}, {0x00, 0x9b, 0x4c, 0xff}}},\n    {{{ -1279,    922,   2355}, 0, {  3034,   2522}, {0x4c, 0xb4, 0x42, 0xff}}},\n    {{{ -1177,   1024,   2355}, 0, {  3034,   2010}, {0x4c, 0xb4, 0x42, 0xff}}},\n    {{{ -1202,   1178,   2560}, 0, {  2012,   2138}, {0x4c, 0xb4, 0x42, 0xff}}},\n    {{{  -869,   1024,   2355}, 0, {  3034,    478}, {0x00, 0x9b, 0x4c, 0xff}}},\n    {{{  -665,   1024,   2970}, 0, {     0,   -544}, {0xae, 0xa0, 0x00, 0xff}}},\n    {{{  -844,   1178,   2560}, 0, {  2012,    352}, {0xae, 0xa0, 0x00, 0xff}}},\n    {{{  -665,   1024,   2560}, 0, {  2012,   -544}, {0xae, 0xa0, 0x00, 0xff}}},\n    {{{  -869,   1024,   2355}, 0, {  3034,    478}, {0xb4, 0xb4, 0x42, 0xff}}},\n    {{{  -767,    922,   2355}, 0, {  3034,      0}, {0xb4, 0xb4, 0x42, 0xff}}},\n    {{{  -844,   1178,   2560}, 0, {  2012,    352}, {0xb4, 0xb4, 0x42, 0xff}}},\n};\n\n// 0x0703C260 - 0x0703C350\nstatic const Vtx inside_castle_seg7_vertex_0703C260[] = {\n    {{{  -767,    922,   2355}, 0, {  3034,      0}, {0xbd, 0xb2, 0x48, 0xff}}},\n    {{{  -665,   1024,   2560}, 0, {  2012,   -544}, {0xbd, 0xb2, 0x48, 0xff}}},\n    {{{  -844,   1178,   2560}, 0, {  2012,    352}, {0xbd, 0xb2, 0x48, 0xff}}},\n    {{{ -1279,    922,   2355}, 0, {  3034,   2522}, {0x59, 0xa7, 0xf2, 0xff}}},\n    {{{ -1177,   1126,   1741}, 0, {  6100,   2010}, {0x59, 0xa7, 0xf2, 0xff}}},\n    {{{ -1177,   1024,   2355}, 0, {  3034,   2010}, {0x59, 0xa7, 0xf2, 0xff}}},\n    {{{ -1279,   1024,   1741}, 0, {  6100,   2522}, {0x59, 0xa7, 0xf2, 0xff}}},\n    {{{ -1177,   1024,   2355}, 0, {  3034,   2010}, {0x00, 0x83, 0xec, 0xff}}},\n    {{{ -1177,   1126,   1741}, 0, {  6100,   2010}, {0x00, 0x83, 0xec, 0xff}}},\n    {{{  -869,   1126,   1741}, 0, {  6100,    480}, {0x00, 0x83, 0xec, 0xff}}},\n    {{{  -869,   1024,   2355}, 0, {  3034,    478}, {0x00, 0x83, 0xec, 0xff}}},\n    {{{  -869,   1024,   2355}, 0, {  3034,    478}, {0xa7, 0xa7, 0xf2, 0xff}}},\n    {{{  -869,   1126,   1741}, 0, {  6100,    480}, {0xa7, 0xa7, 0xf2, 0xff}}},\n    {{{  -767,   1024,   1741}, 0, {  6100,      0}, {0xa7, 0xa7, 0xf2, 0xff}}},\n    {{{  -767,    922,   2355}, 0, {  3034,      0}, {0xa7, 0xa7, 0xf2, 0xff}}},\n};\n\n// 0x0703C350 - 0x0703C3F0\nstatic const Vtx inside_castle_seg7_vertex_0703C350[] = {\n    {{{ -1526,   1818,   2253}, 0, { -2796,  -4120}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1791,   1818,   1907}, 0, { -4118,  -2396}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1791,   1818,   1574}, 0, { -4118,   -734}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -767,   1818,   2253}, 0, {   990,  -4120}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1526,   1818,   1229}, 0, { -2796,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -767,   1818,   1229}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1381,   1152,   1229}, 0, { -3096,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -767,   1152,   1229}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -767,   1152,   1741}, 0, {     0,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1381,   1152,   1741}, 0, { -3096,  -1566}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0703C3F0 - 0x0703C4D0\nstatic const Vtx inside_castle_seg7_vertex_0703C3F0[] = {\n    {{{  -460,    512,   3021}, 0, {  2012,   1244}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1586,    512,   3021}, 0, { -3606,   1244}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1586,    512,   3533}, 0, { -3606,   3798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,    512,   3533}, 0, {  2012,   3798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -665,    512,   2560}, 0, { -1052,  -2586}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,    512,   2355}, 0, { -2074,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,    512,   2355}, 0, { -2074,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1381,    512,   2560}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1381,    512,   2970}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -665,    512,   2970}, 0, {   990,  -2586}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    512,   2970}, 0, {   990,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    512,   2970}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,    512,   3021}, 0, {  1246,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,    512,   3021}, 0, {  1246,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0703C4D0 - 0x0703C530\nstatic const Vtx inside_castle_seg7_vertex_0703C4D0[] = {\n    {{{  -767,    512,   2355}, 0, { -2074,  -2076}, {0x00, 0x7d, 0x14, 0xff}}},\n    {{{  -767,    614,   1741}, 0, { -5140,  -2076}, {0x00, 0x7d, 0x14, 0xff}}},\n    {{{ -1207,    602,   1813}, 0, { -4778,    118}, {0x00, 0x7d, 0x14, 0xff}}},\n    {{{ -1177,    614,   1741}, 0, { -5140,      0}, {0x00, 0x7d, 0x14, 0xff}}},\n    {{{ -1279,    512,   2355}, 0, { -2074,    480}, {0x00, 0x7d, 0x14, 0xff}}},\n    {{{ -1279,    597,   1843}, 0, { -4628,    480}, {0x00, 0x7d, 0x14, 0xff}}},\n};\n\n// 0x0703C530 - 0x0703C620\nstatic const Vtx inside_castle_seg7_vertex_0703C530[] = {\n    {{{ -1279,   1203,   1741}, 0, { -1052,    990}, {0xe0, 0x00, 0x7a, 0xff}}},\n    {{{  -784,   1178,   1873}, 0, {   268,  -3946}, {0xe0, 0x00, 0x7a, 0xff}}},\n    {{{  -784,   1203,   1873}, 0, {   268,  -3946}, {0xe0, 0x00, 0x7a, 0xff}}},\n    {{{ -1279,   1178,   1741}, 0, { -1052,    990}, {0xe0, 0x00, 0x7a, 0xff}}},\n    {{{ -1279,   1178,   1741}, 0, { -1052,    990}, {0xc1, 0x00, 0x6d, 0xff}}},\n    {{{  -836,   1152,   1997}, 0, {  1500,  -3436}, {0xc1, 0x00, 0x6d, 0xff}}},\n    {{{  -836,   1178,   1997}, 0, {  1500,  -3436}, {0xc1, 0x00, 0x6d, 0xff}}},\n    {{{ -1279,   1152,   1741}, 0, { -1052,    990}, {0xc1, 0x00, 0x6d, 0xff}}},\n    {{{  -836,   1178,   1997}, 0, {  1500,  -3436}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -784,   1178,   1873}, 0, {   268,  -3946}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,   1178,   1741}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,   1152,   1741}, 0, { -1052,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -917,   1126,   2103}, 0, {  2560,  -2624}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -917,   1152,   2103}, 0, {  2560,  -2624}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1279,   1126,   1741}, 0, { -1052,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x0703C620 - 0x0703C720\nstatic const Vtx inside_castle_seg7_vertex_0703C620[] = {\n    {{{  -917,   1152,   2103}, 0, {  2560,  -2624}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -836,   1152,   1997}, 0, {  1500,  -3436}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,   1152,   1741}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,   1126,   1741}, 0, { -1052,    990}, {0x93, 0x00, 0x3f, 0xff}}},\n    {{{ -1279,   1101,   1741}, 0, { -1052,    990}, {0x93, 0x00, 0x3f, 0xff}}},\n    {{{ -1023,   1101,   2184}, 0, {  3372,  -1564}, {0x93, 0x00, 0x3f, 0xff}}},\n    {{{ -1023,   1126,   2184}, 0, {  3372,  -1564}, {0x93, 0x00, 0x3f, 0xff}}},\n    {{{ -1279,   1075,   2253}, 0, {  4056,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1146,   1075,   2235}, 0, {  3882,   -332}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,   1075,   1741}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,   1126,   2184}, 0, {  3372,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -917,   1126,   2103}, 0, {  2560,  -2624}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,   1126,   1741}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,   1101,   1741}, 0, { -1052,    990}, {0x86, 0x00, 0x21, 0xff}}},\n    {{{ -1279,   1075,   1741}, 0, { -1052,    990}, {0x86, 0x00, 0x21, 0xff}}},\n    {{{ -1146,   1075,   2235}, 0, {  3882,   -332}, {0x86, 0x00, 0x21, 0xff}}},\n};\n\n// 0x0703C720 - 0x0703C800\nstatic const Vtx inside_castle_seg7_vertex_0703C720[] = {\n    {{{ -1279,   1101,   1741}, 0, { -1052,    990}, {0x86, 0x00, 0x21, 0xff}}},\n    {{{ -1146,   1075,   2235}, 0, {  3882,   -332}, {0x86, 0x00, 0x21, 0xff}}},\n    {{{ -1146,   1101,   2235}, 0, {  3882,   -332}, {0x86, 0x00, 0x21, 0xff}}},\n    {{{ -1146,   1101,   2235}, 0, {  3882,   -332}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,   1101,   2184}, 0, {  3372,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,   1101,   1741}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,   1075,   1741}, 0, { -1052,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1279,   1050,   1741}, 0, { -1052,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1279,   1050,   2253}, 0, {  4056,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1279,   1075,   2253}, 0, {  4056,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1279,   1050,   1741}, 0, { -1052,    990}, {0x86, 0x00, 0xdf, 0xff}}},\n    {{{ -1412,   1024,   2235}, 0, {  3882,   2310}, {0x86, 0x00, 0xdf, 0xff}}},\n    {{{ -1412,   1050,   2235}, 0, {  3882,   2310}, {0x86, 0x00, 0xdf, 0xff}}},\n    {{{ -1279,   1024,   1741}, 0, { -1052,    990}, {0x86, 0x00, 0xdf, 0xff}}},\n};\n\n// 0x0703C800 - 0x0703C8E0\nstatic const Vtx inside_castle_seg7_vertex_0703C800[] = {\n    {{{ -1279,   1050,   1741}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1412,   1050,   2235}, 0, {  3882,   2310}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,   1050,   2253}, 0, {  4056,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,   1024,   1741}, 0, { -1052,    990}, {0x93, 0x00, 0xc1, 0xff}}},\n    {{{ -1535,    998,   2184}, 0, {  3372,   3542}, {0x93, 0x00, 0xc1, 0xff}}},\n    {{{ -1535,   1024,   2184}, 0, {  3372,   3542}, {0x93, 0x00, 0xc1, 0xff}}},\n    {{{ -1279,    998,   1741}, 0, { -1052,    990}, {0x93, 0x00, 0xc1, 0xff}}},\n    {{{ -1279,   1024,   1741}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,   1024,   2184}, 0, {  3372,   3542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1412,   1024,   2235}, 0, {  3882,   2310}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,    998,   1741}, 0, { -1052,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1641,    973,   2103}, 0, {  2560,   4602}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1641,    998,   2103}, 0, {  2560,   4602}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1279,    973,   1741}, 0, { -1052,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0703C8E0 - 0x0703C9E0\nstatic const Vtx inside_castle_seg7_vertex_0703C8E0[] = {\n    {{{ -1279,    947,   1741}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1774,    947,   1873}, 0, {   268,   5924}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1722,    947,   1997}, 0, {  1500,   5414}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,    998,   1741}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1641,    998,   2103}, 0, {  2560,   4602}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,    998,   2184}, 0, {  3372,   3542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,    973,   1741}, 0, { -1052,    990}, {0xc1, 0x00, 0x93, 0xff}}},\n    {{{ -1722,    947,   1997}, 0, {  1500,   5414}, {0xc1, 0x00, 0x93, 0xff}}},\n    {{{ -1722,    973,   1997}, 0, {  1500,   5414}, {0xc1, 0x00, 0x93, 0xff}}},\n    {{{ -1279,    947,   1741}, 0, { -1052,    990}, {0xc1, 0x00, 0x93, 0xff}}},\n    {{{ -1279,    973,   1741}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1722,    973,   1997}, 0, {  1500,   5414}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1641,    973,   2103}, 0, {  2560,   4602}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,    947,   1741}, 0, { -1052,    990}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{ -1774,    922,   1873}, 0, {   268,   5924}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{ -1774,    947,   1873}, 0, {   268,   5924}, {0xe0, 0x00, 0x86, 0xff}}},\n};\n\n// 0x0703C9E0 - 0x0703CAC0\nstatic const Vtx inside_castle_seg7_vertex_0703C9E0[] = {\n    {{{ -1279,    947,   1741}, 0, { -1052,    990}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{ -1279,    922,   1741}, 0, { -1052,    990}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{ -1774,    922,   1873}, 0, {   268,   5924}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{ -1279,    922,   1741}, 0, { -1052,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1791,    896,   1741}, 0, { -1052,   6098}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1791,    922,   1741}, 0, { -1052,   6098}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1279,    896,   1741}, 0, { -1052,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1774,    922,   1873}, 0, {   268,   5924}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,    922,   1741}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1791,    922,   1741}, 0, { -1052,   6098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,    896,   1741}, 0, { -1052,    990}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{ -1774,    870,   1608}, 0, { -2374,   5924}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{ -1774,    896,   1608}, 0, { -2374,   5924}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{ -1279,    870,   1741}, 0, { -1052,    990}, {0x20, 0x00, 0x86, 0xff}}},\n};\n\n// 0x0703CAC0 - 0x0703CBC0\nstatic const Vtx inside_castle_seg7_vertex_0703CAC0[] = {\n    {{{ -1791,    896,   1741}, 0, { -1052,   6098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,    896,   1741}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1774,    896,   1608}, 0, { -2374,   5924}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,    870,   1741}, 0, { -1052,    990}, {0x3f, 0x00, 0x93, 0xff}}},\n    {{{ -1722,    845,   1485}, 0, { -3606,   5414}, {0x3f, 0x00, 0x93, 0xff}}},\n    {{{ -1722,    870,   1485}, 0, { -3606,   5414}, {0x3f, 0x00, 0x93, 0xff}}},\n    {{{ -1279,    845,   1741}, 0, { -1052,    990}, {0x3f, 0x00, 0x93, 0xff}}},\n    {{{ -1279,    819,   1741}, 0, { -1052,    990}, {0x6e, 0x00, 0xc1, 0xff}}},\n    {{{ -1279,    794,   1741}, 0, { -1052,    990}, {0x6e, 0x00, 0xc1, 0xff}}},\n    {{{ -1535,    794,   1297}, 0, { -5478,   3542}, {0x6e, 0x00, 0xc1, 0xff}}},\n    {{{ -1722,    870,   1485}, 0, { -3606,   5414}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1774,    870,   1608}, 0, { -2374,   5924}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,    870,   1741}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1641,    819,   1379}, 0, { -4666,   4602}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1279,    845,   1741}, 0, { -1052,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1279,    819,   1741}, 0, { -1052,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0703CBC0 - 0x0703CCC0\nstatic const Vtx inside_castle_seg7_vertex_0703CBC0[] = {\n    {{{ -1641,    819,   1379}, 0, { -4666,   4602}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1641,    845,   1379}, 0, { -4666,   4602}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1279,    845,   1741}, 0, { -1052,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1641,    845,   1379}, 0, { -4666,   4602}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1722,    845,   1485}, 0, { -3606,   5414}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,    845,   1741}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,    819,   1297}, 0, { -5478,   3542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1641,    819,   1379}, 0, { -4666,   4602}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,    819,   1741}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,    819,   1741}, 0, { -1052,    990}, {0x6e, 0x00, 0xc1, 0xff}}},\n    {{{ -1535,    794,   1297}, 0, { -5478,   3542}, {0x6e, 0x00, 0xc1, 0xff}}},\n    {{{ -1535,    819,   1297}, 0, { -5478,   3542}, {0x6e, 0x00, 0xc1, 0xff}}},\n    {{{ -1279,    794,   1741}, 0, { -1052,    990}, {0x7a, 0x00, 0xe0, 0xff}}},\n    {{{ -1279,    768,   1741}, 0, { -1052,    990}, {0x7a, 0x00, 0xe0, 0xff}}},\n    {{{ -1412,    768,   1246}, 0, { -5988,   2310}, {0x7a, 0x00, 0xe0, 0xff}}},\n    {{{ -1412,    794,   1246}, 0, { -5988,   2310}, {0x7a, 0x00, 0xe0, 0xff}}},\n};\n\n// 0x0703CCC0 - 0x0703CDA0\nstatic const Vtx inside_castle_seg7_vertex_0703CCC0[] = {\n    {{{ -1412,    794,   1246}, 0, { -5988,   2310}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,    794,   1297}, 0, { -5478,   3542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,    794,   1741}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,    768,   1741}, 0, { -1052,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,    742,   1229}, 0, { -6162,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,    768,   1229}, 0, { -6162,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,    742,   1741}, 0, { -1052,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,    768,   1229}, 0, { -6162,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1412,    768,   1246}, 0, { -5988,   2310}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,    768,   1741}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,    742,   1741}, 0, { -1052,    990}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{ -1146,    717,   1246}, 0, { -5988,   -332}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{ -1146,    742,   1246}, 0, { -5988,   -332}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{ -1279,    717,   1741}, 0, { -1052,    990}, {0x7a, 0x00, 0x20, 0xff}}},\n};\n\n// 0x0703CDA0 - 0x0703CEA0\nstatic const Vtx inside_castle_seg7_vertex_0703CDA0[] = {\n    {{{ -1279,    691,   1741}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -917,    691,   1379}, 0, { -4666,  -2624}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,    691,   1297}, 0, { -5478,  -1566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,    742,   1741}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1146,    742,   1246}, 0, { -5988,   -332}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,    742,   1229}, 0, { -6162,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,    717,   1741}, 0, { -1052,    990}, {0x6e, 0x00, 0x3f, 0xff}}},\n    {{{ -1279,    691,   1741}, 0, { -1052,    990}, {0x6e, 0x00, 0x3f, 0xff}}},\n    {{{ -1023,    691,   1297}, 0, { -5478,  -1566}, {0x6e, 0x00, 0x3f, 0xff}}},\n    {{{ -1023,    717,   1297}, 0, { -5478,  -1566}, {0x6e, 0x00, 0x3f, 0xff}}},\n    {{{ -1279,    717,   1741}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,    717,   1297}, 0, { -5478,  -1566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1146,    717,   1246}, 0, { -5988,   -332}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,    691,   1741}, 0, { -1052,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -917,    666,   1379}, 0, { -4666,  -2624}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -917,    691,   1379}, 0, { -4666,  -2624}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x0703CEA0 - 0x0703CFA0\nstatic const Vtx inside_castle_seg7_vertex_0703CEA0[] = {\n    {{{ -1279,    691,   1741}, 0, { -1052,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1279,    666,   1741}, 0, { -1052,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -917,    666,   1379}, 0, { -4666,  -2624}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1279,    640,   1741}, 0, { -1052,    990}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{  -836,    666,   1485}, 0, { -3606,  -3436}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{ -1279,    666,   1741}, 0, { -1052,    990}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{ -1279,    666,   1741}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -836,    666,   1485}, 0, { -3606,  -3436}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -917,    666,   1379}, 0, { -4666,  -2624}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -836,    640,   1485}, 0, { -3606,  -3436}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{ -1279,    640,   1741}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -784,    640,   1608}, 0, { -2374,  -3946}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -836,    640,   1485}, 0, { -3606,  -3436}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,    640,   1741}, 0, { -1052,    990}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{ -1279,    614,   1741}, 0, { -1052,    990}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  -784,    614,   1608}, 0, { -2374,  -3946}, {0x20, 0x00, 0x7a, 0xff}}},\n};\n\n// 0x0703CFA0 - 0x0703D0A0\nstatic const Vtx inside_castle_seg7_vertex_0703CFA0[] = {\n    {{{ -1279,    640,   1741}, 0, { -1052,    990}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  -784,    614,   1608}, 0, { -2374,  -3946}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  -784,    640,   1608}, 0, { -2374,  -3946}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  -784,    614,   1608}, 0, { -2374,  -3946}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,    614,   1741}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,    614,   1741}, 0, { -1052,  -4120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,   1203,   1741}, 0, {   990,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,   1203,   1741}, 0, {   990,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -784,   1203,   1873}, 0, {  -330,   2858}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,   1203,   1229}, 0, { -1052,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,   1203,   1229}, 0, {   990,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,   1203,   1741}, 0, {   990,  -2842}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,   1203,   1741}, 0, { -1052,  -2842}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -921,   1203,   1178}, 0, {  -286,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1074,   1203,   1178}, 0, {   478,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1074,   1203,   1229}, 0, {   478,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0703D0A0 - 0x0703D0D0\nstatic const Vtx inside_castle_seg7_vertex_0703D0A0[] = {\n    {{{  -921,   1203,   1178}, 0, {  -286,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1074,   1203,   1229}, 0, {   478,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -921,   1203,   1229}, 0, {  -286,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0703D0D0 - 0x0703D1D0\nstatic const Vtx inside_castle_seg7_vertex_0703D0D0[] = {\n    {{{ -1381,    512,   2970}, 0, {  7122,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1177,    768,   2970}, 0, {  5078,  -1566}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1177,    512,   2970}, 0, {  5078,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -869,   1126,   1741}, 0, {   990,    224}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -767,   1152,   1741}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -767,   1024,   1741}, 0, {     0,   1244}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1177,   1152,   1741}, 0, {  4056,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1177,   1126,   1741}, 0, {  4056,    224}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -665,   1024,   2970}, 0, {     0,  -4120}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -665,    512,   2970}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -869,    768,   2970}, 0, {  2012,  -1566}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -869,    512,   2970}, 0, {  2012,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1381,   1024,   2970}, 0, {  7122,  -4120}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1177,    768,   3021}, 0, {   480,  -1564}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,    512,   2970}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,    768,   2970}, 0, {     0,  -1564}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0703D1D0 - 0x0703D2D0\nstatic const Vtx inside_castle_seg7_vertex_0703D1D0[] = {\n    {{{  -665,   1024,   2560}, 0, {     0,  -4120}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -665,    512,   2560}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -665,    512,   2970}, 0, {  4056,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -767,    512,   2355}, 0, { -2074,    990}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  -665,    512,   2560}, 0, {     0,    990}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  -767,    922,   2355}, 0, { -2074,  -3098}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  -665,   1024,   2560}, 0, {     0,  -4120}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  -665,   1024,   2970}, 0, {  4056,  -4120}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1381,    512,   2560}, 0, {   990,    990}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{ -1279,    922,   2355}, 0, {  3034,  -3098}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{ -1381,   1024,   2560}, 0, {   990,  -4120}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{ -1381,   1024,   2970}, 0, { -3096,  -4120}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1381,    512,   2560}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1381,   1024,   2560}, 0, {   990,  -4120}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1381,    512,   2970}, 0, { -3096,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,    512,   2355}, 0, {  3034,    990}, {0x71, 0x00, 0x38, 0xff}}},\n};\n\n// 0x0703D2D0 - 0x0703D3C0\nstatic const Vtx inside_castle_seg7_vertex_0703D2D0[] = {\n    {{{  -767,   1818,   1741}, 0, {     0,      0}, {0x83, 0x00, 0xf0, 0xff}}},\n    {{{  -767,   1203,   1741}, 0, {     0,   6098}, {0x83, 0x00, 0xf0, 0xff}}},\n    {{{  -784,   1203,   1873}, 0, {  1026,   6098}, {0x83, 0x00, 0xf0, 0xff}}},\n    {{{ -1177,    768,   3021}, 0, {   480,  -1564}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,    512,   3021}, 0, {   480,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,    512,   2970}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -869,    768,   2970}, 0, {     0,  -1564}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -869,    512,   2970}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -869,    512,   3021}, 0, {   480,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -869,    768,   3021}, 0, {   480,  -1564}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -869,    768,   3021}, 0, {   480,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1177,    768,   2970}, 0, {     0,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -869,    768,   2970}, 0, {     0,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1177,    768,   3021}, 0, {   480,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -784,   1818,   1873}, 0, {  1026,      0}, {0x83, 0x00, 0xf0, 0xff}}},\n};\n\n// 0x0703D3C0 - 0x0703D4C0\nstatic const Vtx inside_castle_seg7_vertex_0703D3C0[] = {\n    {{{  -784,   1818,   1873}, 0, {  1026,      0}, {0x8b, 0x00, 0xcf, 0xff}}},\n    {{{  -836,   1178,   1997}, 0, {  2258,   6354}, {0x8b, 0x00, 0xcf, 0xff}}},\n    {{{  -836,   1818,   1997}, 0, {  2258,      0}, {0x8b, 0x00, 0xcf, 0xff}}},\n    {{{  -784,   1178,   1873}, 0, {  1026,   6354}, {0x8b, 0x00, 0xcf, 0xff}}},\n    {{{  -836,   1818,   1997}, 0, {  2258,      0}, {0x9c, 0x00, 0xb3, 0xff}}},\n    {{{  -836,   1152,   1997}, 0, {  2258,   6608}, {0x9c, 0x00, 0xb3, 0xff}}},\n    {{{  -917,   1152,   2103}, 0, {  3582,   6608}, {0x9c, 0x00, 0xb3, 0xff}}},\n    {{{  -917,   1818,   2103}, 0, {  3582,      0}, {0x9c, 0x00, 0xb3, 0xff}}},\n    {{{  -917,   1818,   2103}, 0, {  3582,      0}, {0xb3, 0x00, 0x9c, 0xff}}},\n    {{{ -1023,   1126,   2184}, 0, {  4904,   6864}, {0xb3, 0x00, 0x9c, 0xff}}},\n    {{{ -1023,   1818,   2184}, 0, {  4904,      0}, {0xb3, 0x00, 0x9c, 0xff}}},\n    {{{  -917,   1126,   2103}, 0, {  3582,   6864}, {0xb3, 0x00, 0x9c, 0xff}}},\n    {{{ -1023,   1818,   2184}, 0, {  4904,      0}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{ -1146,   1101,   2235}, 0, {  6136,   7120}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{ -1146,   1818,   2235}, 0, {  6136,      0}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{ -1023,   1101,   2184}, 0, {  4904,   7120}, {0xd0, 0x00, 0x8b, 0xff}}},\n};\n\n// 0x0703D4C0 - 0x0703D5C0\nstatic const Vtx inside_castle_seg7_vertex_0703D4C0[] = {\n    {{{ -1146,   1818,   2235}, 0, {  6136,      0}, {0xef, 0x00, 0x83, 0xff}}},\n    {{{ -1146,   1075,   2235}, 0, {  6136,   7376}, {0xef, 0x00, 0x83, 0xff}}},\n    {{{ -1279,   1075,   2253}, 0, {  7194,   7376}, {0xef, 0x00, 0x83, 0xff}}},\n    {{{ -1279,   1818,   2253}, 0, {  7194,      0}, {0xef, 0x00, 0x83, 0xff}}},\n    {{{ -1279,   1818,   2253}, 0, {     0,      0}, {0x11, 0x00, 0x83, 0xff}}},\n    {{{ -1412,   1050,   2235}, 0, {  1026,   7632}, {0x11, 0x00, 0x83, 0xff}}},\n    {{{ -1412,   1818,   2235}, 0, {  1026,      0}, {0x11, 0x00, 0x83, 0xff}}},\n    {{{ -1279,   1050,   2253}, 0, {     0,   7632}, {0x11, 0x00, 0x83, 0xff}}},\n    {{{ -1412,   1818,   2235}, 0, {  1026,      0}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{ -1535,   1024,   2184}, 0, {  2258,   7886}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{ -1535,   1818,   2184}, 0, {  2258,      0}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{ -1412,   1024,   2235}, 0, {  1026,   7886}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{ -1535,   1818,   2184}, 0, {  2258,      0}, {0x4d, 0x00, 0x9c, 0xff}}},\n    {{{ -1641,    998,   2103}, 0, {  3582,   8142}, {0x4d, 0x00, 0x9c, 0xff}}},\n    {{{ -1641,   1818,   2103}, 0, {  3582,      0}, {0x4d, 0x00, 0x9c, 0xff}}},\n    {{{ -1535,    998,   2184}, 0, {  2258,   8142}, {0x4d, 0x00, 0x9c, 0xff}}},\n};\n\n// 0x0703D5C0 - 0x0703D6C0\nstatic const Vtx inside_castle_seg7_vertex_0703D5C0[] = {\n    {{{ -1641,   1818,   2103}, 0, {  3582,      0}, {0x64, 0x00, 0xb3, 0xff}}},\n    {{{ -1722,    973,   1997}, 0, {  4904,   8398}, {0x64, 0x00, 0xb3, 0xff}}},\n    {{{ -1722,   1818,   1997}, 0, {  4904,      0}, {0x64, 0x00, 0xb3, 0xff}}},\n    {{{ -1641,    973,   2103}, 0, {  3582,   8398}, {0x64, 0x00, 0xb3, 0xff}}},\n    {{{ -1722,   1818,   1997}, 0, {  4904,      0}, {0x75, 0x00, 0xcf, 0xff}}},\n    {{{ -1774,    947,   1873}, 0, {  6136,   8654}, {0x75, 0x00, 0xcf, 0xff}}},\n    {{{ -1774,   1818,   1873}, 0, {  6136,      0}, {0x75, 0x00, 0xcf, 0xff}}},\n    {{{ -1722,    947,   1997}, 0, {  4904,   8654}, {0x75, 0x00, 0xcf, 0xff}}},\n    {{{ -1774,   1818,   1873}, 0, {  6136,      0}, {0x7d, 0x00, 0xf0, 0xff}}},\n    {{{ -1791,    922,   1741}, 0, {  7194,   8908}, {0x7d, 0x00, 0xf0, 0xff}}},\n    {{{ -1791,   1818,   1741}, 0, {  7194,      0}, {0x7d, 0x00, 0xf0, 0xff}}},\n    {{{ -1774,    922,   1873}, 0, {  6136,   8908}, {0x7d, 0x00, 0xf0, 0xff}}},\n    {{{ -1279,    597,   1843}, 0, {  8144,    138}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,   1007,   1843}, 0, {  8144,  -3950}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,    922,   2355}, 0, {  3034,  -3098}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,    512,   2355}, 0, {  3034,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0703D6C0 - 0x0703D7C0\nstatic const Vtx inside_castle_seg7_vertex_0703D6C0[] = {\n    {{{ -1074,   1459,   1229}, 0, {   990,   3542}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -921,   1459,   1229}, 0, {  2524,   3542}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -767,   1818,   1229}, 0, {  4056,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -767,   1203,   1229}, 0, {  4056,   6098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -921,   1203,   1229}, 0, {  2524,   6098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,   1818,   1229}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,   1203,   1229}, 0, {     0,   6098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1074,   1203,   1229}, 0, {   990,   6098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1279,   1152,   1229}, 0, { -1052,   2520}, {0xf0, 0x00, 0x7d, 0xff}}},\n    {{{ -1146,    742,   1246}, 0, {     4,   6608}, {0xf0, 0x00, 0x7d, 0xff}}},\n    {{{ -1146,   1152,   1246}, 0, {     4,   2520}, {0xf0, 0x00, 0x7d, 0xff}}},\n    {{{ -1279,    742,   1229}, 0, { -1052,   6608}, {0xf0, 0x00, 0x7d, 0xff}}},\n    {{{ -1146,   1152,   1246}, 0, {     4,   2520}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{ -1023,    717,   1297}, 0, {  1236,   6864}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{ -1023,   1152,   1297}, 0, {  1236,   2520}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{ -1146,    717,   1246}, 0, {     4,   6864}, {0xd0, 0x00, 0x75, 0xff}}},\n};\n\n// 0x0703D7C0 - 0x0703D8C0\nstatic const Vtx inside_castle_seg7_vertex_0703D7C0[] = {\n    {{{ -1023,   1152,   1297}, 0, {  1236,   2520}, {0xb3, 0x00, 0x64, 0xff}}},\n    {{{  -917,    691,   1379}, 0, {  2560,   7120}, {0xb3, 0x00, 0x64, 0xff}}},\n    {{{  -917,   1152,   1379}, 0, {  2560,   2520}, {0xb3, 0x00, 0x64, 0xff}}},\n    {{{ -1023,    691,   1297}, 0, {  1236,   7120}, {0xb3, 0x00, 0x64, 0xff}}},\n    {{{  -917,   1152,   1379}, 0, {  2560,   2520}, {0x9c, 0x00, 0x4d, 0xff}}},\n    {{{  -917,    666,   1379}, 0, {  2560,   7376}, {0x9c, 0x00, 0x4d, 0xff}}},\n    {{{  -836,    666,   1485}, 0, {  3882,   7376}, {0x9c, 0x00, 0x4d, 0xff}}},\n    {{{  -836,   1152,   1485}, 0, {  3882,   2522}, {0x9c, 0x00, 0x4d, 0xff}}},\n    {{{  -836,   1152,   1485}, 0, {  3882,   2522}, {0x8c, 0x00, 0x31, 0xff}}},\n    {{{  -836,    640,   1485}, 0, {  3882,   7630}, {0x8c, 0x00, 0x31, 0xff}}},\n    {{{  -784,    640,   1608}, 0, {  5114,   7630}, {0x8c, 0x00, 0x31, 0xff}}},\n    {{{  -784,   1152,   1608}, 0, {  5114,   2522}, {0x8c, 0x00, 0x31, 0xff}}},\n    {{{  -784,   1152,   1608}, 0, {  5114,   2522}, {0x83, 0x00, 0x10, 0xff}}},\n    {{{  -784,    614,   1608}, 0, {  5114,   7886}, {0x83, 0x00, 0x10, 0xff}}},\n    {{{  -767,    614,   1741}, 0, {  6172,   7886}, {0x83, 0x00, 0x10, 0xff}}},\n    {{{  -767,   1152,   1741}, 0, {  6172,   2522}, {0x83, 0x00, 0x10, 0xff}}},\n};\n\n// 0x0703D8C0 - 0x0703D9B0\nstatic const Vtx inside_castle_seg7_vertex_0703D8C0[] = {\n    {{{  -767,    922,   2355}, 0, { -2074,  -3098}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -767,   1024,   1741}, 0, { -8206,  -4120}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -767,    614,   1741}, 0, { -8206,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1074,   1459,   1178}, 0, {   478,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -921,   1459,   1229}, 0, {   990,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1074,   1459,   1229}, 0, {   990,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -921,   1459,   1178}, 0, {   478,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -921,   1459,   1178}, 0, {   478,  -1564}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -921,   1203,   1178}, 0, {   478,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -921,   1203,   1229}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -921,   1459,   1229}, 0, {   990,  -1564}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1074,   1203,   1178}, 0, {   478,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1074,   1459,   1229}, 0, {   990,  -1564}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1074,   1203,   1229}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1074,   1459,   1178}, 0, {   478,  -1564}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0703D9B0 - 0x0703DAA0\nstatic const Vtx inside_castle_seg7_vertex_0703D9B0[] = {\n    {{{ -1774,   1818,   1608}, 0, {  1026,      0}, {0x74, 0x00, 0x31, 0xff}}},\n    {{{ -1774,    870,   1608}, 0, {  1026,   9420}, {0x74, 0x00, 0x31, 0xff}}},\n    {{{ -1722,    870,   1485}, 0, {  2258,   9420}, {0x74, 0x00, 0x31, 0xff}}},\n    {{{  -767,    922,   2355}, 0, { -2074,  -3098}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -767,    614,   1741}, 0, { -8206,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -767,    512,   2355}, 0, { -2074,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -767,   1818,   1229}, 0, {  -164,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -767,   1203,   1741}, 0, {  4944,   6098}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -767,   1818,   1741}, 0, {  4944,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -767,   1203,   1229}, 0, {  -164,   6098}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1791,   1818,   1741}, 0, {     0,      0}, {0x7d, 0x00, 0x10, 0xff}}},\n    {{{ -1791,    896,   1741}, 0, {     0,   9164}, {0x7d, 0x00, 0x10, 0xff}}},\n    {{{ -1774,    896,   1608}, 0, {  1026,   9164}, {0x7d, 0x00, 0x10, 0xff}}},\n    {{{ -1774,   1818,   1608}, 0, {  1026,      0}, {0x7d, 0x00, 0x10, 0xff}}},\n    {{{ -1722,   1818,   1485}, 0, {  2258,      0}, {0x74, 0x00, 0x31, 0xff}}},\n};\n\n// 0x0703DAA0 - 0x0703DBA0\nstatic const Vtx inside_castle_seg7_vertex_0703DAA0[] = {\n    {{{ -1722,   1818,   1485}, 0, {  2258,      0}, {0x64, 0x00, 0x4d, 0xff}}},\n    {{{ -1722,    845,   1485}, 0, {  2258,   9674}, {0x64, 0x00, 0x4d, 0xff}}},\n    {{{ -1641,    845,   1379}, 0, {  3582,   9674}, {0x64, 0x00, 0x4d, 0xff}}},\n    {{{ -1641,   1818,   1379}, 0, {  3582,      0}, {0x64, 0x00, 0x4d, 0xff}}},\n    {{{ -1641,   1818,   1379}, 0, {  3582,      0}, {0x4d, 0x00, 0x64, 0xff}}},\n    {{{ -1641,    819,   1379}, 0, {  3582,   9930}, {0x4d, 0x00, 0x64, 0xff}}},\n    {{{ -1535,    819,   1297}, 0, {  4904,   9930}, {0x4d, 0x00, 0x64, 0xff}}},\n    {{{ -1535,   1818,   1297}, 0, {  4904,      0}, {0x4d, 0x00, 0x64, 0xff}}},\n    {{{ -1535,   1818,   1297}, 0, {  4904,      0}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{ -1412,    794,   1246}, 0, {  6136,  10186}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{ -1412,   1818,   1246}, 0, {  6136,      0}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{ -1535,    794,   1297}, 0, {  4904,  10186}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{ -1412,   1818,   1246}, 0, {  6136,      0}, {0x10, 0x00, 0x7d, 0xff}}},\n    {{{ -1412,    768,   1246}, 0, {  6136,  10442}, {0x10, 0x00, 0x7d, 0xff}}},\n    {{{ -1279,    768,   1229}, 0, {  7194,  10442}, {0x10, 0x00, 0x7d, 0xff}}},\n    {{{ -1279,   1818,   1229}, 0, {  7194,      0}, {0x10, 0x00, 0x7d, 0xff}}},\n};\n\n// 0x0703DBA0 - 0x0703DC90\nstatic const Vtx inside_castle_seg7_vertex_0703DBA0[] = {\n    {{{ -1351,   1152,   1668}, 0, {   118,   1100}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{ -1381,    614,   1741}, 0, {     0,   2012}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{ -1381,   1152,   1741}, 0, {     0,   1100}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{ -1381,   1152,   1242}, 0, { -1496,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1381,   1818,   1741}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1381,   1818,   1242}, 0, { -1496,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1381,   1152,   1741}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1177,   1818,   1741}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,   1203,   1741}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,   1203,   1229}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,   1818,   1229}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,   1152,   1638}, 0, {   478,   1100}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{ -1351,    626,   1668}, 0, {   118,   1992}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{ -1351,   1152,   1668}, 0, {   118,   1100}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{ -1351,    626,   1668}, 0, {   118,   1992}, {0x8b, 0x00, 0xd0, 0xff}}},\n};\n\n// 0x0703DC90 - 0x0703DD80\nstatic const Vtx inside_castle_seg7_vertex_0703DC90[] = {\n    {{{ -1381,   1818,   1741}, 0, {     0,      0}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{ -1381,    614,   1741}, 0, {     0,   2012}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{ -1351,    602,   1813}, 0, {   118,   2028}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{ -1207,   1152,   1668}, 0, {   840,   1100}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{ -1279,    631,   1638}, 0, {   478,   1984}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{ -1279,   1152,   1638}, 0, {   478,   1100}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{ -1279,   1152,   1638}, 0, {   478,   1100}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{ -1279,    631,   1638}, 0, {   478,   1984}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{ -1351,    626,   1668}, 0, {   118,   1992}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{ -1207,    626,   1668}, 0, {   840,   1992}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{ -1177,   1152,   1741}, 0, {   990,   1100}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{ -1207,    614,   1668}, 0, {   840,   2012}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{ -1207,   1152,   1668}, 0, {   840,   1100}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{ -1177,    614,   1741}, 0, {   990,   2012}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{ -1351,   1818,   1813}, 0, {   118,      0}, {0x8b, 0x00, 0x30, 0xff}}},\n};\n\n// 0x0703DD80 - 0x0703DE40\nstatic const Vtx inside_castle_seg7_vertex_0703DD80[] = {\n    {{{ -1351,   1818,   1813}, 0, {   118,      0}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{ -1351,    602,   1813}, 0, {   118,   2028}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{ -1279,    597,   1843}, 0, {   478,   2036}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{ -1279,   1818,   1843}, 0, {   478,      0}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{ -1279,    597,   1843}, 0, {   478,   2036}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{ -1207,    602,   1813}, 0, {   840,   2028}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{ -1279,   1818,   1843}, 0, {   478,      0}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{ -1207,   1818,   1813}, 0, {   840,      0}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{ -1207,   1818,   1813}, 0, {   840,      0}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{ -1177,    614,   1741}, 0, {   990,   2012}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{ -1177,   1818,   1741}, 0, {   990,      0}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{ -1207,    602,   1813}, 0, {   840,   2028}, {0x75, 0x00, 0x30, 0xff}}},\n};\n\n// 0x0703DE40 - 0x0703DF70\nstatic const Gfx inside_castle_seg7_dl_0703DE40[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_0900B000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_0703C040.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0703C040.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0703C070, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  3,  5,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703C160, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  3,  9,  4, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703C260, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_0703C058.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0703C058.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0703C350, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  3,  2, 0x0,  4,  5,  3, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0703DF70 - 0x0703E000\nstatic const Gfx inside_castle_seg7_dl_0703DF70[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0703C3F0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9,  4, 0x0,  8,  4,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703C4D0, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  2,  5,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0703E000 - 0x0703E2D8\nstatic const Gfx inside_castle_seg7_dl_0703E000[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0703C530, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703C620, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703C720, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703C800, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703C8E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703C9E0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703CAC0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703CBC0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703CCC0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703CDA0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703CEA0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  3,  9,  4, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703CFA0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703D0A0, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0703E2D8 - 0x0703E618\nstatic const Gfx inside_castle_seg7_dl_0703E2D8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0703D0D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12,  8, 10, 0x0, 12, 10,  1, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703D1D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  0,  2,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  8, 15,  9, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703D2D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703D3C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703D4C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703D5C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 15, 12, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703D6C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 6,  0,  5, 0x0,  6,  7,  0, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703D7C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703D8C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703D9B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703DAA0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0703E618 - 0x0703E6F0\nstatic const Gfx inside_castle_seg7_dl_0703E618[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0703DBA0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703DC90, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  3,  9,  4, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703DD80, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  2,  6, 0x0,  3,  5,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0703E6F0 - 0x0703E798\nconst Gfx inside_castle_seg7_dl_0703E6F0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_0703DE40),\n    gsSPDisplayList(inside_castle_seg7_dl_0703DF70),\n    gsSPDisplayList(inside_castle_seg7_dl_0703E000),\n    gsSPDisplayList(inside_castle_seg7_dl_0703E2D8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_0703E618),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/2/10/model.inc.c",
    "content": "// 0x07051370 - 0x07051460\nstatic const Vtx inside_castle_seg7_vertex_07051370[] = {\n    {{{  1384,   2765,   7197}, 0, {  2012,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1384,   2867,   6992}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1384,   2765,   6992}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -760,   3174,   4792}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   352,   3277,   4792}, 0, { 11210,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -760,   3277,   4792}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   352,   3174,   4792}, 0, { 11210,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -809,   3174,   4610}, 0, {  -896,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -760,   3277,   4792}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -809,   3277,   4610}, 0, {  -896,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -760,   3174,   4792}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   352,   3174,   4792}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   401,   3174,   4610}, 0, {  1856,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   401,   3277,   4610}, 0, {  1856,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   352,   3277,   4792}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07051460 - 0x07051560\nstatic const Vtx inside_castle_seg7_vertex_07051460[] = {\n    {{{ -1992,   2867,   6310}, 0, { -2074,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1793,   2867,   6509}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1793,   2765,   6509}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1384,   2765,   7197}, 0, {  2012,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1384,   2867,   7197}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1384,   2867,   6992}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1793,   2765,   6992}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1793,   2867,   7197}, 0, { -1052,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1793,   2765,   7197}, 0, { -1052,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1793,   2867,   6992}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1793,   2867,   6603}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1793,   2765,   6603}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1992,   2765,   6310}, 0, { -2074,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1384,   2765,   6603}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1384,   2867,   6603}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1384,   2867,   6509}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07051560 - 0x070515B0\nstatic const Vtx inside_castle_seg7_vertex_07051560[] = {\n    {{{  1384,   2765,   6603}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1384,   2867,   6509}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1384,   2765,   6509}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1583,   2765,   6310}, 0, { -2074,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1583,   2867,   6310}, 0, { -2074,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070515B0 - 0x07051678\nstatic const Gfx inside_castle_seg7_dl_070515B0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07051370, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07051460, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 2,  1, 10, 0x0,  2, 10, 11, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07051560, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  4, 0x0),\n    gsSP1Triangle( 3,  2,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07051678 - 0x070516E8\nconst Gfx inside_castle_seg7_dl_07051678[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_070515B0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/2/11/model.inc.c",
    "content": "// 0x070516E8 - 0x070517E8\nstatic const Vtx inside_castle_seg7_vertex_070516E8[] = {\n    {{{  2081,   2970,   6091}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0x91}}},\n    {{{  1569,   2970,   6091}, 0, {   478,      0}, {0xff, 0xff, 0xff, 0x91}}},\n    {{{  1569,   2970,   5681}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0x91}}},\n    {{{ -2489,   2970,   6091}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0x91}}},\n    {{{ -1977,   3379,   6091}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0x91}}},\n    {{{ -2489,   3379,   6091}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0x91}}},\n    {{{ -1977,   2970,   6091}, 0, {   478,      0}, {0xff, 0xff, 0xff, 0x91}}},\n    {{{ -2489,   2970,   5681}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0x91}}},\n    {{{ -1977,   2970,   5681}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0x91}}},\n    {{{ -1977,   3379,   5681}, 0, {   478,      0}, {0xff, 0xff, 0xff, 0x91}}},\n    {{{ -2489,   3379,   5681}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0x91}}},\n    {{{  2081,   3379,   6091}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0x91}}},\n    {{{  2081,   2970,   5681}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0x91}}},\n    {{{  2900,   3021,   5989}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0x91}}},\n    {{{  2900,   3277,   5989}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0x91}}},\n    {{{  2900,   3277,   5784}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0x91}}},\n};\n\n// 0x070517E8 - 0x070518D8\nstatic const Vtx inside_castle_seg7_vertex_070517E8[] = {\n    {{{  2081,   3379,   6091}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0x91}}},\n    {{{  1569,   3379,   6091}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0x91}}},\n    {{{  1569,   2970,   6091}, 0, {   478,      0}, {0xff, 0xff, 0xff, 0x91}}},\n    {{{  2081,   2970,   5681}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0x91}}},\n    {{{  1569,   2970,   5681}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0x91}}},\n    {{{  1569,   3379,   5681}, 0, {   478,      0}, {0xff, 0xff, 0xff, 0x91}}},\n    {{{  2081,   3379,   5681}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0x91}}},\n    {{{  2900,   3021,   5784}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0x91}}},\n    {{{  3105,   3277,   5784}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0x91}}},\n    {{{  3105,   3021,   5784}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0x91}}},\n    {{{  2900,   3277,   5784}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0x91}}},\n    {{{  2900,   3021,   5989}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0x91}}},\n    {{{  3105,   3277,   5989}, 0, {   478,      0}, {0xff, 0xff, 0xff, 0x91}}},\n    {{{  3105,   3021,   5989}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0x91}}},\n    {{{  2900,   3277,   5989}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0x91}}},\n};\n\n// 0x070518D8 - 0x070519C8\nstatic const Gfx inside_castle_seg7_dl_070518D8[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, texture_castle_light),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_070516E8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  6,  3, 0x0),\n    gsSP2Triangles( 7,  8,  6, 0x0,  5,  4,  9, 0x0),\n    gsSP2Triangles( 5,  9, 10, 0x0, 10,  9,  8, 0x0),\n    gsSP2Triangles(10,  8,  7, 0x0, 11,  1,  0, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070517E8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  6,  5,  1, 0x0),\n    gsSP2Triangles( 6,  1,  0, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 10,  7, 0x0),\n    gsSP2Triangles( 9,  8, 12, 0x0,  9, 12, 13, 0x0),\n    gsSP2Triangles(13, 14, 11, 0x0, 13, 12, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070519C8 - 0x07051A38\nconst Gfx inside_castle_seg7_dl_070519C8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_070518D8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/2/12/model.inc.c",
    "content": "// 0x07051A38 - 0x07051A50\nstatic const Lights1 inside_castle_seg7_lights_07051A38 = gdSPDefLights1(\n    0x47, 0x3f, 0x17,\n    0xbf, 0xaa, 0x3f, 0x28, 0x28, 0x28\n);\n\n// 0x07051A50 - 0x07051B10\nstatic const Vtx inside_castle_seg7_vertex_07051A50[] = {\n    {{{     0,   2611,   7130}, 0, {     0,      0}, {0x72, 0x00, 0xc9, 0x80}}},\n    {{{     0,   2253,   7130}, 0, {     0,      0}, {0x72, 0x00, 0xc9, 0x80}}},\n    {{{   -50,   2253,   7027}, 0, {     0,      0}, {0x72, 0x00, 0xc9, 0x80}}},\n    {{{   -50,   2611,   7027}, 0, {     0,      0}, {0x72, 0x00, 0xc9, 0x80}}},\n    {{{   -50,   2611,   7027}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x80}}},\n    {{{   -50,   2253,   7027}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x80}}},\n    {{{  -357,   2253,   7027}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x80}}},\n    {{{  -357,   2611,   7027}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0x80}}},\n    {{{  -357,   2611,   7027}, 0, {     0,      0}, {0x8f, 0x00, 0xc7, 0x80}}},\n    {{{  -357,   2253,   7027}, 0, {     0,      0}, {0x8f, 0x00, 0xc7, 0x80}}},\n    {{{  -409,   2253,   7130}, 0, {     0,      0}, {0x8f, 0x00, 0xc7, 0x80}}},\n    {{{  -409,   2611,   7130}, 0, {     0,      0}, {0x8f, 0x00, 0xc7, 0x80}}},\n};\n\n// 0x07051B10 - 0x07051B60\nstatic const Gfx inside_castle_seg7_dl_07051B10[] = {\n    gsSPLight(&inside_castle_seg7_lights_07051A38.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07051A38.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07051A50, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07051B60 - 0x07051B88\nconst Gfx inside_castle_seg7_dl_07051B60[] = {\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPDisplayList(inside_castle_seg7_dl_07051B10),\n    gsSPSetGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/2/13/model.inc.c",
    "content": "// 0x07051B88 - 0x07051BA0\nstatic const Lights1 inside_castle_seg7_lights_07051B88 = gdSPDefLights1(\n    0x51, 0x34, 0x42,\n    0xd8, 0x8c, 0xb2, 0x28, 0x28, 0x28\n);\n\n// 0x07051BA0 - 0x07051BB8\nstatic const Lights1 inside_castle_seg7_lights_07051BA0 = gdSPDefLights1(\n    0x40, 0x1e, 0x2f,\n    0xac, 0x52, 0x7f, 0x28, 0x28, 0x28\n);\n\n// 0x07051BB8 - 0x07051BD0\nstatic const Lights1 inside_castle_seg7_lights_07051BB8 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x07051BD0 - 0x07051C70\nstatic const Vtx inside_castle_seg7_vertex_07051BD0[] = {\n    {{{   -25,   5018,  -3555}, 0, { 12268,    862}, {0x43, 0x65, 0xdf, 0xff}}},\n    {{{   -25,   5018,  -3146}, 0, { 10224,    862}, {0x21, 0x65, 0x43, 0xff}}},\n    {{{   282,   5018,  -2787}, 0, {  8436,   2394}, {0xb5, 0x65, 0xfc, 0xff}}},\n    {{{  -434,   5018,  -3555}, 0, { 12268,  -1182}, {0xe5, 0x6e, 0xc9, 0xff}}},\n    {{{   282,   5018,  -3811}, 0, { 13546,   2394}, {0xdf, 0x65, 0x43, 0xff}}},\n    {{{  -690,   5018,  -2787}, 0, {  8436,  -2460}, {0x38, 0x71, 0xfa, 0xff}}},\n    {{{  -434,   5018,  -3146}, 0, { 10224,  -1182}, {0xac, 0x54, 0x2a, 0xff}}},\n    {{{     0,   5018,  -1091}, 0, {     0,    990}, {0xb4, 0x4d, 0x40, 0xff}}},\n    {{{  -690,   5018,  -3811}, 0, { 13546,  -2460}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{  -409,   5018,  -1091}, 0, {     0,  -1054}, {0x4c, 0x4d, 0x40, 0xff}}},\n};\n\n// 0x07051C70 - 0x07051D60\nstatic const Vtx inside_castle_seg7_vertex_07051C70[] = {\n    {{{     0,   3482,   1929}, 0, {  2012,  10484}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3482,   1929}, 0, { -2074,  10484}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3482,   1980}, 0, { -2074,  10942}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3405,   2083}, 0, {  2012,  12198}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3405,   2134}, 0, { -2074,  12656}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3405,   2134}, 0, {  2012,  12656}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3405,   2083}, 0, { -2074,  12198}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3430,   2032}, 0, {  2012,  11626}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3430,   2083}, 0, { -2074,  12084}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3430,   2083}, 0, {  2012,  12084}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3430,   2032}, 0, { -2074,  11626}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3456,   1980}, 0, {  2012,  11056}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3456,   1980}, 0, { -2074,  11056}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3456,   2032}, 0, { -2074,  11512}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3456,   2032}, 0, {  2012,  11512}, {0x00, 0x38, 0x71, 0xff}}},\n};\n\n// 0x07051D60 - 0x07051E50\nstatic const Vtx inside_castle_seg7_vertex_07051D60[] = {\n    {{{     0,   3584,   1724}, 0, {  2012,   8198}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3584,   1776}, 0, { -2074,   8656}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3584,   1776}, 0, {  2012,   8656}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3482,   1929}, 0, {  2012,  10484}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3482,   1980}, 0, { -2074,  10942}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3482,   1980}, 0, {  2012,  10942}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3507,   1878}, 0, {  2012,   9912}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3507,   1929}, 0, { -2074,  10370}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3507,   1929}, 0, {  2012,  10370}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3507,   1878}, 0, { -2074,   9912}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3533,   1827}, 0, {  2012,   9342}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3533,   1878}, 0, { -2074,   9798}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3533,   1878}, 0, {  2012,   9798}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3533,   1827}, 0, { -2074,   9342}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3584,   1724}, 0, { -2074,   8198}, {0x00, 0x38, 0x71, 0xff}}},\n};\n\n// 0x07051E50 - 0x07051F40\nstatic const Vtx inside_castle_seg7_vertex_07051E50[] = {\n    {{{     0,   3251,   2390}, 0, {  2012,  15626}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3251,   2441}, 0, { -2074,  16084}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3251,   2441}, 0, {  2012,  16084}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3558,   1776}, 0, {  2012,   8770}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3558,   1827}, 0, { -2074,   9228}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3558,   1827}, 0, {  2012,   9228}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3558,   1776}, 0, { -2074,   8770}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3200,   2492}, 0, {  2012,  16768}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3200,   2492}, 0, { -2074,  16768}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3200,   2544}, 0, { -2074,  17226}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3200,   2544}, 0, {  2012,  17226}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3226,   2441}, 0, {  2012,  16198}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3226,   2441}, 0, { -2074,  16198}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3226,   2492}, 0, { -2074,  16654}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3226,   2492}, 0, {  2012,  16654}, {0x00, 0x38, 0x71, 0xff}}},\n};\n\n// 0x07051F40 - 0x07052030\nstatic const Vtx inside_castle_seg7_vertex_07051F40[] = {\n    {{{     0,   3379,   2134}, 0, {  2012,  12770}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3379,   2185}, 0, { -2074,  13226}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3379,   2185}, 0, {  2012,  13226}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3251,   2390}, 0, {  2012,  15626}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3251,   2390}, 0, { -2074,  15626}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3251,   2441}, 0, { -2074,  16084}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3277,   2339}, 0, {  2012,  15054}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3277,   2390}, 0, { -2074,  15512}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3277,   2390}, 0, {  2012,  15512}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3277,   2339}, 0, { -2074,  15054}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3354,   2185}, 0, {  2012,  13340}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3354,   2185}, 0, { -2074,  13340}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3354,   2236}, 0, { -2074,  13798}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3354,   2236}, 0, {  2012,  13798}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3379,   2134}, 0, { -2074,  12770}, {0x00, 0x38, 0x71, 0xff}}},\n};\n\n// 0x07052030 - 0x07052120\nstatic const Vtx inside_castle_seg7_vertex_07052030[] = {\n    {{{     0,   3840,   1212}, 0, {  2012,   2486}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3840,   1212}, 0, { -2074,   2486}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3840,   1264}, 0, { -2074,   2942}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3328,   2236}, 0, {  2012,  13912}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3328,   2236}, 0, { -2074,  13912}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3328,   2288}, 0, { -2074,  14370}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3328,   2288}, 0, {  2012,  14370}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3302,   2288}, 0, {  2012,  14484}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3302,   2339}, 0, { -2074,  14940}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3302,   2339}, 0, {  2012,  14940}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3302,   2288}, 0, { -2074,  14484}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3814,   1264}, 0, {  2012,   3058}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3814,   1315}, 0, { -2074,   3514}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3814,   1315}, 0, {  2012,   3514}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3814,   1264}, 0, { -2074,   3058}, {0x00, 0x38, 0x71, 0xff}}},\n};\n\n// 0x07052120 - 0x07052210\nstatic const Vtx inside_castle_seg7_vertex_07052120[] = {\n    {{{     0,   3942,   1008}, 0, {  2012,    202}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3942,   1008}, 0, { -2074,    202}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3942,   1059}, 0, { -2074,    660}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3840,   1212}, 0, {  2012,   2486}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3840,   1264}, 0, { -2074,   2942}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3840,   1264}, 0, {  2012,   2942}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3968,    956}, 0, {  2012,   -368}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3968,    956}, 0, { -2074,   -368}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3968,   1008}, 0, { -2074,     88}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3968,   1008}, 0, {  2012,     88}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3994,    905}, 0, {  2012,   -940}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3994,    905}, 0, { -2074,   -940}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3994,    956}, 0, { -2074,   -484}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3994,    956}, 0, {  2012,   -484}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3942,   1059}, 0, {  2012,    660}, {0x00, 0x38, 0x71, 0xff}}},\n};\n\n// 0x07052210 - 0x07052300\nstatic const Vtx inside_castle_seg7_vertex_07052210[] = {\n    {{{     0,   3712,   1468}, 0, {  2012,   5342}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3712,   1468}, 0, { -2074,   5342}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3712,   1520}, 0, { -2074,   5800}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3917,   1059}, 0, {  2012,    774}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3917,   1110}, 0, { -2074,   1228}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3917,   1110}, 0, {  2012,   1228}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3917,   1059}, 0, { -2074,    774}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3891,   1110}, 0, {  2012,   1344}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3891,   1110}, 0, { -2074,   1344}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3891,   1161}, 0, { -2074,   1800}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3891,   1161}, 0, {  2012,   1800}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3866,   1161}, 0, {  2012,   1914}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3866,   1212}, 0, { -2074,   2372}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3866,   1212}, 0, {  2012,   2372}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3866,   1161}, 0, { -2074,   1914}, {0x00, 0x38, 0x71, 0xff}}},\n};\n\n// 0x07052300 - 0x070523F0\nstatic const Vtx inside_castle_seg7_vertex_07052300[] = {\n    {{{     0,   3763,   1366}, 0, {  2012,   4200}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3763,   1366}, 0, { -2074,   4200}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3763,   1417}, 0, { -2074,   4656}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3712,   1468}, 0, {  2012,   5342}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3712,   1520}, 0, { -2074,   5800}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3712,   1520}, 0, {  2012,   5800}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3738,   1417}, 0, {  2012,   4772}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3738,   1468}, 0, { -2074,   5228}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3738,   1468}, 0, {  2012,   5228}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3738,   1417}, 0, { -2074,   4772}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3789,   1315}, 0, {  2012,   3628}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3789,   1315}, 0, { -2074,   3628}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3789,   1366}, 0, { -2074,   4086}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3789,   1366}, 0, {  2012,   4086}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3763,   1417}, 0, {  2012,   4656}, {0x00, 0x38, 0x71, 0xff}}},\n};\n\n// 0x070523F0 - 0x070524E0\nstatic const Vtx inside_castle_seg7_vertex_070523F0[] = {\n    {{{     0,   3610,   1673}, 0, {  2012,   7628}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3610,   1724}, 0, { -2074,   8084}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3610,   1724}, 0, {  2012,   8084}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3686,   1520}, 0, {  2012,   5914}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3686,   1520}, 0, { -2074,   5914}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3686,   1571}, 0, { -2074,   6370}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3686,   1571}, 0, {  2012,   6370}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3661,   1571}, 0, {  2012,   6486}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3661,   1571}, 0, { -2074,   6486}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3661,   1622}, 0, { -2074,   6942}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3661,   1622}, 0, {  2012,   6942}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3635,   1622}, 0, {  2012,   7056}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3635,   1622}, 0, { -2074,   7056}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3635,   1673}, 0, { -2074,   7514}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3635,   1673}, 0, {  2012,   7514}, {0x00, 0x38, 0x71, 0xff}}},\n};\n\n// 0x070524E0 - 0x070525D0\nstatic const Vtx inside_castle_seg7_vertex_070524E0[] = {\n    {{{     0,   4070,    752}, 0, {  2012,  -2654}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4070,    803}, 0, { -2074,  -2196}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4070,    803}, 0, {  2012,  -2196}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3610,   1673}, 0, {  2012,   7628}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3610,   1673}, 0, { -2074,   7628}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3610,   1724}, 0, { -2074,   8084}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4019,    854}, 0, {  2012,  -1512}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4019,    905}, 0, { -2074,  -1054}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4019,    905}, 0, {  2012,  -1054}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4019,    854}, 0, { -2074,  -1512}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4045,    803}, 0, {  2012,  -2082}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4045,    854}, 0, { -2074,  -1626}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4045,    854}, 0, {  2012,  -1626}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4045,    803}, 0, { -2074,  -2082}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4070,    752}, 0, { -2074,  -2654}, {0x00, 0x38, 0x71, 0xff}}},\n};\n\n// 0x070525D0 - 0x070526C0\nstatic const Vtx inside_castle_seg7_vertex_070525D0[] = {\n    {{{     0,   4506,   -118}, 0, {  2012, -12366}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4506,   -118}, 0, { -2074, -12366}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4506,    -67}, 0, { -2074, -11910}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4429,     35}, 0, {  2012, -10652}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4429,     35}, 0, { -2074, -10652}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4429,     86}, 0, { -2074, -10196}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4429,     86}, 0, {  2012, -10196}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4454,    -15}, 0, {  2012, -11224}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4454,     35}, 0, { -2074, -10766}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4454,     35}, 0, {  2012, -10766}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4454,    -15}, 0, { -2074, -11224}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4480,    -67}, 0, {  2012, -11796}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4480,    -67}, 0, { -2074, -11796}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4480,    -15}, 0, { -2074, -11338}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4480,    -15}, 0, {  2012, -11338}, {0x00, 0x38, 0x71, 0xff}}},\n};\n\n// 0x070526C0 - 0x070527B0\nstatic const Vtx inside_castle_seg7_vertex_070526C0[] = {\n    {{{     0,   4557,   -220}, 0, {  2012, -13510}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4557,   -169}, 0, { -2074, -13052}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4557,   -169}, 0, {  2012, -13052}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4506,   -118}, 0, {  2012, -12366}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4506,    -67}, 0, { -2074, -11910}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4506,    -67}, 0, {  2012, -11910}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4582,   -271}, 0, {  2012, -14080}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4582,   -220}, 0, { -2074, -13624}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4582,   -220}, 0, {  2012, -13624}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4582,   -271}, 0, { -2074, -14080}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4608,   -323}, 0, {  2012, -14652}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4608,   -271}, 0, { -2074, -14194}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4608,   -271}, 0, {  2012, -14194}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4608,   -323}, 0, { -2074, -14652}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4557,   -220}, 0, { -2074, -13510}, {0x00, 0x38, 0x71, 0xff}}},\n};\n\n// 0x070527B0 - 0x070528A0\nstatic const Vtx inside_castle_seg7_vertex_070527B0[] = {\n    {{{     0,   4710,   -527}, 0, {  2012, -16936}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4710,   -476}, 0, { -2074, -16480}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4710,   -476}, 0, {  2012, -16480}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4531,   -169}, 0, {  2012, -12938}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4531,   -169}, 0, { -2074, -12938}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4531,   -118}, 0, { -2074, -12480}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4531,   -118}, 0, {  2012, -12480}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4659,   -425}, 0, {  2012, -15794}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4659,   -425}, 0, { -2074, -15794}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4659,   -374}, 0, { -2074, -15338}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4659,   -374}, 0, {  2012, -15338}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4685,   -476}, 0, {  2012, -16366}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4685,   -476}, 0, { -2074, -16366}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4685,   -425}, 0, { -2074, -15908}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4685,   -425}, 0, {  2012, -15908}, {0x00, 0x38, 0x71, 0xff}}},\n};\n\n// 0x070528A0 - 0x07052990\nstatic const Vtx inside_castle_seg7_vertex_070528A0[] = {\n    {{{     0,   4813,   -732}, 0, {  2012, -19222}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4813,   -681}, 0, { -2074, -18766}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4813,   -681}, 0, {  2012, -18766}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4710,   -527}, 0, {  2012, -16936}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4710,   -527}, 0, { -2074, -16936}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4710,   -476}, 0, { -2074, -16480}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4736,   -579}, 0, {  2012, -17508}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4736,   -527}, 0, { -2074, -17052}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4736,   -527}, 0, {  2012, -17052}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4736,   -579}, 0, { -2074, -17508}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4762,   -630}, 0, {  2012, -18080}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4762,   -579}, 0, { -2074, -17622}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4762,   -579}, 0, {  2012, -17622}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4762,   -630}, 0, { -2074, -18080}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4813,   -732}, 0, { -2074, -19222}, {0x00, 0x38, 0x71, 0xff}}},\n};\n\n// 0x07052990 - 0x07052A80\nstatic const Vtx inside_castle_seg7_vertex_07052990[] = {\n    {{{     0,   4147,    598}, 0, {  2012,  -4368}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4147,    649}, 0, { -2074,  -3910}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4147,    649}, 0, {  2012,  -3910}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4787,   -681}, 0, {  2012, -18650}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4787,   -681}, 0, { -2074, -18650}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4787,   -630}, 0, { -2074, -18194}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4787,   -630}, 0, {  2012, -18194}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4634,   -374}, 0, {  2012, -15224}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4634,   -323}, 0, { -2074, -14766}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4634,   -323}, 0, {  2012, -14766}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4634,   -374}, 0, { -2074, -15222}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4122,    649}, 0, {  2012,  -3796}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4122,    700}, 0, { -2074,  -3340}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4122,    700}, 0, {  2012,  -3340}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4122,    649}, 0, { -2074,  -3796}, {0x00, 0x38, 0x71, 0xff}}},\n};\n\n// 0x07052A80 - 0x07052B70\nstatic const Vtx inside_castle_seg7_vertex_07052A80[] = {\n    {{{     0,   4096,    700}, 0, {  2012,  -3226}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4096,    752}, 0, { -2074,  -2768}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4096,    752}, 0, {  2012,  -2768}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4147,    598}, 0, {  2012,  -4368}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4147,    598}, 0, { -2074,  -4368}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4147,    649}, 0, { -2074,  -3910}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4198,    496}, 0, {  2012,  -5510}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4198,    496}, 0, { -2074,  -5510}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4198,    547}, 0, { -2074,  -5054}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4198,    547}, 0, {  2012,  -5054}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4173,    547}, 0, {  2012,  -4940}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4173,    547}, 0, { -2074,  -4940}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4173,    598}, 0, { -2074,  -4482}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4173,    598}, 0, {  2012,  -4482}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4096,    700}, 0, { -2074,  -3226}, {0x00, 0x38, 0x71, 0xff}}},\n};\n\n// 0x07052B70 - 0x07052C60\nstatic const Vtx inside_castle_seg7_vertex_07052B70[] = {\n    {{{     0,   4326,    240}, 0, {  2012,  -8368}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4326,    291}, 0, { -2074,  -7910}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4326,    291}, 0, {  2012,  -7910}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4378,    137}, 0, {  2012,  -9510}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4378,    188}, 0, { -2074,  -9052}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4378,    188}, 0, {  2012,  -9052}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4378,    137}, 0, { -2074,  -9510}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4403,     86}, 0, {  2012, -10082}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4403,    137}, 0, { -2074,  -9624}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4403,    137}, 0, {  2012,  -9624}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4403,     86}, 0, { -2074, -10082}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4352,    188}, 0, {  2012,  -8938}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4352,    188}, 0, { -2074,  -8938}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4352,    240}, 0, { -2074,  -8482}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4352,    240}, 0, {  2012,  -8482}, {0x00, 0x38, 0x71, 0xff}}},\n};\n\n// 0x07052C60 - 0x07052D50\nstatic const Vtx inside_castle_seg7_vertex_07052C60[] = {\n    {{{     0,   4250,    393}, 0, {  2012,  -6654}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4250,    444}, 0, { -2074,  -6196}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4250,    444}, 0, {  2012,  -6196}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4326,    240}, 0, {  2012,  -8368}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4326,    240}, 0, { -2074,  -8368}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4326,    291}, 0, { -2074,  -7910}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4301,    291}, 0, {  2012,  -7796}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4301,    291}, 0, { -2074,  -7796}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4301,    342}, 0, { -2074,  -7338}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4301,    342}, 0, {  2012,  -7338}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4275,    342}, 0, {  2012,  -7224}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4275,    393}, 0, { -2074,  -6768}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4275,    393}, 0, {  2012,  -6768}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4275,    342}, 0, { -2074,  -7224}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4250,    393}, 0, { -2074,  -6654}, {0x00, 0x38, 0x71, 0xff}}},\n};\n\n// 0x07052D50 - 0x07052E40\nstatic const Vtx inside_castle_seg7_vertex_07052D50[] = {\n    {{{     0,   4890,   -886}, 0, {  2012, -20936}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4890,   -886}, 0, { -2074, -20936}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4890,   -835}, 0, { -2074, -20480}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4224,    444}, 0, {  2012,  -6082}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4224,    496}, 0, { -2074,  -5624}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4224,    496}, 0, {  2012,  -5624}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4224,    444}, 0, { -2074,  -6082}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4915,   -937}, 0, {  2012, -21508}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4915,   -937}, 0, { -2074, -21508}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4915,   -886}, 0, { -2074, -21050}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4915,   -886}, 0, {  2012, -21050}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4941,   -988}, 0, {  2012, -22078}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4941,   -937}, 0, { -2074, -21622}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4941,   -937}, 0, {  2012, -21622}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4941,   -988}, 0, { -2074, -22078}, {0x00, 0x38, 0x71, 0xff}}},\n};\n\n// 0x07052E40 - 0x07052F30\nstatic const Vtx inside_castle_seg7_vertex_07052E40[] = {\n    {{{     0,   4992,  -1091}, 0, {  2012, -23222}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  -409,   4992,  -1039}, 0, { -2074, -22764}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4992,  -1039}, 0, {  2012, -22764}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4890,   -886}, 0, {  2012, -20936}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4890,   -835}, 0, { -2074, -20480}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4890,   -835}, 0, {  2012, -20480}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4864,   -835}, 0, {  2012, -20364}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4864,   -835}, 0, { -2074, -20364}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4864,   -783}, 0, { -2074, -19908}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4864,   -783}, 0, {  2012, -19908}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4838,   -783}, 0, {  2012, -19794}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4838,   -732}, 0, { -2074, -19336}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4838,   -732}, 0, {  2012, -19336}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4838,   -783}, 0, { -2074, -19794}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4992,  -1091}, 0, { -2074, -23222}, {0x54, 0x2a, 0x54, 0xff}}},\n};\n\n// 0x07052F30 - 0x07052F70\nstatic const Vtx inside_castle_seg7_vertex_07052F30[] = {\n    {{{     0,   4966,  -1039}, 0, {  2012, -22650}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4966,  -1039}, 0, { -2074, -22650}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4966,   -988}, 0, { -2074, -22194}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4966,   -988}, 0, {  2012, -22194}, {0x00, 0x38, 0x71, 0xff}}},\n};\n\n// 0x07052F70 - 0x07053060\nstatic const Vtx inside_castle_seg7_vertex_07052F70[] = {\n    {{{     0,   3482,   1980}, 0, {  2012,  10942}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3456,   1980}, 0, { -2074,  11056}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3456,   1980}, 0, {  2012,  11056}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3405,   2134}, 0, {  2012,  12656}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3405,   2134}, 0, { -2074,  12656}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3379,   2134}, 0, { -2074,  12770}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3379,   2134}, 0, {  2012,  12770}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3430,   2083}, 0, {  2012,  12084}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3430,   2083}, 0, { -2074,  12084}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3405,   2083}, 0, { -2074,  12198}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3405,   2083}, 0, {  2012,  12198}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3456,   2032}, 0, {  2012,  11512}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3456,   2032}, 0, { -2074,  11512}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3430,   2032}, 0, { -2074,  11626}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3430,   2032}, 0, {  2012,  11626}, {0x00, 0x71, 0x38, 0xff}}},\n};\n\n// 0x07053060 - 0x07053150\nstatic const Vtx inside_castle_seg7_vertex_07053060[] = {\n    {{{     0,   3584,   1776}, 0, {  2012,   8656}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3584,   1776}, 0, { -2074,   8656}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3558,   1776}, 0, { -2074,   8770}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3482,   1980}, 0, {  2012,  10942}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3482,   1980}, 0, { -2074,  10942}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3456,   1980}, 0, { -2074,  11056}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3507,   1929}, 0, {  2012,  10370}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3482,   1929}, 0, { -2074,  10484}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3482,   1929}, 0, {  2012,  10484}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3507,   1929}, 0, { -2074,  10370}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3533,   1878}, 0, {  2012,   9798}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3533,   1878}, 0, { -2074,   9798}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3507,   1878}, 0, { -2074,   9912}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3507,   1878}, 0, {  2012,   9912}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3558,   1776}, 0, {  2012,   8770}, {0x00, 0x71, 0x38, 0xff}}},\n};\n\n// 0x07053150 - 0x07053240\nstatic const Vtx inside_castle_seg7_vertex_07053150[] = {\n    {{{     0,   3251,   2441}, 0, {  2012,  16084}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3226,   2441}, 0, { -2074,  16198}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3226,   2441}, 0, {  2012,  16198}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3558,   1827}, 0, {  2012,   9228}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3558,   1827}, 0, { -2074,   9228}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3533,   1827}, 0, { -2074,   9342}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3533,   1827}, 0, {  2012,   9342}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3200,   2544}, 0, {  2012,  17226}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3174,   2544}, 0, { -2074,  17340}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{     0,   3174,   2544}, 0, {  2012,  17340}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  -409,   3200,   2544}, 0, { -2074,  17226}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3226,   2492}, 0, {  2012,  16654}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3200,   2492}, 0, { -2074,  16768}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3200,   2492}, 0, {  2012,  16768}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3226,   2492}, 0, { -2074,  16654}, {0x00, 0x71, 0x38, 0xff}}},\n};\n\n// 0x07053240 - 0x07053330\nstatic const Vtx inside_castle_seg7_vertex_07053240[] = {\n    {{{     0,   3379,   2185}, 0, {  2012,  13226}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3354,   2185}, 0, { -2074,  13340}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3354,   2185}, 0, {  2012,  13340}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3251,   2441}, 0, {  2012,  16084}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3251,   2441}, 0, { -2074,  16084}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3226,   2441}, 0, { -2074,  16198}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3277,   2390}, 0, {  2012,  15512}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3277,   2390}, 0, { -2074,  15512}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3251,   2390}, 0, { -2074,  15626}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3251,   2390}, 0, {  2012,  15626}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3354,   2236}, 0, {  2012,  13798}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3354,   2236}, 0, { -2074,  13798}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3328,   2236}, 0, { -2074,  13912}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3328,   2236}, 0, {  2012,  13912}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3379,   2185}, 0, { -2074,  13226}, {0x00, 0x71, 0x38, 0xff}}},\n};\n\n// 0x07053330 - 0x07053420\nstatic const Vtx inside_castle_seg7_vertex_07053330[] = {\n    {{{     0,   3840,   1264}, 0, {  2012,   2942}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3840,   1264}, 0, { -2074,   2942}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3814,   1264}, 0, { -2074,   3058}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3328,   2288}, 0, {  2012,  14370}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3302,   2288}, 0, { -2074,  14484}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3302,   2288}, 0, {  2012,  14484}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3328,   2288}, 0, { -2074,  14370}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3302,   2339}, 0, {  2012,  14940}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3277,   2339}, 0, { -2074,  15054}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3277,   2339}, 0, {  2012,  15054}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3302,   2339}, 0, { -2074,  14940}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3814,   1315}, 0, {  2012,   3514}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3789,   1315}, 0, { -2074,   3628}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3789,   1315}, 0, {  2012,   3628}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3814,   1315}, 0, { -2074,   3514}, {0x00, 0x71, 0x38, 0xff}}},\n};\n\n// 0x07053420 - 0x07053510\nstatic const Vtx inside_castle_seg7_vertex_07053420[] = {\n    {{{     0,   3942,   1059}, 0, {  2012,    660}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3942,   1059}, 0, { -2074,    660}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3917,   1059}, 0, { -2074,    774}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3840,   1264}, 0, {  2012,   2942}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3814,   1264}, 0, { -2074,   3058}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3814,   1264}, 0, {  2012,   3058}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3968,   1008}, 0, {  2012,     88}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3968,   1008}, 0, { -2074,     88}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3942,   1008}, 0, { -2074,    202}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3942,   1008}, 0, {  2012,    202}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3994,    956}, 0, {  2012,   -484}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3994,    956}, 0, { -2074,   -484}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3968,    956}, 0, { -2074,   -368}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3968,    956}, 0, {  2012,   -368}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3917,   1059}, 0, {  2012,    774}, {0x00, 0x71, 0x38, 0xff}}},\n};\n\n// 0x07053510 - 0x07053600\nstatic const Vtx inside_castle_seg7_vertex_07053510[] = {\n    {{{     0,   3712,   1520}, 0, {  2012,   5800}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3686,   1520}, 0, { -2074,   5914}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3686,   1520}, 0, {  2012,   5914}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3917,   1110}, 0, {  2012,   1228}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3917,   1110}, 0, { -2074,   1228}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3891,   1110}, 0, { -2074,   1344}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3891,   1110}, 0, {  2012,   1344}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3891,   1161}, 0, {  2012,   1800}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3891,   1161}, 0, { -2074,   1800}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3866,   1161}, 0, { -2074,   1914}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3866,   1161}, 0, {  2012,   1914}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3866,   1212}, 0, {  2012,   2372}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3866,   1212}, 0, { -2074,   2372}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3840,   1212}, 0, { -2074,   2486}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3840,   1212}, 0, {  2012,   2486}, {0x00, 0x71, 0x38, 0xff}}},\n};\n\n// 0x07053600 - 0x070536F0\nstatic const Vtx inside_castle_seg7_vertex_07053600[] = {\n    {{{     0,   3763,   1417}, 0, {  2012,   4656}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3738,   1417}, 0, { -2074,   4772}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3738,   1417}, 0, {  2012,   4772}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3712,   1520}, 0, {  2012,   5800}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3712,   1520}, 0, { -2074,   5800}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3686,   1520}, 0, { -2074,   5914}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3738,   1468}, 0, {  2012,   5228}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3712,   1468}, 0, { -2074,   5342}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3712,   1468}, 0, {  2012,   5342}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3738,   1468}, 0, { -2074,   5228}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3789,   1366}, 0, {  2012,   4086}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3789,   1366}, 0, { -2074,   4086}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3763,   1366}, 0, { -2074,   4200}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3763,   1366}, 0, {  2012,   4200}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3763,   1417}, 0, { -2074,   4656}, {0x00, 0x71, 0x38, 0xff}}},\n};\n\n// 0x070536F0 - 0x070537E0\nstatic const Vtx inside_castle_seg7_vertex_070536F0[] = {\n    {{{     0,   3610,   1724}, 0, {  2012,   8084}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3584,   1724}, 0, { -2074,   8198}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3584,   1724}, 0, {  2012,   8198}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3686,   1571}, 0, {  2012,   6370}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3686,   1571}, 0, { -2074,   6370}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3661,   1571}, 0, { -2074,   6486}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3661,   1571}, 0, {  2012,   6486}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3661,   1622}, 0, {  2012,   6942}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3635,   1622}, 0, { -2074,   7056}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3635,   1622}, 0, {  2012,   7056}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3661,   1622}, 0, { -2074,   6942}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   3635,   1673}, 0, {  2012,   7514}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3635,   1673}, 0, { -2074,   7514}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3610,   1673}, 0, { -2074,   7628}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3610,   1673}, 0, {  2012,   7628}, {0x00, 0x71, 0x38, 0xff}}},\n};\n\n// 0x070537E0 - 0x070538D0\nstatic const Vtx inside_castle_seg7_vertex_070537E0[] = {\n    {{{     0,   4070,    803}, 0, {  2012,  -2196}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4070,    803}, 0, { -2074,  -2196}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4045,    803}, 0, { -2074,  -2082}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3610,   1724}, 0, {  2012,   8084}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   3610,   1724}, 0, { -2074,   8084}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3584,   1724}, 0, { -2074,   8198}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4019,    905}, 0, {  2012,  -1054}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4019,    905}, 0, { -2074,  -1054}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   3994,    905}, 0, { -2074,   -940}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   3994,    905}, 0, {  2012,   -940}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4045,    854}, 0, {  2012,  -1626}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4019,    854}, 0, { -2074,  -1512}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4019,    854}, 0, {  2012,  -1512}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4045,    854}, 0, { -2074,  -1626}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4045,    803}, 0, {  2012,  -2082}, {0x00, 0x71, 0x38, 0xff}}},\n};\n\n// 0x070538D0 - 0x070539C0\nstatic const Vtx inside_castle_seg7_vertex_070538D0[] = {\n    {{{     0,   4480,    -15}, 0, {  2012, -11338}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4454,    -15}, 0, { -2074, -11224}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4454,    -15}, 0, {  2012, -11224}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4096,    752}, 0, {  2012,  -2768}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4096,    752}, 0, { -2074,  -2768}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4070,    752}, 0, { -2074,  -2654}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4070,    752}, 0, {  2012,  -2654}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4429,     86}, 0, {  2012, -10196}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4403,     86}, 0, { -2074, -10082}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4403,     86}, 0, {  2012, -10082}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4429,     86}, 0, { -2074, -10196}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4454,     35}, 0, {  2012, -10766}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4429,     35}, 0, { -2074, -10652}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4429,     35}, 0, {  2012, -10652}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4454,     35}, 0, { -2074, -10766}, {0x00, 0x71, 0x38, 0xff}}},\n};\n\n// 0x070539C0 - 0x07053AB0\nstatic const Vtx inside_castle_seg7_vertex_070539C0[] = {\n    {{{     0,   4608,   -271}, 0, {  2012, -14194}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4608,   -271}, 0, { -2074, -14194}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4582,   -271}, 0, { -2074, -14080}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4480,    -15}, 0, {  2012, -11338}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4480,    -15}, 0, { -2074, -11338}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4454,    -15}, 0, { -2074, -11224}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4506,    -67}, 0, {  2012, -11910}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4480,    -67}, 0, { -2074, -11796}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4480,    -67}, 0, {  2012, -11796}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4506,    -67}, 0, { -2074, -11910}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4582,   -220}, 0, {  2012, -13624}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4582,   -220}, 0, { -2074, -13624}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4557,   -220}, 0, { -2074, -13510}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4557,   -220}, 0, {  2012, -13510}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4582,   -271}, 0, {  2012, -14080}, {0x00, 0x71, 0x38, 0xff}}},\n};\n\n// 0x07053AB0 - 0x07053BA0\nstatic const Vtx inside_castle_seg7_vertex_07053AB0[] = {\n    {{{     0,   4710,   -476}, 0, {  2012, -16480}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4685,   -476}, 0, { -2074, -16366}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4685,   -476}, 0, {  2012, -16366}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4557,   -169}, 0, {  2012, -13052}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4557,   -169}, 0, { -2074, -13052}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4531,   -169}, 0, { -2074, -12938}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4531,   -169}, 0, {  2012, -12938}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4531,   -118}, 0, {  2012, -12480}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4506,   -118}, 0, { -2074, -12366}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4506,   -118}, 0, {  2012, -12366}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4531,   -118}, 0, { -2074, -12480}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4685,   -425}, 0, {  2012, -15908}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4685,   -425}, 0, { -2074, -15908}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4659,   -425}, 0, { -2074, -15794}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4659,   -425}, 0, {  2012, -15794}, {0x00, 0x71, 0x38, 0xff}}},\n};\n\n// 0x07053BA0 - 0x07053C90\nstatic const Vtx inside_castle_seg7_vertex_07053BA0[] = {\n    {{{     0,   4813,   -681}, 0, {  2012, -18766}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4787,   -681}, 0, { -2074, -18650}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4787,   -681}, 0, {  2012, -18650}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4710,   -476}, 0, {  2012, -16480}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4710,   -476}, 0, { -2074, -16480}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4685,   -476}, 0, { -2074, -16366}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4736,   -527}, 0, {  2012, -17052}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4710,   -527}, 0, { -2074, -16936}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4710,   -527}, 0, {  2012, -16936}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4736,   -527}, 0, { -2074, -17052}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4762,   -579}, 0, {  2012, -17622}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4736,   -579}, 0, { -2074, -17508}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4736,   -579}, 0, {  2012, -17508}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4762,   -579}, 0, { -2074, -17622}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4813,   -681}, 0, { -2074, -18766}, {0x00, 0x71, 0x38, 0xff}}},\n};\n\n// 0x07053C90 - 0x07053D80\nstatic const Vtx inside_castle_seg7_vertex_07053C90[] = {\n    {{{     0,   4122,    700}, 0, {  2012,  -3340}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4122,    700}, 0, { -2074,  -3340}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4096,    700}, 0, { -2074,  -3226}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4787,   -630}, 0, {  2012, -18194}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4762,   -630}, 0, { -2074, -18080}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4762,   -630}, 0, {  2012, -18080}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4787,   -630}, 0, { -2074, -18194}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4659,   -374}, 0, {  2012, -15338}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4634,   -374}, 0, { -2074, -15222}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4634,   -374}, 0, {  2012, -15224}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4659,   -374}, 0, { -2074, -15338}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4634,   -323}, 0, {  2012, -14766}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4634,   -323}, 0, { -2074, -14766}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4608,   -323}, 0, { -2074, -14652}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4608,   -323}, 0, {  2012, -14652}, {0x00, 0x71, 0x38, 0xff}}},\n};\n\n// 0x07053D80 - 0x07053E70\nstatic const Vtx inside_castle_seg7_vertex_07053D80[] = {\n    {{{     0,   4173,    598}, 0, {  2012,  -4482}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4147,    598}, 0, { -2074,  -4368}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4147,    598}, 0, {  2012,  -4368}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4122,    700}, 0, {  2012,  -3340}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4096,    700}, 0, { -2074,  -3226}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4096,    700}, 0, {  2012,  -3226}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4147,    649}, 0, {  2012,  -3910}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4122,    649}, 0, { -2074,  -3796}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4122,    649}, 0, {  2012,  -3796}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4147,    649}, 0, { -2074,  -3910}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4198,    547}, 0, {  2012,  -5054}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4173,    547}, 0, { -2074,  -4940}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4173,    547}, 0, {  2012,  -4940}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4198,    547}, 0, { -2074,  -5054}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4173,    598}, 0, { -2074,  -4482}, {0x00, 0x71, 0x38, 0xff}}},\n};\n\n// 0x07053E70 - 0x07053F60\nstatic const Vtx inside_castle_seg7_vertex_07053E70[] = {\n    {{{     0,   4326,    291}, 0, {  2012,  -7910}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4326,    291}, 0, { -2074,  -7910}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4301,    291}, 0, { -2074,  -7796}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4378,    188}, 0, {  2012,  -9052}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4352,    188}, 0, { -2074,  -8938}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4352,    188}, 0, {  2012,  -8938}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4378,    188}, 0, { -2074,  -9052}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4403,    137}, 0, {  2012,  -9624}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4403,    137}, 0, { -2074,  -9624}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4378,    137}, 0, { -2074,  -9510}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4378,    137}, 0, {  2012,  -9510}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4352,    240}, 0, {  2012,  -8482}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4326,    240}, 0, { -2074,  -8368}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4326,    240}, 0, {  2012,  -8368}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4352,    240}, 0, { -2074,  -8482}, {0x00, 0x71, 0x38, 0xff}}},\n};\n\n// 0x07053F60 - 0x07054050\nstatic const Vtx inside_castle_seg7_vertex_07053F60[] = {\n    {{{     0,   4250,    444}, 0, {  2012,  -6196}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4224,    444}, 0, { -2074,  -6082}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4224,    444}, 0, {  2012,  -6082}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4326,    291}, 0, {  2012,  -7910}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4301,    291}, 0, { -2074,  -7796}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4301,    291}, 0, {  2012,  -7796}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4301,    342}, 0, {  2012,  -7338}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4275,    342}, 0, { -2074,  -7224}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4275,    342}, 0, {  2012,  -7224}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4301,    342}, 0, { -2074,  -7338}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4275,    393}, 0, {  2012,  -6768}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4250,    393}, 0, { -2074,  -6654}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4250,    393}, 0, {  2012,  -6654}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4275,    393}, 0, { -2074,  -6768}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4250,    444}, 0, { -2074,  -6196}, {0x00, 0x71, 0x38, 0xff}}},\n};\n\n// 0x07054050 - 0x07054140\nstatic const Vtx inside_castle_seg7_vertex_07054050[] = {\n    {{{     0,   4941,   -937}, 0, {  2012, -21622}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4941,   -937}, 0, { -2074, -21622}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4915,   -937}, 0, { -2074, -21508}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4224,    496}, 0, {  2012,  -5624}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4224,    496}, 0, { -2074,  -5624}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4198,    496}, 0, { -2074,  -5510}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4198,    496}, 0, {  2012,  -5510}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4838,   -732}, 0, {  2012, -19336}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4838,   -732}, 0, { -2074, -19336}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4813,   -732}, 0, { -2074, -19222}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4813,   -732}, 0, {  2012, -19222}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4915,   -886}, 0, {  2012, -21050}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4890,   -886}, 0, { -2074, -20936}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4890,   -886}, 0, {  2012, -20936}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4915,   -886}, 0, { -2074, -21050}, {0x00, 0x71, 0x38, 0xff}}},\n};\n\n// 0x07054140 - 0x07054230\nstatic const Vtx inside_castle_seg7_vertex_07054140[] = {\n    {{{     0,   5018,  -1091}, 0, {  2012, -23336}, {0xb4, 0x4d, 0x40, 0xff}}},\n    {{{  -409,   4992,  -1091}, 0, { -2074, -23222}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{     0,   4992,  -1091}, 0, {  2012, -23222}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{     0,   4941,   -937}, 0, {  2012, -21622}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4915,   -937}, 0, { -2074, -21508}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4915,   -937}, 0, {  2012, -21508}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4890,   -835}, 0, {  2012, -20480}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4890,   -835}, 0, { -2074, -20480}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4864,   -835}, 0, { -2074, -20364}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4864,   -835}, 0, {  2012, -20364}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4864,   -783}, 0, {  2012, -19908}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4838,   -783}, 0, { -2074, -19794}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4838,   -783}, 0, {  2012, -19794}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4864,   -783}, 0, { -2074, -19908}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   5018,  -1091}, 0, { -2074, -23336}, {0x4c, 0x4d, 0x40, 0xff}}},\n};\n\n// 0x07054230 - 0x070542B0\nstatic const Vtx inside_castle_seg7_vertex_07054230[] = {\n    {{{     0,   4992,  -1039}, 0, {  2012, -22764}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4992,  -1039}, 0, { -2074, -22764}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4966,  -1039}, 0, { -2074, -22650}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4966,  -1039}, 0, {  2012, -22650}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{     0,   4966,   -988}, 0, {  2012, -22194}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -409,   4941,   -988}, 0, { -2074, -22078}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   4941,   -988}, 0, {  2012, -22078}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -409,   4966,   -988}, 0, { -2074, -22194}, {0x00, 0x71, 0x38, 0xff}}},\n};\n\n// 0x070542B0 - 0x070543B0\nstatic const Vtx inside_castle_seg7_vertex_070542B0[] = {\n    {{{  -332,   4813,  -3453}, 0, {  2012,   4054}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{  -332,   5120,  -3453}, 0, {  2012,    990}, {0x21, 0x65, 0x43, 0xff}}},\n    {{{  -332,   5120,  -3248}, 0, {     0,    990}, {0x43, 0x65, 0xdf, 0xff}}},\n    {{{   -25,   5018,  -3555}, 0, {     0,    990}, {0x43, 0x65, 0xdf, 0xff}}},\n    {{{   -25,   5120,  -3146}, 0, {  4056,      0}, {0x43, 0x65, 0x21, 0xff}}},\n    {{{   -25,   5018,  -3146}, 0, {  4056,    990}, {0x21, 0x65, 0x43, 0xff}}},\n    {{{   -25,   5120,  -3555}, 0, {     0,      0}, {0x21, 0x65, 0xbd, 0xff}}},\n    {{{  -127,   4813,  -3248}, 0, {     0,   4054}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{  -127,   5120,  -3248}, 0, {     0,    990}, {0xdf, 0x65, 0xbd, 0xff}}},\n    {{{  -127,   5120,  -3453}, 0, {  2012,    990}, {0xbd, 0x65, 0x21, 0xff}}},\n    {{{  -127,   4813,  -3453}, 0, {  2012,   4054}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  -127,   4813,  -3453}, 0, {     0,   4054}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  -127,   5120,  -3453}, 0, {     0,    990}, {0xbd, 0x65, 0x21, 0xff}}},\n    {{{  -434,   5018,  -3146}, 0, {  4056,    990}, {0xac, 0x54, 0x2a, 0xff}}},\n    {{{  -434,   5120,  -3146}, 0, {  4056,      0}, {0xdf, 0x65, 0x43, 0xff}}},\n    {{{  -434,   5120,  -3555}, 0, {     0,      0}, {0xbd, 0x65, 0xdf, 0xff}}},\n};\n\n// 0x070543B0 - 0x07054490\nstatic const Vtx inside_castle_seg7_vertex_070543B0[] = {\n    {{{  -332,   4813,  -3453}, 0, {  2012,   4054}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{  -332,   5120,  -3248}, 0, {     0,    990}, {0x43, 0x65, 0xdf, 0xff}}},\n    {{{  -332,   4813,  -3248}, 0, {     0,   4054}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{  -332,   4813,  -3248}, 0, {  2012,   4054}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{  -127,   5120,  -3248}, 0, {     0,    990}, {0xdf, 0x65, 0xbd, 0xff}}},\n    {{{  -127,   4813,  -3248}, 0, {     0,   4054}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{  -332,   5120,  -3248}, 0, {  2012,    990}, {0x43, 0x65, 0xdf, 0xff}}},\n    {{{   -25,   5018,  -3146}, 0, {  4056,    990}, {0x21, 0x65, 0x43, 0xff}}},\n    {{{   -25,   5120,  -3146}, 0, {  4056,      0}, {0x43, 0x65, 0x21, 0xff}}},\n    {{{  -434,   5120,  -3146}, 0, {     0,      0}, {0xdf, 0x65, 0x43, 0xff}}},\n    {{{  -434,   5018,  -3146}, 0, {     0,    990}, {0xac, 0x54, 0x2a, 0xff}}},\n    {{{  -434,   5018,  -3146}, 0, {  4056,    990}, {0xac, 0x54, 0x2a, 0xff}}},\n    {{{  -434,   5120,  -3555}, 0, {     0,      0}, {0xbd, 0x65, 0xdf, 0xff}}},\n    {{{  -434,   5018,  -3555}, 0, {     0,    990}, {0xe5, 0x6e, 0xc9, 0xff}}},\n};\n\n// 0x07054490 - 0x07054580\nstatic const Vtx inside_castle_seg7_vertex_07054490[] = {\n    {{{  -434,   5120,  -3555}, 0, {     0,    990}, {0xbd, 0x65, 0xdf, 0xff}}},\n    {{{  -332,   5120,  -3248}, 0, {  3034,      0}, {0x43, 0x65, 0xdf, 0xff}}},\n    {{{  -332,   5120,  -3453}, 0, {   990,      0}, {0x21, 0x65, 0x43, 0xff}}},\n    {{{  -434,   5018,  -3555}, 0, {     0,    990}, {0xe5, 0x6e, 0xc9, 0xff}}},\n    {{{  -434,   5120,  -3555}, 0, {     0,      0}, {0xbd, 0x65, 0xdf, 0xff}}},\n    {{{   -25,   5120,  -3555}, 0, {  4056,      0}, {0x21, 0x65, 0xbd, 0xff}}},\n    {{{   -25,   5018,  -3555}, 0, {  4056,    990}, {0x43, 0x65, 0xdf, 0xff}}},\n    {{{  -127,   5120,  -3453}, 0, {  3034,      0}, {0xbd, 0x65, 0x21, 0xff}}},\n    {{{   -25,   5120,  -3146}, 0, {     0,    990}, {0x43, 0x65, 0x21, 0xff}}},\n    {{{   -25,   5120,  -3555}, 0, {  4056,    990}, {0x21, 0x65, 0xbd, 0xff}}},\n    {{{  -127,   5120,  -3248}, 0, {   990,      0}, {0xdf, 0x65, 0xbd, 0xff}}},\n    {{{  -434,   5120,  -3146}, 0, {     0,    990}, {0xdf, 0x65, 0x43, 0xff}}},\n    {{{   -25,   5120,  -3146}, 0, {  4056,    990}, {0x43, 0x65, 0x21, 0xff}}},\n    {{{  -127,   5120,  -3248}, 0, {  3034,      0}, {0xdf, 0x65, 0xbd, 0xff}}},\n    {{{  -332,   5120,  -3248}, 0, {   990,      0}, {0x43, 0x65, 0xdf, 0xff}}},\n};\n\n// 0x07054580 - 0x07054680\nstatic const Vtx inside_castle_seg7_vertex_07054580[] = {\n    {{{   282,   5837,  -2787}, 0, {  7924,  -1438}, {0xb5, 0x9b, 0xf5, 0xff}}},\n    {{{  -690,   5837,  -2787}, 0, {  7924,   3416}, {0x69, 0xba, 0xf9, 0xff}}},\n    {{{  -690,   5837,  -3811}, 0, { 13034,   3416}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{  -434,   5120,  -3555}, 0, {     0,    990}, {0xbd, 0x65, 0xdf, 0xff}}},\n    {{{  -434,   5120,  -3146}, 0, {  4056,    990}, {0xdf, 0x65, 0x43, 0xff}}},\n    {{{  -332,   5120,  -3248}, 0, {  3034,      0}, {0x43, 0x65, 0xdf, 0xff}}},\n    {{{   -25,   5120,  -3555}, 0, {     0,    990}, {0x21, 0x65, 0xbd, 0xff}}},\n    {{{  -332,   5120,  -3453}, 0, {  3034,      0}, {0x21, 0x65, 0x43, 0xff}}},\n    {{{  -127,   5120,  -3453}, 0, {   990,      0}, {0xbd, 0x65, 0x21, 0xff}}},\n    {{{  -434,   5120,  -3555}, 0, {  4056,    990}, {0xbd, 0x65, 0xdf, 0xff}}},\n    {{{     0,   5734,  -1091}, 0, {  -542,      0}, {0x97, 0xbe, 0xe9, 0xff}}},\n    {{{  -409,   5734,  -1091}, 0, {  -542,   2010}, {0x4b, 0xa0, 0xde, 0xff}}},\n    {{{   282,   5837,  -3811}, 0, { 13034,  -1438}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{   282,   5837,  -3811}, 0, {-26164,  -7186}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{   282,   5018,  -3811}, 0, {-26164,    990}, {0xdf, 0x65, 0x43, 0xff}}},\n    {{{   282,   5018,  -2787}, 0, {-15944,    990}, {0xb5, 0x65, 0xfc, 0xff}}},\n};\n\n// 0x07054680 - 0x07054760\nstatic const Vtx inside_castle_seg7_vertex_07054680[] = {\n    {{{   282,   5837,  -3811}, 0, {-26164,  -7186}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{   282,   5018,  -2787}, 0, {-15944,    990}, {0xb5, 0x65, 0xfc, 0xff}}},\n    {{{   282,   5837,  -2787}, 0, {-15944,  -7186}, {0xb5, 0x9b, 0xf5, 0xff}}},\n    {{{     0,   5018,  -1091}, 0, {   990,    990}, {0xb4, 0x4d, 0x40, 0xff}}},\n    {{{     0,   5734,  -1091}, 0, {   990,  -6164}, {0x97, 0xbe, 0xe9, 0xff}}},\n    {{{  -690,   5837,  -2787}, 0, { 16904,  -7186}, {0x69, 0xba, 0xf9, 0xff}}},\n    {{{  -690,   5018,  -2787}, 0, { 16904,    990}, {0x38, 0x71, 0xfa, 0xff}}},\n    {{{  -690,   5018,  -3811}, 0, { 27124,    990}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{  -690,   5837,  -3811}, 0, { 27124,  -7186}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{  -690,   5837,  -3811}, 0, {     0,  -7186}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{  -690,   5018,  -3811}, 0, {     0,    990}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{   282,   5018,  -3811}, 0, {  9678,    990}, {0xdf, 0x65, 0x43, 0xff}}},\n    {{{   282,   5837,  -3811}, 0, {  9678,  -7186}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{  -409,   5734,  -1091}, 0, {     0,  -6164}, {0x4b, 0xa0, 0xde, 0xff}}},\n};\n\n// 0x07054760 - 0x07054850\nstatic const Vtx inside_castle_seg7_vertex_07054760[] = {\n    {{{  -409,   4992,  -1091}, 0, { 18364,  -5908}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  -409,   5734,  -1091}, 0, { 18364, -13318}, {0x4b, 0xa0, 0xde, 0xff}}},\n    {{{  -409,   3891,   2544}, 0, {-17916,   5076}, {0x71, 0xce, 0xe7, 0xff}}},\n    {{{  -409,   3174,   2544}, 0, {-17916,  12230}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{     0,   3174,   2544}, 0, {-17916,  12230}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{     0,   5734,  -1091}, 0, { 18364, -13318}, {0x97, 0xbe, 0xe9, 0xff}}},\n    {{{     0,   4992,  -1091}, 0, { 18364,  -5908}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{     0,   3891,   2544}, 0, {-17916,   5076}, {0xc8, 0x9b, 0xcd, 0xff}}},\n    {{{  -409,   5734,  -1091}, 0, { 16320,    990}, {0x4b, 0xa0, 0xde, 0xff}}},\n    {{{     0,   3891,   2544}, 0, {-19960,  -1054}, {0xc8, 0x9b, 0xcd, 0xff}}},\n    {{{  -409,   3891,   2544}, 0, {-19960,    990}, {0x71, 0xce, 0xe7, 0xff}}},\n    {{{     0,   5734,  -1091}, 0, { 16320,  -1054}, {0x97, 0xbe, 0xe9, 0xff}}},\n    {{{  -409,   5734,  -1091}, 0, {     0,  -6164}, {0x4b, 0xa0, 0xde, 0xff}}},\n    {{{  -409,   5018,  -1091}, 0, {     0,    990}, {0x4c, 0x4d, 0x40, 0xff}}},\n    {{{  -690,   5018,  -2787}, 0, { 16904,    990}, {0x38, 0x71, 0xfa, 0xff}}},\n};\n\n// 0x07054850 - 0x07054950\nstatic const Vtx inside_castle_seg7_vertex_07054850[] = {\n    {{{  -639,   5018,  -3709}, 0, {   224,   2012}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  -690,   5837,  -3709}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -690,   5018,  -3709}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   179,   5018,  -3760}, 0, {   224,   2012}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{   179,   5837,  -3811}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   179,   5018,  -3811}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   179,   5837,  -3760}, 0, {   224,      0}, {0x93, 0x00, 0x40, 0xff}}},\n    {{{   230,   5018,  -3709}, 0, {   734,   2012}, {0xc0, 0x00, 0x6d, 0xff}}},\n    {{{   230,   5837,  -3709}, 0, {   734,      0}, {0xe0, 0x00, 0x7a, 0xff}}},\n    {{{   282,   5018,  -3709}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   282,   5837,  -3709}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -639,   5837,  -3709}, 0, {   224,      0}, {0x40, 0x00, 0x6d, 0xff}}},\n    {{{  -588,   5018,  -3760}, 0, {   734,   2012}, {0x6d, 0x00, 0x40, 0xff}}},\n    {{{  -690,   5018,  -2890}, 0, {   990,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -690,   5837,  -2890}, 0, {   990,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -639,   5837,  -2839}, 0, {   734,      0}, {0x6d, 0x00, 0xc0, 0xff}}},\n};\n\n// 0x07054950 - 0x07054A50\nstatic const Vtx inside_castle_seg7_vertex_07054950[] = {\n    {{{  -588,   5018,  -3760}, 0, {   734,   2012}, {0x6d, 0x00, 0x40, 0xff}}},\n    {{{  -588,   5837,  -3760}, 0, {   734,      0}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{  -639,   5837,  -3709}, 0, {   224,      0}, {0x40, 0x00, 0x6d, 0xff}}},\n    {{{  -588,   5018,  -3811}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -588,   5837,  -3811}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -639,   5018,  -2736}, 0, {   224,   2012}, {0x6d, 0x00, 0x40, 0xff}}},\n    {{{  -639,   5837,  -2736}, 0, {   224,      0}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{  -690,   5837,  -2685}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -690,   5018,  -2685}, 0, {     0,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -639,   5018,  -2839}, 0, {   734,   2012}, {0x7a, 0x00, 0xe0, 0xff}}},\n    {{{  -639,   5837,  -2839}, 0, {   734,      0}, {0x6d, 0x00, 0xc0, 0xff}}},\n    {{{  -690,   5018,  -2890}, 0, {   990,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   230,   5018,  -2839}, 0, {   224,   2012}, {0x93, 0x00, 0xc0, 0xff}}},\n    {{{   282,   5837,  -2890}, 0, {     0,      0}, {0xa8, 0x00, 0xa6, 0xff}}},\n    {{{   282,   5018,  -2890}, 0, {     0,   2012}, {0xa8, 0x00, 0xa6, 0xff}}},\n    {{{   230,   5837,  -2839}, 0, {   224,      0}, {0x86, 0x00, 0xe0, 0xff}}},\n};\n\n// 0x07054A50 - 0x07054AB0\nstatic const Vtx inside_castle_seg7_vertex_07054A50[] = {\n    {{{   230,   5018,  -2736}, 0, {   734,   2012}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{   230,   5837,  -2839}, 0, {   224,      0}, {0x86, 0x00, 0xe0, 0xff}}},\n    {{{   230,   5018,  -2839}, 0, {   224,   2012}, {0x93, 0x00, 0xc0, 0xff}}},\n    {{{   230,   5837,  -2736}, 0, {   734,      0}, {0x93, 0x00, 0x40, 0xff}}},\n    {{{   282,   5018,  -2685}, 0, {   990,   2012}, {0xa8, 0x00, 0x5a, 0xff}}},\n    {{{   282,   5837,  -2685}, 0, {   990,      0}, {0xa8, 0x00, 0x5a, 0xff}}},\n};\n\n// 0x07054AB0 - 0x07054AF0\nstatic const Vtx inside_castle_seg7_vertex_07054AB0[] = {\n    {{{  -332,   4813,  -3248}, 0, {     0,      0}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{  -127,   4813,  -3248}, 0, {     0,      0}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{  -127,   4813,  -3453}, 0, {     0,      0}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  -332,   4813,  -3453}, 0, {     0,      0}, {0x67, 0x33, 0x33, 0xff}}},\n};\n\n// 0x07054AF0 - 0x07054B78\nstatic const Gfx inside_castle_seg7_dl_07054AF0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_07051B88.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07051B88.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07051BD0, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  5,  2,  1, 0x0),\n    gsSP2Triangles( 5,  1,  6, 0x0,  5,  7,  2, 0x0),\n    gsSP2Triangles( 3,  4,  8, 0x0,  5,  9,  7, 0x0),\n    gsSP2Triangles( 3,  8,  5, 0x0,  5,  6,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07054B78 - 0x070555E8\nstatic const Gfx inside_castle_seg7_dl_07054B78[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07051C70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07051D60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07051E50, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07051F40, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07052030, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07052120, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07052210, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07052300, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070523F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070524E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070525D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070526C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070527B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070528A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07052990, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07052A80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07052B70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07052C60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07052D50, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07052E40, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07052F30, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_07051BA0.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07051BA0.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07052F70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07053060, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07053150, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07053240, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07053330, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07053420, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07053510, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07053600, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070536F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070537E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070538D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070539C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07053AB0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07053BA0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07053C90, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07053D80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07053E70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07053F60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07054050, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07054140, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07054230, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070555E8 - 0x070557A8\nstatic const Gfx inside_castle_seg7_dl_070555E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_07051B88.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07051B88.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_070542B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11,  1,  0, 0x0),\n    gsSP2Triangles(11, 12,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070543B0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07054490, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07054580, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 0, 10, 11, 0x0,  0, 11,  1, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07054680, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13,  6,  5, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07054760, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070557A8 - 0x070558A0\nstatic const Gfx inside_castle_seg7_dl_070557A8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07054850, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  6,  3, 0x0),\n    gsSP2Triangles( 7,  8,  6, 0x0,  9,  8,  7, 0x0),\n    gsSP2Triangles( 9, 10,  8, 0x0,  0, 11,  1, 0x0),\n    gsSP2Triangles(12, 11,  0, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07054950, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 3,  4,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  9,  6,  5, 0x0),\n    gsSP2Triangles( 9, 10,  6, 0x0, 11, 10,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07054A50, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  3,  0, 0x0,  4,  5,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070558A0 - 0x070558D0\nstatic const Gfx inside_castle_seg7_dl_070558A0[] = {\n    gsSPLight(&inside_castle_seg7_lights_07051BB8.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07051BB8.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07054AB0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070558D0 - 0x070559C0\nconst Gfx inside_castle_seg7_dl_070558D0[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(950, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07054AF0),\n    gsSPDisplayList(inside_castle_seg7_dl_07054B78),\n    gsSPDisplayList(inside_castle_seg7_dl_070555E8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_070557A8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_PASS2),\n    gsSPDisplayList(inside_castle_seg7_dl_070558A0),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/2/14/model.inc.c",
    "content": "// 0x070559C0 - 0x070559D8\nstatic const Lights1 inside_castle_seg7_lights_070559C0 = gdSPDefLights1(\n    0x40, 0x24, 0x1e,\n    0xac, 0x61, 0x52, 0x28, 0x28, 0x28\n);\n\n// 0x070559D8 - 0x070559F0\nstatic const Lights1 inside_castle_seg7_lights_070559D8 = gdSPDefLights1(\n    0x5f, 0x5f, 0x5f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x070559F0 - 0x07055AE0\nstatic const Vtx inside_castle_seg7_vertex_070559F0[] = {\n    {{{  -398,   4608,    700}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4506,    700}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4506,    598}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   5018,   -118}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4915,   -118}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4915,   -220}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   5018,   -220}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   5222,   -527}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   5120,   -527}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   5120,   -630}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   5222,   -630}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4813,    291}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4710,    188}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4813,    188}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4710,    291}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07055AE0 - 0x07055BD0\nstatic const Vtx inside_castle_seg7_vertex_07055AE0[] = {\n    {{{  -398,   3994,   1929}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   3891,   1929}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   3891,   1827}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4608,    700}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4506,    598}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4608,    598}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4403,   1110}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4301,   1008}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4403,   1008}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4301,   1110}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4198,   1520}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4096,   1520}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4096,   1417}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4198,   1417}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   3994,   1827}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07055BD0 - 0x07055C10\nstatic const Vtx inside_castle_seg7_vertex_07055BD0[] = {\n    {{{  -398,   3789,   2339}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   3686,   2236}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   3789,   2236}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   3686,   2339}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07055C10 - 0x07055C50\nstatic const Vtx inside_castle_seg7_vertex_07055C10[] = {\n    {{{  -204,   5734,  -3801}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,   5734,  -3801}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,   5427,  -3801}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -204,   5427,  -3801}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07055C50 - 0x07055D40\nstatic const Vtx inside_castle_seg7_vertex_07055C50[] = {\n    {{{  -398,   4608,    598}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4506,    496}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4608,    496}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   5018,   -220}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4915,   -323}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   5018,   -323}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4915,   -220}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   5222,   -630}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   5120,   -630}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   5120,   -732}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   5222,   -732}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4813,    188}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4710,     86}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4813,     86}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4710,    188}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07055D40 - 0x07055E30\nstatic const Vtx inside_castle_seg7_vertex_07055D40[] = {\n    {{{  -398,   3994,   1827}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   3891,   1827}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   3891,   1724}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4608,    598}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4506,    598}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4506,    496}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4403,   1008}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4301,    905}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4403,    905}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4301,   1008}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4198,   1417}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4096,   1417}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4096,   1315}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4198,   1315}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   3994,   1724}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07055E30 - 0x07055E70\nstatic const Vtx inside_castle_seg7_vertex_07055E30[] = {\n    {{{  -398,   3789,   2236}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   3686,   2236}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   3686,   2134}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   3789,   2134}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07055E70 - 0x07055EB0\nstatic const Vtx inside_castle_seg7_vertex_07055E70[] = {\n    {{{   102,   5734,  -3801}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -204,   5734,  -3801}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -204,   5427,  -3801}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,   5427,  -3801}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07055EB0 - 0x07055FA0\nstatic const Vtx inside_castle_seg7_vertex_07055EB0[] = {\n    {{{  -398,   4506,    700}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4403,    700}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4403,    598}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4915,   -118}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4813,   -220}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4915,   -220}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4813,   -118}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   5120,   -527}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   5018,   -630}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   5120,   -630}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   5018,   -527}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4710,    291}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4608,    188}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4710,    188}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4608,    291}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07055FA0 - 0x07056090\nstatic const Vtx inside_castle_seg7_vertex_07055FA0[] = {\n    {{{  -398,   3891,   1929}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   3789,   1929}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   3789,   1827}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4506,    700}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4403,    598}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4506,    598}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4301,   1110}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4198,   1110}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4198,   1008}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4301,   1008}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4096,   1520}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   3994,   1417}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4096,   1417}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   3994,   1520}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   3891,   1827}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07056090 - 0x070560D0\nstatic const Vtx inside_castle_seg7_vertex_07056090[] = {\n    {{{  -398,   3686,   2339}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   3584,   2236}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   3686,   2236}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   3584,   2339}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070560D0 - 0x07056110\nstatic const Vtx inside_castle_seg7_vertex_070560D0[] = {\n    {{{  -204,   5427,  -3801}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,   5427,  -3801}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,   5120,  -3801}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -204,   5120,  -3801}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07056110 - 0x07056200\nstatic const Vtx inside_castle_seg7_vertex_07056110[] = {\n    {{{  -398,   4506,    598}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4403,    598}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4403,    496}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4915,   -220}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4813,   -323}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4915,   -323}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4813,   -220}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   5120,   -630}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   5018,   -732}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   5120,   -732}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   5018,   -630}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4710,    188}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4608,    188}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4608,     86}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4710,     86}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07056200 - 0x070562F0\nstatic const Vtx inside_castle_seg7_vertex_07056200[] = {\n    {{{  -398,   3891,   1827}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   3789,   1827}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   3789,   1724}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4506,    598}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4403,    496}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4506,    496}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4301,   1008}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4198,   1008}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4198,    905}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4301,    905}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4096,   1417}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   3994,   1315}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   4096,   1315}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   3994,   1417}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   3891,   1724}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070562F0 - 0x07056330\nstatic const Vtx inside_castle_seg7_vertex_070562F0[] = {\n    {{{  -398,   3686,   2236}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   3584,   2134}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   3686,   2134}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -398,   3584,   2236}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07056330 - 0x07056370\nstatic const Vtx inside_castle_seg7_vertex_07056330[] = {\n    {{{   102,   5427,  -3801}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -204,   5120,  -3801}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,   5120,  -3801}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -204,   5427,  -3801}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07056370 - 0x07056460\nstatic const Vtx inside_castle_seg7_vertex_07056370[] = {\n    {{{    -9,   4608,    496}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4506,    496}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4506,    598}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   5222,   -732}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   5120,   -630}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   5222,   -630}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   5120,   -732}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   5018,   -323}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4915,   -220}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   5018,   -220}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4915,   -323}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4813,     86}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4710,     86}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4710,    188}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4813,    188}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07056460 - 0x07056550\nstatic const Vtx inside_castle_seg7_vertex_07056460[] = {\n    {{{    -9,   3994,   1724}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   3891,   1724}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   3891,   1827}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4608,    496}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4506,    598}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4608,    598}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4403,    905}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4301,   1008}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4403,   1008}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4301,    905}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4198,   1315}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4096,   1315}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4096,   1417}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4198,   1417}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   3994,   1827}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07056550 - 0x07056590\nstatic const Vtx inside_castle_seg7_vertex_07056550[] = {\n    {{{    -9,   3789,   2134}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   3686,   2134}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   3686,   2236}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   3789,   2236}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07056590 - 0x07056680\nstatic const Vtx inside_castle_seg7_vertex_07056590[] = {\n    {{{    -9,   4608,    598}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4506,    598}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4506,    700}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   5222,   -630}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   5120,   -630}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   5120,   -527}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   5222,   -527}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   5018,   -220}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4915,   -118}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   5018,   -118}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4915,   -220}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4813,    188}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4710,    291}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4813,    291}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4710,    188}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07056680 - 0x07056770\nstatic const Vtx inside_castle_seg7_vertex_07056680[] = {\n    {{{    -9,   3994,   1827}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   3891,   1827}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   3891,   1929}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4608,    598}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4506,    700}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4608,    700}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4403,   1008}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4301,   1008}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4301,   1110}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4403,   1110}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4198,   1417}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4096,   1520}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4198,   1520}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4096,   1417}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   3994,   1929}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07056770 - 0x070567B0\nstatic const Vtx inside_castle_seg7_vertex_07056770[] = {\n    {{{    -9,   3789,   2236}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   3686,   2236}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   3686,   2339}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   3789,   2339}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070567B0 - 0x070568A0\nstatic const Vtx inside_castle_seg7_vertex_070567B0[] = {\n    {{{    -9,   4506,    496}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4403,    496}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4403,    598}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   5120,   -732}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   5018,   -630}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   5120,   -630}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   5018,   -732}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4915,   -323}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4813,   -323}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4813,   -220}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4915,   -220}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4710,     86}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4608,     86}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4608,    188}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4710,    188}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070568A0 - 0x07056990\nstatic const Vtx inside_castle_seg7_vertex_070568A0[] = {\n    {{{    -9,   3891,   1724}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   3789,   1827}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   3891,   1827}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4506,    496}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4403,    598}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4506,    598}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4301,    905}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4198,   1008}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4301,   1008}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4198,    905}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4096,   1315}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   3994,   1315}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   3994,   1417}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4096,   1417}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   3789,   1724}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07056990 - 0x070569D0\nstatic const Vtx inside_castle_seg7_vertex_07056990[] = {\n    {{{    -9,   3686,   2134}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   3584,   2134}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   3584,   2236}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   3686,   2236}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070569D0 - 0x07056AC0\nstatic const Vtx inside_castle_seg7_vertex_070569D0[] = {\n    {{{    -9,   4506,    598}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4403,    598}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4403,    700}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   5120,   -630}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   5018,   -527}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   5120,   -527}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   5018,   -630}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4915,   -220}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4813,   -118}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4915,   -118}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4813,   -220}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4710,    188}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4608,    188}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4608,    291}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4710,    291}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07056AC0 - 0x07056BB0\nstatic const Vtx inside_castle_seg7_vertex_07056AC0[] = {\n    {{{    -9,   3891,   1827}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   3789,   1929}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   3891,   1929}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4506,    598}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4403,    700}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4506,    700}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4301,   1008}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4198,   1110}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4301,   1110}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4198,   1008}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4096,   1417}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   3994,   1417}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   3994,   1520}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   4096,   1520}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   3789,   1827}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07056BB0 - 0x07056BF0\nstatic const Vtx inside_castle_seg7_vertex_07056BB0[] = {\n    {{{    -9,   3686,   2236}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   3584,   2339}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   3686,   2339}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   3584,   2236}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07056BF0 - 0x07056CE0\nstatic const Gfx inside_castle_seg7_dl_07056BF0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_070559C0.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_070559C0.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_070559F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07055AE0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07055BD0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_070559D8.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_070559D8.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07055C10, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07056CE0 - 0x07056DD0\nstatic const Gfx inside_castle_seg7_dl_07056CE0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_070559C0.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_070559C0.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07055C50, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07055D40, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07055E30, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_070559D8.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_070559D8.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07055E70, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07056DD0 - 0x07056EC0\nstatic const Gfx inside_castle_seg7_dl_07056DD0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07009000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_070559C0.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_070559C0.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07055EB0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07055FA0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07056090, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_070559D8.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_070559D8.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_070560D0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07056EC0 - 0x07056FB0\nstatic const Gfx inside_castle_seg7_dl_07056EC0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07009800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_070559C0.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_070559C0.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07056110, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07056200, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070562F0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_070559D8.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_070559D8.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07056330, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07056FB0 - 0x07057078\nstatic const Gfx inside_castle_seg7_dl_07056FB0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07006000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_070559C0.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_070559C0.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07056370, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07056460, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07056550, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07057078 - 0x07057130\nstatic const Gfx inside_castle_seg7_dl_07057078[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07006800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07056590, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07056680, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07056770, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07057130 - 0x070571E8\nstatic const Gfx inside_castle_seg7_dl_07057130[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_070567B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070568A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07056990, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070571E8 - 0x070572A0\nstatic const Gfx inside_castle_seg7_dl_070571E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_070569D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07056AC0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07056BB0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070572A0 - 0x07057380\nconst Gfx inside_castle_seg7_dl_070572A0[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(950, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07056BF0),\n    gsSPDisplayList(inside_castle_seg7_dl_07056CE0),\n    gsSPDisplayList(inside_castle_seg7_dl_07056DD0),\n    gsSPDisplayList(inside_castle_seg7_dl_07056EC0),\n    gsSPDisplayList(inside_castle_seg7_dl_07056FB0),\n    gsSPDisplayList(inside_castle_seg7_dl_07057078),\n    gsSPDisplayList(inside_castle_seg7_dl_07057130),\n    gsSPDisplayList(inside_castle_seg7_dl_070571E8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/2/15/model.inc.c",
    "content": "// 0x07057380 - 0x07057398\nstatic const Lights1 inside_castle_seg7_lights_07057380 = gdSPDefLights1(\n    0x51, 0x34, 0x42,\n    0xd8, 0x8c, 0xb2, 0x28, 0x28, 0x28\n);\n\n// 0x07057398 - 0x070573B0\nstatic const Lights1 inside_castle_seg7_lights_07057398 = gdSPDefLights1(\n    0x40, 0x24, 0x1e,\n    0xac, 0x61, 0x52, 0x28, 0x28, 0x28\n);\n\n// 0x070573B0 - 0x070573F0\nstatic const Vtx inside_castle_seg7_vertex_070573B0[] = {\n    {{{   512,   4198,   3721}, 0, { -5140,  -1692}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -921,   4198,   3721}, 0, { -5140,   1882}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -921,   4198,   2544}, 0, { -2202,   1882}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   512,   4198,   2544}, 0, { -2202,  -1692}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x070573F0 - 0x070574B0\nstatic const Vtx inside_castle_seg7_vertex_070573F0[] = {\n    {{{   154,   3174,   2544}, 0, { -2074,  -1820}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,   3174,   3465}, 0, {  2524,  -3610}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,   3174,   2800}, 0, {  -796,  -3610}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -921,   3174,   3465}, 0, {  2524,   3542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   358,   3174,   3721}, 0, {  3800,  -2842}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,   3174,   3721}, 0, {  3800,   2776}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -357,   3174,   3772}, 0, {  4056,    734}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -50,   3174,   3772}, 0, {  4056,   -798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -50,   3174,   3721}, 0, {  3800,   -798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -357,   3174,   3721}, 0, {  3800,    734}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -562,   3174,   2544}, 0, { -2074,   1754}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -921,   3174,   2851}, 0, {  -542,   3542}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070574B0 - 0x070575A0\nstatic const Vtx inside_castle_seg7_vertex_070574B0[] = {\n    {{{   512,   4198,   2800}, 0, {  4056,  -5142}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,   3174,   3465}, 0, { -2584,   5076}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,   4198,   3465}, 0, { -2584,  -5142}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,   4198,   3465}, 0, { -6162,  -3098}, {0x94, 0x00, 0xbf, 0xff}}},\n    {{{   512,   3174,   3465}, 0, { -6162,   7120}, {0x94, 0x00, 0xbf, 0xff}}},\n    {{{   358,   3174,   3721}, 0, { -4630,   7120}, {0x94, 0x00, 0xbf, 0xff}}},\n    {{{   358,   4198,   3721}, 0, { -4630,  -3098}, {0x94, 0x00, 0xbf, 0xff}}},\n    {{{   358,   3174,   3721}, 0, { -4630,   7120}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -50,   3430,   3721}, 0, {  -542,   4566}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   358,   4198,   3721}, 0, { -4630,  -3098}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -50,   3174,   3721}, 0, {  -542,   7120}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -767,   4198,   3721}, 0, {  6612,  -3098}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -357,   3430,   3721}, 0, {  2524,   4566}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -767,   3174,   3721}, 0, {  6612,   7120}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   512,   3174,   2800}, 0, {  4056,   5076}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070575A0 - 0x070576A0\nstatic const Vtx inside_castle_seg7_vertex_070575A0[] = {\n    {{{  -767,   4198,   3721}, 0, {  6612,  -3098}, {0x6c, 0x00, 0xbf, 0xff}}},\n    {{{  -767,   3174,   3721}, 0, {  6612,   7120}, {0x6c, 0x00, 0xbf, 0xff}}},\n    {{{  -921,   3174,   3465}, 0, {  8144,   7120}, {0x6c, 0x00, 0xbf, 0xff}}},\n    {{{   154,   4198,   2544}, 0, {  4566,  -9230}, {0xb7, 0x00, 0x67, 0xff}}},\n    {{{   154,   3174,   2544}, 0, {  4566,    990}, {0xb7, 0x00, 0x67, 0xff}}},\n    {{{   512,   3174,   2800}, 0, {  8144,    990}, {0xb7, 0x00, 0x67, 0xff}}},\n    {{{   512,   4198,   2800}, 0, {  8144,  -9230}, {0xb7, 0x00, 0x67, 0xff}}},\n    {{{     0,   4198,   2544}, 0, {  4056,  -2076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -409,   4198,   2544}, 0, {     0,  -2076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -409,   3891,   2544}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,   3891,   2544}, 0, {  4056,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -921,   4198,   2851}, 0, { -6162,  -9230}, {0x52, 0x00, 0x60, 0xff}}},\n    {{{  -921,   3174,   2851}, 0, { -6162,    990}, {0x52, 0x00, 0x60, 0xff}}},\n    {{{  -562,   3174,   2544}, 0, { -2584,    990}, {0x52, 0x00, 0x60, 0xff}}},\n    {{{  -562,   4198,   2544}, 0, { -2584,  -9230}, {0x52, 0x00, 0x60, 0xff}}},\n    {{{  -921,   4198,   3465}, 0, {  8144,  -3098}, {0x6c, 0x00, 0xbf, 0xff}}},\n};\n\n// 0x070576A0 - 0x07057790\nstatic const Vtx inside_castle_seg7_vertex_070576A0[] = {\n    {{{  -357,   3430,   3721}, 0, {  2524,   4566}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -357,   3174,   3721}, 0, {  2524,   7120}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -767,   3174,   3721}, 0, {  6612,   7120}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -50,   3174,   3772}, 0, {   480,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -50,   3430,   3721}, 0, {     0,  -1566}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -50,   3174,   3721}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -50,   3430,   3772}, 0, {   480,  -1566}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -357,   3430,   3772}, 0, {   480,  -1566}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -357,   3174,   3772}, 0, {   480,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -357,   3174,   3721}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -357,   3430,   3721}, 0, {     0,  -1566}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -50,   3430,   3772}, 0, {   480,  -1566}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -357,   3430,   3772}, 0, {   480,  -1566}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -357,   3430,   3721}, 0, {     0,  -1566}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -50,   3430,   3721}, 0, {     0,  -1566}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07057790 - 0x070577D0\nstatic const Vtx inside_castle_seg7_vertex_07057790[] = {\n    {{{  -921,   4198,   3465}, 0, { -2584,  -5142}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -921,   3174,   3465}, 0, { -2584,   5076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -921,   3174,   2851}, 0, {  3544,   5076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -921,   4198,   2851}, 0, {  3546,  -5142}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070577D0 - 0x07057850\nstatic const Vtx inside_castle_seg7_vertex_070577D0[] = {\n    {{{   154,   3482,   3711}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,   3379,   3711}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   154,   3379,   3711}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,   3482,   3711}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -562,   3482,   3711}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   3379,   3711}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -562,   3379,   3711}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   3482,   3711}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07057850 - 0x070578D0\nstatic const Vtx inside_castle_seg7_vertex_07057850[] = {\n    {{{    51,   3482,   3711}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   154,   3379,   3711}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   3379,   3711}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   154,   3482,   3711}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -665,   3482,   3711}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -562,   3379,   3711}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -665,   3379,   3711}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -562,   3482,   3711}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070578D0 - 0x07057950\nstatic const Vtx inside_castle_seg7_vertex_070578D0[] = {\n    {{{   154,   3379,   3711}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,   3277,   3711}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   154,   3277,   3711}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,   3379,   3711}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -562,   3379,   3711}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   3379,   3711}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   3277,   3711}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -562,   3277,   3711}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07057950 - 0x070579D0\nstatic const Vtx inside_castle_seg7_vertex_07057950[] = {\n    {{{    51,   3379,   3711}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   154,   3277,   3711}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   3277,   3711}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   154,   3379,   3711}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -665,   3379,   3711}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -562,   3277,   3711}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -665,   3277,   3711}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -562,   3379,   3711}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070579D0 - 0x07057AC0\nstatic const Vtx inside_castle_seg7_vertex_070579D0[] = {\n    {{{  -460,   3174,   2595}, 0, {   650,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -460,   4198,   2595}, 0, {   650,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,   4198,   2595}, 0, {   308,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,   3174,   2595}, 0, {   650,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    51,   4198,   2595}, 0, {   308,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    51,   3174,   2595}, 0, {   308,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    51,   3174,   2595}, 0, {   308,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{     0,   4198,   2544}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{     0,   3174,   2544}, 0, {     0,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{    51,   4198,   2595}, 0, {   308,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   102,   4198,   2595}, 0, {   650,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   154,   3174,   2544}, 0, {   990,   2012}, {0x58, 0x00, 0x5a, 0xff}}},\n    {{{   102,   4198,   2595}, 0, {   650,      0}, {0x58, 0x00, 0x5a, 0xff}}},\n    {{{   102,   3174,   2595}, 0, {   650,   2012}, {0x58, 0x00, 0x5a, 0xff}}},\n    {{{   154,   4198,   2544}, 0, {   990,      0}, {0x58, 0x00, 0x5a, 0xff}}},\n};\n\n// 0x07057AC0 - 0x07057B70\nstatic const Vtx inside_castle_seg7_vertex_07057AC0[] = {\n    {{{  -409,   3174,   2544}, 0, {   990,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -460,   4198,   2595}, 0, {   650,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -460,   3174,   2595}, 0, {   650,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -460,   3174,   2595}, 0, {   650,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,   4198,   2595}, 0, {   308,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,   3174,   2595}, 0, {   308,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -409,   4198,   2544}, 0, {   990,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -511,   3174,   2595}, 0, {   308,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -511,   4198,   2595}, 0, {   308,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -562,   4198,   2544}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -562,   3174,   2544}, 0, {     0,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07057B70 - 0x07057BB8\nstatic const Gfx inside_castle_seg7_dl_07057B70[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_0900B000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_07057380.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07057380.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_070573B0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07057BB8 - 0x07057C20\nstatic const Gfx inside_castle_seg7_dl_07057BB8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_070573F0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 3,  5,  4, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0,  0, 10,  3, 0x0),\n    gsSP2Triangles( 0,  3,  1, 0x0, 10, 11,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07057C20 - 0x07057D30\nstatic const Gfx inside_castle_seg7_dl_07057C20[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_070574B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles( 8, 12, 11, 0x0, 12, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070575A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070576A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07057790, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07057D30 - 0x07057D88\nstatic const Gfx inside_castle_seg7_dl_07057D30[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_07057398.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07057398.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_070577D0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07057D88 - 0x07057DD0\nstatic const Gfx inside_castle_seg7_dl_07057D88[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07057850, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07057DD0 - 0x07057E18\nstatic const Gfx inside_castle_seg7_dl_07057DD0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07009000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_070578D0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07057E18 - 0x07057E60\nstatic const Gfx inside_castle_seg7_dl_07057E18[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07009800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07057950, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07057E60 - 0x07057F00\nstatic const Gfx inside_castle_seg7_dl_07057E60[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_07057380.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07057380.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_070579D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 3, 10,  4, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07057AC0, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle( 7,  9, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07057F00 - 0x07057FD8\nconst Gfx inside_castle_seg7_dl_07057F00[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07057B70),\n    gsSPDisplayList(inside_castle_seg7_dl_07057BB8),\n    gsSPDisplayList(inside_castle_seg7_dl_07057C20),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07057D30),\n    gsSPDisplayList(inside_castle_seg7_dl_07057D88),\n    gsSPDisplayList(inside_castle_seg7_dl_07057DD0),\n    gsSPDisplayList(inside_castle_seg7_dl_07057E18),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07057E60),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/2/2/model.inc.c",
    "content": "// 0x0703E798 - 0x0703E7B0\nstatic const Lights1 inside_castle_seg7_lights_0703E798 = gdSPDefLights1(\n    0x5f, 0x5f, 0x5f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0703E7B0 - 0x0703E8A0\nstatic const Vtx inside_castle_seg7_vertex_0703E7B0[] = {\n    {{{   154,   2022,   2458}, 0, { -3096,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   154,   1684,   2509}, 0, {  3666,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   154,   1715,   2458}, 0, {  3034,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    51,   1357,   1741}, 0, {  6766,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    51,   1300,   1741}, 0, {  7278,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    51,   1684,   2509}, 0, { -9860,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    51,   1715,   2458}, 0, { -9228,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   154,   1715,   2458}, 0, { -1052,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   154,   1300,   1741}, 0, { 15454,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   154,   1357,   1741}, 0, { 14942,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   154,   1684,   2509}, 0, { -1684,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    51,   1715,   2458}, 0, {  4056,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    51,   1684,   2509}, 0, {  4688,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    51,   2022,   2509}, 0, { -2074,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    51,   2022,   2458}, 0, { -2074,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0703E8A0 - 0x0703E9A0\nstatic const Vtx inside_castle_seg7_vertex_0703E8A0[] = {\n    {{{   154,   2022,   1741}, 0, {  2012,  -4630}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1311,   2022,    693}, 0, {  7240, -10408}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1311,   2022,   3813}, 0, { -8328, -10408}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   154,   2022,   2458}, 0, { -3096,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   154,   2022,   2509}, 0, { -3096,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   154,   1684,   2509}, 0, {  3666,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   154,   1357,   1741}, 0, {  9832,    990}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{    51,   1357,   1741}, 0, {  9832,  -1054}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{    51,   1715,   2458}, 0, { -6162,  -1054}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{   154,   1715,   2458}, 0, { -6162,    990}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{ -2644,   2022,   3813}, 0, { -8328,   9334}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -562,   2022,   3686}, 0, { -7694,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   154,   2022,   3686}, 0, { -7694,  -4630}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   154,   1715,   2458}, 0, {  4056,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   2022,   2458}, 0, { -2074,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   154,   2022,   2458}, 0, { -2074,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0703E9A0 - 0x0703EA80\nstatic const Vtx inside_castle_seg7_vertex_0703E9A0[] = {\n    {{{ -2644,   2022,   3813}, 0, { -8328,   9334}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -562,   2022,   2355}, 0, { -1052,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -562,   2022,   3686}, 0, { -7694,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -562,   2022,   1741}, 0, {  2012,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2644,   2022,   -142}, 0, { 11412,   9334}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   154,   2022,   1741}, 0, {  2012,  -4630}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -136,   2022,   -142}, 0, { 11412,  -3180}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1311,   2022,    693}, 0, {  7240, -10408}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    51,   1357,   1741}, 0, {  2012,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   154,   1300,   1741}, 0, {     0,   1108}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1300,   1741}, 0, {  2012,   1108}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   154,   1357,   1741}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   154,   2022,   2458}, 0, { -1564,  -4630}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    51,   2022,   1741}, 0, {  2012,  -4120}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0703EA80 - 0x0703EAE0\nstatic const Vtx inside_castle_seg7_vertex_0703EA80[] = {\n    {{{   154,   1715,   2458}, 0, {  4056,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1715,   2458}, 0, {  4056,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   2022,   2458}, 0, { -2074,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   154,   2022,   2458}, 0, { -1564,  -4630}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    51,   2022,   2458}, 0, { -1564,  -4120}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    51,   2022,   1741}, 0, {  2012,  -4120}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0703EAE0 - 0x0703EBE0\nstatic const Vtx inside_castle_seg7_vertex_0703EAE0[] = {\n    {{{ -2114,   1203,   3283}, 0, {  8480, -12328}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1811,   1203,   2048}, 0, {  6966,  -6164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1893,   1203,   1741}, 0, {  7378,  -4630}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2114,   1203,    387}, 0, {  8480,   2122}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1196,   1203,   3813}, 0, {  3898, -14974}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   781,   1203,   3283}, 0, { -5972, -12328}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2644,   1203,   2365}, 0, { 11124,  -7748}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,   1203,   2458}, 0, {  4312,  -8208}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1586,   1203,   2324}, 0, {  5844,  -7542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -136,   1203,   3813}, 0, { -1390, -14974}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1106,   1203,   1612}, 0, { -7596,  -3990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   781,   1203,    387}, 0, { -5972,   2122}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1106,   1203,   2058}, 0, { -7596,  -6214}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1311,   1203,   2365}, 0, { -8618,  -7748}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1203,   1280}, 0, {   224,  -2332}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1811,   1203,   1434}, 0, {  6966,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0703EBE0 - 0x0703ECD0\nstatic const Vtx inside_castle_seg7_vertex_0703EBE0[] = {\n    {{{ -1811,   1203,   1434}, 0, {  6966,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1586,   1203,   1209}, 0, {  5844,  -1976}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2114,   1203,    387}, 0, {  8480,   2122}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2644,   1203,   1305}, 0, { 11124,  -2456}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2644,   1203,   2365}, 0, { 11124,  -7748}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1196,   1203,   -142}, 0, {  3898,   4768}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   781,   1203,    387}, 0, { -5972,   2122}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,   1203,   1126}, 0, {  4312,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,   1203,    922}, 0, {  4056,   -542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,   1203,    819}, 0, {  2268,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1125,   1203,    819}, 0, {  3544,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -136,   1203,   -142}, 0, { -1390,   4768}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1203,   1280}, 0, {   224,  -2332}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -462,   1203,   2355}, 0, {   234,  -7696}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   781,   1203,   3283}, 0, { -5972, -12328}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0703ECD0 - 0x0703EDD0\nstatic const Vtx inside_castle_seg7_vertex_0703ECD0[] = {\n    {{{  1106,   1203,   1612}, 0, { -7596,  -3990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1311,   1203,   1305}, 0, { -8618,  -2456}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   781,   1203,    387}, 0, { -5972,   2122}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,   1203,    922}, 0, {  1756,   -542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -613,   1203,   1126}, 0, {   990,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1203,   1280}, 0, {   224,  -2332}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,   1203,    819}, 0, {  2268,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,   1203,   1126}, 0, {  4312,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,   1203,   1126}, 0, {  4056,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,   1203,    922}, 0, {  4056,   -542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -462,   1203,   2355}, 0, {   234,  -7696}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,   1203,   2458}, 0, {  4312,  -8208}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   781,   1203,   3283}, 0, { -5972, -12328}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -665,   3046,   4710}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -665,   3046,   3994}, 0, {     0,   3544}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -460,   3046,   3789}, 0, {   990,   4566}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0703EDD0 - 0x0703EEB0\nstatic const Vtx inside_castle_seg7_vertex_0703EDD0[] = {\n    {{{  -767,   1203,    922}, 0, {  1756,   -542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,   1203,   1126}, 0, {  1756,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -613,   1203,   1126}, 0, {   990,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   2253,   3789}, 0, {  2012,   4566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -665,   2253,   3994}, 0, {  3034,   3544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   2253,   3789}, 0, {  -540,   4566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -665,   2253,   4710}, 0, {  3034,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,   2253,   3994}, 0, { -1562,   3544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,   2253,   4710}, 0, { -1564,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -665,   3046,   4710}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -460,   3046,   3789}, 0, {   990,   4566}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    51,   3046,   3789}, 0, {  3544,   4566}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   256,   3046,   3994}, 0, {  4566,   3544}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   256,   3046,   4710}, 0, {  4568,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0703EEB0 - 0x0703EF50\nstatic const Vtx inside_castle_seg7_vertex_0703EEB0[] = {\n    {{{   -50,   2253,   4710}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -357,   2253,   4710}, 0, {  1502,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -357,   2253,   4762}, 0, {  1502,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -50,   2253,   4762}, 0, {     0,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1106,   1203,   1612}, 0, { -7596,  -3990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1311,   1203,   1510}, 0, { -8618,  -3478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1311,   1203,   1305}, 0, { -8618,  -2456}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1311,   1203,   2365}, 0, { -8618,  -7748}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1311,   1203,   2160}, 0, { -8618,  -6726}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1106,   1203,   2058}, 0, { -7596,  -6214}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0703EF50 - 0x0703F050\nstatic const Vtx inside_castle_seg7_vertex_0703EF50[] = {\n    {{{  -460,   1229,   1741}, 0, {  3034,  11092}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1203,   1741}, 0, { -2074,  11208}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1203,   1741}, 0, {  3034,  11208}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1229,   1741}, 0, { -2074,  11092}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1229,   1792}, 0, {  3034,  10636}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1229,   1741}, 0, { -2074,  11092}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1229,   1741}, 0, {  3034,  11092}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1229,   1792}, 0, { -2074,  10636}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1254,   1792}, 0, {  3034,  10520}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1229,   1792}, 0, { -2074,  10636}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1229,   1792}, 0, {  3034,  10636}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1254,   1792}, 0, { -2074,  10520}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1254,   1843}, 0, {  3034,  10066}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1254,   1843}, 0, { -2074,  10066}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1254,   1792}, 0, { -2074,  10520}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1254,   1792}, 0, {  3034,  10520}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0703F050 - 0x0703F150\nstatic const Vtx inside_castle_seg7_vertex_0703F050[] = {\n    {{{  -460,   1306,   1946}, 0, {  3034,   8922}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1306,   1946}, 0, { -2074,   8922}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1306,   1894}, 0, { -2074,   9378}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1306,   1894}, 0, {  3034,   9378}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1306,   1894}, 0, {  3034,   9378}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1280,   1894}, 0, { -2074,   9494}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1280,   1894}, 0, {  3034,   9494}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1306,   1894}, 0, { -2074,   9378}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1280,   1894}, 0, {  3034,   9494}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1280,   1894}, 0, { -2074,   9494}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1280,   1843}, 0, { -2074,   9948}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1280,   1843}, 0, {  3034,   9948}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1280,   1843}, 0, {  3034,   9948}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1280,   1843}, 0, { -2074,   9948}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1254,   1843}, 0, { -2074,  10066}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1254,   1843}, 0, {  3034,  10066}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0703F150 - 0x0703F250\nstatic const Vtx inside_castle_seg7_vertex_0703F150[] = {\n    {{{  -460,   1357,   2048}, 0, {  3034,   7780}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1357,   2048}, 0, { -2074,   7780}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1357,   1997}, 0, { -2074,   8236}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1357,   1997}, 0, {  3034,   8236}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1357,   1997}, 0, {  3034,   8236}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1357,   1997}, 0, { -2074,   8236}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1331,   1997}, 0, { -2074,   8352}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1331,   1997}, 0, {  3034,   8352}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1331,   1997}, 0, {  3034,   8352}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1331,   1997}, 0, { -2074,   8352}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1331,   1946}, 0, { -2074,   8806}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1331,   1946}, 0, {  3034,   8806}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1331,   1946}, 0, {  3034,   8806}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1331,   1946}, 0, { -2074,   8806}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1306,   1946}, 0, { -2074,   8922}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1306,   1946}, 0, {  3034,   8922}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0703F250 - 0x0703F350\nstatic const Vtx inside_castle_seg7_vertex_0703F250[] = {\n    {{{  -460,   1382,   2048}, 0, {  3034,   7664}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1382,   2048}, 0, { -2074,   7664}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1357,   2048}, 0, { -2074,   7780}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1357,   2048}, 0, {  3034,   7780}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1382,   2099}, 0, {  3034,   7208}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1382,   2048}, 0, { -2074,   7664}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1382,   2048}, 0, {  3034,   7664}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1408,   2099}, 0, {  3034,   7092}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1382,   2099}, 0, { -2074,   7208}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1382,   2099}, 0, {  3034,   7208}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1382,   2099}, 0, { -2074,   7208}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1408,   2099}, 0, { -2074,   7092}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1408,   2150}, 0, {  3034,   6638}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1408,   2150}, 0, { -2074,   6638}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1408,   2099}, 0, { -2074,   7092}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1408,   2099}, 0, {  3034,   7092}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0703F350 - 0x0703F450\nstatic const Vtx inside_castle_seg7_vertex_0703F350[] = {\n    {{{  -460,   1434,   2150}, 0, {  3034,   6522}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1434,   2150}, 0, { -2074,   6522}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1408,   2150}, 0, { -2074,   6638}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1408,   2150}, 0, {  3034,   6638}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1434,   2202}, 0, {  3034,   6066}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1434,   2150}, 0, { -2074,   6522}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1434,   2150}, 0, {  3034,   6522}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1459,   2202}, 0, {  3034,   5950}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1434,   2202}, 0, { -2074,   6066}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1434,   2202}, 0, {  3034,   6066}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1434,   2202}, 0, { -2074,   6066}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1459,   2202}, 0, { -2074,   5950}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1459,   2253}, 0, {  3034,   5496}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1459,   2253}, 0, { -2074,   5496}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1459,   2202}, 0, { -2074,   5950}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1459,   2202}, 0, {  3034,   5950}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0703F450 - 0x0703F550\nstatic const Vtx inside_castle_seg7_vertex_0703F450[] = {\n    {{{  -460,   1485,   2253}, 0, {  3034,   5378}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1485,   2253}, 0, { -2074,   5378}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1459,   2253}, 0, { -2074,   5496}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1459,   2253}, 0, {  3034,   5496}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1485,   2304}, 0, {  3034,   4924}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1485,   2253}, 0, { -2074,   5378}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1485,   2253}, 0, {  3034,   5378}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1510,   2304}, 0, {  3034,   4808}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1485,   2304}, 0, { -2074,   4924}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1485,   2304}, 0, {  3034,   4924}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1485,   2304}, 0, { -2074,   4924}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1510,   2304}, 0, { -2074,   4808}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1510,   2355}, 0, {  3034,   4352}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1510,   2355}, 0, { -2074,   4352}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1510,   2304}, 0, { -2074,   4808}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1510,   2304}, 0, {  3034,   4808}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0703F550 - 0x0703F650\nstatic const Vtx inside_castle_seg7_vertex_0703F550[] = {\n    {{{  -460,   1613,   2560}, 0, {  3034,   2068}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1613,   2560}, 0, { -2074,   2068}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1613,   2509}, 0, { -2074,   2522}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1613,   2509}, 0, {  3034,   2522}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1613,   2509}, 0, {  3034,   2522}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1587,   2509}, 0, { -2074,   2638}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1587,   2509}, 0, {  3034,   2638}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1613,   2509}, 0, { -2074,   2522}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1587,   2509}, 0, {  3034,   2638}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1587,   2509}, 0, { -2074,   2638}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1587,   2458}, 0, { -2074,   3094}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1587,   2458}, 0, {  3034,   3094}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1587,   2458}, 0, {  3034,   3094}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1587,   2458}, 0, { -2074,   3094}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1562,   2458}, 0, { -2074,   3210}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1562,   2458}, 0, {  3034,   3210}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0703F650 - 0x0703F750\nstatic const Vtx inside_castle_seg7_vertex_0703F650[] = {\n    {{{  -460,   1536,   2355}, 0, {  3034,   4236}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1536,   2355}, 0, { -2074,   4236}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1510,   2355}, 0, { -2074,   4352}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1510,   2355}, 0, {  3034,   4352}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1536,   2406}, 0, {  3034,   3782}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1536,   2406}, 0, { -2074,   3782}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1536,   2355}, 0, { -2074,   4236}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1536,   2355}, 0, {  3034,   4236}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1562,   2406}, 0, {  3034,   3664}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1536,   2406}, 0, { -2074,   3782}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1536,   2406}, 0, {  3034,   3782}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1562,   2406}, 0, { -2074,   3664}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1562,   2458}, 0, {  3034,   3210}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1562,   2406}, 0, { -2074,   3664}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1562,   2406}, 0, {  3034,   3664}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1562,   2458}, 0, { -2074,   3210}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0703F750 - 0x0703F850\nstatic const Vtx inside_castle_seg7_vertex_0703F750[] = {\n    {{{  -460,   1971,   3277}, 0, {  3034,  -5928}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1971,   3277}, 0, { -2074,  -5928}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1971,   3226}, 0, { -2074,  -5474}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1971,   3226}, 0, {  3034,  -5474}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1971,   3226}, 0, {  3034,  -5474}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1971,   3226}, 0, { -2074,  -5474}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1946,   3226}, 0, { -2074,  -5358}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1946,   3226}, 0, {  3034,  -5358}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1946,   3226}, 0, {  3034,  -5358}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1946,   3226}, 0, { -2074,  -5358}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1946,   3174}, 0, { -2074,  -4902}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1946,   3174}, 0, {  3034,  -4902}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1946,   3174}, 0, {  3034,  -4902}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1946,   3174}, 0, { -2074,  -4902}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1920,   3174}, 0, { -2074,  -4786}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1920,   3174}, 0, {  3034,  -4786}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0703F850 - 0x0703F950\nstatic const Vtx inside_castle_seg7_vertex_0703F850[] = {\n    {{{  -460,   1997,   3277}, 0, {  3034,  -6046}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1971,   3277}, 0, { -2074,  -5928}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1971,   3277}, 0, {  3034,  -5928}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1997,   3277}, 0, { -2074,  -6046}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1997,   3328}, 0, {  3034,  -6500}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1997,   3328}, 0, { -2074,  -6500}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1997,   3277}, 0, { -2074,  -6046}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   2022,   3328}, 0, {  3034,  -6616}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1997,   3328}, 0, { -2074,  -6500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1997,   3328}, 0, {  3034,  -6500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1997,   3277}, 0, {  3034,  -6046}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   2022,   3328}, 0, { -2074,  -6616}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   2022,   3379}, 0, {  3034,  -7072}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   2022,   3328}, 0, { -2074,  -6616}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   2022,   3328}, 0, {  3034,  -6616}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   2022,   3379}, 0, { -2074,  -7072}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0703F950 - 0x0703FA50\nstatic const Vtx inside_castle_seg7_vertex_0703F950[] = {\n    {{{  -460,   1920,   3174}, 0, {  3034,  -4786}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1920,   3123}, 0, { -2074,  -4332}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1920,   3123}, 0, {  3034,  -4332}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1920,   3174}, 0, { -2074,  -4786}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1920,   3123}, 0, {  3034,  -4332}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1920,   3123}, 0, { -2074,  -4332}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1894,   3123}, 0, { -2074,  -4214}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1894,   3123}, 0, {  3034,  -4214}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1894,   3123}, 0, {  3034,  -4214}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1894,   3123}, 0, { -2074,  -4214}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1894,   3072}, 0, { -2074,  -3760}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1894,   3072}, 0, {  3034,  -3760}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1894,   3072}, 0, {  3034,  -3760}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1869,   3072}, 0, { -2074,  -3644}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1869,   3072}, 0, {  3034,  -3644}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1894,   3072}, 0, { -2074,  -3760}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0703FA50 - 0x0703FB50\nstatic const Vtx inside_castle_seg7_vertex_0703FA50[] = {\n    {{{  -460,   1869,   3072}, 0, {  3034,  -3644}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1869,   3021}, 0, { -2074,  -3188}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1869,   3021}, 0, {  3034,  -3188}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1869,   3072}, 0, { -2074,  -3644}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1869,   3021}, 0, {  3034,  -3188}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1869,   3021}, 0, { -2074,  -3188}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1843,   3021}, 0, { -2074,  -3072}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1843,   3021}, 0, {  3034,  -3072}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1843,   3021}, 0, {  3034,  -3072}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1843,   3021}, 0, { -2074,  -3072}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1843,   2970}, 0, { -2074,  -2618}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1843,   2970}, 0, {  3034,  -2618}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1843,   2970}, 0, {  3034,  -2618}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1843,   2970}, 0, { -2074,  -2618}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1818,   2970}, 0, { -2074,  -2500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1818,   2970}, 0, {  3034,  -2500}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0703FB50 - 0x0703FC50\nstatic const Vtx inside_castle_seg7_vertex_0703FB50[] = {\n    {{{  -460,   1818,   2970}, 0, {  3034,  -2500}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1818,   2970}, 0, { -2074,  -2500}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1818,   2918}, 0, { -2074,  -2046}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1818,   2918}, 0, {  3034,  -2046}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1818,   2918}, 0, {  3034,  -2046}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1818,   2918}, 0, { -2074,  -2046}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1792,   2918}, 0, { -2074,  -1930}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1792,   2918}, 0, {  3034,  -1930}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1792,   2918}, 0, {  3034,  -1930}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1792,   2918}, 0, { -2074,  -1930}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1792,   2867}, 0, { -2074,  -1474}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1792,   2867}, 0, {  3034,  -1474}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1792,   2867}, 0, {  3034,  -1474}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1766,   2867}, 0, { -2074,  -1358}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1766,   2867}, 0, {  3034,  -1358}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1792,   2867}, 0, { -2074,  -1474}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0703FC50 - 0x0703FD50\nstatic const Vtx inside_castle_seg7_vertex_0703FC50[] = {\n    {{{  -460,   1741,   2765}, 0, {  3034,   -332}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1715,   2765}, 0, { -2074,   -216}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1715,   2765}, 0, {  3034,   -216}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1741,   2765}, 0, { -2074,   -332}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1741,   2816}, 0, {  3034,   -788}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1741,   2816}, 0, { -2074,   -788}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1741,   2765}, 0, { -2074,   -332}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1741,   2765}, 0, {  3034,   -332}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1766,   2816}, 0, {  3034,   -904}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1741,   2816}, 0, { -2074,   -788}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1741,   2816}, 0, {  3034,   -788}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1766,   2816}, 0, { -2074,   -904}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1766,   2867}, 0, {  3034,  -1358}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1766,   2816}, 0, { -2074,   -904}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1766,   2816}, 0, {  3034,   -904}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1766,   2867}, 0, { -2074,  -1358}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0703FD50 - 0x0703FE50\nstatic const Vtx inside_castle_seg7_vertex_0703FD50[] = {\n    {{{  -460,   1690,   2662}, 0, {  3034,    810}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1664,   2662}, 0, { -2074,    926}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1664,   2662}, 0, {  3034,    926}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1690,   2662}, 0, { -2074,    810}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1690,   2714}, 0, {  3034,    356}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1690,   2662}, 0, { -2074,    810}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1690,   2662}, 0, {  3034,    810}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1715,   2714}, 0, {  3034,    240}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1690,   2714}, 0, { -2074,    356}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1690,   2714}, 0, {  3034,    356}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1690,   2714}, 0, { -2074,    356}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1715,   2714}, 0, { -2074,    240}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1715,   2765}, 0, {  3034,   -216}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1715,   2714}, 0, { -2074,    240}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1715,   2714}, 0, {  3034,    240}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1715,   2765}, 0, { -2074,   -216}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0703FE50 - 0x0703FF50\nstatic const Vtx inside_castle_seg7_vertex_0703FE50[] = {\n    {{{  -460,   1664,   2611}, 0, {  3034,   1380}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1638,   2611}, 0, { -2074,   1496}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1638,   2611}, 0, {  3034,   1496}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1664,   2611}, 0, { -2074,   1380}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1638,   2611}, 0, {  3034,   1496}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1638,   2611}, 0, { -2074,   1496}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1638,   2560}, 0, { -2074,   1950}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1638,   2560}, 0, {  3034,   1950}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1664,   2662}, 0, {  3034,    926}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1664,   2662}, 0, { -2074,    926}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   1664,   2611}, 0, { -2074,   1380}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1664,   2611}, 0, {  3034,   1380}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   1638,   2560}, 0, {  3034,   1950}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1613,   2560}, 0, { -2074,   2068}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   1613,   2560}, 0, {  3034,   2068}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1638,   2560}, 0, { -2074,   1950}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0703FF50 - 0x07040050\nstatic const Vtx inside_castle_seg7_vertex_0703FF50[] = {\n    {{{  -460,   2074,   3482}, 0, {  3034,  -8214}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   2074,   3430}, 0, { -2074,  -7760}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   2074,   3430}, 0, {  3034,  -7760}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   2074,   3482}, 0, { -2074,  -8214}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   2074,   3430}, 0, {  3034,  -7760}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   2074,   3430}, 0, { -2074,  -7760}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   2048,   3430}, 0, { -2074,  -7642}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   2048,   3430}, 0, {  3034,  -7642}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   2048,   3430}, 0, {  3034,  -7642}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   2048,   3430}, 0, { -2074,  -7642}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   2048,   3379}, 0, { -2074,  -7188}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   2048,   3379}, 0, {  3034,  -7188}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   2048,   3379}, 0, {  3034,  -7188}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   2022,   3379}, 0, { -2074,  -7072}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   2022,   3379}, 0, {  3034,  -7072}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   2048,   3379}, 0, { -2074,  -7188}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07040050 - 0x07040150\nstatic const Vtx inside_castle_seg7_vertex_07040050[] = {\n    {{{  -460,   2099,   3482}, 0, {  3034,  -8330}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   2074,   3482}, 0, { -2074,  -8214}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   2074,   3482}, 0, {  3034,  -8214}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   2099,   3482}, 0, { -2074,  -8330}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   2099,   3533}, 0, {  3034,  -8786}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   2099,   3482}, 0, { -2074,  -8330}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   2099,   3482}, 0, {  3034,  -8330}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   2125,   3533}, 0, {  3034,  -8902}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   2099,   3533}, 0, { -2074,  -8786}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   2099,   3533}, 0, {  3034,  -8786}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   2099,   3533}, 0, { -2074,  -8786}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   2125,   3533}, 0, { -2074,  -8902}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   2125,   3584}, 0, {  3034,  -9356}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   2125,   3584}, 0, { -2074,  -9356}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   2125,   3533}, 0, { -2074,  -8902}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   2125,   3533}, 0, {  3034,  -8902}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07040150 - 0x07040250\nstatic const Vtx inside_castle_seg7_vertex_07040150[] = {\n    {{{  -460,   2150,   3584}, 0, {  3034,  -9472}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   2125,   3584}, 0, { -2074,  -9356}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   2125,   3584}, 0, {  3034,  -9356}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   2150,   3584}, 0, { -2074,  -9472}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   2150,   3635}, 0, {  3034,  -9928}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   2150,   3584}, 0, { -2074,  -9472}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   2150,   3584}, 0, {  3034,  -9472}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   2150,   3635}, 0, { -2074,  -9928}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   2176,   3635}, 0, {  3034, -10044}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   2150,   3635}, 0, { -2074,  -9928}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   2150,   3635}, 0, {  3034,  -9928}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   2176,   3635}, 0, { -2074, -10044}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   2176,   3686}, 0, {  3034, -10498}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   2176,   3635}, 0, { -2074, -10044}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   2176,   3635}, 0, {  3034, -10044}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   2176,   3686}, 0, { -2074, -10498}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07040250 - 0x07040350\nstatic const Vtx inside_castle_seg7_vertex_07040250[] = {\n    {{{  -460,   2202,   3686}, 0, {  3034, -10616}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   2176,   3686}, 0, { -2074, -10498}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   2176,   3686}, 0, {  3034, -10498}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   2202,   3686}, 0, { -2074, -10616}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   2227,   3738}, 0, {  3034, -11186}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   2202,   3738}, 0, { -2074, -11070}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   2202,   3738}, 0, {  3034, -11070}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   2202,   3738}, 0, {  3034, -11070}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   2202,   3686}, 0, { -2074, -10616}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   2202,   3686}, 0, {  3034, -10616}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   2202,   3738}, 0, { -2074, -11070}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   2227,   3738}, 0, { -2074, -11186}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   2227,   3789}, 0, {  3034, -11642}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   2227,   3738}, 0, { -2074, -11186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   2227,   3738}, 0, {  3034, -11186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,   2227,   3789}, 0, { -2074, -11642}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07040350 - 0x07040450\nstatic const Vtx inside_castle_seg7_vertex_07040350[] = {\n    {{{  1311,   1203,   2160}, 0, { -1436,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1618,   1203,   1510}, 0, {  1810,   -542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1311,   1203,   1510}, 0, {  1810,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,   2253,   3789}, 0, {  3034, -11758}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   2227,   3789}, 0, { -2074, -11642}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   2227,   3789}, 0, {  3034, -11642}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   2253,   3789}, 0, { -2074, -11758}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -921,   1203,   1126}, 0, {  -286,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1074,   1203,   1178}, 0, {   478,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -921,   1203,   1178}, 0, {  -286,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1074,   1203,   1126}, 0, {   478,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1670,   1203,   1751}, 0, {   606,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1618,   1203,   1904}, 0, {  -158,   -542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1670,   1203,   1904}, 0, {  -158,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1618,   1203,   1751}, 0, {   606,   -542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1106,   1203,   2058}, 0, {  -924,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07040450 - 0x07040510\nstatic const Vtx inside_castle_seg7_vertex_07040450[] = {\n    {{{  1311,   1203,   2160}, 0, { -1436,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1618,   1203,   2160}, 0, { -1436,   -542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1618,   1203,   1510}, 0, {  1810,   -542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1125,   1203,    819}, 0, {   734,   1754}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,   1203,   1126}, 0, {  1246,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,   1203,   1126}, 0, { -1052,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,   1203,    922}, 0, {  1246,   1244}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,   1203,    922}, 0, { -1052,   1244}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,   1203,    819}, 0, {  -540,   1754}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1311,   1203,   1510}, 0, {  1810,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1106,   1203,   1612}, 0, {  1298,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1106,   1203,   2058}, 0, {  -924,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07040510 - 0x07040610\nstatic const Vtx inside_castle_seg7_vertex_07040510[] = {\n    {{{    51,   2381,   2458}, 0, {  7122, -10764}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    51,   2022,   2509}, 0, {  7634,  -7186}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    51,   2227,   3789}, 0, { 20408,  -9230}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   154,   1203,   1741}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1203,   1741}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1300,   1741}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   154,   1300,   1741}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1203,   1741}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    51,   1562,   2458}, 0, {  7122,  -2586}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    51,   1684,   2509}, 0, {  7634,  -3804}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    51,   1526,   2458}, 0, {  7122,  -2230}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    51,   2022,   2458}, 0, {  7122,  -7186}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    51,   3046,   3789}, 0, { 20408, -17406}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1074,   1459,   1126}, 0, {   990,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -921,   1459,   1178}, 0, {   480,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1074,   1459,   1178}, 0, {   480,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07040610 - 0x07040710\nstatic const Vtx inside_castle_seg7_vertex_07040610[] = {\n    {{{   154,   1300,   1741}, 0, {  7122,     28}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   154,   1408,   2458}, 0, {     0,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   154,   1203,   2458}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   154,   1684,   2509}, 0, {  -542,  -3804}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   154,   2022,   3686}, 0, {-12294,  -7186}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   154,   1203,   1741}, 0, {  7122,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -460,   1203,   1741}, 0, { 20408,  11208}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -460,   3046,   3789}, 0, {     0,  -7186}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -460,   2227,   3789}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -460,   2022,   1741}, 0, { 20408,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,   1203,   2458}, 0, { -6162,   5076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   154,   1203,   2458}, 0, {  8144,   5076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -562,   1408,   2458}, 0, {   990,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1074,   1459,   1126}, 0, {   990,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -921,   1459,   1126}, 0, {   990,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -921,   1459,   1178}, 0, {   480,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07040710 - 0x070407F0\nstatic const Vtx inside_castle_seg7_vertex_07040710[] = {\n    {{{  -921,   1459,   1126}, 0, {   990,  -1564}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -921,   1203,   1178}, 0, {   478,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -921,   1459,   1178}, 0, {   480,  -1564}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -921,   1203,   1126}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1074,   1203,   1126}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1074,   1459,   1178}, 0, {   480,  -1564}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1074,   1203,   1178}, 0, {   478,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1074,   1459,   1126}, 0, {   990,  -1564}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,   1203,   2458}, 0, { -6162,   5076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -562,   1408,   2458}, 0, {   990,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1279,   2022,   2458}, 0, { -6162,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -562,   2022,   2458}, 0, {   990,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   154,   1203,   2458}, 0, {  8144,   5076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   154,   1408,   2458}, 0, {  8144,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070407F0 - 0x070408E0\nstatic const Vtx inside_castle_seg7_vertex_070407F0[] = {\n    {{{ -2065,   1203,   3089}, 0, {  2012,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2065,   2022,   3089}, 0, {  2012,  -7186}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1920,   2022,   3234}, 0, {     0,  -7186}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1920,   1203,   3234}, 0, {     0,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2226,   2022,   3089}, 0, {  3150,  -7186}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2065,   2022,   3089}, 0, {  2012,  -7186}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2065,   1203,   3089}, 0, {  2012,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2226,   1203,   3089}, 0, {  3150,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1920,   1203,   3234}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1920,   2022,   3234}, 0, {     0,  -7186}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1920,   2022,   3395}, 0, { -1168,  -7186}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1920,   1203,   3395}, 0, { -1168,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   732,   1203,    581}, 0, {  2012,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   587,   2022,    436}, 0, {     0,  -7186}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   587,   1203,    436}, 0, {     0,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x070408E0 - 0x070409E0\nstatic const Vtx inside_castle_seg7_vertex_070408E0[] = {\n    {{{ -1920,   1203,    275}, 0, {  3150,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1920,   2022,    275}, 0, {  3150,  -7186}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1920,   2022,    436}, 0, {  2012,  -7186}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1920,   1203,    436}, 0, {  2012,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1920,   1203,    436}, 0, {  2012,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1920,   2022,    436}, 0, {  2012,  -7186}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2065,   2022,    581}, 0, {     0,  -7186}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2065,   1203,    581}, 0, {     0,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2226,   1203,    581}, 0, { -1168,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2065,   1203,    581}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2065,   2022,    581}, 0, {     0,  -7186}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2226,   2022,    581}, 0, { -1168,  -7186}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   587,   1203,    436}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   587,   2022,    436}, 0, {     0,  -7186}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   587,   2022,    275}, 0, { -1168,  -7186}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   587,   1203,    275}, 0, { -1168,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070409E0 - 0x07040AC0\nstatic const Vtx inside_castle_seg7_vertex_070409E0[] = {\n    {{{   587,   1203,   3395}, 0, {  3150,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   587,   2022,   3395}, 0, {  3150,  -7186}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   587,   2022,   3234}, 0, {  2012,  -7186}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   732,   1203,    581}, 0, {  2012,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   732,   2022,    581}, 0, {  2012,  -7186}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   587,   2022,    436}, 0, {     0,  -7186}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   893,   2022,    581}, 0, {  3150,  -7186}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   732,   1203,    581}, 0, {  2012,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   893,   1203,    581}, 0, {  3150,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   732,   2022,    581}, 0, {  2012,  -7186}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   893,   1203,   3089}, 0, { -1168,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   732,   1203,   3089}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   732,   2022,   3089}, 0, {     0,  -7186}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   893,   2022,   3089}, 0, { -1168,  -7186}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07040AC0 - 0x07040BA0\nstatic const Vtx inside_castle_seg7_vertex_07040AC0[] = {\n    {{{   587,   1203,   3234}, 0, {  2012,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   732,   2022,   3089}, 0, {     0,  -7186}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   732,   1203,   3089}, 0, {     0,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   587,   2022,   3234}, 0, {  2012,  -7186}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   587,   1203,   3395}, 0, {  3150,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   587,   2022,   3234}, 0, {  2012,  -7186}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   587,   1203,   3234}, 0, {  2012,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1279,   2022,   1126}, 0, {  3034,      0}, {0xdf, 0x00, 0x86, 0xff}}},\n    {{{ -1586,   1203,   1209}, 0, {  6100,   8142}, {0xdf, 0x00, 0x86, 0xff}}},\n    {{{ -1586,   2022,   1209}, 0, {  6100,      0}, {0xdf, 0x00, 0x86, 0xff}}},\n    {{{ -1279,   1203,   1126}, 0, {  3034,   8142}, {0xdf, 0x00, 0x86, 0xff}}},\n    {{{ -1074,   1203,   1126}, 0, {   990,   8142}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1279,   1203,   1126}, 0, {  3034,   8142}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1279,   2022,   1126}, 0, {  3034,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07040BA0 - 0x07040CA0\nstatic const Vtx inside_castle_seg7_vertex_07040BA0[] = {\n    {{{ -1586,   2022,   1209}, 0, {  6100,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1586,   1203,   1209}, 0, {  6100,   8142}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1811,   1203,   1434}, 0, {  8344,   8142}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1811,   2022,   1434}, 0, {  8344,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1811,   2022,   1434}, 0, { -3096,  -1054}, {0x86, 0x00, 0xe0, 0xff}}},\n    {{{ -1893,   1203,   1741}, 0, {     0,   7120}, {0x86, 0x00, 0xe0, 0xff}}},\n    {{{ -1893,   2022,   1741}, 0, {     0,  -1054}, {0x86, 0x00, 0xe0, 0xff}}},\n    {{{ -1811,   1203,   1434}, 0, { -3096,   7120}, {0x86, 0x00, 0xe0, 0xff}}},\n    {{{ -1893,   2022,   1741}, 0, {     0,  -1054}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{ -1893,   1203,   1741}, 0, {     0,   7120}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{ -1811,   1203,   2048}, 0, {  3034,   7120}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{ -1811,   2022,   2048}, 0, {  3034,  -1054}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{ -1811,   2022,   2048}, 0, {  3034,  -1054}, {0x9e, 0x00, 0x50, 0xff}}},\n    {{{ -1811,   1203,   2048}, 0, {  3034,   7120}, {0x9e, 0x00, 0x50, 0xff}}},\n    {{{ -1586,   1203,   2324}, 0, {  5790,   7120}, {0x9e, 0x00, 0x50, 0xff}}},\n    {{{ -1586,   2022,   2324}, 0, {  5790,  -1054}, {0x9e, 0x00, 0x50, 0xff}}},\n};\n\n// 0x07040CA0 - 0x07040D90\nstatic const Vtx inside_castle_seg7_vertex_07040CA0[] = {\n    {{{ -1586,   2022,   2324}, 0, { -9228,  -3098}, {0xce, 0x00, 0x74, 0xff}}},\n    {{{ -1279,   1203,   2458}, 0, { -6162,   5076}, {0xce, 0x00, 0x74, 0xff}}},\n    {{{ -1279,   2022,   2458}, 0, { -6162,  -3098}, {0xce, 0x00, 0x74, 0xff}}},\n    {{{ -1586,   1203,   2324}, 0, { -9228,   5076}, {0xce, 0x00, 0x74, 0xff}}},\n    {{{  -613,   2022,   1126}, 0, { -3608,      0}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{  -460,   1203,   1280}, 0, { -5140,   8142}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{  -613,   1203,   1126}, 0, { -3608,   8142}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{  -460,   2022,   1280}, 0, { -5140,      0}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{ -1279,   2022,   1126}, 0, {  3034,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -613,   2022,   1126}, 0, { -3608,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -613,   1203,   1126}, 0, { -3608,   8142}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -921,   1459,   1126}, 0, {  -540,   5586}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -921,   1203,   1126}, 0, {  -540,   8142}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1074,   1459,   1126}, 0, {   990,   5586}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1074,   1203,   1126}, 0, {   990,   8142}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07040D90 - 0x07040E70\nstatic const Vtx inside_castle_seg7_vertex_07040D90[] = {\n    {{{  -460,   2022,   1741}, 0, { 20408,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -460,   1203,   1741}, 0, { 20408,  11208}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -460,   1203,   1280}, 0, { 25006,  11208}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -460,   2022,   1280}, 0, { 25006,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    51,   3046,   3789}, 0, {  5078,      0}, {0x00, 0x8f, 0x38, 0xff}}},\n    {{{  -460,   3046,   3789}, 0, {     0,      0}, {0x00, 0x8f, 0x38, 0xff}}},\n    {{{    51,   2022,   1741}, 0, {  5078,  10186}, {0x00, 0x8f, 0x38, 0xff}}},\n    {{{  -460,   2022,   1741}, 0, {     0,  10186}, {0x00, 0x8f, 0x38, 0xff}}},\n    {{{    51,   2253,   4710}, 0, { -1052,   3798}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -50,   2509,   4710}, 0, {     0,   1244}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   3046,   4710}, 0, { -1052,  -4120}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -665,   3046,   3994}, 0, { -2074,  -7186}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -665,   2253,   3994}, 0, { -2074,    734}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -460,   2253,   3789}, 0, {     0,    734}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07040E70 - 0x07040F60\nstatic const Vtx inside_castle_seg7_vertex_07040E70[] = {\n    {{{  -665,   2253,   4506}, 0, { -7184,    734}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -665,   3046,   3994}, 0, { -2074,  -7186}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -665,   3046,   4506}, 0, { -7184,  -7186}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -665,   2253,   3994}, 0, { -2074,    734}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -665,   3046,   3994}, 0, { -2074,  -7186}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -460,   2253,   3789}, 0, {     0,    734}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -460,   3046,   3789}, 0, {     0,  -7186}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{    51,   3046,   3789}, 0, {   990,  -7186}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{    51,   2253,   3789}, 0, {   990,    734}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   256,   2253,   3994}, 0, {  3034,    734}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   256,   3046,   3994}, 0, {  3034,  -7186}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   256,   3046,   3994}, 0, {  3034,  -7186}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   256,   2253,   3994}, 0, {  3034,    734}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   256,   2253,   4506}, 0, {  8144,    734}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   256,   3046,   4506}, 0, {  8144,  -7186}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07040F60 - 0x07041040\nstatic const Vtx inside_castle_seg7_vertex_07040F60[] = {\n    {{{  -562,   2022,   2458}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -562,   1408,   2458}, 0, {     0,   6098}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -562,   2022,   3686}, 0, { 12232,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -50,   2509,   4710}, 0, {     0,   1244}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   3046,   4710}, 0, {  4056,  -4120}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   3046,   4710}, 0, { -1052,  -4120}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -357,   2509,   4710}, 0, {  3034,   1244}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   2253,   4710}, 0, { -1052,   3798}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -50,   2253,   4710}, 0, {     0,   3798}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,   2253,   4710}, 0, {  4056,   3798}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -357,   2253,   4710}, 0, {  3034,   3798}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   1684,   2509}, 0, {  7634,  -3804}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    51,   1300,   1741}, 0, {     0,     28}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    51,   1203,   1741}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07041040 - 0x07041120\nstatic const Vtx inside_castle_seg7_vertex_07041040[] = {\n    {{{   154,   1684,   2509}, 0, {  -542,  -3804}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   154,   2022,   2509}, 0, {  -542,  -7186}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   154,   2022,   3686}, 0, {-12294,  -7186}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -562,   1408,   2458}, 0, {     0,    990}, {0x00, 0x8f, 0x38, 0xff}}},\n    {{{   154,   2022,   3686}, 0, {  7122,  -5142}, {0x00, 0x8f, 0x38, 0xff}}},\n    {{{  -562,   2022,   3686}, 0, {     0,  -5142}, {0x00, 0x8f, 0x38, 0xff}}},\n    {{{   154,   1408,   2458}, 0, {  7122,    990}, {0x00, 0x8f, 0x38, 0xff}}},\n    {{{    51,   2381,   2458}, 0, {  7122, -10762}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    51,   2022,   1741}, 0, {     0,  -7186}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    51,   2022,   2458}, 0, {  7122,  -7186}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -50,   2253,   4762}, 0, {   480,   1244}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -50,   2509,   4762}, 0, {   480,  -1310}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -50,   2509,   4710}, 0, {   990,  -1310}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -50,   2253,   4710}, 0, {   990,   1244}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07041120 - 0x070411A0\nstatic const Vtx inside_castle_seg7_vertex_07041120[] = {\n    {{{  -357,   2509,   4762}, 0, {   480,  -1310}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -357,   2253,   4762}, 0, {   480,   1244}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -357,   2253,   4710}, 0, {   990,   1244}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -357,   2509,   4710}, 0, {   990,  -1310}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -50,   2509,   4762}, 0, {   480,  -1310}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -357,   2509,   4762}, 0, {   480,  -1310}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -357,   2509,   4710}, 0, {   990,  -1310}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -50,   2509,   4710}, 0, {   990,  -1310}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x070411A0 - 0x070412A0\nstatic const Vtx inside_castle_seg7_vertex_070411A0[] = {\n    {{{  1618,   1715,   2160}, 0, {  4056,  -4120}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1618,   1920,   1715}, 0, {  -390,  -6164}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1618,   1715,   1510}, 0, { -2434,  -4120}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1618,   1203,   1751}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1670,   1203,   1751}, 0, {  -540,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1670,   1459,   1751}, 0, {  -542,  -1564}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1618,   1459,   1751}, 0, {     0,  -1564}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1618,   1459,   1904}, 0, {     0,  -1564}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1670,   1203,   1904}, 0, {  -540,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1618,   1203,   1904}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1670,   1459,   1904}, 0, {  -542,  -1564}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1670,   1459,   1904}, 0, {  -542,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1618,   1459,   1751}, 0, {     0,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1670,   1459,   1751}, 0, {  -542,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1618,   1459,   1904}, 0, {     0,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1618,   1920,   1956}, 0, {  2012,  -6164}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070412A0 - 0x07041390\nstatic const Vtx inside_castle_seg7_vertex_070412A0[] = {\n    {{{  1618,   1715,   2160}, 0, {  4056,  -4120}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1618,   1459,   1904}, 0, {  1500,  -1566}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1618,   1203,   2160}, 0, {  4056,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1618,   1459,   1751}, 0, {     0,  -1566}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1618,   1203,   1904}, 0, {  1502,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1618,   1715,   1510}, 0, { -2434,  -4120}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1618,   1203,   1510}, 0, { -2434,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1618,   1203,   1751}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1337,   1715,   2160}, 0, {   990,  -2076}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1618,   1203,   2160}, 0, { -2074,   3032}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1337,   1203,   2160}, 0, {   990,   3032}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1618,   1715,   2160}, 0, { -2074,  -2076}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1337,   1920,   1956}, 0, {   990,  -4120}, {0x00, 0xa7, 0xa6, 0xff}}},\n    {{{  1618,   1715,   2160}, 0, { -2074,  -2076}, {0x00, 0xa7, 0xa6, 0xff}}},\n    {{{  1337,   1715,   2160}, 0, {   990,  -2076}, {0x00, 0xa7, 0xa6, 0xff}}},\n};\n\n// 0x07041390 - 0x07041480\nstatic const Vtx inside_castle_seg7_vertex_07041390[] = {\n    {{{  1337,   1203,   1510}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1618,   1203,   1510}, 0, {  3034,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1618,   1715,   1510}, 0, {  3034,  -4120}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1337,   1920,   1956}, 0, {   990,  -4120}, {0x00, 0xa7, 0xa6, 0xff}}},\n    {{{  1618,   1920,   1956}, 0, { -2074,  -4120}, {0x00, 0xa7, 0xa6, 0xff}}},\n    {{{  1618,   1715,   2160}, 0, { -2074,  -2076}, {0x00, 0xa7, 0xa6, 0xff}}},\n    {{{  1337,   1920,   1715}, 0, {  2012,   -212}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1618,   1920,   1956}, 0, { -1052,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1337,   1920,   1956}, 0, {  2012,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1618,   1920,   1715}, 0, { -1052,   -212}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1337,   1715,   1510}, 0, {     0,  -4120}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1337,   1715,   1510}, 0, {     0,  -4120}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{  1618,   1920,   1715}, 0, {  3034,  -6164}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{  1337,   1920,   1715}, 0, {     0,  -6164}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{  1618,   1715,   1510}, 0, {  3034,  -4120}, {0x00, 0xa7, 0x59, 0xff}}},\n};\n\n// 0x07041480 - 0x07041570\nstatic const Vtx inside_castle_seg7_vertex_07041480[] = {\n    {{{  -187,   1203,   3762}, 0, {   308,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -187,   2022,   3762}, 0, {   308,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -136,   2022,   3813}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1145,   1203,   3762}, 0, {   650,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1094,   2022,   3762}, 0, {   308,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1094,   1203,   3762}, 0, {   308,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1094,   1203,   3762}, 0, {   308,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1043,   2022,   3813}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1043,   1203,   3813}, 0, {     0,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1094,   2022,   3762}, 0, {   308,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1145,   2022,   3762}, 0, {   650,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1196,   1203,   3813}, 0, {   990,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1145,   2022,   3762}, 0, {   650,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1145,   1203,   3762}, 0, {   650,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1196,   2022,   3813}, 0, {   990,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07041570 - 0x07041650\nstatic const Vtx inside_castle_seg7_vertex_07041570[] = {\n    {{{  -238,   1203,   3762}, 0, {   650,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -187,   2022,   3762}, 0, {   308,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -187,   1203,   3762}, 0, {   308,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -187,   1203,   3762}, 0, {   308,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -136,   2022,   3813}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -136,   1203,   3813}, 0, {     0,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -665,   2253,   4506}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -665,   3046,   4506}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -562,   3046,   4506}, 0, {   734,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -238,   2022,   3762}, 0, {   650,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -290,   1203,   3813}, 0, {   990,   2012}, {0xa8, 0x00, 0xa6, 0xff}}},\n    {{{  -238,   2022,   3762}, 0, {   650,      0}, {0xa8, 0x00, 0xa6, 0xff}}},\n    {{{  -238,   1203,   3762}, 0, {   650,   2012}, {0xa8, 0x00, 0xa6, 0xff}}},\n    {{{  -290,   2022,   3813}, 0, {   990,      0}, {0xa8, 0x00, 0xa6, 0xff}}},\n};\n\n// 0x07041650 - 0x07041730\nstatic const Vtx inside_castle_seg7_vertex_07041650[] = {\n    {{{  -460,   2253,   4608}, 0, {   224,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -460,   3046,   4608}, 0, {   224,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -460,   3046,   4710}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -460,   2253,   4710}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -562,   2253,   4506}, 0, {   734,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -460,   3046,   4608}, 0, {   224,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -460,   2253,   4608}, 0, {   224,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -562,   3046,   4506}, 0, {   734,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -665,   2253,   4506}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -562,   3046,   4506}, 0, {   734,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -562,   2253,   4506}, 0, {   734,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   2253,   4710}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    51,   3046,   4608}, 0, {   734,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    51,   2253,   4608}, 0, {   734,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07041730 - 0x070417E0\nstatic const Vtx inside_castle_seg7_vertex_07041730[] = {\n    {{{    51,   2253,   4608}, 0, {   734,   2012}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{    51,   3046,   4608}, 0, {   734,      0}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{   154,   3046,   4506}, 0, {   224,      0}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{   154,   2253,   4506}, 0, {   224,   2012}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{    51,   2253,   4710}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    51,   3046,   4710}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    51,   3046,   4608}, 0, {   734,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   154,   2253,   4506}, 0, {   224,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   154,   3046,   4506}, 0, {   224,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,   3046,   4506}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,   2253,   4506}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070417E0 - 0x070418D0\nstatic const Vtx inside_castle_seg7_vertex_070417E0[] = {\n    {{{ -1196,   2022,   3813}, 0, {  2524,      0}, {0x3f, 0x00, 0x93, 0xff}}},\n    {{{ -1196,   1203,   3813}, 0, {  2524,    990}, {0x3f, 0x00, 0x93, 0xff}}},\n    {{{ -1920,   1203,   3395}, 0, {  1712,    990}, {0x3f, 0x00, 0x93, 0xff}}},\n    {{{  1337,   1203,   2160}, 0, {  1604,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1311,   1203,   2160}, 0, {  1604,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1311,   1715,   2160}, 0, {  1604,    352}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1337,   1715,   2160}, 0, {  1604,    352}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1337,   1715,   2160}, 0, {  1604,    352}, {0x00, 0xa7, 0xa6, 0xff}}},\n    {{{  1311,   1715,   2160}, 0, {  1604,    352}, {0x00, 0xa7, 0xa6, 0xff}}},\n    {{{  1311,   1920,   1956}, 0, {  1196,     96}, {0x00, 0xa7, 0xa6, 0xff}}},\n    {{{  1337,   1920,   1956}, 0, {  1196,     96}, {0x00, 0xa7, 0xa6, 0xff}}},\n    {{{  1337,   1920,   1715}, 0, {   712,     96}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1311,   1920,   1956}, 0, {  1196,     96}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1311,   1920,   1715}, 0, {   712,     96}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1337,   1920,   1956}, 0, {  1196,     96}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x070418D0 - 0x070419B0\nstatic const Vtx inside_castle_seg7_vertex_070418D0[] = {\n    {{{  1311,   1715,   1510}, 0, {   304,    352}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{  1337,   1920,   1715}, 0, {   712,     96}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{  1311,   1920,   1715}, 0, {   712,     96}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{  1337,   1715,   1510}, 0, {   304,    352}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{  1311,   1203,   1510}, 0, {   304,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1337,   1715,   1510}, 0, {   304,    352}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1311,   1715,   1510}, 0, {   304,    352}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1337,   1203,   1510}, 0, {   304,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   587,   2022,   3395}, 0, {  4356,      0}, {0xc1, 0x00, 0x93, 0xff}}},\n    {{{  -136,   1203,   3813}, 0, {  3544,    990}, {0xc1, 0x00, 0x93, 0xff}}},\n    {{{  -136,   2022,   3813}, 0, {  3544,      0}, {0xc1, 0x00, 0x93, 0xff}}},\n    {{{ -1196,   2022,   3813}, 0, {  2524,      0}, {0x3f, 0x00, 0x93, 0xff}}},\n    {{{ -1920,   1203,   3395}, 0, {  1712,    990}, {0x3f, 0x00, 0x93, 0xff}}},\n    {{{ -1920,   2022,   3395}, 0, {  1712,      0}, {0x3f, 0x00, 0x93, 0xff}}},\n};\n\n// 0x070419B0 - 0x07041A90\nstatic const Vtx inside_castle_seg7_vertex_070419B0[] = {\n    {{{   893,   2022,   3089}, 0, {  4780,      0}, {0x93, 0x00, 0xc1, 0xff}}},\n    {{{  1311,   1203,   2365}, 0, {  5588,    990}, {0x93, 0x00, 0xc1, 0xff}}},\n    {{{   893,   1203,   3089}, 0, {  4780,    990}, {0x93, 0x00, 0xc1, 0xff}}},\n    {{{  1311,   2022,   2365}, 0, {  5588,      0}, {0x93, 0x00, 0xc1, 0xff}}},\n    {{{  1311,   1715,   2160}, 0, {  5780,    352}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1311,   1203,   2365}, 0, {  5588,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1311,   2022,   2365}, 0, {  5588,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1311,   1920,   1956}, 0, {  5980,     96}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1311,   1920,   1715}, 0, {  6220,     96}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1311,   2022,   1305}, 0, {  6612,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1311,   1203,   2160}, 0, {  5780,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1920,   2022,    275}, 0, { 10488,      0}, {0x3f, 0x00, 0x6e, 0xff}}},\n    {{{ -1196,   1203,   -142}, 0, {  9676,    990}, {0x3f, 0x00, 0x6e, 0xff}}},\n    {{{ -1196,   2022,   -142}, 0, {  9676,      0}, {0x3f, 0x00, 0x6e, 0xff}}},\n};\n\n// 0x07041A90 - 0x07041B90\nstatic const Vtx inside_castle_seg7_vertex_07041A90[] = {\n    {{{   587,   2022,   3395}, 0, {  4356,      0}, {0xc1, 0x00, 0x93, 0xff}}},\n    {{{   587,   1203,   3395}, 0, {  4356,    990}, {0xc1, 0x00, 0x93, 0xff}}},\n    {{{  -136,   1203,   3813}, 0, {  3544,    990}, {0xc1, 0x00, 0x93, 0xff}}},\n    {{{ -2226,   2022,    581}, 0, { 10912,      0}, {0x6d, 0x00, 0x3f, 0xff}}},\n    {{{ -2644,   2022,   1305}, 0, { 11720,      0}, {0x6d, 0x00, 0x3f, 0xff}}},\n    {{{ -2644,   1203,   1305}, 0, { 11720,    990}, {0x6d, 0x00, 0x3f, 0xff}}},\n    {{{ -2226,   1203,    581}, 0, { 10912,    990}, {0x6d, 0x00, 0x3f, 0xff}}},\n    {{{ -2644,   1459,   1904}, 0, { 12300,    670}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2644,   1459,   1751}, 0, { 12148,    670}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2644,   2022,   1305}, 0, { 11720,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2644,   1203,   1305}, 0, { 11720,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2644,   2022,   2365}, 0, { 12744,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2644,   1203,   1751}, 0, { 12148,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1920,   2022,    275}, 0, { 10488,      0}, {0x3f, 0x00, 0x6e, 0xff}}},\n    {{{ -1920,   1203,    275}, 0, { 10488,    990}, {0x3f, 0x00, 0x6e, 0xff}}},\n    {{{ -1196,   1203,   -142}, 0, {  9676,    990}, {0x3f, 0x00, 0x6e, 0xff}}},\n};\n\n// 0x07041B90 - 0x07041C90\nstatic const Vtx inside_castle_seg7_vertex_07041B90[] = {\n    {{{   893,   1203,    581}, 0, {  7420,    990}, {0x93, 0x00, 0x3f, 0xff}}},\n    {{{  1311,   1203,   1305}, 0, {  6612,    990}, {0x93, 0x00, 0x3f, 0xff}}},\n    {{{  1311,   2022,   1305}, 0, {  6612,      0}, {0x93, 0x00, 0x3f, 0xff}}},\n    {{{   893,   2022,    581}, 0, {  7420,      0}, {0x93, 0x00, 0x3f, 0xff}}},\n    {{{ -2226,   1203,   3089}, 0, {  1288,    990}, {0x6d, 0x00, 0xc1, 0xff}}},\n    {{{ -2644,   2022,   2365}, 0, {   480,      0}, {0x6d, 0x00, 0xc1, 0xff}}},\n    {{{ -2226,   2022,   3089}, 0, {  1288,      0}, {0x6d, 0x00, 0xc1, 0xff}}},\n    {{{ -2644,   1203,   2365}, 0, {   480,    990}, {0x6d, 0x00, 0xc1, 0xff}}},\n    {{{  -966,   1920,   -142}, 0, {  9460,     96}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -136,   2022,   -142}, 0, {  8656,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1196,   2022,   -142}, 0, {  9676,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -351,   1920,   -142}, 0, {  8860,     96}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1196,   1203,   -142}, 0, {  9676,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -966,   1306,   -142}, 0, {  9460,    862}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -351,   1306,   -142}, 0, {  8860,    862}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -136,   1203,   -142}, 0, {  8656,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07041C90 - 0x07041D90\nstatic const Vtx inside_castle_seg7_vertex_07041C90[] = {\n    {{{  -136,   1203,   -142}, 0, {  8656,    990}, {0xc1, 0x00, 0x6e, 0xff}}},\n    {{{   587,   2022,    275}, 0, {  7844,      0}, {0xc1, 0x00, 0x6e, 0xff}}},\n    {{{  -136,   2022,   -142}, 0, {  8656,      0}, {0xc1, 0x00, 0x6e, 0xff}}},\n    {{{   587,   1203,    275}, 0, {  7844,    990}, {0xc1, 0x00, 0x6e, 0xff}}},\n    {{{  1311,   1203,   1305}, 0, {  6612,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1311,   1203,   1510}, 0, {  6420,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1311,   1715,   1510}, 0, {  6420,    352}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1311,   2022,   1305}, 0, {  6612,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2695,   1203,   1751}, 0, { 12152,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2644,   1203,   1751}, 0, { 12148,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2644,   1459,   1751}, 0, { 12148,    670}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1311,   1920,   1715}, 0, {  6220,     96}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2644,   1203,   2365}, 0, {   480,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2644,   1203,   1904}, 0, {    36,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2644,   1459,   1904}, 0, {    36,    670}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2644,   2022,   2365}, 0, {   480,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07041D90 - 0x07041E70\nstatic const Vtx inside_castle_seg7_vertex_07041D90[] = {\n    {{{ -2695,   1203,   1904}, 0, { 12300,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2644,   1203,   1751}, 0, { 12148,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2695,   1203,   1751}, 0, { 12152,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2644,   1203,   1904}, 0, { 12300,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2695,   1203,   1751}, 0, { 12152,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2644,   1459,   1751}, 0, { 12148,    670}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2695,   1459,   1751}, 0, { 12152,    670}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -802,   1613,   3813}, 0, {  2900,    478}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1043,   1203,   3813}, 0, {  2668,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1043,   2022,   3813}, 0, {  2668,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2695,   1459,   1751}, 0, { 12152,    670}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2644,   1459,   1904}, 0, { 12300,    670}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2695,   1459,   1904}, 0, { 12300,    670}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2644,   1459,   1751}, 0, { 12148,    670}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07041E70 - 0x07041F30\nstatic const Vtx inside_castle_seg7_vertex_07041E70[] = {\n    {{{ -2695,   1459,   1904}, 0, {    36,    670}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2644,   1459,   1904}, 0, {    36,    670}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2644,   1203,   1904}, 0, {    36,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2695,   1203,   1904}, 0, {    36,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -546,   1613,   3813}, 0, {  3152,    478}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1043,   2022,   3813}, 0, {  2668,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -290,   2022,   3813}, 0, {  3400,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -802,   1613,   3813}, 0, {  2900,    478}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -290,   1203,   3813}, 0, {  3400,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -546,   1357,   3813}, 0, {  3152,    798}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -802,   1357,   3813}, 0, {  2900,    798}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1043,   1203,   3813}, 0, {  2668,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07041F30 - 0x07042050\nstatic const Gfx inside_castle_seg7_dl_07041F30[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_0900B000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_0703E798.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0703E798.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0703E7B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703E8A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 2, 10, 11, 0x0,  2, 11, 12, 0x0),\n    gsSP2Triangles(12,  0,  2, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703E9A0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 3,  1,  0, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  3,  6, 0x0,  3,  4,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13,  5, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703EA80, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07042050 - 0x070421E8\nstatic const Gfx inside_castle_seg7_dl_07042050[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0703EAE0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  3,  6,  0, 0x0),\n    gsSP2Triangles( 0,  7,  8, 0x0,  0,  8,  1, 0x0),\n    gsSP2Triangles( 7,  0,  5, 0x0,  4,  9,  5, 0x0),\n    gsSP2Triangles( 5, 10, 11, 0x0,  5, 12, 10, 0x0),\n    gsSP2Triangles( 5, 13, 12, 0x0, 14,  5, 11, 0x0),\n    gsSP1Triangle( 2, 15,  3, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703EBE0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 5,  2,  6, 0x0,  2,  7,  8, 0x0),\n    gsSP2Triangles( 2,  9,  6, 0x0,  1,  7,  2, 0x0),\n    gsSP2Triangles( 2, 10,  9, 0x0,  2,  8, 10, 0x0),\n    gsSP2Triangles(11,  5,  6, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703ECD0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 4,  5,  2, 0x0,  6,  3,  2, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703EDD0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0,  9, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703EEB0, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070421E8 - 0x07042828\nstatic const Gfx inside_castle_seg7_dl_070421E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0703EF50, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703F050, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703F150, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703F250, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 4, 10,  5, 0x0,  7, 11,  8, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703F350, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 4, 10,  5, 0x0,  7, 11,  8, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703F450, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 4, 10,  5, 0x0,  7, 11,  8, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703F550, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703F650, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703F750, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703F850, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 4,  6, 10, 0x0,  7, 11,  8, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703F950, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703FA50, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703FB50, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703FC50, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703FD50, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 4, 10,  5, 0x0,  7, 11,  8, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703FE50, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703FF50, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07040050, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 4, 10,  5, 0x0,  7, 11,  8, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07040150, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07040250, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  4, 11,  5, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07040350, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  2, 15,  0, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07040450, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  5,  7, 0x0),\n    gsSP2Triangles( 3,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07042828 - 0x07042BD0\nstatic const Gfx inside_castle_seg7_dl_07042828[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07040510, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  9,  8,  2, 0x0),\n    gsSP2Triangles( 1,  9,  2, 0x0,  0, 11,  1, 0x0),\n    gsSP2Triangles( 2, 12,  0, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07040610, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 3,  4,  1, 0x0,  2,  5,  0, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07040710, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP1Triangle(12, 13,  9, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070407F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070408E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070409E0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07040AC0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07040BA0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07040CA0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(10, 12, 11, 0x0, 13, 14,  8, 0x0),\n    gsSP1Triangle( 8, 11, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07040D90, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07040E70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07040F60, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  3, 0x0),\n    gsSP2Triangles( 6,  9,  4, 0x0,  6, 10,  9, 0x0),\n    gsSP1Triangle(11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07041040, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07041120, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07042BD0 - 0x07042CC8\nstatic const Gfx inside_castle_seg7_dl_07042BD0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_070411A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070412A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  5,  6,  3, 0x0),\n    gsSP2Triangles( 0,  5,  3, 0x0,  6,  7,  3, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07041390, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 0,  2, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07042CC8 - 0x07042DC8\nstatic const Gfx inside_castle_seg7_dl_07042CC8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07041480, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 3, 10,  4, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07041570, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  0,  9,  1, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07041650, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07041730, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle( 7,  9, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07042DC8 - 0x07043028\nstatic const Gfx inside_castle_seg7_dl_07042DC8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_0900B800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_070417E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070418D0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070419B0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 8,  6,  9, 0x0,  8,  7,  6, 0x0),\n    gsSP2Triangles( 4, 10,  5, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07041A90, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0,  7,  9, 11, 0x0),\n    gsSP2Triangles( 8, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07041B90, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12,  8, 10, 0x0, 12, 13,  8, 0x0),\n    gsSP2Triangles(11, 14, 15, 0x0, 11, 15,  9, 0x0),\n    gsSP2Triangles(14, 13, 12, 0x0, 14, 12, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07041C90, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  6, 11,  7, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07041D90, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07041E70, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9,  4, 0x0,  7, 10, 11, 0x0),\n    gsSP2Triangles(11,  9,  8, 0x0, 11, 10,  9, 0x0),\n    gsSP1Triangle( 8,  4,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07043028 - 0x070430F8\nconst Gfx inside_castle_seg7_dl_07043028[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07041F30),\n    gsSPDisplayList(inside_castle_seg7_dl_07042050),\n    gsSPDisplayList(inside_castle_seg7_dl_070421E8),\n    gsSPDisplayList(inside_castle_seg7_dl_07042828),\n    gsSPDisplayList(inside_castle_seg7_dl_07042BD0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07042CC8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07042DC8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/2/3/model.inc.c",
    "content": "// 0x070430F8 - 0x07043110\nstatic const Lights1 inside_castle_seg7_lights_070430F8 = gdSPDefLights1(\n    0x5f, 0x5f, 0x5f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07043110 - 0x07043128\nstatic const Lights1 inside_castle_seg7_lights_07043110 = gdSPDefLights1(\n    0x40, 0x3a, 0x1e,\n    0xac, 0x9d, 0x52, 0x28, 0x28, 0x28\n);\n\n// 0x07043128 - 0x070431A8\nstatic const Vtx inside_castle_seg7_vertex_07043128[] = {\n    {{{   360,   1459,    156}, 0, {   990,    990}, {0xc1, 0x00, 0x6d, 0xff}}},\n    {{{   360,   1766,    156}, 0, {   990,      0}, {0xc1, 0x00, 0x6d, 0xff}}},\n    {{{    94,   1766,      2}, 0, {     0,      0}, {0xc1, 0x00, 0x6d, 0xff}}},\n    {{{    94,   1459,      2}, 0, {     0,    990}, {0xc1, 0x00, 0x6d, 0xff}}},\n    {{{ -1427,   1766,      2}, 0, {     0,      0}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{ -1693,   1766,    156}, 0, {   990,      0}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{ -1693,   1459,    156}, 0, {   990,    990}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{ -1427,   1459,      2}, 0, {     0,    990}, {0x3f, 0x00, 0x6d, 0xff}}},\n};\n\n// 0x070431A8 - 0x07043298\nstatic const Vtx inside_castle_seg7_vertex_070431A8[] = {\n    {{{  -450,   1664,   1741}, 0, {   990,   1892}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -450,   1664,   1434}, 0, {   990,    448}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -450,   1690,   1408}, 0, {     0,    328}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -450,   1331,   1766}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -450,   1664,   1741}, 0, {   990,    448}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -450,   1690,   1766}, 0, {     0,    328}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -450,   1357,   1741}, 0, {   990,   1892}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -450,   1331,   1766}, 0, {     0,    328}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -450,   1357,   1434}, 0, {   990,   1892}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -450,   1357,   1741}, 0, {   990,    448}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -450,   1331,   1408}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -450,   1664,   1434}, 0, {     0,    448}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -450,   1331,   1408}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -450,   1690,   1408}, 0, {   990,    328}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -450,   1357,   1434}, 0, {     0,   1892}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07043298 - 0x07043398\nstatic const Vtx inside_castle_seg7_vertex_07043298[] = {\n    {{{    50,   1408,    -22}, 0, {     0,    524}, {0xc1, 0x02, 0x6e, 0xff}}},\n    {{{   405,   1408,    181}, 0, {     0,   2012}, {0xc1, 0x02, 0x6e, 0xff}}},\n    {{{    94,   1459,      2}, 0, {   990,    712}, {0xc1, 0x02, 0x6e, 0xff}}},\n    {{{  -450,   1664,   1741}, 0, {   990,   1892}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -450,   1690,   1408}, 0, {     0,    328}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -450,   1690,   1766}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   360,   1766,    156}, 0, {   990,    712}, {0xc1, 0x01, 0x6e, 0xff}}},\n    {{{   405,   1818,    181}, 0, {     0,    524}, {0xc1, 0x01, 0x6e, 0xff}}},\n    {{{    50,   1818,    -22}, 0, {     0,   2012}, {0xc1, 0x01, 0x6e, 0xff}}},\n    {{{   360,   1766,    156}, 0, {   990,    712}, {0xc1, 0xfd, 0x6d, 0xff}}},\n    {{{    50,   1818,    -22}, 0, {     0,   2012}, {0xc1, 0xfd, 0x6d, 0xff}}},\n    {{{    94,   1766,      2}, 0, {   990,   1828}, {0xc1, 0xfd, 0x6d, 0xff}}},\n    {{{    94,   1766,      2}, 0, {   990,    712}, {0xc4, 0x00, 0x6f, 0xff}}},\n    {{{    50,   1818,    -22}, 0, {     0,    524}, {0xc4, 0x00, 0x6f, 0xff}}},\n    {{{    50,   1408,    -22}, 0, {     0,   2012}, {0xc4, 0x00, 0x6f, 0xff}}},\n    {{{    94,   1459,      2}, 0, {   990,   1828}, {0xc4, 0x00, 0x6f, 0xff}}},\n};\n\n// 0x07043398 - 0x07043498\nstatic const Vtx inside_castle_seg7_vertex_07043398[] = {\n    {{{   405,   1408,    181}, 0, {     0,   2012}, {0xc1, 0xfe, 0x6d, 0xff}}},\n    {{{   360,   1459,    156}, 0, {   990,   1828}, {0xc1, 0xfe, 0x6d, 0xff}}},\n    {{{    94,   1459,      2}, 0, {   990,    712}, {0xc1, 0xfe, 0x6d, 0xff}}},\n    {{{ -1427,   1459,      2}, 0, {   990,   1828}, {0x3c, 0x00, 0x6f, 0xff}}},\n    {{{ -1383,   1408,    -22}, 0, {     0,   2012}, {0x3c, 0x00, 0x6f, 0xff}}},\n    {{{ -1383,   1818,    -22}, 0, {     0,    524}, {0x3c, 0x00, 0x6f, 0xff}}},\n    {{{   405,   1408,    181}, 0, {   990,   2012}, {0xc3, 0x00, 0x6f, 0xff}}},\n    {{{   360,   1766,    156}, 0, {     0,    580}, {0xc3, 0x00, 0x6f, 0xff}}},\n    {{{   360,   1459,    156}, 0, {     0,   1808}, {0xc3, 0x00, 0x6f, 0xff}}},\n    {{{   405,   1818,    181}, 0, {   990,    376}, {0xc3, 0x00, 0x6f, 0xff}}},\n    {{{ -1693,   1459,    156}, 0, {   990,   1828}, {0x3f, 0xff, 0x6e, 0xff}}},\n    {{{ -1738,   1408,    181}, 0, {     0,   2012}, {0x3f, 0xff, 0x6e, 0xff}}},\n    {{{ -1383,   1408,    -22}, 0, {     0,    524}, {0x3f, 0xff, 0x6e, 0xff}}},\n    {{{ -1427,   1459,      2}, 0, {   990,    712}, {0x3f, 0x03, 0x6d, 0xff}}},\n    {{{ -1693,   1459,    156}, 0, {   990,   1828}, {0x3f, 0x03, 0x6d, 0xff}}},\n    {{{ -1383,   1408,    -22}, 0, {     0,    524}, {0x3f, 0x03, 0x6d, 0xff}}},\n};\n\n// 0x07043498 - 0x07043568\nstatic const Vtx inside_castle_seg7_vertex_07043498[] = {\n    {{{ -1693,   1459,    156}, 0, {     0,   1808}, {0x3d, 0x00, 0x6f, 0xff}}},\n    {{{ -1693,   1766,    156}, 0, {     0,    580}, {0x3d, 0x00, 0x6f, 0xff}}},\n    {{{ -1738,   1818,    181}, 0, {   990,    376}, {0x3d, 0x00, 0x6f, 0xff}}},\n    {{{ -1738,   1408,    181}, 0, {   990,   2012}, {0x3d, 0x00, 0x6f, 0xff}}},\n    {{{ -1427,   1766,      2}, 0, {   990,   1828}, {0x3f, 0x02, 0x6d, 0xff}}},\n    {{{ -1738,   1818,    181}, 0, {     0,    524}, {0x3f, 0x02, 0x6d, 0xff}}},\n    {{{ -1693,   1766,    156}, 0, {   990,    712}, {0x3f, 0x02, 0x6d, 0xff}}},\n    {{{ -1427,   1459,      2}, 0, {   990,   1828}, {0x3c, 0x00, 0x6f, 0xff}}},\n    {{{ -1383,   1818,    -22}, 0, {     0,    524}, {0x3c, 0x00, 0x6f, 0xff}}},\n    {{{ -1427,   1766,      2}, 0, {   990,    712}, {0x3c, 0x00, 0x6f, 0xff}}},\n    {{{ -1427,   1766,      2}, 0, {   990,   1828}, {0x3f, 0xfe, 0x6e, 0xff}}},\n    {{{ -1383,   1818,    -22}, 0, {     0,   2012}, {0x3f, 0xfe, 0x6e, 0xff}}},\n    {{{ -1738,   1818,    181}, 0, {     0,    524}, {0x3f, 0xfe, 0x6e, 0xff}}},\n};\n\n// 0x07043568 - 0x070435C8\nstatic const Vtx inside_castle_seg7_vertex_07043568[] = {\n    {{{  -450,   1357,   1587}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -450,   1664,   1741}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -450,   1357,   1741}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -450,   1664,   1587}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -450,   1357,   1434}, 0, {  2012,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -450,   1664,   1434}, 0, {  2012,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070435C8 - 0x07043608\nstatic const Vtx inside_castle_seg7_vertex_070435C8[] = {\n    {{{ -2525,   1664,   2552}, 0, {  2012,      0}, {0x6d, 0x00, 0xc1, 0xff}}},\n    {{{ -2345,   1664,   2863}, 0, {     0,      0}, {0x6d, 0x00, 0xc1, 0xff}}},\n    {{{ -2525,   1510,   2552}, 0, {  2012,    990}, {0x6d, 0x00, 0xc1, 0xff}}},\n    {{{ -2345,   1510,   2863}, 0, {     0,    990}, {0x6d, 0x00, 0xc1, 0xff}}},\n};\n\n// 0x07043608 - 0x07043648\nstatic const Vtx inside_castle_seg7_vertex_07043608[] = {\n    {{{ -2525,   1510,   2552}, 0, {  2012,      0}, {0x6d, 0x00, 0xc1, 0xff}}},\n    {{{ -2345,   1357,   2863}, 0, {     0,    990}, {0x6d, 0x00, 0xc1, 0xff}}},\n    {{{ -2525,   1357,   2552}, 0, {  2012,    990}, {0x6d, 0x00, 0xc1, 0xff}}},\n    {{{ -2345,   1510,   2863}, 0, {     0,      0}, {0x6d, 0x00, 0xc1, 0xff}}},\n};\n\n// 0x07043648 - 0x07043688\nstatic const Vtx inside_castle_seg7_vertex_07043648[] = {\n    {{{ -1723,   1818,   3497}, 0, {  2012,      0}, {0x3f, 0x00, 0x93, 0xff}}},\n    {{{ -1368,   1818,   3702}, 0, {     0,      0}, {0x3f, 0x00, 0x93, 0xff}}},\n    {{{ -1723,   1613,   3497}, 0, {  2012,    990}, {0x3f, 0x00, 0x93, 0xff}}},\n    {{{ -1368,   1613,   3702}, 0, {     0,    990}, {0x3f, 0x00, 0x93, 0xff}}},\n};\n\n// 0x07043688 - 0x070436C8\nstatic const Vtx inside_castle_seg7_vertex_07043688[] = {\n    {{{ -1368,   1613,   3702}, 0, {     0,    -24}, {0x3f, 0x00, 0x93, 0xff}}},\n    {{{ -1368,   1408,   3702}, 0, {     0,    990}, {0x3f, 0x00, 0x93, 0xff}}},\n    {{{ -1723,   1408,   3497}, 0, {  2012,    982}, {0x3f, 0x00, 0x93, 0xff}}},\n    {{{ -1723,   1613,   3497}, 0, {  2012,      0}, {0x3f, 0x00, 0x93, 0xff}}},\n};\n\n// 0x070436C8 - 0x07043708\nstatic const Vtx inside_castle_seg7_vertex_070436C8[] = {\n    {{{    50,   1818,   3694}, 0, {  2012,      0}, {0xc1, 0x00, 0x93, 0xff}}},\n    {{{   405,   1613,   3489}, 0, {     0,    990}, {0xc1, 0x00, 0x93, 0xff}}},\n    {{{    50,   1613,   3694}, 0, {  2012,    990}, {0xc1, 0x00, 0x93, 0xff}}},\n    {{{   405,   1818,   3489}, 0, {     0,      0}, {0xc1, 0x00, 0x93, 0xff}}},\n};\n\n// 0x07043708 - 0x07043748\nstatic const Vtx inside_castle_seg7_vertex_07043708[] = {\n    {{{    50,   1613,   3694}, 0, {  2012,      0}, {0xc1, 0x00, 0x93, 0xff}}},\n    {{{   405,   1613,   3489}, 0, {     0,      0}, {0xc1, 0x00, 0x93, 0xff}}},\n    {{{   405,   1408,   3489}, 0, {     0,    990}, {0xc1, 0x00, 0x93, 0xff}}},\n    {{{    50,   1408,   3694}, 0, {  2012,    990}, {0xc1, 0x00, 0x93, 0xff}}},\n};\n\n// 0x07043748 - 0x07043788\nstatic const Vtx inside_castle_seg7_vertex_07043748[] = {\n    {{{   944,   1920,   2981}, 0, {  2012,      0}, {0x93, 0x00, 0xc1, 0xff}}},\n    {{{  1251,   1920,   2449}, 0, {     0,      0}, {0x93, 0x00, 0xc1, 0xff}}},\n    {{{  1251,   1613,   2449}, 0, {     0,    990}, {0x93, 0x00, 0xc1, 0xff}}},\n    {{{   944,   1613,   2981}, 0, {  2012,    990}, {0x93, 0x00, 0xc1, 0xff}}},\n};\n\n// 0x07043788 - 0x070437C8\nstatic const Vtx inside_castle_seg7_vertex_07043788[] = {\n    {{{   944,   1613,   2981}, 0, {  2012,      0}, {0x93, 0x00, 0xc1, 0xff}}},\n    {{{  1251,   1613,   2449}, 0, {     0,      0}, {0x93, 0x00, 0xc1, 0xff}}},\n    {{{  1251,   1306,   2449}, 0, {     0,    990}, {0x93, 0x00, 0xc1, 0xff}}},\n    {{{   944,   1306,   2981}, 0, {  2012,    990}, {0x93, 0x00, 0xc1, 0xff}}},\n};\n\n// 0x070437C8 - 0x07043820\nstatic const Gfx inside_castle_seg7_dl_070437C8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_070430F8.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_070430F8.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07043128, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07043820 - 0x07043930\nstatic const Gfx inside_castle_seg7_dl_07043820[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_07043110.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07043110.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_070431A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07043298, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07043398, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07043498, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle(10, 11, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07043930 - 0x07043988\nstatic const Gfx inside_castle_seg7_dl_07043930[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_070430F8.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_070430F8.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07043568, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  3,  0, 0x0,  4,  5,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07043988 - 0x070439C0\nstatic const Gfx inside_castle_seg7_dl_07043988[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07010800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_070435C8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070439C0 - 0x070439F8\nstatic const Gfx inside_castle_seg7_dl_070439C0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07011800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07043608, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070439F8 - 0x07043A30\nstatic const Gfx inside_castle_seg7_dl_070439F8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_0700E800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07043648, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07043A30 - 0x07043A68\nstatic const Gfx inside_castle_seg7_dl_07043A30[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_0700F800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07043688, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07043A68 - 0x07043AA0\nstatic const Gfx inside_castle_seg7_dl_07043A68[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_0700C800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_070436C8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07043AA0 - 0x07043AD8\nstatic const Gfx inside_castle_seg7_dl_07043AA0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_0700D800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07043708, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07043AD8 - 0x07043B10\nstatic const Gfx inside_castle_seg7_dl_07043AD8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_0700A800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07043748, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07043B10 - 0x07043B48\nstatic const Gfx inside_castle_seg7_dl_07043B10[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_0700B800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07043788, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07043B48 - 0x07043C38\nconst Gfx inside_castle_seg7_dl_07043B48[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_070437C8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07043820),\n    gsSPDisplayList(inside_castle_seg7_dl_07043930),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07043988),\n    gsSPDisplayList(inside_castle_seg7_dl_070439C0),\n    gsSPDisplayList(inside_castle_seg7_dl_070439F8),\n    gsSPDisplayList(inside_castle_seg7_dl_07043A30),\n    gsSPDisplayList(inside_castle_seg7_dl_07043A68),\n    gsSPDisplayList(inside_castle_seg7_dl_07043AA0),\n    gsSPDisplayList(inside_castle_seg7_dl_07043AD8),\n    gsSPDisplayList(inside_castle_seg7_dl_07043B10),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/2/4/model.inc.c",
    "content": "// 0x07043C38 - 0x07043C50\nstatic const Lights1 inside_castle_seg7_lights_07043C38 = gdSPDefLights1(\n    0x5f, 0x5f, 0x5f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07043C50 - 0x07043C90\nstatic const Vtx inside_castle_seg7_vertex_07043C50[] = {\n    {{{   164,   1408,   2355}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   164,   1254,   2355}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   164,   1254,   2202}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   164,   1408,   2202}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07043C90 - 0x07043CD8\nstatic const Gfx inside_castle_seg7_dl_07043C90[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_07043C38.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07043C38.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07043C50, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07043CD8 - 0x07043D48\nconst Gfx inside_castle_seg7_dl_07043CD8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07043C90),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/2/5/model.inc.c",
    "content": "// 0x07043D48 - 0x07043E48\nstatic const Vtx inside_castle_seg7_vertex_07043D48[] = {\n    {{{  4025,   2330,   3620}, 0, {  3204,  -5482}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  3052,   2330,     36}, 0, {     0,   6438}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  4025,   2330,     36}, 0, {  3204,   6438}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  4639,   2330,     36}, 0, {  3204,   6438}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  5612,   2330,     36}, 0, {     0,   6438}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  5612,   2330,   3620}, 0, {     0,  -5482}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  4639,   2330,   3620}, 0, {  3204,  -5482}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  5612,   2330,   1469}, 0, {     0,   1670}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  6943,   2125,   2186}, 0, { -4458,   -714}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  5612,   2330,   2186}, 0, {     0,   -714}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  6943,   2125,   1469}, 0, { -4458,   1670}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  3052,   2330,   2186}, 0, {     0,   -714}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1721,   2125,   1469}, 0, { -4458,   1670}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  3052,   2330,   1469}, 0, {     0,   1670}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1721,   2125,   2186}, 0, { -4458,   -714}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  3052,   2330,   3620}, 0, {     0,  -5482}, {0x44, 0x44, 0x44, 0xff}}},\n};\n\n// 0x07043E48 - 0x07043F28\nstatic const Vtx inside_castle_seg7_vertex_07043E48[] = {\n    {{{  5510,   2125,   3927}, 0, {   308,  -6504}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  5382,   2330,   3620}, 0, {   732,  -5482}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  5612,   2330,   3390}, 0, {     0,  -4718}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  5919,   2125,   3517}, 0, { -1052,  -5142}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  5612,   2330,   2186}, 0, {     0,   -714}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  6943,   2125,   2186}, 0, { -4458,   -714}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  5919,   2125,   2493}, 0, { -1052,  -1736}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  2745,   2125,   2493}, 0, { -1052,  -1736}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1721,   2125,   2186}, 0, { -4458,   -714}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  3052,   2330,   2186}, 0, {     0,   -714}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  2745,   2125,   3517}, 0, { -1052,  -5142}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  3052,   2330,   3390}, 0, {     0,  -4718}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  3282,   2330,   3620}, 0, {   732,  -5482}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  3154,   2125,   3927}, 0, {   308,  -6504}, {0x55, 0x55, 0x55, 0xff}}},\n};\n\n// 0x07043F28 - 0x07044018\nstatic const Vtx inside_castle_seg7_vertex_07043F28[] = {\n    {{{  3052,   2330,    265}, 0, {     0,   5674}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3052,   2330,   1469}, 0, {     0,   1670}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  2745,   2125,   1162}, 0, { -1052,   2692}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  4742,   2125,   3927}, 0, {  2864,  -6504}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5382,   2330,   3620}, 0, {   732,  -5482}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5510,   2125,   3927}, 0, {   308,  -6504}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  4869,   2330,   3620}, 0, {  2440,  -5482}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5612,   2330,   3390}, 0, {     0,  -4718}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5612,   2330,   2186}, 0, {     0,   -714}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5919,   2125,   2493}, 0, { -1052,  -1736}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5919,   2125,   3517}, 0, { -1052,  -5142}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5919,   2125,   1162}, 0, { -1052,   2692}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5612,   2330,    265}, 0, {     0,   5674}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5919,   2125,    138}, 0, { -1052,   6098}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5612,   2330,   1469}, 0, {     0,   1670}, {0x77, 0x77, 0x77, 0xff}}},\n};\n\n// 0x07044018 - 0x07044108\nstatic const Vtx inside_castle_seg7_vertex_07044018[] = {\n    {{{  3154,   2125,   3927}, 0, {   308,  -6504}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3282,   2330,   3620}, 0, {   732,  -5482}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3795,   2330,   3620}, 0, {  2440,  -5482}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  2745,   2125,    138}, 0, { -1052,   6098}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3052,   2330,    265}, 0, {     0,   5674}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  2745,   2125,   1162}, 0, { -1052,   2692}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  2745,   2125,   3517}, 0, { -1052,  -5142}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  2745,   2125,   2493}, 0, { -1052,  -1736}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3052,   2330,   3390}, 0, {     0,  -4718}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3052,   2330,   2186}, 0, {     0,   -714}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3922,   2125,   3927}, 0, {  2864,  -6504}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  4332,   2125,   3517}, 0, {  4226,  -5142}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4639,   2330,   3390}, 0, {  3204,  -4718}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4869,   2330,   3620}, 0, {  2440,  -5482}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4742,   2125,   3927}, 0, {  2864,  -6504}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x07044108 - 0x070441E8\nstatic const Vtx inside_castle_seg7_vertex_07044108[] = {\n    {{{  5612,   2330,    265}, 0, {     0,   5674}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5382,   2330,     36}, 0, {   732,   6438}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5510,   2125,   -271}, 0, {   308,   7460}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5919,   2125,    138}, 0, { -1052,   6098}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5612,   2330,   1469}, 0, {     0,   1670}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5919,   2125,   1162}, 0, { -1052,   2692}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  6943,   2125,   1469}, 0, { -4458,   1670}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  1721,   2125,   1469}, 0, { -4458,   1670}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2745,   2125,   1162}, 0, { -1052,   2692}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3052,   2330,   1469}, 0, {     0,   1670}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3282,   2330,     36}, 0, {   732,   6438}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3052,   2330,    265}, 0, {     0,   5674}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2745,   2125,    138}, 0, { -1052,   6098}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3154,   2125,   -271}, 0, {   308,   7460}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x070441E8 - 0x070442C8\nstatic const Vtx inside_castle_seg7_vertex_070441E8[] = {\n    {{{  3922,   2125,   3927}, 0, {  2864,  -6504}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4025,   2330,   3390}, 0, {  3204,  -4718}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4332,   2125,   3517}, 0, {  4226,  -5142}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3795,   2330,   3620}, 0, {  2440,  -5482}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4332,   2125,   3517}, 0, {  4226,  -5142}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4025,   2330,   3390}, 0, {  3204,  -4718}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4025,   2330,    265}, 0, {  3204,   5674}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4332,   2125,    138}, 0, {  4226,   6098}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4639,   2330,    265}, 0, {  3204,   5674}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4639,   2330,   3390}, 0, {  3204,  -4718}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5510,   2125,   -271}, 0, {   308,   7460}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4869,   2330,     36}, 0, {  2440,   6438}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4742,   2125,   -271}, 0, {  2864,   7460}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5382,   2330,     36}, 0, {   732,   6438}, {0xbb, 0xbb, 0xbb, 0xff}}},\n};\n\n// 0x070442C8 - 0x070443A8\nstatic const Vtx inside_castle_seg7_vertex_070442C8[] = {\n    {{{  3922,   2125,   -271}, 0, {  2864,   7460}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3282,   2330,     36}, 0, {   732,   6438}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3154,   2125,   -271}, 0, {   308,   7460}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3795,   2330,     36}, 0, {  2440,   6438}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4332,   2125,   3517}, 0, {  4226,  -5142}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4025,   2330,    265}, 0, {  3204,   5674}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4332,   2125,    138}, 0, {  4226,   6098}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4742,   2125,   -271}, 0, {  2864,   7460}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4869,   2330,     36}, 0, {  2440,   6438}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4332,   2125,    138}, 0, {  4226,   6098}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4639,   2330,    265}, 0, {  3204,   5674}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4025,   2330,    265}, 0, {  3204,   5674}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  3922,   2125,   -271}, 0, {  2864,   7460}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  3795,   2330,     36}, 0, {  2440,   6438}, {0xdd, 0xdd, 0xdd, 0xff}}},\n};\n\n// 0x070443A8 - 0x07044498\nstatic const Vtx inside_castle_seg7_vertex_070443A8[] = {\n    {{{  4742,   1613,    650}, 0, {   990,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4639,   1613,    650}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4639,   1613,    752}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5919,   1408,   2493}, 0, { -3096,  -2842}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6226,   1408,   1981}, 0, {  -542,  -4376}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6226,   1408,   1674}, 0, {   990,  -4376}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6943,   1408,   2186}, 0, { -1564,  -7952}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6943,   1408,   2084}, 0, { -1052,  -7952}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5919,   1408,   1162}, 0, {  3544,  -2842}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6943,   1408,   1469}, 0, {  2012,  -7952}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6943,   1408,   1572}, 0, {  1500,  -7952}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5458,   1613,    240}, 0, {   990,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5356,   1613,    240}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5356,   1613,    343}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5458,   1613,    343}, 0, {   478,    480}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07044498 - 0x07044588\nstatic const Vtx inside_castle_seg7_vertex_07044498[] = {\n    {{{  5458,   1613,   1264}, 0, {   990,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5356,   1613,   1367}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5458,   1613,   1367}, 0, {   478,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4742,   1613,    650}, 0, {   990,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4639,   1613,    752}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4742,   1613,    752}, 0, {   478,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4946,   1613,   2698}, 0, {   990,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4844,   1613,   2698}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4844,   1613,   2800}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4946,   1613,   2800}, 0, {   478,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5561,   1613,   3108}, 0, {   990,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5458,   1613,   3210}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5561,   1613,   3210}, 0, {   478,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5458,   1613,   3108}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5356,   1613,   1264}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07044588 - 0x07044688\nstatic const Vtx inside_castle_seg7_vertex_07044588[] = {\n    {{{  5510,   1408,   -271}, 0, { 10698,   -798}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5407,   1408,    -15}, 0, {  9422,   -288}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5663,   1408,    240}, 0, {  8144,  -1566}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5919,   1408,    138}, 0, {  8654,  -2842}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5663,   1408,   3415}, 0, { -7694,  -1566}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4844,   1408,    -15}, 0, {  9422,   2522}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4742,   1408,   -271}, 0, { 10698,   3032}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4588,   1408,    240}, 0, {  8144,   3798}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4332,   1408,    138}, 0, {  8654,   5076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4332,   1408,   3517}, 0, { -8206,   5076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4588,   1408,   3415}, 0, { -7694,   3798}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5407,   1408,   3671}, 0, { -8972,   -288}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5510,   1408,   3927}, 0, {-10250,   -798}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5919,   1408,   3517}, 0, { -8206,  -2842}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4844,   1408,   3671}, 0, { -8972,   2522}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4742,   1408,   3927}, 0, {-10250,   3032}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07044688 - 0x07044778\nstatic const Vtx inside_castle_seg7_vertex_07044688[] = {\n    {{{  3820,   1408,    -15}, 0, {  9422,   2522}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4076,   1408,    240}, 0, {  8144,   3798}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4332,   1408,    138}, 0, {  8654,   5076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4076,   1408,   3415}, 0, { -7694,   3798}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4332,   1408,   3517}, 0, { -8206,   5076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3922,   1408,   -271}, 0, { 10698,   3032}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3922,   1408,   3927}, 0, {-10250,   3032}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3820,   1408,   3671}, 0, { -8972,   2522}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3206,   1613,   1367}, 0, {   478,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3308,   1613,   1367}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3308,   1613,   1264}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3257,   1408,    -15}, 0, {  9422,   -288}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3154,   1408,   -271}, 0, { 10698,   -798}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3001,   1408,    240}, 0, {  8144,  -1566}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2745,   1408,    138}, 0, {  8654,  -2842}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07044778 - 0x07044858\nstatic const Vtx inside_castle_seg7_vertex_07044778[] = {\n    {{{  2745,   1408,   3517}, 0, { -8206,  -2842}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3001,   1408,   3415}, 0, { -7694,  -1566}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3001,   1408,    240}, 0, {  8144,  -1566}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2745,   1408,    138}, 0, {  8654,  -2842}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3922,   1408,   3927}, 0, {-10250,   3032}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3257,   1408,   3671}, 0, { -8972,   -288}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3154,   1408,   3927}, 0, {-10250,   -798}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3820,   1408,   3671}, 0, { -8972,   2522}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3922,   1613,    752}, 0, {   478,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4025,   1613,    752}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4025,   1613,    650}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3206,   1613,   1367}, 0, {   478,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3308,   1613,   1264}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3206,   1613,   1264}, 0, {   990,    480}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07044858 - 0x07044948\nstatic const Vtx inside_castle_seg7_vertex_07044858[] = {\n    {{{  3103,   1613,   3210}, 0, {   478,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3206,   1613,   3108}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3103,   1613,   3108}, 0, {   990,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3206,   1613,   3210}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3718,   1613,   2800}, 0, {   478,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3820,   1613,   2698}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3718,   1613,   2698}, 0, {   990,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3820,   1613,   2800}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3922,   1613,    752}, 0, {   478,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4025,   1613,    650}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3922,   1613,    650}, 0, {   990,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3206,   1613,    343}, 0, {   478,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3308,   1613,    240}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3206,   1613,    240}, 0, {   990,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3308,   1613,    343}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07044948 - 0x070449C8\nstatic const Vtx inside_castle_seg7_vertex_07044948[] = {\n    {{{  2745,   1408,   1162}, 0, {  3544,  -2842}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1721,   1408,   1469}, 0, {  2012,  -7952}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1721,   1408,   1572}, 0, {  1500,  -7952}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2438,   1408,   1674}, 0, {   990,  -4376}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2438,   1408,   1981}, 0, {  -542,  -4376}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2745,   1408,   2493}, 0, { -3096,  -2842}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1721,   1408,   2084}, 0, { -1052,  -7952}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1721,   1408,   2186}, 0, { -1564,  -7952}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070449C8 - 0x07044AB8\nstatic const Vtx inside_castle_seg7_vertex_070449C8[] = {\n    {{{  1721,   1408,   1751}, 0, {  2268,  -1054}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  1721,   1203,   1751}, 0, {  2268,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  1721,   1203,   1469}, 0, {  5078,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  6943,   1203,   2084}, 0, {  2012,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  6226,   1203,   1981}, 0, { -5140,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  6226,   1408,   1981}, 0, { -5140,  -1054}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  6943,   1408,   2084}, 0, {  2012,  -1054}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  6943,   1408,   2186}, 0, { -2074,  -1054}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  6943,   1408,   1904}, 0, {   734,  -1054}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  6943,   1203,   1904}, 0, {   734,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  6943,   1203,   2186}, 0, { -2074,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  6943,   1408,   1469}, 0, {  5078,  -1054}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  6943,   1203,   1469}, 0, {  5078,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  6943,   1203,   1751}, 0, {  2268,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  6943,   1408,   1751}, 0, {  2268,  -1054}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x07044AB8 - 0x07044BA8\nstatic const Vtx inside_castle_seg7_vertex_07044AB8[] = {\n    {{{  1721,   1408,   2084}, 0, {  2012,  -1054}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2438,   1203,   1981}, 0, { -5140,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  1721,   1203,   2084}, 0, {  2012,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  1721,   1408,   1751}, 0, {  2268,  -1054}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  1721,   1203,   1469}, 0, {  5078,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  1721,   1408,   1469}, 0, {  5078,  -1054}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  1721,   1203,   2186}, 0, { -2074,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  1721,   1408,   1904}, 0, {   734,  -1054}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  1721,   1408,   2186}, 0, { -2074,  -1054}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  1721,   1203,   1904}, 0, {   734,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2438,   1408,   1981}, 0, { -5140,  -1054}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  6943,   1408,   1572}, 0, {  2012,  -1054}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  6226,   1203,   1674}, 0, { -5140,    990}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  6943,   1203,   1572}, 0, {  2012,    990}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  6226,   1408,   1674}, 0, { -5140,  -1054}, {0xdd, 0xdd, 0xdd, 0xff}}},\n};\n\n// 0x07044BA8 - 0x07044C98\nstatic const Vtx inside_castle_seg7_vertex_07044BA8[] = {\n    {{{  1721,   1203,   1572}, 0, {  2012,    990}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  2438,   1408,   1674}, 0, { -5140,  -1054}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  1721,   1408,   1572}, 0, {  2012,  -1054}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  2438,   1203,   1674}, 0, { -5140,    990}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  1721,   1408,   1904}, 0, {     0,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1670,   1203,   1904}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1670,   1408,   1904}, 0, {   478,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6994,   1408,   1904}, 0, {   478,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6994,   1203,   1904}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6943,   1203,   1904}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6943,   1408,   1904}, 0, {     0,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6943,   1408,   1751}, 0, {     0,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6943,   1203,   1751}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6994,   1203,   1751}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6994,   1408,   1751}, 0, {   478,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07044C98 - 0x07044D08\nstatic const Vtx inside_castle_seg7_vertex_07044C98[] = {\n    {{{  1670,   1408,   1751}, 0, {   478,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1721,   1203,   1751}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1721,   1408,   1751}, 0, {     0,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1670,   1203,   1751}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1721,   1408,   1904}, 0, {     0,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1721,   1203,   1904}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1670,   1203,   1904}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07044D08 - 0x07044E08\nstatic const Vtx inside_castle_seg7_vertex_07044D08[] = {\n    {{{  5663,   1408,   3415}, 0, { -7694,  -1566}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5663,   1408,    240}, 0, {  8144,  -1566}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4588,   1408,    240}, 0, {  8144,   3798}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6406,   1203,   2007}, 0, {  -668,   2648}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6943,   1203,   2084}, 0, { -1052,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6943,   1203,   1572}, 0, {  1502,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6406,   1203,   1648}, 0, {  1118,   2648}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6994,   1203,   1751}, 0, {   606,   -288}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6943,   1203,   1904}, 0, {  -158,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6994,   1203,   1904}, 0, {  -158,   -288}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6943,   1203,   1751}, 0, {   606,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4844,   1408,    -15}, 0, {  9422,   2522}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5407,   1408,    -15}, 0, {  9422,   -288}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4076,   1408,   3415}, 0, { -7694,   3798}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3257,   1408,   3671}, 0, { -8972,   -288}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3820,   1408,   3671}, 0, { -8972,   2522}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07044E08 - 0x07044EF8\nstatic const Vtx inside_castle_seg7_vertex_07044E08[] = {\n    {{{  5663,   1408,   3415}, 0, { -7694,  -1566}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4588,   1408,    240}, 0, {  8144,   3798}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4588,   1408,   3415}, 0, { -7694,   3798}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4844,   1408,   3671}, 0, { -8972,   2522}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5407,   1408,   3671}, 0, { -8972,   -288}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4076,   1408,   3415}, 0, { -7694,   3798}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4076,   1408,    240}, 0, {  8144,   3798}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3001,   1408,    240}, 0, {  8144,  -1566}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3257,   1408,    -15}, 0, {  9422,   -288}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3820,   1408,    -15}, 0, {  9422,   2522}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3001,   1408,   3415}, 0, { -7694,  -1566}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3257,   1408,   3671}, 0, { -8972,   -288}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2438,   1382,   1981}, 0, {  3034,    160}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2438,   1382,   1674}, 0, {     0,    160}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2412,   1382,   1670}, 0, {   -66,    328}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07044EF8 - 0x07044FE8\nstatic const Vtx inside_castle_seg7_vertex_07044EF8[] = {\n    {{{  1670,   1203,   1904}, 0, {  -158,   -288}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1721,   1203,   1751}, 0, {   606,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1670,   1203,   1751}, 0, {   606,   -288}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1721,   1203,   1904}, 0, {  -158,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2258,   1203,   1648}, 0, {  1118,   2648}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1721,   1203,   2084}, 0, { -1052,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2258,   1203,   2007}, 0, {  -668,   2648}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1721,   1203,   1572}, 0, {  1502,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2438,   1408,   1981}, 0, {  3034,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2438,   1382,   1674}, 0, {     0,    160}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2438,   1382,   1981}, 0, {  3034,    160}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2438,   1408,   1674}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2386,   1331,   1989}, 0, {  3106,    882}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2361,   1331,   1663}, 0, {  -140,   1048}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2361,   1331,   1992}, 0, {  3144,   1048}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07044FE8 - 0x070450E8\nstatic const Vtx inside_castle_seg7_vertex_07044FE8[] = {\n    {{{  2438,   1382,   1981}, 0, {  3034,    160}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2412,   1382,   1670}, 0, {   -66,    328}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2412,   1382,   1985}, 0, {  3070,    328}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2412,   1357,   1985}, 0, {  3070,    520}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2412,   1357,   1670}, 0, {   -66,    520}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2386,   1357,   1667}, 0, {  -104,    690}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2386,   1357,   1989}, 0, {  3106,    690}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2386,   1331,   1667}, 0, {  -104,    882}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2386,   1331,   1989}, 0, {  3106,    882}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2361,   1331,   1663}, 0, {  -140,   1048}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2361,   1331,   1992}, 0, {  3144,   1048}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2361,   1306,   1663}, 0, {  -140,   1240}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2361,   1306,   1992}, 0, {  3144,   1240}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2335,   1306,   1659}, 0, {  -176,   1408}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2335,   1306,   1996}, 0, {  3180,   1408}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2335,   1280,   1659}, 0, {  -176,   1600}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070450E8 - 0x070451E8\nstatic const Vtx inside_castle_seg7_vertex_070450E8[] = {\n    {{{  2335,   1306,   1996}, 0, {  3180,   1408}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2335,   1280,   1659}, 0, {  -176,   1600}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2335,   1280,   1996}, 0, {  3180,   1600}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2310,   1280,   1656}, 0, {  -212,   1768}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2310,   1280,   2000}, 0, {  3216,   1768}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2310,   1254,   1656}, 0, {  -212,   1960}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2310,   1254,   2000}, 0, {  3216,   1960}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6226,   1382,   1981}, 0, {  3034,    160}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6226,   1408,   1674}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6226,   1408,   1981}, 0, {  3034,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2284,   1254,   1652}, 0, {  -250,   2130}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2284,   1254,   2003}, 0, {  3252,   2130}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2284,   1229,   1652}, 0, {  -250,   2322}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2284,   1229,   2003}, 0, {  3252,   2322}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2258,   1229,   1648}, 0, {  -286,   2490}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2258,   1229,   2007}, 0, {  3290,   2490}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070451E8 - 0x070452E8\nstatic const Vtx inside_castle_seg7_vertex_070451E8[] = {\n    {{{  2258,   1229,   1648}, 0, {  -286,   2490}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2258,   1203,   1648}, 0, {  -286,   2682}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2258,   1203,   2007}, 0, {  3290,   2682}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2258,   1229,   2007}, 0, {  3290,   2490}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6252,   1382,   1985}, 0, {  3070,    328}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6226,   1382,   1674}, 0, {     0,    160}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6226,   1382,   1981}, 0, {  3034,    160}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6226,   1408,   1674}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6303,   1331,   1992}, 0, {  3144,   1048}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6303,   1331,   1663}, 0, {  -140,   1048}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6278,   1331,   1667}, 0, {  -104,    882}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6252,   1382,   1670}, 0, {   -66,    328}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6252,   1357,   1985}, 0, {  3070,    520}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6252,   1357,   1670}, 0, {   -66,    520}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6278,   1357,   1989}, 0, {  3108,    690}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6278,   1357,   1667}, 0, {  -104,    690}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070452E8 - 0x070453E8\nstatic const Vtx inside_castle_seg7_vertex_070452E8[] = {\n    {{{  6278,   1357,   1667}, 0, {  -104,    690}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6278,   1357,   1989}, 0, {  3108,    690}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6278,   1331,   1989}, 0, {  3108,    882}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6278,   1331,   1667}, 0, {  -104,    882}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6303,   1331,   1992}, 0, {  3144,   1048}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6303,   1306,   1992}, 0, {  3144,   1240}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6303,   1331,   1663}, 0, {  -140,   1048}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6303,   1306,   1663}, 0, {  -140,   1240}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6329,   1306,   1996}, 0, {  3180,   1408}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6329,   1306,   1659}, 0, {  -176,   1408}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6329,   1280,   1996}, 0, {  3180,   1600}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6329,   1280,   1659}, 0, {  -176,   1600}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6354,   1280,   2000}, 0, {  3216,   1768}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6354,   1280,   1656}, 0, {  -212,   1768}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6354,   1254,   2000}, 0, {  3216,   1960}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6354,   1254,   1656}, 0, {  -212,   1960}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070453E8 - 0x07045488\nstatic const Vtx inside_castle_seg7_vertex_070453E8[] = {\n    {{{  6380,   1254,   2003}, 0, {  3254,   2130}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6354,   1254,   1656}, 0, {  -212,   1960}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6354,   1254,   2000}, 0, {  3216,   1960}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6380,   1254,   1652}, 0, {  -250,   2130}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6380,   1229,   2003}, 0, {  3254,   2322}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6380,   1229,   1652}, 0, {  -250,   2322}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6406,   1229,   2007}, 0, {  3290,   2490}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6406,   1229,   1648}, 0, {  -286,   2490}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6406,   1203,   2007}, 0, {  3290,   2682}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6406,   1203,   1648}, 0, {  -286,   2682}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07045488 - 0x07045578\nstatic const Vtx inside_castle_seg7_vertex_07045488[] = {\n    {{{  5484,   1510,   3184}, 0, {   224,    988}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  5458,   1613,   3210}, 0, {     0,      0}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  5458,   1613,   3108}, 0, {   990,      0}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  5382,   1510,    317}, 0, {   224,    988}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  5356,   1613,    343}, 0, {     0,      0}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  5356,   1613,    240}, 0, {   990,      0}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  5382,   1510,    266}, 0, {   734,    988}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  4665,   1510,    727}, 0, {   224,    988}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  4639,   1613,    752}, 0, {     0,      0}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  4639,   1613,    650}, 0, {   990,      0}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  4665,   1510,    676}, 0, {   734,    988}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  4870,   1510,   2775}, 0, {   224,    988}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  4844,   1613,   2698}, 0, {   990,      0}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  4870,   1510,   2724}, 0, {   734,    988}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  4844,   1613,   2800}, 0, {     0,      0}, {0x55, 0x55, 0x55, 0xff}}},\n};\n\n// 0x07045578 - 0x07045668\nstatic const Vtx inside_castle_seg7_vertex_07045578[] = {\n    {{{  3180,   1510,   3133}, 0, {   734,    988}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  3206,   1613,   3108}, 0, {   990,      0}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  3206,   1613,   3210}, 0, {     0,      0}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  5484,   1510,   3184}, 0, {   224,    988}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  5458,   1613,   3108}, 0, {   990,      0}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  5484,   1510,   3133}, 0, {   734,    988}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  5382,   1510,   1341}, 0, {   224,    988}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  5356,   1613,   1264}, 0, {   990,      0}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  5382,   1510,   1290}, 0, {   734,    988}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  5356,   1613,   1367}, 0, {     0,      0}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  3282,   1510,   1290}, 0, {   734,    988}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  3308,   1613,   1264}, 0, {   990,      0}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  3308,   1613,   1367}, 0, {     0,      0}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  3282,   1510,   1341}, 0, {   224,    988}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  3180,   1510,   3184}, 0, {   224,    988}, {0x55, 0x55, 0x55, 0xff}}},\n};\n\n// 0x07045668 - 0x07045758\nstatic const Vtx inside_castle_seg7_vertex_07045668[] = {\n    {{{  3794,   1510,   2724}, 0, {   734,    988}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  3820,   1613,   2800}, 0, {     0,      0}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  3794,   1510,   2775}, 0, {   224,    988}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  3820,   1613,   2698}, 0, {   990,      0}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  3999,   1510,    676}, 0, {   734,    988}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  4025,   1613,    752}, 0, {     0,      0}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  3999,   1510,    727}, 0, {   224,    988}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  4025,   1613,    650}, 0, {   990,      0}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  3282,   1510,    266}, 0, {   734,    988}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  3308,   1613,    240}, 0, {   990,      0}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  3308,   1613,    343}, 0, {     0,      0}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  3282,   1510,    317}, 0, {   224,    988}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  5919,   1408,    240}, 0, {     0,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  5868,   2208,    240}, 0, {    70,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  5868,   1408,    240}, 0, {    70,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n};\n\n// 0x07045758 - 0x07045848\nstatic const Vtx inside_castle_seg7_vertex_07045758[] = {\n    {{{  4383,   1408,    240}, 0, {   888,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4332,   2208,    240}, 0, {   990,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4332,   1408,    240}, 0, {   990,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4383,   2208,    240}, 0, {   888,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4434,   1408,    138}, 0, {   172,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4434,   2208,    138}, 0, {   172,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4434,   2208,    189}, 0, {   480,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4434,   1408,    189}, 0, {   478,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4434,   1408,   3466}, 0, {   480,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4434,   2208,   3466}, 0, {   480,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4434,   2208,   3517}, 0, {   786,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4434,   1408,   3517}, 0, {   786,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4434,   1408,   1060}, 0, {   308,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4434,   2193,   1111}, 0, {   650,     52}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4434,   1408,   1111}, 0, {   650,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n};\n\n// 0x07045848 - 0x07045928\nstatic const Vtx inside_castle_seg7_vertex_07045848[] = {\n    {{{  5919,   1408,    240}, 0, {     0,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  5919,   2208,    240}, 0, {     0,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  5868,   2208,    240}, 0, {    70,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4434,   1408,   2544}, 0, {   308,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4434,   2193,   2544}, 0, {   308,     52}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4434,   2193,   2596}, 0, {   650,     52}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4434,   1408,   2596}, 0, {   650,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4332,   2125,   2647}, 0, {   990,    224}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4383,   1408,   2647}, 0, {   990,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4383,   2159,   2647}, 0, {   990,    140}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4332,   1408,   2647}, 0, {   990,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4434,   1408,   1060}, 0, {   308,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4434,   2193,   1060}, 0, {   308,     52}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4434,   2193,   1111}, 0, {   650,     52}, {0xdd, 0xdd, 0xdd, 0xff}}},\n};\n\n// 0x07045928 - 0x07045A18\nstatic const Vtx inside_castle_seg7_vertex_07045928[] = {\n    {{{  4716,   1408,   -168}, 0, {   616,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4639,   2167,   -168}, 0, {   990,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4639,   1408,   -168}, 0, {   990,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4332,   2125,   1162}, 0, {   990,    224}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4383,   1408,   1162}, 0, {   990,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4383,   2159,   1162}, 0, {   990,    140}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4332,   1408,   1162}, 0, {   990,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  5612,   1408,   -168}, 0, {     0,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  5612,   2167,   -168}, 0, {     0,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  5535,   2167,   -168}, 0, {   342,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  5535,   1408,   -168}, 0, {   342,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4767,   1408,   -271}, 0, {     0,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4767,   2167,   -271}, 0, {     0,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4767,   2167,   -219}, 0, {   168,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4767,   1408,   -219}, 0, {   168,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n};\n\n// 0x07045A18 - 0x07045B08\nstatic const Vtx inside_castle_seg7_vertex_07045A18[] = {\n    {{{  4025,   1408,   -168}, 0, {   990,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  3948,   2167,   -168}, 0, {   616,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  3948,   1408,   -168}, 0, {   616,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4716,   1408,   -168}, 0, {   616,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4716,   2167,   -168}, 0, {   616,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4639,   2167,   -168}, 0, {   990,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4767,   1408,   3876}, 0, {   168,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4767,   2167,   3876}, 0, {   168,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4767,   2167,   3927}, 0, {     0,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4767,   1408,   3927}, 0, {     0,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  3897,   1408,   3927}, 0, {     0,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  3897,   2167,   3927}, 0, {     0,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  3897,   2167,   3876}, 0, {   168,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  3897,   1408,   3876}, 0, {   168,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4025,   2167,   -168}, 0, {   990,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n};\n\n// 0x07045B08 - 0x07045BF8\nstatic const Vtx inside_castle_seg7_vertex_07045B08[] = {\n    {{{  4230,   1408,   1111}, 0, {   650,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4230,   2193,   1060}, 0, {   308,     52}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4230,   1408,   1060}, 0, {   308,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  3897,   1408,   -219}, 0, {   168,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  3897,   2167,   -271}, 0, {     0,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  3897,   1408,   -271}, 0, {     0,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  3897,   2167,   -219}, 0, {   168,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  3129,   1408,   -168}, 0, {   342,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  3129,   2167,   -168}, 0, {   342,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  3052,   2167,   -168}, 0, {     0,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  3052,   1408,   -168}, 0, {     0,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4281,   2159,   1162}, 0, {   990,    140}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4281,   1408,   1162}, 0, {   990,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4332,   1408,   1162}, 0, {   990,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4332,   2125,   1162}, 0, {   990,    224}, {0xdd, 0xdd, 0xdd, 0xff}}},\n};\n\n// 0x07045BF8 - 0x07045CE8\nstatic const Vtx inside_castle_seg7_vertex_07045BF8[] = {\n    {{{  2796,   1408,    240}, 0, {    70,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  2745,   2208,    240}, 0, {     0,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  2745,   1408,    240}, 0, {     0,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4230,   1408,   1111}, 0, {   650,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4230,   2193,   1111}, 0, {   650,     52}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4230,   2193,   1060}, 0, {   308,     52}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4281,   2159,   2647}, 0, {   990,    140}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4332,   1408,   2647}, 0, {   990,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4332,   2125,   2647}, 0, {   990,    224}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4281,   1408,   2647}, 0, {   990,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4230,   1408,   2596}, 0, {   650,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4230,   2193,   2596}, 0, {   650,     52}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4230,   2193,   2544}, 0, {   308,     52}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4230,   1408,   2544}, 0, {   308,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  2796,   2208,    240}, 0, {    70,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n};\n\n// 0x07045CE8 - 0x07045DA8\nstatic const Vtx inside_castle_seg7_vertex_07045CE8[] = {\n    {{{  4230,   1408,   3517}, 0, {   786,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4230,   2208,   3517}, 0, {   786,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4230,   2208,   3466}, 0, {   480,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4230,   1408,   3466}, 0, {   480,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4230,   1408,    189}, 0, {   478,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4230,   2208,    189}, 0, {   480,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4230,   2208,    138}, 0, {   172,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4230,   1408,    138}, 0, {   172,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4332,   1408,    240}, 0, {   990,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4332,   2208,    240}, 0, {   990,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4281,   2208,    240}, 0, {   888,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4281,   1408,    240}, 0, {   888,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n};\n\n// 0x07045DA8 - 0x07045E98\nstatic const Vtx inside_castle_seg7_vertex_07045DA8[] = {\n    {{{  5817,   1408,    957}, 0, {   650,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5817,   2193,    957}, 0, {   650,     52}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5919,   2125,    855}, 0, {   990,    224}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5817,   1408,   3466}, 0, {   478,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5817,   2208,   3466}, 0, {   478,    -44}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5868,   2208,   3415}, 0, {   888,    -44}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5868,   1408,   3415}, 0, {   888,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5817,   1408,    138}, 0, {   786,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5817,   2208,    138}, 0, {   786,      0}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5868,   2208,     87}, 0, {   990,      0}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5868,   1408,     87}, 0, {   990,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5817,   1408,   2596}, 0, {   650,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5817,   2193,   2596}, 0, {   650,     52}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5919,   2125,   2493}, 0, {   990,    224}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5919,   1408,   2493}, 0, {   990,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n};\n\n// 0x07045E98 - 0x07045F78\nstatic const Vtx inside_castle_seg7_vertex_07045E98[] = {\n    {{{  5484,   1408,   3876}, 0, {   790,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5535,   2167,   3824}, 0, {   342,      0}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5535,   1408,   3824}, 0, {   342,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5817,   1408,    957}, 0, {   650,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5919,   2125,    855}, 0, {   990,    224}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5919,   1408,    855}, 0, {   990,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5382,   1510,    266}, 0, {   734,    988}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5458,   1613,    240}, 0, {     0,      0}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5433,   1510,    266}, 0, {   224,    988}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5356,   1613,    240}, 0, {   990,      0}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5356,   1408,    343}, 0, {     0,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5356,   1408,    240}, 0, {   990,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5382,   1510,    317}, 0, {   224,    988}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5484,   2167,   3876}, 0, {   790,      0}, {0x77, 0x77, 0x77, 0xff}}},\n};\n\n// 0x07045F78 - 0x07046078\nstatic const Vtx inside_castle_seg7_vertex_07045F78[] = {\n    {{{  4844,   1408,   2800}, 0, {     0,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  4870,   1510,   2724}, 0, {   734,    988}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  4844,   1408,   2698}, 0, {   990,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  4639,   1408,    752}, 0, {     0,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  4665,   1510,    676}, 0, {   734,    988}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  4639,   1408,    650}, 0, {   990,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  4665,   1510,    727}, 0, {   224,    988}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  4742,   1613,    650}, 0, {     0,      0}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  4716,   1510,    676}, 0, {   224,    988}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  4639,   1613,    650}, 0, {   990,      0}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  4946,   1613,   2698}, 0, {     0,      0}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  4921,   1510,   2724}, 0, {   224,    988}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  4844,   1613,   2698}, 0, {   990,      0}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5382,   1510,   1290}, 0, {   734,    988}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5458,   1613,   1264}, 0, {     0,      0}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5433,   1510,   1290}, 0, {   224,    988}, {0x77, 0x77, 0x77, 0xff}}},\n};\n\n// 0x07046078 - 0x07046178\nstatic const Vtx inside_castle_seg7_vertex_07046078[] = {\n    {{{  4844,   1408,   2800}, 0, {     0,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  4870,   1510,   2775}, 0, {   224,    988}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  4870,   1510,   2724}, 0, {   734,    988}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5458,   1408,   3210}, 0, {     0,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5484,   1510,   3133}, 0, {   734,    988}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5458,   1408,   3108}, 0, {   990,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5484,   1510,   3184}, 0, {   224,    988}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5561,   1613,   3108}, 0, {     0,      0}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5535,   1510,   3133}, 0, {   224,    988}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5458,   1613,   3108}, 0, {   990,      0}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5382,   1510,   1290}, 0, {   734,    988}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5356,   1613,   1264}, 0, {   990,      0}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5458,   1613,   1264}, 0, {     0,      0}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3129,   1510,   3133}, 0, {   224,    988}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3206,   1613,   3108}, 0, {   990,      0}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3180,   1510,   3133}, 0, {   734,    988}, {0x77, 0x77, 0x77, 0xff}}},\n};\n\n// 0x07046178 - 0x07046258\nstatic const Vtx inside_castle_seg7_vertex_07046178[] = {\n    {{{  5356,   1408,   1367}, 0, {     0,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5382,   1510,   1290}, 0, {   734,    988}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5356,   1408,   1264}, 0, {   990,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5382,   1510,   1341}, 0, {   224,    988}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3308,   1408,   1264}, 0, {   990,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3282,   1510,   1290}, 0, {   734,    988}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3282,   1510,   1341}, 0, {   224,    988}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3308,   1408,   1367}, 0, {     0,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3231,   1510,   1290}, 0, {   224,    988}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3308,   1613,   1264}, 0, {   990,      0}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3206,   1613,   1264}, 0, {     0,      0}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3743,   1510,   2724}, 0, {   224,    988}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3718,   1613,   2698}, 0, {     0,      0}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3820,   1613,   2698}, 0, {   990,      0}, {0x77, 0x77, 0x77, 0xff}}},\n};\n\n// 0x07046258 - 0x07046358\nstatic const Vtx inside_castle_seg7_vertex_07046258[] = {\n    {{{  3129,   1510,   3133}, 0, {   224,    988}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3103,   1613,   3108}, 0, {     0,      0}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3206,   1613,   3108}, 0, {   990,      0}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3206,   1408,   3108}, 0, {   990,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3180,   1510,   3184}, 0, {   224,    988}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3206,   1408,   3210}, 0, {     0,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3180,   1510,   3133}, 0, {   734,    988}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3820,   1408,   2698}, 0, {   990,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3794,   1510,   2775}, 0, {   224,    988}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3820,   1408,   2800}, 0, {     0,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3794,   1510,   2724}, 0, {   734,    988}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3743,   1510,   2724}, 0, {   224,    988}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3820,   1613,   2698}, 0, {   990,      0}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3308,   1408,    240}, 0, {   990,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3282,   1510,    317}, 0, {   224,    988}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3308,   1408,    343}, 0, {     0,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n};\n\n// 0x07046358 - 0x07046438\nstatic const Vtx inside_castle_seg7_vertex_07046358[] = {\n    {{{  3948,   1510,    676}, 0, {   224,    988}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3922,   1613,    650}, 0, {     0,      0}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  4025,   1613,    650}, 0, {   990,      0}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3999,   1510,    676}, 0, {   734,    988}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  4025,   1408,    650}, 0, {   990,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3999,   1510,    727}, 0, {   224,    988}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  4025,   1408,    752}, 0, {     0,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3129,   1408,   3824}, 0, {   342,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3129,   2167,   3824}, 0, {   342,      0}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3180,   2167,   3876}, 0, {   790,      0}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3180,   1408,   3876}, 0, {   790,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  2745,   1408,   2493}, 0, {   990,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  2847,   2193,   2596}, 0, {   650,     52}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  2847,   1408,   2596}, 0, {   650,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n};\n\n// 0x07046438 - 0x07046538\nstatic const Vtx inside_castle_seg7_vertex_07046438[] = {\n    {{{  3308,   1408,    240}, 0, {   990,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3282,   1510,    266}, 0, {   734,    988}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3282,   1510,    317}, 0, {   224,    988}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3231,   1510,    266}, 0, {   224,    988}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3308,   1613,    240}, 0, {   990,      0}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3206,   1613,    240}, 0, {     0,      0}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  2745,   1408,    855}, 0, {   990,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  2745,   2125,    855}, 0, {   990,    224}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  2847,   2193,    957}, 0, {   650,     52}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  2847,   1408,    957}, 0, {   650,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  2745,   1408,   2493}, 0, {   990,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  2745,   2125,   2493}, 0, {   990,    224}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  2847,   2193,   2596}, 0, {   650,     52}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  2796,   1408,     87}, 0, {   990,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  2796,   2208,     87}, 0, {   990,      0}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  2847,   2208,    138}, 0, {   786,      0}, {0x77, 0x77, 0x77, 0xff}}},\n};\n\n// 0x07046538 - 0x07046618\nstatic const Vtx inside_castle_seg7_vertex_07046538[] = {\n    {{{  2796,   1408,     87}, 0, {   990,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  2847,   2208,    138}, 0, {   786,      0}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  2847,   1408,    138}, 0, {   786,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  2796,   1408,   3415}, 0, {   888,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  2796,   2208,   3415}, 0, {   888,    -44}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  2847,   2208,   3466}, 0, {   478,    -44}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  2847,   1408,   3466}, 0, {   478,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5817,   1408,    189}, 0, {   480,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5817,   2208,    138}, 0, {   786,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5817,   1408,    138}, 0, {   786,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5868,   1408,   3415}, 0, {   888,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5919,   2208,   3415}, 0, {   990,    -44}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5919,   1408,   3415}, 0, {   990,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5868,   2208,   3415}, 0, {   888,    -44}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x07046618 - 0x070466F8\nstatic const Vtx inside_castle_seg7_vertex_07046618[] = {\n    {{{  5817,   1408,   3517}, 0, {   172,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5817,   2208,   3466}, 0, {   478,    -44}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5817,   1408,   3466}, 0, {   478,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5817,   2208,   3517}, 0, {   172,    -44}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4332,   1408,   3415}, 0, {     0,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4383,   2208,   3415}, 0, {    70,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4383,   1408,   3415}, 0, {    70,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4332,   2208,   3415}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4332,   2125,   2493}, 0, {     0,    224}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4383,   1408,   2493}, 0, {     0,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4332,   1408,   2493}, 0, {     0,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5817,   1408,    189}, 0, {   480,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5817,   2208,    189}, 0, {   480,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5817,   2208,    138}, 0, {   786,      0}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x070466F8 - 0x070467D8\nstatic const Vtx inside_castle_seg7_vertex_070466F8[] = {\n    {{{  5817,   1408,   2698}, 0, {   308,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5817,   2193,   2596}, 0, {   650,     52}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5817,   1408,   2596}, 0, {   650,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5817,   2193,   2698}, 0, {   308,     52}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5817,   1408,   1060}, 0, {   308,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5817,   2193,    957}, 0, {   650,     52}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5817,   1408,    957}, 0, {   650,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5817,   2193,   1060}, 0, {   308,     52}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4332,   2125,   2493}, 0, {     0,    224}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4383,   2159,   2493}, 0, {     0,    140}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4383,   1408,   2493}, 0, {     0,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5484,   2167,   -271}, 0, {   990,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5484,   1408,   -271}, 0, {   990,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5484,   1408,   -219}, 0, {   790,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x070467D8 - 0x070468C8\nstatic const Vtx inside_castle_seg7_vertex_070467D8[] = {\n    {{{  4332,   2125,   1008}, 0, {     0,    224}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4383,   1408,   1008}, 0, {     0,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4332,   1408,   1008}, 0, {     0,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4383,   2159,   1008}, 0, {     0,    140}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5433,   1510,    266}, 0, {   734,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5458,   1613,    343}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5433,   1510,    317}, 0, {   224,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5458,   1613,    240}, 0, {   990,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5356,   1408,    240}, 0, {   990,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5382,   1510,    266}, 0, {   734,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5433,   1510,    266}, 0, {   224,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5458,   1408,    240}, 0, {     0,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5535,   1408,   3824}, 0, {   342,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5535,   2167,   3824}, 0, {   342,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5612,   2167,   3824}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x070468C8 - 0x070469A8\nstatic const Vtx inside_castle_seg7_vertex_070468C8[] = {\n    {{{  5484,   2167,   -271}, 0, {   990,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5484,   1408,   -219}, 0, {   790,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5484,   2167,   -219}, 0, {   790,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5484,   2167,   3876}, 0, {   790,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5484,   1408,   3876}, 0, {   790,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5484,   1408,   3927}, 0, {   990,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5484,   2167,   3927}, 0, {   990,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4639,   1408,   3824}, 0, {   990,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4716,   2167,   3824}, 0, {   616,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4716,   1408,   3824}, 0, {   616,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4639,   2167,   3824}, 0, {   990,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5535,   1408,   3824}, 0, {   342,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5612,   2167,   3824}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5612,   1408,   3824}, 0, {     0,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x070469A8 - 0x07046A98\nstatic const Vtx inside_castle_seg7_vertex_070469A8[] = {\n    {{{  4844,   1408,   2698}, 0, {   990,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4870,   1510,   2724}, 0, {   734,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4921,   1510,   2724}, 0, {   224,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4639,   1408,    650}, 0, {   990,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4665,   1510,    676}, 0, {   734,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4716,   1510,    676}, 0, {   224,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4742,   1408,    650}, 0, {     0,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4716,   1510,    676}, 0, {   734,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4742,   1613,    752}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4716,   1510,    727}, 0, {   224,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4742,   1613,    650}, 0, {   990,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4921,   1510,   2724}, 0, {   734,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4946,   1613,   2800}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4921,   1510,   2775}, 0, {   224,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4946,   1613,   2698}, 0, {   990,      0}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x07046A98 - 0x07046B88\nstatic const Vtx inside_castle_seg7_vertex_07046A98[] = {\n    {{{  5433,   1510,   1290}, 0, {   734,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5458,   1613,   1367}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5433,   1510,   1341}, 0, {   224,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4844,   1408,   2698}, 0, {   990,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4921,   1510,   2724}, 0, {   224,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4946,   1408,   2698}, 0, {     0,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5458,   1408,   3108}, 0, {   990,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5535,   1510,   3133}, 0, {   224,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5561,   1408,   3108}, 0, {     0,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5484,   1510,   3133}, 0, {   734,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5535,   1510,   3133}, 0, {   734,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5561,   1613,   3108}, 0, {   990,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5561,   1613,   3210}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5535,   1510,   3184}, 0, {   224,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5458,   1613,   1264}, 0, {   990,      0}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x07046B88 - 0x07046C78\nstatic const Vtx inside_castle_seg7_vertex_07046B88[] = {\n    {{{  3129,   1510,   3184}, 0, {   224,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3103,   1613,   3108}, 0, {   990,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3129,   1510,   3133}, 0, {   734,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5356,   1408,   1264}, 0, {   990,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5433,   1510,   1290}, 0, {   224,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5458,   1408,   1264}, 0, {     0,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5382,   1510,   1290}, 0, {   734,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3206,   1408,   1264}, 0, {     0,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3231,   1510,   1290}, 0, {   224,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3282,   1510,   1290}, 0, {   734,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3308,   1408,   1264}, 0, {   990,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3231,   1510,   1341}, 0, {   224,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3206,   1613,   1367}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3206,   1613,   1264}, 0, {   990,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3231,   1510,   1290}, 0, {   734,    988}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x07046C78 - 0x07046D68\nstatic const Vtx inside_castle_seg7_vertex_07046C78[] = {\n    {{{  3743,   1510,   2775}, 0, {   224,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3718,   1613,   2698}, 0, {   990,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3743,   1510,   2724}, 0, {   734,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3129,   1510,   3184}, 0, {   224,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3103,   1613,   3210}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3103,   1613,   3108}, 0, {   990,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3103,   1408,   3108}, 0, {     0,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3129,   1510,   3133}, 0, {   224,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3180,   1510,   3133}, 0, {   734,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3206,   1408,   3108}, 0, {   990,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3718,   1408,   2698}, 0, {     0,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3743,   1510,   2724}, 0, {   224,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3794,   1510,   2724}, 0, {   734,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3820,   1408,   2698}, 0, {   990,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3718,   1613,   2800}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x07046D68 - 0x07046E58\nstatic const Vtx inside_castle_seg7_vertex_07046D68[] = {\n    {{{  3948,   1408,   3824}, 0, {   616,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3948,   2167,   3824}, 0, {   616,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4025,   2167,   3824}, 0, {   990,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3948,   1510,    727}, 0, {   224,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3922,   1613,    650}, 0, {   990,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3948,   1510,    676}, 0, {   734,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3922,   1613,    752}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3922,   1408,    650}, 0, {     0,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3948,   1510,    676}, 0, {   224,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3999,   1510,    676}, 0, {   734,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4025,   1408,    650}, 0, {   990,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3052,   1408,   3824}, 0, {     0,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3052,   2167,   3824}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3129,   2167,   3824}, 0, {   342,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3129,   1408,   3824}, 0, {   342,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x07046E58 - 0x07046F48\nstatic const Vtx inside_castle_seg7_vertex_07046E58[] = {\n    {{{  3206,   1408,    240}, 0, {     0,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3231,   1510,    266}, 0, {   224,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3282,   1510,    266}, 0, {   734,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3948,   1408,   3824}, 0, {   616,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4025,   2167,   3824}, 0, {   990,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4025,   1408,   3824}, 0, {   990,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3180,   2167,   3927}, 0, {   990,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3180,   1408,   3876}, 0, {   790,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3180,   2167,   3876}, 0, {   790,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3180,   1408,   3927}, 0, {   990,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3180,   2167,   -219}, 0, {   790,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3180,   1408,   -219}, 0, {   790,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3180,   1408,   -271}, 0, {   990,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3180,   2167,   -271}, 0, {   990,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3308,   1408,    240}, 0, {   990,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x07046F48 - 0x07047038\nstatic const Vtx inside_castle_seg7_vertex_07046F48[] = {\n    {{{  2847,   1408,    957}, 0, {   650,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2847,   2193,    957}, 0, {   650,     52}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2847,   2193,   1060}, 0, {   308,     52}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3231,   1510,    317}, 0, {   224,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3206,   1613,    240}, 0, {   990,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3231,   1510,    266}, 0, {   734,    988}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3206,   1613,    343}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4332,   1408,   1008}, 0, {     0,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4281,   2159,   1008}, 0, {     0,    140}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4332,   2125,   1008}, 0, {     0,    224}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4281,   1408,   1008}, 0, {     0,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4332,   1408,   2493}, 0, {     0,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4281,   1408,   2493}, 0, {     0,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4281,   2159,   2493}, 0, {     0,    140}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4332,   2125,   2493}, 0, {     0,    224}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x07047038 - 0x07047128\nstatic const Vtx inside_castle_seg7_vertex_07047038[] = {\n    {{{  4281,   1408,   3415}, 0, {    70,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4281,   2208,   3415}, 0, {    70,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4332,   2208,   3415}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2847,   1408,    957}, 0, {   650,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2847,   2193,   1060}, 0, {   308,     52}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2847,   1408,   1060}, 0, {   308,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2847,   1408,   2596}, 0, {   650,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2847,   2193,   2596}, 0, {   650,     52}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2847,   2193,   2698}, 0, {   308,     52}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2847,   1408,   2698}, 0, {   308,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2847,   1408,    138}, 0, {   786,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2847,   2208,    138}, 0, {   786,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2847,   2208,    189}, 0, {   480,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2847,   1408,    189}, 0, {   480,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4332,   1408,   3415}, 0, {     0,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x07047128 - 0x07047218\nstatic const Vtx inside_castle_seg7_vertex_07047128[] = {\n    {{{  2847,   1408,   3466}, 0, {   478,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2847,   2208,   3466}, 0, {   478,    -44}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2847,   2208,   3517}, 0, {   172,    -44}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2847,   1408,   3517}, 0, {   172,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2745,   1408,   3415}, 0, {   990,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2796,   2208,   3415}, 0, {   888,    -44}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2796,   1408,   3415}, 0, {   888,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2745,   2208,   3415}, 0, {   990,    -44}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5868,   1408,    240}, 0, {    70,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5817,   2208,    189}, 0, {   480,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5817,   1408,    189}, 0, {   480,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4383,   1408,     87}, 0, {     0,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4434,   2208,    138}, 0, {   172,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4434,   1408,    138}, 0, {   172,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4383,   2208,     87}, 0, {     0,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n};\n\n// 0x07047218 - 0x070472F8\nstatic const Vtx inside_castle_seg7_vertex_07047218[] = {\n    {{{  5868,   1408,   3568}, 0, {     0,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5868,   2208,   3568}, 0, {     0,    -44}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5817,   2208,   3517}, 0, {   172,    -44}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5817,   1408,   3517}, 0, {   172,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4383,   1408,   3415}, 0, {    70,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4434,   2208,   3466}, 0, {   480,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4434,   1408,   3466}, 0, {   480,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4383,   2208,   3415}, 0, {    70,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4383,   1408,   2493}, 0, {     0,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4383,   2159,   2493}, 0, {     0,    140}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4434,   2193,   2544}, 0, {   308,     52}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5868,   1408,    240}, 0, {    70,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5868,   2208,    240}, 0, {    70,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5817,   2208,    189}, 0, {   480,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n};\n\n// 0x070472F8 - 0x070473D8\nstatic const Vtx inside_castle_seg7_vertex_070472F8[] = {\n    {{{  5919,   1408,   2800}, 0, {     0,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5817,   2193,   2698}, 0, {   308,     52}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5817,   1408,   2698}, 0, {   308,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5919,   2125,   2800}, 0, {     0,    224}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5919,   1408,   1162}, 0, {     0,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5817,   2193,   1060}, 0, {   308,     52}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5817,   1408,   1060}, 0, {   308,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5919,   2125,   1162}, 0, {     0,    224}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4383,   1408,   2493}, 0, {     0,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4434,   2193,   2544}, 0, {   308,     52}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4434,   1408,   2544}, 0, {   308,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5535,   1408,   -168}, 0, {   342,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5484,   2167,   -219}, 0, {   790,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5484,   1408,   -219}, 0, {   790,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n};\n\n// 0x070473D8 - 0x070474B8\nstatic const Vtx inside_castle_seg7_vertex_070473D8[] = {\n    {{{  4383,   1408,   1008}, 0, {     0,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4383,   2159,   1008}, 0, {     0,    140}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4434,   2193,   1060}, 0, {   308,     52}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4434,   1408,   1060}, 0, {   308,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5458,   1408,    240}, 0, {   990,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5433,   1510,    317}, 0, {   224,    988}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5458,   1408,    343}, 0, {     0,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5433,   1510,    266}, 0, {   734,    988}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5458,   1613,    343}, 0, {     0,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5356,   1613,    343}, 0, {   990,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5382,   1510,    317}, 0, {   734,    988}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4742,   1408,    650}, 0, {   990,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4716,   1510,    676}, 0, {   734,    988}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4716,   1510,    727}, 0, {   224,    988}, {0xbb, 0xbb, 0xbb, 0xff}}},\n};\n\n// 0x070474B8 - 0x070475B8\nstatic const Vtx inside_castle_seg7_vertex_070474B8[] = {\n    {{{  5535,   1408,   -168}, 0, {   342,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5535,   2167,   -168}, 0, {   342,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5484,   2167,   -219}, 0, {   790,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4716,   1408,   3824}, 0, {   616,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4716,   2167,   3824}, 0, {   616,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4767,   2167,   3876}, 0, {   168,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4767,   1408,   3876}, 0, {   168,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4716,   1510,    727}, 0, {   224,    988}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4742,   1613,    752}, 0, {     0,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4639,   1613,    752}, 0, {   990,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4665,   1510,    727}, 0, {   734,    988}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4742,   1408,    650}, 0, {   990,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4742,   1408,    752}, 0, {     0,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5561,   1408,   3108}, 0, {   990,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5535,   1510,   3133}, 0, {   734,    988}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5535,   1510,   3184}, 0, {   224,    988}, {0xbb, 0xbb, 0xbb, 0xff}}},\n};\n\n// 0x070475B8 - 0x070476B8\nstatic const Vtx inside_castle_seg7_vertex_070475B8[] = {\n    {{{  4946,   1408,   2698}, 0, {   990,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4921,   1510,   2724}, 0, {   734,    988}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4921,   1510,   2775}, 0, {   224,    988}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4946,   1408,   2800}, 0, {     0,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4946,   1613,   2800}, 0, {     0,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4844,   1613,   2800}, 0, {   990,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4870,   1510,   2775}, 0, {   734,    988}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5535,   1510,   3184}, 0, {   224,    988}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5458,   1613,   3210}, 0, {   990,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5484,   1510,   3184}, 0, {   734,    988}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5561,   1613,   3210}, 0, {     0,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3282,   1510,   1341}, 0, {   734,    988}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3308,   1613,   1367}, 0, {   990,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3206,   1613,   1367}, 0, {     0,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5561,   1408,   3108}, 0, {   990,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5561,   1408,   3210}, 0, {     0,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n};\n\n// 0x070476B8 - 0x070477B8\nstatic const Vtx inside_castle_seg7_vertex_070476B8[] = {\n    {{{  5458,   1408,   1264}, 0, {   990,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5433,   1510,   1341}, 0, {   224,    988}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5458,   1408,   1367}, 0, {     0,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5433,   1510,   1290}, 0, {   734,    988}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5458,   1613,   1367}, 0, {     0,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5356,   1613,   1367}, 0, {   990,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5382,   1510,   1341}, 0, {   734,    988}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3282,   1510,   1341}, 0, {   734,    988}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3206,   1613,   1367}, 0, {     0,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3231,   1510,   1341}, 0, {   224,    988}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3794,   1510,   2775}, 0, {   734,    988}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3718,   1613,   2800}, 0, {     0,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3743,   1510,   2775}, 0, {   224,    988}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3206,   1408,   1367}, 0, {     0,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3231,   1510,   1290}, 0, {   734,    988}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3206,   1408,   1264}, 0, {   990,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n};\n\n// 0x070477B8 - 0x070478B8\nstatic const Vtx inside_castle_seg7_vertex_070477B8[] = {\n    {{{  3103,   1408,   3210}, 0, {     0,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3129,   1510,   3184}, 0, {   224,    988}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3129,   1510,   3133}, 0, {   734,    988}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3103,   1408,   3108}, 0, {   990,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3180,   1510,   3184}, 0, {   734,    988}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3103,   1613,   3210}, 0, {     0,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3206,   1613,   3210}, 0, {   990,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3999,   1510,    727}, 0, {   734,    988}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4025,   1613,    752}, 0, {   990,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3922,   1613,    752}, 0, {     0,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3794,   1510,   2775}, 0, {   734,    988}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3820,   1613,   2800}, 0, {   990,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3718,   1613,   2800}, 0, {     0,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3718,   1408,   2800}, 0, {     0,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3743,   1510,   2724}, 0, {   734,    988}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3718,   1408,   2698}, 0, {   990,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n};\n\n// 0x070478B8 - 0x070479B8\nstatic const Vtx inside_castle_seg7_vertex_070478B8[] = {\n    {{{  3718,   1408,   2800}, 0, {     0,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3743,   1510,   2775}, 0, {   224,    988}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3743,   1510,   2724}, 0, {   734,    988}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3922,   1408,    752}, 0, {     0,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3948,   1510,    676}, 0, {   734,    988}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3922,   1408,    650}, 0, {   990,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3948,   1510,    727}, 0, {   224,    988}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3999,   1510,    727}, 0, {   734,    988}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3922,   1613,    752}, 0, {     0,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3206,   1408,    343}, 0, {     0,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3231,   1510,    266}, 0, {   734,    988}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3206,   1408,    240}, 0, {   990,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3897,   1408,   3876}, 0, {   168,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3948,   2167,   3824}, 0, {   616,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3948,   1408,   3824}, 0, {   616,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3897,   2167,   3876}, 0, {   168,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n};\n\n// 0x070479B8 - 0x07047AB8\nstatic const Vtx inside_castle_seg7_vertex_070479B8[] = {\n    {{{  3180,   1408,   -219}, 0, {   790,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3129,   2167,   -168}, 0, {   342,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3129,   1408,   -168}, 0, {   342,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3180,   2167,   -219}, 0, {   790,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3282,   1510,    317}, 0, {   734,    988}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3206,   1613,    343}, 0, {     0,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3231,   1510,    317}, 0, {   224,    988}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3308,   1613,    343}, 0, {   990,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  2847,   1408,   1060}, 0, {   308,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  2745,   2125,   1162}, 0, {     0,    224}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  2745,   1408,   1162}, 0, {     0,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3206,   1408,    343}, 0, {     0,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3231,   1510,    266}, 0, {   734,    988}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4230,   1408,   1060}, 0, {   308,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4281,   2159,   1008}, 0, {     0,    140}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4281,   1408,   1008}, 0, {     0,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n};\n\n// 0x07047AB8 - 0x07047BB8\nstatic const Vtx inside_castle_seg7_vertex_07047AB8[] = {\n    {{{  4230,   1408,   1060}, 0, {   308,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4230,   2193,   1060}, 0, {   308,     52}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4281,   2159,   1008}, 0, {     0,    140}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4230,   1408,   2544}, 0, {   308,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4281,   2159,   2493}, 0, {     0,    140}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4281,   1408,   2493}, 0, {     0,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4230,   2193,   2544}, 0, {   308,     52}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  2847,   1408,   1060}, 0, {   308,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  2847,   2193,   1060}, 0, {   308,     52}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  2745,   2125,   1162}, 0, {     0,    224}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  2847,   1408,   3517}, 0, {   172,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  2796,   2208,   3568}, 0, {     0,    -44}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  2796,   1408,   3568}, 0, {     0,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  2847,   1408,   2698}, 0, {   308,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  2745,   2125,   2800}, 0, {     0,    224}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  2745,   1408,   2800}, 0, {     0,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n};\n\n// 0x07047BB8 - 0x07047C98\nstatic const Vtx inside_castle_seg7_vertex_07047BB8[] = {\n    {{{  2847,   1408,   2698}, 0, {   308,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  2847,   2193,   2698}, 0, {   308,     52}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  2745,   2125,   2800}, 0, {     0,    224}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  2847,   1408,    189}, 0, {   480,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  2847,   2208,    189}, 0, {   480,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  2796,   2208,    240}, 0, {    70,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  2796,   1408,    240}, 0, {    70,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4230,   1408,   3466}, 0, {   480,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4230,   2208,   3466}, 0, {   480,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4281,   2208,   3415}, 0, {    70,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4281,   1408,   3415}, 0, {    70,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4230,   1408,    138}, 0, {   172,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4230,   2208,    138}, 0, {   172,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4281,   2208,     87}, 0, {     0,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n};\n\n// 0x07047C98 - 0x07047D98\nstatic const Vtx inside_castle_seg7_vertex_07047C98[] = {\n    {{{  2847,   1408,   3517}, 0, {   172,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  2847,   2208,   3517}, 0, {   172,    -44}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  2796,   2208,   3568}, 0, {     0,    -44}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4230,   1408,    138}, 0, {   172,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4281,   2208,     87}, 0, {     0,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4281,   1408,     87}, 0, {     0,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4434,   1408,   1111}, 0, {   650,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4383,   2159,   1162}, 0, {   990,    140}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4383,   1408,   1162}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4434,   1408,    189}, 0, {   478,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4383,   2208,    240}, 0, {   888,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4383,   1408,    240}, 0, {   888,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4434,   2208,    189}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4434,   1408,   3517}, 0, {   786,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4434,   2208,   3517}, 0, {   786,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4383,   2208,   3568}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07047D98 - 0x07047E98\nstatic const Vtx inside_castle_seg7_vertex_07047D98[] = {\n    {{{  4434,   1408,   3517}, 0, {   786,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4383,   2208,   3568}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4383,   1408,   3568}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4434,   1408,   2596}, 0, {   650,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4383,   2159,   2647}, 0, {   990,    140}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4383,   1408,   2647}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4434,   2193,   2596}, 0, {   650,     52}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4742,   1408,    752}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4665,   1510,    727}, 0, {   734,    988}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4639,   1408,    752}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4434,   1408,   1111}, 0, {   650,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4434,   2193,   1111}, 0, {   650,     52}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4383,   2159,   1162}, 0, {   990,    140}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5458,   1408,    343}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5382,   1510,    317}, 0, {   734,    988}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5356,   1408,    343}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07047E98 - 0x07047F98\nstatic const Vtx inside_castle_seg7_vertex_07047E98[] = {\n    {{{  5458,   1408,    343}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5433,   1510,    317}, 0, {   224,    988}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5382,   1510,    317}, 0, {   734,    988}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4767,   1408,   -219}, 0, {   168,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4716,   2167,   -168}, 0, {   616,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4716,   1408,   -168}, 0, {   616,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4767,   2167,   -219}, 0, {   168,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4742,   1408,    752}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4716,   1510,    727}, 0, {   224,    988}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4665,   1510,    727}, 0, {   734,    988}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3308,   1408,   1367}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3282,   1510,   1341}, 0, {   734,    988}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3231,   1510,   1341}, 0, {   224,    988}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4946,   1408,   2800}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4921,   1510,   2775}, 0, {   224,    988}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4870,   1510,   2775}, 0, {   734,    988}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07047F98 - 0x07048078\nstatic const Vtx inside_castle_seg7_vertex_07047F98[] = {\n    {{{  4946,   1408,   2800}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4870,   1510,   2775}, 0, {   734,    988}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4844,   1408,   2800}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5561,   1408,   3210}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5484,   1510,   3184}, 0, {   734,    988}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5458,   1408,   3210}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5535,   1510,   3184}, 0, {   224,    988}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5458,   1408,   1367}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5433,   1510,   1341}, 0, {   224,    988}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5382,   1510,   1341}, 0, {   734,    988}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5356,   1408,   1367}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4025,   1408,    752}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3999,   1510,    727}, 0, {   734,    988}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3948,   1510,    727}, 0, {   224,    988}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07048078 - 0x07048158\nstatic const Vtx inside_castle_seg7_vertex_07048078[] = {\n    {{{  3308,   1408,   1367}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3231,   1510,   1341}, 0, {   224,    988}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3206,   1408,   1367}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3206,   1408,   3210}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3129,   1510,   3184}, 0, {   224,    988}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3103,   1408,   3210}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3180,   1510,   3184}, 0, {   734,    988}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3820,   1408,   2800}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3794,   1510,   2775}, 0, {   734,    988}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3743,   1510,   2775}, 0, {   224,    988}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3718,   1408,   2800}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4025,   1408,    752}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3948,   1510,    727}, 0, {   224,    988}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3922,   1408,    752}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07048158 - 0x07048248\nstatic const Vtx inside_castle_seg7_vertex_07048158[] = {\n    {{{  4281,   1408,   2647}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4281,   2159,   2647}, 0, {   990,    140}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4230,   2193,   2596}, 0, {   650,     52}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3948,   1408,   -168}, 0, {   616,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3897,   2167,   -219}, 0, {   168,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3897,   1408,   -219}, 0, {   168,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3948,   2167,   -168}, 0, {   616,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3308,   1408,    343}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3282,   1510,    317}, 0, {   734,    988}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3231,   1510,    317}, 0, {   224,    988}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3206,   1408,    343}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4281,   1408,   1162}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4281,   2159,   1162}, 0, {   990,    140}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4230,   2193,   1111}, 0, {   650,     52}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4230,   1408,   1111}, 0, {   650,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07048248 - 0x070482F8\nstatic const Vtx inside_castle_seg7_vertex_07048248[] = {\n    {{{  4281,   1408,    240}, 0, {   888,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4281,   2208,    240}, 0, {   888,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4230,   2208,    189}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4281,   1408,   2647}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4230,   2193,   2596}, 0, {   650,     52}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4230,   1408,   2596}, 0, {   650,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4281,   1408,   3568}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4281,   2208,   3568}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4230,   2208,   3517}, 0, {   786,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4230,   1408,   3517}, 0, {   786,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4230,   1408,    189}, 0, {   478,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070482F8 - 0x070483F8\nstatic const Vtx inside_castle_seg7_vertex_070482F8[] = {\n    {{{  5612,   2125,   3824}, 0, {   734,      0}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5868,   1408,   3568}, 0, {    96,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5612,   1408,   3824}, 0, {   734,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5868,   2125,   3568}, 0, {    96,      0}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3052,   1408,   3824}, 0, {   734,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  2796,   1408,   3568}, 0, {    96,   2012}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  2796,   2125,   3568}, 0, {    96,      0}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  3052,   2125,   3824}, 0, {   734,      0}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  5919,   1408,   2493}, 0, {  2522,   2012}, {0x88, 0x88, 0x88, 0xff}}},\n    {{{  6943,   2125,   2186}, 0, {     0,      0}, {0x88, 0x88, 0x88, 0xff}}},\n    {{{  6943,   1408,   2186}, 0, {     0,   2012}, {0x88, 0x88, 0x88, 0xff}}},\n    {{{  5919,   2125,   2493}, 0, {  2522,      0}, {0x88, 0x88, 0x88, 0xff}}},\n    {{{  1721,   1408,   2186}, 0, {     0,   2012}, {0x88, 0x88, 0x88, 0xff}}},\n    {{{  1721,   2125,   2186}, 0, {     0,      0}, {0x88, 0x88, 0x88, 0xff}}},\n    {{{  2745,   2125,   2493}, 0, {  2522,      0}, {0x88, 0x88, 0x88, 0xff}}},\n    {{{  2745,   1408,   2493}, 0, {  2522,   2012}, {0x88, 0x88, 0x88, 0xff}}},\n};\n\n// 0x070483F8 - 0x070484E8\nstatic const Vtx inside_castle_seg7_vertex_070483F8[] = {\n    {{{  6943,   1408,   1469}, 0, {  1756,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  6943,   1459,   1751}, 0, {  1054,   1868}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  6943,   2125,   1469}, 0, {  1756,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  6943,   2125,   2186}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  6943,   1459,   1904}, 0, {   670,   1868}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5919,   2125,   3415}, 0, { -3096,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5919,   1408,   2800}, 0, { -1562,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5919,   1408,   3415}, 0, { -3096,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5919,   2125,   2800}, 0, { -1562,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  6943,   1408,   2186}, 0, {     0,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  6943,   1408,   1904}, 0, {   670,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3897,   1408,   3927}, 0, {  2012,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3180,   1408,   3927}, 0, {     0,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3180,   2125,   3927}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  6943,   1408,   1751}, 0, {  1054,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x070484E8 - 0x070485C8\nstatic const Vtx inside_castle_seg7_vertex_070484E8[] = {\n    {{{  5919,   2125,    855}, 0, {  3290,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5919,   1408,    240}, 0, {  4822,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5919,   1408,    855}, 0, {  3290,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5919,   2125,    240}, 0, {  4822,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4767,   2125,   3927}, 0, {  2012,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5484,   1408,   3927}, 0, {     0,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4767,   1408,   3927}, 0, {  2012,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5484,   2125,   3927}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3897,   1408,   3927}, 0, {  2012,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3180,   2125,   3927}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3897,   2125,   3927}, 0, {  2012,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2745,   1408,   3415}, 0, { -3096,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2745,   1408,   2800}, 0, { -1562,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2745,   2125,   2800}, 0, { -1562,      0}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x070485C8 - 0x070486B8\nstatic const Vtx inside_castle_seg7_vertex_070485C8[] = {\n    {{{  2745,   1408,    855}, 0, {  3290,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2745,   1408,    240}, 0, {  4822,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2745,   2125,    240}, 0, {  4822,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2745,   2125,    855}, 0, {  3290,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  1721,   2125,   1469}, 0, {  1756,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  1721,   1459,   1751}, 0, {  1054,   1868}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  1721,   1408,   1469}, 0, {  1756,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  1721,   1408,   1751}, 0, {  1054,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  1721,   1459,   1904}, 0, {   670,   1868}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  1721,   2125,   2186}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  1721,   1408,   2186}, 0, {     0,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  1721,   1408,   1904}, 0, {   670,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2745,   1408,   3415}, 0, { -3096,   2012}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2745,   2125,   2800}, 0, { -1562,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2745,   2125,   3415}, 0, { -3096,      0}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x070486B8 - 0x070487B8\nstatic const Vtx inside_castle_seg7_vertex_070486B8[] = {\n    {{{  3052,   2125,   -168}, 0, {   734,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  2796,   2125,     87}, 0, {    96,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  2796,   1408,     87}, 0, {    96,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5612,   1408,   -168}, 0, {   734,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5868,   1408,     87}, 0, {    96,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5868,   2125,     87}, 0, {    96,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  5612,   2125,   -168}, 0, {   734,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4383,   1408,   3568}, 0, {  3800,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4639,   2125,   3824}, 0, {  3162,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4639,   1408,   3824}, 0, {  3162,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4383,   2125,   3568}, 0, {  3800,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4025,   1408,   3824}, 0, {  3162,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4025,   2125,   3824}, 0, {  3162,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4281,   2125,   3568}, 0, {  3800,      0}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  4281,   1408,   3568}, 0, {  3800,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  3052,   1408,   -168}, 0, {   734,   2012}, {0xbb, 0xbb, 0xbb, 0xff}}},\n};\n\n// 0x070487B8 - 0x070488A8\nstatic const Vtx inside_castle_seg7_vertex_070487B8[] = {\n    {{{  6943,   1408,   1469}, 0, {     0,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  6943,   2125,   1469}, 0, {     0,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  5919,   2125,   1162}, 0, {  2522,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  5919,   1408,   1162}, 0, {  2522,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4767,   1408,   -271}, 0, {  2012,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  5484,   2125,   -271}, 0, {     0,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4767,   2125,   -271}, 0, {  2012,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  5484,   1408,   -271}, 0, {     0,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  2745,   1408,   1162}, 0, {  2522,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  1721,   2125,   1469}, 0, {     0,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  1721,   1408,   1469}, 0, {     0,   2012}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  2745,   2125,   1162}, 0, {  2522,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4639,   1408,   -168}, 0, {  3162,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4383,   2125,     87}, 0, {  3800,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4383,   1408,     87}, 0, {  3800,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070488A8 - 0x07048988\nstatic const Vtx inside_castle_seg7_vertex_070488A8[] = {\n    {{{  6994,   1459,   1904}, 0, {   670,   1868}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6943,   1459,   1751}, 0, {  1054,   1868}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6994,   1459,   1751}, 0, {  1054,   1868}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6943,   1459,   1904}, 0, {   670,   1868}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6994,   1408,   1904}, 0, {   670,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6943,   1408,   1904}, 0, {   670,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6943,   1408,   1751}, 0, {  1054,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6994,   1408,   1751}, 0, {  1054,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1670,   1459,   1904}, 0, {   670,   1868}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1721,   1408,   1904}, 0, {   670,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1670,   1408,   1904}, 0, {   670,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4639,   1408,   -168}, 0, {  3162,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4639,   2125,   -168}, 0, {  3162,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4383,   2125,     87}, 0, {  3800,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07048988 - 0x07048A38\nstatic const Vtx inside_castle_seg7_vertex_07048988[] = {\n    {{{  4281,   1408,     87}, 0, {  3800,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4025,   2125,   -168}, 0, {  3162,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4025,   1408,   -168}, 0, {  3162,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4281,   2125,     87}, 0, {  3800,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1721,   1459,   1751}, 0, {  1054,   1868}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1670,   1459,   1751}, 0, {  1054,   1868}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1670,   1408,   1751}, 0, {  1054,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1721,   1408,   1751}, 0, {  1054,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1670,   1459,   1904}, 0, {   670,   1868}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1721,   1459,   1904}, 0, {   670,   1868}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1721,   1408,   1904}, 0, {   670,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07048A38 - 0x07048AA0\nstatic const Gfx inside_castle_seg7_dl_07048A38[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07043D48, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07048AA0 - 0x07048E68\nstatic const Gfx inside_castle_seg7_dl_07048AA0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07043E48, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07043F28, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07044018, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles( 0,  2, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07044108, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 10, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070441E8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9,  4, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(10, 13, 11, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070442C8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0,  9, 11, 12, 0x0),\n    gsSP1Triangle(11, 13, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070443A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  3,  7,  4, 0x0),\n    gsSP2Triangles( 5,  8,  3, 0x0,  5,  9,  8, 0x0),\n    gsSP2Triangles( 5, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07044498, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07044588, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 3,  0,  2, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 6,  7,  5, 0x0,  0,  6,  5, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  9,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0,  4, 11, 12, 0x0),\n    gsSP2Triangles( 4, 12, 13, 0x0,  4, 13,  3, 0x0),\n    gsSP2Triangles(14, 10,  9, 0x0, 14,  9, 15, 0x0),\n    gsSP2Triangles(12, 11, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07044688, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 2,  1,  3, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 6,  4,  3, 0x0,  6,  3,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  0,  5, 0x0),\n    gsSP2Triangles(11,  5, 12, 0x0, 13, 11, 12, 0x0),\n    gsSP1Triangle(13, 12, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07044778, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 0,  6,  5, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07044858, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07044948, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  4,  5,  0, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07048E68 - 0x07048F68\nstatic const Gfx inside_castle_seg7_dl_07048E68[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_070449C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07044AB8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 0, 10,  1, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07044BA8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07044C98, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP1Triangle( 4,  5,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07048F68 - 0x07049248\nstatic const Gfx inside_castle_seg7_dl_07048F68[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07044D08, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  1, 11,  2, 0x0),\n    gsSP2Triangles( 1, 12, 11, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07044E08, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 3,  0,  2, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  6,  9,  8, 0x0),\n    gsSP2Triangles( 5,  7, 10, 0x0,  5, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07044EF8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07044FE8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  6, 0x0),\n    gsSP2Triangles( 7,  6,  5, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles(10,  9, 11, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(12, 11, 13, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(14, 13, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070450E8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  5,  6,  4, 0x0),\n    gsSP2Triangles( 5,  4,  3, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 6,  5, 10, 0x0,  6, 10, 11, 0x0),\n    gsSP2Triangles(12, 11, 10, 0x0, 12, 13, 11, 0x0),\n    gsSP2Triangles(13, 12, 14, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070451E8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  4, 11,  5, 0x0),\n    gsSP2Triangles( 4, 12, 13, 0x0,  4, 13, 11, 0x0),\n    gsSP2Triangles(14, 13, 12, 0x0, 14, 15, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070452E8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  3,  2, 0x0,  5,  6,  4, 0x0),\n    gsSP2Triangles( 5,  7,  6, 0x0,  8,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9,  7, 0x0, 10,  9,  8, 0x0),\n    gsSP2Triangles(10, 11,  9, 0x0, 12, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 11, 0x0, 13, 12, 14, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070453E8, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 3,  0,  4, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  5,  4, 0x0,  6,  7,  5, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0,  6,  9,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07049248 - 0x070494D8\nstatic const Gfx inside_castle_seg7_dl_07049248[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07045488, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07045578, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07045668, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07045758, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07045848, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07045928, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07045A18, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07045B08, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07045BF8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07045CE8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070494D8 - 0x07049E98\nstatic const Gfx inside_castle_seg7_dl_070494D8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07045DA8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07045E98, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10,  6, 11, 0x0, 10, 12,  6, 0x0),\n    gsSP1Triangle( 0, 13,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07045F78, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 4,  9,  7, 0x0,  1, 10, 11, 0x0),\n    gsSP2Triangles( 1, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07046078, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 4,  9,  7, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07046178, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9,  5, 0x0,  8, 10,  9, 0x0),\n    gsSP1Triangle(11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07046258, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 10, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07046358, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7,  9, 10, 0x0),\n    gsSP1Triangle(11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07046438, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 3,  5,  4, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07046538, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07046618, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070466F8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070467D8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070468C8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070469A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07046A98, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07046B88, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07046C78, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07046D68, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07046E58, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07046F48, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07047038, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07047128, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07047218, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070472F8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070473D8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 5,  8,  9, 0x0,  5,  9, 10, 0x0),\n    gsSP1Triangle(11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070474B8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11,  7, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070475B8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  2,  5,  6, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7, 10,  8, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 14,  7, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070476B8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  1,  5,  6, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(13, 14, 15, 0x0, 13,  9, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070477B8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  1, 0x0,  4,  6,  5, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070478B8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  6, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 15, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070479B8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  6, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07047AB8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07047BB8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07047C98, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07047D98, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07047E98, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07047F98, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07048078, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07048158, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07048248, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP1Triangle( 0,  2, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07049E98 - 0x0704A0E8\nstatic const Gfx inside_castle_seg7_dl_07049E98[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_0900A000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_070482F8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070483F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  4, 0x0),\n    gsSP2Triangles( 3,  2,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  9,  4, 10, 0x0),\n    gsSP2Triangles( 9,  3,  4, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070484E8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070485C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  8, 10, 0x0),\n    gsSP2Triangles( 8,  4,  9, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle( 8,  5,  4, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070486B8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070487B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070488A8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  3, 0x0,  4,  3,  0, 0x0),\n    gsSP2Triangles( 6,  2,  1, 0x0,  6,  7,  2, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07048988, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  5,  9,  8, 0x0),\n    gsSP1Triangle( 5,  4,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0704A0E8 - 0x0704A1B8\nconst Gfx inside_castle_seg7_dl_0704A0E8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07048A38),\n    gsSPDisplayList(inside_castle_seg7_dl_07048AA0),\n    gsSPDisplayList(inside_castle_seg7_dl_07048E68),\n    gsSPDisplayList(inside_castle_seg7_dl_07048F68),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07049248),\n    gsSPDisplayList(inside_castle_seg7_dl_070494D8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07049E98),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/2/6/model.inc.c",
    "content": "// 0x0704A1B8 - 0x0704A1D0\nstatic const Lights1 inside_castle_seg7_lights_0704A1B8 = gdSPDefLights1(\n    0x3d, 0x3d, 0x3f,\n    0xf5, 0xf5, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0704A1D0 - 0x0704A290\nstatic const Vtx inside_castle_seg7_vertex_0704A1D0[] = {\n    {{{  4332,   1408,   3415}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4332,   2125,   2647}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4332,   1408,   2647}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4332,   2125,   3415}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4332,   1408,   1008}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4332,   2125,    240}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4332,   1408,    240}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4332,   2125,   1008}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4332,   1408,   2493}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4332,   2125,   1162}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4332,   1408,   1162}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4332,   2125,   2493}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0704A290 - 0x0704A2E0\nstatic const Gfx inside_castle_seg7_dl_0704A290[] = {\n    gsSPLight(&inside_castle_seg7_lights_0704A1B8.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0704A1B8.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0704A1D0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0704A2E0 - 0x0704A368\nconst Gfx inside_castle_seg7_dl_0704A2E0[] = {\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_TEXTURE_GEN),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsDPLoadTextureBlock(inside_castle_seg7_texture_0700A000, G_IM_FMT_IA, G_IM_SIZ_16b, 32, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 5, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPTexture(0x07C0, 0x07C0, 0, G_TX_RENDERTILE, G_ON),\n    gsSPDisplayList(inside_castle_seg7_dl_0704A290),\n    gsSPTexture(0x07C0, 0x07C0, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_TEXTURE_GEN),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/2/7/model.inc.c",
    "content": "// 0x0704A368 - 0x0704A3E8\nstatic const Vtx inside_castle_seg7_vertex_0704A368[] = {\n    {{{  2755,   1818,    394}, 0, {  2012,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2755,   1971,    394}, 0, {  2012,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2755,   1971,    701}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2755,   1818,    701}, 0, {     0,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5909,   1818,    701}, 0, {     0,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5909,   1971,    394}, 0, {  2012,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5909,   1818,    394}, 0, {  2012,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5909,   1971,    701}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x0704A3E8 - 0x0704A468\nstatic const Vtx inside_castle_seg7_vertex_0704A3E8[] = {\n    {{{  5909,   1664,    701}, 0, {     0,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5909,   1818,    701}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5909,   1818,    394}, 0, {  2012,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5909,   1664,    394}, 0, {  2012,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2755,   1664,    394}, 0, {  2012,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2755,   1818,    394}, 0, {  2012,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2755,   1818,    701}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2755,   1664,    701}, 0, {     0,    990}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x0704A468 - 0x0704A4E8\nstatic const Vtx inside_castle_seg7_vertex_0704A468[] = {\n    {{{  3385,   1715,   3917}, 0, {  2012,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3692,   1562,   3917}, 0, {     0,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3385,   1562,   3917}, 0, {  2012,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3692,   1715,   3917}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5279,   1562,   3917}, 0, {  2012,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4972,   1715,   3917}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5279,   1715,   3917}, 0, {  2012,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4972,   1562,   3917}, 0, {     0,    990}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x0704A4E8 - 0x0704A568\nstatic const Vtx inside_castle_seg7_vertex_0704A4E8[] = {\n    {{{  3385,   1869,   3917}, 0, {  2012,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3692,   1869,   3917}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3692,   1715,   3917}, 0, {     0,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3385,   1715,   3917}, 0, {  2012,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5279,   1715,   3917}, 0, {  2012,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4972,   1715,   3917}, 0, {     0,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4972,   1869,   3917}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5279,   1869,   3917}, 0, {  2012,      0}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x0704A568 - 0x0704A5E8\nstatic const Vtx inside_castle_seg7_vertex_0704A568[] = {\n    {{{  1731,   1613,   1674}, 0, {  2012,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  1731,   1766,   1674}, 0, {  2012,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  1731,   1766,   1981}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  1731,   1613,   1981}, 0, {     0,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  6933,   1613,   1981}, 0, {     0,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  6933,   1766,   1674}, 0, {  2012,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  6933,   1613,   1674}, 0, {  2012,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  6933,   1766,   1981}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x0704A5E8 - 0x0704A668\nstatic const Vtx inside_castle_seg7_vertex_0704A5E8[] = {\n    {{{  1731,   1766,   1674}, 0, {  2012,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  1731,   1920,   1674}, 0, {  2012,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  1731,   1920,   1981}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  1731,   1766,   1981}, 0, {     0,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  6933,   1766,   1981}, 0, {     0,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  6933,   1920,   1981}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  6933,   1920,   1674}, 0, {  2012,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  6933,   1766,   1674}, 0, {  2012,    990}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x0704A668 - 0x0704A6E8\nstatic const Vtx inside_castle_seg7_vertex_0704A668[] = {\n    {{{  2755,   1715,   2903}, 0, {  2012,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2755,   1920,   3312}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2755,   1715,   3312}, 0, {     0,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2755,   1920,   2903}, 0, {  2012,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5909,   1715,   3312}, 0, {     0,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5909,   1920,   3312}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5909,   1920,   2903}, 0, {  2012,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5909,   1715,   2903}, 0, {  2012,    990}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x0704A6E8 - 0x0704A768\nstatic const Vtx inside_castle_seg7_vertex_0704A6E8[] = {\n    {{{  2755,   1510,   2903}, 0, {  2012,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2755,   1715,   2903}, 0, {  2012,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2755,   1715,   3312}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2755,   1510,   3312}, 0, {     0,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5909,   1510,   3312}, 0, {     0,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5909,   1715,   2903}, 0, {  2012,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5909,   1510,   2903}, 0, {  2012,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  5909,   1715,   3312}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x0704A768 - 0x0704A7A8\nstatic const Vtx inside_castle_seg7_vertex_0704A768[] = {\n    {{{  5356,   1792,   -260}, 0, {     0,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4895,   1792,   -260}, 0, {  2012,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4895,   1562,   -260}, 0, {  2012,    990}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  5356,   1562,   -260}, 0, {     0,    990}, {0xdd, 0xdd, 0xdd, 0xff}}},\n};\n\n// 0x0704A7A8 - 0x0704A7E8\nstatic const Vtx inside_castle_seg7_vertex_0704A7A8[] = {\n    {{{  5356,   2022,   -260}, 0, {     0,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4895,   2022,   -260}, 0, {  2012,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  4895,   1792,   -260}, 0, {  2012,    990}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  5356,   1792,   -260}, 0, {     0,    990}, {0xdd, 0xdd, 0xdd, 0xff}}},\n};\n\n// 0x0704A7E8 - 0x0704A830\nstatic const Gfx inside_castle_seg7_dl_0704A7E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_0700A800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0704A368, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0704A830 - 0x0704A878\nstatic const Gfx inside_castle_seg7_dl_0704A830[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_0700B800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0704A3E8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0704A878 - 0x0704A8C0\nstatic const Gfx inside_castle_seg7_dl_0704A878[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07011800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0704A468, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0704A8C0 - 0x0704A908\nstatic const Gfx inside_castle_seg7_dl_0704A8C0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07010800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0704A4E8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0704A908 - 0x0704A950\nstatic const Gfx inside_castle_seg7_dl_0704A908[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_0700F800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0704A568, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0704A950 - 0x0704A998\nstatic const Gfx inside_castle_seg7_dl_0704A950[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_0700E800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0704A5E8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0704A998 - 0x0704A9E0\nstatic const Gfx inside_castle_seg7_dl_0704A998[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07019800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0704A668, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0704A9E0 - 0x0704AA28\nstatic const Gfx inside_castle_seg7_dl_0704A9E0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_0701A800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0704A6E8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0704AA28 - 0x0704AA60\nstatic const Gfx inside_castle_seg7_dl_0704AA28[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_0700D800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0704A768, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0704AA60 - 0x0704AA98\nstatic const Gfx inside_castle_seg7_dl_0704AA60[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_0700C800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0704A7A8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0704AA98 - 0x0704AB80\nconst Gfx inside_castle_seg7_dl_0704AA98[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_0704A7E8),\n    gsSPDisplayList(inside_castle_seg7_dl_0704A830),\n    gsSPDisplayList(inside_castle_seg7_dl_0704A878),\n    gsSPDisplayList(inside_castle_seg7_dl_0704A8C0),\n    gsSPDisplayList(inside_castle_seg7_dl_0704A908),\n    gsSPDisplayList(inside_castle_seg7_dl_0704A950),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_0704A998),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_0704A9E0),\n    gsSPDisplayList(inside_castle_seg7_dl_0704AA28),\n    gsSPDisplayList(inside_castle_seg7_dl_0704AA60),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/2/8/model.inc.c",
    "content": "// 0x0704AB80 - 0x0704AB98\nstatic const Lights1 inside_castle_seg7_lights_0704AB80 = gdSPDefLights1(\n    0x38, 0x3c, 0x4c,\n    0x97, 0xa0, 0xcd, 0x28, 0x28, 0x28\n);\n\n// 0x0704AB98 - 0x0704ABB0\nstatic const Lights1 inside_castle_seg7_lights_0704AB98 = gdSPDefLights1(\n    0x5f, 0x5f, 0x5f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0704ABB0 - 0x0704ABC8\nstatic const Lights1 inside_castle_seg7_lights_0704ABB0 = gdSPDefLights1(\n    0x52, 0x52, 0x52,\n    0xdd, 0xdd, 0xdd, 0x28, 0x28, 0x28\n);\n\n// 0x0704ABC8 - 0x0704ACA8\nstatic const Vtx inside_castle_seg7_vertex_0704ABC8[] = {\n    {{{ -5614,   1510,  -3291}, 0, {   376,     70}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5614,   1715,  -3291}, 0, {   444,     70}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5819,   1715,  -3291}, 0, {   444,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3975,   1510,  -3291}, 0, {   376,    888}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3771,   1306,  -3291}, 0, {   308,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5819,   1306,  -3291}, 0, {   308,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3771,   1715,  -3291}, 0, {   444,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3975,   1715,  -3291}, 0, {   444,    888}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4598,   1355,   3005}, 0, {   376,     70}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4598,   1404,   3005}, 0, {   444,     70}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4549,   1404,   3005}, 0, {   444,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4549,   1306,   3005}, 0, {   308,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4991,   1355,   3005}, 0, {   376,    888}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5040,   1306,   3005}, 0, {   308,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0704ACA8 - 0x0704AD98\nstatic const Vtx inside_castle_seg7_vertex_0704ACA8[] = {\n    {{{ -7252,   1510,   1316}, 0, {   990,    786}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -7252,   1306,   1316}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5307,   1306,   1316}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4991,   1355,   3005}, 0, {   376,    888}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5040,   1306,   3005}, 0, {   308,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5040,   1404,   3005}, 0, {   444,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4991,   1404,   3005}, 0, {   444,    888}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -7252,   1408,   1418}, 0, {   376,    888}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -7252,   1408,   2237}, 0, {   376,     70}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -7252,   1306,   2340}, 0, {   308,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -7252,   1510,   2237}, 0, {   444,     70}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -7252,   1510,   2340}, 0, {   444,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -7252,   1306,   1316}, 0, {   308,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -7252,   1510,   1316}, 0, {   444,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -7252,   1510,   1418}, 0, {   444,    888}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0704AD98 - 0x0704AE88\nstatic const Vtx inside_castle_seg7_vertex_0704AD98[] = {\n    {{{ -5307,   1510,   1316}, 0, {     0,    888}, {0x7e, 0x00, 0xf2, 0xff}}},\n    {{{ -5819,   1306,  -3291}, 0, {   990,    990}, {0x7e, 0x00, 0xf2, 0xff}}},\n    {{{ -5819,   1715,  -3291}, 0, {   990,    786}, {0x7e, 0x00, 0xf2, 0xff}}},\n    {{{ -7252,   1510,   1316}, 0, {   990,    786}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5307,   1306,   1316}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5307,   1510,   1316}, 0, {     0,    786}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5307,   1510,   2340}, 0, {     0,    786}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5307,   1306,   2340}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -7252,   1306,   2340}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -7252,   1510,   2340}, 0, {   990,    786}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4283,   1306,   1316}, 0, {     0,    990}, {0x82, 0x00, 0xf2, 0xff}}},\n    {{{ -4283,   1510,   1316}, 0, {     0,    888}, {0x82, 0x00, 0xf2, 0xff}}},\n    {{{ -3771,   1715,  -3291}, 0, {   990,    786}, {0x82, 0x00, 0xf2, 0xff}}},\n    {{{ -3771,   1306,  -3291}, 0, {   990,    990}, {0x82, 0x00, 0xf2, 0xff}}},\n    {{{ -5307,   1306,   1316}, 0, {     0,    990}, {0x7e, 0x00, 0xf2, 0xff}}},\n};\n\n// 0x0704AE88 - 0x0704AF88\nstatic const Vtx inside_castle_seg7_vertex_0704AE88[] = {\n    {{{ -4283,   1306,   2340}, 0, {     0,    990}, {0x8b, 0x00, 0xd1, 0xff}}},\n    {{{ -4549,   1404,   3005}, 0, {   990,    836}, {0x8b, 0x00, 0xd1, 0xff}}},\n    {{{ -4283,   1510,   2340}, 0, {     0,    786}, {0x8b, 0x00, 0xd1, 0xff}}},\n    {{{ -4549,   1306,   3005}, 0, {   990,    990}, {0x8b, 0x00, 0xd1, 0xff}}},\n    {{{ -5307,   1306,   2340}, 0, {     0,    990}, {0x75, 0x00, 0xd1, 0xff}}},\n    {{{ -5307,   1510,   2340}, 0, {     0,    786}, {0x75, 0x00, 0xd1, 0xff}}},\n    {{{ -5040,   1306,   3005}, 0, {   990,    990}, {0x75, 0x00, 0xd1, 0xff}}},\n    {{{ -5040,   1404,   3005}, 0, {   990,    836}, {0x75, 0x00, 0xd1, 0xff}}},\n    {{{ -4283,   1306,   1316}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4283,   1306,   1520}, 0, {    82,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4283,   1510,   1520}, 0, {    82,    786}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4283,   1510,   1316}, 0, {     0,    786}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4283,   1510,   2135}, 0, {   422,    786}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4283,   1306,   2135}, 0, {   422,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4283,   1306,   2340}, 0, {   536,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4283,   1510,   2340}, 0, {   536,    786}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0704AF88 - 0x0704B088\nstatic const Vtx inside_castle_seg7_vertex_0704AF88[] = {\n    {{{ -4991,   1748,   3005}, 0, {   922,    888}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4991,   1404,   3005}, 0, {   444,    888}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5040,   1404,   3005}, 0, {   444,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5614,   1715,  -3291}, 0, {   444,     70}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5614,   3149,  -3291}, 0, {   922,     70}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5819,   3354,  -3291}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5819,   1715,  -3291}, 0, {   444,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3975,   3149,  -3291}, 0, {   922,    888}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3771,   3354,  -3291}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3975,   1715,  -3291}, 0, {   444,    888}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3771,   1715,  -3291}, 0, {   444,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4598,   1748,   3005}, 0, {   922,     70}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5040,   1797,   3005}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -7252,   2227,   1418}, 0, {   922,    888}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -7252,   1510,   1418}, 0, {   444,    888}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -7252,   1510,   1316}, 0, {   444,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0704B088 - 0x0704B178\nstatic const Vtx inside_castle_seg7_vertex_0704B088[] = {\n    {{{ -4598,   1748,   3005}, 0, {   922,     70}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5040,   1797,   3005}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4549,   1797,   3005}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4598,   1404,   3005}, 0, {   444,     70}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4549,   1404,   3005}, 0, {   444,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -7252,   1510,   2237}, 0, {   444,     70}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -7252,   2227,   2237}, 0, {   922,     70}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -7252,   2330,   2340}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -7252,   1510,   2340}, 0, {   444,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -7252,   2227,   1418}, 0, {   922,    888}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -7252,   2330,   1316}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -7252,   1510,   1316}, 0, {   444,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4283,   1510,   1316}, 0, {     0,    888}, {0x82, 0x00, 0xf2, 0xff}}},\n    {{{ -4283,   2330,   1316}, 0, {     0,    478}, {0x82, 0x00, 0xf2, 0xff}}},\n    {{{ -3771,   3354,  -3291}, 0, {   990,      0}, {0x82, 0x00, 0xf2, 0xff}}},\n};\n\n// 0x0704B178 - 0x0704B268\nstatic const Vtx inside_castle_seg7_vertex_0704B178[] = {\n    {{{ -7252,   2330,   1316}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -7252,   1510,   1316}, 0, {   990,    786}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5307,   1510,   1316}, 0, {     0,    786}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5307,   2330,   1316}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5307,   2330,   2340}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -7252,   1510,   2340}, 0, {   990,    786}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -7252,   2330,   2340}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5307,   1510,   2340}, 0, {     0,    786}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -7252,   2330,   1316}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -5307,   2330,   2340}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -7252,   2330,   2340}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -5307,   2330,   1316}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -4283,   1510,   1316}, 0, {     0,    888}, {0x82, 0x00, 0xf2, 0xff}}},\n    {{{ -3771,   3354,  -3291}, 0, {   990,      0}, {0x82, 0x00, 0xf2, 0xff}}},\n    {{{ -3771,   1715,  -3291}, 0, {   990,    786}, {0x82, 0x00, 0xf2, 0xff}}},\n};\n\n// 0x0704B268 - 0x0704B368\nstatic const Vtx inside_castle_seg7_vertex_0704B268[] = {\n    {{{ -5307,   2330,   1316}, 0, {     0,    478}, {0x7e, 0x00, 0xf2, 0xff}}},\n    {{{ -5307,   1510,   1316}, 0, {     0,    888}, {0x7e, 0x00, 0xf2, 0xff}}},\n    {{{ -5819,   1715,  -3291}, 0, {   990,    786}, {0x7e, 0x00, 0xf2, 0xff}}},\n    {{{ -5819,   3354,  -3291}, 0, {   990,      0}, {0x7e, 0x00, 0xf2, 0xff}}},\n    {{{ -4549,   1404,   3005}, 0, {   990,    836}, {0x8b, 0x00, 0xd1, 0xff}}},\n    {{{ -4549,   1797,   3005}, 0, {   990,    224}, {0x8b, 0x00, 0xd1, 0xff}}},\n    {{{ -4283,   1510,   2340}, 0, {     0,    786}, {0x8b, 0x00, 0xd1, 0xff}}},\n    {{{ -4283,   2330,   2340}, 0, {     0,      0}, {0x8b, 0x00, 0xd1, 0xff}}},\n    {{{ -5307,   1510,   2340}, 0, {     0,    786}, {0x75, 0x00, 0xd1, 0xff}}},\n    {{{ -5307,   2330,   2340}, 0, {     0,      0}, {0x75, 0x00, 0xd1, 0xff}}},\n    {{{ -5040,   1404,   3005}, 0, {   990,    836}, {0x75, 0x00, 0xd1, 0xff}}},\n    {{{ -5040,   1797,   3005}, 0, {   990,    224}, {0x75, 0x00, 0xd1, 0xff}}},\n    {{{ -4283,   1818,   1725}, 0, {   196,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4283,   1818,   1930}, 0, {   308,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4283,   2330,   2340}, 0, {   536,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4283,   1613,   2135}, 0, {   422,    684}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0704B368 - 0x0704B468\nstatic const Vtx inside_castle_seg7_vertex_0704B368[] = {\n    {{{ -4283,   1613,   2135}, 0, {   422,    684}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4283,   1510,   2135}, 0, {   422,    786}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4283,   1510,   2340}, 0, {   536,    786}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4283,   2330,   2340}, 0, {   536,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4283,   1818,   1725}, 0, {   196,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4283,   2330,   1316}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4283,   1613,   1520}, 0, {    82,    684}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4283,   1510,   1316}, 0, {     0,    786}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4283,   2330,   2340}, 0, {     0,    990}, {0x00, 0x9d, 0xb1, 0xff}}},\n    {{{ -5040,   1797,   3005}, 0, {   990,     96}, {0x00, 0x9d, 0xb1, 0xff}}},\n    {{{ -5307,   2330,   2340}, 0, {     0,      0}, {0x00, 0x9d, 0xb1, 0xff}}},\n    {{{ -4283,   1510,   1520}, 0, {    82,    786}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3771,   3354,  -3291}, 0, {   990,    990}, {0x00, 0x85, 0xe5, 0xff}}},\n    {{{ -4283,   2330,   1316}, 0, {     0,    734}, {0x00, 0x85, 0xe5, 0xff}}},\n    {{{ -5307,   2330,   1316}, 0, {     0,    224}, {0x00, 0x85, 0xe5, 0xff}}},\n    {{{ -5819,   3354,  -3291}, 0, {   990,      0}, {0x00, 0x85, 0xe5, 0xff}}},\n};\n\n// 0x0704B468 - 0x0704B498\nstatic const Vtx inside_castle_seg7_vertex_0704B468[] = {\n    {{{ -4283,   2330,   2340}, 0, {     0,    990}, {0x00, 0x9d, 0xb1, 0xff}}},\n    {{{ -4549,   1797,   3005}, 0, {   990,    862}, {0x00, 0x9d, 0xb1, 0xff}}},\n    {{{ -5040,   1797,   3005}, 0, {   990,     96}, {0x00, 0x9d, 0xb1, 0xff}}},\n};\n\n// 0x0704B498 - 0x0704B588\nstatic const Vtx inside_castle_seg7_vertex_0704B498[] = {\n    {{{ -3566,   1203,   1520}, 0, {  6100,   1244}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3566,   1229,   1520}, 0, {  6100,   1040}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3566,   1229,   2135}, 0, {     0,   1040}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3822,   1331,   1520}, 0, {  6100,    172}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3822,   1357,   1520}, 0, {  6100,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3822,   1357,   2135}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3822,   1331,   2135}, 0, {     0,    172}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3771,   1306,   1520}, 0, {  6100,    530}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3771,   1331,   2135}, 0, {     0,    326}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3771,   1306,   2135}, 0, {     0,    530}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3771,   1331,   1520}, 0, {  6100,    326}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3617,   1229,   1520}, 0, {  6100,    888}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3617,   1254,   2135}, 0, {     0,    684}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3617,   1229,   2135}, 0, {     0,    888}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3617,   1254,   1520}, 0, {  6100,    684}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0704B588 - 0x0704B638\nstatic const Vtx inside_castle_seg7_vertex_0704B588[] = {\n    {{{ -3668,   1254,   1520}, 0, {  6100,    530}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3668,   1280,   2135}, 0, {     0,    326}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3668,   1254,   2135}, 0, {     0,    530}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3566,   1203,   1520}, 0, {  6100,   1244}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3566,   1229,   2135}, 0, {     0,   1040}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3566,   1203,   2135}, 0, {     0,   1244}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3719,   1280,   1520}, 0, {  6100,    172}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3719,   1306,   2135}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3719,   1280,   2135}, 0, {     0,    172}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3719,   1306,   1520}, 0, {  6100,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3668,   1280,   1520}, 0, {  6100,    326}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0704B638 - 0x0704B738\nstatic const Vtx inside_castle_seg7_vertex_0704B638[] = {\n    {{{ -7252,   1306,   2340}, 0, { -9228, -11658}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5307,   1306,   2340}, 0, { -9228,  -1438}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5307,   1306,   1316}, 0, { -4118,  -1438}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -7252,   1306,   1316}, 0, { -4118, -11658}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5204,   1306,   1683}, 0, { -5950,   -926}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5204,   1306,   1972}, 0, { -7396,   -926}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4283,   1306,   2340}, 0, { -9228,   3670}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4283,   1306,   2237}, 0, { -8716,   3670}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4939,   1306,   2237}, 0, { -8716,    396}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4939,   1306,   1418}, 0, { -4628,    396}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4283,   1306,   1316}, 0, { -4118,   3670}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4283,   1306,   1418}, 0, { -4628,   3670}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5819,   1306,  -3291}, 0, { 16320,  -3992}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3771,   1331,   1520}, 0, {  6100,    326}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3822,   1331,   2135}, 0, {     0,    172}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3771,   1331,   2135}, 0, {     0,    326}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0704B738 - 0x0704B818\nstatic const Vtx inside_castle_seg7_vertex_0704B738[] = {\n    {{{ -3771,   1331,   1520}, 0, {  6100,    326}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3822,   1331,   1520}, 0, {  6100,    172}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3822,   1331,   2135}, 0, {     0,    172}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3719,   1306,   1520}, 0, {  6100,    684}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3771,   1306,   2135}, 0, {     0,    530}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3719,   1306,   2135}, 0, {     0,    684}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3771,   1306,   1520}, 0, {  6100,    530}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2695,   1203,   1751}, 0, {   478,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2747,   1203,   1751}, 0, {   478,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2747,   1203,   1904}, 0, {  1246,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2695,   1203,   1904}, 0, {  1246,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3668,   1280,   1520}, 0, {  6100,    326}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3719,   1280,   1520}, 0, {  6100,    172}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3719,   1280,   2135}, 0, {     0,    172}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0704B818 - 0x0704B8F8\nstatic const Vtx inside_castle_seg7_vertex_0704B818[] = {\n    {{{ -5819,   1306,  -3291}, 0, { 16320,  -3992}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4283,   1306,   1316}, 0, { -4118,   3670}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3771,   1306,  -3291}, 0, { 16320,   6226}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5307,   1306,   2340}, 0, { -9228,  -1438}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5040,   1306,   3005}, 0, {-14338,   -798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4549,   1306,   3005}, 0, {-14338,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4283,   1306,   2340}, 0, { -9228,   3670}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3566,   1229,   1520}, 0, {  6100,   1040}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3617,   1229,   1520}, 0, {  6100,    888}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3617,   1229,   2135}, 0, {     0,    888}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3566,   1229,   2135}, 0, {     0,   1040}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3668,   1280,   1520}, 0, {  6100,    326}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3719,   1280,   2135}, 0, {     0,    172}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3668,   1280,   2135}, 0, {     0,    326}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0704B8F8 - 0x0704B978\nstatic const Vtx inside_castle_seg7_vertex_0704B8F8[] = {\n    {{{ -3617,   1254,   1520}, 0, {  6100,    684}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3668,   1254,   2135}, 0, {     0,    530}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3617,   1254,   2135}, 0, {     0,    684}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3668,   1254,   1520}, 0, {  6100,    530}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2747,   1203,   1520}, 0, { -6162,   8142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3566,   1203,   1520}, 0, { -6162,   4948}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3566,   1203,   2135}, 0, { -9228,   4948}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2747,   1203,   2135}, 0, { -9228,   8142}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0704B978 - 0x0704BA78\nstatic const Vtx inside_castle_seg7_vertex_0704B978[] = {\n    {{{ -4283,   1818,   1725}, 0, { -9228,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2747,   1818,   1725}, 0, {  6100,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2747,   1818,   1930}, 0, {  6100,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -5307,   2330,   1316}, 0, {  6100,   5076}, {0x59, 0xa6, 0x00, 0xff}}},\n    {{{ -5102,   2534,   1520}, 0, {  4056,   3032}, {0x59, 0xa6, 0x00, 0xff}}},\n    {{{ -5102,   2534,   2135}, 0, { -2074,   3032}, {0x59, 0xa6, 0x00, 0xff}}},\n    {{{ -5307,   2330,   2340}, 0, { -4118,   5076}, {0x59, 0xa6, 0x00, 0xff}}},\n    {{{ -4283,   2330,   1316}, 0, {  6100,  -5142}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{ -5102,   2534,   1520}, 0, {  4056,   3032}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{ -5307,   2330,   1316}, 0, {  6100,   5076}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{ -4487,   2534,   2135}, 0, { -2074,  -3098}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -5102,   2534,   2135}, 0, { -2074,   3032}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -5102,   2534,   1520}, 0, {  4056,   3032}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -5307,   2330,   2340}, 0, { -4118,   5076}, {0x00, 0xa6, 0xa7, 0xff}}},\n    {{{ -5102,   2534,   2135}, 0, { -2074,   3032}, {0x00, 0xa6, 0xa7, 0xff}}},\n    {{{ -4487,   2534,   2135}, 0, { -2074,  -3098}, {0x00, 0xa6, 0xa7, 0xff}}},\n};\n\n// 0x0704BA78 - 0x0704BB78\nstatic const Vtx inside_castle_seg7_vertex_0704BA78[] = {\n    {{{ -5307,   2330,   2340}, 0, { -4118,   5076}, {0x00, 0xa6, 0xa7, 0xff}}},\n    {{{ -4487,   2534,   2135}, 0, { -2074,  -3098}, {0x00, 0xa6, 0xa7, 0xff}}},\n    {{{ -4283,   2330,   2340}, 0, { -4118,  -5142}, {0x00, 0xa6, 0xa7, 0xff}}},\n    {{{ -4487,   2534,   2135}, 0, { -2074,  -3098}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -5102,   2534,   1520}, 0, {  4056,   3032}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -4487,   2534,   1520}, 0, {  4056,  -3098}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -4283,   2330,   1316}, 0, {  6100,  -5142}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{ -4487,   2534,   1520}, 0, {  4056,  -3098}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{ -5102,   2534,   1520}, 0, {  4056,   3032}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{ -4283,   2330,   2340}, 0, { -4118,  -5142}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{ -4487,   2534,   1520}, 0, {  4056,  -3098}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{ -4283,   2330,   1316}, 0, {  6100,  -5142}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{ -4487,   2534,   2135}, 0, { -2074,  -3098}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{ -4283,   1613,   1520}, 0, { -9228,   3032}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{ -2747,   1613,   1520}, 0, {  6100,   3032}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{ -2747,   1818,   1725}, 0, {  6100,    990}, {0x00, 0xa7, 0x59, 0xff}}},\n};\n\n// 0x0704BB78 - 0x0704BC58\nstatic const Vtx inside_castle_seg7_vertex_0704BB78[] = {\n    {{{ -4283,   1613,   1520}, 0, { -9228,   3032}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{ -2747,   1818,   1725}, 0, {  6100,    990}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{ -4283,   1818,   1725}, 0, { -9228,    990}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{ -2747,   1613,   2135}, 0, {  4056,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2747,   1818,   1725}, 0, {     0,  -1054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2747,   1613,   1520}, 0, { -2074,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4283,   1818,   1725}, 0, { -9228,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2747,   1818,   1930}, 0, {  6100,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -4283,   1818,   1930}, 0, { -9228,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -4283,   1818,   1930}, 0, { -9228,  -1054}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{ -2747,   1818,   1930}, 0, {  6100,  -1054}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{ -2747,   1613,   2135}, 0, {  6100,  -3098}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{ -4283,   1613,   2135}, 0, { -9228,  -3098}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{ -2747,   1818,   1930}, 0, {  2012,  -1054}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0704BC58 - 0x0704BCB8\nstatic const Vtx inside_castle_seg7_vertex_0704BC58[] = {\n    {{{ -4897,   1357,   1520}, 0, { -3862,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5102,   1357,   1725}, 0, { -4884,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5102,   1357,   1930}, 0, { -4884,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4897,   1357,   2135}, 0, { -3862,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3822,   1357,   2135}, 0, {  1502,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3822,   1357,   1520}, 0, {  1500,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0704BCB8 - 0x0704BDA8\nstatic const Vtx inside_castle_seg7_vertex_0704BCB8[] = {\n    {{{ -4897,   1357,   1520}, 0, { -1228,      0}, {0xd8, 0x71, 0xd8, 0xff}}},\n    {{{ -5204,   1306,   1683}, 0, {  5398,    990}, {0xd8, 0x71, 0xd8, 0xff}}},\n    {{{ -5102,   1357,   1725}, 0, {  4552,      0}, {0xd8, 0x71, 0xd8, 0xff}}},\n    {{{ -4897,   1357,   2135}, 0, {   144,      0}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{ -4939,   1306,   2237}, 0, {   990,    990}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{ -4283,   1306,   2237}, 0, {-12118,    990}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{ -4283,   1357,   2135}, 0, {-12118,      0}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{ -5102,   1357,   1930}, 0, {   814,      0}, {0xd8, 0x71, 0x28, 0xff}}},\n    {{{ -4939,   1306,   2237}, 0, {  7442,    990}, {0xd8, 0x71, 0x28, 0xff}}},\n    {{{ -4897,   1357,   2135}, 0, {  6596,      0}, {0xd8, 0x71, 0x28, 0xff}}},\n    {{{ -5204,   1306,   1972}, 0, {     0,    990}, {0xd8, 0x71, 0x28, 0xff}}},\n    {{{ -5102,   1357,   1725}, 0, {   814,      0}, {0xc8, 0x71, 0x00, 0xff}}},\n    {{{ -5204,   1306,   1972}, 0, {  5750,    990}, {0xc8, 0x71, 0x00, 0xff}}},\n    {{{ -5102,   1357,   1930}, 0, {  4902,      0}, {0xc8, 0x71, 0x00, 0xff}}},\n    {{{ -5204,   1306,   1683}, 0, {     0,    990}, {0xc8, 0x71, 0x00, 0xff}}},\n};\n\n// 0x0704BDA8 - 0x0704BE18\nstatic const Vtx inside_castle_seg7_vertex_0704BDA8[] = {\n    {{{ -4283,   1357,   1520}, 0, {-12118,      0}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{ -4939,   1306,   1418}, 0, {   990,    990}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{ -4897,   1357,   1520}, 0, {   144,      0}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{ -4897,   1357,   1520}, 0, { -1228,      0}, {0xd8, 0x71, 0xd8, 0xff}}},\n    {{{ -4939,   1306,   1418}, 0, { -2074,    990}, {0xd8, 0x71, 0xd8, 0xff}}},\n    {{{ -5204,   1306,   1683}, 0, {  5398,    990}, {0xd8, 0x71, 0xd8, 0xff}}},\n    {{{ -4283,   1306,   1418}, 0, {-12118,    990}, {0x00, 0x71, 0xc8, 0xff}}},\n};\n\n// 0x0704BE18 - 0x0704BF18\nstatic const Vtx inside_castle_seg7_vertex_0704BE18[] = {\n    {{{ -2747,   1459,   1904}, 0, {  1884,    736}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2747,   1203,   1904}, 0, {  1884,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2747,   1203,   2135}, 0, {  3034,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2695,   1459,   1751}, 0, {  1118,    736}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2747,   1459,   1751}, 0, {  1118,    736}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2747,   1203,   1751}, 0, {  1118,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2695,   1203,   1751}, 0, {  1118,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2695,   1459,   1904}, 0, {  1884,    736}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2747,   1459,   1751}, 0, {  1118,    736}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2695,   1459,   1751}, 0, {  1118,    736}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2747,   1459,   1904}, 0, {  1884,    736}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2695,   1203,   1904}, 0, {  1884,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2747,   1459,   1904}, 0, {  1884,    736}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2695,   1459,   1904}, 0, {  1884,    736}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2747,   1203,   1904}, 0, {  1884,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2747,   1613,   2135}, 0, {  3034,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0704BF18 - 0x0704BFF8\nstatic const Vtx inside_castle_seg7_vertex_0704BF18[] = {\n    {{{ -2747,   1459,   1751}, 0, {  1118,    736}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2747,   1459,   1904}, 0, {  1884,    736}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2747,   1613,   2135}, 0, {  3034,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4283,   1613,   1520}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4283,   1203,   1520}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2747,   1203,   1520}, 0, {  7632,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2747,   1613,   1520}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2747,   1203,   1520}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2747,   1203,   1751}, 0, {  1118,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2747,   1613,   2135}, 0, {  7632,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4283,   1203,   2135}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4283,   1613,   2135}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2747,   1203,   2135}, 0, {  7632,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2747,   1613,   1520}, 0, {  7632,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0704BFF8 - 0x0704C038\nstatic const Vtx inside_castle_seg7_vertex_0704BFF8[] = {\n    {{{ -7252,   1818,   1418}, 0, {  2000,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -7252,   2227,   1418}, 0, {  2012,    -26}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -7252,   2227,   2237}, 0, {   -28,    -40}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -7252,   1818,   2237}, 0, {     0,    978}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0704C038 - 0x0704C078\nstatic const Vtx inside_castle_seg7_vertex_0704C038[] = {\n    {{{ -7252,   1408,   1418}, 0, {  2012,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -7252,   1818,   1418}, 0, {  2012,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -7252,   1818,   2237}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -7252,   1408,   2237}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0704C078 - 0x0704C378\nstatic const Gfx inside_castle_seg7_dl_0704C078[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_0704AB80.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0704AB80.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0704ABC8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 5,  0,  2, 0x0,  0,  5,  4, 0x0),\n    gsSP2Triangles( 3,  4,  6, 0x0,  7,  3,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  8, 10, 0x0),\n    gsSP2Triangles(12,  8, 13, 0x0,  8, 11, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704ACA8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0,  9,  8, 11, 0x0),\n    gsSP2Triangles( 7,  9, 12, 0x0,  7, 12, 13, 0x0),\n    gsSP1Triangle(14,  7, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704AD98, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704AE88, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_0704AB98.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0704AB98.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0704AF88, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 4,  8,  5, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles( 9, 10,  8, 0x0, 11,  0, 12, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704B088, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  6,  9, 10, 0x0),\n    gsSP2Triangles( 6, 10,  7, 0x0,  9, 11, 10, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704B178, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704B268, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704B368, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  3,  5, 0x0,  6,  4,  5, 0x0),\n    gsSP2Triangles( 6,  5,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(11,  6,  7, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704B468, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0704C378 - 0x0704C528\nstatic const Gfx inside_castle_seg7_dl_0704C378[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_0704ABB0.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0704ABB0.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0704B498, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704B588, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP1Triangle( 0, 10,  1, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_0704AB98.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0704AB98.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0704B638, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  1,  5,  4, 0x0),\n    gsSP2Triangles( 1,  6,  7, 0x0,  1,  7,  8, 0x0),\n    gsSP2Triangles( 1,  8,  5, 0x0,  2,  4,  9, 0x0),\n    gsSP2Triangles( 9, 10,  2, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12,  2, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704B738, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704B818, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704B8F8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0704C528 - 0x0704C5F0\nstatic const Gfx inside_castle_seg7_dl_0704C528[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_0900B000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0704B978, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704BA78, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704BB78, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0,  3, 13,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0704C5F0 - 0x0704C638\nstatic const Gfx inside_castle_seg7_dl_0704C5F0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0704BC58, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  0, 0x0,  4,  0,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0704C638 - 0x0704C6B8\nstatic const Gfx inside_castle_seg7_dl_0704C638[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0704BCB8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704BDA8, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  6,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0704C6B8 - 0x0704C768\nstatic const Gfx inside_castle_seg7_dl_0704C6B8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_0900A000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0704BE18, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704BF18, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  2,  6, 0x0,  7,  8,  0, 0x0),\n    gsSP2Triangles( 7,  0,  6, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0,  3,  5, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0704C768 - 0x0704C7A0\nstatic const Gfx inside_castle_seg7_dl_0704C768[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07019800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0704BFF8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0704C7A0 - 0x0704C7D8\nstatic const Gfx inside_castle_seg7_dl_0704C7A0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_0701A800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0704C038, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0704C7D8 - 0x0704C8B0\nconst Gfx inside_castle_seg7_dl_0704C7D8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_0704C078),\n    gsSPDisplayList(inside_castle_seg7_dl_0704C378),\n    gsSPDisplayList(inside_castle_seg7_dl_0704C528),\n    gsSPDisplayList(inside_castle_seg7_dl_0704C5F0),\n    gsSPDisplayList(inside_castle_seg7_dl_0704C638),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_0704C6B8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_0704C768),\n    gsSPDisplayList(inside_castle_seg7_dl_0704C7A0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/2/9/model.inc.c",
    "content": "// 0x0704C8B0 - 0x0704C8C8\nstatic const Lights1 inside_castle_seg7_lights_0704C8B0 = gdSPDefLights1(\n    0x2d, 0x3b, 0x58,\n    0x79, 0x9f, 0xeb, 0x28, 0x28, 0x28\n);\n\n// 0x0704C8C8 - 0x0704C8E0\nstatic const Lights1 inside_castle_seg7_lights_0704C8C8 = gdSPDefLights1(\n    0x25, 0x39, 0x5f,\n    0x65, 0x98, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0704C8E0 - 0x0704C8F8\nstatic const Lights1 inside_castle_seg7_lights_0704C8E0 = gdSPDefLights1(\n    0x1e, 0x2a, 0x40,\n    0x52, 0x70, 0xac, 0x28, 0x28, 0x28\n);\n\n// 0x0704C8F8 - 0x0704C910\nstatic const Lights1 inside_castle_seg7_lights_0704C8F8 = gdSPDefLights1(\n    0x17, 0x27, 0x47,\n    0x3f, 0x6a, 0xbf, 0x28, 0x28, 0x28\n);\n\n// 0x0704C910 - 0x0704C928\nstatic const Lights1 inside_castle_seg7_lights_0704C910 = gdSPDefLights1(\n    0x0b, 0x23, 0x53,\n    0x1f, 0x5f, 0xdf, 0x28, 0x28, 0x28\n);\n\n// 0x0704C928 - 0x0704C940\nstatic const Lights1 inside_castle_seg7_lights_0704C928 = gdSPDefLights1(\n    0x00, 0x1f, 0x5f,\n    0x00, 0x55, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0704C940 - 0x0704C958\nstatic const Lights1 inside_castle_seg7_lights_0704C940 = gdSPDefLights1(\n    0x5f, 0x5f, 0x5f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0704C958 - 0x0704C970\nstatic const Lights1 inside_castle_seg7_lights_0704C958 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0xcc, 0xcc, 0xcc, 0x28, 0x28, 0x28\n);\n\n// 0x0704C970 - 0x0704C988\nstatic const Lights1 inside_castle_seg7_lights_0704C970 = gdSPDefLights1(\n    0x13, 0x09, 0x00,\n    0x35, 0x1a, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x0704C988 - 0x0704C9A0\nstatic const Lights1 inside_castle_seg7_lights_0704C988 = gdSPDefLights1(\n    0x19, 0x0c, 0x00,\n    0x43, 0x21, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x0704C9A0 - 0x0704C9B8\nstatic const Lights1 inside_castle_seg7_lights_0704C9A0 = gdSPDefLights1(\n    0x2d, 0x16, 0x00,\n    0x78, 0x3c, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x0704C9B8 - 0x0704CA98\nstatic const Vtx inside_castle_seg7_vertex_0704C9B8[] = {\n    {{{  1364,   2765,   6501}, 0, { -7696,  -1566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2081,   2765,   7197}, 0, {-11272,  -5040}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2081,   2765,   6296}, 0, {-11272,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1364,   2765,   7197}, 0, { -7696,  -5040}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1569,   2765,   6296}, 0, { -8718,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2489,   2765,   6296}, 0, { 11536,   -542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1772,   2765,   6501}, 0, {  7958,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1977,   2765,   6296}, 0, {  8980,   -542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1772,   2765,   7197}, 0, {  7958,  -5040}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2489,   2765,   7197}, 0, { 11536,  -5040}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2081,   2253,   4813}, 0, { 12046,  -4630}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2489,   2253,   7371}, 0, {-10760,   8132}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2081,   2253,   7371}, 0, { 12046,   8132}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2489,   2253,   4813}, 0, {-10760,  -4630}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0704CA98 - 0x0704CB18\nstatic const Vtx inside_castle_seg7_vertex_0704CA98[] = {\n    {{{ -1500,   2355,   5537}, 0, { -6078,   6982}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2285,   2355,   4778}, 0, { -9992,   3194}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2489,   2355,   5272}, 0, {-11014,   5660}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1398,   2355,   5290}, 0, { -5568,   5750}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2081,   2355,   5272}, 0, { 11794,   5660}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   989,   2355,   5290}, 0, {  6348,   5750}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1092,   2355,   5537}, 0, {  6858,   6982}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1876,   2355,   4778}, 0, { 10772,   3194}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0704CB18 - 0x0704CB98\nstatic const Vtx inside_castle_seg7_vertex_0704CB18[] = {\n    {{{ -1398,   2560,   5290}, 0, { -5568,   5750}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1235,   2560,   5078}, 0, { -4756,   4692}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1959,   2560,   4354}, 0, { -8368,   1078}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2285,   2560,   4778}, 0, { -9992,   3194}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1876,   2560,   4778}, 0, { 10772,   3194}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   826,   2560,   5078}, 0, {  5536,   4692}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   989,   2560,   5290}, 0, {  6348,   5750}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1551,   2560,   4354}, 0, {  9148,   1078}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0704CB98 - 0x0704CC18\nstatic const Vtx inside_castle_seg7_vertex_0704CB98[] = {\n    {{{ -1023,   2765,   4915}, 0, { -3698,   3880}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1959,   2765,   4354}, 0, { -8368,   1078}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1235,   2765,   5078}, 0, { -4756,   4692}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,   2765,   4028}, 0, { -6252,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   826,   2765,   5078}, 0, {  5536,   4692}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1551,   2765,   4354}, 0, {  9148,   1078}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1126,   2765,   4028}, 0, {  7032,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   614,   2765,   4915}, 0, {  4476,   3880}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0704CC18 - 0x0704CC98\nstatic const Vtx inside_castle_seg7_vertex_0704CC18[] = {\n    {{{ -1023,   2970,   4915}, 0, { -3698,   3880}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1041,   2970,   3824}, 0, { -3788,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,   2970,   4028}, 0, { -6252,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -776,   2970,   4813}, 0, { -2464,   3368}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1126,   2970,   4028}, 0, {  7032,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   367,   2970,   4813}, 0, {  3244,   3368}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   614,   2970,   4915}, 0, {  4476,   3880}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   632,   2970,   3824}, 0, {  4566,  -1566}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0704CC98 - 0x0704CCD8\nstatic const Vtx inside_castle_seg7_vertex_0704CC98[] = {\n    {{{  -776,   3174,   4813}, 0, { -2464,   3368}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   632,   3174,   3824}, 0, {  4566,  -1566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1041,   3174,   3824}, 0, { -3788,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   367,   3174,   4813}, 0, {  3244,   3368}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0704CCD8 - 0x0704CDC8\nstatic const Vtx inside_castle_seg7_vertex_0704CCD8[] = {\n    {{{  2797,   2970,   6398}, 0, {  2524,  -3608}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2849,   2970,   6040}, 0, {  2268,  -1820}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2490,   2970,   6091}, 0, {  4056,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2899,   2970,   6091}, 0, {  4056,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3257,   2970,   6040}, 0, {  2268,  -1820}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3206,   2970,   6398}, 0, {  2524,  -3608}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3257,   2970,   5733}, 0, {  2268,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2899,   2970,   5681}, 0, {  4056,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3564,   2970,   6040}, 0, {   734,  -1820}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3616,   2970,   6398}, 0, {   478,  -3608}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3206,   2970,   5374}, 0, {  2524,   1498}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3564,   2970,   5733}, 0, {   734,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3616,   2970,   5374}, 0, {   478,   1498}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3923,   2970,   5681}, 0, { -1052,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3923,   2970,   6091}, 0, { -1052,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0704CDC8 - 0x0704CEC8\nstatic const Vtx inside_castle_seg7_vertex_0704CDC8[] = {\n    {{{  2797,   2970,   6398}, 0, {  2524,  -3608}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3207,   2970,   6398}, 0, {   478,  -3608}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3156,   2970,   6040}, 0, {   734,  -1820}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3514,   2970,   6091}, 0, { -1052,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2849,   2970,   6040}, 0, {  2268,  -1820}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3156,   2970,   5733}, 0, {   734,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2849,   2970,   5733}, 0, {  2268,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2490,   2970,   5681}, 0, {  4056,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2490,   2970,   6091}, 0, {  4056,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3514,   2970,   5681}, 0, { -1052,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3207,   2970,   5374}, 0, {   478,   1498}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2797,   2970,   5374}, 0, {  2524,   1498}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -50,   2253,   4762}, 0, {  1408,  -4886}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -357,   2253,   4813}, 0, {  -122,  -4630}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -50,   2253,   4813}, 0, {  1408,  -4630}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -357,   2253,   4762}, 0, {  -122,  -4886}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0704CEC8 - 0x0704CFB8\nstatic const Vtx inside_castle_seg7_vertex_0704CEC8[] = {\n    {{{ -1535,   2970,   4028}, 0, { 10864,      0}, {0x93, 0x00, 0x3f, 0xff}}},\n    {{{ -1535,   2765,   4028}, 0, { 10864,   2010}, {0x93, 0x00, 0x3f, 0xff}}},\n    {{{ -1023,   2765,   4915}, 0, {  2014,   2010}, {0x93, 0x00, 0x3f, 0xff}}},\n    {{{ -1500,   2253,   5537}, 0, {-12292,   2010}, {0xe0, 0x00, 0x7a, 0xff}}},\n    {{{ -1500,   2355,   5537}, 0, {-12292,    990}, {0xe0, 0x00, 0x7a, 0xff}}},\n    {{{ -2489,   2355,   5272}, 0, {-22164,    990}, {0xe0, 0x00, 0x7a, 0xff}}},\n    {{{ -2489,   2253,   5272}, 0, {-22164,   2010}, {0xe0, 0x00, 0x7a, 0xff}}},\n    {{{  2081,   2253,   5272}, 0, { 23452,   2010}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  2081,   2355,   5272}, 0, { 23452,    990}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  1092,   2355,   5537}, 0, { 13580,    990}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  1092,   2253,   5537}, 0, { 13580,   2010}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{ -1041,   3174,   3824}, 0, { 12906,  -2076}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{ -1041,   2970,   3824}, 0, { 12906,      0}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{  -776,   2970,   4813}, 0, {  3034,      0}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{  -776,   3174,   4813}, 0, {  3034,  -2076}, {0x86, 0x00, 0x20, 0xff}}},\n};\n\n// 0x0704CFB8 - 0x0704D0A8\nstatic const Vtx inside_castle_seg7_vertex_0704CFB8[] = {\n    {{{   989,   2560,   5290}, 0, { 12560,  -1054}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{   989,   2355,   5290}, 0, { 12560,    990}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{  1876,   2355,   4778}, 0, { 21410,    990}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{ -1535,   2970,   4028}, 0, { 10864,      0}, {0x93, 0x00, 0x3f, 0xff}}},\n    {{{ -1023,   2765,   4915}, 0, {  2014,   2010}, {0x93, 0x00, 0x3f, 0xff}}},\n    {{{ -1023,   2970,   4915}, 0, {  2014,      0}, {0x93, 0x00, 0x3f, 0xff}}},\n    {{{ -1959,   2765,   4354}, 0, {  7616,   2010}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1235,   2560,   5078}, 0, {   388,   4054}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1235,   2765,   5078}, 0, {   388,   2010}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1959,   2560,   4354}, 0, {  7616,   4054}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2285,   2560,   4778}, 0, {-20122,  -1054}, {0xc1, 0x00, 0x6d, 0xff}}},\n    {{{ -2285,   2355,   4778}, 0, {-20122,    990}, {0xc1, 0x00, 0x6d, 0xff}}},\n    {{{ -1398,   2355,   5290}, 0, {-11272,    990}, {0xc1, 0x00, 0x6d, 0xff}}},\n    {{{ -1398,   2560,   5290}, 0, {-11272,  -1054}, {0xc1, 0x00, 0x6d, 0xff}}},\n    {{{  1876,   2560,   4778}, 0, { 21410,  -1054}, {0x3f, 0x00, 0x6d, 0xff}}},\n};\n\n// 0x0704D0A8 - 0x0704D168\nstatic const Vtx inside_castle_seg7_vertex_0704D0A8[] = {\n    {{{   826,   2765,   5078}, 0, {   388,   2010}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1551,   2560,   4354}, 0, {  7616,   4054}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1551,   2765,   4354}, 0, {  7616,   2010}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   826,   2560,   5078}, 0, {   388,   4054}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   614,   2970,   4915}, 0, {  2014,      0}, {0x6d, 0x00, 0x3f, 0xff}}},\n    {{{   614,   2765,   4915}, 0, {  2014,   2010}, {0x6d, 0x00, 0x3f, 0xff}}},\n    {{{  1126,   2765,   4028}, 0, { 10864,   2010}, {0x6d, 0x00, 0x3f, 0xff}}},\n    {{{  1126,   2970,   4028}, 0, { 10864,      0}, {0x6d, 0x00, 0x3f, 0xff}}},\n    {{{   367,   3174,   4813}, 0, {  3034,  -2076}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{   632,   2970,   3824}, 0, { 12906,      0}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{   632,   3174,   3824}, 0, { 12906,  -2076}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{   367,   2970,   4813}, 0, {  3034,      0}, {0x7a, 0x00, 0x20, 0xff}}},\n};\n\n// 0x0704D168 - 0x0704D258\nstatic const Vtx inside_castle_seg7_vertex_0704D168[] = {\n    {{{ -2489,   3379,   6091}, 0, { -2074,  -3098}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2899,   2970,   6091}, 0, {  2012,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2899,   3379,   6091}, 0, {  2012,  -3098}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2489,   2970,   6091}, 0, { -2074,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2899,   2970,   5681}, 0, {  2012,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2899,   2970,   6091}, 0, {  2012,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2489,   2970,   5681}, 0, { -2074,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2899,   3379,   6091}, 0, {  2012,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2899,   3379,   5681}, 0, {  2012,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2489,   3379,   5681}, 0, { -2074,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2489,   3379,   6091}, 0, { -2074,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2899,   3379,   5681}, 0, {  2012,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2489,   2970,   5681}, 0, { -2074,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2489,   3379,   5681}, 0, { -2074,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2899,   2970,   5681}, 0, {  2012,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0704D258 - 0x0704D348\nstatic const Vtx inside_castle_seg7_vertex_0704D258[] = {\n    {{{ -3308,   3021,   5989}, 0, {   478,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3308,   2816,   5989}, 0, {   480,   2010}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3513,   2816,   5989}, 0, {  2522,   2010}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2489,   3379,   6091}, 0, { -2074,  -3098}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2489,   2970,   6091}, 0, { -2074,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2899,   2970,   6091}, 0, {  2012,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3513,   3021,   5784}, 0, {  2522,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3308,   2816,   5784}, 0, {   480,   2010}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3308,   3021,   5784}, 0, {   478,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3513,   2816,   5784}, 0, {  2522,   2010}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3308,   3021,   5784}, 0, {  1500,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3308,   2816,   5989}, 0, {  -540,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3308,   3021,   5989}, 0, {  -542,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3308,   2816,   5784}, 0, {  1500,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3513,   3021,   5989}, 0, {  2522,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0704D348 - 0x0704D438\nstatic const Vtx inside_castle_seg7_vertex_0704D348[] = {\n    {{{ -3564,   3021,   6040}, 0, {  2012,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3308,   3021,   5989}, 0, {  -540,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3513,   3021,   5989}, 0, {  1500,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3513,   3021,   5989}, 0, {  -542,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3513,   2816,   5784}, 0, {  1500,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3513,   3021,   5784}, 0, {  1500,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3513,   2816,   5989}, 0, {  -540,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3257,   3021,   5733}, 0, {  2012,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3564,   3021,   5733}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3513,   3021,   5784}, 0, {  -540,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3308,   3021,   5784}, 0, {  1500,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3564,   3021,   5733}, 0, {  2012,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3513,   3021,   5989}, 0, {  -540,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3513,   3021,   5784}, 0, {  1500,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3564,   3021,   6040}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0704D438 - 0x0704D528\nstatic const Vtx inside_castle_seg7_vertex_0704D438[] = {\n    {{{ -3564,   2970,   6040}, 0, { -1052,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3564,   3021,   5733}, 0, {  2012,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3564,   2970,   5733}, 0, {  2012,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3564,   3021,   6040}, 0, {  2012,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3257,   3021,   6040}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3308,   3021,   5989}, 0, {  -540,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3257,   3021,   5733}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3308,   3021,   5989}, 0, {  1502,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3257,   3021,   6040}, 0, {  2012,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3308,   3021,   5784}, 0, {  -542,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3257,   2970,   5733}, 0, {  2012,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3257,   3021,   6040}, 0, { -1052,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3257,   2970,   6040}, 0, { -1052,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3257,   3021,   5733}, 0, {  2012,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3564,   3021,   6040}, 0, { -1052,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0704D528 - 0x0704D618\nstatic const Vtx inside_castle_seg7_vertex_0704D528[] = {\n    {{{  3156,   3021,   6040}, 0, {  3034,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2849,   3021,   6040}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2849,   2970,   6040}, 0, {     0,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3564,   2970,   6040}, 0, {  3034,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3257,   3021,   6040}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3564,   3021,   6040}, 0, {  3034,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3257,   2970,   6040}, 0, {     0,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3257,   2970,   5733}, 0, {     0,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3564,   3021,   5733}, 0, {  3034,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3257,   3021,   5733}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3564,   2970,   5733}, 0, {  3034,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2849,   3021,   5733}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3156,   3021,   5733}, 0, {  3034,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3156,   2970,   5733}, 0, {  3034,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2849,   2970,   5733}, 0, {     0,    480}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0704D618 - 0x0704D708\nstatic const Vtx inside_castle_seg7_vertex_0704D618[] = {\n    {{{  2849,   3021,   6040}, 0, {  2012,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2900,   3021,   5989}, 0, {  1502,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2900,   3021,   5784}, 0, {  -542,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3156,   3021,   6040}, 0, {  3034,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2849,   2970,   6040}, 0, {     0,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3156,   2970,   6040}, 0, {  3034,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3156,   2970,   5733}, 0, {  2012,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3156,   3021,   5733}, 0, {  2012,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3156,   3021,   6040}, 0, { -1052,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3156,   2970,   6040}, 0, { -1052,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2849,   2970,   6040}, 0, { -1052,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2849,   3021,   5733}, 0, {  2012,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2849,   2970,   5733}, 0, {  2012,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2849,   3021,   6040}, 0, { -1052,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2849,   3021,   5733}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0704D708 - 0x0704D7F8\nstatic const Vtx inside_castle_seg7_vertex_0704D708[] = {\n    {{{  3105,   3021,   5784}, 0, {  1500,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3105,   2816,   5784}, 0, {  1500,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3105,   2816,   5989}, 0, {  -540,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3105,   3021,   5989}, 0, {  1500,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2900,   3021,   5989}, 0, {  -540,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2849,   3021,   6040}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3156,   3021,   6040}, 0, {  2012,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3105,   3021,   5784}, 0, {  1500,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3156,   3021,   6040}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3156,   3021,   5733}, 0, {  2012,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3105,   3021,   5989}, 0, {  -540,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2900,   3021,   5784}, 0, {  1500,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3105,   3021,   5784}, 0, {  -540,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3156,   3021,   5733}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2849,   3021,   5733}, 0, {  2012,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0704D7F8 - 0x0704D8E8\nstatic const Vtx inside_castle_seg7_vertex_0704D7F8[] = {\n    {{{  2900,   3021,   5784}, 0, {   478,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3105,   2816,   5784}, 0, {  2522,   2010}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3105,   3021,   5784}, 0, {  2522,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3105,   3021,   5784}, 0, {  1500,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3105,   2816,   5989}, 0, {  -540,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3105,   3021,   5989}, 0, {  -542,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3105,   3021,   5989}, 0, {  2522,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2900,   2816,   5989}, 0, {   480,   2010}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2900,   3021,   5989}, 0, {   478,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3105,   2816,   5989}, 0, {  2522,   2010}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2900,   3021,   5989}, 0, {  -542,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2900,   2816,   5989}, 0, {  -540,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2900,   2816,   5784}, 0, {  1500,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2900,   3021,   5784}, 0, {  1500,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2900,   2816,   5784}, 0, {   480,   2010}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0704D8E8 - 0x0704D9E8\nstatic const Vtx inside_castle_seg7_vertex_0704D8E8[] = {\n    {{{  2490,   2970,   6091}, 0, {  2012,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2490,   2970,   5681}, 0, {  2012,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2081,   2970,   5681}, 0, { -2074,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2490,   3379,   6091}, 0, {  2012,  -3098}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2081,   2970,   6091}, 0, { -2074,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2081,   3379,   6091}, 0, { -2074,  -3098}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2490,   2970,   6091}, 0, {  2012,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2081,   3379,   5681}, 0, { -2074,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2490,   2970,   5681}, 0, {  2012,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2490,   3379,   5681}, 0, {  2012,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2081,   2970,   5681}, 0, { -2074,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2081,   3379,   6091}, 0, { -2074,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2081,   3379,   5681}, 0, { -2074,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2490,   3379,   5681}, 0, {  2012,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2490,   3379,   6091}, 0, {  2012,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2081,   2970,   6091}, 0, { -2074,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0704D9E8 - 0x0704DAE8\nstatic const Vtx inside_castle_seg7_vertex_0704D9E8[] = {\n    {{{ -3923,   3789,   6091}, 0, {  1502,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2899,   3789,   6091}, 0, { -1052,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3206,   3789,   6398}, 0, {  -286,   -798}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3923,   3789,   5681}, 0, {  1502,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3616,   3789,   5374}, 0, {   734,   1754}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2899,   3789,   5681}, 0, { -1052,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3206,   3789,   5374}, 0, {  -286,   1754}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3616,   3789,   6398}, 0, {   734,   -798}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2490,   3789,   6091}, 0, { -1052,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3514,   3789,   6091}, 0, {  1502,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3207,   3789,   6398}, 0, {   734,   -798}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2797,   3789,   6398}, 0, {  -286,   -798}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2797,   3789,   5374}, 0, {  -286,   1754}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3207,   3789,   5374}, 0, {   734,   1754}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2490,   3789,   5681}, 0, { -1052,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3514,   3789,   5681}, 0, {  1502,    990}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0704DAE8 - 0x0704DB68\nstatic const Vtx inside_castle_seg7_vertex_0704DAE8[] = {\n    {{{  3821,   2304,   5067}, 0, {  1500,   -670}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2183,   2304,   5067}, 0, {  -540,   -670}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2183,   2304,   6705}, 0, {  -542,   1372}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3821,   2304,   6705}, 0, {  1500,   1372}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2592,   2304,   6705}, 0, {  -542,   1372}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2592,   2304,   5067}, 0, {  -540,   -670}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4230,   2304,   5067}, 0, {  1500,   -670}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4230,   2304,   6705}, 0, {  1500,   1372}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0704DB68 - 0x0704DC68\nstatic const Vtx inside_castle_seg7_vertex_0704DB68[] = {\n    {{{   410,   2253,   7232}, 0, {     0,    990}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{   410,   3087,   7232}, 0, {     0,  -5670}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{   512,   3024,   7335}, 0, {  -848,  -5164}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{  -921,   2253,   7335}, 0, { 10596,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -818,   3087,   7232}, 0, {  9780,  -5670}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -818,   2253,   7232}, 0, {  9780,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -921,   3024,   7335}, 0, { 10596,  -5164}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -818,   2253,   7232}, 0, {  9780,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -818,   3087,   7232}, 0, {  9780,  -5670}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -613,   3090,   7232}, 0, {  8144,  -5690}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -613,   2253,   7232}, 0, {  8144,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   512,   2253,   7335}, 0, {  -848,    990}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{   205,   2253,   7232}, 0, {  1604,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   410,   3087,   7232}, 0, {     0,  -5670}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   410,   2253,   7232}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   205,   3090,   7232}, 0, {  1604,  -5690}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0704DC68 - 0x0704DD58\nstatic const Vtx inside_castle_seg7_vertex_0704DC68[] = {\n    {{{  1364,   2765,   7197}, 0, {  6212,  -3098}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1364,   2765,   6501}, 0, {  2280,  -3098}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1364,   2253,   6501}, 0, {  2280,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1364,   2253,   7197}, 0, {  6212,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1364,   2253,   6501}, 0, {  2280,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1569,   2765,   6296}, 0, {     0,  -3098}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1569,   2253,   6296}, 0, {     0,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1364,   2765,   6501}, 0, {  2280,  -3098}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1977,   2253,   6296}, 0, {  2280,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1772,   2765,   6501}, 0, {     0,  -3098}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1772,   2253,   6501}, 0, {     0,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1772,   2253,   6501}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1772,   2765,   6501}, 0, {     0,  -3098}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1772,   2765,   7197}, 0, { -3962,  -3098}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1772,   2253,   7197}, 0, { -3962,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0704DD58 - 0x0704DE08\nstatic const Vtx inside_castle_seg7_vertex_0704DD58[] = {\n    {{{ -2489,   2253,   6296}, 0, {  5172,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2489,   2765,   6296}, 0, {  5172,  -3098}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1977,   2765,   6296}, 0, {  2280,  -3098}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1977,   2253,   6296}, 0, {  2280,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1977,   2765,   6296}, 0, {  2280,  -3098}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1772,   2765,   6501}, 0, {     0,  -3098}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1569,   2253,   6296}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1569,   2765,   6296}, 0, {     0,  -3098}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2081,   2765,   6296}, 0, { -2920,  -3098}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2081,   2253,   6296}, 0, { -2920,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1977,   2253,   6296}, 0, {  2280,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0704DE08 - 0x0704DEF8\nstatic const Vtx inside_castle_seg7_vertex_0704DE08[] = {\n    {{{  1126,   3686,   6925}, 0, {    84,    476}, {0x3f, 0xc1, 0xa7, 0xff}}},\n    {{{  1509,   3528,   7308}, 0, {     0,    582}, {0x3f, 0xc1, 0xa7, 0xff}}},\n    {{{   927,   2923,   7323}, 0, {   144,    984}, {0x3f, 0xc1, 0xa7, 0xff}}},\n    {{{ -1535,   3686,   6925}, 0, {   888,    476}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1797,   3578,   7187}, 0, {   968,    548}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1797,   4198,   7187}, 0, {   968,    136}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1535,   4198,   6925}, 0, {   888,    136}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1228,   3379,   6925}, 0, {   796,    680}, {0xc1, 0xc1, 0xa7, 0xff}}},\n    {{{ -1918,   3528,   7308}, 0, {  1004,    582}, {0xc1, 0xc1, 0xa7, 0xff}}},\n    {{{ -1535,   3686,   6925}, 0, {   888,    476}, {0xc1, 0xc1, 0xa7, 0xff}}},\n    {{{  1126,   4198,   6925}, 0, {    84,    136}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1388,   3578,   7187}, 0, {     4,    548}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1126,   3686,   6925}, 0, {    84,    476}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1388,   4198,   7187}, 0, {     4,    136}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   819,   3379,   6925}, 0, {   176,    680}, {0x3f, 0xc1, 0xa7, 0xff}}},\n};\n\n// 0x0704DEF8 - 0x0704DFF8\nstatic const Vtx inside_castle_seg7_vertex_0704DEF8[] = {\n    {{{ -1228,   3379,   6925}, 0, {   796,    680}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1535,   3686,   6925}, 0, {   888,    476}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1535,   4198,   6925}, 0, {   888,    136}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -921,   3482,   6925}, 0, {   704,    612}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -204,   4506,   6925}, 0, {   486,    -70}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1126,   4198,   6925}, 0, {    84,    136}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1126,   3686,   6925}, 0, {    84,    476}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   819,   3379,   6925}, 0, {   176,    680}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   512,   3482,   6925}, 0, {   270,    612}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -204,   3584,   6925}, 0, {   486,    544}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -409,   3482,   6925}, 0, {   548,    612}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,   3482,   6925}, 0, {   424,    612}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,   3482,   6925}, 0, {   424,    612}, {0xd8, 0xb0, 0xa7, 0xff}}},\n    {{{  -204,   3355,   7130}, 0, {   486,    696}, {0xd8, 0xb0, 0xa7, 0xff}}},\n    {{{  -204,   3584,   6925}, 0, {   486,    544}, {0xd8, 0xb0, 0xa7, 0xff}}},\n    {{{  -716,   3379,   6925}, 0, {   642,    680}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0704DFF8 - 0x0704E0F8\nstatic const Vtx inside_castle_seg7_vertex_0704DFF8[] = {\n    {{{   512,   3482,   6925}, 0, {   270,    612}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   307,   3379,   6925}, 0, {   332,    680}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,   3482,   6925}, 0, {   424,    612}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -204,   3584,   6925}, 0, {   486,    544}, {0x27, 0xb0, 0xa7, 0xff}}},\n    {{{  -330,   3292,   7130}, 0, {   524,    738}, {0x27, 0xb0, 0xa7, 0xff}}},\n    {{{  -409,   3482,   6925}, 0, {   548,    612}, {0x27, 0xb0, 0xa7, 0xff}}},\n    {{{  -204,   3584,   6925}, 0, {   486,    544}, {0x28, 0xb0, 0xa7, 0xff}}},\n    {{{  -204,   3355,   7130}, 0, {   486,    696}, {0x28, 0xb0, 0xa7, 0xff}}},\n    {{{  -330,   3292,   7130}, 0, {   524,    738}, {0x28, 0xb0, 0xa7, 0xff}}},\n    {{{ -1228,   3379,   6925}, 0, {   796,    680}, {0xc1, 0xc1, 0xa7, 0xff}}},\n    {{{ -1335,   2923,   7323}, 0, {   828,    984}, {0xc1, 0xc1, 0xa7, 0xff}}},\n    {{{ -1918,   3528,   7308}, 0, {  1004,    582}, {0xc1, 0xc1, 0xa7, 0xff}}},\n    {{{  -409,   3482,   6925}, 0, {   548,    612}, {0x1c, 0xab, 0xa7, 0xff}}},\n    {{{  -747,   2937,   7335}, 0, {   650,    974}, {0x1c, 0xab, 0xa7, 0xff}}},\n    {{{  -716,   3379,   6925}, 0, {   642,    680}, {0x1c, 0xab, 0xa7, 0xff}}},\n    {{{  -330,   3292,   7130}, 0, {   524,    738}, {0x1c, 0xab, 0xa7, 0xff}}},\n};\n\n// 0x0704E0F8 - 0x0704E1D8\nstatic const Vtx inside_castle_seg7_vertex_0704E0F8[] = {\n    {{{     0,   3482,   6925}, 0, {   424,    612}, {0xd8, 0xb0, 0xa7, 0xff}}},\n    {{{   -78,   3292,   7130}, 0, {   448,    738}, {0xd8, 0xb0, 0xa7, 0xff}}},\n    {{{  -204,   3355,   7130}, 0, {   486,    696}, {0xd8, 0xb0, 0xa7, 0xff}}},\n    {{{   307,   3379,   6925}, 0, {   332,    680}, {0xe4, 0xab, 0xa7, 0xff}}},\n    {{{   -78,   3292,   7130}, 0, {   448,    738}, {0xe4, 0xab, 0xa7, 0xff}}},\n    {{{     0,   3482,   6925}, 0, {   424,    612}, {0xe4, 0xab, 0xa7, 0xff}}},\n    {{{  -921,   3482,   6925}, 0, {   704,    612}, {0x1c, 0xab, 0xa7, 0xff}}},\n    {{{  -952,   3040,   7334}, 0, {   712,    906}, {0x1c, 0xab, 0xa7, 0xff}}},\n    {{{ -1228,   3379,   6925}, 0, {   796,    680}, {0x1c, 0xab, 0xa7, 0xff}}},\n    {{{ -1335,   2923,   7323}, 0, {   828,    984}, {0x1c, 0xab, 0xa7, 0xff}}},\n    {{{   339,   2937,   7335}, 0, {   322,    974}, {0xe4, 0xab, 0xa7, 0xff}}},\n    {{{  -716,   3379,   6925}, 0, {   642,    680}, {0xd8, 0xb0, 0xa7, 0xff}}},\n    {{{  -952,   3039,   7335}, 0, {   712,    906}, {0xd8, 0xb0, 0xa7, 0xff}}},\n    {{{  -921,   3482,   6925}, 0, {   704,    612}, {0xd8, 0xb0, 0xa7, 0xff}}},\n};\n\n// 0x0704E1D8 - 0x0704E288\nstatic const Vtx inside_castle_seg7_vertex_0704E1D8[] = {\n    {{{   819,   3379,   6925}, 0, {   176,    680}, {0xe4, 0xab, 0xa7, 0xff}}},\n    {{{   543,   3040,   7334}, 0, {   260,    906}, {0xe4, 0xab, 0xa7, 0xff}}},\n    {{{   512,   3482,   6925}, 0, {   270,    612}, {0xe4, 0xab, 0xa7, 0xff}}},\n    {{{   927,   2923,   7323}, 0, {   144,    984}, {0xe4, 0xab, 0xa7, 0xff}}},\n    {{{   512,   3482,   6925}, 0, {   270,    612}, {0x28, 0xb0, 0xa7, 0xff}}},\n    {{{   339,   2937,   7335}, 0, {   322,    974}, {0x28, 0xb0, 0xa7, 0xff}}},\n    {{{   307,   3379,   6925}, 0, {   332,    680}, {0x28, 0xb0, 0xa7, 0xff}}},\n    {{{   543,   3039,   7335}, 0, {   260,    906}, {0x28, 0xb0, 0xa7, 0xff}}},\n    {{{  -716,   3379,   6925}, 0, {   642,    680}, {0xd8, 0xb0, 0xa7, 0xff}}},\n    {{{  -747,   2937,   7335}, 0, {   650,    974}, {0xd8, 0xb0, 0xa7, 0xff}}},\n    {{{  -952,   3039,   7335}, 0, {   712,    906}, {0xd8, 0xb0, 0xa7, 0xff}}},\n};\n\n// 0x0704E288 - 0x0704E308\nstatic const Vtx inside_castle_seg7_vertex_0704E288[] = {\n    {{{  -562,   3379,   3834}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -665,   3277,   3834}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -562,   3277,   3834}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -665,   3379,   3834}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   154,   3379,   3834}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    51,   3277,   3834}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   154,   3277,   3834}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    51,   3379,   3834}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0704E308 - 0x0704E388\nstatic const Vtx inside_castle_seg7_vertex_0704E308[] = {\n    {{{   154,   3482,   3834}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    51,   3379,   3834}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   154,   3379,   3834}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    51,   3482,   3834}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -562,   3482,   3834}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -665,   3482,   3834}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -665,   3379,   3834}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -562,   3379,   3834}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0704E388 - 0x0704E408\nstatic const Vtx inside_castle_seg7_vertex_0704E388[] = {\n    {{{  -460,   3379,   3834}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -562,   3379,   3834}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -562,   3277,   3834}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -460,   3277,   3834}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,   3379,   3834}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   154,   3277,   3834}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,   3277,   3834}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   154,   3379,   3834}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0704E408 - 0x0704E488\nstatic const Vtx inside_castle_seg7_vertex_0704E408[] = {\n    {{{   256,   3482,   3834}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   154,   3482,   3834}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   154,   3379,   3834}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,   3379,   3834}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -460,   3482,   3834}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -562,   3379,   3834}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -460,   3379,   3834}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -562,   3482,   3834}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0704E488 - 0x0704E578\nstatic const Vtx inside_castle_seg7_vertex_0704E488[] = {\n    {{{ -3923,   3789,   6091}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3923,   2970,   6091}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3923,   2970,   5681}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2899,   3789,   6091}, 0, {   990,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -3206,   2970,   6398}, 0, {     0,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -3206,   3789,   6398}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2899,   2970,   6091}, 0, {   990,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -3206,   3789,   6398}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3616,   2970,   6398}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3616,   3789,   6398}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3206,   2970,   6398}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3616,   3789,   6398}, 0, {   990,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -3923,   2970,   6091}, 0, {     0,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -3923,   3789,   6091}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -3616,   2970,   6398}, 0, {   990,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0704E578 - 0x0704E668\nstatic const Vtx inside_castle_seg7_vertex_0704E578[] = {\n    {{{ -3206,   3789,   5374}, 0, {   990,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2899,   2970,   5681}, 0, {     0,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2899,   3789,   5681}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -3923,   3789,   6091}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3923,   2970,   5681}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3923,   3789,   5681}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3923,   3789,   5681}, 0, {   990,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3616,   2970,   5374}, 0, {     0,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3616,   3789,   5374}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3923,   2970,   5681}, 0, {   990,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3616,   3789,   5374}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3206,   2970,   5374}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3206,   3789,   5374}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3616,   2970,   5374}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3206,   2970,   5374}, 0, {   990,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x0704E668 - 0x0704E758\nstatic const Vtx inside_castle_seg7_vertex_0704E668[] = {\n    {{{  2797,   3789,   5374}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2797,   2970,   5374}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3207,   2970,   5374}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2899,   3379,   6091}, 0, {     0,    992}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2899,   3789,   5681}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2899,   3379,   5681}, 0, {   990,    992}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2899,   3789,   6091}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2490,   3379,   5681}, 0, {   990,    992}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2490,   3789,   6091}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2490,   3379,   6091}, 0, {     0,    992}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2490,   3789,   5681}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2490,   3789,   5681}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2797,   2970,   5374}, 0, {   990,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2797,   3789,   5374}, 0, {   990,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2490,   2970,   5681}, 0, {     0,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x0704E758 - 0x0704E848\nstatic const Vtx inside_castle_seg7_vertex_0704E758[] = {\n    {{{  3514,   3789,   6091}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  3207,   2970,   6398}, 0, {   990,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  3207,   3789,   6398}, 0, {   990,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2797,   3789,   5374}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3207,   2970,   5374}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3207,   3789,   5374}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3207,   3789,   5374}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3514,   2970,   5681}, 0, {   990,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3514,   3789,   5681}, 0, {   990,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3207,   2970,   5374}, 0, {     0,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3514,   3789,   5681}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3514,   2970,   5681}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3514,   2970,   6091}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3514,   3789,   6091}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3514,   2970,   6091}, 0, {     0,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0704E848 - 0x0704E8C8\nstatic const Vtx inside_castle_seg7_vertex_0704E848[] = {\n    {{{  3207,   3789,   6398}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2797,   2970,   6398}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2797,   3789,   6398}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3207,   2970,   6398}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2797,   3789,   6398}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2797,   2970,   6398}, 0, {     0,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2490,   2970,   6091}, 0, {   990,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2490,   3789,   6091}, 0, {   990,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0704E8C8 - 0x0704E988\nstatic const Vtx inside_castle_seg7_vertex_0704E8C8[] = {\n    {{{  -409,   2611,   7130}, 0, {   820,   1348}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -409,   2253,   7232}, 0, {   820,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -409,   2253,   7130}, 0, {   820,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -409,   2611,   7232}, 0, {   820,   1348}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,   2253,   7130}, 0, {   138,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,   2253,   7232}, 0, {   138,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,   2611,   7232}, 0, {   138,   1348}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,   2611,   7130}, 0, {   138,   1348}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -409,   2611,   7232}, 0, {   820,   1348}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,   2611,   7232}, 0, {   138,   1348}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,   2253,   7232}, 0, {   138,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -409,   2253,   7232}, 0, {   820,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0704E988 - 0x0704E9E8\nstatic const Vtx inside_castle_seg7_vertex_0704E988[] = {\n    {{{  -409,   2611,   7130}, 0, {   820,   1348}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -357,   2611,   7027}, 0, {   734,   1348}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -50,   2611,   7027}, 0, {   224,   1348}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     0,   2611,   7130}, 0, {   138,   1348}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -409,   2611,   7232}, 0, {   820,   1348}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     0,   2611,   7232}, 0, {   138,   1348}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0704E9E8 - 0x0704EAE8\nstatic const Vtx inside_castle_seg7_vertex_0704E9E8[] = {\n    {{{  -409,   3123,   7130}, 0, {   820,    396}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -511,   2253,   7130}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -511,   3355,   7130}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -613,   2253,   7232}, 0, {  1160,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -613,   3090,   7232}, 0, {  1160,    460}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -511,   3232,   7130}, 0, {   990,    196}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -511,   2253,   7130}, 0, {   990,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   102,   2253,   7130}, 0, {     0,   2012}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{   205,   3090,   7232}, 0, {  -200,    460}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{   205,   2253,   7232}, 0, {  -200,   2012}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{   102,   3232,   7130}, 0, {     0,    196}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  -409,   2253,   7130}, 0, {   820,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,   3123,   7130}, 0, {   138,    396}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,   2611,   7130}, 0, {   138,   1348}, {0x72, 0x00, 0xc9, 0xff}}},\n    {{{   -50,   2611,   7027}, 0, {   224,   1348}, {0x72, 0x00, 0xc9, 0xff}}},\n    {{{   -50,   2714,   7027}, 0, {   224,   1156}, {0x72, 0x00, 0xc9, 0xff}}},\n};\n\n// 0x0704EAE8 - 0x0704EBE8\nstatic const Vtx inside_castle_seg7_vertex_0704EAE8[] = {\n    {{{   102,   2253,   7130}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,   3123,   7130}, 0, {   138,    396}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   102,   3355,   7130}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,   2253,   7130}, 0, {   138,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -511,   3355,   7130}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -409,   2714,   7130}, 0, {   820,   1156}, {0x8f, 0x00, 0xc7, 0xff}}},\n    {{{  -357,   2714,   7027}, 0, {   734,   1156}, {0x8f, 0x00, 0xc7, 0xff}}},\n    {{{  -357,   2611,   7027}, 0, {   734,   1348}, {0x8f, 0x00, 0xc7, 0xff}}},\n    {{{  -409,   2611,   7130}, 0, {   820,   1348}, {0x8f, 0x00, 0xc7, 0xff}}},\n    {{{     0,   2714,   7130}, 0, {   138,   1156}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -357,   2714,   7027}, 0, {   734,   1156}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -409,   2714,   7130}, 0, {   820,   1156}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -50,   2714,   7027}, 0, {   224,   1156}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,   2611,   7130}, 0, {   138,   1348}, {0x72, 0x00, 0xc9, 0xff}}},\n    {{{   -50,   2714,   7027}, 0, {   224,   1156}, {0x72, 0x00, 0xc9, 0xff}}},\n    {{{     0,   2714,   7130}, 0, {   138,   1156}, {0x72, 0x00, 0xc9, 0xff}}},\n};\n\n// 0x0704EBE8 - 0x0704ECE8\nstatic const Vtx inside_castle_seg7_vertex_0704EBE8[] = {\n    {{{     0,   3123,   7130}, 0, {   138,    396}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,   2714,   7232}, 0, {   138,   1156}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,   3123,   7232}, 0, {   138,    396}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,   2714,   7130}, 0, {   138,   1156}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -409,   3123,   7232}, 0, {   820,    396}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -409,   2714,   7130}, 0, {   820,   1156}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -409,   3123,   7130}, 0, {   820,    396}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -409,   2714,   7232}, 0, {   820,   1156}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -409,   2714,   7232}, 0, {   820,   1156}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,   2714,   7130}, 0, {   138,   1156}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -409,   2714,   7130}, 0, {   820,   1156}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,   2714,   7232}, 0, {   138,   1156}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -409,   3123,   7130}, 0, {   820,    396}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     0,   3123,   7232}, 0, {   138,    396}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -409,   3123,   7232}, 0, {   820,    396}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     0,   3123,   7130}, 0, {   138,    396}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0704ECE8 - 0x0704ED28\nstatic const Vtx inside_castle_seg7_vertex_0704ECE8[] = {\n    {{{  -357,   2714,   7027}, 0, {   734,   1156}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -50,   2611,   7027}, 0, {   224,   1348}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -357,   2611,   7027}, 0, {   734,   1348}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -50,   2714,   7027}, 0, {   224,   1156}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0704ED28 - 0x0704EE28\nstatic const Vtx inside_castle_seg7_vertex_0704ED28[] = {\n    {{{   367,   2970,   4813}, 0, { 10436,   1136}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{   614,   2253,   4915}, 0, {  9736,   1816}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{   614,   2970,   4915}, 0, {  9736,   1136}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{   367,   2253,   4813}, 0, { 10436,   1816}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{   614,   2765,   4915}, 0, {  9736,   1332}, {0xb3, 0x00, 0x64, 0xff}}},\n    {{{   614,   2253,   4915}, 0, {  9736,   1816}, {0xb3, 0x00, 0x64, 0xff}}},\n    {{{   826,   2253,   5078}, 0, {  9074,   1816}, {0xb3, 0x00, 0x64, 0xff}}},\n    {{{   -50,   2509,   4813}, 0, { 11618,   1572}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   367,   2253,   4813}, 0, { 10436,   1816}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   367,   3174,   4813}, 0, { 10436,    940}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -50,   2253,   4813}, 0, { 11618,   1816}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   826,   2765,   5078}, 0, {  9074,   1332}, {0xb3, 0x00, 0x64, 0xff}}},\n    {{{   826,   2560,   5078}, 0, {  9074,   1524}, {0x9c, 0x00, 0x4d, 0xff}}},\n    {{{   826,   2253,   5078}, 0, {  9074,   1816}, {0x9c, 0x00, 0x4d, 0xff}}},\n    {{{   989,   2253,   5290}, 0, {  8446,   1816}, {0x9c, 0x00, 0x4d, 0xff}}},\n    {{{   989,   2560,   5290}, 0, {  8446,   1524}, {0x9c, 0x00, 0x4d, 0xff}}},\n};\n\n// 0x0704EE28 - 0x0704EF18\nstatic const Vtx inside_castle_seg7_vertex_0704EE28[] = {\n    {{{ -2284,   4198,   6808}, 0, {  1128,      0}, {0x75, 0x00, 0xd1, 0xff}}},\n    {{{ -2489,   2765,   6296}, 0, {   604,   1332}, {0x75, 0x00, 0xd1, 0xff}}},\n    {{{ -2489,   4198,   6296}, 0, {   604,      0}, {0x75, 0x00, 0xd1, 0xff}}},\n    {{{   989,   2355,   5290}, 0, {  8446,   1720}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{   989,   2253,   5290}, 0, {  8446,   1816}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{  1092,   2253,   5537}, 0, {  7846,   1816}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{  1092,   2355,   5537}, 0, {  7846,   1720}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{  -921,   3087,   7335}, 0, {  2590,   1024}, {0x03, 0x00, 0x82, 0xff}}},\n    {{{  -921,   2253,   7335}, 0, {  2590,   1816}, {0x03, 0x00, 0x82, 0xff}}},\n    {{{ -1465,   2253,   7320}, 0, {  2056,   1816}, {0x03, 0x00, 0x82, 0xff}}},\n    {{{ -1465,   3087,   7320}, 0, {  2056,   1024}, {0x03, 0x00, 0x82, 0xff}}},\n    {{{  1057,   2253,   7320}, 0, {  5166,   1816}, {0xfd, 0x00, 0x82, 0xff}}},\n    {{{   512,   3087,   7335}, 0, {  4514,   1024}, {0xfd, 0x00, 0x82, 0xff}}},\n    {{{  1057,   3087,   7320}, 0, {  5166,   1024}, {0xfd, 0x00, 0x82, 0xff}}},\n    {{{   512,   2253,   7335}, 0, {  4514,   1816}, {0xfd, 0x00, 0x82, 0xff}}},\n};\n\n// 0x0704EF18 - 0x0704F018\nstatic const Vtx inside_castle_seg7_vertex_0704EF18[] = {\n    {{{  1569,   4198,   7115}, 0, {  5786,      0}, {0xd1, 0x00, 0x8b, 0xff}}},\n    {{{  1057,   2253,   7320}, 0, {  5166,   1816}, {0xd1, 0x00, 0x8b, 0xff}}},\n    {{{  1057,   4198,   7320}, 0, {  5166,      0}, {0xd1, 0x00, 0x8b, 0xff}}},\n    {{{ -2284,   4198,   6808}, 0, {  1128,      0}, {0x75, 0x00, 0xd1, 0xff}}},\n    {{{ -2284,   2765,   6808}, 0, {  1128,   1332}, {0x75, 0x00, 0xd1, 0xff}}},\n    {{{ -2489,   2765,   6296}, 0, {   604,   1332}, {0x75, 0x00, 0xd1, 0xff}}},\n    {{{ -1977,   4198,   7115}, 0, {  1538,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2284,   2765,   6808}, 0, {  1128,   1332}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2284,   4198,   6808}, 0, {  1128,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1977,   2765,   7115}, 0, {  1538,   1332}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1465,   4198,   7320}, 0, {  2056,      0}, {0x2f, 0x00, 0x8b, 0xff}}},\n    {{{ -1977,   2253,   7115}, 0, {  1538,   1816}, {0x2f, 0x00, 0x8b, 0xff}}},\n    {{{ -1977,   4198,   7115}, 0, {  1538,      0}, {0x2f, 0x00, 0x8b, 0xff}}},\n    {{{  1876,   4198,   6808}, 0, {  6266,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1876,   2765,   6808}, 0, {  6266,   1332}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1569,   2765,   7115}, 0, {  5786,   1332}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0704F018 - 0x0704F118\nstatic const Vtx inside_castle_seg7_vertex_0704F018[] = {\n    {{{  1876,   4198,   6808}, 0, {  6266,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1569,   2765,   7115}, 0, {  5786,   1332}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1569,   4198,   7115}, 0, {  5786,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2081,   4198,   6296}, 0, {  6880,      0}, {0x8b, 0x00, 0xd1, 0xff}}},\n    {{{  1876,   2765,   6808}, 0, {  6266,   1332}, {0x8b, 0x00, 0xd1, 0xff}}},\n    {{{  1876,   4198,   6808}, 0, {  6266,      0}, {0x8b, 0x00, 0xd1, 0xff}}},\n    {{{  1569,   4198,   7115}, 0, {  5786,      0}, {0xd1, 0x00, 0x8b, 0xff}}},\n    {{{  1569,   2253,   7115}, 0, {  5786,   1816}, {0xd1, 0x00, 0x8b, 0xff}}},\n    {{{  1057,   2253,   7320}, 0, {  5166,   1816}, {0xd1, 0x00, 0x8b, 0xff}}},\n    {{{ -2489,   4198,   5272}, 0, { 14948,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2489,   2970,   5681}, 0, { 15346,   1136}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2489,   2253,   5272}, 0, { 14948,   1816}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2081,   2765,   6296}, 0, {  6880,   1332}, {0x8b, 0x00, 0xd1, 0xff}}},\n    {{{  2081,   2970,   6091}, 0, {  7104,   1136}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2081,   2970,   5681}, 0, {  7576,   1136}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2081,   2253,   5272}, 0, {  8052,   1816}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0704F118 - 0x0704F218\nstatic const Vtx inside_castle_seg7_vertex_0704F118[] = {\n    {{{  2081,   3379,   6091}, 0, {  7104,    748}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2081,   2970,   6091}, 0, {  7104,   1136}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2081,   2253,   6296}, 0, {  6880,   1816}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2081,   2253,   5272}, 0, {  8052,   1816}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2081,   2970,   5681}, 0, {  7576,   1136}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2081,   3379,   5681}, 0, {  7576,    748}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2081,   4198,   5272}, 0, {  8052,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2081,   4198,   6296}, 0, {  6880,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2489,   4198,   5272}, 0, { 14948,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2489,   3379,   5681}, 0, { 15346,    748}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2489,   2970,   5681}, 0, { 15346,   1136}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -50,   3430,   3824}, 0, { 11534,    696}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   632,   3174,   3824}, 0, { 10644,    940}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   632,   4198,   3824}, 0, { 10644,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2489,   4198,   6296}, 0, { 15934,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2489,   3379,   6091}, 0, { 15742,    748}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0704F218 - 0x0704F318\nstatic const Vtx inside_castle_seg7_vertex_0704F218[] = {\n    {{{ -2489,   2253,   6296}, 0, { 15934,   1816}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2489,   2253,   5272}, 0, { 14948,   1816}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2489,   2970,   5681}, 0, { 15346,   1136}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2489,   2970,   6091}, 0, { 15742,   1136}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2489,   4198,   6296}, 0, {   604,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2489,   2253,   6296}, 0, {   604,   1816}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2489,   2970,   6091}, 0, {   412,   1136}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2489,   3379,   6091}, 0, {   412,    748}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -50,   3430,   3824}, 0, { 11534,    696}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -50,   3174,   3824}, 0, { 11534,    940}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   632,   3174,   3824}, 0, { 10644,    940}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -357,   3430,   3824}, 0, { 11942,    696}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   632,   4198,   3824}, 0, { 10644,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -357,   3174,   3824}, 0, { 11942,    940}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -50,   3174,   3824}, 0, { 11534,    940}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -50,   3174,   3772}, 0, { 11532,    940}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0704F318 - 0x0704F418\nstatic const Vtx inside_castle_seg7_vertex_0704F318[] = {\n    {{{  -357,   3430,   3824}, 0, { 11942,    696}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   632,   4198,   3824}, 0, { 10644,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1041,   4198,   3824}, 0, { 12742,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   632,   4198,   3824}, 0, { 10644,      0}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  1126,   2970,   4028}, 0, {  9972,   1136}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  1126,   4198,   4028}, 0, {  9972,      0}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{   632,   2970,   3824}, 0, { 10644,   1136}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  -357,   3430,   3824}, 0, { 11942,    696}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -357,   3174,   3824}, 0, { 11942,    940}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -357,   3174,   3772}, 0, { 11930,    940}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -357,   3430,   3772}, 0, { 11930,    696}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1041,   3174,   3824}, 0, { 12742,    940}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -357,   3174,   3824}, 0, { 11942,    940}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -357,   2509,   4813}, 0, { 12472,   1572}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -357,   2253,   4813}, 0, { 12472,   1816}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -357,   2253,   4762}, 0, { 12418,   1816}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0704F418 - 0x0704F518\nstatic const Vtx inside_castle_seg7_vertex_0704F418[] = {\n    {{{ -1535,   4198,   4028}, 0, { 13330,      0}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{ -1041,   2970,   3824}, 0, { 12742,   1136}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{ -1041,   4198,   3824}, 0, { 12742,      0}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{  -357,   3174,   3824}, 0, { 11942,    940}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -50,   3174,   3772}, 0, { 11532,    940}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -357,   3174,   3772}, 0, { 11930,    940}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -50,   2253,   4813}, 0, { 11618,   1816}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -50,   2509,   4813}, 0, { 11618,   1572}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -50,   2509,   4762}, 0, { 11608,   1572}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -357,   2509,   4813}, 0, { 12472,   1572}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -50,   2509,   4813}, 0, { 11618,   1572}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   367,   3174,   4813}, 0, { 10436,    940}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -776,   3174,   4813}, 0, { 13318,    940}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -357,   2509,   4813}, 0, { 12472,   1572}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -357,   2253,   4762}, 0, { 12418,   1816}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -357,   2509,   4762}, 0, { 12418,   1572}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0704F518 - 0x0704F608\nstatic const Vtx inside_castle_seg7_vertex_0704F518[] = {\n    {{{ -2489,   4198,   5272}, 0, { 14948,      0}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{ -2285,   2355,   4778}, 0, { 14426,   1720}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{ -2285,   4198,   4778}, 0, { 14426,      0}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{  -776,   2253,   4813}, 0, { 13318,   1816}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -357,   2509,   4813}, 0, { 12472,   1572}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -776,   3174,   4813}, 0, { 13318,    940}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1023,   2970,   4915}, 0, { 13808,   1136}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{  -776,   2253,   4813}, 0, { 13318,   1816}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{  -776,   2970,   4813}, 0, { 13318,   1136}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{ -1023,   2253,   4915}, 0, { 13808,   1816}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{  -357,   2253,   4813}, 0, { 12472,   1816}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1465,   4198,   7320}, 0, {  2056,      0}, {0x2f, 0x00, 0x8b, 0xff}}},\n    {{{ -1465,   2253,   7320}, 0, {  2056,   1816}, {0x2f, 0x00, 0x8b, 0xff}}},\n    {{{ -1977,   2253,   7115}, 0, {  1538,   1816}, {0x2f, 0x00, 0x8b, 0xff}}},\n    {{{ -2489,   2355,   5272}, 0, { 14948,   1720}, {0x75, 0x00, 0x30, 0xff}}},\n};\n\n// 0x0704F608 - 0x0704F6F8\nstatic const Vtx inside_castle_seg7_vertex_0704F608[] = {\n    {{{ -1500,   2355,   5537}, 0, { 15144,   1720}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{ -1398,   2253,   5290}, 0, { 14712,   1816}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{ -1398,   2355,   5290}, 0, { 14712,   1720}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{ -2285,   4198,   4778}, 0, { 14426,      0}, {0x64, 0x00, 0x4d, 0xff}}},\n    {{{ -2285,   2560,   4778}, 0, { 14426,   1524}, {0x64, 0x00, 0x4d, 0xff}}},\n    {{{ -1959,   2560,   4354}, 0, { 13888,   1524}, {0x64, 0x00, 0x4d, 0xff}}},\n    {{{ -1959,   4198,   4354}, 0, { 13888,      0}, {0x64, 0x00, 0x4d, 0xff}}},\n    {{{ -1959,   4198,   4354}, 0, { 13888,      0}, {0x4d, 0x00, 0x64, 0xff}}},\n    {{{ -1959,   2765,   4354}, 0, { 13888,   1332}, {0x4d, 0x00, 0x64, 0xff}}},\n    {{{ -1535,   2765,   4028}, 0, { 13330,   1332}, {0x4d, 0x00, 0x64, 0xff}}},\n    {{{ -1535,   4198,   4028}, 0, { 13330,      0}, {0x4d, 0x00, 0x64, 0xff}}},\n    {{{ -1535,   4198,   4028}, 0, { 13330,      0}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{ -1535,   2970,   4028}, 0, { 13330,   1136}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{ -1041,   2970,   3824}, 0, { 12742,   1136}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{ -1500,   2253,   5537}, 0, { 15144,   1816}, {0x75, 0x00, 0x30, 0xff}}},\n};\n\n// 0x0704F6F8 - 0x0704F7F8\nstatic const Vtx inside_castle_seg7_vertex_0704F6F8[] = {\n    {{{ -1398,   2560,   5290}, 0, { 14712,   1524}, {0x64, 0x00, 0x4d, 0xff}}},\n    {{{ -1398,   2253,   5290}, 0, { 14712,   1816}, {0x64, 0x00, 0x4d, 0xff}}},\n    {{{ -1235,   2253,   5078}, 0, { 14270,   1816}, {0x64, 0x00, 0x4d, 0xff}}},\n    {{{ -1235,   2560,   5078}, 0, { 14270,   1524}, {0x64, 0x00, 0x4d, 0xff}}},\n    {{{ -1235,   2765,   5078}, 0, { 14270,   1332}, {0x4d, 0x00, 0x64, 0xff}}},\n    {{{ -1235,   2253,   5078}, 0, { 14270,   1816}, {0x4d, 0x00, 0x64, 0xff}}},\n    {{{ -1023,   2253,   4915}, 0, { 13808,   1816}, {0x4d, 0x00, 0x64, 0xff}}},\n    {{{ -1023,   2765,   4915}, 0, { 13808,   1332}, {0x4d, 0x00, 0x64, 0xff}}},\n    {{{  1126,   4198,   4028}, 0, {  9972,      0}, {0xb3, 0x00, 0x64, 0xff}}},\n    {{{  1551,   2765,   4354}, 0, {  9316,   1332}, {0xb3, 0x00, 0x64, 0xff}}},\n    {{{  1551,   4198,   4354}, 0, {  9316,      0}, {0xb3, 0x00, 0x64, 0xff}}},\n    {{{  1126,   2765,   4028}, 0, {  9972,   1332}, {0xb3, 0x00, 0x64, 0xff}}},\n    {{{  1551,   4198,   4354}, 0, {  9316,      0}, {0x9c, 0x00, 0x4d, 0xff}}},\n    {{{  1876,   2560,   4778}, 0, {  8676,   1524}, {0x9c, 0x00, 0x4d, 0xff}}},\n    {{{  1876,   4198,   4778}, 0, {  8676,      0}, {0x9c, 0x00, 0x4d, 0xff}}},\n    {{{  1551,   2560,   4354}, 0, {  9316,   1524}, {0x9c, 0x00, 0x4d, 0xff}}},\n};\n\n// 0x0704F7F8 - 0x0704F8E8\nstatic const Vtx inside_castle_seg7_vertex_0704F7F8[] = {\n    {{{   -50,   2253,   4813}, 0, { 11618,   1816}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -50,   2509,   4762}, 0, { 11608,   1572}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -50,   2253,   4762}, 0, { 11608,   1816}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1876,   4198,   4778}, 0, {  8676,      0}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{  2081,   2355,   5272}, 0, {  8052,   1720}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{  2081,   4198,   5272}, 0, {  8052,      0}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{  1876,   2355,   4778}, 0, {  8676,   1720}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{   -50,   3174,   3824}, 0, { 11534,    940}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -50,   3430,   3824}, 0, { 11534,    696}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -50,   3430,   3772}, 0, { 11532,    696}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -50,   3174,   3772}, 0, { 11532,    940}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -50,   3430,   3824}, 0, { 11534,    696}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -357,   3430,   3772}, 0, { 11930,    696}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -50,   3430,   3772}, 0, { 11532,    696}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -357,   3430,   3824}, 0, { 11942,    696}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0704F8E8 - 0x0704F928\nstatic const Vtx inside_castle_seg7_vertex_0704F8E8[] = {\n    {{{   -50,   2509,   4813}, 0, { 11618,   1572}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -357,   2509,   4762}, 0, { 12418,   1572}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -50,   2509,   4762}, 0, { 11608,   1572}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -357,   2509,   4813}, 0, { 12472,   1572}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0704F928 - 0x0704FB98\nstatic const Gfx inside_castle_seg7_dl_0704F928[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_0704C8B0.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0704C8B0.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0704C9B8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  5,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_0704C8C8.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0704C8C8.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0704CA98, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_0704C8E0.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0704C8E0.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0704CB18, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_0704C8F8.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0704C8F8.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0704CB98, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_0704C910.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0704C910.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0704CC18, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_0704C928.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0704C928.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0704CC98, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_0704C940.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0704C940.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0704CCD8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  7,  6, 0x0),\n    gsSP2Triangles( 4,  8,  9, 0x0,  4,  9,  5, 0x0),\n    gsSP2Triangles(10, 11,  6, 0x0,  7, 10,  6, 0x0),\n    gsSP2Triangles(10, 12, 11, 0x0, 12, 13, 11, 0x0),\n    gsSP2Triangles(13,  8, 11, 0x0, 13, 14,  8, 0x0),\n    gsSP1Triangle(14,  9,  8, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704CDC8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  5,  2,  3, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 5,  3,  9, 0x0,  6,  5, 10, 0x0),\n    gsSP2Triangles( 5,  9, 10, 0x0,  6, 10, 11, 0x0),\n    gsSP2Triangles( 6, 11,  7, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 15, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0704FB98 - 0x0704FED8\nstatic const Gfx inside_castle_seg7_dl_0704FB98[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_0704C958.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0704C958.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0704CEC8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704CFB8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704D0A8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_0704C940.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0704C940.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0704D168, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704D258, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704D348, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704D438, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704D528, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704D618, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704D708, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704D7F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704D8E8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0704FED8 - 0x0704FF60\nstatic const Gfx inside_castle_seg7_dl_0704FED8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_0900B000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0704D9E8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  5,  1, 0x0,  0,  6,  5, 0x0),\n    gsSP2Triangles( 0,  4,  6, 0x0,  0,  2,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 8, 12, 13, 0x0,  8, 14, 12, 0x0),\n    gsSP2Triangles( 8, 15,  9, 0x0,  8, 13, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0704FF60 - 0x0704FFA8\nstatic const Gfx inside_castle_seg7_dl_0704FF60[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0704DAE8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0704FFA8 - 0x07050080\nstatic const Gfx inside_castle_seg7_dl_0704FFA8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0704DB68, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  0,  2, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704DC68, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704DD58, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP1Triangle( 0,  2, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07050080 - 0x070501E8\nstatic const Gfx inside_castle_seg7_dl_07050080[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0704DE08, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704DEF8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  9, 10,  3, 0x0),\n    gsSP2Triangles( 8,  9,  5, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0,  9,  3,  2, 0x0),\n    gsSP2Triangles( 9,  2,  5, 0x0, 10, 15,  3, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704DFF8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704E0F8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles( 3, 10,  4, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704E1D8, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP1Triangle( 8,  9, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070501E8 - 0x07050230\nstatic const Gfx inside_castle_seg7_dl_070501E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0704E288, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07050230 - 0x07050278\nstatic const Gfx inside_castle_seg7_dl_07050230[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07006000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0704E308, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07050278 - 0x070502C0\nstatic const Gfx inside_castle_seg7_dl_07050278[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0704E388, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070502C0 - 0x07050308\nstatic const Gfx inside_castle_seg7_dl_070502C0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07006800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0704E408, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07050308 - 0x070505D0\nstatic const Gfx inside_castle_seg7_dl_07050308[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0704E488, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704E578, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704E668, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704E758, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704E848, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_0704C970.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0704C970.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0704E8C8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_0704C988.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0704C988.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0704E988, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 0,  2,  3, 0x0,  3,  5,  4, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_0704C9A0.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0704C9A0.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0704E9E8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  0, 11,  1, 0x0),\n    gsSP2Triangles(12,  0,  2, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704EAE8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704EBE8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704ECE8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070505D0 - 0x07050938\nstatic const Gfx inside_castle_seg7_dl_070505D0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_0704C940.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0704C940.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0704ED28, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  4,  6, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704EE28, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704EF18, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704F018, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 3, 12,  4, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704F118, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  3,  5,  6, 0x0),\n    gsSP2Triangles( 0,  2,  7, 0x0,  5,  0,  7, 0x0),\n    gsSP2Triangles( 5,  7,  6, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0,  8, 14, 15, 0x0),\n    gsSP1Triangle( 8, 15,  9, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704F218, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  8, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704F318, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11,  0,  2, 0x0),\n    gsSP2Triangles(11, 12,  0, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704F418, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704F518, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 3, 10,  4, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704F608, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704F6F8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704F7F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0704F8E8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07050938 - 0x07050A78\nconst Gfx inside_castle_seg7_dl_07050938[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_0704F928),\n    gsSPDisplayList(inside_castle_seg7_dl_0704FB98),\n    gsSPDisplayList(inside_castle_seg7_dl_0704FED8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_0704FF60),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_0704FFA8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07050080),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_070501E8),\n    gsSPDisplayList(inside_castle_seg7_dl_07050230),\n    gsSPDisplayList(inside_castle_seg7_dl_07050278),\n    gsSPDisplayList(inside_castle_seg7_dl_070502C0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07050308),\n    gsSPDisplayList(inside_castle_seg7_dl_070505D0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/2/collision.inc.c",
    "content": "// 0x0706E364 - 0x07073AAA\nconst Collision inside_castle_seg7_area_2_collision[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x688),\n    COL_VERTEX(-4860, 1306, 3036),\n    COL_VERTEX(-4991, 1306, 3036),\n    COL_VERTEX(-4991, 1306, 3415),\n    COL_VERTEX(-4860, 1306, 3415),\n    COL_VERTEX(-4860, 1306, 2903),\n    COL_VERTEX(-4991, 1306, 2903),\n    COL_VERTEX(-4991, 1306, 3005),\n    COL_VERTEX(-4860, 1306, 3005),\n    COL_VERTEX(-5068, 1306, -3291),\n    COL_VERTEX(-5614, 1306, -3291),\n    COL_VERTEX(-5614, 1306, -3189),\n    COL_VERTEX(-5068, 1306, -3189),\n    COL_VERTEX(-5614, 1306, -3701),\n    COL_VERTEX(-5068, 1306, -3322),\n    COL_VERTEX(-5068, 1306, -3701),\n    COL_VERTEX(-5614, 1306, -3322),\n    COL_VERTEX(-4729, 1306, 3036),\n    COL_VERTEX(-4729, 1306, 3415),\n    COL_VERTEX(-4729, 1306, 2903),\n    COL_VERTEX(-4729, 1306, 3005),\n    COL_VERTEX(-4522, 1306, -3291),\n    COL_VERTEX(-4522, 1306, -3189),\n    COL_VERTEX(-4522, 1306, -3322),\n    COL_VERTEX(-4522, 1306, -3701),\n    COL_VERTEX(-127, 4813, -3248),\n    COL_VERTEX(-127, 5120, -3248),\n    COL_VERTEX(-127, 5120, -3453),\n    COL_VERTEX(-127, 4813, -3453),\n    COL_VERTEX(-332, 4813, -3248),\n    COL_VERTEX(-332, 5120, -3453),\n    COL_VERTEX(-332, 4813, -3453),\n    COL_VERTEX(-332, 5120, -3248),\n    COL_VERTEX(-3513, 3021, 5989),\n    COL_VERTEX(-3513, 2816, 5784),\n    COL_VERTEX(-3513, 3021, 5784),\n    COL_VERTEX(-3308, 2816, 5784),\n    COL_VERTEX(-3308, 3021, 5784),\n    COL_VERTEX(-3308, 2816, 5989),\n    COL_VERTEX(-3513, 2816, 5989),\n    COL_VERTEX(-3308, 3021, 5989),\n    COL_VERTEX(2900, 3021, 5784),\n    COL_VERTEX(3105, 3021, 5784),\n    COL_VERTEX(3105, 3021, 5989),\n    COL_VERTEX(2900, 3021, 5989),\n    COL_VERTEX(3105, 2816, 5784),\n    COL_VERTEX(3105, 2816, 5989),\n    COL_VERTEX(2900, 2816, 5989),\n    COL_VERTEX(2900, 2816, 5784),\n    COL_VERTEX(-4598, 1306, 3415),\n    COL_VERTEX(-4598, 1306, 3036),\n    COL_VERTEX(-4598, 1306, 2903),\n    COL_VERTEX(-4598, 1306, 3005),\n    COL_VERTEX(-3976, 1306, -3291),\n    COL_VERTEX(-3976, 1306, -3189),\n    COL_VERTEX(-3976, 1306, -3322),\n    COL_VERTEX(-3976, 1306, -3701),\n    COL_VERTEX(0, 3968, 956),\n    COL_VERTEX(-409, 3968, 1008),\n    COL_VERTEX(0, 3968, 1008),\n    COL_VERTEX(-409, 3968, 956),\n    COL_VERTEX(-409, 3942, 1008),\n    COL_VERTEX(0, 3942, 1008),\n    COL_VERTEX(0, 3994, 956),\n    COL_VERTEX(-409, 3994, 956),\n    COL_VERTEX(0, 3994, 905),\n    COL_VERTEX(-409, 3994, 905),\n    COL_VERTEX(0, 3942, 1059),\n    COL_VERTEX(-409, 3942, 1059),\n    COL_VERTEX(-409, 3917, 1059),\n    COL_VERTEX(0, 3917, 1059),\n    COL_VERTEX(-1772, 2765, 6992),\n    COL_VERTEX(-1813, 2765, 6992),\n    COL_VERTEX(-1813, 2867, 6992),\n    COL_VERTEX(-1772, 2847, 6992),\n    COL_VERTEX(-1813, 2765, 7197),\n    COL_VERTEX(-1813, 2867, 7197),\n    COL_VERTEX(-1813, 2765, 6603),\n    COL_VERTEX(-1772, 2847, 6603),\n    COL_VERTEX(-1813, 2867, 6603),\n    COL_VERTEX(-1772, 2765, 6603),\n    COL_VERTEX(-1813, 2867, 6518),\n    COL_VERTEX(-1813, 2765, 6518),\n    COL_VERTEX(-1977, 2765, 6296),\n    COL_VERTEX(-2006, 2765, 6325),\n    COL_VERTEX(-2006, 2867, 6325),\n    COL_VERTEX(-1977, 2847, 6296),\n    COL_VERTEX(1364, 2765, 6603),\n    COL_VERTEX(1405, 2867, 6518),\n    COL_VERTEX(1405, 2765, 6992),\n    COL_VERTEX(1405, 2867, 6992),\n    COL_VERTEX(1405, 2765, 6518),\n    COL_VERTEX(1598, 2765, 6325),\n    COL_VERTEX(-789, 3174, 4604),\n    COL_VERTEX(-745, 3174, 4772),\n    COL_VERTEX(420, 3174, 4615),\n    COL_VERTEX(381, 3174, 4604),\n    COL_VERTEX(-745, 3277, 4772),\n    COL_VERTEX(3103, 1408, 3210),\n    COL_VERTEX(3206, 1408, 3108),\n    COL_VERTEX(3103, 1613, 3108),\n    COL_VERTEX(3206, 1613, 3210),\n    COL_VERTEX(3820, 1613, 2800),\n    COL_VERTEX(3718, 1613, 2698),\n    COL_VERTEX(3820, 1408, 2698),\n    COL_VERTEX(3718, 1408, 2800),\n    COL_VERTEX(3922, 1408, 752),\n    COL_VERTEX(4025, 1408, 650),\n    COL_VERTEX(3922, 1613, 650),\n    COL_VERTEX(4025, 1613, 752),\n    COL_VERTEX(3308, 1613, 343),\n    COL_VERTEX(3206, 1613, 240),\n    COL_VERTEX(3308, 1408, 240),\n    COL_VERTEX(3206, 1408, 343),\n    COL_VERTEX(3206, 1408, 1367),\n    COL_VERTEX(3308, 1408, 1264),\n    COL_VERTEX(3206, 1613, 1264),\n    COL_VERTEX(3308, 1613, 1367),\n    COL_VERTEX(3206, 1613, 1367),\n    COL_VERTEX(3103, 1613, 3210),\n    COL_VERTEX(3718, 1613, 2800),\n    COL_VERTEX(3922, 1613, 752),\n    COL_VERTEX(3206, 1613, 343),\n    COL_VERTEX(1405, 2867, 6603),\n    COL_VERTEX(1364, 2847, 6603),\n    COL_VERTEX(1405, 2765, 6603),\n    COL_VERTEX(1364, 2765, 6992),\n    COL_VERTEX(1364, 2847, 6992),\n    COL_VERTEX(1405, 2765, 7197),\n    COL_VERTEX(1405, 2867, 7197),\n    COL_VERTEX(1598, 2867, 6325),\n    COL_VERTEX(1569, 2765, 6296),\n    COL_VERTEX(1569, 2847, 6296),\n    COL_VERTEX(-829, 3174, 4615),\n    COL_VERTEX(-829, 3256, 4615),\n    COL_VERTEX(-789, 3277, 4604),\n    COL_VERTEX(420, 3256, 4615),\n    COL_VERTEX(381, 3277, 4604),\n    COL_VERTEX(336, 3174, 4772),\n    COL_VERTEX(336, 3277, 4772),\n    COL_VERTEX(3103, 1408, 3108),\n    COL_VERTEX(3206, 1408, 3210),\n    COL_VERTEX(3206, 1613, 3108),\n    COL_VERTEX(3820, 1408, 2800),\n    COL_VERTEX(3820, 1613, 2698),\n    COL_VERTEX(3718, 1408, 2698),\n    COL_VERTEX(3922, 1408, 650),\n    COL_VERTEX(4025, 1613, 650),\n    COL_VERTEX(4025, 1408, 752),\n    COL_VERTEX(3308, 1408, 343),\n    COL_VERTEX(3206, 1408, 240),\n    COL_VERTEX(3308, 1613, 240),\n    COL_VERTEX(3206, 1408, 1264),\n    COL_VERTEX(3308, 1613, 1264),\n    COL_VERTEX(3308, 1408, 1367),\n    COL_VERTEX(-1772, 2847, 7197),\n    COL_VERTEX(-1772, 2847, 6501),\n    COL_VERTEX(1364, 2847, 6501),\n    COL_VERTEX(1364, 2847, 7197),\n    COL_VERTEX(-776, 3256, 4813),\n    COL_VERTEX(367, 3256, 4813),\n    COL_VERTEX(-409, 2611, 7232),\n    COL_VERTEX(-409, 3123, 7232),\n    COL_VERTEX(-409, 3123, 7642),\n    COL_VERTEX(-409, 2611, 7642),\n    COL_VERTEX(0, 2611, 7642),\n    COL_VERTEX(0, 3123, 7232),\n    COL_VERTEX(0, 2611, 7232),\n    COL_VERTEX(0, 3123, 7642),\n    COL_VERTEX(0, 3123, 7130),\n    COL_VERTEX(0, 2714, 7232),\n    COL_VERTEX(0, 2714, 7130),\n    COL_VERTEX(-409, 2714, 7130),\n    COL_VERTEX(-409, 3123, 7130),\n    COL_VERTEX(-409, 2714, 7232),\n    COL_VERTEX(-802, 1203, 4153),\n    COL_VERTEX(-716, 1203, 3844),\n    COL_VERTEX(-802, 1203, 3844),\n    COL_VERTEX(-716, 1203, 4153),\n    COL_VERTEX(-802, 1203, 3813),\n    COL_VERTEX(-716, 1203, 3728),\n    COL_VERTEX(-802, 1203, 3728),\n    COL_VERTEX(-716, 1203, 3813),\n    COL_VERTEX(0, 2611, 7263),\n    COL_VERTEX(-136, 2611, 7641),\n    COL_VERTEX(0, 2611, 7641),\n    COL_VERTEX(-136, 2611, 7263),\n    COL_VERTEX(-761, 1203, -142),\n    COL_VERTEX(-966, 1203, -40),\n    COL_VERTEX(-761, 1203, -40),\n    COL_VERTEX(-966, 1203, -142),\n    COL_VERTEX(-966, 1203, -173),\n    COL_VERTEX(-761, 1203, -552),\n    COL_VERTEX(-966, 1203, -552),\n    COL_VERTEX(-761, 1203, -173),\n    COL_VERTEX(-631, 1203, 4153),\n    COL_VERTEX(-631, 1203, 3844),\n    COL_VERTEX(-631, 1203, 3813),\n    COL_VERTEX(-631, 1203, 3728),\n    COL_VERTEX(-272, 2611, 7641),\n    COL_VERTEX(-272, 2611, 7263),\n    COL_VERTEX(-556, 1203, -142),\n    COL_VERTEX(-556, 1203, -40),\n    COL_VERTEX(-556, 1203, -173),\n    COL_VERTEX(-556, 1203, -552),\n    COL_VERTEX(-546, 1203, 3844),\n    COL_VERTEX(-546, 1203, 4153),\n    COL_VERTEX(-546, 1203, 3728),\n    COL_VERTEX(-546, 1203, 3813),\n    COL_VERTEX(-409, 2611, 7263),\n    COL_VERTEX(-409, 2611, 7641),\n    COL_VERTEX(-351, 1203, -142),\n    COL_VERTEX(-351, 1203, -40),\n    COL_VERTEX(-351, 1203, -173),\n    COL_VERTEX(-351, 1203, -552),\n    COL_VERTEX(1364, 2765, 7197),\n    COL_VERTEX(1364, 2765, 6501),\n    COL_VERTEX(-1772, 2765, 6501),\n    COL_VERTEX(-1772, 2765, 7197),\n    COL_VERTEX(-776, 3174, 4813),\n    COL_VERTEX(367, 3174, 4813),\n    COL_VERTEX(3462, 1408, -680),\n    COL_VERTEX(3308, 1408, -680),\n    COL_VERTEX(3308, 1408, -301),\n    COL_VERTEX(3462, 1408, -301),\n    COL_VERTEX(3615, 1408, -680),\n    COL_VERTEX(3615, 1408, -301),\n    COL_VERTEX(3769, 1408, -680),\n    COL_VERTEX(3769, 1408, -301),\n    COL_VERTEX(282, 5018, -2685),\n    COL_VERTEX(230, 5837, -2736),\n    COL_VERTEX(230, 5018, -2736),\n    COL_VERTEX(282, 5837, -2685),\n    COL_VERTEX(230, 5837, -2839),\n    COL_VERTEX(230, 5018, -2839),\n    COL_VERTEX(282, 5837, -2890),\n    COL_VERTEX(282, 5018, -2890),\n    COL_VERTEX(-690, 5018, -2890),\n    COL_VERTEX(-690, 5837, -2890),\n    COL_VERTEX(-639, 5837, -2839),\n    COL_VERTEX(-639, 5018, -2839),\n    COL_VERTEX(-639, 5837, -2736),\n    COL_VERTEX(-639, 5018, -2736),\n    COL_VERTEX(-588, 5018, -3811),\n    COL_VERTEX(-588, 5018, -3760),\n    COL_VERTEX(-639, 5018, -3709),\n    COL_VERTEX(282, 5018, -3709),\n    COL_VERTEX(230, 5018, -3709),\n    COL_VERTEX(179, 5018, -3760),\n    COL_VERTEX(282, 5837, -2787),\n    COL_VERTEX(282, 5837, -3811),\n    COL_VERTEX(-25, 5018, -3555),\n    COL_VERTEX(-690, 5018, -2787),\n    COL_VERTEX(-409, 5734, -1091),\n    COL_VERTEX(-409, 4992, -1091),\n    COL_VERTEX(-434, 5018, -3555),\n    COL_VERTEX(-690, 5837, -2787),\n    COL_VERTEX(-690, 5837, -3811),\n    COL_VERTEX(-25, 5120, -3555),\n    COL_VERTEX(-434, 5120, -3555),\n    COL_VERTEX(-434, 5018, -3146),\n    COL_VERTEX(-434, 5120, -3146),\n    COL_VERTEX(-25, 5018, -3146),\n    COL_VERTEX(-460, 3174, 3721),\n    COL_VERTEX(51, 3174, 3619),\n    COL_VERTEX(-460, 3174, 3619),\n    COL_VERTEX(358, 3174, 3721),\n    COL_VERTEX(-921, 3174, 3465),\n    COL_VERTEX(154, 3174, 2544),\n    COL_VERTEX(512, 4198, 2800),\n    COL_VERTEX(-767, 3174, 3721),\n    COL_VERTEX(-357, 3430, 3721),\n    COL_VERTEX(-562, 3174, 2544),\n    COL_VERTEX(-921, 4198, 3465),\n    COL_VERTEX(0, 4992, -1091),\n    COL_VERTEX(0, 3174, 2544),\n    COL_VERTEX(0, 4198, 2544),\n    COL_VERTEX(0, 3405, 2134),\n    COL_VERTEX(0, 3405, 2083),\n    COL_VERTEX(512, 4198, 3721),\n    COL_VERTEX(-511, 3174, 2595),\n    COL_VERTEX(-460, 3174, 2595),\n    COL_VERTEX(-409, 3174, 2544),\n    COL_VERTEX(102, 3174, 2595),\n    COL_VERTEX(51, 3174, 2595),\n    COL_VERTEX(154, 4198, 2544),\n    COL_VERTEX(512, 4198, 3465),\n    COL_VERTEX(-767, 4198, 3721),\n    COL_VERTEX(-921, 4198, 2851),\n    COL_VERTEX(-50, 3430, 3772),\n    COL_VERTEX(-357, 3430, 3772),\n    COL_VERTEX(-357, 3174, 3824),\n    COL_VERTEX(-50, 3174, 3772),\n    COL_VERTEX(-357, 3174, 3772),\n    COL_VERTEX(-50, 3430, 3721),\n    COL_VERTEX(0, 3430, 2032),\n    COL_VERTEX(0, 3430, 2083),\n    COL_VERTEX(0, 3456, 1980),\n    COL_VERTEX(0, 3456, 2032),\n    COL_VERTEX(0, 3482, 1980),\n    COL_VERTEX(0, 3482, 1929),\n    COL_VERTEX(0, 3507, 1929),\n    COL_VERTEX(0, 3507, 1878),\n    COL_VERTEX(0, 3533, 1878),\n    COL_VERTEX(0, 3533, 1827),\n    COL_VERTEX(0, 3584, 1724),\n    COL_VERTEX(0, 3584, 1776),\n    COL_VERTEX(0, 3558, 1827),\n    COL_VERTEX(0, 3558, 1776),\n    COL_VERTEX(0, 3200, 2492),\n    COL_VERTEX(0, 3200, 2544),\n    COL_VERTEX(0, 3226, 2492),\n    COL_VERTEX(0, 3226, 2441),\n    COL_VERTEX(0, 3251, 2441),\n    COL_VERTEX(0, 3251, 2390),\n    COL_VERTEX(0, 3277, 2390),\n    COL_VERTEX(0, 3277, 2339),\n    COL_VERTEX(0, 3354, 2185),\n    COL_VERTEX(0, 3354, 2236),\n    COL_VERTEX(0, 3379, 2185),\n    COL_VERTEX(0, 3379, 2134),\n    COL_VERTEX(0, 3328, 2236),\n    COL_VERTEX(0, 3328, 2288),\n    COL_VERTEX(0, 3302, 2288),\n    COL_VERTEX(0, 3302, 2339),\n    COL_VERTEX(0, 3814, 1315),\n    COL_VERTEX(0, 3814, 1264),\n    COL_VERTEX(0, 3840, 1264),\n    COL_VERTEX(0, 3840, 1212),\n    COL_VERTEX(0, 3917, 1110),\n    COL_VERTEX(0, 3891, 1110),\n    COL_VERTEX(0, 3891, 1161),\n    COL_VERTEX(0, 3866, 1212),\n    COL_VERTEX(0, 3866, 1161),\n    COL_VERTEX(0, 3712, 1520),\n    COL_VERTEX(0, 3712, 1468),\n    COL_VERTEX(0, 3738, 1468),\n    COL_VERTEX(0, 3738, 1417),\n    COL_VERTEX(0, 3789, 1315),\n    COL_VERTEX(0, 3789, 1366),\n    COL_VERTEX(0, 3763, 1417),\n    COL_VERTEX(0, 3763, 1366),\n    COL_VERTEX(0, 3686, 1520),\n    COL_VERTEX(0, 3686, 1571),\n    COL_VERTEX(0, 3661, 1571),\n    COL_VERTEX(0, 3661, 1622),\n    COL_VERTEX(0, 3635, 1622),\n    COL_VERTEX(0, 3635, 1673),\n    COL_VERTEX(0, 3610, 1673),\n    COL_VERTEX(0, 3610, 1724),\n    COL_VERTEX(0, 4019, 905),\n    COL_VERTEX(0, 4019, 854),\n    COL_VERTEX(0, 4045, 854),\n    COL_VERTEX(0, 4045, 803),\n    COL_VERTEX(0, 4070, 803),\n    COL_VERTEX(0, 4070, 752),\n    COL_VERTEX(0, 4096, 752),\n    COL_VERTEX(0, 4429, 35),\n    COL_VERTEX(0, 4429, 86),\n    COL_VERTEX(0, 4454, 35),\n    COL_VERTEX(0, 4454, -15),\n    COL_VERTEX(0, 4480, -15),\n    COL_VERTEX(0, 4480, -67),\n    COL_VERTEX(0, 4506, -67),\n    COL_VERTEX(0, 4506, -118),\n    COL_VERTEX(0, 4582, -271),\n    COL_VERTEX(0, 4582, -220),\n    COL_VERTEX(0, 4608, -271),\n    COL_VERTEX(0, 4608, -323),\n    COL_VERTEX(0, 4557, -220),\n    COL_VERTEX(0, 4557, -169),\n    COL_VERTEX(0, 4531, -169),\n    COL_VERTEX(0, 4531, -118),\n    COL_VERTEX(0, 4659, -425),\n    COL_VERTEX(0, 4685, -476),\n    COL_VERTEX(0, 4685, -425),\n    COL_VERTEX(0, 4710, -476),\n    COL_VERTEX(0, 4710, -527),\n    COL_VERTEX(0, 4736, -527),\n    COL_VERTEX(0, 4736, -579),\n    COL_VERTEX(0, 4762, -579),\n    COL_VERTEX(0, 4762, -630),\n    COL_VERTEX(0, 4813, -732),\n    COL_VERTEX(0, 4813, -681),\n    COL_VERTEX(0, 4787, -630),\n    COL_VERTEX(0, 4787, -681),\n    COL_VERTEX(0, 4659, -374),\n    COL_VERTEX(0, 4634, -374),\n    COL_VERTEX(0, 4634, -323),\n    COL_VERTEX(0, 4122, 700),\n    COL_VERTEX(0, 4122, 649),\n    COL_VERTEX(0, 4147, 649),\n    COL_VERTEX(0, 4147, 598),\n    COL_VERTEX(0, 4198, 496),\n    COL_VERTEX(0, 4198, 547),\n    COL_VERTEX(0, 4173, 598),\n    COL_VERTEX(0, 4173, 547),\n    COL_VERTEX(0, 4096, 700),\n    COL_VERTEX(0, 4378, 137),\n    COL_VERTEX(0, 4378, 188),\n    COL_VERTEX(0, 4403, 137),\n    COL_VERTEX(0, 4403, 86),\n    COL_VERTEX(0, 4352, 188),\n    COL_VERTEX(0, 4352, 240),\n    COL_VERTEX(0, 4326, 240),\n    COL_VERTEX(0, 4326, 291),\n    COL_VERTEX(0, 4301, 291),\n    COL_VERTEX(0, 4301, 342),\n    COL_VERTEX(0, 4275, 393),\n    COL_VERTEX(0, 4275, 342),\n    COL_VERTEX(0, 4250, 444),\n    COL_VERTEX(0, 4250, 393),\n    COL_VERTEX(0, 4224, 444),\n    COL_VERTEX(0, 4224, 496),\n    COL_VERTEX(0, 4838, -732),\n    COL_VERTEX(0, 4915, -937),\n    COL_VERTEX(0, 4915, -886),\n    COL_VERTEX(0, 4941, -937),\n    COL_VERTEX(0, 4941, -988),\n    COL_VERTEX(0, 4890, -886),\n    COL_VERTEX(0, 4890, -835),\n    COL_VERTEX(0, 4864, -835),\n    COL_VERTEX(0, 4864, -783),\n    COL_VERTEX(0, 4838, -783),\n    COL_VERTEX(0, 5018, -1091),\n    COL_VERTEX(0, 4992, -1039),\n    COL_VERTEX(0, 4966, -1039),\n    COL_VERTEX(0, 4966, -988),\n    COL_VERTEX(2081, 2253, 4813),\n    COL_VERTEX(51, 2253, 4915),\n    COL_VERTEX(-460, 2253, 4915),\n    COL_VERTEX(51, 2253, 4813),\n    COL_VERTEX(632, 3174, 3824),\n    COL_VERTEX(-50, 3430, 3824),\n    COL_VERTEX(51, 3174, 3824),\n    COL_VERTEX(-460, 3174, 3926),\n    COL_VERTEX(-1041, 3174, 3824),\n    COL_VERTEX(-613, 2253, 7232),\n    COL_VERTEX(-818, 2253, 7232),\n    COL_VERTEX(102, 2253, 7130),\n    COL_VERTEX(205, 2253, 7232),\n    COL_VERTEX(-921, 2253, 7335),\n    COL_VERTEX(410, 2253, 7232),\n    COL_VERTEX(-1535, 3686, 6925),\n    COL_VERTEX(-1228, 3379, 6925),\n    COL_VERTEX(1126, 4198, 6925),\n    COL_VERTEX(1126, 3686, 6925),\n    COL_VERTEX(-921, 3482, 6925),\n    COL_VERTEX(-1535, 4198, 6925),\n    COL_VERTEX(512, 3482, 6925),\n    COL_VERTEX(-204, 3584, 6925),\n    COL_VERTEX(-409, 3482, 6925),\n    COL_VERTEX(0, 2253, 7130),\n    COL_VERTEX(0, 3482, 6925),\n    COL_VERTEX(307, 3379, 6925),\n    COL_VERTEX(-952, 3040, 7334),\n    COL_VERTEX(-716, 3379, 6925),\n    COL_VERTEX(819, 3379, 6925),\n    COL_VERTEX(-357, 2714, 7027),\n    COL_VERTEX(-2489, 3379, 6091),\n    COL_VERTEX(-2489, 2970, 6091),\n    COL_VERTEX(-2899, 3379, 5681),\n    COL_VERTEX(-3206, 3789, 5374),\n    COL_VERTEX(-2899, 3789, 6091),\n    COL_VERTEX(-2899, 3379, 6091),\n    COL_VERTEX(-3616, 3789, 6398),\n    COL_VERTEX(-3923, 3789, 6091),\n    COL_VERTEX(-3206, 3789, 6398),\n    COL_VERTEX(-3616, 3789, 5374),\n    COL_VERTEX(-3923, 3789, 5681),\n    COL_VERTEX(-2899, 2970, 6091),\n    COL_VERTEX(-3257, 2970, 6040),\n    COL_VERTEX(-3206, 2970, 5374),\n    COL_VERTEX(-2899, 2970, 5681),\n    COL_VERTEX(-3923, 2970, 5681),\n    COL_VERTEX(-3616, 2970, 5374),\n    COL_VERTEX(-3923, 2970, 6091),\n    COL_VERTEX(-3257, 3021, 5733),\n    COL_VERTEX(-3564, 3021, 5733),\n    COL_VERTEX(-3257, 2970, 5733),\n    COL_VERTEX(-3564, 3021, 6040),\n    COL_VERTEX(-3564, 2970, 6040),\n    COL_VERTEX(2849, 3021, 5733),\n    COL_VERTEX(3156, 3021, 6040),\n    COL_VERTEX(3156, 2970, 5733),\n    COL_VERTEX(2849, 2970, 6040),\n    COL_VERTEX(2849, 3021, 6040),\n    COL_VERTEX(2797, 2970, 6398),\n    COL_VERTEX(3156, 2970, 6040),\n    COL_VERTEX(2849, 2970, 5733),\n    COL_VERTEX(2490, 3379, 5681),\n    COL_VERTEX(2490, 3379, 6091),\n    COL_VERTEX(2081, 3379, 6091),\n    COL_VERTEX(2490, 2970, 6091),\n    COL_VERTEX(2797, 3789, 6398),\n    COL_VERTEX(2081, 3379, 5681),\n    COL_VERTEX(2490, 3789, 5681),\n    COL_VERTEX(2490, 3789, 6091),\n    COL_VERTEX(2797, 3789, 5374),\n    COL_VERTEX(3207, 3789, 5374),\n    COL_VERTEX(3514, 3789, 5681),\n    COL_VERTEX(3514, 3789, 6091),\n    COL_VERTEX(3207, 3789, 6398),\n    COL_VERTEX(367, 2970, 4813),\n    COL_VERTEX(614, 2765, 4915),\n    COL_VERTEX(-50, 2509, 4813),\n    COL_VERTEX(826, 2560, 5078),\n    COL_VERTEX(989, 2355, 5290),\n    COL_VERTEX(-921, 3087, 7335),\n    COL_VERTEX(1057, 2253, 7320),\n    COL_VERTEX(1364, 2253, 6501),\n    COL_VERTEX(-1977, 2253, 6296),\n    COL_VERTEX(-1772, 2253, 6501),\n    COL_VERTEX(-1977, 4198, 7115),\n    COL_VERTEX(-2284, 4198, 6808),\n    COL_VERTEX(-1465, 4198, 7320),\n    COL_VERTEX(2081, 4198, 6296),\n    COL_VERTEX(1876, 4198, 6808),\n    COL_VERTEX(1569, 4198, 7115),\n    COL_VERTEX(2081, 2970, 6091),\n    COL_VERTEX(2081, 2253, 5272),\n    COL_VERTEX(1569, 2253, 6296),\n    COL_VERTEX(-2489, 2765, 6296),\n    COL_VERTEX(-2489, 2253, 6296),\n    COL_VERTEX(-2489, 4198, 5272),\n    COL_VERTEX(-2489, 4198, 6296),\n    COL_VERTEX(-50, 3174, 3824),\n    COL_VERTEX(-357, 3430, 3824),\n    COL_VERTEX(632, 4198, 3824),\n    COL_VERTEX(-1535, 4198, 4028),\n    COL_VERTEX(-50, 2253, 4813),\n    COL_VERTEX(-357, 2509, 4813),\n    COL_VERTEX(-50, 2253, 4762),\n    COL_VERTEX(-776, 2253, 4813),\n    COL_VERTEX(-1023, 2970, 4915),\n    COL_VERTEX(-1500, 2253, 5537),\n    COL_VERTEX(1876, 4198, 4778),\n    COL_VERTEX(-1535, 2970, 4028),\n    COL_VERTEX(-1023, 2765, 4915),\n    COL_VERTEX(-1959, 2765, 4354),\n    COL_VERTEX(-1398, 2560, 5290),\n    COL_VERTEX(-2285, 2560, 4778),\n    COL_VERTEX(-1500, 2355, 5537),\n    COL_VERTEX(-2285, 4198, 4778),\n    COL_VERTEX(-1959, 4198, 4354),\n    COL_VERTEX(-1235, 2765, 5078),\n    COL_VERTEX(1126, 4198, 4028),\n    COL_VERTEX(1551, 4198, 4354),\n    COL_VERTEX(1876, 2560, 4778),\n    COL_VERTEX(989, 2560, 5290),\n    COL_VERTEX(2081, 2355, 5272),\n    COL_VERTEX(826, 2765, 5078),\n    COL_VERTEX(1126, 2970, 4028),\n    COL_VERTEX(614, 2970, 4915),\n    COL_VERTEX(-3771, 1306, -3291),\n    COL_VERTEX(-5040, 1306, 3005),\n    COL_VERTEX(-4283, 1306, 1316),\n    COL_VERTEX(-5614, 1510, -3291),\n    COL_VERTEX(-3975, 1510, -3291),\n    COL_VERTEX(-5307, 1306, 1316),\n    COL_VERTEX(-5307, 2330, 1316),\n    COL_VERTEX(-4939, 1306, 1418),\n    COL_VERTEX(-7252, 1306, 1316),\n    COL_VERTEX(-5307, 1306, 2340),\n    COL_VERTEX(-4598, 1355, 3005),\n    COL_VERTEX(-4549, 1306, 3005),\n    COL_VERTEX(-4991, 1355, 3005),\n    COL_VERTEX(-5307, 2330, 2340),\n    COL_VERTEX(-2747, 1203, 2135),\n    COL_VERTEX(-2747, 1459, 1904),\n    COL_VERTEX(-2849, 1203, 2007),\n    COL_VERTEX(-2849, 1203, 1648),\n    COL_VERTEX(-2747, 1203, 1520),\n    COL_VERTEX(-3566, 1203, 1520),\n    COL_VERTEX(-4283, 1357, 1520),\n    COL_VERTEX(-4283, 1459, 2135),\n    COL_VERTEX(-4897, 1357, 2135),\n    COL_VERTEX(-3975, 3149, -3291),\n    COL_VERTEX(-5614, 3149, -3291),\n    COL_VERTEX(-3771, 3354, -3291),\n    COL_VERTEX(-4991, 1748, 3005),\n    COL_VERTEX(-4598, 1748, 3005),\n    COL_VERTEX(-4283, 2330, 2340),\n    COL_VERTEX(-4549, 1797, 3005),\n    COL_VERTEX(-7252, 2330, 1316),\n    COL_VERTEX(-7252, 1306, 2340),\n    COL_VERTEX(-4897, 1357, 1520),\n    COL_VERTEX(-5102, 1357, 1725),\n    COL_VERTEX(-5102, 1357, 1930),\n    COL_VERTEX(-3822, 1357, 2135),\n    COL_VERTEX(-3822, 1331, 1520),\n    COL_VERTEX(-3771, 1306, 1520),\n    COL_VERTEX(-3771, 1331, 1520),\n    COL_VERTEX(-3719, 1280, 1520),\n    COL_VERTEX(-3719, 1306, 1520),\n    COL_VERTEX(-4283, 2330, 1316),\n    COL_VERTEX(-4487, 2534, 2135),\n    COL_VERTEX(-2695, 1459, 1751),\n    COL_VERTEX(-2695, 1203, 1751),\n    COL_VERTEX(-2695, 1203, 1904),\n    COL_VERTEX(-2695, 1459, 1904),\n    COL_VERTEX(-2747, 1459, 1751),\n    COL_VERTEX(-4283, 1818, 1930),\n    COL_VERTEX(-4283, 1818, 1725),\n    COL_VERTEX(-4283, 1613, 2135),\n    COL_VERTEX(-4283, 1613, 1520),\n    COL_VERTEX(-4283, 1306, 1520),\n    COL_VERTEX(-2747, 1613, 2135),\n    COL_VERTEX(-3617, 1229, 1520),\n    COL_VERTEX(-3617, 1254, 1520),\n    COL_VERTEX(-3566, 1229, 1520),\n    COL_VERTEX(-3668, 1254, 1520),\n    COL_VERTEX(-3668, 1280, 1520),\n    COL_VERTEX(7455, 1408, 3927),\n    COL_VERTEX(7455, 1408, -271),\n    COL_VERTEX(4281, 1408, 3415),\n    COL_VERTEX(4332, 1408, 3517),\n    COL_VERTEX(4332, 1408, 138),\n    COL_VERTEX(1823, 1203, 1648),\n    COL_VERTEX(1823, 1203, 2007),\n    COL_VERTEX(1721, 1408, 2084),\n    COL_VERTEX(2258, 1229, 1648),\n    COL_VERTEX(1721, 1203, 1572),\n    COL_VERTEX(2284, 1229, 2003),\n    COL_VERTEX(2284, 1229, 1652),\n    COL_VERTEX(2310, 1254, 2000),\n    COL_VERTEX(2310, 1254, 1656),\n    COL_VERTEX(2335, 1280, 1996),\n    COL_VERTEX(2386, 1331, 1667),\n    COL_VERTEX(2386, 1331, 1989),\n    COL_VERTEX(2412, 1357, 1985),\n    COL_VERTEX(2412, 1382, 1670),\n    COL_VERTEX(2438, 1382, 1981),\n    COL_VERTEX(3308, 2022, -271),\n    COL_VERTEX(3154, 2125, -271),\n    COL_VERTEX(3922, 1408, -271),\n    COL_VERTEX(3154, 1408, -271),\n    COL_VERTEX(3052, 1408, 3824),\n    COL_VERTEX(4025, 1408, 3824),\n    COL_VERTEX(3129, 1408, 3824),\n    COL_VERTEX(3180, 2167, 3927),\n    COL_VERTEX(3897, 1408, 3876),\n    COL_VERTEX(3897, 1408, 3927),\n    COL_VERTEX(3948, 1408, 3824),\n    COL_VERTEX(4025, 1408, -168),\n    COL_VERTEX(3948, 1408, -168),\n    COL_VERTEX(3897, 1408, -219),\n    COL_VERTEX(3180, 2167, -219),\n    COL_VERTEX(3180, 1408, -219),\n    COL_VERTEX(3129, 1408, -168),\n    COL_VERTEX(3052, 2125, -168),\n    COL_VERTEX(4281, 1408, 87),\n    COL_VERTEX(2745, 1408, 855),\n    COL_VERTEX(1721, 1459, 1751),\n    COL_VERTEX(1670, 1408, 1751),\n    COL_VERTEX(1721, 1408, 1751),\n    COL_VERTEX(1670, 1459, 1904),\n    COL_VERTEX(1721, 1408, 1904),\n    COL_VERTEX(1721, 1203, 2186),\n    COL_VERTEX(1721, 2125, 1469),\n    COL_VERTEX(1670, 1459, 1751),\n    COL_VERTEX(1721, 1459, 1904),\n    COL_VERTEX(4332, 1408, 1008),\n    COL_VERTEX(4281, 2159, 1162),\n    COL_VERTEX(4281, 1408, 1162),\n    COL_VERTEX(4230, 1408, 1111),\n    COL_VERTEX(4230, 1408, 1060),\n    COL_VERTEX(4281, 2159, 2647),\n    COL_VERTEX(4332, 1408, 2493),\n    COL_VERTEX(4230, 1408, 2596),\n    COL_VERTEX(4230, 1408, 2544),\n    COL_VERTEX(4281, 1408, 2647),\n    COL_VERTEX(2745, 1408, 3415),\n    COL_VERTEX(2745, 2125, 138),\n    COL_VERTEX(3052, 2330, 265),\n    COL_VERTEX(3282, 2330, 36),\n    COL_VERTEX(2847, 1408, 1060),\n    COL_VERTEX(3052, 2330, 2186),\n    COL_VERTEX(2745, 2125, 3517),\n    COL_VERTEX(2745, 1408, 2493),\n    COL_VERTEX(2745, 2125, 2493),\n    COL_VERTEX(2847, 1408, 957),\n    COL_VERTEX(2745, 1408, 1162),\n    COL_VERTEX(1721, 1408, 2186),\n    COL_VERTEX(2847, 1408, 2596),\n    COL_VERTEX(2847, 1408, 2698),\n    COL_VERTEX(1670, 1203, 1904),\n    COL_VERTEX(2438, 1408, 1981),\n    COL_VERTEX(2335, 1306, 1996),\n    COL_VERTEX(2361, 1306, 1992),\n    COL_VERTEX(2361, 1331, 1992),\n    COL_VERTEX(2796, 1408, 87),\n    COL_VERTEX(2847, 1408, 138),\n    COL_VERTEX(2847, 1408, 189),\n    COL_VERTEX(2796, 1408, 240),\n    COL_VERTEX(4332, 2125, 138),\n    COL_VERTEX(4332, 2125, 3517),\n    COL_VERTEX(4025, 2330, 265),\n    COL_VERTEX(3922, 2125, -271),\n    COL_VERTEX(3922, 2125, 3927),\n    COL_VERTEX(4230, 1408, 3466),\n    COL_VERTEX(4230, 1408, 3517),\n    COL_VERTEX(4281, 1408, 3568),\n    COL_VERTEX(2796, 1408, 3415),\n    COL_VERTEX(2847, 1408, 3466),\n    COL_VERTEX(2847, 1408, 3517),\n    COL_VERTEX(3154, 2125, 3927),\n    COL_VERTEX(4281, 1408, 240),\n    COL_VERTEX(4230, 1408, 189),\n    COL_VERTEX(4230, 1408, 138),\n    COL_VERTEX(4332, 1408, 240),\n    COL_VERTEX(4025, 2330, 3620),\n    COL_VERTEX(3154, 1408, 3927),\n    COL_VERTEX(-1196, 1203, 3813),\n    COL_VERTEX(-2114, 1203, 3283),\n    COL_VERTEX(-1279, 1203, 2458),\n    COL_VERTEX(-187, 1203, 3762),\n    COL_VERTEX(781, 1203, 3283),\n    COL_VERTEX(-460, 1203, 1280),\n    COL_VERTEX(-462, 1203, 2355),\n    COL_VERTEX(781, 1203, 387),\n    COL_VERTEX(-351, 1306, -142),\n    COL_VERTEX(-1196, 1203, -142),\n    COL_VERTEX(-136, 1203, -142),\n    COL_VERTEX(-351, 1920, -142),\n    COL_VERTEX(-1586, 1203, 1209),\n    COL_VERTEX(-1893, 1203, 1741),\n    COL_VERTEX(-1811, 1203, 1434),\n    COL_VERTEX(-2114, 1203, 387),\n    COL_VERTEX(-613, 1203, 1126),\n    COL_VERTEX(-1279, 1203, 1126),\n    COL_VERTEX(-1177, 1203, 1126),\n    COL_VERTEX(-818, 1203, 1024),\n    COL_VERTEX(51, 2253, 4608),\n    COL_VERTEX(-2542, 1203, 1648),\n    COL_VERTEX(-2542, 1203, 2007),\n    COL_VERTEX(-2644, 1203, 2365),\n    COL_VERTEX(-2644, 1459, 1751),\n    COL_VERTEX(-2644, 1203, 1305),\n    COL_VERTEX(-2226, 2022, 581),\n    COL_VERTEX(1311, 1203, 2160),\n    COL_VERTEX(1618, 1203, 2160),\n    COL_VERTEX(1311, 1715, 2160),\n    COL_VERTEX(1516, 1203, 2007),\n    COL_VERTEX(1311, 1203, 1510),\n    COL_VERTEX(1311, 1203, 1305),\n    COL_VERTEX(1516, 1203, 1648),\n    COL_VERTEX(1618, 1715, 1510),\n    COL_VERTEX(1618, 1203, 1510),\n    COL_VERTEX(-802, 1613, 3813),\n    COL_VERTEX(-1043, 1203, 3813),\n    COL_VERTEX(-1094, 1203, 3762),\n    COL_VERTEX(-546, 1613, 3813),\n    COL_VERTEX(-290, 1203, 3813),\n    COL_VERTEX(-50, 2509, 4762),\n    COL_VERTEX(-357, 2509, 4762),\n    COL_VERTEX(-50, 2253, 4710),\n    COL_VERTEX(51, 2253, 4710),\n    COL_VERTEX(-357, 2509, 4710),\n    COL_VERTEX(154, 2022, 2458),\n    COL_VERTEX(51, 2381, 2458),\n    COL_VERTEX(154, 1715, 2458),\n    COL_VERTEX(-562, 1408, 2458),\n    COL_VERTEX(-562, 2022, 2458),\n    COL_VERTEX(1311, 2022, 3813),\n    COL_VERTEX(-2644, 2022, 3813),\n    COL_VERTEX(51, 1715, 2458),\n    COL_VERTEX(154, 1203, 2458),\n    COL_VERTEX(51, 1357, 1741),\n    COL_VERTEX(51, 2227, 3789),\n    COL_VERTEX(-2644, 1459, 1904),\n    COL_VERTEX(587, 1203, 436),\n    COL_VERTEX(-562, 2022, 1741),\n    COL_VERTEX(154, 2022, 1741),\n    COL_VERTEX(-50, 2509, 4710),\n    COL_VERTEX(154, 2253, 4506),\n    COL_VERTEX(-665, 2253, 4506),\n    COL_VERTEX(-562, 2253, 4506),\n    COL_VERTEX(-460, 2253, 4608),\n    COL_VERTEX(-665, 3046, 3994),\n    COL_VERTEX(-665, 3046, 4710),\n    COL_VERTEX(-460, 2253, 3789),\n    COL_VERTEX(-665, 2253, 3994),\n    COL_VERTEX(256, 3046, 3994),\n    COL_VERTEX(51, 3046, 3789),\n    COL_VERTEX(-665, 2253, 4608),\n    COL_VERTEX(-460, 3046, 3789),\n    COL_VERTEX(-460, 2022, 1741),\n    COL_VERTEX(-1586, 2022, 2324),\n    COL_VERTEX(-1279, 2022, 1126),\n    COL_VERTEX(-613, 2022, 1126),\n    COL_VERTEX(-1074, 1459, 1126),\n    COL_VERTEX(-1074, 1203, 1126),\n    COL_VERTEX(154, 2022, 3686),\n    COL_VERTEX(-1811, 2022, 2048),\n    COL_VERTEX(-1893, 2022, 1741),\n    COL_VERTEX(-1586, 2022, 1209),\n    COL_VERTEX(-1811, 2022, 1434),\n    COL_VERTEX(1311, 1920, 1956),\n    COL_VERTEX(893, 2022, 3089),\n    COL_VERTEX(1311, 1920, 1715),\n    COL_VERTEX(1311, 1715, 1510),\n    COL_VERTEX(1618, 1715, 2160),\n    COL_VERTEX(587, 1203, 3395),\n    COL_VERTEX(587, 1203, 3234),\n    COL_VERTEX(893, 1203, 3089),\n    COL_VERTEX(893, 2022, 581),\n    COL_VERTEX(732, 1203, 581),\n    COL_VERTEX(-2226, 1203, 581),\n    COL_VERTEX(-1920, 1203, 436),\n    COL_VERTEX(-1920, 1203, 275),\n    COL_VERTEX(-2226, 1203, 3089),\n    COL_VERTEX(-2226, 2022, 3089),\n    COL_VERTEX(-2065, 1203, 3089),\n    COL_VERTEX(-1920, 1203, 3234),\n    COL_VERTEX(-238, 1203, 3762),\n    COL_VERTEX(-1145, 1203, 3762),\n    COL_VERTEX(-966, 1920, -142),\n    COL_VERTEX(1618, 1459, 1904),\n    COL_VERTEX(1618, 1203, 1751),\n    COL_VERTEX(1670, 1203, 1751),\n    COL_VERTEX(893, 1203, 581),\n    COL_VERTEX(-1920, 2022, 275),\n    COL_VERTEX(587, 2022, 3395),\n    COL_VERTEX(-1196, 2022, 3813),\n    COL_VERTEX(-921, 1203, 1126),\n    COL_VERTEX(-921, 1203, 1178),\n    COL_VERTEX(-1074, 1203, 1178),\n    COL_VERTEX(-921, 1459, 1126),\n    COL_VERTEX(-921, 1459, 1178),\n    COL_VERTEX(-1074, 1459, 1178),\n    COL_VERTEX(-460, 2227, 3789),\n    COL_VERTEX(-460, 2227, 3738),\n    COL_VERTEX(-460, 2202, 3738),\n    COL_VERTEX(-460, 2202, 3686),\n    COL_VERTEX(-460, 2176, 3686),\n    COL_VERTEX(-460, 2176, 3635),\n    COL_VERTEX(-460, 2150, 3635),\n    COL_VERTEX(-460, 2150, 3584),\n    COL_VERTEX(-460, 2125, 3584),\n    COL_VERTEX(-460, 2125, 3533),\n    COL_VERTEX(-460, 2099, 3533),\n    COL_VERTEX(-460, 2099, 3482),\n    COL_VERTEX(-460, 2048, 3379),\n    COL_VERTEX(-460, 2074, 3430),\n    COL_VERTEX(-460, 2048, 3430),\n    COL_VERTEX(-460, 2074, 3482),\n    COL_VERTEX(-460, 1638, 2560),\n    COL_VERTEX(-460, 1638, 2611),\n    COL_VERTEX(-460, 1664, 2611),\n    COL_VERTEX(-460, 1664, 2662),\n    COL_VERTEX(-460, 1715, 2765),\n    COL_VERTEX(-460, 1715, 2714),\n    COL_VERTEX(-460, 1690, 2714),\n    COL_VERTEX(-460, 1690, 2662),\n    COL_VERTEX(-460, 1766, 2867),\n    COL_VERTEX(-460, 1766, 2816),\n    COL_VERTEX(-460, 1741, 2816),\n    COL_VERTEX(-460, 1741, 2765),\n    COL_VERTEX(-460, 1792, 2867),\n    COL_VERTEX(-460, 1818, 2918),\n    COL_VERTEX(-460, 1792, 2918),\n    COL_VERTEX(-460, 1818, 2970),\n    COL_VERTEX(-460, 1843, 2970),\n    COL_VERTEX(-460, 1843, 3021),\n    COL_VERTEX(-460, 1869, 3021),\n    COL_VERTEX(-460, 1869, 3072),\n    COL_VERTEX(-460, 1894, 3072),\n    COL_VERTEX(-460, 1920, 3123),\n    COL_VERTEX(-460, 1894, 3123),\n    COL_VERTEX(-460, 1920, 3174),\n    COL_VERTEX(-460, 2022, 3379),\n    COL_VERTEX(-460, 2022, 3328),\n    COL_VERTEX(-460, 1997, 3328),\n    COL_VERTEX(-460, 1997, 3277),\n    COL_VERTEX(-460, 1946, 3174),\n    COL_VERTEX(-460, 1971, 3226),\n    COL_VERTEX(-460, 1946, 3226),\n    COL_VERTEX(-460, 1971, 3277),\n    COL_VERTEX(-460, 1562, 2458),\n    COL_VERTEX(-460, 1562, 2406),\n    COL_VERTEX(-460, 1536, 2406),\n    COL_VERTEX(-460, 1536, 2355),\n    COL_VERTEX(-460, 1587, 2458),\n    COL_VERTEX(-460, 1587, 2509),\n    COL_VERTEX(-460, 1613, 2509),\n    COL_VERTEX(-460, 1613, 2560),\n    COL_VERTEX(-460, 1510, 2355),\n    COL_VERTEX(-460, 1510, 2304),\n    COL_VERTEX(-460, 1485, 2304),\n    COL_VERTEX(-460, 1485, 2253),\n    COL_VERTEX(-460, 1459, 2253),\n    COL_VERTEX(-460, 1459, 2202),\n    COL_VERTEX(-460, 1434, 2202),\n    COL_VERTEX(-460, 1434, 2150),\n    COL_VERTEX(-460, 1408, 2150),\n    COL_VERTEX(-460, 1408, 2099),\n    COL_VERTEX(-460, 1382, 2099),\n    COL_VERTEX(-460, 1382, 2048),\n    COL_VERTEX(-460, 1331, 1946),\n    COL_VERTEX(-460, 1357, 1997),\n    COL_VERTEX(-460, 1331, 1997),\n    COL_VERTEX(-460, 1357, 2048),\n    COL_VERTEX(-460, 1280, 1843),\n    COL_VERTEX(-460, 1280, 1894),\n    COL_VERTEX(-460, 1306, 1894),\n    COL_VERTEX(-460, 1306, 1946),\n    COL_VERTEX(-460, 1254, 1792),\n    COL_VERTEX(-460, 1229, 1792),\n    COL_VERTEX(-460, 1254, 1843),\n    COL_VERTEX(-460, 1229, 1741),\n    COL_VERTEX(-460, 1203, 1741),\n    COL_VERTEX(-665, 512, 3021),\n    COL_VERTEX(-767, 1203, 1229),\n    COL_VERTEX(-818, 1203, 1229),\n    COL_VERTEX(-1177, 1203, 1741),\n    COL_VERTEX(-767, 1203, 1741),\n    COL_VERTEX(-1207, 602, 1813),\n    COL_VERTEX(-767, 512, 2355),\n    COL_VERTEX(-1279, 1818, 1843),\n    COL_VERTEX(-1207, 1818, 1813),\n    COL_VERTEX(-767, 614, 1741),\n    COL_VERTEX(-1351, 1818, 1813),\n    COL_VERTEX(-1381, 512, 2560),\n    COL_VERTEX(-665, 512, 2560),\n    COL_VERTEX(-1279, 512, 2355),\n    COL_VERTEX(-767, 922, 2355),\n    COL_VERTEX(-1279, 512, 2867),\n    COL_VERTEX(-767, 512, 2867),\n    COL_VERTEX(-1279, 512, 2970),\n    COL_VERTEX(-767, 1818, 2253),\n    COL_VERTEX(-1526, 1818, 2253),\n    COL_VERTEX(-1526, 1818, 1229),\n    COL_VERTEX(-921, 1459, 1229),\n    COL_VERTEX(-1074, 1459, 1229),\n    COL_VERTEX(-869, 1126, 1741),\n    COL_VERTEX(-1381, 1152, 1242),\n    COL_VERTEX(-1381, 1152, 1229),\n    COL_VERTEX(-1177, 1818, 1741),\n    COL_VERTEX(-1177, 1203, 1229),\n    COL_VERTEX(-1279, 1203, 1741),\n    COL_VERTEX(-836, 1178, 1997),\n    COL_VERTEX(-1279, 1178, 1741),\n    COL_VERTEX(-917, 1152, 2103),\n    COL_VERTEX(-1279, 1152, 1741),\n    COL_VERTEX(-1023, 1126, 2184),\n    COL_VERTEX(-1279, 1126, 1741),\n    COL_VERTEX(-1146, 1101, 2235),\n    COL_VERTEX(-1279, 1101, 1741),\n    COL_VERTEX(-1279, 1075, 2253),\n    COL_VERTEX(-1279, 1075, 1741),\n    COL_VERTEX(-1279, 1050, 1741),\n    COL_VERTEX(-1279, 1024, 1741),\n    COL_VERTEX(-1279, 998, 1741),\n    COL_VERTEX(-1279, 973, 1741),\n    COL_VERTEX(-1279, 947, 1741),\n    COL_VERTEX(-1774, 922, 1873),\n    COL_VERTEX(-1279, 922, 1741),\n    COL_VERTEX(-1791, 896, 1741),\n    COL_VERTEX(-1279, 896, 1741),\n    COL_VERTEX(-1722, 870, 1485),\n    COL_VERTEX(-1279, 870, 1741),\n    COL_VERTEX(-1641, 845, 1379),\n    COL_VERTEX(-1641, 819, 1379),\n    COL_VERTEX(-1535, 819, 1297),\n    COL_VERTEX(-1279, 819, 1741),\n    COL_VERTEX(-1412, 794, 1246),\n    COL_VERTEX(-1279, 794, 1741),\n    COL_VERTEX(-1279, 768, 1229),\n    COL_VERTEX(-1279, 768, 1741),\n    COL_VERTEX(-1279, 742, 1741),\n    COL_VERTEX(-1279, 717, 1741),\n    COL_VERTEX(-1279, 691, 1741),\n    COL_VERTEX(-1279, 666, 1741),\n    COL_VERTEX(-1279, 640, 1741),\n    COL_VERTEX(-784, 614, 1608),\n    COL_VERTEX(-1381, 1024, 2970),\n    COL_VERTEX(-1202, 1178, 2816),\n    COL_VERTEX(-844, 1178, 2816),\n    COL_VERTEX(-665, 1024, 2970),\n    COL_VERTEX(-665, 1024, 2560),\n    COL_VERTEX(-1381, 1024, 2560),\n    COL_VERTEX(-1177, 1024, 2355),\n    COL_VERTEX(-1279, 922, 2355),\n    COL_VERTEX(-869, 1024, 2355),\n    COL_VERTEX(-665, 512, 2970),\n    COL_VERTEX(-869, 512, 2970),\n    COL_VERTEX(-869, 768, 2970),\n    COL_VERTEX(-1381, 512, 2970),\n    COL_VERTEX(-1177, 768, 3021),\n    COL_VERTEX(-869, 768, 3021),\n    COL_VERTEX(-767, 1818, 1229),\n    COL_VERTEX(-767, 1818, 1741),\n    COL_VERTEX(-784, 1818, 1873),\n    COL_VERTEX(-836, 1818, 1997),\n    COL_VERTEX(-917, 1818, 2103),\n    COL_VERTEX(-1023, 1818, 2184),\n    COL_VERTEX(-1146, 1818, 2235),\n    COL_VERTEX(-1279, 1818, 2253),\n    COL_VERTEX(-1412, 1818, 2235),\n    COL_VERTEX(-1535, 1818, 2184),\n    COL_VERTEX(-1641, 1818, 2103),\n    COL_VERTEX(-1722, 1818, 1997),\n    COL_VERTEX(-1774, 1818, 1873),\n    COL_VERTEX(-1791, 1818, 1741),\n    COL_VERTEX(-1279, 597, 1843),\n    COL_VERTEX(-1279, 1152, 1638),\n    COL_VERTEX(-1351, 1152, 1668),\n    COL_VERTEX(-1381, 1818, 1741),\n    COL_VERTEX(-1207, 1152, 1668),\n    COL_VERTEX(-1177, 1152, 1741),\n    COL_VERTEX(-1279, 1152, 1229),\n    COL_VERTEX(-1146, 1152, 1246),\n    COL_VERTEX(-1023, 1152, 1297),\n    COL_VERTEX(-917, 1152, 1379),\n    COL_VERTEX(-836, 1152, 1485),\n    COL_VERTEX(-784, 1152, 1608),\n    COL_VERTEX(-1774, 1818, 1608),\n    COL_VERTEX(-1722, 1818, 1485),\n    COL_VERTEX(-1641, 1818, 1379),\n    COL_VERTEX(-1535, 1818, 1297),\n    COL_VERTEX(-1412, 1818, 1246),\n    COL_VERTEX(-690, 5837, -2685),\n    COL_VERTEX(-690, 5018, -2685),\n    COL_VERTEX(-588, 5837, -3760),\n    COL_VERTEX(-588, 5837, -3811),\n    COL_VERTEX(-639, 5837, -3709),\n    COL_VERTEX(-690, 5837, -3709),\n    COL_VERTEX(-690, 5018, -3709),\n    COL_VERTEX(230, 5837, -3709),\n    COL_VERTEX(282, 5837, -3709),\n    COL_VERTEX(179, 5837, -3760),\n    COL_VERTEX(179, 5837, -3811),\n    COL_VERTEX(179, 5018, -3811),\n    COL_VERTEX(0, 5734, -1091),\n    COL_VERTEX(282, 5018, -2787),\n    COL_VERTEX(0, 3891, 2544),\n    COL_VERTEX(-409, 5018, -1091),\n    COL_VERTEX(-690, 5018, -3811),\n    COL_VERTEX(282, 5018, -3811),\n    COL_VERTEX(-409, 3891, 2544),\n    COL_VERTEX(-25, 5120, -3146),\n    COL_VERTEX(51, 3174, 3721),\n    COL_VERTEX(512, 3174, 3465),\n    COL_VERTEX(-50, 3174, 3721),\n    COL_VERTEX(358, 4198, 3721),\n    COL_VERTEX(512, 3174, 2800),\n    COL_VERTEX(-357, 3174, 3721),\n    COL_VERTEX(-921, 3174, 2851),\n    COL_VERTEX(-409, 4992, -1039),\n    COL_VERTEX(-409, 4198, 2544),\n    COL_VERTEX(-409, 3405, 2134),\n    COL_VERTEX(-409, 3379, 2134),\n    COL_VERTEX(-409, 3405, 2083),\n    COL_VERTEX(-921, 4198, 2544),\n    COL_VERTEX(512, 4198, 2544),\n    COL_VERTEX(-921, 4198, 3721),\n    COL_VERTEX(-511, 4198, 2595),\n    COL_VERTEX(-562, 4198, 2544),\n    COL_VERTEX(-460, 4198, 2595),\n    COL_VERTEX(102, 4198, 2595),\n    COL_VERTEX(51, 4198, 2595),\n    COL_VERTEX(-409, 3430, 2083),\n    COL_VERTEX(-409, 3430, 2032),\n    COL_VERTEX(-409, 3456, 2032),\n    COL_VERTEX(-409, 3456, 1980),\n    COL_VERTEX(-409, 3482, 1980),\n    COL_VERTEX(-409, 3482, 1929),\n    COL_VERTEX(-409, 3507, 1929),\n    COL_VERTEX(-409, 3507, 1878),\n    COL_VERTEX(-409, 3533, 1878),\n    COL_VERTEX(-409, 3533, 1827),\n    COL_VERTEX(-409, 3584, 1776),\n    COL_VERTEX(-409, 3584, 1724),\n    COL_VERTEX(-409, 3558, 1776),\n    COL_VERTEX(-409, 3558, 1827),\n    COL_VERTEX(-409, 3200, 2492),\n    COL_VERTEX(-409, 3200, 2544),\n    COL_VERTEX(-409, 3226, 2492),\n    COL_VERTEX(-409, 3226, 2441),\n    COL_VERTEX(-409, 3251, 2441),\n    COL_VERTEX(-409, 3251, 2390),\n    COL_VERTEX(-409, 3277, 2390),\n    COL_VERTEX(-409, 3277, 2339),\n    COL_VERTEX(-409, 3354, 2236),\n    COL_VERTEX(-409, 3354, 2185),\n    COL_VERTEX(-409, 3328, 2236),\n    COL_VERTEX(-409, 3379, 2185),\n    COL_VERTEX(-409, 3328, 2288),\n    COL_VERTEX(-409, 3302, 2288),\n    COL_VERTEX(-409, 3302, 2339),\n    COL_VERTEX(-409, 3814, 1315),\n    COL_VERTEX(-409, 3789, 1315),\n    COL_VERTEX(-409, 3814, 1264),\n    COL_VERTEX(-409, 3840, 1264),\n    COL_VERTEX(-409, 3840, 1212),\n    COL_VERTEX(-409, 3917, 1110),\n    COL_VERTEX(-409, 3891, 1110),\n    COL_VERTEX(-409, 3891, 1161),\n    COL_VERTEX(-409, 3866, 1161),\n    COL_VERTEX(-409, 3866, 1212),\n    COL_VERTEX(-409, 3686, 1520),\n    COL_VERTEX(-409, 3712, 1520),\n    COL_VERTEX(-409, 3712, 1468),\n    COL_VERTEX(-409, 3738, 1468),\n    COL_VERTEX(-409, 3738, 1417),\n    COL_VERTEX(-409, 3789, 1366),\n    COL_VERTEX(-409, 3763, 1366),\n    COL_VERTEX(-409, 3763, 1417),\n    COL_VERTEX(-409, 3686, 1571),\n    COL_VERTEX(-409, 3661, 1571),\n    COL_VERTEX(-409, 3661, 1622),\n    COL_VERTEX(-409, 3635, 1622),\n    COL_VERTEX(-409, 3635, 1673),\n    COL_VERTEX(-409, 3610, 1673),\n    COL_VERTEX(-409, 3610, 1724),\n    COL_VERTEX(-409, 4019, 905),\n    COL_VERTEX(-409, 4019, 854),\n    COL_VERTEX(-409, 4045, 854),\n    COL_VERTEX(-409, 4045, 803),\n    COL_VERTEX(-409, 4070, 803),\n    COL_VERTEX(-409, 4070, 752),\n    COL_VERTEX(-409, 4096, 752),\n    COL_VERTEX(-409, 4429, 35),\n    COL_VERTEX(-409, 4429, 86),\n    COL_VERTEX(-409, 4403, 86),\n    COL_VERTEX(-409, 4454, 35),\n    COL_VERTEX(-409, 4454, -15),\n    COL_VERTEX(-409, 4480, -15),\n    COL_VERTEX(-409, 4480, -67),\n    COL_VERTEX(-409, 4506, -67),\n    COL_VERTEX(-409, 4506, -118),\n    COL_VERTEX(-409, 4582, -220),\n    COL_VERTEX(-409, 4582, -271),\n    COL_VERTEX(-409, 4557, -220),\n    COL_VERTEX(-409, 4608, -271),\n    COL_VERTEX(-409, 4608, -323),\n    COL_VERTEX(-409, 4557, -169),\n    COL_VERTEX(-409, 4531, -169),\n    COL_VERTEX(-409, 4531, -118),\n    COL_VERTEX(-409, 4659, -374),\n    COL_VERTEX(-409, 4659, -425),\n    COL_VERTEX(-409, 4685, -425),\n    COL_VERTEX(-409, 4685, -476),\n    COL_VERTEX(-409, 4710, -476),\n    COL_VERTEX(-409, 4710, -527),\n    COL_VERTEX(-409, 4736, -527),\n    COL_VERTEX(-409, 4736, -579),\n    COL_VERTEX(-409, 4762, -579),\n    COL_VERTEX(-409, 4762, -630),\n    COL_VERTEX(-409, 4813, -681),\n    COL_VERTEX(-409, 4813, -732),\n    COL_VERTEX(-409, 4787, -681),\n    COL_VERTEX(-409, 4787, -630),\n    COL_VERTEX(-409, 4634, -374),\n    COL_VERTEX(-409, 4634, -323),\n    COL_VERTEX(-409, 4122, 700),\n    COL_VERTEX(-409, 4096, 700),\n    COL_VERTEX(-409, 4122, 649),\n    COL_VERTEX(-409, 4147, 649),\n    COL_VERTEX(-409, 4147, 598),\n    COL_VERTEX(-409, 4198, 547),\n    COL_VERTEX(-409, 4198, 496),\n    COL_VERTEX(-409, 4173, 547),\n    COL_VERTEX(-409, 4173, 598),\n    COL_VERTEX(-409, 4378, 188),\n    COL_VERTEX(-409, 4378, 137),\n    COL_VERTEX(-409, 4352, 188),\n    COL_VERTEX(-409, 4403, 137),\n    COL_VERTEX(-409, 4352, 240),\n    COL_VERTEX(-409, 4326, 240),\n    COL_VERTEX(-409, 4326, 291),\n    COL_VERTEX(-409, 4301, 291),\n    COL_VERTEX(-409, 4301, 342),\n    COL_VERTEX(-409, 4275, 342),\n    COL_VERTEX(-409, 4275, 393),\n    COL_VERTEX(-409, 4250, 393),\n    COL_VERTEX(-409, 4250, 444),\n    COL_VERTEX(-409, 4224, 444),\n    COL_VERTEX(-409, 4224, 496),\n    COL_VERTEX(-409, 4838, -732),\n    COL_VERTEX(-409, 4915, -886),\n    COL_VERTEX(-409, 4915, -937),\n    COL_VERTEX(-409, 4890, -886),\n    COL_VERTEX(-409, 4941, -937),\n    COL_VERTEX(-409, 4941, -988),\n    COL_VERTEX(-409, 4890, -835),\n    COL_VERTEX(-409, 4864, -835),\n    COL_VERTEX(-409, 4864, -783),\n    COL_VERTEX(-409, 4838, -783),\n    COL_VERTEX(-409, 4966, -1039),\n    COL_VERTEX(-409, 4966, -988),\n    COL_VERTEX(2081, 2253, 7371),\n    COL_VERTEX(-2489, 2253, 7371),\n    COL_VERTEX(-2489, 2253, 4813),\n    COL_VERTEX(-460, 2253, 4813),\n    COL_VERTEX(51, 3174, 3926),\n    COL_VERTEX(-460, 3174, 3824),\n    COL_VERTEX(632, 2970, 3824),\n    COL_VERTEX(-1041, 2970, 3824),\n    COL_VERTEX(-776, 2970, 4813),\n    COL_VERTEX(-1041, 4198, 3824),\n    COL_VERTEX(-613, 3090, 7232),\n    COL_VERTEX(-511, 3232, 7130),\n    COL_VERTEX(-511, 2253, 7130),\n    COL_VERTEX(205, 3090, 7232),\n    COL_VERTEX(102, 3232, 7130),\n    COL_VERTEX(410, 3087, 7232),\n    COL_VERTEX(-921, 3024, 7335),\n    COL_VERTEX(-818, 3087, 7232),\n    COL_VERTEX(512, 3024, 7335),\n    COL_VERTEX(512, 2253, 7335),\n    COL_VERTEX(-511, 3355, 7130),\n    COL_VERTEX(-409, 2253, 7130),\n    COL_VERTEX(102, 3355, 7130),\n    COL_VERTEX(-1797, 3578, 7187),\n    COL_VERTEX(-1797, 4198, 7187),\n    COL_VERTEX(-1918, 3528, 7308),\n    COL_VERTEX(1388, 4198, 7187),\n    COL_VERTEX(1388, 3578, 7187),\n    COL_VERTEX(-1335, 2923, 7323),\n    COL_VERTEX(1509, 3528, 7308),\n    COL_VERTEX(927, 2923, 7323),\n    COL_VERTEX(-204, 4506, 6925),\n    COL_VERTEX(543, 3040, 7334),\n    COL_VERTEX(-357, 2253, 7027),\n    COL_VERTEX(-50, 2714, 7027),\n    COL_VERTEX(-50, 2253, 7027),\n    COL_VERTEX(-330, 3292, 7130),\n    COL_VERTEX(-204, 3355, 7130),\n    COL_VERTEX(-747, 2937, 7335),\n    COL_VERTEX(-78, 3292, 7130),\n    COL_VERTEX(-952, 3039, 7335),\n    COL_VERTEX(339, 2937, 7335),\n    COL_VERTEX(543, 3039, 7335),\n    COL_VERTEX(-2489, 2970, 5681),\n    COL_VERTEX(-2899, 3789, 5681),\n    COL_VERTEX(-3206, 2970, 6398),\n    COL_VERTEX(-2489, 3379, 5681),\n    COL_VERTEX(-3616, 2970, 6398),\n    COL_VERTEX(-3564, 2970, 5733),\n    COL_VERTEX(-3257, 3021, 6040),\n    COL_VERTEX(3156, 3021, 5733),\n    COL_VERTEX(3207, 2970, 6398),\n    COL_VERTEX(3514, 2970, 6091),\n    COL_VERTEX(2490, 2970, 5681),\n    COL_VERTEX(3514, 2970, 5681),\n    COL_VERTEX(3207, 2970, 5374),\n    COL_VERTEX(2797, 2970, 5374),\n    COL_VERTEX(2081, 2970, 5681),\n    COL_VERTEX(367, 2253, 4813),\n    COL_VERTEX(614, 2253, 4915),\n    COL_VERTEX(826, 2253, 5078),\n    COL_VERTEX(989, 2253, 5290),\n    COL_VERTEX(1092, 2253, 5537),\n    COL_VERTEX(1092, 2355, 5537),\n    COL_VERTEX(-1465, 2253, 7320),\n    COL_VERTEX(-1465, 3087, 7320),\n    COL_VERTEX(512, 3087, 7335),\n    COL_VERTEX(1057, 3087, 7320),\n    COL_VERTEX(1364, 2253, 7197),\n    COL_VERTEX(-1772, 2253, 7197),\n    COL_VERTEX(2081, 2765, 6296),\n    COL_VERTEX(-2284, 2765, 6808),\n    COL_VERTEX(-1977, 2765, 7115),\n    COL_VERTEX(-1977, 2253, 7115),\n    COL_VERTEX(1876, 2765, 6808),\n    COL_VERTEX(1569, 2765, 7115),\n    COL_VERTEX(1569, 2253, 7115),\n    COL_VERTEX(1057, 4198, 7320),\n    COL_VERTEX(2081, 2253, 6296),\n    COL_VERTEX(2081, 4198, 5272),\n    COL_VERTEX(2081, 2765, 7197),\n    COL_VERTEX(-2489, 2765, 7197),\n    COL_VERTEX(-2489, 2253, 5272),\n    COL_VERTEX(1126, 2765, 4028),\n    COL_VERTEX(1551, 2765, 4354),\n    COL_VERTEX(-357, 2253, 4813),\n    COL_VERTEX(-357, 2253, 4762),\n    COL_VERTEX(-1023, 2253, 4915),\n    COL_VERTEX(-2489, 2355, 5272),\n    COL_VERTEX(-2285, 2355, 4778),\n    COL_VERTEX(1876, 2355, 4778),\n    COL_VERTEX(-1535, 2765, 4028),\n    COL_VERTEX(-1959, 2560, 4354),\n    COL_VERTEX(-1235, 2560, 5078),\n    COL_VERTEX(-1398, 2355, 5290),\n    COL_VERTEX(-1398, 2253, 5290),\n    COL_VERTEX(-1235, 2253, 5078),\n    COL_VERTEX(1551, 2560, 4354),\n    COL_VERTEX(-5819, 1306, -3291),\n    COL_VERTEX(-4283, 1306, 2340),\n    COL_VERTEX(-5819, 3354, -3291),\n    COL_VERTEX(-4283, 1306, 1418),\n    COL_VERTEX(-5204, 1306, 1683),\n    COL_VERTEX(-5102, 2534, 1520),\n    COL_VERTEX(-5102, 2534, 2135),\n    COL_VERTEX(-4283, 1306, 2237),\n    COL_VERTEX(-5204, 1306, 1972),\n    COL_VERTEX(-4939, 1306, 2237),\n    COL_VERTEX(-7252, 2330, 2340),\n    COL_VERTEX(-2747, 1203, 2007),\n    COL_VERTEX(-3566, 1203, 2135),\n    COL_VERTEX(-2747, 1203, 1904),\n    COL_VERTEX(-2747, 1203, 1648),\n    COL_VERTEX(-3566, 1229, 2135),\n    COL_VERTEX(-2747, 1613, 1520),\n    COL_VERTEX(-2747, 1203, 1751),\n    COL_VERTEX(-4283, 1459, 1531),\n    COL_VERTEX(-4283, 1357, 1531),\n    COL_VERTEX(-4283, 1459, 1520),\n    COL_VERTEX(-3617, 1229, 2135),\n    COL_VERTEX(-4283, 1357, 2135),\n    COL_VERTEX(-4283, 1357, 2125),\n    COL_VERTEX(-4283, 1459, 2125),\n    COL_VERTEX(-5040, 1797, 3005),\n    COL_VERTEX(-4487, 2534, 1520),\n    COL_VERTEX(-3822, 1357, 1520),\n    COL_VERTEX(-3822, 1331, 2135),\n    COL_VERTEX(-3771, 1331, 2135),\n    COL_VERTEX(-3771, 1306, 2135),\n    COL_VERTEX(-3719, 1306, 2135),\n    COL_VERTEX(-3719, 1280, 2135),\n    COL_VERTEX(-2747, 1818, 1930),\n    COL_VERTEX(-4283, 1306, 2135),\n    COL_VERTEX(-2747, 1818, 1725),\n    COL_VERTEX(-4283, 1203, 2135),\n    COL_VERTEX(-4283, 1203, 1520),\n    COL_VERTEX(-3617, 1254, 2135),\n    COL_VERTEX(-3668, 1254, 2135),\n    COL_VERTEX(-3668, 1280, 2135),\n    COL_VERTEX(4332, 1408, 3927),\n    COL_VERTEX(4332, 1408, -271),\n    COL_VERTEX(3308, 1408, -271),\n    COL_VERTEX(3769, 1408, -271),\n    COL_VERTEX(4281, 2208, 3415),\n    COL_VERTEX(4281, 2208, 240),\n    COL_VERTEX(2745, 1408, 138),\n    COL_VERTEX(2745, 1408, 3517),\n    COL_VERTEX(2258, 1203, 1648),\n    COL_VERTEX(2258, 1203, 2007),\n    COL_VERTEX(1721, 1203, 2084),\n    COL_VERTEX(1721, 1203, 2007),\n    COL_VERTEX(2438, 1203, 1981),\n    COL_VERTEX(2258, 1229, 2007),\n    COL_VERTEX(1721, 1203, 1648),\n    COL_VERTEX(2438, 1203, 1674),\n    COL_VERTEX(2438, 1408, 1674),\n    COL_VERTEX(1721, 1408, 1572),\n    COL_VERTEX(2284, 1254, 2003),\n    COL_VERTEX(2284, 1254, 1652),\n    COL_VERTEX(2310, 1280, 2000),\n    COL_VERTEX(2310, 1280, 1656),\n    COL_VERTEX(2386, 1357, 1989),\n    COL_VERTEX(2386, 1357, 1667),\n    COL_VERTEX(2361, 1331, 1663),\n    COL_VERTEX(2335, 1280, 1659),\n    COL_VERTEX(2412, 1357, 1670),\n    COL_VERTEX(2412, 1382, 1985),\n    COL_VERTEX(2438, 1382, 1674),\n    COL_VERTEX(2361, 1306, 1663),\n    COL_VERTEX(3769, 2022, -271),\n    COL_VERTEX(3308, 1562, -271),\n    COL_VERTEX(3769, 1562, -271),\n    COL_VERTEX(2796, 1408, 3568),\n    COL_VERTEX(2796, 2125, 3568),\n    COL_VERTEX(3052, 2125, 3824),\n    COL_VERTEX(4025, 2125, 3824),\n    COL_VERTEX(4281, 2125, 3568),\n    COL_VERTEX(3129, 2167, 3824),\n    COL_VERTEX(3052, 2167, 3824),\n    COL_VERTEX(3180, 2167, 3876),\n    COL_VERTEX(3180, 1408, 3876),\n    COL_VERTEX(3180, 1408, 3927),\n    COL_VERTEX(3897, 2167, 3876),\n    COL_VERTEX(3948, 2167, 3824),\n    COL_VERTEX(4025, 2167, 3824),\n    COL_VERTEX(3897, 2167, 3927),\n    COL_VERTEX(3180, 2125, 3927),\n    COL_VERTEX(3897, 2125, 3927),\n    COL_VERTEX(4025, 2167, -168),\n    COL_VERTEX(3948, 2167, -168),\n    COL_VERTEX(3897, 2167, -219),\n    COL_VERTEX(3897, 2167, -271),\n    COL_VERTEX(3897, 1408, -271),\n    COL_VERTEX(3180, 1408, -271),\n    COL_VERTEX(3180, 2167, -271),\n    COL_VERTEX(3129, 2167, -168),\n    COL_VERTEX(3052, 2167, -168),\n    COL_VERTEX(3052, 1408, -168),\n    COL_VERTEX(2796, 2125, 87),\n    COL_VERTEX(4281, 2125, 87),\n    COL_VERTEX(4025, 2125, -168),\n    COL_VERTEX(2745, 1408, 240),\n    COL_VERTEX(2745, 2125, 240),\n    COL_VERTEX(2745, 2125, 855),\n    COL_VERTEX(1721, 1203, 1751),\n    COL_VERTEX(1721, 1203, 1469),\n    COL_VERTEX(1670, 1408, 1904),\n    COL_VERTEX(1721, 1203, 1904),\n    COL_VERTEX(1721, 1408, 1469),\n    COL_VERTEX(1721, 2125, 2186),\n    COL_VERTEX(4281, 1408, 1008),\n    COL_VERTEX(4281, 2159, 1008),\n    COL_VERTEX(4332, 2125, 1008),\n    COL_VERTEX(4332, 1408, 1162),\n    COL_VERTEX(4332, 2125, 1162),\n    COL_VERTEX(4230, 2193, 1111),\n    COL_VERTEX(4230, 2193, 1060),\n    COL_VERTEX(4332, 1408, 2647),\n    COL_VERTEX(4332, 2125, 2647),\n    COL_VERTEX(4281, 2159, 2493),\n    COL_VERTEX(4332, 2125, 2493),\n    COL_VERTEX(4281, 1408, 2493),\n    COL_VERTEX(4230, 2193, 2544),\n    COL_VERTEX(4230, 2193, 2596),\n    COL_VERTEX(2745, 1408, 2800),\n    COL_VERTEX(2745, 2125, 2800),\n    COL_VERTEX(2745, 2125, 3415),\n    COL_VERTEX(2745, 2125, 1162),\n    COL_VERTEX(3052, 2330, 1469),\n    COL_VERTEX(2847, 2193, 1060),\n    COL_VERTEX(3052, 2330, 3390),\n    COL_VERTEX(2847, 2193, 2596),\n    COL_VERTEX(3282, 2330, 3620),\n    COL_VERTEX(2847, 2193, 957),\n    COL_VERTEX(2847, 2193, 2698),\n    COL_VERTEX(2335, 1306, 1659),\n    COL_VERTEX(2796, 2208, 87),\n    COL_VERTEX(2847, 2208, 138),\n    COL_VERTEX(2847, 2208, 189),\n    COL_VERTEX(2796, 2208, 240),\n    COL_VERTEX(2745, 2208, 240),\n    COL_VERTEX(3795, 2330, 36),\n    COL_VERTEX(4025, 2330, 3390),\n    COL_VERTEX(3795, 2330, 3620),\n    COL_VERTEX(4332, 2208, 3415),\n    COL_VERTEX(4332, 1408, 3415),\n    COL_VERTEX(4230, 2208, 3466),\n    COL_VERTEX(4230, 2208, 3517),\n    COL_VERTEX(4281, 2208, 3568),\n    COL_VERTEX(2847, 2208, 3466),\n    COL_VERTEX(2847, 2208, 3517),\n    COL_VERTEX(2796, 2208, 3568),\n    COL_VERTEX(2796, 2208, 3415),\n    COL_VERTEX(2745, 2208, 3415),\n    COL_VERTEX(4230, 2208, 189),\n    COL_VERTEX(4230, 2208, 138),\n    COL_VERTEX(4281, 2208, 87),\n    COL_VERTEX(4332, 2208, 240),\n    COL_VERTEX(3052, 2330, 3620),\n    COL_VERTEX(3052, 2330, 36),\n    COL_VERTEX(4025, 2330, 36),\n    COL_VERTEX(3922, 1408, 3927),\n    COL_VERTEX(-136, 1203, 3813),\n    COL_VERTEX(-1145, 2022, 3762),\n    COL_VERTEX(-1586, 1203, 2324),\n    COL_VERTEX(-1811, 1203, 2048),\n    COL_VERTEX(-2644, 1203, 2007),\n    COL_VERTEX(-2644, 1203, 1648),\n    COL_VERTEX(-2644, 1203, 1904),\n    COL_VERTEX(-1094, 2022, 3762),\n    COL_VERTEX(-136, 2022, 3813),\n    COL_VERTEX(1311, 1203, 2365),\n    COL_VERTEX(-1177, 1203, 1024),\n    COL_VERTEX(-187, 2022, 3762),\n    COL_VERTEX(-966, 1306, -142),\n    COL_VERTEX(-1196, 2022, -142),\n    COL_VERTEX(587, 1203, 275),\n    COL_VERTEX(587, 2022, 275),\n    COL_VERTEX(-136, 2022, -142),\n    COL_VERTEX(-818, 1203, 1126),\n    COL_VERTEX(-460, 2253, 4710),\n    COL_VERTEX(-2644, 2022, 2365),\n    COL_VERTEX(-2644, 2022, 1305),\n    COL_VERTEX(-2644, 1203, 1751),\n    COL_VERTEX(1618, 1203, 2007),\n    COL_VERTEX(1618, 1203, 1648),\n    COL_VERTEX(1311, 2022, 1305),\n    COL_VERTEX(1618, 1459, 1751),\n    COL_VERTEX(-802, 1357, 3813),\n    COL_VERTEX(-1043, 2022, 3813),\n    COL_VERTEX(-546, 1357, 3813),\n    COL_VERTEX(-290, 2022, 3813),\n    COL_VERTEX(-357, 2253, 4710),\n    COL_VERTEX(-460, 3046, 4710),\n    COL_VERTEX(51, 3046, 4710),\n    COL_VERTEX(51, 3046, 4608),\n    COL_VERTEX(51, 2022, 1741),\n    COL_VERTEX(51, 2022, 2458),\n    COL_VERTEX(154, 1408, 2458),\n    COL_VERTEX(-562, 2022, 3686),\n    COL_VERTEX(-562, 2022, 2355),\n    COL_VERTEX(154, 1357, 1741),\n    COL_VERTEX(154, 1203, 1741),\n    COL_VERTEX(51, 1203, 1741),\n    COL_VERTEX(51, 1526, 2458),\n    COL_VERTEX(51, 1562, 2458),\n    COL_VERTEX(587, 2022, 436),\n    COL_VERTEX(-2644, 2022, -142),\n    COL_VERTEX(1311, 2022, 693),\n    COL_VERTEX(154, 3046, 4506),\n    COL_VERTEX(256, 3046, 4506),\n    COL_VERTEX(256, 2253, 4506),\n    COL_VERTEX(-665, 3046, 4506),\n    COL_VERTEX(-562, 3046, 4506),\n    COL_VERTEX(-460, 3046, 4608),\n    COL_VERTEX(51, 2253, 3789),\n    COL_VERTEX(256, 2253, 3994),\n    COL_VERTEX(256, 3046, 4710),\n    COL_VERTEX(256, 2253, 4608),\n    COL_VERTEX(-460, 2022, 1280),\n    COL_VERTEX(-1279, 2022, 2458),\n    COL_VERTEX(1311, 2022, 2365),\n    COL_VERTEX(1618, 1920, 1956),\n    COL_VERTEX(1618, 1920, 1715),\n    COL_VERTEX(1618, 1203, 1904),\n    COL_VERTEX(587, 2022, 3234),\n    COL_VERTEX(732, 2022, 3089),\n    COL_VERTEX(732, 1203, 3089),\n    COL_VERTEX(732, 2022, 581),\n    COL_VERTEX(-2065, 1203, 581),\n    COL_VERTEX(-2065, 2022, 581),\n    COL_VERTEX(-1920, 2022, 436),\n    COL_VERTEX(-2065, 2022, 3089),\n    COL_VERTEX(-1920, 2022, 3234),\n    COL_VERTEX(-1920, 2022, 3395),\n    COL_VERTEX(-1920, 1203, 3395),\n    COL_VERTEX(-238, 2022, 3762),\n    COL_VERTEX(-1074, 1203, 1229),\n    COL_VERTEX(-921, 1203, 1229),\n    COL_VERTEX(51, 2227, 3738),\n    COL_VERTEX(51, 2202, 3738),\n    COL_VERTEX(51, 2202, 3686),\n    COL_VERTEX(51, 2176, 3686),\n    COL_VERTEX(51, 2176, 3635),\n    COL_VERTEX(51, 2150, 3635),\n    COL_VERTEX(51, 2150, 3584),\n    COL_VERTEX(51, 2125, 3584),\n    COL_VERTEX(51, 2125, 3533),\n    COL_VERTEX(51, 2099, 3533),\n    COL_VERTEX(51, 2099, 3482),\n    COL_VERTEX(51, 2074, 3482),\n    COL_VERTEX(51, 2048, 3379),\n    COL_VERTEX(51, 2022, 3379),\n    COL_VERTEX(51, 2048, 3430),\n    COL_VERTEX(51, 2074, 3430),\n    COL_VERTEX(51, 1638, 2560),\n    COL_VERTEX(51, 1613, 2560),\n    COL_VERTEX(51, 1638, 2611),\n    COL_VERTEX(51, 1664, 2611),\n    COL_VERTEX(51, 1664, 2662),\n    COL_VERTEX(51, 1715, 2765),\n    COL_VERTEX(51, 1715, 2714),\n    COL_VERTEX(51, 1690, 2714),\n    COL_VERTEX(51, 1690, 2662),\n    COL_VERTEX(51, 1766, 2867),\n    COL_VERTEX(51, 1766, 2816),\n    COL_VERTEX(51, 1741, 2816),\n    COL_VERTEX(51, 1741, 2765),\n    COL_VERTEX(51, 1792, 2867),\n    COL_VERTEX(51, 1792, 2918),\n    COL_VERTEX(51, 1818, 2918),\n    COL_VERTEX(51, 1818, 2970),\n    COL_VERTEX(51, 1843, 2970),\n    COL_VERTEX(51, 1843, 3021),\n    COL_VERTEX(51, 1869, 3021),\n    COL_VERTEX(51, 1869, 3072),\n    COL_VERTEX(51, 1894, 3072),\n    COL_VERTEX(51, 1894, 3123),\n    COL_VERTEX(51, 1920, 3123),\n    COL_VERTEX(51, 1920, 3174),\n    COL_VERTEX(51, 2022, 3328),\n    COL_VERTEX(51, 1997, 3328),\n    COL_VERTEX(51, 1997, 3277),\n    COL_VERTEX(51, 1971, 3277),\n    COL_VERTEX(51, 1946, 3174),\n    COL_VERTEX(51, 1946, 3226),\n    COL_VERTEX(51, 1971, 3226),\n    COL_VERTEX(51, 1562, 2406),\n    COL_VERTEX(51, 1536, 2406),\n    COL_VERTEX(51, 1536, 2355),\n    COL_VERTEX(51, 1510, 2355),\n    COL_VERTEX(51, 1587, 2458),\n    COL_VERTEX(51, 1587, 2509),\n    COL_VERTEX(51, 1613, 2509),\n    COL_VERTEX(51, 1510, 2304),\n    COL_VERTEX(51, 1485, 2304),\n    COL_VERTEX(51, 1485, 2253),\n    COL_VERTEX(51, 1459, 2253),\n    COL_VERTEX(51, 1459, 2202),\n    COL_VERTEX(51, 1434, 2202),\n    COL_VERTEX(51, 1434, 2150),\n    COL_VERTEX(51, 1408, 2150),\n    COL_VERTEX(51, 1408, 2099),\n    COL_VERTEX(51, 1382, 2099),\n    COL_VERTEX(51, 1382, 2048),\n    COL_VERTEX(51, 1357, 2048),\n    COL_VERTEX(51, 1331, 1946),\n    COL_VERTEX(51, 1306, 1946),\n    COL_VERTEX(51, 1331, 1997),\n    COL_VERTEX(51, 1357, 1997),\n    COL_VERTEX(51, 1280, 1843),\n    COL_VERTEX(51, 1254, 1843),\n    COL_VERTEX(51, 1280, 1894),\n    COL_VERTEX(51, 1306, 1894),\n    COL_VERTEX(51, 1254, 1792),\n    COL_VERTEX(51, 1229, 1792),\n    COL_VERTEX(51, 1229, 1741),\n    COL_VERTEX(-1381, 512, 3430),\n    COL_VERTEX(-665, 512, 3430),\n    COL_VERTEX(-1381, 512, 3021),\n    COL_VERTEX(-818, 1203, 1331),\n    COL_VERTEX(-1177, 1203, 1331),\n    COL_VERTEX(-1177, 614, 1741),\n    COL_VERTEX(-1351, 602, 1813),\n    COL_VERTEX(-767, 1024, 1741),\n    COL_VERTEX(-1279, 1007, 1843),\n    COL_VERTEX(-1177, 1126, 1741),\n    COL_VERTEX(-767, 512, 2970),\n    COL_VERTEX(-1791, 1818, 1574),\n    COL_VERTEX(-1791, 1818, 1907),\n    COL_VERTEX(-1177, 1818, 1229),\n    COL_VERTEX(-767, 1152, 1741),\n    COL_VERTEX(-1381, 1152, 1741),\n    COL_VERTEX(-1381, 1818, 1242),\n    COL_VERTEX(-767, 1152, 1229),\n    COL_VERTEX(-784, 1178, 1873),\n    COL_VERTEX(-784, 1203, 1873),\n    COL_VERTEX(-836, 1152, 1997),\n    COL_VERTEX(-917, 1126, 2103),\n    COL_VERTEX(-1023, 1101, 2184),\n    COL_VERTEX(-1146, 1075, 2235),\n    COL_VERTEX(-1279, 1050, 2253),\n    COL_VERTEX(-1412, 1024, 2235),\n    COL_VERTEX(-1412, 1050, 2235),\n    COL_VERTEX(-1535, 1024, 2184),\n    COL_VERTEX(-1535, 998, 2184),\n    COL_VERTEX(-1641, 998, 2103),\n    COL_VERTEX(-1641, 973, 2103),\n    COL_VERTEX(-1722, 947, 1997),\n    COL_VERTEX(-1722, 973, 1997),\n    COL_VERTEX(-1774, 947, 1873),\n    COL_VERTEX(-1791, 922, 1741),\n    COL_VERTEX(-1774, 870, 1608),\n    COL_VERTEX(-1774, 896, 1608),\n    COL_VERTEX(-1279, 845, 1741),\n    COL_VERTEX(-1722, 845, 1485),\n    COL_VERTEX(-1535, 794, 1297),\n    COL_VERTEX(-1412, 768, 1246),\n    COL_VERTEX(-1279, 742, 1229),\n    COL_VERTEX(-1146, 717, 1246),\n    COL_VERTEX(-1146, 742, 1246),\n    COL_VERTEX(-1023, 717, 1297),\n    COL_VERTEX(-1023, 691, 1297),\n    COL_VERTEX(-917, 691, 1379),\n    COL_VERTEX(-917, 666, 1379),\n    COL_VERTEX(-836, 666, 1485),\n    COL_VERTEX(-836, 640, 1485),\n    COL_VERTEX(-784, 640, 1608),\n    COL_VERTEX(-1279, 614, 1741),\n    COL_VERTEX(-844, 1178, 2560),\n    COL_VERTEX(-1202, 1178, 2560),\n    COL_VERTEX(-1177, 512, 2970),\n    COL_VERTEX(-1177, 512, 3021),\n    COL_VERTEX(-869, 512, 3021),\n    COL_VERTEX(-1177, 768, 2970),\n    COL_VERTEX(-1351, 626, 1668),\n    COL_VERTEX(-1381, 614, 1741),\n    COL_VERTEX(-1279, 631, 1638),\n    COL_VERTEX(-1207, 626, 1668),\n    COL_VERTEX(-1207, 614, 1668),\n    COL_VERTEX(-1279, 1818, 1229),\n    COL_TRI_INIT(SURFACE_DEFAULT, 1799),\n    COL_TRI(239, 238, 240),\n    COL_TRI(228, 229, 230),\n    COL_TRI(228, 231, 229),\n    COL_TRI(230, 229, 232),\n    COL_TRI(230, 232, 233),\n    COL_TRI(233, 232, 234),\n    COL_TRI(233, 234, 235),\n    COL_TRI(236, 237, 238),\n    COL_TRI(236, 238, 239),\n    COL_TRI(244, 1026, 1027),\n    COL_TRI(239, 240, 241),\n    COL_TRI(241, 240, 1021),\n    COL_TRI(241, 1021, 1022),\n    COL_TRI(242, 1023, 243),\n    COL_TRI(242, 1024, 1023),\n    COL_TRI(243, 1023, 1025),\n    COL_TRI(243, 1025, 244),\n    COL_TRI(244, 1025, 1026),\n    COL_TRI(245, 1028, 246),\n    COL_TRI(245, 1029, 1028),\n    COL_TRI(246, 1028, 1030),\n    COL_TRI(246, 1030, 247),\n    COL_TRI(247, 1030, 1031),\n    COL_TRI(247, 1031, 1032),\n    COL_TRI(248, 423, 1033),\n    COL_TRI(248, 1034, 423),\n    COL_TRI(248, 1033, 252),\n    COL_TRI(248, 252, 255),\n    COL_TRI(252, 1036, 251),\n    COL_TRI(250, 261, 1034),\n    COL_TRI(250, 1034, 1038),\n    COL_TRI(251, 1034, 261),\n    COL_TRI(251, 423, 1034),\n    COL_TRI(249, 1038, 1034),\n    COL_TRI(249, 1034, 248),\n    COL_TRI(251, 1036, 423),\n    COL_TRI(252, 1035, 1039),\n    COL_TRI(252, 1033, 1035),\n    COL_TRI(253, 252, 1039),\n    COL_TRI(255, 251, 1037),\n    COL_TRI(252, 251, 255),\n    COL_TRI(254, 1037, 251),\n    COL_TRI(251, 261, 259),\n    COL_TRI(251, 259, 254),\n    COL_TRI(255, 1037, 256),\n    COL_TRI(256, 1037, 1038),\n    COL_TRI(256, 1038, 249),\n    COL_TRI(248, 255, 256),\n    COL_TRI(248, 256, 249),\n    COL_TRI(254, 1038, 1037),\n    COL_TRI(250, 257, 1040),\n    COL_TRI(254, 258, 257),\n    COL_TRI(26, 1040, 257),\n    COL_TRI(254, 257, 250),\n    COL_TRI(257, 258, 29),\n    COL_TRI(257, 29, 26),\n    COL_TRI(258, 31, 29),\n    COL_TRI(26, 25, 1040),\n    COL_TRI(259, 260, 258),\n    COL_TRI(259, 258, 254),\n    COL_TRI(258, 260, 31),\n    COL_TRI(260, 25, 31),\n    COL_TRI(261, 1040, 260),\n    COL_TRI(261, 260, 259),\n    COL_TRI(260, 1040, 25),\n    COL_TRI(250, 1040, 261),\n    COL_TRI(267, 1042, 1045),\n    COL_TRI(254, 250, 1038),\n    COL_TRI(262, 1041, 263),\n    COL_TRI(262, 263, 264),\n    COL_TRI(263, 1041, 265),\n    COL_TRI(264, 263, 1042),\n    COL_TRI(263, 265, 1042),\n    COL_TRI(265, 1043, 293),\n    COL_TRI(265, 293, 1044),\n    COL_TRI(266, 264, 1042),\n    COL_TRI(267, 266, 1042),\n    COL_TRI(266, 269, 264),\n    COL_TRI(269, 262, 264),\n    COL_TRI(270, 269, 286),\n    COL_TRI(270, 1046, 269),\n    COL_TRI(267, 271, 266),\n    COL_TRI(271, 1047, 266),\n    COL_TRI(272, 266, 1047),\n    COL_TRI(273, 253, 1048),\n    COL_TRI(253, 1039, 281),\n    COL_TRI(274, 1033, 273),\n    COL_TRI(274, 1035, 1033),\n    COL_TRI(273, 1048, 424),\n    COL_TRI(275, 1039, 1035),\n    COL_TRI(275, 1049, 1039),\n    COL_TRI(279, 1056, 1057),\n    COL_TRI(276, 1050, 1051),\n    COL_TRI(276, 1051, 319),\n    COL_TRI(277, 1050, 276),\n    COL_TRI(277, 1052, 1050),\n    COL_TRI(278, 1053, 1054),\n    COL_TRI(278, 1055, 1053),\n    COL_TRI(279, 1057, 271),\n    COL_TRI(280, 1056, 279),\n    COL_TRI(280, 1058, 1056),\n    COL_TRI(281, 1058, 280),\n    COL_TRI(281, 1049, 1058),\n    COL_TRI(267, 1059, 282),\n    COL_TRI(267, 284, 1059),\n    COL_TRI(282, 1059, 1060),\n    COL_TRI(285, 1042, 265),\n    COL_TRI(282, 1060, 283),\n    COL_TRI(283, 1060, 275),\n    COL_TRI(283, 275, 274),\n    COL_TRI(284, 1045, 268),\n    COL_TRI(284, 267, 1045),\n    COL_TRI(268, 1045, 1042),\n    COL_TRI(268, 1042, 285),\n    COL_TRI(285, 265, 1044),\n    COL_TRI(272, 1047, 287),\n    COL_TRI(286, 266, 272),\n    COL_TRI(287, 1047, 271),\n    COL_TRI(287, 271, 1057),\n    COL_TRI(288, 289, 270),\n    COL_TRI(288, 270, 293),\n    COL_TRI(289, 292, 1046),\n    COL_TRI(289, 1046, 270),\n    COL_TRI(290, 291, 292),\n    COL_TRI(291, 288, 293),\n    COL_TRI(291, 293, 1043),\n    COL_TRI(292, 291, 1043),\n    COL_TRI(292, 1043, 1046),\n    COL_TRI(293, 270, 286),\n    COL_TRI(293, 286, 1044),\n    COL_TRI(286, 269, 266),\n    COL_TRI(294, 1061, 295),\n    COL_TRI(294, 1062, 1061),\n    COL_TRI(295, 1052, 277),\n    COL_TRI(295, 1061, 1052),\n    COL_TRI(299, 1065, 298),\n    COL_TRI(296, 1063, 297),\n    COL_TRI(296, 1064, 1063),\n    COL_TRI(297, 1062, 294),\n    COL_TRI(297, 1063, 1062),\n    COL_TRI(298, 1065, 1064),\n    COL_TRI(298, 1064, 296),\n    COL_TRI(302, 1069, 1068),\n    COL_TRI(299, 1066, 1065),\n    COL_TRI(300, 1067, 1066),\n    COL_TRI(300, 1066, 299),\n    COL_TRI(301, 1068, 1067),\n    COL_TRI(301, 1067, 300),\n    COL_TRI(302, 1068, 301),\n    COL_TRI(306, 1070, 303),\n    COL_TRI(303, 1070, 1069),\n    COL_TRI(303, 1069, 302),\n    COL_TRI(304, 1071, 305),\n    COL_TRI(304, 1072, 1071),\n    COL_TRI(305, 1073, 307),\n    COL_TRI(305, 1071, 1073),\n    COL_TRI(309, 281, 274),\n    COL_TRI(306, 1074, 1070),\n    COL_TRI(307, 1073, 1074),\n    COL_TRI(307, 1074, 306),\n    COL_TRI(308, 1075, 1076),\n    COL_TRI(308, 1076, 309),\n    COL_TRI(309, 1076, 281),\n    COL_TRI(313, 1079, 312),\n    COL_TRI(310, 1077, 1075),\n    COL_TRI(310, 1075, 308),\n    COL_TRI(311, 1078, 1077),\n    COL_TRI(311, 1077, 310),\n    COL_TRI(312, 1079, 1078),\n    COL_TRI(312, 1078, 311),\n    COL_TRI(316, 1084, 1083),\n    COL_TRI(313, 1080, 1079),\n    COL_TRI(314, 1081, 1080),\n    COL_TRI(314, 1080, 313),\n    COL_TRI(315, 1082, 1081),\n    COL_TRI(315, 1081, 314),\n    COL_TRI(316, 1083, 317),\n    COL_TRI(320, 1085, 1087),\n    COL_TRI(317, 1085, 320),\n    COL_TRI(317, 1083, 1085),\n    COL_TRI(318, 1086, 1084),\n    COL_TRI(318, 1084, 316),\n    COL_TRI(319, 1051, 1086),\n    COL_TRI(319, 1086, 318),\n    COL_TRI(323, 1089, 1082),\n    COL_TRI(320, 1087, 321),\n    COL_TRI(321, 1088, 322),\n    COL_TRI(321, 1087, 1088),\n    COL_TRI(322, 1089, 323),\n    COL_TRI(322, 1088, 1089),\n    COL_TRI(323, 1082, 315),\n    COL_TRI(327, 1093, 326),\n    COL_TRI(324, 1090, 1091),\n    COL_TRI(324, 1091, 337),\n    COL_TRI(325, 1090, 324),\n    COL_TRI(325, 1092, 1090),\n    COL_TRI(326, 1093, 1092),\n    COL_TRI(326, 1092, 325),\n    COL_TRI(329, 1096, 1097),\n    COL_TRI(327, 1094, 1093),\n    COL_TRI(69, 68, 1095),\n    COL_TRI(69, 1095, 328),\n    COL_TRI(328, 1096, 329),\n    COL_TRI(328, 1095, 1096),\n    COL_TRI(329, 1097, 330),\n    COL_TRI(333, 1100, 341),\n    COL_TRI(330, 1097, 1098),\n    COL_TRI(330, 1098, 332),\n    COL_TRI(331, 1099, 1094),\n    COL_TRI(331, 1094, 327),\n    COL_TRI(332, 1098, 1099),\n    COL_TRI(332, 1099, 331),\n    COL_TRI(336, 1103, 335),\n    COL_TRI(333, 1101, 1100),\n    COL_TRI(334, 1102, 1101),\n    COL_TRI(334, 1101, 333),\n    COL_TRI(335, 1103, 1102),\n    COL_TRI(335, 1102, 334),\n    COL_TRI(336, 1104, 1103),\n    COL_TRI(340, 1106, 1107),\n    COL_TRI(337, 1105, 338),\n    COL_TRI(337, 1091, 1105),\n    COL_TRI(338, 1106, 340),\n    COL_TRI(338, 1105, 1106),\n    COL_TRI(339, 1107, 1104),\n    COL_TRI(339, 1104, 336),\n    COL_TRI(343, 1109, 1110),\n    COL_TRI(340, 1107, 339),\n    COL_TRI(341, 1100, 1108),\n    COL_TRI(341, 1108, 342),\n    COL_TRI(342, 1109, 343),\n    COL_TRI(342, 1108, 1109),\n    COL_TRI(343, 1110, 344),\n    COL_TRI(347, 1113, 1114),\n    COL_TRI(344, 1111, 345),\n    COL_TRI(344, 1110, 1111),\n    COL_TRI(345, 1112, 346),\n    COL_TRI(345, 1111, 1112),\n    COL_TRI(346, 1113, 347),\n    COL_TRI(346, 1112, 1113),\n    COL_TRI(350, 1115, 349),\n    COL_TRI(347, 1114, 348),\n    COL_TRI(348, 1114, 1072),\n    COL_TRI(348, 1072, 304),\n    COL_TRI(349, 65, 64),\n    COL_TRI(349, 1115, 65),\n    COL_TRI(350, 1116, 1115),\n    COL_TRI(354, 1120, 1119),\n    COL_TRI(351, 1117, 1116),\n    COL_TRI(351, 1116, 350),\n    COL_TRI(352, 1118, 1117),\n    COL_TRI(352, 1117, 351),\n    COL_TRI(353, 1119, 1118),\n    COL_TRI(353, 1118, 352),\n    COL_TRI(357, 1124, 400),\n    COL_TRI(354, 1119, 353),\n    COL_TRI(355, 1120, 354),\n    COL_TRI(355, 1121, 1120),\n    COL_TRI(356, 1122, 1123),\n    COL_TRI(356, 1123, 357),\n    COL_TRI(357, 1123, 1124),\n    COL_TRI(361, 1128, 1127),\n    COL_TRI(358, 1125, 1122),\n    COL_TRI(358, 1122, 356),\n    COL_TRI(359, 1125, 358),\n    COL_TRI(359, 1126, 1125),\n    COL_TRI(360, 1127, 1126),\n    COL_TRI(360, 1126, 359),\n    COL_TRI(364, 1132, 1131),\n    COL_TRI(361, 1127, 360),\n    COL_TRI(362, 1128, 361),\n    COL_TRI(362, 1129, 1128),\n    COL_TRI(363, 1130, 1129),\n    COL_TRI(363, 1129, 362),\n    COL_TRI(364, 1131, 365),\n    COL_TRI(368, 1136, 369),\n    COL_TRI(365, 1133, 368),\n    COL_TRI(365, 1131, 1133),\n    COL_TRI(366, 1134, 1132),\n    COL_TRI(366, 1132, 364),\n    COL_TRI(367, 1135, 1134),\n    COL_TRI(367, 1134, 366),\n    COL_TRI(371, 1138, 1130),\n    COL_TRI(368, 1133, 1136),\n    COL_TRI(369, 1137, 370),\n    COL_TRI(369, 1136, 1137),\n    COL_TRI(370, 1137, 1138),\n    COL_TRI(370, 1138, 371),\n    COL_TRI(371, 1130, 363),\n    COL_TRI(375, 1143, 1142),\n    COL_TRI(372, 1139, 385),\n    COL_TRI(372, 1140, 1139),\n    COL_TRI(373, 1141, 374),\n    COL_TRI(373, 1142, 1141),\n    COL_TRI(374, 1140, 372),\n    COL_TRI(374, 1141, 1140),\n    COL_TRI(378, 1145, 377),\n    COL_TRI(375, 1142, 373),\n    COL_TRI(376, 1144, 1143),\n    COL_TRI(376, 1143, 375),\n    COL_TRI(377, 1144, 376),\n    COL_TRI(377, 1145, 1144),\n    COL_TRI(378, 1146, 1145),\n    COL_TRI(382, 1151, 384),\n    COL_TRI(379, 1147, 1146),\n    COL_TRI(379, 1146, 378),\n    COL_TRI(380, 1148, 1147),\n    COL_TRI(380, 1147, 379),\n    COL_TRI(381, 1149, 382),\n    COL_TRI(381, 1150, 1149),\n    COL_TRI(385, 1139, 1153),\n    COL_TRI(382, 1149, 1151),\n    COL_TRI(383, 1152, 1148),\n    COL_TRI(383, 1148, 380),\n    COL_TRI(384, 1152, 383),\n    COL_TRI(384, 1151, 1152),\n    COL_TRI(385, 1153, 386),\n    COL_TRI(389, 1157, 1155),\n    COL_TRI(386, 1153, 1154),\n    COL_TRI(386, 1154, 387),\n    COL_TRI(387, 1154, 1135),\n    COL_TRI(387, 1135, 367),\n    COL_TRI(388, 1155, 1156),\n    COL_TRI(388, 1156, 396),\n    COL_TRI(392, 1161, 1160),\n    COL_TRI(389, 1155, 388),\n    COL_TRI(390, 1158, 1157),\n    COL_TRI(390, 1157, 389),\n    COL_TRI(391, 1158, 390),\n    COL_TRI(391, 1159, 1158),\n    COL_TRI(392, 1160, 393),\n    COL_TRI(396, 1121, 355),\n    COL_TRI(393, 1162, 395),\n    COL_TRI(393, 1160, 1162),\n    COL_TRI(394, 1163, 1159),\n    COL_TRI(394, 1159, 391),\n    COL_TRI(395, 1162, 1163),\n    COL_TRI(395, 1163, 394),\n    COL_TRI(399, 1165, 397),\n    COL_TRI(396, 1156, 1121),\n    COL_TRI(397, 1164, 398),\n    COL_TRI(397, 1165, 1164),\n    COL_TRI(398, 1164, 1166),\n    COL_TRI(398, 1166, 401),\n    COL_TRI(399, 1167, 1165),\n    COL_TRI(403, 1170, 404),\n    COL_TRI(400, 1124, 1167),\n    COL_TRI(400, 1167, 399),\n    COL_TRI(401, 1168, 402),\n    COL_TRI(401, 1166, 1168),\n    COL_TRI(402, 1168, 1169),\n    COL_TRI(402, 1169, 403),\n    COL_TRI(406, 1172, 1173),\n    COL_TRI(403, 1169, 1170),\n    COL_TRI(404, 1171, 405),\n    COL_TRI(404, 1170, 1171),\n    COL_TRI(405, 1171, 1172),\n    COL_TRI(405, 1172, 406),\n    COL_TRI(406, 1173, 408),\n    COL_TRI(410, 1175, 1176),\n    COL_TRI(407, 1174, 1175),\n    COL_TRI(407, 1175, 410),\n    COL_TRI(408, 1173, 1174),\n    COL_TRI(408, 1174, 407),\n    COL_TRI(409, 1176, 1177),\n    COL_TRI(409, 1177, 411),\n    COL_TRI(413, 1179, 1150),\n    COL_TRI(410, 1176, 409),\n    COL_TRI(411, 1177, 1178),\n    COL_TRI(411, 1178, 412),\n    COL_TRI(412, 1178, 1161),\n    COL_TRI(412, 1161, 392),\n    COL_TRI(413, 1150, 381),\n    COL_TRI(417, 1184, 1183),\n    COL_TRI(414, 1180, 415),\n    COL_TRI(414, 1181, 1180),\n    COL_TRI(415, 1182, 418),\n    COL_TRI(415, 1180, 1182),\n    COL_TRI(416, 1181, 414),\n    COL_TRI(416, 1183, 1181),\n    COL_TRI(420, 1187, 421),\n    COL_TRI(417, 1183, 416),\n    COL_TRI(418, 1185, 419),\n    COL_TRI(418, 1182, 1185),\n    COL_TRI(419, 1186, 420),\n    COL_TRI(419, 1185, 1186),\n    COL_TRI(420, 1186, 1187),\n    COL_TRI(424, 1189, 425),\n    COL_TRI(421, 1188, 422),\n    COL_TRI(421, 1187, 1188),\n    COL_TRI(422, 1179, 413),\n    COL_TRI(422, 1188, 1179),\n    COL_TRI(423, 253, 273),\n    COL_TRI(423, 1036, 253),\n    COL_TRI(28, 27, 30),\n    COL_TRI(424, 1048, 1189),\n    COL_TRI(425, 1190, 426),\n    COL_TRI(425, 1189, 1190),\n    COL_TRI(426, 1184, 417),\n    COL_TRI(426, 1190, 1184),\n    COL_TRI(28, 24, 27),\n    COL_TRI(208, 166, 160),\n    COL_TRI(208, 182, 166),\n    COL_TRI(169, 160, 166),\n    COL_TRI(169, 173, 160),\n    COL_TRI(427, 428, 1191),\n    COL_TRI(427, 430, 428),\n    COL_TRI(428, 429, 1192),\n    COL_TRI(428, 1192, 1191),\n    COL_TRI(429, 1193, 1192),\n    COL_TRI(429, 1194, 1193),\n    COL_TRI(430, 1194, 429),\n    COL_TRI(430, 429, 428),\n    COL_TRI(219, 431, 1195),\n    COL_TRI(431, 433, 1195),\n    COL_TRI(432, 525, 431),\n    COL_TRI(432, 431, 527),\n    COL_TRI(433, 1196, 434),\n    COL_TRI(433, 434, 1195),\n    COL_TRI(436, 1201, 1202),\n    COL_TRI(218, 1195, 434),\n    COL_TRI(218, 219, 1195),\n    COL_TRI(434, 1196, 435),\n    COL_TRI(218, 434, 435),\n    COL_TRI(435, 1198, 1199),\n    COL_TRI(435, 1199, 218),\n    COL_TRI(435, 526, 1200),\n    COL_TRI(435, 290, 526),\n    COL_TRI(440, 1208, 437),\n    COL_TRI(436, 1202, 1203),\n    COL_TRI(438, 1204, 439),\n    COL_TRI(438, 1205, 1204),\n    COL_TRI(439, 1204, 1206),\n    COL_TRI(439, 1206, 441),\n    COL_TRI(440, 1207, 1208),\n    COL_TRI(172, 1212, 1203),\n    COL_TRI(437, 1208, 1201),\n    COL_TRI(437, 1201, 436),\n    COL_TRI(441, 1206, 1209),\n    COL_TRI(441, 1209, 1210),\n    COL_TRI(172, 1203, 1211),\n    COL_TRI(168, 172, 1211),\n    COL_TRI(444, 1217, 1218),\n    COL_TRI(438, 168, 1213),\n    COL_TRI(438, 451, 168),\n    COL_TRI(168, 1211, 1213),\n    COL_TRI(442, 1214, 1215),\n    COL_TRI(442, 1215, 447),\n    COL_TRI(443, 1216, 442),\n    COL_TRI(444, 1218, 445),\n    COL_TRI(445, 1220, 1221),\n    COL_TRI(445, 1221, 456),\n    COL_TRI(446, 443, 447),\n    COL_TRI(443, 442, 447),\n    COL_TRI(447, 1222, 444),\n    COL_TRI(444, 456, 448),\n    COL_TRI(444, 445, 456),\n    COL_TRI(448, 453, 452),\n    COL_TRI(448, 449, 444),\n    COL_TRI(448, 452, 449),\n    COL_TRI(449, 447, 444),\n    COL_TRI(449, 446, 447),\n    COL_TRI(449, 450, 446),\n    COL_TRI(450, 455, 446),\n    COL_TRI(449, 1228, 1227),\n    COL_TRI(171, 457, 1224),\n    COL_TRI(171, 1224, 1212),\n    COL_TRI(170, 457, 171),\n    COL_TRI(170, 1225, 457),\n    COL_TRI(451, 1225, 170),\n    COL_TRI(451, 1226, 1225),\n    COL_TRI(449, 1227, 450),\n    COL_TRI(452, 1228, 449),\n    COL_TRI(443, 1219, 1216),\n    COL_TRI(450, 1229, 455),\n    COL_TRI(450, 1227, 1229),\n    COL_TRI(452, 1230, 1228),\n    COL_TRI(453, 1230, 452),\n    COL_TRI(454, 1219, 443),\n    COL_TRI(446, 454, 443),\n    COL_TRI(455, 1231, 446),\n    COL_TRI(456, 1221, 1223),\n    COL_TRI(456, 1223, 448),\n    COL_TRI(448, 1233, 1232),\n    COL_TRI(448, 1232, 453),\n    COL_TRI(455, 1229, 1231),\n    COL_TRI(453, 1232, 1230),\n    COL_TRI(172, 165, 161),\n    COL_TRI(459, 472, 469),\n    COL_TRI(172, 168, 165),\n    COL_TRI(173, 169, 170),\n    COL_TRI(173, 170, 171),\n    COL_TRI(457, 1225, 1226),\n    COL_TRI(457, 1226, 1224),\n    COL_TRI(458, 459, 469),\n    COL_TRI(463, 1237, 458),\n    COL_TRI(460, 472, 1234),\n    COL_TRI(461, 471, 472),\n    COL_TRI(461, 472, 1235),\n    COL_TRI(459, 1234, 472),\n    COL_TRI(458, 469, 463),\n    COL_TRI(462, 469, 1236),\n    COL_TRI(460, 1234, 1237),\n    COL_TRI(463, 460, 1237),\n    COL_TRI(464, 475, 465),\n    COL_TRI(465, 473, 468),\n    COL_TRI(465, 475, 473),\n    COL_TRI(465, 468, 467),\n    COL_TRI(465, 467, 461),\n    COL_TRI(465, 461, 1235),\n    COL_TRI(465, 1235, 462),\n    COL_TRI(465, 462, 466),\n    COL_TRI(465, 466, 464),\n    COL_TRI(466, 1236, 1238),\n    COL_TRI(466, 1238, 464),\n    COL_TRI(462, 1236, 466),\n    COL_TRI(464, 1238, 475),\n    COL_TRI(467, 471, 461),\n    COL_TRI(467, 474, 471),\n    COL_TRI(468, 474, 467),\n    COL_TRI(468, 473, 474),\n    COL_TRI(463, 462, 1235),\n    COL_TRI(463, 1235, 460),\n    COL_TRI(469, 470, 1236),\n    COL_TRI(469, 472, 478),\n    COL_TRI(469, 478, 470),\n    COL_TRI(476, 34, 36),\n    COL_TRI(470, 480, 1238),\n    COL_TRI(470, 1238, 1236),\n    COL_TRI(471, 1239, 478),\n    COL_TRI(472, 471, 478),\n    COL_TRI(471, 474, 1239),\n    COL_TRI(473, 480, 1239),\n    COL_TRI(474, 473, 1239),\n    COL_TRI(473, 475, 480),\n    COL_TRI(475, 1238, 480),\n    COL_TRI(476, 477, 34),\n    COL_TRI(476, 39, 1240),\n    COL_TRI(477, 32, 34),\n    COL_TRI(476, 36, 39),\n    COL_TRI(477, 479, 32),\n    COL_TRI(478, 1239, 477),\n    COL_TRI(478, 477, 476),\n    COL_TRI(479, 39, 32),\n    COL_TRI(479, 1240, 39),\n    COL_TRI(480, 479, 477),\n    COL_TRI(481, 1241, 483),\n    COL_TRI(478, 1240, 470),\n    COL_TRI(478, 476, 1240),\n    COL_TRI(480, 477, 1239),\n    COL_TRI(480, 470, 1240),\n    COL_TRI(480, 1240, 479),\n    COL_TRI(481, 483, 488),\n    COL_TRI(40, 1241, 481),\n    COL_TRI(41, 482, 1241),\n    COL_TRI(40, 41, 1241),\n    COL_TRI(482, 485, 484),\n    COL_TRI(482, 484, 487),\n    COL_TRI(483, 1241, 482),\n    COL_TRI(483, 482, 487),\n    COL_TRI(41, 42, 482),\n    COL_TRI(42, 485, 482),\n    COL_TRI(485, 40, 481),\n    COL_TRI(484, 485, 481),\n    COL_TRI(484, 481, 488),\n    COL_TRI(42, 43, 485),\n    COL_TRI(485, 43, 40),\n    COL_TRI(44, 47, 46),\n    COL_TRI(44, 46, 45),\n    COL_TRI(486, 1242, 487),\n    COL_TRI(486, 487, 484),\n    COL_TRI(489, 495, 496),\n    COL_TRI(487, 1242, 1243),\n    COL_TRI(483, 487, 1243),\n    COL_TRI(484, 488, 1244),\n    COL_TRI(484, 1244, 492),\n    COL_TRI(486, 484, 492),\n    COL_TRI(483, 1243, 1245),\n    COL_TRI(488, 483, 1246),\n    COL_TRI(483, 1245, 1246),\n    COL_TRI(488, 1246, 1247),\n    COL_TRI(488, 1247, 1244),\n    COL_TRI(494, 1244, 489),\n    COL_TRI(489, 496, 490),\n    COL_TRI(490, 492, 518),\n    COL_TRI(490, 518, 491),\n    COL_TRI(491, 489, 490),\n    COL_TRI(492, 1248, 518),\n    COL_TRI(491, 494, 489),\n    COL_TRI(493, 486, 492),\n    COL_TRI(493, 492, 496),\n    COL_TRI(492, 1244, 1248),\n    COL_TRI(494, 1248, 1244),\n    COL_TRI(496, 500, 501),\n    COL_TRI(495, 1244, 1247),\n    COL_TRI(495, 1247, 497),\n    COL_TRI(496, 495, 497),\n    COL_TRI(497, 1247, 1246),\n    COL_TRI(497, 1246, 498),\n    COL_TRI(496, 497, 498),\n    COL_TRI(498, 1246, 1245),\n    COL_TRI(498, 1245, 499),\n    COL_TRI(496, 498, 499),\n    COL_TRI(499, 1245, 1243),\n    COL_TRI(499, 1243, 500),\n    COL_TRI(496, 499, 500),\n    COL_TRI(500, 1243, 1242),\n    COL_TRI(500, 1242, 501),\n    COL_TRI(501, 1242, 486),\n    COL_TRI(496, 501, 493),\n    COL_TRI(501, 486, 493),\n    COL_TRI(502, 1249, 1250),\n    COL_TRI(502, 1250, 552),\n    COL_TRI(503, 1250, 1251),\n    COL_TRI(504, 1249, 159),\n    COL_TRI(504, 529, 1249),\n    COL_TRI(507, 1255, 1256),\n    COL_TRI(503, 1251, 550),\n    COL_TRI(505, 1251, 1252),\n    COL_TRI(505, 1252, 548),\n    COL_TRI(506, 1252, 1253),\n    COL_TRI(506, 1253, 1254),\n    COL_TRI(507, 440, 1255),\n    COL_TRI(510, 155, 511),\n    COL_TRI(508, 1210, 1257),\n    COL_TRI(508, 1257, 1258),\n    COL_TRI(214, 509, 1259),\n    COL_TRI(214, 215, 509),\n    COL_TRI(509, 156, 131),\n    COL_TRI(509, 131, 520),\n    COL_TRI(511, 216, 217),\n    COL_TRI(511, 217, 1260),\n    COL_TRI(512, 1262, 513),\n    COL_TRI(513, 1262, 521),\n    COL_TRI(513, 521, 524),\n    COL_TRI(512, 1263, 1262),\n    COL_TRI(514, 1264, 512),\n    COL_TRI(515, 1265, 516),\n    COL_TRI(516, 1265, 1266),\n    COL_TRI(516, 1266, 517),\n    COL_TRI(517, 1267, 508),\n    COL_TRI(517, 508, 1268),\n    COL_TRI(515, 1261, 1265),\n    COL_TRI(518, 519, 1269),\n    COL_TRI(518, 1248, 519),\n    COL_TRI(491, 518, 1269),\n    COL_TRI(215, 1271, 1261),\n    COL_TRI(519, 1248, 494),\n    COL_TRI(519, 494, 1270),\n    COL_TRI(491, 1269, 515),\n    COL_TRI(494, 491, 515),\n    COL_TRI(494, 515, 1270),\n    COL_TRI(520, 130, 1261),\n    COL_TRI(520, 1261, 1269),\n    COL_TRI(215, 214, 1271),\n    COL_TRI(510, 85, 155),\n    COL_TRI(215, 1261, 130),\n    COL_TRI(521, 216, 82),\n    COL_TRI(521, 217, 216),\n    COL_TRI(521, 1272, 217),\n    COL_TRI(522, 521, 82),\n    COL_TRI(522, 82, 510),\n    COL_TRI(523, 458, 1237),\n    COL_TRI(523, 524, 458),\n    COL_TRI(523, 1237, 1234),\n    COL_TRI(523, 1234, 1273),\n    COL_TRI(524, 459, 458),\n    COL_TRI(524, 522, 459),\n    COL_TRI(522, 1273, 1234),\n    COL_TRI(522, 1234, 459),\n    COL_TRI(525, 432, 288),\n    COL_TRI(526, 432, 527),\n    COL_TRI(528, 1198, 1200),\n    COL_TRI(290, 525, 291),\n    COL_TRI(527, 551, 545),\n    COL_TRI(527, 1197, 551),\n    COL_TRI(526, 527, 1200),\n    COL_TRI(526, 290, 292),\n    COL_TRI(526, 292, 289),\n    COL_TRI(529, 504, 753),\n    COL_TRI(530, 504, 159),\n    COL_TRI(531, 1276, 529),\n    COL_TRI(530, 159, 158),\n    COL_TRI(530, 1277, 754),\n    COL_TRI(530, 1276, 1277),\n    COL_TRI(532, 530, 158),\n    COL_TRI(532, 1276, 530),\n    COL_TRI(533, 1278, 532),\n    COL_TRI(533, 532, 1199),\n    COL_TRI(531, 1277, 1276),\n    COL_TRI(534, 541, 1279),\n    COL_TRI(534, 1279, 1273),\n    COL_TRI(523, 1279, 1280),\n    COL_TRI(519, 1254, 1253),\n    COL_TRI(519, 549, 1254),\n    COL_TRI(535, 1281, 549),\n    COL_TRI(535, 549, 1270),\n    COL_TRI(514, 1255, 1264),\n    COL_TRI(536, 537, 533),\n    COL_TRI(533, 1199, 1198),\n    COL_TRI(533, 1198, 536),\n    COL_TRI(541, 1280, 1279),\n    COL_TRI(536, 1282, 537),\n    COL_TRI(537, 1282, 538),\n    COL_TRI(537, 538, 544),\n    COL_TRI(538, 1283, 1284),\n    COL_TRI(538, 1284, 544),\n    COL_TRI(539, 1284, 1283),\n    COL_TRI(540, 1285, 539),\n    COL_TRI(539, 1283, 540),\n    COL_TRI(540, 1280, 1285),\n    COL_TRI(541, 1285, 1280),\n    COL_TRI(523, 1280, 542),\n    COL_TRI(542, 540, 1283),\n    COL_TRI(542, 1283, 543),\n    COL_TRI(543, 538, 1282),\n    COL_TRI(543, 1282, 528),\n    COL_TRI(528, 536, 1198),\n    COL_TRI(541, 534, 1286),\n    COL_TRI(541, 1286, 1285),\n    COL_TRI(539, 1286, 1287),\n    COL_TRI(539, 1287, 1284),\n    COL_TRI(544, 1287, 1278),\n    COL_TRI(544, 1278, 537),\n    COL_TRI(545, 1274, 1275),\n    COL_TRI(545, 1275, 546),\n    COL_TRI(546, 1288, 547),\n    COL_TRI(546, 547, 535),\n    COL_TRI(552, 1274, 551),\n    COL_TRI(547, 505, 548),\n    COL_TRI(548, 1281, 547),\n    COL_TRI(548, 506, 1281),\n    COL_TRI(549, 1281, 506),\n    COL_TRI(547, 1288, 505),\n    COL_TRI(549, 506, 1254),\n    COL_TRI(550, 1275, 1274),\n    COL_TRI(550, 1274, 503),\n    COL_TRI(550, 505, 1288),\n    COL_TRI(550, 1288, 1275),\n    COL_TRI(551, 502, 552),\n    COL_TRI(552, 503, 1274),\n    COL_TRI(529, 753, 531),\n    COL_TRI(551, 1197, 502),\n    COL_TRI(219, 502, 1197),\n    COL_TRI(219, 1197, 431),\n    COL_TRI(525, 288, 291),\n    COL_TRI(432, 526, 289),\n    COL_TRI(432, 289, 288),\n    COL_TRI(50, 51, 564),\n    COL_TRI(504, 530, 754),\n    COL_TRI(504, 754, 753),\n    COL_TRI(54, 15, 9),\n    COL_TRI(54, 9, 52),\n    COL_TRI(10, 9, 1289),\n    COL_TRI(553, 52, 53),\n    COL_TRI(558, 10, 1289),\n    COL_TRI(51, 6, 1),\n    COL_TRI(51, 1, 49),\n    COL_TRI(554, 6, 5),\n    COL_TRI(555, 553, 53),\n    COL_TRI(556, 1289, 553),\n    COL_TRI(557, 556, 553),\n    COL_TRI(558, 555, 53),\n    COL_TRI(558, 53, 10),\n    COL_TRI(562, 5, 50),\n    COL_TRI(556, 1291, 1289),\n    COL_TRI(559, 558, 1289),\n    COL_TRI(559, 1289, 1291),\n    COL_TRI(560, 1292, 555),\n    COL_TRI(560, 555, 558),\n    COL_TRI(561, 558, 559),\n    COL_TRI(562, 50, 1290),\n    COL_TRI(50, 564, 1290),\n    COL_TRI(563, 564, 554),\n    COL_TRI(563, 582, 564),\n    COL_TRI(564, 582, 1290),\n    COL_TRI(562, 554, 5),\n    COL_TRI(565, 563, 554),\n    COL_TRI(562, 1290, 1296),\n    COL_TRI(562, 584, 1299),\n    COL_TRI(566, 562, 1299),\n    COL_TRI(567, 1300, 569),\n    COL_TRI(567, 569, 1301),\n    COL_TRI(568, 567, 606),\n    COL_TRI(568, 1302, 567),\n    COL_TRI(569, 1300, 1303),\n    COL_TRI(569, 1303, 570),\n    COL_TRI(569, 570, 572),\n    COL_TRI(569, 572, 1301),\n    COL_TRI(570, 1303, 571),\n    COL_TRI(570, 571, 572),\n    COL_TRI(571, 600, 1305),\n    COL_TRI(571, 1306, 600),\n    COL_TRI(572, 1304, 1301),\n    COL_TRI(572, 609, 1304),\n    COL_TRI(573, 1307, 1308),\n    COL_TRI(573, 1309, 1307),\n    COL_TRI(574, 1311, 1312),\n    COL_TRI(574, 1312, 1313),\n    COL_TRI(575, 1296, 1311),\n    COL_TRI(557, 553, 578),\n    COL_TRI(576, 557, 578),\n    COL_TRI(556, 577, 1291),\n    COL_TRI(577, 578, 1291),\n    COL_TRI(577, 576, 578),\n    COL_TRI(562, 566, 554),\n    COL_TRI(578, 559, 1291),\n    COL_TRI(578, 594, 559),\n    COL_TRI(555, 594, 578),\n    COL_TRI(555, 578, 553),\n    COL_TRI(579, 565, 554),\n    COL_TRI(579, 554, 1314),\n    COL_TRI(580, 579, 1314),\n    COL_TRI(566, 1314, 554),\n    COL_TRI(580, 1314, 582),\n    COL_TRI(581, 1314, 566),\n    COL_TRI(581, 582, 1314),\n    COL_TRI(563, 580, 582),\n    COL_TRI(582, 581, 1290),\n    COL_TRI(561, 583, 1299),\n    COL_TRI(561, 1299, 584),\n    COL_TRI(583, 561, 559),\n    COL_TRI(583, 559, 566),\n    COL_TRI(583, 566, 1299),\n    COL_TRI(584, 562, 558),\n    COL_TRI(584, 558, 561),\n    COL_TRI(558, 1293, 560),\n    COL_TRI(558, 562, 1293),\n    COL_TRI(585, 1293, 586),\n    COL_TRI(586, 1293, 1297),\n    COL_TRI(585, 560, 1293),\n    COL_TRI(562, 1297, 1293),\n    COL_TRI(585, 586, 587),\n    COL_TRI(573, 1292, 560),\n    COL_TRI(573, 560, 585),\n    COL_TRI(562, 1296, 1298),\n    COL_TRI(562, 1298, 1297),\n    COL_TRI(586, 1297, 587),\n    COL_TRI(587, 1297, 1298),\n    COL_TRI(587, 1298, 575),\n    COL_TRI(575, 1298, 1296),\n    COL_TRI(585, 587, 575),\n    COL_TRI(588, 1316, 585),\n    COL_TRI(588, 585, 575),\n    COL_TRI(589, 588, 1317),\n    COL_TRI(589, 1316, 588),\n    COL_TRI(590, 591, 1318),\n    COL_TRI(591, 589, 1317),\n    COL_TRI(591, 1317, 1318),\n    COL_TRI(590, 1318, 1319),\n    COL_TRI(592, 593, 1320),\n    COL_TRI(593, 1319, 1320),\n    COL_TRI(593, 590, 1319),\n    COL_TRI(592, 1320, 1321),\n    COL_TRI(594, 1315, 1294),\n    COL_TRI(594, 1294, 559),\n    COL_TRI(581, 1315, 594),\n    COL_TRI(559, 1294, 1295),\n    COL_TRI(559, 1295, 566),\n    COL_TRI(581, 595, 1315),\n    COL_TRI(566, 595, 581),\n    COL_TRI(566, 1295, 595),\n    COL_TRI(595, 1295, 1294),\n    COL_TRI(595, 1294, 1315),\n    COL_TRI(596, 1306, 597),\n    COL_TRI(597, 1306, 1302),\n    COL_TRI(597, 1302, 598),\n    COL_TRI(601, 606, 603),\n    COL_TRI(598, 1302, 568),\n    COL_TRI(598, 568, 599),\n    COL_TRI(596, 600, 1306),\n    COL_TRI(599, 600, 596),\n    COL_TRI(599, 568, 600),\n    COL_TRI(600, 568, 606),\n    COL_TRI(600, 606, 1305),\n    COL_TRI(601, 1322, 606),\n    COL_TRI(602, 1322, 601),\n    COL_TRI(601, 603, 581),\n    COL_TRI(603, 1290, 581),\n    COL_TRI(603, 1323, 1290),\n    COL_TRI(602, 601, 581),\n    COL_TRI(602, 581, 594),\n    COL_TRI(602, 1324, 1322),\n    COL_TRI(604, 1324, 602),\n    COL_TRI(604, 602, 594),\n    COL_TRI(604, 594, 555),\n    COL_TRI(604, 1305, 1324),\n    COL_TRI(605, 604, 555),\n    COL_TRI(607, 608, 1327),\n    COL_TRI(606, 1324, 1305),\n    COL_TRI(606, 1322, 1324),\n    COL_TRI(606, 567, 1325),\n    COL_TRI(606, 1325, 603),\n    COL_TRI(604, 1326, 571),\n    COL_TRI(604, 571, 1305),\n    COL_TRI(607, 1327, 1310),\n    COL_TRI(608, 1328, 1327),\n    COL_TRI(608, 610, 1328),\n    COL_TRI(609, 607, 1310),\n    COL_TRI(609, 1310, 1304),\n    COL_TRI(610, 611, 1329),\n    COL_TRI(611, 592, 1321),\n    COL_TRI(611, 1321, 1329),\n    COL_TRI(614, 1335, 706),\n    COL_TRI(610, 1329, 1328),\n    COL_TRI(612, 613, 1330),\n    COL_TRI(613, 1331, 1330),\n    COL_TRI(227, 1332, 1333),\n    COL_TRI(227, 222, 1332),\n    COL_TRI(614, 1334, 1335),\n    COL_TRI(619, 1342, 1340),\n    COL_TRI(615, 616, 1336),\n    COL_TRI(616, 634, 635),\n    COL_TRI(616, 635, 1336),\n    COL_TRI(615, 1336, 1337),\n    COL_TRI(617, 618, 1338),\n    COL_TRI(618, 1339, 1338),\n    COL_TRI(618, 1340, 1339),\n    COL_TRI(618, 1341, 1340),\n    COL_TRI(620, 1339, 1343),\n    COL_TRI(620, 1338, 1339),\n    COL_TRI(621, 617, 1338),\n    COL_TRI(621, 1344, 617),\n    COL_TRI(621, 1345, 1346),\n    COL_TRI(621, 1346, 1347),\n    COL_TRI(622, 623, 620),\n    COL_TRI(622, 620, 1343),\n    COL_TRI(623, 622, 1348),\n    COL_TRI(623, 1348, 1349),\n    COL_TRI(624, 1349, 1348),\n    COL_TRI(624, 625, 1349),\n    COL_TRI(625, 624, 1350),\n    COL_TRI(625, 1350, 1351),\n    COL_TRI(626, 1351, 1350),\n    COL_TRI(627, 628, 1352),\n    COL_TRI(627, 1352, 1353),\n    COL_TRI(628, 627, 1354),\n    COL_TRI(629, 1353, 1352),\n    COL_TRI(628, 1354, 689),\n    COL_TRI(630, 1356, 629),\n    COL_TRI(630, 629, 1357),\n    COL_TRI(629, 1356, 1353),\n    COL_TRI(631, 630, 1357),\n    COL_TRI(617, 1344, 1341),\n    COL_TRI(617, 1341, 618),\n    COL_TRI(637, 1366, 1367),\n    COL_TRI(632, 1360, 697),\n    COL_TRI(632, 697, 633),\n    COL_TRI(633, 1361, 632),\n    COL_TRI(634, 697, 1360),\n    COL_TRI(633, 635, 1361),\n    COL_TRI(634, 1360, 1362),\n    COL_TRI(635, 634, 1362),\n    COL_TRI(635, 1362, 1361),\n    COL_TRI(636, 1363, 1364),\n    COL_TRI(636, 1364, 1365),\n    COL_TRI(640, 1374, 642),\n    COL_TRI(637, 1367, 701),\n    COL_TRI(636, 1368, 638),\n    COL_TRI(636, 1369, 1368),\n    COL_TRI(638, 1368, 1370),\n    COL_TRI(638, 1370, 1371),\n    COL_TRI(639, 1371, 1370),\n    COL_TRI(639, 1372, 1371),\n    COL_TRI(640, 1373, 1374),\n    COL_TRI(643, 1379, 1380),\n    COL_TRI(642, 1374, 1375),\n    COL_TRI(642, 1375, 637),\n    COL_TRI(641, 1376, 1373),\n    COL_TRI(641, 1373, 640),\n    COL_TRI(641, 1372, 1377),\n    COL_TRI(641, 1377, 1378),\n    COL_TRI(647, 1386, 648),\n    COL_TRI(644, 1380, 1381),\n    COL_TRI(643, 1380, 644),\n    COL_TRI(644, 1381, 645),\n    COL_TRI(645, 1381, 1382),\n    COL_TRI(645, 1382, 1383),\n    COL_TRI(646, 647, 1384),\n    COL_TRI(646, 1384, 1385),\n    COL_TRI(647, 646, 1386),\n    COL_TRI(651, 1392, 1393),\n    COL_TRI(648, 1386, 1387),\n    COL_TRI(648, 1387, 1388),\n    COL_TRI(649, 1389, 690),\n    COL_TRI(649, 690, 1388),\n    COL_TRI(650, 1390, 1391),\n    COL_TRI(650, 1391, 643),\n    COL_TRI(651, 1393, 1394),\n    COL_TRI(652, 659, 653),\n    COL_TRI(652, 653, 654),\n    COL_TRI(653, 819, 1395),\n    COL_TRI(653, 1395, 654),\n    COL_TRI(654, 1395, 1396),\n    COL_TRI(655, 656, 1397),\n    COL_TRI(655, 660, 656),\n    COL_TRI(654, 1396, 1399),\n    COL_TRI(656, 1398, 685),\n    COL_TRI(656, 685, 1397),\n    COL_TRI(657, 1398, 656),\n    COL_TRI(658, 652, 1399),\n    COL_TRI(652, 654, 1399),\n    COL_TRI(659, 652, 660),\n    COL_TRI(656, 660, 682),\n    COL_TRI(660, 1400, 682),\n    COL_TRI(659, 660, 655),\n    COL_TRI(657, 656, 682),\n    COL_TRI(661, 1401, 1402),\n    COL_TRI(661, 1402, 1403),\n    COL_TRI(662, 663, 1404),\n    COL_TRI(662, 1404, 1405),\n    COL_TRI(663, 1406, 664),\n    COL_TRI(663, 662, 1406),\n    COL_TRI(664, 1406, 1407),\n    COL_TRI(664, 1407, 665),\n    COL_TRI(665, 1407, 1402),\n    COL_TRI(665, 1402, 1401),\n    COL_TRI(666, 670, 1408),\n    COL_TRI(666, 1408, 1409),\n    COL_TRI(670, 1414, 668),\n    COL_TRI(667, 1410, 1411),\n    COL_TRI(667, 1412, 1410),\n    COL_TRI(668, 1413, 669),\n    COL_TRI(669, 1413, 1410),\n    COL_TRI(669, 1410, 1412),\n    COL_TRI(670, 666, 1414),\n    COL_TRI(668, 1414, 1413),\n    COL_TRI(671, 1415, 1416),\n    COL_TRI(671, 1416, 1417),\n    COL_TRI(672, 673, 1418),\n    COL_TRI(673, 1419, 1418),\n    COL_TRI(674, 673, 672),\n    COL_TRI(676, 1400, 658),\n    COL_TRI(675, 1418, 681),\n    COL_TRI(675, 1420, 1418),\n    COL_TRI(658, 1418, 1419),\n    COL_TRI(676, 658, 1419),\n    COL_TRI(677, 679, 1421),\n    COL_TRI(678, 679, 1422),\n    COL_TRI(679, 1400, 676),\n    COL_TRI(679, 676, 1421),\n    COL_TRI(680, 1420, 675),\n    COL_TRI(677, 1421, 1423),\n    COL_TRI(660, 658, 1400),\n    COL_TRI(660, 652, 658),\n    COL_TRI(651, 1394, 1424),\n    COL_TRI(651, 1424, 680),\n    COL_TRI(680, 1424, 1420),\n    COL_TRI(681, 1418, 658),\n    COL_TRI(681, 658, 1399),\n    COL_TRI(678, 1422, 683),\n    COL_TRI(682, 679, 678),\n    COL_TRI(683, 1422, 1425),\n    COL_TRI(683, 1425, 684),\n    COL_TRI(684, 1425, 1416),\n    COL_TRI(684, 1416, 1415),\n    COL_TRI(685, 1398, 1395),\n    COL_TRI(685, 1395, 819),\n    COL_TRI(682, 1400, 679),\n    COL_TRI(619, 686, 1342),\n    COL_TRI(686, 619, 682),\n    COL_TRI(681, 1346, 686),\n    COL_TRI(686, 682, 678),\n    COL_TRI(686, 678, 681),\n    COL_TRI(689, 1359, 688),\n    COL_TRI(686, 1346, 1358),\n    COL_TRI(686, 1358, 631),\n    COL_TRI(631, 1358, 630),\n    COL_TRI(626, 1355, 1351),\n    COL_TRI(687, 1355, 626),\n    COL_TRI(687, 1426, 1355),\n    COL_TRI(688, 1426, 687),\n    COL_TRI(688, 1359, 1426),\n    COL_TRI(691, 1429, 692),\n    COL_TRI(689, 1354, 1359),\n    COL_TRI(681, 1347, 1346),\n    COL_TRI(681, 1399, 1347),\n    COL_TRI(690, 1427, 1428),\n    COL_TRI(690, 1428, 691),\n    COL_TRI(691, 1428, 1429),\n    COL_TRI(692, 1429, 1430),\n    COL_TRI(692, 1430, 693),\n    COL_TRI(693, 1430, 1431),\n    COL_TRI(693, 1431, 1392),\n    COL_TRI(694, 696, 697),\n    COL_TRI(695, 696, 694),\n    COL_TRI(696, 1432, 697),\n    COL_TRI(695, 1433, 696),\n    COL_TRI(697, 1432, 674),\n    COL_TRI(697, 674, 633),\n    COL_TRI(699, 1437, 1334),\n    COL_TRI(633, 674, 672),\n    COL_TRI(698, 1434, 1433),\n    COL_TRI(698, 1433, 695),\n    COL_TRI(699, 1334, 614),\n    COL_TRI(614, 1334, 1435),\n    COL_TRI(614, 1435, 1436),\n    COL_TRI(704, 1442, 1363),\n    COL_TRI(700, 1437, 699),\n    COL_TRI(700, 1438, 1437),\n    COL_TRI(701, 1438, 700),\n    COL_TRI(701, 1439, 1438),\n    COL_TRI(702, 1440, 703),\n    COL_TRI(703, 1440, 1441),\n    COL_TRI(703, 1441, 704),\n    COL_TRI(704, 1441, 1442),\n    COL_TRI(707, 1446, 708),\n    COL_TRI(702, 1443, 1440),\n    COL_TRI(671, 1443, 702),\n    COL_TRI(671, 1444, 1443),\n    COL_TRI(677, 1423, 705),\n    COL_TRI(705, 1423, 1434),\n    COL_TRI(705, 1434, 698),\n    COL_TRI(706, 1445, 707),\n    COL_TRI(707, 1445, 1446),\n    COL_TRI(710, 1450, 1451),\n    COL_TRI(708, 1446, 1447),\n    COL_TRI(708, 1447, 650),\n    COL_TRI(706, 1335, 1445),\n    COL_TRI(709, 1335, 706),\n    COL_TRI(709, 1448, 1335),\n    COL_TRI(710, 1449, 1450),\n    COL_TRI(189, 210, 212),\n    COL_TRI(711, 1452, 615),\n    COL_TRI(711, 615, 1337),\n    COL_TRI(207, 176, 204),\n    COL_TRI(206, 207, 1453),\n    COL_TRI(207, 178, 176),\n    COL_TRI(712, 178, 180),\n    COL_TRI(189, 212, 190),\n    COL_TRI(713, 712, 180),\n    COL_TRI(712, 823, 1454),\n    COL_TRI(712, 1454, 815),\n    COL_TRI(713, 180, 206),\n    COL_TRI(713, 727, 733),\n    COL_TRI(713, 734, 735),\n    COL_TRI(713, 733, 734),\n    COL_TRI(719, 187, 727),\n    COL_TRI(714, 713, 716),\n    COL_TRI(206, 1453, 716),\n    COL_TRI(713, 206, 716),\n    COL_TRI(715, 1461, 1453),\n    COL_TRI(716, 744, 719),\n    COL_TRI(716, 1462, 744),\n    COL_TRI(717, 718, 716),\n    COL_TRI(718, 714, 716),\n    COL_TRI(717, 716, 719),\n    COL_TRI(719, 211, 187),\n    COL_TRI(187, 189, 721),\n    COL_TRI(187, 721, 727),\n    COL_TRI(720, 1465, 721),\n    COL_TRI(720, 721, 722),\n    COL_TRI(721, 1465, 816),\n    COL_TRI(721, 816, 1466),\n    COL_TRI(722, 1467, 1468),\n    COL_TRI(722, 1468, 1469),\n    COL_TRI(719, 722, 211),\n    COL_TRI(722, 210, 211),\n    COL_TRI(713, 725, 727),\n    COL_TRI(724, 729, 727),\n    COL_TRI(725, 726, 727),\n    COL_TRI(726, 724, 727),\n    COL_TRI(719, 727, 1463),\n    COL_TRI(727, 729, 1463),\n    COL_TRI(727, 737, 733),\n    COL_TRI(728, 717, 719),\n    COL_TRI(719, 731, 728),\n    COL_TRI(719, 1463, 731),\n    COL_TRI(729, 730, 1463),\n    COL_TRI(730, 731, 1463),\n    COL_TRI(730, 1470, 731),\n    COL_TRI(731, 1470, 728),\n    COL_TRI(732, 777, 1471),\n    COL_TRI(732, 1471, 756),\n    COL_TRI(733, 1457, 734),\n    COL_TRI(734, 1457, 735),\n    COL_TRI(733, 1458, 1457),\n    COL_TRI(735, 769, 1472),\n    COL_TRI(735, 1459, 769),\n    COL_TRI(736, 737, 1473),\n    COL_TRI(736, 1474, 737),\n    COL_TRI(737, 1458, 733),\n    COL_TRI(738, 1473, 737),\n    COL_TRI(738, 737, 807),\n    COL_TRI(769, 736, 1473),\n    COL_TRI(769, 1473, 1472),\n    COL_TRI(745, 1476, 747),\n    COL_TRI(739, 740, 742),\n    COL_TRI(740, 1475, 742),\n    COL_TRI(741, 801, 740),\n    COL_TRI(741, 740, 739),\n    COL_TRI(742, 1475, 1476),\n    COL_TRI(742, 1476, 745),\n    COL_TRI(743, 739, 742),\n    COL_TRI(743, 742, 745),\n    COL_TRI(743, 745, 747),\n    COL_TRI(744, 743, 800),\n    COL_TRI(746, 747, 1478),\n    COL_TRI(747, 818, 1478),\n    COL_TRI(743, 747, 746),\n    COL_TRI(748, 1479, 749),\n    COL_TRI(748, 749, 1480),\n    COL_TRI(749, 1479, 1481),\n    COL_TRI(749, 1481, 752),\n    COL_TRI(750, 1480, 749),\n    COL_TRI(753, 757, 773),\n    COL_TRI(751, 748, 1480),\n    COL_TRI(751, 1480, 1482),\n    COL_TRI(750, 1460, 1480),\n    COL_TRI(752, 751, 1482),\n    COL_TRI(752, 1481, 751),\n    COL_TRI(753, 754, 757),\n    COL_TRI(756, 755, 773),\n    COL_TRI(754, 1277, 1483),\n    COL_TRI(754, 1483, 757),\n    COL_TRI(531, 773, 755),\n    COL_TRI(531, 753, 773),\n    COL_TRI(755, 1277, 531),\n    COL_TRI(755, 1483, 1277),\n    COL_TRI(757, 1483, 1471),\n    COL_TRI(758, 1487, 772),\n    COL_TRI(758, 1488, 1487),\n    COL_TRI(759, 1487, 1488),\n    COL_TRI(760, 1488, 758),\n    COL_TRI(760, 765, 1488),\n    COL_TRI(760, 758, 792),\n    COL_TRI(761, 1489, 792),\n    COL_TRI(762, 761, 1490),\n    COL_TRI(761, 792, 1490),\n    COL_TRI(760, 792, 1489),\n    COL_TRI(763, 764, 1490),\n    COL_TRI(763, 1490, 792),\n    COL_TRI(764, 1491, 1490),\n    COL_TRI(760, 766, 1492),\n    COL_TRI(765, 760, 1492),\n    COL_TRI(766, 1493, 1492),\n    COL_TRI(767, 765, 1492),\n    COL_TRI(765, 1494, 1495),\n    COL_TRI(765, 767, 1494),\n    COL_TRI(768, 759, 1496),\n    COL_TRI(768, 783, 759),\n    COL_TRI(598, 1474, 597),\n    COL_TRI(599, 769, 1459),\n    COL_TRI(599, 1459, 598),\n    COL_TRI(596, 769, 599),\n    COL_TRI(596, 736, 769),\n    COL_TRI(597, 736, 596),\n    COL_TRI(597, 1474, 736),\n    COL_TRI(757, 1471, 1484),\n    COL_TRI(598, 1459, 1474),\n    COL_TRI(770, 1497, 1468),\n    COL_TRI(770, 1468, 1467),\n    COL_TRI(771, 1498, 1469),\n    COL_TRI(772, 771, 1469),\n    COL_TRI(772, 1469, 1499),\n    COL_TRI(773, 1484, 1485),\n    COL_TRI(773, 757, 1484),\n    COL_TRI(756, 773, 1485),\n    COL_TRI(756, 1485, 1486),\n    COL_TRI(756, 1486, 732),\n    COL_TRI(732, 1500, 774),\n    COL_TRI(774, 1500, 1501),\n    COL_TRI(774, 1501, 1502),\n    COL_TRI(732, 1486, 1500),\n    COL_TRI(775, 1503, 1504),\n    COL_TRI(776, 1504, 1505),\n    COL_TRI(775, 1504, 776),\n    COL_TRI(776, 1505, 777),\n    COL_TRI(777, 1505, 1484),\n    COL_TRI(777, 1484, 1471),\n    COL_TRI(775, 778, 1503),\n    COL_TRI(775, 781, 778),\n    COL_TRI(778, 781, 780),\n    COL_TRI(778, 780, 785),\n    COL_TRI(779, 778, 785),\n    COL_TRI(780, 781, 1506),\n    COL_TRI(781, 1507, 1506),\n    COL_TRI(781, 784, 1507),\n    COL_TRI(779, 782, 1508),\n    COL_TRI(782, 1502, 1501),\n    COL_TRI(782, 1507, 1502),\n    COL_TRI(783, 1507, 782),\n    COL_TRI(779, 783, 782),\n    COL_TRI(783, 1506, 1507),\n    COL_TRI(784, 1509, 1507),\n    COL_TRI(783, 785, 1487),\n    COL_TRI(779, 785, 783),\n    COL_TRI(713, 714, 1455),\n    COL_TRI(785, 786, 1487),\n    COL_TRI(786, 717, 1510),\n    COL_TRI(786, 910, 717),\n    COL_TRI(787, 1455, 714),\n    COL_TRI(787, 714, 1511),\n    COL_TRI(788, 728, 827),\n    COL_TRI(728, 824, 827),\n    COL_TRI(788, 789, 728),\n    COL_TRI(767, 1492, 1493),\n    COL_TRI(767, 1493, 1494),\n    COL_TRI(790, 791, 788),\n    COL_TRI(791, 729, 788),\n    COL_TRI(788, 827, 790),\n    COL_TRI(789, 717, 728),\n    COL_TRI(789, 1510, 717),\n    COL_TRI(788, 729, 724),\n    COL_TRI(771, 1491, 764),\n    COL_TRI(771, 764, 1498),\n    COL_TRI(772, 1499, 763),\n    COL_TRI(792, 772, 763),\n    COL_TRI(793, 1455, 787),\n    COL_TRI(713, 1455, 1456),\n    COL_TRI(713, 1456, 725),\n    COL_TRI(794, 725, 1456),\n    COL_TRI(794, 1456, 793),\n    COL_TRI(793, 1456, 1455),\n    COL_TRI(795, 724, 726),\n    COL_TRI(788, 724, 795),\n    COL_TRI(795, 726, 796),\n    COL_TRI(796, 726, 725),\n    COL_TRI(796, 725, 794),\n    COL_TRI(797, 801, 741),\n    COL_TRI(797, 741, 1512),\n    COL_TRI(800, 799, 1477),\n    COL_TRI(741, 739, 1462),\n    COL_TRI(798, 1512, 1462),\n    COL_TRI(798, 1462, 804),\n    COL_TRI(741, 1462, 1512),\n    COL_TRI(799, 797, 1512),\n    COL_TRI(799, 1512, 1477),\n    COL_TRI(799, 1513, 797),\n    COL_TRI(797, 1513, 801),\n    COL_TRI(744, 800, 1477),\n    COL_TRI(743, 746, 800),\n    COL_TRI(800, 746, 1514),\n    COL_TRI(801, 1514, 746),\n    COL_TRI(800, 1514, 799),\n    COL_TRI(799, 1514, 1513),\n    COL_TRI(801, 1513, 1514),\n    COL_TRI(801, 817, 740),\n    COL_TRI(801, 746, 1478),\n    COL_TRI(801, 1478, 817),\n    COL_TRI(802, 822, 1516),\n    COL_TRI(802, 1516, 803),\n    COL_TRI(803, 1516, 1517),\n    COL_TRI(803, 1517, 1518),\n    COL_TRI(804, 1518, 1517),\n    COL_TRI(804, 1517, 798),\n    COL_TRI(805, 1519, 806),\n    COL_TRI(805, 806, 820),\n    COL_TRI(806, 1519, 1497),\n    COL_TRI(806, 1497, 770),\n    COL_TRI(811, 812, 810),\n    COL_TRI(807, 1520, 1521),\n    COL_TRI(807, 1521, 738),\n    COL_TRI(808, 1522, 1521),\n    COL_TRI(808, 1521, 1520),\n    COL_TRI(809, 1522, 808),\n    COL_TRI(809, 821, 1522),\n    COL_TRI(810, 1472, 811),\n    COL_TRI(811, 1523, 812),\n    COL_TRI(752, 1527, 814),\n    COL_TRI(812, 1523, 1524),\n    COL_TRI(812, 1524, 813),\n    COL_TRI(810, 735, 1472),\n    COL_TRI(813, 1524, 1525),\n    COL_TRI(813, 1525, 1526),\n    COL_TRI(752, 1482, 1527),\n    COL_TRI(816, 723, 1469),\n    COL_TRI(814, 1527, 1464),\n    COL_TRI(814, 1464, 715),\n    COL_TRI(715, 1464, 1461),\n    COL_TRI(815, 1454, 1460),\n    COL_TRI(815, 1460, 750),\n    COL_TRI(816, 1469, 1466),\n    COL_TRI(817, 685, 1515),\n    COL_TRI(723, 720, 722),\n    COL_TRI(723, 722, 1469),\n    COL_TRI(817, 1515, 740),\n    COL_TRI(655, 817, 1478),\n    COL_TRI(655, 1478, 659),\n    COL_TRI(817, 655, 685),\n    COL_TRI(821, 809, 721),\n    COL_TRI(818, 819, 659),\n    COL_TRI(818, 659, 1478),\n    COL_TRI(819, 1515, 685),\n    COL_TRI(819, 818, 1515),\n    COL_TRI(820, 744, 1477),\n    COL_TRI(820, 1477, 805),\n    COL_TRI(766, 1489, 761),\n    COL_TRI(821, 721, 1466),\n    COL_TRI(822, 1453, 1461),\n    COL_TRI(822, 802, 1453),\n    COL_TRI(823, 712, 1526),\n    COL_TRI(823, 1526, 1525),\n    COL_TRI(714, 766, 761),\n    COL_TRI(761, 762, 1511),\n    COL_TRI(714, 761, 1511),\n    COL_TRI(824, 791, 826),\n    COL_TRI(824, 826, 825),\n    COL_TRI(825, 826, 1528),\n    COL_TRI(825, 1528, 1529),\n    COL_TRI(791, 790, 829),\n    COL_TRI(791, 829, 826),\n    COL_TRI(826, 829, 933),\n    COL_TRI(826, 933, 1528),\n    COL_TRI(827, 824, 825),\n    COL_TRI(827, 825, 828),\n    COL_TRI(828, 825, 1529),\n    COL_TRI(828, 1529, 932),\n    COL_TRI(790, 827, 828),\n    COL_TRI(790, 828, 829),\n    COL_TRI(831, 1530, 1531),\n    COL_TRI(829, 828, 932),\n    COL_TRI(829, 932, 933),\n    COL_TRI(780, 1506, 768),\n    COL_TRI(780, 768, 830),\n    COL_TRI(830, 768, 1530),\n    COL_TRI(830, 1530, 831),\n    COL_TRI(834, 1534, 835),\n    COL_TRI(831, 1531, 832),\n    COL_TRI(832, 1531, 1532),\n    COL_TRI(832, 1532, 833),\n    COL_TRI(833, 1532, 1533),\n    COL_TRI(833, 1533, 834),\n    COL_TRI(834, 1533, 1534),\n    COL_TRI(835, 1534, 1535),\n    COL_TRI(835, 1535, 836),\n    COL_TRI(836, 1535, 1536),\n    COL_TRI(836, 1536, 837),\n    COL_TRI(837, 1536, 1537),\n    COL_TRI(837, 1537, 838),\n    COL_TRI(838, 1537, 1538),\n    COL_TRI(838, 1538, 839),\n    COL_TRI(839, 1538, 1539),\n    COL_TRI(839, 1539, 840),\n    COL_TRI(840, 1539, 1540),\n    COL_TRI(840, 1540, 841),\n    COL_TRI(841, 1540, 1541),\n    COL_TRI(841, 1541, 845),\n    COL_TRI(842, 1542, 1543),\n    COL_TRI(842, 1543, 870),\n    COL_TRI(843, 1544, 844),\n    COL_TRI(844, 1544, 1542),\n    COL_TRI(844, 1542, 842),\n    COL_TRI(843, 1545, 1544),\n    COL_TRI(845, 1541, 1545),\n    COL_TRI(845, 1545, 843),\n    COL_TRI(846, 1546, 1547),\n    COL_TRI(846, 1547, 885),\n    COL_TRI(847, 1548, 1546),\n    COL_TRI(847, 1546, 846),\n    COL_TRI(848, 1548, 847),\n    COL_TRI(848, 1549, 1548),\n    COL_TRI(849, 1549, 848),\n    COL_TRI(849, 1550, 1549),\n    COL_TRI(850, 1551, 1552),\n    COL_TRI(850, 1552, 851),\n    COL_TRI(851, 1552, 1553),\n    COL_TRI(851, 1553, 852),\n    COL_TRI(852, 1553, 1554),\n    COL_TRI(852, 1554, 853),\n    COL_TRI(853, 1554, 1550),\n    COL_TRI(853, 1550, 849),\n    COL_TRI(854, 1555, 1556),\n    COL_TRI(854, 1556, 855),\n    COL_TRI(855, 1556, 1557),\n    COL_TRI(855, 1557, 856),\n    COL_TRI(856, 1557, 1558),\n    COL_TRI(856, 1558, 857),\n    COL_TRI(857, 1558, 1551),\n    COL_TRI(857, 1551, 850),\n    COL_TRI(858, 1559, 1555),\n    COL_TRI(858, 1555, 854),\n    COL_TRI(859, 1560, 860),\n    COL_TRI(860, 1560, 1559),\n    COL_TRI(860, 1559, 858),\n    COL_TRI(859, 1561, 1560),\n    COL_TRI(861, 1562, 1561),\n    COL_TRI(861, 1561, 859),\n    COL_TRI(862, 1563, 1562),\n    COL_TRI(862, 1562, 861),\n    COL_TRI(863, 1564, 1563),\n    COL_TRI(863, 1563, 862),\n    COL_TRI(864, 1564, 863),\n    COL_TRI(864, 1565, 1564),\n    COL_TRI(865, 1566, 1565),\n    COL_TRI(865, 1565, 864),\n    COL_TRI(866, 1567, 1566),\n    COL_TRI(866, 1566, 865),\n    COL_TRI(867, 1568, 868),\n    COL_TRI(868, 1568, 1567),\n    COL_TRI(868, 1567, 866),\n    COL_TRI(867, 1569, 1568),\n    COL_TRI(869, 1570, 1569),\n    COL_TRI(869, 1569, 867),\n    COL_TRI(870, 1543, 1571),\n    COL_TRI(870, 1571, 871),\n    COL_TRI(871, 1571, 1572),\n    COL_TRI(871, 1572, 872),\n    COL_TRI(872, 1572, 1573),\n    COL_TRI(872, 1573, 873),\n    COL_TRI(873, 1573, 1574),\n    COL_TRI(873, 1574, 877),\n    COL_TRI(874, 1575, 1570),\n    COL_TRI(874, 1570, 869),\n    COL_TRI(875, 1576, 876),\n    COL_TRI(876, 1576, 1575),\n    COL_TRI(876, 1575, 874),\n    COL_TRI(875, 1577, 1576),\n    COL_TRI(877, 1574, 1577),\n    COL_TRI(877, 1577, 875),\n    COL_TRI(878, 1496, 1578),\n    COL_TRI(878, 1578, 879),\n    COL_TRI(879, 1579, 880),\n    COL_TRI(879, 1578, 1579),\n    COL_TRI(880, 1579, 1580),\n    COL_TRI(880, 1580, 881),\n    COL_TRI(881, 1580, 1581),\n    COL_TRI(881, 1581, 886),\n    COL_TRI(882, 1582, 1496),\n    COL_TRI(882, 1496, 878),\n    COL_TRI(883, 1582, 882),\n    COL_TRI(883, 1583, 1582),\n    COL_TRI(884, 1583, 883),\n    COL_TRI(884, 1584, 1583),\n    COL_TRI(885, 1547, 1584),\n    COL_TRI(885, 1584, 884),\n    COL_TRI(886, 1581, 1585),\n    COL_TRI(886, 1585, 887),\n    COL_TRI(887, 1586, 888),\n    COL_TRI(887, 1585, 1586),\n    COL_TRI(888, 1586, 1587),\n    COL_TRI(888, 1587, 889),\n    COL_TRI(889, 1587, 1588),\n    COL_TRI(889, 1588, 890),\n    COL_TRI(890, 1588, 1589),\n    COL_TRI(890, 1589, 891),\n    COL_TRI(891, 1589, 1590),\n    COL_TRI(891, 1590, 892),\n    COL_TRI(892, 1590, 1591),\n    COL_TRI(892, 1591, 893),\n    COL_TRI(893, 1591, 1592),\n    COL_TRI(893, 1592, 894),\n    COL_TRI(894, 1592, 1593),\n    COL_TRI(894, 1593, 895),\n    COL_TRI(895, 1594, 896),\n    COL_TRI(895, 1593, 1594),\n    COL_TRI(896, 1594, 1595),\n    COL_TRI(896, 1595, 897),\n    COL_TRI(897, 1595, 1596),\n    COL_TRI(897, 1596, 901),\n    COL_TRI(898, 1597, 1598),\n    COL_TRI(898, 1598, 905),\n    COL_TRI(899, 1599, 900),\n    COL_TRI(900, 1599, 1597),\n    COL_TRI(900, 1597, 898),\n    COL_TRI(899, 1600, 1599),\n    COL_TRI(901, 1596, 1600),\n    COL_TRI(901, 1600, 899),\n    COL_TRI(902, 1601, 1602),\n    COL_TRI(902, 1602, 908),\n    COL_TRI(903, 1601, 902),\n    COL_TRI(903, 1603, 1601),\n    COL_TRI(904, 1603, 903),\n    COL_TRI(904, 1604, 1603),\n    COL_TRI(905, 1598, 1604),\n    COL_TRI(905, 1604, 904),\n    COL_TRI(906, 1605, 1606),\n    COL_TRI(906, 1606, 907),\n    COL_TRI(910, 786, 785),\n    COL_TRI(907, 1606, 1607),\n    COL_TRI(907, 1607, 909),\n    COL_TRI(908, 1602, 1605),\n    COL_TRI(908, 1605, 906),\n    COL_TRI(909, 1607, 1494),\n    COL_TRI(909, 1494, 910),\n    COL_TRI(914, 1611, 1612),\n    COL_TRI(910, 785, 830),\n    COL_TRI(911, 1608, 1609),\n    COL_TRI(911, 1610, 1608),\n    COL_TRI(912, 913, 1611),\n    COL_TRI(913, 938, 1612),\n    COL_TRI(913, 1612, 1611),\n    COL_TRI(920, 1613, 916),\n    COL_TRI(914, 915, 1611),\n    COL_TRI(915, 912, 1611),\n    COL_TRI(916, 1004, 924),\n    COL_TRI(917, 916, 924),\n    COL_TRI(917, 920, 916),\n    COL_TRI(918, 1004, 916),\n    COL_TRI(918, 916, 919),\n    COL_TRI(919, 916, 1613),\n    COL_TRI(925, 920, 917),\n    COL_TRI(921, 1004, 918),\n    COL_TRI(921, 1614, 1004),\n    COL_TRI(922, 924, 982),\n    COL_TRI(923, 924, 922),\n    COL_TRI(923, 917, 924),\n    COL_TRI(924, 1004, 982),\n    COL_TRI(931, 929, 1619),\n    COL_TRI(926, 927, 923),\n    COL_TRI(927, 984, 923),\n    COL_TRI(927, 1618, 984),\n    COL_TRI(928, 927, 926),\n    COL_TRI(928, 1618, 927),\n    COL_TRI(926, 923, 922),\n    COL_TRI(926, 987, 928),\n    COL_TRI(926, 922, 987),\n    COL_TRI(929, 930, 1619),\n    COL_TRI(930, 1620, 1619),\n    COL_TRI(931, 990, 929),\n    COL_TRI(932, 912, 990),\n    COL_TRI(933, 990, 1621),\n    COL_TRI(933, 932, 990),\n    COL_TRI(934, 1617, 1009),\n    COL_TRI(934, 1009, 1622),\n    COL_TRI(934, 1622, 1615),\n    COL_TRI(935, 1623, 1007),\n    COL_TRI(938, 1528, 933),\n    COL_TRI(935, 1007, 1624),\n    COL_TRI(936, 1625, 1622),\n    COL_TRI(936, 1622, 1623),\n    COL_TRI(937, 914, 938),\n    COL_TRI(937, 938, 1621),\n    COL_TRI(938, 933, 1621),\n    COL_TRI(943, 1629, 942),\n    COL_TRI(939, 1626, 1627),\n    COL_TRI(939, 941, 1626),\n    COL_TRI(940, 1626, 941),\n    COL_TRI(915, 939, 1627),\n    COL_TRI(941, 943, 1628),\n    COL_TRI(941, 1628, 940),\n    COL_TRI(942, 1628, 943),\n    COL_TRI(943, 945, 1629),\n    COL_TRI(949, 1632, 948),\n    COL_TRI(944, 1629, 945),\n    COL_TRI(945, 947, 1630),\n    COL_TRI(945, 1630, 944),\n    COL_TRI(946, 1630, 947),\n    COL_TRI(947, 949, 1631),\n    COL_TRI(947, 1631, 946),\n    COL_TRI(948, 1631, 949),\n    COL_TRI(949, 950, 1632),\n    COL_TRI(952, 953, 1638),\n    COL_TRI(950, 1634, 1632),\n    COL_TRI(950, 951, 1633),\n    COL_TRI(950, 1633, 1634),\n    COL_TRI(951, 1635, 1633),\n    COL_TRI(951, 952, 1636),\n    COL_TRI(951, 1636, 1635),\n    COL_TRI(952, 1637, 1636),\n    COL_TRI(952, 1638, 1637),\n    COL_TRI(956, 957, 1642),\n    COL_TRI(953, 1640, 1638),\n    COL_TRI(953, 954, 1639),\n    COL_TRI(953, 1639, 1640),\n    COL_TRI(954, 1641, 1639),\n    COL_TRI(954, 956, 955),\n    COL_TRI(954, 955, 1641),\n    COL_TRI(955, 956, 1642),\n    COL_TRI(956, 958, 957),\n    COL_TRI(962, 1645, 964),\n    COL_TRI(957, 958, 1644),\n    COL_TRI(958, 960, 1643),\n    COL_TRI(958, 1643, 1644),\n    COL_TRI(959, 1643, 960),\n    COL_TRI(960, 1645, 1646),\n    COL_TRI(960, 1646, 959),\n    COL_TRI(961, 1646, 1645),\n    COL_TRI(962, 961, 1645),\n    COL_TRI(968, 1649, 967),\n    COL_TRI(963, 962, 964),\n    COL_TRI(964, 966, 1647),\n    COL_TRI(964, 1647, 963),\n    COL_TRI(965, 1647, 966),\n    COL_TRI(966, 1648, 965),\n    COL_TRI(966, 968, 1648),\n    COL_TRI(967, 1648, 968),\n    COL_TRI(968, 969, 1649),\n    COL_TRI(971, 972, 1655),\n    COL_TRI(969, 1651, 1649),\n    COL_TRI(969, 970, 1650),\n    COL_TRI(969, 1650, 1651),\n    COL_TRI(970, 1652, 1650),\n    COL_TRI(970, 971, 1653),\n    COL_TRI(970, 1653, 1652),\n    COL_TRI(971, 1654, 1653),\n    COL_TRI(971, 1655, 1654),\n    COL_TRI(975, 977, 978),\n    COL_TRI(972, 1656, 1655),\n    COL_TRI(973, 1656, 972),\n    COL_TRI(973, 1657, 1656),\n    COL_TRI(973, 1658, 1657),\n    COL_TRI(973, 1659, 974),\n    COL_TRI(973, 974, 1658),\n    COL_TRI(974, 1659, 920),\n    COL_TRI(975, 976, 977),\n    COL_TRI(925, 979, 1660),\n    COL_TRI(977, 976, 1660),\n    COL_TRI(978, 977, 1660),\n    COL_TRI(979, 984, 978),\n    COL_TRI(976, 980, 1661),\n    COL_TRI(976, 1661, 1660),\n    COL_TRI(976, 975, 980),\n    COL_TRI(980, 982, 1661),\n    COL_TRI(981, 1660, 1661),\n    COL_TRI(982, 981, 1661),\n    COL_TRI(981, 983, 1660),\n    COL_TRI(983, 925, 1660),\n    COL_TRI(978, 1660, 979),\n    COL_TRI(978, 984, 986),\n    COL_TRI(984, 985, 986),\n    COL_TRI(985, 1662, 1663),\n    COL_TRI(985, 1663, 1664),\n    COL_TRI(975, 978, 986),\n    COL_TRI(975, 986, 1665),\n    COL_TRI(986, 1664, 989),\n    COL_TRI(986, 985, 1664),\n    COL_TRI(987, 975, 1665),\n    COL_TRI(987, 1665, 1662),\n    COL_TRI(988, 1662, 1665),\n    COL_TRI(988, 1663, 1662),\n    COL_TRI(979, 923, 984),\n    COL_TRI(917, 923, 925),\n    COL_TRI(923, 979, 925),\n    COL_TRI(922, 982, 980),\n    COL_TRI(975, 987, 922),\n    COL_TRI(975, 922, 980),\n    COL_TRI(992, 940, 993),\n    COL_TRI(989, 988, 1665),\n    COL_TRI(989, 1665, 986),\n    COL_TRI(990, 915, 991),\n    COL_TRI(991, 915, 1627),\n    COL_TRI(991, 1627, 992),\n    COL_TRI(992, 1626, 940),\n    COL_TRI(993, 942, 994),\n    COL_TRI(993, 1628, 942),\n    COL_TRI(994, 1629, 944),\n    COL_TRI(994, 944, 995),\n    COL_TRI(995, 1630, 946),\n    COL_TRI(995, 946, 996),\n    COL_TRI(996, 1631, 948),\n    COL_TRI(996, 948, 997),\n    COL_TRI(997, 1632, 1634),\n    COL_TRI(997, 1634, 998),\n    COL_TRI(998, 1633, 1635),\n    COL_TRI(998, 1635, 999),\n    COL_TRI(999, 1636, 1637),\n    COL_TRI(999, 1637, 1000),\n    COL_TRI(1000, 1638, 1640),\n    COL_TRI(1000, 1640, 1001),\n    COL_TRI(1004, 1616, 982),\n    COL_TRI(1001, 1641, 1002),\n    COL_TRI(1001, 1639, 1641),\n    COL_TRI(1002, 955, 1642),\n    COL_TRI(1002, 1642, 1003),\n    COL_TRI(1003, 957, 1644),\n    COL_TRI(1003, 1644, 1016),\n    COL_TRI(982, 951, 1617),\n    COL_TRI(982, 1617, 981),\n    COL_TRI(1005, 1666, 1006),\n    COL_TRI(1006, 1666, 1667),\n    COL_TRI(1006, 1667, 1623),\n    COL_TRI(1007, 1667, 1614),\n    COL_TRI(1008, 1668, 1005),\n    COL_TRI(1005, 1668, 1666),\n    COL_TRI(1008, 1669, 1668),\n    COL_TRI(1009, 1613, 1670),\n    COL_TRI(1009, 1670, 1008),\n    COL_TRI(932, 1529, 912),\n    COL_TRI(1010, 1649, 1651),\n    COL_TRI(1010, 1651, 1011),\n    COL_TRI(1011, 1650, 1652),\n    COL_TRI(1011, 1652, 1012),\n    COL_TRI(1012, 1653, 1654),\n    COL_TRI(1012, 1654, 1013),\n    COL_TRI(1013, 1655, 1656),\n    COL_TRI(1013, 1656, 1014),\n    COL_TRI(1014, 1657, 1658),\n    COL_TRI(1014, 1658, 1015),\n    COL_TRI(981, 1617, 934),\n    COL_TRI(1015, 920, 1622),\n    COL_TRI(1015, 974, 920),\n    COL_TRI(1007, 1614, 921),\n    COL_TRI(919, 1613, 937),\n    COL_TRI(1016, 959, 1017),\n    COL_TRI(925, 1615, 920),\n    COL_TRI(981, 934, 983),\n    COL_TRI(983, 934, 1615),\n    COL_TRI(983, 1615, 925),\n    COL_TRI(990, 912, 915),\n    COL_TRI(1016, 1643, 959),\n    COL_TRI(1017, 961, 1018),\n    COL_TRI(1017, 1646, 961),\n    COL_TRI(1018, 962, 963),\n    COL_TRI(1018, 963, 1019),\n    COL_TRI(1019, 1647, 965),\n    COL_TRI(1019, 965, 1020),\n    COL_TRI(1020, 1648, 967),\n    COL_TRI(1020, 967, 1671),\n    COL_TRI_INIT(SURFACE_VERY_SLIPPERY, 18),\n    COL_TRI(87, 123, 122),\n    COL_TRI(73, 75, 154),\n    COL_TRI(73, 72, 75),\n    COL_TRI(85, 84, 80),\n    COL_TRI(85, 80, 155),\n    COL_TRI(80, 78, 77),\n    COL_TRI(80, 77, 155),\n    COL_TRI(87, 156, 123),\n    COL_TRI(87, 129, 156),\n    COL_TRI(158, 138, 96),\n    COL_TRI(129, 131, 156),\n    COL_TRI(157, 128, 89),\n    COL_TRI(157, 89, 126),\n    COL_TRI(158, 159, 138),\n    COL_TRI(159, 135, 138),\n    COL_TRI(135, 136, 138),\n    COL_TRI(158, 134, 133),\n    COL_TRI(158, 96, 134),\n    COL_TRI_INIT(SURFACE_INSTANT_WARP_1B, 12),\n    COL_TRI(64, 65, 63),\n    COL_TRI(56, 57, 58),\n    COL_TRI(56, 59, 57),\n    COL_TRI(58, 60, 61),\n    COL_TRI(58, 57, 60),\n    COL_TRI(62, 63, 59),\n    COL_TRI(62, 59, 56),\n    COL_TRI(66, 67, 68),\n    COL_TRI(64, 63, 62),\n    COL_TRI(61, 60, 67),\n    COL_TRI(61, 67, 66),\n    COL_TRI(66, 68, 69),\n    COL_TRI_INIT(SURFACE_WALL_MISC, 32),\n    COL_TRI(34, 33, 35),\n    COL_TRI(24, 25, 26),\n    COL_TRI(24, 26, 27),\n    COL_TRI(28, 25, 24),\n    COL_TRI(27, 26, 29),\n    COL_TRI(27, 29, 30),\n    COL_TRI(30, 29, 31),\n    COL_TRI(30, 31, 28),\n    COL_TRI(28, 31, 25),\n    COL_TRI(32, 33, 34),\n    COL_TRI(34, 35, 36),\n    COL_TRI(42, 45, 46),\n    COL_TRI(36, 35, 37),\n    COL_TRI(36, 37, 39),\n    COL_TRI(32, 38, 33),\n    COL_TRI(39, 37, 38),\n    COL_TRI(39, 38, 32),\n    COL_TRI(40, 44, 41),\n    COL_TRI(41, 45, 42),\n    COL_TRI(41, 44, 45),\n    COL_TRI(42, 46, 43),\n    COL_TRI(40, 47, 44),\n    COL_TRI(43, 46, 47),\n    COL_TRI(43, 47, 40),\n    COL_TRI(161, 171, 172),\n    COL_TRI(160, 161, 162),\n    COL_TRI(160, 162, 163),\n    COL_TRI(164, 165, 166),\n    COL_TRI(164, 167, 165),\n    COL_TRI(168, 169, 165),\n    COL_TRI(168, 170, 169),\n    COL_TRI(161, 173, 171),\n    COL_TRI_INIT(SURFACE_NO_CAM_COLLISION, 96),\n    COL_TRI(82, 83, 84),\n    COL_TRI(70, 71, 72),\n    COL_TRI(70, 72, 73),\n    COL_TRI(74, 75, 72),\n    COL_TRI(74, 72, 71),\n    COL_TRI(76, 77, 78),\n    COL_TRI(76, 79, 77),\n    COL_TRI(76, 78, 80),\n    COL_TRI(76, 80, 81),\n    COL_TRI(82, 84, 85),\n    COL_TRI(80, 84, 83),\n    COL_TRI(80, 83, 81),\n    COL_TRI(86, 122, 123),\n    COL_TRI(86, 124, 122),\n    COL_TRI(87, 122, 124),\n    COL_TRI(87, 124, 90),\n    COL_TRI(88, 125, 126),\n    COL_TRI(88, 126, 89),\n    COL_TRI(89, 128, 127),\n    COL_TRI(89, 127, 88),\n    COL_TRI(90, 91, 129),\n    COL_TRI(91, 130, 131),\n    COL_TRI(91, 131, 129),\n    COL_TRI(90, 129, 87),\n    COL_TRI(92, 132, 133),\n    COL_TRI(96, 138, 137),\n    COL_TRI(93, 92, 134),\n    COL_TRI(92, 133, 134),\n    COL_TRI(93, 134, 96),\n    COL_TRI(94, 95, 135),\n    COL_TRI(95, 136, 135),\n    COL_TRI(95, 137, 138),\n    COL_TRI(95, 138, 136),\n    COL_TRI(96, 137, 93),\n    COL_TRI(100, 97, 140),\n    COL_TRI(97, 118, 99),\n    COL_TRI(97, 99, 139),\n    COL_TRI(98, 100, 140),\n    COL_TRI(98, 141, 100),\n    COL_TRI(99, 98, 139),\n    COL_TRI(99, 141, 98),\n    COL_TRI(103, 143, 101),\n    COL_TRI(100, 118, 97),\n    COL_TRI(101, 104, 142),\n    COL_TRI(101, 119, 104),\n    COL_TRI(102, 143, 103),\n    COL_TRI(102, 103, 144),\n    COL_TRI(103, 101, 142),\n    COL_TRI(107, 106, 145),\n    COL_TRI(104, 102, 144),\n    COL_TRI(104, 119, 102),\n    COL_TRI(105, 120, 107),\n    COL_TRI(105, 107, 145),\n    COL_TRI(106, 146, 108),\n    COL_TRI(106, 108, 147),\n    COL_TRI(110, 150, 111),\n    COL_TRI(107, 146, 106),\n    COL_TRI(108, 105, 147),\n    COL_TRI(108, 120, 105),\n    COL_TRI(109, 112, 148),\n    COL_TRI(109, 121, 112),\n    COL_TRI(110, 111, 149),\n    COL_TRI(114, 152, 116),\n    COL_TRI(111, 109, 148),\n    COL_TRI(111, 150, 109),\n    COL_TRI(112, 110, 149),\n    COL_TRI(112, 121, 110),\n    COL_TRI(113, 117, 115),\n    COL_TRI(113, 115, 151),\n    COL_TRI(117, 116, 152),\n    COL_TRI(114, 116, 153),\n    COL_TRI(115, 152, 114),\n    COL_TRI(115, 114, 151),\n    COL_TRI(116, 113, 153),\n    COL_TRI(116, 117, 113),\n    COL_TRI(117, 152, 115),\n    COL_TRI(121, 109, 150),\n    COL_TRI(118, 100, 141),\n    COL_TRI(118, 141, 99),\n    COL_TRI(119, 143, 102),\n    COL_TRI(119, 101, 143),\n    COL_TRI(120, 108, 146),\n    COL_TRI(120, 146, 107),\n    COL_TRI(121, 150, 110),\n    COL_TRI(70, 154, 217),\n    COL_TRI(214, 157, 125),\n    COL_TRI(157, 126, 125),\n    COL_TRI(123, 156, 215),\n    COL_TRI(86, 123, 215),\n    COL_TRI(216, 155, 77),\n    COL_TRI(216, 77, 79),\n    COL_TRI(135, 159, 219),\n    COL_TRI(70, 73, 154),\n    COL_TRI(218, 158, 132),\n    COL_TRI(158, 133, 132),\n    COL_TRI(94, 135, 219),\n    COL_TRI_INIT(SURFACE_PAINTING_WOBBLE_BE, 2),\n    COL_TRI(186, 187, 188),\n    COL_TRI(186, 189, 187),\n    COL_TRI_INIT(SURFACE_PAINTING_WOBBLE_BF, 2),\n    COL_TRI(200, 188, 201),\n    COL_TRI(200, 186, 188),\n    COL_TRI_INIT(SURFACE_PAINTING_WOBBLE_C0, 2),\n    COL_TRI(210, 201, 211),\n    COL_TRI(210, 200, 201),\n    COL_TRI_INIT(SURFACE_PAINTING_WOBBLE_C1, 2),\n    COL_TRI(19, 50, 18),\n    COL_TRI(19, 51, 50),\n    COL_TRI_INIT(SURFACE_PAINTING_WOBBLE_C2, 2),\n    COL_TRI(7, 18, 4),\n    COL_TRI(7, 19, 18),\n    COL_TRI_INIT(SURFACE_PAINTING_WOBBLE_C3, 2),\n    COL_TRI(4, 5, 6),\n    COL_TRI(4, 6, 7),\n    COL_TRI_INIT(SURFACE_PAINTING_WOBBLE_C4, 2),\n    COL_TRI(196, 206, 197),\n    COL_TRI(196, 207, 206),\n    COL_TRI_INIT(SURFACE_PAINTING_WOBBLE_C5, 2),\n    COL_TRI(181, 196, 197),\n    COL_TRI(181, 197, 179),\n    COL_TRI_INIT(SURFACE_PAINTING_WOBBLE_C6, 2),\n    COL_TRI(178, 179, 180),\n    COL_TRI(178, 181, 179),\n    COL_TRI_INIT(SURFACE_PAINTING_WOBBLE_CD, 2),\n    COL_TRI(8, 9, 10),\n    COL_TRI(8, 10, 11),\n    COL_TRI_INIT(SURFACE_PAINTING_WOBBLE_CE, 2),\n    COL_TRI(20, 11, 21),\n    COL_TRI(20, 8, 11),\n    COL_TRI_INIT(SURFACE_PAINTING_WOBBLE_CF, 2),\n    COL_TRI(52, 20, 21),\n    COL_TRI(52, 21, 53),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_EB, 2),\n    COL_TRI(190, 191, 192),\n    COL_TRI(190, 193, 191),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_EC, 2),\n    COL_TRI(193, 202, 203),\n    COL_TRI(193, 203, 191),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_ED, 2),\n    COL_TRI(202, 212, 213),\n    COL_TRI(202, 213, 203),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_EE, 2),\n    COL_TRI(17, 48, 49),\n    COL_TRI(17, 49, 16),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_EF, 2),\n    COL_TRI(3, 16, 0),\n    COL_TRI(3, 17, 16),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_F0, 2),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_F1, 2),\n    COL_TRI(194, 204, 195),\n    COL_TRI(194, 205, 204),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_F2, 2),\n    COL_TRI(177, 194, 195),\n    COL_TRI(177, 195, 175),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_F3, 2),\n    COL_TRI(174, 175, 176),\n    COL_TRI(174, 177, 175),\n    COL_TRI_INIT(SURFACE_TTC_PAINTING_1, 2),\n    COL_TRI(182, 183, 184),\n    COL_TRI(182, 185, 183),\n    COL_TRI_INIT(SURFACE_TTC_PAINTING_2, 2),\n    COL_TRI(185, 198, 183),\n    COL_TRI(185, 199, 198),\n    COL_TRI_INIT(SURFACE_TTC_PAINTING_3, 2),\n    COL_TRI(199, 208, 209),\n    COL_TRI(199, 209, 198),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_F7, 2),\n    COL_TRI(220, 221, 222),\n    COL_TRI(220, 222, 223),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_F8, 2),\n    COL_TRI(224, 220, 223),\n    COL_TRI(224, 223, 225),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_F9, 2),\n    COL_TRI(226, 224, 225),\n    COL_TRI(226, 225, 227),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_FA, 2),\n    COL_TRI(12, 13, 14),\n    COL_TRI(12, 15, 13),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_FB, 2),\n    COL_TRI(14, 22, 23),\n    COL_TRI(14, 13, 22),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_FC, 2),\n    COL_TRI(23, 54, 55),\n    COL_TRI(23, 22, 54),\n    COL_TRI_INIT(SURFACE_WOBBLING_WARP, 2),\n    COL_TRI(38, 35, 33),\n    COL_TRI(38, 37, 35),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(4),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_0stars_door, /*pos*/ -2695, 1203,  1828, /*yaw*/  64),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_0stars_door, /*pos*/  6994, 1203,  1828, /*yaw*/  64),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_0stars_door, /*pos*/  1670, 1203,  1828, /*yaw*/ 192),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_wooden_door, /*pos*/  -997, 1203,  1178, /*yaw*/   0),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/2/geo.inc.c",
    "content": "// 0x0E001560\nconst GeoLayout castle_geo_001560[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0703E6F0),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E001578\nconst GeoLayout castle_geo_001578[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07043028),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07043B48),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07043CD8),\n        GEO_ASM(  0, geo_painting_update),\n        GEO_ASM(PAINTING_ID(8, 1), geo_painting_draw),\n        GEO_ASM(PAINTING_ID(10, 1), geo_painting_draw),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E0015B8\nconst GeoLayout castle_geo_0015B8[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0704A0E8),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_0704A2E0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0704AA98),\n        GEO_ASM(  0, geo_painting_update),\n        GEO_ASM(PAINTING_ID(12, 1), geo_painting_draw),\n        GEO_ASM(  0, geo_render_mirror_mario),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E0015F8\nconst GeoLayout castle_geo_0015F8[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0704C7D8),\n        GEO_ASM(  0, geo_painting_update),\n        GEO_ASM(PAINTING_ID(9, 1), geo_painting_draw),\n        GEO_ASM(PAINTING_ID(13, 1), geo_painting_draw),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E001628\nconst GeoLayout castle_geo_001628[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07050938),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07051678),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_070519C8),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_07051B60),\n        GEO_ASM(  0, geo_painting_update),\n        GEO_ASM(PAINTING_ID(11, 1), geo_painting_draw),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E001668\nconst GeoLayout castle_geo_001668[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_070558D0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_070572A0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07057F00),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E001690\nconst GeoLayout castle_geo_001690[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0703E6F0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07043028),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07043B48),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07043CD8),\n        GEO_ASM(  0, geo_painting_update),\n        GEO_ASM(PAINTING_ID(8, 1), geo_painting_draw),\n        GEO_ASM(PAINTING_ID(10, 1), geo_painting_draw),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E0016D8\nconst GeoLayout castle_geo_0016D8[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07043028),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07043B48),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07043CD8),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0704A0E8),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_0704A2E0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0704AA98),\n        GEO_ASM(  0, geo_painting_update),\n        GEO_ASM(PAINTING_ID(8, 1), geo_painting_draw),\n        GEO_ASM(PAINTING_ID(10, 1), geo_painting_draw),\n        GEO_ASM(PAINTING_ID(12, 1), geo_painting_draw),\n        GEO_ASM(  0, geo_render_mirror_mario),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E001740\nconst GeoLayout castle_geo_001740[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07043028),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07043B48),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07043CD8),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0704C7D8),\n        GEO_ASM(  0, geo_painting_update),\n        GEO_ASM(PAINTING_ID(8, 1), geo_painting_draw),\n        GEO_ASM(PAINTING_ID(9, 1), geo_painting_draw),\n        GEO_ASM(PAINTING_ID(10, 1), geo_painting_draw),\n        GEO_ASM(PAINTING_ID(13, 1), geo_painting_draw),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E001798\nconst GeoLayout castle_geo_001798[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07043028),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07043B48),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07043CD8),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07050938),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07051678),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_070519C8),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_07051B60),\n        GEO_ASM(  0, geo_painting_update),\n        GEO_ASM(PAINTING_ID(8, 1), geo_painting_draw),\n        GEO_ASM(PAINTING_ID(10, 1), geo_painting_draw),\n        GEO_ASM(PAINTING_ID(11, 1), geo_painting_draw),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E001800\nconst GeoLayout castle_geo_001800[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07050938),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07051678),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_070519C8),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_07051B60),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_070558D0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_070572A0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07057F00),\n        GEO_ASM(  0, geo_painting_update),\n        GEO_ASM(PAINTING_ID(11, 1), geo_painting_draw),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E001858\nconst GeoLayout castle_geo_001858[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND_COLOR(0x0001),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(64, 50, 8000, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(4, 0, 2000, 6000, 0, 0, 0, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_SWITCH_CASE(11, geo_switch_area),\n                    GEO_OPEN_NODE(),\n                        GEO_BRANCH(1, castle_geo_001560), // 0x0E001560\n                        GEO_BRANCH(1, castle_geo_001578), // 0x0E001578\n                        GEO_BRANCH(1, castle_geo_0015B8), // 0x0E0015B8\n                        GEO_BRANCH(1, castle_geo_0015F8), // 0x0E0015F8\n                        GEO_BRANCH(1, castle_geo_001628), // 0x0E001628\n                        GEO_BRANCH(1, castle_geo_001668), // 0x0E001668\n                        GEO_BRANCH(1, castle_geo_001690), // 0x0E001690\n                        GEO_BRANCH(1, castle_geo_0016D8), // 0x0E0016D8\n                        GEO_BRANCH(1, castle_geo_001740), // 0x0E001740\n                        GEO_BRANCH(1, castle_geo_001798), // 0x0E001798\n                        GEO_BRANCH(1, castle_geo_001800), // 0x0E001800\n                    GEO_CLOSE_NODE(),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(0, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/2/macro.inc.c",
    "content": "// 0x070777E0 - 0x070777EC\nconst MacroObject inside_castle_seg7_area_2_macro_objs[] = {\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_sign_on_wall,       /*yaw*/  90, /*pos*/   164,  1203,  2278, /*bhvParam*/ DIALOG_019),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/2/pendulum/geo.inc.c",
    "content": "// 0x0E001518\nconst GeoLayout castle_geo_001518[] = {\n    GEO_CULLING_RADIUS(600),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_070512F8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/2/pendulum/model.inc.c",
    "content": "// 0x07050A78 - 0x07050A90\nstatic const Lights1 inside_castle_seg7_lights_07050A78 = gdSPDefLights1(\n    0x40, 0x2f, 0x1e,\n    0xac, 0x7f, 0x52, 0x28, 0x28, 0x28\n);\n\n// 0x07050A90 - 0x07050AA8\nstatic const Lights1 inside_castle_seg7_lights_07050A90 = gdSPDefLights1(\n    0x40, 0x3a, 0x1e,\n    0xac, 0x9d, 0x52, 0x28, 0x28, 0x28\n);\n\n// 0x07050AA8 - 0x07050B68\nstatic const Vtx inside_castle_seg7_vertex_07050AA8[] = {\n    {{{    -9,   -183,     -9}, 0, {   932,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,     10,     10}, 0, {   450,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,     10,     -9}, 0, {   932,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,   -183,     10}, 0, {   450,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,     10,     -9}, 0, {   932,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    10,   -183,     -9}, 0, {   450,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    -9,   -183,     -9}, 0, {   932,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    10,     10,     -9}, 0, {   450,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    10,     10,     -9}, 0, {   450,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    10,     10,     10}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    10,   -183,     10}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    10,   -183,     -9}, 0, {   450,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07050B68 - 0x07050C58\nstatic const Vtx inside_castle_seg7_vertex_07050B68[] = {\n    {{{   -19,   -286,    -50}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -40,   -265,    -50}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -40,   -224,    -50}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -19,   -286,    -50}, 0, {     0,      0}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{    20,   -286,    -50}, 0, {     0,      0}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{    31,   -306,    -30}, 0, {     0,      0}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{    41,   -265,    -50}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    20,   -286,    -50}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -19,   -204,    -50}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    20,   -204,    -50}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    41,   -224,    -50}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -30,   -306,    -30}, 0, {     0,      0}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{   -19,   -286,    -50}, 0, {     0,      0}, {0xc3, 0xc5, 0xa3, 0xff}}},\n    {{{   -30,   -306,    -30}, 0, {     0,      0}, {0xc3, 0xc5, 0xa3, 0xff}}},\n    {{{   -60,   -275,    -30}, 0, {     0,      0}, {0xc3, 0xc5, 0xa3, 0xff}}},\n};\n\n// 0x07050C58 - 0x07050D58\nstatic const Vtx inside_castle_seg7_vertex_07050C58[] = {\n    {{{   -40,   -265,    -50}, 0, {     0,      0}, {0xc3, 0xc3, 0xa4, 0xff}}},\n    {{{   -19,   -286,    -50}, 0, {     0,      0}, {0xc3, 0xc3, 0xa4, 0xff}}},\n    {{{   -60,   -275,    -30}, 0, {     0,      0}, {0xc3, 0xc3, 0xa4, 0xff}}},\n    {{{   -40,   -224,    -50}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   -40,   -265,    -50}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   -60,   -275,    -30}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   -60,   -214,    -30}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   -19,   -204,    -50}, 0, {     0,      0}, {0xc4, 0x3f, 0xa4, 0xff}}},\n    {{{   -40,   -224,    -50}, 0, {     0,      0}, {0xc4, 0x3f, 0xa4, 0xff}}},\n    {{{   -60,   -214,    -30}, 0, {     0,      0}, {0xc4, 0x3f, 0xa4, 0xff}}},\n    {{{    20,   -204,    -50}, 0, {     0,      0}, {0x00, 0x57, 0xa5, 0xff}}},\n    {{{   -19,   -204,    -50}, 0, {     0,      0}, {0x00, 0x57, 0xa5, 0xff}}},\n    {{{   -30,   -183,    -30}, 0, {     0,      0}, {0x00, 0x57, 0xa5, 0xff}}},\n    {{{   -19,   -204,    -50}, 0, {     0,      0}, {0xc4, 0x3a, 0xa2, 0xff}}},\n    {{{   -60,   -214,    -30}, 0, {     0,      0}, {0xc4, 0x3a, 0xa2, 0xff}}},\n    {{{   -30,   -183,    -30}, 0, {     0,      0}, {0xc4, 0x3a, 0xa2, 0xff}}},\n};\n\n// 0x07050D58 - 0x07050E58\nstatic const Vtx inside_castle_seg7_vertex_07050D58[] = {\n    {{{    20,   -286,    -50}, 0, {     0,      0}, {0x3c, 0xc4, 0xa3, 0xff}}},\n    {{{    41,   -265,    -50}, 0, {     0,      0}, {0x3c, 0xc4, 0xa3, 0xff}}},\n    {{{    31,   -306,    -30}, 0, {     0,      0}, {0x3c, 0xc4, 0xa3, 0xff}}},\n    {{{    31,   -183,    -30}, 0, {     0,      0}, {0x5b, 0x58, 0x00, 0xff}}},\n    {{{    31,   -183,     31}, 0, {     0,      0}, {0x5b, 0x58, 0x00, 0xff}}},\n    {{{    61,   -214,     31}, 0, {     0,      0}, {0x5b, 0x58, 0x00, 0xff}}},\n    {{{    20,   -204,    -50}, 0, {     0,      0}, {0x00, 0x57, 0xa5, 0xff}}},\n    {{{   -30,   -183,    -30}, 0, {     0,      0}, {0x00, 0x57, 0xa5, 0xff}}},\n    {{{    31,   -183,    -30}, 0, {     0,      0}, {0x00, 0x57, 0xa5, 0xff}}},\n    {{{    41,   -224,    -50}, 0, {     0,      0}, {0x39, 0x3c, 0xa1, 0xff}}},\n    {{{    20,   -204,    -50}, 0, {     0,      0}, {0x39, 0x3c, 0xa1, 0xff}}},\n    {{{    31,   -183,    -30}, 0, {     0,      0}, {0x39, 0x3c, 0xa1, 0xff}}},\n    {{{    61,   -275,    -30}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{    41,   -265,    -50}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{    41,   -224,    -50}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{    61,   -214,    -30}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07050E58 - 0x07050F58\nstatic const Vtx inside_castle_seg7_vertex_07050E58[] = {\n    {{{    61,   -214,    -30}, 0, {     0,      0}, {0x3e, 0x3c, 0xa4, 0xff}}},\n    {{{    41,   -224,    -50}, 0, {     0,      0}, {0x3e, 0x3c, 0xa4, 0xff}}},\n    {{{    31,   -183,    -30}, 0, {     0,      0}, {0x3e, 0x3c, 0xa4, 0xff}}},\n    {{{    41,   -265,    -50}, 0, {     0,      0}, {0x3e, 0xc4, 0xa4, 0xff}}},\n    {{{    61,   -275,    -30}, 0, {     0,      0}, {0x3e, 0xc4, 0xa4, 0xff}}},\n    {{{    31,   -306,    -30}, 0, {     0,      0}, {0x3e, 0xc4, 0xa4, 0xff}}},\n    {{{   -30,   -183,    -30}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    31,   -183,     31}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    31,   -183,    -30}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    31,   -183,    -30}, 0, {     0,      0}, {0x5b, 0x58, 0x00, 0xff}}},\n    {{{    61,   -214,     31}, 0, {     0,      0}, {0x5b, 0x58, 0x00, 0xff}}},\n    {{{    61,   -214,    -30}, 0, {     0,      0}, {0x5b, 0x58, 0x00, 0xff}}},\n    {{{   -30,   -306,    -30}, 0, {     0,      0}, {0xa5, 0xa8, 0x00, 0xff}}},\n    {{{   -30,   -306,     31}, 0, {     0,      0}, {0xa5, 0xa8, 0x00, 0xff}}},\n    {{{   -60,   -275,     31}, 0, {     0,      0}, {0xa5, 0xa8, 0x00, 0xff}}},\n    {{{   -30,   -183,     31}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07050F58 - 0x07051048\nstatic const Vtx inside_castle_seg7_vertex_07050F58[] = {\n    {{{    61,   -214,    -30}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    61,   -214,     31}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    61,   -275,     31}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    61,   -275,    -30}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -60,   -214,     31}, 0, {     0,      0}, {0xa5, 0x58, 0x00, 0xff}}},\n    {{{   -30,   -183,     31}, 0, {     0,      0}, {0xa5, 0x58, 0x00, 0xff}}},\n    {{{   -30,   -183,    -30}, 0, {     0,      0}, {0xa5, 0x58, 0x00, 0xff}}},\n    {{{   -60,   -214,    -30}, 0, {     0,      0}, {0xa5, 0x58, 0x00, 0xff}}},\n    {{{   -60,   -275,    -30}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -60,   -275,     31}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -60,   -214,     31}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -60,   -214,    -30}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -30,   -306,    -30}, 0, {     0,      0}, {0xa5, 0xa8, 0x00, 0xff}}},\n    {{{   -60,   -275,     31}, 0, {     0,      0}, {0xa5, 0xa8, 0x00, 0xff}}},\n    {{{   -60,   -275,    -30}, 0, {     0,      0}, {0xa5, 0xa8, 0x00, 0xff}}},\n};\n\n// 0x07051048 - 0x07051108\nstatic const Vtx inside_castle_seg7_vertex_07051048[] = {\n    {{{    31,   -306,    -30}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -30,   -306,     31}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -30,   -306,    -30}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    31,   -306,     31}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    61,   -275,    -30}, 0, {     0,      0}, {0x5b, 0xa8, 0x00, 0xff}}},\n    {{{    31,   -306,     31}, 0, {     0,      0}, {0x5b, 0xa8, 0x00, 0xff}}},\n    {{{    31,   -306,    -30}, 0, {     0,      0}, {0x5b, 0xa8, 0x00, 0xff}}},\n    {{{    61,   -275,     31}, 0, {     0,      0}, {0x5b, 0xa8, 0x00, 0xff}}},\n    {{{    10,   -183,     -9}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    -9,   -183,     10}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    -9,   -183,     -9}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    10,   -183,     10}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07051108 - 0x07051170\nstatic const Gfx inside_castle_seg7_dl_07051108[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_07050A78.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07050A78.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07050AA8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07051170 - 0x070512F8\nstatic const Gfx inside_castle_seg7_dl_07051170[] = {\n    gsSPLight(&inside_castle_seg7_lights_07050A90.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07050A90.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07050B68, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  6,  7, 0x0,  0,  2,  8, 0x0),\n    gsSP2Triangles( 0,  8,  9, 0x0,  0,  9, 10, 0x0),\n    gsSP2Triangles( 0, 10,  6, 0x0,  3,  5, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07050C58, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07050D58, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07050E58, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0,  6, 15,  7, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07050F58, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07051048, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070512F8 - 0x07051370\nconst Gfx inside_castle_seg7_dl_070512F8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07051108),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(inside_castle_seg7_dl_07051170),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/2/room.inc.c",
    "content": "// 0x0707808C\nconst RoomData inside_castle_seg7_area_2_rooms[] = {\n     6,  6,  6,  6,  6,  6,  6,  6, // 2144-2151\n     6,  6,  6,  6,  6,  6,  6,  6, // 2152-2159\n     6,  6,  6,  6,  6,  6,  6,  6, // 2160-2167\n     6,  6,  6,  6,  6,  6,  6,  6, // 2168-2175\n     6,  6,  6,  6,  6,  6,  6,  6, // 2176-2183\n     6,  6,  6,  6,  6,  6,  6,  6, // 2184-2191\n     6,  6,  6,  6,  6,  6,  6,  6, // 2192-2199\n     6,  6,  6,  6,  6,  6,  6,  6, // 2200-2207\n     6,  6,  6,  6, 11, 11,  6,  6, // 2208-2215\n     6,  6,  6,  6,  6,  6,  6,  6, // 2216-2223\n     6,  6,  6,  6,  6,  6,  6,  6, // 2224-2231\n     6,  6,  6,  6,  6,  6,  6,  6, // 2232-2239\n     6,  6,  6,  6,  6,  6,  6,  6, // 2240-2247\n     6,  6,  6,  6,  6,  6,  6,  6, // 2248-2255\n     6,  6,  6,  6,  6,  6,  6,  6, // 2256-2263\n     6,  6,  6, 11,  6,  6, 11, 11, // 2264-2271\n     6,  6,  6,  6,  6,  6,  6,  6, // 2272-2279\n     6,  6,  6,  6,  6,  6,  6,  6, // 2280-2287\n     6,  6,  6,  6,  6,  6,  6,  6, // 2288-2295\n     6,  6,  6,  6,  6,  6,  6,  6, // 2296-2303\n     6,  6,  6,  6,  6,  6,  6,  6, // 2304-2311\n     6,  6,  6,  6,  6,  6,  6,  6, // 2312-2319\n     6,  6,  6,  6,  6,  6,  6,  6, // 2320-2327\n     6,  6,  6,  6,  6,  6,  6,  6, // 2328-2335\n     6,  6,  6,  6,  6,  6,  6,  6, // 2336-2343\n     6,  6,  6,  6,  6,  6,  6,  6, // 2344-2351\n     6,  6,  6,  6,  6,  6,  6,  6, // 2352-2359\n     6,  6,  6,  6,  6,  6,  6,  6, // 2360-2367\n     6,  6,  6,  6,  6,  6,  6,  6, // 2368-2375\n     6,  6,  6,  6,  6,  6,  6,  6, // 2376-2383\n     6,  6,  6,  6,  6,  6,  6,  6, // 2384-2391\n     6,  6,  6,  6,  6,  6,  6,  6, // 2392-2399\n     6,  6,  6,  6,  6,  6,  6,  6, // 2400-2407\n     6,  6,  6,  6,  6,  6,  6,  6, // 2408-2415\n     6,  6,  6,  6,  6,  6,  6,  6, // 2416-2423\n     6,  6,  6,  6,  6,  6,  6,  6, // 2424-2431\n     6,  6,  6,  6,  6,  6,  6,  6, // 2432-2439\n     6,  6,  6,  6,  6,  6,  6,  6, // 2440-2447\n     6,  6,  6,  6,  6,  6,  6,  6, // 2448-2455\n     6,  6,  6,  6,  6,  6,  6,  6, // 2456-2463\n     6,  6,  6,  6,  6,  6,  6,  6, // 2464-2471\n     6,  6,  6,  6,  6,  6,  6,  6, // 2472-2479\n     6,  6,  6,  6,  6,  6,  6,  6, // 2480-2487\n     6,  6,  6,  6,  6,  6,  6,  6, // 2488-2495\n     6,  6,  6,  6,  6,  6,  6,  6, // 2496-2503\n     6,  6,  6,  6,  6,  6,  6,  6, // 2504-2511\n     6,  6,  6,  6,  6,  6,  6,  6, // 2512-2519\n     6,  6,  6,  6,  6,  6,  6,  6, // 2520-2527\n     6,  6,  6,  6,  6,  6,  6,  6, // 2528-2535\n     6,  6,  6,  6,  6,  6,  6,  6, // 2536-2543\n     6,  5,  5,  5,  5,  5,  5,  5, // 2544-2551\n     5,  5,  5, 10, 10,  5,  5,  5, // 2552-2559\n     5, 11, 11,  5,  5,  5,  5,  5, // 2560-2567\n     5,  5,  5,  5,  5,  5,  5,  5, // 2568-2575\n     5,  5,  5,  5,  5,  5,  5,  5, // 2576-2583\n     5,  5,  5,  5,  5,  5,  5,  5, // 2584-2591\n     5,  5,  5,  5,  5,  5,  5,  5, // 2592-2599\n     5,  5,  5,  5,  5,  5,  5,  5, // 2600-2607\n     5,  5,  5,  5,  5,  5,  5,  5, // 2608-2615\n     5,  5,  5,  5,  5,  5,  5,  5, // 2616-2623\n     5,  5,  5,  5,  5,  5,  5,  5, // 2624-2631\n     5,  5,  5,  5,  5,  5,  5,  5, // 2632-2639\n     5,  5,  5,  5,  5,  5,  5,  5, // 2640-2647\n     5,  5,  5,  5,  5,  5,  5,  5, // 2648-2655\n     5,  5,  5,  5,  5,  5,  5,  5, // 2656-2663\n     5,  5,  5,  5,  5,  5,  5,  5, // 2664-2671\n     5,  5,  5,  5,  5,  5,  5,  5, // 2672-2679\n     5,  5,  5,  5,  5,  5,  5,  5, // 2680-2687\n     5,  5,  5,  5,  5,  5,  5,  5, // 2688-2695\n     5,  5,  5,  5,  5,  5,  5,  5, // 2696-2703\n     5,  5,  5,  5,  5,  5,  5,  5, // 2704-2711\n     5,  5,  5,  5,  5,  5,  5,  5, // 2712-2719\n     5,  5,  5,  5,  5,  5,  5,  5, // 2720-2727\n     5,  5,  5,  5,  5,  5,  5,  5, // 2728-2735\n     5,  5,  5,  5,  5,  5,  5,  5, // 2736-2743\n     5,  5,  5,  5,  5,  5,  5,  5, // 2744-2751\n     5,  5,  5,  5,  5,  5,  5,  5, // 2752-2759\n     5,  5,  5,  5,  5,  5,  5,  5, // 2760-2767\n     5,  5,  5,  5,  5,  5,  5,  5, // 2768-2775\n     5,  5,  5,  5,  5,  5,  5,  5, // 2776-2783\n     5,  5,  5,  5,  5,  5,  5,  5, // 2784-2791\n     5,  5,  5,  5,  5,  5,  5,  5, // 2792-2799\n     5,  5,  5,  5,  5,  5,  5,  5, // 2800-2807\n     5,  5,  5,  5,  5,  5,  5,  5, // 2808-2815\n     5, 11,  5,  5,  5,  5,  5,  5, // 2816-2823\n     5, 10,  5,  5,  5,  5,  5,  5, // 2824-2831\n     5, 10,  5,  5,  5,  5,  5,  5, // 2832-2839\n     5,  5,  5,  5,  5,  5,  5,  5, // 2840-2847\n     5,  5,  5,  5,  5,  5,  5,  5, // 2848-2855\n     5,  5,  5,  5,  5,  5,  5,  5, // 2856-2863\n     5,  5,  5,  5,  5,  5,  5,  5, // 2864-2871\n     5,  5,  5,  5,  5,  5,  5,  5, // 2872-2879\n     5,  5,  5,  5,  5,  5,  5,  5, // 2880-2887\n     5,  5,  5,  5,  4,  5,  5,  4, // 2888-2895\n     4,  4,  4,  4,  4,  4,  4,  4, // 2896-2903\n     4,  4,  4,  4,  4,  4,  4,  4, // 2904-2911\n     4,  4,  4,  4,  4,  4,  4,  4, // 2912-2919\n     4,  4,  4,  4,  4,  4,  4,  4, // 2920-2927\n     4,  9,  9,  4,  4,  4,  4,  4, // 2928-2935\n     4,  4,  4,  4,  4,  4,  4,  4, // 2936-2943\n     4,  4,  4,  4,  4,  4,  4,  4, // 2944-2951\n     4,  4,  4,  4,  4,  4,  4,  4, // 2952-2959\n     4,  4,  4,  4,  4,  4,  4,  4, // 2960-2967\n     4,  4,  4,  4,  4,  4,  4,  4, // 2968-2975\n     4,  4,  4,  4,  4,  4,  4,  4, // 2976-2983\n     4,  4,  4,  4,  4,  4,  4,  4, // 2984-2991\n     4,  4,  4,  4,  4,  4,  4,  4, // 2992-2999\n     4,  4,  4,  4,  4,  4,  4,  4, // 3000-3007\n     4,  9,  9,  4,  4,  4,  4,  4, // 3008-3015\n     4,  4,  4,  4,  4,  4,  4,  4, // 3016-3023\n     4,  4,  4,  4,  4,  4,  4,  4, // 3024-3031\n     4,  4,  4,  4,  4,  4,  4,  4, // 3032-3039\n     4,  4,  4,  4,  4,  4,  4,  3, // 3040-3047\n     4,  3,  3,  3,  3,  3,  3,  3, // 3048-3055\n     3,  3,  3,  3,  3,  3,  3,  3, // 3056-3063\n     3,  3,  3,  3,  3,  3,  3,  3, // 3064-3071\n     3,  3,  3,  3,  3,  3,  3,  3, // 3072-3079\n     3,  3,  3,  3,  3,  3,  3,  8, // 3080-3087\n     8,  3,  3,  3,  3,  3,  3,  3, // 3088-3095\n     3,  3,  3,  3,  3,  3,  3,  3, // 3096-3103\n     3,  3,  3,  3,  3,  3,  3,  3, // 3104-3111\n     3,  3,  3,  3,  3,  3,  3,  3, // 3112-3119\n     3,  3,  3,  3,  3,  3,  3,  3, // 3120-3127\n     3,  3,  3,  3,  3,  3,  3,  3, // 3128-3135\n     3,  3,  3,  3,  3,  3,  3,  3, // 3136-3143\n     3,  3,  3,  3,  3,  3,  3,  3, // 3144-3151\n     3,  3,  3,  3,  3,  3,  3,  3, // 3152-3159\n     3,  3,  3,  3,  3,  3,  3,  3, // 3160-3167\n     3,  3,  3,  3,  3,  3,  3,  3, // 3168-3175\n     3,  3,  3,  3,  3,  3,  3,  3, // 3176-3183\n     3,  3,  3,  3,  3,  3,  3,  3, // 3184-3191\n     3,  3,  3,  3,  3,  3,  3,  3, // 3192-3199\n     8,  8,  3,  3,  3,  3,  3,  3, // 3200-3207\n     3,  3,  3,  3,  3,  3,  3,  3, // 3208-3215\n     3,  3,  3,  3,  3,  3,  3,  3, // 3216-3223\n     3,  3,  3,  3,  3,  3,  3,  3, // 3224-3231\n     3,  3,  3,  3,  3,  3,  3,  3, // 3232-3239\n     3,  3,  3,  3,  3,  3,  3,  3, // 3240-3247\n     3,  3,  3,  3,  3,  3,  3,  3, // 3248-3255\n     3,  3,  3,  3,  3,  3,  3,  3, // 3256-3263\n     3,  3,  2,  3,  3,  2,  2,  2, // 3264-3271\n     2,  2,  2,  2,  2,  2,  2,  2, // 3272-3279\n     2,  2,  2,  2,  2,  2,  2,  2, // 3280-3287\n     2,  2,  2,  2,  2,  2,  2,  2, // 3288-3295\n     2,  2,  2,  2,  2,  2,  2,  2, // 3296-3303\n     2,  2,  2,  2,  2,  2,  2,  2, // 3304-3311\n     2,  7,  7,  2, 10, 10,  9,  2, // 3312-3319\n     9,  2,  2,  2,  2,  2,  2,  2, // 3320-3327\n     2,  2,  2,  2,  2,  2,  2,  8, // 3328-3335\n     8,  2,  2,  2,  2,  2,  2,  2, // 3336-3343\n     2,  2,  2,  2,  2,  2,  2,  2, // 3344-3351\n     2,  2,  2,  2,  2,  2,  2,  2, // 3352-3359\n     2, 10, 10,  2,  2,  2,  2,  2, // 3360-3367\n     2,  2,  2,  2,  2,  2,  2,  2, // 3368-3375\n     2,  2,  2,  2,  2,  2,  2,  2, // 3376-3383\n     2,  9,  2,  2,  2,  2,  2,  2, // 3384-3391\n     2,  9,  2,  2,  2,  2,  2,  2, // 3392-3399\n     2,  2,  2,  2,  2,  2,  2,  2, // 3400-3407\n     2,  2,  2,  2,  2,  2,  2,  2, // 3408-3415\n     2,  2,  2,  2,  2,  2,  2,  2, // 3416-3423\n     2,  2,  2,  2,  2,  2,  2,  2, // 3424-3431\n     2,  2,  2,  2,  2,  2,  2,  2, // 3432-3439\n     2,  2,  2,  2,  2,  2,  2,  2, // 3440-3447\n     2,  2,  2,  2,  2,  2,  2,  2, // 3448-3455\n     2,  2,  2,  2,  2,  2,  2,  2, // 3456-3463\n     2,  2,  2,  2,  2,  2,  2,  2, // 3464-3471\n     2,  2,  2,  2,  2,  2,  2,  2, // 3472-3479\n     2,  2,  2,  2,  2,  2,  2,  2, // 3480-3487\n     2,  2,  2,  2,  2,  2,  2,  2, // 3488-3495\n     2,  2,  2,  2,  2,  2,  2,  2, // 3496-3503\n     2,  2,  2,  2,  2,  2,  2,  2, // 3504-3511\n     2,  2,  2,  2,  2,  2,  2,  2, // 3512-3519\n     2,  2,  2,  2,  2,  2,  2,  8, // 3520-3527\n     8,  2,  2,  2,  2,  2,  2,  2, // 3528-3535\n     2,  2,  2,  2,  7,  7,  7,  7, // 3536-3543\n     2,  2,  1,  1,  2,  2,  1,  1, // 3544-3551\n     2,  2,  2,  1,  1,  2,  2,  2, // 3552-3559\n     2,  2,  2,  2,  2,  2,  2,  2, // 3560-3567\n     2,  2,  2,  2,  2,  2,  2,  2, // 3568-3575\n     2,  2,  2,  2,  2,  2,  2,  2, // 3576-3583\n     2,  2,  2,  2,  2,  2,  2,  2, // 3584-3591\n     2,  2,  2,  2,  2,  2,  2,  2, // 3592-3599\n     2,  2,  2,  2,  2,  2,  2,  2, // 3600-3607\n     2,  2,  2,  2,  2,  2,  2,  2, // 3608-3615\n     2,  2,  2,  2,  2,  2,  2,  2, // 3616-3623\n     2,  2,  2,  2,  2,  2,  2,  2, // 3624-3631\n     2,  2,  2,  2,  2,  2,  2,  2, // 3632-3639\n     2,  2,  2,  2,  2,  2,  2,  2, // 3640-3647\n     2,  2,  2,  2,  2,  2,  2,  2, // 3648-3655\n     2,  2,  2,  2,  2,  2,  2,  2, // 3656-3663\n     2,  2,  2,  2,  2,  2,  2,  2, // 3664-3671\n     2,  2,  2,  2,  2,  2,  2,  2, // 3672-3679\n     2,  2,  2,  2,  2,  2,  2,  2, // 3680-3687\n     2,  2,  2,  2,  2,  2,  2,  2, // 3688-3695\n     2,  2,  2,  2,  2,  2,  2,  2, // 3696-3703\n     2,  2,  2,  2,  2,  2,  2,  2, // 3704-3711\n     2,  2,  2,  2,  2,  2,  2,  1, // 3712-3719\n     2,  1,  1,  1,  7,  7,  1,  1, // 3720-3727\n     1,  1,  1,  1,  1,  1,  1,  1, // 3728-3735\n     1,  1,  1,  1,  1,  1,  1,  1, // 3736-3743\n     1,  1,  1,  1,  1,  1,  1,  1, // 3744-3751\n     1,  1,  1,  1,  1,  1,  1,  1, // 3752-3759\n     1,  1,  1,  1,  1,  1,  1,  1, // 3760-3767\n     1,  1,  1,  1,  1,  1,  1,  1, // 3768-3775\n     1,  1,  1,  1,  1,  1,  1,  1, // 3776-3783\n     1,  1,  1,  1,  1,  1,  1,  1, // 3784-3791\n     1,  1,  1,  1,  1,  1,  1,  1, // 3792-3799\n     1,  1,  1,  1,  1,  1,  1,  1, // 3800-3807\n     1,  1,  1,  1,  1,  1,  1,  1, // 3808-3815\n     1,  1,  1,  1,  1,  1,  1,  1, // 3816-3823\n     1,  1,  1,  1,  1,  1,  1,  1, // 3824-3831\n     1,  1,  1,  1,  1,  1,  1,  1, // 3832-3839\n     1,  1,  1,  1,  1,  1,  1,  1, // 3840-3847\n     1,  1,  1,  1,  1,  1,  1,  1, // 3848-3855\n     1,  1,  1,  1,  1,  1,  1,  1, // 3856-3863\n     1,  1,  1,  1,  1,  1,  1,  1, // 3864-3871\n     1,  1,  1,  1,  1,  1,  1,  1, // 3872-3879\n     1,  1,  1,  1,  1,  1,  1,  1, // 3880-3887\n     1,  1,  1,  1,  1,  1,  1,  1, // 3888-3895\n     1,  1,  1,  1,  1,  1,  1,  1, // 3896-3903\n     1,  1,  1,  1,  1,  1,  1,  1, // 3904-3911\n     1,  1,  1,  1,  1,  1,  1,  1, // 3912-3919\n     1,  1,  1,  1,  1,  1,  1,  1, // 3920-3927\n     1,  1,  1,  1,  1,  1,  1,  1, // 3928-3935\n     1,  1,  1,  1,  1,  1,  1,  5, // 3936-3943\n     5,  5,  5,  5,  5,  5,  5,  5, // 3944-3951\n     5,  5,  5,  5,  5,  5,  5,  5, // 3952-3959\n     5,  6,  6,  6,  6,  6,  6,  6, // 3960-3967\n     6,  6,  6,  6,  6,  5,  6,  6, // 3968-3975\n     6,  6,  6,  6,  6,  6,  5,  5, // 3976-3983\n     5,  5,  5,  5,  5,  5,  5,  5, // 3984-3991\n     5,  5,  5,  5,  5,  5,  5,  5, // 3992-3999\n     5,  5,  5,  5,  5,  5,  5,  5, // 4000-4007\n     5,  5,  5,  5,  5,  5,  5,  5, // 4008-4015\n     5,  5,  5,  5,  5,  5,  5,  5, // 4016-4023\n     5,  5,  5,  5,  5,  5,  5,  5, // 4024-4031\n     5,  5,  5,  5,  5,  5,  5,  3, // 4032-4039\n     3,  3,  3,  3,  3,  3,  3,  3, // 4040-4047\n     3,  3,  3,  3,  3,  3,  3,  3, // 4048-4055\n     3,  3,  3,  3,  3,  3,  3,  3, // 4056-4063\n     3,  3,  3,  3,  3,  3,  3,  3, // 4064-4071\n     3,  3,  3,  3,  3,  3,  3,  3, // 4072-4079\n     3,  3,  3,  3,  3,  3,  3,  3, // 4080-4087\n     3,  5,  5,  5,  5,  5,  5,  5, // 4088-4095\n     5,  5,  5,  5,  5,  2,  2,  2, // 4096-4103\n     2,  2,  2,  4,  4,  4,  4,  4, // 4104-4111\n     4,  2,  2,  2,  2,  2,  2,  4, // 4112-4119\n     4,  4,  4,  4,  4,  2,  2,  2, // 4120-4127\n     2,  2,  2,  4,  4,  4,  4,  4, // 4128-4135\n     4,  2,  2,  2,  2,  2,  2,  5, // 4136-4143\n     5,  5,  5,  5,  5,  3,  3,  3, // 4144-4151\n     3,  3,  3,  4,  4,  4,  4,  4, // 4152-4159\n     4,  5,  5, // 4160-4162\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/3/1/model.inc.c",
    "content": "// 0x07059200 - 0x07059218\nstatic const Lights1 inside_castle_seg7_lights_07059200 = gdSPDefLights1(\n    0x33, 0x33, 0x33,\n    0x88, 0x88, 0x88, 0x28, 0x28, 0x28\n);\n\n// 0x07059218 - 0x07059230\nstatic const Lights1 inside_castle_seg7_lights_07059218 = gdSPDefLights1(\n    0x39, 0x39, 0x39,\n    0x99, 0x99, 0x99, 0x28, 0x28, 0x28\n);\n\n// 0x07059230 - 0x07059248\nstatic const Lights1 inside_castle_seg7_lights_07059230 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xaa, 0xaa, 0xaa, 0x28, 0x28, 0x28\n);\n\n// 0x07059248 - 0x07059260\nstatic const Lights1 inside_castle_seg7_lights_07059248 = gdSPDefLights1(\n    0x46, 0x46, 0x46,\n    0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28\n);\n\n// 0x07059260 - 0x07059278\nstatic const Lights1 inside_castle_seg7_lights_07059260 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0xcc, 0xcc, 0xcc, 0x28, 0x28, 0x28\n);\n\n// 0x07059278 - 0x07059290\nstatic const Lights1 inside_castle_seg7_lights_07059278 = gdSPDefLights1(\n    0x52, 0x52, 0x52,\n    0xdd, 0xdd, 0xdd, 0x28, 0x28, 0x28\n);\n\n// 0x07059290 - 0x070592A8\nstatic const Lights1 inside_castle_seg7_lights_07059290 = gdSPDefLights1(\n    0x59, 0x59, 0x59,\n    0xee, 0xee, 0xee, 0x28, 0x28, 0x28\n);\n\n// 0x070592A8 - 0x070592C0\nstatic const Lights1 inside_castle_seg7_lights_070592A8 = gdSPDefLights1(\n    0x5f, 0x5f, 0x5f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x070592C0 - 0x07059340\nstatic const Vtx inside_castle_seg7_vertex_070592C0[] = {\n    {{{ -3173,  -1279,   1485}, 0, { -6928,  -4120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3020,  -1279,   1434}, 0, { -6162,  -4376}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3173,  -1279,   1434}, 0, { -6928,  -4376}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3020,  -1279,   1485}, 0, { -6162,  -4120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2815,  -1279,   1997}, 0, { -5140,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2815,  -1279,   1485}, 0, { -5140,  -4120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3378,  -1279,   1485}, 0, { -7950,  -4120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3364,  -1279,   2123}, 0, { -7878,   -932}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07059340 - 0x07059380\nstatic const Vtx inside_castle_seg7_vertex_07059340[] = {\n    {{{ -2713,  -1279,   2202}, 0, { -4628,   -542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3364,  -1279,   2123}, 0, { -7878,   -932}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3168,  -1279,   2533}, 0, { -6902,   1106}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2815,  -1279,   1997}, 0, { -5140,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07059380 - 0x070593C0\nstatic const Vtx inside_castle_seg7_vertex_07059380[] = {\n    {{{ -2508,  -1279,   2406}, 0, { -3606,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3168,  -1279,   2533}, 0, { -6902,   1106}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2839,  -1279,   2862}, 0, { -5258,   2750}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2713,  -1279,   2202}, 0, { -4628,   -542}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070593C0 - 0x07059400\nstatic const Vtx inside_castle_seg7_vertex_070593C0[] = {\n    {{{ -2303,  -1279,   2509}, 0, { -2584,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2508,  -1279,   2406}, 0, { -3606,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2839,  -1279,   2862}, 0, { -5258,   2750}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2430,  -1279,   3058}, 0, { -3218,   3726}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07059400 - 0x07059440\nstatic const Vtx inside_castle_seg7_vertex_07059400[] = {\n    {{{ -2098,  -1279,   2509}, 0, { -1562,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2430,  -1279,   3058}, 0, { -3218,   3726}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1972,  -1279,   3058}, 0, {  -930,   3726}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2303,  -1279,   2509}, 0, { -2584,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07059440 - 0x07059480\nstatic const Vtx inside_castle_seg7_vertex_07059440[] = {\n    {{{ -1893,  -1279,   2406}, 0, {  -542,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2098,  -1279,   2509}, 0, { -1562,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1972,  -1279,   3058}, 0, {  -930,   3726}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1562,  -1279,   2862}, 0, {  1108,   2750}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07059480 - 0x070594C0\nstatic const Vtx inside_castle_seg7_vertex_07059480[] = {\n    {{{ -1791,  -1279,   2304}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1562,  -1279,   2862}, 0, {  1108,   2750}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1381,  -1279,   2714}, 0, {  2012,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1893,  -1279,   2406}, 0, {  -542,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070594C0 - 0x070595C0\nstatic const Vtx inside_castle_seg7_vertex_070594C0[] = {\n    {{{  -101,   -460,   1178}, 0, {  5078,  -3354}, {0x00, 0x87, 0xdc, 0xff}}},\n    {{{  -562,   -306,    666}, 0, {  7634,  -1054}, {0x00, 0x87, 0xdc, 0xff}}},\n    {{{  -101,   -306,    666}, 0, {  7634,  -3354}, {0x00, 0x87, 0xdc, 0xff}}},\n    {{{  -562,   -460,   1178}, 0, {  5078,  -1054}, {0x00, 0x87, 0xdc, 0xff}}},\n    {{{  -562,   -306,    666}, 0, {  7634,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -101,   -306,    256}, 0, {  9678,  -3354}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -101,   -306,    666}, 0, {  7634,  -3354}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -562,   -306,    256}, 0, {  9678,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -101,   -767,    256}, 0, {  1756,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -562,   -767,    666}, 0, {  -540,  -1158}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -101,   -767,    666}, 0, {  1756,  -1158}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -562,   -767,    256}, 0, {  -540,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -562,  -1074,   1178}, 0, {  -540,   1748}, {0x00, 0x6c, 0x41, 0xff}}},\n    {{{  -101,   -767,    666}, 0, {  1756,  -1158}, {0x00, 0x6c, 0x41, 0xff}}},\n    {{{  -562,   -767,    666}, 0, {  -540,  -1158}, {0x00, 0x6c, 0x41, 0xff}}},\n    {{{  -101,  -1074,   1178}, 0, {  1756,   1748}, {0x00, 0x6c, 0x41, 0xff}}},\n};\n\n// 0x070595C0 - 0x070596C0\nstatic const Vtx inside_castle_seg7_vertex_070595C0[] = {\n    {{{ -1433,   -357,   1178}, 0, {  5078,   3288}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -818,   -357,    973}, 0, {  6100,    224}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -613,   -357,   1178}, 0, {  5078,   -798}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1279,  -1279,   2816}, 0, {  2522,   2520}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,  -1279,   2816}, 0, {  6610,   2522}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,  -1279,   1587}, 0, {  6610,  -3608}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1893,  -1279,   2202}, 0, {  -542,   -542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1893,  -1279,   1587}, 0, {  -542,  -3608}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,   -767,    256}, 0, {   990,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -409,   -767,    205}, 0, {   224,  -3340}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -409,   -767,    256}, 0, {   224,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,   -767,    205}, 0, {   990,  -3340}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,   -357,    973}, 0, {  6100,   2266}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1893,   -357,   1178}, 0, {  5078,   5588}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   256,   -357,   2816}, 0, { -3096,  -5142}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1893,   -357,   2816}, 0, { -3096,   5588}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x070596C0 - 0x070596F0\nstatic const Vtx inside_castle_seg7_vertex_070596C0[] = {\n    {{{ -1893,   -357,   1178}, 0, {  5078,   5588}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   256,   -357,   1178}, 0, {  5078,  -5142}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   256,   -357,   2816}, 0, { -3096,  -5142}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x070596F0 - 0x070597E0\nstatic const Vtx inside_castle_seg7_vertex_070596F0[] = {\n    {{{  -716,   -972,    243}, 0, { -7704,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -972,    243}, 0, { -7704,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -997,    243}, 0, { -7846,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,  -1049,    358}, 0, { -9086,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,  -1049,    358}, 0, { -9086,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,  -1074,    358}, 0, { -9228,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,  -1074,    358}, 0, { -9228,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,  -1023,    320}, 0, { -8626,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,  -1023,    320}, 0, { -8626,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,  -1049,    320}, 0, { -8768,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,  -1049,    320}, 0, { -8768,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -997,    282}, 0, { -8166,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,  -1023,    282}, 0, { -8306,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,  -1023,    282}, 0, { -8306,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -997,    282}, 0, { -8166,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070597E0 - 0x070598D0\nstatic const Vtx inside_castle_seg7_vertex_070597E0[] = {\n    {{{  -716,   -869,     90}, 0, { -5862,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -869,     90}, 0, { -5862,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -895,     90}, 0, { -6004,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -972,    243}, 0, { -7704,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -997,    243}, 0, { -7846,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -997,    243}, 0, { -7846,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -946,    205}, 0, { -7244,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -946,    205}, 0, { -7244,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -972,    205}, 0, { -7386,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -972,    205}, 0, { -7386,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -921,    166}, 0, { -6784,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -946,    166}, 0, { -6924,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -946,    166}, 0, { -6924,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -921,    166}, 0, { -6784,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -895,     90}, 0, { -6004,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070598D0 - 0x070599C0\nstatic const Vtx inside_castle_seg7_vertex_070598D0[] = {\n    {{{  -716,   -793,    -25}, 0, { -4480,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -793,    -25}, 0, { -4480,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -818,    -25}, 0, { -4622,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -895,    128}, 0, { -6322,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -921,    128}, 0, { -6464,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -921,    128}, 0, { -6464,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -895,    128}, 0, { -6322,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -844,     51}, 0, { -5402,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -844,     51}, 0, { -5402,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -869,     51}, 0, { -5544,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -869,     51}, 0, { -5544,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -818,     13}, 0, { -4940,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -844,     13}, 0, { -5082,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -844,     13}, 0, { -5082,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -818,     13}, 0, { -4940,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070599C0 - 0x07059AB0\nstatic const Vtx inside_castle_seg7_vertex_070599C0[] = {\n    {{{  -716,   -665,   -217}, 0, { -2178,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -665,   -217}, 0, { -2178,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -690,   -217}, 0, { -2318,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -793,    -25}, 0, { -4480,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -818,    -25}, 0, { -4622,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -818,    -25}, 0, { -4622,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -767,    -63}, 0, { -4020,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -793,    -63}, 0, { -4162,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -793,    -63}, 0, { -4162,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -767,    -63}, 0, { -4020,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -690,   -178}, 0, { -2638,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -690,   -178}, 0, { -2638,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -716,   -178}, 0, { -2780,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -716,   -178}, 0, { -2780,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -690,   -217}, 0, { -2318,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07059AB0 - 0x07059BA0\nstatic const Vtx inside_castle_seg7_vertex_07059AB0[] = {\n    {{{  -716,   -613,   -293}, 0, { -1256,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -639,   -293}, 0, { -1398,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -639,   -293}, 0, { -1398,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -716,   -140}, 0, { -3098,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -716,   -140}, 0, { -3098,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -741,   -140}, 0, { -3240,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -741,   -140}, 0, { -3240,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -741,   -101}, 0, { -3558,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -767,   -101}, 0, { -3700,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -767,   -101}, 0, { -3700,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -741,   -101}, 0, { -3558,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -639,   -255}, 0, { -1716,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -665,   -255}, 0, { -1858,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -665,   -255}, 0, { -1858,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -639,   -255}, 0, { -1716,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07059BA0 - 0x07059C90\nstatic const Vtx inside_castle_seg7_vertex_07059BA0[] = {\n    {{{  -716,   -537,   -409}, 0, {   124,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -537,   -409}, 0, {   124,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -562,   -409}, 0, {   -18,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -613,   -293}, 0, { -1256,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -613,   -293}, 0, { -1256,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -639,   -293}, 0, { -1398,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -588,   -332}, 0, {  -796,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -588,   -332}, 0, {  -796,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -613,   -332}, 0, {  -938,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -613,   -332}, 0, {  -938,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -562,   -370}, 0, {  -334,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -588,   -370}, 0, {  -476,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -588,   -370}, 0, {  -476,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -562,   -370}, 0, {  -334,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -562,   -409}, 0, {   -18,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07059C90 - 0x07059D80\nstatic const Vtx inside_castle_seg7_vertex_07059C90[] = {\n    {{{  -716,   -409,   -601}, 0, {  2426,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -434,   -601}, 0, {  2286,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -434,   -601}, 0, {  2286,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -511,   -447}, 0, {   584,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -511,   -447}, 0, {   584,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -537,   -447}, 0, {   442,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -537,   -447}, 0, {   442,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -485,   -485}, 0, {  1046,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -485,   -485}, 0, {  1046,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -511,   -485}, 0, {   904,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -511,   -485}, 0, {   904,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -460,   -524}, 0, {  1506,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -485,   -524}, 0, {  1364,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -485,   -524}, 0, {  1364,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -460,   -524}, 0, {  1506,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07059D80 - 0x07059DF0\nstatic const Vtx inside_castle_seg7_vertex_07059D80[] = {\n    {{{  -716,   -434,   -562}, 0, {  1966,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -460,   -562}, 0, {  1824,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -460,   -562}, 0, {  1824,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   -409,   -601}, 0, {  2426,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -409,   -601}, 0, {  2426,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -434,   -601}, 0, {  2286,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1330,   -434,   -562}, 0, {  1966,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07059DF0 - 0x07059EE0\nstatic const Vtx inside_castle_seg7_vertex_07059DF0[] = {\n    {{{ -1330,   -972,    243}, 0, { -7704,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -972,    205}, 0, { -7386,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -972,    205}, 0, { -7386,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,  -1049,    358}, 0, { -9086,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,  -1049,    320}, 0, { -8768,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,  -1049,    320}, 0, { -8768,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,  -1049,    358}, 0, { -9086,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,  -1023,    320}, 0, { -8626,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,  -1023,    320}, 0, { -8626,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,  -1023,    282}, 0, { -8306,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,  -1023,    282}, 0, { -8306,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -997,    282}, 0, { -8166,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -997,    282}, 0, { -8166,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -997,    243}, 0, { -7846,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -997,    243}, 0, { -7846,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07059EE0 - 0x07059FD0\nstatic const Vtx inside_castle_seg7_vertex_07059EE0[] = {\n    {{{ -1330,   -869,     90}, 0, { -5862,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -869,     51}, 0, { -5544,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -869,     51}, 0, { -5544,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -972,    243}, 0, { -7704,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -972,    243}, 0, { -7704,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -972,    205}, 0, { -7386,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -946,    205}, 0, { -7244,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -946,    205}, 0, { -7244,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -946,    166}, 0, { -6924,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -946,    166}, 0, { -6924,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -921,    166}, 0, { -6784,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -921,    166}, 0, { -6784,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -921,    128}, 0, { -6464,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -921,    128}, 0, { -6464,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -869,     90}, 0, { -5862,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07059FD0 - 0x0705A0C0\nstatic const Vtx inside_castle_seg7_vertex_07059FD0[] = {\n    {{{ -1330,   -793,    -25}, 0, { -4480,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -793,    -63}, 0, { -4162,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -793,    -63}, 0, { -4162,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -895,    128}, 0, { -6322,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -895,     90}, 0, { -6004,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -895,     90}, 0, { -6004,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -895,    128}, 0, { -6322,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -844,     51}, 0, { -5402,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -844,     13}, 0, { -5082,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -844,     13}, 0, { -5082,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -844,     51}, 0, { -5402,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -818,     13}, 0, { -4940,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -818,    -25}, 0, { -4622,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -818,    -25}, 0, { -4622,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -818,     13}, 0, { -4940,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0705A0C0 - 0x0705A1B0\nstatic const Vtx inside_castle_seg7_vertex_0705A0C0[] = {\n    {{{ -1330,   -665,   -217}, 0, { -2178,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -665,   -255}, 0, { -1858,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -665,   -255}, 0, { -1858,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -793,    -25}, 0, { -4480,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -793,    -25}, 0, { -4480,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -793,    -63}, 0, { -4162,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -767,    -63}, 0, { -4020,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -767,    -63}, 0, { -4020,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -767,   -101}, 0, { -3700,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -767,   -101}, 0, { -3700,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -690,   -178}, 0, { -2638,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -690,   -217}, 0, { -2318,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -690,   -217}, 0, { -2318,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -690,   -178}, 0, { -2638,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -665,   -217}, 0, { -2178,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0705A1B0 - 0x0705A2A0\nstatic const Vtx inside_castle_seg7_vertex_0705A1B0[] = {\n    {{{ -1330,   -613,   -293}, 0, { -1256,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -613,   -332}, 0, {  -938,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -613,   -332}, 0, {  -938,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -716,   -140}, 0, { -3098,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -716,   -178}, 0, { -2780,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -716,   -178}, 0, { -2780,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -716,   -140}, 0, { -3098,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -741,   -101}, 0, { -3558,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -741,   -140}, 0, { -3240,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -741,   -140}, 0, { -3240,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -741,   -101}, 0, { -3558,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -639,   -255}, 0, { -1716,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -639,   -293}, 0, { -1398,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -639,   -293}, 0, { -1398,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -639,   -255}, 0, { -1716,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0705A2A0 - 0x0705A390\nstatic const Vtx inside_castle_seg7_vertex_0705A2A0[] = {\n    {{{ -1330,   -537,   -409}, 0, {   124,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -537,   -447}, 0, {   442,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -537,   -447}, 0, {   442,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -613,   -293}, 0, { -1256,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -613,   -293}, 0, { -1256,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -613,   -332}, 0, {  -938,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -588,   -332}, 0, {  -796,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -588,   -370}, 0, {  -476,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -588,   -370}, 0, {  -476,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -588,   -332}, 0, {  -796,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -562,   -370}, 0, {  -334,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -562,   -409}, 0, {   -18,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -562,   -409}, 0, {   -18,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -562,   -370}, 0, {  -334,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -537,   -409}, 0, {   124,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0705A390 - 0x0705A490\nstatic const Vtx inside_castle_seg7_vertex_0705A390[] = {\n    {{{ -1330,   -434,   -562}, 0, {  1966,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -434,   -601}, 0, {  2286,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -434,   -601}, 0, {  2286,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -511,   -447}, 0, {   584,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -511,   -485}, 0, {   904,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -511,   -485}, 0, {   904,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -511,   -447}, 0, {   584,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -485,   -485}, 0, {  1046,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -485,   -485}, 0, {  1046,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -485,   -524}, 0, {  1364,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -485,   -524}, 0, {  1364,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -460,   -562}, 0, {  1824,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -460,   -524}, 0, {  1506,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -460,   -524}, 0, {  1506,   2946}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,   -460,   -562}, 0, {  1824,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -434,   -562}, 0, {  1966,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0705A490 - 0x0705A590\nstatic const Vtx inside_castle_seg7_vertex_0705A490[] = {\n    {{{  -665,  -1074,   1587}, 0, {   478,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,  -1074,   1792}, 0, {  1500,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -613,  -1074,   1178}, 0, {   734,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,  -1074,   2714}, 0, {  4056,   6608}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,  -1074,   2432}, 0, {  5078,   5204}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,  -1074,   1562}, 0, {  5078,    862}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,  -1074,   1280}, 0, {  4056,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -460,  -1074,   2816}, 0, {  1500,   7120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,  -1074,   2816}, 0, {  4056,   7120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,  -1074,   1178}, 0, {  4056,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,  -1074,   2150}, 0, {  5078,   3798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   307,  -1074,   2150}, 0, {  5334,   3798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   307,  -1074,   1843}, 0, {  5334,   2266}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,  -1074,   1843}, 0, {  5078,   2266}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -818,  -1074,    973}, 0, {  -286,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1433,  -1074,   1178}, 0, { -3352,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0705A590 - 0x0705A670\nstatic const Vtx inside_castle_seg7_vertex_0705A590[] = {\n    {{{ -1893,  -1074,   1587}, 0, { -5650,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -665,  -1074,   1587}, 0, {   478,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1433,  -1074,   1178}, 0, { -3352,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -818,  -1074,    973}, 0, {  -286,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,  -1074,    973}, 0, { -2330,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1893,  -1074,   1178}, 0, { -5650,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,  -1074,    973}, 0, { -2074,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,  -1074,    973}, 0, {  -540,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,  -1074,    922}, 0, {  -540,  -2332}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,  -1074,    922}, 0, { -2074,  -2332}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,  -1074,    358}, 0, {  3034,   2522}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1330,  -1074,    870}, 0, {  3034,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,  -1074,    870}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,  -1074,    358}, 0, {     0,   2522}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0705A670 - 0x0705A6B0\nstatic const Vtx inside_castle_seg7_vertex_0705A670[] = {\n    {{{ -1177,  -1074,    922}, 0, {  2268,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,  -1074,    922}, 0, {   734,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,  -1074,    870}, 0, {   734,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,  -1074,    870}, 0, {  2268,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0705A6B0 - 0x0705A7B0\nstatic const Vtx inside_castle_seg7_vertex_0705A6B0[] = {\n    {{{  -101,   -460,   1178}, 0, { 10698,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -101,  -1074,   1178}, 0, { 10698,   5076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -50,  -1074,   1178}, 0, { 11210,   5076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -562,   -767,    256}, 0, {     0,   4564}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -409,   -511,    256}, 0, {  1502,   2010}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -562,   -306,    256}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -409,   -767,    256}, 0, {  1502,   4564}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,   -511,    256}, 0, {  3034,   2010}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -101,   -306,    256}, 0, {  4566,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -101,   -767,    256}, 0, {  4566,   4564}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,   -767,    256}, 0, {  3034,   4564}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -562,   -460,   1178}, 0, {  6100,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -50,   -357,   1178}, 0, { 11210,  -2076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,  -1177,   1766}, 0, {  4056,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,  -1177,   1818}, 0, {  3544,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,  -1177,   1818}, 0, {  4056,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0705A7B0 - 0x0705A8A0\nstatic const Vtx inside_castle_seg7_vertex_0705A7B0[] = {\n    {{{  -562,   -460,   1178}, 0, {  6100,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -50,   -357,   1178}, 0, { 11210,  -2076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -613,   -357,   1178}, 0, {  5588,  -2076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -613,  -1074,   1178}, 0, {  5590,   5076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -562,  -1074,   1178}, 0, {  6100,   5076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1586,  -1177,   1766}, 0, {     0,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1586,  -1177,   1818}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,  -1177,   1766}, 0, {   478,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,  -1177,   1818}, 0, {   478,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,  -1177,   1766}, 0, {  3544,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,  -1177,   1818}, 0, {  3544,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,  -1177,   1766}, 0, {  4056,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -50,  -1279,   2816}, 0, { -5140,   5076}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1177,  -1279,   2816}, 0, {  6100,   5076}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1177,   -357,   2816}, 0, {  6100,  -4120}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0705A8A0 - 0x0705A990\nstatic const Vtx inside_castle_seg7_vertex_0705A8A0[] = {\n    {{{  -665,  -1074,   1587}, 0, {  5078,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,  -1279,   1587}, 0, {     0,   2010}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -665,  -1279,   1587}, 0, {  5078,   2010}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,  -1074,   1587}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1586,  -1074,   1587}, 0, { -4118,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1893,  -1074,   1587}, 0, { -7184,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1893,  -1279,   1587}, 0, { -7184,   2010}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1586,  -1279,   1587}, 0, { -4118,   2010}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1893,  -1279,   2099}, 0, { -3096,   6098}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1893,   -357,   1280}, 0, {  5078,  -3098}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1893,   -357,   2099}, 0, { -3096,  -3098}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1893,  -1279,   1280}, 0, {  5078,   6098}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    51,  -1074,   2714}, 0, {  8144,   5076}, {0x9a, 0x00, 0xb6, 0xff}}},\n    {{{    51,   -357,   2714}, 0, {  8144,  -2076}, {0x9a, 0x00, 0xb6, 0xff}}},\n    {{{   256,   -357,   2432}, 0, {  5334,  -2076}, {0x9a, 0x00, 0xb6, 0xff}}},\n};\n\n// 0x0705A990 - 0x0705AA70\nstatic const Vtx inside_castle_seg7_vertex_0705A990[] = {\n    {{{   -50,  -1279,   2816}, 0, { -5140,   5076}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1177,   -357,   2816}, 0, {  6100,  -4120}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -50,   -357,   2816}, 0, { -5140,  -4120}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,  -1074,   1715}, 0, { -1818,   5076}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   256,  -1074,   1843}, 0, {  -542,   5076}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   256,   -818,   1843}, 0, {  -542,   2522}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   256,   -357,   1715}, 0, { -1818,  -2076}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   256,   -818,   2150}, 0, {  2522,   2522}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   256,   -357,   2278}, 0, {  3800,  -2076}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   256,  -1074,   2278}, 0, {  3800,   5076}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   256,  -1074,   2150}, 0, {  2522,   5076}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    51,  -1074,   2714}, 0, {  8144,   5076}, {0x9a, 0x00, 0xb6, 0xff}}},\n    {{{   256,   -357,   2432}, 0, {  5334,  -2076}, {0x9a, 0x00, 0xb6, 0xff}}},\n    {{{   256,  -1074,   2432}, 0, {  5334,   5076}, {0x9a, 0x00, 0xb6, 0xff}}},\n};\n\n// 0x0705AA70 - 0x0705AB60\nstatic const Vtx inside_castle_seg7_vertex_0705AA70[] = {\n    {{{   307,  -1074,   2150}, 0, {   480,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,   -818,   2150}, 0, {   990,  -1564}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   307,   -818,   2150}, 0, {   480,  -1564}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,  -1074,   1562}, 0, { -3352,   5076}, {0x9a, 0x00, 0x4a, 0xff}}},\n    {{{    51,   -357,   1280}, 0, { -6162,  -2076}, {0x9a, 0x00, 0x4a, 0xff}}},\n    {{{    51,  -1074,   1280}, 0, { -6162,   5076}, {0x9a, 0x00, 0x4a, 0xff}}},\n    {{{   256,   -357,   1562}, 0, { -3352,  -2076}, {0x9a, 0x00, 0x4a, 0xff}}},\n    {{{   256,   -818,   1843}, 0, {   990,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   307,   -818,   1843}, 0, {   480,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   307,   -818,   2150}, 0, {   480,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   256,   -818,   2150}, 0, {   990,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   256,  -1074,   1843}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   307,  -1074,   1843}, 0, {   480,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   307,   -818,   1843}, 0, {   480,  -1564}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,   -818,   1843}, 0, {   990,  -1564}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0705AB60 - 0x0705AC50\nstatic const Vtx inside_castle_seg7_vertex_0705AB60[] = {\n    {{{  -869,   -818,    922}, 0, {   480,  -1564}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -869,  -1074,    922}, 0, {   478,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -869,  -1074,    973}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   307,  -1074,   2150}, 0, {   480,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,  -1074,   2150}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,   -818,   2150}, 0, {   990,  -1564}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -869,   -818,    973}, 0, {  3034,   2520}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -818,   -357,    973}, 0, {  3544,  -2076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1228,   -357,    973}, 0, {  -542,  -2076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,  -1074,    973}, 0, {     0,   5076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,   -818,    973}, 0, {     0,   2520}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1228,  -1074,    973}, 0, {  -540,   5076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -818,  -1074,    973}, 0, {  3546,   5076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,  -1074,    973}, 0, {  3034,   5076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,   -818,    973}, 0, {   990,  -1564}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0705AC50 - 0x0705AD40\nstatic const Vtx inside_castle_seg7_vertex_0705AC50[] = {\n    {{{  -409,   -511,    256}, 0, {   990,  -1566}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -255,   -511,    205}, 0, {   480,  -1566}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -255,   -511,    256}, 0, {   990,  -1566}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1177,   -818,    973}, 0, {   990,  -1564}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,  -1074,    922}, 0, {   478,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,   -818,    922}, 0, {   480,  -1564}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,  -1074,    973}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,   -818,    922}, 0, {   480,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -869,   -818,    973}, 0, {   990,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1177,   -818,    973}, 0, {   990,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -869,   -818,    922}, 0, {   480,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -255,   -511,    256}, 0, {   990,  -1566}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,   -511,    205}, 0, {   480,  -1566}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,   -767,    205}, 0, {   478,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,   -767,    256}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0705AD40 - 0x0705AE30\nstatic const Vtx inside_castle_seg7_vertex_0705AD40[] = {\n    {{{  -101,   -306,    256}, 0, { -8206,  -6676}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -101,   -767,    666}, 0, { -4118,  -2076}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -101,   -306,    666}, 0, { -4118,  -6676}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -409,   -511,    256}, 0, {   990,  -1566}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -409,   -511,    205}, 0, {   480,  -1566}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -255,   -511,    205}, 0, {   480,  -1566}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -409,   -767,    256}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -409,   -767,    205}, 0, {   478,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -409,   -511,    205}, 0, {   480,  -1566}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -409,   -511,    256}, 0, {   990,  -1566}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -562,   -767,    666}, 0, { -4118,  -2076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -562,   -306,    256}, 0, { -8206,  -6676}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -562,   -306,    666}, 0, { -4118,  -6676}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -562,   -460,   1178}, 0, {   990,  -5142}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -562,  -1074,   1178}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0705AE30 - 0x0705AF30\nstatic const Vtx inside_castle_seg7_vertex_0705AE30[] = {\n    {{{  -101,   -767,    666}, 0, { -4118,  -2076}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -101,  -1074,   1178}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -101,   -460,   1178}, 0, {   990,  -5142}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -101,   -306,    666}, 0, { -4118,  -6676}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -101,   -306,    256}, 0, { -8206,  -6676}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -101,   -767,    256}, 0, { -8206,  -2076}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -562,   -767,    666}, 0, { -4118,  -2076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -562,   -767,    256}, 0, { -8206,  -2076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -562,   -306,    256}, 0, { -8206,  -6676}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1381,   -357,   2714}, 0, { -2074,  -2076}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1381,   -665,   2714}, 0, { -2074,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1454,   -562,   2641}, 0, { -1052,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1791,   -357,   2304}, 0, {  3706,  -2076}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1586,  -1279,   1818}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1535,  -1177,   1818}, 0, {   478,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1586,  -1177,   1818}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0705AF30 - 0x0705B020\nstatic const Vtx inside_castle_seg7_vertex_0705AF30[] = {\n    {{{ -1791,   -357,   2304}, 0, {  3706,  -2076}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1454,   -562,   2641}, 0, { -1052,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1719,   -562,   2376}, 0, {  2684,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1791,   -665,   2304}, 0, {  3706,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1586,   -946,   1536}, 0, {     0,  -2332}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1535,  -1074,   1536}, 0, {   480,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1586,  -1074,   1536}, 0, {     0,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1535,   -946,   1536}, 0, {   480,  -2332}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1586,  -1177,   1766}, 0, {     0,      0}, {0x00, 0x59, 0x5a, 0xff}}},\n    {{{ -1535,   -997,   1587}, 0, {   480,  -1820}, {0x00, 0x59, 0x5a, 0xff}}},\n    {{{ -1586,   -997,   1587}, 0, {     0,  -1820}, {0x00, 0x59, 0x5a, 0xff}}},\n    {{{ -1535,  -1177,   1766}, 0, {   478,      0}, {0x00, 0x59, 0x5a, 0xff}}},\n    {{{ -1228,  -1279,   1818}, 0, {  3544,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,  -1177,   1818}, 0, {  4056,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1228,  -1177,   1818}, 0, {  3544,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0705B020 - 0x0705B100\nstatic const Vtx inside_castle_seg7_vertex_0705B020[] = {\n    {{{ -1586,  -1279,   1818}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1535,  -1279,   1818}, 0, {   478,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1535,  -1177,   1818}, 0, {   478,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1228,   -946,   1536}, 0, {  3544,  -2332}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1177,  -1074,   1536}, 0, {  4056,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1228,  -1074,   1536}, 0, {  3544,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1177,   -946,   1536}, 0, {  4056,  -2332}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1228,  -1177,   1766}, 0, {  3544,      0}, {0x00, 0x59, 0x5a, 0xff}}},\n    {{{ -1177,  -1177,   1766}, 0, {  4056,      0}, {0x00, 0x59, 0x5a, 0xff}}},\n    {{{ -1177,   -997,   1587}, 0, {  4056,  -1820}, {0x00, 0x59, 0x5a, 0xff}}},\n    {{{ -1228,   -997,   1587}, 0, {  3544,  -1820}, {0x00, 0x59, 0x5a, 0xff}}},\n    {{{ -1228,  -1279,   1818}, 0, {  3544,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,  -1279,   1818}, 0, {  4056,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,  -1177,   1818}, 0, {  4056,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0705B100 - 0x0705B200\nstatic const Vtx inside_castle_seg7_vertex_0705B100[] = {\n    {{{ -1791,  -1074,   1178}, 0, { -6162,   5076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1433,  -1074,   1178}, 0, { -2584,   5076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1433,   -357,   1178}, 0, { -2586,  -2076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1791,   -357,   1178}, 0, { -6162,  -2076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1433,   -357,   1178}, 0, { -2586,  -2076}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1433,  -1074,   1178}, 0, { -2584,   5076}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1228,  -1074,    973}, 0, {  -540,   5076}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1228,   -357,    973}, 0, {  -542,  -2076}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -818,   -357,    973}, 0, {  3544,  -2076}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -613,  -1074,   1178}, 0, {  5590,   5076}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -613,   -357,   1178}, 0, {  5588,  -2076}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -818,  -1074,    973}, 0, {  3546,   5076}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -460,  -1074,   1792}, 0, { -2074,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -460,  -1279,   2816}, 0, {  8144,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -460,  -1074,   2816}, 0, {  8144,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -460,  -1279,   1792}, 0, { -2074,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0705B200 - 0x0705B300\nstatic const Vtx inside_castle_seg7_vertex_0705B200[] = {\n    {{{ -1535,   -946,   1587}, 0, {   480,  -2332}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1586,   -946,   1587}, 0, {     0,  -2332}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1586,   -997,   1587}, 0, {     0,  -1820}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -665,  -1074,   1587}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -665,  -1279,   1587}, 0, {     0,   2010}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -460,  -1279,   1792}, 0, {  2858,   2010}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -460,  -1074,   1792}, 0, {  2858,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1535,   -946,   1536}, 0, {     0,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1586,   -946,   1587}, 0, {   478,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,   -946,   1587}, 0, {   478,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1586,   -946,   1536}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,   -946,   1536}, 0, {     0,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,   -946,   1536}, 0, {     0,  -2588}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,   -946,   1587}, 0, {   478,  -2588}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,   -946,   1587}, 0, {   478,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,   -997,   1587}, 0, {   480,  -1820}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0705B300 - 0x0705B3E0\nstatic const Vtx inside_castle_seg7_vertex_0705B300[] = {\n    {{{ -1177,   -946,   1587}, 0, {  4056,  -2332}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1228,   -946,   1587}, 0, {  3544,  -2332}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1228,   -997,   1587}, 0, {  3544,  -1820}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1177,   -997,   1587}, 0, {  4056,  -1820}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1228,   -997,   1587}, 0, {  -286,   -798}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1228,   -946,   1536}, 0, {  -796,  -1310}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1228,  -1279,   1818}, 0, {  2012,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1228,   -946,   1587}, 0, {  -286,  -1310}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1228,  -1279,   1536}, 0, {  -796,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1228,  -1177,   1766}, 0, {  1502,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1228,  -1177,   1818}, 0, {  2012,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1535,   -946,   1536}, 0, {  -796,  -1310}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1535,   -946,   1587}, 0, {  -286,  -1310}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1535,   -997,   1587}, 0, {  -286,   -798}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0705B3E0 - 0x0705B4E0\nstatic const Vtx inside_castle_seg7_vertex_0705B3E0[] = {\n    {{{ -1586,   -946,   1536}, 0, {  -796,  -1310}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1586,  -1279,   1536}, 0, {  -796,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1586,  -1279,   1818}, 0, {  2012,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1586,   -997,   1587}, 0, {  -286,   -798}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1586,   -946,   1587}, 0, {  -286,  -1310}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1586,  -1177,   1818}, 0, {  2012,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1586,  -1177,   1766}, 0, {  1502,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1535,  -1177,   1766}, 0, {  1502,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1535,  -1177,   1818}, 0, {  2012,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1535,  -1279,   1818}, 0, {  2012,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1535,   -946,   1536}, 0, {  -796,  -1310}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1535,  -1279,   1536}, 0, {  -796,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,  -1177,   1766}, 0, {  1502,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,  -1279,   1818}, 0, {  2012,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,   -946,   1536}, 0, {  -796,  -1310}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,  -1279,   1536}, 0, {  -796,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0705B4E0 - 0x0705B5C0\nstatic const Vtx inside_castle_seg7_vertex_0705B4E0[] = {\n    {{{ -1177,  -1177,   1766}, 0, {  1502,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,  -1177,   1818}, 0, {  2012,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,  -1279,   1818}, 0, {  2012,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,   -946,   1536}, 0, {  -796,  -1310}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,   -946,   1587}, 0, {  -286,  -1310}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,   -997,   1587}, 0, {  -286,   -798}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1228,    307,   -716}, 0, {  4056,  -3610}, {0x50, 0xb0, 0xc7, 0xff}}},\n    {{{ -1330,   -562,    358}, 0, {  5078,   5076}, {0x50, 0xb0, 0xc7, 0xff}}},\n    {{{ -1330,    205,   -716}, 0, {  5078,  -2588}, {0x50, 0xb0, 0xc7, 0xff}}},\n    {{{ -1228,   -460,    358}, 0, {  4056,   4054}, {0x50, 0xb0, 0xc7, 0xff}}},\n    {{{  -818,    307,   -716}, 0, {     0,  -3610}, {0x00, 0x99, 0xb7, 0xff}}},\n    {{{ -1228,   -460,    358}, 0, {  4056,   4054}, {0x00, 0x99, 0xb7, 0xff}}},\n    {{{ -1228,    307,   -716}, 0, {  4056,  -3610}, {0x00, 0x99, 0xb7, 0xff}}},\n    {{{  -818,   -460,    358}, 0, {     0,   4054}, {0x00, 0x99, 0xb7, 0xff}}},\n};\n\n// 0x0705B5C0 - 0x0705B6C0\nstatic const Vtx inside_castle_seg7_vertex_0705B5C0[] = {\n    {{{  -716,    205,   -716}, 0, { -1052,  -2588}, {0xb0, 0xb0, 0xc7, 0xff}}},\n    {{{  -818,   -460,    358}, 0, {     0,   4054}, {0xb0, 0xb0, 0xc7, 0xff}}},\n    {{{  -818,    307,   -716}, 0, {     0,  -3610}, {0xb0, 0xb0, 0xc7, 0xff}}},\n    {{{  -716,   -562,    358}, 0, { -1052,   5076}, {0xb0, 0xb0, 0xc7, 0xff}}},\n    {{{ -1330,   -562,    358}, 0, { -1052,  -2076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1330,  -1074,    870}, 0, {  4056,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1330,  -1074,    358}, 0, { -1052,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1330,   -562,    870}, 0, {  4056,  -2076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1228,   -460,    358}, 0, { -1052,  -3098}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{ -1330,   -562,    870}, 0, {  4056,  -2076}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{ -1330,   -562,    358}, 0, { -1052,  -2076}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{ -1228,   -460,    870}, 0, {  4056,  -3098}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{  -818,   -460,    358}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1228,   -460,    870}, 0, {  4056,   5076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1228,   -460,    358}, 0, {  4056,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -818,   -460,    870}, 0, {     0,   5076}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0705B6C0 - 0x0705B7B0\nstatic const Vtx inside_castle_seg7_vertex_0705B6C0[] = {\n    {{{  -869,   -818,    870}, 0, {  -542,   3542}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1177,   -818,    870}, 0, {  2524,   3542}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1228,   -460,    870}, 0, {  3034,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -716,  -1074,    358}, 0, { -1052,   3032}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -716,  -1074,    870}, 0, {  4056,   3032}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -716,   -562,    358}, 0, { -1052,  -2076}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -716,   -562,    870}, 0, {  4056,  -2076}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -716,   -562,    358}, 0, { -1052,  -2076}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  -716,   -562,    870}, 0, {  4056,  -2076}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  -818,   -460,    870}, 0, {  4056,  -3098}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  -818,   -460,    358}, 0, { -1052,  -3098}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  -716,  -1074,    870}, 0, { -2074,   6098}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -818,   -460,    870}, 0, { -1052,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -869,  -1074,    870}, 0, {  -542,   6098}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -716,   -562,    870}, 0, { -2074,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0705B7B0 - 0x0705B8B0\nstatic const Vtx inside_castle_seg7_vertex_0705B7B0[] = {\n    {{{ -1177,   -818,    922}, 0, {   478,  -1564}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,  -1074,    922}, 0, {   478,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,  -1074,    870}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1330,  -1074,    870}, 0, {  4056,   6098}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1330,   -562,    870}, 0, {  4056,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1228,   -460,    870}, 0, {  3034,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1177,   -818,    870}, 0, {  2524,   3542}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1177,  -1074,    870}, 0, {  2524,   6098}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -869,   -818,    870}, 0, {   990,  -1564}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -869,  -1074,    922}, 0, {   478,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -869,   -818,    922}, 0, {   478,  -1564}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -869,  -1074,    870}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1177,   -818,    870}, 0, {   990,  -1564}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1177,   -818,    870}, 0, {   990,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -869,   -818,    870}, 0, {   990,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -869,   -818,    922}, 0, {   478,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0705B8B0 - 0x0705B960\nstatic const Vtx inside_castle_seg7_vertex_0705B8B0[] = {\n    {{{ -1177,   -818,    870}, 0, {   990,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -869,   -818,    922}, 0, {   478,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1177,   -818,    922}, 0, {   478,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -716,   -456,   -613}, 0, {  4568,    954}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -716,   -562,    358}, 0, { -5140,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -716,    132,   -613}, 0, {  4568,  -4924}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -716,  -1074,    358}, 0, { -5140,   7120}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1330,    132,   -613}, 0, {  4568,  -4924}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1330,   -562,    358}, 0, { -5140,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1330,   -456,   -613}, 0, {  4568,    954}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1330,  -1074,    358}, 0, { -5140,   7120}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0705B960 - 0x0705BA50\nstatic const Vtx inside_castle_seg7_vertex_0705B960[] = {\n    {{{ -1535,  -1100,   1613}, 0, {     0,    240}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,  -1100,   1613}, 0, {   990,    240}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,  -1100,   1587}, 0, {     0,    112}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,  -1074,   1587}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1535,  -1074,   1587}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1535,  -1100,   1587}, 0, {     0,    112}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1228,  -1100,   1587}, 0, {   990,    112}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -50,   -357,   1229}, 0, {   224,      0}, {0xa6, 0x00, 0x58, 0xff}}},\n    {{{     0,  -1074,   1280}, 0, {   734,   2012}, {0xa6, 0x00, 0x58, 0xff}}},\n    {{{     0,   -357,   1280}, 0, {   734,      0}, {0xa6, 0x00, 0x58, 0xff}}},\n    {{{     0,   -357,   1280}, 0, {   734,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    51,  -1074,   1280}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    51,   -357,   1280}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,  -1074,   1280}, 0, {   734,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -50,  -1074,   1229}, 0, {   224,   2012}, {0xa6, 0x00, 0x58, 0xff}}},\n};\n\n// 0x0705BA50 - 0x0705BB30\nstatic const Vtx inside_castle_seg7_vertex_0705BA50[] = {\n    {{{   -50,   -357,   1178}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -50,  -1074,   1229}, 0, {   224,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -50,   -357,   1229}, 0, {   224,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -50,  -1074,   1178}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1535,  -1177,   1664}, 0, {     0,    928}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1228,  -1151,   1664}, 0, {   990,    780}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1535,  -1151,   1664}, 0, {     0,    780}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1535,  -1100,   1587}, 0, {     0,    112}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,  -1100,   1613}, 0, {   990,    240}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,  -1100,   1587}, 0, {   990,    112}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,  -1125,   1613}, 0, {     0,    384}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1228,  -1125,   1613}, 0, {   990,    384}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1228,  -1100,   1613}, 0, {   990,    240}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1535,  -1100,   1613}, 0, {     0,    240}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0705BB30 - 0x0705BC20\nstatic const Vtx inside_castle_seg7_vertex_0705BB30[] = {\n    {{{ -1535,  -1125,   1638}, 0, {     0,    512}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,  -1125,   1638}, 0, {   990,    512}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,  -1125,   1613}, 0, {     0,    384}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,  -1125,   1613}, 0, {   990,    384}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,  -1151,   1638}, 0, {     0,    656}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1228,  -1125,   1638}, 0, {   990,    512}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1535,  -1125,   1638}, 0, {     0,    512}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1228,  -1151,   1638}, 0, {   990,    656}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1535,  -1151,   1638}, 0, {     0,    656}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,  -1151,   1664}, 0, {   990,    780}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,  -1151,   1638}, 0, {   990,    656}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,  -1151,   1664}, 0, {     0,    780}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,  -1177,   1664}, 0, {     0,    928}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1228,  -1177,   1664}, 0, {   990,    928}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1228,  -1151,   1664}, 0, {   990,    780}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0705BC20 - 0x0705BD10\nstatic const Vtx inside_castle_seg7_vertex_0705BC20[] = {\n    {{{ -1535,  -1253,   1741}, 0, {     0,   1740}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1228,  -1228,   1741}, 0, {   990,   1596}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1535,  -1228,   1741}, 0, {     0,   1596}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1535,  -1177,   1690}, 0, {     0,   1052}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,  -1177,   1664}, 0, {   990,    928}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,  -1177,   1664}, 0, {     0,    928}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,  -1177,   1690}, 0, {   990,   1052}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,  -1202,   1690}, 0, {     0,   1200}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1228,  -1177,   1690}, 0, {   990,   1052}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1535,  -1177,   1690}, 0, {     0,   1052}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1228,  -1202,   1690}, 0, {   990,   1200}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1535,  -1202,   1715}, 0, {     0,   1324}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,  -1202,   1715}, 0, {   990,   1324}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,  -1202,   1690}, 0, {     0,   1200}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,  -1202,   1690}, 0, {   990,   1200}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0705BD10 - 0x0705BDF0\nstatic const Vtx inside_castle_seg7_vertex_0705BD10[] = {\n    {{{ -1535,  -1228,   1715}, 0, {     0,   1468}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1228,  -1202,   1715}, 0, {   990,   1324}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1535,  -1202,   1715}, 0, {     0,   1324}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1228,  -1228,   1715}, 0, {   990,   1468}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1535,  -1228,   1741}, 0, {     0,   1596}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,  -1228,   1715}, 0, {   990,   1468}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,  -1228,   1715}, 0, {     0,   1468}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,  -1228,   1741}, 0, {   990,   1596}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1791,   -357,   2304}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1791,  -1279,   2304}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1791,  -1279,   2202}, 0, {   376,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1535,  -1253,   1741}, 0, {     0,   1740}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1228,  -1253,   1741}, 0, {   990,   1740}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1228,  -1228,   1741}, 0, {   990,   1596}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0705BDF0 - 0x0705BEE0\nstatic const Vtx inside_castle_seg7_vertex_0705BDF0[] = {\n    {{{ -1535,  -1253,   1766}, 0, {     0,   1868}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,  -1253,   1766}, 0, {   990,   1868}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,  -1253,   1741}, 0, {     0,   1740}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,  -1253,   1741}, 0, {   990,   1740}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,  -1279,   1766}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1228,  -1253,   1766}, 0, {   990,   1868}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1535,  -1253,   1766}, 0, {     0,   1868}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1228,  -1279,   1766}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1791,   -357,   2202}, 0, {   376,      0}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{ -1893,  -1279,   2099}, 0, {   990,   2012}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{ -1893,   -357,   2099}, 0, {   990,      0}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{ -1791,  -1279,   2202}, 0, {   376,   2012}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{ -1791,   -357,   2304}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1791,  -1279,   2202}, 0, {   376,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1791,   -357,   2202}, 0, {   376,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0705BEE0 - 0x0705BFD0\nstatic const Vtx inside_castle_seg7_vertex_0705BEE0[] = {\n    {{{   256,   -357,   2278}, 0, {   990,      0}, {0xa6, 0x00, 0xa8, 0xff}}},\n    {{{   205,  -1074,   2330}, 0, {   650,   2012}, {0xa6, 0x00, 0xa8, 0xff}}},\n    {{{   205,   -357,   2330}, 0, {   650,      0}, {0xa6, 0x00, 0xa8, 0xff}}},\n    {{{ -1177,   -357,   2816}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1279,  -1279,   2714}, 0, {   582,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1279,   -357,   2714}, 0, {   582,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1279,   -357,   2714}, 0, {   582,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1279,  -1279,   2714}, 0, {   582,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1381,  -1279,   2714}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1381,   -357,   2714}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1177,  -1279,   2816}, 0, {     0,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   205,   -357,   2381}, 0, {   308,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   256,  -1074,   2432}, 0, {     0,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   256,   -357,   2432}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   205,  -1074,   2381}, 0, {   308,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x0705BFD0 - 0x0705C0C0\nstatic const Vtx inside_castle_seg7_vertex_0705BFD0[] = {\n    {{{   205,   -357,   2330}, 0, {   650,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   205,  -1074,   2381}, 0, {   308,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   205,   -357,   2381}, 0, {   308,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   205,  -1074,   2330}, 0, {   650,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   256,   -357,   2278}, 0, {   990,      0}, {0xa6, 0x00, 0xa8, 0xff}}},\n    {{{   256,  -1074,   2278}, 0, {   990,   2012}, {0xa6, 0x00, 0xa8, 0xff}}},\n    {{{   205,  -1074,   2330}, 0, {   650,   2012}, {0xa6, 0x00, 0xa8, 0xff}}},\n    {{{   205,   -357,   1613}, 0, {   308,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   205,  -1074,   1664}, 0, {   650,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   205,   -357,   1664}, 0, {   650,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   205,   -357,   1664}, 0, {   650,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   256,  -1074,   1715}, 0, {   990,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   256,   -357,   1715}, 0, {   990,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   205,  -1074,   1664}, 0, {   650,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   205,  -1074,   1613}, 0, {   308,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0705C0C0 - 0x0705C1B0\nstatic const Vtx inside_castle_seg7_vertex_0705C0C0[] = {\n    {{{   256,   -357,   1562}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   205,  -1074,   1613}, 0, {   308,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   205,   -357,   1613}, 0, {   308,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   256,  -1074,   1562}, 0, {     0,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1791,   -357,   1229}, 0, {   734,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1791,  -1074,   1178}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1791,   -357,   1178}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,   -357,   2714}, 0, {   224,      0}, {0xa6, 0x00, 0xa8, 0xff}}},\n    {{{   -50,  -1074,   2765}, 0, {   734,   2012}, {0xa6, 0x00, 0xa8, 0xff}}},\n    {{{   -50,   -357,   2765}, 0, {   734,      0}, {0xa6, 0x00, 0xa8, 0xff}}},\n    {{{ -1842,   -357,   1280}, 0, {   224,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1791,  -1074,   1229}, 0, {   734,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1791,   -357,   1229}, 0, {   734,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1842,  -1074,   1280}, 0, {   224,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1791,  -1074,   1229}, 0, {   734,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0705C1B0 - 0x0705C2A0\nstatic const Vtx inside_castle_seg7_vertex_0705C1B0[] = {\n    {{{ -1893,   -357,   1280}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1842,  -1074,   1280}, 0, {   224,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1842,   -357,   1280}, 0, {   224,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1893,  -1074,   1280}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    51,   -357,   2714}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,  -1074,   2714}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,  -1074,   2714}, 0, {   224,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,   -357,   2714}, 0, {   224,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,   -357,   2714}, 0, {   224,      0}, {0xa6, 0x00, 0xa8, 0xff}}},\n    {{{     0,  -1074,   2714}, 0, {   224,   2012}, {0xa6, 0x00, 0xa8, 0xff}}},\n    {{{   -50,  -1074,   2765}, 0, {   734,   2012}, {0xa6, 0x00, 0xa8, 0xff}}},\n    {{{   -50,   -357,   2765}, 0, {   734,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -50,  -1074,   2765}, 0, {   734,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -50,  -1074,   2816}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -50,   -357,   2816}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0705C2A0 - 0x0705C390\nstatic const Vtx inside_castle_seg7_vertex_0705C2A0[] = {\n    {{{ -3020,  -1023,   1485}, 0, {   618,   1280}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3020,  -1279,   1485}, 0, {   618,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2815,  -1279,   1485}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3173,  -1023,   1434}, 0, {   340,   1280}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3020,  -1023,   1434}, 0, {   618,   1280}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3020,  -1023,   1485}, 0, {   618,   1280}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3173,  -1023,   1485}, 0, {   340,   1280}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3020,  -1023,   1434}, 0, {   618,   1280}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3020,  -1279,   1434}, 0, {   618,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3020,  -1279,   1485}, 0, {   618,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3020,  -1023,   1485}, 0, {   618,   1280}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3173,  -1023,   1485}, 0, {   340,   1280}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3173,  -1279,   1434}, 0, {   340,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3173,  -1023,   1434}, 0, {   340,   1280}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3173,  -1279,   1485}, 0, {   340,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0705C390 - 0x0705C490\nstatic const Vtx inside_castle_seg7_vertex_0705C390[] = {\n    {{{ -1381,  -1279,   2714}, 0, {  2372,   2012}, {0xb0, 0x00, 0x9e, 0xff}}},\n    {{{ -1562,  -1279,   2862}, 0, {  1862,   2012}, {0xb0, 0x00, 0x9e, 0xff}}},\n    {{{ -1562,   -665,   2862}, 0, {  1862,    260}, {0xb0, 0x00, 0x9e, 0xff}}},\n    {{{ -3020,  -1023,   1485}, 0, {   618,   1280}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2815,  -1279,   1485}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2815,   -665,   1485}, 0, {   990,    260}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2917,   -562,   1485}, 0, {   804,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3173,  -1023,   1485}, 0, {   340,   1280}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3276,   -562,   1485}, 0, {   154,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3378,   -665,   1485}, 0, {     0,    260}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3378,  -1279,   1485}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3173,  -1279,   1485}, 0, {   340,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1381,   -665,   2714}, 0, {  2372,    260}, {0xb0, 0x00, 0x9e, 0xff}}},\n    {{{ -1562,  -1279,   2862}, 0, {  1862,   2012}, {0xca, 0x00, 0x8e, 0xff}}},\n    {{{ -1972,   -665,   3058}, 0, {   810,    260}, {0xca, 0x00, 0x8e, 0xff}}},\n    {{{ -1562,   -665,   2862}, 0, {  1862,    260}, {0xca, 0x00, 0x8e, 0xff}}},\n};\n\n// 0x0705C490 - 0x0705C590\nstatic const Vtx inside_castle_seg7_vertex_0705C490[] = {\n    {{{ -1562,  -1279,   2862}, 0, {  1862,   2012}, {0xca, 0x00, 0x8e, 0xff}}},\n    {{{ -1972,  -1279,   3058}, 0, {   810,   2012}, {0xca, 0x00, 0x8e, 0xff}}},\n    {{{ -1972,   -665,   3058}, 0, {   810,    260}, {0xca, 0x00, 0x8e, 0xff}}},\n    {{{ -1562,   -665,   2862}, 0, {  1862,    260}, {0xd9, 0xa8, 0xae, 0xff}}},\n    {{{ -1972,   -665,   3058}, 0, {   810,    260}, {0xd9, 0xa8, 0xae, 0xff}}},\n    {{{ -1995,   -562,   2958}, 0, {   842,      0}, {0xd9, 0xa8, 0xae, 0xff}}},\n    {{{ -1562,   -665,   2862}, 0, {  1862,    260}, {0xd9, 0xa7, 0xaf, 0xff}}},\n    {{{ -1995,   -562,   2958}, 0, {   842,      0}, {0xd9, 0xa7, 0xaf, 0xff}}},\n    {{{ -1623,   -562,   2779}, 0, {  1900,      0}, {0xd9, 0xa7, 0xaf, 0xff}}},\n    {{{ -1381,   -665,   2714}, 0, {  2372,    260}, {0xc8, 0xa7, 0xbb, 0xff}}},\n    {{{ -1562,   -665,   2862}, 0, {  1862,    260}, {0xc8, 0xa7, 0xbb, 0xff}}},\n    {{{ -1623,   -562,   2779}, 0, {  1900,      0}, {0xc8, 0xa7, 0xbb, 0xff}}},\n    {{{ -1454,   -562,   2641}, 0, {  2420,      0}, {0xc8, 0xa7, 0xbb, 0xff}}},\n    {{{ -1454,   -562,   2641}, 0, {   972,    344}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1623,   -562,   2779}, 0, {   810,    348}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1833,   -562,   2489}, 0, {   830,    608}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0705C590 - 0x0705C680\nstatic const Vtx inside_castle_seg7_vertex_0705C590[] = {\n    {{{ -1454,   -562,   2641}, 0, {   972,    344}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1833,   -562,   2489}, 0, {   830,    608}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1719,   -562,   2376}, 0, {   950,    612}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1623,   -562,   2779}, 0, {   810,    348}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1995,   -562,   2958}, 0, {   514,    432}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2075,   -562,   2609}, 0, {   636,    660}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1719,   -562,   2376}, 0, {  1028,      0}, {0x3f, 0xa7, 0x40, 0xff}}},\n    {{{ -1833,   -562,   2489}, 0, {   792,      0}, {0x3f, 0xa7, 0x40, 0xff}}},\n    {{{ -1791,   -665,   2304}, 0, {  1054,    260}, {0x3f, 0xa7, 0x40, 0xff}}},\n    {{{ -1833,   -562,   2489}, 0, {   792,      0}, {0x40, 0xa8, 0x40, 0xff}}},\n    {{{ -1893,   -665,   2406}, 0, {   808,    260}, {0x40, 0xa8, 0x40, 0xff}}},\n    {{{ -1791,   -665,   2304}, 0, {  1054,    260}, {0x40, 0xa8, 0x40, 0xff}}},\n    {{{ -1833,   -562,   2489}, 0, {   792,      0}, {0x28, 0xa8, 0x51, 0xff}}},\n    {{{ -2075,   -562,   2609}, 0, {   386,      0}, {0x28, 0xa8, 0x51, 0xff}}},\n    {{{ -1893,   -665,   2406}, 0, {   808,    260}, {0x28, 0xa8, 0x51, 0xff}}},\n};\n\n// 0x0705C680 - 0x0705C770\nstatic const Vtx inside_castle_seg7_vertex_0705C680[] = {\n    {{{ -1791,   -665,   2304}, 0, {  1054,    260}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1893,   -665,   2406}, 0, {   808,    260}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1893,  -1279,   2406}, 0, {   808,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2075,   -562,   2609}, 0, {   386,      0}, {0x28, 0xa8, 0x51, 0xff}}},\n    {{{ -2098,   -665,   2509}, 0, {   410,    260}, {0x28, 0xa8, 0x51, 0xff}}},\n    {{{ -1893,   -665,   2406}, 0, {   808,    260}, {0x28, 0xa8, 0x51, 0xff}}},\n    {{{ -1893,   -665,   2406}, 0, {   808,    260}, {0x39, 0x00, 0x71, 0xff}}},\n    {{{ -2098,   -665,   2509}, 0, {   410,    260}, {0x39, 0x00, 0x71, 0xff}}},\n    {{{ -1893,  -1279,   2406}, 0, {   808,   2012}, {0x39, 0x00, 0x71, 0xff}}},\n    {{{ -1791,  -1279,   2304}, 0, {  1054,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2098,  -1279,   2509}, 0, {   410,   2012}, {0x39, 0x00, 0x71, 0xff}}},\n    {{{ -1995,   -562,   2958}, 0, {   514,    432}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2407,   -562,   2958}, 0, {   282,    632}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2326,   -562,   2609}, 0, {   496,    780}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2075,   -562,   2609}, 0, {   636,    660}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0705C770 - 0x0705C870\nstatic const Vtx inside_castle_seg7_vertex_0705C770[] = {\n    {{{ -2075,   -562,   2609}, 0, {   386,      0}, {0x00, 0xa8, 0x5b, 0xff}}},\n    {{{ -2326,   -562,   2609}, 0, {    -6,      0}, {0x00, 0xa8, 0x5b, 0xff}}},\n    {{{ -2303,   -665,   2509}, 0, {    42,    260}, {0x00, 0xa8, 0x5b, 0xff}}},\n    {{{ -2098,   -665,   2509}, 0, {   410,    260}, {0x00, 0xa8, 0x5b, 0xff}}},\n    {{{ -2098,   -665,   2509}, 0, {   410,    260}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2303,   -665,   2509}, 0, {    42,    260}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2303,  -1279,   2509}, 0, {    42,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2098,  -1279,   2509}, 0, {   410,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1972,  -1279,   3058}, 0, { 16140,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2430,  -1279,   3058}, 0, { 15018,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2430,   -665,   3058}, 0, { 15018,    260}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1972,   -665,   3058}, 0, { 16140,    260}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2430,  -1279,   3058}, 0, { 15018,   2012}, {0x36, 0x00, 0x8e, 0xff}}},\n    {{{ -2839,  -1279,   2862}, 0, { 13848,   2012}, {0x36, 0x00, 0x8e, 0xff}}},\n    {{{ -2839,   -665,   2862}, 0, { 13848,    260}, {0x36, 0x00, 0x8e, 0xff}}},\n    {{{ -2430,   -665,   3058}, 0, { 15018,    260}, {0x36, 0x00, 0x8e, 0xff}}},\n};\n\n// 0x0705C870 - 0x0705C950\nstatic const Vtx inside_castle_seg7_vertex_0705C870[] = {\n    {{{ -1972,   -665,   3058}, 0, { 16140,    260}, {0x00, 0xa8, 0xa5, 0xff}}},\n    {{{ -2430,   -665,   3058}, 0, { 15018,    260}, {0x00, 0xa8, 0xa5, 0xff}}},\n    {{{ -2407,   -562,   2958}, 0, { 15050,      0}, {0x00, 0xa8, 0xa5, 0xff}}},\n    {{{ -2430,   -665,   3058}, 0, { 15018,    260}, {0x27, 0xa8, 0xae, 0xff}}},\n    {{{ -2839,   -665,   2862}, 0, { 13848,    260}, {0x27, 0xa8, 0xae, 0xff}}},\n    {{{ -2407,   -562,   2958}, 0, { 15050,      0}, {0x27, 0xa8, 0xae, 0xff}}},\n    {{{ -1995,   -562,   2958}, 0, { 16172,      0}, {0x00, 0xa8, 0xa5, 0xff}}},\n    {{{ -2839,   -665,   2862}, 0, { 13848,    260}, {0x27, 0xa8, 0xaf, 0xff}}},\n    {{{ -2779,   -562,   2779}, 0, { 13858,      0}, {0x27, 0xa8, 0xaf, 0xff}}},\n    {{{ -2407,   -562,   2958}, 0, { 15050,      0}, {0x27, 0xa8, 0xaf, 0xff}}},\n    {{{ -2407,   -562,   2958}, 0, {   282,    632}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2779,   -562,   2779}, 0, {   158,    908}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2568,   -562,   2489}, 0, {   416,    964}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2326,   -562,   2609}, 0, {   496,    780}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0705C950 - 0x0705CA30\nstatic const Vtx inside_castle_seg7_vertex_0705C950[] = {\n    {{{ -2839,  -1279,   2862}, 0, { 13848,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -3168,  -1279,   2533}, 0, { 12632,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -3168,   -665,   2533}, 0, { 12632,    260}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2839,   -665,   2862}, 0, { 13848,    260}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2839,   -665,   2862}, 0, { 13848,    260}, {0x3f, 0xa7, 0xc1, 0xff}}},\n    {{{ -3168,   -665,   2533}, 0, { 12632,    260}, {0x3f, 0xa7, 0xc1, 0xff}}},\n    {{{ -3085,   -562,   2472}, 0, { 12588,      0}, {0x3f, 0xa7, 0xc1, 0xff}}},\n    {{{ -2839,   -665,   2862}, 0, { 13848,    260}, {0x40, 0xa8, 0xc1, 0xff}}},\n    {{{ -3085,   -562,   2472}, 0, { 12588,      0}, {0x40, 0xa8, 0xc1, 0xff}}},\n    {{{ -2779,   -562,   2779}, 0, { 13858,      0}, {0x40, 0xa8, 0xc1, 0xff}}},\n    {{{ -2779,   -562,   2779}, 0, {   158,    908}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2795,   -562,   2262}, 0, {   398,   1192}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2568,   -562,   2489}, 0, {   416,    964}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3085,   -562,   2472}, 0, {   134,   1220}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0705CA30 - 0x0705CB30\nstatic const Vtx inside_castle_seg7_vertex_0705CA30[] = {\n    {{{ -2326,   -562,   2609}, 0, {  7148,      0}, {0xd8, 0xa8, 0x51, 0xff}}},\n    {{{ -2568,   -562,   2489}, 0, {  6698,      0}, {0xd8, 0xa8, 0x51, 0xff}}},\n    {{{ -2508,   -665,   2406}, 0, {  6754,    260}, {0xd8, 0xa8, 0x51, 0xff}}},\n    {{{ -2303,   -665,   2509}, 0, {  7196,    260}, {0xd8, 0xa8, 0x51, 0xff}}},\n    {{{ -2568,   -562,   2489}, 0, {  6698,      0}, {0xc0, 0xa8, 0x40, 0xff}}},\n    {{{ -2795,   -562,   2262}, 0, {  6082,      0}, {0xc0, 0xa8, 0x40, 0xff}}},\n    {{{ -2713,   -665,   2202}, 0, {  6088,    260}, {0xc0, 0xa8, 0x40, 0xff}}},\n    {{{ -2568,   -562,   2489}, 0, {  6698,      0}, {0xc1, 0xa8, 0x40, 0xff}}},\n    {{{ -2713,   -665,   2202}, 0, {  6088,    260}, {0xc1, 0xa8, 0x40, 0xff}}},\n    {{{ -2508,   -665,   2406}, 0, {  6754,    260}, {0xc1, 0xa8, 0x40, 0xff}}},\n    {{{ -2508,   -665,   2406}, 0, {  6754,    260}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{ -2713,  -1279,   2202}, 0, {  6088,   2012}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{ -2508,  -1279,   2406}, 0, {  6754,   2012}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{ -2303,   -665,   2509}, 0, {  7196,    260}, {0xc7, 0x00, 0x71, 0xff}}},\n    {{{ -2508,   -665,   2406}, 0, {  6754,    260}, {0xc7, 0x00, 0x71, 0xff}}},\n    {{{ -2508,  -1279,   2406}, 0, {  6754,   2012}, {0xc7, 0x00, 0x71, 0xff}}},\n};\n\n// 0x0705CB30 - 0x0705CC30\nstatic const Vtx inside_castle_seg7_vertex_0705CB30[] = {\n    {{{ -2508,   -665,   2406}, 0, {  6754,    260}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{ -2713,   -665,   2202}, 0, {  6088,    260}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{ -2713,  -1279,   2202}, 0, {  6088,   2012}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{ -2303,   -665,   2509}, 0, {  7196,    260}, {0xc7, 0x00, 0x71, 0xff}}},\n    {{{ -2508,  -1279,   2406}, 0, {  6754,   2012}, {0xc7, 0x00, 0x71, 0xff}}},\n    {{{ -2303,  -1279,   2509}, 0, {  7196,   2012}, {0xc7, 0x00, 0x71, 0xff}}},\n    {{{ -2795,   -562,   2262}, 0, {  6082,      0}, {0xaf, 0xa8, 0x28, 0xff}}},\n    {{{ -2915,   -562,   2020}, 0, {  5544,      0}, {0xaf, 0xa8, 0x28, 0xff}}},\n    {{{ -2713,   -665,   2202}, 0, {  6088,    260}, {0xaf, 0xa8, 0x28, 0xff}}},\n    {{{ -3168,  -1279,   2533}, 0, { 12632,   2012}, {0x72, 0x00, 0xca, 0xff}}},\n    {{{ -3364,  -1279,   2123}, 0, { 11538,   2012}, {0x72, 0x00, 0xca, 0xff}}},\n    {{{ -3364,   -665,   2123}, 0, { 11538,    260}, {0x72, 0x00, 0xca, 0xff}}},\n    {{{ -3168,   -665,   2533}, 0, { 12632,    260}, {0x72, 0x00, 0xca, 0xff}}},\n    {{{ -3168,   -665,   2533}, 0, { 12632,    260}, {0x52, 0xa8, 0xd9, 0xff}}},\n    {{{ -3364,   -665,   2123}, 0, { 11538,    260}, {0x52, 0xa8, 0xd9, 0xff}}},\n    {{{ -3264,   -562,   2100}, 0, { 11486,      0}, {0x52, 0xa8, 0xd9, 0xff}}},\n};\n\n// 0x0705CC30 - 0x0705CD30\nstatic const Vtx inside_castle_seg7_vertex_0705CC30[] = {\n    {{{ -3168,   -665,   2533}, 0, { 12632,    260}, {0x51, 0xa7, 0xd9, 0xff}}},\n    {{{ -3264,   -562,   2100}, 0, { 11486,      0}, {0x51, 0xa7, 0xd9, 0xff}}},\n    {{{ -3085,   -562,   2472}, 0, { 12588,      0}, {0x51, 0xa7, 0xd9, 0xff}}},\n    {{{ -3085,   -562,   2472}, 0, {   134,   1220}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2915,   -562,   2020}, 0, {   448,   1380}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2795,   -562,   2262}, 0, {   398,   1192}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3264,   -562,   2100}, 0, {   212,   1508}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3276,   -562,   1485}, 0, {   504,   1844}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2917,   -562,   1485}, 0, {   706,   1668}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2915,   -562,   2020}, 0, {  5544,      0}, {0xaf, 0xa8, 0x28, 0xff}}},\n    {{{ -2815,   -665,   1997}, 0, {  5534,    260}, {0xaf, 0xa8, 0x28, 0xff}}},\n    {{{ -2713,   -665,   2202}, 0, {  6088,    260}, {0xaf, 0xa8, 0x28, 0xff}}},\n    {{{ -2713,   -665,   2202}, 0, {  6088,    260}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -2815,   -665,   1997}, 0, {  5534,    260}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -2815,  -1279,   1997}, 0, {  5534,   2012}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -2713,  -1279,   2202}, 0, {  6088,   2012}, {0x8f, 0x00, 0x38, 0xff}}},\n};\n\n// 0x0705CD30 - 0x0705CE30\nstatic const Vtx inside_castle_seg7_vertex_0705CD30[] = {\n    {{{ -3364,  -1279,   2123}, 0, { 11538,   2012}, {0x7e, 0x00, 0xfe, 0xff}}},\n    {{{ -3378,  -1279,   1485}, 0, { 10196,   2012}, {0x7e, 0x00, 0xfe, 0xff}}},\n    {{{ -3378,   -665,   1485}, 0, { 10196,    260}, {0x7e, 0x00, 0xfe, 0xff}}},\n    {{{ -3364,   -665,   2123}, 0, { 11538,    260}, {0x7e, 0x00, 0xfe, 0xff}}},\n    {{{ -3364,   -665,   2123}, 0, { 11538,    260}, {0x5a, 0xa8, 0xff, 0xff}}},\n    {{{ -3378,   -665,   1485}, 0, { 10196,    260}, {0x5a, 0xa8, 0xff, 0xff}}},\n    {{{ -3264,   -562,   2100}, 0, { 11486,      0}, {0x5a, 0xa8, 0xff, 0xff}}},\n    {{{ -3378,   -665,   1485}, 0, { 10196,    260}, {0x5a, 0xa7, 0xff, 0xff}}},\n    {{{ -3276,   -562,   1485}, 0, { 10086,      0}, {0x5a, 0xa7, 0xff, 0xff}}},\n    {{{ -3264,   -562,   2100}, 0, { 11486,      0}, {0x5a, 0xa7, 0xff, 0xff}}},\n    {{{ -3264,   -562,   2100}, 0, {   212,   1508}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2917,   -562,   1485}, 0, {   706,   1668}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2915,   -562,   2020}, 0, {   448,   1380}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2915,   -562,   2020}, 0, {  5544,      0}, {0xa6, 0xa7, 0x00, 0xff}}},\n    {{{ -2917,   -562,   1485}, 0, {  4606,      0}, {0xa6, 0xa7, 0x00, 0xff}}},\n    {{{ -2815,   -665,   1485}, 0, {  4496,    260}, {0xa6, 0xa7, 0x00, 0xff}}},\n};\n\n// 0x0705CE30 - 0x0705CEA0\nstatic const Vtx inside_castle_seg7_vertex_0705CE30[] = {\n    {{{ -2915,   -562,   2020}, 0, {  5544,      0}, {0xa5, 0xa8, 0x00, 0xff}}},\n    {{{ -2815,   -665,   1485}, 0, {  4496,    260}, {0xa5, 0xa8, 0x00, 0xff}}},\n    {{{ -2815,   -665,   1997}, 0, {  5534,    260}, {0xa5, 0xa8, 0x00, 0xff}}},\n    {{{ -2815,   -665,   1997}, 0, {  5534,    260}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2815,   -665,   1485}, 0, {  4496,    260}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2815,  -1279,   1485}, 0, {  4496,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2815,  -1279,   1997}, 0, {  5534,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0705CEA0 - 0x0705D098\nstatic const Gfx inside_castle_seg7_dl_0705CEA0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_0900B000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_07059200.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07059200.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_070592C0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_07059218.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07059218.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07059340, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_07059230.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07059230.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07059380, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_07059248.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07059248.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_070593C0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_07059260.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07059260.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07059400, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_07059278.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07059278.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07059440, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_07059290.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07059290.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07059480, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_070592A8.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_070592A8.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_070594C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070595C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070596C0, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0705D098 - 0x0705D480\nstatic const Gfx inside_castle_seg7_dl_0705D098[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_07059248.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07059248.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_070596F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070597E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070598D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070599C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07059AB0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07059BA0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07059C90, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07059D80, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  6,  1, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_070592A8.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_070592A8.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07059DF0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07059EE0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07059FD0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705A0C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705A1B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705A2A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705A390, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0705D480 - 0x0705D550\nstatic const Gfx inside_castle_seg7_dl_0705D480[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0705A490, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  1,  7,  8, 0x0),\n    gsSP2Triangles( 1,  8,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(10, 12, 13, 0x0,  1,  9,  2, 0x0),\n    gsSP2Triangles( 0,  2, 14, 0x0,  0, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705A590, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 0,  2,  5, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(10, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705A670, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0705D550 - 0x0705DAD0\nstatic const Gfx inside_castle_seg7_dl_0705D550[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0705A6B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  4,  3, 0x0,  5,  4,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 9,  7, 10, 0x0, 11,  0, 12, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705A7B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 3,  4,  0, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705A8A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705A990, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles( 7, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705AA70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705AB60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 8, 11,  9, 0x0,  8, 10,  6, 0x0),\n    gsSP2Triangles( 6, 12,  7, 0x0,  6, 13, 12, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705AC50, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705AD40, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 10, 12, 0x0),\n    gsSP1Triangle(13, 14, 10, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705AE30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 12,  9, 11, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705AF30, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705B020, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705B100, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705B200, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705B300, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  6,  9,  4, 0x0),\n    gsSP2Triangles( 6, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705B3E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 3,  0,  2, 0x0,  2,  5,  6, 0x0),\n    gsSP2Triangles( 2,  6,  3, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705B4E0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705B5C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705B6C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11,  0, 12, 0x0),\n    gsSP2Triangles(11, 13,  0, 0x0, 11, 12, 14, 0x0),\n    gsSP1Triangle( 0,  2, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705B7B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  6,  7,  3, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705B8B0, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle( 8, 10,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0705DAD0 - 0x0705DD60\nstatic const Gfx inside_castle_seg7_dl_0705DAD0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0705B960, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 7, 14,  8, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705BA50, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705BB30, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  9,  8, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705BC20, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(13, 12, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705BD10, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705BDF0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705BEE0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 3, 10,  4, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705BFD0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 7, 14,  8, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705C0C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 4, 14,  5, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705C1B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0705DD60 - 0x0705E088\nstatic const Gfx inside_castle_seg7_dl_0705DD60[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09009000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0705C2A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705C390, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  3,  6, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11,  7, 10, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705C490, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705C590, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  1, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705C680, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  0,  2,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705C770, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705C870, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  2,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705C950, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705CA30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705CB30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705CC30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705CD30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705CE30, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 3,  5,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0705E088 - 0x0705E138\nconst Gfx inside_castle_seg7_dl_0705E088[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_0705CEA0),\n    gsSPDisplayList(inside_castle_seg7_dl_0705D098),\n    gsSPDisplayList(inside_castle_seg7_dl_0705D480),\n    gsSPDisplayList(inside_castle_seg7_dl_0705D550),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_0705DAD0),\n    gsSPDisplayList(inside_castle_seg7_dl_0705DD60),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/3/10/model.inc.c",
    "content": "// 0x07066F00 - 0x07066F18\nstatic const Lights1 inside_castle_seg7_lights_07066F00 = gdSPDefLights1(\n    0x5f, 0x5f, 0x5f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07066F18 - 0x07066F58\nstatic const Vtx inside_castle_seg7_vertex_07066F18[] = {\n    {{{  6323,  -1125,  -1269}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6477,  -1125,  -1269}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6477,   -972,  -1269}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6323,   -972,  -1269}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07066F58 - 0x07066FA0\nstatic const Gfx inside_castle_seg7_dl_07066F58[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_07066F00.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07066F00.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07066F18, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07066FA0 - 0x07067010\nconst Gfx inside_castle_seg7_dl_07066FA0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07066F58),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/3/11/model.inc.c",
    "content": "// 0x07067010 - 0x07067028\nstatic const Lights1 inside_castle_seg7_lights_07067010 = gdSPDefLights1(\n    0x39, 0x39, 0x39,\n    0x99, 0x99, 0x99, 0x28, 0x28, 0x28\n);\n\n// 0x07067028 - 0x07067040\nstatic const Lights1 inside_castle_seg7_lights_07067028 = gdSPDefLights1(\n    0x5f, 0x5f, 0x5f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07067040 - 0x07067058\nstatic const Lights1 inside_castle_seg7_lights_07067040 = gdSPDefLights1(\n    0x4c, 0x42, 0x38,\n    0xcd, 0xb2, 0x97, 0x28, 0x28, 0x28\n);\n\n// 0x07067058 - 0x07067070\nstatic const Lights1 inside_castle_seg7_lights_07067058 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x07067070 - 0x070670F0\nstatic const Vtx inside_castle_seg7_vertex_07067070[] = {\n    {{{  3430,  -1074,   1587}, 0, { -1562,   8398}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4352,  -1074,   1792}, 0, {  -540,   3798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6554,  -1074,   1587}, 0, { -1564,  -7186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4352,  -1074,   2202}, 0, {  1502,   3798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6554,  -1074,   2406}, 0, {  2522,  -7186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3942,  -1074,   1792}, 0, {  -540,   5842}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3430,  -1074,   2406}, 0, {  2524,   8398}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3942,  -1074,   2202}, 0, {  1502,   5842}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070670F0 - 0x07067190\nstatic const Vtx inside_castle_seg7_vertex_070670F0[] = {\n    {{{   307,  -1074,   2150}, 0, { -5396,    734}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   358,  -1074,   1843}, 0, { -5140,   -798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   307,  -1074,   1843}, 0, { -5396,   -798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   358,  -1074,   2150}, 0, { -5140,    734}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   563,  -1074,   1587}, 0, { -4118,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   358,  -1074,   2202}, 0, { -5140,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   563,  -1074,   2406}, 0, { -4118,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3430,  -1074,   2406}, 0, { 10188,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3430,  -1074,   1587}, 0, { 10188,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   358,  -1074,   1792}, 0, { -5140,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07067190 - 0x07067280\nstatic const Vtx inside_castle_seg7_vertex_07067190[] = {\n    {{{  4352,  -1074,   1792}, 0, { -3096,    990}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  4301,   -972,   2150}, 0, {   478,      0}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  4352,  -1074,   2202}, 0, {   990,    990}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  3994,   -972,   1843}, 0, {   478,      0}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  4301,   -972,   1843}, 0, {  3544,      0}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  4352,  -1074,   1792}, 0, {  4056,    990}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  3942,  -1074,   1792}, 0, {     0,    990}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  4301,   -972,   2150}, 0, {  3544,      0}, {0x00, 0x39, 0x71, 0xff}}},\n    {{{  3994,   -972,   2150}, 0, {   478,      0}, {0x00, 0x39, 0x71, 0xff}}},\n    {{{  3942,  -1074,   2202}, 0, {     0,    990}, {0x00, 0x39, 0x71, 0xff}}},\n    {{{  4352,  -1074,   2202}, 0, {  4056,    990}, {0x00, 0x39, 0x71, 0xff}}},\n    {{{  3942,  -1074,   2202}, 0, {   990,    990}, {0x8f, 0x39, 0x00, 0xff}}},\n    {{{  3994,   -972,   2150}, 0, {   478,      0}, {0x8f, 0x39, 0x00, 0xff}}},\n    {{{  3994,   -972,   1843}, 0, { -2584,      0}, {0x8f, 0x39, 0x00, 0xff}}},\n    {{{  3942,  -1074,   1792}, 0, { -3096,    990}, {0x8f, 0x39, 0x00, 0xff}}},\n};\n\n// 0x07067280 - 0x07067370\nstatic const Vtx inside_castle_seg7_vertex_07067280[] = {\n    {{{  4301,   -972,   2150}, 0, { -1564,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4301,   -972,   1843}, 0, {  1502,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4250,   -972,   1894}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4352,  -1074,   1792}, 0, { -3096,    990}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  4301,   -972,   1843}, 0, { -2584,      0}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  4301,   -972,   2150}, 0, {   478,      0}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  4045,   -972,   2099}, 0, {  2012,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4045,   -972,   1894}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3994,   -972,   1843}, 0, {  -542,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3994,   -972,   2150}, 0, {  2522,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4301,   -972,   2150}, 0, {  2522,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4250,   -972,   2099}, 0, {  2012,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4045,   -972,   2099}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3994,   -972,   2150}, 0, {  -540,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4250,   -972,   2099}, 0, { -1052,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07067370 - 0x07067460\nstatic const Vtx inside_castle_seg7_vertex_07067370[] = {\n    {{{  4045,   -972,   1894}, 0, { -1052,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4045,  -1279,   1894}, 0, { -1052,   4054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4250,  -1279,   1894}, 0, {   990,   4054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4250,   -972,   1894}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4301,   -972,   1843}, 0, {  -540,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3994,   -972,   1843}, 0, {  2522,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4045,   -972,   1894}, 0, {  2012,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4250,   -972,   2099}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4045,  -1279,   2099}, 0, { -1052,   4054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4045,   -972,   2099}, 0, { -1052,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4250,  -1279,   2099}, 0, {   990,   4054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4045,   -972,   2099}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4045,  -1279,   2099}, 0, {   990,   4054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4045,  -1279,   1894}, 0, { -1052,   4054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4045,   -972,   1894}, 0, { -1052,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07067460 - 0x070674D0\nstatic const Vtx inside_castle_seg7_vertex_07067460[] = {\n    {{{  4250,   -972,   1894}, 0, { -1052,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4250,  -1279,   2099}, 0, {   990,   4054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4250,   -972,   2099}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4045,   -972,   1894}, 0, { -1052,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4250,  -1279,   1894}, 0, {   990,   4054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4250,   -972,   1894}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4250,  -1279,   1894}, 0, { -1052,   4054}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070674D0 - 0x070675D0\nstatic const Vtx inside_castle_seg7_vertex_070674D0[] = {\n    {{{   358,   -818,   1843}, 0, {  2778,   -288}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   358,  -1074,   1843}, 0, {  2778,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   358,  -1074,   1792}, 0, {  3034,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   358,   -255,   1792}, 0, {  3034,  -3098}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   358,   -818,   2150}, 0, {  1246,   -288}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   358,   -255,   2202}, 0, {   990,  -3098}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   358,  -1074,   2202}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   358,  -1074,   2150}, 0, {  1246,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   563,   -255,   2406}, 0, {     0,  -3098}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{   563,  -1074,   2406}, 0, {     0,    990}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{   358,  -1074,   2202}, 0, {   990,    990}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{   358,   -255,   2202}, 0, {   990,  -3098}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{   358,  -1074,   2150}, 0, {   224,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   307,  -1074,   2150}, 0, {   480,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   307,   -818,   2150}, 0, {   480,   -288}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   358,   -818,   2150}, 0, {   224,   -288}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070675D0 - 0x070676D0\nstatic const Vtx inside_castle_seg7_vertex_070675D0[] = {\n    {{{   563,   -255,   2406}, 0, {-11782,   -714}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   358,   -255,   1792}, 0, {-12804,   1328}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   563,   -255,   1587}, 0, {-11782,   2010}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   307,  -1074,   1843}, 0, {   480,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   358,  -1074,   1843}, 0, {   224,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   358,   -818,   1843}, 0, {   224,   -288}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   307,   -818,   1843}, 0, {   480,   -288}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   307,   -818,   1843}, 0, {   480,   -288}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   358,   -818,   2150}, 0, {   224,   -288}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   307,   -818,   2150}, 0, {   480,   -288}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   358,   -818,   1843}, 0, {   224,   -288}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3379,   -255,   2406}, 0, {  2522,   -714}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   358,   -255,   2202}, 0, {-12804,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   563,  -1074,   1587}, 0, { -9228,   4054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3379,   -255,   1587}, 0, {  5078,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   563,   -255,   1587}, 0, { -9228,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070676D0 - 0x070677B0\nstatic const Vtx inside_castle_seg7_vertex_070676D0[] = {\n    {{{  3379,   -255,   2406}, 0, {  2522,   -714}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   563,   -255,   1587}, 0, {-11782,   2010}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3379,   -255,   1587}, 0, {  2522,   2010}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3379,  -1074,   2406}, 0, { -4118,   4054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   563,   -255,   2406}, 0, { 10188,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3379,   -255,   2406}, 0, { -4118,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   563,  -1074,   2406}, 0, { 10188,   4054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   358,   -255,   1792}, 0, {  3034,  -3098}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   358,  -1074,   1792}, 0, {  3034,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   563,  -1074,   1587}, 0, {  4056,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   563,   -255,   1587}, 0, {  4056,  -3098}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   563,  -1074,   1587}, 0, { -9228,   4054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3379,  -1074,   1587}, 0, {  5078,   4054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3379,   -255,   1587}, 0, {  5078,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070677B0 - 0x070678B0\nstatic const Vtx inside_castle_seg7_vertex_070677B0[] = {\n    {{{  3482,  -1074,   1638}, 0, {   650,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3482,   -306,   1638}, 0, {   650,     96}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3430,   -306,   1638}, 0, {   308,     96}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3430,  -1074,   1638}, 0, {   308,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3533,  -1074,   1587}, 0, {   990,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3482,   -306,   1638}, 0, {   650,     96}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3482,  -1074,   1638}, 0, {   650,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3430,  -1074,   1638}, 0, {   308,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3379,   -255,   1587}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3379,  -1074,   1587}, 0, {     0,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3430,   -306,   1638}, 0, {   308,     96}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3533,   -255,   1587}, 0, {   990,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3379,   -255,   2406}, 0, {     0,      0}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  3430,   -306,   1638}, 0, {   308,   1884}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  3430,   -306,   2355}, 0, {   308,     96}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  3379,   -255,   1587}, 0, {     0,   2012}, {0xa7, 0xa7, 0x00, 0xff}}},\n};\n\n// 0x070678B0 - 0x070679B0\nstatic const Vtx inside_castle_seg7_vertex_070678B0[] = {\n    {{{  3430,   -306,   2355}, 0, {   308,     96}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3430,   -306,   1638}, 0, {   308,   1884}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3482,   -306,   1638}, 0, {   650,   1884}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3482,   -306,   2355}, 0, {   650,     96}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3482,   -306,   2355}, 0, {   650,     96}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{  3482,   -306,   1638}, 0, {   650,   1884}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{  3533,   -255,   1587}, 0, {   990,   2012}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{  3533,   -255,   2406}, 0, {   990,      0}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{  3379,  -1074,   2406}, 0, {   990,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  3379,   -255,   2406}, 0, {   990,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  3430,   -306,   2355}, 0, {   650,     96}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  3430,  -1074,   2355}, 0, {   650,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  3430,  -1074,   2355}, 0, {   650,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3482,   -306,   2355}, 0, {   308,     96}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3482,  -1074,   2355}, 0, {   308,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3430,   -306,   2355}, 0, {   650,     96}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070679B0 - 0x07067AB0\nstatic const Vtx inside_castle_seg7_vertex_070679B0[] = {\n    {{{  3482,  -1074,   2355}, 0, {   308,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  3482,   -306,   2355}, 0, {   308,     96}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  3533,   -255,   2406}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  3533,  -1074,   2406}, 0, {     0,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2611,   -255,   2406}, 0, {     0,      0}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  2662,   -306,   1638}, 0, {   308,   1884}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  2662,   -306,   2355}, 0, {   308,     96}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  2611,   -255,   1587}, 0, {     0,   2012}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  2662,   -306,   2355}, 0, {   308,     96}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2662,   -306,   1638}, 0, {   308,   1884}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2714,   -306,   1638}, 0, {   650,   1884}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2714,   -306,   2355}, 0, {   650,     96}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2714,   -306,   2355}, 0, {   650,     96}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{  2714,   -306,   1638}, 0, {   650,   1884}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{  2765,   -255,   1587}, 0, {   990,   2012}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{  2765,   -255,   2406}, 0, {   990,      0}, {0x59, 0xa7, 0x00, 0xff}}},\n};\n\n// 0x07067AB0 - 0x07067BA0\nstatic const Vtx inside_castle_seg7_vertex_07067AB0[] = {\n    {{{  2714,  -1074,   2355}, 0, {   308,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2765,   -255,   2406}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2765,  -1074,   2406}, 0, {     0,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2662,  -1074,   2355}, 0, {   650,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2714,   -306,   2355}, 0, {   308,     96}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2714,  -1074,   2355}, 0, {   308,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2714,   -306,   2355}, 0, {   308,     96}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2662,   -306,   2355}, 0, {   650,     96}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2611,  -1074,   2406}, 0, {   990,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2662,   -306,   2355}, 0, {   650,     96}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2662,  -1074,   2355}, 0, {   650,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2611,   -255,   2406}, 0, {   990,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2714,  -1074,   1638}, 0, {   650,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2662,   -306,   1638}, 0, {   308,     96}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2662,  -1074,   1638}, 0, {   308,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07067BA0 - 0x07067C90\nstatic const Vtx inside_castle_seg7_vertex_07067BA0[] = {\n    {{{  2662,  -1074,   1638}, 0, {   308,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2611,   -255,   1587}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2611,  -1074,   1587}, 0, {     0,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2662,   -306,   1638}, 0, {   308,     96}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2765,  -1074,   1587}, 0, {   990,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2714,   -306,   1638}, 0, {   650,     96}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2714,  -1074,   1638}, 0, {   650,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2714,  -1074,   1638}, 0, {   650,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2714,   -306,   1638}, 0, {   650,     96}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2662,   -306,   1638}, 0, {   308,     96}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2765,   -255,   1587}, 0, {   990,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1997,  -1074,   1587}, 0, {   990,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1997,   -255,   1587}, 0, {   990,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1946,   -306,   1638}, 0, {   650,     96}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1946,  -1074,   1638}, 0, {   650,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07067C90 - 0x07067D90\nstatic const Vtx inside_castle_seg7_vertex_07067C90[] = {\n    {{{  1946,  -1074,   1638}, 0, {   650,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1894,   -306,   1638}, 0, {   308,     96}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1894,  -1074,   1638}, 0, {   308,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1946,   -306,   1638}, 0, {   650,     96}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1894,  -1074,   1638}, 0, {   308,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1843,   -255,   1587}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1843,  -1074,   1587}, 0, {     0,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1894,   -306,   1638}, 0, {   308,     96}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1843,  -1074,   2406}, 0, {   990,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1894,   -306,   2355}, 0, {   650,     96}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1894,  -1074,   2355}, 0, {   650,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1843,   -255,   2406}, 0, {   990,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1894,  -1074,   2355}, 0, {   650,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1894,   -306,   2355}, 0, {   650,     96}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1946,   -306,   2355}, 0, {   308,     96}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1946,  -1074,   2355}, 0, {   308,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07067D90 - 0x07067E90\nstatic const Vtx inside_castle_seg7_vertex_07067D90[] = {\n    {{{  1946,  -1074,   2355}, 0, {   308,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1946,   -306,   2355}, 0, {   308,     96}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1997,   -255,   2406}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1997,  -1074,   2406}, 0, {     0,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1946,   -306,   2355}, 0, {   650,     96}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{  1997,   -255,   1587}, 0, {   990,   2012}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{  1997,   -255,   2406}, 0, {   990,      0}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{  1946,   -306,   1638}, 0, {   650,   1884}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{  1894,   -306,   2355}, 0, {   308,     96}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1946,   -306,   1638}, 0, {   650,   1884}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1946,   -306,   2355}, 0, {   650,     96}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1894,   -306,   1638}, 0, {   308,   1884}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1843,   -255,   2406}, 0, {     0,      0}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  1894,   -306,   1638}, 0, {   308,   1884}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  1894,   -306,   2355}, 0, {   308,     96}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  1843,   -255,   1587}, 0, {     0,   2012}, {0xa7, 0xa7, 0x00, 0xff}}},\n};\n\n// 0x07067E90 - 0x07067F90\nstatic const Vtx inside_castle_seg7_vertex_07067E90[] = {\n    {{{  1075,   -255,   2406}, 0, {     0,      0}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  1126,   -306,   1638}, 0, {   308,   1884}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  1126,   -306,   2355}, 0, {   308,     96}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  1075,   -255,   1587}, 0, {     0,   2012}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  1126,   -306,   2355}, 0, {   308,     96}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1126,   -306,   1638}, 0, {   308,   1884}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1178,   -306,   1638}, 0, {   650,   1884}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1178,   -306,   2355}, 0, {   650,     96}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1178,   -306,   2355}, 0, {   650,     96}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{  1178,   -306,   1638}, 0, {   650,   1884}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{  1229,   -255,   1587}, 0, {   990,   2012}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{  1229,   -255,   2406}, 0, {   990,      0}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{  1075,  -1074,   2406}, 0, {   990,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1126,   -306,   2355}, 0, {   650,     96}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1126,  -1074,   2355}, 0, {   650,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1075,   -255,   2406}, 0, {   990,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07067F90 - 0x07068090\nstatic const Vtx inside_castle_seg7_vertex_07067F90[] = {\n    {{{  1126,  -1074,   2355}, 0, {   650,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1178,   -306,   2355}, 0, {   308,     96}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1178,  -1074,   2355}, 0, {   308,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1126,   -306,   2355}, 0, {   650,     96}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1178,  -1074,   2355}, 0, {   308,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1178,   -306,   2355}, 0, {   308,     96}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1229,   -255,   2406}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1229,  -1074,   2406}, 0, {     0,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1229,  -1074,   1587}, 0, {   990,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1229,   -255,   1587}, 0, {   990,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1178,   -306,   1638}, 0, {   650,     96}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1178,  -1074,   1638}, 0, {   650,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1178,  -1074,   1638}, 0, {   650,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1126,   -306,   1638}, 0, {   308,     96}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1126,  -1074,   1638}, 0, {   308,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1178,   -306,   1638}, 0, {   650,     96}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07068090 - 0x070680D0\nstatic const Vtx inside_castle_seg7_vertex_07068090[] = {\n    {{{  1126,  -1074,   1638}, 0, {   308,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1075,   -255,   1587}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1075,  -1074,   1587}, 0, {     0,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1126,   -306,   1638}, 0, {   308,     96}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x070680D0 - 0x070681D0\nstatic const Vtx inside_castle_seg7_vertex_070680D0[] = {\n    {{{  6554,   -255,   2406}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6554,  -1074,   2406}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3533,  -1074,   2406}, 0, { -6546,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6554,  -1074,   2406}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6554,   -255,   1587}, 0, { -1052,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6554,  -1074,   1587}, 0, { -1052,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6554,   -255,   2406}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6554,   -255,   1587}, 0, {   334,   1200}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3533,   -255,   2406}, 0, {   626,    516}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3533,   -255,   1587}, 0, {   334,    516}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  6554,   -255,   2406}, 0, {   626,   1200}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3533,  -1074,   1587}, 0, { -6546,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6554,  -1074,   1587}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6554,   -255,   1587}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3533,   -255,   1587}, 0, { -6546,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3533,   -255,   2406}, 0, { -6546,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070681D0 - 0x07068210\nstatic const Vtx inside_castle_seg7_vertex_070681D0[] = {\n    {{{  4250,  -1279,   2099}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4045,  -1279,   1894}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4045,  -1279,   2099}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4250,  -1279,   1894}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07068210 - 0x07068288\nstatic const Gfx inside_castle_seg7_dl_07068210[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_0900B000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_07067010.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07067010.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07067070, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 2,  1,  3, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 6,  3,  7, 0x0,  6,  4,  3, 0x0),\n    gsSP2Triangles( 6,  7,  5, 0x0,  6,  5,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07068288 - 0x070682F0\nstatic const Gfx inside_castle_seg7_dl_07068288[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_07067028.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07067028.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_070670F0, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  4,  9,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070682F0 - 0x070683F0\nstatic const Gfx inside_castle_seg7_dl_070682F0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07067190, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07067280, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07067370, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07067460, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  6,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070683F0 - 0x070684E8\nstatic const Gfx inside_castle_seg7_dl_070683F0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_070674D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  0,  3, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 6,  4,  5, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070675D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11,  0,  2, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070676D0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070684E8 - 0x070687A8\nstatic const Gfx inside_castle_seg7_dl_070684E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_07067040.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07067040.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_070677B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  4, 11,  5, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070678B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070679B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07067AB0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  3,  7,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07067BA0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 4, 10,  5, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07067C90, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07067D90, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07067E90, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07067F90, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07068090, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070687A8 - 0x07068820\nstatic const Gfx inside_castle_seg7_dl_070687A8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09009000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_07067028.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07067028.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_070680D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07068820 - 0x07068850\nstatic const Gfx inside_castle_seg7_dl_07068820[] = {\n    gsSPLight(&inside_castle_seg7_lights_07067058.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07067058.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_070681D0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07068850 - 0x07068908\nconst Gfx inside_castle_seg7_dl_07068850[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07068210),\n    gsSPDisplayList(inside_castle_seg7_dl_07068288),\n    gsSPDisplayList(inside_castle_seg7_dl_070682F0),\n    gsSPDisplayList(inside_castle_seg7_dl_070683F0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_070684E8),\n    gsSPDisplayList(inside_castle_seg7_dl_070687A8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(inside_castle_seg7_dl_07068820),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/3/2/model.inc.c",
    "content": "// 0x0705E138 - 0x0705E238\nstatic const Vtx inside_castle_seg7_vertex_0705E138[] = {\n    {{{ -1586,   -972,   1567}, 0, { -2074,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1893,   -972,   1567}, 0, { -5140,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1893,  -1074,   1567}, 0, { -5140,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -439,  -1074,   2816}, 0, { 10188,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -439,   -972,   1784}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -439,  -1074,   1784}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -439,   -972,   2816}, 0, { 10188,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -656,  -1074,   1567}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -439,   -972,   1784}, 0, {  2858,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -656,   -972,   1567}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -439,  -1074,   1784}, 0, {  2858,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -656,   -972,   1567}, 0, {  7122,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1177,   -972,   1567}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1177,  -1074,   1567}, 0, {  2012,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -656,  -1074,   1567}, 0, {  7122,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1586,  -1074,   1567}, 0, { -2074,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0705E238 - 0x0705E2A0\nstatic const Gfx inside_castle_seg7_dl_0705E238[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0705E138, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0705E2A0 - 0x0705E310\nconst Gfx inside_castle_seg7_dl_0705E2A0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_0705E238),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/3/3/model.inc.c",
    "content": "// 0x0705E310 - 0x0705E328\nstatic const Lights1 inside_castle_seg7_lights_0705E310 = gdSPDefLights1(\n    0x00, 0x5f, 0x5f,\n    0x00, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0705E328 - 0x0705E3E8\nstatic const Vtx inside_castle_seg7_vertex_0705E328[] = {\n    {{{  -101,   -429,   1075}, 0, {   990,   -102}, {0x00, 0x00, 0x81, 0x60}}},\n    {{{  -562,   -858,   1075}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0x60}}},\n    {{{  -562,   -429,   1075}, 0, {     0,   -102}, {0x00, 0x00, 0x81, 0x60}}},\n    {{{  -101,   -858,   1075}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0x60}}},\n    {{{  -562,   -858,   1075}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0x60}}},\n    {{{  -101,   -858,   1075}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0x60}}},\n    {{{  -101,   -858,   1178}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0x60}}},\n    {{{  -562,   -858,   1178}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0x60}}},\n    {{{  -562,   -460,   1178}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x60}}},\n    {{{  -101,   -858,   1178}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0x60}}},\n    {{{  -101,   -460,   1178}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0x60}}},\n    {{{  -562,   -858,   1178}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0x60}}},\n};\n\n// 0x0705E3E8 - 0x0705E450\nstatic const Gfx inside_castle_seg7_dl_0705E3E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, texture_castle_light),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_0705E310.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0705E310.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0705E328, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0705E450 - 0x0705E4C0\nconst Gfx inside_castle_seg7_dl_0705E450[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_0705E3E8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/3/4/model.inc.c",
    "content": "// 0x0705E4C0 - 0x0705E4D8\nstatic const Lights1 inside_castle_seg7_lights_0705E4C0 = gdSPDefLights1(\n    0x1e, 0x35, 0x40,\n    0x52, 0x8e, 0xac, 0x28, 0x28, 0x28\n);\n\n// 0x0705E4D8 - 0x0705E4F0\nstatic const Lights1 inside_castle_seg7_lights_0705E4D8 = gdSPDefLights1(\n    0x5f, 0x5f, 0x5f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0705E4F0 - 0x0705E508\nstatic const Lights1 inside_castle_seg7_lights_0705E4F0 = gdSPDefLights1(\n    0x26, 0x26, 0x26,\n    0x66, 0x66, 0x66, 0x28, 0x28, 0x28\n);\n\n// 0x0705E508 - 0x0705E520\nstatic const Lights1 inside_castle_seg7_lights_0705E508 = gdSPDefLights1(\n    0x33, 0x33, 0x33,\n    0x88, 0x88, 0x88, 0x28, 0x28, 0x28\n);\n\n// 0x0705E520 - 0x0705E538\nstatic const Lights1 inside_castle_seg7_lights_0705E520 = gdSPDefLights1(\n    0x38, 0x4c, 0x3c,\n    0x97, 0xcd, 0xa0, 0x28, 0x28, 0x28\n);\n\n// 0x0705E538 - 0x0705E628\nstatic const Vtx inside_castle_seg7_vertex_0705E538[] = {\n    {{{ -1074,  -1125,  -3941}, 0, {  6100,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1689,  -1177,  -3941}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1074,  -1177,  -3941}, 0, {  6100,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -665,  -1177,  -3327}, 0, {  9166,      0}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{  -665,  -1279,  -3327}, 0, {  9166,    990}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{  -562,  -1279,  -3429}, 0, { 10188,    990}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{  -562,  -1177,  -3429}, 0, { 10188,      0}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{ -2098,  -1177,  -3327}, 0, { -5140,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -665,  -1279,  -3327}, 0, {  9166,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -665,  -1177,  -3327}, 0, {  9166,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2098,  -1279,  -3327}, 0, { -5140,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2201,  -1177,  -3429}, 0, { -6162,      0}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{ -2098,  -1279,  -3327}, 0, { -5140,    990}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{ -2098,  -1177,  -3327}, 0, { -5140,      0}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{ -2201,  -1279,  -3429}, 0, { -6162,    990}, {0xa7, 0x00, 0x5a, 0xff}}},\n};\n\n// 0x0705E628 - 0x0705E728\nstatic const Vtx inside_castle_seg7_vertex_0705E628[] = {\n    {{{ -1074,   -460,  -3941}, 0, {  6100,  -6164}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1689,   -511,  -3941}, 0, {     0,  -5652}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1074,   -511,  -3941}, 0, {  6100,  -5652}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1689,   -460,  -3941}, 0, {     0,  -6164}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   870,  -1074,  -3020}, 0, { -2074,      0}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{   870,  -1305,  -3020}, 0, { -2074,   2266}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{   666,  -1305,  -2815}, 0, {     0,   2266}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{ -1074,  -1125,  -3941}, 0, {  6100,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1689,  -1125,  -3941}, 0, {     0,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1689,  -1177,  -3941}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   666,  -1074,  -2815}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   666,  -1305,  -2508}, 0, {  3034,   2266}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   666,  -1074,  -2508}, 0, {  3034,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   666,  -1074,  -2508}, 0, {  3034,      0}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{   666,  -1305,  -2508}, 0, {  3034,   2266}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{   870,  -1305,  -2303}, 0, {  5078,   2266}, {0xa6, 0x00, 0x59, 0xff}}},\n};\n\n// 0x0705E728 - 0x0705E7B8\nstatic const Vtx inside_castle_seg7_vertex_0705E728[] = {\n    {{{   666,  -1074,  -2508}, 0, {  3034,      0}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{   870,  -1305,  -2303}, 0, {  5078,   2266}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{   870,  -1074,  -2303}, 0, {  5078,      0}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{   666,  -1074,  -2815}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   666,  -1305,  -2815}, 0, {     0,   2266}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   666,  -1305,  -2508}, 0, {  3034,   2266}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   870,  -1074,  -3020}, 0, { -2074,      0}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{   666,  -1305,  -2815}, 0, {     0,   2266}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{   666,  -1074,  -2815}, 0, {     0,      0}, {0xa6, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0705E7B8 - 0x0705E878\nstatic const Vtx inside_castle_seg7_vertex_0705E7B8[] = {\n    {{{   358,  -1305,  -2815}, 0, {     0,   2266}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   666,  -1305,  -3122}, 0, { -3096,   2266}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   666,  -1279,  -3122}, 0, { -3096,   2010}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   358,  -1279,  -2815}, 0, {     0,   2010}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   358,  -1279,  -2508}, 0, {  3034,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   358,  -1305,  -2815}, 0, {     0,   2266}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   358,  -1279,  -2815}, 0, {     0,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   666,  -1279,  -2201}, 0, {  6100,   2010}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   666,  -1305,  -2201}, 0, {  6100,   2266}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   358,  -1305,  -2508}, 0, {  3034,   2266}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   358,  -1279,  -2508}, 0, {  3034,   2010}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   358,  -1305,  -2508}, 0, {  3034,   2266}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0705E878 - 0x0705E8B8\nstatic const Vtx inside_castle_seg7_vertex_0705E878[] = {\n    {{{   717,  -1177,   -793}, 0, {  4184, -11784}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   666,  -1177,   -946}, 0, {  3418, -11530}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   666,  -1177,   -793}, 0, {  4184, -11530}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   717,  -1177,   -946}, 0, {  3418, -11784}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0705E8B8 - 0x0705E9A8\nstatic const Vtx inside_castle_seg7_vertex_0705E8B8[] = {\n    {{{ -4146,  -1381,   -972}, 0, {  3290,  12486}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3532,  -1381,   -972}, 0, {  3290,   9420}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3532,  -1381,  -1484}, 0, {   734,   9420}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2098,  -1177,  -1177}, 0, {  2268,   2266}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,  -1177,  -1893}, 0, { -1308,  -2332}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2098,  -1177,  -1893}, 0, { -1308,   2266}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,  -1177,  -1177}, 0, {  2268,  -2332}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,  -1177,  -1996}, 0, { -1818,  -2332}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1689,  -1177,  -1996}, 0, { -1818,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1689,  -1177,  -1893}, 0, { -1308,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4146,  -1381,  -1484}, 0, {   734,  12486}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4146,  -1279,   -255}, 0, {  6866,  12486}, {0x00, 0x7d, 0xef, 0xff}}},\n    {{{ -3532,  -1381,   -972}, 0, {  3290,   9420}, {0x00, 0x7d, 0xef, 0xff}}},\n    {{{ -4146,  -1381,   -972}, 0, {  3290,  12486}, {0x00, 0x7d, 0xef, 0xff}}},\n    {{{ -3532,  -1279,   -255}, 0, {  6866,   9420}, {0x00, 0x7d, 0xef, 0xff}}},\n};\n\n// 0x0705E9A8 - 0x0705EA98\nstatic const Vtx inside_castle_seg7_vertex_0705E9A8[] = {\n    {{{ -3532,  -1279,   -255}, 0, {  6866,   9420}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4146,  -1279,   -255}, 0, {  6866,  12486}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4146,  -1279,    973}, 0, { 12998,  12486}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3532,  -1279,    256}, 0, {  9422,   9420}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2098,  -1177,    973}, 0, { 12998,   2266}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1586,  -1177,    973}, 0, { 12998,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1484,  -1177,  -1177}, 0, {  2268,   -798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2815,  -1279,   1075}, 0, { 13510,   5842}, {0xef, 0x7d, 0x00, 0xff}}},\n    {{{ -2098,  -1177,    973}, 0, { 12998,   2266}, {0xef, 0x7d, 0x00, 0xff}}},\n    {{{ -2815,  -1279,    358}, 0, {  9932,   5842}, {0xef, 0x7d, 0x00, 0xff}}},\n    {{{ -2098,  -1177,    256}, 0, {  9422,   2266}, {0xef, 0x7d, 0x00, 0xff}}},\n    {{{ -2098,  -1177,  -1177}, 0, {  2268,   2266}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,  -1279,   -562}, 0, {  5334,  -8464}, {0xd8, 0x78, 0x00, 0xff}}},\n    {{{   358,  -1177,  -1177}, 0, {  2268,  -9996}, {0xd8, 0x78, 0x00, 0xff}}},\n    {{{    51,  -1279,  -1381}, 0, {  1246,  -8464}, {0xd8, 0x78, 0x00, 0xff}}},\n};\n\n// 0x0705EA98 - 0x0705EB98\nstatic const Vtx inside_castle_seg7_vertex_0705EA98[] = {\n    {{{ -1074,  -1279,  -2917}, 0, { -6418,  -2842}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -562,  -1279,  -2917}, 0, { -6418,  -5398}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,  -1279,  -3429}, 0, { -8972,  -8464}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -562,  -1279,   -562}, 0, {  5334,  -5398}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,  -1279,   -562}, 0, {  5334,  -8464}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,  -1279,  -1381}, 0, {  1246,  -8464}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   358,  -1177,   -562}, 0, {  5334,  -9996}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   666,  -1177,  -1177}, 0, {  2268, -11530}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   358,  -1177,  -1177}, 0, {  2268,  -9996}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,  -1279,   -562}, 0, {  5334,  -8464}, {0xd8, 0x78, 0x00, 0xff}}},\n    {{{   358,  -1177,   -562}, 0, {  5334,  -9996}, {0xd8, 0x78, 0x00, 0xff}}},\n    {{{   358,  -1177,  -1177}, 0, {  2268,  -9996}, {0xd8, 0x78, 0x00, 0xff}}},\n    {{{   666,  -1177,   -562}, 0, {  5334, -11530}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3225,  -1177,  -1689}, 0, {  -286,   7886}, {0x00, 0x7e, 0xf3, 0xff}}},\n    {{{ -2610,  -1279,  -2610}, 0, { -4884,   4820}, {0x00, 0x7e, 0xf3, 0xff}}},\n    {{{ -3225,  -1279,  -2610}, 0, { -4884,   7886}, {0x00, 0x7e, 0xf3, 0xff}}},\n};\n\n// 0x0705EB98 - 0x0705EC78\nstatic const Vtx inside_castle_seg7_vertex_0705EB98[] = {\n    {{{ -3225,  -1279,  -3429}, 0, { -8972,   7886}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1074,  -1279,  -2917}, 0, { -6418,  -2842}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,  -1279,  -3429}, 0, { -8972,  -8464}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -562,  -1279,  -1791}, 0, {  -796,  -5398}, {0x14, 0x7d, 0x00, 0xff}}},\n    {{{ -1177,  -1177,  -1893}, 0, { -1308,  -2332}, {0x14, 0x7d, 0x00, 0xff}}},\n    {{{ -1177,  -1177,  -1177}, 0, {  2268,  -2332}, {0x14, 0x7d, 0x00, 0xff}}},\n    {{{  -562,  -1279,  -1074}, 0, {  2778,  -5398}, {0x14, 0x7d, 0x00, 0xff}}},\n    {{{ -3225,  -1177,  -1074}, 0, {  2778,   7886}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2610,  -1177,  -1074}, 0, {  2778,   4820}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2610,  -1177,  -1689}, 0, {  -286,   4820}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3225,  -1177,  -1689}, 0, {  -286,   7886}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3225,  -1177,  -1689}, 0, {  -286,   7886}, {0x00, 0x7e, 0xf3, 0xff}}},\n    {{{ -2610,  -1177,  -1689}, 0, {  -286,   4820}, {0x00, 0x7e, 0xf3, 0xff}}},\n    {{{ -2610,  -1279,  -2610}, 0, { -4884,   4820}, {0x00, 0x7e, 0xf3, 0xff}}},\n};\n\n// 0x0705EC78 - 0x0705ED68\nstatic const Vtx inside_castle_seg7_vertex_0705EC78[] = {\n    {{{   666,  -1305,  -3122}, 0, { -7440, -11530}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   666,  -1305,  -2201}, 0, { -2840, -11530}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   870,  -1305,  -2303}, 0, { -3352, -12552}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3225,  -1279,  -3429}, 0, { -8972,   7886}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3225,  -1279,  -2610}, 0, { -4884,   7886}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2610,  -1279,  -2610}, 0, { -4884,   4820}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2610,  -1279,  -2713}, 0, { -5396,   4820}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1074,  -1279,  -2917}, 0, { -6418,  -2842}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1689,  -1279,  -2713}, 0, { -5396,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,  -1279,  -2713}, 0, { -5396,  -2332}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1177,  -1279,  -2713}, 0, { -5396,  -2332}, {0x00, 0x7d, 0xef, 0xff}}},\n    {{{ -1689,  -1177,  -1996}, 0, { -1818,    224}, {0x00, 0x7d, 0xef, 0xff}}},\n    {{{ -1177,  -1177,  -1996}, 0, { -1818,  -2332}, {0x00, 0x7d, 0xef, 0xff}}},\n    {{{ -1689,  -1279,  -2713}, 0, { -5396,    224}, {0x00, 0x7d, 0xef, 0xff}}},\n    {{{   870,  -1305,  -3020}, 0, { -6928, -12552}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0705ED68 - 0x0705EE68\nstatic const Vtx inside_castle_seg7_vertex_0705ED68[] = {\n    {{{   666,  -1305,  -3122}, 0, { -7440, -11530}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   358,  -1305,  -2815}, 0, { -5906,  -9996}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   358,  -1305,  -2508}, 0, { -4374,  -9996}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   666,  -1305,  -2201}, 0, { -2840, -11530}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   358,  -1279,  -2815}, 0, { -5906,  -9996}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   666,  -1279,  -3122}, 0, { -7440, -11530}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,  -1279,  -3429}, 0, { -8972,  -8464}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,  -1279,  -1893}, 0, { -1308,  -8464}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   358,  -1279,  -2508}, 0, { -4374,  -9996}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   666,  -1279,  -2201}, 0, { -2840, -11530}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2815,  -1279,    358}, 0, {  9932,   5842}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3532,  -1279,    256}, 0, {  9422,   9420}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3378,  -1279,   1075}, 0, { 13510,   8652}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4146,  -1279,    973}, 0, { 12998,  12486}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2815,  -1279,   1382}, 0, { 15042,   5842}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3378,  -1279,   1382}, 0, { 15042,   8652}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0705EE68 - 0x0705EF68\nstatic const Vtx inside_castle_seg7_vertex_0705EE68[] = {\n    {{{  1126,  -1074,  -2738}, 0, {  6356,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1075,  -1074,  -2585}, 0, {  6610,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1126,  -1074,  -2585}, 0, {  6356,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1075,  -1074,  -2738}, 0, {  6610,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   870,  -1074,  -3020}, 0, {  7632,   1882}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   870,  -1074,  -2303}, 0, {  7632,  -1692}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1075,  -1074,  -2405}, 0, {  6610,  -1182}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   666,  -1074,  -2508}, 0, {  8654,   -670}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   666,  -1074,  -2815}, 0, {  8654,    862}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1075,  -1074,  -2917}, 0, {  6610,   1372}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2201,  -1177,  -3429}, 0, { -1052,  10186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -665,  -1177,  -3327}, 0, {  -540,   2520}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -562,  -1177,  -3429}, 0, { -1052,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2098,  -1177,  -3327}, 0, {  -540,   9674}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1074,  -1177,  -3941}, 0, { -3606,   4564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1689,  -1177,  -3941}, 0, { -3606,   7630}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0705EF68 - 0x0705F058\nstatic const Vtx inside_castle_seg7_vertex_0705EF68[] = {\n    {{{ -3583,  -1381,  -1381}, 0, {   734,   2012}, {0xa6, 0x00, 0x58, 0xff}}},\n    {{{ -3634,   -562,  -1433}, 0, {   224,      0}, {0xa6, 0x00, 0x58, 0xff}}},\n    {{{ -3634,  -1381,  -1433}, 0, {   224,   2012}, {0xa6, 0x00, 0x58, 0xff}}},\n    {{{ -4044,  -1381,  -1484}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4044,   -562,  -1433}, 0, {   734,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4044,  -1381,  -1433}, 0, {   734,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4044,   -562,  -1484}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4044,  -1381,  -1433}, 0, {   734,   2012}, {0x5a, 0x00, 0x58, 0xff}}},\n    {{{ -4044,   -562,  -1433}, 0, {   734,      0}, {0x5a, 0x00, 0x58, 0xff}}},\n    {{{ -4095,   -562,  -1381}, 0, {   224,      0}, {0x5a, 0x00, 0x58, 0xff}}},\n    {{{ -4095,  -1381,  -1381}, 0, {   224,   2012}, {0x5a, 0x00, 0x58, 0xff}}},\n    {{{ -4095,  -1381,  -1381}, 0, {   224,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4095,   -562,  -1381}, 0, {   224,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4146,   -562,  -1381}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4146,  -1381,  -1381}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0705F058 - 0x0705F138\nstatic const Vtx inside_castle_seg7_vertex_0705F058[] = {\n    {{{ -3634,  -1381,  -1433}, 0, {   224,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3634,   -562,  -1433}, 0, {   224,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3634,   -562,  -1484}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3634,  -1381,  -1484}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -460,  -1279,   -613}, 0, {   224,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -460,   -562,   -562}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -460,  -1279,   -562}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3583,  -1381,  -1381}, 0, {   734,   2012}, {0xa6, 0x00, 0x58, 0xff}}},\n    {{{ -3583,   -562,  -1381}, 0, {   734,      0}, {0xa6, 0x00, 0x58, 0xff}}},\n    {{{ -3634,   -562,  -1433}, 0, {   224,      0}, {0xa6, 0x00, 0x58, 0xff}}},\n    {{{ -3532,  -1381,  -1381}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3583,   -562,  -1381}, 0, {   734,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3583,  -1381,  -1381}, 0, {   734,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3532,   -562,  -1381}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0705F138 - 0x0705F218\nstatic const Vtx inside_castle_seg7_vertex_0705F138[] = {\n    {{{  -562,  -1279,   -665}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -511,   -562,   -665}, 0, {   734,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -511,  -1279,   -665}, 0, {   734,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -562,   -562,   -665}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -511,  -1279,   -665}, 0, {   734,   2012}, {0x5a, 0x00, 0xa8, 0xff}}},\n    {{{  -511,   -562,   -665}, 0, {   734,      0}, {0x5a, 0x00, 0xa8, 0xff}}},\n    {{{  -460,   -562,   -613}, 0, {   224,      0}, {0x5a, 0x00, 0xa8, 0xff}}},\n    {{{  -460,  -1279,   -613}, 0, {   224,   2012}, {0x5a, 0x00, 0xa8, 0xff}}},\n    {{{  -460,  -1279,   -613}, 0, {   224,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -460,   -562,   -613}, 0, {   224,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -460,   -562,   -562}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1689,  -1177,    922}, 0, {   734,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1637,   -562,    870}, 0, {   224,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1637,  -1177,    870}, 0, {   224,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0705F218 - 0x0705F318\nstatic const Vtx inside_castle_seg7_vertex_0705F218[] = {\n    {{{ -1996,  -1177,  -1791}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1996,   -562,  -1740}, 0, {   734,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1996,  -1177,  -1740}, 0, {   734,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1996,   -562,  -1791}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1996,  -1177,  -1740}, 0, {   734,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1996,   -562,  -1740}, 0, {   734,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2047,   -562,  -1689}, 0, {   224,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2047,  -1177,  -1689}, 0, {   224,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2047,  -1177,  -1689}, 0, {   224,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2047,   -562,  -1689}, 0, {   224,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2098,   -562,  -1689}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2098,  -1177,  -1689}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1637,  -1177,    870}, 0, {   224,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1637,   -562,    870}, 0, {   224,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1586,   -562,    870}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1586,  -1177,    870}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0705F318 - 0x0705F3F8\nstatic const Vtx inside_castle_seg7_vertex_0705F318[] = {\n    {{{ -4044,  -1279,    922}, 0, {   224,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4044,   -562,    973}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4044,  -1279,    973}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1689,  -1177,    922}, 0, {   734,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1689,   -562,    922}, 0, {   734,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1637,   -562,    870}, 0, {   224,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1689,  -1177,    973}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1689,   -562,    922}, 0, {   734,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1689,  -1177,    922}, 0, {   734,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1689,   -562,    973}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4146,  -1279,    870}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4146,   -562,    870}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4095,   -562,    870}, 0, {   734,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4095,  -1279,    870}, 0, {   734,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0705F3F8 - 0x0705F4E8\nstatic const Vtx inside_castle_seg7_vertex_0705F3F8[] = {\n    {{{ -4095,  -1279,    870}, 0, {   734,   2012}, {0x5a, 0x00, 0xa8, 0xff}}},\n    {{{ -4095,   -562,    870}, 0, {   734,      0}, {0x5a, 0x00, 0xa8, 0xff}}},\n    {{{ -4044,   -562,    922}, 0, {   224,      0}, {0x5a, 0x00, 0xa8, 0xff}}},\n    {{{ -4044,  -1279,    922}, 0, {   224,   2012}, {0x5a, 0x00, 0xa8, 0xff}}},\n    {{{ -4044,  -1279,    922}, 0, {   224,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4044,   -562,    922}, 0, {   224,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4044,   -562,    973}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1074,   -470,  -3890}, 0, {   734,     -4}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1023,  -1177,  -3839}, 0, {   224,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1023,   -480,  -3839}, 0, {   224,     28}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1023,   -480,  -3839}, 0, {   224,     28}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -972,  -1177,  -3839}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -972,   -480,  -3839}, 0, {     0,     28}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1023,  -1177,  -3839}, 0, {   224,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1074,  -1177,  -3890}, 0, {   734,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x0705F4E8 - 0x0705F5D8\nstatic const Vtx inside_castle_seg7_vertex_0705F4E8[] = {\n    {{{ -1689,   -470,  -3890}, 0, {   734,     -4}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1689,  -1177,  -3941}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1689,   -460,  -3941}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1689,  -1177,  -3890}, 0, {   734,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1740,   -480,  -3839}, 0, {   224,     28}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1689,  -1177,  -3890}, 0, {   734,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1689,   -470,  -3890}, 0, {   734,     -4}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1740,  -1177,  -3839}, 0, {   224,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1074,   -460,  -3941}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1074,  -1177,  -3890}, 0, {   734,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1074,   -470,  -3890}, 0, {   734,     -4}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1074,  -1177,  -3941}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   614,   -562,  -1074}, 0, {   734,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   614,  -1177,  -1074}, 0, {   734,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   666,  -1177,  -1074}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0705F5D8 - 0x0705F6B8\nstatic const Vtx inside_castle_seg7_vertex_0705F5D8[] = {\n    {{{ -1791,   -480,  -3839}, 0, {     0,     28}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1740,  -1177,  -3839}, 0, {   224,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1740,   -480,  -3839}, 0, {   224,     28}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1791,  -1177,  -3839}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   563,  -1177,   -562}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   563,   -562,   -562}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   563,   -562,   -613}, 0, {   734,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   563,  -1177,   -613}, 0, {   734,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   563,   -562,  -1125}, 0, {   224,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   614,  -1177,  -1074}, 0, {   734,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   614,   -562,  -1074}, 0, {   734,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   614,   -562,  -1074}, 0, {   734,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   666,  -1177,  -1074}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   666,   -562,  -1074}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0705F6B8 - 0x0705F798\nstatic const Vtx inside_castle_seg7_vertex_0705F6B8[] = {\n    {{{ -3122,   -562,  -3378}, 0, {   734,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3122,  -1279,  -3429}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3122,   -562,  -3429}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   563,   -562,  -1125}, 0, {   224,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   563,  -1177,  -1125}, 0, {   224,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   614,  -1177,  -1074}, 0, {   734,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   563,   -562,  -1177}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   563,  -1177,  -1177}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   563,  -1177,  -1125}, 0, {   224,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   563,   -562,  -1125}, 0, {   224,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   666,   -562,   -665}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   614,  -1177,   -665}, 0, {   224,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   614,   -562,   -665}, 0, {   224,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   666,  -1177,   -665}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0705F798 - 0x0705F888\nstatic const Vtx inside_castle_seg7_vertex_0705F798[] = {\n    {{{   614,   -562,   -665}, 0, {   224,      0}, {0xa6, 0x00, 0xa8, 0xff}}},\n    {{{   614,  -1177,   -665}, 0, {   224,   2012}, {0xa6, 0x00, 0xa8, 0xff}}},\n    {{{   563,   -562,   -613}, 0, {   734,      0}, {0xa6, 0x00, 0xa8, 0xff}}},\n    {{{   563,  -1177,   -613}, 0, {   734,   2012}, {0xa6, 0x00, 0xa8, 0xff}}},\n    {{{ -3122,   -562,  -3378}, 0, {   734,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3122,  -1279,  -3378}, 0, {   734,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3122,  -1279,  -3429}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3173,   -562,  -3327}, 0, {   224,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3173,  -1279,  -3327}, 0, {   224,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3122,  -1279,  -3378}, 0, {   734,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3122,   -562,  -3378}, 0, {   734,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3225,   -562,  -3327}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3173,  -1279,  -3327}, 0, {   224,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3173,   -562,  -3327}, 0, {   224,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3225,  -1279,  -3327}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0705F888 - 0x0705F8C8\nstatic const Vtx inside_castle_seg7_vertex_0705F888[] = {\n    {{{ -3173,  -1279,   1434}, 0, {  1540,    796}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3020,  -1279,   1434}, 0, {  1518,    752}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3020,  -1279,   1382}, 0, {  1506,    760}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3173,  -1279,   1382}, 0, {  1528,    804}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0705F8C8 - 0x0705F9C8\nstatic const Vtx inside_castle_seg7_vertex_0705F8C8[] = {\n    {{{   666,   -562,   -562}, 0, {   922,   1332}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    51,   -562,   -562}, 0, {   820,   1332}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    51,   -562,  -1177}, 0, {   820,   1432}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   666,   -562,  -1177}, 0, {   922,   1432}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1074,  -1194,  -1791}, 0, {  2778,   1544}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{ -1074,   -562,  -1791}, 0, {  2778,      0}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{ -1177,   -562,  -1893}, 0, {  2524,      0}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{ -1177,  -1177,  -1893}, 0, {  2524,   1500}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{ -1177,  -1279,  -2815}, 0, {   224,   1756}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1177,  -1279,  -1893}, 0, {  2524,   1756}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1177,   -562,  -1893}, 0, {  2524,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1177,   -562,  -2815}, 0, {   224,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2201,  -1177,  -3429}, 0, {     0,   1500}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1791,  -1177,  -3839}, 0, {  1414,   1500}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1791,   -480,  -3839}, 0, {  1414,   -236}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2201,   -562,  -3429}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x0705F9C8 - 0x0705FAB8\nstatic const Vtx inside_castle_seg7_vertex_0705F9C8[] = {\n    {{{ -3532,  -1279,    256}, 0, {   734,   1756}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{ -3429,   -562,    358}, 0, {   990,      0}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{ -3532,   -562,    256}, 0, {   734,      0}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{ -3634,   -562,  -1484}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4044,  -1381,  -1484}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3634,  -1381,  -1484}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4044,   -562,  -1484}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4146,   -562,  -1381}, 0, {  3290,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4146,   -562,    870}, 0, { -2330,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4146,  -1381,    870}, 0, { -2330,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4146,  -1381,  -1381}, 0, {  3290,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3532,   -562,    256}, 0, {   734,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3532,   -562,  -1381}, 0, { -3352,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3532,  -1381,  -1381}, 0, { -3352,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3532,  -1381,    256}, 0, {   734,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0705FAB8 - 0x0705FB98\nstatic const Vtx inside_castle_seg7_vertex_0705FAB8[] = {\n    {{{ -4146,   -562,  -1484}, 0, {   122,   1484}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3532,   -562,  -1484}, 0, {   224,   1484}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3532,   -562,  -1074}, 0, {   224,   1416}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -4146,   -562,  -1074}, 0, {   122,   1416}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1586,   -562,  -1074}, 0, {   548,   1416}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1586,   -562,    973}, 0, {   548,   1076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -4146,   -562,    973}, 0, {   122,   1076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3225,   -562,  -3429}, 0, {   274,   1808}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -562,   -562,  -3429}, 0, {   718,   1808}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -562,   -562,  -1074}, 0, {   718,   1416}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3225,   -562,  -1074}, 0, {   274,   1416}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    51,   -562,  -3429}, 0, {   820,   1808}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    51,   -562,   -562}, 0, {   820,   1332}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -562,   -562,   -562}, 0, {   718,   1332}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0705FB98 - 0x0705FC98\nstatic const Vtx inside_castle_seg7_vertex_0705FB98[] = {\n    {{{ -2508,  -1279,  -2815}, 0, {     0,   1756}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2610,   -562,  -2713}, 0, {   224,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2508,   -562,  -2815}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2610,  -1279,  -2713}, 0, {   224,   1756}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1689,   -562,  -2713}, 0, {   224,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1791,  -1279,  -2815}, 0, {   480,   1756}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1791,   -562,  -2815}, 0, {   480,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1791,  -1279,  -2815}, 0, {   480,   1756}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2508,  -1279,  -2815}, 0, {  2268,   1756}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2508,   -562,  -2815}, 0, {  2268,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1791,   -562,  -2815}, 0, {   480,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1689,  -1279,  -2713}, 0, {   224,   1756}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2610,  -1279,  -2713}, 0, {   224,   1756}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2610,  -1279,  -1074}, 0, {  4312,   1756}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2610,   -562,  -1074}, 0, {  4312,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2610,   -562,  -2713}, 0, {   224,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0705FC98 - 0x0705FD78\nstatic const Vtx inside_castle_seg7_vertex_0705FC98[] = {\n    {{{  -562,   -562,  -1791}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -460,  -1279,  -1893}, 0, {   224,   1756}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -460,   -562,  -1893}, 0, {   224,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1689,  -1279,  -1893}, 0, {   224,   1756}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1689,  -1279,  -2713}, 0, {  2268,   1756}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1689,   -562,  -2713}, 0, {  2268,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1689,   -562,  -1893}, 0, {   224,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1791,   -562,  -1791}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1689,  -1177,  -1893}, 0, {   224,   1500}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1689,   -562,  -1893}, 0, {   224,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -460,  -1279,  -2815}, 0, {  2524,   1756}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -562,  -1279,  -2917}, 0, {  2778,   1756}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -562,   -562,  -2917}, 0, {  2778,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -460,   -562,  -2815}, 0, {  2524,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0705FD78 - 0x0705FE58\nstatic const Vtx inside_castle_seg7_vertex_0705FD78[] = {\n    {{{  -460,  -1279,  -1893}, 0, {   224,   1756}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -460,  -1279,  -2815}, 0, {  2524,   1756}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -460,   -562,  -2815}, 0, {  2524,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -460,   -562,  -1893}, 0, {   224,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -562,   -562,  -1791}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -562,  -1279,  -1791}, 0, {     0,   1756}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -460,  -1279,  -1893}, 0, {   224,   1756}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -460,   -562,   -562}, 0, {  2524,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   563,   -562,   -562}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   563,  -1279,   -562}, 0, {     0,   1756}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -562,  -1279,  -2917}, 0, {     0,   1756}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1074,   -562,  -2917}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -562,   -562,  -2917}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1074,  -1279,  -2917}, 0, {   990,   1756}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0705FE58 - 0x0705FF38\nstatic const Vtx inside_castle_seg7_vertex_0705FE58[] = {\n    {{{ -1074,  -1279,  -2917}, 0, {     0,   1756}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{ -1177,  -1279,  -2815}, 0, {   224,   1756}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{ -1177,   -562,  -2815}, 0, {   224,      0}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{ -1074,   -562,  -2917}, 0, {     0,      0}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{  -562,   -562,  -1074}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -562,   -562,   -665}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -562,  -1279,   -665}, 0, {     0,   1756}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -562,  -1279,  -1074}, 0, {   990,   1756}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1074,  -1279,  -1791}, 0, {     0,   1756}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -562,   -562,  -1791}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1074,   -562,  -1791}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -460,   -562,   -562}, 0, {  2524,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   563,  -1279,   -562}, 0, {     0,   1756}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -460,  -1279,   -562}, 0, {  2524,   1756}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0705FF38 - 0x07060018\nstatic const Vtx inside_castle_seg7_vertex_0705FF38[] = {\n    {{{  -665,  -1279,  -1177}, 0, {   224,   1756}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1484,  -1279,  -1177}, 0, {  2268,   1756}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1484,   -562,  -1177}, 0, {  2268,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -665,   -562,  -1177}, 0, {   224,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -562,  -1279,  -1074}, 0, {     0,   1756}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -665,  -1279,  -1177}, 0, {   224,   1756}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -665,   -562,  -1177}, 0, {   224,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -562,   -562,  -1074}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1074,  -1279,  -1791}, 0, {     0,   1756}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -562,  -1279,  -1791}, 0, {   990,   1756}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -562,   -562,  -1791}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1484,   -562,  -1177}, 0, {   224,      0}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{ -1586,  -1177,  -1074}, 0, {   480,   1500}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{ -1586,   -562,  -1074}, 0, {   480,      0}, {0xa6, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07060018 - 0x070600F8\nstatic const Vtx inside_castle_seg7_vertex_07060018[] = {\n    {{{ -1791,   -562,  -1791}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1791,  -1177,  -1791}, 0, {     0,   1500}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1689,  -1177,  -1893}, 0, {   224,   1500}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1996,  -1177,  -1791}, 0, {   478,   1500}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1791,  -1177,  -1791}, 0, {   990,   1500}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1791,   -562,  -1791}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1996,   -562,  -1791}, 0, {   480,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2098,  -1177,    256}, 0, {   224,   1500}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2098,  -1177,  -1689}, 0, {  5078,   1500}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2098,   -562,  -1689}, 0, {  5078,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2098,   -562,    256}, 0, {   224,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1484,   -562,  -1177}, 0, {   224,      0}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{ -1484,  -1177,  -1177}, 0, {   224,   1500}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{ -1586,  -1177,  -1074}, 0, {   480,   1500}, {0xa6, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x070600F8 - 0x070601F8\nstatic const Vtx inside_castle_seg7_vertex_070600F8[] = {\n    {{{ -1586,  -1177,  -1074}, 0, {   480,   1500}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1586,   -562,    870}, 0, {  5334,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1586,   -562,  -1074}, 0, {   480,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1586,  -1177,    870}, 0, {  5334,   1500}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2815,   -562,   1075}, 0, {  2778,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2713,   -562,    973}, 0, {  2522,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2713,  -1270,    973}, 0, {  2522,   1736}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2815,  -1279,   1075}, 0, {  2778,   1756}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2713,   -562,    973}, 0, {  2522,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1689,   -562,    973}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1689,  -1185,    973}, 0, {     0,   1524}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2713,  -1270,    973}, 0, {  2522,   1736}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3481,  -1279,    973}, 0, {   224,   1756}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4044,  -1279,    973}, 0, {  1628,   1756}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4044,   -562,    973}, 0, {  1628,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3481,   -562,    973}, 0, {   224,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070601F8 - 0x070602E8\nstatic const Vtx inside_castle_seg7_vertex_070601F8[] = {\n    {{{ -3020,  -1023,   1382}, 0, {   340,   1116}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3173,  -1023,   1382}, 0, {   618,   1116}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3378,   -562,   1382}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2098,  -1177,    256}, 0, {   224,   1500}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{ -2098,   -562,    256}, 0, {   224,      0}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{ -2201,   -562,    358}, 0, {     0,      0}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{ -2201,  -1191,    358}, 0, {     0,   1536}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{ -3429,  -1279,    358}, 0, {     0,   1756}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2201,  -1279,    358}, 0, {  3034,   1756}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2201,   -562,    358}, 0, {  3034,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3429,   -562,    358}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3532,  -1279,    256}, 0, {   734,   1756}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{ -3429,  -1279,    358}, 0, {   990,   1756}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{ -3429,   -562,    358}, 0, {   990,      0}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{ -3378,  -1279,   1382}, 0, {   990,   1756}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070602E8 - 0x070603E8\nstatic const Vtx inside_castle_seg7_vertex_070602E8[] = {\n    {{{ -3173,  -1023,   1434}, 0, {   618,   1116}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3173,  -1279,   1434}, 0, {   618,   1756}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3173,  -1279,   1382}, 0, {   618,   1756}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3173,  -1023,   1382}, 0, {   618,   1116}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3173,  -1279,   1382}, 0, {   618,   1756}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3378,  -1279,   1382}, 0, {   990,   1756}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3020,  -1023,   1382}, 0, {   340,   1116}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3378,   -562,   1382}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2815,   -562,   1382}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2815,  -1279,   1382}, 0, {     0,   1756}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3020,  -1279,   1382}, 0, {   340,   1756}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3020,  -1023,   1382}, 0, {   340,   1116}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3020,  -1279,   1434}, 0, {   340,   1756}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3020,  -1023,   1434}, 0, {   340,   1116}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3020,  -1279,   1382}, 0, {   340,   1756}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3173,  -1023,   1382}, 0, {   618,   1116}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070603E8 - 0x070604C8\nstatic const Vtx inside_castle_seg7_vertex_070603E8[] = {\n    {{{ -3173,  -1023,   1382}, 0, {   618,   1116}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3020,  -1023,   1382}, 0, {   340,   1116}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3020,  -1023,   1434}, 0, {   340,   1116}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3173,  -1023,   1434}, 0, {   618,   1116}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2815,   -562,   1382}, 0, {   342,   1008}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3378,   -562,   1382}, 0, {   250,   1008}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3481,   -562,    973}, 0, {   232,   1076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2713,   -562,    973}, 0, {   360,   1076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    51,   -562,  -1381}, 0, {    76,   1300}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   256,   -562,  -1177}, 0, {   178,   1400}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    51,   -562,  -1177}, 0, {    76,   1400}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2201,   -562,  -3429}, 0, {   444,   1808}, {0x00, 0x84, 0xe8, 0xff}}},\n    {{{ -1689,   -460,  -3941}, 0, {   530,   1892}, {0x00, 0x84, 0xe8, 0xff}}},\n    {{{ -1074,   -460,  -3941}, 0, {   632,   1892}, {0x00, 0x84, 0xe8, 0xff}}},\n};\n\n// 0x070604C8 - 0x070605B8\nstatic const Vtx inside_castle_seg7_vertex_070604C8[] = {\n    {{{    51,   -562,  -1381}, 0, {  1246,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    51,   -562,  -1893}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    51,  -1279,  -1893}, 0, {     0,   1756}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    51,  -1279,  -1381}, 0, {  1246,   1756}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   563,   -562,  -1177}, 0, {   478,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,   -562,  -1177}, 0, {  -286,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,  -1279,  -1177}, 0, {  -286,   1756}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   563,  -1279,  -1177}, 0, {   480,   1756}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -562,  -1177,  -3429}, 0, {   990,   1500}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -562,   -562,  -3429}, 0, {   990,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -972,   -480,  -3839}, 0, {  -454,   -236}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -972,  -1177,  -3839}, 0, {  -454,   1500}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1075,   -818,  -2585}, 0, {   632,    608}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1126,   -818,  -2585}, 0, {   632,    608}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1126,  -1074,  -2585}, 0, {   632,   1244}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070605B8 - 0x07060698\nstatic const Vtx inside_castle_seg7_vertex_070605B8[] = {\n    {{{ -2201,   -562,  -3429}, 0, {   444,   1808}, {0x00, 0x84, 0xe8, 0xff}}},\n    {{{ -1074,   -460,  -3941}, 0, {   632,   1892}, {0x00, 0x84, 0xe8, 0xff}}},\n    {{{  -562,   -562,  -3429}, 0, {   718,   1808}, {0x00, 0x84, 0xe8, 0xff}}},\n    {{{    51,   -562,  -3429}, 0, {   820,   1808}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1075,   -562,  -2917}, 0, {   990,   1724}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1075,   -562,  -2405}, 0, {   990,   1636}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    51,   -562,  -1893}, 0, {   820,   1552}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1126,   -818,  -2585}, 0, {   632,    608}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1075,   -818,  -2585}, 0, {   632,    608}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1075,   -818,  -2738}, 0, {   326,    608}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1126,   -818,  -2738}, 0, {   326,    608}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1075,   -818,  -2585}, 0, {   632,    608}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1126,  -1074,  -2585}, 0, {   632,   1244}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1075,  -1074,  -2585}, 0, {   632,   1244}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07060698 - 0x07060788\nstatic const Vtx inside_castle_seg7_vertex_07060698[] = {\n    {{{    51,   -562,  -3429}, 0, {  1502,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -562,  -1279,  -3429}, 0, {     0,   1756}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    51,  -1279,  -3429}, 0, {  1502,   1756}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1126,   -818,  -2738}, 0, {   326,    608}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1075,   -818,  -2738}, 0, {   326,    608}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1075,  -1074,  -2738}, 0, {   326,   1244}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1126,  -1074,  -2738}, 0, {   326,   1244}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1075,   -818,  -2585}, 0, {   632,    608}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1075,   -562,  -2405}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1075,   -562,  -2917}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1075,  -1074,  -2917}, 0, {     0,   1244}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1075,  -1074,  -2738}, 0, {   326,   1244}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1075,   -818,  -2738}, 0, {   326,    608}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1075,  -1074,  -2405}, 0, {   990,   1244}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1075,  -1074,  -2585}, 0, {   632,   1244}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07060788 - 0x07060878\nstatic const Vtx inside_castle_seg7_vertex_07060788[] = {\n    {{{   666,   -921,   -793}, 0, {   670,    864}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   666,   -921,   -946}, 0, {   288,    864}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   717,   -921,   -946}, 0, {   288,    864}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    51,   -562,  -3429}, 0, {  1502,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -562,   -562,  -3429}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -562,  -1279,  -3429}, 0, {     0,   1756}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3225,  -1279,  -1074}, 0, { -2074,   1756}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3225,   -562,  -3327}, 0, {  3544,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3225,   -562,  -1074}, 0, { -2074,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3225,  -1279,  -3327}, 0, {  3544,   1756}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2201,   -562,  -3429}, 0, {  2012,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3122,   -562,  -3429}, 0, {  -286,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3122,  -1279,  -3429}, 0, {  -286,   1756}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2201,  -1279,  -3429}, 0, {  2012,   1756}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   717,   -921,   -793}, 0, {   670,    864}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07060878 - 0x07060978\nstatic const Vtx inside_castle_seg7_vertex_07060878[] = {\n    {{{   666,   -921,   -793}, 0, {   670,    864}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   666,  -1177,   -793}, 0, {   670,   1500}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   666,  -1177,   -665}, 0, {   990,   1500}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   717,   -921,   -793}, 0, {   670,    864}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   666,  -1177,   -793}, 0, {   670,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   666,   -921,   -793}, 0, {   670,    864}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   717,  -1177,   -793}, 0, {   670,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   666,   -921,   -946}, 0, {   288,    864}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   666,  -1177,   -946}, 0, {   288,   1500}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   717,  -1177,   -946}, 0, {   288,   1500}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   717,   -921,   -946}, 0, {   288,    864}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   666,   -921,   -946}, 0, {   288,    864}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   666,   -562,   -665}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1075,   -562,  -2405}, 0, { -1864,      0}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  1075,  -1330,  -2405}, 0, { -1864,   1884}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{    51,  -1330,  -1893}, 0, {   990,   1884}, {0xc8, 0x00, 0x8f, 0xff}}},\n};\n\n// 0x07060978 - 0x07060A68\nstatic const Vtx inside_castle_seg7_vertex_07060978[] = {\n    {{{   666,   -921,   -946}, 0, {   288,    864}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   666,   -562,   -665}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   666,   -562,  -1074}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   666,  -1177,  -1074}, 0, {     0,   1500}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   666,  -1177,   -946}, 0, {   288,   1500}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    51,   -562,  -3429}, 0, {   478,      0}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  1075,  -1330,  -2917}, 0, {  3336,   1884}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  1075,   -562,  -2917}, 0, {  3336,      0}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{    51,  -1330,  -3429}, 0, {   478,   1884}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  1075,   -562,  -2405}, 0, { -1864,      0}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{    51,  -1330,  -1893}, 0, {   990,   1884}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{    51,   -562,  -1893}, 0, {   990,      0}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{    51,   -562,  -1381}, 0, {  1246,      0}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{   256,  -1279,  -1177}, 0, {  1756,   1756}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{   256,   -562,  -1177}, 0, {  1756,      0}, {0xa7, 0x00, 0x5a, 0xff}}},\n};\n\n// 0x07060A68 - 0x07060B58\nstatic const Vtx inside_castle_seg7_vertex_07060A68[] = {\n    {{{ -2815,  -1279,   1075}, 0, {  -286,   1756}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2815,   -562,   1382}, 0, {   478,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2815,   -562,   1075}, 0, {  -286,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2815,  -1279,   1382}, 0, {   478,   1756}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3378,  -1279,   1075}, 0, {     0,   1756}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{ -3481,  -1279,    973}, 0, {   224,   1756}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{ -3481,   -562,    973}, 0, {   224,      0}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{ -3378,   -562,   1075}, 0, {     0,      0}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{ -3378,   -562,   1382}, 0, {   224,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3378,  -1279,   1075}, 0, {   990,   1756}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3378,   -562,   1075}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3378,  -1279,   1382}, 0, {   224,   1756}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    51,   -562,  -1381}, 0, {  1246,      0}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{    51,  -1279,  -1381}, 0, {  1246,   1756}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{   256,  -1279,  -1177}, 0, {  1756,   1756}, {0xa7, 0x00, 0x5a, 0xff}}},\n};\n\n// 0x07060B58 - 0x07060C68\nstatic const Gfx inside_castle_seg7_dl_07060B58[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_0705E4C0.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0705E4C0.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0705E538, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705E628, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705E728, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  7,  8, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_0705E4D8.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0705E4D8.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0705E7B8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0,  4, 11,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07060C68 - 0x07060E70\nstatic const Gfx inside_castle_seg7_dl_07060C68[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_0900B000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_0705E4F0.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0705E4F0.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0705E878, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_0705E508.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0705E508.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0705E8B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9,  4, 0x0,  0,  2, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705E9A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0,  4,  6, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705EA98, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 6, 12,  7, 0x0,  2,  3,  5, 0x0),\n    gsSP2Triangles( 2,  1,  3, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705EB98, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705EC78, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  3,  6, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  9,  7,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705ED68, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  4, 0x0),\n    gsSP2Triangles( 7,  4,  6, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSP2Triangles(14, 10, 12, 0x0, 15, 14, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07060E70 - 0x07060EF8\nstatic const Gfx inside_castle_seg7_dl_07060E70[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_0705E4D8.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0705E4D8.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0705EE68, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 4,  8,  7, 0x0,  4,  6,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP2Triangles(12, 14, 15, 0x0, 12, 15, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07060EF8 - 0x07061188\nstatic const Gfx inside_castle_seg7_dl_07060EF8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_0705E520.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0705E520.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0705EF68, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705F058, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705F138, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705F218, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705F318, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705F3F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 7, 14,  8, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705F4E8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705F5D8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705F6B8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705F798, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07061188 - 0x070616E8\nstatic const Gfx inside_castle_seg7_dl_07061188[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09009000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_0705E508.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0705E508.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0705F888, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_0705E4D8.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0705E4D8.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0705F8C8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705F9C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705FAB8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  3,  5,  6, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles( 8, 11, 12, 0x0,  8, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705FB98, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  4, 11,  5, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705FC98, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705FD78, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705FE58, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0705FF38, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07060018, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070600F8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070601F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 1, 14,  2, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070602E8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10,  6, 0x0),\n    gsSP2Triangles( 9,  6,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070603E8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070604C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070605B8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07060698, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 11, 12, 0x0),\n    gsSP2Triangles( 9, 12,  7, 0x0,  7, 13,  8, 0x0),\n    gsSP1Triangle( 7, 14, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07060788, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07060878, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11,  0, 12, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07060978, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 3,  4,  0, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07060A68, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070616E8 - 0x07061790\nconst Gfx inside_castle_seg7_dl_070616E8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07060B58),\n    gsSPDisplayList(inside_castle_seg7_dl_07060C68),\n    gsSPDisplayList(inside_castle_seg7_dl_07060E70),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07060EF8),\n    gsSPDisplayList(inside_castle_seg7_dl_07061188),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/3/5/model.inc.c",
    "content": "// 0x07061790 - 0x07061880\nstatic const Vtx inside_castle_seg7_vertex_07061790[] = {\n    {{{ -2825,   -767,   1075}, 0, {     0,      0}, {0x79, 0x79, 0xeb, 0x9a}}},\n    {{{ -2825,  -1279,   1382}, 0, {   990,   2012}, {0x79, 0x79, 0xeb, 0x9a}}},\n    {{{ -2825,   -767,   1382}, 0, {   990,      0}, {0x79, 0x79, 0xeb, 0x9a}}},\n    {{{ -2825,  -1279,   1075}, 0, {     0,   2012}, {0x79, 0x79, 0xeb, 0x9a}}},\n    {{{ -3368,   -767,   1382}, 0, {   990,      0}, {0x79, 0x79, 0xeb, 0x9a}}},\n    {{{ -3368,  -1279,   1075}, 0, {     0,   2012}, {0x79, 0x79, 0xeb, 0x9a}}},\n    {{{ -3368,   -767,   1075}, 0, {     0,      0}, {0x79, 0x79, 0xeb, 0x9a}}},\n    {{{ -3368,  -1279,   1382}, 0, {   990,   2012}, {0x79, 0x79, 0xeb, 0x9a}}},\n    {{{  -357,   -767,   -572}, 0, {   990,      0}, {0x79, 0x79, 0xeb, 0x9a}}},\n    {{{   -50,   -767,   -572}, 0, {     0,      0}, {0x79, 0x79, 0xeb, 0x9a}}},\n    {{{   -50,  -1279,   -572}, 0, {     0,   2012}, {0x79, 0x79, 0xeb, 0x9a}}},\n    {{{  -357,  -1279,   -572}, 0, {   990,   2012}, {0x79, 0x79, 0xeb, 0x9a}}},\n    {{{ -1596,  -1177,   -562}, 0, {   990,   2012}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{ -1596,   -665,   -869}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{ -1596,  -1177,   -869}, 0, {     0,   2012}, {0xff, 0x00, 0x00, 0x9a}}},\n};\n\n// 0x07061880 - 0x07061970\nstatic const Vtx inside_castle_seg7_vertex_07061880[] = {\n    {{{ -3122,  -1279,    369}, 0, {     0,   2012}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{ -2815,  -1279,    369}, 0, {   990,   2012}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{ -2815,   -767,    369}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{ -3122,   -767,    369}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{ -1596,  -1177,    666}, 0, {   990,   2012}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{ -1596,   -665,    358}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{ -1596,  -1177,    358}, 0, {     0,   2012}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{ -1596,   -665,    666}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{ -1596,  -1177,     51}, 0, {   990,   2012}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{ -1596,   -665,     51}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{ -1596,   -665,   -255}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{ -1596,  -1177,   -255}, 0, {     0,   2012}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{ -2088,  -1177,  -1484}, 0, {   990,   2012}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{ -2088,   -665,  -1177}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{ -2088,  -1177,  -1177}, 0, {     0,   2012}, {0xff, 0x00, 0x00, 0x9a}}},\n};\n\n// 0x07061970 - 0x07061A50\nstatic const Vtx inside_castle_seg7_vertex_07061970[] = {\n    {{{ -1596,  -1177,   -562}, 0, {   990,   2012}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{ -1596,   -665,   -562}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{ -1596,   -665,   -869}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{ -2088,  -1177,   -255}, 0, {   990,   2012}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{ -2088,   -665,     51}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{ -2088,  -1177,     51}, 0, {     0,   2012}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{ -2088,   -665,   -255}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{ -2088,  -1177,   -869}, 0, {   990,   2012}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{ -2088,   -665,   -562}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{ -2088,  -1177,   -562}, 0, {     0,   2012}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{ -2088,   -665,   -869}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{ -2088,  -1177,  -1484}, 0, {   990,   2012}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{ -2088,   -665,  -1484}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{ -2088,   -665,  -1177}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n};\n\n// 0x07061A50 - 0x07061B10\nstatic const Vtx inside_castle_seg7_vertex_07061A50[] = {\n    {{{ -3685,   -869,  -1474}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{ -3993,  -1381,  -1474}, 0, {     0,   2012}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{ -3685,  -1381,  -1474}, 0, {   990,   2012}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{ -3993,   -869,  -1474}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{ -2073,   -665,  -3542}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{ -2073,  -1177,  -3542}, 0, {     0,   2012}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{ -1856,  -1177,  -3759}, 0, {   990,   2012}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{ -1856,   -665,  -3759}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  -907,   -665,  -3759}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  -907,  -1177,  -3759}, 0, {     0,   2012}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  -689,  -1177,  -3542}, 0, {   990,   2012}, {0xff, 0x00, 0x00, 0x9a}}},\n    {{{  -689,   -665,  -3542}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0x9a}}},\n};\n\n// 0x07061B10 - 0x07061C20\nstatic const Gfx inside_castle_seg7_dl_07061B10[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07061790, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07061880, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07061970, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07061A50, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07061C20 - 0x07061C90\nconst Gfx inside_castle_seg7_dl_07061C20[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07061B10),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/3/6/model.inc.c",
    "content": "// 0x07061C90 - 0x07061CA8\nstatic const Lights1 inside_castle_seg7_lights_07061C90 = gdSPDefLights1(\n    0x5f, 0x5f, 0x5f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07061CA8 - 0x07061CC0\nstatic const Lights1 inside_castle_seg7_lights_07061CA8 = gdSPDefLights1(\n    0x52, 0x52, 0x52,\n    0xdd, 0xdd, 0xdd, 0x28, 0x28, 0x28\n);\n\n// 0x07061CC0 - 0x07061CD8\nstatic const Lights1 inside_castle_seg7_lights_07061CC0 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x07061CD8 - 0x07061DC8\nstatic const Vtx inside_castle_seg7_vertex_07061CD8[] = {\n    {{{  2662,  -1381,  -2277}, 0, { -1308,  -1820}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2304,  -1381,  -2277}, 0, {   478,  -1820}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1690,  -1381,  -1868}, 0, {  3544,  -3864}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3277,  -1279,  -2482}, 0, { -4374,   -798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1279,  -2841}, 0, { -4628,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3277,  -1279,  -2841}, 0, { -4374,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1279,  -2482}, 0, { -4628,   -798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1279,  -2047}, 0, { -4628,  -2970}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3635,  -1279,  -3276}, 0, { -6162,   3160}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1279,  -3276}, 0, { -4628,   3160}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3635,  -1279,  -2047}, 0, { -6162,  -2970}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3277,  -1381,  -1868}, 0, { -4374,  -3864}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2099,  -1381,  -2482}, 0, {  1500,   -798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2099,  -1381,  -2841}, 0, {  1500,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1690,  -1381,  -3455}, 0, {  3544,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07061DC8 - 0x07061EC8\nstatic const Vtx inside_castle_seg7_vertex_07061DC8[] = {\n    {{{  3635,  -1074,  -1561}, 0, { -6162,  -5398}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1690,  -1074,  -1868}, 0, {  3544,  -3864}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1178,  -1074,  -1561}, 0, {  6100,  -5398}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2099,  -1381,  -2841}, 0, {  1500,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2304,  -1381,  -3045}, 0, {   480,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1690,  -1381,  -3455}, 0, {  3544,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3277,  -1381,  -3455}, 0, { -4374,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2867,  -1381,  -2482}, 0, { -2330,   -798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2662,  -1381,  -2277}, 0, { -1308,  -1820}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3277,  -1381,  -1868}, 0, { -4374,  -3864}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2867,  -1381,  -2841}, 0, { -2330,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2662,  -1381,  -3045}, 0, { -1308,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3635,  -1074,  -1868}, 0, { -6162,  -3864}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1690,  -1074,  -3455}, 0, {  3544,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1178,  -1074,  -3762}, 0, {  6100,   5586}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3635,  -1074,  -3455}, 0, { -6162,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07061EC8 - 0x07061F68\nstatic const Vtx inside_castle_seg7_vertex_07061EC8[] = {\n    {{{  1178,  -1074,  -3762}, 0, {  6100,   5586}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3635,  -1074,  -3455}, 0, { -6162,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3635,  -1074,  -3762}, 0, { -6162,   5586}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1178,  -1074,  -1561}, 0, {  6100,  -5398}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1690,  -1074,  -1868}, 0, {  3544,  -3864}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1690,  -1074,  -3455}, 0, {  3544,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1178,  -1074,  -2738}, 0, {  6100,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1126,  -1074,  -2585}, 0, {  6356,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1178,  -1074,  -2585}, 0, {  6100,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1126,  -1074,  -2738}, 0, {  6356,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07061F68 - 0x07062058\nstatic const Vtx inside_castle_seg7_vertex_07061F68[] = {\n    {{{  3277,  -1381,  -2892}, 0, {  1246,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3149,  -1381,  -2892}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3149,  -1330,  -2892}, 0, {     0,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3328,  -1381,  -2482}, 0, {  1756,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3277,  -1177,  -2482}, 0, {  1246,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3328,  -1177,  -2482}, 0, {  1756,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3149,  -1381,  -2482}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3149,  -1330,  -2482}, 0, {     0,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3200,  -1330,  -2482}, 0, {   480,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3277,  -1228,  -2482}, 0, {  1246,   -542}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3149,  -1330,  -2431}, 0, {     0,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3149,  -1381,  -2431}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3277,  -1381,  -2431}, 0, {  1246,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3200,  -1330,  -2431}, 0, {   480,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3277,  -1228,  -2431}, 0, {  1246,   -542}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07062058 - 0x07062148\nstatic const Vtx inside_castle_seg7_vertex_07062058[] = {\n    {{{  3277,  -1381,  -1868}, 0, { 15808,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3277,  -1279,  -2431}, 0, { 10188,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3277,  -1381,  -2431}, 0, { 10188,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3277,  -1381,  -2892}, 0, {  1246,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3149,  -1330,  -2892}, 0, {     0,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3200,  -1330,  -2892}, 0, {   480,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3277,  -1228,  -2892}, 0, {  1246,   -542}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3328,  -1381,  -2841}, 0, {  1756,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3200,  -1330,  -2841}, 0, {   480,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3149,  -1330,  -2841}, 0, {     0,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3149,  -1381,  -2841}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3277,  -1228,  -2841}, 0, {  1246,   -542}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3328,  -1177,  -2841}, 0, {  1756,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3277,  -1177,  -2841}, 0, {  1246,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3277,  -1279,  -1868}, 0, { 15808,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07062148 - 0x07062238\nstatic const Vtx inside_castle_seg7_vertex_07062148[] = {\n    {{{  3328,  -1279,  -1822}, 0, { 16268,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3328,  -1202,  -2098}, 0, { 13510,   -798}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3328,  -1202,  -2047}, 0, { 14020,   -798}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3277,  -1381,  -2892}, 0, {  5588,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3277,  -1279,  -3455}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3277,  -1381,  -3455}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3277,  -1279,  -2892}, 0, {  5588,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1690,  -1074,  -1868}, 0, {  7632,  -2076}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3277,  -1074,  -1868}, 0, { -8206,  -2076}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3277,  -1381,  -1868}, 0, { -8206,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1690,  -1381,  -1868}, 0, {  7632,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3328,   -972,  -1893}, 0, { 15554,  -3098}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3328,   -972,  -1822}, 0, { 16268,  -3098}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3328,  -1049,  -1893}, 0, { 15554,  -2332}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3328,  -1279,  -2431}, 0, { 10188,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07062238 - 0x07062318\nstatic const Vtx inside_castle_seg7_vertex_07062238[] = {\n    {{{  3277,   -972,  -1822}, 0, { 16268,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,   -972,  -1893}, 0, { 15554,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3277,   -972,  -1893}, 0, { 15554,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3277,  -1202,  -2047}, 0, { 14020,   -798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1202,  -2047}, 0, { 14020,   -798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1202,  -2098}, 0, { 13510,   -798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3277,  -1202,  -2098}, 0, { 13510,   -798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1177,  -2431}, 0, { 10188,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3328,  -1202,  -2098}, 0, { 13510,   -798}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3328,  -1279,  -2431}, 0, { 10188,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3277,  -1177,  -2431}, 0, { 10188,  -1054}, {0x00, 0x7e, 0x09, 0xff}}},\n    {{{  3277,  -1202,  -2098}, 0, { 13510,   -798}, {0x00, 0x7e, 0x09, 0xff}}},\n    {{{  3328,  -1202,  -2098}, 0, { 13510,   -798}, {0x00, 0x7e, 0x09, 0xff}}},\n    {{{  3328,  -1177,  -2431}, 0, { 10188,  -1054}, {0x00, 0x7e, 0x09, 0xff}}},\n};\n\n// 0x07062318 - 0x070623F8\nstatic const Vtx inside_castle_seg7_vertex_07062318[] = {\n    {{{  3277,  -1049,  -1893}, 0, { 15554,  -2332}, {0x00, 0x5a, 0xa7, 0xff}}},\n    {{{  3328,  -1202,  -2047}, 0, { 14020,   -798}, {0x00, 0x5a, 0xa7, 0xff}}},\n    {{{  3277,  -1202,  -2047}, 0, { 14020,   -798}, {0x00, 0x5a, 0xa7, 0xff}}},\n    {{{  3328,  -1049,  -1893}, 0, { 15554,  -2332}, {0x00, 0x5a, 0xa7, 0xff}}},\n    {{{  3277,   -972,  -1893}, 0, { 15554,  -3098}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3328,   -972,  -1893}, 0, { 15554,  -3098}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3328,  -1049,  -1893}, 0, { 15554,  -2332}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3277,  -1049,  -1893}, 0, { 15554,  -2332}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3277,   -972,  -1822}, 0, { 16268,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,   -972,  -1822}, 0, { 16268,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,   -972,  -1893}, 0, { 15554,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1690,  -1074,  -1868}, 0, { -7184,  -2076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1690,  -1381,  -3455}, 0, {  8654,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1690,  -1074,  -3455}, 0, {  8654,  -2076}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070623F8 - 0x070624D8\nstatic const Vtx inside_castle_seg7_vertex_070623F8[] = {\n    {{{  3277,  -1202,  -2098}, 0, { 13510,   -798}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3277,  -1279,  -2431}, 0, { 10188,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3277,  -1279,  -1822}, 0, { 16268,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3277,  -1202,  -2047}, 0, { 14020,   -798}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3277,   -972,  -1822}, 0, { 16268,  -3098}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3277,   -972,  -1893}, 0, { 15554,  -3098}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3277,  -1049,  -1893}, 0, { 15554,  -2332}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1690,  -1381,  -3455}, 0, { -8206,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3277,  -1381,  -3455}, 0, {  7632,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3277,  -1074,  -3455}, 0, {  7632,  -2076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1690,  -1074,  -3455}, 0, { -8206,  -2076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1690,  -1074,  -1868}, 0, { -7184,  -2076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1690,  -1381,  -1868}, 0, { -7184,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1690,  -1381,  -3455}, 0, {  8654,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070624D8 - 0x070625D8\nstatic const Vtx inside_castle_seg7_vertex_070624D8[] = {\n    {{{  1126,   -818,  -2585}, 0, {   480,  -1566}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1178,   -818,  -2585}, 0, {     0,  -1564}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1178,  -1074,  -2585}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1178,   -818,  -2738}, 0, {  2012,   1498}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1178,  -1074,  -2892}, 0, {  3544,   4054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1178,   -665,  -2892}, 0, {  3544,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1178,   -818,  -2585}, 0, {   478,   1498}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1178,  -1074,  -2738}, 0, {  2012,   4054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1178,   -665,  -2431}, 0, { -1052,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1178,  -1074,  -2431}, 0, { -1052,   4054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1178,  -1074,  -2585}, 0, {   478,   4054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1178,   -818,  -2738}, 0, {     0,  -1564}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1126,  -1074,  -2738}, 0, {   478,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1178,  -1074,  -2738}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1126,   -818,  -2738}, 0, {   480,  -1566}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1126,  -1074,  -2585}, 0, {   478,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070625D8 - 0x070626D8\nstatic const Vtx inside_castle_seg7_vertex_070625D8[] = {\n    {{{  1178,   -818,  -2585}, 0, {     0,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1126,   -818,  -2585}, 0, {   480,  -1566}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1126,   -818,  -2738}, 0, {   480,  -1566}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1178,   -818,  -2738}, 0, {     0,  -1564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3277,  -1279,  -3501}, 0, {  -490,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3277,   -972,  -3429}, 0, {   224,  -3098}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3277,   -972,  -3501}, 0, {  -490,  -3098}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3277,  -1279,  -2892}, 0, {  5588,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3277,  -1202,  -3225}, 0, {  2268,   -798}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3277,  -1202,  -3276}, 0, {  1756,   -798}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3277,  -1049,  -3429}, 0, {   224,  -2332}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3277,  -1177,  -2892}, 0, {  5588,  -1054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3328,  -1177,  -2892}, 0, {  5588,  -1054}, {0x00, 0x7e, 0xf7, 0xff}}},\n    {{{  3328,  -1202,  -3225}, 0, {  2268,   -798}, {0x00, 0x7e, 0xf7, 0xff}}},\n    {{{  3277,  -1202,  -3225}, 0, {  2268,   -798}, {0x00, 0x7e, 0xf7, 0xff}}},\n    {{{  3277,  -1177,  -2892}, 0, {  5588,  -1054}, {0x00, 0x7e, 0xf7, 0xff}}},\n};\n\n// 0x070626D8 - 0x070627D8\nstatic const Vtx inside_castle_seg7_vertex_070626D8[] = {\n    {{{  3328,  -1279,  -3501}, 0, {  -490,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3328,  -1202,  -3276}, 0, {  1756,   -798}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3328,  -1202,  -3225}, 0, {  2268,   -798}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3328,   -972,  -3429}, 0, {   224,  -3098}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3328,  -1049,  -3429}, 0, {   224,  -2332}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3328,   -972,  -3501}, 0, {  -490,  -3098}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3328,  -1279,  -2892}, 0, {  5588,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3328,  -1177,  -2892}, 0, {  5588,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3328,  -1177,  -2841}, 0, {  6100,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3328,  -1279,  -2841}, 0, {  6100,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3277,  -1177,  -2431}, 0, { 10188,  -1054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3277,  -1279,  -2431}, 0, { 10188,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3277,  -1202,  -2098}, 0, { 13510,   -798}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3277,   -972,  -3501}, 0, {  -490,  -3098}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3328,  -1074,  -3501}, 0, {  -490,  -2076}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3277,  -1074,  -3501}, 0, {  -490,  -2076}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070627D8 - 0x070628D8\nstatic const Vtx inside_castle_seg7_vertex_070627D8[] = {\n    {{{  3277,   -972,  -3501}, 0, {  -490,  -3098}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3328,   -972,  -3501}, 0, {  -490,  -3098}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3328,  -1074,  -3501}, 0, {  -490,  -2076}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3328,   -972,  -1822}, 0, {  1756,  -2076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3277,  -1074,  -1822}, 0, {  1246,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3328,  -1074,  -1822}, 0, {  1756,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3277,   -972,  -1822}, 0, {  1246,  -2076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3328,  -1177,  -2892}, 0, {  5588,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3328,  -1279,  -2841}, 0, {  6100,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3328,  -1279,  -2892}, 0, {  5588,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3328,  -1177,  -2482}, 0, {  9676,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3328,  -1279,  -2431}, 0, { 10188,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3328,  -1279,  -2482}, 0, {  9676,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3277,  -1177,  -2892}, 0, {  5588,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3277,  -1177,  -2841}, 0, {  6100,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1177,  -2841}, 0, {  6100,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070628D8 - 0x070629C8\nstatic const Vtx inside_castle_seg7_vertex_070628D8[] = {\n    {{{  3277,  -1177,  -2892}, 0, {  5588,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1177,  -2841}, 0, {  6100,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1177,  -2892}, 0, {  5588,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3277,  -1228,  -2892}, 0, {  5588,   -544}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3277,  -1177,  -2841}, 0, {  6100,  -1054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3277,  -1177,  -2892}, 0, {  5588,  -1054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3277,  -1228,  -2841}, 0, {  6100,   -544}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3200,  -1330,  -2892}, 0, {  5588,    478}, {0x9b, 0x4c, 0x00, 0xff}}},\n    {{{  3277,  -1228,  -2841}, 0, {  6100,   -544}, {0x9b, 0x4c, 0x00, 0xff}}},\n    {{{  3277,  -1228,  -2892}, 0, {  5588,   -544}, {0x9b, 0x4c, 0x00, 0xff}}},\n    {{{  3200,  -1330,  -2841}, 0, {  6100,    478}, {0x9b, 0x4c, 0x00, 0xff}}},\n    {{{  3149,  -1330,  -2892}, 0, {  5588,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3200,  -1330,  -2841}, 0, {  6100,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3200,  -1330,  -2892}, 0, {  5588,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3149,  -1330,  -2841}, 0, {  6100,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070629C8 - 0x07062AA8\nstatic const Vtx inside_castle_seg7_vertex_070629C8[] = {\n    {{{  3149,  -1381,  -2892}, 0, {  5588,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3149,  -1330,  -2841}, 0, {  6100,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3149,  -1330,  -2892}, 0, {  5588,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3149,  -1381,  -2841}, 0, {  6100,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3149,  -1381,  -2482}, 0, {  9676,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3149,  -1381,  -2431}, 0, { 10188,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3149,  -1330,  -2431}, 0, { 10188,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3328,  -1177,  -2482}, 0, {  9676,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3328,  -1177,  -2431}, 0, { 10188,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3328,  -1279,  -2431}, 0, { 10188,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3277,  -1177,  -2482}, 0, {  9676,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3277,  -1177,  -2431}, 0, { 10188,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1177,  -2431}, 0, { 10188,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1177,  -2482}, 0, {  9676,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07062AA8 - 0x07062B98\nstatic const Vtx inside_castle_seg7_vertex_07062AA8[] = {\n    {{{  3277,  -1228,  -2482}, 0, {  9676,   -544}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3277,  -1177,  -2431}, 0, { 10188,  -1054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3277,  -1177,  -2482}, 0, {  9676,  -1054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3277,  -1228,  -2431}, 0, { 10188,   -544}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3200,  -1330,  -2482}, 0, {  9676,    478}, {0x9b, 0x4c, 0x00, 0xff}}},\n    {{{  3277,  -1228,  -2431}, 0, { 10188,   -544}, {0x9b, 0x4c, 0x00, 0xff}}},\n    {{{  3277,  -1228,  -2482}, 0, {  9676,   -544}, {0x9b, 0x4c, 0x00, 0xff}}},\n    {{{  3200,  -1330,  -2431}, 0, { 10188,    478}, {0x9b, 0x4c, 0x00, 0xff}}},\n    {{{  3149,  -1330,  -2482}, 0, {  9676,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3200,  -1330,  -2431}, 0, { 10188,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3200,  -1330,  -2482}, 0, {  9676,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3149,  -1330,  -2431}, 0, { 10188,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3149,  -1381,  -2482}, 0, {  9676,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3149,  -1330,  -2431}, 0, { 10188,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3149,  -1330,  -2482}, 0, {  9676,    478}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07062B98 - 0x07062C88\nstatic const Vtx inside_castle_seg7_vertex_07062B98[] = {\n    {{{  2099,  -1381,  -2482}, 0, { 21828,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2099,  -1689,  -2841}, 0, { 18902,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2099,  -1381,  -2841}, 0, { 18902,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3277,   -972,  -3429}, 0, {   224,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,   -972,  -3429}, 0, {   224,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,   -972,  -3501}, 0, {  -490,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3277,   -972,  -3501}, 0, {  -490,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3277,  -1049,  -3429}, 0, {   224,  -2332}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3328,   -972,  -3429}, 0, {   224,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3277,   -972,  -3429}, 0, {   224,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3328,  -1049,  -3429}, 0, {   224,  -2332}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3277,  -1202,  -3276}, 0, {  1756,   -798}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{  3328,  -1049,  -3429}, 0, {   224,  -2332}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{  3277,  -1049,  -3429}, 0, {   224,  -2332}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{  3328,  -1202,  -3276}, 0, {  1756,   -798}, {0x00, 0x59, 0x59, 0xff}}},\n};\n\n// 0x07062C88 - 0x07062D68\nstatic const Vtx inside_castle_seg7_vertex_07062C88[] = {\n    {{{  3277,  -1202,  -3225}, 0, {  2268,   -798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1202,  -3276}, 0, {  1756,   -798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3277,  -1202,  -3276}, 0, {  1756,   -798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1202,  -3225}, 0, {  2268,   -798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2099,  -1381,  -2841}, 0, { 18902,      0}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{  2099,  -1689,  -2841}, 0, { 18902,   3032}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{  2304,  -1689,  -3045}, 0, { 16610,   3032}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{  2304,  -1381,  -3045}, 0, { 16610,      0}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{  2867,  -1381,  -2482}, 0, {  8850,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2662,  -1689,  -2277}, 0, {  6608,   3032}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2662,  -1381,  -2277}, 0, {  6608,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2099,  -1381,  -2482}, 0, { 21828,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2099,  -1689,  -2482}, 0, { 21828,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2099,  -1689,  -2841}, 0, { 18902,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07062D68 - 0x07062E58\nstatic const Vtx inside_castle_seg7_vertex_07062D68[] = {\n    {{{  2304,  -1381,  -3045}, 0, { 16610,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2304,  -1689,  -3045}, 0, { 16610,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2662,  -1689,  -3045}, 0, { 13810,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2662,  -1381,  -3045}, 0, { 13810,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2662,  -1381,  -3045}, 0, { 13810,      0}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{  2662,  -1689,  -3045}, 0, { 13810,   3032}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{  2867,  -1689,  -2841}, 0, { 11608,   3032}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{  2867,  -1381,  -2841}, 0, { 11608,      0}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{  2867,  -1381,  -2841}, 0, { 11608,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2867,  -1689,  -2841}, 0, { 11608,   3032}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2867,  -1689,  -2482}, 0, {  8850,   3032}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2867,  -1381,  -2482}, 0, {  8850,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2867,  -1381,  -2482}, 0, {  8850,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2867,  -1689,  -2482}, 0, {  8850,   3032}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2662,  -1689,  -2277}, 0, {  6608,   3032}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07062E58 - 0x07062ED8\nstatic const Vtx inside_castle_seg7_vertex_07062E58[] = {\n    {{{  2662,  -1381,  -2277}, 0, {  6608,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2662,  -1689,  -2277}, 0, {  6608,   3032}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2304,  -1689,  -2277}, 0, {  3730,   3032}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2304,  -1381,  -2277}, 0, {  3730,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2304,  -1381,  -2277}, 0, {  3730,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2304,  -1689,  -2277}, 0, {  3730,   3032}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2099,  -1689,  -2482}, 0, {  1388,   3032}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2099,  -1381,  -2482}, 0, {  1388,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07062ED8 - 0x07062FC8\nstatic const Vtx inside_castle_seg7_vertex_07062ED8[] = {\n    {{{  3328,  -1177,  -3378}, 0, {   510,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3635,  -1177,  -3378}, 0, {   510,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3635,  -1151,  -3378}, 0, {   584,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3635,  -1074,  -3455}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3328,  -1100,  -3455}, 0, {   918,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3635,  -1100,  -3455}, 0, {   918,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3328,  -1074,  -3455}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3328,  -1125,  -3429}, 0, {   782,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3635,  -1100,  -3429}, 0, {   854,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3328,  -1100,  -3429}, 0, {   854,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3635,  -1125,  -3429}, 0, {   782,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3328,  -1151,  -3404}, 0, {   646,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3635,  -1125,  -3404}, 0, {   718,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3328,  -1125,  -3404}, 0, {   718,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3635,  -1151,  -3404}, 0, {   646,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07062FC8 - 0x070630B8\nstatic const Vtx inside_castle_seg7_vertex_07062FC8[] = {\n    {{{  3328,  -1253,  -3301}, 0, {   104,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3635,  -1228,  -3301}, 0, {   176,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3328,  -1228,  -3301}, 0, {   176,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3328,  -1177,  -3378}, 0, {   510,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3635,  -1151,  -3378}, 0, {   584,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3328,  -1151,  -3378}, 0, {   584,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3328,  -1202,  -3353}, 0, {   374,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3635,  -1202,  -3353}, 0, {   374,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3635,  -1177,  -3353}, 0, {   448,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3328,  -1177,  -3353}, 0, {   448,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3328,  -1228,  -3327}, 0, {   240,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3635,  -1228,  -3327}, 0, {   240,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3635,  -1202,  -3327}, 0, {   312,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3328,  -1202,  -3327}, 0, {   312,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3635,  -1253,  -3301}, 0, {   104,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070630B8 - 0x070630F8\nstatic const Vtx inside_castle_seg7_vertex_070630B8[] = {\n    {{{  3328,  -1279,  -3276}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3635,  -1279,  -3276}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3635,  -1253,  -3276}, 0, {    40,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3328,  -1253,  -3276}, 0, {    40,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070630F8 - 0x070631E8\nstatic const Vtx inside_castle_seg7_vertex_070630F8[] = {\n    {{{  1229,  -1074,  -2380}, 0, {   650,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,   -357,  -2380}, 0, {   650,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,   -357,  -2329}, 0, {   308,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1178,  -1074,  -3045}, 0, {   990,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1229,   -357,  -2994}, 0, {   650,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1229,  -1074,  -2994}, 0, {   650,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1178,   -357,  -3045}, 0, {   990,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1229,  -1074,  -2994}, 0, {   650,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,   -357,  -2994}, 0, {   650,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,   -357,  -2943}, 0, {   308,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,  -1074,  -2943}, 0, {   308,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,  -1074,  -2943}, 0, {   308,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1229,   -357,  -2943}, 0, {   308,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1178,   -357,  -2892}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1178,  -1074,  -2892}, 0, {     0,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x070631E8 - 0x070632C8\nstatic const Vtx inside_castle_seg7_vertex_070631E8[] = {\n    {{{  1178,  -1074,  -2431}, 0, {   990,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1229,   -357,  -2380}, 0, {   650,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1229,  -1074,  -2380}, 0, {   650,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1178,   -357,  -2431}, 0, {   990,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1280,  -1074,  -1612}, 0, {   224,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1280,   -357,  -1561}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1280,  -1074,  -1561}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,  -1074,  -2380}, 0, {   650,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,   -357,  -2329}, 0, {   308,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,  -1074,  -2329}, 0, {   308,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,  -1074,  -2329}, 0, {   308,   2012}, {0x5a, 0x00, 0x58, 0xff}}},\n    {{{  1229,   -357,  -2329}, 0, {   308,      0}, {0x5a, 0x00, 0x58, 0xff}}},\n    {{{  1178,   -357,  -2277}, 0, {     0,      0}, {0x5a, 0x00, 0x58, 0xff}}},\n    {{{  1178,  -1074,  -2277}, 0, {     0,   2012}, {0x5a, 0x00, 0x58, 0xff}}},\n};\n\n// 0x070632C8 - 0x070633A8\nstatic const Vtx inside_castle_seg7_vertex_070632C8[] = {\n    {{{  1178,  -1074,  -1663}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1229,   -357,  -1663}, 0, {   734,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1229,  -1074,  -1663}, 0, {   734,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1178,   -357,  -1663}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1229,  -1074,  -1663}, 0, {   734,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1229,   -357,  -1663}, 0, {   734,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1280,   -357,  -1612}, 0, {   224,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1280,  -1074,  -1612}, 0, {   224,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1280,  -1074,  -1612}, 0, {   224,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1280,   -357,  -1612}, 0, {   224,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1280,   -357,  -1561}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3584,  -1074,  -3660}, 0, {   734,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3584,   -357,  -3660}, 0, {   734,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3533,   -357,  -3711}, 0, {   224,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x070633A8 - 0x070634A8\nstatic const Vtx inside_castle_seg7_vertex_070633A8[] = {\n    {{{  1280,  -1074,  -3762}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1280,   -357,  -3762}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1280,   -357,  -3711}, 0, {   734,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1280,  -1074,  -3711}, 0, {   734,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1280,  -1074,  -3711}, 0, {   734,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1280,   -357,  -3711}, 0, {   734,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1229,   -357,  -3660}, 0, {   224,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1229,  -1074,  -3660}, 0, {   224,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1229,  -1074,  -3660}, 0, {   224,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1229,   -357,  -3660}, 0, {   224,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1178,   -357,  -3660}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1178,  -1074,  -3660}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3635,  -1074,  -3660}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3635,   -357,  -3660}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3584,   -357,  -3660}, 0, {   734,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3584,  -1074,  -3660}, 0, {   734,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070634A8 - 0x07063588\nstatic const Vtx inside_castle_seg7_vertex_070634A8[] = {\n    {{{  3584,  -1074,  -1663}, 0, {   224,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3635,   -357,  -1663}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3635,  -1074,  -1663}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3584,  -1074,  -3660}, 0, {   734,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3533,   -357,  -3711}, 0, {   224,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3533,  -1074,  -3711}, 0, {   224,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3533,  -1074,  -3711}, 0, {   224,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3533,   -357,  -3711}, 0, {   224,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3533,   -357,  -3762}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3533,  -1074,  -3762}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3533,  -1074,  -1561}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3533,   -357,  -1612}, 0, {   734,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3533,  -1074,  -1612}, 0, {   734,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3533,   -357,  -1561}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07063588 - 0x07063668\nstatic const Vtx inside_castle_seg7_vertex_07063588[] = {\n    {{{  3533,  -1074,  -1612}, 0, {   734,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  3533,   -357,  -1612}, 0, {   734,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  3584,   -357,  -1663}, 0, {   224,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  3584,  -1074,  -1663}, 0, {   224,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  3584,  -1074,  -1663}, 0, {   224,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3584,   -357,  -1663}, 0, {   224,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3635,   -357,  -1663}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3328,  -1228,  -1996}, 0, {   240,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3635,  -1228,  -2021}, 0, {   176,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1228,  -2021}, 0, {   176,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3277,  -1279,  -2841}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3277,  -1305,  -2482}, 0, {   826,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3277,  -1279,  -2482}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3277,  -1305,  -2841}, 0, {   826,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07063668 - 0x07063758\nstatic const Vtx inside_castle_seg7_vertex_07063668[] = {\n    {{{  3328,  -1253,  -2047}, 0, {    40,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3635,  -1279,  -2047}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3328,  -1279,  -2047}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3635,  -1253,  -2047}, 0, {    40,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3328,  -1253,  -2021}, 0, {   104,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3635,  -1253,  -2047}, 0, {    40,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1253,  -2047}, 0, {    40,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3635,  -1253,  -2021}, 0, {   104,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1228,  -2021}, 0, {   176,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3635,  -1253,  -2021}, 0, {   104,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3328,  -1253,  -2021}, 0, {   104,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3635,  -1228,  -2021}, 0, {   176,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3328,  -1151,  -1945}, 0, {   584,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3635,  -1151,  -1945}, 0, {   584,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3635,  -1177,  -1945}, 0, {   510,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07063758 - 0x07063848\nstatic const Vtx inside_castle_seg7_vertex_07063758[] = {\n    {{{  3635,  -1228,  -1996}, 0, {   240,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3635,  -1228,  -2021}, 0, {   176,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1228,  -1996}, 0, {   240,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1202,  -1996}, 0, {   312,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3635,  -1228,  -1996}, 0, {   240,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3328,  -1228,  -1996}, 0, {   240,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3635,  -1202,  -1996}, 0, {   312,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3328,  -1202,  -1970}, 0, {   374,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3635,  -1202,  -1996}, 0, {   312,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1202,  -1996}, 0, {   312,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3635,  -1202,  -1970}, 0, {   374,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1177,  -1970}, 0, {   448,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3635,  -1202,  -1970}, 0, {   374,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3328,  -1202,  -1970}, 0, {   374,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3635,  -1177,  -1970}, 0, {   448,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07063848 - 0x07063928\nstatic const Vtx inside_castle_seg7_vertex_07063848[] = {\n    {{{  3328,  -1177,  -1945}, 0, {   510,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3635,  -1177,  -1970}, 0, {   448,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1177,  -1970}, 0, {   448,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3635,  -1177,  -1945}, 0, {   510,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1151,  -1945}, 0, {   584,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3635,  -1177,  -1945}, 0, {   510,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3328,  -1177,  -1945}, 0, {   510,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3635,  -1100,  -1868}, 0, {   918,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3328,  -1074,  -1868}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3635,  -1074,  -1868}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3328,  -1151,  -1919}, 0, {   646,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3635,  -1151,  -1945}, 0, {   584,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1151,  -1945}, 0, {   584,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3635,  -1151,  -1919}, 0, {   646,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07063928 - 0x07063A28\nstatic const Vtx inside_castle_seg7_vertex_07063928[] = {\n    {{{  3328,  -1125,  -1919}, 0, {   718,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3635,  -1151,  -1919}, 0, {   646,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3328,  -1151,  -1919}, 0, {   646,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3635,  -1125,  -1919}, 0, {   718,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3328,  -1125,  -1893}, 0, {   782,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3635,  -1125,  -1919}, 0, {   718,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1125,  -1919}, 0, {   718,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3635,  -1125,  -1893}, 0, {   782,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1100,  -1893}, 0, {   854,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3635,  -1125,  -1893}, 0, {   782,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3328,  -1125,  -1893}, 0, {   782,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3635,  -1100,  -1893}, 0, {   854,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3328,  -1100,  -1868}, 0, {   918,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3635,  -1100,  -1893}, 0, {   854,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1100,  -1893}, 0, {   854,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3635,  -1100,  -1868}, 0, {   918,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07063A28 - 0x07063B08\nstatic const Vtx inside_castle_seg7_vertex_07063A28[] = {\n    {{{  3251,  -1330,  -2482}, 0, {   540,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3251,  -1330,  -2841}, 0, {   540,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3226,  -1330,  -2841}, 0, {   418,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3635,  -1100,  -1868}, 0, {   918,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3328,  -1100,  -1868}, 0, {   918,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3328,  -1074,  -1868}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3200,  -1356,  -2482}, 0, {   132,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3200,  -1356,  -2841}, 0, {   132,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3200,  -1381,  -2482}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3200,  -1381,  -2841}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3226,  -1356,  -2482}, 0, {   254,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3200,  -1356,  -2841}, 0, {   132,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3200,  -1356,  -2482}, 0, {   132,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3226,  -1356,  -2841}, 0, {   254,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07063B08 - 0x07063BF8\nstatic const Vtx inside_castle_seg7_vertex_07063B08[] = {\n    {{{  3226,  -1330,  -2482}, 0, {   418,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3226,  -1356,  -2841}, 0, {   254,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3226,  -1356,  -2482}, 0, {   254,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3226,  -1330,  -2841}, 0, {   418,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3251,  -1330,  -2482}, 0, {   540,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3226,  -1330,  -2841}, 0, {   418,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3226,  -1330,  -2482}, 0, {   418,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3251,  -1305,  -2482}, 0, {   704,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3251,  -1330,  -2841}, 0, {   540,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3251,  -1330,  -2482}, 0, {   540,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3251,  -1305,  -2841}, 0, {   704,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3277,  -1305,  -2482}, 0, {   826,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3251,  -1305,  -2841}, 0, {   704,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3251,  -1305,  -2482}, 0, {   704,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3277,  -1305,  -2841}, 0, {   826,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07063BF8 - 0x07063CE8\nstatic const Vtx inside_castle_seg7_vertex_07063BF8[] = {\n    {{{  3328,  -1100,  -3429}, 0, {   854,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3635,  -1100,  -3429}, 0, {   854,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1100,  -3455}, 0, {   918,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3635,  -1100,  -3455}, 0, {   918,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1125,  -3429}, 0, {   782,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3635,  -1125,  -3404}, 0, {   718,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3635,  -1125,  -3429}, 0, {   782,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1125,  -3404}, 0, {   718,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1228,  -3327}, 0, {   240,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3635,  -1228,  -3301}, 0, {   176,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3635,  -1228,  -3327}, 0, {   240,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1151,  -3404}, 0, {   646,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3635,  -1151,  -3378}, 0, {   584,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3635,  -1151,  -3404}, 0, {   646,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1151,  -3378}, 0, {   584,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07063CE8 - 0x07063DD8\nstatic const Vtx inside_castle_seg7_vertex_07063CE8[] = {\n    {{{  3328,  -1177,  -3353}, 0, {   448,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3635,  -1177,  -3353}, 0, {   448,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3635,  -1177,  -3378}, 0, {   510,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1177,  -3378}, 0, {   510,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1202,  -3327}, 0, {   312,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3635,  -1202,  -3327}, 0, {   312,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1202,  -3353}, 0, {   374,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3635,  -1202,  -3353}, 0, {   374,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1253,  -3276}, 0, {    40,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3635,  -1253,  -3276}, 0, {    40,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1253,  -3301}, 0, {   104,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1228,  -3301}, 0, {   176,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3635,  -1228,  -3301}, 0, {   176,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,  -1228,  -3327}, 0, {   240,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3635,  -1253,  -3301}, 0, {   104,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07063DD8 - 0x07063E18\nstatic const Vtx inside_castle_seg7_vertex_07063DD8[] = {\n    {{{  3635,   -357,  -1561}, 0, {   112,    836}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1178,   -357,  -1561}, 0, {   112,   1900}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1178,   -357,  -3762}, 0, {   846,   1900}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3635,   -357,  -3762}, 0, {   846,    836}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07063E18 - 0x07063F08\nstatic const Vtx inside_castle_seg7_vertex_07063E18[] = {\n    {{{  3635,  -1074,  -3660}, 0, { -4630,   1720}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3635,  -1279,  -3660}, 0, { -4630,   1136}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3635,  -1279,  -1663}, 0, {  5334,   1136}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1178,   -665,  -2892}, 0, {  1756,    844}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1178,   -357,  -2431}, 0, {  -540,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1178,   -665,  -2431}, 0, {  -540,    844}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1178,   -357,  -2892}, 0, {  1756,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1178,  -1074,  -2277}, 0, { -1308,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1178,   -357,  -1663}, 0, { -4374,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1178,  -1074,  -1663}, 0, { -4374,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1178,   -357,  -2277}, 0, { -1308,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1178,  -1074,  -3660}, 0, {  5588,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1178,   -357,  -3660}, 0, {  5588,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1178,   -357,  -3045}, 0, {  2522,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1178,  -1074,  -3045}, 0, {  2522,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07063F08 - 0x07063FF8\nstatic const Vtx inside_castle_seg7_vertex_07063F08[] = {\n    {{{  3533,  -1074,  -1561}, 0, { -5140,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1280,  -1074,  -1561}, 0, {  6100,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1280,   -357,  -1561}, 0, {  6100,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3635,  -1074,  -3660}, 0, { -4630,   1720}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3635,  -1279,  -1663}, 0, {  5334,   1136}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3635,  -1074,  -1663}, 0, {  5334,   1720}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3635,   -357,  -1663}, 0, {  6356,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3635,  -1074,  -3660}, 0, { -3608,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3635,  -1074,  -1663}, 0, {  6356,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3635,   -357,  -3660}, 0, { -3608,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1280,  -1074,  -3762}, 0, { -6162,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3533,   -357,  -3762}, 0, {  5078,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1280,   -357,  -3762}, 0, { -6162,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3533,  -1074,  -3762}, 0, {  5078,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3533,   -357,  -1561}, 0, { -5140,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07063FF8 - 0x07064078\nstatic const Vtx inside_castle_seg7_vertex_07063FF8[] = {\n    {{{  2304,  -1689,  -3045}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2867,  -1689,  -2841}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2662,  -1689,  -3045}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2099,  -1689,  -2482}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2304,  -1689,  -2277}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2099,  -1689,  -2841}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2662,  -1689,  -2277}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2867,  -1689,  -2482}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07064078 - 0x07064180\nstatic const Gfx inside_castle_seg7_dl_07064078[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_07061C90.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07061C90.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07061CD8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  0,  2, 11, 0x0),\n    gsSP2Triangles( 2, 12, 13, 0x0,  2, 13, 14, 0x0),\n    gsSP1Triangle( 1, 12,  2, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07061DC8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0, 10,  9,  6, 0x0),\n    gsSP2Triangles(11, 10,  6, 0x0,  4, 11,  6, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0,  2, 13, 14, 0x0),\n    gsSP1Triangle(14, 13, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07061EC8, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07064180 - 0x07064618\nstatic const Gfx inside_castle_seg7_dl_07064180[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07061F68, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  3,  7,  8, 0x0),\n    gsSP2Triangles( 3,  8,  9, 0x0,  3,  9,  4, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 13, 10, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07062058, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0,  7, 11,  8, 0x0),\n    gsSP2Triangles( 7, 12, 13, 0x0,  7, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07062148, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  0, 11, 12, 0x0),\n    gsSP2Triangles( 0, 13, 11, 0x0,  0,  2, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07062238, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07062318, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070623F8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  2,  5,  6, 0x0),\n    gsSP2Triangles( 2,  6,  3, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070624D8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  3,  7,  4, 0x0),\n    gsSP2Triangles( 6,  5,  8, 0x0,  9, 10,  6, 0x0),\n    gsSP2Triangles( 9,  6,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070625D8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 4,  8,  9, 0x0,  4,  9, 10, 0x0),\n    gsSP2Triangles( 4, 10,  5, 0x0,  8,  7, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070626D8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  5,  3, 0x0,  0,  2,  6, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  6,  2,  7, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070627D8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070628D8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070629C8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07062AA8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07062B98, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07062C88, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07062D68, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07062E58, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07064618 - 0x07064A50\nstatic const Gfx inside_castle_seg7_dl_07064618[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_07061CA8.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07061CA8.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07062ED8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07062FC8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070630B8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_07061C90.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07061C90.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_070630F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070631E8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070632C8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070633A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070634A8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07063588, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07063668, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  5,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07063758, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  8,  7, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07063848, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 11, 10, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07063928, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  5,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 15, 13, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07063A28, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07063B08, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07063BF8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  5,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 12, 11, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07063CE8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(10,  9, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07064A50 - 0x07064A88\nstatic const Gfx inside_castle_seg7_dl_07064A50[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09009000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07063DD8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07064A88 - 0x07064B28\nstatic const Gfx inside_castle_seg7_dl_07064A88[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09006000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07063E18, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07063F08, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07064B28 - 0x07064B78\nstatic const Gfx inside_castle_seg7_dl_07064B28[] = {\n    gsSPLight(&inside_castle_seg7_lights_07061CC0.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07061CC0.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07063FF8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  5,  3, 0x0,  0,  4,  6, 0x0),\n    gsSP2Triangles( 0,  6,  7, 0x0,  0,  7,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07064B78 - 0x07064C40\nconst Gfx inside_castle_seg7_dl_07064B78[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07064078),\n    gsSPDisplayList(inside_castle_seg7_dl_07064180),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07064618),\n    gsSPDisplayList(inside_castle_seg7_dl_07064A50),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07064A88),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(inside_castle_seg7_dl_07064B28),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/3/7/model.inc.c",
    "content": "// 0x07064C40 - 0x07064D00\nstatic const Vtx inside_castle_seg7_vertex_07064C40[] = {\n    {{{  1669,   -972,  -1847}, 0, { -7184,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1669,  -1074,  -3475}, 0, {  8654,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1669,   -972,  -3475}, 0, {  8654,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1669,  -1074,  -1847}, 0, { -7184,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1669,   -972,  -1847}, 0, {  8144,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3277,  -1074,  -1847}, 0, { -7694,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1669,  -1074,  -1847}, 0, {  8144,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3277,   -972,  -1847}, 0, { -7694,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3277,   -972,  -3475}, 0, {  8654,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1669,  -1074,  -3475}, 0, { -7184,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3277,  -1074,  -3475}, 0, {  8654,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1669,   -972,  -3475}, 0, { -7184,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07064D00 - 0x07064D58\nstatic const Gfx inside_castle_seg7_dl_07064D00[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07064C40, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07064D58 - 0x07064DC8\nconst Gfx inside_castle_seg7_dl_07064D58[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07064D00),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/3/8/model.inc.c",
    "content": "// 0x07064DC8 - 0x07064DE0\nstatic const Lights1 inside_castle_seg7_lights_07064DC8 = gdSPDefLights1(\n    0x5f, 0x5f, 0x5f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07064DE0 - 0x07064EE0\nstatic const Vtx inside_castle_seg7_vertex_07064DE0[] = {\n    {{{  5376,   -255,   -972}, 0, {  9676,  -6676}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3738,  -2429,   -972}, 0, {  1502,   4174}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5376,  -1177,   -972}, 0, {  9676,  -2076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3738,  -2429,   -972}, 0, { -3168,  -1566}, {0xb3, 0x64, 0x00, 0xff}}},\n    {{{  3686,  -2469,   -921}, 0, { -3490,  -1310}, {0xb3, 0x64, 0x00, 0xff}}},\n    {{{  3686,  -2469,   -101}, 0, { -3490,   2776}, {0xb3, 0x64, 0x00, 0xff}}},\n    {{{  3738,  -2429,    -50}, 0, { -3168,   3032}, {0xb3, 0x64, 0x00, 0xff}}},\n    {{{  3635,  -2508,   -921}, 0, { -3812,  -1310}, {0xb3, 0x64, 0x00, 0xff}}},\n    {{{  3635,  -2508,   -101}, 0, { -3812,   2776}, {0xb3, 0x64, 0x00, 0xff}}},\n    {{{  5376,  -1177,   -972}, 0, {   990,  -3608}, {0xb3, 0x64, 0x00, 0xff}}},\n    {{{  3738,  -2429,   -972}, 0, { -9300,  -3608}, {0xb3, 0x64, 0x00, 0xff}}},\n    {{{  3738,  -2429,    -50}, 0, { -9300,    990}, {0xb3, 0x64, 0x00, 0xff}}},\n    {{{  5376,  -1177,    -50}, 0, {   990,    990}, {0xb3, 0x64, 0x00, 0xff}}},\n    {{{  5376,   -255,    -50}, 0, { -6162,  -2076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  7834,   -255,    256}, 0, {  6100,  -3610}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  5888,   -255,    256}, 0, { -3608,  -3610}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07064EE0 - 0x07064FD0\nstatic const Vtx inside_castle_seg7_vertex_07064EE0[] = {\n    {{{  5376,   -255,   -972}, 0, {  9676,  -6676}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3738,  -1508,   -972}, 0, {  1500,   -422}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3738,  -2429,   -972}, 0, {  1502,   4174}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5376,  -1177,    -50}, 0, {  9676,  -2076}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3738,  -2429,    -50}, 0, {  1502,   4174}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3738,  -1508,    -50}, 0, {  1500,   -422}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5376,   -255,    -50}, 0, {  9676,  -6676}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5376,   -255,    -50}, 0, { -6162,  -2076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  5376,   -255,   -972}, 0, { -6162,   2522}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  5888,   -255,  -1279}, 0, { -3608,   4054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  7834,   -255,  -1279}, 0, {  6100,   4054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  7834,   -255,    256}, 0, {  6100,  -3610}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  5888,  -1177,  -1279}, 0, {  2524,  -5142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5376,  -1177,   -972}, 0, {     0,  -3610}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5376,  -1177,    -50}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07064FD0 - 0x070650D0\nstatic const Vtx inside_castle_seg7_vertex_07064FD0[] = {\n    {{{  6605,  -1177,    -50}, 0, {  6100,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5888,  -1177,    256}, 0, {  2524,   2522}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6605,  -1177,    256}, 0, {  6100,   2522}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5888,  -1177,    -50}, 0, {  2524,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6605,  -1177,  -1279}, 0, {  6100,  -5142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5888,  -1177,  -1279}, 0, {  2524,  -5142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5888,  -1177,   -972}, 0, {  2524,  -3610}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6605,  -1177,   -972}, 0, {  6100,  -3610}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6605,  -1586,    -50}, 0, {  4088,    990}, {0x3e, 0x6e, 0x00, 0xff}}},\n    {{{  6605,  -1586,   -972}, 0, {  4088,  -3610}, {0x3e, 0x6e, 0x00, 0xff}}},\n    {{{  5888,  -1177,   -972}, 0, {     0,  -3610}, {0x3e, 0x6e, 0x00, 0xff}}},\n    {{{  5888,  -1177,    -50}, 0, {     0,    990}, {0x3e, 0x6e, 0x00, 0xff}}},\n    {{{  2202,   -562,    154}, 0, {  5078,  -2076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   768,   -562,    154}, 0, {  -542,  -2076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   768,   -562,  -1177}, 0, {  -540,   4566}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  5376,  -1177,    -50}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070650D0 - 0x070651C0\nstatic const Vtx inside_castle_seg7_vertex_070650D0[] = {\n    {{{    51,   -306,    154}, 0, { -4118,  -2076}, {0xb7, 0x99, 0x00, 0xff}}},\n    {{{    51,   -306,   -460}, 0, { -4118,    990}, {0xb7, 0x99, 0x00, 0xff}}},\n    {{{   410,   -562,   -460}, 0, { -2330,    990}, {0xb7, 0x99, 0x00, 0xff}}},\n    {{{    51,   -306,    154}, 0, { -4118,  -2076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -562,   -306,    154}, 0, { -7184,  -2076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -562,   -306,   -460}, 0, { -7184,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    51,   -306,   -460}, 0, { -4118,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   410,   -562,    154}, 0, { -2330,  -2076}, {0xb7, 0x99, 0x00, 0xff}}},\n    {{{   410,   -562,   -460}, 0, { -2330,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   768,   -562,   -460}, 0, {  -542,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   768,   -562,    154}, 0, {  -542,  -2076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   410,   -562,    154}, 0, { -2330,  -2076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2202,   -562,    154}, 0, {  5078,  -2076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   768,   -562,  -1177}, 0, {  -540,   4566}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2202,   -562,  -1177}, 0, {  5078,   4566}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x070651C0 - 0x070652B0\nstatic const Vtx inside_castle_seg7_vertex_070651C0[] = {\n    {{{  1280,  -1689,   -972}, 0, { -4118,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2099,  -1586,   -972}, 0, {     0,  -3610}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1894,  -1381,   -972}, 0, { -1052,  -4630}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  7834,  -1586,   -434}, 0, {  9678,   2648}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  7936,  -1586,   -588}, 0, { 10188,   1882}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  7834,  -1586,   -588}, 0, {  9678,   1882}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  7936,  -1586,   -434}, 0, { 10188,   2648}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6605,  -1586,  -1279}, 0, {     0,  -5142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  7834,  -1586,    256}, 0, {  6100,   2522}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  7834,  -1586,  -1279}, 0, {  6100,  -5142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6605,  -1586,    256}, 0, {     0,   2522}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5376,   -255,    -50}, 0, {  6100,  -2586}, {0x4d, 0x9c, 0x00, 0xff}}},\n    {{{  3635,  -1586,    -50}, 0, { -4834,  -2586}, {0x4d, 0x9c, 0x00, 0xff}}},\n    {{{  3635,  -1586,   -972}, 0, { -4834,   2010}, {0x4d, 0x9c, 0x00, 0xff}}},\n    {{{  5376,   -255,   -972}, 0, {  6100,   2010}, {0x4d, 0x9c, 0x00, 0xff}}},\n};\n\n// 0x070652B0 - 0x070653A0\nstatic const Vtx inside_castle_seg7_vertex_070652B0[] = {\n    {{{  2099,  -1586,   -972}, 0, {   990,  -1564}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  1894,  -1381,    -50}, 0, {  -454,   3032}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  1894,  -1381,   -972}, 0, {  -454,  -1564}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  1280,  -1689,   -972}, 0, { -4118,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2099,  -2508,   -972}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2099,  -1586,   -972}, 0, {     0,  -3610}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3533,  -1586,   -972}, 0, {  7122,  -3610}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3533,  -2508,   -972}, 0, {  7122,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1894,  -1381,    -50}, 0, { -1052,  -4630}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2099,  -1586,    -50}, 0, {     0,  -3610}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1280,  -1689,    -50}, 0, { -4118,  -3098}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3533,  -2508,    -50}, 0, {  7122,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2099,  -2508,    -50}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3533,  -1586,    -50}, 0, {  7122,  -3610}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2099,  -1586,    -50}, 0, {   990,   3032}, {0xa7, 0xa7, 0x00, 0xff}}},\n};\n\n// 0x070653A0 - 0x07065460\nstatic const Vtx inside_castle_seg7_vertex_070653A0[] = {\n    {{{  3635,  -1586,   -972}, 0, {  4056,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3635,  -1586,    -50}, 0, {  4056,  -4632}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2099,  -1586,    -50}, 0, { -3608,  -4632}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2099,  -1586,   -972}, 0, { -3608,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2099,  -2508,   -972}, 0, {  -540,  -3610}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2099,  -2508,    -50}, 0, {  -542,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3635,  -2508,    -50}, 0, {  7122,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3635,  -2508,   -972}, 0, {  7122,  -3610}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,  -1689,   -972}, 0, { -4790,  -3610}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{  2099,  -2508,    -50}, 0, {   990,    990}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{  2099,  -2508,   -972}, 0, {   990,  -3610}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{  1280,  -1689,    -50}, 0, { -4790,    990}, {0x59, 0x59, 0x00, 0xff}}},\n};\n\n// 0x07065460 - 0x07065560\nstatic const Vtx inside_castle_seg7_vertex_07065460[] = {\n    {{{  -153,   -972,   -460}, 0, {  5078,   1498}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,   -972,    154}, 0, {  4312,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,   -972,   -460}, 0, {  4312,   1498}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   768,  -1177,   -793}, 0, {   480,   3160}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   768,  -1177,   -946}, 0, {   480,   3926}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   717,  -1177,   -946}, 0, {   734,   3926}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   717,  -1177,   -793}, 0, {   734,   3160}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -153,   -767,   -460}, 0, {  5078,   1498}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -562,   -767,   -460}, 0, {  7122,   1498}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -562,   -767,    154}, 0, {  7122,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -153,   -767,    154}, 0, {  5078,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,   -767,    205}, 0, {  5588,  -1820}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -409,   -767,    154}, 0, {  6356,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -409,   -767,    205}, 0, {  6356,  -1820}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,   -767,    154}, 0, {  5588,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -153,   -972,    154}, 0, {  5078,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07065560 - 0x07065620\nstatic const Vtx inside_castle_seg7_vertex_07065560[] = {\n    {{{     0,  -1177,    154}, 0, { -1564,   2522}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   768,  -1177,   -460}, 0, {  2268,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,  -1177,   -460}, 0, { -1564,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1997,  -1177,    154}, 0, {  8400,   2522}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1894,  -1177,    -50}, 0, {  7888,   1500}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1178,  -1177,    -50}, 0, {  4312,   1500}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1178,  -1177,   -972}, 0, {  4312,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   768,  -1177,  -1177}, 0, {  2268,  -4120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1997,  -1177,  -1177}, 0, {  8400,  -4120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2202,  -1177,    -50}, 0, {  9422,   1500}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2202,  -1177,   -972}, 0, {  9422,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1894,  -1177,   -972}, 0, {  7888,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07065620 - 0x07065710\nstatic const Vtx inside_castle_seg7_vertex_07065620[] = {\n    {{{  -153,   -972,   -460}, 0, {  6100,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -153,   -767,   -460}, 0, {  6100,  -3098}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -153,   -767,    154}, 0, {     0,  -3098}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6605,  -1586,    -50}, 0, {  5078,   4054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6605,  -1177,    256}, 0, {  8144,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6605,  -1586,    256}, 0, {  8144,   4054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6605,  -1177,    -50}, 0, {  5078,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6605,  -1586,  -1279}, 0, { -7184,   4054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6605,  -1177,   -972}, 0, { -4118,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6605,  -1586,   -972}, 0, { -4118,   4054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6605,  -1177,  -1279}, 0, { -7184,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1178,  -1177,   -972}, 0, {  7122,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1894,  -1381,   -972}, 0, {     0,   2010}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1894,  -1177,   -972}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -153,   -972,    154}, 0, {     0,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07065710 - 0x07065810\nstatic const Vtx inside_castle_seg7_vertex_07065710[] = {\n    {{{  1894,  -1177,    -50}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1894,  -1381,    -50}, 0, {     0,   2010}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1178,  -1177,    -50}, 0, {  7122,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,   -972,   -460}, 0, {  6100,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,  -1177,    154}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,  -1177,   -460}, 0, {  6100,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,   -972,    154}, 0, {     0,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1894,  -1381,   -972}, 0, {  9166,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1894,  -1381,    -50}, 0, {     0,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1894,  -1177,    -50}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1894,  -1177,   -972}, 0, {  9166,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1178,  -1177,   -972}, 0, {  7122,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1280,  -1689,   -972}, 0, {  6100,   5076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1894,  -1381,   -972}, 0, {     0,   2010}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1178,  -1689,   -972}, 0, {  7122,   5076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1178,  -1689,    -50}, 0, {  7122,   5076}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07065810 - 0x070658C0\nstatic const Vtx inside_castle_seg7_vertex_07065810[] = {\n    {{{  1894,  -1381,    -50}, 0, {     0,   2010}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1280,  -1689,    -50}, 0, {  6100,   5076}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1178,  -1689,    -50}, 0, {  7122,   5076}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1178,  -1689,    -50}, 0, { -3096,   1500}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,  -1689,    -50}, 0, { -3096,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1178,  -1689,   -972}, 0, {  6100,   1498}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,  -1689,   -972}, 0, {  6100,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1178,  -1177,   -972}, 0, {  9166,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1178,  -1177,    -50}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1178,  -1689,    -50}, 0, {     0,   5076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1178,  -1689,   -972}, 0, {  9166,   5076}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070658C0 - 0x070659C0\nstatic const Vtx inside_castle_seg7_vertex_070658C0[] = {\n    {{{  6605,  -1586,    256}, 0, {  5590,   6610}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5888,  -1177,    256}, 0, {  2012,   4566}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5888,   -255,    256}, 0, {  2012,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6605,  -1586,   -972}, 0, {  5590,   6610}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6605,  -1177,   -972}, 0, {  5590,   4566}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5888,  -1177,   -972}, 0, {  2012,   4566}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5888,  -1177,    -50}, 0, {  2012,   4566}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6605,  -1177,    -50}, 0, {  5590,   4566}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6605,  -1586,    -50}, 0, {  5590,   6610}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5888,   -255,  -1279}, 0, {  2012,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  7629,  -1586,  -1279}, 0, { 10700,   6610}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  7629,   -255,  -1279}, 0, { 10698,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6605,  -1586,  -1279}, 0, {  5590,   6610}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5888,  -1177,  -1279}, 0, {  2012,   4566}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  7629,   -255,    256}, 0, { 10698,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  7629,  -1586,    256}, 0, { 10700,   6610}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070659C0 - 0x07065AB0\nstatic const Vtx inside_castle_seg7_vertex_070659C0[] = {\n    {{{  -562,   -306,    154}, 0, {     0,  -3354}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -562,   -767,    154}, 0, {     0,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -562,   -767,   -460}, 0, {  3034,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -562,   -306,   -460}, 0, {  3034,  -3354}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1997,   -562,  -1177}, 0, { -4118,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   768,   -562,  -1177}, 0, {  2012,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   768,  -1177,  -1177}, 0, {  2012,   2010}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1997,  -1177,  -1177}, 0, { -4118,   2010}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   410,   -562,    154}, 0, {  3800,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1997,   -562,    154}, 0, { -4118,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1997,  -1177,    154}, 0, { -4118,   2010}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -153,  -1177,   -460}, 0, { -3608,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   768,  -1177,   -460}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   410,   -562,   -460}, 0, {  -796,  -2076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   768,   -562,   -460}, 0, {   990,  -2076}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07065AB0 - 0x07065BB0\nstatic const Vtx inside_castle_seg7_vertex_07065AB0[] = {\n    {{{  -153,   -767,   -460}, 0, { -3608,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   410,   -562,   -460}, 0, {  -796,  -2076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    51,   -306,   -460}, 0, { -2586,  -3354}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -153,  -1177,   -460}, 0, { -3608,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -562,   -306,   -460}, 0, { -5652,  -3354}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -562,   -767,   -460}, 0, { -5652,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   410,   -562,    154}, 0, {  3800,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1997,  -1177,    154}, 0, { -4118,   2010}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -153,   -767,    154}, 0, {  6610,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    51,   -306,    154}, 0, {  5588,  -2332}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -255,   -767,    154}, 0, {  7122,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -255,   -511,    154}, 0, {  7122,  -1310}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   768,   -921,   -793}, 0, {   478,   -288}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   717,  -1177,   -793}, 0, {   224,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   717,   -921,   -793}, 0, {   224,   -288}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -562,   -306,    154}, 0, {  8654,  -2332}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07065BB0 - 0x07065C90\nstatic const Vtx inside_castle_seg7_vertex_07065BB0[] = {\n    {{{   768,   -921,   -793}, 0, {    96,   -288}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   768,   -921,   -946}, 0, {   862,   -288}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   768,   -562,  -1177}, 0, {  2012,  -2076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   768,  -1177,  -1177}, 0, {  2012,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   768,  -1177,   -946}, 0, {   862,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   768,   -562,   -460}, 0, { -1564,  -2076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   768,  -1177,   -460}, 0, { -1564,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   768,  -1177,   -793}, 0, {    96,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   768,   -921,   -793}, 0, {   478,   -288}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   768,  -1177,   -793}, 0, {   480,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   717,  -1177,   -793}, 0, {   224,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -409,   -511,    154}, 0, {  7888,  -1310}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -409,   -767,    154}, 0, {  7888,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -562,   -767,    154}, 0, {  8654,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07065C90 - 0x07065D80\nstatic const Vtx inside_castle_seg7_vertex_07065C90[] = {\n    {{{   717,   -921,   -946}, 0, {   224,   -288}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   768,  -1177,   -946}, 0, {   480,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   768,   -921,   -946}, 0, {   478,   -288}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   717,  -1177,   -946}, 0, {   224,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   717,   -921,   -793}, 0, {   224,   -288}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   717,   -921,   -946}, 0, {   224,   -288}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   768,   -921,   -946}, 0, {   478,   -288}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   768,   -921,   -793}, 0, {   478,   -288}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -255,   -511,    154}, 0, {  7122,  -1310}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -409,   -511,    154}, 0, {  7888,  -1310}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -562,   -306,    154}, 0, {  8654,  -2332}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -562,   -767,    154}, 0, {  8654,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5478,   -255,   -153}, 0, {     0,      0}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{  5478,  -1177,   -153}, 0, {     0,   4566}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{  5376,  -1177,    -50}, 0, {  -540,   4566}, {0xa6, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07065D80 - 0x07065E70\nstatic const Vtx inside_castle_seg7_vertex_07065D80[] = {\n    {{{  1997,  -1177,    154}, 0, { -4118,   2010}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -153,  -1177,    154}, 0, {  6610,   2010}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -153,   -767,    154}, 0, {  6610,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -255,   -511,    205}, 0, {  -286,  -2332}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,   -767,    154}, 0, {     0,  -1054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,   -767,    205}, 0, {  -286,  -1054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -409,   -511,    205}, 0, {  -286,  -2332}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -255,   -511,    154}, 0, {     0,  -2332}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -255,   -511,    205}, 0, {  -286,  -2332}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -255,   -511,    154}, 0, {     0,  -2332}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -409,   -511,    154}, 0, {     0,  -2332}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -409,   -767,    205}, 0, {  -286,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -409,   -511,    154}, 0, {     0,  -2332}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -409,   -511,    205}, 0, {  -286,  -2332}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -409,   -767,    154}, 0, {     0,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07065E70 - 0x07065F50\nstatic const Vtx inside_castle_seg7_vertex_07065E70[] = {\n    {{{  5581,   -255,   -153}, 0, {   478,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5478,  -1177,   -153}, 0, {     0,   4566}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5478,   -255,   -153}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5478,   -255,   -869}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5581,  -1177,   -869}, 0, {   480,   4566}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5581,   -255,   -869}, 0, {   478,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5581,  -1177,   -153}, 0, {   480,   4566}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5478,   -255,   -153}, 0, {     0,      0}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{  5376,  -1177,    -50}, 0, {  -540,   4566}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{  5376,   -255,    -50}, 0, {  -540,      0}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{  5888,   -255,    256}, 0, {  2012,      0}, {0x65, 0x00, 0xb4, 0xff}}},\n    {{{  5581,  -1177,   -153}, 0, {   480,   4566}, {0x65, 0x00, 0xb4, 0xff}}},\n    {{{  5581,   -255,   -153}, 0, {   478,      0}, {0x65, 0x00, 0xb4, 0xff}}},\n    {{{  5888,  -1177,    256}, 0, {  2012,   4566}, {0x65, 0x00, 0xb4, 0xff}}},\n};\n\n// 0x07065F50 - 0x07066030\nstatic const Vtx inside_castle_seg7_vertex_07065F50[] = {\n    {{{  5581,   -255,   -869}, 0, {   478,      0}, {0x65, 0x00, 0x4c, 0xff}}},\n    {{{  5888,  -1177,  -1279}, 0, {  2012,   4566}, {0x65, 0x00, 0x4c, 0xff}}},\n    {{{  5888,   -255,  -1279}, 0, {  2012,      0}, {0x65, 0x00, 0x4c, 0xff}}},\n    {{{  5581,  -1177,   -869}, 0, {   480,   4566}, {0x65, 0x00, 0x4c, 0xff}}},\n    {{{  7834,  -1330,   -434}, 0, { 11722,   5332}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  7936,  -1586,   -434}, 0, { 12232,   6610}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  7834,  -1586,   -434}, 0, { 11722,   6610}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5478,   -255,   -869}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5478,  -1177,   -869}, 0, {     0,   4566}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5581,  -1177,   -869}, 0, {   480,   4566}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5376,   -255,   -972}, 0, {  -540,      0}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  5478,  -1177,   -869}, 0, {     0,   4566}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  5478,   -255,   -869}, 0, {     0,      0}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  5376,  -1177,   -972}, 0, {  -540,   4566}, {0xa6, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07066030 - 0x07066110\nstatic const Vtx inside_castle_seg7_vertex_07066030[] = {\n    {{{  7834,  -1586,   -588}, 0, { 11722,   6610}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  7936,  -1330,   -588}, 0, { 12232,   5332}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  7834,  -1330,   -588}, 0, { 11722,   5332}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  7936,  -1586,   -588}, 0, { 12232,   6610}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  7834,  -1330,   -588}, 0, { 11722,   5332}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  7936,  -1330,   -588}, 0, { 12232,   5332}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  7936,  -1330,   -434}, 0, { 12232,   5332}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  7834,  -1330,   -434}, 0, { 11722,   5332}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  7834,  -1330,   -434}, 0, { 11722,   5332}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  7936,  -1330,   -434}, 0, { 12232,   5332}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  7936,  -1586,   -434}, 0, { 12232,   6610}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2202,   -562,   -972}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2202,  -1177,    -50}, 0, {  5590,   3032}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2202,   -562,    -50}, 0, {  5590,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07066110 - 0x070661F0\nstatic const Vtx inside_castle_seg7_vertex_07066110[] = {\n    {{{  7834,  -1330,   -588}, 0, {   352,   3288}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  7834,  -1330,   -434}, 0, {  1118,   3288}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  7834,   -255,     51}, 0, {  3544,  -2076}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  7834,  -1586,     51}, 0, {  3544,   4564}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  7834,  -1586,   -434}, 0, {  1118,   4564}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  7834,   -255,  -1074}, 0, { -2074,  -2076}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  7834,  -1586,  -1074}, 0, { -2074,   4564}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  7834,  -1586,   -588}, 0, {   352,   4564}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1997,   -562,  -1177}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2202,  -1177,   -972}, 0, {   990,   3032}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2202,   -562,   -972}, 0, {   990,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2202,   -562,   -972}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2202,  -1177,   -972}, 0, {   990,   3032}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2202,  -1177,    -50}, 0, {  5590,   3032}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070661F0 - 0x07066260\nstatic const Vtx inside_castle_seg7_vertex_070661F0[] = {\n    {{{  2202,   -562,    -50}, 0, {  5590,      0}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{  1997,  -1177,    154}, 0, {  6612,   3032}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{  1997,   -562,    154}, 0, {  6612,      0}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{  1997,   -562,  -1177}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1997,  -1177,  -1177}, 0, {     0,   3032}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2202,  -1177,   -972}, 0, {   990,   3032}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2202,  -1177,    -50}, 0, {  5590,   3032}, {0xa7, 0x00, 0xa6, 0xff}}},\n};\n\n// 0x07066260 - 0x07066360\nstatic const Vtx inside_castle_seg7_vertex_07066260[] = {\n    {{{  3738,  -2429,   -972}, 0, {   990,   1852}, {0x58, 0x00, 0x5a, 0xff}}},\n    {{{  3738,  -1508,   -972}, 0, {   990,      0}, {0x58, 0x00, 0x5a, 0xff}}},\n    {{{  3686,  -1547,   -921}, 0, {   734,     48}, {0x58, 0x00, 0x5a, 0xff}}},\n    {{{  3686,  -2469,   -921}, 0, {   734,   1932}, {0x58, 0x00, 0x5a, 0xff}}},\n    {{{  3686,  -2469,   -101}, 0, {   734,   1932}, {0x58, 0x00, 0xa6, 0xff}}},\n    {{{  3738,  -1508,    -50}, 0, {   990,      0}, {0x58, 0x00, 0xa6, 0xff}}},\n    {{{  3738,  -2429,    -50}, 0, {   990,   1852}, {0x58, 0x00, 0xa6, 0xff}}},\n    {{{  3686,  -1547,   -101}, 0, {   734,     48}, {0x58, 0x00, 0xa6, 0xff}}},\n    {{{  3686,  -2508,   -921}, 0, {   734,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3686,  -1547,   -921}, 0, {   734,     48}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3584,  -1586,   -921}, 0, {   224,    128}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3584,  -2508,   -921}, 0, {   224,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3584,  -2508,   -921}, 0, {   224,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3584,  -1586,   -921}, 0, {   224,    128}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3533,  -1586,   -972}, 0, {     0,    128}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3533,  -2508,   -972}, 0, {     0,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07066360 - 0x07066460\nstatic const Vtx inside_castle_seg7_vertex_07066360[] = {\n    {{{  3584,  -2508,   -101}, 0, {   224,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3686,  -1547,   -101}, 0, {   734,     48}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3686,  -2508,   -101}, 0, {   734,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3584,  -1586,   -101}, 0, {   224,    128}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3533,  -2508,    -50}, 0, {     0,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  3584,  -1586,   -101}, 0, {   224,    128}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  3584,  -2508,   -101}, 0, {   224,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  3533,  -1586,    -50}, 0, {     0,    128}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  7731,   -255,     51}, 0, {   224,      0}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{  7629,  -1586,    154}, 0, {   734,   2012}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{  7629,   -255,    154}, 0, {   734,      0}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{  7629,   -255,    154}, 0, {   734,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  7629,  -1586,    154}, 0, {   734,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  7629,  -1586,    256}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  7629,   -255,    256}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  7731,  -1586,     51}, 0, {   224,   2012}, {0xa6, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07066460 - 0x07066560\nstatic const Vtx inside_castle_seg7_vertex_07066460[] = {\n    {{{  7834,   -255,     51}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  7731,  -1586,     51}, 0, {   224,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  7731,   -255,     51}, 0, {   224,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  7834,  -1586,     51}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  7629,   -255,  -1177}, 0, {   224,      0}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  7731,  -1586,  -1074}, 0, {   734,   2012}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  7731,   -255,  -1074}, 0, {   734,      0}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  7731,   -255,  -1074}, 0, {   734,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  7834,  -1586,  -1074}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  7834,   -255,  -1074}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  7731,  -1586,  -1074}, 0, {   734,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  7629,  -1586,  -1177}, 0, {   224,   2012}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  7629,   -255,  -1279}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  7629,  -1586,  -1177}, 0, {   224,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  7629,   -255,  -1177}, 0, {   224,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  7629,  -1586,  -1279}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07066560 - 0x07066768\nstatic const Gfx inside_castle_seg7_dl_07066560[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_0900B000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_07064DC8.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07064DC8.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07064DE0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  5,  4, 0x0),\n    gsSP2Triangles( 7,  8,  5, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07064EE0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  7, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07064FD0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0,  5, 15,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070650D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  0,  2,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070651C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070652B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  4,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 12, 0x0),\n    gsSP2Triangles( 9, 13, 11, 0x0,  9, 12, 10, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070653A0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07066768 - 0x07066838\nstatic const Gfx inside_castle_seg7_dl_07066768[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07065460, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07065560, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 5,  6,  1, 0x0,  6,  7,  1, 0x0),\n    gsSP2Triangles( 8,  4,  3, 0x0,  8,  3,  9, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 8, 11,  4, 0x0,  6, 11,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07066838 - 0x07066910\nstatic const Gfx inside_castle_seg7_dl_07066838[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07065620, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07065710, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  1, 15,  2, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07065810, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle( 7,  9, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07066910 - 0x07066BE8\nstatic const Gfx inside_castle_seg7_dl_07066910[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_070658C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0,  9, 13, 12, 0x0),\n    gsSP2Triangles( 0,  2, 14, 0x0,  0, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070659C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07065AB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  5,  0,  4, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6,  8, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0,  9,  8, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 15,  9, 11, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07065BB0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 6,  7,  0, 0x0,  6,  0,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07065C90, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07065D80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  3,  9,  4, 0x0),\n    gsSP2Triangles( 6, 10,  7, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07065E70, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07065F50, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07066030, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07066110, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 6,  0,  5, 0x0,  6,  7,  0, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070661F0, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  6,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07066BE8 - 0x07066CE0\nstatic const Gfx inside_castle_seg7_dl_07066BE8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07066260, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07066360, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  8, 15,  9, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07066460, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  4, 11,  5, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07066CE0 - 0x07066D88\nconst Gfx inside_castle_seg7_dl_07066CE0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07066560),\n    gsSPDisplayList(inside_castle_seg7_dl_07066768),\n    gsSPDisplayList(inside_castle_seg7_dl_07066838),\n    gsSPDisplayList(inside_castle_seg7_dl_07066910),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07066BE8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/3/9/model.inc.c",
    "content": "// 0x07066D88 - 0x07066E48\nstatic const Vtx inside_castle_seg7_vertex_07066D88[] = {\n    {{{  3731,  -2421,   -665}, 0, { -9300,  -2076}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  3731,  -2421,   -357}, 0, { -9300,   -542}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  3894,  -2297,   -511}, 0, { -8278,  -1310}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  4179,  -2079,   -511}, 0, { -6490,  -1310}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  4016,  -2204,   -665}, 0, { -7512,  -2076}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  4016,  -2204,   -357}, 0, { -7512,   -542}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  2011,  -2405,   -357}, 0, {   318,   -544}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  2011,  -2405,   -665}, 0, {   318,  -2076}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  1867,  -2261,   -511}, 0, {  -702,  -1310}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  1722,  -2116,   -357}, 0, { -1724,   -544}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  1722,  -2116,   -665}, 0, { -1724,  -2076}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  1577,  -1971,   -511}, 0, { -2746,  -1310}, {0xff, 0xff, 0x00, 0x80}}},\n};\n\n// 0x07066E48 - 0x07066E90\nstatic const Gfx inside_castle_seg7_dl_07066E48[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_0900B000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07066D88, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07066E90 - 0x07066F00\nconst Gfx inside_castle_seg7_dl_07066E90[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07066E48),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/3/collision.inc.c",
    "content": "// 0x07073AAC - 0x070775B4\nconst Collision inside_castle_seg7_area_3_collision[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x443),\n    COL_VERTEX(2304, -1381, -3045),\n    COL_VERTEX(2867, -1381, -2482),\n    COL_VERTEX(2867, -1381, -2841),\n    COL_VERTEX(2662, -1381, -3045),\n    COL_VERTEX(2099, -1381, -2841),\n    COL_VERTEX(2099, -1381, -2482),\n    COL_VERTEX(2304, -1381, -2277),\n    COL_VERTEX(2662, -1381, -2277),\n    COL_VERTEX(-1074, -1125, -3941),\n    COL_VERTEX(-1689, -511, -3941),\n    COL_VERTEX(-1689, -1125, -3941),\n    COL_VERTEX(-1074, -511, -3941),\n    COL_VERTEX(-2713, -1074, -1074),\n    COL_VERTEX(-3122, -562, -1074),\n    COL_VERTEX(-2713, -562, -1074),\n    COL_VERTEX(-3122, -1074, -1074),\n    COL_VERTEX(1649, -972, -1827),\n    COL_VERTEX(3277, -992, -1868),\n    COL_VERTEX(1690, -992, -1868),\n    COL_VERTEX(1649, -972, -3496),\n    COL_VERTEX(3277, -972, -1827),\n    COL_VERTEX(1690, -992, -3455),\n    COL_VERTEX(3277, -992, -3455),\n    COL_VERTEX(3277, -972, -3496),\n    COL_VERTEX(-1893, -972, 1546),\n    COL_VERTEX(-1893, -992, 1587),\n    COL_VERTEX(-1586, -992, 1587),\n    COL_VERTEX(-1586, -972, 1546),\n    COL_VERTEX(-419, -972, 1775),\n    COL_VERTEX(-648, -972, 1546),\n    COL_VERTEX(-665, -992, 1587),\n    COL_VERTEX(-1177, -992, 1587),\n    COL_VERTEX(-1177, -972, 1546),\n    COL_VERTEX(-460, -992, 1792),\n    COL_VERTEX(-460, -992, 2816),\n    COL_VERTEX(-562, -1074, 1178),\n    COL_VERTEX(-419, -972, 2816),\n    COL_VERTEX(-101, -767, 666),\n    COL_VERTEX(-562, -767, 666),\n    COL_VERTEX(-101, -1074, 1178),\n    COL_VERTEX(4250, -972, 1894),\n    COL_VERTEX(4250, -1279, 2099),\n    COL_VERTEX(4250, -972, 2099),\n    COL_VERTEX(4045, -1279, 2099),\n    COL_VERTEX(4045, -972, 2099),\n    COL_VERTEX(4045, -1279, 1894),\n    COL_VERTEX(4045, -972, 1894),\n    COL_VERTEX(4250, -1279, 1894),\n    COL_VERTEX(2099, -1689, -2841),\n    COL_VERTEX(2304, -1689, -3045),\n    COL_VERTEX(2662, -1689, -3045),\n    COL_VERTEX(2099, -1689, -2482),\n    COL_VERTEX(2867, -1689, -2841),\n    COL_VERTEX(2867, -1689, -2482),\n    COL_VERTEX(2662, -1689, -2277),\n    COL_VERTEX(2304, -1689, -2277),\n    COL_VERTEX(3994, -972, 1843),\n    COL_VERTEX(4301, -972, 1843),\n    COL_VERTEX(4352, -1074, 1792),\n    COL_VERTEX(3942, -1074, 1792),\n    COL_VERTEX(4301, -972, 2150),\n    COL_VERTEX(3994, -972, 2150),\n    COL_VERTEX(3942, -1074, 2202),\n    COL_VERTEX(4352, -1074, 2202),\n    COL_VERTEX(5376, -1177, -972),\n    COL_VERTEX(6605, -1586, -50),\n    COL_VERTEX(1280, -1689, -972),\n    COL_VERTEX(1178, -1689, -972),\n    COL_VERTEX(1178, -1689, -50),\n    COL_VERTEX(3738, -2429, -50),\n    COL_VERTEX(5376, -1177, -50),\n    COL_VERTEX(3738, -2429, -972),\n    COL_VERTEX(6605, -1586, -972),\n    COL_VERTEX(5888, -1177, -972),\n    COL_VERTEX(5888, -1177, -50),\n    COL_VERTEX(2099, -2508, -50),\n    COL_VERTEX(2099, -2508, -972),\n    COL_VERTEX(1280, -1689, -50),\n    COL_VERTEX(7834, -1586, -1279),\n    COL_VERTEX(7629, -1586, 256),\n    COL_VERTEX(7834, -1586, 256),\n    COL_VERTEX(7629, -1586, -1279),\n    COL_VERTEX(1649, -1074, -3496),\n    COL_VERTEX(1649, -1074, -1827),\n    COL_VERTEX(3277, -1074, -3496),\n    COL_VERTEX(3277, -1074, -1827),\n    COL_VERTEX(-419, -1074, 1775),\n    COL_VERTEX(-648, -1074, 1546),\n    COL_VERTEX(-1177, -1074, 1546),\n    COL_VERTEX(-419, -1074, 2816),\n    COL_VERTEX(-1586, -1074, 1546),\n    COL_VERTEX(-1893, -1074, 1546),\n    COL_VERTEX(-1484, -1177, -3941),\n    COL_VERTEX(-1689, -1177, -3941),\n    COL_VERTEX(-1689, -1177, -3839),\n    COL_VERTEX(-1484, -1177, -3839),\n    COL_VERTEX(-1689, -1177, -3972),\n    COL_VERTEX(-1484, -1177, -4351),\n    COL_VERTEX(-1689, -1177, -4351),\n    COL_VERTEX(-1484, -1177, -3972),\n    COL_VERTEX(-1279, -1177, -3941),\n    COL_VERTEX(-1279, -1177, -3839),\n    COL_VERTEX(-1279, -1177, -4351),\n    COL_VERTEX(-1279, -1177, -3972),\n    COL_VERTEX(-1074, -1177, -3941),\n    COL_VERTEX(-1074, -1177, -3839),\n    COL_VERTEX(-1074, -1177, -4351),\n    COL_VERTEX(-1074, -1177, -3972),\n    COL_VERTEX(1280, -1074, -2841),\n    COL_VERTEX(1178, -1074, -2841),\n    COL_VERTEX(1178, -1074, -2482),\n    COL_VERTEX(1280, -1074, -2482),\n    COL_VERTEX(-2610, -1177, -1177),\n    COL_VERTEX(-2815, -1177, -1177),\n    COL_VERTEX(-2815, -1177, -1074),\n    COL_VERTEX(-2610, -1177, -1074),\n    COL_VERTEX(-2815, -1177, -665),\n    COL_VERTEX(-2610, -1177, -1043),\n    COL_VERTEX(-2815, -1177, -1043),\n    COL_VERTEX(-2610, -1177, -665),\n    COL_VERTEX(-3020, -1177, -1177),\n    COL_VERTEX(-3020, -1177, -1074),\n    COL_VERTEX(-3020, -1177, -665),\n    COL_VERTEX(-3020, -1177, -1043),\n    COL_VERTEX(563, -1074, 1587),\n    COL_VERTEX(410, -1074, 1741),\n    COL_VERTEX(461, -1074, 1741),\n    COL_VERTEX(563, -1074, 2406),\n    COL_VERTEX(358, -1074, 1792),\n    COL_VERTEX(358, -1074, 2202),\n    COL_VERTEX(461, -1074, 2253),\n    COL_VERTEX(410, -1074, 2253),\n    COL_VERTEX(3866, -1074, 2406),\n    COL_VERTEX(3866, -1074, 1587),\n    COL_VERTEX(5530, -1074, 2406),\n    COL_VERTEX(5530, -1074, 1587),\n    COL_VERTEX(3456, -1074, 2406),\n    COL_VERTEX(3456, -1074, 1587),\n    COL_VERTEX(-3225, -1177, -1177),\n    COL_VERTEX(-3225, -1177, -1074),\n    COL_VERTEX(-3225, -1177, -665),\n    COL_VERTEX(-3225, -1177, -1043),\n    COL_VERTEX(5530, -255, 1587),\n    COL_VERTEX(3533, -255, 2406),\n    COL_VERTEX(3533, -255, 1587),\n    COL_VERTEX(5530, -255, 2406),\n    COL_VERTEX(3533, -1074, 2406),\n    COL_VERTEX(3533, -1074, 1587),\n    COL_VERTEX(3482, -1074, 1638),\n    COL_VERTEX(3430, -306, 1638),\n    COL_VERTEX(3430, -1074, 1638),\n    COL_VERTEX(3482, -306, 1638),\n    COL_VERTEX(3379, -255, 1587),\n    COL_VERTEX(3379, -255, 2406),\n    COL_VERTEX(3430, -306, 2355),\n    COL_VERTEX(3482, -306, 2355),\n    COL_VERTEX(3379, -1074, 2406),\n    COL_VERTEX(3430, -1074, 2355),\n    COL_VERTEX(3482, -1074, 2355),\n    COL_VERTEX(2611, -255, 2406),\n    COL_VERTEX(2662, -306, 2355),\n    COL_VERTEX(2714, -306, 2355),\n    COL_VERTEX(2662, -1074, 2355),\n    COL_VERTEX(2714, -1074, 2355),\n    COL_VERTEX(2611, -1074, 2406),\n    COL_VERTEX(2714, -1074, 1638),\n    COL_VERTEX(2662, -1074, 1638),\n    COL_VERTEX(2765, -1074, 1587),\n    COL_VERTEX(1997, -1074, 1587),\n    COL_VERTEX(1946, -1074, 1638),\n    COL_VERTEX(1894, -1074, 1638),\n    COL_VERTEX(1843, -1074, 2406),\n    COL_VERTEX(1894, -1074, 2355),\n    COL_VERTEX(1946, -1074, 2355),\n    COL_VERTEX(1946, -306, 2355),\n    COL_VERTEX(1894, -306, 2355),\n    COL_VERTEX(1843, -255, 2406),\n    COL_VERTEX(1075, -255, 2406),\n    COL_VERTEX(1126, -306, 2355),\n    COL_VERTEX(1178, -306, 2355),\n    COL_VERTEX(1075, -1074, 2406),\n    COL_VERTEX(1126, -1074, 2355),\n    COL_VERTEX(1178, -1074, 2355),\n    COL_VERTEX(1229, -1074, 1587),\n    COL_VERTEX(1178, -1074, 1638),\n    COL_VERTEX(1126, -1074, 1638),\n    COL_VERTEX(358, -818, 1843),\n    COL_VERTEX(307, -1074, 1843),\n    COL_VERTEX(358, -818, 2150),\n    COL_VERTEX(358, -1074, 2150),\n    COL_VERTEX(563, -255, 2406),\n    COL_VERTEX(307, -818, 1843),\n    COL_VERTEX(307, -1074, 2150),\n    COL_VERTEX(358, -255, 1792),\n    COL_VERTEX(11008, -1586, -1279),\n    COL_VERTEX(-562, -767, -460),\n    COL_VERTEX(-562, -767, 154),\n    COL_VERTEX(-511, -767, 154),\n    COL_VERTEX(-153, -767, -460),\n    COL_VERTEX(1178, -1177, -972),\n    COL_VERTEX(768, -1177, -1177),\n    COL_VERTEX(870, -1177, -1049),\n    COL_VERTEX(870, -1177, -690),\n    COL_VERTEX(5376, -255, -972),\n    COL_VERTEX(3635, -2508, -921),\n    COL_VERTEX(3686, -2469, -101),\n    COL_VERTEX(5376, -255, -50),\n    COL_VERTEX(3686, -2508, -921),\n    COL_VERTEX(3584, -2508, -921),\n    COL_VERTEX(3584, -2508, -101),\n    COL_VERTEX(3533, -2508, -50),\n    COL_VERTEX(6605, -1586, -1279),\n    COL_VERTEX(6605, -1177, -50),\n    COL_VERTEX(6605, -1177, -1279),\n    COL_VERTEX(5888, -255, -1279),\n    COL_VERTEX(6605, -1586, 256),\n    COL_VERTEX(5888, -1177, -1279),\n    COL_VERTEX(-562, -306, 154),\n    COL_VERTEX(51, -306, 154),\n    COL_VERTEX(410, -562, -460),\n    COL_VERTEX(768, -1177, -460),\n    COL_VERTEX(-153, -1177, -460),\n    COL_VERTEX(410, -562, 154),\n    COL_VERTEX(-153, -767, 154),\n    COL_VERTEX(717, -921, -946),\n    COL_VERTEX(768, -921, -946),\n    COL_VERTEX(768, -921, -793),\n    COL_VERTEX(768, -1177, -793),\n    COL_VERTEX(717, -921, -793),\n    COL_VERTEX(-255, -511, 154),\n    COL_VERTEX(-409, -511, 154),\n    COL_VERTEX(-153, -972, -460),\n    COL_VERTEX(-255, -511, 256),\n    COL_VERTEX(-409, -511, 256),\n    COL_VERTEX(-255, -511, 205),\n    COL_VERTEX(-409, -511, 205),\n    COL_VERTEX(-255, -767, 205),\n    COL_VERTEX(-255, -767, 256),\n    COL_VERTEX(-409, -767, 205),\n    COL_VERTEX(-409, -767, 256),\n    COL_VERTEX(0, -972, -460),\n    COL_VERTEX(0, -1177, 154),\n    COL_VERTEX(7629, -255, 154),\n    COL_VERTEX(7731, -255, 51),\n    COL_VERTEX(7834, -255, 51),\n    COL_VERTEX(7629, -255, -1177),\n    COL_VERTEX(7731, -255, -1074),\n    COL_VERTEX(7629, -255, -1279),\n    COL_VERTEX(5581, -255, -153),\n    COL_VERTEX(5478, -255, -153),\n    COL_VERTEX(5888, -255, 256),\n    COL_VERTEX(5581, -255, -869),\n    COL_VERTEX(5478, -255, -869),\n    COL_VERTEX(7834, -1330, -434),\n    COL_VERTEX(7834, -1586, -434),\n    COL_VERTEX(7834, -1586, -588),\n    COL_VERTEX(7834, -1330, -588),\n    COL_VERTEX(7834, -1586, -1074),\n    COL_VERTEX(1997, -562, -1177),\n    COL_VERTEX(1178, -1177, -50),\n    COL_VERTEX(1894, -1381, -972),\n    COL_VERTEX(1997, -1177, 154),\n    COL_VERTEX(2202, -562, 154),\n    COL_VERTEX(2202, -562, -50),\n    COL_VERTEX(1997, -1177, -1177),\n    COL_VERTEX(2202, -562, -972),\n    COL_VERTEX(2099, -1586, -972),\n    COL_VERTEX(3635, -1586, -972),\n    COL_VERTEX(1894, -1177, -50),\n    COL_VERTEX(1894, -1381, -50),\n    COL_VERTEX(2099, -1586, -50),\n    COL_VERTEX(1178, -1074, -3762),\n    COL_VERTEX(1690, -1074, -3455),\n    COL_VERTEX(1690, -1074, -1868),\n    COL_VERTEX(1178, -665, -2892),\n    COL_VERTEX(1178, -1074, -2277),\n    COL_VERTEX(1178, -1074, -3660),\n    COL_VERTEX(1178, -1074, -3045),\n    COL_VERTEX(1229, -1074, -2994),\n    COL_VERTEX(1229, -1074, -2943),\n    COL_VERTEX(1178, -1074, -2431),\n    COL_VERTEX(1229, -1074, -2380),\n    COL_VERTEX(1229, -1074, -2329),\n    COL_VERTEX(3635, -357, -1663),\n    COL_VERTEX(3635, -1074, -3660),\n    COL_VERTEX(3277, -1279, -2482),\n    COL_VERTEX(1280, -1074, -3762),\n    COL_VERTEX(3533, -1074, -1561),\n    COL_VERTEX(1178, -1074, -1663),\n    COL_VERTEX(1229, -1074, -1663),\n    COL_VERTEX(1280, -1074, -1612),\n    COL_VERTEX(1280, -1074, -3711),\n    COL_VERTEX(1229, -1074, -3660),\n    COL_VERTEX(3584, -1074, -3660),\n    COL_VERTEX(3533, -1074, -3711),\n    COL_VERTEX(3533, -1074, -1612),\n    COL_VERTEX(3584, -1074, -1663),\n    COL_VERTEX(3277, -1279, -2841),\n    COL_VERTEX(3328, -1381, -2482),\n    COL_VERTEX(3277, -1228, -2482),\n    COL_VERTEX(3277, -1177, -2482),\n    COL_VERTEX(3328, -1177, -2482),\n    COL_VERTEX(3200, -1330, -2482),\n    COL_VERTEX(3149, -1330, -2482),\n    COL_VERTEX(3149, -1381, -2482),\n    COL_VERTEX(3277, -1381, -2431),\n    COL_VERTEX(3149, -1330, -2431),\n    COL_VERTEX(3277, -1381, -2892),\n    COL_VERTEX(3200, -1330, -2892),\n    COL_VERTEX(3149, -1330, -2892),\n    COL_VERTEX(3277, -1228, -2892),\n    COL_VERTEX(3149, -1381, -2892),\n    COL_VERTEX(3149, -1330, -2841),\n    COL_VERTEX(3328, -1381, -2841),\n    COL_VERTEX(3277, -1177, -2892),\n    COL_VERTEX(3328, -1177, -2892),\n    COL_VERTEX(3277, -1381, -1868),\n    COL_VERTEX(3328, -1279, -2047),\n    COL_VERTEX(3328, -1253, -2047),\n    COL_VERTEX(3328, -1253, -2021),\n    COL_VERTEX(3635, -1253, -2021),\n    COL_VERTEX(3328, -1228, -2021),\n    COL_VERTEX(3328, -1228, -1996),\n    COL_VERTEX(3635, -1228, -1996),\n    COL_VERTEX(3328, -1202, -1996),\n    COL_VERTEX(3328, -1202, -1970),\n    COL_VERTEX(3635, -1202, -1970),\n    COL_VERTEX(3328, -1177, -1970),\n    COL_VERTEX(3328, -1177, -1945),\n    COL_VERTEX(3328, -1151, -1945),\n    COL_VERTEX(3328, -1151, -1919),\n    COL_VERTEX(3635, -1151, -1919),\n    COL_VERTEX(3328, -1125, -1919),\n    COL_VERTEX(3328, -1125, -1893),\n    COL_VERTEX(3635, -1125, -1893),\n    COL_VERTEX(3328, -1100, -1893),\n    COL_VERTEX(3328, -1100, -1868),\n    COL_VERTEX(3635, -1100, -1868),\n    COL_VERTEX(3328, -1279, -1801),\n    COL_VERTEX(3277, -972, -1801),\n    COL_VERTEX(3277, -972, -1893),\n    COL_VERTEX(3277, -1049, -1893),\n    COL_VERTEX(3277, -1202, -2047),\n    COL_VERTEX(3277, -1177, -2431),\n    COL_VERTEX(3328, -1177, -2431),\n    COL_VERTEX(3277, -1279, -1801),\n    COL_VERTEX(3277, -1202, -2098),\n    COL_VERTEX(3635, -1074, -3455),\n    COL_VERTEX(1690, -1381, -3455),\n    COL_VERTEX(1690, -1381, -1868),\n    COL_VERTEX(3635, -1074, -1561),\n    COL_VERTEX(1178, -818, -2585),\n    COL_VERTEX(1178, -818, -2738),\n    COL_VERTEX(3635, -357, -1561),\n    COL_VERTEX(1126, -818, -2738),\n    COL_VERTEX(1178, -1074, -2738),\n    COL_VERTEX(1126, -1074, -2738),\n    COL_VERTEX(1075, -818, -2585),\n    COL_VERTEX(1126, -818, -2585),\n    COL_VERTEX(3277, -1279, -3522),\n    COL_VERTEX(3328, -1279, -3522),\n    COL_VERTEX(3328, -1279, -2892),\n    COL_VERTEX(3277, -1202, -3225),\n    COL_VERTEX(3277, -972, -3522),\n    COL_VERTEX(3328, -972, -1801),\n    COL_VERTEX(3200, -1356, -2482),\n    COL_VERTEX(3200, -1381, -2482),\n    COL_VERTEX(3226, -1356, -2482),\n    COL_VERTEX(3226, -1330, -2482),\n    COL_VERTEX(3251, -1330, -2482),\n    COL_VERTEX(3251, -1305, -2482),\n    COL_VERTEX(3277, -1305, -2482),\n    COL_VERTEX(3277, -1049, -3429),\n    COL_VERTEX(3277, -972, -3429),\n    COL_VERTEX(3277, -1202, -3276),\n    COL_VERTEX(3328, -1100, -3429),\n    COL_VERTEX(3328, -1100, -3455),\n    COL_VERTEX(3328, -1125, -3429),\n    COL_VERTEX(3328, -1125, -3404),\n    COL_VERTEX(3328, -1151, -3404),\n    COL_VERTEX(3328, -1151, -3378),\n    COL_VERTEX(3328, -1177, -3378),\n    COL_VERTEX(3328, -1177, -3353),\n    COL_VERTEX(3328, -1202, -3353),\n    COL_VERTEX(3328, -1202, -3327),\n    COL_VERTEX(3328, -1228, -3327),\n    COL_VERTEX(3328, -1228, -3301),\n    COL_VERTEX(3328, -1253, -3301),\n    COL_VERTEX(3328, -1253, -3276),\n    COL_VERTEX(3328, -1279, -3276),\n    COL_VERTEX(870, -1074, -2303),\n    COL_VERTEX(1075, -1074, -2405),\n    COL_VERTEX(973, -1074, -2482),\n    COL_VERTEX(666, -1074, -2508),\n    COL_VERTEX(1075, -1074, -2841),\n    COL_VERTEX(1075, -1074, -2917),\n    COL_VERTEX(870, -1074, -3020),\n    COL_VERTEX(666, -1074, -2815),\n    COL_VERTEX(1075, -562, -2917),\n    COL_VERTEX(358, -1177, -562),\n    COL_VERTEX(666, -1177, -562),\n    COL_VERTEX(563, -1177, -690),\n    COL_VERTEX(358, -1177, -1177),\n    COL_VERTEX(51, -1279, -562),\n    COL_VERTEX(563, -1177, -1049),\n    COL_VERTEX(-3378, -1279, 1075),\n    COL_VERTEX(-2917, -1279, 1280),\n    COL_VERTEX(-3276, -1279, 1382),\n    COL_VERTEX(-3378, -1279, 1382),\n    COL_VERTEX(-562, -1177, -3429),\n    COL_VERTEX(-3225, -1177, -1689),\n    COL_VERTEX(666, -562, -562),\n    COL_VERTEX(-1074, -1194, -1791),\n    COL_VERTEX(-1177, -1279, -2815),\n    COL_VERTEX(-2201, -1177, -3429),\n    COL_VERTEX(-1791, -480, -3839),\n    COL_VERTEX(-2201, -562, -3429),\n    COL_VERTEX(-3634, -562, -1484),\n    COL_VERTEX(-4146, -562, -1381),\n    COL_VERTEX(-3532, -1279, 256),\n    COL_VERTEX(-3532, -562, 256),\n    COL_VERTEX(-4044, -1381, -1484),\n    COL_VERTEX(-4044, -1381, -1433),\n    COL_VERTEX(-4095, -1381, -1381),\n    COL_VERTEX(-3583, -1381, -1381),\n    COL_VERTEX(-3634, -1381, -1433),\n    COL_VERTEX(-3532, -1381, -1381),\n    COL_VERTEX(-4146, -562, -1484),\n    COL_VERTEX(-4146, -562, -1074),\n    COL_VERTEX(-3225, -562, -3429),\n    COL_VERTEX(-562, -562, -3429),\n    COL_VERTEX(-1791, -1279, -2815),\n    COL_VERTEX(-2508, -1279, -2815),\n    COL_VERTEX(-1689, -562, -2713),\n    COL_VERTEX(-2610, -1279, -2713),\n    COL_VERTEX(-1689, -1279, -1893),\n    COL_VERTEX(-1791, -562, -1791),\n    COL_VERTEX(-460, -1279, -2815),\n    COL_VERTEX(-460, -1279, -1893),\n    COL_VERTEX(-562, -562, -1791),\n    COL_VERTEX(-562, -1279, -2917),\n    COL_VERTEX(-1074, -1279, -2917),\n    COL_VERTEX(-562, -562, -1074),\n    COL_VERTEX(-460, -562, -562),\n    COL_VERTEX(-562, -1279, -665),\n    COL_VERTEX(-511, -1279, -665),\n    COL_VERTEX(-460, -1279, -613),\n    COL_VERTEX(-562, -1279, -1074),\n    COL_VERTEX(-665, -1279, -1177),\n    COL_VERTEX(-1074, -1279, -1791),\n    COL_VERTEX(-2098, -1177, -1177),\n    COL_VERTEX(-1177, -1177, -1996),\n    COL_VERTEX(-1996, -1177, -1791),\n    COL_VERTEX(-2098, -1177, 256),\n    COL_VERTEX(-1996, -1177, -1740),\n    COL_VERTEX(-2047, -1177, -1689),\n    COL_VERTEX(-1484, -562, -1177),\n    COL_VERTEX(-1586, -1177, -1074),\n    COL_VERTEX(-2815, -562, 1075),\n    COL_VERTEX(-2713, -562, 973),\n    COL_VERTEX(-3481, -1279, 973),\n    COL_VERTEX(-3429, -1279, 358),\n    COL_VERTEX(-4146, -1279, -255),\n    COL_VERTEX(-4146, -1381, -972),\n    COL_VERTEX(-3532, -1279, -255),\n    COL_VERTEX(-3173, -1023, 1382),\n    COL_VERTEX(-3020, -1023, 1382),\n    COL_VERTEX(-2815, -1279, 1382),\n    COL_VERTEX(-3020, -1023, 1434),\n    COL_VERTEX(-3173, -1023, 1485),\n    COL_VERTEX(-3173, -1023, 1434),\n    COL_VERTEX(-3173, -1279, 1485),\n    COL_VERTEX(-3173, -1279, 1434),\n    COL_VERTEX(-1637, -1177, 870),\n    COL_VERTEX(-1689, -1177, 922),\n    COL_VERTEX(-1689, -1177, 973),\n    COL_VERTEX(-4146, -1279, 870),\n    COL_VERTEX(-4095, -1279, 870),\n    COL_VERTEX(-4044, -1279, 922),\n    COL_VERTEX(-2098, -1177, 973),\n    COL_VERTEX(-2815, -1279, 1075),\n    COL_VERTEX(-2815, -562, 1382),\n    COL_VERTEX(-3378, -562, 1382),\n    COL_VERTEX(51, -562, -1381),\n    COL_VERTEX(1075, -562, -2405),\n    COL_VERTEX(563, -562, -1177),\n    COL_VERTEX(-1074, -470, -3890),\n    COL_VERTEX(-1023, -480, -3839),\n    COL_VERTEX(-1740, -480, -3839),\n    COL_VERTEX(-1689, -470, -3890),\n    COL_VERTEX(-1074, -460, -3941),\n    COL_VERTEX(51, -562, -3429),\n    COL_VERTEX(563, -1177, -562),\n    COL_VERTEX(-562, -1279, -562),\n    COL_VERTEX(51, -1279, -3429),\n    COL_VERTEX(-3225, -1279, -3429),\n    COL_VERTEX(-3225, -1279, -1074),\n    COL_VERTEX(-665, -1177, -3327),\n    COL_VERTEX(-2098, -1177, -3327),\n    COL_VERTEX(-562, -1279, -1791),\n    COL_VERTEX(-1177, -1279, -2713),\n    COL_VERTEX(666, -921, -793),\n    COL_VERTEX(666, -921, -946),\n    COL_VERTEX(717, -1177, -793),\n    COL_VERTEX(666, -1177, -1074),\n    COL_VERTEX(614, -562, -1074),\n    COL_VERTEX(563, -562, -1125),\n    COL_VERTEX(666, -1305, -3122),\n    COL_VERTEX(51, -1279, -1893),\n    COL_VERTEX(358, -1279, -2815),\n    COL_VERTEX(358, -1305, -2815),\n    COL_VERTEX(358, -1279, -2508),\n    COL_VERTEX(666, -1279, -2201),\n    COL_VERTEX(666, -562, -665),\n    COL_VERTEX(614, -562, -665),\n    COL_VERTEX(614, -1177, -665),\n    COL_VERTEX(-3122, -562, -3378),\n    COL_VERTEX(-3173, -562, -3327),\n    COL_VERTEX(-3225, -562, -3327),\n    COL_VERTEX(-2815, -1279, 358),\n    COL_VERTEX(-562, -806, 1075),\n    COL_VERTEX(-101, -429, 1075),\n    COL_VERTEX(-562, -460, 1178),\n    COL_VERTEX(-3276, -1279, 1587),\n    COL_VERTEX(-2917, -1279, 1485),\n    COL_VERTEX(-2917, -1279, 1587),\n    COL_VERTEX(-2815, -1279, 1485),\n    COL_VERTEX(-2815, -1279, 1997),\n    COL_VERTEX(-2713, -1279, 2202),\n    COL_VERTEX(-3364, -1279, 2123),\n    COL_VERTEX(-3168, -1279, 2533),\n    COL_VERTEX(-2713, -665, 2202),\n    COL_VERTEX(-2815, -665, 1997),\n    COL_VERTEX(154, -1074, 1741),\n    COL_VERTEX(51, -1074, 2714),\n    COL_VERTEX(154, -1074, 2253),\n    COL_VERTEX(256, -1074, 1562),\n    COL_VERTEX(256, -1074, 2432),\n    COL_VERTEX(-101, -767, 256),\n    COL_VERTEX(-153, -767, 256),\n    COL_VERTEX(-511, -767, 358),\n    COL_VERTEX(-3020, -1023, 1485),\n    COL_VERTEX(-562, -306, 666),\n    COL_VERTEX(-562, -767, 256),\n    COL_VERTEX(-562, -306, 256),\n    COL_VERTEX(-101, -306, 256),\n    COL_VERTEX(-101, -460, 1178),\n    COL_VERTEX(-613, -1074, 1178),\n    COL_VERTEX(-1228, -1074, 1587),\n    COL_VERTEX(-1893, -1279, 2099),\n    COL_VERTEX(-50, -1279, 2816),\n    COL_VERTEX(-1893, -1279, 2202),\n    COL_VERTEX(-1279, -1279, 2816),\n    COL_VERTEX(256, -1074, 1715),\n    COL_VERTEX(256, -818, 1843),\n    COL_VERTEX(256, -818, 2150),\n    COL_VERTEX(51, -357, 2714),\n    COL_VERTEX(0, -357, 1280),\n    COL_VERTEX(-460, -1074, 1792),\n    COL_VERTEX(256, -1074, 2150),\n    COL_VERTEX(256, -1074, 1843),\n    COL_VERTEX(-50, -357, 1229),\n    COL_VERTEX(-50, -357, 1178),\n    COL_VERTEX(-665, -1074, 1587),\n    COL_VERTEX(-1893, -1074, 1587),\n    COL_VERTEX(-818, -1074, 973),\n    COL_VERTEX(-869, -818, 973),\n    COL_VERTEX(-1228, -357, 973),\n    COL_VERTEX(-869, -818, 922),\n    COL_VERTEX(-1177, -1074, 973),\n    COL_VERTEX(-1177, -818, 973),\n    COL_VERTEX(-869, -818, 870),\n    COL_VERTEX(-1177, -1074, 922),\n    COL_VERTEX(-1177, -818, 922),\n    COL_VERTEX(-1177, -818, 870),\n    COL_VERTEX(-1433, -357, 1178),\n    COL_VERTEX(-1893, -357, 1178),\n    COL_VERTEX(-1381, -357, 2714),\n    COL_VERTEX(-1791, -357, 2304),\n    COL_VERTEX(-1791, -665, 2304),\n    COL_VERTEX(-1454, -562, 2641),\n    COL_VERTEX(-1719, -562, 2376),\n    COL_VERTEX(-1833, -562, 2489),\n    COL_VERTEX(-1586, -946, 1536),\n    COL_VERTEX(-1586, -1177, 1766),\n    COL_VERTEX(-1586, -1279, 1818),\n    COL_VERTEX(-1535, -1177, 1766),\n    COL_VERTEX(-1228, -946, 1536),\n    COL_VERTEX(-1228, -1177, 1766),\n    COL_VERTEX(-1228, -1279, 1818),\n    COL_VERTEX(-1177, -1177, 1766),\n    COL_VERTEX(-1535, -1100, 1613),\n    COL_VERTEX(-1535, -1100, 1587),\n    COL_VERTEX(-1535, -1125, 1613),\n    COL_VERTEX(-1535, -1125, 1638),\n    COL_VERTEX(-1535, -1151, 1638),\n    COL_VERTEX(-1535, -1151, 1664),\n    COL_VERTEX(-1535, -1177, 1664),\n    COL_VERTEX(-1535, -1177, 1690),\n    COL_VERTEX(-1535, -1202, 1690),\n    COL_VERTEX(-1535, -1202, 1715),\n    COL_VERTEX(-1535, -1228, 1715),\n    COL_VERTEX(-1535, -1228, 1741),\n    COL_VERTEX(-1535, -1253, 1741),\n    COL_VERTEX(-1535, -1253, 1766),\n    COL_VERTEX(-1535, -1279, 1766),\n    COL_VERTEX(-1791, -357, 2202),\n    COL_VERTEX(-1791, -1279, 2304),\n    COL_VERTEX(-1177, -357, 2816),\n    COL_VERTEX(-1279, -357, 2714),\n    COL_VERTEX(205, -357, 2381),\n    COL_VERTEX(205, -357, 2330),\n    COL_VERTEX(256, -357, 2278),\n    COL_VERTEX(205, -357, 1613),\n    COL_VERTEX(205, -357, 1664),\n    COL_VERTEX(256, -357, 1562),\n    COL_VERTEX(-1842, -357, 1280),\n    COL_VERTEX(-1791, -357, 1229),\n    COL_VERTEX(-1893, -357, 1280),\n    COL_VERTEX(0, -357, 2714),\n    COL_VERTEX(-50, -357, 2765),\n    COL_VERTEX(-1791, -1074, 1178),\n    COL_VERTEX(-818, -357, 973),\n    COL_VERTEX(-1562, -1279, 2862),\n    COL_VERTEX(-1893, -1279, 2406),\n    COL_VERTEX(-1381, -1279, 2714),\n    COL_VERTEX(-2098, -665, 2509),\n    COL_VERTEX(-1893, -665, 2406),\n    COL_VERTEX(-1562, -665, 2862),\n    COL_VERTEX(-1381, -665, 2714),\n    COL_VERTEX(-1623, -562, 2779),\n    COL_VERTEX(-2075, -562, 2609),\n    COL_VERTEX(-2098, -1279, 2509),\n    COL_VERTEX(-1972, -1279, 3058),\n    COL_VERTEX(-1972, -665, 3058),\n    COL_VERTEX(-1995, -562, 2958),\n    COL_VERTEX(-2430, -1279, 3058),\n    COL_VERTEX(-2303, -1279, 2509),\n    COL_VERTEX(-2303, -665, 2509),\n    COL_VERTEX(-2430, -665, 3058),\n    COL_VERTEX(-2839, -665, 2862),\n    COL_VERTEX(-2407, -562, 2958),\n    COL_VERTEX(-2326, -562, 2609),\n    COL_VERTEX(-2839, -1279, 2862),\n    COL_VERTEX(-2508, -1279, 2406),\n    COL_VERTEX(-2508, -665, 2406),\n    COL_VERTEX(-2779, -562, 2779),\n    COL_VERTEX(-2568, -562, 2489),\n    COL_VERTEX(-3168, -665, 2533),\n    COL_VERTEX(-3085, -562, 2472),\n    COL_VERTEX(-2795, -562, 2262),\n    COL_VERTEX(-2915, -562, 2020),\n    COL_VERTEX(-3364, -665, 2123),\n    COL_VERTEX(-3378, -665, 1485),\n    COL_VERTEX(-3264, -562, 2100),\n    COL_VERTEX(-1535, -946, 1536),\n    COL_VERTEX(-1177, -1279, 1818),\n    COL_VERTEX(-1177, -946, 1536),\n    COL_VERTEX(-1228, -997, 1587),\n    COL_VERTEX(-1535, -946, 1587),\n    COL_VERTEX(-1177, -946, 1587),\n    COL_VERTEX(-1586, -997, 1587),\n    COL_VERTEX(-1535, -1279, 1818),\n    COL_VERTEX(-1228, -460, 358),\n    COL_VERTEX(-1330, -562, 358),\n    COL_VERTEX(-1330, -1074, 358),\n    COL_VERTEX(-1330, -1074, 870),\n    COL_VERTEX(-818, -460, 358),\n    COL_VERTEX(-716, -562, 358),\n    COL_VERTEX(-716, -1074, 870),\n    COL_VERTEX(-716, -1074, 358),\n    COL_VERTEX(3379, -1074, 1587),\n    COL_VERTEX(2611, -255, 1587),\n    COL_VERTEX(2662, -306, 1638),\n    COL_VERTEX(2714, -306, 1638),\n    COL_VERTEX(2765, -255, 1587),\n    COL_VERTEX(2765, -255, 2406),\n    COL_VERTEX(2765, -1074, 2406),\n    COL_VERTEX(2611, -1074, 1587),\n    COL_VERTEX(1946, -306, 1638),\n    COL_VERTEX(1997, -255, 1587),\n    COL_VERTEX(1894, -306, 1638),\n    COL_VERTEX(1843, -255, 1587),\n    COL_VERTEX(1843, -1074, 1587),\n    COL_VERTEX(1997, -255, 2406),\n    COL_VERTEX(1997, -1074, 2406),\n    COL_VERTEX(1126, -306, 1638),\n    COL_VERTEX(1075, -255, 1587),\n    COL_VERTEX(1178, -306, 1638),\n    COL_VERTEX(1229, -255, 1587),\n    COL_VERTEX(1229, -255, 2406),\n    COL_VERTEX(1229, -1074, 2406),\n    COL_VERTEX(1075, -1074, 1587),\n    COL_VERTEX(358, -1074, 1843),\n    COL_VERTEX(358, -255, 2202),\n    COL_VERTEX(307, -818, 2150),\n    COL_VERTEX(563, -255, 1587),\n    COL_VERTEX(7936, -1586, -1279),\n    COL_VERTEX(7936, -1586, 230),\n    COL_VERTEX(11008, -1586, 230),\n    COL_VERTEX(-511, -767, 51),\n    COL_VERTEX(-153, -767, 51),\n    COL_VERTEX(768, -1177, -1049),\n    COL_VERTEX(768, -1177, -690),\n    COL_VERTEX(3738, -1508, -972),\n    COL_VERTEX(3686, -2469, -921),\n    COL_VERTEX(3738, -1508, -50),\n    COL_VERTEX(3635, -2508, -101),\n    COL_VERTEX(3686, -1547, -921),\n    COL_VERTEX(3686, -1547, -101),\n    COL_VERTEX(3635, -1586, -50),\n    COL_VERTEX(3584, -1586, -921),\n    COL_VERTEX(3533, -1586, -972),\n    COL_VERTEX(3533, -2508, -972),\n    COL_VERTEX(3584, -1586, -101),\n    COL_VERTEX(3686, -2508, -101),\n    COL_VERTEX(3533, -1586, -50),\n    COL_VERTEX(7834, -255, -1279),\n    COL_VERTEX(7834, -255, 256),\n    COL_VERTEX(6605, -1177, -972),\n    COL_VERTEX(6605, -1177, 256),\n    COL_VERTEX(5888, -1177, 256),\n    COL_VERTEX(7629, -255, 256),\n    COL_VERTEX(-562, -306, -460),\n    COL_VERTEX(51, -306, -460),\n    COL_VERTEX(768, -562, -460),\n    COL_VERTEX(768, -562, 154),\n    COL_VERTEX(-255, -767, 154),\n    COL_VERTEX(768, -1177, -946),\n    COL_VERTEX(768, -562, -1177),\n    COL_VERTEX(717, -1177, -946),\n    COL_VERTEX(-409, -767, 154),\n    COL_VERTEX(-153, -972, 154),\n    COL_VERTEX(0, -972, 154),\n    COL_VERTEX(0, -1177, -460),\n    COL_VERTEX(7629, -1586, 154),\n    COL_VERTEX(7731, -1586, 51),\n    COL_VERTEX(7834, -1586, 51),\n    COL_VERTEX(7731, -1586, -1074),\n    COL_VERTEX(7834, -255, -1074),\n    COL_VERTEX(7629, -1586, -1177),\n    COL_VERTEX(5478, -1177, -153),\n    COL_VERTEX(5581, -1177, -153),\n    COL_VERTEX(5581, -1177, -869),\n    COL_VERTEX(5478, -1177, -869),\n    COL_VERTEX(7936, -1586, -434),\n    COL_VERTEX(7936, -1586, -588),\n    COL_VERTEX(7936, -1330, -588),\n    COL_VERTEX(7936, -1330, -434),\n    COL_VERTEX(1894, -1177, -972),\n    COL_VERTEX(1997, -562, 154),\n    COL_VERTEX(-153, -1177, 154),\n    COL_VERTEX(2202, -562, -1177),\n    COL_VERTEX(2202, -1177, -50),\n    COL_VERTEX(2202, -1177, -972),\n    COL_VERTEX(3635, -2508, -50),\n    COL_VERTEX(3635, -2508, -972),\n    COL_VERTEX(1178, -1074, -1561),\n    COL_VERTEX(1178, -357, -2431),\n    COL_VERTEX(1178, -665, -2431),\n    COL_VERTEX(1178, -357, -2892),\n    COL_VERTEX(1178, -357, -2277),\n    COL_VERTEX(1178, -357, -1663),\n    COL_VERTEX(1178, -357, -3045),\n    COL_VERTEX(1178, -357, -3660),\n    COL_VERTEX(1229, -357, -2994),\n    COL_VERTEX(1229, -357, -2943),\n    COL_VERTEX(1178, -1074, -2892),\n    COL_VERTEX(1229, -357, -2380),\n    COL_VERTEX(1229, -357, -2329),\n    COL_VERTEX(3635, -357, -3660),\n    COL_VERTEX(3635, -1074, -1663),\n    COL_VERTEX(3635, -1279, -3660),\n    COL_VERTEX(3635, -1279, -1663),\n    COL_VERTEX(3328, -1279, -2482),\n    COL_VERTEX(3328, -1279, -2841),\n    COL_VERTEX(3533, -357, -3762),\n    COL_VERTEX(1280, -357, -3762),\n    COL_VERTEX(3533, -1074, -3762),\n    COL_VERTEX(1280, -1074, -1561),\n    COL_VERTEX(1280, -357, -1561),\n    COL_VERTEX(3533, -357, -1561),\n    COL_VERTEX(1229, -357, -1663),\n    COL_VERTEX(1280, -357, -1612),\n    COL_VERTEX(1280, -357, -3711),\n    COL_VERTEX(1229, -357, -3660),\n    COL_VERTEX(3584, -357, -3660),\n    COL_VERTEX(3533, -357, -3711),\n    COL_VERTEX(3533, -357, -1612),\n    COL_VERTEX(3584, -357, -1663),\n    COL_VERTEX(3277, -1305, -2841),\n    COL_VERTEX(3328, -1279, -2431),\n    COL_VERTEX(3277, -1228, -2431),\n    COL_VERTEX(3200, -1330, -2431),\n    COL_VERTEX(3149, -1381, -2431),\n    COL_VERTEX(3277, -1228, -2841),\n    COL_VERTEX(3200, -1330, -2841),\n    COL_VERTEX(3277, -1177, -2841),\n    COL_VERTEX(3149, -1381, -2841),\n    COL_VERTEX(3328, -1177, -2841),\n    COL_VERTEX(3277, -1279, -1868),\n    COL_VERTEX(3277, -1279, -2431),\n    COL_VERTEX(3277, -1279, -2892),\n    COL_VERTEX(3277, -1279, -3455),\n    COL_VERTEX(3277, -1381, -3455),\n    COL_VERTEX(3635, -1279, -3276),\n    COL_VERTEX(3635, -1279, -2047),\n    COL_VERTEX(3635, -1253, -2047),\n    COL_VERTEX(3635, -1228, -2021),\n    COL_VERTEX(3635, -1202, -1996),\n    COL_VERTEX(3635, -1177, -1970),\n    COL_VERTEX(3635, -1177, -1945),\n    COL_VERTEX(3635, -1151, -1945),\n    COL_VERTEX(3635, -1125, -1919),\n    COL_VERTEX(3635, -1100, -1893),\n    COL_VERTEX(3328, -1202, -2098),\n    COL_VERTEX(3328, -1202, -2047),\n    COL_VERTEX(3328, -1049, -1893),\n    COL_VERTEX(3328, -972, -1893),\n    COL_VERTEX(3328, -1074, -1868),\n    COL_VERTEX(3635, -1074, -1868),\n    COL_VERTEX(3328, -1074, -3455),\n    COL_VERTEX(3635, -1100, -3455),\n    COL_VERTEX(3635, -1074, -3762),\n    COL_VERTEX(1178, -1074, -2585),\n    COL_VERTEX(1178, -357, -1561),\n    COL_VERTEX(1178, -357, -3762),\n    COL_VERTEX(3635, -357, -3762),\n    COL_VERTEX(1075, -1074, -2738),\n    COL_VERTEX(1075, -818, -2738),\n    COL_VERTEX(1126, -1074, -2585),\n    COL_VERTEX(1075, -1074, -2585),\n    COL_VERTEX(3328, -1202, -3225),\n    COL_VERTEX(3328, -972, -3522),\n    COL_VERTEX(3328, -972, -3429),\n    COL_VERTEX(3328, -1049, -3429),\n    COL_VERTEX(3328, -1202, -3276),\n    COL_VERTEX(3328, -1074, -3522),\n    COL_VERTEX(3277, -1074, -3522),\n    COL_VERTEX(3277, -1074, -1801),\n    COL_VERTEX(3328, -1074, -1801),\n    COL_VERTEX(3200, -1356, -2841),\n    COL_VERTEX(3200, -1381, -2841),\n    COL_VERTEX(3226, -1356, -2841),\n    COL_VERTEX(3226, -1330, -2841),\n    COL_VERTEX(3251, -1330, -2841),\n    COL_VERTEX(3251, -1305, -2841),\n    COL_VERTEX(3635, -1100, -3429),\n    COL_VERTEX(3635, -1125, -3429),\n    COL_VERTEX(3635, -1125, -3404),\n    COL_VERTEX(3635, -1151, -3404),\n    COL_VERTEX(3635, -1151, -3378),\n    COL_VERTEX(3635, -1177, -3378),\n    COL_VERTEX(3635, -1177, -3353),\n    COL_VERTEX(3635, -1202, -3353),\n    COL_VERTEX(3635, -1202, -3327),\n    COL_VERTEX(3635, -1228, -3327),\n    COL_VERTEX(3635, -1228, -3301),\n    COL_VERTEX(3635, -1253, -3301),\n    COL_VERTEX(3635, -1253, -3276),\n    COL_VERTEX(1075, -1074, -2482),\n    COL_VERTEX(973, -1074, -2841),\n    COL_VERTEX(870, -1305, -2303),\n    COL_VERTEX(666, -1305, -2508),\n    COL_VERTEX(666, -1305, -2815),\n    COL_VERTEX(870, -1305, -3020),\n    COL_VERTEX(666, -1177, -690),\n    COL_VERTEX(666, -1177, -1049),\n    COL_VERTEX(51, -1279, -1381),\n    COL_VERTEX(666, -1177, -1177),\n    COL_VERTEX(-3276, -1279, 1280),\n    COL_VERTEX(-2917, -1279, 1382),\n    COL_VERTEX(-2610, -1177, -1689),\n    COL_VERTEX(-2610, -1279, -2610),\n    COL_VERTEX(-3225, -1279, -2610),\n    COL_VERTEX(51, -562, -562),\n    COL_VERTEX(51, -562, -1177),\n    COL_VERTEX(666, -562, -1177),\n    COL_VERTEX(-1177, -562, -1893),\n    COL_VERTEX(-1177, -1177, -1893),\n    COL_VERTEX(-1074, -562, -1791),\n    COL_VERTEX(-1177, -562, -2815),\n    COL_VERTEX(-1177, -1279, -1893),\n    COL_VERTEX(-2098, -1279, -3327),\n    COL_VERTEX(-2201, -1279, -3429),\n    COL_VERTEX(-1791, -1177, -3839),\n    COL_VERTEX(-1740, -1177, -3839),\n    COL_VERTEX(-1689, -460, -3941),\n    COL_VERTEX(-562, -1279, -3429),\n    COL_VERTEX(-665, -1279, -3327),\n    COL_VERTEX(-3225, -562, -1074),\n    COL_VERTEX(-1689, -1177, -3890),\n    COL_VERTEX(-1074, -1177, -3890),\n    COL_VERTEX(-2610, -562, -1074),\n    COL_VERTEX(-3634, -1381, -1484),\n    COL_VERTEX(-4044, -562, -1484),\n    COL_VERTEX(-4146, -562, 870),\n    COL_VERTEX(-4146, -1381, 870),\n    COL_VERTEX(-4146, -1381, -1381),\n    COL_VERTEX(-3429, -562, 358),\n    COL_VERTEX(-3532, -562, -1381),\n    COL_VERTEX(-3532, -1381, 256),\n    COL_VERTEX(-4044, -562, -1433),\n    COL_VERTEX(-4095, -562, -1381),\n    COL_VERTEX(-3634, -562, -1433),\n    COL_VERTEX(-3583, -562, -1381),\n    COL_VERTEX(-3532, -562, -1484),\n    COL_VERTEX(-3532, -562, -1074),\n    COL_VERTEX(-1586, -562, 973),\n    COL_VERTEX(-1586, -562, -1074),\n    COL_VERTEX(-4146, -562, 973),\n    COL_VERTEX(-562, -562, -562),\n    COL_VERTEX(-2508, -562, -2815),\n    COL_VERTEX(-2610, -562, -2713),\n    COL_VERTEX(-1791, -562, -2815),\n    COL_VERTEX(-1689, -1279, -2713),\n    COL_VERTEX(-2610, -1279, -1074),\n    COL_VERTEX(-1689, -562, -1893),\n    COL_VERTEX(-1689, -1177, -1893),\n    COL_VERTEX(-562, -562, -2917),\n    COL_VERTEX(-460, -562, -2815),\n    COL_VERTEX(-460, -562, -1893),\n    COL_VERTEX(-1791, -1177, -1791),\n    COL_VERTEX(-1074, -562, -2917),\n    COL_VERTEX(-562, -562, -665),\n    COL_VERTEX(563, -562, -562),\n    COL_VERTEX(563, -1279, -562),\n    COL_VERTEX(-460, -1279, -562),\n    COL_VERTEX(-511, -562, -665),\n    COL_VERTEX(-460, -562, -613),\n    COL_VERTEX(-665, -562, -1177),\n    COL_VERTEX(-1484, -1279, -1177),\n    COL_VERTEX(-1177, -1177, -1177),\n    COL_VERTEX(-2098, -1177, -1893),\n    COL_VERTEX(-1689, -1177, -1996),\n    COL_VERTEX(-1996, -562, -1791),\n    COL_VERTEX(-2098, -1177, -1689),\n    COL_VERTEX(-2098, -562, -1689),\n    COL_VERTEX(-2098, -562, 256),\n    COL_VERTEX(-1996, -562, -1740),\n    COL_VERTEX(-2047, -562, -1689),\n    COL_VERTEX(-1484, -1177, -1177),\n    COL_VERTEX(-1586, -1177, 870),\n    COL_VERTEX(-1586, -562, 870),\n    COL_VERTEX(-2713, -1270, 973),\n    COL_VERTEX(-1689, -1185, 973),\n    COL_VERTEX(-1689, -562, 973),\n    COL_VERTEX(-4044, -562, 973),\n    COL_VERTEX(-3481, -562, 973),\n    COL_VERTEX(-4044, -1279, 973),\n    COL_VERTEX(-2201, -562, 358),\n    COL_VERTEX(-2201, -1191, 358),\n    COL_VERTEX(-2201, -1279, 358),\n    COL_VERTEX(-3532, -1381, -972),\n    COL_VERTEX(-3532, -1381, -1484),\n    COL_VERTEX(-4146, -1381, -1484),\n    COL_VERTEX(-4146, -1279, 973),\n    COL_VERTEX(-3173, -1279, 1382),\n    COL_VERTEX(-3020, -1279, 1382),\n    COL_VERTEX(-3020, -1279, 1434),\n    COL_VERTEX(-3020, -1279, 1485),\n    COL_VERTEX(-1637, -562, 870),\n    COL_VERTEX(-1689, -562, 922),\n    COL_VERTEX(-4095, -562, 870),\n    COL_VERTEX(-4044, -562, 922),\n    COL_VERTEX(-1586, -1177, 973),\n    COL_VERTEX(-3378, -562, 1075),\n    COL_VERTEX(256, -562, -1177),\n    COL_VERTEX(51, -562, -1893),\n    COL_VERTEX(51, -1330, -1893),\n    COL_VERTEX(256, -1279, -1177),\n    COL_VERTEX(563, -1279, -1177),\n    COL_VERTEX(-1023, -1177, -3839),\n    COL_VERTEX(-972, -1177, -3839),\n    COL_VERTEX(-972, -480, -3839),\n    COL_VERTEX(1075, -1330, -2405),\n    COL_VERTEX(563, -562, -613),\n    COL_VERTEX(563, -1177, -613),\n    COL_VERTEX(-3225, -1279, -3327),\n    COL_VERTEX(-3122, -562, -3429),\n    COL_VERTEX(-3122, -1279, -3429),\n    COL_VERTEX(666, -1177, -793),\n    COL_VERTEX(666, -1177, -946),\n    COL_VERTEX(666, -1177, -665),\n    COL_VERTEX(666, -562, -1074),\n    COL_VERTEX(51, -1330, -3429),\n    COL_VERTEX(1075, -1330, -2917),\n    COL_VERTEX(614, -1177, -1074),\n    COL_VERTEX(563, -1177, -1125),\n    COL_VERTEX(563, -1177, -1177),\n    COL_VERTEX(358, -1305, -2508),\n    COL_VERTEX(666, -1305, -2201),\n    COL_VERTEX(666, -1279, -3122),\n    COL_VERTEX(-3122, -1279, -3378),\n    COL_VERTEX(-3173, -1279, -3327),\n    COL_VERTEX(-101, -858, 1178),\n    COL_VERTEX(-562, -858, 1178),\n    COL_VERTEX(-101, -806, 1075),\n    COL_VERTEX(-562, -429, 1075),\n    COL_VERTEX(-3276, -1279, 1485),\n    COL_VERTEX(-3378, -1279, 1485),\n    COL_VERTEX(-3276, -562, 1485),\n    COL_VERTEX(-2815, -665, 1485),\n    COL_VERTEX(51, -1074, 1280),\n    COL_VERTEX(256, -1074, 1741),\n    COL_VERTEX(256, -1074, 2253),\n    COL_VERTEX(51, -357, 1280),\n    COL_VERTEX(256, -357, 2432),\n    COL_VERTEX(-153, -767, 358),\n    COL_VERTEX(-511, -767, 256),\n    COL_VERTEX(-2917, -562, 1485),\n    COL_VERTEX(-101, -306, 666),\n    COL_VERTEX(-50, -1074, 1178),\n    COL_VERTEX(-613, -357, 1178),\n    COL_VERTEX(-1535, -1074, 1587),\n    COL_VERTEX(-1228, -1100, 1587),\n    COL_VERTEX(-1177, -1279, 1587),\n    COL_VERTEX(-665, -1279, 1587),\n    COL_VERTEX(-1893, -1279, 1587),\n    COL_VERTEX(-1586, -1279, 1587),\n    COL_VERTEX(-1893, -1279, 1280),\n    COL_VERTEX(-1893, -357, 2099),\n    COL_VERTEX(-50, -357, 2816),\n    COL_VERTEX(-1177, -1279, 2816),\n    COL_VERTEX(-460, -1279, 1587),\n    COL_VERTEX(-460, -1279, 2816),\n    COL_VERTEX(256, -357, 1715),\n    COL_VERTEX(256, -1074, 2278),\n    COL_VERTEX(0, -1074, 2714),\n    COL_VERTEX(-460, -1074, 2816),\n    COL_VERTEX(51, -1074, 2816),\n    COL_VERTEX(51, -1074, 1178),\n    COL_VERTEX(0, -1074, 1280),\n    COL_VERTEX(-50, -1074, 2765),\n    COL_VERTEX(-50, -1074, 1229),\n    COL_VERTEX(-1433, -1074, 1178),\n    COL_VERTEX(-1228, -1074, 973),\n    COL_VERTEX(-1893, -1074, 1178),\n    COL_VERTEX(-869, -1074, 973),\n    COL_VERTEX(-869, -1074, 922),\n    COL_VERTEX(-869, -1074, 870),\n    COL_VERTEX(-1177, -1074, 870),\n    COL_VERTEX(256, -357, 2816),\n    COL_VERTEX(-1893, -357, 2816),\n    COL_VERTEX(256, -357, 1178),\n    COL_VERTEX(-1535, -1074, 1536),\n    COL_VERTEX(-1586, -1074, 1536),\n    COL_VERTEX(-1535, -997, 1587),\n    COL_VERTEX(-1535, -1177, 1818),\n    COL_VERTEX(-1586, -1177, 1818),\n    COL_VERTEX(-1177, -1074, 1536),\n    COL_VERTEX(-1228, -1074, 1536),\n    COL_VERTEX(-1177, -997, 1587),\n    COL_VERTEX(-1177, -1177, 1818),\n    COL_VERTEX(-1228, -1177, 1818),\n    COL_VERTEX(-1228, -1100, 1613),\n    COL_VERTEX(-1228, -1125, 1613),\n    COL_VERTEX(-1228, -1125, 1638),\n    COL_VERTEX(-1228, -1151, 1638),\n    COL_VERTEX(-1228, -1151, 1664),\n    COL_VERTEX(-1228, -1177, 1664),\n    COL_VERTEX(-1228, -1177, 1690),\n    COL_VERTEX(-1228, -1202, 1690),\n    COL_VERTEX(-1228, -1202, 1715),\n    COL_VERTEX(-1228, -1228, 1715),\n    COL_VERTEX(-1228, -1228, 1741),\n    COL_VERTEX(-1228, -1253, 1741),\n    COL_VERTEX(-1228, -1253, 1766),\n    COL_VERTEX(-1228, -1279, 1766),\n    COL_VERTEX(-1791, -1279, 2202),\n    COL_VERTEX(-1279, -1279, 2714),\n    COL_VERTEX(205, -1074, 2381),\n    COL_VERTEX(205, -1074, 2330),\n    COL_VERTEX(205, -1074, 1664),\n    COL_VERTEX(205, -1074, 1613),\n    COL_VERTEX(-1791, -1074, 1229),\n    COL_VERTEX(-1791, -357, 1178),\n    COL_VERTEX(-1842, -1074, 1280),\n    COL_VERTEX(-1893, -1074, 1280),\n    COL_VERTEX(-50, -1074, 2816),\n    COL_VERTEX(-460, -1279, 1792),\n    COL_VERTEX(-1586, -946, 1587),\n    COL_VERTEX(-1177, -1279, 1536),\n    COL_VERTEX(-1228, -946, 1587),\n    COL_VERTEX(-1228, -1279, 1536),\n    COL_VERTEX(-1586, -1279, 1536),\n    COL_VERTEX(-1535, -1279, 1536),\n    COL_VERTEX(-1330, -562, 870),\n    COL_VERTEX(-1228, -460, 870),\n    COL_VERTEX(-818, -460, 870),\n    COL_VERTEX(-716, -562, 870),\n    COL_TRI_INIT(SURFACE_DEFAULT, 1255),\n    COL_TRI(142, 143, 144),\n    COL_TRI(142, 145, 143),\n    COL_TRI(145, 146, 143),\n    COL_TRI(145, 134, 146),\n    COL_TRI(147, 142, 144),\n    COL_TRI(147, 135, 142),\n    COL_TRI(148, 149, 150),\n    COL_TRI(148, 151, 149),\n    COL_TRI(150, 149, 152),\n    COL_TRI(150, 152, 671),\n    COL_TRI(147, 151, 148),\n    COL_TRI(147, 144, 151),\n    COL_TRI(153, 149, 154),\n    COL_TRI(153, 152, 149),\n    COL_TRI(154, 151, 155),\n    COL_TRI(154, 149, 151),\n    COL_TRI(155, 151, 144),\n    COL_TRI(155, 144, 143),\n    COL_TRI(156, 154, 157),\n    COL_TRI(156, 153, 154),\n    COL_TRI(157, 154, 155),\n    COL_TRI(157, 155, 158),\n    COL_TRI(158, 143, 146),\n    COL_TRI(158, 155, 143),\n    COL_TRI(163, 676, 677),\n    COL_TRI(159, 672, 673),\n    COL_TRI(159, 673, 160),\n    COL_TRI(160, 673, 674),\n    COL_TRI(160, 674, 161),\n    COL_TRI(161, 674, 675),\n    COL_TRI(161, 675, 676),\n    COL_TRI(162, 161, 163),\n    COL_TRI(163, 161, 676),\n    COL_TRI(162, 160, 161),\n    COL_TRI(164, 160, 162),\n    COL_TRI(164, 159, 160),\n    COL_TRI(165, 673, 166),\n    COL_TRI(166, 673, 672),\n    COL_TRI(166, 672, 678),\n    COL_TRI(165, 674, 673),\n    COL_TRI(167, 674, 165),\n    COL_TRI(170, 682, 683),\n    COL_TRI(167, 675, 674),\n    COL_TRI(168, 679, 169),\n    COL_TRI(168, 680, 679),\n    COL_TRI(169, 681, 170),\n    COL_TRI(169, 679, 681),\n    COL_TRI(170, 681, 682),\n    COL_TRI(175, 679, 174),\n    COL_TRI(171, 175, 172),\n    COL_TRI(171, 176, 175),\n    COL_TRI(172, 175, 174),\n    COL_TRI(172, 174, 173),\n    COL_TRI(173, 684, 685),\n    COL_TRI(173, 174, 684),\n    COL_TRI(174, 680, 684),\n    COL_TRI(174, 679, 680),\n    COL_TRI(178, 686, 688),\n    COL_TRI(175, 681, 679),\n    COL_TRI(176, 681, 175),\n    COL_TRI(176, 682, 681),\n    COL_TRI(177, 686, 178),\n    COL_TRI(177, 687, 686),\n    COL_TRI(178, 688, 179),\n    COL_TRI(179, 688, 689),\n    COL_TRI(179, 689, 690),\n    COL_TRI(180, 178, 181),\n    COL_TRI(180, 177, 178),\n    COL_TRI(181, 178, 179),\n    COL_TRI(181, 179, 182),\n    COL_TRI(182, 690, 691),\n    COL_TRI(182, 179, 690),\n    COL_TRI(187, 693, 186),\n    COL_TRI(183, 688, 184),\n    COL_TRI(183, 689, 688),\n    COL_TRI(184, 686, 185),\n    COL_TRI(184, 688, 686),\n    COL_TRI(185, 686, 687),\n    COL_TRI(185, 687, 692),\n    COL_TRI(186, 693, 128),\n    COL_TRI(187, 186, 191),\n    COL_TRI(186, 128, 193),\n    COL_TRI(188, 186, 193),\n    COL_TRI(188, 193, 694),\n    COL_TRI(189, 695, 188),\n    COL_TRI(129, 188, 694),\n    COL_TRI(129, 189, 188),\n    COL_TRI(190, 129, 694),\n    COL_TRI(190, 127, 129),\n    COL_TRI(189, 192, 695),\n    COL_TRI(191, 188, 695),\n    COL_TRI(191, 186, 188),\n    COL_TRI(192, 189, 693),\n    COL_TRI(192, 693, 187),\n    COL_TRI(156, 127, 190),\n    COL_TRI(156, 190, 153),\n    COL_TRI(190, 694, 193),\n    COL_TRI(190, 193, 696),\n    COL_TRI(153, 190, 696),\n    COL_TRI(41, 45, 43),\n    COL_TRI(193, 128, 124),\n    COL_TRI(193, 124, 696),\n    COL_TRI(153, 696, 152),\n    COL_TRI(124, 152, 696),\n    COL_TRI(124, 671, 152),\n    COL_TRI(41, 47, 45),\n    COL_TRI(197, 223, 701),\n    COL_TRI(79, 81, 211),\n    COL_TRI(194, 697, 698),\n    COL_TRI(194, 698, 699),\n    COL_TRI(195, 196, 700),\n    COL_TRI(196, 197, 700),\n    COL_TRI(197, 701, 700),\n    COL_TRI(203, 71, 64),\n    COL_TRI(198, 700, 701),\n    COL_TRI(198, 195, 700),\n    COL_TRI(199, 201, 202),\n    COL_TRI(199, 200, 201),\n    COL_TRI(200, 702, 201),\n    COL_TRI(201, 702, 703),\n    COL_TRI(201, 703, 202),\n    COL_TRI(202, 703, 220),\n    COL_TRI(199, 202, 220),\n    COL_TRI(203, 704, 71),\n    COL_TRI(71, 704, 708),\n    COL_TRI(71, 705, 205),\n    COL_TRI(71, 205, 69),\n    COL_TRI(70, 69, 706),\n    COL_TRI(204, 707, 205),\n    COL_TRI(204, 205, 705),\n    COL_TRI(71, 708, 705),\n    COL_TRI(207, 708, 711),\n    COL_TRI(205, 709, 706),\n    COL_TRI(205, 706, 69),\n    COL_TRI(206, 267, 203),\n    COL_TRI(70, 706, 206),\n    COL_TRI(206, 710, 267),\n    COL_TRI(207, 711, 208),\n    COL_TRI(208, 711, 712),\n    COL_TRI(208, 712, 713),\n    COL_TRI(209, 714, 709),\n    COL_TRI(209, 709, 715),\n    COL_TRI(210, 714, 209),\n    COL_TRI(210, 716, 714),\n    COL_TRI(206, 214, 717),\n    COL_TRI(206, 717, 718),\n    COL_TRI(206, 718, 250),\n    COL_TRI(206, 203, 214),\n    COL_TRI(72, 719, 73),\n    COL_TRI(74, 212, 65),\n    COL_TRI(65, 212, 720),\n    COL_TRI(65, 720, 215),\n    COL_TRI(214, 211, 81),\n    COL_TRI(211, 213, 719),\n    COL_TRI(211, 719, 72),\n    COL_TRI(212, 74, 721),\n    COL_TRI(212, 721, 720),\n    COL_TRI(213, 73, 719),\n    COL_TRI(213, 216, 73),\n    COL_TRI(214, 81, 247),\n    COL_TRI(211, 215, 79),\n    COL_TRI(214, 216, 211),\n    COL_TRI(215, 721, 250),\n    COL_TRI(215, 250, 722),\n    COL_TRI(215, 722, 79),\n    COL_TRI(216, 70, 721),\n    COL_TRI(216, 64, 70),\n    COL_TRI(220, 725, 219),\n    COL_TRI(217, 196, 195),\n    COL_TRI(217, 195, 723),\n    COL_TRI(218, 217, 723),\n    COL_TRI(218, 723, 724),\n    COL_TRI(218, 724, 219),\n    COL_TRI(218, 219, 222),\n    COL_TRI(219, 725, 726),\n    COL_TRI(219, 726, 222),\n    COL_TRI(222, 261, 223),\n    COL_TRI(221, 220, 219),\n    COL_TRI(198, 219, 724),\n    COL_TRI(198, 221, 219),\n    COL_TRI(195, 198, 723),\n    COL_TRI(198, 724, 723),\n    COL_TRI(218, 222, 223),\n    COL_TRI(217, 218, 229),\n    COL_TRI(218, 223, 229),\n    COL_TRI(223, 727, 229),\n    COL_TRI(224, 728, 225),\n    COL_TRI(225, 728, 200),\n    COL_TRI(225, 200, 729),\n    COL_TRI(226, 225, 729),\n    COL_TRI(227, 728, 730),\n    COL_TRI(224, 730, 728),\n    COL_TRI(226, 729, 725),\n    COL_TRI(226, 227, 503),\n    COL_TRI(226, 503, 228),\n    COL_TRI(220, 226, 725),\n    COL_TRI(220, 227, 226),\n    COL_TRI(227, 730, 503),\n    COL_TRI(228, 224, 225),\n    COL_TRI(228, 225, 226),\n    COL_TRI(229, 230, 217),\n    COL_TRI(230, 196, 217),\n    COL_TRI(230, 731, 196),\n    COL_TRI(231, 198, 223),\n    COL_TRI(231, 223, 732),\n    COL_TRI(232, 234, 236),\n    COL_TRI(233, 234, 232),\n    COL_TRI(233, 235, 234),\n    COL_TRI(234, 229, 727),\n    COL_TRI(234, 727, 236),\n    COL_TRI(235, 229, 234),\n    COL_TRI(236, 727, 731),\n    COL_TRI(232, 236, 237),\n    COL_TRI(237, 236, 238),\n    COL_TRI(236, 731, 238),\n    COL_TRI(240, 241, 734),\n    COL_TRI(235, 230, 229),\n    COL_TRI(238, 731, 230),\n    COL_TRI(237, 238, 239),\n    COL_TRI(239, 238, 235),\n    COL_TRI(238, 230, 235),\n    COL_TRI(239, 235, 233),\n    COL_TRI(231, 733, 240),\n    COL_TRI(240, 733, 241),\n    COL_TRI(241, 268, 259),\n    COL_TRI(241, 261, 268),\n    COL_TRI(241, 259, 220),\n    COL_TRI(241, 220, 734),\n    COL_TRI(231, 732, 733),\n    COL_TRI(242, 79, 722),\n    COL_TRI(243, 735, 242),\n    COL_TRI(242, 735, 79),\n    COL_TRI(247, 81, 740),\n    COL_TRI(243, 736, 735),\n    COL_TRI(244, 736, 243),\n    COL_TRI(244, 737, 736),\n    COL_TRI(245, 738, 246),\n    COL_TRI(246, 738, 257),\n    COL_TRI(246, 257, 739),\n    COL_TRI(245, 740, 738),\n    COL_TRI(247, 740, 245),\n    COL_TRI(252, 743, 251),\n    COL_TRI(248, 741, 249),\n    COL_TRI(249, 741, 70),\n    COL_TRI(249, 70, 206),\n    COL_TRI(248, 742, 741),\n    COL_TRI(250, 742, 248),\n    COL_TRI(250, 721, 742),\n    COL_TRI(251, 743, 216),\n    COL_TRI(251, 216, 214),\n    COL_TRI(256, 748, 253),\n    COL_TRI(252, 744, 743),\n    COL_TRI(203, 744, 252),\n    COL_TRI(203, 64, 744),\n    COL_TRI(253, 745, 254),\n    COL_TRI(254, 745, 746),\n    COL_TRI(254, 746, 255),\n    COL_TRI(255, 746, 747),\n    COL_TRI(255, 747, 256),\n    COL_TRI(253, 748, 745),\n    COL_TRI(256, 747, 748),\n    COL_TRI(259, 199, 220),\n    COL_TRI(256, 253, 244),\n    COL_TRI(253, 737, 244),\n    COL_TRI(253, 254, 737),\n    COL_TRI(256, 244, 739),\n    COL_TRI(257, 256, 739),\n    COL_TRI(257, 255, 256),\n    COL_TRI(258, 200, 264),\n    COL_TRI(258, 729, 200),\n    COL_TRI(262, 726, 729),\n    COL_TRI(199, 260, 749),\n    COL_TRI(260, 268, 749),\n    COL_TRI(260, 269, 268),\n    COL_TRI(222, 750, 261),\n    COL_TRI(261, 751, 223),\n    COL_TRI(262, 729, 752),\n    COL_TRI(199, 66, 260),\n    COL_TRI(263, 261, 750),\n    COL_TRI(263, 753, 261),\n    COL_TRI(264, 261, 753),\n    COL_TRI(264, 268, 261),\n    COL_TRI(264, 749, 268),\n    COL_TRI(199, 264, 200),\n    COL_TRI(199, 749, 264),\n    COL_TRI(258, 264, 754),\n    COL_TRI(264, 753, 754),\n    COL_TRI(265, 753, 263),\n    COL_TRI(265, 754, 753),\n    COL_TRI(258, 754, 265),\n    COL_TRI(76, 75, 755),\n    COL_TRI(199, 67, 66),\n    COL_TRI(199, 68, 67),\n    COL_TRI(66, 76, 266),\n    COL_TRI(66, 266, 260),\n    COL_TRI(266, 269, 260),\n    COL_TRI(76, 712, 266),\n    COL_TRI(266, 270, 269),\n    COL_TRI(267, 270, 266),\n    COL_TRI(76, 713, 712),\n    COL_TRI(76, 755, 756),\n    COL_TRI(270, 210, 75),\n    COL_TRI(268, 269, 259),\n    COL_TRI(269, 270, 77),\n    COL_TRI(269, 68, 259),\n    COL_TRI(269, 77, 68),\n    COL_TRI(270, 75, 77),\n    COL_TRI(199, 259, 68),\n    COL_TRI(270, 716, 210),\n    COL_TRI(267, 710, 270),\n    COL_TRI(275, 761, 762),\n    COL_TRI(271, 109, 108),\n    COL_TRI(272, 271, 108),\n    COL_TRI(273, 272, 108),\n    COL_TRI(273, 108, 111),\n    COL_TRI(273, 111, 757),\n    COL_TRI(111, 110, 757),\n    COL_TRI(274, 758, 759),\n    COL_TRI(274, 760, 758),\n    COL_TRI(278, 766, 279),\n    COL_TRI(275, 762, 288),\n    COL_TRI(276, 763, 277),\n    COL_TRI(276, 764, 763),\n    COL_TRI(277, 763, 765),\n    COL_TRI(277, 765, 278),\n    COL_TRI(278, 765, 766),\n    COL_TRI(283, 770, 284),\n    COL_TRI(279, 766, 760),\n    COL_TRI(279, 760, 767),\n    COL_TRI(280, 758, 768),\n    COL_TRI(280, 768, 281),\n    COL_TRI(281, 768, 769),\n    COL_TRI(281, 769, 282),\n    COL_TRI(282, 769, 761),\n    COL_TRI(282, 761, 275),\n    COL_TRI(286, 778, 776),\n    COL_TRI(283, 284, 771),\n    COL_TRI(284, 772, 773),\n    COL_TRI(284, 773, 771),\n    COL_TRI(285, 774, 775),\n    COL_TRI(285, 775, 297),\n    COL_TRI(286, 776, 777),\n    COL_TRI(286, 784, 291),\n    COL_TRI(287, 779, 780),\n    COL_TRI(287, 780, 781),\n    COL_TRI(288, 762, 782),\n    COL_TRI(288, 782, 289),\n    COL_TRI(289, 782, 783),\n    COL_TRI(289, 783, 290),\n    COL_TRI(290, 783, 780),\n    COL_TRI(290, 780, 779),\n    COL_TRI(291, 784, 785),\n    COL_TRI(286, 777, 784),\n    COL_TRI(291, 785, 292),\n    COL_TRI(292, 785, 764),\n    COL_TRI(292, 764, 276),\n    COL_TRI(284, 770, 786),\n    COL_TRI(284, 786, 293),\n    COL_TRI(293, 786, 787),\n    COL_TRI(296, 283, 771),\n    COL_TRI(293, 787, 294),\n    COL_TRI(294, 787, 776),\n    COL_TRI(294, 776, 778),\n    COL_TRI(287, 781, 788),\n    COL_TRI(287, 788, 295),\n    COL_TRI(295, 788, 789),\n    COL_TRI(295, 789, 296),\n    COL_TRI(296, 789, 283),\n    COL_TRI(297, 790, 371),\n    COL_TRI(297, 371, 285),\n    COL_TRI(298, 300, 301),\n    COL_TRI(298, 303, 302),\n    COL_TRI(298, 302, 299),\n    COL_TRI(298, 299, 300),\n    COL_TRI(298, 304, 303),\n    COL_TRI(299, 343, 300),\n    COL_TRI(300, 343, 344),\n    COL_TRI(300, 344, 301),\n    COL_TRI(304, 794, 306),\n    COL_TRI(301, 344, 791),\n    COL_TRI(301, 791, 774),\n    COL_TRI(302, 792, 299),\n    COL_TRI(299, 792, 343),\n    COL_TRI(303, 793, 302),\n    COL_TRI(302, 793, 792),\n    COL_TRI(303, 306, 793),\n    COL_TRI(304, 306, 303),\n    COL_TRI(310, 797, 314),\n    COL_TRI(305, 793, 306),\n    COL_TRI(306, 794, 305),\n    COL_TRI(305, 792, 793),\n    COL_TRI(307, 309, 308),\n    COL_TRI(307, 308, 310),\n    COL_TRI(307, 311, 309),\n    COL_TRI(308, 795, 310),\n    COL_TRI(309, 796, 308),\n    COL_TRI(308, 796, 795),\n    COL_TRI(310, 795, 797),\n    COL_TRI(311, 312, 309),\n    COL_TRI(309, 312, 796),\n    COL_TRI(311, 798, 312),\n    COL_TRI(312, 798, 313),\n    COL_TRI(313, 799, 797),\n    COL_TRI(313, 797, 795),\n    COL_TRI(313, 795, 796),\n    COL_TRI(313, 796, 312),\n    COL_TRI(314, 797, 799),\n    COL_TRI(315, 799, 775),\n    COL_TRI(314, 799, 315),\n    COL_TRI(316, 800, 801),\n    COL_TRI(18, 316, 349),\n    COL_TRI(316, 801, 305),\n    COL_TRI(307, 802, 803),\n    COL_TRI(307, 803, 804),\n    COL_TRI(317, 805, 389),\n    COL_TRI(317, 806, 805),\n    COL_TRI(18, 17, 316),\n    COL_TRI(325, 809, 324),\n    COL_TRI(318, 806, 317),\n    COL_TRI(318, 807, 806),\n    COL_TRI(319, 807, 318),\n    COL_TRI(320, 807, 319),\n    COL_TRI(321, 320, 319),\n    COL_TRI(321, 808, 320),\n    COL_TRI(322, 808, 321),\n    COL_TRI(323, 808, 322),\n    COL_TRI(324, 323, 322),\n    COL_TRI(324, 809, 323),\n    COL_TRI(332, 813, 331),\n    COL_TRI(326, 809, 325),\n    COL_TRI(327, 326, 325),\n    COL_TRI(327, 810, 326),\n    COL_TRI(328, 810, 327),\n    COL_TRI(328, 811, 810),\n    COL_TRI(329, 811, 328),\n    COL_TRI(329, 812, 811),\n    COL_TRI(330, 812, 329),\n    COL_TRI(331, 812, 330),\n    COL_TRI(332, 331, 330),\n    COL_TRI(338, 818, 364),\n    COL_TRI(333, 813, 332),\n    COL_TRI(334, 813, 333),\n    COL_TRI(335, 334, 333),\n    COL_TRI(335, 814, 334),\n    COL_TRI(336, 814, 335),\n    COL_TRI(337, 814, 336),\n    COL_TRI(338, 791, 815),\n    COL_TRI(338, 815, 816),\n    COL_TRI(338, 816, 817),\n    COL_TRI(338, 817, 818),\n    COL_TRI(344, 815, 791),\n    COL_TRI(339, 818, 340),\n    COL_TRI(340, 818, 817),\n    COL_TRI(339, 364, 818),\n    COL_TRI(340, 817, 341),\n    COL_TRI(341, 817, 816),\n    COL_TRI(342, 816, 815),\n    COL_TRI(341, 816, 342),\n    COL_TRI(342, 815, 346),\n    COL_TRI(343, 346, 815),\n    COL_TRI(343, 815, 344),\n    COL_TRI(347, 376, 822),\n    COL_TRI(345, 342, 346),\n    COL_TRI(345, 341, 342),\n    COL_TRI(345, 340, 341),\n    COL_TRI(346, 801, 345),\n    COL_TRI(345, 339, 340),\n    COL_TRI(337, 336, 819),\n    COL_TRI(337, 819, 820),\n    COL_TRI(347, 821, 376),\n    COL_TRI(7, 349, 316),\n    COL_TRI(348, 804, 22),\n    COL_TRI(348, 22, 21),\n    COL_TRI(18, 349, 348),\n    COL_TRI(18, 348, 21),\n    COL_TRI(6, 5, 349),\n    COL_TRI(349, 4, 348),\n    COL_TRI(349, 5, 4),\n    COL_TRI(7, 6, 349),\n    COL_TRI(350, 273, 757),\n    COL_TRI(4, 0, 348),\n    COL_TRI(0, 804, 348),\n    COL_TRI(1, 7, 316),\n    COL_TRI(2, 316, 804),\n    COL_TRI(2, 1, 316),\n    COL_TRI(3, 2, 804),\n    COL_TRI(0, 3, 804),\n    COL_TRI(350, 820, 273),\n    COL_TRI(353, 825, 826),\n    COL_TRI(271, 347, 823),\n    COL_TRI(271, 272, 347),\n    COL_TRI(351, 352, 274),\n    COL_TRI(352, 767, 274),\n    COL_TRI(352, 355, 767),\n    COL_TRI(351, 274, 759),\n    COL_TRI(280, 824, 351),\n    COL_TRI(280, 351, 759),\n    COL_TRI(355, 356, 830),\n    COL_TRI(353, 826, 827),\n    COL_TRI(352, 354, 356),\n    COL_TRI(352, 356, 355),\n    COL_TRI(354, 828, 356),\n    COL_TRI(354, 829, 828),\n    COL_TRI(355, 830, 824),\n    COL_TRI(356, 831, 830),\n    COL_TRI(356, 828, 831),\n    COL_TRI(357, 358, 830),\n    COL_TRI(358, 351, 824),\n    COL_TRI(358, 824, 830),\n    COL_TRI(357, 830, 831),\n    COL_TRI(351, 358, 354),\n    COL_TRI(351, 354, 352),\n    COL_TRI(315, 362, 314),\n    COL_TRI(358, 829, 354),\n    COL_TRI(358, 357, 829),\n    COL_TRI(359, 374, 372),\n    COL_TRI(359, 372, 373),\n    COL_TRI(359, 362, 374),\n    COL_TRI(359, 802, 362),\n    COL_TRI(359, 373, 363),\n    COL_TRI(315, 832, 362),\n    COL_TRI(360, 833, 834),\n    COL_TRI(360, 834, 835),\n    COL_TRI(360, 835, 836),\n    COL_TRI(360, 836, 832),\n    COL_TRI(360, 832, 361),\n    COL_TRI(361, 832, 315),\n    COL_TRI(362, 802, 314),\n    COL_TRI(343, 801, 346),\n    COL_TRI(366, 841, 842),\n    COL_TRI(363, 833, 837),\n    COL_TRI(363, 837, 838),\n    COL_TRI(364, 339, 839),\n    COL_TRI(364, 839, 840),\n    COL_TRI(315, 775, 361),\n    COL_TRI(365, 841, 366),\n    COL_TRI(372, 834, 373),\n    COL_TRI(367, 843, 841),\n    COL_TRI(367, 841, 365),\n    COL_TRI(368, 843, 367),\n    COL_TRI(368, 844, 843),\n    COL_TRI(369, 844, 368),\n    COL_TRI(369, 845, 844),\n    COL_TRI(370, 845, 369),\n    COL_TRI(370, 846, 845),\n    COL_TRI(371, 846, 370),\n    COL_TRI(371, 790, 846),\n    COL_TRI(376, 847, 822),\n    COL_TRI(373, 834, 833),\n    COL_TRI(373, 833, 363),\n    COL_TRI(372, 835, 834),\n    COL_TRI(374, 835, 372),\n    COL_TRI(374, 836, 835),\n    COL_TRI(362, 836, 374),\n    COL_TRI(362, 832, 836),\n    COL_TRI(375, 847, 376),\n    COL_TRI(382, 852, 381),\n    COL_TRI(377, 847, 375),\n    COL_TRI(377, 848, 847),\n    COL_TRI(378, 849, 377),\n    COL_TRI(377, 849, 848),\n    COL_TRI(379, 849, 378),\n    COL_TRI(379, 850, 849),\n    COL_TRI(380, 851, 379),\n    COL_TRI(379, 851, 850),\n    COL_TRI(381, 852, 851),\n    COL_TRI(381, 851, 380),\n    COL_TRI(387, 857, 386),\n    COL_TRI(382, 853, 852),\n    COL_TRI(383, 853, 382),\n    COL_TRI(383, 854, 853),\n    COL_TRI(383, 855, 854),\n    COL_TRI(384, 855, 383),\n    COL_TRI(385, 856, 855),\n    COL_TRI(385, 855, 384),\n    COL_TRI(386, 857, 385),\n    COL_TRI(385, 857, 856),\n    COL_TRI(387, 858, 857),\n    COL_TRI(388, 859, 387),\n    COL_TRI(387, 859, 858),\n    COL_TRI(389, 859, 388),\n    COL_TRI(389, 805, 859),\n    COL_TRI(107, 96, 93),\n    COL_TRI(107, 93, 104),\n    COL_TRI(115, 139, 141),\n    COL_TRI(115, 141, 117),\n    COL_TRI(390, 391, 392),\n    COL_TRI(391, 860, 392),\n    COL_TRI(392, 860, 394),\n    COL_TRI(392, 394, 861),\n    COL_TRI(393, 390, 392),\n    COL_TRI(393, 392, 861),\n    COL_TRI(394, 395, 861),\n    COL_TRI(395, 396, 861),\n    COL_TRI(396, 397, 861),\n    COL_TRI(397, 393, 861),\n    COL_TRI(357, 831, 391),\n    COL_TRI(357, 391, 484),\n    COL_TRI(400, 866, 401),\n    COL_TRI(393, 862, 390),\n    COL_TRI(393, 863, 862),\n    COL_TRI(397, 863, 393),\n    COL_TRI(397, 864, 863),\n    COL_TRI(396, 864, 397),\n    COL_TRI(396, 865, 864),\n    COL_TRI(398, 395, 828),\n    COL_TRI(399, 400, 401),\n    COL_TRI(401, 866, 867),\n    COL_TRI(402, 399, 401),\n    COL_TRI(402, 401, 404),\n    COL_TRI(401, 867, 404),\n    COL_TRI(403, 399, 402),\n    COL_TRI(403, 402, 868),\n    COL_TRI(402, 404, 869),\n    COL_TRI(404, 867, 869),\n    COL_TRI(405, 406, 519),\n    COL_TRI(406, 467, 519),\n    COL_TRI(405, 870, 406),\n    COL_TRI(407, 406, 870),\n    COL_TRI(407, 871, 406),\n    COL_TRI(406, 871, 467),\n    COL_TRI(405, 408, 870),\n    COL_TRI(408, 407, 870),\n    COL_TRI(409, 94, 414),\n    COL_TRI(94, 93, 414),\n    COL_TRI(409, 105, 94),\n    COL_TRI(409, 104, 105),\n    COL_TRI(112, 872, 410),\n    COL_TRI(112, 410, 138),\n    COL_TRI(410, 872, 873),\n    COL_TRI(410, 873, 874),\n    COL_TRI(411, 875, 876),\n    COL_TRI(411, 876, 877),\n    COL_TRI(412, 878, 879),\n    COL_TRI(412, 880, 878),\n    COL_TRI(413, 878, 881),\n    COL_TRI(413, 882, 878),\n    COL_TRI(414, 883, 498),\n    COL_TRI(414, 498, 497),\n    COL_TRI(414, 497, 409),\n    COL_TRI(414, 884, 883),\n    COL_TRI(414, 885, 415),\n    COL_TRI(414, 415, 416),\n    COL_TRI(139, 13, 15),\n    COL_TRI(415, 885, 886),\n    COL_TRI(415, 886, 488),\n    COL_TRI(416, 887, 490),\n    COL_TRI(416, 490, 430),\n    COL_TRI(115, 139, 15),\n    COL_TRI(139, 890, 13),\n    COL_TRI(418, 897, 898),\n    COL_TRI(115, 15, 12),\n    COL_TRI(115, 12, 14),\n    COL_TRI(115, 14, 893),\n    COL_TRI(417, 421, 894),\n    COL_TRI(417, 895, 421),\n    COL_TRI(418, 896, 897),\n    COL_TRI(419, 899, 420),\n    COL_TRI(420, 900, 426),\n    COL_TRI(420, 426, 901),\n    COL_TRI(421, 902, 422),\n    COL_TRI(421, 895, 902),\n    COL_TRI(422, 902, 903),\n    COL_TRI(422, 903, 423),\n    COL_TRI(423, 903, 418),\n    COL_TRI(427, 907, 428),\n    COL_TRI(423, 418, 898),\n    COL_TRI(424, 904, 425),\n    COL_TRI(425, 904, 417),\n    COL_TRI(425, 417, 894),\n    COL_TRI(424, 905, 904),\n    COL_TRI(426, 900, 905),\n    COL_TRI(426, 905, 424),\n    COL_TRI(427, 906, 907),\n    COL_TRI(431, 432, 912),\n    COL_TRI(428, 908, 910),\n    COL_TRI(428, 909, 908),\n    COL_TRI(429, 430, 442),\n    COL_TRI(429, 442, 890),\n    COL_TRI(430, 491, 875),\n    COL_TRI(430, 875, 911),\n    COL_TRI(432, 434, 913),\n    COL_TRI(432, 913, 912),\n    COL_TRI(431, 912, 914),\n    COL_TRI(433, 915, 431),\n    COL_TRI(433, 431, 914),\n    COL_TRI(434, 893, 913),\n    COL_TRI(434, 916, 893),\n    COL_TRI(435, 915, 433),\n    COL_TRI(435, 433, 917),\n    COL_TRI(436, 918, 917),\n    COL_TRI(437, 440, 919),\n    COL_TRI(438, 437, 920),\n    COL_TRI(437, 919, 920),\n    COL_TRI(438, 920, 921),\n    COL_TRI(439, 499, 438),\n    COL_TRI(439, 438, 921),\n    COL_TRI(443, 925, 926),\n    COL_TRI(440, 923, 919),\n    COL_TRI(440, 441, 923),\n    COL_TRI(441, 413, 881),\n    COL_TRI(441, 881, 923),\n    COL_TRI(442, 924, 444),\n    COL_TRI(442, 444, 447),\n    COL_TRI(443, 926, 927),\n    COL_TRI(444, 928, 445),\n    COL_TRI(444, 924, 928),\n    COL_TRI(445, 928, 929),\n    COL_TRI(445, 929, 446),\n    COL_TRI(446, 929, 443),\n    COL_TRI(446, 443, 927),\n    COL_TRI(447, 448, 930),\n    COL_TRI(450, 879, 933),\n    COL_TRI(448, 931, 456),\n    COL_TRI(448, 456, 930),\n    COL_TRI(447, 930, 442),\n    COL_TRI(449, 439, 880),\n    COL_TRI(449, 499, 439),\n    COL_TRI(450, 932, 879),\n    COL_TRI(453, 937, 938),\n    COL_TRI(451, 934, 918),\n    COL_TRI(451, 918, 879),\n    COL_TRI(436, 922, 918),\n    COL_TRI(452, 436, 935),\n    COL_TRI(452, 922, 436),\n    COL_TRI(453, 936, 937),\n    COL_TRI(452, 935, 939),\n    COL_TRI(452, 939, 454),\n    COL_TRI(454, 939, 940),\n    COL_TRI(454, 940, 455),\n    COL_TRI(455, 940, 937),\n    COL_TRI(455, 937, 936),\n    COL_TRI(456, 941, 457),\n    COL_TRI(456, 457, 909),\n    COL_TRI(457, 942, 943),\n    COL_TRI(457, 943, 909),\n    COL_TRI(458, 944, 480),\n    COL_TRI(458, 459, 944),\n    COL_TRI(459, 945, 944),\n    COL_TRI(459, 946, 945),\n    COL_TRI(460, 947, 948),\n    COL_TRI(460, 949, 947),\n    COL_TRI(453, 938, 950),\n    COL_TRI(453, 950, 951),\n    COL_TRI(464, 956, 419),\n    COL_TRI(461, 952, 950),\n    COL_TRI(461, 950, 899),\n    COL_TRI(419, 461, 899),\n    COL_TRI(462, 953, 463),\n    COL_TRI(463, 953, 954),\n    COL_TRI(463, 954, 955),\n    COL_TRI(462, 464, 953),\n    COL_TRI(464, 462, 956),\n    COL_TRI(468, 959, 960),\n    COL_TRI(465, 408, 482),\n    COL_TRI(465, 957, 408),\n    COL_TRI(466, 465, 482),\n    COL_TRI(466, 482, 481),\n    COL_TRI(467, 466, 481),\n    COL_TRI(467, 958, 466),\n    COL_TRI(466, 959, 468),\n    COL_TRI(466, 958, 959),\n    COL_TRI(465, 468, 470),\n    COL_TRI(468, 960, 541),\n    COL_TRI(469, 472, 470),\n    COL_TRI(470, 472, 957),\n    COL_TRI(470, 957, 465),\n    COL_TRI(469, 471, 472),\n    COL_TRI(465, 466, 468),\n    COL_TRI(474, 961, 473),\n    COL_TRI(470, 468, 541),\n    COL_TRI(470, 541, 469),\n    COL_TRI(471, 959, 472),\n    COL_TRI(472, 959, 958),\n    COL_TRI(472, 958, 957),\n    COL_TRI(471, 960, 959),\n    COL_TRI(473, 961, 943),\n    COL_TRI(473, 943, 942),\n    COL_TRI(478, 947, 949),\n    COL_TRI(474, 962, 961),\n    COL_TRI(475, 962, 474),\n    COL_TRI(475, 946, 962),\n    COL_TRI(476, 896, 963),\n    COL_TRI(476, 963, 477),\n    COL_TRI(477, 963, 964),\n    COL_TRI(477, 964, 478),\n    COL_TRI(478, 964, 947),\n    COL_TRI(479, 453, 519),\n    COL_TRI(480, 479, 519),\n    COL_TRI(479, 965, 941),\n    COL_TRI(479, 941, 450),\n    COL_TRI(480, 481, 458),\n    COL_TRI(480, 467, 481),\n    COL_TRI(481, 482, 948),\n    COL_TRI(481, 948, 459),\n    COL_TRI(483, 508, 868),\n    COL_TRI(405, 948, 966),\n    COL_TRI(405, 460, 948),\n    COL_TRI(482, 405, 966),\n    COL_TRI(482, 408, 405),\n    COL_TRI(483, 967, 876),\n    COL_TRI(483, 968, 508),\n    COL_TRI(486, 892, 972),\n    COL_TRI(484, 969, 968),\n    COL_TRI(485, 967, 970),\n    COL_TRI(485, 970, 971),\n    COL_TRI(486, 972, 487),\n    COL_TRI(487, 973, 974),\n    COL_TRI(487, 972, 973),\n    COL_TRI(488, 891, 489),\n    COL_TRI(489, 891, 93),\n    COL_TRI(489, 93, 887),\n    COL_TRI(490, 887, 9),\n    COL_TRI(488, 886, 891),\n    COL_TRI(490, 104, 892),\n    COL_TRI(490, 892, 486),\n    COL_TRI(409, 430, 974),\n    COL_TRI(409, 974, 973),\n    COL_TRI(491, 484, 968),\n    COL_TRI(491, 398, 484),\n    COL_TRI(492, 976, 977),\n    COL_TRI(492, 925, 976),\n    COL_TRI(493, 403, 868),\n    COL_TRI(495, 441, 494),\n    COL_TRI(494, 493, 868),\n    COL_TRI(494, 440, 493),\n    COL_TRI(441, 440, 494),\n    COL_TRI(398, 829, 357),\n    COL_TRI(357, 484, 398),\n    COL_TRI(398, 828, 829),\n    COL_TRI(497, 888, 409),\n    COL_TRI(491, 430, 888),\n    COL_TRI(491, 888, 494),\n    COL_TRI(496, 978, 518),\n    COL_TRI(496, 518, 890),\n    COL_TRI(416, 979, 980),\n    COL_TRI(416, 980, 884),\n    COL_TRI(441, 495, 434),\n    COL_TRI(498, 889, 497),\n    COL_TRI(498, 883, 889),\n    COL_TRI(499, 932, 447),\n    COL_TRI(499, 879, 932),\n    COL_TRI(495, 874, 873),\n    COL_TRI(495, 873, 434),\n    COL_TRI(497, 889, 888),\n    COL_TRI(441, 434, 915),\n    COL_TRI(500, 441, 915),\n    COL_TRI(500, 915, 934),\n    COL_TRI(500, 934, 451),\n    COL_TRI(490, 9, 11),\n    COL_TRI(502, 982, 730),\n    COL_TRI(8, 10, 93),\n    COL_TRI(8, 93, 104),\n    COL_TRI(501, 224, 228),\n    COL_TRI(501, 502, 224),\n    COL_TRI(228, 503, 981),\n    COL_TRI(228, 981, 501),\n    COL_TRI(504, 982, 502),\n    COL_TRI(503, 730, 982),\n    COL_TRI(502, 730, 224),\n    COL_TRI(503, 982, 981),\n    COL_TRI(501, 983, 513),\n    COL_TRI(501, 981, 983),\n    COL_TRI(502, 501, 513),\n    COL_TRI(502, 513, 984),\n    COL_TRI(504, 502, 984),\n    COL_TRI(506, 988, 987),\n    COL_TRI(491, 985, 986),\n    COL_TRI(491, 986, 398),\n    COL_TRI(484, 975, 969),\n    COL_TRI(505, 504, 984),\n    COL_TRI(506, 987, 505),\n    COL_TRI(505, 987, 504),\n    COL_TRI(509, 992, 494),\n    COL_TRI(485, 988, 506),\n    COL_TRI(485, 989, 988),\n    COL_TRI(507, 510, 990),\n    COL_TRI(507, 862, 865),\n    COL_TRI(507, 991, 862),\n    COL_TRI(507, 990, 991),\n    COL_TRI(508, 511, 509),\n    COL_TRI(508, 509, 494),\n    COL_TRI(512, 991, 990),\n    COL_TRI(508, 512, 511),\n    COL_TRI(510, 507, 992),\n    COL_TRI(510, 992, 509),\n    COL_TRI(511, 510, 509),\n    COL_TRI(511, 990, 510),\n    COL_TRI(511, 512, 990),\n    COL_TRI(518, 994, 517),\n    COL_TRI(513, 983, 515),\n    COL_TRI(513, 515, 514),\n    COL_TRI(514, 515, 976),\n    COL_TRI(515, 977, 976),\n    COL_TRI(516, 980, 979),\n    COL_TRI(516, 993, 980),\n    COL_TRI(517, 993, 516),\n    COL_TRI(517, 994, 993),\n    COL_TRI(520, 997, 995),\n    COL_TRI(518, 978, 994),\n    COL_TRI(519, 419, 405),\n    COL_TRI(419, 956, 405),\n    COL_TRI(483, 868, 970),\n    COL_TRI(483, 970, 967),\n    COL_TRI(520, 995, 996),\n    COL_TRI(525, 523, 529),\n    COL_TRI(522, 996, 995),\n    COL_TRI(522, 995, 546),\n    COL_TRI(521, 997, 520),\n    COL_TRI(521, 520, 998),\n    COL_TRI(523, 999, 1000),\n    COL_TRI(523, 1000, 529),\n    COL_TRI(524, 999, 523),\n    COL_TRI(524, 523, 525),\n    COL_TRI(532, 526, 527),\n    COL_TRI(526, 524, 525),\n    COL_TRI(527, 526, 525),\n    COL_TRI(527, 525, 529),\n    COL_TRI(528, 529, 530),\n    COL_TRI(529, 1000, 653),\n    COL_TRI(529, 653, 652),\n    COL_TRI(530, 529, 652),\n    COL_TRI(528, 527, 529),\n    COL_TRI(531, 532, 527),\n    COL_TRI(531, 527, 528),\n    COL_TRI(534, 1007, 537),\n    COL_TRI(533, 536, 1003),\n    COL_TRI(534, 533, 1003),\n    COL_TRI(535, 1004, 533),\n    COL_TRI(534, 535, 533),\n    COL_TRI(533, 1004, 536),\n    COL_TRI(535, 1005, 1004),\n    COL_TRI(536, 615, 1006),\n    COL_TRI(536, 1006, 1003),\n    COL_TRI(537, 1005, 535),\n    COL_TRI(534, 537, 535),\n    COL_TRI(37, 538, 1008),\n    COL_TRI(538, 539, 1008),\n    COL_TRI(539, 1009, 540),\n    COL_TRI(539, 540, 1008),\n    COL_TRI(38, 1008, 540),\n    COL_TRI(38, 37, 1008),\n    COL_TRI(38, 540, 543),\n    COL_TRI(540, 1009, 543),\n    COL_TRI(469, 541, 1010),\n    COL_TRI(541, 1002, 1010),\n    COL_TRI(541, 526, 1002),\n    COL_TRI(541, 960, 526),\n    COL_TRI(239, 233, 543),\n    COL_TRI(469, 1010, 1001),\n    COL_TRI(469, 1001, 653),\n    COL_TRI(469, 653, 1000),\n    COL_TRI(471, 469, 1000),\n    COL_TRI(521, 998, 542),\n    COL_TRI(521, 542, 1011),\n    COL_TRI(542, 544, 545),\n    COL_TRI(542, 545, 1011),\n    COL_TRI(522, 562, 1013),\n    COL_TRI(543, 233, 544),\n    COL_TRI(544, 233, 232),\n    COL_TRI(544, 232, 545),\n    COL_TRI(545, 232, 538),\n    COL_TRI(538, 232, 237),\n    COL_TRI(522, 546, 562),\n    COL_TRI(546, 39, 1012),\n    COL_TRI(546, 1012, 562),\n    COL_TRI(26, 25, 1018),\n    COL_TRI(547, 35, 522),\n    COL_TRI(547, 522, 1013),\n    COL_TRI(548, 1014, 592),\n    COL_TRI(548, 592, 1015),\n    COL_TRI(30, 1016, 1017),\n    COL_TRI(30, 31, 1016),\n    COL_TRI(552, 1025, 1024),\n    COL_TRI(26, 1018, 1019),\n    COL_TRI(549, 1020, 618),\n    COL_TRI(549, 618, 1021),\n    COL_TRI(550, 608, 1022),\n    COL_TRI(550, 1023, 608),\n    COL_TRI(551, 552, 1024),\n    COL_TRI(551, 1024, 1018),\n    COL_TRI(553, 554, 1026),\n    COL_TRI(553, 560, 554),\n    COL_TRI(554, 555, 612),\n    COL_TRI(554, 612, 1026),\n    COL_TRI(555, 1027, 612),\n    COL_TRI(555, 559, 1027),\n    COL_TRI(534, 556, 1007),\n    COL_TRI(559, 187, 560),\n    COL_TRI(556, 534, 1028),\n    COL_TRI(556, 1028, 619),\n    COL_TRI(557, 1003, 1006),\n    COL_TRI(558, 1029, 1030),\n    COL_TRI(558, 1030, 1031),\n    COL_TRI(559, 192, 187),\n    COL_TRI(561, 1032, 557),\n    COL_TRI(554, 191, 695),\n    COL_TRI(554, 695, 555),\n    COL_TRI(560, 187, 191),\n    COL_TRI(560, 191, 554),\n    COL_TRI(192, 559, 555),\n    COL_TRI(192, 555, 695),\n    COL_TRI(563, 565, 1035),\n    COL_TRI(557, 1032, 1003),\n    COL_TRI(561, 1034, 1032),\n    COL_TRI(562, 1034, 561),\n    COL_TRI(562, 1012, 1034),\n    COL_TRI(558, 1031, 547),\n    COL_TRI(563, 558, 547),\n    COL_TRI(563, 547, 565),\n    COL_TRI(564, 563, 1035),\n    COL_TRI(567, 569, 570),\n    COL_TRI(565, 1036, 1035),\n    COL_TRI(564, 1035, 1037),\n    COL_TRI(566, 622, 567),\n    COL_TRI(566, 565, 622),\n    COL_TRI(567, 570, 566),\n    COL_TRI(566, 1038, 565),\n    COL_TRI(568, 1038, 566),\n    COL_TRI(567, 1036, 569),\n    COL_TRI(568, 1039, 1038),\n    COL_TRI(569, 1038, 1039),\n    COL_TRI(570, 569, 572),\n    COL_TRI(570, 572, 573),\n    COL_TRI(569, 1039, 572),\n    COL_TRI(571, 1040, 1039),\n    COL_TRI(571, 1039, 568),\n    COL_TRI(572, 1039, 1040),\n    COL_TRI(572, 1040, 1041),\n    COL_TRI(573, 572, 1041),\n    COL_TRI(573, 1041, 574),\n    COL_TRI(574, 568, 573),\n    COL_TRI(573, 568, 566),\n    COL_TRI(573, 566, 570),\n    COL_TRI(574, 571, 568),\n    COL_TRI(522, 38, 542),\n    COL_TRI(38, 544, 542),\n    COL_TRI(522, 35, 38),\n    COL_TRI(575, 622, 1013),\n    COL_TRI(545, 37, 1011),\n    COL_TRI(37, 546, 1011),\n    COL_TRI(37, 39, 546),\n    COL_TRI(37, 545, 538),\n    COL_TRI(38, 543, 544),\n    COL_TRI(575, 567, 622),\n    COL_TRI(582, 627, 579),\n    COL_TRI(576, 1042, 1043),\n    COL_TRI(576, 1044, 1042),\n    COL_TRI(577, 629, 580),\n    COL_TRI(578, 577, 580),\n    COL_TRI(578, 580, 581),\n    COL_TRI(579, 578, 581),\n    COL_TRI(580, 582, 581),\n    COL_TRI(581, 582, 579),\n    COL_TRI(579, 627, 624),\n    COL_TRI(579, 624, 607),\n    COL_TRI(583, 655, 1045),\n    COL_TRI(583, 1045, 1046),\n    COL_TRI(584, 1047, 661),\n    COL_TRI(584, 586, 1047),\n    COL_TRI(585, 662, 1048),\n    COL_TRI(585, 1048, 1049),\n    COL_TRI(584, 1049, 586),\n    COL_TRI(586, 1049, 1048),\n    COL_TRI(587, 657, 1050),\n    COL_TRI(587, 1050, 1051),\n    COL_TRI(588, 1052, 658),\n    COL_TRI(588, 590, 1052),\n    COL_TRI(589, 656, 1053),\n    COL_TRI(589, 1053, 1054),\n    COL_TRI(588, 1054, 590),\n    COL_TRI(590, 1054, 1053),\n    COL_TRI(591, 1055, 592),\n    COL_TRI(592, 1055, 1015),\n    COL_TRI(593, 1056, 1055),\n    COL_TRI(593, 1055, 591),\n    COL_TRI(594, 1057, 593),\n    COL_TRI(593, 1057, 1056),\n    COL_TRI(595, 1057, 594),\n    COL_TRI(595, 1058, 1057),\n    COL_TRI(596, 1059, 595),\n    COL_TRI(595, 1059, 1058),\n    COL_TRI(597, 1060, 1059),\n    COL_TRI(597, 1059, 596),\n    COL_TRI(603, 1065, 602),\n    COL_TRI(598, 1060, 597),\n    COL_TRI(598, 1061, 1060),\n    COL_TRI(599, 1061, 598),\n    COL_TRI(599, 1062, 1061),\n    COL_TRI(599, 1063, 1062),\n    COL_TRI(600, 1063, 599),\n    COL_TRI(601, 1064, 1063),\n    COL_TRI(601, 1063, 600),\n    COL_TRI(602, 1064, 601),\n    COL_TRI(602, 1065, 1064),\n    COL_TRI(578, 607, 1069),\n    COL_TRI(603, 1066, 1065),\n    COL_TRI(604, 1067, 603),\n    COL_TRI(603, 1067, 1066),\n    COL_TRI(605, 1067, 604),\n    COL_TRI(605, 1068, 1067),\n    COL_TRI(578, 1069, 606),\n    COL_TRI(606, 1069, 549),\n    COL_TRI(606, 549, 1021),\n    COL_TRI(610, 1071, 537),\n    COL_TRI(607, 623, 625),\n    COL_TRI(607, 624, 623),\n    COL_TRI(608, 1070, 609),\n    COL_TRI(609, 1070, 625),\n    COL_TRI(609, 625, 577),\n    COL_TRI(608, 1023, 1070),\n    COL_TRI(610, 537, 1007),\n    COL_TRI(611, 1071, 610),\n    COL_TRI(615, 536, 1074),\n    COL_TRI(611, 1072, 1071),\n    COL_TRI(612, 1072, 611),\n    COL_TRI(612, 1027, 1072),\n    COL_TRI(613, 1073, 614),\n    COL_TRI(614, 1073, 553),\n    COL_TRI(614, 553, 1026),\n    COL_TRI(613, 1074, 1073),\n    COL_TRI(615, 1074, 613),\n    COL_TRI(620, 1033, 1079),\n    COL_TRI(616, 1075, 617),\n    COL_TRI(617, 1075, 621),\n    COL_TRI(617, 621, 1076),\n    COL_TRI(616, 1077, 1075),\n    COL_TRI(618, 1077, 616),\n    COL_TRI(618, 1078, 1077),\n    COL_TRI(619, 1028, 1033),\n    COL_TRI(619, 1033, 620),\n    COL_TRI(622, 547, 1013),\n    COL_TRI(620, 1079, 1022),\n    COL_TRI(621, 1035, 575),\n    COL_TRI(621, 575, 1076),\n    COL_TRI(575, 1035, 1036),\n    COL_TRI(575, 1036, 567),\n    COL_TRI(622, 565, 547),\n    COL_TRI(625, 628, 629),\n    COL_TRI(33, 1025, 34),\n    COL_TRI(30, 1080, 33),\n    COL_TRI(33, 1080, 1025),\n    COL_TRI(30, 1017, 1080),\n    COL_TRI(623, 633, 634),\n    COL_TRI(623, 634, 628),\n    COL_TRI(624, 633, 623),\n    COL_TRI(625, 623, 628),\n    COL_TRI(626, 632, 624),\n    COL_TRI(627, 626, 624),\n    COL_TRI(624, 632, 633),\n    COL_TRI(628, 634, 635),\n    COL_TRI(628, 635, 630),\n    COL_TRI(629, 628, 630),\n    COL_TRI(629, 630, 580),\n    COL_TRI(630, 635, 631),\n    COL_TRI(630, 631, 582),\n    COL_TRI(580, 630, 582),\n    COL_TRI(582, 631, 627),\n    COL_TRI(631, 626, 627),\n    COL_TRI(632, 636, 633),\n    COL_TRI(633, 639, 634),\n    COL_TRI(633, 636, 639),\n    COL_TRI(626, 637, 632),\n    COL_TRI(632, 637, 636),\n    COL_TRI(634, 639, 641),\n    COL_TRI(634, 641, 635),\n    COL_TRI(635, 641, 642),\n    COL_TRI(635, 642, 631),\n    COL_TRI(631, 638, 626),\n    COL_TRI(631, 642, 638),\n    COL_TRI(626, 638, 637),\n    COL_TRI(636, 643, 640),\n    COL_TRI(636, 640, 639),\n    COL_TRI(637, 643, 636),\n    COL_TRI(639, 640, 641),\n    COL_TRI(644, 528, 530),\n    COL_TRI(637, 644, 643),\n    COL_TRI(638, 644, 637),\n    COL_TRI(640, 646, 641),\n    COL_TRI(641, 646, 647),\n    COL_TRI(641, 647, 642),\n    COL_TRI(642, 647, 645),\n    COL_TRI(642, 645, 638),\n    COL_TRI(638, 645, 644),\n    COL_TRI(643, 530, 648),\n    COL_TRI(643, 648, 640),\n    COL_TRI(644, 530, 643),\n    COL_TRI(645, 528, 644),\n    COL_TRI(650, 651, 531),\n    COL_TRI(640, 648, 649),\n    COL_TRI(640, 649, 646),\n    COL_TRI(646, 650, 647),\n    COL_TRI(646, 649, 650),\n    COL_TRI(647, 650, 531),\n    COL_TRI(647, 531, 645),\n    COL_TRI(645, 531, 528),\n    COL_TRI(530, 652, 648),\n    COL_TRI(648, 652, 654),\n    COL_TRI(648, 654, 649),\n    COL_TRI(649, 654, 651),\n    COL_TRI(649, 651, 650),\n    COL_TRI(651, 532, 531),\n    COL_TRI(652, 653, 654),\n    COL_TRI(653, 1001, 654),\n    COL_TRI(654, 1001, 1010),\n    COL_TRI(654, 1010, 651),\n    COL_TRI(651, 1002, 532),\n    COL_TRI(651, 1010, 1002),\n    COL_TRI(532, 1002, 526),\n    COL_TRI(655, 583, 1081),\n    COL_TRI(655, 1081, 659),\n    COL_TRI(590, 656, 657),\n    COL_TRI(656, 1082, 657),\n    COL_TRI(657, 660, 1052),\n    COL_TRI(657, 1083, 660),\n    COL_TRI(657, 587, 1083),\n    COL_TRI(658, 1083, 587),\n    COL_TRI(587, 1084, 589),\n    COL_TRI(658, 587, 589),\n    COL_TRI(659, 1081, 661),\n    COL_TRI(659, 661, 1047),\n    COL_TRI(661, 1081, 583),\n    COL_TRI(660, 1083, 658),\n    COL_TRI(660, 658, 1052),\n    COL_TRI(589, 588, 658),\n    COL_TRI(589, 1054, 588),\n    COL_TRI(661, 583, 585),\n    COL_TRI(585, 584, 661),\n    COL_TRI(590, 1053, 656),\n    COL_TRI(583, 1085, 585),\n    COL_TRI(585, 1049, 584),\n    COL_TRI(586, 1048, 662),\n    COL_TRI(586, 662, 655),\n    COL_TRI(662, 1086, 655),\n    COL_TRI(655, 659, 1047),\n    COL_TRI(663, 1087, 664),\n    COL_TRI(664, 1087, 666),\n    COL_TRI(664, 666, 665),\n    COL_TRI(665, 666, 669),\n    COL_TRI(574, 666, 1088),\n    COL_TRI(666, 1087, 1088),\n    COL_TRI(574, 1041, 666),\n    COL_TRI(665, 669, 670),\n    COL_TRI(663, 1088, 1087),\n    COL_TRI(667, 1088, 663),\n    COL_TRI(667, 1089, 1088),\n    COL_TRI(571, 574, 1088),\n    COL_TRI(571, 1088, 1089),\n    COL_TRI(669, 571, 1089),\n    COL_TRI(668, 1089, 667),\n    COL_TRI(668, 1090, 1089),\n    COL_TRI(669, 1089, 1090),\n    COL_TRI(669, 1090, 668),\n    COL_TRI(670, 669, 668),\n    COL_TRI(669, 1040, 571),\n    COL_TRI_INIT(SURFACE_FLOWING_WATER, 2),\n    COL_TRI_SPECIAL(78, 79, 80, 0xC0),\n    COL_TRI_SPECIAL(78, 81, 79, 0xC0),\n    COL_TRI_INIT(SURFACE_VERY_SLIPPERY, 16),\n    COL_TRI(28, 29, 30),\n    COL_TRI(16, 17, 18),\n    COL_TRI(19, 16, 18),\n    COL_TRI(16, 20, 17),\n    COL_TRI(19, 18, 21),\n    COL_TRI(19, 22, 23),\n    COL_TRI(19, 21, 22),\n    COL_TRI(24, 25, 26),\n    COL_TRI(24, 26, 27),\n    COL_TRI(35, 39, 37),\n    COL_TRI(29, 31, 30),\n    COL_TRI(29, 32, 31),\n    COL_TRI(28, 30, 33),\n    COL_TRI(34, 28, 33),\n    COL_TRI(34, 36, 28),\n    COL_TRI(35, 37, 38),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 24),\n    COL_TRI(58, 60, 63),\n    COL_TRI(56, 57, 58),\n    COL_TRI(56, 58, 59),\n    COL_TRI(60, 61, 62),\n    COL_TRI(60, 62, 63),\n    COL_TRI(62, 56, 59),\n    COL_TRI(62, 61, 56),\n    COL_TRI(64, 71, 69),\n    COL_TRI(58, 57, 60),\n    COL_TRI(44, 56, 61),\n    COL_TRI(44, 46, 56),\n    COL_TRI(60, 42, 44),\n    COL_TRI(60, 44, 61),\n    COL_TRI(40, 57, 56),\n    COL_TRI(40, 56, 46),\n    COL_TRI(60, 57, 40),\n    COL_TRI(60, 40, 42),\n    COL_TRI(64, 69, 70),\n    COL_TRI(65, 72, 73),\n    COL_TRI(65, 73, 74),\n    COL_TRI(66, 75, 76),\n    COL_TRI(67, 77, 66),\n    COL_TRI(66, 77, 75),\n    COL_TRI(68, 77, 67),\n    COL_TRI_INIT(SURFACE_WALL_MISC, 24),\n    COL_TRI(5, 48, 4),\n    COL_TRI(40, 41, 42),\n    COL_TRI(42, 43, 44),\n    COL_TRI(42, 41, 43),\n    COL_TRI(44, 43, 45),\n    COL_TRI(44, 45, 46),\n    COL_TRI(40, 47, 41),\n    COL_TRI(46, 45, 47),\n    COL_TRI(46, 47, 40),\n    COL_TRI(4, 48, 49),\n    COL_TRI(4, 49, 0),\n    COL_TRI(1, 54, 7),\n    COL_TRI(0, 49, 50),\n    COL_TRI(0, 50, 3),\n    COL_TRI(5, 51, 48),\n    COL_TRI(3, 50, 52),\n    COL_TRI(3, 52, 2),\n    COL_TRI(2, 52, 53),\n    COL_TRI(2, 53, 1),\n    COL_TRI(1, 53, 54),\n    COL_TRI(7, 54, 55),\n    COL_TRI(7, 55, 6),\n    COL_TRI(6, 55, 51),\n    COL_TRI(6, 51, 5),\n    COL_TRI_INIT(SURFACE_CAMERA_BOUNDARY, 10),\n    COL_TRI(12, 13, 14),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(0, 4, 5),\n    COL_TRI(0, 5, 6),\n    COL_TRI(0, 6, 7),\n    COL_TRI(0, 7, 1),\n    COL_TRI(8, 9, 10),\n    COL_TRI(8, 11, 9),\n    COL_TRI(12, 15, 13),\n    COL_TRI_INIT(SURFACE_NO_CAM_COLLISION, 14),\n    COL_TRI(32, 29, 87),\n    COL_TRI(16, 19, 82),\n    COL_TRI(16, 82, 83),\n    COL_TRI(83, 20, 16),\n    COL_TRI(19, 84, 82),\n    COL_TRI(83, 85, 20),\n    COL_TRI(19, 23, 84),\n    COL_TRI(29, 28, 86),\n    COL_TRI(29, 86, 87),\n    COL_TRI(24, 27, 90),\n    COL_TRI(32, 87, 88),\n    COL_TRI(28, 36, 89),\n    COL_TRI(28, 89, 86),\n    COL_TRI(24, 90, 91),\n    COL_TRI_INIT(SURFACE_PAINTING_WOBBLE_B2, 2),\n    COL_TRI(92, 93, 94),\n    COL_TRI(92, 94, 95),\n    COL_TRI_INIT(SURFACE_PAINTING_WOBBLE_B3, 2),\n    COL_TRI(100, 92, 95),\n    COL_TRI(100, 95, 101),\n    COL_TRI_INIT(SURFACE_PAINTING_WOBBLE_B4, 2),\n    COL_TRI(104, 101, 105),\n    COL_TRI(104, 100, 101),\n    COL_TRI_INIT(SURFACE_PAINTING_WOBBLE_B5, 2),\n    COL_TRI(112, 113, 114),\n    COL_TRI(112, 114, 115),\n    COL_TRI_INIT(SURFACE_PAINTING_WOBBLE_B6, 2),\n    COL_TRI(113, 120, 121),\n    COL_TRI(113, 121, 114),\n    COL_TRI_INIT(SURFACE_PAINTING_WOBBLE_B7, 2),\n    COL_TRI(120, 138, 139),\n    COL_TRI(120, 139, 121),\n    COL_TRI_INIT(SURFACE_PAINTING_WOBBLE_BB, 18),\n    COL_TRI(124, 125, 126),\n    COL_TRI(127, 124, 126),\n    COL_TRI(126, 125, 128),\n    COL_TRI(126, 128, 129),\n    COL_TRI(127, 126, 130),\n    COL_TRI(126, 129, 130),\n    COL_TRI(127, 130, 131),\n    COL_TRI(129, 131, 130),\n    COL_TRI(132, 59, 133),\n    COL_TRI(132, 62, 59),\n    COL_TRI(63, 62, 132),\n    COL_TRI(63, 132, 134),\n    COL_TRI(133, 59, 58),\n    COL_TRI(133, 58, 135),\n    COL_TRI(58, 63, 134),\n    COL_TRI(58, 134, 135),\n    COL_TRI(124, 127, 136),\n    COL_TRI(124, 136, 137),\n    COL_TRI_INIT(SURFACE_PAINTING_WOBBLE_D0, 2),\n    COL_TRI(108, 109, 110),\n    COL_TRI(108, 110, 111),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_DF, 2),\n    COL_TRI(96, 97, 98),\n    COL_TRI(96, 99, 97),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_E0, 2),\n    COL_TRI(99, 102, 97),\n    COL_TRI(99, 103, 102),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_E1, 2),\n    COL_TRI(103, 106, 102),\n    COL_TRI(103, 107, 106),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_E2, 2),\n    COL_TRI(116, 117, 118),\n    COL_TRI(116, 119, 117),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_E3, 2),\n    COL_TRI(122, 116, 118),\n    COL_TRI(122, 118, 123),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_E4, 2),\n    COL_TRI(140, 122, 123),\n    COL_TRI(140, 123, 141),\n    COL_TRI_INIT(SURFACE_WOBBLING_WARP, 6),\n    COL_TRI(49, 51, 55),\n    COL_TRI(49, 48, 51),\n    COL_TRI(49, 55, 54),\n    COL_TRI(49, 54, 53),\n    COL_TRI(49, 53, 52),\n    COL_TRI(49, 52, 50),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(5),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_wooden_door,     /*pos*/ -3097, -1279,  1434, /*yaw*/   0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_wooden_door,     /*pos*/  -332,  -767,   205, /*yaw*/   0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_wooden_door,     /*pos*/   717, -1177,  -869, /*yaw*/ 192),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_0stars_door,     /*pos*/  1126, -1074, -2661, /*yaw*/ 192),\n    SPECIAL_OBJECT_WITH_YAW_AND_PARAM(/*preset*/ special_metal_door_warp, /*pos*/  7885, -1586,  -511, /*yaw*/ 192, /*bhvParam2*/ 2),\n    COL_WATER_BOX_INIT(3),\n    COL_WATER_BOX(1, 973, -1279, 5786, 256, -1228),\n    COL_WATER_BOX(0, -3225, -4146, 870, -255, -1228),\n    COL_WATER_BOX(2, 5786, -1330, 8038, 410, -1228),\n    COL_END(),\n};\n\n// 0x070775B4 - 0x0707768C\nconst Collision inside_castle_seg7_collision_ddd_warp[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x12),\n    COL_VERTEX(3866, -1074, 1587),\n    COL_VERTEX(3487, -1074, 1864),\n    COL_VERTEX(3866, -1074, 1864),\n    COL_VERTEX(3487, -1074, 1587),\n    COL_VERTEX(3487, -1074, 2135),\n    COL_VERTEX(3866, -1074, 2135),\n    COL_VERTEX(3487, -1074, 2406),\n    COL_VERTEX(3866, -1074, 2406),\n    COL_VERTEX(5939, -1074, 1587),\n    COL_VERTEX(5530, -1074, 1587),\n    COL_VERTEX(5530, -1074, 1864),\n    COL_VERTEX(5939, -1074, 1864),\n    COL_VERTEX(5530, -1074, 2135),\n    COL_VERTEX(5939, -1074, 2135),\n    COL_VERTEX(5530, -1074, 2406),\n    COL_VERTEX(5939, -1074, 2406),\n    COL_VERTEX(3456, -1074, 1587),\n    COL_VERTEX(3456, -1074, 2406),\n    COL_TRI_INIT(SURFACE_DEFAULT, 8),\n    COL_TRI(3, 16, 17),\n    COL_TRI(3, 17, 6),\n    COL_TRI(8, 9, 10),\n    COL_TRI(8, 10, 11),\n    COL_TRI(11, 10, 12),\n    COL_TRI(11, 12, 13),\n    COL_TRI(13, 12, 14),\n    COL_TRI(13, 14, 15),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_E8, 2),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_E9, 2),\n    COL_TRI(2, 1, 4),\n    COL_TRI(2, 4, 5),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_EA, 2),\n    COL_TRI(5, 6, 7),\n    COL_TRI(5, 4, 6),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n\n// 0x0707768C - 0x07077764\nconst Collision inside_castle_seg7_collision_ddd_warp_2[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x12),\n    COL_VERTEX(5939, -1074, 1587),\n    COL_VERTEX(5560, -1074, 1864),\n    COL_VERTEX(5939, -1074, 1864),\n    COL_VERTEX(5560, -1074, 1587),\n    COL_VERTEX(5560, -1074, 2135),\n    COL_VERTEX(5939, -1074, 2135),\n    COL_VERTEX(5560, -1074, 2406),\n    COL_VERTEX(5939, -1074, 2406),\n    COL_VERTEX(5530, -1074, 1587),\n    COL_VERTEX(5530, -1074, 2406),\n    COL_VERTEX(3866, -1074, 1864),\n    COL_VERTEX(3456, -1074, 2135),\n    COL_VERTEX(3866, -1074, 2135),\n    COL_VERTEX(3456, -1074, 2406),\n    COL_VERTEX(3866, -1074, 2406),\n    COL_VERTEX(3456, -1074, 1864),\n    COL_VERTEX(3866, -1074, 1587),\n    COL_VERTEX(3456, -1074, 1587),\n    COL_TRI_INIT(SURFACE_DEFAULT, 8),\n    COL_TRI(8, 9, 6),\n    COL_TRI(8, 6, 3),\n    COL_TRI(10, 11, 12),\n    COL_TRI(12, 13, 14),\n    COL_TRI(12, 11, 13),\n    COL_TRI(10, 15, 11),\n    COL_TRI(16, 15, 10),\n    COL_TRI(16, 17, 15),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_E8, 2),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_E9, 2),\n    COL_TRI(2, 4, 5),\n    COL_TRI(2, 1, 4),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_EA, 2),\n    COL_TRI(5, 4, 6),\n    COL_TRI(5, 6, 7),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/3/geo.inc.c",
    "content": "// 0x0E001958\nconst GeoLayout castle_geo_001958[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0705E088),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_0705E2A0),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_0705E450),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E001980\nconst GeoLayout castle_geo_001980[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_070616E8),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_07061C20),\n        GEO_ASM(   0, geo_painting_update),\n        GEO_ASM( PAINTING_ID(4, 1), geo_painting_draw),\n        GEO_ASM( PAINTING_ID(5, 1), geo_painting_draw),\n        GEO_ASM(   0, geo_movtex_pause_control),\n        GEO_ASM(0x0600, geo_movtex_draw_water_regions),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E0019C8\nconst GeoLayout castle_geo_0019C8[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07064B78),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07064D58),\n        GEO_ASM(0, geo_painting_update),\n        GEO_ASM(PAINTING_ID(6, 1), geo_painting_draw),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E0019F8\nconst GeoLayout castle_geo_0019F8[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07066CE0),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_07066E90),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07066FA0),\n        GEO_ASM(   0, geo_movtex_pause_control),\n        GEO_ASM(0x0612, geo_movtex_draw_water_regions),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E001A30\nconst GeoLayout castle_geo_001A30[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07068850),\n        GEO_ASM(  0, geo_painting_update),\n        GEO_ASM(PAINTING_ID(7, 1), geo_painting_draw),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E001A58\nconst GeoLayout castle_geo_001A58[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0705E088),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_0705E2A0),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_0705E450),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_070616E8),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_07061C20),\n        GEO_ASM(   0, geo_painting_update),\n        GEO_ASM( PAINTING_ID(4, 1), geo_painting_draw),\n        GEO_ASM( PAINTING_ID(5, 1), geo_painting_draw),\n        GEO_ASM(   0, geo_movtex_pause_control),\n        GEO_ASM(0x0600, geo_movtex_draw_water_regions),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E001AB8\nconst GeoLayout castle_geo_001AB8[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0705E088),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_0705E2A0),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_0705E450),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07068850),\n        GEO_ASM(  0, geo_painting_update),\n        GEO_ASM(PAINTING_ID(7, 1), geo_painting_draw),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E001AF8\nconst GeoLayout castle_geo_001AF8[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0705E088),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_0705E2A0),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_0705E450),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07066CE0),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_07066E90),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07066FA0),\n        GEO_ASM(   0, geo_movtex_pause_control),\n        GEO_ASM(0x0612, geo_movtex_draw_water_regions),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E001B48\nconst GeoLayout castle_geo_001B48[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_070616E8),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_07061C20),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07066CE0),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_07066E90),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07066FA0),\n        GEO_ASM(   0, geo_painting_update),\n        GEO_ASM( PAINTING_ID(4, 1), geo_painting_draw),\n        GEO_ASM( PAINTING_ID(5, 1), geo_painting_draw),\n        GEO_ASM(   0, geo_movtex_pause_control),\n        GEO_ASM(0x0600, geo_movtex_draw_water_regions),\n        GEO_ASM(0x0612, geo_movtex_draw_water_regions),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E001BB0\nconst GeoLayout castle_geo_001BB0[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_070616E8),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_07061C20),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07064B78),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07064D58),\n        GEO_ASM(   0, geo_painting_update),\n        GEO_ASM( PAINTING_ID(4, 1), geo_painting_draw),\n        GEO_ASM( PAINTING_ID(5, 1), geo_painting_draw),\n        GEO_ASM( PAINTING_ID(6, 1), geo_painting_draw),\n        GEO_ASM(   0, geo_movtex_pause_control),\n        GEO_ASM(0x0600, geo_movtex_draw_water_regions),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E001C10\nconst GeoLayout castle_geo_001C10[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND_COLOR(0x0001),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(64, 50, 6400, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(4, 0, 2000, 6000, 0, 0, 0, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_SWITCH_CASE(10, geo_switch_area),\n                    GEO_OPEN_NODE(),\n                        GEO_BRANCH(1, castle_geo_001958), // 0x0E001958\n                        GEO_BRANCH(1, castle_geo_001980), // 0x0E001980\n                        GEO_BRANCH(1, castle_geo_0019C8), // 0x0E0019C8\n                        GEO_BRANCH(1, castle_geo_0019F8), // 0x0E0019F8\n                        GEO_BRANCH(1, castle_geo_001A30), // 0x0E001A30\n                        GEO_BRANCH(1, castle_geo_001A58), // 0x0E001A58\n                        GEO_BRANCH(1, castle_geo_001AB8), // 0x0E001AB8\n                        GEO_BRANCH(1, castle_geo_001AF8), // 0x0E001AF8\n                        GEO_BRANCH(1, castle_geo_001B48), // 0x0E001B48\n                        GEO_BRANCH(1, castle_geo_001BB0), // 0x0E001BB0\n                    GEO_CLOSE_NODE(),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(0, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/3/macro.inc.c",
    "content": "// 0x070777EC - 0x0707782A\nconst MacroObject inside_castle_seg7_area_3_macro_objs[] = {\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_sign_on_wall,       /*yaw*/   0, /*pos*/  6400, -1178, -1270, /*bhvParam*/ DIALOG_077),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger, /*yaw*/   0, /*pos*/  2130, -2508,  -946),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger, /*yaw*/   0, /*pos*/  2130, -2508,   -92),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger, /*yaw*/   0, /*pos*/  3515, -2508,  -946),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger, /*yaw*/   0, /*pos*/  3515, -2508,   -92),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_hidden_1up,         /*yaw*/   0, /*pos*/  2861, -2508,  -515, /*bhvParam*/ 4),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/3/movtext.inc.c",
    "content": "// 0x07079090 - 0x070790F0\nstatic Movtex inside_castle_movtex_green_room_water_data[] = {\n    MOV_TEX_INIT_LOAD(    1),\n    MOV_TEX_ROT_SPEED(   10),\n    MOV_TEX_ROT_SCALE(   10),\n    MOV_TEX_4_BOX_TRIS(-3225, -4146),\n    MOV_TEX_4_BOX_TRIS(-3225,  -255),\n    MOV_TEX_4_BOX_TRIS(  870,  -255),\n    MOV_TEX_4_BOX_TRIS(  870, -4146),\n    MOV_TEX_ROT(     ROTATE_COUNTER_CLOCKWISE),\n    MOV_TEX_ALPHA(    0x96),\n    MOV_TEX_DEFINE(  TEXTURE_JRB_WATER),\n    MOV_TEX_END(),\n};\n\n// 0x070790B0 - 0x070790D0\nstatic Movtex inside_castle_movtex_moat_leftover_water_data[] = {\n    MOV_TEX_INIT_LOAD(    1),\n    MOV_TEX_ROT_SPEED(    5),\n    MOV_TEX_ROT_SCALE(    7),\n    MOV_TEX_4_BOX_TRIS(  973, -1279),\n    MOV_TEX_4_BOX_TRIS(  973,   256),\n    MOV_TEX_4_BOX_TRIS( 5786,   256),\n    MOV_TEX_4_BOX_TRIS( 5786, -1279),\n    MOV_TEX_ROT(     ROTATE_COUNTER_CLOCKWISE),\n    MOV_TEX_ALPHA(    0x96),\n    MOV_TEX_DEFINE(  TEXTURE_WATER),\n    MOV_TEX_END(),\n};\n\n// 0x070790D0 - 0x07079100\nstatic Movtex inside_castle_movtex_moat_water_data[] = {\n    MOV_TEX_INIT_LOAD(    1),\n    MOV_TEX_ROT_SPEED(    3),\n    MOV_TEX_ROT_SCALE(    5),\n    MOV_TEX_4_BOX_TRIS( 5786, -1330),\n    MOV_TEX_4_BOX_TRIS( 5786,   410),\n    MOV_TEX_4_BOX_TRIS( 8038,   410),\n    MOV_TEX_4_BOX_TRIS( 8038, -1330),\n    MOV_TEX_ROT(     ROTATE_COUNTER_CLOCKWISE),\n    MOV_TEX_ALPHA(    0x96),\n    MOV_TEX_DEFINE(  TEXTURE_WATER),\n    MOV_TEX_END(),\n};\n\n// 0x070790F0 - 0x07079100\nconst struct MovtexQuadCollection inside_castle_movtex_green_room_water[] = {\n    {0, inside_castle_movtex_green_room_water_data},\n    {-1, NULL},\n};\n\n// 0x07079100 - 0x07079118\nconst struct MovtexQuadCollection inside_castle_movtex_moat_water[] = {\n    {1, inside_castle_movtex_moat_leftover_water_data},\n    {2, inside_castle_movtex_moat_water_data},\n    {-1, NULL},\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/3/room.inc.c",
    "content": "// 0x07078870 - 0x07078DE3\nconst RoomData inside_castle_seg7_area_3_rooms[] = {\n     5,  5,  5,  5,  5,  5,  5,  5, // 0-7\n     5,  5,  5,  5,  5,  5,  5,  5, // 8-15\n     5,  5,  5,  5,  5,  5,  5,  5, // 16-23\n     5,  5,  5,  5,  5,  5,  5,  5, // 24-31\n     5,  5,  5,  5,  5,  5,  5,  5, // 32-39\n     5,  5,  5,  5,  5,  5,  5,  5, // 40-47\n     5,  5,  5,  5,  5,  5,  5,  5, // 48-55\n     5,  5,  5,  5,  5,  5,  5,  5, // 56-63\n     5,  5,  5,  5,  5,  5,  5,  5, // 64-71\n     5,  5,  5,  5,  5,  5,  5,  5, // 72-79\n     5,  5,  5,  5,  5,  5,  5,  5, // 80-87\n     5,  5,  5,  5,  7,  7,  5,  5, // 88-95\n     5,  5,  5,  5,  5,  5,  5,  5, // 96-103\n     5,  5,  8,  4,  4,  4,  4,  4, // 104-111\n     8,  4,  4,  4,  4,  4,  4,  9, // 112-119\n     9,  4,  4,  4,  4,  4,  4,  4, // 120-127\n     4,  4,  4,  4,  4,  4,  4,  4, // 128-135\n     4,  4,  4,  4,  4,  4,  4,  4, // 136-143\n     4,  4,  4,  4,  4,  4,  4,  4, // 144-151\n     4,  4,  4,  4,  4,  4,  4,  4, // 152-159\n     4,  4,  4,  4,  4,  4,  4,  4, // 160-167\n     4,  4,  4,  4,  4,  4,  4,  4, // 168-175\n     4,  4,  4,  4,  4,  4,  4,  4, // 176-183\n     4,  4,  4,  4,  4,  4,  9,  4, // 184-191\n     4,  4,  4,  4,  4,  9,  4,  4, // 192-199\n     4,  4,  4,  4,  4,  1,  1,  1, // 200-207\n     4,  4,  4,  8,  1,  8,  8,  4, // 208-215\n     4,  4,  8,  1,  4,  1,  4,  4, // 216-223\n     4,  4,  4,  4,  4,  4,  4,  4, // 224-231\n     4,  4,  4,  4,  4,  4,  4,  4, // 232-239\n     4,  4,  4,  4,  4,  4,  4,  4, // 240-247\n     4,  4,  4,  4,  4,  4,  4,  4, // 248-255\n     4,  4,  4,  4,  4,  4,  4,  4, // 256-263\n     4,  4,  4,  4,  4,  4,  4,  4, // 264-271\n     4,  4,  4,  4,  4,  4,  4,  4, // 272-279\n     4,  4,  4,  4,  4,  4,  4,  4, // 280-287\n     4,  4,  4,  4,  4,  4,  4,  4, // 288-295\n     4,  4,  4,  4,  4,  4,  4,  4, // 296-303\n     4,  4,  4,  4,  4,  4,  3,  3, // 304-311\n     3,  3,  3,  3,  3,  3,  3,  3, // 312-319\n     3,  3,  3,  3,  3,  3,  3,  3, // 320-327\n     3,  3,  3,  3,  3,  3,  3,  3, // 328-335\n     3,  3,  3,  3,  3,  3,  3,  3, // 336-343\n     3,  3,  3,  3,  3,  3,  3,  3, // 344-351\n     3,  3,  3,  3,  3,  3,  3,  3, // 352-359\n     3,  3,  3,  3,  3,  3,  3,  3, // 360-367\n     3,  3,  3,  3,  3,  3,  3,  3, // 368-375\n     3,  3,  3,  3,  3,  3,  3,  3, // 376-383\n     3,  3,  3,  3,  3,  3,  3,  3, // 384-391\n     3,  3,  3,  3,  3,  3,  3,  3, // 392-399\n     3,  3,  3,  3,  3,  3,  3,  3, // 400-407\n     3,  3,  3,  3,  3,  3,  3,  3, // 408-415\n     3,  3,  3,  3,  3,  3,  3,  3, // 416-423\n     3,  3,  3,  3,  3,  3,  3,  3, // 424-431\n     3,  3,  3,  3,  3,  3,  3,  3, // 432-439\n     3,  3,  3,  3,  3,  3,  3,  3, // 440-447\n     3,  3,  3,  3,  3,  3,  3,  3, // 448-455\n     3,  3,  3,  3,  3,  3,  3,  3, // 456-463\n     3,  3,  3,  3,  3,  3,  3,  3, // 464-471\n     3,  3,  3,  3,  3,  3,  3,  3, // 472-479\n     3,  3,  3,  3,  3,  3,  3,  3, // 480-487\n     3,  3,  3,  3,  3,  3,  3,  3, // 488-495\n     3, 10,  3,  3,  3,  2,  2, 10, // 496-503\n    10, 10,  2,  3,  3,  2,  3,  3, // 504-511\n     3,  2,  2,  3,  3,  3,  3,  3, // 512-519\n     3,  3,  3,  3,  3,  3,  3,  3, // 520-527\n     3,  3,  3,  3,  3,  3,  3,  3, // 528-535\n     3,  3,  3,  3,  3,  3,  3,  3, // 536-543\n     3,  3,  3,  3,  3,  3,  3,  3, // 544-551\n     3,  3,  3,  3,  3,  3,  3,  3, // 552-559\n     3,  3,  3,  3,  3,  3,  3,  3, // 560-567\n     3,  3,  3,  3,  3,  3,  3,  3, // 568-575\n     3,  3,  3,  3,  3,  3,  2,  2, // 576-583\n     2,  2,  2,  2, 10, 10,  2,  2, // 584-591\n     2,  2,  2,  2,  2,  2,  2,  2, // 592-599\n     2,  2,  2,  2,  2,  2,  2,  9, // 600-607\n     2,  2,  9,  2,  2,  2,  2,  2, // 608-615\n     2,  2,  6,  6,  2,  2,  2,  2, // 616-623\n     2,  2,  2,  2,  2,  2,  2,  2, // 624-631\n     2,  2,  2,  2,  2,  2,  2,  2, // 632-639\n     2,  2,  2,  2,  2,  2,  2,  2, // 640-647\n     2,  2,  2,  2,  2,  2,  2,  2, // 648-655\n     2,  2,  2,  2,  2,  2,  2,  2, // 656-663\n     2,  2,  2,  2,  2,  2,  2,  2, // 664-671\n     2,  2,  2,  2,  2,  2,  2,  2, // 672-679\n     2,  2,  2,  2,  2,  2,  2,  2, // 680-687\n     2,  2,  2,  2,  2,  2,  2,  2, // 688-695\n     2,  2,  2,  2,  2,  2,  2,  2, // 696-703\n     2,  2,  2,  2,  2,  2,  2,  2, // 704-711\n     2,  2,  2,  2,  2,  2,  2,  2, // 712-719\n     2,  2,  2,  2,  2,  2,  2,  2, // 720-727\n     2,  2,  2,  2,  2,  2,  2,  2, // 728-735\n     2,  2,  2,  2,  2,  2,  2,  2, // 736-743\n     2,  2,  2,  2,  2,  2,  2,  2, // 744-751\n     2,  1,  2,  2,  2,  2,  2,  2, // 752-759\n     2,  2,  2,  1,  1,  2,  2,  1, // 760-767\n     2,  2,  1,  1,  6,  6,  6,  6, // 768-775\n     2,  2,  2,  2,  2,  2,  2,  2, // 776-783\n     2,  2,  2,  2,  2,  2,  2,  2, // 784-791\n     2,  2,  2,  2,  2,  2,  2,  2, // 792-799\n     2,  2,  2,  2,  2,  2,  2,  2, // 800-807\n     2,  2,  2,  2,  2,  2,  2,  2, // 808-815\n     2,  2,  2,  2,  2,  2,  2,  2, // 816-823\n     2,  2,  2,  2,  2,  2,  2,  2, // 824-831\n     2,  2,  2,  2,  2,  2,  2,  2, // 832-839\n     2,  2,  2,  2,  2,  2,  2,  2, // 840-847\n     2,  2,  2,  2,  2,  2,  2,  2, // 848-855\n     2,  2,  9,  2,  9,  2,  2,  2, // 856-863\n     2,  2,  2,  2,  2,  2,  2,  2, // 864-871\n     2,  2,  2,  2,  2,  2,  2,  2, // 872-879\n     2,  2,  2,  2,  2,  2,  2,  2, // 880-887\n     2,  2,  2,  2,  2,  2,  2,  2, // 888-895\n     2,  2,  1,  2,  2,  2,  2,  2, // 896-903\n     1,  1,  1,  1,  1,  1,  1,  1, // 904-911\n     6,  6,  1,  1,  1,  1,  1,  1, // 912-919\n     1,  1,  1,  1,  1,  1,  1,  1, // 920-927\n     7,  1,  1,  7,  1,  1,  1,  1, // 928-935\n     1,  1,  8,  8,  1,  1,  1,  1, // 936-943\n     1,  1,  1,  1,  1,  1,  1,  1, // 944-951\n     1,  1,  1,  1,  1,  1,  1,  1, // 952-959\n     1,  1,  1,  1,  1,  1,  1,  1, // 960-967\n     1,  1,  1,  1,  1,  1,  1,  1, // 968-975\n     1,  1,  1,  1,  1,  1,  1,  1, // 976-983\n     1,  1,  1,  1,  7,  1,  1,  1, // 984-991\n     1,  1,  7,  1,  1,  1,  1,  1, // 992-999\n     1,  1,  1,  1,  1,  1,  1,  1, // 1000-1007\n     1,  1,  1,  1,  1,  1,  1,  1, // 1008-1015\n     1,  1,  1,  1,  1,  1,  1,  1, // 1016-1023\n     1,  1,  1,  1,  1,  1,  1,  1, // 1024-1031\n     1,  1,  1,  1,  1,  1,  1,  1, // 1032-1039\n     1,  1,  1,  1,  1,  1,  1,  1, // 1040-1047\n     1,  1,  1,  1,  1,  1,  1,  1, // 1048-1055\n     1,  1,  1,  1,  1,  1,  1,  1, // 1056-1063\n     1,  1,  1,  1,  1,  1,  1,  1, // 1064-1071\n     1,  1,  1,  1,  1,  1,  1,  1, // 1072-1079\n     1,  1,  1,  1,  1,  1,  1,  1, // 1080-1087\n     1,  1,  1,  1,  1,  1,  1,  1, // 1088-1095\n     1,  1,  1,  1,  1,  1,  1,  1, // 1096-1103\n     1,  1,  1,  1,  1,  1,  1,  1, // 1104-1111\n     1,  1,  1,  1,  1,  1,  1,  1, // 1112-1119\n     1,  1,  1,  1,  1,  1,  1,  1, // 1120-1127\n     1,  1,  1,  1,  1,  1,  1,  1, // 1128-1135\n     1,  1,  1,  1,  1,  1,  1,  1, // 1136-1143\n     1,  1,  1,  1,  1,  1,  1,  1, // 1144-1151\n     1,  1,  1,  1,  1,  1,  1,  1, // 1152-1159\n     1,  1,  1,  1,  1,  1,  1,  1, // 1160-1167\n     1,  1,  1,  1,  1,  1,  1,  1, // 1168-1175\n     1,  1,  1,  1,  1,  1,  1,  1, // 1176-1183\n     1,  1,  1,  1,  1,  1,  1,  1, // 1184-1191\n     1,  1,  1,  1,  1,  1,  1,  1, // 1192-1199\n     1,  1,  1,  1,  1,  1,  1,  1, // 1200-1207\n     1,  1,  1,  1,  1,  1,  1,  1, // 1208-1215\n     1,  1,  1,  1,  1,  1,  1,  1, // 1216-1223\n     1,  1,  1,  1,  1,  1,  1,  1, // 1224-1231\n     1,  1,  1,  1,  1,  1,  1,  1, // 1232-1239\n     1,  1,  1,  1,  1,  1,  1,  1, // 1240-1247\n     1,  1,  1,  1,  1,  1,  1,  4, // 1248-1255\n     4,  1,  3,  3,  3,  3,  3,  3, // 1256-1263\n     1,  1,  1,  1,  1,  1,  1,  1, // 1264-1271\n     1,  5,  5,  5,  5,  5,  5,  5, // 1272-1279\n     4,  5,  5,  5,  5,  5,  5,  5, // 1280-1287\n     5,  5,  4,  4,  4,  4,  4,  4, // 1288-1295\n     4,  3,  5,  5,  5,  5,  5,  5, // 1296-1303\n     5,  5,  3,  3,  3,  3,  3,  3, // 1304-1311\n     3,  3,  3,  3,  3,  3,  3,  3, // 1312-1319\n     3,  2,  3,  3,  3,  3,  3,  3, // 1320-1327\n     2,  2,  2,  1,  3,  3,  3,  3, // 1328-1335\n     3,  3,  1,  1,  1,  1,  1,  1, // 1336-1343\n     1,  2,  2,  2,  2,  2,  2,  2, // 1344-1351\n     2,  2,  2,  2,  2,  5,  5,  7, // 1352-1359\n     7,  5,  7,  5,  7,  5,  5,  5, // 1360-1367\n     5,  5,  5,  5,  5,  5,  5, 10, // 1368-1375\n    10,  2,  2,  2,  2,  2,  2,  2, // 1376-1383\n     2,  2,  2,  2,  2,  3,  3,  3, // 1384-1391\n     3,  3,  3, // 1392-1394\n};\n"
  },
  {
    "path": "levels/castle_inside/areas/3/trajectory.inc.c",
    "content": "// 0x07078EF8 - 0x07078F2C\nstatic const Trajectory inside_castle_seg7_trajectory_mips_0[] = {\n    TRAJECTORY_POS(0, /*pos*/ -1831, -1177, -1178),\n    TRAJECTORY_POS(1, /*pos*/ -1810, -1177,   284),\n    TRAJECTORY_POS(2, /*pos*/ -2210, -1192,   715),\n    TRAJECTORY_POS(3, /*pos*/ -3505, -1279,   715),\n    TRAJECTORY_POS(4, /*pos*/ -3968, -1279,   -31),\n    TRAJECTORY_POS(5, /*pos*/ -4021, -1381, -1242),\n    TRAJECTORY_END(),\n};\n\n// 0x07078F2C - 0x07078F68\nstatic const Trajectory inside_castle_seg7_trajectory_mips_1[] = {\n    TRAJECTORY_POS(0, /*pos*/ -3674, -1379,  -962),\n    TRAJECTORY_POS(1, /*pos*/ -3813, -1279,   -41),\n    TRAJECTORY_POS(2, /*pos*/ -3628, -1279,   755),\n    TRAJECTORY_POS(3, /*pos*/ -2210, -1192,   715),\n    TRAJECTORY_POS(4, /*pos*/ -1810, -1177,   284),\n    TRAJECTORY_POS(5, /*pos*/ -1842, -1177, -1078),\n    TRAJECTORY_POS(6, /*pos*/ -1604, -1177, -1445),\n    TRAJECTORY_END(),\n};\n\n// 0x07078F68 - 0x07078F7C\nstatic const Trajectory inside_castle_seg7_trajectory_mips_2[] = {\n    TRAJECTORY_POS(0, /*pos*/ -1463, -1210, -2231),\n    TRAJECTORY_POS(1, /*pos*/ -1515, -1279, -3094),\n    TRAJECTORY_END(),\n};\n\n// 0x07078F7C - 0x07078FA8\nstatic const Trajectory inside_castle_seg7_trajectory_mips_3[] = {\n    TRAJECTORY_POS(0, /*pos*/ -2019, -1279, -3077),\n    TRAJECTORY_POS(1, /*pos*/ -2559, -1279, -3043),\n    TRAJECTORY_POS(2, /*pos*/ -2957, -1279, -2747),\n    TRAJECTORY_POS(3, /*pos*/ -3031, -1262, -1947),\n    TRAJECTORY_POS(4, /*pos*/ -2846, -1262, -1321),\n    TRAJECTORY_END(),\n};\n\n// 0x07078FA8 - 0x07078FD4\nstatic const Trajectory inside_castle_seg7_trajectory_mips_4[] = {\n    TRAJECTORY_POS(0, /*pos*/ -3005, -1197, -1874),\n    TRAJECTORY_POS(1, /*pos*/ -2967, -1279, -2582),\n    TRAJECTORY_POS(2, /*pos*/ -2559, -1279, -3043),\n    TRAJECTORY_POS(3, /*pos*/ -1984, -1262, -3068),\n    TRAJECTORY_POS(4, /*pos*/ -1432, -1262, -3038),\n    TRAJECTORY_END(),\n};\n\n// 0x07078FD4 - 0x07078FE8\nstatic const Trajectory inside_castle_seg7_trajectory_mips_5[] = {\n    TRAJECTORY_POS(0, /*pos*/ -1387, -1254, -2541),\n    TRAJECTORY_POS(1, /*pos*/ -1541, -1177, -1446),\n    TRAJECTORY_END(),\n};\n\n// 0x07078FE8 - 0x07079004\nstatic const Trajectory inside_castle_seg7_trajectory_mips_6[] = {\n    TRAJECTORY_POS(0, /*pos*/  -894, -1223, -1421),\n    TRAJECTORY_POS(1, /*pos*/  -306, -1279, -1601),\n    TRAJECTORY_POS(2, /*pos*/  -192, -1279, -2196),\n    TRAJECTORY_END(),\n};\n\n// 0x07079004 - 0x07079020\nstatic const Trajectory inside_castle_seg7_trajectory_mips_7[] = {\n    TRAJECTORY_POS(0, /*pos*/  -187, -1279, -1662),\n    TRAJECTORY_POS(1, /*pos*/  -805, -1238, -1406),\n    TRAJECTORY_POS(2, /*pos*/ -1549, -1177, -1446),\n    TRAJECTORY_END(),\n};\n\n// 0x07079020 - 0x07079044\nstatic const Trajectory inside_castle_seg7_trajectory_mips_8[] = {\n    TRAJECTORY_POS(0, /*pos*/ -1092, -1279, -3188),\n    TRAJECTORY_POS(1, /*pos*/  -593, -1279, -3175),\n    TRAJECTORY_POS(2, /*pos*/  -200, -1279, -2940),\n    TRAJECTORY_POS(3, /*pos*/  -216, -1279, -2139),\n    TRAJECTORY_END(),\n};\n\n// 0x07079044 - 0x07079068\nstatic const Trajectory inside_castle_seg7_trajectory_mips_9[] = {\n    TRAJECTORY_POS(0, /*pos*/  -214, -1279, -2432),\n    TRAJECTORY_POS(1, /*pos*/  -160, -1283, -2900),\n    TRAJECTORY_POS(2, /*pos*/  -640, -1283, -3220),\n    TRAJECTORY_POS(3, /*pos*/ -1469, -1279, -3108),\n    TRAJECTORY_END(),\n};\n\n// 0x07079068 - 0x07079090\nconst Trajectory *const inside_castle_seg7_trajectory_mips[] = {\n    inside_castle_seg7_trajectory_mips_0, inside_castle_seg7_trajectory_mips_1,\n    inside_castle_seg7_trajectory_mips_2, inside_castle_seg7_trajectory_mips_3,\n    inside_castle_seg7_trajectory_mips_4, inside_castle_seg7_trajectory_mips_5,\n    inside_castle_seg7_trajectory_mips_6, inside_castle_seg7_trajectory_mips_7,\n    inside_castle_seg7_trajectory_mips_8, inside_castle_seg7_trajectory_mips_9,\n};\n"
  },
  {
    "path": "levels/castle_inside/clock_hour_hand/collision.inc.c",
    "content": "// Blank File\n\n"
  },
  {
    "path": "levels/castle_inside/clock_hour_hand/geo.inc.c",
    "content": "// 0x0E001548\nconst GeoLayout castle_geo_001548[] = {\n    GEO_CULLING_RADIUS(300),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07059190),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/castle_inside/clock_hour_hand/model.inc.c",
    "content": "// 0x070589C0 - 0x070589D8\nstatic const Lights1 inside_castle_seg7_lights_070589C0 = gdSPDefLights1(\n    0x3f, 0x33, 0x19,\n    0xff, 0xcc, 0x65, 0x28, 0x28, 0x28\n);\n\n// 0x070589D8 - 0x070589F0\nstatic const Lights1 inside_castle_seg7_lights_070589D8 = gdSPDefLights1(\n    0x3f, 0x00, 0x00,\n    0xff, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x070589F0 - 0x07058AF0\nstatic const Vtx inside_castle_seg7_vertex_070589F0[] = {\n    {{{   -19,     56,     10}, 0, {   480,    138}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -19,     56,      0}, 0, {   480,    138}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -19,     26,      0}, 0, {   682,    138}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    10,     92,     10}, 0, {   240,    650}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -9,     77,     10}, 0, {   344,    308}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    10,     72,     10}, 0, {   376,    650}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -19,     56,     10}, 0, {   480,    138}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,     51,     10}, 0, {   514,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    10,     72,     10}, 0, {   376,    650}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    10,     72,      0}, 0, {   376,    650}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    10,     92,      0}, 0, {   240,    650}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,     51,     10}, 0, {   514,    478}, {0x72, 0xca, 0x00, 0xff}}},\n    {{{    10,     72,      0}, 0, {   376,    650}, {0x72, 0xca, 0x00, 0xff}}},\n    {{{    10,     72,     10}, 0, {   376,    650}, {0x72, 0xca, 0x00, 0xff}}},\n    {{{    10,     92,     10}, 0, {   240,    650}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,     51,      0}, 0, {   514,    478}, {0x72, 0xca, 0x00, 0xff}}},\n};\n\n// 0x07058AF0 - 0x07058BD0\nstatic const Vtx inside_castle_seg7_vertex_07058AF0[] = {\n    {{{    10,     92,     10}, 0, {   240,    650}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -9,     92,     10}, 0, {   240,    308}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -9,     77,     10}, 0, {   344,    308}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -9,     92,     10}, 0, {   240,    308}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,     77,      0}, 0, {   344,    308}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,     77,     10}, 0, {   344,    308}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,     77,     10}, 0, {   344,    308}, {0x8e, 0x36, 0x00, 0xff}}},\n    {{{   -19,     56,      0}, 0, {   480,    138}, {0x8e, 0x36, 0x00, 0xff}}},\n    {{{   -19,     56,     10}, 0, {   480,    138}, {0x8e, 0x36, 0x00, 0xff}}},\n    {{{    -9,     77,      0}, 0, {   344,    308}, {0x8e, 0x36, 0x00, 0xff}}},\n    {{{    -9,     92,      0}, 0, {   240,    308}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,     51,     10}, 0, {   514,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -19,     56,     10}, 0, {   480,    138}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -19,     26,     10}, 0, {   682,    138}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07058BD0 - 0x07058CD0\nstatic const Vtx inside_castle_seg7_vertex_07058BD0[] = {\n    {{{   -19,     56,     10}, 0, {   480,    138}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -19,     26,      0}, 0, {   682,    138}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -19,     26,     10}, 0, {   682,    138}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,     51,     10}, 0, {   514,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -19,     26,     10}, 0, {   682,    138}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,     31,     10}, 0, {   650,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,     31,     10}, 0, {   650,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,     51,      0}, 0, {   514,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,     51,     10}, 0, {   514,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,     31,      0}, 0, {   650,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -19,     26,     10}, 0, {   682,    138}, {0x8e, 0xca, 0x00, 0xff}}},\n    {{{   -19,     26,      0}, 0, {   682,    138}, {0x8e, 0xca, 0x00, 0xff}}},\n    {{{    -9,      5,      0}, 0, {   818,    308}, {0x8e, 0xca, 0x00, 0xff}}},\n    {{{    -9,      5,     10}, 0, {   818,    308}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -9,      5,     10}, 0, {   818,    308}, {0x8e, 0xca, 0x00, 0xff}}},\n    {{{    10,     10,     10}, 0, {   786,    650}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07058CD0 - 0x07058DB0\nstatic const Vtx inside_castle_seg7_vertex_07058CD0[] = {\n    {{{    10,     10,     10}, 0, {   786,    650}, {0x72, 0x36, 0x00, 0xff}}},\n    {{{     0,     31,      0}, 0, {   650,    478}, {0x72, 0x36, 0x00, 0xff}}},\n    {{{     0,     31,     10}, 0, {   650,    478}, {0x72, 0x36, 0x00, 0xff}}},\n    {{{    10,     10,      0}, 0, {   786,    650}, {0x72, 0x36, 0x00, 0xff}}},\n    {{{    -9,      5,     10}, 0, {   818,    308}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,      5,      0}, 0, {   818,    308}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,    -19,      0}, 0, {   990,    308}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    10,     10,     10}, 0, {   786,    650}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -9,      5,     10}, 0, {   818,    308}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -9,    -19,     10}, 0, {   990,    308}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -9,    -19,     10}, 0, {   990,    308}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    10,    -19,     10}, 0, {   990,    650}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    -9,    -19,     10}, 0, {   990,    308}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    -9,    -19,      0}, 0, {   990,    308}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07058DB0 - 0x07058E50\nstatic const Vtx inside_castle_seg7_vertex_07058DB0[] = {\n    {{{    10,    -19,     10}, 0, {   990,    650}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    10,     10,      0}, 0, {   786,    650}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    10,     10,     10}, 0, {   786,    650}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    10,     10,     10}, 0, {   786,    650}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -9,    -19,     10}, 0, {   990,    308}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    10,    -19,     10}, 0, {   990,    650}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    10,    -19,      0}, 0, {   990,    650}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    10,    -19,     10}, 0, {   990,    650}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    -9,    -19,      0}, 0, {   990,    308}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    10,    -19,      0}, 0, {   990,    650}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07058E50 - 0x07058F50\nstatic const Vtx inside_castle_seg7_vertex_07058E50[] = {\n    {{{   -30,     82,      0}, 0, {   308,      0}, {0x93, 0x40, 0x00, 0xff}}},\n    {{{   -30,     82,     10}, 0, {   308,      0}, {0x93, 0x40, 0x00, 0xff}}},\n    {{{     0,    133,     10}, 0, {     0,    478}, {0x93, 0x40, 0x00, 0xff}}},\n    {{{     0,    133,     10}, 0, {     0,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -9,     92,     10}, 0, {   240,    308}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    10,     92,     10}, 0, {   240,    650}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    31,     82,     10}, 0, {   308,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -30,     82,     10}, 0, {   308,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    31,     82,      0}, 0, {   308,    990}, {0xca, 0x8e, 0x00, 0xff}}},\n    {{{    10,     92,     10}, 0, {   240,    650}, {0xca, 0x8e, 0x00, 0xff}}},\n    {{{    10,     92,      0}, 0, {   240,    650}, {0xca, 0x8e, 0x00, 0xff}}},\n    {{{    31,     82,     10}, 0, {   308,    990}, {0xca, 0x8e, 0x00, 0xff}}},\n    {{{     0,    133,      0}, 0, {     0,    478}, {0x6c, 0x41, 0x00, 0xff}}},\n    {{{    31,     82,     10}, 0, {   308,    990}, {0x6c, 0x41, 0x00, 0xff}}},\n    {{{    31,     82,      0}, 0, {   308,    990}, {0x6c, 0x41, 0x00, 0xff}}},\n    {{{     0,    133,     10}, 0, {     0,    478}, {0x6c, 0x41, 0x00, 0xff}}},\n};\n\n// 0x07058F50 - 0x07058FC0\nstatic const Vtx inside_castle_seg7_vertex_07058F50[] = {\n    {{{   -30,     82,      0}, 0, {   308,      0}, {0x93, 0x40, 0x00, 0xff}}},\n    {{{     0,    133,     10}, 0, {     0,    478}, {0x93, 0x40, 0x00, 0xff}}},\n    {{{     0,    133,      0}, 0, {     0,    478}, {0x93, 0x40, 0x00, 0xff}}},\n    {{{    -9,     92,      0}, 0, {   240,    308}, {0x36, 0x8e, 0x00, 0xff}}},\n    {{{   -30,     82,     10}, 0, {   308,      0}, {0x36, 0x8e, 0x00, 0xff}}},\n    {{{   -30,     82,      0}, 0, {   308,      0}, {0x36, 0x8e, 0x00, 0xff}}},\n    {{{    -9,     92,     10}, 0, {   240,    308}, {0x36, 0x8e, 0x00, 0xff}}},\n};\n\n// 0x07058FC0 - 0x07059190\nstatic const Gfx inside_castle_seg7_dl_07058FC0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_070589C0.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_070589C0.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_070589F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  4,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles( 8, 10, 14, 0x0, 11, 15, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07058AF0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 3, 10,  4, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07058BD0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  5,  4, 13, 0x0),\n    gsSP2Triangles(10, 12, 14, 0x0,  5, 13, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07058CD0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 4,  6, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07058DB0, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  7,  8,  9, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_070589D8.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_070589D8.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07058E50, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  3,  7,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07058F50, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 3,  6,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07059190 - 0x07059200\nconst Gfx inside_castle_seg7_dl_07059190[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07058FC0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/clock_minute_hand/collision.inc.c",
    "content": "// Blank File\n\n"
  },
  {
    "path": "levels/castle_inside/clock_minute_hand/geo.inc.c",
    "content": "// 0x0E001530\nconst GeoLayout castle_geo_001530[] = {\n    GEO_CULLING_RADIUS(300),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07058950),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/castle_inside/clock_minute_hand/model.inc.c",
    "content": "// 0x07057FD8 - 0x07057FF0\nstatic const Lights1 inside_castle_seg7_lights_07057FD8 = gdSPDefLights1(\n    0x3f, 0x33, 0x19,\n    0xff, 0xcc, 0x65, 0x28, 0x28, 0x28\n);\n\n// 0x07057FF0 - 0x07058008\nstatic const Lights1 inside_castle_seg7_lights_07057FF0 = gdSPDefLights1(\n    0x3f, 0x00, 0x00,\n    0xff, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x07058008 - 0x07058108\nstatic const Vtx inside_castle_seg7_vertex_07058008[] = {\n    {{{     0,     35,     20}, 0, {   684,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,     25,     10}, 0, {   736,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,     25,     20}, 0, {   736,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    10,      0,     20}, 0, {   876,    606}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -9,      5,     20}, 0, {   850,    352}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -9,    -19,     20}, 0, {   990,    352}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    20,     20,     20}, 0, {   762,    734}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,     25,     20}, 0, {   736,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -9,      5,     20}, 0, {   850,    352}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,      5,     10}, 0, {   850,    352}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,    -19,     10}, 0, {   990,    352}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,    -19,     20}, 0, {   990,    352}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,     25,     20}, 0, {   736,    478}, {0x8d, 0x34, 0x00, 0xff}}},\n    {{{    -9,      5,     10}, 0, {   850,    352}, {0x8d, 0x34, 0x00, 0xff}}},\n    {{{    -9,      5,     20}, 0, {   850,    352}, {0x8d, 0x34, 0x00, 0xff}}},\n    {{{     0,     25,     10}, 0, {   736,    478}, {0x8d, 0x34, 0x00, 0xff}}},\n};\n\n// 0x07058108 - 0x070581F8\nstatic const Vtx inside_castle_seg7_vertex_07058108[] = {\n    {{{    10,    -19,     20}, 0, {   990,    606}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    -9,    -19,     10}, 0, {   990,    352}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    10,    -19,     10}, 0, {   990,    606}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    -9,    -19,     20}, 0, {   990,    352}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    10,      0,     20}, 0, {   876,    606}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -9,    -19,     20}, 0, {   990,    352}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    10,    -19,     20}, 0, {   990,    606}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    10,    -19,     20}, 0, {   990,    606}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    10,    -19,     10}, 0, {   990,    606}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    10,      0,     10}, 0, {   876,    606}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    10,      0,     20}, 0, {   876,    606}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    10,      0,     20}, 0, {   876,    606}, {0x71, 0xc8, 0x00, 0xff}}},\n    {{{    10,      0,     10}, 0, {   876,    606}, {0x71, 0xc8, 0x00, 0xff}}},\n    {{{    20,     20,     10}, 0, {   762,    734}, {0x71, 0xc8, 0x00, 0xff}}},\n    {{{    20,     20,     20}, 0, {   762,    734}, {0x71, 0xc8, 0x00, 0xff}}},\n};\n\n// 0x070581F8 - 0x070582F8\nstatic const Vtx inside_castle_seg7_vertex_070581F8[] = {\n    {{{    20,     41,     20}, 0, {   650,    734}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,     35,     20}, 0, {   684,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,     25,     20}, 0, {   736,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    20,     20,     20}, 0, {   762,    734}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,     35,     20}, 0, {   684,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,     35,     10}, 0, {   684,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,     25,     10}, 0, {   736,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    20,     20,     20}, 0, {   762,    734}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    20,     20,     10}, 0, {   762,    734}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    20,     41,     10}, 0, {   650,    734}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    20,     41,     20}, 0, {   650,    734}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,     72,     20}, 0, {   480,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -19,     65,     20}, 0, {   514,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -19,     65,     20}, 0, {   514,    224}, {0x95, 0xbd, 0x00, 0xff}}},\n    {{{     0,     35,     10}, 0, {   684,    478}, {0x95, 0xbd, 0x00, 0xff}}},\n    {{{     0,     35,     20}, 0, {   684,    478}, {0x95, 0xbd, 0x00, 0xff}}},\n};\n\n// 0x070582F8 - 0x070583E8\nstatic const Vtx inside_castle_seg7_vertex_070582F8[] = {\n    {{{   -19,     65,     20}, 0, {   514,    224}, {0x95, 0xbd, 0x00, 0xff}}},\n    {{{   -19,     65,     10}, 0, {   514,    224}, {0x95, 0xbd, 0x00, 0xff}}},\n    {{{     0,     35,     10}, 0, {   684,    478}, {0x95, 0xbd, 0x00, 0xff}}},\n    {{{    20,     41,     20}, 0, {   650,    734}, {0x6a, 0x44, 0x00, 0xff}}},\n    {{{    20,     41,     10}, 0, {   650,    734}, {0x6a, 0x44, 0x00, 0xff}}},\n    {{{     0,     72,     10}, 0, {   480,    478}, {0x6a, 0x44, 0x00, 0xff}}},\n    {{{     0,     72,     20}, 0, {   480,    478}, {0x6a, 0x44, 0x00, 0xff}}},\n    {{{     0,     82,     20}, 0, {   422,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -19,     65,     20}, 0, {   514,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,     72,     20}, 0, {   480,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -19,     87,     20}, 0, {   396,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -19,     87,     20}, 0, {   396,    224}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -19,     65,     10}, 0, {   514,    224}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -19,     65,     20}, 0, {   514,    224}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -19,     87,     10}, 0, {   396,    224}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070583E8 - 0x070584E8\nstatic const Vtx inside_castle_seg7_vertex_070583E8[] = {\n    {{{     0,     72,     20}, 0, {   480,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,     72,     10}, 0, {   480,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,     82,     10}, 0, {   422,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,     82,     20}, 0, {   422,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    10,    102,     20}, 0, {   308,    606}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -9,    107,     20}, 0, {   282,    352}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -19,     87,     20}, 0, {   396,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,     82,     20}, 0, {   422,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -9,    107,     20}, 0, {   282,    352}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{   -19,     87,     10}, 0, {   396,    224}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{   -19,     87,     20}, 0, {   396,    224}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{    -9,    107,     10}, 0, {   282,    352}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{     0,     82,     20}, 0, {   422,    478}, {0x71, 0xc8, 0x00, 0xff}}},\n    {{{     0,     82,     10}, 0, {   422,    478}, {0x71, 0xc8, 0x00, 0xff}}},\n    {{{    10,    102,     10}, 0, {   308,    606}, {0x71, 0xc8, 0x00, 0xff}}},\n    {{{    10,    102,     20}, 0, {   308,    606}, {0x71, 0xc8, 0x00, 0xff}}},\n};\n\n// 0x070584E8 - 0x070585A8\nstatic const Vtx inside_castle_seg7_vertex_070584E8[] = {\n    {{{    -9,    123,     20}, 0, {   196,    352}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,    107,     10}, 0, {   282,    352}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    -9,    107,     20}, 0, {   282,    352}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    10,    123,     20}, 0, {   196,    606}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -9,    123,     20}, 0, {   196,    352}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -9,    107,     20}, 0, {   282,    352}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    10,    102,     20}, 0, {   308,    606}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    10,    102,     20}, 0, {   308,    606}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    10,    123,     10}, 0, {   196,    606}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    10,    123,     20}, 0, {   196,    606}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    -9,    123,     10}, 0, {   196,    352}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    10,    102,     10}, 0, {   308,    606}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070585A8 - 0x07058698\nstatic const Vtx inside_castle_seg7_vertex_070585A8[] = {\n    {{{     0,    164,     20}, 0, {     0,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -30,    113,     20}, 0, {   252,     96}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -9,    123,     20}, 0, {   196,    352}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -9,    123,     10}, 0, {   196,    352}, {0x36, 0x8e, 0x00, 0xff}}},\n    {{{    -9,    123,     20}, 0, {   196,    352}, {0x36, 0x8e, 0x00, 0xff}}},\n    {{{   -30,    113,     20}, 0, {   252,     96}, {0x36, 0x8e, 0x00, 0xff}}},\n    {{{   -30,    113,     10}, 0, {   252,     96}, {0x36, 0x8e, 0x00, 0xff}}},\n    {{{   -30,    113,     10}, 0, {   252,     96}, {0x93, 0x40, 0x00, 0xff}}},\n    {{{   -30,    113,     20}, 0, {   252,     96}, {0x93, 0x40, 0x00, 0xff}}},\n    {{{     0,    164,     20}, 0, {     0,    478}, {0x93, 0x40, 0x00, 0xff}}},\n    {{{     0,    164,     10}, 0, {     0,    478}, {0x93, 0x40, 0x00, 0xff}}},\n    {{{     0,    164,     10}, 0, {     0,    478}, {0x6c, 0x41, 0x00, 0xff}}},\n    {{{     0,    164,     20}, 0, {     0,    478}, {0x6c, 0x41, 0x00, 0xff}}},\n    {{{    31,    113,     20}, 0, {   252,    862}, {0x6c, 0x41, 0x00, 0xff}}},\n    {{{    31,    113,     10}, 0, {   252,    862}, {0x6c, 0x41, 0x00, 0xff}}},\n};\n\n// 0x07058698 - 0x07058718\nstatic const Vtx inside_castle_seg7_vertex_07058698[] = {\n    {{{    31,    113,     10}, 0, {   252,    862}, {0xca, 0x8e, 0x00, 0xff}}},\n    {{{    31,    113,     20}, 0, {   252,    862}, {0xca, 0x8e, 0x00, 0xff}}},\n    {{{    10,    123,     20}, 0, {   196,    606}, {0xca, 0x8e, 0x00, 0xff}}},\n    {{{    10,    123,     10}, 0, {   196,    606}, {0xca, 0x8e, 0x00, 0xff}}},\n    {{{     0,    164,     20}, 0, {     0,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    10,    123,     20}, 0, {   196,    606}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    31,    113,     20}, 0, {   252,    862}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -9,    123,     20}, 0, {   196,    352}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07058718 - 0x07058950\nstatic const Gfx inside_castle_seg7_dl_07058718[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_07057FD8.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07057FD8.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07058008, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  4, 0x0,  6,  4,  3, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07058108, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070581F8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12,  1, 0x0),\n    gsSP2Triangles(11,  1,  0, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070582F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070583E8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_070584E8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 0, 10,  1, 0x0,  7, 11,  8, 0x0),\n    gsSPLight(&inside_castle_seg7_lights_07057FF0.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07057FF0.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_070585A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_07058698, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07058950 - 0x070589C0\nconst Gfx inside_castle_seg7_dl_07058950[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07058718),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"game/level_geo.h\"\n#include \"game/geo_misc.h\"\n#include \"game/camera.h\"\n#include \"game/moving_texture.h\"\n#include \"game/screen_transition.h\"\n#include \"game/paintings.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"levels/castle_inside/header.h\"\n\n#include \"levels/castle_inside/star_door/geo.inc.c\"\n#include \"levels/castle_inside/trap_door/geo.inc.c\"\n#include \"levels/castle_inside/areas/1/geo.inc.c\"\n#include \"levels/castle_inside/areas/2/pendulum/geo.inc.c\" // Another weird case\n#include \"levels/castle_inside/clock_minute_hand/geo.inc.c\"\n#include \"levels/castle_inside/clock_hour_hand/geo.inc.c\"\n#include \"levels/castle_inside/areas/2/geo.inc.c\"\n#include \"levels/castle_inside/water_level_pillar/geo.inc.c\"\n#include \"levels/castle_inside/areas/3/geo.inc.c\"\n"
  },
  {
    "path": "levels/castle_inside/header.h",
    "content": "#ifndef CASTLE_INSIDE_HEADER_H\n#define CASTLE_INSIDE_HEADER_H\n\n#include \"types.h\"\n#include \"game/paintings.h\"\n#include \"game/moving_texture.h\"\n\n// geo\nextern const GeoLayout castle_geo_000F00[];\nextern const GeoLayout castle_geo_000F18[];\nextern const GeoLayout castle_geo_000F30[];\nextern const GeoLayout castle_geo_000F70[];\nextern const GeoLayout castle_geo_000F88[];\nextern const GeoLayout castle_geo_000FA8[];\nextern const GeoLayout castle_geo_000FD0[];\nextern const GeoLayout castle_geo_001000[];\nextern const GeoLayout castle_geo_001038[];\nextern const GeoLayout castle_geo_001088[];\nextern const GeoLayout castle_geo_0010C8[];\nextern const GeoLayout castle_geo_001110[];\nextern const GeoLayout castle_geo_001158[];\nextern const GeoLayout castle_geo_0011A8[];\nextern const GeoLayout castle_geo_001200[];\nextern const GeoLayout castle_geo_001260[];\nextern const GeoLayout castle_geo_0012C8[];\nextern const GeoLayout castle_geo_001348[];\nextern const GeoLayout castle_geo_0013B8[];\nextern const GeoLayout castle_geo_001400[];\nextern const GeoLayout castle_geo_001518[];\nextern const GeoLayout castle_geo_001530[];\nextern const GeoLayout castle_geo_001548[];\nextern const GeoLayout castle_geo_001560[];\nextern const GeoLayout castle_geo_001578[];\nextern const GeoLayout castle_geo_0015B8[];\nextern const GeoLayout castle_geo_0015F8[];\nextern const GeoLayout castle_geo_001628[];\nextern const GeoLayout castle_geo_001668[];\nextern const GeoLayout castle_geo_001690[];\nextern const GeoLayout castle_geo_0016D8[];\nextern const GeoLayout castle_geo_001740[];\nextern const GeoLayout castle_geo_001798[];\nextern const GeoLayout castle_geo_001800[];\nextern const GeoLayout castle_geo_001858[];\nextern const GeoLayout castle_geo_001940[];\nextern const GeoLayout castle_geo_001958[];\nextern const GeoLayout castle_geo_001980[];\nextern const GeoLayout castle_geo_0019C8[];\nextern const GeoLayout castle_geo_0019F8[];\nextern const GeoLayout castle_geo_001A30[];\nextern const GeoLayout castle_geo_001A58[];\nextern const GeoLayout castle_geo_001AB8[];\nextern const GeoLayout castle_geo_001AF8[];\nextern const GeoLayout castle_geo_001B48[];\nextern const GeoLayout castle_geo_001BB0[];\nextern const GeoLayout castle_geo_001C10[];\n\n// leveldata\nextern const Gfx inside_castle_seg7_dl_070225D8[];\nextern const Gfx inside_castle_seg7_dl_07022610[];\nextern const Gfx inside_castle_seg7_dl_070234C0[];\nextern const Gfx inside_castle_seg7_dl_07023520[];\nextern struct Painting bob_painting;\nextern struct Painting ccm_painting;\nextern struct Painting wf_painting;\nextern struct Painting jrb_painting;\nextern struct Painting lll_painting;\nextern struct Painting ssl_painting;\nextern struct Painting hmc_painting;\nextern struct Painting ddd_painting;\nextern struct Painting wdw_painting;\nextern struct Painting thi_tiny_painting;\nextern struct Painting ttm_painting;\nextern struct Painting ttc_painting;\nextern struct Painting sl_painting;\nextern struct Painting thi_huge_painting;\nextern const Gfx inside_castle_seg7_dl_07023DB0[];\nextern const Gfx inside_castle_seg7_dl_07028FD0[];\nextern const Gfx inside_castle_seg7_dl_07029578[];\nextern const Gfx inside_castle_seg7_dl_0702A650[];\nextern const Gfx dl_castle_lobby_wing_cap_light[];\nextern const Gfx inside_castle_seg7_dl_0702AA10[];\nextern const Gfx inside_castle_seg7_dl_0702AB20[];\nextern const Gfx inside_castle_seg7_dl_0702E408[];\nextern const Gfx inside_castle_seg7_dl_0702FD30[];\nextern const Vtx inside_castle_seg7_vertex_07030940[];\nextern const Gfx inside_castle_seg7_dl_07031168[];\nextern const Gfx inside_castle_seg7_dl_07031588[];\nextern const Gfx inside_castle_seg7_dl_07031720[];\nextern const Gfx inside_castle_seg7_dl_07031830[];\nextern const Gfx inside_castle_seg7_dl_07032FC0[];\nextern const Gfx inside_castle_seg7_dl_07033158[];\nextern const Gfx inside_castle_seg7_dl_07034D88[];\nextern const Gfx inside_castle_seg7_dl_07035178[];\nextern const Gfx inside_castle_seg7_dl_07035288[];\nextern const Gfx inside_castle_seg7_dl_07036D88[];\nextern const Gfx inside_castle_seg7_dl_07037988[];\nextern const Gfx inside_castle_seg7_dl_07037BF8[];\nextern const Gfx inside_castle_seg7_dl_07037DE8[];\nextern const Gfx dl_castle_aquarium_light[];\nextern const Gfx inside_castle_seg7_dl_07038350[];\nextern const Gfx inside_castle_seg7_dl_0703A6C8[];\nextern const Gfx inside_castle_seg7_dl_0703A808[];\nextern const Gfx inside_castle_seg7_dl_0703BA08[];\nextern const Gfx inside_castle_seg7_dl_0703BCB8[];\nextern const Gfx inside_castle_seg7_dl_0703BFA8[];\nextern const Gfx inside_castle_seg7_dl_0703E6F0[];\nextern const Gfx inside_castle_seg7_dl_07043028[];\nextern const Gfx inside_castle_seg7_dl_07043B48[];\nextern const Gfx inside_castle_seg7_dl_07043CD8[];\nextern const Gfx inside_castle_seg7_dl_0704A0E8[];\nextern const Gfx inside_castle_seg7_dl_0704A2E0[];\nextern const Gfx inside_castle_seg7_dl_0704AA98[];\nextern const Gfx inside_castle_seg7_dl_0704C7D8[];\nextern const Gfx inside_castle_seg7_dl_07050938[];\nextern const Gfx inside_castle_seg7_dl_070512F8[];\nextern const Gfx inside_castle_seg7_dl_07051678[];\nextern const Gfx inside_castle_seg7_dl_070519C8[];\nextern const Gfx inside_castle_seg7_dl_07051B60[];\nextern const Gfx inside_castle_seg7_dl_070558D0[];\nextern const Gfx inside_castle_seg7_dl_070572A0[];\nextern const Gfx inside_castle_seg7_dl_07057F00[];\nextern const Gfx inside_castle_seg7_dl_07058950[];\nextern const Gfx inside_castle_seg7_dl_07059190[];\nextern const Gfx inside_castle_seg7_dl_0705E088[];\nextern const Gfx inside_castle_seg7_dl_0705E2A0[];\nextern const Gfx inside_castle_seg7_dl_0705E450[];\nextern const Gfx inside_castle_seg7_dl_070616E8[];\nextern const Gfx inside_castle_seg7_dl_07061C20[];\nextern const Gfx inside_castle_seg7_dl_07064B78[];\nextern const Gfx inside_castle_seg7_dl_07064D58[];\nextern const Gfx inside_castle_seg7_dl_07066CE0[];\nextern const Gfx inside_castle_seg7_dl_07066E90[];\nextern const Gfx inside_castle_seg7_dl_07066FA0[];\nextern const Gfx inside_castle_seg7_dl_07068850[];\nextern const Gfx inside_castle_seg7_dl_07068B10[];\nextern const Collision inside_castle_seg7_area_1_collision[];\nextern const Collision inside_castle_seg7_area_2_collision[];\nextern const Collision inside_castle_seg7_area_3_collision[];\nextern const Collision inside_castle_seg7_collision_ddd_warp[];\nextern const Collision inside_castle_seg7_collision_ddd_warp_2[];\nextern const MacroObject inside_castle_seg7_area_1_macro_objs[];\nextern const MacroObject inside_castle_seg7_area_2_macro_objs[];\nextern const MacroObject inside_castle_seg7_area_3_macro_objs[];\nextern const RoomData inside_castle_seg7_area_1_rooms[];\nextern const RoomData inside_castle_seg7_area_2_rooms[];\nextern const RoomData inside_castle_seg7_area_3_rooms[];\nextern const Collision inside_castle_seg7_collision_floor_trap[];\nextern const Collision inside_castle_seg7_collision_star_door[];\nextern const Collision inside_castle_seg7_collision_water_level_pillar[];\nextern const Trajectory *const inside_castle_seg7_trajectory_mips[];\nextern const struct MovtexQuadCollection inside_castle_movtex_green_room_water[];\nextern const struct MovtexQuadCollection inside_castle_movtex_moat_water[];\n\n// script\nextern const LevelScript level_castle_inside_entry[];\n\n#endif\n"
  },
  {
    "path": "levels/castle_inside/level.yaml",
    "content": "# Princess Peach's Castle (Inside the Castle)\nshort-name: castle_inside\nfull-name: Princess Peach's Castle (Inside the Castle)\ntexture-file: [\"/texture.inc.c\"]\narea-count: 3\nobjects: [clock_hour_hand, clock_minute_hand, star_door, trap_door, water_level_pillar]\nshared-path: []\n# loaded files\nskybox-bin: null\ntexture-bin: inside\neffects: false\nactor-bins: [group15]\ncommon-bin: []\n"
  },
  {
    "path": "levels/castle_inside/leveldata.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"surface_terrains.h\"\n#include \"moving_texture_macros.h\"\n#include \"level_misc_macros.h\"\n#include \"macro_presets.h\"\n#include \"special_presets.h\"\n#include \"textures.h\"\n#include \"dialog_ids.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/castle_inside/texture.inc.c\"\n#include \"levels/castle_inside/painting.inc.c\"\n#include \"levels/castle_inside/areas/1/1/model.inc.c\"\n#include \"levels/castle_inside/areas/1/2/model.inc.c\"\n#include \"levels/castle_inside/areas/1/3/model.inc.c\"\n#include \"levels/castle_inside/areas/1/4/model.inc.c\"\n#include \"levels/castle_inside/areas/1/5/model.inc.c\"\n#include \"levels/castle_inside/areas/1/6/model.inc.c\"\n#include \"levels/castle_inside/areas/1/7/model.inc.c\"\n#include \"levels/castle_inside/areas/1/8/model.inc.c\"\n#include \"levels/castle_inside/areas/1/9/model.inc.c\"\n#include \"levels/castle_inside/areas/1/10/model.inc.c\"\n#include \"levels/castle_inside/areas/1/11/model.inc.c\"\n#include \"levels/castle_inside/areas/1/12/model.inc.c\"\n#include \"levels/castle_inside/areas/1/13/model.inc.c\"\n#include \"levels/castle_inside/areas/1/14/model.inc.c\"\n#include \"levels/castle_inside/areas/1/15/model.inc.c\"\n#include \"levels/castle_inside/areas/1/16/model.inc.c\"\n#include \"levels/castle_inside/areas/1/17/model.inc.c\"\n#include \"levels/castle_inside/areas/1/18/model.inc.c\"\n#include \"levels/castle_inside/areas/1/19/model.inc.c\"\n#include \"levels/castle_inside/areas/1/20/model.inc.c\"\n#include \"levels/castle_inside/areas/1/21/model.inc.c\"\n#include \"levels/castle_inside/areas/1/22/model.inc.c\"\n#include \"levels/castle_inside/areas/1/23/model.inc.c\"\n#include \"levels/castle_inside/areas/1/24/model.inc.c\"\n#include \"levels/castle_inside/areas/1/25/model.inc.c\"\n#include \"levels/castle_inside/areas/1/26/model.inc.c\"\n#include \"levels/castle_inside/trap_door/model.inc.c\"\n#include \"levels/castle_inside/star_door/model.inc.c\"\n#include \"levels/castle_inside/areas/2/1/model.inc.c\"\n#include \"levels/castle_inside/areas/2/2/model.inc.c\"\n#include \"levels/castle_inside/areas/2/3/model.inc.c\"\n#include \"levels/castle_inside/areas/2/4/model.inc.c\"\n#include \"levels/castle_inside/areas/2/5/model.inc.c\"\n#include \"levels/castle_inside/areas/2/6/model.inc.c\"\n#include \"levels/castle_inside/areas/2/7/model.inc.c\"\n#include \"levels/castle_inside/areas/2/8/model.inc.c\"\n#include \"levels/castle_inside/areas/2/9/model.inc.c\"\n#include \"levels/castle_inside/areas/2/pendulum/model.inc.c\"\n#include \"levels/castle_inside/areas/2/10/model.inc.c\"\n#include \"levels/castle_inside/areas/2/11/model.inc.c\"\n#include \"levels/castle_inside/areas/2/12/model.inc.c\"\n#include \"levels/castle_inside/areas/2/13/model.inc.c\"\n#include \"levels/castle_inside/areas/2/14/model.inc.c\"\n#include \"levels/castle_inside/areas/2/15/model.inc.c\"\n#include \"levels/castle_inside/clock_minute_hand/model.inc.c\"\n#include \"levels/castle_inside/clock_hour_hand/model.inc.c\"\n#include \"levels/castle_inside/areas/3/1/model.inc.c\"\n#include \"levels/castle_inside/areas/3/2/model.inc.c\"\n#include \"levels/castle_inside/areas/3/3/model.inc.c\"\n#include \"levels/castle_inside/areas/3/4/model.inc.c\"\n#include \"levels/castle_inside/areas/3/5/model.inc.c\"\n#include \"levels/castle_inside/areas/3/6/model.inc.c\"\n#include \"levels/castle_inside/areas/3/7/model.inc.c\"\n#include \"levels/castle_inside/areas/3/8/model.inc.c\"\n#include \"levels/castle_inside/areas/3/9/model.inc.c\"\n#include \"levels/castle_inside/areas/3/10/model.inc.c\"\n#include \"levels/castle_inside/areas/3/11/model.inc.c\"\n#include \"levels/castle_inside/water_level_pillar/model.inc.c\"\n#include \"levels/castle_inside/areas/1/collision.inc.c\"\n#include \"levels/castle_inside/areas/2/collision.inc.c\"\n#include \"levels/castle_inside/areas/3/collision.inc.c\"\n#include \"levels/castle_inside/areas/1/macro.inc.c\"\n#include \"levels/castle_inside/areas/2/macro.inc.c\"\n#include \"levels/castle_inside/areas/3/macro.inc.c\"\n#include \"levels/castle_inside/areas/1/room.inc.c\"\n#include \"levels/castle_inside/areas/2/room.inc.c\"\n#include \"levels/castle_inside/areas/3/room.inc.c\"\n#include \"levels/castle_inside/trap_door/collision.inc.c\"\n#include \"levels/castle_inside/star_door/collision.inc.c\"\n#include \"levels/castle_inside/clock_minute_hand/collision.inc.c\"\n#include \"levels/castle_inside/clock_hour_hand/collision.inc.c\"\n#include \"levels/castle_inside/water_level_pillar/collision.inc.c\"\n#include \"levels/castle_inside/areas/3/trajectory.inc.c\"\n#include \"levels/castle_inside/areas/3/movtext.inc.c\"\n"
  },
  {
    "path": "levels/castle_inside/painting.inc.c",
    "content": "#include \"game/paintings.h\"\n\n// 0x07021800 - 0x07021818\nstatic const Lights1 inside_castle_seg7_lights_07021800 = gdSPDefLights1(\n    0x50, 0x50, 0x50,\n    0xff, 0xff, 0xff, 0x32, 0x32, 0x32\n);\n\n// 0x07021818 - 0x07021898\nstatic const Vtx inside_castle_seg7_vertex_07021818[] = {\n    {{{     0,      0,      0}, 0, {   -32,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   614,      0,      0}, 0, {  2012,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   614,    307,      0}, 0, {  2012,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,    307,      0}, 0, {   -32,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,    307,      0}, 0, {   -32,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   614,    307,      0}, 0, {  2012,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   614,    614,      0}, 0, {  2012,    -28}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,    614,      0}, 0, {   -32,    -28}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07021898 - 0x07021918\nstatic const Vtx inside_castle_seg7_vertex_07021898[] = {\n    {{{     0,      0,      0}, 0, {   -32,    992}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{   614,      0,      0}, 0, {  2012,    992}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{   614,    307,      0}, 0, {  2012,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{     0,    307,      0}, 0, {   -32,      0}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{     0,    307,      0}, 0, {   -32,    992}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{   614,    307,      0}, 0, {  2012,    992}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{   614,    614,      0}, 0, {  2012,    -28}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{     0,    614,      0}, 0, {   -32,    -28}, {0xdd, 0xdd, 0xdd, 0xff}}},\n};\n\n// 0x07021918 - 0x07021998\nstatic const Vtx inside_castle_seg7_vertex_07021918[] = {\n    {{{ -3046,   -307,  -3724}, 0, {   -32,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2742,   -307,  -4258}, 0, {  2012,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2742,      0,  -4258}, 0, {  2012,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3046,      0,  -3724}, 0, {   -32,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3046,      0,  -3724}, 0, {   -32,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2742,      0,  -4258}, 0, {  2012,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2742,    307,  -4258}, 0, {  2012,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3046,    307,  -3724}, 0, {   -32,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07021998 - 0x07021A18\nstatic const Vtx inside_castle_seg7_vertex_07021998[] = {\n    {{{ -1866,   -307,  -4258}, 0, {   -32,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1562,   -307,  -3724}, 0, {  2012,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1562,      0,  -3724}, 0, {  2012,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1866,      0,  -4258}, 0, {   -32,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1866,      0,  -4258}, 0, {   -32,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1562,      0,  -3724}, 0, {  2012,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1562,    307,  -3724}, 0, {  2012,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1866,    307,  -4258}, 0, {   -32,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07021A18 - 0x07021A30\nstatic const Gfx inside_castle_seg7_dl_07021A18[] = {\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07021A30 - 0x07021A48\nstatic const Gfx inside_castle_seg7_dl_07021A30[] = {\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07021A48 - 0x07021AA0\nstatic const Gfx inside_castle_seg7_dl_07021A48[] = {\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_LIGHTING | G_SHADING_SMOOTH),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPLight(&inside_castle_seg7_lights_07021800.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07021800.a, 2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsSPEndDisplayList(),\n};\n\n// 0x07021AA0 - 0x07021AC0\nstatic const Gfx inside_castle_seg7_dl_07021AA0[] = {\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x07021AC0 - 0x07021AE0\nstatic const Gfx inside_castle_seg7_painting_dl_07021AC0[] = {\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x07021AE0 - 0x07021FFA\nstatic const PaintingData inside_castle_seg7_painting_texture_map_bottom_07021AE0[] = {\n    85, // num mappings\n    // Format:\n    // mesh vtx ID, texture X, texture Y\n      49, 2016,  889,\n      53, 2016,  685,\n      55, 1843,  787,\n      50, 2016,  992,\n      51, 1843,  992,\n      52, 1843,  583,\n      75, 2016,  513,\n      54, 1671,  889,\n      59, 1671,  685,\n      62, 1502,  787,\n      56, 1502,  992,\n      57, 1671,  992,\n      58, 1502,  583,\n      60, 1671,  513,\n      61, 1330,  889,\n      65, 1330,  685,\n      63, 1162,  992,\n      64, 1330,  992,\n      66, 1162,  583,\n      67, 1330,  513,\n      69, 1162,  787,\n      68,  989,  889,\n      70,  821,  992,\n      71,  989,  992,\n      73,  989,  685,\n      72,  821,  583,\n      74,  989,  513,\n      77, 2016,  308,\n      78, 1843,  410,\n      76, 1843,  204,\n      81, 1502,  410,\n      80, 1671,  308,\n      47, 1671,  102,\n      79, 1502,  204,\n      46, 1330,  102,\n      82, 1162,  204,\n      83, 1330,  308,\n      84, 1162,  410,\n      86,  989,  308,\n      85,  821,  204,\n      48,  989,  102,\n      25, 1502,    0,\n      31, 1162,    0,\n      19, 1843,    0,\n      37,  821,    0,\n     120,  821,  787,\n     119,  649,  889,\n     122,  481,  992,\n     121,  649,  992,\n     124,  649,  685,\n     125,  481,  583,\n     123,  649,  513,\n     127,  481,  787,\n     126,  308,  889,\n     129,  140,  992,\n     128,  308,  992,\n     132,  308,  513,\n     131,  308,  685,\n     130,  140,  583,\n     134,  140,  787,\n     133,  -32,  889,\n     135,  -32,  513,\n     136,  821,  410,\n     116,  649,  102,\n     137,  649,  308,\n     114,  481,  204,\n     138,  481,  410,\n     139,  308,  308,\n     118,  140,  204,\n     115,  308,  102,\n     140,  140,  410,\n     117,  -32,  102,\n      99,  481,    0,\n     105,  140,    0,\n     143, 2016,  102,\n     145, 1330,    0,\n     144, 1671,    0,\n     142, 2016,    0,\n     146,  989,    0,\n     155,  -32,  685,\n     156,  -32,  992,\n     154,  -32,  308,\n     151,  308,    0,\n     150,  649,    0,\n     153,  -32,    0,\n\n    132, // num groups\n    // Grouped by 5 + one remainder group,\n    // = 15 vertices per group + a few extra triangles\n      13,    8,    5,\n       0,    1,    2,\n       3,    0,    4,\n       4,    0,    2,\n       5,    2,    1,\n       1,    6,    5,\n       7,    2,    8,\n       5,    8,    2,\n       2,    7,    4,\n       7,    8,    9,\n      10,    7,    9,\n      11,    7,   10,\n       7,   11,    4,\n      12,    9,    8,\n       8,   13,   12,\n      21,   24,   45,\n      14,    9,   15,\n      12,   15,    9,\n       9,   14,   10,\n      16,   14,   20,\n      17,   14,   16,\n      14,   15,   20,\n      14,   17,   10,\n      15,   19,   18,\n      18,   20,   15,\n      19,   15,   12,\n      20,   21,   16,\n      18,   24,   20,\n      21,   20,   24,\n      22,   21,   45,\n      23,   21,   22,\n      21,   23,   16,\n      24,   26,   25,\n      25,   45,   24,\n      26,   24,   18,\n       6,   27,   28,\n       5,    6,   28,\n      29,   28,   27,\n      27,   74,   29,\n      29,   31,   28,\n      13,   28,   31,\n      28,   13,    5,\n      36,   34,   35,\n      12,   13,   30,\n      13,   31,   30,\n      31,   32,   33,\n      32,   31,   29,\n      33,   30,   31,\n      33,   36,   30,\n      30,   19,   12,\n      19,   30,   36,\n      18,   19,   37,\n      19,   36,   37,\n      34,   36,   33,\n      35,   37,   36,\n      37,   26,   18,\n      35,   38,   37,\n      26,   37,   38,\n      25,   26,   62,\n      26,   38,   62,\n      38,   40,   39,\n      39,   62,   38,\n      40,   38,   35,\n      41,   34,   33,\n      33,   32,   41,\n      42,   34,   75,\n      34,   41,   75,\n      35,   34,   42,\n      32,   43,   76,\n      41,   32,   76,\n      43,   32,   29,\n      29,   74,   43,\n      43,   74,   77,\n      46,   49,   52,\n      42,   40,   35,\n      39,   40,   44,\n      40,   42,   78,\n      44,   40,   78,\n      25,   49,   45,\n      45,   46,   22,\n      46,   45,   49,\n      47,   46,   52,\n      48,   46,   47,\n      46,   48,   22,\n      58,   59,   57,\n      49,   51,   50,\n      50,   52,   49,\n      51,   49,   25,\n      50,   57,   52,\n      52,   53,   47,\n      53,   52,   57,\n      53,   55,   47,\n      54,   53,   59,\n      55,   53,   54,\n      53,   57,   59,\n      56,   57,   50,\n      57,   56,   58,\n      58,   79,   59,\n      59,   60,   54,\n      60,   59,   79,\n      60,   80,   54,\n      61,   79,   58,\n      62,   51,   25,\n      39,   64,   62,\n      51,   62,   64,\n      50,   51,   66,\n      51,   64,   66,\n      63,   64,   39,\n      64,   63,   65,\n      65,   66,   64,\n      66,   56,   50,\n      56,   66,   67,\n      65,   67,   66,\n      58,   56,   70,\n      56,   67,   70,\n      67,   69,   68,\n      68,   70,   67,\n      69,   67,   65,\n      70,   61,   58,\n      68,   81,   70,\n      61,   70,   81,\n      71,   73,   84,\n      71,   81,   68,\n      72,   69,   65,\n      65,   63,   72,\n      68,   69,   73,\n      69,   72,   82,\n      73,   69,   82,\n      44,   63,   39,\n      63,   44,   83,\n      72,   63,   83,\n      73,   71,   68,\n};\n\n\n// 0x07021FFC - 0x07022516\nstatic const PaintingData inside_castle_seg7_painting_texture_map_top_07021FFC[] = {\n    85, // num mappings\n    // Format:\n    // mesh vtx ID, texture X, texture Y\n       0, 2016,   72,\n       1, 2016,    0,\n       2, 1843,    0,\n       3, 1843,  174,\n       4, 2016,  276,\n       5, 1671,   72,\n       6, 1671,    0,\n       8,  989,   72,\n       7,  989,    0,\n      10,  821,    0,\n       9, 1162,    0,\n      11,  821,  174,\n      12,  989,  276,\n      13, 1162,  174,\n      14, 1330,   72,\n      15, 1502,    0,\n      16, 1671,  276,\n      17, 1502,  174,\n      18, 1330,  276,\n      19, 1843,  992,\n      20, 2016,  889,\n      22, 2016,  685,\n      21, 1843,  583,\n      23, 1843,  787,\n      24, 1671,  889,\n      25, 1502,  992,\n      26, 1502,  583,\n      27, 1671,  685,\n      28, 1671,  481,\n      30, 1502,  787,\n      29, 1330,  889,\n      31, 1162,  992,\n      32, 1330,  481,\n      33, 1162,  583,\n      34, 1330,  685,\n      35, 1162,  787,\n      36,  989,  889,\n      37,  821,  992,\n      39,  821,  583,\n      38,  989,  685,\n      40,  989,  481,\n      41, 2016,  481,\n      42, 1843,  378,\n      43, 1502,  378,\n      44, 1162,  378,\n      45,  821,  378,\n      87,  649,   72,\n      88,  -32,    0,\n      90,  140,    0,\n      89,  -32,   72,\n      92,  308,   72,\n      91,  140,  174,\n      94,  481,  174,\n      93,  649,  276,\n      95,  481,    0,\n      96,  308,  276,\n      97,  821,  787,\n      98,  649,  889,\n      99,  481,  992,\n     102,  649,  481,\n     101,  649,  685,\n     100,  481,  583,\n     103,  481,  787,\n     104,  308,  889,\n     105,  140,  992,\n     108,  308,  481,\n     107,  308,  685,\n     106,  140,  583,\n     110,  -32,  889,\n     109,  140,  787,\n     111,  -32,  481,\n     112,  481,  378,\n     113,  140,  378,\n     141, 1330,    0,\n     142, 2016,  992,\n     144, 1671,  992,\n     145, 1330,  992,\n     146,  989,  992,\n     147,  649,    0,\n     148,  -32,  276,\n     149,  308,    0,\n     150,  649,  992,\n     151,  308,  992,\n     152,  -32,  685,\n     153,  -32,  992,\n\n    132, // num groups\n    // Grouped by 5 + one remainder group,\n    // = 15 vertices per group + a few extra triangles\n      10,    7,   13,\n       0,    1,    2,\n       3,    0,    2,\n       4,    0,    3,\n       5,    2,    6,\n       2,    5,    3,\n       7,    8,    9,\n       8,    7,   10,\n      11,    7,    9,\n      12,    7,   11,\n       7,   12,   13,\n      13,   14,   10,\n      14,   73,   10,\n       5,    6,   15,\n       5,   16,    3,\n      16,    5,   17,\n      17,    5,   15,\n      14,   15,   73,\n      15,   14,   17,\n      18,   14,   13,\n      14,   18,   17,\n      19,   74,   20,\n      19,   20,   23,\n      28,   27,   22,\n      21,   41,   22,\n      22,   23,   21,\n      20,   21,   23,\n      23,   24,   19,\n      22,   27,   23,\n      24,   23,   27,\n      19,   24,   75,\n      25,   75,   24,\n      25,   24,   29,\n      24,   27,   29,\n      26,   29,   27,\n      27,   28,   26,\n      31,   36,   77,\n      26,   34,   29,\n      29,   30,   25,\n      30,   29,   34,\n      25,   30,   76,\n      31,   76,   30,\n      31,   30,   35,\n      30,   34,   35,\n      32,   34,   26,\n      33,   35,   34,\n      34,   32,   33,\n      35,   36,   31,\n      33,   39,   35,\n      36,   35,   39,\n      37,   36,   56,\n      36,   39,   56,\n      37,   77,   36,\n      28,   16,   43,\n      38,   56,   39,\n      39,   40,   38,\n      40,   39,   33,\n      22,   41,   42,\n      41,    4,   42,\n       3,   42,    4,\n      42,   28,   22,\n      28,   42,   16,\n       3,   16,   42,\n      26,   28,   43,\n      17,   43,   16,\n      43,   32,   26,\n      32,   43,   18,\n      17,   18,   43,\n      33,   32,   44,\n      32,   18,   44,\n      13,   44,   18,\n      13,   12,   44,\n      44,   40,   33,\n      40,   44,   12,\n      38,   40,   45,\n      40,   12,   45,\n      11,   45,   12,\n       9,   46,   11,\n      46,    9,   78,\n      47,   49,   48,\n      48,   49,   51,\n      49,   79,   51,\n      50,   80,   48,\n      51,   50,   48,\n      57,   56,   60,\n      46,   53,   11,\n      52,   46,   54,\n      53,   46,   52,\n      46,   78,   54,\n      54,   50,   52,\n      50,   54,   80,\n      50,   55,   52,\n      55,   50,   51,\n      38,   60,   56,\n      56,   57,   37,\n      58,   57,   62,\n      57,   60,   62,\n      58,   81,   57,\n      37,   57,   81,\n      59,   60,   38,\n      60,   59,   61,\n      61,   62,   60,\n      62,   63,   58,\n      63,   62,   66,\n      61,   66,   62,\n      63,   66,   69,\n      58,   63,   82,\n      64,   82,   63,\n      64,   63,   69,\n      45,   59,   38,\n      65,   66,   61,\n      66,   65,   67,\n      67,   69,   66,\n      68,   69,   83,\n      69,   68,   64,\n      67,   83,   69,\n      64,   68,   84,\n      70,   83,   67,\n      11,   53,   45,\n      59,   45,   53,\n      59,   53,   71,\n      61,   59,   71,\n      52,   71,   53,\n      52,   55,   71,\n      65,   71,   55,\n      71,   65,   61,\n      65,   55,   72,\n      67,   65,   72,\n      51,   72,   55,\n      70,   72,   79,\n      51,   79,   72,\n      72,   70,   67,\n};\n\n\n// 0x07022518\nstatic const PaintingData *const inside_castle_seg7_painting_texture_maps_07022518[] = {\n    inside_castle_seg7_painting_texture_map_bottom_07021AE0,\n    inside_castle_seg7_painting_texture_map_top_07021FFC,\n};\n\nUNUSED static const u64 castle_inside_unused_0 = 0x0;\n\n\n// 0x07022528 - 0x07022540\nstatic const Lights1 inside_castle_seg7_lights_07022528 = gdSPDefLights1(\n    0x50, 0x50, 0x50,\n    0xff, 0xff, 0xff, 0x32, 0x32, 0x32\n);\n\n// 0x07022540 - 0x07022558\n// No gdSPDefLights1 macro defined because of odd different light value (0xff and 0xfa)\nstatic const Lights1 inside_castle_seg7_lights_07022540 = {\n    {{  {0x40, 0x40, 0x80}, 0, {0x40, 0x40, 0x80}, 0} },\n    {{{ {0x64, 0x64, 0xff}, 0, {0x64, 0x64, 0xfa}, 0, {0x28, 0x28, 0x28},0} }}\n};\n\n// 0x07022558 - 0x07022598\nstatic const Vtx inside_castle_seg7_vertex_07022558[] = {\n    {{{     0,      0,      0}, 0, {   -32,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   614,      0,      0}, 0, {  6100,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   614,    614,      0}, 0, {  6100,  -5142}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,    614,      0}, 0, {   -32,  -5142}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07022598 - 0x070225D8\nstatic const Vtx inside_castle_seg7_vertex_07022598[] = {\n    {{{     0,      0,      0}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   614,      0,      0}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   614,    614,      0}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,    614,      0}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// TODO: this is unused\n// 0x070225D8 - 0x07022610\nconst Gfx inside_castle_seg7_dl_070225D8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPLight(&inside_castle_seg7_lights_07022528.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07022528.a, 2),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsSPVertex(inside_castle_seg7_vertex_07022558, 4, 0),\n    gsSPEndDisplayList(),\n};\n\n// TODO: this is unused\n// 0x07022610 - 0x07022640\nconst Gfx inside_castle_seg7_dl_07022610[] = {\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSP1Triangle( 0,  2,  3, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x07022640 - 0x07022660\nstatic const Gfx inside_castle_seg7_painting_dl_07022640[] = {\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x07022660 - 0x07023042\nstatic const PaintingData inside_castle_seg7_painting_env_map_texture_map_07022660[] = {\n    157, // num mappings\n    // Format:\n    // mesh vtx ID, texture X, texture Y\n       0, 6100, -4832,\n       1, 6100, -5142,\n       2, 5582, -5142,\n       3, 5582, -4526,\n       4, 6100, -4218,\n       5, 5070, -4832,\n       6, 5070, -5142,\n       7, 3030, -5142,\n       8, 3030, -4832,\n       9, 3540, -5142,\n      10, 2520, -5142,\n      11, 2520, -4526,\n      12, 3030, -4218,\n      13, 3540, -4526,\n      14, 4050, -4832,\n      15, 4560, -5142,\n      16, 5070, -4218,\n      17, 4560, -4526,\n      18, 4050, -4218,\n      19, 5582, -2074,\n      20, 6100, -2380,\n      21, 5582, -3300,\n      22, 6100, -2994,\n      23, 5582, -2686,\n      24, 5070, -2380,\n      25, 4560, -2074,\n      26, 4560, -3300,\n      27, 5070, -2994,\n      28, 5070, -3606,\n      29, 4050, -2380,\n      30, 4560, -2686,\n      31, 3540, -2074,\n      32, 4050, -3606,\n      33, 3540, -3300,\n      34, 4050, -2994,\n      35, 3540, -2686,\n      36, 3030, -2380,\n      37, 2520, -2074,\n      38, 3030, -2994,\n      39, 2520, -3300,\n      40, 3030, -3606,\n      41, 6100, -3606,\n      42, 5582, -3912,\n      43, 4560, -3912,\n      44, 3540, -3912,\n      45, 2520, -3912,\n      46, 4050, -1768,\n      47, 5070, -1768,\n      48, 3030, -1768,\n      49, 6100,  684,\n      50, 6100,  990,\n      51, 5582,  990,\n      52, 5582, -236,\n      53, 6100,   70,\n      54, 5070,  684,\n      55, 5582,  378,\n      56, 4560,  990,\n      57, 5070,  990,\n      58, 4560, -236,\n      59, 5070,   70,\n      60, 5070, -542,\n      61, 4050,  684,\n      62, 4560,  378,\n      63, 3540,  990,\n      64, 4050,  990,\n      65, 4050,   70,\n      66, 3540, -236,\n      67, 4050, -542,\n      68, 3030,  684,\n      69, 3540,  378,\n      70, 2520,  990,\n      71, 3030,  990,\n      72, 2520, -236,\n      73, 3030,   70,\n      74, 3030, -542,\n      75, 6100, -542,\n      76, 5582, -1462,\n      77, 6100, -1154,\n      78, 5582, -848,\n      79, 4560, -1462,\n      80, 5070, -1154,\n      81, 4560, -848,\n      82, 3540, -1462,\n      83, 4050, -1154,\n      84, 3540, -848,\n      85, 2520, -1462,\n      86, 3030, -1154,\n      87, 2010, -4832,\n      88,    0, -5142,\n      89,    0, -4832,\n      90,  478, -5142,\n      91,  478, -4526,\n      92,  988, -4832,\n      93, 2010, -4218,\n      94, 1498, -4526,\n      95, 1498, -5142,\n      96,  988, -4218,\n      97, 2520, -2686,\n      98, 2010, -2380,\n      99, 1498, -2074,\n     100, 1498, -3300,\n     101, 2010, -2994,\n     102, 2010, -3606,\n     103, 1498, -2686,\n     104,  988, -2380,\n     105,  478, -2074,\n     106,  478, -3300,\n     107,  988, -2994,\n     108,  988, -3606,\n     109,  478, -2686,\n     110,    0, -2380,\n     111,    0, -3606,\n     112, 1498, -3912,\n     113,  478, -3912,\n     114, 1498, -1462,\n     115,  988, -1768,\n     116, 2010, -1768,\n     117,    0, -1768,\n     118,  478, -1462,\n     119, 2010,  684,\n     120, 2520,  378,\n     121, 2010,  990,\n     122, 1498,  990,\n     123, 2010, -542,\n     124, 2010,   70,\n     125, 1498, -236,\n     126,  988,  684,\n     127, 1498,  378,\n     128,  988,  990,\n     129,  478,  990,\n     130,  478, -236,\n     131,  988,   70,\n     132,  988, -542,\n     133,    0,  684,\n     134,  478,  378,\n     135,    0, -542,\n     136, 2520, -848,\n     137, 2010, -1154,\n     138, 1498, -848,\n     139,  988, -1154,\n     140,  478, -848,\n     141, 4050, -5142,\n     142, 6100, -2074,\n     143, 6100, -1768,\n     144, 5070, -2074,\n     145, 4050, -2074,\n     146, 3030, -2074,\n     147, 2010, -5142,\n     148,    0, -4218,\n     149,  988, -5142,\n     150, 2010, -2074,\n     151,  988, -2074,\n     152,    0, -2994,\n     153,    0, -2074,\n     154,    0, -1154,\n     155,    0,   70,\n     156,    0,  990,\n\n// inside_castle_seg7_painting_triangles_07022A10:\n    264, // num groups\n    // Grouped by 5 + one remainder group,\n    // = 15 vertices per group + a few extra triangles\n       8,   12,   13,\n       0,    1,    2,\n       3,    0,    2,\n       4,    0,    3,\n       5,    2,    6,\n       2,    5,    3,\n       7,    8,    9,\n       8,    7,   10,\n      11,    8,   10,\n      12,    8,   11,\n       9,    8,   13,\n      13,   14,    9,\n      14,  141,    9,\n       5,    6,   15,\n       5,   16,    3,\n      16,    5,   17,\n      17,    5,   15,\n      14,   15,  141,\n      15,   14,   17,\n      18,   14,   13,\n      14,   18,   17,\n      19,  142,   20,\n      19,   20,   23,\n      28,   27,   21,\n      21,   23,   22,\n      22,   41,   21,\n      20,   22,   23,\n      23,   24,   19,\n      21,   27,   23,\n      24,   23,   27,\n      25,  144,   24,\n      19,   24,  144,\n      24,   27,   30,\n      25,   24,   30,\n      26,   30,   27,\n      27,   28,   26,\n      36,   38,   97,\n      26,   34,   30,\n      29,   30,   34,\n      30,   29,   25,\n      25,   29,  145,\n      31,  145,   29,\n      31,   29,   35,\n      29,   34,   35,\n      32,   34,   26,\n      33,   35,   34,\n      34,   32,   33,\n      33,   38,   35,\n      35,   36,   31,\n      36,   35,   38,\n      37,   36,   97,\n      37,  146,   36,\n      31,   36,  146,\n      28,   16,   43,\n      38,   40,   39,\n      39,   97,   38,\n      40,   38,   33,\n      21,   41,   42,\n      41,    4,   42,\n       3,   42,    4,\n      42,   28,   21,\n      28,   42,   16,\n       3,   16,   42,\n      26,   28,   43,\n      17,   43,   16,\n      43,   32,   26,\n      32,   43,   18,\n      17,   18,   43,\n      33,   32,   44,\n      32,   18,   44,\n      13,   44,   18,\n      44,   40,   33,\n      13,   12,   44,\n      40,   44,   12,\n      39,   40,   45,\n      40,   12,   45,\n      48,   31,  146,\n      11,   45,   12,\n      25,   47,  144,\n      46,   25,  145,\n      47,   19,  144,\n      19,  143,  142,\n      31,   46,  145,\n      60,   59,   52,\n      49,   53,   55,\n      50,   49,   51,\n      51,   49,   55,\n      52,   55,   53,\n      53,   75,   52,\n      54,   55,   59,\n      52,   59,   55,\n      55,   54,   51,\n      54,   59,   62,\n      56,   54,   62,\n      57,   54,   56,\n      54,   57,   51,\n      58,   62,   59,\n      59,   60,   58,\n      68,   71,   63,\n      61,   62,   65,\n      58,   65,   62,\n      62,   61,   56,\n      61,   65,   69,\n      63,   61,   69,\n      64,   61,   63,\n      61,   64,   56,\n      65,   67,   66,\n      66,   69,   65,\n      67,   65,   58,\n      68,   69,   73,\n      69,   68,   63,\n      66,   73,   69,\n      68,   73,  120,\n      70,   68,  120,\n      71,   68,   70,\n      72,  120,   73,\n      73,   74,   72,\n      74,   73,   66,\n      75,   77,   78,\n      52,   75,   78,\n      76,   78,   77,\n      77,  143,   76,\n      76,   80,   78,\n      60,   78,   80,\n      78,   60,   52,\n      46,   83,   79,\n      58,   60,   81,\n      60,   80,   81,\n      79,   81,   80,\n      80,   47,   79,\n      47,   80,   76,\n      81,   67,   58,\n      67,   81,   83,\n      79,   83,   81,\n      66,   67,   84,\n      67,   83,   84,\n      82,   84,   83,\n      83,   46,   82,\n      84,   74,   66,\n      82,   86,   84,\n      74,   84,   86,\n      74,   86,  136,\n      72,   74,  136,\n      85,  136,   86,\n      86,   48,   85,\n      48,   86,   82,\n      25,   46,   79,\n      79,   47,   25,\n      82,   46,   31,\n      19,   47,   76,\n      76,  143,   19,\n      31,   48,   82,\n      37,   48,  146,\n      85,   48,   37,\n      10,   87,   11,\n      87,   10,  147,\n      92,   95,  149,\n      88,   89,   90,\n      89,  148,   91,\n      90,   89,   91,\n      91,   92,   90,\n      92,  149,   90,\n      93,   87,   94,\n      87,   93,   11,\n      94,   87,   95,\n      87,  147,   95,\n      95,   92,   94,\n      96,   92,   91,\n      92,   96,   94,\n      39,  101,   97,\n      97,   98,   37,\n      98,   97,  101,\n      99,   98,  103,\n      99,  150,   98,\n      37,   98,  150,\n      98,  101,  103,\n     100,  103,  101,\n     101,  102,  100,\n     102,  101,   39,\n     100,  107,  103,\n     103,  104,   99,\n     104,  103,  107,\n     105,  104,  109,\n     105,  151,  104,\n      99,  104,  151,\n     104,  107,  109,\n     106,  109,  107,\n     107,  108,  106,\n     108,  107,  100,\n     109,  110,  105,\n     106,  152,  109,\n     110,  109,  152,\n     105,  110,  153,\n     111,  152,  106,\n      11,   93,   45,\n     102,   45,   93,\n      45,  102,   39,\n     102,   93,  112,\n     100,  102,  112,\n      94,  112,   93,\n     112,  108,  100,\n     108,  112,   96,\n      94,   96,  112,\n     106,  108,  113,\n     108,   96,  113,\n      91,  113,   96,\n      91,  148,  113,\n     113,  111,  106,\n     111,  113,  148,\n     114,  116,   99,\n      99,  115,  114,\n     115,   99,  151,\n      99,  116,  150,\n      72,  124,  120,\n     116,   37,  150,\n      37,  116,   85,\n     117,  105,  153,\n     105,  115,  151,\n     105,  117,  118,\n     118,  115,  105,\n     119,  120,  124,\n     120,  119,   70,\n     119,  124,  127,\n     119,  121,   70,\n     121,  119,  122,\n     122,  119,  127,\n     123,  124,   72,\n     124,  123,  125,\n     125,  127,  124,\n     126,  127,  131,\n     127,  126,  122,\n     125,  131,  127,\n     126,  131,  134,\n     128,  126,  129,\n     129,  126,  134,\n     126,  128,  122,\n     136,  123,   72,\n     130,  134,  131,\n     131,  132,  130,\n     132,  131,  125,\n     133,  134,  155,\n     134,  133,  129,\n     130,  155,  134,\n     133,  156,  129,\n     135,  155,  130,\n     123,  136,  137,\n      85,  137,  136,\n     139,  115,  118,\n     123,  137,  138,\n     125,  123,  138,\n     114,  138,  137,\n     137,  116,  114,\n     116,  137,   85,\n     114,  139,  138,\n     132,  138,  139,\n     138,  132,  125,\n     132,  139,  140,\n     130,  132,  140,\n     115,  139,  114,\n     118,  140,  139,\n     135,  140,  154,\n     118,  154,  140,\n     140,  135,  130,\n     117,  154,  118,\n};\n\n\n// 0x07023044 - 0x07023048\nstatic const PaintingData *const inside_castle_seg7_painting_env_map_texture_maps_07023044[] = {\n    inside_castle_seg7_painting_env_map_texture_map_07022660,\n};\n\nUNUSED static const u64 castle_inside_unused_1 = 0x0;\n\n\n// 0x07023050 - 0x070230B0\nstatic const Gfx inside_castle_seg7_painting_dl_07023050[] = {\n    gsSPDisplayList(inside_castle_seg7_dl_07021A48),\n    gsSPVertex(inside_castle_seg7_vertex_07021818, 8, 0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_0700B800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(inside_castle_seg7_dl_07021A18),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_0700A800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(inside_castle_seg7_dl_07021A30),\n    gsSPDisplayList(inside_castle_seg7_dl_07021AA0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070230B0 - 0x07023110\nstatic const Gfx inside_castle_seg7_painting_dl_070230B0[] = {\n    gsSPDisplayList(inside_castle_seg7_dl_07021A48),\n    gsSPVertex(inside_castle_seg7_vertex_07021818, 8, 0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_0700D800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(inside_castle_seg7_dl_07021A18),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_0700C800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(inside_castle_seg7_dl_07021A30),\n    gsSPDisplayList(inside_castle_seg7_dl_07021AA0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07023110 - 0x07023170\nstatic const Gfx inside_castle_seg7_painting_dl_07023110[] = {\n    gsSPDisplayList(inside_castle_seg7_dl_07021A48),\n    gsSPVertex(inside_castle_seg7_vertex_07021818, 8, 0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_0700F800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(inside_castle_seg7_dl_07021A18),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_0700E800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(inside_castle_seg7_dl_07021A30),\n    gsSPDisplayList(inside_castle_seg7_dl_07021AA0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07023170 - 0x070231D0\nstatic const Gfx inside_castle_seg7_painting_dl_07023170[] = {\n    gsSPDisplayList(inside_castle_seg7_dl_07021A48),\n    gsSPVertex(inside_castle_seg7_vertex_07021818, 8, 0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07011800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(inside_castle_seg7_dl_07021A18),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07010800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(inside_castle_seg7_dl_07021A30),\n    gsSPDisplayList(inside_castle_seg7_dl_07021AA0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070231D0 - 0x07023230\nstatic const Gfx inside_castle_seg7_painting_dl_070231D0[] = {\n    gsSPDisplayList(inside_castle_seg7_dl_07021A48),\n    gsSPVertex(inside_castle_seg7_vertex_07021818, 8, 0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07012800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(inside_castle_seg7_dl_07021A18),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07013800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(inside_castle_seg7_dl_07021A30),\n    gsSPDisplayList(inside_castle_seg7_dl_07021AA0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07023230 - 0x07023290\nstatic const Gfx inside_castle_seg7_painting_dl_07023230[] = {\n    gsSPDisplayList(inside_castle_seg7_dl_07021A48),\n    gsSPVertex(inside_castle_seg7_vertex_07021818, 8, 0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07015800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(inside_castle_seg7_dl_07021A18),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07014800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(inside_castle_seg7_dl_07021A30),\n    gsSPDisplayList(inside_castle_seg7_dl_07021AA0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07023290 - 0x070232F0\nstatic const Gfx inside_castle_seg7_painting_dl_07023290[] = {\n    gsSPDisplayList(inside_castle_seg7_dl_07021A48),\n    gsSPVertex(inside_castle_seg7_vertex_07021818, 8, 0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07018800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(inside_castle_seg7_dl_07021A18),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07017800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(inside_castle_seg7_dl_07021A30),\n    gsSPDisplayList(inside_castle_seg7_dl_07021AA0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070232F0 - 0x07023350\nstatic const Gfx inside_castle_seg7_painting_dl_070232F0[] = {\n    gsSPDisplayList(inside_castle_seg7_dl_07021A48),\n    gsSPVertex(inside_castle_seg7_vertex_07021818, 8, 0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_0701A800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(inside_castle_seg7_dl_07021A18),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07019800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(inside_castle_seg7_dl_07021A30),\n    gsSPDisplayList(inside_castle_seg7_dl_07021AA0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07023350 - 0x070233B0\nstatic const Gfx inside_castle_seg7_painting_dl_07023350[] = {\n    gsSPDisplayList(inside_castle_seg7_dl_07021A48),\n    gsSPVertex(inside_castle_seg7_vertex_07021818, 8, 0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_0701C800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(inside_castle_seg7_dl_07021A18),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_0701B800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(inside_castle_seg7_dl_07021A30),\n    gsSPDisplayList(inside_castle_seg7_dl_07021AA0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070233B0 - 0x07023410\nstatic const Gfx inside_castle_seg7_painting_dl_070233B0[] = {\n    gsSPDisplayList(inside_castle_seg7_dl_07021A48),\n    gsSPVertex(inside_castle_seg7_vertex_07021818, 8, 0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_0701E800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(inside_castle_seg7_dl_07021A18),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_0701D800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(inside_castle_seg7_dl_07021A30),\n    gsSPDisplayList(inside_castle_seg7_dl_07021AA0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07023410 - 0x070234C0\nstatic const Gfx inside_castle_seg7_painting_dl_07023410[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsSPVertex(inside_castle_seg7_vertex_07021898, 8, 0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07020800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(inside_castle_seg7_dl_07021A18),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_0701F800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(inside_castle_seg7_dl_07021A30),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n// 0x070234C0 - 0x07023520\nconst Gfx inside_castle_seg7_dl_070234C0[] = {\n    gsSPDisplayList(inside_castle_seg7_dl_07021A48),\n    gsSPVertex(inside_castle_seg7_vertex_07021918, 8, 0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_0700D800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(inside_castle_seg7_dl_07021A18),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_0700C800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(inside_castle_seg7_dl_07021A30),\n    gsSPDisplayList(inside_castle_seg7_dl_07021AA0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07023520 - 0x07023580\nconst Gfx inside_castle_seg7_dl_07023520[] = {\n    gsSPDisplayList(inside_castle_seg7_dl_07021A48),\n    gsSPVertex(inside_castle_seg7_vertex_07021998, 8, 0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_0700D800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(inside_castle_seg7_dl_07021A18),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_0700C800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(inside_castle_seg7_dl_07021A30),\n    gsSPDisplayList(inside_castle_seg7_dl_07021AA0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07023580 - 0x070235B8\nstatic const Gfx inside_castle_seg7_painting_dl_07023580[] = {\n    gsDPPipeSync(),\n    gsSPLight(&inside_castle_seg7_lights_07022540.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07022540.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07022598, 4, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSP1Triangle( 0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070235B8 - 0x070235C0\nstatic const Gfx inside_castle_seg7_painting_dl_070235B8[] = {\n    gsSPBranchList(inside_castle_seg7_painting_dl_07023580),\n};\n\nALIGNED8 static const Texture *const inside_castle_seg7_painting_textures_070235C0[] = {\n    inside_castle_seg7_texture_0700B800, inside_castle_seg7_texture_0700A800,\n};\n\nALIGNED8 static const Texture *const inside_castle_seg7_painting_textures_070235C8[] = {\n    inside_castle_seg7_texture_0700D800, inside_castle_seg7_texture_0700C800,\n};\n\nALIGNED8 static const Texture *const inside_castle_seg7_painting_textures_070235D0[] = {\n    inside_castle_seg7_texture_0700F800, inside_castle_seg7_texture_0700E800,\n};\n\nALIGNED8 static const Texture *const inside_castle_seg7_painting_textures_070235D8[] = {\n    inside_castle_seg7_texture_07011800, inside_castle_seg7_texture_07010800,\n};\n\nALIGNED8 static const Texture *const inside_castle_seg7_painting_textures_070235E0[] = {\n    inside_castle_seg7_texture_07012800, inside_castle_seg7_texture_07013800,\n};\n\nALIGNED8 static const Texture *const inside_castle_seg7_painting_textures_070235E8[] = {\n    inside_castle_seg7_texture_07015800, inside_castle_seg7_texture_07014800,\n};\n\nALIGNED8 static const Texture *const inside_castle_seg7_painting_textures_070235F0[] = {\n    inside_castle_seg7_texture_07016800,\n};\n\nALIGNED8 static const Texture *const inside_castle_seg7_painting_textures_070235F4[] = {\n    inside_castle_seg7_texture_07017000,\n};\n\nALIGNED8 static const Texture *const inside_castle_seg7_painting_textures_070235F8[] = {\n    inside_castle_seg7_texture_07018800, inside_castle_seg7_texture_07017800,\n};\n\nALIGNED8 static const Texture *const inside_castle_seg7_painting_textures_07023600[] = {\n    inside_castle_seg7_texture_0701A800, inside_castle_seg7_texture_07019800,\n};\n\nALIGNED8 static const Texture *const inside_castle_seg7_painting_textures_07023608[] = {\n    inside_castle_seg7_texture_0701C800, inside_castle_seg7_texture_0701B800,\n};\n\nALIGNED8 static const Texture *const inside_castle_seg7_painting_textures_07023610[] = {\n    inside_castle_seg7_texture_0701E800, inside_castle_seg7_texture_0701D800,\n};\n\nALIGNED8 static const Texture *const inside_castle_seg7_painting_textures_07023618[] = {\n    inside_castle_seg7_texture_07020800, inside_castle_seg7_texture_0701F800,\n};\n\n// 0x07023620 - 0x07023698\nstruct Painting bob_painting = {\n    /* id */ 0x0000,\n    /* Image Count */ 0x02,\n    /* Texture Type */ PAINTING_IMAGE,\n    /* Floor Status */ 0x00, 0x00, 0x00 /* which of the painting's nearby special floors Mario's on */,\n    /* Ripple Status */ 0x00,\n    /* Rotation */     0.0f,    90.0f,\n    /* Position */ -5222.4f,   409.6f,   -153.6f,\n    /*                         curr   passive     entry */\n    /* Ripple Magnitude */     0.0f,    20.0f,    80.0f,\n    /* Ripple Decay */         1.0f,  0.9608f,  0.9524f,\n    /* Ripple Rate */          0.0f,    0.24f,    0.14f,\n    /* Ripple Dispersion */    0.0f,    40.0f,    30.0f,\n    /* Curr Ripple Timer */    0.0f,\n    /* Curr Ripple x, y */     0.0f,    0.0f,\n    /* Normal DList */ inside_castle_seg7_painting_dl_07023050,\n    /* Texture Maps */ inside_castle_seg7_painting_texture_maps_07022518,\n    /* Textures */     inside_castle_seg7_painting_textures_070235C0,\n    /* Texture w, h */ 64, 32,\n    /* Ripple DList */ inside_castle_seg7_painting_dl_07021AC0,\n    /* Ripple Trigger */ RIPPLE_TRIGGER_PROXIMITY,\n    /* Alpha */ 0xFF,\n    /* Mario Below */  0x00, 0x00, 0x00, /* Whether or not Mario is below the painting */\n    /* Size */  614.0f,\n};\n\n// 0x07023698 - 0x07023710\nstruct Painting ccm_painting = {\n    /* id */ 0x0001,\n    /* Image Count */ 0x02,\n    /* Texture Type */ PAINTING_IMAGE,\n    /* Floor Status */ 0x00, 0x00, 0x00 /* which of the painting's nearby special floors Mario's on */,\n    /* Ripple Status */ 0x00,\n    /* Rotation */     0.0f,     0.0f,\n    /* Position */ -2611.2f,  -307.2f, -4352.0f,\n    /*                         curr   passive     entry */\n    /* Ripple Magnitude */     0.0f,    20.0f,    80.0f,\n    /* Ripple Decay */         1.0f,  0.9608f,  0.9524f,\n    /* Ripple Rate */          0.0f,    0.24f,    0.14f,\n    /* Ripple Dispersion */    0.0f,    40.0f,    30.0f,\n    /* Curr Ripple Timer */    0.0f,\n    /* Curr Ripple x, y */     0.0f,     0.0f,\n    /* Normal DList */ inside_castle_seg7_painting_dl_070230B0,\n    /* Texture Maps */ inside_castle_seg7_painting_texture_maps_07022518,\n    /* Textures */     inside_castle_seg7_painting_textures_070235C8,\n    /* Texture w, h */ 64, 32,\n    /* Ripple DList */ inside_castle_seg7_painting_dl_07021AC0,\n    /* Ripple Trigger */ RIPPLE_TRIGGER_PROXIMITY,\n    /* Alpha */ 0xFF,\n    /* Mario Below */  0x00, 0x00, 0x00, /* Whether or not Mario is below the painting */\n    /* Size */  614.0f,\n};\n\n// 0x07023710 - 0x07023788\nstruct Painting wf_painting = {\n    /* id */ 0x0002,\n    /* Image Count */ 0x02,\n    /* Texture Type */ PAINTING_IMAGE,\n    /* Floor Status */ 0x00, 0x00, 0x00 /* which of the painting's nearby special floors Mario's on */,\n    /* Ripple Status */ 0x00,\n    /* Rotation */     0.0f,     0.0f,\n    /* Position */   -51.2f,  -204.8f, -4505.6f,\n    /*                         curr   passive     entry */\n    /* Ripple Magnitude */     0.0f,    20.0f,    80.0f,\n    /* Ripple Decay */         1.0f,  0.9608f,  0.9524f,\n    /* Ripple Rate */          0.0f,    0.24f,    0.14f,\n    /* Ripple Dispersion */    0.0f,    40.0f,    30.0f,\n    /* Curr Ripple Timer */    0.0f,\n    /* Curr Ripple x, y */     0.0f,     0.0f,\n    /* Normal DList */ inside_castle_seg7_painting_dl_07023110,\n    /* Texture Maps */ inside_castle_seg7_painting_texture_maps_07022518,\n    /* Textures */     inside_castle_seg7_painting_textures_070235D0,\n    /* Texture w, h */ 64, 32,\n    /* Ripple DList */ inside_castle_seg7_painting_dl_07021AC0,\n    /* Ripple Trigger */ RIPPLE_TRIGGER_PROXIMITY,\n    /* Alpha */ 0xFF,\n    /* Mario Below */  0x00, 0x00, 0x00, /* Whether or not Mario is below the painting */\n    /* Size */  614.0f,\n};\n\n// 0x07023788 - 0x07023800\nstruct Painting jrb_painting = {\n    /* id */ 0x0003,\n    /* Image Count */ 0x02,\n    /* Texture Type */ PAINTING_IMAGE,\n    /* Floor Status */ 0x00, 0x00, 0x00 /* which of the painting's nearby special floors Mario's on */,\n    /* Ripple Status */ 0x00,\n    /* Rotation */     0.0f,   270.0f,\n    /* Position */  4300.8f,   409.6f,  -537.6f,\n    /*                         curr   passive     entry */\n    /* Ripple Magnitude */     0.0f,    20.0f,    80.0f,\n    /* Ripple Decay */         1.0f,  0.9608f,  0.9524f,\n    /* Ripple Rate */          0.0f,    0.24f,    0.14f,\n    /* Ripple Dispersion */    0.0f,    40.0f,    30.0f,\n    /* Curr Ripple Timer */    0.0f,\n    /* Curr Ripple x, y */     0.0f,     0.0f,\n    /* Normal DList */ inside_castle_seg7_painting_dl_07023170,\n    /* Texture Maps */ inside_castle_seg7_painting_texture_maps_07022518,\n    /* Textures */     inside_castle_seg7_painting_textures_070235D8,\n    /* Texture w, h */ 64, 32,\n    /* Ripple DList */ inside_castle_seg7_painting_dl_07021AC0,\n    /* Ripple Trigger */ RIPPLE_TRIGGER_PROXIMITY,\n    /* Alpha */ 0xFF,\n    /* Mario Below */  0x00, 0x00, 0x00, /* Whether or not Mario is below the painting */\n    /* Size */  614.0f,\n};\n\n// 0x07023800 - 0x07023878\nstruct Painting lll_painting = {\n    /* id */ 0x0004,\n    /* Image Count */ 0x02,\n    /* Texture Type */ PAINTING_IMAGE,\n    /* Floor Status */ 0x00, 0x00, 0x00 /* which of the painting's nearby special floors Mario's on */,\n    /* Ripple Status */ 0x00,\n    /* Rotation */     0.0f,     0.0f,\n    /* Position */ -1689.6f, -1126.4f, -3942.4f,\n    /*                         curr   passive     entry */\n    /* Ripple Magnitude */     0.0f,    20.0f,    80.0f,\n    /* Ripple Decay */         1.0f,  0.9608f,  0.9524f,\n    /* Ripple Rate */          0.0f,    0.24f,    0.14f,\n    /* Ripple Dispersion */    0.0f,    40.0f,    30.0f,\n    /* Curr Ripple Timer */    0.0f,\n    /* Curr Ripple x, y */     0.0f,     0.0f,\n    /* Normal DList */ inside_castle_seg7_painting_dl_070231D0,\n    /* Texture Maps */ inside_castle_seg7_painting_texture_maps_07022518,\n    /* Textures */     inside_castle_seg7_painting_textures_070235E0,\n    /* Texture w, h */ 64, 32,\n    /* Ripple DList */ inside_castle_seg7_painting_dl_07021AC0,\n    /* Ripple Trigger */ RIPPLE_TRIGGER_PROXIMITY,\n    /* Alpha */ 0xFF,\n    /* Mario Below */  0x00, 0x00, 0x00, /* Whether or not Mario is below the painting */\n    /* Size */  614.0f,\n};\n\n// 0x07023878 - 0x070238F0\nstruct Painting ssl_painting = {\n    /* id */ 0x0005,\n    /* Image Count */ 0x02,\n    /* Texture Type */ PAINTING_IMAGE,\n    /* Floor Status */ 0x00, 0x00, 0x00 /* which of the painting's nearby special floors Mario's on */,\n    /* Ripple Status */ 0x00,\n    /* Rotation */     0.0f,   180.0f,\n    /* Position */ -2611.2f, -1177.6f, -1075.2f,\n    /*                         curr   passive     entry */\n    /* Ripple Magnitude */     0.0f,    20.0f,    80.0f,\n    /* Ripple Decay */         1.0f,  0.9608f,  0.9524f,\n    /* Ripple Rate */          0.0f,    0.24f,    0.14f,\n    /* Ripple Dispersion */    0.0f,    40.0f,    30.0f,\n    /* Curr Ripple Timer */    0.0f,\n    /* Curr Ripple x, y */     0.0f,     0.0f,\n    /* Normal DList */ inside_castle_seg7_painting_dl_07023230,\n    /* Texture Maps */ inside_castle_seg7_painting_texture_maps_07022518,\n    /* Textures */     inside_castle_seg7_painting_textures_070235E8,\n    /* Texture w, h */ 64, 32,\n    /* Ripple DList */ inside_castle_seg7_painting_dl_07021AC0,\n    /* Ripple Trigger */ RIPPLE_TRIGGER_PROXIMITY,\n    /* Alpha */ 0xFF,\n    /* Mario Below */  0x00, 0x00, 0x00, /* Whether or not Mario is below the painting */\n    /* Size */  614.0f,\n};\n\n// 0x070238F0 - 0x07023968\nstruct Painting hmc_painting = {\n    /* id */ 0x000E,\n    /* Image Count */ 0x01,\n    /* Texture Type */ PAINTING_ENV_MAP,\n    /* Floor Status */ 0x00, 0x00, 0x00 /* which of the painting's nearby special floors Mario's on */,\n    /* Ripple Status */ 0x00,\n    /* Rotation */   270.0f,   0.0f,\n    /* Position */  2099.2f, -1484.8f, -2278.4f,\n    /*                         curr   passive     entry */\n    /* Ripple Magnitude */     0.0f,    10.0f,    30.0f,\n    /* Ripple Decay */         1.0f,     1.0f,    0.98f,\n    /* Ripple Rate */          0.0f,    0.05f,    0.05f,\n    /* Ripple Dispersion */    0.0f,    15.0f,    15.0f,\n    /* Curr Ripple Timer */    0.0f,\n    /* Curr Ripple x, y */     0.0f,   0.0f,\n    /* Normal DList */ inside_castle_seg7_painting_dl_07023580,\n    /* Texture Maps */ inside_castle_seg7_painting_env_map_texture_maps_07023044,\n    /* Textures */     inside_castle_seg7_painting_textures_070235F0,\n    /* Texture w, h */ 32, 32,\n    /* Ripple DList */ inside_castle_seg7_painting_dl_07022640,\n    /* Ripple Trigger */ RIPPLE_TRIGGER_CONTINUOUS,\n    /* Alpha */ 0xFF,\n    /* Mario Below */  0x00, 0x00, 0x00, /* Whether or not Mario is below the painting */\n    /* Size */  768.0f,\n};\n\n// 0x07023968 - 0x070239E0\nstruct Painting ddd_painting = {\n    /* id */ 0x0007,\n    /* Image Count */ 0x01,\n    /* Texture Type */ PAINTING_ENV_MAP,\n    /* Floor Status */ 0x00, 0x00, 0x00 /* which of the painting's nearby special floors Mario's on */,\n    /* Ripple Status */ 0x00,\n    /* Rotation */    0.0f, 270.0f,\n    /* Position */ 3456.0f, -1075.2f, 1587.2f,\n    /*                         curr   passive     entry */\n    /* Ripple Magnitude */     0.0f,    10.0f,    30.0f,\n    /* Ripple Decay */         1.0f,     1.0f,    0.98f,\n    /* Ripple Rate */          0.0f,    0.05f,    0.05f,\n    /* Ripple Dispersion */    0.0f,    15.0f,    15.0f,\n    /* Curr Ripple Timer */    0.0f,\n    /* Curr Ripple x, y */     0.0f,   0.0f,\n    /* Normal DList */ inside_castle_seg7_painting_dl_070235B8,\n    /* Texture Maps */ inside_castle_seg7_painting_env_map_texture_maps_07023044,\n    /* Textures */     inside_castle_seg7_painting_textures_070235F4,\n    /* Texture w, h */ 32, 32,\n    /* Ripple DList */ inside_castle_seg7_painting_dl_07022640,\n    /* Ripple Trigger */ RIPPLE_TRIGGER_CONTINUOUS,\n    /* Alpha */ 0xB4,\n    /* Mario Below */  0x00, 0x00, 0x00, /* Whether or not Mario is below the painting */\n    /* Size */  819.2f,\n};\n\n// 0x070239E0 - 0x07023A58\nstruct Painting wdw_painting = {\n    /* id */ 0x0008,\n    /* Image Count */ 0x02,\n    /* Texture Type */ PAINTING_IMAGE,\n    /* Floor Status */ 0x00, 0x00, 0x00 /* which of the painting's nearby special floors Mario's on */,\n    /* Ripple Status */ 0x00,\n    /* Rotation */     0.0f,     0.0f,\n    /* Position */ -966.656f, 1305.6f, -143.36f,\n    /*                         curr   passive     entry */\n    /* Ripple Magnitude */     0.0f,    20.0f,    80.0f,\n    /* Ripple Decay */         1.0f,  0.9608f,  0.9524f,\n    /* Ripple Rate */          0.0f,    0.24f,    0.14f,\n    /* Ripple Dispersion */    0.0f,    40.0f,    30.0f,\n    /* Curr Ripple Timer */    0.0f,\n    /* Curr Ripple x, y */     0.0f,     0.0f,\n    /* Normal DList */ inside_castle_seg7_painting_dl_07023290,\n    /* Texture Maps */ inside_castle_seg7_painting_texture_maps_07022518,\n    /* Textures */     inside_castle_seg7_painting_textures_070235F8,\n    /* Texture w, h */ 64, 32,\n    /* Ripple DList */ inside_castle_seg7_painting_dl_07021AC0,\n    /* Ripple Trigger */ RIPPLE_TRIGGER_PROXIMITY,\n    /* Alpha */ 0xFF,\n    /* Mario Below */  0x00, 0x00, 0x00, /* Whether or not Mario is below the painting */\n    /* Size */  614.0f,\n};\n\n// 0x07023A58 - 0x07023AD0\nstruct Painting thi_tiny_painting = {\n    /* id */ 0x0009,\n    /* Image Count */ 0x02,\n    /* Texture Type */ PAINTING_IMAGE,\n    /* Floor Status */ 0x00, 0x00, 0x00 /* which of the painting's nearby special floors Mario's on */,\n    /* Ripple Status */ 0x00,\n    /* Rotation */     0.0f,   180.0f,\n    /* Position */ -4598.7842f, 1354.752f, 3005.44f,\n    /*                         curr   passive     entry */\n    /* Ripple Magnitude */     0.0f,    20.0f,    80.0f,\n    /* Ripple Decay */         1.0f,  0.9608f,  0.9524f,\n    /* Ripple Rate */          0.0f,    0.24f,    0.14f,\n    /* Ripple Dispersion */    0.0f,    40.0f,    30.0f,\n    /* Curr Ripple Timer */    0.0f,\n    /* Curr Ripple x, y */     0.0f,     0.0f,\n    /* Normal DList */ inside_castle_seg7_painting_dl_070232F0,\n    /* Texture Maps */ inside_castle_seg7_painting_texture_maps_07022518,\n    /* Textures */     inside_castle_seg7_painting_textures_07023600,\n    /* Texture w, h */ 64, 32,\n    /* Ripple DList */ inside_castle_seg7_painting_dl_07021AC0,\n    /* Ripple Trigger */ RIPPLE_TRIGGER_PROXIMITY,\n    /* Alpha */ 0xFF,\n    /* Mario Below */  0x00, 0x00, 0x00, /* Whether or not Mario is below the painting */\n    /* Size */  393.216f,\n};\n\n// 0x07023AD0 - 0x07023B48\nstruct Painting ttm_painting = {\n    /* id */ 0x000A,\n    /* Image Count */ 0x02,\n    /* Texture Type */ PAINTING_IMAGE,\n    /* Floor Status */ 0x00, 0x00, 0x00 /* which of the painting's nearby special floors Mario's on */,\n    /* Ripple Status */ 0x00,\n    /* Rotation */      0.0f,   180.0f,\n    /* Position */ -546.816f, 1356.8f, 3813.376f,\n    /*                         curr   passive     entry */\n    /* Ripple Magnitude */     0.0f,    20.0f,    80.0f,\n    /* Ripple Decay */         1.0f,  0.9608f,  0.9524f,\n    /* Ripple Rate */          0.0f,    0.24f,    0.14f,\n    /* Ripple Dispersion */    0.0f,    40.0f,    30.0f,\n    /* Curr Ripple Timer */    0.0f,\n    /* Curr Ripple x, y */     0.0f,     0.0f,\n    /* Normal DList */ inside_castle_seg7_painting_dl_07023350,\n    /* Texture Maps */ inside_castle_seg7_painting_texture_maps_07022518,\n    /* Textures */     inside_castle_seg7_painting_textures_07023608,\n    /* Texture w, h */ 64, 32,\n    /* Ripple DList */ inside_castle_seg7_painting_dl_07021AC0,\n    /* Ripple Trigger */ RIPPLE_TRIGGER_PROXIMITY,\n    /* Alpha */ 0xFF,\n    /* Mario Below */  0x00, 0x00, 0x00, /* Whether or not Mario is below the painting */\n    /* Size */  256.0f,\n};\n\n// 0x07023B48 - 0x07023BC0\nstruct Painting ttc_painting = {\n    /* id */ 0x000B,\n    /* Image Count */ 0x02,\n    /* Texture Type */ PAINTING_IMAGE,\n    /* Floor Status */ 0x00, 0x00, 0x00 /* which of the painting's nearby special floors Mario's on */,\n    /* Ripple Status */ 0x00,\n    /* Rotation */       0.0f,   180.0f,\n    /* Position */ 0.0f, 2713.6f, 7232.5122f,\n    /*                         curr   passive     entry */\n    /* Ripple Magnitude */     0.0f,    20.0f,    80.0f,\n    /* Ripple Decay */         1.0f,  0.9608f,  0.9524f,\n    /* Ripple Rate */          0.0f,    0.24f,    0.14f,\n    /* Ripple Dispersion */    0.0f,    40.0f,    30.0f,\n    /* Curr Ripple Timer */    0.0f,\n    /* Curr Ripple x, y */     0.0f,     0.0f,\n    /* Normal DList */ inside_castle_seg7_painting_dl_070233B0,\n    /* Texture Maps */ inside_castle_seg7_painting_texture_maps_07022518,\n    /* Textures */     inside_castle_seg7_painting_textures_07023610,\n    /* Texture w, h */ 64, 32,\n    /* Ripple DList */ inside_castle_seg7_painting_dl_07021AC0,\n    /* Ripple Trigger */ RIPPLE_TRIGGER_PROXIMITY,\n    /* Alpha */ 0xFF,\n    /* Mario Below */  0x00, 0x00, 0x00, /* Whether or not Mario is below the painting */\n    /* Size */  409.6f,\n};\n\n// 0x07023BC0 - 0x07023C38\nstruct Painting sl_painting = {\n    /* id */ 0x000C,\n    /* Image Count */ 0x02,\n    /* Texture Type */ PAINTING_IMAGE,\n    /* Floor Status */ 0x00, 0x00, 0x00 /* which of the painting's nearby special floors Mario's on */,\n    /* Ripple Status */ 0x00,\n    /* Rotation */     0.0f,     0.0f,\n    /* Position */ 3179.52f, 1408.0f, -271.36f,\n    /*                         curr   passive     entry */\n    /* Ripple Magnitude */     0.0f,    20.0f,    80.0f,\n    /* Ripple Decay */         1.0f,  0.9608f,  0.9524f,\n    /* Ripple Rate */          0.0f,    0.24f,    0.14f,\n    /* Ripple Dispersion */    0.0f,    40.0f,    30.0f,\n    /* Curr Ripple Timer */    0.0f,\n    /* Curr Ripple x, y */     0.0f,     0.0f,\n    /* Normal DList */ inside_castle_seg7_painting_dl_07023410,\n    /* Texture Maps */ inside_castle_seg7_painting_texture_maps_07022518,\n    /* Textures */     inside_castle_seg7_painting_textures_07023618,\n    /* Texture w, h */ 64, 32,\n    /* Ripple DList */ inside_castle_seg7_painting_dl_07021AC0,\n    /* Ripple Trigger */ RIPPLE_TRIGGER_PROXIMITY,\n    /* Alpha */ 0xFF,\n    /* Mario Below */  0x00, 0x00, 0x00, /* Whether or not Mario is below the painting */\n    /* Size */  716.8f,\n};\n\n// 0x07023C38 - 0x07023CB0\nstruct Painting thi_huge_painting = {\n    /* id */ 0x000D,\n    /* Image Count */ 0x02,\n    /* Texture Type */ PAINTING_IMAGE,\n    /* Floor Status */ 0x00, 0x00, 0x00 /* which of the painting's nearby special floors Mario's on */,\n    /* Ripple Status */ 0x00,\n    /* Rotation */      0.0f,     0.0f,\n    /* Position */ -5614.5918f, 1510.4f, -3292.16f,\n    /*                         curr   passive     entry */\n    /* Ripple Magnitude */     0.0f,    40.0f,   160.0f,\n    /* Ripple Decay */         1.0f,  0.9608f,  0.9524f,\n    /* Ripple Rate */          0.0f,    0.12f,    0.07f,\n    /* Ripple Dispersion */    0.0f,    80.0f,    60.0f,\n    /* Curr Ripple Timer */    0.0f,\n    /* Curr Ripple x, y */     0.0f,    0.0f,\n    /* Normal DList */ inside_castle_seg7_painting_dl_070232F0,\n    /* Texture Maps */ inside_castle_seg7_painting_texture_maps_07022518,\n    /* Textures */     inside_castle_seg7_painting_textures_07023600,\n    /* Texture w, h */ 64, 32,\n    /* Ripple DList */ inside_castle_seg7_painting_dl_07021AC0,\n    /* Ripple Trigger */ RIPPLE_TRIGGER_PROXIMITY,\n    /* Alpha */ 0xFF,\n    /* Mario Below */  0x00, 0x00, 0x00, /* Whether or not Mario is below the painting */\n    /* Size */  1638.4f,\n};\n"
  },
  {
    "path": "levels/castle_inside/script.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"behavior_data.h\"\n#include \"model_ids.h\"\n#include \"seq_ids.h\"\n#include \"dialog_ids.h\"\n#include \"segment_symbols.h\"\n#include \"level_commands.h\"\n\n#include \"game/level_update.h\"\n\n#include \"levels/scripts.h\"\n\n#include \"actors/common1.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/castle_inside/header.h\"\n\nstatic const LevelScript script_func_local_1[] = {\n    WARP_NODE(/*id*/ WARP_NODE_00, /*destLevel*/ LEVEL_CASTLE_GROUNDS,   /*destArea*/ 1, /*destNode*/ WARP_NODE_00, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_01, /*destLevel*/ LEVEL_CASTLE_GROUNDS,   /*destArea*/ 1, /*destNode*/ WARP_NODE_01, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_02, /*destLevel*/ LEVEL_CASTLE_COURTYARD, /*destArea*/ 1, /*destNode*/ WARP_NODE_01, /*flags*/ WARP_NO_CHECKPOINT),\n    OBJECT(/*model*/ MODEL_CASTLE_STAR_DOOR_8_STARS, /*pos*/ -2706,   512, -1409, /*angle*/ 0,  45, 0, /*bhvParam*/ BPARAM1(8), /*bhv*/ bhvStarDoor),\n    OBJECT(/*model*/ MODEL_CASTLE_STAR_DOOR_8_STARS, /*pos*/ -2598,   512, -1517, /*angle*/ 0, 225, 0, /*bhvParam*/ BPARAM1(8), /*bhv*/ bhvStarDoor),\n    OBJECT(/*model*/ MODEL_CASTLE_KEY_DOOR,          /*pos*/ -1100,   512, -1074, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(0x01) | BPARAM2(WARP_NODE_03), /*bhv*/ bhvDoorWarp),\n    OBJECT(/*model*/ MODEL_CASTLE_KEY_DOOR,          /*pos*/  -946,   512, -1074, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM1(0x01) | BPARAM2(WARP_NODE_04), /*bhv*/ bhvDoorWarp),\n    OBJECT(/*model*/ MODEL_CASTLE_KEY_DOOR,          /*pos*/ -1100, -1074,   922, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(0x02) | BPARAM2(WARP_NODE_05), /*bhv*/ bhvDoorWarp),\n    OBJECT(/*model*/ MODEL_CASTLE_KEY_DOOR,          /*pos*/  -946, -1074,   922, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM1(0x02) | BPARAM2(WARP_NODE_06), /*bhv*/ bhvDoorWarp),\n    WARP_NODE(/*id*/ WARP_NODE_03, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_00, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_04, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_01, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_05, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 3, /*destNode*/ WARP_NODE_00, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_06, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 3, /*destNode*/ WARP_NODE_01, /*flags*/ WARP_NO_CHECKPOINT),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_00, /*destLevel*/ LEVEL_BOB, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_01, /*destLevel*/ LEVEL_BOB, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_02, /*destLevel*/ LEVEL_BOB, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_03, /*destLevel*/ LEVEL_CCM, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_04, /*destLevel*/ LEVEL_CCM, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_05, /*destLevel*/ LEVEL_CCM, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_06, /*destLevel*/ LEVEL_WF,  /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_07, /*destLevel*/ LEVEL_WF,  /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_08, /*destLevel*/ LEVEL_WF,  /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_09, /*destLevel*/ LEVEL_JRB, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_0A, /*destLevel*/ LEVEL_JRB, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_0B, /*destLevel*/ LEVEL_JRB, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/  2013,  768, -2014, /*angle*/ 0,    0, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvWarp),\n    WARP_NODE(/*id*/ WARP_NODE_0A,    /*destLevel*/ LEVEL_PSS,   /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -5513,  512, -4324, /*angle*/ 0,    0, 0, /*bhvParam*/ BPARAM1(0x30) | BPARAM2(WARP_NODE_0B), /*bhv*/ bhvWarp),\n    WARP_NODE(/*id*/ WARP_NODE_0B,    /*destLevel*/ LEVEL_BITDW, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/  1963,  819,  1280, /*angle*/ 0,    0, 0, /*bhvParam*/ BPARAM1(0x05) | BPARAM2(WARP_NODE_0C), /*bhv*/ bhvWarp),\n    WARP_NODE(/*id*/ WARP_NODE_0C,    /*destLevel*/ LEVEL_SA,    /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_TOTWC, /*destLevel*/ LEVEL_TOTWC, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -1024,  512,  -650, /*angle*/ 0,    0, 0, /*bhvParam*/ BPARAM2(WARP_NODE_1E), /*bhv*/ bhvInstantActiveWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -1024,  -50,   717, /*angle*/ 0,  180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_1F), /*bhv*/ bhvInstantActiveWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -1024,  900,   717, /*angle*/ 0,  180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_20), /*bhv*/ bhvAirborneWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -1024,  900,   717, /*angle*/ 0,  180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_21), /*bhv*/ bhvAirborneDeathWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -1024,  900,   717, /*angle*/ 0,  180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_22), /*bhv*/ bhvHardAirKnockBackWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -1024,  900,   717, /*angle*/ 0,  180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_23), /*bhv*/ bhvDeathWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -5513,  512, -4324, /*angle*/ 0, -135, 0, /*bhvParam*/ BPARAM2(WARP_NODE_24), /*bhv*/ bhvLaunchStarCollectWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -5513,  512, -4324, /*angle*/ 0, -135, 0, /*bhvParam*/ BPARAM2(WARP_NODE_25), /*bhv*/ bhvLaunchDeathWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -1024,  900,   717, /*angle*/ 0,    0, 0, /*bhvParam*/ BPARAM2(WARP_NODE_26), /*bhv*/ bhvAirborneStarCollectWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/  2816, 1200,  -256, /*angle*/ 0,   90, 0, /*bhvParam*/ BPARAM2(WARP_NODE_27), /*bhv*/ bhvAirborneStarCollectWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/  2816, 1200,  -256, /*angle*/ 0,  270, 0, /*bhvParam*/ BPARAM2(WARP_NODE_28), /*bhv*/ bhvDeathWarp),\n    WARP_NODE(/*id*/ WARP_NODE_1E, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_1E, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_1F, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_1F, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_20, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_20, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_21, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_21, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_22, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_22, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_23, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_23, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_24, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_24, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_25, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_25, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_26, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_26, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_27, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_27, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_28, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_28, /*flags*/ WARP_NO_CHECKPOINT),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -5422, 717,  -461, /*angle*/ 0, 270, 0, /*bhvParam*/ BPARAM2(WARP_NODE_32), /*bhv*/ bhvPaintingStarCollectWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -2304,   0, -4552, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_33), /*bhv*/ bhvPaintingStarCollectWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/   256, 102, -4706, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_34), /*bhv*/ bhvPaintingStarCollectWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/  4501, 717,  -230, /*angle*/ 0,  90, 0, /*bhvParam*/ BPARAM2(WARP_NODE_35), /*bhv*/ bhvPaintingStarCollectWarp),\n    WARP_NODE(/*id*/ WARP_NODE_32, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_32, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_33, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_33, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_34, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_34, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_35, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_35, /*flags*/ WARP_NO_CHECKPOINT),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -5422, 717,  -461, /*angle*/ 0, 270, 0, /*bhvParam*/ BPARAM2(WARP_NODE_64), /*bhv*/ bhvPaintingDeathWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -2304,   0, -4552, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_65), /*bhv*/ bhvPaintingDeathWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/   256, 102, -4706, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_66), /*bhv*/ bhvPaintingDeathWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/  4501, 717,  -230, /*angle*/ 0,  90, 0, /*bhvParam*/ BPARAM2(WARP_NODE_67), /*bhv*/ bhvPaintingDeathWarp),\n    WARP_NODE(/*id*/ WARP_NODE_64, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_64, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_65, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_65, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_66, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_66, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_67, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_67, /*flags*/ WARP_NO_CHECKPOINT),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_2[] = {\n    OBJECT(/*model*/ MODEL_CASTLE_KEY_DOOR, /*pos*/ -1100, 512, 3021, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(WARP_NODE_00), /*bhv*/ bhvDoorWarp),\n    OBJECT(/*model*/ MODEL_CASTLE_KEY_DOOR, /*pos*/  -946, 512, 3021, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_01), /*bhv*/ bhvDoorWarp),\n    WARP_NODE(/*id*/ WARP_NODE_00, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_03, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_01, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_04, /*flags*/ WARP_NO_CHECKPOINT),\n    OBJECT(/*model*/ MODEL_CASTLE_STAR_DOOR_50_STARS, /*pos*/ -281, 2253, 4762, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(50), /*bhv*/ bhvStarDoor),\n    OBJECT(/*model*/ MODEL_CASTLE_STAR_DOOR_50_STARS, /*pos*/ -127, 2253, 4762, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM1(50), /*bhv*/ bhvStarDoor),\n    OBJECT(/*model*/ MODEL_CASTLE_STAR_DOOR_70_STARS, /*pos*/ -281, 3174, 3772, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(70), /*bhv*/ bhvStarDoor),\n    OBJECT(/*model*/ MODEL_CASTLE_STAR_DOOR_70_STARS, /*pos*/ -127, 3174, 3772, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM1(70), /*bhv*/ bhvStarDoor),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_18, /*destLevel*/ LEVEL_WDW, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_19, /*destLevel*/ LEVEL_WDW, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_1A, /*destLevel*/ LEVEL_WDW, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_1B, /*destLevel*/ LEVEL_THI, /*destArea*/ 2, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_1C, /*destLevel*/ LEVEL_THI, /*destArea*/ 2, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_1D, /*destLevel*/ LEVEL_THI, /*destArea*/ 2, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_1E, /*destLevel*/ LEVEL_TTM, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_1F, /*destLevel*/ LEVEL_TTM, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_20, /*destLevel*/ LEVEL_TTM, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_21, /*destLevel*/ LEVEL_TTC, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_22, /*destLevel*/ LEVEL_TTC, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_23, /*destLevel*/ LEVEL_TTC, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_24, /*destLevel*/ LEVEL_SL,  /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_25, /*destLevel*/ LEVEL_SL,  /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_26, /*destLevel*/ LEVEL_SL,  /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_27, /*destLevel*/ LEVEL_THI, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_28, /*destLevel*/ LEVEL_THI, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_29, /*destLevel*/ LEVEL_THI, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_2A, /*destLevel*/ LEVEL_RR,  /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/  3002, 2816,  5886, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(15) | BPARAM2(WARP_NODE_0A), /*bhv*/ bhvWarp),\n    WARP_NODE(/*id*/ WARP_NODE_0A, /*destLevel*/ LEVEL_WMOTR, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/  -230, 4813, -3352, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(15) | BPARAM2(WARP_NODE_0B), /*bhv*/ bhvWarp),\n    WARP_NODE(/*id*/ WARP_NODE_0B, /*destLevel*/ LEVEL_BITS,  /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/  -659, 1613,  -350, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_32), /*bhv*/ bhvPaintingStarCollectWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -4693, 2157,  1828, /*angle*/ 0, 270, 0, /*bhvParam*/ BPARAM2(WARP_NODE_33), /*bhv*/ bhvAirborneStarCollectWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/  -675, 1400,  3870, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(WARP_NODE_34), /*bhv*/ bhvPaintingStarCollectWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/  -205, 2918,  7300, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(WARP_NODE_35), /*bhv*/ bhvPaintingStarCollectWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/  3538, 1766,  -400, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_36), /*bhv*/ bhvPaintingStarCollectWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -4693, 2157,  1828, /*angle*/ 0, 270, 0, /*bhvParam*/ BPARAM2(WARP_NODE_37), /*bhv*/ bhvAirborneStarCollectWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/  3002, 2816,  5886, /*angle*/ 0,  90, 0, /*bhvParam*/ BPARAM2(WARP_NODE_38), /*bhv*/ bhvLaunchStarCollectWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -3412, 2816,  5886, /*angle*/ 0, 270, 0, /*bhvParam*/ BPARAM2(WARP_NODE_3A), /*bhv*/ bhvLaunchStarCollectWarp),\n    WARP_NODE(/*id*/ WARP_NODE_32, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_32, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_33, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_33, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_34, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_34, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_35, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_35, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_36, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_36, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_37, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_37, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_38, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_38, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(WARP_NODE_3A, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_3A, /*flags*/ WARP_NO_CHECKPOINT),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/  -659, 1613,  -350, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_64), /*bhv*/ bhvPaintingDeathWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -4693, 2157,  1828, /*angle*/ 0, 270, 0, /*bhvParam*/ BPARAM2(WARP_NODE_65), /*bhv*/ bhvDeathWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/  -675, 1400,  3870, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(WARP_NODE_66), /*bhv*/ bhvPaintingDeathWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/  -205, 2918,  7300, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(WARP_NODE_67), /*bhv*/ bhvPaintingDeathWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/  3538, 1766,  -400, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_68), /*bhv*/ bhvPaintingDeathWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -4693, 2157,  1828, /*angle*/ 0, 270, 0, /*bhvParam*/ BPARAM2(WARP_NODE_69), /*bhv*/ bhvDeathWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/  -230, 4813, -3352, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_6B), /*bhv*/ bhvLaunchDeathWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -3412, 2816,  5886, /*angle*/ 0, 270, 0, /*bhvParam*/ BPARAM2(WARP_NODE_6C), /*bhv*/ bhvLaunchDeathWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/  3002, 2816,  5886, /*angle*/ 0,  90, 0, /*bhvParam*/ BPARAM2(WARP_NODE_6D), /*bhv*/ bhvLaunchDeathWarp),\n    WARP_NODE(/*id*/ WARP_NODE_64, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_64, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_65, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_65, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_66, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_66, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_67, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_67, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_68, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_68, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_69, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_69, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_6B, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_6B, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_6C, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_6C, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_6D, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_6D, /*flags*/ WARP_NO_CHECKPOINT),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_3[] = {\n    OBJECT(/*model*/ MODEL_CASTLE_KEY_DOOR, /*pos*/ -1100, -1074, 922, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(WARP_NODE_00), /*bhv*/ bhvDoorWarp),\n    OBJECT(/*model*/ MODEL_CASTLE_KEY_DOOR, /*pos*/  -946, -1074, 922, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_01), /*bhv*/ bhvDoorWarp),\n    WARP_NODE(/*id*/ WARP_NODE_00, /*destLevel*/ LEVEL_CASTLE,         /*destArea*/ 1, /*destNode*/ WARP_NODE_05, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_01, /*destLevel*/ LEVEL_CASTLE,         /*destArea*/ 1, /*destNode*/ WARP_NODE_06, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_02, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 1, /*destNode*/ WARP_NODE_02, /*flags*/ WARP_NO_CHECKPOINT),\n    OBJECT(/*model*/ MODEL_CASTLE_STAR_DOOR_30_STARS, /*pos*/ 307, -1074, 2074, /*angle*/ 0,  90, 0, /*bhvParam*/ BPARAM1(30), /*bhv*/ bhvStarDoor),\n    OBJECT(/*model*/ MODEL_CASTLE_STAR_DOOR_30_STARS, /*pos*/ 307, -1074, 1920, /*angle*/ 0, 270, 0, /*bhvParam*/ BPARAM1(30), /*bhv*/ bhvStarDoor),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_0C, /*destLevel*/ LEVEL_LLL, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_0D, /*destLevel*/ LEVEL_LLL, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_0E, /*destLevel*/ LEVEL_LLL, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_0F, /*destLevel*/ LEVEL_SSL, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_10, /*destLevel*/ LEVEL_SSL, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_11, /*destLevel*/ LEVEL_SSL, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_2A, /*destLevel*/ LEVEL_HMC, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_15, /*destLevel*/ LEVEL_DDD, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_16, /*destLevel*/ LEVEL_DDD, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    PAINTING_WARP_NODE(/*id*/ WARP_NODE_17, /*destLevel*/ LEVEL_DDD, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/  4147, -1280,  1997, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(15) | BPARAM2(WARP_NODE_18), /*bhv*/ bhvWarp),\n    WARP_NODE(/*id*/ WARP_NODE_18, /*destLevel*/ LEVEL_BITFS, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -1382,  -819, -4150, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_32), /*bhv*/ bhvPaintingStarCollectWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -2918,  -870,  -875, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(WARP_NODE_33), /*bhv*/ bhvPaintingStarCollectWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/  2483, -1688, -2662, /*angle*/ 0, 270, 0, /*bhvParam*/ BPARAM2(WARP_NODE_34), /*bhv*/ bhvLaunchStarCollectWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/  2381,  -500,  2011, /*angle*/ 0,  90, 0, /*bhvParam*/ BPARAM2(WARP_NODE_35), /*bhv*/ bhvAirborneStarCollectWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/  4147, -1100,  1997, /*angle*/ 0,  90, 0, /*bhvParam*/ BPARAM2(WARP_NODE_36), /*bhv*/ bhvLaunchStarCollectWarp),\n    WARP_NODE(/*id*/ WARP_NODE_32, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 3, /*destNode*/ WARP_NODE_32, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_33, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 3, /*destNode*/ WARP_NODE_33, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_34, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 3, /*destNode*/ WARP_NODE_34, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_35, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 3, /*destNode*/ WARP_NODE_35, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_36, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 3, /*destNode*/ WARP_NODE_36, /*flags*/ WARP_NO_CHECKPOINT),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -1382,  -819, -4150, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_64), /*bhv*/ bhvPaintingDeathWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -2918,  -870,  -875, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(WARP_NODE_65), /*bhv*/ bhvPaintingDeathWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/  2483, -1688, -2662, /*angle*/ 0, 270, 0, /*bhvParam*/ BPARAM2(WARP_NODE_66), /*bhv*/ bhvLaunchDeathWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/  2381,  -500,  2011, /*angle*/ 0,  90, 0, /*bhvParam*/ BPARAM2(WARP_NODE_67), /*bhv*/ bhvDeathWarp),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/  4147, -1100,  1997, /*angle*/ 0,  90, 0, /*bhvParam*/ BPARAM2(WARP_NODE_68), /*bhv*/ bhvLaunchDeathWarp),\n    WARP_NODE(/*id*/ WARP_NODE_64, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 3, /*destNode*/ WARP_NODE_64, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_65, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 3, /*destNode*/ WARP_NODE_65, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_66, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 3, /*destNode*/ WARP_NODE_66, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_67, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 3, /*destNode*/ WARP_NODE_67, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_68, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 3, /*destNode*/ WARP_NODE_68, /*flags*/ WARP_NO_CHECKPOINT),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_4[] = {\n    OBJECT(/*model*/ MODEL_RED_FLAME,  /*pos*/ -2037,  -818,  -716, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlame),\n    OBJECT(/*model*/ MODEL_RED_FLAME,  /*pos*/ -1648,  -818,  -716, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlame),\n    OBJECT(/*model*/ MODEL_RED_FLAME,  /*pos*/ -1648,  -818,  -101, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlame),\n    OBJECT(/*model*/ MODEL_RED_FLAME,  /*pos*/ -1648,  -818,   512, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlame),\n    OBJECT(/*model*/ MODEL_RED_FLAME,  /*pos*/ -2037,  -818,  -101, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlame),\n    OBJECT(/*model*/ MODEL_RED_FLAME,  /*pos*/ -2969,  -921,   420, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlame),\n    OBJECT(/*model*/ MODEL_RED_FLAME,  /*pos*/ -2037,  -818, -1330, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlame),\n    OBJECT(/*model*/ MODEL_RED_FLAME,  /*pos*/ -3839, -1023, -1422, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlame),\n    OBJECT(/*model*/ MODEL_RED_FLAME,  /*pos*/ -1929,  -818, -3615, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlame),\n    OBJECT(/*model*/ MODEL_RED_FLAME,  /*pos*/  -834,  -818, -3615, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlame),\n    OBJECT(/*model*/ MODEL_BLUE_FLAME, /*pos*/ -3317,  -921,  1229, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlame),\n    OBJECT(/*model*/ MODEL_BLUE_FLAME, /*pos*/  -204,  -921,  -624, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlame),\n    OBJECT(/*model*/ MODEL_BLUE_FLAME, /*pos*/ -2876,  -921,  1229, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlame),\n    RETURN(),\n};\n\nconst LevelScript level_castle_inside_entry[] = {\n    INIT_LEVEL(),\n    LOAD_MIO0        (/*seg*/ 0x07, _castle_inside_segment_7SegmentRomStart, _castle_inside_segment_7SegmentRomEnd),\n    LOAD_MIO0_TEXTURE(/*seg*/ 0x09, _inside_mio0SegmentRomStart, _inside_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x06, _group15_mio0SegmentRomStart, _group15_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0D, _group15_geoSegmentRomStart,  _group15_geoSegmentRomEnd),\n    ALLOC_LEVEL_POOL(),\n    MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),\n    JUMP_LINK(script_func_global_16),\n    LOAD_MODEL_FROM_GEO(MODEL_CASTLE_BOWSER_TRAP,        castle_geo_000F18),\n    LOAD_MODEL_FROM_GEO(MODEL_CASTLE_WATER_LEVEL_PILLAR, castle_geo_001940),\n    LOAD_MODEL_FROM_GEO(MODEL_CASTLE_CLOCK_MINUTE_HAND,  castle_geo_001530),\n    LOAD_MODEL_FROM_GEO(MODEL_CASTLE_CLOCK_HOUR_HAND,    castle_geo_001548),\n    LOAD_MODEL_FROM_GEO(MODEL_CASTLE_CLOCK_PENDULUM,     castle_geo_001518),\n    LOAD_MODEL_FROM_GEO(MODEL_CASTLE_CASTLE_DOOR,        castle_door_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_CASTLE_WOODEN_DOOR,        wooden_door_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_CASTLE_METAL_DOOR,         metal_door_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_CASTLE_CASTLE_DOOR_UNUSED, castle_door_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_CASTLE_WOODEN_DOOR_UNUSED, wooden_door_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_CASTLE_DOOR_0_STARS,       castle_door_0_star_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_CASTLE_DOOR_1_STAR,        castle_door_1_star_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_CASTLE_DOOR_3_STARS,       castle_door_3_stars_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_CASTLE_KEY_DOOR,           key_door_geo),\n    // The different sets of star doors all use different model IDs, despite them all loading the same geo layout.\n    // It is possible that star doors were originally going to have numbers on them, similar to the other locked doors.\n    LOAD_MODEL_FROM_GEO(MODEL_CASTLE_STAR_DOOR_30_STARS, castle_geo_000F00),\n    LOAD_MODEL_FROM_GEO(MODEL_CASTLE_STAR_DOOR_8_STARS,  castle_geo_000F00),\n    LOAD_MODEL_FROM_GEO(MODEL_CASTLE_STAR_DOOR_50_STARS, castle_geo_000F00),\n    LOAD_MODEL_FROM_GEO(MODEL_CASTLE_STAR_DOOR_70_STARS, castle_geo_000F00),\n\n    AREA(/*index*/ 1, castle_geo_001400),\n        OBJECT(/*model*/ MODEL_NONE,       /*pos*/ -5513,  717, -4324, /*angle*/ 0,  45, 0, /*bhvParam*/ BPARAM2(0x14), /*bhv*/ bhvCastleFloorTrap),\n        OBJECT(/*model*/ MODEL_NONE,       /*pos*/  2477,  307, -2000, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFishGroup),\n        OBJECT(/*model*/ MODEL_NONE,       /*pos*/  2774,  507, -1716, /*angle*/ 0,  90, 0, /*bhvParam*/ 0, /*bhv*/ bhvTankFishGroup),\n        OBJECT(/*model*/ MODEL_NONE,       /*pos*/  3672,  507, -1307, /*angle*/ 0,  45, 0, /*bhvParam*/ 0, /*bhv*/ bhvTankFishGroup),\n        OBJECT(/*model*/ MODEL_NONE,       /*pos*/  3748,  507,   773, /*angle*/ 0, -45, 0, /*bhvParam*/ 0, /*bhv*/ bhvTankFishGroup),\n        OBJECT(/*model*/ MODEL_NONE,       /*pos*/  2778,  507,  1255, /*angle*/ 0, -90, 0, /*bhvParam*/ 0, /*bhv*/ bhvTankFishGroup),\n        OBJECT(/*model*/ MODEL_BOO_CASTLE, /*pos*/ -1000,   50, -3500, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvBooInCastle),\n        OBJECT(/*model*/ MODEL_TOAD,       /*pos*/ -1671,    0,  1313, /*angle*/ 0,  83, 0, /*bhvParam*/ BPARAM1(DIALOG_133), /*bhv*/ bhvToadMessage),\n        OBJECT(/*model*/ MODEL_TOAD,       /*pos*/  1524,  307,   458, /*angle*/ 0, 110, 0, /*bhvParam*/ BPARAM1(DIALOG_134), /*bhv*/ bhvToadMessage),\n        OBJECT(/*model*/ MODEL_TOAD,       /*pos*/   596, -306, -2637, /*angle*/ 0, 152, 0, /*bhvParam*/ BPARAM1(DIALOG_135), /*bhv*/ bhvToadMessage),\n        JUMP_LINK(script_func_local_1),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 1, /*destNode*/ WARP_NODE_03, /*flags*/ WARP_NO_CHECKPOINT),\n        TERRAIN(/*terrainData*/ inside_castle_seg7_area_1_collision),\n        ROOMS(/*surfaceRooms*/ inside_castle_seg7_area_1_rooms),\n        MACRO_OBJECTS(/*objList*/ inside_castle_seg7_area_1_macro_objs),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0001, /*seq*/ SEQ_LEVEL_INSIDE_CASTLE),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_STONE),\n    END_AREA(),\n\n    AREA(/*index*/ 2, castle_geo_001858),\n        OBJECT(/*model*/ MODEL_CASTLE_CLOCK_MINUTE_HAND, /*pos*/  -205, 2918, 7222, /*angle*/ 0, 180, 0, /*bhvParam*/ 0, /*bhv*/ bhvClockMinuteHand),\n        OBJECT(/*model*/ MODEL_CASTLE_CLOCK_HOUR_HAND,   /*pos*/  -205, 2918, 7222, /*angle*/ 0, 180, 0, /*bhvParam*/ 0, /*bhv*/ bhvClockHourHand),\n        OBJECT(/*model*/ MODEL_CASTLE_CLOCK_PENDULUM,    /*pos*/  -205, 2611, 7140, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvDecorativePendulum),\n        OBJECT(/*model*/ MODEL_LAKITU,                   /*pos*/  4231, 1408, 1601, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(CAMERA_LAKITU_BP_FOLLOW_CAMERA), /*bhv*/ bhvCameraLakitu),\n        OBJECT(/*model*/ MODEL_TOAD,                     /*pos*/  -977, 1203, 2569, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(DIALOG_076), /*bhv*/ bhvToadMessage),\n        OBJECT(/*model*/ MODEL_TOAD,                     /*pos*/ -1584, 2253, 7157, /*angle*/ 0, 136, 0, /*bhvParam*/ BPARAM1(DIALOG_083), /*bhv*/ bhvToadMessage),\n        OBJECT(/*model*/ MODEL_TOAD,                     /*pos*/   837, 1203, 3020, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM1(DIALOG_137), /*bhv*/ bhvToadMessage),\n        JUMP_LINK(script_func_local_2),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 1, /*destNode*/ WARP_NODE_03, /*flags*/ WARP_NO_CHECKPOINT),\n        TERRAIN(/*terrainData*/ inside_castle_seg7_area_2_collision),\n        ROOMS(/*surfaceRooms*/ inside_castle_seg7_area_2_rooms),\n        MACRO_OBJECTS(/*objList*/ inside_castle_seg7_area_2_macro_objs),\n        INSTANT_WARP(/*index*/ 0, /*destArea*/ 2, /*displace*/ 0, -205, 410),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0001, /*seq*/ SEQ_LEVEL_INSIDE_CASTLE),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_STONE),\n    END_AREA(),\n\n    AREA(/*index*/ 3, castle_geo_001C10),\n        OBJECT(/*model*/ MODEL_CASTLE_WATER_LEVEL_PILLAR, /*pos*/  7066, -1178,  -819, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvWaterLevelPillar),\n        OBJECT(/*model*/ MODEL_CASTLE_WATER_LEVEL_PILLAR, /*pos*/  7066, -1178,  -205, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvWaterLevelPillar),\n        OBJECT(/*model*/ MODEL_NONE,                      /*pos*/     0,     0,     0, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvDDDWarp),\n        OBJECT(/*model*/ MODEL_MIPS,                      /*pos*/ -1509, -1177, -1564, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(MIPS_BP_15_STARS), /*bhv*/ bhvMips),\n        OBJECT(/*model*/ MODEL_TOAD,                      /*pos*/  1787, -1381, -1957, /*angle*/ 0, 126, 0, /*bhvParam*/ BPARAM1(DIALOG_082), /*bhv*/ bhvToadMessage),\n        OBJECT(/*model*/ MODEL_TOAD,                      /*pos*/ -4048, -1381, -1334, /*angle*/ 0,  30, 0, /*bhvParam*/ BPARAM1(DIALOG_136), /*bhv*/ bhvToadMessage),\n        JUMP_LINK(script_func_local_3),\n        JUMP_LINK(script_func_local_4),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 1, /*destNode*/ WARP_NODE_03, /*flags*/ WARP_NO_CHECKPOINT),\n        TERRAIN(/*terrainData*/ inside_castle_seg7_area_3_collision),\n        ROOMS(/*surfaceRooms*/ inside_castle_seg7_area_3_rooms),\n        MACRO_OBJECTS(/*objList*/ inside_castle_seg7_area_3_macro_objs),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0001, /*seq*/ SEQ_LEVEL_INSIDE_CASTLE),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_STONE),\n    END_AREA(),\n\n    FREE_LEVEL_POOL(),\n    MARIO_POS(/*area*/ 1, /*yaw*/ 180, /*pos*/ -1023, 0, 1152),\n    CALL(/*arg*/ 0, /*func*/ lvl_init_or_update),\n    CALL_LOOP(/*arg*/ 1, /*func*/ lvl_init_or_update),\n    CLEAR_LEVEL(),\n    SLEEP_BEFORE_EXIT(/*frames*/ 1),\n    EXIT(),\n};\n"
  },
  {
    "path": "levels/castle_inside/star_door/collision.inc.c",
    "content": "// 0x07078E14 - 0x07078E80\nconst Collision inside_castle_seg7_collision_star_door[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-80, 0, -20),\n    COL_VERTEX(-80, 256, 20),\n    COL_VERTEX(-80, 256, -20),\n    COL_VERTEX(80, 256, 20),\n    COL_VERTEX(80, 256, -20),\n    COL_VERTEX(80, 0, -20),\n    COL_VERTEX(-80, 0, 20),\n    COL_VERTEX(80, 0, 20),\n    COL_TRI_INIT(SURFACE_DEFAULT, 8),\n    COL_TRI(2, 3, 4),\n    COL_TRI(2, 1, 3),\n    COL_TRI(5, 2, 4),\n    COL_TRI(5, 0, 2),\n    COL_TRI(6, 3, 1),\n    COL_TRI(6, 7, 3),\n    COL_TRI(5, 6, 0),\n    COL_TRI(5, 7, 6),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/castle_inside/star_door/geo.inc.c",
    "content": "// 0x0E000F00\nconst GeoLayout castle_geo_000F00[] = {\n    GEO_CULLING_RADIUS(400),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0703BFA8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/castle_inside/star_door/model.inc.c",
    "content": "// 0x0703BD28 - 0x0703BD40\nstatic const Lights1 inside_castle_seg7_lights_0703BD28 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0703BD40 - 0x0703BE40\nstatic const Vtx inside_castle_seg7_vertex_0703BD40[] = {\n    {{{   -76,      0,    -15}, 0, {   478,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -76,      0,     15}, 0, {   992,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -76,    256,     15}, 0, {   992,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -76,    256,    -15}, 0, {  1100,    460}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    79,    256,     15}, 0, {  -650,    240}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    79,    256,    -15}, 0, {  -542,    734}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -76,    256,     15}, 0, {   990,    -34}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    79,      0,    -15}, 0, {  1234,   -116}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -76,      0,     15}, 0, {  -174,    868}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -76,      0,    -15}, 0, {  -604,    498}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    79,      0,     15}, 0, {  1664,    254}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    79,      0,     15}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    79,      0,    -15}, 0, {   584,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    79,    256,    -15}, 0, {   584,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    79,    256,     15}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -76,    256,    -15}, 0, {   480,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0703BE40 - 0x0703BE80\nstatic const Vtx inside_castle_seg7_vertex_0703BE40[] = {\n    {{{   -76,      0,     15}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    79,      0,     15}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    79,    256,     15}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -76,    256,     15}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0703BE80 - 0x0703BEC0\nstatic const Vtx inside_castle_seg7_vertex_0703BE80[] = {\n    {{{    79,      0,    -15}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -76,    256,    -15}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    79,    256,    -15}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -76,      0,    -15}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0703BEC0 - 0x0703BF38\nstatic const Gfx inside_castle_seg7_dl_0703BEC0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_0703BD28.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0703BD28.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0703BD40, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0703BF38 - 0x0703BF70\nstatic const Gfx inside_castle_seg7_dl_0703BF38[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0703BE40, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0703BF70 - 0x0703BFA8\nstatic const Gfx inside_castle_seg7_dl_0703BF70[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_0703BE80, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0703BFA8 - 0x0703C040\nconst Gfx inside_castle_seg7_dl_0703BFA8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_0703BEC0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_0703BF38),\n    gsSPDisplayList(inside_castle_seg7_dl_0703BF70),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/texture.inc.c",
    "content": "ALIGNED8 static const Texture texture_castle_light[] = {\n#include \"levels/castle_inside/castle_light.ia16.inc.c\"\n};\n\n// 0x07000800 - 0x07001000\nALIGNED8 static const Texture inside_castle_seg7_texture_07000800[] = {\n#include \"levels/castle_inside/1.rgba16.inc.c\"\n};\n\n// 0x07001000 - 0x07002000\nALIGNED8 static const Texture inside_castle_seg7_texture_07001000[] = {\n#include \"levels/castle_inside/2.ia16.inc.c\"\n};\n\n// 0x07002000 - 0x07003000\nALIGNED8 static const Texture inside_castle_seg7_texture_07002000[] = {\n#include \"levels/castle_inside/3.rgba16.inc.c\"\n};\n\n// 0x07003000 - 0x07003800\nALIGNED8 static const Texture inside_castle_seg7_texture_07003000[] = {\n#include \"levels/castle_inside/4.rgba16.inc.c\"\n};\n\n// 0x07003800 - 0x07004800\nALIGNED8 static const Texture inside_castle_seg7_texture_07003800[] = {\n#include \"levels/castle_inside/5.rgba16.inc.c\"\n};\n\n// 0x07004800 - 0x07005800\nALIGNED8 static const Texture inside_castle_seg7_texture_07004800[] = {\n#include \"levels/castle_inside/6.rgba16.inc.c\"\n};\n\n// 0x07005800 - 0x07006000\nALIGNED8 static const Texture inside_castle_seg7_texture_07005800[] = {\n#include \"levels/castle_inside/7.rgba16.inc.c\"\n};\n\n// 0x07006000 - 0x07006800\nALIGNED8 static const Texture inside_castle_seg7_texture_07006000[] = {\n#include \"levels/castle_inside/8.rgba16.inc.c\"\n};\n\n// 0x07006800 - 0x07007000\nALIGNED8 static const Texture inside_castle_seg7_texture_07006800[] = {\n#include \"levels/castle_inside/9.rgba16.inc.c\"\n};\n\n// 0x07007000 - 0x07007800\nALIGNED8 static const Texture inside_castle_seg7_texture_07007000[] = {\n#include \"levels/castle_inside/10.rgba16.inc.c\"\n};\n\n// 0x07007800 - 0x07008000\nALIGNED8 static const Texture inside_castle_seg7_texture_07007800[] = {\n#include \"levels/castle_inside/11.rgba16.inc.c\"\n};\n\n// 0x07008000 - 0x07008800\nALIGNED8 static const Texture inside_castle_seg7_texture_07008000[] = {\n#include \"levels/castle_inside/12.rgba16.inc.c\"\n};\n\n// 0x07008800 - 0x07009000\nALIGNED8 static const Texture inside_castle_seg7_texture_07008800[] = {\n#include \"levels/castle_inside/13.rgba16.inc.c\"\n};\n\n// 0x07009000 - 0x07009800\nALIGNED8 static const Texture inside_castle_seg7_texture_07009000[] = {\n#include \"levels/castle_inside/14.rgba16.inc.c\"\n};\n\n// 0x07009800 - 0x0700A000\nALIGNED8 static const Texture inside_castle_seg7_texture_07009800[] = {\n#include \"levels/castle_inside/15.rgba16.inc.c\"\n};\n\n// 0x0700A000 - 0x0700A800\nALIGNED8 static const Texture inside_castle_seg7_texture_0700A000[] = {\n#include \"levels/castle_inside/16.ia16.inc.c\"\n};\n\n// 0x0700A800 - 0x0700B800\nALIGNED8 static const Texture inside_castle_seg7_texture_0700A800[] = {\n#include \"levels/castle_inside/17.rgba16.inc.c\"\n};\n\n// 0x0700B800 - 0x0700C800\nALIGNED8 static const Texture inside_castle_seg7_texture_0700B800[] = {\n#include \"levels/castle_inside/18.rgba16.inc.c\"\n};\n\n// 0x0700C800 - 0x0700D800\nALIGNED8 static const Texture inside_castle_seg7_texture_0700C800[] = {\n#include \"levels/castle_inside/19.rgba16.inc.c\"\n};\n\n// 0x0700D800 - 0x0700E800\nALIGNED8 static const Texture inside_castle_seg7_texture_0700D800[] = {\n#include \"levels/castle_inside/20.rgba16.inc.c\"\n};\n\n// 0x0700E800 - 0x0700F800\nALIGNED8 static const Texture inside_castle_seg7_texture_0700E800[] = {\n#include \"levels/castle_inside/21.rgba16.inc.c\"\n};\n\n// 0x0700F800 - 0x07010800\nALIGNED8 static const Texture inside_castle_seg7_texture_0700F800[] = {\n#include \"levels/castle_inside/22.rgba16.inc.c\"\n};\n\n#ifdef VERSION_JP\n// 0x07010800 - 0x07011800\nALIGNED8 static const Texture inside_castle_seg7_texture_07010800[] = {\n#include \"levels/castle_inside/23.rgba16.inc.c\"\n};\n\n// 0x07011800 - 0x0701200\nALIGNED8 static const Texture inside_castle_seg7_texture_07011800[] = {\n#include \"levels/castle_inside/24.rgba16.inc.c\"\n};\n\n#else\n// 0x07010800 - 0x07011800\nALIGNED8 static const Texture inside_castle_seg7_texture_07010800[] = {\n#include \"levels/castle_inside/23_us.rgba16.inc.c\"\n};\n\n// 0x07011800 - 0x0701200\nALIGNED8 static const Texture inside_castle_seg7_texture_07011800[] = {\n#include \"levels/castle_inside/24_us.rgba16.inc.c\"\n};\n#endif\n\n// 0x07012800 - 0x07013800\nALIGNED8 static const Texture inside_castle_seg7_texture_07012800[] = {\n#include \"levels/castle_inside/25.rgba16.inc.c\"\n};\n\n// 0x07013800 - 0x07014800\nALIGNED8 static const Texture inside_castle_seg7_texture_07013800[] = {\n#include \"levels/castle_inside/26.rgba16.inc.c\"\n};\n\n// 0x07014800 - 0x07015800\nALIGNED8 static const Texture inside_castle_seg7_texture_07014800[] = {\n#include \"levels/castle_inside/27.rgba16.inc.c\"\n};\n\n// 0x07015800 - 0x07016800\nALIGNED8 static const Texture inside_castle_seg7_texture_07015800[] = {\n#include \"levels/castle_inside/28.rgba16.inc.c\"\n};\n\n// 0x07016800 - 0x07017000\nALIGNED8 static const Texture inside_castle_seg7_texture_07016800[] = {\n#include \"levels/castle_inside/29.rgba16.inc.c\"\n};\n\n// 0x07017000 - 0x07017800\nALIGNED8 static const Texture inside_castle_seg7_texture_07017000[] = {\n#include \"levels/castle_inside/30.rgba16.inc.c\"\n};\n\n// 0x07017800 - 0x07018800\nALIGNED8 static const Texture inside_castle_seg7_texture_07017800[] = {\n#include \"levels/castle_inside/31.rgba16.inc.c\"\n};\n\n// 0x07018800 - 0x07019800\nALIGNED8 static const Texture inside_castle_seg7_texture_07018800[] = {\n#include \"levels/castle_inside/32.rgba16.inc.c\"\n};\n\n// 0x07019800 - 0x0701A800\nALIGNED8 static const Texture inside_castle_seg7_texture_07019800[] = {\n#include \"levels/castle_inside/33.rgba16.inc.c\"\n};\n\n// 0x0701A800 - 0x0701B800\nALIGNED8 static const Texture inside_castle_seg7_texture_0701A800[] = {\n#include \"levels/castle_inside/34.rgba16.inc.c\"\n};\n\n// 0x0701B800 - 0x0701C800\nALIGNED8 static const Texture inside_castle_seg7_texture_0701B800[] = {\n#include \"levels/castle_inside/35.rgba16.inc.c\"\n};\n\n// 0x0701C800 - 0x0701D800\nALIGNED8 static const Texture inside_castle_seg7_texture_0701C800[] = {\n#include \"levels/castle_inside/36.rgba16.inc.c\"\n};\n\n// 0x0701D800 - 0x0701E800\nALIGNED8 static const Texture inside_castle_seg7_texture_0701D800[] = {\n#include \"levels/castle_inside/37.rgba16.inc.c\"\n};\n\n// 0x0701E800 - 0x0701F800\nALIGNED8 static const Texture inside_castle_seg7_texture_0701E800[] = {\n#include \"levels/castle_inside/38.rgba16.inc.c\"\n};\n\n// 0x0701F800 - 0x07020800\nALIGNED8 static const Texture inside_castle_seg7_texture_0701F800[] = {\n#include \"levels/castle_inside/39.rgba16.inc.c\"\n};\n\n// 0x07020800 - 0x07021800\nALIGNED8 static const Texture inside_castle_seg7_texture_07020800[] = {\n#include \"levels/castle_inside/40.rgba16.inc.c\"\n};\n"
  },
  {
    "path": "levels/castle_inside/trap_door/collision.inc.c",
    "content": "// 0x07078DE4 - 0x07078E14\nconst Collision inside_castle_seg7_collision_floor_trap[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x4),\n    COL_VERTEX(358, 0, -306),\n    COL_VERTEX(0, 0, -306),\n    COL_VERTEX(0, 0, 307),\n    COL_VERTEX(358, 0, 307),\n    COL_TRI_INIT(SURFACE_DEFAULT, 2),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/castle_inside/trap_door/geo.inc.c",
    "content": "// 0x0E000F18\nconst GeoLayout castle_geo_000F18[] = {\n    GEO_CULLING_RADIUS(600),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0703BCB8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/castle_inside/trap_door/model.inc.c",
    "content": "// 0x0703BAB0 - 0x0703BAC8\nstatic const Lights1 inside_castle_seg7_lights_0703BAB0 = gdSPDefLights1(\n    0x5f, 0x5f, 0x5f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0703BAC8 - 0x0703BBB8\nstatic const Vtx inside_castle_seg7_vertex_0703BAC8[] = {\n    {{{   358,      0,    307}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   358,   -101,    307}, 0, {     0,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   358,   -101,   -306}, 0, {  3034,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   358,      0,   -306}, 0, {  1756,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   358,   -101,   -306}, 0, {  1756,    478}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,   -101,   -306}, 0, {     0,    478}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,      0,   -306}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,      0,   -306}, 0, {  3034,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,   -101,   -306}, 0, {  3034,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,   -101,    307}, 0, {     0,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,      0,    307}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,      0,    307}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   358,   -101,    307}, 0, {  1756,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   358,      0,    307}, 0, {  1756,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,   -101,    307}, 0, {     0,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0703BBB8 - 0x0703BC28\nstatic const Vtx inside_castle_seg7_vertex_0703BBB8[] = {\n    {{{   358,      0,   -306}, 0, {  1756,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,      0,    307}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   358,      0,    307}, 0, {  1756,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   358,      0,    307}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   358,   -101,   -306}, 0, {  3034,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   358,      0,   -306}, 0, {  3034,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,      0,   -306}, 0, {     0,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0703BC28 - 0x0703BCB8\nstatic const Gfx inside_castle_seg7_dl_0703BC28[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_0703BAB0.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_0703BAB0.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_0703BAC8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(inside_castle_seg7_vertex_0703BBB8, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  6,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0703BCB8 - 0x0703BD28\nconst Gfx inside_castle_seg7_dl_0703BCB8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_0703BC28),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/castle_inside/water_level_pillar/collision.inc.c",
    "content": "// 0x07078E80 - 0x07078EF8\nconst Collision inside_castle_seg7_collision_water_level_pillar[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-153, 0, -153),\n    COL_VERTEX(-153, -409, 154),\n    COL_VERTEX(-153, 0, 154),\n    COL_VERTEX(154, 0, -153),\n    COL_VERTEX(154, 0, 154),\n    COL_VERTEX(154, -409, 154),\n    COL_VERTEX(154, -409, -153),\n    COL_VERTEX(-153, -409, -153),\n    COL_TRI_INIT(SURFACE_DEFAULT, 10),\n    COL_TRI(0, 1, 2),\n    COL_TRI(2, 3, 0),\n    COL_TRI(2, 4, 3),\n    COL_TRI(2, 5, 4),\n    COL_TRI(2, 1, 5),\n    COL_TRI(4, 5, 6),\n    COL_TRI(4, 6, 3),\n    COL_TRI(0, 7, 1),\n    COL_TRI(3, 6, 7),\n    COL_TRI(3, 7, 0),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/castle_inside/water_level_pillar/geo.inc.c",
    "content": "// 0x0E001940\nconst GeoLayout castle_geo_001940[] = {\n    GEO_CULLING_RADIUS(550),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07068B10),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/castle_inside/water_level_pillar/model.inc.c",
    "content": "// 0x07068908 - 0x07068920\nstatic const Lights1 inside_castle_seg7_lights_07068908 = gdSPDefLights1(\n    0x5f, 0x5f, 0x5f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07068920 - 0x07068960\nstatic const Vtx inside_castle_seg7_vertex_07068920[] = {\n    {{{  -153,      0,    154}, 0, {  5078,   4564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   154,      0,    154}, 0, {  6612,   4564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   154,      0,   -153}, 0, {  6612,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -153,      0,   -153}, 0, {  5078,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07068960 - 0x07068A60\nstatic const Vtx inside_castle_seg7_vertex_07068960[] = {\n    {{{  -153,      0,    154}, 0, { -5140,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -153,   -409,    154}, 0, { -5140,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   154,   -409,    154}, 0, { -2074,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -153,      0,   -153}, 0, {  2012,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -153,   -409,    154}, 0, {  5078,   4054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -153,      0,    154}, 0, {  5078,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -153,   -409,   -153}, 0, {  2012,   4054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   154,      0,   -153}, 0, { -2074,  -3098}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -153,   -409,   -153}, 0, { -5140,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -153,      0,   -153}, 0, { -5140,  -3098}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   154,   -409,   -153}, 0, { -2074,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   154,      0,    154}, 0, {  5078,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   154,   -409,   -153}, 0, {  2012,   4054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   154,      0,   -153}, 0, {  2012,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   154,   -409,    154}, 0, {  5078,   4054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   154,      0,    154}, 0, { -2074,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07068A60 - 0x07068AA8\nstatic const Gfx inside_castle_seg7_dl_07068A60[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_0900B000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&inside_castle_seg7_lights_07068908.l, 1),\n    gsSPLight(&inside_castle_seg7_lights_07068908.a, 2),\n    gsSPVertex(inside_castle_seg7_vertex_07068920, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07068AA8 - 0x07068B10\nstatic const Gfx inside_castle_seg7_dl_07068AA8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(inside_castle_seg7_vertex_07068960, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07068B10 - 0x07068B88\nconst Gfx inside_castle_seg7_dl_07068B10[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(inside_castle_seg7_dl_07068A60),\n    gsSPDisplayList(inside_castle_seg7_dl_07068AA8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ccm/areas/1/1/model.inc.c",
    "content": "// 0x07005300 - 0x07005318\nstatic const Lights1 ccm_seg7_lights_07005300 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07005318 - 0x07005330\nstatic const Lights1 ccm_seg7_lights_07005318 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0x99, 0x99, 0x99, 0x28, 0x28, 0x28\n);\n\n// 0x07005330 - 0x07005348\nstatic const Lights1 ccm_seg7_lights_07005330 = gdSPDefLights1(\n    0x5d, 0x5d, 0x5d,\n    0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28\n);\n\n// 0x07005348 - 0x07005360\nstatic const Lights1 ccm_seg7_lights_07005348 = gdSPDefLights1(\n    0x33, 0x33, 0x33,\n    0x66, 0x66, 0x66, 0x28, 0x28, 0x28\n);\n\n// 0x07005360 - 0x07005460\nstatic const Vtx ccm_seg7_vertex_07005360[] = {\n    {{{   768,   -972,  -3327}, 0, { -1516,   1496}, {0xfc, 0x26, 0x88, 0xff}}},\n    {{{   768,  -1074,  -3429}, 0, { -1516,   1700}, {0xf4, 0x6e, 0xc4, 0xff}}},\n    {{{ -3071,  -1125,  -3071}, 0, {  6146,    986}, {0xb7, 0x3e, 0xae, 0xff}}},\n    {{{ -1228,  -3583,   5734}, 0, {  -712,    990}, {0xf2, 0x78, 0xdd, 0xff}}},\n    {{{ -1228,  -3583,   6246}, 0, {  -712,   2692}, {0xd7, 0x44, 0x62, 0xff}}},\n    {{{ -1023,  -3583,   6246}, 0, {     0,   2692}, {0x29, 0x44, 0x62, 0xff}}},\n    {{{ -1330,  -3583,   6144}, 0, { -1052,   2350}, {0x9f, 0x46, 0x27, 0xff}}},\n    {{{ -1330,  -3583,   5837}, 0, { -1052,   1328}, {0x8b, 0x08, 0xd1, 0xff}}},\n    {{{  -921,  -3583,   6144}, 0, {   308,   2350}, {0x61, 0x46, 0x27, 0xff}}},\n    {{{  -921,  -3583,   5837}, 0, {   308,   1328}, {0x61, 0x46, 0xd9, 0xff}}},\n    {{{ -1023,  -3583,   5734}, 0, {     0,    990}, {0x30, 0x02, 0x8b, 0xff}}},\n    {{{ -3124,  -1228,  -3159}, 0, {  6252,   1160}, {0xe7, 0x7b, 0xf0, 0xff}}},\n    {{{ -3071,  -1228,  -2047}, 0, {  6146,  -1058}, {0xa2, 0x53, 0xf3, 0xff}}},\n    {{{  2838,   -814,  -3593}, 0, { -5648,   2026}, {0xe8, 0x7c, 0x00, 0xff}}},\n    {{{  3072,   -409,  -3020}, 0, { -6116,    884}, {0x0a, 0x6c, 0xbf, 0xff}}},\n    {{{  3686,   -613,  -3225}, 0, { -7342,   1292}, {0xe9, 0x7a, 0xe9, 0xff}}},\n};\n\n// 0x07005460 - 0x07005560\nstatic const Vtx ccm_seg7_vertex_07005460[] = {\n    {{{ -3124,  -1228,  -3159}, 0, {  6146,    986}, {0xe7, 0x7b, 0xf0, 0xff}}},\n    {{{ -4490,  -1228,  -3765}, 0, {  8980,   2370}, {0xaf, 0x5a, 0xdc, 0xff}}},\n    {{{ -3071,  -1228,  -2047}, 0, {  6146,  -1058}, {0xa2, 0x53, 0xf3, 0xff}}},\n    {{{ -4874,  -1410,  -2465}, 0, {  9746,   -224}, {0xa6, 0x56, 0xe9, 0xff}}},\n    {{{ -4095,  -1330,  -1023}, 0, {  8190,  -3102}, {0x99, 0x49, 0xff, 0xff}}},\n    {{{  3072,   -409,  -2559}, 0, { -6116,    -36}, {0x09, 0x50, 0x9f, 0xff}}},\n    {{{  3072,   -409,  -3020}, 0, { -6116,    884}, {0x0a, 0x6c, 0xbf, 0xff}}},\n    {{{   768,    154,  -3327}, 0, { -1516,   1496}, {0x13, 0x57, 0xa7, 0xff}}},\n    {{{  3860,   -470,  -2720}, 0, { -7688,    286}, {0xe2, 0x72, 0xd3, 0xff}}},\n    {{{ -5213,  -1740,   4792}, 0, { 10422, -14712}, {0xfb, 0x7d, 0x12, 0xff}}},\n    {{{ -5144,  -1740,   4720}, 0, { 10286, -14568}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6398,  -1740,   3943}, 0, { 12788, -13016}, {0xd8, 0x77, 0x10, 0xff}}},\n    {{{ -5151,  -1740,   4516}, 0, { 10300, -14160}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4940,  -1740,   4714}, 0, {  9876, -14554}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4360,  -1945,   5999}, 0, {  8718, -17120}, {0xce, 0x67, 0x34, 0xff}}},\n    {{{ -5387,  -1740,   4976}, 0, { 10768, -15078}, {0xb9, 0x45, 0x4e, 0xff}}},\n};\n\n// 0x07005560 - 0x07005660\nstatic const Vtx ccm_seg7_vertex_07005560[] = {\n    {{{ -4947,  -1740,   4509}, 0, {  9890, -14146}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4940,  -1740,   4714}, 0, {  9876, -14554}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4402,  -1740,   3789}, 0, {  8804, -12708}, {0xd2, 0x74, 0x12, 0xff}}},\n    {{{ -3268,  -1740,   6246}, 0, {  6540, -17614}, {0x02, 0x65, 0x4c, 0xff}}},\n    {{{ -5213,  -1740,   4792}, 0, { 10422, -14712}, {0xfb, 0x7d, 0x12, 0xff}}},\n    {{{ -3892,  -2149,   6246}, 0, {  7784, -17614}, {0x49, 0x49, 0x49, 0xff}}},\n    {{{ -3892,  -2149,   6605}, 0, {  7784, -18330}, {0xcb, 0x08, 0x72, 0xff}}},\n    {{{ -3268,  -2149,   6605}, 0, {  6540, -18330}, {0x39, 0x62, 0x37, 0xff}}},\n    {{{  3277,   2253,  -2764}, 0, { -6524,    374}, {0x08, 0x7e, 0x03, 0xff}}},\n    {{{  3072,   2304,  -3327}, 0, { -6116,   1496}, {0x20, 0x40, 0x98, 0xff}}},\n    {{{   945,   2560,  -3073}, 0, { -1870,    990}, {0x19, 0x67, 0xbc, 0xff}}},\n    {{{ -3268,  -2149,   6246}, 0, {  6540, -17614}, {0x69, 0x2b, 0x38, 0xff}}},\n    {{{ -4360,  -1945,   5999}, 0, {  8718, -17120}, {0xce, 0x67, 0x34, 0xff}}},\n    {{{ -3892,  -1945,   6605}, 0, {  7784, -18330}, {0x5b, 0x4b, 0x2e, 0xff}}},\n    {{{ -3892,  -1945,   6246}, 0, {  7784, -17614}, {0x1b, 0x73, 0x2e, 0xff}}},\n    {{{ -4382,  -1945,   5414}, 0, {  8762, -15952}, {0xe6, 0x75, 0x27, 0xff}}},\n};\n\n// 0x07005660 - 0x07005750\nstatic const Vtx ccm_seg7_vertex_07005660[] = {\n    {{{  3277,   2253,  -2764}, 0, { -6524,    374}, {0x08, 0x7e, 0x03, 0xff}}},\n    {{{   945,   2560,  -2203}, 0, { -1870,   -746}, {0x15, 0x5f, 0xaf, 0xff}}},\n    {{{  2617,   2359,  -2483}, 0, { -5208,   -188}, {0x3e, 0x48, 0xad, 0xff}}},\n    {{{   945,   2560,  -3073}, 0, { -1870,    990}, {0x19, 0x67, 0xbc, 0xff}}},\n    {{{  1445,   3072,  -2287}, 0, { -2868,   -580}, {0x21, 0x71, 0xd4, 0xff}}},\n    {{{    23,   3471,  -1281}, 0, {     0,  -2588}, {0xee, 0x76, 0xd8, 0xff}}},\n    {{{    23,   3471,   -769}, 0, {     0,  -3610}, {0x1c, 0x75, 0xd9, 0xff}}},\n    {{{   638,   2765,  -3073}, 0, { -1256,    990}, {0x1d, 0x62, 0xb5, 0xff}}},\n    {{{   638,   2765,  -2152}, 0, { -1256,   -848}, {0xef, 0x55, 0xa4, 0xff}}},\n    {{{  4096,   2304,  -2559}, 0, { -8160,    -36}, {0x4f, 0x61, 0xf0, 0xff}}},\n    {{{  3072,   2304,  -3327}, 0, { -6116,   1496}, {0x20, 0x40, 0x98, 0xff}}},\n    {{{  3072,   2201,  -1914}, 0, { -6116,  -1322}, {0x49, 0x67, 0xfc, 0xff}}},\n    {{{  2048,   2560,  -2047}, 0, { -4072,  -1058}, {0x38, 0x6d, 0x1f, 0xff}}},\n    {{{  2617,   2703,  -2483}, 0, { -5208,   -188}, {0x26, 0x54, 0xaa, 0xff}}},\n    {{{    23,   3471,  -2049}, 0, {     0,  -1054}, {0xaa, 0x28, 0xad, 0xff}}},\n};\n\n// 0x07005750 - 0x07005840\nstatic const Vtx ccm_seg7_vertex_07005750[] = {\n    {{{ -6423,  -1740,    103}, 0, { 12838,  -5350}, {0xb4, 0x65, 0xfa, 0xff}}},\n    {{{ -6398,  -1740,   3943}, 0, { 12788, -13016}, {0xd8, 0x77, 0x10, 0xff}}},\n    {{{ -4402,  -1740,   3789}, 0, {  8804, -12708}, {0xd2, 0x74, 0x12, 0xff}}},\n    {{{ -5151,  -1740,   4516}, 0, { 10300, -14160}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2024,   2560,  -1536}, 0, {  4056,  -2076}, {0x00, 0x71, 0xc7, 0xff}}},\n    {{{ -2139,   2867,   -926}, 0, {  4286,  -3296}, {0xed, 0x7b, 0x16, 0xff}}},\n    {{{ -1000,   3471,  -1281}, 0, {  2012,  -2588}, {0xee, 0x5a, 0xaa, 0xff}}},\n    {{{ -1000,   3471,   -513}, 0, {  2012,  -4120}, {0xa8, 0x57, 0x18, 0xff}}},\n    {{{ -2429,   2867,   -636}, 0, {  4864,  -3874}, {0x46, 0x56, 0x3c, 0xff}}},\n    {{{ -2638,   2560,  -1946}, 0, {  5282,  -1258}, {0x1d, 0x7a, 0xf3, 0xff}}},\n    {{{ -3045,   2816,  -1970}, 0, {  6094,  -1212}, {0xb5, 0x62, 0xe6, 0xff}}},\n    {{{ -2024,   2560,  -2766}, 0, {  4056,    376}, {0x15, 0x7b, 0x15, 0xff}}},\n    {{{  3072,   1685,   1331}, 0, { -6116,  -7802}, {0x02, 0x7b, 0x1b, 0xff}}},\n    {{{  1994,   1481,   2623}, 0, { -3964, -10382}, {0xee, 0x79, 0xe0, 0xff}}},\n    {{{  4096,   1685,   1843}, 0, { -8160,  -8824}, {0x21, 0x78, 0x16, 0xff}}},\n};\n\n// 0x07005840 - 0x07005920\nstatic const Vtx ccm_seg7_vertex_07005840[] = {\n    {{{    23,   2560,  -3073}, 0, {     0,    990}, {0xf1, 0x67, 0xb8, 0xff}}},\n    {{{ -2024,   2662,  -3073}, 0, {  4056,    990}, {0xf1, 0x6c, 0xc0, 0xff}}},\n    {{{ -2024,   2560,  -2766}, 0, {  4056,    376}, {0x15, 0x7b, 0x15, 0xff}}},\n    {{{  2753,  -2303,   3447}, 0, { -5480, -12026}, {0x4e, 0x63, 0x03, 0xff}}},\n    {{{  3362,  -2764,   2735}, 0, { -6694, -10604}, {0x6c, 0x33, 0x29, 0xff}}},\n    {{{  2681,  -2744,   2005}, 0, { -5336,  -9146}, {0x47, 0x68, 0xf9, 0xff}}},\n    {{{  2579,  -2303,   3259}, 0, { -5132, -11652}, {0x59, 0x59, 0x0c, 0xff}}},\n    {{{  3979,  -3071,    800}, 0, { -7926,  -6742}, {0x41, 0x6c, 0x01, 0xff}}},\n    {{{  3657,  -3071,    622}, 0, { -7282,  -6388}, {0x62, 0x38, 0x38, 0xff}}},\n    {{{ -3045,   2816,  -1970}, 0, {  6094,  -1212}, {0xb5, 0x62, 0xe6, 0xff}}},\n    {{{  3072,   2201,  -1914}, 0, { -6116,  -1322}, {0x49, 0x67, 0xfc, 0xff}}},\n    {{{  3072,   1685,   1331}, 0, { -6116,  -7802}, {0x02, 0x7b, 0x1b, 0xff}}},\n    {{{  4096,   1685,   1843}, 0, { -8160,  -8824}, {0x21, 0x78, 0x16, 0xff}}},\n    {{{  4096,   2304,  -2559}, 0, { -8160,    -36}, {0x4f, 0x61, 0xf0, 0xff}}},\n};\n\n// 0x07005920 - 0x07005A00\nstatic const Vtx ccm_seg7_vertex_07005920[] = {\n    {{{ -1000,   3471,  -1281}, 0, {  2012,  -2588}, {0xee, 0x5a, 0xaa, 0xff}}},\n    {{{    23,   3471,   -769}, 0, {     0,  -3610}, {0x1c, 0x75, 0xd9, 0xff}}},\n    {{{    23,   3471,  -1281}, 0, {     0,  -2588}, {0xee, 0x76, 0xd8, 0xff}}},\n    {{{   168,   1229,   2511}, 0, {  -320, -10156}, {0xfe, 0x77, 0xd7, 0xff}}},\n    {{{   256,   1382,   2696}, 0, {  -494, -10526}, {0xe4, 0x35, 0x6f, 0xff}}},\n    {{{  1994,   1481,   2623}, 0, { -3964, -10382}, {0xee, 0x79, 0xe0, 0xff}}},\n    {{{  2057,   1737,   2920}, 0, { -4090, -10974}, {0x19, 0x57, 0x58, 0xff}}},\n    {{{  1980,   1481,   2008}, 0, { -3934,  -9154}, {0xf2, 0x7c, 0x11, 0xff}}},\n    {{{  3072,   1685,   1331}, 0, { -6116,  -7802}, {0x02, 0x7b, 0x1b, 0xff}}},\n    {{{  4096,   1685,   1843}, 0, { -8160,  -8824}, {0x21, 0x78, 0x16, 0xff}}},\n    {{{  1485,   3072,    256}, 0, { -2948,  -5656}, {0x3a, 0x6a, 0x24, 0xff}}},\n    {{{  1445,   3072,  -2287}, 0, { -2868,   -580}, {0x21, 0x71, 0xd4, 0xff}}},\n    {{{   512,   3072,   -511}, 0, { -1006,  -4124}, {0x5b, 0x56, 0xee, 0xff}}},\n    {{{   512,   3072,    256}, 0, { -1006,  -5656}, {0x59, 0x4d, 0x2d, 0xff}}},\n};\n\n// 0x07005A00 - 0x07005B00\nstatic const Vtx ccm_seg7_vertex_07005A00[] = {\n    {{{ -4402,  -1740,   3789}, 0, {  8804, -12708}, {0xd2, 0x74, 0x12, 0xff}}},\n    {{{ -3268,  -1740,   6246}, 0, {  6540, -17614}, {0x02, 0x65, 0x4c, 0xff}}},\n    {{{ -3268,  -1740,   5668}, 0, {  6540, -16460}, {0x43, 0x5b, 0x38, 0xff}}},\n    {{{ -1000,   3471,  -1281}, 0, {  2012,  -2588}, {0xee, 0x5a, 0xaa, 0xff}}},\n    {{{ -1000,   3471,   -513}, 0, {  2012,  -4120}, {0xa8, 0x57, 0x18, 0xff}}},\n    {{{    23,   3471,   -769}, 0, {     0,  -3610}, {0x1c, 0x75, 0xd9, 0xff}}},\n    {{{  3277,   2253,  -2764}, 0, { -6524,    374}, {0x08, 0x7e, 0x03, 0xff}}},\n    {{{  3072,   2201,  -1914}, 0, { -6116,  -1322}, {0x49, 0x67, 0xfc, 0xff}}},\n    {{{  4096,   2304,  -2559}, 0, { -8160,    -36}, {0x4f, 0x61, 0xf0, 0xff}}},\n    {{{ -5151,  -1740,   4516}, 0, { 10300, -14160}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4947,  -1740,   4509}, 0, {  9890, -14146}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5631,  -1740,      0}, 0, { 11256,  -5146}, {0x99, 0x48, 0xf6, 0xff}}},\n    {{{ -6423,  -1740,    103}, 0, { 12838,  -5350}, {0xb4, 0x65, 0xfa, 0xff}}},\n    {{{ -3839,  -1228,  -4351}, 0, {  7680,   3540}, {0xd9, 0x74, 0xe0, 0xff}}},\n    {{{ -5119,  -1842,  -5375}, 0, { 10234,   5584}, {0xd9, 0x4c, 0xa3, 0xff}}},\n    {{{ -4490,  -1740,  -3765}, 0, {  8980,   2370}, {0xa3, 0x4c, 0xdb, 0xff}}},\n};\n\n// 0x07005B00 - 0x07005BF0\nstatic const Vtx ccm_seg7_vertex_07005B00[] = {\n    {{{ -5631,  -1330,      0}, 0, { 11256,  -5146}, {0xa9, 0x5b, 0x0b, 0xff}}},\n    {{{ -3071,  -1433,   1024}, 0, {  6146,  -7190}, {0xbe, 0x67, 0x20, 0xff}}},\n    {{{ -4095,  -1330,  -1023}, 0, {  8190,  -3102}, {0x99, 0x49, 0xff, 0xff}}},\n    {{{ -4402,  -1535,   3789}, 0, {  8804, -12708}, {0xb1, 0x59, 0x2a, 0xff}}},\n    {{{ -3327,  -1535,   3840}, 0, {  6658, -12810}, {0x3c, 0x6f, 0x07, 0xff}}},\n    {{{ -2776,  -1535,   1910}, 0, {  5556,  -8958}, {0xe1, 0x57, 0x56, 0xff}}},\n    {{{ -3268,  -1535,   5668}, 0, {  6540, -16460}, {0x10, 0x71, 0x36, 0xff}}},\n    {{{ -5119,  -1842,  -5375}, 0, { 10234,   5584}, {0xd9, 0x4c, 0xa3, 0xff}}},\n    {{{ -6423,  -1740,    103}, 0, { 12838,  -5350}, {0xb4, 0x65, 0xfa, 0xff}}},\n    {{{ -4874,  -1740,  -2465}, 0, {  9746,   -224}, {0xa8, 0x57, 0xe6, 0xff}}},\n    {{{ -3839,  -1228,  -4351}, 0, {  7680,   3540}, {0xd9, 0x74, 0xe0, 0xff}}},\n    {{{   768,  -1074,  -4453}, 0, { -1516,   3336}, {0xf7, 0x78, 0xd9, 0xff}}},\n    {{{ -4490,  -1740,  -3765}, 0, {  8980,   2370}, {0xa3, 0x4c, 0xdb, 0xff}}},\n    {{{ -5631,  -1740,      0}, 0, { 11256,  -5146}, {0x99, 0x48, 0xf6, 0xff}}},\n    {{{ -4874,  -1410,  -2465}, 0, {  9746,   -224}, {0xa6, 0x56, 0xe9, 0xff}}},\n};\n\n// 0x07005BF0 - 0x07005CE0\nstatic const Vtx ccm_seg7_vertex_07005BF0[] = {\n    {{{ -3839,  -1228,  -4351}, 0, {  7680,   3540}, {0xd9, 0x74, 0xe0, 0xff}}},\n    {{{ -4490,  -1228,  -3765}, 0, {  8980,   2370}, {0xaf, 0x5a, 0xdc, 0xff}}},\n    {{{ -3124,  -1228,  -3159}, 0, {  6146,    986}, {0xe7, 0x7b, 0xf0, 0xff}}},\n    {{{   768,  -1074,  -4453}, 0, { -1516,   3744}, {0xf7, 0x78, 0xd9, 0xff}}},\n    {{{   768,  -1074,  -3429}, 0, { -1516,   1700}, {0xf4, 0x6e, 0xc4, 0xff}}},\n    {{{  2838,   -814,  -3593}, 0, { -5648,   2026}, {0xe8, 0x7c, 0x00, 0xff}}},\n    {{{  2668,   -646,  -3969}, 0, { -5308,   2778}, {0xde, 0x7a, 0xff, 0xff}}},\n    {{{  4062,   -440,  -3386}, 0, { -8092,   1612}, {0xb2, 0x63, 0xfc, 0xff}}},\n    {{{  4525,    144,  -3360}, 0, { -9016,   1560}, {0x60, 0x52, 0xf7, 0xff}}},\n    {{{  4413,    -65,  -4089}, 0, { -8792,   3016}, {0xe0, 0x77, 0xe4, 0xff}}},\n    {{{  3884,   -511,  -3566}, 0, { -7736,   1974}, {0xd4, 0x72, 0x21, 0xff}}},\n    {{{  3072,   -409,  -3020}, 0, { -6116,    884}, {0x0a, 0x6c, 0xbf, 0xff}}},\n    {{{  3686,   -613,  -3225}, 0, { -7342,   1292}, {0xe9, 0x7a, 0xe9, 0xff}}},\n    {{{  3860,   -470,  -2720}, 0, { -7688,    286}, {0xe2, 0x72, 0xd3, 0xff}}},\n    {{{  4350,     41,  -2633}, 0, { -8666,    112}, {0x04, 0x6c, 0xbf, 0xff}}},\n};\n\n// 0x07005CE0 - 0x07005DE0\nstatic const Vtx ccm_seg7_vertex_07005CE0[] = {\n    {{{  2048,   2304,   -511}, 0, { -4072,  -4124}, {0x34, 0x65, 0x38, 0xff}}},\n    {{{  1946,   1531,   1741}, 0, { -3868,  -8620}, {0x14, 0x74, 0x2e, 0xff}}},\n    {{{  3072,   1685,   1331}, 0, { -6116,  -7802}, {0x02, 0x7b, 0x1b, 0xff}}},\n    {{{   768,    154,  -2610}, 0, { -1516,     66}, {0x0f, 0x5a, 0xa9, 0xff}}},\n    {{{  3072,   -409,  -2559}, 0, { -6116,    -36}, {0x09, 0x50, 0x9f, 0xff}}},\n    {{{   768,    154,  -3327}, 0, { -1516,   1496}, {0x13, 0x57, 0xa7, 0xff}}},\n    {{{  2816,   2560,   -767}, 0, { -5604,  -3612}, {0xe2, 0x5f, 0x4d, 0xff}}},\n    {{{  2662,   2304,   -511}, 0, { -5298,  -4124}, {0xe7, 0x67, 0x44, 0xff}}},\n    {{{  3072,   2560,   -511}, 0, { -6116,  -4124}, {0x40, 0x5f, 0x34, 0xff}}},\n    {{{  2048,   2560,   -767}, 0, { -4072,  -3612}, {0x3a, 0x5c, 0x40, 0xff}}},\n    {{{   -50,   1280,   2048}, 0, {   116,  -9234}, {0xf4, 0x75, 0x2e, 0xff}}},\n    {{{    37,   1229,   2233}, 0, {   -56,  -9602}, {0xf4, 0x7d, 0x0f, 0xff}}},\n    {{{  1980,   1481,   2008}, 0, { -3934,  -9154}, {0xf2, 0x7c, 0x11, 0xff}}},\n    {{{ -6398,  -1740,   3943}, 0, { 12788, -13016}, {0xd8, 0x77, 0x10, 0xff}}},\n    {{{ -5387,  -1740,   4976}, 0, { 10768, -15078}, {0xb9, 0x45, 0x4e, 0xff}}},\n    {{{ -5213,  -1740,   4792}, 0, { 10422, -14712}, {0xfb, 0x7d, 0x12, 0xff}}},\n};\n\n// 0x07005DE0 - 0x07005EE0\nstatic const Vtx ccm_seg7_vertex_07005DE0[] = {\n    {{{ -1005,    410,  -2562}, 0, {  2022,    -30}, {0xf7, 0x48, 0x99, 0xff}}},\n    {{{   768,    154,  -2610}, 0, { -1516,     66}, {0x0f, 0x5a, 0xa9, 0xff}}},\n    {{{ -3318,    819,  -3055}, 0, {  6640,    954}, {0x01, 0x73, 0xcd, 0xff}}},\n    {{{ -3045,    768,  -1970}, 0, {  6094,  -1212}, {0xdf, 0x6f, 0xcd, 0xff}}},\n    {{{   768,    154,  -3327}, 0, { -1516,   1496}, {0x13, 0x57, 0xa7, 0xff}}},\n    {{{ -3964,    819,  -2785}, 0, {  7928,    416}, {0xd0, 0x69, 0xce, 0xff}}},\n    {{{ -3608,    819,   -864}, 0, {  7220,  -3420}, {0xb4, 0x62, 0xe8, 0xff}}},\n    {{{ -4536,    819,   -983}, 0, {  9070,  -3182}, {0x8d, 0x34, 0x00, 0xff}}},\n    {{{ -3574,   1090,   1394}, 0, {  7150,  -7928}, {0xa3, 0x3b, 0x3e, 0xff}}},\n    {{{ -3235,   1045,   1509}, 0, {  6474,  -8158}, {0xdc, 0x35, 0x6d, 0xff}}},\n    {{{ -3203,   1095,   1412}, 0, {  6410,  -7964}, {0xfd, 0x7e, 0x03, 0xff}}},\n    {{{ -3104,   1092,   1121}, 0, {  6212,  -7382}, {0xf5, 0x7d, 0xee, 0xff}}},\n    {{{ -3071,   1040,   1024}, 0, {  6148,  -7190}, {0x32, 0x6b, 0xd3, 0xff}}},\n    {{{   256,   1382,   2696}, 0, {  -494, -10526}, {0xe4, 0x35, 0x6f, 0xff}}},\n    {{{   168,   1229,   2511}, 0, {  -320, -10156}, {0xfe, 0x77, 0xd7, 0xff}}},\n    {{{    37,   1229,   2233}, 0, {   -56,  -9602}, {0xf4, 0x7d, 0x0f, 0xff}}},\n};\n\n// 0x07005EE0 - 0x07005FC0\nstatic const Vtx ccm_seg7_vertex_07005EE0[] = {\n    {{{   -50,   1280,   2048}, 0, {   116,  -9234}, {0xf4, 0x75, 0x2e, 0xff}}},\n    {{{ -3071,   1040,   1024}, 0, {  6148,  -7190}, {0x32, 0x6b, 0xd3, 0xff}}},\n    {{{ -3104,   1092,   1121}, 0, {  6212,  -7382}, {0xf5, 0x7d, 0xee, 0xff}}},\n    {{{    37,   1229,   2233}, 0, {   -56,  -9602}, {0xf4, 0x7d, 0x0f, 0xff}}},\n    {{{  1994,   1481,   2623}, 0, { -3964, -10382}, {0xee, 0x79, 0xe0, 0xff}}},\n    {{{  1980,   1481,   2008}, 0, { -3934,  -9154}, {0xf2, 0x7c, 0x11, 0xff}}},\n    {{{ -4536,    819,   -983}, 0, {  9070,  -3182}, {0x8d, 0x34, 0x00, 0xff}}},\n    {{{ -3574,   1090,   1394}, 0, {  7150,  -7928}, {0xa3, 0x3b, 0x3e, 0xff}}},\n    {{{ -3071,   -511,   1024}, 0, {  6146,  -7190}, {0xc0, 0x50, 0x4a, 0xff}}},\n    {{{   498,   -511,   3204}, 0, {  -978, -11542}, {0x11, 0x64, 0x4b, 0xff}}},\n    {{{   -50,   -511,   2048}, 0, {   116,  -9234}, {0xd7, 0x55, 0x54, 0xff}}},\n    {{{  2048,   -511,   2048}, 0, { -4072,  -9234}, {0x3a, 0x4b, 0x54, 0xff}}},\n    {{{ -2776,   -511,   1910}, 0, {  5556,  -8958}, {0xa8, 0x21, 0x54, 0xff}}},\n    {{{   168,   1229,   2511}, 0, {  -320, -10156}, {0xfe, 0x77, 0xd7, 0xff}}},\n};\n\n// 0x07005FC0 - 0x070060C0\nstatic const Vtx ccm_seg7_vertex_07005FC0[] = {\n    {{{  6537,  -4607,   -852}, 0, { 13018,   -714}, {0x44, 0x6a, 0x00, 0xff}}},\n    {{{  5989,  -4607,  -3076}, 0, { 11924,  -5152}, {0x44, 0x69, 0xf0, 0xff}}},\n    {{{  5039,  -4607,  -1191}, 0, { 10026,  -1390}, {0x41, 0x60, 0x33, 0xff}}},\n    {{{    37,   1229,   2233}, 0, {   -56,  -9602}, {0xf4, 0x7d, 0x0f, 0xff}}},\n    {{{   -50,   1280,   2048}, 0, {   116,  -9234}, {0xf4, 0x75, 0x2e, 0xff}}},\n    {{{ -3104,   1092,   1121}, 0, {  6212,  -7382}, {0xf5, 0x7d, 0xee, 0xff}}},\n    {{{  4096,  -1228,      0}, 0, { -8160,  -5146}, {0x39, 0x4d, 0x52, 0xff}}},\n    {{{  3707,  -1227,    552}, 0, { -7368,  -6268}, {0x47, 0x39, 0x57, 0xff}}},\n    {{{  4262,  -1228,    975}, 0, { -8492,  -7092}, {0x1b, 0x61, 0x4d, 0xff}}},\n    {{{  4606,  -1228,     68}, 0, { -9596,  -5424}, {0x6c, 0x3d, 0x1a, 0xff}}},\n    {{{  2617,   2703,  -2483}, 0, { -5208,   -188}, {0x26, 0x54, 0xaa, 0xff}}},\n    {{{  2048,   2560,  -2047}, 0, { -4072,  -1058}, {0x38, 0x6d, 0x1f, 0xff}}},\n    {{{  3072,   2560,  -1914}, 0, { -6116,  -1322}, {0x6f, 0x2a, 0xd5, 0xff}}},\n    {{{  4240,  -4607,  -1490}, 0, {  8106,  -2016}, {0x5d, 0x17, 0xad, 0xff}}},\n    {{{  5490,  -4607,  -3189}, 0, { 10926,  -5378}, {0xc0, 0x2e, 0x9d, 0xff}}},\n    {{{  3682,  -4607,   2895}, 0, {  7318,   6768}, {0xda, 0x78, 0xf4, 0xff}}},\n};\n\n// 0x070060C0 - 0x070061C0\nstatic const Vtx ccm_seg7_vertex_070060C0[] = {\n    {{{  4790,  -4607,   5511}, 0, {  9528,  11988}, {0x26, 0x76, 0x18, 0xff}}},\n    {{{  6537,  -4607,   -852}, 0, { 13018,   -714}, {0x44, 0x6a, 0x00, 0xff}}},\n    {{{  3682,  -4607,   2895}, 0, {  7318,   6768}, {0xda, 0x78, 0xf4, 0xff}}},\n    {{{  1192,  -4607,   5626}, 0, {  2348,  12218}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1792,  -4607,   6654}, 0, {  3544,  14270}, {0x12, 0x4d, 0x63, 0xff}}},\n    {{{   768,  -4607,   5118}, 0, {  1500,  11204}, {0xda, 0x70, 0x2b, 0xff}}},\n    {{{  3268,  -4607,   5055}, 0, {  6492,  11078}, {0x04, 0x7e, 0xf8, 0xff}}},\n    {{{  3780,  -4607,   5045}, 0, {  7514,  11058}, {0xfa, 0x7e, 0xf6, 0xff}}},\n    {{{  4027,  -4607,   4596}, 0, {  8008,  10162}, {0xf7, 0x7e, 0x00, 0xff}}},\n    {{{   768,  -4607,   6654}, 0, {  1500,  14270}, {0xda, 0x72, 0x26, 0xff}}},\n    {{{   988,  -4607,   5831}, 0, {  1940,  12626}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3004,  -4607,   4617}, 0, {  5964,  10204}, {0x08, 0x7e, 0x00, 0xff}}},\n    {{{  3763,  -4607,   4158}, 0, {  7478,   9288}, {0xfa, 0x7e, 0x0a, 0xff}}},\n    {{{  3251,  -4607,   4168}, 0, {  6456,   9308}, {0x05, 0x7e, 0x08, 0xff}}},\n    {{{  2927,  -4607,   3634}, 0, {  5812,   8242}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2740,  -4607,   3808}, 0, {  5438,   8590}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070061C0 - 0x07006250\nstatic const Vtx ccm_seg7_vertex_070061C0[] = {\n    {{{  2740,  -4607,   3808}, 0, {  5438,   8590}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2391,  -4607,   3433}, 0, {  4742,   7842}, {0x51, 0x38, 0x4e, 0xff}}},\n    {{{   768,  -4607,   5118}, 0, {  1500,  11204}, {0xda, 0x70, 0x2b, 0xff}}},\n    {{{   988,  -4607,   5626}, 0, {  1940,  12218}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1192,  -4607,   5626}, 0, {  2348,  12218}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1192,  -4607,   5831}, 0, {  2348,  12626}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   768,  -4607,   6654}, 0, {  1500,  14270}, {0xda, 0x72, 0x26, 0xff}}},\n    {{{  1792,  -4607,   6654}, 0, {  3544,  14270}, {0x12, 0x4d, 0x63, 0xff}}},\n    {{{   988,  -4607,   5831}, 0, {  1940,  12626}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07006250 - 0x070062B0\nstatic const Vtx ccm_seg7_vertex_07006250[] = {\n    {{{  2744,  -4694,    857}, 0, {  5832,   1536}, {0xe4, 0x6a, 0xc1, 0xff}}},\n    {{{  2426,  -4694,   1160}, 0, {  5198,   2140}, {0x8a, 0x2c, 0xf5, 0xff}}},\n    {{{  2518,  -4694,   1538}, 0, {  5382,   2894}, {0xc4, 0x4c, 0x51, 0xff}}},\n    {{{  2712,  -4694,   1602}, 0, {  5768,   3022}, {0x00, 0x47, 0x68, 0xff}}},\n    {{{  2938,  -4694,   1569}, 0, {  6220,   2956}, {0x4e, 0x4d, 0x3e, 0xff}}},\n    {{{  3132,  -4694,    986}, 0, {  6606,   1792}, {0x51, 0x33, 0xae, 0xff}}},\n};\n\n// 0x070062B0 - 0x070063A0\nstatic const Vtx ccm_seg7_vertex_070062B0[] = {\n    {{{ -2024,   2560,  -1537}, 0, {  4056,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    23,   2560,  -1281}, 0, {     0,  -2586}, {0xb7, 0x49, 0xb7, 0xff}}},\n    {{{    23,   2560,  -2049}, 0, {     0,  -1054}, {0xd5, 0x73, 0xe4, 0xff}}},\n    {{{   498,  -1535,   3204}, 0, { -1954,  -2296}, {0xd7, 0x42, 0x63, 0xff}}},\n    {{{  2228,  -1535,   3309}, 0, {     0,    582}, {0x36, 0x71, 0xec, 0xff}}},\n    {{{  2450,  -1535,   2332}, 0, {  1754,  -1230}, {0x61, 0x24, 0x48, 0xff}}},\n    {{{ -2139,   2867,   -926}, 0, {  4286,  -3296}, {0xed, 0x7b, 0x16, 0xff}}},\n    {{{ -2024,   2560,  -1536}, 0, {  4056,  -2076}, {0x00, 0x71, 0xc7, 0xff}}},\n    {{{ -2638,   2560,  -1946}, 0, {  5282,  -1258}, {0x1d, 0x7a, 0xf3, 0xff}}},\n    {{{ -2429,   2867,   -636}, 0, {  4864,  -3874}, {0x46, 0x56, 0x3c, 0xff}}},\n    {{{ -2024,   2560,  -2766}, 0, {  4056,    376}, {0x15, 0x7b, 0x15, 0xff}}},\n    {{{   638,   2765,  -2152}, 0, { -1256,   -848}, {0xef, 0x55, 0xa4, 0xff}}},\n    {{{   638,   2765,  -3073}, 0, { -1256,    990}, {0x1d, 0x62, 0xb5, 0xff}}},\n    {{{    23,   2560,  -3073}, 0, {     0,    990}, {0xf1, 0x67, 0xb8, 0xff}}},\n    {{{ -1000,   2560,  -1281}, 0, {  2012,  -2586}, {0x0d, 0x39, 0x90, 0xff}}},\n};\n\n// 0x070063A0 - 0x07006410\nstatic const Vtx ccm_seg7_vertex_070063A0[] = {\n    {{{ -3892,  -1945,   6246}, 0, {  3284, -20464}, {0x1b, 0x73, 0x2e, 0xff}}},\n    {{{ -3268,  -1740,   6246}, 0, {  2040, -20464}, {0x02, 0x65, 0x4c, 0xff}}},\n    {{{ -4382,  -1945,   5414}, 0, {  4262, -18804}, {0xe6, 0x75, 0x27, 0xff}}},\n    {{{  2391,  -1535,   3433}, 0, {     0,    990}, {0x65, 0x4c, 0xf9, 0xff}}},\n    {{{  2228,  -1535,   3309}, 0, {     0,    582}, {0x36, 0x71, 0xec, 0xff}}},\n    {{{   768,  -1535,   5118}, 0, { -4668,    446}, {0x2e, 0x4f, 0x57, 0xff}}},\n    {{{   498,  -1535,   3204}, 0, { -1954,  -2296}, {0xd7, 0x42, 0x63, 0xff}}},\n};\n\n// 0x07006410 - 0x07006510\nstatic const Vtx ccm_seg7_vertex_07006410[] = {\n    {{{ -3721,  -4607,   4691}, 0, {  7444, -14510}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3516,  -4607,   4684}, 0, {  7036, -14496}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3327,  -4607,   3840}, 0, {  6658, -12810}, {0xf5, 0x65, 0x4b, 0xff}}},\n    {{{ -4607,  -4607,   4608}, 0, {  9212, -14344}, {0xdb, 0x77, 0x16, 0xff}}},\n    {{{ -3292,  -4607,   5501}, 0, {  6586, -16126}, {0x1f, 0x6c, 0x3a, 0xff}}},\n    {{{ -3714,  -4607,   4896}, 0, {  7430, -14918}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4914,  -4607,      0}, 0, {  9826,  -5146}, {0xbb, 0x68, 0x11, 0xff}}},\n    {{{ -5119,  -4607,      0}, 0, { 10234,  -5146}, {0x8f, 0x38, 0x04, 0xff}}},\n    {{{ -3510,  -4607,   4889}, 0, {  7022, -14904}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5119,  -4863,  -5119}, 0, { 10234,   5072}, {0xea, 0x75, 0xd5, 0xff}}},\n    {{{ -4905,  -4858,  -4236}, 0, {  9808,   3308}, {0xd7, 0x63, 0xbe, 0xff}}},\n    {{{ -2230,  -4883,  -4501}, 0, {  4468,   3840}, {0x57, 0x49, 0xc8, 0xff}}},\n    {{{ -2442,  -4876,  -3553}, 0, {  4892,   1948}, {0x59, 0x47, 0xcb, 0xff}}},\n    {{{  4096,   -818,      0}, 0, {     0,    990}, {0x2e, 0x70, 0x24, 0xff}}},\n    {{{  4350,     41,  -2633}, 0, {   474,  -4266}, {0x04, 0x6c, 0xbf, 0xff}}},\n    {{{  3072,   -204,  -2559}, 0, { -2074,  -4120}, {0x1b, 0x4c, 0x9f, 0xff}}},\n};\n\n// 0x07006510 - 0x070065B0\nstatic const Vtx ccm_seg7_vertex_07006510[] = {\n    {{{  3072,   -818,   -511}, 0, { -2074,      0}, {0x63, 0x48, 0x1f, 0xff}}},\n    {{{  4096,   -818,      0}, 0, {     0,    990}, {0x2e, 0x70, 0x24, 0xff}}},\n    {{{  3072,   -204,  -2559}, 0, { -2074,  -4120}, {0x1b, 0x4c, 0x9f, 0xff}}},\n    {{{  2048,   -818,   1024}, 0, { -4118,   3032}, {0x61, 0x4d, 0x15, 0xff}}},\n    {{{ -5119,  -4863,  -5119}, 0, { 10234,   5072}, {0xea, 0x75, 0xd5, 0xff}}},\n    {{{ -5119,  -4607,      0}, 0, { 10234,  -5146}, {0x8f, 0x38, 0x04, 0xff}}},\n    {{{ -4914,  -4607,      0}, 0, {  9826,  -5146}, {0xbb, 0x68, 0x11, 0xff}}},\n    {{{ -4905,  -4858,  -4236}, 0, {  9808,   3308}, {0xd7, 0x63, 0xbe, 0xff}}},\n    {{{  2048,   -511,   2048}, 0, { -4118,   5076}, {0x3a, 0x4b, 0x54, 0xff}}},\n    {{{  3228,   -818,   1230}, 0, { -1764,   3444}, {0x58, 0x44, 0x3c, 0xff}}},\n};\n\n// 0x070065B0 - 0x070066B0\nstatic const Vtx ccm_seg7_vertex_070065B0[] = {\n    {{{  2450,  -1535,   2332}, 0, {     0,    990}, {0x61, 0x24, 0x48, 0xff}}},\n    {{{  3657,  -3071,    622}, 0, {  6782,   6098}, {0x62, 0x38, 0x38, 0xff}}},\n    {{{  4096,  -3071,      0}, 0, {  9264,   6098}, {0x4d, 0x00, 0x64, 0xff}}},\n    {{{  2391,  -2303,   3433}, 0, { -2672,   3544}, {0x73, 0x1f, 0x2b, 0xff}}},\n    {{{  2579,  -2303,   3259}, 0, { -1820,   3544}, {0x59, 0x59, 0x0c, 0xff}}},\n    {{{  2681,  -2744,   2005}, 0, {  1272,   5010}, {0x47, 0x68, 0xf9, 0xff}}},\n    {{{  3553,  -1607,    769}, 0, {  6198,   1228}, {0x23, 0x0b, 0x79, 0xff}}},\n    {{{  3228,   -818,   1230}, 0, {  4360,  -1394}, {0x58, 0x44, 0x3c, 0xff}}},\n    {{{  2048,   -511,   2048}, 0, {  -364,  -2416}, {0x3a, 0x4b, 0x54, 0xff}}},\n    {{{   498,   -511,   3204}, 0, { -6758,  -2416}, {0x11, 0x64, 0x4b, 0xff}}},\n    {{{   498,  -1535,   3204}, 0, { -6758,    990}, {0xd7, 0x42, 0x63, 0xff}}},\n    {{{  2228,  -1535,   3309}, 0, { -2788,    988}, {0x36, 0x71, 0xec, 0xff}}},\n    {{{  3707,  -1227,    552}, 0, {  7062,    -36}, {0x47, 0x39, 0x57, 0xff}}},\n    {{{  4075,  -1607,   1104}, 0, { -3626,    378}, {0x13, 0xd2, 0x74, 0xff}}},\n    {{{  4540,  -2559,    260}, 0, {  -188,   3542}, {0x48, 0xe3, 0x63, 0xff}}},\n    {{{  4529,  -1791,    292}, 0, {     0,    990}, {0x7c, 0x03, 0x16, 0xff}}},\n};\n\n// 0x070066B0 - 0x070067B0\nstatic const Vtx ccm_seg7_vertex_070066B0[] = {\n    {{{  2391,  -1535,   3433}, 0, {     0,  -1566}, {0x65, 0x4c, 0xf9, 0xff}}},\n    {{{  2391,  -2303,   3433}, 0, {     0,    990}, {0x73, 0x1f, 0x2b, 0xff}}},\n    {{{  2228,  -1535,   3309}, 0, {   498,  -1566}, {0x36, 0x71, 0xec, 0xff}}},\n    {{{  4540,  -2559,    260}, 0, {  7852,   -308}, {0x48, 0xe3, 0x63, 0xff}}},\n    {{{  4551,  -3071,    228}, 0, {  8988,   1076}, {0x2e, 0xfd, 0x76, 0xff}}},\n    {{{  5039,  -4607,  -1191}, 0, { 15260,    990}, {0x41, 0x60, 0x33, 0xff}}},\n    {{{  4551,  -3358,    228}, 0, {  9578,   1820}, {0x06, 0xa7, 0x5a, 0xff}}},\n    {{{  4529,  -1791,    292}, 0, {     0,    990}, {0x7c, 0x03, 0x16, 0xff}}},\n    {{{  4540,  -2559,    260}, 0, {  -188,   3542}, {0x48, 0xe3, 0x63, 0xff}}},\n    {{{  5039,  -4607,  -1191}, 0, {  4390,   9040}, {0x41, 0x60, 0x33, 0xff}}},\n    {{{  4262,  -1228,    975}, 0, { -2910,   -884}, {0x1b, 0x61, 0x4d, 0xff}}},\n    {{{  4075,  -1607,   1104}, 0, { -3626,    378}, {0x13, 0xd2, 0x74, 0xff}}},\n    {{{  4606,  -1228,     68}, 0, {   414,   -884}, {0x6c, 0x3d, 0x1a, 0xff}}},\n    {{{  4096,  -1228,      0}, 0, {     0,    990}, {0x39, 0x4d, 0x52, 0xff}}},\n    {{{  4606,  -1228,     68}, 0, {  2406,    990}, {0x6c, 0x3d, 0x1a, 0xff}}},\n    {{{  4096,   -818,      0}, 0, {     0,   -372}, {0x2e, 0x70, 0x24, 0xff}}},\n};\n\n// 0x070067B0 - 0x070068B0\nstatic const Vtx ccm_seg7_vertex_070067B0[] = {\n    {{{  4350,     41,  -2633}, 0, {  9498, -11768}, {0x04, 0x6c, 0xbf, 0xff}}},\n    {{{  4096,   -818,      0}, 0, {  3378,  -6096}, {0x2e, 0x70, 0x24, 0xff}}},\n    {{{  4240,  -4607,  -1490}, 0, { 15246,   1416}, {0x5d, 0x17, 0xad, 0xff}}},\n    {{{  4525,    144,  -3360}, 0, { 11236, -13508}, {0x60, 0x52, 0xf7, 0xff}}},\n    {{{  4413,   -577,  -4089}, 0, { 14422, -12788}, {0x46, 0x0d, 0x98, 0xff}}},\n    {{{  4413,    -65,  -4089}, 0, { 13370, -14114}, {0xe0, 0x77, 0xe4, 0xff}}},\n    {{{  4529,  -1791,    292}, 0, {     0,  -9618}, {0x7c, 0x03, 0x16, 0xff}}},\n    {{{  4240,  -4607,  -1490}, 0, {     0,    990}, {0x5d, 0x17, 0xad, 0xff}}},\n    {{{  4606,  -1228,     68}, 0, {  2028, -10240}, {0x6c, 0x3d, 0x1a, 0xff}}},\n    {{{  4096,   -818,      0}, 0, {  5696, -11834}, {0x2e, 0x70, 0x24, 0xff}}},\n    {{{  3780,  -4607,   5045}, 0, {  1444,   1840}, {0xfa, 0x7e, 0xf6, 0xff}}},\n    {{{  4027,  -4607,   4596}, 0, {  2918,    990}, {0xf7, 0x7e, 0x00, 0xff}}},\n    {{{  3516,  -4709,   4607}, 0, {  1444,    138}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  2391,  -4607,   3433}, 0, {  7752,    990}, {0x51, 0x38, 0x4e, 0xff}}},\n    {{{  2391,  -2303,   3433}, 0, {  7752,  -6674}, {0x73, 0x1f, 0x2b, 0xff}}},\n    {{{   768,  -1535,   5118}, 0, {     0,  -9230}, {0x2e, 0x4f, 0x57, 0xff}}},\n};\n\n// 0x070068B0 - 0x070069B0\nstatic const Vtx ccm_seg7_vertex_070068B0[] = {\n    {{{   768,  -4607,   5118}, 0, {     0,    990}, {0xda, 0x70, 0x2b, 0xff}}},\n    {{{  2391,  -4607,   3433}, 0, {  7752,    990}, {0x51, 0x38, 0x4e, 0xff}}},\n    {{{   768,  -1535,   5118}, 0, {     0,  -9230}, {0x2e, 0x4f, 0x57, 0xff}}},\n    {{{  2391,  -2303,   3433}, 0, {  7752,  -6674}, {0x73, 0x1f, 0x2b, 0xff}}},\n    {{{  2391,  -1535,   3433}, 0, {  7752,  -9230}, {0x65, 0x4c, 0xf9, 0xff}}},\n    {{{  3763,  -4607,   4158}, 0, {  2918,   -714}, {0xfa, 0x7e, 0x0a, 0xff}}},\n    {{{  3251,  -4607,   4168}, 0, {  1444,  -1564}, {0x05, 0x7e, 0x08, 0xff}}},\n    {{{  3516,  -4709,   4607}, 0, {  1444,    138}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  4027,  -4607,   4596}, 0, {  2918,    990}, {0xf7, 0x7e, 0x00, 0xff}}},\n    {{{  3004,  -4607,   4617}, 0, {     0,   -714}, {0x08, 0x7e, 0x00, 0xff}}},\n    {{{  3268,  -4607,   5055}, 0, {     0,    990}, {0x04, 0x7e, 0xf8, 0xff}}},\n    {{{  3780,  -4607,   5045}, 0, {  1444,   1840}, {0xfa, 0x7e, 0xf6, 0xff}}},\n    {{{  3553,  -1607,    769}, 0, { -2338,   2506}, {0x23, 0x0b, 0x79, 0xff}}},\n    {{{  4075,  -1607,   1104}, 0, {  -278,   2434}, {0x13, 0xd2, 0x74, 0xff}}},\n    {{{  4262,  -1228,    975}, 0, {     0,    990}, {0x1b, 0x61, 0x4d, 0xff}}},\n    {{{  3707,  -1227,    552}, 0, { -2352,    990}, {0x47, 0x39, 0x57, 0xff}}},\n};\n\n// 0x070069B0 - 0x07006AA0\nstatic const Vtx ccm_seg7_vertex_070069B0[] = {\n    {{{  3707,  -1227,    552}, 0, {  7062,    -36}, {0x47, 0x39, 0x57, 0xff}}},\n    {{{  4096,  -1228,      0}, 0, {  9264,      0}, {0x39, 0x4d, 0x52, 0xff}}},\n    {{{  3228,   -818,   1230}, 0, {  4360,  -1394}, {0x58, 0x44, 0x3c, 0xff}}},\n    {{{  4096,   -818,      0}, 0, {  9264,  -1394}, {0x2e, 0x70, 0x24, 0xff}}},\n    {{{ -5119,  -4351,  -5375}, 0, { 10502,    990}, {0xd5, 0x93, 0xd1, 0xff}}},\n    {{{ -5119,  -1842,  -5375}, 0, {  9154,  -6390}, {0xd9, 0x4c, 0xa3, 0xff}}},\n    {{{ -2559,  -3839,  -3583}, 0, {     0,    990}, {0x48, 0xea, 0x9b, 0xff}}},\n    {{{  3362,  -2764,   2735}, 0, {  4548,  -3088}, {0x6c, 0x33, 0x29, 0xff}}},\n    {{{  3979,  -3327,    800}, 0, { 10252,    990}, {0x78, 0x00, 0x26, 0xff}}},\n    {{{  3979,  -3071,    800}, 0, { 10534,    204}, {0x41, 0x6c, 0x01, 0xff}}},\n    {{{ -4095,  -1330,  -1023}, 0, {  6576,    924}, {0x99, 0x49, 0xff, 0xff}}},\n    {{{ -3071,  -1433,   1024}, 0, { 13586,    834}, {0xbe, 0x67, 0x20, 0xff}}},\n    {{{ -3071,   -511,   1024}, 0, { 13398,  -2226}, {0xc0, 0x50, 0x4a, 0xff}}},\n    {{{ -2776,  -1535,   1910}, 0, { 16604,    990}, {0xe1, 0x57, 0x56, 0xff}}},\n    {{{ -2776,   -511,   1910}, 0, { 16394,  -2410}, {0xa8, 0x21, 0x54, 0xff}}},\n};\n\n// 0x07006AA0 - 0x07006B70\nstatic const Vtx ccm_seg7_vertex_07006AA0[] = {\n    {{{  2048,   -511,   2048}, 0, {  6952,    990}, {0x3a, 0x4b, 0x54, 0xff}}},\n    {{{   -50,    512,   2048}, 0, {     0,  -2416}, {0xfd, 0xb3, 0x64, 0xff}}},\n    {{{   -50,   -511,   2048}, 0, {     0,    990}, {0xd7, 0x55, 0x54, 0xff}}},\n    {{{  2753,  -4351,   3447}, 0, {     0,    990}, {0x60, 0x00, 0x52, 0xff}}},\n    {{{  3362,  -4095,   2735}, 0, {  3080,   1000}, {0x6e, 0x00, 0x3d, 0xff}}},\n    {{{  3362,  -2764,   2735}, 0, {  4548,  -3088}, {0x6c, 0x33, 0x29, 0xff}}},\n    {{{  2753,  -2303,   3447}, 0, {  2224,  -5300}, {0x4e, 0x63, 0x03, 0xff}}},\n    {{{  3979,  -3327,    800}, 0, { 10252,    990}, {0x78, 0x00, 0x26, 0xff}}},\n    {{{  2668,   -646,  -3969}, 0, { 12676,  -7460}, {0xde, 0x7a, 0xff, 0xff}}},\n    {{{  4413,    -65,  -4089}, 0, {  9498, -12272}, {0xe0, 0x77, 0xe4, 0xff}}},\n    {{{  4413,   -577,  -4089}, 0, {  8970, -10880}, {0x46, 0x0d, 0x98, 0xff}}},\n    {{{   768,  -1074,  -4453}, 0, { 17672,  -3172}, {0xf7, 0x78, 0xd9, 0xff}}},\n    {{{   763,  -2661,  -4709}, 0, { 16598,    990}, {0x29, 0xda, 0x8f, 0xff}}},\n};\n\n// 0x07006B70 - 0x07006C70\nstatic const Vtx ccm_seg7_vertex_07006B70[] = {\n    {{{  2518,  -4694,   1538}, 0, { -1432,    308}, {0xc4, 0x4c, 0x51, 0xff}}},\n    {{{  2712,  -4898,   1602}, 0, {  -772,    990}, {0xec, 0x00, 0x7d, 0xff}}},\n    {{{  2712,  -4694,   1602}, 0, {  -772,    308}, {0x00, 0x47, 0x68, 0xff}}},\n    {{{  2426,  -4694,   1160}, 0, { -1126,    308}, {0x8a, 0x2c, 0xf5, 0xff}}},\n    {{{  2518,  -4898,   1538}, 0, {     0,    990}, {0x95, 0x00, 0x43, 0xff}}},\n    {{{  2518,  -4694,   1538}, 0, {     0,    308}, {0xc4, 0x4c, 0x51, 0xff}}},\n    {{{  2426,  -4898,   1160}, 0, { -1126,    990}, {0x90, 0x00, 0xc6, 0xff}}},\n    {{{  2744,  -4694,    857}, 0, { -2414,    308}, {0xe4, 0x6a, 0xc1, 0xff}}},\n    {{{  2744,  -4898,    857}, 0, { -2414,    990}, {0xfe, 0x00, 0x82, 0xff}}},\n    {{{  2938,  -4694,   1569}, 0, {     0,    308}, {0x4e, 0x4d, 0x3e, 0xff}}},\n    {{{  3132,  -4898,    986}, 0, {  2012,    990}, {0x7d, 0x00, 0xee, 0xff}}},\n    {{{  3132,  -4694,    986}, 0, {  2012,    308}, {0x51, 0x33, 0xae, 0xff}}},\n    {{{  2938,  -4898,   1569}, 0, {     0,    990}, {0x3c, 0x00, 0x6f, 0xff}}},\n    {{{  4413,   -577,  -4089}, 0, {  8970, -10880}, {0x46, 0x0d, 0x98, 0xff}}},\n    {{{  4240,  -4607,  -1490}, 0, {     0,    990}, {0x5d, 0x17, 0xad, 0xff}}},\n    {{{   763,  -2661,  -4709}, 0, { 16598,    990}, {0x29, 0xda, 0x8f, 0xff}}},\n};\n\n// 0x07006C70 - 0x07006D50\nstatic const Vtx ccm_seg7_vertex_07006C70[] = {\n    {{{  2518,  -4694,   1538}, 0, { -1432,    308}, {0xc4, 0x4c, 0x51, 0xff}}},\n    {{{  2518,  -4898,   1538}, 0, { -1432,    990}, {0x95, 0x00, 0x43, 0xff}}},\n    {{{  2712,  -4898,   1602}, 0, {  -772,    990}, {0xec, 0x00, 0x7d, 0xff}}},\n    {{{  3132,  -4694,    986}, 0, {     0,    308}, {0x51, 0x33, 0xae, 0xff}}},\n    {{{  2744,  -4898,    857}, 0, {  1328,    990}, {0xfe, 0x00, 0x82, 0xff}}},\n    {{{  2744,  -4694,    857}, 0, {  1328,    308}, {0xe4, 0x6a, 0xc1, 0xff}}},\n    {{{  3132,  -4898,    986}, 0, {     0,    990}, {0x7d, 0x00, 0xee, 0xff}}},\n    {{{  3072,    807,   -511}, 0, {     0,  -4420}, {0x60, 0xb5, 0x20, 0xff}}},\n    {{{  3072,   -818,   -511}, 0, {     0,    990}, {0x63, 0x48, 0x1f, 0xff}}},\n    {{{  3072,   1022,  -2559}, 0, {  6410,  -5136}, {0x58, 0xc7, 0xba, 0xff}}},\n    {{{  2048,   -818,   1024}, 0, { -5970,    990}, {0x61, 0x4d, 0x15, 0xff}}},\n    {{{  2048,    840,   1024}, 0, { -5970,  -4528}, {0x70, 0xd7, 0x2a, 0xff}}},\n    {{{  2048,   1229,   2048}, 0, { -9192,  -5824}, {0x49, 0xa1, 0x28, 0xff}}},\n    {{{  2048,   -511,   2048}, 0, { -9192,      0}, {0x3a, 0x4b, 0x54, 0xff}}},\n};\n\n// 0x07006D50 - 0x07006E30\nstatic const Vtx ccm_seg7_vertex_07006D50[] = {\n    {{{ -2559,  -3839,  -3583}, 0, {     0,    990}, {0x48, 0xea, 0x9b, 0xff}}},\n    {{{ -5119,  -1842,  -5375}, 0, {  9154,  -6390}, {0xd9, 0x4c, 0xa3, 0xff}}},\n    {{{ -2558,  -1841,  -2454}, 0, { -3232,  -5940}, {0x53, 0xc3, 0xb7, 0xff}}},\n    {{{  4096,  -3071,      0}, 0, {  9264,   6098}, {0x4d, 0x00, 0x64, 0xff}}},\n    {{{  4096,  -2559,      0}, 0, {  9264,   4394}, {0xe4, 0xd1, 0x72, 0xff}}},\n    {{{  3553,  -1607,    769}, 0, {  6198,   1228}, {0x23, 0x0b, 0x79, 0xff}}},\n    {{{  3072,   -818,   -511}, 0, {     0,    990}, {0x63, 0x48, 0x1f, 0xff}}},\n    {{{  3072,   -204,  -2559}, 0, {  6410,  -1054}, {0x1b, 0x4c, 0x9f, 0xff}}},\n    {{{  3072,   1022,  -2559}, 0, {  6410,  -5136}, {0x58, 0xc7, 0xba, 0xff}}},\n    {{{ -4095,  -1330,  -1023}, 0, {  6576,    924}, {0x99, 0x49, 0xff, 0xff}}},\n    {{{ -4095,    563,  -1023}, 0, {  6190,  -5366}, {0x9b, 0xb5, 0x0d, 0xff}}},\n    {{{ -3071,   -511,  -2047}, 0, {  3216,  -1600}, {0x8f, 0xe8, 0xcd, 0xff}}},\n    {{{ -3071,  -1228,  -2047}, 0, {  3362,    782}, {0xa2, 0x53, 0xf3, 0xff}}},\n    {{{ -3071,   -511,  -3071}, 0, {  -176,  -1390}, {0xa6, 0xd7, 0xb2, 0xff}}},\n};\n\n// 0x07006E30 - 0x07006F10\nstatic const Vtx ccm_seg7_vertex_07006E30[] = {\n    {{{  4096,  -2559,      0}, 0, {     0,   -714}, {0xe4, 0xd1, 0x72, 0xff}}},\n    {{{  4096,  -3071,      0}, 0, {     0,    990}, {0x4d, 0x00, 0x64, 0xff}}},\n    {{{  4551,  -3071,    228}, 0, {  1660,    990}, {0x2e, 0xfd, 0x76, 0xff}}},\n    {{{  4540,  -2559,    260}, 0, {  2522,   -714}, {0x48, 0xe3, 0x63, 0xff}}},\n    {{{ -4095,  -1330,  -1023}, 0, {  6576,    924}, {0x99, 0x49, 0xff, 0xff}}},\n    {{{ -3071,    277,   1024}, 0, { 13238,  -4846}, {0xa7, 0xd1, 0x4b, 0xff}}},\n    {{{ -4095,    563,  -1023}, 0, {  6190,  -5366}, {0x9b, 0xb5, 0x0d, 0xff}}},\n    {{{ -3071,   -511,   1024}, 0, { 13398,  -2226}, {0xc0, 0x50, 0x4a, 0xff}}},\n    {{{  2048,   -511,   2048}, 0, {  6952,    990}, {0x3a, 0x4b, 0x54, 0xff}}},\n    {{{  2048,   1229,   2048}, 0, {  6952,  -4802}, {0x49, 0xa1, 0x28, 0xff}}},\n    {{{   -50,    512,   2048}, 0, {     0,  -2416}, {0xfd, 0xb3, 0x64, 0xff}}},\n    {{{ -3071,  -1228,  -2047}, 0, {  3362,    782}, {0xa2, 0x53, 0xf3, 0xff}}},\n    {{{ -3071,   -511,  -3071}, 0, {  -176,  -1390}, {0xa6, 0xd7, 0xb2, 0xff}}},\n    {{{ -3071,  -1125,  -3071}, 0, {     0,    990}, {0xb7, 0x3e, 0xae, 0xff}}},\n};\n\n// 0x07006F10 - 0x07007010\nstatic const Vtx ccm_seg7_vertex_07006F10[] = {\n    {{{ -5033,  -1380,  -1629}, 0, {   804,   -152}, {0xc6, 0x5d, 0xc1, 0xff}}},\n    {{{ -5058,  -1319,  -1490}, 0, {   332,    388}, {0xf8, 0x68, 0xb9, 0xff}}},\n    {{{ -4915,  -1369,  -1433}, 0, {   796,    990}, {0x58, 0x58, 0x15, 0xff}}},\n    {{{ -4545,  -1459,   2256}, 0, {     0,    990}, {0xfc, 0x5b, 0x58, 0xff}}},\n    {{{ -4424,  -1459,   2173}, 0, {   698,    990}, {0x4e, 0x64, 0xff, 0xff}}},\n    {{{ -4516,  -1387,   2183}, 0, {   294,    754}, {0xf5, 0x7e, 0x01, 0xff}}},\n    {{{ -4547,  -1454,   2112}, 0, {   362,    392}, {0xf3, 0x5e, 0xad, 0xff}}},\n    {{{ -4261,  -1374,    247}, 0, {   -46,    992}, {0x02, 0x7c, 0x1a, 0xff}}},\n    {{{ -4238,  -1359,   -164}, 0, {  2012,    990}, {0x46, 0x5f, 0xd3, 0xff}}},\n    {{{ -4330,  -1287,   -155}, 0, {  1952,    524}, {0xfa, 0x79, 0xde, 0xff}}},\n    {{{ -4361,  -1353,   -225}, 0, {  2280,    358}, {0xf3, 0x5e, 0xad, 0xff}}},\n    {{{ -5056,  -1319,  -1347}, 0, {     0,   1000}, {0xde, 0x28, 0x73, 0xff}}},\n    {{{ -5047,  -1247,  -1421}, 0, {   202,    728}, {0xf7, 0x7e, 0xfe, 0xff}}},\n    {{{   640,   3084,   -791}, 0, {   650,    990}, {0x6b, 0x1e, 0x3c, 0xff}}},\n    {{{   547,   3227,   -719}, 0, {  -138,    796}, {0x2c, 0x3a, 0x67, 0xff}}},\n    {{{   524,   3134,   -717}, 0, {   -76,    990}, {0x03, 0x01, 0x7e, 0xff}}},\n};\n\n// 0x07007010 - 0x070070F0\nstatic const Vtx ccm_seg7_vertex_07007010[] = {\n    {{{ -4915,  -1369,  -1433}, 0, {   796,    990}, {0x58, 0x58, 0x15, 0xff}}},\n    {{{ -5056,  -1319,  -1347}, 0, {     0,   1000}, {0xde, 0x28, 0x73, 0xff}}},\n    {{{ -5056,  -1370,  -1347}, 0, {     0,    990}, {0xee, 0x00, 0x7d, 0xff}}},\n    {{{   251,   3407,  -1752}, 0, {   894,    990}, {0x4e, 0x64, 0xfd, 0xff}}},\n    {{{   129,   3442,  -1811}, 0, {   282,    648}, {0x0f, 0x6b, 0xbf, 0xff}}},\n    {{{   159,   3479,  -1743}, 0, {   354,    996}, {0x16, 0x7c, 0xff, 0xff}}},\n    {{{    73,   3457,  -1739}, 0, {     0,    990}, {0xe1, 0x7b, 0x00, 0xff}}},\n    {{{   131,   3441,  -1668}, 0, {   244,   1360}, {0x17, 0x6b, 0x3f, 0xff}}},\n    {{{   524,   3134,   -717}, 0, {   -76,    990}, {0x03, 0x01, 0x7e, 0xff}}},\n    {{{   547,   3227,   -719}, 0, {  -138,    796}, {0x2c, 0x3a, 0x67, 0xff}}},\n    {{{   350,   3282,   -827}, 0, {  -734,    -92}, {0xf9, 0x70, 0x3a, 0xff}}},\n    {{{   640,   3084,   -791}, 0, {   650,    990}, {0x6b, 0x1e, 0x3c, 0xff}}},\n    {{{   574,   3243,   -793}, 0, {   130,    498}, {0x4c, 0x62, 0x16, 0xff}}},\n    {{{   590,   3222,  -1106}, 0, {  1020,   -704}, {0x4f, 0x62, 0xfe, 0xff}}},\n};\n\n// 0x070070F0 - 0x070071F0\nstatic const Vtx ccm_seg7_vertex_070070F0[] = {\n    {{{   834,   3072,   -145}, 0, {   414,    482}, {0xea, 0x00, 0x84, 0xff}}},\n    {{{   834,   3123,   -145}, 0, {   414,    376}, {0xdb, 0x26, 0x8d, 0xff}}},\n    {{{   938,   3072,    -85}, 0, {   622,    990}, {0x75, 0x2f, 0xf8, 0xff}}},\n    {{{   846,   3195,    -76}, 0, {   240,    500}, {0x04, 0x7e, 0xfc, 0xff}}},\n    {{{   774,   3123,    -72}, 0, {   -46,    456}, {0x8b, 0x29, 0x17, 0xff}}},\n    {{{   774,   3072,    -72}, 0, {   -46,    562}, {0x86, 0x00, 0xe0, 0xff}}},\n    {{{   837,   3072,     -1}, 0, {     0,    990}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{   837,   3123,     -1}, 0, {     0,    884}, {0x00, 0x33, 0x74, 0xff}}},\n    {{{ -1125,  -4044,   5990}, 0, {   478,   -544}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{ -1330,  -3583,   6144}, 0, {     0,    990}, {0x9f, 0x46, 0x27, 0xff}}},\n    {{{ -1330,  -3583,   5837}, 0, {   990,    990}, {0x8b, 0x08, 0xd1, 0xff}}},\n    {{{  -921,  -3583,   5837}, 0, {   990,    990}, {0x61, 0x46, 0xd9, 0xff}}},\n    {{{  -921,  -3583,   6144}, 0, {     0,    990}, {0x61, 0x46, 0x27, 0xff}}},\n    {{{ -1125,  -4044,   5990}, 0, {   480,  -1310}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{ -1023,  -3583,   5734}, 0, {   990,    990}, {0x30, 0x02, 0x8b, 0xff}}},\n    {{{  -921,  -3583,   5837}, 0, {  1502,    990}, {0x61, 0x46, 0xd9, 0xff}}},\n};\n\n// 0x070071F0 - 0x070072E0\nstatic const Vtx ccm_seg7_vertex_070071F0[] = {\n    {{{ -1125,  -4044,   5990}, 0, {   480,  -1310}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{ -1228,  -3583,   5734}, 0, {     0,    990}, {0xf2, 0x78, 0xdd, 0xff}}},\n    {{{ -1023,  -3583,   5734}, 0, {   990,    990}, {0x30, 0x02, 0x8b, 0xff}}},\n    {{{ -1330,  -3583,   5837}, 0, {  -542,    990}, {0x8b, 0x08, 0xd1, 0xff}}},\n    {{{ -1023,  -3583,   6246}, 0, {   990,    990}, {0x29, 0x44, 0x62, 0xff}}},\n    {{{ -1228,  -3583,   6246}, 0, {     0,    990}, {0xd7, 0x44, 0x62, 0xff}}},\n    {{{ -1330,  -3583,   6144}, 0, {  -542,    990}, {0x9f, 0x46, 0x27, 0xff}}},\n    {{{  -921,  -3583,   6144}, 0, {  1502,    990}, {0x61, 0x46, 0x27, 0xff}}},\n    {{{  5989,  -5119,  -3076}, 0, {  4406,    990}, {0x58, 0x00, 0xa6, 0xff}}},\n    {{{  5989,  -4607,  -3076}, 0, {  4406,      0}, {0x44, 0x69, 0xf0, 0xff}}},\n    {{{  6537,  -5119,   -852}, 0, {     0,    990}, {0x7e, 0x00, 0x01, 0xff}}},\n    {{{  4240,  -4607,  -1490}, 0, { -8168,  10186}, {0x5d, 0x17, 0xad, 0xff}}},\n    {{{  1380,  -4908,  -3729}, 0, { -2784,  10788}, {0x4e, 0x00, 0x9c, 0xff}}},\n    {{{  1380,  -3628,  -3729}, 0, { -2784,   8232}, {0x44, 0xe0, 0x9b, 0xff}}},\n    {{{  1380,  -5164,  -3729}, 0, { -2784,  11298}, {0x4e, 0x00, 0x9c, 0xff}}},\n};\n\n// 0x070072E0 - 0x070073E0\nstatic const Vtx ccm_seg7_vertex_070072E0[] = {\n    {{{  5490,  -4607,  -3189}, 0, {-10988,  10186}, {0xc0, 0x2e, 0x9d, 0xff}}},\n    {{{  4240,  -5119,  -1490}, 0, { -8168,  11208}, {0xc7, 0x00, 0x8f, 0xff}}},\n    {{{  4240,  -4607,  -1490}, 0, { -8168,  10186}, {0x5d, 0x17, 0xad, 0xff}}},\n    {{{  1380,  -5164,  -3729}, 0, { -2784,  11298}, {0x4e, 0x00, 0x9c, 0xff}}},\n    {{{  5490,  -5119,  -3189}, 0, {-10988,  11208}, {0xee, 0x00, 0x83, 0xff}}},\n    {{{  5990,  -4607,  -3076}, 0, {-11986,  10186}, {0x1c, 0x00, 0x85, 0xff}}},\n    {{{  5989,  -5119,  -3076}, 0, {-11986,  11208}, {0x58, 0x00, 0xa6, 0xff}}},\n    {{{  5989,  -4607,  -3076}, 0, {  4406,      0}, {0x44, 0x69, 0xf0, 0xff}}},\n    {{{  6537,  -4607,   -852}, 0, {     0,      0}, {0x44, 0x6a, 0x00, 0xff}}},\n    {{{  6537,  -5119,   -852}, 0, {     0,    990}, {0x7e, 0x00, 0x01, 0xff}}},\n    {{{ -3268,  -3327,   6246}, 0, {     0,    990}, {0x16, 0xa6, 0x56, 0xff}}},\n    {{{ -1414,  -3071,   3522}, 0, {  6566,    990}, {0x35, 0x38, 0x64, 0xff}}},\n    {{{ -3268,  -2149,   6246}, 0, {   150,  -1354}, {0x69, 0x2b, 0x38, 0xff}}},\n    {{{ -3268,  -1740,   6246}, 0, {     0,  -2178}, {0x02, 0x65, 0x4c, 0xff}}},\n    {{{ -3268,  -2149,   6246}, 0, {     0,  -1360}, {0x69, 0x2b, 0x38, 0xff}}},\n    {{{ -3268,  -1740,   5668}, 0, {  1122,  -2178}, {0x43, 0x5b, 0x38, 0xff}}},\n};\n\n// 0x070073E0 - 0x070074D0\nstatic const Vtx ccm_seg7_vertex_070073E0[] = {\n    {{{ -3892,  -1945,   6246}, 0, { -1274,  -1650}, {0x1b, 0x73, 0x2e, 0xff}}},\n    {{{ -3892,  -2149,   6246}, 0, { -1274,  -1258}, {0x49, 0x49, 0x49, 0xff}}},\n    {{{ -3268,  -1740,   6246}, 0, {     0,  -2040}, {0x02, 0x65, 0x4c, 0xff}}},\n    {{{ -3268,  -2149,   6246}, 0, {     0,  -1258}, {0x69, 0x2b, 0x38, 0xff}}},\n    {{{ -3892,  -1945,   6605}, 0, {  -746,  -1770}, {0x5b, 0x4b, 0x2e, 0xff}}},\n    {{{ -3892,  -2149,   6246}, 0, {     0,  -1360}, {0x49, 0x49, 0x49, 0xff}}},\n    {{{ -3892,  -1945,   6246}, 0, {     0,  -1770}, {0x1b, 0x73, 0x2e, 0xff}}},\n    {{{ -3892,  -2149,   6605}, 0, {  -746,  -1360}, {0xcb, 0x08, 0x72, 0xff}}},\n    {{{ -4360,  -1945,   5999}, 0, {  5678,  -1770}, {0xce, 0x67, 0x34, 0xff}}},\n    {{{ -3892,  -2149,   6605}, 0, {  7148,  -1360}, {0xcb, 0x08, 0x72, 0xff}}},\n    {{{ -3892,  -1945,   6605}, 0, {  7148,  -1770}, {0x5b, 0x4b, 0x2e, 0xff}}},\n    {{{ -4360,  -2149,   5999}, 0, {  5678,  -1360}, {0xa6, 0xe9, 0x56, 0xff}}},\n    {{{ -5387,  -1740,   4976}, 0, {  2816,  -2178}, {0xb9, 0x45, 0x4e, 0xff}}},\n    {{{ -6398,  -3327,   3943}, 0, {     0,    990}, {0xa6, 0xba, 0x36, 0xff}}},\n    {{{ -3268,  -3327,   6246}, 0, {  7726,    990}, {0x16, 0xa6, 0x56, 0xff}}},\n};\n\n// 0x070074D0 - 0x070075D0\nstatic const Vtx ccm_seg7_vertex_070074D0[] = {\n    {{{  3072,   2560,  -1914}, 0, {   120,    290}, {0x6f, 0x2a, 0xd5, 0xff}}},\n    {{{  3072,   2201,  -1914}, 0, {     0,    990}, {0x49, 0x67, 0xfc, 0xff}}},\n    {{{  2617,   2359,  -2483}, 0, {  1454,    990}, {0x3e, 0x48, 0xad, 0xff}}},\n    {{{  2617,   2703,  -2483}, 0, {  1600,    318}, {0x26, 0x54, 0xaa, 0xff}}},\n    {{{  1445,   3072,  -2287}, 0, { -2868,      0}, {0x21, 0x71, 0xd4, 0xff}}},\n    {{{   945,   2560,  -2203}, 0, { -1870,    990}, {0x15, 0x5f, 0xaf, 0xff}}},\n    {{{   638,   2765,  -2152}, 0, { -1256,    582}, {0xef, 0x55, 0xa4, 0xff}}},\n    {{{  2617,   2703,  -2483}, 0, { -5208,    704}, {0x26, 0x54, 0xaa, 0xff}}},\n    {{{ -6398,  -1740,   3943}, 0, {     0,  -2178}, {0xd8, 0x77, 0x10, 0xff}}},\n    {{{ -6398,  -3327,   3943}, 0, {     0,    990}, {0xa6, 0xba, 0x36, 0xff}}},\n    {{{ -5387,  -1740,   4976}, 0, {  2816,  -2178}, {0xb9, 0x45, 0x4e, 0xff}}},\n    {{{    23,   3471,  -2049}, 0, {     0,   -830}, {0xaa, 0x28, 0xad, 0xff}}},\n    {{{  2617,   2359,  -2483}, 0, { -5208,   1390}, {0x3e, 0x48, 0xad, 0xff}}},\n    {{{  3072,   2560,  -1914}, 0, {  6642,    284}, {0x6f, 0x2a, 0xd5, 0xff}}},\n    {{{  3072,   2560,   -511}, 0, {  3876,   -156}, {0x40, 0x5f, 0x34, 0xff}}},\n    {{{  3072,   2201,  -1914}, 0, {  6530,    990}, {0x49, 0x67, 0xfc, 0xff}}},\n};\n\n// 0x070075D0 - 0x070076B0\nstatic const Vtx ccm_seg7_vertex_070075D0[] = {\n    {{{  3072,   2560,   -511}, 0, {  3876,   -156}, {0x40, 0x5f, 0x34, 0xff}}},\n    {{{  3072,   1685,   1331}, 0, {     0,    990}, {0x02, 0x7b, 0x1b, 0xff}}},\n    {{{  3072,   2201,  -1914}, 0, {  6530,    990}, {0x49, 0x67, 0xfc, 0xff}}},\n    {{{    23,   1741,  -3073}, 0, {  6048,   1600}, {0xf4, 0xe1, 0x86, 0xff}}},\n    {{{    23,   2560,  -3073}, 0, {  6130,      0}, {0xf1, 0x67, 0xb8, 0xff}}},\n    {{{   638,   2765,  -3073}, 0, {  4926,   -502}, {0x1d, 0x62, 0xb5, 0xff}}},\n    {{{   945,   2560,  -3073}, 0, {  4294,   -124}, {0x19, 0x67, 0xbc, 0xff}}},\n    {{{  3072,   2304,  -3327}, 0, {    10,    174}, {0x20, 0x40, 0x98, 0xff}}},\n    {{{ -2024,   2150,  -3073}, 0, { 10166,    990}, {0xd1, 0xd5, 0x93, 0xff}}},\n    {{{  3072,   1894,  -3327}, 0, {     0,    990}, {0x1b, 0xd0, 0x8e, 0xff}}},\n    {{{ -2024,   2662,  -3073}, 0, { 10218,    -30}, {0xf1, 0x6c, 0xc0, 0xff}}},\n    {{{   638,   2765,  -2152}, 0, { -1256,    582}, {0xef, 0x55, 0xa4, 0xff}}},\n    {{{    23,   2560,  -2049}, 0, {     0,    990}, {0xd5, 0x73, 0xe4, 0xff}}},\n    {{{    23,   3471,  -2049}, 0, {     0,   -830}, {0xaa, 0x28, 0xad, 0xff}}},\n};\n\n// 0x070076B0 - 0x070077A0\nstatic const Vtx ccm_seg7_vertex_070076B0[] = {\n    {{{ -2024,   2662,  -3073}, 0, { -2758,  -2908}, {0xf1, 0x6c, 0xc0, 0xff}}},\n    {{{ -2024,   2150,  -3073}, 0, { -2800,  -1886}, {0xd1, 0xd5, 0x93, 0xff}}},\n    {{{ -3045,   2816,  -1970}, 0, {   136,  -3094}, {0xb5, 0x62, 0xe6, 0xff}}},\n    {{{ -3045,   1842,  -1970}, 0, {    56,  -1152}, {0xb0, 0xeb, 0xa0, 0xff}}},\n    {{{  4096,   1792,  -2559}, 0, {     0,    990}, {0x60, 0xca, 0xc3, 0xff}}},\n    {{{  3072,   1894,  -3327}, 0, {  2532,    990}, {0x1b, 0xd0, 0x8e, 0xff}}},\n    {{{  3072,   2304,  -3327}, 0, {  2596,    176}, {0x20, 0x40, 0x98, 0xff}}},\n    {{{  4096,   2304,  -2559}, 0, {    50,    -28}, {0x4f, 0x61, 0xf0, 0xff}}},\n    {{{  4096,   1327,   1843}, 0, {  1490,  -2588}, {0x5d, 0xba, 0x31, 0xff}}},\n    {{{  4096,   1792,  -2559}, 0, { 10112,  -2958}, {0x60, 0xca, 0xc3, 0xff}}},\n    {{{  4096,   2304,  -2559}, 0, { 10178,  -3978}, {0x4f, 0x61, 0xf0, 0xff}}},\n    {{{  4096,   1685,   1843}, 0, {  1536,  -3302}, {0x21, 0x78, 0x16, 0xff}}},\n    {{{    23,   3471,   -769}, 0, {   -30,   -370}, {0x1c, 0x75, 0xd9, 0xff}}},\n    {{{   512,   3072,   -511}, 0, {     0,    990}, {0x5b, 0x56, 0xee, 0xff}}},\n    {{{  1445,   3072,  -2287}, 0, {  3972,    990}, {0x21, 0x71, 0xd4, 0xff}}},\n};\n\n// 0x070077A0 - 0x070078A0\nstatic const Vtx ccm_seg7_vertex_070077A0[] = {\n    {{{    23,   3471,  -2049}, 0, {     0,   -830}, {0xaa, 0x28, 0xad, 0xff}}},\n    {{{    23,   2560,  -1281}, 0, {  1502,    990}, {0xb7, 0x49, 0xb7, 0xff}}},\n    {{{    23,   3471,  -1281}, 0, {  1502,   -830}, {0xee, 0x76, 0xd8, 0xff}}},\n    {{{   -50,   1280,   2048}, 0, {     0,    990}, {0xf4, 0x75, 0x2e, 0xff}}},\n    {{{  1946,   1531,   1741}, 0, {  4032,    990}, {0x14, 0x74, 0x2e, 0xff}}},\n    {{{  1485,   3072,    256}, 0, {  3956,  -3378}, {0x3a, 0x6a, 0x24, 0xff}}},\n    {{{   512,   3072,    256}, 0, {  2052,  -3754}, {0x59, 0x4d, 0x2d, 0xff}}},\n    {{{ -2114,   2458,   -951}, 0, {     0,    990}, {0x0b, 0x21, 0x7a, 0xff}}},\n    {{{ -1020,   2048,      3}, 0, {  2660,   -322}, {0xb1, 0x31, 0x55, 0xff}}},\n    {{{ -1000,   3471,   -513}, 0, {   224,  -2112}, {0xa8, 0x57, 0x18, 0xff}}},\n    {{{   -50,   1280,   2048}, 0, {  7086,  -1630}, {0xf4, 0x75, 0x2e, 0xff}}},\n    {{{   -50,   -511,   2048}, 0, {  9346,    990}, {0xd7, 0x55, 0x54, 0xff}}},\n    {{{    23,   2560,  -2049}, 0, {     0,    990}, {0xd5, 0x73, 0xe4, 0xff}}},\n    {{{    23,   3471,  -1281}, 0, {     0,   -830}, {0xee, 0x76, 0xd8, 0xff}}},\n    {{{    23,   2560,  -1281}, 0, {     0,    990}, {0xb7, 0x49, 0xb7, 0xff}}},\n    {{{ -1000,   3471,  -1281}, 0, {  2012,   -830}, {0xee, 0x5a, 0xaa, 0xff}}},\n};\n\n// 0x070078A0 - 0x070079A0\nstatic const Vtx ccm_seg7_vertex_070078A0[] = {\n    {{{ -1000,   2560,  -1281}, 0, {  2012,    990}, {0x0d, 0x39, 0x90, 0xff}}},\n    {{{ -2024,   2560,  -1536}, 0, {  4056,    990}, {0x00, 0x71, 0xc7, 0xff}}},\n    {{{ -1000,   3471,  -1281}, 0, {  2012,   -830}, {0xee, 0x5a, 0xaa, 0xff}}},\n    {{{    23,   2560,  -1281}, 0, {     0,    990}, {0xb7, 0x49, 0xb7, 0xff}}},\n    {{{  4529,  -1791,    292}, 0, { -1050,  -4768}, {0x7c, 0x03, 0x16, 0xff}}},\n    {{{  5039,  -4607,  -1191}, 0, {     0,    990}, {0x41, 0x60, 0x33, 0xff}}},\n    {{{  4240,  -4607,  -1490}, 0, {  1660,    990}, {0x5d, 0x17, 0xad, 0xff}}},\n    {{{ -3268,  -1740,   5668}, 0, { -6162,   -170}, {0x43, 0x5b, 0x38, 0xff}}},\n    {{{ -3268,  -2149,   6246}, 0, { -6860,    990}, {0x69, 0x2b, 0x38, 0xff}}},\n    {{{ -1414,  -3071,   3522}, 0, {     0,    990}, {0x35, 0x38, 0x64, 0xff}}},\n    {{{ -3268,  -3327,   6246}, 0, {     0,    990}, {0x16, 0xa6, 0x56, 0xff}}},\n    {{{ -3268,  -2149,   6246}, 0, {     0,  -1360}, {0x69, 0x2b, 0x38, 0xff}}},\n    {{{ -3268,  -2149,   6605}, 0, {  -746,  -1360}, {0x39, 0x62, 0x37, 0xff}}},\n    {{{ -4402,  -1535,   3789}, 0, {  2994,  -2588}, {0xb1, 0x59, 0x2a, 0xff}}},\n    {{{ -4402,  -1740,   3789}, 0, {  2994,  -2178}, {0xd2, 0x74, 0x12, 0xff}}},\n    {{{ -3268,  -1740,   5668}, 0, {  7040,  -2178}, {0x43, 0x5b, 0x38, 0xff}}},\n};\n\n// 0x070079A0 - 0x07007A90\nstatic const Vtx ccm_seg7_vertex_070079A0[] = {\n    {{{ -3268,  -3327,   6246}, 0, {     0,    990}, {0x16, 0xa6, 0x56, 0xff}}},\n    {{{ -3268,  -2149,   6605}, 0, {     0,  -1468}, {0x39, 0x62, 0x37, 0xff}}},\n    {{{ -3892,  -2149,   6605}, 0, { -1274,  -1468}, {0xcb, 0x08, 0x72, 0xff}}},\n    {{{ -4874,  -1410,  -2465}, 0, {  6258,  -4230}, {0xa6, 0x56, 0xe9, 0xff}}},\n    {{{ -4874,  -1740,  -2465}, 0, {  6186,  -3576}, {0xa8, 0x57, 0xe6, 0xff}}},\n    {{{ -5631,  -1740,      0}, 0, { 11240,  -3026}, {0x99, 0x48, 0xf6, 0xff}}},\n    {{{ -5631,  -1330,      0}, 0, { 11328,  -3838}, {0xa9, 0x5b, 0x0b, 0xff}}},\n    {{{ -4490,  -1228,  -3765}, 0, {  3638,  -4882}, {0xaf, 0x5a, 0xdc, 0xff}}},\n    {{{ -4490,  -1740,  -3765}, 0, {  3528,  -3866}, {0xa3, 0x4c, 0xdb, 0xff}}},\n    {{{ -4402,  -1740,   3789}, 0, { 18356,  -2252}, {0xd2, 0x74, 0x12, 0xff}}},\n    {{{ -4402,  -1535,   3789}, 0, { 18400,  -2658}, {0xb1, 0x59, 0x2a, 0xff}}},\n    {{{ -3839,  -1228,  -4351}, 0, {  2310,  -5026}, {0xd9, 0x74, 0xe0, 0xff}}},\n    {{{  4790,  -4607,   5511}, 0, {-12734,      0}, {0x26, 0x76, 0x18, 0xff}}},\n    {{{  4790,  -5119,   5511}, 0, {-12734,    990}, {0x4e, 0x00, 0x63, 0xff}}},\n    {{{  6537,  -5119,   -852}, 0, {     0,    990}, {0x7e, 0x00, 0x01, 0xff}}},\n};\n\n// 0x07007A90 - 0x07007B80\nstatic const Vtx ccm_seg7_vertex_07007A90[] = {\n    {{{ -4402,  -1535,   3789}, 0, {  2994,  -2588}, {0xb1, 0x59, 0x2a, 0xff}}},\n    {{{ -3268,  -1740,   5668}, 0, {  7040,  -2178}, {0x43, 0x5b, 0x38, 0xff}}},\n    {{{ -3268,  -1535,   5668}, 0, {  7040,  -2588}, {0x10, 0x71, 0x36, 0xff}}},\n    {{{   768,  -4607,   5118}, 0, { -3096,      0}, {0xda, 0x70, 0x2b, 0xff}}},\n    {{{   768,  -5119,   5118}, 0, { -3096,    990}, {0xaf, 0x00, 0x61, 0xff}}},\n    {{{   768,  -5119,   6654}, 0, {     0,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   768,  -4607,   6654}, 0, {     0,      0}, {0xda, 0x72, 0x26, 0xff}}},\n    {{{  1792,  -5119,   6654}, 0, {  1934,    990}, {0x17, 0x00, 0x7c, 0xff}}},\n    {{{  1792,  -4607,   6654}, 0, {  1934,      0}, {0x12, 0x4d, 0x63, 0xff}}},\n    {{{  4790,  -4607,   5511}, 0, {-12734,      0}, {0x26, 0x76, 0x18, 0xff}}},\n    {{{  6537,  -5119,   -852}, 0, {     0,    990}, {0x7e, 0x00, 0x01, 0xff}}},\n    {{{  6537,  -4607,   -852}, 0, {     0,      0}, {0x44, 0x6a, 0x00, 0xff}}},\n    {{{ -2139,   2867,   -926}, 0, {  1324,    294}, {0xed, 0x7b, 0x16, 0xff}}},\n    {{{ -2114,   2458,   -951}, 0, {   804,    926}, {0x0b, 0x21, 0x7a, 0xff}}},\n    {{{ -1000,   3471,   -513}, 0, {  3860,    990}, {0xa8, 0x57, 0x18, 0xff}}},\n};\n\n// 0x07007B80 - 0x07007C70\nstatic const Vtx ccm_seg7_vertex_07007B80[] = {\n    {{{  2057,   1737,   2920}, 0, {  3370,    234}, {0x19, 0x57, 0x58, 0xff}}},\n    {{{  4096,   1327,   1843}, 0, {  7820,    990}, {0x5d, 0xba, 0x31, 0xff}}},\n    {{{  4096,   1685,   1843}, 0, {  7810,    274}, {0x21, 0x78, 0x16, 0xff}}},\n    {{{  2057,   1276,   2920}, 0, {  3384,   1152}, {0x13, 0xad, 0x5d, 0xff}}},\n    {{{   256,   1382,   2696}, 0, {     0,    990}, {0xe4, 0x35, 0x6f, 0xff}}},\n    {{{  4350,     41,  -2633}, 0, { -2690,   4558}, {0x04, 0x6c, 0xbf, 0xff}}},\n    {{{  3860,   -470,  -2720}, 0, { -1776,   5626}, {0xe2, 0x72, 0xd3, 0xff}}},\n    {{{  3072,   -409,  -2559}, 0, {  -184,   5584}, {0x09, 0x50, 0x9f, 0xff}}},\n    {{{ -3045,   1842,  -1970}, 0, {    56,  -1152}, {0xb0, 0xeb, 0xa0, 0xff}}},\n    {{{ -3045,    768,  -1970}, 0, {     0,    990}, {0xdf, 0x6f, 0xcd, 0xff}}},\n    {{{ -3608,    819,   -864}, 0, {  2448,    990}, {0xb4, 0x62, 0xe8, 0xff}}},\n    {{{ -3235,    789,   1509}, 0, {  4828,  -1212}, {0xf5, 0xa1, 0x53, 0xff}}},\n    {{{ -3235,   1045,   1509}, 0, {  4850,  -1374}, {0xdc, 0x35, 0x6d, 0xff}}},\n    {{{ -3574,   1090,   1394}, 0, {  4224,  -1726}, {0xa3, 0x3b, 0x3e, 0xff}}},\n    {{{ -3045,   2816,  -1970}, 0, {   136,  -3094}, {0xb5, 0x62, 0xe6, 0xff}}},\n};\n\n// 0x07007C70 - 0x07007D50\nstatic const Vtx ccm_seg7_vertex_07007C70[] = {\n    {{{  1485,   3072,    256}, 0, {  3608,  -1424}, {0x3a, 0x6a, 0x24, 0xff}}},\n    {{{  1946,   1531,   1741}, 0, {     0,    990}, {0x14, 0x74, 0x2e, 0xff}}},\n    {{{  2048,   2304,   -511}, 0, {  4716,    742}, {0x34, 0x65, 0x38, 0xff}}},\n    {{{ -3235,   1045,   1509}, 0, {  4850,  -1374}, {0xdc, 0x35, 0x6d, 0xff}}},\n    {{{  -942,    768,   2286}, 0, {  9102,    990}, {0xf5, 0x95, 0x43, 0xff}}},\n    {{{   256,   1382,   2696}, 0, { 11398,   1740}, {0xe4, 0x35, 0x6f, 0xff}}},\n    {{{ -3235,    789,   1509}, 0, {  4828,  -1212}, {0xf5, 0xa1, 0x53, 0xff}}},\n    {{{ -3071,   1040,   1024}, 0, {  3912,    990}, {0x32, 0x6b, 0xd3, 0xff}}},\n    {{{ -2429,   2867,   -636}, 0, {  1498,  -3468}, {0x46, 0x56, 0x3c, 0xff}}},\n    {{{ -3045,   2816,  -1970}, 0, { -1390,  -3502}, {0xb5, 0x62, 0xe6, 0xff}}},\n    {{{ -3608,    819,   -864}, 0, {     0,    990}, {0xb4, 0x62, 0xe8, 0xff}}},\n    {{{  2048,   2560,   -767}, 0, {  5342,    410}, {0x3a, 0x5c, 0x40, 0xff}}},\n    {{{  2048,   2560,  -2047}, 0, {  7808,    990}, {0x38, 0x6d, 0x1f, 0xff}}},\n    {{{  1445,   3072,  -2287}, 0, {  8504,   -306}, {0x21, 0x71, 0xd4, 0xff}}},\n};\n\n// 0x07007D50 - 0x07007E30\nstatic const Vtx ccm_seg7_vertex_07007D50[] = {\n    {{{ -5213,  -1740,   4792}, 0, {  2880,  -2178}, {0xfb, 0x7d, 0x12, 0xff}}},\n    {{{ -4382,  -1945,   5414}, 0, {  4950,  -1770}, {0xe6, 0x75, 0x27, 0xff}}},\n    {{{ -3268,  -1740,   6246}, 0, {  7726,  -2178}, {0x02, 0x65, 0x4c, 0xff}}},\n    {{{ -1414,  -3071,   3522}, 0, {     0,    990}, {0x35, 0x38, 0x64, 0xff}}},\n    {{{ -2776,  -1535,   1910}, 0, {   230,  -4212}, {0xe1, 0x57, 0x56, 0xff}}},\n    {{{ -3327,  -1535,   3840}, 0, { -3430,  -2590}, {0x3c, 0x6f, 0x07, 0xff}}},\n    {{{   512,   4096,   -511}, 0, {   490,   -964}, {0x4a, 0x25, 0xa1, 0xff}}},\n    {{{ -1000,   3471,   -513}, 0, {  3090,    990}, {0xa8, 0x57, 0x18, 0xff}}},\n    {{{   -50,   5632,   -153}, 0, {  2358,  -3718}, {0x33, 0x6f, 0x1e, 0xff}}},\n    {{{    23,   3471,   -769}, 0, {  1116,    552}, {0x1c, 0x75, 0xd9, 0xff}}},\n    {{{ -3327,  -1535,   3840}, 0, {  4772,  -2588}, {0x3c, 0x6f, 0x07, 0xff}}},\n    {{{ -3268,  -1535,   5668}, 0, {  1122,  -2588}, {0x10, 0x71, 0x36, 0xff}}},\n    {{{ -3268,  -1740,   5668}, 0, {  1122,  -2178}, {0x43, 0x5b, 0x38, 0xff}}},\n    {{{ -3268,  -1740,   5668}, 0, { -6162,   -170}, {0x43, 0x5b, 0x38, 0xff}}},\n};\n\n// 0x07007E30 - 0x07007F30\nstatic const Vtx ccm_seg7_vertex_07007E30[] = {\n    {{{ -6398,  -3327,   3943}, 0, { 18854,    990}, {0xa6, 0xba, 0x36, 0xff}}},\n    {{{ -6423,  -1740,    103}, 0, { 11656,  -2980}, {0xb4, 0x65, 0xfa, 0xff}}},\n    {{{ -6423,  -3839,    103}, 0, { 11202,   1182}, {0x94, 0xbf, 0xf7, 0xff}}},\n    {{{ -6398,  -1740,   3943}, 0, { 19198,  -2160}, {0xd8, 0x77, 0x10, 0xff}}},\n    {{{ -5119,  -1842,  -5375}, 0, {   510,  -3988}, {0xd9, 0x4c, 0xa3, 0xff}}},\n    {{{ -5119,  -4351,  -5375}, 0, {     0,    990}, {0xd5, 0x93, 0xd1, 0xff}}},\n    {{{   768,    154,  -3327}, 0, {  4380,   4688}, {0x13, 0x57, 0xa7, 0xff}}},\n    {{{   768,   -972,  -3327}, 0, {  4268,   6934}, {0xfc, 0x26, 0x88, 0xff}}},\n    {{{ -3071,   -511,  -3071}, 0, { 11986,   6400}, {0xa6, 0xd7, 0xb2, 0xff}}},\n    {{{ -3318,    819,  -3055}, 0, { 12612,   3772}, {0x01, 0x73, 0xcd, 0xff}}},\n    {{{ -3071,  -1125,  -3071}, 0, { 11914,   7830}, {0xb7, 0x3e, 0xae, 0xff}}},\n    {{{ -3964,    819,  -2785}, 0, { 13924,   3838}, {0xd0, 0x69, 0xce, 0xff}}},\n    {{{  3072,   -409,  -3020}, 0, {  -230,   5582}, {0x0a, 0x6c, 0xbf, 0xff}}},\n    {{{   -50,   1280,   2048}, 0, {  7086,  -1630}, {0xf4, 0x75, 0x2e, 0xff}}},\n    {{{   -50,   5632,   -153}, 0, { -1208,  -6644}, {0x33, 0x6f, 0x1e, 0xff}}},\n    {{{ -1000,   3471,   -513}, 0, {   224,  -2112}, {0xa8, 0x57, 0x18, 0xff}}},\n};\n\n// 0x07007F30 - 0x07008030\nstatic const Vtx ccm_seg7_vertex_07007F30[] = {\n    {{{   512,   4096,   -511}, 0, {  7460,   -664}, {0x4a, 0x25, 0xa1, 0xff}}},\n    {{{   -50,   5632,   -153}, 0, {  8414,  -3852}, {0x33, 0x6f, 0x1e, 0xff}}},\n    {{{   512,   4096,    256}, 0, {  6224,  -1430}, {0x79, 0x14, 0x1d, 0xff}}},\n    {{{   512,   3072,   -511}, 0, {  6306,    990}, {0x5b, 0x56, 0xee, 0xff}}},\n    {{{   -50,   1280,   2048}, 0, {     0,    990}, {0xf4, 0x75, 0x2e, 0xff}}},\n    {{{   512,   3072,    256}, 0, {  5070,    226}, {0x59, 0x4d, 0x2d, 0xff}}},\n    {{{   512,   4096,   -511}, 0, {   490,   -964}, {0x4a, 0x25, 0xa1, 0xff}}},\n    {{{   512,   3072,   -511}, 0, {     0,    990}, {0x5b, 0x56, 0xee, 0xff}}},\n    {{{    23,   3471,   -769}, 0, {  1116,    552}, {0x1c, 0x75, 0xd9, 0xff}}},\n    {{{ -5119,  -4607,      0}, 0, { 10174,      0}, {0x8f, 0x38, 0x04, 0xff}}},\n    {{{ -5119,  -4863,  -5119}, 0, {     0,    478}, {0xea, 0x75, 0xd5, 0xff}}},\n    {{{ -5119,  -5119,  -5119}, 0, {     0,    990}, {0xb1, 0x00, 0x9e, 0xff}}},\n    {{{ -5119,  -5119,  -5119}, 0, { 13236,    990}, {0xb1, 0x00, 0x9e, 0xff}}},\n    {{{ -5119,  -4863,  -5119}, 0, { 13240,    480}, {0xea, 0x75, 0xd5, 0xff}}},\n    {{{ -2230,  -4883,  -4501}, 0, {  7344,    480}, {0x57, 0x49, 0xc8, 0xff}}},\n    {{{ -2230,  -5139,  -4501}, 0, {  7340,    990}, {0x6a, 0x00, 0xbc, 0xff}}},\n};\n\n// 0x07008030 - 0x07008130\nstatic const Vtx ccm_seg7_vertex_07008030[] = {\n    {{{ -3292,  -4607,   5501}, 0, {  3142,      0}, {0x1f, 0x6c, 0x3a, 0xff}}},\n    {{{ -4607,  -4607,   4608}, 0, {     0,      0}, {0xdb, 0x77, 0x16, 0xff}}},\n    {{{ -4607,  -5119,   4608}, 0, {     0,    990}, {0x94, 0x00, 0x41, 0xff}}},\n    {{{ -3292,  -5119,   5501}, 0, {  3142,    990}, {0x3c, 0x00, 0x6f, 0xff}}},\n    {{{  4790,  -5119,   5511}, 0, {  8314,    990}, {0x4e, 0x00, 0x63, 0xff}}},\n    {{{  4790,  -4607,   5511}, 0, {  8314,      0}, {0x26, 0x76, 0x18, 0xff}}},\n    {{{  1792,  -4607,   6654}, 0, {  1934,      0}, {0x12, 0x4d, 0x63, 0xff}}},\n    {{{  1792,  -5119,   6654}, 0, {  1934,    990}, {0x17, 0x00, 0x7c, 0xff}}},\n    {{{ -5119,  -4607,      0}, 0, { 10174,      0}, {0x8f, 0x38, 0x04, 0xff}}},\n    {{{ -5119,  -5119,  -5119}, 0, {     0,    990}, {0xb1, 0x00, 0x9e, 0xff}}},\n    {{{ -5119,  -5119,      0}, 0, { 10174,    990}, {0x82, 0x00, 0x07, 0xff}}},\n    {{{ -4607,  -5119,   4608}, 0, { 19412,    990}, {0x94, 0x00, 0x41, 0xff}}},\n    {{{ -4607,  -4607,   4608}, 0, { 19412,      0}, {0xdb, 0x77, 0x16, 0xff}}},\n    {{{   768,  -4607,   5118}, 0, {  3826,   7120}, {0xda, 0x70, 0x2b, 0xff}}},\n    {{{   768,  -1535,   5118}, 0, {  3826,    990}, {0x2e, 0x4f, 0x57, 0xff}}},\n    {{{   498,  -1535,   3204}, 0, {     0,    990}, {0xd7, 0x42, 0x63, 0xff}}},\n};\n\n// 0x07008130 - 0x07008230\nstatic const Vtx ccm_seg7_vertex_07008130[] = {\n    {{{  4077,  -5119,  -1403}, 0, {  6530,    990}, {0xcb, 0x00, 0x73, 0xff}}},\n    {{{  4077,  -4607,  -1403}, 0, {  6544,      0}, {0xd6, 0xd7, 0x70, 0xff}}},\n    {{{  1482,  -5164,  -3421}, 0, {     0,    990}, {0xfc, 0x9a, 0x4a, 0xff}}},\n    {{{  5040,  -5119,  -1194}, 0, {  8304,   1012}, {0x92, 0x00, 0x3e, 0xff}}},\n    {{{  5039,  -4607,  -1191}, 0, {  8320,     -8}, {0x41, 0x60, 0x33, 0xff}}},\n    {{{  4551,  -3358,    228}, 0, {  9326,  -2486}, {0x06, 0xa7, 0x5a, 0xff}}},\n    {{{  3864,  -3358,   -115}, 0, {  7822,  -2508}, {0x06, 0x8f, 0x39, 0xff}}},\n    {{{  1942,  -5119,   2025}, 0, {     0,    990}, {0x68, 0xcd, 0x32, 0xff}}},\n    {{{  1482,  -5164,  -3421}, 0, { 11510,    990}, {0xfc, 0x9a, 0x4a, 0xff}}},\n    {{{  3521,  -3358,    571}, 0, {  2522,  -3240}, {0x59, 0xb2, 0x2b, 0xff}}},\n    {{{  3864,  -3358,   -115}, 0, {  3820,  -4030}, {0x06, 0x8f, 0x39, 0xff}}},\n    {{{  3682,  -5119,   2895}, 0, { -7512,    990}, {0x88, 0x00, 0xd8, 0xff}}},\n    {{{  3682,  -4607,   2895}, 0, { -7512,      0}, {0xda, 0x78, 0xf4, 0xff}}},\n    {{{  5040,  -5119,  -1194}, 0, {   648,    990}, {0x92, 0x00, 0x3e, 0xff}}},\n    {{{  1940,  -4125,   2033}, 0, {  1216,   -552}, {0x56, 0x00, 0x5d, 0xff}}},\n    {{{  3521,  -3358,    571}, 0, {  5510,    990}, {0x59, 0xb2, 0x2b, 0xff}}},\n};\n\n// 0x07008230 - 0x07008260\nstatic const Vtx ccm_seg7_vertex_07008230[] = {\n    {{{  3682,  -4607,   2895}, 0, { -7512,      0}, {0xda, 0x78, 0xf4, 0xff}}},\n    {{{  5039,  -4607,  -1191}, 0, {   644,      0}, {0x41, 0x60, 0x33, 0xff}}},\n    {{{  5040,  -5119,  -1194}, 0, {   648,    990}, {0x92, 0x00, 0x3e, 0xff}}},\n};\n\n// 0x07008260 - 0x07008350\nstatic const Vtx ccm_seg7_vertex_07008260[] = {\n    {{{   768,    818,  -2610}, 0, {   -36,    990}, {0xfc, 0xdf, 0x86, 0xff}}},\n    {{{    23,   1741,  -3073}, 0, {  1448,     66}, {0xf4, 0xe1, 0x86, 0xff}}},\n    {{{  3072,   1894,  -3327}, 0, { -4636,   -440}, {0x1b, 0xd0, 0x8e, 0xff}}},\n    {{{ -3327,  -3583,   3840}, 0, {  7632,   4156}, {0xce, 0xa2, 0x44, 0xff}}},\n    {{{ -3268,  -3327,   6246}, 0, { 12436,   4274}, {0x16, 0xa6, 0x56, 0xff}}},\n    {{{ -6398,  -3327,   3943}, 0, {  7838,  -1972}, {0xa6, 0xba, 0x36, 0xff}}},\n    {{{ -1414,  -3071,   3522}, 0, {  6998,   7974}, {0x35, 0x38, 0x64, 0xff}}},\n    {{{ -4914,  -4095,      0}, 0, {     0,    990}, {0xa2, 0xae, 0x12, 0xff}}},\n    {{{ -6423,  -3839,    103}, 0, {   174,  -2022}, {0x94, 0xbf, 0xf7, 0xff}}},\n    {{{  3072,   1022,  -2559}, 0, { -4636,   1090}, {0x58, 0xc7, 0xba, 0xff}}},\n    {{{  4096,   1792,  -2559}, 0, { -6680,   1090}, {0x60, 0xca, 0xc3, 0xff}}},\n    {{{  3072,    807,   -511}, 0, { -4636,   5178}, {0x60, 0xb5, 0x20, 0xff}}},\n    {{{  4096,   1327,   1843}, 0, { -6680,   9880}, {0x5d, 0xba, 0x31, 0xff}}},\n    {{{ -1005,   1637,  -2562}, 0, {  3514,   1088}, {0xe8, 0xc9, 0x91, 0xff}}},\n    {{{ -2024,   2150,  -3073}, 0, {  5536,     66}, {0xd1, 0xd5, 0x93, 0xff}}},\n};\n\n// 0x07008350 - 0x07008430\nstatic const Vtx ccm_seg7_vertex_07008350[] = {\n    {{{ -3045,   1842,  -1970}, 0, {  7574,   2266}, {0xb0, 0xeb, 0xa0, 0xff}}},\n    {{{ -2024,   2150,  -3073}, 0, {  5536,     66}, {0xd1, 0xd5, 0x93, 0xff}}},\n    {{{ -1005,   1637,  -2562}, 0, {  3502,   1086}, {0xe8, 0xc9, 0x91, 0xff}}},\n    {{{   -50,   1280,   2048}, 0, {     0,    990}, {0xf4, 0x75, 0x2e, 0xff}}},\n    {{{   -50,    512,   2048}, 0, {     0,   2522}, {0xfd, 0xb3, 0x64, 0xff}}},\n    {{{  -617,    768,   2126}, 0, {  1110,   2010}, {0x17, 0x84, 0x01, 0xff}}},\n    {{{   -50,    512,   2048}, 0, {  1596,  10288}, {0xfd, 0xb3, 0x64, 0xff}}},\n    {{{  2048,   1229,   2048}, 0, { -2592,  10288}, {0x49, 0xa1, 0x28, 0xff}}},\n    {{{  2057,   1276,   2920}, 0, { -2610,  12028}, {0x13, 0xad, 0x5d, 0xff}}},\n    {{{  4096,   1327,   1843}, 0, { -6680,   9880}, {0x5d, 0xba, 0x31, 0xff}}},\n    {{{ -2442,  -5132,  -3555}, 0, {     0,    990}, {0x7b, 0x00, 0x1b, 0xff}}},\n    {{{ -2230,  -5139,  -4501}, 0, {  1904,    990}, {0x6a, 0x00, 0xbc, 0xff}}},\n    {{{ -2230,  -4883,  -4501}, 0, {  1900,    480}, {0x57, 0x49, 0xc8, 0xff}}},\n    {{{ -2442,  -4876,  -3553}, 0, {   -36,    480}, {0x59, 0x47, 0xcb, 0xff}}},\n};\n\n// 0x07008430 - 0x07008530\nstatic const Vtx ccm_seg7_vertex_07008430[] = {\n    {{{   256,   1382,   2696}, 0, {  1526,   -634}, {0xe4, 0x35, 0x6f, 0xff}}},\n    {{{  -617,    768,   2126}, 0, {  -804,      6}, {0x17, 0x84, 0x01, 0xff}}},\n    {{{   -50,    512,   2048}, 0, {     0,    990}, {0xfd, 0xb3, 0x64, 0xff}}},\n    {{{ -1102,    768,   1962}, 0, {   936,    662}, {0x00, 0x83, 0xee, 0xff}}},\n    {{{  -942,    768,   2286}, 0, {   616,   1308}, {0xf5, 0x95, 0x43, 0xff}}},\n    {{{ -3235,    789,   1509}, 0, {  5194,   -242}, {0xf5, 0xa1, 0x53, 0xff}}},\n    {{{ -5119,  -4351,  -5375}, 0, {-10760,    582}, {0xd5, 0x93, 0xd1, 0xff}}},\n    {{{ -4914,  -4095,      0}, 0, {     0,    990}, {0xa2, 0xae, 0x12, 0xff}}},\n    {{{ -6423,  -3839,    103}, 0, {   174,  -2022}, {0x94, 0xbf, 0xf7, 0xff}}},\n    {{{  -778,    768,   1801}, 0, {   288,    342}, {0x1b, 0x8c, 0xd5, 0xff}}},\n    {{{  -617,    768,   2126}, 0, {     0,    990}, {0x17, 0x84, 0x01, 0xff}}},\n    {{{ -3071,   1040,   1024}, 0, {  4866,  -1210}, {0x32, 0x6b, 0xd3, 0xff}}},\n    {{{   -50,   1280,   2048}, 0, { -1162,    834}, {0xf4, 0x75, 0x2e, 0xff}}},\n    {{{   256,   1382,   2696}, 0, { -1776,   2124}, {0xe4, 0x35, 0x6f, 0xff}}},\n    {{{ -2559,  -3839,  -3583}, 0, { -7184,   5690}, {0x48, 0xea, 0x9b, 0xff}}},\n    {{{ -4905,  -4499,  -4234}, 0, { -8482,   1006}, {0xd6, 0xb8, 0xa2, 0xff}}},\n};\n\n// 0x07008530 - 0x07008630\nstatic const Vtx ccm_seg7_vertex_07008530[] = {\n    {{{   768,  -1074,  -4453}, 0, { -4022,   7630}, {0xf7, 0x78, 0xd9, 0xff}}},\n    {{{   763,  -1330,  -2596}, 0, {  -314,   7620}, {0x12, 0x84, 0xf0, 0xff}}},\n    {{{ -5119,  -1842,  -5375}, 0, { -5862,  -4122}, {0xd9, 0x4c, 0xa3, 0xff}}},\n    {{{ -2558,  -1841,  -2454}, 0, {     0,    990}, {0x53, 0xc3, 0xb7, 0xff}}},\n    {{{  4096,  -2559,      0}, 0, {     0,   6234}, {0xe4, 0xd1, 0x72, 0xff}}},\n    {{{  4540,  -2559,    260}, 0, {  1448,   6450}, {0x48, 0xe3, 0x63, 0xff}}},\n    {{{  4075,  -1607,   1104}, 0, {  2596,   1864}, {0x13, 0xd2, 0x74, 0xff}}},\n    {{{  3553,  -1607,    769}, 0, {  2202,   1800}, {0x23, 0x0b, 0x79, 0xff}}},\n    {{{ -3071,   -511,  -3071}, 0, { -1674,   5724}, {0xa6, 0xd7, 0xb2, 0xff}}},\n    {{{ -3071,   -511,  -2047}, 0, {  -196,   4408}, {0x8f, 0xe8, 0xcd, 0xff}}},\n    {{{ -4095,    563,  -1023}, 0, {     0,    990}, {0x9b, 0xb5, 0x0d, 0xff}}},\n    {{{ -3071,    277,   1024}, 0, {  4308,    -38}, {0xa7, 0xd1, 0x4b, 0xff}}},\n    {{{ -3574,   1090,   1394}, 0, {  4224,  -1726}, {0xa3, 0x3b, 0x3e, 0xff}}},\n    {{{ -3071,   1040,   1024}, 0, {  4834,    990}, {0x32, 0x6b, 0xd3, 0xff}}},\n    {{{   -50,   1280,   2048}, 0, { -1440,   -196}, {0xf4, 0x75, 0x2e, 0xff}}},\n    {{{  -778,    768,   1801}, 0, {     0,    990}, {0x1b, 0x8c, 0xd5, 0xff}}},\n};\n\n// 0x07008630 - 0x070086A0\nstatic const Vtx ccm_seg7_vertex_07008630[] = {\n    {{{ -3574,   1090,   1394}, 0, {  4224,  -1726}, {0xa3, 0x3b, 0x3e, 0xff}}},\n    {{{ -3071,    277,   1024}, 0, {  4308,    -38}, {0xa7, 0xd1, 0x4b, 0xff}}},\n    {{{ -3235,    789,   1509}, 0, {  4828,  -1212}, {0xf5, 0xa1, 0x53, 0xff}}},\n    {{{  3072,    807,   -511}, 0, { -4636,   5178}, {0x60, 0xb5, 0x20, 0xff}}},\n    {{{  4096,   1327,   1843}, 0, { -6680,   9880}, {0x5d, 0xba, 0x31, 0xff}}},\n    {{{  2048,   1229,   2048}, 0, { -2592,  10288}, {0x49, 0xa1, 0x28, 0xff}}},\n    {{{  2048,    840,   1024}, 0, { -2592,   8244}, {0x70, 0xd7, 0x2a, 0xff}}},\n};\n\n// 0x070086A0 - 0x07008780\nstatic const Vtx ccm_seg7_vertex_070086A0[] = {\n    {{{ -5056,  -1319,  -1347}, 0, {     0,   1000}, {0xde, 0x28, 0x73, 0xff}}},\n    {{{ -5119,  -1319,  -1417}, 0, {  -112,    540}, {0x93, 0x3f, 0xfd, 0xff}}},\n    {{{ -5119,  -1374,  -1417}, 0, {  -112,    526}, {0x8b, 0x00, 0x2f, 0xff}}},\n    {{{ -4547,  -1454,   2112}, 0, {   362,    392}, {0xf3, 0x5e, 0xad, 0xff}}},\n    {{{ -4603,  -1455,   2184}, 0, {   -72,    532}, {0xb2, 0x64, 0x03, 0xff}}},\n    {{{ -4516,  -1387,   2183}, 0, {   294,    754}, {0xf5, 0x7e, 0x01, 0xff}}},\n    {{{ -4545,  -1459,   2256}, 0, {     0,    990}, {0xfc, 0x5b, 0x58, 0xff}}},\n    {{{ -4361,  -1353,   -225}, 0, {  2280,    358}, {0xf3, 0x5e, 0xad, 0xff}}},\n    {{{ -4417,  -1355,   -153}, 0, {  1904,     98}, {0xb2, 0x63, 0xf6, 0xff}}},\n    {{{ -4330,  -1287,   -155}, 0, {  1952,    524}, {0xfa, 0x79, 0xde, 0xff}}},\n    {{{ -4261,  -1374,    247}, 0, {   -46,    992}, {0x02, 0x7c, 0x1a, 0xff}}},\n    {{{ -5058,  -1319,  -1490}, 0, {   332,    388}, {0xf8, 0x68, 0xb9, 0xff}}},\n    {{{ -5033,  -1380,  -1629}, 0, {   804,   -152}, {0xc6, 0x5d, 0xc1, 0xff}}},\n    {{{ -5047,  -1247,  -1421}, 0, {   202,    728}, {0xf7, 0x7e, 0xfe, 0xff}}},\n};\n\n// 0x07008780 - 0x07008880\nstatic const Vtx ccm_seg7_vertex_07008780[] = {\n    {{{ -1005,    410,  -2562}, 0, {  8014,   4360}, {0xf7, 0x48, 0x99, 0xff}}},\n    {{{ -3045,    768,  -1970}, 0, { 12170,   3852}, {0xdf, 0x6f, 0xcd, 0xff}}},\n    {{{ -3045,   1842,  -1970}, 0, { 12278,   1712}, {0xb0, 0xeb, 0xa0, 0xff}}},\n    {{{ -5056,  -1370,  -1347}, 0, {     0,    990}, {0xee, 0x00, 0x7d, 0xff}}},\n    {{{ -5056,  -1319,  -1347}, 0, {     0,   1000}, {0xde, 0x28, 0x73, 0xff}}},\n    {{{ -5119,  -1374,  -1417}, 0, {  -112,    526}, {0x8b, 0x00, 0x2f, 0xff}}},\n    {{{  3072,   1022,  -2559}, 0, {   -42,   2730}, {0x58, 0xc7, 0xba, 0xff}}},\n    {{{  3072,   -204,  -2559}, 0, {  -164,   5176}, {0x1b, 0x4c, 0x9f, 0xff}}},\n    {{{   768,    818,  -2610}, 0, {  4518,   3368}, {0xfc, 0xdf, 0x86, 0xff}}},\n    {{{  3072,   -409,  -2559}, 0, {  -184,   5584}, {0x09, 0x50, 0x9f, 0xff}}},\n    {{{  4350,     41,  -2633}, 0, { -2690,   4558}, {0x04, 0x6c, 0xbf, 0xff}}},\n    {{{   768,    154,  -2610}, 0, {  4452,   4692}, {0x0f, 0x5a, 0xa9, 0xff}}},\n    {{{ -1005,   1637,  -2562}, 0, {  8138,   1912}, {0xe8, 0xc9, 0x91, 0xff}}},\n    {{{ -2429,   2150,   -636}, 0, {     0,  -5404}, {0x33, 0x35, 0x67, 0xff}}},\n    {{{ -3071,   1040,   1024}, 0, { -1752,  -1584}, {0x32, 0x6b, 0xd3, 0xff}}},\n    {{{ -3071,   -511,   1024}, 0, {     0,    990}, {0xc0, 0x50, 0x4a, 0xff}}},\n};\n\n// 0x07008880 - 0x07008980\nstatic const Vtx ccm_seg7_vertex_07008880[] = {\n    {{{ -3071,   1040,   1024}, 0, { -1752,  -1584}, {0x32, 0x6b, 0xd3, 0xff}}},\n    {{{ -2429,   2150,   -636}, 0, {     0,  -5404}, {0x33, 0x35, 0x67, 0xff}}},\n    {{{ -2429,   2867,   -636}, 0, {  -826,  -6594}, {0x46, 0x56, 0x3c, 0xff}}},\n    {{{ -3071,   -511,  -3071}, 0, { -1674,   5724}, {0xa6, 0xd7, 0xb2, 0xff}}},\n    {{{ -4095,    563,  -1023}, 0, {     0,    990}, {0x9b, 0xb5, 0x0d, 0xff}}},\n    {{{ -4536,    819,   -983}, 0, {  -556,    164}, {0x8d, 0x34, 0x00, 0xff}}},\n    {{{ -2139,   2867,   -926}, 0, {  1324,    294}, {0xed, 0x7b, 0x16, 0xff}}},\n    {{{ -2429,   2867,   -636}, 0, {   938,    -62}, {0x46, 0x56, 0x3c, 0xff}}},\n    {{{ -2114,   2458,   -951}, 0, {   804,    926}, {0x0b, 0x21, 0x7a, 0xff}}},\n    {{{ -2429,   2150,   -636}, 0, {     0,    990}, {0x33, 0x35, 0x67, 0xff}}},\n    {{{ -3235,    789,   1509}, 0, { -2322,   -602}, {0xf5, 0xa1, 0x53, 0xff}}},\n    {{{ -3071,    277,   1024}, 0, {  -906,   -320}, {0xa7, 0xd1, 0x4b, 0xff}}},\n    {{{ -3574,   1090,   1394}, 0, {  4224,  -1726}, {0xa3, 0x3b, 0x3e, 0xff}}},\n    {{{  4240,  -4607,  -1490}, 0, { -8168,  10186}, {0x5d, 0x17, 0xad, 0xff}}},\n    {{{  1380,  -3628,  -3729}, 0, { -2784,   8232}, {0x44, 0xe0, 0x9b, 0xff}}},\n    {{{   763,  -2661,  -4709}, 0, { -1554,   6302}, {0x29, 0xda, 0x8f, 0xff}}},\n};\n\n// 0x07008980 - 0x07008A20\nstatic const Vtx ccm_seg7_vertex_07008980[] = {\n    {{{ -3292,  -4607,   5501}, 0, {     0,      0}, {0x1f, 0x6c, 0x3a, 0xff}}},\n    {{{ -3327,  -5119,   3840}, 0, {  3284,    990}, {0x6f, 0x00, 0x3c, 0xff}}},\n    {{{ -3327,  -4607,   3840}, 0, {  3284,      0}, {0xf5, 0x65, 0x4b, 0xff}}},\n    {{{ -3292,  -5119,   5501}, 0, {     0,    990}, {0x3c, 0x00, 0x6f, 0xff}}},\n    {{{ -3964,    819,  -2785}, 0, {     0,    990}, {0xd0, 0x69, 0xce, 0xff}}},\n    {{{ -3071,   -511,  -3071}, 0, {     0,   4238}, {0xa6, 0xd7, 0xb2, 0xff}}},\n    {{{ -4536,    819,   -983}, 0, {  3528,   -268}, {0x8d, 0x34, 0x00, 0xff}}},\n    {{{   256,   1382,   2696}, 0, {  1526,   -634}, {0xe4, 0x35, 0x6f, 0xff}}},\n    {{{   -50,    512,   2048}, 0, {     0,    990}, {0xfd, 0xb3, 0x64, 0xff}}},\n    {{{  2057,   1276,   2920}, 0, {  4770,    990}, {0x13, 0xad, 0x5d, 0xff}}},\n};\n\n// 0x07008A20 - 0x07008B00\nstatic const Vtx ccm_seg7_vertex_07008A20[] = {\n    {{{   -50,   -511,   2048}, 0, {  3152,    990}, {0xd7, 0x55, 0x54, 0xff}}},\n    {{{ -1020,   2048,      3}, 0, {  1580,  -2030}, {0xb1, 0x31, 0x55, 0xff}}},\n    {{{ -2429,   2150,   -636}, 0, {    42,  -2202}, {0x33, 0x35, 0x67, 0xff}}},\n    {{{ -3327,  -4607,   3840}, 0, {     0,    512}, {0xf5, 0x65, 0x4b, 0xff}}},\n    {{{ -3327,  -5119,   3840}, 0, {     0,    990}, {0x6f, 0x00, 0x3c, 0xff}}},\n    {{{   768,  -5119,   5118}, 0, {  4250,    990}, {0xaf, 0x00, 0x61, 0xff}}},\n    {{{   768,  -4607,   5118}, 0, {  4250,    512}, {0xda, 0x70, 0x2b, 0xff}}},\n    {{{   498,  -1535,   3204}, 0, {  3424,  -2972}, {0xd7, 0x42, 0x63, 0xff}}},\n    {{{ -1414,  -3071,   3522}, 0, {  1696,  -1230}, {0x35, 0x38, 0x64, 0xff}}},\n    {{{ -2776,  -1535,   1910}, 0, {   -78,  -3064}, {0xe1, 0x57, 0x56, 0xff}}},\n    {{{ -3071,   -511,   1024}, 0, {     0,    990}, {0xc0, 0x50, 0x4a, 0xff}}},\n    {{{ -2776,   -511,   1910}, 0, {   -78,  -4020}, {0xa8, 0x21, 0x54, 0xff}}},\n    {{{ -2114,   2458,   -951}, 0, {   240,  -2686}, {0x0b, 0x21, 0x7a, 0xff}}},\n    {{{   498,   -511,   3204}, 0, {  3424,  -3928}, {0x11, 0x64, 0x4b, 0xff}}},\n};\n\n// 0x07008B00 - 0x07008B80\nstatic const Vtx ccm_seg7_vertex_07008B00[] = {\n    {{{ -4914,  -4607,      0}, 0, { -4116,    762}, {0xbb, 0x68, 0x11, 0xff}}},\n    {{{ -3327,  -4607,   3840}, 0, {     0,    512}, {0xf5, 0x65, 0x4b, 0xff}}},\n    {{{ -3327,  -3583,   3840}, 0, {     0,   -444}, {0xce, 0xa2, 0x44, 0xff}}},\n    {{{ -2559,  -3839,  -3583}, 0, { -7090,  -1046}, {0x48, 0xea, 0x9b, 0xff}}},\n    {{{ -2559,  -4351,  -3583}, 0, { -7090,   -568}, {0x21, 0x00, 0x86, 0xff}}},\n    {{{ -4905,  -4499,  -4234}, 0, { -8238,    330}, {0xd6, 0xb8, 0xa2, 0xff}}},\n    {{{ -4914,  -4095,      0}, 0, { -4116,    284}, {0xa2, 0xae, 0x12, 0xff}}},\n    {{{ -4905,  -4858,  -4236}, 0, { -8240,    664}, {0xd7, 0x63, 0xbe, 0xff}}},\n};\n\n// 0x07008B80 - 0x07008BF0\nstatic const Vtx ccm_seg7_vertex_07008B80[] = {\n    {{{ -4905,  -4858,  -4236}, 0, { -8240,    664}, {0xd7, 0x63, 0xbe, 0xff}}},\n    {{{ -4905,  -4499,  -4234}, 0, { -8238,    330}, {0xd6, 0xb8, 0xa2, 0xff}}},\n    {{{ -2559,  -4351,  -3583}, 0, { -7090,   -568}, {0x21, 0x00, 0x86, 0xff}}},\n    {{{ -3327,  -3583,   3840}, 0, {     0,   -444}, {0xce, 0xa2, 0x44, 0xff}}},\n    {{{ -3327,  -4607,   3840}, 0, {     0,    512}, {0xf5, 0x65, 0x4b, 0xff}}},\n    {{{ -1414,  -3071,   3522}, 0, {  1696,  -1230}, {0x35, 0x38, 0x64, 0xff}}},\n    {{{ -2442,  -4876,  -3553}, 0, { -7036,   -116}, {0x59, 0x47, 0xcb, 0xff}}},\n};\n\n// 0x07008BF0 - 0x07008CF0\nstatic const Vtx ccm_seg7_vertex_07008BF0[] = {\n    {{{   315,  -4342,   6589}, 0, {  7114,   1006}, {0x01, 0x02, 0x7e, 0xff}}},\n    {{{   826,  -4556,   6579}, 0, {-11332,    576}, {0x30, 0x6f, 0x22, 0xff}}},\n    {{{   314,  -4332,   6579}, 0, {  7258,    576}, {0x32, 0x74, 0xff, 0xff}}},\n    {{{   314,  -4342,   6569}, 0, {  7128,    696}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{   826,  -4566,   6569}, 0, {-11462,    696}, {0x11, 0x27, 0x89, 0xff}}},\n    {{{   826,  -4576,   6579}, 0, {-11606,   1126}, {0xd0, 0x91, 0xdc, 0xff}}},\n    {{{   314,  -4352,   6579}, 0, {  6984,   1126}, {0xce, 0x8c, 0x01, 0xff}}},\n    {{{   827,  -4566,   6589}, 0, {-11476,   1006}, {0xf0, 0xdb, 0x78, 0xff}}},\n    {{{  -197,  -4118,   6569}, 0, {  9346,    680}, {0x01, 0x00, 0x82, 0xff}}},\n    {{{   314,  -4342,   6569}, 0, { -9244,    680}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{   314,  -4352,   6579}, 0, { -9388,   1110}, {0xce, 0x8c, 0x01, 0xff}}},\n    {{{  -197,  -4128,   6579}, 0, {  9202,   1110}, {0xc9, 0x8e, 0x01, 0xff}}},\n    {{{  -197,  -4108,   6579}, 0, {  9476,    560}, {0x37, 0x72, 0xfe, 0xff}}},\n    {{{  -196,  -4118,   6589}, 0, {  9332,    990}, {0x00, 0x03, 0x7e, 0xff}}},\n    {{{   314,  -4332,   6579}, 0, { -9114,    560}, {0x32, 0x74, 0xff, 0xff}}},\n    {{{   315,  -4342,   6589}, 0, { -9258,    990}, {0x01, 0x02, 0x7e, 0xff}}},\n};\n\n// 0x07008CF0 - 0x07008DD0\nstatic const Vtx ccm_seg7_vertex_07008CF0[] = {\n    {{{  -709,  -3843,   6569}, 0, {  7280,    700}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{  -197,  -4128,   6579}, 0, {-12224,   1112}, {0xc9, 0x8e, 0x01, 0xff}}},\n    {{{  -709,  -3853,   6579}, 0, {  7112,   1112}, {0xc4, 0x91, 0x01, 0xff}}},\n    {{{  -197,  -4118,   6569}, 0, {-12056,    700}, {0x01, 0x00, 0x82, 0xff}}},\n    {{{  -709,  -3833,   6579}, 0, {  7436,    572}, {0x3c, 0x6f, 0x00, 0xff}}},\n    {{{  -197,  -4108,   6579}, 0, {-11900,    572}, {0x37, 0x72, 0xfe, 0xff}}},\n    {{{  -196,  -4118,   6589}, 0, {  9332,    990}, {0x00, 0x03, 0x7e, 0xff}}},\n    {{{   315,  -4342,   6589}, 0, { -9258,    990}, {0x01, 0x02, 0x7e, 0xff}}},\n    {{{   314,  -4332,   6579}, 0, { -9114,    560}, {0x32, 0x74, 0xff, 0xff}}},\n    {{{ -1220,  -3568,   6589}, 0, { 11250,    990}, {0xfe, 0x02, 0x7e, 0xff}}},\n    {{{  -709,  -3833,   6579}, 0, { -7918,    576}, {0x3c, 0x6f, 0x00, 0xff}}},\n    {{{ -1221,  -3557,   6579}, 0, { 11418,    576}, {0x44, 0x6b, 0xfd, 0xff}}},\n    {{{  -196,  -4118,   6589}, 0, {-12068,    986}, {0x00, 0x03, 0x7e, 0xff}}},\n    {{{  -708,  -3843,   6589}, 0, {  7268,    986}, {0x01, 0x02, 0x7e, 0xff}}},\n};\n\n// 0x07008DD0 - 0x07008ED0\nstatic const Vtx ccm_seg7_vertex_07008DD0[] = {\n    {{{ -1221,  -3568,   6569}, 0, { 11264,    704}, {0x02, 0xfe, 0x82, 0xff}}},\n    {{{  -709,  -3843,   6569}, 0, { -8072,    704}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{  -709,  -3853,   6579}, 0, { -8240,   1116}, {0xc4, 0x91, 0x01, 0xff}}},\n    {{{ -1221,  -3578,   6579}, 0, { 11096,   1116}, {0xbc, 0x95, 0x02, 0xff}}},\n    {{{ -1221,  -3557,   6579}, 0, { 11418,    576}, {0x44, 0x6b, 0xfd, 0xff}}},\n    {{{  -709,  -3833,   6579}, 0, { -7918,    576}, {0x3c, 0x6f, 0x00, 0xff}}},\n    {{{  -708,  -3843,   6589}, 0, { -8086,    990}, {0x01, 0x02, 0x7e, 0xff}}},\n    {{{ -1220,  -3568,   6589}, 0, { 11250,    990}, {0xfe, 0x02, 0x7e, 0xff}}},\n    {{{ -1733,  -3190,   6569}, 0, {  8920,    736}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1221,  -3568,   6569}, 0, {-12244,    736}, {0x02, 0xfe, 0x82, 0xff}}},\n    {{{ -1221,  -3578,   6579}, 0, {-12452,   1114}, {0xbc, 0x95, 0x02, 0xff}}},\n    {{{ -1733,  -3200,   6579}, 0, {  8712,   1114}, {0xb5, 0x9a, 0x01, 0xff}}},\n    {{{ -1733,  -3180,   6579}, 0, {  9116,    610}, {0x4b, 0x66, 0xfd, 0xff}}},\n    {{{ -1221,  -3557,   6579}, 0, {-12048,    610}, {0x44, 0x6b, 0xfd, 0xff}}},\n    {{{ -1220,  -3568,   6589}, 0, {-12256,    990}, {0xfe, 0x02, 0x7e, 0xff}}},\n    {{{ -1732,  -3190,   6589}, 0, {  8908,    990}, {0x02, 0x03, 0x7e, 0xff}}},\n};\n\n// 0x07008ED0 - 0x07008FD0\nstatic const Vtx ccm_seg7_vertex_07008ED0[] = {\n    {{{ -2245,  -2812,   6569}, 0, {  7566,    736}, {0x02, 0x00, 0x82, 0xff}}},\n    {{{ -1733,  -3190,   6569}, 0, {-13598,    736}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1733,  -3200,   6579}, 0, {-13806,   1114}, {0xb5, 0x9a, 0x01, 0xff}}},\n    {{{ -2245,  -2823,   6579}, 0, {  7358,   1114}, {0xb2, 0x9d, 0x02, 0xff}}},\n    {{{ -2245,  -2802,   6579}, 0, {  7762,    610}, {0x4e, 0x63, 0xff, 0xff}}},\n    {{{ -1732,  -3190,   6589}, 0, {  8908,    990}, {0x02, 0x03, 0x7e, 0xff}}},\n    {{{ -1220,  -3568,   6589}, 0, {-12256,    990}, {0xfe, 0x02, 0x7e, 0xff}}},\n    {{{ -1221,  -3557,   6579}, 0, {-12048,    610}, {0x44, 0x6b, 0xfd, 0xff}}},\n    {{{ -1733,  -3180,   6579}, 0, {  9116,    610}, {0x4b, 0x66, 0xfd, 0xff}}},\n    {{{ -2244,  -2812,   6589}, 0, {  7554,    990}, {0x02, 0x05, 0x7e, 0xff}}},\n    {{{ -1733,  -3180,   6579}, 0, {-13400,    610}, {0x4b, 0x66, 0xfd, 0xff}}},\n    {{{ -1732,  -3190,   6589}, 0, {-13608,    990}, {0x02, 0x03, 0x7e, 0xff}}},\n    {{{ -2757,  -2384,   6569}, 0, { 13342,    746}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{ -2245,  -2823,   6579}, 0, { -9098,   1108}, {0xb2, 0x9d, 0x02, 0xff}}},\n    {{{ -2757,  -2394,   6579}, 0, { 13118,   1108}, {0xaf, 0x9f, 0x03, 0xff}}},\n    {{{ -2245,  -2812,   6569}, 0, { -8874,    746}, {0x02, 0x00, 0x82, 0xff}}},\n};\n\n// 0x07008FD0 - 0x070090B0\nstatic const Vtx ccm_seg7_vertex_07008FD0[] = {\n    {{{ -2757,  -2373,   6579}, 0, { 13554,    626}, {0x51, 0x61, 0xfe, 0xff}}},\n    {{{ -2245,  -2812,   6569}, 0, { -8874,    746}, {0x02, 0x00, 0x82, 0xff}}},\n    {{{ -2757,  -2384,   6569}, 0, { 13342,    746}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{ -2245,  -2802,   6579}, 0, { -8662,    626}, {0x4e, 0x63, 0xff, 0xff}}},\n    {{{ -2244,  -2812,   6589}, 0, {  7554,    990}, {0x02, 0x05, 0x7e, 0xff}}},\n    {{{ -1732,  -3190,   6589}, 0, {-13608,    990}, {0x02, 0x03, 0x7e, 0xff}}},\n    {{{ -1733,  -3180,   6579}, 0, {-13400,    610}, {0x4b, 0x66, 0xfd, 0xff}}},\n    {{{ -3268,  -1955,   6589}, 0, { 22186,    990}, {0x21, 0x28, 0x73, 0xff}}},\n    {{{ -2757,  -2373,   6579}, 0, {   192,    626}, {0x51, 0x61, 0xfe, 0xff}}},\n    {{{ -3269,  -1945,   6579}, 0, { 22410,    626}, {0x4e, 0x5d, 0xde, 0xff}}},\n    {{{ -2757,  -2394,   6579}, 0, { 13118,   1108}, {0xaf, 0x9f, 0x03, 0xff}}},\n    {{{ -2245,  -2823,   6579}, 0, { -9098,   1108}, {0xb2, 0x9d, 0x02, 0xff}}},\n    {{{ -2244,  -2812,   6589}, 0, { -8886,    990}, {0x02, 0x05, 0x7e, 0xff}}},\n    {{{ -2756,  -2384,   6589}, 0, { 13330,    990}, {0x01, 0x02, 0x7e, 0xff}}},\n};\n\n// 0x070090B0 - 0x070091A0\nstatic const Vtx ccm_seg7_vertex_070090B0[] = {\n    {{{ -3269,  -1955,   6569}, 0, { 22196,    746}, {0xe0, 0xda, 0x8c, 0xff}}},\n    {{{ -2757,  -2394,   6579}, 0, {  -244,   1108}, {0xaf, 0x9f, 0x03, 0xff}}},\n    {{{ -3269,  -1965,   6579}, 0, { 21972,   1108}, {0xb2, 0xa3, 0x23, 0xff}}},\n    {{{ -2757,  -2384,   6569}, 0, {   -20,    746}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{ -3269,  -1945,   6579}, 0, { 22410,    626}, {0x4e, 0x5d, 0xde, 0xff}}},\n    {{{ -2757,  -2373,   6579}, 0, {   192,    626}, {0x51, 0x61, 0xfe, 0xff}}},\n    {{{ -2756,  -2384,   6589}, 0, {     0,    990}, {0x01, 0x02, 0x7e, 0xff}}},\n    {{{ -3268,  -1955,   6589}, 0, { 22186,    990}, {0x21, 0x28, 0x73, 0xff}}},\n    {{{  -708,  -3843,   6589}, 0, {  7268,    986}, {0x01, 0x02, 0x7e, 0xff}}},\n    {{{  -196,  -4118,   6589}, 0, {-12068,    986}, {0x00, 0x03, 0x7e, 0xff}}},\n    {{{  -197,  -4108,   6579}, 0, {-11900,    572}, {0x37, 0x72, 0xfe, 0xff}}},\n    {{{   314,  -4332,   6272}, 0, {  7272,  -4158}, {0x32, 0x74, 0x00, 0xff}}},\n    {{{   826,  -4556,   6272}, 0, {-11318,  -4158}, {0x30, 0x6f, 0x25, 0xff}}},\n    {{{   826,  -4566,   6262}, 0, {-11448,  -4036}, {0x11, 0x27, 0x89, 0xff}}},\n    {{{  -709,  -3833,   6579}, 0, {  7436,    572}, {0x3c, 0x6f, 0x00, 0xff}}},\n};\n\n// 0x070091A0 - 0x070092A0\nstatic const Vtx ccm_seg7_vertex_070091A0[] = {\n    {{{ -2756,  -2384,   6589}, 0, { 13330,    990}, {0x01, 0x02, 0x7e, 0xff}}},\n    {{{ -2244,  -2812,   6589}, 0, { -8886,    990}, {0x02, 0x05, 0x7e, 0xff}}},\n    {{{ -2245,  -2802,   6579}, 0, { -8662,    626}, {0x4e, 0x63, 0xff, 0xff}}},\n    {{{ -2757,  -2373,   6579}, 0, { 13554,    626}, {0x51, 0x61, 0xfe, 0xff}}},\n    {{{   314,  -4332,   6272}, 0, {  7272,  -4158}, {0x32, 0x74, 0x00, 0xff}}},\n    {{{   826,  -4566,   6262}, 0, {-11448,  -4036}, {0x11, 0x27, 0x89, 0xff}}},\n    {{{   314,  -4342,   6262}, 0, {  7142,  -4036}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{   826,  -4576,   6272}, 0, {-11592,  -3604}, {0xd0, 0x91, 0xdb, 0xff}}},\n    {{{   314,  -4352,   6272}, 0, {  6998,  -3604}, {0xce, 0x8c, 0x00, 0xff}}},\n    {{{  -197,  -4118,   6282}, 0, {  9346,  -3742}, {0xff, 0x00, 0x7e, 0xff}}},\n    {{{   314,  -4332,   6272}, 0, { -9100,  -4174}, {0x32, 0x74, 0x00, 0xff}}},\n    {{{  -197,  -4108,   6272}, 0, {  9490,  -4174}, {0x37, 0x72, 0x00, 0xff}}},\n    {{{   826,  -4566,   6282}, 0, {-11462,  -3726}, {0xef, 0xd9, 0x77, 0xff}}},\n    {{{   314,  -4342,   6282}, 0, {  7128,  -3726}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{   314,  -4342,   6262}, 0, { -9230,  -4052}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{  -197,  -4118,   6262}, 0, {  9360,  -4052}, {0x01, 0x00, 0x82, 0xff}}},\n};\n\n// 0x070092A0 - 0x070093A0\nstatic const Vtx ccm_seg7_vertex_070092A0[] = {\n    {{{  -197,  -4118,   6262}, 0, {  9360,  -4052}, {0x01, 0x00, 0x82, 0xff}}},\n    {{{   314,  -4342,   6262}, 0, { -9230,  -4052}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{   314,  -4352,   6272}, 0, { -9374,  -3620}, {0xce, 0x8c, 0x00, 0xff}}},\n    {{{  -197,  -4128,   6272}, 0, {  9216,  -3620}, {0xc9, 0x8e, 0x00, 0xff}}},\n    {{{  -197,  -4108,   6272}, 0, {  9490,  -4174}, {0x37, 0x72, 0x00, 0xff}}},\n    {{{   314,  -4332,   6272}, 0, { -9100,  -4174}, {0x32, 0x74, 0x00, 0xff}}},\n    {{{   314,  -4342,   6282}, 0, { -9244,  -3742}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{  -197,  -4118,   6282}, 0, {  9346,  -3742}, {0xff, 0x00, 0x7e, 0xff}}},\n    {{{  -709,  -3833,   6272}, 0, {  7448,  -3818}, {0x3c, 0x6f, 0x00, 0xff}}},\n    {{{  -197,  -4118,   6262}, 0, {-12042,  -3690}, {0x01, 0x00, 0x82, 0xff}}},\n    {{{  -709,  -3843,   6262}, 0, {  7294,  -3690}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{  -197,  -4128,   6272}, 0, {-12210,  -3276}, {0xc9, 0x8e, 0x00, 0xff}}},\n    {{{  -709,  -3853,   6272}, 0, {  7126,  -3276}, {0xc4, 0x91, 0x00, 0xff}}},\n    {{{  -197,  -4108,   6272}, 0, {-11888,  -3818}, {0x37, 0x72, 0x00, 0xff}}},\n    {{{  -197,  -4118,   6282}, 0, {-12056,  -3404}, {0xff, 0x00, 0x7e, 0xff}}},\n    {{{  -709,  -3843,   6282}, 0, {  7280,  -3404}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070093A0 - 0x070094A0\nstatic const Vtx ccm_seg7_vertex_070093A0[] = {\n    {{{ -1221,  -3557,   6272}, 0, { 11432,  -3814}, {0x44, 0x6b, 0x00, 0xff}}},\n    {{{  -709,  -3843,   6262}, 0, { -8060,  -3688}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{ -1221,  -3568,   6262}, 0, { 11276,  -3688}, {0x02, 0xfe, 0x82, 0xff}}},\n    {{{  -709,  -3853,   6272}, 0, { -8228,  -3274}, {0xc4, 0x91, 0x00, 0xff}}},\n    {{{ -1221,  -3578,   6272}, 0, { 11108,  -3274}, {0xbc, 0x95, 0x00, 0xff}}},\n    {{{  -709,  -3843,   6282}, 0, {  7280,  -3404}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -197,  -4118,   6282}, 0, {-12056,  -3404}, {0xff, 0x00, 0x7e, 0xff}}},\n    {{{  -197,  -4108,   6272}, 0, {-11888,  -3818}, {0x37, 0x72, 0x00, 0xff}}},\n    {{{  -709,  -3833,   6272}, 0, {  7448,  -3818}, {0x3c, 0x6f, 0x00, 0xff}}},\n    {{{ -1221,  -3568,   6282}, 0, { 11264,  -3400}, {0xfc, 0x00, 0x7e, 0xff}}},\n    {{{  -709,  -3833,   6272}, 0, { -7904,  -3814}, {0x3c, 0x6f, 0x00, 0xff}}},\n    {{{  -709,  -3843,   6282}, 0, { -8072,  -3400}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1733,  -3180,   6272}, 0, {  9128,  -3322}, {0x4b, 0x66, 0x00, 0xff}}},\n    {{{ -1221,  -3568,   6262}, 0, {-12232,  -3196}, {0x02, 0xfe, 0x82, 0xff}}},\n    {{{ -1733,  -3190,   6262}, 0, {  8930,  -3196}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1221,  -3578,   6272}, 0, {-12440,  -2816}, {0xbc, 0x95, 0x00, 0xff}}},\n};\n\n// 0x070094A0 - 0x070095A0\nstatic const Vtx ccm_seg7_vertex_070094A0[] = {\n    {{{ -1733,  -3190,   6262}, 0, {  8930,  -3196}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1221,  -3578,   6272}, 0, {-12440,  -2816}, {0xbc, 0x95, 0x00, 0xff}}},\n    {{{ -1733,  -3200,   6272}, 0, {  8722,  -2816}, {0xb5, 0x9a, 0x00, 0xff}}},\n    {{{ -1733,  -3180,   6272}, 0, {  9128,  -3322}, {0x4b, 0x66, 0x00, 0xff}}},\n    {{{ -1221,  -3557,   6272}, 0, {-12036,  -3322}, {0x44, 0x6b, 0x00, 0xff}}},\n    {{{ -1221,  -3568,   6262}, 0, {-12232,  -3196}, {0x02, 0xfe, 0x82, 0xff}}},\n    {{{ -1221,  -3568,   6282}, 0, { 11264,  -3400}, {0xfc, 0x00, 0x7e, 0xff}}},\n    {{{  -709,  -3843,   6282}, 0, { -8072,  -3400}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -709,  -3833,   6272}, 0, { -7904,  -3814}, {0x3c, 0x6f, 0x00, 0xff}}},\n    {{{ -2245,  -2812,   6282}, 0, {  7566,  -2942}, {0x00, 0x02, 0x7e, 0xff}}},\n    {{{ -1733,  -3180,   6272}, 0, {-13390,  -3322}, {0x4b, 0x66, 0x00, 0xff}}},\n    {{{ -2245,  -2802,   6272}, 0, {  7774,  -3322}, {0x4e, 0x63, 0x00, 0xff}}},\n    {{{ -1221,  -3568,   6282}, 0, {-12244,  -2942}, {0xfc, 0x00, 0x7e, 0xff}}},\n    {{{ -1733,  -3190,   6282}, 0, {  8920,  -2942}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1733,  -3190,   6262}, 0, {-13586,  -3196}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2245,  -2812,   6262}, 0, {  7578,  -3196}, {0x02, 0x00, 0x82, 0xff}}},\n};\n\n// 0x070095A0 - 0x070096A0\nstatic const Vtx ccm_seg7_vertex_070095A0[] = {\n    {{{ -2245,  -2812,   6262}, 0, {  7578,  -3196}, {0x02, 0x00, 0x82, 0xff}}},\n    {{{ -1733,  -3190,   6262}, 0, {-13586,  -3196}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1733,  -3200,   6272}, 0, {-13794,  -2816}, {0xb5, 0x9a, 0x00, 0xff}}},\n    {{{ -2245,  -2823,   6272}, 0, {  7370,  -2816}, {0xb2, 0x9d, 0x00, 0xff}}},\n    {{{ -2245,  -2802,   6272}, 0, {  7774,  -3322}, {0x4e, 0x63, 0x00, 0xff}}},\n    {{{ -1733,  -3180,   6272}, 0, {-13390,  -3322}, {0x4b, 0x66, 0x00, 0xff}}},\n    {{{ -1733,  -3190,   6282}, 0, {-13598,  -2942}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2245,  -2812,   6282}, 0, {  7566,  -2942}, {0x00, 0x02, 0x7e, 0xff}}},\n    {{{ -2757,  -2373,   6272}, 0, { 13566,  -3152}, {0x51, 0x61, 0x00, 0xff}}},\n    {{{ -2245,  -2812,   6262}, 0, { -8864,  -3032}, {0x02, 0x00, 0x82, 0xff}}},\n    {{{ -2757,  -2384,   6262}, 0, { 13352,  -3032}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{ -2245,  -2823,   6272}, 0, { -9088,  -2666}, {0xb2, 0x9d, 0x00, 0xff}}},\n    {{{ -2757,  -2394,   6272}, 0, { 13128,  -2666}, {0xaf, 0x9f, 0x00, 0xff}}},\n    {{{ -2245,  -2802,   6272}, 0, { -8650,  -3152}, {0x4e, 0x63, 0x00, 0xff}}},\n    {{{ -2245,  -2812,   6282}, 0, { -8874,  -2788}, {0x00, 0x02, 0x7e, 0xff}}},\n    {{{ -2757,  -2384,   6282}, 0, { 13342,  -2788}, {0xff, 0xff, 0x7e, 0xff}}},\n};\n\n// 0x070096A0 - 0x070097A0\nstatic const Vtx ccm_seg7_vertex_070096A0[] = {\n    {{{ -3269,  -1945,   6272}, 0, { 22422,  -3152}, {0x4e, 0x5d, 0xdf, 0xff}}},\n    {{{ -2757,  -2384,   6262}, 0, {   -10,  -3032}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{ -3269,  -1955,   6262}, 0, { 22208,  -3030}, {0xe0, 0xda, 0x8c, 0xff}}},\n    {{{ -2757,  -2394,   6272}, 0, {  -232,  -2666}, {0xaf, 0x9f, 0x00, 0xff}}},\n    {{{ -3269,  -1965,   6272}, 0, { 21984,  -2666}, {0xb1, 0xa2, 0x1f, 0xff}}},\n    {{{ -2757,  -2384,   6282}, 0, { 13342,  -2788}, {0xff, 0xff, 0x7e, 0xff}}},\n    {{{ -2245,  -2812,   6282}, 0, { -8874,  -2788}, {0x00, 0x02, 0x7e, 0xff}}},\n    {{{ -2245,  -2802,   6272}, 0, { -8650,  -3152}, {0x4e, 0x63, 0x00, 0xff}}},\n    {{{ -2757,  -2373,   6272}, 0, { 13566,  -3152}, {0x51, 0x61, 0x00, 0xff}}},\n    {{{ -2757,  -2373,   6272}, 0, {   204,  -3152}, {0x51, 0x61, 0x00, 0xff}}},\n    {{{ -2757,  -2384,   6282}, 0, {   -20,  -2788}, {0xff, 0xff, 0x7e, 0xff}}},\n    {{{ -3269,  -1955,   6282}, 0, { 22196,  -2788}, {0x1e, 0x25, 0x75, 0xff}}},\n    {{{   314,  -4342,   6282}, 0, {  7128,  -3726}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{   826,  -4566,   6282}, 0, {-11462,  -3726}, {0xef, 0xd9, 0x77, 0xff}}},\n    {{{   826,  -4556,   6272}, 0, {-11318,  -4158}, {0x30, 0x6f, 0x25, 0xff}}},\n    {{{   314,  -4332,   6272}, 0, {  7272,  -4158}, {0x32, 0x74, 0x00, 0xff}}},\n};\n\n// 0x070097A0 - 0x07009820\nstatic const Vtx ccm_seg7_vertex_070097A0[] = {\n    {{{ -1733,  -3190,   6282}, 0, {  8920,  -2942}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1221,  -3568,   6282}, 0, {-12244,  -2942}, {0xfc, 0x00, 0x7e, 0xff}}},\n    {{{ -1221,  -3557,   6272}, 0, {-12036,  -3322}, {0x44, 0x6b, 0x00, 0xff}}},\n    {{{ -3269,  -1955,   6282}, 0, { 22196,  -2788}, {0x1e, 0x25, 0x75, 0xff}}},\n    {{{ -2757,  -2384,   6282}, 0, {   -20,  -2788}, {0xff, 0xff, 0x7e, 0xff}}},\n    {{{ -2757,  -2373,   6272}, 0, {   204,  -3152}, {0x51, 0x61, 0x00, 0xff}}},\n    {{{ -3269,  -1945,   6272}, 0, { 22422,  -3152}, {0x4e, 0x5d, 0xdf, 0xff}}},\n    {{{ -1733,  -3180,   6272}, 0, {  9128,  -3322}, {0x4b, 0x66, 0x00, 0xff}}},\n};\n\n// 0x07009820 - 0x07009DD0\nstatic const Gfx ccm_seg7_dl_07009820[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ccm_seg7_lights_07005300.l, 1),\n    gsSPLight(&ccm_seg7_lights_07005300.a, 2),\n    gsSPVertex(ccm_seg7_vertex_07005360, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  7,  6, 0x0),\n    gsSP2Triangles( 3,  5,  8, 0x0,  3,  8,  9, 0x0),\n    gsSP2Triangles( 3,  9, 10, 0x0,  2, 11, 12, 0x0),\n    gsSP2Triangles(11,  2,  1, 0x0, 13, 14, 15, 0x0),\n    gsSP1Triangle( 1,  0, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07005460, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 3,  4,  2, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  6,  5, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(11, 10, 12, 0x0, 10,  9, 13, 0x0),\n    gsSP1Triangle(14,  9, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07005560, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  5,  7, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0,  4, 12, 15, 0x0),\n    gsSP1Triangle(12, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07005660, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  1, 0x0),\n    gsSP2Triangles( 7,  1,  3, 0x0,  0,  9, 10, 0x0),\n    gsSP2Triangles( 0,  2, 11, 0x0,  4, 12, 13, 0x0),\n    gsSP1Triangle( 4, 14,  5, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07005750, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 10,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07005840, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  7,  5,  4, 0x0),\n    gsSP2Triangles( 7,  8,  5, 0x0,  2,  1,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07005920, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  5,  8, 0x0),\n    gsSP2Triangles( 9,  5,  6, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(12, 13, 10, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07005A00, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10,  0, 0x0),\n    gsSP2Triangles(11, 12,  0, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07005B00, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 3,  4,  1, 0x0,  1,  4,  5, 0x0),\n    gsSP2Triangles( 6,  4,  3, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10, 11, 0x0,  7,  9, 12, 0x0),\n    gsSP2Triangles( 9,  8, 13, 0x0,  2, 14,  0, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07005BF0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  3,  5,  6, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 6,  5, 10, 0x0,  9,  6, 10, 0x0),\n    gsSP2Triangles(11,  5,  4, 0x0, 12,  7, 10, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 13, 12, 11, 0x0),\n    gsSP2Triangles( 7, 12, 13, 0x0,  5, 12, 10, 0x0),\n    gsSP2Triangles(14,  8,  7, 0x0, 14,  7, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07005CE0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  7,  6, 0x0),\n    gsSP2Triangles( 0,  2,  7, 0x0,  9,  0,  7, 0x0),\n    gsSP2Triangles( 7,  2,  8, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(10, 12,  1, 0x0,  1, 12,  2, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07005DE0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  2,  5,  3, 0x0),\n    gsSP2Triangles( 6,  5,  7, 0x0,  6,  3,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11, 12, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0,  9, 13, 10, 0x0),\n    gsSP2Triangles(13, 14, 10, 0x0, 14, 15, 10, 0x0),\n    gsSP2Triangles(15, 11, 10, 0x0,  6,  7, 12, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07005EE0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  1, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(10,  9, 11, 0x0,  8, 12,  9, 0x0),\n    gsSP1Triangle( 3, 13,  4, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07005FC0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  2,  1, 13, 0x0),\n    gsSP2Triangles( 1, 14, 13, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070060C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 5,  3,  0, 0x0,  5,  0,  6, 0x0),\n    gsSP2Triangles( 7,  0,  8, 0x0,  0,  2,  8, 0x0),\n    gsSP2Triangles( 0,  7,  6, 0x0,  5,  9, 10, 0x0),\n    gsSP2Triangles( 6, 11,  5, 0x0,  2, 12,  8, 0x0),\n    gsSP2Triangles(13, 12,  2, 0x0, 13,  2, 14, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0, 15, 11, 14, 0x0),\n    gsSP1Triangle(11, 15,  5, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070061C0, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  6,  5,  8, 0x0),\n    gsSP2Triangles( 4,  5,  7, 0x0,  8,  3,  2, 0x0),\n    gsSPLight(&ccm_seg7_lights_07005318.l, 1),\n    gsSPLight(&ccm_seg7_lights_07005318.a, 2),\n    gsSPVertex(ccm_seg7_vertex_07006250, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  0,  3,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009DD0 - 0x07009F28\nstatic const Gfx ccm_seg7_dl_07009DD0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09006000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ccm_seg7_lights_07005300.l, 1),\n    gsSPLight(&ccm_seg7_lights_07005300.a, 2),\n    gsSPVertex(ccm_seg7_vertex_070062B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  2, 10,  7, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 13,  2, 0x0),\n    gsSP2Triangles( 2, 13, 10, 0x0,  0, 14,  1, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070063A0, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 4,  6,  5, 0x0),\n    gsSPLight(&ccm_seg7_lights_07005330.l, 1),\n    gsSPLight(&ccm_seg7_lights_07005330.a, 2),\n    gsSPVertex(ccm_seg7_vertex_07006410, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  0,  3, 0x0,  6,  7,  3, 0x0),\n    gsSP2Triangles( 2,  6,  3, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  8,  5, 0x0,  4,  2,  8, 0x0),\n    gsSP2Triangles( 8,  2,  1, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(10, 12, 11, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07006510, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 3,  8,  9, 0x0,  1,  3,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009F28 - 0x0700A248\nstatic const Gfx ccm_seg7_dl_07009F28[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ccm_seg7_lights_07005300.l, 1),\n    gsSPLight(&ccm_seg7_lights_07005300.a, 2),\n    gsSPVertex(ccm_seg7_vertex_070065B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 4,  5,  0, 0x0,  2,  6,  0, 0x0),\n    gsSP2Triangles( 7,  8,  0, 0x0,  0,  8,  9, 0x0),\n    gsSP2Triangles( 0,  9, 10, 0x0,  3,  0, 11, 0x0),\n    gsSP2Triangles(12,  7,  0, 0x0,  0,  6, 12, 0x0),\n    gsSP2Triangles( 0,  5,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070066B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11,  7, 0x0, 10,  7, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070067B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  8,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070068B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  5,  7, 0x0),\n    gsSP2Triangles( 6,  9,  7, 0x0, 10, 11,  7, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(15, 12, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070069B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 14, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07006AA0, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  5,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  8, 10, 0x0),\n    gsSP1Triangle(12, 11, 10, 0x0),\n    gsSPLight(&ccm_seg7_lights_07005318.l, 1),\n    gsSPLight(&ccm_seg7_lights_07005318.a, 2),\n    gsSPVertex(ccm_seg7_vertex_07006B70, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  6,  3, 0x0),\n    gsSP2Triangles( 7,  8,  6, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0,  2, 12,  9, 0x0),\n    gsSP2Triangles( 2,  1, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07006C70, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10,  8,  7, 0x0),\n    gsSP2Triangles(10,  7, 11, 0x0, 10, 12, 13, 0x0),\n    gsSPLight(&ccm_seg7_lights_07005330.l, 1),\n    gsSPLight(&ccm_seg7_lights_07005330.a, 2),\n    gsSPVertex(ccm_seg7_vertex_07006D50, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07006E30, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A248 - 0x0700AB00\nstatic const Gfx ccm_seg7_dl_0700A248[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ccm_seg7_lights_07005300.l, 1),\n    gsSPLight(&ccm_seg7_lights_07005300.a, 2),\n    gsSPVertex(ccm_seg7_vertex_07006F10, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11,  2, 12, 0x0),\n    gsSP2Triangles( 2,  1, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07007010, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  6,  7,  5, 0x0),\n    gsSP2Triangles( 7,  3,  5, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0,  9, 12, 10, 0x0),\n    gsSP2Triangles(13, 12, 11, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070070F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  5,  1,  0, 0x0),\n    gsSP2Triangles( 5,  4,  1, 0x0,  6,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  4, 0x0,  4,  7,  3, 0x0),\n    gsSP2Triangles( 7,  2,  3, 0x0,  2,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070071F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  0,  5,  6, 0x0),\n    gsSP2Triangles( 0,  7,  4, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 14, 12, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070072E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  5,  4,  0, 0x0),\n    gsSP2Triangles( 5,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070073E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(11,  8, 12, 0x0, 13, 11, 12, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0, 14,  9, 11, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070074D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  4,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  4,  6, 11, 0x0),\n    gsSP2Triangles(12,  5,  7, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070075D0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  3,  6, 0x0),\n    gsSP2Triangles( 4,  3,  8, 0x0,  7,  9,  3, 0x0),\n    gsSP2Triangles( 4,  8, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070076B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070077A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0, 11, 10,  8, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070078A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070079A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  4,  3, 0x0),\n    gsSP2Triangles( 7,  8,  4, 0x0,  6,  5,  9, 0x0),\n    gsSP2Triangles( 6,  9, 10, 0x0, 11,  8,  7, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07007A90, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07007B80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 0,  3,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14,  8, 10, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07007C70, 14, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSP1Triangle( 3,  4,  5, 0x0),\n    gsSP1Triangle( 3,  6,  4, 0x0),\n    gsSP1Triangle( 7,  8,  9, 0x0),\n    gsSP1Triangle( 7,  9, 10, 0x0),\n    gsSP1Triangle( 0,  2, 11, 0x0),\n    gsSP1Triangle( 0, 11, 12, 0x0),\n    gsSP1Triangle( 0, 12, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07007D50, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  6,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  3,  5, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07007E30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  2,  1, 0x0,  4,  5,  2, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12,  7,  6, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07007F30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  5,  2,  4, 0x0),\n    gsSP2Triangles( 3,  2,  5, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07008030, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12,  8, 0x0),\n    gsSP2Triangles(11,  8, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPLight(&ccm_seg7_lights_07005348.l, 1),\n    gsSPLight(&ccm_seg7_lights_07005348.a, 2),\n    gsSPVertex(ccm_seg7_vertex_07008130, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  5,  1,  4, 0x0),\n    gsSP2Triangles( 5,  6,  2, 0x0,  2,  1,  5, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  8, 10,  9, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 14,  7, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07008230, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPLight(&ccm_seg7_lights_07005318.l, 1),\n    gsSPLight(&ccm_seg7_lights_07005318.a, 2),\n    gsSPVertex(ccm_seg7_vertex_07008260, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0,  7,  5,  8, 0x0),\n    gsSP2Triangles( 5,  7,  3, 0x0,  9,  2, 10, 0x0),\n    gsSP2Triangles( 9,  0,  2, 0x0, 11, 10, 12, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  0, 13,  1, 0x0),\n    gsSP1Triangle( 1, 13, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07008350, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 10, 12, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07008430, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  4,  9, 10, 0x0),\n    gsSP2Triangles( 4,  3,  9, 0x0,  5, 11,  3, 0x0),\n    gsSP2Triangles( 9,  3, 11, 0x0, 12, 10,  9, 0x0),\n    gsSP2Triangles(13,  4, 10, 0x0, 14, 15,  6, 0x0),\n    gsSP1Triangle( 6, 15,  7, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07008530, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07008630, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 3,  5,  6, 0x0),\n    gsSPLight(&ccm_seg7_lights_07005330.l, 1),\n    gsSPLight(&ccm_seg7_lights_07005330.a, 2),\n    gsSPVertex(ccm_seg7_vertex_070086A0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0,  1, 11, 12, 0x0),\n    gsSP2Triangles(11,  1, 13, 0x0,  2,  1, 12, 0x0),\n    gsSP1Triangle( 1,  0, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07008780, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  7, 10, 0x0),\n    gsSP2Triangles( 7,  9,  8, 0x0, 11,  8,  9, 0x0),\n    gsSP2Triangles(11, 12,  8, 0x0,  0,  2, 12, 0x0),\n    gsSP2Triangles(11,  0, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07008880, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 0, 10, 11, 0x0,  5,  4, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07008980, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700AB00 - 0x0700ABF8\nstatic const Gfx ccm_seg7_dl_0700AB00[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09002800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ccm_seg7_lights_07005300.l, 1),\n    gsSPLight(&ccm_seg7_lights_07005300.a, 2),\n    gsSPVertex(ccm_seg7_vertex_07008A20, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  8,  3, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles(10,  0,  2, 0x0,  7, 11,  9, 0x0),\n    gsSP2Triangles( 1, 12,  2, 0x0,  7, 13, 11, 0x0),\n    gsSPLight(&ccm_seg7_lights_07005318.l, 1),\n    gsSPLight(&ccm_seg7_lights_07005318.a, 2),\n    gsSPVertex(ccm_seg7_vertex_07008B00, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  5,  7, 0x0,  0,  6,  7, 0x0),\n    gsSP1Triangle( 0,  2,  6, 0x0),\n    gsSPLight(&ccm_seg7_lights_07005330.l, 1),\n    gsSPLight(&ccm_seg7_lights_07005330.a, 2),\n    gsSPVertex(ccm_seg7_vertex_07008B80, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 2,  6,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700ABF8 - 0x0700B090\nstatic const Gfx ccm_seg7_dl_0700ABF8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ccm_seg7_lights_07005300.l, 1),\n    gsSPLight(&ccm_seg7_lights_07005300.a, 2),\n    gsSPVertex(ccm_seg7_vertex_07008BF0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  2,  4,  3, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  0, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0, 12,  9,  8, 0x0),\n    gsSP2Triangles( 0,  7,  1, 0x0, 13, 14, 12, 0x0),\n    gsSP2Triangles(12, 14,  9, 0x0, 11, 10, 15, 0x0),\n    gsSP1Triangle(11, 15, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07008CF0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  3,  0, 0x0,  4,  5,  3, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 2,  1, 12, 0x0,  2, 12, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07008DD0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  1,  0, 0x0,  4,  5,  1, 0x0),\n    gsSP2Triangles( 3,  2,  6, 0x0,  3,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  7,  6,  5, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0, 12, 13,  9, 0x0),\n    gsSP2Triangles(12,  9,  8, 0x0, 11, 10, 14, 0x0),\n    gsSP1Triangle(11, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07008ED0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  1,  0, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  9, 10,  4, 0x0),\n    gsSP2Triangles( 4, 10,  1, 0x0,  3,  2, 11, 0x0),\n    gsSP2Triangles( 3, 11,  9, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 15, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07008FD0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070090B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  3,  0, 0x0,  4,  5,  3, 0x0),\n    gsSP2Triangles( 2,  1,  6, 0x0,  2,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  7,  6,  5, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0,  8, 10, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070091A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 8,  7, 12, 0x0,  8, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070092A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  1, 0x0,  3,  2,  6, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 7,  6,  5, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles( 8, 13,  9, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(12, 11, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070093A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 2,  1,  3, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  9, 10,  0, 0x0),\n    gsSP2Triangles( 0, 10,  1, 0x0,  4,  3, 11, 0x0),\n    gsSP2Triangles( 4, 11,  9, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(14, 13, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070094A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 2,  1, 12, 0x0,  2, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070095A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  1, 0x0,  3,  2,  6, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 7,  6,  5, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles( 8, 13,  9, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(12, 11, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070096A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 2,  1,  3, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  0,  9,  1, 0x0),\n    gsSP2Triangles( 4,  3, 10, 0x0,  4, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070097A0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  0,  2,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700B090 - 0x0700B118\nconst Gfx ccm_seg7_dl_0700B090[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_07009820),\n    gsSPDisplayList(ccm_seg7_dl_07009DD0),\n    gsSPDisplayList(ccm_seg7_dl_07009F28),\n    gsSPDisplayList(ccm_seg7_dl_0700A248),\n    gsSPDisplayList(ccm_seg7_dl_0700AB00),\n    gsSPDisplayList(ccm_seg7_dl_0700ABF8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ccm/areas/1/10/1.inc.c",
    "content": "// 0x0700FD88 - 0x0700FDA0\nstatic const Lights1 ccm_seg7_lights_0700FD88 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700FDA0 - 0x0700FDB8\nstatic const Lights1 ccm_seg7_lights_0700FDA0 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0x99, 0x99, 0x99, 0x28, 0x28, 0x28\n);\n\n// 0x0700FDB8 - 0x0700FDD0\nstatic const Lights1 ccm_seg7_lights_0700FDB8 = gdSPDefLights1(\n    0x5d, 0x5d, 0x5d,\n    0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28\n);\n\n// 0x0700FDD0 - 0x0700FE10\nstatic const Vtx ccm_seg7_vertex_0700FDD0[] = {\n    {{{  -817,  -1817,   -724}, 0, {  5504,    480}, {0xc0, 0x2a, 0x9c, 0xff}}},\n    {{{  1892,  -2092,   -145}, 0, {     0,    990}, {0x1a, 0x00, 0x84, 0xff}}},\n    {{{  -817,  -2073,   -724}, 0, {  5500,    990}, {0xbb, 0x00, 0x96, 0xff}}},\n    {{{  1892,  -1836,   -145}, 0, {   -28,    480}, {0xdf, 0x57, 0xaa, 0xff}}},\n};\n\n// 0x0700FE10 - 0x0700FEF0\nstatic const Vtx ccm_seg7_vertex_0700FE10[] = {\n    {{{ -2046,  -1278,   1129}, 0, {  7946,    990}, {0x44, 0x21, 0x9b, 0xff}}},\n    {{{ -2046,   1230,   1129}, 0, {  8644,  -3968}, {0x34, 0x00, 0x8d, 0xff}}},\n    {{{  -710,   1029,   1072}, 0, {  5944,  -3946}, {0xfb, 0x00, 0x82, 0xff}}},\n    {{{  -817,  -1817,   -724}, 0, {  1916,    492}, {0xc0, 0x2a, 0x9c, 0xff}}},\n    {{{  -988,  -2065,     76}, 0, {   286,    996}, {0xb3, 0x00, 0x9c, 0xff}}},\n    {{{  -988,  -1809,     76}, 0, {   282,    488}, {0xe7, 0x1b, 0x87, 0xff}}},\n    {{{  -817,  -2073,   -724}, 0, {  1920,   1000}, {0xbb, 0x00, 0x96, 0xff}}},\n    {{{   -67,   -876,   1044}, 0, {  4142,   -358}, {0xf9, 0x9e, 0xb1, 0xff}}},\n    {{{   962,  -1117,   1000}, 0, {  2036,   -168}, {0x15, 0xda, 0x89, 0xff}}},\n    {{{  -513,  -1534,   1063}, 0, {  4840,   1066}, {0x09, 0x48, 0x99, 0xff}}},\n    {{{ -1471,   -894,   1105}, 0, {  6914,     70}, {0xf2, 0xff, 0x82, 0xff}}},\n    {{{   962,    -93,   1000}, 0, {  2322,  -2192}, {0x04, 0x34, 0x8d, 0xff}}},\n    {{{  1275,    410,    986}, 0, {  1844,  -3274}, {0xbc, 0xed, 0x98, 0xff}}},\n    {{{  1275,   1741,    987}, 0, {  2214,  -5906}, {0xa5, 0x00, 0xa9, 0xff}}},\n};\n\n// 0x0700FEF0 - 0x0700FF70\nstatic const Vtx ccm_seg7_vertex_0700FEF0[] = {\n    {{{  1906,   -556,    959}, 0, {   324,  -1540}, {0xac, 0xe0, 0xa7, 0xff}}},\n    {{{   962,    -93,   1000}, 0, {  2322,  -2192}, {0x04, 0x34, 0x8d, 0xff}}},\n    {{{  1275,    410,    986}, 0, {  1844,  -3274}, {0xbc, 0xed, 0x98, 0xff}}},\n    {{{   962,  -1117,   1000}, 0, {  2036,   -168}, {0x15, 0xda, 0x89, 0xff}}},\n    {{{  1906,  -1836,    959}, 0, {     0,    990}, {0xbb, 0x49, 0xb4, 0xff}}},\n    {{{  -513,  -1534,   1063}, 0, {  4840,   1066}, {0x09, 0x48, 0x99, 0xff}}},\n    {{{ -2046,  -1278,   1129}, 0, {  7946,    990}, {0x44, 0x21, 0x9b, 0xff}}},\n    {{{ -1471,   -894,   1105}, 0, {  6914,     70}, {0xf2, 0xff, 0x82, 0xff}}},\n};\n\n// 0x0700FF70 - 0x0700FFB0\nstatic const Vtx ccm_seg7_vertex_0700FF70[] = {\n    {{{   156,    540,   1036}, 0, {   724,    -58}, {0xb1, 0x5b, 0x27, 0xff}}},\n    {{{   633,    498,    922}, 0, {  -226,    168}, {0x7d, 0x11, 0xf4, 0xff}}},\n    {{{   546,    528,     84}, 0, {   -50,   1838}, {0x2e, 0x0b, 0x8b, 0xff}}},\n    {{{  -183,    540,    294}, 0, {  1404,   1420}, {0xa5, 0x4d, 0xd5, 0xff}}},\n};\n\n// 0x0700FFB0 - 0x07010070\nstatic const Vtx ccm_seg7_vertex_0700FFB0[] = {\n    {{{   962,    -93,   1000}, 0, { -5384,  -2838}, {0x04, 0x34, 0x8d, 0xff}}},\n    {{{ -1457,   -890,    550}, 0, {  -552,  -1940}, {0xa9, 0x1c, 0xa9, 0xff}}},\n    {{{ -1471,   -894,   1105}, 0, {  -524,  -3048}, {0xf2, 0xff, 0x82, 0xff}}},\n    {{{  -988,  -1809,     76}, 0, {  3012,   1856}, {0xe7, 0x1b, 0x87, 0xff}}},\n    {{{  1892,  -1836,   -145}, 0, { -2738,   2298}, {0xdf, 0x57, 0xaa, 0xff}}},\n    {{{  -817,  -1817,   -724}, 0, {  2670,   3454}, {0xc0, 0x2a, 0x9c, 0xff}}},\n    {{{  1906,  -1836,    959}, 0, { -2766,     94}, {0xbb, 0x49, 0xb4, 0xff}}},\n    {{{  -988,  -1554,     76}, 0, {  3012,   1856}, {0x10, 0x64, 0xb5, 0xff}}},\n    {{{  -513,  -1534,   1063}, 0, {  2062,   -114}, {0x09, 0x48, 0x99, 0xff}}},\n    {{{ -2047,  -1279,      0}, 0, {  5124,   2006}, {0x3c, 0x4a, 0xad, 0xff}}},\n    {{{ -2046,  -1278,   1129}, 0, {  5124,   -246}, {0x44, 0x21, 0x9b, 0xff}}},\n    {{{   703,   -108,   -178}, 0, { -4864,   -484}, {0x27, 0x2d, 0x90, 0xff}}},\n};\n\n// 0x07010070 - 0x07010160\nstatic const Vtx ccm_seg7_vertex_07010070[] = {\n    {{{  1275,    410,  -1125}, 0, { -3320,  -6720}, {0x87, 0xdd, 0x00, 0xff}}},\n    {{{  1892,   -556,   -145}, 0, {     0,  -3204}, {0x84, 0xe9, 0x01, 0xff}}},\n    {{{  1906,   -556,    959}, 0, {  3644,  -3204}, {0xac, 0xe0, 0xa7, 0xff}}},\n    {{{  1275,    410,    986}, 0, {  3708,  -6736}, {0xbc, 0xed, 0x98, 0xff}}},\n    {{{ -2046,  -1278,   1129}, 0, {     0,    990}, {0x44, 0x21, 0x9b, 0xff}}},\n    {{{ -2047,  -1279,      0}, 0, {  3724,    990}, {0x3c, 0x4a, 0xad, 0xff}}},\n    {{{ -2047,   -767,      0}, 0, {  3724,   -714}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{ -2046,   1230,   1129}, 0, {   -36,  -7356}, {0x34, 0x00, 0x8d, 0xff}}},\n    {{{  -180,    307,    292}, 0, { -2814,   7196}, {0x91, 0xc6, 0xf1, 0xff}}},\n    {{{   546,    528,     84}, 0, { -3508,   9614}, {0x2e, 0x0b, 0x8b, 0xff}}},\n    {{{   156,    307,   1035}, 0, {  -342,   8320}, {0xed, 0x84, 0x0e, 0xff}}},\n    {{{   633,    498,    922}, 0, {  -720,   9906}, {0x7d, 0x11, 0xf4, 0xff}}},\n    {{{ -1457,   -890,    550}, 0, { -1956,   2948}, {0xa9, 0x1c, 0xa9, 0xff}}},\n    {{{  -122,   -664,    -23}, 0, { -3866,   7390}, {0xf6, 0x9f, 0xaf, 0xff}}},\n    {{{   -67,   -876,   1044}, 0, {  -312,   7572}, {0xf9, 0x9e, 0xb1, 0xff}}},\n};\n\n// 0x07010160 - 0x070101A0\nstatic const Vtx ccm_seg7_vertex_07010160[] = {\n    {{{   703,   -108,   -178}, 0, { -4384,  10136}, {0x27, 0x2d, 0x90, 0xff}}},\n    {{{   962,  -1117,   1000}, 0, {  -460,  11000}, {0x15, 0xda, 0x89, 0xff}}},\n    {{{  -122,   -664,    -23}, 0, { -3866,   7390}, {0xf6, 0x9f, 0xaf, 0xff}}},\n    {{{   -67,   -876,   1044}, 0, {  -312,   7572}, {0xf9, 0x9e, 0xb1, 0xff}}},\n};\n\n// 0x070101A0 - 0x07010280\nstatic const Vtx ccm_seg7_vertex_070101A0[] = {\n    {{{  1892,   -556,   -145}, 0, {     0,  -3204}, {0x84, 0xe9, 0x01, 0xff}}},\n    {{{  1892,  -1836,   -145}, 0, {     0,    990}, {0xdf, 0x57, 0xaa, 0xff}}},\n    {{{  1906,  -1836,    959}, 0, {  3644,    990}, {0xbb, 0x49, 0xb4, 0xff}}},\n    {{{  1906,   -556,    959}, 0, {  3644,  -3204}, {0xac, 0xe0, 0xa7, 0xff}}},\n    {{{  1280,   1997,   -869}, 0, { -2468, -11920}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  1275,    410,  -1125}, 0, { -3320,  -6720}, {0x87, 0xdd, 0x00, 0xff}}},\n    {{{  1275,   1741,    987}, 0, {  3708, -11098}, {0xa5, 0x00, 0xa9, 0xff}}},\n    {{{  1275,    410,    986}, 0, {  3708,  -6736}, {0xbc, 0xed, 0x98, 0xff}}},\n    {{{   703,   -108,   -178}, 0, {  5204,    990}, {0x27, 0x2d, 0x90, 0xff}}},\n    {{{   962,    -93,   1000}, 0, {  2152,  -1624}, {0x04, 0x34, 0x8d, 0xff}}},\n    {{{   962,  -1117,   1000}, 0, {     0,    990}, {0x15, 0xda, 0x89, 0xff}}},\n    {{{   546,    528,     84}, 0, { -2558,    990}, {0x2e, 0x0b, 0x8b, 0xff}}},\n    {{{  -180,    307,    292}, 0, {   -54,   1762}, {0x91, 0xc6, 0xf1, 0xff}}},\n    {{{  -183,    540,    294}, 0, {     0,    990}, {0xa5, 0x4d, 0xd5, 0xff}}},\n};\n\n// 0x07010280 - 0x07010320\nstatic const Vtx ccm_seg7_vertex_07010280[] = {\n    {{{  -183,    540,    294}, 0, {     0,    216}, {0xa5, 0x4d, 0xd5, 0xff}}},\n    {{{  -180,    307,    292}, 0, {     0,    990}, {0x91, 0xc6, 0xf1, 0xff}}},\n    {{{   156,    540,   1036}, 0, {  2684,    216}, {0xb1, 0x5b, 0x27, 0xff}}},\n    {{{   156,    307,   1035}, 0, {  2684,    990}, {0xed, 0x84, 0x0e, 0xff}}},\n    {{{   -67,   -876,   1044}, 0, {  -312,   7572}, {0xf9, 0x9e, 0xb1, 0xff}}},\n    {{{ -1471,   -894,   1105}, 0, {  -112,   2904}, {0xf2, 0xff, 0x82, 0xff}}},\n    {{{ -1457,   -890,    550}, 0, { -1956,   2948}, {0xa9, 0x1c, 0xa9, 0xff}}},\n    {{{  -122,   -664,    -23}, 0, { -4832,   1926}, {0xf6, 0x9f, 0xaf, 0xff}}},\n    {{{ -1457,   -890,    550}, 0, {     0,    990}, {0xa9, 0x1c, 0xa9, 0xff}}},\n    {{{   703,   -108,   -178}, 0, { -8050,    990}, {0x27, 0x2d, 0x90, 0xff}}},\n};\n\n// 0x07010320 - 0x07010390\nstatic const Vtx ccm_seg7_vertex_07010320[] = {\n    {{{  -988,  -1809,     76}, 0, { -6786,   -432}, {0xe7, 0x1b, 0x87, 0xff}}},\n    {{{  -988,  -1554,     76}, 0, { -6786,   -670}, {0x10, 0x64, 0xb5, 0xff}}},\n    {{{  1892,  -1836,   -145}, 0, { -6370,  -1418}, {0xdf, 0x57, 0xaa, 0xff}}},\n    {{{  -988,  -2065,     76}, 0, { -6786,   -194}, {0xb3, 0x00, 0x9c, 0xff}}},\n    {{{ -1930,  -1804,     30}, 0, { -7036,   -116}, {0x06, 0xff, 0x82, 0xff}}},\n    {{{ -1930,  -2060,     28}, 0, { -7038,    122}, {0x06, 0x00, 0x82, 0xff}}},\n    {{{ -2047,  -1279,      0}, 0, { -7090,   -568}, {0x3c, 0x4a, 0xad, 0xff}}},\n};\n\n// 0x07010390 - 0x07010480\nstatic const Gfx ccm_seg7_dl_07010390[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ccm_seg7_lights_0700FD88.l, 1),\n    gsSPLight(&ccm_seg7_lights_0700FD88.a, 2),\n    gsSPVertex(ccm_seg7_vertex_0700FDD0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPLight(&ccm_seg7_lights_0700FDA0.l, 1),\n    gsSPLight(&ccm_seg7_lights_0700FDA0.a, 2),\n    gsSPVertex(ccm_seg7_vertex_0700FE10, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 10,  2, 0x0),\n    gsSP2Triangles( 2, 10,  0, 0x0, 12,  2, 13, 0x0),\n    gsSP2Triangles(13,  2,  1, 0x0, 12, 11,  2, 0x0),\n    gsSPLight(&ccm_seg7_lights_0700FDB8.l, 1),\n    gsSPLight(&ccm_seg7_lights_0700FDB8.a, 2),\n    gsSPVertex(ccm_seg7_vertex_0700FEF0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  3,  1,  0, 0x0),\n    gsSP1Triangle( 5,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07010480 - 0x07010518\nstatic const Gfx ccm_seg7_dl_07010480[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09006000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ccm_seg7_lights_0700FDA0.l, 1),\n    gsSPLight(&ccm_seg7_lights_0700FDA0.a, 2),\n    gsSPVertex(ccm_seg7_vertex_0700FF70, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSPLight(&ccm_seg7_lights_0700FDB8.l, 1),\n    gsSPLight(&ccm_seg7_lights_0700FDB8.a, 2),\n    gsSPVertex(ccm_seg7_vertex_0700FFB0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  4,  7, 0x0),\n    gsSP2Triangles( 8,  7,  9, 0x0, 10,  8,  9, 0x0),\n    gsSP1Triangle( 0, 11,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07010518 - 0x07010610\nstatic const Gfx ccm_seg7_dl_07010518[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ccm_seg7_lights_0700FDA0.l, 1),\n    gsSPLight(&ccm_seg7_lights_0700FDA0.a, 2),\n    gsSPVertex(ccm_seg7_vertex_07010070, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07010160, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSPLight(&ccm_seg7_lights_0700FDB8.l, 1),\n    gsSPLight(&ccm_seg7_lights_0700FDB8.a, 2),\n    gsSPVertex(ccm_seg7_vertex_070101A0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07010280, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07010610 - 0x07010660\nstatic const Gfx ccm_seg7_dl_07010610[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09002800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ccm_seg7_vertex_07010320, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 3,  5,  4, 0x0,  0,  4,  6, 0x0),\n    gsSP1Triangle( 1,  0,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07010660 - 0x070106D8\nconst Gfx ccm_seg7_dl_07010660[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_07010390),\n    gsSPDisplayList(ccm_seg7_dl_07010480),\n    gsSPDisplayList(ccm_seg7_dl_07010518),\n    gsSPDisplayList(ccm_seg7_dl_07010610),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ccm/areas/1/10/2.inc.c",
    "content": "// 0x070106D8 - 0x07010758\nstatic const Vtx ccm_seg7_vertex_070106D8[] = {\n    {{{ -1457,   -890,    550}, 0, { 23466,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -377,   -397,    185}, 0, { 11430,     24}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -377,   -499,    185}, 0, { 11436,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1457,   -787,    550}, 0, { 23460,     24}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   703,     -6,   -178}, 0, { -2624,     24}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   703,   -108,   -178}, 0, { -2618,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -377,   -499,    185}, 0, {  9410,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -377,   -397,    185}, 0, {  9404,     24}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07010758 - 0x07010848\nstatic const Vtx ccm_seg7_vertex_07010758[] = {\n    {{{ -1120,    297,    770}, 0, {  3368,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1120,    553,    770}, 0, {  3376,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1586,    553,    983}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1120,    348,    770}, 0, { -5376,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -12,    336,    667}, 0, {  2028,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1120,    553,    770}, 0, { -5392,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -12,    540,    667}, 0, {  2012,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -55,    336,    574}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1163,    348,    677}, 0, {  7372,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1163,    553,    677}, 0, {  7388,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -55,    540,    574}, 0, {   -16,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1333,    297,    304}, 0, {     0,    -34}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1333,    553,    304}, 0, {     0,    988}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1120,    553,    770}, 0, {  3376,    988}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1120,    297,    770}, 0, {  3372,    -34}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07010848 - 0x070108F8\nstatic const Vtx ccm_seg7_vertex_07010848[] = {\n    {{{ -1799,    297,    517}, 0, {   -36,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1799,    553,    517}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1333,    553,    304}, 0, {  3376,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1120,    297,    770}, 0, {  3368,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1586,    553,    983}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1586,    297,    983}, 0, {   -36,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1586,    297,    982}, 0, {  3368,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1586,    553,    982}, 0, {  3372,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1799,    553,    516}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1799,    297,    516}, 0, {   -36,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1333,    297,    304}, 0, {  3368,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070108F8 - 0x07010940\nstatic const Gfx ccm_seg7_dl_070108F8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ccm_seg7_vertex_070106D8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07010940 - 0x070109D0\nstatic const Gfx ccm_seg7_dl_07010940[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ccm_seg7_vertex_07010758, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(13, 14, 11, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07010848, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  9,  6, 0x0),\n    gsSP1Triangle( 2, 10,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070109D0 - 0x07010A60\nconst Gfx ccm_seg7_dl_070109D0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_070108F8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_07010940),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ccm/areas/1/10/3.inc.c",
    "content": "// 0x07010A60 - 0x07010A78\nstatic const Lights1 ccm_seg7_lights_07010A60 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07010A78 - 0x07010AF8\nstatic const Vtx ccm_seg7_vertex_07010A78[] = {\n    {{{   -55,    540,    574}, 0, {  -912,   4482}, {0x01, 0x7e, 0x00, 0xff}}},\n    {{{ -1163,    553,    677}, 0, {   308,    990}, {0x01, 0x7e, 0x00, 0xff}}},\n    {{{ -1120,    553,    770}, 0, {     0,    990}, {0x01, 0x7e, 0x00, 0xff}}},\n    {{{   -12,    540,    667}, 0, { -1254,   4482}, {0x01, 0x7e, 0x00, 0xff}}},\n    {{{ -1799,    553,    517}, 0, {  1672,   -714}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1120,    553,    770}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1333,    553,    304}, 0, {  1672,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1586,    553,    983}, 0, {     0,   -714}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07010AF8 - 0x07010B50\nstatic const Gfx ccm_seg7_dl_07010AF8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ccm_seg7_lights_07010A60.l, 1),\n    gsSPLight(&ccm_seg7_lights_07010A60.a, 2),\n    gsSPVertex(ccm_seg7_vertex_07010A78, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07010B50 - 0x07010BD0\nconst Gfx ccm_seg7_dl_07010B50[] = {\n    gsDPPipeSync(),\n    gsDPSetEnvColor(255, 255, 255, 90),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_07010AF8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ccm/areas/1/10/geo.inc.c",
    "content": "// 0x0E0004E4\nconst GeoLayout ccm_geo_0004E4[] = {\n    GEO_CULLING_RADIUS(3500),\n    GEO_OPEN_NODE(),\n        GEO_RENDER_RANGE(-3000, 6000),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, ccm_seg7_dl_07010660),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, ccm_seg7_dl_070109D0),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, ccm_seg7_dl_07010B50),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ccm/areas/1/2/model.inc.c",
    "content": "// 0x0700B118 - 0x0700B130\nstatic const Lights1 ccm_seg7_lights_0700B118 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700B130 - 0x0700B190\nstatic const Vtx ccm_seg7_vertex_0700B130[] = {\n    {{{   768,  -1535,   5118}, 0, {   820,    450}, {0x2c, 0x76, 0xf8, 0xff}}},\n    {{{   805,  -1535,   5320}, 0, {     0,    990}, {0x2c, 0x76, 0xf8, 0xff}}},\n    {{{  2566,  -2303,   3621}, 0, {     0, -11806}, {0x2c, 0x76, 0xf8, 0xff}}},\n    {{{   768,  -1535,   5118}, 0, {   820,    450}, {0x1d, 0x78, 0xe5, 0xff}}},\n    {{{  2566,  -2303,   3621}, 0, {     0, -11806}, {0x1d, 0x78, 0xe5, 0xff}}},\n    {{{  2391,  -2303,   3433}, 0, {  1246, -11830}, {0x1d, 0x78, 0xe5, 0xff}}},\n};\n\n// 0x0700B190 - 0x0700B1D8\nstatic const Gfx ccm_seg7_dl_0700B190[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ccm_seg7_lights_0700B118.l, 1),\n    gsSPLight(&ccm_seg7_lights_0700B118.a, 2),\n    gsSPVertex(ccm_seg7_vertex_0700B130, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700B1D8 - 0x0700B248\nconst Gfx ccm_seg7_dl_0700B1D8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_0700B190),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ccm/areas/1/3/model.inc.c",
    "content": "// 0x0700B248 - 0x0700B260\nstatic const Lights1 ccm_seg7_lights_0700B248 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700B260 - 0x0700B278\nstatic const Lights1 ccm_seg7_lights_0700B260 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0x99, 0x99, 0x99, 0x28, 0x28, 0x28\n);\n\n// 0x0700B278 - 0x0700B290\nstatic const Lights1 ccm_seg7_lights_0700B278 = gdSPDefLights1(\n    0x5d, 0x5d, 0x5d,\n    0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28\n);\n\n// 0x0700B290 - 0x0700B2A8\nstatic const Lights1 ccm_seg7_lights_0700B290 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x0700B2A8 - 0x0700B3A8\nstatic const Vtx ccm_seg7_vertex_0700B2A8[] = {\n    {{{ -3268,  -2149,   6246}, 0, {   990,    524}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3268,  -1919,   6246}, 0, {   990,    -50}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3268,  -1919,   6297}, 0, {     0,    -50}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3268,  -2149,   6553}, 0, {   990,    527}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3268,  -1919,   6553}, 0, {   990,    -47}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3268,  -1919,   6605}, 0, {     0,    -47}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3268,  -2149,   6605}, 0, {     0,    527}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   768,  -4607,   6296}, 0, {   788,    115}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   768,  -4505,   6296}, 0, {   788,    -11}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   768,  -4505,   6224}, 0, {  -232,    -11}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   768,  -4607,   6224}, 0, {  -232,    115}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   768,  -4607,   6623}, 0, {  1088,    111}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   768,  -4505,   6623}, 0, {  1088,    -16}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   768,  -4505,   6552}, 0, {    66,    -16}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   768,  -4607,   6552}, 0, {    66,    111}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3268,  -2149,   6297}, 0, {     0,    524}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700B3A8 - 0x0700B4A8\nstatic const Vtx ccm_seg7_vertex_0700B3A8[] = {\n    {{{   768,  -4505,   6224}, 0, {  1812,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   922,  -4607,   6224}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   768,  -4607,   6224}, 0, {  1244,   1840}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3268,  -2149,   6605}, 0, {   384,     56}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3268,  -1919,   6605}, 0, {  2484,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3371,  -2149,   6605}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3371,  -2149,   6605}, 0, {  3034,   3504}, {0x8d, 0x33, 0x00, 0xff}}},\n    {{{ -3268,  -1919,   6605}, 0, {  3034,    990}, {0x8d, 0x33, 0x00, 0xff}}},\n    {{{ -3268,  -1919,   6553}, 0, {  2524,    990}, {0x8d, 0x33, 0x00, 0xff}}},\n    {{{ -3371,  -2149,   6553}, 0, {  2524,   3504}, {0x8d, 0x33, 0x00, 0xff}}},\n    {{{ -3371,  -2149,   6553}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3268,  -1919,   6553}, 0, {  2484,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3268,  -2149,   6553}, 0, {   384,     56}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   768,  -4505,   6552}, 0, {     0,   -852}, {0x46, 0x69, 0x00, 0xff}}},\n    {{{   768,  -4505,   6623}, 0, {  -746,   -852}, {0x46, 0x69, 0x00, 0xff}}},\n    {{{   922,  -4607,   6623}, 0, {  -746,    990}, {0x46, 0x69, 0x00, 0xff}}},\n};\n\n// 0x0700B4A8 - 0x0700B5A8\nstatic const Vtx ccm_seg7_vertex_0700B4A8[] = {\n    {{{   922,  -4607,   6296}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   768,  -4505,   6296}, 0, {  1812,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   768,  -4607,   6296}, 0, {  1244,   1840}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   768,  -4505,   6224}, 0, {  3238,   -854}, {0x46, 0x69, 0x00, 0xff}}},\n    {{{   922,  -4607,   6296}, 0, {  2522,    990}, {0x46, 0x69, 0x00, 0xff}}},\n    {{{   922,  -4607,   6224}, 0, {  3238,    990}, {0x46, 0x69, 0x00, 0xff}}},\n    {{{   768,  -4505,   6296}, 0, {  2522,   -854}, {0x46, 0x69, 0x00, 0xff}}},\n    {{{   768,  -4607,   6552}, 0, {  1244,   1838}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   768,  -4505,   6552}, 0, {  1810,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   922,  -4607,   6552}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3371,  -2149,   6297}, 0, {     0,   3504}, {0x8d, 0x33, 0x00, 0xff}}},\n    {{{ -3268,  -1919,   6246}, 0, {  -540,    990}, {0x8d, 0x33, 0x00, 0xff}}},\n    {{{ -3371,  -2149,   6246}, 0, {  -540,   3504}, {0x8d, 0x33, 0x00, 0xff}}},\n    {{{   768,  -4505,   6552}, 0, {     0,   -852}, {0x46, 0x69, 0x00, 0xff}}},\n    {{{   922,  -4607,   6623}, 0, {  -746,    990}, {0x46, 0x69, 0x00, 0xff}}},\n    {{{   922,  -4607,   6552}, 0, {     0,    990}, {0x46, 0x69, 0x00, 0xff}}},\n};\n\n// 0x0700B5A8 - 0x0700B6A8\nstatic const Vtx ccm_seg7_vertex_0700B5A8[] = {\n    {{{   922,  -4607,   6623}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   768,  -4505,   6623}, 0, {  1810,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   768,  -4607,   6623}, 0, {  1244,   1838}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3268,  -2149,   6297}, 0, {   384,     56}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3268,  -1919,   6297}, 0, {  2484,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3371,  -2149,   6297}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3371,  -2149,   6297}, 0, {     0,   3504}, {0x8d, 0x33, 0x00, 0xff}}},\n    {{{ -3268,  -1919,   6297}, 0, {     0,    990}, {0x8d, 0x33, 0x00, 0xff}}},\n    {{{ -3268,  -1919,   6246}, 0, {  -540,    990}, {0x8d, 0x33, 0x00, 0xff}}},\n    {{{  2740,  -4351,   3808}, 0, {  1246,    990}, {0x56, 0x00, 0x5c, 0xff}}},\n    {{{  2927,  -4607,   3634}, 0, {     0,   -288}, {0x56, 0x00, 0x5c, 0xff}}},\n    {{{  2927,  -4351,   3634}, 0, {  1246,   -288}, {0x56, 0x00, 0x5c, 0xff}}},\n    {{{  2048,   2560,  -2047}, 0, {  2030,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2048,   2560,   -767}, 0, {  1702,  -1544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3072,   2560,   -767}, 0, {  -324,  -1282}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3072,   2560,  -1914}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700B6A8 - 0x0700B7A8\nstatic const Vtx ccm_seg7_vertex_0700B6A8[] = {\n    {{{  3072,   2560,   -511}, 0, {  -390,  -1788}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3072,   2560,   -767}, 0, {  -324,  -1282}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2816,   2560,   -767}, 0, {   180,  -1348}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3682,  -4095,   2895}, 0, {   -26,    976}, {0x78, 0x00, 0x26, 0xff}}},\n    {{{  3682,  -4126,   2895}, 0, {     0,    990}, {0x78, 0x00, 0x26, 0xff}}},\n    {{{  4299,  -3358,    960}, 0, {   990,    990}, {0x78, 0x00, 0x26, 0xff}}},\n    {{{  4299,  -3327,    960}, 0, {   996,    976}, {0x78, 0x00, 0x26, 0xff}}},\n    {{{  2740,  -4351,   3808}, 0, {  1246,    990}, {0x56, 0x00, 0x5c, 0xff}}},\n    {{{  2740,  -4607,   3808}, 0, {     0,    990}, {0x56, 0x00, 0x5c, 0xff}}},\n    {{{  2927,  -4607,   3634}, 0, {     0,   -288}, {0x56, 0x00, 0x5c, 0xff}}},\n    {{{  3979,  -3327,    800}, 0, { 10802,    990}, {0xec, 0x76, 0x28, 0xff}}},\n    {{{  3682,  -4095,   2895}, 0, {  -288,   -780}, {0xec, 0x76, 0x28, 0xff}}},\n    {{{  4299,  -3327,    960}, 0, { 10544,   -780}, {0xec, 0x76, 0x28, 0xff}}},\n    {{{  2927,  -4351,   3634}, 0, {  1246,   -288}, {0x58, 0x00, 0x5a, 0xff}}},\n    {{{  3682,  -4607,   2895}, 0, {     0,  -5560}, {0x58, 0x00, 0x5a, 0xff}}},\n    {{{  3682,  -4095,   2895}, 0, {  2522,  -5560}, {0x58, 0x00, 0x5a, 0xff}}},\n};\n\n// 0x0700B7A8 - 0x0700B8A8\nstatic const Vtx ccm_seg7_vertex_0700B7A8[] = {\n    {{{  2927,  -4351,   3634}, 0, {  1246,   -288}, {0x58, 0x00, 0x5a, 0xff}}},\n    {{{  2927,  -4607,   3634}, 0, {     0,   -288}, {0x58, 0x00, 0x5a, 0xff}}},\n    {{{  3682,  -4607,   2895}, 0, {     0,  -5560}, {0x58, 0x00, 0x5a, 0xff}}},\n    {{{  3362,  -4095,   2735}, 0, {     0,    990}, {0xf2, 0x7b, 0x1c, 0xff}}},\n    {{{  2927,  -4351,   3634}, 0, { -5016,   -280}, {0xf2, 0x7b, 0x1c, 0xff}}},\n    {{{  3682,  -4095,   2895}, 0, {   384,   -742}, {0xf2, 0x7b, 0x1c, 0xff}}},\n    {{{  3362,  -4095,   2735}, 0, {     0,    990}, {0xe8, 0x7a, 0x16, 0xff}}},\n    {{{  2753,  -4351,   3447}, 0, { -4874,    990}, {0xe8, 0x7a, 0x16, 0xff}}},\n    {{{  2927,  -4351,   3634}, 0, { -5016,   -280}, {0xe8, 0x7a, 0x16, 0xff}}},\n    {{{  2566,  -4351,   3621}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2927,  -4351,   3634}, 0, {  1246,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2753,  -4351,   3447}, 0, {  1246,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2740,  -4351,   3808}, 0, {     0,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2391,  -4351,   3433}, 0, {     0,   -288}, {0xa4, 0x00, 0x56, 0xff}}},\n    {{{  2566,  -4351,   3621}, 0, {     0,    990}, {0xa4, 0x00, 0x56, 0xff}}},\n    {{{  2566,  -2303,   3621}, 0, { 10188,    990}, {0xa4, 0x00, 0x56, 0xff}}},\n};\n\n// 0x0700B8A8 - 0x0700B988\nstatic const Vtx ccm_seg7_vertex_0700B8A8[] = {\n    {{{  3979,  -3327,    800}, 0, { 10802,    990}, {0xec, 0x76, 0x28, 0xff}}},\n    {{{  3362,  -4095,   2735}, 0, {     0,    990}, {0xec, 0x76, 0x28, 0xff}}},\n    {{{  3682,  -4095,   2895}, 0, {  -288,   -780}, {0xec, 0x76, 0x28, 0xff}}},\n    {{{  2566,  -4351,   3621}, 0, {  1246,    964}, {0x56, 0x00, 0x5c, 0xff}}},\n    {{{  2753,  -4351,   3447}, 0, {  1246,   -314}, {0x56, 0x00, 0x5c, 0xff}}},\n    {{{  2753,  -2303,   3447}, 0, { 11466,   -314}, {0x56, 0x00, 0x5c, 0xff}}},\n    {{{  2566,  -2303,   3621}, 0, { 11466,    962}, {0x56, 0x00, 0x5c, 0xff}}},\n    {{{  2391,  -2303,   3433}, 0, {  2522,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2566,  -2303,   3621}, 0, {  1246,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2753,  -2303,   3447}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2579,  -2303,   3259}, 0, {  1246,   2266}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2391,  -4351,   3433}, 0, {     0,   -288}, {0xa4, 0x00, 0x56, 0xff}}},\n    {{{  2566,  -2303,   3621}, 0, { 10188,    990}, {0xa4, 0x00, 0x56, 0xff}}},\n    {{{  2391,  -2303,   3433}, 0, { 10188,   -288}, {0xa4, 0x00, 0x56, 0xff}}},\n};\n\n// 0x0700B988 - 0x0700BA08\nstatic const Vtx ccm_seg7_vertex_0700B988[] = {\n    {{{  4299,  -3358,    960}, 0, {     0,    990}, {0x78, 0x00, 0x29, 0xff}}},\n    {{{  4551,  -3071,    228}, 0, {  1400,  -2876}, {0x78, 0x00, 0x29, 0xff}}},\n    {{{  4299,  -3071,    960}, 0, {  1398,    990}, {0x78, 0x00, 0x29, 0xff}}},\n    {{{  4551,  -3358,    228}, 0, {     0,  -2876}, {0x78, 0x00, 0x29, 0xff}}},\n    {{{  3979,  -3071,    800}, 0, {  1246,    990}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  3979,  -3327,    800}, 0, {     0,    990}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  4299,  -3327,    960}, 0, {     0,   -798}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  4299,  -3071,    960}, 0, {  1246,   -798}, {0xc8, 0x00, 0x71, 0xff}}},\n};\n\n// 0x0700BA08 - 0x0700BB08\nstatic const Vtx ccm_seg7_vertex_0700BA08[] = {\n    {{{  4299,  -3358,    960}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3521,  -3358,    571}, 0, {  4312,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3864,  -3358,   -115}, 0, {  4312,  -2842}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2807,  -4607,   3956}, 0, {     0,    990}, {0xa4, 0x00, 0x56, 0xff}}},\n    {{{  2807,  -4196,   3956}, 0, {  4068,    990}, {0xa4, 0x00, 0x56, 0xff}}},\n    {{{  2528,  -4196,   3656}, 0, {  4068,  -3098}, {0xa4, 0x00, 0x56, 0xff}}},\n    {{{  4299,  -3358,    960}, 0, {  4258,    380}, {0x14, 0x8a, 0xd8, 0xff}}},\n    {{{  3682,  -4126,   2895}, 0, {     0,    990}, {0x14, 0x8a, 0xd8, 0xff}}},\n    {{{  3521,  -3358,    571}, 0, {  4266,  -1358}, {0x14, 0x8a, 0xd8, 0xff}}},\n    {{{  1940,  -4125,   2033}, 0, {     0,  -2892}, {0x14, 0x8a, 0xd8, 0xff}}},\n    {{{  3682,  -4126,   2895}, 0, {  1950,    990}, {0x38, 0x01, 0x8f, 0xff}}},\n    {{{  1942,  -5119,   2025}, 0, {     0,  -2894}, {0x38, 0x01, 0x8f, 0xff}}},\n    {{{  1940,  -4125,   2033}, 0, {  1950,  -2892}, {0x38, 0x01, 0x8f, 0xff}}},\n    {{{  3682,  -4126,   2895}, 0, {  1950,    990}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  3682,  -5119,   2895}, 0, {     0,    990}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  1942,  -5119,   2025}, 0, {     0,  -2894}, {0x38, 0x00, 0x8f, 0xff}}},\n};\n\n// 0x0700BB08 - 0x0700BB38\nstatic const Vtx ccm_seg7_vertex_0700BB08[] = {\n    {{{  4299,  -3358,    960}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3864,  -3358,   -115}, 0, {  4312,  -2842}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4551,  -3358,    228}, 0, {   478,  -2842}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0700BB38 - 0x0700BB88\nstatic const Vtx ccm_seg7_vertex_0700BB38[] = {\n    {{{  4096,  -3071,      0}, 0, {  2484,  -3212}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4299,  -3071,    960}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4551,  -3071,    228}, 0, {     0,  -2876}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3979,  -3071,    800}, 0, {  1742,    754}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3657,  -3071,    622}, 0, {  3548,    438}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700BB88 - 0x0700BC78\nstatic const Vtx ccm_seg7_vertex_0700BB88[] = {\n    {{{ -5151,  -1740,   4516}, 0, {   990,      0}, {0x04, 0x00, 0x7e, 0xff}}},\n    {{{ -4947,  -2252,   4509}, 0, {     0,   2012}, {0x04, 0x00, 0x7e, 0xff}}},\n    {{{ -4947,  -1740,   4509}, 0, {     0,      0}, {0x04, 0x00, 0x7e, 0xff}}},\n    {{{ -5144,  -1740,   4720}, 0, {     0,      0}, {0x7e, 0x00, 0xfc, 0xff}}},\n    {{{ -5144,  -2252,   4720}, 0, {     0,   2012}, {0x7e, 0x00, 0xfc, 0xff}}},\n    {{{ -5151,  -2252,   4516}, 0, {   990,   2012}, {0x7e, 0x00, 0xfc, 0xff}}},\n    {{{ -5151,  -1740,   4516}, 0, {   990,      0}, {0x7e, 0x00, 0xfc, 0xff}}},\n    {{{ -4940,  -1740,   4714}, 0, {     0,      0}, {0xfd, 0x00, 0x82, 0xff}}},\n    {{{ -4940,  -2252,   4714}, 0, {     0,   2012}, {0xfd, 0x00, 0x82, 0xff}}},\n    {{{ -5144,  -2252,   4720}, 0, {   990,   2012}, {0xfd, 0x00, 0x82, 0xff}}},\n    {{{ -5144,  -1740,   4720}, 0, {   990,      0}, {0xfd, 0x00, 0x82, 0xff}}},\n    {{{ -4947,  -1740,   4509}, 0, {   990,      0}, {0x82, 0x00, 0x04, 0xff}}},\n    {{{ -4940,  -2252,   4714}, 0, {     0,   2012}, {0x82, 0x00, 0x04, 0xff}}},\n    {{{ -4940,  -1740,   4714}, 0, {     0,      0}, {0x82, 0x00, 0x04, 0xff}}},\n    {{{ -4947,  -2252,   4509}, 0, {   990,   2012}, {0x82, 0x00, 0x04, 0xff}}},\n};\n\n// 0x0700BC78 - 0x0700BD68\nstatic const Vtx ccm_seg7_vertex_0700BC78[] = {\n    {{{ -3516,  -4607,   4684}, 0, {   990,      0}, {0x82, 0x00, 0x03, 0xff}}},\n    {{{ -3510,  -5119,   4889}, 0, {     0,   2012}, {0x82, 0x00, 0x03, 0xff}}},\n    {{{ -3510,  -4607,   4889}, 0, {     0,      0}, {0x82, 0x00, 0x03, 0xff}}},\n    {{{ -5151,  -1740,   4516}, 0, {   990,      0}, {0x04, 0x00, 0x7e, 0xff}}},\n    {{{ -5151,  -2252,   4516}, 0, {   990,   2012}, {0x04, 0x00, 0x7e, 0xff}}},\n    {{{ -4947,  -2252,   4509}, 0, {     0,   2012}, {0x04, 0x00, 0x7e, 0xff}}},\n    {{{ -3714,  -4607,   4896}, 0, {     0,      0}, {0x7e, 0x00, 0xfc, 0xff}}},\n    {{{ -3714,  -5119,   4896}, 0, {     0,   2012}, {0x7e, 0x00, 0xfc, 0xff}}},\n    {{{ -3721,  -5119,   4691}, 0, {   990,   2012}, {0x7e, 0x00, 0xfc, 0xff}}},\n    {{{ -3721,  -4607,   4691}, 0, {   990,      0}, {0x7e, 0x00, 0xfc, 0xff}}},\n    {{{ -3510,  -4607,   4889}, 0, {   990,      0}, {0xfc, 0x00, 0x82, 0xff}}},\n    {{{ -3510,  -5119,   4889}, 0, {   990,   2012}, {0xfc, 0x00, 0x82, 0xff}}},\n    {{{ -3714,  -5119,   4896}, 0, {     0,   2012}, {0xfc, 0x00, 0x82, 0xff}}},\n    {{{ -3714,  -4607,   4896}, 0, {     0,      0}, {0xfc, 0x00, 0x82, 0xff}}},\n    {{{ -3516,  -5119,   4684}, 0, {   990,   2012}, {0x82, 0x00, 0x03, 0xff}}},\n};\n\n// 0x0700BD68 - 0x0700BE58\nstatic const Vtx ccm_seg7_vertex_0700BD68[] = {\n    {{{  1192,  -4607,   5626}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1192,  -5119,   5626}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1192,  -5119,   5831}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3721,  -4607,   4691}, 0, {     0,      0}, {0x04, 0x00, 0x7e, 0xff}}},\n    {{{ -3721,  -5119,   4691}, 0, {     0,   2012}, {0x04, 0x00, 0x7e, 0xff}}},\n    {{{ -3516,  -5119,   4684}, 0, {   990,   2012}, {0x04, 0x00, 0x7e, 0xff}}},\n    {{{ -3516,  -4607,   4684}, 0, {   990,      0}, {0x04, 0x00, 0x7e, 0xff}}},\n    {{{   988,  -4607,   5831}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   988,  -5119,   5831}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   988,  -5119,   5626}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   988,  -4607,   5626}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1192,  -4607,   5831}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1192,  -5119,   5831}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   988,  -5119,   5831}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   988,  -4607,   5831}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700BE58 - 0x0700BEC8\nstatic const Vtx ccm_seg7_vertex_0700BE58[] = {\n    {{{   988,  -4607,   5626}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1192,  -5119,   5626}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1192,  -4607,   5626}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1192,  -4607,   5626}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1192,  -5119,   5831}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1192,  -4607,   5831}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   988,  -5119,   5626}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0700BEC8 - 0x0700BF88\nstatic const Vtx ccm_seg7_vertex_0700BEC8[] = {\n    {{{ -5151,  -2252,   4516}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4940,  -2252,   4714}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4947,  -2252,   4509}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5144,  -2252,   4720}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3721,  -5119,   4691}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3714,  -5119,   4896}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3510,  -5119,   4889}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3516,  -5119,   4684}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   988,  -5119,   5626}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   988,  -5119,   5831}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1192,  -5119,   5831}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1192,  -5119,   5626}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700BF88 - 0x0700C000\nstatic const Gfx ccm_seg7_dl_0700BF88[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ccm_seg7_texture_07000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 4 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ccm_seg7_lights_0700B248.l, 1),\n    gsSPLight(&ccm_seg7_lights_0700B248.a, 2),\n    gsSPVertex(ccm_seg7_vertex_0700B2A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700C000 - 0x0700C220\nstatic const Gfx ccm_seg7_dl_0700C000[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ccm_seg7_vertex_0700B3A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0700B4A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0700B5A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0700B6A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0700B7A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0700B8A8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0700B988, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPLight(&ccm_seg7_lights_0700B260.l, 1),\n    gsSPLight(&ccm_seg7_lights_0700B260.a, 2),\n    gsSPVertex(ccm_seg7_vertex_0700BA08, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0700BB08, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPLight(&ccm_seg7_lights_0700B278.l, 1),\n    gsSPLight(&ccm_seg7_lights_0700B278.a, 2),\n    gsSPVertex(ccm_seg7_vertex_0700BB38, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP1Triangle( 0,  4,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700C220 - 0x0700C330\nstatic const Gfx ccm_seg7_dl_0700C220[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ccm_seg7_lights_0700B248.l, 1),\n    gsSPLight(&ccm_seg7_lights_0700B248.a, 2),\n    gsSPVertex(ccm_seg7_vertex_0700BB88, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0700BC78, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0700BD68, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0700BE58, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  6,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700C330 - 0x0700C380\nstatic const Gfx ccm_seg7_dl_0700C330[] = {\n    gsSPLight(&ccm_seg7_lights_0700B290.l, 1),\n    gsSPLight(&ccm_seg7_lights_0700B290.a, 2),\n    gsSPVertex(ccm_seg7_vertex_0700BEC8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700C380 - 0x0700C438\nconst Gfx ccm_seg7_dl_0700C380[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 2, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (4 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_0700BF88),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_0700C000),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_0700C220),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(ccm_seg7_dl_0700C330),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ccm/areas/1/4/model.inc.c",
    "content": "// 0x0700C438 - 0x0700C528\nstatic const Vtx ccm_seg7_vertex_0700C438[] = {\n    {{{  2852,  -1535,   2490}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2811,  -1317,   2304}, 0, {   992,    -34}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2839,  -1331,   2507}, 0, {   -30,    -34}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1953,   2619,    -58}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1995,   2926,   -203}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1995,   2721,   -203}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1953,   2824,    -58}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1706,   2926,   -492}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1706,   2721,   -492}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1501,   2721,   -492}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1501,   2926,   -492}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3015,  -1536,   2614}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3217,  -1521,   2587}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3205,  -1318,   2604}, 0, {   988,    -30}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3002,  -1332,   2631}, 0, {     0,    -30}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700C528 - 0x0700C618\nstatic const Vtx ccm_seg7_vertex_0700C528[] = {\n    {{{  3794,  -1345,   1829}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3754,  -1126,   1643}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3782,  -1141,   1845}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2852,  -1535,   2490}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2824,  -1521,   2288}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2811,  -1317,   2304}, 0, {   992,    -34}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3401,  -1344,   1530}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3591,  -1126,   1519}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3388,  -1140,   1546}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3603,  -1330,   1503}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3766,  -1330,   1627}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3520,  -4591,   -179}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3520,  -4796,   -179}, 0, {     0,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3690,  -4854,   -265}, 0, {   990,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3690,  -4649,   -265}, 0, {   990,      0}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x0700C618 - 0x0700C658\nstatic const Vtx ccm_seg7_vertex_0700C618[] = {\n    {{{  3132,  -4591,   -308}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3132,  -4796,   -308}, 0, {     0,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3045,  -4875,   -482}, 0, {   990,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3045,  -4670,   -482}, 0, {   990,      0}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x0700C658 - 0x0700C748\nstatic const Vtx ccm_seg7_vertex_0700C658[] = {\n    {{{ -3292,  -4505,   5501}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3298,  -4607,   5194}, 0, {  3034,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3298,  -4505,   5194}, 0, {  3034,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4607,  -4505,   4608}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4607,  -4607,   4608}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3292,  -4607,   5501}, 0, { 15838,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3292,  -4505,   5501}, 0, { 15838,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4720,  -4505,   3590}, 0, { -2970,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4720,  -4607,   3590}, 0, { -2970,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4607,  -4607,   4608}, 0, {  7248,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4607,  -4505,   4608}, 0, {  7248,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3314,  -4505,   4454}, 0, { -1410,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3327,  -4607,   3840}, 0, {  4720,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3327,  -4505,   3840}, 0, {  4720,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3314,  -4607,   4454}, 0, { -1410,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700C748 - 0x0700C838\nstatic const Vtx ccm_seg7_vertex_0700C748[] = {\n    {{{   256,   1485,   2696}, 0, { -6830,    -12}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   256,   1382,   2696}, 0, { -6830,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2057,   1737,   2920}, 0, { 11624,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3292,  -4505,   5501}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3292,  -4607,   5501}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3298,  -4607,   5194}, 0, {  3034,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   256,   1485,   2696}, 0, { 30466,    -28}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3235,   1148,   1509}, 0, { -6498,    -28}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3235,   1045,   1509}, 0, { -6496,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   256,   1382,   2696}, 0, { 30468,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -50,   1280,   2048}, 0, { 21846,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3071,   1142,   1024}, 0, {-10070,    -30}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3071,   1040,   1024}, 0, {-10080,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -50,   1382,   2048}, 0, { 21856,    -30}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2057,   1840,   2920}, 0, { 11624,    -12}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700C838 - 0x0700C8A8\nstatic const Vtx ccm_seg7_vertex_0700C838[] = {\n    {{{  3604,   2304,  -2928}, 0, {  6100,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3604,   2406,  -2928}, 0, {  6100,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4096,   2406,  -2559}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4096,   2304,  -2559}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4096,   2192,  -1038}, 0, { 15286,    -22}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4096,   2406,  -2559}, 0, {   -42,    -22}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4096,   2090,  -1038}, 0, { 15298,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700C8A8 - 0x0700C998\nstatic const Vtx ccm_seg7_vertex_0700C8A8[] = {\n    {{{  2845,  -1433,   2499}, 0, {  5078,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2228,  -1535,   3309}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2391,  -1535,   3433}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2429,   2867,   -636}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1995,   2824,   -203}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1706,   2824,   -492}, 0, {  2012,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2139,   2867,   -926}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3327,  -1535,   3840}, 0, {   -36,    -36}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3323,  -1535,   4045}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1386,  -1637,   4683}, 0, { 10154,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1407,  -1637,   4480}, 0, { 10062,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1386,  -1637,   4683}, 0, {   -82,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   768,  -1535,   5118}, 0, { 11216,     -2}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1407,  -1637,   4480}, 0, {   -98,    -36}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   805,  -1535,   5320}, 0, { 11318,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700C998 - 0x0700CA88\nstatic const Vtx ccm_seg7_vertex_0700C998[] = {\n    {{{  4262,  -1228,    975}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3605,  -1228,   1500}, 0, {  3034,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3768,  -1228,   1624}, 0, {  3034,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2845,  -1433,   2499}, 0, {  5078,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2391,  -1535,   3433}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3008,  -1434,   2622}, 0, {  5078,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4099,  -1228,    851}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2744,  -4694,    857}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3132,  -4694,    986}, 0, {     0,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3520,  -4694,   -179}, 0, {  3034,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3132,  -4694,   -308}, 0, {  3034,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4134,  -4607,   1535}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3068,  -4694,   1181}, 0, {  2012,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2938,  -4694,   1569}, 0, {  2012,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4005,  -4607,   1923}, 0, {     0,    990}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x0700CA88 - 0x0700CB78\nstatic const Vtx ccm_seg7_vertex_0700CA88[] = {\n    {{{ -3323,  -1433,   4045}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1386,  -1740,   4683}, 0, { 10154,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1386,  -1535,   4683}, 0, { 10156,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   805,  -1433,   5320}, 0, { -1174,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2566,  -2405,   3621}, 0, {  7354,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2566,  -2201,   3621}, 0, {  7356,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   805,  -1637,   5320}, 0, { -1176,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3327,  -1433,   3840}, 0, {     0,    -30}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3327,  -1637,   3840}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1407,  -1740,   4480}, 0, { 10080,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1407,  -1535,   4480}, 0, { 10080,    -30}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1407,  -1740,   4480}, 0, { -1006,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   768,  -1637,   5118}, 0, { 10320,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   768,  -1433,   5118}, 0, { 10366,    -30}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1407,  -1535,   4480}, 0, {  -960,    -30}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700CB78 - 0x0700CC68\nstatic const Vtx ccm_seg7_vertex_0700CB78[] = {\n    {{{ -2139,   2970,   -926}, 0, {     0,    -30}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2139,   2765,   -926}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1706,   2721,   -492}, 0, {  3034,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3323,  -1433,   4045}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3323,  -1637,   4045}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1386,  -1740,   4683}, 0, { 10154,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1386,  -1740,   4683}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   805,  -1637,   5320}, 0, { 11372,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   805,  -1433,   5320}, 0, { 11378,    -30}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1386,  -1535,   4683}, 0, {   -26,    -30}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2429,   2970,   -636}, 0, {   -30,    -30}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1995,   2721,   -203}, 0, {  3034,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1995,   2926,   -203}, 0, {  3036,    -30}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2429,   2765,   -636}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1706,   2926,   -492}, 0, {  3032,    -30}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700CC68 - 0x0700CD58\nstatic const Vtx ccm_seg7_vertex_0700CC68[] = {\n    {{{  3754,  -1126,   1643}, 0, {  4158,    -26}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4262,  -1330,    975}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4262,  -1125,    975}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2385,  -1433,   3441}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3015,  -1536,   2614}, 0, {  5078,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3002,  -1332,   2631}, 0, {  5078,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2398,  -1637,   3425}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2222,  -1433,   3317}, 0, {     0,    -34}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2852,  -1535,   2490}, 0, {  5078,    988}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2839,  -1331,   2507}, 0, {  5078,    -34}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2235,  -1637,   3301}, 0, {     0,    988}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3591,  -1126,   1519}, 0, {  4158,    -28}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3603,  -1330,   1503}, 0, {  4056,    988}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4099,  -1330,    851}, 0, {     0,    988}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4099,  -1125,    851}, 0, {     0,    -34}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700CD58 - 0x0700CE48\nstatic const Vtx ccm_seg7_vertex_0700CD58[] = {\n    {{{ -4360,  -1842,   5999}, 0, { -1630,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4360,  -1945,   5999}, 0, { -1630,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3892,  -1945,   6605}, 0, {  2190,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3754,  -1126,   1643}, 0, {  4158,    -26}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3766,  -1330,   1627}, 0, {  4056,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4262,  -1330,    975}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6398,  -1637,   3943}, 0, {  7182,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6398,  -1740,   3943}, 0, {  7182,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5387,  -1740,   4976}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5387,  -1637,   4976}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5387,  -1637,   4976}, 0, {  6954,    -26}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5387,  -1740,   4976}, 0, {  6918,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4360,  -1945,   5999}, 0, {  -386,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4360,  -1842,   5999}, 0, {  -348,    -26}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3892,  -1842,   6605}, 0, {  2190,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700CE48 - 0x0700CF38\nstatic const Vtx ccm_seg7_vertex_0700CE48[] = {\n    {{{  4005,  -4505,   1923}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3682,  -4505,   2895}, 0, { -4118,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3682,  -4607,   2895}, 0, { -4118,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4005,  -4607,   1923}, 0, {   990,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5000,  -4504,  -1074}, 0, { 12870,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4134,  -4505,   1535}, 0, {  -850,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4134,  -4607,   1535}, 0, {  -850,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5039,  -4607,  -1191}, 0, { 13484,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3067,  -4584,   1181}, 0, {  3036,    -30}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3067,  -4789,   1181}, 0, {  3034,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4134,  -4709,   1535}, 0, {     0,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4005,  -4709,   1923}, 0, {     0,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2938,  -4584,   1569}, 0, {  3032,    -30}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4005,  -4505,   1923}, 0, {     0,    -30}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2938,  -4789,   1569}, 0, {  3034,    990}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x0700CF38 - 0x0700CFE8\nstatic const Vtx ccm_seg7_vertex_0700CF38[] = {\n    {{{  2744,  -4592,    857}, 0, {     0,    -30}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  2744,  -4796,    857}, 0, {     0,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3132,  -4796,   -308}, 0, {  6100,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3132,  -4591,   -308}, 0, {  6100,    -30}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3132,  -4591,    986}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3520,  -4796,   -179}, 0, {  6100,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3520,  -4591,   -179}, 0, {  6100,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3132,  -4796,    986}, 0, {     0,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3067,  -4584,   1181}, 0, {  3036,    -30}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4134,  -4709,   1535}, 0, {     0,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4134,  -4505,   1535}, 0, {   -30,    -30}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x0700CFE8 - 0x0700D0E8\nstatic const Vtx ccm_seg7_vertex_0700CFE8[] = {\n    {{{ -1995,   2824,   -203}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1727,   2670,     65}, 0, {  1330,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1437,   2670,   -224}, 0, {  1330,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1706,   2824,   -492}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2845,  -1433,   2499}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3124,  -1507,   2470}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2961,  -1506,   2346}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3008,  -1434,   2622}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3500,  -1337,   1638}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3663,  -1337,   1762}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3768,  -1228,   1624}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3605,  -1228,   1500}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3132,  -4694,   -308}, 0, {     0,    -30}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3520,  -4694,   -179}, 0, {     0,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3238,  -4920,   -632}, 0, {   990,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3627,  -4920,   -503}, 0, {   990,    990}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x0700D0E8 - 0x0700D128\nstatic const Vtx ccm_seg7_vertex_0700D0E8[] = {\n    {{{   768,  -1074,  -4453}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5119,  -2047,  -5375}, 0, { 24100,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5119,  -1842,  -5375}, 0, { 24096,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   768,  -1279,  -4453}, 0, {   -28,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700D128 - 0x0700D1E0\nstatic const Gfx ccm_seg7_dl_0700D128[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ccm_seg7_texture_07000900),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ccm_seg7_vertex_0700C438, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0700C528, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 0, 10,  1, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0700C618, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700D1E0 - 0x0700D2A8\nstatic const Gfx ccm_seg7_dl_0700D1E0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ccm_seg7_vertex_0700C658, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0700C748, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0700C838, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  3,  5, 0x0,  4,  6,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700D2A8 - 0x0700D348\nstatic const Gfx ccm_seg7_dl_0700D2A8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ccm_seg7_vertex_0700C8A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0700C998, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700D348 - 0x0700D4D8\nstatic const Gfx ccm_seg7_dl_0700D348[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09006800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ccm_seg7_vertex_0700CA88, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0700CB78, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0700CC68, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0700CD58, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0700CE48, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0700CF38, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP1Triangle( 8,  9, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700D4D8 - 0x0700D540\nstatic const Gfx ccm_seg7_dl_0700D4D8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ccm_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ccm_seg7_vertex_0700CFE8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700D540 - 0x0700D578\nstatic const Gfx ccm_seg7_dl_0700D540[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ccm_seg7_vertex_0700D0E8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700D578 - 0x0700D658\nconst Gfx ccm_seg7_dl_0700D578[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_0700D128),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_0700D1E0),\n    gsSPDisplayList(ccm_seg7_dl_0700D2A8),\n    gsSPDisplayList(ccm_seg7_dl_0700D348),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_0700D4D8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_0700D540),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ccm/areas/1/5/model.inc.c",
    "content": "// 0x0700D658 - 0x0700D748\nstatic const Vtx ccm_seg7_vertex_0700D658[] = {\n    {{{ -6015,  -1740,    689}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -6015,  -1740,    934}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -5769,  -1740,    934}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -5631,  -1740,   4025}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -5631,  -1740,   4271}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -5385,  -1740,   4271}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -5385,  -1740,   4025}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -4699,  -1740,   4691}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -4454,  -1740,   4937}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -4454,  -1740,   4691}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -4699,  -1740,   4937}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -5324,  -1740,   2871}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -5078,  -1740,   3117}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -5078,  -1740,   2871}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -5324,  -1740,   3117}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n};\n\n// 0x0700D748 - 0x0700D838\nstatic const Vtx ccm_seg7_vertex_0700D748[] = {\n    {{{  -611,   2560,  -2428}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{  -611,   2560,  -2182}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{  -365,   2560,  -2182}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -6015,  -1740,    689}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -5769,  -1740,    934}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -5769,  -1740,    689}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -3871,  -4607,   4341}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -3625,  -4607,   4587}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -3625,  -4607,   4341}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -3871,  -4607,   4587}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{  1125,  -4607,   5351}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{  1371,  -4607,   5597}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{  1371,  -4607,   5351}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{  1125,  -4607,   5597}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{  -365,   2560,  -2428}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n};\n\n// 0x0700D838 - 0x0700D938\nstatic const Vtx ccm_seg7_vertex_0700D838[] = {\n    {{{ -1269,  -3583,   5796}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -1023,  -3583,   6042}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -1023,  -3583,   5796}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -1891,   2560,  -1916}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -1891,   2560,  -1670}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -1645,   2560,  -1670}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -1645,   2560,  -1916}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -3566,    807,  -2836}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -3320,    807,  -2590}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -3320,    807,  -2836}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -3566,    807,  -2590}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{  1867,  -4607,   4826}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{  1867,  -4607,   5072}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{  2112,  -4607,   5072}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{  2112,  -4607,   4826}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xb4}}},\n    {{{ -1269,  -3583,   6042}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xb4}}},\n};\n\n// 0x0700D938 - 0x0700D9B8\nstatic const Vtx ccm_seg7_vertex_0700D938[] = {\n    {{{  2114,   2560,  -1753}, 0, {     0,      0}, {0x33, 0x33, 0x33, 0xb4}}},\n    {{{  2360,   2560,  -1507}, 0, {   990,    990}, {0x33, 0x33, 0x33, 0xb4}}},\n    {{{  2360,   2560,  -1753}, 0, {   990,      0}, {0x33, 0x33, 0x33, 0xb4}}},\n    {{{  2114,   2560,  -1507}, 0, {     0,    990}, {0x33, 0x33, 0x33, 0xb4}}},\n    {{{  2762,   2560,  -1761}, 0, {     0,      0}, {0x33, 0x33, 0x33, 0xb4}}},\n    {{{  3007,   2560,  -1515}, 0, {   990,    990}, {0x33, 0x33, 0x33, 0xb4}}},\n    {{{  3007,   2560,  -1761}, 0, {   990,      0}, {0x33, 0x33, 0x33, 0xb4}}},\n    {{{  2762,   2560,  -1515}, 0, {     0,    990}, {0x33, 0x33, 0x33, 0xb4}}},\n};\n\n// 0x0700D9B8 - 0x0700DAA8\nstatic const Vtx ccm_seg7_vertex_0700D9B8[] = {\n    {{{  2033,   2195,   -194}, 0, {     0,      0}, {0x00, 0x10, 0x00, 0xff}}},\n    {{{  2247,   2261,   -378}, 0, {   990,    990}, {0x00, 0x10, 0x00, 0xff}}},\n    {{{  2042,   2261,   -387}, 0, {     0,    990}, {0x00, 0x10, 0x00, 0xff}}},\n    {{{  1636,  -4607,   4275}, 0, {     0,      0}, {0x00, 0x10, 0x00, 0xff}}},\n    {{{  1925,  -4607,   4286}, 0, {   990,    990}, {0x00, 0x10, 0x00, 0xff}}},\n    {{{  1786,  -4607,   4136}, 0, {   990,      0}, {0x00, 0x10, 0x00, 0xff}}},\n    {{{  1775,  -4607,   4425}, 0, {     0,    990}, {0x00, 0x10, 0x00, 0xff}}},\n    {{{  2958,  -2818,   1710}, 0, {     0,      0}, {0x00, 0x10, 0x00, 0xff}}},\n    {{{  3097,  -2822,   1860}, 0, {   990,      0}, {0x00, 0x10, 0x00, 0xff}}},\n    {{{  3394,  -2913,   1441}, 0, {   990,    990}, {0x00, 0x10, 0x00, 0xff}}},\n    {{{  3255,  -2909,   1291}, 0, {     0,    990}, {0x00, 0x10, 0x00, 0xff}}},\n    {{{  2953,  -2621,   2700}, 0, {     0,      0}, {0x00, 0x10, 0x00, 0xff}}},\n    {{{  3362,  -2764,   2735}, 0, {   990,    990}, {0x00, 0x10, 0x00, 0xff}}},\n    {{{  3152,  -2758,   2510}, 0, {   990,      0}, {0x00, 0x10, 0x00, 0xff}}},\n    {{{  3162,  -2627,   2924}, 0, {     0,    990}, {0x00, 0x10, 0x00, 0xff}}},\n};\n\n// 0x0700DAA8 - 0x0700DB98\nstatic const Vtx ccm_seg7_vertex_0700DAA8[] = {\n    {{{  2163,   1630,   1460}, 0, {     0,      0}, {0x00, 0x10, 0x00, 0xff}}},\n    {{{  2220,   2062,    201}, 0, {   990,      0}, {0x00, 0x10, 0x00, 0xff}}},\n    {{{  2016,   2062,    192}, 0, {   990,    990}, {0x00, 0x10, 0x00, 0xff}}},\n    {{{  2033,   2195,   -194}, 0, {     0,      0}, {0x00, 0x10, 0x00, 0xff}}},\n    {{{  2238,   2194,   -185}, 0, {   990,      0}, {0x00, 0x10, 0x00, 0xff}}},\n    {{{  2247,   2261,   -378}, 0, {   990,    990}, {0x00, 0x10, 0x00, 0xff}}},\n    {{{  1556,   1482,   1801}, 0, {     0,      0}, {0x00, 0x10, 0x00, 0xff}}},\n    {{{  1591,   1445,   1999}, 0, {     0,    990}, {0x00, 0x10, 0x00, 0xff}}},\n    {{{  1792,   1471,   1968}, 0, {   990,    990}, {0x00, 0x10, 0x00, 0xff}}},\n    {{{  1757,   1508,   1770}, 0, {   990,      0}, {0x00, 0x10, 0x00, 0xff}}},\n    {{{   970,   3072,     59}, 0, {     0,    990}, {0x00, 0x10, 0x00, 0xff}}},\n    {{{  1358,   3072,  -1277}, 0, {   990,      0}, {0x00, 0x10, 0x00, 0xff}}},\n    {{{   949,   3072,  -1271}, 0, {     0,      0}, {0x00, 0x10, 0x00, 0xff}}},\n    {{{  1379,   3072,     53}, 0, {   990,    990}, {0x00, 0x10, 0x00, 0xff}}},\n    {{{  1959,   1631,   1450}, 0, {     0,    990}, {0x00, 0x10, 0x00, 0xff}}},\n};\n\n// 0x0700DB98 - 0x0700DC18\nstatic const Vtx ccm_seg7_vertex_0700DB98[] = {\n    {{{   768,  -4607,   6244}, 0, {     0,      0}, {0x00, 0x10, 0x00, 0xff}}},\n    {{{  1178,  -4607,   6603}, 0, {   990,    990}, {0x00, 0x10, 0x00, 0xff}}},\n    {{{  1177,  -4607,   6244}, 0, {   990,      0}, {0x00, 0x10, 0x00, 0xff}}},\n    {{{   768,  -4607,   6603}, 0, {     0,    990}, {0x00, 0x10, 0x00, 0xff}}},\n    {{{ -3892,  -2149,   6246}, 0, {     0,      0}, {0x00, 0x10, 0x00, 0xff}}},\n    {{{ -3892,  -2149,   6605}, 0, {     0,    990}, {0x00, 0x10, 0x00, 0xff}}},\n    {{{ -3268,  -2149,   6605}, 0, {   990,    990}, {0x00, 0x10, 0x00, 0xff}}},\n    {{{ -3268,  -2149,   6246}, 0, {   990,      0}, {0x00, 0x10, 0x00, 0xff}}},\n};\n\n// 0x0700DC18 - 0x0700DD28\nstatic const Gfx ccm_seg7_dl_0700DC18[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, snow_09009800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ccm_seg7_vertex_0700D658, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0700D748, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0700D838, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0700D938, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700DD28 - 0x0700DDF0\nstatic const Gfx ccm_seg7_dl_0700DD28[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, snow_09009000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ccm_seg7_vertex_0700D9B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0700DAA8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle(14,  0,  2, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0700DB98, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700DDF0 - 0x0700DE68\nconst Gfx ccm_seg7_dl_0700DDF0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_0700DC18),\n    gsSPDisplayList(ccm_seg7_dl_0700DD28),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ccm/areas/1/6/1.inc.c",
    "content": "// 0x0700DE68 - 0x0700DE80\nstatic const Lights1 ccm_seg7_lights_0700DE68 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700DE80 - 0x0700DE98\nstatic const Lights1 ccm_seg7_lights_0700DE80 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0x99, 0x99, 0x99, 0x28, 0x28, 0x28\n);\n\n// 0x0700DE98 - 0x0700DEB0\nstatic const Lights1 ccm_seg7_lights_0700DE98 = gdSPDefLights1(\n    0x5d, 0x5d, 0x5d,\n    0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28\n);\n\n// 0x0700DEB0 - 0x0700DEC8\nstatic const Lights1 ccm_seg7_lights_0700DEB0 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x0700DEC8 - 0x0700DF88\nstatic const Vtx ccm_seg7_vertex_0700DEC8[] = {\n    {{{  -355,    123,    357}, 0, {  2592,   -870}, {0x00, 0x7d, 0xee, 0xff}}},\n    {{{   433,    123,    357}, 0, {     0,   -870}, {0x00, 0x7d, 0xee, 0xff}}},\n    {{{   433,     41,   -195}, 0, {     0,    990}, {0x00, 0x7d, 0xee, 0xff}}},\n    {{{  -355,     41,   -195}, 0, {  2592,    990}, {0x00, 0x7d, 0xee, 0xff}}},\n    {{{   433,    358,    -52}, 0, {     0,   -372}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   330,    358,     50}, 0, {   308,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   433,    358,    357}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   330,    358,    255}, 0, {   308,    650}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   126,    358,    255}, 0, {   990,    650}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    23,    358,    357}, 0, {  1330,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   126,    358,     50}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    23,    358,    -52}, 0, {  1330,   -372}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700DF88 - 0x0700E068\nstatic const Vtx ccm_seg7_vertex_0700DF88[] = {\n    {{{   351,      0,    275}, 0, { -2482,   2726}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   105,    174,    275}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   105,      0,    275}, 0, {     0,   2726}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   351,      0,    275}, 0, { -2482,   2726}, {0x01, 0x01, 0x7e, 0xff}}},\n    {{{   349,    174,    273}, 0, { -2466,    990}, {0x01, 0x01, 0x7e, 0xff}}},\n    {{{   105,    174,    275}, 0, {     0,    990}, {0x01, 0x01, 0x7e, 0xff}}},\n    {{{    23,    205,    -52}, 0, {     0,   2520}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    23,    358,    357}, 0, {  4056,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    23,    358,    -52}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    23,    205,    357}, 0, {  4056,   2520}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   433,    205,    -52}, 0, { -4118,   2520}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    23,    205,    -52}, 0, {     0,   2520}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   433,    358,    -52}, 0, { -4118,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    23,    358,    -52}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700E068 - 0x0700E168\nstatic const Vtx ccm_seg7_vertex_0700E068[] = {\n    {{{   126,    358,     50}, 0, {  3034,   -542}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   126,    154,     50}, 0, {  3034,   1498}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   330,    154,     50}, 0, {   990,   1500}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   433,    205,    357}, 0, { -4118,  -3098}, {0x2c, 0x8a, 0x00, 0xff}}},\n    {{{   351,    174,     29}, 0, { -3300,    172}, {0x2c, 0x8a, 0x00, 0xff}}},\n    {{{   433,    205,    -52}, 0, { -4118,    990}, {0x2c, 0x8a, 0x00, 0xff}}},\n    {{{   433,    205,    357}, 0, { -4118,  -3098}, {0x2b, 0x89, 0x00, 0xff}}},\n    {{{   349,    174,    273}, 0, { -3284,  -2264}, {0x2b, 0x89, 0x00, 0xff}}},\n    {{{   351,    174,     29}, 0, { -3300,    172}, {0x2b, 0x89, 0x00, 0xff}}},\n    {{{   433,    205,    -52}, 0, { -4118,    990}, {0x00, 0x8a, 0xd3, 0xff}}},\n    {{{   351,    174,     29}, 0, { -3300,    172}, {0x00, 0x8a, 0xd3, 0xff}}},\n    {{{   105,    174,     29}, 0, {  -848,    172}, {0x00, 0x8a, 0xd3, 0xff}}},\n    {{{    23,    205,    -52}, 0, {     0,    990}, {0x00, 0x8a, 0xd3, 0xff}}},\n    {{{   105,    174,    275}, 0, {  -848,  -2280}, {0xd4, 0x8a, 0x00, 0xff}}},\n    {{{    23,    205,    357}, 0, {     0,  -3098}, {0xd4, 0x8a, 0x00, 0xff}}},\n    {{{   105,    174,     29}, 0, {  -848,    172}, {0xd4, 0x8a, 0x00, 0xff}}},\n};\n\n// 0x0700E168 - 0x0700E268\nstatic const Vtx ccm_seg7_vertex_0700E168[] = {\n    {{{    23,    205,    357}, 0, {     0,  -3098}, {0xd4, 0x8a, 0x00, 0xff}}},\n    {{{    23,    205,    -52}, 0, {     0,    990}, {0xd4, 0x8a, 0x00, 0xff}}},\n    {{{   105,    174,     29}, 0, {  -848,    172}, {0xd4, 0x8a, 0x00, 0xff}}},\n    {{{   330,    358,     50}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   330,    154,     50}, 0, {   990,   3032}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   330,    154,    255}, 0, {  3034,   3032}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   330,    358,    255}, 0, {  3034,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   126,    358,    255}, 0, {  3034,   -542}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   330,    154,    255}, 0, {   990,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   126,    154,    255}, 0, {  3034,   1498}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   126,    358,     50}, 0, {  3034,   -542}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   330,    154,     50}, 0, {   990,   1500}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   330,    358,     50}, 0, {   990,   -542}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   126,    154,    255}, 0, {  3034,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   126,    358,     50}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   126,    358,    255}, 0, {  3034,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700E268 - 0x0700E2C8\nstatic const Vtx ccm_seg7_vertex_0700E268[] = {\n    {{{   126,    154,    255}, 0, {  3034,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   126,    154,     50}, 0, {   990,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   126,    358,     50}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   126,    358,    255}, 0, {  3034,   -542}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   330,    358,    255}, 0, {   990,   -542}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   330,    154,    255}, 0, {   990,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700E2C8 - 0x0700E3A8\nstatic const Vtx ccm_seg7_vertex_0700E2C8[] = {\n    {{{   351,    174,     29}, 0, { -2482,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   351,      0,     29}, 0, { -2482,   2726}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   105,      0,     29}, 0, {     0,   2726}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   105,    174,     29}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   349,    174,    273}, 0, {  2404,    990}, {0x7e, 0x01, 0x01, 0xff}}},\n    {{{   351,      0,    275}, 0, {  2420,   2726}, {0x7e, 0x01, 0x01, 0xff}}},\n    {{{   351,    174,     29}, 0, {     0,    990}, {0x7e, 0x01, 0x01, 0xff}}},\n    {{{   351,      0,    275}, 0, {  2420,   2726}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   351,      0,     29}, 0, {     0,   2726}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   351,    174,     29}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   105,      0,     29}, 0, {     0,   2726}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   105,    174,    275}, 0, {  2420,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   105,    174,     29}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   105,      0,    275}, 0, {  2420,   2726}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700E3A8 - 0x0700E428\nstatic const Vtx ccm_seg7_vertex_0700E3A8[] = {\n    {{{  -334,   -204,   -154}, 0, { -2340,  -6676}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -334,     27,   -154}, 0, {     0,  -6676}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   433,     27,   -154}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   433,   -204,   -154}, 0, { -2338,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -334,   -204,    357}, 0, { -2340,  -4120}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -334,    102,    357}, 0, {   724,  -4122}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -334,     27,   -154}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -334,   -204,   -154}, 0, { -2340,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700E428 - 0x0700E468\nstatic const Vtx ccm_seg7_vertex_0700E428[] = {\n    {{{   433,     21,   -192}, 0, {     0,      0}, {0x00, 0x83, 0x12, 0xff}}},\n    {{{   433,    103,    360}, 0, {     0,      0}, {0x00, 0x83, 0x12, 0xff}}},\n    {{{  -355,    103,    360}, 0, {     0,      0}, {0x00, 0x83, 0x12, 0xff}}},\n    {{{  -355,     21,   -192}, 0, {     0,      0}, {0x00, 0x83, 0x12, 0xff}}},\n};\n\n// 0x0700E468 - 0x0700E4A8\nstatic const Vtx ccm_seg7_vertex_0700E468[] = {\n    {{{   126,    154,     50}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   126,    154,    255}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   330,    154,     50}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   330,    154,    255}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700E4A8 - 0x0700E530\nstatic const Gfx ccm_seg7_dl_0700E4A8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ccm_seg7_lights_0700DE68.l, 1),\n    gsSPLight(&ccm_seg7_lights_0700DE68.a, 2),\n    gsSPVertex(ccm_seg7_vertex_0700DEC8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10,  9,  8, 0x0, 10, 11,  9, 0x0),\n    gsSP2Triangles(11, 10,  4, 0x0, 10,  5,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700E530 - 0x0700E668\nstatic const Gfx ccm_seg7_dl_0700E530[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ccm_seg7_vertex_0700DF88, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSPLight(&ccm_seg7_lights_0700DE80.l, 1),\n    gsSPLight(&ccm_seg7_lights_0700DE80.a, 2),\n    gsSPVertex(ccm_seg7_vertex_0700E068, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0700E168, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0700E268, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPLight(&ccm_seg7_lights_0700DE98.l, 1),\n    gsSPLight(&ccm_seg7_lights_0700DE98.a, 2),\n    gsSPVertex(ccm_seg7_vertex_0700E2C8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700E668 - 0x0700E6C0\nstatic const Gfx ccm_seg7_dl_0700E668[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ccm_seg7_lights_0700DE68.l, 1),\n    gsSPLight(&ccm_seg7_lights_0700DE68.a, 2),\n    gsSPVertex(ccm_seg7_vertex_0700E3A8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700E6C0 - 0x0700E708\nstatic const Gfx ccm_seg7_dl_0700E6C0[] = {\n    gsSPVertex(ccm_seg7_vertex_0700E428, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSPLight(&ccm_seg7_lights_0700DEB0.l, 1),\n    gsSPLight(&ccm_seg7_lights_0700DEB0.a, 2),\n    gsSPVertex(ccm_seg7_vertex_0700E468, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700E708 - 0x0700E790\nconst Gfx ccm_seg7_dl_0700E708[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_0700E4A8),\n    gsSPDisplayList(ccm_seg7_dl_0700E530),\n    gsSPDisplayList(ccm_seg7_dl_0700E668),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(ccm_seg7_dl_0700E6C0),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ccm/areas/1/6/2.inc.c",
    "content": "// 0x0700E790 - 0x0700E850\nstatic const Vtx ccm_seg7_vertex_0700E790[] = {\n    {{{   433,   -204,   -410}, 0, {  4566,    224}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -488,    -50,   -410}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   433,    -50,   -410}, 0, {  4566,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -488,   -204,   -410}, 0, {     0,    224}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -488,   -204,   -103}, 0, {  1528,    224}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -488,    -50,   -410}, 0, {    -6,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -488,   -204,   -410}, 0, {    -6,    224}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -488,    -50,   -103}, 0, {  1528,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -488,    -50,    203}, 0, {   680,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -488,   -204,    357}, 0, {  1446,    224}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -488,    -50,    357}, 0, {  1446,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -488,   -204,    203}, 0, {   680,    224}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700E850 - 0x0700E8D0\nstatic const Vtx ccm_seg7_vertex_0700E850[] = {\n    {{{   433,     41,   -195}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -355,     -9,   -195}, 0, { 15708,    -34}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -355,     41,   -195}, 0, { 15708,    988}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   433,     -9,   -195}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -355,     41,   -195}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -355,     -9,   -195}, 0, {   -40,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -355,     72,    357}, 0, { 11112,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -355,    123,    357}, 0, { 11128,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700E8D0 - 0x0700E928\nstatic const Gfx ccm_seg7_dl_0700E8D0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ccm_seg7_vertex_0700E790, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700E928 - 0x0700E970\nstatic const Gfx ccm_seg7_dl_0700E928[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ccm_seg7_vertex_0700E850, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700E970 - 0x0700EA00\nconst Gfx ccm_seg7_dl_0700E970[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_0700E8D0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_0700E928),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ccm/areas/1/6/geo.inc.c",
    "content": "// 0x0E00042C\nconst GeoLayout ccm_geo_00042C[] = {\n    GEO_CULLING_RADIUS(800),\n    GEO_OPEN_NODE(),\n        GEO_RENDER_RANGE(-1000, 4000),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, ccm_seg7_dl_0700E708),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, ccm_seg7_dl_0700E970),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ccm/areas/1/7/1.inc.c",
    "content": "// 0x0700EA00 - 0x0700EA18\nstatic const Lights1 ccm_seg7_lights_0700EA00 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700EA18 - 0x0700EA30\nstatic const Lights1 ccm_seg7_lights_0700EA18 = gdSPDefLights1(\n    0x33, 0x33, 0x33,\n    0x66, 0x66, 0x66, 0x28, 0x28, 0x28\n);\n\n// 0x0700EA30 - 0x0700EA48\nstatic const Lights1 ccm_seg7_lights_0700EA30 = gdSPDefLights1(\n    0x5d, 0x5d, 0x5d,\n    0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28\n);\n\n// 0x0700EA48 - 0x0700EAE8\nstatic const Vtx ccm_seg7_vertex_0700EA48[] = {\n    {{{  -116,    100,    541}, 0, { -3130,   1874}, {0x16, 0x7a, 0x17, 0xff}}},\n    {{{   573,    100,    -99}, 0, {     2,   1874}, {0x16, 0x7a, 0x17, 0xff}}},\n    {{{    44,    307,   -669}, 0, {     2,   -710}, {0x16, 0x7a, 0x17, 0xff}}},\n    {{{  -611,    307,      9}, 0, { -3130,   -540}, {0x19, 0x7a, 0x18, 0xff}}},\n    {{{  -116,    100,    541}, 0, { -3130,   1874}, {0x19, 0x7a, 0x18, 0xff}}},\n    {{{    44,    307,   -669}, 0, {     2,   -710}, {0x19, 0x7a, 0x18, 0xff}}},\n    {{{  -176,    565,   -440}, 0, { -1424,   1602}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   524,    565,   -137}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    36,    565,   -662}, 0, { -1460,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   299,    565,     71}, 0, {     0,   1602}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700EAE8 - 0x0700EBD8\nstatic const Vtx ccm_seg7_vertex_0700EAE8[] = {\n    {{{   221,   -511,    214}, 0, {  4566,    990}, {0x56, 0x00, 0x5d, 0xff}}},\n    {{{   289,   -378,    151}, 0, {  5486,   -338}, {0x56, 0x00, 0x5d, 0xff}}},\n    {{{   221,   -255,    214}, 0, {  4566,  -1566}, {0x56, 0x00, 0x5d, 0xff}}},\n    {{{   364,   -378,     81}, 0, {  3442,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   219,   -378,     76}, 0, {  2420,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   289,   -378,    151}, 0, {  2420,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   294,   -378,      6}, 0, {  3442,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -115,   -511,    527}, 0, {     0,    990}, {0x56, 0x00, 0x5c, 0xff}}},\n    {{{   109,   -511,    318}, 0, {  3034,    990}, {0x56, 0x00, 0x5c, 0xff}}},\n    {{{  -115,     92,    527}, 0, {     0,  -5040}, {0x56, 0x00, 0x5c, 0xff}}},\n    {{{   109,   -255,    318}, 0, {  3034,  -1566}, {0x56, 0x00, 0x5c, 0xff}}},\n    {{{  -115,     92,    527}, 0, {     0,  -5040}, {0x56, 0x00, 0x5d, 0xff}}},\n    {{{   109,   -255,    318}, 0, {  3034,  -1566}, {0x56, 0x00, 0x5d, 0xff}}},\n    {{{   559,     92,    -99}, 0, {  9166,  -5040}, {0x56, 0x00, 0x5d, 0xff}}},\n    {{{   289,   -275,    151}, 0, {  5486,  -1360}, {0x56, 0x00, 0x5d, 0xff}}},\n};\n\n// 0x0700EBD8 - 0x0700ECB8\nstatic const Vtx ccm_seg7_vertex_0700EBD8[] = {\n    {{{    36,   -511,   -662}, 0, { -7694,    990}, {0x5d, 0x00, 0xaa, 0xff}}},\n    {{{    36,    307,   -662}, 0, { -7694,  -7186}, {0x5d, 0x00, 0xaa, 0xff}}},\n    {{{   559,     92,    -99}, 0, {     0,  -5040}, {0x5d, 0x00, 0xaa, 0xff}}},\n    {{{   289,   -275,    151}, 0, {  5486,  -1360}, {0x56, 0x00, 0x5c, 0xff}}},\n    {{{   364,   -275,     81}, 0, {  6508,  -1360}, {0x56, 0x00, 0x5c, 0xff}}},\n    {{{   559,     92,    -99}, 0, {  9166,  -5040}, {0x56, 0x00, 0x5c, 0xff}}},\n    {{{   559,     92,    -99}, 0, {  9166,  -5040}, {0x56, 0x00, 0x5d, 0xff}}},\n    {{{   364,   -275,     81}, 0, {  6508,  -1360}, {0x56, 0x00, 0x5d, 0xff}}},\n    {{{   559,   -511,    -99}, 0, {  9166,    990}, {0x56, 0x00, 0x5d, 0xff}}},\n    {{{   364,   -378,     81}, 0, {  6508,   -338}, {0x56, 0x00, 0x5d, 0xff}}},\n    {{{   364,   -378,     81}, 0, {  6508,   -338}, {0x56, 0x00, 0x5c, 0xff}}},\n    {{{   289,   -378,    151}, 0, {  5486,   -338}, {0x56, 0x00, 0x5c, 0xff}}},\n    {{{   221,   -511,    214}, 0, {  4566,    990}, {0x56, 0x00, 0x5c, 0xff}}},\n    {{{   221,   -511,    214}, 0, {  4566,    990}, {0x56, 0x00, 0x5d, 0xff}}},\n};\n\n// 0x0700ECB8 - 0x0700ED98\nstatic const Vtx ccm_seg7_vertex_0700ECB8[] = {\n    {{{  -115,   -511,    527}, 0, {     0,    990}, {0xa3, 0x00, 0x56, 0xff}}},\n    {{{  -115,     92,    527}, 0, {     0,  -5040}, {0xa3, 0x00, 0x56, 0xff}}},\n    {{{  -603,   -511,      2}, 0, { -7184,    990}, {0xa3, 0x00, 0x56, 0xff}}},\n    {{{  -603,    297,      2}, 0, { -7184,  -7084}, {0xa3, 0x00, 0x56, 0xff}}},\n    {{{    36,   -511,   -662}, 0, { -7694,    990}, {0x5d, 0x00, 0xaa, 0xff}}},\n    {{{   559,     92,    -99}, 0, {     0,  -5040}, {0x5d, 0x00, 0xaa, 0xff}}},\n    {{{   559,   -511,    -99}, 0, {     0,    990}, {0x5d, 0x00, 0xaa, 0xff}}},\n    {{{  -176,    565,   -440}, 0, { -7006,  -3494}, {0xa3, 0x00, 0x55, 0xff}}},\n    {{{  -176,    307,   -440}, 0, { -7004,   -916}, {0xa3, 0x00, 0x55, 0xff}}},\n    {{{   -10,    237,   -258}, 0, { -4546,   -214}, {0xa3, 0x00, 0x55, 0xff}}},\n    {{{   524,    116,   -137}, 0, {  3030,    990}, {0x56, 0x00, 0x5d, 0xff}}},\n    {{{   524,    565,   -137}, 0, {  3030,  -3494}, {0x56, 0x00, 0x5d, 0xff}}},\n    {{{   299,    116,     71}, 0, {     0,    990}, {0x56, 0x00, 0x5d, 0xff}}},\n    {{{   299,    565,     71}, 0, {     0,  -3494}, {0x56, 0x00, 0x5d, 0xff}}},\n};\n\n// 0x0700ED98 - 0x0700EE38\nstatic const Vtx ccm_seg7_vertex_0700ED98[] = {\n    {{{    36,    307,   -662}, 0, { -7176,   -916}, {0x5d, 0x00, 0xaa, 0xff}}},\n    {{{   524,    565,   -137}, 0, {     0,  -3494}, {0x5d, 0x00, 0xaa, 0xff}}},\n    {{{   524,    116,   -137}, 0, {     0,    990}, {0x5d, 0x00, 0xaa, 0xff}}},\n    {{{    36,    565,   -662}, 0, { -7176,  -3494}, {0x5d, 0x00, 0xaa, 0xff}}},\n    {{{   299,    116,     71}, 0, {     0,    990}, {0xa4, 0x00, 0x56, 0xff}}},\n    {{{   299,    565,     71}, 0, {     0,  -3494}, {0xa4, 0x00, 0x56, 0xff}}},\n    {{{   -10,    237,   -258}, 0, { -4546,   -214}, {0xa4, 0x00, 0x56, 0xff}}},\n    {{{   299,    565,     71}, 0, {     0,  -3494}, {0xa3, 0x00, 0x56, 0xff}}},\n    {{{  -176,    565,   -440}, 0, { -7006,  -3494}, {0xa3, 0x00, 0x56, 0xff}}},\n    {{{   -10,    237,   -258}, 0, { -4546,   -214}, {0xa3, 0x00, 0x56, 0xff}}},\n};\n\n// 0x0700EE38 - 0x0700EF38\nstatic const Vtx ccm_seg7_vertex_0700EE38[] = {\n    {{{   109,   -255,    318}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    39,   -255,    243}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   221,   -255,    214}, 0, {  1500,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   219,   -378,     76}, 0, { -1052,   -338}, {0x5c, 0x00, 0xaa, 0xff}}},\n    {{{   219,   -275,     76}, 0, { -1052,  -1360}, {0x5c, 0x00, 0xaa, 0xff}}},\n    {{{   289,   -275,    151}, 0, {     0,  -1360}, {0x5c, 0x00, 0xaa, 0xff}}},\n    {{{   289,   -275,    151}, 0, {  2420,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   219,   -275,     76}, 0, {  2420,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   364,   -275,     81}, 0, {  3442,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   294,   -275,      6}, 0, {  3442,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   294,   -378,      6}, 0, { -1052,   -338}, {0xa4, 0x00, 0x56, 0xff}}},\n    {{{   364,   -275,     81}, 0, {     0,  -1360}, {0xa4, 0x00, 0x56, 0xff}}},\n    {{{   294,   -275,      6}, 0, { -1052,  -1360}, {0xa4, 0x00, 0x56, 0xff}}},\n    {{{    39,   -255,    243}, 0, { -1052,  -1564}, {0x5c, 0x00, 0xaa, 0xff}}},\n    {{{   109,   -255,    318}, 0, {     0,  -1564}, {0x5c, 0x00, 0xaa, 0xff}}},\n    {{{    39,   -511,    243}, 0, { -1052,    990}, {0x5c, 0x00, 0xaa, 0xff}}},\n};\n\n// 0x0700EF38 - 0x0700EF98\nstatic const Vtx ccm_seg7_vertex_0700EF38[] = {\n    {{{    39,   -255,    243}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   152,   -255,    139}, 0, {  1500,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   221,   -255,    214}, 0, {  1500,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   152,   -255,    139}, 0, { -1052,  -1564}, {0xa3, 0x00, 0x55, 0xff}}},\n    {{{   152,   -511,    139}, 0, { -1052,    990}, {0xa3, 0x00, 0x55, 0xff}}},\n    {{{   221,   -255,    214}, 0, {     0,  -1564}, {0xa3, 0x00, 0x55, 0xff}}},\n};\n\n// 0x0700EF98 - 0x0700F058\nstatic const Vtx ccm_seg7_vertex_0700EF98[] = {\n    {{{   289,   -378,    151}, 0, {     0,   -338}, {0x5c, 0x00, 0xaa, 0xff}}},\n    {{{   219,   -378,     76}, 0, { -1052,   -338}, {0x5c, 0x00, 0xaa, 0xff}}},\n    {{{   289,   -275,    151}, 0, {     0,  -1360}, {0x5c, 0x00, 0xaa, 0xff}}},\n    {{{   294,   -378,      6}, 0, { -1052,   -338}, {0xa4, 0x00, 0x56, 0xff}}},\n    {{{   364,   -378,     81}, 0, {     0,   -338}, {0xa4, 0x00, 0x56, 0xff}}},\n    {{{   364,   -275,     81}, 0, {     0,  -1360}, {0xa4, 0x00, 0x56, 0xff}}},\n    {{{   221,   -511,    214}, 0, {     0,    990}, {0xa3, 0x00, 0x55, 0xff}}},\n    {{{   221,   -255,    214}, 0, {     0,  -1564}, {0xa3, 0x00, 0x55, 0xff}}},\n    {{{   152,   -511,    139}, 0, { -1052,    990}, {0xa3, 0x00, 0x55, 0xff}}},\n    {{{    39,   -511,    243}, 0, { -1052,    990}, {0x5c, 0x00, 0xaa, 0xff}}},\n    {{{   109,   -255,    318}, 0, {     0,  -1564}, {0x5c, 0x00, 0xaa, 0xff}}},\n    {{{   109,   -511,    318}, 0, {     0,    990}, {0x5c, 0x00, 0xaa, 0xff}}},\n};\n\n// 0x0700F058 - 0x0700F148\nstatic const Vtx ccm_seg7_vertex_0700F058[] = {\n    {{{   173,   -511,   -439}, 0, {     0,  -5654}, {0x56, 0x00, 0x5d, 0xff}}},\n    {{{  -314,   -100,     13}, 0, {  3964,   1050}, {0x56, 0x00, 0x5d, 0xff}}},\n    {{{  -314,   -511,     13}, 0, {  -132,    988}, {0x56, 0x00, 0x5d, 0xff}}},\n    {{{   452,   -100,   -139}, 0, {  6612,  -3098}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -314,   -100,     13}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   173,   -100,   -439}, 0, {  6612,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -35,   -100,    313}, 0, {     0,  -3098}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   452,   -511,   -139}, 0, {     0,    990}, {0xa4, 0x00, 0x56, 0xff}}},\n    {{{   452,   -100,   -139}, 0, {  4068,    990}, {0xa4, 0x00, 0x56, 0xff}}},\n    {{{   173,   -100,   -439}, 0, {  4068,  -3098}, {0xa4, 0x00, 0x56, 0xff}}},\n    {{{   173,   -511,   -439}, 0, {     0,  -3098}, {0xa4, 0x00, 0x56, 0xff}}},\n    {{{  -314,   -511,     13}, 0, {     0,  -3098}, {0x5c, 0x00, 0xaa, 0xff}}},\n    {{{   -35,   -100,    313}, 0, {  4068,    990}, {0x5c, 0x00, 0xaa, 0xff}}},\n    {{{   -35,   -511,    313}, 0, {     0,    990}, {0x5c, 0x00, 0xaa, 0xff}}},\n    {{{  -314,   -100,     13}, 0, {  4068,  -3098}, {0x5c, 0x00, 0xaa, 0xff}}},\n};\n\n// 0x0700F148 - 0x0700F1B8\nstatic const Vtx ccm_seg7_vertex_0700F148[] = {\n    {{{  -314,   -501,     13}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   452,   -501,   -139}, 0, {  6612,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   173,   -501,   -439}, 0, {  6612,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   173,   -511,   -439}, 0, {     0,  -5654}, {0x56, 0x00, 0x5d, 0xff}}},\n    {{{   173,   -100,   -439}, 0, {  4068,  -5590}, {0x56, 0x00, 0x5d, 0xff}}},\n    {{{  -314,   -100,     13}, 0, {  3964,   1050}, {0x56, 0x00, 0x5d, 0xff}}},\n    {{{   -35,   -501,    313}, 0, {     0,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700F1B8 - 0x0700F210\nstatic const Gfx ccm_seg7_dl_0700F1B8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ccm_seg7_lights_0700EA00.l, 1),\n    gsSPLight(&ccm_seg7_lights_0700EA00.a, 2),\n    gsSPVertex(ccm_seg7_vertex_0700EA48, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700F210 - 0x0700F3B0\nstatic const Gfx ccm_seg7_dl_0700F210[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ccm_seg7_vertex_0700EAE8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(12,  2, 13, 0x0,  2, 14, 13, 0x0),\n    gsSP1Triangle(14,  2,  1, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0700EBD8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  8,  9, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0700ECB8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0700ED98, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSPLight(&ccm_seg7_lights_0700EA18.l, 1),\n    gsSPLight(&ccm_seg7_lights_0700EA18.a, 2),\n    gsSPVertex(ccm_seg7_vertex_0700EE38, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0700EF38, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPLight(&ccm_seg7_lights_0700EA30.l, 1),\n    gsSPLight(&ccm_seg7_lights_0700EA30.a, 2),\n    gsSPVertex(ccm_seg7_vertex_0700EF98, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700F3B0 - 0x0700F440\nstatic const Gfx ccm_seg7_dl_0700F3B0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ccm_seg7_lights_0700EA18.l, 1),\n    gsSPLight(&ccm_seg7_lights_0700EA18.a, 2),\n    gsSPVertex(ccm_seg7_vertex_0700F058, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0700F148, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  6,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700F440 - 0x0700F4C0\nconst Gfx ccm_seg7_dl_0700F440[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_0700F1B8),\n    gsSPDisplayList(ccm_seg7_dl_0700F210),\n    gsSPDisplayList(ccm_seg7_dl_0700F3B0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ccm/areas/1/7/2.inc.c",
    "content": "// 0x0700F4C0 - 0x0700F500\nstatic const Vtx ccm_seg7_vertex_0700F4C0[] = {\n    {{{   233,   -275,     91}, 0, {     0,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{   233,   -378,     91}, 0, {     0,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{   308,   -275,     21}, 0, {   990,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{   308,   -378,     21}, 0, {   990,    990}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x0700F500 - 0x0700F5C0\nstatic const Vtx ccm_seg7_vertex_0700F500[] = {\n    {{{  -116,    100,    541}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   573,   -104,    -99}, 0, {  6232,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   573,    100,    -99}, 0, {  6236,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -116,   -104,    541}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -611,    307,      9}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -116,   -104,    541}, 0, {  4992,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -116,    100,    541}, 0, {  4996,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -611,    102,      9}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   573,    100,    -99}, 0, {  4996,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    44,    102,   -669}, 0, {  -384,   -104}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    44,    307,   -669}, 0, {  -384,    918}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   573,   -104,    -99}, 0, {  4992,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700F5C0 - 0x0700F5F8\nstatic const Gfx ccm_seg7_dl_0700F5C0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ccm_seg7_vertex_0700F4C0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700F5F8 - 0x0700F650\nstatic const Gfx ccm_seg7_dl_0700F5F8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ccm_seg7_vertex_0700F500, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700F650 - 0x0700F6E0\nconst Gfx ccm_seg7_dl_0700F650[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_0700F5C0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_0700F5F8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ccm/areas/1/7/3.inc.c",
    "content": "// 0x0700F6E0 - 0x0700F6F8\nstatic const Lights1 ccm_seg7_lights_0700F6E0 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700F6F8 - 0x0700F738\nstatic const Vtx ccm_seg7_vertex_0700F6F8[] = {\n    {{{   219,   -378,     76}, 0, {     0,    990}, {0x56, 0x00, 0x5c, 0xff}}},\n    {{{   294,   -378,      6}, 0, {   990,    990}, {0x56, 0x00, 0x5c, 0xff}}},\n    {{{   294,   -275,      6}, 0, {   990,      0}, {0x56, 0x00, 0x5c, 0xff}}},\n    {{{   219,   -275,     76}, 0, {     0,      0}, {0x56, 0x00, 0x5c, 0xff}}},\n};\n\n// 0x0700F738 - 0x0700F780\nstatic const Gfx ccm_seg7_dl_0700F738[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ccm_seg7_lights_0700F6E0.l, 1),\n    gsSPLight(&ccm_seg7_lights_0700F6E0.a, 2),\n    gsSPVertex(ccm_seg7_vertex_0700F6F8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700F780 - 0x0700F800\nconst Gfx ccm_seg7_dl_0700F780[] = {\n    gsDPPipeSync(),\n    gsDPSetEnvColor(255, 255, 255, 90),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_0700F738),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ccm/areas/1/7/geo.inc.c",
    "content": "// 0x0E00045C\nconst GeoLayout ccm_geo_00045C[] = {\n    GEO_CULLING_RADIUS(900),\n    GEO_OPEN_NODE(),\n        GEO_RENDER_RANGE(-1000, 7000),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, ccm_seg7_dl_0700F440),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, ccm_seg7_dl_0700F650),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, ccm_seg7_dl_0700F780),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ccm/areas/1/8/geo.inc.c",
    "content": "// 0x0E000494\nconst GeoLayout ccm_geo_000494[] = {\n    GEO_CULLING_RADIUS(400),\n    GEO_OPEN_NODE(),\n        GEO_RENDER_RANGE(-500, 7000),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, ccm_seg7_dl_0700FB00),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ccm/areas/1/8/model.inc.c",
    "content": "// 0x0700F800 - 0x0700F818\nstatic const Lights1 ccm_seg7_lights_0700F800 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700F818 - 0x0700F878\nstatic const Vtx ccm_seg7_vertex_0700F818[] = {\n    {{{  -177,    102,   -153}, 0, {  2906,  -3104}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    102,    154}, 0, {  1832,  -4510}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   177,    102,     51}, 0, {  1020,  -3890}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -177,    102,     51}, 0, {  2776,  -4116}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   177,    102,   -153}, 0, {  1152,  -2876}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    102,   -255}, 0, {  2094,  -2482}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700F878 - 0x0700F968\nstatic const Vtx ccm_seg7_vertex_0700F878[] = {\n    {{{   177,      0,     51}, 0, {     0,    990}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{     0,    102,    154}, 0, {  2012,      0}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{     0,      0,    154}, 0, {  2012,    990}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{  -177,      0,   -153}, 0, {  2012,    990}, {0xc1, 0x00, 0x92, 0xff}}},\n    {{{  -177,    102,   -153}, 0, {  2012,      0}, {0xc1, 0x00, 0x92, 0xff}}},\n    {{{     0,    102,   -255}, 0, {     0,      0}, {0xc1, 0x00, 0x92, 0xff}}},\n    {{{     0,      0,   -255}, 0, {     0,    990}, {0xc1, 0x00, 0x92, 0xff}}},\n    {{{  -177,      0,     51}, 0, {  2012,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -177,    102,     51}, 0, {  2012,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -177,    102,   -153}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -177,      0,   -153}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,      0,    154}, 0, {  2012,    990}, {0xc1, 0x00, 0x6d, 0xff}}},\n    {{{  -177,    102,     51}, 0, {     0,      0}, {0xc1, 0x00, 0x6d, 0xff}}},\n    {{{  -177,      0,     51}, 0, {     0,    990}, {0xc1, 0x00, 0x6d, 0xff}}},\n    {{{     0,    102,    154}, 0, {  2012,      0}, {0xc1, 0x00, 0x6d, 0xff}}},\n};\n\n// 0x0700F968 - 0x0700FA18\nstatic const Vtx ccm_seg7_vertex_0700F968[] = {\n    {{{     0,      0,   -255}, 0, {     0,    990}, {0x3f, 0x00, 0x92, 0xff}}},\n    {{{     0,    102,   -255}, 0, {     0,      0}, {0x3f, 0x00, 0x92, 0xff}}},\n    {{{   177,    102,   -153}, 0, {  2012,      0}, {0x3f, 0x00, 0x92, 0xff}}},\n    {{{   177,      0,     51}, 0, {     0,    990}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{   177,    102,     51}, 0, {     0,      0}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{     0,    102,    154}, 0, {  2012,      0}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{   177,      0,   -153}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   177,    102,     51}, 0, {  2012,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   177,      0,     51}, 0, {  2012,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   177,    102,   -153}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   177,      0,   -153}, 0, {  2012,    990}, {0x3f, 0x00, 0x92, 0xff}}},\n};\n\n// 0x0700FA18 - 0x0700FA70\nstatic const Gfx ccm_seg7_dl_0700FA18[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ccm_seg7_lights_0700F800.l, 1),\n    gsSPLight(&ccm_seg7_lights_0700F800.a, 2),\n    gsSPVertex(ccm_seg7_vertex_0700F818, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  0,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700FA70 - 0x0700FB00\nstatic const Gfx ccm_seg7_dl_0700FA70[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ccm_seg7_texture_07001900),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ccm_seg7_vertex_0700F878, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0700F968, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP1Triangle( 0,  2, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700FB00 - 0x0700FB78\nconst Gfx ccm_seg7_dl_0700FB00[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_0700FA18),\n    gsSPDisplayList(ccm_seg7_dl_0700FA70),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ccm/areas/1/9/geo.inc.c",
    "content": "// 0x0E0004BC\nconst GeoLayout ccm_geo_0004BC[] = {\n    GEO_CULLING_RADIUS(800),\n    GEO_OPEN_NODE(),\n        GEO_RENDER_RANGE(-1000, 7000),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, ccm_seg7_dl_0700FD08),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ccm/areas/1/9/model.inc.c",
    "content": "// 0x0700FB78 - 0x0700FB90\nstatic const Lights1 ccm_seg7_lights_0700FB78 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700FB90 - 0x0700FC90\nstatic const Vtx ccm_seg7_vertex_0700FB90[] = {\n    {{{  -123,   -613,    238}, 0, {     0,    990}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  -283,    666,    -85}, 0, {   690,    138}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  -283,   -613,    -85}, 0, {   690,    990}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{   201,   -613,     78}, 0, {   690,    990}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{   201,    666,     78}, 0, {   690,   -288}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  -123,    666,    238}, 0, {     0,   -288}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  -123,   -613,    238}, 0, {     0,    990}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{    41,   -613,   -246}, 0, {   690,    990}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{    41,    666,   -246}, 0, {   690,    138}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{   201,    666,     78}, 0, {     0,    138}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{   201,   -613,     78}, 0, {     0,    990}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  -283,   -613,    -85}, 0, {   690,   1244}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{    41,    666,   -246}, 0, {     0,      0}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{    41,   -613,   -246}, 0, {     0,   1244}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  -283,    666,    -85}, 0, {   690,      0}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  -123,    666,    238}, 0, {     0,    138}, {0x8f, 0x00, 0x38, 0xff}}},\n};\n\n// 0x0700FC90 - 0x0700FD08\nstatic const Gfx ccm_seg7_dl_0700FC90[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ccm_seg7_lights_0700FB78.l, 1),\n    gsSPLight(&ccm_seg7_lights_0700FB78.a, 2),\n    gsSPVertex(ccm_seg7_vertex_0700FB90, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700FD08 - 0x0700FD88\nconst Gfx ccm_seg7_dl_0700FD08[] = {\n    gsDPPipeSync(),\n    gsDPSetEnvColor(255, 255, 255, 90),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_0700FC90),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ccm/areas/1/collision.inc.c",
    "content": "// 0x070138E8 - 0x07016282\nconst Collision ccm_seg7_area_1_collision[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x299),\n    COL_VERTEX(-942, -511, 2286),\n    COL_VERTEX(-1102, 768, 1962),\n    COL_VERTEX(-1102, -511, 1962),\n    COL_VERTEX(-942, 768, 2286),\n    COL_VERTEX(-617, -511, 2126),\n    COL_VERTEX(-3235, 1045, 1509),\n    COL_VERTEX(-3235, 789, 1509),\n    COL_VERTEX(-778, 768, 1801),\n    COL_VERTEX(-617, 768, 2126),\n    COL_VERTEX(256, 1382, 2696),\n    COL_VERTEX(-3071, 1040, 1024),\n    COL_VERTEX(-778, -511, 1801),\n    COL_VERTEX(-50, 1280, 2048),\n    COL_VERTEX(-50, 512, 2048),\n    COL_VERTEX(5039, -4607, -1191),\n    COL_VERTEX(4005, -4607, 1924),\n    COL_VERTEX(768, -1074, -4453),\n    COL_VERTEX(-1706, 2926, -492),\n    COL_VERTEX(-1995, 2721, -203),\n    COL_VERTEX(-2311, -2774, -3066),\n    COL_VERTEX(-1845, -2518, -3279),\n    COL_VERTEX(-1845, -2774, -3279),\n    COL_VERTEX(-1632, -2518, -2813),\n    COL_VERTEX(-2311, -2518, -3067),\n    COL_VERTEX(-2098, -2774, -2601),\n    COL_VERTEX(-1632, -2774, -2813),\n    COL_VERTEX(-1632, -2723, -2813),\n    COL_VERTEX(-524, -2735, -2916),\n    COL_VERTEX(-567, -2735, -3009),\n    COL_VERTEX(2879, -3979, 3958),\n    COL_VERTEX(2654, -3979, 4167),\n    COL_VERTEX(2654, -3530, 4167),\n    COL_VERTEX(2239, -3993, 4623),\n    COL_VERTEX(2239, -4607, 4623),\n    COL_VERTEX(2740, -4607, 3808),\n    COL_VERTEX(2740, -4351, 3808),\n    COL_VERTEX(2566, -3530, 3621),\n    COL_VERTEX(-385, 3123, -1280),\n    COL_VERTEX(-385, 2888, -1280),\n    COL_VERTEX(-385, 2827, -1690),\n    COL_VERTEX(23, 2806, -1834),\n    COL_VERTEX(-764, 2806, -1833),\n    COL_VERTEX(-764, 2560, -1833),\n    COL_VERTEX(2560, 2560, -1279),\n    COL_VERTEX(2737, 2560, -1177),\n    COL_VERTEX(2737, 2560, -972),\n    COL_VERTEX(2560, 2560, -869),\n    COL_VERTEX(2382, 2560, -972),\n    COL_VERTEX(2382, 2560, -1177),\n    COL_VERTEX(-4387, -1438, 1721),\n    COL_VERTEX(-4387, -1447, 1925),\n    COL_VERTEX(-4210, -1437, 1618),\n    COL_VERTEX(-4033, -1455, 1925),\n    COL_VERTEX(-4210, -1456, 2027),\n    COL_VERTEX(-4210, -1344, 2028),\n    COL_VERTEX(-4033, -1445, 1721),\n    COL_VERTEX(2566, -4351, 3621),\n    COL_VERTEX(2753, -4351, 3447),\n    COL_VERTEX(2391, -4607, 3433),\n    COL_VERTEX(2391, -2303, 3433),\n    COL_VERTEX(3682, -4095, 2895),\n    COL_VERTEX(4299, -3358, 960),\n    COL_VERTEX(3682, -4126, 2895),\n    COL_VERTEX(1482, -5164, -3421),\n    COL_VERTEX(1942, -5119, 2025),\n    COL_VERTEX(2927, -4351, 3634),\n    COL_VERTEX(4551, -3358, 228),\n    COL_VERTEX(4540, -2559, 260),\n    COL_VERTEX(4096, -2559, 0),\n    COL_VERTEX(3979, -3071, 800),\n    COL_VERTEX(1940, -4125, 2033),\n    COL_VERTEX(-897, 2693, -1742),\n    COL_VERTEX(-882, 2714, -2028),\n    COL_VERTEX(-867, 2693, -2008),\n    COL_VERTEX(23, 2693, -2008),\n    COL_VERTEX(23, 2714, -2028),\n    COL_VERTEX(-867, 2560, -1434),\n    COL_VERTEX(-867, 2693, -1434),\n    COL_VERTEX(-882, 2714, -1434),\n    COL_VERTEX(-4382, -1945, 5414),\n    COL_VERTEX(-3892, -1945, 6246),\n    COL_VERTEX(-3268, -1740, 6246),\n    COL_VERTEX(4077, -4607, -1403),\n    COL_VERTEX(4529, -1791, 292),\n    COL_VERTEX(2519, -4898, 1538),\n    COL_VERTEX(2427, -4694, 1160),\n    COL_VERTEX(2713, -4694, 1602),\n    COL_VERTEX(3132, -4898, 986),\n    COL_VERTEX(3132, -4694, 986),\n    COL_VERTEX(2745, -4694, 858),\n    COL_VERTEX(2939, -4694, 1569),\n    COL_VERTEX(4790, -4607, 5511),\n    COL_VERTEX(4790, -5119, 5511),\n    COL_VERTEX(5989, -5119, -3076),\n    COL_VERTEX(5989, -4607, -3076),\n    COL_VERTEX(5990, -4607, -3076),\n    COL_VERTEX(5490, -5119, -3189),\n    COL_VERTEX(5490, -4607, -3189),\n    COL_VERTEX(4240, -4607, -1490),\n    COL_VERTEX(4350, 41, -2633),\n    COL_VERTEX(4096, -818, 0),\n    COL_VERTEX(4413, -577, -4089),\n    COL_VERTEX(4525, 144, -3360),\n    COL_VERTEX(-1329, -4889, -4308),\n    COL_VERTEX(4551, -3071, 228),\n    COL_VERTEX(3004, -4607, 4617),\n    COL_VERTEX(3268, -4812, 5055),\n    COL_VERTEX(3268, -4607, 5055),\n    COL_VERTEX(3251, -4607, 4168),\n    COL_VERTEX(4027, -4607, 4596),\n    COL_VERTEX(3780, -4607, 5045),\n    COL_VERTEX(3763, -4607, 4158),\n    COL_VERTEX(1792, -5119, 6654),\n    COL_VERTEX(768, -5119, 6654),\n    COL_VERTEX(2450, -1535, 2332),\n    COL_VERTEX(2579, -2303, 3259),\n    COL_VERTEX(4096, -3071, 0),\n    COL_VERTEX(3707, -1227, 552),\n    COL_VERTEX(4096, -1228, 0),\n    COL_VERTEX(768, -4607, 5118),\n    COL_VERTEX(-1414, -3071, 3522),\n    COL_VERTEX(4262, -1228, 975),\n    COL_VERTEX(3553, -1607, 769),\n    COL_VERTEX(4075, -1607, 1104),\n    COL_VERTEX(768, -972, -3327),\n    COL_VERTEX(3072, -409, -3020),\n    COL_VERTEX(768, 154, -3327),\n    COL_VERTEX(-3071, -511, -3071),\n    COL_VERTEX(-3071, -1228, -2047),\n    COL_VERTEX(-3964, 819, -2785),\n    COL_VERTEX(1485, 3072, 256),\n    COL_VERTEX(2033, 2195, -194),\n    COL_VERTEX(1946, 1531, 1741),\n    COL_VERTEX(168, 1229, 2511),\n    COL_VERTEX(4096, 1685, 1843),\n    COL_VERTEX(2057, 1737, 2920),\n    COL_VERTEX(2057, 1276, 2920),\n    COL_VERTEX(-3892, -1945, 6605),\n    COL_VERTEX(-3268, -1919, 6246),\n    COL_VERTEX(-3268, -3327, 6246),\n    COL_VERTEX(-3327, -3583, 3840),\n    COL_VERTEX(-4360, -1945, 5999),\n    COL_VERTEX(-4360, -2149, 5999),\n    COL_VERTEX(-6398, -3327, 3943),\n    COL_VERTEX(-6398, -1740, 3943),\n    COL_VERTEX(-4914, -4095, 0),\n    COL_VERTEX(3072, 2560, -1914),\n    COL_VERTEX(3072, 2560, -511),\n    COL_VERTEX(2617, 2359, -2483),\n    COL_VERTEX(945, 2560, -2203),\n    COL_VERTEX(1445, 3072, -2287),\n    COL_VERTEX(2816, 2560, -767),\n    COL_VERTEX(23, 2560, -3073),\n    COL_VERTEX(3072, 2304, -3327),\n    COL_VERTEX(23, 1741, -3073),\n    COL_VERTEX(768, 818, -2610),\n    COL_VERTEX(638, 2765, -2152),\n    COL_VERTEX(23, 3471, -2049),\n    COL_VERTEX(3072, 1022, -2559),\n    COL_VERTEX(4096, 1792, -2559),\n    COL_VERTEX(4096, 1327, 1843),\n    COL_VERTEX(3072, 807, -511),\n    COL_VERTEX(3072, -204, -2559),\n    COL_VERTEX(768, 154, -2610),\n    COL_VERTEX(-2024, 2662, -3073),\n    COL_VERTEX(-3045, 1842, -1970),\n    COL_VERTEX(3072, -409, -2559),\n    COL_VERTEX(-1005, 410, -2562),\n    COL_VERTEX(3072, -818, -511),\n    COL_VERTEX(2048, -818, 1024),\n    COL_VERTEX(-50, -511, 2048),\n    COL_VERTEX(-1000, 3471, -513),\n    COL_VERTEX(512, 3072, 256),\n    COL_VERTEX(512, 3072, -511),\n    COL_VERTEX(-2139, 2867, -926),\n    COL_VERTEX(23, 3471, -1281),\n    COL_VERTEX(-1000, 2560, -1281),\n    COL_VERTEX(23, 2560, -1281),\n    COL_VERTEX(-2429, 2150, -636),\n    COL_VERTEX(2048, -511, 2048),\n    COL_VERTEX(-4874, -1410, -2465),\n    COL_VERTEX(-4490, -1228, -3765),\n    COL_VERTEX(-5631, -1330, 0),\n    COL_VERTEX(-3839, -1228, -4351),\n    COL_VERTEX(-4402, -1535, 3789),\n    COL_VERTEX(-3327, -1535, 3840),\n    COL_VERTEX(-4095, -1330, -1023),\n    COL_VERTEX(-3327, -4607, 3840),\n    COL_VERTEX(-2114, 2458, -951),\n    COL_VERTEX(2048, 1229, 2048),\n    COL_VERTEX(-1500, -5137, -3507),\n    COL_VERTEX(-1500, -4881, -3507),\n    COL_VERTEX(-2442, -5132, -3555),\n    COL_VERTEX(-2442, -4876, -3553),\n    COL_VERTEX(-2559, -4351, -3583),\n    COL_VERTEX(-5119, -5119, -5119),\n    COL_VERTEX(-1500, -4626, -3507),\n    COL_VERTEX(-4905, -4858, -4236),\n    COL_VERTEX(1380, -3628, -3729),\n    COL_VERTEX(2048, 2560, -767),\n    COL_VERTEX(-3045, 2816, -1970),\n    COL_VERTEX(-3071, 277, 1024),\n    COL_VERTEX(-3574, 1090, 1394),\n    COL_VERTEX(-3071, -511, 1024),\n    COL_VERTEX(512, 4096, -511),\n    COL_VERTEX(512, 4096, 256),\n    COL_VERTEX(-579, -3948, -2539),\n    COL_VERTEX(191, -3180, -3762),\n    COL_VERTEX(450, -4189, -2583),\n    COL_VERTEX(1394, -3628, -2624),\n    COL_VERTEX(-1025, -4606, -2520),\n    COL_VERTEX(-1222, -2042, -2511),\n    COL_VERTEX(450, -3165, -2583),\n    COL_VERTEX(-2558, -4350, -2454),\n    COL_VERTEX(763, -2661, -2597),\n    COL_VERTEX(-2559, -3839, -3583),\n    COL_VERTEX(-5119, -4351, -5375),\n    COL_VERTEX(-5119, -1842, -5375),\n    COL_VERTEX(763, -2661, -4709),\n    COL_VERTEX(763, -1330, -2596),\n    COL_VERTEX(3362, -2764, 2735),\n    COL_VERTEX(-3292, -4607, 5501),\n    COL_VERTEX(-3071, -1433, 1024),\n    COL_VERTEX(-4095, 563, -1023),\n    COL_VERTEX(-4536, 819, -983),\n    COL_VERTEX(498, -1535, 3204),\n    COL_VERTEX(3979, -3327, 800),\n    COL_VERTEX(-5119, -4607, 0),\n    COL_VERTEX(-4607, -5119, 4608),\n    COL_VERTEX(34, -2543, -3499),\n    COL_VERTEX(-692, -2764, -3291),\n    COL_VERTEX(-695, -2531, -3289),\n    COL_VERTEX(-1969, -3962, -3033),\n    COL_VERTEX(-634, -3736, -3607),\n    COL_VERTEX(4134, -4505, 1535),\n    COL_VERTEX(4134, -4607, 1535),\n    COL_VERTEX(5000, -4504, -1074),\n    COL_VERTEX(4005, -4505, 1924),\n    COL_VERTEX(3682, -4505, 2895),\n    COL_VERTEX(3682, -4607, 2895),\n    COL_VERTEX(768, -1279, -4453),\n    COL_VERTEX(-5119, -2047, -5375),\n    COL_VERTEX(-1501, 2721, -492),\n    COL_VERTEX(-1501, 2926, -492),\n    COL_VERTEX(-1706, 2721, -492),\n    COL_VERTEX(-1953, 2824, -58),\n    COL_VERTEX(-1953, 2619, -58),\n    COL_VERTEX(-1995, 2926, -203),\n    COL_VERTEX(-2558, -1841, -2454),\n    COL_VERTEX(-2311, -2518, -3066),\n    COL_VERTEX(-2311, -2774, -3067),\n    COL_VERTEX(-2098, -2518, -2601),\n    COL_VERTEX(-2098, -2518, -2600),\n    COL_VERTEX(-2098, -2774, -2600),\n    COL_VERTEX(-524, -2531, -2916),\n    COL_VERTEX(-1675, -2723, -2906),\n    COL_VERTEX(-1675, -2518, -2906),\n    COL_VERTEX(-567, -2531, -3009),\n    COL_VERTEX(2879, -3530, 3958),\n    COL_VERTEX(2178, -3788, 3655),\n    COL_VERTEX(2178, -3530, 3655),\n    COL_VERTEX(2914, -4607, 3996),\n    COL_VERTEX(1751, -4607, 4098),\n    COL_VERTEX(1751, -3788, 4098),\n    COL_VERTEX(2914, -3993, 3996),\n    COL_VERTEX(2927, -4607, 3634),\n    COL_VERTEX(-385, 3123, -1690),\n    COL_VERTEX(23, 3123, -1690),\n    COL_VERTEX(23, 2827, -1690),\n    COL_VERTEX(23, 2560, -1834),\n    COL_VERTEX(-764, 2888, -1280),\n    COL_VERTEX(-764, 2560, -1280),\n    COL_VERTEX(2737, 2662, -1177),\n    COL_VERTEX(2560, 2662, -1279),\n    COL_VERTEX(2737, 2662, -972),\n    COL_VERTEX(2560, 2662, -869),\n    COL_VERTEX(2382, 2662, -972),\n    COL_VERTEX(2382, 2662, -1177),\n    COL_VERTEX(-4210, -1344, 1618),\n    COL_VERTEX(-4387, -1344, 1721),\n    COL_VERTEX(-4033, -1344, 1721),\n    COL_VERTEX(-4387, -1344, 1925),\n    COL_VERTEX(-4033, -1344, 1925),\n    COL_VERTEX(3362, -4095, 2735),\n    COL_VERTEX(2753, -2303, 3447),\n    COL_VERTEX(2566, -2303, 3621),\n    COL_VERTEX(2391, -3530, 3433),\n    COL_VERTEX(768, -1535, 5118),\n    COL_VERTEX(2228, -1535, 3309),\n    COL_VERTEX(3521, -3358, 571),\n    COL_VERTEX(3864, -3358, -115),\n    COL_VERTEX(4299, -3327, 960),\n    COL_VERTEX(498, -511, 3204),\n    COL_VERTEX(2681, -2744, 2005),\n    COL_VERTEX(3657, -3071, 622),\n    COL_VERTEX(4299, -3071, 960),\n    COL_VERTEX(-867, 2693, -1742),\n    COL_VERTEX(-882, 2714, -1742),\n    COL_VERTEX(-867, 2560, -1742),\n    COL_VERTEX(-897, 2560, -1742),\n    COL_VERTEX(-897, 2693, -2049),\n    COL_VERTEX(23, 2693, -2049),\n    COL_VERTEX(-882, 2714, -1281),\n    COL_VERTEX(-867, 2693, -1281),\n    COL_VERTEX(-897, 2693, -1434),\n    COL_VERTEX(-897, 2693, -1281),\n    COL_VERTEX(-897, 2560, -1434),\n    COL_VERTEX(-5213, -1740, 4792),\n    COL_VERTEX(-3268, -1740, 5668),\n    COL_VERTEX(-3892, -2149, 6246),\n    COL_VERTEX(-3371, -2149, 6246),\n    COL_VERTEX(-3268, -2149, 6246),\n    COL_VERTEX(2713, -4898, 1602),\n    COL_VERTEX(2519, -4694, 1538),\n    COL_VERTEX(2427, -4898, 1160),\n    COL_VERTEX(2939, -4898, 1569),\n    COL_VERTEX(4240, -5119, -1490),\n    COL_VERTEX(4606, -1228, 67),\n    COL_VERTEX(1380, -5164, -3729),\n    COL_VERTEX(1380, -4908, -3729),\n    COL_VERTEX(3068, -4694, 1181),\n    COL_VERTEX(2745, -4898, 858),\n    COL_VERTEX(6537, -5119, -852),\n    COL_VERTEX(6537, -4607, -852),\n    COL_VERTEX(1792, -4607, 6654),\n    COL_VERTEX(3682, -5119, 2895),\n    COL_VERTEX(4413, -65, -4089),\n    COL_VERTEX(-1329, -5145, -4308),\n    COL_VERTEX(3004, -4812, 4617),\n    COL_VERTEX(4027, -4812, 4596),\n    COL_VERTEX(3780, -4812, 5045),\n    COL_VERTEX(3763, -4812, 4158),\n    COL_VERTEX(3251, -4812, 4168),\n    COL_VERTEX(922, -4607, 6654),\n    COL_VERTEX(3228, -818, 1230),\n    COL_VERTEX(768, -4607, 6654),\n    COL_VERTEX(768, -4607, 6552),\n    COL_VERTEX(768, -4607, 6296),\n    COL_VERTEX(4099, -1227, 851),\n    COL_VERTEX(-2776, -1535, 1910),\n    COL_VERTEX(-3071, -1125, -3071),\n    COL_VERTEX(-3071, -511, -2047),\n    COL_VERTEX(-3318, 819, -3055),\n    COL_VERTEX(2048, 2304, -511),\n    COL_VERTEX(2042, 2261, -387),\n    COL_VERTEX(1959, 1631, 1450),\n    COL_VERTEX(2016, 2062, 192),\n    COL_VERTEX(2048, 2560, -2047),\n    COL_VERTEX(1994, 1481, 2623),\n    COL_VERTEX(-3892, -2149, 6605),\n    COL_VERTEX(-3268, -2149, 6297),\n    COL_VERTEX(-3268, -2149, 6553),\n    COL_VERTEX(-3268, -2149, 6605),\n    COL_VERTEX(768, -4607, 6224),\n    COL_VERTEX(768, -5119, 5118),\n    COL_VERTEX(-5387, -1740, 4976),\n    COL_VERTEX(-6423, -3839, 103),\n    COL_VERTEX(2617, 2703, -2483),\n    COL_VERTEX(3072, 2201, -1914),\n    COL_VERTEX(3072, 1685, 1331),\n    COL_VERTEX(2662, 2304, -511),\n    COL_VERTEX(23, 2560, -2049),\n    COL_VERTEX(-2024, 2150, -3073),\n    COL_VERTEX(945, 2560, -3073),\n    COL_VERTEX(3072, 1894, -3327),\n    COL_VERTEX(638, 2765, -3073),\n    COL_VERTEX(-1005, 1637, -2562),\n    COL_VERTEX(4096, 2304, -2559),\n    COL_VERTEX(-3045, 768, -1970),\n    COL_VERTEX(-3608, 819, -864),\n    COL_VERTEX(-1020, 2048, 3),\n    COL_VERTEX(-2429, 2867, -636),\n    COL_VERTEX(-50, 5632, -153),\n    COL_VERTEX(2048, 840, 1024),\n    COL_VERTEX(-1000, 3471, -1281),\n    COL_VERTEX(-2024, 2560, -1536),\n    COL_VERTEX(-4874, -1740, -2465),\n    COL_VERTEX(-5631, -1740, 0),\n    COL_VERTEX(-4490, -1740, -3765),\n    COL_VERTEX(-4402, -1740, 3789),\n    COL_VERTEX(-3268, -1535, 5668),\n    COL_VERTEX(-3327, -5119, 3840),\n    COL_VERTEX(-2230, -5139, -4501),\n    COL_VERTEX(-2230, -4883, -4501),\n    COL_VERTEX(-4905, -4499, -4234),\n    COL_VERTEX(1394, -4908, -2624),\n    COL_VERTEX(-5119, -4863, -5119),\n    COL_VERTEX(-3203, 1095, 1412),\n    COL_VERTEX(23, 3471, -769),\n    COL_VERTEX(-1983, -3966, -2478),\n    COL_VERTEX(-6423, -1740, 103),\n    COL_VERTEX(-3292, -5119, 5501),\n    COL_VERTEX(-4607, -4607, 4608),\n    COL_VERTEX(-2776, -511, 1910),\n    COL_VERTEX(-5119, -5119, 0),\n    COL_VERTEX(121, -2573, -2661),\n    COL_VERTEX(-355, -2764, -2548),\n    COL_VERTEX(-355, -2531, -2547),\n    COL_VERTEX(-1228, -3583, 5734),\n    COL_VERTEX(-1330, -3583, 5837),\n    COL_VERTEX(-1330, -3583, 6144),\n    COL_VERTEX(-1228, -3583, 6246),\n    COL_VERTEX(-1023, -3583, 6246),\n    COL_VERTEX(-921, -3583, 6144),\n    COL_VERTEX(-1125, -4044, 5990),\n    COL_VERTEX(-1023, -3583, 5734),\n    COL_VERTEX(-921, -3583, 5837),\n    COL_VERTEX(1192, -4607, 5626),\n    COL_VERTEX(2953, -2621, 2700),\n    COL_VERTEX(3162, -2627, 2924),\n    COL_VERTEX(3097, -2822, 1860),\n    COL_VERTEX(524, 3134, -717),\n    COL_VERTEX(73, 3457, -1739),\n    COL_VERTEX(590, 3222, -1106),\n    COL_VERTEX(949, 3072, -1271),\n    COL_VERTEX(129, 3442, -1811),\n    COL_VERTEX(774, 3072, -72),\n    COL_VERTEX(970, 3072, 59),\n    COL_VERTEX(837, 3072, -1),\n    COL_VERTEX(1379, 3072, 53),\n    COL_VERTEX(834, 3072, -145),\n    COL_VERTEX(921, -4607, 6603),\n    COL_VERTEX(1177, -4607, 6244),\n    COL_VERTEX(1192, -4607, 5831),\n    COL_VERTEX(922, -4607, 6224),\n    COL_VERTEX(988, -4607, 5831),\n    COL_VERTEX(988, -4607, 5626),\n    COL_VERTEX(1775, -4607, 4425),\n    COL_VERTEX(1786, -4607, 4136),\n    COL_VERTEX(-5144, -1740, 4720),\n    COL_VERTEX(-4940, -1740, 4714),\n    COL_VERTEX(-4947, -1740, 4509),\n    COL_VERTEX(-5151, -1740, 4516),\n    COL_VERTEX(-2024, 2560, -2766),\n    COL_VERTEX(4199, -4607, 1340),\n    COL_VERTEX(4328, -4607, 952),\n    COL_VERTEX(1636, -4607, 4275),\n    COL_VERTEX(3152, -2758, 2510),\n    COL_VERTEX(2958, -2818, 1710),\n    COL_VERTEX(3255, -2909, 1291),\n    COL_VERTEX(3394, -2913, 1441),\n    COL_VERTEX(131, 3441, -1668),\n    COL_VERTEX(251, 3407, -1752),\n    COL_VERTEX(350, 3282, -827),\n    COL_VERTEX(640, 3084, -791),\n    COL_VERTEX(1358, 3072, -1277),\n    COL_VERTEX(938, 3072, -85),\n    COL_VERTEX(1178, -4607, 6603),\n    COL_VERTEX(922, -4607, 6244),\n    COL_VERTEX(1925, -4607, 4286),\n    COL_VERTEX(-2638, 2560, -1946),\n    COL_VERTEX(-4547, -1453, 2113),\n    COL_VERTEX(-4603, -1455, 2184),\n    COL_VERTEX(-4545, -1460, 2256),\n    COL_VERTEX(-4425, -1458, 2174),\n    COL_VERTEX(-5056, -1370, -1347),\n    COL_VERTEX(-5033, -1380, -1629),\n    COL_VERTEX(-4238, -1359, -164),\n    COL_VERTEX(2163, 1630, 1460),\n    COL_VERTEX(1757, 1508, 1770),\n    COL_VERTEX(1792, 1471, 1968),\n    COL_VERTEX(2247, 2261, -378),\n    COL_VERTEX(2220, 2062, 201),\n    COL_VERTEX(37, 1229, 2233),\n    COL_VERTEX(1980, 1481, 2008),\n    COL_VERTEX(3277, 2253, -2764),\n    COL_VERTEX(3860, -470, -2720),\n    COL_VERTEX(2838, -814, -3593),\n    COL_VERTEX(1591, 1445, 1999),\n    COL_VERTEX(4062, -440, -3386),\n    COL_VERTEX(3686, -613, -3225),\n    COL_VERTEX(2668, -646, -3969),\n    COL_VERTEX(-4361, -1353, -225),\n    COL_VERTEX(-4915, -1369, -1433),\n    COL_VERTEX(-5119, -1374, -1417),\n    COL_VERTEX(-4417, -1355, -153),\n    COL_VERTEX(-4261, -1374, 247),\n    COL_VERTEX(2238, 2194, -185),\n    COL_VERTEX(1556, 1482, 1801),\n    COL_VERTEX(-3104, 1092, 1121),\n    COL_VERTEX(3884, -511, -3566),\n    COL_VERTEX(-8191, -8191, -8191),\n    COL_VERTEX(-8191, -8191, 8192),\n    COL_VERTEX(8192, -8191, 8192),\n    COL_VERTEX(8192, -8191, -8191),\n    COL_VERTEX(3068, -4584, 1181),\n    COL_VERTEX(4134, -4709, 1535),\n    COL_VERTEX(3068, -4789, 1181),\n    COL_VERTEX(3520, -4591, -179),\n    COL_VERTEX(3520, -4796, -179),\n    COL_VERTEX(3132, -4796, 986),\n    COL_VERTEX(3132, -4591, 986),\n    COL_VERTEX(2745, -4592, 858),\n    COL_VERTEX(2745, -4796, 858),\n    COL_VERTEX(3132, -4796, -308),\n    COL_VERTEX(3132, -4591, -308),\n    COL_VERTEX(3045, -4875, -481),\n    COL_VERTEX(3045, -4670, -481),\n    COL_VERTEX(3691, -4649, -265),\n    COL_VERTEX(2939, -4789, 1569),\n    COL_VERTEX(4005, -4709, 1924),\n    COL_VERTEX(-5387, -1637, 4976),\n    COL_VERTEX(-4360, -1842, 5999),\n    COL_VERTEX(-3892, -1842, 6605),\n    COL_VERTEX(4096, 2406, -2559),\n    COL_VERTEX(3782, -1141, 1845),\n    COL_VERTEX(3401, -1344, 1530),\n    COL_VERTEX(2222, -1433, 3317),\n    COL_VERTEX(2852, -1535, 2490),\n    COL_VERTEX(3002, -1332, 2631),\n    COL_VERTEX(2057, 1840, 2920),\n    COL_VERTEX(-3235, 1148, 1509),\n    COL_VERTEX(-3298, -4505, 5194),\n    COL_VERTEX(-3292, -4505, 5501),\n    COL_VERTEX(-3327, -4505, 3840),\n    COL_VERTEX(-4607, -4505, 4608),\n    COL_VERTEX(-889, -3571, -3398),\n    COL_VERTEX(-2139, 2970, -926),\n    COL_VERTEX(-1386, -1535, 4683),\n    COL_VERTEX(-3327, -1433, 3840),\n    COL_VERTEX(-1407, -1740, 4480),\n    COL_VERTEX(2566, -2201, 3621),\n    COL_VERTEX(-283, 2918, -1383),\n    COL_VERTEX(-283, 3123, -1383),\n    COL_VERTEX(-78, 3123, -1588),\n    COL_VERTEX(-78, 2918, -1383),\n    COL_VERTEX(-283, 2918, -1588),\n    COL_VERTEX(-283, 3123, -1588),\n    COL_VERTEX(-5151, -2252, 4516),\n    COL_VERTEX(-3721, -4607, 4691),\n    COL_VERTEX(-3721, -5119, 4691),\n    COL_VERTEX(-3714, -4607, 4896),\n    COL_VERTEX(-3510, -4607, 4889),\n    COL_VERTEX(-3516, -4607, 4684),\n    COL_VERTEX(988, -5119, 5626),\n    COL_VERTEX(4077, -5119, -1403),\n    COL_VERTEX(5040, -5119, -1194),\n    COL_VERTEX(2391, -1535, 3433),\n    COL_VERTEX(-4914, -4607, 0),\n    COL_VERTEX(3691, -4854, -265),\n    COL_VERTEX(2939, -4584, 1569),\n    COL_VERTEX(-6398, -1637, 3943),\n    COL_VERTEX(3604, 2406, -2928),\n    COL_VERTEX(3604, 2304, -2928),\n    COL_VERTEX(4096, 2090, -1038),\n    COL_VERTEX(4096, 2192, -1038),\n    COL_VERTEX(3766, -1330, 1627),\n    COL_VERTEX(3794, -1345, 1829),\n    COL_VERTEX(3754, -1126, 1643),\n    COL_VERTEX(3603, -1330, 1503),\n    COL_VERTEX(3591, -1126, 1519),\n    COL_VERTEX(3388, -1140, 1546),\n    COL_VERTEX(2839, -1331, 2507),\n    COL_VERTEX(2235, -1637, 3301),\n    COL_VERTEX(2811, -1317, 2304),\n    COL_VERTEX(2824, -1521, 2288),\n    COL_VERTEX(2398, -1637, 3425),\n    COL_VERTEX(2385, -1433, 3441),\n    COL_VERTEX(3015, -1536, 2614),\n    COL_VERTEX(3217, -1521, 2587),\n    COL_VERTEX(3205, -1318, 2604),\n    COL_VERTEX(256, 1485, 2696),\n    COL_VERTEX(-3071, 1142, 1024),\n    COL_VERTEX(-50, 1382, 2048),\n    COL_VERTEX(-3298, -4607, 5194),\n    COL_VERTEX(-3314, -4607, 4454),\n    COL_VERTEX(-3314, -4505, 4454),\n    COL_VERTEX(-4720, -4607, 3590),\n    COL_VERTEX(-4720, -4505, 3590),\n    COL_VERTEX(191, -3078, -3762),\n    COL_VERTEX(-889, -3469, -3398),\n    COL_VERTEX(-1969, -3859, -3033),\n    COL_VERTEX(-2139, 2765, -926),\n    COL_VERTEX(-2429, 2765, -636),\n    COL_VERTEX(-2429, 2970, -636),\n    COL_VERTEX(805, -1637, 5320),\n    COL_VERTEX(-1386, -1740, 4683),\n    COL_VERTEX(805, -1433, 5320),\n    COL_VERTEX(-3323, -1637, 4045),\n    COL_VERTEX(-3323, -1433, 4045),\n    COL_VERTEX(-1407, -1535, 4480),\n    COL_VERTEX(-3327, -1637, 3840),\n    COL_VERTEX(768, -1433, 5118),\n    COL_VERTEX(768, -1637, 5118),\n    COL_VERTEX(2566, -2405, 3621),\n    COL_VERTEX(-78, 3123, -1383),\n    COL_VERTEX(-78, 2918, -1588),\n    COL_VERTEX(-5144, -2252, 4720),\n    COL_VERTEX(-4940, -2252, 4714),\n    COL_VERTEX(-4947, -2252, 4509),\n    COL_VERTEX(-3516, -5119, 4684),\n    COL_VERTEX(-3714, -5119, 4896),\n    COL_VERTEX(-3510, -5119, 4889),\n    COL_VERTEX(988, -5119, 5831),\n    COL_VERTEX(1192, -5119, 5831),\n    COL_VERTEX(1192, -5119, 5626),\n    COL_VERTEX(-897, 2560, -2049),\n    COL_VERTEX(-867, 2560, -2008),\n    COL_VERTEX(23, 2560, -2008),\n    COL_VERTEX(-897, 2560, -1281),\n    COL_VERTEX(-867, 2560, -1281),\n    COL_VERTEX(-3371, -2149, 6605),\n    COL_VERTEX(4262, -1125, 975),\n    COL_VERTEX(4262, -1330, 975),\n    COL_VERTEX(4099, -1330, 851),\n    COL_VERTEX(4099, -1125, 851),\n    COL_VERTEX(768, -4505, 6224),\n    COL_VERTEX(768, -4505, 6296),\n    COL_VERTEX(922, -4607, 6296),\n    COL_VERTEX(768, -4505, 6552),\n    COL_VERTEX(768, -4505, 6654),\n    COL_VERTEX(-3268, -1919, 6297),\n    COL_VERTEX(-3371, -2149, 6297),\n    COL_VERTEX(-3268, -1919, 6605),\n    COL_VERTEX(-3371, -2149, 6553),\n    COL_VERTEX(-3268, -1919, 6553),\n    COL_VERTEX(922, -4607, 6552),\n    COL_VERTEX(768, -1074, -3429),\n    COL_VERTEX(-3124, -1228, -3159),\n    COL_VERTEX(4005, -4607, 1923),\n    COL_VERTEX(3520, -4694, -179),\n    COL_VERTEX(3132, -4694, -308),\n    COL_VERTEX(2845, -1433, 2499),\n    COL_VERTEX(3008, -1434, 2622),\n    COL_VERTEX(-1386, -1637, 4683),\n    COL_VERTEX(-1407, -1637, 4480),\n    COL_VERTEX(-3323, -1535, 4045),\n    COL_VERTEX(805, -1535, 5320),\n    COL_VERTEX(-4545, -1459, 2256),\n    COL_VERTEX(-4501, -1459, 2226),\n    COL_VERTEX(-5058, -1319, -1490),\n    COL_VERTEX(-5119, -1319, -1417),\n    COL_VERTEX(-5056, -1319, -1347),\n    COL_VERTEX(547, 3227, -719),\n    COL_VERTEX(834, 3123, -145),\n    COL_VERTEX(774, 3123, -72),\n    COL_VERTEX(837, 3123, -1),\n    COL_VERTEX(23, 3123, -1280),\n    COL_VERTEX(-1995, 2824, -203),\n    COL_VERTEX(-1706, 2824, -492),\n    COL_VERTEX(-4516, -1387, 2183),\n    COL_VERTEX(-4330, -1287, -155),\n    COL_VERTEX(-5047, -1247, -1421),\n    COL_VERTEX(159, 3479, -1743),\n    COL_VERTEX(574, 3243, -793),\n    COL_VERTEX(846, 3195, -76),\n    COL_VERTEX(922, -4607, 6603),\n    COL_VERTEX(4099, -1228, 851),\n    COL_VERTEX(3605, -1228, 1500),\n    COL_VERTEX(3768, -1228, 1624),\n    COL_VERTEX(-2024, 2560, -1537),\n    COL_VERTEX(3185, -4807, -470),\n    COL_VERTEX(3574, -4807, -341),\n    COL_VERTEX(-1571, 2747, -358),\n    COL_VERTEX(-1861, 2747, -69),\n    COL_VERTEX(3124, -1507, 2470),\n    COL_VERTEX(2961, -1506, 2346),\n    COL_VERTEX(3072, 2560, -767),\n    COL_VERTEX(3516, -4709, 4607),\n    COL_VERTEX(3500, -1337, 1638),\n    COL_VERTEX(3663, -1337, 1762),\n    COL_VERTEX(-716, -8089, 5837),\n    COL_VERTEX(-716, -8089, 6246),\n    COL_VERTEX(922, -8089, 6246),\n    COL_VERTEX(922, -8089, 5837),\n    COL_TRI_INIT(SURFACE_DEFAULT, 458),\n    COL_TRI(11, 8, 4),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI(4, 3, 0),\n    COL_TRI(5, 6, 3),\n    COL_TRI(1, 3, 6),\n    COL_TRI(3, 1, 7),\n    COL_TRI(3, 7, 8),\n    COL_TRI(4, 8, 3),\n    COL_TRI(9, 3, 8),\n    COL_TRI(6, 10, 1),\n    COL_TRI(2, 1, 7),\n    COL_TRI(7, 1, 10),\n    COL_TRI(2, 7, 11),\n    COL_TRI(11, 7, 8),\n    COL_TRI(12, 8, 7),\n    COL_TRI(10, 12, 7),\n    COL_TRI(12, 13, 8),\n    COL_TRI(9, 8, 13),\n    COL_TRI(14, 234, 235),\n    COL_TRI(14, 236, 234),\n    COL_TRI(15, 237, 238),\n    COL_TRI(15, 238, 239),\n    COL_TRI(16, 218, 219),\n    COL_TRI(16, 240, 241),\n    COL_TRI(16, 241, 217),\n    COL_TRI(16, 219, 217),\n    COL_TRI(17, 242, 243),\n    COL_TRI(17, 244, 242),\n    COL_TRI(18, 245, 246),\n    COL_TRI(18, 247, 245),\n    COL_TRI(19, 249, 20),\n    COL_TRI(20, 21, 19),\n    COL_TRI(21, 20, 22),\n    COL_TRI(22, 25, 21),\n    COL_TRI(23, 250, 24),\n    COL_TRI(24, 251, 23),\n    COL_TRI(25, 22, 252),\n    COL_TRI(25, 252, 253),\n    COL_TRI(26, 27, 22),\n    COL_TRI(27, 254, 22),\n    COL_TRI(28, 255, 256),\n    COL_TRI(28, 256, 257),\n    COL_TRI(29, 258, 31),\n    COL_TRI(30, 31, 259),\n    COL_TRI(31, 260, 259),\n    COL_TRI(29, 31, 30),\n    COL_TRI(32, 33, 261),\n    COL_TRI(33, 32, 262),\n    COL_TRI(35, 34, 265),\n    COL_TRI(32, 263, 262),\n    COL_TRI(32, 261, 264),\n    COL_TRI(34, 264, 261),\n    COL_TRI(34, 35, 264),\n    COL_TRI(35, 56, 264),\n    COL_TRI(29, 264, 56),\n    COL_TRI(36, 29, 56),\n    COL_TRI(35, 265, 65),\n    COL_TRI(37, 266, 39),\n    COL_TRI(38, 37, 39),\n    COL_TRI(39, 266, 267),\n    COL_TRI(39, 267, 268),\n    COL_TRI(40, 269, 42),\n    COL_TRI(40, 42, 41),\n    COL_TRI(45, 274, 275),\n    COL_TRI(41, 42, 270),\n    COL_TRI(42, 271, 270),\n    COL_TRI(43, 272, 44),\n    COL_TRI(43, 273, 272),\n    COL_TRI(44, 274, 45),\n    COL_TRI(44, 272, 274),\n    COL_TRI(49, 279, 278),\n    COL_TRI(45, 275, 46),\n    COL_TRI(46, 275, 276),\n    COL_TRI(46, 276, 47),\n    COL_TRI(47, 277, 48),\n    COL_TRI(47, 276, 277),\n    COL_TRI(48, 277, 273),\n    COL_TRI(48, 273, 43),\n    COL_TRI(49, 278, 51),\n    COL_TRI(50, 281, 279),\n    COL_TRI(50, 279, 49),\n    COL_TRI(51, 278, 280),\n    COL_TRI(51, 280, 55),\n    COL_TRI(52, 54, 53),\n    COL_TRI(52, 282, 54),\n    COL_TRI(53, 54, 50),\n    COL_TRI(54, 281, 50),\n    COL_TRI(55, 282, 52),\n    COL_TRI(55, 280, 282),\n    COL_TRI(56, 57, 36),\n    COL_TRI(57, 283, 220),\n    COL_TRI(57, 220, 284),\n    COL_TRI(57, 285, 36),\n    COL_TRI(57, 284, 285),\n    COL_TRI(36, 285, 59),\n    COL_TRI(58, 59, 287),\n    COL_TRI(36, 59, 286),\n    COL_TRI(59, 114, 288),\n    COL_TRI(60, 62, 61),\n    COL_TRI(61, 62, 289),\n    COL_TRI(62, 70, 289),\n    COL_TRI(63, 290, 289),\n    COL_TRI(64, 63, 289),\n    COL_TRI(61, 290, 66),\n    COL_TRI(61, 289, 290),\n    COL_TRI(60, 61, 291),\n    COL_TRI(65, 239, 60),\n    COL_TRI(65, 265, 239),\n    COL_TRI(61, 104, 295),\n    COL_TRI(61, 66, 104),\n    COL_TRI(66, 82, 236),\n    COL_TRI(66, 290, 63),\n    COL_TRI(63, 82, 66),\n    COL_TRI(67, 104, 14),\n    COL_TRI(68, 104, 67),\n    COL_TRI(68, 116, 104),\n    COL_TRI(69, 291, 295),\n    COL_TRI(69, 226, 291),\n    COL_TRI(70, 64, 289),\n    COL_TRI(71, 296, 297),\n    COL_TRI(71, 298, 296),\n    COL_TRI(71, 299, 298),\n    COL_TRI(72, 71, 297),\n    COL_TRI(72, 300, 71),\n    COL_TRI(73, 297, 296),\n    COL_TRI(73, 72, 297),\n    COL_TRI(74, 72, 73),\n    COL_TRI(75, 300, 72),\n    COL_TRI(74, 75, 72),\n    COL_TRI(75, 301, 300),\n    COL_TRI(76, 78, 77),\n    COL_TRI(81, 138, 308),\n    COL_TRI(77, 78, 302),\n    COL_TRI(76, 304, 78),\n    COL_TRI(78, 304, 305),\n    COL_TRI(78, 305, 302),\n    COL_TRI(77, 302, 303),\n    COL_TRI(76, 306, 304),\n    COL_TRI(79, 81, 307),\n    COL_TRI(80, 138, 81),\n    COL_TRI(82, 14, 236),\n    COL_TRI(83, 14, 98),\n    COL_TRI(83, 67, 14),\n    COL_TRI(14, 104, 236),\n    COL_TRI(84, 312, 86),\n    COL_TRI(84, 86, 313),\n    COL_TRI(85, 84, 313),\n    COL_TRI(85, 314, 84),\n    COL_TRI(90, 315, 87),\n    COL_TRI(86, 312, 315),\n    COL_TRI(86, 315, 90),\n    COL_TRI(87, 88, 320),\n    COL_TRI(88, 321, 89),\n    COL_TRI(88, 87, 321),\n    COL_TRI(89, 321, 314),\n    COL_TRI(89, 314, 85),\n    COL_TRI(87, 320, 90),\n    COL_TRI(91, 322, 323),\n    COL_TRI(91, 92, 322),\n    COL_TRI(92, 91, 324),\n    COL_TRI(92, 112, 325),\n    COL_TRI(92, 324, 112),\n    COL_TRI(93, 94, 322),\n    COL_TRI(94, 323, 322),\n    COL_TRI(95, 93, 96),\n    COL_TRI(102, 98, 101),\n    COL_TRI(95, 96, 97),\n    COL_TRI(96, 316, 98),\n    COL_TRI(97, 96, 98),\n    COL_TRI(98, 316, 318),\n    COL_TRI(99, 100, 98),\n    COL_TRI(83, 98, 317),\n    COL_TRI(100, 317, 98),\n    COL_TRI(99, 98, 102),\n    COL_TRI(101, 98, 218),\n    COL_TRI(106, 329, 330),\n    COL_TRI(103, 319, 318),\n    COL_TRI(103, 318, 327),\n    COL_TRI(98, 318, 319),\n    COL_TRI(104, 66, 236),\n    COL_TRI(105, 106, 107),\n    COL_TRI(105, 328, 106),\n    COL_TRI(106, 331, 329),\n    COL_TRI(108, 332, 328),\n    COL_TRI(108, 328, 105),\n    COL_TRI(106, 328, 332),\n    COL_TRI(106, 332, 331),\n    COL_TRI(109, 331, 111),\n    COL_TRI(109, 329, 331),\n    COL_TRI(110, 330, 329),\n    COL_TRI(107, 330, 110),\n    COL_TRI(107, 106, 330),\n    COL_TRI(110, 329, 109),\n    COL_TRI(111, 332, 108),\n    COL_TRI(111, 331, 332),\n    COL_TRI(112, 324, 333),\n    COL_TRI(113, 112, 333),\n    COL_TRI(114, 292, 225),\n    COL_TRI(120, 225, 339),\n    COL_TRI(114, 122, 117),\n    COL_TRI(118, 117, 338),\n    COL_TRI(117, 122, 338),\n    COL_TRI(117, 118, 334),\n    COL_TRI(117, 334, 114),\n    COL_TRI(119, 225, 120),\n    COL_TRI(121, 83, 317),\n    COL_TRI(59, 115, 114),\n    COL_TRI(115, 293, 114),\n    COL_TRI(114, 293, 294),\n    COL_TRI(114, 294, 116),\n    COL_TRI(116, 122, 114),\n    COL_TRI(118, 317, 100),\n    COL_TRI(100, 334, 118),\n    COL_TRI(118, 121, 317),\n    COL_TRI(122, 68, 123),\n    COL_TRI(116, 68, 122),\n    COL_TRI(68, 67, 123),\n    COL_TRI(122, 123, 338),\n    COL_TRI(118, 338, 121),\n    COL_TRI(121, 123, 83),\n    COL_TRI(123, 121, 338),\n    COL_TRI(124, 340, 127),\n    COL_TRI(125, 124, 126),\n    COL_TRI(126, 124, 127),\n    COL_TRI(127, 223, 224),\n    COL_TRI(128, 341, 127),\n    COL_TRI(128, 127, 340),\n    COL_TRI(127, 341, 223),\n    COL_TRI(129, 127, 224),\n    COL_TRI(127, 129, 342),\n    COL_TRI(126, 127, 342),\n    COL_TRI(130, 343, 199),\n    COL_TRI(131, 344, 130),\n    COL_TRI(132, 345, 130),\n    COL_TRI(130, 346, 131),\n    COL_TRI(130, 345, 346),\n    COL_TRI(130, 347, 150),\n    COL_TRI(130, 199, 347),\n    COL_TRI(12, 130, 172),\n    COL_TRI(136, 135, 9),\n    COL_TRI(130, 344, 343),\n    COL_TRI(133, 9, 348),\n    COL_TRI(9, 135, 348),\n    COL_TRI(134, 348, 135),\n    COL_TRI(135, 160, 134),\n    COL_TRI(135, 136, 160),\n    COL_TRI(137, 309, 80),\n    COL_TRI(80, 309, 310),\n    COL_TRI(80, 310, 138),\n    COL_TRI(138, 311, 308),\n    COL_TRI(137, 349, 309),\n    COL_TRI(139, 120, 311),\n    COL_TRI(140, 139, 143),\n    COL_TRI(139, 311, 350),\n    COL_TRI(140, 187, 120),\n    COL_TRI(139, 350, 351),\n    COL_TRI(139, 351, 352),\n    COL_TRI(119, 113, 353),\n    COL_TRI(119, 354, 113),\n    COL_TRI(113, 333, 335),\n    COL_TRI(113, 335, 336),\n    COL_TRI(113, 336, 337),\n    COL_TRI(113, 337, 353),\n    COL_TRI(146, 358, 148),\n    COL_TRI(141, 349, 137),\n    COL_TRI(141, 142, 349),\n    COL_TRI(142, 141, 355),\n    COL_TRI(143, 142, 355),\n    COL_TRI(144, 143, 355),\n    COL_TRI(143, 145, 140),\n    COL_TRI(145, 143, 356),\n    COL_TRI(146, 148, 357),\n    COL_TRI(146, 147, 358),\n    COL_TRI(147, 359, 358),\n    COL_TRI(148, 149, 357),\n    COL_TRI(149, 150, 357),\n    COL_TRI(150, 149, 156),\n    COL_TRI(150, 156, 157),\n    COL_TRI(151, 360, 147),\n    COL_TRI(152, 154, 362),\n    COL_TRI(153, 154, 363),\n    COL_TRI(153, 364, 154),\n    COL_TRI(154, 152, 365),\n    COL_TRI(154, 365, 363),\n    COL_TRI(154, 366, 362),\n    COL_TRI(155, 366, 154),\n    COL_TRI(155, 154, 364),\n    COL_TRI(152, 362, 164),\n    COL_TRI(156, 361, 157),\n    COL_TRI(158, 159, 161),\n    COL_TRI(157, 361, 177),\n    COL_TRI(158, 162, 155),\n    COL_TRI(158, 155, 364),\n    COL_TRI(158, 364, 159),\n    COL_TRI(159, 364, 153),\n    COL_TRI(160, 159, 367),\n    COL_TRI(159, 153, 367),\n    COL_TRI(161, 159, 160),\n    COL_TRI(160, 367, 134),\n    COL_TRI(162, 166, 155),\n    COL_TRI(163, 366, 155),\n    COL_TRI(164, 362, 200),\n    COL_TRI(165, 200, 362),\n    COL_TRI(166, 162, 99),\n    COL_TRI(163, 155, 166),\n    COL_TRI(161, 168, 158),\n    COL_TRI(165, 362, 366),\n    COL_TRI(167, 165, 366),\n    COL_TRI(167, 368, 165),\n    COL_TRI(163, 167, 366),\n    COL_TRI(165, 368, 369),\n    COL_TRI(168, 162, 158),\n    COL_TRI(169, 168, 161),\n    COL_TRI(170, 12, 370),\n    COL_TRI(171, 370, 12),\n    COL_TRI(172, 205, 12),\n    COL_TRI(173, 205, 172),\n    COL_TRI(174, 188, 171),\n    COL_TRI(170, 370, 178),\n    COL_TRI(157, 177, 175),\n    COL_TRI(175, 177, 374),\n    COL_TRI(176, 375, 374),\n    COL_TRI(177, 176, 374),\n    COL_TRI(10, 371, 200),\n    COL_TRI(178, 10, 203),\n    COL_TRI(203, 170, 178),\n    COL_TRI(181, 376, 180),\n    COL_TRI(10, 178, 371),\n    COL_TRI(13, 189, 136),\n    COL_TRI(179, 189, 13),\n    COL_TRI(179, 13, 170),\n    COL_TRI(180, 376, 377),\n    COL_TRI(180, 377, 182),\n    COL_TRI(185, 380, 308),\n    COL_TRI(181, 378, 376),\n    COL_TRI(182, 377, 379),\n    COL_TRI(182, 379, 184),\n    COL_TRI(183, 378, 181),\n    COL_TRI(184, 379, 308),\n    COL_TRI(184, 308, 380),\n    COL_TRI(186, 223, 341),\n    COL_TRI(119, 58, 287),\n    COL_TRI(187, 354, 119),\n    COL_TRI(174, 371, 188),\n    COL_TRI(188, 371, 178),\n    COL_TRI(186, 341, 128),\n    COL_TRI(191, 193, 194),\n    COL_TRI(189, 160, 136),\n    COL_TRI(190, 192, 193),\n    COL_TRI(103, 190, 191),\n    COL_TRI(103, 327, 190),\n    COL_TRI(191, 190, 193),\n    COL_TRI(192, 382, 383),\n    COL_TRI(193, 192, 383),\n    COL_TRI(194, 193, 197),\n    COL_TRI(195, 383, 382),\n    COL_TRI(196, 191, 194),\n    COL_TRI(197, 384, 194),\n    COL_TRI(191, 196, 319),\n    COL_TRI(98, 319, 198),\n    COL_TRI(198, 319, 385),\n    COL_TRI(5, 3, 9),\n    COL_TRI(9, 13, 136),\n    COL_TRI(199, 360, 151),\n    COL_TRI(199, 343, 360),\n    COL_TRI(200, 165, 369),\n    COL_TRI(10, 200, 369),\n    COL_TRI(10, 6, 201),\n    COL_TRI(202, 201, 6),\n    COL_TRI(6, 5, 202),\n    COL_TRI(186, 203, 201),\n    COL_TRI(186, 201, 223),\n    COL_TRI(5, 9, 387),\n    COL_TRI(173, 204, 205),\n    COL_TRI(202, 5, 387),\n    COL_TRI(204, 372, 205),\n    COL_TRI(171, 204, 388),\n    COL_TRI(12, 372, 171),\n    COL_TRI(204, 171, 372),\n    COL_TRI(205, 372, 12),\n    COL_TRI(206, 208, 210),\n    COL_TRI(207, 212, 208),\n    COL_TRI(208, 212, 209),\n    COL_TRI(208, 385, 210),\n    COL_TRI(209, 385, 208),\n    COL_TRI(214, 212, 211),\n    COL_TRI(210, 213, 389),\n    COL_TRI(206, 210, 389),\n    COL_TRI(198, 385, 209),\n    COL_TRI(211, 389, 213),\n    COL_TRI(212, 389, 211),\n    COL_TRI(213, 248, 211),\n    COL_TRI(213, 194, 215),\n    COL_TRI(209, 212, 214),\n    COL_TRI(215, 194, 384),\n    COL_TRI(215, 384, 216),\n    COL_TRI(215, 217, 248),\n    COL_TRI(215, 248, 213),\n    COL_TRI(216, 217, 215),\n    COL_TRI(216, 145, 356),\n    COL_TRI(216, 384, 145),\n    COL_TRI(217, 216, 356),\n    COL_TRI(214, 218, 209),\n    COL_TRI(218, 198, 209),\n    COL_TRI(98, 198, 218),\n    COL_TRI(217, 356, 390),\n    COL_TRI(219, 211, 248),\n    COL_TRI(214, 211, 219),\n    COL_TRI(219, 248, 217),\n    COL_TRI(218, 214, 219),\n    COL_TRI(221, 228, 391),\n    COL_TRI(220, 226, 69),\n    COL_TRI(139, 140, 120),\n    COL_TRI(187, 381, 354),\n    COL_TRI(221, 381, 187),\n    COL_TRI(221, 391, 381),\n    COL_TRI(221, 392, 228),\n    COL_TRI(224, 223, 202),\n    COL_TRI(143, 390, 356),\n    COL_TRI(143, 144, 390),\n    COL_TRI(186, 222, 203),\n    COL_TRI(222, 339, 393),\n    COL_TRI(222, 393, 203),\n    COL_TRI(223, 201, 202),\n    COL_TRI(9, 133, 387),\n    COL_TRI(169, 161, 373),\n    COL_TRI(169, 373, 189),\n    COL_TRI(169, 189, 179),\n    COL_TRI(161, 160, 189),\n    COL_TRI(161, 189, 373),\n    COL_TRI(119, 287, 225),\n    COL_TRI(226, 220, 283),\n    COL_TRI(119, 120, 187),\n    COL_TRI(204, 173, 388),\n    COL_TRI(225, 292, 393),\n    COL_TRI(225, 393, 339),\n    COL_TRI(229, 395, 396),\n    COL_TRI(195, 386, 383),\n    COL_TRI(227, 386, 195),\n    COL_TRI(227, 195, 394),\n    COL_TRI(228, 392, 227),\n    COL_TRI(228, 227, 394),\n    COL_TRI(207, 208, 233),\n    COL_TRI(230, 229, 396),\n    COL_TRI(229, 230, 231),\n    COL_TRI(231, 230, 397),\n    COL_TRI(230, 396, 397),\n    COL_TRI(206, 389, 232),\n    COL_TRI(206, 233, 208),\n    COL_TRI(232, 233, 206),\n    COL_TRI(233, 232, 207),\n    COL_TRI(218, 16, 101),\n    COL_TRI(102, 101, 326),\n    COL_TRI(36, 258, 29),\n    COL_TRI(12, 478, 130),\n    COL_TRI(478, 459, 130),\n    COL_TRI(459, 132, 130),\n    COL_TRI_INIT(SURFACE_DEATH_PLANE, 2),\n    COL_TRI(481, 482, 483),\n    COL_TRI(481, 483, 484),\n    COL_TRI_INIT(SURFACE_VERY_SLIPPERY, 101),\n    COL_TRI(114, 179, 292),\n    COL_TRI(334, 179, 114),\n    COL_TRI(222, 182, 51),\n    COL_TRI(182, 49, 51),\n    COL_TRI(182, 451, 49),\n    COL_TRI(182, 452, 451),\n    COL_TRI(182, 184, 452),\n    COL_TRI(184, 453, 452),\n    COL_TRI(454, 453, 184),\n    COL_TRI(53, 454, 184),\n    COL_TRI(222, 52, 184),\n    COL_TRI(52, 53, 184),\n    COL_TRI(186, 457, 222),\n    COL_TRI(454, 50, 451),\n    COL_TRI(49, 451, 50),\n    COL_TRI(454, 53, 50),\n    COL_TRI(222, 55, 52),\n    COL_TRI(222, 51, 55),\n    COL_TRI(186, 455, 182),\n    COL_TRI(182, 472, 186),\n    COL_TRI(186, 472, 457),\n    COL_TRI(180, 474, 456),\n    COL_TRI(455, 474, 182),\n    COL_TRI(186, 473, 455),\n    COL_TRI(182, 475, 472),\n    COL_TRI(182, 222, 476),\n    COL_TRI(182, 476, 475),\n    COL_TRI(182, 474, 180),\n    COL_TRI(456, 473, 180),\n    COL_TRI(186, 180, 473),\n    COL_TRI(180, 128, 181),\n    COL_TRI(180, 186, 128),\n    COL_TRI(457, 476, 222),\n    COL_TRI(222, 185, 339),\n    COL_TRI(184, 185, 222),\n    COL_TRI(458, 345, 132),\n    COL_TRI(132, 464, 359),\n    COL_TRI(458, 132, 359),\n    COL_TRI(459, 460, 132),\n    COL_TRI(460, 464, 132),\n    COL_TRI(461, 359, 360),\n    COL_TRI(458, 359, 462),\n    COL_TRI(358, 359, 134),\n    COL_TRI(359, 477, 462),\n    COL_TRI(359, 348, 134),\n    COL_TRI(461, 477, 359),\n    COL_TRI(462, 477, 131),\n    COL_TRI(346, 462, 131),\n    COL_TRI(360, 343, 461),\n    COL_TRI(343, 344, 461),\n    COL_TRI(12, 463, 464),\n    COL_TRI(463, 348, 464),\n    COL_TRI(463, 133, 348),\n    COL_TRI(464, 348, 359),\n    COL_TRI(464, 468, 12),\n    COL_TRI(464, 460, 468),\n    COL_TRI(465, 148, 358),\n    COL_TRI(465, 358, 367),\n    COL_TRI(465, 149, 148),\n    COL_TRI(465, 153, 363),\n    COL_TRI(465, 363, 149),\n    COL_TRI(465, 367, 153),\n    COL_TRI(365, 149, 363),\n    COL_TRI(365, 156, 149),\n    COL_TRI(120, 185, 308),\n    COL_TRI(358, 134, 367),\n    COL_TRI(308, 311, 120),\n    COL_TRI(120, 339, 185),\n    COL_TRI(380, 185, 184),\n    COL_TRI(202, 387, 479),\n    COL_TRI(360, 359, 147),\n    COL_TRI(368, 167, 342),\n    COL_TRI(167, 163, 342),\n    COL_TRI(342, 129, 368),\n    COL_TRI(163, 126, 342),\n    COL_TRI(369, 368, 129),\n    COL_TRI(369, 129, 224),\n    COL_TRI(202, 479, 10),\n    COL_TRI(463, 479, 387),\n    COL_TRI(133, 463, 387),\n    COL_TRI(166, 125, 126),\n    COL_TRI(163, 166, 126),\n    COL_TRI(466, 125, 166),\n    COL_TRI(99, 466, 166),\n    COL_TRI(466, 470, 125),\n    COL_TRI(467, 125, 470),\n    COL_TRI(369, 224, 10),\n    COL_TRI(224, 202, 10),\n    COL_TRI(12, 10, 479),\n    COL_TRI(463, 12, 479),\n    COL_TRI(468, 478, 12),\n    COL_TRI(407, 324, 91),\n    COL_TRI(467, 470, 480),\n    COL_TRI(99, 469, 466),\n    COL_TRI(99, 102, 469),\n    COL_TRI(469, 470, 466),\n    COL_TRI(470, 469, 480),\n    COL_TRI(469, 102, 326),\n    COL_TRI(469, 326, 480),\n    COL_TRI(326, 471, 480),\n    COL_TRI(471, 467, 480),\n    COL_TRI_INIT(SURFACE_SLIPPERY, 140),\n    COL_TRI(398, 399, 400),\n    COL_TRI(398, 400, 401),\n    COL_TRI(398, 401, 402),\n    COL_TRI(398, 402, 403),\n    COL_TRI(404, 398, 405),\n    COL_TRI(404, 399, 398),\n    COL_TRI(398, 406, 405),\n    COL_TRI(398, 403, 406),\n    COL_TRI(404, 400, 399),\n    COL_TRI(404, 401, 400),\n    COL_TRI(404, 402, 401),\n    COL_TRI(404, 403, 402),\n    COL_TRI(404, 406, 403),\n    COL_TRI(404, 405, 406),\n    COL_TRI(85, 313, 86),\n    COL_TRI(85, 86, 90),\n    COL_TRI(85, 90, 320),\n    COL_TRI(88, 85, 320),\n    COL_TRI(119, 91, 107),\n    COL_TRI(88, 89, 85),\n    COL_TRI(91, 323, 434),\n    COL_TRI(323, 435, 434),\n    COL_TRI(323, 14, 435),\n    COL_TRI(323, 94, 14),\n    COL_TRI(14, 94, 98),\n    COL_TRI(91, 434, 239),\n    COL_TRI(91, 110, 107),\n    COL_TRI(11, 4, 170),\n    COL_TRI(94, 97, 98),\n    COL_TRI(203, 393, 2),\n    COL_TRI(393, 0, 2),\n    COL_TRI(393, 292, 0),\n    COL_TRI(292, 170, 4),\n    COL_TRI(4, 0, 292),\n    COL_TRI(170, 292, 179),\n    COL_TRI(203, 2, 11),\n    COL_TRI(220, 409, 284),\n    COL_TRI(408, 437, 293),\n    COL_TRI(409, 408, 284),\n    COL_TRI(408, 293, 284),\n    COL_TRI(293, 410, 438),\n    COL_TRI(410, 293, 437),\n    COL_TRI(293, 439, 294),\n    COL_TRI(293, 438, 439),\n    COL_TRI(293, 115, 284),\n    COL_TRI(388, 442, 441),\n    COL_TRI(220, 69, 440),\n    COL_TRI(410, 220, 440),\n    COL_TRI(410, 437, 220),\n    COL_TRI(69, 439, 440),\n    COL_TRI(69, 294, 439),\n    COL_TRI(388, 441, 412),\n    COL_TRI(388, 150, 442),\n    COL_TRI(150, 157, 442),\n    COL_TRI(413, 444, 150),\n    COL_TRI(388, 413, 150),\n    COL_TRI(150, 444, 173),\n    COL_TRI(150, 347, 357),\n    COL_TRI(150, 445, 130),\n    COL_TRI(414, 445, 150),\n    COL_TRI(173, 414, 150),\n    COL_TRI(415, 442, 157),\n    COL_TRI(173, 411, 388),\n    COL_TRI(411, 443, 388),\n    COL_TRI(412, 157, 175),\n    COL_TRI(412, 175, 388),\n    COL_TRI(412, 415, 157),\n    COL_TRI(374, 388, 175),\n    COL_TRI(388, 443, 413),\n    COL_TRI(173, 444, 411),\n    COL_TRI(416, 420, 173),\n    COL_TRI(172, 416, 173),\n    COL_TRI(172, 130, 417),\n    COL_TRI(172, 418, 416),\n    COL_TRI(417, 418, 172),\n    COL_TRI(418, 417, 446),\n    COL_TRI(414, 446, 417),\n    COL_TRI(130, 419, 417),\n    COL_TRI(419, 130, 445),\n    COL_TRI(420, 446, 414),\n    COL_TRI(414, 173, 420),\n    COL_TRI(421, 333, 447),\n    COL_TRI(407, 324, 91),\n    COL_TRI(324, 447, 333),\n    COL_TRI(422, 447, 324),\n    COL_TRI(423, 422, 324),\n    COL_TRI(407, 423, 324),\n    COL_TRI(424, 448, 422),\n    COL_TRI(424, 422, 423),\n    COL_TRI(425, 424, 423),\n    COL_TRI(353, 424, 425),\n    COL_TRI(425, 426, 119),\n    COL_TRI(353, 425, 119),\n    COL_TRI(119, 407, 91),\n    COL_TRI(426, 407, 119),\n    COL_TRI(33, 427, 119),\n    COL_TRI(33, 449, 427),\n    COL_TRI(427, 436, 119),\n    COL_TRI(107, 105, 119),\n    COL_TRI(105, 33, 119),\n    COL_TRI(119, 436, 262),\n    COL_TRI(428, 262, 436),\n    COL_TRI(91, 239, 111),\n    COL_TRI(91, 111, 109),\n    COL_TRI(91, 109, 110),\n    COL_TRI(105, 108, 265),\n    COL_TRI(105, 261, 33),\n    COL_TRI(261, 105, 265),\n    COL_TRI(261, 265, 34),\n    COL_TRI(108, 239, 265),\n    COL_TRI(108, 111, 239),\n    COL_TRI(429, 307, 430),\n    COL_TRI(307, 429, 144),\n    COL_TRI(141, 307, 355),\n    COL_TRI(430, 307, 81),\n    COL_TRI(431, 430, 379),\n    COL_TRI(379, 430, 81),\n    COL_TRI(141, 137, 80),\n    COL_TRI(141, 80, 79),\n    COL_TRI(307, 141, 79),\n    COL_TRI(432, 379, 144),\n    COL_TRI(390, 144, 379),\n    COL_TRI(433, 164, 200),\n    COL_TRI(433, 200, 450),\n    COL_TRI(152, 164, 433),\n    COL_TRI(371, 450, 200),\n    COL_TRI(375, 174, 374),\n    COL_TRI(174, 171, 374),\n    COL_TRI(188, 370, 171),\n    COL_TRI(374, 171, 388),\n    COL_TRI(144, 429, 432),\n    COL_TRI(432, 431, 379),\n    COL_TRI(379, 81, 308),\n    COL_TRI(377, 390, 379),\n    COL_TRI(217, 376, 378),\n    COL_TRI(217, 390, 376),\n    COL_TRI(376, 390, 377),\n    COL_TRI(144, 355, 307),\n    COL_TRI(370, 188, 178),\n    COL_TRI(357, 347, 146),\n    COL_TRI_INIT(SURFACE_WALL_MISC, 144),\n    COL_TRI(495, 494, 496),\n    COL_TRI(485, 486, 234),\n    COL_TRI(485, 487, 486),\n    COL_TRI(488, 489, 490),\n    COL_TRI(488, 490, 491),\n    COL_TRI(492, 493, 494),\n    COL_TRI(492, 494, 495),\n    COL_TRI(501, 355, 144),\n    COL_TRI(495, 496, 497),\n    COL_TRI(498, 489, 488),\n    COL_TRI(498, 539, 489),\n    COL_TRI(499, 540, 237),\n    COL_TRI(500, 499, 237),\n    COL_TRI(501, 144, 541),\n    COL_TRI(504, 367, 544),\n    COL_TRI(502, 141, 355),\n    COL_TRI(502, 355, 501),\n    COL_TRI(503, 137, 141),\n    COL_TRI(503, 141, 502),\n    COL_TRI(367, 504, 542),\n    COL_TRI(367, 542, 543),\n    COL_TRI(507, 553, 508),\n    COL_TRI(504, 544, 545),\n    COL_TRI(505, 546, 547),\n    COL_TRI(505, 548, 546),\n    COL_TRI(506, 549, 550),\n    COL_TRI(506, 550, 551),\n    COL_TRI(507, 508, 552),\n    COL_TRI(508, 555, 554),\n    COL_TRI(508, 554, 552),\n    COL_TRI(509, 556, 557),\n    COL_TRI(509, 558, 556),\n    COL_TRI(509, 559, 558),\n    COL_TRI(509, 560, 559),\n    COL_TRI(510, 135, 9),\n    COL_TRI(510, 9, 561),\n    COL_TRI(513, 221, 392),\n    COL_TRI(5, 511, 9),\n    COL_TRI(511, 561, 9),\n    COL_TRI(12, 562, 10),\n    COL_TRI(12, 563, 562),\n    COL_TRI(512, 564, 221),\n    COL_TRI(512, 221, 513),\n    COL_TRI(514, 565, 566),\n    COL_TRI(514, 187, 565),\n    COL_TRI(515, 567, 568),\n    COL_TRI(515, 392, 567),\n    COL_TRI(516, 207, 569),\n    COL_TRI(516, 569, 570),\n    COL_TRI(516, 571, 232),\n    COL_TRI(516, 570, 571),\n    COL_TRI(518, 577, 575),\n    COL_TRI(513, 392, 515),\n    COL_TRI(517, 244, 17),\n    COL_TRI(517, 572, 244),\n    COL_TRI(247, 573, 574),\n    COL_TRI(247, 18, 573),\n    COL_TRI(518, 575, 576),\n    COL_TRI(518, 576, 578),\n    COL_TRI(518, 578, 579),\n    COL_TRI(519, 520, 580),\n    COL_TRI(519, 581, 520),\n    COL_TRI(520, 582, 580),\n    COL_TRI(520, 583, 582),\n    COL_TRI(521, 575, 577),\n    COL_TRI(521, 584, 575),\n    COL_TRI(62, 64, 70),\n    COL_TRI(522, 527, 523),\n    COL_TRI(523, 525, 522),\n    COL_TRI(523, 585, 525),\n    COL_TRI(524, 525, 585),\n    COL_TRI(524, 586, 525),\n    COL_TRI(525, 586, 522),\n    COL_TRI(526, 522, 586),\n    COL_TRI(522, 526, 527),\n    COL_TRI(527, 526, 586),\n    COL_TRI(527, 586, 524),\n    COL_TRI(62, 239, 64),\n    COL_TRI(239, 325, 64),\n    COL_TRI(531, 591, 530),\n    COL_TRI(429, 528, 432),\n    COL_TRI(429, 587, 528),\n    COL_TRI(528, 588, 589),\n    COL_TRI(528, 587, 588),\n    COL_TRI(432, 528, 589),\n    COL_TRI(430, 588, 587),\n    COL_TRI(430, 587, 429),\n    COL_TRI(431, 589, 588),\n    COL_TRI(431, 588, 430),\n    COL_TRI(432, 589, 431),\n    COL_TRI(529, 530, 590),\n    COL_TRI(530, 591, 592),\n    COL_TRI(531, 530, 529),\n    COL_TRI(530, 592, 590),\n    COL_TRI(532, 591, 531),\n    COL_TRI(532, 592, 591),\n    COL_TRI(533, 590, 592),\n    COL_TRI(533, 592, 532),\n    COL_TRI(529, 590, 533),\n    COL_TRI(534, 593, 594),\n    COL_TRI(534, 594, 595),\n    COL_TRI(425, 593, 534),\n    COL_TRI(425, 534, 426),\n    COL_TRI(426, 534, 595),\n    COL_TRI(299, 71, 300),\n    COL_TRI(423, 594, 593),\n    COL_TRI(423, 593, 425),\n    COL_TRI(407, 595, 594),\n    COL_TRI(407, 594, 423),\n    COL_TRI(426, 595, 407),\n    COL_TRI(361, 596, 300),\n    COL_TRI(361, 300, 301),\n    COL_TRI(299, 300, 596),\n    COL_TRI(303, 600, 76),\n    COL_TRI(73, 298, 597),\n    COL_TRI(73, 296, 298),\n    COL_TRI(74, 597, 598),\n    COL_TRI(74, 73, 597),\n    COL_TRI(304, 306, 599),\n    COL_TRI(304, 599, 305),\n    COL_TRI(303, 76, 77),\n    COL_TRI(82, 535, 536),\n    COL_TRI(535, 82, 63),\n    COL_TRI(82, 536, 14),\n    COL_TRI(435, 14, 536),\n    COL_TRI(536, 325, 239),\n    COL_TRI(536, 239, 434),\n    COL_TRI(536, 434, 435),\n    COL_TRI(123, 67, 83),\n    COL_TRI(121, 123, 83),\n    COL_TRI(59, 537, 287),\n    COL_TRI(537, 59, 288),\n    COL_TRI(139, 349, 142),\n    COL_TRI(142, 143, 139),\n    COL_TRI(139, 352, 601),\n    COL_TRI(139, 601, 349),\n    COL_TRI(538, 140, 145),\n    COL_TRI(538, 187, 140),\n    COL_TRI(538, 145, 197),\n    COL_TRI(145, 384, 197),\n    COL_TRI(602, 546, 548),\n    COL_TRI(602, 603, 546),\n    COL_TRI(550, 549, 604),\n    COL_TRI(550, 604, 605),\n    COL_TRI_INIT(SURFACE_ICE, 4),\n    COL_TRI(249, 22, 20),\n    COL_TRI(249, 252, 22),\n    COL_TRI(257, 22, 254),\n    COL_TRI(257, 256, 22),\n    COL_TRI_INIT(SURFACE_HARD, 80),\n    COL_TRI(185, 624, 625),\n    COL_TRI(235, 320, 90),\n    COL_TRI(235, 90, 619),\n    COL_TRI(89, 620, 621),\n    COL_TRI(89, 88, 620),\n    COL_TRI(622, 288, 537),\n    COL_TRI(622, 537, 623),\n    COL_TRI(629, 454, 640),\n    COL_TRI(185, 626, 624),\n    COL_TRI(624, 287, 625),\n    COL_TRI(624, 627, 287),\n    COL_TRI(371, 638, 639),\n    COL_TRI(371, 639, 174),\n    COL_TRI(628, 629, 640),\n    COL_TRI(630, 631, 642),\n    COL_TRI(451, 640, 454),\n    COL_TRI(452, 628, 640),\n    COL_TRI(452, 640, 451),\n    COL_TRI(457, 472, 641),\n    COL_TRI(472, 475, 641),\n    COL_TRI(475, 476, 641),\n    COL_TRI(476, 457, 641),\n    COL_TRI(473, 630, 642),\n    COL_TRI(631, 632, 642),\n    COL_TRI(632, 631, 474),\n    COL_TRI(631, 630, 456),\n    COL_TRI(474, 631, 456),\n    COL_TRI(632, 473, 642),\n    COL_TRI(455, 632, 474),\n    COL_TRI(473, 632, 455),\n    COL_TRI(456, 630, 473),\n    COL_TRI(442, 415, 643),\n    COL_TRI(415, 412, 643),\n    COL_TRI(412, 441, 643),\n    COL_TRI(441, 442, 643),\n    COL_TRI(633, 444, 644),\n    COL_TRI(444, 633, 411),\n    COL_TRI(411, 633, 443),\n    COL_TRI(413, 644, 444),\n    COL_TRI(416, 635, 634),\n    COL_TRI(416, 634, 420),\n    COL_TRI(606, 607, 608),\n    COL_TRI(420, 634, 446),\n    COL_TRI(418, 635, 416),\n    COL_TRI(635, 636, 645),\n    COL_TRI(634, 635, 645),\n    COL_TRI(418, 636, 635),\n    COL_TRI(636, 446, 645),\n    COL_TRI(446, 634, 645),\n    COL_TRI(446, 636, 418),\n    COL_TRI(606, 448, 424),\n    COL_TRI(606, 608, 448),\n    COL_TRI(601, 615, 614),\n    COL_TRI(610, 333, 646),\n    COL_TRI(609, 610, 646),\n    COL_TRI(609, 646, 616),\n    COL_TRI(612, 611, 138),\n    COL_TRI(612, 138, 310),\n    COL_TRI(601, 613, 615),\n    COL_TRI(39, 41, 270),\n    COL_TRI(31, 258, 36),\n    COL_TRI(260, 31, 36),\n    COL_TRI(260, 36, 286),\n    COL_TRI(263, 32, 30),\n    COL_TRI(30, 259, 263),\n    COL_TRI(32, 264, 30),\n    COL_TRI(30, 264, 29),\n    COL_TRI(270, 38, 39),\n    COL_TRI(40, 41, 39),\n    COL_TRI(268, 40, 39),\n    COL_TRI(527, 266, 37),\n    COL_TRI(527, 37, 523),\n    COL_TRI(527, 524, 267),\n    COL_TRI(266, 527, 267),\n    COL_TRI(637, 523, 37),\n    COL_TRI(637, 585, 523),\n    COL_TRI(524, 585, 637),\n    COL_TRI(267, 524, 637),\n    COL_TRI(121, 647, 648),\n    COL_TRI(121, 648, 649),\n    COL_TRI_INIT(SURFACE_HARD_NOT_SLIPPERY, 106),\n    COL_TRI(478, 468, 460),\n    COL_TRI(309, 349, 614),\n    COL_TRI(309, 614, 612),\n    COL_TRI(612, 310, 309),\n    COL_TRI(349, 601, 614),\n    COL_TRI(614, 351, 612),\n    COL_TRI(351, 350, 612),\n    COL_TRI(417, 445, 414),\n    COL_TRI(417, 419, 445),\n    COL_TRI(438, 410, 440),\n    COL_TRI(478, 460, 459),\n    COL_TRI(436, 449, 428),\n    COL_TRI(436, 427, 449),\n    COL_TRI(408, 220, 437),\n    COL_TRI(408, 409, 220),\n    COL_TRI(438, 440, 439),\n    COL_TRI(447, 422, 608),\n    COL_TRI(458, 462, 346),\n    COL_TRI(345, 458, 346),\n    COL_TRI(131, 461, 344),\n    COL_TRI(131, 477, 461),\n    COL_TRI(447, 608, 616),\n    COL_TRI(421, 447, 616),\n    COL_TRI(620, 652, 651),\n    COL_TRI(422, 448, 608),\n    COL_TRI(337, 336, 616),\n    COL_TRI(337, 616, 608),\n    COL_TRI(287, 627, 285),\n    COL_TRI(287, 285, 59),\n    COL_TRI(620, 651, 621),\n    COL_TRI(347, 657, 146),\n    COL_TRI(638, 653, 639),\n    COL_TRI(638, 654, 653),\n    COL_TRI(622, 623, 655),\n    COL_TRI(622, 655, 656),\n    COL_TRI(633, 644, 443),\n    COL_TRI(443, 644, 413),\n    COL_TRI(347, 199, 657),\n    COL_TRI(147, 657, 151),\n    COL_TRI(277, 276, 275),\n    COL_TRI(277, 274, 272),\n    COL_TRI(277, 272, 273),\n    COL_TRI(277, 275, 274),\n    COL_TRI(279, 281, 54),\n    COL_TRI(279, 54, 282),\n    COL_TRI(279, 282, 280),\n    COL_TRI(279, 280, 278),\n    COL_TRI(226, 283, 60),\n    COL_TRI(283, 65, 60),\n    COL_TRI(283, 57, 65),\n    COL_TRI(226, 60, 291),\n    COL_TRI(56, 35, 65),\n    COL_TRI(56, 65, 57),\n    COL_TRI(168, 100, 162),\n    COL_TRI(59, 285, 284),\n    COL_TRI(59, 284, 115),\n    COL_TRI(116, 295, 104),\n    COL_TRI(116, 69, 295),\n    COL_TRI(116, 294, 69),\n    COL_TRI(100, 168, 169),\n    COL_TRI(100, 99, 162),\n    COL_TRI(100, 169, 334),\n    COL_TRI(169, 179, 334),\n    COL_TRI(225, 288, 114),\n    COL_TRI(288, 225, 287),\n    COL_TRI(537, 288, 287),\n    COL_TRI(174, 450, 371),\n    COL_TRI(174, 375, 450),\n    COL_TRI(375, 433, 450),\n    COL_TRI(361, 433, 375),\n    COL_TRI(156, 152, 361),\n    COL_TRI(156, 365, 152),\n    COL_TRI(361, 152, 433),\n    COL_TRI(650, 177, 361),\n    COL_TRI(650, 176, 177),\n    COL_TRI(531, 529, 392),\n    COL_TRI(529, 187, 392),\n    COL_TRI(392, 221, 531),\n    COL_TRI(221, 532, 531),\n    COL_TRI(221, 187, 532),\n    COL_TRI(80, 81, 79),\n    COL_TRI(532, 187, 533),\n    COL_TRI(529, 533, 187),\n    COL_TRI(109, 111, 658),\n    COL_TRI(111, 108, 658),\n    COL_TRI(108, 105, 658),\n    COL_TRI(110, 109, 658),\n    COL_TRI(107, 110, 658),\n    COL_TRI(105, 107, 658),\n    COL_TRI(197, 193, 383),\n    COL_TRI(386, 197, 383),\n    COL_TRI(191, 319, 103),\n    COL_TRI(385, 196, 210),\n    COL_TRI(385, 319, 196),\n    COL_TRI(210, 196, 194),\n    COL_TRI(213, 210, 194),\n    COL_TRI(187, 538, 392),\n    COL_TRI(538, 227, 392),\n    COL_TRI(386, 227, 538),\n    COL_TRI(397, 395, 229),\n    COL_TRI(229, 231, 397),\n    COL_TRI(212, 207, 232),\n    COL_TRI(212, 232, 389),\n    COL_TRI(197, 386, 538),\n    COL_TRI(659, 649, 648),\n    COL_TRI(659, 660, 649),\n    COL_TRI_INIT(SURFACE_VERTICAL_WIND, 2),\n    COL_TRI(661, 662, 663),\n    COL_TRI(661, 663, 664),\n    COL_TRI_INIT(SURFACE_NOISE_VERY_SLIPPERY, 15),\n    COL_TRI(617, 124, 125),\n    COL_TRI(618, 340, 617),\n    COL_TRI(124, 617, 340),\n    COL_TRI(125, 467, 617),\n    COL_TRI(183, 217, 378),\n    COL_TRI(183, 181, 618),\n    COL_TRI(183, 618, 16),\n    COL_TRI(217, 183, 16),\n    COL_TRI(16, 467, 471),\n    COL_TRI(16, 617, 467),\n    COL_TRI(16, 618, 617),\n    COL_TRI(471, 326, 101),\n    COL_TRI(16, 471, 101),\n    COL_TRI(340, 618, 128),\n    COL_TRI(618, 181, 128),\n    COL_TRI_INIT(SURFACE_NO_CAM_COLLISION, 15),\n    COL_TRI(611, 311, 138),\n    COL_TRI(606, 337, 607),\n    COL_TRI(606, 353, 337),\n    COL_TRI(606, 424, 353),\n    COL_TRI(608, 607, 337),\n    COL_TRI(609, 335, 610),\n    COL_TRI(609, 336, 335),\n    COL_TRI(350, 611, 612),\n    COL_TRI(611, 350, 311),\n    COL_TRI(352, 613, 601),\n    COL_TRI(613, 351, 615),\n    COL_TRI(613, 352, 351),\n    COL_TRI(614, 615, 351),\n    COL_TRI(333, 610, 335),\n    COL_TRI(336, 609, 616),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(21),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_null_start,       /*pos*/ -1512,  2560, -2305, /*yaw*/ 100), // unused, probably an early way to set initial position\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03,     /*pos*/  -409,  2765, -1637, /*yaw*/   0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_04,     /*pos*/  2355, -4095,  4096, /*yaw*/   0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_05,     /*pos*/ -4210, -1446,  1874, /*yaw*/   0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_05,     /*pos*/  2560,  2560, -1023, /*yaw*/   0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_06,     /*pos*/  -818,   102,  2048, /*yaw*/   0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_07,     /*pos*/  -511, -3071, -3583, /*yaw*/   0),\n    SPECIAL_OBJECT(/*preset*/ special_snow_tree,        /*pos*/ -5201, -1740,  2994),\n    SPECIAL_OBJECT(/*preset*/ special_snow_tree,        /*pos*/  1989, -4607,  4949),\n    SPECIAL_OBJECT(/*preset*/ special_snow_tree,        /*pos*/  1248, -4607,  5474),\n    SPECIAL_OBJECT(/*preset*/ special_snow_tree,        /*pos*/ -5508, -1740,  4148),\n    SPECIAL_OBJECT(/*preset*/ special_snow_tree,        /*pos*/ -4576, -1740,  4814),\n    SPECIAL_OBJECT(/*preset*/ special_snow_tree,        /*pos*/  -488,  2560, -2305),\n    SPECIAL_OBJECT(/*preset*/ special_snow_tree,        /*pos*/ -5892, -1740,   811),\n    SPECIAL_OBJECT(/*preset*/ special_snow_tree,        /*pos*/ -3748, -4607,  4464),\n    SPECIAL_OBJECT(/*preset*/ special_snow_tree,        /*pos*/  2237,  2560, -1630),\n    SPECIAL_OBJECT(/*preset*/ special_snow_tree,        /*pos*/  2885,  2560, -1638),\n    SPECIAL_OBJECT(/*preset*/ special_snow_tree,        /*pos*/ -1146, -3583,  5919),\n    SPECIAL_OBJECT(/*preset*/ special_snow_tree,        /*pos*/ -1768,  2560, -1793),\n    SPECIAL_OBJECT(/*preset*/ special_snow_tree,        /*pos*/ -3443,   807, -2713),\n    SPECIAL_OBJECT_WITH_YAW_AND_PARAM(/*preset*/ special_wooden_door_warp, /*pos*/  2464, -4607,  4302, /*yaw*/ 158, /*bhvParam2*/ 20),\n    COL_WATER_BOX_INIT(1),\n    COL_WATER_BOX(0, 3137, 4228, 3925, 4945, -4638),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/ccm/areas/1/geo.inc.c",
    "content": "// 0x0E00051C\nconst GeoLayout ccm_geo_00051C[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND(BACKGROUND_SNOW_MOUNTAINS, geo_skybox_main),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 12800, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(1, 0, 2000, 6000, 0, 0, 0, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, ccm_seg7_dl_0700B090),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, ccm_seg7_dl_0700B1D8),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, ccm_seg7_dl_0700C380),\n                    GEO_DISPLAY_LIST(LAYER_ALPHA, ccm_seg7_dl_0700D578),\n                    GEO_DISPLAY_LIST(LAYER_TRANSPARENT_DECAL, ccm_seg7_dl_0700DDF0),\n                    GEO_ASM(   0, geo_movtex_pause_control),\n                    GEO_ASM(0x0501, geo_movtex_draw_water_regions),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(   1, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_cannon_circle_base),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ccm/areas/1/macro.inc.c",
    "content": "// 0x07016284 - 0x070163F8\nconst MacroObject ccm_seg7_area_1_macro_objs[] = {\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/ 180, /*pos*/ -2412,  2912,  -878, /*bhvParam*/ DIALOG_040),\n    MACRO_OBJECT               (/*preset*/ macro_mr_blizzard_1,               /*yaw*/   0, /*pos*/  3054, -2674,  2072),\n    MACRO_OBJECT               (/*preset*/ macro_spindrift,                   /*yaw*/   0, /*pos*/  2542,  2622, -1714),\n    MACRO_OBJECT               (/*preset*/ macro_spindrift,                   /*yaw*/   0, /*pos*/ -6090, -1740,  1936),\n    MACRO_OBJECT               (/*preset*/ macro_spindrift,                   /*yaw*/   0, /*pos*/  4346, -3068,   400),\n    MACRO_OBJECT               (/*preset*/ macro_spindrift,                   /*yaw*/   0, /*pos*/ -5054, -4659, -1054),\n    MACRO_OBJECT               (/*preset*/ macro_spindrift,                   /*yaw*/   0, /*pos*/ -5033, -4740, -2666),\n    MACRO_OBJECT               (/*preset*/ macro_bobomb_buddy_opens_cannon_1, /*yaw*/   0, /*pos*/ -1220, -3583,  5969),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_cannon_closed,               /*yaw*/   0, /*pos*/ -3615, -4607,  4790, /*bhvParam*/ 0x00),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_cannon_closed,               /*yaw*/   0, /*pos*/ -5045, -1740,  4615, /*bhvParam*/ 0x00),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_cannon_closed,               /*yaw*/   0, /*pos*/  1090, -4607,  5729, /*bhvParam*/ 0x80),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/ 270, /*pos*/ -1060,  2560, -1840, /*bhvParam*/ DIALOG_087),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_vertical_flying,   /*yaw*/   0, /*pos*/  -180,  3100, -1480),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,        /*yaw*/   0, /*pos*/  3560,  2100,  -280),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,        /*yaw*/  77, /*pos*/ -1942,  1334,  1678),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,        /*yaw*/  90, /*pos*/ -1020,   646, -2706),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,        /*yaw*/  93, /*pos*/ -1460,  -888, -3933),\n    MACRO_OBJECT               (/*preset*/ macro_coin_arrow,                  /*yaw*/  75, /*pos*/ -2586, -4889, -4093),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/ 270, /*pos*/ -4350, -4864, -4813, /*bhvParam*/ DIALOG_094),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/   0, /*pos*/ -1037, -3583,  5872, /*bhvParam*/ DIALOG_091),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/ 180, /*pos*/  -309, -4889, -3690, /*bhvParam*/ DIALOG_049),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/   0, /*pos*/  1900, -1535,  3500, /*bhvParam*/ DIALOG_040),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  -488,  3100, -2305),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -3120, -1200, -2080),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_in_pole,          /*yaw*/   0, /*pos*/ -5200, -1345,  2995),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  2940, -1400,  2630),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  -600,  -505,  1940),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -3814, -2112,  6427),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  2700, -4600,  1230),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  1990, -4040,  4950),\n    MACRO_OBJECT               (/*preset*/ macro_blue_coin_switch,            /*yaw*/   0, /*pos*/  3400,  -820,     0),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/  3400,  -640,  -740),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/  3400,  -320, -1740),\n    MACRO_OBJECT               (/*preset*/ macro_recovery_heart,              /*yaw*/   0, /*pos*/  -270, -4650, -3100),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  4408, -4550, -1534),\n    MACRO_OBJECT               (/*preset*/ macro_box_1up_running_away,        /*yaw*/   0, /*pos*/ -4887, -1300, -4003),\n    MACRO_OBJECT               (/*preset*/ macro_box_1up_running_away,        /*yaw*/   0, /*pos*/ -1557,  -205,  1794),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/ccm/areas/1/movtext.inc.c",
    "content": "// 0x070166E8\nstatic Movtex ccm_movtex_penguin_puddle_water_data[] = {\n    MOV_TEX_INIT_LOAD(   1),\n    MOV_TEX_ROT_SPEED(   5),\n    MOV_TEX_ROT_SCALE(   2),\n    MOV_TEX_4_BOX_TRIS(3137, 4228),\n    MOV_TEX_4_BOX_TRIS(3137, 4945),\n    MOV_TEX_4_BOX_TRIS(3925, 4945),\n    MOV_TEX_4_BOX_TRIS(3925, 4228),\n    MOV_TEX_ROT(     ROTATE_COUNTER_CLOCKWISE),\n    MOV_TEX_ALPHA(   0x96),\n    MOV_TEX_DEFINE(  TEXTURE_WATER),\n    MOV_TEX_END(),\n};\n\n// 0x07016708 - 0x07016718\nconst struct MovtexQuadCollection ccm_movtex_penguin_puddle_water[] = {\n    {0, ccm_movtex_penguin_puddle_water_data},\n    {-1, NULL},\n};\n"
  },
  {
    "path": "levels/ccm/areas/1/trajectory.inc.c",
    "content": "// 0x070165A8 - 0x0701669A\nconst Trajectory ccm_seg7_trajectory_snowman[] = {\n    TRAJECTORY_POS(0, /*pos*/  2501,  2662,  -975),\n    TRAJECTORY_POS(1, /*pos*/  2533,  2560,  -800),\n    TRAJECTORY_POS(2, /*pos*/  2566,  2300,  -500),\n    TRAJECTORY_POS(3, /*pos*/  2600,  1884,   733),\n    TRAJECTORY_POS(4, /*pos*/  2466,  1647,  1835),\n    TRAJECTORY_POS(5, /*pos*/  2000,  1483,  2233),\n    TRAJECTORY_POS(6, /*pos*/   766,  1321,  2400),\n    TRAJECTORY_POS(7, /*pos*/  -872,  1190,  2033),\n    TRAJECTORY_POS(8, /*pos*/ -3072,  1097,  1300),\n    TRAJECTORY_POS(9, /*pos*/ -3805,   882,  -366),\n    TRAJECTORY_POS(10, /*pos*/ -3758,   819, -1513),\n    TRAJECTORY_POS(11, /*pos*/ -3145,   786, -2426),\n    TRAJECTORY_POS(12, /*pos*/ -1658,   546, -2853),\n    TRAJECTORY_POS(13, /*pos*/  -138,   300, -3000),\n    TRAJECTORY_POS(14, /*pos*/  1966,  -192, -2800),\n    TRAJECTORY_POS(15, /*pos*/  3066,  -456, -2800),\n    TRAJECTORY_POS(16, /*pos*/  3933,  -461, -2999),\n    TRAJECTORY_POS(17, /*pos*/  4266,  -188, -3433),\n    TRAJECTORY_POS(18, /*pos*/  3901,  -402, -3800),\n    TRAJECTORY_POS(19, /*pos*/  3133,  -579, -3866),\n    TRAJECTORY_POS(20, /*pos*/  2033,  -855, -3800),\n    TRAJECTORY_POS(21, /*pos*/   766, -1073, -3633),\n    TRAJECTORY_POS(22, /*pos*/ -1100, -1142, -3744),\n    TRAJECTORY_POS(23, /*pos*/ -2318, -1188, -3658),\n    TRAJECTORY_POS(24, /*pos*/ -3318, -1228, -3375),\n    TRAJECTORY_POS(25, /*pos*/ -4010, -1267, -2802),\n    TRAJECTORY_POS(26, /*pos*/ -4470, -1368, -2151),\n    TRAJECTORY_POS(27, /*pos*/ -4679, -1358, -1321),\n    TRAJECTORY_POS(28, /*pos*/ -4770, -1333,  -648),\n    TRAJECTORY_POS(29, /*pos*/ -4847, -1351,    40),\n    TRAJECTORY_END(),\n};\n\n// 0x0701669C - 0x070166E6\nconst Trajectory ccm_seg7_trajectory_0701669C[] = {\n    TRAJECTORY_POS(0, /*pos*/   571, -4450,  6426),\n    TRAJECTORY_POS(1, /*pos*/  -198, -4120,  6426),\n    TRAJECTORY_POS(2, /*pos*/ -1222, -3569,  6426),\n    TRAJECTORY_POS(3, /*pos*/ -2246, -2814,  6426),\n    TRAJECTORY_POS(4, /*pos*/ -3050, -2139,  6426),\n    TRAJECTORY_POS(5, /*pos*/ -2246, -2814,  6426),\n    TRAJECTORY_POS(6, /*pos*/ -1222, -3569,  6426),\n    TRAJECTORY_POS(7, /*pos*/  -198, -4120,  6426),\n    TRAJECTORY_POS(8, /*pos*/   571, -4450,  6426),\n    TRAJECTORY_END(),\n};\n"
  },
  {
    "path": "levels/ccm/areas/2/1/model.inc.c",
    "content": "// 0x07016718 - 0x07016730\nstatic const Lights1 ccm_seg7_lights_07016718 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07016730 - 0x07016770\nstatic const Vtx ccm_seg7_vertex_07016730[] = {\n    {{{ -5784,  -5836,  -6143}, 0, {  8144, -11274}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -7167,  -8191,  -6143}, 0, { -5654,  12230}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -5784,  -8191,  -6143}, 0, {  8144,  12230}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -7167,  -5836,  -6143}, 0, { -5654, -11274}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07016770 - 0x07016850\nstatic const Vtx ccm_seg7_vertex_07016770[] = {\n    {{{ -4472,   1685,   -284}, 0, { -1080,   2052}, {0x97, 0x42, 0x16, 0xff}}},\n    {{{ -4712,   -727,   6150}, 0, {-15406,  10078}, {0xc7, 0x6f, 0x11, 0xff}}},\n    {{{ -4577,   -592,   6150}, 0, {-15728,   9630}, {0x96, 0x45, 0x02, 0xff}}},\n    {{{ -5254,   1685,   -284}, 0, {   786,   2052}, {0x59, 0x55, 0x1e, 0xff}}},\n    {{{ -4450,   1894,   -861}, 0, {   202,   1354}, {0x05, 0x7e, 0xf9, 0xff}}},\n    {{{ -5269,   1894,   -861}, 0, {  2160,   1354}, {0x69, 0x46, 0x08, 0xff}}},\n    {{{ -5080,   -727,   6150}, 0, {-14526,  10078}, {0x43, 0x67, 0x1b, 0xff}}},\n    {{{ -4896,   -776,   6150}, 0, {-14966,  10242}, {0x05, 0x7b, 0x1e, 0xff}}},\n    {{{ -5215,   -592,   6150}, 0, {-14202,   9630}, {0x6f, 0x38, 0x13, 0xff}}},\n    {{{ -4679,  -4709,    483}, 0, { -4032,    928}, {0xfb, 0x6c, 0xbf, 0xff}}},\n    {{{ -2244,  -4197,   1159}, 0, { -9520,   -774}, {0x4f, 0x2e, 0xa9, 0xff}}},\n    {{{ -2206,  -4300,   1064}, 0, { -9286,   -434}, {0x30, 0x75, 0xfd, 0xff}}},\n    {{{ -5265,   -408,   6150}, 0, {-14084,   9016}, {0x7d, 0x00, 0xed, 0xff}}},\n    {{{ -4527,   -408,   6150}, 0, {-15846,   9016}, {0x87, 0x0d, 0xde, 0xff}}},\n};\n\n// 0x07016850 - 0x07016950\nstatic const Vtx ccm_seg7_vertex_07016850[] = {\n    {{{ -5733,  -4812,   -363}, 0, {   444,  12446}, {0xe9, 0x5e, 0x51, 0xff}}},\n    {{{ -4604,  -4709,   -340}, 0, {  -172,  12122}, {0xee, 0x7a, 0x1d, 0xff}}},\n    {{{ -4594,  -4607,   -442}, 0, {  -124,  11964}, {0xeb, 0x3a, 0x6e, 0xff}}},\n    {{{ -4679,  -4709,    483}, 0, { -4032,    928}, {0xfb, 0x6c, 0xbf, 0xff}}},\n    {{{ -4688,  -4607,    585}, 0, { -4326,    588}, {0x06, 0x26, 0x88, 0xff}}},\n    {{{ -2244,  -4197,   1159}, 0, { -9520,   -774}, {0x4f, 0x2e, 0xa9, 0xff}}},\n    {{{ -1902,  -4300,    294}, 0, { -7402,   -434}, {0x02, 0x77, 0x2a, 0xff}}},\n    {{{ -4594,  -4607,   -442}, 0, { -1366,    588}, {0xeb, 0x3a, 0x6e, 0xff}}},\n    {{{ -4604,  -4709,   -340}, 0, { -1660,    928}, {0xee, 0x7a, 0x1d, 0xff}}},\n    {{{ -5726,  -4812,    443}, 0, { -2426,   1268}, {0x06, 0x75, 0xd2, 0xff}}},\n    {{{ -5725,  -4668,    589}, 0, { -2866,    790}, {0x19, 0x31, 0x8e, 0xff}}},\n    {{{ -6594,  -4863,      7}, 0, {   116,   1438}, {0x09, 0x78, 0xd9, 0xff}}},\n    {{{ -6708,  -4728,    110}, 0, {     0,    990}, {0x51, 0x39, 0xb2, 0xff}}},\n    {{{ -6911,  -4965,   -626}, 0, {  2474,   1778}, {0x34, 0x6e, 0xdd, 0xff}}},\n    {{{ -7056,  -4821,   -626}, 0, {  2680,   1296}, {0x76, 0x25, 0xe9, 0xff}}},\n    {{{ -6911,  -5523,  -3326}, 0, { 10600,   3632}, {0x2e, 0x47, 0xa2, 0xff}}},\n};\n\n// 0x07016950 - 0x07016A50\nstatic const Vtx ccm_seg7_vertex_07016950[] = {\n    {{{ -1902,  -4300,    294}, 0, { -7402,   -434}, {0x02, 0x77, 0x2a, 0xff}}},\n    {{{ -1864,  -4197,    199}, 0, { -7170,   -774}, {0x08, 0x1d, 0x7b, 0xff}}},\n    {{{ -4594,  -4607,   -442}, 0, { -1366,    588}, {0xeb, 0x3a, 0x6e, 0xff}}},\n    {{{ -6424,  -1595,   3246}, 0, { -4592,  12968}, {0xf6, 0x7c, 0xeb, 0xff}}},\n    {{{ -6424,  -4237,  -6450}, 0, { 17862,  21756}, {0x0a, 0x7a, 0xdf, 0xff}}},\n    {{{ -6524,  -1569,   3246}, 0, { -4354,  12878}, {0x3a, 0x6f, 0xee, 0xff}}},\n    {{{ -4472,   1685,   -284}, 0, { -1080,   2052}, {0x97, 0x42, 0x16, 0xff}}},\n    {{{ -4454,   2005,   -755}, 0, {     0,    990}, {0xf9, 0x42, 0x95, 0xff}}},\n    {{{ -4450,   1894,   -861}, 0, {   202,   1354}, {0x05, 0x7e, 0xf9, 0xff}}},\n    {{{ -3221,   1741,   -531}, 0, { -3496,   1866}, {0x36, 0x6d, 0xdd, 0xff}}},\n    {{{ -5350,   2048,  -1761}, 0, {  4434,    846}, {0x37, 0x71, 0xf4, 0xff}}},\n    {{{ -5269,   1894,   -861}, 0, {  2160,   1354}, {0x69, 0x46, 0x08, 0xff}}},\n    {{{ -6325,  -4210,  -6450}, 0, { 17624,  21668}, {0xc3, 0x6a, 0xe3, 0xff}}},\n    {{{ -6324,  -1569,   3246}, 0, { -4830,  12878}, {0xbc, 0x69, 0xed, 0xff}}},\n    {{{ -6251,  -1496,   3246}, 0, { -5004,  12636}, {0x93, 0x3e, 0xf1, 0xff}}},\n    {{{ -6252,  -4137,  -6450}, 0, { 17450,  21424}, {0x8e, 0x34, 0xf2, 0xff}}},\n};\n\n// 0x07016A50 - 0x07016B40\nstatic const Vtx ccm_seg7_vertex_07016A50[] = {\n    {{{ -6424,  -4237,  -6450}, 0, { 17862,  21756}, {0x0a, 0x7a, 0xdf, 0xff}}},\n    {{{ -6524,  -4210,  -6450}, 0, { 18100,  21668}, {0x3e, 0x6a, 0xe3, 0xff}}},\n    {{{ -6524,  -1569,   3246}, 0, { -4354,  12878}, {0x3a, 0x6f, 0xee, 0xff}}},\n    {{{ -6597,  -1496,   3246}, 0, { -4180,  12636}, {0x6e, 0x3f, 0xfa, 0xff}}},\n    {{{ -6624,  -4038,  -6450}, 0, { 18336,  21094}, {0x7e, 0x0b, 0xfd, 0xff}}},\n    {{{ -6623,  -1396,   3246}, 0, { -4116,  12306}, {0x7e, 0x00, 0x05, 0xff}}},\n    {{{ -6366,  -1528,   3834}, 0, { -6094,  12742}, {0xc4, 0x6d, 0xec, 0xff}}},\n    {{{ -6324,  -1569,   3246}, 0, { -4830,  12878}, {0xbc, 0x69, 0xed, 0xff}}},\n    {{{ -6424,  -1595,   3246}, 0, { -4592,  12968}, {0xf6, 0x7c, 0xeb, 0xff}}},\n    {{{ -6464,  -1554,   3821}, 0, { -5828,  12832}, {0x01, 0x7e, 0xf5, 0xff}}},\n    {{{ -6293,  -1455,   3844}, 0, { -6288,  12500}, {0x95, 0x3f, 0xe8, 0xff}}},\n    {{{ -6251,  -1496,   3246}, 0, { -5004,  12636}, {0x93, 0x3e, 0xf1, 0xff}}},\n    {{{ -6597,  -4137,  -6450}, 0, { 18274,  21424}, {0x66, 0x48, 0xed, 0xff}}},\n    {{{ -6563,  -1528,   3808}, 0, { -5562,  12742}, {0x40, 0x6d, 0x00, 0xff}}},\n    {{{ -6635,  -1455,   3799}, 0, { -5366,  12500}, {0x6d, 0x3e, 0x0c, 0xff}}},\n};\n\n// 0x07016B40 - 0x07016C40\nstatic const Vtx ccm_seg7_vertex_07016B40[] = {\n    {{{ -6424,  -1197,   3246}, 0, { -4592,  11642}, {0x00, 0x83, 0x15, 0xff}}},\n    {{{ -6424,  -3839,  -6450}, 0, { 17862,  20430}, {0x0a, 0x86, 0x21, 0xff}}},\n    {{{ -6325,  -3865,  -6450}, 0, { 17624,  20520}, {0xcd, 0x91, 0x1e, 0xff}}},\n    {{{ -6623,  -1396,   3246}, 0, { -4116,  12306}, {0x7e, 0x00, 0x05, 0xff}}},\n    {{{ -6624,  -4038,  -6450}, 0, { 18336,  21094}, {0x7e, 0x0b, 0xfd, 0xff}}},\n    {{{ -6597,  -3938,  -6450}, 0, { 18274,  20762}, {0x72, 0xcc, 0x0e, 0xff}}},\n    {{{ -6662,  -1355,   3795}, 0, { -5296,  12168}, {0x7d, 0x00, 0x15, 0xff}}},\n    {{{ -6597,  -1297,   3246}, 0, { -4180,  11974}, {0x6d, 0xc2, 0x0f, 0xff}}},\n    {{{ -6635,  -1455,   3799}, 0, { -5366,  12500}, {0x6d, 0x3e, 0x0c, 0xff}}},\n    {{{ -6524,  -3865,  -6450}, 0, { 18100,  20520}, {0x47, 0x9b, 0x1b, 0xff}}},\n    {{{ -6635,  -1256,   3799}, 0, { -5366,  11838}, {0x6b, 0xc1, 0x18, 0xff}}},\n    {{{ -6524,  -1224,   3246}, 0, { -4354,  11732}, {0x3e, 0x94, 0x15, 0xff}}},\n    {{{ -6563,  -1183,   3808}, 0, { -5562,  11594}, {0x3d, 0x93, 0x15, 0xff}}},\n    {{{ -6225,  -1396,   3246}, 0, { -5068,  12306}, {0x82, 0x00, 0xfb, 0xff}}},\n    {{{ -6252,  -4137,  -6450}, 0, { 17450,  21424}, {0x8e, 0x34, 0xf2, 0xff}}},\n    {{{ -6251,  -1496,   3246}, 0, { -5004,  12636}, {0x93, 0x3e, 0xf1, 0xff}}},\n};\n\n// 0x07016C40 - 0x07016D20\nstatic const Vtx ccm_seg7_vertex_07016C40[] = {\n    {{{ -6464,  -1156,   3821}, 0, { -5828,  11506}, {0xfe, 0x82, 0x0b, 0xff}}},\n    {{{ -6424,  -1197,   3246}, 0, { -4592,  11642}, {0x00, 0x83, 0x15, 0xff}}},\n    {{{ -6324,  -1224,   3246}, 0, { -4830,  11732}, {0xc1, 0x94, 0x10, 0xff}}},\n    {{{ -6563,  -1183,   3808}, 0, { -5562,  11594}, {0x3d, 0x93, 0x15, 0xff}}},\n    {{{ -6325,  -3865,  -6450}, 0, { 17624,  20520}, {0xcd, 0x91, 0x1e, 0xff}}},\n    {{{ -6252,  -3938,  -6450}, 0, { 17450,  20762}, {0x9a, 0xb8, 0x13, 0xff}}},\n    {{{ -6366,  -1183,   3834}, 0, { -6094,  11594}, {0xc0, 0x93, 0xff, 0xff}}},\n    {{{ -6251,  -1297,   3246}, 0, { -5004,  11974}, {0x93, 0xc1, 0x06, 0xff}}},\n    {{{ -6225,  -4038,  -6450}, 0, { 17386,  21094}, {0x82, 0xf6, 0x02, 0xff}}},\n    {{{ -6293,  -1256,   3844}, 0, { -6288,  11838}, {0x93, 0xc1, 0xf2, 0xff}}},\n    {{{ -6225,  -1396,   3246}, 0, { -5068,  12306}, {0x82, 0x00, 0xfb, 0xff}}},\n    {{{ -6252,  -4137,  -6450}, 0, { 17450,  21424}, {0x8e, 0x34, 0xf2, 0xff}}},\n    {{{ -6267,  -1355,   3847}, 0, { -6360,  12168}, {0x84, 0x00, 0xea, 0xff}}},\n    {{{ -6251,  -1496,   3246}, 0, { -5004,  12636}, {0x93, 0x3e, 0xf1, 0xff}}},\n};\n\n// 0x07016D20 - 0x07016E20\nstatic const Vtx ccm_seg7_vertex_07016D20[] = {\n    {{{ -4946,   -817,   6531}, 0, {-15730,  10378}, {0xfd, 0x7e, 0x0e, 0xff}}},\n    {{{ -5094,   -858,   6887}, 0, {-16200,  10514}, {0xf9, 0x7e, 0x0c, 0xff}}},\n    {{{ -4777,   -770,   6577}, 0, {-16238,  10222}, {0xc0, 0x6d, 0xfb, 0xff}}},\n    {{{ -6267,  -1355,   3847}, 0, { -6360,  12168}, {0x84, 0x00, 0xea, 0xff}}},\n    {{{ -6251,  -1496,   3246}, 0, { -5004,  12636}, {0x93, 0x3e, 0xf1, 0xff}}},\n    {{{ -6293,  -1455,   3844}, 0, { -6288,  12500}, {0x95, 0x3f, 0xe8, 0xff}}},\n    {{{ -5080,   -727,   6150}, 0, {-14526,  10078}, {0x43, 0x67, 0x1b, 0xff}}},\n    {{{ -5115,   -770,   6486}, 0, {-15220,  10222}, {0x39, 0x6d, 0x1d, 0xff}}},\n    {{{ -4896,   -776,   6150}, 0, {-14966,  10242}, {0x05, 0x7b, 0x1e, 0xff}}},\n    {{{ -5239,   -642,   6453}, 0, {-14848,   9796}, {0x68, 0x3f, 0x21, 0xff}}},\n    {{{ -5238,   -813,   6804}, 0, {-15664,  10366}, {0x30, 0x6d, 0x2b, 0xff}}},\n    {{{ -5343,   -692,   6743}, 0, {-15272,   9962}, {0x5c, 0x3f, 0x3b, 0xff}}},\n    {{{ -4712,   -727,   6150}, 0, {-15406,  10078}, {0xc7, 0x6f, 0x11, 0xff}}},\n    {{{ -4844,   -692,   7031}, 0, {-17130,   9962}, {0x9f, 0x3f, 0xcd, 0xff}}},\n    {{{ -4805,   -525,   7053}, 0, {-17274,   9408}, {0x95, 0x00, 0xbd, 0xff}}},\n    {{{ -4608,   -467,   6622}, 0, {-16746,   9214}, {0x87, 0x00, 0xdb, 0xff}}},\n};\n\n// 0x07016E20 - 0x07016F10\nstatic const Vtx ccm_seg7_vertex_07016E20[] = {\n    {{{ -5215,   -592,   6150}, 0, {-14202,   9630}, {0x6f, 0x38, 0x13, 0xff}}},\n    {{{ -5239,   -642,   6453}, 0, {-14848,   9796}, {0x68, 0x3f, 0x21, 0xff}}},\n    {{{ -5080,   -727,   6150}, 0, {-14526,  10078}, {0x43, 0x67, 0x1b, 0xff}}},\n    {{{ -4777,   -770,   6577}, 0, {-16238,  10222}, {0xc0, 0x6d, 0xfb, 0xff}}},\n    {{{ -4653,   -642,   6610}, 0, {-16610,   9796}, {0x95, 0x3f, 0xe8, 0xff}}},\n    {{{ -4577,   -592,   6150}, 0, {-15728,   9630}, {0x96, 0x45, 0x02, 0xff}}},\n    {{{ -4712,   -727,   6150}, 0, {-15406,  10078}, {0xc7, 0x6f, 0x11, 0xff}}},\n    {{{ -5094,   -858,   6887}, 0, {-16200,  10514}, {0xf9, 0x7e, 0x0c, 0xff}}},\n    {{{ -4950,   -813,   6970}, 0, {-16738,  10366}, {0xc4, 0x6d, 0xeb, 0xff}}},\n    {{{ -4527,   -408,   6150}, 0, {-15846,   9016}, {0x87, 0x0d, 0xde, 0xff}}},\n    {{{ -4608,   -467,   6622}, 0, {-16746,   9214}, {0x87, 0x00, 0xdb, 0xff}}},\n    {{{ -4844,   -692,   7031}, 0, {-17130,   9962}, {0x9f, 0x3f, 0xcd, 0xff}}},\n    {{{ -4653,   -292,   6610}, 0, {-16610,   8632}, {0x9a, 0xc2, 0xd7, 0xff}}},\n    {{{ -4577,   -223,   6150}, 0, {-15728,   8402}, {0xac, 0xd9, 0xab, 0xff}}},\n    {{{ -4805,   -525,   7053}, 0, {-17274,   9408}, {0x95, 0x00, 0xbd, 0xff}}},\n};\n\n// 0x07016F10 - 0x07017000\nstatic const Vtx ccm_seg7_vertex_07016F10[] = {\n    {{{ -4653,   -292,   6610}, 0, {-16610,   8632}, {0x9a, 0xc2, 0xd7, 0xff}}},\n    {{{ -4777,   -164,   6577}, 0, {-16238,   8204}, {0xc9, 0x94, 0xdb, 0xff}}},\n    {{{ -4712,    -88,   6150}, 0, {-15406,   7954}, {0xcc, 0xb4, 0xaa, 0xff}}},\n    {{{ -4577,   -223,   6150}, 0, {-15728,   8402}, {0xac, 0xd9, 0xab, 0xff}}},\n    {{{ -4844,   -359,   7031}, 0, {-17130,   8854}, {0xa8, 0xc2, 0xbe, 0xff}}},\n    {{{ -4805,   -525,   7053}, 0, {-17274,   9408}, {0x95, 0x00, 0xbd, 0xff}}},\n    {{{ -4946,   -117,   6531}, 0, {-15730,   8048}, {0x06, 0x84, 0xe7, 0xff}}},\n    {{{ -4896,    -39,   6150}, 0, {-14966,   7790}, {0xfa, 0xa3, 0xab, 0xff}}},\n    {{{ -4950,   -237,   6970}, 0, {-16738,   8450}, {0xd5, 0x94, 0xcf, 0xff}}},\n    {{{ -5115,   -164,   6486}, 0, {-15220,   8204}, {0x42, 0x95, 0xf7, 0xff}}},\n    {{{ -5080,    -88,   6150}, 0, {-14526,   7954}, {0x2a, 0xa9, 0xaf, 0xff}}},\n    {{{ -5094,   -193,   6887}, 0, {-16200,   8302}, {0x0c, 0x84, 0xea, 0xff}}},\n    {{{ -5239,   -292,   6453}, 0, {-14848,   8632}, {0x6e, 0xc2, 0x09, 0xff}}},\n    {{{ -5215,   -223,   6150}, 0, {-14202,   8402}, {0x46, 0xd0, 0xa3, 0xff}}},\n    {{{ -5238,   -237,   6804}, 0, {-15664,   8450}, {0x42, 0x95, 0x09, 0xff}}},\n};\n\n// 0x07017000 - 0x07017100\nstatic const Vtx ccm_seg7_vertex_07017000[] = {\n    {{{ -5239,   -292,   6453}, 0, {-14848,   8632}, {0x6e, 0xc2, 0x09, 0xff}}},\n    {{{ -5285,   -467,   6441}, 0, {-14712,   9214}, {0x7c, 0x00, 0x19, 0xff}}},\n    {{{ -5265,   -408,   6150}, 0, {-14084,   9016}, {0x7d, 0x00, 0xed, 0xff}}},\n    {{{ -5215,   -223,   6150}, 0, {-14202,   8402}, {0x46, 0xd0, 0xa3, 0xff}}},\n    {{{ -5238,   -237,   6804}, 0, {-15664,   8450}, {0x42, 0x95, 0x09, 0xff}}},\n    {{{ -5343,   -359,   6743}, 0, {-15272,   8854}, {0x67, 0xc2, 0x26, 0xff}}},\n    {{{ -5215,   -592,   6150}, 0, {-14202,   9630}, {0x6f, 0x38, 0x13, 0xff}}},\n    {{{ -5239,   -642,   6453}, 0, {-14848,   9796}, {0x68, 0x3f, 0x21, 0xff}}},\n    {{{ -5382,   -525,   6721}, 0, {-15128,   9408}, {0x71, 0x00, 0x39, 0xff}}},\n    {{{ -5343,   -692,   6743}, 0, {-15272,   9962}, {0x5c, 0x3f, 0x3b, 0xff}}},\n    {{{ -5521,   -741,   6999}, 0, {-15438,  10126}, {0x49, 0x3f, 0x51, 0xff}}},\n    {{{ -5440,   -857,   7081}, 0, {-15822,  10510}, {0x23, 0x6d, 0x36, 0xff}}},\n    {{{ -5238,   -813,   6804}, 0, {-15664,  10366}, {0x30, 0x6d, 0x2b, 0xff}}},\n    {{{ -5094,   -858,   6887}, 0, {-16200,  10514}, {0xf9, 0x7e, 0x0c, 0xff}}},\n    {{{ -5328,   -899,   7192}, 0, {-16348,  10652}, {0xf6, 0x7e, 0x0a, 0xff}}},\n    {{{ -4950,   -813,   6970}, 0, {-16738,  10366}, {0xc4, 0x6d, 0xeb, 0xff}}},\n};\n\n// 0x07017100 - 0x07017200\nstatic const Vtx ccm_seg7_vertex_07017100[] = {\n    {{{ -4950,   -813,   6970}, 0, {-16738,  10366}, {0xc4, 0x6d, 0xeb, 0xff}}},\n    {{{ -5216,   -857,   7304}, 0, {-16874,  10510}, {0xcc, 0x6d, 0xdc, 0xff}}},\n    {{{ -4844,   -692,   7031}, 0, {-17130,   9962}, {0x9f, 0x3f, 0xcd, 0xff}}},\n    {{{ -5328,   -899,   7192}, 0, {-16348,  10652}, {0xf6, 0x7e, 0x0a, 0xff}}},\n    {{{ -5134,   -741,   7386}, 0, {-17258,  10126}, {0xb0, 0x3f, 0xb6, 0xff}}},\n    {{{ -4805,   -525,   7053}, 0, {-17274,   9408}, {0x95, 0x00, 0xbd, 0xff}}},\n    {{{ -5104,   -583,   7416}, 0, {-17400,   9600}, {0xaa, 0x00, 0xa4, 0xff}}},\n    {{{ -4844,   -359,   7031}, 0, {-17130,   8854}, {0xa8, 0xc2, 0xbe, 0xff}}},\n    {{{ -5134,   -425,   7386}, 0, {-17258,   9074}, {0xbc, 0xc2, 0xaa, 0xff}}},\n    {{{ -4950,   -237,   6970}, 0, {-16738,   8450}, {0xd5, 0x94, 0xcf, 0xff}}},\n    {{{ -5216,   -309,   7304}, 0, {-16874,   8690}, {0xe3, 0x94, 0xc5, 0xff}}},\n    {{{ -5094,   -193,   6887}, 0, {-16200,   8302}, {0x0c, 0x84, 0xea, 0xff}}},\n    {{{ -5328,   -267,   7192}, 0, {-16348,   8548}, {0x11, 0x84, 0xef, 0xff}}},\n    {{{ -5238,   -237,   6804}, 0, {-15664,   8450}, {0x42, 0x95, 0x09, 0xff}}},\n    {{{ -5440,   -309,   7081}, 0, {-15822,   8690}, {0x3d, 0x95, 0x1a, 0xff}}},\n    {{{ -5343,   -359,   6743}, 0, {-15272,   8854}, {0x67, 0xc2, 0x26, 0xff}}},\n};\n\n// 0x07017200 - 0x070172F0\nstatic const Vtx ccm_seg7_vertex_07017200[] = {\n    {{{ -5440,   -309,   7081}, 0, {-15822,   8690}, {0x3d, 0x95, 0x1a, 0xff}}},\n    {{{ -5521,   -425,   6999}, 0, {-15438,   9074}, {0x5a, 0xc2, 0x40, 0xff}}},\n    {{{ -5343,   -359,   6743}, 0, {-15272,   8854}, {0x67, 0xc2, 0x26, 0xff}}},\n    {{{ -5382,   -525,   6721}, 0, {-15128,   9408}, {0x71, 0x00, 0x39, 0xff}}},\n    {{{ -5551,   -583,   6969}, 0, {-15296,   9600}, {0x5e, 0x00, 0x54, 0xff}}},\n    {{{ -5343,   -692,   6743}, 0, {-15272,   9962}, {0x5c, 0x3f, 0x3b, 0xff}}},\n    {{{ -5521,   -741,   6999}, 0, {-15438,  10126}, {0x49, 0x3f, 0x51, 0xff}}},\n    {{{ -5763,   -790,   7202}, 0, {-15330,  10288}, {0x32, 0x44, 0x5e, 0xff}}},\n    {{{ -5708,   -900,   7297}, 0, {-15680,  10654}, {0x14, 0x6d, 0x3d, 0xff}}},\n    {{{ -5440,   -857,   7081}, 0, {-15822,  10510}, {0x23, 0x6d, 0x36, 0xff}}},\n    {{{ -5328,   -899,   7192}, 0, {-16348,  10652}, {0xf6, 0x7e, 0x0a, 0xff}}},\n    {{{ -5633,   -940,   7427}, 0, {-16162,  10788}, {0xf4, 0x7e, 0x07, 0xff}}},\n    {{{ -5216,   -857,   7304}, 0, {-16874,  10510}, {0xcc, 0x6d, 0xdc, 0xff}}},\n    {{{ -5558,   -900,   7557}, 0, {-16642,  10654}, {0xd7, 0x6d, 0xcf, 0xff}}},\n    {{{ -5134,   -741,   7386}, 0, {-17258,  10126}, {0xb0, 0x3f, 0xb6, 0xff}}},\n};\n\n// 0x070172F0 - 0x070173E0\nstatic const Vtx ccm_seg7_vertex_070172F0[] = {\n    {{{ -5134,   -741,   7386}, 0, {-17258,  10126}, {0xb0, 0x3f, 0xb6, 0xff}}},\n    {{{ -5503,   -790,   7652}, 0, {-16994,  10288}, {0xc6, 0x3f, 0xa3, 0xff}}},\n    {{{ -5104,   -583,   7416}, 0, {-17400,   9600}, {0xaa, 0x00, 0xa4, 0xff}}},\n    {{{ -5558,   -900,   7557}, 0, {-16642,  10654}, {0xd7, 0x6d, 0xcf, 0xff}}},\n    {{{ -5483,   -640,   7687}, 0, {-17122,   9788}, {0xc5, 0x00, 0x90, 0xff}}},\n    {{{ -5134,   -425,   7386}, 0, {-17258,   9074}, {0xbc, 0xc2, 0xaa, 0xff}}},\n    {{{ -5503,   -490,   7652}, 0, {-16994,   9290}, {0xd5, 0xc2, 0x9b, 0xff}}},\n    {{{ -5216,   -309,   7304}, 0, {-16874,   8690}, {0xe3, 0x94, 0xc5, 0xff}}},\n    {{{ -5558,   -380,   7557}, 0, {-16642,   8924}, {0xf3, 0x94, 0xc0, 0xff}}},\n    {{{ -5328,   -267,   7192}, 0, {-16348,   8548}, {0x11, 0x84, 0xef, 0xff}}},\n    {{{ -5783,   -640,   7167}, 0, {-15200,   9788}, {0x41, 0x05, 0x6c, 0xff}}},\n    {{{ -6053,   -838,   7335}, 0, {-14948,  10450}, {0x1c, 0x3f, 0x6a, 0xff}}},\n    {{{ -5763,   -790,   7202}, 0, {-15330,  10288}, {0x32, 0x44, 0x5e, 0xff}}},\n    {{{ -5633,   -339,   7427}, 0, {-16162,   8790}, {0x15, 0x84, 0xf4, 0xff}}},\n    {{{ -5440,   -309,   7081}, 0, {-15822,   8690}, {0x3d, 0x95, 0x1a, 0xff}}},\n};\n\n// 0x070173E0 - 0x070174D0\nstatic const Vtx ccm_seg7_vertex_070173E0[] = {\n    {{{ -5440,   -309,   7081}, 0, {-15822,   8690}, {0x3d, 0x95, 0x1a, 0xff}}},\n    {{{ -5708,   -380,   7297}, 0, {-15680,   8924}, {0x34, 0x95, 0x2a, 0xff}}},\n    {{{ -5521,   -425,   6999}, 0, {-15438,   9074}, {0x5a, 0xc2, 0x40, 0xff}}},\n    {{{ -5633,   -339,   7427}, 0, {-16162,   8790}, {0x15, 0x84, 0xf4, 0xff}}},\n    {{{ -5763,   -490,   7202}, 0, {-15330,   9290}, {0x45, 0xc2, 0x55, 0xff}}},\n    {{{ -5551,   -583,   6969}, 0, {-15296,   9600}, {0x5e, 0x00, 0x54, 0xff}}},\n    {{{ -5783,   -640,   7167}, 0, {-15200,   9788}, {0x41, 0x05, 0x6c, 0xff}}},\n    {{{ -5521,   -741,   6999}, 0, {-15438,  10126}, {0x49, 0x3f, 0x51, 0xff}}},\n    {{{ -5763,   -790,   7202}, 0, {-15330,  10288}, {0x32, 0x44, 0x5e, 0xff}}},\n    {{{ -6053,   -838,   7335}, 0, {-14948,  10450}, {0x1c, 0x3f, 0x6a, 0xff}}},\n    {{{ -6026,   -943,   7436}, 0, {-15246,  10796}, {0x03, 0x6d, 0x40, 0xff}}},\n    {{{ -5708,   -900,   7297}, 0, {-15680,  10654}, {0x14, 0x6d, 0x3d, 0xff}}},\n    {{{ -5633,   -940,   7427}, 0, {-16162,  10788}, {0xf4, 0x7e, 0x07, 0xff}}},\n    {{{ -5989,   -981,   7574}, 0, {-15652,  10924}, {0xf2, 0x7e, 0x03, 0xff}}},\n    {{{ -5558,   -900,   7557}, 0, {-16642,  10654}, {0xd7, 0x6d, 0xcf, 0xff}}},\n};\n\n// 0x070174D0 - 0x070175D0\nstatic const Vtx ccm_seg7_vertex_070174D0[] = {\n    {{{ -5558,   -900,   7557}, 0, {-16642,  10654}, {0xd7, 0x6d, 0xcf, 0xff}}},\n    {{{ -5952,   -943,   7712}, 0, {-16060,  10796}, {0xe5, 0x6d, 0xc6, 0xff}}},\n    {{{ -5503,   -790,   7652}, 0, {-16994,  10288}, {0xc6, 0x3f, 0xa3, 0xff}}},\n    {{{ -5989,   -981,   7574}, 0, {-15652,  10924}, {0xf2, 0x7e, 0x03, 0xff}}},\n    {{{ -5925,   -838,   7813}, 0, {-16358,  10450}, {0xe2, 0x3b, 0x94, 0xff}}},\n    {{{ -5483,   -640,   7687}, 0, {-17122,   9788}, {0xc5, 0x00, 0x90, 0xff}}},\n    {{{ -5915,   -696,   7850}, 0, {-16468,   9974}, {0xe1, 0xfa, 0x86, 0xff}}},\n    {{{ -5503,   -490,   7652}, 0, {-16994,   9290}, {0xd5, 0xc2, 0x9b, 0xff}}},\n    {{{ -5925,   -553,   7813}, 0, {-16358,   9500}, {0xf0, 0xc2, 0x93, 0xff}}},\n    {{{ -5558,   -380,   7557}, 0, {-16642,   8924}, {0xf3, 0x94, 0xc0, 0xff}}},\n    {{{ -5952,   -449,   7712}, 0, {-16060,   9152}, {0x02, 0x94, 0xbe, 0xff}}},\n    {{{ -5633,   -339,   7427}, 0, {-16162,   8790}, {0x15, 0x84, 0xf4, 0xff}}},\n    {{{ -5989,   -410,   7574}, 0, {-15652,   9026}, {0x17, 0x84, 0xfa, 0xff}}},\n    {{{ -5708,   -380,   7297}, 0, {-15680,   8924}, {0x34, 0x95, 0x2a, 0xff}}},\n    {{{ -6026,   -449,   7436}, 0, {-15246,   9152}, {0x26, 0x95, 0x36, 0xff}}},\n    {{{ -5763,   -490,   7202}, 0, {-15330,   9290}, {0x45, 0xc2, 0x55, 0xff}}},\n};\n\n// 0x070175D0 - 0x070176D0\nstatic const Vtx ccm_seg7_vertex_070175D0[] = {\n    {{{ -5763,   -490,   7202}, 0, {-15330,   9290}, {0x45, 0xc2, 0x55, 0xff}}},\n    {{{ -6053,   -553,   7335}, 0, {-14948,   9500}, {0x2c, 0xc2, 0x65, 0xff}}},\n    {{{ -5783,   -640,   7167}, 0, {-15200,   9788}, {0x41, 0x05, 0x6c, 0xff}}},\n    {{{ -6026,   -449,   7436}, 0, {-15246,   9152}, {0x26, 0x95, 0x36, 0xff}}},\n    {{{ -6063,   -696,   7299}, 0, {-14838,   9974}, {0x21, 0x00, 0x7a, 0xff}}},\n    {{{ -6053,   -838,   7335}, 0, {-14948,  10450}, {0x1c, 0x3f, 0x6a, 0xff}}},\n    {{{ -6026,   -943,   7436}, 0, {-15246,  10796}, {0x03, 0x6d, 0x40, 0xff}}},\n    {{{ -6371,   -986,   7489}, 0, {-14544,  10940}, {0xf3, 0x6d, 0x3f, 0xff}}},\n    {{{ -5989,   -981,   7574}, 0, {-15652,  10924}, {0xf2, 0x7e, 0x03, 0xff}}},\n    {{{ -6371,   -886,   7390}, 0, {-14314,  10610}, {0x00, 0x3f, 0x6e, 0xff}}},\n    {{{ -6371,  -1022,   7624}, 0, {-14858,  11060}, {0xf2, 0x7e, 0x00, 0xff}}},\n    {{{ -5952,   -943,   7712}, 0, {-16060,  10796}, {0xe5, 0x6d, 0xc6, 0xff}}},\n    {{{ -6371,   -986,   7760}, 0, {-15172,  10940}, {0xf5, 0x6d, 0xc1, 0xff}}},\n    {{{ -5925,   -838,   7813}, 0, {-16358,  10450}, {0xe2, 0x3b, 0x94, 0xff}}},\n    {{{ -6371,   -886,   7859}, 0, {-15400,  10610}, {0x01, 0x3f, 0x92, 0xff}}},\n    {{{ -6371,   -751,   7895}, 0, {-15484,  10158}, {0xff, 0x00, 0x82, 0xff}}},\n};\n\n// 0x070176D0 - 0x070177D0\nstatic const Vtx ccm_seg7_vertex_070176D0[] = {\n    {{{ -5925,   -838,   7813}, 0, {-16358,  10450}, {0xe2, 0x3b, 0x94, 0xff}}},\n    {{{ -6371,   -751,   7895}, 0, {-15484,  10158}, {0xff, 0x00, 0x82, 0xff}}},\n    {{{ -5915,   -696,   7850}, 0, {-16468,   9974}, {0xe1, 0xfa, 0x86, 0xff}}},\n    {{{ -6371,   -986,   7760}, 0, {-15172,  10940}, {0xf5, 0x6d, 0xc1, 0xff}}},\n    {{{ -6371,   -886,   7859}, 0, {-15400,  10610}, {0x01, 0x3f, 0x92, 0xff}}},\n    {{{ -5925,   -553,   7813}, 0, {-16358,   9500}, {0xf0, 0xc2, 0x93, 0xff}}},\n    {{{ -6371,   -615,   7859}, 0, {-15400,   9708}, {0x0c, 0xc1, 0x93, 0xff}}},\n    {{{ -5952,   -449,   7712}, 0, {-16060,   9152}, {0x02, 0x94, 0xbe, 0xff}}},\n    {{{ -6371,   -516,   7760}, 0, {-15172,   9378}, {0x13, 0x94, 0xc1, 0xff}}},\n    {{{ -5989,   -410,   7574}, 0, {-15652,   9026}, {0x17, 0x84, 0xfa, 0xff}}},\n    {{{ -6371,   -480,   7624}, 0, {-14858,   9256}, {0x17, 0x84, 0x00, 0xff}}},\n    {{{ -6026,   -449,   7436}, 0, {-15246,   9152}, {0x26, 0x95, 0x36, 0xff}}},\n    {{{ -6371,   -516,   7489}, 0, {-14544,   9378}, {0x16, 0x94, 0x3e, 0xff}}},\n    {{{ -6053,   -553,   7335}, 0, {-14948,   9500}, {0x2c, 0xc2, 0x65, 0xff}}},\n    {{{ -6371,   -615,   7390}, 0, {-14314,   9708}, {0x10, 0xc2, 0x6d, 0xff}}},\n    {{{ -6063,   -696,   7299}, 0, {-14838,   9974}, {0x21, 0x00, 0x7a, 0xff}}},\n};\n\n// 0x070177D0 - 0x070178D0\nstatic const Vtx ccm_seg7_vertex_070177D0[] = {\n    {{{ -6063,   -696,   7299}, 0, {-14838,   9974}, {0x21, 0x00, 0x7a, 0xff}}},\n    {{{ -6371,   -751,   7353}, 0, {-14230,  10158}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{ -6371,   -886,   7390}, 0, {-14314,  10610}, {0x00, 0x3f, 0x6e, 0xff}}},\n    {{{ -6695,   -934,   7359}, 0, {-13468,  10768}, {0xe4, 0x3f, 0x6a, 0xff}}},\n    {{{ -6719,  -1028,   7450}, 0, {-13622,  11082}, {0xe3, 0x6d, 0x39, 0xff}}},\n    {{{ -6371,   -986,   7489}, 0, {-14544,  10940}, {0xf3, 0x6d, 0x3f, 0xff}}},\n    {{{ -6371,  -1022,   7624}, 0, {-14858,  11060}, {0xf2, 0x7e, 0x00, 0xff}}},\n    {{{ -6371,   -615,   7390}, 0, {-14314,   9708}, {0x10, 0xc2, 0x6d, 0xff}}},\n    {{{ -6752,  -1063,   7574}, 0, {-13830,  11196}, {0xf2, 0x7e, 0xfd, 0xff}}},\n    {{{ -6371,   -986,   7760}, 0, {-15172,  10940}, {0xf5, 0x6d, 0xc1, 0xff}}},\n    {{{ -6786,  -1028,   7698}, 0, {-14038,  11082}, {0x05, 0x6d, 0xc0, 0xff}}},\n    {{{ -6371,   -886,   7859}, 0, {-15400,  10610}, {0x01, 0x3f, 0x92, 0xff}}},\n    {{{ -6819,   -805,   7823}, 0, {-14246,  10340}, {0x1f, 0x00, 0x85, 0xff}}},\n    {{{ -6371,   -751,   7895}, 0, {-15484,  10158}, {0xff, 0x00, 0x82, 0xff}}},\n    {{{ -6810,   -934,   7789}, 0, {-14190,  10768}, {0x1d, 0x3f, 0x96, 0xff}}},\n    {{{ -6371,   -615,   7859}, 0, {-15400,   9708}, {0x0c, 0xc1, 0x93, 0xff}}},\n};\n\n// 0x070178D0 - 0x070179B0\nstatic const Vtx ccm_seg7_vertex_070178D0[] = {\n    {{{ -6819,   -805,   7823}, 0, {-14246,  10340}, {0x1f, 0x00, 0x85, 0xff}}},\n    {{{ -6810,   -677,   7789}, 0, {-14190,   9912}, {0x28, 0xc1, 0x9a, 0xff}}},\n    {{{ -6371,   -615,   7859}, 0, {-15400,   9708}, {0x0c, 0xc1, 0x93, 0xff}}},\n    {{{ -6371,   -516,   7760}, 0, {-15172,   9378}, {0x13, 0x94, 0xc1, 0xff}}},\n    {{{ -6786,   -582,   7698}, 0, {-14038,   9598}, {0x23, 0x94, 0xc9, 0xff}}},\n    {{{ -6371,   -480,   7624}, 0, {-14858,   9256}, {0x17, 0x84, 0x00, 0xff}}},\n    {{{ -6752,   -548,   7574}, 0, {-13830,   9484}, {0x16, 0x84, 0x06, 0xff}}},\n    {{{ -6371,   -516,   7489}, 0, {-14544,   9378}, {0x16, 0x94, 0x3e, 0xff}}},\n    {{{ -6719,   -582,   7450}, 0, {-13622,   9598}, {0x05, 0x94, 0x42, 0xff}}},\n    {{{ -6371,   -615,   7390}, 0, {-14314,   9708}, {0x10, 0xc2, 0x6d, 0xff}}},\n    {{{ -6695,   -677,   7359}, 0, {-13468,   9912}, {0xf4, 0xc2, 0x6d, 0xff}}},\n    {{{ -6371,   -751,   7353}, 0, {-14230,  10158}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{ -6686,   -805,   7325}, 0, {-13412,  10340}, {0xdf, 0x00, 0x7a, 0xff}}},\n    {{{ -6695,   -934,   7359}, 0, {-13468,  10768}, {0xe4, 0x3f, 0x6a, 0xff}}},\n};\n\n// 0x070179B0 - 0x07017AB0\nstatic const Vtx ccm_seg7_vertex_070179B0[] = {\n    {{{ -6719,  -1028,   7450}, 0, {-13622,  11082}, {0xe3, 0x6d, 0x39, 0xff}}},\n    {{{ -7047,  -1071,   7321}, 0, {-12540,  11224}, {0xd5, 0x6d, 0x30, 0xff}}},\n    {{{ -6752,  -1063,   7574}, 0, {-13830,  11196}, {0xf2, 0x7e, 0xfd, 0xff}}},\n    {{{ -6695,   -934,   7359}, 0, {-13468,  10768}, {0xe4, 0x3f, 0x6a, 0xff}}},\n    {{{ -7002,   -982,   7243}, 0, {-12468,  10926}, {0xc9, 0x3f, 0x5f, 0xff}}},\n    {{{ -6686,   -805,   7325}, 0, {-13412,  10340}, {0xdf, 0x00, 0x7a, 0xff}}},\n    {{{ -7108,  -1104,   7427}, 0, {-12638,  11332}, {0xf4, 0x7e, 0xf9, 0xff}}},\n    {{{ -6786,  -1028,   7698}, 0, {-14038,  11082}, {0x05, 0x6d, 0xc0, 0xff}}},\n    {{{ -7169,  -1071,   7533}, 0, {-12738,  11224}, {0x15, 0x6d, 0xc4, 0xff}}},\n    {{{ -6810,   -934,   7789}, 0, {-14190,  10768}, {0x1d, 0x3f, 0x96, 0xff}}},\n    {{{ -7214,   -982,   7610}, 0, {-12810,  10926}, {0x37, 0x3f, 0xa1, 0xff}}},\n    {{{ -7230,   -859,   7639}, 0, {-12838,  10518}, {0x3d, 0x00, 0x92, 0xff}}},\n    {{{ -6819,   -805,   7823}, 0, {-14246,  10340}, {0x1f, 0x00, 0x85, 0xff}}},\n    {{{ -6810,   -677,   7789}, 0, {-14190,   9912}, {0x28, 0xc1, 0x9a, 0xff}}},\n    {{{ -7214,   -737,   7610}, 0, {-12810,  10112}, {0x41, 0xc2, 0xa7, 0xff}}},\n    {{{ -6786,   -582,   7698}, 0, {-14038,   9598}, {0x23, 0x94, 0xc9, 0xff}}},\n};\n\n// 0x07017AB0 - 0x07017BB0\nstatic const Vtx ccm_seg7_vertex_07017AB0[] = {\n    {{{ -6786,   -582,   7698}, 0, {-14038,   9598}, {0x23, 0x94, 0xc9, 0xff}}},\n    {{{ -7169,   -647,   7533}, 0, {-12738,   9814}, {0x2f, 0x94, 0xd4, 0xff}}},\n    {{{ -6752,   -548,   7574}, 0, {-13830,   9484}, {0x16, 0x84, 0x06, 0xff}}},\n    {{{ -7214,   -737,   7610}, 0, {-12810,  10112}, {0x41, 0xc2, 0xa7, 0xff}}},\n    {{{ -7108,   -615,   7427}, 0, {-12638,   9706}, {0x13, 0x84, 0x0b, 0xff}}},\n    {{{ -6719,   -582,   7450}, 0, {-13622,   9598}, {0x05, 0x94, 0x42, 0xff}}},\n    {{{ -7047,   -647,   7321}, 0, {-12540,   9814}, {0xf4, 0x94, 0x41, 0xff}}},\n    {{{ -6695,   -677,   7359}, 0, {-13468,   9912}, {0xf4, 0xc2, 0x6d, 0xff}}},\n    {{{ -7002,   -737,   7243}, 0, {-12468,  10112}, {0xd7, 0xc2, 0x66, 0xff}}},\n    {{{ -6686,   -805,   7325}, 0, {-13412,  10340}, {0xdf, 0x00, 0x7a, 0xff}}},\n    {{{ -6986,   -859,   7215}, 0, {-12440,  10518}, {0xc0, 0x00, 0x6d, 0xff}}},\n    {{{ -7002,   -982,   7243}, 0, {-12468,  10926}, {0xc9, 0x3f, 0x5f, 0xff}}},\n    {{{ -7271,  -1029,   7050}, 0, {-11378,  11082}, {0xb2, 0x3f, 0x4d, 0xff}}},\n    {{{ -7331,  -1114,   7110}, 0, {-11372,  11366}, {0xca, 0x6d, 0x23, 0xff}}},\n    {{{ -7047,  -1071,   7321}, 0, {-12540,  11224}, {0xd5, 0x6d, 0x30, 0xff}}},\n    {{{ -7108,  -1104,   7427}, 0, {-12638,  11332}, {0xf4, 0x7e, 0xf9, 0xff}}},\n};\n\n// 0x07017BB0 - 0x07017CB0\nstatic const Vtx ccm_seg7_vertex_07017BB0[] = {\n    {{{ -7331,  -1114,   7110}, 0, {-11372,  11366}, {0xca, 0x6d, 0x23, 0xff}}},\n    {{{ -7413,  -1145,   7192}, 0, {-11366,  11468}, {0xf6, 0x7e, 0xf6, 0xff}}},\n    {{{ -7108,  -1104,   7427}, 0, {-12638,  11332}, {0xf4, 0x7e, 0xf9, 0xff}}},\n    {{{ -7169,  -1071,   7533}, 0, {-12738,  11224}, {0x15, 0x6d, 0xc4, 0xff}}},\n    {{{ -7495,  -1114,   7275}, 0, {-11360,  11366}, {0x24, 0x6d, 0xcc, 0xff}}},\n    {{{ -7214,   -982,   7610}, 0, {-12810,  10926}, {0x37, 0x3f, 0xa1, 0xff}}},\n    {{{ -7556,  -1029,   7335}, 0, {-11356,  11082}, {0x4e, 0x3f, 0xb3, 0xff}}},\n    {{{ -7578,   -912,   7357}, 0, {-11354,  10696}, {0x58, 0x00, 0xa5, 0xff}}},\n    {{{ -7230,   -859,   7639}, 0, {-12838,  10518}, {0x3d, 0x00, 0x92, 0xff}}},\n    {{{ -7214,   -737,   7610}, 0, {-12810,  10112}, {0x41, 0xc2, 0xa7, 0xff}}},\n    {{{ -7556,   -796,   7335}, 0, {-11356,  10310}, {0x55, 0xc1, 0xbb, 0xff}}},\n    {{{ -7169,   -647,   7533}, 0, {-12738,   9814}, {0x2f, 0x94, 0xd4, 0xff}}},\n    {{{ -7495,   -711,   7275}, 0, {-11360,  10026}, {0x39, 0x94, 0xe2, 0xff}}},\n    {{{ -7108,   -615,   7427}, 0, {-12638,   9706}, {0x13, 0x84, 0x0b, 0xff}}},\n    {{{ -7413,   -680,   7192}, 0, {-11366,   9922}, {0x10, 0x84, 0x0f, 0xff}}},\n    {{{ -7047,   -647,   7321}, 0, {-12540,   9814}, {0xf4, 0x94, 0x41, 0xff}}},\n};\n\n// 0x07017CB0 - 0x07017DB0\nstatic const Vtx ccm_seg7_vertex_07017CB0[] = {\n    {{{ -7413,   -680,   7192}, 0, {-11366,   9922}, {0x10, 0x84, 0x0f, 0xff}}},\n    {{{ -7331,   -711,   7110}, 0, {-11372,  10026}, {0xe3, 0x94, 0x3b, 0xff}}},\n    {{{ -7047,   -647,   7321}, 0, {-12540,   9814}, {0xf4, 0x94, 0x41, 0xff}}},\n    {{{ -7002,   -737,   7243}, 0, {-12468,  10112}, {0xd7, 0xc2, 0x66, 0xff}}},\n    {{{ -7271,   -796,   7050}, 0, {-11378,  10310}, {0xbe, 0xc2, 0x57, 0xff}}},\n    {{{ -6986,   -859,   7215}, 0, {-12440,  10518}, {0xc0, 0x00, 0x6d, 0xff}}},\n    {{{ -7249,   -912,   7028}, 0, {-11378,  10696}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{ -7271,  -1029,   7050}, 0, {-11378,  11082}, {0xb2, 0x3f, 0x4d, 0xff}}},\n    {{{ -7331,  -1114,   7110}, 0, {-11372,  11366}, {0xca, 0x6d, 0x23, 0xff}}},\n    {{{ -7552,  -1156,   6832}, 0, {-10200,  11506}, {0xc3, 0x6d, 0x14, 0xff}}},\n    {{{ -7413,  -1145,   7192}, 0, {-11366,  11468}, {0xf6, 0x7e, 0xf6, 0xff}}},\n    {{{ -7482,  -1075,   6791}, 0, {-10274,  11238}, {0xa1, 0x3f, 0x36, 0xff}}},\n    {{{ -7648,  -1186,   6887}, 0, {-10100,  11606}, {0xf9, 0x7e, 0xf4, 0xff}}},\n    {{{ -7495,  -1114,   7275}, 0, {-11360,  11366}, {0x24, 0x6d, 0xcc, 0xff}}},\n    {{{ -7743,  -1156,   6942}, 0, {-10000,  11506}, {0x31, 0x6d, 0xd7, 0xff}}},\n    {{{ -7556,  -1029,   7335}, 0, {-11356,  11082}, {0x4e, 0x3f, 0xb3, 0xff}}},\n};\n\n// 0x07017DB0 - 0x07017EB0\nstatic const Vtx ccm_seg7_vertex_07017DB0[] = {\n    {{{ -7743,  -1156,   6942}, 0, {-10000,  11506}, {0x31, 0x6d, 0xd7, 0xff}}},\n    {{{ -7813,  -1075,   6983}, 0, { -9926,  11238}, {0x5f, 0x3f, 0xca, 0xff}}},\n    {{{ -7556,  -1029,   7335}, 0, {-11356,  11082}, {0x4e, 0x3f, 0xb3, 0xff}}},\n    {{{ -7839,   -965,   6997}, 0, { -9898,  10870}, {0x6c, 0x00, 0xbf, 0xff}}},\n    {{{ -7578,   -912,   7357}, 0, {-11354,  10696}, {0x58, 0x00, 0xa5, 0xff}}},\n    {{{ -7556,   -796,   7335}, 0, {-11356,  10310}, {0x55, 0xc1, 0xbb, 0xff}}},\n    {{{ -7813,   -855,   6983}, 0, { -9926,  10504}, {0x64, 0xc1, 0xd4, 0xff}}},\n    {{{ -7495,   -711,   7275}, 0, {-11360,  10026}, {0x39, 0x94, 0xe2, 0xff}}},\n    {{{ -7743,   -774,   6942}, 0, {-10000,  10234}, {0x40, 0x94, 0xf1, 0xff}}},\n    {{{ -7413,   -680,   7192}, 0, {-11366,   9922}, {0x10, 0x84, 0x0f, 0xff}}},\n    {{{ -7648,   -744,   6887}, 0, {-10100,  10136}, {0x0b, 0x83, 0x13, 0xff}}},\n    {{{ -7331,   -711,   7110}, 0, {-11372,  10026}, {0xe3, 0x94, 0x3b, 0xff}}},\n    {{{ -7552,   -774,   6832}, 0, {-10200,  10234}, {0xd4, 0x94, 0x31, 0xff}}},\n    {{{ -7271,   -796,   7050}, 0, {-11378,  10310}, {0xbe, 0xc2, 0x57, 0xff}}},\n    {{{ -7482,   -855,   6791}, 0, {-10274,  10504}, {0xa9, 0xc2, 0x43, 0xff}}},\n    {{{ -7249,   -912,   7028}, 0, {-11378,  10696}, {0xa6, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07017EB0 - 0x07017FB0\nstatic const Vtx ccm_seg7_vertex_07017EB0[] = {\n    {{{ -7482,   -855,   6791}, 0, {-10274,  10504}, {0xa9, 0xc2, 0x43, 0xff}}},\n    {{{ -7456,   -965,   6777}, 0, {-10300,  10870}, {0x92, 0x00, 0x3e, 0xff}}},\n    {{{ -7249,   -912,   7028}, 0, {-11378,  10696}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{ -7482,  -1075,   6791}, 0, {-10274,  11238}, {0xa1, 0x3f, 0x36, 0xff}}},\n    {{{ -7620,  -1122,   6484}, 0, { -9234,  11392}, {0x96, 0x3f, 0x1b, 0xff}}},\n    {{{ -7552,  -1156,   6832}, 0, {-10200,  11506}, {0xc3, 0x6d, 0x14, 0xff}}},\n    {{{ -7694,  -1199,   6504}, 0, { -9104,  11648}, {0xc0, 0x6d, 0x03, 0xff}}},\n    {{{ -7648,  -1186,   6887}, 0, {-10100,  11606}, {0xf9, 0x7e, 0xf4, 0xff}}},\n    {{{ -7795,  -1227,   6531}, 0, { -8924,  11742}, {0xfd, 0x7e, 0xf2, 0xff}}},\n    {{{ -7743,  -1156,   6942}, 0, {-10000,  11506}, {0x31, 0x6d, 0xd7, 0xff}}},\n    {{{ -7896,  -1199,   6559}, 0, { -8746,  11648}, {0x3a, 0x6d, 0xe5, 0xff}}},\n    {{{ -7813,  -1075,   6983}, 0, { -9926,  11238}, {0x5f, 0x3f, 0xca, 0xff}}},\n    {{{ -7970,  -1122,   6578}, 0, { -8614,  11392}, {0x6a, 0x3f, 0xe4, 0xff}}},\n    {{{ -7997,  -1017,   6586}, 0, { -8566,  11044}, {0x7a, 0x00, 0xdd, 0xff}}},\n    {{{ -7839,   -965,   6997}, 0, { -9898,  10870}, {0x6c, 0x00, 0xbf, 0xff}}},\n    {{{ -7813,   -855,   6983}, 0, { -9926,  10504}, {0x64, 0xc1, 0xd4, 0xff}}},\n};\n\n// 0x07017FB0 - 0x07018090\nstatic const Vtx ccm_seg7_vertex_07017FB0[] = {\n    {{{ -7997,  -1017,   6586}, 0, { -8566,  11044}, {0x7a, 0x00, 0xdd, 0xff}}},\n    {{{ -7970,   -912,   6578}, 0, { -8614,  10694}, {0x6d, 0xc2, 0xef, 0xff}}},\n    {{{ -7813,   -855,   6983}, 0, { -9926,  10504}, {0x64, 0xc1, 0xd4, 0xff}}},\n    {{{ -7743,   -774,   6942}, 0, {-10000,  10234}, {0x40, 0x94, 0xf1, 0xff}}},\n    {{{ -7896,   -835,   6559}, 0, { -8746,  10440}, {0x41, 0x94, 0x01, 0xff}}},\n    {{{ -7648,   -744,   6887}, 0, {-10100,  10136}, {0x0b, 0x83, 0x13, 0xff}}},\n    {{{ -7795,   -807,   6531}, 0, { -8924,  10346}, {0x05, 0x83, 0x15, 0xff}}},\n    {{{ -7552,   -774,   6832}, 0, {-10200,  10234}, {0xd4, 0x94, 0x31, 0xff}}},\n    {{{ -7694,   -835,   6504}, 0, { -9104,  10440}, {0xc9, 0x94, 0x24, 0xff}}},\n    {{{ -7482,   -855,   6791}, 0, {-10274,  10504}, {0xa9, 0xc2, 0x43, 0xff}}},\n    {{{ -7620,   -912,   6484}, 0, { -9234,  10694}, {0x9b, 0xc2, 0x2a, 0xff}}},\n    {{{ -7456,   -965,   6777}, 0, {-10300,  10870}, {0x92, 0x00, 0x3e, 0xff}}},\n    {{{ -7592,  -1017,   6477}, 0, { -9282,  11044}, {0x85, 0x00, 0x1f, 0xff}}},\n    {{{ -7620,  -1122,   6484}, 0, { -9234,  11392}, {0x96, 0x3f, 0x1b, 0xff}}},\n};\n\n// 0x07018090 - 0x07018190\nstatic const Vtx ccm_seg7_vertex_07018090[] = {\n    {{{ -7694,  -1199,   6504}, 0, { -9104,  11648}, {0xc0, 0x6d, 0x03, 0xff}}},\n    {{{ -7746,  -1241,   6150}, 0, { -8158,  11788}, {0xc1, 0x6d, 0xf5, 0xff}}},\n    {{{ -7795,  -1227,   6531}, 0, { -8924,  11742}, {0xfd, 0x7e, 0xf2, 0xff}}},\n    {{{ -7673,  -1168,   6150}, 0, { -8332,  11546}, {0x90, 0x3b, 0xfe, 0xff}}},\n    {{{ -7620,  -1122,   6484}, 0, { -9234,  11392}, {0x96, 0x3f, 0x1b, 0xff}}},\n    {{{ -7592,  -1017,   6477}, 0, { -9282,  11044}, {0x85, 0x00, 0x1f, 0xff}}},\n    {{{ -7845,  -1268,   6150}, 0, { -7920,  11878}, {0x00, 0x7e, 0xf3, 0xff}}},\n    {{{ -7896,  -1199,   6559}, 0, { -8746,  11648}, {0x3a, 0x6d, 0xe5, 0xff}}},\n    {{{ -7945,  -1241,   6150}, 0, { -7682,  11788}, {0x3f, 0x6d, 0xf4, 0xff}}},\n    {{{ -7970,  -1122,   6578}, 0, { -8614,  11392}, {0x6a, 0x3f, 0xe4, 0xff}}},\n    {{{ -8044,  -1068,   6150}, 0, { -7444,  11214}, {0x7e, 0x00, 0xfc, 0xff}}},\n    {{{ -7997,  -1017,   6586}, 0, { -8566,  11044}, {0x7a, 0x00, 0xdd, 0xff}}},\n    {{{ -8018,  -1168,   6150}, 0, { -7508,  11546}, {0x6e, 0x3e, 0xfe, 0xff}}},\n    {{{ -7970,   -912,   6578}, 0, { -8614,  10694}, {0x6d, 0xc2, 0xef, 0xff}}},\n    {{{ -8018,   -969,   6150}, 0, { -7508,  10884}, {0x6e, 0xc2, 0x07, 0xff}}},\n    {{{ -7896,   -835,   6559}, 0, { -8746,  10440}, {0x41, 0x94, 0x01, 0xff}}},\n};\n\n// 0x07018190 - 0x07018290\nstatic const Vtx ccm_seg7_vertex_07018190[] = {\n    {{{ -8018,   -969,   6150}, 0, { -7508,  10884}, {0x6e, 0xc2, 0x07, 0xff}}},\n    {{{ -7945,   -896,   6150}, 0, { -7682,  10640}, {0x3f, 0x94, 0x0d, 0xff}}},\n    {{{ -7896,   -835,   6559}, 0, { -8746,  10440}, {0x41, 0x94, 0x01, 0xff}}},\n    {{{ -7795,   -807,   6531}, 0, { -8924,  10346}, {0x05, 0x83, 0x15, 0xff}}},\n    {{{ -7746,  -1241,   6150}, 0, { -8158,  11788}, {0xc1, 0x6d, 0xf5, 0xff}}},\n    {{{ -7704,  -1282,   5745}, 0, { -7320,  11926}, {0xc8, 0x6d, 0xe0, 0xff}}},\n    {{{ -7845,  -1268,   6150}, 0, { -7920,  11878}, {0x00, 0x7e, 0xf3, 0xff}}},\n    {{{ -7845,   -869,   6150}, 0, { -7920,  10552}, {0x00, 0x83, 0x11, 0xff}}},\n    {{{ -7694,   -835,   6504}, 0, { -9104,  10440}, {0xc9, 0x94, 0x24, 0xff}}},\n    {{{ -7746,   -896,   6150}, 0, { -8158,  10640}, {0xc1, 0x94, 0x11, 0xff}}},\n    {{{ -7620,   -912,   6484}, 0, { -9234,  10694}, {0x9b, 0xc2, 0x2a, 0xff}}},\n    {{{ -7673,   -969,   6150}, 0, { -8332,  10884}, {0x90, 0xc5, 0x09, 0xff}}},\n    {{{ -7592,  -1017,   6477}, 0, { -9282,  11044}, {0x85, 0x00, 0x1f, 0xff}}},\n    {{{ -7646,  -1068,   6150}, 0, { -8396,  11214}, {0x82, 0x00, 0x04, 0xff}}},\n    {{{ -7673,  -1168,   6150}, 0, { -8332,  11546}, {0x90, 0x3b, 0xfe, 0xff}}},\n    {{{ -7634,  -1209,   5764}, 0, { -7532,  11682}, {0x9a, 0x3f, 0xd7, 0xff}}},\n};\n\n// 0x07018290 - 0x07018390\nstatic const Vtx ccm_seg7_vertex_07018290[] = {\n    {{{ -7845,  -1268,   6150}, 0, { -7920,  11878}, {0x00, 0x7e, 0xf3, 0xff}}},\n    {{{ -7801,  -1309,   5720}, 0, { -7032,  12014}, {0x04, 0x7e, 0xf2, 0xff}}},\n    {{{ -7945,  -1241,   6150}, 0, { -7682,  11788}, {0x3f, 0x6d, 0xf4, 0xff}}},\n    {{{ -7704,  -1282,   5745}, 0, { -7320,  11926}, {0xc8, 0x6d, 0xe0, 0xff}}},\n    {{{ -7897,  -1282,   5694}, 0, { -6742,  11926}, {0x43, 0x6b, 0x0b, 0xff}}},\n    {{{ -8018,  -1168,   6150}, 0, { -7508,  11546}, {0x6e, 0x3e, 0xfe, 0xff}}},\n    {{{ -7967,  -1209,   5675}, 0, { -6530,  11682}, {0x6a, 0x3f, 0x1b, 0xff}}},\n    {{{ -7993,  -1109,   5668}, 0, { -6452,  11352}, {0x7a, 0x04, 0x21, 0xff}}},\n    {{{ -8044,  -1068,   6150}, 0, { -7444,  11214}, {0x7e, 0x00, 0xfc, 0xff}}},\n    {{{ -8018,   -969,   6150}, 0, { -7508,  10884}, {0x6e, 0xc2, 0x07, 0xff}}},\n    {{{ -7967,  -1010,   5675}, 0, { -6530,  11020}, {0x66, 0xc1, 0x26, 0xff}}},\n    {{{ -7945,   -896,   6150}, 0, { -7682,  10640}, {0x3f, 0x94, 0x0d, 0xff}}},\n    {{{ -7897,   -937,   5694}, 0, { -6742,  10778}, {0x39, 0x93, 0x1e, 0xff}}},\n    {{{ -7845,   -869,   6150}, 0, { -7920,  10552}, {0x00, 0x83, 0x11, 0xff}}},\n    {{{ -7801,   -910,   5720}, 0, { -7032,  10688}, {0xfd, 0x82, 0x0e, 0xff}}},\n    {{{ -7746,   -896,   6150}, 0, { -8158,  10640}, {0xc1, 0x94, 0x11, 0xff}}},\n};\n\n// 0x07018390 - 0x07018480\nstatic const Vtx ccm_seg7_vertex_07018390[] = {\n    {{{ -7801,   -910,   5720}, 0, { -7032,  10688}, {0xfd, 0x82, 0x0e, 0xff}}},\n    {{{ -7704,   -937,   5745}, 0, { -7320,  10778}, {0xbd, 0x95, 0xf6, 0xff}}},\n    {{{ -7746,   -896,   6150}, 0, { -8158,  10640}, {0xc1, 0x94, 0x11, 0xff}}},\n    {{{ -7673,   -969,   6150}, 0, { -8332,  10884}, {0x90, 0xc5, 0x09, 0xff}}},\n    {{{ -7634,  -1010,   5764}, 0, { -7532,  11020}, {0x95, 0xc7, 0xdf, 0xff}}},\n    {{{ -7608,  -1109,   5771}, 0, { -7610,  11352}, {0x85, 0x00, 0xe2, 0xff}}},\n    {{{ -7646,  -1068,   6150}, 0, { -8396,  11214}, {0x82, 0x00, 0x04, 0xff}}},\n    {{{ -7673,  -1168,   6150}, 0, { -8332,  11546}, {0x90, 0x3b, 0xfe, 0xff}}},\n    {{{ -7634,  -1209,   5764}, 0, { -7532,  11682}, {0x9a, 0x3f, 0xd7, 0xff}}},\n    {{{ -7458,  -1250,   5455}, 0, { -7236,  11818}, {0xac, 0x3e, 0xba, 0xff}}},\n    {{{ -7704,  -1282,   5745}, 0, { -7320,  11926}, {0xc8, 0x6d, 0xe0, 0xff}}},\n    {{{ -7520,  -1323,   5417}, 0, { -7000,  12062}, {0xd3, 0x6c, 0xd1, 0xff}}},\n    {{{ -7801,  -1309,   5720}, 0, { -7032,  12014}, {0x04, 0x7e, 0xf2, 0xff}}},\n    {{{ -7605,  -1350,   5364}, 0, { -6676,  12150}, {0x07, 0x7e, 0xf4, 0xff}}},\n    {{{ -7897,  -1282,   5694}, 0, { -6742,  11926}, {0x43, 0x6b, 0x0b, 0xff}}},\n};\n\n// 0x07018480 - 0x07018580\nstatic const Vtx ccm_seg7_vertex_07018480[] = {\n    {{{ -7897,  -1282,   5694}, 0, { -6742,  11926}, {0x43, 0x6b, 0x0b, 0xff}}},\n    {{{ -7689,  -1323,   5312}, 0, { -6352,  12062}, {0x35, 0x70, 0x18, 0xff}}},\n    {{{ -7751,  -1250,   5274}, 0, { -6116,  11818}, {0x5c, 0x43, 0x36, 0xff}}},\n    {{{ -7967,  -1209,   5675}, 0, { -6530,  11682}, {0x6a, 0x3f, 0x1b, 0xff}}},\n    {{{ -7605,  -1350,   5364}, 0, { -6676,  12150}, {0x07, 0x7e, 0xf4, 0xff}}},\n    {{{ -7993,  -1109,   5668}, 0, { -6452,  11352}, {0x7a, 0x04, 0x21, 0xff}}},\n    {{{ -7774,  -1150,   5260}, 0, { -6030,  11488}, {0x66, 0xfc, 0x4a, 0xff}}},\n    {{{ -7967,  -1010,   5675}, 0, { -6530,  11020}, {0x66, 0xc1, 0x26, 0xff}}},\n    {{{ -7751,  -1051,   5274}, 0, { -6116,  11156}, {0x55, 0xbc, 0x40, 0xff}}},\n    {{{ -7897,   -937,   5694}, 0, { -6742,  10778}, {0x39, 0x93, 0x1e, 0xff}}},\n    {{{ -7689,   -978,   5312}, 0, { -6352,  10914}, {0x2d, 0x94, 0x2e, 0xff}}},\n    {{{ -7801,   -910,   5720}, 0, { -7032,  10688}, {0xfd, 0x82, 0x0e, 0xff}}},\n    {{{ -7605,   -951,   5364}, 0, { -6676,  10824}, {0xf9, 0x82, 0x0c, 0xff}}},\n    {{{ -7704,   -937,   5745}, 0, { -7320,  10778}, {0xbd, 0x95, 0xf6, 0xff}}},\n    {{{ -7520,   -978,   5417}, 0, { -7000,  10914}, {0xcb, 0x90, 0xe8, 0xff}}},\n    {{{ -7458,  -1051,   5455}, 0, { -7236,  11156}, {0xa8, 0xb7, 0xca, 0xff}}},\n};\n\n// 0x07018580 - 0x07018680\nstatic const Vtx ccm_seg7_vertex_07018580[] = {\n    {{{ -7704,   -937,   5745}, 0, { -7320,  10778}, {0xbd, 0x95, 0xf6, 0xff}}},\n    {{{ -7458,  -1051,   5455}, 0, { -7236,  11156}, {0xa8, 0xb7, 0xca, 0xff}}},\n    {{{ -7634,  -1010,   5764}, 0, { -7532,  11020}, {0x95, 0xc7, 0xdf, 0xff}}},\n    {{{ -7435,  -1150,   5469}, 0, { -7324,  11488}, {0x98, 0xfb, 0xb8, 0xff}}},\n    {{{ -7608,  -1109,   5771}, 0, { -7610,  11352}, {0x85, 0x00, 0xe2, 0xff}}},\n    {{{ -7634,  -1209,   5764}, 0, { -7532,  11682}, {0x9a, 0x3f, 0xd7, 0xff}}},\n    {{{ -7458,  -1250,   5455}, 0, { -7236,  11818}, {0xac, 0x3e, 0xba, 0xff}}},\n    {{{ -7520,  -1323,   5417}, 0, { -7000,  12062}, {0xd3, 0x6c, 0xd1, 0xff}}},\n    {{{ -7265,  -1364,   5133}, 0, { -6952,  12198}, {0xdb, 0x6c, 0xcb, 0xff}}},\n    {{{ -7605,  -1350,   5364}, 0, { -6676,  12150}, {0x07, 0x7e, 0xf4, 0xff}}},\n    {{{ -7208,  -1291,   5178}, 0, { -7194,  11956}, {0xb9, 0x44, 0xb1, 0xff}}},\n    {{{ -7344,  -1391,   5072}, 0, { -6622,  12286}, {0x08, 0x7e, 0xf6, 0xff}}},\n    {{{ -7689,  -1323,   5312}, 0, { -6352,  12062}, {0x35, 0x70, 0x18, 0xff}}},\n    {{{ -7422,  -1364,   5011}, 0, { -6292,  12198}, {0x38, 0x6b, 0x26, 0xff}}},\n    {{{ -7751,  -1250,   5274}, 0, { -6116,  11818}, {0x5c, 0x43, 0x36, 0xff}}},\n    {{{ -7480,  -1291,   4966}, 0, { -6052,  11956}, {0x56, 0x39, 0x48, 0xff}}},\n};\n\n// 0x07018680 - 0x07018780\nstatic const Vtx ccm_seg7_vertex_07018680[] = {\n    {{{ -7751,  -1250,   5274}, 0, { -6116,  11818}, {0x5c, 0x43, 0x36, 0xff}}},\n    {{{ -7480,  -1291,   4966}, 0, { -6052,  11956}, {0x56, 0x39, 0x48, 0xff}}},\n    {{{ -7774,  -1150,   5260}, 0, { -6030,  11488}, {0x66, 0xfc, 0x4a, 0xff}}},\n    {{{ -7501,  -1191,   4949}, 0, { -5964,  11624}, {0x5a, 0x00, 0x58, 0xff}}},\n    {{{ -7480,  -1092,   4966}, 0, { -6052,  11292}, {0x4c, 0xc2, 0x4f, 0xff}}},\n    {{{ -7751,  -1051,   5274}, 0, { -6116,  11156}, {0x55, 0xbc, 0x40, 0xff}}},\n    {{{ -7689,   -978,   5312}, 0, { -6352,  10914}, {0x2d, 0x94, 0x2e, 0xff}}},\n    {{{ -7422,  -1019,   5011}, 0, { -6292,  11050}, {0x26, 0x94, 0x35, 0xff}}},\n    {{{ -7605,   -951,   5364}, 0, { -6676,  10824}, {0xf9, 0x82, 0x0c, 0xff}}},\n    {{{ -7187,  -1191,   5195}, 0, { -7282,  11624}, {0xa6, 0x04, 0xa7, 0xff}}},\n    {{{ -6947,  -1332,   4930}, 0, { -7240,  12092}, {0xbc, 0x42, 0xad, 0xff}}},\n    {{{ -7208,  -1291,   5178}, 0, { -7194,  11956}, {0xb9, 0x44, 0xb1, 0xff}}},\n    {{{ -7344,   -992,   5072}, 0, { -6622,  10960}, {0xf8, 0x82, 0x0a, 0xff}}},\n    {{{ -7520,   -978,   5417}, 0, { -7000,  10914}, {0xcb, 0x90, 0xe8, 0xff}}},\n    {{{ -7265,  -1019,   5133}, 0, { -6952,  11050}, {0xc8, 0x95, 0xda, 0xff}}},\n    {{{ -7458,  -1051,   5455}, 0, { -7236,  11156}, {0xa8, 0xb7, 0xca, 0xff}}},\n};\n\n// 0x07018780 - 0x07018880\nstatic const Vtx ccm_seg7_vertex_07018780[] = {\n    {{{ -7265,  -1019,   5133}, 0, { -6952,  11050}, {0xc8, 0x95, 0xda, 0xff}}},\n    {{{ -7208,  -1092,   5178}, 0, { -7194,  11292}, {0xaa, 0xc7, 0xb7, 0xff}}},\n    {{{ -7458,  -1051,   5455}, 0, { -7236,  11156}, {0xa8, 0xb7, 0xca, 0xff}}},\n    {{{ -7435,  -1150,   5469}, 0, { -7324,  11488}, {0x98, 0xfb, 0xb8, 0xff}}},\n    {{{ -7187,  -1191,   5195}, 0, { -7282,  11624}, {0xa6, 0x04, 0xa7, 0xff}}},\n    {{{ -7458,  -1250,   5455}, 0, { -7236,  11818}, {0xac, 0x3e, 0xba, 0xff}}},\n    {{{ -7208,  -1291,   5178}, 0, { -7194,  11956}, {0xb9, 0x44, 0xb1, 0xff}}},\n    {{{ -6947,  -1332,   4930}, 0, { -7240,  12092}, {0xbc, 0x42, 0xad, 0xff}}},\n    {{{ -6999,  -1405,   4879}, 0, { -6998,  12334}, {0xe5, 0x72, 0xd1, 0xff}}},\n    {{{ -7265,  -1364,   5133}, 0, { -6952,  12198}, {0xdb, 0x6c, 0xcb, 0xff}}},\n    {{{ -7344,  -1391,   5072}, 0, { -6622,  12286}, {0x08, 0x7e, 0xf6, 0xff}}},\n    {{{ -7071,  -1432,   4809}, 0, { -6666,  12422}, {0x11, 0x7d, 0xff, 0xff}}},\n    {{{ -7422,  -1364,   5011}, 0, { -6292,  12198}, {0x38, 0x6b, 0x26, 0xff}}},\n    {{{ -7142,  -1405,   4740}, 0, { -6336,  12334}, {0x38, 0x69, 0x29, 0xff}}},\n    {{{ -7194,  -1332,   4689}, 0, { -6092,  12092}, {0x52, 0x3b, 0x4c, 0xff}}},\n    {{{ -7480,  -1291,   4966}, 0, { -6052,  11956}, {0x56, 0x39, 0x48, 0xff}}},\n};\n\n// 0x07018880 - 0x07018980\nstatic const Vtx ccm_seg7_vertex_07018880[] = {\n    {{{ -7480,  -1291,   4966}, 0, { -6052,  11956}, {0x56, 0x39, 0x48, 0xff}}},\n    {{{ -7194,  -1332,   4689}, 0, { -6092,  12092}, {0x52, 0x3b, 0x4c, 0xff}}},\n    {{{ -7501,  -1191,   4949}, 0, { -5964,  11624}, {0x5a, 0x00, 0x58, 0xff}}},\n    {{{ -7194,  -1133,   4689}, 0, { -6092,  11428}, {0x44, 0xbd, 0x52, 0xff}}},\n    {{{ -7480,  -1092,   4966}, 0, { -6052,  11292}, {0x4c, 0xc2, 0x4f, 0xff}}},\n    {{{ -7213,  -1232,   4670}, 0, { -6004,  11760}, {0x56, 0xf9, 0x5c, 0xff}}},\n    {{{ -7422,  -1019,   5011}, 0, { -6292,  11050}, {0x26, 0x94, 0x35, 0xff}}},\n    {{{ -7142,  -1060,   4740}, 0, { -6336,  11186}, {0x1c, 0x8e, 0x30, 0xff}}},\n    {{{ -7344,   -992,   5072}, 0, { -6622,  10960}, {0xf8, 0x82, 0x0a, 0xff}}},\n    {{{ -6999,  -1405,   4879}, 0, { -6998,  12334}, {0xe5, 0x72, 0xd1, 0xff}}},\n    {{{ -6814,  -1472,   4568}, 0, { -6722,  12558}, {0x0a, 0x7e, 0xf5, 0xff}}},\n    {{{ -7071,  -1432,   4809}, 0, { -6666,  12422}, {0x11, 0x7d, 0xff, 0xff}}},\n    {{{ -7071,  -1033,   4809}, 0, { -6666,  11098}, {0xef, 0x83, 0x02, 0xff}}},\n    {{{ -7265,  -1019,   5133}, 0, { -6952,  11050}, {0xc8, 0x95, 0xda, 0xff}}},\n    {{{ -6999,  -1060,   4879}, 0, { -6998,  11186}, {0xc8, 0x96, 0xd7, 0xff}}},\n    {{{ -6947,  -1133,   4930}, 0, { -7240,  11428}, {0xae, 0xc5, 0xb4, 0xff}}},\n};\n\n// 0x07018980 - 0x07018A80\nstatic const Vtx ccm_seg7_vertex_07018980[] = {\n    {{{ -7265,  -1019,   5133}, 0, { -6952,  11050}, {0xc8, 0x95, 0xda, 0xff}}},\n    {{{ -6947,  -1133,   4930}, 0, { -7240,  11428}, {0xae, 0xc5, 0xb4, 0xff}}},\n    {{{ -7208,  -1092,   5178}, 0, { -7194,  11292}, {0xaa, 0xc7, 0xb7, 0xff}}},\n    {{{ -7071,  -1033,   4809}, 0, { -6666,  11098}, {0xef, 0x83, 0x02, 0xff}}},\n    {{{ -6999,  -1060,   4879}, 0, { -6998,  11186}, {0xc8, 0x96, 0xd7, 0xff}}},\n    {{{ -7187,  -1191,   5195}, 0, { -7282,  11624}, {0xa6, 0x04, 0xa7, 0xff}}},\n    {{{ -6928,  -1232,   4948}, 0, { -7330,  11760}, {0xaa, 0x06, 0xa4, 0xff}}},\n    {{{ -6947,  -1332,   4930}, 0, { -7240,  12092}, {0xbc, 0x42, 0xad, 0xff}}},\n    {{{ -6743,  -1446,   4638}, 0, { -7054,  12470}, {0xda, 0x6d, 0xcd, 0xff}}},\n    {{{ -6999,  -1405,   4879}, 0, { -6998,  12334}, {0xe5, 0x72, 0xd1, 0xff}}},\n    {{{ -6814,  -1472,   4568}, 0, { -6722,  12558}, {0x0a, 0x7e, 0xf5, 0xff}}},\n    {{{ -7071,  -1432,   4809}, 0, { -6666,  12422}, {0x11, 0x7d, 0xff, 0xff}}},\n    {{{ -6885,  -1446,   4499}, 0, { -6392,  12470}, {0x38, 0x6d, 0x1f, 0xff}}},\n    {{{ -7142,  -1405,   4740}, 0, { -6336,  12334}, {0x38, 0x69, 0x29, 0xff}}},\n    {{{ -6937,  -1373,   4448}, 0, { -6148,  12228}, {0x57, 0x3f, 0x42, 0xff}}},\n    {{{ -7194,  -1332,   4689}, 0, { -6092,  12092}, {0x52, 0x3b, 0x4c, 0xff}}},\n};\n\n// 0x07018A80 - 0x07018B80\nstatic const Vtx ccm_seg7_vertex_07018A80[] = {\n    {{{ -7194,  -1332,   4689}, 0, { -6092,  12092}, {0x52, 0x3b, 0x4c, 0xff}}},\n    {{{ -6937,  -1373,   4448}, 0, { -6148,  12228}, {0x57, 0x3f, 0x42, 0xff}}},\n    {{{ -6957,  -1273,   4429}, 0, { -6060,  11896}, {0x5e, 0x06, 0x54, 0xff}}},\n    {{{ -7213,  -1232,   4670}, 0, { -6004,  11760}, {0x56, 0xf9, 0x5c, 0xff}}},\n    {{{ -6937,  -1174,   4448}, 0, { -6148,  11564}, {0x50, 0xc5, 0x4e, 0xff}}},\n    {{{ -7194,  -1133,   4689}, 0, { -6092,  11428}, {0x44, 0xbd, 0x52, 0xff}}},\n    {{{ -6885,  -1101,   4499}, 0, { -6392,  11322}, {0x26, 0x93, 0x33, 0xff}}},\n    {{{ -7142,  -1060,   4740}, 0, { -6336,  11186}, {0x1c, 0x8e, 0x30, 0xff}}},\n    {{{ -6814,  -1074,   4568}, 0, { -6722,  11234}, {0xf7, 0x82, 0x0b, 0xff}}},\n    {{{ -7071,  -1033,   4809}, 0, { -6666,  11098}, {0xef, 0x83, 0x02, 0xff}}},\n    {{{ -6743,  -1101,   4638}, 0, { -7054,  11322}, {0xc8, 0x93, 0xe0, 0xff}}},\n    {{{ -6999,  -1060,   4879}, 0, { -6998,  11186}, {0xc8, 0x96, 0xd7, 0xff}}},\n    {{{ -6690,  -1174,   4689}, 0, { -7296,  11564}, {0xad, 0xbb, 0xbf, 0xff}}},\n    {{{ -6947,  -1133,   4930}, 0, { -7240,  11428}, {0xae, 0xc5, 0xb4, 0xff}}},\n    {{{ -6671,  -1273,   4707}, 0, { -7386,  11896}, {0xa1, 0xf5, 0xae, 0xff}}},\n    {{{ -6928,  -1232,   4948}, 0, { -7330,  11760}, {0xaa, 0x06, 0xa4, 0xff}}},\n};\n\n// 0x07018B80 - 0x07018C80\nstatic const Vtx ccm_seg7_vertex_07018B80[] = {\n    {{{ -6928,  -1232,   4948}, 0, { -7330,  11760}, {0xaa, 0x06, 0xa4, 0xff}}},\n    {{{ -6690,  -1373,   4689}, 0, { -7296,  12228}, {0xaf, 0x3a, 0xb3, 0xff}}},\n    {{{ -6947,  -1332,   4930}, 0, { -7240,  12092}, {0xbc, 0x42, 0xad, 0xff}}},\n    {{{ -6671,  -1273,   4707}, 0, { -7386,  11896}, {0xa1, 0xf5, 0xae, 0xff}}},\n    {{{ -6743,  -1446,   4638}, 0, { -7054,  12470}, {0xda, 0x6d, 0xcd, 0xff}}},\n    {{{ -6590,  -1513,   4256}, 0, { -6534,  12696}, {0x06, 0x7e, 0xf4, 0xff}}},\n    {{{ -6814,  -1472,   4568}, 0, { -6722,  12558}, {0x0a, 0x7e, 0xf5, 0xff}}},\n    {{{ -6503,  -1487,   4305}, 0, { -6856,  12606}, {0xcd, 0x6d, 0xdb, 0xff}}},\n    {{{ -6676,  -1487,   4207}, 0, { -6214,  12606}, {0x3e, 0x6d, 0x0f, 0xff}}},\n    {{{ -6885,  -1446,   4499}, 0, { -6392,  12470}, {0x38, 0x6d, 0x1f, 0xff}}},\n    {{{ -6740,  -1414,   4171}, 0, { -5978,  12364}, {0x66, 0x3f, 0x28, 0xff}}},\n    {{{ -6937,  -1373,   4448}, 0, { -6148,  12228}, {0x57, 0x3f, 0x42, 0xff}}},\n    {{{ -6763,  -1314,   4158}, 0, { -5892,  12032}, {0x70, 0xfb, 0x3a, 0xff}}},\n    {{{ -6957,  -1273,   4429}, 0, { -6060,  11896}, {0x5e, 0x06, 0x54, 0xff}}},\n    {{{ -6937,  -1174,   4448}, 0, { -6148,  11564}, {0x50, 0xc5, 0x4e, 0xff}}},\n    {{{ -6740,  -1215,   4171}, 0, { -5978,  11702}, {0x5e, 0xbb, 0x31, 0xff}}},\n};\n\n// 0x07018C80 - 0x07018D80\nstatic const Vtx ccm_seg7_vertex_07018C80[] = {\n    {{{ -6937,  -1174,   4448}, 0, { -6148,  11564}, {0x50, 0xc5, 0x4e, 0xff}}},\n    {{{ -6676,  -1142,   4207}, 0, { -6214,  11458}, {0x33, 0x93, 0x27, 0xff}}},\n    {{{ -6885,  -1101,   4499}, 0, { -6392,  11322}, {0x26, 0x93, 0x33, 0xff}}},\n    {{{ -6740,  -1215,   4171}, 0, { -5978,  11702}, {0x5e, 0xbb, 0x31, 0xff}}},\n    {{{ -6590,  -1115,   4256}, 0, { -6534,  11370}, {0xfa, 0x82, 0x0c, 0xff}}},\n    {{{ -6814,  -1074,   4568}, 0, { -6722,  11234}, {0xf7, 0x82, 0x0b, 0xff}}},\n    {{{ -6503,  -1142,   4305}, 0, { -6856,  11458}, {0xc2, 0x93, 0xef, 0xff}}},\n    {{{ -6743,  -1101,   4638}, 0, { -7054,  11322}, {0xc8, 0x93, 0xe0, 0xff}}},\n    {{{ -6440,  -1215,   4341}, 0, { -7090,  11702}, {0x9a, 0xc6, 0xd2, 0xff}}},\n    {{{ -6690,  -1174,   4689}, 0, { -7296,  11564}, {0xad, 0xbb, 0xbf, 0xff}}},\n    {{{ -6671,  -1273,   4707}, 0, { -7386,  11896}, {0xa1, 0xf5, 0xae, 0xff}}},\n    {{{ -6417,  -1314,   4355}, 0, { -7176,  12032}, {0x8f, 0x0b, 0xc8, 0xff}}},\n    {{{ -6690,  -1373,   4689}, 0, { -7296,  12228}, {0xaf, 0x3a, 0xb3, 0xff}}},\n    {{{ -6440,  -1414,   4341}, 0, { -7090,  12364}, {0xa2, 0x45, 0xcf, 0xff}}},\n    {{{ -6503,  -1487,   4305}, 0, { -6856,  12606}, {0xcd, 0x6d, 0xdb, 0xff}}},\n    {{{ -6366,  -1528,   3834}, 0, { -6094,  12742}, {0xc4, 0x6d, 0xec, 0xff}}},\n};\n\n// 0x07018D80 - 0x07018E80\nstatic const Vtx ccm_seg7_vertex_07018D80[] = {\n    {{{ -6503,  -1487,   4305}, 0, { -6856,  12606}, {0xcd, 0x6d, 0xdb, 0xff}}},\n    {{{ -6366,  -1528,   3834}, 0, { -6094,  12742}, {0xc4, 0x6d, 0xec, 0xff}}},\n    {{{ -6464,  -1554,   3821}, 0, { -5828,  12832}, {0x01, 0x7e, 0xf5, 0xff}}},\n    {{{ -6590,  -1513,   4256}, 0, { -6534,  12696}, {0x06, 0x7e, 0xf4, 0xff}}},\n    {{{ -6563,  -1528,   3808}, 0, { -5562,  12742}, {0x40, 0x6d, 0x00, 0xff}}},\n    {{{ -6676,  -1487,   4207}, 0, { -6214,  12606}, {0x3e, 0x6d, 0x0f, 0xff}}},\n    {{{ -6635,  -1455,   3799}, 0, { -5366,  12500}, {0x6d, 0x3e, 0x0c, 0xff}}},\n    {{{ -6740,  -1414,   4171}, 0, { -5978,  12364}, {0x66, 0x3f, 0x28, 0xff}}},\n    {{{ -6662,  -1355,   3795}, 0, { -5296,  12168}, {0x7d, 0x00, 0x15, 0xff}}},\n    {{{ -6763,  -1314,   4158}, 0, { -5892,  12032}, {0x70, 0xfb, 0x3a, 0xff}}},\n    {{{ -6635,  -1256,   3799}, 0, { -5366,  11838}, {0x6b, 0xc1, 0x18, 0xff}}},\n    {{{ -6740,  -1215,   4171}, 0, { -5978,  11702}, {0x5e, 0xbb, 0x31, 0xff}}},\n    {{{ -6563,  -1183,   3808}, 0, { -5562,  11594}, {0x3d, 0x93, 0x15, 0xff}}},\n    {{{ -6676,  -1142,   4207}, 0, { -6214,  11458}, {0x33, 0x93, 0x27, 0xff}}},\n    {{{ -6464,  -1156,   3821}, 0, { -5828,  11506}, {0xfe, 0x82, 0x0b, 0xff}}},\n    {{{ -6590,  -1115,   4256}, 0, { -6534,  11370}, {0xfa, 0x82, 0x0c, 0xff}}},\n};\n\n// 0x07018E80 - 0x07018F60\nstatic const Vtx ccm_seg7_vertex_07018E80[] = {\n    {{{ -6590,  -1115,   4256}, 0, { -6534,  11370}, {0xfa, 0x82, 0x0c, 0xff}}},\n    {{{ -6366,  -1183,   3834}, 0, { -6094,  11594}, {0xc0, 0x93, 0xff, 0xff}}},\n    {{{ -6503,  -1142,   4305}, 0, { -6856,  11458}, {0xc2, 0x93, 0xef, 0xff}}},\n    {{{ -6464,  -1156,   3821}, 0, { -5828,  11506}, {0xfe, 0x82, 0x0b, 0xff}}},\n    {{{ -6293,  -1256,   3844}, 0, { -6288,  11838}, {0x93, 0xc1, 0xf2, 0xff}}},\n    {{{ -6440,  -1215,   4341}, 0, { -7090,  11702}, {0x9a, 0xc6, 0xd2, 0xff}}},\n    {{{ -6267,  -1355,   3847}, 0, { -6360,  12168}, {0x84, 0x00, 0xea, 0xff}}},\n    {{{ -6417,  -1314,   4355}, 0, { -7176,  12032}, {0x8f, 0x0b, 0xc8, 0xff}}},\n    {{{ -6293,  -1455,   3844}, 0, { -6288,  12500}, {0x95, 0x3f, 0xe8, 0xff}}},\n    {{{ -6440,  -1414,   4341}, 0, { -7090,  12364}, {0xa2, 0x45, 0xcf, 0xff}}},\n    {{{ -6366,  -1528,   3834}, 0, { -6094,  12742}, {0xc4, 0x6d, 0xec, 0xff}}},\n    {{{ -5269,   1894,   -861}, 0, {  2160,   1354}, {0x69, 0x46, 0x08, 0xff}}},\n    {{{ -5254,   2619,   -284}, 0, {   786,  -1054}, {0x59, 0xa7, 0xfe, 0xff}}},\n    {{{ -5254,   1685,   -284}, 0, {   786,   2052}, {0x59, 0x55, 0x1e, 0xff}}},\n};\n\n// 0x07018F60 - 0x07019060\nstatic const Vtx ccm_seg7_vertex_07018F60[] = {\n    {{{ -4472,   1685,   -284}, 0, { -1080,   2052}, {0x97, 0x42, 0x16, 0xff}}},\n    {{{ -4472,   2619,   -284}, 0, { -1080,  -1054}, {0x8f, 0xc8, 0xfc, 0xff}}},\n    {{{ -4454,   2005,   -755}, 0, {     0,    990}, {0xf9, 0x42, 0x95, 0xff}}},\n    {{{ -4450,   1894,   -861}, 0, {   202,   1354}, {0x05, 0x7e, 0xf9, 0xff}}},\n    {{{ -5350,   2048,  -1761}, 0, {  4434,    846}, {0x37, 0x71, 0xf4, 0xff}}},\n    {{{ -5438,   2157,  -1709}, 0, {  4528,    484}, {0x70, 0x29, 0xd5, 0xff}}},\n    {{{ -5269,   1894,   -861}, 0, {  2160,   1354}, {0x69, 0x46, 0x08, 0xff}}},\n    {{{ -5679,   2202,  -2989}, 0, {  8066,    334}, {0x37, 0x71, 0x0a, 0xff}}},\n    {{{ -5269,   2619,   -861}, 0, {  2160,  -1054}, {0x68, 0xbb, 0xec, 0xff}}},\n    {{{ -5438,   2771,  -1709}, 0, {  4528,  -1560}, {0x52, 0xad, 0xd0, 0xff}}},\n    {{{ -5781,   2310,  -2989}, 0, {  8310,    -28}, {0x75, 0x2e, 0x03, 0xff}}},\n    {{{ -4454,   2619,   -755}, 0, {     0,  -1054}, {0x12, 0x9f, 0xb1, 0xff}}},\n    {{{ -4773,   2928,  -2093}, 0, {  3828,  -2082}, {0x4b, 0xb1, 0xc0, 0xff}}},\n    {{{ -5781,   2925,  -2989}, 0, {  8310,  -2072}, {0x60, 0xae, 0xfb, 0xff}}},\n    {{{ -4104,   2774,  -1432}, 0, {   700,  -1570}, {0x3e, 0xb0, 0xb4, 0xff}}},\n    {{{ -5254,   2619,   -284}, 0, {   786,  -1054}, {0x59, 0xa7, 0xfe, 0xff}}},\n};\n\n// 0x07019060 - 0x07019150\nstatic const Vtx ccm_seg7_vertex_07019060[] = {\n    {{{ -4454,   2619,   -755}, 0, {     0,  -1054}, {0x12, 0x9f, 0xb1, 0xff}}},\n    {{{ -3221,   1849,   -422}, 0, { -3746,   1504}, {0x5b, 0x16, 0xab, 0xff}}},\n    {{{ -4454,   2005,   -755}, 0, {     0,    990}, {0xf9, 0x42, 0x95, 0xff}}},\n    {{{ -4472,   2619,   -284}, 0, { -1080,  -1054}, {0x8f, 0xc8, 0xfc, 0xff}}},\n    {{{ -3221,   1741,   -531}, 0, { -3496,   1866}, {0x36, 0x6d, 0xdd, 0xff}}},\n    {{{ -1864,  -4197,    199}, 0, { -7170,   -774}, {0x08, 0x1d, 0x7b, 0xff}}},\n    {{{ -1864,  -3583,    199}, 0, { -7170,  -2818}, {0x1d, 0xb9, 0x64, 0xff}}},\n    {{{ -4594,  -3993,   -442}, 0, { -1366,  -1456}, {0xfd, 0xd8, 0x78, 0xff}}},\n    {{{ -3221,   2464,   -422}, 0, { -3746,   -538}, {0x34, 0xcb, 0x9a, 0xff}}},\n    {{{ -4104,   2774,  -1432}, 0, {   700,  -1570}, {0x3e, 0xb0, 0xb4, 0xff}}},\n    {{{ -5733,  -4812,   -363}, 0, {    12,   1268}, {0xe9, 0x5e, 0x51, 0xff}}},\n    {{{ -4594,  -4607,   -442}, 0, { -1366,    588}, {0xeb, 0x3a, 0x6e, 0xff}}},\n    {{{ -5733,  -4197,   -363}, 0, {    12,   -774}, {0xec, 0xa5, 0x55, 0xff}}},\n    {{{ -5958,  -4914,   -553}, 0, {   902,   1608}, {0xa3, 0x45, 0x33, 0xff}}},\n    {{{ -4618,  -3839,   -185}, 0, { -2106,  -1968}, {0x0f, 0x8b, 0x2c, 0xff}}},\n};\n\n// 0x07019150 - 0x07019240\nstatic const Vtx ccm_seg7_vertex_07019150[] = {\n    {{{ -5784,  -4198,  -3326}, 0, {  9002,   -774}, {0xac, 0xac, 0xd6, 0xff}}},\n    {{{ -7167,  -4197,  -3326}, 0, { 10962,   -778}, {0x33, 0xcd, 0x99, 0xff}}},\n    {{{ -7167,  -4197,  -6143}, 0, { 19438,   -774}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{ -6708,  -4197,    110}, 0, {     0,   -774}, {0x3c, 0x9e, 0xcd, 0xff}}},\n    {{{ -5733,  -4197,   -363}, 0, {    12,   -774}, {0xec, 0xa5, 0x55, 0xff}}},\n    {{{ -4618,  -3839,   -185}, 0, { -2106,  -1968}, {0x0f, 0x8b, 0x2c, 0xff}}},\n    {{{ -7056,  -4197,   -626}, 0, {  2680,   -776}, {0x3d, 0x93, 0xef, 0xff}}},\n    {{{ -5958,  -4197,   -553}, 0, {   902,   -774}, {0xaa, 0xb9, 0x3b, 0xff}}},\n    {{{ -5958,  -4914,   -553}, 0, {   902,   1608}, {0xa3, 0x45, 0x33, 0xff}}},\n    {{{ -4665,  -3839,    328}, 0, { -3586,  -1968}, {0x16, 0x86, 0xe8, 0xff}}},\n    {{{ -1864,  -3583,    199}, 0, { -7170,  -2818}, {0x1d, 0xb9, 0x64, 0xff}}},\n    {{{ -1959,  -3429,    439}, 0, { -7756,  -3330}, {0x48, 0xa2, 0x2d, 0xff}}},\n    {{{ -5784,  -4197,  -6143}, 0, { 17476,   -774}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{ -6911,  -4197,  -3326}, 0, { 10600,   -778}, {0x69, 0xcc, 0xd1, 0xff}}},\n    {{{ -6092,  -4198,  -3326}, 0, {  9438,   -774}, {0xd6, 0xac, 0xac, 0xff}}},\n};\n\n// 0x07019240 - 0x07019340\nstatic const Vtx ccm_seg7_vertex_07019240[] = {\n    {{{ -7056,  -4821,   -626}, 0, {  2680,   1296}, {0x76, 0x25, 0xe9, 0xff}}},\n    {{{ -6911,  -5523,  -3326}, 0, { 10600,   3632}, {0x2e, 0x47, 0xa2, 0xff}}},\n    {{{ -6911,  -4197,  -3326}, 0, { 10600,   -778}, {0x69, 0xcc, 0xd1, 0xff}}},\n    {{{ -7056,  -4197,   -626}, 0, {  2680,   -776}, {0x3d, 0x93, 0xef, 0xff}}},\n    {{{ -6092,  -4197,   -820}, 0, {  1894,   -774}, {0x99, 0xb9, 0x10, 0xff}}},\n    {{{ -6092,  -4198,  -3326}, 0, {  9438,   -774}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{ -6092,  -5523,  -3326}, 0, {  9438,   3632}, {0xbf, 0x1f, 0x98, 0xff}}},\n    {{{ -5958,  -4197,   -553}, 0, {   902,   -774}, {0xaa, 0xb9, 0x3b, 0xff}}},\n    {{{ -6708,  -4728,    110}, 0, {     0,    990}, {0x51, 0x39, 0xb2, 0xff}}},\n    {{{ -6708,  -4197,    110}, 0, {     0,   -774}, {0x3c, 0x9e, 0xcd, 0xff}}},\n    {{{ -6092,  -5017,   -820}, 0, {  1894,   1948}, {0xb4, 0x65, 0x01, 0xff}}},\n    {{{ -5958,  -4914,   -553}, 0, {   902,   1608}, {0xa3, 0x45, 0x33, 0xff}}},\n    {{{ -5725,  -4668,    589}, 0, { -2866,    790}, {0x19, 0x31, 0x8e, 0xff}}},\n    {{{ -5215,   -223,   6150}, 0, {-14202,   8402}, {0x46, 0xd0, 0xa3, 0xff}}},\n    {{{ -5265,   -408,   6150}, 0, {-14084,   9016}, {0x7d, 0x00, 0xed, 0xff}}},\n    {{{ -5265,   4711,   6150}, 0, {-14084,  -8016}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07019340 - 0x07019440\nstatic const Vtx ccm_seg7_vertex_07019340[] = {\n    {{{ -4665,  -3839,    328}, 0, { -3586,  -1968}, {0x16, 0x86, 0xe8, 0xff}}},\n    {{{ -5725,  -4117,    589}, 0, { -2866,  -1044}, {0x16, 0xc9, 0x91, 0xff}}},\n    {{{ -6708,  -4197,    110}, 0, {     0,   -774}, {0x3c, 0x9e, 0xcd, 0xff}}},\n    {{{ -5725,  -4668,    589}, 0, { -2866,    790}, {0x19, 0x31, 0x8e, 0xff}}},\n    {{{ -4688,  -3993,    585}, 0, { -4326,  -1456}, {0x19, 0xc2, 0x95, 0xff}}},\n    {{{ -1959,  -3429,    439}, 0, { -7756,  -3330}, {0x48, 0xa2, 0x2d, 0xff}}},\n    {{{ -2149,  -3429,    919}, 0, { -8932,  -3330}, {0x56, 0xa4, 0xfc, 0xff}}},\n    {{{ -4688,  -4607,    585}, 0, { -4326,    588}, {0x06, 0x26, 0x88, 0xff}}},\n    {{{ -2244,  -4197,   1159}, 0, { -9520,   -774}, {0x4f, 0x2e, 0xa9, 0xff}}},\n    {{{ -2244,  -3583,   1159}, 0, { -9520,  -2818}, {0x7c, 0xe7, 0x01, 0xff}}},\n    {{{ -5215,   -223,   6150}, 0, {-14202,   8402}, {0x46, 0xd0, 0xa3, 0xff}}},\n    {{{ -5265,   4711,   6150}, 0, {-14084,  -8016}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -4527,   4711,   6150}, 0, {-15846,  -8016}, {0xd8, 0x00, 0x88, 0xff}}},\n    {{{ -5254,   4712,   -284}, 0, {   786,  -8016}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{ -5254,   1685,   -284}, 0, {   786,   2052}, {0x59, 0x55, 0x1e, 0xff}}},\n    {{{ -5265,   -408,   6150}, 0, {-14084,   9016}, {0x7d, 0x00, 0xed, 0xff}}},\n};\n\n// 0x07019440 - 0x07019540\nstatic const Vtx ccm_seg7_vertex_07019440[] = {\n    {{{ -4527,   4711,   6150}, 0, {-15846,  -8016}, {0xd8, 0x00, 0x88, 0xff}}},\n    {{{ -4527,   -408,   6150}, 0, {-15846,   9016}, {0x87, 0x0d, 0xde, 0xff}}},\n    {{{ -4577,   -223,   6150}, 0, {-15728,   8402}, {0xac, 0xd9, 0xab, 0xff}}},\n    {{{ -4472,   1685,   -284}, 0, { -1080,   2052}, {0x97, 0x42, 0x16, 0xff}}},\n    {{{ -4712,    -88,   6150}, 0, {-15406,   7954}, {0xcc, 0xb4, 0xaa, 0xff}}},\n    {{{ -4896,    -39,   6150}, 0, {-14966,   7790}, {0xfa, 0xa3, 0xab, 0xff}}},\n    {{{ -5080,    -88,   6150}, 0, {-14526,   7954}, {0x2a, 0xa9, 0xaf, 0xff}}},\n    {{{ -5215,   -223,   6150}, 0, {-14202,   8402}, {0x46, 0xd0, 0xa3, 0xff}}},\n    {{{ -4472,   4712,   -284}, 0, { -1080,  -8016}, {0x82, 0x00, 0xff, 0xff}}},\n    {{{ -5425,   2476,  -4316}, 0, { 10534,   -580}, {0x7e, 0x0c, 0x03, 0xff}}},\n    {{{ -5781,   2925,  -2989}, 0, {  8310,  -2072}, {0x60, 0xae, 0xfb, 0xff}}},\n    {{{ -5781,   2310,  -2989}, 0, {  8310,    -28}, {0x75, 0x2e, 0x03, 0xff}}},\n    {{{ -5425,   3091,  -4316}, 0, { 10534,  -2624}, {0x78, 0xda, 0xf1, 0xff}}},\n    {{{ -5350,   2355,  -4218}, 0, { 10126,   -176}, {0x48, 0x67, 0xfb, 0xff}}},\n    {{{ -5438,   2771,  -1709}, 0, {  4528,  -1560}, {0x52, 0xad, 0xd0, 0xff}}},\n    {{{ -5679,   2202,  -2989}, 0, {  8066,    334}, {0x37, 0x71, 0x0a, 0xff}}},\n};\n\n// 0x07019540 - 0x070195B0\nstatic const Vtx ccm_seg7_vertex_07019540[] = {\n    {{{ -5013,   3082,  -2989}, 0, {  6476,  -2594}, {0x69, 0xc3, 0xdd, 0xff}}},\n    {{{ -5781,   2925,  -2989}, 0, {  8310,  -2072}, {0x60, 0xae, 0xfb, 0xff}}},\n    {{{ -5425,   3091,  -4316}, 0, { 10534,  -2624}, {0x78, 0xda, 0xf1, 0xff}}},\n    {{{ -4773,   2928,  -2093}, 0, {  3828,  -2082}, {0x4b, 0xb1, 0xc0, 0xff}}},\n    {{{ -5438,   2157,  -1709}, 0, {  4528,    484}, {0x70, 0x29, 0xd5, 0xff}}},\n    {{{ -5679,   2202,  -2989}, 0, {  8066,    334}, {0x37, 0x71, 0x0a, 0xff}}},\n    {{{ -5781,   2310,  -2989}, 0, {  8310,    -28}, {0x75, 0x2e, 0x03, 0xff}}},\n};\n\n// 0x070195B0 - 0x070196B0\nstatic const Vtx ccm_seg7_vertex_070195B0[] = {\n    {{{  6571,  -2856,   6509}, 0, {     0,    712}, {0xe8, 0x7c, 0x04, 0xff}}},\n    {{{  6528,  -2825,   5834}, 0, {   480,    562}, {0xef, 0x7d, 0x0b, 0xff}}},\n    {{{  6275,  -2917,   6213}, 0, {   478,    596}, {0xe4, 0x7b, 0x08, 0xff}}},\n    {{{  6150,  -2856,   5664}, 0, {   990,    990}, {0xe8, 0x7a, 0x14, 0xff}}},\n    {{{  6256,  -2764,   5258}, 0, {   990,    478}, {0xf8, 0x7d, 0x10, 0xff}}},\n    {{{  7075,  -2764,   5366}, 0, {     0,    542}, {0xfc, 0x7e, 0x0a, 0xff}}},\n    {{{  6907,  -2784,   6005}, 0, {   -28,    134}, {0xf1, 0x7e, 0x03, 0xff}}},\n    {{{  5980,  -2948,   5918}, 0, {   990,    478}, {0xdf, 0x79, 0x0d, 0xff}}},\n    {{{  5747,  -3040,   6073}, 0, {   990,   1400}, {0xe2, 0x7b, 0x00, 0xff}}},\n    {{{  5907,  -3010,   6459}, 0, {   474,    810}, {0xe4, 0x7b, 0xfe, 0xff}}},\n    {{{  6067,  -2948,   6845}, 0, {   -38,    220}, {0xe6, 0x7c, 0xfa, 0xff}}},\n    {{{  5081,  -3153,   6611}, 0, {   480,    920}, {0xec, 0x7c, 0xf7, 0xff}}},\n    {{{  5112,  -3173,   6200}, 0, {   990,   1500}, {0xeb, 0x7c, 0xf9, 0xff}}},\n    {{{  5050,  -3102,   7021}, 0, {     0,    336}, {0xeb, 0x7c, 0xf1, 0xff}}},\n    {{{  4303,  -3276,   6106}, 0, {   990,    990}, {0xf3, 0x7e, 0xfb, 0xff}}},\n    {{{  4028,  -3276,   6885}, 0, {     0,    340}, {0xf1, 0x7d, 0xf8, 0xff}}},\n};\n\n// 0x070196B0 - 0x070197B0\nstatic const Vtx ccm_seg7_vertex_070196B0[] = {\n    {{{  2106,   3891,   -872}, 0, {   990,    990}, {0xf1, 0x7e, 0x04, 0xff}}},\n    {{{   480,   3686,   -622}, 0, {   990,    -44}, {0xee, 0x7d, 0x02, 0xff}}},\n    {{{  2334,   3891,    -78}, 0, {     0,   1052}, {0xf2, 0x7e, 0x02, 0xff}}},\n    {{{   531,   3686,    198}, 0, {     0,    -90}, {0xef, 0x7d, 0xfe, 0xff}}},\n    {{{   480,   3686,   -622}, 0, {   990,    990}, {0xee, 0x7d, 0x02, 0xff}}},\n    {{{  -295,   3533,   -645}, 0, {   990,      2}, {0xe9, 0x7c, 0xf9, 0xff}}},\n    {{{   531,   3686,    198}, 0, {     0,   1078}, {0xef, 0x7d, 0xfe, 0xff}}},\n    {{{  -459,   3584,    169}, 0, {     0,   -158}, {0xf0, 0x7c, 0xf0, 0xff}}},\n    {{{  -295,   3533,   -645}, 0, {   982,    990}, {0xe9, 0x7c, 0xf9, 0xff}}},\n    {{{  -797,   3379,   -840}, 0, {  1000,    290}, {0xf0, 0x7c, 0xeb, 0xff}}},\n    {{{  -459,   3584,    169}, 0, {   -26,   1150}, {0xf0, 0x7c, 0xf0, 0xff}}},\n    {{{ -1328,   3482,   -167}, 0, {   -36,     -2}, {0xfe, 0x7c, 0xe8, 0xff}}},\n    {{{  -797,   3379,   -840}, 0, {   990,    990}, {0xf0, 0x7c, 0xeb, 0xff}}},\n    {{{ -1052,   3277,  -1208}, 0, {   990,    418}, {0x02, 0x7d, 0xea, 0xff}}},\n    {{{ -1328,   3482,   -167}, 0, {   -26,   1322}, {0xfe, 0x7c, 0xe8, 0xff}}},\n    {{{ -1849,   3379,   -920}, 0, {   -46,    182}, {0x09, 0x7d, 0xee, 0xff}}},\n};\n\n// 0x070197B0 - 0x070198B0\nstatic const Vtx ccm_seg7_vertex_070197B0[] = {\n    {{{  6993,   -206,  -5375}, 0, {   158,   1038}, {0xf2, 0x7b, 0x1b, 0xff}}},\n    {{{  6239,   -206,  -5279}, 0, {   990,    990}, {0x00, 0x7d, 0x15, 0xff}}},\n    {{{  7072,  -1123,   -870}, 0, {     0,  -1502}, {0xfb, 0x7d, 0x10, 0xff}}},\n    {{{  6253,  -1123,   -870}, 0, {   990,  -1500}, {0x00, 0x7e, 0x0e, 0xff}}},\n    {{{  7238,   -133,  -5406}, 0, {   -52,   1052}, {0xda, 0x71, 0x29, 0xff}}},\n    {{{  6255,  -1134,   -469}, 0, {   990,    990}, {0x00, 0x7e, 0x08, 0xff}}},\n    {{{  6255,  -1144,   -381}, 0, {   990,    888}, {0x00, 0x7a, 0x1f, 0xff}}},\n    {{{  7075,  -1144,   -381}, 0, {     0,    886}, {0x00, 0x7c, 0x17, 0xff}}},\n    {{{  7075,  -1134,   -469}, 0, {     0,    990}, {0x00, 0x7e, 0x08, 0xff}}},\n    {{{  7074,  -1170,   -303}, 0, {     0,    794}, {0x00, 0x74, 0x31, 0xff}}},\n    {{{  6255,  -1170,   -303}, 0, {   990,    800}, {0x00, 0x70, 0x3b, 0xff}}},\n    {{{  -158,  -4095,   1919}, 0, {   990,    382}, {0xff, 0x7e, 0xfd, 0xff}}},\n    {{{  -979,  -4095,   2171}, 0, {   -30,    546}, {0xfb, 0x7e, 0xf9, 0xff}}},\n    {{{  -991,  -4095,   2759}, 0, {     0,    914}, {0x01, 0x7e, 0xf9, 0xff}}},\n    {{{  7072,  -2321,   1504}, 0, {     0,  -1334}, {0x00, 0x6f, 0x3c, 0xff}}},\n    {{{  6253,  -2321,   1504}, 0, {   990,  -1274}, {0x00, 0x73, 0x34, 0xff}}},\n};\n\n// 0x070198B0 - 0x070199B0\nstatic const Vtx ccm_seg7_vertex_070198B0[] = {\n    {{{  6253,  -2321,   1504}, 0, {   990,  -1274}, {0x00, 0x73, 0x34, 0xff}}},\n    {{{  7072,  -2355,   1594}, 0, {     0,  -1442}, {0x00, 0x78, 0x26, 0xff}}},\n    {{{  7072,  -2321,   1504}, 0, {     0,  -1334}, {0x00, 0x6f, 0x3c, 0xff}}},\n    {{{  6253,  -2355,   1594}, 0, {   990,  -1378}, {0x00, 0x7a, 0x20, 0xff}}},\n    {{{  6253,  -2378,   1700}, 0, {   990,  -1498}, {0x00, 0x7d, 0x11, 0xff}}},\n    {{{  7072,  -2378,   1700}, 0, {     0,  -1566}, {0x00, 0x7d, 0x16, 0xff}}},\n    {{{ -6911,  -4965,   -626}, 0, {   -28,    418}, {0x34, 0x6e, 0xdd, 0xff}}},\n    {{{ -6594,  -4863,      7}, 0, {     0,    990}, {0x09, 0x78, 0xd9, 0xff}}},\n    {{{ -6092,  -5017,   -820}, 0, {   990,    734}, {0xb4, 0x65, 0x01, 0xff}}},\n    {{{ -5958,  -4914,   -553}, 0, {   990,    990}, {0xa3, 0x45, 0x33, 0xff}}},\n    {{{  3596,    420,  -5926}, 0, {   142,    340}, {0x16, 0x6d, 0x3c, 0xff}}},\n    {{{  3530,    638,  -6134}, 0, {  -170,    334}, {0x1a, 0x55, 0x59, 0xff}}},\n    {{{  3192,    427,  -5831}, 0, {    76,    634}, {0x1d, 0x6d, 0x39, 0xff}}},\n    {{{  -991,  -4095,   2759}, 0, {     0,    914}, {0x01, 0x7e, 0xf9, 0xff}}},\n    {{{  -173,  -4095,   2895}, 0, {   990,    990}, {0x01, 0x7e, 0xf9, 0xff}}},\n    {{{  -158,  -4095,   1919}, 0, {   990,    382}, {0xff, 0x7e, 0xfd, 0xff}}},\n};\n\n// 0x070199B0 - 0x07019AA0\nstatic const Vtx ccm_seg7_vertex_070199B0[] = {\n    {{{  4058,    347,  -5964}, 0, {   190,    188}, {0x16, 0x70, 0x35, 0xff}}},\n    {{{  4060,    569,  -6198}, 0, {  -140,    160}, {0x13, 0x5b, 0x56, 0xff}}},\n    {{{  3596,    420,  -5926}, 0, {   142,    522}, {0x16, 0x6d, 0x3c, 0xff}}},\n    {{{  3736,    236,  -5322}, 0, {  1034,    488}, {0x1b, 0x77, 0x1f, 0xff}}},\n    {{{  4059,    176,  -5372}, 0, {  1034,    254}, {0x19, 0x77, 0x22, 0xff}}},\n    {{{  3606,    263,  -5277}, 0, {  1026,    490}, {0x17, 0x7a, 0x18, 0xff}}},\n    {{{  3736,    236,  -5322}, 0, {  1026,    392}, {0x1b, 0x77, 0x1f, 0xff}}},\n    {{{  3596,    420,  -5926}, 0, {   142,    340}, {0x16, 0x6d, 0x3c, 0xff}}},\n    {{{  3192,    427,  -5831}, 0, {    76,    634}, {0x1d, 0x6d, 0x39, 0xff}}},\n    {{{  3530,    638,  -6134}, 0, {  -166,    546}, {0x1a, 0x55, 0x59, 0xff}}},\n    {{{  3503,    278,  -5219}, 0, {   990,    990}, {0x18, 0x7b, 0x0c, 0xff}}},\n    {{{  3192,    427,  -5831}, 0, {    84,    612}, {0x1d, 0x6d, 0x39, 0xff}}},\n    {{{  2840,    434,  -5585}, 0, {    32,    920}, {0x33, 0x6c, 0x29, 0xff}}},\n    {{{  3606,    263,  -5277}, 0, {  1020,    912}, {0x17, 0x7a, 0x18, 0xff}}},\n    {{{  3080,    576,  -5912}, 0, {   -94,    586}, {0x37, 0x4b, 0x55, 0xff}}},\n};\n\n// 0x07019AA0 - 0x07019B90\nstatic const Vtx ccm_seg7_vertex_07019AA0[] = {\n    {{{  3466,    287,  -5105}, 0, {   990,    990}, {0x13, 0x7d, 0x03, 0xff}}},\n    {{{  2840,    434,  -5585}, 0, {    24,    824}, {0x33, 0x6c, 0x29, 0xff}}},\n    {{{  2625,    442,  -5167}, 0, {   -68,   1122}, {0x2d, 0x74, 0x17, 0xff}}},\n    {{{  3503,    278,  -5219}, 0, {   990,    912}, {0x18, 0x7b, 0x0c, 0xff}}},\n    {{{  2758,    515,  -5574}, 0, {   -70,    846}, {0x51, 0x49, 0x3f, 0xff}}},\n    {{{  3530,    638,  -6134}, 0, {  -170,    334}, {0x1a, 0x55, 0x59, 0xff}}},\n    {{{  3080,    576,  -5912}, 0, {   -84,    690}, {0x37, 0x4b, 0x55, 0xff}}},\n    {{{  3192,    427,  -5831}, 0, {    76,    634}, {0x1d, 0x6d, 0x39, 0xff}}},\n    {{{  3080,    576,  -5912}, 0, {   -94,    586}, {0x37, 0x4b, 0x55, 0xff}}},\n    {{{  2758,    515,  -5574}, 0, {   -30,    956}, {0x51, 0x49, 0x3f, 0xff}}},\n    {{{  2840,    434,  -5585}, 0, {    32,    920}, {0x33, 0x6c, 0x29, 0xff}}},\n    {{{  4028,  -3276,   6885}, 0, {     0,    926}, {0xf1, 0x7d, 0xf8, 0xff}}},\n    {{{  4303,  -3276,   6106}, 0, {   990,    990}, {0xf3, 0x7e, 0xfb, 0xff}}},\n    {{{     0,  -3685,   6009}, 0, {     0,  -1658}, {0xf6, 0x7e, 0xfc, 0xff}}},\n    {{{   342,  -3685,   5245}, 0, {   990,  -1552}, {0xf6, 0x7e, 0xf7, 0xff}}},\n};\n\n// 0x07019B90 - 0x07019C80\nstatic const Vtx ccm_seg7_vertex_07019B90[] = {\n    {{{  -871,  -4197,    889}, 0, {   990,   -306}, {0xf9, 0x7e, 0xf7, 0xff}}},\n    {{{  -979,  -4095,   2171}, 0, {     0,    316}, {0xfb, 0x7e, 0xf9, 0xff}}},\n    {{{  -158,  -4095,   1919}, 0, {   990,    478}, {0xff, 0x7e, 0xfd, 0xff}}},\n    {{{ -1440,  -4197,   1506}, 0, {     0,   -192}, {0xf5, 0x7e, 0xf8, 0xff}}},\n    {{{ -5726,  -4812,    443}, 0, {   -34,    612}, {0x06, 0x75, 0xd2, 0xff}}},\n    {{{ -5733,  -4812,   -363}, 0, {   990,    480}, {0xe9, 0x5e, 0x51, 0xff}}},\n    {{{ -6594,  -4863,      7}, 0, {   -18,    172}, {0x09, 0x78, 0xd9, 0xff}}},\n    {{{ -1902,  -4300,    294}, 0, {   990,    246}, {0x02, 0x77, 0x2a, 0xff}}},\n    {{{ -2206,  -4300,   1064}, 0, {     0,    320}, {0x30, 0x75, 0xfd, 0xff}}},\n    {{{ -1440,  -4197,   1506}, 0, {     0,    876}, {0xf5, 0x7e, 0xf8, 0xff}}},\n    {{{  -871,  -4197,    889}, 0, {   990,    990}, {0xf9, 0x7e, 0xf7, 0xff}}},\n    {{{ -4604,  -4709,   -340}, 0, {   990,  -1270}, {0xee, 0x7a, 0x1d, 0xff}}},\n    {{{ -2206,  -4300,   1064}, 0, {     0,    404}, {0x30, 0x75, 0xfd, 0xff}}},\n    {{{ -1902,  -4300,    294}, 0, {   990,    478}, {0x02, 0x77, 0x2a, 0xff}}},\n    {{{ -4679,  -4709,    483}, 0, {     0,  -1200}, {0xfb, 0x6c, 0xbf, 0xff}}},\n};\n\n// 0x07019C80 - 0x07019D60\nstatic const Vtx ccm_seg7_vertex_07019C80[] = {\n    {{{ -4679,  -4709,    483}, 0, {   -38,    450}, {0xfb, 0x6c, 0xbf, 0xff}}},\n    {{{ -4604,  -4709,   -340}, 0, {   990,    480}, {0xee, 0x7a, 0x1d, 0xff}}},\n    {{{ -5726,  -4812,    443}, 0, {   -30,    -72}, {0x06, 0x75, 0xd2, 0xff}}},\n    {{{ -5733,  -4812,   -363}, 0, {   990,     72}, {0xe9, 0x5e, 0x51, 0xff}}},\n    {{{ -1268,  -3849,   4579}, 0, {     0,    -20}, {0x00, 0x7d, 0xee, 0xff}}},\n    {{{  -792,  -3747,   5451}, 0, {     0,    602}, {0xf9, 0x7e, 0xf4, 0xff}}},\n    {{{  -165,  -3788,   4890}, 0, {   990,    480}, {0xfc, 0x7d, 0xed, 0xff}}},\n    {{{ -5733,  -4812,   -363}, 0, {   990,    480}, {0xe9, 0x5e, 0x51, 0xff}}},\n    {{{ -5958,  -4914,   -553}, 0, {   990,    298}, {0xa3, 0x45, 0x33, 0xff}}},\n    {{{ -6594,  -4863,      7}, 0, {   -18,    172}, {0x09, 0x78, 0xd9, 0xff}}},\n    {{{ -6911,  -5523,  -3326}, 0, {   -30,   -606}, {0x2e, 0x47, 0xa2, 0xff}}},\n    {{{ -6911,  -4965,   -626}, 0, {     0,   1106}, {0x34, 0x6e, 0xdd, 0xff}}},\n    {{{ -6092,  -5017,   -820}, 0, {   990,    990}, {0xb4, 0x65, 0x01, 0xff}}},\n    {{{ -6092,  -5523,  -3326}, 0, {   990,   -606}, {0xbf, 0x1f, 0x98, 0xff}}},\n};\n\n// 0x07019D60 - 0x07019E40\nstatic const Vtx ccm_seg7_vertex_07019D60[] = {\n    {{{  -792,  -3747,   5451}, 0, {   -28,    484}, {0xf9, 0x7e, 0xf4, 0xff}}},\n    {{{     0,  -3685,   6009}, 0, {   -34,   1084}, {0xf6, 0x7e, 0xfc, 0xff}}},\n    {{{   342,  -3685,   5245}, 0, {   990,    990}, {0xf6, 0x7e, 0xf7, 0xff}}},\n    {{{  -165,  -3788,   4890}, 0, {   990,    598}, {0xfc, 0x7d, 0xed, 0xff}}},\n    {{{  -448,  -3890,   4370}, 0, {   990,    104}, {0x01, 0x7d, 0xec, 0xff}}},\n    {{{ -1268,  -3849,   4579}, 0, {     0,    -20}, {0x00, 0x7d, 0xee, 0xff}}},\n    {{{  -165,  -3788,   4890}, 0, {   990,    480}, {0xfc, 0x7d, 0xed, 0xff}}},\n    {{{  5957,   -153,  -5473}, 0, {  1032,   -288}, {0x12, 0x77, 0x25, 0xff}}},\n    {{{  6060,      8,  -6014}, 0, {   266,   -382}, {0x10, 0x6c, 0x3f, 0xff}}},\n    {{{  4058,    347,  -5964}, 0, {   186,   1050}, {0x16, 0x70, 0x35, 0xff}}},\n    {{{  -448,  -3993,   3720}, 0, {   990,    580}, {0x02, 0x7d, 0xf0, 0xff}}},\n    {{{ -1268,  -3993,   3587}, 0, {     0,    498}, {0x02, 0x7d, 0xef, 0xff}}},\n    {{{  -448,  -3890,   4370}, 0, {   990,    990}, {0x01, 0x7d, 0xec, 0xff}}},\n    {{{ -1268,  -3849,   4579}, 0, {     0,   1120}, {0x00, 0x7d, 0xee, 0xff}}},\n};\n\n// 0x07019E40 - 0x07019F20\nstatic const Vtx ccm_seg7_vertex_07019E40[] = {\n    {{{  -173,  -4095,   2895}, 0, {   990,    -68}, {0x01, 0x7e, 0xf9, 0xff}}},\n    {{{  -991,  -4095,   2759}, 0, {     0,     12}, {0x01, 0x7e, 0xf9, 0xff}}},\n    {{{  -448,  -3993,   3720}, 0, {   990,    478}, {0x02, 0x7d, 0xf0, 0xff}}},\n    {{{ -1268,  -3993,   3587}, 0, {     0,    562}, {0x02, 0x7d, 0xef, 0xff}}},\n    {{{  3466,    287,  -5105}, 0, {   990,    358}, {0x13, 0x7d, 0x03, 0xff}}},\n    {{{  2598,    358,  -4354}, 0, {   -52,    864}, {0x09, 0x7e, 0xf9, 0xff}}},\n    {{{  3412,    358,  -4153}, 0, {   990,    990}, {0x03, 0x7e, 0xf4, 0xff}}},\n    {{{  2625,    442,  -5167}, 0, {   -64,    340}, {0x2d, 0x74, 0x17, 0xff}}},\n    {{{  6060,      8,  -6014}, 0, {   266,   -382}, {0x10, 0x6c, 0x3f, 0xff}}},\n    {{{  6127,    239,  -6281}, 0, {  -106,   -440}, {0x05, 0x5b, 0x57, 0xff}}},\n    {{{  4060,    569,  -6198}, 0, {  -144,   1038}, {0x13, 0x5b, 0x56, 0xff}}},\n    {{{  4058,    347,  -5964}, 0, {   186,   1050}, {0x16, 0x70, 0x35, 0xff}}},\n    {{{  5957,   -153,  -5473}, 0, {  1032,   -288}, {0x12, 0x77, 0x25, 0xff}}},\n    {{{  4059,    176,  -5372}, 0, {  1034,   1070}, {0x19, 0x77, 0x22, 0xff}}},\n};\n\n// 0x07019F20 - 0x0701A010\nstatic const Vtx ccm_seg7_vertex_07019F20[] = {\n    {{{  6454,    -66,  -5967}, 0, {   190,    228}, {0xff, 0x6e, 0x3d, 0xff}}},\n    {{{  6127,    239,  -6281}, 0, {  -118,    500}, {0x05, 0x5b, 0x57, 0xff}}},\n    {{{  6060,      8,  -6014}, 0, {   264,    506}, {0x10, 0x6c, 0x3f, 0xff}}},\n    {{{  6580,    124,  -6127}, 0, {   -44,    168}, {0xe9, 0x58, 0x57, 0xff}}},\n    {{{  6121,   -182,  -5437}, 0, {  1032,    380}, {0x0a, 0x79, 0x22, 0xff}}},\n    {{{  5957,   -153,  -5473}, 0, {  1032,    498}, {0x12, 0x77, 0x25, 0xff}}},\n    {{{  6792,   -137,  -5770}, 0, {    80,    814}, {0xec, 0x73, 0x31, 0xff}}},\n    {{{  6957,      0,  -5855}, 0, {   -44,    794}, {0xd7, 0x5f, 0x49, 0xff}}},\n    {{{  6580,    124,  -6127}, 0, {   -48,   1082}, {0xe9, 0x58, 0x57, 0xff}}},\n    {{{  7072,  -1123,   -870}, 0, {     0,    476}, {0xfb, 0x7d, 0x10, 0xff}}},\n    {{{  6253,  -1123,   -870}, 0, {   990,    478}, {0x00, 0x7e, 0x0e, 0xff}}},\n    {{{  6255,  -1134,   -469}, 0, {   990,    228}, {0x00, 0x7e, 0x08, 0xff}}},\n    {{{  6454,    -66,  -5967}, 0, {   200,   1062}, {0xff, 0x6e, 0x3d, 0xff}}},\n    {{{  6205,   -197,  -5368}, 0, {  1020,    872}, {0x01, 0x7c, 0x17, 0xff}}},\n    {{{  6121,   -182,  -5437}, 0, {  1026,    942}, {0x0a, 0x79, 0x22, 0xff}}},\n};\n\n// 0x0701A010 - 0x0701A110\nstatic const Vtx ccm_seg7_vertex_0701A010[] = {\n    {{{  7238,   -133,  -5406}, 0, {   -50,    802}, {0xda, 0x71, 0x29, 0xff}}},\n    {{{  6957,      0,  -5855}, 0, {   -48,   1110}, {0xd7, 0x5f, 0x49, 0xff}}},\n    {{{  6792,   -137,  -5770}, 0, {    86,   1104}, {0xec, 0x73, 0x31, 0xff}}},\n    {{{  6993,   -206,  -5375}, 0, {   164,    828}, {0xf2, 0x7b, 0x1b, 0xff}}},\n    {{{  6239,   -206,  -5279}, 0, {  1014,    928}, {0x00, 0x7d, 0x15, 0xff}}},\n    {{{  6205,   -197,  -5368}, 0, {  1016,    990}, {0x01, 0x7c, 0x17, 0xff}}},\n    {{{  7075,  -1134,   -469}, 0, {     0,    226}, {0x00, 0x7e, 0x08, 0xff}}},\n    {{{  7072,  -1123,   -870}, 0, {     0,    476}, {0xfb, 0x7d, 0x10, 0xff}}},\n    {{{  6255,  -1134,   -469}, 0, {   990,    228}, {0x00, 0x7e, 0x08, 0xff}}},\n    {{{ -1822,   2918,  -3789}, 0, {   -40,    560}, {0xf3, 0x7d, 0xf6, 0xff}}},\n    {{{ -1644,   2970,  -3411}, 0, {   -38,    828}, {0xf7, 0x7e, 0xf5, 0xff}}},\n    {{{  -847,   3021,  -3625}, 0, {   990,    990}, {0xf5, 0x7e, 0xf8, 0xff}}},\n    {{{  7075,  -2764,   5366}, 0, {     0,  -1566}, {0xfc, 0x7e, 0x0a, 0xff}}},\n    {{{  7072,  -2378,   1700}, 0, {     0,    990}, {0x00, 0x7d, 0x16, 0xff}}},\n    {{{  6253,  -2378,   1700}, 0, {   990,    990}, {0x00, 0x7d, 0x11, 0xff}}},\n    {{{  6256,  -2764,   5258}, 0, {   990,  -1498}, {0xf8, 0x7d, 0x10, 0xff}}},\n};\n\n// 0x0701A110 - 0x0701A1F0\nstatic const Vtx ccm_seg7_vertex_0701A110[] = {\n    {{{  -752,   3072,  -2986}, 0, {   990,    434}, {0xf8, 0x7d, 0xf3, 0xff}}},\n    {{{ -1582,   3021,  -2989}, 0, {   -40,    514}, {0xfd, 0x7d, 0xed, 0xff}}},\n    {{{  -897,   3185,  -2121}, 0, {   990,    990}, {0x02, 0x7d, 0xee, 0xff}}},\n    {{{ -1691,   3174,  -2337}, 0, {   -40,    938}, {0x04, 0x7c, 0xe8, 0xff}}},\n    {{{  -847,   3021,  -3625}, 0, {   990,     72}, {0xf5, 0x7e, 0xf8, 0xff}}},\n    {{{ -1644,   2970,  -3411}, 0, {   -38,    130}, {0xf7, 0x7e, 0xf5, 0xff}}},\n    {{{  -752,   3072,  -2986}, 0, {   990,    480}, {0xf8, 0x7d, 0xf3, 0xff}}},\n    {{{ -1582,   3021,  -2989}, 0, {   -38,    398}, {0xfd, 0x7d, 0xed, 0xff}}},\n    {{{ -4020,   2458,  -4385}, 0, {     0,    326}, {0xf0, 0x7d, 0x0d, 0xff}}},\n    {{{ -3215,   2611,  -4597}, 0, {   -34,    854}, {0xec, 0x7d, 0x03, 0xff}}},\n    {{{ -3221,   2662,  -5447}, 0, {   990,    990}, {0xef, 0x7d, 0x0a, 0xff}}},\n    {{{ -1093,   2970,  -4218}, 0, {   990,    588}, {0xf0, 0x7d, 0xf9, 0xff}}},\n    {{{ -1822,   2918,  -3789}, 0, {   -38,    658}, {0xf3, 0x7d, 0xf6, 0xff}}},\n    {{{  -847,   3021,  -3625}, 0, {   990,    982}, {0xf5, 0x7e, 0xf8, 0xff}}},\n};\n\n// 0x0701A1F0 - 0x0701A2D0\nstatic const Vtx ccm_seg7_vertex_0701A1F0[] = {\n    {{{ -2412,   2765,  -4379}, 0, {     0,    326}, {0xed, 0x7d, 0xf9, 0xff}}},\n    {{{ -1822,   2918,  -3789}, 0, {     0,    854}, {0xf3, 0x7d, 0xf6, 0xff}}},\n    {{{ -1093,   2970,  -4218}, 0, {   990,    990}, {0xf0, 0x7d, 0xf9, 0xff}}},\n    {{{ -1992,   2816,  -5118}, 0, {   990,    190}, {0xed, 0x7d, 0x00, 0xff}}},\n    {{{ -3215,   2611,  -4597}, 0, {     0,    326}, {0xec, 0x7d, 0x03, 0xff}}},\n    {{{ -2412,   2765,  -4379}, 0, {   -34,    854}, {0xed, 0x7d, 0xf9, 0xff}}},\n    {{{ -1992,   2816,  -5118}, 0, {   990,    990}, {0xed, 0x7d, 0x00, 0xff}}},\n    {{{ -3221,   2662,  -5447}, 0, {   990,    190}, {0xef, 0x7d, 0x0a, 0xff}}},\n    {{{ -4450,   2509,  -5118}, 0, {   990,    190}, {0xf7, 0x7d, 0x11, 0xff}}},\n    {{{ -4020,   2458,  -4385}, 0, {     0,    326}, {0xf0, 0x7d, 0x0d, 0xff}}},\n    {{{ -3221,   2662,  -5447}, 0, {   990,    990}, {0xef, 0x7d, 0x0a, 0xff}}},\n    {{{ -4450,   1894,   -861}, 0, {   990,    190}, {0x05, 0x7e, 0xf9, 0xff}}},\n    {{{ -4030,   1843,  -1600}, 0, {     0,    326}, {0x11, 0x7d, 0x05, 0xff}}},\n    {{{ -5350,   2048,  -1761}, 0, {   990,    990}, {0x37, 0x71, 0xf4, 0xff}}},\n};\n\n// 0x0701A2D0 - 0x0701A3C0\nstatic const Vtx ccm_seg7_vertex_0701A2D0[] = {\n    {{{ -4610,   2304,  -3799}, 0, {     0,    326}, {0xf9, 0x7d, 0x13, 0xff}}},\n    {{{ -4020,   2458,  -4385}, 0, {   -34,    854}, {0xf0, 0x7d, 0x0d, 0xff}}},\n    {{{ -4450,   2509,  -5118}, 0, {   990,    990}, {0xf7, 0x7d, 0x11, 0xff}}},\n    {{{ -5350,   2355,  -4218}, 0, {   990,    190}, {0x48, 0x67, 0xfb, 0xff}}},\n    {{{ -5679,   2202,  -2989}, 0, {   990,   -320}, {0x37, 0x71, 0x0a, 0xff}}},\n    {{{ -4829,   2150,  -2983}, 0, {     0,   -192}, {0x03, 0x7d, 0x14, 0xff}}},\n    {{{ -5350,   2355,  -4218}, 0, {   990,    478}, {0x48, 0x67, 0xfb, 0xff}}},\n    {{{ -4610,   2304,  -3799}, 0, {   -34,    342}, {0xf9, 0x7d, 0x13, 0xff}}},\n    {{{ -5350,   2048,  -1761}, 0, {   990,    190}, {0x37, 0x71, 0xf4, 0xff}}},\n    {{{ -4617,   1997,  -2191}, 0, {     0,    326}, {0x0d, 0x7d, 0x10, 0xff}}},\n    {{{ -5679,   2202,  -2989}, 0, {   990,    990}, {0x37, 0x71, 0x0a, 0xff}}},\n    {{{ -4829,   2150,  -2983}, 0, {     0,    846}, {0x03, 0x7d, 0x14, 0xff}}},\n    {{{  -173,   1024,   -719}, 0, {   990,   -966}, {0x15, 0x7d, 0xfc, 0xff}}},\n    {{{  -254,   1024,  -1541}, 0, {   -38,   -948}, {0x1a, 0x7c, 0xff, 0xff}}},\n    {{{ -3221,   1741,   -531}, 0, {   990,    990}, {0x36, 0x6d, 0xdd, 0xff}}},\n};\n\n// 0x0701A3C0 - 0x0701A4B0\nstatic const Vtx ccm_seg7_vertex_0701A3C0[] = {\n    {{{ -4030,   1843,  -1600}, 0, {     0,    326}, {0x11, 0x7d, 0x05, 0xff}}},\n    {{{ -4617,   1997,  -2191}, 0, {   -34,    854}, {0x0d, 0x7d, 0x10, 0xff}}},\n    {{{ -5350,   2048,  -1761}, 0, {   990,    990}, {0x37, 0x71, 0xf4, 0xff}}},\n    {{{ -3212,   1741,  -1352}, 0, {     0,   -192}, {0x14, 0x7d, 0x00, 0xff}}},\n    {{{ -4030,   1843,  -1600}, 0, {   -34,    342}, {0x11, 0x7d, 0x05, 0xff}}},\n    {{{ -4450,   1894,   -861}, 0, {   988,    422}, {0x05, 0x7e, 0xf9, 0xff}}},\n    {{{ -3221,   1741,   -531}, 0, {   990,   -344}, {0x36, 0x6d, 0xdd, 0xff}}},\n    {{{ -3212,   1741,  -1352}, 0, {     0,   -214}, {0x14, 0x7d, 0x00, 0xff}}},\n    {{{ -4450,   1894,   -861}, 0, {   990,    480}, {0x05, 0x7e, 0xf9, 0xff}}},\n    {{{  -254,   1024,  -1541}, 0, {   -38,   -948}, {0x1a, 0x7c, 0xff, 0xff}}},\n    {{{ -3212,   1741,  -1352}, 0, {     0,    954}, {0x14, 0x7d, 0x00, 0xff}}},\n    {{{ -3221,   1741,   -531}, 0, {   990,    990}, {0x36, 0x6d, 0xdd, 0xff}}},\n    {{{  3412,    358,  -4153}, 0, {   990,     20}, {0x03, 0x7e, 0xf4, 0xff}}},\n    {{{  2598,    358,  -4354}, 0, {   -54,     16}, {0x09, 0x7e, 0xf9, 0xff}}},\n    {{{  3052,    563,  -2654}, 0, {   990,    990}, {0x06, 0x7d, 0xf1, 0xff}}},\n};\n\n// 0x0701A4B0 - 0x0701A590\nstatic const Vtx ccm_seg7_vertex_0701A4B0[] = {\n    {{{  1218,    768,  -1980}, 0, {   -44,    -72}, {0x11, 0x7d, 0xfa, 0xff}}},\n    {{{  -254,   1024,  -1541}, 0, {   -38,    916}, {0x1a, 0x7c, 0xff, 0xff}}},\n    {{{  -173,   1024,   -719}, 0, {   990,   1024}, {0x15, 0x7d, 0xfc, 0xff}}},\n    {{{  1649,    768,  -1238}, 0, {   990,   -204}, {0x0c, 0x7e, 0xf7, 0xff}}},\n    {{{  -173,   1024,   -719}, 0, {   990,    990}, {0x15, 0x7d, 0xfc, 0xff}}},\n    {{{  2293,    563,  -3038}, 0, {   -48,    -98}, {0x0a, 0x7d, 0xf4, 0xff}}},\n    {{{  1218,    768,  -1980}, 0, {   -42,    852}, {0x11, 0x7d, 0xfa, 0xff}}},\n    {{{  1649,    768,  -1238}, 0, {   994,    958}, {0x0c, 0x7e, 0xf7, 0xff}}},\n    {{{  3052,    563,  -2654}, 0, {   990,   -292}, {0x06, 0x7d, 0xf1, 0xff}}},\n    {{{  2293,    563,  -3038}, 0, {   -44,   -126}, {0x0a, 0x7d, 0xf4, 0xff}}},\n    {{{  1649,    768,  -1238}, 0, {   990,    990}, {0x0c, 0x7e, 0xf7, 0xff}}},\n    {{{ -1088,   3226,  -1622}, 0, {   990,    726}, {0x09, 0x7d, 0xf3, 0xff}}},\n    {{{ -1849,   3379,   -920}, 0, {   -42,   1130}, {0x09, 0x7d, 0xee, 0xff}}},\n    {{{ -1052,   3277,  -1208}, 0, {   990,    990}, {0x02, 0x7d, 0xea, 0xff}}},\n};\n\n// 0x0701A590 - 0x0701A680\nstatic const Vtx ccm_seg7_vertex_0701A590[] = {\n    {{{  2598,    358,  -4354}, 0, {   -54,     16}, {0x09, 0x7e, 0xf9, 0xff}}},\n    {{{  2293,    563,  -3038}, 0, {   -42,    868}, {0x0a, 0x7d, 0xf4, 0xff}}},\n    {{{  3052,    563,  -2654}, 0, {   990,    990}, {0x06, 0x7d, 0xf1, 0xff}}},\n    {{{  5132,   4289,  -1404}, 0, {    -8,   -370}, {0xf4, 0x7e, 0x00, 0xff}}},\n    {{{  6764,   4506,  -3013}, 0, {     0,   1048}, {0xe5, 0x7b, 0xf8, 0xff}}},\n    {{{  6582,   4457,  -3145}, 0, {   246,   1030}, {0xeb, 0x7d, 0xfb, 0xff}}},\n    {{{  4545,   4276,  -2227}, 0, {   990,   -262}, {0xf6, 0x7e, 0x01, 0xff}}},\n    {{{  5839,   4360,  -3683}, 0, {   990,    990}, {0xf3, 0x7e, 0xfb, 0xff}}},\n    {{{  2106,   4086,   -872}, 0, {   990,   -742}, {0xf9, 0x7e, 0x02, 0xff}}},\n    {{{  2334,   4086,    -78}, 0, {   -10,   -804}, {0xf8, 0x7e, 0x02, 0xff}}},\n    {{{  5132,   4289,  -1404}, 0, {    -8,   1096}, {0xf4, 0x7e, 0x00, 0xff}}},\n    {{{  4545,   4276,  -2227}, 0, {   990,    990}, {0xf6, 0x7e, 0x01, 0xff}}},\n    {{{  6168,   4665,  -6160}, 0, {   218,    438}, {0x04, 0x7c, 0x19, 0xff}}},\n    {{{  6256,   4710,  -6343}, 0, {   -26,    402}, {0xf7, 0x7a, 0x1f, 0xff}}},\n    {{{  5342,   4768,  -6710}, 0, {     0,    990}, {0x0d, 0x7d, 0x0f, 0xff}}},\n};\n\n// 0x0701A680 - 0x0701A770\nstatic const Vtx ccm_seg7_vertex_0701A680[] = {\n    {{{ -1088,   3226,  -1622}, 0, {   990,    726}, {0x09, 0x7d, 0xf3, 0xff}}},\n    {{{ -1921,   3277,  -1739}, 0, {   -42,    612}, {0x07, 0x7d, 0xf2, 0xff}}},\n    {{{ -1849,   3379,   -920}, 0, {   -42,   1130}, {0x09, 0x7d, 0xee, 0xff}}},\n    {{{  -897,   3185,  -2121}, 0, {   990,    140}, {0x02, 0x7d, 0xee, 0xff}}},\n    {{{ -1691,   3174,  -2337}, 0, {   -42,    192}, {0x04, 0x7c, 0xe8, 0xff}}},\n    {{{ -1921,   3277,  -1739}, 0, {   -44,    602}, {0x07, 0x7d, 0xf2, 0xff}}},\n    {{{ -1088,   3226,  -1622}, 0, {   990,    480}, {0x09, 0x7d, 0xf3, 0xff}}},\n    {{{  5188,   4715,  -5317}, 0, {   990,      0}, {0x1a, 0x7c, 0x05, 0xff}}},\n    {{{  3825,   5012,  -6962}, 0, {     0,    990}, {0x18, 0x7c, 0x02, 0xff}}},\n    {{{  3825,   5012,  -5324}, 0, {   990,    990}, {0x1a, 0x7c, 0x00, 0xff}}},\n    {{{  5342,   4768,  -6710}, 0, {     0,    -96}, {0x0d, 0x7d, 0x0f, 0xff}}},\n    {{{  5731,   4559,  -5260}, 0, {   990,    560}, {0x17, 0x7b, 0x12, 0xff}}},\n    {{{  6168,   4665,  -6160}, 0, {   218,    438}, {0x04, 0x7c, 0x19, 0xff}}},\n    {{{  5342,   4768,  -6710}, 0, {     0,    990}, {0x0d, 0x7d, 0x0f, 0xff}}},\n    {{{  5188,   4715,  -5317}, 0, {   990,    990}, {0x1a, 0x7c, 0x05, 0xff}}},\n};\n\n// 0x0701A770 - 0x0701A870\nstatic const Vtx ccm_seg7_vertex_0701A770[] = {\n    {{{  6707,   4565,  -5611}, 0, {   324,    230}, {0xf4, 0x7b, 0x1a, 0xff}}},\n    {{{  6945,   4659,  -5784}, 0, {     0,    162}, {0xe2, 0x78, 0x1b, 0xff}}},\n    {{{  6256,   4710,  -6343}, 0, {   -26,   1248}, {0xf7, 0x7a, 0x1f, 0xff}}},\n    {{{  6168,   4665,  -6160}, 0, {   220,   1180}, {0x04, 0x7c, 0x19, 0xff}}},\n    {{{  5985,   4453,  -5088}, 0, {   990,    388}, {0x0a, 0x7b, 0x1b, 0xff}}},\n    {{{  5731,   4559,  -5260}, 0, {   990,    990}, {0x17, 0x7b, 0x12, 0xff}}},\n    {{{  6978,   4508,  -4924}, 0, {   314,    626}, {0xe5, 0x7b, 0x0d, 0xff}}},\n    {{{  6945,   4659,  -5784}, 0, {     0,   1136}, {0xe2, 0x78, 0x1b, 0xff}}},\n    {{{  6707,   4565,  -5611}, 0, {   326,   1080}, {0xf4, 0x7b, 0x1a, 0xff}}},\n    {{{  6128,   4376,  -4766}, 0, {   990,    680}, {0xf5, 0x7d, 0x11, 0xff}}},\n    {{{  7255,   4608,  -4975}, 0, {   -36,    602}, {0xd8, 0x77, 0x0b, 0xff}}},\n    {{{  5985,   4453,  -5088}, 0, {   990,    990}, {0x0a, 0x7b, 0x1b, 0xff}}},\n    {{{  6977,   4464,  -4141}, 0, {   318,    570}, {0xe4, 0x7b, 0x00, 0xff}}},\n    {{{  7255,   4557,  -4080}, 0, {   -36,    536}, {0xdd, 0x79, 0xfc, 0xff}}},\n    {{{  7255,   4608,  -4975}, 0, {   -36,   1088}, {0xd8, 0x77, 0x0b, 0xff}}},\n    {{{  6978,   4508,  -4924}, 0, {   316,   1052}, {0xe5, 0x7b, 0x0d, 0xff}}},\n};\n\n// 0x0701A870 - 0x0701A970\nstatic const Vtx ccm_seg7_vertex_0701A870[] = {\n    {{{  6135,   4354,  -4325}, 0, {   990,    642}, {0xf0, 0x7d, 0x01, 0xff}}},\n    {{{  6977,   4464,  -4141}, 0, {   318,    570}, {0xe4, 0x7b, 0x00, 0xff}}},\n    {{{  6978,   4508,  -4924}, 0, {   316,   1052}, {0xe5, 0x7b, 0x0d, 0xff}}},\n    {{{  6128,   4376,  -4766}, 0, {   990,    990}, {0xf5, 0x7d, 0x11, 0xff}}},\n    {{{  6582,   4457,  -3145}, 0, {   248,    402}, {0xeb, 0x7d, 0xfb, 0xff}}},\n    {{{  6764,   4506,  -3013}, 0, {   -30,    374}, {0xe5, 0x7b, 0xf8, 0xff}}},\n    {{{  7255,   4557,  -4080}, 0, {   -36,   1098}, {0xdd, 0x79, 0xfc, 0xff}}},\n    {{{  6977,   4464,  -4141}, 0, {   316,   1062}, {0xe4, 0x7b, 0x00, 0xff}}},\n    {{{  5839,   4360,  -3683}, 0, {   990,    476}, {0xf3, 0x7e, 0xfb, 0xff}}},\n    {{{  1246,   5557,  -5324}, 0, {   990,      0}, {0x11, 0x7d, 0x00, 0xff}}},\n    {{{  1246,   5557,  -6962}, 0, {     0,      0}, {0x15, 0x7d, 0x00, 0xff}}},\n    {{{  1023,   5580,  -6962}, 0, {     0,     42}, {0x10, 0x7d, 0x00, 0xff}}},\n    {{{  6135,   4354,  -4325}, 0, {   990,    990}, {0xf0, 0x7d, 0x01, 0xff}}},\n    {{{ -1196,   6023,  -5324}, 0, {   990,      0}, {0x11, 0x7d, 0x00, 0xff}}},\n    {{{ -1196,   6023,  -6962}, 0, {     0,      0}, {0x15, 0x7d, 0x00, 0xff}}},\n    {{{ -1478,   6054,  -6962}, 0, {     0,    130}, {0x0a, 0x7e, 0x00, 0xff}}},\n};\n\n// 0x0701A970 - 0x0701AA60\nstatic const Vtx ccm_seg7_vertex_0701A970[] = {\n    {{{ -1196,   6023,  -5324}, 0, {   990,      0}, {0x11, 0x7d, 0x00, 0xff}}},\n    {{{ -1478,   6054,  -6962}, 0, {     0,    130}, {0x0a, 0x7e, 0x00, 0xff}}},\n    {{{ -1478,   6054,  -5324}, 0, {   990,    130}, {0x07, 0x7e, 0x00, 0xff}}},\n    {{{  1023,   5580,  -5324}, 0, {   990,     42}, {0x14, 0x7d, 0x00, 0xff}}},\n    {{{  1023,   5580,  -6962}, 0, {     0,     42}, {0x10, 0x7d, 0x00, 0xff}}},\n    {{{ -1196,   6023,  -6962}, 0, {     0,    990}, {0x15, 0x7d, 0x00, 0xff}}},\n    {{{ -1196,   6023,  -5324}, 0, {   990,    990}, {0x11, 0x7d, 0x00, 0xff}}},\n    {{{  1246,   5557,  -5324}, 0, {   990,      0}, {0x11, 0x7d, 0x00, 0xff}}},\n    {{{ -4709,   6615,  -5733}, 0, {   990,    792}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4709,   6615,  -6553}, 0, {     0,    792}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4709,   6656,  -6553}, 0, {     0,    850}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3825,   5012,  -5324}, 0, {   990,      0}, {0x1a, 0x7c, 0x00, 0xff}}},\n    {{{  3825,   5012,  -6962}, 0, {     0,      0}, {0x18, 0x7c, 0x02, 0xff}}},\n    {{{  1246,   5557,  -6962}, 0, {     0,    990}, {0x15, 0x7d, 0x00, 0xff}}},\n    {{{  1246,   5557,  -5324}, 0, {   990,    990}, {0x11, 0x7d, 0x00, 0xff}}},\n};\n\n// 0x0701AA60 - 0x0701AB50\nstatic const Vtx ccm_seg7_vertex_0701AA60[] = {\n    {{{ -4141,   6427,  -6962}, 0, {     0,    588}, {0x1a, 0x7c, 0x00, 0xff}}},\n    {{{ -4141,   6427,  -5324}, 0, {   990,    588}, {0x21, 0x7a, 0x00, 0xff}}},\n    {{{ -1987,   6077,  -5324}, 0, {   990,      0}, {0x10, 0x7d, 0x00, 0xff}}},\n    {{{ -4709,   6615,  -6962}, 0, {     0,    792}, {0x27, 0x78, 0x00, 0xff}}},\n    {{{ -4709,   6615,  -5324}, 0, {   990,    792}, {0x27, 0x78, 0x00, 0xff}}},\n    {{{ -4709,   6615,  -5733}, 0, {   990,    792}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4709,   6656,  -6553}, 0, {     0,    850}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4709,   6656,  -5733}, 0, {   990,    850}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1844,   6067,  -6962}, 0, {     0,    566}, {0x05, 0x7e, 0x00, 0xff}}},\n    {{{ -1478,   6054,  -5324}, 0, {   990,    130}, {0x07, 0x7e, 0x00, 0xff}}},\n    {{{ -1478,   6054,  -6962}, 0, {     0,    130}, {0x0a, 0x7e, 0x00, 0xff}}},\n    {{{ -1987,   6077,  -6962}, 0, {     0,      0}, {0x0c, 0x7e, 0x00, 0xff}}},\n    {{{ -1987,   6077,  -6962}, 0, {     0,    990}, {0x0c, 0x7e, 0x00, 0xff}}},\n    {{{ -1987,   6077,  -5324}, 0, {   990,    990}, {0x10, 0x7d, 0x00, 0xff}}},\n    {{{ -1844,   6067,  -5324}, 0, {   990,    566}, {0x07, 0x7e, 0x00, 0xff}}},\n};\n\n// 0x0701AB50 - 0x0701AC50\nstatic const Vtx ccm_seg7_vertex_0701AB50[] = {\n    {{{ -5784,  -4198,  -3326}, 0, {   990,     68}, {0xac, 0xac, 0xd6, 0xff}}},\n    {{{ -5784,  -4197,  -6143}, 0, { -1052,     68}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{ -5784,  -8191,  -6143}, 0, { -1052,   2012}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -7167,  -4197,  -3326}, 0, {   990,     68}, {0x33, 0xcd, 0x99, 0xff}}},\n    {{{ -6911,  -4197,  -3326}, 0, {   800,     68}, {0x69, 0xcc, 0xd1, 0xff}}},\n    {{{ -6911,  -5523,  -3326}, 0, {   800,    712}, {0x2e, 0x47, 0xa2, 0xff}}},\n    {{{ -7167,  -8191,  -3326}, 0, {   990,   2012}, {0x46, 0x00, 0x97, 0xff}}},\n    {{{ -6092,  -5523,  -3326}, 0, {   196,    712}, {0xbf, 0x1f, 0x98, 0xff}}},\n    {{{ -5784,  -8191,  -3326}, 0, {     0,   2012}, {0xd8, 0x00, 0x88, 0xff}}},\n    {{{ -6092,  -4198,  -3326}, 0, {   196,     68}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{ -5784,  -4198,  -3326}, 0, {     0,     68}, {0xac, 0xac, 0xd6, 0xff}}},\n    {{{ -7167,  -8191,  -3326}, 0, {     0,   2012}, {0x46, 0x00, 0x97, 0xff}}},\n    {{{ -7167,  -8191,  -6143}, 0, {  2012,   2012}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -7167,  -4197,  -6143}, 0, {  2012,     68}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{ -7167,  -4197,  -3326}, 0, {     0,     68}, {0x33, 0xcd, 0x99, 0xff}}},\n    {{{ -5784,  -8191,  -3326}, 0, {   990,   2012}, {0xd8, 0x00, 0x88, 0xff}}},\n};\n\n// 0x0701AC50 - 0x0701AD40\nstatic const Vtx ccm_seg7_vertex_0701AC50[] = {\n    {{{ -3221,  -8191,   -531}, 0, {   -10,   2012}, {0x76, 0x00, 0xd3, 0xff}}},\n    {{{ -4665,   1946,  -2162}, 0, {   476,    748}, {0x6e, 0x00, 0xc1, 0xff}}},\n    {{{ -3221,   1690,   -531}, 0, {   -10,    780}, {0x5f, 0x00, 0xac, 0xff}}},\n    {{{ -4665,  -8191,  -2162}, 0, {   476,   2012}, {0x6e, 0x00, 0xc1, 0xff}}},\n    {{{ -3221,   1849,   -422}, 0, {     0,    760}, {0x5b, 0x16, 0xab, 0xff}}},\n    {{{ -3221,  -8191,   -422}, 0, {     0,   2012}, {0x66, 0x00, 0xb5, 0xff}}},\n    {{{ -3221,   1741,   -531}, 0, {   -10,    772}, {0x36, 0x6d, 0xdd, 0xff}}},\n    {{{ -5350,  -8191,  -4218}, 0, {   962,   2012}, {0x73, 0x00, 0xcb, 0xff}}},\n    {{{ -5350,   2304,  -4218}, 0, {   962,    704}, {0x78, 0x00, 0xd8, 0xff}}},\n    {{{ -5425,  -8191,  -4316}, 0, {   990,   2012}, {0x72, 0x00, 0xcb, 0xff}}},\n    {{{ -5350,   2355,  -4218}, 0, {   962,    696}, {0x48, 0x67, 0xfb, 0xff}}},\n    {{{  1383,   8192,  -8191}, 0, {  2012,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5425,      0,  -8191}, 0, {     0,    988}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1383,      0,  -8191}, 0, {  2012,    988}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5425,   2476,  -4316}, 0, {   990,    680}, {0x7e, 0x0c, 0x03, 0xff}}},\n};\n\n// 0x0701AD40 - 0x0701AE40\nstatic const Vtx ccm_seg7_vertex_0701AD40[] = {\n    {{{ -5425,      0,  -8191}, 0, {   990,    988}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -5425,   6572,  -4316}, 0, {     0,    172}, {0x7e, 0x00, 0xf4, 0xff}}},\n    {{{ -5425,   2476,  -4316}, 0, {     0,    680}, {0x7e, 0x0c, 0x03, 0xff}}},\n    {{{ -5425,  -8191,  -8191}, 0, {   990,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -5425,   6572,  -8191}, 0, {   990,    172}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -5425,  -8191,  -4316}, 0, {     0,   2012}, {0x72, 0x00, 0xcb, 0xff}}},\n    {{{  1383,   8192,  -8191}, 0, {  2012,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5425,   8192,  -8191}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5425,      0,  -8191}, 0, {     0,    988}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  8192,      0,  -8191}, 0, {  4056,    988}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1383,      0,  -8191}, 0, {  2012,    988}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  8192,   8192,  -8191}, 0, {  4056,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5013,   3082,  -2989}, 0, {   680,    604}, {0x69, 0xc3, 0xdd, 0xff}}},\n    {{{ -4773,   6572,  -2093}, 0, {   474,    172}, {0x73, 0x00, 0xcb, 0xff}}},\n    {{{ -4773,   2928,  -2093}, 0, {   474,    624}, {0x4b, 0xb1, 0xc0, 0xff}}},\n    {{{ -5425,  -8191,  -8191}, 0, {     0,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x0701AE40 - 0x0701AF40\nstatic const Vtx ccm_seg7_vertex_0701AE40[] = {\n    {{{  1383,  -8191,  -8191}, 0, {  2012,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  8192,      0,  -8191}, 0, {  4056,    988}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1383,      0,  -8191}, 0, {  2012,    988}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5425,  -8191,  -8191}, 0, {     0,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  8192,  -8191,  -8191}, 0, {  4056,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4773,   2928,  -2093}, 0, {   474,    624}, {0x4b, 0xb1, 0xc0, 0xff}}},\n    {{{ -4104,   6572,  -1432}, 0, {   268,    172}, {0x5b, 0x00, 0xa8, 0xff}}},\n    {{{ -4104,   2774,  -1432}, 0, {   268,    644}, {0x3e, 0xb0, 0xb4, 0xff}}},\n    {{{ -3221,   6572,   -422}, 0, {     0,    172}, {0x44, 0x00, 0x96, 0xff}}},\n    {{{ -3221,   2464,   -422}, 0, {     0,    684}, {0x34, 0xcb, 0x9a, 0xff}}},\n    {{{ -4773,   6572,  -2093}, 0, {   474,    172}, {0x73, 0x00, 0xcb, 0xff}}},\n    {{{ -1864,  -8191,    199}, 0, {   428,   2012}, {0x78, 0x00, 0x26, 0xff}}},\n    {{{ -1864,  -4197,    199}, 0, {   428,   1512}, {0x08, 0x1d, 0x7b, 0xff}}},\n    {{{ -1902,  -4300,    294}, 0, {   404,   1528}, {0x02, 0x77, 0x2a, 0xff}}},\n    {{{ -5013,   3082,  -2989}, 0, {   680,    604}, {0x69, 0xc3, 0xdd, 0xff}}},\n    {{{ -5013,   6572,  -2989}, 0, {   680,    172}, {0x79, 0x00, 0xdc, 0xff}}},\n};\n\n// 0x0701AF40 - 0x0701B040\nstatic const Vtx ccm_seg7_vertex_0701AF40[] = {\n    {{{ -5425,   3091,  -4316}, 0, {   990,    604}, {0x78, 0xda, 0xf1, 0xff}}},\n    {{{ -5013,   6572,  -2989}, 0, {   680,    172}, {0x79, 0x00, 0xdc, 0xff}}},\n    {{{ -5013,   3082,  -2989}, 0, {   680,    604}, {0x69, 0xc3, 0xdd, 0xff}}},\n    {{{ -5425,   6572,  -4316}, 0, {   990,    172}, {0x7e, 0x00, 0xf4, 0xff}}},\n    {{{ -1844,  -8191,     -2}, 0, {   480,   2012}, {0x69, 0x00, 0xba, 0xff}}},\n    {{{ -3221,   6572,   -422}, 0, {   838,    172}, {0x44, 0x00, 0x96, 0xff}}},\n    {{{ -1844,   6572,     -2}, 0, {   478,    172}, {0x69, 0x00, 0xba, 0xff}}},\n    {{{ -3221,  -8191,   -422}, 0, {   838,   2012}, {0x66, 0x00, 0xb5, 0xff}}},\n    {{{ -1864,   6572,    199}, 0, {   428,    172}, {0x79, 0x00, 0x23, 0xff}}},\n    {{{ -1864,  -8191,    199}, 0, {   428,   2012}, {0x78, 0x00, 0x26, 0xff}}},\n    {{{ -5027,  -8191,   8192}, 0, { -1564,   2012}, {0x76, 0x00, 0x2e, 0xff}}},\n    {{{ -2206,  -4300,   1064}, 0, {   212,   1528}, {0x30, 0x75, 0xfd, 0xff}}},\n    {{{ -2244,  -3583,   1159}, 0, {   190,   1436}, {0x7c, 0xe7, 0x01, 0xff}}},\n    {{{ -5027,   6572,   8192}, 0, { -1564,    172}, {0x76, 0x00, 0x2e, 0xff}}},\n    {{{ -2244,  -4197,   1159}, 0, {   190,   1512}, {0x4f, 0x2e, 0xa9, 0xff}}},\n    {{{ -2149,  -3429,    919}, 0, {   248,   1416}, {0x56, 0xa4, 0xfc, 0xff}}},\n};\n\n// 0x0701B040 - 0x0701B0E0\nstatic const Vtx ccm_seg7_vertex_0701B040[] = {\n    {{{ -2149,  -3429,    919}, 0, {   248,   1416}, {0x56, 0xa4, 0xfc, 0xff}}},\n    {{{ -1959,  -3429,    439}, 0, {   368,   1416}, {0x48, 0xa2, 0x2d, 0xff}}},\n    {{{ -1864,   6572,    199}, 0, {   428,    172}, {0x79, 0x00, 0x23, 0xff}}},\n    {{{ -1864,  -3583,    199}, 0, {   428,   1436}, {0x1d, 0xb9, 0x64, 0xff}}},\n    {{{ -2206,  -4300,   1064}, 0, {   212,   1528}, {0x30, 0x75, 0xfd, 0xff}}},\n    {{{ -2244,  -4197,   1159}, 0, {   190,   1512}, {0x4f, 0x2e, 0xa9, 0xff}}},\n    {{{ -5027,  -8191,   8192}, 0, { -1564,   2012}, {0x76, 0x00, 0x2e, 0xff}}},\n    {{{ -2198,  -4399,   1042}, 0, {   218,   1540}, {0x76, 0x00, 0x2e, 0xff}}},\n    {{{ -1864,  -8191,    199}, 0, {   428,   2012}, {0x78, 0x00, 0x26, 0xff}}},\n    {{{ -1901,  -4402,    291}, 0, {   406,   1540}, {0x76, 0x00, 0x2e, 0xff}}},\n};\n\n// 0x0701B0E0 - 0x0701B128\nstatic const Gfx ccm_seg7_dl_0701B0E0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ccm_seg7_lights_07016718.l, 1),\n    gsSPLight(&ccm_seg7_lights_07016718.a, 2),\n    gsSPVertex(ccm_seg7_vertex_07016730, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701B128 - 0x0701C5C8\nstatic const Gfx ccm_seg7_dl_0701B128[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09002800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ccm_seg7_vertex_07016770, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 5,  3,  4, 0x0,  3,  6,  7, 0x0),\n    gsSP2Triangles( 0,  3,  7, 0x0,  8,  6,  3, 0x0),\n    gsSP2Triangles( 0,  7,  1, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12,  8,  3, 0x0,  0,  2, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07016850, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  3,  9, 10, 0x0),\n    gsSP2Triangles( 4,  3, 10, 0x0, 11, 12,  9, 0x0),\n    gsSP2Triangles(10,  9, 12, 0x0, 13, 12, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 15, 14, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07016950, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  8,  7, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0, 12,  4,  3, 0x0),\n    gsSP2Triangles(13, 12,  3, 0x0, 14, 15, 12, 0x0),\n    gsSP1Triangle(14, 12, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07016A50, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  8,  2, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0, 10, 11,  7, 0x0),\n    gsSP2Triangles(10,  7,  6, 0x0,  2,  1, 12, 0x0),\n    gsSP2Triangles( 9,  2, 13, 0x0, 13,  2,  3, 0x0),\n    gsSP2Triangles( 2, 12,  3, 0x0,  3, 12,  4, 0x0),\n    gsSP2Triangles(13,  3, 14, 0x0, 14,  3,  5, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07016B40, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  7, 0x0,  8,  3,  6, 0x0),\n    gsSP2Triangles( 3,  5,  7, 0x0,  7,  5,  9, 0x0),\n    gsSP2Triangles(10,  7, 11, 0x0,  6,  7, 10, 0x0),\n    gsSP2Triangles( 7,  9, 11, 0x0, 11,  9,  1, 0x0),\n    gsSP2Triangles(12, 11,  0, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(11,  1,  0, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07016C40, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 0,  2,  6, 0x0,  6,  2,  7, 0x0),\n    gsSP2Triangles( 2,  5,  7, 0x0,  7,  5,  8, 0x0),\n    gsSP2Triangles( 6,  7,  9, 0x0,  9,  7, 10, 0x0),\n    gsSP2Triangles( 7,  8, 10, 0x0, 10,  8, 11, 0x0),\n    gsSP2Triangles(12, 10, 13, 0x0,  9, 10, 12, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07016D20, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  7,  6, 0x0),\n    gsSP2Triangles( 7, 10,  0, 0x0,  7,  0,  8, 0x0),\n    gsSP2Triangles( 9, 11,  7, 0x0, 11, 10,  7, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0,  8,  0, 12, 0x0),\n    gsSP2Triangles(10,  1,  0, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07016E20, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  3, 0x0),\n    gsSP2Triangles( 3,  8,  4, 0x0,  5,  4,  9, 0x0),\n    gsSP2Triangles( 4, 10,  9, 0x0,  8, 11,  4, 0x0),\n    gsSP2Triangles( 4, 11, 10, 0x0, 10, 12, 13, 0x0),\n    gsSP2Triangles( 9, 10, 13, 0x0, 10, 14, 12, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07016F10, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  5,  4,  0, 0x0),\n    gsSP2Triangles( 1,  6,  7, 0x0,  2,  1,  7, 0x0),\n    gsSP2Triangles( 4,  8,  1, 0x0,  1,  8,  6, 0x0),\n    gsSP2Triangles( 6,  9, 10, 0x0,  7,  6, 10, 0x0),\n    gsSP2Triangles( 8, 11,  6, 0x0,  6, 11,  9, 0x0),\n    gsSP2Triangles( 9, 12, 13, 0x0, 10,  9, 13, 0x0),\n    gsSP2Triangles(11, 14,  9, 0x0,  9, 14, 12, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07017000, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  0, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 2,  1,  6, 0x0,  1,  7,  6, 0x0),\n    gsSP2Triangles( 5,  8,  1, 0x0,  1,  8,  7, 0x0),\n    gsSP2Triangles( 8,  9,  7, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles( 9, 10, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(11, 14, 13, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07017100, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  1,  4,  2, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  8, 10,  9, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 10, 12, 11, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07017200, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 6,  7,  9, 0x0,  9,  8, 10, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  8, 11, 10, 0x0),\n    gsSP2Triangles(11, 13, 12, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070172F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  1,  4,  2, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  9, 13, 14, 0x0),\n    gsSP1Triangle( 8, 13,  9, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070173E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 8,  9, 11, 0x0, 11, 10, 12, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 10, 13, 12, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070174D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  4,  6,  5, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  6,  8,  7, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(10, 12, 11, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(13, 14, 15, 0x0, 12, 14, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070175D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  7,  6, 0x0),\n    gsSP2Triangles( 5,  9,  6, 0x0,  4,  9,  5, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 10, 12, 11, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070176D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 2,  1,  5, 0x0,  1,  6,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  6,  8,  7, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  8, 10,  9, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 10, 12, 11, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 13, 14, 15, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070177D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 2,  3,  5, 0x0,  5,  4,  6, 0x0),\n    gsSP2Triangles( 7,  1,  0, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  8,  6, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 10, 14, 11, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0, 13, 12, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070178D0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  4,  6,  5, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  6,  8,  7, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(10, 12, 11, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070179B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 4,  1,  0, 0x0,  5,  4,  3, 0x0),\n    gsSP2Triangles( 1,  6,  2, 0x0,  2,  6,  7, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(13, 14, 15, 0x0, 11, 14, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07017AB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 11, 12, 14, 0x0),\n    gsSP2Triangles(14, 13, 15, 0x0, 10, 12, 11, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07017BB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 7, 10,  9, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 10, 12, 11, 0x0),\n    gsSP2Triangles(13, 14, 15, 0x0, 12, 14, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07017CB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  1,  4,  3, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  4,  6,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  9,  8, 0x0),\n    gsSP2Triangles( 7, 11,  8, 0x0,  6, 11,  7, 0x0),\n    gsSP2Triangles(10, 12, 13, 0x0,  9, 12, 10, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07017DB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 3,  6,  5, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  8, 10,  9, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 10, 12, 11, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07017EB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  1,  4,  3, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  6,  8,  7, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  8, 10,  9, 0x0),\n    gsSP2Triangles(10, 12, 11, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07017FB0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  6,  8,  7, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  8, 10,  9, 0x0),\n    gsSP2Triangles(10, 12, 11, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07018090, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  3,  0, 0x0,  5,  3,  4, 0x0),\n    gsSP2Triangles( 1,  6,  2, 0x0,  2,  6,  7, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 12, 10, 0x0),\n    gsSP2Triangles( 8, 12,  9, 0x0, 11, 10, 13, 0x0),\n    gsSP2Triangles(10, 14, 13, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07018190, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  1,  7,  3, 0x0),\n    gsSP2Triangles( 3,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles( 9, 11, 10, 0x0, 12, 13, 14, 0x0),\n    gsSP2Triangles(11, 13, 12, 0x0, 15,  5,  4, 0x0),\n    gsSP1Triangle(14, 15,  4, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07018290, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  7, 10,  9, 0x0),\n    gsSP2Triangles(10, 12, 11, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07018390, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 5,  8,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 9, 11, 10, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 11, 13, 12, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07018480, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  1,  0, 0x0,  3,  2,  5, 0x0),\n    gsSP2Triangles( 2,  6,  5, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  6,  8,  7, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  8, 10,  9, 0x0),\n    gsSP2Triangles(10, 12, 11, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07018580, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 3,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  8,  7, 0x0,  6, 10,  7, 0x0),\n    gsSP2Triangles( 8, 11,  9, 0x0,  9, 11, 12, 0x0),\n    gsSP2Triangles(11, 13, 12, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(13, 15, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07018680, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 4,  7,  6, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 8, 12, 13, 0x0,  7, 12,  8, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07018780, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 6,  7,  9, 0x0,  9,  8, 10, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  8, 11, 10, 0x0),\n    gsSP2Triangles(11, 13, 12, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07018880, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 2,  5,  3, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0,  3,  7,  6, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 8, 12, 13, 0x0,  7, 12,  8, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07018980, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 2,  1,  5, 0x0,  1,  6,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0, 11, 10, 12, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 13, 14, 15, 0x0),\n    gsSP1Triangle(13, 12, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07018A80, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  4,  6, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7,  6,  8, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 10, 12, 0x0),\n    gsSP2Triangles(13, 14, 15, 0x0, 13, 12, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07018B80, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  4,  5,  6, 0x0),\n    gsSP2Triangles( 4,  7,  5, 0x0,  1,  7,  4, 0x0),\n    gsSP2Triangles( 6,  5,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9,  8, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 10, 12, 0x0),\n    gsSP2Triangles(13, 12, 14, 0x0, 12, 15, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07018C80, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  4,  6, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7,  6,  8, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles( 8, 11, 10, 0x0, 12, 13, 14, 0x0),\n    gsSP2Triangles(11, 13, 12, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07018D80, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  4,  6, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7,  6,  8, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(11, 10, 12, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(13, 14, 15, 0x0, 13, 12, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07018E80, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  4,  6, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7,  6,  8, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07018F60, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  4,  7, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  8,  6,  5, 0x0),\n    gsSP2Triangles( 8,  5,  9, 0x0, 10,  9,  5, 0x0),\n    gsSP2Triangles( 5, 11,  2, 0x0,  5,  9, 11, 0x0),\n    gsSP2Triangles(11,  8,  9, 0x0, 12,  9, 13, 0x0),\n    gsSP2Triangles( 9, 12, 14, 0x0,  9, 14, 11, 0x0),\n    gsSP2Triangles( 6,  8, 15, 0x0, 15,  8, 11, 0x0),\n    gsSP1Triangle(15, 11,  1, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07019060, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 0,  8,  1, 0x0,  8,  0,  9, 0x0),\n    gsSP2Triangles(10, 11,  7, 0x0, 12, 10,  7, 0x0),\n    gsSP2Triangles(12, 13, 10, 0x0, 12,  7, 14, 0x0),\n    gsSP2Triangles( 6, 14,  7, 0x0,  5,  7, 11, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07019150, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  4,  3,  6, 0x0),\n    gsSP2Triangles( 4,  7,  8, 0x0,  5,  9,  3, 0x0),\n    gsSP2Triangles(10, 11,  5, 0x0, 11,  9,  5, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14,  6, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07019240, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  3,  5, 0x0,  4,  5,  6, 0x0),\n    gsSP2Triangles( 3,  4,  7, 0x0,  8,  0,  3, 0x0),\n    gsSP2Triangles( 9,  8,  3, 0x0,  4,  6, 10, 0x0),\n    gsSP2Triangles( 7,  4, 10, 0x0,  7, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12,  8, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07019340, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  5,  6,  0, 0x0),\n    gsSP2Triangles( 6,  4,  0, 0x0,  7,  4,  8, 0x0),\n    gsSP2Triangles( 4,  9,  8, 0x0,  6,  9,  4, 0x0),\n    gsSP2Triangles( 1,  4,  7, 0x0,  3,  1,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 11, 14, 0x0),\n    gsSP1Triangle(11, 15, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07019440, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  0,  4,  5, 0x0),\n    gsSP2Triangles( 0,  5,  6, 0x0,  0,  6,  7, 0x0),\n    gsSP2Triangles( 3,  0,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13,  9, 11, 0x0),\n    gsSP2Triangles(11, 10, 14, 0x0, 13, 11, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07019540, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP1Triangle( 4,  5,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701C5C8 - 0x0701CC40\nstatic const Gfx ccm_seg7_dl_0701C5C8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ccm_seg7_texture_07003100),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ccm_seg7_vertex_070195B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  4, 0x0),\n    gsSP2Triangles( 1,  5,  4, 0x0,  6,  5,  1, 0x0),\n    gsSP2Triangles( 1,  3,  2, 0x0,  3,  7,  2, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 2,  7,  9, 0x0, 10,  0,  2, 0x0),\n    gsSP2Triangles( 9,  8, 11, 0x0,  8, 12, 11, 0x0),\n    gsSP2Triangles(10,  2,  9, 0x0, 10,  9, 13, 0x0),\n    gsSP2Triangles(14, 15, 11, 0x0, 15, 13, 11, 0x0),\n    gsSP2Triangles( 9, 11, 13, 0x0, 12, 14, 11, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070196B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070197B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  0,  2, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 6, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(10, 14,  9, 0x0, 10, 15, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070198B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  3,  5,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  8,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070199B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  1,  9,  2, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07019AA0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07019B90, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07019C80, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07019D60, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07019E40, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 11, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07019F20, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  0,  2, 0x0,  4,  2,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 6,  8, 12, 0x0, 13, 12, 14, 0x0),\n    gsSP1Triangle(13,  6, 12, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701A010, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  3,  2, 0x0,  4,  2,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 15, 12, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701A110, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701A1F0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701A2D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701A3C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701A4B0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP1Triangle(11, 12, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701A590, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701A680, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701A770, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  0,  3, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6,  8, 0x0),\n    gsSP2Triangles( 6, 10,  7, 0x0,  9,  8, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701A870, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  4,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 8,  7, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701A970, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  4,  3, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701AA60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  0,  2, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14,  8, 0x0),\n    gsSP1Triangle( 8, 14,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701CC40 - 0x0701CE30\nstatic const Gfx ccm_seg7_dl_0701CC40[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ccm_seg7_vertex_0701AB50, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701AC50, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  0,  6,  4, 0x0),\n    gsSP2Triangles( 1,  3,  7, 0x0,  1,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 9, 14, 10, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701AD40, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  3,  2,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6, 10, 0x0),\n    gsSP2Triangles( 9, 11,  6, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(15, 10,  8, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701AE40, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7,  6,  8, 0x0),\n    gsSP2Triangles( 5, 10,  6, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 15, 10, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701AF40, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9,  4, 0x0,  8,  4,  6, 0x0),\n    gsSP2Triangles(10,  9, 11, 0x0, 12, 13, 10, 0x0),\n    gsSP2Triangles(10, 14, 12, 0x0, 12, 15,  8, 0x0),\n    gsSP1Triangle(12,  8, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701B040, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701CE30 - 0x0701CED8\nconst Gfx ccm_seg7_dl_0701CE30[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_0701B0E0),\n    gsSPDisplayList(ccm_seg7_dl_0701B128),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_0701C5C8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_0701CC40),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ccm/areas/2/2/model.inc.c",
    "content": "// 0x0701CED8 - 0x0701CEF0\nstatic const Lights1 ccm_seg7_lights_0701CED8 = gdSPDefLights1(\n    0x15, 0x15, 0x15,\n    0x55, 0x55, 0x55, 0x28, 0x28, 0x28\n);\n\n// 0x0701CEF0 - 0x0701CF08\nstatic const Lights1 ccm_seg7_lights_0701CEF0 = gdSPDefLights1(\n    0x26, 0x26, 0x26,\n    0x99, 0x99, 0x99, 0x28, 0x28, 0x28\n);\n\n// 0x0701CF08 - 0x0701CF20\nstatic const Lights1 ccm_seg7_lights_0701CF08 = gdSPDefLights1(\n    0x33, 0x33, 0x33,\n    0xcc, 0xcc, 0xcc, 0x28, 0x28, 0x28\n);\n\n// 0x0701CF20 - 0x0701CF38\nstatic const Lights1 ccm_seg7_lights_0701CF20 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0701CF38 - 0x0701D028\nstatic const Vtx ccm_seg7_vertex_0701CF38[] = {\n    {{{ -5477,  -3839,  -7679}, 0, { -3096, -18938}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5477,  -4812,  -6450}, 0, {  9166,  -9230}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5477,  -3839,  -6450}, 0, {  9166, -18940}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -6245,  -5836,  -6450}, 0, {   480,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6245,  -5375,  -6501}, 0, {   990,  -3608}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6245,  -5375,  -6450}, 0, {   480,  -3608}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6245,  -5836,  -6501}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6757,  -5375,  -6450}, 0, {   480,  -3608}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -6757,  -5375,  -6501}, 0, {     0,  -3608}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -6757,  -5836,  -6501}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -6757,  -5836,  -6450}, 0, {   480,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -6245,  -5375,  -6450}, 0, {  1500,   4566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6245,  -5375,  -6501}, 0, {  1500,   4566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6757,  -5375,  -6501}, 0, {  6610,   4566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6757,  -5375,  -6450}, 0, {  6610,   4566}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0701D028 - 0x0701D118\nstatic const Vtx ccm_seg7_vertex_0701D028[] = {\n    {{{ -5477,  -3839,  -7679}, 0, { 12232, -10768}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -6706,  -3839,  -7679}, 0, {     0, -10768}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -6706,  -4812,  -7679}, 0, {     0,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5477,  -3839,  -7679}, 0, { -3096, -18938}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5477,  -4812,  -7679}, 0, { -3096,  -9230}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5477,  -4812,  -6450}, 0, {  9166,  -9230}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5477,  -3839,  -6450}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -6706,  -3839,  -6450}, 0, {  6100,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -6706,  -3839,  -7679}, 0, {  6100,  -7186}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -5477,  -3839,  -7679}, 0, {     0,  -7186}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -6706,  -3839,  -6450}, 0, { -4630, -10766}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6706,  -5221,  -7679}, 0, {  7632,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6706,  -3839,  -7679}, 0, {  7632, -10768}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6706,  -5221,  -6450}, 0, { -4628,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -5477,  -4812,  -7679}, 0, { 12232,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0701D118 - 0x0701D208\nstatic const Vtx ccm_seg7_vertex_0701D118[] = {\n    {{{ -7576,  -5426,  -6450}, 0, { 14786,   5076}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6706,  -5836,  -6450}, 0, {  6100,   9164}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -7576,  -5836,  -6450}, 0, { 14786,   9164}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6706,  -5221,  -6450}, 0, {  6100,   3032}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6245,  -5375,  -6450}, 0, {  1500,   4566}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6706,  -5375,  -6450}, 0, {  6100,   4566}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6706,  -3839,  -6450}, 0, {  6100, -10768}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6524,  -4210,  -6450}, 0, {  4284,  -7058}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6424,  -4237,  -6450}, 0, {  3290,  -6790}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6597,  -4137,  -6450}, 0, {  5012,  -7784}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5682,  -5836,  -6450}, 0, { -4118,   9164}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6245,  -5836,  -6450}, 0, {  1500,   9164}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6325,  -3865,  -6450}, 0, {  2296, -10500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6424,  -3839,  -6450}, 0, {  3290, -10768}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5477,  -3839,  -6450}, 0, { -6162, -10768}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0701D208 - 0x0701D308\nstatic const Vtx ccm_seg7_vertex_0701D208[] = {\n    {{{ -6706,  -3839,  -6450}, 0, {  6100, -10768}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6597,  -3938,  -6450}, 0, {  5012,  -9772}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6624,  -4038,  -6450}, 0, {  5278,  -8778}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6597,  -4137,  -6450}, 0, {  5012,  -7784}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6524,  -3865,  -6450}, 0, {  4284, -10500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6424,  -3839,  -6450}, 0, {  3290, -10768}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6424,  -4237,  -6450}, 0, {  3290,  -6790}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6325,  -4210,  -6450}, 0, {  2296,  -7058}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5682,  -4812,  -6450}, 0, { -4118,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5682,  -5836,  -6450}, 0, { -4118,   9164}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6252,  -4137,  -6450}, 0, {  1568,  -7784}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5477,  -4812,  -6450}, 0, { -6162,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6225,  -4038,  -6450}, 0, {  1302,  -8778}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5477,  -3839,  -6450}, 0, { -6162, -10768}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6252,  -3938,  -6450}, 0, {  1568,  -9772}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6325,  -3865,  -6450}, 0, {  2296, -10500}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0701D308 - 0x0701D408\nstatic const Vtx ccm_seg7_vertex_0701D308[] = {\n    {{{ -7576,  -5836,  -6911}, 0, { -1564,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -7576,  -5703,  -6819}, 0, { -2482,   -338}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -7576,  -5703,  -6716}, 0, { -3504,   -338}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -7576,  -5580,  -6911}, 0, { -1562,  -1566}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -7576,  -5600,  -6819}, 0, { -2482,  -1360}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -7576,  -5836,  -6450}, 0, { -6162,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -7576,  -5426,  -6450}, 0, { -6162,  -3098}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -7576,  -5580,  -7065}, 0, {     0,  -1566}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -5682,  -4812,  -7372}, 0, { 10188,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -6706,  -5836,  -7372}, 0, {     0,   9164}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5682,  -5836,  -7372}, 0, { 10188,   9164}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -7576,  -5600,  -6716}, 0, { -3504,  -1360}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -5682,  -4812,  -7372}, 0, {     0,  -9230}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5682,  -5836,  -7372}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5682,  -5836,  -6450}, 0, {  9166,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5682,  -4812,  -6450}, 0, {  9166,  -9230}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0701D408 - 0x0701D4F8\nstatic const Vtx ccm_seg7_vertex_0701D408[] = {\n    {{{ -5682,  -4812,  -7372}, 0, { 10188,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -6706,  -4812,  -7372}, 0, {     0,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -6706,  -5836,  -7372}, 0, {     0,   9164}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -7679,  -5580,  -6911}, 0, {  -262,    918}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -7576,  -5580,  -7065}, 0, {  1268,    236}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -7576,  -5580,  -6911}, 0, {  -262,    236}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -6706,  -5221,  -7372}, 0, {     0,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -7576,  -5426,  -7372}, 0, { -8716,   5076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -7576,  -5836,  -7372}, 0, { -8716,   9164}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -7576,  -5426,  -6450}, 0, { -6162,  -3098}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -7576,  -5580,  -7065}, 0, {     0,  -1566}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -7576,  -5426,  -7372}, 0, {  3034,  -3098}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -7576,  -5836,  -7065}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -7576,  -5836,  -7372}, 0, {  3034,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -7679,  -5580,  -7065}, 0, {  1268,    918}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0701D4F8 - 0x0701D5E8\nstatic const Vtx ccm_seg7_vertex_0701D4F8[] = {\n    {{{ -6706,  -5836,  -6501}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6706,  -5426,  -6143}, 0, { -2586,  -3098}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6706,  -5836,  -6143}, 0, { -2586,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -7576,  -5836,  -7065}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -7679,  -5580,  -7065}, 0, {     0,  -1564}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -7679,  -5836,  -7065}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -7576,  -5580,  -7065}, 0, {   990,  -1564}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -7679,  -5836,  -6911}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -7679,  -5580,  -6911}, 0, {   990,  -1564}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -7576,  -5580,  -6911}, 0, {     0,  -1564}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -7576,  -5836,  -6911}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6296,  -5426,  -6143}, 0, { -3096,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -6706,  -5426,  -6501}, 0, {   990,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -6296,  -5426,  -6501}, 0, { -3096,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -6706,  -5426,  -6143}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0701D5E8 - 0x0701D6E8\nstatic const Vtx ccm_seg7_vertex_0701D5E8[] = {\n    {{{ -5119,   7680,  -6757}, 0, {     0,  -9230}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5119,   7322,  -6553}, 0, {  2012,  -5654}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5119,   7322,  -5733}, 0, { 10188,  -5654}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -6706,  -5836,  -6501}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6706,  -5426,  -6501}, 0, {   990,  -3098}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6706,  -5426,  -6143}, 0, { -2586,  -3098}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6296,  -5836,  -6143}, 0, {  3544,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -6296,  -5426,  -6501}, 0, {     0,  -3098}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -6296,  -5836,  -6501}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -6296,  -5426,  -6143}, 0, {  3546,  -3098}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5119,   6656,  -6553}, 0, {  2012,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5119,   6656,  -6757}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5119,   7680,  -5529}, 0, { 12232,  -9230}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5938,   8038,  -6041}, 0, {     0,  -2588}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -5938,   7680,  -6041}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -5938,   7680,  -6245}, 0, {  2012,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0701D6E8 - 0x0701D7D8\nstatic const Vtx ccm_seg7_vertex_0701D6E8[] = {\n    {{{ -5119,   7680,  -5529}, 0, { 12232,  -9230}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5119,   7322,  -5733}, 0, { 10188,  -5654}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5119,   6656,  -5733}, 0, { 10188,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5119,   6656,  -5529}, 0, { 12232,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5938,   7680,  -6245}, 0, { -4118,  -1668}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -6348,   7680,  -6757}, 0, {   990,   1056}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -5119,   7680,  -6757}, 0, {   990,  -7118}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -5938,   7680,  -6041}, 0, { -6162,  -1668}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -5733,   7680,  -6245}, 0, { -4118,  -3030}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -5119,   7680,  -5529}, 0, {-11272,  -7118}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -5733,   7680,  -6041}, 0, { -6162,  -3030}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -6348,   7680,  -5529}, 0, {-11272,   1056}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -5938,   8038,  -6041}, 0, {  2012,  -2586}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5733,   7680,  -6041}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5938,   7680,  -6041}, 0, {  2012,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0701D7D8 - 0x0701D8B8\nstatic const Vtx ccm_seg7_vertex_0701D7D8[] = {\n    {{{ -5938,   8038,  -6041}, 0, {     0,  -2588}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -5938,   7680,  -6245}, 0, {  2012,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -5938,   8038,  -6245}, 0, {  2012,  -2586}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -5733,   8038,  -6245}, 0, {     0,  -2586}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5733,   7680,  -6245}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5733,   7680,  -6041}, 0, {  2012,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5733,   8038,  -6041}, 0, {  2012,  -2588}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5938,   7680,  -6245}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5733,   7680,  -6245}, 0, {  2012,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5733,   8038,  -6245}, 0, {  2012,  -2586}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5938,   8038,  -6245}, 0, {     0,  -2586}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5938,   8038,  -6041}, 0, {  2012,  -2586}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5733,   8038,  -6041}, 0, {     0,  -2586}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5733,   7680,  -6041}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0701D8B8 - 0x0701D9A8\nstatic const Vtx ccm_seg7_vertex_0701D8B8[] = {\n    {{{ -4709,   7322,  -5733}, 0, {     0,  -5652}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4709,   6656,  -5733}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5119,   6656,  -5733}, 0, {  4056,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6348,   7680,  -5529}, 0, {     0,  -9230}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6348,   6656,  -5529}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6348,   7680,  -6757}, 0, { 12232,  -9230}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6348,   6656,  -6757}, 0, { 12232,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6348,   6656,  -6757}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5119,   6656,  -6757}, 0, { 12232,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5119,   7680,  -6757}, 0, { 12232,  -9230}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -6348,   7680,  -6757}, 0, {     0,  -9230}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -6348,   7680,  -5529}, 0, { 12232,  -9230}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5119,   6656,  -5529}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6348,   6656,  -5529}, 0, { 12232,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5119,   7680,  -5529}, 0, {     0,  -9230}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0701D9A8 - 0x0701DA58\nstatic const Vtx ccm_seg7_vertex_0701D9A8[] = {\n    {{{ -4709,   7322,  -5733}, 0, { -7184,  -1736}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -5119,   7322,  -5733}, 0, { -7184,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -5119,   7322,  -6553}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -4709,   7322,  -5733}, 0, {     0,  -5652}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5119,   6656,  -5733}, 0, {  4056,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5119,   7322,  -5733}, 0, {  4056,  -5652}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5119,   7322,  -6553}, 0, {     0,  -5654}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5119,   6656,  -6553}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4709,   7322,  -6553}, 0, {  4056,  -5654}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4709,   6656,  -6553}, 0, {  4056,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4709,   7322,  -6553}, 0, {   990,  -1736}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0701DA58 - 0x0701DAD8\nstatic const Vtx ccm_seg7_vertex_0701DA58[] = {\n    {{{ -6706,  -5426,  -6501}, 0, {  6100,   5076}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6706,  -5836,  -6501}, 0, {  6100,   9164}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6757,  -5836,  -6501}, 0, {  6610,   9164}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6296,  -5426,  -6501}, 0, {  2012,   5076}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6757,  -5375,  -6501}, 0, {  6610,   4566}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6245,  -5375,  -6501}, 0, {  1500,   4566}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6245,  -5836,  -6501}, 0, {  1500,   9164}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6296,  -5836,  -6501}, 0, {  2012,   9164}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0701DAD8 - 0x0701DBC8\nstatic const Vtx ccm_seg7_vertex_0701DAD8[] = {\n    {{{ -7679,  -5703,  -6716}, 0, {     0,    308}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -7576,  -5703,  -6716}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -7576,  -5703,  -6819}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -7576,  -5703,  -6716}, 0, {     0,   -338}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -7679,  -5703,  -6716}, 0, {   990,   -338}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -7679,  -5600,  -6716}, 0, {   990,  -1360}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -7576,  -5600,  -6716}, 0, {     0,  -1360}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -7679,  -5703,  -6819}, 0, {     0,   -338}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -7576,  -5703,  -6819}, 0, {   990,   -338}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -7679,  -5600,  -6819}, 0, {     0,  -1360}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -7576,  -5600,  -6819}, 0, {   990,  -1360}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -7576,  -5600,  -6819}, 0, { -1182,    236}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -7576,  -5600,  -6716}, 0, { -2204,    236}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -7679,  -5600,  -6716}, 0, { -2204,    918}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -7679,  -5600,  -6819}, 0, { -1182,    918}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0701DBC8 - 0x0701DC78\nstatic const Vtx ccm_seg7_vertex_0701DBC8[] = {\n    {{{ -7167,  -5836,  -6143}, 0, { -8720,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -6706,  -5836,  -6143}, 0, { -4118,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -6706,  -5426,  -6143}, 0, { -4118,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -7679,  -5703,  -6716}, 0, {     0,    308}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -7576,  -5703,  -6819}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -7679,  -5703,  -6819}, 0, {   990,    308}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6296,  -5836,  -6143}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5784,  -5836,  -6143}, 0, {  5078,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -6296,  -5426,  -6143}, 0, {     0,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5784,  -4197,  -6143}, 0, {  5078, -15362}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -7167,  -4197,  -6143}, 0, { -8720, -15362}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0701DC78 - 0x0701DD38\nstatic const Vtx ccm_seg7_vertex_0701DC78[] = {\n    {{{ -7576,  -5426,  -6450}, 0, {  5078,   5076}, {0x1d, 0x85, 0x00, 0xff}}},\n    {{{ -6706,  -5221,  -7372}, 0, { -3844,  -4120}, {0x1d, 0x85, 0x00, 0xff}}},\n    {{{ -6706,  -5221,  -6450}, 0, { -3844,   5076}, {0x1d, 0x85, 0x00, 0xff}}},\n    {{{ -7576,  -5426,  -7372}, 0, {  5078,  -4120}, {0x1d, 0x85, 0x00, 0xff}}},\n    {{{ -6348,   6656,  -5529}, 0, {  6100,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5119,   6656,  -5529}, 0, {  6100,  -5142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5119,   6656,  -6757}, 0, {     0,  -5142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6348,   6656,  -6757}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5119,   6656,  -6553}, 0, {   990,  -5142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5119,   6656,  -5733}, 0, {  5078,  -5142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4709,   6656,  -5733}, 0, {  5078,  -7186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4709,   6656,  -6553}, 0, {   990,  -7186}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0701DD38 - 0x0701DE38\nstatic const Vtx ccm_seg7_vertex_0701DD38[] = {\n    {{{ -5477,  -4812,  -7679}, 0, { -2074,   3542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6706,  -4812,  -7679}, 0, {  4056,   3542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6706,  -4812,  -7372}, 0, {  4056,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5692,  -5651,  -6891}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5692,  -5744,  -6891}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5692,  -5651,  -6829}, 0, {     0,    -84}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5692,  -5744,  -6829}, 0, {   990,    -84}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5692,  -5580,  -6860}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5692,  -5651,  -6921}, 0, {  1764,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5692,  -5651,  -6798}, 0, {   250,   -760}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5682,  -4812,  -6450}, 0, { -1052,  -2586}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5477,  -4812,  -6450}, 0, { -2074,  -2586}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5682,  -4812,  -7372}, 0, { -1052,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -7576,  -5836,  -6911}, 0, {  5844,  -5398}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -7679,  -5836,  -7065}, 0, {  6610,  -5908}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -7679,  -5836,  -6911}, 0, {  5844,  -5908}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0701DE38 - 0x0701DEE8\nstatic const Vtx ccm_seg7_vertex_0701DE38[] = {\n    {{{ -7576,  -5836,  -6911}, 0, {  5844,  -5398}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -7576,  -5836,  -7065}, 0, {  6610,  -5398}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -7679,  -5836,  -7065}, 0, {  6610,  -5908}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -7576,  -5836,  -6450}, 0, {   990,  -4376}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5682,  -5836,  -7372}, 0, {  5588,   5076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -7576,  -5836,  -7372}, 0, {  5588,  -4376}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5682,  -5836,  -6450}, 0, {   990,   5076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6296,  -5836,  -6450}, 0, {   990,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6706,  -5836,  -6450}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6706,  -5836,  -6143}, 0, {  -542,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6296,  -5836,  -6143}, 0, {  -542,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0701DEE8 - 0x0701DF28\nstatic const Vtx ccm_seg7_vertex_0701DEE8[] = {\n    {{{ -8703,  -5068,  -7628}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -8703,  -5836,  -6194}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -8703,  -5836,  -7628}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -8703,  -5068,  -6194}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0701DF28 - 0x0701DF68\nstatic const Vtx ccm_seg7_vertex_0701DF28[] = {\n    {{{ -8703,  -5836,  -7628}, 0, {  1050,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -7679,  -5836,  -6194}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -7679,  -5836,  -7628}, 0, {   554,   1882}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -8703,  -5836,  -6194}, 0, {  -556,     96}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0701DF68 - 0x0701E3F8\nstatic const Gfx ccm_seg7_dl_0701DF68[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ccm_seg7_lights_0701CED8.l, 1),\n    gsSPLight(&ccm_seg7_lights_0701CED8.a, 2),\n    gsSPVertex(ccm_seg7_vertex_0701CF38, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701D028, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPLight(&ccm_seg7_lights_0701CEF0.l, 1),\n    gsSPLight(&ccm_seg7_lights_0701CEF0.a, 2),\n    gsSPVertex(ccm_seg7_vertex_0701D118, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 4,  9,  7, 0x0,  4,  6,  9, 0x0),\n    gsSP2Triangles( 8, 10,  4, 0x0, 10, 11,  4, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701D208, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  1,  0, 0x0,  0,  5,  4, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11,  8, 10, 0x0),\n    gsSP2Triangles(10, 12, 11, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(13, 12, 14, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701D308, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 1,  0,  3, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 6,  3,  7, 0x0,  6,  4,  3, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  6, 11,  4, 0x0),\n    gsSP2Triangles( 5,  2, 11, 0x0,  5, 11,  6, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701D408, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 2,  6,  7, 0x0,  2,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 11, 10, 12, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0,  3, 14,  4, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701D4F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701D5E8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10,  1,  0, 0x0, 10,  0, 11, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701D6E8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  4,  7, 0x0),\n    gsSP2Triangles( 4,  6,  8, 0x0,  9,  8,  6, 0x0),\n    gsSP2Triangles( 9, 10,  8, 0x0,  5,  7, 11, 0x0),\n    gsSP2Triangles(11,  7, 10, 0x0, 11, 10,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701D7D8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701D8B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701D9A8, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP1Triangle(10,  0,  2, 0x0),\n    gsSPLight(&ccm_seg7_lights_0701CF08.l, 1),\n    gsSPLight(&ccm_seg7_lights_0701CF08.a, 2),\n    gsSPVertex(ccm_seg7_vertex_0701DA58, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  3, 0x0,  6,  3,  5, 0x0),\n    gsSPLight(&ccm_seg7_lights_0701CF20.l, 1),\n    gsSPLight(&ccm_seg7_lights_0701CF20.a, 2),\n    gsSPVertex(ccm_seg7_vertex_0701DAD8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 11, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701DBC8, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles( 2,  9, 10, 0x0,  2,  8,  9, 0x0),\n    gsSP1Triangle( 0,  2, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701E3F8 - 0x0701E4E8\nstatic const Gfx ccm_seg7_dl_0701E3F8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ccm_seg7_lights_0701CEF0.l, 1),\n    gsSPLight(&ccm_seg7_lights_0701CEF0.a, 2),\n    gsSPVertex(ccm_seg7_vertex_0701DC78, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPLight(&ccm_seg7_lights_0701CF20.l, 1),\n    gsSPLight(&ccm_seg7_lights_0701CF20.a, 2),\n    gsSPVertex(ccm_seg7_vertex_0701DD38, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 0, 10, 11, 0x0,  0, 12, 10, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701DE38, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle( 7,  9, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701E4E8 - 0x0701E520\nstatic const Gfx ccm_seg7_dl_0701E4E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ccm_seg7_texture_07004300),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ccm_seg7_vertex_0701DEE8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701E520 - 0x0701E558\nstatic const Gfx ccm_seg7_dl_0701E520[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ccm_seg7_vertex_0701DF28, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701E558 - 0x0701E610\nconst Gfx ccm_seg7_dl_0701E558[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_0701DF68),\n    gsSPDisplayList(ccm_seg7_dl_0701E3F8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_0701E4E8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_0701E520),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ccm/areas/2/3/model.inc.c",
    "content": "// 0x0701E610 - 0x0701E628\nstatic const Lights1 ccm_seg7_lights_0701E610 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0701E628 - 0x0701E668\nstatic const Vtx ccm_seg7_vertex_0701E628[] = {\n    {{{ -6296,  -5836,  -6501}, 0, {  3034,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6706,  -5836,  -6297}, 0, { -1052,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6296,  -5836,  -6297}, 0, {  3034,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6706,  -5836,  -6501}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0701E668 - 0x0701E6B0\nstatic const Gfx ccm_seg7_dl_0701E668[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ccm_seg7_texture_07004B00),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ccm_seg7_lights_0701E610.l, 1),\n    gsSPLight(&ccm_seg7_lights_0701E610.a, 2),\n    gsSPVertex(ccm_seg7_vertex_0701E628, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701E6B0 - 0x0701E720\nconst Gfx ccm_seg7_dl_0701E6B0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_0701E668),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ccm/areas/2/4/model.inc.c",
    "content": "// 0x0701E720 - 0x0701E738\nstatic const Lights1 ccm_seg7_lights_0701E720 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0701E738 - 0x0701E828\nstatic const Vtx ccm_seg7_vertex_0701E738[] = {\n    {{{  6253,  -2378,   1700}, 0, {     0,    990}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  6253,  -2992,   1700}, 0, {     0,    -30}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  6256,  -2764,   5258}, 0, {  8144,    990}, {0x82, 0x00, 0xf6, 0xff}}},\n    {{{  6253,  -2378,   1700}, 0, {  8144,    990}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  6253,  -2355,   1594}, 0, {  7748,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6253,  -2969,   1594}, 0, {  7748,    -30}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6253,  -2935,   1504}, 0, {  7404,    -30}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  6253,  -2321,   1504}, 0, {  7404,    990}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  6255,  -1784,   -303}, 0, {   596,    -30}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  6255,  -1170,   -303}, 0, {   596,    990}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  6253,  -2992,   1700}, 0, {  8144,    -30}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  6255,  -1144,   -381}, 0, {   300,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6255,  -1758,   -381}, 0, {   300,    -30}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6255,  -1749,   -469}, 0, {     0,    -30}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  6255,  -1134,   -469}, 0, {     0,    990}, {0x82, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0701E828 - 0x0701E918\nstatic const Vtx ccm_seg7_vertex_0701E828[] = {\n    {{{ -4610,   2304,  -3799}, 0, {  2012,    990}, {0x73, 0x00, 0x35, 0xff}}},\n    {{{ -4829,   2150,  -2983}, 0, {     0,    990}, {0x7e, 0x00, 0xf5, 0xff}}},\n    {{{ -4829,   1536,  -2983}, 0, {     0,      0}, {0x7e, 0x00, 0x0b, 0xff}}},\n    {{{  6253,  -2992,   1700}, 0, {     0,    -30}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  6256,  -3378,   5258}, 0, {  8144,    -30}, {0x83, 0x00, 0xeb, 0xff}}},\n    {{{  6256,  -2764,   5258}, 0, {  8144,    990}, {0x82, 0x00, 0xf6, 0xff}}},\n    {{{ -4450,   2509,  -5118}, 0, {     0,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -4450,   1894,  -5118}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -5350,   2355,  -4218}, 0, {  4056,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -5350,   1741,  -4218}, 0, {  4056,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1902,  -4914,    294}, 0, {  2432,      0}, {0x3f, 0x00, 0x93, 0xff}}},\n    {{{ -1902,  -4300,    294}, 0, {  2432,    990}, {0x3f, 0x00, 0x93, 0xff}}},\n    {{{  -871,  -4812,    889}, 0, {     0,      0}, {0x4e, 0x00, 0x9d, 0xff}}},\n    {{{  -871,  -4197,    889}, 0, {     0,    990}, {0x5c, 0x00, 0xaa, 0xff}}},\n    {{{ -4610,   1690,  -3799}, 0, {  2012,      0}, {0x67, 0x00, 0x49, 0xff}}},\n};\n\n// 0x0701E918 - 0x0701EA08\nstatic const Vtx ccm_seg7_vertex_0701E918[] = {\n    {{{ -4617,   1997,  -2191}, 0, {     0,    990}, {0x68, 0x00, 0xb8, 0xff}}},\n    {{{ -4617,   1382,  -2191}, 0, {     0,      0}, {0x73, 0x00, 0xcb, 0xff}}},\n    {{{ -4829,   2150,  -2983}, 0, {  2012,    990}, {0x7e, 0x00, 0xf5, 0xff}}},\n    {{{ -4829,   1536,  -2983}, 0, {  2012,      0}, {0x7e, 0x00, 0x0b, 0xff}}},\n    {{{ -4030,   1229,  -1600}, 0, {     0,      0}, {0x4a, 0x00, 0x9a, 0xff}}},\n    {{{ -4617,   1382,  -2191}, 0, {  2012,      0}, {0x73, 0x00, 0xcb, 0xff}}},\n    {{{ -4617,   1997,  -2191}, 0, {  2012,    990}, {0x68, 0x00, 0xb8, 0xff}}},\n    {{{ -4030,   1843,  -1600}, 0, {     0,    990}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{ -3212,   1741,  -1352}, 0, {     0,    990}, {0x06, 0x00, 0x82, 0xff}}},\n    {{{ -3212,   1126,  -1352}, 0, {     0,      0}, {0x16, 0x00, 0x83, 0xff}}},\n    {{{ -4030,   1843,  -1600}, 0, {  2012,    990}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{ -4030,   1229,  -1600}, 0, {  2012,      0}, {0x4a, 0x00, 0x9a, 0xff}}},\n    {{{  2293,    563,  -3038}, 0, {  4056,    990}, {0x8c, 0x00, 0xcd, 0xff}}},\n    {{{  2598,    358,  -4354}, 0, {     0,    990}, {0x82, 0x00, 0xf4, 0xff}}},\n    {{{  2598,   -255,  -4354}, 0, {     0,      0}, {0x83, 0x00, 0xec, 0xff}}},\n};\n\n// 0x0701EA08 - 0x0701EAF8\nstatic const Vtx ccm_seg7_vertex_0701EA08[] = {\n    {{{  -254,    410,  -1541}, 0, {     0,    -34}, {0xef, 0x00, 0x83, 0xff}}},\n    {{{ -3212,   1126,  -1352}, 0, {  8144,    -34}, {0x16, 0x00, 0x83, 0xff}}},\n    {{{ -3212,   1741,  -1352}, 0, {  8144,    990}, {0x06, 0x00, 0x82, 0xff}}},\n    {{{  -254,   1024,  -1541}, 0, {     0,    990}, {0xe5, 0x00, 0x84, 0xff}}},\n    {{{  1218,    768,  -1980}, 0, {     0,    990}, {0xb7, 0x00, 0x99, 0xff}}},\n    {{{  1218,    154,  -1980}, 0, {     0,      0}, {0xc9, 0x00, 0x8e, 0xff}}},\n    {{{  -254,   1024,  -1541}, 0, {  4052,    990}, {0xe5, 0x00, 0x84, 0xff}}},\n    {{{  -254,    410,  -1541}, 0, {  4056,      0}, {0xef, 0x00, 0x83, 0xff}}},\n    {{{  2293,    563,  -3038}, 0, {     0,    990}, {0x8c, 0x00, 0xcd, 0xff}}},\n    {{{  2293,    -50,  -3038}, 0, {     0,    -34}, {0x98, 0x00, 0xb8, 0xff}}},\n    {{{  1218,    768,  -1980}, 0, {  4056,    990}, {0xb7, 0x00, 0x99, 0xff}}},\n    {{{  1218,    154,  -1980}, 0, {  4056,    -34}, {0xc9, 0x00, 0x8e, 0xff}}},\n    {{{  2598,   -255,  -4354}, 0, {     0,      0}, {0x83, 0x00, 0xec, 0xff}}},\n    {{{  2293,    -50,  -3038}, 0, {  4056,      0}, {0x98, 0x00, 0xb8, 0xff}}},\n    {{{  2293,    563,  -3038}, 0, {  4056,    990}, {0x8c, 0x00, 0xcd, 0xff}}},\n};\n\n// 0x0701EAF8 - 0x0701EBE8\nstatic const Vtx ccm_seg7_vertex_0701EAF8[] = {\n    {{{  2625,   -171,  -5167}, 0, {     0,      0}, {0x82, 0x00, 0xfc, 0xff}}},\n    {{{  2598,   -255,  -4354}, 0, {  2012,      0}, {0x83, 0x00, 0xec, 0xff}}},\n    {{{  2598,    358,  -4354}, 0, {  2012,    990}, {0x82, 0x00, 0xf4, 0xff}}},\n    {{{  2625,    442,  -5167}, 0, {     0,    990}, {0x82, 0x00, 0xfc, 0xff}}},\n    {{{  6253,  -1123,   -870}, 0, {  -488,    990}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  6253,  -1738,   -870}, 0, {  -488,    -30}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  6255,  -1134,   -469}, 0, {  1028,    990}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  6255,  -1749,   -469}, 0, {  1028,    -30}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  6253,  -1123,   -870}, 0, { 12212,    990}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  6239,   -206,  -5279}, 0, {     0,    990}, {0x85, 0x00, 0x1e, 0xff}}},\n    {{{  6239,   -821,  -5279}, 0, {     0,      0}, {0x82, 0x00, 0x0f, 0xff}}},\n    {{{  5957,   -767,  -5473}, 0, {     0,    -30}, {0xf0, 0x00, 0x7d, 0xff}}},\n    {{{  6121,   -797,  -5437}, 0, {   480,    -30}, {0xc0, 0x00, 0x6d, 0xff}}},\n    {{{  6121,   -182,  -5437}, 0, {   480,    990}, {0xd2, 0x00, 0x76, 0xff}}},\n    {{{  6253,  -1738,   -870}, 0, { 12212,      0}, {0x82, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0701EBE8 - 0x0701ECC8\nstatic const Vtx ccm_seg7_vertex_0701EBE8[] = {\n    {{{  6205,   -197,  -5368}, 0, {  1500,    990}, {0xa0, 0x00, 0x52, 0xff}}},\n    {{{  6205,   -811,  -5368}, 0, {  1500,      0}, {0x93, 0x00, 0x40, 0xff}}},\n    {{{  6239,   -206,  -5279}, 0, {  2012,    990}, {0x85, 0x00, 0x1e, 0xff}}},\n    {{{  6239,   -821,  -5279}, 0, {  2012,      0}, {0x82, 0x00, 0x0f, 0xff}}},\n    {{{  6121,   -797,  -5437}, 0, {   548,      0}, {0xc0, 0x00, 0x6d, 0xff}}},\n    {{{  6205,   -811,  -5368}, 0, {  1060,      0}, {0x93, 0x00, 0x40, 0xff}}},\n    {{{  6205,   -197,  -5368}, 0, {  1060,    990}, {0xa0, 0x00, 0x52, 0xff}}},\n    {{{  6121,   -182,  -5437}, 0, {   548,    990}, {0xd2, 0x00, 0x76, 0xff}}},\n    {{{  5957,   -153,  -5473}, 0, {     0,    990}, {0xfc, 0x00, 0x7e, 0xff}}},\n    {{{  5957,   -767,  -5473}, 0, {     0,    -30}, {0xf0, 0x00, 0x7d, 0xff}}},\n    {{{  6121,   -182,  -5437}, 0, {   480,    990}, {0xd2, 0x00, 0x76, 0xff}}},\n    {{{  3606,    263,  -5277}, 0, {   356,    990}, {0x37, 0x00, 0x72, 0xff}}},\n    {{{  3503,    278,  -5219}, 0, {     0,    990}, {0x6b, 0x00, 0x43, 0xff}}},\n    {{{  3503,   -336,  -5219}, 0, {     0,    -28}, {0x57, 0x00, 0x5c, 0xff}}},\n};\n\n// 0x0701ECC8 - 0x0701EDB8\nstatic const Vtx ccm_seg7_vertex_0701ECC8[] = {\n    {{{  4059,    176,  -5372}, 0, {     0,    990}, {0x0f, 0x00, 0x7e, 0xff}}},\n    {{{  4059,   -437,  -5372}, 0, {     0,      0}, {0x0a, 0x00, 0x7e, 0xff}}},\n    {{{  5957,   -153,  -5473}, 0, {  4056,    990}, {0xfc, 0x00, 0x7e, 0xff}}},\n    {{{  5957,   -767,  -5473}, 0, {  4056,      0}, {0xf0, 0x00, 0x7d, 0xff}}},\n    {{{  4059,   -437,  -5372}, 0, {   988,    -30}, {0x0a, 0x00, 0x7e, 0xff}}},\n    {{{  4059,    176,  -5372}, 0, {   988,    990}, {0x0f, 0x00, 0x7e, 0xff}}},\n    {{{  3736,   -378,  -5322}, 0, {     0,    -30}, {0x1a, 0x00, 0x7c, 0xff}}},\n    {{{  3736,    236,  -5322}, 0, {     0,    990}, {0x22, 0x00, 0x7a, 0xff}}},\n    {{{  3736,   -378,  -5322}, 0, {  2012,      0}, {0x1a, 0x00, 0x7c, 0xff}}},\n    {{{  3736,    236,  -5322}, 0, {  2012,    990}, {0x22, 0x00, 0x7a, 0xff}}},\n    {{{  3606,   -350,  -5277}, 0, {  1576,      0}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{  3606,    263,  -5277}, 0, {  1576,    990}, {0x37, 0x00, 0x72, 0xff}}},\n    {{{  3503,   -336,  -5219}, 0, {     0,    -28}, {0x57, 0x00, 0x5c, 0xff}}},\n    {{{  3606,   -350,  -5277}, 0, {   356,    -28}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{  3606,    263,  -5277}, 0, {   356,    990}, {0x37, 0x00, 0x72, 0xff}}},\n};\n\n// 0x0701EDB8 - 0x0701EEA8\nstatic const Vtx ccm_seg7_vertex_0701EDB8[] = {\n    {{{  3503,   -336,  -5219}, 0, {   336,    -36}, {0x57, 0x00, 0x5c, 0xff}}},\n    {{{  3503,    278,  -5219}, 0, {   336,    990}, {0x6b, 0x00, 0x43, 0xff}}},\n    {{{  3466,   -327,  -5105}, 0, {     0,    -36}, {0x78, 0x00, 0x27, 0xff}}},\n    {{{  3466,    287,  -5105}, 0, {     0,    990}, {0x78, 0x00, 0x27, 0xff}}},\n    {{{   480,   3072,   -622}, 0, {  3032,    -42}, {0xf9, 0x00, 0x82, 0xff}}},\n    {{{   480,   3686,   -622}, 0, {  3032,    990}, {0xf9, 0x00, 0x82, 0xff}}},\n    {{{  2106,   3277,   -872}, 0, {     0,    -42}, {0xed, 0x00, 0x83, 0xff}}},\n    {{{  2106,   3891,   -872}, 0, {     0,    990}, {0xed, 0x00, 0x83, 0xff}}},\n    {{{  2106,   3471,   -872}, 0, {  4056,    -34}, {0xc3, 0x00, 0x91, 0xff}}},\n    {{{  2106,   4086,   -872}, 0, {  4056,    990}, {0xc3, 0x00, 0x91, 0xff}}},\n    {{{  4545,   3662,  -2227}, 0, {     0,    -34}, {0xb7, 0x00, 0x99, 0xff}}},\n    {{{  5731,   3945,  -5260}, 0, {   992,    -48}, {0xdf, 0x00, 0x7a, 0xff}}},\n    {{{  5731,   4559,  -5260}, 0, {   992,    990}, {0xcb, 0x00, 0x73, 0xff}}},\n    {{{  5188,   4715,  -5317}, 0, {     0,    990}, {0xf3, 0x00, 0x7e, 0xff}}},\n    {{{  4545,   4276,  -2227}, 0, {     0,    990}, {0xac, 0x00, 0xa2, 0xff}}},\n};\n\n// 0x0701EEA8 - 0x0701EF88\nstatic const Vtx ccm_seg7_vertex_0701EEA8[] = {\n    {{{  4545,   3662,  -2227}, 0, {  4056,    -34}, {0xb7, 0x00, 0x99, 0xff}}},\n    {{{  4545,   4276,  -2227}, 0, {  4056,    990}, {0xac, 0x00, 0xa2, 0xff}}},\n    {{{  5839,   3746,  -3683}, 0, {     0,    -34}, {0x96, 0x00, 0xbb, 0xff}}},\n    {{{  5839,   4360,  -3683}, 0, {     0,    990}, {0x96, 0x00, 0xbb, 0xff}}},\n    {{{  5188,   4715,  -5317}, 0, {     0,    990}, {0xf3, 0x00, 0x7e, 0xff}}},\n    {{{  5188,   4101,  -5317}, 0, {     0,    -48}, {0xf3, 0x00, 0x7e, 0xff}}},\n    {{{  5731,   3945,  -5260}, 0, {   992,    -48}, {0xdf, 0x00, 0x7a, 0xff}}},\n    {{{  5839,   3746,  -3683}, 0, {  2012,      0}, {0x96, 0x00, 0xbb, 0xff}}},\n    {{{  6135,   4354,  -4325}, 0, {     0,    990}, {0x87, 0x00, 0xdd, 0xff}}},\n    {{{  6135,   3739,  -4325}, 0, {     0,      0}, {0x83, 0x00, 0xf0, 0xff}}},\n    {{{  5985,   3839,  -5088}, 0, {  2012,    -68}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{  5731,   4559,  -5260}, 0, {   988,    990}, {0xcb, 0x00, 0x73, 0xff}}},\n    {{{  5731,   3945,  -5260}, 0, {   988,    -68}, {0xdf, 0x00, 0x7a, 0xff}}},\n    {{{  5985,   4453,  -5088}, 0, {  2012,    990}, {0x98, 0x00, 0x47, 0xff}}},\n};\n\n// 0x0701EF88 - 0x0701F068\nstatic const Vtx ccm_seg7_vertex_0701EF88[] = {\n    {{{  6128,   3761,  -4766}, 0, {   988,    -48}, {0x87, 0x00, 0x23, 0xff}}},\n    {{{  5985,   4453,  -5088}, 0, {     0,    990}, {0x98, 0x00, 0x47, 0xff}}},\n    {{{  5985,   3839,  -5088}, 0, {     0,    -48}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{  6128,   4376,  -4766}, 0, {   988,    990}, {0x83, 0x00, 0x12, 0xff}}},\n    {{{  6135,   3739,  -4325}, 0, {  2012,    -34}, {0x83, 0x00, 0xf0, 0xff}}},\n    {{{  6128,   3761,  -4766}, 0, {   992,    -34}, {0x87, 0x00, 0x23, 0xff}}},\n    {{{  6135,   4354,  -4325}, 0, {  2012,    990}, {0x87, 0x00, 0xdd, 0xff}}},\n    {{{  5839,   3746,  -3683}, 0, {  2012,      0}, {0x96, 0x00, 0xbb, 0xff}}},\n    {{{  5839,   4360,  -3683}, 0, {  2012,    990}, {0x96, 0x00, 0xbb, 0xff}}},\n    {{{  6135,   4354,  -4325}, 0, {     0,    990}, {0x87, 0x00, 0xdd, 0xff}}},\n    {{{ -1440,  -4197,   1506}, 0, {     0,    990}, {0xb2, 0x00, 0x63, 0xff}}},\n    {{{ -1440,  -4812,   1506}, 0, {     0,      0}, {0xa4, 0x00, 0x56, 0xff}}},\n    {{{  -979,  -4095,   2171}, 0, {  2012,    990}, {0x98, 0x00, 0x48, 0xff}}},\n    {{{  -979,  -4709,   2171}, 0, {  2012,      0}, {0x98, 0x00, 0x48, 0xff}}},\n};\n\n// 0x0701F068 - 0x0701F158\nstatic const Vtx ccm_seg7_vertex_0701F068[] = {\n    {{{ -2206,  -4914,   1064}, 0, {     0,      0}, {0xc1, 0x00, 0x6e, 0xff}}},\n    {{{ -1440,  -4812,   1506}, 0, {  2012,      0}, {0xa4, 0x00, 0x56, 0xff}}},\n    {{{ -1440,  -4197,   1506}, 0, {  2012,    990}, {0xb2, 0x00, 0x63, 0xff}}},\n    {{{ -2206,  -4300,   1064}, 0, {     0,    990}, {0xc1, 0x00, 0x6e, 0xff}}},\n    {{{  -158,  -4095,   1919}, 0, {     0,    990}, {0x7c, 0x00, 0xe9, 0xff}}},\n    {{{  -158,  -4709,   1919}, 0, {     0,      0}, {0x74, 0x00, 0xcf, 0xff}}},\n    {{{  -871,  -4197,    889}, 0, {  4056,    990}, {0x5c, 0x00, 0xaa, 0xff}}},\n    {{{  -448,  -4505,   4370}, 0, {     0,    -36}, {0x7d, 0x00, 0xec, 0xff}}},\n    {{{  -448,  -4607,   3720}, 0, {  2012,    -36}, {0x7c, 0x00, 0x1b, 0xff}}},\n    {{{  -448,  -3993,   3720}, 0, {  2012,    990}, {0x7e, 0x00, 0x0d, 0xff}}},\n    {{{  -871,  -4812,    889}, 0, {  4056,      0}, {0x4e, 0x00, 0x9d, 0xff}}},\n    {{{  -173,  -4095,   2895}, 0, {     0,    990}, {0x7b, 0x00, 0x1b, 0xff}}},\n    {{{  -173,  -4709,   2895}, 0, {     0,      0}, {0x7e, 0x00, 0x0e, 0xff}}},\n    {{{  -158,  -4095,   1919}, 0, {  2012,    990}, {0x7c, 0x00, 0xe9, 0xff}}},\n    {{{  -158,  -4709,   1919}, 0, {  2012,      0}, {0x74, 0x00, 0xcf, 0xff}}},\n};\n\n// 0x0701F158 - 0x0701F238\nstatic const Vtx ccm_seg7_vertex_0701F158[] = {\n    {{{  -448,  -3993,   3720}, 0, {     0,    990}, {0x7e, 0x00, 0x0d, 0xff}}},\n    {{{  -448,  -4607,   3720}, 0, {     0,    -30}, {0x7c, 0x00, 0x1b, 0xff}}},\n    {{{  -173,  -4095,   2895}, 0, {  2012,    990}, {0x7b, 0x00, 0x1b, 0xff}}},\n    {{{  -173,  -4709,   2895}, 0, {  2012,    -30}, {0x7e, 0x00, 0x0e, 0xff}}},\n    {{{  -448,  -3890,   4370}, 0, {     0,    990}, {0x77, 0x00, 0xd7, 0xff}}},\n    {{{  -448,  -4505,   4370}, 0, {     0,    -36}, {0x7d, 0x00, 0xec, 0xff}}},\n    {{{  -448,  -3993,   3720}, 0, {  2012,    990}, {0x7e, 0x00, 0x0d, 0xff}}},\n    {{{  5112,  -3173,   6200}, 0, {     0,    990}, {0xf5, 0x00, 0x82, 0xff}}},\n    {{{  5112,  -3788,   6200}, 0, {     0,    -30}, {0x01, 0x00, 0x82, 0xff}}},\n    {{{  4303,  -3276,   6106}, 0, {  2012,    990}, {0x12, 0x00, 0x83, 0xff}}},\n    {{{  -165,  -3788,   4890}, 0, {     0,    990}, {0x57, 0x00, 0xa5, 0xff}}},\n    {{{  -165,  -4402,   4890}, 0, {     0,      0}, {0x65, 0x00, 0xb4, 0xff}}},\n    {{{  -448,  -3890,   4370}, 0, {  2012,    990}, {0x77, 0x00, 0xd7, 0xff}}},\n    {{{  -448,  -4505,   4370}, 0, {  2012,      0}, {0x7d, 0x00, 0xec, 0xff}}},\n};\n\n// 0x0701F238 - 0x0701F318\nstatic const Vtx ccm_seg7_vertex_0701F238[] = {\n    {{{   342,  -3685,   5245}, 0, {     0,    990}, {0x2b, 0x00, 0x89, 0xff}}},\n    {{{   342,  -4300,   5245}, 0, {     0,      0}, {0x3a, 0x00, 0x90, 0xff}}},\n    {{{  -165,  -3788,   4890}, 0, {  2012,    990}, {0x57, 0x00, 0xa5, 0xff}}},\n    {{{  -165,  -4402,   4890}, 0, {  2012,      0}, {0x65, 0x00, 0xb4, 0xff}}},\n    {{{  4303,  -3890,   6106}, 0, {     0,      0}, {0x16, 0x00, 0x84, 0xff}}},\n    {{{   342,  -4300,   5245}, 0, {  8144,      0}, {0x3a, 0x00, 0x90, 0xff}}},\n    {{{   342,  -3685,   5245}, 0, {  8144,    990}, {0x2b, 0x00, 0x89, 0xff}}},\n    {{{  4303,  -3276,   6106}, 0, {     0,    990}, {0x12, 0x00, 0x83, 0xff}}},\n    {{{  6150,  -2856,   5664}, 0, {   988,    990}, {0x8a, 0x00, 0xd3, 0xff}}},\n    {{{  6150,  -3470,   5664}, 0, {   988,    -70}, {0x90, 0x00, 0xc6, 0xff}}},\n    {{{  5980,  -2948,   5918}, 0, {  2012,    990}, {0xa1, 0x00, 0xad, 0xff}}},\n    {{{  5112,  -3788,   6200}, 0, {     0,    -30}, {0x01, 0x00, 0x82, 0xff}}},\n    {{{  4303,  -3890,   6106}, 0, {  2012,    -30}, {0x16, 0x00, 0x84, 0xff}}},\n    {{{  4303,  -3276,   6106}, 0, {  2012,    990}, {0x12, 0x00, 0x83, 0xff}}},\n};\n\n// 0x0701F318 - 0x0701F3F8\nstatic const Vtx ccm_seg7_vertex_0701F318[] = {\n    {{{  5747,  -3040,   6073}, 0, {   980,    990}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  5747,  -3655,   6073}, 0, {   980,    -28}, {0xd8, 0x00, 0x88, 0xff}}},\n    {{{  5112,  -3173,   6200}, 0, {  3044,    990}, {0xf5, 0x00, 0x82, 0xff}}},\n    {{{  5112,  -3788,   6200}, 0, {  3044,    -28}, {0x01, 0x00, 0x82, 0xff}}},\n    {{{  5980,  -2948,   5918}, 0, {     0,    990}, {0xa1, 0x00, 0xad, 0xff}}},\n    {{{  5980,  -3563,   5918}, 0, {     0,    -84}, {0xad, 0x00, 0xa1, 0xff}}},\n    {{{  5747,  -3040,   6073}, 0, {   992,    990}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  5747,  -3655,   6073}, 0, {   988,    -84}, {0xd8, 0x00, 0x88, 0xff}}},\n    {{{  6150,  -3470,   5664}, 0, {   988,    -70}, {0x90, 0x00, 0xc6, 0xff}}},\n    {{{  5980,  -3563,   5918}, 0, {  2012,    -70}, {0xad, 0x00, 0xa1, 0xff}}},\n    {{{  5980,  -2948,   5918}, 0, {  2012,    990}, {0xa1, 0x00, 0xad, 0xff}}},\n    {{{  -797,   3379,   -840}, 0, {   988,    990}, {0x58, 0x00, 0xa5, 0xff}}},\n    {{{  -797,   2765,   -840}, 0, {   988,    -76}, {0x44, 0x00, 0x95, 0xff}}},\n    {{{ -1052,   2662,  -1208}, 0, {  2012,    -76}, {0x73, 0x00, 0xcb, 0xff}}},\n};\n\n// 0x0701F3F8 - 0x0701F4E8\nstatic const Vtx ccm_seg7_vertex_0701F3F8[] = {\n    {{{  6150,  -3470,   5664}, 0, {   988,    -44}, {0x90, 0x00, 0xc6, 0xff}}},\n    {{{  6150,  -2856,   5664}, 0, {   988,    990}, {0x8a, 0x00, 0xd3, 0xff}}},\n    {{{  6256,  -3378,   5258}, 0, {     0,    -44}, {0x83, 0x00, 0xeb, 0xff}}},\n    {{{  6256,  -2764,   5258}, 0, {     0,    990}, {0x82, 0x00, 0xf6, 0xff}}},\n    {{{   480,   3686,   -622}, 0, {  2692,    990}, {0xf9, 0x00, 0x82, 0xff}}},\n    {{{  -295,   2918,   -645}, 0, {  4056,    -78}, {0x12, 0x00, 0x83, 0xff}}},\n    {{{  -295,   3533,   -645}, 0, {  4056,    990}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{   480,   3072,   -622}, 0, {  2692,    -78}, {0xf9, 0x00, 0x82, 0xff}}},\n    {{{  -295,   3533,   -645}, 0, {     0,    990}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{  -797,   2765,   -840}, 0, {   992,    -78}, {0x44, 0x00, 0x95, 0xff}}},\n    {{{  -797,   3379,   -840}, 0, {   992,    990}, {0x58, 0x00, 0xa5, 0xff}}},\n    {{{  -295,   2918,   -645}, 0, {     0,    -78}, {0x12, 0x00, 0x83, 0xff}}},\n    {{{  -897,   3185,  -2121}, 0, {     0,    990}, {0x7b, 0x00, 0x1d, 0xff}}},\n    {{{  -897,   2570,  -2121}, 0, {     0,      0}, {0x79, 0x00, 0x25, 0xff}}},\n    {{{  -752,   2458,  -2986}, 0, {  4056,      0}, {0x7e, 0x00, 0x07, 0xff}}},\n};\n\n// 0x0701F4E8 - 0x0701F5C8\nstatic const Vtx ccm_seg7_vertex_0701F4E8[] = {\n    {{{  -797,   3379,   -840}, 0, {   988,    990}, {0x58, 0x00, 0xa5, 0xff}}},\n    {{{ -1052,   2662,  -1208}, 0, {  2012,    -76}, {0x73, 0x00, 0xcb, 0xff}}},\n    {{{ -1052,   3277,  -1208}, 0, {  2012,    990}, {0x7a, 0x00, 0xe0, 0xff}}},\n    {{{ -1052,   3277,  -1208}, 0, {     0,    990}, {0x7a, 0x00, 0xe0, 0xff}}},\n    {{{ -1088,   2611,  -1622}, 0, {  2012,      0}, {0x7e, 0x00, 0x07, 0xff}}},\n    {{{ -1088,   3226,  -1622}, 0, {  2012,    990}, {0x7c, 0x00, 0x1b, 0xff}}},\n    {{{ -1052,   2662,  -1208}, 0, {     0,      0}, {0x73, 0x00, 0xcb, 0xff}}},\n    {{{ -1088,   3226,  -1622}, 0, {     0,    990}, {0x7c, 0x00, 0x1b, 0xff}}},\n    {{{  -897,   2570,  -2121}, 0, {  2012,      0}, {0x79, 0x00, 0x25, 0xff}}},\n    {{{  -897,   3185,  -2121}, 0, {  2012,    990}, {0x7b, 0x00, 0x1d, 0xff}}},\n    {{{ -1088,   2611,  -1622}, 0, {     0,      0}, {0x7e, 0x00, 0x07, 0xff}}},\n    {{{  -897,   3185,  -2121}, 0, {     0,    990}, {0x7b, 0x00, 0x1d, 0xff}}},\n    {{{  -752,   2458,  -2986}, 0, {  4056,      0}, {0x7e, 0x00, 0x07, 0xff}}},\n    {{{  -752,   3072,  -2986}, 0, {  4056,    990}, {0x7e, 0x00, 0xfb, 0xff}}},\n};\n\n// 0x0701F5C8 - 0x0701F6C8\nstatic const Vtx ccm_seg7_vertex_0701F5C8[] = {\n    {{{ -1644,   2355,  -3411}, 0, {   480,    -28}, {0x85, 0x00, 0x1e, 0xff}}},\n    {{{ -1644,   2970,  -3411}, 0, {   480,    990}, {0x89, 0x00, 0x2a, 0xff}}},\n    {{{ -1822,   2304,  -3789}, 0, {     0,    -28}, {0x95, 0x00, 0x42, 0xff}}},\n    {{{  -752,   3072,  -2986}, 0, {     0,    990}, {0x7e, 0x00, 0xfb, 0xff}}},\n    {{{  -847,   2406,  -3625}, 0, {  2012,      0}, {0x7d, 0x00, 0xee, 0xff}}},\n    {{{  -847,   3021,  -3625}, 0, {  2012,    990}, {0x7d, 0x00, 0xee, 0xff}}},\n    {{{  -752,   2458,  -2986}, 0, {     0,      0}, {0x7e, 0x00, 0x07, 0xff}}},\n    {{{ -1582,   3021,  -2989}, 0, {     0,    990}, {0x82, 0x00, 0x05, 0xff}}},\n    {{{ -1582,   2406,  -2989}, 0, {     0,    -34}, {0x82, 0x00, 0xf9, 0xff}}},\n    {{{ -1691,   3174,  -2337}, 0, {  2012,    990}, {0x83, 0x00, 0xec, 0xff}}},\n    {{{ -1691,   2560,  -2337}, 0, {  2012,    -34}, {0x83, 0x00, 0xec, 0xff}}},\n    {{{ -1582,   2406,  -2989}, 0, {  2012,    -30}, {0x82, 0x00, 0xf9, 0xff}}},\n    {{{ -1582,   3021,  -2989}, 0, {  2012,    990}, {0x82, 0x00, 0x05, 0xff}}},\n    {{{ -1644,   2355,  -3411}, 0, {   988,    -30}, {0x85, 0x00, 0x1e, 0xff}}},\n    {{{ -1644,   2970,  -3411}, 0, {   992,    990}, {0x89, 0x00, 0x2a, 0xff}}},\n    {{{ -1822,   2918,  -3789}, 0, {     0,    990}, {0x9d, 0x00, 0x4e, 0xff}}},\n};\n\n// 0x0701F6C8 - 0x0701F7C8\nstatic const Vtx ccm_seg7_vertex_0701F6C8[] = {\n    {{{ -2412,   2150,  -4379}, 0, {     0,      0}, {0xb7, 0x00, 0x67, 0xff}}},\n    {{{ -1822,   2304,  -3789}, 0, {  2012,      0}, {0x95, 0x00, 0x42, 0xff}}},\n    {{{ -1822,   2918,  -3789}, 0, {  2012,    990}, {0x9d, 0x00, 0x4e, 0xff}}},\n    {{{ -2412,   2765,  -4379}, 0, {     0,    990}, {0xcb, 0x00, 0x73, 0xff}}},\n    {{{ -2412,   2150,  -4379}, 0, {  2012,    -34}, {0xb7, 0x00, 0x67, 0xff}}},\n    {{{ -2412,   2765,  -4379}, 0, {  2012,    990}, {0xcb, 0x00, 0x73, 0xff}}},\n    {{{ -3215,   1997,  -4597}, 0, {     0,    -34}, {0xf5, 0x00, 0x7e, 0xff}}},\n    {{{ -3215,   2611,  -4597}, 0, {     0,    990}, {0x0a, 0x00, 0x7e, 0xff}}},\n    {{{ -4020,   2458,  -4385}, 0, {     0,    990}, {0x48, 0x00, 0x68, 0xff}}},\n    {{{ -4020,   1843,  -4385}, 0, {     0,      0}, {0x35, 0x00, 0x73, 0xff}}},\n    {{{ -3215,   2611,  -4597}, 0, {  2012,    990}, {0x0a, 0x00, 0x7e, 0xff}}},\n    {{{ -4610,   1690,  -3799}, 0, {     0,      0}, {0x67, 0x00, 0x49, 0xff}}},\n    {{{ -4020,   1843,  -4385}, 0, {  2012,      0}, {0x35, 0x00, 0x73, 0xff}}},\n    {{{ -4020,   2458,  -4385}, 0, {  2012,    990}, {0x48, 0x00, 0x68, 0xff}}},\n    {{{ -3215,   1997,  -4597}, 0, {  2012,      0}, {0xf5, 0x00, 0x7e, 0xff}}},\n    {{{ -4610,   2304,  -3799}, 0, {     0,    990}, {0x73, 0x00, 0x35, 0xff}}},\n};\n\n// 0x0701F7C8 - 0x0701FC78\nstatic const Gfx ccm_seg7_dl_0701F7C8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ccm_seg7_lights_0701E720.l, 1),\n    gsSPLight(&ccm_seg7_lights_0701E720.a, 2),\n    gsSPVertex(ccm_seg7_vertex_0701E738, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  4,  7,  6, 0x0),\n    gsSP2Triangles( 7,  8,  6, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles( 3,  5, 10, 0x0,  9, 11, 12, 0x0),\n    gsSP2Triangles( 9, 12,  8, 0x0, 11, 13, 12, 0x0),\n    gsSP1Triangle(11, 14, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701E828, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSP1Triangle(14,  0,  2, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701E918, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701EA08, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701EAF8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(10, 14,  8, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701EBE8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701ECC8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  6,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 10,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701EDB8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  6,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 10,  9, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701EEA8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701EF88, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  3,  5, 0x0,  4,  6,  3, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(11, 13, 12, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701F068, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 5, 10,  6, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701F158, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701F238, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701F318, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701F3F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701F4E8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701F5C8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(14, 13, 12, 0x0, 15,  2,  1, 0x0),\n    gsSPVertex(ccm_seg7_vertex_0701F6C8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  6,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles( 9, 14, 10, 0x0, 15, 11, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701FC78 - 0x0701FCD8\nconst Gfx ccm_seg7_dl_0701FC78[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_0701F7C8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ccm/areas/2/5/model.inc.c",
    "content": "// 0x0701FCD8 - 0x0701FCF0\nstatic const Lights1 ccm_seg7_lights_0701FCD8 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0701FCF0 - 0x0701FD30\nstatic const Vtx ccm_seg7_vertex_0701FCF0[] = {\n    {{{ -7587,  -5600,  -6716}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -7587,  -5703,  -6716}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -7587,  -5703,  -6819}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -7587,  -5600,  -6819}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0701FD30 - 0x0701FD78\nstatic const Gfx ccm_seg7_dl_0701FD30[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ccm_seg7_lights_0701FCD8.l, 1),\n    gsSPLight(&ccm_seg7_lights_0701FCD8.a, 2),\n    gsSPVertex(ccm_seg7_vertex_0701FCF0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701FD78 - 0x0701FDE8\nconst Gfx ccm_seg7_dl_0701FD78[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_0701FD30),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ccm/areas/2/6/model.inc.c",
    "content": "// 0x0701FDE8 - 0x0701FE28\nstatic const Vtx ccm_seg7_vertex_0701FDE8[] = {\n    {{{ -7592,  -5703,  -6819}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7592,  -5600,  -6716}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7592,  -5703,  -6716}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7592,  -5600,  -6819}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701FE28 - 0x0701FE60\nstatic const Gfx ccm_seg7_dl_0701FE28[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ccm_seg7_vertex_0701FDE8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701FE60 - 0x0701FEE0\nconst Gfx ccm_seg7_dl_0701FE60[] = {\n    gsDPPipeSync(),\n    gsDPSetEnvColor(255, 255, 255, 150),\n    gsDPSetCombineMode(G_CC_DECALFADE, G_CC_DECALFADE),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_0701FE28),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ccm/areas/2/7/model.inc.c",
    "content": "// 0x0701FEE0 - 0x0701FEF8\nstatic const Lights1 ccm_seg7_lights_0701FEE0 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x0701FEF8 - 0x0701FF10\nstatic const Lights1 ccm_seg7_lights_0701FEF8 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0701FF10 - 0x0701FF70\nstatic const Vtx ccm_seg7_vertex_0701FF10[] = {\n    {{{  5124,      0,  -8124}, 0, {   224,    479}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5124,  -8191,  -8124}, 0, {   479,    479}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  8308,      0,  -8124}, 0, {   223,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  8308,  -8191,  -8124}, 0, {   479,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  8308,   8192,  -8124}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5124,   8192,  -8124}, 0, {     0,    479}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0701FF70 - 0x07020070\nstatic const Vtx ccm_seg7_vertex_0701FF70[] = {\n    {{{ -6061,  -5830,  -3601}, 0, {  2012,   3948}, {0x00, 0x82, 0x0e, 0xff}}},\n    {{{ -5784,  -5830,  -3601}, 0, {  3034,   3948}, {0x00, 0x82, 0x0e, 0xff}}},\n    {{{ -5784,  -5799,  -3326}, 0, {  3034,   4970}, {0x00, 0x82, 0x0e, 0xff}}},\n    {{{ -5784,  -5845,  -6133}, 0, { -2074,    -28}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -7167,  -6111,  -6133}, 0, {  3034,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -7167,  -5845,  -6133}, 0, {  3034,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5784,  -6111,  -6133}, 0, { -2074,    992}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -7167,  -5799,  -3326}, 0, { -2074,   4970}, {0x00, 0x82, 0x0e, 0xff}}},\n    {{{ -7167,  -5830,  -3601}, 0, { -2074,   3948}, {0x00, 0x82, 0x0e, 0xff}}},\n    {{{ -6890,  -5830,  -3601}, 0, { -1052,   3948}, {0x00, 0x82, 0x0e, 0xff}}},\n    {{{ -6890,  -5830,  -3601}, 0, { -1052,   3948}, {0x00, 0x82, 0x0d, 0xff}}},\n    {{{ -6337,  -5860,  -3876}, 0, {   990,   2926}, {0x00, 0x82, 0x0d, 0xff}}},\n    {{{ -6061,  -5830,  -3601}, 0, {  2012,   3948}, {0x00, 0x82, 0x0d, 0xff}}},\n    {{{ -6614,  -5860,  -3876}, 0, {     0,   2926}, {0x00, 0x82, 0x0d, 0xff}}},\n    {{{ -6890,  -5860,  -3876}, 0, { -1052,   2926}, {0x00, 0x82, 0x0d, 0xff}}},\n    {{{ -6061,  -5860,  -3876}, 0, {  2012,   2926}, {0x00, 0x82, 0x0d, 0xff}}},\n};\n\n// 0x07020070 - 0x07020170\nstatic const Vtx ccm_seg7_vertex_07020070[] = {\n    {{{ -6614,  -5860,  -3876}, 0, {     0,   2926}, {0x00, 0x82, 0x0e, 0xff}}},\n    {{{ -6337,  -6074,  -5800}, 0, {   990,  -4226}, {0x00, 0x82, 0x0e, 0xff}}},\n    {{{ -6337,  -5860,  -3876}, 0, {   990,   2926}, {0x00, 0x82, 0x0e, 0xff}}},\n    {{{ -6614,  -6074,  -5800}, 0, {     0,  -4226}, {0x00, 0x82, 0x0e, 0xff}}},\n    {{{ -6614,  -6074,  -5800}, 0, {     0,  -4226}, {0x00, 0x82, 0x0d, 0xff}}},\n    {{{ -7166,  -6074,  -5800}, 0, { -2072,  -4226}, {0x00, 0x82, 0x0d, 0xff}}},\n    {{{ -7167,  -6112,  -6143}, 0, { -2074,  -5502}, {0x00, 0x82, 0x0d, 0xff}}},\n    {{{ -5784,  -6112,  -6143}, 0, {  3036,  -5502}, {0x00, 0x82, 0x0d, 0xff}}},\n    {{{ -6337,  -6074,  -5800}, 0, {   990,  -4226}, {0x00, 0x82, 0x0d, 0xff}}},\n    {{{ -5784,  -6074,  -5800}, 0, {  3036,  -4226}, {0x00, 0x82, 0x0d, 0xff}}},\n    {{{ -5785,  -5523,  -3326}, 0, {  3034,   5076}, {0x00, 0x7e, 0xf3, 0xff}}},\n    {{{ -5785,  -5553,  -3601}, 0, {  3034,   4054}, {0x00, 0x7e, 0xf3, 0xff}}},\n    {{{ -6061,  -5553,  -3601}, 0, {  2012,   4054}, {0x00, 0x7e, 0xf3, 0xff}}},\n    {{{ -6338,  -5584,  -3876}, 0, {   990,      0}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{ -6337,  -6074,  -5800}, 0, {  8144,    990}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{ -6338,  -5798,  -5800}, 0, {  8144,      0}, {0x7e, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07020170 - 0x07020270\nstatic const Vtx ccm_seg7_vertex_07020170[] = {\n    {{{ -5785,  -5523,  -3326}, 0, {  3034,   5076}, {0x00, 0x7e, 0xf3, 0xff}}},\n    {{{ -6061,  -5553,  -3601}, 0, {  2012,   4054}, {0x00, 0x7e, 0xf3, 0xff}}},\n    {{{ -6891,  -5553,  -3601}, 0, { -1052,   4054}, {0x00, 0x7e, 0xf3, 0xff}}},\n    {{{ -6061,  -5553,  -3601}, 0, {  2012,   4054}, {0x00, 0x7e, 0xf2, 0xff}}},\n    {{{ -6338,  -5584,  -3876}, 0, {   990,   3032}, {0x00, 0x7e, 0xf2, 0xff}}},\n    {{{ -6891,  -5553,  -3601}, 0, { -1052,   4054}, {0x00, 0x7e, 0xf2, 0xff}}},\n    {{{ -6338,  -5798,  -5800}, 0, {   990,  -4120}, {0x00, 0x7e, 0xf2, 0xff}}},\n    {{{ -6614,  -5798,  -5800}, 0, {     0,  -4120}, {0x00, 0x7e, 0xf2, 0xff}}},\n    {{{ -6614,  -5584,  -3876}, 0, {     0,   3032}, {0x00, 0x7e, 0xf2, 0xff}}},\n    {{{ -6061,  -5584,  -3876}, 0, {  2012,   3032}, {0x00, 0x7e, 0xf2, 0xff}}},\n    {{{ -6891,  -5584,  -3876}, 0, { -1052,   3032}, {0x00, 0x7e, 0xf2, 0xff}}},\n    {{{ -7167,  -5553,  -3601}, 0, { -2074,   4054}, {0x00, 0x7e, 0xf3, 0xff}}},\n    {{{ -7167,  -5523,  -3326}, 0, { -2074,   5076}, {0x00, 0x7e, 0xf3, 0xff}}},\n    {{{ -6338,  -5584,  -3876}, 0, {   990,      0}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{ -6337,  -5860,  -3876}, 0, {   990,    990}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{ -6337,  -6074,  -5800}, 0, {  8144,    990}, {0x7e, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07020270 - 0x07020360\nstatic const Vtx ccm_seg7_vertex_07020270[] = {\n    {{{ -6338,  -5798,  -5800}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5784,  -6074,  -5800}, 0, {  3034,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5784,  -5798,  -5800}, 0, {  3034,    -30}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -6061,  -5553,  -3601}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6061,  -5860,  -3876}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6061,  -5584,  -3876}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6061,  -5830,  -3601}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6891,  -5584,  -3876}, 0, {     0,      0}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{ -6890,  -5860,  -3876}, 0, {     0,    990}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{ -6890,  -5830,  -3601}, 0, {   990,    990}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{ -6891,  -5553,  -3601}, 0, {   990,      0}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{ -6614,  -5798,  -5800}, 0, { -7184,    -30}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -6614,  -6074,  -5800}, 0, { -7184,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -6614,  -5860,  -3876}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -6614,  -5584,  -3876}, 0, {     0,    -30}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07020360 - 0x07020450\nstatic const Vtx ccm_seg7_vertex_07020360[] = {\n    {{{ -6614,  -5584,  -3876}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6614,  -5860,  -3876}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6890,  -5860,  -3876}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6338,  -5798,  -5800}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -6337,  -6074,  -5800}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5784,  -6074,  -5800}, 0, {  3034,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -7167,  -5798,  -5800}, 0, { -2074,    -34}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -7166,  -6074,  -5800}, 0, { -2074,    988}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -6614,  -6074,  -5800}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -6614,  -5798,  -5800}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -6891,  -5553,  -3601}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -7167,  -5830,  -3601}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -7167,  -5553,  -3601}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6890,  -5830,  -3601}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6891,  -5584,  -3876}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07020450 - 0x07020540\nstatic const Vtx ccm_seg7_vertex_07020450[] = {\n    {{{ -7167,  -5836,  -6143}, 0, { -2074,  -5398}, {0x00, 0x7e, 0xf3, 0xff}}},\n    {{{ -7167,  -5798,  -5800}, 0, { -2074,  -4120}, {0x00, 0x7e, 0xf3, 0xff}}},\n    {{{ -6614,  -5798,  -5800}, 0, {     0,  -4120}, {0x00, 0x7e, 0xf3, 0xff}}},\n    {{{ -6061,  -5584,  -3876}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6337,  -5860,  -3876}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6338,  -5584,  -3876}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6061,  -5860,  -3876}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5785,  -5553,  -3601}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6061,  -5830,  -3601}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6061,  -5553,  -3601}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5784,  -5830,  -3601}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -7167,  -5534,  -3337}, 0, { -2074,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -7167,  -5800,  -3337}, 0, { -2074,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5784,  -5800,  -3337}, 0, {  3034,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5785,  -5534,  -3337}, 0, {  3034,    -28}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07020540 - 0x07020590\nstatic const Vtx ccm_seg7_vertex_07020540[] = {\n    {{{ -6338,  -5798,  -5800}, 0, {   990,  -4120}, {0x00, 0x7e, 0xf3, 0xff}}},\n    {{{ -5784,  -5798,  -5800}, 0, {  3034,  -4120}, {0x00, 0x7e, 0xf3, 0xff}}},\n    {{{ -5784,  -5836,  -6143}, 0, {  3034,  -5398}, {0x00, 0x7e, 0xf3, 0xff}}},\n    {{{ -7167,  -5836,  -6143}, 0, { -2074,  -5398}, {0x00, 0x7e, 0xf3, 0xff}}},\n    {{{ -6614,  -5798,  -5800}, 0, {     0,  -4120}, {0x00, 0x7e, 0xf3, 0xff}}},\n};\n\n// 0x07020590 - 0x070205E8\nstatic const Gfx ccm_seg7_dl_07020590[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, ccm_seg7_texture_07003900),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 16 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ccm_seg7_lights_0701FEE0.l, 1),\n    gsSPLight(&ccm_seg7_lights_0701FEE0.a, 2),\n    gsSPVertex(ccm_seg7_vertex_0701FF10, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  5,  0,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070205E8 - 0x070207F0\nstatic const Gfx ccm_seg7_dl_070205E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, ccm_seg7_texture_07003B00),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ccm_seg7_lights_0701FEF8.l, 1),\n    gsSPLight(&ccm_seg7_lights_0701FEF8.a, 2),\n    gsSPVertex(ccm_seg7_vertex_0701FF70, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9,  2, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(10, 13, 11, 0x0, 10, 14, 13, 0x0),\n    gsSP2Triangles( 9,  0,  2, 0x0, 11, 15, 12, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07020070, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 7,  8,  4, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07020170, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 4,  8,  5, 0x0,  3,  9,  4, 0x0),\n    gsSP2Triangles( 8, 10,  5, 0x0,  2, 11, 12, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07020270, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07020360, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07020450, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07020540, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP1Triangle( 3,  4,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070207F0 - 0x07020880\nconst Gfx ccm_seg7_dl_070207F0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 4, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (16 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_07020590),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_070205E8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ccm/areas/2/collision.inc.c",
    "content": "// 0x07020880 - 0x07023468\nconst Collision ccm_seg7_area_2_collision[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x2C4),\n    COL_VERTEX(8192, -8191, -8191),\n    COL_VERTEX(-8191, -8191, -8191),\n    COL_VERTEX(-8191, -8191, 8192),\n    COL_VERTEX(8192, -8191, 8192),\n    COL_VERTEX(-5477, -4812, -7679),\n    COL_VERTEX(-5682, -4812, -7372),\n    COL_VERTEX(-5682, -4812, -6450),\n    COL_VERTEX(-5477, -4812, -6450),\n    COL_VERTEX(-6706, -4812, -7679),\n    COL_VERTEX(-6706, -4812, -7372),\n    COL_VERTEX(-7576, -5836, -6450),\n    COL_VERTEX(-5682, -5836, -7372),\n    COL_VERTEX(-7576, -5836, -7372),\n    COL_VERTEX(-5682, -5836, -6450),\n    COL_VERTEX(-6296, -5836, -6450),\n    COL_VERTEX(-6706, -5836, -6143),\n    COL_VERTEX(-6296, -5836, -6143),\n    COL_VERTEX(-6706, -5836, -6450),\n    COL_VERTEX(-6348, 6656, -5529),\n    COL_VERTEX(-5119, 6656, -6553),\n    COL_VERTEX(-5119, 6656, -5529),\n    COL_VERTEX(-5119, 6656, -6757),\n    COL_VERTEX(-6348, 6656, -6757),\n    COL_VERTEX(-5119, 6656, -5733),\n    COL_VERTEX(-4709, 6656, -5733),\n    COL_VERTEX(-4709, 6656, -6553),\n    COL_VERTEX(-6338, -6074, -5800),\n    COL_VERTEX(-6614, -6074, -5800),\n    COL_VERTEX(-7167, -6112, -6143),\n    COL_VERTEX(-7167, -6074, -5800),\n    COL_VERTEX(-6338, -5860, -3876),\n    COL_VERTEX(-6614, -5860, -3876),\n    COL_VERTEX(-6706, -6112, -6143),\n    COL_VERTEX(-6296, -6112, -6143),\n    COL_VERTEX(-5785, -6112, -6143),\n    COL_VERTEX(-5785, -6074, -5800),\n    COL_VERTEX(-6061, -5830, -3600),\n    COL_VERTEX(-6061, -5860, -3876),\n    COL_VERTEX(-6891, -5830, -3600),\n    COL_VERTEX(-6891, -5860, -3876),\n    COL_VERTEX(-5785, -5830, -3600),\n    COL_VERTEX(-5785, -5799, -3326),\n    COL_VERTEX(-7167, -5830, -3600),\n    COL_VERTEX(-6911, -5799, -3326),\n    COL_VERTEX(-6092, -5799, -3326),\n    COL_VERTEX(-6061, -5553, -3600),\n    COL_VERTEX(-6891, -5553, -3600),\n    COL_VERTEX(-6338, -5584, -3876),\n    COL_VERTEX(-6614, -5584, -3876),\n    COL_VERTEX(-7167, -5523, -3326),\n    COL_VERTEX(-6891, -5584, -3876),\n    COL_VERTEX(-6338, -5798, -5800),\n    COL_VERTEX(-7167, -5836, -6143),\n    COL_VERTEX(-7167, -5799, -3326),\n    COL_VERTEX(-5785, -5523, -3326),\n    COL_VERTEX(-5785, -5553, -3600),\n    COL_VERTEX(-6061, -5584, -3876),\n    COL_VERTEX(-6092, -5523, -3326),\n    COL_VERTEX(-7167, -5553, -3600),\n    COL_VERTEX(-6911, -5523, -3326),\n    COL_VERTEX(-6614, -5798, -5800),\n    COL_VERTEX(-5785, -5836, -6143),\n    COL_VERTEX(-5785, -5798, -5800),\n    COL_VERTEX(-7167, -5798, -5800),\n    COL_VERTEX(-7576, -5600, -6716),\n    COL_VERTEX(-7576, -5703, -6716),\n    COL_VERTEX(-7576, -5703, -6819),\n    COL_VERTEX(-7576, -5600, -6819),\n    COL_VERTEX(-5254, 1685, -284),\n    COL_VERTEX(-4472, 1685, -284),\n    COL_VERTEX(-4450, 1894, -861),\n    COL_VERTEX(-5269, 1894, -861),\n    COL_VERTEX(-5080, -727, 6150),\n    COL_VERTEX(-4896, -776, 6150),\n    COL_VERTEX(-3221, 1741, -531),\n    COL_VERTEX(-4454, 2005, -755),\n    COL_VERTEX(-3212, 1741, -1352),\n    COL_VERTEX(-4030, 1843, -1600),\n    COL_VERTEX(-5350, 2048, -1761),\n    COL_VERTEX(-6324, -1569, 3246),\n    COL_VERTEX(-6325, -4210, -6450),\n    COL_VERTEX(-6251, -1496, 3246),\n    COL_VERTEX(-6424, -4237, -6450),\n    COL_VERTEX(-6424, -1595, 3246),\n    COL_VERTEX(-6245, -5375, -6450),\n    COL_VERTEX(-6366, -1528, 3834),\n    COL_VERTEX(-6464, -1554, 3821),\n    COL_VERTEX(-6293, -1455, 3844),\n    COL_VERTEX(-6524, -1569, 3246),\n    COL_VERTEX(-6563, -1528, 3808),\n    COL_VERTEX(-6597, -1496, 3246),\n    COL_VERTEX(-6706, -3839, -6450),\n    COL_VERTEX(-6635, -1455, 3799),\n    COL_VERTEX(-6623, -1396, 3246),\n    COL_VERTEX(-6662, -1355, 3795),\n    COL_VERTEX(-6597, -1297, 3246),\n    COL_VERTEX(-6524, -3865, -6450),\n    COL_VERTEX(-6635, -1256, 3799),\n    COL_VERTEX(-6524, -1224, 3246),\n    COL_VERTEX(-6563, -1183, 3808),\n    COL_VERTEX(-6424, -1197, 3246),\n    COL_VERTEX(-6325, -3865, -6450),\n    COL_VERTEX(-6464, -1156, 3821),\n    COL_VERTEX(-6324, -1224, 3246),\n    COL_VERTEX(-5477, -3839, -6450),\n    COL_VERTEX(-6366, -1183, 3834),\n    COL_VERTEX(-6251, -1297, 3246),\n    COL_VERTEX(-6293, -1256, 3844),\n    COL_VERTEX(-6225, -1396, 3246),\n    COL_VERTEX(-6252, -4137, -6450),\n    COL_VERTEX(-6267, -1355, 3847),\n    COL_VERTEX(-5239, -642, 6453),\n    COL_VERTEX(-5115, -770, 6486),\n    COL_VERTEX(-5343, -692, 6743),\n    COL_VERTEX(-5238, -813, 6804),\n    COL_VERTEX(-4946, -817, 6531),\n    COL_VERTEX(-5215, -592, 6150),\n    COL_VERTEX(-5094, -858, 6887),\n    COL_VERTEX(-4777, -770, 6577),\n    COL_VERTEX(-4712, -727, 6150),\n    COL_VERTEX(-4577, -592, 6150),\n    COL_VERTEX(-4950, -813, 6970),\n    COL_VERTEX(-4653, -642, 6610),\n    COL_VERTEX(-4608, -467, 6622),\n    COL_VERTEX(-4527, -408, 6150),\n    COL_VERTEX(-4844, -692, 7031),\n    COL_VERTEX(-4653, -292, 6610),\n    COL_VERTEX(-4577, -223, 6150),\n    COL_VERTEX(-4805, -525, 7053),\n    COL_VERTEX(-4712, -88, 6150),\n    COL_VERTEX(-4777, -164, 6577),\n    COL_VERTEX(-4844, -359, 7031),\n    COL_VERTEX(-4896, -39, 6150),\n    COL_VERTEX(-4946, -117, 6531),\n    COL_VERTEX(-4950, -237, 6970),\n    COL_VERTEX(-5115, -164, 6486),\n    COL_VERTEX(-5080, -88, 6150),\n    COL_VERTEX(-5094, -193, 6887),\n    COL_VERTEX(-5239, -292, 6453),\n    COL_VERTEX(-5215, -223, 6150),\n    COL_VERTEX(-5238, -237, 6804),\n    COL_VERTEX(-5265, -408, 6150),\n    COL_VERTEX(-5285, -467, 6441),\n    COL_VERTEX(-5343, -359, 6743),\n    COL_VERTEX(-5382, -525, 6721),\n    COL_VERTEX(-5521, -741, 6999),\n    COL_VERTEX(-5440, -857, 7081),\n    COL_VERTEX(-5328, -899, 7192),\n    COL_VERTEX(-5216, -857, 7304),\n    COL_VERTEX(-5134, -741, 7386),\n    COL_VERTEX(-5104, -583, 7416),\n    COL_VERTEX(-5134, -425, 7386),\n    COL_VERTEX(-5216, -309, 7304),\n    COL_VERTEX(-5328, -267, 7192),\n    COL_VERTEX(-5440, -309, 7081),\n    COL_VERTEX(-5521, -425, 6999),\n    COL_VERTEX(-5551, -583, 6969),\n    COL_VERTEX(-5763, -790, 7202),\n    COL_VERTEX(-5708, -900, 7297),\n    COL_VERTEX(-5633, -940, 7427),\n    COL_VERTEX(-5558, -900, 7557),\n    COL_VERTEX(-5503, -790, 7652),\n    COL_VERTEX(-5483, -640, 7687),\n    COL_VERTEX(-5503, -490, 7652),\n    COL_VERTEX(-5558, -380, 7557),\n    COL_VERTEX(-5633, -339, 7427),\n    COL_VERTEX(-5708, -380, 7297),\n    COL_VERTEX(-5763, -490, 7202),\n    COL_VERTEX(-5783, -640, 7167),\n    COL_VERTEX(-6053, -838, 7335),\n    COL_VERTEX(-6026, -943, 7436),\n    COL_VERTEX(-5989, -981, 7574),\n    COL_VERTEX(-5952, -943, 7712),\n    COL_VERTEX(-5925, -838, 7813),\n    COL_VERTEX(-5915, -696, 7850),\n    COL_VERTEX(-5925, -553, 7813),\n    COL_VERTEX(-5952, -449, 7712),\n    COL_VERTEX(-5989, -410, 7574),\n    COL_VERTEX(-6026, -449, 7436),\n    COL_VERTEX(-6053, -553, 7335),\n    COL_VERTEX(-6371, -886, 7390),\n    COL_VERTEX(-6371, -986, 7489),\n    COL_VERTEX(-6371, -1022, 7624),\n    COL_VERTEX(-6371, -986, 7760),\n    COL_VERTEX(-6371, -751, 7895),\n    COL_VERTEX(-6371, -615, 7859),\n    COL_VERTEX(-6371, -516, 7760),\n    COL_VERTEX(-6371, -480, 7624),\n    COL_VERTEX(-6371, -516, 7489),\n    COL_VERTEX(-6063, -696, 7299),\n    COL_VERTEX(-6371, -615, 7390),\n    COL_VERTEX(-6695, -934, 7359),\n    COL_VERTEX(-6719, -1028, 7450),\n    COL_VERTEX(-6752, -1063, 7574),\n    COL_VERTEX(-6371, -886, 7859),\n    COL_VERTEX(-6786, -1028, 7698),\n    COL_VERTEX(-6819, -805, 7823),\n    COL_VERTEX(-6810, -677, 7789),\n    COL_VERTEX(-6786, -582, 7698),\n    COL_VERTEX(-6752, -548, 7574),\n    COL_VERTEX(-6719, -582, 7450),\n    COL_VERTEX(-6695, -677, 7359),\n    COL_VERTEX(-6371, -751, 7353),\n    COL_VERTEX(-7002, -982, 7243),\n    COL_VERTEX(-7047, -1071, 7321),\n    COL_VERTEX(-7108, -1104, 7427),\n    COL_VERTEX(-7169, -1071, 7533),\n    COL_VERTEX(-6810, -934, 7789),\n    COL_VERTEX(-7230, -859, 7639),\n    COL_VERTEX(-7214, -737, 7610),\n    COL_VERTEX(-7169, -647, 7533),\n    COL_VERTEX(-7108, -615, 7427),\n    COL_VERTEX(-7047, -647, 7321),\n    COL_VERTEX(-7002, -737, 7243),\n    COL_VERTEX(-6686, -805, 7325),\n    COL_VERTEX(-7271, -1029, 7050),\n    COL_VERTEX(-7331, -1114, 7110),\n    COL_VERTEX(-7413, -1145, 7192),\n    COL_VERTEX(-7495, -1114, 7275),\n    COL_VERTEX(-7214, -982, 7610),\n    COL_VERTEX(-7578, -912, 7357),\n    COL_VERTEX(-7556, -796, 7335),\n    COL_VERTEX(-7495, -711, 7275),\n    COL_VERTEX(-7413, -680, 7192),\n    COL_VERTEX(-7331, -711, 7110),\n    COL_VERTEX(-6986, -859, 7215),\n    COL_VERTEX(-7271, -796, 7050),\n    COL_VERTEX(-7482, -1075, 6791),\n    COL_VERTEX(-7552, -1156, 6832),\n    COL_VERTEX(-7648, -1186, 6887),\n    COL_VERTEX(-7556, -1029, 7335),\n    COL_VERTEX(-7743, -1156, 6942),\n    COL_VERTEX(-7839, -965, 6997),\n    COL_VERTEX(-7813, -855, 6983),\n    COL_VERTEX(-7743, -774, 6942),\n    COL_VERTEX(-7648, -744, 6887),\n    COL_VERTEX(-7552, -774, 6832),\n    COL_VERTEX(-7482, -855, 6791),\n    COL_VERTEX(-7249, -912, 7028),\n    COL_VERTEX(-7620, -1122, 6484),\n    COL_VERTEX(-7694, -1199, 6504),\n    COL_VERTEX(-7795, -1227, 6531),\n    COL_VERTEX(-7896, -1199, 6559),\n    COL_VERTEX(-7813, -1075, 6983),\n    COL_VERTEX(-7997, -1017, 6586),\n    COL_VERTEX(-7970, -912, 6578),\n    COL_VERTEX(-7896, -835, 6559),\n    COL_VERTEX(-7795, -807, 6531),\n    COL_VERTEX(-7694, -835, 6504),\n    COL_VERTEX(-7620, -912, 6484),\n    COL_VERTEX(-7456, -965, 6777),\n    COL_VERTEX(-7673, -1168, 6150),\n    COL_VERTEX(-7746, -1241, 6150),\n    COL_VERTEX(-7845, -1268, 6150),\n    COL_VERTEX(-7945, -1241, 6150),\n    COL_VERTEX(-7970, -1122, 6578),\n    COL_VERTEX(-8044, -1068, 6150),\n    COL_VERTEX(-8018, -969, 6150),\n    COL_VERTEX(-7945, -896, 6150),\n    COL_VERTEX(-7845, -869, 6150),\n    COL_VERTEX(-7746, -896, 6150),\n    COL_VERTEX(-7592, -1017, 6477),\n    COL_VERTEX(-7673, -969, 6150),\n    COL_VERTEX(-7634, -1209, 5764),\n    COL_VERTEX(-7704, -1282, 5745),\n    COL_VERTEX(-7801, -1309, 5720),\n    COL_VERTEX(-8018, -1168, 6150),\n    COL_VERTEX(-7897, -1282, 5694),\n    COL_VERTEX(-7993, -1109, 5668),\n    COL_VERTEX(-7967, -1010, 5675),\n    COL_VERTEX(-7897, -937, 5694),\n    COL_VERTEX(-7801, -910, 5720),\n    COL_VERTEX(-7704, -937, 5745),\n    COL_VERTEX(-7646, -1068, 6150),\n    COL_VERTEX(-7608, -1109, 5771),\n    COL_VERTEX(-7458, -1250, 5455),\n    COL_VERTEX(-7520, -1323, 5417),\n    COL_VERTEX(-7605, -1350, 5364),\n    COL_VERTEX(-7967, -1209, 5675),\n    COL_VERTEX(-7751, -1250, 5274),\n    COL_VERTEX(-7774, -1150, 5260),\n    COL_VERTEX(-7751, -1051, 5274),\n    COL_VERTEX(-7689, -978, 5312),\n    COL_VERTEX(-7605, -951, 5364),\n    COL_VERTEX(-7634, -1010, 5764),\n    COL_VERTEX(-7435, -1150, 5469),\n    COL_VERTEX(-7208, -1291, 5178),\n    COL_VERTEX(-7265, -1364, 5133),\n    COL_VERTEX(-7689, -1323, 5312),\n    COL_VERTEX(-7344, -1391, 5072),\n    COL_VERTEX(-7422, -1364, 5011),\n    COL_VERTEX(-7480, -1291, 4966),\n    COL_VERTEX(-7480, -1092, 4966),\n    COL_VERTEX(-7422, -1019, 5011),\n    COL_VERTEX(-7520, -978, 5417),\n    COL_VERTEX(-7344, -992, 5072),\n    COL_VERTEX(-7265, -1019, 5133),\n    COL_VERTEX(-7458, -1051, 5455),\n    COL_VERTEX(-7208, -1092, 5178),\n    COL_VERTEX(-7187, -1191, 5195),\n    COL_VERTEX(-6947, -1332, 4930),\n    COL_VERTEX(-6999, -1405, 4879),\n    COL_VERTEX(-7071, -1432, 4809),\n    COL_VERTEX(-7501, -1191, 4949),\n    COL_VERTEX(-7194, -1332, 4689),\n    COL_VERTEX(-7194, -1133, 4689),\n    COL_VERTEX(-7142, -1060, 4740),\n    COL_VERTEX(-7071, -1033, 4809),\n    COL_VERTEX(-6947, -1133, 4930),\n    COL_VERTEX(-7142, -1405, 4740),\n    COL_VERTEX(-7213, -1232, 4670),\n    COL_VERTEX(-6999, -1060, 4879),\n    COL_VERTEX(-6928, -1232, 4948),\n    COL_VERTEX(-6743, -1446, 4638),\n    COL_VERTEX(-6690, -1373, 4689),\n    COL_VERTEX(-6814, -1472, 4568),\n    COL_VERTEX(-6885, -1446, 4499),\n    COL_VERTEX(-6937, -1373, 4448),\n    COL_VERTEX(-6957, -1273, 4429),\n    COL_VERTEX(-6763, -1314, 4158),\n    COL_VERTEX(-6937, -1174, 4448),\n    COL_VERTEX(-6885, -1101, 4499),\n    COL_VERTEX(-6814, -1074, 4568),\n    COL_VERTEX(-6743, -1101, 4638),\n    COL_VERTEX(-6690, -1174, 4689),\n    COL_VERTEX(-6671, -1273, 4707),\n    COL_VERTEX(-6440, -1215, 4341),\n    COL_VERTEX(-6417, -1314, 4355),\n    COL_VERTEX(-6440, -1414, 4341),\n    COL_VERTEX(-6503, -1487, 4305),\n    COL_VERTEX(-6590, -1513, 4256),\n    COL_VERTEX(-6676, -1487, 4207),\n    COL_VERTEX(-6740, -1414, 4171),\n    COL_VERTEX(-6740, -1215, 4171),\n    COL_VERTEX(-6676, -1142, 4207),\n    COL_VERTEX(-6590, -1115, 4256),\n    COL_VERTEX(-6503, -1142, 4305),\n    COL_VERTEX(-5438, 2157, -1709),\n    COL_VERTEX(-5781, 2310, -2989),\n    COL_VERTEX(-5269, 2619, -861),\n    COL_VERTEX(-4454, 2619, -755),\n    COL_VERTEX(-4773, 2928, -2093),\n    COL_VERTEX(-5438, 2771, -1709),\n    COL_VERTEX(-5254, 2619, -284),\n    COL_VERTEX(-3221, 1849, -422),\n    COL_VERTEX(-4472, 2619, -284),\n    COL_VERTEX(-3221, 2464, -422),\n    COL_VERTEX(-6296, -5426, -6501),\n    COL_VERTEX(-6706, -5426, -6501),\n    COL_VERTEX(-6245, -5836, -6501),\n    COL_VERTEX(-6245, -5836, -6450),\n    COL_VERTEX(-6757, -5375, -6450),\n    COL_VERTEX(-7576, -5426, -6450),\n    COL_VERTEX(-7576, -5836, -6911),\n    COL_VERTEX(-5477, -3839, -7679),\n    COL_VERTEX(-8191, -5836, -7372),\n    COL_VERTEX(-8191, -5068, -7372),\n    COL_VERTEX(-6706, -5836, -7372),\n    COL_VERTEX(-7576, -5426, -7372),\n    COL_VERTEX(-7679, -5580, -6911),\n    COL_VERTEX(-7576, -5836, -7065),\n    COL_VERTEX(-7679, -5836, -6911),\n    COL_VERTEX(-6706, -5426, -6143),\n    COL_VERTEX(-6296, -5426, -6143),\n    COL_VERTEX(-6706, -5836, -6501),\n    COL_VERTEX(-5784, -5836, -6143),\n    COL_VERTEX(-5784, -4198, -3326),\n    COL_VERTEX(-5119, 7322, -6553),\n    COL_VERTEX(-5938, 7680, -6245),\n    COL_VERTEX(-5119, 7680, -5529),\n    COL_VERTEX(-5119, 7680, -6757),\n    COL_VERTEX(-4709, 7322, -6553),\n    COL_VERTEX(-4709, 7322, -5733),\n    COL_VERTEX(-6348, 7680, -5529),\n    COL_VERTEX(-6348, 7680, -6757),\n    COL_VERTEX(-5938, 8038, -6041),\n    COL_VERTEX(-5733, 8038, -6245),\n    COL_VERTEX(-5938, 8038, -6245),\n    COL_VERTEX(6253, -2355, 1594),\n    COL_VERTEX(6253, -2378, 1700),\n    COL_VERTEX(6253, -2321, 1504),\n    COL_VERTEX(6255, -1170, -303),\n    COL_VERTEX(6255, -1144, -381),\n    COL_VERTEX(6253, -2992, 1700),\n    COL_VERTEX(6256, -2764, 5258),\n    COL_VERTEX(6150, -3470, 5664),\n    COL_VERTEX(-4450, 1894, -5118),\n    COL_VERTEX(-4450, 2509, -5118),\n    COL_VERTEX(-5350, 2355, -4218),\n    COL_VERTEX(-1902, -4300, 294),\n    COL_VERTEX(-1902, -4914, 294),\n    COL_VERTEX(-1864, -8191, 199),\n    COL_VERTEX(-158, -4709, 1919),\n    COL_VERTEX(-158, -4095, 1919),\n    COL_VERTEX(-4610, 2304, -3799),\n    COL_VERTEX(-4610, 1690, -3799),\n    COL_VERTEX(-4829, 2150, -2983),\n    COL_VERTEX(-4617, 1997, -2191),\n    COL_VERTEX(-4617, 1382, -2191),\n    COL_VERTEX(-5679, 2202, -2989),\n    COL_VERTEX(-4030, 1229, -1600),\n    COL_VERTEX(-3212, 1126, -1352),\n    COL_VERTEX(-254, 410, -1541),\n    COL_VERTEX(-254, 1024, -1541),\n    COL_VERTEX(1218, 154, -1980),\n    COL_VERTEX(1218, 768, -1980),\n    COL_VERTEX(-173, 1024, -719),\n    COL_VERTEX(2293, -50, -3038),\n    COL_VERTEX(2293, 563, -3038),\n    COL_VERTEX(2598, -255, -4354),\n    COL_VERTEX(2625, -171, -5167),\n    COL_VERTEX(2625, 442, -5167),\n    COL_VERTEX(3466, 287, -5105),\n    COL_VERTEX(2840, 434, -5585),\n    COL_VERTEX(6239, -821, -5279),\n    COL_VERTEX(6253, -1738, -870),\n    COL_VERTEX(6253, -1123, -870),\n    COL_VERTEX(7072, -1123, -870),\n    COL_VERTEX(7075, -1134, -469),\n    COL_VERTEX(6205, -811, -5368),\n    COL_VERTEX(6205, -197, -5368),\n    COL_VERTEX(6121, -797, -5437),\n    COL_VERTEX(6121, -182, -5437),\n    COL_VERTEX(6239, -206, -5279),\n    COL_VERTEX(5957, -767, -5473),\n    COL_VERTEX(5957, -153, -5473),\n    COL_VERTEX(4059, -437, -5372),\n    COL_VERTEX(4059, 176, -5372),\n    COL_VERTEX(4058, 347, -5964),\n    COL_VERTEX(3736, 236, -5322),\n    COL_VERTEX(3736, -378, -5322),\n    COL_VERTEX(3606, 263, -5277),\n    COL_VERTEX(3503, -336, -5219),\n    COL_VERTEX(3503, 278, -5219),\n    COL_VERTEX(480, 3686, -622),\n    COL_VERTEX(480, 3072, -622),\n    COL_VERTEX(2106, 3891, -872),\n    COL_VERTEX(2106, 3471, -872),\n    COL_VERTEX(4545, 4276, -2227),\n    COL_VERTEX(4545, 3662, -2227),\n    COL_VERTEX(5839, 3746, -3683),\n    COL_VERTEX(5188, 4715, -5317),\n    COL_VERTEX(5985, 3839, -5088),\n    COL_VERTEX(5731, 3945, -5260),\n    COL_VERTEX(5731, 4559, -5260),\n    COL_VERTEX(6128, 3761, -4766),\n    COL_VERTEX(6135, 3739, -4325),\n    COL_VERTEX(2106, 4086, -872),\n    COL_VERTEX(-1440, -4197, 1506),\n    COL_VERTEX(-2206, -4914, 1064),\n    COL_VERTEX(-1440, -4812, 1506),\n    COL_VERTEX(-2206, -4300, 1064),\n    COL_VERTEX(-871, -4197, 889),\n    COL_VERTEX(-173, -4709, 2895),\n    COL_VERTEX(-173, -4095, 2895),\n    COL_VERTEX(-448, -4607, 3720),\n    COL_VERTEX(-448, -3993, 3720),\n    COL_VERTEX(-448, -4505, 4370),\n    COL_VERTEX(-448, -3890, 4370),\n    COL_VERTEX(-165, -4402, 4890),\n    COL_VERTEX(-165, -3788, 4890),\n    COL_VERTEX(342, -4300, 5245),\n    COL_VERTEX(342, -3685, 5245),\n    COL_VERTEX(-1268, -3849, 4579),\n    COL_VERTEX(4303, -3890, 6106),\n    COL_VERTEX(4303, -3276, 6106),\n    COL_VERTEX(5112, -3788, 6200),\n    COL_VERTEX(5112, -3173, 6200),\n    COL_VERTEX(5747, -3655, 6073),\n    COL_VERTEX(5747, -3040, 6073),\n    COL_VERTEX(5980, -3563, 5918),\n    COL_VERTEX(5980, -2948, 5918),\n    COL_VERTEX(5907, -3010, 6459),\n    COL_VERTEX(6150, -2856, 5664),\n    COL_VERTEX(6275, -2917, 6213),\n    COL_VERTEX(-295, 3533, -645),\n    COL_VERTEX(-797, 3379, -840),\n    COL_VERTEX(-1052, 3277, -1208),\n    COL_VERTEX(-1088, 3226, -1622),\n    COL_VERTEX(-897, 3185, -2121),\n    COL_VERTEX(-752, 3072, -2986),\n    COL_VERTEX(-1582, 2406, -2989),\n    COL_VERTEX(-1582, 3021, -2989),\n    COL_VERTEX(-1644, 2970, -3411),\n    COL_VERTEX(-1644, 2355, -3411),\n    COL_VERTEX(-1822, 2918, -3789),\n    COL_VERTEX(-847, 3021, -3625),\n    COL_VERTEX(-2412, 2150, -4379),\n    COL_VERTEX(-2412, 2765, -4379),\n    COL_VERTEX(-1093, 2970, -4218),\n    COL_VERTEX(-3215, 2611, -4597),\n    COL_VERTEX(-1992, 2816, -5118),\n    COL_VERTEX(-4020, 1843, -4385),\n    COL_VERTEX(-3221, 2662, -5447),\n    COL_VERTEX(-4020, 2458, -4385),\n    COL_VERTEX(-4604, -4709, -340),\n    COL_VERTEX(-5733, -4812, -363),\n    COL_VERTEX(-5726, -4812, 443),\n    COL_VERTEX(-5733, -4197, -363),\n    COL_VERTEX(-4679, -4709, 483),\n    COL_VERTEX(6528, -2825, 5834),\n    COL_VERTEX(6907, -2784, 6005),\n    COL_VERTEX(6571, -2856, 6509),\n    COL_VERTEX(6067, -2948, 6845),\n    COL_VERTEX(4028, -3276, 6885),\n    COL_VERTEX(6993, -206, -5375),\n    COL_VERTEX(7238, -133, -5406),\n    COL_VERTEX(6255, -1134, -469),\n    COL_VERTEX(-6911, -4965, -626),\n    COL_VERTEX(-5958, -4914, -553),\n    COL_VERTEX(-6594, -4863, 7),\n    COL_VERTEX(-991, -4095, 2759),\n    COL_VERTEX(6060, 8, -6014),\n    COL_VERTEX(3596, 420, -5926),\n    COL_VERTEX(4060, 569, -6198),\n    COL_VERTEX(3192, 427, -5831),\n    COL_VERTEX(3530, 638, -6134),\n    COL_VERTEX(3080, 576, -5912),\n    COL_VERTEX(-792, -3747, 5451),\n    COL_VERTEX(-4688, -4607, 585),\n    COL_VERTEX(-5725, -4668, 589),\n    COL_VERTEX(-7167, -4197, -3326),\n    COL_VERTEX(-7167, -8191, -3326),\n    COL_VERTEX(-5784, -8191, -3326),\n    COL_VERTEX(-1268, -3993, 3587),\n    COL_VERTEX(3412, 358, -4153),\n    COL_VERTEX(6454, -66, -5967),\n    COL_VERTEX(6792, -137, -5770),\n    COL_VERTEX(7075, -2764, 5366),\n    COL_VERTEX(1649, 768, -1238),\n    COL_VERTEX(3052, 563, -2654),\n    COL_VERTEX(2598, 358, -4354),\n    COL_VERTEX(5132, 4289, -1404),\n    COL_VERTEX(6168, 4665, -6160),\n    COL_VERTEX(3825, 5012, -5324),\n    COL_VERTEX(6707, 4565, -5611),\n    COL_VERTEX(5985, 4453, -5088),\n    COL_VERTEX(6978, 4508, -4924),\n    COL_VERTEX(6128, 4376, -4766),\n    COL_VERTEX(6135, 4354, -4325),\n    COL_VERTEX(6977, 4464, -4141),\n    COL_VERTEX(6582, 4457, -3145),\n    COL_VERTEX(5839, 4360, -3683),\n    COL_VERTEX(1023, 5580, -5324),\n    COL_VERTEX(-1196, 6023, -5324),\n    COL_VERTEX(1246, 5557, -5324),\n    COL_VERTEX(-4141, 6427, -6962),\n    COL_VERTEX(-4141, 6427, -5324),\n    COL_VERTEX(-4709, 6615, -5733),\n    COL_VERTEX(-1987, 6077, -6962),\n    COL_VERTEX(-1844, 6067, -6962),\n    COL_VERTEX(-6708, -4728, 110),\n    COL_VERTEX(-1864, -4197, 199),\n    COL_VERTEX(-1864, -3583, 199),\n    COL_VERTEX(-6708, -4197, 110),\n    COL_VERTEX(-4618, -3839, -185),\n    COL_VERTEX(-1959, -3429, 439),\n    COL_VERTEX(-7056, -4821, -626),\n    COL_VERTEX(-6911, -4197, -3326),\n    COL_VERTEX(-6092, -4197, -820),\n    COL_VERTEX(-7056, -4197, -626),\n    COL_VERTEX(-5958, -4197, -553),\n    COL_VERTEX(-4665, -3839, 328),\n    COL_VERTEX(-2149, -3429, 919),\n    COL_VERTEX(-4688, -3993, 585),\n    COL_VERTEX(-5725, -4117, 589),\n    COL_VERTEX(-3221, -8191, -531),\n    COL_VERTEX(-1844, -8191, -2),\n    COL_VERTEX(-4665, 1946, -2162),\n    COL_VERTEX(-5425, -8191, -4316),\n    COL_VERTEX(-5425, -8191, -8191),\n    COL_VERTEX(-4527, 4711, 6150),\n    COL_VERTEX(-5265, 4711, 6150),\n    COL_VERTEX(-5254, 4712, -284),\n    COL_VERTEX(8192, -8191, -8176),\n    COL_VERTEX(8192, 0, -8176),\n    COL_VERTEX(-5027, -8191, 8192),\n    COL_VERTEX(-2244, -3583, 1159),\n    COL_VERTEX(-4104, 2774, -1432),\n    COL_VERTEX(-5013, 3082, -2989),\n    COL_VERTEX(-5425, 3091, -4316),\n    COL_VERTEX(-1864, 6572, 199),\n    COL_VERTEX(-2198, -4399, 1042),\n    COL_VERTEX(-5425, 2476, -4316),\n    COL_VERTEX(-6524, -4210, -6450),\n    COL_VERTEX(-6597, -4137, -6450),\n    COL_VERTEX(-6225, -4038, -6450),\n    COL_VERTEX(-6624, -4038, -6450),\n    COL_VERTEX(-6706, -5375, -6450),\n    COL_VERTEX(-6597, -3938, -6450),\n    COL_VERTEX(-6424, -3839, -6450),\n    COL_VERTEX(-6252, -3938, -6450),\n    COL_VERTEX(-6706, -3839, -7679),\n    COL_VERTEX(-5781, 2925, -2989),\n    COL_VERTEX(-6757, -5375, -6501),\n    COL_VERTEX(-6757, -5836, -6501),\n    COL_VERTEX(-6245, -5375, -6501),\n    COL_VERTEX(-6296, -5836, -6501),\n    COL_VERTEX(-6757, -5836, -6450),\n    COL_VERTEX(-6706, -5221, -6450),\n    COL_VERTEX(-6706, -5221, -7372),\n    COL_VERTEX(-7679, -5836, -7065),\n    COL_VERTEX(-7576, -5580, -6911),\n    COL_VERTEX(-7576, -5580, -7065),\n    COL_VERTEX(-7679, -5836, -6450),\n    COL_VERTEX(-7679, -5836, -7372),\n    COL_VERTEX(-8191, -5836, -6450),\n    COL_VERTEX(-8191, -5068, -6450),\n    COL_VERTEX(-6706, -5221, -7679),\n    COL_VERTEX(-7679, -5580, -7065),\n    COL_VERTEX(-5784, -4197, -6143),\n    COL_VERTEX(-7167, -4197, -6143),\n    COL_VERTEX(-7167, -8191, -6143),\n    COL_VERTEX(-5784, -8191, -6143),\n    COL_VERTEX(-5119, 7322, -5733),\n    COL_VERTEX(-5733, 7680, -6245),\n    COL_VERTEX(-5733, 7680, -6041),\n    COL_VERTEX(-5938, 7680, -6041),\n    COL_VERTEX(-5733, 8038, -6041),\n    COL_VERTEX(6253, -2935, 1504),\n    COL_VERTEX(6253, -2969, 1594),\n    COL_VERTEX(6255, -1784, -303),\n    COL_VERTEX(6255, -1758, -381),\n    COL_VERTEX(6255, -1749, -469),\n    COL_VERTEX(6256, -3378, 5258),\n    COL_VERTEX(-5350, 1741, -4218),\n    COL_VERTEX(-871, -4812, 889),\n    COL_VERTEX(-4829, 1536, -2983),\n    COL_VERTEX(-4594, -3993, -442),\n    COL_VERTEX(2758, 515, -5574),\n    COL_VERTEX(3466, -327, -5105),\n    COL_VERTEX(6127, 239, -6281),\n    COL_VERTEX(6580, 124, -6127),\n    COL_VERTEX(6957, 0, -5855),\n    COL_VERTEX(3606, -350, -5277),\n    COL_VERTEX(-295, 2918, -645),\n    COL_VERTEX(2106, 3277, -872),\n    COL_VERTEX(2334, 3891, -78),\n    COL_VERTEX(-797, 2765, -840),\n    COL_VERTEX(531, 3686, 198),\n    COL_VERTEX(5188, 4101, -5317),\n    COL_VERTEX(5342, 4768, -6710),\n    COL_VERTEX(3825, 5012, -6962),\n    COL_VERTEX(1246, 5557, -6962),\n    COL_VERTEX(-979, -4095, 2171),\n    COL_VERTEX(-979, -4709, 2171),\n    COL_VERTEX(6764, 4506, -3013),\n    COL_VERTEX(2334, 4086, -78),\n    COL_VERTEX(0, -3685, 6009),\n    COL_VERTEX(5081, -3153, 6611),\n    COL_VERTEX(5050, -3102, 7021),\n    COL_VERTEX(-1052, 2662, -1208),\n    COL_VERTEX(-1088, 2611, -1622),\n    COL_VERTEX(-897, 2570, -2121),\n    COL_VERTEX(-752, 2458, -2986),\n    COL_VERTEX(-847, 2406, -3625),\n    COL_VERTEX(-1691, 3174, -2337),\n    COL_VERTEX(-1691, 2560, -2337),\n    COL_VERTEX(-1921, 3277, -1739),\n    COL_VERTEX(-1822, 2304, -3789),\n    COL_VERTEX(-3215, 1997, -4597),\n    COL_VERTEX(-4594, -4607, -442),\n    COL_VERTEX(-6092, -5017, -820),\n    COL_VERTEX(-2244, -4197, 1159),\n    COL_VERTEX(-459, 3584, 169),\n    COL_VERTEX(-1328, 3482, -167),\n    COL_VERTEX(-1849, 3379, -920),\n    COL_VERTEX(7075, -1144, -381),\n    COL_VERTEX(7074, -1170, -303),\n    COL_VERTEX(7072, -2321, 1504),\n    COL_VERTEX(7072, -2355, 1594),\n    COL_VERTEX(7072, -2378, 1700),\n    COL_VERTEX(-6092, -4198, -3326),\n    COL_VERTEX(6256, 4710, -6343),\n    COL_VERTEX(6945, 4659, -5784),\n    COL_VERTEX(7255, 4608, -4975),\n    COL_VERTEX(1023, 5580, -6962),\n    COL_VERTEX(7255, 4557, -4080),\n    COL_VERTEX(-1196, 6023, -6962),\n    COL_VERTEX(-1478, 6054, -6962),\n    COL_VERTEX(-1478, 6054, -5324),\n    COL_VERTEX(-1987, 6077, -5324),\n    COL_VERTEX(-4709, 6615, -6962),\n    COL_VERTEX(-4709, 6615, -5324),\n    COL_VERTEX(-4709, 6615, -6553),\n    COL_VERTEX(-1844, 6067, -5324),\n    COL_VERTEX(-3221, 1690, -531),\n    COL_VERTEX(-4665, -8191, -2162),\n    COL_VERTEX(-3221, -8191, -422),\n    COL_VERTEX(-5350, -8191, -4218),\n    COL_VERTEX(-3221, 6572, -422),\n    COL_VERTEX(-5350, 2304, -4218),\n    COL_VERTEX(-5425, 6572, -4316),\n    COL_VERTEX(5222, -8191, -8176),\n    COL_VERTEX(-5425, 6572, -8191),\n    COL_VERTEX(5222, 8192, -8176),\n    COL_VERTEX(-1844, 6572, -2),\n    COL_VERTEX(-5425, 8192, -8191),\n    COL_VERTEX(-4472, 4712, -284),\n    COL_VERTEX(5222, 0, -8176),\n    COL_VERTEX(8192, 8192, -8176),\n    COL_VERTEX(8192, 8192, 8192),\n    COL_VERTEX(-5027, 8192, 8192),\n    COL_VERTEX(-5027, 6572, 8192),\n    COL_VERTEX(-4104, 6572, -1432),\n    COL_VERTEX(-4773, 6572, -2093),\n    COL_VERTEX(-5013, 6572, -2989),\n    COL_VERTEX(-1901, -4402, 291),\n    COL_TRI_INIT(SURFACE_DEFAULT, 1107),\n    COL_TRI(64, 65, 66),\n    COL_TRI(64, 66, 67),\n    COL_TRI(68, 69, 70),\n    COL_TRI(71, 68, 70),\n    COL_TRI(68, 72, 73),\n    COL_TRI(69, 68, 73),\n    COL_TRI(74, 70, 75),\n    COL_TRI(74, 76, 70),\n    COL_TRI(82, 6, 13),\n    COL_TRI(70, 78, 71),\n    COL_TRI(78, 397, 399),\n    COL_TRI(79, 80, 83),\n    COL_TRI(80, 82, 83),\n    COL_TRI(81, 109, 80),\n    COL_TRI(81, 80, 79),\n    COL_TRI(80, 109, 6),\n    COL_TRI(82, 80, 6),\n    COL_TRI(83, 82, 88),\n    COL_TRI(82, 584, 88),\n    COL_TRI(89, 88, 90),\n    COL_TRI(85, 79, 83),\n    COL_TRI(85, 83, 86),\n    COL_TRI(86, 83, 88),\n    COL_TRI(87, 79, 85),\n    COL_TRI(87, 81, 79),\n    COL_TRI(88, 584, 585),\n    COL_TRI(84, 584, 82),\n    COL_TRI(84, 585, 584),\n    COL_TRI(88, 585, 90),\n    COL_TRI(86, 88, 89),\n    COL_TRI(90, 585, 587),\n    COL_TRI(91, 587, 585),\n    COL_TRI(84, 91, 585),\n    COL_TRI(90, 587, 93),\n    COL_TRI(89, 90, 92),\n    COL_TRI(92, 90, 93),\n    COL_TRI(93, 587, 589),\n    COL_TRI(91, 589, 587),\n    COL_TRI(93, 589, 95),\n    COL_TRI(94, 93, 95),\n    COL_TRI(92, 93, 94),\n    COL_TRI(95, 589, 96),\n    COL_TRI(96, 589, 91),\n    COL_TRI(95, 96, 98),\n    COL_TRI(97, 95, 98),\n    COL_TRI(94, 95, 97),\n    COL_TRI(102, 103, 105),\n    COL_TRI(98, 96, 590),\n    COL_TRI(91, 590, 96),\n    COL_TRI(98, 590, 100),\n    COL_TRI(99, 98, 100),\n    COL_TRI(97, 98, 99),\n    COL_TRI(100, 590, 101),\n    COL_TRI(101, 590, 104),\n    COL_TRI(100, 101, 103),\n    COL_TRI(99, 100, 102),\n    COL_TRI(102, 100, 103),\n    COL_TRI(103, 101, 591),\n    COL_TRI(104, 591, 101),\n    COL_TRI(103, 591, 106),\n    COL_TRI(105, 103, 106),\n    COL_TRI(110, 81, 87),\n    COL_TRI(106, 591, 586),\n    COL_TRI(104, 586, 591),\n    COL_TRI(106, 586, 108),\n    COL_TRI(105, 106, 107),\n    COL_TRI(107, 106, 108),\n    COL_TRI(108, 586, 109),\n    COL_TRI(7, 586, 104),\n    COL_TRI(109, 586, 7),\n    COL_TRI(108, 109, 81),\n    COL_TRI(107, 108, 110),\n    COL_TRI(110, 108, 81),\n    COL_TRI(7, 6, 109),\n    COL_TRI(118, 122, 120),\n    COL_TRI(111, 112, 72),\n    COL_TRI(112, 114, 115),\n    COL_TRI(112, 115, 73),\n    COL_TRI(72, 112, 73),\n    COL_TRI(113, 114, 112),\n    COL_TRI(111, 113, 112),\n    COL_TRI(114, 117, 115),\n    COL_TRI(115, 117, 118),\n    COL_TRI(73, 115, 119),\n    COL_TRI(115, 118, 119),\n    COL_TRI(116, 111, 72),\n    COL_TRI(117, 121, 118),\n    COL_TRI(118, 121, 122),\n    COL_TRI(119, 118, 120),\n    COL_TRI(120, 122, 124),\n    COL_TRI(121, 125, 122),\n    COL_TRI(122, 125, 123),\n    COL_TRI(122, 123, 124),\n    COL_TRI(123, 126, 127),\n    COL_TRI(124, 123, 127),\n    COL_TRI(123, 128, 126),\n    COL_TRI(125, 128, 123),\n    COL_TRI(126, 130, 129),\n    COL_TRI(127, 126, 129),\n    COL_TRI(126, 131, 130),\n    COL_TRI(128, 131, 126),\n    COL_TRI(129, 130, 132),\n    COL_TRI(130, 133, 132),\n    COL_TRI(131, 134, 130),\n    COL_TRI(130, 134, 133),\n    COL_TRI(132, 133, 136),\n    COL_TRI(133, 135, 136),\n    COL_TRI(134, 137, 133),\n    COL_TRI(133, 137, 135),\n    COL_TRI(135, 138, 139),\n    COL_TRI(136, 135, 139),\n    COL_TRI(135, 140, 138),\n    COL_TRI(137, 140, 135),\n    COL_TRI(138, 142, 141),\n    COL_TRI(139, 138, 141),\n    COL_TRI(140, 143, 138),\n    COL_TRI(138, 143, 142),\n    COL_TRI(141, 142, 116),\n    COL_TRI(142, 111, 116),\n    COL_TRI(143, 144, 142),\n    COL_TRI(142, 144, 111),\n    COL_TRI(144, 113, 111),\n    COL_TRI(114, 146, 117),\n    COL_TRI(145, 146, 114),\n    COL_TRI(113, 145, 114),\n    COL_TRI(117, 147, 121),\n    COL_TRI(146, 147, 117),\n    COL_TRI(121, 148, 125),\n    COL_TRI(147, 148, 121),\n    COL_TRI(148, 149, 125),\n    COL_TRI(125, 149, 128),\n    COL_TRI(149, 150, 128),\n    COL_TRI(128, 150, 131),\n    COL_TRI(131, 151, 134),\n    COL_TRI(150, 151, 131),\n    COL_TRI(151, 152, 134),\n    COL_TRI(134, 152, 137),\n    COL_TRI(152, 153, 137),\n    COL_TRI(137, 153, 140),\n    COL_TRI(153, 154, 140),\n    COL_TRI(140, 154, 143),\n    COL_TRI(154, 155, 143),\n    COL_TRI(143, 155, 144),\n    COL_TRI(144, 156, 113),\n    COL_TRI(155, 156, 144),\n    COL_TRI(156, 145, 113),\n    COL_TRI(145, 157, 146),\n    COL_TRI(157, 158, 146),\n    COL_TRI(146, 158, 147),\n    COL_TRI(158, 159, 147),\n    COL_TRI(147, 159, 148),\n    COL_TRI(148, 160, 149),\n    COL_TRI(159, 160, 148),\n    COL_TRI(149, 161, 150),\n    COL_TRI(160, 161, 149),\n    COL_TRI(150, 162, 151),\n    COL_TRI(161, 162, 150),\n    COL_TRI(162, 163, 151),\n    COL_TRI(151, 163, 152),\n    COL_TRI(163, 164, 152),\n    COL_TRI(152, 164, 153),\n    COL_TRI(153, 165, 154),\n    COL_TRI(164, 165, 153),\n    COL_TRI(154, 166, 155),\n    COL_TRI(165, 166, 154),\n    COL_TRI(168, 169, 157),\n    COL_TRI(166, 167, 155),\n    COL_TRI(155, 167, 156),\n    COL_TRI(167, 168, 156),\n    COL_TRI(156, 168, 145),\n    COL_TRI(168, 157, 145),\n    COL_TRI(169, 170, 158),\n    COL_TRI(157, 169, 158),\n    COL_TRI(158, 170, 159),\n    COL_TRI(170, 171, 159),\n    COL_TRI(159, 171, 160),\n    COL_TRI(171, 172, 160),\n    COL_TRI(160, 172, 161),\n    COL_TRI(172, 173, 161),\n    COL_TRI(161, 173, 162),\n    COL_TRI(162, 174, 163),\n    COL_TRI(173, 174, 162),\n    COL_TRI(163, 175, 164),\n    COL_TRI(174, 175, 163),\n    COL_TRI(175, 176, 164),\n    COL_TRI(164, 176, 165),\n    COL_TRI(176, 177, 165),\n    COL_TRI(165, 177, 166),\n    COL_TRI(166, 178, 167),\n    COL_TRI(177, 178, 166),\n    COL_TRI(167, 179, 168),\n    COL_TRI(178, 179, 167),\n    COL_TRI(168, 189, 169),\n    COL_TRI(179, 189, 168),\n    COL_TRI(170, 181, 171),\n    COL_TRI(180, 181, 170),\n    COL_TRI(169, 180, 170),\n    COL_TRI(171, 182, 172),\n    COL_TRI(181, 182, 171),\n    COL_TRI(189, 180, 169),\n    COL_TRI(172, 183, 173),\n    COL_TRI(182, 183, 172),\n    COL_TRI(183, 194, 173),\n    COL_TRI(173, 194, 184),\n    COL_TRI(173, 184, 174),\n    COL_TRI(174, 184, 175),\n    COL_TRI(175, 185, 176),\n    COL_TRI(184, 185, 175),\n    COL_TRI(185, 186, 176),\n    COL_TRI(176, 186, 177),\n    COL_TRI(186, 187, 177),\n    COL_TRI(177, 187, 178),\n    COL_TRI(187, 188, 178),\n    COL_TRI(178, 188, 179),\n    COL_TRI(188, 190, 179),\n    COL_TRI(179, 190, 189),\n    COL_TRI(189, 202, 180),\n    COL_TRI(190, 202, 189),\n    COL_TRI(180, 191, 181),\n    COL_TRI(191, 192, 181),\n    COL_TRI(181, 192, 182),\n    COL_TRI(192, 193, 182),\n    COL_TRI(182, 193, 183),\n    COL_TRI(202, 191, 180),\n    COL_TRI(183, 195, 194),\n    COL_TRI(193, 195, 183),\n    COL_TRI(194, 196, 184),\n    COL_TRI(194, 207, 196),\n    COL_TRI(195, 207, 194),\n    COL_TRI(184, 196, 185),\n    COL_TRI(196, 197, 185),\n    COL_TRI(185, 197, 186),\n    COL_TRI(197, 198, 186),\n    COL_TRI(186, 198, 187),\n    COL_TRI(187, 199, 188),\n    COL_TRI(198, 199, 187),\n    COL_TRI(188, 200, 190),\n    COL_TRI(199, 200, 188),\n    COL_TRI(200, 201, 190),\n    COL_TRI(190, 201, 202),\n    COL_TRI(201, 214, 202),\n    COL_TRI(202, 214, 191),\n    COL_TRI(192, 204, 193),\n    COL_TRI(203, 204, 192),\n    COL_TRI(191, 203, 192),\n    COL_TRI(204, 205, 193),\n    COL_TRI(193, 205, 195),\n    COL_TRI(214, 203, 191),\n    COL_TRI(205, 206, 195),\n    COL_TRI(195, 206, 207),\n    COL_TRI(206, 219, 207),\n    COL_TRI(207, 208, 196),\n    COL_TRI(207, 219, 208),\n    COL_TRI(196, 208, 197),\n    COL_TRI(197, 209, 198),\n    COL_TRI(208, 209, 197),\n    COL_TRI(209, 210, 198),\n    COL_TRI(198, 210, 199),\n    COL_TRI(210, 211, 199),\n    COL_TRI(199, 211, 200),\n    COL_TRI(200, 212, 201),\n    COL_TRI(211, 212, 200),\n    COL_TRI(212, 213, 201),\n    COL_TRI(201, 213, 214),\n    COL_TRI(213, 225, 214),\n    COL_TRI(214, 225, 203),\n    COL_TRI(204, 216, 205),\n    COL_TRI(215, 216, 204),\n    COL_TRI(203, 215, 204),\n    COL_TRI(205, 217, 206),\n    COL_TRI(216, 217, 205),\n    COL_TRI(225, 215, 203),\n    COL_TRI(206, 218, 219),\n    COL_TRI(217, 218, 206),\n    COL_TRI(218, 230, 219),\n    COL_TRI(219, 230, 220),\n    COL_TRI(219, 220, 208),\n    COL_TRI(208, 220, 209),\n    COL_TRI(209, 221, 210),\n    COL_TRI(220, 221, 209),\n    COL_TRI(221, 222, 210),\n    COL_TRI(210, 222, 211),\n    COL_TRI(222, 223, 211),\n    COL_TRI(211, 223, 212),\n    COL_TRI(223, 224, 212),\n    COL_TRI(212, 224, 213),\n    COL_TRI(224, 226, 213),\n    COL_TRI(213, 226, 225),\n    COL_TRI(225, 238, 215),\n    COL_TRI(215, 227, 216),\n    COL_TRI(227, 228, 216),\n    COL_TRI(216, 228, 217),\n    COL_TRI(228, 229, 217),\n    COL_TRI(217, 229, 218),\n    COL_TRI(226, 238, 225),\n    COL_TRI(238, 227, 215),\n    COL_TRI(218, 231, 230),\n    COL_TRI(229, 231, 218),\n    COL_TRI(230, 232, 220),\n    COL_TRI(230, 243, 232),\n    COL_TRI(231, 243, 230),\n    COL_TRI(220, 232, 221),\n    COL_TRI(232, 233, 221),\n    COL_TRI(221, 233, 222),\n    COL_TRI(233, 234, 222),\n    COL_TRI(222, 234, 223),\n    COL_TRI(223, 235, 224),\n    COL_TRI(234, 235, 223),\n    COL_TRI(224, 236, 226),\n    COL_TRI(235, 236, 224),\n    COL_TRI(236, 237, 226),\n    COL_TRI(226, 237, 238),\n    COL_TRI(237, 250, 238),\n    COL_TRI(238, 250, 227),\n    COL_TRI(228, 240, 229),\n    COL_TRI(239, 240, 228),\n    COL_TRI(227, 239, 228),\n    COL_TRI(240, 241, 229),\n    COL_TRI(229, 241, 231),\n    COL_TRI(250, 239, 227),\n    COL_TRI(241, 242, 231),\n    COL_TRI(231, 242, 243),\n    COL_TRI(242, 255, 243),\n    COL_TRI(243, 244, 232),\n    COL_TRI(243, 255, 244),\n    COL_TRI(232, 244, 233),\n    COL_TRI(233, 245, 234),\n    COL_TRI(244, 245, 233),\n    COL_TRI(245, 246, 234),\n    COL_TRI(234, 246, 235),\n    COL_TRI(246, 247, 235),\n    COL_TRI(235, 247, 236),\n    COL_TRI(247, 248, 236),\n    COL_TRI(236, 248, 237),\n    COL_TRI(248, 249, 237),\n    COL_TRI(237, 249, 250),\n    COL_TRI(249, 261, 250),\n    COL_TRI(250, 261, 239),\n    COL_TRI(240, 252, 241),\n    COL_TRI(251, 252, 240),\n    COL_TRI(239, 251, 240),\n    COL_TRI(241, 253, 242),\n    COL_TRI(252, 253, 241),\n    COL_TRI(261, 251, 239),\n    COL_TRI(242, 254, 255),\n    COL_TRI(253, 254, 242),\n    COL_TRI(254, 266, 255),\n    COL_TRI(255, 266, 256),\n    COL_TRI(255, 256, 244),\n    COL_TRI(244, 256, 245),\n    COL_TRI(245, 257, 246),\n    COL_TRI(256, 257, 245),\n    COL_TRI(257, 258, 246),\n    COL_TRI(246, 258, 247),\n    COL_TRI(258, 259, 247),\n    COL_TRI(247, 259, 248),\n    COL_TRI(262, 273, 261),\n    COL_TRI(259, 260, 248),\n    COL_TRI(248, 260, 249),\n    COL_TRI(260, 262, 249),\n    COL_TRI(249, 262, 261),\n    COL_TRI(261, 273, 251),\n    COL_TRI(251, 263, 252),\n    COL_TRI(263, 264, 252),\n    COL_TRI(252, 264, 253),\n    COL_TRI(264, 265, 253),\n    COL_TRI(253, 265, 254),\n    COL_TRI(254, 267, 266),\n    COL_TRI(265, 267, 254),\n    COL_TRI(266, 268, 256),\n    COL_TRI(266, 278, 268),\n    COL_TRI(267, 278, 266),\n    COL_TRI(256, 268, 257),\n    COL_TRI(268, 269, 257),\n    COL_TRI(257, 269, 258),\n    COL_TRI(269, 270, 258),\n    COL_TRI(258, 270, 259),\n    COL_TRI(259, 271, 260),\n    COL_TRI(270, 271, 259),\n    COL_TRI(260, 272, 262),\n    COL_TRI(271, 272, 260),\n    COL_TRI(272, 284, 262),\n    COL_TRI(262, 284, 274),\n    COL_TRI(262, 274, 273),\n    COL_TRI(273, 274, 251),\n    COL_TRI(274, 263, 251),\n    COL_TRI(264, 276, 265),\n    COL_TRI(275, 276, 264),\n    COL_TRI(263, 275, 264),\n    COL_TRI(276, 277, 265),\n    COL_TRI(265, 277, 267),\n    COL_TRI(277, 288, 267),\n    COL_TRI(267, 288, 279),\n    COL_TRI(267, 279, 278),\n    COL_TRI(278, 279, 268),\n    COL_TRI(268, 280, 269),\n    COL_TRI(279, 280, 268),\n    COL_TRI(269, 281, 270),\n    COL_TRI(280, 281, 269),\n    COL_TRI(281, 282, 270),\n    COL_TRI(270, 282, 271),\n    COL_TRI(282, 283, 271),\n    COL_TRI(271, 283, 272),\n    COL_TRI(272, 294, 297),\n    COL_TRI(283, 294, 272),\n    COL_TRI(272, 297, 284),\n    COL_TRI(284, 297, 285),\n    COL_TRI(284, 285, 274),\n    COL_TRI(274, 285, 263),\n    COL_TRI(285, 275, 263),\n    COL_TRI(276, 287, 277),\n    COL_TRI(286, 287, 276),\n    COL_TRI(275, 286, 276),\n    COL_TRI(277, 289, 288),\n    COL_TRI(287, 289, 277),\n    COL_TRI(288, 290, 279),\n    COL_TRI(289, 290, 288),\n    COL_TRI(290, 291, 279),\n    COL_TRI(279, 291, 280),\n    COL_TRI(291, 303, 280),\n    COL_TRI(280, 292, 281),\n    COL_TRI(280, 303, 292),\n    COL_TRI(281, 292, 282),\n    COL_TRI(292, 293, 282),\n    COL_TRI(282, 293, 283),\n    COL_TRI(299, 300, 286),\n    COL_TRI(293, 295, 283),\n    COL_TRI(283, 295, 294),\n    COL_TRI(294, 296, 297),\n    COL_TRI(295, 296, 294),\n    COL_TRI(296, 298, 297),\n    COL_TRI(297, 298, 285),\n    COL_TRI(285, 299, 275),\n    COL_TRI(298, 299, 285),\n    COL_TRI(299, 286, 275),\n    COL_TRI(286, 300, 287),\n    COL_TRI(300, 301, 287),\n    COL_TRI(287, 301, 289),\n    COL_TRI(301, 302, 289),\n    COL_TRI(289, 302, 290),\n    COL_TRI(302, 309, 290),\n    COL_TRI(290, 304, 291),\n    COL_TRI(290, 309, 304),\n    COL_TRI(291, 304, 303),\n    COL_TRI(303, 305, 292),\n    COL_TRI(303, 310, 305),\n    COL_TRI(304, 310, 303),\n    COL_TRI(292, 305, 293),\n    COL_TRI(305, 306, 293),\n    COL_TRI(293, 306, 295),\n    COL_TRI(301, 315, 302),\n    COL_TRI(295, 307, 296),\n    COL_TRI(306, 307, 295),\n    COL_TRI(296, 308, 298),\n    COL_TRI(296, 311, 308),\n    COL_TRI(307, 311, 296),\n    COL_TRI(298, 308, 299),\n    COL_TRI(308, 312, 299),\n    COL_TRI(299, 312, 300),\n    COL_TRI(300, 313, 301),\n    COL_TRI(301, 313, 315),\n    COL_TRI(302, 315, 316),\n    COL_TRI(302, 316, 309),\n    COL_TRI(309, 316, 317),\n    COL_TRI(309, 317, 304),\n    COL_TRI(304, 318, 310),\n    COL_TRI(304, 317, 318),\n    COL_TRI(310, 320, 305),\n    COL_TRI(310, 318, 320),\n    COL_TRI(305, 321, 306),\n    COL_TRI(305, 320, 321),\n    COL_TRI(306, 321, 322),\n    COL_TRI(306, 322, 307),\n    COL_TRI(307, 322, 323),\n    COL_TRI(307, 323, 311),\n    COL_TRI(311, 324, 308),\n    COL_TRI(311, 323, 324),\n    COL_TRI(308, 325, 312),\n    COL_TRI(308, 324, 325),\n    COL_TRI(312, 314, 300),\n    COL_TRI(312, 325, 314),\n    COL_TRI(300, 314, 313),\n    COL_TRI(313, 330, 315),\n    COL_TRI(313, 329, 330),\n    COL_TRI(314, 329, 313),\n    COL_TRI(315, 331, 316),\n    COL_TRI(315, 330, 331),\n    COL_TRI(316, 332, 317),\n    COL_TRI(316, 331, 332),\n    COL_TRI(317, 332, 319),\n    COL_TRI(317, 319, 318),\n    COL_TRI(318, 319, 320),\n    COL_TRI(319, 333, 320),\n    COL_TRI(320, 334, 321),\n    COL_TRI(320, 333, 334),\n    COL_TRI(321, 334, 335),\n    COL_TRI(321, 335, 322),\n    COL_TRI(322, 335, 336),\n    COL_TRI(322, 336, 323),\n    COL_TRI(323, 336, 326),\n    COL_TRI(323, 326, 324),\n    COL_TRI(324, 326, 325),\n    COL_TRI(325, 327, 314),\n    COL_TRI(326, 327, 325),\n    COL_TRI(314, 328, 329),\n    COL_TRI(327, 328, 314),\n    COL_TRI(328, 85, 329),\n    COL_TRI(329, 85, 86),\n    COL_TRI(329, 86, 330),\n    COL_TRI(330, 86, 89),\n    COL_TRI(330, 89, 331),\n    COL_TRI(331, 92, 332),\n    COL_TRI(331, 89, 92),\n    COL_TRI(332, 94, 319),\n    COL_TRI(332, 92, 94),\n    COL_TRI(319, 94, 97),\n    COL_TRI(319, 97, 333),\n    COL_TRI(333, 97, 99),\n    COL_TRI(333, 99, 334),\n    COL_TRI(334, 102, 335),\n    COL_TRI(334, 99, 102),\n    COL_TRI(335, 105, 336),\n    COL_TRI(335, 102, 105),\n    COL_TRI(336, 107, 326),\n    COL_TRI(336, 105, 107),\n    COL_TRI(326, 107, 110),\n    COL_TRI(326, 110, 327),\n    COL_TRI(327, 110, 87),\n    COL_TRI(327, 87, 328),\n    COL_TRI(328, 87, 85),\n    COL_TRI(116, 72, 68),\n    COL_TRI(69, 345, 75),\n    COL_TRI(69, 73, 119),\n    COL_TRI(69, 119, 120),\n    COL_TRI(141, 116, 68),\n    COL_TRI(71, 343, 68),\n    COL_TRI(69, 120, 124),\n    COL_TRI(69, 75, 70),\n    COL_TRI(342, 341, 578),\n    COL_TRI(337, 78, 399),\n    COL_TRI(78, 337, 71),\n    COL_TRI(338, 342, 337),\n    COL_TRI(339, 337, 342),\n    COL_TRI(339, 71, 337),\n    COL_TRI(340, 339, 342),\n    COL_TRI(341, 342, 593),\n    COL_TRI(342, 578, 340),\n    COL_TRI(71, 339, 343),\n    COL_TRI(343, 340, 345),\n    COL_TRI(343, 339, 340),\n    COL_TRI(344, 74, 75),\n    COL_TRI(340, 344, 75),\n    COL_TRI(345, 340, 75),\n    COL_TRI(340, 346, 344),\n    COL_TRI(346, 340, 578),\n    COL_TRI(347, 348, 594),\n    COL_TRI(348, 595, 594),\n    COL_TRI(84, 596, 594),\n    COL_TRI(348, 364, 595),\n    COL_TRI(347, 594, 596),\n    COL_TRI(349, 347, 596),\n    COL_TRI(349, 597, 347),\n    COL_TRI(350, 349, 596),\n    COL_TRI(350, 596, 84),\n    COL_TRI(84, 594, 351),\n    COL_TRI(351, 594, 595),\n    COL_TRI(351, 595, 598),\n    COL_TRI(352, 17, 10),\n    COL_TRI(352, 599, 17),\n    COL_TRI(352, 600, 599),\n    COL_TRI(104, 91, 592),\n    COL_TRI(353, 65, 10),\n    COL_TRI(10, 64, 352),\n    COL_TRI(10, 65, 64),\n    COL_TRI(84, 588, 91),\n    COL_TRI(82, 13, 84),\n    COL_TRI(13, 350, 84),\n    COL_TRI(354, 4, 7),\n    COL_TRI(354, 7, 104),\n    COL_TRI(104, 592, 354),\n    COL_TRI(66, 353, 602),\n    COL_TRI(66, 602, 67),\n    COL_TRI(353, 66, 65),\n    COL_TRI(353, 601, 361),\n    COL_TRI(353, 360, 601),\n    COL_TRI(355, 604, 605),\n    COL_TRI(352, 602, 603),\n    COL_TRI(352, 67, 602),\n    COL_TRI(352, 64, 67),\n    COL_TRI(352, 358, 600),\n    COL_TRI(5, 11, 13),\n    COL_TRI(5, 13, 6),\n    COL_TRI(355, 606, 604),\n    COL_TRI(356, 606, 355),\n    COL_TRI(356, 607, 606),\n    COL_TRI(354, 8, 4),\n    COL_TRI(354, 592, 8),\n    COL_TRI(91, 608, 592),\n    COL_TRI(358, 603, 360),\n    COL_TRI(91, 599, 608),\n    COL_TRI(5, 357, 11),\n    COL_TRI(5, 9, 357),\n    COL_TRI(357, 600, 358),\n    COL_TRI(357, 358, 12),\n    COL_TRI(358, 360, 12),\n    COL_TRI(361, 602, 353),\n    COL_TRI(352, 603, 358),\n    COL_TRI(359, 603, 602),\n    COL_TRI(359, 609, 603),\n    COL_TRI(360, 603, 609),\n    COL_TRI(360, 609, 601),\n    COL_TRI(361, 359, 602),\n    COL_TRI(362, 363, 610),\n    COL_TRI(363, 362, 348),\n    COL_TRI(363, 348, 347),\n    COL_TRI(16, 347, 597),\n    COL_TRI(16, 363, 347),\n    COL_TRI(364, 362, 15),\n    COL_TRI(364, 348, 362),\n    COL_TRI(362, 610, 611),\n    COL_TRI(19, 370, 21),\n    COL_TRI(16, 365, 363),\n    COL_TRI(365, 610, 363),\n    COL_TRI(365, 52, 612),\n    COL_TRI(365, 612, 613),\n    COL_TRI(366, 611, 610),\n    COL_TRI(52, 362, 611),\n    COL_TRI(366, 521, 611),\n    COL_TRI(52, 15, 362),\n    COL_TRI(372, 23, 614),\n    COL_TRI(19, 367, 370),\n    COL_TRI(367, 19, 371),\n    COL_TRI(368, 370, 615),\n    COL_TRI(368, 374, 370),\n    COL_TRI(369, 615, 370),\n    COL_TRI(370, 614, 369),\n    COL_TRI(370, 367, 614),\n    COL_TRI(22, 370, 374),\n    COL_TRI(22, 21, 370),\n    COL_TRI(371, 372, 367),\n    COL_TRI(372, 614, 367),\n    COL_TRI(369, 614, 23),\n    COL_TRI(369, 616, 615),\n    COL_TRI(373, 616, 369),\n    COL_TRI(369, 23, 20),\n    COL_TRI(373, 369, 20),\n    COL_TRI(372, 24, 23),\n    COL_TRI(373, 20, 18),\n    COL_TRI(374, 368, 617),\n    COL_TRI(375, 368, 377),\n    COL_TRI(375, 617, 368),\n    COL_TRI(374, 617, 373),\n    COL_TRI(373, 18, 374),\n    COL_TRI(373, 617, 616),\n    COL_TRI(18, 22, 374),\n    COL_TRI(376, 615, 616),\n    COL_TRI(375, 618, 616),\n    COL_TRI(376, 616, 618),\n    COL_TRI(375, 616, 617),\n    COL_TRI(376, 618, 377),\n    COL_TRI(377, 618, 375),\n    COL_TRI(368, 376, 377),\n    COL_TRI(368, 615, 376),\n    COL_TRI(381, 622, 621),\n    COL_TRI(19, 25, 371),\n    COL_TRI(378, 380, 619),\n    COL_TRI(378, 619, 620),\n    COL_TRI(379, 378, 620),\n    COL_TRI(380, 381, 621),\n    COL_TRI(380, 621, 619),\n    COL_TRI(379, 620, 383),\n    COL_TRI(381, 382, 622),\n    COL_TRI(382, 507, 623),\n    COL_TRI(382, 623, 622),\n    COL_TRI(383, 624, 384),\n    COL_TRI(379, 383, 384),\n    COL_TRI(384, 624, 473),\n    COL_TRI(385, 473, 624),\n    COL_TRI(386, 625, 388),\n    COL_TRI(387, 386, 388),\n    COL_TRI(388, 338, 399),\n    COL_TRI(388, 583, 338),\n    COL_TRI(389, 452, 626),\n    COL_TRI(390, 389, 626),\n    COL_TRI(391, 552, 389),\n    COL_TRI(392, 626, 452),\n    COL_TRI(393, 392, 452),\n    COL_TRI(394, 395, 494),\n    COL_TRI(395, 394, 627),\n    COL_TRI(394, 396, 627),\n    COL_TRI(397, 398, 396),\n    COL_TRI(398, 627, 396),\n    COL_TRI(396, 394, 388),\n    COL_TRI(399, 396, 388),\n    COL_TRI(397, 396, 399),\n    COL_TRI(400, 398, 397),\n    COL_TRI(77, 400, 397),\n    COL_TRI(77, 397, 78),\n    COL_TRI(405, 403, 406),\n    COL_TRI(76, 77, 70),\n    COL_TRI(70, 77, 78),\n    COL_TRI(401, 400, 77),\n    COL_TRI(76, 401, 77),\n    COL_TRI(402, 401, 76),\n    COL_TRI(403, 402, 76),\n    COL_TRI(403, 76, 74),\n    COL_TRI(404, 402, 403),\n    COL_TRI(405, 404, 403),\n    COL_TRI(406, 403, 74),\n    COL_TRI(407, 404, 405),\n    COL_TRI(408, 407, 405),\n    COL_TRI(409, 407, 408),\n    COL_TRI(408, 531, 409),\n    COL_TRI(410, 409, 531),\n    COL_TRI(411, 410, 531),\n    COL_TRI(412, 413, 411),\n    COL_TRI(412, 411, 531),\n    COL_TRI(413, 629, 411),\n    COL_TRI(414, 415, 416),\n    COL_TRI(415, 623, 507),\n    COL_TRI(416, 415, 507),\n    COL_TRI(416, 423, 414),\n    COL_TRI(417, 416, 507),\n    COL_TRI(418, 417, 507),\n    COL_TRI(419, 414, 423),\n    COL_TRI(420, 419, 423),\n    COL_TRI(421, 419, 420),\n    COL_TRI(426, 427, 430),\n    COL_TRI(422, 421, 420),\n    COL_TRI(423, 527, 420),\n    COL_TRI(420, 527, 526),\n    COL_TRI(420, 526, 422),\n    COL_TRI(424, 421, 422),\n    COL_TRI(425, 424, 422),\n    COL_TRI(422, 512, 425),\n    COL_TRI(422, 526, 512),\n    COL_TRI(426, 424, 425),\n    COL_TRI(427, 426, 425),\n    COL_TRI(425, 512, 428),\n    COL_TRI(425, 428, 427),\n    COL_TRI(428, 429, 427),\n    COL_TRI(429, 430, 427),\n    COL_TRI(430, 429, 634),\n    COL_TRI(431, 429, 513),\n    COL_TRI(429, 428, 513),\n    COL_TRI(431, 634, 429),\n    COL_TRI(432, 634, 431),\n    COL_TRI(433, 431, 515),\n    COL_TRI(431, 513, 515),\n    COL_TRI(431, 433, 432),\n    COL_TRI(432, 433, 630),\n    COL_TRI(412, 433, 413),\n    COL_TRI(433, 515, 413),\n    COL_TRI(412, 630, 433),\n    COL_TRI(437, 447, 439),\n    COL_TRI(412, 531, 525),\n    COL_TRI(434, 435, 635),\n    COL_TRI(435, 434, 636),\n    COL_TRI(434, 635, 475),\n    COL_TRI(436, 636, 434),\n    COL_TRI(436, 434, 637),\n    COL_TRI(438, 439, 447),\n    COL_TRI(439, 438, 440),\n    COL_TRI(438, 542, 440),\n    COL_TRI(440, 539, 446),\n    COL_TRI(440, 542, 539),\n    COL_TRI(441, 640, 443),\n    COL_TRI(442, 444, 443),\n    COL_TRI(443, 444, 441),\n    COL_TRI(438, 541, 542),\n    COL_TRI(442, 536, 444),\n    COL_TRI(441, 641, 642),\n    COL_TRI(441, 642, 534),\n    COL_TRI(444, 641, 441),\n    COL_TRI(445, 536, 442),\n    COL_TRI(445, 538, 536),\n    COL_TRI(446, 538, 445),\n    COL_TRI(446, 539, 538),\n    COL_TRI(452, 448, 644),\n    COL_TRI(438, 532, 541),\n    COL_TRI(447, 532, 438),\n    COL_TRI(448, 450, 644),\n    COL_TRI(449, 450, 448),\n    COL_TRI(450, 645, 644),\n    COL_TRI(451, 449, 448),\n    COL_TRI(389, 448, 452),\n    COL_TRI(389, 451, 448),\n    COL_TRI(460, 518, 462),\n    COL_TRI(453, 392, 393),\n    COL_TRI(454, 453, 393),\n    COL_TRI(455, 453, 454),\n    COL_TRI(456, 455, 454),\n    COL_TRI(457, 455, 456),\n    COL_TRI(458, 457, 456),\n    COL_TRI(459, 457, 458),\n    COL_TRI(460, 459, 458),\n    COL_TRI(461, 459, 460),\n    COL_TRI(462, 461, 460),\n    COL_TRI(472, 469, 649),\n    COL_TRI(464, 461, 462),\n    COL_TRI(465, 464, 462),\n    COL_TRI(466, 464, 465),\n    COL_TRI(467, 466, 465),\n    COL_TRI(465, 504, 649),\n    COL_TRI(467, 465, 649),\n    COL_TRI(468, 466, 467),\n    COL_TRI(469, 468, 467),\n    COL_TRI(469, 467, 649),\n    COL_TRI(470, 468, 469),\n    COL_TRI(471, 470, 469),\n    COL_TRI(471, 469, 472),\n    COL_TRI(385, 470, 471),\n    COL_TRI(473, 385, 471),\n    COL_TRI(474, 471, 472),\n    COL_TRI(473, 471, 474),\n    COL_TRI(475, 635, 638),\n    COL_TRI(475, 638, 476),\n    COL_TRI(476, 638, 651),\n    COL_TRI(476, 651, 477),\n    COL_TRI(481, 657, 656),\n    COL_TRI(477, 651, 652),\n    COL_TRI(477, 652, 478),\n    COL_TRI(478, 652, 653),\n    COL_TRI(478, 653, 479),\n    COL_TRI(479, 653, 654),\n    COL_TRI(479, 654, 480),\n    COL_TRI(480, 654, 655),\n    COL_TRI(480, 655, 486),\n    COL_TRI(481, 482, 484),\n    COL_TRI(482, 481, 656),\n    COL_TRI(488, 485, 489),\n    COL_TRI(482, 656, 479),\n    COL_TRI(479, 656, 658),\n    COL_TRI(483, 484, 482),\n    COL_TRI(483, 482, 480),\n    COL_TRI(480, 482, 479),\n    COL_TRI(484, 483, 659),\n    COL_TRI(485, 483, 486),\n    COL_TRI(486, 483, 480),\n    COL_TRI(485, 659, 483),\n    COL_TRI(487, 659, 485),\n    COL_TRI(488, 487, 485),\n    COL_TRI(489, 485, 486),\n    COL_TRI(494, 492, 490),\n    COL_TRI(487, 488, 660),\n    COL_TRI(490, 660, 488),\n    COL_TRI(491, 488, 489),\n    COL_TRI(490, 488, 491),\n    COL_TRI(492, 660, 490),\n    COL_TRI(493, 490, 491),\n    COL_TRI(494, 490, 493),\n    COL_TRI(395, 492, 494),\n    COL_TRI(496, 661, 628),\n    COL_TRI(387, 494, 493),\n    COL_TRI(394, 494, 387),\n    COL_TRI(495, 496, 497),\n    COL_TRI(496, 509, 510),\n    COL_TRI(497, 496, 510),\n    COL_TRI(496, 495, 661),\n    COL_TRI(498, 509, 496),\n    COL_TRI(498, 496, 628),\n    COL_TRI(500, 473, 474),\n    COL_TRI(499, 495, 497),\n    COL_TRI(389, 661, 495),\n    COL_TRI(389, 552, 661),\n    COL_TRI(500, 528, 384),\n    COL_TRI(473, 500, 384),\n    COL_TRI(501, 528, 500),\n    COL_TRI(502, 501, 500),\n    COL_TRI(502, 500, 474),\n    COL_TRI(503, 502, 474),\n    COL_TRI(503, 474, 472),\n    COL_TRI(472, 649, 650),\n    COL_TRI(503, 472, 650),\n    COL_TRI(504, 465, 648),\n    COL_TRI(504, 650, 649),\n    COL_TRI(434, 639, 637),\n    COL_TRI(434, 475, 639),\n    COL_TRI(475, 664, 639),\n    COL_TRI(475, 476, 664),\n    COL_TRI(476, 665, 664),\n    COL_TRI(476, 477, 665),\n    COL_TRI(477, 666, 665),\n    COL_TRI(478, 666, 477),\n    COL_TRI(478, 658, 666),\n    COL_TRI(423, 416, 417),\n    COL_TRI(505, 423, 417),\n    COL_TRI(423, 505, 527),\n    COL_TRI(381, 669, 668),\n    COL_TRI(506, 505, 417),\n    COL_TRI(505, 506, 527),\n    COL_TRI(506, 633, 527),\n    COL_TRI(507, 382, 667),\n    COL_TRI(507, 667, 418),\n    COL_TRI(382, 668, 667),\n    COL_TRI(382, 381, 668),\n    COL_TRI(381, 380, 669),\n    COL_TRI(510, 551, 497),\n    COL_TRI(380, 378, 670),\n    COL_TRI(380, 670, 669),\n    COL_TRI(378, 379, 671),\n    COL_TRI(378, 671, 670),\n    COL_TRI(508, 510, 662),\n    COL_TRI(508, 551, 510),\n    COL_TRI(59, 557, 508),\n    COL_TRI(509, 662, 510),\n    COL_TRI(512, 514, 428),\n    COL_TRI(59, 508, 662),\n    COL_TRI(59, 662, 57),\n    COL_TRI(511, 454, 393),\n    COL_TRI(393, 644, 511),\n    COL_TRI(454, 511, 456),\n    COL_TRI(511, 524, 456),\n    COL_TRI(452, 644, 393),\n    COL_TRI(428, 514, 513),\n    COL_TRI(495, 451, 389),\n    COL_TRI(513, 516, 515),\n    COL_TRI(514, 516, 513),\n    COL_TRI(515, 517, 413),\n    COL_TRI(516, 517, 515),\n    COL_TRI(517, 629, 413),\n    COL_TRI(465, 462, 648),\n    COL_TRI(518, 648, 462),\n    COL_TRI(495, 499, 451),\n    COL_TRI(499, 497, 520),\n    COL_TRI(519, 499, 520),\n    COL_TRI(520, 497, 551),\n    COL_TRI(499, 663, 451),\n    COL_TRI(499, 519, 663),\n    COL_TRI(521, 558, 59),\n    COL_TRI(521, 59, 522),\n    COL_TRI(522, 59, 57),\n    COL_TRI(525, 531, 530),\n    COL_TRI(522, 57, 523),\n    COL_TRI(523, 57, 672),\n    COL_TRI(463, 518, 460),\n    COL_TRI(524, 463, 458),\n    COL_TRI(458, 463, 460),\n    COL_TRI(456, 524, 458),\n    COL_TRI(512, 631, 514),\n    COL_TRI(526, 631, 512),\n    COL_TRI(526, 632, 631),\n    COL_TRI(527, 632, 526),\n    COL_TRI(527, 633, 632),\n    COL_TRI(528, 671, 379),\n    COL_TRI(384, 528, 379),\n    COL_TRI(479, 658, 478),\n    COL_TRI(447, 647, 532),\n    COL_TRI(388, 394, 387),\n    COL_TRI(529, 405, 406),\n    COL_TRI(408, 405, 529),\n    COL_TRI(530, 408, 529),\n    COL_TRI(531, 408, 530),\n    COL_TRI(532, 646, 541),\n    COL_TRI(538, 535, 536),\n    COL_TRI(533, 673, 641),\n    COL_TRI(444, 533, 641),\n    COL_TRI(534, 642, 643),\n    COL_TRI(534, 643, 545),\n    COL_TRI(535, 673, 533),\n    COL_TRI(536, 535, 533),\n    COL_TRI(536, 533, 444),\n    COL_TRI(535, 674, 673),\n    COL_TRI(537, 674, 535),\n    COL_TRI(538, 537, 535),\n    COL_TRI(537, 675, 674),\n    COL_TRI(539, 537, 538),\n    COL_TRI(539, 540, 537),\n    COL_TRI(540, 675, 537),\n    COL_TRI(540, 677, 675),\n    COL_TRI(541, 677, 540),\n    COL_TRI(542, 541, 540),\n    COL_TRI(542, 540, 539),\n    COL_TRI(541, 646, 677),\n    COL_TRI(543, 678, 544),\n    COL_TRI(544, 678, 679),\n    COL_TRI(544, 679, 680),\n    COL_TRI(543, 676, 678),\n    COL_TRI(545, 676, 543),\n    COL_TRI(545, 643, 676),\n    COL_TRI(546, 547, 681),\n    COL_TRI(547, 682, 683),\n    COL_TRI(547, 546, 682),\n    COL_TRI(548, 25, 24),\n    COL_TRI(548, 684, 25),\n    COL_TRI(553, 555, 628),\n    COL_TRI(546, 681, 549),\n    COL_TRI(549, 681, 685),\n    COL_TRI(549, 685, 550),\n    COL_TRI(550, 685, 680),\n    COL_TRI(550, 680, 679),\n    COL_TRI(551, 508, 557),\n    COL_TRI(552, 553, 628),\n    COL_TRI(552, 628, 661),\n    COL_TRI(523, 672, 366),\n    COL_TRI(498, 561, 509),\n    COL_TRI(498, 554, 560),\n    COL_TRI(554, 498, 555),\n    COL_TRI(498, 560, 561),\n    COL_TRI(498, 628, 555),\n    COL_TRI(555, 562, 554),\n    COL_TRI(556, 562, 555),\n    COL_TRI(553, 556, 555),\n    COL_TRI(366, 610, 613),\n    COL_TRI(366, 613, 523),\n    COL_TRI(560, 559, 561),\n    COL_TRI(522, 611, 521),\n    COL_TRI(557, 558, 560),\n    COL_TRI(557, 59, 558),\n    COL_TRI(558, 672, 560),\n    COL_TRI(559, 672, 57),\n    COL_TRI(559, 560, 672),\n    COL_TRI(551, 557, 560),\n    COL_TRI(554, 551, 560),\n    COL_TRI(562, 565, 554),\n    COL_TRI(559, 57, 662),\n    COL_TRI(561, 559, 662),\n    COL_TRI(561, 662, 509),\n    COL_TRI(522, 612, 611),\n    COL_TRI(554, 520, 551),\n    COL_TRI(554, 565, 520),\n    COL_TRI(562, 564, 565),\n    COL_TRI(563, 564, 562),\n    COL_TRI(556, 563, 562),\n    COL_TRI(519, 564, 663),\n    COL_TRI(564, 577, 663),\n    COL_TRI(563, 577, 564),\n    COL_TRI(565, 564, 519),\n    COL_TRI(520, 565, 519),\n    COL_TRI(566, 568, 686),\n    COL_TRI(566, 687, 568),\n    COL_TRI(566, 74, 344),\n    COL_TRI(566, 344, 688),\n    COL_TRI(567, 688, 690),\n    COL_TRI(568, 687, 689),\n    COL_TRI(568, 689, 691),\n    COL_TRI(569, 388, 689),\n    COL_TRI(569, 583, 388),\n    COL_TRI(570, 692, 569),\n    COL_TRI(570, 693, 695),\n    COL_TRI(570, 694, 692),\n    COL_TRI(570, 695, 697),\n    COL_TRI(139, 572, 571),\n    COL_TRI(571, 136, 139),\n    COL_TRI(139, 141, 572),\n    COL_TRI(572, 141, 68),\n    COL_TRI(573, 572, 68),\n    COL_TRI(571, 124, 127),\n    COL_TRI(571, 127, 129),\n    COL_TRI(571, 129, 132),\n    COL_TRI(571, 132, 136),\n    COL_TRI(69, 124, 571),\n    COL_TRI(69, 571, 698),\n    COL_TRI(574, 699, 693),\n    COL_TRI(575, 700, 695),\n    COL_TRI(575, 695, 699),\n    COL_TRI(574, 575, 699),\n    COL_TRI(3, 702, 701),\n    COL_TRI(3, 576, 702),\n    COL_TRI(574, 3, 701),\n    COL_TRI(574, 701, 700),\n    COL_TRI(451, 663, 576),\n    COL_TRI(576, 391, 451),\n    COL_TRI(577, 703, 576),\n    COL_TRI(576, 663, 577),\n    COL_TRI(578, 704, 690),\n    COL_TRI(341, 704, 578),\n    COL_TRI(578, 690, 346),\n    COL_TRI(341, 705, 704),\n    COL_TRI(579, 705, 341),\n    COL_TRI(579, 706, 705),\n    COL_TRI(580, 706, 579),\n    COL_TRI(341, 593, 579),\n    COL_TRI(579, 593, 580),\n    COL_TRI(580, 692, 706),\n    COL_TRI(567, 690, 696),\n    COL_TRI(581, 567, 696),\n    COL_TRI(581, 391, 567),\n    COL_TRI(582, 391, 707),\n    COL_TRI(577, 563, 581),\n    COL_TRI(577, 581, 703),\n    COL_TRI(563, 556, 581),\n    COL_TRI(556, 553, 581),\n    COL_TRI(583, 580, 593),\n    COL_TRI(583, 593, 338),\n    COL_TRI(338, 593, 342),\n    COL_TRI(337, 399, 338),\n    COL_TRI(62, 26, 35),\n    COL_TRI(62, 51, 26),\n    COL_TRI(26, 51, 47),\n    COL_TRI(26, 47, 30),\n    COL_TRI(45, 40, 36),\n    COL_TRI(45, 55, 40),\n    COL_TRI(45, 37, 56),\n    COL_TRI(45, 36, 37),\n    COL_TRI(37, 47, 56),\n    COL_TRI(37, 30, 47),\n    COL_TRI(58, 46, 38),\n    COL_TRI(58, 38, 42),\n    COL_TRI(50, 39, 38),\n    COL_TRI(50, 38, 46),\n    COL_TRI(31, 50, 48),\n    COL_TRI(31, 39, 50),\n    COL_TRI(31, 60, 27),\n    COL_TRI(31, 48, 60),\n    COL_TRI(60, 29, 27),\n    COL_TRI(60, 63, 29),\n    COL_TRI_INIT(SURFACE_DEATH_PLANE, 2),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI_INIT(SURFACE_ICE, 36),\n    COL_TRI(26, 27, 28),\n    COL_TRI(27, 29, 28),\n    COL_TRI(30, 31, 27),\n    COL_TRI(30, 27, 26),\n    COL_TRI(26, 28, 32),\n    COL_TRI(33, 34, 26),\n    COL_TRI(32, 33, 26),\n    COL_TRI(34, 35, 26),\n    COL_TRI(30, 36, 31),\n    COL_TRI(37, 36, 30),\n    COL_TRI(31, 38, 39),\n    COL_TRI(36, 38, 31),\n    COL_TRI(47, 45, 56),\n    COL_TRI(40, 41, 36),\n    COL_TRI(36, 41, 38),\n    COL_TRI(42, 38, 53),\n    COL_TRI(43, 53, 38),\n    COL_TRI(44, 43, 38),\n    COL_TRI(41, 44, 38),\n    COL_TRI(45, 54, 55),\n    COL_TRI(46, 54, 45),\n    COL_TRI(48, 45, 47),\n    COL_TRI(46, 57, 54),\n    COL_TRI(49, 46, 58),\n    COL_TRI(50, 46, 48),\n    COL_TRI(48, 46, 45),\n    COL_TRI(46, 49, 59),\n    COL_TRI(46, 59, 57),\n    COL_TRI(51, 48, 47),\n    COL_TRI(51, 60, 48),\n    COL_TRI(52, 60, 51),\n    COL_TRI(15, 52, 51),\n    COL_TRI(52, 63, 60),\n    COL_TRI(51, 16, 15),\n    COL_TRI(51, 61, 16),\n    COL_TRI(51, 62, 61),\n    COL_TRI_INIT(SURFACE_NO_CAM_COL_SLIPPERY, 12),\n    COL_TRI(14, 15, 16),\n    COL_TRI(4, 5, 6),\n    COL_TRI(4, 6, 7),\n    COL_TRI(4, 8, 9),\n    COL_TRI(4, 9, 5),\n    COL_TRI(10, 11, 12),\n    COL_TRI(10, 13, 11),\n    COL_TRI(19, 24, 25),\n    COL_TRI(14, 17, 15),\n    COL_TRI(18, 20, 21),\n    COL_TRI(18, 21, 22),\n    COL_TRI(19, 23, 24),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(2),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_null_start,       /*pos*/ -5836,  7465, -6143, /*yaw*/ 64), // unused, probably an early way to set initial position\n    SPECIAL_OBJECT_WITH_YAW_AND_PARAM(/*preset*/ special_wooden_door_warp, /*pos*/ -7628, -5836, -6988, /*yaw*/ 64, /*bhvParam2*/ 20),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/ccm/areas/2/geo.inc.c",
    "content": "// 0x0E0005E8\nconst GeoLayout ccm_geo_0005E8[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND_COLOR(0x0001),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 12800, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(9, 0, 2000, 6000, 0, 0, 0, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, ccm_seg7_dl_0701CE30),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, ccm_seg7_dl_0701E558),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE_DECAL, ccm_seg7_dl_0701E6B0),\n                    GEO_DISPLAY_LIST(LAYER_ALPHA, ccm_seg7_dl_0701FC78),\n                    GEO_DISPLAY_LIST(LAYER_ALPHA, ccm_seg7_dl_0701FD78),\n                    GEO_DISPLAY_LIST(LAYER_TRANSPARENT, ccm_seg7_dl_0701FE60),\n                    GEO_DISPLAY_LIST(LAYER_TRANSPARENT, ccm_seg7_dl_070207F0),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(0, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ccm/areas/2/macro.inc.c",
    "content": "// 0x07023468 - 0x07023604\nconst MacroObject ccm_seg7_area_2_macro_objs[] = {\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  2255,  4091,  -536),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,        /*yaw*/   0, /*pos*/  2055,  4352,  -497),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,        /*yaw*/   0, /*pos*/  1843,  4486,  -433),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,        /*yaw*/   0, /*pos*/  1603,  4567,  -347),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,        /*yaw*/   0, /*pos*/  1397,  4530,  -287),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,      /*yaw*/   0, /*pos*/ -5320,  6656, -6540, /*bhvParam*/ DIALOG_054),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal, /*yaw*/   0, /*pos*/ -4980,  2180, -1980),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal, /*yaw*/   0, /*pos*/  6640,   -60,  -800),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal, /*yaw*/   0, /*pos*/  6640, -1020,   440),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal, /*yaw*/   0, /*pos*/  6640, -1820,  1760),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal, /*yaw*/   0, /*pos*/  6640, -2260,  2620),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal, /*yaw*/   0, /*pos*/ -6460, -5000, -3200),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal, /*yaw*/   0, /*pos*/ -6460, -5540, -4100),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal, /*yaw*/   0, /*pos*/ -6460, -5200, -5000),\n    MACRO_OBJECT               (/*preset*/ macro_box_1up,              /*yaw*/   0, /*pos*/ -5600, -4500, -6644),\n    MACRO_OBJECT               (/*preset*/ macro_moving_blue_coin,     /*yaw*/   0, /*pos*/ -3160,  6267, -6120),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  -700,  5923, -6240),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  2260,  5342, -6440),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal, /*yaw*/ 120, /*pos*/  2960,  4280,  -880),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  1900,   659, -2340),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  1720,   690, -2220),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  3400,   302, -5240),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  3600,   297, -5420),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  6120,  4435, -5020),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  6140,  -152, -5540),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  6320,  -200, -5320),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  3960, -3297,  6440),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  1400, -3560,  5840),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  -220, -3780,  4960),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  -520, -3890,  4360),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  -740, -4008,  3540),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  -920, -4094,  2760),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  -960, -4101,  2080),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  -860,  3391,  -760),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/ -1120,  3293, -1140),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/ -1560,  2989, -3280),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/ -1740,  2926, -3780),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/ -2849,  2677, -4608),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/ -4620,  2353, -4120),\n    MACRO_OBJECT               (/*preset*/ macro_1up_sliding,          /*yaw*/   0, /*pos*/ -4890,  1452,   552),\n    MACRO_OBJECT               (/*preset*/ macro_1up_sliding,          /*yaw*/   0, /*pos*/ -6369, -1538,  3726),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/ccm/areas/2/trajectory.inc.c",
    "content": "// 0x07023604 - 0x070237A6\nconst Trajectory ccm_seg7_trajectory_penguin_race[] = {\n    TRAJECTORY_POS(0, /*pos*/ -4762,  6660, -6143),\n    TRAJECTORY_POS(1, /*pos*/ -4133,  6455, -6100),\n    TRAJECTORY_POS(2, /*pos*/ -2000,  6100, -5944),\n    TRAJECTORY_POS(3, /*pos*/ -1200,  6033, -5833),\n    TRAJECTORY_POS(4, /*pos*/  1022,  5611, -6033),\n    TRAJECTORY_POS(5, /*pos*/  3833,  5033, -6233),\n    TRAJECTORY_POS(6, /*pos*/  6055,  4598, -5766),\n    TRAJECTORY_POS(7, /*pos*/  6677,  4462, -4877),\n    TRAJECTORY_POS(8, /*pos*/  6277,  4417, -3344),\n    TRAJECTORY_POS(9, /*pos*/  4788,  4280, -1844),\n    TRAJECTORY_POS(10, /*pos*/  2211,  4086,  -555),\n    TRAJECTORY_POS(11, /*pos*/   522,  3687,  -222),\n    TRAJECTORY_POS(12, /*pos*/  -724,  3443,  -466),\n    TRAJECTORY_POS(13, /*pos*/ -1350,  3302, -1288),\n    TRAJECTORY_POS(14, /*pos*/ -1255,  3039, -3000),\n    TRAJECTORY_POS(15, /*pos*/ -2233,  2785, -4533),\n    TRAJECTORY_POS(16, /*pos*/ -3288,  2622, -4820),\n    TRAJECTORY_POS(17, /*pos*/ -4266,  2480, -4555),\n    TRAJECTORY_POS(18, /*pos*/ -4900,  2333, -3944),\n    TRAJECTORY_POS(19, /*pos*/ -5066,  2175, -2977),\n    TRAJECTORY_POS(20, /*pos*/ -4833,  2018, -1999),\n    TRAJECTORY_POS(21, /*pos*/ -4122,  1866, -1366),\n    TRAJECTORY_POS(22, /*pos*/ -3200,  1736, -1088),\n    TRAJECTORY_POS(23, /*pos*/  -222,  1027, -1200),\n    TRAJECTORY_POS(24, /*pos*/  1333,   761, -1733),\n    TRAJECTORY_POS(25, /*pos*/  2488,   562, -2944),\n    TRAJECTORY_POS(26, /*pos*/  2977,   361, -4988),\n    //! missing ID\n    TRAJECTORY_POS(28, /*pos*/  3754,   329, -5689),\n    TRAJECTORY_POS(29, /*pos*/  5805,    86, -5980),\n    TRAJECTORY_POS(30, /*pos*/  6566,  -449, -4133),\n    TRAJECTORY_POS(31, /*pos*/  6689, -1119,  -888),\n    TRAJECTORY_POS(32, /*pos*/  6688, -2127,  1200),\n    TRAJECTORY_POS(33, /*pos*/  6666, -2573,  3555),\n    TRAJECTORY_POS(34, /*pos*/  6600, -2667,  4333),\n    TRAJECTORY_POS(35, /*pos*/  6366, -2832,  5722),\n    TRAJECTORY_POS(36, /*pos*/  5844, -3021,  6355),\n    TRAJECTORY_POS(37, /*pos*/  2955, -3394,  6255),\n    TRAJECTORY_POS(38, /*pos*/  1788, -3512,  5988),\n    TRAJECTORY_POS(39, /*pos*/   -89, -3720,  5188),\n    TRAJECTORY_POS(40, /*pos*/  -732, -3910,  4144),\n    TRAJECTORY_POS(41, /*pos*/  -722, -4095,  2688),\n    TRAJECTORY_POS(42, /*pos*/ -1333, -4198,  1255),\n    TRAJECTORY_POS(43, /*pos*/ -2377, -4302,   788),\n    TRAJECTORY_POS(44, /*pos*/ -4500, -4684,   277),\n    TRAJECTORY_POS(45, /*pos*/ -5466, -4790,    11),\n    TRAJECTORY_POS(46, /*pos*/ -6044, -4860,  -333),\n    TRAJECTORY_POS(47, /*pos*/ -6388, -5079, -1155),\n    TRAJECTORY_POS(48, /*pos*/ -6510, -5389, -2666),\n    TRAJECTORY_POS(49, /*pos*/ -6476, -5555, -3622),\n    TRAJECTORY_POS(50, /*pos*/ -6488, -5684, -4777),\n    TRAJECTORY_POS(51, /*pos*/ -6488, -5829, -6088),\n    TRAJECTORY_POS(52, /*pos*/ -6507, -5841, -6400),\n    TRAJECTORY_END(),\n};\n"
  },
  {
    "path": "levels/ccm/geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"game/level_geo.h\"\n#include \"game/geo_misc.h\"\n#include \"game/camera.h\"\n#include \"game/moving_texture.h\"\n#include \"game/screen_transition.h\"\n#include \"game/paintings.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"levels/ccm/header.h\"\n\n#include \"levels/ccm/ropeway_lift/geo.inc.c\"\n#include \"levels/ccm/snowman_base/geo.inc.c\"\n#include \"levels/ccm/snowman_head/geo.inc.c\"\n#include \"levels/ccm/areas/1/6/geo.inc.c\"\n#include \"levels/ccm/areas/1/7/geo.inc.c\"\n#include \"levels/ccm/areas/1/8/geo.inc.c\"\n#include \"levels/ccm/areas/1/9/geo.inc.c\"\n#include \"levels/ccm/areas/1/10/geo.inc.c\"\n#include \"levels/ccm/areas/1/geo.inc.c\"\n#include \"levels/ccm/areas/2/geo.inc.c\"\n"
  },
  {
    "path": "levels/ccm/header.h",
    "content": "#ifndef CCM_HEADER_H\n#define CCM_HEADER_H\n\n#include \"types.h\"\n#include \"game/moving_texture.h\"\n\n// geo\nextern const GeoLayout ccm_geo_0003D0[];\nextern const GeoLayout ccm_geo_0003F0[];\nextern const GeoLayout ccm_geo_00040C[];\nextern const GeoLayout ccm_geo_00042C[];\nextern const GeoLayout ccm_geo_00045C[];\nextern const GeoLayout ccm_geo_000494[];\nextern const GeoLayout ccm_geo_0004BC[];\nextern const GeoLayout ccm_geo_0004E4[];\nextern const GeoLayout ccm_geo_00051C[];\nextern const GeoLayout ccm_geo_0005E8[];\n\n// leveldata\nextern const Gfx ccm_seg7_dl_0700B090[];\nextern const Gfx ccm_seg7_dl_0700B1D8[];\nextern const Gfx ccm_seg7_dl_0700C380[];\nextern const Gfx ccm_seg7_dl_0700D578[];\nextern const Gfx ccm_seg7_dl_0700DDF0[];\nextern const Gfx ccm_seg7_dl_0700E708[];\nextern const Gfx ccm_seg7_dl_0700E970[];\nextern const Gfx ccm_seg7_dl_0700F440[];\nextern const Gfx ccm_seg7_dl_0700F650[];\nextern const Gfx ccm_seg7_dl_0700F780[];\nextern const Gfx ccm_seg7_dl_0700FB00[];\nextern const Gfx ccm_seg7_dl_0700FD08[];\nextern const Gfx ccm_seg7_dl_07010660[];\nextern const Gfx ccm_seg7_dl_070109D0[];\nextern const Gfx ccm_seg7_dl_07010B50[];\nextern const Gfx ccm_seg7_dl_07010F28[];\nextern const Gfx ccm_seg7_dl_070118B0[];\nextern const Gfx ccm_seg7_dl_07012BD8[];\nextern const Gfx ccm_seg7_dl_070136D0[];\nextern const Gfx ccm_seg7_dl_07013870[];\nextern const Collision ccm_seg7_area_1_collision[];\nextern const MacroObject ccm_seg7_area_1_macro_objs[];\nextern const Collision ccm_seg7_collision_070163F8[];\nextern const Trajectory ccm_seg7_trajectory_snowman[];\nextern const Trajectory ccm_seg7_trajectory_0701669C[];\nextern const struct MovtexQuadCollection ccm_movtex_penguin_puddle_water[];\nextern const Gfx ccm_seg7_dl_0701CE30[];\nextern const Gfx ccm_seg7_dl_0701E558[];\nextern const Gfx ccm_seg7_dl_0701E6B0[];\nextern const Gfx ccm_seg7_dl_0701FC78[];\nextern const Gfx ccm_seg7_dl_0701FD78[];\nextern const Gfx ccm_seg7_dl_0701FE60[];\nextern const Gfx ccm_seg7_dl_070207F0[];\nextern const Collision ccm_seg7_area_2_collision[];\nextern const MacroObject ccm_seg7_area_2_macro_objs[];\nextern const Trajectory ccm_seg7_trajectory_penguin_race[];\n\n// script\nextern const LevelScript level_ccm_entry[];\n\n#endif\n"
  },
  {
    "path": "levels/ccm/level.yaml",
    "content": "# Cool, Cool Mountain\nshort-name: ccm\nfull-name: Cool, Cool Mountain\ntexture-file: [\"/texture.inc.c\"]\narea-count: 2\nobjects: [ropeway_lift, snowman_base, snowman_head]\nshared-path: []\n# loaded files\nskybox-bin: ccm\ntexture-bin: snow\neffects: true\nactor-bins: [group7, group16]\ncommon-bin: [common0]\n"
  },
  {
    "path": "levels/ccm/leveldata.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"surface_terrains.h\"\n#include \"moving_texture_macros.h\"\n#include \"level_misc_macros.h\"\n#include \"macro_presets.h\"\n#include \"special_presets.h\"\n#include \"textures.h\"\n#include \"dialog_ids.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/ccm/texture.inc.c\"\n#include \"levels/ccm/areas/1/1/model.inc.c\"\n#include \"levels/ccm/areas/1/2/model.inc.c\"\n#include \"levels/ccm/areas/1/3/model.inc.c\"\n#include \"levels/ccm/areas/1/4/model.inc.c\"\n#include \"levels/ccm/areas/1/5/model.inc.c\"\n#include \"levels/ccm/areas/1/6/1.inc.c\"\n#include \"levels/ccm/areas/1/6/2.inc.c\"\n#include \"levels/ccm/areas/1/7/1.inc.c\"\n#include \"levels/ccm/areas/1/7/2.inc.c\"\n#include \"levels/ccm/areas/1/7/3.inc.c\"\n#include \"levels/ccm/areas/1/8/model.inc.c\"\n#include \"levels/ccm/areas/1/9/model.inc.c\"\n#include \"levels/ccm/areas/1/10/1.inc.c\"\n#include \"levels/ccm/areas/1/10/2.inc.c\"\n#include \"levels/ccm/areas/1/10/3.inc.c\"\n#include \"levels/ccm/ropeway_lift/1.inc.c\"\n#include \"levels/ccm/ropeway_lift/2.inc.c\"\n#include \"levels/ccm/snowman_base/model.inc.c\"\n#include \"levels/ccm/snowman_head/1.inc.c\"\n#include \"levels/ccm/snowman_head/2.inc.c\"\n#include \"levels/ccm/areas/1/collision.inc.c\"\n#include \"levels/ccm/areas/1/macro.inc.c\"\n#include \"levels/ccm/ropeway_lift/collision.inc.c\"\n#include \"levels/ccm/areas/1/trajectory.inc.c\"\n#include \"levels/ccm/areas/1/movtext.inc.c\"\n#include \"levels/ccm/areas/2/1/model.inc.c\"\n#include \"levels/ccm/areas/2/2/model.inc.c\"\n#include \"levels/ccm/areas/2/3/model.inc.c\"\n#include \"levels/ccm/areas/2/4/model.inc.c\"\n#include \"levels/ccm/areas/2/5/model.inc.c\"\n#include \"levels/ccm/areas/2/6/model.inc.c\"\n#include \"levels/ccm/areas/2/7/model.inc.c\"\n#include \"levels/ccm/areas/2/collision.inc.c\"\n#include \"levels/ccm/areas/2/macro.inc.c\"\n#include \"levels/ccm/areas/2/trajectory.inc.c\"\n"
  },
  {
    "path": "levels/ccm/ropeway_lift/1.inc.c",
    "content": "// 0x07010BD0 - 0x07010CC0\nstatic const Vtx ccm_seg7_vertex_07010BD0[] = {\n    {{{     0,   -153,   -132}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -204,   -153,   -132}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -204,   -153,    133}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -204,   -153,   -132}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -204,   -204,    133}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -204,   -153,    133}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -204,   -204,   -132}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   205,   -153,    133}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   205,   -204,    133}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   205,   -204,   -132}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   205,   -153,   -132}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -153,   -132}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -153,    133}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -204,   -132}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -153,    133}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07010CC0 - 0x07010D30\nstatic const Vtx ccm_seg7_vertex_07010CC0[] = {\n    {{{   205,   -204,   -132}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -204,   -132}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -204,    133}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   205,   -204,    133}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -204,   -132}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -204,   -204,    133}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -204,    133}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07010D30 - 0x07010E30\nstatic const Vtx ccm_seg7_vertex_07010D30[] = {\n    {{{     0,   -255,   -132}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   205,      0,   -132}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,   -132}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -204,      0,    133}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -255,    133}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,    133}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -204,   -255,    133}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -255,    133}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   205,      0,    133}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,    133}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   205,   -255,    133}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -204,      0,   -132}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -204,   -255,   -132}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   -255,   -132}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,   -132}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   205,   -255,   -132}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07010E30 - 0x07010EC0\nstatic const Gfx ccm_seg7_dl_07010E30[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ccm_seg7_vertex_07010BD0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(10, 12,  7, 0x0, 13,  6,  4, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07010CC0, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP1Triangle( 4,  5,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07010EC0 - 0x07010F28\nstatic const Gfx ccm_seg7_dl_07010EC0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ccm_seg7_texture_07000900),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ccm_seg7_vertex_07010D30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07010F28 - 0x07010FB8\nconst Gfx ccm_seg7_dl_07010F28[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_07010E30),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_07010EC0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ccm/ropeway_lift/2.inc.c",
    "content": "// 0x07010FB8 - 0x07010FD0\nstatic const Lights1 ccm_seg7_lights_07010FB8 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07010FD0 - 0x070110C0\nstatic const Vtx ccm_seg7_vertex_07010FD0[] = {\n    {{{   -21,    -19,    174}, 0, {   990,     95}, {0x8c, 0xce, 0x00, 0xff}}},\n    {{{   -30,      2,    174}, 0, {   990,      0}, {0x8c, 0xce, 0x00, 0xff}}},\n    {{{   -30,      2,    123}, 0, {     0,      0}, {0x8c, 0xce, 0x00, 0xff}}},\n    {{{     0,     32,    123}, 0, {   990,     95}, {0x32, 0x74, 0x00, 0xff}}},\n    {{{     0,     32,    174}, 0, {     0,     95}, {0x32, 0x74, 0x00, 0xff}}},\n    {{{    21,     23,    174}, 0, {     0,      0}, {0x32, 0x74, 0x00, 0xff}}},\n    {{{    21,     23,    123}, 0, {   990,      0}, {0x32, 0x74, 0x00, 0xff}}},\n    {{{    21,     23,    174}, 0, {   990,      0}, {0x74, 0x32, 0x00, 0xff}}},\n    {{{    30,      2,    174}, 0, {   990,     95}, {0x74, 0x32, 0x00, 0xff}}},\n    {{{    30,      2,    123}, 0, {     0,     95}, {0x74, 0x32, 0x00, 0xff}}},\n    {{{    21,     23,    123}, 0, {     0,      0}, {0x74, 0x32, 0x00, 0xff}}},\n    {{{     0,    -28,    123}, 0, {   990,      0}, {0xce, 0x8c, 0x00, 0xff}}},\n    {{{   -21,    -19,    174}, 0, {     0,     95}, {0xce, 0x8c, 0x00, 0xff}}},\n    {{{   -21,    -19,    123}, 0, {   990,     95}, {0xce, 0x8c, 0x00, 0xff}}},\n    {{{     0,    -28,    174}, 0, {     0,      0}, {0xce, 0x8c, 0x00, 0xff}}},\n};\n\n// 0x070110C0 - 0x070111B0\nstatic const Vtx ccm_seg7_vertex_070110C0[] = {\n    {{{   -30,      2,    123}, 0, {     0,     95}, {0x8c, 0x32, 0x00, 0xff}}},\n    {{{   -21,     23,    174}, 0, {   990,      0}, {0x8c, 0x32, 0x00, 0xff}}},\n    {{{   -21,     23,    123}, 0, {     0,      0}, {0x8c, 0x32, 0x00, 0xff}}},\n    {{{   -21,    -19,    174}, 0, {   990,     95}, {0x8c, 0xce, 0x00, 0xff}}},\n    {{{   -30,      2,    123}, 0, {     0,      0}, {0x8c, 0xce, 0x00, 0xff}}},\n    {{{   -21,    -19,    123}, 0, {     0,     95}, {0x8c, 0xce, 0x00, 0xff}}},\n    {{{    30,      2,    123}, 0, {     0,      0}, {0x74, 0xce, 0x00, 0xff}}},\n    {{{    21,    -19,    174}, 0, {   990,     95}, {0x74, 0xce, 0x00, 0xff}}},\n    {{{    21,    -19,    123}, 0, {     0,     95}, {0x74, 0xce, 0x00, 0xff}}},\n    {{{    30,      2,    174}, 0, {   990,      0}, {0x74, 0xce, 0x00, 0xff}}},\n    {{{    21,    -19,    174}, 0, {   990,      0}, {0x32, 0x8c, 0x00, 0xff}}},\n    {{{     0,    -28,    174}, 0, {   990,     95}, {0x32, 0x8c, 0x00, 0xff}}},\n    {{{     0,    -28,    123}, 0, {     0,     95}, {0x32, 0x8c, 0x00, 0xff}}},\n    {{{    21,    -19,    123}, 0, {     0,      0}, {0x32, 0x8c, 0x00, 0xff}}},\n    {{{   -30,      2,    174}, 0, {   990,     95}, {0x8c, 0x32, 0x00, 0xff}}},\n};\n\n// 0x070111B0 - 0x070112A0\nstatic const Vtx ccm_seg7_vertex_070111B0[] = {\n    {{{     0,    -24,   -122}, 0, {   990,     95}, {0x32, 0x8c, 0x00, 0xff}}},\n    {{{    21,    -15,   -173}, 0, {     0,      0}, {0x32, 0x8c, 0x00, 0xff}}},\n    {{{    21,    -15,   -122}, 0, {   990,      0}, {0x32, 0x8c, 0x00, 0xff}}},\n    {{{   -21,     23,    174}, 0, {   990,     95}, {0xce, 0x74, 0x00, 0xff}}},\n    {{{     0,     32,    123}, 0, {     0,      0}, {0xce, 0x74, 0x00, 0xff}}},\n    {{{   -21,     23,    123}, 0, {     0,     95}, {0xce, 0x74, 0x00, 0xff}}},\n    {{{     0,     32,    174}, 0, {   990,      0}, {0xce, 0x74, 0x00, 0xff}}},\n    {{{    30,      5,   -122}, 0, {   990,     95}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{    30,      5,   -173}, 0, {     0,     95}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{    21,     27,   -173}, 0, {     0,      0}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{    21,     27,   -122}, 0, {   990,      0}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{    21,     27,   -173}, 0, {   990,      0}, {0x32, 0x74, 0x00, 0xff}}},\n    {{{     0,     36,   -173}, 0, {   990,     95}, {0x32, 0x74, 0x00, 0xff}}},\n    {{{     0,     36,   -122}, 0, {     0,     95}, {0x32, 0x74, 0x00, 0xff}}},\n    {{{    21,     27,   -122}, 0, {     0,      0}, {0x32, 0x74, 0x00, 0xff}}},\n};\n\n// 0x070112A0 - 0x07011390\nstatic const Vtx ccm_seg7_vertex_070112A0[] = {\n    {{{   -21,    -15,   -173}, 0, {   990,     95}, {0xce, 0x8c, 0x00, 0xff}}},\n    {{{     0,    -24,   -173}, 0, {   990,      0}, {0xce, 0x8c, 0x00, 0xff}}},\n    {{{     0,    -24,   -122}, 0, {     0,      0}, {0xce, 0x8c, 0x00, 0xff}}},\n    {{{     0,    -24,   -122}, 0, {   990,     95}, {0x32, 0x8c, 0x00, 0xff}}},\n    {{{     0,    -24,   -173}, 0, {     0,     95}, {0x32, 0x8c, 0x00, 0xff}}},\n    {{{    21,    -15,   -173}, 0, {     0,      0}, {0x32, 0x8c, 0x00, 0xff}}},\n    {{{    21,    -15,   -173}, 0, {     6,    -30}, {0x73, 0xcc, 0x00, 0xff}}},\n    {{{    30,      5,   -173}, 0, {     6,     97}, {0x73, 0xcc, 0x00, 0xff}}},\n    {{{    30,      5,   -122}, 0, {  1026,     95}, {0x73, 0xcc, 0x00, 0xff}}},\n    {{{    21,    -15,   -122}, 0, {  1026,      0}, {0x73, 0xcc, 0x00, 0xff}}},\n    {{{   -30,      5,   -122}, 0, {   990,      0}, {0x8d, 0xcc, 0x00, 0xff}}},\n    {{{   -30,      5,   -173}, 0, {     0,      0}, {0x8d, 0xcc, 0x00, 0xff}}},\n    {{{   -21,    -15,   -173}, 0, {     0,     95}, {0x8d, 0xcc, 0x00, 0xff}}},\n    {{{   -21,    -15,   -122}, 0, {   990,     95}, {0x8d, 0xcc, 0x00, 0xff}}},\n    {{{   -21,    -15,   -122}, 0, {     0,     95}, {0xce, 0x8c, 0x00, 0xff}}},\n};\n\n// 0x07011390 - 0x07011410\nstatic const Vtx ccm_seg7_vertex_07011390[] = {\n    {{{   -21,     27,   -173}, 0, {   -30,     97}, {0x8b, 0x30, 0x00, 0xff}}},\n    {{{   -30,      5,   -122}, 0, {   990,      0}, {0x8b, 0x30, 0x00, 0xff}}},\n    {{{   -21,     27,   -122}, 0, {   990,     95}, {0x8b, 0x30, 0x00, 0xff}}},\n    {{{   -30,      5,   -173}, 0, {   -30,    -29}, {0x8b, 0x30, 0x00, 0xff}}},\n    {{{     0,     36,   -173}, 0, {     0,      0}, {0xce, 0x74, 0x00, 0xff}}},\n    {{{   -21,     27,   -122}, 0, {   990,     95}, {0xce, 0x74, 0x00, 0xff}}},\n    {{{     0,     36,   -122}, 0, {   990,      0}, {0xce, 0x74, 0x00, 0xff}}},\n    {{{   -21,     27,   -173}, 0, {     0,     95}, {0xce, 0x74, 0x00, 0xff}}},\n};\n\n// 0x07011410 - 0x07011500\nstatic const Vtx ccm_seg7_vertex_07011410[] = {\n    {{{   -21,     23,    174}, 0, {   118,    118}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    21,     23,    174}, 0, {   840,    118}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,     32,    174}, 0, {   478,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    21,    -19,    174}, 0, {   840,    840}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    30,      2,    174}, 0, {   990,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,    -28,    174}, 0, {   480,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -21,    -19,    174}, 0, {   118,    840}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -30,      2,    174}, 0, {     0,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -21,    -15,   -173}, 0, {   840,    840}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -30,      5,   -173}, 0, {   990,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -21,     27,   -173}, 0, {   840,    118}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    21,    -15,   -173}, 0, {   118,    840}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,    -24,   -173}, 0, {   478,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    30,      5,   -173}, 0, {     0,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    21,     27,   -173}, 0, {   118,    118}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07011500 - 0x07011600\nstatic const Vtx ccm_seg7_vertex_07011500[] = {\n    {{{   -21,     27,   -122}, 0, {   840,    118}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -21,    -15,   -122}, 0, {   840,    840}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,    -24,   -122}, 0, {   478,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -21,    -15,   -173}, 0, {   840,    840}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -21,     27,   -173}, 0, {   840,    118}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,     36,   -173}, 0, {   480,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    21,     27,   -173}, 0, {   118,    118}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -21,    -19,    123}, 0, {   118,    840}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    21,    -19,    123}, 0, {   840,    840}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,    -28,    123}, 0, {   478,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    21,     23,    123}, 0, {   840,    118}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    30,      2,    123}, 0, {   990,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -21,     23,    123}, 0, {   118,    118}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,     32,    123}, 0, {   478,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -30,      2,    123}, 0, {     0,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -30,      5,   -122}, 0, {   990,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07011600 - 0x07011660\nstatic const Vtx ccm_seg7_vertex_07011600[] = {\n    {{{   -21,     27,   -122}, 0, {   840,    118}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,    -24,   -122}, 0, {   478,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    21,    -15,   -122}, 0, {   118,    840}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    30,      5,   -122}, 0, {     0,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    21,     27,   -122}, 0, {   118,    118}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,     36,   -122}, 0, {   478,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07011660 - 0x070117B8\nstatic const Gfx ccm_seg7_dl_07011660[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ccm_seg7_texture_07000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 4 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ccm_seg7_lights_07010FB8.l, 1),\n    gsSPLight(&ccm_seg7_lights_07010FB8.a, 2),\n    gsSPVertex(ccm_seg7_vertex_07010FD0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070110C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070111B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_070112A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07011390, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070117B8 - 0x070118B0\nstatic const Gfx ccm_seg7_dl_070117B8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ccm_seg7_texture_07001100),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ccm_seg7_vertex_07011410, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  5,  3, 0x0,  0,  6,  5, 0x0),\n    gsSP2Triangles( 0,  7,  6, 0x0,  0,  4,  1, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11, 12, 0x0),\n    gsSP2Triangles( 8, 13, 11, 0x0,  8, 14, 13, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07011500, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10, 11, 0x0,  7, 12, 13, 0x0),\n    gsSP2Triangles( 7, 14, 12, 0x0,  7, 11,  8, 0x0),\n    gsSP2Triangles( 7, 13, 10, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07011600, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  0,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070118B0 - 0x07011940\nconst Gfx ccm_seg7_dl_070118B0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 2, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (4 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_07011660),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_070117B8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ccm/ropeway_lift/collision.inc.c",
    "content": "// 0x070163F8 - 0x070165A8\nconst Collision ccm_seg7_collision_070163F8[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x18),\n    COL_VERTEX(-204, -204, -101),\n    COL_VERTEX(205, -255, -142),\n    COL_VERTEX(205, -204, -101),\n    COL_VERTEX(-204, -255, -142),\n    COL_VERTEX(-204, -255, 143),\n    COL_VERTEX(-204, -204, 102),\n    COL_VERTEX(205, -204, 102),\n    COL_VERTEX(205, -255, 143),\n    COL_VERTEX(205, -30, -101),\n    COL_VERTEX(-204, 0, -122),\n    COL_VERTEX(-204, -30, -101),\n    COL_VERTEX(205, 0, -122),\n    COL_VERTEX(205, -30, -142),\n    COL_VERTEX(-204, -30, -142),\n    COL_VERTEX(205, -30, 143),\n    COL_VERTEX(205, 0, 123),\n    COL_VERTEX(-204, 0, 123),\n    COL_VERTEX(-204, -30, 143),\n    COL_VERTEX(-204, -30, 102),\n    COL_VERTEX(205, -30, 102),\n    COL_VERTEX(-204, -153, 102),\n    COL_VERTEX(-204, -153, -101),\n    COL_VERTEX(205, -153, -101),\n    COL_VERTEX(205, -153, 102),\n    COL_TRI_INIT(SURFACE_DEFAULT, 10),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI(4, 5, 6),\n    COL_TRI(4, 6, 7),\n    COL_TRI(6, 22, 23),\n    COL_TRI(6, 2, 22),\n    COL_TRI(0, 5, 20),\n    COL_TRI(0, 20, 21),\n    COL_TRI(5, 2, 6),\n    COL_TRI(5, 0, 2),\n    COL_TRI_INIT(SURFACE_VERY_SLIPPERY, 8),\n    COL_TRI(8, 9, 10),\n    COL_TRI(8, 11, 9),\n    COL_TRI(11, 12, 13),\n    COL_TRI(11, 13, 9),\n    COL_TRI(14, 15, 16),\n    COL_TRI(14, 16, 17),\n    COL_TRI(15, 18, 16),\n    COL_TRI(15, 19, 18),\n    COL_TRI_INIT(SURFACE_HARD_NOT_SLIPPERY, 2),\n    COL_TRI(21, 20, 23),\n    COL_TRI(21, 23, 22),\n    COL_TRI_INIT(SURFACE_NO_CAM_COLLISION, 24),\n    COL_TRI(17, 16, 18),\n    COL_TRI(20, 17, 18),\n    COL_TRI(20, 4, 17),\n    COL_TRI(17, 4, 7),\n    COL_TRI(17, 7, 14),\n    COL_TRI(20, 5, 4),\n    COL_TRI(12, 3, 13),\n    COL_TRI(12, 1, 3),\n    COL_TRI(13, 3, 21),\n    COL_TRI(3, 0, 21),\n    COL_TRI(11, 8, 12),\n    COL_TRI(21, 10, 13),\n    COL_TRI(13, 10, 9),\n    COL_TRI(10, 22, 8),\n    COL_TRI(10, 21, 22),\n    COL_TRI(19, 23, 20),\n    COL_TRI(19, 20, 18),\n    COL_TRI(19, 15, 14),\n    COL_TRI(12, 8, 22),\n    COL_TRI(22, 1, 12),\n    COL_TRI(22, 2, 1),\n    COL_TRI(14, 7, 23),\n    COL_TRI(7, 6, 23),\n    COL_TRI(19, 14, 23),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/ccm/ropeway_lift/geo.inc.c",
    "content": "// 0x0E0003D0\nconst GeoLayout ccm_geo_0003D0[] = {\n    GEO_CULLING_RADIUS(500),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, ccm_seg7_dl_07010F28),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, ccm_seg7_dl_070118B0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ccm/script.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"behavior_data.h\"\n#include \"model_ids.h\"\n#include \"seq_ids.h\"\n#include \"dialog_ids.h\"\n#include \"segment_symbols.h\"\n#include \"level_commands.h\"\n\n#include \"game/level_update.h\"\n\n#include \"levels/scripts.h\"\n\n#include \"actors/common1.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/ccm/header.h\"\n\nstatic const LevelScript script_func_local_1[] = {\n    OBJECT(/*model*/ MODEL_CCM_ROPEWAY_LIFT, /*pos*/ 531, -4430, 6426,    /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(0x07) | BPARAM2(0x12), /*bhv*/ bhvPlatformOnTrack),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_2[] = {\n    OBJECT          (/*model*/ MODEL_PENGUIN,          /*pos*/  2650, -3735,  3970, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(0x01), /*bhv*/ bhvSmallPenguin),\n    OBJECT          (/*model*/ MODEL_PENGUIN,          /*pos*/  -555,  3470, -1000, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(0x00), /*bhv*/ bhvSmallPenguin),\n    OBJECT          (/*model*/ MODEL_MR_BLIZZARD,      /*pos*/ -2376, -1589,  4256, /*angle*/ 0, 252, 0, /*bhvParam*/ BPARAM2(MR_BLIZZARD_STYPE_JUMPING), /*bhv*/ bhvMrBlizzard),\n    OBJECT          (/*model*/ MODEL_MR_BLIZZARD,      /*pos*/  -394, -1589,  4878, /*angle*/ 0,  74, 0, /*bhvParam*/ BPARAM2(MR_BLIZZARD_STYPE_JUMPING), /*bhv*/ bhvMrBlizzard),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_CCM_SNOWMAN_BASE, /*pos*/  2560,  2662, -1122, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvSnowmansBottom, /*acts*/ ACT_5),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_3[] = {\n    OBJECT_WITH_ACTS(/*model*/ MODEL_NONE,             /*pos*/  2665, -4607,  4525, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_1), /*bhv*/ bhvCCMTouchedStarSpawn, /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_PENGUIN,          /*pos*/  3450, -4700,  4550, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_2), /*bhv*/ bhvTuxiesMother,          /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_NONE,             /*pos*/  4200,  -927,   400, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_4), /*bhv*/ bhvHiddenRedCoinStar,   /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_CCM_SNOWMAN_HEAD, /*pos*/ -4230, -1169,  1813, /*angle*/ 0, 270, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_5), /*bhv*/ bhvSnowmansHead,          /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_STAR,             /*pos*/ -2000, -2200, -3000, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_6), /*bhv*/ bhvStar,                   /*acts*/ ALL_ACTS),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_4[] = {\n    OBJECT_WITH_ACTS(/*model*/ MODEL_PENGUIN, /*pos*/ -4952,  6656, -6075, /*angle*/ 0, 270, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_3) | BPARAM2(RACING_PENGUIN_BP_THIN), /*bhv*/ bhvRacingPenguin,   /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    OBJECT          (/*model*/ MODEL_NONE,    /*pos*/ -6500, -5836, -6400, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvPenguinRaceFinishLine),\n    OBJECT          (/*model*/ MODEL_NONE,    /*pos*/ -6393,  -716,  7503, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvPenguinRaceShortcutCheck),\n#ifndef VERSION_JP\n    OBJECT          (/*model*/ MODEL_NONE,    /*pos*/ -4943,  1321,   667, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvPlaysMusicTrackWhenTouched),\n#endif\n    RETURN(),\n};\n\nconst LevelScript level_ccm_entry[] = {\n    INIT_LEVEL(),\n    LOAD_MIO0        (/*seg*/ 0x07, _ccm_segment_7SegmentRomStart, _ccm_segment_7SegmentRomEnd),\n    LOAD_MIO0_TEXTURE(/*seg*/ 0x09, _snow_mio0SegmentRomStart, _snow_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x0B, _effect_mio0SegmentRomStart, _effect_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x0A, _ccm_skybox_mio0SegmentRomStart, _ccm_skybox_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x05, _group7_mio0SegmentRomStart, _group7_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0C, _group7_geoSegmentRomStart,  _group7_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x06, _group16_mio0SegmentRomStart, _group16_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0D, _group16_geoSegmentRomStart,  _group16_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x08, _common0_mio0SegmentRomStart, _common0_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0F, _common0_geoSegmentRomStart,  _common0_geoSegmentRomEnd),\n    ALLOC_LEVEL_POOL(),\n    MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),\n    JUMP_LINK(script_func_global_1),\n    JUMP_LINK(script_func_global_8),\n    JUMP_LINK(script_func_global_17),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_03, ccm_geo_00042C),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_04, ccm_geo_00045C),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_05, ccm_geo_000494),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_06, ccm_geo_0004BC),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_07, ccm_geo_0004E4),\n    LOAD_MODEL_FROM_GEO(MODEL_CCM_CABIN_DOOR,    cabin_door_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_CCM_SNOW_TREE,     snow_tree_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_CCM_ROPEWAY_LIFT,  ccm_geo_0003D0),\n    LOAD_MODEL_FROM_GEO(MODEL_CCM_SNOWMAN_BASE,  ccm_geo_0003F0),\n    LOAD_MODEL_FROM_GEO(MODEL_CCM_SNOWMAN_HEAD,  ccm_geo_00040C),\n\n    AREA(/*index*/ 1, ccm_geo_00051C),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ -1512,  3560, -2305, /*angle*/ 0,  140, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvSpinAirborneWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/  -181,  2918, -1486, /*angle*/ 0,    0, 0, /*bhvParam*/ BPARAM1(15) | BPARAM2(WARP_NODE_1E), /*bhv*/ bhvWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ -1847,  2815,  -321, /*angle*/ 0, -158, 0, /*bhvParam*/ BPARAM2(WARP_NODE_1F), /*bhv*/ bhvFadingWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/  3349, -4694,  -183, /*angle*/ 0,  -34, 0, /*bhvParam*/ BPARAM2(WARP_NODE_20), /*bhv*/ bhvFadingWarp),\n        WARP_NODE(/*id*/ WARP_NODE_0A,      /*destLevel*/ LEVEL_CCM,    /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_14,      /*destLevel*/ LEVEL_CCM,    /*destArea*/ 2, /*destNode*/ WARP_NODE_14, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_1E,      /*destLevel*/ LEVEL_CCM,    /*destArea*/ 2, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_1F,      /*destLevel*/ LEVEL_CCM,    /*destArea*/ 1, /*destNode*/ WARP_NODE_20, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_20,      /*destLevel*/ LEVEL_CCM,    /*destArea*/ 1, /*destNode*/ WARP_NODE_1F, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_SUCCESS, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_33, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH,   /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_65, /*flags*/ WARP_NO_CHECKPOINT),\n        JUMP_LINK(script_func_local_1),\n        JUMP_LINK(script_func_local_2),\n        JUMP_LINK(script_func_local_3),\n        TERRAIN(/*terrainData*/ ccm_seg7_area_1_collision),\n        MACRO_OBJECTS(/*objList*/ ccm_seg7_area_1_macro_objs),\n        SHOW_DIALOG(/*index*/ 0x00, DIALOG_048),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0000, /*seq*/ SEQ_LEVEL_SNOW),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_SNOW),\n    END_AREA(),\n\n    AREA(/*index*/ 2, ccm_geo_0005E8),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ -5836, 7465, -6143, /*angle*/ 0, 90, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvAirborneWarp),\n        WARP_NODE(/*id*/ WARP_NODE_14,      /*destLevel*/ LEVEL_CCM,    /*destArea*/ 1, /*destNode*/ WARP_NODE_14, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_0A,      /*destLevel*/ LEVEL_CCM,    /*destArea*/ 2, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_SUCCESS, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_33, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH,   /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_65, /*flags*/ WARP_NO_CHECKPOINT),\n        JUMP_LINK(script_func_local_4),\n        TERRAIN(/*terrainData*/ ccm_seg7_area_2_collision),\n        MACRO_OBJECTS(/*objList*/ ccm_seg7_area_2_macro_objs),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0001, /*seq*/ SEQ_LEVEL_SLIDE),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_SLIDE),\n    END_AREA(),\n\n    FREE_LEVEL_POOL(),\n    MARIO_POS(/*area*/ 1, /*yaw*/ 140, /*pos*/ -1512, 2560, -2305),\n    CALL(/*arg*/ 0, /*func*/ lvl_init_or_update),\n    CALL_LOOP(/*arg*/ 1, /*func*/ lvl_init_or_update),\n    CLEAR_LEVEL(),\n    SLEEP_BEFORE_EXIT(/*frames*/ 1),\n    EXIT(),\n};\n"
  },
  {
    "path": "levels/ccm/snowman_base/geo.inc.c",
    "content": "// 0x0E0003F0\nconst GeoLayout ccm_geo_0003F0[] = {\n    GEO_SHADOW(SHADOW_CIRCLE_4_VERTS, 0xC8, 400),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, ccm_seg7_dl_07012BD8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ccm/snowman_base/model.inc.c",
    "content": "// 0x07011940 - 0x07011958\nstatic const Lights1 ccm_seg7_lights_07011940 = gdSPDefLights1(\n    0xcc, 0xcc, 0xcc,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07011958 - 0x07012158\nALIGNED8 static const Texture ccm_seg7_texture_07011958[] = {\n#include \"levels/ccm/12.rgba16.inc.c\"\n};\n\n// 0x07012158 - 0x07012258\nstatic const Vtx ccm_seg7_vertex_07012158[] = {\n    {{{     0,    -62,    195}, 0, {   990,   1396}, {0x00, 0xd9, 0x78, 0xff}}},\n    {{{    92,   -107,    148}, 0, {  1448,   1980}, {0x37, 0xbd, 0x5c, 0xff}}},\n    {{{    92,      0,    183}, 0, {  2012,   1592}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{  -204,      0,      0}, 0, {  4056,   3032}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  -173,      0,    108}, 0, {  4056,   2312}, {0x96, 0x00, 0x44, 0xff}}},\n    {{{  -173,    102,     33}, 0, {  3710,   2820}, {0x96, 0x41, 0x14, 0xff}}},\n    {{{   -91,    108,    148}, 0, {  3492,   1980}, {0xc0, 0x40, 0x58, 0xff}}},\n    {{{   -91,      0,    183}, 0, {  4056,   1592}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{   -91,    174,     57}, 0, {  3348,   2668}, {0xc8, 0x6c, 0x23, 0xff}}},\n    {{{   -91,      0,    183}, 0, {   936,   -202}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{     0,    -62,    195}, 0, {   166,    270}, {0x00, 0xd9, 0x78, 0xff}}},\n    {{{     0,     63,    195}, 0, {  1104,    526}, {0x00, 0x27, 0x78, 0xff}}},\n    {{{    92,      0,    183}, 0, {   344,    980}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{     0,     63,    195}, 0, {  3034,   1396}, {0x00, 0x27, 0x78, 0xff}}},\n    {{{    92,    108,    148}, 0, {  2576,   1980}, {0x38, 0x43, 0x5c, 0xff}}},\n    {{{  -173,     63,    -86}, 0, {  3830,   3604}, {0x96, 0x28, 0xc9, 0xff}}},\n};\n\n// 0x07012258 - 0x07012358\nstatic const Vtx ccm_seg7_vertex_07012258[] = {\n    {{{  -173,    102,     33}, 0, {  3710,   2820}, {0x96, 0x41, 0x14, 0xff}}},\n    {{{   -91,    174,    -56}, 0, {  3348,   3396}, {0xc0, 0x68, 0xdf, 0xff}}},\n    {{{  -173,     63,    -86}, 0, {  3830,   3604}, {0x96, 0x28, 0xc9, 0xff}}},\n    {{{   -91,    174,     57}, 0, {  3348,   2668}, {0xc8, 0x6c, 0x23, 0xff}}},\n    {{{   -91,    108,   -147}, 0, {  3492,   4084}, {0xc8, 0x42, 0xa4, 0xff}}},\n    {{{     0,    166,    120}, 0, {  3034,   2214}, {0x00, 0x66, 0x4a, 0xff}}},\n    {{{     0,    205,      0}, 0, {  3034,   3032}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{    92,    108,    148}, 0, {  2576,   1980}, {0x38, 0x43, 0x5c, 0xff}}},\n    {{{    92,    174,     57}, 0, {  2720,   2668}, {0x40, 0x68, 0x21, 0xff}}},\n    {{{    92,    174,    -56}, 0, {  2720,   3396}, {0x38, 0x6c, 0xdd, 0xff}}},\n    {{{  -204,      0,      0}, 0, {     0,   3032}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  -173,     63,    -86}, 0, {  -256,   3604}, {0x96, 0x28, 0xc9, 0xff}}},\n    {{{  -173,    -62,    -86}, 0, {   194,   3604}, {0x96, 0xd8, 0xc9, 0xff}}},\n    {{{   -91,      0,   -182}, 0, {     0,   4472}, {0xc0, 0x00, 0x93, 0xff}}},\n    {{{   -91,   -107,   -147}, 0, {   532,   4084}, {0xc8, 0xbd, 0xa4, 0xff}}},\n    {{{   -91,      0,   -182}, 0, {  4056,   4472}, {0xc0, 0x00, 0x93, 0xff}}},\n};\n\n// 0x07012358 - 0x07012458\nstatic const Vtx ccm_seg7_vertex_07012358[] = {\n    {{{   -91,    108,   -147}, 0, {  3492,   4084}, {0xc8, 0x42, 0xa4, 0xff}}},\n    {{{     0,    166,   -119}, 0, {  3034,   3850}, {0x00, 0x66, 0xb6, 0xff}}},\n    {{{     0,     63,   -194}, 0, {  3034,   4668}, {0x00, 0x27, 0x88, 0xff}}},\n    {{{    92,    108,   -147}, 0, {  2576,   4084}, {0x3f, 0x40, 0xa8, 0xff}}},\n    {{{    92,    174,    -56}, 0, {  2720,   3396}, {0x38, 0x6c, 0xdd, 0xff}}},\n    {{{    92,      0,   -182}, 0, {  2012,   4472}, {0x37, 0x00, 0x8e, 0xff}}},\n    {{{  -204,      0,      0}, 0, {     0,   3032}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  -173,    -62,    -86}, 0, {   194,   3604}, {0x96, 0xd8, 0xc9, 0xff}}},\n    {{{  -173,   -101,     33}, 0, {   314,   2820}, {0x96, 0xbf, 0x14, 0xff}}},\n    {{{   -91,   -173,    -56}, 0, {   676,   3396}, {0xc0, 0x98, 0xdf, 0xff}}},\n    {{{   -91,   -107,   -147}, 0, {   532,   4084}, {0xc8, 0xbd, 0xa4, 0xff}}},\n    {{{   -91,   -173,     57}, 0, {   676,   2668}, {0xc8, 0x94, 0x23, 0xff}}},\n    {{{     0,    -62,   -194}, 0, {   990,   4668}, {0x00, 0xd9, 0x88, 0xff}}},\n    {{{     0,   -165,   -119}, 0, {   990,   3850}, {0x00, 0x9a, 0xb6, 0xff}}},\n    {{{    92,   -107,   -147}, 0, {  1448,   4084}, {0x3f, 0xc0, 0xa8, 0xff}}},\n    {{{    92,   -173,    -56}, 0, {  1304,   3396}, {0x38, 0x94, 0xdd, 0xff}}},\n};\n\n// 0x07012458 - 0x07012558\nstatic const Vtx ccm_seg7_vertex_07012458[] = {\n    {{{  -204,      0,      0}, 0, {     0,   3032}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  -173,   -101,     33}, 0, {   314,   2820}, {0x96, 0xbf, 0x14, 0xff}}},\n    {{{  -173,      0,    108}, 0, {     0,   2312}, {0x96, 0x00, 0x44, 0xff}}},\n    {{{   -91,   -107,    148}, 0, {   532,   1980}, {0xc1, 0xc0, 0x58, 0xff}}},\n    {{{   -91,   -173,     57}, 0, {   676,   2668}, {0xc8, 0x94, 0x23, 0xff}}},\n    {{{   -91,      0,    183}, 0, {     0,   1592}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{     0,   -204,      0}, 0, {   990,   3032}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{     0,   -165,    120}, 0, {   990,   2214}, {0x00, 0x9a, 0x4a, 0xff}}},\n    {{{    92,   -173,     57}, 0, {  1304,   2668}, {0x40, 0x98, 0x21, 0xff}}},\n    {{{    92,   -173,    -56}, 0, {  1304,   3396}, {0x38, 0x94, 0xdd, 0xff}}},\n    {{{    92,   -107,    148}, 0, {  1448,   1980}, {0x37, 0xbd, 0x5c, 0xff}}},\n    {{{   205,      0,      0}, 0, {  2012,   3032}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{   174,      0,   -107}, 0, {  2012,   3752}, {0x6a, 0x00, 0xbc, 0xff}}},\n    {{{   174,    102,    -32}, 0, {  2358,   3244}, {0x6a, 0x41, 0xeb, 0xff}}},\n    {{{    92,    108,   -147}, 0, {  2576,   4084}, {0x3f, 0x40, 0xa8, 0xff}}},\n    {{{    92,      0,   -182}, 0, {  2012,   4472}, {0x37, 0x00, 0x8e, 0xff}}},\n};\n\n// 0x07012558 - 0x07012658\nstatic const Vtx ccm_seg7_vertex_07012558[] = {\n    {{{   174,    102,    -32}, 0, {  2358,   3244}, {0x6a, 0x41, 0xeb, 0xff}}},\n    {{{    92,    108,   -147}, 0, {  2576,   4084}, {0x3f, 0x40, 0xa8, 0xff}}},\n    {{{    92,    174,    -56}, 0, {  2720,   3396}, {0x38, 0x6c, 0xdd, 0xff}}},\n    {{{    92,      0,   -182}, 0, {  -264,    390}, {0x37, 0x00, 0x8e, 0xff}}},\n    {{{     0,    -62,   -194}, 0, {   802,   1062}, {0x00, 0xd9, 0x88, 0xff}}},\n    {{{     0,     63,   -194}, 0, {    -8,    -50}, {0x00, 0x27, 0x88, 0xff}}},\n    {{{   -91,      0,   -182}, 0, {  1038,    620}, {0xc0, 0x00, 0x93, 0xff}}},\n    {{{     0,    -62,   -194}, 0, {   990,   4668}, {0x00, 0xd9, 0x88, 0xff}}},\n    {{{   -91,   -107,   -147}, 0, {   532,   4084}, {0xc8, 0xbd, 0xa4, 0xff}}},\n    {{{   -91,      0,   -182}, 0, {     0,   4472}, {0xc0, 0x00, 0x93, 0xff}}},\n    {{{     0,     63,   -194}, 0, {  3034,   4668}, {0x00, 0x27, 0x88, 0xff}}},\n    {{{   -91,      0,   -182}, 0, {  4056,   4472}, {0xc0, 0x00, 0x93, 0xff}}},\n    {{{   -91,    108,   -147}, 0, {  3492,   4084}, {0xc8, 0x42, 0xa4, 0xff}}},\n    {{{   205,      0,      0}, 0, {  2012,   3032}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{   174,     63,     87}, 0, {  2238,   2460}, {0x6a, 0x28, 0x37, 0xff}}},\n    {{{    92,    174,     57}, 0, {  2720,   2668}, {0x40, 0x68, 0x21, 0xff}}},\n};\n\n// 0x07012658 - 0x07012758\nstatic const Vtx ccm_seg7_vertex_07012658[] = {\n    {{{   174,     63,     87}, 0, {  2238,   2460}, {0x6a, 0x28, 0x37, 0xff}}},\n    {{{    92,    174,     57}, 0, {  2720,   2668}, {0x40, 0x68, 0x21, 0xff}}},\n    {{{    92,    108,    148}, 0, {  2576,   1980}, {0x38, 0x43, 0x5c, 0xff}}},\n    {{{    92,    174,    -56}, 0, {  2720,   3396}, {0x38, 0x6c, 0xdd, 0xff}}},\n    {{{     0,    166,   -119}, 0, {  3034,   3850}, {0x00, 0x66, 0xb6, 0xff}}},\n    {{{     0,    205,      0}, 0, {  3034,   3032}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{   -91,    174,    -56}, 0, {  3348,   3396}, {0xc0, 0x68, 0xdf, 0xff}}},\n    {{{   -91,    108,   -147}, 0, {  3492,   4084}, {0xc8, 0x42, 0xa4, 0xff}}},\n    {{{   -91,    174,     57}, 0, {  3348,   2668}, {0xc8, 0x6c, 0x23, 0xff}}},\n    {{{   205,      0,      0}, 0, {  2012,   3032}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{   174,    -62,     87}, 0, {  1786,   2460}, {0x6a, 0xd8, 0x37, 0xff}}},\n    {{{    92,      0,    183}, 0, {  2012,   1592}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{    92,   -107,    148}, 0, {  1448,   1980}, {0x37, 0xbd, 0x5c, 0xff}}},\n    {{{     0,    166,    120}, 0, {  3034,   2214}, {0x00, 0x66, 0x4a, 0xff}}},\n    {{{     0,     63,    195}, 0, {  3034,   1396}, {0x00, 0x27, 0x78, 0xff}}},\n    {{{   -91,    108,    148}, 0, {  3492,   1980}, {0xc0, 0x40, 0x58, 0xff}}},\n};\n\n// 0x07012758 - 0x07012858\nstatic const Vtx ccm_seg7_vertex_07012758[] = {\n    {{{     0,     63,    195}, 0, {  3034,   1396}, {0x00, 0x27, 0x78, 0xff}}},\n    {{{   -91,    108,    148}, 0, {  3492,   1980}, {0xc0, 0x40, 0x58, 0xff}}},\n    {{{   -91,      0,    183}, 0, {  4056,   1592}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{   205,      0,      0}, 0, {  2012,   3032}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{   174,    -62,     87}, 0, {  1786,   2460}, {0x6a, 0xd8, 0x37, 0xff}}},\n    {{{   174,   -101,    -32}, 0, {  1666,   3244}, {0x6a, 0xbf, 0xec, 0xff}}},\n    {{{    92,   -107,    148}, 0, {  1448,   1980}, {0x37, 0xbd, 0x5c, 0xff}}},\n    {{{    92,   -173,     57}, 0, {  1304,   2668}, {0x40, 0x98, 0x21, 0xff}}},\n    {{{    92,   -173,    -56}, 0, {  1304,   3396}, {0x38, 0x94, 0xdd, 0xff}}},\n    {{{     0,    -62,    195}, 0, {   990,   1396}, {0x00, 0xd9, 0x78, 0xff}}},\n    {{{     0,   -165,    120}, 0, {   990,   2214}, {0x00, 0x9a, 0x4a, 0xff}}},\n    {{{   -91,   -107,    148}, 0, {   532,   1980}, {0xc1, 0xc0, 0x58, 0xff}}},\n    {{{   -91,      0,    183}, 0, {     0,   1592}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{   -91,   -173,     57}, 0, {   676,   2668}, {0xc8, 0x94, 0x23, 0xff}}},\n    {{{   174,      0,   -107}, 0, {  2012,   3752}, {0x6a, 0x00, 0xbc, 0xff}}},\n    {{{    92,   -107,   -147}, 0, {  1448,   4084}, {0x3f, 0xc0, 0xa8, 0xff}}},\n};\n\n// 0x07012858 - 0x070128E8\nstatic const Vtx ccm_seg7_vertex_07012858[] = {\n    {{{     0,   -165,   -119}, 0, {   990,   3850}, {0x00, 0x9a, 0xb6, 0xff}}},\n    {{{   -91,   -173,    -56}, 0, {   676,   3396}, {0xc0, 0x98, 0xdf, 0xff}}},\n    {{{   -91,   -107,   -147}, 0, {   532,   4084}, {0xc8, 0xbd, 0xa4, 0xff}}},\n    {{{   174,      0,   -107}, 0, {  2012,   3752}, {0x6a, 0x00, 0xbc, 0xff}}},\n    {{{    92,   -107,   -147}, 0, {  1448,   4084}, {0x3f, 0xc0, 0xa8, 0xff}}},\n    {{{    92,      0,   -182}, 0, {  2012,   4472}, {0x37, 0x00, 0x8e, 0xff}}},\n    {{{    92,   -173,    -56}, 0, {  1304,   3396}, {0x38, 0x94, 0xdd, 0xff}}},\n    {{{     0,   -204,      0}, 0, {   990,   3032}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{   -91,   -173,     57}, 0, {   676,   2668}, {0xc8, 0x94, 0x23, 0xff}}},\n};\n\n// 0x070128E8 - 0x07012BD8\nstatic const Gfx ccm_seg7_dl_070128E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ccm_seg7_texture_07011958),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ccm_seg7_lights_07011940.l, 1),\n    gsSPLight(&ccm_seg7_lights_07011940.a, 2),\n    gsSPVertex(ccm_seg7_vertex_07012158, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  4,  7,  6, 0x0),\n    gsSP2Triangles( 5,  6,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(10, 12, 11, 0x0, 13,  2, 14, 0x0),\n    gsSP1Triangle( 3,  5, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07012258, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  3,  5,  6, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  5,  8,  6, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(11, 13, 12, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle( 2,  4, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07012358, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  2,  3,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles( 7, 10,  9, 0x0,  8,  9, 11, 0x0),\n    gsSP2Triangles(10, 12, 13, 0x0, 12, 14, 13, 0x0),\n    gsSP2Triangles(12,  5, 14, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07012458, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  2,  3,  5, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  6,  8,  7, 0x0),\n    gsSP2Triangles( 6,  9,  8, 0x0,  7,  8, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 12, 14, 13, 0x0),\n    gsSP1Triangle(12, 15, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07012558, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13,  0, 14, 0x0),\n    gsSP2Triangles( 0, 15, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07012658, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  4,  7,  6, 0x0),\n    gsSP2Triangles( 5,  6,  8, 0x0,  9,  0, 10, 0x0),\n    gsSP2Triangles( 0, 11, 10, 0x0,  0,  2, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  2, 13, 14, 0x0),\n    gsSP2Triangles(13, 15, 14, 0x0, 13,  8, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07012758, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  6,  9, 10, 0x0),\n    gsSP2Triangles( 9, 11, 10, 0x0,  9, 12, 11, 0x0),\n    gsSP2Triangles(10, 11, 13, 0x0,  3,  5, 14, 0x0),\n    gsSP2Triangles( 5, 15, 14, 0x0,  5,  8, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07012858, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  0, 0x0,  7,  1,  0, 0x0),\n    gsSP1Triangle( 7,  8,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07012BD8 - 0x07012C38\nconst Gfx ccm_seg7_dl_07012BD8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_070128E8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ccm/snowman_head/1.inc.c",
    "content": "// 0x07012C38 - 0x07012C50\nstatic const Lights1 ccm_seg7_lights_07012C38 = gdSPDefLights1(\n    0xcc, 0xcc, 0xcc,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07012C50 - 0x07012D50\nstatic const Vtx ccm_seg7_vertex_07012C50[] = {\n    {{{     0,    -62,    195}, 0, {   990,   1396}, {0x00, 0xd9, 0x78, 0xff}}},\n    {{{    92,   -107,    148}, 0, {  1448,   1980}, {0x37, 0xbd, 0x5c, 0xff}}},\n    {{{    92,      0,    183}, 0, {  2012,   1592}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{  -204,      0,      0}, 0, {  4056,   3032}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  -173,      0,    108}, 0, {  4056,   2312}, {0x96, 0x00, 0x44, 0xff}}},\n    {{{  -173,    102,     33}, 0, {  3710,   2820}, {0x96, 0x41, 0x14, 0xff}}},\n    {{{   -91,    108,    148}, 0, {  3492,   1980}, {0xc0, 0x40, 0x58, 0xff}}},\n    {{{   -91,      0,    183}, 0, {  4056,   1592}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{   -91,    174,     57}, 0, {  3348,   2668}, {0xc8, 0x6c, 0x23, 0xff}}},\n    {{{   -91,      0,    183}, 0, {   936,   -202}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{     0,    -62,    195}, 0, {   166,    270}, {0x00, 0xd9, 0x78, 0xff}}},\n    {{{     0,     63,    195}, 0, {  1104,    526}, {0x00, 0x27, 0x78, 0xff}}},\n    {{{    92,      0,    183}, 0, {   344,    980}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{     0,     63,    195}, 0, {  3034,   1396}, {0x00, 0x27, 0x78, 0xff}}},\n    {{{    92,    108,    148}, 0, {  2576,   1980}, {0x38, 0x43, 0x5c, 0xff}}},\n    {{{  -173,     63,    -86}, 0, {  3830,   3604}, {0x96, 0x28, 0xc9, 0xff}}},\n};\n\n// 0x07012D50 - 0x07012E50\nstatic const Vtx ccm_seg7_vertex_07012D50[] = {\n    {{{  -173,    102,     33}, 0, {  3710,   2820}, {0x96, 0x41, 0x14, 0xff}}},\n    {{{   -91,    174,    -56}, 0, {  3348,   3396}, {0xc0, 0x68, 0xdf, 0xff}}},\n    {{{  -173,     63,    -86}, 0, {  3830,   3604}, {0x96, 0x28, 0xc9, 0xff}}},\n    {{{   -91,    174,     57}, 0, {  3348,   2668}, {0xc8, 0x6c, 0x23, 0xff}}},\n    {{{   -91,    108,   -147}, 0, {  3492,   4084}, {0xc8, 0x42, 0xa4, 0xff}}},\n    {{{     0,    166,    120}, 0, {  3034,   2214}, {0x00, 0x66, 0x4a, 0xff}}},\n    {{{     0,    205,      0}, 0, {  3034,   3032}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{    92,    108,    148}, 0, {  2576,   1980}, {0x38, 0x43, 0x5c, 0xff}}},\n    {{{    92,    174,     57}, 0, {  2720,   2668}, {0x40, 0x68, 0x21, 0xff}}},\n    {{{    92,    174,    -56}, 0, {  2720,   3396}, {0x38, 0x6c, 0xdd, 0xff}}},\n    {{{  -204,      0,      0}, 0, {     0,   3032}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  -173,     63,    -86}, 0, {  -256,   3604}, {0x96, 0x28, 0xc9, 0xff}}},\n    {{{  -173,    -62,    -86}, 0, {   194,   3604}, {0x96, 0xd8, 0xc9, 0xff}}},\n    {{{   -91,      0,   -182}, 0, {     0,   4472}, {0xc0, 0x00, 0x93, 0xff}}},\n    {{{   -91,   -107,   -147}, 0, {   532,   4084}, {0xc8, 0xbd, 0xa4, 0xff}}},\n    {{{   -91,      0,   -182}, 0, {  4056,   4472}, {0xc0, 0x00, 0x93, 0xff}}},\n};\n\n// 0x07012E50 - 0x07012F50\nstatic const Vtx ccm_seg7_vertex_07012E50[] = {\n    {{{   -91,    108,   -147}, 0, {  3492,   4084}, {0xc8, 0x42, 0xa4, 0xff}}},\n    {{{     0,    166,   -119}, 0, {  3034,   3850}, {0x00, 0x66, 0xb6, 0xff}}},\n    {{{     0,     63,   -194}, 0, {  3034,   4668}, {0x00, 0x27, 0x88, 0xff}}},\n    {{{    92,    108,   -147}, 0, {  2576,   4084}, {0x3f, 0x40, 0xa8, 0xff}}},\n    {{{    92,    174,    -56}, 0, {  2720,   3396}, {0x38, 0x6c, 0xdd, 0xff}}},\n    {{{    92,      0,   -182}, 0, {  2012,   4472}, {0x37, 0x00, 0x8e, 0xff}}},\n    {{{  -204,      0,      0}, 0, {     0,   3032}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  -173,    -62,    -86}, 0, {   194,   3604}, {0x96, 0xd8, 0xc9, 0xff}}},\n    {{{  -173,   -101,     33}, 0, {   314,   2820}, {0x96, 0xbf, 0x14, 0xff}}},\n    {{{   -91,   -173,    -56}, 0, {   676,   3396}, {0xc0, 0x98, 0xdf, 0xff}}},\n    {{{   -91,   -107,   -147}, 0, {   532,   4084}, {0xc8, 0xbd, 0xa4, 0xff}}},\n    {{{   -91,   -173,     57}, 0, {   676,   2668}, {0xc8, 0x94, 0x23, 0xff}}},\n    {{{     0,    -62,   -194}, 0, {   990,   4668}, {0x00, 0xd9, 0x88, 0xff}}},\n    {{{     0,   -165,   -119}, 0, {   990,   3850}, {0x00, 0x9a, 0xb6, 0xff}}},\n    {{{    92,   -107,   -147}, 0, {  1448,   4084}, {0x3f, 0xc0, 0xa8, 0xff}}},\n    {{{    92,   -173,    -56}, 0, {  1304,   3396}, {0x38, 0x94, 0xdd, 0xff}}},\n};\n\n// 0x07012F50 - 0x07013050\nstatic const Vtx ccm_seg7_vertex_07012F50[] = {\n    {{{  -204,      0,      0}, 0, {     0,   3032}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  -173,   -101,     33}, 0, {   314,   2820}, {0x96, 0xbf, 0x14, 0xff}}},\n    {{{  -173,      0,    108}, 0, {     0,   2312}, {0x96, 0x00, 0x44, 0xff}}},\n    {{{   -91,   -107,    148}, 0, {   532,   1980}, {0xc1, 0xc0, 0x58, 0xff}}},\n    {{{   -91,   -173,     57}, 0, {   676,   2668}, {0xc8, 0x94, 0x23, 0xff}}},\n    {{{   -91,      0,    183}, 0, {     0,   1592}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{     0,   -204,      0}, 0, {   990,   3032}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{     0,   -165,    120}, 0, {   990,   2214}, {0x00, 0x9a, 0x4a, 0xff}}},\n    {{{    92,   -173,     57}, 0, {  1304,   2668}, {0x40, 0x98, 0x21, 0xff}}},\n    {{{    92,   -173,    -56}, 0, {  1304,   3396}, {0x38, 0x94, 0xdd, 0xff}}},\n    {{{    92,   -107,    148}, 0, {  1448,   1980}, {0x37, 0xbd, 0x5c, 0xff}}},\n    {{{   205,      0,      0}, 0, {  2012,   3032}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{   174,      0,   -107}, 0, {  2012,   3752}, {0x6a, 0x00, 0xbc, 0xff}}},\n    {{{   174,    102,    -32}, 0, {  2358,   3244}, {0x6a, 0x41, 0xeb, 0xff}}},\n    {{{    92,    108,   -147}, 0, {  2576,   4084}, {0x3f, 0x40, 0xa8, 0xff}}},\n    {{{    92,      0,   -182}, 0, {  2012,   4472}, {0x37, 0x00, 0x8e, 0xff}}},\n};\n\n// 0x07013050 - 0x07013150\nstatic const Vtx ccm_seg7_vertex_07013050[] = {\n    {{{   174,    102,    -32}, 0, {  2358,   3244}, {0x6a, 0x41, 0xeb, 0xff}}},\n    {{{    92,    108,   -147}, 0, {  2576,   4084}, {0x3f, 0x40, 0xa8, 0xff}}},\n    {{{    92,    174,    -56}, 0, {  2720,   3396}, {0x38, 0x6c, 0xdd, 0xff}}},\n    {{{    92,      0,   -182}, 0, {  -264,    390}, {0x37, 0x00, 0x8e, 0xff}}},\n    {{{     0,    -62,   -194}, 0, {   802,   1062}, {0x00, 0xd9, 0x88, 0xff}}},\n    {{{     0,     63,   -194}, 0, {    -8,    -50}, {0x00, 0x27, 0x88, 0xff}}},\n    {{{   -91,      0,   -182}, 0, {  1038,    620}, {0xc0, 0x00, 0x93, 0xff}}},\n    {{{     0,    -62,   -194}, 0, {   990,   4668}, {0x00, 0xd9, 0x88, 0xff}}},\n    {{{   -91,   -107,   -147}, 0, {   532,   4084}, {0xc8, 0xbd, 0xa4, 0xff}}},\n    {{{   -91,      0,   -182}, 0, {     0,   4472}, {0xc0, 0x00, 0x93, 0xff}}},\n    {{{     0,     63,   -194}, 0, {  3034,   4668}, {0x00, 0x27, 0x88, 0xff}}},\n    {{{   -91,      0,   -182}, 0, {  4056,   4472}, {0xc0, 0x00, 0x93, 0xff}}},\n    {{{   -91,    108,   -147}, 0, {  3492,   4084}, {0xc8, 0x42, 0xa4, 0xff}}},\n    {{{   205,      0,      0}, 0, {  2012,   3032}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{   174,     63,     87}, 0, {  2238,   2460}, {0x6a, 0x28, 0x37, 0xff}}},\n    {{{    92,    174,     57}, 0, {  2720,   2668}, {0x40, 0x68, 0x21, 0xff}}},\n};\n\n// 0x07013150 - 0x07013250\nstatic const Vtx ccm_seg7_vertex_07013150[] = {\n    {{{   174,     63,     87}, 0, {  2238,   2460}, {0x6a, 0x28, 0x37, 0xff}}},\n    {{{    92,    174,     57}, 0, {  2720,   2668}, {0x40, 0x68, 0x21, 0xff}}},\n    {{{    92,    108,    148}, 0, {  2576,   1980}, {0x38, 0x43, 0x5c, 0xff}}},\n    {{{    92,    174,    -56}, 0, {  2720,   3396}, {0x38, 0x6c, 0xdd, 0xff}}},\n    {{{     0,    166,   -119}, 0, {  3034,   3850}, {0x00, 0x66, 0xb6, 0xff}}},\n    {{{     0,    205,      0}, 0, {  3034,   3032}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{   -91,    174,    -56}, 0, {  3348,   3396}, {0xc0, 0x68, 0xdf, 0xff}}},\n    {{{   -91,    108,   -147}, 0, {  3492,   4084}, {0xc8, 0x42, 0xa4, 0xff}}},\n    {{{   -91,    174,     57}, 0, {  3348,   2668}, {0xc8, 0x6c, 0x23, 0xff}}},\n    {{{   205,      0,      0}, 0, {  2012,   3032}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{   174,    -62,     87}, 0, {  1786,   2460}, {0x6a, 0xd8, 0x37, 0xff}}},\n    {{{    92,      0,    183}, 0, {  2012,   1592}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{    92,   -107,    148}, 0, {  1448,   1980}, {0x37, 0xbd, 0x5c, 0xff}}},\n    {{{     0,    166,    120}, 0, {  3034,   2214}, {0x00, 0x66, 0x4a, 0xff}}},\n    {{{     0,     63,    195}, 0, {  3034,   1396}, {0x00, 0x27, 0x78, 0xff}}},\n    {{{   -91,    108,    148}, 0, {  3492,   1980}, {0xc0, 0x40, 0x58, 0xff}}},\n};\n\n// 0x07013250 - 0x07013350\nstatic const Vtx ccm_seg7_vertex_07013250[] = {\n    {{{     0,     63,    195}, 0, {  3034,   1396}, {0x00, 0x27, 0x78, 0xff}}},\n    {{{   -91,    108,    148}, 0, {  3492,   1980}, {0xc0, 0x40, 0x58, 0xff}}},\n    {{{   -91,      0,    183}, 0, {  4056,   1592}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{   205,      0,      0}, 0, {  2012,   3032}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{   174,    -62,     87}, 0, {  1786,   2460}, {0x6a, 0xd8, 0x37, 0xff}}},\n    {{{   174,   -101,    -32}, 0, {  1666,   3244}, {0x6a, 0xbf, 0xec, 0xff}}},\n    {{{    92,   -107,    148}, 0, {  1448,   1980}, {0x37, 0xbd, 0x5c, 0xff}}},\n    {{{    92,   -173,     57}, 0, {  1304,   2668}, {0x40, 0x98, 0x21, 0xff}}},\n    {{{    92,   -173,    -56}, 0, {  1304,   3396}, {0x38, 0x94, 0xdd, 0xff}}},\n    {{{     0,    -62,    195}, 0, {   990,   1396}, {0x00, 0xd9, 0x78, 0xff}}},\n    {{{     0,   -165,    120}, 0, {   990,   2214}, {0x00, 0x9a, 0x4a, 0xff}}},\n    {{{   -91,   -107,    148}, 0, {   532,   1980}, {0xc1, 0xc0, 0x58, 0xff}}},\n    {{{   -91,      0,    183}, 0, {     0,   1592}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{   -91,   -173,     57}, 0, {   676,   2668}, {0xc8, 0x94, 0x23, 0xff}}},\n    {{{   174,      0,   -107}, 0, {  2012,   3752}, {0x6a, 0x00, 0xbc, 0xff}}},\n    {{{    92,   -107,   -147}, 0, {  1448,   4084}, {0x3f, 0xc0, 0xa8, 0xff}}},\n};\n\n// 0x07013350 - 0x070133E0\nstatic const Vtx ccm_seg7_vertex_07013350[] = {\n    {{{     0,   -165,   -119}, 0, {   990,   3850}, {0x00, 0x9a, 0xb6, 0xff}}},\n    {{{   -91,   -173,    -56}, 0, {   676,   3396}, {0xc0, 0x98, 0xdf, 0xff}}},\n    {{{   -91,   -107,   -147}, 0, {   532,   4084}, {0xc8, 0xbd, 0xa4, 0xff}}},\n    {{{   174,      0,   -107}, 0, {  2012,   3752}, {0x6a, 0x00, 0xbc, 0xff}}},\n    {{{    92,   -107,   -147}, 0, {  1448,   4084}, {0x3f, 0xc0, 0xa8, 0xff}}},\n    {{{    92,      0,   -182}, 0, {  2012,   4472}, {0x37, 0x00, 0x8e, 0xff}}},\n    {{{    92,   -173,    -56}, 0, {  1304,   3396}, {0x38, 0x94, 0xdd, 0xff}}},\n    {{{     0,   -204,      0}, 0, {   990,   3032}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{   -91,   -173,     57}, 0, {   676,   2668}, {0xc8, 0x94, 0x23, 0xff}}},\n};\n\n// 0x070133E0 - 0x070136D0\nstatic const Gfx ccm_seg7_dl_070133E0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ccm_seg7_texture_07011958),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ccm_seg7_lights_07012C38.l, 1),\n    gsSPLight(&ccm_seg7_lights_07012C38.a, 2),\n    gsSPVertex(ccm_seg7_vertex_07012C50, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  4,  7,  6, 0x0),\n    gsSP2Triangles( 5,  6,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(10, 12, 11, 0x0, 13,  2, 14, 0x0),\n    gsSP1Triangle( 3,  5, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07012D50, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  3,  5,  6, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  5,  8,  6, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(11, 13, 12, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle( 2,  4, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07012E50, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  2,  3,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles( 7, 10,  9, 0x0,  8,  9, 11, 0x0),\n    gsSP2Triangles(10, 12, 13, 0x0, 12, 14, 13, 0x0),\n    gsSP2Triangles(12,  5, 14, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07012F50, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  2,  3,  5, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  6,  8,  7, 0x0),\n    gsSP2Triangles( 6,  9,  8, 0x0,  7,  8, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 12, 14, 13, 0x0),\n    gsSP1Triangle(12, 15, 14, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07013050, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13,  0, 14, 0x0),\n    gsSP2Triangles( 0, 15, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07013150, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  4,  7,  6, 0x0),\n    gsSP2Triangles( 5,  6,  8, 0x0,  9,  0, 10, 0x0),\n    gsSP2Triangles( 0, 11, 10, 0x0,  0,  2, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  2, 13, 14, 0x0),\n    gsSP2Triangles(13, 15, 14, 0x0, 13,  8, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07013250, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  6,  9, 10, 0x0),\n    gsSP2Triangles( 9, 11, 10, 0x0,  9, 12, 11, 0x0),\n    gsSP2Triangles(10, 11, 13, 0x0,  3,  5, 14, 0x0),\n    gsSP2Triangles( 5, 15, 14, 0x0,  5,  8, 15, 0x0),\n    gsSPVertex(ccm_seg7_vertex_07013350, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  0, 0x0,  7,  1,  0, 0x0),\n    gsSP1Triangle( 7,  8,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070136D0 - 0x07013730\nconst Gfx ccm_seg7_dl_070136D0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_070133E0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ccm/snowman_head/2.inc.c",
    "content": "// 0x07013730 - 0x070137B0\nstatic const Vtx ccm_seg7_vertex_07013730[] = {\n    {{{   120,     40,    177}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    41,     40,    200}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   120,    -41,    176}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    41,    -41,    198}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -119,    -41,    176}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -40,    -41,    198}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -40,     40,    200}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -119,     40,    177}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070137B0 - 0x070137F0\nstatic const Vtx ccm_seg7_vertex_070137B0[] = {\n    {{{    51,    -68,    195}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -50,    -68,    195}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -50,   -118,    159}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    51,   -118,    159}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070137F0 - 0x07013838\nstatic const Gfx ccm_seg7_dl_070137F0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ccm_seg7_texture_07002900),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ccm_seg7_vertex_07013730, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07013838 - 0x07013870\nstatic const Gfx ccm_seg7_dl_07013838[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ccm_seg7_texture_07002100),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ccm_seg7_vertex_070137B0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07013870 - 0x070138E8\nconst Gfx ccm_seg7_dl_07013870[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ccm_seg7_dl_070137F0),\n    gsSPDisplayList(ccm_seg7_dl_07013838),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ccm/snowman_head/geo.inc.c",
    "content": "// 0x0E00040C\nconst GeoLayout ccm_geo_00040C[] = {\n    GEO_CULLING_RADIUS(300),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, ccm_seg7_dl_070136D0),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, ccm_seg7_dl_07013870),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ccm/texture.inc.c",
    "content": "// 0x07000000 - 0x07000800\nALIGNED8 static const Texture ccm_seg7_texture_07000000[] = {\n#include \"levels/ccm/0.rgba16.inc.c\"\n};\n\n// 0x07000800 - 0x07000900\nALIGNED8 static const Texture ccm_seg7_texture_07000800[] = {\n#include \"levels/ccm/1.rgba16.inc.c\"\n};\n\n// 0x07000900 - 0x07001100\nALIGNED8 static const Texture ccm_seg7_texture_07000900[] = {\n#include \"levels/ccm/2.rgba16.inc.c\"\n};\n\n// 0x07001100 - 0x07001900\nALIGNED8 static const Texture ccm_seg7_texture_07001100[] = {\n#include \"levels/ccm/3.rgba16.inc.c\"\n};\n\n// 0x07001900 - 0x07002100\nALIGNED8 static const Texture ccm_seg7_texture_07001900[] = {\n#include \"levels/ccm/4.rgba16.inc.c\"\n};\n\n// 0x07002100 - 0x07002900\nALIGNED8 static const Texture ccm_seg7_texture_07002100[] = {\n#include \"levels/ccm/5.rgba16.inc.c\"\n};\n\n// 0x07002900 - 0x07003100\nALIGNED8 static const Texture ccm_seg7_texture_07002900[] = {\n#include \"levels/ccm/6.rgba16.inc.c\"\n};\n\n// 0x07003100 - 0x07003900\nALIGNED8 static const Texture ccm_seg7_texture_07003100[] = {\n#include \"levels/ccm/7.rgba16.inc.c\"\n};\n\n// 0x07003900 - 0x07003B00\nALIGNED8 static const Texture ccm_seg7_texture_07003900[] = {\n#include \"levels/ccm/8.ia16.inc.c\"\n};\n\n// 0x07003B00 - 0x07004300\nALIGNED8 static const Texture ccm_seg7_texture_07003B00[] = {\n#include \"levels/ccm/9.ia16.inc.c\"\n};\n\n// 0x07004300 - 0x07004B00\nALIGNED8 static const Texture ccm_seg7_texture_07004300[] = {\n#include \"levels/ccm/10.rgba16.inc.c\"\n};\n\n// 0x07004B00 - 0x07005300\nALIGNED8 static const Texture ccm_seg7_texture_07004B00[] = {\n#include \"levels/ccm/11.rgba16.inc.c\"\n};\n"
  },
  {
    "path": "levels/cotmc/areas/1/1/model.inc.c",
    "content": "// 0x07003000 - 0x07003018\nstatic const Lights1 cotmc_seg7_lights_07003000 = gdSPDefLights1(\n    0x4b, 0x78, 0x70,\n    0x96, 0xf0, 0xe1, 0x28, 0x28, 0x28\n);\n\n// 0x07003018 - 0x07003030\nstatic const Lights1 cotmc_seg7_lights_07003018 = gdSPDefLights1(\n    0x44, 0x44, 0x44,\n    0x88, 0x88, 0x88, 0x28, 0x28, 0x28\n);\n\n// 0x07003030 - 0x07003048\nstatic const Lights1 cotmc_seg7_lights_07003030 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07003048 - 0x07003060\nstatic const Lights1 cotmc_seg7_lights_07003048 = gdSPDefLights1(\n    0x00, 0x3c, 0x3c,\n    0x00, 0x78, 0x78, 0x28, 0x28, 0x28\n);\n\n// 0x07003060 - 0x07003078\nstatic const Lights1 cotmc_seg7_lights_07003060 = gdSPDefLights1(\n    0x3b, 0x3b, 0x3b,\n    0x77, 0x77, 0x77, 0x28, 0x28, 0x28\n);\n\n// 0x07003078 - 0x07003090\nstatic const Lights1 cotmc_seg7_lights_07003078 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0x99, 0x99, 0x99, 0x28, 0x28, 0x28\n);\n\n// 0x07003090 - 0x070030A8\nstatic const Lights1 cotmc_seg7_lights_07003090 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x070030A8 - 0x070031A8\nstatic const Vtx cotmc_seg7_vertex_070030A8[] = {\n    {{{  -563,   -153,   -849}, 0, {  1270,   2676}, {0x42, 0x6b, 0xf7, 0xff}}},\n    {{{  -122,   -153,  -1203}, 0, {  1378,   1682}, {0xce, 0x74, 0x04, 0xff}}},\n    {{{  -412,   -203,  -4740}, 0, { -3394,  -2364}, {0x0c, 0x7e, 0x02, 0xff}}},\n    {{{   -27,   -153,   1317}, 0, {  4642,   4710}, {0x17, 0x79, 0x1b, 0xff}}},\n    {{{   564,   -153,   3072}, 0, {  7570,   6160}, {0xc7, 0x71, 0xfa, 0xff}}},\n    {{{   333,   -153,    593}, 0, {  4190,   3356}, {0x1b, 0x7b, 0x06, 0xff}}},\n    {{{   564,   -153,   -217}, 0, {  3466,   2056}, {0xb4, 0x62, 0x19, 0xff}}},\n    {{{   308,   -153,   -254}, 0, {  3100,   2330}, {0xe8, 0x72, 0x30, 0xff}}},\n    {{{    96,   -153,   -567}, 0, {  2446,   2204}, {0xd5, 0x75, 0x16, 0xff}}},\n    {{{     9,   -153,   -651}, 0, {  2232,   2208}, {0x18, 0x7b, 0xee, 0xff}}},\n    {{{  -563,   -153,   3072}, 0, {  6162,   7568}, {0x4c, 0x64, 0xf5, 0xff}}},\n    {{{   564,    -80,   3379}, 0, {  7954,   6544}, {0xae, 0x52, 0x31, 0xff}}},\n    {{{    19,   -153,  -2029}, 0, {   524,    478}, {0xdb, 0x77, 0xee, 0xff}}},\n    {{{  -589,   -358,  -5918}, 0, { -5084,  -3614}, {0xff, 0x7e, 0xf9, 0xff}}},\n    {{{  -396,   -380,  -6143}, 0, { -5124,  -4136}, {0x99, 0x46, 0xeb, 0xff}}},\n    {{{  -280,   -376,  -6424}, 0, { -5330,  -4630}, {0xd1, 0x5d, 0xb9, 0xff}}},\n};\n\n// 0x070031A8 - 0x070032A8\nstatic const Vtx cotmc_seg7_vertex_070031A8[] = {\n    {{{    19,   -153,  -2029}, 0, {   524,    478}, {0xdb, 0x77, 0xee, 0xff}}},\n    {{{   564,   -153,  -2596}, 0, {   498,   -910}, {0xb3, 0x62, 0xeb, 0xff}}},\n    {{{    -2,   -225,  -4715}, 0, { -2850,  -2846}, {0x00, 0x7e, 0xfa, 0xff}}},\n    {{{  -412,   -203,  -4740}, 0, { -3394,  -2364}, {0x0c, 0x7e, 0x02, 0xff}}},\n    {{{   108,   -255,  -5053}, 0, { -3134,  -3406}, {0xff, 0x7e, 0xfb, 0xff}}},\n    {{{   473,   -203,  -4740}, 0, { -2288,  -3470}, {0xe2, 0x7b, 0x04, 0xff}}},\n    {{{  -563,   -153,   -849}, 0, {  1270,   2676}, {0x42, 0x6b, 0xf7, 0xff}}},\n    {{{  -563,   -153,  -4781}, 0, { -3634,  -2228}, {0x3a, 0x6c, 0xe2, 0xff}}},\n    {{{   564,   -153,  -4781}, 0, { -2226,  -3636}, {0xbc, 0x66, 0xe4, 0xff}}},\n    {{{  1362,   -153,  -5579}, 0, { -2226,  -5626}, {0x95, 0x32, 0xd4, 0xff}}},\n    {{{  1090,   -255,  -5692}, 0, { -2706,  -5428}, {0xdf, 0x79, 0xf0, 0xff}}},\n    {{{   451,   -255,  -5053}, 0, { -2706,  -3834}, {0xf9, 0x7d, 0xeb, 0xff}}},\n    {{{  -450,   -255,  -5053}, 0, { -3832,  -2708}, {0x05, 0x7c, 0xea, 0xff}}},\n    {{{  -589,   -358,  -5918}, 0, { -5084,  -3614}, {0xff, 0x7e, 0xf9, 0xff}}},\n    {{{  -280,   -376,  -6424}, 0, { -5330,  -4630}, {0xd1, 0x5d, 0xb9, 0xff}}},\n    {{{  -249,   -386,  -6583}, 0, { -5490,  -4868}, {0xfd, 0x7e, 0xf4, 0xff}}},\n};\n\n// 0x070032A8 - 0x070033A8\nstatic const Vtx cotmc_seg7_vertex_070032A8[] = {\n    {{{  -589,   -358,  -5918}, 0, { -5084,  -3614}, {0xff, 0x7e, 0xf9, 0xff}}},\n    {{{  -280,   -260,  -5862}, 0, { -4628,  -3930}, {0xae, 0x53, 0x30, 0xff}}},\n    {{{  -396,   -380,  -6143}, 0, { -5124,  -4136}, {0x99, 0x46, 0xeb, 0xff}}},\n    {{{  -249,   -386,  -6583}, 0, { -5490,  -4868}, {0xfd, 0x7e, 0xf4, 0xff}}},\n    {{{  -280,   -376,  -6424}, 0, { -5330,  -4630}, {0xd1, 0x5d, 0xb9, 0xff}}},\n    {{{     0,   -382,  -6540}, 0, { -5124,  -5126}, {0x08, 0x57, 0xa4, 0xff}}},\n    {{{   646,   -379,  -6747}, 0, { -4576,  -6190}, {0xfa, 0x7e, 0x00, 0xff}}},\n    {{{   158,   -423,  -6879}, 0, { -5350,  -5746}, {0xf5, 0x7c, 0xeb, 0xff}}},\n    {{{   -64,   -434,  -6903}, 0, { -5658,  -5498}, {0x03, 0x7b, 0xe5, 0xff}}},\n    {{{  -541,   -409,  -6769}, 0, { -6086,  -4736}, {0x1c, 0x7b, 0x04, 0xff}}},\n    {{{   451,   -255,  -5053}, 0, { -2706,  -3834}, {0xf9, 0x7d, 0xeb, 0xff}}},\n    {{{   201,   -256,  -5113}, 0, { -3094,  -3596}, {0xcc, 0x61, 0x3d, 0xff}}},\n    {{{   108,   -255,  -5053}, 0, { -3134,  -3406}, {0xff, 0x7e, 0xfb, 0xff}}},\n    {{{   363,   -311,  -5488}, 0, { -3360,  -4266}, {0x3a, 0x59, 0xbd, 0xff}}},\n    {{{   281,   -343,  -5862}, 0, { -3928,  -4632}, {0x3d, 0x5b, 0x3e, 0xff}}},\n    {{{     0,   -267,  -5746}, 0, { -4134,  -4136}, {0xfd, 0x66, 0x4b, 0xff}}},\n};\n\n// 0x070033A8 - 0x070034A8\nstatic const Vtx cotmc_seg7_vertex_070033A8[] = {\n    {{{  -243,   -273,  -5716}, 0, { -4400,  -3794}, {0xf8, 0x7e, 0x01, 0xff}}},\n    {{{  -280,   -260,  -5862}, 0, { -4628,  -3930}, {0xae, 0x53, 0x30, 0xff}}},\n    {{{  -589,   -358,  -5918}, 0, { -5084,  -3614}, {0xff, 0x7e, 0xf9, 0xff}}},\n    {{{   108,   -255,  -5053}, 0, { -3134,  -3406}, {0xff, 0x7e, 0xfb, 0xff}}},\n    {{{   201,   -256,  -5113}, 0, { -3094,  -3596}, {0xcc, 0x61, 0x3d, 0xff}}},\n    {{{    92,   -257,  -5293}, 0, { -3454,  -3684}, {0xae, 0x5f, 0xf1, 0xff}}},\n    {{{   451,   -255,  -5053}, 0, { -2706,  -3834}, {0xf9, 0x7d, 0xeb, 0xff}}},\n    {{{   419,   -263,  -5129}, 0, { -2842,  -3888}, {0x2b, 0x4f, 0x58, 0xff}}},\n    {{{   177,   -297,  -5476}, 0, { -3576,  -4020}, {0xe6, 0x60, 0xb3, 0xff}}},\n    {{{     0,   -267,  -5746}, 0, { -4134,  -4136}, {0xfd, 0x66, 0x4b, 0xff}}},\n    {{{  -450,   -255,  -5053}, 0, { -3832,  -2708}, {0x05, 0x7c, 0xea, 0xff}}},\n    {{{   363,   -311,  -5488}, 0, { -3360,  -4266}, {0x3a, 0x59, 0xbd, 0xff}}},\n    {{{     0,   -382,  -6540}, 0, { -5124,  -5126}, {0x08, 0x57, 0xa4, 0xff}}},\n    {{{   281,   -324,  -6424}, 0, { -4630,  -5332}, {0x51, 0x45, 0xbc, 0xff}}},\n    {{{   646,   -379,  -6747}, 0, { -4576,  -6190}, {0xfa, 0x7e, 0x00, 0xff}}},\n    {{{   397,   -344,  -6143}, 0, { -4134,  -5126}, {0x5a, 0x57, 0x0b, 0xff}}},\n};\n\n// 0x070034A8 - 0x07003598\nstatic const Vtx cotmc_seg7_vertex_070034A8[] = {\n    {{{   646,   -379,  -6747}, 0, { -4576,  -6190}, {0xfa, 0x7e, 0x00, 0xff}}},\n    {{{   397,   -344,  -6143}, 0, { -4134,  -5126}, {0x5a, 0x57, 0x0b, 0xff}}},\n    {{{   549,   -356,  -5900}, 0, { -3642,  -5012}, {0xff, 0x7e, 0xf7, 0xff}}},\n    {{{   868,   -367,  -6219}, 0, { -3642,  -5808}, {0xec, 0x7d, 0xfb, 0xff}}},\n    {{{  1090,   -308,  -6651}, 0, { -3904,  -6624}, {0xd6, 0x77, 0x0b, 0xff}}},\n    {{{   564,   -255,  -7505}, 0, { -5624,  -7034}, {0xc4, 0x5a, 0x41, 0xff}}},\n    {{{   404,   -385,  -6939}, 0, { -5118,  -6130}, {0xd2, 0x76, 0xfc, 0xff}}},\n    {{{   158,   -423,  -6879}, 0, { -5350,  -5746}, {0xf5, 0x7c, 0xeb, 0xff}}},\n    {{{   281,   -343,  -5862}, 0, { -3928,  -4632}, {0x3d, 0x5b, 0x3e, 0xff}}},\n    {{{   363,   -312,  -5488}, 0, { -3360,  -4266}, {0xfc, 0x7d, 0xf1, 0xff}}},\n    {{{   493,   -282,  -5285}, 0, { -2944,  -4176}, {0x41, 0x6c, 0xfb, 0xff}}},\n    {{{   363,   -311,  -5488}, 0, { -3360,  -4266}, {0x3a, 0x59, 0xbd, 0xff}}},\n    {{{  1090,   -255,  -5692}, 0, { -2706,  -5428}, {0xdf, 0x79, 0xf0, 0xff}}},\n    {{{   451,   -255,  -5053}, 0, { -2706,  -3834}, {0xf9, 0x7d, 0xeb, 0xff}}},\n    {{{   419,   -263,  -5129}, 0, { -2842,  -3888}, {0x2b, 0x4f, 0x58, 0xff}}},\n};\n\n// 0x07003598 - 0x07003688\nstatic const Vtx cotmc_seg7_vertex_07003598[] = {\n    {{{  1362,   -153,  -6707}, 0, { -3634,  -7034}, {0x9e, 0x3b, 0x35, 0xff}}},\n    {{{  1090,   -255,  -5692}, 0, { -2706,  -5428}, {0xdf, 0x79, 0xf0, 0xff}}},\n    {{{  1362,   -153,  -5579}, 0, { -2226,  -5626}, {0x95, 0x32, 0xd4, 0xff}}},\n    {{{  1090,   -308,  -6651}, 0, { -3904,  -6624}, {0xd6, 0x77, 0x0b, 0xff}}},\n    {{{  -563,   -153,  -4781}, 0, { -3634,  -2228}, {0x3a, 0x6c, 0xe2, 0xff}}},\n    {{{  -450,   -255,  -5053}, 0, { -3832,  -2708}, {0x05, 0x7c, 0xea, 0xff}}},\n    {{{  -911,   -255,  -5514}, 0, { -4982,  -2708}, {0x1c, 0x7b, 0xf6, 0xff}}},\n    {{{ -1225,   -204,  -5635}, 0, { -5526,  -2468}, {0x0d, 0x7d, 0xf8, 0xff}}},\n    {{{ -1361,   -153,  -5579}, 0, { -5624,  -2228}, {0x5b, 0x4c, 0xd3, 0xff}}},\n    {{{   -27,   -153,   1317}, 0, {  4642,   4710}, {0x17, 0x79, 0x1b, 0xff}}},\n    {{{  -563,   -153,   1617}, 0, {  4346,   5752}, {0x46, 0x66, 0x19, 0xff}}},\n    {{{  -563,   -153,   3072}, 0, {  6162,   7568}, {0x4c, 0x64, 0xf5, 0xff}}},\n    {{{  -329,   -490,  -7479}, 0, { -6708,  -5886}, {0x13, 0x3d, 0x6d, 0xff}}},\n    {{{   -93,   -468,  -7454}, 0, { -6382,  -6150}, {0xfc, 0x3e, 0x6e, 0xff}}},\n    {{{  -563,   -153,  -7505}, 0, { -7032,  -5626}, {0x2a, 0x0a, 0x77, 0xff}}},\n};\n\n// 0x07003688 - 0x07003768\nstatic const Vtx cotmc_seg7_vertex_07003688[] = {\n    {{{   564,    -80,   3379}, 0, {  7954,   6544}, {0xae, 0x52, 0x31, 0xff}}},\n    {{{  -563,   -153,   3072}, 0, {  6162,   7568}, {0x4c, 0x64, 0xf5, 0xff}}},\n    {{{  -563,    -80,   3379}, 0, {  6546,   7952}, {0x6b, 0x35, 0x28, 0xff}}},\n    {{{  -338,   -562,  -7372}, 0, { -6584,  -5742}, {0x2d, 0x74, 0x14, 0xff}}},\n    {{{  -555,   -285,  -7479}, 0, { -6990,  -5604}, {0x42, 0x5b, 0x3a, 0xff}}},\n    {{{  -552,   -282,  -7137}, 0, { -6560,  -5182}, {0x48, 0x67, 0x0c, 0xff}}},\n    {{{  -439,   -422,  -7070}, 0, { -6336,  -5238}, {0x3c, 0x6f, 0xf9, 0xff}}},\n    {{{  -329,   -490,  -7479}, 0, { -6708,  -5886}, {0x13, 0x3d, 0x6d, 0xff}}},\n    {{{   -93,   -468,  -7454}, 0, { -6382,  -6150}, {0xfc, 0x3e, 0x6e, 0xff}}},\n    {{{   -65,   -552,  -7334}, 0, { -6198,  -6034}, {0x01, 0x7b, 0x1f, 0xff}}},\n    {{{   -64,   -434,  -6903}, 0, { -5658,  -5498}, {0x03, 0x7b, 0xe5, 0xff}}},\n    {{{ -1089,   -255,  -6651}, 0, { -6622,  -3906}, {0x21, 0x7a, 0x09, 0xff}}},\n    {{{ -1361,   -153,  -6707}, 0, { -7032,  -3636}, {0x64, 0x44, 0x23, 0xff}}},\n    {{{  -563,   -153,  -7505}, 0, { -7032,  -5626}, {0x2a, 0x0a, 0x77, 0xff}}},\n};\n\n// 0x07003768 - 0x07003868\nstatic const Vtx cotmc_seg7_vertex_07003768[] = {\n    {{{  -249,   -386,  -6583}, 0, { -5490,  -4868}, {0xfd, 0x7e, 0xf4, 0xff}}},\n    {{{  -541,   -409,  -6769}, 0, { -6086,  -4736}, {0x1c, 0x7b, 0x04, 0xff}}},\n    {{{  -589,   -358,  -5918}, 0, { -5084,  -3614}, {0xff, 0x7e, 0xf9, 0xff}}},\n    {{{  -439,   -422,  -7070}, 0, { -6336,  -5238}, {0x3c, 0x6f, 0xf9, 0xff}}},\n    {{{  -552,   -282,  -7137}, 0, { -6560,  -5182}, {0x48, 0x67, 0x0c, 0xff}}},\n    {{{ -1089,   -255,  -6651}, 0, { -6622,  -3906}, {0x21, 0x7a, 0x09, 0xff}}},\n    {{{   -64,   -434,  -6903}, 0, { -5658,  -5498}, {0x03, 0x7b, 0xe5, 0xff}}},\n    {{{  -960,   -291,  -5945}, 0, { -5580,  -3184}, {0x26, 0x78, 0xf7, 0xff}}},\n    {{{  -911,   -255,  -5514}, 0, { -4982,  -2708}, {0x1c, 0x7b, 0xf6, 0xff}}},\n    {{{  -450,   -255,  -5053}, 0, { -3832,  -2708}, {0x05, 0x7c, 0xea, 0xff}}},\n    {{{   564,   -255,  -7505}, 0, { -5624,  -7034}, {0xc4, 0x5a, 0x41, 0xff}}},\n    {{{  1090,   -308,  -6651}, 0, { -3904,  -6624}, {0xd6, 0x77, 0x0b, 0xff}}},\n    {{{  1362,   -153,  -6707}, 0, { -3634,  -7034}, {0x9e, 0x3b, 0x35, 0xff}}},\n    {{{   564,   -153,  -7505}, 0, { -5624,  -7034}, {0xeb, 0x04, 0x7d, 0xff}}},\n    {{{ -1089,   -255,  -6068}, 0, { -5896,  -3178}, {0x1f, 0x7a, 0xf8, 0xff}}},\n    {{{ -1361,   -153,  -6707}, 0, { -7032,  -3636}, {0x64, 0x44, 0x23, 0xff}}},\n};\n\n// 0x07003868 - 0x07003968\nstatic const Vtx cotmc_seg7_vertex_07003868[] = {\n    {{{   564,   -255,  -7505}, 0, { -5624,  -7034}, {0xc4, 0x5a, 0x41, 0xff}}},\n    {{{   347,   -450,  -7479}, 0, { -5862,  -6732}, {0xea, 0x31, 0x72, 0xff}}},\n    {{{   339,   -562,  -7372}, 0, { -5740,  -6586}, {0xdb, 0x78, 0x11, 0xff}}},\n    {{{   564,   -153,  -7505}, 0, { -5624,  -7034}, {0xeb, 0x04, 0x7d, 0xff}}},\n    {{{   404,   -385,  -6939}, 0, { -5118,  -6130}, {0xd2, 0x76, 0xfc, 0xff}}},\n    {{{   236,   -490,  -7479}, 0, { -6002,  -6592}, {0xff, 0x46, 0x69, 0xff}}},\n    {{{   -93,   -468,  -7454}, 0, { -6382,  -6150}, {0xfc, 0x3e, 0x6e, 0xff}}},\n    {{{  -563,   -153,  -7505}, 0, { -7032,  -5626}, {0x2a, 0x0a, 0x77, 0xff}}},\n    {{{   -65,   -552,  -7334}, 0, { -6198,  -6034}, {0x01, 0x7b, 0x1f, 0xff}}},\n    {{{ -1361,   -153,  -5579}, 0, { -5624,  -2228}, {0x5b, 0x4c, 0xd3, 0xff}}},\n    {{{ -1089,   -255,  -6068}, 0, { -5896,  -3178}, {0x1f, 0x7a, 0xf8, 0xff}}},\n    {{{ -1361,   -153,  -6707}, 0, { -7032,  -3636}, {0x64, 0x44, 0x23, 0xff}}},\n    {{{ -1089,   -255,  -6651}, 0, { -6622,  -3906}, {0x21, 0x7a, 0x09, 0xff}}},\n    {{{  -960,   -291,  -5945}, 0, { -5580,  -3184}, {0x26, 0x78, 0xf7, 0xff}}},\n    {{{ -1225,   -204,  -5635}, 0, { -5526,  -2468}, {0x0d, 0x7d, 0xf8, 0xff}}},\n    {{{ -1101,   -175,  -5704}, 0, { -5456,  -2708}, {0x14, 0x7d, 0xfc, 0xff}}},\n};\n\n// 0x07003968 - 0x07003A48\nstatic const Vtx cotmc_seg7_vertex_07003968[] = {\n    {{{  -911,   -255,  -5514}, 0, { -4982,  -2708}, {0x1c, 0x7b, 0xf6, 0xff}}},\n    {{{ -1101,   -175,  -5704}, 0, { -5456,  -2708}, {0x14, 0x7d, 0xfc, 0xff}}},\n    {{{ -1225,   -204,  -5635}, 0, { -5526,  -2468}, {0x0d, 0x7d, 0xf8, 0xff}}},\n    {{{  -960,   -291,  -5945}, 0, { -5580,  -3184}, {0x26, 0x78, 0xf7, 0xff}}},\n    {{{ -1089,   -255,  -6068}, 0, { -5896,  -3178}, {0x1f, 0x7a, 0xf8, 0xff}}},\n    {{{   339,   -562,  -7372}, 0, { -5740,  -6586}, {0xdb, 0x78, 0x11, 0xff}}},\n    {{{   158,   -423,  -6879}, 0, { -5350,  -5746}, {0xf5, 0x7c, 0xeb, 0xff}}},\n    {{{   404,   -385,  -6939}, 0, { -5118,  -6130}, {0xd2, 0x76, 0xfc, 0xff}}},\n    {{{   -64,   -434,  -6903}, 0, { -5658,  -5498}, {0x03, 0x7b, 0xe5, 0xff}}},\n    {{{   -65,   -552,  -7334}, 0, { -6198,  -6034}, {0x01, 0x7b, 0x1f, 0xff}}},\n    {{{  -666,   -460,   3584}, 0, {  6674,   8334}, {0x50, 0x1c, 0x5d, 0xff}}},\n    {{{   564,    -80,   3379}, 0, {  7954,   6544}, {0xae, 0x52, 0x31, 0xff}}},\n    {{{  -563,    -80,   3379}, 0, {  6546,   7952}, {0x6b, 0x35, 0x28, 0xff}}},\n    {{{   667,   -460,   3584}, 0, {  8336,   6672}, {0xa0, 0x11, 0x50, 0xff}}},\n};\n\n// 0x07003A48 - 0x07003B08\nstatic const Vtx cotmc_seg7_vertex_07003A48[] = {\n    {{{   402,    256,  -5592}, 0, {   408,    628}, {0x1c, 0x4b, 0x9e, 0xff}}},\n    {{{   402,    187,  -5592}, 0, {   408,    628}, {0x44, 0xc1, 0xaa, 0xff}}},\n    {{{   123,    187,  -5574}, 0, {   148,    924}, {0xcf, 0xb7, 0xa6, 0xff}}},\n    {{{   599,    256,  -5286}, 0, {   910,    736}, {0x63, 0x4a, 0xe8, 0xff}}},\n    {{{   123,    256,  -5574}, 0, {   148,    924}, {0xb8, 0x4b, 0xb9, 0xff}}},\n    {{{    -4,    187,  -5298}, 0, {   296,   1326}, {0x91, 0xc4, 0x02, 0xff}}},\n    {{{    -4,    256,  -5298}, 0, {   296,   1326}, {0x9c, 0x4a, 0x16, 0xff}}},\n    {{{   599,    187,  -5286}, 0, {   910,    736}, {0x6d, 0xc1, 0x0c, 0xff}}},\n    {{{   159,    187,  -5027}, 0, {   730,   1432}, {0xd2, 0xcb, 0x69, 0xff}}},\n    {{{   159,    256,  -5027}, 0, {   730,   1432}, {0xda, 0x5f, 0x4a, 0xff}}},\n    {{{   487,    187,  -5051}, 0, {  1034,   1082}, {0x3d, 0xc1, 0x5b, 0xff}}},\n    {{{   487,    256,  -5051}, 0, {  1034,   1082}, {0x3e, 0x3e, 0x5b, 0xff}}},\n};\n\n// 0x07003B08 - 0x07003B78\nstatic const Vtx cotmc_seg7_vertex_07003B08[] = {\n    {{{   123,    256,  -5574}, 0, {   148,    924}, {0xb8, 0x4b, 0xb9, 0xff}}},\n    {{{    -4,    256,  -5298}, 0, {   296,   1326}, {0x9c, 0x4a, 0x16, 0xff}}},\n    {{{   305,    267,  -5312}, 0, {   590,   1002}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{   402,    256,  -5592}, 0, {   408,    628}, {0x1c, 0x4b, 0x9e, 0xff}}},\n    {{{   599,    256,  -5286}, 0, {   910,    736}, {0x63, 0x4a, 0xe8, 0xff}}},\n    {{{   159,    256,  -5027}, 0, {   730,   1432}, {0xda, 0x5f, 0x4a, 0xff}}},\n    {{{   487,    256,  -5051}, 0, {  1034,   1082}, {0x3e, 0x3e, 0x5b, 0xff}}},\n};\n\n// 0x07003B78 - 0x07003C38\nstatic const Vtx cotmc_seg7_vertex_07003B78[] = {\n    {{{    -4,    187,  -5298}, 0, {   296,   1326}, {0x91, 0xc4, 0x02, 0xff}}},\n    {{{    92,    120,  -5293}, 0, {   398,   1234}, {0x92, 0xc3, 0x0b, 0xff}}},\n    {{{   201,    120,  -5113}, 0, {   686,   1304}, {0xd2, 0xc3, 0x64, 0xff}}},\n    {{{   599,    187,  -5286}, 0, {   910,    736}, {0x6d, 0xc1, 0x0c, 0xff}}},\n    {{{   419,    120,  -5129}, 0, {   888,   1072}, {0x43, 0xb9, 0x50, 0xff}}},\n    {{{   493,    120,  -5285}, 0, {   806,    844}, {0x6a, 0xc2, 0xe5, 0xff}}},\n    {{{   487,    187,  -5051}, 0, {  1034,   1082}, {0x3d, 0xc1, 0x5b, 0xff}}},\n    {{{   402,    187,  -5592}, 0, {   408,    628}, {0x44, 0xc1, 0xaa, 0xff}}},\n    {{{   363,    120,  -5488}, 0, {   472,    770}, {0x1e, 0xbf, 0x98, 0xff}}},\n    {{{   123,    187,  -5574}, 0, {   148,    924}, {0xcf, 0xb7, 0xa6, 0xff}}},\n    {{{   177,    120,  -5476}, 0, {   300,    968}, {0xb2, 0xcc, 0xac, 0xff}}},\n    {{{   159,    187,  -5027}, 0, {   730,   1432}, {0xd2, 0xcb, 0x69, 0xff}}},\n};\n\n// 0x07003C38 - 0x07003CD8\nstatic const Vtx cotmc_seg7_vertex_07003C38[] = {\n    {{{   156,    240,  -3599}, 0, {   184,    602}, {0xe6, 0x98, 0xbe, 0xff}}},\n    {{{   307,    209,  -3653}, 0, {    48,    224}, {0xcf, 0x90, 0xe0, 0xff}}},\n    {{{   166,    240,  -3407}, 0, {   662,    576}, {0x00, 0xa7, 0x5a, 0xff}}},\n    {{{    50,    236,  -3387}, 0, {   714,    866}, {0x21, 0xa9, 0x55, 0xff}}},\n    {{{    36,    236,  -3565}, 0, {   270,    900}, {0xff, 0xa8, 0xa5, 0xff}}},\n    {{{   341,    207,  -3413}, 0, {   646,    140}, {0xe0, 0xb7, 0x62, 0xff}}},\n    {{{  -262,     72,  -3526}, 0, {   366,   1644}, {0x5f, 0xde, 0xb4, 0xff}}},\n    {{{   -84,    195,  -3544}, 0, {   320,   1200}, {0x17, 0xbe, 0x97, 0xff}}},\n    {{{  -227,     72,  -3275}, 0, {   992,   1558}, {0x4c, 0x9b, 0x02, 0xff}}},\n    {{{   -64,    195,  -3354}, 0, {   796,   1150}, {0x43, 0xbf, 0x55, 0xff}}},\n};\n\n// 0x07003CD8 - 0x07003D78\nstatic const Vtx cotmc_seg7_vertex_07003CD8[] = {\n    {{{   564,    160,  -3311}, 0, {   902,   -418}, {0x97, 0xc1, 0x1c, 0xff}}},\n    {{{   403,    208,  -3337}, 0, {   836,    -16}, {0xbe, 0xc2, 0x58, 0xff}}},\n    {{{   307,    209,  -3653}, 0, {    48,    224}, {0xcf, 0x90, 0xe0, 0xff}}},\n    {{{   341,    207,  -3413}, 0, {   646,    140}, {0xe0, 0xb7, 0x62, 0xff}}},\n    {{{   564,    162,  -4781}, 0, { -2762,   -418}, {0xd8, 0x8a, 0xea, 0xff}}},\n    {{{   255,    190,  -4466}, 0, { -1978,    352}, {0x8f, 0xc9, 0xf0, 0xff}}},\n    {{{   388,    190,  -4829}, 0, { -2884,     22}, {0xac, 0xbe, 0xbc, 0xff}}},\n    {{{   537,    190,  -4960}, 0, { -3210,   -350}, {0xf0, 0xbc, 0x97, 0xff}}},\n    {{{   628,    190,  -4947}, 0, { -3178,   -576}, {0x4c, 0xbb, 0xb7, 0xff}}},\n    {{{   661,    190,  -4877}, 0, { -3004,   -658}, {0xd5, 0xd7, 0x90, 0xff}}},\n};\n\n// 0x07003D78 - 0x07003E68\nstatic const Vtx cotmc_seg7_vertex_07003D78[] = {\n    {{{ -2986,     20,    295}, 0, { -1742,    252}, {0x10, 0x63, 0xb4, 0xff}}},\n    {{{ -1380,     20,    927}, 0, {  2430,   1306}, {0x11, 0x5a, 0xa9, 0xff}}},\n    {{{ -1249,     20,    403}, 0, {  2588,      0}, {0xe7, 0x5a, 0x55, 0xff}}},\n    {{{    36,     20,    597}, 0, {  5834,     40}, {0x11, 0x7d, 0x00, 0xff}}},\n    {{{  -174,     20,   -212}, 0, {  5052,  -1898}, {0x09, 0x7e, 0xf6, 0xff}}},\n    {{{  -563,     20,    376}, 0, {  4276,   -318}, {0x35, 0x6e, 0x1f, 0xff}}},\n    {{{  -563,     20,   1105}, 0, {  4508,   1484}, {0x4f, 0x5d, 0xe0, 0xff}}},\n    {{{  -563,     20,   -291}, 0, {  4064,  -1970}, {0x71, 0x38, 0xfc, 0xff}}},\n    {{{  -666,     20,    478}, 0, {  4056,      0}, {0x0e, 0x5d, 0x54, 0xff}}},\n    {{{  -666,     20,   1002}, 0, {  4222,   1264}, {0x1d, 0x6b, 0xc4, 0xff}}},\n    {{{  -214,     20,   1090}, 0, {  5368,   1338}, {0x11, 0x7d, 0x0e, 0xff}}},\n    {{{  -563,     20,   1263}, 0, {  4558,   1876}, {0x4d, 0x63, 0x11, 0xff}}},\n    {{{ -2855,     20,   -228}, 0, { -1584,  -1086}, {0xee, 0x5a, 0x57, 0xff}}},\n    {{{ -3755,     20,   -261}, 0, { -3822,   -882}, {0xea, 0x5c, 0x54, 0xff}}},\n    {{{ -4443,     20,   -576}, 0, { -5626,  -1442}, {0x0d, 0x70, 0x39, 0xff}}},\n};\n\n// 0x07003E68 - 0x07003F58\nstatic const Vtx cotmc_seg7_vertex_07003E68[] = {\n    {{{  -214,     20,   1090}, 0, {  5368,   1338}, {0x11, 0x7d, 0x0e, 0xff}}},\n    {{{  -173,      0,   1140}, 0, {  5486,   1448}, {0x28, 0x72, 0x25, 0xff}}},\n    {{{   110,      0,    597}, 0, {  6016,     16}, {0x35, 0x73, 0x04, 0xff}}},\n    {{{ -4443,     20,   -576}, 0, { -5626,  -1442}, {0x0d, 0x70, 0x39, 0xff}}},\n    {{{ -4746,     20,   -360}, 0, { -6308,   -812}, {0x71, 0x2c, 0x23, 0xff}}},\n    {{{ -4746,     20,    151}, 0, { -6144,    456}, {0x4e, 0x5d, 0xde, 0xff}}},\n    {{{ -3814,     20,    259}, 0, { -3804,    426}, {0xd6, 0x49, 0xa2, 0xff}}},\n    {{{ -2986,     20,    295}, 0, { -1742,    252}, {0x10, 0x63, 0xb4, 0xff}}},\n    {{{ -4094,     20,    470}, 0, { -4428,   1036}, {0xf7, 0x4a, 0x9a, 0xff}}},\n    {{{ -4467,     20,    402}, 0, { -5374,    988}, {0x36, 0x48, 0xa7, 0xff}}},\n    {{{ -3755,     20,   -261}, 0, { -3822,   -882}, {0xea, 0x5c, 0x54, 0xff}}},\n    {{{ -4047,     20,   -513}, 0, { -4624,  -1412}, {0xc4, 0x29, 0x67, 0xff}}},\n    {{{  -563,     20,   1263}, 0, {  4558,   1876}, {0x4d, 0x63, 0x11, 0xff}}},\n    {{{    36,     20,    597}, 0, {  5834,     40}, {0x11, 0x7d, 0x00, 0xff}}},\n    {{{  -563,      0,   1340}, 0, {  4584,   2068}, {0x6b, 0x3d, 0x1c, 0xff}}},\n};\n\n// 0x07003F58 - 0x07004048\nstatic const Vtx cotmc_seg7_vertex_07003F58[] = {\n    {{{    36,     20,    597}, 0, {  5834,     40}, {0x11, 0x7d, 0x00, 0xff}}},\n    {{{  -134,      0,   -308}, 0, {  5122,  -2150}, {0x1f, 0x78, 0xea, 0xff}}},\n    {{{  -174,     20,   -212}, 0, {  5052,  -1898}, {0x09, 0x7e, 0xf6, 0xff}}},\n    {{{   110,      0,    597}, 0, {  6016,     16}, {0x35, 0x73, 0x04, 0xff}}},\n    {{{  -563,      0,   -413}, 0, {  4026,  -2272}, {0x50, 0x5e, 0xe7, 0xff}}},\n    {{{  -563,     20,   -291}, 0, {  4064,  -1970}, {0x71, 0x38, 0xfc, 0xff}}},\n    {{{   615,    256,  -3966}, 0, {  -730,   -546}, {0xf0, 0x5b, 0x56, 0xff}}},\n    {{{   564,    256,  -3278}, 0, {   984,   -418}, {0xb0, 0x5e, 0x1a, 0xff}}},\n    {{{   615,    256,  -3311}, 0, {   902,   -546}, {0xdf, 0x5b, 0xaf, 0xff}}},\n    {{{   564,    256,  -3999}, 0, {  -812,   -418}, {0xac, 0x52, 0x2e, 0xff}}},\n    {{{  1076,    256,  -3966}, 0, {  -730,  -1696}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{   255,    256,  -4466}, 0, { -1978,    352}, {0xd4, 0x76, 0xfa, 0xff}}},\n    {{{   403,    256,  -3337}, 0, {   836,    -16}, {0xda, 0x6b, 0x38, 0xff}}},\n    {{{  1076,    256,  -3311}, 0, {   902,  -1696}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{   564,    256,  -4781}, 0, { -2762,   -418}, {0xcb, 0x6e, 0xe1, 0xff}}},\n};\n\n// 0x07004048 - 0x07004148\nstatic const Vtx cotmc_seg7_vertex_07004048[] = {\n    {{{   388,    256,  -4829}, 0, { -2884,     22}, {0xa5, 0x47, 0xcd, 0xff}}},\n    {{{   564,    256,  -4781}, 0, { -2762,   -418}, {0xcb, 0x6e, 0xe1, 0xff}}},\n    {{{   537,    256,  -4960}, 0, { -3210,   -350}, {0xd5, 0x4a, 0xa4, 0xff}}},\n    {{{   255,    256,  -4466}, 0, { -1978,    352}, {0xd4, 0x76, 0xfa, 0xff}}},\n    {{{   628,    256,  -4947}, 0, { -3178,   -576}, {0x2d, 0x4b, 0xa5, 0xff}}},\n    {{{   661,    256,  -4877}, 0, { -3004,   -658}, {0xf4, 0x27, 0x89, 0xff}}},\n    {{{   307,    259,  -3653}, 0, {    48,    224}, {0xc8, 0x6f, 0xea, 0xff}}},\n    {{{   403,    256,  -3337}, 0, {   836,    -16}, {0xda, 0x6b, 0x38, 0xff}}},\n    {{{  -563,    123,  -1632}, 0, {  5090,   2396}, {0x5d, 0x49, 0x2b, 0xff}}},\n    {{{  -257,    140,  -3270}, 0, {  1006,   1632}, {0xfd, 0x7d, 0x15, 0xff}}},\n    {{{  -292,    140,  -3520}, 0, {   380,   1720}, {0x00, 0x7a, 0xde, 0xff}}},\n    {{{   341,    256,  -3413}, 0, {   646,    140}, {0xcb, 0x4b, 0x56, 0xff}}},\n    {{{  -563,     72,  -3860}, 0, {  -466,   2396}, {0x6f, 0xce, 0xdd, 0xff}}},\n    {{{  -286,     72,  -3582}, 0, {   226,   1702}, {0x5d, 0xc7, 0xc1, 0xff}}},\n    {{{  -227,     72,  -3275}, 0, {   992,   1558}, {0x4c, 0x9b, 0x02, 0xff}}},\n    {{{  -563,     72,  -1632}, 0, {  5090,   2396}, {0x67, 0xbb, 0x14, 0xff}}},\n};\n\n// 0x07004148 - 0x07004248\nstatic const Vtx cotmc_seg7_vertex_07004148[] = {\n    {{{  -227,     72,  -3275}, 0, {   992,   1558}, {0x4c, 0x9b, 0x02, 0xff}}},\n    {{{   -35,     72,  -2711}, 0, {  2398,   1078}, {0x68, 0xb9, 0xff, 0xff}}},\n    {{{  -563,     72,  -1632}, 0, {  5090,   2396}, {0x67, 0xbb, 0x14, 0xff}}},\n    {{{  -157,     72,  -1841}, 0, {  4570,   1382}, {0x53, 0xd4, 0x54, 0xff}}},\n    {{{  -292,    140,  -3520}, 0, {   380,   1720}, {0x00, 0x7a, 0xde, 0xff}}},\n    {{{  -262,    123,  -3526}, 0, {   366,   1644}, {0x17, 0x17, 0x86, 0xff}}},\n    {{{  -286,    123,  -3582}, 0, {   226,   1702}, {0x62, 0x2d, 0xbf, 0xff}}},\n    {{{  -563,    123,  -3860}, 0, {  -466,   2396}, {0x6f, 0x37, 0xe6, 0xff}}},\n    {{{  -563,    123,  -1632}, 0, {  5090,   2396}, {0x5d, 0x49, 0x2b, 0xff}}},\n    {{{   179,     94,  -1705}, 0, {  -278,    984}, {0xd3, 0x75, 0xf3, 0xff}}},\n    {{{   564,    123,  -1958}, 0, {  -910,     22}, {0x9e, 0x4f, 0xf3, 0xff}}},\n    {{{   564,      0,  -2309}, 0, { -1784,     22}, {0x8e, 0x31, 0xec, 0xff}}},\n    {{{   -35,    123,  -2711}, 0, {  2398,   1078}, {0x6d, 0x3c, 0xeb, 0xff}}},\n    {{{  -227,    123,  -3275}, 0, {   992,   1558}, {0x59, 0x1f, 0x54, 0xff}}},\n    {{{  -257,    140,  -3270}, 0, {  1006,   1632}, {0xfd, 0x7d, 0x15, 0xff}}},\n    {{{  -157,    123,  -1841}, 0, {  4570,   1382}, {0x5d, 0x4a, 0x2c, 0xff}}},\n};\n\n// 0x07004248 - 0x07004348\nstatic const Vtx cotmc_seg7_vertex_07004248[] = {\n    {{{  -257,    140,  -3270}, 0, {  1006,   1632}, {0xfd, 0x7d, 0x15, 0xff}}},\n    {{{  -262,    154,  -3526}, 0, {   366,   1644}, {0xc9, 0x67, 0xcf, 0xff}}},\n    {{{  -292,    140,  -3520}, 0, {   380,   1720}, {0x00, 0x7a, 0xde, 0xff}}},\n    {{{  -227,    154,  -3275}, 0, {   992,   1558}, {0x07, 0x43, 0x6b, 0xff}}},\n    {{{   179,     94,  -1705}, 0, {  -278,    984}, {0xd3, 0x75, 0xf3, 0xff}}},\n    {{{   564,    123,   -608}, 0, {  2458,     22}, {0xa9, 0x5a, 0x0f, 0xff}}},\n    {{{   564,    123,  -1958}, 0, {  -910,     22}, {0x9e, 0x4f, 0xf3, 0xff}}},\n    {{{   176,     73,  -1196}, 0, {   990,    990}, {0xd0, 0x74, 0x0e, 0xff}}},\n    {{{    53,      0,  -1175}, 0, {  1044,   1296}, {0xb3, 0x64, 0x08, 0xff}}},\n    {{{    93,      0,  -1869}, 0, {  -688,   1194}, {0xb6, 0x61, 0xe0, 0xff}}},\n    {{{   564,      0,  -2309}, 0, { -1784,     22}, {0x8e, 0x31, 0xec, 0xff}}},\n    {{{   215,      0,   -681}, 0, {  2276,    894}, {0xbc, 0x67, 0x1c, 0xff}}},\n    {{{   305,     46,   -724}, 0, {  2168,    668}, {0xcd, 0x71, 0x17, 0xff}}},\n    {{{   435,     67,   -520}, 0, {  2676,    346}, {0xdd, 0x73, 0x26, 0xff}}},\n    {{{   357,      0,   -426}, 0, {  2910,    540}, {0xcd, 0x68, 0x32, 0xff}}},\n    {{{   564,      0,   -376}, 0, {  3036,     22}, {0xad, 0x4d, 0x37, 0xff}}},\n};\n\n// 0x07004348 - 0x070043E8\nstatic const Vtx cotmc_seg7_vertex_07004348[] = {\n    {{{   166,    280,  -3407}, 0, {   662,    576}, {0x08, 0x65, 0x4c, 0xff}}},\n    {{{   341,    256,  -3413}, 0, {   646,    140}, {0xcb, 0x4b, 0x56, 0xff}}},\n    {{{   307,    259,  -3653}, 0, {    48,    224}, {0xc8, 0x6f, 0xea, 0xff}}},\n    {{{   156,    280,  -3599}, 0, {   184,    602}, {0xdf, 0x38, 0x94, 0xff}}},\n    {{{    50,    269,  -3387}, 0, {   714,    866}, {0xff, 0x58, 0x5a, 0xff}}},\n    {{{    36,    269,  -3565}, 0, {   270,    900}, {0xe1, 0x57, 0xaa, 0xff}}},\n    {{{   -64,    234,  -3354}, 0, {   796,   1150}, {0xfd, 0x56, 0x5c, 0xff}}},\n    {{{   -84,    234,  -3544}, 0, {   320,   1200}, {0xd8, 0x54, 0xab, 0xff}}},\n    {{{  -262,    154,  -3526}, 0, {   366,   1644}, {0xc9, 0x67, 0xcf, 0xff}}},\n    {{{  -227,    154,  -3275}, 0, {   992,   1558}, {0x07, 0x43, 0x6b, 0xff}}},\n};\n\n// 0x070043E8 - 0x070044E8\nstatic const Vtx cotmc_seg7_vertex_070043E8[] = {\n    {{{   348,    352,  -6491}, 0, {   918,    732}, {0x29, 0x6c, 0xcd, 0xff}}},\n    {{{   348,    291,  -6491}, 0, {   918,    732}, {0x55, 0xc6, 0xb6, 0xff}}},\n    {{{     0,    291,  -6635}, 0, {   968,    360}, {0x0b, 0xd8, 0x89, 0xff}}},\n    {{{  -347,    352,  -5795}, 0, {    68,    242}, {0xdb, 0x70, 0x2c, 0xff}}},\n    {{{     0,    291,  -5651}, 0, {    20,    614}, {0xf1, 0xce, 0x73, 0xff}}},\n    {{{     0,    352,  -5651}, 0, {    20,    614}, {0x16, 0x3b, 0x6d, 0xff}}},\n    {{{   348,    291,  -5795}, 0, {   248,    912}, {0x4a, 0xc6, 0x55, 0xff}}},\n    {{{   348,    338,  -5795}, 0, {   248,    912}, {0x60, 0x03, 0x52, 0xff}}},\n    {{{   336,    352,  -5791}, 0, {   240,    902}, {0x14, 0x6f, 0x39, 0xff}}},\n    {{{   492,    352,  -6143}, 0, {   620,    962}, {0x47, 0x68, 0x00, 0xff}}},\n    {{{   350,    352,  -5802}, 0, {   254,    912}, {0x57, 0x54, 0x24, 0xff}}},\n    {{{   492,    291,  -6143}, 0, {   620,    962}, {0x77, 0xd8, 0x0b, 0xff}}},\n    {{{  -347,    291,  -5795}, 0, {    68,    242}, {0xa4, 0xce, 0x46, 0xff}}},\n    {{{  -491,    352,  -6143}, 0, {   366,     14}, {0xbf, 0x6c, 0x08, 0xff}}},\n    {{{     0,    352,  -6635}, 0, {   968,    360}, {0xf9, 0x70, 0xc7, 0xff}}},\n    {{{  -347,    291,  -6491}, 0, {   738,     62}, {0xba, 0xce, 0xa4, 0xff}}},\n};\n\n// 0x070044E8 - 0x07004548\nstatic const Vtx cotmc_seg7_vertex_070044E8[] = {\n    {{{     0,    352,  -6635}, 0, {   968,    360}, {0xf9, 0x70, 0xc7, 0xff}}},\n    {{{  -347,    291,  -6491}, 0, {   738,     62}, {0xba, 0xce, 0xa4, 0xff}}},\n    {{{  -347,    352,  -6491}, 0, {   738,     62}, {0xcd, 0x6c, 0xd7, 0xff}}},\n    {{{  -491,    291,  -6143}, 0, {   366,     14}, {0x8d, 0xce, 0xf1, 0xff}}},\n    {{{  -491,    352,  -6143}, 0, {   366,     14}, {0xbf, 0x6c, 0x08, 0xff}}},\n    {{{  -347,    291,  -5795}, 0, {    68,    242}, {0xa4, 0xce, 0x46, 0xff}}},\n};\n\n// 0x07004548 - 0x07004648\nstatic const Vtx cotmc_seg7_vertex_07004548[] = {\n    {{{  -299,    362,  -6135}, 0, {   408,    200}, {0xfa, 0x7e, 0x01, 0xff}}},\n    {{{  -275,    362,  -6103}, 0, {   384,    232}, {0xfa, 0x7e, 0x03, 0xff}}},\n    {{{     0,    377,  -6143}, 0, {   494,    488}, {0x00, 0x7e, 0xff, 0xff}}},\n    {{{   313,    357,  -6337}, 0, {   760,    740}, {0x05, 0x7e, 0xfe, 0xff}}},\n    {{{   352,    355,  -6359}, 0, {   792,    770}, {0x06, 0x7e, 0xfd, 0xff}}},\n    {{{   348,    352,  -6491}, 0, {   918,    732}, {0x29, 0x6c, 0xcd, 0xff}}},\n    {{{   313,    358,  -6292}, 0, {   718,    750}, {0x06, 0x7e, 0xfd, 0xff}}},\n    {{{   391,    353,  -6337}, 0, {   782,    814}, {0x07, 0x7e, 0xfe, 0xff}}},\n    {{{   492,    352,  -6143}, 0, {   620,    962}, {0x47, 0x68, 0x00, 0xff}}},\n    {{{     0,    352,  -6635}, 0, {   968,    360}, {0xf9, 0x70, 0xc7, 0xff}}},\n    {{{  -491,    352,  -6143}, 0, {   366,     14}, {0xbf, 0x6c, 0x08, 0xff}}},\n    {{{    -4,    363,  -6419}, 0, {   758,    412}, {0xff, 0x7e, 0xfa, 0xff}}},\n    {{{  -285,    361,  -6045}, 0, {   326,    236}, {0xf8, 0x7e, 0xff, 0xff}}},\n    {{{  -347,    352,  -5795}, 0, {    68,    242}, {0xdb, 0x70, 0x2c, 0xff}}},\n    {{{   -30,    365,  -6368}, 0, {   702,    398}, {0xfe, 0x7e, 0xfa, 0xff}}},\n    {{{  -347,    352,  -6491}, 0, {   738,     62}, {0xcd, 0x6c, 0xd7, 0xff}}},\n};\n\n// 0x07004648 - 0x07004738\nstatic const Vtx cotmc_seg7_vertex_07004648[] = {\n    {{{   492,    352,  -6143}, 0, {   620,    962}, {0x47, 0x68, 0x00, 0xff}}},\n    {{{   352,    357,  -6269}, 0, {   706,    794}, {0x06, 0x7e, 0xfd, 0xff}}},\n    {{{     0,    377,  -6143}, 0, {   494,    488}, {0x00, 0x7e, 0xff, 0xff}}},\n    {{{   313,    358,  -6292}, 0, {   718,    750}, {0x06, 0x7e, 0xfd, 0xff}}},\n    {{{   392,    354,  -6292}, 0, {   738,    826}, {0x07, 0x7e, 0xfd, 0xff}}},\n    {{{   391,    353,  -6337}, 0, {   782,    814}, {0x07, 0x7e, 0xfe, 0xff}}},\n    {{{   343,    353,  -5800}, 0, {   252,    906}, {0x07, 0x7e, 0x07, 0xff}}},\n    {{{   350,    352,  -5802}, 0, {   254,    912}, {0x57, 0x54, 0x24, 0xff}}},\n    {{{  -491,    352,  -6143}, 0, {   366,     14}, {0xbf, 0x6c, 0x08, 0xff}}},\n    {{{  -341,    358,  -6059}, 0, {   324,    180}, {0xfa, 0x7e, 0x02, 0xff}}},\n    {{{  -329,    360,  -6114}, 0, {   380,    176}, {0xfa, 0x7e, 0x02, 0xff}}},\n    {{{  -347,    352,  -5795}, 0, {    68,    242}, {0xdb, 0x70, 0x2c, 0xff}}},\n    {{{  -299,    362,  -6135}, 0, {   408,    200}, {0xfa, 0x7e, 0x01, 0xff}}},\n    {{{  -110,    363,  -6381}, 0, {   694,    320}, {0xfe, 0x7e, 0xfa, 0xff}}},\n    {{{   -30,    365,  -6368}, 0, {   702,    398}, {0xfe, 0x7e, 0xfa, 0xff}}},\n};\n\n// 0x07004738 - 0x07004838\nstatic const Vtx cotmc_seg7_vertex_07004738[] = {\n    {{{  -277,    361,  -6053}, 0, {   334,    242}, {0xf8, 0x7e, 0xfc, 0xff}}},\n    {{{     0,    377,  -6143}, 0, {   494,    488}, {0x00, 0x7e, 0xff, 0xff}}},\n    {{{  -275,    362,  -6103}, 0, {   384,    232}, {0xfa, 0x7e, 0x03, 0xff}}},\n    {{{  -285,    361,  -6045}, 0, {   326,    236}, {0xf8, 0x7e, 0xff, 0xff}}},\n    {{{  -347,    352,  -5795}, 0, {    68,    242}, {0xdb, 0x70, 0x2c, 0xff}}},\n    {{{     0,    352,  -5651}, 0, {    20,    614}, {0x16, 0x3b, 0x6d, 0xff}}},\n    {{{  -338,    358,  -6054}, 0, {   320,    184}, {0xfb, 0x7e, 0x02, 0xff}}},\n    {{{  -341,    358,  -6059}, 0, {   324,    180}, {0xfa, 0x7e, 0x02, 0xff}}},\n    {{{  -312,    359,  -6038}, 0, {   312,    212}, {0xf9, 0x7e, 0x02, 0xff}}},\n    {{{  -110,    363,  -6381}, 0, {   694,    320}, {0xfe, 0x7e, 0xfa, 0xff}}},\n    {{{  -138,    360,  -6432}, 0, {   736,    278}, {0xfe, 0x7e, 0xfa, 0xff}}},\n    {{{  -347,    352,  -6491}, 0, {   738,     62}, {0xcd, 0x6c, 0xd7, 0xff}}},\n    {{{   336,    352,  -5791}, 0, {   240,    902}, {0x14, 0x6f, 0x39, 0xff}}},\n    {{{   343,    353,  -5800}, 0, {   252,    906}, {0x07, 0x7e, 0x07, 0xff}}},\n    {{{   -97,    358,  -6476}, 0, {   790,    306}, {0xfe, 0x7e, 0xf9, 0xff}}},\n    {{{     0,    352,  -6635}, 0, {   968,    360}, {0xf9, 0x70, 0xc7, 0xff}}},\n};\n\n// 0x07004838 - 0x070048B8\nstatic const Vtx cotmc_seg7_vertex_07004838[] = {\n    {{{   -25,    360,  -6474}, 0, {   806,    378}, {0x00, 0x7e, 0xfa, 0xff}}},\n    {{{     0,    352,  -6635}, 0, {   968,    360}, {0xf9, 0x70, 0xc7, 0xff}}},\n    {{{   -97,    358,  -6476}, 0, {   790,    306}, {0xfe, 0x7e, 0xf9, 0xff}}},\n    {{{   -19,    360,  -6470}, 0, {   804,    384}, {0x00, 0x7e, 0xfa, 0xff}}},\n    {{{    -4,    363,  -6419}, 0, {   758,    412}, {0xff, 0x7e, 0xfa, 0xff}}},\n    {{{     0,    377,  -6143}, 0, {   494,    488}, {0x00, 0x7e, 0xff, 0xff}}},\n    {{{     0,    352,  -5651}, 0, {    20,    614}, {0x16, 0x3b, 0x6d, 0xff}}},\n    {{{   336,    352,  -5791}, 0, {   240,    902}, {0x14, 0x6f, 0x39, 0xff}}},\n};\n\n// 0x070048B8 - 0x070049B8\nstatic const Vtx cotmc_seg7_vertex_070048B8[] = {\n    {{{   348,    291,  -6491}, 0, {   918,    732}, {0x55, 0xc6, 0xb6, 0xff}}},\n    {{{     0,    201,  -6540}, 0, {   876,    384}, {0xf8, 0xc6, 0x90, 0xff}}},\n    {{{     0,    291,  -6635}, 0, {   968,    360}, {0x0b, 0xd8, 0x89, 0xff}}},\n    {{{   281,    201,  -6424}, 0, {   836,    686}, {0x4c, 0xd8, 0xa4, 0xff}}},\n    {{{   397,    201,  -6143}, 0, {   596,    870}, {0x70, 0xc6, 0xf9, 0xff}}},\n    {{{   492,    291,  -6143}, 0, {   620,    962}, {0x77, 0xd8, 0x0b, 0xff}}},\n    {{{  -347,    291,  -6491}, 0, {   738,     62}, {0xba, 0xce, 0xa4, 0xff}}},\n    {{{  -280,    201,  -6424}, 0, {   692,    144}, {0xa4, 0xce, 0xba, 0xff}}},\n    {{{   348,    291,  -5795}, 0, {   248,    912}, {0x4a, 0xc6, 0x55, 0xff}}},\n    {{{   281,    201,  -5862}, 0, {   296,    830}, {0x5c, 0xd8, 0x4c, 0xff}}},\n    {{{     0,    291,  -5651}, 0, {    20,    614}, {0xf1, 0xce, 0x73, 0xff}}},\n    {{{     0,    201,  -5746}, 0, {   110,    590}, {0x0f, 0xce, 0x73, 0xff}}},\n    {{{  -280,    201,  -5862}, 0, {   150,    290}, {0xba, 0xce, 0x5c, 0xff}}},\n    {{{  -347,    291,  -5795}, 0, {    68,    242}, {0xa4, 0xce, 0x46, 0xff}}},\n    {{{  -396,    201,  -6143}, 0, {   390,    104}, {0x8d, 0xce, 0x0f, 0xff}}},\n    {{{  -491,    291,  -6143}, 0, {   366,     14}, {0x8d, 0xce, 0xf1, 0xff}}},\n};\n\n// 0x070049B8 - 0x07004AA8\nstatic const Vtx cotmc_seg7_vertex_070049B8[] = {\n    {{{  1362,   -153,  -5579}, 0, {     0,   2012}, {0x95, 0x32, 0xd4, 0xff}}},\n    {{{   564,   -153,  -4781}, 0, {  2012,   2012}, {0xbc, 0x66, 0xe4, 0xff}}},\n    {{{   564,      0,  -4781}, 0, {  2012,   1652}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{  1362,      0,  -5579}, 0, {     0,   1652}, {0x8e, 0x00, 0xc9, 0xff}}},\n    {{{   661,    190,  -4877}, 0, {  1766,   1208}, {0xd5, 0xd7, 0x90, 0xff}}},\n    {{{   564,    162,  -4781}, 0, {  2012,   1272}, {0xd8, 0x8a, 0xea, 0xff}}},\n    {{{  -563,    717,  -4781}, 0, {     0,      0}, {0x77, 0x00, 0xd7, 0xff}}},\n    {{{  -563,      0,  -4781}, 0, {     0,   1652}, {0x79, 0x00, 0xdc, 0xff}}},\n    {{{ -1361,      0,  -5579}, 0, {  2012,   1652}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{  -563,   -153,  -4781}, 0, {     0,   2012}, {0x3a, 0x6c, 0xe2, 0xff}}},\n    {{{ -1361,   -153,  -5579}, 0, {  2012,   2012}, {0x5b, 0x4c, 0xd3, 0xff}}},\n    {{{ -1361,    717,  -5579}, 0, {  2012,      0}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{  -563,    717,  -7505}, 0, {     0,      0}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{  -563,      0,  -7505}, 0, {     0,   1652}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{   564,      0,  -7505}, 0, {  2012,   1652}, {0xd0, 0x00, 0x75, 0xff}}},\n};\n\n// 0x07004AA8 - 0x07004BA8\nstatic const Vtx cotmc_seg7_vertex_07004AA8[] = {\n    {{{ -1361,    717,  -5579}, 0, {     0,      0}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{ -1361,      0,  -5579}, 0, {     0,   1652}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{ -1361,      0,  -6707}, 0, {  2012,   1652}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{ -1361,   -153,  -5579}, 0, {     0,   2012}, {0x5b, 0x4c, 0xd3, 0xff}}},\n    {{{ -1361,   -153,  -6707}, 0, {  2012,   2012}, {0x64, 0x44, 0x23, 0xff}}},\n    {{{ -1361,    717,  -6707}, 0, {  2012,      0}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{ -1361,    717,  -6707}, 0, {     0,      0}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{ -1361,      0,  -6707}, 0, {     0,   1652}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{  -563,      0,  -7505}, 0, {  2012,   1652}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{ -1361,   -153,  -6707}, 0, {     0,   2012}, {0x64, 0x44, 0x23, 0xff}}},\n    {{{  -563,   -153,  -7505}, 0, {  2012,   2012}, {0x2a, 0x0a, 0x77, 0xff}}},\n    {{{  -563,    717,  -7505}, 0, {  2012,      0}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{  -563,      0,  -7505}, 0, {     0,   1652}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{   564,   -153,  -7505}, 0, {  2012,   2012}, {0xeb, 0x04, 0x7d, 0xff}}},\n    {{{   564,      0,  -7505}, 0, {  2012,   1652}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  -563,   -153,  -7505}, 0, {     0,   2012}, {0x2a, 0x0a, 0x77, 0xff}}},\n};\n\n// 0x07004BA8 - 0x07004C98\nstatic const Vtx cotmc_seg7_vertex_07004BA8[] = {\n    {{{  -563,    717,  -7505}, 0, {     0,      0}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{   564,      0,  -7505}, 0, {  2012,   1652}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{   564,    717,  -7505}, 0, {  2012,      0}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{   564,    717,  -7505}, 0, {     0,      0}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{   564,      0,  -7505}, 0, {     0,   1652}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  1362,      0,  -6707}, 0, {  2012,   1652}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{  1362,   -153,  -6707}, 0, {  2012,   2012}, {0x9e, 0x3b, 0x35, 0xff}}},\n    {{{   564,   -153,  -7505}, 0, {     0,   2012}, {0xeb, 0x04, 0x7d, 0xff}}},\n    {{{  1362,    717,  -6707}, 0, {  2012,      0}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{  1362,    717,  -6707}, 0, {     0,      0}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{  1362,      0,  -6707}, 0, {     0,   1652}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{  1362,      0,  -5579}, 0, {  2012,   1652}, {0x8e, 0x00, 0xc9, 0xff}}},\n    {{{  1362,   -153,  -5579}, 0, {  2012,   2012}, {0x95, 0x32, 0xd4, 0xff}}},\n    {{{  1362,   -153,  -6707}, 0, {     0,   2012}, {0x9e, 0x3b, 0x35, 0xff}}},\n    {{{  1362,    717,  -5579}, 0, {  2012,      0}, {0x8e, 0x00, 0xc9, 0xff}}},\n};\n\n// 0x07004C98 - 0x07004D98\nstatic const Vtx cotmc_seg7_vertex_07004C98[] = {\n    {{{  1362,      0,  -5579}, 0, {     0,   1652}, {0x8e, 0x00, 0xc9, 0xff}}},\n    {{{   661,    256,  -4877}, 0, {  1766,   1052}, {0xf4, 0x27, 0x89, 0xff}}},\n    {{{  1362,    717,  -5579}, 0, {     0,      0}, {0x8e, 0x00, 0xc9, 0xff}}},\n    {{{   661,    190,  -4877}, 0, {  1766,   1208}, {0xd5, 0xd7, 0x90, 0xff}}},\n    {{{   564,    256,  -4781}, 0, {  2012,   1052}, {0xcb, 0x6e, 0xe1, 0xff}}},\n    {{{   564,    717,  -4781}, 0, {  2012,      0}, {0x89, 0x00, 0xd7, 0xff}}},\n    {{{  -280,    201,  -6424}, 0, {     0,      0}, {0xa4, 0xce, 0xba, 0xff}}},\n    {{{  -396,   -380,  -6143}, 0, {   990,   1920}, {0x99, 0x46, 0xeb, 0xff}}},\n    {{{  -396,    201,  -6143}, 0, {   990,      0}, {0x8d, 0xce, 0x0f, 0xff}}},\n    {{{   397,    201,  -6143}, 0, {     0,      0}, {0x70, 0xc6, 0xf9, 0xff}}},\n    {{{   281,   -324,  -6424}, 0, {   990,   1744}, {0x51, 0x45, 0xbc, 0xff}}},\n    {{{   281,    201,  -6424}, 0, {   990,      0}, {0x4c, 0xd8, 0xa4, 0xff}}},\n    {{{  -280,   -376,  -6424}, 0, {     0,   1908}, {0xd1, 0x5d, 0xb9, 0xff}}},\n    {{{     0,    201,  -6540}, 0, {     0,      0}, {0xf8, 0xc6, 0x90, 0xff}}},\n    {{{     0,   -382,  -6540}, 0, {     0,   1924}, {0x08, 0x57, 0xa4, 0xff}}},\n    {{{  -280,   -376,  -6424}, 0, {   990,   1908}, {0xd1, 0x5d, 0xb9, 0xff}}},\n};\n\n// 0x07004D98 - 0x07004E98\nstatic const Vtx cotmc_seg7_vertex_07004D98[] = {\n    {{{     0,    201,  -6540}, 0, {     0,      0}, {0xf8, 0xc6, 0x90, 0xff}}},\n    {{{  -280,   -376,  -6424}, 0, {   990,   1908}, {0xd1, 0x5d, 0xb9, 0xff}}},\n    {{{  -280,    201,  -6424}, 0, {   990,      0}, {0xa4, 0xce, 0xba, 0xff}}},\n    {{{   281,    201,  -6424}, 0, {     0,      0}, {0x4c, 0xd8, 0xa4, 0xff}}},\n    {{{   281,   -324,  -6424}, 0, {     0,   1744}, {0x51, 0x45, 0xbc, 0xff}}},\n    {{{     0,   -382,  -6540}, 0, {   990,   1924}, {0x08, 0x57, 0xa4, 0xff}}},\n    {{{     0,    201,  -6540}, 0, {   990,      0}, {0xf8, 0xc6, 0x90, 0xff}}},\n    {{{   397,    201,  -6143}, 0, {     0,      0}, {0x70, 0xc6, 0xf9, 0xff}}},\n    {{{   397,   -344,  -6143}, 0, {     0,   1808}, {0x5a, 0x57, 0x0b, 0xff}}},\n    {{{   281,   -324,  -6424}, 0, {   990,   1744}, {0x51, 0x45, 0xbc, 0xff}}},\n    {{{  -396,    201,  -6143}, 0, {     0,      0}, {0x8d, 0xce, 0x0f, 0xff}}},\n    {{{  -396,   -380,  -6143}, 0, {     0,   1920}, {0x99, 0x46, 0xeb, 0xff}}},\n    {{{  -280,   -260,  -5862}, 0, {   990,   1548}, {0xae, 0x53, 0x30, 0xff}}},\n    {{{   281,    201,  -5862}, 0, {     0,      0}, {0x5c, 0xd8, 0x4c, 0xff}}},\n    {{{   397,   -344,  -6143}, 0, {   990,   1808}, {0x5a, 0x57, 0x0b, 0xff}}},\n    {{{   397,    201,  -6143}, 0, {   990,      0}, {0x70, 0xc6, 0xf9, 0xff}}},\n};\n\n// 0x07004E98 - 0x07004F78\nstatic const Vtx cotmc_seg7_vertex_07004E98[] = {\n    {{{   281,    201,  -5862}, 0, {     0,      0}, {0x5c, 0xd8, 0x4c, 0xff}}},\n    {{{   281,   -343,  -5862}, 0, {     0,   1804}, {0x3d, 0x5b, 0x3e, 0xff}}},\n    {{{   397,   -344,  -6143}, 0, {   990,   1808}, {0x5a, 0x57, 0x0b, 0xff}}},\n    {{{     0,    201,  -5746}, 0, {     0,      0}, {0x0f, 0xce, 0x73, 0xff}}},\n    {{{     0,   -267,  -5746}, 0, {     0,   1572}, {0xfd, 0x66, 0x4b, 0xff}}},\n    {{{   281,   -343,  -5862}, 0, {   990,   1804}, {0x3d, 0x5b, 0x3e, 0xff}}},\n    {{{   281,    201,  -5862}, 0, {   990,      0}, {0x5c, 0xd8, 0x4c, 0xff}}},\n    {{{  -280,    201,  -5862}, 0, {     0,      0}, {0xba, 0xce, 0x5c, 0xff}}},\n    {{{  -280,   -260,  -5862}, 0, {     0,   1548}, {0xae, 0x53, 0x30, 0xff}}},\n    {{{     0,   -267,  -5746}, 0, {   990,   1572}, {0xfd, 0x66, 0x4b, 0xff}}},\n    {{{     0,    201,  -5746}, 0, {   990,      0}, {0x0f, 0xce, 0x73, 0xff}}},\n    {{{   419,    120,  -5129}, 0, {     0,      0}, {0x43, 0xb9, 0x50, 0xff}}},\n    {{{   419,   -263,  -5129}, 0, {     0,   1712}, {0x2b, 0x4f, 0x58, 0xff}}},\n    {{{   493,   -282,  -5285}, 0, {   990,   1788}, {0x41, 0x6c, 0xfb, 0xff}}},\n};\n\n// 0x07004F78 - 0x07005058\nstatic const Vtx cotmc_seg7_vertex_07004F78[] = {\n    {{{  -396,    201,  -6143}, 0, {     0,      0}, {0x8d, 0xce, 0x0f, 0xff}}},\n    {{{  -280,   -260,  -5862}, 0, {   990,   1548}, {0xae, 0x53, 0x30, 0xff}}},\n    {{{  -280,    201,  -5862}, 0, {   990,      0}, {0xba, 0xce, 0x5c, 0xff}}},\n    {{{    92,    120,  -5293}, 0, {     0,      0}, {0x92, 0xc3, 0x0b, 0xff}}},\n    {{{    92,   -257,  -5293}, 0, {     0,   1692}, {0xae, 0x5f, 0xf1, 0xff}}},\n    {{{   201,   -256,  -5113}, 0, {   990,   1684}, {0xcc, 0x61, 0x3d, 0xff}}},\n    {{{   201,    120,  -5113}, 0, {   990,      0}, {0xd2, 0xc3, 0x64, 0xff}}},\n    {{{   201,    120,  -5113}, 0, {     0,      0}, {0xd2, 0xc3, 0x64, 0xff}}},\n    {{{   201,   -256,  -5113}, 0, {     0,   1684}, {0xcc, 0x61, 0x3d, 0xff}}},\n    {{{   419,   -263,  -5129}, 0, {   990,   1712}, {0x2b, 0x4f, 0x58, 0xff}}},\n    {{{   419,    120,  -5129}, 0, {   990,      0}, {0x43, 0xb9, 0x50, 0xff}}},\n    {{{   419,    120,  -5129}, 0, {     0,      0}, {0x43, 0xb9, 0x50, 0xff}}},\n    {{{   493,   -282,  -5285}, 0, {   990,   1788}, {0x41, 0x6c, 0xfb, 0xff}}},\n    {{{   493,    120,  -5285}, 0, {   990,      0}, {0x6a, 0xc2, 0xe5, 0xff}}},\n};\n\n// 0x07005058 - 0x07005118\nstatic const Vtx cotmc_seg7_vertex_07005058[] = {\n    {{{   493,    120,  -5285}, 0, {     0,      0}, {0x6a, 0xc2, 0xe5, 0xff}}},\n    {{{   493,   -282,  -5285}, 0, {     0,   1788}, {0x41, 0x6c, 0xfb, 0xff}}},\n    {{{   363,   -311,  -5488}, 0, {   990,   1908}, {0x3a, 0x59, 0xbd, 0xff}}},\n    {{{   363,    120,  -5488}, 0, {   990,      0}, {0x1e, 0xbf, 0x98, 0xff}}},\n    {{{   363,    120,  -5488}, 0, {     0,      0}, {0x1e, 0xbf, 0x98, 0xff}}},\n    {{{   363,   -311,  -5488}, 0, {     0,   1908}, {0x3a, 0x59, 0xbd, 0xff}}},\n    {{{   177,   -297,  -5476}, 0, {   990,   1848}, {0xe6, 0x60, 0xb3, 0xff}}},\n    {{{   177,    120,  -5476}, 0, {   990,      0}, {0xb2, 0xcc, 0xac, 0xff}}},\n    {{{   177,    120,  -5476}, 0, {     0,      0}, {0xb2, 0xcc, 0xac, 0xff}}},\n    {{{   177,   -297,  -5476}, 0, {     0,   1848}, {0xe6, 0x60, 0xb3, 0xff}}},\n    {{{    92,   -257,  -5293}, 0, {   990,   1692}, {0xae, 0x5f, 0xf1, 0xff}}},\n    {{{    92,    120,  -5293}, 0, {   990,      0}, {0x92, 0xc3, 0x0b, 0xff}}},\n};\n\n// 0x07005118 - 0x070051D8\nstatic const Vtx cotmc_seg7_vertex_07005118[] = {\n    {{{  1076,    256,  -3311}, 0, {     0,   2012}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{   615,    256,  -3311}, 0, {  2842,   2012}, {0xdf, 0x5b, 0xaf, 0xff}}},\n    {{{   615,    684,  -3311}, 0, {  2842,      0}, {0xce, 0xb0, 0xac, 0xff}}},\n    {{{  1076,    684,  -3311}, 0, {     0,      0}, {0xcd, 0x99, 0xcd, 0xff}}},\n    {{{  1076,    684,  -3966}, 0, {     0,      0}, {0xac, 0xd6, 0x54, 0xff}}},\n    {{{  1076,    256,  -3311}, 0, {  4056,   2012}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  1076,    684,  -3311}, 0, {  4056,      0}, {0xcd, 0x99, 0xcd, 0xff}}},\n    {{{  1076,    256,  -3966}, 0, {     0,   2012}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  1076,    684,  -3966}, 0, {  2012,      0}, {0xac, 0xd6, 0x54, 0xff}}},\n    {{{   615,    684,  -3966}, 0, {  -860,      0}, {0xce, 0xac, 0x50, 0xff}}},\n    {{{   615,    256,  -3966}, 0, {  -860,   2012}, {0xf0, 0x5b, 0x56, 0xff}}},\n    {{{  1076,    256,  -3966}, 0, {  2012,   2012}, {0xcd, 0x67, 0x33, 0xff}}},\n};\n\n// 0x070051D8 - 0x070052D8\nstatic const Vtx cotmc_seg7_vertex_070051D8[] = {\n    {{{ -3814,     20,    259}, 0, {  4400,   2012}, {0xd6, 0x49, 0xa2, 0xff}}},\n    {{{ -4094,     20,    470}, 0, {  5372,   2012}, {0xf7, 0x4a, 0x9a, 0xff}}},\n    {{{ -4094,    717,    470}, 0, {  5372,      0}, {0xda, 0xb6, 0xa1, 0xff}}},\n    {{{ -4047,     20,   -513}, 0, { -6564,   2012}, {0xc4, 0x29, 0x67, 0xff}}},\n    {{{ -3755,    717,   -261}, 0, { -5258,      0}, {0xcf, 0xb8, 0x5b, 0xff}}},\n    {{{ -4047,    717,   -513}, 0, { -6564,      0}, {0xde, 0xb8, 0x62, 0xff}}},\n    {{{ -3755,     20,   -261}, 0, { -5258,   2012}, {0xea, 0x5c, 0x54, 0xff}}},\n    {{{ -4443,     20,   -576}, 0, { -8166,   2012}, {0x0d, 0x70, 0x39, 0xff}}},\n    {{{ -2855,    717,   -228}, 0, { -1688,      0}, {0xee, 0xa6, 0x57, 0xff}}},\n    {{{ -4443,    717,   -576}, 0, { -8166,      0}, {0x13, 0xa3, 0x53, 0xff}}},\n    {{{ -2855,     20,   -228}, 0, { -1688,   2012}, {0xee, 0x5a, 0x57, 0xff}}},\n    {{{ -1249,     20,    403}, 0, {  5036,   2012}, {0xe7, 0x5a, 0x55, 0xff}}},\n    {{{ -1249,    717,    403}, 0, {  5036,      0}, {0xee, 0xa6, 0x57, 0xff}}},\n    {{{ -4746,    717,   -360}, 0, { -9228,      0}, {0x5f, 0xd4, 0x47, 0xff}}},\n    {{{ -4746,     20,   -360}, 0, { -9228,   2012}, {0x71, 0x2c, 0x23, 0xff}}},\n    {{{ -3814,    717,    259}, 0, {  4400,      0}, {0xee, 0xb7, 0x9a, 0xff}}},\n};\n\n// 0x070052D8 - 0x070053C8\nstatic const Vtx cotmc_seg7_vertex_070052D8[] = {\n    {{{ -4094,     20,    470}, 0, {  5372,   2012}, {0xf7, 0x4a, 0x9a, 0xff}}},\n    {{{ -4467,    717,    402}, 0, {  6886,      0}, {0x2a, 0xd7, 0x90, 0xff}}},\n    {{{ -4094,    717,    470}, 0, {  5372,      0}, {0xda, 0xb6, 0xa1, 0xff}}},\n    {{{ -2986,    717,    295}, 0, {  1112,      0}, {0x0e, 0x96, 0xbc, 0xff}}},\n    {{{ -2986,     20,    295}, 0, {  1112,   2012}, {0x10, 0x63, 0xb4, 0xff}}},\n    {{{ -3814,    717,    259}, 0, {  4400,      0}, {0xee, 0xb7, 0x9a, 0xff}}},\n    {{{ -3814,     20,    259}, 0, {  4400,   2012}, {0xd6, 0x49, 0xa2, 0xff}}},\n    {{{ -4467,     20,    402}, 0, {  6886,   2012}, {0x36, 0x48, 0xa7, 0xff}}},\n    {{{ -1380,    717,    927}, 0, { -5612,      0}, {0x19, 0xa6, 0xab, 0xff}}},\n    {{{ -1380,     20,    927}, 0, { -5612,   2012}, {0x11, 0x5a, 0xa9, 0xff}}},\n    {{{ -4746,    717,    151}, 0, {  8144,      0}, {0x30, 0x8d, 0xeb, 0xff}}},\n    {{{ -4746,     20,    151}, 0, {  8144,   2012}, {0x4e, 0x5d, 0xde, 0xff}}},\n    {{{ -1249,    717,    403}, 0, {  5036,      0}, {0xee, 0xa6, 0x57, 0xff}}},\n    {{{  -666,     20,    478}, 0, {  7384,   2012}, {0x0e, 0x5d, 0x54, 0xff}}},\n    {{{  -666,    717,    478}, 0, {  7384,      0}, {0x28, 0xa3, 0x4b, 0xff}}},\n};\n\n// 0x070053C8 - 0x070054B8\nstatic const Vtx cotmc_seg7_vertex_070053C8[] = {\n    {{{   749,    256,  -3495}, 0, {   862,   2012}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{   749,    684,  -3495}, 0, {   862,      0}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{   749,    684,  -3413}, 0, {   352,      0}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{ -1249,    717,    403}, 0, {  5036,      0}, {0xee, 0xa6, 0x57, 0xff}}},\n    {{{ -1249,     20,    403}, 0, {  5036,   2012}, {0xe7, 0x5a, 0x55, 0xff}}},\n    {{{  -666,     20,    478}, 0, {  7384,   2012}, {0x0e, 0x5d, 0x54, 0xff}}},\n    {{{ -4746,    717,    151}, 0, {     0,      0}, {0x30, 0x8d, 0xeb, 0xff}}},\n    {{{ -4746,     20,   -360}, 0, {  2012,   2012}, {0x71, 0x2c, 0x23, 0xff}}},\n    {{{ -4746,    717,   -360}, 0, {  2012,      0}, {0x5f, 0xd4, 0x47, 0xff}}},\n    {{{ -4746,     20,    151}, 0, {     0,   2012}, {0x4e, 0x5d, 0xde, 0xff}}},\n    {{{ -1380,     20,    927}, 0, { -5612,   2012}, {0x11, 0x5a, 0xa9, 0xff}}},\n    {{{ -1380,    717,    927}, 0, { -5612,      0}, {0x19, 0xa6, 0xab, 0xff}}},\n    {{{  -666,    717,   1002}, 0, { -8476,      0}, {0x2a, 0xb1, 0xa7, 0xff}}},\n    {{{  -666,     20,   1002}, 0, { -8476,   2012}, {0x1d, 0x6b, 0xc4, 0xff}}},\n    {{{   749,    256,  -3413}, 0, {   352,   2012}, {0x38, 0x00, 0x71, 0xff}}},\n};\n\n// 0x070054B8 - 0x070055B8\nstatic const Vtx cotmc_seg7_vertex_070054B8[] = {\n    {{{   749,    256,  -3864}, 0, {   862,   2012}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{   749,    684,  -3782}, 0, {   352,      0}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{   749,    256,  -3782}, 0, {   352,   2012}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{   749,    256,  -3413}, 0, {   352,   2012}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{   667,    684,  -3413}, 0, {  -158,      0}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{   667,    256,  -3413}, 0, {  -158,   2012}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{   749,    684,  -3413}, 0, {   352,      0}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{   667,    256,  -3413}, 0, {   862,   2012}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{   667,    684,  -3495}, 0, {   352,      0}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{   667,    256,  -3495}, 0, {   352,   2012}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{   667,    684,  -3413}, 0, {   862,      0}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{   749,    684,  -3495}, 0, {  -158,      0}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{   749,    256,  -3495}, 0, {  -158,   2012}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{   667,    256,  -3864}, 0, {   352,   2012}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{   749,    684,  -3864}, 0, {  -158,      0}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{   749,    256,  -3864}, 0, {  -158,   2012}, {0x71, 0x00, 0xc8, 0xff}}},\n};\n\n// 0x070055B8 - 0x07005668\nstatic const Vtx cotmc_seg7_vertex_070055B8[] = {\n    {{{   749,    256,  -3864}, 0, {   862,   2012}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{   749,    684,  -3864}, 0, {   862,      0}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{   749,    684,  -3782}, 0, {   352,      0}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{   749,    256,  -3782}, 0, {   352,   2012}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{   667,    684,  -3782}, 0, {  -158,      0}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{   667,    256,  -3782}, 0, {  -158,   2012}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{   667,    256,  -3782}, 0, {   862,   2012}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{   667,    684,  -3782}, 0, {   862,      0}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{   667,    684,  -3864}, 0, {   352,      0}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{   667,    256,  -3864}, 0, {   352,   2012}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{   749,    684,  -3864}, 0, {  -158,      0}, {0x38, 0x00, 0x8f, 0xff}}},\n};\n\n// 0x07005668 - 0x07005758\nstatic const Vtx cotmc_seg7_vertex_07005668[] = {\n    {{{   215,      0,   -681}, 0, {   456,      0}, {0xbc, 0x67, 0x1c, 0xff}}},\n    {{{    96,   -153,   -567}, 0, {   556,    519}, {0xd5, 0x75, 0x16, 0xff}}},\n    {{{   357,      0,   -426}, 0, {  1180,      0}, {0xcd, 0x68, 0x32, 0xff}}},\n    {{{   564,   -153,  -2596}, 0, {   604,    493}, {0xb3, 0x62, 0xeb, 0xff}}},\n    {{{    19,   -153,  -2029}, 0, {  2208,    431}, {0xdb, 0x77, 0xee, 0xff}}},\n    {{{    93,      0,  -1869}, 0, {  2316,      0}, {0xb6, 0x61, 0xe0, 0xff}}},\n    {{{   564,      0,  -2309}, 0, {  1004,      0}, {0x8e, 0x31, 0xec, 0xff}}},\n    {{{    19,   -153,  -2029}, 0, {  -992,    377}, {0xdb, 0x77, 0xee, 0xff}}},\n    {{{  -122,   -153,  -1203}, 0, {  1080,    552}, {0xce, 0x74, 0x04, 0xff}}},\n    {{{    93,      0,  -1869}, 0, {  -604,      0}, {0xb6, 0x61, 0xe0, 0xff}}},\n    {{{    53,      0,  -1175}, 0, {  1128,      0}, {0xb3, 0x64, 0x08, 0xff}}},\n    {{{   215,      0,   -681}, 0, {  1480,      0}, {0xbc, 0x67, 0x1c, 0xff}}},\n    {{{    53,      0,  -1175}, 0, {   180,      0}, {0xb3, 0x64, 0x08, 0xff}}},\n    {{{  -122,   -153,  -1203}, 0, {   -24,    517}, {0xce, 0x74, 0x04, 0xff}}},\n    {{{    96,   -153,   -567}, 0, {  1656,    499}, {0xd5, 0x75, 0x16, 0xff}}},\n};\n\n// 0x07005758 - 0x07005848\nstatic const Vtx cotmc_seg7_vertex_07005758[] = {\n    {{{     9,   -153,   -651}, 0, {  -156,    569}, {0x18, 0x7b, 0xee, 0xff}}},\n    {{{  -563,      0,   -413}, 0, {   936,      0}, {0x50, 0x5e, 0xe7, 0xff}}},\n    {{{  -134,      0,   -308}, 0, {     0,      0}, {0x1f, 0x78, 0xea, 0xff}}},\n    {{{    96,   -153,   -567}, 0, {   556,    519}, {0xd5, 0x75, 0x16, 0xff}}},\n    {{{   308,   -153,   -254}, 0, {  1496,    462}, {0xe8, 0x72, 0x30, 0xff}}},\n    {{{   357,      0,   -426}, 0, {  1180,      0}, {0xcd, 0x68, 0x32, 0xff}}},\n    {{{   357,      0,   -426}, 0, {  1284,    -45}, {0xcd, 0x68, 0x32, 0xff}}},\n    {{{   308,   -153,   -254}, 0, {  1228,    539}, {0xe8, 0x72, 0x30, 0xff}}},\n    {{{   564,      0,   -376}, 0, {  1816,    -10}, {0xad, 0x4d, 0x37, 0xff}}},\n    {{{   564,   -153,   -217}, 0, {  1872,    539}, {0xb4, 0x62, 0x19, 0xff}}},\n    {{{   110,      0,    597}, 0, {     0,      0}, {0x35, 0x73, 0x04, 0xff}}},\n    {{{   333,   -153,    593}, 0, {  -196,    497}, {0x1b, 0x7b, 0x06, 0xff}}},\n    {{{     9,   -153,   -651}, 0, {  3812,    516}, {0x18, 0x7b, 0xee, 0xff}}},\n    {{{  -134,      0,   -308}, 0, {  2896,      0}, {0x1f, 0x78, 0xea, 0xff}}},\n    {{{  -563,   -153,   -849}, 0, {  1164,    648}, {0x42, 0x6b, 0xf7, 0xff}}},\n};\n\n// 0x07005848 - 0x070058C8\nstatic const Vtx cotmc_seg7_vertex_07005848[] = {\n    {{{  -173,      0,   1140}, 0, {     0,      0}, {0x28, 0x72, 0x25, 0xff}}},\n    {{{   333,   -153,    593}, 0, {  2840,    465}, {0x1b, 0x7b, 0x06, 0xff}}},\n    {{{   110,      0,    597}, 0, {  2412,      0}, {0x35, 0x73, 0x04, 0xff}}},\n    {{{   -27,   -153,   1317}, 0, {  -384,    489}, {0x17, 0x79, 0x1b, 0xff}}},\n    {{{  -563,      0,   1340}, 0, {   672,      0}, {0x6b, 0x3d, 0x1c, 0xff}}},\n    {{{   -27,   -153,   1317}, 0, {  2620,    510}, {0x17, 0x79, 0x1b, 0xff}}},\n    {{{  -173,      0,   1140}, 0, {  2424,      0}, {0x28, 0x72, 0x25, 0xff}}},\n    {{{  -563,   -153,   1617}, 0, {   168,    545}, {0x46, 0x66, 0x19, 0xff}}},\n};\n\n// 0x070058C8 - 0x070059A8\nstatic const Vtx cotmc_seg7_vertex_070058C8[] = {\n    {{{  -262,     72,  -3526}, 0, {   460,    479}, {0x5f, 0xde, 0xb4, 0xff}}},\n    {{{  -286,    123,  -3582}, 0, {   648,      0}, {0x62, 0x2d, 0xbf, 0xff}}},\n    {{{  -262,    123,  -3526}, 0, {   460,      0}, {0x17, 0x17, 0x86, 0xff}}},\n    {{{  -286,     72,  -3582}, 0, {   648,    479}, {0x5d, 0xc7, 0xc1, 0xff}}},\n    {{{  -563,     72,  -3860}, 0, {  1956,    479}, {0x6f, 0xce, 0xdd, 0xff}}},\n    {{{  -563,    123,  -3860}, 0, {  1956,      0}, {0x6f, 0x37, 0xe6, 0xff}}},\n    {{{   -35,    123,  -2711}, 0, {     0,      0}, {0x6d, 0x3c, 0xeb, 0xff}}},\n    {{{   -35,     72,  -2711}, 0, {     0,    479}, {0x68, 0xb9, 0xff, 0xff}}},\n    {{{  -227,     72,  -3275}, 0, {  1948,    479}, {0x4c, 0x9b, 0x02, 0xff}}},\n    {{{  -227,    123,  -3275}, 0, {  1948,      0}, {0x59, 0x1f, 0x54, 0xff}}},\n    {{{  -157,    123,  -1841}, 0, {     0,      0}, {0x5d, 0x4a, 0x2c, 0xff}}},\n    {{{   -35,     72,  -2711}, 0, {  2892,    479}, {0x68, 0xb9, 0xff, 0xff}}},\n    {{{   -35,    123,  -2711}, 0, {  2892,      0}, {0x6d, 0x3c, 0xeb, 0xff}}},\n    {{{  -157,     72,  -1841}, 0, {     0,    479}, {0x53, 0xd4, 0x54, 0xff}}},\n};\n\n// 0x070059A8 - 0x07005A98\nstatic const Vtx cotmc_seg7_vertex_070059A8[] = {\n    {{{   156,    280,  -3599}, 0, {   952,      0}, {0xdf, 0x38, 0x94, 0xff}}},\n    {{{   156,    240,  -3599}, 0, {   952,    461}, {0xe6, 0x98, 0xbe, 0xff}}},\n    {{{    36,    236,  -3565}, 0, {  2012,    379}, {0xff, 0xa8, 0xa5, 0xff}}},\n    {{{  -563,    123,  -1632}, 0, {     0,      0}, {0x5d, 0x49, 0x2b, 0xff}}},\n    {{{  -157,     72,  -1841}, 0, {  2248,    479}, {0x53, 0xd4, 0x54, 0xff}}},\n    {{{  -157,    123,  -1841}, 0, {  2248,      0}, {0x5d, 0x4a, 0x2c, 0xff}}},\n    {{{  -563,     72,  -1632}, 0, {     0,    479}, {0x67, 0xbb, 0x14, 0xff}}},\n    {{{   307,    209,  -3653}, 0, {  1668,    595}, {0xcf, 0x90, 0xe0, 0xff}}},\n    {{{   156,    280,  -3599}, 0, {  2584,      0}, {0xdf, 0x38, 0x94, 0xff}}},\n    {{{   307,    259,  -3653}, 0, {  1668,      0}, {0xc8, 0x6f, 0xea, 0xff}}},\n    {{{   156,    240,  -3599}, 0, {  2584,    461}, {0xe6, 0x98, 0xbe, 0xff}}},\n    {{{    36,    269,  -3565}, 0, {  1344,      0}, {0xe1, 0x57, 0xaa, 0xff}}},\n    {{{   -84,    195,  -3544}, 0, {  2236,    461}, {0x17, 0xbe, 0x97, 0xff}}},\n    {{{   -84,    234,  -3544}, 0, {  2236,      0}, {0xd8, 0x54, 0xab, 0xff}}},\n    {{{    36,    236,  -3565}, 0, {  1344,    379}, {0xff, 0xa8, 0xa5, 0xff}}},\n};\n\n// 0x07005A98 - 0x07005B88\nstatic const Vtx cotmc_seg7_vertex_07005A98[] = {\n    {{{   -64,    234,  -3354}, 0, {     0,      0}, {0xfd, 0x56, 0x5c, 0xff}}},\n    {{{    50,    236,  -3387}, 0, {   856,    379}, {0x21, 0xa9, 0x55, 0xff}}},\n    {{{    50,    269,  -3387}, 0, {   856,      0}, {0xff, 0x58, 0x5a, 0xff}}},\n    {{{   156,    280,  -3599}, 0, {   952,      0}, {0xdf, 0x38, 0x94, 0xff}}},\n    {{{    36,    236,  -3565}, 0, {  2012,    379}, {0xff, 0xa8, 0xa5, 0xff}}},\n    {{{    36,    269,  -3565}, 0, {  2012,      0}, {0xe1, 0x57, 0xaa, 0xff}}},\n    {{{   166,    280,  -3407}, 0, {     0,      0}, {0x08, 0x65, 0x4c, 0xff}}},\n    {{{   166,    240,  -3407}, 0, {     0,    461}, {0x00, 0xa7, 0x5a, 0xff}}},\n    {{{   341,    207,  -3413}, 0, {  1148,    578}, {0xe0, 0xb7, 0x62, 0xff}}},\n    {{{   341,    256,  -3413}, 0, {  1148,      0}, {0xcb, 0x4b, 0x56, 0xff}}},\n    {{{    50,    269,  -3387}, 0, {  1840,      0}, {0xff, 0x58, 0x5a, 0xff}}},\n    {{{   166,    240,  -3407}, 0, {  2684,    461}, {0x00, 0xa7, 0x5a, 0xff}}},\n    {{{   166,    280,  -3407}, 0, {  2684,      0}, {0x08, 0x65, 0x4c, 0xff}}},\n    {{{    50,    236,  -3387}, 0, {  1840,    379}, {0x21, 0xa9, 0x55, 0xff}}},\n    {{{   -64,    195,  -3354}, 0, {     0,    461}, {0x43, 0xbf, 0x55, 0xff}}},\n};\n\n// 0x07005B88 - 0x07005C48\nstatic const Vtx cotmc_seg7_vertex_07005B88[] = {\n    {{{  -292,    140,  -3520}, 0, {  2900,      0}, {0x00, 0x7a, 0xde, 0xff}}},\n    {{{  -262,    154,  -3526}, 0, {  2644,      0}, {0xc9, 0x67, 0xcf, 0xff}}},\n    {{{  -262,    123,  -3526}, 0, {  2644,    357}, {0x17, 0x17, 0x86, 0xff}}},\n    {{{   -84,    234,  -3544}, 0, {  1144,      0}, {0xd8, 0x54, 0xab, 0xff}}},\n    {{{  -257,    140,  -3270}, 0, {   516,    -25}, {0xfd, 0x7d, 0x15, 0xff}}},\n    {{{  -227,    123,  -3275}, 0, {   724,    357}, {0x59, 0x1f, 0x54, 0xff}}},\n    {{{  -227,    154,  -3275}, 0, {   724,      0}, {0x07, 0x43, 0x6b, 0xff}}},\n    {{{   -64,    195,  -3354}, 0, {  2012,    461}, {0x43, 0xbf, 0x55, 0xff}}},\n    {{{   -64,    234,  -3354}, 0, {  2012,      0}, {0xfd, 0x56, 0x5c, 0xff}}},\n    {{{  -227,     72,  -3275}, 0, {   724,    995}, {0x4c, 0x9b, 0x02, 0xff}}},\n    {{{   -84,    195,  -3544}, 0, {  1144,    461}, {0x17, 0xbe, 0x97, 0xff}}},\n    {{{  -262,     72,  -3526}, 0, {  2644,    995}, {0x5f, 0xde, 0xb4, 0xff}}},\n};\n\n// 0x07005C48 - 0x07005D08\nstatic const Vtx cotmc_seg7_vertex_07005C48[] = {\n    {{{   255,    190,  -4466}, 0, {  1896,    478}, {0x8f, 0xc9, 0xf0, 0xff}}},\n    {{{   255,    256,  -4466}, 0, {  1896,      0}, {0xd4, 0x76, 0xfa, 0xff}}},\n    {{{   388,    256,  -4829}, 0, {     0,      0}, {0xa5, 0x47, 0xcd, 0xff}}},\n    {{{   388,    190,  -4829}, 0, {     0,    478}, {0xac, 0xbe, 0xbc, 0xff}}},\n    {{{   537,    256,  -4960}, 0, {  -900,      0}, {0xd5, 0x4a, 0xa4, 0xff}}},\n    {{{   537,    190,  -4960}, 0, {  -900,    478}, {0xf0, 0xbc, 0x97, 0xff}}},\n    {{{   628,    256,  -4947}, 0, {   300,      0}, {0x2d, 0x4b, 0xa5, 0xff}}},\n    {{{   537,    190,  -4960}, 0, {   712,    478}, {0xf0, 0xbc, 0x97, 0xff}}},\n    {{{   537,    256,  -4960}, 0, {   712,      0}, {0xd5, 0x4a, 0xa4, 0xff}}},\n    {{{   661,    256,  -4877}, 0, {     0,      0}, {0xf4, 0x27, 0x89, 0xff}}},\n    {{{   628,    190,  -4947}, 0, {   300,    478}, {0x4c, 0xbb, 0xb7, 0xff}}},\n    {{{   661,    190,  -4877}, 0, {     0,    478}, {0xd5, 0xd7, 0x90, 0xff}}},\n};\n\n// 0x07005D08 - 0x07005DA8\nstatic const Vtx cotmc_seg7_vertex_07005D08[] = {\n    {{{   564,    160,  -3311}, 0, {  2828,    928}, {0x97, 0xc1, 0x1c, 0xff}}},\n    {{{   564,    256,  -3278}, 0, {  3000,      0}, {0xb0, 0x5e, 0x1a, 0xff}}},\n    {{{   403,    208,  -3337}, 0, {  2012,    449}, {0xbe, 0xc2, 0x58, 0xff}}},\n    {{{   403,    256,  -3337}, 0, {  2012,      0}, {0xda, 0x6b, 0x38, 0xff}}},\n    {{{   341,    256,  -3413}, 0, {  1356,      0}, {0xcb, 0x4b, 0x56, 0xff}}},\n    {{{   341,    207,  -3413}, 0, {  1356,    457}, {0xe0, 0xb7, 0x62, 0xff}}},\n    {{{   307,    259,  -3653}, 0, {  5616,    -55}, {0xc8, 0x6f, 0xea, 0xff}}},\n    {{{   255,    256,  -4466}, 0, {  1896,      0}, {0xd4, 0x76, 0xfa, 0xff}}},\n    {{{   255,    190,  -4466}, 0, {  1896,    478}, {0x8f, 0xc9, 0xf0, 0xff}}},\n    {{{   307,    209,  -3653}, 0, {  5616,    331}, {0xcf, 0x90, 0xe0, 0xff}}},\n};\n\n// 0x07005DA8 - 0x07005DE8\nstatic const Vtx cotmc_seg7_vertex_07005DA8[] = {\n    {{{  -563,    717,   1105}, 0, { -4116,      0}, {0x4f, 0xa3, 0xe0, 0xff}}},\n    {{{  -666,    717,    478}, 0, { -2644,      0}, {0x28, 0xa3, 0x4b, 0xff}}},\n    {{{  -563,    717,    376}, 0, { -2404,      0}, {0x7a, 0xe6, 0x12, 0xff}}},\n    {{{  -666,    717,   1002}, 0, { -3876,      0}, {0x2a, 0xb1, 0xa7, 0xff}}},\n};\n\n// 0x07005DE8 - 0x07005ED8\nstatic const Vtx cotmc_seg7_vertex_07005DE8[] = {\n    {{{   564,      0,   2970}, 0, { 10616,    810}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   564,      0,   3379}, 0, { 11580,    810}, {0x85, 0x00, 0x1d, 0xff}}},\n    {{{   564,    717,   3379}, 0, { 11580,      0}, {0x86, 0xe6, 0x15, 0xff}}},\n    {{{   564,      0,   -376}, 0, {  2756,    810}, {0xad, 0x4d, 0x37, 0xff}}},\n    {{{   564,    123,   -608}, 0, {  2216,    666}, {0xa9, 0x5a, 0x0f, 0xff}}},\n    {{{   564,    686,  -3278}, 0, { -4052,      4}, {0x89, 0xf5, 0xd6, 0xff}}},\n    {{{   564,    717,  -3309}, 0, { -4124,      0}, {0x9e, 0xb7, 0xe1, 0xff}}},\n    {{{   564,    123,  -1958}, 0, {  -952,    666}, {0x9e, 0x4f, 0xf3, 0xff}}},\n    {{{   615,    256,  -3311}, 0, { -4128,    510}, {0xdf, 0x5b, 0xaf, 0xff}}},\n    {{{   615,    684,  -3311}, 0, { -4128,      6}, {0xce, 0xb0, 0xac, 0xff}}},\n    {{{   564,    256,  -3278}, 0, { -4052,    510}, {0xb0, 0x5e, 0x1a, 0xff}}},\n    {{{   564,      0,  -2309}, 0, { -1776,    810}, {0x8e, 0x31, 0xec, 0xff}}},\n    {{{   564,    160,  -3311}, 0, { -4128,    622}, {0x97, 0xc1, 0x1c, 0xff}}},\n    {{{   564,      0,  -4781}, 0, { -7580,    810}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{   564,    162,  -4781}, 0, { -7580,    620}, {0xd8, 0x8a, 0xea, 0xff}}},\n};\n\n// 0x07005ED8 - 0x07005FD8\nstatic const Vtx cotmc_seg7_vertex_07005ED8[] = {\n    {{{   615,    684,  -3311}, 0, { -4128,      6}, {0xce, 0xb0, 0xac, 0xff}}},\n    {{{   564,    717,  -3968}, 0, { -5672,      0}, {0xa5, 0xac, 0x17, 0xff}}},\n    {{{   615,    684,  -3966}, 0, { -5668,      6}, {0xce, 0xac, 0x50, 0xff}}},\n    {{{   564,    717,  -3309}, 0, { -4124,      0}, {0x9e, 0xb7, 0xe1, 0xff}}},\n    {{{   564,    686,  -3999}, 0, { -5744,      4}, {0x91, 0xe9, 0x37, 0xff}}},\n    {{{   564,    256,  -3999}, 0, { -5744,    510}, {0xac, 0x52, 0x2e, 0xff}}},\n    {{{   615,    256,  -3966}, 0, { -5668,    510}, {0xf0, 0x5b, 0x56, 0xff}}},\n    {{{   564,    717,  -4781}, 0, { -7580,      0}, {0x89, 0x00, 0xd7, 0xff}}},\n    {{{   564,    256,  -4781}, 0, { -7580,    510}, {0xcb, 0x6e, 0xe1, 0xff}}},\n    {{{  -563,      0,   1340}, 0, { -4668,    810}, {0x6b, 0x3d, 0x1c, 0xff}}},\n    {{{  -563,    717,   3379}, 0, { -9456,      0}, {0x7a, 0xe6, 0x15, 0xff}}},\n    {{{  -563,      0,   2970}, 0, { -8496,    810}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   564,    686,  -3278}, 0, { -4052,      4}, {0x89, 0xf5, 0xd6, 0xff}}},\n    {{{  -563,     20,   1263}, 0, { -4488,    786}, {0x4d, 0x63, 0x11, 0xff}}},\n    {{{  -563,     20,   1105}, 0, { -4116,    786}, {0x4f, 0x5d, 0xe0, 0xff}}},\n    {{{  -563,    717,   1105}, 0, { -4116,      0}, {0x4f, 0xa3, 0xe0, 0xff}}},\n};\n\n// 0x07005FD8 - 0x070060C8\nstatic const Vtx cotmc_seg7_vertex_07005FD8[] = {\n    {{{  -563,    717,   3379}, 0, { -9456,      0}, {0x7a, 0xe6, 0x15, 0xff}}},\n    {{{  -563,      0,   3379}, 0, { -9456,    810}, {0x7b, 0x00, 0x1d, 0xff}}},\n    {{{  -563,      0,   2970}, 0, { -8496,    810}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -563,      0,   1340}, 0, { -4668,    810}, {0x6b, 0x3d, 0x1c, 0xff}}},\n    {{{  -563,     20,   1263}, 0, { -4488,    786}, {0x4d, 0x63, 0x11, 0xff}}},\n    {{{  -563,    717,    376}, 0, { -2404,      0}, {0x7a, 0xe6, 0x12, 0xff}}},\n    {{{  -563,     20,    376}, 0, { -2404,    786}, {0x35, 0x6e, 0x1f, 0xff}}},\n    {{{  -563,     20,   -291}, 0, {  -836,    786}, {0x71, 0x38, 0xfc, 0xff}}},\n    {{{  -563,    123,  -1632}, 0, {  2308,    666}, {0x5d, 0x49, 0x2b, 0xff}}},\n    {{{  -563,    123,  -3860}, 0, {  7540,    666}, {0x6f, 0x37, 0xe6, 0xff}}},\n    {{{  -563,    717,  -4781}, 0, {  9704,      0}, {0x77, 0x00, 0xd7, 0xff}}},\n    {{{  -563,     72,  -1632}, 0, {  2308,    726}, {0x67, 0xbb, 0x14, 0xff}}},\n    {{{  -563,     72,  -3860}, 0, {  7540,    726}, {0x6f, 0xce, 0xdd, 0xff}}},\n    {{{  -563,      0,   -413}, 0, {  -548,    810}, {0x50, 0x5e, 0xe7, 0xff}}},\n    {{{  -563,      0,  -4781}, 0, {  9704,    810}, {0x79, 0x00, 0xdc, 0xff}}},\n};\n\n// 0x070060C8 - 0x070061B8\nstatic const Vtx cotmc_seg7_vertex_070060C8[] = {\n    {{{  -563,   -153,   3072}, 0, { -8736,    990}, {0x4c, 0x64, 0xf5, 0xff}}},\n    {{{  -563,   -153,   1617}, 0, { -5320,    990}, {0x46, 0x66, 0x19, 0xff}}},\n    {{{  -563,      0,   1340}, 0, { -4668,    810}, {0x6b, 0x3d, 0x1c, 0xff}}},\n    {{{   564,      0,   2970}, 0, { 10616,    810}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   564,   -153,   3072}, 0, { 10856,    990}, {0xc7, 0x71, 0xfa, 0xff}}},\n    {{{   564,    -80,   3379}, 0, { 11580,    904}, {0xae, 0x52, 0x31, 0xff}}},\n    {{{   564,      0,   -376}, 0, {  2756,    810}, {0xad, 0x4d, 0x37, 0xff}}},\n    {{{   564,   -153,   -217}, 0, {  3132,    990}, {0xb4, 0x62, 0x19, 0xff}}},\n    {{{   564,      0,   3379}, 0, { 11580,    810}, {0x85, 0x00, 0x1d, 0xff}}},\n    {{{   667,   -460,   3584}, 0, { 12060,   1348}, {0xa0, 0x11, 0x50, 0xff}}},\n    {{{  -563,    -80,   3379}, 0, { -9456,    904}, {0x6b, 0x35, 0x28, 0xff}}},\n    {{{  -563,      0,   2970}, 0, { -8496,    810}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -563,      0,   3379}, 0, { -9456,    810}, {0x7b, 0x00, 0x1d, 0xff}}},\n    {{{  -666,   -460,   3584}, 0, { -9940,   1348}, {0x50, 0x1c, 0x5d, 0xff}}},\n    {{{  -563,    717,   3379}, 0, { -9456,      0}, {0x7a, 0xe6, 0x15, 0xff}}},\n};\n\n// 0x070061B8 - 0x070062A8\nstatic const Vtx cotmc_seg7_vertex_070061B8[] = {\n    {{{   564,   -153,  -2596}, 0, { -2452,    990}, {0xb3, 0x62, 0xeb, 0xff}}},\n    {{{   564,      0,  -2309}, 0, { -1776,    810}, {0x8e, 0x31, 0xec, 0xff}}},\n    {{{   564,      0,  -4781}, 0, { -7580,    810}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{   564,   -153,  -4781}, 0, { -7580,    990}, {0xbc, 0x66, 0xe4, 0xff}}},\n    {{{  -563,   -153,   -849}, 0, {   468,    990}, {0x42, 0x6b, 0xf7, 0xff}}},\n    {{{  -563,      0,  -4781}, 0, {  9704,    810}, {0x79, 0x00, 0xdc, 0xff}}},\n    {{{  -563,      0,   -413}, 0, {  -548,    810}, {0x50, 0x5e, 0xe7, 0xff}}},\n    {{{  -563,   -153,  -4781}, 0, {  9704,    990}, {0x3a, 0x6c, 0xe2, 0xff}}},\n    {{{   564,    717,   3379}, 0, { 11580,      0}, {0x86, 0xe6, 0x15, 0xff}}},\n    {{{   564,      0,   3379}, 0, { 11580,    810}, {0x85, 0x00, 0x1d, 0xff}}},\n    {{{   667,   -460,   3584}, 0, { 12060,   1348}, {0xa0, 0x11, 0x50, 0xff}}},\n    {{{   667,    819,   3584}, 0, { 12060,   -152}, {0xa2, 0xd2, 0x46, 0xff}}},\n    {{{  -666,   -460,   3584}, 0, { -9940,   1348}, {0x50, 0x1c, 0x5d, 0xff}}},\n    {{{  -563,    717,   3379}, 0, { -9456,      0}, {0x7a, 0xe6, 0x15, 0xff}}},\n    {{{  -666,    819,   3584}, 0, { -9940,   -152}, {0x5e, 0xd2, 0x46, 0xff}}},\n};\n\n// 0x070062A8 - 0x07006358\nstatic const Vtx cotmc_seg7_vertex_070062A8[] = {\n    {{{  -666,   -460,   3584}, 0, { -9940,   1348}, {0x50, 0x1c, 0x5d, 0xff}}},\n    {{{  -563,    -80,   3379}, 0, { -9456,    904}, {0x6b, 0x35, 0x28, 0xff}}},\n    {{{  -563,      0,   3379}, 0, { -9456,    810}, {0x7b, 0x00, 0x1d, 0xff}}},\n    {{{  -666,    717,    478}, 0, { -2644,      0}, {0x28, 0xa3, 0x4b, 0xff}}},\n    {{{  -563,     20,    376}, 0, { -2404,    786}, {0x35, 0x6e, 0x1f, 0xff}}},\n    {{{  -563,    717,    376}, 0, { -2404,      0}, {0x7a, 0xe6, 0x12, 0xff}}},\n    {{{  -666,     20,    478}, 0, { -2644,    786}, {0x0e, 0x5d, 0x54, 0xff}}},\n    {{{  -563,     20,   1105}, 0, { -4116,    786}, {0x4f, 0x5d, 0xe0, 0xff}}},\n    {{{  -666,     20,   1002}, 0, { -3876,    786}, {0x1d, 0x6b, 0xc4, 0xff}}},\n    {{{  -666,    717,   1002}, 0, { -3876,      0}, {0x2a, 0xb1, 0xa7, 0xff}}},\n    {{{  -563,    717,   1105}, 0, { -4116,      0}, {0x4f, 0xa3, 0xe0, 0xff}}},\n};\n\n// 0x07006358 - 0x07006438\nstatic const Vtx cotmc_seg7_vertex_07006358[] = {\n    {{{ -4746,    717,    151}, 0, {     0,      0}, {0x30, 0x8d, 0xeb, 0xff}}},\n    {{{ -4047,    717,   -513}, 0, {     0,      0}, {0xde, 0xb8, 0x62, 0xff}}},\n    {{{ -3755,    717,   -261}, 0, {     0,      0}, {0xcf, 0xb8, 0x5b, 0xff}}},\n    {{{ -4443,    717,   -576}, 0, {     0,      0}, {0x13, 0xa3, 0x53, 0xff}}},\n    {{{ -4746,    717,   -360}, 0, {     0,      0}, {0x5f, 0xd4, 0x47, 0xff}}},\n    {{{ -2855,    717,   -228}, 0, {     0,      0}, {0xee, 0xa6, 0x57, 0xff}}},\n    {{{ -2986,    717,    295}, 0, {     0,      0}, {0x0e, 0x96, 0xbc, 0xff}}},\n    {{{ -3814,    717,    259}, 0, {     0,      0}, {0xee, 0xb7, 0x9a, 0xff}}},\n    {{{ -4094,    717,    470}, 0, {     0,      0}, {0xda, 0xb6, 0xa1, 0xff}}},\n    {{{ -4467,    717,    402}, 0, {     0,      0}, {0x2a, 0xd7, 0x90, 0xff}}},\n    {{{ -1380,    717,    927}, 0, {     0,      0}, {0x19, 0xa6, 0xab, 0xff}}},\n    {{{ -1249,    717,    403}, 0, {     0,      0}, {0xee, 0xa6, 0x57, 0xff}}},\n    {{{  -666,    717,    478}, 0, {     0,      0}, {0x28, 0xa3, 0x4b, 0xff}}},\n    {{{  -666,    717,   1002}, 0, {     0,      0}, {0x2a, 0xb1, 0xa7, 0xff}}},\n};\n\n// 0x07006438 - 0x07006538\nstatic const Vtx cotmc_seg7_vertex_07006438[] = {\n    {{{     0,   1107,   3584}, 0, {     0,      0}, {0x00, 0x90, 0x3b, 0xff}}},\n    {{{  -402,   1009,   3584}, 0, {     0,      0}, {0x36, 0xa3, 0x41, 0xff}}},\n    {{{  -351,    906,   3379}, 0, {     0,      0}, {0x36, 0x90, 0x14, 0xff}}},\n    {{{  -563,    717,   3379}, 0, {     0,      0}, {0x7a, 0xe6, 0x15, 0xff}}},\n    {{{  -666,    819,   3584}, 0, {     0,      0}, {0x5e, 0xd2, 0x46, 0xff}}},\n    {{{  -563,   4198,  -4781}, 0, {     0,      0}, {0x56, 0xbe, 0xc0, 0xff}}},\n    {{{  -563,    717,  -4781}, 0, {     0,      0}, {0x77, 0x00, 0xd7, 0xff}}},\n    {{{     0,   1005,   3379}, 0, {     0,      0}, {0x00, 0x82, 0xfa, 0xff}}},\n    {{{   397,   1011,   3584}, 0, {     0,      0}, {0xca, 0xa2, 0x41, 0xff}}},\n    {{{   346,    908,   3379}, 0, {     0,      0}, {0xca, 0x8f, 0x14, 0xff}}},\n    {{{   564,   4198,  -4781}, 0, {     0,      0}, {0xaf, 0xb0, 0xc9, 0xff}}},\n    {{{   564,    717,   3379}, 0, {     0,      0}, {0x86, 0xe6, 0x15, 0xff}}},\n    {{{   667,    819,   3584}, 0, {     0,      0}, {0xa2, 0xd2, 0x46, 0xff}}},\n    {{{  1362,   4198,  -6707}, 0, {     0,      0}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{  1362,    717,  -5579}, 0, {     0,      0}, {0x8e, 0x00, 0xc9, 0xff}}},\n    {{{  1362,   4198,  -5579}, 0, {     0,      0}, {0x93, 0x00, 0xc0, 0xff}}},\n};\n\n// 0x07006538 - 0x07006638\nstatic const Vtx cotmc_seg7_vertex_07006538[] = {\n    {{{   564,   4198,  -4781}, 0, {     0,      0}, {0xaf, 0xb0, 0xc9, 0xff}}},\n    {{{   564,    717,  -4781}, 0, {     0,      0}, {0x89, 0x00, 0xd7, 0xff}}},\n    {{{   564,    717,   3379}, 0, {     0,      0}, {0x86, 0xe6, 0x15, 0xff}}},\n    {{{  1076,    684,  -3311}, 0, {     0,      0}, {0xcd, 0x99, 0xcd, 0xff}}},\n    {{{   615,    684,  -3966}, 0, {     0,      0}, {0xce, 0xac, 0x50, 0xff}}},\n    {{{  1076,    684,  -3966}, 0, {     0,      0}, {0xac, 0xd6, 0x54, 0xff}}},\n    {{{   615,    684,  -3311}, 0, {     0,      0}, {0xce, 0xb0, 0xac, 0xff}}},\n    {{{  1362,   4198,  -5579}, 0, {     0,      0}, {0x93, 0x00, 0xc0, 0xff}}},\n    {{{  1362,    717,  -5579}, 0, {     0,      0}, {0x8e, 0x00, 0xc9, 0xff}}},\n    {{{  1362,   4198,  -6707}, 0, {     0,      0}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{  1362,    717,  -6707}, 0, {     0,      0}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{   564,   4198,  -7505}, 0, {     0,      0}, {0xc0, 0x00, 0x6d, 0xff}}},\n    {{{   564,    717,  -7505}, 0, {     0,      0}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{ -1361,   4198,  -6707}, 0, {     0,      0}, {0x6d, 0x00, 0x40, 0xff}}},\n    {{{  -563,    717,  -7505}, 0, {     0,      0}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{  -563,   4198,  -7505}, 0, {     0,      0}, {0x20, 0x00, 0x7a, 0xff}}},\n};\n\n// 0x07006638 - 0x070066A8\nstatic const Vtx cotmc_seg7_vertex_07006638[] = {\n    {{{ -1361,   4198,  -6707}, 0, {     0,      0}, {0x6d, 0x00, 0x40, 0xff}}},\n    {{{ -1361,    717,  -6707}, 0, {     0,      0}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{  -563,    717,  -7505}, 0, {     0,      0}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{ -1361,   4198,  -5579}, 0, {     0,      0}, {0x7a, 0x00, 0xe0, 0xff}}},\n    {{{ -1361,    717,  -5579}, 0, {     0,      0}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{  -563,   4198,  -4781}, 0, {     0,      0}, {0x56, 0xbe, 0xc0, 0xff}}},\n    {{{  -563,    717,  -4781}, 0, {     0,      0}, {0x77, 0x00, 0xd7, 0xff}}},\n};\n\n// 0x070066A8 - 0x070066E8\nstatic const Vtx cotmc_seg7_vertex_070066A8[] = {\n    {{{  1400,  -1791,   4301}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1399,   1523,   4301}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1400,   1523,   4301}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1399,  -1791,   4301}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070066E8 - 0x07006C18\nstatic const Gfx cotmc_seg7_dl_070066E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09006800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&cotmc_seg7_lights_07003000.l, 1),\n    gsSPLight(&cotmc_seg7_lights_07003000.a, 2),\n    gsSPVertex(cotmc_seg7_vertex_070030A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  6,  7,  5, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  5,  8,  9, 0x0),\n    gsSP2Triangles( 3, 10,  4, 0x0, 11,  4, 10, 0x0),\n    gsSP2Triangles( 1,  9,  8, 0x0,  0,  9,  1, 0x0),\n    gsSP2Triangles( 1, 12,  2, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_070031A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  3,  2, 0x0,  4,  2,  5, 0x0),\n    gsSP2Triangles( 5,  2,  1, 0x0,  6,  3,  7, 0x0),\n    gsSP2Triangles( 4,  7,  3, 0x0,  8,  4,  5, 0x0),\n    gsSP2Triangles( 1,  8,  5, 0x0,  9, 10,  8, 0x0),\n    gsSP2Triangles(10, 11,  8, 0x0,  8, 11,  4, 0x0),\n    gsSP2Triangles( 4, 12,  7, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_070032A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  3,  7,  8, 0x0),\n    gsSP2Triangles( 9,  3,  8, 0x0,  3,  6,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_070033A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  4, 0x0,  3,  5,  0, 0x0),\n    gsSP2Triangles( 5,  8,  0, 0x0,  9,  0,  8, 0x0),\n    gsSP2Triangles( 9,  1,  0, 0x0,  0, 10,  3, 0x0),\n    gsSP2Triangles( 2, 10,  0, 0x0, 11,  9,  8, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_070034A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  0, 0x0,  4,  0,  3, 0x0),\n    gsSP2Triangles( 5,  6,  0, 0x0,  0,  6,  7, 0x0),\n    gsSP2Triangles( 8,  2,  1, 0x0,  2,  9, 10, 0x0),\n    gsSP2Triangles( 2,  8, 11, 0x0,  2, 10, 12, 0x0),\n    gsSP2Triangles(12,  3,  2, 0x0, 12,  4,  3, 0x0),\n    gsSP2Triangles(13, 12, 10, 0x0, 13, 10, 14, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07003598, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07003688, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  4,  3,  7, 0x0),\n    gsSP2Triangles( 8,  3,  9, 0x0,  8,  7,  3, 0x0),\n    gsSP2Triangles( 3,  6, 10, 0x0,  9,  3, 10, 0x0),\n    gsSP2Triangles( 4, 11,  5, 0x0, 12,  4, 13, 0x0),\n    gsSP2Triangles(12, 11,  4, 0x0,  7, 13,  4, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07003768, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 5,  1,  4, 0x0,  3,  1,  6, 0x0),\n    gsSP2Triangles( 2,  1,  7, 0x0,  5,  7,  1, 0x0),\n    gsSP2Triangles( 8,  9,  2, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(13, 10, 12, 0x0,  8,  2,  7, 0x0),\n    gsSP1Triangle(14,  5, 15, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07003868, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  5,  1,  3, 0x0),\n    gsSP2Triangles( 6,  5,  3, 0x0,  6,  3,  7, 0x0),\n    gsSP2Triangles( 2,  1,  5, 0x0,  5,  6,  8, 0x0),\n    gsSP2Triangles( 2,  5,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 10, 13, 0x0, 14, 15, 10, 0x0),\n    gsSP1Triangle( 9, 14, 10, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07003968, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 4,  1,  3, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  5,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPLight(&cotmc_seg7_lights_07003018.l, 1),\n    gsSPLight(&cotmc_seg7_lights_07003018.a, 2),\n    gsSPVertex(cotmc_seg7_vertex_07003A48, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  4,  2,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  3,  7,  1, 0x0),\n    gsSP2Triangles( 6,  5,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0,  9,  8, 11, 0x0),\n    gsSP2Triangles(11, 10,  7, 0x0, 11,  7,  3, 0x0),\n    gsSPLight(&cotmc_seg7_lights_07003030.l, 1),\n    gsSPLight(&cotmc_seg7_lights_07003030.a, 2),\n    gsSPVertex(cotmc_seg7_vertex_07003B08, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 2,  4,  3, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles( 5,  6,  2, 0x0,  2,  6,  4, 0x0),\n    gsSPLight(&cotmc_seg7_lights_07003048.l, 1),\n    gsSPLight(&cotmc_seg7_lights_07003048.a, 2),\n    gsSPVertex(cotmc_seg7_vertex_07003B78, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  5,  7, 0x0),\n    gsSP2Triangles( 5,  8,  7, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11,  2,  4, 0x0),\n    gsSP2Triangles(11,  4,  6, 0x0,  0,  2, 11, 0x0),\n    gsSP2Triangles( 9,  1,  0, 0x0,  9, 10,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07006C18 - 0x07006F88\nstatic const Gfx cotmc_seg7_dl_07006C18[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cotmc_seg7_texture_07002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&cotmc_seg7_lights_07003060.l, 1),\n    gsSPLight(&cotmc_seg7_lights_07003060.a, 2),\n    gsSPVertex(cotmc_seg7_vertex_07003C38, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  0,  3, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  4,  9, 0x0),\n    gsSP2Triangles( 7,  9,  8, 0x0,  4,  3,  9, 0x0),\n    gsSPLight(&cotmc_seg7_lights_07003018.l, 1),\n    gsSPLight(&cotmc_seg7_lights_07003018.a, 2),\n    gsSPVertex(cotmc_seg7_vertex_07003CD8, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  2,  5, 0x0,  4,  0,  2, 0x0),\n    gsSP2Triangles( 5,  6,  4, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 7,  8,  4, 0x0,  8,  9,  4, 0x0),\n    gsSPLight(&cotmc_seg7_lights_07003030.l, 1),\n    gsSPLight(&cotmc_seg7_lights_07003030.a, 2),\n    gsSPVertex(cotmc_seg7_vertex_07003D78, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 5,  8,  9, 0x0,  5,  9,  6, 0x0),\n    gsSP2Triangles( 1,  9,  8, 0x0, 10,  6, 11, 0x0),\n    gsSP2Triangles(10,  3,  6, 0x0,  1,  8,  2, 0x0),\n    gsSP2Triangles( 0, 12, 13, 0x0, 13, 14,  0, 0x0),\n    gsSP1Triangle( 0,  2, 12, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07003E68, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  3,  8,  6, 0x0),\n    gsSP2Triangles( 3,  9,  8, 0x0,  3,  5,  9, 0x0),\n    gsSP2Triangles(10, 11,  3, 0x0, 12,  1,  0, 0x0),\n    gsSP2Triangles( 0,  2, 13, 0x0, 12, 14,  1, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07003F58, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  2, 0x0,  4,  2,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10,  6,  8, 0x0, 11, 12,  7, 0x0),\n    gsSP2Triangles(10,  8, 13, 0x0, 11,  9, 14, 0x0),\n    gsSP1Triangle(11,  7,  9, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07004048, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  1,  5,  4, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 6, 11,  7, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 14, 15, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07004148, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 15, 12, 14, 0x0),\n    gsSP1Triangle( 8, 15, 14, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07004248, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  4,  9, 0x0,  8,  7,  4, 0x0),\n    gsSP2Triangles( 9,  4, 10, 0x0, 11, 12,  7, 0x0),\n    gsSP2Triangles(11,  7,  8, 0x0,  7, 13,  5, 0x0),\n    gsSP2Triangles( 7, 12, 13, 0x0, 12, 11, 14, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0, 13, 14, 15, 0x0),\n    gsSP1Triangle(13, 15,  5, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07004348, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  0,  5, 0x0,  0,  3,  5, 0x0),\n    gsSP2Triangles( 6,  4,  7, 0x0,  4,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07006F88 - 0x07007248\nstatic const Gfx cotmc_seg7_dl_07006F88[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cotmc_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&cotmc_seg7_lights_07003018.l, 1),\n    gsSPLight(&cotmc_seg7_lights_07003018.a, 2),\n    gsSPVertex(cotmc_seg7_vertex_070043E8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles( 7, 11,  9, 0x0,  7,  6, 11, 0x0),\n    gsSP2Triangles( 3, 12,  4, 0x0,  9,  1,  0, 0x0),\n    gsSP2Triangles( 9, 11,  1, 0x0, 13, 12,  3, 0x0),\n    gsSP2Triangles( 0,  2, 14, 0x0, 14,  2, 15, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_070044E8, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSPLight(&cotmc_seg7_lights_07003030.l, 1),\n    gsSPLight(&cotmc_seg7_lights_07003030.a, 2),\n    gsSPVertex(cotmc_seg7_vertex_07004548, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 2,  3,  5, 0x0,  2,  6,  3, 0x0),\n    gsSP2Triangles( 5,  4,  7, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 9,  2,  5, 0x0, 10,  0,  2, 0x0),\n    gsSP2Triangles( 9, 11,  2, 0x0,  2, 12, 13, 0x0),\n    gsSP2Triangles(11, 14,  2, 0x0, 15, 10,  2, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07004648, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  5,  4,  0, 0x0),\n    gsSP2Triangles( 2,  6,  0, 0x0,  6,  7,  0, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  9,  8, 0x0),\n    gsSP2Triangles( 8, 10, 12, 0x0, 13,  2, 14, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07004738, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  1, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 4,  3,  8, 0x0,  4,  8,  6, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  1,  9, 11, 0x0),\n    gsSP2Triangles( 1, 12, 13, 0x0, 11, 10, 14, 0x0),\n    gsSP1Triangle(11, 14, 15, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07004838, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 3,  4,  1, 0x0,  5,  6,  7, 0x0),\n    gsSPLight(&cotmc_seg7_lights_07003048.l, 1),\n    gsSPLight(&cotmc_seg7_lights_07003048.a, 2),\n    gsSPVertex(cotmc_seg7_vertex_070048B8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  0,  5,  4, 0x0),\n    gsSP2Triangles( 6,  1,  7, 0x0,  6,  2,  1, 0x0),\n    gsSP2Triangles( 8,  9,  4, 0x0,  5,  8,  4, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(10, 12, 11, 0x0, 10, 13, 12, 0x0),\n    gsSP2Triangles(13, 14, 12, 0x0, 13, 15, 14, 0x0),\n    gsSP2Triangles(15,  7, 14, 0x0, 15,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007248 - 0x07007498\nstatic const Gfx cotmc_seg7_dl_07007248[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&cotmc_seg7_lights_07003030.l, 1),\n    gsSPLight(&cotmc_seg7_lights_07003030.a, 2),\n    gsSPVertex(cotmc_seg7_vertex_070049B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 2,  4,  3, 0x0,  4,  2,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  6,  8, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07004AA8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  6,  8, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07004BA8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  4,  7,  6, 0x0),\n    gsSP2Triangles( 3,  5,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(10, 12, 11, 0x0, 10, 13, 12, 0x0),\n    gsSP1Triangle( 9, 11, 14, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07004C98, 16, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSP1Triangle( 0,  3,  1, 0x0),\n    gsSP1Triangle( 1,  4,  2, 0x0),\n    gsSP1Triangle( 4,  5,  2, 0x0),\n    gsSP1Triangle( 6,  7,  8, 0x0),\n    gsSP1Triangle( 9, 10, 11, 0x0),\n    gsSP1Triangle( 6, 12,  7, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07004D98, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07004E98, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07004F78, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07005058, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007498 - 0x070074F0\nstatic const Gfx cotmc_seg7_dl_07007498[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(cotmc_seg7_vertex_07005118, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070074F0 - 0x07007688\nstatic const Gfx cotmc_seg7_dl_070074F0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(cotmc_seg7_vertex_070051D8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  3,  5, 0x0),\n    gsSP2Triangles( 6,  8,  4, 0x0,  7,  5,  9, 0x0),\n    gsSP2Triangles( 6, 10,  8, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 8, 11, 12, 0x0, 13, 14,  7, 0x0),\n    gsSP2Triangles(13,  7,  9, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_070052D8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  0,  7,  1, 0x0),\n    gsSP2Triangles( 8,  4,  3, 0x0,  8,  9,  4, 0x0),\n    gsSP2Triangles( 7, 10,  1, 0x0,  7, 11, 10, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_070053C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_070054B8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  9,  8, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_070055B8, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0,  9,  8, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007688 - 0x07007920\nstatic const Gfx cotmc_seg7_dl_07007688[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cotmc_seg7_texture_07002800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 16 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&cotmc_seg7_lights_07003000.l, 1),\n    gsSPLight(&cotmc_seg7_lights_07003000.a, 2),\n    gsSPVertex(cotmc_seg7_vertex_07005668, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 11, 13, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07005758, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07005848, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPLight(&cotmc_seg7_lights_07003060.l, 1),\n    gsSPLight(&cotmc_seg7_lights_07003060.a, 2),\n    gsSPVertex(cotmc_seg7_vertex_070058C8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_070059A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07005A98, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07005B88, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  5,  7, 0x0,  5,  9,  7, 0x0),\n    gsSP2Triangles(10, 11,  2, 0x0,  3, 10,  2, 0x0),\n    gsSPLight(&cotmc_seg7_lights_07003018.l, 1),\n    gsSPLight(&cotmc_seg7_lights_07003018.a, 2),\n    gsSPVertex(cotmc_seg7_vertex_07005C48, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  3,  2, 0x0,  4,  5,  3, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10,  6, 0x0),\n    gsSP2Triangles( 6, 10,  7, 0x0,  9, 11, 10, 0x0),\n    gsSPLight(&cotmc_seg7_lights_07003078.l, 1),\n    gsSPLight(&cotmc_seg7_lights_07003078.a, 2),\n    gsSPVertex(cotmc_seg7_vertex_07005D08, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007920 - 0x07007B90\nstatic const Gfx cotmc_seg7_dl_07007920[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cotmc_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&cotmc_seg7_lights_07003090.l, 1),\n    gsSPLight(&cotmc_seg7_lights_07003090.a, 2),\n    gsSPVertex(cotmc_seg7_vertex_07005DA8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPLight(&cotmc_seg7_lights_07003018.l, 1),\n    gsSPLight(&cotmc_seg7_lights_07003018.a, 2),\n    gsSPVertex(cotmc_seg7_vertex_07005DE8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  3,  2, 0x0,  5,  4,  2, 0x0),\n    gsSP2Triangles( 6,  5,  2, 0x0,  5,  7,  4, 0x0),\n    gsSP2Triangles( 8,  5,  9, 0x0, 10, 11,  5, 0x0),\n    gsSP2Triangles( 5, 11,  7, 0x0,  8, 10,  5, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 10, 12, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07005ED8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  2,  5,  6, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  7,  5,  4, 0x0),\n    gsSP2Triangles( 7,  8,  5, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 7,  4,  1, 0x0,  0, 12,  3, 0x0),\n    gsSP2Triangles(10, 13, 14, 0x0, 14, 15, 10, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07005FD8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 5,  8,  9, 0x0,  9, 10,  5, 0x0),\n    gsSP2Triangles(11,  8,  7, 0x0,  9, 12, 10, 0x0),\n    gsSP2Triangles( 7, 13, 11, 0x0, 14, 11, 13, 0x0),\n    gsSP2Triangles(14, 12, 11, 0x0, 12, 14, 10, 0x0),\n    gsSPLight(&cotmc_seg7_lights_07003030.l, 1),\n    gsSPLight(&cotmc_seg7_lights_07003030.a, 2),\n    gsSPVertex(cotmc_seg7_vertex_070060C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  3, 0x0,  4,  3,  7, 0x0),\n    gsSP2Triangles( 3,  5,  8, 0x0,  8,  5,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10,  0, 11, 0x0),\n    gsSP2Triangles( 0,  2, 11, 0x0, 13, 12, 14, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_070061B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  8, 10, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_070062A8, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle( 7,  9, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007B90 - 0x07007D48\nstatic const Gfx cotmc_seg7_dl_07007B90[] = {\n    gsSPLight(&cotmc_seg7_lights_07003090.l, 1),\n    gsSPLight(&cotmc_seg7_lights_07003090.a, 2),\n    gsSPVertex(cotmc_seg7_vertex_07006358, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 0,  5,  6, 0x0,  0,  6,  7, 0x0),\n    gsSP2Triangles( 0,  8,  9, 0x0,  0,  7,  8, 0x0),\n    gsSP2Triangles( 5, 10,  6, 0x0,  5, 11, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 13, 10, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07006438, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  5,  2,  3, 0x0),\n    gsSP2Triangles( 6,  5,  3, 0x0,  5,  7,  2, 0x0),\n    gsSP2Triangles( 0,  2,  7, 0x0,  8,  0,  9, 0x0),\n    gsSP2Triangles( 0,  7,  9, 0x0,  5, 10,  7, 0x0),\n    gsSP2Triangles(10,  9,  7, 0x0, 11,  8,  9, 0x0),\n    gsSP2Triangles(11, 12,  8, 0x0, 10, 11,  9, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07006538, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  1,  0, 0x0),\n    gsSP2Triangles( 7,  8,  1, 0x0,  9, 10,  8, 0x0),\n    gsSP2Triangles(11, 10,  9, 0x0, 11, 12, 10, 0x0),\n    gsSP2Triangles(13, 14, 15, 0x0, 15, 12, 11, 0x0),\n    gsSP1Triangle(15, 14, 12, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07006638, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 3,  4,  1, 0x0,  5,  4,  3, 0x0),\n    gsSP1Triangle( 5,  6,  4, 0x0),\n    gsSPLight(&cotmc_seg7_lights_07003030.l, 1),\n    gsSPLight(&cotmc_seg7_lights_07003030.a, 2),\n    gsSPVertex(cotmc_seg7_vertex_070066A8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007D48 - 0x07007E88\nconst Gfx cotmc_seg7_dl_07007D48[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(980, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(cotmc_seg7_dl_070066E8),\n    gsSPDisplayList(cotmc_seg7_dl_07006C18),\n    gsSPDisplayList(cotmc_seg7_dl_07006F88),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(cotmc_seg7_dl_07007248),\n    gsSPDisplayList(cotmc_seg7_dl_07007498),\n    gsSPDisplayList(cotmc_seg7_dl_070074F0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 4, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (16 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(cotmc_seg7_dl_07007688),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(cotmc_seg7_dl_07007920),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_PASS2),\n    gsSPDisplayList(cotmc_seg7_dl_07007B90),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/cotmc/areas/1/2/model.inc.c",
    "content": "// 0x07007E88 - 0x07007EA0\nstatic const Lights1 cotmc_seg7_lights_07007E88 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07007EA0 - 0x07007F90\nstatic const Vtx cotmc_seg7_vertex_07007EA0[] = {\n    {{{   668,    610,  -3991}, 0, {   812,   1550}, {0xca, 0x1f, 0x92, 0xff}}},\n    {{{   701,    674,  -3989}, 0, {   828,   1552}, {0xca, 0x1f, 0x92, 0xff}}},\n    {{{   683,    608,  -3999}, 0, {   820,   1546}, {0xca, 0x1f, 0x92, 0xff}}},\n    {{{   668,    610,  -3991}, 0, {   812,   1550}, {0xc6, 0x21, 0x95, 0xff}}},\n    {{{   680,    676,  -3977}, 0, {   818,   1558}, {0xc6, 0x21, 0x95, 0xff}}},\n    {{{   701,    674,  -3989}, 0, {   828,   1552}, {0xc6, 0x21, 0x95, 0xff}}},\n    {{{   667,    605,  -3974}, 0, {   812,   1560}, {0x84, 0x16, 0x00, 0xff}}},\n    {{{   680,    676,  -3977}, 0, {   818,   1558}, {0x84, 0x16, 0x00, 0xff}}},\n    {{{   668,    610,  -3991}, 0, {   812,   1550}, {0x84, 0x16, 0x00, 0xff}}},\n    {{{   683,    608,  -3999}, 0, {   820,   1546}, {0x3e, 0x00, 0x92, 0xff}}},\n    {{{   701,    674,  -3989}, 0, {   828,   1552}, {0x3e, 0x00, 0x92, 0xff}}},\n    {{{   697,    602,  -3991}, 0, {   826,   1550}, {0x3e, 0x00, 0x92, 0xff}}},\n    {{{   701,    674,  -3989}, 0, {   828,   1552}, {0x41, 0x00, 0x93, 0xff}}},\n    {{{   721,    665,  -3977}, 0, {   838,   1558}, {0x41, 0x00, 0x93, 0xff}}},\n    {{{   697,    602,  -3991}, 0, {   826,   1550}, {0x41, 0x00, 0x93, 0xff}}},\n};\n\n// 0x07007F90 - 0x07008080\nstatic const Vtx cotmc_seg7_vertex_07007F90[] = {\n    {{{   680,    676,  -3977}, 0, {   818,   1558}, {0xeb, 0x6f, 0xc8, 0xff}}},\n    {{{   705,    690,  -3959}, 0, {   832,   1566}, {0xeb, 0x6f, 0xc8, 0xff}}},\n    {{{   701,    674,  -3989}, 0, {   828,   1552}, {0xeb, 0x6f, 0xc8, 0xff}}},\n    {{{   721,    665,  -3977}, 0, {   838,   1558}, {0x49, 0x57, 0xc8, 0xff}}},\n    {{{   701,    674,  -3989}, 0, {   828,   1552}, {0x49, 0x57, 0xc8, 0xff}}},\n    {{{   705,    690,  -3959}, 0, {   832,   1566}, {0x49, 0x57, 0xc8, 0xff}}},\n    {{{   680,    676,  -3977}, 0, {   818,   1558}, {0xb9, 0x66, 0x13, 0xff}}},\n    {{{   678,    670,  -3953}, 0, {   818,   1570}, {0xb9, 0x66, 0x13, 0xff}}},\n    {{{   705,    690,  -3959}, 0, {   832,   1566}, {0xb9, 0x66, 0x13, 0xff}}},\n    {{{   667,    605,  -3974}, 0, {   812,   1560}, {0x84, 0x16, 0xfc, 0xff}}},\n    {{{   678,    670,  -3953}, 0, {   818,   1570}, {0x84, 0x16, 0xfc, 0xff}}},\n    {{{   680,    676,  -3977}, 0, {   818,   1558}, {0x84, 0x16, 0xfc, 0xff}}},\n    {{{   697,    602,  -3991}, 0, {   826,   1550}, {0x76, 0xd4, 0xff, 0xff}}},\n    {{{   721,    665,  -3977}, 0, {   838,   1558}, {0x76, 0xd4, 0xff, 0xff}}},\n    {{{   719,    659,  -3953}, 0, {   838,   1570}, {0x76, 0xd4, 0xff, 0xff}}},\n};\n\n// 0x07008080 - 0x07008170\nstatic const Vtx cotmc_seg7_vertex_07008080[] = {\n    {{{   697,    602,  -3991}, 0, {   826,   1550}, {0x77, 0xd5, 0xfd, 0xff}}},\n    {{{   719,    659,  -3953}, 0, {   838,   1570}, {0x77, 0xd5, 0xfd, 0xff}}},\n    {{{   696,    598,  -3974}, 0, {   826,   1560}, {0x77, 0xd5, 0xfd, 0xff}}},\n    {{{   719,    659,  -3953}, 0, {   838,   1570}, {0x70, 0x37, 0x17, 0xff}}},\n    {{{   721,    665,  -3977}, 0, {   838,   1558}, {0x70, 0x37, 0x17, 0xff}}},\n    {{{   705,    690,  -3959}, 0, {   832,   1566}, {0x70, 0x37, 0x17, 0xff}}},\n    {{{   696,    598,  -3974}, 0, {   826,   1560}, {0x33, 0xca, 0x66, 0xff}}},\n    {{{   719,    659,  -3953}, 0, {   838,   1570}, {0x33, 0xca, 0x66, 0xff}}},\n    {{{   681,    599,  -3966}, 0, {   818,   1564}, {0x33, 0xca, 0x66, 0xff}}},\n    {{{   719,    659,  -3953}, 0, {   838,   1570}, {0x32, 0xca, 0x66, 0xff}}},\n    {{{   698,    662,  -3941}, 0, {   828,   1576}, {0x32, 0xca, 0x66, 0xff}}},\n    {{{   681,    599,  -3966}, 0, {   818,   1564}, {0x32, 0xca, 0x66, 0xff}}},\n    {{{   698,    662,  -3941}, 0, {   828,   1576}, {0x3f, 0x2f, 0x63, 0xff}}},\n    {{{   719,    659,  -3953}, 0, {   838,   1570}, {0x3f, 0x2f, 0x63, 0xff}}},\n    {{{   705,    690,  -3959}, 0, {   832,   1566}, {0x3f, 0x2f, 0x63, 0xff}}},\n};\n\n// 0x07008170 - 0x07008260\nstatic const Vtx cotmc_seg7_vertex_07008170[] = {\n    {{{   681,    599,  -3966}, 0, {   818,   1564}, {0xbb, 0xea, 0x68, 0xff}}},\n    {{{   678,    670,  -3953}, 0, {   818,   1570}, {0xbb, 0xea, 0x68, 0xff}}},\n    {{{   667,    605,  -3974}, 0, {   812,   1560}, {0xbb, 0xea, 0x68, 0xff}}},\n    {{{   681,    599,  -3966}, 0, {   818,   1564}, {0xba, 0xeb, 0x67, 0xff}}},\n    {{{   698,    662,  -3941}, 0, {   828,   1576}, {0xba, 0xeb, 0x67, 0xff}}},\n    {{{   678,    670,  -3953}, 0, {   818,   1570}, {0xba, 0xeb, 0x67, 0xff}}},\n    {{{   678,    670,  -3953}, 0, {   818,   1570}, {0xe1, 0x47, 0x63, 0xff}}},\n    {{{   698,    662,  -3941}, 0, {   828,   1576}, {0xe1, 0x47, 0x63, 0xff}}},\n    {{{   705,    690,  -3959}, 0, {   832,   1566}, {0xe1, 0x47, 0x63, 0xff}}},\n    {{{  1095,    435,  -3442}, 0, {  1026,   1826}, {0xc6, 0xa0, 0x3a, 0xff}}},\n    {{{  1054,    471,  -3423}, 0, {  1004,   1834}, {0xc6, 0xa0, 0x3a, 0xff}}},\n    {{{  1086,    435,  -3451}, 0, {  1020,   1820}, {0xc6, 0xa0, 0x3a, 0xff}}},\n    {{{  1086,    435,  -3451}, 0, {  1020,   1820}, {0x99, 0xc9, 0xd1, 0xff}}},\n    {{{  1054,    471,  -3423}, 0, {  1004,   1834}, {0x99, 0xc9, 0xd1, 0xff}}},\n    {{{  1055,    483,  -3439}, 0, {  1006,   1826}, {0x99, 0xc9, 0xd1, 0xff}}},\n};\n\n// 0x07008260 - 0x07008350\nstatic const Vtx cotmc_seg7_vertex_07008260[] = {\n    {{{  1086,    435,  -3451}, 0, {  1020,   1820}, {0x9a, 0xcb, 0xcc, 0xff}}},\n    {{{  1055,    483,  -3439}, 0, {  1006,   1826}, {0x9a, 0xcb, 0xcc, 0xff}}},\n    {{{  1087,    444,  -3462}, 0, {  1022,   1814}, {0x9a, 0xcb, 0xcc, 0xff}}},\n    {{{  1087,    444,  -3462}, 0, {  1022,   1814}, {0xdc, 0x26, 0x8d, 0xff}}},\n    {{{  1055,    483,  -3439}, 0, {  1006,   1826}, {0xdc, 0x26, 0x8d, 0xff}}},\n    {{{  1071,    495,  -3440}, 0, {  1014,   1826}, {0xdc, 0x26, 0x8d, 0xff}}},\n    {{{  1054,    471,  -3423}, 0, {  1004,   1834}, {0x85, 0x19, 0x0b, 0xff}}},\n    {{{  1060,    496,  -3415}, 0, {  1008,   1838}, {0x85, 0x19, 0x0b, 0xff}}},\n    {{{  1055,    483,  -3439}, 0, {  1006,   1826}, {0x85, 0x19, 0x0b, 0xff}}},\n    {{{  1071,    495,  -3440}, 0, {  1014,   1826}, {0xb6, 0x60, 0xdc, 0xff}}},\n    {{{  1055,    483,  -3439}, 0, {  1006,   1826}, {0xb6, 0x60, 0xdc, 0xff}}},\n    {{{  1060,    496,  -3415}, 0, {  1008,   1838}, {0xb6, 0x60, 0xdc, 0xff}}},\n    {{{  1087,    444,  -3462}, 0, {  1022,   1814}, {0xdb, 0x25, 0x8d, 0xff}}},\n    {{{  1071,    495,  -3440}, 0, {  1014,   1826}, {0xdb, 0x25, 0x8d, 0xff}}},\n    {{{  1098,    452,  -3463}, 0, {  1026,   1814}, {0xdb, 0x25, 0x8d, 0xff}}},\n};\n\n// 0x07008350 - 0x07008440\nstatic const Vtx cotmc_seg7_vertex_07008350[] = {\n    {{{  1054,    471,  -3423}, 0, {  1004,   1834}, {0xa4, 0xfb, 0x56, 0xff}}},\n    {{{  1067,    471,  -3409}, 0, {  1012,   1842}, {0xa4, 0xfb, 0x56, 0xff}}},\n    {{{  1060,    496,  -3415}, 0, {  1008,   1838}, {0xa4, 0xfb, 0x56, 0xff}}},\n    {{{  1095,    435,  -3442}, 0, {  1026,   1826}, {0xc5, 0x9f, 0x37, 0xff}}},\n    {{{  1067,    471,  -3409}, 0, {  1012,   1842}, {0xc5, 0x9f, 0x37, 0xff}}},\n    {{{  1054,    471,  -3423}, 0, {  1004,   1834}, {0xc5, 0x9f, 0x37, 0xff}}},\n    {{{  1098,    452,  -3463}, 0, {  1026,   1814}, {0x45, 0x50, 0xbb, 0xff}}},\n    {{{  1071,    495,  -3440}, 0, {  1014,   1826}, {0x45, 0x50, 0xbb, 0xff}}},\n    {{{  1085,    495,  -3426}, 0, {  1020,   1832}, {0x45, 0x50, 0xbb, 0xff}}},\n    {{{  1085,    495,  -3426}, 0, {  1020,   1832}, {0x03, 0x7e, 0xfd, 0xff}}},\n    {{{  1071,    495,  -3440}, 0, {  1014,   1826}, {0x03, 0x7e, 0xfd, 0xff}}},\n    {{{  1060,    496,  -3415}, 0, {  1008,   1838}, {0x03, 0x7e, 0xfd, 0xff}}},\n    {{{  1098,    452,  -3463}, 0, {  1026,   1814}, {0x49, 0x4f, 0xbe, 0xff}}},\n    {{{  1085,    495,  -3426}, 0, {  1020,   1832}, {0x49, 0x4f, 0xbe, 0xff}}},\n    {{{  1107,    452,  -3453}, 0, {  1032,   1820}, {0x49, 0x4f, 0xbe, 0xff}}},\n};\n\n// 0x07008440 - 0x07008540\nstatic const Vtx cotmc_seg7_vertex_07008440[] = {\n    {{{  1107,    452,  -3453}, 0, {  1032,   1820}, {0x73, 0x20, 0x29, 0xff}}},\n    {{{  1085,    495,  -3426}, 0, {  1020,   1832}, {0x73, 0x20, 0x29, 0xff}}},\n    {{{  1083,    483,  -3411}, 0, {  1020,   1840}, {0x73, 0x20, 0x29, 0xff}}},\n    {{{  1083,    483,  -3411}, 0, {  1020,   1840}, {0x26, 0x5c, 0x4e, 0xff}}},\n    {{{  1085,    495,  -3426}, 0, {  1020,   1832}, {0x26, 0x5c, 0x4e, 0xff}}},\n    {{{  1060,    496,  -3415}, 0, {  1008,   1838}, {0x26, 0x5c, 0x4e, 0xff}}},\n    {{{  1107,    452,  -3453}, 0, {  1032,   1820}, {0x73, 0x23, 0x27, 0xff}}},\n    {{{  1083,    483,  -3411}, 0, {  1020,   1840}, {0x73, 0x23, 0x27, 0xff}}},\n    {{{  1106,    444,  -3443}, 0, {  1032,   1824}, {0x73, 0x23, 0x27, 0xff}}},\n    {{{  1106,    444,  -3443}, 0, {  1032,   1824}, {0x34, 0xcb, 0x66, 0xff}}},\n    {{{  1083,    483,  -3411}, 0, {  1020,   1840}, {0x34, 0xcb, 0x66, 0xff}}},\n    {{{  1067,    471,  -3409}, 0, {  1012,   1842}, {0x34, 0xcb, 0x66, 0xff}}},\n    {{{  1067,    471,  -3409}, 0, {  1012,   1842}, {0xfb, 0x1c, 0x7b, 0xff}}},\n    {{{  1083,    483,  -3411}, 0, {  1020,   1840}, {0xfb, 0x1c, 0x7b, 0xff}}},\n    {{{  1060,    496,  -3415}, 0, {  1008,   1838}, {0xfb, 0x1c, 0x7b, 0xff}}},\n    {{{  1095,    435,  -3442}, 0, {  1026,   1826}, {0x34, 0xcb, 0x66, 0xff}}},\n};\n\n// 0x07008540 - 0x07008640\nstatic const Vtx cotmc_seg7_vertex_07008540[] = {\n    {{{  1083,    539,  -3840}, 0, {  1020,   1626}, {0xf4, 0xde, 0x87, 0xff}}},\n    {{{  1079,    608,  -3859}, 0, {  1018,   1616}, {0xf4, 0xde, 0x87, 0xff}}},\n    {{{  1099,    544,  -3843}, 0, {  1028,   1624}, {0xf4, 0xde, 0x87, 0xff}}},\n    {{{  1083,    539,  -3840}, 0, {  1020,   1626}, {0xfc, 0xdf, 0x86, 0xff}}},\n    {{{  1056,    600,  -3856}, 0, {  1006,   1618}, {0xfc, 0xdf, 0x86, 0xff}}},\n    {{{  1079,    608,  -3859}, 0, {  1018,   1616}, {0xfc, 0xdf, 0x86, 0xff}}},\n    {{{  1076,    539,  -3824}, 0, {  1016,   1634}, {0x99, 0xc7, 0xd3, 0xff}}},\n    {{{  1046,    600,  -3833}, 0, {  1002,   1630}, {0x99, 0xc7, 0xd3, 0xff}}},\n    {{{  1083,    539,  -3840}, 0, {  1020,   1626}, {0x99, 0xc7, 0xd3, 0xff}}},\n    {{{  1056,    600,  -3856}, 0, {  1006,   1618}, {0x99, 0xc7, 0xd3, 0xff}}},\n    {{{  1099,    544,  -3843}, 0, {  1028,   1624}, {0x64, 0x0c, 0xb4, 0xff}}},\n    {{{  1079,    608,  -3859}, 0, {  1018,   1616}, {0x64, 0x0c, 0xb4, 0xff}}},\n    {{{  1109,    549,  -3829}, 0, {  1032,   1632}, {0x64, 0x0c, 0xb4, 0xff}}},\n    {{{  1079,    608,  -3859}, 0, {  1018,   1616}, {0x63, 0x0a, 0xb2, 0xff}}},\n    {{{  1093,    616,  -3840}, 0, {  1024,   1626}, {0x63, 0x0a, 0xb2, 0xff}}},\n    {{{  1109,    549,  -3829}, 0, {  1032,   1632}, {0x63, 0x0a, 0xb2, 0xff}}},\n};\n\n// 0x07008640 - 0x07008730\nstatic const Vtx cotmc_seg7_vertex_07008640[] = {\n    {{{  1093,    616,  -3840}, 0, {  1024,   1626}, {0x2b, 0x5f, 0xb9, 0xff}}},\n    {{{  1079,    608,  -3859}, 0, {  1018,   1616}, {0x2b, 0x5f, 0xb9, 0xff}}},\n    {{{  1062,    630,  -3840}, 0, {  1008,   1626}, {0x2b, 0x5f, 0xb9, 0xff}}},\n    {{{  1056,    600,  -3856}, 0, {  1006,   1618}, {0xdd, 0x3e, 0x98, 0xff}}},\n    {{{  1062,    630,  -3840}, 0, {  1008,   1626}, {0xdd, 0x3e, 0x98, 0xff}}},\n    {{{  1079,    608,  -3859}, 0, {  1018,   1616}, {0xdd, 0x3e, 0x98, 0xff}}},\n    {{{  1056,    600,  -3856}, 0, {  1006,   1618}, {0x94, 0x2e, 0xd1, 0xff}}},\n    {{{  1046,    600,  -3833}, 0, {  1002,   1630}, {0x94, 0x2e, 0xd1, 0xff}}},\n    {{{  1062,    630,  -3840}, 0, {  1008,   1626}, {0x94, 0x2e, 0xd1, 0xff}}},\n    {{{  1109,    549,  -3829}, 0, {  1032,   1632}, {0x6e, 0x22, 0x33, 0xff}}},\n    {{{  1083,    616,  -3818}, 0, {  1020,   1638}, {0x6e, 0x22, 0x33, 0xff}}},\n    {{{  1102,    549,  -3814}, 0, {  1028,   1640}, {0x6e, 0x22, 0x33, 0xff}}},\n    {{{  1109,    549,  -3829}, 0, {  1032,   1632}, {0x6f, 0x22, 0x32, 0xff}}},\n    {{{  1093,    616,  -3840}, 0, {  1024,   1626}, {0x6f, 0x22, 0x32, 0xff}}},\n    {{{  1083,    616,  -3818}, 0, {  1020,   1638}, {0x6f, 0x22, 0x32, 0xff}}},\n};\n\n// 0x07008730 - 0x07008820\nstatic const Vtx cotmc_seg7_vertex_07008730[] = {\n    {{{  1083,    616,  -3818}, 0, {  1020,   1638}, {0x33, 0x71, 0x17, 0xff}}},\n    {{{  1093,    616,  -3840}, 0, {  1024,   1626}, {0x33, 0x71, 0x17, 0xff}}},\n    {{{  1062,    630,  -3840}, 0, {  1008,   1626}, {0x33, 0x71, 0x17, 0xff}}},\n    {{{  1102,    549,  -3814}, 0, {  1028,   1640}, {0x11, 0x0c, 0x7d, 0xff}}},\n    {{{  1083,    616,  -3818}, 0, {  1020,   1638}, {0x11, 0x0c, 0x7d, 0xff}}},\n    {{{  1060,    608,  -3814}, 0, {  1008,   1640}, {0x11, 0x0c, 0x7d, 0xff}}},\n    {{{  1060,    608,  -3814}, 0, {  1008,   1640}, {0xed, 0x60, 0x50, 0xff}}},\n    {{{  1083,    616,  -3818}, 0, {  1020,   1638}, {0xed, 0x60, 0x50, 0xff}}},\n    {{{  1062,    630,  -3840}, 0, {  1008,   1626}, {0xed, 0x60, 0x50, 0xff}}},\n    {{{  1102,    549,  -3814}, 0, {  1028,   1640}, {0x13, 0x0d, 0x7c, 0xff}}},\n    {{{  1060,    608,  -3814}, 0, {  1008,   1640}, {0x13, 0x0d, 0x7c, 0xff}}},\n    {{{  1086,    544,  -3811}, 0, {  1020,   1640}, {0x13, 0x0d, 0x7c, 0xff}}},\n    {{{  1086,    544,  -3811}, 0, {  1020,   1640}, {0xa5, 0xdf, 0x51, 0xff}}},\n    {{{  1060,    608,  -3814}, 0, {  1008,   1640}, {0xa5, 0xdf, 0x51, 0xff}}},\n    {{{  1046,    600,  -3833}, 0, {  1002,   1630}, {0xa5, 0xdf, 0x51, 0xff}}},\n};\n\n// 0x07008820 - 0x07008920\nstatic const Vtx cotmc_seg7_vertex_07008820[] = {\n    {{{  1046,    600,  -3833}, 0, {  1002,   1630}, {0x9d, 0x3f, 0x2e, 0xff}}},\n    {{{  1060,    608,  -3814}, 0, {  1008,   1640}, {0x9d, 0x3f, 0x2e, 0xff}}},\n    {{{  1062,    630,  -3840}, 0, {  1008,   1626}, {0x9d, 0x3f, 0x2e, 0xff}}},\n    {{{  1086,    544,  -3811}, 0, {  1020,   1640}, {0xa6, 0xe0, 0x52, 0xff}}},\n    {{{  1046,    600,  -3833}, 0, {  1002,   1630}, {0xa6, 0xe0, 0x52, 0xff}}},\n    {{{  1076,    539,  -3824}, 0, {  1016,   1634}, {0xa6, 0xe0, 0x52, 0xff}}},\n    {{{  1367,    530,  -5668}, 0, {  1160,    716}, {0x94, 0xc9, 0xdc, 0xff}}},\n    {{{  1309,    643,  -5666}, 0, {  1132,    718}, {0x94, 0xc9, 0xdc, 0xff}}},\n    {{{  1370,    542,  -5695}, 0, {  1162,    702}, {0x94, 0xc9, 0xdc, 0xff}}},\n    {{{  1370,    542,  -5695}, 0, {  1162,    702}, {0xd9, 0x0a, 0x88, 0xff}}},\n    {{{  1345,    665,  -5676}, 0, {  1150,    712}, {0xd9, 0x0a, 0x88, 0xff}}},\n    {{{  1395,    557,  -5702}, 0, {  1176,    698}, {0xd9, 0x0a, 0x88, 0xff}}},\n    {{{  1309,    643,  -5666}, 0, {  1132,    718}, {0xd9, 0x0a, 0x88, 0xff}}},\n    {{{  1376,    670,  -5647}, 0, {  1166,    726}, {0x0e, 0x78, 0xdd, 0xff}}},\n    {{{  1345,    665,  -5676}, 0, {  1150,    712}, {0x0e, 0x78, 0xdd, 0xff}}},\n    {{{  1323,    683,  -5624}, 0, {  1140,    738}, {0x0e, 0x78, 0xdd, 0xff}}},\n};\n\n// 0x07008920 - 0x07008A10\nstatic const Vtx cotmc_seg7_vertex_07008920[] = {\n    {{{  1309,    643,  -5666}, 0, {  1132,    718}, {0xba, 0x57, 0xc5, 0xff}}},\n    {{{  1323,    683,  -5624}, 0, {  1140,    738}, {0xba, 0x57, 0xc5, 0xff}}},\n    {{{  1345,    665,  -5676}, 0, {  1150,    712}, {0xba, 0x57, 0xc5, 0xff}}},\n    {{{  1395,    557,  -5702}, 0, {  1176,    698}, {0x49, 0x37, 0xa9, 0xff}}},\n    {{{  1345,    665,  -5676}, 0, {  1150,    712}, {0x49, 0x37, 0xa9, 0xff}}},\n    {{{  1376,    670,  -5647}, 0, {  1166,    726}, {0x49, 0x37, 0xa9, 0xff}}},\n    {{{  1395,    557,  -5702}, 0, {  1176,    698}, {0x47, 0x37, 0xa7, 0xff}}},\n    {{{  1376,    670,  -5647}, 0, {  1166,    726}, {0x47, 0x37, 0xa7, 0xff}}},\n    {{{  1417,    561,  -5682}, 0, {  1186,    710}, {0x47, 0x37, 0xa7, 0xff}}},\n    {{{  1367,    530,  -5668}, 0, {  1160,    716}, {0x94, 0xc9, 0xdd, 0xff}}},\n    {{{  1305,    626,  -5627}, 0, {  1130,    736}, {0x94, 0xc9, 0xdd, 0xff}}},\n    {{{  1309,    643,  -5666}, 0, {  1132,    718}, {0x94, 0xc9, 0xdd, 0xff}}},\n    {{{  1309,    643,  -5666}, 0, {  1132,    718}, {0x87, 0x26, 0x04, 0xff}}},\n    {{{  1305,    626,  -5627}, 0, {  1130,    736}, {0x87, 0x26, 0x04, 0xff}}},\n    {{{  1323,    683,  -5624}, 0, {  1140,    738}, {0x87, 0x26, 0x04, 0xff}}},\n};\n\n// 0x07008A10 - 0x07008B10\nstatic const Vtx cotmc_seg7_vertex_07008A10[] = {\n    {{{  1372,    653,  -5608}, 0, {  1164,    746}, {0x30, 0x69, 0x33, 0xff}}},\n    {{{  1376,    670,  -5647}, 0, {  1166,    726}, {0x30, 0x69, 0x33, 0xff}}},\n    {{{  1323,    683,  -5624}, 0, {  1140,    738}, {0x30, 0x69, 0x33, 0xff}}},\n    {{{  1376,    670,  -5647}, 0, {  1166,    726}, {0x76, 0x23, 0x1b, 0xff}}},\n    {{{  1372,    653,  -5608}, 0, {  1164,    746}, {0x76, 0x23, 0x1b, 0xff}}},\n    {{{  1414,    549,  -5654}, 0, {  1184,    722}, {0x76, 0x23, 0x1b, 0xff}}},\n    {{{  1417,    561,  -5682}, 0, {  1186,    710}, {0x76, 0x23, 0x1b, 0xff}}},\n    {{{  1414,    549,  -5654}, 0, {  1184,    722}, {0x31, 0xe3, 0x71, 0xff}}},\n    {{{  1372,    653,  -5608}, 0, {  1164,    746}, {0x31, 0xe3, 0x71, 0xff}}},\n    {{{  1389,    534,  -5647}, 0, {  1172,    726}, {0x31, 0xe3, 0x71, 0xff}}},\n    {{{  1372,    653,  -5608}, 0, {  1164,    746}, {0x34, 0xe3, 0x70, 0xff}}},\n    {{{  1336,    631,  -5597}, 0, {  1146,    752}, {0x34, 0xe3, 0x70, 0xff}}},\n    {{{  1389,    534,  -5647}, 0, {  1172,    726}, {0x34, 0xe3, 0x70, 0xff}}},\n    {{{  1336,    631,  -5597}, 0, {  1146,    752}, {0xff, 0x3a, 0x70, 0xff}}},\n    {{{  1372,    653,  -5608}, 0, {  1164,    746}, {0xff, 0x3a, 0x70, 0xff}}},\n    {{{  1323,    683,  -5624}, 0, {  1140,    738}, {0xff, 0x3a, 0x70, 0xff}}},\n};\n\n// 0x07008B10 - 0x07008C00\nstatic const Vtx cotmc_seg7_vertex_07008B10[] = {\n    {{{  1389,    534,  -5647}, 0, {  1172,    726}, {0xc0, 0xb5, 0x4f, 0xff}}},\n    {{{  1336,    631,  -5597}, 0, {  1146,    752}, {0xc0, 0xb5, 0x4f, 0xff}}},\n    {{{  1305,    626,  -5627}, 0, {  1130,    736}, {0xc0, 0xb5, 0x4f, 0xff}}},\n    {{{  1389,    534,  -5647}, 0, {  1172,    726}, {0xc1, 0xb5, 0x50, 0xff}}},\n    {{{  1305,    626,  -5627}, 0, {  1130,    736}, {0xc1, 0xb5, 0x50, 0xff}}},\n    {{{  1367,    530,  -5668}, 0, {  1160,    716}, {0xc1, 0xb5, 0x50, 0xff}}},\n    {{{  1305,    626,  -5627}, 0, {  1130,    736}, {0xa8, 0x17, 0x57, 0xff}}},\n    {{{  1336,    631,  -5597}, 0, {  1146,    752}, {0xa8, 0x17, 0x57, 0xff}}},\n    {{{  1323,    683,  -5624}, 0, {  1140,    738}, {0xa8, 0x17, 0x57, 0xff}}},\n    {{{  1368,    491,  -5692}, 0, {  1162,    704}, {0x94, 0xbe, 0x02, 0xff}}},\n    {{{  1286,    621,  -5787}, 0, {  1120,    656}, {0x94, 0xbe, 0x02, 0xff}}},\n    {{{  1373,    481,  -5734}, 0, {  1164,    684}, {0x94, 0xbe, 0x02, 0xff}}},\n    {{{  1373,    481,  -5734}, 0, {  1164,    684}, {0xd7, 0xc0, 0x9b, 0xff}}},\n    {{{  1286,    621,  -5787}, 0, {  1120,    656}, {0xd7, 0xc0, 0x9b, 0xff}}},\n    {{{  1337,    637,  -5818}, 0, {  1146,    642}, {0xd7, 0xc0, 0x9b, 0xff}}},\n};\n\n// 0x07008C00 - 0x07008CF0\nstatic const Vtx cotmc_seg7_vertex_07008C00[] = {\n    {{{  1373,    481,  -5734}, 0, {  1164,    684}, {0xd9, 0xc0, 0x9a, 0xff}}},\n    {{{  1337,    637,  -5818}, 0, {  1146,    642}, {0xd9, 0xc0, 0x9a, 0xff}}},\n    {{{  1409,    492,  -5755}, 0, {  1182,    672}, {0xd9, 0xc0, 0x9a, 0xff}}},\n    {{{  1382,    668,  -5789}, 0, {  1168,    656}, {0x0e, 0x4a, 0x9b, 0xff}}},\n    {{{  1337,    637,  -5818}, 0, {  1146,    642}, {0x0e, 0x4a, 0x9b, 0xff}}},\n    {{{  1306,    703,  -5774}, 0, {  1130,    664}, {0x0e, 0x4a, 0x9b, 0xff}}},\n    {{{  1286,    621,  -5787}, 0, {  1120,    656}, {0xb9, 0x21, 0x9d, 0xff}}},\n    {{{  1306,    703,  -5774}, 0, {  1130,    664}, {0xb9, 0x21, 0x9d, 0xff}}},\n    {{{  1337,    637,  -5818}, 0, {  1146,    642}, {0xb9, 0x21, 0x9d, 0xff}}},\n    {{{  1409,    492,  -5755}, 0, {  1182,    672}, {0x48, 0xf8, 0x99, 0xff}}},\n    {{{  1337,    637,  -5818}, 0, {  1146,    642}, {0x48, 0xf8, 0x99, 0xff}}},\n    {{{  1382,    668,  -5789}, 0, {  1168,    656}, {0x48, 0xf8, 0x99, 0xff}}},\n    {{{  1409,    492,  -5755}, 0, {  1182,    672}, {0x49, 0xf8, 0x99, 0xff}}},\n    {{{  1382,    668,  -5789}, 0, {  1168,    656}, {0x49, 0xf8, 0x99, 0xff}}},\n    {{{  1440,    514,  -5735}, 0, {  1198,    682}, {0x49, 0xf8, 0x99, 0xff}}},\n};\n\n// 0x07008CF0 - 0x07008DE0\nstatic const Vtx cotmc_seg7_vertex_07008CF0[] = {\n    {{{  1368,    491,  -5692}, 0, {  1162,    704}, {0x93, 0xc0, 0x05, 0xff}}},\n    {{{  1280,    636,  -5728}, 0, {  1118,    686}, {0x93, 0xc0, 0x05, 0xff}}},\n    {{{  1286,    621,  -5787}, 0, {  1120,    656}, {0x93, 0xc0, 0x05, 0xff}}},\n    {{{  1286,    621,  -5787}, 0, {  1120,    656}, {0x88, 0x20, 0xec, 0xff}}},\n    {{{  1280,    636,  -5728}, 0, {  1118,    686}, {0x88, 0x20, 0xec, 0xff}}},\n    {{{  1306,    703,  -5774}, 0, {  1130,    664}, {0x88, 0x20, 0xec, 0xff}}},\n    {{{  1376,    682,  -5729}, 0, {  1166,    686}, {0x30, 0x73, 0xea, 0xff}}},\n    {{{  1382,    668,  -5789}, 0, {  1168,    656}, {0x30, 0x73, 0xea, 0xff}}},\n    {{{  1306,    703,  -5774}, 0, {  1130,    664}, {0x30, 0x73, 0xea, 0xff}}},\n    {{{  1440,    514,  -5735}, 0, {  1198,    682}, {0x76, 0x2d, 0x01, 0xff}}},\n    {{{  1382,    668,  -5789}, 0, {  1168,    656}, {0x76, 0x2d, 0x01, 0xff}}},\n    {{{  1376,    682,  -5729}, 0, {  1166,    686}, {0x76, 0x2d, 0x01, 0xff}}},\n    {{{  1440,    514,  -5735}, 0, {  1198,    682}, {0x76, 0x2d, 0x03, 0xff}}},\n    {{{  1376,    682,  -5729}, 0, {  1166,    686}, {0x76, 0x2d, 0x03, 0xff}}},\n    {{{  1435,    524,  -5693}, 0, {  1196,    704}, {0x76, 0x2d, 0x03, 0xff}}},\n};\n\n// 0x07008DE0 - 0x07008ED0\nstatic const Vtx cotmc_seg7_vertex_07008DE0[] = {\n    {{{  1325,    666,  -5699}, 0, {  1140,    700}, {0xfe, 0x71, 0x38, 0xff}}},\n    {{{  1376,    682,  -5729}, 0, {  1166,    686}, {0xfe, 0x71, 0x38, 0xff}}},\n    {{{  1306,    703,  -5774}, 0, {  1130,    664}, {0xfe, 0x71, 0x38, 0xff}}},\n    {{{  1376,    682,  -5729}, 0, {  1166,    686}, {0x32, 0x2b, 0x6c, 0xff}}},\n    {{{  1325,    666,  -5699}, 0, {  1140,    700}, {0x32, 0x2b, 0x6c, 0xff}}},\n    {{{  1400,    513,  -5672}, 0, {  1178,    714}, {0x32, 0x2b, 0x6c, 0xff}}},\n    {{{  1435,    524,  -5693}, 0, {  1196,    704}, {0x32, 0x2b, 0x6b, 0xff}}},\n    {{{  1376,    682,  -5729}, 0, {  1166,    686}, {0x32, 0x2b, 0x6b, 0xff}}},\n    {{{  1400,    513,  -5672}, 0, {  1178,    714}, {0x32, 0x2b, 0x6b, 0xff}}},\n    {{{  1400,    513,  -5672}, 0, {  1178,    714}, {0xc3, 0xf6, 0x6e, 0xff}}},\n    {{{  1325,    666,  -5699}, 0, {  1140,    700}, {0xc3, 0xf6, 0x6e, 0xff}}},\n    {{{  1368,    491,  -5692}, 0, {  1162,    704}, {0xc3, 0xf6, 0x6e, 0xff}}},\n    {{{  1280,    636,  -5728}, 0, {  1118,    686}, {0xaa, 0x49, 0x39, 0xff}}},\n    {{{  1325,    666,  -5699}, 0, {  1140,    700}, {0xaa, 0x49, 0x39, 0xff}}},\n    {{{  1306,    703,  -5774}, 0, {  1130,    664}, {0xaa, 0x49, 0x39, 0xff}}},\n};\n\n// 0x07008ED0 - 0x07008FC0\nstatic const Vtx cotmc_seg7_vertex_07008ED0[] = {\n    {{{  1325,    666,  -5699}, 0, {  1140,    700}, {0xc1, 0xf5, 0x6d, 0xff}}},\n    {{{  1280,    636,  -5728}, 0, {  1118,    686}, {0xc1, 0xf5, 0x6d, 0xff}}},\n    {{{  1368,    491,  -5692}, 0, {  1162,    704}, {0xc1, 0xf5, 0x6d, 0xff}}},\n    {{{ -1246,    484,  -6947}, 0, {  -142,     78}, {0x8a, 0x2c, 0x04, 0xff}}},\n    {{{ -1120,    822,  -6960}, 0, {   -78,     72}, {0x8a, 0x2c, 0x04, 0xff}}},\n    {{{ -1241,    506,  -7031}, 0, {  -140,     36}, {0x8a, 0x2c, 0x04, 0xff}}},\n    {{{ -1241,    506,  -7031}, 0, {  -140,     36}, {0xca, 0x2c, 0x97, 0xff}}},\n    {{{ -1021,    791,  -7026}, 0, {   -30,     38}, {0xca, 0x2c, 0x97, 0xff}}},\n    {{{ -1172,    484,  -7076}, 0, {  -104,     14}, {0xca, 0x2c, 0x97, 0xff}}},\n    {{{ -1241,    506,  -7031}, 0, {  -140,     36}, {0xc9, 0x2c, 0x98, 0xff}}},\n    {{{ -1120,    822,  -6960}, 0, {   -78,     72}, {0xc9, 0x2c, 0x98, 0xff}}},\n    {{{ -1021,    791,  -7026}, 0, {   -30,     38}, {0xc9, 0x2c, 0x98, 0xff}}},\n    {{{  -929,    730,  -6973}, 0, {    16,     64}, {0x53, 0x49, 0xc4, 0xff}}},\n    {{{ -1021,    791,  -7026}, 0, {   -30,     38}, {0x53, 0x49, 0xc4, 0xff}}},\n    {{{  -977,    863,  -6878}, 0, {    -8,    112}, {0x53, 0x49, 0xc4, 0xff}}},\n};\n\n// 0x07008FC0 - 0x070090B0\nstatic const Vtx cotmc_seg7_vertex_07008FC0[] = {\n    {{{ -1120,    822,  -6960}, 0, {   -78,     72}, {0xff, 0x72, 0xc9, 0xff}}},\n    {{{  -977,    863,  -6878}, 0, {    -8,    112}, {0xff, 0x72, 0xc9, 0xff}}},\n    {{{ -1021,    791,  -7026}, 0, {   -30,     38}, {0xff, 0x72, 0xc9, 0xff}}},\n    {{{ -1172,    484,  -7076}, 0, {  -104,     14}, {0x3a, 0xf6, 0x90, 0xff}}},\n    {{{ -1021,    791,  -7026}, 0, {   -30,     38}, {0x3a, 0xf6, 0x90, 0xff}}},\n    {{{  -929,    730,  -6973}, 0, {    16,     64}, {0x3a, 0xf6, 0x90, 0xff}}},\n    {{{ -1172,    484,  -7076}, 0, {  -104,     14}, {0x39, 0xf7, 0x90, 0xff}}},\n    {{{  -929,    730,  -6973}, 0, {    16,     64}, {0x39, 0xf7, 0x90, 0xff}}},\n    {{{ -1107,    441,  -7039}, 0, {   -72,     32}, {0x39, 0xf7, 0x90, 0xff}}},\n    {{{ -1120,    822,  -6960}, 0, {   -78,     72}, {0xd0, 0x72, 0x1b, 0xff}}},\n    {{{ -1127,    791,  -6842}, 0, {   -82,    130}, {0xd0, 0x72, 0x1b, 0xff}}},\n    {{{  -977,    863,  -6878}, 0, {    -8,    112}, {0xd0, 0x72, 0x1b, 0xff}}},\n    {{{ -1246,    484,  -6947}, 0, {  -142,     78}, {0x8a, 0x2c, 0x04, 0xff}}},\n    {{{ -1127,    791,  -6842}, 0, {   -82,    130}, {0x8a, 0x2c, 0x04, 0xff}}},\n    {{{ -1120,    822,  -6960}, 0, {   -78,     72}, {0x8a, 0x2c, 0x04, 0xff}}},\n};\n\n// 0x070090B0 - 0x070091A0\nstatic const Vtx cotmc_seg7_vertex_070090B0[] = {\n    {{{  -936,    699,  -6854}, 0, {    12,    124}, {0x79, 0x20, 0x0f, 0xff}}},\n    {{{  -929,    730,  -6973}, 0, {    16,     64}, {0x79, 0x20, 0x0f, 0xff}}},\n    {{{  -977,    863,  -6878}, 0, {    -8,    112}, {0x79, 0x20, 0x0f, 0xff}}},\n    {{{ -1107,    441,  -7039}, 0, {   -72,     32}, {0x6c, 0xc0, 0xf7, 0xff}}},\n    {{{  -929,    730,  -6973}, 0, {    16,     64}, {0x6c, 0xc0, 0xf7, 0xff}}},\n    {{{ -1112,    420,  -6956}, 0, {   -74,     74}, {0x6c, 0xc0, 0xf7, 0xff}}},\n    {{{  -929,    730,  -6973}, 0, {    16,     64}, {0x6c, 0xc0, 0xf6, 0xff}}},\n    {{{  -936,    699,  -6854}, 0, {    12,    124}, {0x6c, 0xc0, 0xf6, 0xff}}},\n    {{{ -1112,    420,  -6956}, 0, {   -74,     74}, {0x6c, 0xc0, 0xf6, 0xff}}},\n    {{{ -1112,    420,  -6956}, 0, {   -74,     74}, {0x2d, 0xbf, 0x63, 0xff}}},\n    {{{  -936,    699,  -6854}, 0, {    12,    124}, {0x2d, 0xbf, 0x63, 0xff}}},\n    {{{ -1182,    441,  -6910}, 0, {  -110,     96}, {0x2d, 0xbf, 0x63, 0xff}}},\n    {{{ -1035,    730,  -6789}, 0, {   -36,    156}, {0x4a, 0x20, 0x61, 0xff}}},\n    {{{  -936,    699,  -6854}, 0, {    12,    124}, {0x4a, 0x20, 0x61, 0xff}}},\n    {{{  -977,    863,  -6878}, 0, {    -8,    112}, {0x4a, 0x20, 0x61, 0xff}}},\n};\n\n// 0x070091A0 - 0x07009290\nstatic const Vtx cotmc_seg7_vertex_070091A0[] = {\n    {{{  -936,    699,  -6854}, 0, {    12,    124}, {0x2d, 0xc0, 0x63, 0xff}}},\n    {{{ -1035,    730,  -6789}, 0, {   -36,    156}, {0x2d, 0xc0, 0x63, 0xff}}},\n    {{{ -1182,    441,  -6910}, 0, {  -110,     96}, {0x2d, 0xc0, 0x63, 0xff}}},\n    {{{ -1182,    441,  -6910}, 0, {  -110,     96}, {0xbc, 0xf6, 0x6a, 0xff}}},\n    {{{ -1035,    730,  -6789}, 0, {   -36,    156}, {0xbc, 0xf6, 0x6a, 0xff}}},\n    {{{ -1127,    791,  -6842}, 0, {   -82,    130}, {0xbc, 0xf6, 0x6a, 0xff}}},\n    {{{ -1182,    441,  -6910}, 0, {  -110,     96}, {0xbc, 0xf7, 0x6a, 0xff}}},\n    {{{ -1127,    791,  -6842}, 0, {   -82,    130}, {0xbc, 0xf7, 0x6a, 0xff}}},\n    {{{ -1246,    484,  -6947}, 0, {  -142,     78}, {0xbc, 0xf7, 0x6a, 0xff}}},\n    {{{ -1127,    791,  -6842}, 0, {   -82,    130}, {0xf6, 0x49, 0x67, 0xff}}},\n    {{{ -1035,    730,  -6789}, 0, {   -36,    156}, {0xf6, 0x49, 0x67, 0xff}}},\n    {{{  -977,    863,  -6878}, 0, {    -8,    112}, {0xf6, 0x49, 0x67, 0xff}}},\n    {{{   352,    357,  -6269}, 0, {   654,    416}, {0x3d, 0xed, 0x6d, 0xff}}},\n    {{{   392,    354,  -6292}, 0, {   674,    404}, {0x3d, 0xed, 0x6d, 0xff}}},\n    {{{   420,    485,  -6284}, 0, {   688,    408}, {0x3d, 0xed, 0x6d, 0xff}}},\n};\n\n// 0x07009290 - 0x07009390\nstatic const Vtx cotmc_seg7_vertex_07009290[] = {\n    {{{   313,    358,  -6292}, 0, {   636,    404}, {0x82, 0x04, 0x00, 0xff}}},\n    {{{   318,    498,  -6284}, 0, {   638,    408}, {0x82, 0x04, 0x00, 0xff}}},\n    {{{   313,    357,  -6337}, 0, {   636,    382}, {0x82, 0x04, 0x00, 0xff}}},\n    {{{   318,    498,  -6344}, 0, {   638,    378}, {0x82, 0x04, 0x00, 0xff}}},\n    {{{   318,    498,  -6284}, 0, {   638,    408}, {0xc1, 0xfd, 0x6e, 0xff}}},\n    {{{   352,    357,  -6269}, 0, {   654,    416}, {0xc1, 0xfd, 0x6e, 0xff}}},\n    {{{   369,    491,  -6255}, 0, {   664,    424}, {0xc1, 0xfd, 0x6e, 0xff}}},\n    {{{   318,    498,  -6284}, 0, {   638,    408}, {0xc0, 0xfd, 0x6d, 0xff}}},\n    {{{   313,    358,  -6292}, 0, {   636,    404}, {0xc0, 0xfd, 0x6d, 0xff}}},\n    {{{   352,    357,  -6269}, 0, {   654,    416}, {0xc0, 0xfd, 0x6d, 0xff}}},\n    {{{   318,    498,  -6284}, 0, {   638,    408}, {0xde, 0x59, 0x52, 0xff}}},\n    {{{   369,    491,  -6255}, 0, {   664,    424}, {0xde, 0x59, 0x52, 0xff}}},\n    {{{   376,    548,  -6314}, 0, {   666,    394}, {0xde, 0x59, 0x52, 0xff}}},\n    {{{   318,    498,  -6344}, 0, {   638,    378}, {0xae, 0x60, 0x00, 0xff}}},\n    {{{   318,    498,  -6284}, 0, {   638,    408}, {0xae, 0x60, 0x00, 0xff}}},\n    {{{   376,    548,  -6314}, 0, {   666,    394}, {0xae, 0x60, 0x00, 0xff}}},\n};\n\n// 0x07009390 - 0x07009480\nstatic const Vtx cotmc_seg7_vertex_07009390[] = {\n    {{{   318,    498,  -6344}, 0, {   638,    378}, {0xdd, 0x5a, 0xaf, 0xff}}},\n    {{{   376,    548,  -6314}, 0, {   666,    394}, {0xdd, 0x5a, 0xaf, 0xff}}},\n    {{{   369,    491,  -6374}, 0, {   664,    364}, {0xdd, 0x5a, 0xaf, 0xff}}},\n    {{{   369,    491,  -6374}, 0, {   664,    364}, {0xc0, 0xfd, 0x93, 0xff}}},\n    {{{   313,    357,  -6337}, 0, {   636,    382}, {0xc0, 0xfd, 0x93, 0xff}}},\n    {{{   318,    498,  -6344}, 0, {   638,    378}, {0xc0, 0xfd, 0x93, 0xff}}},\n    {{{   369,    491,  -6255}, 0, {   664,    424}, {0x3c, 0xed, 0x6e, 0xff}}},\n    {{{   352,    357,  -6269}, 0, {   654,    416}, {0x3c, 0xed, 0x6e, 0xff}}},\n    {{{   420,    485,  -6284}, 0, {   688,    408}, {0x3c, 0xed, 0x6e, 0xff}}},\n    {{{   369,    491,  -6255}, 0, {   664,    424}, {0x38, 0x4e, 0x52, 0xff}}},\n    {{{   420,    485,  -6284}, 0, {   688,    408}, {0x38, 0x4e, 0x52, 0xff}}},\n    {{{   376,    548,  -6314}, 0, {   666,    394}, {0x38, 0x4e, 0x52, 0xff}}},\n    {{{   420,    485,  -6284}, 0, {   688,    408}, {0x7c, 0xe6, 0x00, 0xff}}},\n    {{{   392,    354,  -6292}, 0, {   674,    404}, {0x7c, 0xe6, 0x00, 0xff}}},\n    {{{   420,    485,  -6344}, 0, {   688,    378}, {0x7c, 0xe6, 0x00, 0xff}}},\n};\n\n// 0x07009480 - 0x07009570\nstatic const Vtx cotmc_seg7_vertex_07009480[] = {\n    {{{   420,    485,  -6284}, 0, {   688,    408}, {0x68, 0x48, 0x00, 0xff}}},\n    {{{   420,    485,  -6344}, 0, {   688,    378}, {0x68, 0x48, 0x00, 0xff}}},\n    {{{   376,    548,  -6314}, 0, {   666,    394}, {0x68, 0x48, 0x00, 0xff}}},\n    {{{   392,    354,  -6292}, 0, {   674,    404}, {0x7c, 0xe5, 0xfe, 0xff}}},\n    {{{   391,    353,  -6337}, 0, {   674,    382}, {0x7c, 0xe5, 0xfe, 0xff}}},\n    {{{   420,    485,  -6344}, 0, {   688,    378}, {0x7c, 0xe5, 0xfe, 0xff}}},\n    {{{   352,    355,  -6359}, 0, {   654,    372}, {0x3c, 0xed, 0x93, 0xff}}},\n    {{{   420,    485,  -6344}, 0, {   688,    378}, {0x3c, 0xed, 0x93, 0xff}}},\n    {{{   391,    353,  -6337}, 0, {   674,    382}, {0x3c, 0xed, 0x93, 0xff}}},\n    {{{   352,    355,  -6359}, 0, {   654,    372}, {0x3d, 0xed, 0x93, 0xff}}},\n    {{{   369,    491,  -6374}, 0, {   664,    364}, {0x3d, 0xed, 0x93, 0xff}}},\n    {{{   420,    485,  -6344}, 0, {   688,    378}, {0x3d, 0xed, 0x93, 0xff}}},\n    {{{   420,    485,  -6344}, 0, {   688,    378}, {0x39, 0x4e, 0xaf, 0xff}}},\n    {{{   369,    491,  -6374}, 0, {   664,    364}, {0x39, 0x4e, 0xaf, 0xff}}},\n    {{{   376,    548,  -6314}, 0, {   666,    394}, {0x39, 0x4e, 0xaf, 0xff}}},\n};\n\n// 0x07009570 - 0x07009660\nstatic const Vtx cotmc_seg7_vertex_07009570[] = {\n    {{{   369,    491,  -6374}, 0, {   664,    364}, {0xc2, 0xfc, 0x92, 0xff}}},\n    {{{   352,    355,  -6359}, 0, {   654,    372}, {0xc2, 0xfc, 0x92, 0xff}}},\n    {{{   313,    357,  -6337}, 0, {   636,    382}, {0xc2, 0xfc, 0x92, 0xff}}},\n    {{{   349,    352,  -5792}, 0, {   654,    654}, {0x7d, 0xf5, 0x0c, 0xff}}},\n    {{{   348,    338,  -5795}, 0, {   652,    652}, {0x7d, 0xf5, 0x0c, 0xff}}},\n    {{{   350,    352,  -5802}, 0, {   654,    650}, {0x7d, 0xf5, 0x0c, 0xff}}},\n    {{{   348,    338,  -5795}, 0, {   652,    652}, {0x09, 0xe5, 0x7b, 0xff}}},\n    {{{   349,    352,  -5792}, 0, {   654,    654}, {0x09, 0xe5, 0x7b, 0xff}}},\n    {{{   336,    352,  -5791}, 0, {   646,    654}, {0x09, 0xe5, 0x7b, 0xff}}},\n    {{{   336,    352,  -5791}, 0, {   646,    654}, {0x01, 0x7e, 0x0e, 0xff}}},\n    {{{   349,    352,  -5792}, 0, {   654,    654}, {0x01, 0x7e, 0x0e, 0xff}}},\n    {{{   343,    353,  -5800}, 0, {   650,    650}, {0x01, 0x7e, 0x0e, 0xff}}},\n    {{{   343,    353,  -5800}, 0, {   650,    650}, {0x12, 0x7d, 0x01, 0xff}}},\n    {{{   349,    352,  -5792}, 0, {   654,    654}, {0x12, 0x7d, 0x01, 0xff}}},\n    {{{   350,    352,  -5802}, 0, {   654,    650}, {0x12, 0x7d, 0x01, 0xff}}},\n};\n\n// 0x07009660 - 0x07009760\nstatic const Vtx cotmc_seg7_vertex_07009660[] = {\n    {{{  -329,    360,  -6114}, 0, {   314,    494}, {0xc8, 0x57, 0xb8, 0xff}}},\n    {{{  -339,    386,  -6075}, 0, {   310,    512}, {0xc8, 0x57, 0xb8, 0xff}}},\n    {{{  -299,    362,  -6135}, 0, {   330,    484}, {0xc8, 0x57, 0xb8, 0xff}}},\n    {{{  -339,    386,  -6075}, 0, {   310,    512}, {0xce, 0x71, 0x1c, 0xff}}},\n    {{{  -312,    387,  -6031}, 0, {   322,    534}, {0xce, 0x71, 0x1c, 0xff}}},\n    {{{  -306,    402,  -6080}, 0, {   326,    510}, {0xce, 0x71, 0x1c, 0xff}}},\n    {{{  -339,    386,  -6075}, 0, {   310,    512}, {0x9a, 0x2a, 0x3d, 0xff}}},\n    {{{  -341,    358,  -6059}, 0, {   308,    520}, {0x9a, 0x2a, 0x3d, 0xff}}},\n    {{{  -338,    358,  -6054}, 0, {   310,    524}, {0x9a, 0x2a, 0x3d, 0xff}}},\n    {{{  -312,    387,  -6031}, 0, {   322,    534}, {0x9a, 0x2a, 0x3d, 0xff}}},\n    {{{  -341,    358,  -6059}, 0, {   308,    520}, {0x85, 0xfa, 0xe5, 0xff}}},\n    {{{  -339,    386,  -6075}, 0, {   310,    512}, {0x85, 0xfa, 0xe5, 0xff}}},\n    {{{  -329,    360,  -6114}, 0, {   314,    494}, {0x85, 0xfa, 0xe5, 0xff}}},\n    {{{  -339,    386,  -6075}, 0, {   310,    512}, {0xca, 0x59, 0xb9, 0xff}}},\n    {{{  -306,    402,  -6080}, 0, {   326,    510}, {0xca, 0x59, 0xb9, 0xff}}},\n    {{{  -299,    362,  -6135}, 0, {   330,    484}, {0xca, 0x59, 0xb9, 0xff}}},\n};\n\n// 0x07009760 - 0x07009850\nstatic const Vtx cotmc_seg7_vertex_07009760[] = {\n    {{{  -299,    362,  -6135}, 0, {   330,    484}, {0x47, 0x58, 0xc9, 0xff}}},\n    {{{  -306,    402,  -6080}, 0, {   326,    510}, {0x47, 0x58, 0xc9, 0xff}}},\n    {{{  -276,    386,  -6067}, 0, {   340,    518}, {0x47, 0x58, 0xc9, 0xff}}},\n    {{{  -299,    362,  -6135}, 0, {   330,    484}, {0x4a, 0x56, 0xc9, 0xff}}},\n    {{{  -276,    386,  -6067}, 0, {   340,    518}, {0x4a, 0x56, 0xc9, 0xff}}},\n    {{{  -275,    362,  -6103}, 0, {   342,    498}, {0x4a, 0x56, 0xc9, 0xff}}},\n    {{{  -276,    386,  -6067}, 0, {   340,    518}, {0x2a, 0x70, 0x27, 0xff}}},\n    {{{  -306,    402,  -6080}, 0, {   326,    510}, {0x2a, 0x70, 0x27, 0xff}}},\n    {{{  -312,    387,  -6031}, 0, {   322,    534}, {0x2a, 0x70, 0x27, 0xff}}},\n    {{{  -138,    360,  -6432}, 0, {   410,    334}, {0xaf, 0x3a, 0xb3, 0xff}}},\n    {{{   -93,    421,  -6433}, 0, {   432,    334}, {0xaf, 0x3a, 0xb3, 0xff}}},\n    {{{   -65,    396,  -6481}, 0, {   446,    310}, {0xaf, 0x3a, 0xb3, 0xff}}},\n    {{{  -276,    386,  -6067}, 0, {   340,    518}, {0x55, 0x2b, 0x53, 0xff}}},\n    {{{  -312,    387,  -6031}, 0, {   322,    534}, {0x55, 0x2b, 0x53, 0xff}}},\n    {{{  -285,    361,  -6045}, 0, {   336,    528}, {0x55, 0x2b, 0x53, 0xff}}},\n};\n\n// 0x07009850 - 0x07009940\nstatic const Vtx cotmc_seg7_vertex_07009850[] = {\n    {{{  -277,    361,  -6053}, 0, {   340,    524}, {0x54, 0x2b, 0x54, 0xff}}},\n    {{{  -276,    386,  -6067}, 0, {   340,    518}, {0x54, 0x2b, 0x54, 0xff}}},\n    {{{  -285,    361,  -6045}, 0, {   336,    528}, {0x54, 0x2b, 0x54, 0xff}}},\n    {{{  -275,    362,  -6103}, 0, {   342,    498}, {0x7e, 0xfe, 0x05, 0xff}}},\n    {{{  -276,    386,  -6067}, 0, {   340,    518}, {0x7e, 0xfe, 0x05, 0xff}}},\n    {{{  -277,    361,  -6053}, 0, {   340,    524}, {0x7e, 0xfe, 0x05, 0xff}}},\n    {{{  -285,    361,  -6045}, 0, {   336,    528}, {0x21, 0xe3, 0x76, 0xff}}},\n    {{{  -312,    387,  -6031}, 0, {   322,    534}, {0x21, 0xe3, 0x76, 0xff}}},\n    {{{  -312,    359,  -6038}, 0, {   324,    532}, {0x21, 0xe3, 0x76, 0xff}}},\n    {{{  -312,    359,  -6038}, 0, {   324,    532}, {0xc0, 0xe6, 0x6a, 0xff}}},\n    {{{  -312,    387,  -6031}, 0, {   322,    534}, {0xc0, 0xe6, 0x6a, 0xff}}},\n    {{{  -338,    358,  -6054}, 0, {   310,    524}, {0xc0, 0xe6, 0x6a, 0xff}}},\n    {{{  -138,    360,  -6432}, 0, {   410,    334}, {0xaf, 0x3a, 0xb2, 0xff}}},\n    {{{   -65,    396,  -6481}, 0, {   446,    310}, {0xaf, 0x3a, 0xb2, 0xff}}},\n    {{{   -97,    358,  -6476}, 0, {   430,    312}, {0xaf, 0x3a, 0xb2, 0xff}}},\n};\n\n// 0x07009940 - 0x07009A30\nstatic const Vtx cotmc_seg7_vertex_07009940[] = {\n    {{{   -97,    358,  -6476}, 0, {   430,    312}, {0x04, 0xed, 0x83, 0xff}}},\n    {{{   -65,    396,  -6481}, 0, {   446,    310}, {0x04, 0xed, 0x83, 0xff}}},\n    {{{   -25,    360,  -6474}, 0, {   466,    314}, {0x04, 0xed, 0x83, 0xff}}},\n    {{{   -93,    421,  -6433}, 0, {   432,    334}, {0x01, 0x70, 0xc7, 0xff}}},\n    {{{    -8,    424,  -6425}, 0, {   474,    338}, {0x01, 0x70, 0xc7, 0xff}}},\n    {{{   -65,    396,  -6481}, 0, {   446,    310}, {0x01, 0x70, 0xc7, 0xff}}},\n    {{{   -25,    360,  -6474}, 0, {   466,    314}, {0x41, 0x36, 0xa2, 0xff}}},\n    {{{   -65,    396,  -6481}, 0, {   446,    310}, {0x41, 0x36, 0xa2, 0xff}}},\n    {{{    -8,    424,  -6425}, 0, {   474,    338}, {0x41, 0x36, 0xa2, 0xff}}},\n    {{{   -93,    421,  -6433}, 0, {   432,    334}, {0xf9, 0x7a, 0x22, 0xff}}},\n    {{{   -76,    406,  -6376}, 0, {   440,    362}, {0xf9, 0x7a, 0x22, 0xff}}},\n    {{{    -8,    424,  -6425}, 0, {   474,    338}, {0xf9, 0x7a, 0x22, 0xff}}},\n    {{{  -110,    363,  -6381}, 0, {   424,    360}, {0xa2, 0x46, 0x2f, 0xff}}},\n    {{{   -93,    421,  -6433}, 0, {   432,    334}, {0xa2, 0x46, 0x2f, 0xff}}},\n    {{{  -138,    360,  -6432}, 0, {   410,    334}, {0xa2, 0x46, 0x2f, 0xff}}},\n};\n\n// 0x07009A30 - 0x07009B20\nstatic const Vtx cotmc_seg7_vertex_07009A30[] = {\n    {{{  -110,    363,  -6381}, 0, {   424,    360}, {0xa1, 0x45, 0x2e, 0xff}}},\n    {{{   -76,    406,  -6376}, 0, {   440,    362}, {0xa1, 0x45, 0x2e, 0xff}}},\n    {{{   -93,    421,  -6433}, 0, {   432,    334}, {0xa1, 0x45, 0x2e, 0xff}}},\n    {{{   -30,    365,  -6368}, 0, {   464,    366}, {0xec, 0x01, 0x7d, 0xff}}},\n    {{{   -76,    406,  -6376}, 0, {   440,    362}, {0xec, 0x01, 0x7d, 0xff}}},\n    {{{  -110,    363,  -6381}, 0, {   424,    360}, {0xec, 0x01, 0x7d, 0xff}}},\n    {{{   -30,    365,  -6368}, 0, {   464,    366}, {0x70, 0x0c, 0x38, 0xff}}},\n    {{{    -4,    363,  -6419}, 0, {   476,    342}, {0x70, 0x0c, 0x38, 0xff}}},\n    {{{    -8,    424,  -6425}, 0, {   474,    338}, {0x70, 0x0c, 0x38, 0xff}}},\n    {{{   -76,    406,  -6376}, 0, {   440,    362}, {0x2f, 0x47, 0x5d, 0xff}}},\n    {{{   -30,    365,  -6368}, 0, {   464,    366}, {0x2f, 0x47, 0x5d, 0xff}}},\n    {{{    -8,    424,  -6425}, 0, {   474,    338}, {0x2f, 0x47, 0x5d, 0xff}}},\n    {{{   -25,    360,  -6474}, 0, {   466,    314}, {0x3f, 0x37, 0xa2, 0xff}}},\n    {{{    -8,    424,  -6425}, 0, {   474,    338}, {0x3f, 0x37, 0xa2, 0xff}}},\n    {{{   -19,    360,  -6470}, 0, {   468,    316}, {0x3f, 0x37, 0xa2, 0xff}}},\n};\n\n// 0x07009B20 - 0x07009B50\nstatic const Vtx cotmc_seg7_vertex_07009B20[] = {\n    {{{   -19,    360,  -6470}, 0, {   468,    316}, {0x79, 0x04, 0xdc, 0xff}}},\n    {{{    -8,    424,  -6425}, 0, {   474,    338}, {0x79, 0x04, 0xdc, 0xff}}},\n    {{{    -4,    363,  -6419}, 0, {   476,    342}, {0x79, 0x04, 0xdc, 0xff}}},\n};\n\n// 0x07009B50 - 0x0700A160\nstatic const Gfx cotmc_seg7_dl_07009B50[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cotmc_seg7_texture_07001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&cotmc_seg7_lights_07007E88.l, 1),\n    gsSPLight(&cotmc_seg7_lights_07007E88.a, 2),\n    gsSPVertex(cotmc_seg7_vertex_07007EA0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07007F90, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07008080, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07008170, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07008260, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07008350, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07008440, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0,  9, 11, 15, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07008540, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07008640, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07008730, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07008820, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07008920, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07008A10, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07008B10, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07008C00, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07008CF0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07008DE0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07008ED0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07008FC0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_070090B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_070091A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07009290, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07009390, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07009480, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07009570, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07009660, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07009760, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07009850, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07009940, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07009A30, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_07009B20, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A160 - 0x0700A1E0\nconst Gfx cotmc_seg7_dl_0700A160[] = {\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_TEXTURE_GEN),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(cotmc_seg7_dl_07009B50),\n    gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_TEXTURE_GEN),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/cotmc/areas/1/3/model.inc.c",
    "content": "// 0x0700A1E0 - 0x0700A2E0\nstatic const Vtx cotmc_seg7_vertex_0700A1E0[] = {\n    {{{  -262,      0,  -3526}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -286,      0,  -3582}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -292,      0,  -3520}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -227,      0,  -3275}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   -84,      0,  -3544}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -257,      0,  -3270}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -563,      0,  -3860}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -563,      0,  -1632}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -157,      0,  -1841}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   -35,      0,  -2711}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   -64,      0,  -3354}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{    36,      0,  -3565}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   255,      0,  -4466}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   564,      0,  -3278}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   564,      0,  -3999}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{    50,      0,  -3387}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700A2E0 - 0x0700A3D0\nstatic const Vtx cotmc_seg7_vertex_0700A2E0[] = {\n    {{{    50,      0,  -3387}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   156,      0,  -3599}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{    36,      0,  -3565}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   166,      0,  -3407}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   330,      0,  -3661}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   341,      0,  -3413}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   255,      0,  -4466}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   403,      0,  -3337}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   564,      0,  -3278}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   388,      0,  -4829}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   564,      0,  -4781}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   564,      0,  -3999}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   537,      0,  -4960}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   661,      0,  -4877}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   628,      0,  -4947}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700A3D0 - 0x0700A4B8\nstatic const Gfx cotmc_seg7_dl_0700A3D0[] = {\n    gsSPVertex(cotmc_seg7_vertex_0700A1E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 5,  3,  0, 0x0,  5,  0,  2, 0x0),\n    gsSP2Triangles( 2,  1,  6, 0x0,  7,  5,  2, 0x0),\n    gsSP2Triangles( 2,  6,  7, 0x0,  7,  8,  5, 0x0),\n    gsSP2Triangles( 8,  9,  5, 0x0,  9,  3,  5, 0x0),\n    gsSP2Triangles( 3, 10,  4, 0x0, 10, 11,  4, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 10, 15, 11, 0x0),\n    gsSPVertex(cotmc_seg7_vertex_0700A2E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 3,  4,  1, 0x0,  3,  5,  4, 0x0),\n    gsSP2Triangles( 6,  4,  7, 0x0,  4,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6, 10, 0x0),\n    gsSP2Triangles( 6, 11, 10, 0x0,  9, 10, 12, 0x0),\n    gsSP2Triangles(10, 13, 14, 0x0, 10, 14, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A4B8 - 0x0700A508\nconst Gfx cotmc_seg7_dl_0700A4B8[] = {\n    gsDPPipeSync(),\n    gsDPSetEnvColor(255, 255, 255, 180),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsSPDisplayList(cotmc_seg7_dl_0700A3D0),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/cotmc/areas/1/collision.inc.c",
    "content": "// 0x0700A508 - 0x0700BD38\nconst Collision cotmc_seg7_collision_level[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x152),\n    COL_VERTEX(-666, -1791, 3584),\n    COL_VERTEX(-666, -1791, 4301),\n    COL_VERTEX(667, -1791, 4301),\n    COL_VERTEX(667, -1791, 3584),\n    COL_VERTEX(-214, 20, 1090),\n    COL_VERTEX(36, 20, 597),\n    COL_VERTEX(-563, 20, 1105),\n    COL_VERTEX(-563, 20, 1263),\n    COL_VERTEX(-173, 0, 1140),\n    COL_VERTEX(110, 0, 597),\n    COL_VERTEX(-563, 20, 376),\n    COL_VERTEX(-563, 0, 1340),\n    COL_VERTEX(-134, 0, -308),\n    COL_VERTEX(-174, 20, -212),\n    COL_VERTEX(-563, 20, -291),\n    COL_VERTEX(-563, 0, -413),\n    COL_VERTEX(1076, 256, -3966),\n    COL_VERTEX(615, 256, -3966),\n    COL_VERTEX(615, 256, -3311),\n    COL_VERTEX(564, 256, -3999),\n    COL_VERTEX(564, 256, -3278),\n    COL_VERTEX(1076, 256, -3311),\n    COL_VERTEX(255, 256, -4466),\n    COL_VERTEX(352, 357, -6269),\n    COL_VERTEX(492, 352, -6143),\n    COL_VERTEX(424, 352, -6305),\n    COL_VERTEX(313, 498, -6292),\n    COL_VERTEX(313, 498, -6337),\n    COL_VERTEX(0, 377, -6143),\n    COL_VERTEX(313, 357, -6337),\n    COL_VERTEX(313, 358, -6292),\n    COL_VERTEX(395, 491, -6377),\n    COL_VERTEX(352, 492, -6269),\n    COL_VERTEX(343, 353, -5800),\n    COL_VERTEX(336, 352, -5791),\n    COL_VERTEX(348, 338, -5795),\n    COL_VERTEX(349, 352, -5792),\n    COL_VERTEX(-329, 360, -6114),\n    COL_VERTEX(-491, 352, -6143),\n    COL_VERTEX(-339, 386, -6075),\n    COL_VERTEX(-341, 358, -6059),\n    COL_VERTEX(-299, 362, -6135),\n    COL_VERTEX(-276, 386, -6067),\n    COL_VERTEX(-275, 362, -6103),\n    COL_VERTEX(-277, 361, -6053),\n    COL_VERTEX(-347, 352, -5795),\n    COL_VERTEX(-312, 359, -6038),\n    COL_VERTEX(-285, 361, -6045),\n    COL_VERTEX(-138, 360, -6432),\n    COL_VERTEX(-110, 363, -6381),\n    COL_VERTEX(-347, 352, -6491),\n    COL_VERTEX(-97, 358, -6476),\n    COL_VERTEX(-25, 360, -6474),\n    COL_VERTEX(-93, 421, -6433),\n    COL_VERTEX(0, 352, -6635),\n    COL_VERTEX(-30, 365, -6368),\n    COL_VERTEX(-76, 406, -6376),\n    COL_VERTEX(-4, 363, -6419),\n    COL_VERTEX(-19, 360, -6470),\n    COL_VERTEX(123, 256, -5574),\n    COL_VERTEX(159, 256, -5027),\n    COL_VERTEX(305, 267, -5312),\n    COL_VERTEX(-4, 256, -5298),\n    COL_VERTEX(388, 256, -4829),\n    COL_VERTEX(564, 256, -4781),\n    COL_VERTEX(307, 259, -3653),\n    COL_VERTEX(-292, 140, -3520),\n    COL_VERTEX(-563, 123, -1632),\n    COL_VERTEX(-257, 140, -3270),\n    COL_VERTEX(-157, 123, -1841),\n    COL_VERTEX(-35, 123, -2711),\n    COL_VERTEX(179, 94, -1705),\n    COL_VERTEX(93, 0, -1869),\n    COL_VERTEX(53, 0, -1175),\n    COL_VERTEX(215, 0, -681),\n    COL_VERTEX(176, 73, -1196),\n    COL_VERTEX(305, 46, -724),\n    COL_VERTEX(435, 67, -520),\n    COL_VERTEX(166, 280, -3407),\n    COL_VERTEX(50, 269, -3387),\n    COL_VERTEX(-64, 234, -3354),\n    COL_VERTEX(-227, 154, -3275),\n    COL_VERTEX(424, 485, -6305),\n    COL_VERTEX(395, 352, -6377),\n    COL_VERTEX(661, 256, -4877),\n    COL_VERTEX(628, 256, -4947),\n    COL_VERTEX(403, 256, -3337),\n    COL_VERTEX(376, 548, -6314),\n    COL_VERTEX(348, 352, -6491),\n    COL_VERTEX(0, 352, -5651),\n    COL_VERTEX(350, 352, -5802),\n    COL_VERTEX(-312, 387, -6031),\n    COL_VERTEX(-338, 358, -6054),\n    COL_VERTEX(-306, 402, -6080),\n    COL_VERTEX(-65, 396, -6481),\n    COL_VERTEX(-8, 424, -6425),\n    COL_VERTEX(402, 256, -5592),\n    COL_VERTEX(599, 256, -5286),\n    COL_VERTEX(487, 256, -5051),\n    COL_VERTEX(537, 256, -4960),\n    COL_VERTEX(341, 256, -3413),\n    COL_VERTEX(-563, 123, -3860),\n    COL_VERTEX(-286, 123, -3582),\n    COL_VERTEX(-262, 123, -3526),\n    COL_VERTEX(-262, 154, -3526),\n    COL_VERTEX(-227, 123, -3275),\n    COL_VERTEX(564, 123, -1958),\n    COL_VERTEX(564, 0, -2309),\n    COL_VERTEX(564, 123, -608),\n    COL_VERTEX(357, 0, -426),\n    COL_VERTEX(564, 0, -376),\n    COL_VERTEX(156, 280, -3599),\n    COL_VERTEX(36, 269, -3565),\n    COL_VERTEX(-84, 234, -3544),\n    COL_VERTEX(972, -665, 2832),\n    COL_VERTEX(-1075, -665, 2832),\n    COL_VERTEX(-1075, 870, 2832),\n    COL_VERTEX(972, 870, 2832),\n    COL_VERTEX(564, -153, -2596),\n    COL_VERTEX(19, -153, -2029),\n    COL_VERTEX(473, -203, -4740),\n    COL_VERTEX(-2, -225, -4715),\n    COL_VERTEX(564, -153, -4781),\n    COL_VERTEX(-122, -153, -1203),\n    COL_VERTEX(-412, -203, -4740),\n    COL_VERTEX(-563, -153, -849),\n    COL_VERTEX(9, -153, -651),\n    COL_VERTEX(96, -153, -567),\n    COL_VERTEX(308, -153, -254),\n    COL_VERTEX(333, -153, 593),\n    COL_VERTEX(564, -153, -217),\n    COL_VERTEX(-27, -153, 1317),\n    COL_VERTEX(-563, -153, -4781),\n    COL_VERTEX(564, -80, 3379),\n    COL_VERTEX(108, -255, -5053),\n    COL_VERTEX(1362, -153, -5579),\n    COL_VERTEX(1090, -255, -5692),\n    COL_VERTEX(451, -255, -5053),\n    COL_VERTEX(-243, -273, -5716),\n    COL_VERTEX(-589, -358, -5918),\n    COL_VERTEX(-249, -386, -6583),\n    COL_VERTEX(-911, -255, -5514),\n    COL_VERTEX(-541, -409, -6769),\n    COL_VERTEX(92, -257, -5293),\n    COL_VERTEX(0, -267, -5746),\n    COL_VERTEX(363, -311, -5488),\n    COL_VERTEX(0, -382, -6540),\n    COL_VERTEX(646, -379, -6747),\n    COL_VERTEX(564, -255, -7505),\n    COL_VERTEX(1090, -308, -6651),\n    COL_VERTEX(868, -367, -6219),\n    COL_VERTEX(281, -343, -5862),\n    COL_VERTEX(549, -356, -5900),\n    COL_VERTEX(1362, -153, -6707),\n    COL_VERTEX(-93, -468, -7454),\n    COL_VERTEX(-338, -562, -7372),\n    COL_VERTEX(-65, -552, -7334),\n    COL_VERTEX(-439, -422, -7070),\n    COL_VERTEX(-555, -285, -7479),\n    COL_VERTEX(-329, -490, -7479),\n    COL_VERTEX(-1361, -153, -6707),\n    COL_VERTEX(-1089, -255, -6651),\n    COL_VERTEX(236, -490, -7479),\n    COL_VERTEX(339, -562, -7372),\n    COL_VERTEX(-1361, -153, -5579),\n    COL_VERTEX(-1089, -255, -6068),\n    COL_VERTEX(-1225, -204, -5635),\n    COL_VERTEX(-1101, -175, -5704),\n    COL_VERTEX(-666, -460, 3584),\n    COL_VERTEX(564, -153, 3072),\n    COL_VERTEX(-563, -153, 3072),\n    COL_VERTEX(-563, -153, 1617),\n    COL_VERTEX(-450, -255, -5053),\n    COL_VERTEX(-563, -80, 3379),\n    COL_VERTEX(-280, -260, -5862),\n    COL_VERTEX(-396, -380, -6143),\n    COL_VERTEX(-280, -376, -6424),\n    COL_VERTEX(-960, -291, -5945),\n    COL_VERTEX(158, -423, -6879),\n    COL_VERTEX(201, -256, -5113),\n    COL_VERTEX(419, -263, -5129),\n    COL_VERTEX(493, -282, -5285),\n    COL_VERTEX(-64, -434, -6903),\n    COL_VERTEX(177, -297, -5476),\n    COL_VERTEX(281, -324, -6424),\n    COL_VERTEX(397, -344, -6143),\n    COL_VERTEX(404, -385, -6939),\n    COL_VERTEX(363, -312, -5488),\n    COL_VERTEX(347, -450, -7479),\n    COL_VERTEX(-552, -282, -7137),\n    COL_VERTEX(-563, -153, -7505),\n    COL_VERTEX(564, -153, -7505),\n    COL_VERTEX(667, -460, 3584),\n    COL_VERTEX(749, 256, -3495),\n    COL_VERTEX(749, 684, -3413),\n    COL_VERTEX(749, 256, -3413),\n    COL_VERTEX(749, 684, -3495),\n    COL_VERTEX(667, 256, -3495),\n    COL_VERTEX(667, 684, -3413),\n    COL_VERTEX(667, 256, -3413),\n    COL_VERTEX(667, 684, -3495),\n    COL_VERTEX(667, 256, -3864),\n    COL_VERTEX(749, 684, -3864),\n    COL_VERTEX(749, 256, -3864),\n    COL_VERTEX(749, 684, -3782),\n    COL_VERTEX(749, 256, -3782),\n    COL_VERTEX(667, 684, -3782),\n    COL_VERTEX(667, 684, -3864),\n    COL_VERTEX(667, 256, -3782),\n    COL_VERTEX(-563, 4198, -7505),\n    COL_VERTEX(564, 4198, -7505),\n    COL_VERTEX(-1361, 4198, -6707),\n    COL_VERTEX(-563, 717, -7505),\n    COL_VERTEX(564, 717, -7505),\n    COL_VERTEX(1362, 4198, -6707),\n    COL_VERTEX(1362, 717, -6707),\n    COL_VERTEX(1362, 4198, -5579),\n    COL_VERTEX(564, 4198, -4781),\n    COL_VERTEX(-563, 4198, -4781),\n    COL_VERTEX(-1361, 4198, -5579),\n    COL_VERTEX(-1361, 717, -6707),\n    COL_VERTEX(1362, 717, -5579),\n    COL_VERTEX(564, 717, -4781),\n    COL_VERTEX(564, 717, 3379),\n    COL_VERTEX(346, 908, 3379),\n    COL_VERTEX(0, 1005, 3379),\n    COL_VERTEX(-563, 717, -4781),\n    COL_VERTEX(-351, 906, 3379),\n    COL_VERTEX(-1361, 717, -5579),\n    COL_VERTEX(-666, 819, 4301),\n    COL_VERTEX(667, 819, 3584),\n    COL_VERTEX(-402, 1009, 3584),\n    COL_VERTEX(564, 0, 3379),\n    COL_VERTEX(564, 0, 2970),\n    COL_VERTEX(564, 160, -3311),\n    COL_VERTEX(661, 190, -4877),\n    COL_VERTEX(564, 0, -4781),\n    COL_VERTEX(-563, 0, -4781),\n    COL_VERTEX(-563, 72, -3860),\n    COL_VERTEX(-1361, 0, -5579),\n    COL_VERTEX(-1361, 0, -6707),\n    COL_VERTEX(-563, 0, -7505),\n    COL_VERTEX(564, 0, -7505),\n    COL_VERTEX(1362, 0, -6707),\n    COL_VERTEX(1362, 0, -5579),\n    COL_VERTEX(564, 686, -3278),\n    COL_VERTEX(564, 717, -3309),\n    COL_VERTEX(564, 162, -4781),\n    COL_VERTEX(628, 190, -4947),\n    COL_VERTEX(255, 190, -4466),\n    COL_VERTEX(615, 684, -3311),\n    COL_VERTEX(615, 684, -3966),\n    COL_VERTEX(1076, 684, -3311),\n    COL_VERTEX(1076, 684, -3966),\n    COL_VERTEX(403, 208, -3337),\n    COL_VERTEX(-563, 717, 3379),\n    COL_VERTEX(-563, 717, 1105),\n    COL_VERTEX(-666, 717, 478),\n    COL_VERTEX(-563, 717, 376),\n    COL_VERTEX(-563, 72, -1632),\n    COL_VERTEX(-35, 72, -2711),\n    COL_VERTEX(-227, 72, -3275),\n    COL_VERTEX(-4746, 717, 151),\n    COL_VERTEX(-4467, 20, 402),\n    COL_VERTEX(-3814, 20, 259),\n    COL_VERTEX(-4094, 20, 470),\n    COL_VERTEX(-2986, 717, 295),\n    COL_VERTEX(-2986, 20, 295),\n    COL_VERTEX(-1380, 717, 927),\n    COL_VERTEX(-2855, 717, -228),\n    COL_VERTEX(-3755, 20, -261),\n    COL_VERTEX(-4047, 20, -513),\n    COL_VERTEX(-4443, 20, -576),\n    COL_VERTEX(-4746, 717, -360),\n    COL_VERTEX(-1249, 717, 403),\n    COL_VERTEX(-1380, 20, 927),\n    COL_VERTEX(0, 1107, 3584),\n    COL_VERTEX(397, 1011, 3584),\n    COL_VERTEX(123, 187, -5574),\n    COL_VERTEX(363, 120, -5488),\n    COL_VERTEX(402, 187, -5592),\n    COL_VERTEX(493, 120, -5285),\n    COL_VERTEX(599, 187, -5286),\n    COL_VERTEX(-4, 187, -5298),\n    COL_VERTEX(159, 187, -5027),\n    COL_VERTEX(419, 120, -5129),\n    COL_VERTEX(201, 120, -5113),\n    COL_VERTEX(92, 120, -5293),\n    COL_VERTEX(177, 120, -5476),\n    COL_VERTEX(348, 291, -5795),\n    COL_VERTEX(492, 291, -6143),\n    COL_VERTEX(0, 291, -5651),\n    COL_VERTEX(348, 291, -6491),\n    COL_VERTEX(-347, 291, -6491),\n    COL_VERTEX(-491, 291, -6143),\n    COL_VERTEX(-347, 291, -5795),\n    COL_VERTEX(0, 201, -6540),\n    COL_VERTEX(281, 201, -6424),\n    COL_VERTEX(281, 201, -5862),\n    COL_VERTEX(397, 201, -6143),\n    COL_VERTEX(0, 201, -5746),\n    COL_VERTEX(-280, 201, -5862),\n    COL_VERTEX(-396, 201, -6143),\n    COL_VERTEX(-280, 201, -6424),\n    COL_VERTEX(537, 190, -4960),\n    COL_VERTEX(-262, 72, -3526),\n    COL_VERTEX(-84, 195, -3544),\n    COL_VERTEX(307, 209, -3653),\n    COL_VERTEX(156, 240, -3599),\n    COL_VERTEX(36, 236, -3565),\n    COL_VERTEX(564, 686, -3999),\n    COL_VERTEX(667, 819, 4301),\n    COL_VERTEX(-666, 819, 3584),\n    COL_VERTEX(-563, 0, 3379),\n    COL_VERTEX(-563, 0, 2970),\n    COL_VERTEX(-286, 72, -3582),\n    COL_VERTEX(341, 207, -3413),\n    COL_VERTEX(564, 717, -3968),\n    COL_VERTEX(388, 190, -4829),\n    COL_VERTEX(-666, 717, 1002),\n    COL_VERTEX(-666, 20, 1002),\n    COL_VERTEX(-157, 72, -1841),\n    COL_VERTEX(-666, 20, 478),\n    COL_VERTEX(-3755, 717, -261),\n    COL_VERTEX(-4443, 717, -576),\n    COL_VERTEX(-4047, 717, -513),\n    COL_VERTEX(-4746, 20, 151),\n    COL_VERTEX(-4467, 717, 402),\n    COL_VERTEX(-4746, 20, -360),\n    COL_VERTEX(-4094, 717, 470),\n    COL_VERTEX(-3814, 717, 259),\n    COL_VERTEX(-1249, 20, 403),\n    COL_VERTEX(-2855, 20, -228),\n    COL_VERTEX(487, 187, -5051),\n    COL_VERTEX(0, 291, -6635),\n    COL_VERTEX(166, 240, -3407),\n    COL_VERTEX(-64, 195, -3354),\n    COL_VERTEX(50, 236, -3387),\n    COL_TRI_INIT(SURFACE_DEFAULT, 354),\n    COL_TRI(209, 210, 211),\n    COL_TRI(211, 212, 209),\n    COL_TRI(209, 212, 213),\n    COL_TRI(209, 213, 210),\n    COL_TRI(210, 214, 211),\n    COL_TRI(210, 215, 214),\n    COL_TRI(210, 213, 215),\n    COL_TRI(214, 216, 211),\n    COL_TRI(216, 217, 211),\n    COL_TRI(218, 219, 211),\n    COL_TRI(217, 218, 211),\n    COL_TRI(211, 220, 212),\n    COL_TRI(214, 215, 221),\n    COL_TRI(214, 221, 216),\n    COL_TRI(216, 221, 222),\n    COL_TRI(216, 222, 217),\n    COL_TRI(217, 222, 223),\n    COL_TRI(217, 223, 224),\n    COL_TRI(217, 224, 225),\n    COL_TRI(218, 217, 225),\n    COL_TRI(229, 230, 311),\n    COL_TRI(226, 218, 255),\n    COL_TRI(218, 227, 255),\n    COL_TRI(218, 225, 227),\n    COL_TRI(219, 228, 220),\n    COL_TRI(219, 220, 211),\n    COL_TRI(229, 311, 2),\n    COL_TRI(229, 2, 1),\n    COL_TRI(229, 312, 230),\n    COL_TRI(2, 311, 230),\n    COL_TRI(2, 230, 3),\n    COL_TRI(223, 230, 277),\n    COL_TRI(230, 223, 192),\n    COL_TRI(1, 0, 312),\n    COL_TRI(1, 312, 229),\n    COL_TRI(231, 312, 255),\n    COL_TRI(168, 255, 312),\n    COL_TRI(168, 0, 3),\n    COL_TRI(168, 3, 192),\n    COL_TRI(173, 170, 314),\n    COL_TRI(168, 313, 255),\n    COL_TRI(168, 173, 313),\n    COL_TRI(223, 232, 192),\n    COL_TRI(232, 133, 192),\n    COL_TRI(233, 232, 223),\n    COL_TRI(110, 233, 223),\n    COL_TRI(110, 130, 233),\n    COL_TRI(233, 169, 133),\n    COL_TRI(233, 133, 232),\n    COL_TRI(169, 233, 130),\n    COL_TRI(170, 11, 314),\n    COL_TRI(170, 171, 11),\n    COL_TRI(173, 314, 313),\n    COL_TRI(108, 110, 223),\n    COL_TRI(118, 107, 236),\n    COL_TRI(118, 236, 122),\n    COL_TRI(135, 236, 244),\n    COL_TRI(135, 122, 236),\n    COL_TRI(107, 234, 236),\n    COL_TRI(234, 247, 236),\n    COL_TRI(235, 236, 247),\n    COL_TRI(236, 235, 244),\n    COL_TRI(125, 132, 237),\n    COL_TRI(125, 237, 15),\n    COL_TRI(226, 237, 239),\n    COL_TRI(237, 164, 239),\n    COL_TRI(237, 132, 164),\n    COL_TRI(238, 237, 226),\n    COL_TRI(237, 238, 259),\n    COL_TRI(237, 259, 15),\n    COL_TRI(226, 239, 228),\n    COL_TRI(228, 239, 240),\n    COL_TRI(239, 164, 160),\n    COL_TRI(239, 160, 240),\n    COL_TRI(228, 240, 220),\n    COL_TRI(220, 240, 241),\n    COL_TRI(240, 190, 241),\n    COL_TRI(240, 160, 190),\n    COL_TRI(159, 154, 190),\n    COL_TRI(220, 241, 212),\n    COL_TRI(212, 241, 242),\n    COL_TRI(241, 191, 242),\n    COL_TRI(241, 190, 191),\n    COL_TRI(191, 148, 153),\n    COL_TRI(188, 148, 191),\n    COL_TRI(154, 162, 191),\n    COL_TRI(212, 242, 213),\n    COL_TRI(213, 242, 243),\n    COL_TRI(242, 153, 243),\n    COL_TRI(242, 191, 153),\n    COL_TRI(213, 243, 215),\n    COL_TRI(215, 243, 244),\n    COL_TRI(243, 135, 244),\n    COL_TRI(243, 153, 135),\n    COL_TRI(215, 244, 221),\n    COL_TRI(244, 84, 221),\n    COL_TRI(244, 235, 84),\n    COL_TRI(223, 277, 224),\n    COL_TRI(247, 234, 307),\n    COL_TRI(245, 108, 223),\n    COL_TRI(246, 245, 223),\n    COL_TRI(245, 106, 108),\n    COL_TRI(245, 107, 106),\n    COL_TRI(20, 107, 245),\n    COL_TRI(18, 20, 245),\n    COL_TRI(18, 245, 250),\n    COL_TRI(107, 20, 234),\n    COL_TRI(234, 20, 254),\n    COL_TRI(234, 254, 307),\n    COL_TRI(247, 307, 249),\n    COL_TRI(84, 235, 248),\n    COL_TRI(84, 248, 85),\n    COL_TRI(84, 64, 221),\n    COL_TRI(64, 222, 221),\n    COL_TRI(222, 64, 19),\n    COL_TRI(222, 19, 310),\n    COL_TRI(222, 310, 317),\n    COL_TRI(248, 235, 247),\n    COL_TRI(253, 17, 16),\n    COL_TRI(250, 317, 251),\n    COL_TRI(250, 246, 317),\n    COL_TRI(251, 317, 310),\n    COL_TRI(252, 250, 251),\n    COL_TRI(252, 251, 253),\n    COL_TRI(253, 251, 17),\n    COL_TRI(251, 19, 17),\n    COL_TRI(251, 310, 19),\n    COL_TRI(255, 313, 314),\n    COL_TRI(21, 18, 250),\n    COL_TRI(21, 250, 252),\n    COL_TRI(250, 245, 246),\n    COL_TRI(254, 20, 86),\n    COL_TRI(6, 256, 255),\n    COL_TRI(255, 7, 6),\n    COL_TRI(11, 255, 314),\n    COL_TRI(255, 11, 7),\n    COL_TRI(6, 319, 256),\n    COL_TRI(6, 320, 319),\n    COL_TRI(10, 320, 6),\n    COL_TRI(256, 257, 258),\n    COL_TRI(256, 319, 257),\n    COL_TRI(257, 10, 258),\n    COL_TRI(258, 67, 101),\n    COL_TRI(258, 14, 67),\n    COL_TRI(258, 10, 14),\n    COL_TRI(101, 226, 258),\n    COL_TRI(69, 321, 260),\n    COL_TRI(67, 259, 321),\n    COL_TRI(67, 321, 69),\n    COL_TRI(259, 67, 14),\n    COL_TRI(102, 238, 101),\n    COL_TRI(101, 238, 226),\n    COL_TRI(14, 15, 259),\n    COL_TRI(260, 321, 259),\n    COL_TRI(261, 260, 259),\n    COL_TRI(238, 261, 259),\n    COL_TRI(10, 322, 320),\n    COL_TRI(218, 226, 228),\n    COL_TRI(102, 315, 238),\n    COL_TRI(238, 315, 261),\n    COL_TRI(262, 323, 269),\n    COL_TRI(262, 324, 325),\n    COL_TRI(262, 273, 324),\n    COL_TRI(263, 326, 262),\n    COL_TRI(262, 325, 323),\n    COL_TRI(263, 262, 327),\n    COL_TRI(264, 329, 330),\n    COL_TRI(264, 265, 329),\n    COL_TRI(265, 327, 329),\n    COL_TRI(262, 329, 327),\n    COL_TRI(262, 330, 329),\n    COL_TRI(265, 263, 327),\n    COL_TRI(266, 267, 330),\n    COL_TRI(267, 264, 330),\n    COL_TRI(262, 266, 330),\n    COL_TRI(268, 267, 266),\n    COL_TRI(269, 268, 266),\n    COL_TRI(262, 269, 266),\n    COL_TRI(270, 332, 269),\n    COL_TRI(270, 269, 323),\n    COL_TRI(269, 274, 268),\n    COL_TRI(271, 323, 325),\n    COL_TRI(271, 270, 323),\n    COL_TRI(272, 325, 324),\n    COL_TRI(272, 271, 325),\n    COL_TRI(273, 272, 324),\n    COL_TRI(273, 328, 272),\n    COL_TRI(262, 328, 273),\n    COL_TRI(267, 331, 332),\n    COL_TRI(267, 332, 270),\n    COL_TRI(269, 332, 331),\n    COL_TRI(262, 326, 328),\n    COL_TRI(272, 328, 326),\n    COL_TRI(267, 275, 331),\n    COL_TRI(268, 275, 267),\n    COL_TRI(272, 264, 267),\n    COL_TRI(270, 272, 267),\n    COL_TRI(272, 326, 263),\n    COL_TRI(218, 228, 219),\n    COL_TRI(270, 271, 272),\n    COL_TRI(257, 322, 10),\n    COL_TRI(274, 257, 319),\n    COL_TRI(274, 322, 257),\n    COL_TRI(275, 319, 320),\n    COL_TRI(275, 268, 319),\n    COL_TRI(274, 319, 268),\n    COL_TRI(275, 322, 331),\n    COL_TRI(275, 320, 322),\n    COL_TRI(274, 331, 322),\n    COL_TRI(269, 331, 274),\n    COL_TRI(253, 21, 252),\n    COL_TRI(272, 263, 265),\n    COL_TRI(272, 265, 264),\n    COL_TRI(276, 231, 227),\n    COL_TRI(231, 255, 227),\n    COL_TRI(276, 227, 225),\n    COL_TRI(276, 225, 224),\n    COL_TRI(277, 276, 224),\n    COL_TRI(253, 16, 21),\n    COL_TRI(97, 280, 96),\n    COL_TRI(96, 278, 59),\n    COL_TRI(96, 280, 278),\n    COL_TRI(278, 288, 287),\n    COL_TRI(278, 287, 283),\n    COL_TRI(279, 288, 278),\n    COL_TRI(280, 279, 278),\n    COL_TRI(59, 278, 283),\n    COL_TRI(59, 283, 62),\n    COL_TRI(281, 279, 280),\n    COL_TRI(282, 281, 280),\n    COL_TRI(97, 282, 280),\n    COL_TRI(283, 286, 284),\n    COL_TRI(283, 287, 286),\n    COL_TRI(62, 283, 284),\n    COL_TRI(62, 284, 60),\n    COL_TRI(284, 333, 98),\n    COL_TRI(60, 284, 98),\n    COL_TRI(284, 285, 333),\n    COL_TRI(284, 286, 285),\n    COL_TRI(98, 282, 97),\n    COL_TRI(98, 333, 282),\n    COL_TRI(282, 333, 285),\n    COL_TRI(282, 285, 281),\n    COL_TRI(89, 289, 35),\n    COL_TRI(281, 181, 145),\n    COL_TRI(281, 145, 279),\n    COL_TRI(285, 181, 281),\n    COL_TRI(279, 145, 183),\n    COL_TRI(279, 183, 288),\n    COL_TRI(285, 180, 181),\n    COL_TRI(286, 180, 285),\n    COL_TRI(286, 179, 180),\n    COL_TRI(287, 179, 286),\n    COL_TRI(288, 143, 287),\n    COL_TRI(287, 143, 179),\n    COL_TRI(288, 183, 143),\n    COL_TRI(45, 291, 89),\n    COL_TRI(89, 291, 289),\n    COL_TRI(89, 35, 34),\n    COL_TRI(35, 24, 90),\n    COL_TRI(35, 290, 24),\n    COL_TRI(35, 289, 290),\n    COL_TRI(289, 291, 300),\n    COL_TRI(289, 300, 298),\n    COL_TRI(289, 298, 299),\n    COL_TRI(290, 289, 299),\n    COL_TRI(291, 295, 301),\n    COL_TRI(291, 301, 300),\n    COL_TRI(45, 295, 291),\n    COL_TRI(24, 290, 292),\n    COL_TRI(24, 292, 25),\n    COL_TRI(292, 290, 299),\n    COL_TRI(292, 299, 297),\n    COL_TRI(88, 292, 334),\n    COL_TRI(292, 88, 83),\n    COL_TRI(292, 83, 25),\n    COL_TRI(292, 297, 296),\n    COL_TRI(292, 296, 334),\n    COL_TRI(88, 334, 54),\n    COL_TRI(293, 334, 296),\n    COL_TRI(54, 334, 293),\n    COL_TRI(297, 146, 296),\n    COL_TRI(54, 293, 50),\n    COL_TRI(50, 293, 294),\n    COL_TRI(294, 293, 303),\n    COL_TRI(293, 296, 303),\n    COL_TRI(50, 294, 38),\n    COL_TRI(295, 294, 302),\n    COL_TRI(294, 303, 302),\n    COL_TRI(38, 294, 295),\n    COL_TRI(38, 295, 45),\n    COL_TRI(295, 302, 301),\n    COL_TRI(296, 176, 303),\n    COL_TRI(296, 146, 176),\n    COL_TRI(298, 185, 299),\n    COL_TRI(299, 184, 297),\n    COL_TRI(299, 185, 184),\n    COL_TRI(297, 184, 146),\n    COL_TRI(300, 151, 298),\n    COL_TRI(298, 151, 185),\n    COL_TRI(300, 144, 151),\n    COL_TRI(301, 144, 300),\n    COL_TRI(301, 174, 144),\n    COL_TRI(302, 174, 301),\n    COL_TRI(303, 175, 302),\n    COL_TRI(302, 175, 174),\n    COL_TRI(249, 22, 63),\n    COL_TRI(303, 176, 175),\n    COL_TRI(254, 100, 316),\n    COL_TRI(254, 86, 100),\n    COL_TRI(254, 316, 307),\n    COL_TRI(65, 22, 249),\n    COL_TRI(65, 249, 307),\n    COL_TRI(249, 318, 247),\n    COL_TRI(99, 304, 318),\n    COL_TRI(99, 318, 63),\n    COL_TRI(249, 63, 318),\n    COL_TRI(304, 247, 318),\n    COL_TRI(85, 304, 99),\n    COL_TRI(85, 248, 304),\n    COL_TRI(304, 248, 247),\n    COL_TRI(78, 316, 100),\n    COL_TRI(78, 335, 316),\n    COL_TRI(70, 261, 105),\n    COL_TRI(305, 315, 102),\n    COL_TRI(69, 260, 70),\n    COL_TRI(70, 260, 261),\n    COL_TRI(305, 102, 103),\n    COL_TRI(306, 305, 103),\n    COL_TRI(66, 104, 103),\n    COL_TRI(81, 105, 336),\n    COL_TRI(105, 261, 336),\n    COL_TRI(68, 105, 81),\n    COL_TRI(307, 308, 111),\n    COL_TRI(307, 111, 65),\n    COL_TRI(111, 308, 309),\n    COL_TRI(111, 309, 112),\n    COL_TRI(308, 307, 335),\n    COL_TRI(309, 308, 337),\n    COL_TRI(308, 335, 337),\n    COL_TRI(309, 337, 336),\n    COL_TRI(113, 306, 103),\n    COL_TRI(307, 316, 335),\n    COL_TRI(79, 335, 78),\n    COL_TRI(79, 337, 335),\n    COL_TRI(112, 306, 113),\n    COL_TRI(112, 309, 306),\n    COL_TRI(306, 309, 336),\n    COL_TRI(306, 336, 261),\n    COL_TRI(305, 306, 261),\n    COL_TRI(113, 103, 104),\n    COL_TRI(80, 337, 79),\n    COL_TRI(80, 336, 337),\n    COL_TRI(81, 336, 80),\n    COL_TRI_INIT(SURFACE_DEATH_PLANE, 2),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI_INIT(SURFACE_FLOWING_WATER, 125),\n    COL_TRI_SPECIAL(118, 72, 107, 0x0),\n    COL_TRI_SPECIAL(118, 119, 72, 0x0),\n    COL_TRI_SPECIAL(120, 121, 118, 0x0),\n    COL_TRI_SPECIAL(118, 122, 120, 0x0),\n    COL_TRI_SPECIAL(119, 118, 121, 0x0),\n    COL_TRI_SPECIAL(119, 123, 72, 0x0),\n    COL_TRI_SPECIAL(123, 73, 72, 0x0),\n    COL_TRI_SPECIAL(123, 119, 124, 0x0),\n    COL_TRI_SPECIAL(119, 121, 124, 0x0),\n    COL_TRI_SPECIAL(125, 123, 124, 0x0),\n    COL_TRI_SPECIAL(125, 126, 123, 0x0),\n    COL_TRI_SPECIAL(127, 74, 123, 0x0),\n    COL_TRI_SPECIAL(74, 73, 123, 0x0),\n    COL_TRI_SPECIAL(123, 126, 127, 0x0),\n    COL_TRI_SPECIAL(8, 131, 129, 0x0),\n    COL_TRI_SPECIAL(74, 127, 109, 0x0),\n    COL_TRI_SPECIAL(127, 128, 109, 0x0),\n    COL_TRI_SPECIAL(129, 127, 126, 0x0),\n    COL_TRI_SPECIAL(129, 128, 127, 0x0),\n    COL_TRI_SPECIAL(109, 128, 110, 0x0),\n    COL_TRI_SPECIAL(128, 130, 110, 0x0),\n    COL_TRI_SPECIAL(130, 128, 129, 0x0),\n    COL_TRI_SPECIAL(129, 169, 130, 0x0),\n    COL_TRI_SPECIAL(9, 129, 126, 0x0),\n    COL_TRI_SPECIAL(9, 126, 12, 0x0),\n    COL_TRI_SPECIAL(8, 129, 9, 0x0),\n    COL_TRI_SPECIAL(131, 169, 129, 0x0),\n    COL_TRI_SPECIAL(126, 15, 12, 0x0),\n    COL_TRI_SPECIAL(126, 125, 15, 0x0),\n    COL_TRI_SPECIAL(125, 124, 132, 0x0),\n    COL_TRI_SPECIAL(11, 131, 8, 0x0),\n    COL_TRI_SPECIAL(11, 171, 131, 0x0),\n    COL_TRI_SPECIAL(131, 170, 169, 0x0),\n    COL_TRI_SPECIAL(131, 171, 170, 0x0),\n    COL_TRI_SPECIAL(133, 169, 170, 0x0),\n    COL_TRI_SPECIAL(139, 176, 140, 0x0),\n    COL_TRI_SPECIAL(134, 124, 121, 0x0),\n    COL_TRI_SPECIAL(134, 121, 120, 0x0),\n    COL_TRI_SPECIAL(134, 132, 124, 0x0),\n    COL_TRI_SPECIAL(122, 134, 120, 0x0),\n    COL_TRI_SPECIAL(135, 136, 122, 0x0),\n    COL_TRI_SPECIAL(136, 137, 122, 0x0),\n    COL_TRI_SPECIAL(122, 137, 134, 0x0),\n    COL_TRI_SPECIAL(138, 174, 139, 0x0),\n    COL_TRI_SPECIAL(139, 174, 175, 0x0),\n    COL_TRI_SPECIAL(139, 175, 176, 0x0),\n    COL_TRI_SPECIAL(140, 176, 146, 0x0),\n    COL_TRI_SPECIAL(140, 146, 147, 0x0),\n    COL_TRI_SPECIAL(140, 147, 178, 0x0),\n    COL_TRI_SPECIAL(140, 178, 182, 0x0),\n    COL_TRI_SPECIAL(142, 140, 182, 0x0),\n    COL_TRI_SPECIAL(134, 143, 138, 0x0),\n    COL_TRI_SPECIAL(134, 179, 143, 0x0),\n    COL_TRI_SPECIAL(137, 179, 134, 0x0),\n    COL_TRI_SPECIAL(138, 172, 134, 0x0),\n    COL_TRI_SPECIAL(134, 172, 132, 0x0),\n    COL_TRI_SPECIAL(139, 172, 138, 0x0),\n    COL_TRI_SPECIAL(137, 180, 179, 0x0),\n    COL_TRI_SPECIAL(143, 183, 138, 0x0),\n    COL_TRI_SPECIAL(144, 174, 138, 0x0),\n    COL_TRI_SPECIAL(144, 138, 183, 0x0),\n    COL_TRI_SPECIAL(145, 144, 183, 0x0),\n    COL_TRI_SPECIAL(145, 151, 144, 0x0),\n    COL_TRI_SPECIAL(146, 184, 147, 0x0),\n    COL_TRI_SPECIAL(136, 149, 150, 0x0),\n    COL_TRI_SPECIAL(147, 184, 185, 0x0),\n    COL_TRI_SPECIAL(147, 185, 152, 0x0),\n    COL_TRI_SPECIAL(148, 186, 147, 0x0),\n    COL_TRI_SPECIAL(149, 147, 150, 0x0),\n    COL_TRI_SPECIAL(150, 147, 152, 0x0),\n    COL_TRI_SPECIAL(149, 148, 147, 0x0),\n    COL_TRI_SPECIAL(147, 186, 178, 0x0),\n    COL_TRI_SPECIAL(151, 152, 185, 0x0),\n    COL_TRI_SPECIAL(152, 181, 136, 0x0),\n    COL_TRI_SPECIAL(152, 151, 145, 0x0),\n    COL_TRI_SPECIAL(136, 150, 152, 0x0),\n    COL_TRI_SPECIAL(152, 187, 181, 0x0),\n    COL_TRI_SPECIAL(133, 170, 173, 0x0),\n    COL_TRI_SPECIAL(137, 181, 180, 0x0),\n    COL_TRI_SPECIAL(137, 136, 181, 0x0),\n    COL_TRI_SPECIAL(153, 136, 135, 0x0),\n    COL_TRI_SPECIAL(132, 166, 164, 0x0),\n    COL_TRI_SPECIAL(132, 172, 141, 0x0),\n    COL_TRI_SPECIAL(132, 141, 166, 0x0),\n    COL_TRI_SPECIAL(161, 177, 142, 0x0),\n    COL_TRI_SPECIAL(154, 159, 155, 0x0),\n    COL_TRI_SPECIAL(154, 155, 156, 0x0),\n    COL_TRI_SPECIAL(155, 157, 182, 0x0),\n    COL_TRI_SPECIAL(156, 155, 182, 0x0),\n    COL_TRI_SPECIAL(155, 158, 189, 0x0),\n    COL_TRI_SPECIAL(157, 155, 189, 0x0),\n    COL_TRI_SPECIAL(158, 155, 159, 0x0),\n    COL_TRI_SPECIAL(158, 161, 189, 0x0),\n    COL_TRI_SPECIAL(159, 190, 158, 0x0),\n    COL_TRI_SPECIAL(160, 161, 158, 0x0),\n    COL_TRI_SPECIAL(160, 158, 190, 0x0),\n    COL_TRI_SPECIAL(161, 142, 189, 0x0),\n    COL_TRI_SPECIAL(142, 157, 189, 0x0),\n    COL_TRI_SPECIAL(157, 142, 182, 0x0),\n    COL_TRI_SPECIAL(140, 142, 139, 0x0),\n    COL_TRI_SPECIAL(139, 142, 177, 0x0),\n    COL_TRI_SPECIAL(162, 188, 191, 0x0),\n    COL_TRI_SPECIAL(141, 172, 139, 0x0),\n    COL_TRI_SPECIAL(153, 149, 136, 0x0),\n    COL_TRI_SPECIAL(148, 149, 153, 0x0),\n    COL_TRI_SPECIAL(148, 188, 163, 0x0),\n    COL_TRI_SPECIAL(148, 163, 186, 0x0),\n    COL_TRI_SPECIAL(162, 154, 156, 0x0),\n    COL_TRI_SPECIAL(163, 188, 162, 0x0),\n    COL_TRI_SPECIAL(163, 162, 156, 0x0),\n    COL_TRI_SPECIAL(163, 178, 186, 0x0),\n    COL_TRI_SPECIAL(154, 191, 190, 0x0),\n    COL_TRI_SPECIAL(164, 165, 160, 0x0),\n    COL_TRI_SPECIAL(165, 161, 160, 0x0),\n    COL_TRI_SPECIAL(161, 165, 177, 0x0),\n    COL_TRI_SPECIAL(141, 167, 166, 0x0),\n    COL_TRI_SPECIAL(164, 166, 165, 0x0),\n    COL_TRI_SPECIAL(166, 167, 165, 0x0),\n    COL_TRI_SPECIAL(167, 141, 177, 0x0),\n    COL_TRI_SPECIAL(165, 167, 177, 0x0),\n    COL_TRI_SPECIAL(141, 139, 177, 0x0),\n    COL_TRI_SPECIAL(163, 182, 178, 0x0),\n    COL_TRI_SPECIAL(163, 156, 182, 0x0),\n    COL_TRI_SPECIAL(168, 133, 173, 0x0),\n    COL_TRI_SPECIAL(168, 192, 133, 0x0),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 143),\n    COL_TRI(4, 5, 6),\n    COL_TRI(4, 6, 7),\n    COL_TRI(4, 8, 9),\n    COL_TRI(4, 9, 5),\n    COL_TRI(7, 8, 4),\n    COL_TRI(5, 10, 6),\n    COL_TRI(7, 11, 8),\n    COL_TRI(5, 9, 12),\n    COL_TRI(5, 12, 13),\n    COL_TRI(5, 13, 10),\n    COL_TRI(13, 14, 10),\n    COL_TRI(15, 13, 12),\n    COL_TRI(15, 14, 13),\n    COL_TRI(16, 17, 18),\n    COL_TRI(17, 19, 20),\n    COL_TRI(17, 20, 18),\n    COL_TRI(16, 18, 21),\n    COL_TRI(22, 19, 64),\n    COL_TRI(22, 20, 19),\n    COL_TRI(23, 25, 32),\n    COL_TRI(24, 25, 23),\n    COL_TRI(25, 82, 32),\n    COL_TRI(26, 32, 87),\n    COL_TRI(27, 26, 87),\n    COL_TRI(26, 23, 32),\n    COL_TRI(26, 30, 23),\n    COL_TRI(23, 30, 28),\n    COL_TRI(24, 23, 28),\n    COL_TRI(28, 29, 88),\n    COL_TRI(28, 30, 29),\n    COL_TRI(29, 83, 88),\n    COL_TRI(29, 30, 27),\n    COL_TRI(33, 36, 90),\n    COL_TRI(30, 26, 27),\n    COL_TRI(31, 83, 29),\n    COL_TRI(27, 87, 31),\n    COL_TRI(31, 29, 27),\n    COL_TRI(25, 31, 82),\n    COL_TRI(25, 83, 31),\n    COL_TRI(31, 87, 82),\n    COL_TRI(32, 82, 87),\n    COL_TRI(38, 41, 28),\n    COL_TRI(34, 36, 33),\n    COL_TRI(35, 36, 34),\n    COL_TRI(36, 35, 90),\n    COL_TRI(33, 90, 24),\n    COL_TRI(28, 34, 33),\n    COL_TRI(28, 89, 34),\n    COL_TRI(28, 33, 24),\n    COL_TRI(37, 39, 41),\n    COL_TRI(38, 40, 37),\n    COL_TRI(38, 37, 41),\n    COL_TRI(39, 91, 93),\n    COL_TRI(39, 40, 92),\n    COL_TRI(39, 92, 91),\n    COL_TRI(39, 93, 41),\n    COL_TRI(40, 39, 37),\n    COL_TRI(41, 93, 42),\n    COL_TRI(41, 42, 43),\n    COL_TRI(42, 93, 91),\n    COL_TRI(43, 42, 44),\n    COL_TRI(42, 91, 47),\n    COL_TRI(44, 42, 47),\n    COL_TRI(44, 28, 43),\n    COL_TRI(41, 43, 28),\n    COL_TRI(44, 47, 28),\n    COL_TRI(50, 38, 28),\n    COL_TRI(45, 92, 40),\n    COL_TRI(45, 40, 38),\n    COL_TRI(46, 91, 92),\n    COL_TRI(47, 91, 46),\n    COL_TRI(45, 47, 46),\n    COL_TRI(28, 47, 45),\n    COL_TRI(45, 46, 92),\n    COL_TRI(48, 94, 51),\n    COL_TRI(48, 53, 94),\n    COL_TRI(49, 48, 50),\n    COL_TRI(50, 48, 51),\n    COL_TRI(28, 49, 50),\n    COL_TRI(51, 94, 52),\n    COL_TRI(52, 94, 95),\n    COL_TRI(53, 95, 94),\n    COL_TRI(50, 51, 54),\n    COL_TRI(52, 54, 51),\n    COL_TRI(49, 53, 48),\n    COL_TRI(49, 56, 53),\n    COL_TRI(53, 56, 95),\n    COL_TRI(54, 52, 58),\n    COL_TRI(52, 95, 58),\n    COL_TRI(59, 61, 96),\n    COL_TRI(55, 56, 49),\n    COL_TRI(56, 55, 95),\n    COL_TRI(55, 57, 95),\n    COL_TRI(57, 55, 28),\n    COL_TRI(49, 28, 55),\n    COL_TRI(58, 95, 57),\n    COL_TRI(58, 57, 54),\n    COL_TRI(54, 57, 28),\n    COL_TRI(54, 28, 88),\n    COL_TRI(45, 89, 28),\n    COL_TRI(64, 85, 99),\n    COL_TRI(60, 98, 61),\n    COL_TRI(61, 97, 96),\n    COL_TRI(62, 60, 61),\n    COL_TRI(59, 62, 61),\n    COL_TRI(61, 98, 97),\n    COL_TRI(63, 22, 64),\n    COL_TRI(63, 64, 99),\n    COL_TRI(64, 84, 85),\n    COL_TRI(67, 69, 68),\n    COL_TRI(22, 86, 20),\n    COL_TRI(22, 65, 86),\n    COL_TRI(65, 100, 86),\n    COL_TRI(66, 101, 67),\n    COL_TRI(67, 68, 66),\n    COL_TRI(66, 102, 101),\n    COL_TRI(66, 103, 102),\n    COL_TRI(68, 104, 66),\n    COL_TRI(69, 70, 68),\n    COL_TRI(70, 105, 68),\n    COL_TRI(75, 76, 77),\n    COL_TRI(68, 81, 104),\n    COL_TRI(71, 106, 107),\n    COL_TRI(72, 71, 107),\n    COL_TRI(73, 75, 71),\n    COL_TRI(73, 71, 72),\n    COL_TRI(71, 75, 108),\n    COL_TRI(71, 108, 106),\n    COL_TRI(74, 76, 75),\n    COL_TRI(75, 77, 108),\n    COL_TRI(74, 75, 73),\n    COL_TRI(76, 74, 109),\n    COL_TRI(76, 109, 77),\n    COL_TRI(77, 109, 110),\n    COL_TRI(77, 110, 108),\n    COL_TRI(78, 111, 112),\n    COL_TRI(79, 78, 112),\n    COL_TRI(78, 100, 65),\n    COL_TRI(78, 65, 111),\n    COL_TRI(80, 79, 113),\n    COL_TRI(79, 112, 113),\n    COL_TRI(81, 80, 104),\n    COL_TRI(80, 113, 104),\n    COL_TRI_INIT(SURFACE_CAMERA_BOUNDARY, 2),\n    COL_TRI(114, 115, 116),\n    COL_TRI(114, 116, 117),\n    COL_TRI_INIT(SURFACE_NO_CAM_COLLISION, 16),\n    COL_TRI(203, 202, 204),\n    COL_TRI(193, 194, 195),\n    COL_TRI(193, 196, 194),\n    COL_TRI(197, 196, 193),\n    COL_TRI(195, 194, 198),\n    COL_TRI(195, 198, 199),\n    COL_TRI(197, 200, 196),\n    COL_TRI(199, 198, 200),\n    COL_TRI(199, 200, 197),\n    COL_TRI(201, 202, 203),\n    COL_TRI(203, 204, 205),\n    COL_TRI(208, 207, 201),\n    COL_TRI(205, 204, 206),\n    COL_TRI(205, 206, 208),\n    COL_TRI(201, 207, 202),\n    COL_TRI(208, 206, 207),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(1),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_null_start, /*pos*/ -4185, 20, -47, /*yaw*/ 64), // unused, probably an early way to set initial position\n    COL_WATER_BOX_INIT(1),\n    COL_WATER_BOX(0, -1535, -7679, 1536, 3389, 0),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/cotmc/areas/1/geo.inc.c",
    "content": "// 0x0E0001A0\nconst GeoLayout cotmc_geo_0001A0[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND_COLOR(0x0001),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 12800, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(16, 0, 2000, 6000, 0, 0, 0, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, cotmc_seg7_dl_07007D48),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, cotmc_seg7_dl_0700A160),\n                    GEO_ASM(    0, geo_movtex_pause_control),\n                    GEO_ASM(0x2801, geo_movtex_draw_nocolor),\n                    GEO_DISPLAY_LIST(LAYER_TRANSPARENT, cotmc_seg7_dl_0700A4B8),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(0, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/cotmc/areas/1/macro.inc.c",
    "content": "// 0x0700BD38 - 0x0700BE0C\nconst MacroObject cotmc_seg7_macro_objs[] = {\n    MACRO_OBJECT               (/*preset*/ macro_snufit,               /*yaw*/   0, /*pos*/ -2920,   220,   -20),\n    MACRO_OBJECT               (/*preset*/ macro_snufit,               /*yaw*/   0, /*pos*/ -1380,   240,   740),\n    MACRO_OBJECT               (/*preset*/ macro_box_metal_cap,        /*yaw*/   0, /*pos*/  -360,   300,  -200),\n    MACRO_OBJECT               (/*preset*/ macro_snufit,               /*yaw*/   0, /*pos*/   360,   200, -1120),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal, /*yaw*/   0, /*pos*/   400,   256, -4300),\n    MACRO_OBJECT               (/*preset*/ macro_box_metal_cap,        /*yaw*/   0, /*pos*/   300,   620, -5280),\n    MACRO_OBJECT               (/*preset*/ macro_snufit,               /*yaw*/   0, /*pos*/  -340,   260, -2620),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_horizontal, /*yaw*/   0, /*pos*/     0,  -450, -7000),\n    MACRO_OBJECT               (/*preset*/ macro_1up,                  /*yaw*/   0, /*pos*/   900,   260, -3620),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal, /*yaw*/   0, /*pos*/     0,  -170, -1660),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal, /*yaw*/   0, /*pos*/   -20,  -211, -3940),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,      /*yaw*/ 270, /*pos*/   -71,    20,   720, /*bhvParam*/ DIALOG_123),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,             /*yaw*/   0, /*pos*/   200,  -291, -5600),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,             /*yaw*/   0, /*pos*/   980,   260, -3430),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,             /*yaw*/   0, /*pos*/  -540,  -352, -5940),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,             /*yaw*/   0, /*pos*/  -300,   450, -6240),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,             /*yaw*/   0, /*pos*/  -200,  -400, -6680),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,             /*yaw*/   0, /*pos*/   250,   450, -6400),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,             /*yaw*/   0, /*pos*/   540,  -361, -6340),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,             /*yaw*/   0, /*pos*/   980,   260, -3810),\n    MACRO_OBJECT               (/*preset*/ macro_box_1up_running_away, /*yaw*/   0, /*pos*/   -20,   180,  2060),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/cotmc/geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"game/level_geo.h\"\n#include \"game/geo_misc.h\"\n#include \"game/camera.h\"\n#include \"game/moving_texture.h\"\n#include \"game/screen_transition.h\"\n#include \"game/paintings.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"levels/cotmc/header.h\"\n\n#include \"levels/cotmc/areas/1/geo.inc.c\"\n"
  },
  {
    "path": "levels/cotmc/header.h",
    "content": "#ifndef COTMC_HEADER_H\n#define COTMC_HEADER_H\n\n#include \"types.h\"\n\n// geo\nextern const GeoLayout cotmc_geo_0001A0[];\n\n// leveldata\nextern const Gfx cotmc_seg7_dl_07007D48[];\nextern const Gfx cotmc_seg7_dl_0700A160[];\nextern const Gfx cotmc_seg7_dl_0700A4B8[];\nextern const Collision cotmc_seg7_collision_level[];\nextern const MacroObject cotmc_seg7_macro_objs[];\nextern const Gfx cotmc_dl_water_begin[];\nextern const Gfx cotmc_dl_water_end[];\nextern Movtex cotmc_movtex_tris_water[];\nextern const Gfx cotmc_dl_water[];\n\n// script\nextern const LevelScript level_cotmc_entry[];\n\n#endif\n"
  },
  {
    "path": "levels/cotmc/level.yaml",
    "content": "# Cavern of the Metal Cap\nshort-name: cotmc\nfull-name: Cavern of the Metal Cap\ntexture-file: [\"/texture.inc.c\"]\narea-count: 1\nobjects: []\nshared-path: []\n# loaded files\nskybox-bin: null\ntexture-bin: cave\neffects: true\nactor-bins: [group8, group17]\ncommon-bin: [common0]\n"
  },
  {
    "path": "levels/cotmc/leveldata.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"surface_terrains.h\"\n#include \"moving_texture_macros.h\"\n#include \"level_misc_macros.h\"\n#include \"macro_presets.h\"\n#include \"special_presets.h\"\n#include \"textures.h\"\n#include \"dialog_ids.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/cotmc/texture.inc.c\"\n#include \"levels/cotmc/areas/1/1/model.inc.c\"\n#include \"levels/cotmc/areas/1/2/model.inc.c\"\n#include \"levels/cotmc/areas/1/3/model.inc.c\"\n#include \"levels/cotmc/areas/1/collision.inc.c\"\n#include \"levels/cotmc/areas/1/macro.inc.c\"\n#include \"levels/cotmc/movtext.inc.c\"\n"
  },
  {
    "path": "levels/cotmc/movtext.inc.c",
    "content": "// 0x0700BE10 - 0x0700BE88\nconst Gfx cotmc_dl_water_begin[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_INTER2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(980, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetEnvColor(255, 255, 255, 140),\n    gsDPSetCombineMode(G_CC_DECALFADE, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700BE88 - 0x0700BED0\nconst Gfx cotmc_dl_water_end[] = {\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsSPGeometryModeSetFirst(G_FOG, G_LIGHTING | G_CULL_BACK),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPSetRenderMode(G_RM_AA_ZB_XLU_INTER, G_RM_NOOP2),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700BED0 - 0x0700BF60\nMovtex cotmc_movtex_tris_water[] = {\n    MOV_TEX_SPD(    30),\n    MOV_TEX_TRIS(  256,    0, -7373, 0, 0),\n    MOV_TEX_TRIS(  256, 5120, -7373, 4, 0),\n    MOV_TEX_TRIS( -256,    0, -7373, 0, 1),\n    MOV_TEX_TRIS( -256, 5120, -7373, 4, 1),\n    MOV_TEX_TRIS( 1536, -204,  3584, 0, 0),\n    MOV_TEX_TRIS( 1536,    0,  3430, 1, 0),\n    MOV_TEX_TRIS( 1536,    0, -7680, 5, 0),\n    MOV_TEX_TRIS(-1536, -204,  3584, 0, 2),\n    MOV_TEX_TRIS(-1536,    0,  3430, 1, 2),\n    MOV_TEX_TRIS(-1536,    0, -7680, 5, 2),\n    MOV_TEX_TRIS(-1024, -614,  3584, 0, 0),\n    MOV_TEX_TRIS(-1024, 1434,  3584, 1, 0),\n    MOV_TEX_TRIS( 1024, -614,  3584, 0, 1),\n    MOV_TEX_TRIS( 1024, 1434,  3584, 1, 1),\n    MOV_TEX_END(),\n};\n\n// 0x0700BF60 - 0x0700BFA8\nconst Gfx cotmc_dl_water[] = {\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  5,  7, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(12, 11, 13, 0x0,  7,  5,  8, 0x0),\n    gsSP2Triangles( 5,  6,  8, 0x0,  8,  6,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/cotmc/script.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"behavior_data.h\"\n#include \"model_ids.h\"\n#include \"seq_ids.h\"\n#include \"dialog_ids.h\"\n#include \"segment_symbols.h\"\n#include \"level_commands.h\"\n\n#include \"game/level_update.h\"\n\n#include \"levels/scripts.h\"\n\n#include \"actors/common1.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/cotmc/header.h\"\n\nstatic const LevelScript script_func_local_1[] = {\n    OBJECT(/*model*/ MODEL_CAP_SWITCH, /*pos*/ 0,  363, -6144, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(0x01), /*bhv*/ bhvCapSwitch),\n    OBJECT(/*model*/ MODEL_NONE,       /*pos*/ 0,  500, -7373, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvWaterfallSoundLoop),\n    OBJECT(/*model*/ MODEL_NONE,       /*pos*/ 0,  500,  3584, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvWaterfallSoundLoop),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_2[] = {\n    OBJECT(/*model*/ MODEL_NONE,       /*pos*/ 0, -200, -7000, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_1), /*bhv*/ bhvHiddenRedCoinStar),\n    RETURN(),\n};\n\nconst LevelScript level_cotmc_entry[] = {\n    INIT_LEVEL(),\n    LOAD_MIO0        (/*seg*/ 0x07, _cotmc_segment_7SegmentRomStart, _cotmc_segment_7SegmentRomEnd),\n    LOAD_MIO0_TEXTURE(/*seg*/ 0x09, _cave_mio0SegmentRomStart, _cave_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x05, _group8_mio0SegmentRomStart, _group8_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0C, _group8_geoSegmentRomStart,  _group8_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x06, _group17_mio0SegmentRomStart, _group17_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0D, _group17_geoSegmentRomStart,  _group17_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x08, _common0_mio0SegmentRomStart, _common0_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0F, _common0_geoSegmentRomStart,  _common0_geoSegmentRomEnd),\n    ALLOC_LEVEL_POOL(),\n    MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),\n    JUMP_LINK(script_func_global_9),\n    JUMP_LINK(script_func_global_18),\n    JUMP_LINK(script_func_global_1),\n\n    AREA(/*index*/ 1, cotmc_geo_0001A0),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ -4185, 1020, -47, /*angle*/ 0, 90, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvAirborneWarp),\n        WARP_NODE(/*id*/ WARP_NODE_0A,         /*destLevel*/ LEVEL_COTMC,          /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_SUCCESS,    /*destLevel*/ LEVEL_CASTLE,         /*destArea*/ 3, /*destNode*/ WARP_NODE_34, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH,      /*destLevel*/ LEVEL_CASTLE,         /*destArea*/ 3, /*destNode*/ WARP_NODE_66, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_WARP_FLOOR, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 1, /*destNode*/ WARP_NODE_14, /*flags*/ WARP_NO_CHECKPOINT),\n        JUMP_LINK(script_func_local_2),\n        JUMP_LINK(script_func_local_1),\n        TERRAIN(/*terrainData*/ cotmc_seg7_collision_level),\n        MACRO_OBJECTS(/*objList*/ cotmc_seg7_macro_objs),\n        SHOW_DIALOG(/*index*/ 0x00, DIALOG_130),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0004, /*seq*/ SEQ_LEVEL_UNDERGROUND),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_STONE),\n    END_AREA(),\n\n    FREE_LEVEL_POOL(),\n    MARIO_POS(/*area*/ 1, /*yaw*/ 90, /*pos*/ -4185, 20, -47),\n    CALL(/*arg*/ 0, /*func*/ lvl_init_or_update),\n    CALL_LOOP(/*arg*/ 1, /*func*/ lvl_init_or_update),\n    CLEAR_LEVEL(),\n    SLEEP_BEFORE_EXIT(/*frames*/ 1),\n    EXIT(),\n};\n"
  },
  {
    "path": "levels/cotmc/texture.inc.c",
    "content": "// 0x07000000 - 0x07001000\nALIGNED8 static const Texture cotmc_seg7_texture_07000000[] = {\n#include \"levels/cotmc/0.rgba16.inc.c\"\n};\n\n// 0x07001000 - 0x07001800\nALIGNED8 static const Texture cotmc_seg7_texture_07001000[] = {\n#include \"levels/cotmc/1.rgba16.inc.c\"\n};\n\n// 0x07001800 - 0x07002000\nALIGNED8 static const Texture cotmc_seg7_texture_07001800[] = {\n#include \"levels/cotmc/2.rgba16.inc.c\"\n};\n\n// 0x07002000 - 0x07002800\nALIGNED8 static const Texture cotmc_seg7_texture_07002000[] = {\n#include \"levels/cotmc/3.rgba16.inc.c\"\n};\n\n// 0x07002800 - 0x07003000\nALIGNED8 static const Texture cotmc_seg7_texture_07002800[] = {\n#include \"levels/cotmc/4.rgba16.inc.c\"\n};\n"
  },
  {
    "path": "levels/course_defines.h",
    "content": "/* Define lists for list of course for macros. Each of the following fields are described:\n * Argument 1: Course macro for define.\n * Argument 2: Star collection dance cutscenes\n * Each hex digit determines what dance cutscene to play for the stars in the course. The last digit is\n * unused. See determine_dance_cutscene() in camera.c for details.\n * Cutscene Digits:\n *      0: Lakitu flies away after the dance\n *      1: The camera rotates around mario\n *      2: The camera goes to a closeup of mario\n *      3: Bowser keys and the grand star\n *      4: Default, used for 100 coin stars, 8 red coin stars in bowser levels, and secret stars\n */\nDEFINE_COURSE(COURSE_NONE, 0x44444440)            // (0)  Course Hub (Castle Grounds)\nDEFINE_COURSE(COURSE_BOB,  0x00022240)            // (1)  Bob-omb Battlefield\nDEFINE_COURSE(COURSE_WF,   0x00002040)            // (2)  Whomp's Fortress\nDEFINE_COURSE(COURSE_JRB,  0x22222240)            // (3)  Jolly Roger Bay\nDEFINE_COURSE(COURSE_CCM,  0x00220040)            // (4)  Cool, Cool Mountain\nDEFINE_COURSE(COURSE_BBH,  0x22222240)            // (5)  Big Boo's Haunt\nDEFINE_COURSE(COURSE_HMC,  0x22222240)            // (6)  Hazy Maze Cave\nDEFINE_COURSE(COURSE_LLL,  0x21212140)            // (7)  Lethal Lava Land\nDEFINE_COURSE(COURSE_SSL,  0x20222240)            // (8)  Shifting Sand Land\nDEFINE_COURSE(COURSE_DDD,  0x22222240)            // (9)  Dire Dire Docks\nDEFINE_COURSE(COURSE_SL,   0x02020240)            // (10) Snowman's Land\nDEFINE_COURSE(COURSE_WDW,  0x22102240)            // (11) Wet-Dry World\nDEFINE_COURSE(COURSE_TTM,  0x00000040)            // (12) Tall, Tall Mountain\nDEFINE_COURSE(COURSE_THI,  0x11112140)            // (13) Tiny Huge Island\nDEFINE_COURSE(COURSE_TTC,  0x22222240)            // (14) Tick Tock Clock\nDEFINE_COURSE(COURSE_RR,   0x00000040)            // (15) Rainbow Ride\nDEFINE_COURSES_END()\nDEFINE_BONUS_COURSE(COURSE_BITDW,    0x34444440) // (16) Bowser in the Dark World\nDEFINE_BONUS_COURSE(COURSE_BITFS,    0x34444440) // (17) Bowser in the Fire Sea\nDEFINE_BONUS_COURSE(COURSE_BITS,     0x34444440) // (18) Bowser in the Sky\nDEFINE_BONUS_COURSE(COURSE_PSS,      0x24444440) // (19) The Princess's Secret Slide\nDEFINE_BONUS_COURSE(COURSE_COTMC,    0x44444440) // (20) Cavern of the Metal Cap\nDEFINE_BONUS_COURSE(COURSE_TOTWC,    0x04444440) // (21) Tower of the Wing Cap\nDEFINE_BONUS_COURSE(COURSE_VCUTM,    0x24444440) // (22) Vanish Cap under the Moat\nDEFINE_BONUS_COURSE(COURSE_WMOTR,    0x04444440) // (23) Wing Mario over the Rainbow\nDEFINE_BONUS_COURSE(COURSE_SA,       0x24444440) // (24) Secret Aquarium\nDEFINE_BONUS_COURSE(COURSE_CAKE_END, 0x44444440) // (25) The End (Cake Scene)\n"
  },
  {
    "path": "levels/ddd/areas/1/1/model.inc.c",
    "content": "// 0x07003800 - 0x07003818\nstatic const Lights1 ddd_seg7_lights_07003800 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07003818 - 0x07003830\nstatic const Lights1 ddd_seg7_lights_07003818 = gdSPDefLights1(\n    0x1a, 0x1a, 0x3f,\n    0x69, 0x69, 0xfe, 0x28, 0x28, 0x28\n);\n\n// 0x07003830 - 0x07003848\nstatic const Lights1 ddd_seg7_lights_07003830 = gdSPDefLights1(\n    0x26, 0x26, 0x3f,\n    0x9b, 0x9b, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07003848 - 0x07003860\nstatic const Lights1 ddd_seg7_lights_07003848 = gdSPDefLights1(\n    0x32, 0x32, 0x3f,\n    0xc8, 0xc8, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07003860 - 0x07003960\nstatic const Vtx ddd_seg7_vertex_07003860[] = {\n    {{{ -5119,      0,  -3071}, 0, { -1052,  -2076}, {0x3a, 0x55, 0x4a, 0xff}}},\n    {{{ -4505,  -1023,  -2252}, 0, {  -436,  -1258}, {0x45, 0x47, 0x4e, 0xff}}},\n    {{{ -3890,  -1023,  -2866}, 0, {   172,  -1872}, {0x1d, 0x47, 0x64, 0xff}}},\n    {{{ -5119,      0,   3072}, 0, { -1052,   4054}, {0x25, 0x41, 0x9a, 0xff}}},\n    {{{ -5938,  -1023,   1843}, 0, { -1868,   2828}, {0x58, 0x48, 0xc9, 0xff}}},\n    {{{ -6143,      0,   2048}, 0, { -2072,   3032}, {0x6b, 0x2f, 0xd1, 0xff}}},\n    {{{ -5938,  -1023,    819}, 0, { -1868,   1806}, {0x6e, 0x3e, 0x0b, 0xff}}},\n    {{{ -6655,      0,   1024}, 0, { -2584,   2010}, {0x65, 0x4b, 0x07, 0xff}}},\n    {{{ -5324,  -1023,   -716}, 0, { -1256,    274}, {0x6d, 0x40, 0x08, 0xff}}},\n    {{{ -6143,      0,   -818}, 0, { -2072,    172}, {0x61, 0x4f, 0x0d, 0xff}}},\n    {{{ -4709,  -1023,   2458}, 0, {  -640,   3440}, {0x18, 0x52, 0xa3, 0xff}}},\n    {{{ -6143,      0,  -2047}, 0, { -2072,  -1054}, {0x5a, 0x51, 0x23, 0xff}}},\n    {{{ -5529,  -1023,  -1637}, 0, { -1460,   -646}, {0x5a, 0x49, 0x32, 0xff}}},\n    {{{   512,      0,  -1023}, 0, {  4568,      0}, {0xa0, 0x50, 0x11, 0xff}}},\n    {{{  -613,  -1023,    819}, 0, {  3444,   1806}, {0x96, 0x44, 0xf5, 0xff}}},\n    {{{   512,      0,   1024}, 0, {  4568,   2010}, {0xa7, 0x58, 0xf1, 0xff}}},\n};\n\n// 0x07003960 - 0x07003A60\nstatic const Vtx ddd_seg7_vertex_07003960[] = {\n    {{{ -5119,      0,  -3071}, 0, { -1052,  -2076}, {0x3a, 0x55, 0x4a, 0xff}}},\n    {{{ -3890,  -1023,  -2866}, 0, {   172,  -1872}, {0x1d, 0x47, 0x64, 0xff}}},\n    {{{ -4095,      0,  -3583}, 0, {     0,  -2588}, {0x0f, 0x4a, 0x65, 0xff}}},\n    {{{ -2252,  -1023,  -2866}, 0, {  1808,  -1872}, {0xc8, 0x48, 0x58, 0xff}}},\n    {{{ -2047,      0,  -3583}, 0, {  2012,  -2588}, {0xc1, 0x4c, 0x4f, 0xff}}},\n    {{{ -1842,  -1023,  -2047}, 0, {  2216,  -1054}, {0xbc, 0x44, 0x52, 0xff}}},\n    {{{ -1330,      0,  -2764}, 0, {  2728,  -1770}, {0xcc, 0x4e, 0x55, 0xff}}},\n    {{{  -613,  -1023,  -1637}, 0, {  3444,   -646}, {0xb8, 0x4b, 0x47, 0xff}}},\n    {{{     0,      0,  -2047}, 0, {  4056,  -1054}, {0xb7, 0x49, 0x48, 0xff}}},\n    {{{  -204,  -1023,   -818}, 0, {  3852,    172}, {0x96, 0x44, 0x07, 0xff}}},\n    {{{   512,      0,  -1023}, 0, {  4568,      0}, {0xa0, 0x50, 0x11, 0xff}}},\n    {{{  -613,  -1023,    819}, 0, {  3444,   1806}, {0x96, 0x44, 0xf5, 0xff}}},\n    {{{   512,      0,   1024}, 0, {  4568,   2010}, {0xa7, 0x58, 0xf1, 0xff}}},\n    {{{  -613,  -1023,   1638}, 0, {  3444,   2624}, {0xab, 0x4b, 0xc8, 0xff}}},\n    {{{     0,      0,   2048}, 0, {  4056,   3032}, {0xb9, 0x4f, 0xbc, 0xff}}},\n    {{{ -1637,  -1023,   2253}, 0, {  2420,   3236}, {0xc1, 0x4e, 0xb3, 0xff}}},\n};\n\n// 0x07003A60 - 0x07003AF0\nstatic const Vtx ddd_seg7_vertex_07003A60[] = {\n    {{{     0,      0,   2048}, 0, {  4056,   3032}, {0xb9, 0x4f, 0xbc, 0xff}}},\n    {{{ -1637,  -1023,   2253}, 0, {  2420,   3236}, {0xc1, 0x4e, 0xb3, 0xff}}},\n    {{{ -1023,      0,   3072}, 0, {  3036,   4054}, {0xc6, 0x55, 0xb6, 0xff}}},\n    {{{ -2252,  -1023,   2867}, 0, {  1808,   3850}, {0xe2, 0x49, 0x9e, 0xff}}},\n    {{{ -2047,      0,   3584}, 0, {  2012,   4566}, {0x02, 0x4b, 0x9a, 0xff}}},\n    {{{ -3583,  -1023,   2458}, 0, {   480,   3440}, {0x1d, 0x3e, 0x96, 0xff}}},\n    {{{ -3993,      0,   3174}, 0, {    72,   4156}, {0x0f, 0x4c, 0x9c, 0xff}}},\n    {{{ -5119,      0,   3072}, 0, { -1052,   4054}, {0x25, 0x41, 0x9a, 0xff}}},\n    {{{ -4709,  -1023,   2458}, 0, {  -640,   3440}, {0x18, 0x52, 0xa3, 0xff}}},\n};\n\n// 0x07003AF0 - 0x07003B30\nstatic const Vtx ddd_seg7_vertex_07003AF0[] = {\n    {{{  -511,  -5119,  -2559}, 0, {     0,  -4120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5631,  -5119,   2560}, 0, {     0,   6098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,  -5119,   2560}, 0, {  5080,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5631,  -5119,  -2559}, 0, { -5140,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07003B30 - 0x07003C30\nstatic const Vtx ddd_seg7_vertex_07003B30[] = {\n    {{{ -4914,  -2047,   1229}, 0, {  2064,  -2058}, {0x51, 0x34, 0xaf, 0xff}}},\n    {{{ -4914,  -5119,   1229}, 0, {    24,  -2134}, {0x58, 0xfc, 0xa5, 0xff}}},\n    {{{ -5221,  -5119,    614}, 0, {     4,  -1610}, {0x7d, 0xfd, 0xec, 0xff}}},\n    {{{  -921,  -2047,   -613}, 0, {  2012,    510}, {0x88, 0x1d, 0x1b, 0xff}}},\n    {{{ -1228,  -5119,  -1228}, 0, {     0,      0}, {0xa1, 0xfd, 0x53, 0xff}}},\n    {{{  -921,  -5119,   -613}, 0, {     0,    510}, {0x82, 0x00, 0x0b, 0xff}}},\n    {{{ -1228,  -2047,  -1228}, 0, {  2012,      0}, {0xb6, 0x2a, 0x5d, 0xff}}},\n    {{{ -2149,  -2047,  -1637}, 0, {  2012,    950}, {0xa7, 0x18, 0x57, 0xff}}},\n    {{{ -1228,  -2047,   1229}, 0, {  2012,   2372}, {0xa7, 0x1c, 0xab, 0xff}}},\n    {{{  -921,  -2047,    614}, 0, {  2012,   1710}, {0x85, 0x15, 0xee, 0xff}}},\n    {{{ -1228,  -5119,   1229}, 0, {     0,   2372}, {0x96, 0x00, 0xbc, 0xff}}},\n    {{{  -921,  -5119,    614}, 0, {     0,   1710}, {0x82, 0x00, 0xf5, 0xff}}},\n    {{{ -1842,  -5119,   1843}, 0, {     0,   3092}, {0xba, 0xfa, 0x97, 0xff}}},\n    {{{ -4197,  -2047,  -1740}, 0, {  2012,   2972}, {0x4e, 0x21, 0x5e, 0xff}}},\n    {{{ -3685,  -5119,  -2149}, 0, {     0,   2552}, {0x39, 0x05, 0x71, 0xff}}},\n    {{{ -3685,  -2047,  -2457}, 0, {  2012,   2612}, {0x2a, 0x21, 0x72, 0xff}}},\n};\n\n// 0x07003C30 - 0x07003D30\nstatic const Vtx ddd_seg7_vertex_07003C30[] = {\n    {{{ -5221,  -5119,    614}, 0, {     4,  -1610}, {0x7d, 0xfd, 0xec, 0xff}}},\n    {{{ -5221,  -5119,   -613}, 0, {   -24,   -418}, {0x7a, 0xf2, 0x1c, 0xff}}},\n    {{{ -4914,  -2047,   -409}, 0, {  2028,   -470}, {0x7a, 0x15, 0x19, 0xff}}},\n    {{{ -5221,  -2047,    614}, 0, {  2044,  -1534}, {0x73, 0x34, 0xfb, 0xff}}},\n    {{{ -4914,  -2047,   1229}, 0, {  2064,  -2058}, {0x51, 0x34, 0xaf, 0xff}}},\n    {{{ -4914,  -5119,  -1228}, 0, {     0,    250}, {0x74, 0xfb, 0x33, 0xff}}},\n    {{{ -4914,  -2047,  -1228}, 0, {  2008,    326}, {0x70, 0x20, 0x31, 0xff}}},\n    {{{ -4300,  -5119,  -1842}, 0, {     0,    990}, {0x4a, 0xfd, 0x67, 0xff}}},\n    {{{ -4197,  -2047,  -1740}, 0, {  2016,    990}, {0x4e, 0x21, 0x5e, 0xff}}},\n    {{{ -4197,  -2047,  -1740}, 0, {  2012,   2972}, {0x4e, 0x21, 0x5e, 0xff}}},\n    {{{ -4300,  -5119,  -1842}, 0, {     0,   3092}, {0x4a, 0xfd, 0x67, 0xff}}},\n    {{{ -3685,  -5119,  -2149}, 0, {     0,   2552}, {0x39, 0x05, 0x71, 0xff}}},\n    {{{ -3685,  -2047,  -2457}, 0, {  2012,   2612}, {0x2a, 0x21, 0x72, 0xff}}},\n    {{{ -2457,  -5119,  -2149}, 0, {     0,   1348}, {0xe3, 0x04, 0x7b, 0xff}}},\n    {{{ -2457,  -2047,  -2149}, 0, {  2012,   1348}, {0xc5, 0x1d, 0x6c, 0xff}}},\n    {{{ -1842,  -5119,  -1842}, 0, {     0,    690}, {0xa9, 0xf6, 0x5b, 0xff}}},\n};\n\n// 0x07003D30 - 0x07003E30\nstatic const Vtx ddd_seg7_vertex_07003D30[] = {\n    {{{ -2457,  -2047,  -2149}, 0, {  2012,   1348}, {0xc5, 0x1d, 0x6c, 0xff}}},\n    {{{ -1842,  -5119,  -1842}, 0, {     0,    690}, {0xa9, 0xf6, 0x5b, 0xff}}},\n    {{{ -2149,  -2047,  -1637}, 0, {  2012,    950}, {0xa7, 0x18, 0x57, 0xff}}},\n    {{{ -1228,  -5119,  -1228}, 0, {     0,      0}, {0xa1, 0xfd, 0x53, 0xff}}},\n    {{{ -1228,  -2047,   1229}, 0, {  2012,   2372}, {0xa7, 0x1c, 0xab, 0xff}}},\n    {{{ -1842,  -5119,   1843}, 0, {     0,   3092}, {0xba, 0xfa, 0x97, 0xff}}},\n    {{{ -1945,  -2047,   1638}, 0, {  2012,   2912}, {0xba, 0x26, 0x9e, 0xff}}},\n    {{{ -1945,  -2047,   1638}, 0, {  2012,   2952}, {0xba, 0x26, 0x9e, 0xff}}},\n    {{{ -2457,  -5119,   2150}, 0, {     0,   2552}, {0xcd, 0xfd, 0x8c, 0xff}}},\n    {{{ -2457,  -2047,   2150}, 0, {  2012,   2552}, {0xdb, 0x1f, 0x8b, 0xff}}},\n    {{{ -3685,  -5119,   2150}, 0, {     0,   1348}, {0x13, 0x00, 0x83, 0xff}}},\n    {{{ -3685,  -2047,   2150}, 0, {  2012,   1348}, {0x34, 0x13, 0x8f, 0xff}}},\n    {{{ -4300,  -5119,   1843}, 0, {     0,    690}, {0x52, 0xf9, 0xa0, 0xff}}},\n    {{{ -4197,  -2047,   1536}, 0, {  2012,    730}, {0x45, 0x1f, 0x9b, 0xff}}},\n    {{{ -4914,  -5119,   1229}, 0, {     0,      0}, {0x58, 0xfc, 0xa5, 0xff}}},\n    {{{ -4914,  -2047,   1229}, 0, {  2012,      0}, {0x51, 0x34, 0xaf, 0xff}}},\n};\n\n// 0x07003E30 - 0x07003F30\nstatic const Vtx ddd_seg7_vertex_07003E30[] = {\n    {{{ -2866,  -4607,    717}, 0, {   888,   1500}, {0x05, 0x7d, 0x14, 0xff}}},\n    {{{ -2764,  -5119,   1843}, 0, {  2116,   2522}, {0x12, 0x72, 0x34, 0xff}}},\n    {{{ -2661,  -4607,    614}, 0, {   992,   1192}, {0x20, 0x75, 0x22, 0xff}}},\n    {{{ -3276,  -4607,    717}, 0, {   480,   1908}, {0x00, 0x7b, 0x1c, 0xff}}},\n    {{{ -3276,  -5119,   1741}, 0, {  1500,   2930}, {0xfd, 0x6f, 0x3c, 0xff}}},\n    {{{ -2252,  -5119,   1229}, 0, {  2012,   1396}, {0x36, 0x67, 0x31, 0xff}}},\n    {{{ -1842,  -5119,    819}, 0, {  2012,    582}, {0x2f, 0x66, 0x38, 0xff}}},\n    {{{ -2457,  -4607,    410}, 0, {   992,    786}, {0x1b, 0x75, 0x25, 0xff}}},\n    {{{ -3685,  -4607,    819}, 0, {   172,   2418}, {0xf7, 0x79, 0x23, 0xff}}},\n    {{{ -4197,  -5119,   1536}, 0, {   376,   3646}, {0xc9, 0x69, 0x2c, 0xff}}},\n    {{{ -3890,  -4607,    614}, 0, {  -232,   2418}, {0xd4, 0x76, 0x06, 0xff}}},\n    {{{ -4300,  -5119,    819}, 0, {  -436,   3032}, {0xa6, 0x58, 0x07, 0xff}}},\n    {{{ -3788,  -4607,    205}, 0, {  -540,   1908}, {0xd2, 0x75, 0x08, 0xff}}},\n    {{{ -4505,  -5119,    410}, 0, { -1052,   2828}, {0xbe, 0x68, 0x1b, 0xff}}},\n    {{{ -4812,  -5119,   -511}, 0, { -2276,   2214}, {0xc7, 0x70, 0xf1, 0xff}}},\n    {{{ -3890,  -4607,   -101}, 0, {  -948,   1704}, {0xe9, 0x7c, 0xfc, 0xff}}},\n};\n\n// 0x07003F30 - 0x07004030\nstatic const Vtx ddd_seg7_vertex_07003F30[] = {\n    {{{ -2457,  -4607,   -409}, 0, {   172,      0}, {0x1d, 0x78, 0xe6, 0xff}}},\n    {{{ -1945,  -5119,  -1535}, 0, {  -436,  -1668}, {0x20, 0x72, 0xd4, 0xff}}},\n    {{{ -2661,  -4607,   -613}, 0, {  -232,      0}, {0x0f, 0x7c, 0xeb, 0xff}}},\n    {{{ -3685,  -4607,   -306}, 0, {  -948,   1294}, {0xeb, 0x77, 0xdc, 0xff}}},\n    {{{ -4812,  -5119,   -511}, 0, { -2276,   2214}, {0xc7, 0x70, 0xf1, 0xff}}},\n    {{{ -3890,  -4607,   -101}, 0, {  -948,   1704}, {0xe9, 0x7c, 0xfc, 0xff}}},\n    {{{ -4300,  -5119,   -818}, 0, { -2072,   1396}, {0xde, 0x6a, 0xc5, 0xff}}},\n    {{{ -3378,  -4607,   -409}, 0, {  -744,    888}, {0xe2, 0x78, 0xe5, 0xff}}},\n    {{{ -3890,  -5119,  -1228}, 0, { -2072,    582}, {0xd3, 0x6f, 0xd8, 0xff}}},\n    {{{ -3276,  -4607,   -716}, 0, {  -948,    480}, {0xea, 0x7a, 0xea, 0xff}}},\n    {{{ -3481,  -5119,  -1740}, 0, { -2176,   -338}, {0xe3, 0x70, 0xcd, 0xff}}},\n    {{{ -2866,  -4607,   -716}, 0, {  -540,     70}, {0x06, 0x77, 0xd6, 0xff}}},\n    {{{ -2661,  -5119,  -1433}, 0, { -1052,   -850}, {0x07, 0x68, 0xb8, 0xff}}},\n    {{{ -1842,  -5119,   -818}, 0, {   376,  -1054}, {0x3c, 0x68, 0xd8, 0xff}}},\n    {{{ -2149,  -4607,   -204}, 0, {   684,   -134}, {0x1c, 0x7a, 0xf0, 0xff}}},\n    {{{ -1330,  -5119,   -511}, 0, {  1196,  -1258}, {0x38, 0x6c, 0xdf, 0xff}}},\n};\n\n// 0x07004030 - 0x07004130\nstatic const Vtx ddd_seg7_vertex_07004030[] = {\n    {{{ -2149,  -4607,    205}, 0, {  1092,    274}, {0x1e, 0x7a, 0x0a, 0xff}}},\n    {{{ -1330,  -5119,   -511}, 0, {  1196,  -1258}, {0x38, 0x6c, 0xdf, 0xff}}},\n    {{{ -2149,  -4607,   -204}, 0, {   684,   -134}, {0x1c, 0x7a, 0xf0, 0xff}}},\n    {{{ -1330,  -5119,    512}, 0, {  2216,   -236}, {0x33, 0x6b, 0x2c, 0xff}}},\n    {{{ -2457,  -4607,    410}, 0, {   992,    786}, {0x1b, 0x75, 0x25, 0xff}}},\n    {{{ -1842,  -5119,    819}, 0, {  2012,    582}, {0x2f, 0x66, 0x38, 0xff}}},\n    {{{  -921,  -2047,    614}, 0, {  2012,   1710}, {0x85, 0x15, 0xee, 0xff}}},\n    {{{  -921,  -3890,    512}, 0, {   784,   1610}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -921,  -4300,    512}, 0, {   512,   1610}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -921,  -5119,    614}, 0, {     0,   1710}, {0x82, 0x00, 0xf5, 0xff}}},\n    {{{  -921,  -4607,    205}, 0, {   308,   1308}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -921,  -2047,   -613}, 0, {  2012,    510}, {0x88, 0x1d, 0x1b, 0xff}}},\n    {{{  -921,  -3890,   -511}, 0, {   784,    610}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -921,  -3583,   -204}, 0, {   992,    910}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -921,  -4607,   -204}, 0, {   308,    910}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -921,  -5119,   -613}, 0, {     0,    510}, {0x82, 0x00, 0x0b, 0xff}}},\n};\n\n// 0x07004130 - 0x070041C0\nstatic const Vtx ddd_seg7_vertex_07004130[] = {\n    {{{  -921,  -5119,   -613}, 0, {     0,    510}, {0x82, 0x00, 0x0b, 0xff}}},\n    {{{  -921,  -4300,   -511}, 0, {   512,    610}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -921,  -3890,   -511}, 0, {   784,    610}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -921,  -2047,   -613}, 0, {  2012,    510}, {0x88, 0x1d, 0x1b, 0xff}}},\n    {{{  -921,  -4607,   -204}, 0, {   308,    910}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -921,  -3583,   -204}, 0, {   992,    910}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -921,  -2047,    614}, 0, {  2012,   1710}, {0x85, 0x15, 0xee, 0xff}}},\n    {{{  -921,  -3583,    205}, 0, {   992,   1308}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -921,  -3890,    512}, 0, {   784,   1610}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070041C0 - 0x070042C0\nstatic const Vtx ddd_seg7_vertex_070041C0[] = {\n    {{{ -2969,  -4607,    205}, 0, {   224,   1108}, {0xe4, 0x7b, 0xf5, 0xff}}},\n    {{{ -3173,  -4914,    102}, 0, {     0,   1192}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{ -3071,  -4607,    307}, 0, {   224,   1278}, {0xf0, 0x77, 0xd8, 0xff}}},\n    {{{ -2969,  -4607,      0}, 0, {    52,    938}, {0xdf, 0x79, 0x0d, 0xff}}},\n    {{{ -3276,  -4607,   -101}, 0, {  -284,   1108}, {0x0d, 0x79, 0x21, 0xff}}},\n    {{{ -3378,  -4607,      0}, 0, {  -284,   1278}, {0x28, 0x77, 0x10, 0xff}}},\n    {{{ -3071,  -4607,   -101}, 0, {  -112,    938}, {0xf6, 0x7c, 0x18, 0xff}}},\n    {{{ -3378,  -4607,    205}, 0, {  -112,   1448}, {0x28, 0x77, 0xf0, 0xff}}},\n    {{{ -3276,  -4607,    307}, 0, {    52,   1448}, {0x0d, 0x79, 0xdf, 0xff}}},\n    {{{ -3378,  -4607,    205}, 0, {  -132,   1500}, {0x28, 0x77, 0xf0, 0xff}}},\n    {{{ -3378,  -4607,      0}, 0, {  -336,   1294}, {0x28, 0x77, 0x10, 0xff}}},\n    {{{ -3788,  -4607,    205}, 0, {  -540,   1908}, {0xd2, 0x75, 0x08, 0xff}}},\n    {{{ -3276,  -4607,    307}, 0, {    72,   1500}, {0x0d, 0x79, 0xdf, 0xff}}},\n    {{{ -3890,  -4607,    614}, 0, {  -232,   2418}, {0xd4, 0x76, 0x06, 0xff}}},\n    {{{ -3890,  -4607,   -101}, 0, {  -948,   1704}, {0xe9, 0x7c, 0xfc, 0xff}}},\n    {{{ -3685,  -4607,    819}, 0, {   172,   2418}, {0xf7, 0x79, 0x23, 0xff}}},\n};\n\n// 0x070042C0 - 0x070043C0\nstatic const Vtx ddd_seg7_vertex_070042C0[] = {\n    {{{ -3071,  -4607,    307}, 0, {   276,   1294}, {0xf0, 0x77, 0xd8, 0xff}}},\n    {{{ -3276,  -4607,    307}, 0, {    72,   1500}, {0x0d, 0x79, 0xdf, 0xff}}},\n    {{{ -3276,  -4607,    717}, 0, {   480,   1908}, {0x00, 0x7b, 0x1c, 0xff}}},\n    {{{ -3685,  -4607,    819}, 0, {   172,   2418}, {0xf7, 0x79, 0x23, 0xff}}},\n    {{{ -5938,  -1023,   1843}, 0, { -1868,   2828}, {0x58, 0x48, 0xc9, 0xff}}},\n    {{{ -4914,  -2047,   1229}, 0, {  -844,   2214}, {0x51, 0x34, 0xaf, 0xff}}},\n    {{{ -5221,  -2047,    614}, 0, { -1152,   1602}, {0x73, 0x34, 0xfb, 0xff}}},\n    {{{ -5938,  -1023,    819}, 0, { -1868,   1806}, {0x6e, 0x3e, 0x0b, 0xff}}},\n    {{{ -4709,  -1023,   2458}, 0, {  -640,   3440}, {0x18, 0x52, 0xa3, 0xff}}},\n    {{{ -4505,  -1023,  -2252}, 0, {  -436,  -1258}, {0x45, 0x47, 0x4e, 0xff}}},\n    {{{ -3685,  -2047,  -2457}, 0, {   376,  -1462}, {0x2a, 0x21, 0x72, 0xff}}},\n    {{{ -3890,  -1023,  -2866}, 0, {   172,  -1872}, {0x1d, 0x47, 0x64, 0xff}}},\n    {{{ -4914,  -2047,   -409}, 0, {  -844,    582}, {0x7a, 0x15, 0x19, 0xff}}},\n    {{{ -5324,  -1023,   -716}, 0, { -1256,    274}, {0x6d, 0x40, 0x08, 0xff}}},\n    {{{ -4197,  -2047,   1536}, 0, {  -132,   2522}, {0x45, 0x1f, 0x9b, 0xff}}},\n    {{{ -4914,  -2047,  -1228}, 0, {  -844,   -236}, {0x70, 0x20, 0x31, 0xff}}},\n};\n\n// 0x070043C0 - 0x070044C0\nstatic const Vtx ddd_seg7_vertex_070043C0[] = {\n    {{{ -5324,  -1023,   -716}, 0, { -1256,    274}, {0x6d, 0x40, 0x08, 0xff}}},\n    {{{ -4914,  -2047,  -1228}, 0, {  -844,   -236}, {0x70, 0x20, 0x31, 0xff}}},\n    {{{ -5529,  -1023,  -1637}, 0, { -1460,   -646}, {0x5a, 0x49, 0x32, 0xff}}},\n    {{{ -4197,  -2047,  -1740}, 0, {  -132,   -748}, {0x4e, 0x21, 0x5e, 0xff}}},\n    {{{ -4505,  -1023,  -2252}, 0, {  -436,  -1258}, {0x45, 0x47, 0x4e, 0xff}}},\n    {{{ -3685,  -2047,  -2457}, 0, {   376,  -1462}, {0x2a, 0x21, 0x72, 0xff}}},\n    {{{ -3890,  -1023,  -2866}, 0, {   172,  -1872}, {0x1d, 0x47, 0x64, 0xff}}},\n    {{{ -2457,  -2047,  -2149}, 0, {  1604,  -1156}, {0xc5, 0x1d, 0x6c, 0xff}}},\n    {{{ -2252,  -1023,  -2866}, 0, {  1808,  -1872}, {0xc8, 0x48, 0x58, 0xff}}},\n    {{{ -2149,  -2047,  -1637}, 0, {  1908,   -646}, {0xa7, 0x18, 0x57, 0xff}}},\n    {{{ -1842,  -1023,  -2047}, 0, {  2216,  -1054}, {0xbc, 0x44, 0x52, 0xff}}},\n    {{{ -1228,  -2047,  -1228}, 0, {  2828,   -236}, {0xb6, 0x2a, 0x5d, 0xff}}},\n    {{{  -613,  -1023,  -1637}, 0, {  3444,   -646}, {0xb8, 0x4b, 0x47, 0xff}}},\n    {{{  -921,  -2047,   -613}, 0, {  3136,    376}, {0x88, 0x1d, 0x1b, 0xff}}},\n    {{{  -204,  -1023,   -818}, 0, {  3852,    172}, {0x96, 0x44, 0x07, 0xff}}},\n    {{{  -921,  -2047,    614}, 0, {  3136,   1602}, {0x85, 0x15, 0xee, 0xff}}},\n};\n\n// 0x070044C0 - 0x070045C0\nstatic const Vtx ddd_seg7_vertex_070044C0[] = {\n    {{{  -204,  -1023,   -818}, 0, {  3852,    172}, {0x96, 0x44, 0x07, 0xff}}},\n    {{{  -921,  -2047,    614}, 0, {  3136,   1602}, {0x85, 0x15, 0xee, 0xff}}},\n    {{{  -613,  -1023,    819}, 0, {  3444,   1806}, {0x96, 0x44, 0xf5, 0xff}}},\n    {{{ -1228,  -2047,   1229}, 0, {  2828,   2214}, {0xa7, 0x1c, 0xab, 0xff}}},\n    {{{  -613,  -1023,   1638}, 0, {  3444,   2624}, {0xab, 0x4b, 0xc8, 0xff}}},\n    {{{ -3071,  -4607,    307}, 0, {   276,   1294}, {0xf0, 0x77, 0xd8, 0xff}}},\n    {{{ -3276,  -4607,    717}, 0, {   480,   1908}, {0x00, 0x7b, 0x1c, 0xff}}},\n    {{{ -2866,  -4607,    717}, 0, {   888,   1500}, {0x05, 0x7d, 0x14, 0xff}}},\n    {{{ -1945,  -2047,   1638}, 0, {  2116,   2624}, {0xba, 0x26, 0x9e, 0xff}}},\n    {{{ -1637,  -1023,   2253}, 0, {  2420,   3236}, {0xc1, 0x4e, 0xb3, 0xff}}},\n    {{{ -2457,  -2047,   2150}, 0, {  1604,   3134}, {0xdb, 0x1f, 0x8b, 0xff}}},\n    {{{ -2252,  -1023,   2867}, 0, {  1808,   3850}, {0xe2, 0x49, 0x9e, 0xff}}},\n    {{{ -3685,  -2047,   2150}, 0, {   376,   3134}, {0x34, 0x13, 0x8f, 0xff}}},\n    {{{ -3583,  -1023,   2458}, 0, {   480,   3440}, {0x1d, 0x3e, 0x96, 0xff}}},\n    {{{ -4197,  -2047,   1536}, 0, {  -132,   2522}, {0x45, 0x1f, 0x9b, 0xff}}},\n    {{{ -4709,  -1023,   2458}, 0, {  -640,   3440}, {0x18, 0x52, 0xa3, 0xff}}},\n};\n\n// 0x070045C0 - 0x070046B0\nstatic const Vtx ddd_seg7_vertex_070045C0[] = {\n    {{{ -3071,  -4607,   -101}, 0, {  -132,    888}, {0xf6, 0x7c, 0x18, 0xff}}},\n    {{{ -3276,  -4607,   -716}, 0, {  -948,    480}, {0xea, 0x7a, 0xea, 0xff}}},\n    {{{ -3378,  -4607,   -409}, 0, {  -744,    888}, {0xe2, 0x78, 0xe5, 0xff}}},\n    {{{ -2969,  -4607,    205}, 0, {   276,   1090}, {0xe4, 0x7b, 0xf5, 0xff}}},\n    {{{ -3071,  -4607,    307}, 0, {   276,   1294}, {0xf0, 0x77, 0xd8, 0xff}}},\n    {{{ -2866,  -4607,    717}, 0, {   888,   1500}, {0x05, 0x7d, 0x14, 0xff}}},\n    {{{ -2661,  -4607,    614}, 0, {   992,   1192}, {0x20, 0x75, 0x22, 0xff}}},\n    {{{ -2457,  -4607,    410}, 0, {   992,    786}, {0x1b, 0x75, 0x25, 0xff}}},\n    {{{ -2969,  -4607,      0}, 0, {    72,    888}, {0xdf, 0x79, 0x0d, 0xff}}},\n    {{{ -2149,  -4607,    205}, 0, {  1092,    274}, {0x1e, 0x7a, 0x0a, 0xff}}},\n    {{{ -2149,  -4607,   -204}, 0, {   684,   -134}, {0x1c, 0x7a, 0xf0, 0xff}}},\n    {{{ -2457,  -4607,   -409}, 0, {   172,      0}, {0x1d, 0x78, 0xe6, 0xff}}},\n    {{{ -2661,  -4607,   -613}, 0, {  -232,      0}, {0x0f, 0x7c, 0xeb, 0xff}}},\n    {{{ -2866,  -4607,   -716}, 0, {  -540,     70}, {0x06, 0x77, 0xd6, 0xff}}},\n    {{{ -3276,  -4607,   -101}, 0, {  -336,   1090}, {0x0d, 0x79, 0x21, 0xff}}},\n};\n\n// 0x070046B0 - 0x07004700\nstatic const Vtx ddd_seg7_vertex_070046B0[] = {\n    {{{ -3276,  -4607,   -101}, 0, {  -336,   1090}, {0x0d, 0x79, 0x21, 0xff}}},\n    {{{ -3685,  -4607,   -306}, 0, {  -948,   1294}, {0xeb, 0x77, 0xdc, 0xff}}},\n    {{{ -3890,  -4607,   -101}, 0, {  -948,   1704}, {0xe9, 0x7c, 0xfc, 0xff}}},\n    {{{ -3378,  -4607,   -409}, 0, {  -744,    888}, {0xe2, 0x78, 0xe5, 0xff}}},\n    {{{ -3378,  -4607,      0}, 0, {  -336,   1294}, {0x28, 0x77, 0x10, 0xff}}},\n};\n\n// 0x07004700 - 0x07004D48\nstatic const Gfx ddd_seg7_dl_07004700[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ddd_seg7_lights_07003800.l, 1),\n    gsSPLight(&ddd_seg7_lights_07003800.a, 2),\n    gsSPVertex(ddd_seg7_vertex_07003860, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 3, 10,  4, 0x0,  9,  8, 11, 0x0),\n    gsSP2Triangles( 8, 12, 11, 0x0, 11, 12,  1, 0x0),\n    gsSP2Triangles(11,  1,  0, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ddd_seg7_vertex_07003960, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles( 8,  7, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(12, 11, 13, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(14, 13, 15, 0x0),\n    gsSPVertex(ddd_seg7_vertex_07003A60, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP1Triangle( 5,  8,  7, 0x0),\n    gsSPLight(&ddd_seg7_lights_07003818.l, 1),\n    gsSPLight(&ddd_seg7_lights_07003818.a, 2),\n    gsSPVertex(ddd_seg7_vertex_07003AF0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPLight(&ddd_seg7_lights_07003830.l, 1),\n    gsSPLight(&ddd_seg7_lights_07003830.a, 2),\n    gsSPVertex(ddd_seg7_vertex_07003B30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles( 8, 10, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ddd_seg7_vertex_07003C30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  0,  3, 0x0,  2,  1,  5, 0x0),\n    gsSP2Triangles( 2,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 11, 13, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(14, 13, 15, 0x0),\n    gsSPVertex(ddd_seg7_vertex_07003D30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  5,  8, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  9,  8, 10, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 11, 10, 12, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 13, 12, 14, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(ddd_seg7_vertex_07003E30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 3,  4,  1, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles( 2,  5,  6, 0x0,  2,  6,  7, 0x0),\n    gsSP2Triangles( 8,  4,  3, 0x0,  8,  9,  4, 0x0),\n    gsSP2Triangles(10,  9,  8, 0x0, 10, 11,  9, 0x0),\n    gsSP2Triangles(12, 11, 10, 0x0, 12, 13, 11, 0x0),\n    gsSP2Triangles(14, 13, 12, 0x0, 15, 14, 12, 0x0),\n    gsSPVertex(ddd_seg7_vertex_07003F30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  6,  3, 0x0),\n    gsSP2Triangles( 7,  8,  6, 0x0,  9, 10,  7, 0x0),\n    gsSP2Triangles(10,  8,  7, 0x0, 11, 10,  9, 0x0),\n    gsSP2Triangles(11, 12, 10, 0x0,  1, 12, 11, 0x0),\n    gsSP2Triangles( 2,  1, 11, 0x0,  0, 13,  1, 0x0),\n    gsSP2Triangles(14, 15,  0, 0x0, 15, 13,  0, 0x0),\n    gsSPVertex(ddd_seg7_vertex_07004030, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  3,  0, 0x0,  4,  5,  3, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles( 9, 10, 14, 0x0,  9, 14, 15, 0x0),\n    gsSPVertex(ddd_seg7_vertex_07004130, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  5,  6,  3, 0x0),\n    gsSP2Triangles( 5,  7,  6, 0x0,  6,  7,  8, 0x0),\n    gsSPLight(&ddd_seg7_lights_07003848.l, 1),\n    gsSPLight(&ddd_seg7_lights_07003848.a, 2),\n    gsSPVertex(ddd_seg7_vertex_070041C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  4,  1,  6, 0x0),\n    gsSP2Triangles( 6,  1,  3, 0x0,  7,  1,  5, 0x0),\n    gsSP2Triangles( 2,  1,  8, 0x0,  8,  1,  7, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 12,  9, 13, 0x0),\n    gsSP2Triangles( 9, 11, 13, 0x0, 10, 14, 11, 0x0),\n    gsSP1Triangle(12, 13, 15, 0x0),\n    gsSPVertex(ddd_seg7_vertex_070042C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  5,  4, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 7,  6, 12, 0x0,  7, 12, 13, 0x0),\n    gsSP2Triangles( 8, 14,  5, 0x0, 13, 12, 15, 0x0),\n    gsSPVertex(ddd_seg7_vertex_070043C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 6,  5,  7, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 8,  7,  9, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(10,  9, 11, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(12, 11, 13, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(14, 13, 15, 0x0),\n    gsSPVertex(ddd_seg7_vertex_070044C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 4,  3,  8, 0x0,  4,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0,  9,  8, 11, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 10, 12, 0x0),\n    gsSP2Triangles(13, 12, 14, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ddd_seg7_vertex_070045C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  3,  6,  7, 0x0),\n    gsSP2Triangles( 8,  3,  9, 0x0,  3,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 0,  8, 11, 0x0,  0, 11, 12, 0x0),\n    gsSP2Triangles( 0, 13,  1, 0x0,  0, 12, 13, 0x0),\n    gsSP1Triangle(14,  0,  2, 0x0),\n    gsSPVertex(ddd_seg7_vertex_070046B0, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP1Triangle( 4,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07004D48 - 0x07004DA8\nconst Gfx ddd_seg7_dl_07004D48[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ddd_seg7_dl_07004700),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ddd/areas/1/2/model.inc.c",
    "content": "// 0x07004DA8 - 0x07004DC0\nstatic const Lights1 ddd_seg7_lights_07004DA8 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07004DC0 - 0x07004EC0\nstatic const Vtx ddd_seg7_vertex_07004DC0[] = {\n    {{{  6042,    205,    512}, 0, {     0,    582}, {0x9d, 0xe6, 0xb7, 0xff}}},\n    {{{  6042,    205,   -511}, 0, {  2012,    582}, {0x99, 0xc4, 0x2a, 0xff}}},\n    {{{  6042,  -1732,   -511}, 0, {  2012,   4448}, {0xc3, 0xc3, 0x5c, 0xff}}},\n    {{{  5018,  -2449,   -511}, 0, {  2012,   1790}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{  5018,   -511,    512}, 0, {     0,  -2076}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{  5018,  -2449,    512}, 0, {     0,   1790}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{  5018,   -511,   -511}, 0, {  2012,  -2076}, {0x49, 0x49, 0x49, 0xff}}},\n    {{{  9037,  -2756,   -511}, 0, {     0,  -9230}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  5325,  -2756,   -511}, 0, {     0,  -1820}, {0x30, 0x75, 0x00, 0xff}}},\n    {{{  5325,  -2756,    512}, 0, {  2012,  -1820}, {0x30, 0x75, 0x00, 0xff}}},\n    {{{  9037,  -2756,    512}, 0, {  2012,  -9230}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  5018,   1229,    512}, 0, {     0,  -1462}, {0xcc, 0xa7, 0xb7, 0xff}}},\n    {{{  6042,  -1732,    512}, 0, {     0,   4448}, {0xda, 0xda, 0x8e, 0xff}}},\n    {{{  5018,   1229,   -511}, 0, {  2624,  -4528}, {0xee, 0xba, 0x68, 0xff}}},\n    {{{  5018,  -2756,   -511}, 0, {  2624,   3426}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6042,  -1732,   -511}, 0, {  4668,   1382}, {0xc3, 0xc3, 0x5c, 0xff}}},\n};\n\n// 0x07004EC0 - 0x07004FA0\nstatic const Vtx ddd_seg7_vertex_07004EC0[] = {\n    {{{  5018,   1229,    512}, 0, {     0,  -1462}, {0xcc, 0xa7, 0xb7, 0xff}}},\n    {{{  5018,   1229,   -511}, 0, {  2012,  -1462}, {0xee, 0xba, 0x68, 0xff}}},\n    {{{  6042,    205,   -511}, 0, {  2012,    582}, {0x99, 0xc4, 0x2a, 0xff}}},\n    {{{  9037,  -1732,    512}, 0, {  2012,  -9230}, {0x00, 0x8f, 0xc8, 0xff}}},\n    {{{  6042,  -1732,    512}, 0, {  2012,  -3252}, {0xda, 0xda, 0x8e, 0xff}}},\n    {{{  6042,  -1732,   -511}, 0, {     0,  -3252}, {0xc3, 0xc3, 0x5c, 0xff}}},\n    {{{  9037,  -1732,   -511}, 0, {     0,  -9230}, {0x00, 0xc8, 0x71, 0xff}}},\n    {{{  6042,    205,    512}, 0, {  4668,  -2484}, {0x9d, 0xe6, 0xb7, 0xff}}},\n    {{{  5018,  -2756,    512}, 0, {  2624,   3426}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5018,   1229,    512}, 0, {  2624,  -4528}, {0xcc, 0xa7, 0xb7, 0xff}}},\n    {{{  6042,  -1732,    512}, 0, {  4668,   1382}, {0xda, 0xda, 0x8e, 0xff}}},\n    {{{  5018,   1229,   -511}, 0, {  2624,  -4528}, {0xee, 0xba, 0x68, 0xff}}},\n    {{{  6042,  -1732,   -511}, 0, {  4668,   1382}, {0xc3, 0xc3, 0x5c, 0xff}}},\n    {{{  6042,    205,   -511}, 0, {  4668,  -2484}, {0x99, 0xc4, 0x2a, 0xff}}},\n};\n\n// 0x07004FA0 - 0x07005090\nstatic const Vtx ddd_seg7_vertex_07004FA0[] = {\n    {{{  2150,  -4607,    512}, 0, { -3096,   7120}, {0x33, 0x33, 0x99, 0xff}}},\n    {{{  3174,   1229,    512}, 0, { -1052,  -4528}, {0x12, 0xba, 0x98, 0xff}}},\n    {{{  3174,  -4607,    512}, 0, { -1052,   7120}, {0xcd, 0x67, 0xcd, 0xff}}},\n    {{{  9037,  -2756,    512}, 0, { 10648,   3426}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  6042,  -1732,    512}, 0, {  4668,   1382}, {0xda, 0xda, 0x8e, 0xff}}},\n    {{{  9037,  -1732,    512}, 0, { 10648,   1382}, {0x00, 0x8f, 0xc8, 0xff}}},\n    {{{  5018,  -2756,    512}, 0, {  2624,   3426}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  9037,  -1732,   -511}, 0, { 10648,   1382}, {0x00, 0xc8, 0x71, 0xff}}},\n    {{{  5018,  -2756,   -511}, 0, {  2624,   3426}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  9037,  -2756,   -511}, 0, { 10648,   3426}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  6042,  -1732,   -511}, 0, {  4668,   1382}, {0xc3, 0xc3, 0x5c, 0xff}}},\n    {{{  5018,   -511,    512}, 0, {  2624,  -1054}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{  3174,   -511,    512}, 0, { -1052,  -1054}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{  5018,   1229,    512}, 0, {  2624,  -4528}, {0xcc, 0xa7, 0xb7, 0xff}}},\n    {{{  2150,    205,    512}, 0, { -3096,  -2484}, {0x71, 0xd2, 0xdf, 0xff}}},\n};\n\n// 0x07005090 - 0x07005190\nstatic const Vtx ddd_seg7_vertex_07005090[] = {\n    {{{  3174,   -511,   -511}, 0, { -1052,  -1054}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  5018,   -511,   -511}, 0, {  2624,  -1054}, {0x49, 0x49, 0x49, 0xff}}},\n    {{{  5018,   1229,   -511}, 0, {  2624,  -4528}, {0xee, 0xba, 0x68, 0xff}}},\n    {{{  3174,   1229,   -511}, 0, { -1052,  -4528}, {0x34, 0xa7, 0x49, 0xff}}},\n    {{{  3174,  -4607,   -511}, 0, { -1052,   7120}, {0xac, 0x2a, 0x54, 0xff}}},\n    {{{  2150,    205,   -511}, 0, { -3096,  -2484}, {0x4f, 0xe0, 0x5d, 0xff}}},\n    {{{  2150,  -4607,   -511}, 0, { -3096,   7120}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{  2150,  -4607,   -204}, 0, {  9576,   -440}, {0x2a, 0x73, 0x1e, 0xff}}},\n    {{{  2150,  -4607,   -511}, 0, {  9576,  -1054}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{  2150,  -4300,   -511}, 0, {  8960,  -1054}, {0x2a, 0x3c, 0x67, 0xff}}},\n    {{{  2150,  -3583,   -511}, 0, {  7532,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,    205,   -511}, 0, {     0,  -1054}, {0x4f, 0xe0, 0x5d, 0xff}}},\n    {{{  2150,    205,    512}, 0, {     0,    990}, {0x71, 0xd2, 0xdf, 0xff}}},\n    {{{  2150,  -4300,    512}, 0, {  8960,    990}, {0x2a, 0x1e, 0x8d, 0xff}}},\n    {{{  2150,  -4607,    512}, 0, {  9576,    990}, {0x33, 0x33, 0x99, 0xff}}},\n    {{{  2150,  -4607,    205}, 0, {  9576,    376}, {0x2a, 0x67, 0xc4, 0xff}}},\n};\n\n// 0x07005190 - 0x07005270\nstatic const Vtx ddd_seg7_vertex_07005190[] = {\n    {{{  2150,  -3890,   -511}, 0, {  8144,  -1054}, {0x2a, 0xe2, 0x73, 0xff}}},\n    {{{  2150,  -3583,   -511}, 0, {  7532,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,  -3583,   -204}, 0, {  7532,   -440}, {0x2a, 0x99, 0x3c, 0xff}}},\n    {{{  2150,  -3583,    205}, 0, {  7532,    376}, {0x2a, 0x8d, 0xe2, 0xff}}},\n    {{{  2150,  -3583,    512}, 0, {  7532,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2150,  -3890,    512}, 0, {  8144,    990}, {0x2a, 0xc4, 0x99, 0xff}}},\n    {{{  2150,    205,    512}, 0, {     0,    990}, {0x71, 0xd2, 0xdf, 0xff}}},\n    {{{  5018,   -511,    512}, 0, {  2012,  -1208}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{  5018,   -511,   -511}, 0, {     0,  -1208}, {0x49, 0x49, 0x49, 0xff}}},\n    {{{  3174,   -511,   -511}, 0, {     0,   2470}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  3174,  -4607,    512}, 0, {  2012,   2470}, {0xcd, 0x67, 0xcd, 0xff}}},\n    {{{  3174,  -4607,   -511}, 0, {     0,   2470}, {0xac, 0x2a, 0x54, 0xff}}},\n    {{{  2150,  -4607,   -511}, 0, {     0,   4514}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{  2150,  -4607,    512}, 0, {  2012,   4514}, {0x33, 0x33, 0x99, 0xff}}},\n};\n\n// 0x07005270 - 0x07005350\nstatic const Vtx ddd_seg7_vertex_07005270[] = {\n    {{{  2150,    205,    512}, 0, {     0,    582}, {0x71, 0xd2, 0xdf, 0xff}}},\n    {{{  3174,   1229,   -511}, 0, {  2012,  -1462}, {0x34, 0xa7, 0x49, 0xff}}},\n    {{{  3174,   1229,    512}, 0, {     0,  -1462}, {0x12, 0xba, 0x98, 0xff}}},\n    {{{  2150,    205,   -511}, 0, {  2012,    582}, {0x4f, 0xe0, 0x5d, 0xff}}},\n    {{{  3174,   1229,    512}, 0, {  2012,   2470}, {0x12, 0xba, 0x98, 0xff}}},\n    {{{  5018,   1229,   -511}, 0, {     0,  -1208}, {0xee, 0xba, 0x68, 0xff}}},\n    {{{  5018,   1229,    512}, 0, {  2012,  -1208}, {0xcc, 0xa7, 0xb7, 0xff}}},\n    {{{  3174,   1229,   -511}, 0, {     0,   2470}, {0x34, 0xa7, 0x49, 0xff}}},\n    {{{  5018,  -2449,   -511}, 0, {  2012,   -252}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{  5018,  -2449,    512}, 0, {     0,   -252}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{  5325,  -2756,    512}, 0, {     0,    362}, {0x30, 0x75, 0x00, 0xff}}},\n    {{{  5018,   -511,    512}, 0, {  2012,  -1208}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{  3174,   -511,   -511}, 0, {     0,   2470}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  3174,   -511,    512}, 0, {  2012,   2470}, {0x99, 0x33, 0xcd, 0xff}}},\n};\n\n// 0x07005350 - 0x070053C0\nstatic const Vtx ddd_seg7_vertex_07005350[] = {\n    {{{  3174,   -511,    512}, 0, {     0,  -4120}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{  3174,  -4607,   -511}, 0, {  2012,   4054}, {0xac, 0x2a, 0x54, 0xff}}},\n    {{{  3174,  -4607,    512}, 0, {     0,   4054}, {0xcd, 0x67, 0xcd, 0xff}}},\n    {{{  3174,   -511,   -511}, 0, {  2012,  -4120}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  5018,  -2449,   -511}, 0, {  2012,   -252}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{  5325,  -2756,    512}, 0, {     0,    362}, {0x30, 0x75, 0x00, 0xff}}},\n    {{{  5325,  -2756,   -511}, 0, {  2012,    362}, {0x30, 0x75, 0x00, 0xff}}},\n};\n\n// 0x070053C0 - 0x070054B0\nstatic const Vtx ddd_seg7_vertex_070053C0[] = {\n    {{{  -921,  -3583,    205}, 0, {     0,    990}, {0x00, 0x93, 0xc0, 0xff}}},\n    {{{  2150,  -3890,    512}, 0, {  2012,    462}, {0x2a, 0xc4, 0x99, 0xff}}},\n    {{{  -921,  -3890,    512}, 0, {     0,    462}, {0x00, 0xe0, 0x86, 0xff}}},\n    {{{  -921,  -4607,   -204}, 0, {     0,    990}, {0x00, 0x6d, 0x40, 0xff}}},\n    {{{  2150,  -4607,   -204}, 0, {  2012,    990}, {0x2a, 0x73, 0x1e, 0xff}}},\n    {{{  2150,  -4300,   -511}, 0, {  2012,    462}, {0x2a, 0x3c, 0x67, 0xff}}},\n    {{{  -921,  -4300,   -511}, 0, {     0,    462}, {0x00, 0x20, 0x7a, 0xff}}},\n    {{{  2150,  -3890,   -511}, 0, {  2012,      0}, {0x2a, 0xe2, 0x73, 0xff}}},\n    {{{  -921,  -3890,   -511}, 0, {     0,      0}, {0x00, 0xc0, 0x6d, 0xff}}},\n    {{{  -921,  -4607,    205}, 0, {     0,    462}, {0x00, 0x7a, 0xe0, 0xff}}},\n    {{{  2150,  -4607,   -204}, 0, {  2012,      0}, {0x2a, 0x73, 0x1e, 0xff}}},\n    {{{  -921,  -4607,   -204}, 0, {     0,      0}, {0x00, 0x6d, 0x40, 0xff}}},\n    {{{  2150,  -4607,    205}, 0, {  2012,    462}, {0x2a, 0x67, 0xc4, 0xff}}},\n    {{{  -921,  -4300,    512}, 0, {     0,    990}, {0x00, 0x40, 0x93, 0xff}}},\n    {{{  2150,  -4300,    512}, 0, {  2012,    990}, {0x2a, 0x1e, 0x8d, 0xff}}},\n};\n\n// 0x070054B0 - 0x07005570\nstatic const Vtx ddd_seg7_vertex_070054B0[] = {\n    {{{  -921,  -3890,   -511}, 0, {     0,    990}, {0x00, 0xc0, 0x6d, 0xff}}},\n    {{{  2150,  -3890,   -511}, 0, {  2012,    990}, {0x2a, 0xe2, 0x73, 0xff}}},\n    {{{  2150,  -3583,   -204}, 0, {  2012,    462}, {0x2a, 0x99, 0x3c, 0xff}}},\n    {{{  -921,  -3890,    512}, 0, {     0,    462}, {0x00, 0xe0, 0x86, 0xff}}},\n    {{{  2150,  -3890,    512}, 0, {  2012,    462}, {0x2a, 0xc4, 0x99, 0xff}}},\n    {{{  2150,  -4300,    512}, 0, {  2012,      0}, {0x2a, 0x1e, 0x8d, 0xff}}},\n    {{{  -921,  -3583,    205}, 0, {     0,    990}, {0x00, 0x93, 0xc0, 0xff}}},\n    {{{  2150,  -3583,    205}, 0, {  2012,    990}, {0x2a, 0x8d, 0xe2, 0xff}}},\n    {{{  -921,  -4300,    512}, 0, {     0,      0}, {0x00, 0x40, 0x93, 0xff}}},\n    {{{  -921,  -3583,   -204}, 0, {     0,    462}, {0x00, 0x86, 0x20, 0xff}}},\n    {{{  2150,  -3583,    205}, 0, {  2012,      0}, {0x2a, 0x8d, 0xe2, 0xff}}},\n    {{{  -921,  -3583,    205}, 0, {     0,      0}, {0x00, 0x93, 0xc0, 0xff}}},\n};\n\n// 0x07005570 - 0x07005738\nstatic const Gfx ddd_seg7_dl_07005570[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ddd_seg7_lights_07004DA8.l, 1),\n    gsSPLight(&ddd_seg7_lights_07004DA8.a, 2),\n    gsSPVertex(ddd_seg7_vertex_07004DC0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11,  1,  0, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ddd_seg7_vertex_07004EC0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ddd_seg7_vertex_07004FA0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  1, 11, 12, 0x0),\n    gsSP2Triangles( 1, 13, 11, 0x0,  0, 14,  1, 0x0),\n    gsSPVertex(ddd_seg7_vertex_07005090, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(ddd_seg7_vertex_07005190, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 1,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(ddd_seg7_vertex_07005270, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ddd_seg7_vertex_07005350, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP1Triangle( 4,  5,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07005738 - 0x070057E8\nstatic const Gfx ddd_seg7_dl_07005738[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ddd_seg7_vertex_070053C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 12,  9, 0x0),\n    gsSP1Triangle(13, 14, 12, 0x0),\n    gsSPVertex(ddd_seg7_vertex_070054B0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  4, 0x0,  3,  5,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9,  2, 10, 0x0),\n    gsSP1Triangle( 0,  2,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070057E8 - 0x07005850\nconst Gfx ddd_seg7_dl_070057E8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ddd_seg7_dl_07005570),\n    gsSPDisplayList(ddd_seg7_dl_07005738),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ddd/areas/1/3/model.inc.c",
    "content": "// 0x07005850 - 0x07005868\nstatic const Lights1 ddd_seg7_lights_07005850 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07005868 - 0x07005968\nstatic const Vtx ddd_seg7_vertex_07005868[] = {\n    {{{     0,   2048,   2048}, 0, { 10000,      0}, {0x9e, 0x00, 0xb1, 0xff}}},\n    {{{ -1023,      0,   3072}, 0, {  8492,    990}, {0xb1, 0x00, 0x9e, 0xff}}},\n    {{{ -1023,   2048,   3072}, 0, {  8492,      0}, {0xbc, 0x00, 0x96, 0xff}}},\n    {{{ -3993,   2048,   3174}, 0, {  5124,      0}, {0x10, 0x00, 0x83, 0xff}}},\n    {{{ -5119,      0,   3072}, 0, {  3904,    990}, {0x27, 0x00, 0x88, 0xff}}},\n    {{{ -5119,   2048,   3072}, 0, {  3904,      0}, {0x43, 0x00, 0x95, 0xff}}},\n    {{{ -6143,      0,   2048}, 0, {  2328,    990}, {0x62, 0x00, 0xb1, 0xff}}},\n    {{{ -6143,   2048,   2048}, 0, {  2328,      0}, {0x6a, 0x00, 0xbc, 0xff}}},\n    {{{ -3993,      0,   3174}, 0, {  5124,    990}, {0x15, 0x00, 0x83, 0xff}}},\n    {{{ -6655,      0,   1024}, 0, {  1088,    990}, {0x7b, 0x00, 0xe4, 0xff}}},\n    {{{ -6655,   2048,   1024}, 0, {  1088,      0}, {0x7e, 0x00, 0x03, 0xff}}},\n    {{{ -2047,   2048,   3584}, 0, {  7296,      0}, {0xff, 0x00, 0x82, 0xff}}},\n    {{{ -2047,      0,   3584}, 0, {  7296,    990}, {0xe2, 0x00, 0x85, 0xff}}},\n    {{{ -2047,   2048,  -3583}, 0, { 17168,      0}, {0xbb, 0x00, 0x6a, 0xff}}},\n    {{{ -2047,      0,  -3583}, 0, { 17168,    990}, {0xde, 0x00, 0x7a, 0xff}}},\n    {{{ -1330,      0,  -2764}, 0, { 16060,    990}, {0xac, 0x00, 0x5e, 0xff}}},\n};\n\n// 0x07005968 - 0x07005A68\nstatic const Vtx ddd_seg7_vertex_07005968[] = {\n    {{{     0,   2048,   2048}, 0, { 10000,      0}, {0x9e, 0x00, 0xb1, 0xff}}},\n    {{{     0,      0,   2048}, 0, { 10000,    990}, {0x96, 0x00, 0xbc, 0xff}}},\n    {{{ -1023,      0,   3072}, 0, {  8492,    990}, {0xb1, 0x00, 0x9e, 0xff}}},\n    {{{   512,   2048,   1024}, 0, { 11176,      0}, {0x88, 0x00, 0xda, 0xff}}},\n    {{{   512,      0,   1024}, 0, { 11176,    990}, {0x83, 0x00, 0xed, 0xff}}},\n    {{{   512,   2048,  -1023}, 0, { 13288,      0}, {0x83, 0x00, 0x13, 0xff}}},\n    {{{   512,      0,  -1023}, 0, { 13288,    990}, {0x88, 0x00, 0x26, 0xff}}},\n    {{{     0,   2048,  -2047}, 0, { 14464,      0}, {0x9d, 0x00, 0x4e, 0xff}}},\n    {{{     0,      0,  -2047}, 0, { 14464,    990}, {0xaf, 0x00, 0x61, 0xff}}},\n    {{{ -1330,   2048,  -2764}, 0, { 16060,      0}, {0xb7, 0x00, 0x67, 0xff}}},\n    {{{ -1330,      0,  -2764}, 0, { 16060,    990}, {0xac, 0x00, 0x5e, 0xff}}},\n    {{{ -2047,   2048,  -3583}, 0, { 17168,      0}, {0xbb, 0x00, 0x6a, 0xff}}},\n    {{{ -4095,   2048,  -3583}, 0, { 19336,      0}, {0x13, 0x00, 0x7d, 0xff}}},\n    {{{ -2047,      0,  -3583}, 0, { 17168,    990}, {0xde, 0x00, 0x7a, 0xff}}},\n    {{{ -4095,      0,  -3583}, 0, { 19336,    990}, {0x26, 0x00, 0x78, 0xff}}},\n    {{{ -5119,   2048,  -3071}, 0, { 20560,      0}, {0x44, 0x00, 0x6a, 0xff}}},\n};\n\n// 0x07005A68 - 0x07005AF8\nstatic const Vtx ddd_seg7_vertex_07005A68[] = {\n    {{{ -5119,   2048,  -3071}, 0, { 20560,      0}, {0x44, 0x00, 0x6a, 0xff}}},\n    {{{ -5119,      0,  -3071}, 0, { 20560,    990}, {0x4f, 0x00, 0x62, 0xff}}},\n    {{{ -4095,      0,  -3583}, 0, { 19336,    990}, {0x26, 0x00, 0x78, 0xff}}},\n    {{{ -6143,   2048,  -2047}, 0, { 22132,      0}, {0x6d, 0x00, 0x40, 0xff}}},\n    {{{ -6143,      0,  -2047}, 0, { 22132,    990}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{ -6143,   2048,   -818}, 0, { 23440,      0}, {0x7e, 0x00, 0x0b, 0xff}}},\n    {{{ -6143,      0,   -818}, 0, { 23440,    990}, {0x7c, 0x00, 0x16, 0xff}}},\n    {{{ -6655,   2048,   1024}, 0, { 25616,      0}, {0x7e, 0x00, 0x03, 0xff}}},\n    {{{ -6655,      0,   1024}, 0, { 25616,    990}, {0x7b, 0x00, 0xe4, 0xff}}},\n};\n\n// 0x07005AF8 - 0x07005C40\nstatic const Gfx ddd_seg7_dl_07005AF8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_0900B800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ddd_seg7_lights_07005850.l, 1),\n    gsSPLight(&ddd_seg7_lights_07005850.a, 2),\n    gsSPVertex(ddd_seg7_vertex_07005868, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  4,  6, 0x0),\n    gsSP2Triangles( 3,  8,  4, 0x0,  7,  6,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11,  8,  3, 0x0),\n    gsSP2Triangles(11, 12,  8, 0x0,  2, 12, 11, 0x0),\n    gsSP2Triangles( 2,  1, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ddd_seg7_vertex_07005968, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 3,  4,  1, 0x0,  5,  4,  3, 0x0),\n    gsSP2Triangles( 5,  6,  4, 0x0,  7,  6,  5, 0x0),\n    gsSP2Triangles( 7,  8,  6, 0x0,  9,  8,  7, 0x0),\n    gsSP2Triangles( 9, 10,  8, 0x0, 11, 10,  9, 0x0),\n    gsSP2Triangles(12, 13, 11, 0x0, 12, 14, 13, 0x0),\n    gsSP1Triangle(15, 14, 12, 0x0),\n    gsSPVertex(ddd_seg7_vertex_07005A68, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 3,  4,  1, 0x0,  5,  4,  3, 0x0),\n    gsSP2Triangles( 5,  6,  4, 0x0,  7,  6,  5, 0x0),\n    gsSP1Triangle( 7,  8,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07005C40 - 0x07005CB0\nconst Gfx ddd_seg7_dl_07005C40[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ddd_seg7_dl_07005AF8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ddd/areas/1/4/model.inc.c",
    "content": "// 0x07005CB0 - 0x07005D90\nstatic const Vtx ddd_seg7_vertex_07005CB0[] = {\n    {{{  7322,  -2746,   -255}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{  7322,  -2746,    256}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{  7680,  -2746,      0}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{  7014,  -2746,   -153}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{  7322,  -2746,     51}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{  7322,  -2746,    -50}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{  7014,  -2746,    154}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{  3123,  -2149,   -255}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{  3123,  -2149,    256}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{  3123,  -1791,      0}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{  3123,  -2457,   -153}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{  3123,  -2149,     51}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{  3123,  -2149,    -50}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{  3123,  -2457,    154}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n};\n\n// 0x07005D90 - 0x07005E70\nstatic const Vtx ddd_seg7_vertex_07005D90[] = {\n    {{{  5478,  -2746,   -153}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{  5478,  -2746,    154}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{  5786,  -2746,     51}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{  5786,  -2746,    -50}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{  5786,  -2746,   -255}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{  5786,  -2746,    256}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{  6144,  -2746,      0}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{  5988,    244,      0}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{  5734,    497,    256}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{  5734,    497,   -255}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{  5734,    497,    -50}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{  5517,    715,    154}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{  5517,    715,   -153}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{  5734,    497,     51}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n};\n\n// 0x07005E70 - 0x07005EE0\nstatic const Vtx ddd_seg7_vertex_07005E70[] = {\n    {{{  3123,  -4505,   -153}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{  3123,  -4505,    154}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{  3123,  -4197,     51}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{  3123,  -4197,   -255}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{  3123,  -4197,    256}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{  3123,  -3839,      0}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{  3123,  -4197,    -50}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n};\n\n// 0x07005EE0 - 0x07005F78\nstatic const Gfx ddd_seg7_dl_07005EE0[] = {\n    gsSPVertex(ddd_seg7_vertex_07005CB0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(ddd_seg7_vertex_07005D90, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(ddd_seg7_vertex_07005E70, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  2,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07005F78 - 0x07005FC8\nconst Gfx ddd_seg7_dl_07005F78[] = {\n    gsDPPipeSync(),\n    gsDPSetEnvColor(255, 255, 255, 98),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPDisplayList(ddd_seg7_dl_07005EE0),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ddd/areas/1/collision.inc.c",
    "content": "// 0x0700D310 - 0x0700DE6E\nconst Collision ddd_seg7_area_1_collision[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0xB1),\n    COL_VERTEX(4096, -511, -511),\n    COL_VERTEX(3891, -511, 512),\n    COL_VERTEX(4096, -511, 512),\n    COL_VERTEX(3891, -511, -511),\n    COL_VERTEX(4301, -511, 512),\n    COL_VERTEX(4301, -511, -511),\n    COL_VERTEX(-2354, -5426, -1023),\n    COL_VERTEX(-3890, -5426, 1024),\n    COL_VERTEX(-2354, -5426, 1024),\n    COL_VERTEX(-3890, -5426, -1023),\n    COL_VERTEX(5018, -2449, -511),\n    COL_VERTEX(5018, -511, -511),\n    COL_VERTEX(5018, -511, 512),\n    COL_VERTEX(5018, -2449, 512),\n    COL_VERTEX(3174, 1229, 512),\n    COL_VERTEX(3174, -511, 512),\n    COL_VERTEX(5018, 1229, 512),\n    COL_VERTEX(3174, -511, -511),\n    COL_VERTEX(9037, -1732, -511),\n    COL_VERTEX(9037, -2756, -511),\n    COL_VERTEX(9037, -2756, 512),\n    COL_VERTEX(6042, 205, -511),\n    COL_VERTEX(6042, 205, 512),\n    COL_VERTEX(5018, 1229, -511),\n    COL_VERTEX(9037, -1732, 512),\n    COL_VERTEX(3174, 1229, -511),\n    COL_VERTEX(2150, 205, 512),\n    COL_VERTEX(3174, -4607, -511),\n    COL_VERTEX(3174, -4607, 512),\n    COL_VERTEX(2150, -4607, 512),\n    COL_VERTEX(2150, -3583, -511),\n    COL_VERTEX(2150, -4607, -204),\n    COL_VERTEX(2150, -4300, 512),\n    COL_VERTEX(2150, -3890, -511),\n    COL_VERTEX(2150, -3583, 205),\n    COL_VERTEX(-3993, 2048, 3174),\n    COL_VERTEX(-5119, 2048, 3072),\n    COL_VERTEX(-5119, 0, 3072),\n    COL_VERTEX(-3583, -1023, 2458),\n    COL_VERTEX(-3993, 0, 3174),\n    COL_VERTEX(-6143, 2048, 2048),\n    COL_VERTEX(-6143, 0, 2048),\n    COL_VERTEX(-2047, 2048, 3584),\n    COL_VERTEX(-2047, 0, 3584),\n    COL_VERTEX(-1023, 2048, 3072),\n    COL_VERTEX(-1023, 0, 3072),\n    COL_VERTEX(0, 2048, 2048),\n    COL_VERTEX(0, 0, 2048),\n    COL_VERTEX(512, 2048, 1024),\n    COL_VERTEX(512, 0, 1024),\n    COL_VERTEX(512, 2048, -1023),\n    COL_VERTEX(512, 0, -1023),\n    COL_VERTEX(0, 2048, -2047),\n    COL_VERTEX(0, 0, -2047),\n    COL_VERTEX(-613, -1023, -1637),\n    COL_VERTEX(-1330, 2048, -2764),\n    COL_VERTEX(-1330, 0, -2764),\n    COL_VERTEX(-2047, 2048, -3583),\n    COL_VERTEX(-2047, 0, -3583),\n    COL_VERTEX(-4095, 2048, -3583),\n    COL_VERTEX(-4095, 0, -3583),\n    COL_VERTEX(-5119, 2048, -3071),\n    COL_VERTEX(-6143, 2048, -2047),\n    COL_VERTEX(-5119, 0, -3071),\n    COL_VERTEX(-6143, 0, -2047),\n    COL_VERTEX(-6143, 2048, -818),\n    COL_VERTEX(-6143, 0, -818),\n    COL_VERTEX(-5324, -1023, -716),\n    COL_VERTEX(-6655, 2048, 1024),\n    COL_VERTEX(-6655, 0, 1024),\n    COL_VERTEX(-921, -4607, -204),\n    COL_VERTEX(-921, -4300, -511),\n    COL_VERTEX(-921, -3890, -511),\n    COL_VERTEX(-921, -3583, -204),\n    COL_VERTEX(-921, -3583, 205),\n    COL_VERTEX(-921, -3890, 512),\n    COL_VERTEX(-921, -4300, 512),\n    COL_VERTEX(-921, -4607, 205),\n    COL_VERTEX(-3378, -4607, 205),\n    COL_VERTEX(-3276, -4607, 307),\n    COL_VERTEX(-3378, -4607, 0),\n    COL_VERTEX(-3071, -4607, 307),\n    COL_VERTEX(-921, -2047, -613),\n    COL_VERTEX(-2149, -2047, -1637),\n    COL_VERTEX(-1842, -1023, -2047),\n    COL_VERTEX(-1228, -2047, 1229),\n    COL_VERTEX(-921, -2047, 614),\n    COL_VERTEX(-1842, -5119, 819),\n    COL_VERTEX(-1330, -5119, 512),\n    COL_VERTEX(-4709, -1023, 2458),\n    COL_VERTEX(-5938, -1023, 1843),\n    COL_VERTEX(-4914, -2047, 1229),\n    COL_VERTEX(-5221, -2047, 614),\n    COL_VERTEX(-5938, -1023, 819),\n    COL_VERTEX(-4197, -2047, 1536),\n    COL_VERTEX(-4914, -2047, -409),\n    COL_VERTEX(-5221, -5119, 614),\n    COL_VERTEX(-4914, -2047, -1228),\n    COL_VERTEX(-5529, -1023, -1637),\n    COL_VERTEX(-4197, -2047, -1740),\n    COL_VERTEX(-4505, -1023, -2252),\n    COL_VERTEX(-3685, -2047, -2457),\n    COL_VERTEX(-3890, -1023, -2866),\n    COL_VERTEX(-2457, -2047, -2149),\n    COL_VERTEX(-2252, -1023, -2866),\n    COL_VERTEX(-204, -1023, -818),\n    COL_VERTEX(-613, -1023, 819),\n    COL_VERTEX(-613, -1023, 1638),\n    COL_VERTEX(-1945, -2047, 1638),\n    COL_VERTEX(-1637, -1023, 2253),\n    COL_VERTEX(-2252, -1023, 2867),\n    COL_VERTEX(-2457, -2047, 2150),\n    COL_VERTEX(-3685, -2047, 2150),\n    COL_VERTEX(-4914, -5119, 1229),\n    COL_VERTEX(-4300, -5119, -818),\n    COL_VERTEX(-3890, -5119, -1228),\n    COL_VERTEX(-3481, -5119, -1740),\n    COL_VERTEX(-2661, -5119, -1433),\n    COL_VERTEX(-1945, -5119, -1535),\n    COL_VERTEX(-1842, -5119, -818),\n    COL_VERTEX(-2252, -5119, 1229),\n    COL_VERTEX(-3685, -5119, 2150),\n    COL_VERTEX(-4300, -5119, 1843),\n    COL_VERTEX(-3276, -4607, 717),\n    COL_VERTEX(-2866, -4607, 717),\n    COL_VERTEX(-2764, -5119, 1843),\n    COL_VERTEX(-2661, -4607, 614),\n    COL_VERTEX(-3685, -4607, 819),\n    COL_VERTEX(-3890, -4607, 614),\n    COL_VERTEX(-3788, -4607, 205),\n    COL_VERTEX(-4812, -5119, -511),\n    COL_VERTEX(-3890, -4607, -101),\n    COL_VERTEX(-3685, -4607, -306),\n    COL_VERTEX(-3378, -4607, -409),\n    COL_VERTEX(-3276, -4607, -716),\n    COL_VERTEX(-2866, -4607, -716),\n    COL_VERTEX(-2661, -4607, -613),\n    COL_VERTEX(-2457, -4607, -409),\n    COL_VERTEX(-1330, -5119, -511),\n    COL_VERTEX(-2149, -4607, -204),\n    COL_VERTEX(-2149, -4607, 205),\n    COL_VERTEX(-2457, -4607, 410),\n    COL_VERTEX(-921, -5119, 614),\n    COL_VERTEX(-921, -5119, -613),\n    COL_VERTEX(-2969, -4607, 205),\n    COL_VERTEX(-2969, -4607, 0),\n    COL_VERTEX(-3071, -4607, -101),\n    COL_VERTEX(-3276, -4607, -101),\n    COL_VERTEX(-3173, -4914, 102),\n    COL_VERTEX(5018, -2756, -511),\n    COL_VERTEX(5325, -2756, 512),\n    COL_VERTEX(5325, -2756, -511),\n    COL_VERTEX(5018, -2756, 512),\n    COL_VERTEX(6042, -1732, 512),\n    COL_VERTEX(6042, -1732, -511),\n    COL_VERTEX(2150, -4607, -511),\n    COL_VERTEX(2150, 205, -511),\n    COL_VERTEX(2150, -3583, 512),\n    COL_VERTEX(2150, -4300, -511),\n    COL_VERTEX(2150, -4607, 205),\n    COL_VERTEX(2150, -3583, -204),\n    COL_VERTEX(2150, -3890, 512),\n    COL_VERTEX(-1228, -2047, -1228),\n    COL_VERTEX(-1228, -5119, -1228),\n    COL_VERTEX(-1842, -5119, -1842),\n    COL_VERTEX(-1228, -5119, 1229),\n    COL_VERTEX(-1842, -5119, 1843),\n    COL_VERTEX(-5221, -5119, -613),\n    COL_VERTEX(-4914, -5119, -1228),\n    COL_VERTEX(-4300, -5119, -1842),\n    COL_VERTEX(-4300, -5119, 819),\n    COL_VERTEX(-4505, -5119, 410),\n    COL_VERTEX(-4197, -5119, 1536),\n    COL_VERTEX(-3685, -5119, -2149),\n    COL_VERTEX(-2457, -5119, -2149),\n    COL_VERTEX(-2457, -5119, 2150),\n    COL_VERTEX(-3276, -5119, 1741),\n    COL_TRI_INIT(SURFACE_DEFAULT, 298),\n    COL_TRI(14, 16, 12),\n    COL_TRI(6, 7, 8),\n    COL_TRI(6, 9, 7),\n    COL_TRI(10, 11, 12),\n    COL_TRI(10, 12, 13),\n    COL_TRI(4, 12, 11),\n    COL_TRI(14, 12, 15),\n    COL_TRI(17, 11, 23),\n    COL_TRI(18, 149, 19),\n    COL_TRI(19, 150, 20),\n    COL_TRI(19, 151, 150),\n    COL_TRI(10, 150, 151),\n    COL_TRI(10, 13, 150),\n    COL_TRI(20, 152, 153),\n    COL_TRI(20, 153, 24),\n    COL_TRI(24, 154, 18),\n    COL_TRI(16, 21, 22),\n    COL_TRI(22, 152, 16),\n    COL_TRI(22, 153, 152),\n    COL_TRI(22, 21, 154),\n    COL_TRI(22, 154, 153),\n    COL_TRI(16, 23, 21),\n    COL_TRI(23, 154, 21),\n    COL_TRI(24, 153, 154),\n    COL_TRI(18, 154, 149),\n    COL_TRI(23, 149, 154),\n    COL_TRI(14, 25, 23),\n    COL_TRI(14, 23, 16),\n    COL_TRI(26, 25, 14),\n    COL_TRI(15, 17, 27),\n    COL_TRI(15, 27, 28),\n    COL_TRI(17, 23, 25),\n    COL_TRI(28, 155, 29),\n    COL_TRI(29, 26, 14),\n    COL_TRI(29, 14, 28),\n    COL_TRI(28, 27, 155),\n    COL_TRI(30, 26, 157),\n    COL_TRI(30, 156, 26),\n    COL_TRI(26, 156, 25),\n    COL_TRI(27, 25, 156),\n    COL_TRI(27, 156, 155),\n    COL_TRI(31, 155, 158),\n    COL_TRI(32, 29, 159),\n    COL_TRI(33, 30, 160),\n    COL_TRI(34, 157, 161),\n    COL_TRI(35, 37, 36),\n    COL_TRI(36, 41, 40),\n    COL_TRI(36, 37, 41),\n    COL_TRI(37, 89, 90),\n    COL_TRI(37, 90, 41),\n    COL_TRI(38, 89, 37),\n    COL_TRI(39, 38, 37),\n    COL_TRI(35, 39, 37),\n    COL_TRI(40, 41, 69),\n    COL_TRI(41, 90, 93),\n    COL_TRI(41, 93, 69),\n    COL_TRI(40, 69, 68),\n    COL_TRI(42, 39, 35),\n    COL_TRI(43, 38, 39),\n    COL_TRI(42, 43, 39),\n    COL_TRI(50, 49, 48),\n    COL_TRI(44, 43, 42),\n    COL_TRI(43, 110, 38),\n    COL_TRI(44, 45, 43),\n    COL_TRI(45, 110, 43),\n    COL_TRI(46, 45, 44),\n    COL_TRI(46, 47, 45),\n    COL_TRI(47, 109, 45),\n    COL_TRI(45, 109, 110),\n    COL_TRI(48, 47, 46),\n    COL_TRI(48, 49, 47),\n    COL_TRI(47, 107, 109),\n    COL_TRI(49, 107, 47),\n    COL_TRI(56, 84, 54),\n    COL_TRI(50, 51, 49),\n    COL_TRI(51, 106, 49),\n    COL_TRI(49, 106, 107),\n    COL_TRI(52, 51, 50),\n    COL_TRI(52, 53, 51),\n    COL_TRI(53, 54, 51),\n    COL_TRI(54, 105, 51),\n    COL_TRI(51, 105, 106),\n    COL_TRI(55, 53, 52),\n    COL_TRI(55, 56, 53),\n    COL_TRI(56, 54, 53),\n    COL_TRI(57, 56, 55),\n    COL_TRI(57, 58, 56),\n    COL_TRI(58, 84, 56),\n    COL_TRI(65, 64, 62),\n    COL_TRI(59, 58, 57),\n    COL_TRI(59, 60, 58),\n    COL_TRI(58, 104, 84),\n    COL_TRI(60, 104, 58),\n    COL_TRI(61, 60, 59),\n    COL_TRI(62, 63, 61),\n    COL_TRI(61, 63, 60),\n    COL_TRI(62, 64, 63),\n    COL_TRI(63, 100, 102),\n    COL_TRI(63, 102, 60),\n    COL_TRI(64, 100, 63),\n    COL_TRI(60, 102, 104),\n    COL_TRI(71, 33, 72),\n    COL_TRI(65, 66, 64),\n    COL_TRI(64, 98, 100),\n    COL_TRI(66, 67, 64),\n    COL_TRI(67, 98, 64),\n    COL_TRI(68, 66, 65),\n    COL_TRI(68, 69, 66),\n    COL_TRI(69, 67, 66),\n    COL_TRI(69, 93, 67),\n    COL_TRI(70, 158, 71),\n    COL_TRI(71, 158, 33),\n    COL_TRI(75, 32, 76),\n    COL_TRI(72, 33, 160),\n    COL_TRI(72, 160, 73),\n    COL_TRI(70, 31, 158),\n    COL_TRI(73, 160, 34),\n    COL_TRI(73, 34, 74),\n    COL_TRI(74, 34, 161),\n    COL_TRI(74, 161, 75),\n    COL_TRI(75, 161, 32),\n    COL_TRI(79, 128, 127),\n    COL_TRI(76, 32, 159),\n    COL_TRI(76, 159, 77),\n    COL_TRI(77, 159, 31),\n    COL_TRI(77, 31, 70),\n    COL_TRI(78, 80, 129),\n    COL_TRI(79, 78, 128),\n    COL_TRI(78, 129, 128),\n    COL_TRI(80, 131, 129),\n    COL_TRI(81, 79, 123),\n    COL_TRI(79, 127, 123),\n    COL_TRI(82, 163, 143),\n    COL_TRI(82, 162, 163),\n    COL_TRI(83, 163, 162),\n    COL_TRI(84, 162, 54),\n    COL_TRI(84, 83, 162),\n    COL_TRI(54, 162, 82),\n    COL_TRI(90, 91, 92),\n    COL_TRI(85, 86, 165),\n    COL_TRI(86, 142, 165),\n    COL_TRI(85, 165, 166),\n    COL_TRI(87, 166, 165),\n    COL_TRI(88, 165, 142),\n    COL_TRI(88, 87, 165),\n    COL_TRI(89, 91, 90),\n    COL_TRI(90, 92, 93),\n    COL_TRI(91, 96, 92),\n    COL_TRI(92, 96, 95),\n    COL_TRI(93, 92, 95),\n    COL_TRI(93, 95, 67),\n    COL_TRI(94, 113, 91),\n    COL_TRI(91, 113, 96),\n    COL_TRI(89, 94, 91),\n    COL_TRI(95, 167, 168),\n    COL_TRI(95, 168, 97),\n    COL_TRI(96, 167, 95),\n    COL_TRI(67, 95, 97),\n    COL_TRI(67, 97, 98),\n    COL_TRI(104, 103, 83),\n    COL_TRI(97, 169, 99),\n    COL_TRI(97, 168, 169),\n    COL_TRI(98, 97, 99),\n    COL_TRI(98, 99, 100),\n    COL_TRI(99, 169, 173),\n    COL_TRI(99, 173, 101),\n    COL_TRI(100, 99, 101),\n    COL_TRI(100, 101, 102),\n    COL_TRI(101, 173, 174),\n    COL_TRI(101, 174, 103),\n    COL_TRI(102, 101, 103),\n    COL_TRI(102, 103, 104),\n    COL_TRI(103, 164, 83),\n    COL_TRI(103, 174, 164),\n    COL_TRI(107, 108, 109),\n    COL_TRI(104, 83, 84),\n    COL_TRI(83, 164, 163),\n    COL_TRI(54, 82, 105),\n    COL_TRI(105, 82, 86),\n    COL_TRI(105, 86, 106),\n    COL_TRI(86, 85, 107),\n    COL_TRI(106, 86, 107),\n    COL_TRI(107, 85, 108),\n    COL_TRI(38, 94, 89),\n    COL_TRI(85, 166, 108),\n    COL_TRI(108, 175, 111),\n    COL_TRI(108, 166, 175),\n    COL_TRI(109, 108, 110),\n    COL_TRI(108, 111, 110),\n    COL_TRI(110, 111, 112),\n    COL_TRI(110, 112, 38),\n    COL_TRI(111, 121, 112),\n    COL_TRI(111, 175, 121),\n    COL_TRI(38, 112, 94),\n    COL_TRI(112, 121, 122),\n    COL_TRI(112, 122, 94),\n    COL_TRI(94, 122, 113),\n    COL_TRI(96, 170, 171),\n    COL_TRI(96, 113, 170),\n    COL_TRI(96, 130, 167),\n    COL_TRI(96, 171, 130),\n    COL_TRI(113, 122, 172),\n    COL_TRI(113, 172, 170),\n    COL_TRI(114, 168, 167),\n    COL_TRI(114, 167, 130),\n    COL_TRI(114, 169, 168),\n    COL_TRI(114, 115, 169),\n    COL_TRI(115, 173, 169),\n    COL_TRI(116, 174, 173),\n    COL_TRI(115, 116, 173),\n    COL_TRI(117, 164, 174),\n    COL_TRI(116, 117, 174),\n    COL_TRI(118, 163, 164),\n    COL_TRI(117, 118, 164),\n    COL_TRI(118, 119, 163),\n    COL_TRI(119, 143, 163),\n    COL_TRI(87, 120, 166),\n    COL_TRI(120, 175, 166),\n    COL_TRI(127, 172, 176),\n    COL_TRI(120, 125, 175),\n    COL_TRI(121, 175, 125),\n    COL_TRI(122, 121, 176),\n    COL_TRI(121, 125, 176),\n    COL_TRI(122, 176, 172),\n    COL_TRI(123, 125, 124),\n    COL_TRI(124, 125, 126),\n    COL_TRI(125, 120, 126),\n    COL_TRI(123, 176, 125),\n    COL_TRI(126, 87, 141),\n    COL_TRI(126, 120, 87),\n    COL_TRI(127, 176, 123),\n    COL_TRI(128, 172, 127),\n    COL_TRI(128, 170, 172),\n    COL_TRI(129, 170, 128),\n    COL_TRI(129, 171, 170),\n    COL_TRI(130, 171, 129),\n    COL_TRI(131, 130, 129),\n    COL_TRI(132, 130, 131),\n    COL_TRI(132, 114, 130),\n    COL_TRI(133, 114, 132),\n    COL_TRI(133, 115, 114),\n    COL_TRI(116, 115, 133),\n    COL_TRI(134, 116, 133),\n    COL_TRI(138, 88, 142),\n    COL_TRI(135, 116, 134),\n    COL_TRI(135, 117, 116),\n    COL_TRI(136, 118, 135),\n    COL_TRI(118, 117, 135),\n    COL_TRI(137, 118, 136),\n    COL_TRI(137, 119, 118),\n    COL_TRI(138, 119, 137),\n    COL_TRI(139, 138, 137),\n    COL_TRI(119, 138, 143),\n    COL_TRI(140, 138, 139),\n    COL_TRI(140, 88, 138),\n    COL_TRI(138, 142, 143),\n    COL_TRI(141, 88, 140),\n    COL_TRI(141, 87, 88),\n    COL_TRI(76, 77, 142),\n    COL_TRI(86, 76, 142),\n    COL_TRI(86, 75, 76),\n    COL_TRI(142, 77, 70),\n    COL_TRI(142, 70, 143),\n    COL_TRI(143, 72, 82),\n    COL_TRI(143, 70, 71),\n    COL_TRI(143, 71, 72),\n    COL_TRI(86, 74, 75),\n    COL_TRI(73, 74, 86),\n    COL_TRI(73, 86, 82),\n    COL_TRI(82, 72, 73),\n    COL_TRI(81, 123, 124),\n    COL_TRI(144, 81, 124),\n    COL_TRI(144, 124, 126),\n    COL_TRI(144, 126, 141),\n    COL_TRI(145, 144, 140),\n    COL_TRI(144, 141, 140),\n    COL_TRI(147, 132, 131),\n    COL_TRI(145, 140, 139),\n    COL_TRI(145, 139, 137),\n    COL_TRI(146, 145, 137),\n    COL_TRI(146, 137, 136),\n    COL_TRI(146, 134, 133),\n    COL_TRI(146, 135, 134),\n    COL_TRI(146, 136, 135),\n    COL_TRI(147, 146, 133),\n    COL_TRI(147, 133, 132),\n    COL_TRI(80, 147, 131),\n    COL_TRI(3, 15, 1),\n    COL_TRI(3, 17, 15),\n    COL_TRI(4, 11, 5),\n    COL_TRI(81, 148, 79),\n    COL_TRI(144, 148, 81),\n    COL_TRI(79, 148, 78),\n    COL_TRI(78, 148, 80),\n    COL_TRI(148, 147, 80),\n    COL_TRI(145, 148, 144),\n    COL_TRI(147, 148, 146),\n    COL_TRI(146, 148, 145),\n    COL_TRI_INIT(SURFACE_INSTANT_WARP_1D, 2),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI_INIT(SURFACE_INSTANT_WARP_1E, 2),\n    COL_TRI(2, 4, 5),\n    COL_TRI(2, 5, 0),\n    COL_TRI_STOP(),\n    COL_WATER_BOX_INIT(1),\n    COL_WATER_BOX(0, -7167, -4095,  6144,  4096, 0),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/ddd/areas/1/geo.inc.c",
    "content": "// 0x0E0004C0\nconst GeoLayout ddd_geo_0004C0[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND(BACKGROUND_OCEAN_SKY, geo_skybox_main),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 12800, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(2, 0, 2000, 6000, 2560, 0, 512, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, ddd_seg7_dl_07004D48),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, ddd_seg7_dl_070057E8),\n                    GEO_DISPLAY_LIST(LAYER_ALPHA, ddd_seg7_dl_07005C40),\n                    GEO_DISPLAY_LIST(LAYER_TRANSPARENT, ddd_seg7_dl_07005F78),\n                    GEO_ASM(   0, geo_movtex_pause_control),\n                    GEO_ASM(0x2301, geo_movtex_draw_water_regions),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(  13, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ddd/areas/1/macro.inc.c",
    "content": "// 0x0700EEF4 - 0x0700EFAA\nconst MacroObject ddd_seg7_area_1_macro_objs[] = {\n    MACRO_OBJECT               (/*preset*/ macro_seaweed_bundle,            /*yaw*/   0, /*pos*/ -2880, -5120, -1850),\n    MACRO_OBJECT               (/*preset*/ macro_clam_shell,                /*yaw*/  90, /*pos*/ -4760, -5120,   580),\n    MACRO_OBJECT               (/*preset*/ macro_seaweed_bundle,            /*yaw*/   0, /*pos*/ -3510, -5120,  1950),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,        /*yaw*/   0, /*pos*/ -4760, -5100,   580),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_hidden_1up,                /*yaw*/   0, /*pos*/ -4760, -5080,   580, /*bhvParam*/ 1),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_vertical_flying, /*yaw*/  90, /*pos*/ -1000, -4250,     0),\n    MACRO_OBJECT               (/*preset*/ macro_fish_spawner_few_blue,     /*yaw*/   0, /*pos*/ -4646, -4615,  -800),\n    MACRO_OBJECT               (/*preset*/ macro_fish_spawner_few_cyan,     /*yaw*/   0, /*pos*/ -1804, -2560,  1292),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_vertical_flying, /*yaw*/   0, /*pos*/ -3760, -4560,   660),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_vertical_flying, /*yaw*/   0, /*pos*/ -4240, -4786,  1180),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,      /*yaw*/ 315, /*pos*/ -4840, -1137,  1860),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,             /*yaw*/   0, /*pos*/ -2180, -5119,  1720),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,             /*yaw*/   0, /*pos*/ -1460, -5119,  1300),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,             /*yaw*/   0, /*pos*/ -1320, -5119,   840),\n    MACRO_OBJECT               (/*preset*/ macro_fish_spawner_few_blue,     /*yaw*/   0, /*pos*/ -3580, -2280, -1120),\n    MACRO_OBJECT               (/*preset*/ macro_fish_spawner_few_blue,     /*yaw*/   0, /*pos*/ -2020, -3460,  -120),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_vertical_flying, /*yaw*/  90, /*pos*/     0, -4250,     0),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_vertical_flying, /*yaw*/  90, /*pos*/ -2000, -4250,     0),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/ddd/areas/1/movtext.inc.c",
    "content": "// 0x0700FC78\nstatic Movtex ddd_movtex_area1_water_data[] = {\n    MOV_TEX_INIT_LOAD(    2),\n    MOV_TEX_ROT_SPEED(   20), // area 1 general water\n    MOV_TEX_ROT_SCALE(   20),\n    MOV_TEX_4_BOX_TRIS(-7167, -4095),\n    MOV_TEX_4_BOX_TRIS(-7167,  4096),\n    MOV_TEX_4_BOX_TRIS( 1024,  4096),\n    MOV_TEX_4_BOX_TRIS( 1024, -4095),\n    MOV_TEX_ROT(     ROTATE_CLOCKWISE),\n    MOV_TEX_ALPHA(    0xA0),\n    MOV_TEX_DEFINE(  TEXTURE_WATER),\n    MOV_TEX_END(),\n    MOV_TEX_ROT_SPEED(    0), // entrance to area 2 water\n    MOV_TEX_ROT_SCALE(    5),\n    MOV_TEX_4_BOX_TRIS( 2048,  -768),\n    MOV_TEX_4_BOX_TRIS( 2048,   768),\n    MOV_TEX_4_BOX_TRIS( 6144,   768),\n    MOV_TEX_4_BOX_TRIS( 6144,  -768),\n    MOV_TEX_ROT(     ROTATE_CLOCKWISE),\n    MOV_TEX_ALPHA(    0xA0),\n    MOV_TEX_DEFINE(  TEXTURE_WATER),\n    MOV_TEX_END(),\n};\n\n// 0x0700FCB4\nconst struct MovtexQuadCollection ddd_movtex_area1_water[] = {\n    {0, ddd_movtex_area1_water_data},\n    {-1, NULL},\n};\n"
  },
  {
    "path": "levels/ddd/areas/2/1/model.inc.c",
    "content": "// 0x07005FC8 - 0x07005FE0\nstatic const Lights1 ddd_seg7_lights_07005FC8 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x07005FE0 - 0x07005FF8\nstatic const Lights1 ddd_seg7_lights_07005FE0 = gdSPDefLights1(\n    0x1b, 0x1b, 0x1b,\n    0x44, 0x44, 0x44, 0x28, 0x28, 0x28\n);\n\n// 0x07005FF8 - 0x07006010\nstatic const Lights1 ddd_seg7_lights_07005FF8 = gdSPDefLights1(\n    0x2f, 0x2f, 0x2f,\n    0x77, 0x77, 0x77, 0x28, 0x28, 0x28\n);\n\n// 0x07006010 - 0x07006028\nstatic const Lights1 ddd_seg7_lights_07006010 = gdSPDefLights1(\n    0x44, 0x44, 0x44,\n    0xaa, 0xaa, 0xaa, 0x28, 0x28, 0x28\n);\n\n// 0x07006028 - 0x07006040\nstatic const Lights1 ddd_seg7_lights_07006028 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07006040 - 0x07006080\nstatic const Vtx ddd_seg7_vertex_07006040[] = {\n    {{{  4941,  -1015,  -7167}, 0, {  2012,      0}, {0xd6, 0xac, 0x54, 0xff}}},\n    {{{  2893,  -1015,  -7167}, 0, {     0,      0}, {0x67, 0xcd, 0x33, 0xff}}},\n    {{{  2893,  -3063,  -7167}, 0, {     0,    990}, {0x2a, 0x54, 0x54, 0xff}}},\n    {{{  4941,  -3063,  -7167}, 0, {  2012,    990}, {0x99, 0x33, 0x33, 0xff}}},\n};\n\n// 0x07006080 - 0x070060C0\nstatic const Vtx ddd_seg7_vertex_07006080[] = {\n    {{{  2893,  -1015,  -6143}, 0, {  1672,      0}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{  2893,  -1015,  -7167}, 0, {     0,      0}, {0x67, 0xcd, 0x33, 0xff}}},\n    {{{  4941,  -1015,  -7167}, 0, {     0,   3372}, {0xd6, 0xac, 0x54, 0xff}}},\n    {{{  4941,  -1015,  -6143}, 0, {  1672,   3372}, {0xa7, 0xa7, 0x00, 0xff}}},\n};\n\n// 0x070060C0 - 0x07006100\nstatic const Vtx ddd_seg7_vertex_070060C0[] = {\n    {{{  2893,  -1015,  -5119}, 0, {  3376,      0}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{  4941,  -1015,  -6143}, 0, {  1672,   3372}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  4941,  -1015,  -5119}, 0, {  3376,   3372}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  2893,  -1015,  -6143}, 0, {  1672,      0}, {0x59, 0xa7, 0x00, 0xff}}},\n};\n\n// 0x07006100 - 0x07006140\nstatic const Vtx ddd_seg7_vertex_07006100[] = {\n    {{{  2893,  -1015,  -4095}, 0, {  5076,      0}, {0x51, 0xcc, 0x51, 0xff}}},\n    {{{  2893,  -1015,  -5119}, 0, {  3376,      0}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{  4941,  -1015,  -5119}, 0, {  3376,   3372}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  4941,  -1015,  -4095}, 0, {  5076,   3372}, {0xa8, 0xeb, 0x58, 0xff}}},\n};\n\n// 0x07006140 - 0x070061C0\nstatic const Vtx ddd_seg7_vertex_07006140[] = {\n    {{{  4941,  -1015,  -6143}, 0, {  2012,  -1054}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  4941,  -3063,  -7167}, 0, {   648,  -2076}, {0x99, 0x33, 0x33, 0xff}}},\n    {{{  4941,  -3063,  -6143}, 0, {   648,  -1054}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{  4941,  -1015,  -7167}, 0, {  2012,  -2076}, {0xd6, 0xac, 0x54, 0xff}}},\n    {{{  2893,  -3063,  -6143}, 0, {   648,  -1054}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{  2893,  -3063,  -7167}, 0, {   648,  -2076}, {0x2a, 0x54, 0x54, 0xff}}},\n    {{{  2893,  -1015,  -7167}, 0, {  2012,  -2076}, {0x67, 0xcd, 0x33, 0xff}}},\n    {{{  2893,  -1015,  -6143}, 0, {  2012,  -1054}, {0x59, 0xa7, 0x00, 0xff}}},\n};\n\n// 0x070061C0 - 0x07006240\nstatic const Vtx ddd_seg7_vertex_070061C0[] = {\n    {{{  4941,  -1015,  -5119}, 0, {  2012,      0}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  4941,  -3063,  -6143}, 0, {   648,  -1054}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{  4941,  -3063,  -5119}, 0, {   648,      0}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{  4941,  -1015,  -6143}, 0, {  2012,  -1054}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  2893,  -3063,  -5119}, 0, {   648,      0}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{  2893,  -3063,  -6143}, 0, {   648,  -1054}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{  2893,  -1015,  -6143}, 0, {  2012,  -1054}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{  2893,  -1015,  -5119}, 0, {  2012,      0}, {0x59, 0xa7, 0x00, 0xff}}},\n};\n\n// 0x07006240 - 0x070062C0\nstatic const Vtx ddd_seg7_vertex_07006240[] = {\n    {{{  4941,  -1015,  -4095}, 0, {  2012,    990}, {0xa8, 0xeb, 0x58, 0xff}}},\n    {{{  4941,  -3063,  -5119}, 0, {   648,      0}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{  4941,  -3063,  -4095}, 0, {   648,    990}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  4941,  -1015,  -5119}, 0, {  2012,      0}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  2893,  -3063,  -4095}, 0, {   648,    990}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  2893,  -3063,  -5119}, 0, {   648,      0}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{  2893,  -1015,  -5119}, 0, {  2012,      0}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{  2893,  -1015,  -4095}, 0, {  2012,    990}, {0x51, 0xcc, 0x51, 0xff}}},\n};\n\n// 0x070062C0 - 0x070063B0\nstatic const Vtx ddd_seg7_vertex_070062C0[] = {\n    {{{  3405,  -1015,   5635}, 0, {  2012,  -3102}, {0x3c, 0x00, 0x91, 0xff}}},\n    {{{  3405,  -4087,   5635}, 0, {     0,  -3102}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{   845,  -4087,   3075}, 0, {     0,    990}, {0x78, 0x00, 0xda, 0xff}}},\n    {{{   845,  -4087,  -2047}, 0, {     0,      0}, {0x7c, 0x00, 0x17, 0xff}}},\n    {{{   845,  -2756,   -511}, 0, {   852,   1498}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   845,  -2756,    512}, 0, {   852,   2520}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   845,  -1015,  -2047}, 0, {  2012,      0}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{   845,  -4087,   3075}, 0, {     0,   5078}, {0x78, 0x00, 0xda, 0xff}}},\n    {{{   845,  -1732,    512}, 0, {  1536,   2520}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   845,  -1015,   3075}, 0, {  2012,   5078}, {0x70, 0x00, 0xc6, 0xff}}},\n    {{{   845,  -1732,   -511}, 0, {  1536,   1498}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   845,  -1015,  -2047}, 0, {  2012,  -2086}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{   845,  -4087,  -2047}, 0, {     0,  -2086}, {0x7c, 0x00, 0x17, 0xff}}},\n    {{{  2893,  -4087,  -4095}, 0, {     0,    990}, {0x40, 0x00, 0x6d, 0xff}}},\n    {{{  2893,  -1015,  -4095}, 0, {  2012,    990}, {0x51, 0xcc, 0x51, 0xff}}},\n};\n\n// 0x070063B0 - 0x070064A0\nstatic const Vtx ddd_seg7_vertex_070063B0[] = {\n    {{{  4429,  -1015,   5635}, 0, {  2012,      0}, {0xc4, 0x00, 0x91, 0xff}}},\n    {{{  3405,  -4087,   5635}, 0, {     0,    990}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{  3405,  -1015,   5635}, 0, {  2012,    990}, {0x3c, 0x00, 0x91, 0xff}}},\n    {{{  3405,  -1015,   5635}, 0, {  2012,  -3102}, {0x3c, 0x00, 0x91, 0xff}}},\n    {{{   845,  -4087,   3075}, 0, {     0,    990}, {0x78, 0x00, 0xda, 0xff}}},\n    {{{   845,  -1015,   3075}, 0, {  2012,    990}, {0x70, 0x00, 0xc6, 0xff}}},\n    {{{  6989,  -4087,  -2047}, 0, {     0,      0}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{  6989,  -4087,   3075}, 0, {     0,   5078}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{  6989,  -1015,   3075}, 0, {  2012,   5078}, {0x8d, 0xf0, 0xce, 0xff}}},\n    {{{  6989,  -1015,  -2047}, 0, {  2012,      0}, {0x90, 0x00, 0x3a, 0xff}}},\n    {{{  4941,  -1015,  -4095}, 0, {  2012,  -2086}, {0xa8, 0xeb, 0x58, 0xff}}},\n    {{{  4941,  -4087,  -4095}, 0, {     0,  -2086}, {0xe0, 0x00, 0x7a, 0xff}}},\n    {{{  6989,  -4087,  -2047}, 0, {     0,    990}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{  6989,  -1015,  -2047}, 0, {  2012,    990}, {0x90, 0x00, 0x3a, 0xff}}},\n    {{{  4429,  -4087,   5635}, 0, {     0,      0}, {0xc0, 0x00, 0x93, 0xff}}},\n};\n\n// 0x070064A0 - 0x07006520\nstatic const Vtx ddd_seg7_vertex_070064A0[] = {\n    {{{  6989,  -1015,   3075}, 0, {  2012,  -3102}, {0x8d, 0xf0, 0xce, 0xff}}},\n    {{{  4429,  -4087,   5635}, 0, {     0,    990}, {0xc0, 0x00, 0x93, 0xff}}},\n    {{{  4429,  -1015,   5635}, 0, {  2012,    990}, {0xc4, 0x00, 0x91, 0xff}}},\n    {{{  6989,  -4087,   3075}, 0, {     0,  -3102}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{  4941,  -4087,  -4095}, 0, {     0,    990}, {0xe0, 0x00, 0x7a, 0xff}}},\n    {{{  4941,  -3063,  -4095}, 0, {   648,    990}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  2893,  -3063,  -4095}, 0, {   648,  -1054}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  2893,  -4087,  -4095}, 0, {     0,  -1054}, {0x40, 0x00, 0x6d, 0xff}}},\n};\n\n// 0x07006520 - 0x07006560\nstatic const Vtx ddd_seg7_vertex_07006520[] = {\n    {{{  4941,  -3063,  -6143}, 0, {  -708,    308}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{  4941,  -3063,  -7167}, 0, { -1392,    650}, {0x99, 0x33, 0x33, 0xff}}},\n    {{{  2893,  -3063,  -7167}, 0, {     0,   2010}, {0x2a, 0x54, 0x54, 0xff}}},\n    {{{  2893,  -3063,  -6143}, 0, {   648,   1670}, {0x59, 0x59, 0x00, 0xff}}},\n};\n\n// 0x07006560 - 0x070065A0\nstatic const Vtx ddd_seg7_vertex_07006560[] = {\n    {{{  4941,  -3063,  -5119}, 0, {     0,      0}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{  4941,  -3063,  -6143}, 0, {  -708,    308}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{  2893,  -3063,  -6143}, 0, {   648,   1670}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{  2893,  -3063,  -5119}, 0, {  1332,   1328}, {0x59, 0x59, 0x00, 0xff}}},\n};\n\n// 0x070065A0 - 0x070065E0\nstatic const Vtx ddd_seg7_vertex_070065A0[] = {\n    {{{  4941,  -3063,  -4095}, 0, {   648,   -372}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  2893,  -3063,  -5119}, 0, {  1332,   1328}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{  2893,  -3063,  -4095}, 0, {  2012,    990}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  4941,  -3063,  -5119}, 0, {     0,      0}, {0xa7, 0x59, 0x00, 0xff}}},\n};\n\n// 0x070065E0 - 0x070066E0\nstatic const Vtx ddd_seg7_vertex_070065E0[] = {\n    {{{  2845,  -3626,   1072}, 0, {  1300,  -3124}, {0xe5, 0x79, 0x18, 0xff}}},\n    {{{  2995,  -3268,   -306}, 0, {  2376,  -3990}, {0xf7, 0x7e, 0x00, 0xff}}},\n    {{{  2483,  -3626,   -101}, 0, {  1872,  -4208}, {0xc0, 0x6d, 0xfb, 0xff}}},\n    {{{  3200,  -3268,   -921}, 0, {  2956,  -4280}, {0xfe, 0x7d, 0xee, 0xff}}},\n    {{{  3610,  -3268,   -921}, 0, {  3244,  -3990}, {0xff, 0x7e, 0x03, 0xff}}},\n    {{{  3931,  -3626,  -1462}, 0, {  3852,  -4146}, {0x08, 0x75, 0xd1, 0xff}}},\n    {{{  3814,  -3268,   -716}, 0, {  3244,  -3702}, {0x03, 0x7e, 0xf9, 0xff}}},\n    {{{  5026,  -3626,  -1156}, 0, {  4408,  -3156}, {0x1f, 0x7a, 0xf0, 0xff}}},\n    {{{  4655,  -3626,    710}, 0, {  2832,  -2102}, {0x1e, 0x7a, 0x0e, 0xff}}},\n    {{{  3814,  -3268,   -306}, 0, {  2956,  -3412}, {0xf1, 0x7d, 0xf9, 0xff}}},\n    {{{  3207,  -3626,  -1462}, 0, {  3344,  -4656}, {0xd9, 0x6e, 0xcf, 0xff}}},\n    {{{  2995,  -3268,   -716}, 0, {  2668,  -4280}, {0xd8, 0x76, 0xea, 0xff}}},\n    {{{  2734,  -3626,   -776}, 0, {  2524,  -4506}, {0xbb, 0x64, 0xdc, 0xff}}},\n    {{{  1664,  -4087,  -1228}, 0, {  2088,  -5580}, {0xd6, 0x75, 0xec, 0xff}}},\n    {{{  2893,  -4087,  -3071}, 0, {  4256,  -6014}, {0xf1, 0x7a, 0xe2, 0xff}}},\n    {{{  3200,  -3268,   -101}, 0, {  2376,  -3702}, {0x06, 0x7d, 0xef, 0xff}}},\n};\n\n// 0x070066E0 - 0x070067E0\nstatic const Vtx ddd_seg7_vertex_070066E0[] = {\n    {{{  3610,  -3268,   -101}, 0, {  2668,  -3412}, {0xfe, 0x7e, 0xfe, 0xff}}},\n    {{{  3200,  -3268,   -101}, 0, {  2376,  -3702}, {0x06, 0x7d, 0xef, 0xff}}},\n    {{{  2845,  -3626,   1072}, 0, {  1300,  -3124}, {0xe5, 0x79, 0x18, 0xff}}},\n    {{{  3931,  -3626,   1434}, 0, {  1808,  -2102}, {0x06, 0x7c, 0x18, 0xff}}},\n    {{{  4655,  -3626,    710}, 0, {  2832,  -2102}, {0x1e, 0x7a, 0x0e, 0xff}}},\n    {{{  3814,  -3268,   -306}, 0, {  2956,  -3412}, {0xf1, 0x7d, 0xf9, 0xff}}},\n    {{{  1357,  -4087,      0}, 0, {  1004,  -4930}, {0xd2, 0x76, 0x03, 0xff}}},\n    {{{  2483,  -3626,   -101}, 0, {  1872,  -4208}, {0xc0, 0x6d, 0xfb, 0xff}}},\n    {{{  1664,  -4087,  -1228}, 0, {  2088,  -5580}, {0xd6, 0x75, 0xec, 0xff}}},\n    {{{  2734,  -3626,   -776}, 0, {  2524,  -4506}, {0xbb, 0x64, 0xdc, 0xff}}},\n    {{{  3207,  -3626,  -1462}, 0, {  3344,  -4656}, {0xd9, 0x6e, 0xcf, 0xff}}},\n    {{{  2893,  -4087,  -3071}, 0, {  4256,  -6014}, {0xf1, 0x7a, 0xe2, 0xff}}},\n    {{{  3931,  -3626,  -1462}, 0, {  3852,  -4146}, {0x08, 0x75, 0xd1, 0xff}}},\n    {{{  4941,  -4087,  -3583}, 0, {  6064,  -4930}, {0x0e, 0x7b, 0xe6, 0xff}}},\n    {{{  1869,  -4087,   2560}, 0, {  -436,  -2762}, {0xe2, 0x7a, 0x12, 0xff}}},\n    {{{  4429,  -4087,   4096}, 0, {   280,    128}, {0x05, 0x7c, 0x15, 0xff}}},\n};\n\n// 0x070067E0 - 0x070068E0\nstatic const Vtx ddd_seg7_vertex_070067E0[] = {\n    {{{  6477,  -4087,   1024}, 0, {  3896,   -594}, {0x23, 0x79, 0x05, 0xff}}},\n    {{{  4655,  -3626,    710}, 0, {  2832,  -2102}, {0x1e, 0x7a, 0x0e, 0xff}}},\n    {{{  4429,  -4087,   4096}, 0, {   280,    128}, {0x05, 0x7c, 0x15, 0xff}}},\n    {{{  3931,  -3626,   1434}, 0, {  1808,  -2102}, {0x06, 0x7c, 0x18, 0xff}}},\n    {{{  5026,  -3626,  -1156}, 0, {  4408,  -3156}, {0x1f, 0x7a, 0xf0, 0xff}}},\n    {{{  6067,  -4087,  -1535}, 0, {  5412,  -2690}, {0x2e, 0x75, 0xf1, 0xff}}},\n    {{{  4941,  -4087,  -3583}, 0, {  6064,  -4930}, {0x0e, 0x7b, 0xe6, 0xff}}},\n    {{{  3931,  -3626,  -1462}, 0, {  3852,  -4146}, {0x08, 0x75, 0xd1, 0xff}}},\n    {{{  2995,  -3268,   -306}, 0, {  2376,  -3990}, {0xf7, 0x7e, 0x00, 0xff}}},\n    {{{  3200,  -3268,   -101}, 0, {  2376,  -3702}, {0x06, 0x7d, 0xef, 0xff}}},\n    {{{  3405,  -3575,   -511}, 0, {  2596,  -3774}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  3405,  -3575,   -511}, 0, {  2740,  -4062}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  2995,  -3268,   -716}, 0, {  2668,  -4280}, {0xd8, 0x76, 0xea, 0xff}}},\n    {{{  3610,  -3268,   -101}, 0, {  2668,  -3412}, {0xfe, 0x7e, 0xfe, 0xff}}},\n    {{{  3405,  -3575,   -511}, 0, {  2740,  -3628}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  3814,  -3268,   -306}, 0, {  2956,  -3412}, {0xf1, 0x7d, 0xf9, 0xff}}},\n};\n\n// 0x070068E0 - 0x070069B0\nstatic const Vtx ddd_seg7_vertex_070068E0[] = {\n    {{{  3814,  -3268,   -716}, 0, {  3244,  -3702}, {0x03, 0x7e, 0xf9, 0xff}}},\n    {{{  3405,  -3575,   -511}, 0, {  2884,  -3628}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  3814,  -3268,   -306}, 0, {  2956,  -3412}, {0xf1, 0x7d, 0xf9, 0xff}}},\n    {{{  3405,  -3575,   -511}, 0, {  3028,  -3774}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  3610,  -3268,   -921}, 0, {  3244,  -3990}, {0xff, 0x7e, 0x03, 0xff}}},\n    {{{  3200,  -3268,   -921}, 0, {  2956,  -4280}, {0xfe, 0x7d, 0xee, 0xff}}},\n    {{{  3405,  -3575,   -511}, 0, {  3028,  -3918}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  2995,  -3268,   -716}, 0, {  2668,  -4280}, {0xd8, 0x76, 0xea, 0xff}}},\n    {{{  3405,  -3575,   -511}, 0, {  2740,  -4062}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  6989,  -4087,   5652}, 0, {   988,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   845,  -4087,  -4095}, 0, {  3532,  -8182}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   845,  -4087,   5652}, 0, { -3340,  -1302}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6989,  -4087,  -4095}, 0, {  7868,  -3846}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070069B0 - 0x07006AA0\nstatic const Vtx ddd_seg7_vertex_070069B0[] = {\n    {{{  2319,   -401,   4549}, 0, {   320,   1500}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2319,    110,   4549}, 0, {   612,   1498}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  3405,    110,   5635}, 0, {   612,      0}, {0x40, 0x00, 0x93, 0xff}}},\n    {{{  3405,  -1015,   5635}, 0, {     0,      0}, {0x3c, 0x00, 0x91, 0xff}}},\n    {{{  1233,   -401,   3463}, 0, {   320,   3032}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   845,  -1015,   3075}, 0, {     0,   3580}, {0x70, 0x00, 0xc6, 0xff}}},\n    {{{   845,    110,   3075}, 0, {   612,   3580}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1233,    110,   3463}, 0, {   612,   3032}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  4429,  -1015,   5635}, 0, {     0,    990}, {0xc4, 0x00, 0x91, 0xff}}},\n    {{{  4429,    110,   5635}, 0, {   612,    990}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{  5370,    110,   4694}, 0, {   612,   -338}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  5370,   -401,   4694}, 0, {   320,   -338}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  6579,   -606,   3485}, 0, {   200,  -2046}, {0x94, 0xe3, 0xc6, 0xff}}},\n    {{{  6989,  -1015,   3075}, 0, {     0,  -2624}, {0x8d, 0xf0, 0xce, 0xff}}},\n    {{{  6456,   -401,   3608}, 0, {   320,  -1872}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07006AA0 - 0x07006BA0\nstatic const Vtx ddd_seg7_vertex_07006AA0[] = {\n    {{{  6456,   -401,   3608}, 0, {   320,  -1872}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  6456,    110,   3608}, 0, {   612,  -1872}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  6579,    110,   3485}, 0, {   612,  -2046}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{  6579,   -606,   3485}, 0, {   200,  -2046}, {0x94, 0xe3, 0xc6, 0xff}}},\n    {{{  6989,  -1015,  -1020}, 0, {     0,    990}, {0xc1, 0xc1, 0xa7, 0xff}}},\n    {{{  6989,  -1015,   3075}, 0, {     0,   5078}, {0x8d, 0xf0, 0xce, 0xff}}},\n    {{{  6579,   -606,   3485}, 0, {   200,   5488}, {0x94, 0xe3, 0xc6, 0xff}}},\n    {{{  6579,   -606,  -1020}, 0, {   200,    990}, {0x8d, 0xe2, 0xd6, 0xff}}},\n    {{{  6579,    110,   3485}, 0, {   612,   5488}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{  6579,    110,  -1020}, 0, {   612,    990}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  6989,  -1015,  -1020}, 0, {     0,      0}, {0xc1, 0xc1, 0xa7, 0xff}}},\n    {{{  6579,   -606,  -1020}, 0, {   200,    376}, {0x8d, 0xe2, 0xd6, 0xff}}},\n    {{{  6579,    110,  -1020}, 0, {   612,    376}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  2893,   2568,   6144}, 0, {  2012,  -2068}, {0x40, 0x00, 0x93, 0xff}}},\n    {{{  2893,      8,   6144}, 0, {   552,  -2068}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{   845,      8,   4096}, 0, {   552,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07006BA0 - 0x07006C80\nstatic const Vtx ddd_seg7_vertex_07006BA0[] = {\n    {{{  6989,  -1015,  -1020}, 0, {     0,      0}, {0xc1, 0xc1, 0xa7, 0xff}}},\n    {{{  6579,    110,  -1020}, 0, {   612,    376}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  6989,    110,  -1020}, 0, {   612,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   845,   2568,  -2047}, 0, {  2012,  -2068}, {0x6d, 0x00, 0x40, 0xff}}},\n    {{{  2893,  -1015,  -4095}, 0, {     0,    990}, {0x51, 0xcc, 0x51, 0xff}}},\n    {{{  2893,   2568,  -4095}, 0, {  2012,    990}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{   845,  -1015,  -2047}, 0, {     0,  -2068}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{   845,   2568,   4096}, 0, {  2012,   6098}, {0x7a, 0x00, 0xe0, 0xff}}},\n    {{{   845,  -1015,  -2047}, 0, {     0,      0}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{   845,   2568,  -2047}, 0, {  2012,      0}, {0x6d, 0x00, 0x40, 0xff}}},\n    {{{   845,  -1015,   4096}, 0, {     0,   6098}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2893,   2568,   6144}, 0, {  2012,  -2068}, {0x40, 0x00, 0x93, 0xff}}},\n    {{{   845,      8,   4096}, 0, {   552,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   845,   2568,   4096}, 0, {  2012,    990}, {0x7a, 0x00, 0xe0, 0xff}}},\n};\n\n// 0x07006C80 - 0x07006D70\nstatic const Vtx ddd_seg7_vertex_07006C80[] = {\n    {{{  6989,   2568,  -2047}, 0, {  2012,      0}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{  6989,  -1015,  -2047}, 0, {     0,      0}, {0x90, 0x00, 0x3a, 0xff}}},\n    {{{  6989,  -1015,   4096}, 0, {     0,   6098}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2893,      8,   6144}, 0, {   552,    990}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{  2893,   2568,   6144}, 0, {  2012,    990}, {0x40, 0x00, 0x93, 0xff}}},\n    {{{  4941,   2568,   6144}, 0, {  2012,  -1054}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{  4941,      8,   6144}, 0, {   552,  -1054}, {0xc0, 0x00, 0x93, 0xff}}},\n    {{{  4941,  -1015,  -4095}, 0, {     0,    990}, {0xa8, 0xeb, 0x58, 0xff}}},\n    {{{  4941,   2568,  -4095}, 0, {  2012,    990}, {0xc0, 0x00, 0x6d, 0xff}}},\n    {{{  2893,   2568,  -4095}, 0, {  2012,  -1054}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  2893,  -1015,  -4095}, 0, {     0,  -1054}, {0x51, 0xcc, 0x51, 0xff}}},\n    {{{  4941,   2568,  -4095}, 0, {  2012,  -2068}, {0xc0, 0x00, 0x6d, 0xff}}},\n    {{{  4941,  -1015,  -4095}, 0, {     0,  -2068}, {0xa8, 0xeb, 0x58, 0xff}}},\n    {{{  6989,  -1015,  -2047}, 0, {     0,    990}, {0x90, 0x00, 0x3a, 0xff}}},\n    {{{  6989,   2568,  -2047}, 0, {  2012,    990}, {0x86, 0x00, 0x20, 0xff}}},\n};\n\n// 0x07006D70 - 0x07006E20\nstatic const Vtx ddd_seg7_vertex_07006D70[] = {\n    {{{  4429,    110,   5635}, 0, {   700,      0}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{  3405,  -1015,   5635}, 0, {     0,    990}, {0x3c, 0x00, 0x91, 0xff}}},\n    {{{  3405,    110,   5635}, 0, {   696,    990}, {0x40, 0x00, 0x93, 0xff}}},\n    {{{  6989,   2568,  -2047}, 0, {  2012,      0}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{  6989,  -1015,   4096}, 0, {     0,   6098}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6989,   2568,   4096}, 0, {  2012,   6098}, {0x93, 0x00, 0xc0, 0xff}}},\n    {{{  6989,   2568,   4096}, 0, {  2012,  -2068}, {0x93, 0x00, 0xc0, 0xff}}},\n    {{{  4941,      8,   6144}, 0, {   552,    990}, {0xc0, 0x00, 0x93, 0xff}}},\n    {{{  4941,   2568,   6144}, 0, {  2012,    990}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{  6989,      8,   4096}, 0, {   552,  -2068}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  4429,  -1015,   5635}, 0, {     0,      0}, {0xc4, 0x00, 0x91, 0xff}}},\n};\n\n// 0x07006E20 - 0x07006EE0\nstatic const Gfx ddd_seg7_dl_07006E20[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ddd_seg7_lights_07005FC8.l, 1),\n    gsSPLight(&ddd_seg7_lights_07005FC8.a, 2),\n    gsSPVertex(ddd_seg7_vertex_07006040, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPLight(&ddd_seg7_lights_07005FE0.l, 1),\n    gsSPLight(&ddd_seg7_lights_07005FE0.a, 2),\n    gsSPVertex(ddd_seg7_vertex_07006080, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPLight(&ddd_seg7_lights_07005FF8.l, 1),\n    gsSPLight(&ddd_seg7_lights_07005FF8.a, 2),\n    gsSPVertex(ddd_seg7_vertex_070060C0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPLight(&ddd_seg7_lights_07006010.l, 1),\n    gsSPLight(&ddd_seg7_lights_07006010.a, 2),\n    gsSPVertex(ddd_seg7_vertex_07006100, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07006EE0 - 0x07007080\nstatic const Gfx ddd_seg7_dl_07006EE0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09006800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ddd_seg7_lights_07005FE0.l, 1),\n    gsSPLight(&ddd_seg7_lights_07005FE0.a, 2),\n    gsSPVertex(ddd_seg7_vertex_07006140, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPLight(&ddd_seg7_lights_07005FF8.l, 1),\n    gsSPLight(&ddd_seg7_lights_07005FF8.a, 2),\n    gsSPVertex(ddd_seg7_vertex_070061C0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPLight(&ddd_seg7_lights_07006010.l, 1),\n    gsSPLight(&ddd_seg7_lights_07006010.a, 2),\n    gsSPVertex(ddd_seg7_vertex_07006240, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPLight(&ddd_seg7_lights_07006028.l, 1),\n    gsSPLight(&ddd_seg7_lights_07006028.a, 2),\n    gsSPVertex(ddd_seg7_vertex_070062C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  4,  3, 0x0,  3,  5,  7, 0x0),\n    gsSP2Triangles( 7,  5,  8, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 6, 10,  4, 0x0,  9,  8,  6, 0x0),\n    gsSP2Triangles( 8, 10,  6, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ddd_seg7_vertex_070063B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ddd_seg7_vertex_070064A0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007080 - 0x07007298\nstatic const Gfx ddd_seg7_dl_07007080[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ddd_seg7_lights_07005FE0.l, 1),\n    gsSPLight(&ddd_seg7_lights_07005FE0.a, 2),\n    gsSPVertex(ddd_seg7_vertex_07006520, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPLight(&ddd_seg7_lights_07005FF8.l, 1),\n    gsSPLight(&ddd_seg7_lights_07005FF8.a, 2),\n    gsSPVertex(ddd_seg7_vertex_07006560, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPLight(&ddd_seg7_lights_07006010.l, 1),\n    gsSPLight(&ddd_seg7_lights_07006010.a, 2),\n    gsSPVertex(ddd_seg7_vertex_070065A0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPLight(&ddd_seg7_lights_07006028.l, 1),\n    gsSPLight(&ddd_seg7_lights_07006028.a, 2),\n    gsSPVertex(ddd_seg7_vertex_070065E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  6,  8, 0x0),\n    gsSP2Triangles( 6,  9,  8, 0x0,  6,  7,  5, 0x0),\n    gsSP2Triangles(10,  3,  5, 0x0, 11, 10, 12, 0x0),\n    gsSP2Triangles(11,  3, 10, 0x0,  2,  1, 11, 0x0),\n    gsSP2Triangles( 2, 11, 12, 0x0, 13, 10, 14, 0x0),\n    gsSP1Triangle( 0, 15,  1, 0x0),\n    gsSPVertex(ddd_seg7_vertex_070066E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  0,  3, 0x0,  4,  5,  0, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 10, 12, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 14,  2,  6, 0x0),\n    gsSP2Triangles( 2,  7,  6, 0x0, 15,  2, 14, 0x0),\n    gsSP1Triangle(15,  3,  2, 0x0),\n    gsSPVertex(ddd_seg7_vertex_070067E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  1,  0, 0x0,  4,  0,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11, 12, 0x0),\n    gsSP2Triangles(10,  9, 13, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(ddd_seg7_vertex_070068E0, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 5,  6,  4, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 12, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007298 - 0x07007408\nstatic const Gfx ddd_seg7_dl_07007298[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09009000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ddd_seg7_vertex_070069B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  0,  3, 0x0,  5,  4,  3, 0x0),\n    gsSP2Triangles( 6,  7,  4, 0x0,  5,  6,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 8, 11, 12, 0x0,  8, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ddd_seg7_vertex_07006AA0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7,  6,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ddd_seg7_vertex_07006BA0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ddd_seg7_vertex_07006C80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ddd_seg7_vertex_07006D70, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP1Triangle( 0, 10,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007408 - 0x070074C8\nconst Gfx ddd_seg7_dl_07007408[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ddd_seg7_dl_07006E20),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ddd_seg7_dl_07006EE0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ddd_seg7_dl_07007080),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ddd_seg7_dl_07007298),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ddd/areas/2/2/model.inc.c",
    "content": "// 0x070074C8 - 0x070074E0\nstatic const Lights1 ddd_seg7_lights_070074C8 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x070074E0 - 0x070075E0\nstatic const Vtx ddd_seg7_vertex_070074E0[] = {\n    {{{ -2149,    205,    512}, 0, {     0,    582}, {0x9d, 0xe6, 0xb7, 0xff}}},\n    {{{ -2149,  -1732,   -511}, 0, {  2012,   4448}, {0xc3, 0xc3, 0x5c, 0xff}}},\n    {{{ -2149,  -1732,    512}, 0, {     0,   4448}, {0xda, 0xda, 0x8e, 0xff}}},\n    {{{ -3173,  -2449,   -511}, 0, {  2012,   1790}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{ -3173,   -511,    512}, 0, {     0,  -2076}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{ -3173,  -2449,    512}, 0, {     0,   1790}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{ -3173,   -511,   -511}, 0, {  2012,  -2076}, {0x49, 0x49, 0x49, 0xff}}},\n    {{{   845,  -2756,   -511}, 0, {     0,  -9230}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{ -2866,  -2756,    512}, 0, {  2012,  -1820}, {0x30, 0x75, 0x00, 0xff}}},\n    {{{   845,  -2756,    512}, 0, {  2012,  -9230}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{ -2866,  -2756,   -511}, 0, {     0,  -1820}, {0x30, 0x75, 0x00, 0xff}}},\n    {{{ -3173,   1229,    512}, 0, {     0,  -1462}, {0xcc, 0xa7, 0xb7, 0xff}}},\n    {{{ -2149,    205,   -511}, 0, {  2012,    582}, {0x99, 0xc4, 0x2a, 0xff}}},\n    {{{ -3173,   1229,   -511}, 0, {  2624,  -4528}, {0xee, 0xba, 0x68, 0xff}}},\n    {{{ -3173,  -2756,   -511}, 0, {  2624,   3426}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2149,  -1732,   -511}, 0, {  4668,   1382}, {0xc3, 0xc3, 0x5c, 0xff}}},\n};\n\n// 0x070075E0 - 0x070076C0\nstatic const Vtx ddd_seg7_vertex_070075E0[] = {\n    {{{ -3173,   1229,    512}, 0, {     0,  -1462}, {0xcc, 0xa7, 0xb7, 0xff}}},\n    {{{ -3173,   1229,   -511}, 0, {  2012,  -1462}, {0xee, 0xba, 0x68, 0xff}}},\n    {{{ -2149,    205,   -511}, 0, {  2012,    582}, {0x99, 0xc4, 0x2a, 0xff}}},\n    {{{   845,  -1732,    512}, 0, {  2012,  -9230}, {0x00, 0x8f, 0xc8, 0xff}}},\n    {{{ -2149,  -1732,   -511}, 0, {     0,  -3252}, {0xc3, 0xc3, 0x5c, 0xff}}},\n    {{{   845,  -1732,   -511}, 0, {     0,  -9230}, {0x00, 0xc8, 0x71, 0xff}}},\n    {{{ -2149,  -1732,    512}, 0, {  2012,  -3252}, {0xda, 0xda, 0x8e, 0xff}}},\n    {{{ -2149,    205,    512}, 0, {  4668,  -2484}, {0x9d, 0xe6, 0xb7, 0xff}}},\n    {{{ -3173,  -2756,    512}, 0, {  2624,   3426}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3173,   1229,    512}, 0, {  2624,  -4528}, {0xcc, 0xa7, 0xb7, 0xff}}},\n    {{{ -2149,  -1732,    512}, 0, {  4668,   1382}, {0xda, 0xda, 0x8e, 0xff}}},\n    {{{ -3173,   1229,   -511}, 0, {  2624,  -4528}, {0xee, 0xba, 0x68, 0xff}}},\n    {{{ -2149,  -1732,   -511}, 0, {  4668,   1382}, {0xc3, 0xc3, 0x5c, 0xff}}},\n    {{{ -2149,    205,   -511}, 0, {  4668,  -2484}, {0x99, 0xc4, 0x2a, 0xff}}},\n};\n\n// 0x070076C0 - 0x070077B0\nstatic const Vtx ddd_seg7_vertex_070076C0[] = {\n    {{{ -6041,  -4607,    512}, 0, { -3096,   7120}, {0x33, 0x33, 0x99, 0xff}}},\n    {{{ -5017,   1229,    512}, 0, { -1052,  -4528}, {0x12, 0xba, 0x98, 0xff}}},\n    {{{ -5017,  -4607,    512}, 0, { -1052,   7120}, {0xcd, 0x67, 0xcd, 0xff}}},\n    {{{   845,  -2756,    512}, 0, { 10648,   3426}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{ -2149,  -1732,    512}, 0, {  4668,   1382}, {0xda, 0xda, 0x8e, 0xff}}},\n    {{{   845,  -1732,    512}, 0, { 10648,   1382}, {0x00, 0x8f, 0xc8, 0xff}}},\n    {{{ -3173,  -2756,    512}, 0, {  2624,   3426}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   845,  -1732,   -511}, 0, { 10648,   1382}, {0x00, 0xc8, 0x71, 0xff}}},\n    {{{ -3173,  -2756,   -511}, 0, {  2624,   3426}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   845,  -2756,   -511}, 0, { 10648,   3426}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{ -2149,  -1732,   -511}, 0, {  4668,   1382}, {0xc3, 0xc3, 0x5c, 0xff}}},\n    {{{ -3173,   1229,    512}, 0, {  2624,  -4528}, {0xcc, 0xa7, 0xb7, 0xff}}},\n    {{{ -3173,   -511,    512}, 0, {  2624,  -1054}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{ -5017,   -511,    512}, 0, { -1052,  -1054}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{ -6041,    205,    512}, 0, { -3096,  -2484}, {0x71, 0xd2, 0xdf, 0xff}}},\n};\n\n// 0x070077B0 - 0x070078B0\nstatic const Vtx ddd_seg7_vertex_070077B0[] = {\n    {{{ -5017,   -511,   -511}, 0, { -1052,  -1054}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{ -3173,   1229,   -511}, 0, {  2624,  -4528}, {0xee, 0xba, 0x68, 0xff}}},\n    {{{ -5017,   1229,   -511}, 0, { -1052,  -4528}, {0x34, 0xa7, 0x49, 0xff}}},\n    {{{ -3173,   -511,   -511}, 0, {  2624,  -1054}, {0x49, 0x49, 0x49, 0xff}}},\n    {{{ -5017,  -4607,   -511}, 0, { -1052,   7120}, {0xac, 0x2a, 0x54, 0xff}}},\n    {{{ -6041,    205,   -511}, 0, { -3096,  -2484}, {0x4f, 0xe0, 0x5d, 0xff}}},\n    {{{ -6041,  -4607,   -511}, 0, { -3096,   7120}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{ -6041,  -4607,   -204}, 0, {  9576,   -440}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6041,  -4607,   -511}, 0, {  9576,  -1054}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{ -6041,  -4300,   -511}, 0, {  8960,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6041,  -3583,   -511}, 0, {  7532,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6041,    205,    512}, 0, {     0,    990}, {0x71, 0xd2, 0xdf, 0xff}}},\n    {{{ -6041,  -3583,    512}, 0, {  7532,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6041,  -4300,    512}, 0, {  8960,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6041,  -4607,    512}, 0, {  9576,    990}, {0x33, 0x33, 0x99, 0xff}}},\n    {{{ -6041,  -4607,    205}, 0, {  9576,    376}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070078B0 - 0x070079A0\nstatic const Vtx ddd_seg7_vertex_070078B0[] = {\n    {{{ -6041,  -3890,   -511}, 0, {  8144,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6041,  -3583,   -511}, 0, {  7532,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6041,  -3583,   -204}, 0, {  7532,   -440}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6041,  -3583,    205}, 0, {  7532,    376}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6041,  -3583,    512}, 0, {  7532,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6041,  -3890,    512}, 0, {  8144,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6041,    205,   -511}, 0, {     0,  -1054}, {0x4f, 0xe0, 0x5d, 0xff}}},\n    {{{ -6041,    205,    512}, 0, {     0,    990}, {0x71, 0xd2, 0xdf, 0xff}}},\n    {{{ -3173,   -511,    512}, 0, {  2012,  -1208}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{ -3173,   -511,   -511}, 0, {     0,  -1208}, {0x49, 0x49, 0x49, 0xff}}},\n    {{{ -5017,   -511,   -511}, 0, {     0,   2470}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{ -5017,  -4607,    512}, 0, {  2012,   2470}, {0xcd, 0x67, 0xcd, 0xff}}},\n    {{{ -6041,  -4607,   -511}, 0, {     0,   4514}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{ -6041,  -4607,    512}, 0, {  2012,   4514}, {0x33, 0x33, 0x99, 0xff}}},\n    {{{ -5017,  -4607,   -511}, 0, {     0,   2470}, {0xac, 0x2a, 0x54, 0xff}}},\n};\n\n// 0x070079A0 - 0x07007A80\nstatic const Vtx ddd_seg7_vertex_070079A0[] = {\n    {{{ -6041,    205,    512}, 0, {     0,    582}, {0x71, 0xd2, 0xdf, 0xff}}},\n    {{{ -5017,   1229,   -511}, 0, {  2012,  -1462}, {0x34, 0xa7, 0x49, 0xff}}},\n    {{{ -5017,   1229,    512}, 0, {     0,  -1462}, {0x12, 0xba, 0x98, 0xff}}},\n    {{{ -6041,    205,   -511}, 0, {  2012,    582}, {0x4f, 0xe0, 0x5d, 0xff}}},\n    {{{ -5017,   1229,    512}, 0, {  2012,   2470}, {0x12, 0xba, 0x98, 0xff}}},\n    {{{ -3173,   1229,   -511}, 0, {     0,  -1208}, {0xee, 0xba, 0x68, 0xff}}},\n    {{{ -3173,   1229,    512}, 0, {  2012,  -1208}, {0xcc, 0xa7, 0xb7, 0xff}}},\n    {{{ -5017,   1229,   -511}, 0, {     0,   2470}, {0x34, 0xa7, 0x49, 0xff}}},\n    {{{ -3173,  -2449,   -511}, 0, {  2012,   -252}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{ -3173,  -2449,    512}, 0, {     0,   -252}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{ -2866,  -2756,    512}, 0, {     0,    362}, {0x30, 0x75, 0x00, 0xff}}},\n    {{{ -3173,   -511,    512}, 0, {  2012,  -1208}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{ -5017,   -511,   -511}, 0, {     0,   2470}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{ -5017,   -511,    512}, 0, {  2012,   2470}, {0x99, 0x33, 0xcd, 0xff}}},\n};\n\n// 0x07007A80 - 0x07007AF0\nstatic const Vtx ddd_seg7_vertex_07007A80[] = {\n    {{{ -5017,   -511,    512}, 0, {     0,  -4120}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{ -5017,  -4607,   -511}, 0, {  2012,   4054}, {0xac, 0x2a, 0x54, 0xff}}},\n    {{{ -5017,  -4607,    512}, 0, {     0,   4054}, {0xcd, 0x67, 0xcd, 0xff}}},\n    {{{ -5017,   -511,   -511}, 0, {  2012,  -4120}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{ -3173,  -2449,   -511}, 0, {  2012,   -252}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{ -2866,  -2756,    512}, 0, {     0,    362}, {0x30, 0x75, 0x00, 0xff}}},\n    {{{ -2866,  -2756,   -511}, 0, {  2012,    362}, {0x30, 0x75, 0x00, 0xff}}},\n};\n\n// 0x07007AF0 - 0x07007CB8\nstatic const Gfx ddd_seg7_dl_07007AF0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ddd_seg7_lights_070074C8.l, 1),\n    gsSPLight(&ddd_seg7_lights_070074C8.a, 2),\n    gsSPVertex(ddd_seg7_vertex_070074E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12,  0, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ddd_seg7_vertex_070075E0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ddd_seg7_vertex_070076C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  1, 11, 12, 0x0),\n    gsSP2Triangles( 1, 12, 13, 0x0,  0, 14,  1, 0x0),\n    gsSPVertex(ddd_seg7_vertex_070077B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  2,  5, 0x0,  4,  5,  6, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(ddd_seg7_vertex_070078B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 1,  6,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 14, 12, 0x0),\n    gsSPVertex(ddd_seg7_vertex_070079A0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ddd_seg7_vertex_07007A80, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP1Triangle( 4,  5,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007CB8 - 0x07007D18\nconst Gfx ddd_seg7_dl_07007CB8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ddd_seg7_dl_07007AF0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ddd/areas/2/3/model.inc.c",
    "content": "// 0x07007D18 - 0x07007D30\nstatic const Lights1 ddd_seg7_lights_07007D18 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07007D30 - 0x07007E20\nstatic const Vtx ddd_seg7_vertex_07007D30[] = {\n    {{{  6989,    110,    105}, 0, {  4056,   4054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6579,    110,    105}, 0, {     0,   4054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6579,    520,    105}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1695,   1544,  -1863}, 0, {  5794,  -4120}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1695,   1544,  -1279}, 0, {     0,  -4120}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1695,    929,  -1279}, 0, {     0,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1695,    929,  -1863}, 0, {  5794,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2299,    929,  -1863}, 0, {  5794,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2299,    929,  -1279}, 0, {     0,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2299,   1544,  -1279}, 0, {     0,  -4120}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2299,   1544,  -1863}, 0, {  5794,  -4120}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1695,    929,  -1863}, 0, { -1702,   2010}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2299,   1544,  -1863}, 0, {  3778,  -4120}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1695,   1544,  -1863}, 0, { -1702,  -4120}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2299,    929,  -1863}, 0, {  3778,   2010}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07007E20 - 0x07007F10\nstatic const Vtx ddd_seg7_vertex_07007E20[] = {\n    {{{  6579,    520,    105}, 0, {  3034,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6989,    520,    208}, 0, {  4056,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6989,    520,    105}, 0, {  3034,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6989,    110,    105}, 0, {  4056,   4054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6579,    520,    105}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6989,    520,    105}, 0, {  4056,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6989,    520,    208}, 0, {  4056,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6579,    520,    208}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6579,    110,    208}, 0, {     0,   4054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6989,    110,    208}, 0, {  4056,   4054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6579,    110,    105}, 0, {  3034,   4054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6579,    110,    208}, 0, {  4056,   4054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6579,    520,    208}, 0, {  4056,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6579,    520,    105}, 0, {  3034,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6579,    520,    208}, 0, {  4056,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07007F10 - 0x07008000\nstatic const Vtx ddd_seg7_vertex_07007F10[] = {\n    {{{  6989,    110,   -610}, 0, {  4056,   4054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6579,    520,   -610}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6989,    520,   -610}, 0, {  4056,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6579,    520,   -610}, 0, { -4118,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6989,    520,   -508}, 0, { -3096,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6989,    520,   -610}, 0, { -4118,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6579,    520,   -508}, 0, { -3096,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6579,    110,   -610}, 0, { -4118,   4054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6579,    110,   -508}, 0, { -3096,   4054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6579,    520,   -508}, 0, { -3096,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6579,    520,   -610}, 0, { -4118,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6989,    520,   -508}, 0, {  4056,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6579,    520,   -508}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6579,    110,   -508}, 0, {     0,   4054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6989,    110,   -508}, 0, {  4056,   4054}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07008000 - 0x070080F0\nstatic const Vtx ddd_seg7_vertex_07008000[] = {\n    {{{  2583,  -4087,  -2916}, 0, {     0,   4054}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2583,  -3268,  -2916}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1858,  -3268,  -2192}, 0, {  5078,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  6989,    110,   -610}, 0, {  4056,   4054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6579,    110,   -610}, 0, {     0,   4054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6579,    520,   -610}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1424,  -3268,  -2626}, 0, {  3034,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1858,  -3268,  -2192}, 0, {  3034,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2583,  -3268,  -2916}, 0, { -2074,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2148,  -3268,  -3350}, 0, { -2074,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1858,  -4087,  -2192}, 0, {  3034,   4054}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1858,  -3268,  -2192}, 0, {  3034,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1424,  -3268,  -2626}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1424,  -4087,  -2626}, 0, {     0,   4054}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1858,  -4087,  -2192}, 0, {  5078,   4054}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x070080F0 - 0x070081E0\nstatic const Vtx ddd_seg7_vertex_070080F0[] = {\n    {{{  6784,    110,   3382}, 0, {     0,   6610}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  6784,   1544,   3382}, 0, {     0,   -544}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  6989,   1544,   3177}, 0, { -1052,   -544}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2148,  -4087,  -3350}, 0, {     0,   4054}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2148,  -3268,  -3350}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2583,  -3268,  -2916}, 0, {  3034,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2583,  -4087,  -2916}, 0, {  3034,   4054}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1050,    110,   3280}, 0, {   990,   6610}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1050,   1544,   3485}, 0, {     0,   -544}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1050,    110,   3485}, 0, {     0,   6610}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1050,    110,   3485}, 0, {     0,   6610}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{  1050,   1544,   3485}, 0, {     0,   -544}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{   845,   1544,   3689}, 0, { -1052,   -542}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{   845,    110,   3689}, 0, { -1052,   6610}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{  1050,   1544,   3280}, 0, {   990,   -544}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070081E0 - 0x070082D0\nstatic const Vtx ddd_seg7_vertex_070081E0[] = {\n    {{{   845,    110,   3075}, 0, {  2012,   6610}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1050,   1544,   3280}, 0, {   990,   -544}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1050,    110,   3280}, 0, {   990,   6610}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   845,   1544,   3075}, 0, {  2012,   -544}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  6784,    110,   3382}, 0, {     0,   6610}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  6989,   1544,   3177}, 0, { -1052,   -544}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  6989,    110,   3177}, 0, { -1052,   6610}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  6784,    110,   3587}, 0, {   990,   6610}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6784,   1544,   3382}, 0, {     0,   -544}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6784,    110,   3382}, 0, {     0,   6610}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6784,   1544,   3587}, 0, {   990,   -544}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6989,    110,   3792}, 0, {  2012,   6610}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  6784,   1544,   3587}, 0, {   990,   -544}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  6784,    110,   3587}, 0, {   990,   6610}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  6989,   1544,   3792}, 0, {  2012,   -544}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x070082D0 - 0x070083C0\nstatic const Vtx ddd_seg7_vertex_070082D0[] = {\n    {{{  2386,    110,   5348}, 0, {   990,   6608}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  2531,   1544,   5492}, 0, {     0,   -544}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  2531,    110,   5492}, 0, {     0,   6608}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  2531,    110,   5492}, 0, {     0,   6608}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2531,   1544,   5492}, 0, {     0,   -544}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2531,   1544,   5782}, 0, { -1052,   -544}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2531,    110,   5782}, 0, { -1052,   6608}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2381,   1544,    105}, 0, {  3034,  -2076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   845,   1544,  -2454}, 0, { -2074,  -5142}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2381,   1544,  -2454}, 0, { -2074,  -2076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2386,   1544,   5348}, 0, {   990,   -544}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  2096,    110,   5348}, 0, {  2012,   6608}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2386,   1544,   5348}, 0, {   990,   -544}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2386,    110,   5348}, 0, {   990,   6608}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2096,   1544,   5348}, 0, {  2012,   -544}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070083C0 - 0x070084C0\nstatic const Vtx ddd_seg7_vertex_070083C0[] = {\n    {{{  6989,   1544,   6249}, 0, {  7122,   7120}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   845,   1544,    105}, 0, { -5140,  -5142}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  6989,   1544,    105}, 0, { -5140,   7120}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   845,   1544,   6249}, 0, {  7122,  -5142}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2381,   1544,    105}, 0, {  3034,  -2076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   845,   1544,    105}, 0, {  3034,  -5142}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   845,   1544,  -2454}, 0, { -2074,  -5142}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3917,    725,  -2044}, 0, {  3034,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3098,    725,  -2146}, 0, { 11210,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3917,    725,  -2146}, 0, {  3034,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3063,  -3319,   -682}, 0, { -3778,  -1394}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3063,  -3319,   -340}, 0, { -3778,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3234,  -3319,   -170}, 0, { -2074,   3714}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3575,  -3319,   -170}, 0, {  1330,   3714}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3746,  -3319,   -340}, 0, {  3034,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3746,  -3319,   -682}, 0, {  3034,  -1394}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070084C0 - 0x070085A0\nstatic const Vtx ddd_seg7_vertex_070084C0[] = {\n    {{{  3063,  -3319,   -682}, 0, { -3778,  -1394}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3746,  -3319,   -682}, 0, {  3034,  -1394}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3575,  -3319,   -852}, 0, {  1330,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3234,  -3319,   -852}, 0, { -2074,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5453,   1544,  -2454}, 0, { -2074,   4054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  6989,   1544,  -2454}, 0, { -2074,   7120}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  6989,   1544,    105}, 0, {  3034,   7120}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  5453,   1544,    105}, 0, {  3034,   4054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  5453,   1544,  -2454}, 0, {  4056,  -7186}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5453,    725,  -2454}, 0, {  4056,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5453,    725,  -2146}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3917,    725,  -2044}, 0, {  3034,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3098,    725,  -2044}, 0, { 11210,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3098,    725,  -2146}, 0, { 11210,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x070085A0 - 0x070086A0\nstatic const Vtx ddd_seg7_vertex_070085A0[] = {\n    {{{  4634,    725,  -2044}, 0, { -4118,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4634,    725,  -2146}, 0, { -4118,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  5453,    725,  -2146}, 0, {-12294,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  5453,    725,  -2454}, 0, {-12294,  -4120}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  5555,    725,  -2454}, 0, {-13316,  -4120}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  5555,    725,  -2044}, 0, {-13316,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  5453,   1544,  -2454}, 0, {  4056,  -7186}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5453,    725,  -2146}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5453,   1544,  -2146}, 0, {   990,  -7186}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4634,   1544,  -2146}, 0, {   990,  -7186}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4634,    725,  -2146}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4634,    725,  -2044}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5555,   1544,  -2454}, 0, { 20408,  -5142}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5555,    725,  -2454}, 0, { 20408,   3032}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5453,    725,  -2454}, 0, { 19386,   3032}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5453,   1544,  -2454}, 0, { 19386,  -5142}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070086A0 - 0x07008780\nstatic const Vtx ddd_seg7_vertex_070086A0[] = {\n    {{{  5555,   1544,  -2044}, 0, {     0,  -7186}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5555,    725,  -2454}, 0, {  4056,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5555,   1544,  -2454}, 0, {  4056,  -7186}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5555,    725,  -2044}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4634,   1544,  -2044}, 0, { 11210,  -5142}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4634,    725,  -2044}, 0, { 11210,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5555,    725,  -2044}, 0, { 20408,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5555,   1544,  -2044}, 0, { 20408,  -5142}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3098,   1544,  -2146}, 0, {   990,  -7186}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3098,    725,  -2044}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3098,   1544,  -2044}, 0, {     0,  -7186}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4634,   1544,  -2146}, 0, {   990,  -7186}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4634,    725,  -2044}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4634,   1544,  -2044}, 0, {     0,  -7186}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07008780 - 0x07008870\nstatic const Vtx ddd_seg7_vertex_07008780[] = {\n    {{{  5453,   1544,  -2146}, 0, { 19386,  -5142}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5453,    725,  -2146}, 0, { 19386,   3032}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4634,    725,  -2146}, 0, { 11210,   3032}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4634,   1544,  -2146}, 0, { 11210,  -5142}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3098,   1544,  -2044}, 0, { -4118,  -5142}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3098,    725,  -2044}, 0, { -4118,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3917,    725,  -2044}, 0, {  4056,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3917,   1544,  -2044}, 0, {  4056,  -5142}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3098,   1544,  -2146}, 0, {   990,  -7186}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3098,    725,  -2146}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3098,    725,  -2044}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3917,   1544,  -2146}, 0, {  4056,  -5142}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3098,    725,  -2146}, 0, { -4118,   3032}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3098,   1544,  -2146}, 0, { -4118,  -5142}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3917,    725,  -2146}, 0, {  4056,   3032}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07008870 - 0x070088F0\nstatic const Vtx ddd_seg7_vertex_07008870[] = {\n    {{{  3917,   1544,  -2044}, 0, {     0,  -7186}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3917,    725,  -2044}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3917,    725,  -2146}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3917,   1544,  -2146}, 0, {   990,  -7186}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2893,   1544,  -2454}, 0, { -2074,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  5453,   1544,  -2454}, 0, {  3034,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  5453,   1544,  -1942}, 0, {  3034,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2893,   1544,  -1942}, 0, { -2074,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x070088F0 - 0x07008C48\nstatic const Gfx ddd_seg7_dl_070088F0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ddd_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ddd_seg7_lights_07007D18.l, 1),\n    gsSPLight(&ddd_seg7_lights_07007D18.a, 2),\n    gsSPVertex(ddd_seg7_vertex_07007D30, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ddd_seg7_vertex_07007E20, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ddd_seg7_vertex_07007F10, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ddd_seg7_vertex_07008000, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ddd_seg7_vertex_070080F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 7, 14,  8, 0x0),\n    gsSPVertex(ddd_seg7_vertex_070081E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ddd_seg7_vertex_070082D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 0, 10,  1, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ddd_seg7_vertex_070083C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP2Triangles(10, 13, 14, 0x0, 10, 14, 15, 0x0),\n    gsSPVertex(ddd_seg7_vertex_070084C0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ddd_seg7_vertex_070085A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  2,  5,  0, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(ddd_seg7_vertex_070086A0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ddd_seg7_vertex_07008780, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ddd_seg7_vertex_07008870, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008C48 - 0x07008CB8\nconst Gfx ddd_seg7_dl_07008C48[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ddd_seg7_dl_070088F0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ddd/areas/2/4/model.inc.c",
    "content": "// 0x07008CB8 - 0x07008D98\nstatic const Vtx ddd_seg7_vertex_07008CB8[] = {\n    {{{  -869,  -2746,   -255}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{  -869,  -2746,    256}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{  -511,  -2746,      0}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{ -1177,  -2746,   -153}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{  -869,  -2746,     51}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{  -869,  -2746,    -50}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{ -1177,  -2746,    154}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{ -5068,  -2149,   -255}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{ -5068,  -2149,    256}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{ -5068,  -1791,      0}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{ -5068,  -2457,   -153}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{ -5068,  -2149,     51}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{ -5068,  -2149,    -50}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{ -5068,  -2457,    154}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n};\n\n// 0x07008D98 - 0x07008E78\nstatic const Vtx ddd_seg7_vertex_07008D98[] = {\n    {{{ -2713,  -2746,   -153}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{ -2713,  -2746,    154}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{ -2405,  -2746,     51}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{ -2405,  -2746,    -50}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{ -2405,  -2746,   -255}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{ -2405,  -2746,    256}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{ -2047,  -2746,      0}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{ -2203,    244,      0}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{ -2457,    497,    256}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{ -2457,    497,   -255}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{ -2457,    497,    -50}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{ -2674,    715,    154}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{ -2674,    715,   -153}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{ -2457,    497,     51}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n};\n\n// 0x07008E78 - 0x07008EE8\nstatic const Vtx ddd_seg7_vertex_07008E78[] = {\n    {{{ -5068,  -4505,   -153}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{ -5068,  -4505,    154}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{ -5068,  -4197,     51}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{ -5068,  -4197,   -255}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{ -5068,  -4197,    256}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{ -5068,  -3839,      0}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n    {{{ -5068,  -4197,    -50}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xff}}},\n};\n\n// 0x07008EE8 - 0x07008F80\nstatic const Gfx ddd_seg7_dl_07008EE8[] = {\n    gsSPVertex(ddd_seg7_vertex_07008CB8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(ddd_seg7_vertex_07008D98, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(ddd_seg7_vertex_07008E78, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  2,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008F80 - 0x07008FD0\nconst Gfx ddd_seg7_dl_07008F80[] = {\n    gsDPPipeSync(),\n    gsDPSetEnvColor(255, 255, 255, 98),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsSPDisplayList(ddd_seg7_dl_07008EE8),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ddd/areas/2/5/model.inc.c",
    "content": "// 0x0700B0D8 - 0x0700B0F0\nstatic const Lights1 ddd_seg7_lights_0700B0D8 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700B0F0 - 0x0700B1D0\nstatic const Vtx ddd_seg7_vertex_0700B0F0[] = {\n    {{{  4131,  -2756,  -2425}, 0, {  2012,    990}, {0xd8, 0x09, 0x89, 0xff}}},\n    {{{  4122,  -2756,  -2252}, 0, {  2012,      0}, {0x97, 0x1a, 0x41, 0xff}}},\n    {{{  4122,  -2551,  -2252}, 0, {   960,    150}, {0xb7, 0x67, 0x04, 0xff}}},\n    {{{  4326,  -2551,  -2354}, 0, {     0,    990}, {0x1c, 0x34, 0x91, 0xff}}},\n    {{{  4326,  -2756,  -2354}, 0, {     0,    990}, {0x3e, 0xa2, 0xc6, 0xff}}},\n    {{{  4326,  -2551,  -2354}, 0, {  2012,      0}, {0x1c, 0x34, 0x91, 0xff}}},\n    {{{  6989,  -2756,   -921}, 0, {  5864,   1996}, {0x13, 0x8f, 0x35, 0xff}}},\n    {{{  6989,  -2551,   -921}, 0, {  6036,    990}, {0x1f, 0x5c, 0x50, 0xff}}},\n    {{{  5862,  -2756,   -511}, 0, {     0,    990}, {0xda, 0xbe, 0x64, 0xff}}},\n    {{{  5862,  -2551,   -511}, 0, {   140,    -18}, {0xc7, 0x51, 0x4d, 0xff}}},\n    {{{  6067,  -2756,   -818}, 0, {  8656,  -1210}, {0x40, 0xab, 0xbd, 0xff}}},\n    {{{  6022,  -4138,    265}, 0, {    12,    292}, {0x1f, 0xb4, 0xa0, 0xff}}},\n    {{{  5738,  -2756,   -738}, 0, {  8656,    478}, {0xae, 0xc7, 0xb3, 0xff}}},\n    {{{  5693,  -4138,    345}, 0, {    12,   1978}, {0x82, 0x0a, 0x07, 0xff}}},\n};\n\n// 0x0700B1D0 - 0x0700B2D0\nstatic const Vtx ddd_seg7_vertex_0700B1D0[] = {\n    {{{  5738,  -2756,   -738}, 0, {  9424,   -106}, {0xae, 0xc7, 0xb3, 0xff}}},\n    {{{  5693,  -4138,    345}, 0, {   652,   -106}, {0x82, 0x0a, 0x07, 0xff}}},\n    {{{  5862,  -2756,   -511}, 0, {  8740,    990}, {0xda, 0xbe, 0x64, 0xff}}},\n    {{{  5817,  -4138,    572}, 0, {     0,    990}, {0xf3, 0x4e, 0x63, 0xff}}},\n    {{{  5862,  -2756,   -511}, 0, {  8492,   2028}, {0xda, 0xbe, 0x64, 0xff}}},\n    {{{  5817,  -4138,    572}, 0, {     0,      0}, {0xf3, 0x4e, 0x63, 0xff}}},\n    {{{  6116,  -2756,   -603}, 0, {  8492,   3378}, {0x56, 0x37, 0x4a, 0xff}}},\n    {{{  6071,  -4138,    480}, 0, {     0,   1316}, {0x7d, 0x0a, 0x12, 0xff}}},\n    {{{  6116,  -2756,   -603}, 0, {  8084,    106}, {0x56, 0x37, 0x4a, 0xff}}},\n    {{{  6071,  -4138,    480}, 0, {  -684,    106}, {0x7d, 0x0a, 0x12, 0xff}}},\n    {{{  6067,  -2756,   -818}, 0, {  8740,    990}, {0x40, 0xab, 0xbd, 0xff}}},\n    {{{  6022,  -4138,    265}, 0, {     0,    990}, {0x1f, 0xb4, 0xa0, 0xff}}},\n    {{{  5146,  -2756,  -1945}, 0, {  8260,    -22}, {0xff, 0xa8, 0xa6, 0xff}}},\n    {{{  4691,  -4138,  -1372}, 0, {   456,    -22}, {0xa2, 0xfd, 0xac, 0xff}}},\n    {{{  5080,  -2756,  -1729}, 0, {  7772,    990}, {0x8a, 0x2b, 0x0a, 0xff}}},\n    {{{  4625,  -4138,  -1157}, 0, {     0,    990}, {0xa4, 0x39, 0x41, 0xff}}},\n};\n\n// 0x0700B2D0 - 0x0700B3D0\nstatic const Vtx ddd_seg7_vertex_0700B2D0[] = {\n    {{{  5080,  -2756,  -1729}, 0, {  6100,    544}, {0x8a, 0x2b, 0x0a, 0xff}}},\n    {{{  4625,  -4138,  -1157}, 0, { -1676,    -82}, {0xa4, 0x39, 0x41, 0xff}}},\n    {{{  5248,  -2756,  -1637}, 0, {  6100,   1498}, {0xc6, 0xcf, 0x65, 0xff}}},\n    {{{  4793,  -4138,  -1065}, 0, { -1676,    876}, {0x32, 0x1d, 0x70, 0xff}}},\n    {{{  5248,  -2756,  -1637}, 0, {  5568,   -290}, {0xc6, 0xcf, 0x65, 0xff}}},\n    {{{  4793,  -4138,  -1065}, 0, { -2232,   -290}, {0x32, 0x1d, 0x70, 0xff}}},\n    {{{  5453,  -2756,  -1842}, 0, {  6240,    990}, {0x55, 0xa5, 0x16, 0xff}}},\n    {{{  4998,  -4138,  -1270}, 0, { -1560,    990}, {0x59, 0xc6, 0xbb, 0xff}}},\n    {{{  5453,  -2756,  -1842}, 0, {  -508,   1580}, {0x55, 0xa5, 0x16, 0xff}}},\n    {{{  4998,  -4138,  -1270}, 0, {  7120,      0}, {0x59, 0xc6, 0xbb, 0xff}}},\n    {{{  5146,  -2756,  -1945}, 0, {  -584,      0}, {0xff, 0xa8, 0xa6, 0xff}}},\n    {{{  4691,  -4138,  -1372}, 0, {  7044,  -1646}, {0xa2, 0xfd, 0xac, 0xff}}},\n    {{{  4122,  -2756,  -2252}, 0, { -4736,    796}, {0x97, 0x1a, 0x41, 0xff}}},\n    {{{  2781,  -4138,  -1874}, 0, {  5056,    796}, {0xbb, 0x54, 0x40, 0xff}}},\n    {{{  4291,  -2756,  -2160}, 0, { -5224,      0}, {0xfc, 0x25, 0x79, 0xff}}},\n    {{{  2950,  -4138,  -1782}, 0, {  4568,      0}, {0x52, 0xc5, 0x4c, 0xff}}},\n};\n\n// 0x0700B3D0 - 0x0700B4D0\nstatic const Vtx ddd_seg7_vertex_0700B3D0[] = {\n    {{{  4291,  -2756,  -2160}, 0, { -7468,    906}, {0xfc, 0x25, 0x79, 0xff}}},\n    {{{  2950,  -4138,  -1782}, 0, {  2320,    906}, {0x52, 0xc5, 0x4c, 0xff}}},\n    {{{  4326,  -2756,  -2354}, 0, { -7776,      0}, {0x3e, 0xa2, 0xc6, 0xff}}},\n    {{{  2986,  -4138,  -1976}, 0, {  2012,      0}, {0x40, 0xae, 0xb8, 0xff}}},\n    {{{  4326,  -2756,  -2354}, 0, { -2116,   1374}, {0x3e, 0xa2, 0xc6, 0xff}}},\n    {{{  2986,  -4138,  -1976}, 0, {  7632,    480}, {0x40, 0xae, 0xb8, 0xff}}},\n    {{{  4131,  -2756,  -2425}, 0, { -1596,    478}, {0xd8, 0x09, 0x89, 0xff}}},\n    {{{  2790,  -4138,  -2047}, 0, {  8152,   -418}, {0xaa, 0x41, 0xbe, 0xff}}},\n    {{{  4131,  -2756,  -2425}, 0, { -5932,    810}, {0xd8, 0x09, 0x89, 0xff}}},\n    {{{  2790,  -4138,  -2047}, 0, {  3856,    810}, {0xaa, 0x41, 0xbe, 0xff}}},\n    {{{  4122,  -2756,  -2252}, 0, { -5732,      0}, {0x97, 0x1a, 0x41, 0xff}}},\n    {{{  2781,  -4138,  -1874}, 0, {  4056,      0}, {0xbb, 0x54, 0x40, 0xff}}},\n    {{{  5453,  -2551,  -1842}, 0, {  3544,   -544}, {0x4e, 0x63, 0xfb, 0xff}}},\n    {{{  6374,  -2346,  -2764}, 0, { -3036,   -542}, {0x35, 0x5a, 0x46, 0xff}}},\n    {{{  5144,  -2551,  -1937}, 0, {  4292,    888}, {0xdd, 0x5b, 0xb1, 0xff}}},\n    {{{  6199,  -2387,  -2940}, 0, { -3004,    678}, {0xad, 0x34, 0xb1, 0xff}}},\n};\n\n// 0x0700B4D0 - 0x0700B5D0\nstatic const Vtx ddd_seg7_vertex_0700B4D0[] = {\n    {{{  5144,  -2551,  -1937}, 0, {  -968,    480}, {0xdd, 0x5b, 0xb1, 0xff}}},\n    {{{  4326,  -2551,  -2354}, 0, {  3536,   1266}, {0x1c, 0x34, 0x91, 0xff}}},\n    {{{  4122,  -2551,  -2252}, 0, {  4364,    478}, {0xb7, 0x67, 0x04, 0xff}}},\n    {{{  5248,  -2551,  -1637}, 0, { -1908,   -798}, {0xc9, 0x5b, 0x44, 0xff}}},\n    {{{  5453,  -2551,  -1842}, 0, { -2584,    480}, {0x4e, 0x63, 0xfb, 0xff}}},\n    {{{  5248,  -2551,  -1637}, 0, {  5748,    990}, {0xc9, 0x5b, 0x44, 0xff}}},\n    {{{  6067,  -2551,   -818}, 0, {     0,    990}, {0x02, 0x6d, 0xc0, 0xff}}},\n    {{{  5453,  -2551,  -1842}, 0, {  5748,   2434}, {0x4e, 0x63, 0xfb, 0xff}}},\n    {{{  5862,  -2551,   -511}, 0, {  -388,   -816}, {0xc7, 0x51, 0x4d, 0xff}}},\n    {{{  5862,  -2551,   -511}, 0, { -3604,    990}, {0xc7, 0x51, 0x4d, 0xff}}},\n    {{{  6989,  -2551,   -921}, 0, {  2372,    990}, {0x1f, 0x5c, 0x50, 0xff}}},\n    {{{  6067,  -2551,   -818}, 0, { -2120,   -102}, {0x02, 0x6d, 0xc0, 0xff}}},\n    {{{  6067,  -2756,   -818}, 0, {     0,    990}, {0x40, 0xab, 0xbd, 0xff}}},\n    {{{  6989,  -2756,   -921}, 0, {  4596,    990}, {0x13, 0x8f, 0x35, 0xff}}},\n    {{{  5862,  -2756,   -511}, 0, { -1212,   -420}, {0xda, 0xbe, 0x64, 0xff}}},\n    {{{  6989,  -2592,  -1187}, 0, {  2828,   -258}, {0xe4, 0x5d, 0xaf, 0xff}}},\n};\n\n// 0x0700B5D0 - 0x0700B6D0\nstatic const Vtx ddd_seg7_vertex_0700B5D0[] = {\n    {{{  5453,  -2756,  -1842}, 0, { -1264,   1108}, {0x55, 0xa5, 0x16, 0xff}}},\n    {{{  6067,  -2756,   -818}, 0, {  4676,   1566}, {0x40, 0xab, 0xbd, 0xff}}},\n    {{{  5862,  -2756,   -511}, 0, {  5588,      0}, {0xda, 0xbe, 0x64, 0xff}}},\n    {{{  5146,  -2756,  -1945}, 0, { -2404,      0}, {0xff, 0xa8, 0xa6, 0xff}}},\n    {{{  5248,  -2756,  -1637}, 0, {  -804,   -260}, {0xc6, 0xcf, 0x65, 0xff}}},\n    {{{  5248,  -2756,  -1637}, 0, { -1560,    478}, {0xc6, 0xcf, 0x65, 0xff}}},\n    {{{  4122,  -2756,  -2252}, 0, {  4756,   1508}, {0x97, 0x1a, 0x41, 0xff}}},\n    {{{  4326,  -2756,  -2354}, 0, {  4260,    478}, {0x3e, 0xa2, 0xc6, 0xff}}},\n    {{{  5146,  -2756,  -1945}, 0, {  -216,   -418}, {0xff, 0xa8, 0xa6, 0xff}}},\n    {{{  6067,  -2756,   -818}, 0, {     0,    990}, {0x40, 0xab, 0xbd, 0xff}}},\n    {{{  6989,  -2756,  -1228}, 0, {  4764,   2512}, {0xd3, 0xd2, 0x93, 0xff}}},\n    {{{  6989,  -2756,   -921}, 0, {  4596,    990}, {0x13, 0x8f, 0x35, 0xff}}},\n    {{{  5146,  -2756,  -1945}, 0, {  3048,   -532}, {0xff, 0xa8, 0xa6, 0xff}}},\n    {{{  6256,  -2520,  -2882}, 0, { -4136,    990}, {0xd4, 0xa1, 0xb9, 0xff}}},\n    {{{  5453,  -2756,  -1842}, 0, {  2524,    990}, {0x55, 0xa5, 0x16, 0xff}}},\n    {{{  6374,  -2551,  -2764}, 0, { -4004,   1824}, {0x44, 0xa0, 0x2e, 0xff}}},\n};\n\n// 0x0700B6D0 - 0x0700B7D0\nstatic const Vtx ddd_seg7_vertex_0700B6D0[] = {\n    {{{  6067,  -2756,   -818}, 0, {  2928,    826}, {0x40, 0xab, 0xbd, 0xff}}},\n    {{{  6067,  -2551,   -818}, 0, {  2840,   -166}, {0x02, 0x6d, 0xc0, 0xff}}},\n    {{{  6989,  -2756,  -1228}, 0, { -2072,   1320}, {0xd3, 0xd2, 0x93, 0xff}}},\n    {{{  6989,  -2592,  -1187}, 0, { -2072,    480}, {0xe4, 0x5d, 0xaf, 0xff}}},\n    {{{  5453,  -2756,  -1842}, 0, {  5928,    990}, {0x55, 0xa5, 0x16, 0xff}}},\n    {{{  5453,  -2551,  -1842}, 0, {  5928,      0}, {0x4e, 0x63, 0xfb, 0xff}}},\n    {{{  6067,  -2756,   -818}, 0, {     0,    990}, {0x40, 0xab, 0xbd, 0xff}}},\n    {{{  6067,  -2551,   -818}, 0, {     0,      0}, {0x02, 0x6d, 0xc0, 0xff}}},\n    {{{  6374,  -2551,  -2764}, 0, {  6552,    990}, {0x44, 0xa0, 0x2e, 0xff}}},\n    {{{  6374,  -2346,  -2764}, 0, {  6712,    -20}, {0x35, 0x5a, 0x46, 0xff}}},\n    {{{  5453,  -2756,  -1842}, 0, {     0,    990}, {0x55, 0xa5, 0x16, 0xff}}},\n    {{{  5453,  -2551,  -1842}, 0, {   128,    -20}, {0x4e, 0x63, 0xfb, 0xff}}},\n    {{{  5146,  -2756,  -1945}, 0, {  7112,   2010}, {0xff, 0xa8, 0xa6, 0xff}}},\n    {{{  5144,  -2551,  -1937}, 0, {  7120,    990}, {0xdd, 0x5b, 0xb1, 0xff}}},\n    {{{  6256,  -2520,  -2882}, 0, {  -160,    990}, {0xd4, 0xa1, 0xb9, 0xff}}},\n    {{{  6199,  -2387,  -2940}, 0, {  -140,    334}, {0xad, 0x34, 0xb1, 0xff}}},\n};\n\n// 0x0700B7D0 - 0x0700B890\nstatic const Vtx ddd_seg7_vertex_0700B7D0[] = {\n    {{{  4326,  -2756,  -2354}, 0, {  4428,   1984}, {0x3e, 0xa2, 0xc6, 0xff}}},\n    {{{  4326,  -2551,  -2354}, 0, {  4652,    990}, {0x1c, 0x34, 0x91, 0xff}}},\n    {{{  5146,  -2756,  -1945}, 0, {     0,    990}, {0xff, 0xa8, 0xa6, 0xff}}},\n    {{{  5862,  -2551,   -511}, 0, {  6372,      0}, {0xc7, 0x51, 0x4d, 0xff}}},\n    {{{  5248,  -2551,  -1637}, 0, {     0,      0}, {0xc9, 0x5b, 0x44, 0xff}}},\n    {{{  5248,  -2756,  -1637}, 0, {     0,    990}, {0xc6, 0xcf, 0x65, 0xff}}},\n    {{{  5144,  -2551,  -1937}, 0, {   184,    -10}, {0xdd, 0x5b, 0xb1, 0xff}}},\n    {{{  5248,  -2756,  -1637}, 0, {  6372,    990}, {0xc6, 0xcf, 0x65, 0xff}}},\n    {{{  5248,  -2551,  -1637}, 0, {  6372,      0}, {0xc9, 0x5b, 0x44, 0xff}}},\n    {{{  4122,  -2756,  -2252}, 0, {     0,    990}, {0x97, 0x1a, 0x41, 0xff}}},\n    {{{  4122,  -2551,  -2252}, 0, {     0,      0}, {0xb7, 0x67, 0x04, 0xff}}},\n    {{{  5862,  -2756,   -511}, 0, {  6372,    990}, {0xda, 0xbe, 0x64, 0xff}}},\n};\n\n// 0x0700B890 - 0x0700BAE0\nstatic const Gfx ddd_seg7_dl_0700B890[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ddd_seg7_texture_07002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ddd_seg7_lights_0700B0D8.l, 1),\n    gsSPLight(&ddd_seg7_lights_0700B0D8.a, 2),\n    gsSPVertex(ddd_seg7_vertex_0700B0F0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  0,  5, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 7,  9,  8, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(11, 13, 12, 0x0),\n    gsSPVertex(ddd_seg7_vertex_0700B1D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(ddd_seg7_vertex_0700B2D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(ddd_seg7_vertex_0700B3D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(ddd_seg7_vertex_0700B4D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  8,  6, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(10, 15, 11, 0x0),\n    gsSPVertex(ddd_seg7_vertex_0700B5D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 2,  4,  3, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(ddd_seg7_vertex_0700B6D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(ddd_seg7_vertex_0700B7D0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 1,  6,  2, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11,  3,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700BAE0 - 0x0700BB50\nconst Gfx ddd_seg7_dl_0700BAE0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ddd_seg7_dl_0700B890),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ddd/areas/2/6/model.inc.c",
    "content": "// 0x0700BB50 - 0x0700BB68\nstatic const Lights1 ddd_seg7_lights_0700BB50 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700BB68 - 0x0700BC58\nstatic const Vtx ddd_seg7_vertex_0700BB68[] = {\n    {{{  5298,   -196,   3897}, 0, {   990,   1168}, {0xd8, 0x71, 0xd8, 0xff}}},\n    {{{  5370,    110,   4694}, 0, {  2268,   -544}, {0xd8, 0x71, 0xd8, 0xff}}},\n    {{{  6456,    110,   3608}, 0, { -1562,   -544}, {0xd8, 0x71, 0xd8, 0xff}}},\n    {{{  6989,    110,   3485}, 0, { 11210,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6989,    110,  -1020}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6579,    110,   3485}, 0, { 11210,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6579,    110,  -1020}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6989,    110,   6659}, 0, { -7440,  -3610}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6989,    110,   3485}, 0, { -7440,   4310}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6579,    110,   3485}, 0, { -6418,   4310}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4429,    110,   5635}, 0, { -1052,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3405,    110,   5635}, 0, {  1500,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   845,    110,   6659}, 0, {  7888,  -3610}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5660,   -196,   3535}, 0, {  -286,   1168}, {0xd8, 0x71, 0xd8, 0xff}}},\n    {{{   845,    110,   3075}, 0, {  7888,   5332}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700BC58 - 0x0700BC98\nstatic const Vtx ddd_seg7_vertex_0700BC58[] = {\n    {{{  1233,    110,   3463}, 0, {  2268,   -544}, {0x28, 0x71, 0xd8, 0xff}}},\n    {{{  2319,    110,   4549}, 0, { -1564,   -544}, {0x28, 0x71, 0xd8, 0xff}}},\n    {{{  2391,   -196,   3752}, 0, {  -286,   1168}, {0x28, 0x71, 0xd8, 0xff}}},\n    {{{  2029,   -196,   3390}, 0, {   990,   1168}, {0x28, 0x71, 0xd8, 0xff}}},\n};\n\n// 0x0700BC98 - 0x0700BD88\nstatic const Vtx ddd_seg7_vertex_0700BC98[] = {\n    {{{  2319,    929,  -1883}, 0, { 10494,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2319,    827,  -1883}, 0, { 10494,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1674,    827,  -1883}, 0, {  4056,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2319,    929,  -1279}, 0, {  5998,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2319,    827,  -1279}, 0, {  5998,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2319,    827,  -1883}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2319,    929,  -1883}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1674,    929,  -1279}, 0, {  4056,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2319,    827,  -1279}, 0, { 10494,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2319,    929,  -1279}, 0, { 10494,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1674,    827,  -1279}, 0, {  4056,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1674,    929,  -1883}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1674,    827,  -1279}, 0, {  5998,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1674,    929,  -1279}, 0, {  5998,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1674,    827,  -1883}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700BD88 - 0x0700BE78\nstatic const Vtx ddd_seg7_vertex_0700BD88[] = {\n    {{{  5658,    929,    720}, 0, { -2074,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5658,    827,    720}, 0, { -2074,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5350,    827,    720}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2319,    929,  -1883}, 0, { 10494,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1674,    827,  -1883}, 0, {  4056,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1674,    929,  -1883}, 0, {  4056,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1254,    929,    361}, 0, {  4056,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1971,    929,    361}, 0, { -3096,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1971,    725,    361}, 0, { -3096,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1254,    725,    361}, 0, {  4056,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5350,    827,   1129}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4941,    929,   1129}, 0, {  5078,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5350,    929,   1129}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4941,    827,   1129}, 0, {  5078,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5350,    929,    720}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700BE78 - 0x0700BF68\nstatic const Vtx ddd_seg7_vertex_0700BE78[] = {\n    {{{  5350,    878,   3382}, 0, {  4822,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4941,    776,   3382}, 0, {  8910,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4941,    878,   3382}, 0, {  8910,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5837,    878,   3792}, 0, {  4056,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5837,    776,   3075}, 0, { -3096,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5837,    878,   3075}, 0, { -3096,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5837,    776,   3792}, 0, {  4056,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5837,    878,   3075}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5350,    776,   3075}, 0, {  4822,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5350,    878,   3075}, 0, {  4822,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5837,    776,   3075}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5350,    878,   3075}, 0, { -3096,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5350,    776,   3075}, 0, { -3096,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5350,    776,   3382}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5350,    878,   3382}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700BF68 - 0x0700C058\nstatic const Vtx ddd_seg7_vertex_0700BF68[] = {\n    {{{  3302,    878,   3433}, 0, { -2074,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3302,    776,   3433}, 0, { -2074,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2688,    776,   3433}, 0, {  4056,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5350,    878,   3382}, 0, {  4822,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5350,    776,   3382}, 0, {  4822,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4941,    776,   3382}, 0, {  8910,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4941,    878,   3382}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4941,    776,   3792}, 0, {  4056,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4941,    878,   3792}, 0, {  4056,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4941,    776,   3382}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4941,    878,   3792}, 0, {  8910,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4941,    776,   3792}, 0, {  8910,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5837,    776,   3792}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5837,    878,   3792}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2688,    878,   3433}, 0, {  4056,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700C058 - 0x0700C148\nstatic const Vtx ddd_seg7_vertex_0700C058[] = {\n    {{{  5862,    929,   1437}, 0, { -7184,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5862,    827,    413}, 0, {  3034,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5862,    929,    413}, 0, {  3034,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2688,    878,   3433}, 0, {  2012,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2688,    776,   3741}, 0, { -1052,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2688,    878,   3741}, 0, { -1052,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2688,    776,   3433}, 0, {  2012,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2688,    878,   3741}, 0, {  4056,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2688,    776,   3741}, 0, {  4056,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3302,    776,   3741}, 0, { -2074,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3302,    878,   3741}, 0, { -2074,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3302,    878,   3741}, 0, { -1052,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3302,    776,   3433}, 0, {  2012,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3302,    878,   3433}, 0, {  2012,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3302,    776,   3741}, 0, { -1052,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700C148 - 0x0700C238\nstatic const Vtx ddd_seg7_vertex_0700C148[] = {\n    {{{  4941,    929,   1129}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4941,    827,   1129}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4941,    827,   1437}, 0, { -3096,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5862,    929,   1437}, 0, { -7184,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5862,    827,   1437}, 0, { -7184,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5862,    827,    413}, 0, {  3034,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5862,    929,    413}, 0, { -4118,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5658,    827,    413}, 0, { -2074,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5658,    929,    413}, 0, { -2074,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5862,    827,    413}, 0, { -4118,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5658,    929,    413}, 0, {  3034,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5658,    827,    720}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5658,    929,    720}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5658,    827,    413}, 0, {  3034,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4941,    929,   1437}, 0, { -3096,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700C238 - 0x0700C328\nstatic const Vtx ddd_seg7_vertex_0700C238[] = {\n    {{{  1971,    725,    361}, 0, {  4056,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1971,    929,   1488}, 0, { -7184,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1971,    725,   1488}, 0, { -7184,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5350,    929,    720}, 0, { -3096,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5350,    827,    720}, 0, { -3096,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5350,    827,   1129}, 0, { -7184,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5350,    929,   1129}, 0, { -7184,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4941,    929,   1437}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5862,    827,   1437}, 0, {  9166,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5862,    929,   1437}, 0, {  9166,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4941,    827,   1437}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1254,    725,   1488}, 0, { -7184,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1254,    929,   1488}, 0, { -7184,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1254,    929,    361}, 0, {  4056,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1254,    725,    361}, 0, {  4056,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700C328 - 0x0700C398\nstatic const Vtx ddd_seg7_vertex_0700C328[] = {\n    {{{  1971,    929,   1488}, 0, {  7122,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1254,    725,   1488}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1971,    725,   1488}, 0, {  7122,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1971,    725,    361}, 0, {  4056,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1971,    929,    361}, 0, {  4056,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1971,    929,   1488}, 0, { -7184,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1254,    929,   1488}, 0, {     0,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0700C398 - 0x0700C488\nstatic const Vtx ddd_seg7_vertex_0700C398[] = {\n    {{{  5298,   -298,   3897}, 0, {     0,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  5298,   -196,   3897}, 0, {     0,    480}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  5660,   -196,   3535}, 0, {  2524,    480}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2319,    827,  -1279}, 0, {  4516,  -1208}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1674,    827,  -1279}, 0, {  4516,   2010}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1674,    827,  -1883}, 0, {  1500,   2010}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2319,    827,  -1883}, 0, {  1500,  -1208}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2319,    929,  -1883}, 0, {  1500,  -1208}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1674,    929,  -1883}, 0, {  1500,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1674,    929,  -1279}, 0, {  4516,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2319,    929,  -1279}, 0, {  4516,  -1208}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1971,    725,   1488}, 0, {  3544,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1254,    725,    361}, 0, { -2072,   2522}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1971,    725,    361}, 0, { -2072,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1254,    725,   1488}, 0, {  3544,   2522}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0700C488 - 0x0700C578\nstatic const Vtx ddd_seg7_vertex_0700C488[] = {\n    {{{  5370,    110,   4694}, 0, {  2524,  -1054}, {0x82, 0x00, 0x0b, 0xff}}},\n    {{{  5298,   -298,   3897}, 0, {  -540,    990}, {0x82, 0x00, 0x0b, 0xff}}},\n    {{{  5370,   -401,   4694}, 0, {  2524,   1498}, {0x82, 0x00, 0x0b, 0xff}}},\n    {{{  5660,   -298,   3535}, 0, {  2524,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  5298,   -298,   3897}, 0, {     0,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  5660,   -196,   3535}, 0, {  2524,    480}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  5370,   -401,   4694}, 0, {  4568,    990}, {0xf2, 0x83, 0xf2, 0xff}}},\n    {{{  5298,   -298,   3897}, 0, {  2012,  -2118}, {0xf2, 0x83, 0xf2, 0xff}}},\n    {{{  5660,   -298,   3535}, 0, {  -540,  -2118}, {0xf2, 0x83, 0xf2, 0xff}}},\n    {{{  6456,   -401,   3608}, 0, { -3092,    990}, {0xf2, 0x83, 0xf2, 0xff}}},\n    {{{  6456,   -401,   3608}, 0, {  2524,   1500}, {0x0b, 0x00, 0x82, 0xff}}},\n    {{{  5660,   -196,   3535}, 0, {  -540,    478}, {0x0b, 0x00, 0x82, 0xff}}},\n    {{{  6456,    110,   3608}, 0, {  2524,  -1054}, {0x0b, 0x00, 0x82, 0xff}}},\n    {{{  5660,   -298,   3535}, 0, {  -540,    990}, {0x0b, 0x00, 0x82, 0xff}}},\n    {{{  5298,   -196,   3897}, 0, {  -540,    478}, {0x82, 0x00, 0x0b, 0xff}}},\n};\n\n// 0x0700C578 - 0x0700C668\nstatic const Vtx ddd_seg7_vertex_0700C578[] = {\n    {{{  2029,   -196,   3390}, 0, {  2524,    480}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2391,   -196,   3752}, 0, {     0,    480}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2391,   -298,   3752}, 0, {     0,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2319,   -401,   4549}, 0, {  2524,   1498}, {0x7e, 0x00, 0x0b, 0xff}}},\n    {{{  2391,   -298,   3752}, 0, {  -540,    990}, {0x7e, 0x00, 0x0b, 0xff}}},\n    {{{  2319,    110,   4549}, 0, {  2524,  -1054}, {0x7e, 0x00, 0x0b, 0xff}}},\n    {{{  2391,   -196,   3752}, 0, {  -540,    478}, {0x7e, 0x00, 0x0b, 0xff}}},\n    {{{  1233,    110,   3463}, 0, {  2524,  -1054}, {0xf5, 0x00, 0x82, 0xff}}},\n    {{{  2029,   -196,   3390}, 0, {  -540,    478}, {0xf5, 0x00, 0x82, 0xff}}},\n    {{{  1233,   -401,   3463}, 0, {  2524,   1500}, {0xf5, 0x00, 0x82, 0xff}}},\n    {{{  2029,   -298,   3390}, 0, {  -540,    990}, {0xf5, 0x00, 0x82, 0xff}}},\n    {{{  2029,   -298,   3390}, 0, {  2012,  -2076}, {0x0e, 0x83, 0xf2, 0xff}}},\n    {{{  2391,   -298,   3752}, 0, {  -540,  -2076}, {0x0e, 0x83, 0xf2, 0xff}}},\n    {{{  2319,   -401,   4549}, 0, { -3096,   1030}, {0x0e, 0x83, 0xf2, 0xff}}},\n    {{{  1233,   -401,   3463}, 0, {  4568,   1030}, {0x0e, 0x83, 0xf2, 0xff}}},\n};\n\n// 0x0700C668 - 0x0700C768\nstatic const Vtx ddd_seg7_vertex_0700C668[] = {\n    {{{  4941,    776,   3792}, 0, {  4568,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4941,    776,   3382}, 0, {  4568,   2010}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  5350,    776,   3382}, 0, {  2524,   2010}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2029,   -196,   3390}, 0, {  2524,    480}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2391,   -298,   3752}, 0, {     0,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2029,   -298,   3390}, 0, {  2524,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  5350,    878,   3382}, 0, {  2524,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5837,    878,   3792}, 0, {    96,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5837,    878,   3075}, 0, {    96,   3542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4941,    878,   3792}, 0, {  4568,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4941,    878,   3382}, 0, {  4568,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5350,    878,   3075}, 0, {  2524,   3542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5837,    776,   3792}, 0, {    96,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  5350,    929,   1437}, 0, {  2012,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5862,    929,    720}, 0, {  -540,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5350,    929,    720}, 0, {  2012,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700C768 - 0x0700C858\nstatic const Vtx ddd_seg7_vertex_0700C768[] = {\n    {{{  5350,    776,   3382}, 0, {  2524,   2010}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  5837,    776,   3075}, 0, {    96,   3542}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  5837,    776,   3792}, 0, {    96,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  5350,    776,   3075}, 0, {  2524,   3542}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3302,    878,   3433}, 0, {  -540,   7120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2688,    878,   3741}, 0, { -3604,   8654}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3302,    878,   3741}, 0, {  -540,   8654}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2688,    878,   3433}, 0, { -3604,   7120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3302,    776,   3741}, 0, {  3036,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2688,    776,   3741}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2688,    776,   3433}, 0, {     0,   1498}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3302,    776,   3433}, 0, {  3036,   1498}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  5658,    827,    413}, 0, { -2584,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  5862,    827,    413}, 0, { -2584,   1500}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  5862,    827,    720}, 0, { -1052,   1500}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0700C858 - 0x0700C958\nstatic const Vtx ddd_seg7_vertex_0700C858[] = {\n    {{{  5350,    929,   1437}, 0, {  2012,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5862,    929,   1437}, 0, {  -540,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5862,    929,    720}, 0, {  -540,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5658,    929,    720}, 0, {   480,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5862,    929,    413}, 0, {  -540,   3542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4941,    929,   1437}, 0, {  4056,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5350,    929,   1129}, 0, {  2012,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4941,    929,   1129}, 0, {  4056,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5350,    929,   1437}, 0, {  2012,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5658,    929,    413}, 0, {   480,   3542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5658,    827,    413}, 0, { -2584,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  5862,    827,    720}, 0, { -1052,   1500}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  5658,    827,    720}, 0, { -1052,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  5350,    827,    720}, 0, { -1052,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  5862,    827,   1437}, 0, {  2524,   1498}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  5350,    827,   1437}, 0, {  2524,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0700C958 - 0x0700C9D8\nstatic const Vtx ddd_seg7_vertex_0700C958[] = {\n    {{{  4941,    827,   1129}, 0, { -1052,  -3098}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  5350,    827,   1129}, 0, { -1052,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  5350,    827,   1437}, 0, {   480,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4941,    827,   1437}, 0, {   480,  -3098}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1254,    929,   1488}, 0, {  3544,   2520}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1971,    929,   1488}, 0, {  3544,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1971,    929,    361}, 0, { -2072,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1254,    929,    361}, 0, { -2072,   2522}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700C9D8 - 0x0700CA70\nstatic const Gfx ddd_seg7_dl_0700C9D8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_0900A000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ddd_seg7_lights_0700BB50.l, 1),\n    gsSPLight(&ddd_seg7_lights_0700BB50.a, 2),\n    gsSPVertex(ddd_seg7_vertex_0700BB68, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10, 11, 0x0, 11, 12,  7, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 13,  0,  2, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ddd_seg7_vertex_0700BC58, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700CA70 - 0x0700CC70\nstatic const Gfx ddd_seg7_dl_0700CA70[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ddd_seg7_texture_07001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ddd_seg7_vertex_0700BC98, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ddd_seg7_vertex_0700BD88, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ddd_seg7_vertex_0700BE78, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ddd_seg7_vertex_0700BF68, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ddd_seg7_vertex_0700C058, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ddd_seg7_vertex_0700C148, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ddd_seg7_vertex_0700C238, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ddd_seg7_vertex_0700C328, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  6,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700CC70 - 0x0700CE48\nstatic const Gfx ddd_seg7_dl_0700CC70[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ddd_seg7_vertex_0700C398, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ddd_seg7_vertex_0700C488, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ddd_seg7_vertex_0700C578, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ddd_seg7_vertex_0700C668, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 6, 10,  9, 0x0,  6,  8, 11, 0x0),\n    gsSP2Triangles( 2, 12,  0, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ddd_seg7_vertex_0700C768, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ddd_seg7_vertex_0700C858, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  8,  6, 0x0),\n    gsSP2Triangles( 3,  4,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(13, 11, 14, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ddd_seg7_vertex_0700C958, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700CE48 - 0x0700CEE0\nconst Gfx ddd_seg7_dl_0700CE48[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ddd_seg7_dl_0700C9D8),\n    gsSPDisplayList(ddd_seg7_dl_0700CA70),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ddd_seg7_dl_0700CC70),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ddd/areas/2/collision.inc.c",
    "content": "// 0x0700DE70 - 0x0700EEF2\nconst Collision ddd_seg7_area_2_collision[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x12D),\n    COL_VERTEX(-4095, -511, -511),\n    COL_VERTEX(-4300, -511, 512),\n    COL_VERTEX(-4095, -511, 512),\n    COL_VERTEX(-4300, -511, -511),\n    COL_VERTEX(-3890, -511, 512),\n    COL_VERTEX(-3890, -511, -511),\n    COL_VERTEX(4941, -3063, -6041),\n    COL_VERTEX(2893, -3063, -7167),\n    COL_VERTEX(2893, -3063, -6041),\n    COL_VERTEX(4941, -3063, -7167),\n    COL_VERTEX(1233, 110, 3463),\n    COL_VERTEX(2319, 110, 4549),\n    COL_VERTEX(2391, -196, 3752),\n    COL_VERTEX(2029, -196, 3390),\n    COL_VERTEX(5660, -196, 3535),\n    COL_VERTEX(5298, -196, 3897),\n    COL_VERTEX(6456, 110, 3608),\n    COL_VERTEX(5370, 110, 4694),\n    COL_VERTEX(3098, 1544, -2044),\n    COL_VERTEX(3098, 725, -2044),\n    COL_VERTEX(3917, 725, -2044),\n    COL_VERTEX(3098, 725, -2146),\n    COL_VERTEX(3917, 725, -2146),\n    COL_VERTEX(3917, 1544, -2044),\n    COL_VERTEX(3917, 1544, -2146),\n    COL_VERTEX(3098, 1544, -2146),\n    COL_VERTEX(5453, 725, -2146),\n    COL_VERTEX(5555, 725, -2454),\n    COL_VERTEX(5555, 725, -2044),\n    COL_VERTEX(4634, 725, -2044),\n    COL_VERTEX(5453, 1544, -2146),\n    COL_VERTEX(4634, 725, -2146),\n    COL_VERTEX(5453, 725, -2454),\n    COL_VERTEX(5453, 1544, -2454),\n    COL_VERTEX(5555, 1544, -2044),\n    COL_VERTEX(4634, 1544, -2044),\n    COL_VERTEX(4634, 1544, -2146),\n    COL_VERTEX(5555, 1544, -2454),\n    COL_VERTEX(1715, 929, -1279),\n    COL_VERTEX(1715, 929, -1842),\n    COL_VERTEX(1674, 827, -1279),\n    COL_VERTEX(1674, 827, -1883),\n    COL_VERTEX(2319, 827, -1883),\n    COL_VERTEX(2319, 929, -1279),\n    COL_VERTEX(2278, 929, -1279),\n    COL_VERTEX(2278, 929, -1842),\n    COL_VERTEX(1674, 1544, -1279),\n    COL_VERTEX(1674, 929, -1279),\n    COL_VERTEX(1715, 1544, -1279),\n    COL_VERTEX(1674, 1544, -1883),\n    COL_VERTEX(1715, 1544, -1842),\n    COL_VERTEX(2319, 1544, -1883),\n    COL_VERTEX(2319, 1544, -1279),\n    COL_VERTEX(2319, 827, -1279),\n    COL_VERTEX(2278, 1544, -1279),\n    COL_VERTEX(2278, 1544, -1842),\n    COL_VERTEX(6989, 110, -1020),\n    COL_VERTEX(6579, 110, -1020),\n    COL_VERTEX(6579, 110, 3485),\n    COL_VERTEX(6989, 110, 3485),\n    COL_VERTEX(6989, 110, 6659),\n    COL_VERTEX(3405, 110, 5635),\n    COL_VERTEX(845, 110, 6659),\n    COL_VERTEX(4429, 110, 5635),\n    COL_VERTEX(845, 110, 3075),\n    COL_VERTEX(1858, -3370, -2337),\n    COL_VERTEX(2438, -3370, -2916),\n    COL_VERTEX(1858, -4087, -2337),\n    COL_VERTEX(2438, -4087, -2916),\n    COL_VERTEX(1496, -3370, -2699),\n    COL_VERTEX(1496, -4087, -2699),\n    COL_VERTEX(2076, -3370, -3278),\n    COL_VERTEX(2076, -4087, -3278),\n    COL_VERTEX(3063, -3319, -682),\n    COL_VERTEX(6989, 110, 105),\n    COL_VERTEX(6579, 110, 105),\n    COL_VERTEX(6579, 520, 105),\n    COL_VERTEX(6989, 520, 208),\n    COL_VERTEX(6579, 520, -610),\n    COL_VERTEX(6579, 110, -610),\n    COL_VERTEX(6989, 110, -610),\n    COL_VERTEX(6989, 520, -508),\n    COL_VERTEX(1858, -4087, -2192),\n    COL_VERTEX(1424, -3268, -2626),\n    COL_VERTEX(2148, -4087, -3350),\n    COL_VERTEX(2583, -4087, -2916),\n    COL_VERTEX(1050, 110, 3280),\n    COL_VERTEX(1050, 110, 3485),\n    COL_VERTEX(6784, 110, 3587),\n    COL_VERTEX(6784, 110, 3382),\n    COL_VERTEX(6989, 110, 3792),\n    COL_VERTEX(2531, 110, 5492),\n    COL_VERTEX(2386, 110, 5348),\n    COL_VERTEX(2096, 110, 5348),\n    COL_VERTEX(3234, -3319, -170),\n    COL_VERTEX(3575, -3319, -170),\n    COL_VERTEX(3746, -3319, -340),\n    COL_VERTEX(3746, -3319, -682),\n    COL_VERTEX(3575, -3319, -852),\n    COL_VERTEX(3063, -3319, -340),\n    COL_VERTEX(3234, -3319, -852),\n    COL_VERTEX(6989, 520, 105),\n    COL_VERTEX(6579, 520, 208),\n    COL_VERTEX(6579, 110, 208),\n    COL_VERTEX(6989, 110, 208),\n    COL_VERTEX(6579, 520, -508),\n    COL_VERTEX(6989, 520, -610),\n    COL_VERTEX(6579, 110, -508),\n    COL_VERTEX(6989, 110, -508),\n    COL_VERTEX(1858, -3268, -2192),\n    COL_VERTEX(1424, -4087, -2626),\n    COL_VERTEX(2583, -3268, -2916),\n    COL_VERTEX(2148, -3268, -3350),\n    COL_VERTEX(1050, 1544, 3485),\n    COL_VERTEX(845, 1544, 3689),\n    COL_VERTEX(845, 110, 3689),\n    COL_VERTEX(1050, 1544, 3280),\n    COL_VERTEX(845, 1544, 3075),\n    COL_VERTEX(6784, 1544, 3382),\n    COL_VERTEX(6989, 1544, 3177),\n    COL_VERTEX(6989, 110, 3177),\n    COL_VERTEX(6784, 1544, 3587),\n    COL_VERTEX(6989, 1544, 3792),\n    COL_VERTEX(2531, 1544, 5492),\n    COL_VERTEX(2531, 1544, 5782),\n    COL_VERTEX(2531, 110, 5782),\n    COL_VERTEX(2386, 1544, 5348),\n    COL_VERTEX(2096, 1544, 5348),\n    COL_VERTEX(5350, 827, 1129),\n    COL_VERTEX(4941, 827, 1129),\n    COL_VERTEX(4941, 929, 1129),\n    COL_VERTEX(5350, 827, 1437),\n    COL_VERTEX(4941, 827, 1437),\n    COL_VERTEX(4941, 929, 1437),\n    COL_VERTEX(5862, 827, 1437),\n    COL_VERTEX(5350, 929, 1129),\n    COL_VERTEX(5658, 929, 720),\n    COL_VERTEX(5658, 827, 720),\n    COL_VERTEX(5350, 827, 720),\n    COL_VERTEX(5350, 929, 720),\n    COL_VERTEX(5862, 827, 720),\n    COL_VERTEX(5862, 929, 1437),\n    COL_VERTEX(5658, 827, 413),\n    COL_VERTEX(5862, 929, 413),\n    COL_VERTEX(5658, 929, 413),\n    COL_VERTEX(5862, 929, 720),\n    COL_VERTEX(5350, 929, 1437),\n    COL_VERTEX(3302, 776, 3741),\n    COL_VERTEX(2688, 878, 3741),\n    COL_VERTEX(3302, 878, 3741),\n    COL_VERTEX(3302, 878, 3433),\n    COL_VERTEX(2688, 878, 3433),\n    COL_VERTEX(5350, 878, 3075),\n    COL_VERTEX(5350, 878, 3382),\n    COL_VERTEX(4941, 776, 3792),\n    COL_VERTEX(5350, 776, 3382),\n    COL_VERTEX(5837, 878, 3792),\n    COL_VERTEX(4941, 878, 3792),\n    COL_VERTEX(4941, 878, 3382),\n    COL_VERTEX(5837, 878, 3075),\n    COL_VERTEX(6989, 1544, 6249),\n    COL_VERTEX(2381, 1544, 105),\n    COL_VERTEX(2893, 1544, -2454),\n    COL_VERTEX(2995, -3268, -306),\n    COL_VERTEX(3610, -3268, -101),\n    COL_VERTEX(3814, -3268, -716),\n    COL_VERTEX(3200, -3268, -921),\n    COL_VERTEX(-5017, 1229, 512),\n    COL_VERTEX(-3173, -2449, -511),\n    COL_VERTEX(2319, -401, 4549),\n    COL_VERTEX(2029, -298, 3390),\n    COL_VERTEX(845, -1015, 3075),\n    COL_VERTEX(2391, -298, 3752),\n    COL_VERTEX(3405, -1015, 5635),\n    COL_VERTEX(4429, -1015, 5635),\n    COL_VERTEX(845, -4087, 3075),\n    COL_VERTEX(6579, -606, -1020),\n    COL_VERTEX(6579, -606, 3485),\n    COL_VERTEX(6989, -4087, -2047),\n    COL_VERTEX(6989, -1015, 3075),\n    COL_VERTEX(6456, -401, 3608),\n    COL_VERTEX(5370, -401, 4694),\n    COL_VERTEX(4941, -1015, -4095),\n    COL_VERTEX(4941, 2568, -4095),\n    COL_VERTEX(6989, -1015, -2047),\n    COL_VERTEX(6989, 2568, -2047),\n    COL_VERTEX(6989, -1015, -1020),\n    COL_VERTEX(6989, 2568, 4096),\n    COL_VERTEX(845, -4087, -4095),\n    COL_VERTEX(6989, -4087, -4095),\n    COL_VERTEX(1357, -4087, 0),\n    COL_VERTEX(2483, -3626, -101),\n    COL_VERTEX(1664, -4087, -1228),\n    COL_VERTEX(2893, -4087, -3071),\n    COL_VERTEX(5026, -3626, -1156),\n    COL_VERTEX(3931, -3626, -1462),\n    COL_VERTEX(6989, -4087, 5632),\n    COL_VERTEX(6477, -4087, 1024),\n    COL_VERTEX(4429, -4087, 4096),\n    COL_VERTEX(4655, -3626, 710),\n    COL_VERTEX(1869, -4087, 2560),\n    COL_VERTEX(2845, -3626, 1072),\n    COL_VERTEX(845, -2756, -511),\n    COL_VERTEX(-5017, -511, 512),\n    COL_VERTEX(-5017, -511, -511),\n    COL_VERTEX(-5017, -4607, -511),\n    COL_VERTEX(-5017, -4607, 512),\n    COL_VERTEX(-6041, -4607, 512),\n    COL_VERTEX(-3173, 1229, 512),\n    COL_VERTEX(-2149, 205, 512),\n    COL_VERTEX(-3173, 1229, -511),\n    COL_VERTEX(-6041, 205, 512),\n    COL_VERTEX(-6041, -3583, -511),\n    COL_VERTEX(-6041, -3583, 205),\n    COL_VERTEX(-6041, -3890, -511),\n    COL_VERTEX(-6041, -4300, 512),\n    COL_VERTEX(-6041, -4607, -204),\n    COL_VERTEX(845, -1732, -511),\n    COL_VERTEX(845, -1732, 512),\n    COL_VERTEX(845, -2756, 512),\n    COL_VERTEX(4941, -4087, -4095),\n    COL_VERTEX(2893, -3063, -4095),\n    COL_VERTEX(845, -1015, -2047),\n    COL_VERTEX(845, 2568, 4096),\n    COL_VERTEX(845, 2568, -2047),\n    COL_VERTEX(2893, -1015, -4095),\n    COL_VERTEX(2893, 8, 6144),\n    COL_VERTEX(2893, 2568, 6144),\n    COL_VERTEX(845, -4087, -2047),\n    COL_VERTEX(3610, -3268, -921),\n    COL_VERTEX(3931, -3626, 1434),\n    COL_VERTEX(2995, -3268, -716),\n    COL_VERTEX(3207, -3626, -1462),\n    COL_VERTEX(5298, -298, 3897),\n    COL_VERTEX(5660, -298, 3535),\n    COL_VERTEX(4941, -1015, -7167),\n    COL_VERTEX(1971, 929, 1488),\n    COL_VERTEX(1971, 725, 1488),\n    COL_VERTEX(1971, 725, 361),\n    COL_VERTEX(1254, 929, 1488),\n    COL_VERTEX(1254, 725, 1488),\n    COL_VERTEX(1254, 929, 361),\n    COL_VERTEX(2319, 929, -1883),\n    COL_VERTEX(5862, 827, 413),\n    COL_VERTEX(2688, 776, 3741),\n    COL_VERTEX(2688, 776, 3433),\n    COL_VERTEX(3302, 776, 3433),\n    COL_VERTEX(5350, 776, 3075),\n    COL_VERTEX(4941, 776, 3382),\n    COL_VERTEX(5837, 776, 3075),\n    COL_VERTEX(5837, 776, 3792),\n    COL_VERTEX(845, 1544, 6249),\n    COL_VERTEX(845, 1544, 105),\n    COL_VERTEX(6989, 1544, 105),\n    COL_VERTEX(845, 1544, -2454),\n    COL_VERTEX(2381, 1544, -2454),\n    COL_VERTEX(5453, 1544, -1942),\n    COL_VERTEX(6989, 1544, -2454),\n    COL_VERTEX(5453, 1544, 105),\n    COL_VERTEX(2893, 1544, -1942),\n    COL_VERTEX(3200, -3268, -101),\n    COL_VERTEX(3814, -3268, -306),\n    COL_VERTEX(-3173, -511, 512),\n    COL_VERTEX(-3173, -511, -511),\n    COL_VERTEX(-3173, -2449, 512),\n    COL_VERTEX(-2149, 205, -511),\n    COL_VERTEX(-5017, 1229, -511),\n    COL_VERTEX(1233, -401, 3463),\n    COL_VERTEX(3405, -4087, 5635),\n    COL_VERTEX(4429, -4087, 5635),\n    COL_VERTEX(6989, -4087, 3075),\n    COL_VERTEX(2893, -4087, -4095),\n    COL_VERTEX(6989, 110, 4096),\n    COL_VERTEX(4941, 8, 6144),\n    COL_VERTEX(6989, 8, 4096),\n    COL_VERTEX(2893, 2568, -4095),\n    COL_VERTEX(4941, 2568, 6144),\n    COL_VERTEX(4941, -4087, -3583),\n    COL_VERTEX(845, -4087, 5632),\n    COL_VERTEX(2734, -3626, -776),\n    COL_VERTEX(6067, -4087, -1535),\n    COL_VERTEX(-2866, -2756, 512),\n    COL_VERTEX(-2866, -2756, -511),\n    COL_VERTEX(-6041, 205, -511),\n    COL_VERTEX(-6041, -4607, -511),\n    COL_VERTEX(-2149, -1732, 512),\n    COL_VERTEX(-3173, -2756, 512),\n    COL_VERTEX(-2149, -1732, -511),\n    COL_VERTEX(-6041, -3583, 512),\n    COL_VERTEX(-3173, -2756, -511),\n    COL_VERTEX(-6041, -3890, 512),\n    COL_VERTEX(-6041, -3583, -204),\n    COL_VERTEX(-6041, -4607, 205),\n    COL_VERTEX(-6041, -4300, -511),\n    COL_VERTEX(4941, -3063, -4095),\n    COL_VERTEX(2893, -1015, -7167),\n    COL_VERTEX(845, -1015, 4096),\n    COL_VERTEX(845, 8, 4096),\n    COL_VERTEX(1254, 725, 361),\n    COL_VERTEX(1971, 929, 361),\n    COL_VERTEX(1674, 929, -1883),\n    COL_TRI_INIT(SURFACE_DEFAULT, 279),\n    COL_TRI(138, 134, 131),\n    COL_TRI(128, 129, 130),\n    COL_TRI(129, 128, 131),\n    COL_TRI(129, 131, 132),\n    COL_TRI(130, 129, 132),\n    COL_TRI(133, 132, 134),\n    COL_TRI(130, 132, 133),\n    COL_TRI(128, 130, 135),\n    COL_TRI(136, 137, 138),\n    COL_TRI(136, 138, 139),\n    COL_TRI(138, 140, 134),\n    COL_TRI(146, 145, 139),\n    COL_TRI(141, 134, 243),\n    COL_TRI(133, 134, 141),\n    COL_TRI(142, 140, 137),\n    COL_TRI(142, 243, 140),\n    COL_TRI(143, 243, 142),\n    COL_TRI(143, 142, 144),\n    COL_TRI(144, 142, 137),\n    COL_TRI(144, 137, 136),\n    COL_TRI(141, 243, 143),\n    COL_TRI(136, 145, 143),\n    COL_TRI(136, 143, 144),\n    COL_TRI(146, 141, 145),\n    COL_TRI(152, 247, 155),\n    COL_TRI(133, 146, 135),\n    COL_TRI(133, 135, 130),\n    COL_TRI(147, 244, 245),\n    COL_TRI(147, 245, 246),\n    COL_TRI(148, 244, 147),\n    COL_TRI(148, 147, 149),\n    COL_TRI(149, 147, 246),\n    COL_TRI(150, 246, 245),\n    COL_TRI(150, 245, 151),\n    COL_TRI(151, 245, 244),\n    COL_TRI(149, 246, 150),\n    COL_TRI(151, 244, 148),\n    COL_TRI(150, 148, 149),\n    COL_TRI(150, 151, 148),\n    COL_TRI(152, 155, 153),\n    COL_TRI(153, 155, 248),\n    COL_TRI(154, 248, 155),\n    COL_TRI(155, 247, 249),\n    COL_TRI(155, 249, 250),\n    COL_TRI(156, 250, 249),\n    COL_TRI(157, 154, 250),\n    COL_TRI(157, 250, 156),\n    COL_TRI(155, 250, 154),\n    COL_TRI(158, 154, 157),\n    COL_TRI(158, 248, 154),\n    COL_TRI(156, 249, 159),\n    COL_TRI(159, 249, 247),\n    COL_TRI(159, 247, 152),\n    COL_TRI(153, 248, 158),\n    COL_TRI(153, 159, 152),\n    COL_TRI(153, 158, 157),\n    COL_TRI(153, 157, 156),\n    COL_TRI(153, 156, 159),\n    COL_TRI(139, 138, 128),\n    COL_TRI(33, 257, 253),\n    COL_TRI(139, 128, 135),\n    COL_TRI(160, 251, 252),\n    COL_TRI(160, 252, 253),\n    COL_TRI(161, 252, 254),\n    COL_TRI(161, 254, 255),\n    COL_TRI(162, 33, 256),\n    COL_TRI(33, 253, 258),\n    COL_TRI(162, 256, 259),\n    COL_TRI(163, 99, 73),\n    COL_TRI(163, 73, 231),\n    COL_TRI(163, 94, 99),\n    COL_TRI(163, 260, 94),\n    COL_TRI(94, 260, 164),\n    COL_TRI(94, 164, 95),\n    COL_TRI(164, 261, 96),\n    COL_TRI(95, 164, 96),\n    COL_TRI(165, 96, 261),\n    COL_TRI(97, 165, 229),\n    COL_TRI(165, 97, 96),\n    COL_TRI(97, 229, 98),\n    COL_TRI(166, 98, 229),\n    COL_TRI(166, 100, 98),\n    COL_TRI(166, 231, 73),\n    COL_TRI(166, 73, 100),\n    COL_TRI(4, 262, 263),\n    COL_TRI(4, 263, 5),\n    COL_TRI(167, 262, 203),\n    COL_TRI(167, 208, 262),\n    COL_TRI(3, 204, 203),\n    COL_TRI(3, 203, 1),\n    COL_TRI(169, 172, 11),\n    COL_TRI(170, 169, 267),\n    COL_TRI(170, 172, 169),\n    COL_TRI(169, 61, 173),\n    COL_TRI(169, 11, 61),\n    COL_TRI(171, 169, 173),\n    COL_TRI(171, 267, 169),\n    COL_TRI(172, 12, 11),\n    COL_TRI(13, 170, 267),\n    COL_TRI(63, 173, 61),\n    COL_TRI(173, 175, 171),\n    COL_TRI(173, 268, 175),\n    COL_TRI(63, 174, 173),\n    COL_TRI(174, 268, 173),\n    COL_TRI(64, 10, 267),\n    COL_TRI(171, 64, 267),\n    COL_TRI(10, 13, 267),\n    COL_TRI(178, 179, 184),\n    COL_TRI(175, 218, 171),\n    COL_TRI(171, 218, 222),\n    COL_TRI(176, 177, 58),\n    COL_TRI(177, 180, 58),\n    COL_TRI(177, 181, 180),\n    COL_TRI(177, 174, 181),\n    COL_TRI(177, 179, 174),\n    COL_TRI(178, 270, 179),\n    COL_TRI(234, 233, 14),\n    COL_TRI(179, 269, 174),\n    COL_TRI(174, 269, 268),\n    COL_TRI(174, 63, 181),\n    COL_TRI(63, 17, 181),\n    COL_TRI(17, 233, 181),\n    COL_TRI(17, 15, 233),\n    COL_TRI(180, 181, 234),\n    COL_TRI(181, 233, 234),\n    COL_TRI(180, 14, 16),\n    COL_TRI(180, 234, 14),\n    COL_TRI(180, 16, 58),\n    COL_TRI(233, 15, 14),\n    COL_TRI(56, 272, 187),\n    COL_TRI(182, 178, 184),\n    COL_TRI(183, 182, 184),\n    COL_TRI(183, 184, 185),\n    COL_TRI(184, 186, 56),\n    COL_TRI(185, 184, 56),\n    COL_TRI(186, 179, 177),\n    COL_TRI(186, 176, 56),\n    COL_TRI(186, 177, 176),\n    COL_TRI(176, 57, 56),\n    COL_TRI(185, 56, 187),\n    COL_TRI(192, 232, 193),\n    COL_TRI(187, 273, 276),\n    COL_TRI(187, 274, 273),\n    COL_TRI(188, 193, 277),\n    COL_TRI(188, 192, 193),\n    COL_TRI(189, 188, 277),\n    COL_TRI(190, 192, 188),\n    COL_TRI(190, 188, 278),\n    COL_TRI(191, 279, 192),\n    COL_TRI(190, 191, 192),\n    COL_TRI(192, 279, 232),\n    COL_TRI(193, 232, 195),\n    COL_TRI(193, 195, 277),\n    COL_TRI(194, 280, 277),\n    COL_TRI(195, 194, 277),\n    COL_TRI(189, 277, 280),\n    COL_TRI(196, 189, 197),\n    COL_TRI(189, 280, 197),\n    COL_TRI(194, 197, 280),\n    COL_TRI(194, 199, 197),\n    COL_TRI(197, 199, 198),\n    COL_TRI(196, 197, 198),\n    COL_TRI(198, 278, 196),\n    COL_TRI(199, 230, 198),\n    COL_TRI(198, 230, 201),\n    COL_TRI(198, 201, 200),\n    COL_TRI(198, 200, 278),\n    COL_TRI(203, 204, 205),\n    COL_TRI(200, 201, 190),\n    COL_TRI(201, 191, 190),\n    COL_TRI(200, 190, 278),\n    COL_TRI(168, 281, 282),\n    COL_TRI(168, 264, 281),\n    COL_TRI(202, 282, 281),\n    COL_TRI(202, 281, 219),\n    COL_TRI(203, 205, 206),\n    COL_TRI(167, 266, 210),\n    COL_TRI(204, 210, 266),\n    COL_TRI(204, 263, 210),\n    COL_TRI(205, 283, 284),\n    COL_TRI(205, 266, 283),\n    COL_TRI(206, 205, 284),\n    COL_TRI(207, 167, 206),\n    COL_TRI(206, 284, 207),\n    COL_TRI(208, 265, 209),\n    COL_TRI(208, 210, 265),\n    COL_TRI(167, 210, 208),\n    COL_TRI(212, 283, 211),\n    COL_TRI(209, 265, 287),\n    COL_TRI(210, 287, 265),\n    COL_TRI(209, 285, 286),\n    COL_TRI(209, 287, 285),\n    COL_TRI(209, 286, 208),\n    COL_TRI(211, 266, 167),\n    COL_TRI(211, 283, 266),\n    COL_TRI(207, 211, 167),\n    COL_TRI(216, 284, 293),\n    COL_TRI(212, 211, 288),\n    COL_TRI(213, 288, 290),\n    COL_TRI(214, 212, 291),\n    COL_TRI(215, 207, 292),\n    COL_TRI(218, 285, 287),\n    COL_TRI(168, 263, 262),\n    COL_TRI(217, 287, 289),\n    COL_TRI(217, 289, 202),\n    COL_TRI(218, 287, 217),\n    COL_TRI(219, 285, 218),\n    COL_TRI(219, 286, 285),\n    COL_TRI(210, 289, 287),\n    COL_TRI(168, 262, 264),\n    COL_TRI(13, 172, 170),\n    COL_TRI(13, 12, 172),\n    COL_TRI(220, 221, 271),\n    COL_TRI(220, 294, 221),\n    COL_TRI(179, 270, 269),\n    COL_TRI(6, 221, 294),\n    COL_TRI(6, 8, 221),\n    COL_TRI(221, 295, 225),\n    COL_TRI(221, 7, 295),\n    COL_TRI(182, 275, 225),\n    COL_TRI(182, 183, 275),\n    COL_TRI(182, 220, 178),\n    COL_TRI(225, 295, 235),\n    COL_TRI(218, 217, 222),\n    COL_TRI(222, 271, 225),\n    COL_TRI(222, 228, 271),\n    COL_TRI(222, 217, 202),\n    COL_TRI(222, 202, 228),\n    COL_TRI(223, 296, 222),\n    COL_TRI(223, 222, 224),\n    COL_TRI(224, 222, 225),\n    COL_TRI(224, 225, 275),\n    COL_TRI(225, 235, 182),\n    COL_TRI(226, 227, 276),\n    COL_TRI(226, 276, 273),\n    COL_TRI(227, 297, 223),\n    COL_TRI(227, 226, 297),\n    COL_TRI(228, 202, 219),\n    COL_TRI(228, 219, 175),\n    COL_TRI(175, 219, 218),\n    COL_TRI(165, 261, 199),\n    COL_TRI(194, 165, 199),\n    COL_TRI(165, 194, 195),\n    COL_TRI(199, 261, 164),\n    COL_TRI(199, 164, 230),\n    COL_TRI(164, 260, 201),\n    COL_TRI(230, 164, 201),\n    COL_TRI(201, 260, 163),\n    COL_TRI(201, 163, 191),\n    COL_TRI(191, 163, 231),\n    COL_TRI(191, 231, 279),\n    COL_TRI(182, 235, 9),\n    COL_TRI(231, 166, 232),\n    COL_TRI(231, 232, 279),\n    COL_TRI(166, 229, 195),\n    COL_TRI(232, 166, 195),\n    COL_TRI(229, 165, 195),\n    COL_TRI(176, 58, 57),\n    COL_TRI(235, 295, 7),\n    COL_TRI(235, 7, 9),\n    COL_TRI(238, 236, 237),\n    COL_TRI(182, 9, 294),\n    COL_TRI(236, 239, 240),\n    COL_TRI(236, 240, 237),\n    COL_TRI(237, 240, 298),\n    COL_TRI(237, 298, 238),\n    COL_TRI(238, 299, 236),\n    COL_TRI(242, 47, 43),\n    COL_TRI(239, 236, 299),\n    COL_TRI(239, 299, 241),\n    COL_TRI(240, 239, 241),\n    COL_TRI(240, 241, 298),\n    COL_TRI(241, 299, 238),\n    COL_TRI(241, 238, 298),\n    COL_TRI(53, 40, 41),\n    COL_TRI(47, 40, 53),\n    COL_TRI(242, 300, 47),\n    COL_TRI(47, 53, 43),\n    COL_TRI(53, 41, 42),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 4),\n    COL_TRI(10, 11, 12),\n    COL_TRI(10, 12, 13),\n    COL_TRI(14, 15, 16),\n    COL_TRI(15, 17, 16),\n    COL_TRI_INIT(SURFACE_INSTANT_WARP_1D, 2),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI_INIT(SURFACE_INSTANT_WARP_1E, 2),\n    COL_TRI(2, 4, 5),\n    COL_TRI(2, 5, 0),\n    COL_TRI_INIT(SURFACE_NOISE_DEFAULT, 7),\n    COL_TRI(61, 64, 62),\n    COL_TRI(56, 57, 58),\n    COL_TRI(59, 56, 58),\n    COL_TRI(60, 59, 58),\n    COL_TRI(61, 62, 60),\n    COL_TRI(60, 63, 61),\n    COL_TRI(60, 58, 63),\n    COL_TRI_INIT(SURFACE_WARP, 2),\n    COL_TRI(6, 7, 8),\n    COL_TRI(6, 9, 7),\n    COL_TRI_INIT(SURFACE_NO_CAM_COLLISION, 42),\n    COL_TRI(26, 32, 27),\n    COL_TRI(18, 19, 20),\n    COL_TRI(20, 19, 21),\n    COL_TRI(20, 21, 22),\n    COL_TRI(23, 20, 22),\n    COL_TRI(18, 20, 23),\n    COL_TRI(24, 22, 21),\n    COL_TRI(24, 21, 25),\n    COL_TRI(25, 21, 19),\n    COL_TRI(23, 22, 24),\n    COL_TRI(25, 19, 18),\n    COL_TRI(26, 27, 28),\n    COL_TRI(26, 28, 29),\n    COL_TRI(30, 26, 31),\n    COL_TRI(29, 31, 26),\n    COL_TRI(34, 28, 27),\n    COL_TRI(35, 28, 34),\n    COL_TRI(35, 29, 28),\n    COL_TRI(36, 29, 35),\n    COL_TRI(36, 31, 29),\n    COL_TRI(37, 27, 32),\n    COL_TRI(34, 27, 37),\n    COL_TRI(33, 32, 26),\n    COL_TRI(37, 32, 33),\n    COL_TRI(30, 31, 36),\n    COL_TRI(33, 26, 30),\n    COL_TRI(38, 46, 47),\n    COL_TRI(38, 48, 46),\n    COL_TRI(40, 46, 49),\n    COL_TRI(39, 48, 38),\n    COL_TRI(39, 50, 48),\n    COL_TRI(40, 49, 41),\n    COL_TRI(41, 49, 51),\n    COL_TRI(41, 51, 42),\n    COL_TRI(42, 51, 52),\n    COL_TRI(42, 52, 53),\n    COL_TRI(43, 52, 54),\n    COL_TRI(45, 50, 39),\n    COL_TRI(43, 54, 44),\n    COL_TRI(44, 54, 55),\n    COL_TRI(44, 55, 45),\n    COL_TRI(45, 55, 50),\n    COL_TRI_INIT(SURFACE_VANISH_CAP_WALLS, 56),\n    COL_TRI(65, 66, 67),\n    COL_TRI(66, 68, 67),\n    COL_TRI(67, 69, 65),\n    COL_TRI(67, 70, 69),\n    COL_TRI(65, 69, 71),\n    COL_TRI(65, 71, 66),\n    COL_TRI(66, 71, 72),\n    COL_TRI(66, 72, 68),\n    COL_TRI(76, 77, 101),\n    COL_TRI(73, 94, 95),\n    COL_TRI(73, 95, 96),\n    COL_TRI(73, 96, 97),\n    COL_TRI(73, 97, 98),\n    COL_TRI(73, 99, 94),\n    COL_TRI(73, 98, 100),\n    COL_TRI(74, 75, 76),\n    COL_TRI(74, 76, 101),\n    COL_TRI(75, 102, 76),\n    COL_TRI(76, 102, 77),\n    COL_TRI(79, 107, 105),\n    COL_TRI(75, 103, 102),\n    COL_TRI(77, 103, 104),\n    COL_TRI(77, 102, 103),\n    COL_TRI(78, 105, 81),\n    COL_TRI(78, 81, 106),\n    COL_TRI(79, 105, 78),\n    COL_TRI(80, 79, 78),\n    COL_TRI(80, 78, 106),\n    COL_TRI(81, 105, 107),\n    COL_TRI(81, 107, 108),\n    COL_TRI(87, 113, 114),\n    COL_TRI(82, 109, 83),\n    COL_TRI(82, 83, 110),\n    COL_TRI(83, 109, 111),\n    COL_TRI(83, 111, 112),\n    COL_TRI(84, 112, 111),\n    COL_TRI(84, 111, 85),\n    COL_TRI(85, 111, 109),\n    COL_TRI(85, 109, 82),\n    COL_TRI(86, 113, 87),\n    COL_TRI(87, 114, 115),\n    COL_TRI(90, 122, 121),\n    COL_TRI(86, 116, 113),\n    COL_TRI(64, 116, 86),\n    COL_TRI(64, 117, 116),\n    COL_TRI(88, 118, 89),\n    COL_TRI(89, 118, 119),\n    COL_TRI(89, 119, 120),\n    COL_TRI(88, 121, 118),\n    COL_TRI(90, 121, 88),\n    COL_TRI(91, 123, 124),\n    COL_TRI(91, 124, 125),\n    COL_TRI(92, 123, 91),\n    COL_TRI(92, 126, 123),\n    COL_TRI(93, 126, 92),\n    COL_TRI(93, 127, 126),\n    COL_TRI_STOP(),\n    COL_WATER_BOX_INIT(1),\n    COL_WATER_BOX(0, -6143, -7167,  8192,  7168, 0),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/ddd/areas/2/geo.inc.c",
    "content": "// 0x0E000570\nconst GeoLayout ddd_geo_000570[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND_COLOR(0x0001),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 12800, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(4, 0, 2000, 6000, 2560, 0, 512, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, ddd_seg7_dl_07007408),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, ddd_seg7_dl_07007CB8),\n                    GEO_DISPLAY_LIST(LAYER_ALPHA, ddd_seg7_dl_07008C48),\n                    GEO_DISPLAY_LIST(LAYER_TRANSPARENT, ddd_seg7_dl_07008F80),\n                    GEO_DISPLAY_LIST(LAYER_ALPHA, ddd_seg7_dl_0700BAE0),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, ddd_seg7_dl_0700CE48),\n                    GEO_ASM(   0, geo_movtex_pause_control),\n                    GEO_ASM(0x2302, geo_movtex_draw_water_regions),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(  14, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ddd/areas/2/macro.inc.c",
    "content": "// 0x0700EFAC - 0x0700F17A\nconst MacroObject ddd_seg7_area_2_macro_objs[] = {\n    MACRO_OBJECT               (/*preset*/ macro_box_metal_cap,               /*yaw*/   0, /*pos*/  6800,   500,  -850),\n    MACRO_OBJECT               (/*preset*/ macro_box_vanish_cap,              /*yaw*/   0, /*pos*/  6800,   500,  -150),\n    MACRO_OBJECT               (/*preset*/ macro_floor_switch_hidden_objects, /*yaw*/   0, /*pos*/  6800,   110,  2000),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/  6075,  -100,  2000),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/  5875,   100,  2000),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/  5675,   100,  2000),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/  5475,   300,  2000),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/  5275,   300,  2000),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/  5075,   500,  2000),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/  4875,   500,  2000),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/  6275,  -100,  2000),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/  6475,  -100,  2000),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  4680,  1155, -2200),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  3525,  1155, -2250),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  3850,  1111,  3550),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  4400,  1288,  3595),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  2974,  1015,  3584),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  5550,  1015,  3575),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  3300,  1111, -1900),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  2100,  1025, -1600),\n    MACRO_OBJECT               (/*preset*/ macro_fish_spawner_few_blue,       /*yaw*/   0, /*pos*/  2061, -3323,  2246),\n    MACRO_OBJECT               (/*preset*/ macro_fish_spawner_few_cyan,       /*yaw*/   0, /*pos*/  5661, -2923, -1415),\n    MACRO_OBJECT               (/*preset*/ macro_clam_shell,                  /*yaw*/  90, /*pos*/  1273, -4106,  2320),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/ 180, /*pos*/  3086,   110,  6120, /*bhvParam*/ DIALOG_053),\n    MACRO_OBJECT               (/*preset*/ macro_seaweed_bundle,              /*yaw*/   0, /*pos*/  6420, -4106, -2026),\n    MACRO_OBJECT               (/*preset*/ macro_seaweed_bundle,              /*yaw*/   0, /*pos*/  6340, -4106, -1413),\n    MACRO_OBJECT               (/*preset*/ macro_clam_shell,                  /*yaw*/ 135, /*pos*/  1966, -4106,  3226),\n    MACRO_OBJECT               (/*preset*/ macro_clam_shell,                  /*yaw*/ 180, /*pos*/  3886, -4006,  5130),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/  5740,   710,  3900),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/  5740,   510,  4100),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/  5740,   310,  4300),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/  5740,   110,  4500),\n    MACRO_OBJECT               (/*preset*/ macro_seaweed_bundle,              /*yaw*/   0, /*pos*/  2999, -4092,  4430),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_horizontal,        /*yaw*/   0, /*pos*/  4876, -4087,  4430),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_vertical_flying,   /*yaw*/   0, /*pos*/  3892, -4030, -3830),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,        /*yaw*/  90, /*pos*/  3923,   110,  5953),\n    MACRO_OBJECT               (/*preset*/ macro_fire_spitter,                /*yaw*/   0, /*pos*/   938,   153,  4107),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/  5940,   110,  4500),\n    MACRO_OBJECT               (/*preset*/ macro_blue_coin_switch,            /*yaw*/   0, /*pos*/  1614,   928,   922),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/  1414,  1020,   622),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/  1814,  1020,   622),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/  1814,  1020,  1222),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/  1414,  1020,  1222),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/  1414,  1020,   922),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/  1814,  1020,   922),\n    MACRO_OBJECT               (/*preset*/ macro_koopa_shell_underwater,      /*yaw*/   0, /*pos*/  3886, -4050,  5100),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/ddd/areas/2/movtext.inc.c",
    "content": "// 0x0700FCC4\nstatic Movtex ddd_movtex_area2_water_data[] = {\n    MOV_TEX_INIT_LOAD(    2),\n    MOV_TEX_ROT_SPEED(   20), // area 2 general water\n    MOV_TEX_ROT_SPEED(   20),\n    MOV_TEX_4_BOX_TRIS(    0, -5119),\n    MOV_TEX_4_BOX_TRIS(    0,  7168),\n    MOV_TEX_4_BOX_TRIS( 8192,  7168),\n    MOV_TEX_4_BOX_TRIS( 8192, -5119),\n    MOV_TEX_ROT(     ROTATE_CLOCKWISE),\n    MOV_TEX_ALPHA(    0xA0),\n    MOV_TEX_DEFINE(  TEXTURE_WATER),\n    MOV_TEX_END(),\n    MOV_TEX_ROT_SPEED(    0), // entrance to area 1 water\n    MOV_TEX_ROT_SPEED(    5),\n    MOV_TEX_4_BOX_TRIS(-6144,  -768),\n    MOV_TEX_4_BOX_TRIS(-6144,   768),\n    MOV_TEX_4_BOX_TRIS(-2048,   768),\n    MOV_TEX_4_BOX_TRIS(-2048,  -768),\n    MOV_TEX_ROT(     ROTATE_CLOCKWISE),\n    MOV_TEX_ALPHA(    0xA0),\n    MOV_TEX_DEFINE(  TEXTURE_WATER),\n    MOV_TEX_END(),\n};\n\n// 0x0700FD00\nconst struct MovtexQuadCollection ddd_movtex_area2_water[] = {\n    {0, ddd_movtex_area2_water_data},\n    {-1, NULL},\n};\n"
  },
  {
    "path": "levels/ddd/geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"game/level_geo.h\"\n#include \"game/geo_misc.h\"\n#include \"game/camera.h\"\n#include \"game/moving_texture.h\"\n#include \"game/screen_transition.h\"\n#include \"game/paintings.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"levels/ddd/header.h\"\n\n#include \"levels/ddd/pole/geo.inc.c\"\n#include \"levels/ddd/sub_door/geo.inc.c\"\n#include \"levels/ddd/submarine/geo.inc.c\"\n#include \"levels/ddd/areas/1/geo.inc.c\"\n#include \"levels/ddd/areas/2/geo.inc.c\"\n"
  },
  {
    "path": "levels/ddd/header.h",
    "content": "#ifndef DDD_HEADER_H\n#define DDD_HEADER_H\n\n#include \"types.h\"\n#include \"game/moving_texture.h\"\n\n// geo\nextern const GeoLayout ddd_geo_000450[];\nextern const GeoLayout ddd_geo_000478[];\nextern const GeoLayout ddd_geo_0004A0[];\nextern const GeoLayout ddd_geo_0004C0[];\nextern const GeoLayout ddd_geo_000570[];\n\n// leveldata\nextern const Gfx ddd_seg7_dl_07004D48[];\nextern const Gfx ddd_seg7_dl_070057E8[];\nextern const Gfx ddd_seg7_dl_07005C40[];\nextern const Gfx ddd_seg7_dl_07005F78[];\nextern const Gfx ddd_seg7_dl_07007408[];\nextern const Gfx ddd_seg7_dl_07007CB8[];\nextern const Gfx ddd_seg7_dl_07008C48[];\nextern const Gfx ddd_seg7_dl_07008F80[];\nextern const Gfx ddd_seg7_dl_07009030[];\nextern const Gfx ddd_seg7_dl_07009120[];\nextern const Gfx ddd_seg7_dl_07009208[];\nextern const Gfx ddd_seg7_dl_0700AF10[];\nextern const Gfx ddd_seg7_dl_0700B068[];\nextern const Gfx ddd_seg7_dl_0700BAE0[];\nextern const Gfx ddd_seg7_dl_0700CE48[];\nextern const Gfx ddd_seg7_dl_0700D2A0[];\nextern const Collision ddd_seg7_area_1_collision[];\nextern const Collision ddd_seg7_area_2_collision[];\nextern const MacroObject ddd_seg7_area_1_macro_objs[];\nextern const MacroObject ddd_seg7_area_2_macro_objs[];\nextern const Collision ddd_seg7_collision_submarine[];\nextern const Collision ddd_seg7_collision_bowser_sub_door[];\nextern const struct MovtexQuadCollection ddd_movtex_area1_water[];\nextern const struct MovtexQuadCollection ddd_movtex_area2_water[];\n\n// script\nextern const LevelScript level_ddd_entry[];\n\n#endif\n"
  },
  {
    "path": "levels/ddd/level.yaml",
    "content": "# Dire Dire Docks\nshort-name: ddd\nfull-name: Dire Dire Docks\ntexture-file: [\"/texture.inc.c\"]\narea-count: 2\nobjects: [pole, sub_door, submarine]\nshared-path: []\n# loaded files\nskybox-bin: water\ntexture-bin: water\neffects: true\nactor-bins: [group4, group13]\ncommon-bin: [common0]\n"
  },
  {
    "path": "levels/ddd/leveldata.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"surface_terrains.h\"\n#include \"moving_texture_macros.h\"\n#include \"level_misc_macros.h\"\n#include \"macro_presets.h\"\n#include \"special_presets.h\"\n#include \"textures.h\"\n#include \"dialog_ids.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/ddd/texture.inc.c\"\n#include \"levels/ddd/areas/1/1/model.inc.c\"\n#include \"levels/ddd/areas/1/2/model.inc.c\"\n#include \"levels/ddd/areas/1/3/model.inc.c\"\n#include \"levels/ddd/areas/1/4/model.inc.c\"\n#include \"levels/ddd/areas/2/1/model.inc.c\"\n#include \"levels/ddd/areas/2/2/model.inc.c\"\n#include \"levels/ddd/areas/2/3/model.inc.c\"\n#include \"levels/ddd/areas/2/4/model.inc.c\"\n#include \"levels/ddd/sub_door/1.inc.c\"\n#include \"levels/ddd/sub_door/2.inc.c\"\n#include \"levels/ddd/sub_door/3.inc.c\"\n#include \"levels/ddd/submarine/1.inc.c\"\n#include \"levels/ddd/submarine/2.inc.c\"\n#include \"levels/ddd/areas/2/5/model.inc.c\"\n#include \"levels/ddd/areas/2/6/model.inc.c\"\n#include \"levels/ddd/pole/model.inc.c\"\n#include \"levels/ddd/areas/1/collision.inc.c\"\n#include \"levels/ddd/areas/2/collision.inc.c\"\n#include \"levels/ddd/areas/1/macro.inc.c\"\n#include \"levels/ddd/areas/2/macro.inc.c\"\n#include \"levels/ddd/submarine/collision.inc.c\"\n#include \"levels/ddd/sub_door/collision.inc.c\"\n#include \"levels/ddd/areas/1/movtext.inc.c\"\n#include \"levels/ddd/areas/2/movtext.inc.c\"\n"
  },
  {
    "path": "levels/ddd/pole/geo.inc.c",
    "content": "// 0x0E000450\nconst GeoLayout ddd_geo_000450[] = {\n    GEO_CULLING_RADIUS(700),\n    GEO_OPEN_NODE(),\n        GEO_SHADOW(SHADOW_SQUARE_PERMANENT, 0xB4, 120),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, ddd_seg7_dl_0700D2A0),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ddd/pole/model.inc.c",
    "content": "// 0x0700CEE0 - 0x0700CEF8\nstatic const Lights1 ddd_seg7_lights_0700CEE0 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700CEF8 - 0x0700CFE8\nstatic const Vtx ddd_seg7_vertex_0700CEF8[] = {\n    {{{    13,    512,    -12}, 0, {   352,     16}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    13,      0,    -12}, 0, {   352,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -12,      0,    -12}, 0, {   606,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    77,    512,     77}, 0, {  1118,     16}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -76,    512,    -76}, 0, {   606,     16}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    77,    512,    -76}, 0, {   352,     16}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -76,    512,     77}, 0, {   862,     16}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -76,    538,     77}, 0, {   862,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    77,    512,     77}, 0, {  1118,     16}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    77,    538,     77}, 0, {  1118,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -76,    512,     77}, 0, {   862,     16}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -76,    538,    -76}, 0, {   606,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -76,    512,    -76}, 0, {   606,     16}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -76,    512,     77}, 0, {   862,     16}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -76,    538,     77}, 0, {   862,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700CFE8 - 0x0700D0C8\nstatic const Vtx ddd_seg7_vertex_0700CFE8[] = {\n    {{{    77,    538,    -76}, 0, {   352,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -76,    512,    -76}, 0, {   606,     16}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -76,    538,    -76}, 0, {   606,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    77,    512,    -76}, 0, {   352,     16}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    77,    538,     77}, 0, {    96,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    77,    512,    -76}, 0, {   352,     16}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    77,    538,    -76}, 0, {   352,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    77,    512,     77}, 0, {    96,     16}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    13,    512,    -12}, 0, {   352,     16}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -12,      0,    -12}, 0, {   606,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -12,    512,    -12}, 0, {   606,     16}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    13,    512,     13}, 0, {    96,     16}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    13,      0,    -12}, 0, {   352,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    13,    512,    -12}, 0, {   352,     16}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700D0C8 - 0x0700D1B8\nstatic const Vtx ddd_seg7_vertex_0700D0C8[] = {\n    {{{   -12,    512,     13}, 0, {   862,     16}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    13,      0,     13}, 0, {  1118,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    13,    512,     13}, 0, {  1118,     16}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    13,      0,     13}, 0, {  1118,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -12,      0,    -12}, 0, {   606,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    13,      0,    -12}, 0, {   352,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    13,    512,     13}, 0, {    96,     16}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    13,      0,     13}, 0, {    96,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    13,      0,    -12}, 0, {   352,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -12,    512,    -12}, 0, {   606,     16}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -12,      0,    -12}, 0, {   606,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -12,      0,     13}, 0, {   862,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -12,      0,     13}, 0, {   862,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -12,    512,     13}, 0, {   862,     16}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -12,      0,     13}, 0, {   862,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0700D1B8 - 0x0700D2A0\nstatic const Gfx ddd_seg7_dl_0700D1B8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ddd_seg7_texture_07003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ddd_seg7_lights_0700CEE0.l, 1),\n    gsSPLight(&ddd_seg7_lights_0700CEE0.a, 2),\n    gsSPVertex(ddd_seg7_vertex_0700CEF8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ddd_seg7_vertex_0700CFE8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ddd_seg7_vertex_0700D0C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 3, 12,  4, 0x0,  9, 11, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700D2A0 - 0x0700D310\nconst Gfx ddd_seg7_dl_0700D2A0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ddd_seg7_dl_0700D1B8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ddd/script.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"behavior_data.h\"\n#include \"model_ids.h\"\n#include \"seq_ids.h\"\n#include \"segment_symbols.h\"\n#include \"level_commands.h\"\n\n#include \"game/level_update.h\"\n\n#include \"levels/scripts.h\"\n\n#include \"actors/common1.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/ddd/header.h\"\n\nstatic const LevelScript script_func_local_1[] = {\n    OBJECT(/*model*/ MODEL_SUSHI,        /*pos*/ -3071,  -270,   0, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvSushiShark),\n    OBJECT(/*model*/ MODEL_SUSHI,        /*pos*/ -3071, -4270,   0, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvSushiShark),\n    OBJECT(/*model*/ MODEL_NONE,         /*pos*/ -3071,  -130,   0, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFewBlueFishSpawner),\n    OBJECT(/*model*/ MODEL_NONE,         /*pos*/ -3071, -4270,   0, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvManyBlueFishSpawner),\n    OBJECT(/*model*/ MODEL_NONE,         /*pos*/ -3071, -2000,   0, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvChirpChirp),\n    OBJECT(/*model*/ MODEL_NONE,         /*pos*/ -3071, -3000,   0, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvChirpChirp),\n    OBJECT(/*model*/ MODEL_DL_WHIRLPOOL, /*pos*/ -3174, -4915, 102, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvWhirlpool),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_2[] = {\n    OBJECT_WITH_ACTS(/*model*/ MODEL_NONE,      /*pos*/ -2400, -4607, 125, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_2), /*bhv*/ bhvTreasureChestsDDD, /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_MANTA_RAY, /*pos*/ -4640, -1380,  40, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_5), /*bhv*/ bhvMantaRay,          /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_3[] = {\n    OBJECT(/*model*/ MODEL_DDD_BOWSER_SUB_DOOR, /*pos*/    0,    0,     0, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvBowserSubDoor),\n    OBJECT(/*model*/ MODEL_DDD_BOWSER_SUB,      /*pos*/    0,    0,     0, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvBowsersSub),\n    OBJECT(/*model*/ MODEL_DDD_POLE,            /*pos*/ 5120, 1005,  3584, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(0x1E), /*bhv*/ bhvDDDPole),\n    OBJECT(/*model*/ MODEL_DDD_POLE,            /*pos*/ 5605, 1005,  3380, /*angle*/ 0, 270, 0, /*bhvParam*/ BPARAM2(0x15), /*bhv*/ bhvDDDPole),\n    OBJECT(/*model*/ MODEL_DDD_POLE,            /*pos*/ 1800, 1005,  1275, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(0x0B), /*bhv*/ bhvDDDPole),\n    OBJECT(/*model*/ MODEL_DDD_POLE,            /*pos*/ 4000, 1005,  1075, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(0x0B), /*bhv*/ bhvDDDPole),\n    OBJECT(/*model*/ MODEL_DDD_POLE,            /*pos*/ 1830, 1005,   520, /*angle*/ 0, 270, 0, /*bhvParam*/ BPARAM2(0x14), /*bhv*/ bhvDDDPole),\n    OBJECT(/*model*/ MODEL_DDD_POLE,            /*pos*/ 4000, 1005,  1275, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(0x0B), /*bhv*/ bhvDDDPole),\n    OBJECT(/*model*/ MODEL_DDD_POLE,            /*pos*/ 5760, 1005,   360, /*angle*/ 0, 270, 0, /*bhvParam*/ BPARAM2(0x17), /*bhv*/ bhvDDDPole),\n    OBJECT(/*model*/ MODEL_DDD_POLE,            /*pos*/ 3310, 1005, -1945, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(0x17), /*bhv*/ bhvDDDPole),\n    OBJECT(/*model*/ MODEL_DDD_POLE,            /*pos*/ 3550, 1005, -2250, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(0x0D), /*bhv*/ bhvDDDPole),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_4[] = {\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ 3404, -3319, -489, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvJetStream),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_5[] = {\n    OBJECT_WITH_ACTS(/*model*/ MODEL_STAR, /*pos*/ 3900,   850,  -600, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_1), /*bhv*/ bhvStar,                    /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_NONE, /*pos*/ 5513,  1200,   900, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_3), /*bhv*/ bhvHiddenRedCoinStar,    /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_NONE, /*pos*/ 3404, -3319,  -489, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_4), /*bhv*/ bhvJetStreamRingSpawner, /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_STAR, /*pos*/ 2030, -3700, -2780, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_6), /*bhv*/ bhvStar,                    /*acts*/ ALL_ACTS),\n    RETURN(),\n};\n\nconst LevelScript level_ddd_entry[] = {\n    INIT_LEVEL(),\n    LOAD_MIO0        (/*seg*/ 0x07, _ddd_segment_7SegmentRomStart, _ddd_segment_7SegmentRomEnd),\n    LOAD_MIO0_TEXTURE(/*seg*/ 0x09, _water_mio0SegmentRomStart, _water_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x0B, _effect_mio0SegmentRomStart, _effect_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x0A, _water_skybox_mio0SegmentRomStart, _water_skybox_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x05, _group4_mio0SegmentRomStart, _group4_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0C, _group4_geoSegmentRomStart,  _group4_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x06, _group13_mio0SegmentRomStart, _group13_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0D, _group13_geoSegmentRomStart,  _group13_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x08, _common0_mio0SegmentRomStart, _common0_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0F, _common0_geoSegmentRomStart,  _common0_geoSegmentRomEnd),\n    ALLOC_LEVEL_POOL(),\n    MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),\n    JUMP_LINK(script_func_global_1),\n    JUMP_LINK(script_func_global_5),\n    JUMP_LINK(script_func_global_14),\n    LOAD_MODEL_FROM_GEO(MODEL_DDD_BOWSER_SUB_DOOR, ddd_geo_000478),\n    LOAD_MODEL_FROM_GEO(MODEL_DDD_BOWSER_SUB,      ddd_geo_0004A0),\n    LOAD_MODEL_FROM_GEO(MODEL_DDD_POLE,            ddd_geo_000450),\n\n    AREA(/*index*/ 1, ddd_geo_0004C0),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ -3071, 3000, 0, /*angle*/ 0, 7, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvSpinAirborneWarp),\n        WARP_NODE(/*id*/ WARP_NODE_0A,      /*destLevel*/ LEVEL_DDD,    /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_SUCCESS, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 3, /*destNode*/ WARP_NODE_35, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH,   /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 3, /*destNode*/ WARP_NODE_67, /*flags*/ WARP_NO_CHECKPOINT),\n        WHIRLPOOL(/*unk2*/ 0, /*unk3*/ 0, /*pos*/ -3174, -4915, 102, /*strength*/ 20),\n        JUMP_LINK(script_func_local_1),\n        JUMP_LINK(script_func_local_2),\n        INSTANT_WARP(/*index*/ 3, /*destArea*/ 2, /*displace*/ -8192, 0, 0),\n        TERRAIN(/*terrainData*/ ddd_seg7_area_1_collision),\n        MACRO_OBJECTS(/*objList*/ ddd_seg7_area_1_macro_objs),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0003, /*seq*/ SEQ_LEVEL_WATER),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_WATER),\n    END_AREA(),\n\n    AREA(/*index*/ 2, ddd_geo_000570),\n        WHIRLPOOL(/*unk2*/ 0, /*unk3*/ 0, /*pos*/ 3355, -3575, -515, /*strength*/ -30),\n        WHIRLPOOL(/*unk2*/ 1, /*unk3*/ 2, /*pos*/ 3917, -2040, -6041, /*strength*/ 50),\n        WARP_NODE(/*id*/ WARP_NODE_SUCCESS,    /*destLevel*/ LEVEL_CASTLE,         /*destArea*/ 3, /*destNode*/ WARP_NODE_35, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH,      /*destLevel*/ LEVEL_CASTLE,         /*destArea*/ 3, /*destNode*/ WARP_NODE_67, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_WARP_FLOOR, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 1, /*destNode*/ WARP_NODE_1E, /*flags*/ WARP_NO_CHECKPOINT),\n        JUMP_LINK(script_func_local_3),\n        JUMP_LINK(script_func_local_4),\n        JUMP_LINK(script_func_local_5),\n        INSTANT_WARP(/*index*/ 2, /*destArea*/ 1, /*displace*/ 8192, 0, 0),\n        TERRAIN(/*terrainData*/ ddd_seg7_area_2_collision),\n        MACRO_OBJECTS(/*objList*/ ddd_seg7_area_2_macro_objs),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0003, /*seq*/ SEQ_LEVEL_WATER),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_WATER),\n    END_AREA(),\n\n    FREE_LEVEL_POOL(),\n    MARIO_POS(/*area*/ 1, /*yaw*/ 180, /*pos*/ -3071, 3000, 500),\n    CALL(/*arg*/ 0, /*func*/ lvl_init_or_update),\n    CALL_LOOP(/*arg*/ 1, /*func*/ lvl_init_or_update),\n    CLEAR_LEVEL(),\n    SLEEP_BEFORE_EXIT(/*frames*/ 1),\n    EXIT(),\n};\n"
  },
  {
    "path": "levels/ddd/sub_door/1.inc.c",
    "content": "// 0x07008FD0 - 0x07009010\nstatic const Vtx ddd_seg7_vertex_07008FD0[] = {\n    {{{  4941,  -1015,  -4095}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  2893,  -1015,  -4095}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  2893,  -3063,  -5631}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  4941,  -3063,  -5631}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07009010 - 0x07009030\nstatic const Gfx ddd_seg7_dl_07009010[] = {\n    gsSPVertex(ddd_seg7_vertex_07008FD0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009030 - 0x07009080\nconst Gfx ddd_seg7_dl_07009030[] = {\n    gsDPPipeSync(),\n    gsDPSetEnvColor(255, 255, 255, 80),\n    gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPDisplayList(ddd_seg7_dl_07009010),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ddd/sub_door/2.inc.c",
    "content": "// 0x07009080 - 0x07009098\nstatic const Lights1 ddd_seg7_lights_07009080 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07009098 - 0x070090D8\nstatic const Vtx ddd_seg7_vertex_07009098[] = {\n    {{{  4941,  -1015,  -4197}, 0, {  4056,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2893,  -1015,  -4197}, 0, {     0,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2893,  -3063,  -4197}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4941,  -3063,  -4197}, 0, {  4056,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070090D8 - 0x07009120\nstatic const Gfx ddd_seg7_dl_070090D8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ddd_seg7_texture_07001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ddd_seg7_lights_07009080.l, 1),\n    gsSPLight(&ddd_seg7_lights_07009080.a, 2),\n    gsSPVertex(ddd_seg7_vertex_07009098, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009120 - 0x07009190\nconst Gfx ddd_seg7_dl_07009120[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ddd_seg7_dl_070090D8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ddd/sub_door/3.inc.c",
    "content": "// 0x07009190 - 0x070091D0\nstatic const Vtx ddd_seg7_vertex_07009190[] = {\n    {{{  4941,  -1015,  -4187}, 0, {  1118,   -288}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2893,  -1015,  -4187}, 0, {  -158,   -288}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2893,  -3063,  -4187}, 0, {  -158,   2264}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4941,  -3063,  -4187}, 0, {  1118,   2264}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070091D0 - 0x07009208\nstatic const Gfx ddd_seg7_dl_070091D0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ddd_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ddd_seg7_vertex_07009190, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009208 - 0x07009288\nconst Gfx ddd_seg7_dl_07009208[] = {\n    gsDPPipeSync(),\n    gsDPSetEnvColor(255, 255, 255, 128),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADEA, G_CC_MODULATERGBFADEA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ddd_seg7_dl_070091D0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ddd/sub_door/collision.inc.c",
    "content": "// 0x0700FC48 - 0x0700FC78\nconst Collision ddd_seg7_collision_bowser_sub_door[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x4),\n    COL_VERTEX(4941, -1015, -4197),\n    COL_VERTEX(2893, -1015, -4197),\n    COL_VERTEX(2893, -3063, -4197),\n    COL_VERTEX(4941, -3063, -4197),\n    COL_TRI_INIT(SURFACE_DEFAULT, 2),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/ddd/sub_door/geo.inc.c",
    "content": "// 0x0E000478\nconst GeoLayout ddd_geo_000478[] = {\n    GEO_CULLING_RADIUS(10000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, ddd_seg7_dl_07009030),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, ddd_seg7_dl_07009120),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, ddd_seg7_dl_07009208),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ddd/submarine/1.inc.c",
    "content": "// 0x07009288 - 0x070092A0\nstatic const Lights1 ddd_seg7_lights_07009288 = gdSPDefLights1(\n    0x3f, 0x1f, 0x19,\n    0xff, 0x7f, 0x65, 0x28, 0x28, 0x28\n);\n\n// 0x070092A0 - 0x070092B8\nstatic const Lights1 ddd_seg7_lights_070092A0 = gdSPDefLights1(\n    0x2f, 0x1a, 0x0f,\n    0xbf, 0x6a, 0x3f, 0x28, 0x28, 0x28\n);\n\n// 0x070092B8 - 0x070092D0\nstatic const Lights1 ddd_seg7_lights_070092B8 = gdSPDefLights1(\n    0x0c, 0x0c, 0x0c,\n    0x33, 0x33, 0x33, 0x28, 0x28, 0x28\n);\n\n// 0x070092D0 - 0x070092E8\nstatic const Lights1 ddd_seg7_lights_070092D0 = gdSPDefLights1(\n    0x1d, 0x1d, 0x1d,\n    0x77, 0x77, 0x77, 0x28, 0x28, 0x28\n);\n\n// 0x070092E8 - 0x07009300\nstatic const Lights1 ddd_seg7_lights_070092E8 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07009300 - 0x07009400\nstatic const Vtx ddd_seg7_vertex_07009300[] = {\n    {{{  3923,     20,   4198}, 0, {  7896,  11122}, {0x23, 0x3d, 0x69, 0xff}}},\n    {{{  3911,     20,   4198}, 0, {  8392,  11122}, {0xef, 0x44, 0x69, 0xff}}},\n    {{{  3911,     -3,   4198}, 0, {  8542,  11122}, {0xee, 0xdf, 0x79, 0xff}}},\n    {{{  3905,      2,   4198}, 0, {  8822,  11122}, {0xad, 0xe8, 0x5c, 0xff}}},\n    {{{  3905,     14,   4198}, 0, {  8684,  11122}, {0xc4, 0x23, 0x69, 0xff}}},\n    {{{  3814,     59,   4045}, 0, { 10188,  10868}, {0x92, 0x1f, 0x36, 0xff}}},\n    {{{  3814,    -42,   4045}, 0, { 12232,  10868}, {0x9d, 0xc8, 0x37, 0xff}}},\n    {{{  3866,    110,   4045}, 0, {  8982,  10868}, {0xd2, 0x67, 0x38, 0xff}}},\n    {{{  3968,    110,   4045}, 0, {  7306,  10868}, {0x29, 0x69, 0x39, 0xff}}},\n    {{{  4019,     59,   4045}, 0, {  6100,  10868}, {0x66, 0x31, 0x38, 0xff}}},\n    {{{  3968,    -94,   4045}, 0, { 18364,  10868}, {0x37, 0x9e, 0x39, 0xff}}},\n    {{{  3923,     -3,   4198}, 0, {  7746,  11122}, {0x13, 0xab, 0x5c, 0xff}}},\n    {{{  3866,    -94,   4045}, 0, { 14276,  10868}, {0xe0, 0x94, 0x39, 0xff}}},\n    {{{  3929,     14,   4198}, 0, {  7604,  11122}, {0x44, 0x11, 0x69, 0xff}}},\n    {{{  4019,    -42,   4045}, 0, {  4056,  10868}, {0x6e, 0xe2, 0x35, 0xff}}},\n    {{{  3929,      2,   4198}, 0, {  7466,  11122}, {0x3b, 0xdc, 0x6a, 0xff}}},\n};\n\n// 0x07009400 - 0x07009490\nstatic const Vtx ddd_seg7_vertex_07009400[] = {\n    {{{  4019,    -42,   4045}, 0, {  4056,  10868}, {0x6e, 0xe2, 0x35, 0xff}}},\n    {{{  3929,      2,   4198}, 0, {  7466,  11122}, {0x3b, 0xdc, 0x6a, 0xff}}},\n    {{{  3968,    -94,   4045}, 0, {  2012,  10868}, {0x37, 0x9e, 0x39, 0xff}}},\n    {{{  3923,     -3,   4198}, 0, {  7746,  11122}, {0x13, 0xab, 0x5c, 0xff}}},\n    {{{  3911,     -3,   4198}, 0, {  8542,  11122}, {0xee, 0xdf, 0x79, 0xff}}},\n    {{{  3866,    -94,   4045}, 0, { 14276,  10868}, {0xe0, 0x94, 0x39, 0xff}}},\n    {{{  3814,    -42,   4045}, 0, { 12232,  10868}, {0x9d, 0xc8, 0x37, 0xff}}},\n    {{{  3905,      2,   4198}, 0, {  8822,  11122}, {0xad, 0xe8, 0x5c, 0xff}}},\n    {{{  3905,     14,   4198}, 0, {  8684,  11122}, {0xc4, 0x23, 0x69, 0xff}}},\n};\n\n// 0x07009490 - 0x07009590\nstatic const Vtx ddd_seg7_vertex_07009490[] = {\n    {{{  3917,      8,   4147}, 0, {  8144,  11038}, {0x9c, 0xb3, 0x0a, 0xff}}},\n    {{{  3743,    -97,   4170}, 0, { 13026,  11074}, {0xbc, 0xf0, 0x69, 0xff}}},\n    {{{  3811,   -165,   4125}, 0, { 14466,  11000}, {0xef, 0x86, 0x1d, 0xff}}},\n    {{{  4091,    114,   4170}, 0, {  5968,  11074}, {0x44, 0x10, 0x69, 0xff}}},\n    {{{  4023,    182,   4125}, 0, {  7000,  11000}, {0x11, 0x7a, 0x1d, 0xff}}},\n    {{{  4097,    108,   4151}, 0, {  5872,  11044}, {0x7a, 0x0d, 0xe3, 0xff}}},\n    {{{  4029,    176,   4106}, 0, {  6914,  10970}, {0x0a, 0x41, 0x94, 0xff}}},\n    {{{  4084,   -103,   4106}, 0, {  3150,  10970}, {0x3e, 0xf5, 0x92, 0xff}}},\n    {{{  4017,   -171,   4151}, 0, {  1684,  11044}, {0x0d, 0x86, 0xe1, 0xff}}},\n    {{{  4023,   -165,   4170}, 0, {  1822,  11074}, {0x10, 0xbc, 0x69, 0xff}}},\n    {{{  4091,    -97,   4125}, 0, {  3262,  11000}, {0x7a, 0xee, 0x1a, 0xff}}},\n    {{{  3743,    114,   4125}, 0, { 10320,  11000}, {0x86, 0x11, 0x1d, 0xff}}},\n    {{{  3811,    182,   4170}, 0, {  9288,  11074}, {0xf0, 0x44, 0x69, 0xff}}},\n    {{{  3817,    188,   4151}, 0, {  9204,  11044}, {0xf3, 0x7a, 0xe3, 0xff}}},\n    {{{  3737,    -91,   4151}, 0, { 12918,  11044}, {0x86, 0xf3, 0xe3, 0xff}}},\n    {{{  3805,   -159,   4106}, 0, { 14328,  10970}, {0xf6, 0xbf, 0x94, 0xff}}},\n};\n\n// 0x07009590 - 0x070095E0\nstatic const Vtx ddd_seg7_vertex_07009590[] = {\n    {{{  3917,      8,   4147}, 0, {  8144,  11038}, {0x9c, 0xb3, 0x0a, 0xff}}},\n    {{{  3743,    114,   4125}, 0, { 10320,  11000}, {0x86, 0x11, 0x1d, 0xff}}},\n    {{{  3749,    120,   4106}, 0, { 10224,  10970}, {0xbf, 0x0a, 0x94, 0xff}}},\n    {{{  3817,    188,   4151}, 0, {  9204,  11044}, {0xf3, 0x7a, 0xe3, 0xff}}},\n    {{{  3811,    182,   4170}, 0, {  9288,  11074}, {0xf0, 0x44, 0x69, 0xff}}},\n};\n\n// 0x070095E0 - 0x07009660\nstatic const Vtx ddd_seg7_vertex_070095E0[] = {\n    {{{  3814,   1185,   -306}, 0, {  2778,  -2076}, {0xcc, 0x72, 0xef, 0xff}}},\n    {{{  3866,   1185,    154}, 0, {   480,  -2076}, {0xd8, 0x65, 0x41, 0xff}}},\n    {{{  3968,   1185,    154}, 0, {   480,  -2076}, {0x20, 0x56, 0x57, 0xff}}},\n    {{{  4019,   1185,   -306}, 0, {  2778,  -2076}, {0x67, 0x47, 0xf1, 0xff}}},\n    {{{  3968,   1185,   -409}, 0, {  3290,  -2076}, {0x39, 0x40, 0xa4, 0xff}}},\n    {{{  4019,   1185,     51}, 0, {   990,  -2076}, {0x64, 0x49, 0x18, 0xff}}},\n    {{{  3814,   1185,     51}, 0, {   990,  -2076}, {0x88, 0x21, 0x15, 0xff}}},\n    {{{  3866,   1185,   -409}, 0, {  3290,  -2076}, {0xc7, 0x40, 0xa3, 0xff}}},\n};\n\n// 0x07009660 - 0x07009750\nstatic const Vtx ddd_seg7_vertex_07009660[] = {\n    {{{  3907,   -503,   3942}, 0, {     0,    990}, {0xb1, 0xaf, 0x38, 0xff}}},\n    {{{  3886,   -503,   3840}, 0, {     0,    650}, {0x97, 0xba, 0x07, 0xff}}},\n    {{{  3907,   -503,   3635}, 0, {     0,      0}, {0xed, 0x8b, 0xd5, 0xff}}},\n    {{{  4429,     39,   3738}, 0, {   650,      0}, {0x28, 0x78, 0xf8, 0xff}}},\n    {{{  4429,     39,   3840}, 0, {   308,      0}, {0x46, 0x68, 0x0e, 0xff}}},\n    {{{  4429,     18,   3635}, 0, {   990,      0}, {0x75, 0x26, 0xe5, 0xff}}},\n    {{{  4429,     18,   3942}, 0, {     0,      0}, {0x51, 0x27, 0x59, 0xff}}},\n    {{{  4429,    -22,   3738}, 0, {   650,      0}, {0x46, 0x98, 0xf2, 0xff}}},\n    {{{  4429,     -1,   3635}, 0, {   990,      0}, {0x30, 0xd1, 0x95, 0xff}}},\n    {{{  4429,    -22,   3840}, 0, {   308,      0}, {0x46, 0x97, 0x07, 0xff}}},\n    {{{  4429,     -1,   3942}, 0, {     0,      0}, {0x51, 0xb1, 0x38, 0xff}}},\n    {{{  3927,   -503,   3635}, 0, {     0,      0}, {0x5f, 0xd0, 0xbd, 0xff}}},\n    {{{  3947,   -503,   3738}, 0, {     0,    308}, {0x69, 0xba, 0xfa, 0xff}}},\n    {{{  3947,   -503,   3840}, 0, {     0,    650}, {0x68, 0xba, 0x0d, 0xff}}},\n    {{{  3927,   -503,   3942}, 0, {     0,    990}, {0x27, 0xaf, 0x59, 0xff}}},\n};\n\n// 0x07009750 - 0x07009800\nstatic const Vtx ddd_seg7_vertex_07009750[] = {\n    {{{  3907,    520,   3635}, 0, {  5078,      0}, {0xb1, 0x51, 0xc8, 0xff}}},\n    {{{  3886,    520,   3738}, 0, {  5078,    308}, {0x88, 0x28, 0xf8, 0xff}}},\n    {{{  3886,    520,   3840}, 0, {  5078,    650}, {0xc8, 0x71, 0x07, 0xff}}},\n    {{{  3886,   -503,   3840}, 0, {     0,    650}, {0x97, 0xba, 0x07, 0xff}}},\n    {{{  3886,   -503,   3738}, 0, {     0,    308}, {0x89, 0xd8, 0xf0, 0xff}}},\n    {{{  3907,   -503,   3635}, 0, {     0,      0}, {0xed, 0x8b, 0xd5, 0xff}}},\n    {{{  3907,    520,   3942}, 0, {  5078,    990}, {0xd1, 0x30, 0x6b, 0xff}}},\n    {{{  3927,    520,   3942}, 0, {  5078,    990}, {0x4f, 0x51, 0x38, 0xff}}},\n    {{{  3947,    520,   3840}, 0, {  5078,    650}, {0x69, 0x46, 0x06, 0xff}}},\n    {{{  3947,    520,   3738}, 0, {  5078,    308}, {0x68, 0x46, 0xf3, 0xff}}},\n    {{{  3927,    520,   3635}, 0, {  5078,      0}, {0x27, 0x51, 0xa7, 0xff}}},\n};\n\n// 0x07009800 - 0x070098E0\nstatic const Vtx ddd_seg7_vertex_07009800[] = {\n    {{{  3814,   -606,   2765}, 0, { 15852,   8738}, {0xe2, 0x8a, 0x22, 0xff}}},\n    {{{  4019,   -606,   2765}, 0, { 16788,   8738}, {0x15, 0x88, 0x23, 0xff}}},\n    {{{  3866,    -94,   4045}, 0, { 14276,  10868}, {0xe0, 0x94, 0x39, 0xff}}},\n    {{{  3814,   -810,   1741}, 0, { 15976,   7034}, {0xec, 0x84, 0x0c, 0xff}}},\n    {{{  3968,    -94,   4045}, 0, { 18364,  10868}, {0x37, 0x9e, 0x39, 0xff}}},\n    {{{  4019,   -810,   1741}, 0, { 16664,   7034}, {0x10, 0x83, 0x09, 0xff}}},\n    {{{  3610,   -503,   2765}, 0, { 14790,   8738}, {0xb4, 0xa2, 0x23, 0xff}}},\n    {{{  3814,    -42,   4045}, 0, { 12232,  10868}, {0x9d, 0xc8, 0x37, 0xff}}},\n    {{{  3405,     39,   3840}, 0, {   308,   5076}, {0xba, 0x69, 0x07, 0xff}}},\n    {{{  3405,     39,   3738}, 0, {   650,   5076}, {0xba, 0x68, 0xf2, 0xff}}},\n    {{{  3405,    -22,   3738}, 0, {   650,   5076}, {0x8f, 0xc8, 0xfd, 0xff}}},\n    {{{  3405,     18,   3942}, 0, {     0,   5076}, {0xaf, 0x4f, 0x38, 0xff}}},\n    {{{  4429,     39,   3840}, 0, {   308,      0}, {0x46, 0x68, 0x0e, 0xff}}},\n    {{{  4429,     39,   3738}, 0, {   650,      0}, {0x28, 0x78, 0xf8, 0xff}}},\n};\n\n// 0x070098E0 - 0x070099E0\nstatic const Vtx ddd_seg7_vertex_070098E0[] = {\n    {{{  4429,     -1,   3635}, 0, {   990,      0}, {0x30, 0xd1, 0x95, 0xff}}},\n    {{{  4429,    -22,   3738}, 0, {   650,      0}, {0x46, 0x98, 0xf2, 0xff}}},\n    {{{  3405,     -1,   3635}, 0, {   990,   5076}, {0xd0, 0xa1, 0xbc, 0xff}}},\n    {{{  3405,     -1,   3942}, 0, {     0,   5076}, {0xaf, 0xd9, 0x59, 0xff}}},\n    {{{  3405,     18,   3942}, 0, {     0,   5076}, {0xaf, 0x4f, 0x38, 0xff}}},\n    {{{  3405,    -22,   3738}, 0, {   650,   5076}, {0x8f, 0xc8, 0xfd, 0xff}}},\n    {{{  4429,     18,   3942}, 0, {     0,      0}, {0x51, 0x27, 0x59, 0xff}}},\n    {{{  4429,     39,   3840}, 0, {   308,      0}, {0x46, 0x68, 0x0e, 0xff}}},\n    {{{  3405,     39,   3738}, 0, {   650,   5076}, {0xba, 0x68, 0xf2, 0xff}}},\n    {{{  4429,     39,   3738}, 0, {   650,      0}, {0x28, 0x78, 0xf8, 0xff}}},\n    {{{  4429,     18,   3635}, 0, {   990,      0}, {0x75, 0x26, 0xe5, 0xff}}},\n    {{{  3405,     18,   3635}, 0, {   990,   5076}, {0xaf, 0x27, 0xa7, 0xff}}},\n    {{{  3405,     39,   3840}, 0, {   308,   5076}, {0xba, 0x69, 0x07, 0xff}}},\n    {{{  4429,    -22,   3840}, 0, {   308,      0}, {0x46, 0x97, 0x07, 0xff}}},\n    {{{  3405,    -22,   3840}, 0, {   308,   5076}, {0xd8, 0x89, 0x10, 0xff}}},\n    {{{  4429,     -1,   3942}, 0, {     0,      0}, {0x51, 0xb1, 0x38, 0xff}}},\n};\n\n// 0x070099E0 - 0x07009AD0\nstatic const Vtx ddd_seg7_vertex_070099E0[] = {\n    {{{  3907,   -503,   3942}, 0, {     0,    990}, {0xb1, 0xaf, 0x38, 0xff}}},\n    {{{  3907,    520,   3942}, 0, {  5078,    990}, {0xd1, 0x30, 0x6b, 0xff}}},\n    {{{  3886,    520,   3840}, 0, {  5078,    650}, {0xc8, 0x71, 0x07, 0xff}}},\n    {{{  3405,     -1,   3635}, 0, {   990,   5076}, {0xd0, 0xa1, 0xbc, 0xff}}},\n    {{{  3405,     18,   3635}, 0, {   990,   5076}, {0xaf, 0x27, 0xa7, 0xff}}},\n    {{{  4429,     -1,   3635}, 0, {   990,      0}, {0x30, 0xd1, 0x95, 0xff}}},\n    {{{  4429,     18,   3635}, 0, {   990,      0}, {0x75, 0x26, 0xe5, 0xff}}},\n    {{{  3907,    520,   3635}, 0, {  5078,      0}, {0xb1, 0x51, 0xc8, 0xff}}},\n    {{{  3927,    520,   3635}, 0, {  5078,      0}, {0x27, 0x51, 0xa7, 0xff}}},\n    {{{  3907,   -503,   3635}, 0, {     0,      0}, {0xed, 0x8b, 0xd5, 0xff}}},\n    {{{  3927,   -503,   3635}, 0, {     0,      0}, {0x5f, 0xd0, 0xbd, 0xff}}},\n    {{{  3927,   -503,   3942}, 0, {     0,    990}, {0x27, 0xaf, 0x59, 0xff}}},\n    {{{  3927,    520,   3942}, 0, {  5078,    990}, {0x4f, 0x51, 0x38, 0xff}}},\n    {{{  3947,    520,   3840}, 0, {  5078,    650}, {0x69, 0x46, 0x06, 0xff}}},\n    {{{  3947,   -503,   3840}, 0, {     0,    650}, {0x68, 0xba, 0x0d, 0xff}}},\n};\n\n// 0x07009AD0 - 0x07009BD0\nstatic const Vtx ddd_seg7_vertex_07009AD0[] = {\n    {{{  3886,   -503,   3840}, 0, {     0,    650}, {0x97, 0xba, 0x07, 0xff}}},\n    {{{  3886,    520,   3840}, 0, {  5078,    650}, {0xc8, 0x71, 0x07, 0xff}}},\n    {{{  3886,    520,   3738}, 0, {  5078,    308}, {0x88, 0x28, 0xf8, 0xff}}},\n    {{{  3886,   -503,   3738}, 0, {     0,    308}, {0x89, 0xd8, 0xf0, 0xff}}},\n    {{{  3907,   -503,   3942}, 0, {     0,    990}, {0xb1, 0xaf, 0x38, 0xff}}},\n    {{{  3907,    520,   3635}, 0, {  5078,      0}, {0xb1, 0x51, 0xc8, 0xff}}},\n    {{{  3907,   -503,   3635}, 0, {     0,      0}, {0xed, 0x8b, 0xd5, 0xff}}},\n    {{{  3927,    520,   3635}, 0, {  5078,      0}, {0x27, 0x51, 0xa7, 0xff}}},\n    {{{  3947,    520,   3738}, 0, {  5078,    308}, {0x68, 0x46, 0xf3, 0xff}}},\n    {{{  3927,   -503,   3635}, 0, {     0,      0}, {0x5f, 0xd0, 0xbd, 0xff}}},\n    {{{  4173,   -554,  -1996}, 0, {  1174,    820}, {0x3c, 0x9f, 0xcb, 0xff}}},\n    {{{  4019,   -606,  -1996}, 0, {   436,    820}, {0x0e, 0x95, 0xbe, 0xff}}},\n    {{{  4019,   -196,  -2457}, 0, {  1498,     54}, {0x1f, 0xc4, 0x96, 0xff}}},\n    {{{  3947,   -503,   3738}, 0, {     0,    308}, {0x69, 0xba, 0xfa, 0xff}}},\n    {{{  3947,    520,   3840}, 0, {  5078,    650}, {0x69, 0x46, 0x06, 0xff}}},\n    {{{  3947,   -503,   3840}, 0, {     0,    650}, {0x68, 0xba, 0x0d, 0xff}}},\n};\n\n// 0x07009BD0 - 0x07009CD0\nstatic const Vtx ddd_seg7_vertex_07009BD0[] = {\n    {{{  4173,   -554,  -1996}, 0, {  1174,    820}, {0x3c, 0x9f, 0xcb, 0xff}}},\n    {{{  4019,   -196,  -2457}, 0, {  1498,     54}, {0x1f, 0xc4, 0x96, 0xff}}},\n    {{{  4378,   -350,  -1996}, 0, {  2526,    820}, {0x61, 0xc9, 0xc5, 0xff}}},\n    {{{  4019,   -810,  -1330}, 0, {   312,   1924}, {0x17, 0x85, 0xeb, 0xff}}},\n    {{{  4019,   -606,  -1996}, 0, {   436,    820}, {0x0e, 0x95, 0xbe, 0xff}}},\n    {{{  4326,   -708,  -1330}, 0, {  1404,   1924}, {0x47, 0x99, 0xf1, 0xff}}},\n    {{{  4531,   -503,  -1330}, 0, {  2382,   1924}, {0x6a, 0xbf, 0xed, 0xff}}},\n    {{{  4122,    -94,  -2457}, 0, {  3418,     54}, {0x48, 0xee, 0x9a, 0xff}}},\n    {{{  4634,   -196,  -1330}, 0, {  3506,   1924}, {0x7c, 0xee, 0xee, 0xff}}},\n    {{{  4429,   -145,  -1996}, 0, {  3542,    820}, {0x73, 0xf5, 0xcd, 0xff}}},\n    {{{  3814,   -606,  -1996}, 0, { 15852,    820}, {0xf2, 0x90, 0xc8, 0xff}}},\n    {{{  3814,   -196,  -2457}, 0, { 14790,     54}, {0xee, 0xc0, 0x95, 0xff}}},\n    {{{  4019,   -606,  -1996}, 0, { 16788,    820}, {0x0e, 0x95, 0xbe, 0xff}}},\n    {{{  3814,   -810,  -1330}, 0, { 15976,   1924}, {0xec, 0x84, 0xee, 0xff}}},\n    {{{  4019,   -810,  -1330}, 0, { 16664,   1924}, {0x17, 0x85, 0xeb, 0xff}}},\n    {{{  4019,   -196,  -2457}, 0, { 17850,     54}, {0x1f, 0xc4, 0x96, 0xff}}},\n};\n\n// 0x07009CD0 - 0x07009DD0\nstatic const Vtx ddd_seg7_vertex_07009CD0[] = {\n    {{{  4173,    571,  -1996}, 0, {  7116,    820}, {0x2a, 0x6c, 0xcd, 0xff}}},\n    {{{  4019,    213,  -2457}, 0, {  7154,     54}, {0x0f, 0x3d, 0x92, 0xff}}},\n    {{{  3661,    571,  -1996}, 0, {  9172,    820}, {0xe4, 0x70, 0xce, 0xff}}},\n    {{{  3814,    213,  -2457}, 0, {  9134,     54}, {0xd9, 0x43, 0x9c, 0xff}}},\n    {{{  4122,    110,  -2457}, 0, {  5730,     54}, {0x41, 0x1f, 0x98, 0xff}}},\n    {{{  4378,    366,  -1996}, 0, {  5948,    820}, {0x65, 0x35, 0xcb, 0xff}}},\n    {{{  4429,    161,  -1996}, 0, {  5046,    820}, {0x70, 0x0b, 0xc6, 0xff}}},\n    {{{  4480,    571,  -1330}, 0, {  6214,   1924}, {0x49, 0x66, 0xf0, 0xff}}},\n    {{{  4634,    213,  -1330}, 0, {  4948,   1924}, {0x7a, 0x1a, 0xeb, 0xff}}},\n    {{{  4429,   -145,  -1996}, 0, {  3542,    820}, {0x73, 0xf5, 0xcd, 0xff}}},\n    {{{  4122,    -94,  -2457}, 0, {  3418,     54}, {0x48, 0xee, 0x9a, 0xff}}},\n    {{{  4634,   -196,  -1330}, 0, {  3506,   1924}, {0x7c, 0xee, 0xee, 0xff}}},\n    {{{  4480,    571,   1741}, 0, {  6214,   7034}, {0x51, 0x60, 0x09, 0xff}}},\n    {{{  4326,   -708,  -1330}, 0, {  1404,   1924}, {0x47, 0x99, 0xf1, 0xff}}},\n    {{{  4531,   -503,  -1330}, 0, {  2382,   1924}, {0x6a, 0xbf, 0xed, 0xff}}},\n    {{{  4531,   -503,   1741}, 0, {  2382,   7034}, {0x68, 0xba, 0x0f, 0xff}}},\n};\n\n// 0x07009DD0 - 0x07009ED0\nstatic const Vtx ddd_seg7_vertex_07009DD0[] = {\n    {{{  4019,   -810,  -1330}, 0, {   312,   1924}, {0x17, 0x85, 0xeb, 0xff}}},\n    {{{  4326,   -708,  -1330}, 0, {  1404,   1924}, {0x47, 0x99, 0xf1, 0xff}}},\n    {{{  4326,   -708,   1741}, 0, {  1404,   7034}, {0x3c, 0x92, 0x0d, 0xff}}},\n    {{{  4531,   -503,   1741}, 0, {  2382,   7034}, {0x68, 0xba, 0x0f, 0xff}}},\n    {{{  4531,   -503,  -1330}, 0, {  2382,   1924}, {0x6a, 0xbf, 0xed, 0xff}}},\n    {{{  4634,   -196,   1741}, 0, {  3506,   7034}, {0x7c, 0xec, 0x0c, 0xff}}},\n    {{{  4634,   -196,  -1330}, 0, {  3506,   1924}, {0x7c, 0xee, 0xee, 0xff}}},\n    {{{  4019,   -810,   1741}, 0, {   312,   7034}, {0x10, 0x83, 0x09, 0xff}}},\n    {{{  3814,   -810,   1741}, 0, { 15976,   7034}, {0xec, 0x84, 0x0c, 0xff}}},\n    {{{  3814,   -810,  -1330}, 0, { 15976,   1924}, {0xec, 0x84, 0xee, 0xff}}},\n    {{{  4019,   -810,   1741}, 0, { 16664,   7034}, {0x10, 0x83, 0x09, 0xff}}},\n    {{{  4019,   -810,  -1330}, 0, { 16664,   1924}, {0x17, 0x85, 0xeb, 0xff}}},\n    {{{  4429,   -145,   2765}, 0, {  3542,   8738}, {0x78, 0xe6, 0x1f, 0xff}}},\n    {{{  4429,    161,   2765}, 0, {  5046,   8738}, {0x79, 0x0f, 0x20, 0xff}}},\n    {{{  4634,    213,  -1330}, 0, {  4948,   1924}, {0x7a, 0x1a, 0xeb, 0xff}}},\n    {{{  4634,    213,   1741}, 0, {  4948,   7034}, {0x7b, 0x18, 0x0c, 0xff}}},\n};\n\n// 0x07009ED0 - 0x07009FD0\nstatic const Vtx ddd_seg7_vertex_07009ED0[] = {\n    {{{  4634,    213,   1741}, 0, {  4948,   7034}, {0x7b, 0x18, 0x0c, 0xff}}},\n    {{{  4634,    213,  -1330}, 0, {  4948,   1924}, {0x7a, 0x1a, 0xeb, 0xff}}},\n    {{{  4480,    571,   1741}, 0, {  6214,   7034}, {0x51, 0x60, 0x09, 0xff}}},\n    {{{  4634,   -196,   1741}, 0, {  3506,   7034}, {0x7c, 0xec, 0x0c, 0xff}}},\n    {{{  4634,   -196,  -1330}, 0, {  3506,   1924}, {0x7c, 0xee, 0xee, 0xff}}},\n    {{{  4019,   -606,   2765}, 0, {   436,   8738}, {0x15, 0x88, 0x23, 0xff}}},\n    {{{  4019,   -810,   1741}, 0, {   312,   7034}, {0x10, 0x83, 0x09, 0xff}}},\n    {{{  4326,   -708,   1741}, 0, {  1404,   7034}, {0x3c, 0x92, 0x0d, 0xff}}},\n    {{{  4224,   -503,   2765}, 0, {  1498,   8738}, {0x4a, 0xa0, 0x22, 0xff}}},\n    {{{  4531,   -503,   1741}, 0, {  2382,   7034}, {0x68, 0xba, 0x0f, 0xff}}},\n    {{{  4326,   -401,   2765}, 0, {  2186,   8738}, {0x62, 0xba, 0x24, 0xff}}},\n    {{{  4429,   -145,   2765}, 0, {  3542,   8738}, {0x78, 0xe6, 0x1f, 0xff}}},\n    {{{  4429,    161,   2765}, 0, {  5046,   8738}, {0x79, 0x0f, 0x20, 0xff}}},\n    {{{  4326,    417,   2765}, 0, {  6252,   8738}, {0x62, 0x48, 0x22, 0xff}}},\n    {{{  3968,    -94,   4045}, 0, {  2012,  10868}, {0x37, 0x9e, 0x39, 0xff}}},\n    {{{  4122,    571,   2765}, 0, {  7306,   8738}, {0x19, 0x79, 0x1b, 0xff}}},\n};\n\n// 0x07009FD0 - 0x0700A0D0\nstatic const Vtx ddd_seg7_vertex_07009FD0[] = {\n    {{{  3968,    110,   4045}, 0, {  7306,  10868}, {0x29, 0x69, 0x39, 0xff}}},\n    {{{  4019,     59,   4045}, 0, {  6100,  10868}, {0x66, 0x31, 0x38, 0xff}}},\n    {{{  4326,    417,   2765}, 0, {  6252,   8738}, {0x62, 0x48, 0x22, 0xff}}},\n    {{{  4122,    571,   2765}, 0, {  7306,   8738}, {0x19, 0x79, 0x1b, 0xff}}},\n    {{{  4429,    161,   2765}, 0, {  5046,   8738}, {0x79, 0x0f, 0x20, 0xff}}},\n    {{{  4019,    -42,   4045}, 0, {  4056,  10868}, {0x6e, 0xe2, 0x35, 0xff}}},\n    {{{  4429,   -145,   2765}, 0, {  3542,   8738}, {0x78, 0xe6, 0x1f, 0xff}}},\n    {{{  4326,   -401,   2765}, 0, {  2186,   8738}, {0x62, 0xba, 0x24, 0xff}}},\n    {{{  3866,    110,   4045}, 0, {  8982,  10868}, {0xd2, 0x67, 0x38, 0xff}}},\n    {{{  3712,    571,   2765}, 0, {  8982,   8738}, {0xda, 0x75, 0x1d, 0xff}}},\n    {{{  3968,    -94,   4045}, 0, {  2012,  10868}, {0x37, 0x9e, 0x39, 0xff}}},\n    {{{  3712,    -94,  -2457}, 0, { 12870,     54}, {0xb3, 0xdc, 0xa3, 0xff}}},\n    {{{  3456,   -350,  -1996}, 0, { 13762,    820}, {0x9c, 0xc6, 0xcc, 0xff}}},\n    {{{  3405,   -145,  -1996}, 0, { 12746,    820}, {0x90, 0xf5, 0xc6, 0xff}}},\n    {{{  4019,   -606,   2765}, 0, {   436,   8738}, {0x15, 0x88, 0x23, 0xff}}},\n    {{{  4224,   -503,   2765}, 0, {  1498,   8738}, {0x4a, 0xa0, 0x22, 0xff}}},\n};\n\n// 0x0700A0D0 - 0x0700A1D0\nstatic const Vtx ddd_seg7_vertex_0700A0D0[] = {\n    {{{  3814,   -196,  -2457}, 0, { 14790,     54}, {0xee, 0xc0, 0x95, 0xff}}},\n    {{{  3814,   -606,  -1996}, 0, { 15852,    820}, {0xf2, 0x90, 0xc8, 0xff}}},\n    {{{  3661,   -554,  -1996}, 0, { 15114,    820}, {0xc6, 0xa1, 0xc4, 0xff}}},\n    {{{  3814,   -810,  -1330}, 0, { 15976,   1924}, {0xec, 0x84, 0xee, 0xff}}},\n    {{{  3507,   -708,  -1330}, 0, { 14884,   1924}, {0xbf, 0x96, 0xed, 0xff}}},\n    {{{  3456,   -350,  -1996}, 0, { 13762,    820}, {0x9c, 0xc6, 0xcc, 0xff}}},\n    {{{  3712,    -94,  -2457}, 0, { 12870,     54}, {0xb3, 0xdc, 0xa3, 0xff}}},\n    {{{  3712,    110,  -2457}, 0, { 10558,     54}, {0xd5, 0x0a, 0x8a, 0xff}}},\n    {{{  3405,   -145,  -1996}, 0, { 12746,    820}, {0x90, 0xf5, 0xc6, 0xff}}},\n    {{{  3200,   -196,  -1330}, 0, { 12782,   1924}, {0x85, 0xeb, 0xeb, 0xff}}},\n    {{{  3302,   -503,  -1330}, 0, { 13906,   1924}, {0x99, 0xb9, 0xf1, 0xff}}},\n    {{{  3405,    161,  -1996}, 0, { 11242,    820}, {0x8d, 0x0b, 0xcd, 0xff}}},\n    {{{  3456,    366,  -1996}, 0, { 10340,    820}, {0x9f, 0x39, 0xc6, 0xff}}},\n    {{{  3200,    213,  -1330}, 0, { 11340,   1924}, {0x85, 0x15, 0xee, 0xff}}},\n    {{{  3354,    571,  -1330}, 0, { 10074,   1924}, {0xa0, 0x50, 0xf0, 0xff}}},\n    {{{  3661,    571,  -1996}, 0, {  9172,    820}, {0xe4, 0x70, 0xce, 0xff}}},\n};\n\n// 0x0700A1D0 - 0x0700A2D0\nstatic const Vtx ddd_seg7_vertex_0700A1D0[] = {\n    {{{  3814,    213,  -2457}, 0, {  9134,     54}, {0xd9, 0x43, 0x9c, 0xff}}},\n    {{{  3712,    110,  -2457}, 0, { 10558,     54}, {0xd5, 0x0a, 0x8a, 0xff}}},\n    {{{  3456,    366,  -1996}, 0, { 10340,    820}, {0x9f, 0x39, 0xc6, 0xff}}},\n    {{{  3661,    571,  -1996}, 0, {  9172,    820}, {0xe4, 0x70, 0xce, 0xff}}},\n    {{{  3507,   -401,   2765}, 0, { 14102,   8738}, {0x9b, 0xbd, 0x23, 0xff}}},\n    {{{  3610,   -503,   2765}, 0, { 14790,   8738}, {0xb4, 0xa2, 0x23, 0xff}}},\n    {{{  3814,    -42,   4045}, 0, { 12232,  10868}, {0x9d, 0xc8, 0x37, 0xff}}},\n    {{{  3302,   -503,   1741}, 0, { 13906,   7034}, {0x94, 0xc1, 0x0f, 0xff}}},\n    {{{  3507,   -708,   1741}, 0, { 14884,   7034}, {0xbb, 0x97, 0x0d, 0xff}}},\n    {{{  3814,   -606,   2765}, 0, { 15852,   8738}, {0xe2, 0x8a, 0x22, 0xff}}},\n    {{{  3302,   -503,  -1330}, 0, { 13906,   1924}, {0x99, 0xb9, 0xf1, 0xff}}},\n    {{{  3507,   -708,  -1330}, 0, { 14884,   1924}, {0xbf, 0x96, 0xed, 0xff}}},\n    {{{  3814,   -810,   1741}, 0, { 15976,   7034}, {0xec, 0x84, 0x0c, 0xff}}},\n    {{{  3814,   -810,  -1330}, 0, { 15976,   1924}, {0xec, 0x84, 0xee, 0xff}}},\n    {{{  3405,   -145,   2765}, 0, { 12746,   8738}, {0x87, 0xee, 0x1f, 0xff}}},\n    {{{  3200,   -196,   1741}, 0, { 12782,   7034}, {0x83, 0xf0, 0x0a, 0xff}}},\n};\n\n// 0x0700A2D0 - 0x0700A3C0\nstatic const Vtx ddd_seg7_vertex_0700A2D0[] = {\n    {{{  3200,   -196,  -1330}, 0, { 12782,   1924}, {0x85, 0xeb, 0xeb, 0xff}}},\n    {{{  3302,   -503,  -1330}, 0, { 13906,   1924}, {0x99, 0xb9, 0xf1, 0xff}}},\n    {{{  3302,   -503,   1741}, 0, { 13906,   7034}, {0x94, 0xc1, 0x0f, 0xff}}},\n    {{{  3200,   -196,   1741}, 0, { 12782,   7034}, {0x83, 0xf0, 0x0a, 0xff}}},\n    {{{  3405,   -145,   2765}, 0, { 12746,   8738}, {0x87, 0xee, 0x1f, 0xff}}},\n    {{{  3814,    -42,   4045}, 0, { 12232,  10868}, {0x9d, 0xc8, 0x37, 0xff}}},\n    {{{  3814,     59,   4045}, 0, { 10188,  10868}, {0x92, 0x1f, 0x36, 0xff}}},\n    {{{  3405,    161,   2765}, 0, { 11242,   8738}, {0x88, 0x17, 0x20, 0xff}}},\n    {{{  3200,    213,   1741}, 0, { 11340,   7034}, {0x86, 0x1c, 0x0e, 0xff}}},\n    {{{  3200,    213,  -1330}, 0, { 11340,   1924}, {0x85, 0x15, 0xee, 0xff}}},\n    {{{  3507,    417,   2765}, 0, { 10036,   8738}, {0x9e, 0x48, 0x22, 0xff}}},\n    {{{  3354,    571,   1741}, 0, { 10074,   7034}, {0xda, 0x78, 0x06, 0xff}}},\n    {{{  3354,    571,  -1330}, 0, { 10074,   1924}, {0xa0, 0x50, 0xf0, 0xff}}},\n    {{{  3712,    571,   2765}, 0, {  8982,   8738}, {0xda, 0x75, 0x1d, 0xff}}},\n    {{{  3866,    110,   4045}, 0, {  8982,  10868}, {0xd2, 0x67, 0x38, 0xff}}},\n};\n\n// 0x0700A3C0 - 0x0700A4C0\nstatic const Vtx ddd_seg7_vertex_0700A3C0[] = {\n    {{{  4019,    571,     51}, 0, {   990,    990}, {0x7e, 0x00, 0x0a, 0xff}}},\n    {{{  4019,   1185,     51}, 0, {   990,  -2076}, {0x64, 0x49, 0x18, 0xff}}},\n    {{{  3968,    571,    256}, 0, {     0,    990}, {0x5e, 0x0b, 0x54, 0xff}}},\n    {{{  3814,    213,  -2457}, 0, {   990,    138}, {0xd9, 0x43, 0x9c, 0xff}}},\n    {{{  4019,    213,  -2457}, 0, {   990,    138}, {0x0f, 0x3d, 0x92, 0xff}}},\n    {{{  3712,    110,  -2457}, 0, {   990,    308}, {0xd5, 0x0a, 0x8a, 0xff}}},\n    {{{  4122,    110,  -2457}, 0, {   990,    308}, {0x41, 0x1f, 0x98, 0xff}}},\n    {{{  4122,    -94,  -2457}, 0, {   990,    650}, {0x48, 0xee, 0x9a, 0xff}}},\n    {{{  4019,   -196,  -2457}, 0, {   990,    820}, {0x1f, 0xc4, 0x96, 0xff}}},\n    {{{  3814,   -196,  -2457}, 0, {   990,    820}, {0xee, 0xc0, 0x95, 0xff}}},\n    {{{  3712,    -94,  -2457}, 0, {   990,    650}, {0xb3, 0xdc, 0xa3, 0xff}}},\n    {{{  4019,   1185,   -306}, 0, {  2778,  -2076}, {0x67, 0x47, 0xf1, 0xff}}},\n    {{{  4019,    571,   -306}, 0, {  2778,    990}, {0x79, 0x00, 0xda, 0xff}}},\n    {{{  3968,   1185,    154}, 0, {   480,  -2076}, {0x20, 0x56, 0x57, 0xff}}},\n    {{{  3866,    571,    256}, 0, {     0,    990}, {0xb8, 0x0f, 0x67, 0xff}}},\n    {{{  3866,   1185,    154}, 0, {   480,  -2076}, {0xd8, 0x65, 0x41, 0xff}}},\n};\n\n// 0x0700A4C0 - 0x0700A580\nstatic const Vtx ddd_seg7_vertex_0700A4C0[] = {\n    {{{  4019,    571,   -306}, 0, {  2778,    990}, {0x79, 0x00, 0xda, 0xff}}},\n    {{{  3968,   1185,   -409}, 0, {  3290,  -2076}, {0x39, 0x40, 0xa4, 0xff}}},\n    {{{  4019,   1185,   -306}, 0, {  2778,  -2076}, {0x67, 0x47, 0xf1, 0xff}}},\n    {{{  3968,    571,   -409}, 0, {  3290,    990}, {0x42, 0x00, 0x95, 0xff}}},\n    {{{  3814,   1185,   -306}, 0, {  2778,  -2076}, {0xcc, 0x72, 0xef, 0xff}}},\n    {{{  3866,    571,   -409}, 0, {  3290,    990}, {0xbe, 0x00, 0x94, 0xff}}},\n    {{{  3814,    571,   -306}, 0, {  2778,    990}, {0x83, 0x00, 0xed, 0xff}}},\n    {{{  3866,   1185,   -409}, 0, {  3290,  -2076}, {0xc7, 0x40, 0xa3, 0xff}}},\n    {{{  3814,   1185,     51}, 0, {   990,  -2076}, {0x88, 0x21, 0x15, 0xff}}},\n    {{{  3814,    571,     51}, 0, {   990,    990}, {0x82, 0x00, 0x0f, 0xff}}},\n    {{{  3866,    571,    256}, 0, {     0,    990}, {0xb8, 0x0f, 0x67, 0xff}}},\n    {{{  3866,   1185,    154}, 0, {   480,  -2076}, {0xd8, 0x65, 0x41, 0xff}}},\n};\n\n// 0x0700A580 - 0x0700A600\nstatic const Vtx ddd_seg7_vertex_0700A580[] = {\n    {{{  3712,    571,   2765}, 0, { 12488,   -288}, {0xda, 0x75, 0x1d, 0xff}}},\n    {{{  4122,    571,   2765}, 0, { 12488,   1754}, {0x19, 0x79, 0x1b, 0xff}}},\n    {{{  3354,    571,   1741}, 0, {  7378,  -2076}, {0xda, 0x78, 0x06, 0xff}}},\n    {{{  4480,    571,   1741}, 0, {  7378,   3544}, {0x51, 0x60, 0x09, 0xff}}},\n    {{{  4173,    571,  -1996}, 0, {-11272,   2010}, {0x2a, 0x6c, 0xcd, 0xff}}},\n    {{{  3661,    571,  -1996}, 0, {-11272,   -544}, {0xe4, 0x70, 0xce, 0xff}}},\n    {{{  4480,    571,  -1330}, 0, { -7950,   3542}, {0x49, 0x66, 0xf0, 0xff}}},\n    {{{  3354,    571,  -1330}, 0, { -7950,  -2076}, {0xa0, 0x50, 0xf0, 0xff}}},\n};\n\n// 0x0700A600 - 0x0700AEB8\nstatic const Gfx ddd_seg7_dl_0700A600[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ddd_seg7_texture_07001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ddd_seg7_lights_07009288.l, 1),\n    gsSPLight(&ddd_seg7_lights_07009288.a, 2),\n    gsSPVertex(ddd_seg7_vertex_07009300, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  5,  4,  7, 0x0),\n    gsSP2Triangles( 4,  1,  7, 0x0,  8,  7,  1, 0x0),\n    gsSP2Triangles( 0,  8,  1, 0x0,  9,  8,  0, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(13,  9,  0, 0x0,  9, 13, 14, 0x0),\n    gsSP2Triangles(13,  0,  2, 0x0, 15, 13,  2, 0x0),\n    gsSP1Triangle(13, 15, 14, 0x0),\n    gsSPVertex(ddd_seg7_vertex_07009400, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  4, 0x0),\n    gsSP2Triangles( 1,  3,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  4,  7,  6, 0x0),\n    gsSP1Triangle( 8,  7,  4, 0x0),\n    gsSPLight(&ddd_seg7_lights_070092A0.l, 1),\n    gsSPLight(&ddd_seg7_lights_070092A0.a, 2),\n    gsSPVertex(ddd_seg7_vertex_07009490, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 4,  3,  5, 0x0,  5,  3,  0, 0x0),\n    gsSP2Triangles( 6,  4,  5, 0x0,  0,  4,  6, 0x0),\n    gsSP2Triangles( 6,  5,  0, 0x0,  0,  7,  8, 0x0),\n    gsSP2Triangles( 8,  9,  0, 0x0,  0, 10,  7, 0x0),\n    gsSP2Triangles( 9, 10,  0, 0x0, 10,  9,  8, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(14,  1,  0, 0x0,  2,  1, 14, 0x0),\n    gsSP2Triangles(15,  2, 14, 0x0,  0,  2, 15, 0x0),\n    gsSP1Triangle(15, 14,  0, 0x0),\n    gsSPVertex(ddd_seg7_vertex_07009590, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 0,  2,  3, 0x0,  4,  1,  0, 0x0),\n    gsSP1Triangle( 2,  1,  3, 0x0),\n    gsSPLight(&ddd_seg7_lights_070092B8.l, 1),\n    gsSPLight(&ddd_seg7_lights_070092B8.a, 2),\n    gsSPVertex(ddd_seg7_vertex_070095E0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  5,  3, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  0,  4,  7, 0x0),\n    gsSPLight(&ddd_seg7_lights_070092D0.l, 1),\n    gsSPLight(&ddd_seg7_lights_070092D0.a, 2),\n    gsSPVertex(ddd_seg7_vertex_07009660, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  5, 0x0),\n    gsSP2Triangles( 9,  7,  5, 0x0, 10,  9,  5, 0x0),\n    gsSP2Triangles( 6, 10,  5, 0x0, 11, 12,  2, 0x0),\n    gsSP2Triangles(12, 13,  2, 0x0, 13, 14,  2, 0x0),\n    gsSP1Triangle(14,  0,  2, 0x0),\n    gsSPVertex(ddd_seg7_vertex_07009750, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  2, 0x0,  7,  8,  2, 0x0),\n    gsSP2Triangles( 8,  9,  2, 0x0,  9, 10,  2, 0x0),\n    gsSP1Triangle(10,  0,  2, 0x0),\n    gsSPLight(&ddd_seg7_lights_070092E8.l, 1),\n    gsSPLight(&ddd_seg7_lights_070092E8.a, 2),\n    gsSPVertex(ddd_seg7_vertex_07009800, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  3,  5,  1, 0x0),\n    gsSP2Triangles( 6,  2,  7, 0x0,  6,  0,  2, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  8, 10, 0x0),\n    gsSP2Triangles( 8, 11, 12, 0x0,  8, 12, 13, 0x0),\n    gsSPVertex(ddd_seg7_vertex_070098E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  6,  4,  3, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  8, 10, 0x0),\n    gsSP2Triangles( 8, 12,  9, 0x0, 11,  2,  5, 0x0),\n    gsSP2Triangles( 1, 13,  5, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles(13, 14,  5, 0x0, 13, 15, 14, 0x0),\n    gsSP2Triangles(15,  3, 14, 0x0, 14,  3,  5, 0x0),\n    gsSP2Triangles(15,  6,  3, 0x0,  8, 11,  5, 0x0),\n    gsSPVertex(ddd_seg7_vertex_070099E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0,  0, 11,  1, 0x0),\n    gsSP2Triangles(11, 12,  1, 0x0, 13, 12, 14, 0x0),\n    gsSP1Triangle(12, 11, 14, 0x0),\n    gsSPVertex(ddd_seg7_vertex_07009AD0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  3,  2,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  8, 13,  9, 0x0),\n    gsSP2Triangles( 8, 14, 13, 0x0, 14, 15, 13, 0x0),\n    gsSPVertex(ddd_seg7_vertex_07009BD0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 3,  0,  5, 0x0,  5,  0,  6, 0x0),\n    gsSP2Triangles( 0,  2,  6, 0x0,  1,  7,  2, 0x0),\n    gsSP2Triangles( 6,  2,  8, 0x0,  2,  9,  8, 0x0),\n    gsSP2Triangles( 9,  2,  7, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(13, 10, 14, 0x0, 10, 12, 14, 0x0),\n    gsSP1Triangle(11, 15, 12, 0x0),\n    gsSPVertex(ddd_seg7_vertex_07009CD0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  5,  0, 0x0),\n    gsSP2Triangles( 8,  5,  7, 0x0,  8,  6,  5, 0x0),\n    gsSP2Triangles( 5,  4,  0, 0x0,  4,  1,  0, 0x0),\n    gsSP2Triangles( 9, 10,  6, 0x0, 11,  9,  8, 0x0),\n    gsSP2Triangles( 9,  6,  8, 0x0, 10,  4,  6, 0x0),\n    gsSP2Triangles( 8,  7, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ddd_seg7_vertex_07009DD0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  4,  6,  5, 0x0),\n    gsSP2Triangles( 7,  0,  2, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 9, 11, 10, 0x0, 12,  5, 13, 0x0),\n    gsSP1Triangle( 6, 14, 15, 0x0),\n    gsSPVertex(ddd_seg7_vertex_07009ED0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 8,  7,  9, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles( 9,  3, 11, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(12,  0, 13, 0x0,  0,  2, 13, 0x0),\n    gsSP2Triangles( 3,  0, 12, 0x0, 14,  8, 10, 0x0),\n    gsSP1Triangle(13,  2, 15, 0x0),\n    gsSPVertex(ddd_seg7_vertex_07009FD0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  1,  5,  4, 0x0),\n    gsSP2Triangles( 5,  6,  4, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 0,  3,  8, 0x0,  3,  9,  8, 0x0),\n    gsSP2Triangles( 5, 10,  7, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(10, 14, 15, 0x0),\n    gsSPVertex(ddd_seg7_vertex_0700A0D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  2,  3, 0x0,  5,  6,  2, 0x0),\n    gsSP2Triangles( 6,  0,  2, 0x0,  5,  2,  4, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  9,  5, 10, 0x0),\n    gsSP2Triangles( 9,  8,  5, 0x0, 10,  5,  4, 0x0),\n    gsSP2Triangles(11,  8,  9, 0x0, 11,  7,  8, 0x0),\n    gsSP2Triangles(12, 11, 13, 0x0, 13, 11,  9, 0x0),\n    gsSP2Triangles(11, 12,  7, 0x0, 14, 12, 13, 0x0),\n    gsSP1Triangle(15, 12, 14, 0x0),\n    gsSPVertex(ddd_seg7_vertex_0700A1D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 7,  8,  5, 0x0,  5,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 10, 11,  8, 0x0),\n    gsSP2Triangles( 8, 12,  9, 0x0,  8, 11, 12, 0x0),\n    gsSP2Triangles(11, 13, 12, 0x0, 14,  4,  6, 0x0),\n    gsSP2Triangles(14,  7,  4, 0x0, 14, 15,  7, 0x0),\n    gsSPVertex(ddd_seg7_vertex_0700A2D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 7,  8,  4, 0x0,  8,  3,  4, 0x0),\n    gsSP2Triangles( 8,  9,  3, 0x0,  9,  0,  3, 0x0),\n    gsSP2Triangles(10,  7,  6, 0x0, 10,  8,  7, 0x0),\n    gsSP2Triangles(11, 12,  8, 0x0, 12,  9,  8, 0x0),\n    gsSP2Triangles(10, 11,  8, 0x0, 13, 10, 14, 0x0),\n    gsSP2Triangles(10,  6, 14, 0x0, 13, 11, 10, 0x0),\n    gsSPVertex(ddd_seg7_vertex_0700A3C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  5, 0x0),\n    gsSP2Triangles( 8,  9,  5, 0x0,  9, 10,  5, 0x0),\n    gsSP2Triangles( 6,  7,  5, 0x0,  0, 11,  1, 0x0),\n    gsSP2Triangles( 0, 12, 11, 0x0,  1, 13,  2, 0x0),\n    gsSP2Triangles(14,  2, 13, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(ddd_seg7_vertex_0700A4C0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  4,  6, 0x0,  5,  1,  3, 0x0),\n    gsSP2Triangles( 8,  6,  9, 0x0, 10,  8,  9, 0x0),\n    gsSP2Triangles(10, 11,  8, 0x0,  5,  7,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700AEB8 - 0x0700AF10\nstatic const Gfx ddd_seg7_dl_0700AEB8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_0900A000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ddd_seg7_vertex_0700A580, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  2, 0x0,  3,  6,  2, 0x0),\n    gsSP2Triangles( 6,  4,  2, 0x0,  5,  7,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700AF10 - 0x0700AF78\nconst Gfx ddd_seg7_dl_0700AF10[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ddd_seg7_dl_0700A600),\n    gsSPDisplayList(ddd_seg7_dl_0700AEB8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ddd/submarine/2.inc.c",
    "content": "// 0x0700AF78 - 0x0700AF90\nstatic const Lights1 ddd_seg7_lights_0700AF78 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700AF90 - 0x0700B010\nstatic const Vtx ddd_seg7_vertex_0700AF90[] = {\n    {{{  3804,    776,     61}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3804,   1134,   -296}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3804,    776,   -296}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3804,   1134,     61}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4029,    776,   -296}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4029,   1134,     61}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4029,    776,     61}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4029,   1134,   -296}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700B010 - 0x0700B068\nstatic const Gfx ddd_seg7_dl_0700B010[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ddd_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ddd_seg7_lights_0700AF78.l, 1),\n    gsSPLight(&ddd_seg7_lights_0700AF78.a, 2),\n    gsSPVertex(ddd_seg7_vertex_0700AF90, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700B068 - 0x0700B0D8\nconst Gfx ddd_seg7_dl_0700B068[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ddd_seg7_dl_0700B010),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ddd/submarine/collision.inc.c",
    "content": "// 0x0700F17C - 0x0700FC48\nconst Collision ddd_seg7_collision_submarine[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x9A),\n    COL_VERTEX(4019, -175, 4106),\n    COL_VERTEX(4101, -94, 4106),\n    COL_VERTEX(4101, -94, 4168),\n    COL_VERTEX(4019, -175, 4168),\n    COL_VERTEX(3814, -175, 4106),\n    COL_VERTEX(3950, -57, 4106),\n    COL_VERTEX(3884, -57, 4106),\n    COL_VERTEX(3850, -24, 4106),\n    COL_VERTEX(3814, -42, 4045),\n    COL_VERTEX(3866, -94, 4045),\n    COL_VERTEX(3968, -94, 4045),\n    COL_VERTEX(3983, -24, 4106),\n    COL_VERTEX(3732, -94, 4106),\n    COL_VERTEX(3814, -175, 4168),\n    COL_VERTEX(3850, 41, 4106),\n    COL_VERTEX(3814, 59, 4045),\n    COL_VERTEX(3732, 110, 4106),\n    COL_VERTEX(3732, -94, 4168),\n    COL_VERTEX(3884, 74, 4106),\n    COL_VERTEX(3732, 110, 4168),\n    COL_VERTEX(3917, 243, 4106),\n    COL_VERTEX(3950, 74, 4106),\n    COL_VERTEX(3968, 110, 4045),\n    COL_VERTEX(3917, 243, 4168),\n    COL_VERTEX(3983, 41, 4106),\n    COL_VERTEX(4101, 110, 4106),\n    COL_VERTEX(4101, 110, 4168),\n    COL_VERTEX(4019, -42, 4045),\n    COL_VERTEX(3902, -21, 4168),\n    COL_VERTEX(3932, -21, 4168),\n    COL_VERTEX(3947, -6, 4168),\n    COL_VERTEX(3887, -6, 4168),\n    COL_VERTEX(3929, 14, 4198),\n    COL_VERTEX(3947, 23, 4168),\n    COL_VERTEX(3932, 38, 4168),\n    COL_VERTEX(3923, 20, 4198),\n    COL_VERTEX(3902, 38, 4168),\n    COL_VERTEX(3887, 23, 4168),\n    COL_VERTEX(3947, 147, 3942),\n    COL_VERTEX(3866, 110, 4045),\n    COL_VERTEX(3886, 147, 3942),\n    COL_VERTEX(3507, 417, 2765),\n    COL_VERTEX(3712, 571, 2765),\n    COL_VERTEX(3947, 258, 3635),\n    COL_VERTEX(3886, 258, 3635),\n    COL_VERTEX(4326, 417, 2765),\n    COL_VERTEX(4052, -22, 3942),\n    COL_VERTEX(4429, 161, 2765),\n    COL_VERTEX(4019, 59, 4045),\n    COL_VERTEX(4150, -22, 3635),\n    COL_VERTEX(4150, 39, 3635),\n    COL_VERTEX(4531, -503, 1741),\n    COL_VERTEX(4429, -145, 2765),\n    COL_VERTEX(4326, -401, 2765),\n    COL_VERTEX(4634, -196, 1741),\n    COL_VERTEX(3886, -134, 3942),\n    COL_VERTEX(3610, -503, 2765),\n    COL_VERTEX(3947, -503, 3635),\n    COL_VERTEX(3886, -257, 3635),\n    COL_VERTEX(3886, -503, 3942),\n    COL_VERTEX(3886, -503, 3635),\n    COL_VERTEX(3947, -257, 3635),\n    COL_VERTEX(3507, -708, 1741),\n    COL_VERTEX(3814, -810, 1741),\n    COL_VERTEX(3814, -606, 2765),\n    COL_VERTEX(4019, -606, 2765),\n    COL_VERTEX(3683, -22, 3635),\n    COL_VERTEX(3405, -22, 3635),\n    COL_VERTEX(3405, 161, 2765),\n    COL_VERTEX(3405, -145, 2765),\n    COL_VERTEX(3200, 213, 1741),\n    COL_VERTEX(3405, -22, 3942),\n    COL_VERTEX(3507, -401, 2765),\n    COL_VERTEX(3947, -503, 3942),\n    COL_VERTEX(3405, 39, 3635),\n    COL_VERTEX(4429, 39, 3942),\n    COL_VERTEX(3302, -503, 1741),\n    COL_VERTEX(4224, -503, 2765),\n    COL_VERTEX(4634, 213, 1741),\n    COL_VERTEX(3866, 571, -409),\n    COL_VERTEX(3866, 571, 256),\n    COL_VERTEX(4019, 1185, 51),\n    COL_VERTEX(3814, 1185, 51),\n    COL_VERTEX(3814, 1185, -306),\n    COL_VERTEX(4019, 571, -306),\n    COL_VERTEX(4019, 571, 51),\n    COL_VERTEX(4019, -196, -2457),\n    COL_VERTEX(3814, -196, -2457),\n    COL_VERTEX(4019, 213, -2457),\n    COL_VERTEX(4122, 110, -2457),\n    COL_VERTEX(3814, 213, -2457),\n    COL_VERTEX(4122, -94, -2457),\n    COL_VERTEX(3456, -350, -1996),\n    COL_VERTEX(3712, -94, -2457),\n    COL_VERTEX(3661, -554, -1996),\n    COL_VERTEX(3507, -708, -1330),\n    COL_VERTEX(3302, -503, -1330),\n    COL_VERTEX(3200, -196, -1330),\n    COL_VERTEX(3661, 571, -1996),\n    COL_VERTEX(3405, 161, -1996),\n    COL_VERTEX(3354, 571, -1330),\n    COL_VERTEX(3456, 366, -1996),\n    COL_VERTEX(3712, 110, -2457),\n    COL_VERTEX(3200, 213, -1330),\n    COL_VERTEX(3354, 571, 1741),\n    COL_VERTEX(3200, -196, 1741),\n    COL_VERTEX(4173, -554, -1996),\n    COL_VERTEX(4326, -708, -1330),\n    COL_VERTEX(4019, -810, -1330),\n    COL_VERTEX(3814, -606, -1996),\n    COL_VERTEX(4429, -145, -1996),\n    COL_VERTEX(4378, -350, -1996),\n    COL_VERTEX(4634, -196, -1330),\n    COL_VERTEX(4531, -503, -1330),\n    COL_VERTEX(4378, 366, -1996),\n    COL_VERTEX(4634, 213, -1330),\n    COL_VERTEX(4480, 571, -1330),\n    COL_VERTEX(3814, -810, -1330),\n    COL_VERTEX(4019, -810, 1741),\n    COL_VERTEX(4326, -708, 1741),\n    COL_VERTEX(4173, 571, -1996),\n    COL_VERTEX(3911, 20, 4198),\n    COL_VERTEX(3905, 14, 4198),\n    COL_VERTEX(3929, 2, 4198),\n    COL_VERTEX(3923, -3, 4198),\n    COL_VERTEX(3911, -3, 4198),\n    COL_VERTEX(3905, 2, 4198),\n    COL_VERTEX(4122, 571, 2765),\n    COL_VERTEX(3886, 520, 3942),\n    COL_VERTEX(3886, 520, 3635),\n    COL_VERTEX(3947, 520, 3942),\n    COL_VERTEX(4480, 571, 1741),\n    COL_VERTEX(3947, 520, 3635),\n    COL_VERTEX(3683, 39, 3635),\n    COL_VERTEX(4052, 39, 3942),\n    COL_VERTEX(4429, -22, 3942),\n    COL_VERTEX(4429, -22, 3635),\n    COL_VERTEX(4429, 39, 3635),\n    COL_VERTEX(3947, -134, 3942),\n    COL_VERTEX(3782, -22, 3942),\n    COL_VERTEX(3782, 39, 3942),\n    COL_VERTEX(3405, 39, 3942),\n    COL_VERTEX(3866, 1185, -409),\n    COL_VERTEX(3968, 1185, -409),\n    COL_VERTEX(3968, 571, -409),\n    COL_VERTEX(3968, 571, 256),\n    COL_VERTEX(3968, 1185, 154),\n    COL_VERTEX(3866, 1185, 154),\n    COL_VERTEX(3814, 571, 51),\n    COL_VERTEX(3814, 571, -306),\n    COL_VERTEX(4019, 1185, -306),\n    COL_VERTEX(3405, -145, -1996),\n    COL_VERTEX(4019, -606, -1996),\n    COL_VERTEX(4429, 161, -1996),\n    COL_TRI_INIT(SURFACE_DEFAULT, 28),\n    COL_TRI(131, 85, 145),\n    COL_TRI(131, 80, 104),\n    COL_TRI(131, 145, 80),\n    COL_TRI(116, 85, 131),\n    COL_TRI(116, 84, 85),\n    COL_TRI(80, 148, 104),\n    COL_TRI(148, 149, 100),\n    COL_TRI(104, 148, 100),\n    COL_TRI(100, 79, 144),\n    COL_TRI(120, 100, 116),\n    COL_TRI(100, 144, 116),\n    COL_TRI(100, 149, 79),\n    COL_TRI(120, 98, 100),\n    COL_TRI(144, 84, 116),\n    COL_TRI(141, 133, 74),\n    COL_TRI(141, 140, 133),\n    COL_TRI(134, 137, 50),\n    COL_TRI(134, 75, 137),\n    COL_TRI(83, 82, 147),\n    COL_TRI(83, 147, 146),\n    COL_TRI(83, 143, 142),\n    COL_TRI(83, 150, 143),\n    COL_TRI(83, 146, 81),\n    COL_TRI(83, 81, 150),\n    COL_TRI(127, 131, 104),\n    COL_TRI(42, 127, 104),\n    COL_TRI(128, 132, 129),\n    COL_TRI(128, 130, 132),\n    COL_TRI_INIT(SURFACE_VERY_SLIPPERY, 276),\n    COL_TRI(0, 1, 2),\n    COL_TRI(3, 0, 2),\n    COL_TRI(4, 0, 3),\n    COL_TRI(1, 0, 5),\n    COL_TRI(0, 6, 5),\n    COL_TRI(0, 4, 6),\n    COL_TRI(7, 8, 6),\n    COL_TRI(8, 9, 6),\n    COL_TRI(7, 6, 4),\n    COL_TRI(9, 10, 5),\n    COL_TRI(6, 9, 5),\n    COL_TRI(1, 5, 11),\n    COL_TRI(12, 4, 13),\n    COL_TRI(13, 4, 3),\n    COL_TRI(7, 4, 12),\n    COL_TRI(14, 15, 7),\n    COL_TRI(15, 8, 7),\n    COL_TRI(14, 7, 12),\n    COL_TRI(16, 12, 17),\n    COL_TRI(17, 12, 13),\n    COL_TRI(14, 12, 16),\n    COL_TRI(18, 15, 14),\n    COL_TRI(18, 14, 16),\n    COL_TRI(19, 16, 17),\n    COL_TRI(20, 16, 19),\n    COL_TRI(18, 16, 20),\n    COL_TRI(1, 24, 25),\n    COL_TRI(21, 22, 18),\n    COL_TRI(22, 39, 18),\n    COL_TRI(18, 39, 15),\n    COL_TRI(21, 18, 20),\n    COL_TRI(23, 20, 19),\n    COL_TRI(21, 20, 25),\n    COL_TRI(24, 21, 25),\n    COL_TRI(25, 20, 23),\n    COL_TRI(1, 25, 26),\n    COL_TRI(26, 25, 23),\n    COL_TRI(24, 11, 48),\n    COL_TRI(1, 11, 24),\n    COL_TRI(2, 1, 26),\n    COL_TRI(10, 27, 11),\n    COL_TRI(5, 10, 11),\n    COL_TRI(3, 28, 13),\n    COL_TRI(3, 29, 28),\n    COL_TRI(30, 3, 2),\n    COL_TRI(30, 29, 3),\n    COL_TRI(11, 27, 48),\n    COL_TRI(29, 123, 124),\n    COL_TRI(28, 125, 126),\n    COL_TRI(31, 28, 126),\n    COL_TRI(28, 29, 125),\n    COL_TRI(17, 13, 28),\n    COL_TRI(17, 28, 31),\n    COL_TRI(29, 124, 125),\n    COL_TRI(32, 123, 30),\n    COL_TRI(29, 30, 123),\n    COL_TRI(33, 32, 30),\n    COL_TRI(33, 30, 2),\n    COL_TRI(33, 2, 26),\n    COL_TRI(34, 35, 33),\n    COL_TRI(35, 32, 33),\n    COL_TRI(34, 33, 26),\n    COL_TRI(34, 26, 23),\n    COL_TRI(34, 36, 35),\n    COL_TRI(36, 34, 23),\n    COL_TRI(19, 36, 23),\n    COL_TRI(36, 121, 35),\n    COL_TRI(19, 37, 36),\n    COL_TRI(19, 17, 31),\n    COL_TRI(19, 31, 37),\n    COL_TRI(22, 45, 127),\n    COL_TRI(37, 31, 122),\n    COL_TRI(31, 126, 122),\n    COL_TRI(36, 37, 121),\n    COL_TRI(37, 122, 121),\n    COL_TRI(38, 22, 127),\n    COL_TRI(22, 40, 39),\n    COL_TRI(22, 38, 40),\n    COL_TRI(22, 48, 45),\n    COL_TRI(39, 40, 42),\n    COL_TRI(40, 44, 42),\n    COL_TRI(40, 128, 129),\n    COL_TRI(40, 129, 44),\n    COL_TRI(41, 15, 39),\n    COL_TRI(42, 41, 39),\n    COL_TRI(43, 38, 127),\n    COL_TRI(38, 128, 40),\n    COL_TRI(38, 130, 128),\n    COL_TRI(43, 130, 38),\n    COL_TRI(44, 43, 127),\n    COL_TRI(44, 127, 42),\n    COL_TRI(27, 134, 48),\n    COL_TRI(45, 131, 127),\n    COL_TRI(44, 132, 43),\n    COL_TRI(44, 129, 132),\n    COL_TRI(42, 104, 41),\n    COL_TRI(46, 27, 52),\n    COL_TRI(27, 46, 134),\n    COL_TRI(47, 134, 50),\n    COL_TRI(47, 48, 134),\n    COL_TRI(46, 75, 134),\n    COL_TRI(48, 47, 45),\n    COL_TRI(49, 46, 52),\n    COL_TRI(46, 135, 75),\n    COL_TRI(49, 135, 46),\n    COL_TRI(47, 50, 49),\n    COL_TRI(49, 52, 47),\n    COL_TRI(49, 136, 135),\n    COL_TRI(50, 136, 49),\n    COL_TRI(51, 54, 52),\n    COL_TRI(52, 54, 47),\n    COL_TRI(53, 51, 52),\n    COL_TRI(27, 53, 52),\n    COL_TRI(75, 135, 136),\n    COL_TRI(54, 78, 47),\n    COL_TRI(47, 78, 45),\n    COL_TRI(50, 137, 136),\n    COL_TRI(9, 138, 10),\n    COL_TRI(9, 55, 138),\n    COL_TRI(55, 9, 64),\n    COL_TRI(56, 64, 9),\n    COL_TRI(56, 9, 8),\n    COL_TRI(61, 64, 65),\n    COL_TRI(57, 138, 73),\n    COL_TRI(57, 61, 138),\n    COL_TRI(10, 138, 61),\n    COL_TRI(10, 61, 65),\n    COL_TRI(10, 77, 53),\n    COL_TRI(27, 10, 53),\n    COL_TRI(10, 65, 77),\n    COL_TRI(58, 55, 64),\n    COL_TRI(59, 55, 58),\n    COL_TRI(61, 58, 64),\n    COL_TRI(60, 58, 61),\n    COL_TRI(59, 58, 60),\n    COL_TRI(62, 63, 64),\n    COL_TRI(56, 62, 64),\n    COL_TRI(63, 118, 65),\n    COL_TRI(64, 63, 65),\n    COL_TRI(65, 119, 77),\n    COL_TRI(65, 118, 119),\n    COL_TRI(69, 72, 8),\n    COL_TRI(8, 139, 66),\n    COL_TRI(8, 66, 69),\n    COL_TRI(66, 68, 69),\n    COL_TRI(66, 133, 68),\n    COL_TRI(67, 66, 139),\n    COL_TRI(68, 70, 69),\n    COL_TRI(41, 70, 68),\n    COL_TRI(15, 68, 133),\n    COL_TRI(41, 68, 15),\n    COL_TRI(69, 76, 72),\n    COL_TRI(69, 105, 76),\n    COL_TRI(70, 105, 69),\n    COL_TRI(73, 60, 57),\n    COL_TRI(15, 133, 140),\n    COL_TRI(8, 15, 140),\n    COL_TRI(8, 140, 139),\n    COL_TRI(71, 139, 140),\n    COL_TRI(71, 140, 141),\n    COL_TRI(72, 56, 8),\n    COL_TRI(67, 139, 71),\n    COL_TRI(60, 61, 57),\n    COL_TRI(74, 66, 67),\n    COL_TRI(73, 59, 60),\n    COL_TRI(73, 55, 59),\n    COL_TRI(73, 138, 55),\n    COL_TRI(43, 132, 130),\n    COL_TRI(74, 67, 71),\n    COL_TRI(74, 71, 141),\n    COL_TRI(76, 62, 56),\n    COL_TRI(74, 133, 66),\n    COL_TRI(75, 136, 137),\n    COL_TRI(41, 104, 70),\n    COL_TRI(72, 76, 56),\n    COL_TRI(80, 146, 147),\n    COL_TRI(77, 51, 53),\n    COL_TRI(77, 119, 51),\n    COL_TRI(78, 131, 45),\n    COL_TRI(79, 142, 143),\n    COL_TRI(79, 143, 144),\n    COL_TRI(80, 145, 146),\n    COL_TRI(84, 143, 150),\n    COL_TRI(81, 146, 145),\n    COL_TRI(80, 147, 82),\n    COL_TRI(80, 82, 148),\n    COL_TRI(82, 83, 149),\n    COL_TRI(82, 149, 148),\n    COL_TRI(83, 79, 149),\n    COL_TRI(83, 142, 79),\n    COL_TRI(84, 144, 143),\n    COL_TRI(91, 86, 102),\n    COL_TRI(85, 84, 150),\n    COL_TRI(85, 150, 81),\n    COL_TRI(85, 81, 145),\n    COL_TRI(86, 87, 102),\n    COL_TRI(87, 93, 102),\n    COL_TRI(88, 89, 102),\n    COL_TRI(89, 91, 102),\n    COL_TRI(90, 88, 102),\n    COL_TRI(98, 90, 101),\n    COL_TRI(92, 93, 94),\n    COL_TRI(93, 87, 94),\n    COL_TRI(87, 109, 94),\n    COL_TRI(92, 94, 95),\n    COL_TRI(94, 109, 117),\n    COL_TRI(95, 94, 117),\n    COL_TRI(93, 92, 151),\n    COL_TRI(96, 92, 95),\n    COL_TRI(97, 92, 96),\n    COL_TRI(97, 151, 92),\n    COL_TRI(62, 95, 63),\n    COL_TRI(90, 102, 101),\n    COL_TRI(99, 101, 102),\n    COL_TRI(100, 101, 103),\n    COL_TRI(101, 99, 103),\n    COL_TRI(98, 101, 100),\n    COL_TRI(99, 102, 151),\n    COL_TRI(102, 93, 151),\n    COL_TRI(99, 151, 97),\n    COL_TRI(103, 99, 97),\n    COL_TRI(96, 95, 62),\n    COL_TRI(106, 152, 86),\n    COL_TRI(97, 96, 76),\n    COL_TRI(76, 96, 62),\n    COL_TRI(95, 117, 63),\n    COL_TRI(104, 100, 70),\n    COL_TRI(100, 103, 70),\n    COL_TRI(70, 103, 105),\n    COL_TRI(103, 97, 105),\n    COL_TRI(105, 97, 76),\n    COL_TRI(86, 91, 111),\n    COL_TRI(106, 111, 113),\n    COL_TRI(108, 152, 106),\n    COL_TRI(109, 152, 108),\n    COL_TRI(87, 86, 152),\n    COL_TRI(109, 87, 152),\n    COL_TRI(110, 111, 91),\n    COL_TRI(111, 110, 112),\n    COL_TRI(110, 91, 153),\n    COL_TRI(112, 110, 115),\n    COL_TRI(110, 153, 115),\n    COL_TRI(113, 111, 112),\n    COL_TRI(106, 86, 111),\n    COL_TRI(118, 108, 119),\n    COL_TRI(91, 89, 153),\n    COL_TRI(89, 114, 153),\n    COL_TRI(114, 89, 120),\n    COL_TRI(115, 153, 114),\n    COL_TRI(115, 114, 116),\n    COL_TRI(116, 114, 120),\n    COL_TRI(63, 117, 118),\n    COL_TRI(117, 108, 118),\n    COL_TRI(107, 106, 113),\n    COL_TRI(119, 107, 51),\n    COL_TRI(108, 107, 119),\n    COL_TRI(107, 113, 51),\n    COL_TRI(51, 113, 54),\n    COL_TRI(54, 112, 78),\n    COL_TRI(113, 112, 54),\n    COL_TRI(78, 115, 131),\n    COL_TRI(112, 115, 78),\n    COL_TRI(115, 116, 131),\n    COL_TRI(117, 109, 108),\n    COL_TRI(108, 106, 107),\n    COL_TRI(124, 123, 125),\n    COL_TRI(89, 88, 120),\n    COL_TRI(120, 88, 98),\n    COL_TRI(88, 90, 98),\n    COL_TRI(121, 122, 125),\n    COL_TRI(122, 126, 125),\n    COL_TRI(35, 121, 125),\n    COL_TRI(32, 35, 125),\n    COL_TRI(123, 32, 125),\n    COL_TRI(21, 24, 22),\n    COL_TRI(24, 48, 22),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/ddd/submarine/geo.inc.c",
    "content": "// 0x0E0004A0\nconst GeoLayout ddd_geo_0004A0[] = {\n    GEO_CULLING_RADIUS(10000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, ddd_seg7_dl_0700AF10),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, ddd_seg7_dl_0700B068),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ddd/texture.inc.c",
    "content": "// 0x07000000 - 0x07001000\nALIGNED8 static const Texture ddd_seg7_texture_07000000[] = {\n#include \"levels/ddd/0.rgba16.inc.c\"\n};\n\n// 0x07001000 - 0x07001800\nALIGNED8 static const Texture ddd_seg7_texture_07001000[] = {\n#include \"levels/ddd/1.rgba16.inc.c\"\n};\n\n// 0x07001800 - 0x07002000\nALIGNED8 static const Texture ddd_seg7_texture_07001800[] = {\n#include \"levels/ddd/2.rgba16.inc.c\"\n};\n\n// 0x07002000 - 0x07003000\nALIGNED8 static const Texture ddd_seg7_texture_07002000[] = {\n#include \"levels/ddd/3.rgba16.inc.c\"\n};\n\n// 0x07003000 - 0x07003800\nALIGNED8 static const Texture ddd_seg7_texture_07003000[] = {\n#include \"levels/ddd/4.rgba16.inc.c\"\n};\n"
  },
  {
    "path": "levels/ending/geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"game/level_geo.h\"\n#include \"game/geo_misc.h\"\n#include \"game/camera.h\"\n#include \"game/moving_texture.h\"\n#include \"game/screen_transition.h\"\n#include \"game/paintings.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"levels/ending/header.h\"\n\n// 0x0E000050\nconst GeoLayout ending_geo_000050[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n#ifdef VERSION_EU\n                GEO_BACKGROUND_COLOR(0x0001),\n#endif\n                GEO_ASM(0, geo_exec_cake_end_screen),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 12800, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(1, 0, 2000, 6000, 0, 0, 0, geo_camera_main),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n"
  },
  {
    "path": "levels/ending/header.h",
    "content": "#ifndef ENDING_HEADER_H\n#define ENDING_HEADER_H\n\n#include \"types.h\"\n\n// geo\nextern const GeoLayout ending_geo_000050[];\n\n// leveldata\nextern const Gfx dl_cake_end_screen[];\nextern const Gfx dl_cake_end_screen_eu_070296F8[];\nextern const Gfx dl_cake_end_screen_eu_07029768[];\nextern const Gfx dl_cake_end_screen_eu_070297D8[];\nextern const Gfx dl_cake_end_screen[];\n\n// script\nextern const LevelScript level_ending_entry[];\n\n#endif\n"
  },
  {
    "path": "levels/ending/leveldata.c",
    "content": "#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\n#include \"macros.h\"\n#include \"types.h\"\n\n#include \"make_const_nonconst.h\"\n\n#ifdef VERSION_EU\n#include \"levels/ending/cake_eu.inc.c\"\n\n// 0x07023000 - 0x07023FFF\nALIGNED8 static const Texture cake_end_texture_eu_35[] = {\n#include \"levels/ending/eu_023000.rgba16.inc.c\"\n};\n\n// 0x07024000 - 0x07024FFF\nALIGNED8 static const Texture cake_end_texture_eu_36[] = {\n#include \"levels/ending/eu_024000.rgba16.inc.c\"\n};\n\n// 0x07025000 - 0x07025FFF\nALIGNED8 static const Texture cake_end_texture_eu_37[] = {\n#include \"levels/ending/eu_025000.rgba16.inc.c\"\n};\n\n// 0x07026000 - 0x07026FFF\nALIGNED8 static const Texture cake_end_texture_eu_38[] = {\n#include \"levels/ending/eu_026000.rgba16.inc.c\"\n};\n\n// 0x07027000 - 0x07027FFF\nALIGNED8 static const Texture cake_end_texture_eu_39[] = {\n#include \"levels/ending/eu_027000.rgba16.inc.c\"\n};\n\n// 0x07028000 - 0x07028FFF\nALIGNED8 static const Texture cake_end_texture_eu_40[] = {\n#include \"levels/ending/eu_028000.rgba16.inc.c\"\n};\n\n// 0x07029000 - 0x070296D8\nconst Gfx dl_cake_end_screen[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_COPY),\n    gsDPSetTexturePersp(G_TP_NONE),\n    gsDPSetRenderMode(G_RM_NOOP, G_RM_NOOP2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(0 << 2, 8 << 2, (0 + 63) << 2, (8 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_1),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(64 << 2, 8 << 2, (64 + 63) << 2, (8 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_2),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(128 << 2, 8 << 2, (128 + 63) << 2, (8 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_3),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(192 << 2, 8 << 2, (192 + 63) << 2, (8 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_4),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(256 << 2, 8 << 2, (256 + 63) << 2, (8 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_5),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(0 << 2, 40 << 2, (0 + 63) << 2, (40 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_6),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(64 << 2, 40 << 2, (64 + 63) << 2, (40 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_7),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(128 << 2, 40 << 2, (128 + 63) << 2, (40 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(192 << 2, 40 << 2, (192 + 63) << 2, (40 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_9),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(256 << 2, 40 << 2, (256 + 63) << 2, (40 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_10),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(0 << 2, 72 << 2, (0 + 63) << 2, (72 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_11),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(64 << 2, 72 << 2, (64 + 63) << 2, (72 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_12),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(128 << 2, 72 << 2, (128 + 63) << 2, (72 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_13),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(192 << 2, 72 << 2, (192 + 63) << 2, (72 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_14),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(256 << 2, 72 << 2, (256 + 63) << 2, (72 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_15),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(0 << 2, 104 << 2, (0 + 63) << 2, (104 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_16),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(64 << 2, 104 << 2, (64 + 63) << 2, (104 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_17),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(128 << 2, 104 << 2, (128 + 63) << 2, (104 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_18),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(192 << 2, 104 << 2, (192 + 63) << 2, (104 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_19),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(256 << 2, 104 << 2, (256 + 63) << 2, (104 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_20),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(0 << 2, 136 << 2, (0 + 63) << 2, (136 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_21),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(64 << 2, 136 << 2, (64 + 63) << 2, (136 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_22),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(128 << 2, 136 << 2, (128 + 63) << 2, (136 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_23),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(192 << 2, 136 << 2, (192 + 63) << 2, (136 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_24),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(256 << 2, 136 << 2, (256 + 63) << 2, (136 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_25),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(0 << 2, 168 << 2, (0 + 63) << 2, (168 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_26),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(64 << 2, 168 << 2, (64 + 63) << 2, (168 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_27),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(128 << 2, 168 << 2, (128 + 63) << 2, (168 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_28),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(192 << 2, 168 << 2, (192 + 63) << 2, (168 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_29),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(256 << 2, 168 << 2, (256 + 63) << 2, (168 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_30),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(0 << 2, 200 << 2, (0 + 63) << 2, (200 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_31),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(64 << 2, 200 << 2, (64 + 63) << 2, (200 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_32),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(128 << 2, 200 << 2, (128 + 63) << 2, (200 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_33),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(192 << 2, 200 << 2, (192 + 63) << 2, (200 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_34),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(256 << 2, 200 << 2, (256 + 63) << 2, (200 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsSPEndDisplayList(),\n};\n\n// 0x070296D8 - 0x070296F8\nstatic const Gfx dl_cake_end_eu_070296D8[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetTexturePersp(G_TP_PERSP),\n    gsSPEndDisplayList(),\n};\n\n// 0x070296F8 - 0x07029768\nconst Gfx dl_cake_end_screen_eu_070296F8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_38),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(128 << 2, 200 << 2, (128 + 63) << 2, (200 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_35),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(128 << 2, 125 << 2, (128 + 63) << 2, (125 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsSPDisplayList(dl_cake_end_eu_070296D8),\n    gsSPEndDisplayList(),\n};\n\n// 0x07029768 - 0x070297D8\nconst Gfx dl_cake_end_screen_eu_07029768[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_39),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(128 << 2, 200 << 2, (128 + 63) << 2, (200 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_36),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(128 << 2, 125 << 2, (128 + 63) << 2, (125 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsSPDisplayList(dl_cake_end_eu_070296D8),\n    gsSPEndDisplayList(),\n};\n\n// 0x070297D8 - 0x07029848\nconst Gfx dl_cake_end_screen_eu_070297D8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_40),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(128 << 2, 200 << 2, (128 + 63) << 2, (200 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_37),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPTextureRectangle(128 << 2, 125 << 2, (128 + 63) << 2, (125 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10),\n    gsSPDisplayList(dl_cake_end_eu_070296D8),\n    gsSPEndDisplayList(),\n};\n\n// VERSION_EU\n#else\n\n#ifdef VERSION_CN\n#include \"levels/ending/cake_cn.inc.c\"\n#else\n#include \"levels/ending/cake.inc.c\"\n#endif\n\n// 0x07025800 - 0x07025840\nstatic const Vtx cake_end_vertex_07025800[] = {\n    {{{     0,    220,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,    220,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,    240,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    240,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07025840 - 0x07025880\nstatic const Vtx cake_end_vertex_07025840[] = {\n    {{{    80,    220,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   160,    220,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   160,    240,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,    240,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07025880 - 0x070258C0\nstatic const Vtx cake_end_vertex_07025880[] = {\n    {{{   160,    220,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   240,    220,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   240,    240,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   160,    240,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070258C0 - 0x07025900\nstatic const Vtx cake_end_vertex_070258C0[] = {\n    {{{   240,    220,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   320,    220,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   320,    240,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   240,    240,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07025900 - 0x07025940\nstatic const Vtx cake_end_vertex_07025900[] = {\n    {{{     0,    200,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,    200,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,    220,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    220,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07025940 - 0x07025980\nstatic const Vtx cake_end_vertex_07025940[] = {\n    {{{    80,    200,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   160,    200,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   160,    220,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,    220,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07025980 - 0x070259C0\nstatic const Vtx cake_end_vertex_07025980[] = {\n    {{{   160,    200,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   240,    200,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   240,    220,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   160,    220,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070259C0 - 0x07025A00\nstatic const Vtx cake_end_vertex_070259C0[] = {\n    {{{   240,    200,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   320,    200,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   320,    220,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   240,    220,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07025A00 - 0x07025A40\nstatic const Vtx cake_end_vertex_07025A00[] = {\n    {{{     0,    180,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,    180,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,    200,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    200,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07025A40 - 0x07025A80\nstatic const Vtx cake_end_vertex_07025A40[] = {\n    {{{    80,    180,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   160,    180,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   160,    200,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,    200,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07025A80 - 0x07025AC0\nstatic const Vtx cake_end_vertex_07025A80[] = {\n    {{{   160,    180,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   240,    180,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   240,    200,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   160,    200,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07025AC0 - 0x07025B00\nstatic const Vtx cake_end_vertex_07025AC0[] = {\n    {{{   240,    180,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   320,    180,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   320,    200,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   240,    200,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07025B00 - 0x07025B40\nstatic const Vtx cake_end_vertex_07025B00[] = {\n    {{{     0,    160,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,    160,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,    180,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    180,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07025B40 - 0x07025B80\nstatic const Vtx cake_end_vertex_07025B40[] = {\n    {{{    80,    160,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   160,    160,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   160,    180,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,    180,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07025B80 - 0x07025BC0\nstatic const Vtx cake_end_vertex_07025B80[] = {\n    {{{   160,    160,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   240,    160,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   240,    180,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   160,    180,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07025BC0 - 0x07025C00\nstatic const Vtx cake_end_vertex_07025BC0[] = {\n    {{{   240,    160,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   320,    160,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   320,    180,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   240,    180,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07025C00 - 0x07025C40\nstatic const Vtx cake_end_vertex_07025C00[] = {\n    {{{     0,    140,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,    140,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,    160,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    160,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07025C40 - 0x07025C80\nstatic const Vtx cake_end_vertex_07025C40[] = {\n    {{{    80,    140,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   160,    140,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   160,    160,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,    160,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07025C80 - 0x07025CC0\nstatic const Vtx cake_end_vertex_07025C80[] = {\n    {{{   160,    140,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   240,    140,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   240,    160,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   160,    160,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07025CC0 - 0x07025D00\nstatic const Vtx cake_end_vertex_07025CC0[] = {\n    {{{   240,    140,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   320,    140,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   320,    160,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   240,    160,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07025D00 - 0x07025D40\nstatic const Vtx cake_end_vertex_07025D00[] = {\n    {{{     0,    120,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,    120,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,    140,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    140,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07025D40 - 0x07025D80\nstatic const Vtx cake_end_vertex_07025D40[] = {\n    {{{    80,    120,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   160,    120,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   160,    140,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,    140,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07025D80 - 0x07025DC0\nstatic const Vtx cake_end_vertex_07025D80[] = {\n    {{{   160,    120,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   240,    120,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   240,    140,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   160,    140,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07025DC0 - 0x07025E00\nstatic const Vtx cake_end_vertex_07025DC0[] = {\n    {{{   240,    120,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   320,    120,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   320,    140,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   240,    140,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07025E00 - 0x07025E40\nstatic const Vtx cake_end_vertex_07025E00[] = {\n    {{{     0,    100,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,    100,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,    120,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    120,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07025E40 - 0x07025E80\nstatic const Vtx cake_end_vertex_07025E40[] = {\n    {{{    80,    100,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   160,    100,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   160,    120,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,    120,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07025E80 - 0x07025EC0\nstatic const Vtx cake_end_vertex_07025E80[] = {\n    {{{   160,    100,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   240,    100,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   240,    120,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   160,    120,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07025EC0 - 0x07025F00\nstatic const Vtx cake_end_vertex_07025EC0[] = {\n    {{{   240,    100,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   320,    100,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   320,    120,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   240,    120,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07025F00 - 0x07025F40\nstatic const Vtx cake_end_vertex_07025F00[] = {\n    {{{     0,     80,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,     80,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,    100,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    100,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07025F40 - 0x07025F80\nstatic const Vtx cake_end_vertex_07025F40[] = {\n    {{{    80,     80,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   160,     80,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   160,    100,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,    100,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07025F80 - 0x07025FC0\nstatic const Vtx cake_end_vertex_07025F80[] = {\n    {{{   160,     80,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   240,     80,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   240,    100,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   160,    100,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07025FC0 - 0x07026000\nstatic const Vtx cake_end_vertex_07025FC0[] = {\n    {{{   240,     80,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   320,     80,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   320,    100,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   240,    100,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07026000 - 0x07026040\nstatic const Vtx cake_end_vertex_07026000[] = {\n    {{{     0,     60,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,     60,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,     80,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,     80,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07026040 - 0x07026080\nstatic const Vtx cake_end_vertex_07026040[] = {\n    {{{    80,     60,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   160,     60,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   160,     80,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,     80,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07026080 - 0x070260C0\nstatic const Vtx cake_end_vertex_07026080[] = {\n    {{{   160,     60,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   240,     60,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   240,     80,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   160,     80,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070260C0 - 0x07026100\nstatic const Vtx cake_end_vertex_070260C0[] = {\n    {{{   240,     60,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   320,     60,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   320,     80,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   240,     80,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07026100 - 0x07026140\nstatic const Vtx cake_end_vertex_07026100[] = {\n    {{{     0,     40,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,     40,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,     60,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,     60,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07026140 - 0x07026180\nstatic const Vtx cake_end_vertex_07026140[] = {\n    {{{    80,     40,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   160,     40,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   160,     60,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,     60,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07026180 - 0x070261C0\nstatic const Vtx cake_end_vertex_07026180[] = {\n    {{{   160,     40,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   240,     40,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   240,     60,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   160,     60,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070261C0 - 0x07026200\nstatic const Vtx cake_end_vertex_070261C0[] = {\n    {{{   240,     40,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   320,     40,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   320,     60,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   240,     60,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07026200 - 0x07026240\nstatic const Vtx cake_end_vertex_07026200[] = {\n    {{{     0,     20,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,     20,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,     40,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,     40,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07026240 - 0x07026280\nstatic const Vtx cake_end_vertex_07026240[] = {\n    {{{    80,     20,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   160,     20,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   160,     40,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,     40,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07026280 - 0x070262C0\nstatic const Vtx cake_end_vertex_07026280[] = {\n    {{{   160,     20,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   240,     20,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   240,     40,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   160,     40,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070262C0 - 0x07026300\nstatic const Vtx cake_end_vertex_070262C0[] = {\n    {{{   240,     20,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   320,     20,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   320,     40,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   240,     40,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07026300 - 0x07026340\nstatic const Vtx cake_end_vertex_07026300[] = {\n    {{{     0,      0,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,      0,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,     20,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,     20,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07026340 - 0x07026380\nstatic const Vtx cake_end_vertex_07026340[] = {\n    {{{    80,      0,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   160,      0,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   160,     20,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    80,     20,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07026380 - 0x070263C0\nstatic const Vtx cake_end_vertex_07026380[] = {\n    {{{   160,      0,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   240,      0,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   240,     20,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   160,     20,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070263C0 - 0x07026400\nstatic const Vtx cake_end_vertex_070263C0[] = {\n    {{{   240,      0,     -1}, 0, {     0,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   320,      0,     -1}, 0, {  2528,    608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   320,     20,     -1}, 0, {  2528,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   240,     20,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07026400 - 0x07027350\nconst Gfx dl_cake_end_screen[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGB, G_CC_DECALRGB),\n    gsDPSetRenderMode(G_RM_AA_OPA_SURF, G_RM_AA_OPA_SURF2),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n\n    gsDPLoadTextureBlock(cake_end_texture_0, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07025800, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_1, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07025840, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_2, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07025880, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_3, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_070258C0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_4, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07025900, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_5, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07025940, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_6, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07025980, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_7, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_070259C0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_8, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07025A00, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_9, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07025A40, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_10, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07025A80, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_11, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07025AC0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_12, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07025B00, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_13, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07025B40, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_14, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07025B80, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_15, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07025BC0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_16, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07025C00, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_17, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07025C40, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_18, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07025C80, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_19, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07025CC0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_20, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07025D00, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_21, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07025D40, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_22, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07025D80, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_23, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07025DC0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_24, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07025E00, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_25, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07025E40, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_26, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07025E80, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_27, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07025EC0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_28, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07025F00, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_29, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07025F40, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_30, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07025F80, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_31, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07025FC0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_32, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07026000, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_33, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07026040, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_34, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07026080, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_35, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_070260C0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_36, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07026100, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_37, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07026140, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_38, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07026180, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_39, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_070261C0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_40, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07026200, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_41, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07026240, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_42, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07026280, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_43, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_070262C0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_44, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07026300, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_45, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07026340, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_46, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_07026380, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(cake_end_texture_47, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(cake_end_vertex_070263C0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPPipeSync(),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2),\n    gsSPEndDisplayList(),\n};\n#endif\n"
  },
  {
    "path": "levels/ending/script.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"behavior_data.h\"\n#include \"model_ids.h\"\n#include \"seq_ids.h\"\n#include \"segment_symbols.h\"\n#include \"level_commands.h\"\n\n#include \"game/area.h\"\n#include \"game/level_update.h\"\n\n#include \"levels/scripts.h\"\n\n#include \"actors/common1.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/ending/header.h\"\n\nconst LevelScript level_ending_entry[] = {\n    /*0*/ INIT_LEVEL(),\n    /*1*/ LOAD_MIO0(/*seg*/ 0x07, _ending_segment_7SegmentRomStart, _ending_segment_7SegmentRomEnd),\n    /*4*/ ALLOC_LEVEL_POOL(),\n\n    /*5*/ AREA(/*index*/ 1, ending_geo_000050),\n    /*7*/ END_AREA(),\n\n    /*8*/ FREE_LEVEL_POOL(),\n    /*9*/ SLEEP(/*frames*/ 60),\n    /*10*/ BLACKOUT(/*active*/ FALSE),\n    /*11*/ LOAD_AREA(/*area*/ 1),\n    /*12*/ TRANSITION(/*transType*/ WARP_TRANSITION_FADE_FROM_COLOR, /*time*/ 75, /*color*/ 0x00, 0x00, 0x00),\n    /*14*/ SLEEP(/*frames*/ 120),\n    /*15*/ CALL(/*arg*/ 0, /*func*/ lvl_play_the_end_screen_sound),\n    // L1:\n    /*17*/ SLEEP(/*frames*/ 1),\n    /*18*/ JUMP(level_ending_entry + 17),\n};\n"
  },
  {
    "path": "levels/entry.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"segment_symbols.h\"\n#include \"level_commands.h\"\n\n#include \"levels/intro/header.h\"\n\n#include \"make_const_nonconst.h\"\n\nconst LevelScript level_script_entry[] = {\n    INIT_LEVEL(),\n    SLEEP(/*frames*/ 2),\n    BLACKOUT(/*active*/ FALSE),\n    SET_REG(/*value*/ 0),\n    EXECUTE(/*seg*/ 0x14, /*script*/ _introSegmentRomStart, /*scriptEnd*/ _introSegmentRomEnd, /*entry*/ level_intro_splash_screen),\n    JUMP(/*target*/ level_script_entry),\n};\n"
  },
  {
    "path": "levels/entry.h",
    "content": "#ifndef ENTRY_H\n#define ENTRY_H\n\n#include \"types.h\"\n\n// script\nextern const LevelScript level_script_entry[];\n\n#endif\n"
  },
  {
    "path": "levels/hmc/areas/1/1/model.inc.c",
    "content": "// 0x07005800 - 0x07005818\nstatic const Lights1 hmc_seg7_lights_07005800 = gdSPDefLights1(\n    0x48, 0x48, 0x48,\n    0x99, 0x99, 0x99, 0x28, 0x28, 0x28\n);\n\n// 0x07005818 - 0x07005830\nstatic const Lights1 hmc_seg7_lights_07005818 = gdSPDefLights1(\n    0x79, 0x00, 0x00,\n    0xff, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x07005830 - 0x07005848\nstatic const Lights1 hmc_seg7_lights_07005830 = gdSPDefLights1(\n    0x79, 0x79, 0x79,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07005848 - 0x070058A8\nstatic const Vtx hmc_seg7_vertex_07005848[] = {\n    {{{ -7474,   2161,   6528}, 0, { -1350,    820}, {0x3a, 0x6e, 0x13, 0xff}}},\n    {{{ -8089,   2161,   7654}, 0, {  1714,   1840}, {0x59, 0x49, 0xcc, 0xff}}},\n    {{{ -7679,   2161,   8064}, 0, {  2566,   1158}, {0x1a, 0x49, 0x9d, 0xff}}},\n    {{{ -8089,   2161,   7142}, 0, {   436,   1840}, {0x73, 0x2a, 0x1e, 0xff}}},\n    {{{ -7167,   2161,   8064}, 0, {  2352,    308}, {0xcc, 0x49, 0xa7, 0xff}}},\n    {{{ -6553,   2161,   7450}, 0, {   564,   -714}, {0x24, 0x33, 0x93, 0xff}}},\n};\n\n// 0x070058A8 - 0x07005918\nstatic const Vtx hmc_seg7_vertex_070058A8[] = {\n    {{{ -6042,   2253,   5722}, 0, {   990,    480}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -6047,   2318,   5717}, 0, {   478,     70}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -6088,   2260,   5676}, 0, {   480,    888}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -6062,   2296,   5702}, 0, {   480,    376}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -6072,   2340,   5692}, 0, {    70,    172}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -6103,   2296,   5661}, 0, {    70,    786}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -6072,   2282,   5692}, 0, {   480,    582}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07005918 - 0x07005A08\nstatic const Vtx hmc_seg7_vertex_07005918[] = {\n    {{{ -1945,   2048,   3763}, 0, {  -396,  -4172}, {0xe1, 0x61, 0x4b, 0xff}}},\n    {{{ -1330,   2048,   4070}, 0, {    48,  -4692}, {0xf8, 0x72, 0xc9, 0xff}}},\n    {{{ -1524,   2048,   3251}, 0, {  -790,  -4704}, {0x16, 0x66, 0x47, 0xff}}},\n    {{{   307,   2048,   3738}, 0, {   122,  -6358}, {0xcd, 0x67, 0xcd, 0xff}}},\n    {{{   358,   2048,   3738}, 0, {   134,  -6408}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{   358,   2048,   3584}, 0, {   -14,  -6446}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{   307,   2048,   3584}, 0, {   -26,  -6396}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{ -6476,   1536,   1510}, 0, {   -50,   -390}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -6476,   1536,   1459}, 0, {  -152,   -390}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{ -6629,   1536,   1459}, 0, {  -152,    -84}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{ -6629,   1536,   1510}, 0, {   -50,    -84}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{  -716,   2048,   4070}, 0, {   196,  -5286}, {0x67, 0x33, 0xcd, 0xff}}},\n    {{{  -716,   2048,   3251}, 0, {  -594,  -5486}, {0x2a, 0x54, 0x54, 0xff}}},\n    {{{ -2559,   2048,   4070}, 0, {  -248,  -3502}, {0x30, 0x5a, 0x4b, 0xff}}},\n    {{{ -2635,   2048,   3807}, 0, {  -520,  -3492}, {0x38, 0x5a, 0x45, 0xff}}},\n};\n\n// 0x07005A08 - 0x07005AF8\nstatic const Vtx hmc_seg7_vertex_07005A08[] = {\n    {{{ -2764,   2048,   4890}, 0, {   494,  -3106}, {0x18, 0x65, 0xb8, 0xff}}},\n    {{{ -2969,   2048,   4685}, 0, {   246,  -2956}, {0x63, 0x49, 0xe6, 0xff}}},\n    {{{ -3437,   2048,   4609}, 0, {    60,  -2522}, {0x20, 0x6c, 0x3a, 0xff}}},\n    {{{ -1330,   2048,   4070}, 0, {    48,  -4692}, {0xf8, 0x72, 0xc9, 0xff}}},\n    {{{ -2252,   2048,   4378}, 0, {   122,  -3726}, {0xd1, 0x66, 0xc6, 0xff}}},\n    {{{ -2149,   2048,   4480}, 0, {   246,  -3800}, {0xc8, 0x47, 0xa8, 0xff}}},\n    {{{ -1945,   2048,   3763}, 0, {  -396,  -4172}, {0xe1, 0x61, 0x4b, 0xff}}},\n    {{{ -1637,   2048,   4070}, 0, {   -26,  -4394}, {0xb7, 0x5b, 0xcf, 0xff}}},\n    {{{   307,   2048,   4070}, 0, {   444,  -6278}, {0xac, 0x54, 0xd6, 0xff}}},\n    {{{  -204,   2048,   3251}, 0, {  -470,  -5980}, {0xac, 0x54, 0x2a, 0xff}}},\n    {{{  -204,   2048,   4070}, 0, {   320,  -5782}, {0xcd, 0x33, 0x99, 0xff}}},\n    {{{   307,   2048,   3251}, 0, {  -346,  -6476}, {0xac, 0x2a, 0x54, 0xff}}},\n    {{{ -2764,   2048,   5094}, 0, {   692,  -3056}, {0xce, 0x6d, 0xd8, 0xff}}},\n    {{{ -3276,   2048,   5094}, 0, {   568,  -2560}, {0xaf, 0x5d, 0xe8, 0xff}}},\n    {{{ -3173,   2048,   5914}, 0, {  1386,  -2462}, {0xaa, 0x53, 0xd6, 0xff}}},\n};\n\n// 0x07005AF8 - 0x07005BF8\nstatic const Vtx hmc_seg7_vertex_07005AF8[] = {\n    {{{ -2969,   2048,   4480}, 0, {    48,  -3006}, {0x4a, 0x5c, 0x2b, 0xff}}},\n    {{{ -2559,   2048,   4070}, 0, {  -248,  -3502}, {0x30, 0x5a, 0x4b, 0xff}}},\n    {{{ -2635,   2048,   3807}, 0, {  -520,  -3492}, {0x38, 0x5a, 0x45, 0xff}}},\n    {{{ -3437,   2048,   4609}, 0, {    60,  -2522}, {0x20, 0x6c, 0x3a, 0xff}}},\n    {{{ -2969,   2048,   4685}, 0, {   246,  -2956}, {0x63, 0x49, 0xe6, 0xff}}},\n    {{{ -3481,   2048,   5402}, 0, {   816,  -2288}, {0xdc, 0x4b, 0xa1, 0xff}}},\n    {{{ -3847,   2048,   5428}, 0, {   754,  -1926}, {0x56, 0x55, 0x25, 0xff}}},\n    {{{ -3173,   2048,   5914}, 0, {  1386,  -2462}, {0xaa, 0x53, 0xd6, 0xff}}},\n    {{{ -3276,   2048,   5094}, 0, {   568,  -2560}, {0xaf, 0x5d, 0xe8, 0xff}}},\n    {{{ -3890,   2048,   6118}, 0, {  1412,  -1718}, {0x4b, 0x5f, 0x25, 0xff}}},\n    {{{ -4273,   2048,   5855}, 0, {  1064,  -1410}, {0x30, 0x5a, 0x4b, 0xff}}},\n    {{{ -3583,   2048,   5811}, 0, {  1188,  -2090}, {0x08, 0x4c, 0x65, 0xff}}},\n    {{{ -6860,   1760,   3753}, 0, { -1586,    588}, {0x00, 0x7e, 0xf4, 0xff}}},\n    {{{ -6860,   1843,   4582}, 0, {  -792,    786}, {0x59, 0x58, 0xf2, 0xff}}},\n    {{{ -6245,   1843,   4582}, 0, {  -644,    192}, {0xa7, 0x58, 0xf5, 0xff}}},\n    {{{ -3788,   2048,   6528}, 0, {  1832,  -1718}, {0xef, 0x51, 0xa1, 0xff}}},\n};\n\n// 0x07005BF8 - 0x07005CF8\nstatic const Vtx hmc_seg7_vertex_07005BF8[] = {\n    {{{ -3788,   2048,   6528}, 0, {  1832,  -1718}, {0xef, 0x51, 0xa1, 0xff}}},\n    {{{ -4273,   2048,   5855}, 0, {  1064,  -1410}, {0x30, 0x5a, 0x4b, 0xff}}},\n    {{{ -4800,   2048,   6118}, 0, {  1192,   -836}, {0x0d, 0x5a, 0x57, 0xff}}},\n    {{{ -4607,   2048,   6938}, 0, {  2032,   -826}, {0xe5, 0x5a, 0xac, 0xff}}},\n    {{{ -5631,   2048,   6118}, 0, {   990,      0}, {0xd0, 0x5c, 0x48, 0xff}}},\n    {{{ -5631,   2048,   6938}, 0, {  1784,    166}, {0xeb, 0x5c, 0xad, 0xff}}},\n    {{{ -6860,   1905,   4890}, 0, {  -496,    860}, {0x46, 0x68, 0xf1, 0xff}}},\n    {{{ -6143,   2048,   5606}, 0, {   370,    340}, {0xa8, 0x44, 0x3b, 0xff}}},\n    {{{ -6245,   1905,   4890}, 0, {  -346,    266}, {0x9b, 0x4b, 0xf9, 0xff}}},\n    {{{ -6962,   2048,   5606}, 0, {   172,   1130}, {0x36, 0x70, 0x18, 0xff}}},\n    {{{ -6860,   1760,   3753}, 0, { -1586,    588}, {0x00, 0x7e, 0xf4, 0xff}}},\n    {{{ -6245,   1843,   4582}, 0, {  -644,    192}, {0xa7, 0x58, 0xf5, 0xff}}},\n    {{{ -6245,   1760,   3753}, 0, { -1438,     -8}, {0x00, 0x7e, 0xf4, 0xff}}},\n    {{{ -7474,   2048,   6528}, 0, {   940,   1850}, {0x59, 0x49, 0xcc, 0xff}}},\n    {{{ -6553,   2048,   7450}, 0, {  2056,   1180}, {0x1a, 0x49, 0x9d, 0xff}}},\n    {{{ -6860,   1843,   4582}, 0, {  -792,    786}, {0x59, 0x58, 0xf2, 0xff}}},\n};\n\n// 0x07005CF8 - 0x07005DE8\nstatic const Vtx hmc_seg7_vertex_07005CF8[] = {\n    {{{ -6245,   1536,   1510}, 0, {   -50,   -850}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{ -6860,   1536,   2545}, 0, {  2012,    376}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6245,   1536,   2545}, 0, {  2012,   -850}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6860,   1536,   1510}, 0, {   -50,    376}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{ -6962,   2048,   5606}, 0, {   172,   1130}, {0x36, 0x70, 0x18, 0xff}}},\n    {{{ -7474,   2048,   6118}, 0, {   544,   1750}, {0x73, 0x2a, 0x1e, 0xff}}},\n    {{{ -7474,   2048,   6528}, 0, {   940,   1850}, {0x59, 0x49, 0xcc, 0xff}}},\n    {{{ -5631,   2048,   6118}, 0, {   990,      0}, {0xd0, 0x5c, 0x48, 0xff}}},\n    {{{ -6143,   2048,   5606}, 0, {   370,    340}, {0xa8, 0x44, 0x3b, 0xff}}},\n    {{{ -5631,   2048,   6938}, 0, {  1784,    166}, {0xeb, 0x5c, 0xad, 0xff}}},\n    {{{ -6143,   2048,   7450}, 0, {  2154,    786}, {0xcc, 0x49, 0xa7, 0xff}}},\n    {{{ -6553,   2048,   7450}, 0, {  2056,   1180}, {0x1a, 0x49, 0x9d, 0xff}}},\n    {{{ -6860,   1024,   3558}, 0, {  1604,    172}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{ -6245,   1024,   3343}, 0, {  1194,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6860,   1024,   3343}, 0, {  1194,    172}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07005DE8 - 0x07005E88\nstatic const Vtx hmc_seg7_vertex_07005DE8[] = {\n    {{{ -6860,   1843,   4582}, 0, {  -792,    786}, {0x59, 0x58, 0xf2, 0xff}}},\n    {{{ -6860,   1905,   4890}, 0, {  -496,    860}, {0x46, 0x68, 0xf1, 0xff}}},\n    {{{ -6245,   1905,   4890}, 0, {  -346,    266}, {0x9b, 0x4b, 0xf9, 0xff}}},\n    {{{ -6860,   1331,   3763}, 0, {  2012,    172}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{ -6245,   1331,   3763}, 0, {  2012,  -1054}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{ -6245,   1331,   3548}, 0, {  1604,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6860,   1331,   3548}, 0, {  1604,    172}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6860,   1024,   3558}, 0, {  1604,    172}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{ -6245,   1024,   3558}, 0, {  1604,  -1054}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{ -6245,   1024,   3343}, 0, {  1194,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07005E88 - 0x07005F88\nstatic const Vtx hmc_seg7_vertex_07005E88[] = {\n    {{{ -6476,   1792,   1510}, 0, {   606,   1500}, {0xbd, 0xdf, 0x65, 0xff}}},\n    {{{ -6476,   1536,   1459}, 0, {   606,   2012}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{ -6476,   1536,   1510}, 0, {   606,   2012}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{   307,   2048,   3584}, 0, {   384,   2012}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{   358,   2304,   3584}, 0, {   384,   1500}, {0x00, 0xc8, 0x71, 0xff}}},\n    {{{   307,   2304,   3584}, 0, {   384,   1500}, {0x92, 0xc9, 0x1b, 0xff}}},\n    {{{   358,   2048,   3584}, 0, {   384,   2012}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{   307,   2048,   3251}, 0, {     0,   2012}, {0xac, 0x2a, 0x54, 0xff}}},\n    {{{   358,   2304,   3738}, 0, {   574,   1500}, {0x00, 0x8f, 0xc8, 0xff}}},\n    {{{   307,   2304,   3738}, 0, {   574,   1500}, {0x9b, 0xdf, 0xbd, 0xff}}},\n    {{{   307,   3072,   3251}, 0, {     0,      0}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{   307,   3072,   4070}, 0, {   990,      0}, {0x97, 0x00, 0xba, 0xff}}},\n    {{{   358,   2048,   3738}, 0, {   574,   2012}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{   307,   2048,   3738}, 0, {   574,   2012}, {0xcd, 0x67, 0xcd, 0xff}}},\n    {{{   307,   2048,   4070}, 0, {   990,   2012}, {0xac, 0x54, 0xd6, 0xff}}},\n    {{{ -6476,   1792,   1459}, 0, {   606,   1500}, {0xc8, 0x8f, 0x00, 0xff}}},\n};\n\n// 0x07005F88 - 0x07006068\nstatic const Vtx hmc_seg7_vertex_07005F88[] = {\n    {{{ -6629,   1792,   1510}, 0, {   352,   1500}, {0x1b, 0xc9, 0x6e, 0xff}}},\n    {{{ -6476,   1792,   1510}, 0, {   606,   1500}, {0xbd, 0xdf, 0x65, 0xff}}},\n    {{{ -6245,   2560,   1510}, 0, {   990,      0}, {0xba, 0x00, 0x69, 0xff}}},\n    {{{ -6245,   1536,   1510}, 0, {   990,   2012}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{ -6476,   1536,   1510}, 0, {   606,   2012}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -6476,   1792,   1459}, 0, {   606,   1500}, {0xc8, 0x8f, 0x00, 0xff}}},\n    {{{ -6629,   1792,   1459}, 0, {   352,   1500}, {0x71, 0xc8, 0x00, 0xff}}},\n    {{{ -6629,   1536,   1510}, 0, {   352,   2012}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{ -6629,   1536,   1459}, 0, {   352,   2012}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{ -6860,   1536,   1510}, 0, {     0,   2012}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{ -6860,   2560,   1510}, 0, {     0,      0}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -6860,   1741,   3558}, 0, { -2482,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6860,    717,   3558}, 0, { -2482,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6860,    512,   2534}, 0, {   990,      0}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07006068 - 0x07006148\nstatic const Vtx hmc_seg7_vertex_07006068[] = {\n    {{{ -7474,   2048,   6118}, 0, {     0,   2012}, {0x73, 0x2a, 0x1e, 0xff}}},\n    {{{ -7474,   3072,   6528}, 0, {   546,      0}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{ -7474,   2048,   6528}, 0, {   546,   2012}, {0x59, 0x49, 0xcc, 0xff}}},\n    {{{ -6860,   1741,   3558}, 0, { -2482,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6860,    512,   2534}, 0, {   990,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -6860,   1536,   2534}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6245,   1536,   2534}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -6245,    512,   2534}, 0, {   990,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -6245,    717,   3558}, 0, { -2482,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -6245,   1741,   3558}, 0, { -2482,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -6245,   1331,   3558}, 0, { -2482,   1196}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -6245,   1331,   3763}, 0, { -3176,   1112}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{ -6245,   1761,   3763}, 0, { -3176,   1972}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -7474,   3072,   6118}, 0, {     0,      0}, {0x6d, 0x00, 0x40, 0xff}}},\n};\n\n// 0x07006148 - 0x07006228\nstatic const Vtx hmc_seg7_vertex_07006148[] = {\n    {{{ -6860,    512,   2534}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -6245,    512,   2534}, 0, {  2012,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -6245,   1526,   2534}, 0, {  2012,   1992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -7474,   2161,   6528}, 0, {   546,   1788}, {0x3a, 0x6e, 0x13, 0xff}}},\n    {{{ -7474,   3072,   6528}, 0, {   546,      0}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{ -8089,   3072,   7142}, 0, {  2280,      0}, {0x6d, 0x00, 0x40, 0xff}}},\n    {{{ -6553,   2048,   7450}, 0, {   546,   2012}, {0x1a, 0x49, 0x9d, 0xff}}},\n    {{{ -6553,   3072,   7450}, 0, {   546,      0}, {0xc0, 0x00, 0x93, 0xff}}},\n    {{{ -6143,   3072,   7450}, 0, {     0,      0}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{ -6143,   2048,   7450}, 0, {     0,   2012}, {0xcc, 0x49, 0xa7, 0xff}}},\n    {{{ -7167,   2161,   8064}, 0, {  2280,   1788}, {0xcc, 0x49, 0xa7, 0xff}}},\n    {{{ -6553,   2161,   7450}, 0, {   546,   1788}, {0x24, 0x33, 0x93, 0xff}}},\n    {{{ -7167,   3072,   8064}, 0, {  2280,      0}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{ -6860,   1526,   2534}, 0, {     0,   1992}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07006228 - 0x07006328\nstatic const Vtx hmc_seg7_vertex_07006228[] = {\n    {{{ -6860,   1331,   3558}, 0, { -2482,   1196}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6860,   1761,   3763}, 0, { -3176,   1972}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6860,   1331,   3763}, 0, { -3176,   1112}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{ -6860,   1321,   3558}, 0, {   990,   1196}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6245,   1321,   3558}, 0, {     0,   1196}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6245,   1024,   3558}, 0, {     0,    580}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{ -6860,   1024,   3558}, 0, {   990,    580}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{ -6860,   1014,   3354}, 0, {   990,    580}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6245,   1014,   3354}, 0, {     0,    580}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6245,    717,   3354}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6860,    717,   3354}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6860,   1331,   3763}, 0, {  2012,   1152}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{ -6245,   1751,   3763}, 0, {     0,   1992}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6245,   1331,   3763}, 0, {     0,   1152}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{ -6860,   1751,   3763}, 0, {  2012,   1992}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6860,   1741,   3558}, 0, { -2482,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07006328 - 0x07006428\nstatic const Vtx hmc_seg7_vertex_07006328[] = {\n    {{{ -7474,   2161,   6528}, 0, {   546,   1788}, {0x3a, 0x6e, 0x13, 0xff}}},\n    {{{ -8089,   3072,   7142}, 0, {  2280,      0}, {0x6d, 0x00, 0x40, 0xff}}},\n    {{{ -8089,   2161,   7142}, 0, {  2280,   1788}, {0x73, 0x2a, 0x1e, 0xff}}},\n    {{{ -8089,   3072,   7654}, 0, {  3004,      0}, {0x7a, 0x00, 0xe0, 0xff}}},\n    {{{ -8089,   2161,   7654}, 0, {  3004,   1788}, {0x59, 0x49, 0xcc, 0xff}}},\n    {{{ -8089,   2161,   7654}, 0, {   990,   1788}, {0x59, 0x49, 0xcc, 0xff}}},\n    {{{ -8089,   3072,   7654}, 0, {   990,      0}, {0x7a, 0x00, 0xe0, 0xff}}},\n    {{{ -7679,   3072,   8064}, 0, {     0,      0}, {0x40, 0x00, 0x93, 0xff}}},\n    {{{ -7679,   2161,   8064}, 0, {     0,   1788}, {0x1a, 0x49, 0x9d, 0xff}}},\n    {{{ -7679,   2161,   8064}, 0, {  3004,   1788}, {0x1a, 0x49, 0x9d, 0xff}}},\n    {{{ -7167,   3072,   8064}, 0, {  2280,      0}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{ -7167,   2161,   8064}, 0, {  2280,   1788}, {0xcc, 0x49, 0xa7, 0xff}}},\n    {{{ -7679,   3072,   8064}, 0, {  3004,      0}, {0x40, 0x00, 0x93, 0xff}}},\n    {{{ -7474,   2161,   6528}, 0, {  2570,   1788}, {0x3a, 0x6e, 0x13, 0xff}}},\n    {{{ -6553,   2161,   7450}, 0, {     0,   1788}, {0x24, 0x33, 0x93, 0xff}}},\n    {{{ -7474,   2048,   6528}, 0, {  2570,   2012}, {0x59, 0x49, 0xcc, 0xff}}},\n};\n\n// 0x07006428 - 0x07006458\nstatic const Vtx hmc_seg7_vertex_07006428[] = {\n    {{{ -6553,   2161,   7450}, 0, {     0,   1788}, {0x24, 0x33, 0x93, 0xff}}},\n    {{{ -6553,   2048,   7450}, 0, {     0,   2012}, {0x1a, 0x49, 0x9d, 0xff}}},\n    {{{ -7474,   2048,   6528}, 0, {  2570,   2012}, {0x59, 0x49, 0xcc, 0xff}}},\n};\n\n// 0x07006458 - 0x07006498\nstatic const Vtx hmc_seg7_vertex_07006458[] = {\n    {{{ -6107,   2150,   5643}, 0, {     0,   2012}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{ -5890,   2150,   5860}, 0, {   990,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -5890,   2765,   5860}, 0, {   990,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -6107,   2765,   5643}, 0, {     0,      0}, {0xa6, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07006498 - 0x070064D8\nstatic const Vtx hmc_seg7_vertex_07006498[] = {\n    {{{ -5890,   2150,   5860}, 0, {     0,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -5672,   2150,   6077}, 0, {   990,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -5672,   2765,   6077}, 0, {   990,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -5890,   2765,   5860}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x070064D8 - 0x070065C8\nstatic const Vtx hmc_seg7_vertex_070064D8[] = {\n    {{{ -1945,   2048,   3763}, 0, {     0,      0}, {0xe1, 0x61, 0x4b, 0xff}}},\n    {{{ -1945,   1024,   3763}, 0, {     0,   3372}, {0x09, 0x00, 0x7e, 0xff}}},\n    {{{ -1637,   1024,   4070}, 0, {   990,   3372}, {0x86, 0x00, 0x22, 0xff}}},\n    {{{  -716,   2048,   4070}, 0, {     0,      0}, {0x67, 0x33, 0xcd, 0xff}}},\n    {{{  -716,   1024,   4070}, 0, {     0,   3372}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  -716,   1024,   3251}, 0, {  2012,   3372}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{  -716,   2048,   3251}, 0, {  2012,      0}, {0x2a, 0x54, 0x54, 0xff}}},\n    {{{  -204,   2048,   3251}, 0, {  2012,      0}, {0xac, 0x54, 0x2a, 0xff}}},\n    {{{  -204,   1024,   3251}, 0, {  2012,   3372}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  -204,   1024,   4070}, 0, {     0,   3372}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{  -204,   2048,   4070}, 0, {     0,      0}, {0xcd, 0x33, 0x99, 0xff}}},\n    {{{ -2559,   2048,   4070}, 0, {     0,      0}, {0x30, 0x5a, 0x4b, 0xff}}},\n    {{{ -2559,   1024,   4070}, 0, {     0,   3372}, {0x4f, 0x00, 0x62, 0xff}}},\n    {{{ -1945,   1024,   3763}, 0, {   990,   3372}, {0x09, 0x00, 0x7e, 0xff}}},\n    {{{ -1945,   2048,   3763}, 0, {   990,      0}, {0xe1, 0x61, 0x4b, 0xff}}},\n};\n\n// 0x070065C8 - 0x070066B8\nstatic const Vtx hmc_seg7_vertex_070065C8[] = {\n    {{{ -2764,   2048,   4890}, 0, {     0,      0}, {0x18, 0x65, 0xb8, 0xff}}},\n    {{{ -2764,   1024,   4890}, 0, {     0,   3372}, {0xd8, 0x00, 0x88, 0xff}}},\n    {{{ -2969,   1024,   4685}, 0, {   582,   3372}, {0x6d, 0x00, 0xc0, 0xff}}},\n    {{{ -1945,   2048,   3763}, 0, {     0,      0}, {0xe1, 0x61, 0x4b, 0xff}}},\n    {{{ -1637,   1024,   4070}, 0, {   990,   3372}, {0x86, 0x00, 0x22, 0xff}}},\n    {{{ -1637,   2048,   4070}, 0, {   990,      0}, {0xb7, 0x5b, 0xcf, 0xff}}},\n    {{{ -1637,   2048,   4070}, 0, {     0,      0}, {0xb7, 0x5b, 0xcf, 0xff}}},\n    {{{ -1637,   1024,   4070}, 0, {     0,   3372}, {0x86, 0x00, 0x22, 0xff}}},\n    {{{ -2252,   1024,   4378}, 0, {   990,   3372}, {0xbc, 0x00, 0x96, 0xff}}},\n    {{{ -2252,   2048,   4378}, 0, {   990,      0}, {0xd1, 0x66, 0xc6, 0xff}}},\n    {{{ -2252,   2048,   4378}, 0, {     0,      0}, {0xd1, 0x66, 0xc6, 0xff}}},\n    {{{ -2252,   1024,   4378}, 0, {     0,   3372}, {0xbc, 0x00, 0x96, 0xff}}},\n    {{{ -2764,   1024,   4890}, 0, {   990,   3372}, {0xd8, 0x00, 0x88, 0xff}}},\n    {{{ -2764,   2048,   4890}, 0, {   990,      0}, {0x18, 0x65, 0xb8, 0xff}}},\n    {{{ -2969,   2048,   4685}, 0, {   582,      0}, {0x63, 0x49, 0xe6, 0xff}}},\n};\n\n// 0x070066B8 - 0x070067B8\nstatic const Vtx hmc_seg7_vertex_070066B8[] = {\n    {{{ -3276,   2048,   5094}, 0, {   690,      0}, {0xaf, 0x5d, 0xe8, 0xff}}},\n    {{{ -3276,   1024,   5094}, 0, {   690,   3372}, {0x82, 0x00, 0x03, 0xff}}},\n    {{{ -3481,   1024,   5402}, 0, {  1422,   3372}, {0xb0, 0x00, 0x9f, 0xff}}},\n    {{{ -2969,   2048,   4685}, 0, {   582,      0}, {0x63, 0x49, 0xe6, 0xff}}},\n    {{{ -2969,   1024,   4685}, 0, {   582,   3372}, {0x6d, 0x00, 0xc0, 0xff}}},\n    {{{ -2969,   1024,   4480}, 0, {   990,   3372}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{ -2969,   2048,   4480}, 0, {   990,      0}, {0x4a, 0x5c, 0x2b, 0xff}}},\n    {{{ -2969,   2048,   4480}, 0, {     0,      0}, {0x4a, 0x5c, 0x2b, 0xff}}},\n    {{{ -2969,   1024,   4480}, 0, {     0,   3372}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{ -2559,   1024,   4070}, 0, {   990,   3372}, {0x4f, 0x00, 0x62, 0xff}}},\n    {{{ -2559,   2048,   4070}, 0, {   990,      0}, {0x30, 0x5a, 0x4b, 0xff}}},\n    {{{ -3437,   2048,   4609}, 0, {     0,      0}, {0x20, 0x6c, 0x3a, 0xff}}},\n    {{{ -3437,   1024,   4609}, 0, {     0,   3372}, {0x48, 0x00, 0x68, 0xff}}},\n    {{{ -3583,   2048,   5811}, 0, {  1594,      0}, {0x08, 0x4c, 0x65, 0xff}}},\n    {{{ -3173,   1024,   5914}, 0, {  2136,   3372}, {0xa8, 0x00, 0x5b, 0xff}}},\n    {{{ -3173,   2048,   5914}, 0, {  2136,      0}, {0xaa, 0x53, 0xd6, 0xff}}},\n};\n\n// 0x070067B8 - 0x07006878\nstatic const Vtx hmc_seg7_vertex_070067B8[] = {\n    {{{ -3276,   2048,   5094}, 0, {   690,      0}, {0xaf, 0x5d, 0xe8, 0xff}}},\n    {{{ -3481,   1024,   5402}, 0, {  1422,   3372}, {0xb0, 0x00, 0x9f, 0xff}}},\n    {{{ -3481,   2048,   5402}, 0, {  1422,      0}, {0xdc, 0x4b, 0xa1, 0xff}}},\n    {{{ -3847,   1024,   5428}, 0, {  1796,   3372}, {0x37, 0x00, 0x8e, 0xff}}},\n    {{{ -3847,   2048,   5428}, 0, {  1796,      0}, {0x56, 0x55, 0x25, 0xff}}},\n    {{{ -3788,   2048,   6528}, 0, {     0,      0}, {0xef, 0x51, 0xa1, 0xff}}},\n    {{{ -3788,   1024,   6528}, 0, {     0,   3372}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{ -3890,   1024,   6118}, 0, {   510,   3372}, {0x7e, 0x00, 0x0a, 0xff}}},\n    {{{ -3890,   2048,   6118}, 0, {   510,      0}, {0x4b, 0x5f, 0x25, 0xff}}},\n    {{{ -3583,   1024,   5811}, 0, {  1594,   3372}, {0x37, 0x00, 0x72, 0xff}}},\n    {{{ -3583,   2048,   5811}, 0, {  1594,      0}, {0x08, 0x4c, 0x65, 0xff}}},\n    {{{ -3173,   1024,   5914}, 0, {  2136,   3372}, {0xa8, 0x00, 0x5b, 0xff}}},\n};\n\n// 0x07006878 - 0x07006978\nstatic const Vtx hmc_seg7_vertex_07006878[] = {\n    {{{ -3173,   2048,   5914}, 0, {    44,    990}, {0xaa, 0x53, 0xd6, 0xff}}},\n    {{{ -3788,   1024,   6528}, 0, {  1280,      0}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{ -3788,   2048,   6528}, 0, {  1280,    990}, {0xef, 0x51, 0xa1, 0xff}}},\n    {{{  -716,   2048,   3251}, 0, {   988,    990}, {0x2a, 0x54, 0x54, 0xff}}},\n    {{{  -716,   1024,   3251}, 0, {   988,      0}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{  -204,   1024,   3251}, 0, {  2012,      0}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  -204,   2048,   3251}, 0, {  2012,    990}, {0xac, 0x54, 0x2a, 0xff}}},\n    {{{  -204,   2048,   4070}, 0, {  2012,    990}, {0xcd, 0x33, 0x99, 0xff}}},\n    {{{  -716,   1024,   4070}, 0, {   988,      0}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  -716,   2048,   4070}, 0, {   988,    990}, {0x67, 0x33, 0xcd, 0xff}}},\n    {{{  -204,   1024,   4070}, 0, {  2012,      0}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{ -3847,   2048,   5428}, 0, {   124,    990}, {0x56, 0x55, 0x25, 0xff}}},\n    {{{ -3847,   1024,   5428}, 0, {   124,      0}, {0x37, 0x00, 0x8e, 0xff}}},\n    {{{ -3437,   1024,   4609}, 0, {  1428,      0}, {0x48, 0x00, 0x68, 0xff}}},\n    {{{ -3437,   2048,   4609}, 0, {  1428,    990}, {0x20, 0x6c, 0x3a, 0xff}}},\n    {{{ -3173,   1024,   5914}, 0, {    44,      0}, {0xa8, 0x00, 0x5b, 0xff}}},\n};\n\n// 0x07006978 - 0x07006A78\nstatic const Vtx hmc_seg7_vertex_07006978[] = {\n    {{{   307,   3072,   4070}, 0, {     0,      0}, {0x97, 0x00, 0xba, 0xff}}},\n    {{{   307,   2048,   4070}, 0, {     0,    990}, {0xac, 0x54, 0xd6, 0xff}}},\n    {{{ -1330,   2048,   4070}, 0, {  1900,    990}, {0xf8, 0x72, 0xc9, 0xff}}},\n    {{{ -1330,   3072,   4070}, 0, {  1900,      0}, {0xda, 0x00, 0x88, 0xff}}},\n    {{{ -2149,   2048,   4480}, 0, {  3116,    990}, {0xc8, 0x47, 0xa8, 0xff}}},\n    {{{ -2149,   3072,   4480}, 0, {  3116,      0}, {0xb1, 0x00, 0x9e, 0xff}}},\n    {{{ -1524,   3072,   3251}, 0, {  6548,      0}, {0x13, 0x00, 0x7d, 0xff}}},\n    {{{ -1524,   2048,   3251}, 0, {  6548,    990}, {0x16, 0x66, 0x47, 0xff}}},\n    {{{   307,   2048,   3251}, 0, {  8744,    990}, {0xac, 0x2a, 0x54, 0xff}}},\n    {{{   307,   3072,   3251}, 0, {  8744,      0}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -2635,   3072,   3807}, 0, {  4896,      0}, {0x44, 0x00, 0x6a, 0xff}}},\n    {{{ -3847,   3072,   5428}, 0, {  2504,      0}, {0x6a, 0x00, 0x44, 0xff}}},\n    {{{ -3847,   2048,   5428}, 0, {  2504,    990}, {0x56, 0x55, 0x25, 0xff}}},\n    {{{ -3437,   2048,   4609}, 0, {  3472,    990}, {0x20, 0x6c, 0x3a, 0xff}}},\n    {{{ -2635,   2048,   3807}, 0, {  4896,    990}, {0x38, 0x5a, 0x45, 0xff}}},\n    {{{ -2764,   2048,   5094}, 0, {  4220,    990}, {0xce, 0x6d, 0xd8, 0xff}}},\n};\n\n// 0x07006A78 - 0x07006B68\nstatic const Vtx hmc_seg7_vertex_07006A78[] = {\n    {{{ -2149,   3072,   4480}, 0, {  3116,      0}, {0xb1, 0x00, 0x9e, 0xff}}},\n    {{{ -2764,   2048,   5094}, 0, {  4220,    990}, {0xce, 0x6d, 0xd8, 0xff}}},\n    {{{ -2764,   3072,   5094}, 0, {  4220,      0}, {0x96, 0x00, 0xbc, 0xff}}},\n    {{{ -3437,   3072,   4609}, 0, {  3472,      0}, {0x62, 0x00, 0x4f, 0xff}}},\n    {{{ -2635,   2048,   3807}, 0, {  4896,    990}, {0x38, 0x5a, 0x45, 0xff}}},\n    {{{ -2635,   3072,   3807}, 0, {  4896,      0}, {0x44, 0x00, 0x6a, 0xff}}},\n    {{{ -3437,   2048,   4609}, 0, {  3472,    990}, {0x20, 0x6c, 0x3a, 0xff}}},\n    {{{ -3173,   2048,   5914}, 0, {  5212,    990}, {0xaa, 0x53, 0xd6, 0xff}}},\n    {{{ -3173,   3072,   5914}, 0, {  5212,      0}, {0x9e, 0x00, 0xb1, 0xff}}},\n    {{{ -3847,   3072,   5428}, 0, {  2504,      0}, {0x6a, 0x00, 0x44, 0xff}}},\n    {{{ -4607,   3072,   6938}, 0, {  7532,      0}, {0xed, 0x00, 0x83, 0xff}}},\n    {{{ -4607,   2048,   6938}, 0, {  7532,    990}, {0xe5, 0x5a, 0xac, 0xff}}},\n    {{{ -5631,   2048,   6938}, 0, {  8740,    990}, {0xeb, 0x5c, 0xad, 0xff}}},\n    {{{ -3788,   2048,   6528}, 0, {  6312,    990}, {0xef, 0x51, 0xa1, 0xff}}},\n    {{{ -3788,   3072,   6528}, 0, {  6312,      0}, {0xbc, 0x00, 0x96, 0xff}}},\n};\n\n// 0x07006B68 - 0x07006C58\nstatic const Vtx hmc_seg7_vertex_07006B68[] = {\n    {{{ -4273,   3072,   5855}, 0, {  1748,      0}, {0x4f, 0x00, 0x62, 0xff}}},\n    {{{ -3847,   2048,   5428}, 0, {  2504,    990}, {0x56, 0x55, 0x25, 0xff}}},\n    {{{ -3847,   3072,   5428}, 0, {  2504,      0}, {0x6a, 0x00, 0x44, 0xff}}},\n    {{{ -4273,   2048,   5855}, 0, {  1748,    990}, {0x30, 0x5a, 0x4b, 0xff}}},\n    {{{ -3788,   3072,   6528}, 0, {  6312,      0}, {0xbc, 0x00, 0x96, 0xff}}},\n    {{{ -3788,   2048,   6528}, 0, {  6312,    990}, {0xef, 0x51, 0xa1, 0xff}}},\n    {{{ -4607,   2048,   6938}, 0, {  7532,    990}, {0xe5, 0x5a, 0xac, 0xff}}},\n    {{{ -4607,   3072,   6938}, 0, {  7532,      0}, {0xed, 0x00, 0x83, 0xff}}},\n    {{{ -4800,   3072,   6118}, 0, {   964,      0}, {0x26, 0x00, 0x78, 0xff}}},\n    {{{ -4800,   2048,   6118}, 0, {   964,    990}, {0x0d, 0x5a, 0x57, 0xff}}},\n    {{{ -6143,   2048,   7450}, 0, {  9660,    990}, {0xcc, 0x49, 0xa7, 0xff}}},\n    {{{ -5631,   3072,   6938}, 0, {  8740,      0}, {0xc0, 0x00, 0x93, 0xff}}},\n    {{{ -5631,   2048,   6938}, 0, {  8740,    990}, {0xeb, 0x5c, 0xad, 0xff}}},\n    {{{ -5631,   3072,   6118}, 0, {     0,      0}, {0xc6, 0x00, 0x70, 0xff}}},\n    {{{ -5631,   2048,   6118}, 0, {     0,    990}, {0xd0, 0x5c, 0x48, 0xff}}},\n};\n\n// 0x07006C58 - 0x07006D38\nstatic const Vtx hmc_seg7_vertex_07006C58[] = {\n    {{{ -6962,   2048,   5606}, 0, {  2012,    990}, {0x36, 0x70, 0x18, 0xff}}},\n    {{{ -6962,   3072,   5606}, 0, {  2012,      0}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{ -7474,   3072,   6118}, 0, {   568,      0}, {0x6d, 0x00, 0x40, 0xff}}},\n    {{{ -7474,   2048,   6118}, 0, {   568,    990}, {0x73, 0x2a, 0x1e, 0xff}}},\n    {{{ -6143,   2048,   7450}, 0, {  9660,    990}, {0xcc, 0x49, 0xa7, 0xff}}},\n    {{{ -6143,   3072,   7450}, 0, {  9660,      0}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{ -5631,   3072,   6938}, 0, {  8740,      0}, {0xc0, 0x00, 0x93, 0xff}}},\n    {{{ -6245,   2867,   4582}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -6245,   1905,   4890}, 0, {   576,    990}, {0x9b, 0x4b, 0xf9, 0xff}}},\n    {{{ -6245,   2929,   4890}, 0, {   576,      0}, {0x82, 0x00, 0x08, 0xff}}},\n    {{{ -6245,   2560,   1510}, 0, {     0,    -22}, {0xba, 0x00, 0x69, 0xff}}},\n    {{{ -6245,   1536,   2534}, 0, {  1992,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -6245,   2560,   2534}, 0, {  1992,    -22}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -6245,   1536,   1510}, 0, {     0,    990}, {0xd6, 0x54, 0x54, 0xff}}},\n};\n\n// 0x07006D38 - 0x07006E38\nstatic const Vtx hmc_seg7_vertex_07006D38[] = {\n    {{{ -6245,   2560,   2534}, 0, {   -48,    -34}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -6245,   1536,   2534}, 0, {   -48,    988}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -6245,   1741,   3558}, 0, {  2012,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -6245,   2765,   3558}, 0, {  2012,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -6245,   2765,   3558}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -6245,   1843,   4582}, 0, {  2012,    990}, {0xa7, 0x58, 0xf5, 0xff}}},\n    {{{ -6245,   2867,   4582}, 0, {  2012,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -6245,   1741,   3558}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -6860,   2765,   3558}, 0, {     0,    -22}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6860,   1741,   3558}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6860,   1536,   2534}, 0, {  2012,    980}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6245,   2867,   4582}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -6245,   1843,   4582}, 0, {     0,    990}, {0xa7, 0x58, 0xf5, 0xff}}},\n    {{{ -6245,   1905,   4890}, 0, {   576,    990}, {0x9b, 0x4b, 0xf9, 0xff}}},\n    {{{ -6143,   3072,   5606}, 0, {  2012,      0}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -6245,   2929,   4890}, 0, {   576,      0}, {0x82, 0x00, 0x08, 0xff}}},\n};\n\n// 0x07006E38 - 0x07006F18\nstatic const Vtx hmc_seg7_vertex_07006E38[] = {\n    {{{ -6245,   1905,   4890}, 0, {   576,    990}, {0x9b, 0x4b, 0xf9, 0xff}}},\n    {{{ -6143,   2048,   5606}, 0, {  2012,    990}, {0xa8, 0x44, 0x3b, 0xff}}},\n    {{{ -6143,   3072,   5606}, 0, {  2012,      0}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -6860,   2560,   2534}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6860,   1536,   1510}, 0, {  2012,    990}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{ -6860,   2560,   1510}, 0, {  2012,      0}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -6860,   1536,   2534}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6860,   2765,   3558}, 0, {     0,    -22}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6860,   1536,   2534}, 0, {  2012,    980}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6860,   2560,   2534}, 0, {  2012,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6860,   2867,   4582}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6860,   1741,   3558}, 0, {  2012,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6860,   2765,   3558}, 0, {  2012,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6860,   1843,   4582}, 0, {     0,    990}, {0x59, 0x58, 0xf2, 0xff}}},\n};\n\n// 0x07006F18 - 0x07006FF8\nstatic const Vtx hmc_seg7_vertex_07006F18[] = {\n    {{{ -6860,   2929,   4890}, 0, {  1404,      0}, {0x7e, 0x00, 0x08, 0xff}}},\n    {{{ -6860,   1905,   4890}, 0, {  1404,    990}, {0x46, 0x68, 0xf1, 0xff}}},\n    {{{ -6860,   1843,   4582}, 0, {  2012,    990}, {0x59, 0x58, 0xf2, 0xff}}},\n    {{{ -6962,   2048,   5606}, 0, {     0,    990}, {0x36, 0x70, 0x18, 0xff}}},\n    {{{ -6962,   3072,   5606}, 0, {     0,      0}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{ -6860,   2867,   4582}, 0, {  2012,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6143,   2048,   5606}, 0, {     0,    990}, {0xa8, 0x44, 0x3b, 0xff}}},\n    {{{ -6107,   2765,   5643}, 0, {   112,    274}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{ -6143,   3072,   5606}, 0, {     0,      0}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -6107,   2150,   5643}, 0, {   112,    888}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{ -5672,   2150,   6077}, 0, {  1848,    888}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -5631,   3072,   6118}, 0, {  2012,      0}, {0xc6, 0x00, 0x70, 0xff}}},\n    {{{ -5672,   2765,   6077}, 0, {  1848,    274}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -5631,   2048,   6118}, 0, {  2012,    990}, {0xd0, 0x5c, 0x48, 0xff}}},\n};\n\n// 0x07006FF8 - 0x07007080\nstatic const Gfx hmc_seg7_dl_07006FF8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09009800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&hmc_seg7_lights_07005800.l, 1),\n    gsSPLight(&hmc_seg7_lights_07005800.a, 2),\n    gsSPVertex(hmc_seg7_vertex_07005848, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  0,  4,  5, 0x0),\n    gsSPLight(&hmc_seg7_lights_07005818.l, 1),\n    gsSPLight(&hmc_seg7_lights_07005818.a, 2),\n    gsSPVertex(hmc_seg7_vertex_070058A8, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 3,  5,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007080 - 0x07007278\nstatic const Gfx hmc_seg7_dl_07007080[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09006800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&hmc_seg7_lights_07005830.l, 1),\n    gsSPLight(&hmc_seg7_lights_07005830.a, 2),\n    gsSPVertex(hmc_seg7_vertex_07005918, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12,  1, 0x0),\n    gsSP2Triangles(12,  2,  1, 0x0, 13,  0,  2, 0x0),\n    gsSP1Triangle(13,  2, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07005A08, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  3, 0x0,  3,  7,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles( 4,  0, 12, 0x0,  4, 12,  5, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 12, 0x0),\n    gsSP1Triangle( 2, 13, 12, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07005AF8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  0,  3, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  5,  7, 0x0,  9,  6, 10, 0x0),\n    gsSP2Triangles( 9, 11,  6, 0x0, 11,  7,  6, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 15,  9, 10, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07005BF8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  9, 13, 14, 0x0),\n    gsSP1Triangle(15,  8, 11, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07005CF8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 4,  9,  7, 0x0,  4, 10,  9, 0x0),\n    gsSP2Triangles( 4, 11, 10, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07005DE8, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007278 - 0x07007490\nstatic const Gfx hmc_seg7_dl_07007278[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_07005E88, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  3,  5, 0x0),\n    gsSP2Triangles( 5,  4,  8, 0x0,  5,  8,  9, 0x0),\n    gsSP2Triangles( 7,  5, 10, 0x0,  5, 11, 10, 0x0),\n    gsSP2Triangles( 5,  9, 11, 0x0,  9,  8, 12, 0x0),\n    gsSP2Triangles( 9, 13, 14, 0x0,  9, 12, 13, 0x0),\n    gsSP2Triangles( 9, 14, 11, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07005F88, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 0,  6,  5, 0x0,  7,  6,  0, 0x0),\n    gsSP2Triangles( 7,  8,  6, 0x0,  9,  7,  0, 0x0),\n    gsSP2Triangles( 0,  2, 10, 0x0,  9,  0, 10, 0x0),\n    gsSP1Triangle(11, 12, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07006068, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 11, 12, 0x0),\n    gsSP1Triangle( 0, 13,  1, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07006148, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10,  7, 11, 0x0, 10, 12,  7, 0x0),\n    gsSP1Triangle( 0,  2, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07006228, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07006328, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07006428, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007490 - 0x070074C8\nstatic const Gfx hmc_seg7_dl_07007490[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, hmc_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_07006458, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070074C8 - 0x07007500\nstatic const Gfx hmc_seg7_dl_070074C8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, hmc_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_07006498, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007500 - 0x07007630\nstatic const Gfx hmc_seg7_dl_07007500[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_070064D8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_070065C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_070066B8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11,  1,  0, 0x0),\n    gsSP2Triangles(11, 12,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_070067B8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007630 - 0x070078B0\nstatic const Gfx hmc_seg7_dl_07007630[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_07006878, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07006978, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  6, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(10, 14,  7, 0x0,  5,  4, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07006A78, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  2,  1,  7, 0x0),\n    gsSP2Triangles( 2,  7,  8, 0x0,  9,  6,  3, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  8,  7, 13, 0x0),\n    gsSP1Triangle( 8, 13, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07006B68, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  3,  0, 0x0,  8,  9,  3, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  7, 12, 11, 0x0),\n    gsSP2Triangles(13,  9,  8, 0x0, 13, 14,  9, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07006C58, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07006D38, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07006E38, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07006F18, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10,  9,  6, 0x0,  7, 11,  8, 0x0),\n    gsSP2Triangles( 7, 12, 11, 0x0, 12, 10, 13, 0x0),\n    gsSP2Triangles(10,  6, 13, 0x0, 12, 13, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070078B0 - 0x070079E8\nconst Gfx hmc_seg7_dl_070078B0[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_07006FF8),\n    gsSPDisplayList(hmc_seg7_dl_07007080),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_07007278),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_07007490),\n    gsSPDisplayList(hmc_seg7_dl_070074C8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_07007500),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_07007630),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/10/model.inc.c",
    "content": "// 0x0700FF70 - 0x0700FF88\nstatic const Lights1 hmc_seg7_lights_0700FF70 = gdSPDefLights1(\n    0x79, 0x79, 0x79,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700FF88 - 0x07010008\nstatic const Vtx hmc_seg7_vertex_0700FF88[] = {\n    {{{  3891,      0,   4608}, 0, {  1756,   -798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4403,      0,   4813}, 0, {  2522,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4198,      0,   4608}, 0, {  2522,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4403,      0,   5120}, 0, {  1756,   1754}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4198,      0,   5325}, 0, {   734,   1754}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3891,      0,   5325}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3686,      0,   5120}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3686,      0,   4813}, 0, {   734,   -798}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07010008 - 0x07010070\nstatic const Gfx hmc_seg7_dl_07010008[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09006800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&hmc_seg7_lights_0700FF70.l, 1),\n    gsSPLight(&hmc_seg7_lights_0700FF70.a, 2),\n    gsSPVertex(hmc_seg7_vertex_0700FF88, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  0,  5,  4, 0x0),\n    gsSP2Triangles( 0,  6,  5, 0x0,  0,  7,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07010070 - 0x07010118\nconst Gfx hmc_seg7_dl_07010070[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_DECAL2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_07010008),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_DECAL, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/11/model.inc.c",
    "content": "// 0x07010118 - 0x07010130\nstatic const Lights1 hmc_seg7_lights_07010118 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x07010130 - 0x07010148\nstatic const Lights1 hmc_seg7_lights_07010130 = gdSPDefLights1(\n    0x79, 0x79, 0x79,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07010148 - 0x07010248\nstatic const Vtx hmc_seg7_vertex_07010148[] = {\n    {{{  1690,      0,    819}, 0, {   138,   2520}, {0x33, 0x99, 0xcd, 0xff}}},\n    {{{  2100,      0,    102}, 0, {   240,   2146}, {0xcd, 0x99, 0xcd, 0xff}}},\n    {{{  4967,      0,    819}, 0, {  -950,   1430}, {0x2a, 0xac, 0xac, 0xff}}},\n    {{{  6298,    154,  -1842}, 0, {  -506,    104}, {0x10, 0x90, 0x39, 0xff}}},\n    {{{  6298,    154,  -1330}, 0, {  -678,    274}, {0x0a, 0xbb, 0x96, 0xff}}},\n    {{{  5786,      0,  -1330}, 0, {  -506,    444}, {0x0e, 0x85, 0xe7, 0xff}}},\n    {{{  5786,      0,  -1842}, 0, {  -336,    274}, {0x08, 0x86, 0x1f, 0xff}}},\n    {{{  6298,      0,  -1842}, 0, {  -506,    104}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{  6298,      0,  -1330}, 0, {  -678,    274}, {0xb7, 0xb7, 0xb7, 0xff}}},\n    {{{  1895,      0,   -101}, 0, {   376,   2146}, {0x3d, 0xa4, 0x3d, 0xff}}},\n    {{{  1895,      0,    102}, 0, {   308,   2214}, {0x33, 0x99, 0xcd, 0xff}}},\n    {{{  1690,      0,  -3993}, 0, {  1740,    922}, {0x23, 0x89, 0xea, 0xff}}},\n    {{{  2100,      0,   -101}, 0, {   308,   2078}, {0xec, 0x85, 0x14, 0xff}}},\n    {{{  3124,      0,  -6860}, 0, {  2216,   -508}, {0x1b, 0xc9, 0x6e, 0xff}}},\n    {{{  3533,      0,  -6860}, 0, {  2080,   -646}, {0xac, 0xd6, 0x54, 0xff}}},\n    {{{  3533,      0,  -6348}, 0, {  1910,   -474}, {0xcd, 0x99, 0x33, 0xff}}},\n};\n\n// 0x07010248 - 0x07010348\nstatic const Vtx hmc_seg7_vertex_07010248[] = {\n    {{{  6298,      0,    102}, 0, { -1154,    752}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2100,      0,    102}, 0, {   240,   2146}, {0xcd, 0x99, 0xcd, 0xff}}},\n    {{{  2100,      0,   -101}, 0, {   308,   2078}, {0xec, 0x85, 0x14, 0xff}}},\n    {{{  1690,      0,  -3993}, 0, {  1740,    922}, {0x23, 0x89, 0xea, 0xff}}},\n    {{{  6298,      0,  -6348}, 0, {   990,  -1394}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4967,      0,    102}, 0, {  -712,   1192}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4967,      0,    819}, 0, {  -950,   1430}, {0x2a, 0xac, 0xac, 0xff}}},\n    {{{  6912,    154,  -1330}, 0, {  -882,     70}, {0xcd, 0x99, 0xcd, 0xff}}},\n    {{{  6298,    154,  -1842}, 0, {  -506,    104}, {0x10, 0x90, 0x39, 0xff}}},\n    {{{  6912,    154,  -1842}, 0, {  -712,   -100}, {0xac, 0xd6, 0x54, 0xff}}},\n    {{{  6298,    154,  -1330}, 0, {  -678,    274}, {0x0a, 0xbb, 0x96, 0xff}}},\n    {{{  3124,      0,  -6860}, 0, {  2216,   -508}, {0x1b, 0xc9, 0x6e, 0xff}}},\n    {{{  3533,      0,  -6348}, 0, {  1910,   -474}, {0xcd, 0x99, 0x33, 0xff}}},\n    {{{  3124,      0,  -6348}, 0, {  2046,   -338}, {0x54, 0xd6, 0x54, 0xff}}},\n    {{{  2100,      0,  -4453}, 0, {  1756,    632}, {0xee, 0x83, 0xfb, 0xff}}},\n    {{{  2100,      0,  -4965}, 0, {  1926,    462}, {0xf4, 0x82, 0x06, 0xff}}},\n};\n\n// 0x07010348 - 0x07010448\nstatic const Vtx hmc_seg7_vertex_07010348[] = {\n    {{{  6298,      0,  -6348}, 0, {   990,  -1394}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  6298,      0,  -1842}, 0, {  -506,    104}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{  5786,      0,  -1842}, 0, {  -336,    274}, {0x08, 0x86, 0x1f, 0xff}}},\n    {{{  2100,      0,   -101}, 0, {   308,   2078}, {0xec, 0x85, 0x14, 0xff}}},\n    {{{  5786,      0,  -1330}, 0, {  -506,    444}, {0x0e, 0x85, 0xe7, 0xff}}},\n    {{{  6298,      0,  -1330}, 0, {  -678,    274}, {0xb7, 0xb7, 0xb7, 0xff}}},\n    {{{  6298,      0,    102}, 0, { -1154,    752}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2100,      0,  -4453}, 0, {  1756,    632}, {0xee, 0x83, 0xfb, 0xff}}},\n    {{{  1690,      0,  -3993}, 0, {  1740,    922}, {0x23, 0x89, 0xea, 0xff}}},\n    {{{  1690,    102,  -4453}, 0, {  1892,    768}, {0x2c, 0x8f, 0xdd, 0xff}}},\n    {{{  1690,    102,  -4965}, 0, {  2064,    598}, {0x08, 0x93, 0x3f, 0xff}}},\n    {{{  2100,      0,  -4965}, 0, {  1926,    462}, {0xf4, 0x82, 0x06, 0xff}}},\n    {{{  1178,    102,  -4965}, 0, {  2234,    768}, {0x65, 0xbd, 0x21, 0xff}}},\n    {{{  1178,    102,  -4453}, 0, {  2064,    938}, {0x54, 0xd6, 0xac, 0xff}}},\n    {{{  1690,      0,  -5324}, 0, {  2182,    480}, {0x62, 0xc4, 0x34, 0xff}}},\n    {{{  1690,      0,  -6348}, 0, {  2522,    138}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07010448 - 0x07010548\nstatic const Vtx hmc_seg7_vertex_07010448[] = {\n    {{{  2304,  -1023,   -409}, 0, {  1610,    388}, {0x00, 0x7d, 0x10, 0xff}}},\n    {{{  1690,  -1023,   -409}, 0, {  1808,    684}, {0x00, 0x7a, 0x21, 0xff}}},\n    {{{  1690,  -1023,    819}, 0, {  2216,    274}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  2202,    205,    205}, 0, {   -70,    908}, {0xf0, 0x7c, 0xf0, 0xff}}},\n    {{{  1792,    205,    205}, 0, {  -398,   1070}, {0x10, 0x79, 0xdf, 0xff}}},\n    {{{  1690,    205,    819}, 0, {  -234,   1602}, {0x21, 0x65, 0xbd, 0xff}}},\n    {{{  1792,    205,   -204}, 0, {  -562,    744}, {0x22, 0x75, 0x22, 0xff}}},\n    {{{  1690,    205,   -306}, 0, {  -684,    704}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{  2202,    205,   -204}, 0, {  -234,    582}, {0xdf, 0x79, 0x10, 0xff}}},\n    {{{  4250,    205,   -306}, 0, {  1358,   -318}, {0xda, 0x72, 0x26, 0xff}}},\n    {{{  4250,    205,    819}, 0, {  1808,    582}, {0xb7, 0x49, 0xb7, 0xff}}},\n    {{{  2304,   -767,  -1023}, 0, {  1384,    558}, {0x00, 0x75, 0x30, 0xff}}},\n    {{{  2304,  -1023,    819}, 0, {  2018,    -22}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  3431,  -1023,  -3173}, 0, {   328,    764}, {0x25, 0x47, 0x62, 0xff}}},\n    {{{  2509,   -869,  -3173}, 0, {   612,   1186}, {0x06, 0x7e, 0x00, 0xff}}},\n    {{{  2509,   -869,  -2559}, 0, {   816,    984}, {0xf7, 0x7a, 0xdf, 0xff}}},\n};\n\n// 0x07010548 - 0x07010628\nstatic const Vtx hmc_seg7_vertex_07010548[] = {\n    {{{  1690,  -1023,   -409}, 0, {  1808,    684}, {0x00, 0x7a, 0x21, 0xff}}},\n    {{{  2304,   -767,  -1023}, 0, {  1384,    558}, {0x00, 0x75, 0x30, 0xff}}},\n    {{{  1690,   -767,  -1023}, 0, {  1582,    854}, {0x00, 0x7d, 0x10, 0xff}}},\n    {{{  2509,   -869,  -2559}, 0, {   816,    984}, {0xf7, 0x7a, 0xdf, 0xff}}},\n    {{{  1690,   -869,  -2559}, 0, {  1078,   1376}, {0x00, 0x7e, 0xf3, 0xff}}},\n    {{{  1690,   -767,  -2252}, 0, {  1172,   1262}, {0x00, 0x7c, 0xe5, 0xff}}},\n    {{{  2509,   -767,  -2252}, 0, {   910,    868}, {0x00, 0x7e, 0xf3, 0xff}}},\n    {{{  2509,   -869,  -3173}, 0, {   612,   1186}, {0x06, 0x7e, 0x00, 0xff}}},\n    {{{  1690,   -869,  -3173}, 0, {   874,   1582}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3431,  -1023,  -3173}, 0, {   328,    764}, {0x25, 0x47, 0x62, 0xff}}},\n    {{{  3431,  -1023,  -2559}, 0, {   532,    560}, {0x06, 0x7e, 0x00, 0xff}}},\n    {{{  3533,   -767,  -1125}, 0, {   954,      0}, {0x00, 0x7e, 0x0d, 0xff}}},\n    {{{  2919,   -869,   -511}, 0, {  1366,    106}, {0x00, 0x7e, 0x0a, 0xff}}},\n    {{{  3533,   -869,   -511}, 0, {  1168,   -190}, {0x8e, 0x29, 0x24, 0xff}}},\n};\n\n// 0x07010628 - 0x07010728\nstatic const Vtx hmc_seg7_vertex_07010628[] = {\n    {{{  2816,   -767,  -3788}, 0, {   300,   1230}, {0x21, 0x7a, 0x00, 0xff}}},\n    {{{  3431,  -1023,  -3788}, 0, {   124,    968}, {0x48, 0x25, 0x9f, 0xff}}},\n    {{{  3431,  -1023,  -4402}, 0, {   -78,   1170}, {0x21, 0x7a, 0x00, 0xff}}},\n    {{{  2816,   -767,  -4402}, 0, {    94,   1434}, {0x10, 0x7d, 0x00, 0xff}}},\n    {{{  2509,   -767,  -3788}, 0, {   398,   1378}, {0xe6, 0x7c, 0x00, 0xff}}},\n    {{{  2509,   -767,  -4402}, 0, {   194,   1582}, {0xcb, 0x73, 0x00, 0xff}}},\n    {{{  4250,  -1023,  -5017}, 0, {  -546,    982}, {0x16, 0x66, 0xb8, 0xff}}},\n    {{{  4660,   -921,  -5017}, 0, {  -686,    772}, {0x34, 0x2b, 0x95, 0xff}}},\n    {{{  4660,   -921,  -5631}, 0, {  -890,    976}, {0xed, 0x76, 0x28, 0xff}}},\n    {{{  4250,  -1023,  -6041}, 0, {  -886,   1322}, {0x04, 0x7e, 0x00, 0xff}}},\n    {{{  4557,  -1023,  -4402}, 0, {  -440,    630}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3431,  -1023,  -2559}, 0, {   532,    560}, {0x06, 0x7e, 0x00, 0xff}}},\n    {{{  4557,  -1023,  -2559}, 0, {   170,     16}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  3533,   -767,  -1125}, 0, {   954,      0}, {0x00, 0x7e, 0x0d, 0xff}}},\n    {{{  2919,   -767,  -1125}, 0, {  1152,    296}, {0x43, 0x5e, 0xcd, 0xff}}},\n    {{{  2919,   -869,   -511}, 0, {  1366,    106}, {0x00, 0x7e, 0x0a, 0xff}}},\n};\n\n// 0x07010728 - 0x07010808\nstatic const Vtx hmc_seg7_vertex_07010728[] = {\n    {{{  5671,   -204,    819}, 0, {   684,   1614}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6298,   -204,    205}, 0, {    70,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5671,   -204,    205}, 0, {    70,   1614}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6298,   -204,    819}, 0, {   684,    990}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  1690,   -767,  -1023}, 0, {  1582,    854}, {0x00, 0x7d, 0x10, 0xff}}},\n    {{{  2509,   -767,  -1023}, 0, {  1318,    460}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2509,   -767,  -2252}, 0, {   910,    868}, {0x00, 0x7e, 0xf3, 0xff}}},\n    {{{  1690,   -767,  -2252}, 0, {  1172,   1262}, {0x00, 0x7c, 0xe5, 0xff}}},\n    {{{  4557,  -1023,  -4402}, 0, {  -440,    630}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3431,  -1023,  -4402}, 0, {   -78,   1170}, {0x21, 0x7a, 0x00, 0xff}}},\n    {{{  3431,  -1023,  -2559}, 0, {   532,    560}, {0x06, 0x7e, 0x00, 0xff}}},\n    {{{  1690,   -921,  -3788}, 0, {   674,   1792}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2304,   -921,  -3788}, 0, {   478,   1496}, {0xcb, 0x73, 0x00, 0xff}}},\n    {{{  2304,   -921,  -5938}, 0, {  -236,   2212}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07010808 - 0x070108F8\nstatic const Vtx hmc_seg7_vertex_07010808[] = {\n    {{{  5466,   -409,    819}, 0, {   684,   1818}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5681,   -409,    205}, 0, {    70,   1604}, {0xc8, 0x71, 0x00, 0xff}}},\n    {{{  5466,   -409,    205}, 0, {    70,   1818}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5681,   -409,    819}, 0, {   684,   1604}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  2509,   -767,  -1125}, 0, {  1284,    494}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3533,   -767,  -1125}, 0, {   954,      0}, {0x00, 0x7e, 0x0d, 0xff}}},\n    {{{  3533,   -767,  -1945}, 0, {   682,    272}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2509,   -767,  -1945}, 0, {  1012,    766}, {0xc4, 0x2a, 0x67, 0xff}}},\n    {{{  2304,   -921,  -3788}, 0, {   478,   1496}, {0xcb, 0x73, 0x00, 0xff}}},\n    {{{  2509,   -767,  -3788}, 0, {   398,   1378}, {0xe6, 0x7c, 0x00, 0xff}}},\n    {{{  2509,   -767,  -4402}, 0, {   194,   1582}, {0xcb, 0x73, 0x00, 0xff}}},\n    {{{  2304,   -921,  -4402}, 0, {   272,   1700}, {0x9d, 0x27, 0x45, 0xff}}},\n    {{{  2714,  -1023,  -5324}, 0, {  -154,   1824}, {0x00, 0x70, 0xc5, 0xff}}},\n    {{{  2714,  -1023,  -5733}, 0, {  -290,   1960}, {0x11, 0x72, 0x34, 0xff}}},\n    {{{  2509,  -1023,  -5529}, 0, {  -156,   1990}, {0x3b, 0x6f, 0x00, 0xff}}},\n};\n\n// 0x070108F8 - 0x070109F8\nstatic const Vtx hmc_seg7_vertex_070108F8[] = {\n    {{{  1690,   -921,  -3788}, 0, {   674,   1792}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2304,   -921,  -5938}, 0, {  -236,   2212}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1690,   -921,  -5324}, 0, {   164,   2304}, {0x78, 0x20, 0x17, 0xff}}},\n    {{{  2304,   -921,  -5017}, 0, {    68,   1906}, {0xe6, 0x49, 0x9d, 0xff}}},\n    {{{  2407,   -921,  -5529}, 0, {  -132,   2026}, {0x26, 0x79, 0x00, 0xff}}},\n    {{{  2714,   -921,  -5017}, 0, {   -62,   1708}, {0xdc, 0x68, 0xc2, 0xff}}},\n    {{{  2714,   -921,  -5221}, 0, {  -130,   1776}, {0x00, 0x77, 0xd5, 0xff}}},\n    {{{  2714,  -1023,  -5324}, 0, {  -154,   1824}, {0x00, 0x70, 0xc5, 0xff}}},\n    {{{  2509,  -1023,  -5529}, 0, {  -156,   1990}, {0x3b, 0x6f, 0x00, 0xff}}},\n    {{{  2714,  -1023,  -5733}, 0, {  -290,   1960}, {0x11, 0x72, 0x34, 0xff}}},\n    {{{  2714,   -921,  -5836}, 0, {  -334,   1980}, {0xf4, 0x79, 0x24, 0xff}}},\n    {{{  2714,   -921,  -6348}, 0, {  -504,   2150}, {0x1d, 0x52, 0x5b, 0xff}}},\n    {{{  3328,   -921,  -5836}, 0, {  -532,   1684}, {0x1e, 0x7a, 0xf1, 0xff}}},\n    {{{  3943,   -921,  -5017}, 0, {  -456,   1116}, {0x0a, 0x7e, 0x00, 0xff}}},\n    {{{  3021,   -921,  -5529}, 0, {  -330,   1730}, {0xbe, 0x69, 0xea, 0xff}}},\n    {{{  2919,  -1023,  -5529}, 0, {  -288,   1792}, {0xbe, 0x69, 0x16, 0xff}}},\n};\n\n// 0x070109F8 - 0x07010AF8\nstatic const Vtx hmc_seg7_vertex_070109F8[] = {\n    {{{  2714,   -921,  -5836}, 0, {  -334,   1980}, {0xf4, 0x79, 0x24, 0xff}}},\n    {{{  3328,   -921,  -5836}, 0, {  -532,   1684}, {0x1e, 0x7a, 0xf1, 0xff}}},\n    {{{  3328,   -921,  -6245}, 0, {  -668,   1820}, {0x11, 0x78, 0x23, 0xff}}},\n    {{{  2714,   -921,  -6348}, 0, {  -504,   2150}, {0x1d, 0x52, 0x5b, 0xff}}},\n    {{{  3021,   -921,  -5529}, 0, {  -330,   1730}, {0xbe, 0x69, 0xea, 0xff}}},\n    {{{  3943,   -921,  -6348}, 0, {  -900,   1558}, {0x0c, 0x70, 0x39, 0xff}}},\n    {{{  3738,   -921,  -5836}, 0, {  -662,   1486}, {0xeb, 0x75, 0xd6, 0xff}}},\n    {{{  3431,  -1074,  -5938}, 0, {  -584,   1688}, {0x19, 0x71, 0xcd, 0xff}}},\n    {{{  3431,  -1074,  -6143}, 0, {  -654,   1756}, {0x40, 0x68, 0x20, 0xff}}},\n    {{{  3943,   -921,  -5017}, 0, {  -456,   1116}, {0x0a, 0x7e, 0x00, 0xff}}},\n    {{{  2919,  -1023,  -5529}, 0, {  -288,   1792}, {0xbe, 0x69, 0x16, 0xff}}},\n    {{{  2714,  -1023,  -5324}, 0, {  -154,   1824}, {0x00, 0x70, 0xc5, 0xff}}},\n    {{{  2714,  -1023,  -5733}, 0, {  -290,   1960}, {0x11, 0x72, 0x34, 0xff}}},\n    {{{  3738,   -921,  -6245}, 0, {  -800,   1622}, {0xcd, 0x71, 0x19, 0xff}}},\n    {{{  3636,  -1074,  -5938}, 0, {  -650,   1590}, {0xbf, 0x68, 0xe0, 0xff}}},\n    {{{  3636,  -1074,  -6143}, 0, {  -718,   1658}, {0xe7, 0x71, 0x33, 0xff}}},\n};\n\n// 0x07010AF8 - 0x07010B78\nstatic const Vtx hmc_seg7_vertex_07010AF8[] = {\n    {{{  3943,   -921,  -6348}, 0, {  -900,   1558}, {0x0c, 0x70, 0x39, 0xff}}},\n    {{{  4250,  -1023,  -5017}, 0, {  -546,    982}, {0x16, 0x66, 0xb8, 0xff}}},\n    {{{  4250,  -1023,  -6041}, 0, {  -886,   1322}, {0x04, 0x7e, 0x00, 0xff}}},\n    {{{  3943,   -921,  -5017}, 0, {  -456,   1116}, {0x0a, 0x7e, 0x00, 0xff}}},\n    {{{  6298,   -921,  -5631}, 0, { -1418,    186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4660,   -921,  -5631}, 0, {  -890,    976}, {0xed, 0x76, 0x28, 0xff}}},\n    {{{  4660,   -921,  -4146}, 0, {  -396,    482}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6298,   -921,  -4146}, 0, {  -924,   -308}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07010B78 - 0x07010C68\nstatic const Vtx hmc_seg7_vertex_07010B78[] = {\n    {{{  4762,  -1023,  -1125}, 0, {   990,    684}, {0xac, 0x43, 0xbe, 0xff}}},\n    {{{  4148,  -1023,  -1125}, 0, {  1604,    684}, {0x00, 0x7e, 0xf6, 0xff}}},\n    {{{  4148,   -869,   -511}, 0, {  1604,     70}, {0x45, 0x5f, 0x2d, 0xff}}},\n    {{{  5988,   -204,    819}, 0, {  -232,  -1258}, {0xdf, 0x43, 0x9b, 0xff}}},\n    {{{  5835,   -204,    819}, 0, {   -78,  -1258}, {0x37, 0x1b, 0x92, 0xff}}},\n    {{{  5835,   -204,    870}, 0, {   -78,  -1310}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{  5988,   -204,    870}, 0, {  -232,  -1310}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  5940,   -921,  -4146}, 0, {  -184,   3696}, {0x00, 0x7c, 0xe8, 0xff}}},\n    {{{  4864,   -767,  -3378}, 0, {   888,   2930}, {0x44, 0x5e, 0x31, 0xff}}},\n    {{{  5581,   -767,  -3378}, 0, {   172,   2930}, {0x00, 0x7e, 0xf8, 0xff}}},\n    {{{  4864,   -921,  -4146}, 0, {   888,   3696}, {0x00, 0x7c, 0xe8, 0xff}}},\n    {{{  2919,   -869,   -511}, 0, {  2830,     70}, {0x00, 0x7e, 0x0a, 0xff}}},\n    {{{  4762,   -869,    819}, 0, {   990,  -1258}, {0xf1, 0x7e, 0x00, 0xff}}},\n    {{{  4762,   -869,   -511}, 0, {   990,     70}, {0x00, 0x7e, 0xf1, 0xff}}},\n    {{{  2919,   -869,    819}, 0, {  2830,  -1258}, {0x49, 0x49, 0xb7, 0xff}}},\n};\n\n// 0x07010C68 - 0x07010D68\nstatic const Vtx hmc_seg7_vertex_07010C68[] = {\n    {{{  5479,   -869,   -409}, 0, {   274,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6298,   -869,  -2354}, 0, {  -540,   1908}, {0x9b, 0x43, 0x21, 0xff}}},\n    {{{  5479,   -869,  -2354}, 0, {   274,   1908}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  4762,  -1023,  -1125}, 0, {   990,    684}, {0xac, 0x43, 0xbe, 0xff}}},\n    {{{  4148,   -869,   -511}, 0, {  1604,     70}, {0x45, 0x5f, 0x2d, 0xff}}},\n    {{{  4762,   -869,   -511}, 0, {   990,     70}, {0x00, 0x7e, 0xf1, 0xff}}},\n    {{{  4967,  -1023,  -1125}, 0, {   786,    684}, {0xe8, 0x7c, 0x00, 0xff}}},\n    {{{  5479,   -869,  -2149}, 0, {   274,   1704}, {0x4d, 0x50, 0x3b, 0xff}}},\n    {{{  4967,  -1023,  -1945}, 0, {   786,   1498}, {0xf4, 0x7e, 0x00, 0xff}}},\n    {{{  4148,  -1023,  -1125}, 0, {  1604,    684}, {0x00, 0x7e, 0xf6, 0xff}}},\n    {{{  4148,  -1023,  -1945}, 0, {  1604,   1500}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5479,   -869,  -1125}, 0, {   274,    684}, {0x71, 0x2d, 0xdf, 0xff}}},\n    {{{  6298,   -869,   -409}, 0, {  -540,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4967,   -818,      0}, 0, {   786,   -440}, {0xe2, 0x7b, 0x00, 0xff}}},\n    {{{  4762,   -869,    819}, 0, {   990,  -1258}, {0xf1, 0x7e, 0x00, 0xff}}},\n    {{{  4967,   -818,    819}, 0, {   786,  -1258}, {0xc6, 0x70, 0x00, 0xff}}},\n};\n\n// 0x07010D68 - 0x07010E38\nstatic const Vtx hmc_seg7_vertex_07010D68[] = {\n    {{{  4557,   -767,  -2354}, 0, {  1194,   1908}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6298,   -767,  -2354}, 0, {  -540,   1908}, {0xd2, 0x21, 0x71, 0xff}}},\n    {{{  5581,   -767,  -3378}, 0, {   172,   2930}, {0x00, 0x7e, 0xf8, 0xff}}},\n    {{{  4557,   -767,  -3378}, 0, {  1194,   2930}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5271,   -613,    819}, 0, {   482,  -1258}, {0xe8, 0x7c, 0x00, 0xff}}},\n    {{{  5476,   -613,    819}, 0, {   278,  -1258}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  5476,   -613,    205}, 0, {   278,   -646}, {0xc8, 0x71, 0x00, 0xff}}},\n    {{{  5271,   -613,    205}, 0, {   482,   -646}, {0xcf, 0x75, 0x00, 0xff}}},\n    {{{  4967,   -818,    205}, 0, {   786,   -646}, {0xce, 0x4a, 0x59, 0xff}}},\n    {{{  4967,   -818,    819}, 0, {   786,  -1258}, {0xc6, 0x70, 0x00, 0xff}}},\n    {{{  4967,   -818,      0}, 0, {   786,   -440}, {0xe2, 0x7b, 0x00, 0xff}}},\n    {{{  4762,   -869,      0}, 0, {   990,   -440}, {0x8c, 0x32, 0x00, 0xff}}},\n    {{{  4762,   -869,    819}, 0, {   990,  -1258}, {0xf1, 0x7e, 0x00, 0xff}}},\n};\n\n// 0x07010E38 - 0x07010F38\nstatic const Vtx hmc_seg7_vertex_07010E38[] = {\n    {{{  1127,   -153,  -4633}, 0, {   530,    276}, {0x00, 0xc8, 0x8f, 0xff}}},\n    {{{  1178,   -409,  -4633}, 0, {   530,    784}, {0x33, 0x33, 0x99, 0xff}}},\n    {{{  1127,   -409,  -4633}, 0, {   530,    784}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{  1178,   -409,  -4786}, 0, {   632,    784}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{  1127,   -409,  -4786}, 0, {   632,    784}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  1178,   -153,  -4633}, 0, {   530,    276}, {0x6e, 0xc9, 0xe5, 0xff}}},\n    {{{  1127,   -153,  -4786}, 0, {   632,    276}, {0x00, 0x8f, 0x38, 0xff}}},\n    {{{  1178,   -153,  -4786}, 0, {   632,    276}, {0x65, 0xdf, 0x43, 0xff}}},\n    {{{  4250,      0,  -4197}, 0, {   172,      0}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{  4250,  -1023,  -4197}, 0, {   172,   2012}, {0x93, 0x00, 0x40, 0xff}}},\n    {{{  4250,  -1023,  -3378}, 0, {   990,   2012}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{  1178,   -409,  -4453}, 0, {   410,    784}, {0x54, 0x54, 0xd6, 0xff}}},\n    {{{  1178,    102,  -4453}, 0, {   410,   -236}, {0x54, 0xd6, 0xac, 0xff}}},\n    {{{  1178,    102,  -4965}, 0, {   752,   -236}, {0x65, 0xbd, 0x21, 0xff}}},\n    {{{  1178,   -409,  -4965}, 0, {   752,    784}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  4045,      0,  -4402}, 0, {     0,      0}, {0xc0, 0x00, 0x6d, 0xff}}},\n};\n\n// 0x07010F38 - 0x07011028\nstatic const Vtx hmc_seg7_vertex_07010F38[] = {\n    {{{  4045,      0,  -4402}, 0, {     0,      0}, {0xc0, 0x00, 0x6d, 0xff}}},\n    {{{  4045,  -1023,  -4402}, 0, {     0,   2012}, {0xe0, 0x00, 0x7a, 0xff}}},\n    {{{  4250,  -1023,  -4197}, 0, {   172,   2012}, {0x93, 0x00, 0x40, 0xff}}},\n    {{{  4250,      0,  -4197}, 0, {   172,      0}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{  4250,  -1023,  -3378}, 0, {   990,   2012}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{  4250,      0,  -3378}, 0, {   990,      0}, {0x93, 0x00, 0x40, 0xff}}},\n    {{{  4250,      0,  -3378}, 0, {     0,      0}, {0x93, 0x00, 0x40, 0xff}}},\n    {{{  4455,  -1023,  -3173}, 0, {   308,   2012}, {0xc0, 0x00, 0x6d, 0xff}}},\n    {{{  4455,      0,  -3173}, 0, {   308,      0}, {0xe0, 0x00, 0x7a, 0xff}}},\n    {{{  4250,  -1023,  -3378}, 0, {     0,   2012}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{  4660,  -1023,  -3173}, 0, {   650,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4660,      0,  -3173}, 0, {   650,      0}, {0x40, 0x00, 0x6d, 0xff}}},\n    {{{  4864,   -767,  -3378}, 0, {   990,   1500}, {0x44, 0x5e, 0x31, 0xff}}},\n    {{{  4864,      0,  -3378}, 0, {   990,      0}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{  4660,   -767,  -3173}, 0, {   650,   1500}, {0x5a, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07011028 - 0x07011118\nstatic const Vtx hmc_seg7_vertex_07011028[] = {\n    {{{  4660,      0,  -5017}, 0, {     0,      0}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{  4250,  -1023,  -5017}, 0, {   324,   2012}, {0x16, 0x66, 0xb8, 0xff}}},\n    {{{  4250,      0,  -5017}, 0, {   324,      0}, {0x40, 0x00, 0x93, 0xff}}},\n    {{{  2304,      0,  -4402}, 0, {     0,      0}, {0xe0, 0x00, 0x7a, 0xff}}},\n    {{{  4045,  -1023,  -4402}, 0, {   990,   2012}, {0xe0, 0x00, 0x7a, 0xff}}},\n    {{{  4045,      0,  -4402}, 0, {   990,      0}, {0xc0, 0x00, 0x6d, 0xff}}},\n    {{{  3636,   -921,  -5631}, 0, {   856,   1808}, {0x40, 0x00, 0x93, 0xff}}},\n    {{{  4660,   -921,  -5017}, 0, {     0,   1808}, {0x34, 0x2b, 0x95, 0xff}}},\n    {{{  3636,      0,  -5631}, 0, {   856,      0}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{  3328,   -921,  -5631}, 0, {  1124,   1808}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{  3328,      0,  -5631}, 0, {  1124,      0}, {0xc0, 0x00, 0x93, 0xff}}},\n    {{{  2304,  -1023,  -4402}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3431,      0,  -3788}, 0, {     0,      0}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{  1895,   -921,  -3788}, 0, {  2522,   1808}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{  1895,      0,  -3788}, 0, {  2522,      0}, {0x40, 0x00, 0x93, 0xff}}},\n};\n\n// 0x07011118 - 0x07011208\nstatic const Vtx hmc_seg7_vertex_07011118[] = {\n    {{{  1895,      0,  -3173}, 0, {  -812,      0}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  3431,  -1023,  -3173}, 0, {   990,   2012}, {0x25, 0x47, 0x62, 0xff}}},\n    {{{  3431,      0,  -3173}, 0, {   990,      0}, {0x40, 0x00, 0x6d, 0xff}}},\n    {{{  1895,   -869,  -3173}, 0, {  -812,   1704}, {0x40, 0x00, 0x6d, 0xff}}},\n    {{{  3431,      0,  -3173}, 0, {     0,      0}, {0x40, 0x00, 0x6d, 0xff}}},\n    {{{  3431,  -1023,  -3173}, 0, {     0,   2012}, {0x25, 0x47, 0x62, 0xff}}},\n    {{{  3636,  -1023,  -3378}, 0, {   308,   2012}, {0x6d, 0x00, 0x40, 0xff}}},\n    {{{  3636,      0,  -3378}, 0, {   308,      0}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{  3636,  -1023,  -3583}, 0, {   650,   2012}, {0x7a, 0x00, 0xe0, 0xff}}},\n    {{{  3636,      0,  -3583}, 0, {   650,      0}, {0x6d, 0x00, 0xc0, 0xff}}},\n    {{{  3431,  -1023,  -3788}, 0, {   990,   2012}, {0x48, 0x25, 0x9f, 0xff}}},\n    {{{  3431,      0,  -3788}, 0, {   990,      0}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{  5274,      0,  -1945}, 0, {   990,      0}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{  4352,  -1023,  -1945}, 0, {   154,   2012}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{  5274,  -1023,  -1945}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07011208 - 0x07011308\nstatic const Vtx hmc_seg7_vertex_07011208[] = {\n    {{{  3431,      0,  -3788}, 0, {     0,      0}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{  3431,  -1023,  -3788}, 0, {     0,   2012}, {0x48, 0x25, 0x9f, 0xff}}},\n    {{{  1895,   -921,  -3788}, 0, {  2522,   1808}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{  4148,      0,   -511}, 0, {     0,      0}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{  4148,  -1023,   -511}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4148,  -1023,  -1740}, 0, {   990,   2012}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{  4148,      0,  -1740}, 0, {   990,      0}, {0x6d, 0x00, 0x40, 0xff}}},\n    {{{  4148,      0,  -1740}, 0, {     0,      0}, {0x6d, 0x00, 0x40, 0xff}}},\n    {{{  4148,  -1023,  -1740}, 0, {     0,   2012}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{  4352,  -1023,  -1945}, 0, {   154,   2012}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{  4352,      0,  -1945}, 0, {   154,      0}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{  5274,      0,  -1945}, 0, {   990,      0}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{  5274,      0,  -2559}, 0, {     0,      0}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{  5274,  -1023,  -2559}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2509,  -1023,  -2559}, 0, {  2012,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2509,      0,  -2559}, 0, {  2012,      0}, {0xc0, 0x00, 0x93, 0xff}}},\n};\n\n// 0x07011308 - 0x07011408\nstatic const Vtx hmc_seg7_vertex_07011308[] = {\n    {{{  5274,      0,  -1330}, 0, {   260,      0}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{  4967,  -1023,  -1330}, 0, {   698,   2012}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{  4967,      0,  -1330}, 0, {   698,      0}, {0xc0, 0x00, 0x93, 0xff}}},\n    {{{  4762,  -1023,  -1125}, 0, {   990,   2012}, {0xac, 0x43, 0xbe, 0xff}}},\n    {{{  4762,      0,  -1125}, 0, {   990,      0}, {0x86, 0x00, 0xe0, 0xff}}},\n    {{{  5274,   -931,  -1330}, 0, {   260,   1828}, {0x40, 0x00, 0x93, 0xff}}},\n    {{{  4762,      0,      0}, 0, {     0,      0}, {0x93, 0x00, 0x40, 0xff}}},\n    {{{  4762,  -1023,      0}, 0, {     0,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  4967,  -1023,    205}, 0, {   126,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  4967,      0,    205}, 0, {   126,      0}, {0x29, 0x00, 0x77, 0xff}}},\n    {{{  3943,      0,  -6348}, 0, {     0,      0}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  4660,  -1023,  -5631}, 0, {   922,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  4660,      0,  -5631}, 0, {   922,      0}, {0xe0, 0x00, 0x7a, 0xff}}},\n    {{{  3943,  -1023,  -6348}, 0, {     0,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  4660,   -921,  -5631}, 0, {   922,   1808}, {0xed, 0x76, 0x28, 0xff}}},\n    {{{  5479,   -921,  -5631}, 0, {  2012,   1808}, {0xe0, 0x00, 0x7a, 0xff}}},\n};\n\n// 0x07011408 - 0x070114E8\nstatic const Vtx hmc_seg7_vertex_07011408[] = {\n    {{{  4660,      0,  -5631}, 0, {   922,      0}, {0xe0, 0x00, 0x7a, 0xff}}},\n    {{{  5479,   -921,  -5631}, 0, {  2012,   1808}, {0xe0, 0x00, 0x7a, 0xff}}},\n    {{{  5479,      0,  -5631}, 0, {  2012,      0}, {0xc0, 0x00, 0x6d, 0xff}}},\n    {{{  5835,     51,    870}, 0, {   430,   -136}, {0x71, 0xc8, 0x00, 0xff}}},\n    {{{  5835,   -204,    819}, 0, {   430,    376}, {0x37, 0x1b, 0x92, 0xff}}},\n    {{{  5835,     51,    819}, 0, {   430,   -136}, {0x21, 0xbd, 0x9b, 0xff}}},\n    {{{  5835,   -204,    870}, 0, {   430,    376}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{  5988,     51,    819}, 0, {   278,   -136}, {0xc9, 0xe5, 0x92, 0xff}}},\n    {{{  5988,   -204,    870}, 0, {   278,    376}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  5988,     51,    870}, 0, {   278,   -136}, {0xc8, 0x8f, 0x00, 0xff}}},\n    {{{  5988,   -204,    819}, 0, {   278,    376}, {0xdf, 0x43, 0x9b, 0xff}}},\n    {{{  4762,      0,  -1125}, 0, {     0,      0}, {0x86, 0x00, 0xe0, 0xff}}},\n    {{{  4762,  -1023,  -1125}, 0, {     0,   2012}, {0xac, 0x43, 0xbe, 0xff}}},\n    {{{  4762,   -869,      0}, 0, {   990,   1704}, {0x8c, 0x32, 0x00, 0xff}}},\n};\n\n// 0x070114E8 - 0x070115C8\nstatic const Vtx hmc_seg7_vertex_070114E8[] = {\n    {{{  3738,      0,   -306}, 0, {   308,      0}, {0xe0, 0x00, 0x7a, 0xff}}},\n    {{{  3943,   -869,   -306}, 0, {   650,   1704}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  3943,      0,   -306}, 0, {   650,      0}, {0x40, 0x00, 0x6d, 0xff}}},\n    {{{  4148,   -869,   -511}, 0, {   990,   1704}, {0x45, 0x5f, 0x2d, 0xff}}},\n    {{{  4148,      0,   -511}, 0, {   990,      0}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{  3738,   -869,   -306}, 0, {   308,   1704}, {0xc0, 0x00, 0x6d, 0xff}}},\n    {{{  3533,      0,   -511}, 0, {     0,      0}, {0x93, 0x00, 0x40, 0xff}}},\n    {{{  3533,   -869,   -511}, 0, {     0,   1704}, {0x8e, 0x29, 0x24, 0xff}}},\n    {{{  5479,      0,   -613}, 0, {     0,      0}, {0x7a, 0x00, 0xe0, 0xff}}},\n    {{{  5479,   -869,  -1125}, 0, {   990,   1704}, {0x71, 0x2d, 0xdf, 0xff}}},\n    {{{  5479,      0,  -1125}, 0, {   990,      0}, {0x6d, 0x00, 0xc0, 0xff}}},\n    {{{  4762,      0,  -1125}, 0, {     0,      0}, {0x86, 0x00, 0xe0, 0xff}}},\n    {{{  4762,   -869,      0}, 0, {   990,   1704}, {0x8c, 0x32, 0x00, 0xff}}},\n    {{{  4762,      0,      0}, 0, {   990,      0}, {0x93, 0x00, 0x40, 0xff}}},\n};\n\n// 0x070115C8 - 0x070116B8\nstatic const Vtx hmc_seg7_vertex_070115C8[] = {\n    {{{  6298,      0,   -613}, 0, {     0,      0}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{  6298,   -869,   -613}, 0, {     0,   1704}, {0x84, 0x00, 0xe9, 0xff}}},\n    {{{  6093,   -869,   -409}, 0, {   224,   1704}, {0xc0, 0x00, 0x93, 0xff}}},\n    {{{  6093,      0,   -409}, 0, {   224,      0}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{  5684,   -869,   -409}, 0, {   734,   1704}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{  5684,      0,   -409}, 0, {   734,      0}, {0x40, 0x00, 0x93, 0xff}}},\n    {{{  5479,   -869,   -613}, 0, {   990,   1704}, {0x6d, 0x00, 0xc0, 0xff}}},\n    {{{  5479,      0,   -613}, 0, {   990,      0}, {0x7a, 0x00, 0xe0, 0xff}}},\n    {{{  5479,      0,   -613}, 0, {     0,      0}, {0x7a, 0x00, 0xe0, 0xff}}},\n    {{{  5479,   -869,   -613}, 0, {     0,   1704}, {0x6d, 0x00, 0xc0, 0xff}}},\n    {{{  5479,   -869,  -1125}, 0, {   990,   1704}, {0x71, 0x2d, 0xdf, 0xff}}},\n    {{{  5479,      0,  -1125}, 0, {     0,      0}, {0x6d, 0x00, 0xc0, 0xff}}},\n    {{{  5274,   -931,  -1330}, 0, {   260,   1828}, {0x40, 0x00, 0x93, 0xff}}},\n    {{{  5274,      0,  -1330}, 0, {   260,      0}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{  5479,   -869,  -1125}, 0, {     0,   1704}, {0x71, 0x2d, 0xdf, 0xff}}},\n};\n\n// 0x070116B8 - 0x070117B8\nstatic const Vtx hmc_seg7_vertex_070116B8[] = {\n    {{{  5274,      0,  -1945}, 0, {     0,      0}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{  5274,   -931,  -1945}, 0, {     0,   1828}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{  5479,   -869,  -2149}, 0, {   308,   1704}, {0x4d, 0x50, 0x3b, 0xff}}},\n    {{{  5479,      0,  -2149}, 0, {   308,      0}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{  5479,   -869,  -2354}, 0, {   650,   1704}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  5479,      0,  -2354}, 0, {   650,      0}, {0x6d, 0x00, 0xc0, 0xff}}},\n    {{{  5479,   -767,  -2354}, 0, {   650,   1500}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{  5274,   -767,  -2559}, 0, {   990,   1500}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  5274,      0,  -2559}, 0, {   990,      0}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{  2304,      0,  -2354}, 0, {   308,      0}, {0x86, 0x00, 0xe0, 0xff}}},\n    {{{  2304,   -801,  -2149}, 0, {   650,   1568}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2304,      0,  -2149}, 0, {   650,      0}, {0x93, 0x00, 0x40, 0xff}}},\n    {{{  5581,      0,  -3071}, 0, {  1330,      0}, {0x93, 0x00, 0x40, 0xff}}},\n    {{{  5581,   -767,  -3071}, 0, {  1330,   1500}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{  6298,   -767,  -2354}, 0, {  2012,   1500}, {0xd2, 0x21, 0x71, 0xff}}},\n    {{{  6298,      0,  -2354}, 0, {  2012,      0}, {0x8b, 0x00, 0x30, 0xff}}},\n};\n\n// 0x070117B8 - 0x07011898\nstatic const Vtx hmc_seg7_vertex_070117B8[] = {\n    {{{  5581,      0,  -3788}, 0, {   650,      0}, {0x86, 0x00, 0xe0, 0xff}}},\n    {{{  5581,   -767,  -3071}, 0, {  1330,   1500}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{  5581,      0,  -3071}, 0, {  1330,      0}, {0x93, 0x00, 0x40, 0xff}}},\n    {{{  5479,      0,  -5631}, 0, {     0,      0}, {0xc0, 0x00, 0x6d, 0xff}}},\n    {{{  5479,   -921,  -5631}, 0, {     0,   1808}, {0xe0, 0x00, 0x7a, 0xff}}},\n    {{{  6298,   -921,  -4812}, 0, {   712,   1808}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{  6298,      0,  -4812}, 0, {   712,      0}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{  2304,      0,  -2149}, 0, {   650,      0}, {0x93, 0x00, 0x40, 0xff}}},\n    {{{  2304,   -767,  -2149}, 0, {   650,   1500}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{  2509,   -767,  -1945}, 0, {   990,   1500}, {0xc4, 0x2a, 0x67, 0xff}}},\n    {{{  3533,      0,  -1740}, 0, {   114,      0}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{  3533,   -869,   -511}, 0, {   990,   1704}, {0x8e, 0x29, 0x24, 0xff}}},\n    {{{  3533,      0,   -511}, 0, {   990,      0}, {0x93, 0x00, 0x40, 0xff}}},\n    {{{  2509,      0,  -1945}, 0, {   990,      0}, {0xe0, 0x00, 0x7a, 0xff}}},\n};\n\n// 0x07011898 - 0x07011988\nstatic const Vtx hmc_seg7_vertex_07011898[] = {\n    {{{  2509,      0,  -1945}, 0, {     0,      0}, {0xe0, 0x00, 0x7a, 0xff}}},\n    {{{  3328,   -767,  -1945}, 0, {   990,   1500}, {0xe0, 0x00, 0x7a, 0xff}}},\n    {{{  3328,      0,  -1945}, 0, {   990,      0}, {0xc0, 0x00, 0x6d, 0xff}}},\n    {{{  2509,   -767,  -1945}, 0, {     0,   1500}, {0xc4, 0x2a, 0x67, 0xff}}},\n    {{{  3328,      0,  -1945}, 0, {     0,      0}, {0xc0, 0x00, 0x6d, 0xff}}},\n    {{{  3533,   -767,  -1740}, 0, {   114,   1500}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3533,      0,  -1740}, 0, {   114,      0}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{  3328,   -767,  -1945}, 0, {     0,   1500}, {0xe0, 0x00, 0x7a, 0xff}}},\n    {{{  3533,   -869,  -1740}, 0, {   114,   1704}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3533,   -869,   -511}, 0, {   990,   1704}, {0x8e, 0x29, 0x24, 0xff}}},\n    {{{  2509,      0,  -2559}, 0, {     0,      0}, {0xc0, 0x00, 0x93, 0xff}}},\n    {{{  2509,   -869,  -2559}, 0, {     0,   1704}, {0xf7, 0x7a, 0xdf, 0xff}}},\n    {{{  2304,   -801,  -2354}, 0, {   308,   1568}, {0x93, 0x00, 0xc0, 0xff}}},\n    {{{  2304,      0,  -2354}, 0, {   308,      0}, {0x86, 0x00, 0xe0, 0xff}}},\n    {{{  2304,   -801,  -2149}, 0, {   650,   1568}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07011988 - 0x07011A88\nstatic const Vtx hmc_seg7_vertex_07011988[] = {\n    {{{  4864,      0,  -4812}, 0, {  1756,      0}, {0x6d, 0x00, 0xc0, 0xff}}},\n    {{{  4864,   -921,  -4812}, 0, {  1756,   1808}, {0x7a, 0x00, 0xe0, 0xff}}},\n    {{{  4660,   -921,  -5017}, 0, {  2012,   1808}, {0x34, 0x2b, 0x95, 0xff}}},\n    {{{  4864,      0,  -3378}, 0, {     0,      0}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{  4660,      0,  -5017}, 0, {  2012,      0}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{  4864,   -921,  -3378}, 0, {     0,   1808}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6298,      0,  -4505}, 0, {     0,      0}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{  5581,   -921,  -3788}, 0, {   650,   1808}, {0x93, 0x00, 0xc0, 0xff}}},\n    {{{  5581,      0,  -3788}, 0, {   650,      0}, {0x86, 0x00, 0xe0, 0xff}}},\n    {{{  6298,   -921,  -4505}, 0, {     0,   1808}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{  5581,   -767,  -3071}, 0, {  1330,   1500}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{  2100,      0,  -4607}, 0, {   650,      0}, {0x93, 0x00, 0x40, 0xff}}},\n    {{{  2100,   -921,  -4607}, 0, {   650,   1808}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{  2304,   -921,  -4402}, 0, {   990,   1808}, {0x9d, 0x27, 0x45, 0xff}}},\n    {{{  2100,      0,  -4812}, 0, {   308,      0}, {0x86, 0x00, 0xe0, 0xff}}},\n    {{{  2304,      0,  -4402}, 0, {   990,      0}, {0xe0, 0x00, 0x7a, 0xff}}},\n};\n\n// 0x07011A88 - 0x07011B68\nstatic const Vtx hmc_seg7_vertex_07011A88[] = {\n    {{{  2100,      0,  -4812}, 0, {   308,      0}, {0x86, 0x00, 0xe0, 0xff}}},\n    {{{  2100,   -921,  -4812}, 0, {   308,   1808}, {0x93, 0x00, 0xc0, 0xff}}},\n    {{{  2100,   -921,  -4607}, 0, {   650,   1808}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{  2304,      0,  -5017}, 0, {     0,      0}, {0xc0, 0x00, 0x93, 0xff}}},\n    {{{  2304,   -921,  -5017}, 0, {     0,   1808}, {0xe6, 0x49, 0x9d, 0xff}}},\n    {{{  3943,   -921,  -6348}, 0, {   990,   1808}, {0x0c, 0x70, 0x39, 0xff}}},\n    {{{  3124,   -409,  -6348}, 0, {   308,    784}, {0x21, 0x43, 0x65, 0xff}}},\n    {{{  2714,   -921,  -6348}, 0, {     0,   1808}, {0x1d, 0x52, 0x5b, 0xff}}},\n    {{{  3328,      0,  -5631}, 0, {  1124,      0}, {0xc0, 0x00, 0x93, 0xff}}},\n    {{{  3328,   -921,  -5631}, 0, {  1124,   1808}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{  2714,   -921,  -5017}, 0, {  1656,   1808}, {0xdc, 0x68, 0xc2, 0xff}}},\n    {{{  2714,      0,  -5017}, 0, {  1656,      0}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{  2304,   -921,  -5017}, 0, {  2012,   1808}, {0xe6, 0x49, 0x9d, 0xff}}},\n    {{{  2304,      0,  -5017}, 0, {  2012,      0}, {0xc0, 0x00, 0x93, 0xff}}},\n};\n\n// 0x07011B68 - 0x07011C68\nstatic const Vtx hmc_seg7_vertex_07011B68[] = {\n    {{{  1690,      0,  -5324}, 0, {  1124,      0}, {0x62, 0xc4, 0x34, 0xff}}},\n    {{{  2714,   -921,  -6348}, 0, {  2012,   1808}, {0x1d, 0x52, 0x5b, 0xff}}},\n    {{{  2714,      0,  -6348}, 0, {  2012,      0}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{  1690,   -921,  -5324}, 0, {  1124,   1808}, {0x78, 0x20, 0x17, 0xff}}},\n    {{{  2714,   -921,  -6348}, 0, {     0,   1808}, {0x1d, 0x52, 0x5b, 0xff}}},\n    {{{  3124,   -409,  -6348}, 0, {   308,    784}, {0x21, 0x43, 0x65, 0xff}}},\n    {{{  3124,      0,  -6348}, 0, {   308,      0}, {0x54, 0xd6, 0x54, 0xff}}},\n    {{{  2714,      0,  -6348}, 0, {     0,      0}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{  3124,   -409,  -6860}, 0, {   308,    784}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{  3124,      0,  -6860}, 0, {   308,      0}, {0x1b, 0xc9, 0x6e, 0xff}}},\n    {{{  3943,   -921,  -6348}, 0, {   990,   1808}, {0x0c, 0x70, 0x39, 0xff}}},\n    {{{  3533,   -409,  -6348}, 0, {   650,    784}, {0xbd, 0x21, 0x65, 0xff}}},\n    {{{  3943,      0,  -6348}, 0, {   990,      0}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  3533,      0,  -6348}, 0, {   650,      0}, {0xcd, 0x99, 0x33, 0xff}}},\n    {{{  3533,   -409,  -6860}, 0, {   650,    784}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  3533,      0,  -6860}, 0, {   650,      0}, {0xac, 0xd6, 0x54, 0xff}}},\n};\n\n// 0x07011C68 - 0x07011D58\nstatic const Vtx hmc_seg7_vertex_07011C68[] = {\n    {{{  3124,      0,  -6860}, 0, {   308,      0}, {0x1b, 0xc9, 0x6e, 0xff}}},\n    {{{  3124,   -409,  -6860}, 0, {   308,    784}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{  3252,   -409,  -6860}, 0, {   416,    784}, {0x2a, 0x54, 0x54, 0xff}}},\n    {{{  3252,   -153,  -6860}, 0, {   416,    276}, {0x54, 0xd6, 0x54, 0xff}}},\n    {{{  3405,   -153,  -6860}, 0, {   542,    276}, {0xe5, 0xc9, 0x6e, 0xff}}},\n    {{{  3533,      0,  -6860}, 0, {   650,      0}, {0xac, 0xd6, 0x54, 0xff}}},\n    {{{  3405,   -409,  -6860}, 0, {   542,    784}, {0x99, 0x33, 0x33, 0xff}}},\n    {{{  3533,   -409,  -6860}, 0, {   650,    784}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  3405,   -153,  -6911}, 0, {   542,    276}, {0x8f, 0xc8, 0x00, 0xff}}},\n    {{{  3405,   -409,  -6911}, 0, {   542,    784}, {0xc8, 0x71, 0x00, 0xff}}},\n    {{{  3252,   -409,  -6911}, 0, {   416,    784}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  6298,   -869,  -2354}, 0, {     0,   1704}, {0x9b, 0x43, 0x21, 0xff}}},\n    {{{  6298,   -357,  -1842}, 0, {   570,    684}, {0x9b, 0x21, 0x43, 0xff}}},\n    {{{  6298,      0,  -1842}, 0, {   570,      0}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{  3252,   -153,  -6911}, 0, {   416,    276}, {0x38, 0x8f, 0x00, 0xff}}},\n};\n\n// 0x07011D58 - 0x07011E58\nstatic const Vtx hmc_seg7_vertex_07011D58[] = {\n    {{{  6912,    154,  -1842}, 0, {   570,   -340}, {0xac, 0xd6, 0x54, 0xff}}},\n    {{{  6912,   -357,  -1842}, 0, {   570,    684}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  6912,   -357,  -1330}, 0, {  1170,    684}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  6912,    154,  -1330}, 0, {  1170,   -340}, {0xcd, 0x99, 0xcd, 0xff}}},\n    {{{  6298,   -869,  -2354}, 0, {     0,   1704}, {0x9b, 0x43, 0x21, 0xff}}},\n    {{{  6298,      0,  -1842}, 0, {   570,      0}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{  6298,      0,  -2354}, 0, {     0,      0}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{  6298,   -869,   -613}, 0, {  2012,   1704}, {0x84, 0x00, 0xe9, 0xff}}},\n    {{{  6298,   -357,  -1842}, 0, {   570,    684}, {0x9b, 0x21, 0x43, 0xff}}},\n    {{{  6298,   -357,  -1330}, 0, {  1170,    684}, {0x9b, 0x43, 0xdf, 0xff}}},\n    {{{  6298,      0,   -613}, 0, {  2012,      0}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{  6298,      0,  -1330}, 0, {  1170,      0}, {0xb7, 0xb7, 0xb7, 0xff}}},\n    {{{  6298,    154,  -1842}, 0, {   570,   -340}, {0x10, 0x90, 0x39, 0xff}}},\n    {{{  1690,   -921,  -3993}, 0, {   104,   1808}, {0x78, 0x00, 0xda, 0xff}}},\n    {{{  1690,   -409,  -4453}, 0, {   410,    784}, {0x65, 0x21, 0xbd, 0xff}}},\n    {{{  1690,    102,  -4453}, 0, {   410,   -236}, {0x2c, 0x8f, 0xdd, 0xff}}},\n};\n\n// 0x07011E58 - 0x07011F58\nstatic const Vtx hmc_seg7_vertex_07011E58[] = {\n    {{{  6912,   -357,  -1330}, 0, {  1170,    684}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  6298,    154,  -1330}, 0, {  1170,   -340}, {0x0a, 0xbb, 0x96, 0xff}}},\n    {{{  6912,    154,  -1330}, 0, {  1170,   -340}, {0xcd, 0x99, 0xcd, 0xff}}},\n    {{{  6298,   -357,  -1330}, 0, {  1170,    684}, {0x9b, 0x43, 0xdf, 0xff}}},\n    {{{  1895,      0,  -3788}, 0, {     0,      0}, {0x40, 0x00, 0x93, 0xff}}},\n    {{{  1690,   -921,  -3993}, 0, {   104,   1808}, {0x78, 0x00, 0xda, 0xff}}},\n    {{{  1690,      0,  -3993}, 0, {   104,      0}, {0x23, 0x89, 0xea, 0xff}}},\n    {{{  1895,   -921,  -3788}, 0, {     0,   1808}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{  1690,    102,  -4453}, 0, {   410,   -236}, {0x2c, 0x8f, 0xdd, 0xff}}},\n    {{{  1690,   -921,  -5324}, 0, {   990,   1808}, {0x78, 0x20, 0x17, 0xff}}},\n    {{{  1690,   -409,  -4453}, 0, {   410,    784}, {0x65, 0x21, 0xbd, 0xff}}},\n    {{{  1690,   -409,  -4965}, 0, {   752,    784}, {0x65, 0x43, 0x21, 0xff}}},\n    {{{  1690,      0,  -5324}, 0, {   990,      0}, {0x62, 0xc4, 0x34, 0xff}}},\n    {{{  1690,    102,  -4965}, 0, {   752,   -236}, {0x08, 0x93, 0x3f, 0xff}}},\n    {{{  1178,   -409,  -4453}, 0, {   410,    784}, {0x54, 0x54, 0xd6, 0xff}}},\n    {{{  1178,   -409,  -4965}, 0, {   752,    784}, {0x54, 0x2a, 0x54, 0xff}}},\n};\n\n// 0x07011F58 - 0x07012048\nstatic const Vtx hmc_seg7_vertex_07011F58[] = {\n    {{{  1690,    102,  -4965}, 0, {   752,   -236}, {0x08, 0x93, 0x3f, 0xff}}},\n    {{{  1178,    102,  -4965}, 0, {   752,   -236}, {0x65, 0xbd, 0x21, 0xff}}},\n    {{{  1178,   -409,  -4965}, 0, {   752,    784}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  1690,   -409,  -4965}, 0, {   752,    784}, {0x65, 0x43, 0x21, 0xff}}},\n    {{{  6093,      0,    205}, 0, {     0,      0}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  6298,   -204,    410}, 0, {   172,    376}, {0x93, 0x00, 0x40, 0xff}}},\n    {{{  6298,      0,    410}, 0, {   172,      0}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{  1178,    102,  -4453}, 0, {   410,   -236}, {0x54, 0xd6, 0xac, 0xff}}},\n    {{{  1690,    102,  -4453}, 0, {   410,   -236}, {0x2c, 0x8f, 0xdd, 0xff}}},\n    {{{  1690,   -409,  -4453}, 0, {   410,    784}, {0x65, 0x21, 0xbd, 0xff}}},\n    {{{  1178,   -409,  -4453}, 0, {   410,    784}, {0x54, 0x54, 0xd6, 0xff}}},\n    {{{  6298,      0,  -4505}, 0, {   990,      0}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{  6298,      0,  -4812}, 0, {   712,      0}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{  6298,   -921,  -4812}, 0, {   712,   1808}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{  6298,   -921,  -4505}, 0, {   990,   1808}, {0x8b, 0x00, 0xd0, 0xff}}},\n};\n\n// 0x07012048 - 0x07012148\nstatic const Vtx hmc_seg7_vertex_07012048[] = {\n    {{{  4967,      0,    205}, 0, {   126,      0}, {0x29, 0x00, 0x77, 0xff}}},\n    {{{  6093,   -818,    205}, 0, {   990,   1604}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6093,      0,    205}, 0, {   990,      0}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  4967,   -818,    205}, 0, {   126,   1604}, {0xce, 0x4a, 0x59, 0xff}}},\n    {{{  5988,   -204,    819}, 0, {   188,    376}, {0xdf, 0x43, 0x9b, 0xff}}},\n    {{{  5988,      0,    819}, 0, {   188,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6298,      0,    819}, 0, {     0,      0}, {0xb4, 0x00, 0x9b, 0xff}}},\n    {{{  6093,      0,    205}, 0, {     0,      0}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  6093,   -204,    205}, 0, {     0,    376}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  6298,   -204,    410}, 0, {   172,    376}, {0x93, 0x00, 0x40, 0xff}}},\n    {{{  6298,      0,    410}, 0, {   172,      0}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{  6298,   -204,    819}, 0, {   582,    376}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  6298,      0,    819}, 0, {   582,      0}, {0xb4, 0x00, 0x9b, 0xff}}},\n    {{{  6298,   -869,    819}, 0, {     0,   1704}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5835,   -204,    819}, 0, {   298,    376}, {0x37, 0x1b, 0x92, 0xff}}},\n    {{{  4864,   -869,    819}, 0, {   990,   1704}, {0x20, 0x00, 0x86, 0xff}}},\n};\n\n// 0x07012148 - 0x07012188\nstatic const Vtx hmc_seg7_vertex_07012148[] = {\n    {{{  4864,   -869,    819}, 0, {   990,   1704}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{  4864,      0,    819}, 0, {   990,      0}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{  5835,   -204,    819}, 0, {   298,    376}, {0x37, 0x1b, 0x92, 0xff}}},\n    {{{  5835,      0,    819}, 0, {   298,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07012188 - 0x07012278\nstatic const Vtx hmc_seg7_vertex_07012188[] = {\n    {{{  2714,      0,  -1330}, 0, {     0,      0}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{  2509,   -767,  -1330}, 0, {   990,   2012}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{  2509,      0,  -1330}, 0, {   990,      0}, {0xc0, 0x00, 0x93, 0xff}}},\n    {{{  4864,      0,    819}, 0, {     0,      0}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{  4352,   -869,    307}, 0, {  1246,   1900}, {0x40, 0x00, 0x93, 0xff}}},\n    {{{  4352,      0,    307}, 0, {  1246,      0}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{  4864,   -869,    819}, 0, {     0,   1900}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{  3840,   -869,    307}, 0, {  2524,   1900}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{  3840,      0,    307}, 0, {  2524,      0}, {0xc0, 0x00, 0x93, 0xff}}},\n    {{{  3328,   -869,    819}, 0, {  3800,   1900}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{  3328,      0,    819}, 0, {  3800,      0}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{  2919,      0,  -1125}, 0, {     0,      0}, {0x6d, 0x00, 0xc0, 0xff}}},\n    {{{  2919,   -767,  -1125}, 0, {     0,   2012}, {0x43, 0x5e, 0xcd, 0xff}}},\n    {{{  2714,   -767,  -1330}, 0, {   990,   2012}, {0x40, 0x00, 0x93, 0xff}}},\n    {{{  2714,      0,  -1330}, 0, {   990,      0}, {0x20, 0x00, 0x86, 0xff}}},\n};\n\n// 0x07012278 - 0x07012328\nstatic const Vtx hmc_seg7_vertex_07012278[] = {\n    {{{  1690,      0,  -2969}, 0, {     0,      0}, {0x6d, 0x00, 0x40, 0xff}}},\n    {{{  1895,   -869,  -3173}, 0, {   990,   2012}, {0x40, 0x00, 0x6d, 0xff}}},\n    {{{  1895,      0,  -3173}, 0, {   990,      0}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  2714,      0,  -1330}, 0, {     0,      0}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{  2714,   -767,  -1330}, 0, {     0,   2012}, {0x40, 0x00, 0x93, 0xff}}},\n    {{{  2509,   -767,  -1330}, 0, {   990,   2012}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{  2509,      0,  -1330}, 0, {     0,      0}, {0xc0, 0x00, 0x93, 0xff}}},\n    {{{  2509,   -767,  -1330}, 0, {     0,   2012}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{  2304,   -767,  -1125}, 0, {   990,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2304,      0,  -1125}, 0, {   990,      0}, {0x86, 0x00, 0xe0, 0xff}}},\n    {{{  1690,   -869,  -2969}, 0, {     0,   2012}, {0x59, 0x00, 0x5a, 0xff}}},\n};\n\n// 0x07012328 - 0x07012418\nstatic const Vtx hmc_seg7_vertex_07012328[] = {\n    {{{  3740,    461,    870}, 0, {  1240,   1372}, {0x71, 0xc8, 0x00, 0xff}}},\n    {{{  3740,    205,    819}, 0, {  1240,   2012}, {0x67, 0x33, 0xcd, 0xff}}},\n    {{{  3740,    461,    819}, 0, {  1240,   1372}, {0x1b, 0xc9, 0x92, 0xff}}},\n    {{{  3740,    205,    870}, 0, {  1240,   2012}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{  3894,    461,    870}, 0, {   856,   1372}, {0xc8, 0x8f, 0x00, 0xff}}},\n    {{{  3894,    461,    819}, 0, {   856,   1372}, {0xbd, 0xdf, 0x9b, 0xff}}},\n    {{{  1690,    205,    819}, 0, {  6356,   2012}, {0x21, 0x65, 0xbd, 0xff}}},\n    {{{  1690,   1024,    819}, 0, {  6356,      0}, {0x54, 0xd6, 0xac, 0xff}}},\n    {{{  4250,   1024,    819}, 0, {     0,      0}, {0xdf, 0xbd, 0x9b, 0xff}}},\n    {{{  4250,    205,    819}, 0, {     0,   2012}, {0xb7, 0x49, 0xb7, 0xff}}},\n    {{{  3894,    205,    819}, 0, {   856,   2012}, {0xcd, 0x67, 0xcd, 0xff}}},\n    {{{  6298,   -767,  -2354}, 0, {  4056,   2012}, {0xd2, 0x21, 0x71, 0xff}}},\n    {{{  5479,   -767,  -2354}, 0, {     0,   2012}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{  5479,   -869,  -2354}, 0, {     0,   1500}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  3894,    205,    870}, 0, {   856,   2012}, {0x8f, 0x38, 0x00, 0xff}}},\n};\n\n// 0x07012418 - 0x070124F8\nstatic const Vtx hmc_seg7_vertex_07012418[] = {\n    {{{  3894,    205,    819}, 0, {  2134,   2012}, {0xcd, 0x67, 0xcd, 0xff}}},\n    {{{  3740,    205,    870}, 0, {  2518,   2012}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{  3894,    205,    870}, 0, {  2134,   2012}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  3740,    205,    819}, 0, {  2518,   2012}, {0x67, 0x33, 0xcd, 0xff}}},\n    {{{  4557,   -767,  -3173}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4557,  -1023,  -3173}, 0, {     0,    992}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4557,  -1023,  -2559}, 0, {  3034,    992}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  4557,   -767,  -2559}, 0, {  3034,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4250,   1024,   -306}, 0, {   990,      0}, {0xac, 0xd6, 0x54, 0xff}}},\n    {{{  1690,    205,   -306}, 0, { -5396,   2012}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{  4250,    205,   -306}, 0, {   990,   2012}, {0xda, 0x72, 0x26, 0xff}}},\n    {{{  6298,   -767,  -2354}, 0, {  4056,   2012}, {0xd2, 0x21, 0x71, 0xff}}},\n    {{{  5479,   -869,  -2354}, 0, {     0,   1500}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  6298,   -869,  -2354}, 0, {  4056,   1500}, {0x9b, 0x43, 0x21, 0xff}}},\n};\n\n// 0x070124F8 - 0x070125E8\nstatic const Vtx hmc_seg7_vertex_070124F8[] = {\n    {{{  1690,   1024,    819}, 0, {     0,      0}, {0x54, 0xd6, 0xac, 0xff}}},\n    {{{  1690,    205,    819}, 0, {     0,   2012}, {0x21, 0x65, 0xbd, 0xff}}},\n    {{{  1690,    205,   -306}, 0, {  2778,   2012}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{  1690,   1024,   -306}, 0, {  2778,      0}, {0x33, 0x99, 0x33, 0xff}}},\n    {{{  4250,    205,    819}, 0, {  2778,   2012}, {0xb7, 0x49, 0xb7, 0xff}}},\n    {{{  4250,   1024,    819}, 0, {  2778,      0}, {0xdf, 0xbd, 0x9b, 0xff}}},\n    {{{  4250,   1024,   -306}, 0, {     0,      0}, {0xac, 0xd6, 0x54, 0xff}}},\n    {{{  4250,    205,   -306}, 0, {     0,   2012}, {0xda, 0x72, 0x26, 0xff}}},\n    {{{  4250,   1024,   -306}, 0, {   990,      0}, {0xac, 0xd6, 0x54, 0xff}}},\n    {{{  1690,   1024,   -306}, 0, { -5396,      0}, {0x33, 0x99, 0x33, 0xff}}},\n    {{{  1690,    205,   -306}, 0, { -5396,   2012}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{  4967,      0,    205}, 0, {   990,   2012}, {0x29, 0x00, 0x77, 0xff}}},\n    {{{  4967,   1024,    819}, 0, {  -540,   -544}, {0x46, 0x00, 0x97, 0xff}}},\n    {{{  4967,      0,    819}, 0, {  -540,   2012}, {0x2a, 0xac, 0xac, 0xff}}},\n    {{{  4967,   1024,    205}, 0, {   990,   -544}, {0x38, 0x00, 0x71, 0xff}}},\n};\n\n// 0x070125E8 - 0x070126E8\nstatic const Vtx hmc_seg7_vertex_070125E8[] = {\n    {{{  4967,   1024,    205}, 0, {     0,   -544}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  6093,      0,    205}, 0, {  2778,   2012}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  6093,   1024,    205}, 0, {  2778,   -544}, {0xc0, 0x00, 0x6d, 0xff}}},\n    {{{  4967,      0,    205}, 0, {     0,   2012}, {0x29, 0x00, 0x77, 0xff}}},\n    {{{  6093,   1024,    205}, 0, {  -542,   -544}, {0xc0, 0x00, 0x6d, 0xff}}},\n    {{{  6093,      0,    205}, 0, {  -542,   2012}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  6298,      0,    410}, 0, {     0,   2012}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{  6298,   1024,    410}, 0, {     0,   -544}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{  6298,      0,    819}, 0, {   990,   2012}, {0xb4, 0x00, 0x9b, 0xff}}},\n    {{{  6298,   1024,    819}, 0, {   990,   -544}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  5476,   -613,    819}, 0, {  3034,   2012}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  5476,   -419,    819}, 0, {  3034,   1040}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5476,   -419,    205}, 0, {     0,   1040}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6298,      0,    819}, 0, {     0,   2012}, {0xb4, 0x00, 0x9b, 0xff}}},\n    {{{  5988,      0,    819}, 0, {   742,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5988,     51,    819}, 0, {   742,   1884}, {0xc9, 0xe5, 0x92, 0xff}}},\n};\n\n// 0x070126E8 - 0x070127C8\nstatic const Vtx hmc_seg7_vertex_070126E8[] = {\n    {{{  6298,      0,    819}, 0, {     0,   2012}, {0xb4, 0x00, 0x9b, 0xff}}},\n    {{{  5988,     51,    819}, 0, {   742,   1884}, {0xc9, 0xe5, 0x92, 0xff}}},\n    {{{  6298,   1024,    819}, 0, {     0,   -544}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  4967,   1024,    819}, 0, {  3290,   -544}, {0x46, 0x00, 0x97, 0xff}}},\n    {{{  5835,     51,    819}, 0, {  1124,   1884}, {0x21, 0xbd, 0x9b, 0xff}}},\n    {{{  5835,      0,    819}, 0, {  1124,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4967,      0,    819}, 0, {  3290,   2012}, {0x2a, 0xac, 0xac, 0xff}}},\n    {{{  5681,   -409,    819}, 0, {  3034,   2012}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  5681,   -214,    205}, 0, {     0,   1040}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5681,   -409,    205}, 0, {     0,   2012}, {0xc8, 0x71, 0x00, 0xff}}},\n    {{{  5681,   -214,    819}, 0, {  3034,   1040}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5476,   -613,    819}, 0, {  3034,   2012}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  5476,   -419,    205}, 0, {     0,   1040}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5476,   -613,    205}, 0, {     0,   2012}, {0xc8, 0x71, 0x00, 0xff}}},\n};\n\n// 0x070127C8 - 0x070128B8\nstatic const Vtx hmc_seg7_vertex_070127C8[] = {\n    {{{  5274,      0,  -3685}, 0, {   392,      0}, {0x58, 0xe7, 0xa8, 0xff}}},\n    {{{  5274,      0,  -3583}, 0, {  -330,      0}, {0x58, 0xe7, 0x58, 0xff}}},\n    {{{  5223,   -357,  -3634}, 0, {  -330,   2012}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  5172,      0,  -3583}, 0, { -1052,      0}, {0xa8, 0xe7, 0x58, 0xff}}},\n    {{{  5172,      0,  -3685}, 0, {  -330,      0}, {0xa8, 0xe7, 0xa8, 0xff}}},\n    {{{  5172,      0,  -4709}, 0, {   392,      0}, {0x59, 0xf2, 0xa7, 0xff}}},\n    {{{  5172,      0,  -4607}, 0, {  -330,      0}, {0x59, 0xf2, 0x59, 0xff}}},\n    {{{  5120,   -613,  -4658}, 0, {  -330,   2012}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{  5069,      0,  -4607}, 0, { -1052,      0}, {0xa7, 0xf2, 0x59, 0xff}}},\n    {{{  5069,      0,  -4709}, 0, {  -330,      0}, {0xa7, 0xf2, 0xa7, 0xff}}},\n    {{{  5581,      0,  -4505}, 0, {  -330,      0}, {0xa7, 0xf0, 0xa7, 0xff}}},\n    {{{  5684,      0,  -4505}, 0, {   392,      0}, {0x59, 0xf0, 0xa7, 0xff}}},\n    {{{  5632,   -562,  -4453}, 0, {  -330,   2012}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{  5684,      0,  -4402}, 0, {  -330,      0}, {0x59, 0xf0, 0x59, 0xff}}},\n    {{{  5581,      0,  -4402}, 0, { -1052,      0}, {0xa7, 0xf0, 0x59, 0xff}}},\n};\n\n// 0x070128B8 - 0x07012958\nstatic const Vtx hmc_seg7_vertex_070128B8[] = {\n    {{{  5479,      0,  -5017}, 0, {  -330,      0}, {0x59, 0xf3, 0x59, 0xff}}},\n    {{{  5376,      0,  -5017}, 0, { -1052,      0}, {0xa7, 0xf3, 0x59, 0xff}}},\n    {{{  5428,   -665,  -5068}, 0, {  -330,   2012}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{  5479,      0,  -5119}, 0, {   392,      0}, {0x59, 0xf3, 0xa7, 0xff}}},\n    {{{  5376,      0,  -5119}, 0, {  -330,      0}, {0xa7, 0xf3, 0xa7, 0xff}}},\n    {{{  4864,      0,  -5324}, 0, {  -330,      0}, {0xa7, 0xf3, 0xa7, 0xff}}},\n    {{{  4967,      0,  -5324}, 0, {   392,      0}, {0x59, 0xf3, 0xa7, 0xff}}},\n    {{{  4916,   -665,  -5273}, 0, {  -330,   2012}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{  4967,      0,  -5221}, 0, {  -330,      0}, {0x59, 0xf3, 0x59, 0xff}}},\n    {{{  4864,      0,  -5221}, 0, { -1052,      0}, {0xa7, 0xf3, 0x59, 0xff}}},\n};\n\n// 0x07012958 - 0x07012A58\nstatic const Vtx hmc_seg7_vertex_07012958[] = {\n    {{{  2304,  -1023,    819}, 0, {     0,   2012}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  1690,  -1023,    819}, 0, {   990,   2012}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  1690,      0,    819}, 0, {   990,      0}, {0x33, 0x99, 0xcd, 0xff}}},\n    {{{  2304,      0,  -1125}, 0, { -2892,      0}, {0x86, 0x00, 0xe0, 0xff}}},\n    {{{  2304,  -1023,  -1125}, 0, { -2892,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2304,  -1023,    819}, 0, {   990,   2012}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  2304,      0,    819}, 0, {   990,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2919,      0,    819}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2919,   -869,  -1125}, 0, {  4822,   1900}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2919,      0,  -1125}, 0, {  4822,      0}, {0x6d, 0x00, 0xc0, 0xff}}},\n    {{{  2919,   -869,    819}, 0, {     0,   1900}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{  1690,  -1023,  -2969}, 0, { -6570,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1690,      0,  -2969}, 0, { -6570,      0}, {0x6d, 0x00, 0x40, 0xff}}},\n    {{{  3328,   -869,    819}, 0, {     0,   1900}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{  2919,   -869,    819}, 0, {   990,   1900}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{  2919,      0,    819}, 0, {   990,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07012A58 - 0x07012AB8\nstatic const Vtx hmc_seg7_vertex_07012A58[] = {\n    {{{  2304,  -1023,    819}, 0, {     0,   2012}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  1690,      0,    819}, 0, {   990,      0}, {0x33, 0x99, 0xcd, 0xff}}},\n    {{{  2304,      0,    819}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  3328,   -869,    819}, 0, {     0,   1900}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{  2919,      0,    819}, 0, {   990,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  3328,      0,    819}, 0, {     0,      0}, {0xd0, 0x00, 0x8b, 0xff}}},\n};\n\n// 0x07012AB8 - 0x07012BA8\nstatic const Vtx hmc_seg7_vertex_07012AB8[] = {\n    {{{  1792,    205,   -204}, 0, {     0,    988}, {0x22, 0x75, 0x22, 0xff}}},\n    {{{  1895,    102,   -101}, 0, {   224,   1244}, {0x4d, 0x40, 0x4d, 0xff}}},\n    {{{  2100,    102,   -101}, 0, {   734,   1244}, {0xb9, 0x37, 0x59, 0xff}}},\n    {{{  2202,    205,   -204}, 0, {   990,    988}, {0xdf, 0x79, 0x10, 0xff}}},\n    {{{  2202,    205,   -204}, 0, {     0,    988}, {0xdf, 0x79, 0x10, 0xff}}},\n    {{{  2100,    102,   -101}, 0, {   224,   1244}, {0xb9, 0x37, 0x59, 0xff}}},\n    {{{  2100,    102,    102}, 0, {   734,   1244}, {0xbb, 0x50, 0xbb, 0xff}}},\n    {{{  2202,    205,    205}, 0, {   990,    988}, {0xf0, 0x7c, 0xf0, 0xff}}},\n    {{{  2100,      0,   -101}, 0, {   224,   1500}, {0xec, 0x85, 0x14, 0xff}}},\n    {{{  2100,      0,    102}, 0, {   734,   1500}, {0xcd, 0x99, 0xcd, 0xff}}},\n    {{{  1792,    205,    205}, 0, {     0,    988}, {0x10, 0x79, 0xdf, 0xff}}},\n    {{{  1895,    102,    102}, 0, {   224,   1244}, {0x59, 0x37, 0xba, 0xff}}},\n    {{{  1895,      0,    102}, 0, {   224,   1500}, {0x33, 0x99, 0xcd, 0xff}}},\n    {{{  1895,    102,    102}, 0, {   734,   1244}, {0x59, 0x37, 0xba, 0xff}}},\n    {{{  1792,    205,    205}, 0, {   990,    988}, {0x10, 0x79, 0xdf, 0xff}}},\n};\n\n// 0x07012BA8 - 0x07012C38\nstatic const Vtx hmc_seg7_vertex_07012BA8[] = {\n    {{{  1895,      0,   -101}, 0, {   224,   1500}, {0x3d, 0xa4, 0x3d, 0xff}}},\n    {{{  1895,    102,    102}, 0, {   734,   1244}, {0x59, 0x37, 0xba, 0xff}}},\n    {{{  1895,      0,    102}, 0, {   734,   1500}, {0x33, 0x99, 0xcd, 0xff}}},\n    {{{  1895,    102,   -101}, 0, {   224,   1244}, {0x4d, 0x40, 0x4d, 0xff}}},\n    {{{  2100,    102,   -101}, 0, {   734,   1244}, {0xb9, 0x37, 0x59, 0xff}}},\n    {{{  2100,      0,   -101}, 0, {   734,   1500}, {0xec, 0x85, 0x14, 0xff}}},\n    {{{  1895,    102,    102}, 0, {   224,   1244}, {0x59, 0x37, 0xba, 0xff}}},\n    {{{  2100,    102,    102}, 0, {   734,   1244}, {0xbb, 0x50, 0xbb, 0xff}}},\n    {{{  2100,      0,    102}, 0, {   734,   1500}, {0xcd, 0x99, 0xcd, 0xff}}},\n};\n\n// 0x07012C38 - 0x07012C78\nstatic const Vtx hmc_seg7_vertex_07012C38[] = {\n    {{{  1690,   1024,   -306}, 0, {     0,      0}, {0x33, 0x99, 0x33, 0xff}}},\n    {{{  4250,   1024,   -306}, 0, {     0,      0}, {0xac, 0xd6, 0x54, 0xff}}},\n    {{{  4250,   1024,    819}, 0, {     0,      0}, {0xdf, 0xbd, 0x9b, 0xff}}},\n    {{{  1690,   1024,    819}, 0, {     0,      0}, {0x54, 0xd6, 0xac, 0xff}}},\n};\n\n// 0x07012C78 - 0x07013080\nstatic const Gfx hmc_seg7_dl_07012C78[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09006800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&hmc_seg7_lights_07010118.l, 1),\n    gsSPLight(&hmc_seg7_lights_07010118.a, 2),\n    gsSPVertex(hmc_seg7_vertex_07010148, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  3,  6, 0x0),\n    gsSP2Triangles( 5,  4,  8, 0x0,  9, 10,  0, 0x0),\n    gsSP2Triangles(11,  9,  0, 0x0, 11, 12,  9, 0x0),\n    gsSP2Triangles( 0, 10,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07010248, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 1,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles( 3, 14,  4, 0x0, 15,  4, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07010348, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 2,  4,  3, 0x0,  4,  5,  6, 0x0),\n    gsSP2Triangles( 3,  4,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  7, 10, 11, 0x0),\n    gsSP2Triangles(12,  9, 13, 0x0, 11, 10, 14, 0x0),\n    gsSP2Triangles(11, 15,  0, 0x0, 11, 14, 15, 0x0),\n    gsSP1Triangle(12, 10,  9, 0x0),\n    gsSPLight(&hmc_seg7_lights_07010130.l, 1),\n    gsSPLight(&hmc_seg7_lights_07010130.a, 2),\n    gsSPVertex(hmc_seg7_vertex_07010448, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9,  7, 0x0,  6,  8,  7, 0x0),\n    gsSP2Triangles(10,  3,  5, 0x0, 10,  9,  3, 0x0),\n    gsSP2Triangles( 9,  8,  3, 0x0,  1,  0, 11, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07010548, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  4,  3, 0x0),\n    gsSP2Triangles( 7,  8,  4, 0x0,  9,  3, 10, 0x0),\n    gsSP1Triangle(11, 12, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07010628, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  3,  5, 0x0,  4,  0,  3, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07010728, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07010808, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_070108F8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 4,  3,  5, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 7,  8,  4, 0x0,  4,  9, 10, 0x0),\n    gsSP2Triangles( 4,  8,  9, 0x0,  4, 11,  1, 0x0),\n    gsSP2Triangles( 4, 10, 11, 0x0,  4,  5,  6, 0x0),\n    gsSP2Triangles(12,  5, 13, 0x0, 12,  6,  5, 0x0),\n    gsSP2Triangles(14,  7,  6, 0x0, 10, 15, 14, 0x0),\n    gsSP1Triangle(10,  9, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_070109F8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  2,  5,  3, 0x0),\n    gsSP2Triangles( 6,  7,  1, 0x0,  1,  8,  2, 0x0),\n    gsSP2Triangles( 1,  7,  8, 0x0,  1,  9,  6, 0x0),\n    gsSP2Triangles( 6,  9,  5, 0x0,  4, 10, 11, 0x0),\n    gsSP2Triangles(11, 10, 12, 0x0, 13, 14,  6, 0x0),\n    gsSP2Triangles( 6, 14,  7, 0x0, 13,  6,  5, 0x0),\n    gsSP2Triangles( 2, 15, 13, 0x0,  2,  8, 15, 0x0),\n    gsSP2Triangles( 2, 13,  5, 0x0, 13, 15, 14, 0x0),\n    gsSP2Triangles(15,  7, 14, 0x0, 15,  8,  7, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07010AF8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07013080 - 0x07013168\nstatic const Gfx hmc_seg7_dl_07013080[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09009800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_07010B78, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07010C68, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  9,  6, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0,  6, 11,  7, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07010D68, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7,  9,  4, 0x0),\n    gsSP1Triangle(10, 11, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07013168 - 0x07013840\nstatic const Gfx hmc_seg7_dl_07013168[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_07010E38, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 2,  1,  3, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 6,  7,  5, 0x0,  6,  5,  0, 0x0),\n    gsSP2Triangles( 4,  3,  7, 0x0,  4,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  5, 12, 0x0),\n    gsSP2Triangles(11,  1,  5, 0x0,  5,  7, 13, 0x0),\n    gsSP2Triangles( 5, 13, 12, 0x0,  7, 14, 13, 0x0),\n    gsSP2Triangles( 7,  3, 14, 0x0, 15,  9,  8, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07010F38, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 8,  7, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 14, 12, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07011028, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 2,  1,  6, 0x0,  0,  7,  1, 0x0),\n    gsSP2Triangles( 2,  6,  8, 0x0,  8,  6,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  3, 11,  4, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07011118, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07011208, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07011308, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle(12, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07011408, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles( 9,  3,  5, 0x0,  9,  5,  7, 0x0),\n    gsSPVertex(hmc_seg7_vertex_070114E8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 6,  5,  0, 0x0,  6,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_070115C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(hmc_seg7_vertex_070116B8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_070117B8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  7,  9, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07011898, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(10, 12, 13, 0x0, 13, 12, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07011988, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  3,  5,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 8,  7, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(14, 12, 11, 0x0, 11, 13, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07011A88, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 3,  4,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(11, 10, 12, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07011B68, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0, 10, 11,  5, 0x0),\n    gsSP2Triangles(12, 11, 10, 0x0, 12, 13, 11, 0x0),\n    gsSP2Triangles( 5, 14,  8, 0x0,  5, 11, 14, 0x0),\n    gsSP2Triangles(15, 14, 11, 0x0, 15, 11, 13, 0x0),\n    gsSP1Triangle( 6,  5,  8, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07011C68, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  4,  5,  0, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9,  6, 0x0,  8,  6,  4, 0x0),\n    gsSP2Triangles( 9,  2,  6, 0x0,  9, 10,  2, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0,  3, 10, 14, 0x0),\n    gsSP2Triangles( 3,  2, 10, 0x0, 14,  4,  3, 0x0),\n    gsSP1Triangle(14,  8,  4, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07011D58, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  4, 0x0),\n    gsSP2Triangles( 7,  9,  8, 0x0, 10, 11,  9, 0x0),\n    gsSP2Triangles(10,  9,  7, 0x0,  0,  8,  1, 0x0),\n    gsSP2Triangles( 0, 12,  8, 0x0,  1,  8,  9, 0x0),\n    gsSP2Triangles(13, 14, 15, 0x0,  1,  9,  2, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07011E58, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  9, 10,  5, 0x0),\n    gsSP2Triangles( 9, 11, 10, 0x0, 12, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 11, 0x0, 14, 11, 15, 0x0),\n    gsSP1Triangle(14, 10, 11, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07011F58, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07012048, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(13, 14,  4, 0x0, 13, 15, 14, 0x0),\n    gsSP1Triangle(13,  4,  6, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07012148, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07013840 - 0x070138E0\nstatic const Gfx hmc_seg7_dl_07013840[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_07012188, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  5,  4,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07012278, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP1Triangle( 0, 10,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070138E0 - 0x07013A78\nstatic const Gfx hmc_seg7_dl_070138E0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_07012328, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  0,  2, 0x0,  4,  2,  5, 0x0),\n    gsSP2Triangles( 2,  6,  7, 0x0,  8,  2,  7, 0x0),\n    gsSP2Triangles( 8,  5,  2, 0x0,  2,  1,  6, 0x0),\n    gsSP2Triangles( 9, 10,  5, 0x0,  8,  9,  5, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0,  5, 14,  4, 0x0),\n    gsSP1Triangle( 5, 10, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07012418, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_070124F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(hmc_seg7_vertex_070125E8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7,  6,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_070126E8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  4,  5,  6, 0x0),\n    gsSP2Triangles( 4,  6,  3, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07013A78 - 0x07013B48\nstatic const Gfx hmc_seg7_dl_07013A78[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_070127C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 3,  4,  2, 0x0,  4,  0,  2, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  6,  8,  7, 0x0),\n    gsSP2Triangles( 8,  9,  7, 0x0,  9,  5,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSP2Triangles(13, 14, 12, 0x0, 14, 10, 12, 0x0),\n    gsSPVertex(hmc_seg7_vertex_070128B8, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  4,  3,  2, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  6,  8,  7, 0x0),\n    gsSP2Triangles( 8,  9,  7, 0x0,  9,  5,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07013B48 - 0x07013BC8\nstatic const Gfx hmc_seg7_dl_07013B48[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_0900A800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_07012958, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  2, 11, 12, 0x0),\n    gsSP2Triangles( 2,  1, 11, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07012A58, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07013BC8 - 0x07013C78\nstatic const Gfx hmc_seg7_dl_07013BC8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_07012AB8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  9, 0x0,  5,  9,  6, 0x0),\n    gsSP2Triangles( 6, 10,  7, 0x0,  6, 11, 10, 0x0),\n    gsSP2Triangles(11,  9, 12, 0x0,  0, 13,  1, 0x0),\n    gsSP1Triangle( 0, 14, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07012BA8, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  3,  0, 0x0,  4,  0,  5, 0x0),\n    gsSP1Triangle( 6,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07013C78 - 0x07013CA8\nstatic const Gfx hmc_seg7_dl_07013C78[] = {\n    gsSPLight(&hmc_seg7_lights_07010118.l, 1),\n    gsSPLight(&hmc_seg7_lights_07010118.a, 2),\n    gsSPVertex(hmc_seg7_vertex_07012C38, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07013CA8 - 0x07013DB8\nconst Gfx hmc_seg7_dl_07013CA8[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_07012C78),\n    gsSPDisplayList(hmc_seg7_dl_07013080),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_07013168),\n    gsSPDisplayList(hmc_seg7_dl_07013840),\n    gsSPDisplayList(hmc_seg7_dl_070138E0),\n    gsSPDisplayList(hmc_seg7_dl_07013A78),\n    gsSPDisplayList(hmc_seg7_dl_07013B48),\n    gsSPDisplayList(hmc_seg7_dl_07013BC8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_PASS2),\n    gsSPDisplayList(hmc_seg7_dl_07013C78),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/12/model.inc.c",
    "content": "// 0x07013DB8 - 0x07013E38\nstatic const Vtx hmc_seg7_vertex_07013DB8[] = {\n    {{{  5671,   -306,    819}, 0, {  6100,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5671,   -204,    205}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5671,   -306,    205}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5671,   -204,    819}, 0, {  6100,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5466,   -511,    819}, 0, {  6100,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5466,   -409,    205}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5466,   -511,    205}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5466,   -409,    819}, 0, {  6100,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07013E38 - 0x07013E80\nstatic const Gfx hmc_seg7_dl_07013E38[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_07013DB8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07013E80 - 0x07013F38\nconst Gfx hmc_seg7_dl_07013E80[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_07013E38),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/13/model.inc.c",
    "content": "// 0x07013F38 - 0x07014028\nstatic const Vtx hmc_seg7_vertex_07013F38[] = {\n    {{{  4875,   -613,  -4402}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  4875,   -101,  -3890}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  4875,   -613,  -3890}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  5274,   -716,  -5621}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  4762,   -204,  -5621}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  4762,   -716,  -5621}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  5274,   -204,  -5621}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  4752,   -613,   -511}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  4752,   -101,  -1023}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  4752,   -613,  -1023}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  4752,   -101,   -511}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  5571,   -511,  -3173}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  5571,      0,  -3173}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  5571,      0,  -3685}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  5571,   -511,  -3685}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n};\n\n// 0x07014028 - 0x07014118\nstatic const Vtx hmc_seg7_vertex_07014028[] = {\n    {{{  3523,   -511,   -869}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  3523,      0,   -869}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  3523,      0,  -1381}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  4875,   -613,  -4402}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  4875,   -101,  -4402}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  4875,   -101,  -3890}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  1700,   -716,  -2866}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  1700,   -204,  -2354}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  1700,   -716,  -2354}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  1700,   -204,  -2866}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  4240,   -511,  -3481}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  4240,      0,  -3993}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  4240,   -511,  -3993}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  4240,      0,  -3481}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  3523,   -511,  -1381}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n};\n\n// 0x07014118 - 0x07014218\nstatic const Vtx hmc_seg7_vertex_07014118[] = {\n    {{{  1700,   -716,      0}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  1700,   -204,    512}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  1700,   -716,    512}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  2253,    410,   -296}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  1741,    922,   -296}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  1741,    410,   -296}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  2253,    922,   -296}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  1700,    410,   -180}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  1700,    922,   -180}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  1700,    922,    256}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  1700,    410,    256}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  2294,   -716,    512}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  2294,   -204,      0}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  2294,   -716,      0}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  2294,   -204,    512}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  1700,   -204,      0}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n};\n\n// 0x07014218 - 0x07014300\nstatic const Gfx hmc_seg7_dl_07014218[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, cave_0900C000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_07013F38, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07014028, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07014118, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07014300 - 0x07014370\nconst Gfx hmc_seg7_dl_07014300[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_07014218),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/14/model.inc.c",
    "content": "// 0x07014370 - 0x07014460\nstatic const Vtx hmc_seg7_vertex_07014370[] = {\n    {{{  4629,   -460,   -767}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4752,   -460,   -767}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4752,   -255,   -767}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5120,   -357,  -5559}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4916,   -357,  -5559}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4916,   -562,  -5559}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5120,   -562,  -5559}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5018,   -357,  -5498}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5018,   -357,  -5621}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5018,   -562,  -5621}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5018,   -562,  -5498}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4690,   -460,   -869}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4690,   -255,   -665}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4690,   -255,   -869}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4690,   -460,   -665}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07014460 - 0x07014550\nstatic const Vtx hmc_seg7_vertex_07014460[] = {\n    {{{  4936,   -255,  -4249}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4936,   -460,  -4044}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4936,   -460,  -4249}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4629,   -460,   -767}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4752,   -255,   -767}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4629,   -255,   -767}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1762,   -357,  -2713}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1762,   -357,  -2508}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1762,   -562,  -2508}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1762,   -562,  -2713}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1823,   -357,  -2610}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1700,   -357,  -2610}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1700,   -562,  -2610}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1823,   -562,  -2610}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4936,   -255,  -4044}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07014550 - 0x07014640\nstatic const Vtx hmc_seg7_vertex_07014550[] = {\n    {{{  3462,   -357,  -1228}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3462,   -357,  -1023}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3462,   -153,  -1023}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4998,   -255,  -4146}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4875,   -255,  -4146}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4875,   -460,  -4146}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4998,   -460,  -4146}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4178,   -357,  -3839}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4178,   -153,  -3634}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4178,   -153,  -3839}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4178,   -357,  -3634}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4117,   -357,  -3737}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4240,   -357,  -3737}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4240,   -153,  -3737}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4117,   -153,  -3737}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07014640 - 0x07014730\nstatic const Vtx hmc_seg7_vertex_07014640[] = {\n    {{{  1997,    768,   -173}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1997,    563,   -296}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1997,    563,   -173}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3462,   -357,  -1228}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3462,   -153,  -1023}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3462,   -153,  -1228}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3400,   -357,  -1125}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3523,   -153,  -1125}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3400,   -153,  -1125}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3523,   -357,  -1125}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2100,    768,   -235}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1895,    768,   -235}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1895,    563,   -235}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2100,    563,   -235}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1997,    768,   -296}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07014730 - 0x07014820\nstatic const Vtx hmc_seg7_vertex_07014730[] = {\n    {{{  2171,   -562,    256}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2294,   -562,    256}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2294,   -357,    256}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1762,    768,   -101}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1762,    563,    102}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1762,    563,   -101}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1762,    768,    102}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1823,    768,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1700,    768,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1700,    563,      0}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1823,    563,      0}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2233,   -562,    154}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2233,   -562,    358}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2233,   -357,    358}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2233,   -357,    154}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07014820 - 0x07014910\nstatic const Vtx hmc_seg7_vertex_07014820[] = {\n    {{{  5510,   -357,  -3532}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5510,   -153,  -3327}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5510,   -153,  -3532}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2171,   -562,    256}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2294,   -357,    256}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2171,   -357,    256}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1823,   -357,    256}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1700,   -357,    256}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1700,   -562,    256}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1823,   -562,    256}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1762,   -357,    154}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1762,   -562,    358}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1762,   -562,    154}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1762,   -357,    358}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5510,   -357,  -3327}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07014910 - 0x07014950\nstatic const Vtx hmc_seg7_vertex_07014910[] = {\n    {{{  5448,   -357,  -3429}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5571,   -357,  -3429}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5571,   -153,  -3429}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5448,   -153,  -3429}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07014950 - 0x07014B08\nstatic const Gfx hmc_seg7_dl_07014950[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_07014370, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07014460, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07014550, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07014640, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07014730, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07014820, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07014910, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07014B08 - 0x07014B88\nconst Gfx hmc_seg7_dl_07014B08[] = {\n    gsDPPipeSync(),\n    gsDPSetEnvColor(255, 255, 255, 128),\n    gsDPSetCombineMode(G_CC_DECALFADEA, G_CC_DECALFADEA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_07014950),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/15/model.inc.c",
    "content": "// 0x07014B88 - 0x07014BC8\nstatic const Vtx hmc_seg7_vertex_07014B88[] = {\n    {{{  3021,    922,   -296}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2407,    922,   -296}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2407,    307,   -296}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3021,    307,   -296}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07014BC8 - 0x07014C00\nstatic const Gfx hmc_seg7_dl_07014BC8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, hmc_seg7_texture_07002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_07014B88, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07014C00 - 0x07014CB8\nconst Gfx hmc_seg7_dl_07014C00[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_DECALRGB, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_07014BC8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/16/model.inc.c",
    "content": "// 0x07014CB8 - 0x07014CD0\nstatic const Lights1 hmc_seg7_lights_07014CB8 = gdSPDefLights1(\n    0x23, 0x2b, 0x14,\n    0x8e, 0xac, 0x52, 0x28, 0x28, 0x28\n);\n\n// 0x07014CD0 - 0x07014DD0\nstatic const Vtx hmc_seg7_vertex_07014CD0[] = {\n    {{{  3165,   -409,  -6338}, 0, {   990,    422}, {0x00, 0x00, 0x7f, 0x80}}},\n    {{{  3113,   -869,  -6338}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0x80}}},\n    {{{  3165,   -869,  -6338}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0x80}}},\n    {{{  3482,   -665,  -6338}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0x80}}},\n    {{{  3533,   -665,  -6338}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0x80}}},\n    {{{  3533,   -409,  -6338}, 0, {   990,    422}, {0x00, 0x00, 0x7f, 0x80}}},\n    {{{  3482,   -409,  -6338}, 0, {     0,    422}, {0x00, 0x00, 0x7f, 0x80}}},\n    {{{  3328,   -921,  -6338}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0x80}}},\n    {{{  3431,   -921,  -6338}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0x80}}},\n    {{{  3431,   -409,  -6338}, 0, {   990,    422}, {0x00, 0x00, 0x7f, 0x80}}},\n    {{{  3328,   -409,  -6338}, 0, {     0,    422}, {0x00, 0x00, 0x7f, 0x80}}},\n    {{{  3277,   -409,  -6338}, 0, {   990,    422}, {0x00, 0x00, 0x7f, 0x80}}},\n    {{{  3226,   -818,  -6338}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0x80}}},\n    {{{  3277,   -818,  -6338}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0x80}}},\n    {{{  3226,   -409,  -6338}, 0, {     0,    422}, {0x00, 0x00, 0x7f, 0x80}}},\n    {{{  3113,   -409,  -6338}, 0, {     0,    422}, {0x00, 0x00, 0x7f, 0x80}}},\n};\n\n// 0x07014DD0 - 0x07014E48\nstatic const Gfx hmc_seg7_dl_07014DD0[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, cave_0900C000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&hmc_seg7_lights_07014CB8.l, 1),\n    gsSPLight(&hmc_seg7_lights_07014CB8.a, 2),\n    gsSPVertex(hmc_seg7_vertex_07014CD0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07014E48 - 0x07014EB8\nconst Gfx hmc_seg7_dl_07014E48[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_07014DD0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/17/model.inc.c",
    "content": "// 0x07014EB8 - 0x07014ED0\nstatic const Lights1 hmc_seg7_lights_07014EB8 = gdSPDefLights1(\n    0x79, 0x79, 0x79,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07014ED0 - 0x07014EE8\nstatic const Lights1 hmc_seg7_lights_07014ED0 = gdSPDefLights1(\n    0x79, 0x00, 0x00,\n    0xff, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x07014EE8 - 0x07014FE8\nstatic const Vtx hmc_seg7_vertex_07014EE8[] = {\n    {{{ -5426,   1638,  -6271}, 0, { -1870,   1602}, {0x00, 0x7d, 0x14, 0xff}}},\n    {{{ -6143,   1690,  -6527}, 0, { -1086,   2248}, {0x14, 0x7c, 0x10, 0xff}}},\n    {{{ -6553,   1638,  -6271}, 0, {  -370,   2350}, {0x58, 0x4c, 0x31, 0xff}}},\n    {{{ -6143,   1690,  -6783}, 0, { -1256,   2418}, {0x33, 0x33, 0x67, 0xff}}},\n    {{{ -6143,   1741,  -6783}, 0, { -1256,   2418}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6143,   1792,  -6783}, 0, { -1256,   2418}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -6143,   1792,  -7039}, 0, { -1426,   2590}, {0xe2, 0x79, 0x12, 0xff}}},\n    {{{ -5785,   1792,  -7039}, 0, { -1904,   2350}, {0x1e, 0x7a, 0x0c, 0xff}}},\n    {{{ -5785,   1792,  -6783}, 0, { -1734,   2180}, {0x33, 0x33, 0x67, 0xff}}},\n    {{{ -5785,   1741,  -6783}, 0, { -1734,   2180}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5785,   1690,  -6527}, 0, { -1562,   2010}, {0xe2, 0x79, 0x12, 0xff}}},\n    {{{ -5785,   1690,  -6783}, 0, { -1734,   2180}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -5426,   1843,  -7295}, 0, { -2550,   2282}, {0x00, 0x79, 0xdb, 0xff}}},\n    {{{ -6962,   1597,  -5858}, 0, {   448,   2348}, {0x45, 0x66, 0x1c, 0xff}}},\n    {{{ -6962,   1577,  -5654}, 0, {   582,   2212}, {0x68, 0x2b, 0xc7, 0xff}}},\n    {{{ -6553,   1536,  -5247}, 0, {   308,   1670}, {0x54, 0x5d, 0xf1, 0xff}}},\n};\n\n// 0x07014FE8 - 0x070150E8\nstatic const Vtx hmc_seg7_vertex_07014FE8[] = {\n    {{{ -6143,   1690,  -6527}, 0, { -1086,   2248}, {0x14, 0x7c, 0x10, 0xff}}},\n    {{{ -6143,   1792,  -7039}, 0, { -1426,   2590}, {0xe2, 0x79, 0x12, 0xff}}},\n    {{{ -6553,   1843,  -7295}, 0, { -1052,   3032}, {0x2f, 0x75, 0x0d, 0xff}}},\n    {{{ -6553,   1638,  -6271}, 0, {  -370,   2350}, {0x58, 0x4c, 0x31, 0xff}}},\n    {{{ -5785,   1690,  -6783}, 0, { -1734,   2180}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -6143,   1690,  -6783}, 0, { -1256,   2418}, {0x33, 0x33, 0x67, 0xff}}},\n    {{{ -5426,   1843,  -7295}, 0, { -2550,   2282}, {0x00, 0x79, 0xdb, 0xff}}},\n    {{{ -5785,   1792,  -7039}, 0, { -1904,   2350}, {0x1e, 0x7a, 0x0c, 0xff}}},\n    {{{ -6143,   1792,  -6783}, 0, { -1256,   2418}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -5785,   1792,  -6783}, 0, { -1734,   2180}, {0x33, 0x33, 0x67, 0xff}}},\n    {{{ -6962,   1597,  -5858}, 0, {   448,   2348}, {0x45, 0x66, 0x1c, 0xff}}},\n    {{{ -6553,   1536,  -5247}, 0, {   308,   1670}, {0x54, 0x5d, 0xf1, 0xff}}},\n    {{{ -5426,   1536,  -5247}, 0, { -1188,    922}, {0x00, 0x7e, 0x06, 0xff}}},\n    {{{ -6553,   1536,  -4223}, 0, {   990,    990}, {0x00, 0x7e, 0x08, 0xff}}},\n    {{{ -5426,   1536,  -4223}, 0, {  -506,    240}, {0x00, 0x7d, 0x10, 0xff}}},\n    {{{ -5426,   1638,  -6271}, 0, { -1870,   1602}, {0x00, 0x7d, 0x14, 0xff}}},\n};\n\n// 0x070150E8 - 0x070151E8\nstatic const Vtx hmc_seg7_vertex_070150E8[] = {\n    {{{ -5221,   1331,  -2687}, 0, {   240,   -918}, {0xb4, 0x54, 0x38, 0xff}}},\n    {{{ -6553,   1331,  -3199}, 0, {  1672,    308}, {0x48, 0x64, 0x1c, 0xff}}},\n    {{{ -6757,   1331,  -2687}, 0, {  2284,    104}, {0x5a, 0x4c, 0x2d, 0xff}}},\n    {{{ -5426,   1331,  -3199}, 0, {   172,   -440}, {0xcc, 0x6f, 0x1f, 0xff}}},\n    {{{ -6553,   1843,  -7295}, 0, { -1052,   3032}, {0x2f, 0x75, 0x0d, 0xff}}},\n    {{{ -4914,   1843,  -7807}, 0, { -3572,   2282}, {0xb7, 0x49, 0x49, 0xff}}},\n    {{{ -6553,   1843,  -7807}, 0, { -1392,   3372}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{ -4914,   1843,  -7295}, 0, { -3232,   1942}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{ -6770,   1331,  -2687}, 0, {  2302,    112}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6046,   1331,  -1653}, 0, {  2026,  -1058}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5211,   1331,  -2687}, 0, {   226,   -924}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5426,   1536,  -4223}, 0, {  -506,    240}, {0x00, 0x7d, 0x10, 0xff}}},\n    {{{ -6553,   1536,  -4223}, 0, {   990,    990}, {0x00, 0x7e, 0x08, 0xff}}},\n    {{{ -6062,   2458,  -1617}, 0, {  -356,  -1292}, {0x51, 0x54, 0xd0, 0xff}}},\n    {{{ -7083,   2458,  -1539}, 0, { -1460,      0}, {0xaf, 0x54, 0x30, 0xff}}},\n    {{{ -6392,   2458,  -1099}, 0, {   158,    -66}, {0x3b, 0x33, 0x63, 0xff}}},\n};\n\n// 0x070151E8 - 0x070152D8\nstatic const Vtx hmc_seg7_vertex_070151E8[] = {\n    {{{ -6062,   2458,  -1617}, 0, {  -356,  -1292}, {0x51, 0x54, 0xd0, 0xff}}},\n    {{{ -6753,   2458,  -2057}, 0, { -1978,  -1258}, {0xc5, 0x33, 0x9d, 0xff}}},\n    {{{ -7083,   2458,  -1539}, 0, { -1460,      0}, {0xaf, 0x54, 0x30, 0xff}}},\n    {{{ -5466,   2458,    261}, 0, {  3292,   1176}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{ -4749,   2458,   -455}, 0, {  2894,   -806}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{ -5466,   2458,   -455}, 0, {  2022,    -14}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{ -4749,   2458,    261}, 0, {  4164,    384}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{ -5211,   1331,  -2687}, 0, {   226,   -924}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6046,   1331,  -1653}, 0, {  2026,  -1058}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5211,   1331,  -1653}, 0, {   916,  -1612}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -7535,   1331,  -1132}, 0, {  -654,     32}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -7781,   1331,   -639}, 0, {   150,    838}, {0x77, 0x2a, 0xff, 0xff}}},\n    {{{ -7687,   1331,   -261}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -7261,   1331,   -323}, 0, {  1214,    240}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -7156,   1331,   -848}, 0, {   234,   -356}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070152D8 - 0x070153D8\nstatic const Vtx hmc_seg7_vertex_070152D8[] = {\n    {{{ -4197,   1536,    896}, 0, {   562,   -636}, {0x0e, 0x56, 0xa4, 0xff}}},\n    {{{ -4228,   1536,    339}, 0, {   590,   -138}, {0x17, 0x5f, 0xb1, 0xff}}},\n    {{{ -4582,   1536,     77}, 0, {   906,     96}, {0xef, 0x6c, 0xc0, 0xff}}},\n    {{{ -5631,   2810,  -7807}, 0, {  -712,   2692}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{ -4914,   2810,  -7807}, 0, {  1672,    308}, {0x86, 0x18, 0x18, 0xff}}},\n    {{{ -4914,   2810,  -8191}, 0, {   820,  -1394}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -5631,   2810,  -8191}, 0, { -1562,    990}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{ -4284,   1536,  -2062}, 0, {   640,   2004}, {0xb6, 0x59, 0xce, 0xff}}},\n    {{{ -3955,   1536,  -1473}, 0, {   346,   1478}, {0xb3, 0x5c, 0x26, 0xff}}},\n    {{{ -3685,   1536,  -1663}, 0, {   106,   1648}, {0xda, 0x78, 0x09, 0xff}}},\n    {{{ -4455,   1536,  -1807}, 0, {   792,   1776}, {0x9c, 0x33, 0x39, 0xff}}},\n    {{{ -3623,   1536,     36}, 0, {    50,    132}, {0xc3, 0x62, 0xcd, 0xff}}},\n    {{{ -3173,   1536,    384}, 0, {  -350,   -178}, {0xad, 0x58, 0xda, 0xff}}},\n    {{{ -5466,   2355,   -455}, 0, {  2438,    242}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{ -4749,   2355,   -455}, 0, {  3856,    526}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{ -4749,   2355,    261}, 0, {  3572,   -820}, {0x2a, 0xac, 0x54, 0xff}}},\n};\n\n// 0x070153D8 - 0x070154B8\nstatic const Vtx hmc_seg7_vertex_070153D8[] = {\n    {{{ -4197,   1536,    896}, 0, {   562,   -636}, {0x0e, 0x56, 0xa4, 0xff}}},\n    {{{ -4582,   1536,     77}, 0, {   906,     96}, {0xef, 0x6c, 0xc0, 0xff}}},\n    {{{ -4709,   1536,    384}, 0, {  1020,   -178}, {0xbc, 0x3c, 0xa8, 0xff}}},\n    {{{ -3685,   2355,  -1663}, 0, {  1282,   1840}, {0x90, 0x31, 0x20, 0xff}}},\n    {{{ -3685,   2355,  -3199}, 0, {  1282,   -714}, {0x99, 0x33, 0x33, 0xff}}},\n    {{{ -4709,   2355,  -3199}, 0, {  -176,   -714}, {0x2a, 0x3c, 0x67, 0xff}}},\n    {{{ -5221,   2355,  -2687}, 0, {  -906,    138}, {0xcc, 0x27, 0x6c, 0xff}}},\n    {{{ -3634,   2355,  -2841}, 0, {  1356,   -118}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{ -3685,   2355,  -2687}, 0, {  1282,    138}, {0xcd, 0x67, 0xcd, 0xff}}},\n    {{{ -3634,   2355,  -2687}, 0, {  1356,    138}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{ -3685,   2355,  -2841}, 0, {  1282,   -118}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{ -5466,   2355,   -455}, 0, {  2438,    242}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{ -4749,   2355,    261}, 0, {  3572,   -820}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{ -5466,   2355,    261}, 0, {  2154,  -1104}, {0x99, 0xcd, 0x33, 0xff}}},\n};\n\n// 0x070154B8 - 0x07015558\nstatic const Vtx hmc_seg7_vertex_070154B8[] = {\n    {{{ -6392,   2355,  -1099}, 0, {  1160,    948}, {0xf7, 0xac, 0x5e, 0xff}}},\n    {{{ -6753,   2355,  -2057}, 0, {   826,   2604}, {0x09, 0xac, 0xa2, 0xff}}},\n    {{{ -6062,   2355,  -1617}, 0, {  2018,   2050}, {0x73, 0xcd, 0x0b, 0xff}}},\n    {{{ -7083,   2355,  -1539}, 0, {     0,   1498}, {0x8d, 0xcd, 0xf5, 0xff}}},\n    {{{ -4914,   2810,  -7295}, 0, { -1308,   1244}, {0x9a, 0x47, 0xe9, 0xff}}},\n    {{{ -5426,   2810,  -6271}, 0, {  2522,      0}, {0xd6, 0x54, 0xac, 0xff}}},\n    {{{ -4914,   2810,  -6271}, 0, {  1246,  -1310}, {0xcc, 0x49, 0xa7, 0xff}}},\n    {{{ -5426,   2810,  -7295}, 0, {     0,   2522}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{ -4607,   2810,  -6578}, 0, {  -286,  -1310}, {0x9d, 0x49, 0xe6, 0xff}}},\n    {{{ -4607,   2810,  -6988}, 0, { -1308,   -288}, {0x99, 0x2a, 0x3c, 0xff}}},\n};\n\n// 0x07015558 - 0x070155C8\nstatic const Vtx hmc_seg7_vertex_07015558[] = {\n    {{{ -4305,   2630,  -3179}, 0, {   480,    376}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4273,   2629,  -3179}, 0, {    70,    172}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4291,   2668,  -3179}, 0, {    70,    786}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4341,   2621,  -3179}, 0, {   990,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4296,   2611,  -3179}, 0, {   478,     70}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4320,   2663,  -3179}, 0, {   480,    888}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4311,   2643,  -3179}, 0, {   480,    582}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070155C8 - 0x070156C8\nstatic const Vtx hmc_seg7_vertex_070155C8[] = {\n    {{{ -7083,   2355,  -1539}, 0, {  1808,   2012}, {0x8d, 0xcd, 0xf5, 0xff}}},\n    {{{ -6753,   2458,  -2057}, 0, {     0,   1332}, {0xc5, 0x33, 0x9d, 0xff}}},\n    {{{ -6753,   2355,  -2057}, 0, {     0,   2012}, {0x09, 0xac, 0xa2, 0xff}}},\n    {{{ -4749,   2355,    261}, 0, {  5026,   2012}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{ -5466,   2458,    261}, 0, {  2498,   1332}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{ -5466,   2355,    261}, 0, {  2498,   2012}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{ -4749,   2458,    261}, 0, {  5026,   1332}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{ -4749,   2355,   -455}, 0, {  2498,   2012}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{ -4749,   2458,   -455}, 0, {  2498,   1332}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{ -5466,   2458,   -455}, 0, {     0,   1332}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{ -5466,   2355,   -455}, 0, {     0,   2012}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{ -6062,   2458,  -1617}, 0, {  3238,   1332}, {0x51, 0x54, 0xd0, 0xff}}},\n    {{{ -6062,   2355,  -1617}, 0, {  3238,   2012}, {0x73, 0xcd, 0x0b, 0xff}}},\n    {{{ -6392,   2355,  -1099}, 0, {  5078,   2012}, {0xf7, 0xac, 0x5e, 0xff}}},\n    {{{ -6392,   2458,  -1099}, 0, {  5078,   1332}, {0x3b, 0x33, 0x63, 0xff}}},\n    {{{ -7083,   2458,  -1539}, 0, {  1808,   1332}, {0xaf, 0x54, 0x30, 0xff}}},\n};\n\n// 0x070156C8 - 0x070157B8\nstatic const Vtx hmc_seg7_vertex_070156C8[] = {\n    {{{ -3955,   1536,  -1473}, 0, { -4816,   2012}, {0xb3, 0x5c, 0x26, 0xff}}},\n    {{{ -3955,   1211,  -1473}, 0, { -4816,    928}, {0xae, 0x4b, 0x3b, 0xff}}},\n    {{{ -3623,   1226,     36}, 0, {   990,    980}, {0x98, 0x43, 0xe5, 0xff}}},\n    {{{ -6143,   1690,  -6783}, 0, {  -540,   2012}, {0x33, 0x33, 0x67, 0xff}}},\n    {{{ -5785,   1792,  -6783}, 0, {  3034,    992}, {0x33, 0x33, 0x67, 0xff}}},\n    {{{ -6143,   1792,  -6783}, 0, {  -540,    992}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -5785,   1690,  -6783}, 0, {  3034,   2012}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -4284,   1536,  -2062}, 0, {     0,   2012}, {0xb6, 0x59, 0xce, 0xff}}},\n    {{{ -4455,   1184,  -1807}, 0, {   990,    840}, {0xa5, 0x55, 0x13, 0xff}}},\n    {{{ -4455,   1536,  -1807}, 0, {   990,   2012}, {0x9c, 0x33, 0x39, 0xff}}},\n    {{{ -4284,   1331,  -2062}, 0, {     0,   1332}, {0xb6, 0x66, 0x09, 0xff}}},\n    {{{ -4455,   1536,  -1807}, 0, { -1008,   2012}, {0x9c, 0x33, 0x39, 0xff}}},\n    {{{ -4455,   1184,  -1807}, 0, { -1008,    840}, {0xa5, 0x55, 0x13, 0xff}}},\n    {{{ -3955,   1211,  -1473}, 0, {   990,    928}, {0xae, 0x4b, 0x3b, 0xff}}},\n    {{{ -3955,   1536,  -1473}, 0, {   990,   2012}, {0xb3, 0x5c, 0x26, 0xff}}},\n};\n\n// 0x070157B8 - 0x070158A8\nstatic const Vtx hmc_seg7_vertex_070157B8[] = {\n    {{{ -4228,   1536,    339}, 0, {     0,   2012}, {0x17, 0x5f, 0xb1, 0xff}}},\n    {{{ -4228,   1226,    339}, 0, {     0,    980}, {0xe5, 0x3c, 0x95, 0xff}}},\n    {{{ -4582,   1020,     77}, 0, {  2064,    296}, {0xd2, 0x3e, 0x9c, 0xff}}},\n    {{{ -3955,   1536,  -1473}, 0, { -4816,   2012}, {0xb3, 0x5c, 0x26, 0xff}}},\n    {{{ -3623,   1226,     36}, 0, {   990,    980}, {0x98, 0x43, 0xe5, 0xff}}},\n    {{{ -3623,   1536,     36}, 0, {   990,   2012}, {0xc3, 0x62, 0xcd, 0xff}}},\n    {{{ -3623,   1536,     36}, 0, {     0,   2012}, {0xc3, 0x62, 0xcd, 0xff}}},\n    {{{ -3623,   1226,     36}, 0, {     0,    980}, {0x98, 0x43, 0xe5, 0xff}}},\n    {{{ -4228,   1226,    339}, 0, {  2220,    980}, {0xe5, 0x3c, 0x95, 0xff}}},\n    {{{ -4228,   1536,    339}, 0, {  2220,   2012}, {0x17, 0x5f, 0xb1, 0xff}}},\n    {{{ -4582,   1020,     77}, 0, {     0,    296}, {0xd2, 0x3e, 0x9c, 0xff}}},\n    {{{ -4709,   1536,    384}, 0, {  1074,   2012}, {0xbc, 0x3c, 0xa8, 0xff}}},\n    {{{ -4582,   1536,     77}, 0, {     0,   2012}, {0xef, 0x6c, 0xc0, 0xff}}},\n    {{{ -4709,   1058,    384}, 0, {  1074,    424}, {0xc1, 0x4c, 0xb2, 0xff}}},\n    {{{ -4582,   1536,     77}, 0, {  2064,   2012}, {0xef, 0x6c, 0xc0, 0xff}}},\n};\n\n// 0x070158A8 - 0x070159A8\nstatic const Vtx hmc_seg7_vertex_070158A8[] = {\n    {{{ -5221,   3379,  -2687}, 0, { 11430,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -5221,   2355,  -2687}, 0, { 11430,   2012}, {0xcc, 0x27, 0x6c, 0xff}}},\n    {{{ -4709,   2355,  -3199}, 0, {  9828,   2012}, {0x2a, 0x3c, 0x67, 0xff}}},\n    {{{ -4709,   3379,  -3199}, 0, {  9828,      0}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{ -3685,   3379,  -3199}, 0, {  7820,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -3685,   2355,  -3199}, 0, {  7820,   2012}, {0x99, 0x33, 0x33, 0xff}}},\n    {{{ -3685,   2611,  -2841}, 0, {  7308,   1500}, {0x92, 0xc9, 0x1b, 0xff}}},\n    {{{ -3685,   3379,  -1663}, 0, {  4638,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4914,   2099,  -7474}, 0, {   274,   1412}, {0x9b, 0xdf, 0xbd, 0xff}}},\n    {{{ -4914,   1843,  -7474}, 0, {   274,   2012}, {0xcd, 0x67, 0xcd, 0xff}}},\n    {{{ -4914,   1843,  -7295}, 0, {   990,   2012}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{ -4863,   1843,  -7474}, 0, {   274,   2012}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{ -4863,   1843,  -7628}, 0, {  -336,   2012}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{ -4914,   1843,  -7628}, 0, {  -336,   2012}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{ -4863,   2099,  -7474}, 0, {   274,   1412}, {0x00, 0x8f, 0xc8, 0xff}}},\n    {{{ -4863,   2099,  -7628}, 0, {  -336,   1412}, {0x00, 0xc8, 0x71, 0xff}}},\n};\n\n// 0x070159A8 - 0x07015AA8\nstatic const Vtx hmc_seg7_vertex_070159A8[] = {\n    {{{ -4914,   1843,  -7807}, 0, { -1052,   2012}, {0xb7, 0x49, 0x49, 0xff}}},\n    {{{ -4914,   1843,  -7628}, 0, {  -336,   2012}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{ -4914,   2099,  -7628}, 0, {  -336,   1412}, {0x92, 0xc9, 0x1b, 0xff}}},\n    {{{ -4863,   2099,  -7628}, 0, {  -336,   1412}, {0x00, 0xc8, 0x71, 0xff}}},\n    {{{ -4863,   2099,  -7474}, 0, {   274,   1412}, {0x00, 0x8f, 0xc8, 0xff}}},\n    {{{ -4914,   2099,  -7474}, 0, {   274,   1412}, {0x9b, 0xdf, 0xbd, 0xff}}},\n    {{{ -4914,   2810,  -7295}, 0, {   990,   -260}, {0x9a, 0x47, 0xe9, 0xff}}},\n    {{{ -4914,   2810,  -7807}, 0, { -1052,   -260}, {0x86, 0x18, 0x18, 0xff}}},\n    {{{ -4914,   1843,  -7295}, 0, {   990,   2012}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{ -6553,   1843,  -7807}, 0, {  2012,   2012}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{ -6553,   2810,  -7807}, 0, {  2012,   -260}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -6553,   2810,  -7295}, 0, {     0,   -260}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6553,   1843,  -7295}, 0, {     0,   2012}, {0x2f, 0x75, 0x0d, 0xff}}},\n    {{{ -3634,   2611,  -2687}, 0, {  6948,   1500}, {0x00, 0x8f, 0xc8, 0xff}}},\n    {{{ -3685,   2611,  -2841}, 0, {  7308,   1500}, {0x92, 0xc9, 0x1b, 0xff}}},\n    {{{ -3634,   2611,  -2841}, 0, {  7244,   1500}, {0x00, 0xc8, 0x71, 0xff}}},\n};\n\n// 0x07015AA8 - 0x07015BA8\nstatic const Vtx hmc_seg7_vertex_07015AA8[] = {\n    {{{ -4914,   2810,  -7295}, 0, {     0,   -260}, {0x9a, 0x47, 0xe9, 0xff}}},\n    {{{ -4914,   1843,  -7295}, 0, {     0,   2012}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{ -5426,   1843,  -7295}, 0, {  2012,   2012}, {0x00, 0x79, 0xdb, 0xff}}},\n    {{{ -5426,   2810,  -7295}, 0, {  2012,   -260}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{ -6553,   2810,  -7807}, 0, {     0,   -260}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -6553,   1843,  -7807}, 0, {     0,   2012}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{ -4914,   1843,  -7807}, 0, {  6508,   2012}, {0xb7, 0x49, 0x49, 0xff}}},\n    {{{ -4914,   2810,  -7807}, 0, {  6508,   -260}, {0x86, 0x18, 0x18, 0xff}}},\n    {{{ -3634,   2355,  -2687}, 0, {  6948,   2012}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{ -3685,   2611,  -2687}, 0, {  7002,   1500}, {0x9b, 0xdf, 0xbd, 0xff}}},\n    {{{ -3634,   2611,  -2687}, 0, {  6948,   1500}, {0x00, 0x8f, 0xc8, 0xff}}},\n    {{{ -3685,   2611,  -2841}, 0, {  7308,   1500}, {0x92, 0xc9, 0x1b, 0xff}}},\n    {{{ -3634,   2611,  -2841}, 0, {  7244,   1500}, {0x00, 0xc8, 0x71, 0xff}}},\n    {{{ -3685,   2355,  -2841}, 0, {  7308,   2012}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{ -3634,   2355,  -2841}, 0, {  7244,   2012}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{ -3685,   2355,  -2687}, 0, {  7002,   2012}, {0xcd, 0x67, 0xcd, 0xff}}},\n};\n\n// 0x07015BA8 - 0x07015C28\nstatic const Vtx hmc_seg7_vertex_07015BA8[] = {\n    {{{ -3685,   2611,  -2841}, 0, {  7308,   1500}, {0x92, 0xc9, 0x1b, 0xff}}},\n    {{{ -3685,   2611,  -2687}, 0, {  7002,   1500}, {0x9b, 0xdf, 0xbd, 0xff}}},\n    {{{ -3685,   3379,  -1663}, 0, {  4638,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3685,   2355,  -1663}, 0, {  4638,   2012}, {0x90, 0x31, 0x20, 0xff}}},\n    {{{ -3685,   2355,  -2687}, 0, {  7002,   2012}, {0xcd, 0x67, 0xcd, 0xff}}},\n    {{{ -3685,   2355,  -3199}, 0, {  7820,   2012}, {0x99, 0x33, 0x33, 0xff}}},\n    {{{ -3685,   2355,  -2841}, 0, {  7308,   2012}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{ -3634,   2611,  -2841}, 0, {  7244,   1500}, {0x00, 0xc8, 0x71, 0xff}}},\n};\n\n// 0x07015C28 - 0x07015D28\nstatic const Vtx hmc_seg7_vertex_07015C28[] = {\n    {{{ -5631,   3630,  -7807}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -5631,   2810,  -7807}, 0, {   990,   2012}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{ -5631,   2810,  -8191}, 0, {     0,   2012}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{ -5426,   2526,  -4735}, 0, {  1398,   -508}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5426,   3630,  -6271}, 0, { -1666,  -4916}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{ -5426,   2697,  -6271}, 0, { -1666,  -1192}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5426,   3630,  -4735}, 0, {  1398,  -4916}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4914,   2810,  -7295}, 0, {  2182,  -5708}, {0x9a, 0x47, 0xe9, 0xff}}},\n    {{{ -4914,   3630,  -7807}, 0, { -1222, -12252}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4914,   2810,  -7807}, 0, { -1222,  -5708}, {0x86, 0x18, 0x18, 0xff}}},\n    {{{ -4914,   3630,  -7295}, 0, {  2182, -12252}, {0x93, 0x00, 0x40, 0xff}}},\n    {{{ -4914,   2810,  -7807}, 0, {   990,   2012}, {0x86, 0x18, 0x18, 0xff}}},\n    {{{ -4914,   3630,  -8191}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -4914,   2810,  -8191}, 0, {     0,   2012}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -4914,   3630,  -7807}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5631,   3630,  -8191}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07015D28 - 0x07015E18\nstatic const Vtx hmc_seg7_vertex_07015D28[] = {\n    {{{ -5631,   2810,  -8191}, 0, {     0,   2012}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{ -4914,   3630,  -8191}, 0, {  2012,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -5631,   3630,  -8191}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -4914,   2810,  -8191}, 0, {  2012,   2012}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -3173,   1536,    384}, 0, {  5232,   1604}, {0xad, 0x58, 0xda, 0xff}}},\n    {{{ -3173,   2355,    384}, 0, {  5232,      0}, {0x9f, 0x00, 0xaf, 0xff}}},\n    {{{ -3685,   2355,  -1663}, 0, {  7190,      0}, {0x90, 0x31, 0x20, 0xff}}},\n    {{{ -3685,   1536,  -1663}, 0, {  7190,   1604}, {0xda, 0x78, 0x09, 0xff}}},\n    {{{ -5221,   2355,  -2687}, 0, {  9068,      0}, {0xcc, 0x27, 0x6c, 0xff}}},\n    {{{ -3685,   1331,  -1663}, 0, {  7190,   2012}, {0xba, 0x00, 0x69, 0xff}}},\n    {{{ -5221,    922,  -1663}, 0, {  3282,   1468}, {0xf3, 0x5a, 0x57, 0xff}}},\n    {{{ -5017,    512,   -879}, 0, {  3814,    920}, {0x94, 0x33, 0x29, 0xff}}},\n    {{{ -4607,    922,  -1049}, 0, {  3808,   1468}, {0xc2, 0x6c, 0x17, 0xff}}},\n    {{{ -5017,    512,   -399}, 0, {  4298,    920}, {0x97, 0x33, 0xd2, 0xff}}},\n    {{{ -4607,    922,   -229}, 0, {  4304,   1468}, {0xcd, 0x6f, 0xe2, 0xff}}},\n};\n\n// 0x07015E18 - 0x07015F18\nstatic const Vtx hmc_seg7_vertex_07015E18[] = {\n    {{{ -4607,    922,  -1049}, 0, {  3808,   1468}, {0xc2, 0x6c, 0x17, 0xff}}},\n    {{{ -3955,   1211,  -1473}, 0, {  3756,   1852}, {0xae, 0x4b, 0x3b, 0xff}}},\n    {{{ -4455,   1184,  -1807}, 0, {  3548,   1816}, {0xa5, 0x55, 0x13, 0xff}}},\n    {{{ -4607,    922,   -229}, 0, {  4304,   1468}, {0xcd, 0x6f, 0xe2, 0xff}}},\n    {{{ -5221,    922,  -1663}, 0, {  3282,   1468}, {0xf3, 0x5a, 0x57, 0xff}}},\n    {{{ -3623,   1226,     36}, 0, {  4308,   1872}, {0x98, 0x43, 0xe5, 0xff}}},\n    {{{ -4607,    922,   -229}, 0, {   216,   1468}, {0xcd, 0x6f, 0xe2, 0xff}}},\n    {{{ -5017,    512,   -399}, 0, {   210,    920}, {0x97, 0x33, 0xd2, 0xff}}},\n    {{{ -5391,    512,    -25}, 0, {   748,    920}, {0xd7, 0x33, 0x94, 0xff}}},\n    {{{ -5221,    922,    384}, 0, {   742,   1468}, {0xe1, 0x4c, 0xa0, 0xff}}},\n    {{{ -4582,   1020,     77}, 0, {   358,   1596}, {0xd2, 0x3e, 0x9c, 0xff}}},\n    {{{ -4228,   1226,    339}, 0, {   398,   1872}, {0xe5, 0x3c, 0x95, 0xff}}},\n    {{{ -4709,   1058,    384}, 0, {   514,   1648}, {0xc1, 0x4c, 0xb2, 0xff}}},\n    {{{ -3623,   1226,     36}, 0, {   220,   1872}, {0x98, 0x43, 0xe5, 0xff}}},\n    {{{ -4284,   1331,  -2062}, 0, {  3528,   2012}, {0xb6, 0x66, 0x09, 0xff}}},\n    {{{ -5221,   1331,  -2687}, 0, {  3162,   2012}, {0xb4, 0x54, 0x38, 0xff}}},\n};\n\n// 0x07015F18 - 0x07016018\nstatic const Vtx hmc_seg7_vertex_07015F18[] = {\n    {{{ -4709,   1331,    384}, 0, {   514,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4709,   1058,    384}, 0, {   514,   1648}, {0xc1, 0x4c, 0xb2, 0xff}}},\n    {{{ -5221,    922,    384}, 0, {   742,   1468}, {0xe1, 0x4c, 0xa0, 0xff}}},\n    {{{ -4607,    922,   -229}, 0, {   216,   1468}, {0xcd, 0x6f, 0xe2, 0xff}}},\n    {{{ -7269,   1321,   -332}, 0, {  1892,   2000}, {0x6a, 0x00, 0x45, 0xff}}},\n    {{{ -7269,   1145,   -332}, 0, {  1892,   1764}, {0x4b, 0x60, 0x20, 0xff}}},\n    {{{ -7167,   1104,   -844}, 0, {  2098,   1708}, {0x6e, 0x3d, 0xf9, 0xff}}},\n    {{{ -5733,   1331,   1408}, 0, {  1022,   2012}, {0xbf, 0x2d, 0x9d, 0xff}}},\n    {{{ -6041,    922,    384}, 0, {  1238,   1468}, {0x1a, 0x6d, 0xc6, 0xff}}},\n    {{{ -7666,   1321,   -275}, 0, {  1896,   2000}, {0x12, 0x00, 0x7d, 0xff}}},\n    {{{ -6655,    922,   -229}, 0, {  1764,   1468}, {0x3b, 0x6e, 0xee, 0xff}}},\n    {{{ -7690,   1331,   -271}, 0, {  1898,   2012}, {0x2e, 0x74, 0xec, 0xff}}},\n    {{{ -6655,    922,  -1049}, 0, {  2260,   1468}, {0x37, 0x6e, 0x1a, 0xff}}},\n    {{{ -7167,   1321,   -844}, 0, {  2098,   2000}, {0x76, 0x00, 0xd3, 0xff}}},\n    {{{ -7539,   1331,  -1123}, 0, {  2174,   2012}, {0x32, 0x71, 0x19, 0xff}}},\n    {{{ -7523,   1321,  -1111}, 0, {  2170,   2000}, {0x4c, 0x00, 0x9b, 0xff}}},\n};\n\n// 0x07016018 - 0x07016118\nstatic const Vtx hmc_seg7_vertex_07016018[] = {\n    {{{ -6553,   1638,  -6271}, 0, { -2868,   1972}, {0x58, 0x4c, 0x31, 0xff}}},\n    {{{ -6553,   1843,  -7295}, 0, { -4004,   1804}, {0x2f, 0x75, 0x0d, 0xff}}},\n    {{{ -6553,   2810,  -7295}, 0, { -4004,     52}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6553,   2697,  -6271}, 0, { -2868,     52}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{ -5426,   1684,  -7295}, 0, {  4908,   2180}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5426,   2355,  -3199}, 0, {   366,     44}, {0x84, 0x00, 0x18, 0xff}}},\n    {{{ -5426,   2810,  -7295}, 0, {  4908,     44}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{ -5426,   1229,  -3199}, 0, {   366,   2180}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -6962,   2651,  -5858}, 0, { -2410,     52}, {0x6d, 0x00, 0x3f, 0xff}}},\n    {{{ -6962,   1597,  -5858}, 0, { -2410,   1964}, {0x45, 0x66, 0x1c, 0xff}}},\n    {{{ -6962,   2628,  -5654}, 0, { -2184,     52}, {0x7a, 0x00, 0xe0, 0xff}}},\n    {{{ -6962,   1577,  -5654}, 0, { -2184,   1960}, {0x68, 0x2b, 0xc7, 0xff}}},\n    {{{ -6553,   2583,  -5247}, 0, { -1734,     52}, {0x6d, 0x00, 0xc0, 0xff}}},\n    {{{ -6553,   1536,  -5247}, 0, { -1734,   1952}, {0x54, 0x5d, 0xf1, 0xff}}},\n    {{{ -6553,   2355,  -3199}, 0, {   536,     52}, {0x7d, 0x00, 0x0f, 0xff}}},\n    {{{ -6553,   1331,  -3199}, 0, {   536,   1908}, {0x48, 0x64, 0x1c, 0xff}}},\n};\n\n// 0x07016118 - 0x07016218\nstatic const Vtx hmc_seg7_vertex_07016118[] = {\n    {{{ -6476,   1536,   1408}, 0, {  2034,   1604}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{ -6476,   1792,   1408}, 0, {  2034,   1092}, {0xe5, 0xc9, 0x92, 0xff}}},\n    {{{ -5733,   1536,   1408}, 0, {  2648,   1604}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6629,   1792,   1408}, 0, {  1926,   1092}, {0x43, 0xdf, 0x9b, 0xff}}},\n    {{{ -7269,   1536,   1408}, 0, {  1552,   1604}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -7269,   2355,   1408}, 0, {  1552,      0}, {0x3d, 0x00, 0x92, 0xff}}},\n    {{{ -6629,   1536,   1408}, 0, {  1926,   1604}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{ -6629,   1792,   1459}, 0, {  1948,   1092}, {0x38, 0x8f, 0x00, 0xff}}},\n    {{{ -6629,   1536,   1459}, 0, {  1948,   1604}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{ -6476,   1536,   1459}, 0, {  2054,   1604}, {0xc8, 0x71, 0x00, 0xff}}},\n    {{{ -5733,   1331,   1408}, 0, {  2648,   2012}, {0xbf, 0x2d, 0x9d, 0xff}}},\n    {{{ -7269,   1331,   1408}, 0, {  1552,   2012}, {0x33, 0x60, 0xc0, 0xff}}},\n    {{{ -7781,   1331,   -639}, 0, {     0,   2012}, {0x77, 0x2a, 0xff, 0xff}}},\n    {{{ -7781,   2355,   -639}, 0, {     0,      0}, {0x7b, 0x00, 0x1d, 0xff}}},\n    {{{ -5733,   2355,   1408}, 0, {  2648,      0}, {0xd5, 0x00, 0x89, 0xff}}},\n    {{{ -6476,   1792,   1459}, 0, {  2054,   1092}, {0x8f, 0xc8, 0x00, 0xff}}},\n};\n\n// 0x07016218 - 0x07016308\nstatic const Vtx hmc_seg7_vertex_07016218[] = {\n    {{{ -3677,   1792,    636}, 0, {  4814,   1092}, {0x0f, 0xde, 0x87, 0xff}}},\n    {{{ -3654,   1536,    682}, 0, {  4792,   1604}, {0x65, 0x38, 0xce, 0xff}}},\n    {{{ -3677,   1536,    636}, 0, {  4814,   1604}, {0x17, 0x67, 0xbb, 0xff}}},\n    {{{ -3654,   1792,    682}, 0, {  4792,   1092}, {0x32, 0x8f, 0xe7, 0xff}}},\n    {{{ -3540,   1792,    567}, 0, {  4938,   1092}, {0xb6, 0xc9, 0xaa, 0xff}}},\n    {{{ -4197,   1536,    896}, 0, {  4270,   1604}, {0x0e, 0x56, 0xa4, 0xff}}},\n    {{{ -4197,   2355,    896}, 0, {  4270,      0}, {0xe9, 0x00, 0x84, 0xff}}},\n    {{{ -3517,   1792,    613}, 0, {  4916,   1092}, {0x9b, 0xc8, 0x32, 0xff}}},\n    {{{ -3517,   1536,    613}, 0, {  4916,   1604}, {0xce, 0x71, 0x19, 0xff}}},\n    {{{ -3540,   1536,    567}, 0, {  4938,   1604}, {0x8d, 0x33, 0x00, 0xff}}},\n    {{{ -3173,   1536,    384}, 0, {  5232,   1604}, {0xad, 0x58, 0xda, 0xff}}},\n    {{{ -3173,   2355,    384}, 0, {  5232,      0}, {0x9f, 0x00, 0xaf, 0xff}}},\n    {{{ -5426,   2355,  -3199}, 0, {  9588,      0}, {0x84, 0x00, 0x18, 0xff}}},\n    {{{ -5426,   1331,  -3199}, 0, {  9588,   2012}, {0xcc, 0x6f, 0x1f, 0xff}}},\n    {{{ -5221,   1331,  -2687}, 0, {  9068,   2012}, {0xb4, 0x54, 0x38, 0xff}}},\n};\n\n// 0x07016308 - 0x07016408\nstatic const Vtx hmc_seg7_vertex_07016308[] = {\n    {{{ -7781,   2355,   -639}, 0, { 12232,      0}, {0x7b, 0x00, 0x1d, 0xff}}},\n    {{{ -6757,   1331,  -2687}, 0, { 10358,   2012}, {0x5a, 0x4c, 0x2d, 0xff}}},\n    {{{ -6757,   2355,  -2687}, 0, { 10358,      0}, {0x74, 0x00, 0x32, 0xff}}},\n    {{{ -7781,   1331,   -639}, 0, { 12232,   2012}, {0x77, 0x2a, 0xff, 0xff}}},\n    {{{ -5221,   2355,  -2687}, 0, {  9068,      0}, {0xcc, 0x27, 0x6c, 0xff}}},\n    {{{ -5221,   1331,  -2687}, 0, {  9068,   2012}, {0xb4, 0x54, 0x38, 0xff}}},\n    {{{ -3685,   1331,  -1663}, 0, {  7190,   2012}, {0xba, 0x00, 0x69, 0xff}}},\n    {{{ -6553,   1331,  -3199}, 0, { 10000,   2012}, {0x48, 0x64, 0x1c, 0xff}}},\n    {{{ -6553,   2355,  -3199}, 0, { 10000,      0}, {0x7d, 0x00, 0x0f, 0xff}}},\n    {{{ -5426,   2355,  -3199}, 0, {  9588,      0}, {0x84, 0x00, 0x18, 0xff}}},\n    {{{ -5017,    512,   -879}, 0, {  3814,    920}, {0x94, 0x33, 0x29, 0xff}}},\n    {{{ -5017,   -511,   -879}, 0, {  3814,   -440}, {0x93, 0x00, 0x40, 0xff}}},\n    {{{ -5017,   -511,   -399}, 0, {  4298,   -440}, {0x86, 0x00, 0xe0, 0xff}}},\n    {{{ -5733,   1331,   1408}, 0, {  1022,   2012}, {0xbf, 0x2d, 0x9d, 0xff}}},\n    {{{ -6041,    922,    384}, 0, {  1238,   1468}, {0x1a, 0x6d, 0xc6, 0xff}}},\n    {{{ -7269,   1331,   1408}, 0, {  1430,   2012}, {0x33, 0x60, 0xc0, 0xff}}},\n};\n\n// 0x07016408 - 0x07016508\nstatic const Vtx hmc_seg7_vertex_07016408[] = {\n    {{{ -7269,   1331,   1408}, 0, {  1430,   2012}, {0x33, 0x60, 0xc0, 0xff}}},\n    {{{ -6041,    922,    384}, 0, {  1238,   1468}, {0x1a, 0x6d, 0xc6, 0xff}}},\n    {{{ -6655,    922,   -229}, 0, {  1764,   1468}, {0x3b, 0x6e, 0xee, 0xff}}},\n    {{{ -7690,   1331,   -271}, 0, {  1898,   2012}, {0x2e, 0x74, 0xec, 0xff}}},\n    {{{ -7539,   1331,  -1123}, 0, {  2174,   2012}, {0x32, 0x71, 0x19, 0xff}}},\n    {{{ -6655,    922,  -1049}, 0, {  2260,   1468}, {0x37, 0x6e, 0x1a, 0xff}}},\n    {{{ -6757,   1331,  -2687}, 0, {  2706,   2012}, {0x5a, 0x4c, 0x2d, 0xff}}},\n    {{{ -6041,    922,  -1663}, 0, {  2786,   1468}, {0xfe, 0x50, 0x61, 0xff}}},\n    {{{ -5221,    922,  -1663}, 0, {  3282,   1468}, {0xf3, 0x5a, 0x57, 0xff}}},\n    {{{ -5391,    512,  -1253}, 0, {  3276,    920}, {0xd2, 0x33, 0x69, 0xff}}},\n    {{{ -5017,    512,   -879}, 0, {  3814,    920}, {0x94, 0x33, 0x29, 0xff}}},\n    {{{ -5017,   -511,   -879}, 0, {  3814,   -440}, {0x93, 0x00, 0x40, 0xff}}},\n    {{{ -5017,   -511,   -399}, 0, {  4298,   -440}, {0x86, 0x00, 0xe0, 0xff}}},\n    {{{ -5017,    512,   -399}, 0, {  4298,    920}, {0x97, 0x33, 0xd2, 0xff}}},\n    {{{ -6245,    512,   -399}, 0, {  1770,    920}, {0x6c, 0x33, 0xd7, 0xff}}},\n    {{{ -6245,    512,   -879}, 0, {  2254,    920}, {0x69, 0x33, 0x2e, 0xff}}},\n};\n\n// 0x07016508 - 0x07016608\nstatic const Vtx hmc_seg7_vertex_07016508[] = {\n    {{{ -5017,    512,   -399}, 0, {   210,    920}, {0x97, 0x33, 0xd2, 0xff}}},\n    {{{ -5017,   -511,   -399}, 0, {   210,   -440}, {0x86, 0x00, 0xe0, 0xff}}},\n    {{{ -5391,   -511,    -25}, 0, {   748,   -440}, {0xc0, 0x00, 0x93, 0xff}}},\n    {{{ -5391,    512,    -25}, 0, {   748,    920}, {0xd7, 0x33, 0x94, 0xff}}},\n    {{{ -5871,   -511,    -25}, 0, {  1232,   -440}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{ -5871,    512,    -25}, 0, {  1232,    920}, {0x2e, 0x33, 0x96, 0xff}}},\n    {{{ -5221,    922,    384}, 0, {   742,   1468}, {0xe1, 0x4c, 0xa0, 0xff}}},\n    {{{ -6041,    922,    384}, 0, {  1238,   1468}, {0x1a, 0x6d, 0xc6, 0xff}}},\n    {{{ -6245,   -511,   -399}, 0, {  1770,   -440}, {0x6d, 0x00, 0xc0, 0xff}}},\n    {{{ -6245,    512,   -399}, 0, {  1770,    920}, {0x6c, 0x33, 0xd7, 0xff}}},\n    {{{ -6655,    922,   -229}, 0, {  1764,   1468}, {0x3b, 0x6e, 0xee, 0xff}}},\n    {{{ -6245,   -511,   -879}, 0, {  2254,   -440}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{ -6245,    512,   -879}, 0, {  2254,    920}, {0x69, 0x33, 0x2e, 0xff}}},\n    {{{ -6655,    922,  -1049}, 0, {  2260,   1468}, {0x37, 0x6e, 0x1a, 0xff}}},\n    {{{ -5871,    512,  -1253}, 0, {  2792,    920}, {0x29, 0x33, 0x6c, 0xff}}},\n    {{{ -5871,   -511,  -1253}, 0, {  2792,   -440}, {0x40, 0x00, 0x6d, 0xff}}},\n};\n\n// 0x07016608 - 0x070166F8\nstatic const Vtx hmc_seg7_vertex_07016608[] = {\n    {{{ -6655,    922,  -1049}, 0, {  2260,   1468}, {0x37, 0x6e, 0x1a, 0xff}}},\n    {{{ -5871,    512,  -1253}, 0, {  2792,    920}, {0x29, 0x33, 0x6c, 0xff}}},\n    {{{ -6041,    922,  -1663}, 0, {  2786,   1468}, {0xfe, 0x50, 0x61, 0xff}}},\n    {{{ -5391,    512,  -1253}, 0, {  3276,    920}, {0xd2, 0x33, 0x69, 0xff}}},\n    {{{ -5391,   -511,  -1253}, 0, {  3276,   -440}, {0xe0, 0x00, 0x7a, 0xff}}},\n    {{{ -5871,   -511,  -1253}, 0, {  2792,   -440}, {0x40, 0x00, 0x6d, 0xff}}},\n    {{{ -6041,   1321,  -1663}, 0, {  2786,   2000}, {0xda, 0x00, 0x79, 0xff}}},\n    {{{ -5221,    922,  -1663}, 0, {  3282,   1468}, {0xf3, 0x5a, 0x57, 0xff}}},\n    {{{ -6739,   1321,  -2661}, 0, {  2708,   2000}, {0x98, 0x00, 0x48, 0xff}}},\n    {{{ -5017,   -511,   -879}, 0, {  3814,   -440}, {0x93, 0x00, 0x40, 0xff}}},\n    {{{ -4709,   2355,    384}, 0, {  3866,      0}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{ -5221,   1331,    384}, 0, {  3494,   2012}, {0xcb, 0x00, 0x8d, 0xff}}},\n    {{{ -5221,   2355,    384}, 0, {  3494,      0}, {0xa9, 0x00, 0xa4, 0xff}}},\n    {{{ -5221,   1321,  -1663}, 0, {  3282,   2000}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -5221,   1321,  -2661}, 0, {  3164,   2000}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070166F8 - 0x070167F8\nstatic const Vtx hmc_seg7_vertex_070166F8[] = {\n    {{{ -4709,   1331,    384}, 0, {   514,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5221,    922,    384}, 0, {   742,   1468}, {0xe1, 0x4c, 0xa0, 0xff}}},\n    {{{ -5221,   1331,    384}, 0, {   742,   2012}, {0xcb, 0x00, 0x8d, 0xff}}},\n    {{{ -5733,   1331,   1408}, 0, {  1022,   2012}, {0xbf, 0x2d, 0x9d, 0xff}}},\n    {{{ -5221,   2355,    384}, 0, {  3494,      0}, {0xa9, 0x00, 0xa4, 0xff}}},\n    {{{ -5733,   1331,   1408}, 0, {  2648,   2012}, {0xbf, 0x2d, 0x9d, 0xff}}},\n    {{{ -5733,   2355,   1408}, 0, {  2648,      0}, {0xd5, 0x00, 0x89, 0xff}}},\n    {{{ -5221,   1331,    384}, 0, {  3494,   2012}, {0xcb, 0x00, 0x8d, 0xff}}},\n    {{{ -4709,   2355,    384}, 0, {  3866,      0}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{ -4709,   1331,    384}, 0, {  3866,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4197,   1536,    896}, 0, {  4270,   1604}, {0x0e, 0x56, 0xa4, 0xff}}},\n    {{{ -4709,   1536,    384}, 0, {  3866,   1604}, {0xbc, 0x3c, 0xa8, 0xff}}},\n    {{{ -4197,   2355,    896}, 0, {  4270,      0}, {0xe9, 0x00, 0x84, 0xff}}},\n    {{{ -5426,   2697,  -6271}, 0, {  1398,   -372}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5426,   2810,  -6271}, 0, {  1398,   -828}, {0xd6, 0x54, 0xac, 0xff}}},\n    {{{ -5426,   2810,  -7295}, 0, {  -644,   -828}, {0x99, 0x33, 0xcd, 0xff}}},\n};\n\n// 0x070167F8 - 0x07016898\nstatic const Vtx hmc_seg7_vertex_070167F8[] = {\n    {{{ -4914,   3630,  -7295}, 0, {  4114,      0}, {0x93, 0x00, 0x40, 0xff}}},\n    {{{ -4914,   2810,  -7295}, 0, {  4114,   2012}, {0x9a, 0x47, 0xe9, 0xff}}},\n    {{{ -4607,   2810,  -6988}, 0, {  3302,   2012}, {0x99, 0x2a, 0x3c, 0xff}}},\n    {{{ -4607,   3630,  -6988}, 0, {  3302,      0}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{ -4607,   2810,  -6578}, 0, {  2596,   2012}, {0x9d, 0x49, 0xe6, 0xff}}},\n    {{{ -4607,   3630,  -6578}, 0, {  2596,      0}, {0x93, 0x00, 0xc0, 0xff}}},\n    {{{ -4914,   2810,  -6271}, 0, {  1876,   2012}, {0xcc, 0x49, 0xa7, 0xff}}},\n    {{{ -4914,   3630,  -6271}, 0, {  1876,      0}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{ -5426,   2810,  -6271}, 0, {  1048,   2012}, {0xd6, 0x54, 0xac, 0xff}}},\n    {{{ -5426,   3630,  -6271}, 0, {  1048,      0}, {0x8f, 0x00, 0xc8, 0xff}}},\n};\n\n// 0x07016898 - 0x070168D8\nstatic const Vtx hmc_seg7_vertex_07016898[] = {\n    {{{ -4474,   2406,  -3189}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4259,   2836,  -3189}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4474,   2836,  -3189}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4259,   2406,  -3189}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070168D8 - 0x07016918\nstatic const Vtx hmc_seg7_vertex_070168D8[] = {\n    {{{ -4259,   2406,  -3189}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4044,   2836,  -3189}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4259,   2836,  -3189}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4044,   2406,  -3189}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07016918 - 0x07016A90\nstatic const Gfx hmc_seg7_dl_07016918[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09006800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&hmc_seg7_lights_07014EB8.l, 1),\n    gsSPLight(&hmc_seg7_lights_07014EB8.a, 2),\n    gsSPVertex(hmc_seg7_vertex_07014EE8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  9, 11, 0x0, 12, 10,  0, 0x0),\n    gsSP2Triangles( 0, 10,  1, 0x0, 13, 14, 15, 0x0),\n    gsSP2Triangles(12,  7, 10, 0x0, 11,  1, 10, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07014FE8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  0, 0x0,  6,  1,  7, 0x0),\n    gsSP2Triangles( 6,  2,  1, 0x0,  7,  1,  8, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(12, 11, 13, 0x0, 12, 13, 14, 0x0),\n    gsSP2Triangles(10, 12, 15, 0x0, 10, 15,  3, 0x0),\n    gsSPVertex(hmc_seg7_vertex_070150E8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12,  1, 0x0),\n    gsSP2Triangles(11,  1,  3, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_070151E8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle(10, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07016A90 - 0x07016BA8\nstatic const Gfx hmc_seg7_dl_07016A90[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09009800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_070152D8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  9,  8, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 12, 11,  1, 0x0),\n    gsSP2Triangles(12,  1,  0, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_070153D8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_070154B8, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 4,  8,  9, 0x0,  4,  6,  8, 0x0),\n    gsSPLight(&hmc_seg7_lights_07014ED0.l, 1),\n    gsSPLight(&hmc_seg7_lights_07014ED0.a, 2),\n    gsSPVertex(hmc_seg7_vertex_07015558, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  2,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07016BA8 - 0x07016C60\nstatic const Gfx hmc_seg7_dl_07016BA8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&hmc_seg7_lights_07014EB8.l, 1),\n    gsSPLight(&hmc_seg7_lights_07014EB8.a, 2),\n    gsSPVertex(hmc_seg7_vertex_070155C8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  6,  3, 0x0),\n    gsSP2Triangles( 7,  8,  6, 0x0,  5,  4,  9, 0x0),\n    gsSP2Triangles( 5,  9, 10, 0x0, 10,  8,  7, 0x0),\n    gsSP2Triangles(10,  9,  8, 0x0,  2,  1, 11, 0x0),\n    gsSP2Triangles( 2, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSP2Triangles( 0, 15,  1, 0x0, 12, 11, 14, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0, 13, 15,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07016C60 - 0x07016E40\nstatic const Gfx hmc_seg7_dl_07016C60[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_070156C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_070157B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_070158A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 2,  4,  3, 0x0,  2,  5,  4, 0x0),\n    gsSP2Triangles( 5,  6,  4, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles( 9, 12, 13, 0x0,  9, 11, 12, 0x0),\n    gsSP2Triangles( 8, 14, 11, 0x0, 13, 12, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_070159A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  2,  5,  6, 0x0),\n    gsSP2Triangles( 2,  6,  7, 0x0,  0,  2,  7, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  5,  8,  6, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07015AA8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0,  8, 15,  9, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07015BA8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  5,  6,  0, 0x0),\n    gsSP1Triangle( 7,  0,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07016E40 - 0x07017338\nstatic const Gfx hmc_seg7_dl_07016E40[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_07015C28, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07015D28, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9,  6, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(12, 11, 13, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07015E18, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  3,  5,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 6, 10, 11, 0x0, 12, 10,  6, 0x0),\n    gsSP2Triangles( 6, 11, 13, 0x0,  4,  2, 14, 0x0),\n    gsSP1Triangle(15,  4, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07015F18, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  2,  8, 0x0),\n    gsSP2Triangles( 9,  5,  4, 0x0, 10,  5, 11, 0x0),\n    gsSP2Triangles(12,  6,  5, 0x0, 12,  5, 10, 0x0),\n    gsSP2Triangles( 4,  6, 13, 0x0, 14,  6, 12, 0x0),\n    gsSP1Triangle(13,  6, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07016018, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9,  0, 0x0, 10,  9,  8, 0x0),\n    gsSP2Triangles( 8,  0,  3, 0x0, 10, 11,  9, 0x0),\n    gsSP2Triangles(12, 11, 10, 0x0, 12, 13, 11, 0x0),\n    gsSP2Triangles(14, 15, 13, 0x0, 14, 13, 12, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07016118, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  3,  1, 0x0),\n    gsSP2Triangles( 8,  6,  3, 0x0,  8,  3,  7, 0x0),\n    gsSP2Triangles( 1,  3,  5, 0x0,  9,  6,  8, 0x0),\n    gsSP2Triangles( 9,  0,  6, 0x0,  4,  2, 10, 0x0),\n    gsSP2Triangles( 4, 10, 11, 0x0,  5, 11, 12, 0x0),\n    gsSP2Triangles( 5, 12, 13, 0x0,  1, 14,  2, 0x0),\n    gsSP2Triangles( 7,  1, 15, 0x0, 15,  1,  0, 0x0),\n    gsSP2Triangles( 1,  5, 14, 0x0, 15,  0,  9, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07016218, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  3,  0, 0x0,  0,  5,  6, 0x0),\n    gsSP2Triangles( 4,  7,  3, 0x0,  2,  1,  8, 0x0),\n    gsSP2Triangles( 0,  2,  5, 0x0,  2,  8,  9, 0x0),\n    gsSP2Triangles( 9,  8,  7, 0x0,  9,  7,  4, 0x0),\n    gsSP2Triangles( 4,  0,  6, 0x0, 10,  9,  4, 0x0),\n    gsSP2Triangles( 4,  6, 11, 0x0, 10,  4, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07016308, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  2,  1,  7, 0x0),\n    gsSP2Triangles( 2,  7,  8, 0x0,  9,  5,  4, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07016408, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(10, 12, 13, 0x0,  2, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07016508, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 5,  8,  9, 0x0,  5,  4,  8, 0x0),\n    gsSP2Triangles( 7,  5,  9, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles( 9,  8, 11, 0x0,  9, 11, 12, 0x0),\n    gsSP2Triangles(10, 12, 13, 0x0, 13, 12, 14, 0x0),\n    gsSP2Triangles(12, 15, 14, 0x0, 12, 11, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07016608, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  1,  5,  4, 0x0),\n    gsSP2Triangles( 6,  2,  7, 0x0,  2,  6,  8, 0x0),\n    gsSP2Triangles( 2,  3,  7, 0x0,  3,  4,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  6,  7, 13, 0x0),\n    gsSP1Triangle( 7, 14, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_070166F8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9,  7, 0x0, 10, 11,  8, 0x0),\n    gsSP2Triangles(12, 10,  8, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_070167F8, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  7,  8,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07017338 - 0x07017370\nstatic const Gfx hmc_seg7_dl_07017338[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, hmc_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_07016898, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07017370 - 0x070173A8\nstatic const Gfx hmc_seg7_dl_07017370[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, hmc_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_070168D8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070173A8 - 0x070174B0\nconst Gfx hmc_seg7_dl_070173A8[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_07016918),\n    gsSPDisplayList(hmc_seg7_dl_07016A90),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_07016BA8),\n    gsSPDisplayList(hmc_seg7_dl_07016C60),\n    gsSPDisplayList(hmc_seg7_dl_07016E40),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_07017338),\n    gsSPDisplayList(hmc_seg7_dl_07017370),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/18/model.inc.c",
    "content": "// 0x070174B0 - 0x070175A0\nstatic const Vtx hmc_seg7_vertex_070174B0[] = {\n    {{{ -6962,   1536,   1408}, 0, {  7752,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6655,   1089,    691}, 0, {     0,   4426}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6962,   1275,   1408}, 0, {  7752,   2568}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5411,    509,     77}, 0, {  8242,  10214}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5411,   1536,     77}, 0, {  8242,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4582,   1536,     77}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4582,   1024,     77}, 0, {     0,   5076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5718,   1536,    691}, 0, {  6824,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5411,    509,     77}, 0, {     0,  10214}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5718,    919,    691}, 0, {  6824,   6126}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5411,   1536,     77}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6655,   1536,    691}, 0, {  9316,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5718,    919,    691}, 0, {     0,   6126}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6655,   1089,    691}, 0, {  9316,   4426}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5718,   1536,    691}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070175A0 - 0x07017680\nstatic const Vtx hmc_seg7_vertex_070175A0[] = {\n    {{{ -5096,   2867,  -1610}, 0, {     0,   2010}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5551,   2867,   -322}, 0, { 13254,   5076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5810,   2867,   -486}, 0, { 13254,   2010}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6962,   1536,   1408}, 0, {  7752,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6655,   1536,    691}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6655,   1089,    691}, 0, {     0,   4426}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4577,   2867,  -1280}, 0, {     0,   8142}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4318,   2867,  -1115}, 0, {     0,  11208}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4483,   2867,   -856}, 0, {  3034,  11208}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4742,   2867,  -1021}, 0, {  3034,   8142}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5441,   2867,  -1829}, 0, {     0,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5221,   2867,  -2175}, 0, { -4118,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4098,   2867,  -1460}, 0, { -4118,  11208}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4837,   2867,  -1445}, 0, {     0,   5076}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07017680 - 0x07017760\nstatic const Vtx hmc_seg7_vertex_07017680[] = {\n    {{{ -5221,   2867,  -2687}, 0, {  2810,  -8908}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3685,   2867,  -3199}, 0, { -9728,   1280}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3685,   2867,  -1663}, 0, {  3202,   9510}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5441,   2867,  -1829}, 0, {     0,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5763,   2867,   -942}, 0, {  9166,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5936,   2867,  -1052}, 0, {  9166,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5269,   2867,  -1719}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6344,   2867,  -1555}, 0, {  7122,  -8208}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5826,   2867,  -1225}, 0, {  7122,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6454,   2867,  -1382}, 0, {  9166,  -8208}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5119,   2867,    -47}, 0, { 13254,  10186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5441,   2867,   -494}, 0, { 11210,   5076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5009,   2867,   -219}, 0, { 11210,  10186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5551,   2867,   -322}, 0, { 13254,   5076}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07017760 - 0x07017840\nstatic const Vtx hmc_seg7_vertex_07017760[] = {\n    {{{ -3685,   3379,  -1663}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4095,   2355,  -1458}, 0, {  4538,  10186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4095,   3379,  -1458}, 0, {  4538,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3685,   2867,  -1663}, 0, {  3202,   9510}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4095,   2867,  -1458}, 0, {  7122,   7160}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5221,   2867,  -2175}, 0, {  7122,  -6164}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5221,   2867,  -2687}, 0, {  2810,  -8908}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4709,   2867,  -3199}, 0, { -4242,  -7340}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3685,   2867,  -3199}, 0, { -9728,   1280}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5221,   3379,  -2175}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5221,   2355,  -2687}, 0, {  5078,  10186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5221,   3379,  -2687}, 0, {  5078,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5221,   2355,  -2175}, 0, {     0,  10186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3685,   2355,  -1663}, 0, {     0,  10186}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07017840 - 0x07017900\nstatic const Vtx hmc_seg7_vertex_07017840[] = {\n    {{{ -5221,   2355,  -2687}, 0, { 10216,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5221,   2355,  -2175}, 0, {  7382,  -3262}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4095,   2355,  -1458}, 0, { -5938,  -2978}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3685,   2355,  -1663}, 0, { -8206,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4709,   1536,    384}, 0, { -4118, -12296}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4582,   1536,     77}, 0, { -7184, -13566}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5411,   1536,     77}, 0, { -7184,  -5292}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5221,   1536,    384}, 0, { -4118,  -7186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5718,   1536,    691}, 0, { -1052,  -2226}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5733,   1536,   1408}, 0, {  6100,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6655,   1536,    691}, 0, { -1052,   7120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6962,   1536,   1408}, 0, {  6100,  10186}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07017900 - 0x070179F0\nstatic const Vtx hmc_seg7_vertex_07017900[] = {\n    {{{ -7535,   1331,  -1132}, 0, {  3674,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7156,   1331,   -848}, 0, { -1052,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7156,   1229,   -848}, 0, { -1052,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6046,   1331,  -1653}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6770,   1126,  -2687}, 0, {-11608,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6046,   1126,  -1653}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6770,   1331,  -2687}, 0, {-11608,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5211,   1331,  -2687}, 0, { 10290,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5211,   1331,  -1653}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5211,   1126,  -1653}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5211,   1126,  -2687}, 0, { 10290,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5211,   1331,  -1653}, 0, {  8300,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6046,   1331,  -1653}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6046,   1126,  -1653}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5211,   1126,  -1653}, 0, {  8300,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070179F0 - 0x07017AA0\nstatic const Vtx hmc_seg7_vertex_070179F0[] = {\n    {{{ -7156,   1331,   -848}, 0, {  5316,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7261,   1229,   -323}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7156,   1229,   -848}, 0, {  5316,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7535,   1331,  -1132}, 0, {  3674,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7156,   1229,   -848}, 0, { -1052,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7535,   1229,  -1132}, 0, {  3674,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7687,   1331,   -261}, 0, { -3306,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7687,   1229,   -261}, 0, { -3306,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7261,   1229,   -323}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7261,   1331,   -323}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7261,   1331,   -323}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07017AA0 - 0x07017C08\nstatic const Gfx hmc_seg7_dl_07017AA0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_070174B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(hmc_seg7_vertex_070175A0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10, 11, 0x0,  7, 11, 12, 0x0),\n    gsSP1Triangle( 0, 13,  1, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07017680, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  5, 0x0),\n    gsSP2Triangles( 7,  5,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(10, 13, 11, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07017760, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 12, 10, 0x0),\n    gsSP1Triangle( 0, 13,  1, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07017840, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07017C08 - 0x07017C98\nstatic const Gfx hmc_seg7_dl_07017C08[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_07017900, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_070179F0, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6,  8, 0x0),\n    gsSP1Triangle( 0, 10,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07017C98 - 0x07017D70\nconst Gfx hmc_seg7_dl_07017C98[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_07017AA0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_07017C08),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/19/model.inc.c",
    "content": "// 0x07017D70 - 0x07017E60\nstatic const Vtx hmc_seg7_vertex_07017D70[] = {\n    {{{ -5436,   1741,  -3404}, 0, {   990,    990}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -5436,   2253,  -3404}, 0, {   990,      0}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -5436,   2253,  -3916}, 0, {     0,      0}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -5324,   3425,  -6281}, 0, {   990,      0}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -4914,   3015,  -6281}, 0, {     0,    990}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -5324,   3015,  -6281}, 0, {   990,    990}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -4914,   3425,  -6281}, 0, {     0,      0}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -5436,   2099,  -6476}, 0, {   990,    990}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -5436,   2611,  -6988}, 0, {     0,      0}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -5436,   2099,  -6988}, 0, {     0,    990}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -5436,   2611,  -6476}, 0, {   990,      0}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -5436,   1894,  -4940}, 0, {   990,    990}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -5436,   2406,  -5452}, 0, {     0,      0}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -5436,   1894,  -5452}, 0, {     0,    990}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -5436,   2406,  -4940}, 0, {   990,      0}, {0xff, 0x55, 0x00, 0xb4}}},\n};\n\n// 0x07017E60 - 0x07017F50\nstatic const Vtx hmc_seg7_vertex_07017E60[] = {\n    {{{ -4709,   2355,    374}, 0, {     0,      0}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -4709,   1843,    374}, 0, {     0,    990}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -5221,   1843,    374}, 0, {   990,    990}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -5436,   1741,  -3404}, 0, {   990,    990}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -5436,   2253,  -3916}, 0, {     0,      0}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -5436,   1741,  -3916}, 0, {     0,    990}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -3497,   2355,   -866}, 0, {   990,      0}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -3621,   1843,  -1362}, 0, {     0,    990}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -3497,   1843,   -866}, 0, {   990,    990}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -3621,   2355,  -1362}, 0, {     0,      0}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -4625,   2355,    454}, 0, {   990,      0}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -4263,   1843,    816}, 0, {     0,    990}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -4625,   1843,    454}, 0, {   990,    990}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -4263,   2355,    816}, 0, {     0,      0}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -5221,   2355,    374}, 0, {   990,      0}, {0xff, 0x55, 0x00, 0xb4}}},\n};\n\n// 0x07017F50 - 0x07018040\nstatic const Vtx hmc_seg7_vertex_07017F50[] = {\n    {{{ -6542,   1735,  -3916}, 0, {     0,    990}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -6542,   2247,  -3404}, 0, {   990,      0}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -6542,   1735,  -3404}, 0, {   990,    990}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -7582,   2355,    114}, 0, {   990,      0}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -7458,   1843,    611}, 0, {     0,    990}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -7582,   1843,    114}, 0, {   990,    990}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -7458,   2355,    611}, 0, {     0,      0}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -5597,   2355,   1112}, 0, {   990,      0}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -5368,   2355,    654}, 0, {     0,      0}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -5597,   1843,   1112}, 0, {   990,    990}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -5368,   1843,    654}, 0, {     0,    990}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -6542,   2094,  -6988}, 0, {     0,    990}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -6542,   2606,  -6988}, 0, {     0,      0}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -6542,   2606,  -6476}, 0, {   990,      0}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -6542,   2094,  -6476}, 0, {   990,    990}, {0xff, 0x55, 0x00, 0xb4}}},\n};\n\n// 0x07018040 - 0x070180F0\nstatic const Vtx hmc_seg7_vertex_07018040[] = {\n    {{{ -5621,   3015,  -8191}, 0, {   990,    990}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -5621,   3425,  -8191}, 0, {   990,      0}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -5621,   3425,  -7781}, 0, {     0,      0}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -6542,   1735,  -3916}, 0, {     0,    990}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -6542,   2247,  -3916}, 0, {     0,      0}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -6542,   2247,  -3404}, 0, {   990,      0}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -3248,   2355,    127}, 0, {   990,      0}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -3372,   1843,   -369}, 0, {     0,    990}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -3248,   1843,    127}, 0, {   990,    990}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -3372,   2355,   -369}, 0, {     0,      0}, {0xff, 0x55, 0x00, 0xb4}}},\n    {{{ -5621,   3015,  -7781}, 0, {     0,    990}, {0xff, 0x55, 0x00, 0xb4}}},\n};\n\n// 0x070180F0 - 0x07018200\nstatic const Gfx hmc_seg7_dl_070180F0[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, cave_0900C000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_07017D70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07017E60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle(14,  0,  2, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07017F50, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07018040, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP1Triangle( 0,  2, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07018200 - 0x07018270\nconst Gfx hmc_seg7_dl_07018200[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_070180F0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/2/model.inc.c",
    "content": "// 0x070079E8 - 0x07007AE8\nstatic const Vtx hmc_seg7_vertex_070079E8[] = {\n    {{{ -6860,   1760,   3753}, 0, {  5998,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6245,   1658,   3753}, 0, {    70,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6860,   1658,   3753}, 0, {  5998,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6245,   1536,   2545}, 0, {  5998,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6860,   1536,   2545}, 0, {    70,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6860,   1434,   2545}, 0, {    70,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6245,   1434,   2545}, 0, {  5998,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6860,   1331,   3548}, 0, {  5998,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6245,   1331,   3548}, 0, {    70,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6245,   1229,   3548}, 0, {    70,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6860,   1229,   3548}, 0, {  5998,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6860,   1024,   3343}, 0, {  5998,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6245,    922,   3343}, 0, {    70,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6860,    922,   3343}, 0, {  5998,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6245,   1024,   3343}, 0, {    70,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6245,   1760,   3753}, 0, {    70,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07007AE8 - 0x07007B50\nstatic const Gfx hmc_seg7_dl_07007AE8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_070079E8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007B50 - 0x07007C08\nconst Gfx hmc_seg7_dl_07007B50[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_07007AE8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/20/model.inc.c",
    "content": "// 0x07018270 - 0x07018360\nstatic const Vtx hmc_seg7_vertex_07018270[] = {\n    {{{ -5170,   3169,  -6281}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5170,   3169,  -6384}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5068,   3169,  -6384}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5170,   3169,  -6384}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5170,   3271,  -6384}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5068,   3271,  -6384}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5068,   3169,  -6384}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5068,   3169,  -6281}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5068,   3271,  -6281}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5170,   3271,  -6281}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5170,   3271,  -6384}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5621,   3169,  -7935}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5518,   3169,  -7935}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5518,   3271,  -7935}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5068,   3169,  -6281}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07018360 - 0x07018450\nstatic const Vtx hmc_seg7_vertex_07018360[] = {\n    {{{ -5621,   3169,  -8037}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5518,   3169,  -7935}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5621,   3169,  -7935}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5518,   3169,  -8037}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5621,   3271,  -8037}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5518,   3271,  -8037}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5621,   3169,  -7935}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5518,   3271,  -7935}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5621,   3271,  -7935}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6542,   2401,  -6783}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6440,   2401,  -6783}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6440,   2298,  -6783}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5518,   3169,  -8037}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5518,   3169,  -7935}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5518,   3271,  -8037}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07018450 - 0x07018550\nstatic const Vtx hmc_seg7_vertex_07018450[] = {\n    {{{ -6440,   2298,  -6783}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6440,   2401,  -6783}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6440,   2401,  -6681}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6440,   2298,  -6681}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6542,   2298,  -6681}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6542,   2401,  -6681}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6542,   1940,  -3609}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6440,   2042,  -3609}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6542,   2042,  -3609}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6542,   2401,  -6783}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6440,   2298,  -6783}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6542,   2298,  -6783}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6440,   2298,  -6681}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6542,   2298,  -6681}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6440,   1940,  -3711}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6440,   1940,  -3609}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07018550 - 0x07018650\nstatic const Vtx hmc_seg7_vertex_07018550[] = {\n    {{{ -6440,   1940,  -3711}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6440,   2042,  -3711}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6440,   2042,  -3609}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6542,   1940,  -3609}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6440,   1940,  -3609}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5436,   2304,  -6783}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5539,   2304,  -6783}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5539,   2406,  -6783}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6542,   2042,  -3711}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6440,   2042,  -3711}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6440,   1940,  -3711}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6542,   1940,  -3711}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6440,   1940,  -3609}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6542,   1940,  -3609}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5436,   2304,  -6681}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5539,   2304,  -6681}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07018650 - 0x07018750\nstatic const Vtx hmc_seg7_vertex_07018650[] = {\n    {{{ -5539,   2099,  -5145}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5539,   2202,  -5247}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5539,   2099,  -5247}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5436,   2304,  -6783}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5539,   2406,  -6783}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5436,   2406,  -6783}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5436,   2406,  -6681}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5539,   2406,  -6681}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5539,   2304,  -6681}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5436,   2304,  -6681}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5539,   2406,  -6783}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5539,   2304,  -6783}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5539,   2202,  -5145}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5436,   1946,  -3609}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5539,   1946,  -3609}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5539,   1946,  -3711}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07018750 - 0x07018850\nstatic const Vtx hmc_seg7_vertex_07018750[] = {\n    {{{ -5436,   2202,  -5145}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5539,   2202,  -5145}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5539,   2099,  -5145}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5436,   2099,  -5145}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5436,   2099,  -5247}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5539,   2202,  -5247}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5436,   2202,  -5247}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5539,   2099,  -5247}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5436,   2099,  -5145}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5539,   2099,  -5145}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5539,   1946,  -3609}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5539,   2048,  -3711}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5539,   1946,  -3711}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5436,   1946,  -3609}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5539,   1946,  -3711}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5436,   1946,  -3711}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07018850 - 0x07018930\nstatic const Vtx hmc_seg7_vertex_07018850[] = {\n    {{{ -5436,   1946,  -3711}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5539,   1946,  -3711}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5539,   2048,  -3711}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5436,   2048,  -3711}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5436,   2048,  -3609}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5539,   2048,  -3609}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5539,   1946,  -3609}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5436,   1946,  -3609}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5539,   2048,  -3711}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3298,   2150,    -71}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3397,   2150,    -46}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3397,   2048,    -46}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3422,   2150,   -146}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3422,   2048,   -146}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07018930 - 0x07018A20\nstatic const Vtx hmc_seg7_vertex_07018930[] = {\n    {{{ -3323,   2048,   -170}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3422,   2150,   -146}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3323,   2150,   -170}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3422,   2048,   -146}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3298,   2048,    -71}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3397,   2048,    -46}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3422,   2048,   -146}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3323,   2048,   -170}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3298,   2150,    -71}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3546,   2150,  -1064}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3646,   2150,  -1040}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3646,   2048,  -1040}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3546,   2048,  -1064}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3670,   2048,  -1139}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3571,   2048,  -1164}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07018A20 - 0x07018B20\nstatic const Vtx hmc_seg7_vertex_07018A20[] = {\n    {{{ -3571,   2048,  -1164}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3670,   2048,  -1139}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3571,   2150,  -1164}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4480,   2048,    599}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4335,   2048,    599}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4407,   2048,    672}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3670,   2150,  -1139}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3646,   2150,  -1040}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3670,   2048,  -1139}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3646,   2048,  -1040}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3670,   2150,  -1139}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4480,   2150,    599}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4407,   2150,    527}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4407,   2048,    527}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4480,   2048,    599}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4407,   2048,    527}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07018B20 - 0x07018C00\nstatic const Vtx hmc_seg7_vertex_07018B20[] = {\n    {{{ -5017,   2048,    374}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5017,   2048,    271}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4914,   2048,    271}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4407,   2048,    672}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4335,   2048,    599}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4335,   2150,    599}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4407,   2150,    672}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4407,   2150,    527}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4335,   2048,    599}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4407,   2048,    527}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4335,   2150,    599}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5017,   2150,    374}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5017,   2150,    271}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4914,   2048,    374}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07018C00 - 0x07018D00\nstatic const Vtx hmc_seg7_vertex_07018C00[] = {\n    {{{ -4914,   2048,    374}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4914,   2150,    271}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4914,   2150,    374}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4914,   2048,    271}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5017,   2150,    271}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4914,   2150,    271}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4914,   2048,    271}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5017,   2048,    271}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7533,   2150,    313}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7433,   2150,    288}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7533,   2048,    313}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7408,   2048,    387}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7433,   2048,    288}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7533,   2048,    313}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7433,   2048,    288}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7408,   2048,    387}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07018D00 - 0x07018E00\nstatic const Vtx hmc_seg7_vertex_07018D00[] = {\n    {{{ -7533,   2048,    313}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7408,   2048,    387}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7508,   2048,    412}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7408,   2048,    387}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7508,   2150,    412}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7408,   2150,    387}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7433,   2150,    288}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7408,   2150,    387}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7408,   2048,    387}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5597,   2150,    883}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5551,   2150,    792}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5551,   2048,    792}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5505,   2150,    929}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5597,   2048,    883}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5505,   2048,    929}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5597,   2150,    883}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07018E00 - 0x07018E80\nstatic const Vtx hmc_seg7_vertex_07018E00[] = {\n    {{{ -5505,   2048,    929}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5597,   2048,    883}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5551,   2048,    792}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5460,   2048,    837}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5460,   2048,    837}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5551,   2150,    792}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5460,   2150,    837}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5597,   2150,    883}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07018E80 - 0x07019248\nstatic const Gfx hmc_seg7_dl_07018E80[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_0900A000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_07018270, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  6,  5, 0x0),\n    gsSP2Triangles( 7,  5,  8, 0x0,  9,  1,  0, 0x0),\n    gsSP2Triangles( 9, 10,  1, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07018360, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  3,  0, 0x0,  4,  5,  3, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12,  7, 13, 0x0, 12, 14,  7, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07018450, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  2,  5, 0x0,  4,  3,  2, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(11, 10, 12, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14,  7, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07018550, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0, 11, 10, 12, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 14,  6,  5, 0x0),\n    gsSP1Triangle(14, 15,  6, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07018650, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 8,  7, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07018750, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9,  7, 0x0,  8,  7,  4, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07018850, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 6,  5,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(10, 12, 13, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07018930, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  5,  4, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07018A20, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 1,  6,  2, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  3, 15,  4, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07018B20, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12,  1, 0x0),\n    gsSP2Triangles(11,  1,  0, 0x0,  0,  2, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07018C00, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 12, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07018D00, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 3,  5,  4, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 15, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07018E00, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  2,  5, 0x0,  4,  5,  6, 0x0),\n    gsSP1Triangle( 7,  2,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07019248 - 0x070192B8\nconst Gfx hmc_seg7_dl_07019248[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_07018E80),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/21/model.inc.c",
    "content": "// 0x070192B8 - 0x07019328\nstatic const Vtx hmc_seg7_vertex_070192B8[] = {\n    {{{ -6041,   2247,  -7797}, 0, {   990,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6348,   2094,  -7797}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6041,   2145,  -7797}, 0, {   990,    820}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5733,   2196,  -7797}, 0, {  2012,    650}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6041,   2401,  -7797}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6041,   1991,  -7797}, 0, {   990,   1328}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6348,   2298,  -7797}, 0, {     0,    308}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07019328 - 0x07019368\nstatic const Gfx hmc_seg7_dl_07019328[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09009800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_070192B8, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  6,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07019368 - 0x07019430\nconst Gfx hmc_seg7_dl_07019368[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetEnvColor(255, 255, 255, 100),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_07019328),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_XLU_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/22/model.inc.c",
    "content": "// 0x07019430 - 0x07019448\nstatic const Lights1 hmc_seg7_lights_07019430 = gdSPDefLights1(\n    0x79, 0x79, 0x79,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07019448 - 0x07019548\nstatic const Vtx hmc_seg7_vertex_07019448[] = {\n    {{{  1076,   -409,  -4633}, 0, {  4108,  -2408}, {0xcd, 0x67, 0xcd, 0xff}}},\n    {{{  1127,   -409,  -4786}, 0, {  4158,  -2562}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  1076,   -409,  -4786}, 0, {  4108,  -2562}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{  1127,   -409,  -4633}, 0, {  4158,  -2408}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{ -2047,   -409,  -3276}, 0, {   990,  -1054}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -3583,   -409,  -2252}, 0, {  -542,      0}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{ -2047,   -409,  -2252}, 0, {   990,      0}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{ -3583,   -409,  -3276}, 0, {  -542,  -1054}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{  -799,   -409,  -3276}, 0, {  2236,  -1054}, {0x12, 0x68, 0x46, 0xff}}},\n    {{{  -459,   -409,  -2252}, 0, {  2574,      0}, {0xcc, 0x49, 0xa7, 0xff}}},\n    {{{    52,   -409,  -2764}, 0, {  3086,   -544}, {0xad, 0x5c, 0xeb, 0xff}}},\n    {{{  -767,   -409,  -3308}, 0, {  2268,  -1086}, {0x4a, 0x5c, 0x2b, 0xff}}},\n    {{{    52,   -409,  -3788}, 0, {  3086,  -1566}, {0xb6, 0x5c, 0xd5, 0xff}}},\n    {{{  -767,   -409,  -4127}, 0, {  2268,  -1904}, {0x53, 0x5c, 0x15, 0xff}}},\n    {{{   564,   -409,  -4300}, 0, {  3596,  -2076}, {0xeb, 0x5c, 0xad, 0xff}}},\n    {{{   224,   -409,  -5119}, 0, {  3258,  -2894}, {0x2b, 0x5c, 0x4a, 0xff}}},\n};\n\n// 0x07019548 - 0x07019588\nstatic const Vtx hmc_seg7_vertex_07019548[] = {\n    {{{   224,   -409,  -5119}, 0, {  3258,  -2894}, {0x2b, 0x5c, 0x4a, 0xff}}},\n    {{{   564,   -409,  -4300}, 0, {  3596,  -2076}, {0xeb, 0x5c, 0xad, 0xff}}},\n    {{{  1076,   -409,  -4300}, 0, {  4108,  -2076}, {0xac, 0x54, 0xd6, 0xff}}},\n    {{{  1076,   -409,  -5119}, 0, {  4108,  -2894}, {0xac, 0x2a, 0x54, 0xff}}},\n};\n\n// 0x07019588 - 0x07019678\nstatic const Vtx hmc_seg7_vertex_07019588[] = {\n    {{{  1076,   -153,  -4633}, 0, {  1182,   1500}, {0x9b, 0xdf, 0xbd, 0xff}}},\n    {{{  1076,   -409,  -4300}, 0, {  2012,   2012}, {0xac, 0x54, 0xd6, 0xff}}},\n    {{{  1076,    614,  -4300}, 0, {  2012,      0}, {0x9b, 0xdf, 0xbd, 0xff}}},\n    {{{  1127,   -153,  -4633}, 0, {  1182,   1500}, {0x00, 0x8f, 0xc8, 0xff}}},\n    {{{  1127,   -409,  -4633}, 0, {  1182,   2012}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  1076,   -409,  -4633}, 0, {  1182,   2012}, {0xcd, 0x67, 0xcd, 0xff}}},\n    {{{  1076,   -409,  -5119}, 0, {     0,   2012}, {0xac, 0x2a, 0x54, 0xff}}},\n    {{{  1076,   -409,  -4786}, 0, {   798,   2012}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{  1076,   -153,  -4786}, 0, {   798,   1500}, {0x92, 0xc9, 0x1b, 0xff}}},\n    {{{  1127,   -409,  -4786}, 0, {   798,   2012}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  1127,   -153,  -4786}, 0, {   798,   1500}, {0x00, 0xc8, 0x71, 0xff}}},\n    {{{  1076,    614,  -5119}, 0, {     0,      0}, {0xac, 0xac, 0x2a, 0xff}}},\n    {{{ -2047,   3379,  -3276}, 0, {     0,      0}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -2047,   2355,  -2252}, 0, {  2522,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2047,   3379,  -2252}, 0, {  2522,      0}, {0xc8, 0x00, 0x8f, 0xff}}},\n};\n\n// 0x07019678 - 0x07019758\nstatic const Vtx hmc_seg7_vertex_07019678[] = {\n    {{{ -3583,   3379,  -3276}, 0, {     0,      0}, {0x69, 0x00, 0x46, 0xff}}},\n    {{{ -2047,   2355,  -3276}, 0, {  3800,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2047,   3379,  -3276}, 0, {  3800,      0}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -3583,   2355,  -3276}, 0, {     0,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2047,   3379,  -2252}, 0, {     0,      0}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -2047,   2355,  -2252}, 0, {     0,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -3583,   2355,  -2252}, 0, {  3800,   2012}, {0x65, 0x00, 0xb4, 0xff}}},\n    {{{ -3583,   3379,  -2252}, 0, {  3800,      0}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{ -2047,   3379,  -3276}, 0, {     0,      0}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -2047,   2355,  -3276}, 0, {     0,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2047,   2355,  -2252}, 0, {  2522,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -767,    614,  -4127}, 0, {  -880,      0}, {0x3e, 0x98, 0x24, 0xff}}},\n    {{{    52,    614,  -2764}, 0, {   480,      0}, {0xb6, 0xa4, 0xd5, 0xff}}},\n    {{{  -767,    614,  -3308}, 0, {   -62,      0}, {0x53, 0xa4, 0x15, 0xff}}},\n};\n\n// 0x07019758 - 0x07019848\nstatic const Vtx hmc_seg7_vertex_07019758[] = {\n    {{{ -3583,   2355,  -2252}, 0, {     0,  -3508}, {0x65, 0x00, 0xb4, 0xff}}},\n    {{{ -3583,   -409,  -2252}, 0, {     0,   2012}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{ -3583,   -409,  -3276}, 0, {  2012,   2012}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{ -3583,   2355,  -3276}, 0, {  2012,  -3508}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1076,    614,  -5119}, 0, { -1870,      0}, {0xac, 0xac, 0x2a, 0xff}}},\n    {{{   564,    614,  -4300}, 0, { -1052,      0}, {0xdc, 0x98, 0xc2, 0xff}}},\n    {{{   224,    614,  -5119}, 0, { -1870,      0}, {0x1a, 0xb7, 0x63, 0xff}}},\n    {{{  1076,    614,  -4300}, 0, { -1052,      0}, {0x9b, 0xdf, 0xbd, 0xff}}},\n    {{{  -767,    614,  -3308}, 0, {   -62,      0}, {0x53, 0xa4, 0x15, 0xff}}},\n    {{{    52,    614,  -2764}, 0, {   480,      0}, {0xb6, 0xa4, 0xd5, 0xff}}},\n    {{{  -459,    614,  -2252}, 0, {   990,      0}, {0xee, 0x98, 0xba, 0xff}}},\n    {{{  -799,    614,  -3276}, 0, {     0,      0}, {0x34, 0xb7, 0x59, 0xff}}},\n    {{{ -3583,   2355,  -2252}, 0, { -1562,   2012}, {0x65, 0x00, 0xb4, 0xff}}},\n    {{{ -3583,   2611,  -2687}, 0, {  -478,   1500}, {0x6e, 0xc9, 0xe5, 0xff}}},\n    {{{ -3583,   3379,  -2252}, 0, { -1562,      0}, {0x71, 0x00, 0xc8, 0xff}}},\n};\n\n// 0x07019848 - 0x07019938\nstatic const Vtx hmc_seg7_vertex_07019848[] = {\n    {{{  -767,    614,  -4127}, 0, {  -880,      0}, {0x3e, 0x98, 0x24, 0xff}}},\n    {{{    52,    614,  -3788}, 0, {  -542,      0}, {0x9d, 0xb7, 0xe6, 0xff}}},\n    {{{    52,    614,  -2764}, 0, {   480,      0}, {0xb6, 0xa4, 0xd5, 0xff}}},\n    {{{ -2047,    614,  -3276}, 0, {     0,      0}, {0xd6, 0xac, 0x54, 0xff}}},\n    {{{  -799,    614,  -3276}, 0, {     0,      0}, {0x34, 0xb7, 0x59, 0xff}}},\n    {{{  -459,    614,  -2252}, 0, {   990,      0}, {0xee, 0x98, 0xba, 0xff}}},\n    {{{ -2047,    614,  -2252}, 0, {   990,      0}, {0x99, 0xcd, 0xcd, 0xff}}},\n    {{{ -2047,   2355,  -3276}, 0, {     0,  -3304}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2047,   2355,  -2252}, 0, {   990,  -3304}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -3583,   2355,  -2252}, 0, { -1562,   2012}, {0x65, 0x00, 0xb4, 0xff}}},\n    {{{ -3583,   2355,  -2687}, 0, {  -478,   2012}, {0x33, 0x33, 0x99, 0xff}}},\n    {{{ -3583,   2611,  -2687}, 0, {  -478,   1500}, {0x6e, 0xc9, 0xe5, 0xff}}},\n    {{{ -3583,   3379,  -3276}, 0, {   990,      0}, {0x69, 0x00, 0x46, 0xff}}},\n    {{{ -3583,   3379,  -2252}, 0, { -1562,      0}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{ -3634,   2611,  -2687}, 0, {  -478,   1500}, {0x00, 0xc8, 0x8f, 0xff}}},\n};\n\n// 0x07019938 - 0x070199D8\nstatic const Vtx hmc_seg7_vertex_07019938[] = {\n    {{{ -3583,   2611,  -2687}, 0, {  -478,   1500}, {0x6e, 0xc9, 0xe5, 0xff}}},\n    {{{ -3634,   2611,  -2841}, 0, {   -94,   1500}, {0x00, 0x8f, 0x38, 0xff}}},\n    {{{ -3583,   2611,  -2841}, 0, {   -94,   1500}, {0x65, 0xdf, 0x43, 0xff}}},\n    {{{ -3583,   3379,  -3276}, 0, {   990,      0}, {0x69, 0x00, 0x46, 0xff}}},\n    {{{ -3634,   2611,  -2687}, 0, {  -478,   1500}, {0x00, 0xc8, 0x8f, 0xff}}},\n    {{{ -3583,   2355,  -2687}, 0, {  -478,   2012}, {0x33, 0x33, 0x99, 0xff}}},\n    {{{ -3634,   2355,  -2687}, 0, {  -478,   2012}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{ -3583,   2355,  -2841}, 0, {   -94,   2012}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{ -3634,   2355,  -2841}, 0, {   -94,   2012}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{ -3583,   2355,  -3276}, 0, {   990,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x070199D8 - 0x07019AD8\nstatic const Vtx hmc_seg7_vertex_070199D8[] = {\n    {{{  -459,    614,  -2252}, 0, {     0,      0}, {0xee, 0x98, 0xba, 0xff}}},\n    {{{  -459,   -409,  -2252}, 0, {     0,   2012}, {0xcc, 0x49, 0xa7, 0xff}}},\n    {{{ -2047,   -409,  -2252}, 0, {  3930,   2012}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{ -3583,   2355,  -3276}, 0, { -4566,  -3508}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3583,   -409,  -3276}, 0, { -4566,   2012}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{ -2047,   -409,  -3276}, 0, { -1500,   2012}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -2047,   2355,  -3276}, 0, { -1500,  -3508}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2047,    614,  -3276}, 0, { -1500,      0}, {0xd6, 0xac, 0x54, 0xff}}},\n    {{{  -799,   -409,  -3276}, 0, {   990,   2012}, {0x12, 0x68, 0x46, 0xff}}},\n    {{{ -2047,   2355,  -2252}, 0, {  3930,  -3508}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -3583,   -409,  -2252}, 0, {  7762,   2012}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{ -3583,   2355,  -2252}, 0, {  7762,  -3508}, {0x65, 0x00, 0xb4, 0xff}}},\n    {{{ -2047,    614,  -2252}, 0, {  3930,      0}, {0x99, 0xcd, 0xcd, 0xff}}},\n    {{{  -799,    614,  -3276}, 0, {     0,      0}, {0x34, 0xb7, 0x59, 0xff}}},\n    {{{  -767,   -409,  -3308}, 0, {    82,   2012}, {0x4a, 0x5c, 0x2b, 0xff}}},\n    {{{  -767,    614,  -3308}, 0, {    82,      0}, {0x53, 0xa4, 0x15, 0xff}}},\n};\n\n// 0x07019AD8 - 0x07019BC8\nstatic const Vtx hmc_seg7_vertex_07019AD8[] = {\n    {{{ -2047,    614,  -3276}, 0, { -1500,      0}, {0xd6, 0xac, 0x54, 0xff}}},\n    {{{  -799,   -409,  -3276}, 0, {   990,   2012}, {0x12, 0x68, 0x46, 0xff}}},\n    {{{  -799,    614,  -3276}, 0, {   990,      0}, {0x34, 0xb7, 0x59, 0xff}}},\n    {{{    52,    614,  -3788}, 0, { -2840,      0}, {0x9d, 0xb7, 0xe6, 0xff}}},\n    {{{    52,   -409,  -2764}, 0, {  -796,   2012}, {0xad, 0x5c, 0xeb, 0xff}}},\n    {{{    52,    614,  -2764}, 0, {  -796,      0}, {0xb6, 0xa4, 0xd5, 0xff}}},\n    {{{  -459,   -409,  -2252}, 0, {   990,   2012}, {0xcc, 0x49, 0xa7, 0xff}}},\n    {{{  -459,    614,  -2252}, 0, {   990,      0}, {0xee, 0x98, 0xba, 0xff}}},\n    {{{    52,   -409,  -3788}, 0, { -2840,   2012}, {0xb6, 0x5c, 0xd5, 0xff}}},\n    {{{  -799,    614,  -3276}, 0, {     0,      0}, {0x34, 0xb7, 0x59, 0xff}}},\n    {{{  -799,   -409,  -3276}, 0, {     0,   2012}, {0x12, 0x68, 0x46, 0xff}}},\n    {{{  -767,   -409,  -3308}, 0, {    82,   2012}, {0x4a, 0x5c, 0x2b, 0xff}}},\n    {{{   224,    614,  -5119}, 0, {  5014,      0}, {0x1a, 0xb7, 0x63, 0xff}}},\n    {{{   224,   -409,  -5119}, 0, {  5014,   2012}, {0x2b, 0x5c, 0x4a, 0xff}}},\n    {{{  1076,   -409,  -5119}, 0, {  6528,   2012}, {0xac, 0x2a, 0x54, 0xff}}},\n};\n\n// 0x07019BC8 - 0x07019CB8\nstatic const Vtx hmc_seg7_vertex_07019BC8[] = {\n    {{{  -767,    614,  -3308}, 0, {    82,      0}, {0x53, 0xa4, 0x15, 0xff}}},\n    {{{  -767,   -409,  -3308}, 0, {    82,   2012}, {0x4a, 0x5c, 0x2b, 0xff}}},\n    {{{  -767,   -409,  -4127}, 0, {  1514,   2012}, {0x53, 0x5c, 0x15, 0xff}}},\n    {{{  -767,    614,  -4127}, 0, {  1514,      0}, {0x3e, 0x98, 0x24, 0xff}}},\n    {{{   564,    614,  -4300}, 0, { -4628,      0}, {0xdc, 0x98, 0xc2, 0xff}}},\n    {{{    52,   -409,  -3788}, 0, { -2840,   2012}, {0xb6, 0x5c, 0xd5, 0xff}}},\n    {{{    52,    614,  -3788}, 0, { -2840,      0}, {0x9d, 0xb7, 0xe6, 0xff}}},\n    {{{   564,   -409,  -4300}, 0, { -4628,   2012}, {0xeb, 0x5c, 0xad, 0xff}}},\n    {{{   224,   -409,  -5119}, 0, {  5014,   2012}, {0x2b, 0x5c, 0x4a, 0xff}}},\n    {{{   224,    614,  -5119}, 0, {  5014,      0}, {0x1a, 0xb7, 0x63, 0xff}}},\n    {{{  1076,    614,  -4300}, 0, { -5396,      0}, {0x9b, 0xdf, 0xbd, 0xff}}},\n    {{{  1076,   -409,  -4300}, 0, { -5396,   2012}, {0xac, 0x54, 0xd6, 0xff}}},\n    {{{  -767,    614,  -4127}, 0, {     0,      0}, {0x3e, 0x98, 0x24, 0xff}}},\n    {{{   564,    614,  -4300}, 0, {   742,      0}, {0xdc, 0x98, 0xc2, 0xff}}},\n    {{{    52,    614,  -3788}, 0, {   216,      0}, {0x9d, 0xb7, 0xe6, 0xff}}},\n};\n\n// 0x07019CB8 - 0x07019D18\nstatic const Vtx hmc_seg7_vertex_07019CB8[] = {\n    {{{   224,    614,  -5119}, 0, {  5014,      0}, {0x1a, 0xb7, 0x63, 0xff}}},\n    {{{  1076,   -409,  -5119}, 0, {  6528,   2012}, {0xac, 0x2a, 0x54, 0xff}}},\n    {{{  1076,    614,  -5119}, 0, {  6528,      0}, {0xac, 0xac, 0x2a, 0xff}}},\n    {{{  -767,    614,  -4127}, 0, {     0,      0}, {0x3e, 0x98, 0x24, 0xff}}},\n    {{{   224,    614,  -5119}, 0, {   990,      0}, {0x1a, 0xb7, 0x63, 0xff}}},\n    {{{   564,    614,  -4300}, 0, {   742,      0}, {0xdc, 0x98, 0xc2, 0xff}}},\n};\n\n// 0x07019D18 - 0x07019DC8\nstatic const Gfx hmc_seg7_dl_07019D18[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09009800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&hmc_seg7_lights_07019430.l, 1),\n    gsSPLight(&hmc_seg7_lights_07019430.a, 2),\n    gsSPVertex(hmc_seg7_vertex_07019448, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 6,  8,  4, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 6,  9,  8, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(11, 10, 12, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(13, 12, 14, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07019548, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07019DC8 - 0x07019F70\nstatic const Gfx hmc_seg7_dl_07019DC8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_07019588, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  6,  8, 11, 0x0),\n    gsSP2Triangles( 8,  0,  2, 0x0,  8,  2, 11, 0x0),\n    gsSP2Triangles( 8,  3,  0, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle( 8, 10,  3, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07019678, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07019758, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07019848, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  6,  8, 0x0),\n    gsSP2Triangles( 7,  3,  6, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 10, 14, 11, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07019938, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  5,  6,  4, 0x0),\n    gsSP2Triangles( 7,  6,  5, 0x0,  2,  1,  8, 0x0),\n    gsSP2Triangles( 2,  7,  9, 0x0,  2,  9,  3, 0x0),\n    gsSP2Triangles( 2,  8,  7, 0x0,  7,  8,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07019F70 - 0x0701A080\nstatic const Gfx hmc_seg7_dl_07019F70[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_0900A800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_070199D8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  5,  8, 0x0),\n    gsSP2Triangles( 9,  2, 10, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07019AD8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 3,  8,  4, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07019BC8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 3,  2,  8, 0x0,  3,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  4, 0x0, 10, 11,  7, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07019CB8, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701A080 - 0x0701A150\nconst Gfx hmc_seg7_dl_0701A080[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_07019D18),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_07019DC8),\n    gsSPDisplayList(hmc_seg7_dl_07019F70),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/23/model.inc.c",
    "content": "// 0x0701A150 - 0x0701A240\nstatic const Vtx hmc_seg7_vertex_0701A150[] = {\n    {{{ -3583,   2253,  -3276}, 0, { -4118,  -7186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2559,   2253,  -2764}, 0, {   990,   3032}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3071,   2253,  -2764}, 0, {   990,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2559,   2355,  -2764}, 0, { -2074,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2559,   2253,  -2252}, 0, {  3034,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2559,   2355,  -2252}, 0, {  3034,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2559,   2253,  -2764}, 0, { -2074,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3583,   2355,  -2252}, 0, {  8144,  -5142}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3071,   2355,  -2252}, 0, {  3034,  -5142}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3071,   2355,  -2764}, 0, {  3034,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3583,   2355,  -3276}, 0, {  8144,   5076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2047,   2355,  -3276}, 0, { -7184,   5076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2559,   2355,  -2252}, 0, { -2074,  -5142}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2047,   2355,  -2252}, 0, { -7184,  -5142}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2047,   2253,  -3276}, 0, { -4118,   8142}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701A240 - 0x0701A340\nstatic const Vtx hmc_seg7_vertex_0701A240[] = {\n    {{{ -3071,   2253,  -2764}, 0, {   990,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3071,   2253,  -2252}, 0, {  6100,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3583,   2253,  -2252}, 0, {  6100,  -7186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3583,   2253,  -3276}, 0, { -4118,  -7186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2047,   2253,  -3276}, 0, { -4118,   8142}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2047,   2253,  -2252}, 0, {  6100,   8142}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2559,   2253,  -2764}, 0, {   990,   3032}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2559,   2253,  -2252}, 0, {  6100,   3032}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3071,   2355,  -2252}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3071,   2253,  -2764}, 0, {  5078,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3071,   2355,  -2764}, 0, {  5078,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3071,   2253,  -2252}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3071,   2355,  -2764}, 0, { -2074,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2559,   2253,  -2764}, 0, {  3034,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2559,   2355,  -2764}, 0, {  3034,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3071,   2253,  -2764}, 0, { -2074,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701A340 - 0x0701A400\nstatic const Gfx hmc_seg7_dl_0701A340[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_0701A150, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  9,  3, 11, 0x0),\n    gsSP2Triangles( 9, 11, 10, 0x0,  3, 12, 13, 0x0),\n    gsSP2Triangles( 3, 13, 11, 0x0,  0, 14,  1, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701A240, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701A400 - 0x0701A4B8\nconst Gfx hmc_seg7_dl_0701A400[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_0701A340),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/24/model.inc.c",
    "content": "// 0x0701A4B8 - 0x0701A4D0\nstatic const Lights1 hmc_seg7_lights_0701A4B8 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x0701A4D0 - 0x0701A4E8\nstatic const Lights1 hmc_seg7_lights_0701A4D0 = gdSPDefLights1(\n    0x79, 0x79, 0x79,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0701A4E8 - 0x0701A500\nstatic const Lights1 hmc_seg7_lights_0701A4E8 = gdSPDefLights1(\n    0x79, 0x00, 0x00,\n    0xff, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x0701A500 - 0x0701A518\nstatic const Lights1 hmc_seg7_lights_0701A500 = gdSPDefLights1(\n    0x51, 0x43, 0x26,\n    0xac, 0x8e, 0x52, 0x28, 0x28, 0x28\n);\n\n// 0x0701A518 - 0x0701A530\nstatic const Lights1 hmc_seg7_lights_0701A518 = gdSPDefLights1(\n    0x5a, 0x46, 0x1d,\n    0xbf, 0x94, 0x3f, 0x28, 0x28, 0x28\n);\n\n// 0x0701A530 - 0x0701A610\nstatic const Vtx hmc_seg7_vertex_0701A530[] = {\n    {{{   307,    614,  -6962}, 0, {   728,   1328}, {0xea, 0xaa, 0xa6, 0xff}}},\n    {{{   307,    614,  -7781}, 0, {   182,   1328}, {0xd4, 0xa0, 0x45, 0xff}}},\n    {{{  3738,    614,  -7781}, 0, {   132,   3612}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{ -1740,   1741,  -8114}, 0, {   -10,      0}, {0x21, 0x9b, 0x43, 0xff}}},\n    {{{  -204,   1741,  -8114}, 0, {     0,    990}, {0xbd, 0x9b, 0x21, 0xff}}},\n    {{{  -716,   1741,  -7602}, 0, {   316,    650}, {0xda, 0x8e, 0x26, 0xff}}},\n    {{{  -716,   1741,  -7090}, 0, {   656,    650}, {0xcd, 0x99, 0xcd, 0xff}}},\n    {{{  -204,   1741,  -6578}, 0, {   990,    990}, {0xa4, 0xc3, 0xc3, 0xff}}},\n    {{{ -1740,   1741,  -6578}, 0, {  1012,      0}, {0x37, 0x92, 0xe5, 0xff}}},\n    {{{ -1228,   1741,  -7090}, 0, {   664,    308}, {0x33, 0x99, 0xcd, 0xff}}},\n    {{{ -1228,   1741,  -7602}, 0, {   324,    308}, {0x3d, 0xa4, 0x3d, 0xff}}},\n    {{{  -204,    922,  -6839}, 0, {   816,    990}, {0x92, 0xd7, 0xd1, 0xff}}},\n    {{{  -204,    922,  -7904}, 0, {   108,    990}, {0x8c, 0xec, 0x2d, 0xff}}},\n    {{{  3738,    614,  -6962}, 0, {   678,   3612}, {0xda, 0xda, 0x8e, 0xff}}},\n};\n\n// 0x0701A610 - 0x0701A6F0\nstatic const Vtx hmc_seg7_vertex_0701A610[] = {\n    {{{  -204,   -409,  -6839}, 0, {   990,    134}, {0xc3, 0x63, 0xd0, 0xff}}},\n    {{{   307,   -409,  -7781}, 0, {  1330,   -492}, {0xf5, 0x4c, 0x64, 0xff}}},\n    {{{  -204,   -409,  -7904}, 0, {   990,   -574}, {0xac, 0x44, 0x42, 0xff}}},\n    {{{   307,   -409,  -6962}, 0, {  1330,     54}, {0xf5, 0x4c, 0x9c, 0xff}}},\n    {{{  3738,   -409,  -6962}, 0, {  3614,     54}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  3738,   -409,  -7781}, 0, {  3614,   -492}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  -716,   -409,  -7090}, 0, {   650,      0}, {0xdf, 0x65, 0xbd, 0xff}}},\n    {{{ -1740,   -409,  -6578}, 0, {     0,    308}, {0x1b, 0x6e, 0xc9, 0xff}}},\n    {{{  -204,   -409,  -6578}, 0, {   990,    308}, {0xbd, 0x65, 0xdf, 0xff}}},\n    {{{ -1228,   -409,  -7090}, 0, {   308,      0}, {0x54, 0x54, 0xd6, 0xff}}},\n    {{{ -1228,   -409,  -7602}, 0, {   308,   -372}, {0x1b, 0x6e, 0x37, 0xff}}},\n    {{{ -1740,   -409,  -8114}, 0, {     0,   -714}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{  -204,   -409,  -8114}, 0, {   990,   -714}, {0xc3, 0x5c, 0x3d, 0xff}}},\n    {{{  -716,   -409,  -7602}, 0, {   650,   -372}, {0xbd, 0x65, 0x21, 0xff}}},\n};\n\n// 0x0701A6F0 - 0x0701A7F0\nstatic const Vtx hmc_seg7_vertex_0701A6F0[] = {\n    {{{   574,  -4279,   5596}, 0, {  -330,  -2260}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1437,  -4279,   6283}, 0, {  1020,   -928}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1494,  -4279,   7665}, 0, {  2146,  -1432}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3845,  -4279,   2723}, 0, {  -860,   2414}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3845,  -4279,   4394}, 0, {   472,   1748}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3219,  -4279,   4394}, 0, {   222,   1248}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4367,  -4279,   3872}, 0, {   264,   2374}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2696,  -4279,   3872}, 0, {  -402,   1040}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4367,  -4279,   3245}, 0, {  -234,   2624}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2696,  -4279,   3245}, 0, {  -902,   1290}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3219,  -4279,   2723}, 0, { -1110,   1914}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -522,  -4279,   6765}, 0, {  1038,  -1850}, {0x3f, 0x59, 0xc1, 0xff}}},\n    {{{  -341,  -4279,   6511}, 0, {   764,  -1894}, {0xa6, 0x54, 0x1d, 0xff}}},\n    {{{  -558,  -4279,   6729}, 0, {  1024,  -1806}, {0x00, 0x49, 0x99, 0xff}}},\n    {{{  -305,  -4279,   6548}, 0, {   778,  -1936}, {0xc0, 0x59, 0x3e, 0xff}}},\n    {{{  -819,  -4279,   5665}, 0, {   280,  -1174}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0701A7F0 - 0x0701A8F0\nstatic const Vtx hmc_seg7_vertex_0701A7F0[] = {\n    {{{ -2764,   1843,  -5759}, 0, {   990,  -3098}, {0xea, 0x6b, 0xc1, 0xff}}},\n    {{{ -1740,   1843,  -6578}, 0, { -1052,  -1462}, {0xe7, 0x65, 0xb8, 0xff}}},\n    {{{ -3276,   1843,  -6783}, 0, {  2012,  -1054}, {0xe5, 0x6e, 0xc9, 0xff}}},\n    {{{  -665,  -4996,   2842}, 0, {   814,   1250}, {0xbf, 0x68, 0xe0, 0xff}}},\n    {{{   -50,  -4996,   2022}, 0, {   -60,   1134}, {0xc5, 0x60, 0xc7, 0xff}}},\n    {{{  -665,  -4996,   2330}, 0, {   376,   1396}, {0xc3, 0x68, 0xda, 0xff}}},\n    {{{   -50,  -4996,   2842}, 0, {   640,    902}, {0xd5, 0x6e, 0xd5, 0xff}}},\n    {{{   154,  -4689,   3046}, 0, {   756,    728}, {0xe1, 0x76, 0xe1, 0xff}}},\n    {{{  -460,  -4689,   3456}, 0, {  1282,    960}, {0xc3, 0x68, 0x26, 0xff}}},\n    {{{   563,  -4689,   3968}, 0, {  1428,    230}, {0x94, 0x3e, 0x13, 0xff}}},\n    {{{  -460,  -4689,   3046}, 0, {   932,   1076}, {0xd5, 0x6e, 0xd5, 0xff}}},\n    {{{   870,  -4689,   2739}, 0, {   290,    406}, {0xcd, 0x67, 0xcd, 0xff}}},\n    {{{   154,  -4689,   2125}, 0, {     0,    990}, {0xd3, 0x72, 0xe4, 0xff}}},\n    {{{   870,  -4689,   1920}, 0, {  -410,    640}, {0x99, 0x33, 0x33, 0xff}}},\n    {{{   563,  -4689,   1920}, 0, {  -322,    814}, {0xab, 0x5d, 0x0e, 0xff}}},\n    {{{ -3788,   1843,  -6783}, 0, {  3034,  -1054}, {0x37, 0x6e, 0xe5, 0xff}}},\n};\n\n// 0x0701A8F0 - 0x0701A9F0\nstatic const Vtx hmc_seg7_vertex_0701A8F0[] = {\n    {{{ -3788,   1843,  -6783}, 0, {  3034,  -1054}, {0x37, 0x6e, 0xe5, 0xff}}},\n    {{{ -4300,   1843,  -7295}, 0, {  4056,      0}, {0x2e, 0x73, 0xe9, 0xff}}},\n    {{{ -4300,   1843,  -5759}, 0, {  4056,  -3098}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{ -2764,   1843,  -5759}, 0, {   990,  -3098}, {0xea, 0x6b, 0xc1, 0xff}}},\n    {{{ -3788,   1843,  -7295}, 0, {  3034,      0}, {0x49, 0x49, 0x49, 0xff}}},\n    {{{ -2764,   1843,  -7807}, 0, {   990,    990}, {0x06, 0x6d, 0x40, 0xff}}},\n    {{{ -3276,   1843,  -7295}, 0, {  2012,      0}, {0xb7, 0x49, 0x49, 0xff}}},\n    {{{ -3276,   1843,  -6783}, 0, {  2012,  -1054}, {0xe5, 0x6e, 0xc9, 0xff}}},\n    {{{ -1740,   1843,  -6578}, 0, { -1052,  -1462}, {0xe7, 0x65, 0xb8, 0xff}}},\n    {{{ -4812,   1843,  -7807}, 0, {  5078,    990}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{ -4812,   1843,  -7295}, 0, {  5078,      0}, {0x54, 0x2a, 0xac, 0xff}}},\n    {{{  -204,   1843,  -6578}, 0, { -4118,  -1462}, {0xc9, 0x6e, 0xe5, 0xff}}},\n    {{{ -1228,   1843,  -7090}, 0, { -2074,   -440}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{ -1740,   1843,  -8114}, 0, { -1052,   1602}, {0x0e, 0x65, 0x4a, 0xff}}},\n    {{{  -716,   1843,  -7602}, 0, { -3096,    582}, {0xc3, 0x5c, 0x3d, 0xff}}},\n    {{{  -716,   1843,  -7090}, 0, { -3096,   -440}, {0xcd, 0x67, 0xcd, 0xff}}},\n};\n\n// 0x0701A9F0 - 0x0701AAE0\nstatic const Vtx hmc_seg7_vertex_0701A9F0[] = {\n    {{{ -4863,   1843,  -7474}, 0, {  5180,    326}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{ -4812,   1843,  -7628}, 0, {  5078,    632}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{ -4863,   1843,  -7628}, 0, {  5180,    632}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{ -4812,   1843,  -7474}, 0, {  5078,    326}, {0x33, 0x33, 0x99, 0xff}}},\n    {{{  -716,   -511,  -7602}, 0, {   990,    990}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{ -1228,   -511,  -7090}, 0, {     0,      0}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{  -716,   -511,  -7090}, 0, {     0,    990}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{ -1228,   -511,  -7602}, 0, {   990,      0}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{  -204,   1843,  -6578}, 0, { -4118,  -1462}, {0xc9, 0x6e, 0xe5, 0xff}}},\n    {{{  -716,   1843,  -7090}, 0, { -3096,   -440}, {0xcd, 0x67, 0xcd, 0xff}}},\n    {{{ -1228,   1843,  -7090}, 0, { -2074,   -440}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  -716,   1843,  -7602}, 0, { -3096,    582}, {0xc3, 0x5c, 0x3d, 0xff}}},\n    {{{  -204,   1843,  -8114}, 0, { -4118,   1602}, {0xdf, 0x65, 0x43, 0xff}}},\n    {{{ -1228,   1843,  -7602}, 0, { -2074,    582}, {0x26, 0x72, 0x26, 0xff}}},\n    {{{ -1740,   1843,  -8114}, 0, { -1052,   1602}, {0x0e, 0x65, 0x4a, 0xff}}},\n};\n\n// 0x0701AAE0 - 0x0701AB50\nstatic const Vtx hmc_seg7_vertex_0701AAE0[] = {\n    {{{ -3234,  -2559,  -6373}, 0, {  1256,    194}, {0xea, 0x7b, 0x13, 0xff}}},\n    {{{ -3110,  -2559,  -5877}, 0, {  2786,    560}, {0xd2, 0x75, 0xf0, 0xff}}},\n    {{{ -2764,  -2559,  -5759}, 0, {  3334,     88}, {0x9f, 0x4c, 0xe4, 0xff}}},\n    {{{ -2764,  -2559,  -7295}, 0, { -1172,  -1716}, {0xdf, 0x65, 0x43, 0xff}}},\n    {{{ -3670,  -2559,  -6539}, 0, {   514,    768}, {0xfa, 0x7b, 0x1b, 0xff}}},\n    {{{ -4300,  -2559,  -7295}, 0, { -2074,    990}, {0x3a, 0x65, 0x31, 0xff}}},\n    {{{ -4169,  -2559,  -6578}, 0, {   104,   1598}, {0x18, 0x70, 0x35, 0xff}}},\n};\n\n// 0x0701AB50 - 0x0701AC30\nstatic const Vtx hmc_seg7_vertex_0701AB50[] = {\n    {{{  -959,   2517,  -8094}, 0, {   480,    376}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -958,   2574,  -8094}, 0, {    70,    786}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -973,   2531,  -8094}, 0, {   480,    582}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -915,   2530,  -8094}, 0, {    70,    172}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1003,   2488,  -8094}, 0, {   990,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -937,   2494,  -8094}, 0, {   478,     70}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -994,   2553,  -8094}, 0, {   480,    888}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3593,   2488,  -7787}, 0, {   990,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3600,   2553,  -7787}, 0, {   478,     70}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3658,   2496,  -7787}, 0, {   480,    888}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3622,   2532,  -7787}, 0, {   480,    376}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3680,   2532,  -7787}, 0, {    70,    786}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3637,   2517,  -7787}, 0, {   480,    582}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3637,   2575,  -7787}, 0, {    70,    172}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0701AC30 - 0x0701AD30\nstatic const Vtx hmc_seg7_vertex_0701AC30[] = {\n    {{{ -3854,  -5017,  -2183}, 0, {   300,   2120}, {0x07, 0x77, 0x2a, 0xff}}},\n    {{{ -4469,  -4607,  -2797}, 0, {   622,   1920}, {0x0a, 0x6e, 0x3e, 0xff}}},\n    {{{ -4872,  -4607,  -2482}, 0, {   352,   1764}, {0x33, 0x70, 0x1a, 0xff}}},\n    {{{ -3345,  -5221,  -1146}, 0, {  -224,   2012}, {0xdf, 0x78, 0x12, 0xff}}},\n    {{{ -3848,  -5221,  -1049}, 0, {  -392,   1916}, {0x1c, 0x7b, 0x06, 0xff}}},\n    {{{ -4258,  -5017,  -1868}, 0, {    32,   1968}, {0x35, 0x72, 0x0c, 0xff}}},\n    {{{ -4787,  -4197,  -3434}, 0, {  1020,   1764}, {0xf7, 0x6b, 0x42, 0xff}}},\n    {{{ -5282,  -4197,  -3301}, 0, {   834,   1656}, {0x27, 0x71, 0x2a, 0xff}}},\n    {{{ -4453,  -3378,  -4851}, 0, {  2118,   1620}, {0xcc, 0x6f, 0x1f, 0xff}}},\n    {{{ -3738,  -2969,  -5560}, 0, {  2790,   1620}, {0xc4, 0x6f, 0x0a, 0xff}}},\n    {{{ -4053,  -2969,  -5964}, 0, {  2946,   1712}, {0xee, 0x71, 0x35, 0xff}}},\n    {{{ -3234,  -2559,  -6373}, 0, {  3472,   1628}, {0xea, 0x7b, 0x13, 0xff}}},\n    {{{ -3670,  -2559,  -6539}, 0, {  3468,   1628}, {0xfa, 0x7b, 0x1b, 0xff}}},\n    {{{ -4872,  -3378,  -5145}, 0, {  2190,   1664}, {0xfc, 0x71, 0x38, 0xff}}},\n    {{{ -4785,  -3788,  -4202}, 0, {  1566,   1688}, {0xda, 0x6b, 0x37, 0xff}}},\n    {{{ -5282,  -3788,  -4325}, 0, {  1524,   1664}, {0x0f, 0x71, 0x37, 0xff}}},\n};\n\n// 0x0701AD30 - 0x0701AE10\nstatic const Vtx hmc_seg7_vertex_0701AD30[] = {\n    {{{  -869,  -5303,   2227}, 0, {  1402,   1884}, {0x98, 0x46, 0xf0, 0xff}}},\n    {{{  -417,  -5303,   2001}, 0, {  1402,   1884}, {0xf3, 0x7b, 0xe7, 0xff}}},\n    {{{ -1975,  -5794,    444}, 0, {   572,   1272}, {0xec, 0x7a, 0x1a, 0xff}}},\n    {{{ -2201,  -6020,    896}, 0, {   572,    992}, {0xdb, 0x69, 0x3b, 0xff}}},\n    {{{ -3342,  -5773,    402}, 0, {    50,   1300}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{ -3137,  -5544,    -55}, 0, {   114,   1584}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{ -3835,  -5303,   -537}, 0, {  8052,   1884}, {0x00, 0x42, 0x6c, 0xff}}},\n    {{{ -3649,  -5636,    127}, 0, {  8104,   1468}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{ -3137,  -5544,    -55}, 0, {  8290,   1584}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{ -3342,  -5773,    402}, 0, {  8226,   1300}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{ -3325,  -5303,   -537}, 0, {  8214,   1884}, {0x00, 0x4f, 0x63, 0xff}}},\n    {{{ -3325,  -5221,   -537}, 0, {  9056,   1932}, {0xf5, 0x49, 0x66, 0xff}}},\n    {{{ -3835,  -5221,   -537}, 0, {  9298,   1932}, {0x0f, 0x43, 0x6a, 0xff}}},\n    {{{ -3835,  -5303,   -537}, 0, {  9290,   2012}, {0x00, 0x42, 0x6c, 0xff}}},\n};\n\n// 0x0701AE10 - 0x0701AE80\nstatic const Vtx hmc_seg7_vertex_0701AE10[] = {\n    {{{ -3848,  -5221,  -1049}, 0, {  -392,   1916}, {0x1c, 0x7b, 0x06, 0xff}}},\n    {{{ -3325,  -5221,   -537}, 0, {  -564,   1816}, {0xf5, 0x49, 0x66, 0xff}}},\n    {{{ -3345,  -5221,  -1146}, 0, {  -224,   2012}, {0xdf, 0x78, 0x12, 0xff}}},\n    {{{ -3325,  -5221,   -537}, 0, {  9056,   1932}, {0xf5, 0x49, 0x66, 0xff}}},\n    {{{ -3835,  -5303,   -537}, 0, {  9290,   2012}, {0x00, 0x42, 0x6c, 0xff}}},\n    {{{ -3325,  -5303,   -537}, 0, {  9066,   2012}, {0x00, 0x4f, 0x63, 0xff}}},\n    {{{ -3835,  -5221,   -537}, 0, {  -680,   1748}, {0x0f, 0x43, 0x6a, 0xff}}},\n};\n\n// 0x0701AE80 - 0x0701AF40\nstatic const Vtx hmc_seg7_vertex_0701AE80[] = {\n    {{{ -6176,  -1330,  -4548}, 0, {     0,   2012}, {0x78, 0xda, 0x05, 0xff}}},\n    {{{ -5627,   -921,  -5673}, 0, {   990,   2012}, {0x5b, 0xa8, 0x04, 0xff}}},\n    {{{ -3791,  -1330,  -3954}, 0, {   648,     -4}, {0xac, 0xc4, 0xb7, 0xff}}},\n    {{{ -3614,   -921,  -4264}, 0, {  1014,      0}, {0xdc, 0xb9, 0x9e, 0xff}}},\n    {{{ -4300,   -511,  -7295}, 0, {  -242,    260}, {0x77, 0xe1, 0x1d, 0xff}}},\n    {{{ -4300,   -511,  -5759}, 0, {   466,    900}, {0x28, 0x9a, 0xc2, 0xff}}},\n    {{{ -4620,   -511,  -6690}, 0, {   138,    280}, {0x59, 0xbd, 0x3c, 0xff}}},\n    {{{ -5627,   -921,  -5673}, 0, {   990,      0}, {0x5b, 0xa8, 0x04, 0xff}}},\n    {{{ -3107,   -511,  -4753}, 0, {   544,   2180}, {0xda, 0xab, 0xab, 0xff}}},\n    {{{ -3614,   -921,  -4264}, 0, {   990,   2012}, {0xdc, 0xb9, 0x9e, 0xff}}},\n    {{{ -2764,   -511,  -5759}, 0, {     0,   2012}, {0xce, 0x9b, 0xc8, 0xff}}},\n    {{{ -2862,   -511,  -4883}, 0, {   404,   2300}, {0x94, 0xd4, 0xd0, 0xff}}},\n};\n\n// 0x0701AF40 - 0x0701B040\nstatic const Vtx hmc_seg7_vertex_0701AF40[] = {\n    {{{ -3342,  -5773,    402}, 0, {  8226,   1300}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{ -3649,  -5636,    127}, 0, {  8104,   1468}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{ -4556,  -6327,   1510}, 0, {  7554,    608}, {0x05, 0x7b, 0x1e, 0xff}}},\n    {{{   563,  -5303,   1510}, 0, {  1404,   1884}, {0xa8, 0x58, 0xea, 0xff}}},\n    {{{ -1484,  -5303,   -537}, 0, {   572,   1884}, {0xe0, 0x22, 0x75, 0xff}}},\n    {{{ -1975,  -5794,    444}, 0, {   572,   1272}, {0xec, 0x7a, 0x1a, 0xff}}},\n    {{{ -3137,  -5544,    -55}, 0, {   114,   1584}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{ -3325,  -5303,   -537}, 0, {    38,   1884}, {0x00, 0x4f, 0x63, 0xff}}},\n    {{{ -3835,  -5303,   -537}, 0, {  8052,   1884}, {0x00, 0x42, 0x6c, 0xff}}},\n    {{{ -5580,  -5303,   -537}, 0, {  7548,   1884}, {0x16, 0x3e, 0x6c, 0xff}}},\n    {{{ -5580,  -6327,   2534}, 0, {  6720,    608}, {0x18, 0x7c, 0x09, 0xff}}},\n    {{{ -7628,  -5303,   1510}, 0, {  6712,   1884}, {0x6d, 0x2f, 0x2c, 0xff}}},\n    {{{ -2508,  -6327,   1510}, 0, {  8748,    608}, {0xf3, 0x7a, 0x20, 0xff}}},\n    {{{ -2508,  -6327,   1510}, 0, {   572,    608}, {0xf3, 0x7a, 0x20, 0xff}}},\n    {{{ -1484,  -6327,   2534}, 0, {  1400,    608}, {0xea, 0x7c, 0x05, 0xff}}},\n    {{{  -869,  -6020,   2227}, 0, {  1402,    992}, {0xab, 0x54, 0x28, 0xff}}},\n};\n\n// 0x0701B040 - 0x0701B120\nstatic const Vtx hmc_seg7_vertex_0701B040[] = {\n    {{{ -2508,  -6327,   1510}, 0, {   572,    608}, {0xf3, 0x7a, 0x20, 0xff}}},\n    {{{  -869,  -6020,   2227}, 0, {  1402,    992}, {0xab, 0x54, 0x28, 0xff}}},\n    {{{ -2201,  -6020,    896}, 0, {   572,    992}, {0xdb, 0x69, 0x3b, 0xff}}},\n    {{{ -3342,  -5773,    402}, 0, {    50,   1300}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{ -3835,  -5221,   -537}, 0, {  9298,   1932}, {0x0f, 0x43, 0x6a, 0xff}}},\n    {{{ -5580,  -5303,   -537}, 0, { 10058,   2012}, {0x16, 0x3e, 0x6c, 0xff}}},\n    {{{ -3835,  -5303,   -537}, 0, {  9290,   2012}, {0x00, 0x42, 0x6c, 0xff}}},\n    {{{ -4447,  -4914,   -537}, 0, {  9582,   1624}, {0x3f, 0x53, 0x47, 0xff}}},\n    {{{  -869,  -6020,   3661}, 0, {  2050,    992}, {0x9b, 0x48, 0x18, 0xff}}},\n    {{{  -869,  -6020,   2227}, 0, {  1402,    988}, {0xab, 0x54, 0x28, 0xff}}},\n    {{{ -1484,  -6327,   2534}, 0, {  1400,    608}, {0xea, 0x7c, 0x05, 0xff}}},\n    {{{ -7628,  -5303,   1510}, 0, { 11318,   2012}, {0x6d, 0x2f, 0x2c, 0xff}}},\n    {{{ -5580,  -3255,   -537}, 0, { 10058,      0}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{ -4753,  -4402,   -537}, 0, {  9718,   1112}, {0x60, 0x1a, 0x4d, 0xff}}},\n};\n\n// 0x0701B120 - 0x0701B220\nstatic const Vtx hmc_seg7_vertex_0701B120[] = {\n    {{{ -3325,  -5221,   -537}, 0, {  9056,   1932}, {0xf5, 0x49, 0x66, 0xff}}},\n    {{{ -3325,  -5303,   -537}, 0, {  9066,   2012}, {0x00, 0x4f, 0x63, 0xff}}},\n    {{{ -1484,  -5303,   -537}, 0, {  8254,   2012}, {0xe0, 0x22, 0x75, 0xff}}},\n    {{{ -2712,  -4914,   -537}, 0, {  8770,   1624}, {0xc5, 0x55, 0x49, 0xff}}},\n    {{{ -2303,  -4402,   -537}, 0, {  8588,   1112}, {0xa5, 0x20, 0x51, 0xff}}},\n    {{{ -1484,  -3255,   -537}, 0, {  8254,      0}, {0xe0, 0x00, 0x7a, 0xff}}},\n    {{{ -1484,  -6327,   4582}, 0, {  2600,    608}, {0xdc, 0x78, 0xf2, 0xff}}},\n    {{{  -869,  -6020,   3661}, 0, {  2050,    992}, {0x9b, 0x48, 0x18, 0xff}}},\n    {{{ -1484,  -6327,   2534}, 0, {  1400,    608}, {0xea, 0x7c, 0x05, 0xff}}},\n    {{{   870,  -4689,   2406}, 0, {  6602,   1400}, {0xcd, 0x67, 0xcd, 0xff}}},\n    {{{   922,  -4689,   2406}, 0, {  6596,   1400}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{   922,  -4689,   2253}, 0, {  6658,   1400}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{   870,  -4689,   2253}, 0, {  6664,   1400}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{  -417,  -5303,   2001}, 0, {  1402,   1884}, {0xf3, 0x7b, 0xe7, 0xff}}},\n    {{{   563,  -5303,   1510}, 0, {  1404,   1884}, {0xa8, 0x58, 0xea, 0xff}}},\n    {{{ -1975,  -5794,    444}, 0, {   572,   1272}, {0xec, 0x7a, 0x1a, 0xff}}},\n};\n\n// 0x0701B220 - 0x0701B320\nstatic const Vtx hmc_seg7_vertex_0701B220[] = {\n    {{{ -1996,  -6327,   4378}, 0, {  2628,    608}, {0x28, 0x77, 0x10, 0xff}}},\n    {{{ -1484,  -6327,   4582}, 0, {  2600,    608}, {0xdc, 0x78, 0xf2, 0xff}}},\n    {{{ -1484,  -6327,   2534}, 0, {  1400,    608}, {0xea, 0x7c, 0x05, 0xff}}},\n    {{{ -2508,  -6327,   5606}, 0, {  3440,    608}, {0xf5, 0x7b, 0xe5, 0xff}}},\n    {{{  -815,  -5740,   5676}, 0, {  2862,   1340}, {0xcb, 0x47, 0xa6, 0xff}}},\n    {{{   563,  -5303,   5606}, 0, {  2608,   1884}, {0xb3, 0x30, 0xa8, 0xff}}},\n    {{{ -1427,  -5740,   6288}, 0, {  3192,   1340}, {0xaa, 0x46, 0xc3, 0xff}}},\n    {{{   563,  -5303,   4378}, 0, {  2260,   1884}, {0xaf, 0x49, 0x3f, 0xff}}},\n    {{{  -869,  -6020,   3661}, 0, {  2050,    992}, {0x9b, 0x48, 0x18, 0xff}}},\n    {{{   563,  -3255,   1510}, 0, {  7004,      0}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{   563,  -5303,   1510}, 0, {  7004,   2012}, {0xa8, 0x58, 0xea, 0xff}}},\n    {{{   563,  -4689,   1920}, 0, {  6844,   1400}, {0xab, 0x5d, 0x0e, 0xff}}},\n    {{{   563,  -3972,   1920}, 0, {  6844,    684}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{   563,  -3972,   2739}, 0, {  6488,    684}, {0x99, 0xcd, 0xcd, 0xff}}},\n    {{{   563,  -3255,   5606}, 0, {  5204,      0}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{   563,  -4689,   3968}, 0, {  5912,   1400}, {0x94, 0x3e, 0x13, 0xff}}},\n};\n\n// 0x0701B320 - 0x0701B400\nstatic const Vtx hmc_seg7_vertex_0701B320[] = {\n    {{{   563,  -3972,   2739}, 0, {  6488,    684}, {0x99, 0xcd, 0xcd, 0xff}}},\n    {{{   563,  -4689,   2739}, 0, {  6488,   1400}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   563,  -4689,   3968}, 0, {  5912,   1400}, {0x94, 0x3e, 0x13, 0xff}}},\n    {{{   563,  -5303,   5606}, 0, {  5204,   2012}, {0xb3, 0x30, 0xa8, 0xff}}},\n    {{{   563,  -3255,   5606}, 0, {  5204,      0}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{   563,  -5303,   4378}, 0, {  5722,   2012}, {0xaf, 0x49, 0x3f, 0xff}}},\n    {{{  -341,  -4023,   6511}, 0, {  4654,    736}, {0x94, 0xda, 0xca, 0xff}}},\n    {{{  -558,  -4023,   6729}, 0, {  4516,    736}, {0xdc, 0xcd, 0x93, 0xff}}},\n    {{{ -1484,  -3255,   7654}, 0, {  3952,      0}, {0xc0, 0x00, 0x93, 0xff}}},\n    {{{   563,  -4279,   5606}, 0, {  5204,    988}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -3345,  -5221,  -1146}, 0, {  1672,   1392}, {0xdf, 0x78, 0x12, 0xff}}},\n    {{{ -3325,  -5221,   -537}, 0, {  1880,    976}, {0xf5, 0x49, 0x66, 0xff}}},\n    {{{ -2712,  -4914,   -537}, 0, {  1662,   1132}, {0xc5, 0x55, 0x49, 0xff}}},\n    {{{ -2742,  -4914,  -1264}, 0, {  1418,   1624}, {0xae, 0x5c, 0x1b, 0xff}}},\n};\n\n// 0x0701B400 - 0x0701B500\nstatic const Vtx hmc_seg7_vertex_0701B400[] = {\n    {{{ -3835,  -5221,   -537}, 0, {   -38,   1700}, {0x0f, 0x43, 0x6a, 0xff}}},\n    {{{ -3848,  -5221,  -1049}, 0, {   258,   1852}, {0x1c, 0x7b, 0x06, 0xff}}},\n    {{{ -4447,  -4914,   -537}, 0, {   -12,   1452}, {0x3f, 0x53, 0x47, 0xff}}},\n    {{{ -2303,  -4402,   -537}, 0, {  1518,    956}, {0xa5, 0x20, 0x51, 0xff}}},\n    {{{ -2303,  -3255,   -537}, 0, {  1518,    -84}, {0xa9, 0x00, 0x5b, 0xff}}},\n    {{{ -2340,  -2764,  -1342}, 0, {  1248,     12}, {0x85, 0x00, 0x1f, 0xff}}},\n    {{{ -4451,  -4914,   -931}, 0, {   218,   1572}, {0x58, 0x5b, 0xfb, 0xff}}},\n    {{{ -4753,  -4402,   -537}, 0, {    46,   1052}, {0x60, 0x1a, 0x4d, 0xff}}},\n    {{{ -4753,  -4402,   -873}, 0, {   242,   1152}, {0x76, 0x21, 0xe1, 0xff}}},\n    {{{ -4753,  -2764,   -873}, 0, {   438,   -116}, {0x7d, 0x00, 0xec, 0xff}}},\n    {{{ -4753,  -3255,   -537}, 0, {   184,    164}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2712,  -4914,   -537}, 0, {  1662,   1132}, {0xc5, 0x55, 0x49, 0xff}}},\n    {{{ -2742,  -4914,  -1264}, 0, {  1418,   1624}, {0xae, 0x5c, 0x1b, 0xff}}},\n    {{{ -2340,  -4402,  -1342}, 0, {  1248,   1496}, {0x8d, 0x29, 0x1f, 0xff}}},\n    {{{ -4984,  -4197,  -1300}, 0, {   512,   1120}, {0x6a, 0x21, 0xc4, 0xff}}},\n    {{{ -4984,  -2559,  -1300}, 0, {   710,   -152}, {0x65, 0x00, 0xb5, 0xff}}},\n};\n\n// 0x0701B500 - 0x0701B5F0\nstatic const Vtx hmc_seg7_vertex_0701B500[] = {\n    {{{ -4258,  -5017,  -1868}, 0, {   754,   1936}, {0x35, 0x72, 0x0c, 0xff}}},\n    {{{ -4742,  -4709,  -1490}, 0, {   564,   1576}, {0x5d, 0x51, 0xe5, 0xff}}},\n    {{{ -4451,  -4914,   -931}, 0, {   218,   1572}, {0x58, 0x5b, 0xfb, 0xff}}},\n    {{{ -4984,  -4197,  -1300}, 0, {   512,   1120}, {0x6a, 0x21, 0xc4, 0xff}}},\n    {{{ -4753,  -4402,   -873}, 0, {   242,   1152}, {0x76, 0x21, 0xe1, 0xff}}},\n    {{{ -5598,  -3788,  -1915}, 0, {   910,    980}, {0x69, 0x1c, 0xc0, 0xff}}},\n    {{{ -5356,  -4300,  -2104}, 0, {   962,   1436}, {0x59, 0x58, 0xef, 0xff}}},\n    {{{ -6172,  -3378,  -3063}, 0, {  1622,   1000}, {0x79, 0x21, 0xef, 0xff}}},\n    {{{ -5875,  -3890,  -3142}, 0, {  1610,   1424}, {0x5a, 0x58, 0x0c, 0xff}}},\n    {{{ -4872,  -4607,  -2482}, 0, {  1152,   1796}, {0x33, 0x70, 0x1a, 0xff}}},\n    {{{ -4984,  -2559,  -1300}, 0, {   710,   -152}, {0x65, 0x00, 0xb5, 0xff}}},\n    {{{ -5598,  -2149,  -1915}, 0, {  1108,   -292}, {0x67, 0x00, 0xb6, 0xff}}},\n    {{{ -6172,  -1740,  -3063}, 0, {  1820,   -272}, {0x78, 0x00, 0xda, 0xff}}},\n    {{{ -3848,  -5221,  -1049}, 0, {   258,   1852}, {0x1c, 0x7b, 0x06, 0xff}}},\n    {{{ -5282,  -4197,  -3301}, 0, {  1674,   1716}, {0x27, 0x71, 0x2a, 0xff}}},\n};\n\n// 0x0701B5F0 - 0x0701B6F0\nstatic const Vtx hmc_seg7_vertex_0701B5F0[] = {\n    {{{ -3370,  -4709,  -2561}, 0, {  1180,   1908}, {0xd9, 0x65, 0x41, 0xff}}},\n    {{{ -3854,  -5017,  -2183}, 0, {  1484,   1580}, {0x07, 0x77, 0x2a, 0xff}}},\n    {{{ -3345,  -5221,  -1146}, 0, {  1672,   1392}, {0xdf, 0x78, 0x12, 0xff}}},\n    {{{ -2742,  -4914,  -1264}, 0, {  1418,   1624}, {0xae, 0x5c, 0x1b, 0xff}}},\n    {{{ -3047,  -4197,  -2813}, 0, {   978,   1852}, {0xa7, 0x2f, 0x4c, 0xff}}},\n    {{{ -3984,  -4300,  -3176}, 0, {  1180,   1536}, {0xe4, 0x56, 0x58, 0xff}}},\n    {{{ -4469,  -4607,  -2797}, 0, {  1484,   1208}, {0x0a, 0x6e, 0x3e, 0xff}}},\n    {{{ -3662,  -3788,  -3428}, 0, {   978,   1480}, {0xb4, 0x24, 0x5e, 0xff}}},\n    {{{ -4194,  -3890,  -3593}, 0, {  1108,   1312}, {0xcf, 0x51, 0x53, 0xff}}},\n    {{{ -4787,  -4197,  -3434}, 0, {  1372,   1060}, {0xf7, 0x6b, 0x42, 0xff}}},\n    {{{ -3047,  -2559,  -2813}, 0, {   978,    364}, {0x9d, 0x00, 0x4f, 0xff}}},\n    {{{ -2340,  -2764,  -1342}, 0, {  1248,     12}, {0x85, 0x00, 0x1f, 0xff}}},\n    {{{ -2340,  -4402,  -1342}, 0, {  1248,   1496}, {0x8d, 0x29, 0x1f, 0xff}}},\n    {{{ -3662,  -2149,  -3428}, 0, {   978,     -8}, {0x96, 0x00, 0x44, 0xff}}},\n    {{{ -3798,  -3378,  -3699}, 0, {   930,   1204}, {0x99, 0x21, 0x42, 0xff}}},\n    {{{ -3798,  -1740,  -3699}, 0, {   930,   -284}, {0x83, 0x00, 0x11, 0xff}}},\n};\n\n// 0x0701B6F0 - 0x0701B7E0\nstatic const Vtx hmc_seg7_vertex_0701B6F0[] = {\n    {{{ -4753,  -4402,   -873}, 0, {   242,   1152}, {0x76, 0x21, 0xe1, 0xff}}},\n    {{{ -4984,  -2559,  -1300}, 0, {   710,   -152}, {0x65, 0x00, 0xb5, 0xff}}},\n    {{{ -4753,  -2764,   -873}, 0, {   438,   -116}, {0x7d, 0x00, 0xec, 0xff}}},\n    {{{ -1484,  -3255,   -537}, 0, {  8254,      0}, {0xe0, 0x00, 0x7a, 0xff}}},\n    {{{ -2303,  -3255,   -537}, 0, {  8588,      0}, {0xa9, 0x00, 0x5b, 0xff}}},\n    {{{ -2303,  -4402,   -537}, 0, {  8588,   1112}, {0xa5, 0x20, 0x51, 0xff}}},\n    {{{ -4753,  -4402,   -537}, 0, {  9718,   1112}, {0x60, 0x1a, 0x4d, 0xff}}},\n    {{{ -4753,  -3255,   -537}, 0, {  9718,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -5580,  -3255,   -537}, 0, { 10058,      0}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{ -7628,  -5303,   1510}, 0, { 11318,   2012}, {0x6d, 0x2f, 0x2c, 0xff}}},\n    {{{ -7628,  -3255,   1510}, 0, { 11318,      0}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{ -4300,   1741,  -7295}, 0, {  2650,  -2280}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{ -3788,   1741,  -6783}, 0, {  2650,  -2280}, {0x1b, 0x92, 0xc9, 0xff}}},\n    {{{ -4300,   1741,  -5759}, 0, {  3446,  -2280}, {0x54, 0xac, 0xd6, 0xff}}},\n    {{{ -3788,   1741,  -7295}, 0, {  2406,  -2280}, {0x54, 0xd6, 0x54, 0xff}}},\n};\n\n// 0x0701B7E0 - 0x0701B8D0\nstatic const Vtx hmc_seg7_vertex_0701B7E0[] = {\n    {{{ -3788,   1741,  -6783}, 0, {  2650,  -2280}, {0x1b, 0x92, 0xc9, 0xff}}},\n    {{{ -3276,   1741,  -6783}, 0, {  1802,  -2280}, {0xbd, 0x9b, 0xdf, 0xff}}},\n    {{{ -2764,   1741,  -5759}, 0, {  1118,  -2280}, {0xdf, 0x9b, 0xbd, 0xff}}},\n    {{{ -4300,   1741,  -5759}, 0, {  3446,  -2280}, {0x54, 0xac, 0xd6, 0xff}}},\n    {{{ -2764,   1741,  -7295}, 0, {  1856,  -2280}, {0xac, 0xac, 0x2a, 0xff}}},\n    {{{ -3276,   1741,  -7295}, 0, {  2076,  -2280}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{ -7628,  -3255,   5606}, 0, { 13136,      0}, {0x7a, 0x00, 0xe0, 0xff}}},\n    {{{ -7628,  -5303,   5606}, 0, { 13136,   2012}, {0x5f, 0x46, 0xd3, 0xff}}},\n    {{{ -7628,  -5303,   1510}, 0, { 11318,   2012}, {0x6d, 0x2f, 0x2c, 0xff}}},\n    {{{ -7628,  -3255,   1510}, 0, { 11318,      0}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{ -5580,  -3255,   7654}, 0, {  2136,      0}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{ -5580,  -5303,   7654}, 0, {  2136,   2012}, {0x21, 0x5b, 0xaf, 0xff}}},\n    {{{ -7628,  -5303,   5606}, 0, {   872,   2012}, {0x5f, 0x46, 0xd3, 0xff}}},\n    {{{ -7628,  -3255,   5606}, 0, {   872,      0}, {0x7a, 0x00, 0xe0, 0xff}}},\n    {{{ -1484,  -5303,   7654}, 0, {  3952,   2012}, {0xa8, 0x30, 0xb3, 0xff}}},\n};\n\n// 0x0701B8D0 - 0x0701B9D0\nstatic const Vtx hmc_seg7_vertex_0701B8D0[] = {\n    {{{ -7628,  -5303,   5606}, 0, {  5502,   1884}, {0x5f, 0x46, 0xd3, 0xff}}},\n    {{{ -5580,  -6327,   2534}, 0, {  6720,    608}, {0x18, 0x7c, 0x09, 0xff}}},\n    {{{ -7628,  -5303,   1510}, 0, {  6712,   1884}, {0x6d, 0x2f, 0x2c, 0xff}}},\n    {{{ -5580,  -5303,   7654}, 0, {  4660,   1884}, {0x21, 0x5b, 0xaf, 0xff}}},\n    {{{ -5580,  -6327,   4582}, 0, {  5506,    608}, {0x1b, 0x7a, 0xf1, 0xff}}},\n    {{{ -4556,  -6327,   5606}, 0, {  4660,    608}, {0x06, 0x7d, 0xf0, 0xff}}},\n    {{{ -2508,  -6327,   5606}, 0, {  3440,    608}, {0xf5, 0x7b, 0xe5, 0xff}}},\n    {{{ -1484,  -5303,   7654}, 0, {  3446,   1884}, {0xa8, 0x30, 0xb3, 0xff}}},\n    {{{ -2713,  -6327,   2022}, 0, {   606,    608}, {0x10, 0x77, 0xd8, 0xff}}},\n    {{{ -1996,  -6327,   2739}, 0, {  1362,    608}, {0x53, 0x59, 0xdf, 0xff}}},\n    {{{ -1484,  -6327,   2534}, 0, {  1400,    608}, {0xea, 0x7c, 0x05, 0xff}}},\n    {{{ -1996,  -6327,   4378}, 0, {  2628,    608}, {0x28, 0x77, 0x10, 0xff}}},\n    {{{ -2508,  -6327,   1510}, 0, {   572,    608}, {0xf3, 0x7a, 0x20, 0xff}}},\n    {{{ -4556,  -6327,   1510}, 0, {  7554,    608}, {0x05, 0x7b, 0x1e, 0xff}}},\n    {{{ -2713,  -6327,   2022}, 0, {  8782,    608}, {0x10, 0x77, 0xd8, 0xff}}},\n    {{{ -2508,  -6327,   1510}, 0, {  8748,    608}, {0xf3, 0x7a, 0x20, 0xff}}},\n};\n\n// 0x0701B9D0 - 0x0701BAC0\nstatic const Vtx hmc_seg7_vertex_0701B9D0[] = {\n    {{{ -5580,  -6327,   2534}, 0, {  6720,    608}, {0x18, 0x7c, 0x09, 0xff}}},\n    {{{ -4351,  -6327,   2022}, 0, {  7524,    608}, {0xef, 0x6a, 0xbe, 0xff}}},\n    {{{ -4556,  -6327,   1510}, 0, {  7554,    608}, {0x05, 0x7b, 0x1e, 0xff}}},\n    {{{ -2713,  -6327,   2022}, 0, {  8782,    608}, {0x10, 0x77, 0xd8, 0xff}}},\n    {{{ -5068,  -6327,   2739}, 0, {  6758,    608}, {0xba, 0x61, 0xd8, 0xff}}},\n    {{{ -5580,  -6327,   4582}, 0, {  5506,    608}, {0x1b, 0x7a, 0xf1, 0xff}}},\n    {{{ -5068,  -6327,   4378}, 0, {  5474,    608}, {0xc2, 0x6b, 0x19, 0xff}}},\n    {{{ -1427,  -4290,   6288}, 0, {  4332,   1000}, {0x87, 0x00, 0xdd, 0xff}}},\n    {{{ -1484,  -5303,   7654}, 0, {  3952,   2012}, {0xa8, 0x30, 0xb3, 0xff}}},\n    {{{ -1484,  -4290,   7654}, 0, {  3952,   1000}, {0x82, 0x00, 0xfb, 0xff}}},\n    {{{ -4556,  -6327,   5606}, 0, {  4660,    608}, {0x06, 0x7d, 0xf0, 0xff}}},\n    {{{ -4351,  -6327,   5094}, 0, {  4694,    608}, {0xec, 0x60, 0x50, 0xff}}},\n    {{{ -2713,  -6327,   5094}, 0, {  3400,    608}, {0x21, 0x6b, 0x3a, 0xff}}},\n    {{{ -2508,  -6327,   5606}, 0, {  3440,    608}, {0xf5, 0x7b, 0xe5, 0xff}}},\n    {{{ -1996,  -6327,   4378}, 0, {  2628,    608}, {0x28, 0x77, 0x10, 0xff}}},\n};\n\n// 0x0701BAC0 - 0x0701BBC0\nstatic const Vtx hmc_seg7_vertex_0701BAC0[] = {\n    {{{ -2508,  -6327,   5606}, 0, {  3440,    608}, {0xf5, 0x7b, 0xe5, 0xff}}},\n    {{{ -1484,  -5303,   7654}, 0, {  3446,   1884}, {0xa8, 0x30, 0xb3, 0xff}}},\n    {{{ -1427,  -5740,   6288}, 0, {  3192,   1340}, {0xaa, 0x46, 0xc3, 0xff}}},\n    {{{ -1484,  -5303,   7654}, 0, {  3952,   2012}, {0xa8, 0x30, 0xb3, 0xff}}},\n    {{{ -5580,  -3255,   7654}, 0, {  2136,      0}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{ -1484,  -3255,   7654}, 0, {  3952,      0}, {0xc0, 0x00, 0x93, 0xff}}},\n    {{{ -1427,  -4290,   6288}, 0, {  4332,   1000}, {0x87, 0x00, 0xdd, 0xff}}},\n    {{{ -1427,  -5303,   6288}, 0, {  4332,   2012}, {0x91, 0x00, 0xc5, 0xff}}},\n    {{{  -558,  -4023,   6729}, 0, {  4516,    736}, {0xdc, 0xcd, 0x93, 0xff}}},\n    {{{ -1484,  -4279,   7654}, 0, {  3952,    988}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1427,  -5303,   6288}, 0, {  3192,   1884}, {0x91, 0x00, 0xc5, 0xff}}},\n    {{{   563,  -4279,   5606}, 0, {  5204,    988}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -341,  -4279,   6511}, 0, {  4654,    988}, {0xa6, 0x54, 0x1d, 0xff}}},\n    {{{  -341,  -4023,   6511}, 0, {  4654,    736}, {0x94, 0xda, 0xca, 0xff}}},\n    {{{  -558,  -4279,   6729}, 0, {  4516,    988}, {0x00, 0x49, 0x99, 0xff}}},\n    {{{  -305,  -4023,   6548}, 0, {  4654,    736}, {0xc0, 0xa7, 0x3e, 0xff}}},\n};\n\n// 0x0701BBC0 - 0x0701BCC0\nstatic const Vtx hmc_seg7_vertex_0701BBC0[] = {\n    {{{  -558,  -4023,   6729}, 0, {  4516,    736}, {0xdc, 0xcd, 0x93, 0xff}}},\n    {{{  -305,  -4023,   6548}, 0, {  4654,    736}, {0xc0, 0xa7, 0x3e, 0xff}}},\n    {{{  -522,  -4023,   6765}, 0, {  4518,    736}, {0x3f, 0xa7, 0xc1, 0xff}}},\n    {{{ -2354,  -5303,   4122}, 0, {  2564,   1884}, {0x69, 0x31, 0x32, 0xff}}},\n    {{{ -1996,  -6327,   2739}, 0, {  1362,    608}, {0x53, 0x59, 0xdf, 0xff}}},\n    {{{ -2354,  -5303,   2995}, 0, {  1414,   1884}, {0x6c, 0x31, 0xd4, 0xff}}},\n    {{{  -341,  -4023,   6511}, 0, {  4654,    736}, {0x94, 0xda, 0xca, 0xff}}},\n    {{{  -341,  -4279,   6511}, 0, {  4654,    988}, {0xa6, 0x54, 0x1d, 0xff}}},\n    {{{  -305,  -4279,   6548}, 0, {  4654,    988}, {0xc0, 0x59, 0x3e, 0xff}}},\n    {{{  -522,  -4279,   6765}, 0, {  4518,    992}, {0x3f, 0x59, 0xc1, 0xff}}},\n    {{{  -558,  -4279,   6729}, 0, {  4516,    988}, {0x00, 0x49, 0x99, 0xff}}},\n    {{{ -2969,  -5303,   2381}, 0, {   548,   1884}, {0x2c, 0x31, 0x94, 0xff}}},\n    {{{ -2713,  -6327,   2022}, 0, {   606,    608}, {0x10, 0x77, 0xd8, 0xff}}},\n    {{{ -4709,  -5303,   4122}, 0, {  5538,   1884}, {0x90, 0x30, 0x23, 0xff}}},\n    {{{ -5068,  -6327,   4378}, 0, {  5474,    608}, {0xc2, 0x6b, 0x19, 0xff}}},\n    {{{ -4095,  -5303,   4736}, 0, {  4636,   1884}, {0xc6, 0x31, 0x65, 0xff}}},\n};\n\n// 0x0701BCC0 - 0x0701BDC0\nstatic const Vtx hmc_seg7_vertex_0701BCC0[] = {\n    {{{ -2354,  -5303,   4122}, 0, {  2564,   1884}, {0x69, 0x31, 0x32, 0xff}}},\n    {{{ -1996,  -6327,   4378}, 0, {  2628,    608}, {0x28, 0x77, 0x10, 0xff}}},\n    {{{ -1996,  -6327,   2739}, 0, {  1362,    608}, {0x53, 0x59, 0xdf, 0xff}}},\n    {{{ -4351,  -6327,   2022}, 0, {  7524,    608}, {0xef, 0x6a, 0xbe, 0xff}}},\n    {{{ -4095,  -5303,   2381}, 0, {  7586,   1884}, {0xce, 0x31, 0x97, 0xff}}},\n    {{{ -2969,  -5303,   2381}, 0, {  8724,   1884}, {0x2c, 0x31, 0x94, 0xff}}},\n    {{{ -2713,  -6327,   2022}, 0, {  8782,    608}, {0x10, 0x77, 0xd8, 0xff}}},\n    {{{ -5068,  -6327,   2739}, 0, {  6758,    608}, {0xba, 0x61, 0xd8, 0xff}}},\n    {{{ -4709,  -5303,   2995}, 0, {  6708,   1884}, {0x90, 0x30, 0xdd, 0xff}}},\n    {{{ -5068,  -6327,   4378}, 0, {  5474,    608}, {0xc2, 0x6b, 0x19, 0xff}}},\n    {{{ -4709,  -5303,   4122}, 0, {  5538,   1884}, {0x90, 0x30, 0x23, 0xff}}},\n    {{{ -4351,  -6327,   5094}, 0, {  4694,    608}, {0xec, 0x60, 0x50, 0xff}}},\n    {{{ -4095,  -5303,   4736}, 0, {  4636,   1884}, {0xc6, 0x31, 0x65, 0xff}}},\n    {{{   563,  -5303,   5606}, 0, {  5204,   2012}, {0xb3, 0x30, 0xa8, 0xff}}},\n    {{{  -815,  -4290,   5676}, 0, {  4822,   1000}, {0xcd, 0x00, 0x8c, 0xff}}},\n    {{{   563,  -4290,   5606}, 0, {  5204,   1000}, {0xfa, 0x00, 0x82, 0xff}}},\n};\n\n// 0x0701BDC0 - 0x0701BEC0\nstatic const Vtx hmc_seg7_vertex_0701BDC0[] = {\n    {{{ -4351,  -6327,   5094}, 0, {  4694,    608}, {0xec, 0x60, 0x50, 0xff}}},\n    {{{ -2713,  -6327,   5094}, 0, {  3400,    608}, {0x21, 0x6b, 0x3a, 0xff}}},\n    {{{ -2969,  -5303,   4736}, 0, {  3452,   1884}, {0x1d, 0x2f, 0x72, 0xff}}},\n    {{{ -4095,  -5303,   4736}, 0, {  4636,   1884}, {0xc6, 0x31, 0x65, 0xff}}},\n    {{{ -2354,  -5303,   4122}, 0, {  2564,   1884}, {0x69, 0x31, 0x32, 0xff}}},\n    {{{ -1996,  -6327,   4378}, 0, {  2628,    608}, {0x28, 0x77, 0x10, 0xff}}},\n    {{{  -815,  -5303,   5676}, 0, {  2862,   1884}, {0xc4, 0x00, 0x91, 0xff}}},\n    {{{  -815,  -5740,   5676}, 0, {  2862,   1340}, {0xcb, 0x47, 0xa6, 0xff}}},\n    {{{ -1427,  -5740,   6288}, 0, {  3192,   1340}, {0xaa, 0x46, 0xc3, 0xff}}},\n    {{{   563,  -5303,   5606}, 0, {  2608,   1884}, {0xb3, 0x30, 0xa8, 0xff}}},\n    {{{ -1427,  -5303,   6288}, 0, {  3192,   1884}, {0x91, 0x00, 0xc5, 0xff}}},\n    {{{   563,  -5303,   5606}, 0, {  5204,   2012}, {0xb3, 0x30, 0xa8, 0xff}}},\n    {{{  -815,  -5303,   5676}, 0, {  4822,   2012}, {0xc4, 0x00, 0x91, 0xff}}},\n    {{{  -815,  -4290,   5676}, 0, {  4822,   1000}, {0xcd, 0x00, 0x8c, 0xff}}},\n    {{{ -1427,  -5303,   6288}, 0, {  4332,   2012}, {0x91, 0x00, 0xc5, 0xff}}},\n    {{{ -1427,  -4290,   6288}, 0, {  4332,   1000}, {0x87, 0x00, 0xdd, 0xff}}},\n};\n\n// 0x0701BEC0 - 0x0701BFB0\nstatic const Vtx hmc_seg7_vertex_0701BEC0[] = {\n    {{{ -3222,  -4290,   2736}, 0, {  8422,   1000}, {0x2c, 0x31, 0x94, 0xff}}},\n    {{{ -2709,  -4290,   3249}, 0, {  6810,   1000}, {0x6c, 0x31, 0xd4, 0xff}}},\n    {{{ -2354,  -5303,   2995}, 0, {  6972,   2012}, {0x6c, 0x31, 0xd4, 0xff}}},\n    {{{ -2969,  -5303,   2381}, 0, {  8270,   2012}, {0x2c, 0x31, 0x94, 0xff}}},\n    {{{ -4095,  -5303,   2381}, 0, {  9994,   2012}, {0xce, 0x31, 0x97, 0xff}}},\n    {{{ -3842,  -4290,   2736}, 0, {  9806,   1000}, {0xd4, 0x31, 0x94, 0xff}}},\n    {{{ -2709,  -4290,   3868}, 0, {  5442,   1000}, {0x72, 0x2f, 0x1d, 0xff}}},\n    {{{ -2354,  -5303,   4122}, 0, {  5262,   2012}, {0x69, 0x31, 0x32, 0xff}}},\n    {{{ -4355,  -4290,   3249}, 0, { 11482,   1000}, {0x94, 0x31, 0xd4, 0xff}}},\n    {{{ -4709,  -5303,   2995}, 0, { 11328,   2012}, {0x90, 0x30, 0xdd, 0xff}}},\n    {{{ -1484,  -5303,   -537}, 0, {  8254,   2012}, {0xe0, 0x22, 0x75, 0xff}}},\n    {{{   563,  -5303,   1510}, 0, {  7004,   2012}, {0xa8, 0x58, 0xea, 0xff}}},\n    {{{   563,  -3255,   1510}, 0, {  7004,      0}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{ -4709,  -5303,   4122}, 0, { 13102,   2012}, {0x90, 0x30, 0x23, 0xff}}},\n    {{{ -4355,  -4290,   3868}, 0, { 12928,   1000}, {0x9b, 0x31, 0x3a, 0xff}}},\n};\n\n// 0x0701BFB0 - 0x0701C0B0\nstatic const Vtx hmc_seg7_vertex_0701BFB0[] = {\n    {{{ -4355,  -4290,   3868}, 0, {   664,   1000}, {0x9b, 0x31, 0x3a, 0xff}}},\n    {{{ -4709,  -5303,   4122}, 0, {   838,   2012}, {0x90, 0x30, 0x23, 0xff}}},\n    {{{ -4095,  -5303,   4736}, 0, {  2190,   2012}, {0xc6, 0x31, 0x65, 0xff}}},\n    {{{ -3842,  -4290,   4381}, 0, {  2376,   1000}, {0xe3, 0x2f, 0x72, 0xff}}},\n    {{{ -2969,  -5303,   4736}, 0, {  3948,   2012}, {0x1d, 0x2f, 0x72, 0xff}}},\n    {{{ -3222,  -4290,   4381}, 0, {  3800,   1000}, {0x3a, 0x32, 0x65, 0xff}}},\n    {{{ -2354,  -5303,   4122}, 0, {  5262,   2012}, {0x69, 0x31, 0x32, 0xff}}},\n    {{{ -2709,  -4290,   3868}, 0, {  5442,   1000}, {0x72, 0x2f, 0x1d, 0xff}}},\n    {{{ -1484,  -5303,   -537}, 0, {  8254,   2012}, {0xe0, 0x22, 0x75, 0xff}}},\n    {{{   563,  -3255,   1510}, 0, {  7004,      0}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{ -1484,  -3255,   -537}, 0, {  8254,      0}, {0xe0, 0x00, 0x7a, 0xff}}},\n    {{{ -3107,   -511,  -4753}, 0, {   314,   -168}, {0xda, 0xab, 0xab, 0xff}}},\n    {{{ -2862,  -1740,  -4883}, 0, {   182,   1212}, {0xa1, 0x1b, 0xb1, 0xff}}},\n    {{{ -3107,  -2149,  -4753}, 0, {   314,   1320}, {0xa0, 0x23, 0xb6, 0xff}}},\n    {{{ -2862,   -511,  -4883}, 0, {   182,     96}, {0x94, 0xd4, 0xd0, 0xff}}},\n    {{{ -3614,   -921,  -4264}, 0, {   666,   -500}, {0xdc, 0xb9, 0x9e, 0xff}}},\n};\n\n// 0x0701C0B0 - 0x0701C1B0\nstatic const Vtx hmc_seg7_vertex_0701C0B0[] = {\n    {{{ -3107,  -2149,  -4753}, 0, {   314,   1320}, {0xa0, 0x23, 0xb6, 0xff}}},\n    {{{ -2862,  -1740,  -4883}, 0, {   182,   1212}, {0xa1, 0x1b, 0xb1, 0xff}}},\n    {{{ -2961,  -2252,  -5280}, 0, {    76,   1888}, {0xb3, 0x56, 0xcc, 0xff}}},\n    {{{ -3359,  -2661,  -5076}, 0, {   290,   1832}, {0xa7, 0x56, 0xe7, 0xff}}},\n    {{{ -3614,   -921,  -4264}, 0, {   666,   -500}, {0xdc, 0xb9, 0x9e, 0xff}}},\n    {{{ -3614,  -2559,  -4264}, 0, {   666,    988}, {0x92, 0x26, 0xce, 0xff}}},\n    {{{ -3110,  -2559,  -5877}, 0, {   -80,   2476}, {0xd2, 0x75, 0xf0, 0xff}}},\n    {{{ -3738,  -2969,  -5560}, 0, {   252,   2184}, {0xc4, 0x6f, 0x0a, 0xff}}},\n    {{{ -3949,  -3071,  -4499}, 0, {   702,   1380}, {0xa6, 0x59, 0x04, 0xff}}},\n    {{{ -3110,  -2559,  -5877}, 0, {   -48,   2360}, {0xd2, 0x75, 0xf0, 0xff}}},\n    {{{ -3798,  -1740,  -3699}, 0, {   930,   -284}, {0x83, 0x00, 0x11, 0xff}}},\n    {{{ -3791,  -1330,  -3954}, 0, {   838,   -472}, {0xac, 0xc4, 0xb7, 0xff}}},\n    {{{ -3791,  -2969,  -3954}, 0, {   838,   1016}, {0x87, 0x22, 0x08, 0xff}}},\n    {{{ -4872,  -3378,  -5145}, 0, {  2852,   1640}, {0xfc, 0x71, 0x38, 0xff}}},\n    {{{ -4053,  -2969,  -5964}, 0, {  3390,   1576}, {0xee, 0x71, 0x35, 0xff}}},\n    {{{ -4431,  -2661,  -6448}, 0, {  3704,   1480}, {0x17, 0x5d, 0x52, 0xff}}},\n};\n\n// 0x0701C1B0 - 0x0701C290\nstatic const Vtx hmc_seg7_vertex_0701C1B0[] = {\n    {{{ -4053,  -2969,  -5964}, 0, {  3390,   1576}, {0xee, 0x71, 0x35, 0xff}}},\n    {{{ -3670,  -2559,  -6539}, 0, {  3780,   1436}, {0xfa, 0x7b, 0x1b, 0xff}}},\n    {{{ -4169,  -2559,  -6578}, 0, {  3796,   1444}, {0x18, 0x70, 0x35, 0xff}}},\n    {{{ -4431,  -2661,  -6448}, 0, {  3704,   1480}, {0x17, 0x5d, 0x52, 0xff}}},\n    {{{ -4872,  -3378,  -5145}, 0, {  2852,   1640}, {0xfc, 0x71, 0x38, 0xff}}},\n    {{{ -5375,  -3071,  -5497}, 0, {  3088,   1500}, {0x32, 0x58, 0x4b, 0xff}}},\n    {{{ -4620,  -2149,  -6690}, 0, {  3904,   1152}, {0x5a, 0x2d, 0x4d, 0xff}}},\n    {{{ -5875,  -3890,  -3142}, 0, {  1610,   1424}, {0x5a, 0x58, 0x0c, 0xff}}},\n    {{{ -6176,  -2969,  -4548}, 0, {  2536,   1128}, {0x74, 0x21, 0x25, 0xff}}},\n    {{{ -6172,  -3378,  -3063}, 0, {  1622,   1000}, {0x79, 0x21, 0xef, 0xff}}},\n    {{{ -6176,  -1330,  -4548}, 0, {  2734,   -144}, {0x78, 0xda, 0x05, 0xff}}},\n    {{{ -6172,  -1740,  -3063}, 0, {  1820,   -272}, {0x78, 0x00, 0xda, 0xff}}},\n    {{{ -5878,  -3481,  -4474}, 0, {  2436,   1508}, {0x4a, 0x59, 0x32, 0xff}}},\n    {{{ -5627,  -2559,  -5673}, 0, {  3248,   1156}, {0x5d, 0x21, 0x4f, 0xff}}},\n};\n\n// 0x0701C290 - 0x0701C390\nstatic const Vtx hmc_seg7_vertex_0701C290[] = {\n    {{{ -3798,  -1740,  -3699}, 0, {   930,   -284}, {0x83, 0x00, 0x11, 0xff}}},\n    {{{ -3791,  -2969,  -3954}, 0, {   838,   1016}, {0x87, 0x22, 0x08, 0xff}}},\n    {{{ -3798,  -3378,  -3699}, 0, {   930,   1204}, {0x99, 0x21, 0x42, 0xff}}},\n    {{{ -4189,  -3481,  -4053}, 0, {   944,   1268}, {0xb0, 0x52, 0x34, 0xff}}},\n    {{{ -4194,  -3890,  -3593}, 0, {  1108,   1312}, {0xcf, 0x51, 0x53, 0xff}}},\n    {{{ -4785,  -3788,  -4202}, 0, {  1102,   1232}, {0xda, 0x6b, 0x37, 0xff}}},\n    {{{ -4787,  -4197,  -3434}, 0, {  1372,   1060}, {0xf7, 0x6b, 0x42, 0xff}}},\n    {{{ -5282,  -4197,  -3301}, 0, {  1674,   1716}, {0x27, 0x71, 0x2a, 0xff}}},\n    {{{ -5878,  -3481,  -4474}, 0, {  2436,   1508}, {0x4a, 0x59, 0x32, 0xff}}},\n    {{{ -5875,  -3890,  -3142}, 0, {  1610,   1424}, {0x5a, 0x58, 0x0c, 0xff}}},\n    {{{ -5282,  -3788,  -4325}, 0, {  2320,   1708}, {0x0f, 0x71, 0x37, 0xff}}},\n    {{{ -6176,  -2969,  -4548}, 0, {  2536,   1128}, {0x74, 0x21, 0x25, 0xff}}},\n    {{{ -5627,  -2559,  -5673}, 0, {  3248,   1156}, {0x5d, 0x21, 0x4f, 0xff}}},\n    {{{ -5627,   -921,  -5673}, 0, {  3446,   -116}, {0x5b, 0xa8, 0x04, 0xff}}},\n    {{{ -6176,  -1330,  -4548}, 0, {  2734,   -144}, {0x78, 0xda, 0x05, 0xff}}},\n    {{{ -5375,  -3071,  -5497}, 0, {  3088,   1500}, {0x32, 0x58, 0x4b, 0xff}}},\n};\n\n// 0x0701C390 - 0x0701C480\nstatic const Vtx hmc_seg7_vertex_0701C390[] = {\n    {{{ -3791,  -1330,  -3954}, 0, {   838,   -472}, {0xac, 0xc4, 0xb7, 0xff}}},\n    {{{ -3614,  -2559,  -4264}, 0, {   666,    988}, {0x92, 0x26, 0xce, 0xff}}},\n    {{{ -3791,  -2969,  -3954}, 0, {   838,   1016}, {0x87, 0x22, 0x08, 0xff}}},\n    {{{ -3614,   -921,  -4264}, 0, {   666,   -500}, {0xdc, 0xb9, 0x9e, 0xff}}},\n    {{{ -3949,  -3071,  -4499}, 0, {   702,   1380}, {0xa6, 0x59, 0x04, 0xff}}},\n    {{{ -4189,  -3481,  -4053}, 0, {   944,   1268}, {0xb0, 0x52, 0x34, 0xff}}},\n    {{{ -4453,  -3378,  -4851}, 0, {   754,   1552}, {0xcc, 0x6f, 0x1f, 0xff}}},\n    {{{ -4785,  -3788,  -4202}, 0, {  1102,   1232}, {0xda, 0x6b, 0x37, 0xff}}},\n    {{{ -5282,  -3788,  -4325}, 0, {  2320,   1708}, {0x0f, 0x71, 0x37, 0xff}}},\n    {{{ -4872,  -3378,  -5145}, 0, {  2852,   1640}, {0xfc, 0x71, 0x38, 0xff}}},\n    {{{ -5375,  -3071,  -5497}, 0, {  3088,   1500}, {0x32, 0x58, 0x4b, 0xff}}},\n    {{{ -5878,  -3481,  -4474}, 0, {  2436,   1508}, {0x4a, 0x59, 0x32, 0xff}}},\n    {{{ -4300,   -511,  -7295}, 0, {  1342,   -356}, {0x77, 0xe1, 0x1d, 0xff}}},\n    {{{ -4300,   1741,  -5759}, 0, {   472,  -3504}, {0x54, 0xac, 0xd6, 0xff}}},\n    {{{ -4300,   -511,  -5759}, 0, {   284,   -872}, {0x28, 0x9a, 0xc2, 0xff}}},\n};\n\n// 0x0701C480 - 0x0701C560\nstatic const Vtx hmc_seg7_vertex_0701C480[] = {\n    {{{ -5375,  -3071,  -5497}, 0, {  3088,   1500}, {0x32, 0x58, 0x4b, 0xff}}},\n    {{{ -4620,  -2149,  -6690}, 0, {  3904,   1152}, {0x5a, 0x2d, 0x4d, 0xff}}},\n    {{{ -5627,  -2559,  -5673}, 0, {  3248,   1156}, {0x5d, 0x21, 0x4f, 0xff}}},\n    {{{ -4620,   -511,  -6690}, 0, {  4102,   -116}, {0x59, 0xbd, 0x3c, 0xff}}},\n    {{{ -5627,   -921,  -5673}, 0, {  3446,   -116}, {0x5b, 0xa8, 0x04, 0xff}}},\n    {{{ -3949,  -3071,  -4499}, 0, {   702,   1380}, {0xa6, 0x59, 0x04, 0xff}}},\n    {{{ -3738,  -2969,  -5560}, 0, {   252,   2184}, {0xc4, 0x6f, 0x0a, 0xff}}},\n    {{{ -4453,  -3378,  -4851}, 0, {   754,   1552}, {0xcc, 0x6f, 0x1f, 0xff}}},\n    {{{ -3738,  -2969,  -5560}, 0, {  2790,   1620}, {0xc4, 0x6f, 0x0a, 0xff}}},\n    {{{ -3110,  -2559,  -5877}, 0, {  3220,   1480}, {0xd2, 0x75, 0xf0, 0xff}}},\n    {{{ -3234,  -2559,  -6373}, 0, {  3472,   1628}, {0xea, 0x7b, 0x13, 0xff}}},\n    {{{ -4300,   -511,  -7295}, 0, {  1342,   -356}, {0x77, 0xe1, 0x1d, 0xff}}},\n    {{{ -4300,   1741,  -7295}, 0, {  1530,  -2992}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{ -4300,   1741,  -5759}, 0, {   472,  -3504}, {0x54, 0xac, 0xd6, 0xff}}},\n};\n\n// 0x0701C560 - 0x0701C5A0\nstatic const Vtx hmc_seg7_vertex_0701C560[] = {\n    {{{ -3110,  -2559,  -5877}, 0, {   664,   2012}, {0xd2, 0x75, 0xf0, 0xff}}},\n    {{{ -2961,  -2252,  -5280}, 0, {   948,   1712}, {0xb3, 0x56, 0xcc, 0xff}}},\n    {{{ -2764,  -2559,  -5759}, 0, {   720,   2012}, {0x9f, 0x4c, 0xe4, 0xff}}},\n    {{{ -2862,  -1740,  -4883}, 0, {  1136,   1216}, {0xa1, 0x1b, 0xb1, 0xff}}},\n};\n\n// 0x0701C5A0 - 0x0701C5E0\nstatic const Vtx hmc_seg7_vertex_0701C5A0[] = {\n    {{{  3405,   -409,  -6962}, 0, {   542,    784}, {0xcd, 0x67, 0xcd, 0xff}}},\n    {{{  3252,   -409,  -6911}, 0, {   416,    784}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{  3405,   -409,  -6911}, 0, {   542,    784}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  3252,   -409,  -6962}, 0, {   416,    784}, {0x67, 0x33, 0xcd, 0xff}}},\n};\n\n// 0x0701C5E0 - 0x0701C6E0\nstatic const Vtx hmc_seg7_vertex_0701C5E0[] = {\n    {{{ -2764,   2867,  -7807}, 0, {     0,      0}, {0x18, 0x00, 0x7c, 0xff}}},\n    {{{ -1740,   1843,  -8114}, 0, {  2596,   2012}, {0x0e, 0x65, 0x4a, 0xff}}},\n    {{{ -1740,   2867,  -8114}, 0, {  2596,      0}, {0x0c, 0x00, 0x7e, 0xff}}},\n    {{{  3405,   -153,  -6962}, 0, {   632,   1500}, {0xbd, 0xdf, 0x9b, 0xff}}},\n    {{{  3405,   -409,  -6962}, 0, {   632,   2012}, {0xcd, 0x67, 0xcd, 0xff}}},\n    {{{  3405,   -409,  -6911}, 0, {   632,   2012}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  3405,   -153,  -6911}, 0, {   632,   1500}, {0xc8, 0x8f, 0x00, 0xff}}},\n    {{{  3252,   -153,  -6911}, 0, {   938,   1500}, {0x71, 0xc8, 0x00, 0xff}}},\n    {{{  3252,   -409,  -6962}, 0, {   938,   2012}, {0x67, 0x33, 0xcd, 0xff}}},\n    {{{  3252,   -153,  -6962}, 0, {   938,   1500}, {0x1b, 0xc9, 0x92, 0xff}}},\n    {{{  3252,   -409,  -6911}, 0, {   938,   2012}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{  -204,   1843,  -8114}, 0, {  6402,   2012}, {0xdf, 0x65, 0x43, 0xff}}},\n    {{{ -2764,   1843,  -7807}, 0, {     0,   2012}, {0x06, 0x6d, 0x40, 0xff}}},\n    {{{  -204,   2867,  -8114}, 0, {     0,      0}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  -204,   1843,  -8114}, 0, {     0,   2012}, {0xdf, 0x65, 0x43, 0xff}}},\n    {{{  -204,   1843,  -6578}, 0, {  3800,   2012}, {0xc9, 0x6e, 0xe5, 0xff}}},\n};\n\n// 0x0701C6E0 - 0x0701C7E0\nstatic const Vtx hmc_seg7_vertex_0701C6E0[] = {\n    {{{  -204,   2867,  -8114}, 0, {     0,      0}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  -204,   1843,  -6578}, 0, {  3800,   2012}, {0xc9, 0x6e, 0xe5, 0xff}}},\n    {{{  -204,   2867,  -6578}, 0, {  3800,      0}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  -204,   2867,  -6578}, 0, {     0,      0}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -1740,   1843,  -6578}, 0, {  3034,   2012}, {0xe7, 0x65, 0xb8, 0xff}}},\n    {{{ -1740,   2867,  -6578}, 0, {  3034,      0}, {0xd6, 0x00, 0x89, 0xff}}},\n    {{{  -204,   1843,  -6578}, 0, {     0,   2012}, {0xc9, 0x6e, 0xe5, 0xff}}},\n    {{{ -1740,   2867,  -8114}, 0, {  2596,      0}, {0x0c, 0x00, 0x7e, 0xff}}},\n    {{{  -204,   1843,  -8114}, 0, {  6402,   2012}, {0xdf, 0x65, 0x43, 0xff}}},\n    {{{  -204,   2867,  -8114}, 0, {  6402,      0}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -2764,  -2559,  -5759}, 0, {  1500,   2012}, {0x9f, 0x4c, 0xe4, 0xff}}},\n    {{{ -2764,   1741,  -7295}, 0, {     0,  -2076}, {0xac, 0xac, 0x2a, 0xff}}},\n    {{{ -2764,  -2559,  -7295}, 0, {     0,   2012}, {0xdf, 0x65, 0x43, 0xff}}},\n    {{{ -4300,   1741,  -7295}, 0, {  -542,  -2076}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{ -4300,  -2559,  -7295}, 0, {  -542,   2012}, {0x3a, 0x65, 0x31, 0xff}}},\n    {{{ -2764,  -2559,  -7295}, 0, {   990,   2012}, {0xdf, 0x65, 0x43, 0xff}}},\n};\n\n// 0x0701C7E0 - 0x0701C8E0\nstatic const Vtx hmc_seg7_vertex_0701C7E0[] = {\n    {{{ -4300,   1741,  -7295}, 0, {  -542,  -2076}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{ -2764,  -2559,  -7295}, 0, {   990,   2012}, {0xdf, 0x65, 0x43, 0xff}}},\n    {{{ -2764,   1741,  -7295}, 0, {   990,  -2076}, {0xac, 0xac, 0x2a, 0xff}}},\n    {{{ -4431,  -2661,  -6448}, 0, {   144,   2104}, {0x17, 0x5d, 0x52, 0xff}}},\n    {{{ -4169,  -2559,  -6578}, 0, {   274,   2012}, {0x18, 0x70, 0x35, 0xff}}},\n    {{{ -4620,  -2149,  -6690}, 0, {   386,   1624}, {0x5a, 0x2d, 0x4d, 0xff}}},\n    {{{ -4300,  -2559,  -7295}, 0, {   990,   2012}, {0x3a, 0x65, 0x31, 0xff}}},\n    {{{ -4300,   -511,  -5759}, 0, {   862,  -1820}, {0x28, 0x9a, 0xc2, 0xff}}},\n    {{{ -4300,   1741,  -5759}, 0, { -1384,  -6316}, {0x54, 0xac, 0xd6, 0xff}}},\n    {{{ -2764,   1741,  -5759}, 0, { -4834,  -5552}, {0xdf, 0x9b, 0xbd, 0xff}}},\n    {{{ -2764,   -511,  -5759}, 0, { -2586,  -1056}, {0xce, 0x9b, 0xc8, 0xff}}},\n    {{{ -2764,  -2559,  -5759}, 0, {  1500,   2012}, {0x9f, 0x4c, 0xe4, 0xff}}},\n    {{{ -2862,  -1740,  -4883}, 0, {  2376,   1232}, {0xa1, 0x1b, 0xb1, 0xff}}},\n    {{{ -2862,   -511,  -4883}, 0, {  2376,     64}, {0x94, 0xd4, 0xd0, 0xff}}},\n    {{{ -2764,   1741,  -5759}, 0, {  1502,  -2076}, {0xdf, 0x9b, 0xbd, 0xff}}},\n    {{{ -2764,   1741,  -7295}, 0, {     0,  -2076}, {0xac, 0xac, 0x2a, 0xff}}},\n};\n\n// 0x0701C8E0 - 0x0701C950\nstatic const Vtx hmc_seg7_vertex_0701C8E0[] = {\n    {{{ -2764,  -2559,  -5759}, 0, {  1500,   2012}, {0x9f, 0x4c, 0xe4, 0xff}}},\n    {{{ -2862,   -511,  -4883}, 0, {  2376,     64}, {0x94, 0xd4, 0xd0, 0xff}}},\n    {{{ -2764,   -511,  -5759}, 0, {  1502,     64}, {0xce, 0x9b, 0xc8, 0xff}}},\n    {{{ -4620,  -2149,  -6690}, 0, {   386,   1392}, {0x5a, 0x2d, 0x4d, 0xff}}},\n    {{{ -4300,   -511,  -7295}, 0, {   990,     64}, {0x77, 0xe1, 0x1d, 0xff}}},\n    {{{ -4620,   -511,  -6690}, 0, {   386,   -164}, {0x59, 0xbd, 0x3c, 0xff}}},\n    {{{ -4300,  -2559,  -7295}, 0, {   990,   2012}, {0x3a, 0x65, 0x31, 0xff}}},\n};\n\n// 0x0701C950 - 0x0701CA30\nstatic const Vtx hmc_seg7_vertex_0701C950[] = {\n    {{{ -3788,   1843,  -6783}, 0, {  8970,   1500}, {0x37, 0x6e, 0xe5, 0xff}}},\n    {{{ -3788,   1741,  -7295}, 0, {  7122,   2012}, {0x54, 0xd6, 0x54, 0xff}}},\n    {{{ -3788,   1843,  -7295}, 0, {  7122,   1500}, {0x49, 0x49, 0x49, 0xff}}},\n    {{{ -3788,   1741,  -6783}, 0, {  8970,   2012}, {0x1b, 0x92, 0xc9, 0xff}}},\n    {{{ -3276,   1843,  -7295}, 0, {  5274,   1500}, {0xb7, 0x49, 0x49, 0xff}}},\n    {{{ -3276,   1741,  -6783}, 0, {  3034,   2012}, {0xbd, 0x9b, 0xdf, 0xff}}},\n    {{{ -3276,   1843,  -6783}, 0, {  3034,   1500}, {0xe5, 0x6e, 0xc9, 0xff}}},\n    {{{ -3788,   1741,  -6783}, 0, {   794,   2012}, {0x1b, 0x92, 0xc9, 0xff}}},\n    {{{ -3788,   1843,  -6783}, 0, {   794,   1500}, {0x37, 0x6e, 0xe5, 0xff}}},\n    {{{ -3276,   1741,  -7295}, 0, {  5274,   2012}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{ -2764,   2867,  -5759}, 0, {     0,      0}, {0xd6, 0x00, 0x89, 0xff}}},\n    {{{ -2764,   1843,  -5759}, 0, {     0,   2012}, {0xea, 0x6b, 0xc1, 0xff}}},\n    {{{ -4300,   1843,  -5759}, 0, {  3800,   2012}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{ -4300,   2867,  -5759}, 0, {  3800,      0}, {0x71, 0x00, 0xc8, 0xff}}},\n};\n\n// 0x0701CA30 - 0x0701CB20\nstatic const Vtx hmc_seg7_vertex_0701CA30[] = {\n    {{{ -4812,   2099,  -7628}, 0, {   632,   1500}, {0x65, 0xdf, 0x43, 0xff}}},\n    {{{ -4812,   1843,  -7628}, 0, {   632,   2012}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{ -4812,   1843,  -7807}, 0, {   990,   2012}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{ -4300,   2867,  -5759}, 0, {     0,      0}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{ -4300,   1843,  -7295}, 0, {  3800,   2012}, {0x2e, 0x73, 0xe9, 0xff}}},\n    {{{ -4300,   2867,  -7295}, 0, {  3800,      0}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{ -4300,   1843,  -5759}, 0, {     0,   2012}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{ -3276,   1843,  -7295}, 0, {  5274,   1500}, {0xb7, 0x49, 0x49, 0xff}}},\n    {{{ -3788,   1741,  -7295}, 0, {  7122,   2012}, {0x54, 0xd6, 0x54, 0xff}}},\n    {{{ -3276,   1741,  -7295}, 0, {  5274,   2012}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{ -3788,   1843,  -7295}, 0, {  7122,   1500}, {0x49, 0x49, 0x49, 0xff}}},\n    {{{ -4812,   2867,  -7807}, 0, {     0,      0}, {0x69, 0x00, 0x46, 0xff}}},\n    {{{ -4812,   1843,  -7807}, 0, {     0,   2012}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{ -2764,   1843,  -7807}, 0, {  5078,   2012}, {0x06, 0x6d, 0x40, 0xff}}},\n    {{{ -2764,   2867,  -7807}, 0, {  5078,      0}, {0x18, 0x00, 0x7c, 0xff}}},\n};\n\n// 0x0701CB20 - 0x0701CC10\nstatic const Vtx hmc_seg7_vertex_0701CB20[] = {\n    {{{ -4863,   2099,  -7628}, 0, {   632,   1500}, {0x00, 0x8f, 0x38, 0xff}}},\n    {{{ -4812,   2099,  -7628}, 0, {   632,   1500}, {0x65, 0xdf, 0x43, 0xff}}},\n    {{{ -4812,   2099,  -7474}, 0, {   326,   1500}, {0x6e, 0xc9, 0xe5, 0xff}}},\n    {{{ -4812,   2867,  -7807}, 0, {   990,      0}, {0x69, 0x00, 0x46, 0xff}}},\n    {{{ -4812,   1843,  -7807}, 0, {   990,   2012}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{ -4812,   2867,  -7295}, 0, {     0,      0}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{ -4812,   1843,  -7295}, 0, {     0,   2012}, {0x54, 0x2a, 0xac, 0xff}}},\n    {{{ -4812,   1843,  -7474}, 0, {   326,   2012}, {0x33, 0x33, 0x99, 0xff}}},\n    {{{ -4863,   2099,  -7474}, 0, {   326,   1500}, {0x00, 0xc8, 0x8f, 0xff}}},\n    {{{ -4863,   1843,  -7474}, 0, {   326,   2012}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{ -4863,   1843,  -7628}, 0, {   632,   2012}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{ -4812,   1843,  -7628}, 0, {   632,   2012}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{ -1228,   -409,  -7602}, 0, {  7108,   1500}, {0x1b, 0x6e, 0x37, 0xff}}},\n    {{{  -716,   -511,  -7602}, 0, {  5078,   2012}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  -716,   -409,  -7602}, 0, {  5078,   1500}, {0xbd, 0x65, 0x21, 0xff}}},\n};\n\n// 0x0701CC10 - 0x0701CD10\nstatic const Vtx hmc_seg7_vertex_0701CC10[] = {\n    {{{  -716,   -409,  -7602}, 0, {  5078,   1500}, {0xbd, 0x65, 0x21, 0xff}}},\n    {{{  -716,   -511,  -7090}, 0, {  3048,   2012}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{  -716,   -409,  -7090}, 0, {  3048,   1500}, {0xdf, 0x65, 0xbd, 0xff}}},\n    {{{  -716,   -511,  -7602}, 0, {  5078,   2012}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{ -1228,   -409,  -7602}, 0, {  7108,   1500}, {0x1b, 0x6e, 0x37, 0xff}}},\n    {{{ -1228,   -511,  -7602}, 0, {  7108,   2012}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{ -1228,   -511,  -7090}, 0, {   990,   2012}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{ -1228,   -409,  -7090}, 0, {   990,   1500}, {0x54, 0x54, 0xd6, 0xff}}},\n    {{{ -1228,   -409,  -7090}, 0, {  9166,   1500}, {0x54, 0x54, 0xd6, 0xff}}},\n    {{{ -1228,   -511,  -7090}, 0, {  9166,   2012}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{  -716,   1741,  -7090}, 0, {  3230,   2012}, {0xcd, 0x99, 0xcd, 0xff}}},\n    {{{  -716,   1843,  -7602}, 0, {  5078,   1500}, {0xc3, 0x5c, 0x3d, 0xff}}},\n    {{{  -716,   1741,  -7602}, 0, {  5078,   2012}, {0xda, 0x8e, 0x26, 0xff}}},\n    {{{  -716,   1843,  -7090}, 0, {  3230,   1500}, {0xcd, 0x67, 0xcd, 0xff}}},\n    {{{ -1228,   1741,  -7602}, 0, {  6926,   2012}, {0x3d, 0xa4, 0x3d, 0xff}}},\n    {{{ -1228,   1843,  -7602}, 0, {  6926,   1500}, {0x26, 0x72, 0x26, 0xff}}},\n};\n\n// 0x0701CD10 - 0x0701CE10\nstatic const Vtx hmc_seg7_vertex_0701CD10[] = {\n    {{{ -1228,   1741,  -7602}, 0, {  6926,   2012}, {0x3d, 0xa4, 0x3d, 0xff}}},\n    {{{ -1228,   1843,  -7090}, 0, {  9166,   1500}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{ -1228,   1741,  -7090}, 0, {  9166,   2012}, {0x33, 0x99, 0xcd, 0xff}}},\n    {{{ -1228,   1843,  -7602}, 0, {  6926,   1500}, {0x26, 0x72, 0x26, 0xff}}},\n    {{{  -716,   1741,  -7090}, 0, {  3230,   2012}, {0xcd, 0x99, 0xcd, 0xff}}},\n    {{{ -1228,   1741,  -7090}, 0, {   990,   2012}, {0x33, 0x99, 0xcd, 0xff}}},\n    {{{ -1228,   1843,  -7090}, 0, {   990,   1500}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  -716,   1843,  -7090}, 0, {  3230,   1500}, {0xcd, 0x67, 0xcd, 0xff}}},\n    {{{ -1740,   1843,  -6578}, 0, { -2280,   2012}, {0xe7, 0x65, 0xb8, 0xff}}},\n    {{{ -2764,   2867,  -5759}, 0, {   990,      0}, {0xd6, 0x00, 0x89, 0xff}}},\n    {{{ -1740,   2867,  -6578}, 0, { -2280,      0}, {0xd6, 0x00, 0x89, 0xff}}},\n    {{{ -2764,   1843,  -5759}, 0, {   990,   2012}, {0xea, 0x6b, 0xc1, 0xff}}},\n    {{{ -4812,   1843,  -7295}, 0, {   990,   2012}, {0x54, 0x2a, 0xac, 0xff}}},\n    {{{ -4300,   2867,  -7295}, 0, {     0,      0}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{ -4300,   1843,  -7295}, 0, {     0,   2012}, {0x2e, 0x73, 0xe9, 0xff}}},\n    {{{ -4812,   2867,  -7295}, 0, {   990,      0}, {0x71, 0x00, 0xc8, 0xff}}},\n};\n\n// 0x0701CE10 - 0x0701CF00\nstatic const Vtx hmc_seg7_vertex_0701CE10[] = {\n    {{{   870,  -4433,   2406}, 0, {   938,   1500}, {0x9b, 0xdf, 0xbd, 0xff}}},\n    {{{   870,  -4689,   2739}, 0, {  1604,   2012}, {0xcd, 0x67, 0xcd, 0xff}}},\n    {{{   870,  -3972,   2739}, 0, {  1604,    580}, {0x8e, 0xda, 0xda, 0xff}}},\n    {{{   870,  -4689,   2253}, 0, {   632,   2012}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{   922,  -4433,   2253}, 0, {   632,   1500}, {0x00, 0xc8, 0x71, 0xff}}},\n    {{{   870,  -4433,   2253}, 0, {   632,   1500}, {0x92, 0xc9, 0x1b, 0xff}}},\n    {{{   922,  -4689,   2253}, 0, {   632,   2012}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{   922,  -4433,   2406}, 0, {   938,   1500}, {0x00, 0x8f, 0xc8, 0xff}}},\n    {{{   922,  -4689,   2406}, 0, {   938,   2012}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{   870,  -4689,   2406}, 0, {   938,   2012}, {0xcd, 0x67, 0xcd, 0xff}}},\n    {{{   563,  -3972,   2739}, 0, {     0,    580}, {0x99, 0xcd, 0xcd, 0xff}}},\n    {{{   870,  -4689,   2739}, 0, {   582,   2012}, {0xcd, 0x67, 0xcd, 0xff}}},\n    {{{   563,  -4689,   2739}, 0, {     0,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   870,  -3972,   1920}, 0, {     0,    580}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{   870,  -4689,   1920}, 0, {     0,   2012}, {0x99, 0x33, 0x33, 0xff}}},\n};\n\n// 0x0701CF00 - 0x0701D000\nstatic const Vtx hmc_seg7_vertex_0701CF00[] = {\n    {{{   870,  -3972,   1920}, 0, {   376,    376}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{   870,  -3972,   2739}, 0, {   376,   2012}, {0x8e, 0xda, 0xda, 0xff}}},\n    {{{   563,  -3972,   2739}, 0, {   990,   2012}, {0x99, 0xcd, 0xcd, 0xff}}},\n    {{{   563,  -3972,   1920}, 0, {   990,    376}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{   563,  -3972,   2739}, 0, {     0,    580}, {0x99, 0xcd, 0xcd, 0xff}}},\n    {{{   870,  -3972,   2739}, 0, {   582,    580}, {0x8e, 0xda, 0xda, 0xff}}},\n    {{{   870,  -4689,   2739}, 0, {   582,   2012}, {0xcd, 0x67, 0xcd, 0xff}}},\n    {{{   563,  -4689,   1920}, 0, {     0,   2012}, {0xab, 0x5d, 0x0e, 0xff}}},\n    {{{   870,  -3972,   1920}, 0, {   582,    580}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{   563,  -3972,   1920}, 0, {     0,    580}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{   870,  -4689,   1920}, 0, {   582,   2012}, {0x99, 0x33, 0x33, 0xff}}},\n    {{{   -50,  -4996,   2022}, 0, {  -520,    552}, {0xc5, 0x60, 0xc7, 0xff}}},\n    {{{   154,  -4689,   2125}, 0, {  -794,    112}, {0xd3, 0x72, 0xe4, 0xff}}},\n    {{{   563,  -4689,   1920}, 0, { -1708,    112}, {0xab, 0x5d, 0x0e, 0xff}}},\n    {{{   563,  -5303,   1510}, 0, { -2074,    988}, {0xa8, 0x58, 0xea, 0xff}}},\n    {{{  -869,  -5303,   2227}, 0, {  1124,    992}, {0x98, 0x46, 0xf0, 0xff}}},\n};\n\n// 0x0701D000 - 0x0701D0F0\nstatic const Vtx hmc_seg7_vertex_0701D000[] = {\n    {{{  -869,  -5303,   2227}, 0, {  1124,    992}, {0x98, 0x46, 0xf0, 0xff}}},\n    {{{  -665,  -4996,   2330}, 0, {   850,    552}, {0xc3, 0x68, 0xda, 0xff}}},\n    {{{   -50,  -4996,   2022}, 0, {  -520,    552}, {0xc5, 0x60, 0xc7, 0xff}}},\n    {{{  -869,  -5303,   3661}, 0, {  2830,    992}, {0x97, 0x31, 0x32, 0xff}}},\n    {{{  -460,  -4689,   3456}, 0, {  2420,    116}, {0xc3, 0x68, 0x26, 0xff}}},\n    {{{  -665,  -4996,   2842}, 0, {  1194,    552}, {0xbf, 0x68, 0xe0, 0xff}}},\n    {{{  -460,  -4689,   3046}, 0, {  1604,    112}, {0xd5, 0x6e, 0xd5, 0xff}}},\n    {{{  -665,  -4996,   2330}, 0, {   172,    552}, {0xc3, 0x68, 0xda, 0xff}}},\n    {{{  -869,  -5303,   2227}, 0, {     0,    988}, {0x98, 0x46, 0xf0, 0xff}}},\n    {{{  -869,  -6020,   3661}, 0, {  2830,   2012}, {0x9b, 0x48, 0x18, 0xff}}},\n    {{{  -869,  -6020,   2227}, 0, {     0,   2012}, {0xab, 0x54, 0x28, 0xff}}},\n    {{{  -665,  -4996,   2842}, 0, {  1306,    552}, {0xbf, 0x68, 0xe0, 0xff}}},\n    {{{   154,  -4689,   3046}, 0, {    26,    112}, {0xe1, 0x76, 0xe1, 0xff}}},\n    {{{   -50,  -4996,   2842}, 0, {   210,    552}, {0xd5, 0x6e, 0xd5, 0xff}}},\n    {{{  -460,  -4689,   3046}, 0, {  1124,    116}, {0xd5, 0x6e, 0xd5, 0xff}}},\n};\n\n// 0x0701D0F0 - 0x0701D1B0\nstatic const Vtx hmc_seg7_vertex_0701D0F0[] = {\n    {{{   -50,  -4996,   2022}, 0, {  -438,    552}, {0xc5, 0x60, 0xc7, 0xff}}},\n    {{{   154,  -4689,   3046}, 0, {  1604,    112}, {0xe1, 0x76, 0xe1, 0xff}}},\n    {{{   154,  -4689,   2125}, 0, {  -234,    112}, {0xd3, 0x72, 0xe4, 0xff}}},\n    {{{   -50,  -4996,   2842}, 0, {  1194,    552}, {0xd5, 0x6e, 0xd5, 0xff}}},\n    {{{  -460,  -4689,   3456}, 0, {   516,    112}, {0xc3, 0x68, 0x26, 0xff}}},\n    {{{  -869,  -5303,   3661}, 0, {     0,    988}, {0x97, 0x31, 0x32, 0xff}}},\n    {{{   563,  -5303,   4378}, 0, {  3168,    988}, {0xaf, 0x49, 0x3f, 0xff}}},\n    {{{   563,  -4689,   3968}, 0, {  2802,    112}, {0x94, 0x3e, 0x13, 0xff}}},\n    {{{  -869,  -6020,   3661}, 0, {     0,   2012}, {0x9b, 0x48, 0x18, 0xff}}},\n    {{{  -869,  -5303,   2227}, 0, {  3726,    136}, {0x98, 0x46, 0xf0, 0xff}}},\n    {{{ -2201,  -6020,    896}, 0, {     0,     64}, {0xdb, 0x69, 0x3b, 0xff}}},\n    {{{  -869,  -6020,   2227}, 0, {  3726,   1496}, {0xab, 0x54, 0x28, 0xff}}},\n};\n\n// 0x0701D1B0 - 0x0701D230\nstatic const Vtx hmc_seg7_vertex_0701D1B0[] = {\n    {{{ -1279,   1946,  -8104}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -972,   1946,  -8104}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -972,   2560,  -8104}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1279,   2560,  -8104}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3788,   1946,  -7797}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3481,   2560,  -7797}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3788,   2560,  -7797}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3481,   1946,  -7797}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0701D230 - 0x0701D2B0\nstatic const Vtx hmc_seg7_vertex_0701D230[] = {\n    {{{  -972,   1946,  -8104}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -665,   1946,  -8104}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -665,   2560,  -8104}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -972,   2560,  -8104}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3481,   1946,  -7797}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3173,   1946,  -7797}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3173,   2560,  -7797}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3481,   2560,  -7797}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0701D2B0 - 0x0701D3B0\nstatic const Vtx hmc_seg7_vertex_0701D2B0[] = {\n    {{{  3738,    614,  -6962}, 0, {  2012,      0}, {0xda, 0xda, 0x8e, 0xff}}},\n    {{{  3405,   -153,  -6962}, 0, {  1348,    734}, {0xbd, 0xdf, 0x9b, 0xff}}},\n    {{{  3252,   -153,  -6962}, 0, {  1040,    734}, {0x1b, 0xc9, 0x92, 0xff}}},\n    {{{  -204,    922,  -7904}, 0, {  1732,   -338}, {0x8c, 0xec, 0x2d, 0xff}}},\n    {{{  -204,    922,  -6839}, 0, {   316,   -338}, {0x92, 0xd7, 0xd1, 0xff}}},\n    {{{  -204,   1741,  -6578}, 0, {     0,  -1156}, {0xa4, 0xc3, 0xc3, 0xff}}},\n    {{{  -204,   -409,  -6839}, 0, {   316,    990}, {0xc3, 0x63, 0xd0, 0xff}}},\n    {{{  -204,   -409,  -6578}, 0, {     0,    990}, {0xbd, 0x65, 0xdf, 0xff}}},\n    {{{  -204,   1741,  -8114}, 0, {  2012,  -1156}, {0xbd, 0x9b, 0x21, 0xff}}},\n    {{{  -204,   -409,  -8114}, 0, {  2012,    990}, {0xc3, 0x5c, 0x3d, 0xff}}},\n    {{{  -204,   -409,  -7904}, 0, {  1732,    990}, {0xac, 0x44, 0x42, 0xff}}},\n    {{{  3738,   -409,  -6962}, 0, {  2012,    990}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  3405,   -409,  -6962}, 0, {  1348,    990}, {0xcd, 0x67, 0xcd, 0xff}}},\n    {{{   307,   -409,  -7781}, 0, { -4832,    990}, {0xf5, 0x4c, 0x64, 0xff}}},\n    {{{  3738,    614,  -7781}, 0, {  2012,      0}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{   307,    614,  -7781}, 0, { -4832,      0}, {0xd4, 0xa0, 0x45, 0xff}}},\n};\n\n// 0x0701D3B0 - 0x0701D4B0\nstatic const Vtx hmc_seg7_vertex_0701D3B0[] = {\n    {{{   307,    614,  -6962}, 0, { -4832,      0}, {0xea, 0xaa, 0xa6, 0xff}}},\n    {{{  3738,    614,  -6962}, 0, {  2012,      0}, {0xda, 0xda, 0x8e, 0xff}}},\n    {{{  3252,   -153,  -6962}, 0, {  1040,    734}, {0x1b, 0xc9, 0x92, 0xff}}},\n    {{{   307,   -409,  -6962}, 0, { -4832,    990}, {0xf5, 0x4c, 0x9c, 0xff}}},\n    {{{  3252,   -409,  -6962}, 0, {  1040,    990}, {0x67, 0x33, 0xcd, 0xff}}},\n    {{{  -204,    922,  -6839}, 0, { -5856,   -338}, {0x92, 0xd7, 0xd1, 0xff}}},\n    {{{  -204,   -409,  -6839}, 0, { -5856,    990}, {0xc3, 0x63, 0xd0, 0xff}}},\n    {{{  -204,    922,  -7904}, 0, { -5856,   -338}, {0x8c, 0xec, 0x2d, 0xff}}},\n    {{{  -204,   -409,  -7904}, 0, { -5856,    990}, {0xac, 0x44, 0x42, 0xff}}},\n    {{{   307,   -409,  -7781}, 0, { -4832,    990}, {0xf5, 0x4c, 0x64, 0xff}}},\n    {{{   307,    614,  -7781}, 0, { -4832,      0}, {0xd4, 0xa0, 0x45, 0xff}}},\n    {{{  3738,   -409,  -7781}, 0, {  2012,    990}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  3738,    614,  -7781}, 0, {  2012,      0}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{ -1740,   1741,  -8114}, 0, { -8920,  -1156}, {0x21, 0x9b, 0x43, 0xff}}},\n    {{{  -204,   -409,  -8114}, 0, { -5856,    990}, {0xc3, 0x5c, 0x3d, 0xff}}},\n    {{{  -204,   1741,  -8114}, 0, { -5856,  -1156}, {0xbd, 0x9b, 0x21, 0xff}}},\n};\n\n// 0x0701D4B0 - 0x0701D5A0\nstatic const Vtx hmc_seg7_vertex_0701D4B0[] = {\n    {{{  3738,    614,  -7781}, 0, {  2012,      0}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{  3738,   -409,  -7781}, 0, {  2012,    990}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  3738,   -409,  -6962}, 0, {     0,    990}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  3738,    614,  -6962}, 0, {     0,      0}, {0xda, 0xda, 0x8e, 0xff}}},\n    {{{  -204,   1741,  -6578}, 0, { -5856,  -1156}, {0xa4, 0xc3, 0xc3, 0xff}}},\n    {{{ -1740,   -409,  -6578}, 0, { -8920,    990}, {0x1b, 0x6e, 0xc9, 0xff}}},\n    {{{ -1740,   1741,  -6578}, 0, { -8920,  -1156}, {0x37, 0x92, 0xe5, 0xff}}},\n    {{{  -204,   -409,  -6578}, 0, { -5856,    990}, {0xbd, 0x65, 0xdf, 0xff}}},\n    {{{ -1740,   1741,  -6578}, 0, {     0,  -1156}, {0x37, 0x92, 0xe5, 0xff}}},\n    {{{ -1740,   -409,  -8114}, 0, {  2012,    990}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{ -1740,   1741,  -8114}, 0, {  2012,  -1156}, {0x21, 0x9b, 0x43, 0xff}}},\n    {{{ -1740,   -409,  -6578}, 0, {     0,    990}, {0x1b, 0x6e, 0xc9, 0xff}}},\n    {{{ -1740,   1741,  -8114}, 0, { -8920,  -1156}, {0x21, 0x9b, 0x43, 0xff}}},\n    {{{ -1740,   -409,  -8114}, 0, { -8920,    990}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{  -204,   -409,  -8114}, 0, { -5856,    990}, {0xc3, 0x5c, 0x3d, 0xff}}},\n};\n\n// 0x0701D5A0 - 0x0701D708\nstatic const Gfx hmc_seg7_dl_0701D5A0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09006800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&hmc_seg7_lights_0701A4B8.l, 1),\n    gsSPLight(&hmc_seg7_lights_0701A4B8.a, 2),\n    gsSPVertex(hmc_seg7_vertex_0701A530, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  4,  7,  6, 0x0),\n    gsSP2Triangles( 8,  6,  7, 0x0,  8,  9,  6, 0x0),\n    gsSP2Triangles( 3,  5, 10, 0x0,  8,  3, 10, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11,  1,  0, 0x0),\n    gsSP2Triangles(11, 12,  1, 0x0,  0,  2, 13, 0x0),\n    gsSPLight(&hmc_seg7_lights_0701A4D0.l, 1),\n    gsSPLight(&hmc_seg7_lights_0701A4D0.a, 2),\n    gsSPVertex(hmc_seg7_vertex_0701A610, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  3,  5,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 7, 10, 11, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles(10, 12, 11, 0x0, 10, 13, 12, 0x0),\n    gsSP2Triangles(13,  6,  8, 0x0, 13,  8, 12, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701A6F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  5,  7, 0x0),\n    gsSP2Triangles( 3,  8,  6, 0x0,  3,  7,  9, 0x0),\n    gsSP2Triangles( 3,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701D708 - 0x0701D8B0\nstatic const Gfx hmc_seg7_dl_0701D708[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09009800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_0701A7F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  7,  9, 11, 0x0),\n    gsSP2Triangles(12,  7, 11, 0x0, 13, 14, 11, 0x0),\n    gsSP2Triangles(14, 12, 11, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701A8F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  5,  7, 0x0,  6,  5,  1, 0x0),\n    gsSP2Triangles( 1,  5,  9, 0x0,  1,  9, 10, 0x0),\n    gsSP2Triangles(11, 12,  8, 0x0,  8, 13,  5, 0x0),\n    gsSP2Triangles(12, 13,  8, 0x0, 14, 15, 11, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701A9F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  8, 12, 0x0),\n    gsSP2Triangles(10, 13, 14, 0x0, 13, 11, 12, 0x0),\n    gsSP1Triangle(13, 12, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701AAE0, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  0,  3, 0x0,  4,  3,  5, 0x0),\n    gsSP1Triangle( 6,  4,  5, 0x0),\n    gsSPLight(&hmc_seg7_lights_0701A4E8.l, 1),\n    gsSPLight(&hmc_seg7_lights_0701A4E8.a, 2),\n    gsSPVertex(hmc_seg7_vertex_0701AB50, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701D8B0 - 0x0701E228\nstatic const Gfx hmc_seg7_dl_0701D8B0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&hmc_seg7_lights_0701A500.l, 1),\n    gsSPLight(&hmc_seg7_lights_0701A500.a, 2),\n    gsSPVertex(hmc_seg7_vertex_0701AC30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 0,  2,  5, 0x0,  0,  5,  4, 0x0),\n    gsSP2Triangles( 1,  6,  7, 0x0,  1,  7,  2, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles( 8, 10, 13, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles( 6, 14, 15, 0x0,  6, 15,  7, 0x0),\n    gsSP2Triangles(14, 13, 15, 0x0, 14,  8, 13, 0x0),\n    gsSPLight(&hmc_seg7_lights_0701A518.l, 1),\n    gsSPLight(&hmc_seg7_lights_0701A518.a, 2),\n    gsSPVertex(hmc_seg7_vertex_0701AD30, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  3,  5, 0x0,  3,  2,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles( 6,  8, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701AE10, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  6,  1, 0x0),\n    gsSPLight(&hmc_seg7_lights_0701A4B8.l, 1),\n    gsSPLight(&hmc_seg7_lights_0701A4B8.a, 2),\n    gsSPVertex(hmc_seg7_vertex_0701AE80, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 5,  8,  9, 0x0,  5,  9,  7, 0x0),\n    gsSP2Triangles( 5, 10,  8, 0x0, 10, 11,  8, 0x0),\n    gsSPLight(&hmc_seg7_lights_0701A4D0.l, 1),\n    gsSPLight(&hmc_seg7_lights_0701A4D0.a, 2),\n    gsSPVertex(hmc_seg7_vertex_0701AF40, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  5,  7, 0x0,  5,  4,  7, 0x0),\n    gsSP2Triangles( 1,  8,  9, 0x0,  1,  9,  2, 0x0),\n    gsSP2Triangles(10,  2,  9, 0x0, 11, 10,  9, 0x0),\n    gsSP2Triangles(12,  0,  2, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701B040, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  5, 12, 0x0),\n    gsSP2Triangles(13, 12,  5, 0x0,  7, 13,  5, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701B120, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  3,  2, 0x0,  5,  4,  2, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701B220, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  1,  3,  6, 0x0),\n    gsSP2Triangles( 1,  6,  4, 0x0,  1,  5,  7, 0x0),\n    gsSP2Triangles( 1,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0,  9, 13, 14, 0x0),\n    gsSP2Triangles( 9, 12, 13, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701B320, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 2,  5,  3, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 4,  7,  8, 0x0,  4,  9,  6, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701B400, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  2,  1, 0x0,  2,  6,  7, 0x0),\n    gsSP2Triangles( 8,  7,  6, 0x0,  9, 10,  7, 0x0),\n    gsSP2Triangles( 9,  7,  8, 0x0, 11,  3, 12, 0x0),\n    gsSP2Triangles(13,  3,  5, 0x0, 12,  3, 13, 0x0),\n    gsSP1Triangle( 8, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701B500, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  1,  5,  3, 0x0),\n    gsSP2Triangles( 1,  6,  5, 0x0,  0,  6,  1, 0x0),\n    gsSP2Triangles( 6,  7,  5, 0x0,  6,  8,  7, 0x0),\n    gsSP2Triangles( 9,  8,  6, 0x0,  0,  9,  6, 0x0),\n    gsSP2Triangles( 3,  5, 10, 0x0,  5, 11, 10, 0x0),\n    gsSP2Triangles( 5, 12, 11, 0x0,  5,  7, 12, 0x0),\n    gsSP2Triangles(13,  0,  2, 0x0,  9, 14,  8, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701B5F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  0,  3, 0x0,  4,  5,  0, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  0,  5,  6, 0x0),\n    gsSP2Triangles( 7,  8,  5, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 5,  9,  6, 0x0,  5,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  4, 0x0, 11,  4, 12, 0x0),\n    gsSP2Triangles(11, 10,  4, 0x0, 12,  4,  3, 0x0),\n    gsSP2Triangles(10, 13,  7, 0x0,  7, 14,  8, 0x0),\n    gsSP2Triangles(13, 14,  7, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701B6F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  8, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 14, 12, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701B7E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  1,  5,  4, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle(14, 11, 10, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701B8D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  3,  5,  4, 0x0),\n    gsSP2Triangles( 6,  5,  3, 0x0,  6,  3,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 10,  9, 0x0),\n    gsSP2Triangles( 8, 10, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701B9D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  0,  5,  6, 0x0),\n    gsSP2Triangles( 0,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  6,  5, 0x0, 10, 11,  6, 0x0),\n    gsSP2Triangles(12, 11, 10, 0x0, 12, 10, 13, 0x0),\n    gsSP1Triangle(13, 14, 12, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701BAC0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  3, 0x0,  8,  9,  5, 0x0),\n    gsSP2Triangles(10,  2,  1, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles( 8, 14,  9, 0x0,  8, 13, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701BBC0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 1,  6,  7, 0x0,  1,  7,  8, 0x0),\n    gsSP2Triangles( 0,  9, 10, 0x0,  0,  2,  9, 0x0),\n    gsSP2Triangles(11,  5,  4, 0x0, 12, 11,  4, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701BCC0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  4,  3, 0x0),\n    gsSP2Triangles( 7,  8,  4, 0x0,  9,  8,  7, 0x0),\n    gsSP2Triangles( 9, 10,  8, 0x0,  9, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701BDC0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  1,  5,  4, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  7,  6, 0x0),\n    gsSP2Triangles( 6,  8, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(13, 12, 14, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701BEC0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  0, 0x0,  4,  0,  3, 0x0),\n    gsSP2Triangles( 6,  2,  1, 0x0,  6,  7,  2, 0x0),\n    gsSP2Triangles( 8,  5,  4, 0x0,  9,  8,  4, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14,  8, 0x0),\n    gsSP1Triangle(13,  8,  9, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701BFB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  3,  2, 0x0,  4,  5,  3, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0, 15, 11, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701C0B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  0,  5, 0x0,  5,  0,  3, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  8,  3,  7, 0x0),\n    gsSP2Triangles( 5,  3,  8, 0x0,  3,  2,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701C1B0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  3,  5, 0x0,  5,  3,  6, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0, 12, 13,  8, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701C290, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 2,  1,  3, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  9,  8, 11, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 13, 14, 0x0),\n    gsSP1Triangle( 8, 15, 12, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701C390, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  2,  1,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  4,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701C480, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701C560, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701E228 - 0x0701E260\nstatic const Gfx hmc_seg7_dl_0701E228[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_0701C5A0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701E260 - 0x0701E370\nstatic const Gfx hmc_seg7_dl_0701E260[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_0701C5E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  9,  3,  6, 0x0),\n    gsSP2Triangles( 9,  6,  7, 0x0,  2,  1, 11, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701C6E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701C7E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701C8E0, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 3,  6,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701E370 - 0x0701E528\nstatic const Gfx hmc_seg7_dl_0701E370[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_0701C950, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  5,  7, 0x0,  4,  9,  5, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701CA30, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701CB20, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  2,  3,  5, 0x0),\n    gsSP2Triangles( 6,  2,  5, 0x0,  6,  7,  2, 0x0),\n    gsSP2Triangles( 8,  2,  7, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 0,  2,  8, 0x0, 10,  1,  0, 0x0),\n    gsSP2Triangles(10, 11,  1, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701CC10, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  3, 0x0,  2,  1,  6, 0x0),\n    gsSP2Triangles( 2,  6,  7, 0x0,  8,  5,  4, 0x0),\n    gsSP2Triangles( 8,  9,  5, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(10, 13, 11, 0x0, 11, 14, 12, 0x0),\n    gsSP1Triangle(11, 15, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701CD10, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701E528 - 0x0701E688\nstatic const Gfx hmc_seg7_dl_0701E528[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_0701CE10, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  5,  4,  7, 0x0),\n    gsSP2Triangles( 5,  7,  0, 0x0,  0,  7,  8, 0x0),\n    gsSP2Triangles( 0,  8,  9, 0x0,  5,  0,  2, 0x0),\n    gsSP2Triangles( 0,  9,  1, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles( 5,  2, 13, 0x0, 14,  5, 13, 0x0),\n    gsSP1Triangle(14,  3,  5, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701CF00, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0, 15, 11, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701D000, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 3,  5,  8, 0x0,  9,  3,  8, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701D0F0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 6,  5,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701E688 - 0x0701E6D0\nstatic const Gfx hmc_seg7_dl_0701E688[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, hmc_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_0701D1B0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701E6D0 - 0x0701E718\nstatic const Gfx hmc_seg7_dl_0701E6D0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, hmc_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_0701D230, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701E718 - 0x0701E820\nstatic const Gfx hmc_seg7_dl_0701E718[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_0701D2B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 3,  5,  8, 0x0,  9,  3,  8, 0x0),\n    gsSP2Triangles( 9, 10,  3, 0x0, 11, 12,  1, 0x0),\n    gsSP2Triangles( 0, 11,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701D3B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 3,  0,  2, 0x0,  3,  5,  0, 0x0),\n    gsSP2Triangles( 3,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  9, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701D4B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701E820 - 0x0701E958\nconst Gfx hmc_seg7_dl_0701E820[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_0701D5A0),\n    gsSPDisplayList(hmc_seg7_dl_0701D708),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_0701D8B0),\n    gsSPDisplayList(hmc_seg7_dl_0701E228),\n    gsSPDisplayList(hmc_seg7_dl_0701E260),\n    gsSPDisplayList(hmc_seg7_dl_0701E370),\n    gsSPDisplayList(hmc_seg7_dl_0701E528),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_0701E688),\n    gsSPDisplayList(hmc_seg7_dl_0701E6D0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_0701E718),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/25/model.inc.c",
    "content": "// 0x0701E958 - 0x0701EA58\nstatic const Vtx hmc_seg7_vertex_0701E958[] = {\n    {{{ -1391,  -4587,   6251}, 0, {  6156,   1102}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1822,  -4484,   5893}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1749,  -4587,   5893}, 0, {   536,   1102}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1779,   1843,  -6545}, 0, { 16358,  10186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1779,   2867,  -6545}, 0, { 16358,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2830,   2867,  -7807}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2830,   1843,  -7807}, 0, {     0,  10186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1209,  -4484,   5281}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -851,  -4587,   5712}, 0, {  6156,   1102}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1209,  -4587,   5353}, 0, {   536,   1102}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -815,  -4484,   5676}, 0, {  6156,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1749,  -4587,   5893}, 0, {  9000,   1102}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1822,  -4484,   5893}, 0, {  9568,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4290,   -511,  -5769}, 0, {  7158,   1028}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4290,   -511,  -7285}, 0, {     0,   1028}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4290,   -204,  -7285}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701EA58 - 0x0701EB38\nstatic const Vtx hmc_seg7_vertex_0701EA58[] = {\n    {{{ -1391,  -4587,   6251}, 0, {  6156,   1102}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1427,  -4484,   6288}, 0, {  6156,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1822,  -4484,   5893}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1209,  -4484,   5281}, 0, {  3034,   4518}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1822,  -4484,   5893}, 0, {  3034,  -4120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1427,  -4484,   6288}, 0, { -2534,  -4120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -815,  -4484,   5676}, 0, { -2534,   4518}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2774,   -511,  -5769}, 0, {  7158,   1028}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4290,   -511,  -5769}, 0, {     0,   1028}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4290,   -204,  -5769}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2774,   -204,  -5769}, 0, {  7158,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4290,   -511,  -5769}, 0, {  7158,   1028}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4290,   -204,  -7285}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4290,   -204,  -5769}, 0, {  7158,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701EB38 - 0x0701EC28\nstatic const Vtx hmc_seg7_vertex_0701EB38[] = {\n    {{{ -2774,    819,  -7285}, 0, {  7158,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4290,    512,  -7285}, 0, {     0,   1028}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2774,    512,  -7285}, 0, {  7158,   1028}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2774,   -204,  -7285}, 0, {  7158,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4290,   -204,  -7285}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4290,   -511,  -7285}, 0, {     0,   1028}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2774,   -511,  -7285}, 0, {  7158,   1028}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2774,   -204,  -5769}, 0, {  7158,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2774,   -511,  -7285}, 0, {     0,   1028}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2774,   -511,  -5769}, 0, {  7158,   1028}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2774,   -204,  -7285}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2774,    819,  -5769}, 0, {  7158,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2774,    512,  -7285}, 0, {     0,   1028}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2774,    512,  -5769}, 0, {  7158,   1028}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2774,    819,  -7285}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701EC28 - 0x0701ED28\nstatic const Vtx hmc_seg7_vertex_0701EC28[] = {\n    {{{ -2774,   1434,  -5769}, 0, {  7158,   1028}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4290,   1741,  -5769}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2774,   1741,  -5769}, 0, {  7158,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2774,    819,  -7285}, 0, {  7158,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4290,    819,  -7285}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4290,    512,  -7285}, 0, {     0,   1028}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4290,    512,  -5769}, 0, {  7158,   1028}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4290,    819,  -5769}, 0, {  7158,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2774,    512,  -5769}, 0, {  7158,   1028}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4290,    512,  -5769}, 0, {     0,   1028}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4290,    819,  -5769}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2774,    819,  -5769}, 0, {  7158,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4290,   1434,  -5769}, 0, {     0,   1028}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4290,   1434,  -5769}, 0, {  7158,   1028}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4290,   1741,  -7285}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4290,   1741,  -5769}, 0, {  7158,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701ED28 - 0x0701EDB8\nstatic const Vtx hmc_seg7_vertex_0701ED28[] = {\n    {{{ -4290,   1434,  -5769}, 0, {  7158,   1028}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4290,   1434,  -7285}, 0, {     0,   1028}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4290,   1741,  -7285}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2774,   1741,  -7285}, 0, {  7158,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2774,   1434,  -7285}, 0, {  7158,   1028}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2774,   1741,  -5769}, 0, {  7158,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2774,   1434,  -7285}, 0, {     0,   1028}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2774,   1434,  -5769}, 0, {  7158,   1028}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2774,   1741,  -7285}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701EDB8 - 0x0701EEB8\nstatic const Vtx hmc_seg7_vertex_0701EDB8[] = {\n    {{{ -4477,  -4587,   3950}, 0, { 26110,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4367,  -4279,   3245}, 0, { 23224,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4477,  -4587,   3167}, 0, { 23074,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4367,  -4279,   3872}, 0, { 25992,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3845,  -4279,   2723}, 0, { 19852,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3923,  -4587,   2613}, 0, { 19976,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3219,  -4279,   2723}, 0, { 16964,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3140,  -4587,   2613}, 0, { 16826,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2587,  -4587,   3167}, 0, { 13682,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2696,  -4279,   3245}, 0, { 13534,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2587,  -4587,   3950}, 0, { 10586,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2696,  -4279,   3872}, 0, { 10702,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3219,  -4279,   4394}, 0, {  7418,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3140,  -4587,   4503}, 0, {  7558,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3845,  -4279,   4394}, 0, {  4700,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3923,  -4587,   4503}, 0, {  4570,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701EEB8 - 0x0701EF78\nstatic const Vtx hmc_seg7_vertex_0701EEB8[] = {\n    {{{ -4367,  -4279,   3872}, 0, {  1464,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3923,  -4587,   4503}, 0, {  4570,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3845,  -4279,   4394}, 0, {  4700,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4477,  -4587,   3950}, 0, {  1582,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -819,  -4279,   5665}, 0, { -3606,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   563,  -4279,   5596}, 0, {-13860,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   563,  -4535,   5596}, 0, {-13860,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -819,  -4535,   5665}, 0, { -3606,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1437,  -4279,   6283}, 0, {  5110,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1437,  -4535,   6283}, 0, {  5110,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1494,  -4279,   7654}, 0, { 15190,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1494,  -4535,   7654}, 0, { 15190,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701EF78 - 0x0701F0D0\nstatic const Gfx hmc_seg7_dl_0701EF78[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_0701E958, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12,  9, 0x0),\n    gsSP2Triangles(12,  7,  9, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701EA58, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701EB38, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701EC28, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  4,  7, 0x0,  6,  5,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701ED28, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  4, 0x0),\n    gsSP2Triangles( 3,  2,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP1Triangle( 5,  8,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701F0D0 - 0x0701F1B0\nstatic const Gfx hmc_seg7_dl_0701F0D0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_0701EDB8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  6,  9,  8, 0x0),\n    gsSP2Triangles( 9, 10,  8, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 11, 0x0, 13, 10, 11, 0x0),\n    gsSP2Triangles(13, 14, 15, 0x0, 13, 12, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701EEB8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 7,  8,  4, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles( 9, 10,  8, 0x0,  9, 11, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701F1B0 - 0x0701F288\nconst Gfx hmc_seg7_dl_0701F1B0[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_0701EF78),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_0701F0D0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/26/model.inc.c",
    "content": "// 0x0701F288 - 0x0701F388\nstatic const Vtx hmc_seg7_vertex_0701F288[] = {\n    {{{ -4044,   -695,   5606}, 0, { -5140,    990}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{ -5580,  -5201,   5094}, 0, { -8206,   -134}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{ -4556,   -695,   5606}, 0, { -6162,    990}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{ -5580,   -695,   4070}, 0, {     0,    990}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{ -6092,  -5201,   3558}, 0, { -1052,   -134}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{ -5068,   -695,   4070}, 0, {   990,    990}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{ -6604,  -5201,   3558}, 0, { -2074,   -134}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{ -5580,   -695,   3558}, 0, {     0,    990}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{ -6604,  -5201,   3046}, 0, { -2074,   -134}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{ -6092,  -5201,   3046}, 0, { -1052,   -134}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{ -5068,   -695,   3558}, 0, {   990,    990}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{ -5580,  -5201,   5606}, 0, { -8206,   -134}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{ -4556,   -695,   6118}, 0, { -6162,    990}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{  -972,   -695,   4070}, 0, {   990,    990}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{ -1996,  -5201,   3558}, 0, { -1052,   -134}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{ -2508,  -5201,   3558}, 0, { -2074,   -134}, {0xcd, 0xc4, 0x97, 0xff}}},\n};\n\n// 0x0701F388 - 0x0701F488\nstatic const Vtx hmc_seg7_vertex_0701F388[] = {\n    {{{ -4044,   -695,   5606}, 0, { -5140,    990}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{ -5068,  -5201,   5094}, 0, { -7184,   -134}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{ -5580,  -5201,   5094}, 0, { -8206,   -134}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{ -4556,   -695,   6118}, 0, { -6162,    990}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{ -5580,  -5201,   5606}, 0, { -8206,   -134}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{ -5068,  -5201,   5606}, 0, { -7184,   -134}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{ -4044,   -695,   6118}, 0, { -5140,    990}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{  -972,   -695,   4070}, 0, {   990,    990}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{ -2508,  -5201,   3558}, 0, { -2074,   -134}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{ -1484,   -695,   4070}, 0, {     0,    990}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{ -2508,  -5201,   4070}, 0, { -2074,   -134}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{ -1484,   -695,   4582}, 0, {     0,    990}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{ -3020,   -695,   2022}, 0, { -3096,    990}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{ -4044,  -5201,   1510}, 0, { -5140,   -134}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{ -3532,  -5201,   1510}, 0, { -4118,   -134}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{ -1996,  -5201,   4070}, 0, { -1052,   -134}, {0xcd, 0xc4, 0x97, 0xff}}},\n};\n\n// 0x0701F488 - 0x0701F558\nstatic const Vtx hmc_seg7_vertex_0701F488[] = {\n    {{{ -1484,   -695,   4582}, 0, {     0,    990}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{ -1996,  -5201,   4070}, 0, { -1052,   -134}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{  -972,   -695,   4582}, 0, {   990,    990}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{ -1996,  -5201,   3558}, 0, { -1052,   -134}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{  -972,   -695,   4070}, 0, {   990,    990}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{ -3020,   -695,   1510}, 0, { -3096,    990}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{ -4044,  -5201,    998}, 0, { -5140,   -134}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{ -4044,  -5201,   1510}, 0, { -5140,   -134}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{ -2508,   -695,   1510}, 0, { -2074,    990}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{ -3020,   -695,   2022}, 0, { -3096,    990}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{ -3532,  -5201,    998}, 0, { -4118,   -134}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{ -2508,   -695,   2022}, 0, { -2074,    990}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{ -3532,  -5201,   1510}, 0, { -4118,   -134}, {0xcd, 0xc4, 0x97, 0xff}}},\n};\n\n// 0x0701F558 - 0x0701F690\nstatic const Gfx hmc_seg7_dl_0701F558[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, cave_0900B800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_0701F288, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  6,  3, 0x0),\n    gsSP2Triangles( 7,  8,  6, 0x0,  5,  4,  9, 0x0),\n    gsSP2Triangles( 5,  9, 10, 0x0, 10,  9,  8, 0x0),\n    gsSP2Triangles(10,  8,  7, 0x0,  2,  1, 11, 0x0),\n    gsSP2Triangles( 2, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701F388, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  6,  1,  0, 0x0),\n    gsSP2Triangles( 6,  5,  1, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9,  8, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 11, 10, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701F488, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 2,  1,  3, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  6,  5, 0x0,  5,  7,  9, 0x0),\n    gsSP2Triangles( 8, 10,  6, 0x0, 11, 12, 10, 0x0),\n    gsSP2Triangles( 9, 12, 11, 0x0, 11, 10,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701F690 - 0x0701F700\nconst Gfx hmc_seg7_dl_0701F690[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_0701F558),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/27/model.inc.c",
    "content": "// 0x0701F700 - 0x0701F7C0\nstatic const Vtx hmc_seg7_vertex_0701F700[] = {\n    {{{ -1689,  -4177,   -526}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{ -2201,  -4689,   -526}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{ -1689,  -4689,   -526}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{ -2201,  -4177,   -526}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{ -4863,  -4177,   -526}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{ -5375,  -4689,   -526}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{ -4863,  -4689,   -526}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{ -5375,  -4177,   -526}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{ -2774,   -101,  -6271}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{ -2774,    410,  -6783}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{ -2774,   -101,  -6783}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{ -2774,    410,  -6271}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n};\n\n// 0x0701F7C0 - 0x0701F818\nstatic const Gfx hmc_seg7_dl_0701F7C0[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, cave_0900C000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_0701F700, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701F818 - 0x0701F888\nconst Gfx hmc_seg7_dl_0701F818[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_0701F7C0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/28/model.inc.c",
    "content": "// 0x0701F888 - 0x0701F988\nstatic const Vtx hmc_seg7_vertex_0701F888[] = {\n    {{{ -2774,    205,  -6476}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2876,    205,  -6476}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2876,    102,  -6476}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2774,    102,  -6476}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2876,    102,  -6578}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2774,    102,  -6578}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2774,    102,  -6578}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2876,    205,  -6578}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2774,    205,  -6578}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2876,    102,  -6578}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2876,    205,  -6476}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2774,    205,  -6476}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2876,    205,  -6578}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1996,  -4484,   -526}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1996,  -4484,   -424}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1996,  -4382,   -424}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701F988 - 0x0701FA68\nstatic const Vtx hmc_seg7_vertex_0701F988[] = {\n    {{{ -2774,    205,  -6476}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2876,    102,  -6476}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2774,    102,  -6476}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2876,    205,  -6578}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2876,    102,  -6578}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2876,    205,  -6476}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1996,  -4382,   -526}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1893,  -4382,   -424}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1893,  -4382,   -526}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1996,  -4382,   -424}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1996,  -4484,   -526}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5068,  -4382,   -526}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5068,  -4484,   -424}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5068,  -4484,   -526}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701FA68 - 0x0701FB68\nstatic const Vtx hmc_seg7_vertex_0701FA68[] = {\n    {{{ -1893,  -4382,   -424}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1996,  -4484,   -424}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1893,  -4484,   -424}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1996,  -4382,   -424}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1893,  -4382,   -526}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1893,  -4484,   -526}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1893,  -4382,   -424}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1996,  -4484,   -526}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5170,  -4382,   -526}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5170,  -4382,   -424}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5068,  -4382,   -424}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5068,  -4382,   -526}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5068,  -4382,   -424}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5068,  -4484,   -424}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5068,  -4484,   -526}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5170,  -4484,   -424}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701FB68 - 0x0701FC28\nstatic const Vtx hmc_seg7_vertex_0701FB68[] = {\n    {{{ -5068,  -4484,   -526}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5170,  -4484,   -424}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5170,  -4484,   -526}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5170,  -4484,   -526}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5170,  -4382,   -424}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5170,  -4382,   -526}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5170,  -4484,   -424}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5068,  -4382,   -424}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5068,  -4382,   -526}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5068,  -4382,   -424}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5068,  -4484,   -424}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5170,  -4382,   -424}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701FC28 - 0x0701FD58\nstatic const Gfx hmc_seg7_dl_0701FC28[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_0900A000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_0701F888, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  9,  7, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 8, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701F988, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 1,  5,  3, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  9,  7, 0x0, 10,  9,  6, 0x0),\n    gsSP1Triangle(11, 12, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701FA68, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  2,  5, 0x0,  4,  6,  2, 0x0),\n    gsSP2Triangles( 5,  1,  7, 0x0,  5,  2,  1, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 13, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701FB68, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 9,  1, 10, 0x0,  9, 11,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701FD58 - 0x0701FDC8\nconst Gfx hmc_seg7_dl_0701FD58[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_0701FC28),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/29/model.inc.c",
    "content": "// 0x070200B0 - 0x070200C8\nstatic const Lights1 hmc_seg7_lights_070200B0 = gdSPDefLights1(\n    0x79, 0x79, 0x79,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x070200C8 - 0x070201C8\nstatic const Vtx hmc_seg7_vertex_070200C8[] = {\n    {{{  -124,  -4279,   6439}, 0, { -2902,    700}, {0x18, 0x65, 0x47, 0xff}}},\n    {{{  -631,  -4279,   6946}, 0, { -3306,   1204}, {0x77, 0x2a, 0x00, 0xff}}},\n    {{{    20,  -4279,   7598}, 0, { -2526,   1856}, {0x1a, 0x49, 0x9d, 0xff}}},\n    {{{  3351,  -4279,   5860}, 0, {   450,    122}, {0x00, 0x72, 0xca, 0xff}}},\n    {{{  1396,  -4279,   4919}, 0, { -1686,   -816}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3206,  -4279,   6729}, 0, {   480,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5233,  -4279,   4701}, 0, {  2098,  -1034}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4437,  -4279,   4774}, 0, {  1318,   -962}, {0xc6, 0x6e, 0xed, 0xff}}},\n    {{{  3423,  -4279,   2891}, 0, {   -68,  -2840}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3351,  -4279,   3688}, 0, {    16,  -2046}, {0xe3, 0x54, 0x59, 0xff}}},\n    {{{  2265,  -4279,   4774}, 0, {  -848,   -962}, {0x57, 0x5c, 0x00, 0xff}}},\n    {{{   889,  -4279,   7598}, 0, { -1658,   1856}, {0xf0, 0x77, 0xd8, 0xff}}},\n    {{{   382,  -4279,   6946}, 0, { -2294,   1204}, {0xcc, 0x49, 0x59, 0xff}}},\n    {{{  -486,  -4279,   6801}, 0, { -3190,   1060}, {0x59, 0x54, 0xe3, 0xff}}},\n    {{{  -268,  -4279,   6584}, 0, { -3016,    846}, {0xdd, 0x33, 0x6e, 0xff}}},\n    {{{  -305,  -4279,   6548}, 0, { -3060,    810}, {0xd9, 0x71, 0x28, 0xff}}},\n};\n\n// 0x070201C8 - 0x07020248\nstatic const Vtx hmc_seg7_vertex_070201C8[] = {\n    {{{   889,  -4279,   7598}, 0, { -1658,   1856}, {0xf0, 0x77, 0xd8, 0xff}}},\n    {{{  2120,  -4279,   5643}, 0, {  -820,    -94}, {0x67, 0x49, 0x00, 0xff}}},\n    {{{   817,  -4279,   6946}, 0, { -1860,   1204}, {0x1a, 0x49, 0x63, 0xff}}},\n    {{{   382,  -4279,   6946}, 0, { -2294,   1204}, {0xcc, 0x49, 0x59, 0xff}}},\n    {{{  2482,  -4279,   6005}, 0, {  -386,    268}, {0xdc, 0x33, 0x93, 0xff}}},\n    {{{  -486,  -4279,   6801}, 0, { -3190,   1060}, {0x59, 0x54, 0xe3, 0xff}}},\n    {{{  -305,  -4279,   6548}, 0, { -3060,    810}, {0xd9, 0x71, 0x28, 0xff}}},\n    {{{  -522,  -4279,   6765}, 0, { -3234,   1024}, {0x3f, 0x59, 0xc1, 0xff}}},\n};\n\n// 0x07020248 - 0x07020308\nstatic const Vtx hmc_seg7_vertex_07020248[] = {\n    {{{  3496,  -4382,   4412}, 0, {   790,   -716}, {0xd5, 0x5c, 0x4a, 0xff}}},\n    {{{  4437,  -4382,   4774}, 0, {  2356,    408}, {0xcf, 0x73, 0x10, 0xff}}},\n    {{{  3351,  -4382,   3688}, 0, {   550,  -2002}, {0x13, 0x6e, 0x3a, 0xff}}},\n    {{{  3713,  -4382,   4629}, 0, {  1152,   -234}, {0x9d, 0x49, 0x1a, 0xff}}},\n    {{{  3713,  -4382,   4919}, 0, {  1152,    248}, {0xa7, 0x49, 0xcc, 0xff}}},\n    {{{  3496,  -4382,   5136}, 0, {   790,    488}, {0xeb, 0x5c, 0xad, 0xff}}},\n    {{{  3351,  -4382,   5860}, 0, {   550,   1610}, {0x00, 0x67, 0xb7, 0xff}}},\n    {{{  3206,  -4382,   5136}, 0, {   308,    328}, {0x34, 0x49, 0xa7, 0xff}}},\n    {{{  2989,  -4382,   4919}, 0, {   -50,   -154}, {0x53, 0x5c, 0xeb, 0xff}}},\n    {{{  2265,  -4382,   4774}, 0, { -1256,   -796}, {0x36, 0x72, 0x00, 0xff}}},\n    {{{  3206,  -4382,   4412}, 0, {   308,   -876}, {0x1a, 0x49, 0x63, 0xff}}},\n    {{{  2989,  -4382,   4629}, 0, {   -50,   -636}, {0x4a, 0x5c, 0x2b, 0xff}}},\n};\n\n// 0x07020308 - 0x070203E8\nstatic const Vtx hmc_seg7_vertex_07020308[] = {\n    {{{  3351,  -4279,   3688}, 0, {  8240,      0}, {0xe3, 0x54, 0x59, 0xff}}},\n    {{{  3351,  -4382,   3688}, 0, {  8240,    480}, {0x13, 0x6e, 0x3a, 0xff}}},\n    {{{  4437,  -4382,   4774}, 0, {  4056,    480}, {0xcf, 0x73, 0x10, 0xff}}},\n    {{{  4437,  -4279,   4774}, 0, {  4056,      0}, {0xc6, 0x6e, 0xed, 0xff}}},\n    {{{  2265,  -4279,   4774}, 0, { 12232,      0}, {0x57, 0x5c, 0x00, 0xff}}},\n    {{{  2265,  -4382,   4774}, 0, { 12232,    480}, {0x36, 0x72, 0x00, 0xff}}},\n    {{{  4437,  -4279,   4774}, 0, { 20408,      0}, {0xc6, 0x6e, 0xed, 0xff}}},\n    {{{  4437,  -4382,   4774}, 0, { 20408,    480}, {0xcf, 0x73, 0x10, 0xff}}},\n    {{{  3351,  -4382,   5860}, 0, { 16224,    480}, {0x00, 0x67, 0xb7, 0xff}}},\n    {{{  3351,  -4279,   5860}, 0, { 16224,      0}, {0x00, 0x72, 0xca, 0xff}}},\n    {{{  3496,  -4382,   5136}, 0, { 17052,    480}, {0xeb, 0x5c, 0xad, 0xff}}},\n    {{{  3496,  -4689,   5136}, 0, { 17052,   2012}, {0xcc, 0x49, 0xa7, 0xff}}},\n    {{{  3206,  -4689,   5136}, 0, { 15090,   2012}, {0x1a, 0x49, 0x9d, 0xff}}},\n    {{{  3206,  -4382,   5136}, 0, { 15090,    480}, {0x34, 0x49, 0xa7, 0xff}}},\n};\n\n// 0x070203E8 - 0x070204E8\nstatic const Vtx hmc_seg7_vertex_070203E8[] = {\n    {{{  3713,  -4382,   4629}, 0, {  5156,    480}, {0x9d, 0x49, 0x1a, 0xff}}},\n    {{{  3713,  -4689,   4629}, 0, {  5156,   2012}, {0xa7, 0x49, 0x34, 0xff}}},\n    {{{  3713,  -4689,   4919}, 0, {  2956,   2012}, {0x9d, 0x49, 0xe6, 0xff}}},\n    {{{  3206,  -4382,   5136}, 0, { 15090,    480}, {0x34, 0x49, 0xa7, 0xff}}},\n    {{{  3206,  -4689,   5136}, 0, { 15090,   2012}, {0x1a, 0x49, 0x9d, 0xff}}},\n    {{{  2989,  -4689,   4919}, 0, { 13132,   2012}, {0x59, 0x49, 0xcc, 0xff}}},\n    {{{  2989,  -4382,   4919}, 0, { 13132,    480}, {0x53, 0x5c, 0xeb, 0xff}}},\n    {{{  2989,  -4689,   4629}, 0, { 11332,   2012}, {0x73, 0x2a, 0x1e, 0xff}}},\n    {{{  2989,  -4382,   4629}, 0, { 11332,    480}, {0x4a, 0x5c, 0x2b, 0xff}}},\n    {{{  3206,  -4689,   4412}, 0, {  9374,   2012}, {0x1b, 0x73, 0x2e, 0xff}}},\n    {{{  3206,  -4382,   4412}, 0, {  9374,    480}, {0x1a, 0x49, 0x63, 0xff}}},\n    {{{  3496,  -4689,   4412}, 0, {  7412,   2012}, {0xe2, 0x2a, 0x73, 0xff}}},\n    {{{  3496,  -4382,   4412}, 0, {  7412,    480}, {0xd5, 0x5c, 0x4a, 0xff}}},\n    {{{  3713,  -4382,   4919}, 0, {  2956,    480}, {0xa7, 0x49, 0xcc, 0xff}}},\n    {{{  3496,  -4689,   5136}, 0, {   700,   2012}, {0xcc, 0x49, 0xa7, 0xff}}},\n    {{{  3496,  -4382,   5136}, 0, {   700,    480}, {0xeb, 0x5c, 0xad, 0xff}}},\n};\n\n// 0x070204E8 - 0x070205E8\nstatic const Vtx hmc_seg7_vertex_070204E8[] = {\n    {{{  3134,  -4279,   6511}, 0, {   734,   2012}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{  3134,  -3255,   6511}, 0, {   734,      0}, {0xc0, 0x00, 0x93, 0xff}}},\n    {{{  3278,  -3255,   6511}, 0, {   224,      0}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{  5089,  -4279,   4846}, 0, {   990,   2012}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  5089,  -3255,   4846}, 0, {   990,      0}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  5016,  -3255,   4774}, 0, {   734,      0}, {0x93, 0x00, 0x40, 0xff}}},\n    {{{  5016,  -4279,   4774}, 0, {   734,   2012}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{  5016,  -3255,   4629}, 0, {   224,      0}, {0x86, 0x00, 0xe0, 0xff}}},\n    {{{  5016,  -4279,   4629}, 0, {   224,   2012}, {0x93, 0x00, 0xc0, 0xff}}},\n    {{{  5089,  -3255,   4556}, 0, {     0,      0}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  5089,  -4279,   4556}, 0, {     0,   2012}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  3061,  -4279,   6584}, 0, {   990,   2012}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{  3061,  -3255,   6584}, 0, {   990,      0}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{  1613,  -4279,   4991}, 0, {   224,   2012}, {0x6d, 0x00, 0x40, 0xff}}},\n    {{{  1541,  -3255,   5063}, 0, {     0,      0}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{  1541,  -4279,   5063}, 0, {     0,   2012}, {0x7e, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070205E8 - 0x070206D8\nstatic const Vtx hmc_seg7_vertex_070205E8[] = {\n    {{{  3134,  -4279,   6511}, 0, {   734,   2012}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{  3278,  -3255,   6511}, 0, {   224,      0}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{  3278,  -4279,   6511}, 0, {   224,   2012}, {0x40, 0x00, 0x93, 0xff}}},\n    {{{  3351,  -3255,   6584}, 0, {     0,      0}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{  3351,  -4279,   6584}, 0, {     0,   2012}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{  1541,  -4279,   4774}, 0, {   990,   2012}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{  1541,  -3255,   4774}, 0, {   990,      0}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{  1613,  -3255,   4846}, 0, {   734,      0}, {0x6d, 0x00, 0xc0, 0xff}}},\n    {{{  1613,  -4279,   4846}, 0, {   734,   2012}, {0x7a, 0x00, 0xe0, 0xff}}},\n    {{{  1613,  -3255,   4991}, 0, {   224,      0}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{  1613,  -4279,   4991}, 0, {   224,   2012}, {0x6d, 0x00, 0x40, 0xff}}},\n    {{{  1541,  -3255,   5063}, 0, {     0,      0}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{  3061,  -4279,   6584}, 0, { -1666,   2012}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{  2482,  -3255,   6005}, 0, {     0,      0}, {0x28, 0x00, 0x88, 0xff}}},\n    {{{  3061,  -3255,   6584}, 0, { -1666,      0}, {0x00, 0x00, 0x82, 0xff}}},\n};\n\n// 0x070206D8 - 0x070207C8\nstatic const Vtx hmc_seg7_vertex_070206D8[] = {\n    {{{  1541,  -4279,   4774}, 0, {     0,   2012}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{  3278,  -4279,   3036}, 0, {  4874,   2012}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{  3278,  -3255,   3036}, 0, {  4874,      0}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{  1541,  -3255,   4774}, 0, {     0,      0}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{  3568,  -4279,   3036}, 0, {     0,   2012}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{  5089,  -3255,   4556}, 0, {  4260,      0}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  3568,  -3255,   3036}, 0, {     0,      0}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{  5089,  -4279,   4556}, 0, {  4260,   2012}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  5089,  -4279,   4846}, 0, {     0,   2012}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  3351,  -4279,   6584}, 0, {  4874,   2012}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{  3351,  -3255,   6584}, 0, {  4874,      0}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{  5089,  -3255,   4846}, 0, {     0,      0}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  3496,  -4279,   3108}, 0, {   734,   2012}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  3351,  -3255,   3108}, 0, {   224,      0}, {0xe1, 0x00, 0x7a, 0xff}}},\n    {{{  3351,  -4279,   3108}, 0, {   224,   2012}, {0xc1, 0x00, 0x6d, 0xff}}},\n};\n\n// 0x070207C8 - 0x070208B8\nstatic const Vtx hmc_seg7_vertex_070207C8[] = {\n    {{{  3061,  -4279,   6584}, 0, { -1666,   2012}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{  2482,  -4279,   6005}, 0, {     0,   2012}, {0xdc, 0x33, 0x93, 0xff}}},\n    {{{  2482,  -3255,   6005}, 0, {     0,      0}, {0x28, 0x00, 0x88, 0xff}}},\n    {{{  2120,  -4279,   5643}, 0, {   990,   2012}, {0x67, 0x49, 0x00, 0xff}}},\n    {{{  1541,  -4279,   5063}, 0, {  2626,   2012}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{  1541,  -3255,   5063}, 0, {  2626,      0}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{  2120,  -3255,   5643}, 0, {   990,      0}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{  3568,  -4279,   3036}, 0, {   990,   2012}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{  3568,  -3255,   3036}, 0, {   990,      0}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{  3496,  -3255,   3108}, 0, {   734,      0}, {0x40, 0x00, 0x6d, 0xff}}},\n    {{{  3496,  -4279,   3108}, 0, {   734,   2012}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  3351,  -3255,   3108}, 0, {   224,      0}, {0xe1, 0x00, 0x7a, 0xff}}},\n    {{{  3351,  -4279,   3108}, 0, {   224,   2012}, {0xc1, 0x00, 0x6d, 0xff}}},\n    {{{  3278,  -3255,   3036}, 0, {     0,      0}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{  3278,  -4279,   3036}, 0, {     0,   2012}, {0x00, 0x00, 0x7e, 0xff}}},\n};\n\n// 0x070208B8 - 0x07020998\nstatic const Vtx hmc_seg7_vertex_070208B8[] = {\n    {{{  2482,  -4279,   6005}, 0, {   992,    990}, {0xdc, 0x33, 0x93, 0xff}}},\n    {{{   889,  -4279,   7598}, 0, {  4952,    990}, {0xf0, 0x77, 0xd8, 0xff}}},\n    {{{   889,  -3255,   7598}, 0, {  4952,      0}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{  2482,  -3255,   6005}, 0, {   988,      0}, {0x28, 0x00, 0x88, 0xff}}},\n    {{{    20,  -4279,   7598}, 0, {  6616,    990}, {0x1a, 0x49, 0x9d, 0xff}}},\n    {{{    20,  -3255,   7598}, 0, {  6616,      0}, {0x40, 0x00, 0x93, 0xff}}},\n    {{{   382,  -3255,   6946}, 0, {   664,      0}, {0xe0, 0x00, 0x7a, 0xff}}},\n    {{{   817,  -4279,   6946}, 0, {  1496,    990}, {0x1a, 0x49, 0x63, 0xff}}},\n    {{{   817,  -3255,   6946}, 0, {  1496,      0}, {0x40, 0x00, 0x6d, 0xff}}},\n    {{{  2120,  -4279,   5643}, 0, {  4176,    990}, {0x67, 0x49, 0x00, 0xff}}},\n    {{{  2120,  -3255,   5643}, 0, {  4176,      0}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{   382,  -4279,   6946}, 0, {   664,    990}, {0xcc, 0x49, 0x59, 0xff}}},\n    {{{  -631,  -4279,   6946}, 0, {  7484,    990}, {0x77, 0x2a, 0x00, 0xff}}},\n    {{{  -631,  -3255,   6946}, 0, {  7484,      0}, {0x78, 0x00, 0x28, 0xff}}},\n};\n\n// 0x07020998 - 0x07020A98\nstatic const Vtx hmc_seg7_vertex_07020998[] = {\n    {{{  -486,  -4023,   6801}, 0, {   552,    734}, {0x69, 0xe3, 0x3f, 0xff}}},\n    {{{  -631,  -3255,   6946}, 0, {     0,      0}, {0x78, 0x00, 0x28, 0xff}}},\n    {{{  -631,  -4279,   6946}, 0, {     0,    990}, {0x77, 0x2a, 0x00, 0xff}}},\n    {{{  -124,  -3255,   6439}, 0, {     0,      0}, {0x18, 0x00, 0x7c, 0xff}}},\n    {{{   382,  -4279,   6946}, 0, {   664,    990}, {0xcc, 0x49, 0x59, 0xff}}},\n    {{{   382,  -3255,   6946}, 0, {   664,      0}, {0xe0, 0x00, 0x7a, 0xff}}},\n    {{{  -124,  -4279,   6439}, 0, {     0,    990}, {0x18, 0x65, 0x47, 0xff}}},\n    {{{  -268,  -4023,   6584}, 0, {  1428,    734}, {0x30, 0xbd, 0x5f, 0xff}}},\n    {{{  -305,  -4023,   6548}, 0, {  1428,    734}, {0xb1, 0xc8, 0x51, 0xff}}},\n    {{{  -268,  -4279,   6584}, 0, {  1428,    990}, {0xdd, 0x33, 0x6e, 0xff}}},\n    {{{  -124,  -3255,   6439}, 0, {  2012,      0}, {0x18, 0x00, 0x7c, 0xff}}},\n    {{{  -124,  -4279,   6439}, 0, {  2012,    990}, {0x18, 0x65, 0x47, 0xff}}},\n    {{{  -522,  -4023,   6765}, 0, {   552,    734}, {0x3f, 0xa7, 0xc1, 0xff}}},\n    {{{  -486,  -4279,   6801}, 0, {   552,    990}, {0x59, 0x54, 0xe3, 0xff}}},\n    {{{  -522,  -4279,   6765}, 0, {   552,    990}, {0x3f, 0x59, 0xc1, 0xff}}},\n    {{{  -305,  -4279,   6548}, 0, {  1428,    990}, {0xd9, 0x71, 0x28, 0xff}}},\n};\n\n// 0x07020A98 - 0x07020B18\nstatic const Vtx hmc_seg7_vertex_07020A98[] = {\n    {{{  3206,  -4689,   4412}, 0, {     0,      0}, {0x1b, 0x73, 0x2e, 0xff}}},\n    {{{  3713,  -4689,   4629}, 0, {     0,      0}, {0xa7, 0x49, 0x34, 0xff}}},\n    {{{  3496,  -4689,   4412}, 0, {     0,      0}, {0xe2, 0x2a, 0x73, 0xff}}},\n    {{{  3713,  -4689,   4919}, 0, {     0,      0}, {0x9d, 0x49, 0xe6, 0xff}}},\n    {{{  2989,  -4689,   4919}, 0, {     0,      0}, {0x59, 0x49, 0xcc, 0xff}}},\n    {{{  3206,  -4689,   5136}, 0, {     0,      0}, {0x1a, 0x49, 0x9d, 0xff}}},\n    {{{  2989,  -4689,   4629}, 0, {     0,      0}, {0x73, 0x2a, 0x1e, 0xff}}},\n    {{{  3496,  -4689,   5136}, 0, {     0,      0}, {0xcc, 0x49, 0xa7, 0xff}}},\n};\n\n// 0x07020B18 - 0x07020BD8\nstatic const Gfx hmc_seg7_dl_07020B18[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09006800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&hmc_seg7_lights_070200B0.l, 1),\n    gsSPLight(&hmc_seg7_lights_070200B0.a, 2),\n    gsSPVertex(hmc_seg7_vertex_070200C8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  7,  3, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  9,  7,  8, 0x0),\n    gsSP2Triangles( 3, 10,  4, 0x0, 10,  8,  4, 0x0),\n    gsSP2Triangles(10,  9,  8, 0x0,  0,  2, 11, 0x0),\n    gsSP2Triangles(11, 12,  0, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_070201C8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  5,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07020BD8 - 0x07020C60\nstatic const Gfx hmc_seg7_dl_07020BD8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09009800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_07020248, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 1,  5,  6, 0x0,  1,  4,  5, 0x0),\n    gsSP2Triangles( 0,  3,  1, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles(10,  0,  2, 0x0, 11,  2,  9, 0x0),\n    gsSP2Triangles(11, 10,  2, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07020C60 - 0x07020D50\nstatic const Gfx hmc_seg7_dl_07020C60[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_07020308, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  1,  0, 0x0,  4,  5,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 9,  8,  4, 0x0,  8,  5,  4, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_070203E8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11,  1, 0x0),\n    gsSP2Triangles(12,  1,  0, 0x0, 13, 14, 15, 0x0),\n    gsSP2Triangles( 0,  2, 13, 0x0, 13,  2, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07020D50 - 0x07020EA0\nstatic const Gfx hmc_seg7_dl_07020D50[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_070204E8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  1,  0, 0x0),\n    gsSP2Triangles(11, 12,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_070205E8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_070206D8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_070207C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(12, 11, 13, 0x0, 12, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07020EA0 - 0x07020F90\nstatic const Gfx hmc_seg7_dl_07020EA0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_070208B8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 8,  7,  9, 0x0,  6, 11,  7, 0x0),\n    gsSP2Triangles( 5, 12, 13, 0x0,  5,  4, 12, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07020998, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 0,  7, 10, 0x0,  7, 11, 10, 0x0),\n    gsSP2Triangles( 7,  9, 11, 0x0,  0, 10,  1, 0x0),\n    gsSP2Triangles(12,  0, 13, 0x0, 12,  8,  7, 0x0),\n    gsSP2Triangles( 0,  2, 13, 0x0, 12, 13, 14, 0x0),\n    gsSP2Triangles( 8, 15,  9, 0x0, 12,  7,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07020F90 - 0x07020FD0\nstatic const Gfx hmc_seg7_dl_07020F90[] = {\n    gsSPVertex(hmc_seg7_vertex_07020A98, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  0,  6,  4, 0x0),\n    gsSP2Triangles( 0,  7,  3, 0x0,  0,  5,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07020FD0 - 0x070210E0\nconst Gfx hmc_seg7_dl_07020FD0[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_07020B18),\n    gsSPDisplayList(hmc_seg7_dl_07020BD8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_07020C60),\n    gsSPDisplayList(hmc_seg7_dl_07020D50),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_07020EA0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_PASS2),\n    gsSPDisplayList(hmc_seg7_dl_07020F90),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/3/model.inc.c",
    "content": "// 0x07007C08 - 0x07007CF8\nstatic const Vtx hmc_seg7_vertex_07007C08[] = {\n    {{{ -3868,   2918,   5464}, 0, {   990,      0}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -4230,   2918,   5826}, 0, {     0,      0}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -4230,   2406,   5826}, 0, {     0,    990}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -8056,   3072,   7673}, 0, {   990,      0}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -7693,   2560,   8035}, 0, {     0,    990}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -8056,   2560,   7673}, 0, {   990,    990}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -7693,   3072,   8035}, 0, {     0,      0}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{   297,   2816,   3917}, 0, {   990,      0}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{   297,   2304,   3405}, 0, {     0,    990}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{   297,   2304,   3917}, 0, {   990,    990}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{   297,   2816,   3405}, 0, {     0,      0}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -4965,   2918,   6129}, 0, {   990,      0}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -5477,   2406,   6129}, 0, {     0,    990}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -4965,   2406,   6129}, 0, {   990,    990}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -5477,   2918,   6129}, 0, {     0,      0}, {0xff, 0xe6, 0x00, 0xb4}}},\n};\n\n// 0x07007CF8 - 0x07007DE8\nstatic const Vtx hmc_seg7_vertex_07007CF8[] = {\n    {{{ -3094,   2918,   5731}, 0, {   990,      0}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -2865,   2918,   5273}, 0, {     0,      0}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -2865,   2406,   5273}, 0, {     0,    990}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -3868,   2918,   5464}, 0, {   990,      0}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -4230,   2406,   5826}, 0, {     0,    990}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -3868,   2406,   5464}, 0, {   990,    990}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -2851,   2918,   4037}, 0, {   990,      0}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -3213,   2406,   4399}, 0, {     0,    990}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -2851,   2406,   4037}, 0, {   990,    990}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -3213,   2918,   4399}, 0, {     0,      0}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -1976,   2918,   4382}, 0, {   990,      0}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -1518,   2406,   4153}, 0, {     0,    990}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -1976,   2406,   4382}, 0, {   990,    990}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -1518,   2918,   4153}, 0, {     0,      0}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -3094,   2406,   5731}, 0, {   990,    990}, {0xff, 0xe6, 0x00, 0xb4}}},\n};\n\n// 0x07007DE8 - 0x07007ED8\nstatic const Vtx hmc_seg7_vertex_07007DE8[] = {\n    {{{ -6850,   2048,   2842}, 0, {   990,    990}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -6850,   2560,   2842}, 0, {   990,      0}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -6850,   2560,   3354}, 0, {     0,      0}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -4434,   2918,   6839}, 0, {   990,      0}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -3976,   2406,   6610}, 0, {     0,    990}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -4434,   2406,   6839}, 0, {   990,    990}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -3976,   2918,   6610}, 0, {     0,      0}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -6256,   2253,   4275}, 0, {   990,    990}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -6256,   2765,   3763}, 0, {     0,      0}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -6256,   2253,   3763}, 0, {     0,    990}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -6256,   2765,   4275}, 0, {   990,      0}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -6256,   1946,   2330}, 0, {   990,    990}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -6256,   2458,   1818}, 0, {     0,      0}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -6256,   1946,   1818}, 0, {     0,    990}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -6256,   2458,   2330}, 0, {   990,      0}, {0xff, 0xe6, 0x00, 0xb4}}},\n};\n\n// 0x07007ED8 - 0x07007FC8\nstatic const Vtx hmc_seg7_vertex_07007ED8[] = {\n    {{{ -6667,   2560,   7550}, 0, {   990,    990}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -7029,   2560,   7912}, 0, {     0,    990}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -7029,   3072,   7912}, 0, {     0,      0}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -6850,   2048,   2842}, 0, {   990,    990}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -6850,   2560,   3354}, 0, {     0,      0}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -6850,   2048,   3354}, 0, {     0,    990}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -6864,   2417,   4992}, 0, {   990,    990}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -6937,   2929,   5499}, 0, {     0,      0}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -6937,   2417,   5499}, 0, {     0,    990}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -6864,   2929,   4992}, 0, {   990,      0}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -7575,   3072,   6643}, 0, {   990,      0}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -7937,   2560,   7005}, 0, {     0,    990}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -7575,   2560,   6643}, 0, {   990,    990}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -7937,   3072,   7005}, 0, {     0,      0}, {0xff, 0xe6, 0x00, 0xb4}}},\n    {{{ -6667,   3072,   7550}, 0, {   990,      0}, {0xff, 0xe6, 0x00, 0xb4}}},\n};\n\n// 0x07007FC8 - 0x070080E8\nstatic const Gfx hmc_seg7_dl_07007FC8[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, cave_0900C000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_07007C08, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07007CF8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07007DE8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07007ED8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070080E8 - 0x07008158\nconst Gfx hmc_seg7_dl_070080E8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_07007FC8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/30/model.inc.c",
    "content": "// 0x070210E0 - 0x070210F8\nstatic const Lights1 hmc_seg7_lights_070210E0 = gdSPDefLights1(\n    0x79, 0x79, 0x79,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x070210F8 - 0x070211F8\nstatic const Vtx hmc_seg7_vertex_070210F8[] = {\n    {{{   922,  -4689,   2253}, 0, {   786,  -1054}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{   973,  -4689,   2406}, 0, {  1092,  -1156}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{   973,  -4689,   2253}, 0, {   786,  -1156}, {0x49, 0x49, 0x49, 0xff}}},\n    {{{  6605,  -4689,   1997}, 0, {  5364,  -2526}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  5581,  -4689,   2662}, 0, {  4260,   -646}, {0xd6, 0x54, 0xac, 0xff}}},\n    {{{  6605,  -4689,   2662}, 0, {  5896,  -1462}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  5581,  -4689,   1997}, 0, {  3728,  -1708}, {0x99, 0x33, 0x33, 0xff}}},\n    {{{  4557,  -4689,   1997}, 0, {  2094,   -890}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{  4045,  -4689,   1997}, 0, {  1276,   -482}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  4045,  -4689,   2662}, 0, {  1808,    582}, {0xc8, 0x71, 0x00, 0xff}}},\n    {{{  4557,  -4689,   2662}, 0, {  2626,    172}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  3021,  -4689,   1997}, 0, {  -358,    336}, {0x2a, 0x54, 0x54, 0xff}}},\n    {{{   973,  -4689,   2662}, 0, { -3096,   3032}, {0x54, 0x54, 0xd6, 0xff}}},\n    {{{  3021,  -4689,   2662}, 0, {   172,   1396}, {0x67, 0x33, 0xcd, 0xff}}},\n    {{{   973,  -4689,   1997}, 0, { -3628,   1970}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{   922,  -4689,   2406}, 0, {  1092,  -1054}, {0x00, 0x59, 0xa7, 0xff}}},\n};\n\n// 0x070211F8 - 0x070212E8\nstatic const Vtx hmc_seg7_vertex_070211F8[] = {\n    {{{  6605,  -4689,   2662}, 0, {   990,   2012}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  6605,  -3665,   2662}, 0, {   990,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  6605,  -3665,   1997}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  4557,  -4689,   2662}, 0, {   990,   2012}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  4557,  -5713,   1997}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4557,  -4689,   1997}, 0, {     0,   2012}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{  4557,  -5713,   2662}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5581,  -4689,   2662}, 0, {  4056,   2012}, {0xd6, 0x54, 0xac, 0xff}}},\n    {{{  3021,  -5713,   2662}, 0, { -1052,      0}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  3021,  -4689,   2662}, 0, { -1052,   2012}, {0x67, 0x33, 0xcd, 0xff}}},\n    {{{  5581,  -5713,   2662}, 0, {  4056,      0}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{  5581,  -4689,   1997}, 0, {     0,   2012}, {0x99, 0x33, 0x33, 0xff}}},\n    {{{  5581,  -5713,   2662}, 0, {   990,      0}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{  5581,  -4689,   2662}, 0, {   990,   2012}, {0xd6, 0x54, 0xac, 0xff}}},\n    {{{  5581,  -5713,   1997}, 0, {     0,      0}, {0xc8, 0x00, 0x71, 0xff}}},\n};\n\n// 0x070212E8 - 0x070213D8\nstatic const Vtx hmc_seg7_vertex_070212E8[] = {\n    {{{   973,  -4433,   2253}, 0, {   362,   1500}, {0x5c, 0xc3, 0x3d, 0xff}}},\n    {{{   973,  -4689,   1997}, 0, {     0,   2012}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{   973,  -3665,   1997}, 0, {     0,      0}, {0x78, 0x00, 0x28, 0xff}}},\n    {{{  6605,  -4689,   2662}, 0, {   990,   2012}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  6605,  -3665,   1997}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  6605,  -4689,   1997}, 0, {     0,   2012}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  4045,  -4689,   1997}, 0, {     0,   2012}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  4045,  -5713,   1997}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4045,  -5713,   2662}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4045,  -4689,   2662}, 0, {   990,   2012}, {0xc8, 0x71, 0x00, 0xff}}},\n    {{{  3021,  -4689,   2662}, 0, {   990,   2012}, {0x67, 0x33, 0xcd, 0xff}}},\n    {{{  3021,  -5713,   2662}, 0, {   990,      0}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  3021,  -5713,   1997}, 0, {     0,      0}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{  3021,  -4689,   1997}, 0, {     0,   2012}, {0x2a, 0x54, 0x54, 0xff}}},\n    {{{   973,  -4433,   2406}, 0, {   596,   1500}, {0x77, 0xe3, 0xe3, 0xff}}},\n};\n\n// 0x070213D8 - 0x070214C8\nstatic const Vtx hmc_seg7_vertex_070213D8[] = {\n    {{{  6605,  -3665,   1997}, 0, {  4056,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   973,  -4689,   1997}, 0, { -7184,   2012}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  6605,  -4689,   1997}, 0, {  4056,   2012}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{   973,  -4433,   2253}, 0, {   362,   1500}, {0x5c, 0xc3, 0x3d, 0xff}}},\n    {{{   973,  -4689,   2253}, 0, {   362,   2012}, {0x49, 0x49, 0x49, 0xff}}},\n    {{{   973,  -4689,   1997}, 0, {     0,   2012}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{   973,  -4433,   2406}, 0, {   596,   1500}, {0x77, 0xe3, 0xe3, 0xff}}},\n    {{{   973,  -3665,   1997}, 0, {     0,      0}, {0x78, 0x00, 0x28, 0xff}}},\n    {{{   973,  -3665,   2662}, 0, {   990,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   973,  -4689,   2662}, 0, {   990,   2012}, {0x54, 0x54, 0xd6, 0xff}}},\n    {{{   973,  -4689,   2406}, 0, {   596,   2012}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{  6605,  -4689,   2662}, 0, {  4056,   2012}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{   973,  -3665,   2662}, 0, { -7184,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  6605,  -3665,   2662}, 0, {  4056,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   973,  -4689,   2662}, 0, { -7184,   2012}, {0x54, 0x54, 0xd6, 0xff}}},\n};\n\n// 0x070214C8 - 0x070215B8\nstatic const Vtx hmc_seg7_vertex_070214C8[] = {\n    {{{  3021,  -4689,   1997}, 0, { -1052,   2012}, {0x2a, 0x54, 0x54, 0xff}}},\n    {{{  3021,  -5713,   1997}, 0, { -1052,      0}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{  5581,  -5713,   1997}, 0, {  4056,      0}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  6605,  -3665,   1997}, 0, {  4056,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   973,  -3665,   1997}, 0, { -7184,      0}, {0x78, 0x00, 0x28, 0xff}}},\n    {{{   973,  -4689,   1997}, 0, { -7184,   2012}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{   922,  -4689,   2253}, 0, {   362,   2012}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{   973,  -4689,   2253}, 0, {   362,   2012}, {0x49, 0x49, 0x49, 0xff}}},\n    {{{   973,  -4433,   2253}, 0, {   362,   1500}, {0x5c, 0xc3, 0x3d, 0xff}}},\n    {{{   922,  -4433,   2253}, 0, {   362,   1500}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{   922,  -4433,   2406}, 0, {   596,   1500}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{   973,  -4433,   2406}, 0, {   596,   1500}, {0x77, 0xe3, 0xe3, 0xff}}},\n    {{{   973,  -4689,   2406}, 0, {   596,   2012}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{   922,  -4689,   2406}, 0, {   596,   2012}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{  5581,  -4689,   1997}, 0, {  4056,   2012}, {0x99, 0x33, 0x33, 0xff}}},\n};\n\n// 0x070215B8 - 0x07021630\nstatic const Gfx hmc_seg7_dl_070215B8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09009800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&hmc_seg7_lights_070210E0.l, 1),\n    gsSPLight(&hmc_seg7_lights_070210E0.a, 2),\n    gsSPVertex(hmc_seg7_vertex_070210F8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07021630 - 0x07021760\nstatic const Gfx hmc_seg7_dl_07021630[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_070211F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(hmc_seg7_vertex_070212E8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle(14,  0,  2, 0x0),\n    gsSPVertex(hmc_seg7_vertex_070213D8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10,  6, 0x0),\n    gsSP2Triangles( 9,  6,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(hmc_seg7_vertex_070214C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0,  8, 11, 10, 0x0),\n    gsSP2Triangles(10, 12, 13, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07021760 - 0x07021828\nconst Gfx hmc_seg7_dl_07021760[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_070215B8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_07021630),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/31/model.inc.c",
    "content": "// 0x07021828 - 0x07021918\nstatic const Vtx hmc_seg7_vertex_07021828[] = {\n    {{{  4659,  -3870,   2652}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  5171,  -4382,   2652}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  4659,  -4382,   2652}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  1280,  -3870,   2652}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  1792,  -4382,   2652}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  1280,  -4382,   2652}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  1792,  -3870,   2652}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  2406,  -3870,   2652}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  2918,  -4382,   2652}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  2406,  -4382,   2652}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  2918,  -3870,   2652}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  3533,  -3870,   2652}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  4045,  -3870,   2652}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  4045,  -4382,   2652}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  3533,  -4382,   2652}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n};\n\n// 0x07021918 - 0x07021A08\nstatic const Vtx hmc_seg7_vertex_07021918[] = {\n    {{{  2406,  -4382,   2007}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  2918,  -4382,   2007}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  2918,  -3870,   2007}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  4659,  -3870,   2652}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  5171,  -3870,   2652}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  5171,  -4382,   2652}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  5786,  -3870,   2652}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  6298,  -4382,   2652}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  5786,  -4382,   2652}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  6298,  -3870,   2652}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  1280,  -4382,   2007}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  1792,  -3870,   2007}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  1280,  -3870,   2007}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  1792,  -4382,   2007}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  2406,  -3870,   2007}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n};\n\n// 0x07021A08 - 0x07021AC8\nstatic const Vtx hmc_seg7_vertex_07021A08[] = {\n    {{{  3533,  -4382,   2007}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  4045,  -4382,   2007}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  4045,  -3870,   2007}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  3533,  -3870,   2007}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  4659,  -4382,   2007}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  5171,  -3870,   2007}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  4659,  -3870,   2007}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  5171,  -4382,   2007}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  5786,  -4382,   2007}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  6298,  -3870,   2007}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  5786,  -3870,   2007}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  6298,  -4382,   2007}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n};\n\n// 0x07021AC8 - 0x07021BA0\nstatic const Gfx hmc_seg7_dl_07021AC8[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, cave_0900C000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_07021828, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07021918, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07021A08, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07021BA0 - 0x07021C10\nconst Gfx hmc_seg7_dl_07021BA0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_07021AC8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/32/model.inc.c",
    "content": "// 0x07021C10 - 0x07021D10\nstatic const Vtx hmc_seg7_vertex_07021C10[] = {\n    {{{  1587,  -4177,   2652}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1587,  -4075,   2550}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1587,  -4075,   2652}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1485,  -4177,   2652}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1587,  -4177,   2550}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1485,  -4177,   2550}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1485,  -4075,   2652}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1485,  -4177,   2550}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1485,  -4177,   2652}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1485,  -4075,   2550}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1587,  -4075,   2550}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1587,  -4177,   2550}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2611,  -4075,   2652}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2611,  -4075,   2550}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2611,  -4177,   2550}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1587,  -4177,   2550}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07021D10 - 0x07021E10\nstatic const Vtx hmc_seg7_vertex_07021D10[] = {\n    {{{  2714,  -4177,   2652}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2714,  -4177,   2550}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2714,  -4075,   2652}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2714,  -4075,   2550}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2611,  -4075,   2550}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2714,  -4177,   2550}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2611,  -4177,   2550}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2714,  -4075,   2550}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2611,  -4075,   2652}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2611,  -4177,   2652}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3738,  -4075,   2550}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3840,  -4177,   2550}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3738,  -4177,   2550}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2611,  -4177,   2652}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2611,  -4177,   2550}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2714,  -4177,   2550}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07021E10 - 0x07021F10\nstatic const Vtx hmc_seg7_vertex_07021E10[] = {\n    {{{  3738,  -4177,   2652}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3840,  -4177,   2550}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3840,  -4177,   2652}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3738,  -4177,   2550}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3738,  -4075,   2652}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3738,  -4075,   2550}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3738,  -4177,   2550}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3738,  -4177,   2652}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4864,  -4075,   2550}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4966,  -4075,   2550}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4966,  -4177,   2550}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3840,  -4075,   2550}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3840,  -4177,   2550}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3840,  -4075,   2550}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3840,  -4075,   2652}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3840,  -4177,   2550}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07021F10 - 0x07022000\nstatic const Vtx hmc_seg7_vertex_07021F10[] = {\n    {{{  4966,  -4177,   2652}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4966,  -4177,   2550}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4966,  -4075,   2550}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4966,  -4075,   2652}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4864,  -4075,   2550}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4966,  -4177,   2550}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4864,  -4177,   2550}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5990,  -4177,   2652}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5990,  -4177,   2550}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6093,  -4177,   2550}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4864,  -4075,   2652}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4864,  -4177,   2652}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4864,  -4177,   2652}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4966,  -4177,   2550}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4864,  -4177,   2550}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07022000 - 0x07022100\nstatic const Vtx hmc_seg7_vertex_07022000[] = {\n    {{{  5990,  -4075,   2652}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5990,  -4177,   2550}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5990,  -4177,   2652}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5990,  -4075,   2550}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1587,  -4177,   2007}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1587,  -4177,   2109}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1485,  -4177,   2109}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5990,  -4177,   2652}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6093,  -4177,   2550}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6093,  -4177,   2652}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6093,  -4177,   2550}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6093,  -4075,   2652}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6093,  -4075,   2550}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6093,  -4177,   2550}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6093,  -4075,   2550}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1485,  -4177,   2007}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07022100 - 0x07022200\nstatic const Vtx hmc_seg7_vertex_07022100[] = {\n    {{{  2714,  -4075,   2007}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2714,  -4177,   2109}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2714,  -4177,   2007}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1485,  -4177,   2007}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1485,  -4075,   2109}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1485,  -4075,   2007}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1485,  -4177,   2109}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1587,  -4177,   2109}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1587,  -4075,   2109}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1587,  -4075,   2007}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1587,  -4177,   2109}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1587,  -4177,   2007}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1587,  -4075,   2109}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2611,  -4177,   2109}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2611,  -4177,   2007}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2714,  -4075,   2109}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07022200 - 0x070222F0\nstatic const Vtx hmc_seg7_vertex_07022200[] = {\n    {{{  2611,  -4177,   2109}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2714,  -4075,   2109}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2611,  -4075,   2109}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2714,  -4177,   2109}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2611,  -4177,   2007}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2611,  -4075,   2007}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2714,  -4177,   2007}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2714,  -4177,   2109}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2611,  -4177,   2109}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3840,  -4075,   2007}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3840,  -4177,   2109}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3840,  -4177,   2007}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3738,  -4177,   2109}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3738,  -4177,   2007}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3840,  -4177,   2109}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070222F0 - 0x070223F0\nstatic const Vtx hmc_seg7_vertex_070222F0[] = {\n    {{{  3738,  -4177,   2007}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3738,  -4177,   2109}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3738,  -4075,   2007}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3738,  -4075,   2109}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3840,  -4177,   2109}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3840,  -4075,   2109}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4864,  -4177,   2109}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4864,  -4075,   2109}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4864,  -4075,   2007}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3840,  -4075,   2007}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3840,  -4075,   2109}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3840,  -4177,   2109}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4966,  -4075,   2007}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4966,  -4075,   2109}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4966,  -4177,   2109}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4966,  -4177,   2007}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070223F0 - 0x070224F0\nstatic const Vtx hmc_seg7_vertex_070223F0[] = {\n    {{{  4864,  -4177,   2109}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4966,  -4075,   2109}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4864,  -4075,   2109}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4966,  -4177,   2109}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4864,  -4177,   2007}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4864,  -4075,   2007}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6093,  -4075,   2007}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6093,  -4177,   2109}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6093,  -4177,   2007}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4966,  -4177,   2007}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4864,  -4177,   2109}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4864,  -4177,   2007}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4966,  -4177,   2109}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5990,  -4177,   2007}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5990,  -4075,   2109}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5990,  -4075,   2007}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070224F0 - 0x070225B0\nstatic const Vtx hmc_seg7_vertex_070224F0[] = {\n    {{{  5990,  -4177,   2007}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5990,  -4177,   2109}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5990,  -4075,   2109}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6093,  -4177,   2007}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6093,  -4177,   2109}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5990,  -4177,   2109}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5990,  -4177,   2007}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6093,  -4177,   2109}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6093,  -4075,   2109}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6093,  -4075,   2007}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6093,  -4075,   2109}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6093,  -4177,   2109}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070225B0 - 0x070228A0\nstatic const Gfx hmc_seg7_dl_070225B0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_0900A000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_07021C10, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 3,  5,  4, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  9,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11,  7, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle( 0, 15,  1, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07021D10, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  6,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(13, 14, 15, 0x0, 13, 15,  0, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07021E10, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  5, 11, 12, 0x0),\n    gsSP2Triangles( 2, 13, 14, 0x0,  2, 15, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07021F10, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  6, 11, 0x0, 10,  4,  6, 0x0),\n    gsSP2Triangles(12, 13,  0, 0x0, 12, 14, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07022000, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 10, 12, 11, 0x0),\n    gsSP2Triangles( 3, 13,  1, 0x0,  3, 14, 13, 0x0),\n    gsSP1Triangle( 4,  6, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07022100, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  8,  4, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0,  2, 13, 14, 0x0),\n    gsSP1Triangle( 0, 15,  1, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07022200, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  2,  5, 0x0,  4,  0,  2, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 14, 12, 0x0),\n    gsSPVertex(hmc_seg7_vertex_070222F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  1,  5,  3, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_070223F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  0,  5, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 12, 10, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_070224F0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  1,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  1,  8,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070228A0 - 0x07022910\nconst Gfx hmc_seg7_dl_070228A0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_070225B0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/4/model.inc.c",
    "content": "// 0x07008158 - 0x07008258\nstatic const Vtx hmc_seg7_vertex_07008158[] = {\n    {{{ -7838,   2867,   7745}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7766,   2867,   7818}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7766,   2765,   7818}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7911,   2867,   7818}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7838,   2765,   7745}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7911,   2765,   7818}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7911,   2765,   7818}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7766,   2765,   7818}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7838,   2765,   7890}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7838,   2765,   7745}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7766,   2867,   7818}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7838,   2867,   7890}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7766,   2765,   7818}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   195,   2509,   3610}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   195,   2611,   3610}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   297,   2611,   3610}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07008258 - 0x07008358\nstatic const Vtx hmc_seg7_vertex_07008258[] = {\n    {{{   297,   2611,   3712}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   195,   2509,   3712}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   297,   2509,   3712}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   195,   2611,   3712}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   195,   2509,   3610}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   297,   2509,   3610}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   195,   2509,   3712}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   297,   2509,   3610}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   195,   2509,   3610}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   297,   2611,   3610}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3068,   2611,   4254}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2995,   2611,   4327}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2995,   2714,   4327}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   195,   2611,   3712}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   195,   2509,   3712}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   195,   2611,   3610}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07008358 - 0x07008448\nstatic const Vtx hmc_seg7_vertex_07008358[] = {\n    {{{ -2995,   2714,   4182}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2923,   2714,   4254}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2995,   2611,   4182}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2923,   2611,   4254}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2995,   2611,   4182}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2995,   2611,   4327}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3068,   2611,   4254}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2923,   2611,   4254}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4012,   2611,   5609}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3940,   2611,   5681}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4012,   2611,   5753}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2995,   2714,   4327}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3068,   2714,   4254}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2995,   2611,   4327}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2995,   2714,   4327}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07008448 - 0x07008538\nstatic const Vtx hmc_seg7_vertex_07008448[] = {\n    {{{ -4012,   2714,   5609}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3940,   2611,   5681}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4012,   2611,   5609}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3940,   2714,   5681}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4012,   2611,   5609}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4012,   2611,   5753}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4085,   2611,   5681}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1793,   2611,   4290}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1747,   2611,   4153}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1701,   2611,   4244}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4012,   2611,   5753}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4012,   2714,   5753}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4085,   2714,   5681}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4012,   2611,   5753}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4012,   2714,   5753}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07008538 - 0x07008638\nstatic const Vtx hmc_seg7_vertex_07008538[] = {\n    {{{ -1793,   2714,   4290}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1839,   2611,   4199}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1793,   2611,   4290}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1839,   2714,   4199}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3002,   2714,   5548}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3094,   2714,   5502}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3094,   2611,   5502}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1839,   2611,   4199}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1747,   2611,   4153}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1701,   2611,   4244}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1747,   2611,   4153}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1747,   2714,   4153}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1701,   2714,   4244}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1839,   2714,   4199}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1839,   2611,   4199}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3002,   2611,   5548}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07008638 - 0x07008718\nstatic const Vtx hmc_seg7_vertex_07008638[] = {\n    {{{ -4250,   2714,   6748}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4296,   2611,   6656}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4250,   2611,   6748}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3002,   2611,   5548}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3048,   2611,   5410}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2956,   2611,   5456}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3094,   2611,   5502}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3048,   2714,   5410}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2956,   2714,   5456}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3048,   2611,   5410}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3094,   2714,   5502}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3048,   2611,   5410}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3094,   2611,   5502}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3048,   2714,   5410}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07008718 - 0x07008818\nstatic const Vtx hmc_seg7_vertex_07008718[] = {\n    {{{ -4296,   2714,   6656}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4205,   2714,   6610}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4205,   2611,   6610}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4250,   2714,   6748}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4296,   2714,   6656}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4296,   2611,   6656}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4250,   2611,   6748}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4205,   2611,   6610}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4159,   2611,   6702}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4296,   2611,   6656}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4159,   2611,   6702}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4159,   2714,   6702}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4296,   2611,   6656}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5170,   2714,   6231}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5273,   2611,   6231}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5170,   2611,   6231}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07008818 - 0x07008918\nstatic const Vtx hmc_seg7_vertex_07008818[] = {\n    {{{ -5170,   2714,   6129}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5170,   2611,   6231}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5170,   2611,   6129}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5170,   2714,   6231}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5170,   2611,   6129}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5273,   2611,   6231}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5273,   2611,   6129}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5170,   2611,   6231}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5273,   2714,   6231}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5273,   2714,   6129}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5273,   2611,   6231}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6885,   2765,   7767}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6957,   2765,   7695}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6885,   2765,   7622}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5273,   2714,   6231}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5273,   2611,   6231}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07008918 - 0x070089F8\nstatic const Vtx hmc_seg7_vertex_07008918[] = {\n    {{{ -6885,   2765,   7622}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6957,   2867,   7695}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6885,   2867,   7622}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6957,   2765,   7695}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6885,   2867,   7767}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6885,   2765,   7767}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6885,   2765,   7767}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6885,   2765,   7622}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6812,   2765,   7695}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7792,   2765,   6860}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7719,   2867,   6932}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7792,   2867,   6860}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6885,   2867,   7622}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6812,   2867,   7695}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070089F8 - 0x07008AD8\nstatic const Vtx hmc_seg7_vertex_070089F8[] = {\n    {{{ -7719,   2867,   6788}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7647,   2765,   6860}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7719,   2765,   6788}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7647,   2867,   6860}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7719,   2765,   6932}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7792,   2765,   6860}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6893,   2724,   5195}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6893,   2621,   5298}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6893,   2724,   5298}, 0, {   -26,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7792,   2765,   6860}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7719,   2765,   6932}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7719,   2867,   6932}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7647,   2867,   6860}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7647,   2765,   6860}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07008AD8 - 0x07008BD8\nstatic const Vtx hmc_seg7_vertex_07008AD8[] = {\n    {{{ -6256,   2150,   2125}, 0, {     0,    -38}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6358,   2150,   2022}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6256,   2150,   2022}, 0, {   990,    -38}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6358,   2150,   2125}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6893,   2724,   5195}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6893,   2621,   5195}, 0, {   984,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6893,   2621,   5298}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6893,   2621,   5195}, 0, {   990,    -38}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6791,   2621,   5195}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6791,   2621,   5298}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6893,   2724,   5298}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6791,   2724,   5298}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6893,   2621,   5298}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6791,   2724,   5298}, 0, {   -24,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6791,   2621,   5195}, 0, {   984,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6791,   2724,   5195}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07008BD8 - 0x07008CB8\nstatic const Vtx hmc_seg7_vertex_07008BD8[] = {\n    {{{ -6791,   2724,   5195}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6893,   2621,   5195}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6893,   2724,   5195}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6791,   2621,   5195}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6747,   2355,   3149}, 0, {   -24,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6747,   2253,   3046}, 0, {   984,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6747,   2355,   3046}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6893,   2621,   5195}, 0, {   990,    -38}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6791,   2621,   5298}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6893,   2621,   5298}, 0, {     0,    -38}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6850,   2253,   3046}, 0, {   990,    -38}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6747,   2253,   3149}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6850,   2253,   3149}, 0, {     0,    -38}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6747,   2253,   3046}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07008CB8 - 0x07008DB8\nstatic const Vtx hmc_seg7_vertex_07008CB8[] = {\n    {{{ -6747,   2355,   3046}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6850,   2253,   3046}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6850,   2355,   3046}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6747,   2253,   3046}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6747,   2355,   3149}, 0, {   -24,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6747,   2253,   3149}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6747,   2253,   3046}, 0, {   984,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6256,   2560,   3968}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6358,   2458,   3968}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6358,   2560,   3968}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6850,   2355,   3149}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6747,   2355,   3149}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6850,   2253,   3149}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6850,   2253,   3149}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6850,   2355,   3149}, 0, {   -26,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6850,   2253,   3046}, 0, {   984,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07008DB8 - 0x07008EB8\nstatic const Vtx hmc_seg7_vertex_07008DB8[] = {\n    {{{ -6256,   2458,   4070}, 0, {     0,    -38}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6358,   2458,   3968}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6256,   2458,   3968}, 0, {   990,    -38}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6358,   2458,   4070}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6256,   2560,   4070}, 0, {   -26,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6256,   2458,   4070}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6256,   2458,   3968}, 0, {   984,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6256,   2560,   3968}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6256,   2458,   3968}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6358,   2458,   3968}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6358,   2560,   3968}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6358,   2560,   4070}, 0, {   -24,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6358,   2458,   3968}, 0, {   984,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6358,   2560,   4070}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6256,   2458,   4070}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6256,   2560,   4070}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07008EB8 - 0x07008F98\nstatic const Vtx hmc_seg7_vertex_07008EB8[] = {\n    {{{ -6256,   2253,   2022}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6358,   2150,   2022}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6358,   2253,   2022}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6256,   2253,   2125}, 0, {   -26,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6256,   2150,   2125}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6256,   2150,   2022}, 0, {   984,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6358,   2253,   2125}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6256,   2150,   2125}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6256,   2253,   2125}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6358,   2150,   2125}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6358,   2253,   2022}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6358,   2253,   2125}, 0, {   -24,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6358,   2150,   2022}, 0, {   984,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6256,   2150,   2022}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07008F98 - 0x070093F0\nstatic const Gfx hmc_seg7_dl_07008F98[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_0900A000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_07008158, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  0,  4, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  9,  7, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 8, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSP1Triangle( 0,  2,  4, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07008258, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  2,  6,  4, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(13,  8, 14, 0x0, 13, 15,  8, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07008358, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  6, 11, 12, 0x0),\n    gsSP2Triangles( 1, 13,  3, 0x0,  1, 14, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07008448, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 6, 10, 11, 0x0,  6, 11, 12, 0x0),\n    gsSP2Triangles( 3, 13,  1, 0x0,  3, 14, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07008538, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  2,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 11, 12, 0x0),\n    gsSP2Triangles(13, 10, 14, 0x0, 13, 11, 10, 0x0),\n    gsSP1Triangle( 4,  6, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07008638, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 5,  9,  7, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(10, 13, 11, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07008718, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10,  2,  1, 0x0, 10,  1, 11, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07008818, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0,  6, 10,  8, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0,  3, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07008918, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  1,  3, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 8, 12, 13, 0x0,  8,  7, 12, 0x0),\n    gsSPVertex(hmc_seg7_vertex_070089F8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  2,  1,  4, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 10, 13, 0x0, 12, 11, 10, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07008AD8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  9, 11, 0x0, 10, 12,  9, 0x0),\n    gsSP2Triangles(13, 14, 15, 0x0, 13,  9, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07008BD8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07008CB8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  5, 11, 0x0, 10, 12,  5, 0x0),\n    gsSP2Triangles( 2, 13, 14, 0x0,  2, 15, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07008DB8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  3, 11, 0x0, 10, 12,  3, 0x0),\n    gsSP2Triangles(13, 14, 15, 0x0, 13,  3, 14, 0x0),\n    gsSP1Triangle( 4,  6,  7, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07008EB8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  0, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  9,  7, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 12,  9, 0x0,  0, 13,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070093F0 - 0x07009460\nconst Gfx hmc_seg7_dl_070093F0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_07008F98),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/5/model.inc.c",
    "content": "// 0x07009460 - 0x07009478\nstatic const Lights1 hmc_seg7_lights_07009460 = gdSPDefLights1(\n    0x79, 0x79, 0x79,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07009478 - 0x07009490\nstatic const Lights1 hmc_seg7_lights_07009478 = gdSPDefLights1(\n    0x79, 0x00, 0x00,\n    0xff, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x07009490 - 0x070094A8\nstatic const Lights1 hmc_seg7_lights_07009490 = gdSPDefLights1(\n    0x50, 0x50, 0x50,\n    0xaa, 0xaa, 0xaa, 0x28, 0x28, 0x28\n);\n\n// 0x070094A8 - 0x07009588\nstatic const Vtx hmc_seg7_vertex_070094A8[] = {\n    {{{   410,   2048,   5837}, 0, {  -882,   1498}, {0x0c, 0x63, 0x4d, 0xff}}},\n    {{{   922,   2048,   4813}, 0, {  1672,    650}, {0x54, 0x4a, 0xc6, 0xff}}},\n    {{{   410,   2048,   4403}, 0, {  1500,   -884}, {0xa3, 0x43, 0xcc, 0xff}}},\n    {{{   922,   2048,   5427}, 0, {   650,   1670}, {0x72, 0x2b, 0x22, 0xff}}},\n    {{{   410,   2048,   3072}, 0, {  1330,  -1054}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{   410,   2048,   4096}, 0, { -1222,   1498}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{   922,   2048,   4096}, 0, {   480,   1498}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{   922,   2048,   3482}, 0, {  1500,    480}, {0x59, 0x49, 0xcc, 0xff}}},\n    {{{   717,   2048,   3277}, 0, {  1500,   -202}, {0x49, 0x67, 0x00, 0xff}}},\n    {{{   922,   2048,   3072}, 0, {  2182,   -202}, {0x49, 0x1a, 0x63, 0xff}}},\n    {{{  5579,    205,   1536}, 0, {  1374,    606}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{  6244,    205,   1536}, 0, {  -286,  -1054}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  6244,    205,   1434}, 0, {  -542,   -798}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{  5579,    205,   1434}, 0, {  1118,    862}, {0x00, 0x38, 0x8f, 0xff}}},\n};\n\n// 0x07009588 - 0x07009678\nstatic const Vtx hmc_seg7_vertex_07009588[] = {\n    {{{  3072,   2048,   6758}, 0, {  -370,   -372}, {0xac, 0x54, 0x2a, 0xff}}},\n    {{{  3072,   2048,   6963}, 0, {     0,   -714}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{  3482,   2048,   6963}, 0, {  -712,  -1394}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{  5579,      0,   1434}, 0, {  1118,    862}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{  6244,      0,   1434}, 0, {  -542,   -798}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  6244,      0,   1331}, 0, {  -796,   -544}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{  5579,      0,   1331}, 0, {   862,   1116}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  5902,   2048,   6159}, 0, {  2012,   1500}, {0xe3, 0x54, 0x59, 0xff}}},\n    {{{  5974,   2048,   6087}, 0, {  2352,   1158}, {0x6d, 0x33, 0x24, 0xff}}},\n    {{{  5612,   2048,   5725}, 0, {   650,    308}, {0x1d, 0x54, 0xa7, 0xff}}},\n    {{{  5540,   2048,   5797}, 0, {   308,    650}, {0x93, 0x33, 0xdc, 0xff}}},\n    {{{  3482,   2048,   6349}, 0, { -1734,   -372}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{  1434,   2048,   6758}, 0, {  2352,   2350}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  3482,   2048,   6758}, 0, { -1052,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1434,   2048,   6349}, 0, {  1672,   3032}, {0x99, 0x33, 0xcd, 0xff}}},\n};\n\n// 0x07009678 - 0x07009768\nstatic const Vtx hmc_seg7_vertex_07009678[] = {\n    {{{  1434,    205,   7066}, 0, {   990,   -544}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{  1843,    205,   7066}, 0, {  2012,    478}, {0x54, 0x2a, 0xac, 0xff}}},\n    {{{  1843,    205,   6861}, 0, {  2524,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  3072,   2048,   6758}, 0, {  -370,   -372}, {0xac, 0x54, 0x2a, 0xff}}},\n    {{{  3482,   2048,   6963}, 0, {  -712,  -1394}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{  3482,   2048,   6758}, 0, { -1052,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6554,   2048,   5508}, 0, {  2012,   1500}, {0xe3, 0x54, 0x59, 0xff}}},\n    {{{  6264,   2048,   5073}, 0, {   650,    308}, {0x1d, 0x54, 0xa7, 0xff}}},\n    {{{  6192,   2048,   5146}, 0, {   308,    650}, {0x92, 0x33, 0xdc, 0xff}}},\n    {{{  6626,   2048,   5435}, 0, {  2352,   1158}, {0x6e, 0x33, 0x24, 0xff}}},\n    {{{  1638,   2048,   6758}, 0, {  2012,   2010}, {0xac, 0x54, 0x2a, 0xff}}},\n    {{{  2048,   2048,   6963}, 0, {  1672,    990}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{  2048,   2048,   6758}, 0, {  1330,   1328}, {0x33, 0x33, 0x67, 0xff}}},\n    {{{  1638,   2048,   6963}, 0, {  2352,   1670}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{  1434,    205,   6861}, 0, {  1502,  -1054}, {0x00, 0x38, 0x8f, 0xff}}},\n};\n\n// 0x07009768 - 0x07009868\nstatic const Vtx hmc_seg7_vertex_07009768[] = {\n    {{{  6244,    410,   1536}, 0, {  -286,  -1054}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{  5579,    410,   1587}, 0, {  1500,    478}, {0x00, 0x7d, 0x10, 0xff}}},\n    {{{  6244,    410,   1587}, 0, {  -158,  -1182}, {0x00, 0x7a, 0x21, 0xff}}},\n    {{{  1434,    410,   7270}, 0, {   480,      0}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{  1843,    410,   7270}, 0, {  1502,    990}, {0x6e, 0x1b, 0xc9, 0xff}}},\n    {{{  1843,    410,   7066}, 0, {  2012,    478}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  1434,    410,   7066}, 0, {   990,   -544}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  1434,    614,   7680}, 0, {  -540,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1843,    614,   7270}, 0, {  1502,    990}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  1434,    614,   7270}, 0, {   480,      0}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  1843,    614,   7680}, 0, {   480,   2010}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  5579,      0,   2560}, 0, {  3928,  -1948}, {0x24, 0x43, 0x65, 0xff}}},\n    {{{  6244,      0,   2560}, 0, {  2268,  -3610}, {0xbf, 0x3c, 0x5a, 0xff}}},\n    {{{  5018,      0,   2560}, 0, {  -644,    786}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6042,      0,   3072}, 0, {   376,    786}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6554,      0,   2560}, 0, {   582,    172}, {0xd6, 0x54, 0x54, 0xff}}},\n};\n\n// 0x07009868 - 0x07009948\nstatic const Vtx hmc_seg7_vertex_07009868[] = {\n    {{{  6244,    410,   1536}, 0, {  -286,  -1054}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{  5579,    410,   1536}, 0, {  1374,    606}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  5579,    410,   1587}, 0, {  1500,    478}, {0x00, 0x7d, 0x10, 0xff}}},\n    {{{   410,   2048,   3584}, 0, {   480,   -202}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{   358,   2048,   3738}, 0, {   138,      0}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{   410,   2048,   3738}, 0, {   224,     54}, {0x73, 0x17, 0xd2, 0xff}}},\n    {{{   358,   2048,   3584}, 0, {   394,   -288}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{   474,      0,   2796}, 0, { -1928,   1662}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   836,      0,   3158}, 0, { -1496,   1806}, {0x6d, 0x33, 0xdc, 0xff}}},\n    {{{  1270,      0,   2723}, 0, { -1322,   1286}, {0x00, 0x67, 0x49, 0xff}}},\n    {{{   908,      0,   2361}, 0, { -1756,   1142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6042,      0,   3072}, 0, {   376,    786}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6554,      0,   3584}, 0, {   990,    990}, {0xd9, 0x77, 0x13, 0xff}}},\n    {{{  6554,      0,   2560}, 0, {   582,    172}, {0xd6, 0x54, 0x54, 0xff}}},\n};\n\n// 0x07009948 - 0x07009A38\nstatic const Vtx hmc_seg7_vertex_07009948[] = {\n    {{{  3894,    205,    870}, 0, {  -478,   -368}, {0xc8, 0x71, 0x00, 0xff}}},\n    {{{  3740,    205,    870}, 0, {  -668,   -128}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  3740,    205,    922}, 0, {  -604,    -80}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{  5018,      0,   2560}, 0, {  -644,    786}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5530,      0,   3072}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6042,      0,   3072}, 0, {   376,    786}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3482,      0,   3584}, 0, {   786,   1090}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4150,      0,   3072}, 0, {  1114,    416}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4150,      0,   2560}, 0, {   910,      8}, {0xe3, 0x77, 0x1d, 0xff}}},\n    {{{  1434,      0,   2560}, 0, { -1256,   1090}, {0x25, 0x50, 0x5b, 0xff}}},\n    {{{  1434,      0,   3584}, 0, {  -848,   1908}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   410,      0,   3584}, 0, { -1666,   2316}, {0x5b, 0x50, 0x25, 0xff}}},\n    {{{   922,      0,   4096}, 0, { -1052,   2522}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   410,      0,   4096}, 0, { -1460,   2726}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  3894,    205,    922}, 0, {  -414,   -320}, {0x99, 0x33, 0x33, 0xff}}},\n};\n\n// 0x07009A38 - 0x07009B28\nstatic const Vtx hmc_seg7_vertex_07009A38[] = {\n    {{{  7588,   1024,   6646}, 0, { -7204,  -2566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6543,   1024,   6646}, 0, { -5120,  -2566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6543,   1024,   7690}, 0, { -5120,  -4652}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3484,      0,   2560}, 0, {   378,    274}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{  4150,      0,   2560}, 0, {   910,      8}, {0xe3, 0x77, 0x1d, 0xff}}},\n    {{{  4150,      0,   2048}, 0, {   706,   -400}, {0xb4, 0x63, 0x10, 0xff}}},\n    {{{  3484,      0,   2048}, 0, {   174,   -136}, {0x5a, 0x58, 0x0e, 0xff}}},\n    {{{  3484,    205,   1434}, 0, {   -68,   -626}, {0x5a, 0x57, 0x13, 0xff}}},\n    {{{  4150,    205,   1434}, 0, {   460,   -892}, {0xa6, 0x58, 0x09, 0xff}}},\n    {{{  6244,   -204,   1331}, 0, {  -796,   -544}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{  5579,   -204,    922}, 0, {  -158,   2138}, {0x49, 0x49, 0x49, 0xff}}},\n    {{{  5579,   -204,   1331}, 0, {   862,   1116}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{  6244,   -204,    922}, 0, { -1818,    478}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{  4150,    205,    922}, 0, {   256,  -1300}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{  3484,    205,    922}, 0, {  -274,  -1034}, {0x49, 0x49, 0x49, 0xff}}},\n};\n\n// 0x07009B28 - 0x07009C08\nstatic const Vtx hmc_seg7_vertex_07009B28[] = {\n    {{{  6543,   1024,   2550}, 0, { -5120,   5608}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6543,   1024,   3594}, 0, { -5120,   3522}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  7588,   1024,   3594}, 0, { -7204,   3522}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1444,   1024,   7690}, 0, {  5058,  -4652}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1444,   1024,   6646}, 0, {  5058,  -2566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   399,   1024,   6646}, 0, {  7142,  -2566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   410,   1024,   4618}, 0, {  7122,   1500}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1444,   1024,   4618}, 0, {  5058,   1500}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1444,   1024,   4086}, 0, {  5058,   2542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   410,   1024,   4086}, 0, {  7122,   2542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4506,   1024,   4915}, 0, {     0,    990}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  5018,   1024,   4403}, 0, {   990,      0}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{  4506,   1024,   4403}, 0, {     0,      0}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{  5018,   1024,   4915}, 0, {   990,    990}, {0x67, 0x33, 0x33, 0xff}}},\n};\n\n// 0x07009C08 - 0x07009D08\nstatic const Vtx hmc_seg7_vertex_07009C08[] = {\n    {{{  5540,   1843,   5797}, 0, {   374,   2028}, {0xa6, 0xac, 0x1d, 0xff}}},\n    {{{  5685,   1843,   5797}, 0, {   734,   1666}, {0x59, 0xac, 0xe2, 0xff}}},\n    {{{  5612,   1843,   5870}, 0, {   374,   1666}, {0x24, 0xcd, 0x6d, 0xff}}},\n    {{{   410,   1946,   4403}, 0, {  3374,   -372}, {0x0c, 0x9d, 0xb3, 0xff}}},\n    {{{   922,   1946,   5427}, 0, {   820,    480}, {0x54, 0xb6, 0x3a, 0xff}}},\n    {{{   410,   1946,   5837}, 0, {   990,   2010}, {0xa3, 0xbd, 0x34, 0xff}}},\n    {{{   922,   1946,   4813}, 0, {  1842,   -542}, {0x72, 0xd5, 0xde, 0xff}}},\n    {{{   410,   1946,   4096}, 0, {  -542,   2180}, {0x00, 0x88, 0x28, 0xff}}},\n    {{{   410,   1946,   3584}, 0, {  1160,    478}, {0x50, 0xc8, 0x50, 0xff}}},\n    {{{   717,   1946,   3277}, 0, {  1160,   -544}, {0x67, 0xb7, 0x00, 0xff}}},\n    {{{   922,   1946,   3482}, 0, {   480,   -544}, {0x63, 0xb7, 0xe6, 0xff}}},\n    {{{   922,   1946,   4096}, 0, {  -540,    478}, {0x33, 0xcd, 0x67, 0xff}}},\n    {{{  5612,   1843,   5725}, 0, {   734,   2028}, {0xdc, 0xcd, 0x93, 0xff}}},\n    {{{  5830,   1843,   6087}, 0, {   374,    584}, {0xa7, 0xac, 0x1d, 0xff}}},\n    {{{  5974,   1843,   6087}, 0, {   734,    224}, {0x59, 0xac, 0xe3, 0xff}}},\n    {{{  5902,   1843,   6159}, 0, {   374,    224}, {0x24, 0xcd, 0x6d, 0xff}}},\n};\n\n// 0x07009D08 - 0x07009DE8\nstatic const Vtx hmc_seg7_vertex_07009D08[] = {\n    {{{  5830,   1843,   6087}, 0, {   374,    584}, {0xa7, 0xac, 0x1d, 0xff}}},\n    {{{  5902,   1843,   6015}, 0, {   734,    584}, {0xdc, 0xcd, 0x93, 0xff}}},\n    {{{  5974,   1843,   6087}, 0, {   734,    224}, {0x59, 0xac, 0xe3, 0xff}}},\n    {{{  5612,   1946,   5870}, 0, {   374,   1666}, {0xe2, 0xac, 0x59, 0xff}}},\n    {{{  5685,   1946,   5797}, 0, {   734,   1666}, {0x6d, 0xcd, 0x24, 0xff}}},\n    {{{  5902,   1946,   6015}, 0, {   734,    584}, {0x1d, 0xac, 0xa7, 0xff}}},\n    {{{  5830,   1946,   6087}, 0, {   374,    584}, {0x93, 0xcd, 0xdc, 0xff}}},\n    {{{  3482,   1946,   6963}, 0, { -2244,    820}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{  3072,   1946,   6963}, 0, { -1562,   1498}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{  3072,   1946,   6758}, 0, { -1222,   1158}, {0xd6, 0xac, 0x54, 0xff}}},\n    {{{  3482,   1946,   6758}, 0, { -1904,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1434,   1946,   6758}, 0, {  1500,   3884}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{  1434,   1946,   6349}, 0, {  2182,   3202}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{  3482,   1946,   6349}, 0, { -1222,   -202}, {0x67, 0xcd, 0xcd, 0xff}}},\n};\n\n// 0x07009DE8 - 0x07009ED8\nstatic const Vtx hmc_seg7_vertex_07009DE8[] = {\n    {{{  6192,   1843,   5146}, 0, {   374,   2028}, {0xa7, 0xac, 0x1e, 0xff}}},\n    {{{  6264,   1843,   5073}, 0, {   734,   2028}, {0xdb, 0xcc, 0x93, 0xff}}},\n    {{{  6336,   1843,   5146}, 0, {   734,   1666}, {0x5a, 0xac, 0xe3, 0xff}}},\n    {{{  2048,   1946,   6963}, 0, {   138,   3202}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{  1638,   1946,   6758}, 0, {  1160,   3542}, {0xd6, 0xac, 0x54, 0xff}}},\n    {{{  2048,   1946,   6758}, 0, {   478,   2862}, {0x67, 0xcd, 0x33, 0xff}}},\n    {{{  1638,   1946,   6963}, 0, {   820,   3884}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{  6264,   1946,   5218}, 0, {   374,   1666}, {0xe3, 0xac, 0x59, 0xff}}},\n    {{{  6336,   1946,   5146}, 0, {   734,   1666}, {0x6d, 0xcd, 0x24, 0xff}}},\n    {{{  6554,   1946,   5363}, 0, {   734,    584}, {0x1e, 0xac, 0xa7, 0xff}}},\n    {{{  6481,   1946,   5435}, 0, {   374,    584}, {0x93, 0xcd, 0xdb, 0xff}}},\n    {{{  6481,   1843,   5435}, 0, {   374,    584}, {0xa7, 0xac, 0x1d, 0xff}}},\n    {{{  6554,   1843,   5363}, 0, {   734,    584}, {0xdc, 0xcd, 0x92, 0xff}}},\n    {{{  6626,   1843,   5435}, 0, {   734,    224}, {0x59, 0xac, 0xe2, 0xff}}},\n    {{{  6554,   1843,   5508}, 0, {   374,    224}, {0x25, 0xcd, 0x6d, 0xff}}},\n};\n\n// 0x07009ED8 - 0x07009FC8\nstatic const Vtx hmc_seg7_vertex_07009ED8[] = {\n    {{{ -1926,      0,    534}, 0, {  -718,   1310}, {0xf4, 0x65, 0x4a, 0xff}}},\n    {{{  -746,      0,   1575}, 0, {   582,    786}, {0x1d, 0x72, 0xd1, 0xff}}},\n    {{{  -414,      0,   1038}, 0, {   284,    306}, {0xc5, 0x3a, 0x60, 0xff}}},\n    {{{  6192,   1843,   5146}, 0, {   374,   2028}, {0xa7, 0xac, 0x1e, 0xff}}},\n    {{{  6336,   1843,   5146}, 0, {   734,   1666}, {0x5a, 0xac, 0xe3, 0xff}}},\n    {{{  6264,   1843,   5218}, 0, {   374,   1666}, {0x24, 0xcd, 0x6d, 0xff}}},\n    {{{   786,   1024,   4422}, 0, {     0,    990}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{   811,   2867,   4422}, 0, {   478,      0}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{   811,   1024,   4422}, 0, {   478,    990}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{   811,   2867,   4446}, 0, {   990,      0}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{   811,   1024,   4446}, 0, {   990,    990}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{   786,   2867,   4422}, 0, {     0,      0}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{   786,   2867,   4446}, 0, {   478,      0}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{   786,   1024,   4446}, 0, {   478,    990}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -2120,      0,   1117}, 0, {  -330,   1698}, {0x06, 0x49, 0x99, 0xff}}},\n};\n\n// 0x07009FC8 - 0x0700A0B8\nstatic const Vtx hmc_seg7_vertex_07009FC8[] = {\n    {{{  -746,      0,   1575}, 0, {   582,    786}, {0x1d, 0x72, 0xd1, 0xff}}},\n    {{{   474,      0,   2796}, 0, {  2044,    298}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   908,      0,   2361}, 0, {  1870,   -222}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -414,      0,   1038}, 0, {   284,    306}, {0xc5, 0x3a, 0x60, 0xff}}},\n    {{{  7578,      0,   7680}, 0, {  5486,   2316}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6554,      0,   3584}, 0, {  3034,   -542}, {0xd9, 0x77, 0x13, 0xff}}},\n    {{{   410,      0,   4608}, 0, { -1460,   2726}, {0x00, 0x7b, 0x1e, 0xff}}},\n    {{{   410,      0,   7680}, 0, {  -234,   5178}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  7578,      0,   3584}, 0, {  3852,   -952}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{  6042,      0,   3072}, 0, {  2420,   -748}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4150,      0,   3072}, 0, {   910,      8}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3482,      0,   3584}, 0, {   582,    684}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5018,      0,   2560}, 0, {  1398,   -748}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4150,      0,   2560}, 0, {   706,   -400}, {0xe3, 0x77, 0x1d, 0xff}}},\n    {{{  5530,      0,   3072}, 0, {  2012,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700A0B8 - 0x0700A148\nstatic const Vtx hmc_seg7_vertex_0700A0B8[] = {\n    {{{ -3631,      0,   1872}, 0, {  -330,   3206}, {0x00, 0x54, 0xa2, 0xff}}},\n    {{{ -3036,      0,    430}, 0, { -1246,   2154}, {0x18, 0x5b, 0x54, 0xff}}},\n    {{{ -4089,      0,    956}, 0, { -1246,   3206}, {0x73, 0x33, 0x00, 0xff}}},\n    {{{  3482,      0,   3584}, 0, {   582,    684}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1434,      0,   3584}, 0, { -1052,   1498}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   410,      0,   4608}, 0, { -1460,   2726}, {0x00, 0x7b, 0x1e, 0xff}}},\n    {{{ -1926,      0,    534}, 0, {  -718,   1310}, {0xf4, 0x65, 0x4a, 0xff}}},\n    {{{ -2578,      0,   1346}, 0, {  -330,   2154}, {0xd8, 0x59, 0xb0, 0xff}}},\n    {{{ -2120,      0,   1117}, 0, {  -330,   1698}, {0x06, 0x49, 0x99, 0xff}}},\n};\n\n// 0x0700A148 - 0x0700A1B8\nstatic const Vtx hmc_seg7_vertex_0700A148[] = {\n    {{{  2127,    307,   2580}, 0, {   990,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2120,    372,   2580}, 0, {   478,     70}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2062,    314,   2580}, 0, {   480,    888}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2098,    351,   2580}, 0, {   480,    376}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2084,    394,   2580}, 0, {    70,    172}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2041,    351,   2580}, 0, {    70,    786}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2084,    336,   2580}, 0, {   480,    582}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0700A1B8 - 0x0700A2A8\nstatic const Vtx hmc_seg7_vertex_0700A1B8[] = {\n    {{{  5579,    922,   2560}, 0, {  8554,   1112}, {0x43, 0xdf, 0x65, 0xff}}},\n    {{{  5579,      0,   2458}, 0, {  8524,    376}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5579,    922,   2458}, 0, {  8524,   1112}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   836,      0,   3158}, 0, {  5978,    376}, {0x6d, 0x33, 0xdc, 0xff}}},\n    {{{   763,      0,   3085}, 0, {  5988,    376}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   763,    922,   3085}, 0, {  5988,   1112}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   836,    922,   3158}, 0, {  5978,   1112}, {0x61, 0xc9, 0x3a, 0xff}}},\n    {{{  1198,      0,   2651}, 0, {  6254,    376}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1270,    922,   2723}, 0, {  6250,   1112}, {0x27, 0xe5, 0x75, 0xff}}},\n    {{{  1198,    922,   2651}, 0, {  6254,   1112}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1270,      0,   2723}, 0, {  6250,    376}, {0x00, 0x67, 0x49, 0xff}}},\n    {{{  6244,      0,   2458}, 0, {  8792,    376}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6244,      0,   2560}, 0, {  8824,    376}, {0xbf, 0x3c, 0x5a, 0xff}}},\n    {{{  6244,    922,   2560}, 0, {  8824,   1112}, {0xc3, 0xc3, 0x5c, 0xff}}},\n    {{{  6244,    922,   2458}, 0, {  8792,   1112}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700A2A8 - 0x0700A358\nstatic const Vtx hmc_seg7_vertex_0700A2A8[] = {\n    {{{  3484,    922,   2560}, 0, {  7326,   1112}, {0x3d, 0xc3, 0x5c, 0xff}}},\n    {{{  3484,      0,   2458}, 0, {  7338,    376}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3484,    922,   2458}, 0, {  7338,   1112}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5579,    922,   2560}, 0, {  8554,   1112}, {0x43, 0xdf, 0x65, 0xff}}},\n    {{{  5579,      0,   2560}, 0, {  8554,    376}, {0x24, 0x43, 0x65, 0xff}}},\n    {{{  5579,      0,   2458}, 0, {  8524,    376}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4150,      0,   2458}, 0, {  7746,    376}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4150,      0,   2560}, 0, {  7750,    376}, {0xe3, 0x77, 0x1d, 0xff}}},\n    {{{  4150,    922,   2560}, 0, {  7750,   1112}, {0xd2, 0xe9, 0x73, 0xff}}},\n    {{{  4150,    922,   2458}, 0, {  7746,   1112}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3484,      0,   2560}, 0, {  7326,    376}, {0x33, 0x67, 0x33, 0xff}}},\n};\n\n// 0x0700A358 - 0x0700A448\nstatic const Vtx hmc_seg7_vertex_0700A358[] = {\n    {{{  4150,    922,   2560}, 0, {  7750,   1112}, {0xd2, 0xe9, 0x73, 0xff}}},\n    {{{  6554,   2048,   2560}, 0, {  8926,   2012}, {0xdc, 0x00, 0x79, 0xff}}},\n    {{{  1434,   2048,   2560}, 0, {  6356,   2012}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{   877,   1024,   3289}, 0, {   308,   2012}, {0xac, 0xac, 0x2a, 0xff}}},\n    {{{   877,   1024,   3265}, 0, {   390,   2012}, {0xcd, 0xcd, 0x99, 0xff}}},\n    {{{   901,   1024,   3265}, 0, {   390,   2012}, {0x54, 0xac, 0xd6, 0xff}}},\n    {{{   877,   2867,   3289}, 0, {   308,    376}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{   901,   1024,   3289}, 0, {   308,   2012}, {0x33, 0xcd, 0x67, 0xff}}},\n    {{{   877,   2867,   3265}, 0, {   390,    376}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{   901,   2867,   3265}, 0, {   390,    376}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{   901,   2867,   3289}, 0, {   308,    376}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{  4150,      0,   2560}, 0, {  7750,    376}, {0xe3, 0x77, 0x1d, 0xff}}},\n    {{{  5579,      0,   2560}, 0, {  8554,    376}, {0x24, 0x43, 0x65, 0xff}}},\n    {{{  5579,    922,   2560}, 0, {  8554,   1112}, {0x43, 0xdf, 0x65, 0xff}}},\n    {{{  3484,    922,   2560}, 0, {  7326,   1112}, {0x3d, 0xc3, 0x5c, 0xff}}},\n};\n\n// 0x0700A448 - 0x0700A548\nstatic const Vtx hmc_seg7_vertex_0700A448[] = {\n    {{{  1434,      0,   2560}, 0, {  6356,    376}, {0x25, 0x50, 0x5b, 0xff}}},\n    {{{  3484,      0,   2560}, 0, {  7326,    376}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{  3484,    922,   2560}, 0, {  7326,   1112}, {0x3d, 0xc3, 0x5c, 0xff}}},\n    {{{  6244,    922,   2560}, 0, {  8824,   1112}, {0xc3, 0xc3, 0x5c, 0xff}}},\n    {{{  6554,   2048,   2560}, 0, {  8926,   2012}, {0xdc, 0x00, 0x79, 0xff}}},\n    {{{  5579,    922,   2560}, 0, {  8554,   1112}, {0x43, 0xdf, 0x65, 0xff}}},\n    {{{  6554,   1024,   2560}, 0, {  8926,   1196}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  7578,   1024,   3584}, 0, {  9544,   1196}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  7578,   2048,   3584}, 0, {  9544,   2012}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{  6244,      0,   2560}, 0, {  8824,    376}, {0xbf, 0x3c, 0x5a, 0xff}}},\n    {{{  6554,      0,   2560}, 0, {  8926,    376}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  1434,   2048,   2560}, 0, {  6356,   2012}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{   358,   2304,   3738}, 0, {  7758,   1756}, {0x00, 0xc8, 0x8f, 0xff}}},\n    {{{   410,   2048,   3738}, 0, {  7752,   2012}, {0x73, 0x17, 0xd2, 0xff}}},\n    {{{   358,   2048,   3738}, 0, {  7758,   2012}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{   410,   2304,   3738}, 0, {  7752,   1756}, {0x6e, 0xc9, 0xe5, 0xff}}},\n};\n\n// 0x0700A548 - 0x0700A628\nstatic const Vtx hmc_seg7_vertex_0700A548[] = {\n    {{{   410,   2048,   3738}, 0, {  7752,   2012}, {0x73, 0x17, 0xd2, 0xff}}},\n    {{{   410,   2304,   3738}, 0, {  7752,   1756}, {0x6e, 0xc9, 0xe5, 0xff}}},\n    {{{   410,   4096,   6656}, 0, {  8850,      0}, {0x7c, 0x00, 0xe9, 0xff}}},\n    {{{   410,   2048,   6656}, 0, {  8850,   2012}, {0x70, 0x00, 0xc6, 0xff}}},\n    {{{   358,   2304,   3584}, 0, {  7702,   1756}, {0x00, 0x8f, 0x38, 0xff}}},\n    {{{   358,   2304,   3738}, 0, {  7758,   1756}, {0x00, 0xc8, 0x8f, 0xff}}},\n    {{{   410,   2304,   3584}, 0, {  7696,   1756}, {0x6e, 0xe5, 0x37, 0xff}}},\n    {{{   410,   4096,   3584}, 0, {  7696,      0}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{   410,   3072,   3584}, 0, {  7696,    988}, {0x78, 0xe0, 0x17, 0xff}}},\n    {{{   410,   2048,   3584}, 0, {  5730,   2012}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{   410,   2048,   3738}, 0, {  5670,   2012}, {0x73, 0x17, 0xd2, 0xff}}},\n    {{{   410,      0,   3584}, 0, {  5730,    376}, {0x5b, 0x50, 0x25, 0xff}}},\n    {{{   410,      0,   6656}, 0, {  4406,    376}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   410,   2048,   6656}, 0, {  4406,   2012}, {0x70, 0x00, 0xc6, 0xff}}},\n};\n\n// 0x0700A628 - 0x0700A718\nstatic const Vtx hmc_seg7_vertex_0700A628[] = {\n    {{{  6554,   4096,   7680}, 0, {  3034,      0}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{  1434,   2048,   7680}, 0, {  1186,   2012}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{  1434,   4096,   7680}, 0, {  1186,      0}, {0x40, 0x00, 0x93, 0xff}}},\n    {{{   410,   2048,   6656}, 0, {   674,   2012}, {0x70, 0x00, 0xc6, 0xff}}},\n    {{{   410,   4096,   6656}, 0, {   674,      0}, {0x7c, 0x00, 0xe9, 0xff}}},\n    {{{  6554,   2048,   7680}, 0, {  3034,   2012}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{  6554,   2048,   7680}, 0, {  1246,   2012}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{  1434,      0,   7680}, 0, {  3784,    376}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  1434,   2048,   7680}, 0, {  3784,   2012}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{   410,   1024,   6656}, 0, {  4406,   1196}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   410,   2048,   6656}, 0, {  4406,   2012}, {0x70, 0x00, 0xc6, 0xff}}},\n    {{{  1434,   1024,   7680}, 0, {  3784,   1196}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  7578,   4096,   6656}, 0, {  3470,      0}, {0x93, 0x00, 0xc0, 0xff}}},\n    {{{  7578,   2048,   6656}, 0, {  3470,   2012}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{  6554,      0,   7680}, 0, {  1246,    376}, {0x8f, 0x00, 0xc8, 0xff}}},\n};\n\n// 0x0700A718 - 0x0700A818\nstatic const Vtx hmc_seg7_vertex_0700A718[] = {\n    {{{  7578,   2048,   6656}, 0, {   632,   2012}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{  6554,   1024,   7680}, 0, {  1246,   1196}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  6554,   2048,   7680}, 0, {  1246,   2012}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{  7578,   4096,   3584}, 0, {  4422,      0}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{  7578,   2048,   6656}, 0, {  3470,   2012}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{  7578,   4096,   6656}, 0, {  3470,      0}, {0x93, 0x00, 0xc0, 0xff}}},\n    {{{  7578,   2048,   3584}, 0, {  4422,   2012}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{  7578,   1024,   6656}, 0, {   632,   1196}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  6554,   4096,   2560}, 0, {  4882,      0}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  6554,   2048,   2560}, 0, {  4882,   2012}, {0xdc, 0x00, 0x79, 0xff}}},\n    {{{  7578,   2048,   3584}, 0, {  9544,   2012}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{  7578,      0,   6656}, 0, { 10852,    376}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{  7578,   2048,   6656}, 0, { 10852,   2012}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{  7578,      0,   3584}, 0, {  9544,    376}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{  1434,   4096,   2560}, 0, {  7122,      0}, {0x40, 0x00, 0x6d, 0xff}}},\n    {{{  1434,   2048,   2560}, 0, {  7122,   2012}, {0x30, 0x00, 0x75, 0xff}}},\n};\n\n// 0x0700A818 - 0x0700A918\nstatic const Vtx hmc_seg7_vertex_0700A818[] = {\n    {{{   922,   3072,   3072}, 0, {  7424,    988}, {0x3f, 0xea, 0x6b, 0xff}}},\n    {{{   410,   2048,   3072}, 0, {  7520,   2012}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{   922,   2048,   3072}, 0, {  7424,   2012}, {0x49, 0x1a, 0x63, 0xff}}},\n    {{{   410,   3072,   3072}, 0, {  7520,    988}, {0x67, 0xcd, 0x33, 0xff}}},\n    {{{  1434,   4096,   2560}, 0, {  7122,      0}, {0x40, 0x00, 0x6d, 0xff}}},\n    {{{  1434,   2048,   2560}, 0, {  7122,   2012}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{   410,   4096,   3584}, 0, {  7696,      0}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{  1270,    922,   2723}, 0, {  6250,   1112}, {0x27, 0xe5, 0x75, 0xff}}},\n    {{{  1270,      0,   2723}, 0, {  6250,    376}, {0x00, 0x67, 0x49, 0xff}}},\n    {{{  1434,      0,   2560}, 0, {  6356,    376}, {0x25, 0x50, 0x5b, 0xff}}},\n    {{{  1434,   2048,   2560}, 0, {  6356,   2012}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{   358,   2048,   3584}, 0, {  7702,   2012}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{   410,   2304,   3584}, 0, {  7696,   1756}, {0x6e, 0xe5, 0x37, 0xff}}},\n    {{{   358,   2304,   3584}, 0, {  7702,   1756}, {0x00, 0x8f, 0x38, 0xff}}},\n    {{{   410,   2048,   3584}, 0, {  7696,   2012}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{   410,   3072,   3584}, 0, {  7696,    988}, {0x78, 0xe0, 0x17, 0xff}}},\n};\n\n// 0x0700A918 - 0x0700A9F8\nstatic const Vtx hmc_seg7_vertex_0700A918[] = {\n    {{{   410,   1946,   3584}, 0, {  5730,   1932}, {0x50, 0xc8, 0x50, 0xff}}},\n    {{{   410,      0,   3584}, 0, {  5730,    376}, {0x5b, 0x50, 0x25, 0xff}}},\n    {{{   836,    922,   3158}, 0, {  5978,   1112}, {0x61, 0xc9, 0x3a, 0xff}}},\n    {{{   836,      0,   3158}, 0, {  5978,    376}, {0x6d, 0x33, 0xdc, 0xff}}},\n    {{{   410,   4096,   3584}, 0, {  7696,      0}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{   410,   3072,   3584}, 0, {  7696,    988}, {0x78, 0xe0, 0x17, 0xff}}},\n    {{{   922,   3072,   3072}, 0, {  7424,    988}, {0x3f, 0xea, 0x6b, 0xff}}},\n    {{{   410,   3072,   3072}, 0, {  7520,    988}, {0x67, 0xcd, 0x33, 0xff}}},\n    {{{   922,   1946,   3072}, 0, {  6032,   1932}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1270,    922,   2723}, 0, {  6250,   1112}, {0x27, 0xe5, 0x75, 0xff}}},\n    {{{  1434,   2048,   2560}, 0, {  6356,   2012}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{  4813,   1843,   3430}, 0, {  1354,   2144}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{  4710,   1843,   3430}, 0, {  1114,   2144}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{  4710,   1843,   3328}, 0, {  1354,   2144}, {0xd6, 0xac, 0xac, 0xff}}},\n};\n\n// 0x0700A9F8 - 0x0700AAE8\nstatic const Vtx hmc_seg7_vertex_0700A9F8[] = {\n    {{{  3994,   2048,   3635}, 0, {  -812,   1876}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{  3891,   2048,   3635}, 0, { -1052,   1876}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{  3891,   2048,   3533}, 0, {  -812,   1876}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{  4813,   1843,   3430}, 0, {  1354,   2144}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{  4710,   1843,   3328}, 0, {  1354,   2144}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{  4813,   1843,   3328}, 0, {  1596,   2144}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{  5939,   1946,   3226}, 0, {  3042,   2012}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{  5837,   1946,   3226}, 0, {  2800,   2012}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{  5837,   1946,   3123}, 0, {  3042,   2012}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{  5939,   1946,   3123}, 0, {  3282,   2012}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{  6758,   2048,   3738}, 0, {  3042,   1876}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{  6656,   2048,   3738}, 0, {  2800,   1876}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{  6656,   2048,   3635}, 0, {  3042,   1876}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{  6758,   2048,   3635}, 0, {  3282,   1876}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{  3994,   2048,   3533}, 0, {  -570,   1876}, {0x67, 0xcd, 0xcd, 0xff}}},\n};\n\n// 0x0700AAE8 - 0x0700ABE8\nstatic const Vtx hmc_seg7_vertex_0700AAE8[] = {\n    {{{  5325,   1946,   4147}, 0, { -1052,   2012}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{  5325,   4096,   4045}, 0, {  -812,   -168}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{  5325,   1946,   4045}, 0, {  -812,   2012}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{  5427,   1946,   4147}, 0, {  -812,   2012}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{  5427,   1946,   4045}, 0, {  -570,   2012}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{  3891,   2048,   3533}, 0, {  -812,   1876}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{  3891,   4096,   3533}, 0, {  -812,   -168}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{  3994,   4096,   3533}, 0, {  -570,   -168}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  3994,   2048,   3533}, 0, {  -570,   1876}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{  3891,   2048,   3635}, 0, { -1052,   1876}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{  3891,   4096,   3635}, 0, { -1052,   -168}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  3994,   4096,   3635}, 0, {  -812,   -168}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{  3994,   2048,   3635}, 0, {  -812,   1876}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{  5427,   4096,   4045}, 0, {  -570,   -168}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  5325,   4096,   4147}, 0, { -1052,   -168}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  5427,   4096,   4147}, 0, {  -812,   -168}, {0x71, 0x00, 0x38, 0xff}}},\n};\n\n// 0x0700ABE8 - 0x0700ACC8\nstatic const Vtx hmc_seg7_vertex_0700ABE8[] = {\n    {{{  4710,   1843,   3328}, 0, {  1354,   2144}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{  4813,   4096,   3328}, 0, {  1596,   -168}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  4813,   1843,   3328}, 0, {  1596,   2144}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{  4710,   1843,   3430}, 0, {  1114,   2144}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{  4710,   4096,   3328}, 0, {  1354,   -168}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{  5837,   1946,   3226}, 0, {  2800,   2012}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{  5837,   4096,   3226}, 0, {  2800,   -168}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  5837,   4096,   3123}, 0, {  3042,   -168}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{  4710,   4096,   3430}, 0, {  1114,   -168}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  4813,   4096,   3430}, 0, {  1354,   -168}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{  4813,   1843,   3430}, 0, {  1354,   2144}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{  5837,   1946,   3123}, 0, {  3042,   2012}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{  5939,   4096,   3123}, 0, {  3282,   -168}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  5939,   1946,   3123}, 0, {  3282,   2012}, {0x67, 0xcd, 0xcd, 0xff}}},\n};\n\n// 0x0700ACC8 - 0x0700ADA8\nstatic const Vtx hmc_seg7_vertex_0700ACC8[] = {\n    {{{  6758,   2048,   3635}, 0, {  3282,   1876}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{  6758,   4096,   3635}, 0, {  3282,   -168}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  6758,   4096,   3738}, 0, {  3042,   -168}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{  5939,   1946,   3123}, 0, {  3282,   2012}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{  5939,   4096,   3123}, 0, {  3282,   -168}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  5939,   4096,   3226}, 0, {  3042,   -168}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{  5939,   1946,   3226}, 0, {  3042,   2012}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{  5837,   4096,   3226}, 0, {  2800,   -168}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  5837,   1946,   3226}, 0, {  2800,   2012}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{  6656,   2048,   3635}, 0, {  3042,   1876}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{  6656,   4096,   3635}, 0, {  3042,   -168}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{  6656,   2048,   3738}, 0, {  2800,   1876}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{  6656,   4096,   3738}, 0, {  2800,   -168}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  6758,   2048,   3738}, 0, {  3042,   1876}, {0x2a, 0xac, 0x54, 0xff}}},\n};\n\n// 0x0700ADA8 - 0x0700ADD8\nstatic const Vtx hmc_seg7_vertex_0700ADA8[] = {\n    {{{  1434,   2048,   2560}, 0, {  6356,   2012}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{   922,   2048,   3072}, 0, {  6032,   2012}, {0x49, 0x1a, 0x63, 0xff}}},\n    {{{   922,   1946,   3072}, 0, {  6032,   1932}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x0700ADD8 - 0x0700AED8\nstatic const Vtx hmc_seg7_vertex_0700ADD8[] = {\n    {{{ -3494,   1792,    659}, 0, {  2386,   1500}, {0xf1, 0xdf, 0x79, 0xff}}},\n    {{{ -3036,   1536,    430}, 0, {  2076,   2012}, {0xf1, 0x00, 0x7e, 0xff}}},\n    {{{ -3036,   2560,    430}, 0, {  2076,      0}, {0xf1, 0x00, 0x7e, 0xff}}},\n    {{{ -3631,   2560,   1872}, 0, {  3610,      0}, {0x4c, 0x00, 0x9b, 0xff}}},\n    {{{ -3631,   1536,   1872}, 0, {  3610,   2012}, {0x28, 0x00, 0x88, 0xff}}},\n    {{{ -4089,   1536,    956}, 0, {  2872,   2012}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{ -4089,   2560,    956}, 0, {  2872,      0}, {0x65, 0x00, 0x4c, 0xff}}},\n    {{{ -3631,   1536,    727}, 0, {  2520,   2012}, {0x73, 0x34, 0x00, 0xff}}},\n    {{{ -3631,   1792,    727}, 0, {  2520,   1500}, {0x4a, 0xc9, 0x56, 0xff}}},\n    {{{ -2578,   2560,   1346}, 0, {  1416,      0}, {0x9b, 0x00, 0xb4, 0xff}}},\n    {{{ -2578,   1536,   1346}, 0, {  1416,   2012}, {0x84, 0x00, 0xea, 0xff}}},\n    {{{ -3631,   1536,   1872}, 0, {   544,   2012}, {0x28, 0x00, 0x88, 0xff}}},\n    {{{ -3631,   2560,   1872}, 0, {   544,      0}, {0x4c, 0x00, 0x9b, 0xff}}},\n    {{{ -3654,   1536,    682}, 0, {  2518,   2012}, {0x32, 0x71, 0xe7, 0xff}}},\n    {{{ -3494,   1536,    659}, 0, {  2386,   2012}, {0xe9, 0x67, 0x45, 0xff}}},\n    {{{ -3517,   1536,    613}, 0, {  2394,   2012}, {0x9b, 0x38, 0x32, 0xff}}},\n};\n\n// 0x0700AED8 - 0x0700AF58\nstatic const Vtx hmc_seg7_vertex_0700AED8[] = {\n    {{{ -3517,   1792,    613}, 0, {  2394,   1500}, {0xce, 0x8f, 0x19, 0xff}}},\n    {{{ -3494,   1792,    659}, 0, {  2386,   1500}, {0xf1, 0xdf, 0x79, 0xff}}},\n    {{{ -3631,   1792,    727}, 0, {  2520,   1500}, {0x4a, 0xc9, 0x56, 0xff}}},\n    {{{ -3654,   1792,    682}, 0, {  2518,   1500}, {0x65, 0xc8, 0xcd, 0xff}}},\n    {{{ -3631,   1536,    727}, 0, {  2520,   2012}, {0x73, 0x34, 0x00, 0xff}}},\n    {{{ -3654,   1536,    682}, 0, {  2518,   2012}, {0x32, 0x71, 0xe7, 0xff}}},\n    {{{ -3494,   1536,    659}, 0, {  2386,   2012}, {0xe9, 0x67, 0x45, 0xff}}},\n    {{{ -3517,   1536,    613}, 0, {  2394,   2012}, {0x9b, 0x38, 0x32, 0xff}}},\n};\n\n// 0x0700AF58 - 0x0700B058\nstatic const Vtx hmc_seg7_vertex_0700AF58[] = {\n    {{{  5530,   1126,   6656}, 0, {     0,    404}, {0x63, 0x2e, 0x3f, 0xff}}},\n    {{{  5530,   1126,   6144}, 0, {   990,    404}, {0x3f, 0x2e, 0x9d, 0xff}}},\n    {{{  5274,   1434,   6400}, 0, {   478,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5530,      0,   6144}, 0, {   990,   2012}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  5530,      0,   6656}, 0, {     0,   2012}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  5018,   1126,   6144}, 0, {   990,    404}, {0x9d, 0x2e, 0xc1, 0xff}}},\n    {{{  5018,   1126,   6656}, 0, {     0,    404}, {0xc1, 0x2e, 0x63, 0xff}}},\n    {{{  5530,      0,   6656}, 0, {   990,   2012}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  5530,   1126,   6656}, 0, {   990,    408}, {0x63, 0x2e, 0x3f, 0xff}}},\n    {{{  5018,   1126,   6656}, 0, {     0,    408}, {0xc1, 0x2e, 0x63, 0xff}}},\n    {{{  5274,   1434,   6400}, 0, {   480,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5018,      0,   6656}, 0, {     0,   2012}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  5530,   1126,   6144}, 0, {   990,    408}, {0x3f, 0x2e, 0x9d, 0xff}}},\n    {{{  5018,   1126,   6144}, 0, {     0,    408}, {0x9d, 0x2e, 0xc1, 0xff}}},\n    {{{  5018,      0,   6144}, 0, {   990,   2012}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  5018,      0,   6144}, 0, {     0,   2012}, {0xc8, 0x00, 0x8f, 0xff}}},\n};\n\n// 0x0700B058 - 0x0700B158\nstatic const Vtx hmc_seg7_vertex_0700B058[] = {\n    {{{  1843,    410,   7270}, 0, {   990,   1332}, {0x6e, 0x1b, 0xc9, 0xff}}},\n    {{{  1843,      0,   7680}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1843,      0,   6861}, 0, {  2012,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1843,    205,   6861}, 0, {  2012,    648}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  1843,    205,   7066}, 0, {  1500,    648}, {0x54, 0x2a, 0xac, 0xff}}},\n    {{{  1434,    205,   6861}, 0, {   990,    648}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  1843,      0,   6861}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1434,      0,   6861}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1843,    410,   7066}, 0, {  1500,   1332}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  1843,    614,   7680}, 0, {     0,   2012}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  1843,    614,   7270}, 0, {   990,   2012}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  5018,      0,   4403}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5530,   1126,   4403}, 0, {   990,    552}, {0x56, 0x2c, 0x51, 0xff}}},\n    {{{  5018,   1126,   4403}, 0, {     0,    552}, {0xb0, 0x41, 0x49, 0xff}}},\n    {{{  5530,      0,   4403}, 0, {   990,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  5274,   1434,   3994}, 0, {   480,      0}, {0x00, 0x7e, 0x00, 0xff}}},\n};\n\n// 0x0700B158 - 0x0700B248\nstatic const Vtx hmc_seg7_vertex_0700B158[] = {\n    {{{   763,      0,   3085}, 0, {  5528,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -746,    922,   1575}, 0, {   548,      0}, {0x3b, 0xc6, 0xa0, 0xff}}},\n    {{{   763,    922,   3085}, 0, {  5528,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1434,    205,   6861}, 0, {   990,    648}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  1843,    205,   6861}, 0, {     0,    648}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  1843,      0,   6861}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1434,    410,   7066}, 0, {   990,   1332}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  1843,    410,   7066}, 0, {     0,   1332}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  1843,    205,   7066}, 0, {     0,    648}, {0x54, 0x2a, 0xac, 0xff}}},\n    {{{  1434,    205,   7066}, 0, {   990,    648}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{  1434,    614,   7270}, 0, {   990,   2012}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  1843,    410,   7270}, 0, {     0,   1332}, {0x6e, 0x1b, 0xc9, 0xff}}},\n    {{{  1434,    410,   7270}, 0, {   990,   1332}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{  1843,    614,   7270}, 0, {     0,   2012}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  -746,      0,   1575}, 0, {   548,   2012}, {0x1d, 0x72, 0xd1, 0xff}}},\n};\n\n// 0x0700B248 - 0x0700B338\nstatic const Vtx hmc_seg7_vertex_0700B248[] = {\n    {{{  -414,    922,   1038}, 0, { -2434,      0}, {0xe3, 0x8e, 0x2f, 0xff}}},\n    {{{  -746,    922,   1575}, 0, { -3096,      0}, {0x3b, 0xc6, 0xa0, 0xff}}},\n    {{{ -2120,    922,   1117}, 0, { -1052,      0}, {0xf1, 0x98, 0xb9, 0xff}}},\n    {{{  -746,    922,   1575}, 0, {   548,      0}, {0x3b, 0xc6, 0xa0, 0xff}}},\n    {{{  -746,      0,   1575}, 0, {   548,   2012}, {0x1d, 0x72, 0xd1, 0xff}}},\n    {{{ -2120,      0,   1117}, 0, { -3046,   2012}, {0x06, 0x49, 0x99, 0xff}}},\n    {{{ -2120,    922,   1117}, 0, { -3046,      0}, {0xf1, 0x98, 0xb9, 0xff}}},\n    {{{  -414,      0,   1038}, 0, {   758,   2012}, {0xc5, 0x3a, 0x60, 0xff}}},\n    {{{  1198,      0,   2651}, 0, {  6074,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1198,    922,   2651}, 0, {  6074,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -414,    922,   1038}, 0, {   758,      0}, {0xe3, 0x8e, 0x2f, 0xff}}},\n    {{{ -1926,    922,    534}, 0, { -3196,      0}, {0xe7, 0xba, 0x66, 0xff}}},\n    {{{ -1926,      0,    534}, 0, { -3196,   2012}, {0xf4, 0x65, 0x4a, 0xff}}},\n    {{{   836,    922,   3158}, 0, { -6022,      0}, {0x61, 0xc9, 0x3a, 0xff}}},\n    {{{  1270,    922,   2723}, 0, { -5630,      0}, {0x27, 0xe5, 0x75, 0xff}}},\n};\n\n// 0x0700B338 - 0x0700B438\nstatic const Vtx hmc_seg7_vertex_0700B338[] = {\n    {{{ -3631,   1536,   1872}, 0, {     0,  -1396}, {0x28, 0x00, 0x88, 0xff}}},\n    {{{ -4089,      0,    956}, 0, {  2524,   2012}, {0x73, 0x33, 0x00, 0xff}}},\n    {{{ -4089,   1536,    956}, 0, {  2524,  -1396}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{ -3036,    922,    430}, 0, {   990,      0}, {0xc2, 0xc1, 0x5a, 0xff}}},\n    {{{ -1926,    922,    534}, 0, {  -184,      0}, {0xe7, 0xba, 0x66, 0xff}}},\n    {{{ -2120,    922,   1117}, 0, { -1052,      0}, {0xf1, 0x98, 0xb9, 0xff}}},\n    {{{ -2578,    922,   1346}, 0, { -1052,      0}, {0x9e, 0xb7, 0xe0, 0xff}}},\n    {{{  -414,    922,   1038}, 0, { -2434,      0}, {0xe3, 0x8e, 0x2f, 0xff}}},\n    {{{ -4089,   1536,    956}, 0, { -7694,  -1396}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{ -3036,      0,    430}, 0, { -5832,   2012}, {0x18, 0x5b, 0x54, 0xff}}},\n    {{{ -3036,   1536,    430}, 0, { -5832,  -1396}, {0xf1, 0x00, 0x7e, 0xff}}},\n    {{{ -4089,      0,    956}, 0, { -7694,   2012}, {0x73, 0x33, 0x00, 0xff}}},\n    {{{ -3631,      0,   1872}, 0, {     0,   2012}, {0x00, 0x54, 0xa2, 0xff}}},\n    {{{ -2578,   1536,   1346}, 0, { -3856,  -1396}, {0x84, 0x00, 0xea, 0xff}}},\n    {{{ -2578,      0,   1346}, 0, { -3856,   2012}, {0xd8, 0x59, 0xb0, 0xff}}},\n    {{{ -3631,      0,   1872}, 0, { -5720,   2012}, {0x00, 0x54, 0xa2, 0xff}}},\n};\n\n// 0x0700B438 - 0x0700B528\nstatic const Vtx hmc_seg7_vertex_0700B438[] = {\n    {{{ -3631,   1536,   1872}, 0, { -5720,  -1396}, {0x28, 0x00, 0x88, 0xff}}},\n    {{{ -2578,   1536,   1346}, 0, { -3856,  -1396}, {0x84, 0x00, 0xea, 0xff}}},\n    {{{ -3631,      0,   1872}, 0, { -5720,   2012}, {0x00, 0x54, 0xa2, 0xff}}},\n    {{{ -2120,    922,   1117}, 0, { -3046,      0}, {0xf1, 0x98, 0xb9, 0xff}}},\n    {{{ -2120,      0,   1117}, 0, { -3046,   2012}, {0x06, 0x49, 0x99, 0xff}}},\n    {{{ -2578,      0,   1346}, 0, { -3856,   2012}, {0xd8, 0x59, 0xb0, 0xff}}},\n    {{{ -2578,    922,   1346}, 0, { -3856,      0}, {0x9e, 0xb7, 0xe0, 0xff}}},\n    {{{ -3036,    922,    430}, 0, { -5832,      0}, {0xc2, 0xc1, 0x5a, 0xff}}},\n    {{{ -1926,      0,    534}, 0, { -3196,   2012}, {0xf4, 0x65, 0x4a, 0xff}}},\n    {{{ -1926,    922,    534}, 0, { -3196,      0}, {0xe7, 0xba, 0x66, 0xff}}},\n    {{{ -3036,      0,    430}, 0, { -5832,   2012}, {0x18, 0x5b, 0x54, 0xff}}},\n    {{{ -3036,    922,    430}, 0, {  2012,      0}, {0xc2, 0xc1, 0x5a, 0xff}}},\n    {{{ -2578,   1536,   1346}, 0, {     0,  -1056}, {0x84, 0x00, 0xea, 0xff}}},\n    {{{ -3036,   1536,    430}, 0, {  2012,  -1056}, {0xf1, 0x00, 0x7e, 0xff}}},\n    {{{ -2578,    922,   1346}, 0, {     0,      0}, {0x9e, 0xb7, 0xe0, 0xff}}},\n};\n\n// 0x0700B528 - 0x0700B628\nstatic const Vtx hmc_seg7_vertex_0700B528[] = {\n    {{{  4150,   1126,   1434}, 0, { -1256,   -440}, {0xa6, 0xa9, 0xee, 0xff}}},\n    {{{  4150,    922,   2048}, 0, {     0,      0}, {0xa6, 0xa8, 0xf7, 0xff}}},\n    {{{  3484,    922,   2048}, 0, {     0,      0}, {0x66, 0xb7, 0xf0, 0xff}}},\n    {{{  6244,    922,   2560}, 0, {  3238,   -440}, {0xc3, 0xc3, 0x5c, 0xff}}},\n    {{{  5579,    922,   2048}, 0, {  2216,   -440}, {0x5a, 0xa8, 0x0e, 0xff}}},\n    {{{  6244,    922,   2048}, 0, {  2216,   -440}, {0x96, 0xbc, 0x0b, 0xff}}},\n    {{{  5579,    922,   2560}, 0, {  3238,   -440}, {0x43, 0xdf, 0x65, 0xff}}},\n    {{{  6244,    717,   1434}, 0, {   990,      0}, {0xa6, 0xa9, 0x13, 0xff}}},\n    {{{  5579,    717,   1434}, 0, {   990,      0}, {0x5a, 0xa8, 0x09, 0xff}}},\n    {{{  6244,    717,    922}, 0, {     0,      0}, {0xc3, 0xc3, 0x5c, 0xff}}},\n    {{{  5579,    717,    922}, 0, {     0,      0}, {0x33, 0xcd, 0x67, 0xff}}},\n    {{{  4150,    922,   2560}, 0, {   990,      0}, {0xd2, 0xe9, 0x73, 0xff}}},\n    {{{  3484,    922,   2560}, 0, {   990,      0}, {0x3d, 0xc3, 0x5c, 0xff}}},\n    {{{  3484,   1126,   1434}, 0, { -1256,   -440}, {0x5a, 0xa8, 0xf7, 0xff}}},\n    {{{  4150,   1126,    922}, 0, { -2278,   -440}, {0xc3, 0xc3, 0x5c, 0xff}}},\n    {{{  3484,   1126,    922}, 0, { -2278,   -440}, {0x33, 0xcd, 0x67, 0xff}}},\n};\n\n// 0x0700B628 - 0x0700B728\nstatic const Vtx hmc_seg7_vertex_0700B628[] = {\n    {{{  5018,      0,   4403}, 0, {  2524,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5018,   1126,   4403}, 0, {  2524,    536}, {0xb0, 0x41, 0x49, 0xff}}},\n    {{{  5018,   1126,   3584}, 0, {   820,    536}, {0x9c, 0x34, 0xc7, 0xff}}},\n    {{{  5018,      0,   3584}, 0, {   820,   2012}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  5274,   1434,   3994}, 0, {  1672,     80}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  5530,      0,   3584}, 0, {  2012,   2012}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  5530,   1126,   4403}, 0, {     0,    552}, {0x56, 0x2c, 0x51, 0xff}}},\n    {{{  5530,      0,   4403}, 0, {     0,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  5530,   1126,   3584}, 0, {  2012,    552}, {0x40, 0x34, 0xa1, 0xff}}},\n    {{{  3021,   1434,   6298}, 0, {  2948,     80}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  3277,   1126,   5939}, 0, {  2524,    536}, {0x40, 0x33, 0xa0, 0xff}}},\n    {{{  2765,   1126,   5939}, 0, {  3374,    536}, {0x9c, 0x32, 0xc5, 0xff}}},\n    {{{  5274,   1434,   3994}, 0, {   990,      0}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  5018,      0,   3584}, 0, { -1734,   2012}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  5018,   1126,   3584}, 0, { -1734,    536}, {0x9c, 0x34, 0xc7, 0xff}}},\n    {{{  5530,   1126,   3584}, 0, { -2586,    536}, {0x40, 0x34, 0xa1, 0xff}}},\n};\n\n// 0x0700B728 - 0x0700B808\nstatic const Vtx hmc_seg7_vertex_0700B728[] = {\n    {{{  5018,      0,   3584}, 0, { -1734,   2012}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  5530,   1126,   3584}, 0, { -2586,    536}, {0x40, 0x34, 0xa1, 0xff}}},\n    {{{  5530,      0,   3584}, 0, { -2586,   2012}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  5018,   1126,   3584}, 0, { -1734,    536}, {0x9c, 0x34, 0xc7, 0xff}}},\n    {{{  5274,   1434,   3994}, 0, { -2160,     80}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  2765,      0,   5939}, 0, {  3374,   2012}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  3277,   1126,   5939}, 0, {  2524,    536}, {0x40, 0x33, 0xa0, 0xff}}},\n    {{{  3277,      0,   5939}, 0, {  2524,   2012}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  2765,   1126,   5939}, 0, {  3374,    536}, {0x9c, 0x32, 0xc5, 0xff}}},\n    {{{  2765,      0,   6656}, 0, {  5078,   2012}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  2765,   1126,   5939}, 0, {  4226,    536}, {0x9c, 0x32, 0xc5, 0xff}}},\n    {{{  2765,      0,   5939}, 0, {  4226,   2012}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  2765,   1126,   6656}, 0, {  5078,    536}, {0xc0, 0x32, 0x60, 0xff}}},\n    {{{  3021,   1434,   6298}, 0, {  4652,     80}, {0x00, 0x7e, 0x00, 0xff}}},\n};\n\n// 0x0700B808 - 0x0700B908\nstatic const Vtx hmc_seg7_vertex_0700B808[] = {\n    {{{  3277,      0,   6656}, 0, {     0,   2012}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  2765,   1126,   6656}, 0, {  -882,    536}, {0xc0, 0x32, 0x60, 0xff}}},\n    {{{  2765,      0,   6656}, 0, {  -882,   2012}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  3277,   1126,   6656}, 0, {     0,    536}, {0x64, 0x32, 0x3b, 0xff}}},\n    {{{  3021,   1434,   6298}, 0, {  -456,     80}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  3277,      0,   5939}, 0, {     0,   2012}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  3277,   1126,   6656}, 0, {  -882,    536}, {0x64, 0x32, 0x3b, 0xff}}},\n    {{{  3277,      0,   6656}, 0, {  -882,   2012}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  3277,   1126,   5939}, 0, {     0,    536}, {0x40, 0x33, 0xa0, 0xff}}},\n    {{{  1690,   1024,   4608}, 0, {  1672,    536}, {0x3d, 0x2b, 0x9b, 0xff}}},\n    {{{  1306,   1434,   4864}, 0, {  1246,     80}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1690,   1024,   5120}, 0, {   820,    536}, {0x62, 0x2b, 0x42, 0xff}}},\n    {{{  1690,      0,   5120}, 0, { -2160,   2012}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{   922,   1024,   5120}, 0, { -3436,    536}, {0xc3, 0x2b, 0x65, 0xff}}},\n    {{{   922,      0,   5120}, 0, { -3436,   2012}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  1690,   1024,   5120}, 0, { -2160,    536}, {0x62, 0x2b, 0x42, 0xff}}},\n};\n\n// 0x0700B908 - 0x0700BA08\nstatic const Vtx hmc_seg7_vertex_0700B908[] = {\n    {{{  1690,   1024,   5120}, 0, { -2160,    536}, {0x62, 0x2b, 0x42, 0xff}}},\n    {{{  1306,   1434,   4864}, 0, { -2798,     80}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   922,   1024,   5120}, 0, { -3436,    536}, {0xc3, 0x2b, 0x65, 0xff}}},\n    {{{  1690,      0,   4608}, 0, {  1672,   2012}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  1690,   1024,   4608}, 0, {  1672,    536}, {0x3d, 0x2b, 0x9b, 0xff}}},\n    {{{  1690,   1024,   5120}, 0, {   820,    536}, {0x62, 0x2b, 0x42, 0xff}}},\n    {{{  1690,      0,   5120}, 0, {   820,   2012}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{   922,      0,   5120}, 0, {  3374,   2012}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{   922,   1024,   5120}, 0, {  3374,    536}, {0xc3, 0x2b, 0x65, 0xff}}},\n    {{{   922,   1024,   4608}, 0, {  2524,    536}, {0x9e, 0x2b, 0xbe, 0xff}}},\n    {{{   922,      0,   4608}, 0, {  2524,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1306,   1434,   4864}, 0, {  2948,     80}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   922,      0,   4608}, 0, {  5930,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1690,   1024,   4608}, 0, {  4652,    536}, {0x3d, 0x2b, 0x9b, 0xff}}},\n    {{{  1690,      0,   4608}, 0, {  4652,   2012}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{   922,   1024,   4608}, 0, {  5930,    536}, {0x9e, 0x2b, 0xbe, 0xff}}},\n};\n\n// 0x0700BA08 - 0x0700BA38\nstatic const Vtx hmc_seg7_vertex_0700BA08[] = {\n    {{{  1306,   1434,   4864}, 0, {  5290,     80}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1690,   1024,   4608}, 0, {  4652,    536}, {0x3d, 0x2b, 0x9b, 0xff}}},\n    {{{   922,   1024,   4608}, 0, {  5930,    536}, {0x9e, 0x2b, 0xbe, 0xff}}},\n};\n\n// 0x0700BA38 - 0x0700BB38\nstatic const Vtx hmc_seg7_vertex_0700BA38[] = {\n    {{{  5018,   1024,   6451}, 0, {  8654,   1500}, {0x00, 0x91, 0x3c, 0xff}}},\n    {{{  3277,   1024,   6451}, 0, {     0,   1500}, {0x00, 0x23, 0x79, 0xff}}},\n    {{{  3277,   1024,   6349}, 0, {     0,   2012}, {0x00, 0x91, 0xc4, 0xff}}},\n    {{{  5018,   1024,   6349}, 0, {  8654,   2012}, {0x00, 0x23, 0x87, 0xff}}},\n    {{{  3277,   1075,   6400}, 0, {     0,   1500}, {0x00, 0x78, 0xd8, 0xff}}},\n    {{{  5018,   1075,   6400}, 0, {  8654,   1500}, {0x00, 0x78, 0x28, 0xff}}},\n    {{{  3277,   1024,   6451}, 0, {     0,   2012}, {0x00, 0x23, 0x79, 0xff}}},\n    {{{  5018,   1024,   6451}, 0, {  8654,   2012}, {0x00, 0x91, 0x3c, 0xff}}},\n    {{{  5325,   1024,   4403}, 0, { -7694,   2012}, {0x3c, 0x91, 0x00, 0xff}}},\n    {{{  5325,   1024,   6144}, 0, {   990,   2012}, {0x79, 0x23, 0x00, 0xff}}},\n    {{{  5222,   1024,   6144}, 0, {   990,   1500}, {0xc4, 0x91, 0x00, 0xff}}},\n    {{{  5222,   1024,   4403}, 0, { -7694,   1500}, {0x87, 0x25, 0x00, 0xff}}},\n    {{{  5222,   1024,   4403}, 0, {  8656,   2012}, {0x87, 0x25, 0x00, 0xff}}},\n    {{{  5222,   1024,   6144}, 0, {     0,   2012}, {0xc4, 0x91, 0x00, 0xff}}},\n    {{{  5274,   1075,   6144}, 0, {     0,   1604}, {0xd9, 0x78, 0x00, 0xff}}},\n    {{{  5274,   1075,   4403}, 0, {  8656,   1604}, {0x28, 0x78, 0x00, 0xff}}},\n};\n\n// 0x0700BB38 - 0x0700BC28\nstatic const Vtx hmc_seg7_vertex_0700BB38[] = {\n    {{{  5274,   1075,   4403}, 0, {  8656,   1604}, {0x28, 0x78, 0x00, 0xff}}},\n    {{{  5274,   1075,   6144}, 0, {     0,   1604}, {0xd9, 0x78, 0x00, 0xff}}},\n    {{{  5325,   1024,   6144}, 0, {     0,   2012}, {0x79, 0x23, 0x00, 0xff}}},\n    {{{  5325,   1024,   4403}, 0, {  8656,   2012}, {0x3c, 0x91, 0x00, 0xff}}},\n    {{{  2765,   1024,   4096}, 0, {     0,   2012}, {0x00, 0x91, 0xc4, 0xff}}},\n    {{{  5018,   1024,   4096}, 0, { 11210,   2012}, {0x00, 0x23, 0x87, 0xff}}},\n    {{{  5018,   1024,   4198}, 0, { 11210,   1604}, {0x00, 0x91, 0x3c, 0xff}}},\n    {{{  2765,   1024,   4198}, 0, {     0,   1604}, {0x00, 0x23, 0x79, 0xff}}},\n    {{{  2765,   1024,   4198}, 0, {     0,   2012}, {0x00, 0x23, 0x79, 0xff}}},\n    {{{  5018,   1024,   4198}, 0, { 11210,   2012}, {0x00, 0x91, 0x3c, 0xff}}},\n    {{{  5018,   1075,   4147}, 0, { 11210,   1500}, {0x00, 0x78, 0x28, 0xff}}},\n    {{{  2765,   1075,   4147}, 0, {     0,   1500}, {0x00, 0x78, 0xd8, 0xff}}},\n    {{{  3740,    461,    922}, 0, {   606,   1444}, {0x37, 0xe5, 0x6e, 0xff}}},\n    {{{  3740,    205,    870}, 0, {   606,   2012}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  3740,    461,    870}, 0, {   606,   1444}, {0x38, 0x8f, 0x00, 0xff}}},\n};\n\n// 0x0700BC28 - 0x0700BD18\nstatic const Vtx hmc_seg7_vertex_0700BC28[] = {\n    {{{  3894,    461,    870}, 0, {   990,   1444}, {0x8f, 0xc8, 0x00, 0xff}}},\n    {{{  3894,    205,    870}, 0, {   990,   2012}, {0xc8, 0x71, 0x00, 0xff}}},\n    {{{  3894,    205,    922}, 0, {   990,   2012}, {0x99, 0x33, 0x33, 0xff}}},\n    {{{  3894,    461,    922}, 0, {   990,   1444}, {0xdf, 0xbd, 0x65, 0xff}}},\n    {{{  3740,    461,    922}, 0, {   606,   1444}, {0x37, 0xe5, 0x6e, 0xff}}},\n    {{{  3740,    461,    870}, 0, {   606,   1444}, {0x38, 0x8f, 0x00, 0xff}}},\n    {{{  5988,     51,    870}, 0, {   990,   1444}, {0x8f, 0xc8, 0x00, 0xff}}},\n    {{{  5988,   -204,    870}, 0, {   990,   2012}, {0xc8, 0x71, 0x00, 0xff}}},\n    {{{  5988,   -204,    922}, 0, {   990,   2012}, {0x99, 0x33, 0x33, 0xff}}},\n    {{{  3740,    205,    922}, 0, {   606,   2012}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{  3740,    205,    870}, 0, {   606,   2012}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  5988,   -204,    870}, 0, {  -132,   1104}, {0xc8, 0x71, 0x00, 0xff}}},\n    {{{  5835,   -204,    870}, 0, {  -132,   1444}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  5835,   -204,    922}, 0, {     0,   1444}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{  5988,   -204,    922}, 0, {     0,   1104}, {0x99, 0x33, 0x33, 0xff}}},\n};\n\n// 0x0700BD18 - 0x0700BDF8\nstatic const Vtx hmc_seg7_vertex_0700BD18[] = {\n    {{{  5988,     51,    922}, 0, {   990,   1444}, {0xdf, 0xbd, 0x65, 0xff}}},\n    {{{  5835,     51,    922}, 0, {   606,   1444}, {0x37, 0xe5, 0x6e, 0xff}}},\n    {{{  5835,     51,    870}, 0, {   606,   1444}, {0x38, 0x8f, 0x00, 0xff}}},\n    {{{  5988,     51,    870}, 0, {   990,   1444}, {0x8f, 0xc8, 0x00, 0xff}}},\n    {{{  5988,   -204,    922}, 0, {   990,   2012}, {0x99, 0x33, 0x33, 0xff}}},\n    {{{  3484,   1126,    922}, 0, {     0,      0}, {0x33, 0xcd, 0x67, 0xff}}},\n    {{{  3484,    205,    922}, 0, {     0,   2012}, {0x49, 0x49, 0x49, 0xff}}},\n    {{{  3740,    461,    922}, 0, {   606,   1444}, {0x37, 0xe5, 0x6e, 0xff}}},\n    {{{  5835,   -204,    922}, 0, {   606,   2012}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{  5835,   -204,    870}, 0, {   606,   2012}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  6244,    717,    922}, 0, {  1628,      0}, {0xc3, 0xc3, 0x5c, 0xff}}},\n    {{{  5579,    717,    922}, 0, {     0,      0}, {0x33, 0xcd, 0x67, 0xff}}},\n    {{{  6244,   -204,    922}, 0, {  1628,   2012}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{  5579,   -204,    922}, 0, {     0,   2012}, {0x49, 0x49, 0x49, 0xff}}},\n};\n\n// 0x0700BDF8 - 0x0700BE78\nstatic const Vtx hmc_seg7_vertex_0700BDF8[] = {\n    {{{  4150,   1126,    922}, 0, {  1628,      0}, {0xc3, 0xc3, 0x5c, 0xff}}},\n    {{{  3894,    461,    922}, 0, {   990,   1444}, {0xdf, 0xbd, 0x65, 0xff}}},\n    {{{  4150,    205,    922}, 0, {  1628,   2012}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{  3484,    205,    922}, 0, {     0,   2012}, {0x49, 0x49, 0x49, 0xff}}},\n    {{{  3740,    205,    922}, 0, {   606,   2012}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{  3740,    461,    922}, 0, {   606,   1444}, {0x37, 0xe5, 0x6e, 0xff}}},\n    {{{  3484,   1126,    922}, 0, {     0,      0}, {0x33, 0xcd, 0x67, 0xff}}},\n    {{{  3894,    205,    922}, 0, {   990,   2012}, {0x99, 0x33, 0x33, 0xff}}},\n};\n\n// 0x0700BE78 - 0x0700BEB8\nstatic const Vtx hmc_seg7_vertex_0700BE78[] = {\n    {{{  1743,    102,   2570}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2051,    717,   2570}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1743,    717,   2570}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2051,    102,   2570}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0700BEB8 - 0x0700BEF8\nstatic const Vtx hmc_seg7_vertex_0700BEB8[] = {\n    {{{  2051,    102,   2570}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2358,    102,   2570}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2358,    717,   2570}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2051,    717,   2570}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0700BEF8 - 0x0700BFE8\nstatic const Vtx hmc_seg7_vertex_0700BEF8[] = {\n    {{{   717,   1946,   3277}, 0, {     0,    992}, {0x67, 0xb7, 0x00, 0xff}}},\n    {{{   922,   2048,   3072}, 0, {  1414,      0}, {0x49, 0x1a, 0x63, 0xff}}},\n    {{{   717,   2048,   3277}, 0, {     0,      0}, {0x49, 0x67, 0x00, 0xff}}},\n    {{{   922,   2048,   4813}, 0, {  2524,      0}, {0x54, 0x4a, 0xc6, 0xff}}},\n    {{{   922,   1946,   4813}, 0, {  2524,    992}, {0x72, 0xd5, 0xde, 0xff}}},\n    {{{   410,   1946,   4403}, 0, {     0,    988}, {0x0c, 0x9d, 0xb3, 0xff}}},\n    {{{   410,   2048,   4403}, 0, {     0,      0}, {0xa3, 0x43, 0xcc, 0xff}}},\n    {{{   922,   2048,   5427}, 0, {     0,      0}, {0x72, 0x2b, 0x22, 0xff}}},\n    {{{   922,   1946,   5427}, 0, {     0,    992}, {0x54, 0xb6, 0x3a, 0xff}}},\n    {{{   922,   1946,   4813}, 0, {  3034,    992}, {0x72, 0xd5, 0xde, 0xff}}},\n    {{{   922,   2048,   4813}, 0, {  3034,      0}, {0x54, 0x4a, 0xc6, 0xff}}},\n    {{{   410,   2048,   5837}, 0, {     0,      0}, {0x0c, 0x63, 0x4d, 0xff}}},\n    {{{   410,   1946,   5837}, 0, {     0,    988}, {0xa3, 0xbd, 0x34, 0xff}}},\n    {{{   922,   1946,   5427}, 0, {  2524,    992}, {0x54, 0xb6, 0x3a, 0xff}}},\n    {{{   922,   2048,   5427}, 0, {  2524,      0}, {0x72, 0x2b, 0x22, 0xff}}},\n};\n\n// 0x0700BFE8 - 0x0700C0E8\nstatic const Vtx hmc_seg7_vertex_0700BFE8[] = {\n    {{{  6244,    205,   1536}, 0, { -2330,   2012}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  5579,    410,   1536}, 0, {   990,      0}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  6244,    410,   1536}, 0, { -2330,      0}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{   717,   1946,   3277}, 0, {     0,    992}, {0x67, 0xb7, 0x00, 0xff}}},\n    {{{   922,   1946,   3072}, 0, {  1414,    988}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   922,   2048,   3072}, 0, {  1414,      0}, {0x49, 0x1a, 0x63, 0xff}}},\n    {{{   717,   1946,   3277}, 0, {  4056,    992}, {0x67, 0xb7, 0x00, 0xff}}},\n    {{{   717,   2048,   3277}, 0, {  4056,      0}, {0x49, 0x67, 0x00, 0xff}}},\n    {{{   922,   2048,   3482}, 0, {  3034,      0}, {0x59, 0x49, 0xcc, 0xff}}},\n    {{{   922,   1946,   3482}, 0, {  3034,    992}, {0x63, 0xb7, 0xe6, 0xff}}},\n    {{{   922,   2048,   4096}, 0, {     0,      0}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{   922,   1946,   4096}, 0, {     0,    992}, {0x33, 0xcd, 0x67, 0xff}}},\n    {{{  5579,    205,   1536}, 0, {   990,   2012}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{  5902,   1843,   6159}, 0, {     0,   2012}, {0x24, 0xcd, 0x6d, 0xff}}},\n    {{{  5974,   2048,   6087}, 0, {   480,      0}, {0x6d, 0x33, 0x24, 0xff}}},\n    {{{  5902,   2048,   6159}, 0, {     0,      0}, {0xe3, 0x54, 0x59, 0xff}}},\n};\n\n// 0x0700C0E8 - 0x0700C1D8\nstatic const Vtx hmc_seg7_vertex_0700C0E8[] = {\n    {{{  6244,      0,   1434}, 0, { -2330,   2012}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  5579,    205,   1434}, 0, {   990,      0}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  6244,    205,   1434}, 0, { -2330,      0}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{  5579,      0,   1434}, 0, {   990,   2012}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{  6244,   -204,   1331}, 0, { -2330,   2012}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{  5579,      0,   1331}, 0, {   990,      0}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  6244,      0,   1331}, 0, { -2330,      0}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{  5579,   -204,   1331}, 0, {   990,   2012}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{  5540,   2048,   5797}, 0, {     0,      0}, {0x93, 0x33, 0xdc, 0xff}}},\n    {{{  5612,   1843,   5725}, 0, {   478,   2012}, {0xdc, 0xcd, 0x93, 0xff}}},\n    {{{  5540,   1843,   5797}, 0, {     0,   2012}, {0xa6, 0xac, 0x1d, 0xff}}},\n    {{{  5612,   2048,   5725}, 0, {   478,      0}, {0x1d, 0x54, 0xa7, 0xff}}},\n    {{{  5902,   2048,   6159}, 0, {     0,      0}, {0xe3, 0x54, 0x59, 0xff}}},\n    {{{  5540,   1946,   5797}, 0, {  2522,    988}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  5902,   1946,   6159}, 0, {     0,    988}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x0700C1D8 - 0x0700C2B8\nstatic const Vtx hmc_seg7_vertex_0700C1D8[] = {\n    {{{  5902,   1843,   6159}, 0, {     0,   2012}, {0x24, 0xcd, 0x6d, 0xff}}},\n    {{{  5974,   1843,   6087}, 0, {   480,   2012}, {0x59, 0xac, 0xe3, 0xff}}},\n    {{{  5974,   2048,   6087}, 0, {   480,      0}, {0x6d, 0x33, 0x24, 0xff}}},\n    {{{  5830,   1946,   6087}, 0, {     0,    992}, {0x93, 0xcd, 0xdc, 0xff}}},\n    {{{  5902,   1946,   6015}, 0, {   478,    992}, {0x1d, 0xac, 0xa7, 0xff}}},\n    {{{  5902,   1843,   6015}, 0, {   480,   2012}, {0xdc, 0xcd, 0x93, 0xff}}},\n    {{{  5830,   1843,   6087}, 0, {     0,   2012}, {0xa7, 0xac, 0x1d, 0xff}}},\n    {{{  5612,   1843,   5870}, 0, {     0,   2012}, {0x24, 0xcd, 0x6d, 0xff}}},\n    {{{  5685,   1946,   5797}, 0, {   478,    992}, {0x6d, 0xcd, 0x24, 0xff}}},\n    {{{  5612,   1946,   5870}, 0, {     0,    992}, {0xe2, 0xac, 0x59, 0xff}}},\n    {{{  5685,   1843,   5797}, 0, {   478,   2012}, {0x59, 0xac, 0xe2, 0xff}}},\n    {{{  5902,   2048,   6159}, 0, {     0,      0}, {0xe3, 0x54, 0x59, 0xff}}},\n    {{{  5540,   2048,   5797}, 0, {  2522,      0}, {0x93, 0x33, 0xdc, 0xff}}},\n    {{{  5540,   1946,   5797}, 0, {  2522,    988}, {0xa6, 0x00, 0x59, 0xff}}},\n};\n\n// 0x0700C2B8 - 0x0700C398\nstatic const Vtx hmc_seg7_vertex_0700C2B8[] = {\n    {{{  5902,   1946,   6015}, 0, {   478,    988}, {0x1d, 0xac, 0xa7, 0xff}}},\n    {{{  5974,   1946,   6087}, 0, {     0,    988}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  5974,   1843,   6087}, 0, {     0,   2012}, {0x59, 0xac, 0xe3, 0xff}}},\n    {{{  5612,   1946,   5870}, 0, {  2012,    988}, {0xe2, 0xac, 0x59, 0xff}}},\n    {{{  5540,   1946,   5797}, 0, {  2522,    988}, {0xa6, 0x00, 0x59, 0xff}}},\n    {{{  5540,   1843,   5797}, 0, {  2522,   2012}, {0xa6, 0xac, 0x1d, 0xff}}},\n    {{{  5612,   1843,   5870}, 0, {  2012,   2012}, {0x24, 0xcd, 0x6d, 0xff}}},\n    {{{  5902,   1946,   6159}, 0, {     0,    988}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  5830,   1843,   6087}, 0, {   478,   2012}, {0xa7, 0xac, 0x1d, 0xff}}},\n    {{{  5902,   1843,   6159}, 0, {     0,   2012}, {0x24, 0xcd, 0x6d, 0xff}}},\n    {{{  5830,   1946,   6087}, 0, {   478,    988}, {0x93, 0xcd, 0xdc, 0xff}}},\n    {{{  5612,   2048,   5725}, 0, {  2522,      0}, {0x1d, 0x54, 0xa7, 0xff}}},\n    {{{  5612,   1946,   5725}, 0, {  2522,    988}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  5974,   2048,   6087}, 0, {     0,      0}, {0x6d, 0x33, 0x24, 0xff}}},\n};\n\n// 0x0700C398 - 0x0700C488\nstatic const Vtx hmc_seg7_vertex_0700C398[] = {\n    {{{  6554,   1946,   5363}, 0, {     0,    992}, {0x1e, 0xac, 0xa7, 0xff}}},\n    {{{  6626,   1946,   5435}, 0, {  -540,    992}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  6626,   1843,   5435}, 0, {  -540,   2012}, {0x59, 0xac, 0xe2, 0xff}}},\n    {{{  5902,   1946,   6015}, 0, {   478,    988}, {0x1d, 0xac, 0xa7, 0xff}}},\n    {{{  5974,   1843,   6087}, 0, {     0,   2012}, {0x59, 0xac, 0xe3, 0xff}}},\n    {{{  5902,   1843,   6015}, 0, {   478,   2012}, {0xdc, 0xcd, 0x93, 0xff}}},\n    {{{  5612,   1946,   5725}, 0, {  2522,    988}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  5685,   1843,   5797}, 0, {  2012,   2012}, {0x59, 0xac, 0xe2, 0xff}}},\n    {{{  5612,   1843,   5725}, 0, {  2522,   2012}, {0xdc, 0xcd, 0x93, 0xff}}},\n    {{{  5685,   1946,   5797}, 0, {  2012,    988}, {0x6d, 0xcd, 0x24, 0xff}}},\n    {{{  6264,   1946,   5073}, 0, {  2012,    992}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{  6336,   1946,   5146}, 0, {  1500,    992}, {0x6d, 0xcd, 0x24, 0xff}}},\n    {{{  6336,   1843,   5146}, 0, {  1500,   2012}, {0x5a, 0xac, 0xe3, 0xff}}},\n    {{{  6264,   1843,   5073}, 0, {  2012,   2012}, {0xdb, 0xcc, 0x93, 0xff}}},\n    {{{  6554,   1843,   5363}, 0, {     0,   2012}, {0xdc, 0xcd, 0x92, 0xff}}},\n};\n\n// 0x0700C488 - 0x0700C588\nstatic const Vtx hmc_seg7_vertex_0700C488[] = {\n    {{{  6554,   2048,   5508}, 0, {  -542,      0}, {0xe3, 0x54, 0x59, 0xff}}},\n    {{{  6192,   1946,   5146}, 0, {  2012,    992}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  6554,   1946,   5508}, 0, {  -542,    992}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  6264,   2048,   5073}, 0, {  2012,      0}, {0x1d, 0x54, 0xa7, 0xff}}},\n    {{{  6626,   2048,   5435}, 0, {  -540,      0}, {0x6e, 0x33, 0x24, 0xff}}},\n    {{{  6626,   1946,   5435}, 0, {  -540,    992}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  6264,   1946,   5073}, 0, {  2012,    992}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{  6481,   1843,   5435}, 0, {     0,   2012}, {0xa7, 0xac, 0x1d, 0xff}}},\n    {{{  6554,   1843,   5508}, 0, {  -542,   2012}, {0x25, 0xcd, 0x6d, 0xff}}},\n    {{{  6481,   1946,   5435}, 0, {     0,    992}, {0x93, 0xcd, 0xdb, 0xff}}},\n    {{{  6264,   1946,   5218}, 0, {  1500,    992}, {0xe3, 0xac, 0x59, 0xff}}},\n    {{{  6192,   1843,   5146}, 0, {  2012,   2012}, {0xa7, 0xac, 0x1e, 0xff}}},\n    {{{  6264,   1843,   5218}, 0, {  1500,   2012}, {0x24, 0xcd, 0x6d, 0xff}}},\n    {{{  6554,   1843,   5508}, 0, {     0,   2012}, {0x25, 0xcd, 0x6d, 0xff}}},\n    {{{  6626,   2048,   5435}, 0, {   480,      0}, {0x6e, 0x33, 0x24, 0xff}}},\n    {{{  6554,   2048,   5508}, 0, {     0,      0}, {0xe3, 0x54, 0x59, 0xff}}},\n};\n\n// 0x0700C588 - 0x0700C668\nstatic const Vtx hmc_seg7_vertex_0700C588[] = {\n    {{{  6554,   2048,   5508}, 0, {  -542,      0}, {0xe3, 0x54, 0x59, 0xff}}},\n    {{{  6192,   2048,   5146}, 0, {  2012,      0}, {0x92, 0x33, 0xdc, 0xff}}},\n    {{{  6192,   1946,   5146}, 0, {  2012,    992}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  6264,   1843,   5218}, 0, {     0,   2012}, {0x24, 0xcd, 0x6d, 0xff}}},\n    {{{  6336,   1946,   5146}, 0, {   478,    992}, {0x6d, 0xcd, 0x24, 0xff}}},\n    {{{  6264,   1946,   5218}, 0, {     0,    992}, {0xe3, 0xac, 0x59, 0xff}}},\n    {{{  6336,   1843,   5146}, 0, {   478,   2012}, {0x5a, 0xac, 0xe3, 0xff}}},\n    {{{  6481,   1946,   5435}, 0, {     0,    992}, {0x93, 0xcd, 0xdb, 0xff}}},\n    {{{  6554,   1946,   5363}, 0, {   478,    992}, {0x1e, 0xac, 0xa7, 0xff}}},\n    {{{  6554,   1843,   5363}, 0, {   480,   2012}, {0xdc, 0xcd, 0x92, 0xff}}},\n    {{{  6481,   1843,   5435}, 0, {     0,   2012}, {0xa7, 0xac, 0x1d, 0xff}}},\n    {{{  6554,   1843,   5508}, 0, {     0,   2012}, {0x25, 0xcd, 0x6d, 0xff}}},\n    {{{  6626,   1843,   5435}, 0, {   480,   2012}, {0x59, 0xac, 0xe2, 0xff}}},\n    {{{  6626,   2048,   5435}, 0, {   480,      0}, {0x6e, 0x33, 0x24, 0xff}}},\n};\n\n// 0x0700C668 - 0x0700C758\nstatic const Vtx hmc_seg7_vertex_0700C668[] = {\n    {{{  3482,   2048,   6349}, 0, {  8144,      0}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{  3482,   1946,   6349}, 0, {  8144,    992}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{  1434,   1946,   6349}, 0, { -2074,    988}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{  6192,   2048,   5146}, 0, {     0,      0}, {0x92, 0x33, 0xdc, 0xff}}},\n    {{{  6264,   1843,   5073}, 0, {   478,   2012}, {0xdb, 0xcc, 0x93, 0xff}}},\n    {{{  6192,   1843,   5146}, 0, {     0,   2012}, {0xa7, 0xac, 0x1e, 0xff}}},\n    {{{  6264,   2048,   5073}, 0, {   478,      0}, {0x1d, 0x54, 0xa7, 0xff}}},\n    {{{  1434,   2048,   6758}, 0, { -2074,      0}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  1434,   1946,   6758}, 0, { -2074,    988}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{  1638,   1946,   6758}, 0, { -1052,    988}, {0xd6, 0xac, 0x54, 0xff}}},\n    {{{  1638,   2048,   6758}, 0, { -1052,      0}, {0xac, 0x54, 0x2a, 0xff}}},\n    {{{  1434,   2048,   6349}, 0, { -1052,      0}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{  1434,   1946,   6349}, 0, { -1052,    992}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{  1434,   1946,   6758}, 0, {   990,    988}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{  1434,   2048,   6758}, 0, {   990,      0}, {0xd6, 0x54, 0x54, 0xff}}},\n};\n\n// 0x0700C758 - 0x0700C848\nstatic const Vtx hmc_seg7_vertex_0700C758[] = {\n    {{{  3072,   2048,   6758}, 0, {   990,      0}, {0xac, 0x54, 0x2a, 0xff}}},\n    {{{  3072,   1946,   6963}, 0, {  2012,    988}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{  3072,   2048,   6963}, 0, {  2012,      0}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{  3482,   2048,   6349}, 0, {  8144,      0}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{  1434,   1946,   6349}, 0, { -2074,    988}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{  1434,   2048,   6349}, 0, { -2074,      0}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{  3482,   2048,   6963}, 0, {  2012,      0}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{  3482,   1946,   6349}, 0, { -1052,    992}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{  3482,   2048,   6349}, 0, { -1052,      0}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{  3482,   1946,   6963}, 0, {  2012,    988}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{  3072,   2048,   6963}, 0, {  6100,      0}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{  3072,   1946,   6963}, 0, {  6100,    992}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{  3482,   1946,   6963}, 0, {  8144,    992}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{  3482,   2048,   6963}, 0, {  8144,      0}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{  3072,   1946,   6758}, 0, {   990,    988}, {0xd6, 0xac, 0x54, 0xff}}},\n};\n\n// 0x0700C848 - 0x0700C948\nstatic const Vtx hmc_seg7_vertex_0700C848[] = {\n    {{{  1638,   2048,   6758}, 0, {   990,      0}, {0xac, 0x54, 0x2a, 0xff}}},\n    {{{  1638,   1946,   6758}, 0, {   990,    988}, {0xd6, 0xac, 0x54, 0xff}}},\n    {{{  1638,   1946,   6963}, 0, {  2012,    988}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{  2048,   2048,   6758}, 0, {   990,      0}, {0x33, 0x33, 0x67, 0xff}}},\n    {{{  3072,   1946,   6758}, 0, {  6100,    992}, {0xd6, 0xac, 0x54, 0xff}}},\n    {{{  3072,   2048,   6758}, 0, {  6100,      0}, {0xac, 0x54, 0x2a, 0xff}}},\n    {{{  2048,   1946,   6758}, 0, {   990,    988}, {0x67, 0xcd, 0x33, 0xff}}},\n    {{{  2048,   2048,   6963}, 0, {  2012,      0}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{  2048,   1946,   6963}, 0, {  2012,    988}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{  1638,   2048,   6963}, 0, { -1052,      0}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{  2048,   1946,   6963}, 0, {   990,    988}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{  2048,   2048,   6963}, 0, {   990,      0}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{  1638,   1946,   6963}, 0, { -1052,    988}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{  6554,      0,   7680}, 0, {  3582,   1840}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{  6554,   1014,   7680}, 0, {  3582,    156}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6554,   1014,   6656}, 0, {  1774,    156}, {0x8f, 0x00, 0xc8, 0xff}}},\n};\n\n// 0x0700C948 - 0x0700CA38\nstatic const Vtx hmc_seg7_vertex_0700C948[] = {\n    {{{  1638,   2048,   6758}, 0, {   990,      0}, {0xac, 0x54, 0x2a, 0xff}}},\n    {{{  1638,   1946,   6963}, 0, {  2012,    988}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{  1638,   2048,   6963}, 0, {  2012,      0}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{   410,   2048,   4096}, 0, { -2584,      0}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{   922,   1946,   4096}, 0, {     0,    992}, {0x33, 0xcd, 0x67, 0xff}}},\n    {{{   922,   2048,   4096}, 0, {     0,      0}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{   410,   1946,   4096}, 0, { -2584,    992}, {0x00, 0x88, 0x28, 0xff}}},\n    {{{  6554,      0,   6656}, 0, {  1774,   1840}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  7578,   1014,   6656}, 0, {     0,    156}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  7578,      0,   6656}, 0, {     0,   1840}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{  6554,   1014,   6656}, 0, {  1774,    156}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{  6554,      0,   7680}, 0, {  3582,   1840}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{  7578,      0,   3584}, 0, {  3582,   1840}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{  6554,   1014,   3584}, 0, {  1774,    156}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  6554,      0,   3584}, 0, {  1774,   1840}, {0xd9, 0x77, 0x13, 0xff}}},\n};\n\n// 0x0700CA38 - 0x0700CB18\nstatic const Vtx hmc_seg7_vertex_0700CA38[] = {\n    {{{  6554,      0,   3584}, 0, {  1774,   1840}, {0xd9, 0x77, 0x13, 0xff}}},\n    {{{  6554,   1014,   2560}, 0, {     0,    156}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6554,      0,   2560}, 0, {     0,   1840}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  6554,   1014,   3584}, 0, {  1774,    156}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  7578,      0,   3584}, 0, {  3582,   1840}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{  7578,   1014,   3584}, 0, {  3582,    156}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   410,      0,   6656}, 0, {  1026,   1840}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   410,   1014,   6656}, 0, {  1026,    156}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1434,   1014,   6656}, 0, {  -778,    156}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  1434,      0,   6656}, 0, {  -778,   1840}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  1434,      0,   6656}, 0, {   970,   2012}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  1434,   1014,   6656}, 0, {   970,    172}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  1434,   1014,   7680}, 0, { -1072,    172}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1434,      0,   7680}, 0, { -1072,   2012}, {0x38, 0x00, 0x8f, 0xff}}},\n};\n\n// 0x0700CB18 - 0x0700CC08\nstatic const Vtx hmc_seg7_vertex_0700CB18[] = {\n    {{{  5018,      0,   4915}, 0, {  2796,   2012}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  4506,   1024,   4915}, 0, {  1900,     64}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  4506,      0,   4915}, 0, {  1900,   2012}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{   410,      0,   4096}, 0, {   480,   1840}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  1434,   1014,   4096}, 0, { -1326,    156}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  1434,      0,   4096}, 0, { -1326,   1840}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{   410,   1014,   4096}, 0, {   480,    156}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1434,   1014,   4608}, 0, { -2228,    156}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1434,      0,   4608}, 0, { -2228,   1840}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   410,   1014,   4608}, 0, {  -422,    156}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   922,      0,   4608}, 0, { -1326,   1840}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   922,   1014,   4608}, 0, { -1326,    156}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   410,      0,   4608}, 0, {  -422,   1840}, {0x00, 0x7b, 0x1e, 0xff}}},\n    {{{  4506,   1024,   4403}, 0, {   990,     64}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{  4506,      0,   4403}, 0, {   990,   2012}, {0xc8, 0x00, 0x8f, 0xff}}},\n};\n\n// 0x0700CC08 - 0x0700CC78\nstatic const Vtx hmc_seg7_vertex_0700CC08[] = {\n    {{{  5018,      0,   4403}, 0, {  1886,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5018,   1024,   4915}, 0, {  2796,     64}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{  5018,      0,   4915}, 0, {  2796,   2012}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  4506,   1024,   4915}, 0, {  1900,     64}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  4506,      0,   4403}, 0, {   990,   2012}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  4506,   1024,   4403}, 0, {   990,     64}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{  5018,   1024,   4403}, 0, {  1886,     64}, {0x2a, 0x54, 0xac, 0xff}}},\n};\n\n// 0x0700CC78 - 0x0700CD78\nstatic const Vtx hmc_seg7_vertex_0700CC78[] = {\n    {{{  4150,   1126,   1434}, 0, {   648,   -100}, {0xa6, 0xa9, 0xee, 0xff}}},\n    {{{  4150,      0,   2048}, 0, {  1468,   1042}, {0xb4, 0x63, 0x10, 0xff}}},\n    {{{  4150,    922,   2048}, 0, {  1468,     22}, {0xa6, 0xa8, 0xf7, 0xff}}},\n    {{{  6244,    717,   1434}, 0, {  1332,     36}, {0xa6, 0xa9, 0x13, 0xff}}},\n    {{{  6244,      0,   2048}, 0, {   512,    936}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6244,    922,   2048}, 0, {   512,    -86}, {0x96, 0xbc, 0x0b, 0xff}}},\n    {{{  6244,      0,   2458}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6244,    922,   2458}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6244,   -204,   1434}, 0, {  1332,   1056}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5579,      0,   2458}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5579,    922,   2048}, 0, {   512,    -86}, {0x5a, 0xa8, 0x0e, 0xff}}},\n    {{{  5579,    922,   2458}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5579,      0,   2048}, 0, {   512,    936}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5579,   -204,   1434}, 0, {  1332,   1056}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5579,    717,   1434}, 0, {  1332,     36}, {0x5a, 0xa8, 0x09, 0xff}}},\n    {{{  4150,      0,   2458}, 0, {  2012,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700CD78 - 0x0700CE78\nstatic const Vtx hmc_seg7_vertex_0700CD78[] = {\n    {{{  4150,   1126,   1434}, 0, {   648,   -100}, {0xa6, 0xa9, 0xee, 0xff}}},\n    {{{  4150,    205,   1434}, 0, {   648,    922}, {0xa6, 0x58, 0x09, 0xff}}},\n    {{{  4150,      0,   2048}, 0, {  1468,   1042}, {0xb4, 0x63, 0x10, 0xff}}},\n    {{{  4150,    922,   2048}, 0, {  1468,     22}, {0xa6, 0xa8, 0xf7, 0xff}}},\n    {{{  4150,      0,   2458}, 0, {  2012,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4150,    922,   2458}, 0, {  2012,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3484,      0,   2458}, 0, {   196,    918}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3484,    922,   2048}, 0, {   648,     30}, {0x66, 0xb7, 0xf0, 0xff}}},\n    {{{  3484,    922,   2458}, 0, {   196,    -12}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3484,      0,   2048}, 0, {   648,    960}, {0x5a, 0x58, 0x0e, 0xff}}},\n    {{{  3484,    205,   1434}, 0, {  1332,    836}, {0x5a, 0x57, 0x13, 0xff}}},\n    {{{  3484,   1126,   1434}, 0, {  1332,    -94}, {0x5a, 0xa8, 0xf7, 0xff}}},\n    {{{  6244,    717,    922}, 0, {  2012,      0}, {0xc3, 0xc3, 0x5c, 0xff}}},\n    {{{  6244,   -204,   1434}, 0, {  1332,   1056}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6244,    717,   1434}, 0, {  1332,     36}, {0xa6, 0xa9, 0x13, 0xff}}},\n    {{{  6244,   -204,    922}, 0, {  2012,    990}, {0xcd, 0x33, 0x67, 0xff}}},\n};\n\n// 0x0700CE78 - 0x0700CF38\nstatic const Vtx hmc_seg7_vertex_0700CE78[] = {\n    {{{  5579,    717,   1434}, 0, {  1332,     36}, {0x5a, 0xa8, 0x09, 0xff}}},\n    {{{  5579,   -204,    922}, 0, {  2012,    990}, {0x49, 0x49, 0x49, 0xff}}},\n    {{{  5579,    717,    922}, 0, {  2012,      0}, {0x33, 0xcd, 0x67, 0xff}}},\n    {{{  5579,   -204,   1434}, 0, {  1332,   1056}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4150,   1126,    922}, 0, {     0,      0}, {0xc3, 0xc3, 0x5c, 0xff}}},\n    {{{  4150,    205,   1434}, 0, {   648,    922}, {0xa6, 0x58, 0x09, 0xff}}},\n    {{{  4150,   1126,   1434}, 0, {   648,   -100}, {0xa6, 0xa9, 0xee, 0xff}}},\n    {{{  4150,    205,    922}, 0, {     0,    990}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{  3484,   1126,   1434}, 0, {  1332,    -94}, {0x5a, 0xa8, 0xf7, 0xff}}},\n    {{{  3484,    205,   1434}, 0, {  1332,    836}, {0x5a, 0x57, 0x13, 0xff}}},\n    {{{  3484,    205,    922}, 0, {  1900,    886}, {0x49, 0x49, 0x49, 0xff}}},\n    {{{  3484,   1126,    922}, 0, {  1900,    -42}, {0x33, 0xcd, 0x67, 0xff}}},\n};\n\n// 0x0700CF38 - 0x0700CF78\nstatic const Vtx hmc_seg7_vertex_0700CF38[] = {\n    {{{   410,   2048,   4403}, 0, {     0,      0}, {0xa3, 0x43, 0xcc, 0xff}}},\n    {{{   410,   1946,   5837}, 0, {     0,      0}, {0xa3, 0xbd, 0x34, 0xff}}},\n    {{{   410,   2048,   5837}, 0, {     0,      0}, {0x0c, 0x63, 0x4d, 0xff}}},\n    {{{   410,   1946,   4403}, 0, {     0,      0}, {0x0c, 0x9d, 0xb3, 0xff}}},\n};\n\n// 0x0700CF78 - 0x0700D1C8\nstatic const Gfx hmc_seg7_dl_0700CF78[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09006800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&hmc_seg7_lights_07009460.l, 1),\n    gsSPLight(&hmc_seg7_lights_07009460.a, 2),\n    gsSPVertex(hmc_seg7_vertex_070094A8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 4,  7,  8, 0x0,  4,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07009588, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07009678, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07009768, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11,  2,  1, 0x0),\n    gsSP2Triangles(11, 12,  2, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07009868, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07009948, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10,  6,  9, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(12, 10, 11, 0x0, 13, 12, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07009A38, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 5,  8,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0,  8, 13, 14, 0x0),\n    gsSP1Triangle( 8, 14,  7, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07009B28, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700D1C8 - 0x0700D3D8\nstatic const Gfx hmc_seg7_dl_0700D1C8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09009800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_07009C08, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  7, 10, 11, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07009D08, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(10, 12, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07009DE8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07009ED8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  6, 11,  7, 0x0),\n    gsSP2Triangles( 7, 11, 12, 0x0,  7, 12,  9, 0x0),\n    gsSP2Triangles(10,  9, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP2Triangles(13, 12, 11, 0x0, 13, 11,  6, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07009FC8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 4,  8,  5, 0x0,  5,  9, 10, 0x0),\n    gsSP2Triangles( 5, 10, 11, 0x0,  5, 11,  6, 0x0),\n    gsSP2Triangles(12, 13, 10, 0x0, 14, 12, 10, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700A0B8, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  1,  7, 0x0,  6,  7,  8, 0x0),\n    gsSP1Triangle( 0,  7,  1, 0x0),\n    gsSPLight(&hmc_seg7_lights_07009478.l, 1),\n    gsSPLight(&hmc_seg7_lights_07009478.a, 2),\n    gsSPVertex(hmc_seg7_vertex_0700A148, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 3,  5,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700D3D8 - 0x0700D8D8\nstatic const Gfx hmc_seg7_dl_0700D3D8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&hmc_seg7_lights_07009490.l, 1),\n    gsSPLight(&hmc_seg7_lights_07009490.a, 2),\n    gsSPVertex(hmc_seg7_vertex_0700A1B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700A2A8, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP1Triangle( 0, 10,  1, 0x0),\n    gsSPLight(&hmc_seg7_lights_07009460.l, 1),\n    gsSPLight(&hmc_seg7_lights_07009460.a, 2),\n    gsSPVertex(hmc_seg7_vertex_0700A358, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  7, 0x0,  3,  5,  7, 0x0),\n    gsSP2Triangles( 8,  3,  6, 0x0,  8,  4,  3, 0x0),\n    gsSP2Triangles( 9,  4,  8, 0x0,  9,  5,  4, 0x0),\n    gsSP2Triangles(10,  5,  9, 0x0, 10,  7,  5, 0x0),\n    gsSP2Triangles( 6,  7, 10, 0x0,  9,  6, 10, 0x0),\n    gsSP2Triangles( 9,  8,  6, 0x0,  0, 11, 12, 0x0),\n    gsSP2Triangles( 0, 12, 13, 0x0, 14,  0,  2, 0x0),\n    gsSP1Triangle( 0, 13,  1, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700A448, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 3,  9, 10, 0x0,  3, 10,  4, 0x0),\n    gsSP2Triangles( 0,  2, 11, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 15, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700A548, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  1,  5, 0x0,  4,  6,  1, 0x0),\n    gsSP2Triangles( 1,  7,  2, 0x0,  1,  6,  8, 0x0),\n    gsSP2Triangles( 1,  8,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(10, 12, 11, 0x0, 10, 13, 12, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700A628, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 8, 11,  9, 0x0, 12,  5,  0, 0x0),\n    gsSP2Triangles(12, 13,  5, 0x0,  6, 14,  7, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700A718, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  0,  7,  1, 0x0),\n    gsSP2Triangles( 8,  6,  3, 0x0,  8,  9,  6, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP2Triangles( 8, 14, 15, 0x0,  8, 15,  9, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700A818, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  0,  5, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 4,  6,  0, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles( 1, 12, 14, 0x0,  1,  3, 12, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  3, 15, 12, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700A918, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  6,  5, 0x0),\n    gsSP2Triangles( 8,  2,  9, 0x0, 10,  8,  9, 0x0),\n    gsSP2Triangles( 8,  0,  2, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700A9F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700AAE8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  9,  6,  5, 0x0),\n    gsSP2Triangles( 9, 10,  6, 0x0,  8,  7, 11, 0x0),\n    gsSP2Triangles( 8, 11, 12, 0x0, 12, 10,  9, 0x0),\n    gsSP2Triangles(12, 11, 10, 0x0,  2, 13,  4, 0x0),\n    gsSP2Triangles( 0, 14,  1, 0x0,  2,  1, 13, 0x0),\n    gsSP2Triangles( 4, 13, 15, 0x0,  4, 15,  3, 0x0),\n    gsSP2Triangles( 3, 14,  0, 0x0,  3, 15, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700ABE8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 3,  8,  4, 0x0,  2,  1,  9, 0x0),\n    gsSP2Triangles( 2,  9, 10, 0x0, 10,  8,  3, 0x0),\n    gsSP2Triangles(10,  9,  8, 0x0, 11,  7, 12, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0,  5,  7, 11, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700ACC8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  5,  7, 0x0,  9, 10,  1, 0x0),\n    gsSP2Triangles( 9,  1,  0, 0x0, 11, 10,  9, 0x0),\n    gsSP2Triangles(11, 12, 10, 0x0,  0,  2, 13, 0x0),\n    gsSP2Triangles(13, 12, 11, 0x0, 13,  2, 12, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700ADA8, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700D8D8 - 0x0700D9A8\nstatic const Gfx hmc_seg7_dl_0700D8D8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_0700ADD8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  8,  2,  6, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 11, 12, 0x0),\n    gsSP2Triangles( 2, 10,  9, 0x0,  2,  1, 10, 0x0),\n    gsSP2Triangles( 8,  0,  2, 0x0, 13, 14, 15, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700AED8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  7,  1,  0, 0x0),\n    gsSP1Triangle( 7,  6,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700D9A8 - 0x0700DD30\nstatic const Gfx hmc_seg7_dl_0700D9A8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_0700AF58, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 3,  1,  0, 0x0,  5,  6,  2, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  9,  8, 10, 0x0),\n    gsSP2Triangles( 7,  9, 11, 0x0, 12, 13, 10, 0x0),\n    gsSP2Triangles(11,  6,  5, 0x0, 11,  5, 14, 0x0),\n    gsSP2Triangles(15, 13, 12, 0x0, 15, 12,  3, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700B058, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  4,  8,  0, 0x0),\n    gsSP2Triangles( 0,  9,  1, 0x0,  0, 10,  9, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 14, 12, 0x0),\n    gsSP1Triangle(15, 13, 12, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700B158, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700B248, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0, 11, 12,  7, 0x0),\n    gsSP2Triangles(11,  7, 10, 0x0,  0, 13,  1, 0x0),\n    gsSP1Triangle( 0, 14, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700B338, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  5,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700B438, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700B528, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  5,  4, 0x0),\n    gsSP2Triangles( 7,  4,  8, 0x0,  9,  7,  8, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0,  1, 11, 12, 0x0),\n    gsSP2Triangles( 1, 12,  2, 0x0,  0,  2, 13, 0x0),\n    gsSP2Triangles(14,  0, 13, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700B628, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12,  6,  8, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700B728, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  8,  6, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 12, 10, 0x0),\n    gsSP1Triangle(12, 13, 10, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700B808, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 3,  4,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 8,  4,  6, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 15, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700B908, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700BA08, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700DD30 - 0x0700DED8\nstatic const Gfx hmc_seg7_dl_0700DD30[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_0700BA38, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700BB38, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 11, 10,  5, 0x0),\n    gsSP1Triangle(11,  5,  4, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700BC28, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  3,  5,  0, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  4,  9, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 13, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700BD18, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  4,  0, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 1,  8,  9, 0x0,  1,  9,  2, 0x0),\n    gsSP2Triangles(10,  1,  0, 0x0, 10, 11,  1, 0x0),\n    gsSP2Triangles(10,  0, 12, 0x0,  0,  4, 12, 0x0),\n    gsSP2Triangles(11, 13,  1, 0x0, 13,  8,  1, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700BDF8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  6,  5, 0x0,  0,  5,  1, 0x0),\n    gsSP1Triangle( 1,  7,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700DED8 - 0x0700DF10\nstatic const Gfx hmc_seg7_dl_0700DED8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, hmc_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_0700BE78, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700DF10 - 0x0700DF48\nstatic const Gfx hmc_seg7_dl_0700DF10[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, hmc_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_0700BEB8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700DF48 - 0x0700E330\nstatic const Gfx hmc_seg7_dl_0700DF48[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_0700BEF8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700BFE8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700C0E8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700C1D8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700C2B8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11,  1, 12, 0x0),\n    gsSP1Triangle(11, 13,  1, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700C398, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700C488, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  2,  7,  8, 0x0),\n    gsSP2Triangles( 2,  9,  7, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(10,  1, 11, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700C588, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700C668, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700C758, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700C848, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  6,  3, 0x0),\n    gsSP2Triangles( 7,  8,  6, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700C948, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 10,  7, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700CA38, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  3, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(10, 12, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700CB18, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  5,  4,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0,  2, 13, 14, 0x0),\n    gsSP1Triangle( 2,  1, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700CC08, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  0, 0x0),\n    gsSP1Triangle( 0,  6,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700E330 - 0x0700E428\nstatic const Gfx hmc_seg7_dl_0700E330[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_0700CC78, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  4,  6, 0x0),\n    gsSP2Triangles( 3,  8,  4, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 10, 12, 13, 0x0),\n    gsSP2Triangles(10, 13, 14, 0x0,  2,  1, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700CD78, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  7, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700CE78, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700E428 - 0x0700E448\nstatic const Gfx hmc_seg7_dl_0700E428[] = {\n    gsSPVertex(hmc_seg7_vertex_0700CF38, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700E448 - 0x0700E5B0\nconst Gfx hmc_seg7_dl_0700E448[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_0700CF78),\n    gsSPDisplayList(hmc_seg7_dl_0700D1C8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_0700D3D8),\n    gsSPDisplayList(hmc_seg7_dl_0700D8D8),\n    gsSPDisplayList(hmc_seg7_dl_0700D9A8),\n    gsSPDisplayList(hmc_seg7_dl_0700DD30),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_0700DED8),\n    gsSPDisplayList(hmc_seg7_dl_0700DF10),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_0700DF48),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_0700E330),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_PASS2),\n    gsSPDisplayList(hmc_seg7_dl_0700E428),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/6/model.inc.c",
    "content": "// 0x0700E5B0 - 0x0700E6B0\nstatic const Vtx hmc_seg7_vertex_0700E5B0[] = {\n    {{{  6244,    154,   2560}, 0, {  4056,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5579,    154,   2560}, 0, { -2586,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5579,    256,   2458}, 0, { -2586,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   901,   2048,   3564}, 0, {     0,  10186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   901,   3072,   3564}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   901,   3072,   4076}, 0, {  5078,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   901,   2048,   4076}, 0, {  5078,  10186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   901,   2048,   4076}, 0, {  3034,   6098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   901,   3072,   4076}, 0, {  3034,  -4120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   410,   3072,   4076}, 0, { -1870,  -4120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   410,   2048,   4076}, 0, { -1870,   6098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6244,    922,   2560}, 0, {  4056,   4564}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5579,    922,   2560}, 0, { -2584,   4564}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2578,   1434,   1346}, 0, {  5590,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2899,   1434,   1506}, 0, {  2012,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3128,   1434,   1048}, 0, {  2012,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700E6B0 - 0x0700E7A0\nstatic const Vtx hmc_seg7_vertex_0700E6B0[] = {\n    {{{  6244,    154,   2560}, 0, {  4056,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5579,    256,   2458}, 0, { -2586,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6244,    256,   2458}, 0, {  4056,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5579,    922,   2458}, 0, { -2584,   4564}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6244,    922,   2458}, 0, {  4056,   4564}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3586,   1434,   1277}, 0, { -3096,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3631,   1434,   1872}, 0, { -6162,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4089,   1434,    956}, 0, { -6162,  -6164}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3357,   1434,   1735}, 0, { -3096,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2578,   1434,   1346}, 0, {  5590,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3128,   1434,   1048}, 0, {  2012,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3036,   1434,    430}, 0, {  5588,  -6164}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3128,   1536,   1048}, 0, { -2074,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3128,   1434,   1048}, 0, { -2074,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2899,   1434,   1506}, 0, {  3034,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700E7A0 - 0x0700E880\nstatic const Vtx hmc_seg7_vertex_0700E7A0[] = {\n    {{{ -3631,   1536,   1872}, 0, { -6162,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3357,   1536,   1735}, 0, { -3096,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3586,   1536,   1277}, 0, { -3096,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4089,   1536,    956}, 0, { -6162,  -6164}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3036,   1536,    430}, 0, {  5588,  -6164}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3128,   1536,   1048}, 0, {  2012,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2578,   1536,   1346}, 0, {  5590,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2899,   1536,   1506}, 0, {  2012,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2765,   1126,   4403}, 0, {     0,   7120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2406,   1331,   4147}, 0, {  2522,   3544}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2048,   1126,   4403}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3128,   1536,   1048}, 0, { -2074,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2899,   1434,   1506}, 0, {  3034,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2899,   1536,   1506}, 0, {  3034,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700E880 - 0x0700E980\nstatic const Vtx hmc_seg7_vertex_0700E880[] = {\n    {{{ -3586,   1536,   1277}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3128,   1434,   1048}, 0, {  5078,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3128,   1536,   1048}, 0, {  5078,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3586,   1434,   1277}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3357,   1536,   1735}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3357,   1434,   1735}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3586,   1434,   1277}, 0, {  5078,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3586,   1536,   1277}, 0, {  5078,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2048,   1126,   4403}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2406,   1331,   4147}, 0, {  2522,   3544}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2048,   1126,   3891}, 0, {  5078,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2048,      0,   3891}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2048,   1126,   3891}, 0, {     0, -10252}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2765,   1126,   3891}, 0, {  7122, -10252}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2765,   1126,   3891}, 0, {  5078,   7120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2765,   1126,   4403}, 0, {     0,   7120}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700E980 - 0x0700EA50\nstatic const Vtx hmc_seg7_vertex_0700E980[] = {\n    {{{  2765,      0,   4403}, 0, {  7122,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2765,   1126,   4403}, 0, {  7122, -10252}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2048,   1126,   4403}, 0, {     0, -10252}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2048,      0,   4403}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2048,   1126,   3891}, 0, {  5078, -10252}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2048,      0,   3891}, 0, {  5078,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2765,      0,   3891}, 0, {  5078,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2765,   1126,   4403}, 0, {     0, -10252}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2765,      0,   4403}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2048,      0,   3891}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2765,   1126,   3891}, 0, {  7122, -10252}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2765,      0,   3891}, 0, {  7122,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2765,   1126,   3891}, 0, {  5078, -10252}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700EA50 - 0x0700EB40\nstatic const Vtx hmc_seg7_vertex_0700EA50[] = {\n    {{{  6543,    819,   6646}, 0, {  3034,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6543,   1024,   6646}, 0, {  3034,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  7588,   1024,   6646}, 0, { -7388,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6543,    819,   3594}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6543,   1024,   2550}, 0, { 10392,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6543,    819,   2550}, 0, { 10392,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6543,   1024,   3594}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  7588,    819,   3594}, 0, { -7388,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6543,   1024,   3594}, 0, {  3034,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6543,    819,   3594}, 0, {  3034,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  7588,   1024,   3594}, 0, { -7388,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6543,    819,   7690}, 0, { 10392,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6543,   1024,   6646}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6543,    819,   6646}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6543,   1024,   7690}, 0, { 10392,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700EB40 - 0x0700EC30\nstatic const Vtx hmc_seg7_vertex_0700EB40[] = {\n    {{{   410,    819,   4086}, 0, { 10290,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   410,   1024,   4086}, 0, { 10290,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1444,   1024,   4086}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6543,    819,   6646}, 0, {  3034,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  7588,   1024,   6646}, 0, { -7388,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  7588,    819,   6646}, 0, { -7388,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1444,    819,   6646}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1444,   1024,   7680}, 0, { -9330,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1444,    819,   7680}, 0, { -9330,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1444,   1024,   6646}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   399,    819,   6646}, 0, { -7388,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1444,   1024,   6646}, 0, {  3034,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1444,    819,   6646}, 0, {  3034,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   399,   1024,   6646}, 0, { -7388,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1444,    819,   4086}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700EC30 - 0x0700ECB0\nstatic const Vtx hmc_seg7_vertex_0700EC30[] = {\n    {{{  1444,    819,   4086}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1444,   1024,   4618}, 0, { -4220,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1444,    819,   4618}, 0, { -4220,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1444,   1024,   4086}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   922,   1024,   4618}, 0, {  5078,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   410,    819,   4618}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   922,    819,   4618}, 0, {  5078,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   410,   1024,   4618}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700ECB0 - 0x0700EE38\nstatic const Gfx hmc_seg7_dl_0700ECB0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_0700E5B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11,  1,  0, 0x0),\n    gsSP2Triangles(11, 12,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700E6B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 10,  5,  7, 0x0),\n    gsSP1Triangle(10,  7, 11, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700E7A0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  3,  2, 0x0,  4,  2,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700E880, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles( 9, 14, 10, 0x0, 14,  9, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700E980, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle( 6, 12,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700EE38 - 0x0700EF00\nstatic const Gfx hmc_seg7_dl_0700EE38[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_0700EA50, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700EB40, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700EC30, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700EF00 - 0x0700EFD8\nconst Gfx hmc_seg7_dl_0700EF00[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_0700ECB0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_0700EE38),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/7/model.inc.c",
    "content": "// 0x0700EFD8 - 0x0700F0C8\nstatic const Vtx hmc_seg7_vertex_0700EFD8[] = {\n    {{{  7168,    205,   6646}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  6656,    205,   6646}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  6656,    717,   6646}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  4073,    973,    932}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  3561,    973,    932}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  3561,    461,    932}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  4073,    461,    932}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  7168,    717,   3594}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  6656,    205,   3594}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  7168,    205,   3594}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  6656,    717,   3594}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  6543,    717,   2970}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  6543,    205,   3482}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  6543,    717,   3482}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  6543,    205,   2970}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n};\n\n// 0x0700F0C8 - 0x0700F1A8\nstatic const Vtx hmc_seg7_vertex_0700F0C8[] = {\n    {{{   819,    717,   6646}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  1331,    717,   6646}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  1331,    205,   6646}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  7168,    205,   6646}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  6656,    717,   6646}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  7168,    717,   6646}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  6543,    717,   6758}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  6543,    205,   7270}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  6543,    717,   7270}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{  6543,    205,   6758}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{   819,    205,   6646}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0xb4}}},\n    {{{ -1617,    717,   1274}, 0, {   990,      0}, {0xff, 0xff, 0x00, 0xb4}}},\n    {{{ -1132,    205,   1435}, 0, {     0,    990}, {0xff, 0xff, 0x00, 0xb4}}},\n    {{{ -1617,    205,   1274}, 0, {   990,    990}, {0xff, 0xff, 0x00, 0xb4}}},\n};\n\n// 0x0700F1A8 - 0x0700F298\nstatic const Vtx hmc_seg7_vertex_0700F1A8[] = {\n    {{{   453,    205,   3555}, 0, {     0,    990}, {0xff, 0xff, 0x00, 0xb4}}},\n    {{{   815,    717,   3193}, 0, {   990,      0}, {0xff, 0xff, 0x00, 0xb4}}},\n    {{{   453,    717,   3555}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xb4}}},\n    {{{   815,    205,   3193}, 0, {   990,    990}, {0xff, 0xff, 0x00, 0xb4}}},\n    {{{   953,    717,   2421}, 0, {   990,      0}, {0xff, 0xff, 0x00, 0xb4}}},\n    {{{   591,    717,   2059}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xb4}}},\n    {{{   591,    205,   2059}, 0, {     0,    990}, {0xff, 0xff, 0x00, 0xb4}}},\n    {{{   953,    205,   2421}, 0, {   990,    990}, {0xff, 0xff, 0x00, 0xb4}}},\n    {{{   533,    205,   2841}, 0, {   990,    990}, {0xff, 0xff, 0x00, 0xb4}}},\n    {{{   171,    717,   2479}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xb4}}},\n    {{{   533,    717,   2841}, 0, {   990,      0}, {0xff, 0xff, 0x00, 0xb4}}},\n    {{{   171,    205,   2479}, 0, {     0,    990}, {0xff, 0xff, 0x00, 0xb4}}},\n    {{{  -944,    205,    872}, 0, {     0,    990}, {0xff, 0xff, 0x00, 0xb4}}},\n    {{{  -944,    717,    872}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xb4}}},\n    {{{ -1430,    717,    710}, 0, {   990,      0}, {0xff, 0xff, 0x00, 0xb4}}},\n};\n\n// 0x0700F298 - 0x0700F2F8\nstatic const Vtx hmc_seg7_vertex_0700F298[] = {\n    {{{ -1617,    717,   1274}, 0, {   990,      0}, {0xff, 0xff, 0x00, 0xb4}}},\n    {{{ -1132,    717,   1435}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0xb4}}},\n    {{{ -1132,    205,   1435}, 0, {     0,    990}, {0xff, 0xff, 0x00, 0xb4}}},\n    {{{ -1430,    205,    710}, 0, {   990,    990}, {0xff, 0xff, 0x00, 0xb4}}},\n    {{{  -944,    205,    872}, 0, {     0,    990}, {0xff, 0xff, 0x00, 0xb4}}},\n    {{{ -1430,    717,    710}, 0, {   990,      0}, {0xff, 0xff, 0x00, 0xb4}}},\n};\n\n// 0x0700F2F8 - 0x0700F3E8\nstatic const Gfx hmc_seg7_dl_0700F2F8[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, cave_0900C000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_0700EFD8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700F0C8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 0,  2, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700F1A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700F298, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700F3E8 - 0x0700F458\nconst Gfx hmc_seg7_dl_0700F3E8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_0700F2F8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/8/model.inc.c",
    "content": "// 0x0700F458 - 0x0700F548\nstatic const Vtx hmc_seg7_vertex_0700F458[] = {\n    {{{   743,    512,   3410}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   670,    512,   3483}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   670,    410,   3483}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   670,    512,   3338}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   743,    410,   3410}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   670,    410,   3338}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   670,    410,   3483}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   598,    410,   3410}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   598,    410,   3410}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   670,    512,   3483}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   598,    512,   3410}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   670,    410,   3483}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   736,    410,   2203}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   663,    512,   2276}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   736,    512,   2203}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700F548 - 0x0700F628\nstatic const Vtx hmc_seg7_vertex_0700F548[] = {\n    {{{   808,    512,   2276}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   736,    512,   2348}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   736,    410,   2348}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   808,    410,   2276}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   663,    410,   2276}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   736,    410,   2203}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   736,    410,   2203}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   663,    410,   2276}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   663,    512,   2276}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   388,    410,   2696}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   461,    512,   2623}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   388,    512,   2696}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   663,    410,   2276}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   663,    512,   2276}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700F628 - 0x0700F728\nstatic const Vtx hmc_seg7_vertex_0700F628[] = {\n    {{{   316,    512,   2623}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   388,    512,   2551}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   388,    410,   2551}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   316,    410,   2623}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   461,    410,   2623}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   388,    410,   2696}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1423,    410,   1338}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1294,    410,   1274}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1326,    410,   1371}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   388,    410,   2696}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   461,    410,   2623}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   461,    512,   2623}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   461,    512,   2623}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   461,    410,   2623}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1423,    512,   1338}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1391,    410,   1241}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700F728 - 0x0700F808\nstatic const Vtx hmc_seg7_vertex_0700F728[] = {\n    {{{ -1423,    512,   1338}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1391,    512,   1241}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1391,    410,   1241}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1423,    410,   1338}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1294,    410,   1274}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1138,    410,    807}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1268,    410,    872}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1235,    410,    775}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1326,    410,   1371}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1294,    410,   1274}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1294,    512,   1274}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1326,    512,   1371}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1294,    512,   1274}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1294,    410,   1274}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700F808 - 0x0700F8B8\nstatic const Vtx hmc_seg7_vertex_0700F808[] = {\n    {{{ -1170,    512,    904}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1170,    410,    904}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1138,    410,    807}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1138,    512,    807}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1268,    410,    872}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1138,    410,    807}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1235,    410,    775}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1268,    410,    872}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1268,    512,    872}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1235,    512,    775}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1268,    512,    872}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700F8B8 - 0x0700FA40\nstatic const Gfx hmc_seg7_dl_0700F8B8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_0900A000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_0700F458, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  5,  4,  6, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 8, 11,  9, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle( 0,  2,  4, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700F548, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 1, 12,  2, 0x0,  1, 13, 12, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700F628, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 1, 12, 13, 0x0,  1, 13,  2, 0x0),\n    gsSP1Triangle(14, 15,  6, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700F728, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0,  1, 12, 13, 0x0),\n    gsSP1Triangle( 1, 13,  2, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700F808, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  5,  1,  4, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP1Triangle( 0, 10,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700FA40 - 0x0700FAB0\nconst Gfx hmc_seg7_dl_0700FA40[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_0700F8B8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/9/model.inc.c",
    "content": "// 0x0700FAB0 - 0x0700FBA0\nstatic const Vtx hmc_seg7_vertex_0700FAB0[] = {\n    {{{  1137,    358,   6543}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1014,    563,   6543}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1137,    563,   6543}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6973,    563,   3697}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6851,    358,   3697}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6973,    358,   3697}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6851,    563,   3697}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6912,    358,   3799}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6912,    563,   3594}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6912,    563,   3799}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6912,    358,   3594}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1075,    563,   6441}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1075,    563,   6646}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1075,    358,   6646}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1075,    358,   6441}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700FBA0 - 0x0700FC90\nstatic const Vtx hmc_seg7_vertex_0700FBA0[] = {\n    {{{  6482,    358,   3123}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6482,    358,   3328}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6482,    563,   3328}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1137,    358,   6543}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1014,    358,   6543}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1014,    563,   6543}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6973,    358,   6543}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6851,    563,   6543}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6973,    563,   6543}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6851,    358,   6543}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6912,    563,   6441}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6912,    358,   6646}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6912,    358,   6441}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6912,    563,   6646}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6482,    563,   3123}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700FC90 - 0x0700FD80\nstatic const Vtx hmc_seg7_vertex_0700FC90[] = {\n    {{{  3878,    819,   1034}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3756,    614,   1034}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3878,    614,   1034}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6420,    358,   3226}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6543,    563,   3226}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6420,    563,   3226}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6543,    358,   3226}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6420,    358,   7014}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6543,    563,   7014}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6420,    563,   7014}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6543,    358,   7014}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6482,    358,   6912}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6482,    358,   7117}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6482,    563,   7117}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6482,    563,   6912}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700FD80 - 0x0700FDF0\nstatic const Vtx hmc_seg7_vertex_0700FD80[] = {\n    {{{  3817,    614,   1137}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3817,    614,    932}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3817,    819,    932}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3878,    819,   1034}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3756,    819,   1034}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3756,    614,   1034}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3817,    819,   1137}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700FDF0 - 0x0700FEF0\nstatic const Gfx hmc_seg7_dl_0700FDF0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_0700FAB0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700FBA0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700FC90, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0700FD80, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  2,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700FEF0 - 0x0700FF70\nconst Gfx hmc_seg7_dl_0700FEF0[] = {\n    gsDPPipeSync(),\n    gsDPSetEnvColor(255, 255, 255, 128),\n    gsDPSetCombineMode(G_CC_DECALFADEA, G_CC_DECALFADEA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_0700FDF0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/collision.inc.c",
    "content": "// 0x07025594 - 0x0702AA78\nconst Collision hmc_seg7_collision_level[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x5E1),\n    COL_VERTEX(1468, -4279, 4991),\n    COL_VERTEX(455, -4279, 8032),\n    COL_VERTEX(2482, -4279, 6005),\n    COL_VERTEX(-558, -4279, 7018),\n    COL_VERTEX(3021, -7761, 2662),\n    COL_VERTEX(5581, -7761, 1997),\n    COL_VERTEX(3021, -7761, 1997),\n    COL_VERTEX(5581, -7761, 2662),\n    COL_VERTEX(-6245, -2252, -25),\n    COL_VERTEX(-5017, -2252, -1253),\n    COL_VERTEX(-6245, -2252, -1253),\n    COL_VERTEX(-5017, -2252, -25),\n    COL_VERTEX(-6860, -1535, 2534),\n    COL_VERTEX(-204, -1535, 6528),\n    COL_VERTEX(-204, -1535, 2534),\n    COL_VERTEX(-6860, -1535, 6528),\n    COL_VERTEX(-5221, 922, 384),\n    COL_VERTEX(-4709, 1058, 384),\n    COL_VERTEX(-4607, 922, -229),\n    COL_VERTEX(-3623, 1226, 36),\n    COL_VERTEX(-3955, 1211, -1473),\n    COL_VERTEX(-4582, 1020, 77),\n    COL_VERTEX(-4607, 922, -1049),\n    COL_VERTEX(-4228, 1226, 339),\n    COL_VERTEX(-4455, 1184, -1807),\n    COL_VERTEX(-5221, 922, -1663),\n    COL_VERTEX(-7539, 1331, -1123),\n    COL_VERTEX(-7167, 1104, -844),\n    COL_VERTEX(-6655, 922, -1049),\n    COL_VERTEX(-7269, 1145, -332),\n    COL_VERTEX(-6655, 922, -229),\n    COL_VERTEX(-7690, 1331, -271),\n    COL_VERTEX(-5221, 1331, -2687),\n    COL_VERTEX(-4284, 1331, -2062),\n    COL_VERTEX(-6757, 1331, -2687),\n    COL_VERTEX(-7269, 1331, 1408),\n    COL_VERTEX(-5733, 1331, 1408),\n    COL_VERTEX(-6041, 922, -1663),\n    COL_VERTEX(-6041, 922, 384),\n    COL_VERTEX(3713, -4382, 4629),\n    COL_VERTEX(3713, -4689, 4919),\n    COL_VERTEX(3713, -4382, 4919),\n    COL_VERTEX(3496, -4689, 5136),\n    COL_VERTEX(3496, -4382, 5136),\n    COL_VERTEX(3206, -4689, 5136),\n    COL_VERTEX(3206, -4382, 5136),\n    COL_VERTEX(3713, -4689, 4629),\n    COL_VERTEX(3496, -4382, 4412),\n    COL_VERTEX(3496, -4689, 4412),\n    COL_VERTEX(3206, -4382, 4412),\n    COL_VERTEX(3206, -4689, 4412),\n    COL_VERTEX(2989, -4382, 4629),\n    COL_VERTEX(2989, -4689, 4629),\n    COL_VERTEX(2989, -4382, 4919),\n    COL_VERTEX(2989, -4689, 4919),\n    COL_VERTEX(3713, -4689, 4412),\n    COL_VERTEX(2989, -4689, 5136),\n    COL_VERTEX(3713, -4689, 5136),\n    COL_VERTEX(2989, -4689, 4412),\n    COL_VERTEX(512, 2048, 3482),\n    COL_VERTEX(410, 2048, 3482),\n    COL_VERTEX(410, 2048, 3840),\n    COL_VERTEX(512, 2048, 3840),\n    COL_VERTEX(410, 2048, 4096),\n    COL_VERTEX(922, 2048, 4096),\n    COL_VERTEX(410, 3072, 4055),\n    COL_VERTEX(881, 2048, 4055),\n    COL_VERTEX(410, 2048, 4055),\n    COL_VERTEX(881, 3072, 4055),\n    COL_VERTEX(881, 3072, 3564),\n    COL_VERTEX(881, 2048, 3564),\n    COL_VERTEX(922, 3072, 3564),\n    COL_VERTEX(717, 1946, 3277),\n    COL_VERTEX(922, 1946, 3482),\n    COL_VERTEX(410, 1946, 3584),\n    COL_VERTEX(410, 2048, 5837),\n    COL_VERTEX(410, 2048, 4403),\n    COL_VERTEX(922, 2048, 4813),\n    COL_VERTEX(922, 2048, 5427),\n    COL_VERTEX(410, 1946, 4403),\n    COL_VERTEX(717, 2048, 3277),\n    COL_VERTEX(410, 2048, 3072),\n    COL_VERTEX(922, 2048, 3482),\n    COL_VERTEX(922, 2048, 3564),\n    COL_VERTEX(922, 1946, 4096),\n    COL_VERTEX(410, 1946, 4096),\n    COL_VERTEX(410, 1946, 5837),\n    COL_VERTEX(922, 1946, 5427),\n    COL_VERTEX(922, 1946, 4813),\n    COL_VERTEX(922, 2048, 3072),\n    COL_VERTEX(-2713, -6327, 2022),\n    COL_VERTEX(-3225, -4279, 2739),\n    COL_VERTEX(-2713, -4279, 3251),\n    COL_VERTEX(-4351, -6327, 2022),\n    COL_VERTEX(-1996, -6327, 2739),\n    COL_VERTEX(-1996, -6327, 4378),\n    COL_VERTEX(-2713, -4279, 3866),\n    COL_VERTEX(-3839, -4279, 2739),\n    COL_VERTEX(-3225, -4279, 4378),\n    COL_VERTEX(-2713, -6327, 5094),\n    COL_VERTEX(-4351, -6327, 5094),\n    COL_VERTEX(-3839, -4279, 4378),\n    COL_VERTEX(-4351, -4279, 3866),\n    COL_VERTEX(-5068, -6327, 4378),\n    COL_VERTEX(-4351, -4279, 3251),\n    COL_VERTEX(-5068, -6327, 2739),\n    COL_VERTEX(2765, 1075, 4147),\n    COL_VERTEX(2765, 1024, 4198),\n    COL_VERTEX(5222, 1024, 4403),\n    COL_VERTEX(5274, 1075, 4403),\n    COL_VERTEX(5018, 1075, 6400),\n    COL_VERTEX(5018, 1024, 6349),\n    COL_VERTEX(5018, 1126, 3584),\n    COL_VERTEX(5274, 1434, 3994),\n    COL_VERTEX(2765, 1126, 6656),\n    COL_VERTEX(3277, 1126, 6656),\n    COL_VERTEX(3277, 1126, 5939),\n    COL_VERTEX(3021, 1434, 6298),\n    COL_VERTEX(5530, 1126, 6144),\n    COL_VERTEX(5530, 1126, 6656),\n    COL_VERTEX(5018, 1126, 6144),\n    COL_VERTEX(5018, 1126, 6656),\n    COL_VERTEX(2765, 1126, 3891),\n    COL_VERTEX(2765, 1126, 4403),\n    COL_VERTEX(2406, 1331, 4147),\n    COL_VERTEX(2048, 1126, 4403),\n    COL_VERTEX(6244, 410, 1536),\n    COL_VERTEX(5579, 0, 2560),\n    COL_VERTEX(1690, 1024, 5120),\n    COL_VERTEX(1690, 1024, 4608),\n    COL_VERTEX(922, 1024, 5120),\n    COL_VERTEX(1306, 1434, 4864),\n    COL_VERTEX(-5391, 512, -1253),\n    COL_VERTEX(-5017, 512, -879),\n    COL_VERTEX(-5017, 512, -399),\n    COL_VERTEX(-5871, 512, -1253),\n    COL_VERTEX(-5391, 512, -25),\n    COL_VERTEX(-6245, 512, -879),\n    COL_VERTEX(-6245, 512, -399),\n    COL_VERTEX(-5871, 512, -25),\n    COL_VERTEX(5018, 1024, 4096),\n    COL_VERTEX(2765, 1024, 4096),\n    COL_VERTEX(5018, 1075, 4147),\n    COL_VERTEX(5018, 1024, 4198),\n    COL_VERTEX(5274, 1075, 6144),\n    COL_VERTEX(5325, 1024, 6144),\n    COL_VERTEX(5325, 1024, 4403),\n    COL_VERTEX(5222, 1024, 6144),\n    COL_VERTEX(3277, 1024, 6451),\n    COL_VERTEX(5018, 1024, 6451),\n    COL_VERTEX(3277, 1075, 6400),\n    COL_VERTEX(3277, 1024, 6349),\n    COL_VERTEX(5530, 1126, 3584),\n    COL_VERTEX(5018, 1126, 4403),\n    COL_VERTEX(5530, 1126, 4403),\n    COL_VERTEX(2765, 1126, 5939),\n    COL_VERTEX(5274, 1434, 6400),\n    COL_VERTEX(2048, 1126, 3891),\n    COL_VERTEX(5579, 410, 1587),\n    COL_VERTEX(6244, 410, 1587),\n    COL_VERTEX(5579, 410, 1536),\n    COL_VERTEX(6244, 0, 2560),\n    COL_VERTEX(922, 1024, 4608),\n    COL_VERTEX(6244, 307, 2458),\n    COL_VERTEX(5579, 307, 2458),\n    COL_VERTEX(5579, 1126, 2458),\n    COL_VERTEX(6244, 1126, 2458),\n    COL_VERTEX(-4318, 2867, -1115),\n    COL_VERTEX(-5221, 2867, -2175),\n    COL_VERTEX(-4098, 2867, -1460),\n    COL_VERTEX(-5441, 2867, -1829),\n    COL_VERTEX(-4577, 2867, -1280),\n    COL_VERTEX(-4483, 2867, -856),\n    COL_VERTEX(-3685, 2867, -1663),\n    COL_VERTEX(-4095, 2867, -1458),\n    COL_VERTEX(-5221, 2867, -2687),\n    COL_VERTEX(-5096, 2867, -1610),\n    COL_VERTEX(-5551, 2867, -322),\n    COL_VERTEX(-5810, 2867, -486),\n    COL_VERTEX(-4837, 2867, -1445),\n    COL_VERTEX(-3685, 2867, -3199),\n    COL_VERTEX(-4709, 2867, -3199),\n    COL_VERTEX(-6344, 2867, -1555),\n    COL_VERTEX(-5119, 2867, -47),\n    COL_VERTEX(-4742, 2867, -1021),\n    COL_VERTEX(-5269, 2867, -1719),\n    COL_VERTEX(-5763, 2867, -942),\n    COL_VERTEX(-5936, 2867, -1052),\n    COL_VERTEX(-6454, 2867, -1382),\n    COL_VERTEX(-5826, 2867, -1225),\n    COL_VERTEX(-5441, 2867, -494),\n    COL_VERTEX(-5009, 2867, -219),\n    COL_VERTEX(-4453, -3378, -4851),\n    COL_VERTEX(-3738, -2969, -5560),\n    COL_VERTEX(-4053, -2969, -5964),\n    COL_VERTEX(-3359, -2661, -5076),\n    COL_VERTEX(-3110, -2559, -5877),\n    COL_VERTEX(-3234, -2559, -6373),\n    COL_VERTEX(-3949, -3071, -4499),\n    COL_VERTEX(-3670, -2559, -6539),\n    COL_VERTEX(-4169, -2559, -6578),\n    COL_VERTEX(-4431, -2661, -6448),\n    COL_VERTEX(-4872, -3378, -5145),\n    COL_VERTEX(-5282, -3788, -4325),\n    COL_VERTEX(-5375, -3071, -5497),\n    COL_VERTEX(-4785, -3788, -4202),\n    COL_VERTEX(-5878, -3481, -4474),\n    COL_VERTEX(-4189, -3481, -4053),\n    COL_VERTEX(-5282, -4197, -3301),\n    COL_VERTEX(-4787, -4197, -3434),\n    COL_VERTEX(-4194, -3890, -3593),\n    COL_VERTEX(-4469, -4607, -2797),\n    COL_VERTEX(-4872, -4607, -2482),\n    COL_VERTEX(-3984, -4300, -3176),\n    COL_VERTEX(-4258, -5017, -1868),\n    COL_VERTEX(-3854, -5017, -2183),\n    COL_VERTEX(-3370, -4709, -2561),\n    COL_VERTEX(-2742, -4914, -1264),\n    COL_VERTEX(-3345, -5221, -1146),\n    COL_VERTEX(-3848, -5221, -1049),\n    COL_VERTEX(-4451, -4914, -931),\n    COL_VERTEX(-3835, -5221, -537),\n    COL_VERTEX(-50, -4996, 2022),\n    COL_VERTEX(-665, -4996, 2842),\n    COL_VERTEX(-5875, -3890, -3142),\n    COL_VERTEX(-5356, -4300, -2104),\n    COL_VERTEX(-4742, -4709, -1490),\n    COL_VERTEX(-4447, -4914, -537),\n    COL_VERTEX(-2712, -4914, -537),\n    COL_VERTEX(-3325, -5221, -537),\n    COL_VERTEX(154, -4689, 3046),\n    COL_VERTEX(154, -4689, 2125),\n    COL_VERTEX(-50, -4996, 2842),\n    COL_VERTEX(-460, -4689, 3046),\n    COL_VERTEX(973, -4433, 2253),\n    COL_VERTEX(973, -4433, 2406),\n    COL_VERTEX(922, -4433, 2406),\n    COL_VERTEX(922, -4433, 2253),\n    COL_VERTEX(922, -4689, 2253),\n    COL_VERTEX(973, -4689, 2253),\n    COL_VERTEX(973, -4689, 2406),\n    COL_VERTEX(922, -4689, 2406),\n    COL_VERTEX(3021, -4689, 1997),\n    COL_VERTEX(1075, -4689, 1997),\n    COL_VERTEX(1075, -4689, 2662),\n    COL_VERTEX(3021, -4689, 2662),\n    COL_VERTEX(973, -4689, 2662),\n    COL_VERTEX(973, -4689, 1997),\n    COL_VERTEX(4557, -4689, 1997),\n    COL_VERTEX(6605, -3665, 1997),\n    COL_VERTEX(6605, -4689, 2662),\n    COL_VERTEX(5581, -4689, 2662),\n    COL_VERTEX(4045, -4689, 1997),\n    COL_VERTEX(6605, -4689, 1997),\n    COL_VERTEX(5581, -4689, 1997),\n    COL_VERTEX(4557, -4689, 2662),\n    COL_VERTEX(-51, -4279, 6511),\n    COL_VERTEX(20, -3255, 7598),\n    COL_VERTEX(-124, -3255, 6439),\n    COL_VERTEX(3496, -4279, 3108),\n    COL_VERTEX(3351, -4279, 3108),\n    COL_VERTEX(3568, -4279, 3036),\n    COL_VERTEX(-522, -4023, 6765),\n    COL_VERTEX(-268, -4023, 6584),\n    COL_VERTEX(-486, -4023, 6801),\n    COL_VERTEX(-305, -4023, 6548),\n    COL_VERTEX(-486, -4279, 6801),\n    COL_VERTEX(889, -3255, 7598),\n    COL_VERTEX(382, -3255, 6946),\n    COL_VERTEX(817, -3255, 6946),\n    COL_VERTEX(1396, -3255, 4919),\n    COL_VERTEX(2120, -4279, 5643),\n    COL_VERTEX(3061, -4279, 6584),\n    COL_VERTEX(5089, -4279, 4846),\n    COL_VERTEX(1541, -4279, 4774),\n    COL_VERTEX(3351, -4279, 5860),\n    COL_VERTEX(3206, -4279, 6729),\n    COL_VERTEX(2265, -4279, 4774),\n    COL_VERTEX(4437, -4279, 4774),\n    COL_VERTEX(3351, -4279, 3688),\n    COL_VERTEX(3351, -4382, 5860),\n    COL_VERTEX(4437, -4382, 4774),\n    COL_VERTEX(1613, -4279, 4846),\n    COL_VERTEX(1613, -4279, 4991),\n    COL_VERTEX(3134, -4279, 6511),\n    COL_VERTEX(3278, -4279, 6511),\n    COL_VERTEX(5016, -4279, 4774),\n    COL_VERTEX(5016, -4279, 4629),\n    COL_VERTEX(-4812, 2867, -7807),\n    COL_VERTEX(-204, 2867, -8114),\n    COL_VERTEX(3738, 614, -6962),\n    COL_VERTEX(-1209, -4484, 5281),\n    COL_VERTEX(-1749, -4587, 5893),\n    COL_VERTEX(-1822, -4484, 5893),\n    COL_VERTEX(-1391, -4587, 6251),\n    COL_VERTEX(-2764, -2559, -5759),\n    COL_VERTEX(-4300, -511, -5759),\n    COL_VERTEX(-2764, -511, -5759),\n    COL_VERTEX(-3107, -511, -4753),\n    COL_VERTEX(-3614, -921, -4264),\n    COL_VERTEX(-4620, -511, -6690),\n    COL_VERTEX(-4300, -511, -7295),\n    COL_VERTEX(-5627, -921, -5673),\n    COL_VERTEX(-3791, -1330, -3954),\n    COL_VERTEX(-6176, -1330, -4548),\n    COL_VERTEX(-6176, -2969, -4548),\n    COL_VERTEX(-5627, -2559, -5673),\n    COL_VERTEX(-4620, -2149, -6690),\n    COL_VERTEX(-2961, -2252, -5280),\n    COL_VERTEX(-3107, -2149, -4753),\n    COL_VERTEX(-3614, -2559, -4264),\n    COL_VERTEX(-3791, -2969, -3954),\n    COL_VERTEX(-6172, -3378, -3063),\n    COL_VERTEX(-3798, -1740, -3699),\n    COL_VERTEX(-3798, -3378, -3699),\n    COL_VERTEX(-5598, -3788, -1915),\n    COL_VERTEX(-3662, -2149, -3428),\n    COL_VERTEX(-3662, -3788, -3428),\n    COL_VERTEX(-4984, -4197, -1300),\n    COL_VERTEX(-3047, -4197, -2813),\n    COL_VERTEX(-3047, -2559, -2813),\n    COL_VERTEX(-4300, 1741, -7295),\n    COL_VERTEX(-4753, -4402, -873),\n    COL_VERTEX(-2340, -2764, -1342),\n    COL_VERTEX(-2340, -4402, -1342),\n    COL_VERTEX(-4753, -2764, -873),\n    COL_VERTEX(-4753, -4402, -537),\n    COL_VERTEX(-2303, -4402, -537),\n    COL_VERTEX(-1484, -3255, -537),\n    COL_VERTEX(-460, -4689, 3456),\n    COL_VERTEX(563, -4689, 1920),\n    COL_VERTEX(-2201, -6020, 896),\n    COL_VERTEX(-869, -5303, 2227),\n    COL_VERTEX(-869, -6020, 3661),\n    COL_VERTEX(-869, -5303, 3661),\n    COL_VERTEX(-417, -5303, 2001),\n    COL_VERTEX(563, -5303, 1510),\n    COL_VERTEX(563, -5303, 4378),\n    COL_VERTEX(-1484, -6327, 4582),\n    COL_VERTEX(563, -4689, 2739),\n    COL_VERTEX(870, -4689, 2739),\n    COL_VERTEX(563, -3972, 2739),\n    COL_VERTEX(768, -4689, 2509),\n    COL_VERTEX(870, -4689, 2509),\n    COL_VERTEX(870, -4689, 1920),\n    COL_VERTEX(563, -3255, 1510),\n    COL_VERTEX(870, -4689, 2150),\n    COL_VERTEX(-1484, -5303, -537),\n    COL_VERTEX(870, -3972, 1920),\n    COL_VERTEX(563, -3255, 5606),\n    COL_VERTEX(563, -4689, 3968),\n    COL_VERTEX(-2508, -6327, 5606),\n    COL_VERTEX(-2508, -6327, 1510),\n    COL_VERTEX(870, -4433, 2253),\n    COL_VERTEX(870, -4433, 2406),\n    COL_VERTEX(870, -4689, 2406),\n    COL_VERTEX(870, -4689, 2253),\n    COL_VERTEX(-4556, -6327, 1510),\n    COL_VERTEX(-4709, 1843, -7807),\n    COL_VERTEX(307, -409, -7781),\n    COL_VERTEX(307, -409, -6962),\n    COL_VERTEX(3149, -409, -6962),\n    COL_VERTEX(3149, -409, -7065),\n    COL_VERTEX(-204, 922, -7904),\n    COL_VERTEX(3508, -409, -7065),\n    COL_VERTEX(3738, 614, -7781),\n    COL_VERTEX(3738, -409, -6962),\n    COL_VERTEX(-1818, 1843, -6513),\n    COL_VERTEX(-1818, 2867, -6513),\n    COL_VERTEX(-2764, 1843, -7807),\n    COL_VERTEX(-2764, 2867, -7807),\n    COL_VERTEX(-3276, 1843, -7295),\n    COL_VERTEX(-1740, 1843, -6578),\n    COL_VERTEX(-4300, 1843, -7295),\n    COL_VERTEX(-2764, 1843, -5759),\n    COL_VERTEX(-1228, 1843, -7090),\n    COL_VERTEX(-204, 1843, -6578),\n    COL_VERTEX(-815, -4279, 5676),\n    COL_VERTEX(-1427, -4279, 6288),\n    COL_VERTEX(-1484, -5303, 7654),\n    COL_VERTEX(-1484, -4279, 7654),\n    COL_VERTEX(563, -5303, 5606),\n    COL_VERTEX(-341, -4279, 6367),\n    COL_VERTEX(-558, -4023, 6729),\n    COL_VERTEX(-522, -4279, 6765),\n    COL_VERTEX(563, -4279, 5606),\n    COL_VERTEX(-5580, -5303, 7654),\n    COL_VERTEX(-5580, -3255, 7654),\n    COL_VERTEX(-4556, -6327, 5606),\n    COL_VERTEX(-5580, -6327, 2534),\n    COL_VERTEX(-7628, -5303, 5606),\n    COL_VERTEX(-7628, -3255, 5606),\n    COL_VERTEX(-7628, -5303, 1510),\n    COL_VERTEX(-4812, 1843, -7295),\n    COL_VERTEX(-3788, 1843, -6783),\n    COL_VERTEX(-4812, 2099, -7474),\n    COL_VERTEX(-1228, 1843, -7602),\n    COL_VERTEX(-716, 1843, -7602),\n    COL_VERTEX(-1740, 2867, -8114),\n    COL_VERTEX(-204, -409, -8114),\n    COL_VERTEX(-1740, 1741, -6578),\n    COL_VERTEX(-204, 2867, -6578),\n    COL_VERTEX(-1740, -409, -6578),\n    COL_VERTEX(-716, -409, -7090),\n    COL_VERTEX(-204, 922, -6839),\n    COL_VERTEX(-716, 1741, -7090),\n    COL_VERTEX(-1228, 1741, -7602),\n    COL_VERTEX(-1228, -409, -7090),\n    COL_VERTEX(-1228, -409, -7602),\n    COL_VERTEX(-716, -409, -7602),\n    COL_VERTEX(-716, -511, -7602),\n    COL_VERTEX(-4863, 2099, -7474),\n    COL_VERTEX(-4863, 1843, -7474),\n    COL_VERTEX(-4914, 2099, -7474),\n    COL_VERTEX(-4914, 1843, -7474),\n    COL_VERTEX(-4863, 1843, -7628),\n    COL_VERTEX(-4863, 2099, -7628),\n    COL_VERTEX(-4914, 2099, -7628),\n    COL_VERTEX(-4812, 2099, -7628),\n    COL_VERTEX(307, 614, -6962),\n    COL_VERTEX(-204, -409, -6839),\n    COL_VERTEX(3252, -153, -6962),\n    COL_VERTEX(3252, -153, -6911),\n    COL_VERTEX(3405, -409, -6962),\n    COL_VERTEX(3405, -153, -6962),\n    COL_VERTEX(3405, -409, -6911),\n    COL_VERTEX(3405, -153, -6911),\n    COL_VERTEX(3252, -153, -6860),\n    COL_VERTEX(-3276, 1843, -6783),\n    COL_VERTEX(-631, -4279, 6801),\n    COL_VERTEX(1076, 614, -5119),\n    COL_VERTEX(-3583, 2355, -3276),\n    COL_VERTEX(-3481, 2355, -2943),\n    COL_VERTEX(-3071, 2355, -2764),\n    COL_VERTEX(-3481, 2355, -2585),\n    COL_VERTEX(-3583, 2611, -2841),\n    COL_VERTEX(-3583, 2355, -2841),\n    COL_VERTEX(-3583, -409, -2252),\n    COL_VERTEX(-3583, 2355, -2687),\n    COL_VERTEX(-3583, 2611, -2687),\n    COL_VERTEX(1076, -409, -4300),\n    COL_VERTEX(224, -409, -5119),\n    COL_VERTEX(224, 614, -5119),\n    COL_VERTEX(-3634, 2355, -2687),\n    COL_VERTEX(-3634, 2355, -2841),\n    COL_VERTEX(-767, 614, -4127),\n    COL_VERTEX(-767, -409, -4127),\n    COL_VERTEX(1076, 614, -4300),\n    COL_VERTEX(564, 614, -4300),\n    COL_VERTEX(-767, 614, -3308),\n    COL_VERTEX(-799, -409, -3276),\n    COL_VERTEX(52, 614, -3788),\n    COL_VERTEX(-799, 614, -3276),\n    COL_VERTEX(52, 614, -2764),\n    COL_VERTEX(-2047, 614, -3276),\n    COL_VERTEX(-2047, -409, -2252),\n    COL_VERTEX(-459, 614, -2252),\n    COL_VERTEX(-2047, -409, -3276),\n    COL_VERTEX(-2047, 3379, -3276),\n    COL_VERTEX(-3583, 3379, -3276),\n    COL_VERTEX(-2047, 3379, -2252),\n    COL_VERTEX(1076, -153, -4633),\n    COL_VERTEX(1076, -153, -4786),\n    COL_VERTEX(1076, -409, -4633),\n    COL_VERTEX(1076, -409, -5119),\n    COL_VERTEX(1076, -409, -4786),\n    COL_VERTEX(1127, -153, -4786),\n    COL_VERTEX(1127, -409, -4786),\n    COL_VERTEX(1127, -153, -4633),\n    COL_VERTEX(1127, -409, -4633),\n    COL_VERTEX(-2559, 2355, -2764),\n    COL_VERTEX(-3583, 2355, -2252),\n    COL_VERTEX(-3071, 2355, -2252),\n    COL_VERTEX(-4914, 2810, -7295),\n    COL_VERTEX(-4914, 3630, -7295),\n    COL_VERTEX(-4607, 3630, -6988),\n    COL_VERTEX(-4607, 3630, -6578),\n    COL_VERTEX(-4914, 3630, -6271),\n    COL_VERTEX(-5426, 2697, -6271),\n    COL_VERTEX(-5631, 2810, -8191),\n    COL_VERTEX(-5631, 2810, -7807),\n    COL_VERTEX(-5631, 3630, -7807),\n    COL_VERTEX(-4197, 1536, 896),\n    COL_VERTEX(-4228, 1536, 339),\n    COL_VERTEX(-3769, 1536, 682),\n    COL_VERTEX(-3623, 1536, 36),\n    COL_VERTEX(-3448, 1536, 521),\n    COL_VERTEX(-3685, 1536, -1663),\n    COL_VERTEX(-3955, 1536, -1473),\n    COL_VERTEX(-3494, 1536, 430),\n    COL_VERTEX(-3173, 1536, 384),\n    COL_VERTEX(-4709, 1536, 384),\n    COL_VERTEX(-5411, 509, 77),\n    COL_VERTEX(-4284, 1536, -2062),\n    COL_VERTEX(-4455, 1536, -1807),\n    COL_VERTEX(-6732, 1536, 1408),\n    COL_VERTEX(-6732, 1536, 1306),\n    COL_VERTEX(-6962, 1536, 1408),\n    COL_VERTEX(-6655, 1536, 691),\n    COL_VERTEX(-5718, 1536, 691),\n    COL_VERTEX(-5221, 1536, 384),\n    COL_VERTEX(-6373, 1536, 1306),\n    COL_VERTEX(-6392, 2355, -1099),\n    COL_VERTEX(-6062, 2355, -1617),\n    COL_VERTEX(-6753, 2355, -2057),\n    COL_VERTEX(-7083, 2355, -1539),\n    COL_VERTEX(-6062, 2458, -1617),\n    COL_VERTEX(-6962, 1597, -5858),\n    COL_VERTEX(-5426, 1843, -7295),\n    COL_VERTEX(-5426, 1638, -6271),\n    COL_VERTEX(-5426, 1536, -5247),\n    COL_VERTEX(-6553, 1843, -7295),\n    COL_VERTEX(-5017, 1843, -7295),\n    COL_VERTEX(-6553, 2810, -7807),\n    COL_VERTEX(-3788, 2355, -2585),\n    COL_VERTEX(-3788, 2355, -2943),\n    COL_VERTEX(-3685, 2355, -1663),\n    COL_VERTEX(-6629, 1792, 1408),\n    COL_VERTEX(-6476, 1536, 1408),\n    COL_VERTEX(-6476, 1792, 1459),\n    COL_VERTEX(-6476, 1536, 1459),\n    COL_VERTEX(-5221, 3379, 384),\n    COL_VERTEX(-6629, 1536, 1459),\n    COL_VERTEX(-4197, 3379, 896),\n    COL_VERTEX(-4709, 3379, 384),\n    COL_VERTEX(-5221, 3379, -2175),\n    COL_VERTEX(-5221, 2355, -2687),\n    COL_VERTEX(-3685, 3379, -1663),\n    COL_VERTEX(-5221, 3379, -2687),\n    COL_VERTEX(-4709, 2355, -3199),\n    COL_VERTEX(-3685, 2611, -2841),\n    COL_VERTEX(-3685, 2611, -2687),\n    COL_VERTEX(-6041, 1331, -1663),\n    COL_VERTEX(-5466, 2355, -455),\n    COL_VERTEX(-5466, 2355, 261),\n    COL_VERTEX(-4749, 2355, 261),\n    COL_VERTEX(-4749, 2355, -455),\n    COL_VERTEX(-5466, 2458, 261),\n    COL_VERTEX(-3685, 2355, -3199),\n    COL_VERTEX(-3634, 2611, -2841),\n    COL_VERTEX(-3634, 2611, -2687),\n    COL_VERTEX(-4914, 1843, -7807),\n    COL_VERTEX(-5426, 1536, -4223),\n    COL_VERTEX(-5426, 2355, -3199),\n    COL_VERTEX(-6757, 3379, -2687),\n    COL_VERTEX(-6476, 1792, 1408),\n    COL_VERTEX(-7269, 3379, 1408),\n    COL_VERTEX(-7781, 3379, -639),\n    COL_VERTEX(-6629, 1792, 1510),\n    COL_VERTEX(-6629, 1536, 1510),\n    COL_VERTEX(-6629, 1792, 1459),\n    COL_VERTEX(-6476, 1792, 1510),\n    COL_VERTEX(-6476, 1536, 1510),\n    COL_VERTEX(-3540, 1792, 567),\n    COL_VERTEX(-3540, 1536, 567),\n    COL_VERTEX(-3677, 1792, 636),\n    COL_VERTEX(-3677, 1536, 636),\n    COL_VERTEX(-6553, 2355, -3199),\n    COL_VERTEX(-6553, 2583, -5247),\n    COL_VERTEX(-6962, 2628, -5654),\n    COL_VERTEX(-6962, 2651, -5858),\n    COL_VERTEX(-5426, 1684, -7295),\n    COL_VERTEX(-6553, 1638, -6271),\n    COL_VERTEX(-6553, 1843, -7807),\n    COL_VERTEX(-6143, 1690, -6527),\n    COL_VERTEX(-4914, 1843, -7628),\n    COL_VERTEX(-7167, 1331, -844),\n    COL_VERTEX(-7269, 1331, -332),\n    COL_VERTEX(-5785, 1792, -7039),\n    COL_VERTEX(-6143, 1690, -6783),\n    COL_VERTEX(-5785, 1690, -6783),\n    COL_VERTEX(-5785, 1690, -6527),\n    COL_VERTEX(-6143, 1741, -6783),\n    COL_VERTEX(3638, 205, 819),\n    COL_VERTEX(3638, 205, 717),\n    COL_VERTEX(3996, 205, 717),\n    COL_VERTEX(4250, 205, 819),\n    COL_VERTEX(4250, 1024, 819),\n    COL_VERTEX(4250, 1024, -306),\n    COL_VERTEX(2202, 205, -204),\n    COL_VERTEX(2100, 102, 102),\n    COL_VERTEX(2202, 205, 205),\n    COL_VERTEX(4250, 205, -306),\n    COL_VERTEX(3740, 461, 819),\n    COL_VERTEX(1690, 1024, -306),\n    COL_VERTEX(3894, 461, 870),\n    COL_VERTEX(1690, 1024, 819),\n    COL_VERTEX(1792, 205, -204),\n    COL_VERTEX(1792, 205, 205),\n    COL_VERTEX(2100, 102, -101),\n    COL_VERTEX(3894, 205, 819),\n    COL_VERTEX(3740, 461, 870),\n    COL_VERTEX(3894, 461, 819),\n    COL_VERTEX(5681, -204, 819),\n    COL_VERTEX(5735, -204, 819),\n    COL_VERTEX(5735, -204, 717),\n    COL_VERTEX(6093, -204, 717),\n    COL_VERTEX(5476, -409, 819),\n    COL_VERTEX(1178, -409, -4453),\n    COL_VERTEX(1280, -409, -4453),\n    COL_VERTEX(3124, -409, -6348),\n    COL_VERTEX(3533, -409, -6757),\n    COL_VERTEX(3533, 0, -6860),\n    COL_VERTEX(5476, -613, 819),\n    COL_VERTEX(5681, -409, 819),\n    COL_VERTEX(4864, -869, 819),\n    COL_VERTEX(4864, 0, 819),\n    COL_VERTEX(5835, 51, 819),\n    COL_VERTEX(6298, -869, 819),\n    COL_VERTEX(5988, -204, 819),\n    COL_VERTEX(6298, 0, 819),\n    COL_VERTEX(5988, 51, 870),\n    COL_VERTEX(5988, 51, 819),\n    COL_VERTEX(3328, -869, 819),\n    COL_VERTEX(2919, 0, 819),\n    COL_VERTEX(2304, -1023, 819),\n    COL_VERTEX(6093, 1024, 205),\n    COL_VERTEX(6298, 1024, 410),\n    COL_VERTEX(6298, 0, 410),\n    COL_VERTEX(6093, 0, 205),\n    COL_VERTEX(4967, 0, 205),\n    COL_VERTEX(4967, 1024, 205),\n    COL_VERTEX(6298, 0, -4505),\n    COL_VERTEX(6298, -921, -5631),\n    COL_VERTEX(2100, 0, -4965),\n    COL_VERTEX(2100, 0, -4453),\n    COL_VERTEX(6298, 0, -6348),\n    COL_VERTEX(1690, 0, -3993),\n    COL_VERTEX(1178, 102, -4965),\n    COL_VERTEX(1690, 0, -5324),\n    COL_VERTEX(1690, -921, -3993),\n    COL_VERTEX(1178, 102, -4453),\n    COL_VERTEX(1690, 102, -4965),\n    COL_VERTEX(1690, -921, -5324),\n    COL_VERTEX(3431, 0, -3788),\n    COL_VERTEX(1895, 0, -3788),\n    COL_VERTEX(1690, 0, 819),\n    COL_VERTEX(5786, 0, -1842),\n    COL_VERTEX(2100, 0, -101),\n    COL_VERTEX(5786, 0, -1330),\n    COL_VERTEX(3124, 0, -6860),\n    COL_VERTEX(6912, 154, -1330),\n    COL_VERTEX(6298, 0, -1842),\n    COL_VERTEX(6298, 154, -1842),\n    COL_VERTEX(6912, -357, -1842),\n    COL_VERTEX(6912, 154, -1842),\n    COL_VERTEX(6912, -357, -1330),\n    COL_VERTEX(6298, 0, -613),\n    COL_VERTEX(6298, -869, -613),\n    COL_VERTEX(6298, -869, -2354),\n    COL_VERTEX(3405, -153, -6860),\n    COL_VERTEX(3124, 0, -6348),\n    COL_VERTEX(3943, 0, -6348),\n    COL_VERTEX(3943, -921, -6348),\n    COL_VERTEX(2714, -921, -6348),\n    COL_VERTEX(2714, 0, -5017),\n    COL_VERTEX(3328, 0, -5631),\n    COL_VERTEX(2304, 0, -5017),\n    COL_VERTEX(3636, 0, -5631),\n    COL_VERTEX(4250, 0, -5017),\n    COL_VERTEX(3738, -921, -6245),\n    COL_VERTEX(3636, -1074, -6143),\n    COL_VERTEX(3328, -921, -6245),\n    COL_VERTEX(3738, -921, -5836),\n    COL_VERTEX(3328, -921, -5836),\n    COL_VERTEX(2714, -1023, -5324),\n    COL_VERTEX(2714, -921, -5221),\n    COL_VERTEX(3021, -921, -5529),\n    COL_VERTEX(2407, -921, -5529),\n    COL_VERTEX(2714, -921, -5836),\n    COL_VERTEX(2304, -921, -5017),\n    COL_VERTEX(2100, 0, -4812),\n    COL_VERTEX(2100, 0, -4607),\n    COL_VERTEX(2304, 0, -4402),\n    COL_VERTEX(1690, -921, -3788),\n    COL_VERTEX(2304, -921, -3788),\n    COL_VERTEX(5581, 0, -3788),\n    COL_VERTEX(5581, 0, -3071),\n    COL_VERTEX(6298, 0, 102),\n    COL_VERTEX(2100, 0, 102),\n    COL_VERTEX(1895, 0, -101),\n    COL_VERTEX(4864, 0, -3378),\n    COL_VERTEX(4660, 0, -3173),\n    COL_VERTEX(4864, 0, -4812),\n    COL_VERTEX(4660, 0, -5017),\n    COL_VERTEX(1690, 0, -2969),\n    COL_VERTEX(1895, 0, -3173),\n    COL_VERTEX(2304, 0, -2354),\n    COL_VERTEX(2509, 0, -2559),\n    COL_VERTEX(2304, 0, -2149),\n    COL_VERTEX(5274, 0, -2559),\n    COL_VERTEX(3328, 0, -1945),\n    COL_VERTEX(3533, 0, -1740),\n    COL_VERTEX(3533, 0, -511),\n    COL_VERTEX(2509, 0, -1945),\n    COL_VERTEX(4660, 0, -5631),\n    COL_VERTEX(5479, 0, -5631),\n    COL_VERTEX(4455, 0, -3173),\n    COL_VERTEX(5479, 0, -2149),\n    COL_VERTEX(5479, 0, -2354),\n    COL_VERTEX(5274, 0, -1945),\n    COL_VERTEX(4352, 0, -1945),\n    COL_VERTEX(5479, 0, -1125),\n    COL_VERTEX(5274, 0, -1330),\n    COL_VERTEX(4967, 0, -1330),\n    COL_VERTEX(5479, 0, -613),\n    COL_VERTEX(5684, 0, -409),\n    COL_VERTEX(6093, 0, -409),\n    COL_VERTEX(4762, 0, -1125),\n    COL_VERTEX(4762, 0, 0),\n    COL_VERTEX(3738, 0, -306),\n    COL_VERTEX(3943, 0, -306),\n    COL_VERTEX(4148, 0, -511),\n    COL_VERTEX(2919, 0, -1125),\n    COL_VERTEX(2714, 0, -1330),\n    COL_VERTEX(2509, 0, -1330),\n    COL_VERTEX(2304, 0, -1125),\n    COL_VERTEX(2509, -767, -1125),\n    COL_VERTEX(4352, 0, 307),\n    COL_VERTEX(3840, 0, 307),\n    COL_VERTEX(4967, -818, 0),\n    COL_VERTEX(5271, -613, 205),\n    COL_VERTEX(5271, -613, 819),\n    COL_VERTEX(4557, -1023, -4402),\n    COL_VERTEX(4557, -767, -2354),\n    COL_VERTEX(1690, -767, -1023),\n    COL_VERTEX(6298, -767, -2354),\n    COL_VERTEX(5479, -869, -409),\n    COL_VERTEX(4967, -1023, -1125),\n    COL_VERTEX(4967, -1023, -1945),\n    COL_VERTEX(4762, -1023, -1125),\n    COL_VERTEX(3533, -767, -1125),\n    COL_VERTEX(2919, -869, -511),\n    COL_VERTEX(4250, -1023, -5017),\n    COL_VERTEX(5940, -921, -4146),\n    COL_VERTEX(4557, -767, -3173),\n    COL_VERTEX(2509, -767, -3788),\n    COL_VERTEX(2816, -767, -3788),\n    COL_VERTEX(3431, -1023, -3173),\n    COL_VERTEX(2509, -869, -3173),\n    COL_VERTEX(2509, -869, -2559),\n    COL_VERTEX(2304, -1023, -409),\n    COL_VERTEX(1690, -1023, -409),\n    COL_VERTEX(1895, 102, 102),\n    COL_VERTEX(5988, 51, 922),\n    COL_VERTEX(5835, 51, 870),\n    COL_VERTEX(4148, 0, -1740),\n    COL_VERTEX(3636, 0, -3583),\n    COL_VERTEX(3636, 0, -3378),\n    COL_VERTEX(3431, 0, -3173),\n    COL_VERTEX(4045, 0, -4402),\n    COL_VERTEX(4250, 0, -3378),\n    COL_VERTEX(4250, 0, -4197),\n    COL_VERTEX(1178, -153, -4633),\n    COL_VERTEX(1178, -153, -4786),\n    COL_VERTEX(-2578, 922, 1346),\n    COL_VERTEX(3484, 1126, 922),\n    COL_VERTEX(3277, 0, 5939),\n    COL_VERTEX(2765, 0, 5939),\n    COL_VERTEX(3277, 0, 6656),\n    COL_VERTEX(2765, 0, 6656),\n    COL_VERTEX(5018, 0, 4403),\n    COL_VERTEX(5018, 0, 3584),\n    COL_VERTEX(5530, 0, 3584),\n    COL_VERTEX(5018, 0, 6656),\n    COL_VERTEX(5018, 0, 6144),\n    COL_VERTEX(5530, 0, 6144),\n    COL_VERTEX(5530, 0, 6656),\n    COL_VERTEX(2048, 0, 3891),\n    COL_VERTEX(2765, 0, 3891),\n    COL_VERTEX(2765, 0, 4403),\n    COL_VERTEX(2048, 0, 4403),\n    COL_VERTEX(5018, 0, 4915),\n    COL_VERTEX(4506, 0, 4915),\n    COL_VERTEX(4506, 1024, 4915),\n    COL_VERTEX(4506, 0, 4403),\n    COL_VERTEX(6244, -204, 1331),\n    COL_VERTEX(6244, -204, 1024),\n    COL_VERTEX(1434, 614, 7680),\n    COL_VERTEX(1434, 614, 7270),\n    COL_VERTEX(1434, 410, 7270),\n    COL_VERTEX(1434, 410, 7066),\n    COL_VERTEX(1434, 205, 7066),\n    COL_VERTEX(1434, 205, 6861),\n    COL_VERTEX(5579, 0, 1434),\n    COL_VERTEX(6244, 0, 1434),\n    COL_VERTEX(5579, 205, 1536),\n    COL_VERTEX(6244, 205, 1536),\n    COL_VERTEX(1843, 410, 7270),\n    COL_VERTEX(1843, 205, 7066),\n    COL_VERTEX(1843, 0, 6861),\n    COL_VERTEX(1638, 2048, 6758),\n    COL_VERTEX(1434, 2048, 6758),\n    COL_VERTEX(1638, 2048, 6963),\n    COL_VERTEX(2048, 2048, 6963),\n    COL_VERTEX(2048, 2048, 6758),\n    COL_VERTEX(3072, 2048, 6758),\n    COL_VERTEX(3072, 2048, 6963),\n    COL_VERTEX(3482, 2048, 6963),\n    COL_VERTEX(3482, 2048, 6349),\n    COL_VERTEX(1434, 2048, 6349),\n    COL_VERTEX(3482, 1946, 6758),\n    COL_VERTEX(6192, 2048, 5146),\n    COL_VERTEX(6192, 1843, 5146),\n    COL_VERTEX(6264, 1843, 5218),\n    COL_VERTEX(6554, 2048, 5508),\n    COL_VERTEX(6554, 1843, 5508),\n    COL_VERTEX(6481, 1843, 5435),\n    COL_VERTEX(6481, 1946, 5435),\n    COL_VERTEX(6264, 1946, 5218),\n    COL_VERTEX(3482, 1946, 6963),\n    COL_VERTEX(2048, 1946, 6963),\n    COL_VERTEX(6554, 1946, 5508),\n    COL_VERTEX(6264, 2048, 5073),\n    COL_VERTEX(6554, 1946, 5363),\n    COL_VERTEX(6264, 1946, 5073),\n    COL_VERTEX(5612, 1946, 5725),\n    COL_VERTEX(5902, 1946, 6015),\n    COL_VERTEX(5612, 2048, 5725),\n    COL_VERTEX(5902, 1946, 6159),\n    COL_VERTEX(5612, 1946, 5870),\n    COL_VERTEX(5902, 2048, 6159),\n    COL_VERTEX(5540, 1843, 5797),\n    COL_VERTEX(5612, 1843, 5870),\n    COL_VERTEX(5830, 1946, 6087),\n    COL_VERTEX(5830, 1843, 6087),\n    COL_VERTEX(5902, 1843, 6159),\n    COL_VERTEX(5540, 2048, 5797),\n    COL_VERTEX(6244, 205, 2560),\n    COL_VERTEX(6244, 922, 2560),\n    COL_VERTEX(3484, 0, 922),\n    COL_VERTEX(4150, 0, 2560),\n    COL_VERTEX(-3036, 2560, 430),\n    COL_VERTEX(-3631, 1792, 727),\n    COL_VERTEX(-2578, 2560, 1346),\n    COL_VERTEX(-3036, 922, 430),\n    COL_VERTEX(-3036, 0, 430),\n    COL_VERTEX(-3631, 0, 1872),\n    COL_VERTEX(-1926, 922, 534),\n    COL_VERTEX(-2120, 922, 1117),\n    COL_VERTEX(-2578, 0, 1346),\n    COL_VERTEX(-746, 922, 1575),\n    COL_VERTEX(836, 922, 3158),\n    COL_VERTEX(-414, 922, 1038),\n    COL_VERTEX(922, 1946, 3072),\n    COL_VERTEX(410, 0, 3584),\n    COL_VERTEX(836, 0, 3158),\n    COL_VERTEX(1270, 922, 2723),\n    COL_VERTEX(1270, 0, 2723),\n    COL_VERTEX(922, 3072, 3072),\n    COL_VERTEX(1434, 4096, 2560),\n    COL_VERTEX(6244, -204, 2560),\n    COL_VERTEX(6244, 1126, 922),\n    COL_VERTEX(5579, 1126, 922),\n    COL_VERTEX(5579, -204, 922),\n    COL_VERTEX(1434, 0, 2560),\n    COL_VERTEX(410, 3072, 3072),\n    COL_VERTEX(410, 4096, 3584),\n    COL_VERTEX(410, 2048, 3738),\n    COL_VERTEX(410, 2048, 3584),\n    COL_VERTEX(4150, 922, 2560),\n    COL_VERTEX(3484, 922, 2560),\n    COL_VERTEX(5579, 922, 2560),\n    COL_VERTEX(3484, 0, 2560),\n    COL_VERTEX(4150, 1126, 922),\n    COL_VERTEX(3894, 461, 922),\n    COL_VERTEX(3484, 205, 922),\n    COL_VERTEX(4150, 205, 1434),\n    COL_VERTEX(4150, 205, 1024),\n    COL_VERTEX(4150, 0, 2048),\n    COL_VERTEX(-3631, 2560, 1872),\n    COL_VERTEX(-3631, 1536, 727),\n    COL_VERTEX(-4089, 0, 956),\n    COL_VERTEX(-3517, 1792, 613),\n    COL_VERTEX(-3654, 1792, 682),\n    COL_VERTEX(-3517, 1536, 613),\n    COL_VERTEX(-3631, 1536, 1872),\n    COL_VERTEX(-3357, 1536, 1735),\n    COL_VERTEX(-3586, 1536, 1277),\n    COL_VERTEX(-4089, 1536, 956),\n    COL_VERTEX(-3128, 1536, 1048),\n    COL_VERTEX(-3036, 1536, 430),\n    COL_VERTEX(-3654, 1536, 682),\n    COL_VERTEX(-3494, 1536, 659),\n    COL_VERTEX(7578, 4096, 6656),\n    COL_VERTEX(6554, 4096, 7680),\n    COL_VERTEX(1434, 4096, 7680),\n    COL_VERTEX(6554, 4096, 2560),\n    COL_VERTEX(7578, 4096, 3584),\n    COL_VERTEX(5988, -204, 870),\n    COL_VERTEX(5835, 51, 922),\n    COL_VERTEX(358, 2304, 3584),\n    COL_VERTEX(358, 2304, 3738),\n    COL_VERTEX(410, 2304, 3738),\n    COL_VERTEX(358, 2048, 3738),\n    COL_VERTEX(358, 2048, 3584),\n    COL_VERTEX(6554, 0, 7680),\n    COL_VERTEX(6554, 0, 6656),\n    COL_VERTEX(6554, 1024, 6656),\n    COL_VERTEX(1434, 0, 6656),\n    COL_VERTEX(7578, 0, 3584),\n    COL_VERTEX(6554, 0, 3584),\n    COL_VERTEX(7578, 1024, 3584),\n    COL_VERTEX(410, 0, 6656),\n    COL_VERTEX(410, 1024, 6656),\n    COL_VERTEX(410, 0, 4096),\n    COL_VERTEX(1434, 0, 4096),\n    COL_VERTEX(1434, 1024, 4608),\n    COL_VERTEX(410, 1024, 4608),\n    COL_VERTEX(922, 0, 5120),\n    COL_VERTEX(922, 0, 4608),\n    COL_VERTEX(7578, 0, 2560),\n    COL_VERTEX(-3677, 1536, 865),\n    COL_VERTEX(-3402, 1536, 613),\n    COL_VERTEX(-746, 0, 1575),\n    COL_VERTEX(-414, 0, 1038),\n    COL_VERTEX(1690, 0, 4608),\n    COL_VERTEX(1690, 0, 5120),\n    COL_VERTEX(3740, 461, 922),\n    COL_VERTEX(3894, 205, 870),\n    COL_VERTEX(-8089, 3072, 8064),\n    COL_VERTEX(-6860, 3072, 3558),\n    COL_VERTEX(-6245, 3072, 2534),\n    COL_VERTEX(-6860, 3072, 4890),\n    COL_VERTEX(-6860, 3072, 2534),\n    COL_VERTEX(-6245, 3072, 3558),\n    COL_VERTEX(-6245, 1741, 4890),\n    COL_VERTEX(-6860, 1905, 4890),\n    COL_VERTEX(-6245, 3072, 1510),\n    COL_VERTEX(-6245, 1536, 1510),\n    COL_VERTEX(-6860, 1536, 1510),\n    COL_VERTEX(307, 2304, 3738),\n    COL_VERTEX(307, 2048, 3738),\n    COL_VERTEX(307, 2048, 3584),\n    COL_VERTEX(307, 2048, 3251),\n    COL_VERTEX(307, 2304, 3584),\n    COL_VERTEX(307, 3072, 4070),\n    COL_VERTEX(-716, 2048, 4070),\n    COL_VERTEX(-204, 2048, 4070),\n    COL_VERTEX(-716, 2048, 3251),\n    COL_VERTEX(-204, 2048, 3251),\n    COL_VERTEX(-2559, 2048, 4070),\n    COL_VERTEX(-2969, 2048, 4480),\n    COL_VERTEX(-1945, 2048, 3763),\n    COL_VERTEX(-1637, 2048, 4070),\n    COL_VERTEX(-1330, 2048, 4070),\n    COL_VERTEX(-2252, 2048, 4378),\n    COL_VERTEX(-2764, 2048, 4890),\n    COL_VERTEX(-2969, 2048, 4685),\n    COL_VERTEX(-3847, 3072, 5428),\n    COL_VERTEX(-4273, 3072, 5855),\n    COL_VERTEX(-3481, 2048, 5402),\n    COL_VERTEX(-3437, 2048, 4609),\n    COL_VERTEX(-3437, 3072, 4609),\n    COL_VERTEX(-3276, 2048, 5094),\n    COL_VERTEX(-3890, 2048, 6118),\n    COL_VERTEX(-3583, 2048, 5811),\n    COL_VERTEX(-3173, 2048, 5914),\n    COL_VERTEX(-3788, 2048, 6528),\n    COL_VERTEX(-3173, 3072, 5914),\n    COL_VERTEX(-3788, 3072, 6528),\n    COL_VERTEX(-1524, 3072, 3251),\n    COL_VERTEX(-2635, 3072, 3807),\n    COL_VERTEX(-4800, 3072, 6118),\n    COL_VERTEX(-1330, 3072, 4070),\n    COL_VERTEX(-2149, 3072, 4480),\n    COL_VERTEX(-2764, 3072, 5094),\n    COL_VERTEX(-4607, 2048, 6938),\n    COL_VERTEX(-4607, 3072, 6938),\n    COL_VERTEX(-5631, 3072, 6118),\n    COL_VERTEX(-7474, 2161, 6528),\n    COL_VERTEX(-6553, 2161, 7450),\n    COL_VERTEX(-6962, 2048, 5606),\n    COL_VERTEX(-7474, 2048, 6118),\n    COL_VERTEX(-5631, 2048, 6118),\n    COL_VERTEX(-6553, 2048, 7450),\n    COL_VERTEX(-6143, 2048, 7450),\n    COL_VERTEX(-7167, 2161, 8064),\n    COL_VERTEX(-6860, 1843, 4582),\n    COL_VERTEX(-6860, 1761, 3763),\n    COL_VERTEX(-6860, 1331, 3558),\n    COL_VERTEX(-6860, 1024, 3558),\n    COL_VERTEX(-6860, 1024, 3354),\n    COL_VERTEX(-6860, 1331, 3763),\n    COL_VERTEX(-6245, 1741, 3558),\n    COL_VERTEX(-8089, 2161, 7142),\n    COL_VERTEX(-8089, 2161, 7654),\n    COL_VERTEX(-7679, 2161, 8064),\n    COL_VERTEX(307, 2048, 3840),\n    COL_VERTEX(307, 2048, 4070),\n    COL_VERTEX(205, 2048, 3482),\n    COL_VERTEX(-6860, 1536, 1613),\n    COL_VERTEX(4045, -4689, 2662),\n    COL_VERTEX(973, -3665, 1997),\n    COL_VERTEX(973, -3665, 2662),\n    COL_VERTEX(6605, -3665, 2662),\n    COL_VERTEX(4045, -7761, 1997),\n    COL_VERTEX(4045, -7761, 2662),\n    COL_VERTEX(4557, -7761, 2662),\n    COL_VERTEX(4557, -7761, 1997),\n    COL_VERTEX(-124, -4279, 6439),\n    COL_VERTEX(-631, -4279, 6946),\n    COL_VERTEX(20, -4279, 7598),\n    COL_VERTEX(-631, -3255, 6946),\n    COL_VERTEX(382, -4279, 6946),\n    COL_VERTEX(3351, -3255, 3108),\n    COL_VERTEX(3278, -3255, 3036),\n    COL_VERTEX(3278, -4279, 3036),\n    COL_VERTEX(3496, -3255, 3108),\n    COL_VERTEX(3568, -3255, 3036),\n    COL_VERTEX(-268, -4279, 6584),\n    COL_VERTEX(-305, -4279, 6548),\n    COL_VERTEX(889, -4279, 7598),\n    COL_VERTEX(2482, -3255, 6005),\n    COL_VERTEX(817, -4279, 6946),\n    COL_VERTEX(2120, -3255, 5643),\n    COL_VERTEX(455, -3255, 8032),\n    COL_VERTEX(1541, -4279, 5063),\n    COL_VERTEX(1541, -3255, 5063),\n    COL_VERTEX(3061, -3255, 6584),\n    COL_VERTEX(3351, -4279, 6584),\n    COL_VERTEX(3351, -3255, 6584),\n    COL_VERTEX(5089, -3255, 4846),\n    COL_VERTEX(5089, -4279, 4556),\n    COL_VERTEX(5089, -3255, 4556),\n    COL_VERTEX(1541, -3255, 4774),\n    COL_VERTEX(1396, -4279, 4919),\n    COL_VERTEX(3423, -4279, 2891),\n    COL_VERTEX(5233, -4279, 4701),\n    COL_VERTEX(2265, -4382, 4774),\n    COL_VERTEX(3351, -4382, 3688),\n    COL_VERTEX(1613, -3255, 4991),\n    COL_VERTEX(1613, -3255, 4846),\n    COL_VERTEX(3278, -3255, 6511),\n    COL_VERTEX(3134, -3255, 6511),\n    COL_VERTEX(5016, -3255, 4629),\n    COL_VERTEX(5016, -3255, 4774),\n    COL_VERTEX(-4300, 2867, -7807),\n    COL_VERTEX(-4300, 2867, -7295),\n    COL_VERTEX(-4812, 2867, -7295),\n    COL_VERTEX(-204, 2867, -5759),\n    COL_VERTEX(-4300, 2867, -5759),\n    COL_VERTEX(-4300, 2867, -8114),\n    COL_VERTEX(307, 614, -7781),\n    COL_VERTEX(-1427, -4484, 6288),\n    COL_VERTEX(-815, -4484, 5676),\n    COL_VERTEX(-1209, -4587, 5353),\n    COL_VERTEX(-851, -4587, 5712),\n    COL_VERTEX(-2862, -511, -4883),\n    COL_VERTEX(-2764, 2867, -5759),\n    COL_VERTEX(-2862, -1740, -4883),\n    COL_VERTEX(-2764, 1741, -5759),\n    COL_VERTEX(-2764, 1741, -7295),\n    COL_VERTEX(-2764, -2559, -7295),\n    COL_VERTEX(-4300, -2559, -7295),\n    COL_VERTEX(-6172, -1740, -3063),\n    COL_VERTEX(-5598, -2149, -1915),\n    COL_VERTEX(-4984, -2559, -1300),\n    COL_VERTEX(-4753, -3255, -537),\n    COL_VERTEX(-5580, -3255, -537),\n    COL_VERTEX(-5580, -5303, -537),\n    COL_VERTEX(-2303, -3255, -537),\n    COL_VERTEX(563, -3972, 1920),\n    COL_VERTEX(-1975, -5794, 444),\n    COL_VERTEX(-665, -4996, 2330),\n    COL_VERTEX(870, -3972, 2739),\n    COL_VERTEX(-869, -6020, 2227),\n    COL_VERTEX(-1484, -6327, 2534),\n    COL_VERTEX(-1427, -5740, 6288),\n    COL_VERTEX(-815, -5740, 5676),\n    COL_VERTEX(768, -4689, 2150),\n    COL_VERTEX(-341, -4023, 6511),\n    COL_VERTEX(-1484, -3255, 7654),\n    COL_VERTEX(-558, -4279, 6729),\n    COL_VERTEX(-341, -4279, 6511),\n    COL_VERTEX(-4812, 1843, -7807),\n    COL_VERTEX(-4709, 1843, -7295),\n    COL_VERTEX(3508, -409, -6962),\n    COL_VERTEX(3738, -409, -7781),\n    COL_VERTEX(-204, -409, -7904),\n    COL_VERTEX(3252, -409, -6962),\n    COL_VERTEX(3252, -409, -6911),\n    COL_VERTEX(-2897, 1843, -7807),\n    COL_VERTEX(-2897, 2867, -7807),\n    COL_VERTEX(-1740, 2867, -6578),\n    COL_VERTEX(-1740, 1843, -8114),\n    COL_VERTEX(-3788, 1843, -7295),\n    COL_VERTEX(-3788, 1741, -7295),\n    COL_VERTEX(-3276, 1741, -6783),\n    COL_VERTEX(-3788, 1741, -6783),\n    COL_VERTEX(-703, -4279, 6729),\n    COL_VERTEX(-716, 1843, -7090),\n    COL_VERTEX(-5580, -6327, 4582),\n    COL_VERTEX(-268, -4279, 6439),\n    COL_VERTEX(-7628, -3255, 1510),\n    COL_VERTEX(-4812, 1843, -7474),\n    COL_VERTEX(-4300, 1843, -5759),\n    COL_VERTEX(-204, 1843, -8114),\n    COL_VERTEX(-1740, -409, -8114),\n    COL_VERTEX(-204, -409, -6578),\n    COL_VERTEX(-1740, 1741, -8114),\n    COL_VERTEX(-1228, -511, -7602),\n    COL_VERTEX(-716, -511, -7090),\n    COL_VERTEX(-1228, -511, -7090),\n    COL_VERTEX(-716, 1741, -7602),\n    COL_VERTEX(-1228, 1741, -7090),\n    COL_VERTEX(-4812, 1843, -7628),\n    COL_VERTEX(-4914, 1843, -7295),\n    COL_VERTEX(3252, -409, -6860),\n    COL_VERTEX(3405, -409, -6860),\n    COL_VERTEX(-3276, 1741, -7295),\n    COL_VERTEX(1076, 614, -2252),\n    COL_VERTEX(-2047, 614, -2252),\n    COL_VERTEX(-2047, 614, -5119),\n    COL_VERTEX(-3583, 2355, -2943),\n    COL_VERTEX(-3583, 2355, -2585),\n    COL_VERTEX(-3583, -409, -3276),\n    COL_VERTEX(-3685, 2355, -2687),\n    COL_VERTEX(-3583, 3379, -2252),\n    COL_VERTEX(973, -409, -5119),\n    COL_VERTEX(973, -409, -4300),\n    COL_VERTEX(564, -409, -4300),\n    COL_VERTEX(52, -409, -3788),\n    COL_VERTEX(-3685, 2355, -2841),\n    COL_VERTEX(-767, -409, -3308),\n    COL_VERTEX(52, -409, -2764),\n    COL_VERTEX(-459, -409, -2252),\n    COL_VERTEX(1178, -409, -4633),\n    COL_VERTEX(1178, -409, -4786),\n    COL_VERTEX(-2559, 2253, -2764),\n    COL_VERTEX(-2559, 2355, -2252),\n    COL_VERTEX(-2047, 2355, -2252),\n    COL_VERTEX(-2047, 2355, -3276),\n    COL_VERTEX(-2559, 2253, -2252),\n    COL_VERTEX(-3071, 2253, -2764),\n    COL_VERTEX(-3071, 2253, -2252),\n    COL_VERTEX(-4607, 2810, -6578),\n    COL_VERTEX(-4607, 2810, -6988),\n    COL_VERTEX(-5426, 2810, -7295),\n    COL_VERTEX(-5426, 2810, -6271),\n    COL_VERTEX(-4914, 2810, -6271),\n    COL_VERTEX(-5426, 3630, -6271),\n    COL_VERTEX(-4914, 3630, -8191),\n    COL_VERTEX(-4914, 2810, -8191),\n    COL_VERTEX(-5631, 3630, -8191),\n    COL_VERTEX(-4914, 2810, -7807),\n    COL_VERTEX(-4582, 1536, 77),\n    COL_VERTEX(-3815, 1536, 590),\n    COL_VERTEX(-5411, 1536, 77),\n    COL_VERTEX(-3173, 3379, 384),\n    COL_VERTEX(-4582, 1024, 77),\n    COL_VERTEX(-6655, 1089, 691),\n    COL_VERTEX(-6962, 1275, 1408),\n    COL_VERTEX(-5718, 919, 691),\n    COL_VERTEX(-5733, 1536, 1408),\n    COL_VERTEX(-6392, 2458, -1099),\n    COL_VERTEX(-7083, 2458, -1539),\n    COL_VERTEX(-6753, 2458, -2057),\n    COL_VERTEX(-6373, 1536, 1408),\n    COL_VERTEX(-6553, 1536, -5247),\n    COL_VERTEX(-6962, 1577, -5654),\n    COL_VERTEX(-6553, 1536, -4223),\n    COL_VERTEX(-5017, 1843, -7807),\n    COL_VERTEX(-6143, 1792, -7039),\n    COL_VERTEX(-6553, 1331, -3199),\n    COL_VERTEX(-6553, 2810, -7295),\n    COL_VERTEX(-3685, 2355, -2943),\n    COL_VERTEX(-3685, 2355, -2585),\n    COL_VERTEX(-7781, 1331, -639),\n    COL_VERTEX(-6629, 1536, 1408),\n    COL_VERTEX(-5733, 3379, 1408),\n    COL_VERTEX(-5221, 2355, -2175),\n    COL_VERTEX(-3685, 1331, -1663),\n    COL_VERTEX(-4095, 2355, -1458),\n    COL_VERTEX(-4095, 3379, -1458),\n    COL_VERTEX(-4709, 3379, -3199),\n    COL_VERTEX(-3685, 3379, -3199),\n    COL_VERTEX(-5221, 1331, -1663),\n    COL_VERTEX(-6245, -2252, -879),\n    COL_VERTEX(-5871, -2252, -1253),\n    COL_VERTEX(-5391, -2252, -1253),\n    COL_VERTEX(-6245, -2252, -399),\n    COL_VERTEX(-5017, -2252, -879),\n    COL_VERTEX(-5017, -2252, -399),\n    COL_VERTEX(-5391, -2252, -25),\n    COL_VERTEX(-5871, -2252, -25),\n    COL_VERTEX(-5466, 2458, -455),\n    COL_VERTEX(-4749, 2458, -455),\n    COL_VERTEX(-4749, 2458, 261),\n    COL_VERTEX(-5426, 1331, -3199),\n    COL_VERTEX(-6143, 1792, -6783),\n    COL_VERTEX(-6553, 2697, -6271),\n    COL_VERTEX(-5426, 1229, -3199),\n    COL_VERTEX(-5785, 1792, -6783),\n    COL_VERTEX(-5785, 1741, -6783),\n    COL_VERTEX(3996, 205, 819),\n    COL_VERTEX(1690, 205, 819),\n    COL_VERTEX(1690, 205, -306),\n    COL_VERTEX(3740, 205, 819),\n    COL_VERTEX(6298, 1024, -306),\n    COL_VERTEX(6298, 1024, 819),\n    COL_VERTEX(1895, 102, -101),\n    COL_VERTEX(3740, 205, 870),\n    COL_VERTEX(3894, 205, 922),\n    COL_VERTEX(5681, -204, 205),\n    COL_VERTEX(6093, -204, 819),\n    COL_VERTEX(6298, -204, 205),\n    COL_VERTEX(6298, -204, 819),\n    COL_VERTEX(5681, -409, 205),\n    COL_VERTEX(5476, -409, 205),\n    COL_VERTEX(1280, -409, -4965),\n    COL_VERTEX(1178, -409, -4965),\n    COL_VERTEX(1690, -409, -4965),\n    COL_VERTEX(1690, -409, -4453),\n    COL_VERTEX(3533, -409, -6348),\n    COL_VERTEX(3124, -409, -6757),\n    COL_VERTEX(3533, -409, -6860),\n    COL_VERTEX(3124, -409, -6860),\n    COL_VERTEX(3533, 0, -6348),\n    COL_VERTEX(5476, -613, 205),\n    COL_VERTEX(5835, -204, 819),\n    COL_VERTEX(5835, 0, 819),\n    COL_VERTEX(4967, 0, 819),\n    COL_VERTEX(4967, 1024, 819),\n    COL_VERTEX(5988, 0, 819),\n    COL_VERTEX(2919, -869, 819),\n    COL_VERTEX(3328, 0, 819),\n    COL_VERTEX(2919, -869, -1125),\n    COL_VERTEX(2304, 0, 819),\n    COL_VERTEX(1690, -1023, 819),\n    COL_VERTEX(6298, -204, 410),\n    COL_VERTEX(6093, -204, 205),\n    COL_VERTEX(6093, -818, 205),\n    COL_VERTEX(4967, -818, 205),\n    COL_VERTEX(6298, 0, -4812),\n    COL_VERTEX(6298, -921, -4812),\n    COL_VERTEX(6298, -921, -4505),\n    COL_VERTEX(4660, -921, -5631),\n    COL_VERTEX(4660, -921, -4146),\n    COL_VERTEX(6298, -921, -4146),\n    COL_VERTEX(1690, 0, -6348),\n    COL_VERTEX(1690, 102, -4453),\n    COL_VERTEX(1895, -921, -3788),\n    COL_VERTEX(3431, -1023, -3788),\n    COL_VERTEX(1690, -1023, -2969),\n    COL_VERTEX(6298, 0, -1330),\n    COL_VERTEX(6298, 154, -1330),\n    COL_VERTEX(6298, -357, -1330),\n    COL_VERTEX(6298, -357, -1842),\n    COL_VERTEX(6298, 0, -2354),\n    COL_VERTEX(2714, 0, -6348),\n    COL_VERTEX(2714, -921, -5017),\n    COL_VERTEX(2100, -921, -4812),\n    COL_VERTEX(3328, -921, -5631),\n    COL_VERTEX(3636, -921, -5631),\n    COL_VERTEX(3943, -921, -5017),\n    COL_VERTEX(4250, -1023, -6041),\n    COL_VERTEX(2100, -921, -4607),\n    COL_VERTEX(3636, -1074, -5938),\n    COL_VERTEX(3431, -1074, -5938),\n    COL_VERTEX(3431, -1074, -6143),\n    COL_VERTEX(2509, -1023, -5529),\n    COL_VERTEX(2919, -1023, -5529),\n    COL_VERTEX(2714, -1023, -5733),\n    COL_VERTEX(2304, -921, -5938),\n    COL_VERTEX(2304, -921, -4402),\n    COL_VERTEX(4045, -1023, -4402),\n    COL_VERTEX(2304, -1023, -4402),\n    COL_VERTEX(4250, -1023, -4197),\n    COL_VERTEX(2509, -767, -4402),\n    COL_VERTEX(5581, -921, -3788),\n    COL_VERTEX(5581, -767, -3071),\n    COL_VERTEX(1895, 0, 102),\n    COL_VERTEX(4967, 0, 102),\n    COL_VERTEX(4864, -921, -3378),\n    COL_VERTEX(4864, -921, -4812),\n    COL_VERTEX(4864, -767, -3378),\n    COL_VERTEX(4660, -921, -5017),\n    COL_VERTEX(4660, -767, -3173),\n    COL_VERTEX(1690, -869, -2969),\n    COL_VERTEX(1895, -869, -3173),\n    COL_VERTEX(3636, -1023, -3378),\n    COL_VERTEX(2304, -801, -2149),\n    COL_VERTEX(2304, -801, -2354),\n    COL_VERTEX(2304, -767, -2149),\n    COL_VERTEX(2509, -767, -1945),\n    COL_VERTEX(2509, -1023, -2559),\n    COL_VERTEX(3533, -767, -1740),\n    COL_VERTEX(3533, -869, -1740),\n    COL_VERTEX(3533, -869, -511),\n    COL_VERTEX(3328, -767, -1945),\n    COL_VERTEX(5274, -1023, -2559),\n    COL_VERTEX(3738, -869, -306),\n    COL_VERTEX(5479, -921, -5631),\n    COL_VERTEX(3943, -869, -306),\n    COL_VERTEX(4660, -1023, -5631),\n    COL_VERTEX(4660, -1023, -3173),\n    COL_VERTEX(3943, -1023, -6348),\n    COL_VERTEX(4455, -1023, -3173),\n    COL_VERTEX(5479, -869, -2354),\n    COL_VERTEX(5479, -767, -2354),\n    COL_VERTEX(5274, -767, -2559),\n    COL_VERTEX(5479, -869, -2149),\n    COL_VERTEX(4352, -1023, -1945),\n    COL_VERTEX(5274, -1023, -1945),\n    COL_VERTEX(5274, -931, -1945),\n    COL_VERTEX(5274, -931, -1330),\n    COL_VERTEX(4967, -1023, -1330),\n    COL_VERTEX(5479, -869, -1125),\n    COL_VERTEX(5479, -869, -613),\n    COL_VERTEX(5684, -869, -409),\n    COL_VERTEX(4762, -869, 0),\n    COL_VERTEX(6093, -869, -409),\n    COL_VERTEX(4762, -1023, 0),\n    COL_VERTEX(4967, -1023, 205),\n    COL_VERTEX(4148, -869, -511),\n    COL_VERTEX(4148, -1023, -511),\n    COL_VERTEX(4148, -1023, -1740),\n    COL_VERTEX(2714, -767, -1330),\n    COL_VERTEX(2919, -767, -1125),\n    COL_VERTEX(2509, -767, -1330),\n    COL_VERTEX(2304, -767, -1125),\n    COL_VERTEX(2304, -1023, -1125),\n    COL_VERTEX(3533, -767, -1945),\n    COL_VERTEX(3840, -869, 307),\n    COL_VERTEX(4352, -869, 307),\n    COL_VERTEX(4762, -869, 819),\n    COL_VERTEX(4967, -818, 819),\n    COL_VERTEX(3431, -1023, -4402),\n    COL_VERTEX(3431, -1023, -2559),\n    COL_VERTEX(4557, -1023, -2559),\n    COL_VERTEX(5581, -767, -3378),\n    COL_VERTEX(4557, -767, -3378),\n    COL_VERTEX(2509, -767, -1023),\n    COL_VERTEX(2509, -767, -2252),\n    COL_VERTEX(1690, -767, -2252),\n    COL_VERTEX(6298, -869, -409),\n    COL_VERTEX(4148, -1023, -1125),\n    COL_VERTEX(4148, -1023, -1945),\n    COL_VERTEX(4762, -869, -511),\n    COL_VERTEX(4864, -921, -4146),\n    COL_VERTEX(4557, -1023, -3173),\n    COL_VERTEX(4557, -767, -2559),\n    COL_VERTEX(2816, -767, -4402),\n    COL_VERTEX(1690, -869, -2559),\n    COL_VERTEX(1690, -869, -3173),\n    COL_VERTEX(2304, -767, -1023),\n    COL_VERTEX(5835, -204, 870),\n    COL_VERTEX(3636, -1023, -3583),\n    COL_VERTEX(4250, -1023, -3378),\n    COL_VERTEX(-814, 922, 638),\n    COL_VERTEX(6244, 1126, 2560),\n    COL_VERTEX(3484, 1126, 2560),\n    COL_VERTEX(5530, 0, 4403),\n    COL_VERTEX(5018, 1024, 4915),\n    COL_VERTEX(4506, 1024, 4403),\n    COL_VERTEX(5018, 1024, 4403),\n    COL_VERTEX(5579, -204, 1024),\n    COL_VERTEX(5579, -204, 1331),\n    COL_VERTEX(6244, -204, 922),\n    COL_VERTEX(1843, 614, 7270),\n    COL_VERTEX(1843, 614, 7680),\n    COL_VERTEX(1843, 410, 7066),\n    COL_VERTEX(1843, 205, 6861),\n    COL_VERTEX(1434, 0, 6861),\n    COL_VERTEX(5579, 0, 1331),\n    COL_VERTEX(6244, 0, 1331),\n    COL_VERTEX(5579, 205, 1434),\n    COL_VERTEX(6244, 205, 1434),\n    COL_VERTEX(1843, 0, 7680),\n    COL_VERTEX(1638, 1946, 6963),\n    COL_VERTEX(1638, 1946, 6758),\n    COL_VERTEX(2048, 1946, 6758),\n    COL_VERTEX(3072, 1946, 6758),\n    COL_VERTEX(1434, 1946, 6758),\n    COL_VERTEX(3072, 1946, 6963),\n    COL_VERTEX(3482, 2048, 6758),\n    COL_VERTEX(3482, 1946, 6349),\n    COL_VERTEX(1434, 1946, 6349),\n    COL_VERTEX(6264, 1843, 5073),\n    COL_VERTEX(6336, 1843, 5146),\n    COL_VERTEX(6336, 1946, 5146),\n    COL_VERTEX(6626, 2048, 5435),\n    COL_VERTEX(6626, 1843, 5435),\n    COL_VERTEX(6554, 1843, 5363),\n    COL_VERTEX(6192, 1946, 5146),\n    COL_VERTEX(6626, 1946, 5435),\n    COL_VERTEX(5685, 1843, 5797),\n    COL_VERTEX(5612, 1843, 5725),\n    COL_VERTEX(5685, 1946, 5797),\n    COL_VERTEX(5974, 1946, 6087),\n    COL_VERTEX(5974, 1843, 6087),\n    COL_VERTEX(5902, 1843, 6015),\n    COL_VERTEX(5974, 2048, 6087),\n    COL_VERTEX(5540, 1946, 5797),\n    COL_VERTEX(5579, 205, 2560),\n    COL_VERTEX(4150, 1126, 2560),\n    COL_VERTEX(4150, 0, 922),\n    COL_VERTEX(-3494, 1792, 659),\n    COL_VERTEX(-4089, 2560, 956),\n    COL_VERTEX(-1926, 0, 534),\n    COL_VERTEX(-2120, 0, 1117),\n    COL_VERTEX(5988, -204, 922),\n    COL_VERTEX(5835, -204, 922),\n    COL_VERTEX(410, 3072, 3584),\n    COL_VERTEX(5579, 1126, 2560),\n    COL_VERTEX(5579, -204, 2560),\n    COL_VERTEX(410, 4096, 6656),\n    COL_VERTEX(6554, 0, 2560),\n    COL_VERTEX(3484, 205, 1434),\n    COL_VERTEX(3484, 0, 2048),\n    COL_VERTEX(4150, 205, 922),\n    COL_VERTEX(3740, 205, 922),\n    COL_VERTEX(3484, 205, 1024),\n    COL_VERTEX(-3586, 1434, 1277),\n    COL_VERTEX(-3357, 1434, 1735),\n    COL_VERTEX(-3128, 1434, 1048),\n    COL_VERTEX(-3357, 1536, 705),\n    COL_VERTEX(-2899, 1434, 1506),\n    COL_VERTEX(-2899, 1536, 1506),\n    COL_VERTEX(-2578, 1536, 1346),\n    COL_VERTEX(-3723, 1536, 773),\n    COL_VERTEX(6554, 1024, 7680),\n    COL_VERTEX(1434, 0, 7680),\n    COL_VERTEX(1434, 1024, 7680),\n    COL_VERTEX(7578, 1024, 6656),\n    COL_VERTEX(7578, 0, 6656),\n    COL_VERTEX(6554, 1024, 2560),\n    COL_VERTEX(410, 2304, 3584),\n    COL_VERTEX(1434, 1024, 6656),\n    COL_VERTEX(6554, 1024, 3584),\n    COL_VERTEX(1434, 1024, 4096),\n    COL_VERTEX(410, 1024, 4096),\n    COL_VERTEX(1434, 0, 4608),\n    COL_VERTEX(410, 0, 4608),\n    COL_VERTEX(410, 0, 7680),\n    COL_VERTEX(7578, 0, 7680),\n    COL_VERTEX(410, 0, 2560),\n    COL_VERTEX(410, 3072, 4096),\n    COL_VERTEX(922, 3072, 4096),\n    COL_VERTEX(-8089, 3072, 1510),\n    COL_VERTEX(307, 3072, 1510),\n    COL_VERTEX(307, 3072, 8064),\n    COL_VERTEX(-6860, -1535, 3558),\n    COL_VERTEX(-6245, 1536, 2534),\n    COL_VERTEX(-6245, -1535, 2534),\n    COL_VERTEX(-6860, 1536, 2534),\n    COL_VERTEX(-6245, -1535, 3558),\n    COL_VERTEX(-6860, 1741, 4890),\n    COL_VERTEX(-6860, 1741, 3558),\n    COL_VERTEX(-6962, 3072, 5606),\n    COL_VERTEX(-6860, 3072, 1510),\n    COL_VERTEX(-6245, 3072, 4890),\n    COL_VERTEX(-6143, 2048, 5606),\n    COL_VERTEX(-6143, 3072, 5606),\n    COL_VERTEX(-6245, 1905, 4890),\n    COL_VERTEX(-6245, 1536, 1613),\n    COL_VERTEX(307, 3072, 3251),\n    COL_VERTEX(-716, -1535, 4070),\n    COL_VERTEX(-716, -1535, 3251),\n    COL_VERTEX(-204, -1535, 4070),\n    COL_VERTEX(-204, -1535, 3251),\n    COL_VERTEX(-1524, 2048, 3251),\n    COL_VERTEX(-2149, 2048, 4480),\n    COL_VERTEX(-2559, -1535, 4070),\n    COL_VERTEX(-1945, -1535, 3763),\n    COL_VERTEX(-2635, 2048, 3807),\n    COL_VERTEX(-2969, -1535, 4480),\n    COL_VERTEX(-1637, -1535, 4070),\n    COL_VERTEX(-2252, -1535, 4378),\n    COL_VERTEX(-2764, -1535, 4890),\n    COL_VERTEX(-2764, 2048, 5094),\n    COL_VERTEX(-2969, -1535, 4685),\n    COL_VERTEX(-3437, -1535, 4609),\n    COL_VERTEX(-3847, -1535, 5428),\n    COL_VERTEX(-3847, 2048, 5428),\n    COL_VERTEX(-3276, -1535, 5094),\n    COL_VERTEX(-4273, 2048, 5855),\n    COL_VERTEX(-3481, -1535, 5402),\n    COL_VERTEX(-3788, -1535, 6528),\n    COL_VERTEX(-3173, -1535, 5914),\n    COL_VERTEX(-3583, -1535, 5811),\n    COL_VERTEX(-3890, -1535, 6118),\n    COL_VERTEX(-4800, 2048, 6118),\n    COL_VERTEX(-5631, 2048, 6938),\n    COL_VERTEX(-5631, 3072, 6938),\n    COL_VERTEX(-7474, 2048, 6528),\n    COL_VERTEX(-7474, 3072, 6118),\n    COL_VERTEX(-7474, 3072, 6528),\n    COL_VERTEX(-8089, 3072, 7142),\n    COL_VERTEX(-6143, 3072, 7450),\n    COL_VERTEX(-6553, 3072, 7450),\n    COL_VERTEX(-7167, 3072, 8064),\n    COL_VERTEX(-6245, 1843, 4582),\n    COL_VERTEX(-6245, 1761, 3763),\n    COL_VERTEX(-6245, 1331, 3558),\n    COL_VERTEX(-6245, 1024, 3558),\n    COL_VERTEX(-6245, 1024, 3354),\n    COL_VERTEX(-6245, -1535, 3354),\n    COL_VERTEX(-6860, -1535, 3354),\n    COL_VERTEX(-6245, 1331, 3763),\n    COL_VERTEX(-8089, 3072, 7654),\n    COL_VERTEX(-7679, 3072, 8064),\n    COL_VERTEX(205, 2048, 3840),\n    COL_VERTEX(307, 2048, 3482),\n    COL_TRI_INIT(SURFACE_DEFAULT, 1861),\n    COL_TRI(243, 246, 244),\n    COL_TRI(234, 235, 236),\n    COL_TRI(234, 236, 237),\n    COL_TRI(238, 234, 237),\n    COL_TRI(238, 239, 234),\n    COL_TRI(236, 235, 240),\n    COL_TRI(236, 240, 241),\n    COL_TRI(238, 241, 240),\n    COL_TRI(238, 240, 239),\n    COL_TRI(242, 243, 244),\n    COL_TRI(242, 244, 245),\n    COL_TRI(250, 994, 995),\n    COL_TRI(243, 247, 246),\n    COL_TRI(248, 252, 992),\n    COL_TRI(248, 992, 255),\n    COL_TRI(249, 993, 247),\n    COL_TRI(249, 247, 253),\n    COL_TRI(250, 246, 994),\n    COL_TRI(251, 4, 245),\n    COL_TRI(246, 240, 235),\n    COL_TRI(246, 235, 994),\n    COL_TRI(235, 234, 993),\n    COL_TRI(235, 993, 994),\n    COL_TRI(234, 247, 993),\n    COL_TRI(234, 239, 247),\n    COL_TRI(245, 4, 6),\n    COL_TRI(245, 6, 242),\n    COL_TRI(242, 6, 5),\n    COL_TRI(242, 5, 254),\n    COL_TRI(251, 7, 4),\n    COL_TRI(252, 996, 997),\n    COL_TRI(252, 997, 992),\n    COL_TRI(253, 251, 250),\n    COL_TRI(254, 5, 7),\n    COL_TRI(254, 7, 251),\n    COL_TRI(256, 1001, 3),\n    COL_TRI(250, 995, 249),\n    COL_TRI(250, 249, 253),\n    COL_TRI(253, 254, 251),\n    COL_TRI(255, 998, 999),\n    COL_TRI(255, 999, 248),\n    COL_TRI(256, 1000, 1001),\n    COL_TRI(259, 1008, 1005),\n    COL_TRI(257, 1002, 1001),\n    COL_TRI(257, 1001, 1003),\n    COL_TRI(258, 1000, 1004),\n    COL_TRI(259, 1005, 260),\n    COL_TRI(260, 1005, 1006),\n    COL_TRI(260, 1006, 1007),\n    COL_TRI(261, 1008, 259),\n    COL_TRI(261, 1009, 1008),\n    COL_TRI(262, 265, 263),\n    COL_TRI(262, 263, 264),\n    COL_TRI(263, 1010, 1000),\n    COL_TRI(263, 1000, 258),\n    COL_TRI(263, 265, 1010),\n    COL_TRI(264, 263, 258),\n    COL_TRI(265, 1011, 1010),\n    COL_TRI(262, 266, 384),\n    COL_TRI(262, 264, 266),\n    COL_TRI(264, 258, 1003),\n    COL_TRI(264, 1003, 1001),\n    COL_TRI(264, 1001, 266),\n    COL_TRI(266, 1010, 1011),\n    COL_TRI(266, 1011, 384),\n    COL_TRI(269, 271, 1015),\n    COL_TRI(267, 1012, 1002),\n    COL_TRI(267, 1002, 257),\n    COL_TRI(2, 1012, 267),\n    COL_TRI(2, 267, 1013),\n    COL_TRI(258, 1004, 268),\n    COL_TRI(268, 1004, 1014),\n    COL_TRI(268, 1014, 269),\n    COL_TRI(269, 1014, 271),\n    COL_TRI(273, 1021, 1022),\n    COL_TRI(270, 1013, 1016),\n    COL_TRI(271, 1017, 1018),\n    COL_TRI(271, 1018, 1015),\n    COL_TRI(272, 2, 1013),\n    COL_TRI(272, 1013, 1019),\n    COL_TRI(273, 1020, 1021),\n    COL_TRI(276, 278, 275),\n    COL_TRI(261, 1023, 1024),\n    COL_TRI(261, 1024, 1009),\n    COL_TRI(274, 1006, 1025),\n    COL_TRI(274, 1007, 1006),\n    COL_TRI(275, 277, 1026),\n    COL_TRI(275, 1026, 276),\n    COL_TRI(280, 53, 1029),\n    COL_TRI(277, 1027, 1026),\n    COL_TRI(276, 1028, 278),\n    COL_TRI(277, 279, 1027),\n    COL_TRI(278, 1028, 1027),\n    COL_TRI(279, 278, 1027),\n    COL_TRI(278, 280, 275),\n    COL_TRI(278, 281, 280),\n    COL_TRI(279, 281, 278),\n    COL_TRI(280, 43, 45),\n    COL_TRI(280, 45, 53),\n    COL_TRI(53, 51, 1029),\n    COL_TRI(51, 1030, 1029),\n    COL_TRI(281, 41, 43),\n    COL_TRI(281, 43, 280),\n    COL_TRI(51, 49, 1030),\n    COL_TRI(49, 47, 1030),\n    COL_TRI(47, 281, 1030),\n    COL_TRI(47, 39, 281),\n    COL_TRI(39, 41, 281),\n    COL_TRI(282, 1031, 283),\n    COL_TRI(283, 1031, 1018),\n    COL_TRI(283, 1018, 1017),\n    COL_TRI(282, 1032, 1031),\n    COL_TRI(274, 1032, 282),\n    COL_TRI(274, 1025, 1032),\n    COL_TRI(284, 1033, 285),\n    COL_TRI(285, 1033, 1021),\n    COL_TRI(285, 1021, 1020),\n    COL_TRI(273, 1022, 1036),\n    COL_TRI(284, 1034, 1033),\n    COL_TRI(272, 1034, 284),\n    COL_TRI(272, 1019, 1034),\n    COL_TRI(286, 1035, 287),\n    COL_TRI(287, 1035, 1024),\n    COL_TRI(287, 1024, 1023),\n    COL_TRI(286, 1036, 1035),\n    COL_TRI(273, 1036, 286),\n    COL_TRI(289, 1041, 1042),\n    COL_TRI(280, 1029, 277),\n    COL_TRI(275, 280, 277),\n    COL_TRI(277, 1029, 1030),\n    COL_TRI(277, 1030, 279),\n    COL_TRI(279, 1030, 281),\n    COL_TRI(288, 1037, 1038),\n    COL_TRI(288, 1038, 1039),\n    COL_TRI(289, 1040, 1041),\n    COL_TRI(294, 1044, 293),\n    COL_TRI(290, 419, 1043),\n    COL_TRI(290, 1043, 365),\n    COL_TRI(291, 1044, 1045),\n    COL_TRI(291, 293, 1044),\n    COL_TRI(292, 293, 1046),\n    COL_TRI(293, 291, 1046),\n    COL_TRI(296, 1049, 297),\n    COL_TRI(291, 1045, 1047),\n    COL_TRI(294, 293, 292),\n    COL_TRI(291, 1047, 1046),\n    COL_TRI(295, 1048, 297),\n    COL_TRI(296, 297, 298),\n    COL_TRI(297, 1048, 298),\n    COL_TRI(303, 299, 310),\n    COL_TRI(298, 1048, 1050),\n    COL_TRI(295, 1050, 1048),\n    COL_TRI(298, 1050, 309),\n    COL_TRI(296, 298, 299),\n    COL_TRI(299, 298, 309),\n    COL_TRI(300, 296, 302),\n    COL_TRI(296, 299, 302),\n    COL_TRI(301, 1041, 296),\n    COL_TRI(302, 299, 303),\n    COL_TRI(299, 309, 310),\n    COL_TRI(306, 307, 300),\n    COL_TRI(304, 302, 303),\n    COL_TRI(305, 306, 302),\n    COL_TRI(306, 300, 302),\n    COL_TRI(305, 302, 304),\n    COL_TRI(307, 301, 300),\n    COL_TRI(301, 296, 300),\n    COL_TRI(295, 1051, 1052),\n    COL_TRI(295, 1052, 1053),\n    COL_TRI(307, 1054, 301),\n    COL_TRI(308, 1050, 295),\n    COL_TRI(309, 1050, 308),\n    COL_TRI(195, 308, 196),\n    COL_TRI(196, 308, 295),\n    COL_TRI(309, 308, 195),\n    COL_TRI(197, 196, 295),\n    COL_TRI(204, 201, 307),\n    COL_TRI(204, 307, 306),\n    COL_TRI(310, 309, 195),\n    COL_TRI(301, 1038, 1041),\n    COL_TRI(296, 1041, 1049),\n    COL_TRI(200, 199, 1054),\n    COL_TRI(201, 200, 307),\n    COL_TRI(200, 1054, 307),\n    COL_TRI(199, 1053, 1054),\n    COL_TRI(312, 305, 304),\n    COL_TRI(310, 195, 198),\n    COL_TRI(206, 204, 306),\n    COL_TRI(206, 306, 305),\n    COL_TRI(303, 310, 311),\n    COL_TRI(311, 310, 198),\n    COL_TRI(311, 198, 207),\n    COL_TRI(224, 206, 305),\n    COL_TRI(224, 305, 312),\n    COL_TRI(317, 314, 210),\n    COL_TRI(313, 303, 311),\n    COL_TRI(313, 311, 314),\n    COL_TRI(314, 311, 207),\n    COL_TRI(314, 207, 210),\n    COL_TRI(312, 304, 1055),\n    COL_TRI(225, 224, 312),\n    COL_TRI(315, 312, 1055),\n    COL_TRI(225, 312, 315),\n    COL_TRI(316, 313, 314),\n    COL_TRI(316, 314, 317),\n    COL_TRI(320, 317, 319),\n    COL_TRI(317, 210, 213),\n    COL_TRI(315, 1055, 1056),\n    COL_TRI(226, 225, 315),\n    COL_TRI(318, 315, 1057),\n    COL_TRI(315, 1056, 1057),\n    COL_TRI(226, 315, 318),\n    COL_TRI(319, 317, 213),\n    COL_TRI(320, 316, 317),\n    COL_TRI(322, 1057, 325),\n    COL_TRI(319, 213, 216),\n    COL_TRI(199, 197, 1053),\n    COL_TRI(197, 295, 1053),\n    COL_TRI(321, 1054, 1053),\n    COL_TRI(321, 1053, 1052),\n    COL_TRI(322, 318, 1057),\n    COL_TRI(226, 318, 322),\n    COL_TRI(323, 320, 319),\n    COL_TRI(323, 319, 324),\n    COL_TRI(324, 319, 217),\n    COL_TRI(319, 216, 217),\n    COL_TRI(220, 226, 322),\n    COL_TRI(325, 326, 322),\n    COL_TRI(322, 326, 220),\n    COL_TRI(325, 1058, 326),\n    COL_TRI(227, 326, 1060),\n    COL_TRI(326, 1059, 1060),\n    COL_TRI(326, 1058, 1059),\n    COL_TRI(227, 220, 326),\n    COL_TRI(228, 327, 217),\n    COL_TRI(217, 327, 324),\n    COL_TRI(327, 1061, 323),\n    COL_TRI(324, 327, 323),\n    COL_TRI(328, 1061, 327),\n    COL_TRI(229, 1060, 347),\n    COL_TRI(228, 229, 347),\n    COL_TRI(327, 228, 347),\n    COL_TRI(221, 227, 1060),\n    COL_TRI(222, 231, 330),\n    COL_TRI(231, 350, 330),\n    COL_TRI(231, 230, 350),\n    COL_TRI(329, 337, 350),\n    COL_TRI(229, 221, 1060),\n    COL_TRI(332, 222, 336),\n    COL_TRI(222, 330, 336),\n    COL_TRI(330, 348, 1062),\n    COL_TRI(330, 344, 348),\n    COL_TRI(230, 233, 329),\n    COL_TRI(230, 329, 350),\n    COL_TRI(331, 332, 1063),\n    COL_TRI(223, 222, 1064),\n    COL_TRI(332, 1064, 222),\n    COL_TRI(333, 332, 1066),\n    COL_TRI(332, 331, 1066),\n    COL_TRI(333, 334, 332),\n    COL_TRI(223, 1064, 332),\n    COL_TRI(334, 223, 332),\n    COL_TRI(332, 335, 1063),\n    COL_TRI(335, 336, 1063),\n    COL_TRI(336, 347, 1063),\n    COL_TRI(329, 334, 337),\n    COL_TRI(334, 329, 223),\n    COL_TRI(337, 334, 333),\n    COL_TRI(223, 232, 222),\n    COL_TRI(329, 233, 223),\n    COL_TRI(338, 381, 337),\n    COL_TRI(338, 337, 333),\n    COL_TRI(339, 340, 342),\n    COL_TRI(340, 343, 342),\n    COL_TRI(341, 1065, 340),\n    COL_TRI(341, 340, 339),\n    COL_TRI(342, 343, 1070),\n    COL_TRI(343, 346, 1070),\n    COL_TRI(330, 342, 1070),\n    COL_TRI(330, 339, 342),\n    COL_TRI(341, 339, 350),\n    COL_TRI(344, 330, 1070),\n    COL_TRI(345, 336, 330),\n    COL_TRI(345, 330, 1062),\n    COL_TRI(346, 344, 1070),\n    COL_TRI(345, 1062, 341),\n    COL_TRI(349, 385, 1071),\n    COL_TRI(347, 345, 328),\n    COL_TRI(347, 336, 345),\n    COL_TRI(345, 341, 349),\n    COL_TRI(341, 350, 349),\n    COL_TRI(348, 1065, 341),\n    COL_TRI(348, 341, 1062),\n    COL_TRI(349, 1071, 383),\n    COL_TRI(349, 383, 1072),\n    COL_TRI(351, 338, 95),\n    COL_TRI(350, 337, 381),\n    COL_TRI(350, 381, 349),\n    COL_TRI(333, 1066, 1067),\n    COL_TRI(338, 333, 1067),\n    COL_TRI(338, 351, 1068),\n    COL_TRI(338, 1068, 1069),\n    COL_TRI(338, 1069, 381),\n    COL_TRI(95, 338, 1067),\n    COL_TRI(354, 236, 241),\n    COL_TRI(352, 1067, 1066),\n    COL_TRI(344, 356, 353),\n    COL_TRI(344, 353, 348),\n    COL_TRI(353, 354, 1065),\n    COL_TRI(353, 1065, 348),\n    COL_TRI(354, 340, 1065),\n    COL_TRI(354, 355, 340),\n    COL_TRI(353, 236, 354),\n    COL_TRI(354, 241, 355),\n    COL_TRI(355, 241, 238),\n    COL_TRI(355, 238, 356),\n    COL_TRI(353, 237, 236),\n    COL_TRI(356, 237, 353),\n    COL_TRI(356, 238, 237),\n    COL_TRI(352, 1066, 331),\n    COL_TRI(357, 352, 347),\n    COL_TRI(358, 1075, 393),\n    COL_TRI(358, 393, 1076),\n    COL_TRI(359, 360, 362),\n    COL_TRI(360, 361, 362),\n    COL_TRI(360, 420, 404),\n    COL_TRI(360, 404, 419),\n    COL_TRI(361, 364, 362),\n    COL_TRI(361, 1077, 364),\n    COL_TRI(359, 362, 1078),\n    COL_TRI(362, 364, 1078),\n    COL_TRI(363, 1079, 359),\n    COL_TRI(363, 359, 1043),\n    COL_TRI(359, 1078, 365),\n    COL_TRI(359, 365, 1043),\n    COL_TRI(364, 366, 1078),\n    COL_TRI(364, 1077, 366),\n    COL_TRI(365, 1078, 366),\n    COL_TRI(365, 366, 290),\n    COL_TRI(366, 423, 424),\n    COL_TRI(290, 366, 424),\n    COL_TRI(373, 369, 358),\n    COL_TRI(367, 368, 1082),\n    COL_TRI(368, 1083, 1082),\n    COL_TRI(369, 370, 1084),\n    COL_TRI(369, 1084, 372),\n    COL_TRI(288, 369, 370),\n    COL_TRI(370, 369, 1085),\n    COL_TRI(288, 1075, 369),\n    COL_TRI(371, 369, 373),\n    COL_TRI(372, 369, 428),\n    COL_TRI(369, 371, 428),\n    COL_TRI(372, 1049, 1084),\n    COL_TRI(374, 372, 428),\n    COL_TRI(375, 1085, 372),\n    COL_TRI(376, 375, 372),\n    COL_TRI(372, 1085, 369),\n    COL_TRI(372, 374, 1049),\n    COL_TRI(370, 1085, 398),\n    COL_TRI(377, 1068, 378),\n    COL_TRI(378, 1068, 379),\n    COL_TRI(378, 379, 380),\n    COL_TRI(378, 380, 1090),\n    COL_TRI(351, 379, 1068),\n    COL_TRI(351, 386, 379),\n    COL_TRI(379, 386, 387),\n    COL_TRI(379, 387, 1072),\n    COL_TRI(380, 429, 1090),\n    COL_TRI(377, 1069, 1068),\n    COL_TRI(377, 378, 1090),\n    COL_TRI(383, 262, 384),\n    COL_TRI(381, 1069, 377),\n    COL_TRI(381, 377, 385),\n    COL_TRI(377, 1090, 382),\n    COL_TRI(377, 382, 385),\n    COL_TRI(382, 1093, 385),\n    COL_TRI(99, 388, 351),\n    COL_TRI(351, 95, 99),\n    COL_TRI(351, 388, 386),\n    COL_TRI(384, 1011, 1074),\n    COL_TRI(383, 384, 1073),\n    COL_TRI(265, 1071, 1074),\n    COL_TRI(265, 1074, 1011),\n    COL_TRI(383, 1071, 265),\n    COL_TRI(383, 265, 262),\n    COL_TRI(384, 1074, 1073),\n    COL_TRI(388, 100, 103),\n    COL_TRI(383, 380, 1072),\n    COL_TRI(383, 1073, 380),\n    COL_TRI(385, 1074, 1071),\n    COL_TRI(386, 388, 1092),\n    COL_TRI(386, 1092, 390),\n    COL_TRI(387, 386, 390),\n    COL_TRI(357, 90, 352),\n    COL_TRI(388, 103, 1092),\n    COL_TRI(99, 100, 388),\n    COL_TRI(95, 1067, 94),\n    COL_TRI(90, 94, 1067),\n    COL_TRI(90, 1067, 352),\n    COL_TRI(389, 1092, 103),\n    COL_TRI(389, 103, 105),\n    COL_TRI(389, 93, 357),\n    COL_TRI(389, 105, 93),\n    COL_TRI(357, 93, 90),\n    COL_TRI(328, 327, 347),\n    COL_TRI(390, 1092, 389),\n    COL_TRI(390, 389, 392),\n    COL_TRI(387, 390, 391),\n    COL_TRI(391, 390, 392),\n    COL_TRI(392, 389, 1060),\n    COL_TRI(392, 1060, 1059),\n    COL_TRI(392, 1059, 1094),\n    COL_TRI(391, 392, 1094),\n    COL_TRI(389, 357, 1060),\n    COL_TRI(357, 347, 1060),\n    COL_TRI(393, 1095, 395),\n    COL_TRI(393, 395, 1039),\n    COL_TRI(393, 1039, 1038),\n    COL_TRI(393, 1038, 373),\n    COL_TRI(394, 373, 1096),\n    COL_TRI(394, 1086, 373),\n    COL_TRI(373, 358, 1076),\n    COL_TRI(395, 288, 1039),\n    COL_TRI(374, 394, 1096),\n    COL_TRI(374, 428, 394),\n    COL_TRI(396, 1097, 1085),\n    COL_TRI(375, 396, 1085),\n    COL_TRI(376, 1091, 375),\n    COL_TRI(396, 397, 1097),\n    COL_TRI(397, 376, 1097),\n    COL_TRI(397, 1091, 376),\n    COL_TRI(398, 1098, 399),\n    COL_TRI(398, 399, 289),\n    COL_TRI(399, 363, 289),\n    COL_TRI(363, 401, 289),\n    COL_TRI(400, 402, 1098),\n    COL_TRI(400, 1098, 1100),\n    COL_TRI(401, 402, 1084),\n    COL_TRI(402, 407, 408),\n    COL_TRI(402, 408, 1098),\n    COL_TRI(401, 1099, 402),\n    COL_TRI(403, 407, 402),\n    COL_TRI(403, 402, 1099),\n    COL_TRI(404, 1099, 401),\n    COL_TRI(363, 404, 401),\n    COL_TRI(397, 396, 406),\n    COL_TRI(397, 406, 1104),\n    COL_TRI(405, 397, 1104),\n    COL_TRI(405, 1091, 397),\n    COL_TRI(405, 1105, 375),\n    COL_TRI(405, 375, 1091),\n    COL_TRI(406, 396, 375),\n    COL_TRI(406, 375, 1105),\n    COL_TRI(404, 420, 1099),\n    COL_TRI(407, 1101, 408),\n    COL_TRI(408, 1101, 410),\n    COL_TRI(408, 410, 409),\n    COL_TRI(408, 409, 399),\n    COL_TRI(408, 399, 1098),\n    COL_TRI(399, 1079, 363),\n    COL_TRI(409, 1099, 399),\n    COL_TRI(409, 410, 1102),\n    COL_TRI(409, 1102, 403),\n    COL_TRI(409, 403, 1099),\n    COL_TRI(414, 412, 415),\n    COL_TRI(403, 1102, 1103),\n    COL_TRI(403, 1103, 407),\n    COL_TRI(407, 1103, 1101),\n    COL_TRI(410, 1101, 1103),\n    COL_TRI(410, 1103, 1102),\n    COL_TRI(411, 1095, 412),\n    COL_TRI(412, 1095, 1106),\n    COL_TRI(412, 1106, 415),\n    COL_TRI(413, 412, 414),\n    COL_TRI(413, 411, 412),\n    COL_TRI(415, 1106, 418),\n    COL_TRI(415, 418, 416),\n    COL_TRI(411, 395, 1095),\n    COL_TRI(416, 418, 395),\n    COL_TRI(416, 395, 411),\n    COL_TRI(417, 416, 411),\n    COL_TRI(417, 411, 413),\n    COL_TRI(395, 418, 288),\n    COL_TRI(421, 424, 426),\n    COL_TRI(418, 1075, 288),\n    COL_TRI(418, 1106, 1075),\n    COL_TRI(290, 424, 421),\n    COL_TRI(419, 290, 421),\n    COL_TRI(420, 359, 1079),\n    COL_TRI(360, 419, 421),\n    COL_TRI(422, 426, 650),\n    COL_TRI(421, 426, 422),\n    COL_TRI(422, 650, 427),\n    COL_TRI(423, 1080, 1081),\n    COL_TRI(423, 1081, 425),\n    COL_TRI(424, 423, 425),\n    COL_TRI(425, 1081, 1108),\n    COL_TRI(425, 1108, 1109),\n    COL_TRI(426, 425, 1109),\n    COL_TRI(424, 425, 426),\n    COL_TRI(420, 360, 359),\n    COL_TRI(427, 1081, 422),\n    COL_TRI(422, 1081, 1080),\n    COL_TRI(422, 1080, 421),\n    COL_TRI(360, 421, 1080),\n    COL_TRI(427, 1108, 1081),\n    COL_TRI(426, 1109, 650),\n    COL_TRI(97, 104, 102),\n    COL_TRI(371, 1086, 1087),\n    COL_TRI(371, 1087, 1110),\n    COL_TRI(371, 1110, 1088),\n    COL_TRI(371, 1088, 428),\n    COL_TRI(428, 1088, 1089),\n    COL_TRI(428, 1089, 394),\n    COL_TRI(394, 1089, 1087),\n    COL_TRI(394, 1087, 1086),\n    COL_TRI(430, 1112, 1113),\n    COL_TRI(97, 102, 101),\n    COL_TRI(97, 101, 98),\n    COL_TRI(97, 98, 96),\n    COL_TRI(97, 96, 92),\n    COL_TRI(97, 92, 91),\n    COL_TRI(429, 1093, 382),\n    COL_TRI(429, 382, 1090),\n    COL_TRI(430, 1111, 1112),\n    COL_TRI(431, 1114, 432),\n    COL_TRI(432, 1114, 1115),\n    COL_TRI(432, 1115, 434),\n    COL_TRI(433, 431, 432),\n    COL_TRI(433, 432, 434),\n    COL_TRI(434, 1115, 471),\n    COL_TRI(433, 434, 471),\n    COL_TRI(435, 444, 436),\n    COL_TRI(436, 438, 437),\n    COL_TRI(436, 437, 1116),\n    COL_TRI(436, 1116, 459),\n    COL_TRI(436, 444, 443),\n    COL_TRI(436, 443, 438),\n    COL_TRI(435, 436, 459),\n    COL_TRI(440, 1119, 1120),\n    COL_TRI(437, 438, 1118),\n    COL_TRI(438, 439, 1118),\n    COL_TRI(438, 443, 540),\n    COL_TRI(438, 540, 439),\n    COL_TRI(439, 435, 459),\n    COL_TRI(439, 459, 1118),\n    COL_TRI(439, 540, 539),\n    COL_TRI(439, 539, 435),\n    COL_TRI(435, 539, 444),\n    COL_TRI(440, 464, 1119),\n    COL_TRI(441, 1120, 1119),\n    COL_TRI(442, 464, 430),\n    COL_TRI(442, 441, 464),\n    COL_TRI(443, 1117, 531),\n    COL_TRI(443, 531, 540),\n    COL_TRI(444, 1117, 443),\n    COL_TRI(445, 441, 442),\n    COL_TRI(446, 1121, 441),\n    COL_TRI(441, 1121, 1120),\n    COL_TRI(445, 446, 441),\n    COL_TRI(451, 1125, 453),\n    COL_TRI(447, 440, 1121),\n    COL_TRI(447, 1121, 448),\n    COL_TRI(446, 1122, 1121),\n    COL_TRI(448, 1121, 1122),\n    COL_TRI(448, 1122, 451),\n    COL_TRI(449, 446, 445),\n    COL_TRI(450, 1122, 446),\n    COL_TRI(449, 1124, 446),\n    COL_TRI(450, 1125, 1122),\n    COL_TRI(451, 1122, 1125),\n    COL_TRI(457, 437, 455),\n    COL_TRI(452, 1124, 449),\n    COL_TRI(452, 450, 1124),\n    COL_TRI(450, 1126, 1125),\n    COL_TRI(453, 1125, 1126),\n    COL_TRI(453, 1126, 456),\n    COL_TRI(454, 450, 452),\n    COL_TRI(455, 1126, 450),\n    COL_TRI(455, 450, 457),\n    COL_TRI(454, 457, 450),\n    COL_TRI(456, 1126, 455),\n    COL_TRI(456, 455, 1112),\n    COL_TRI(457, 1116, 437),\n    COL_TRI(462, 461, 447),\n    COL_TRI(458, 454, 1112),\n    COL_TRI(458, 1112, 460),\n    COL_TRI(459, 457, 458),\n    COL_TRI(460, 437, 1118),\n    COL_TRI(460, 455, 437),\n    COL_TRI(459, 1116, 457),\n    COL_TRI(461, 440, 447),\n    COL_TRI(461, 463, 440),\n    COL_TRI(463, 469, 467),\n    COL_TRI(463, 467, 465),\n    COL_TRI(461, 469, 463),\n    COL_TRI(462, 447, 430),\n    COL_TRI(462, 466, 468),\n    COL_TRI(462, 468, 461),\n    COL_TRI(464, 462, 430),\n    COL_TRI(464, 465, 462),\n    COL_TRI(461, 468, 469),\n    COL_TRI(465, 466, 462),\n    COL_TRI(465, 467, 466),\n    COL_TRI(466, 753, 468),\n    COL_TRI(466, 754, 753),\n    COL_TRI(467, 754, 466),\n    COL_TRI(467, 1128, 754),\n    COL_TRI(468, 1127, 469),\n    COL_TRI(469, 1127, 1128),\n    COL_TRI(469, 1128, 467),\n    COL_TRI(468, 753, 1127),\n    COL_TRI(433, 1129, 470),\n    COL_TRI(470, 1130, 1131),\n    COL_TRI(470, 1131, 1132),\n    COL_TRI(433, 470, 1132),\n    COL_TRI(470, 1129, 1133),\n    COL_TRI(470, 1133, 1130),\n    COL_TRI(433, 1134, 1129),\n    COL_TRI(471, 472, 433),\n    COL_TRI(472, 1135, 1134),\n    COL_TRI(472, 1134, 433),\n    COL_TRI(433, 1132, 431),\n    COL_TRI(473, 1136, 1137),\n    COL_TRI(473, 1138, 1139),\n    COL_TRI(473, 1139, 1140),\n    COL_TRI(473, 1140, 1136),\n    COL_TRI(474, 473, 1137),\n    COL_TRI(473, 1142, 1143),\n    COL_TRI(475, 1137, 1136),\n    COL_TRI(475, 1136, 476),\n    COL_TRI(476, 1136, 1140),\n    COL_TRI(474, 1137, 475),\n    COL_TRI(476, 1140, 477),\n    COL_TRI(477, 1140, 1139),\n    COL_TRI(477, 1139, 1141),\n    COL_TRI(478, 1139, 1138),\n    COL_TRI(473, 474, 1142),\n    COL_TRI(479, 1143, 1142),\n    COL_TRI(479, 1142, 1144),\n    COL_TRI(480, 1145, 1143),\n    COL_TRI(480, 1143, 479),\n    COL_TRI(481, 480, 479),\n    COL_TRI(481, 479, 1144),\n    COL_TRI(482, 483, 1146),\n    COL_TRI(482, 1146, 491),\n    COL_TRI(483, 482, 1147),\n    COL_TRI(482, 484, 1147),\n    COL_TRI(484, 486, 1147),\n    COL_TRI(485, 483, 1147),\n    COL_TRI(485, 1147, 489),\n    COL_TRI(486, 489, 1147),\n    COL_TRI(485, 23, 483),\n    COL_TRI(483, 23, 21),\n    COL_TRI(483, 21, 1146),\n    COL_TRI(485, 489, 490),\n    COL_TRI(487, 488, 485),\n    COL_TRI(488, 19, 485),\n    COL_TRI(485, 19, 23),\n    COL_TRI(487, 485, 490),\n    COL_TRI(489, 486, 490),\n    COL_TRI(493, 494, 488),\n    COL_TRI(490, 516, 487),\n    COL_TRI(490, 1149, 516),\n    COL_TRI(491, 1146, 1148),\n    COL_TRI(492, 1148, 1146),\n    COL_TRI(492, 1146, 1150),\n    COL_TRI(491, 1148, 500),\n    COL_TRI(493, 488, 487),\n    COL_TRI(494, 20, 488),\n    COL_TRI(498, 499, 1153),\n    COL_TRI(488, 20, 19),\n    COL_TRI(495, 496, 497),\n    COL_TRI(496, 498, 497),\n    COL_TRI(497, 1151, 1152),\n    COL_TRI(497, 498, 1151),\n    COL_TRI(498, 1153, 1151),\n    COL_TRI(503, 1155, 502),\n    COL_TRI(499, 492, 1153),\n    COL_TRI(500, 1148, 499),\n    COL_TRI(500, 499, 1154),\n    COL_TRI(501, 499, 498),\n    COL_TRI(501, 1154, 499),\n    COL_TRI(499, 1148, 492),\n    COL_TRI(502, 1155, 1156),\n    COL_TRI(502, 1156, 505),\n    COL_TRI(502, 505, 504),\n    COL_TRI(502, 504, 503),\n    COL_TRI(507, 1160, 1159),\n    COL_TRI(504, 1157, 506),\n    COL_TRI(504, 506, 503),\n    COL_TRI(505, 1157, 504),\n    COL_TRI(503, 506, 1155),\n    COL_TRI(505, 1156, 1157),\n    COL_TRI(506, 1156, 1155),\n    COL_TRI(506, 1157, 1156),\n    COL_TRI(507, 510, 509),\n    COL_TRI(507, 509, 562),\n    COL_TRI(507, 1159, 510),\n    COL_TRI(508, 571, 509),\n    COL_TRI(509, 564, 562),\n    COL_TRI(509, 571, 564),\n    COL_TRI(510, 1161, 542),\n    COL_TRI(510, 1159, 1161),\n    COL_TRI(511, 512, 1162),\n    COL_TRI(512, 1107, 541),\n    COL_TRI(512, 541, 1162),\n    COL_TRI(513, 563, 541),\n    COL_TRI(513, 541, 1145),\n    COL_TRI(511, 1162, 563),\n    COL_TRI(473, 1107, 508),\n    COL_TRI(501, 495, 1158),\n    COL_TRI(496, 501, 498),\n    COL_TRI(501, 496, 495),\n    COL_TRI(501, 1158, 1154),\n    COL_TRI(26, 567, 566),\n    COL_TRI(514, 1166, 515),\n    COL_TRI(514, 515, 529),\n    COL_TRI(515, 538, 529),\n    COL_TRI(515, 1166, 538),\n    COL_TRI(514, 1167, 1166),\n    COL_TRI(516, 514, 526),\n    COL_TRI(516, 1167, 514),\n    COL_TRI(514, 529, 526),\n    COL_TRI(26, 1168, 31),\n    COL_TRI(26, 31, 567),\n    COL_TRI(545, 517, 546),\n    COL_TRI(517, 35, 546),\n    COL_TRI(517, 1169, 35),\n    COL_TRI(35, 1169, 518),\n    COL_TRI(35, 518, 36),\n    COL_TRI(518, 545, 36),\n    COL_TRI(519, 545, 518),\n    COL_TRI(519, 518, 520),\n    COL_TRI(520, 518, 1169),\n    COL_TRI(521, 36, 1170),\n    COL_TRI(521, 16, 36),\n    COL_TRI(520, 1169, 522),\n    COL_TRI(522, 1169, 517),\n    COL_TRI(523, 482, 524),\n    COL_TRI(482, 491, 524),\n    COL_TRI(524, 17, 16),\n    COL_TRI(524, 16, 521),\n    COL_TRI(525, 1171, 526),\n    COL_TRI(525, 526, 528),\n    COL_TRI(531, 516, 527),\n    COL_TRI(526, 1171, 1173),\n    COL_TRI(526, 1173, 516),\n    COL_TRI(527, 1173, 1174),\n    COL_TRI(527, 516, 1173),\n    COL_TRI(528, 526, 529),\n    COL_TRI(528, 529, 1175),\n    COL_TRI(529, 538, 1176),\n    COL_TRI(529, 1176, 1175),\n    COL_TRI(530, 531, 527),\n    COL_TRI(530, 527, 1176),\n    COL_TRI(532, 37, 25),\n    COL_TRI(532, 25, 1177),\n    COL_TRI(25, 32, 1177),\n    COL_TRI(32, 532, 1177),\n    COL_TRI(37, 532, 34),\n    COL_TRI(138, 1178, 137),\n    COL_TRI(137, 1178, 1179),\n    COL_TRI(137, 1179, 135),\n    COL_TRI(134, 1184, 136),\n    COL_TRI(135, 1179, 1180),\n    COL_TRI(135, 1180, 132),\n    COL_TRI(138, 1181, 1178),\n    COL_TRI(132, 1180, 1182),\n    COL_TRI(132, 1182, 133),\n    COL_TRI(133, 1182, 1183),\n    COL_TRI(133, 1183, 134),\n    COL_TRI(134, 1183, 1184),\n    COL_TRI(136, 1184, 1185),\n    COL_TRI(136, 1185, 139),\n    COL_TRI(139, 1185, 1181),\n    COL_TRI(139, 1181, 138),\n    COL_TRI(34, 532, 32),\n    COL_TRI(533, 1186, 1187),\n    COL_TRI(533, 1187, 536),\n    COL_TRI(534, 1186, 533),\n    COL_TRI(533, 536, 535),\n    COL_TRI(533, 535, 534),\n    COL_TRI(535, 537, 534),\n    COL_TRI(536, 1188, 535),\n    COL_TRI(535, 1188, 537),\n    COL_TRI(534, 537, 1186),\n    COL_TRI(536, 1187, 1188),\n    COL_TRI(537, 1187, 1186),\n    COL_TRI(537, 1188, 1187),\n    COL_TRI(538, 530, 1176),\n    COL_TRI(538, 1123, 530),\n    COL_TRI(539, 530, 1123),\n    COL_TRI(539, 1123, 444),\n    COL_TRI(444, 1123, 1117),\n    COL_TRI(526, 1172, 516),\n    COL_TRI(540, 530, 539),\n    COL_TRI(540, 531, 530),\n    COL_TRI(531, 1117, 516),\n    COL_TRI(417, 473, 1145),\n    COL_TRI(541, 417, 1145),\n    COL_TRI(413, 1107, 473),\n    COL_TRI(417, 413, 473),\n    COL_TRI(473, 508, 1138),\n    COL_TRI(508, 511, 1163),\n    COL_TRI(508, 1163, 568),\n    COL_TRI(508, 568, 571),\n    COL_TRI(542, 1161, 1164),\n    COL_TRI(542, 1164, 1189),\n    COL_TRI(543, 1189, 32),\n    COL_TRI(543, 32, 526),\n    COL_TRI(544, 34, 1164),\n    COL_TRI(544, 1164, 557),\n    COL_TRI(545, 546, 1170),\n    COL_TRI(546, 35, 1168),\n    COL_TRI(546, 1168, 547),\n    COL_TRI(547, 1168, 34),\n    COL_TRI(547, 34, 544),\n    COL_TRI(526, 32, 1172),\n    COL_TRI(545, 1170, 36),\n    COL_TRI(32, 1189, 1164),\n    COL_TRI(32, 1164, 34),\n    COL_TRI(548, 550, 519),\n    COL_TRI(549, 550, 548),\n    COL_TRI(549, 522, 550),\n    COL_TRI(522, 517, 550),\n    COL_TRI(550, 517, 545),\n    COL_TRI(550, 545, 519),\n    COL_TRI(548, 519, 551),\n    COL_TRI(551, 519, 520),\n    COL_TRI(552, 522, 549),\n    COL_TRI(552, 520, 522),\n    COL_TRI(551, 520, 552),\n    COL_TRI(490, 554, 553),\n    COL_TRI(490, 553, 1149),\n    COL_TRI(553, 523, 1149),\n    COL_TRI(554, 873, 553),\n    COL_TRI(553, 873, 874),\n    COL_TRI(557, 1159, 558),\n    COL_TRI(555, 482, 523),\n    COL_TRI(553, 555, 523),\n    COL_TRI(555, 556, 482),\n    COL_TRI(555, 882, 556),\n    COL_TRI(556, 882, 875),\n    COL_TRI(556, 875, 554),\n    COL_TRI(555, 874, 882),\n    COL_TRI(553, 874, 555),\n    COL_TRI(554, 875, 873),\n    COL_TRI(557, 1164, 1159),\n    COL_TRI(558, 1159, 1160),\n    COL_TRI(558, 1160, 559),\n    COL_TRI(559, 1160, 507),\n    COL_TRI(559, 507, 560),\n    COL_TRI(560, 507, 562),\n    COL_TRI(560, 562, 1191),\n    COL_TRI(561, 1192, 543),\n    COL_TRI(561, 543, 1138),\n    COL_TRI(562, 511, 1165),\n    COL_TRI(562, 1165, 1191),\n    COL_TRI(562, 564, 511),\n    COL_TRI(563, 1165, 511),\n    COL_TRI(563, 513, 1165),\n    COL_TRI(564, 1163, 511),\n    COL_TRI(541, 565, 417),\n    COL_TRI(565, 416, 417),\n    COL_TRI(414, 415, 565),\n    COL_TRI(565, 415, 416),\n    COL_TRI(413, 414, 1107),\n    COL_TRI(566, 27, 26),\n    COL_TRI(567, 29, 27),\n    COL_TRI(567, 27, 566),\n    COL_TRI(31, 29, 567),\n    COL_TRI(493, 33, 24),\n    COL_TRI(493, 24, 494),\n    COL_TRI(494, 24, 20),\n    COL_TRI(568, 1163, 1190),\n    COL_TRI(568, 1190, 1193),\n    COL_TRI(569, 570, 1193),\n    COL_TRI(569, 1193, 1190),\n    COL_TRI(570, 569, 564),\n    COL_TRI(570, 564, 571),\n    COL_TRI(571, 1194, 570),\n    COL_TRI(568, 1193, 1194),\n    COL_TRI(577, 576, 592),\n    COL_TRI(569, 572, 564),\n    COL_TRI(572, 1190, 1163),\n    COL_TRI(573, 1195, 575),\n    COL_TRI(573, 575, 574),\n    COL_TRI(574, 575, 582),\n    COL_TRI(575, 576, 582),\n    COL_TRI(575, 1195, 576),\n    COL_TRI(576, 590, 592),\n    COL_TRI(578, 1197, 582),\n    COL_TRI(574, 582, 581),\n    COL_TRI(573, 574, 1196),\n    COL_TRI(574, 581, 1196),\n    COL_TRI(579, 580, 581),\n    COL_TRI(580, 588, 581),\n    COL_TRI(581, 588, 1196),\n    COL_TRI(582, 579, 581),\n    COL_TRI(583, 1196, 586),\n    COL_TRI(583, 1198, 1196),\n    COL_TRI(578, 584, 1197),\n    COL_TRI(584, 1199, 1200),\n    COL_TRI(584, 1200, 586),\n    COL_TRI(577, 592, 583),\n    COL_TRI(577, 583, 586),\n    COL_TRI(585, 591, 583),\n    COL_TRI(585, 583, 592),\n    COL_TRI(586, 1197, 584),\n    COL_TRI(586, 1196, 1197),\n    COL_TRI(576, 577, 578),\n    COL_TRI(576, 578, 582),\n    COL_TRI(587, 588, 743),\n    COL_TRI(587, 743, 1201),\n    COL_TRI(587, 589, 579),\n    COL_TRI(588, 587, 1197),\n    COL_TRI(587, 579, 1197),\n    COL_TRI(587, 1201, 589),\n    COL_TRI(580, 743, 588),\n    COL_TRI(588, 1197, 1196),\n    COL_TRI(589, 679, 580),\n    COL_TRI(579, 589, 580),\n    COL_TRI(579, 582, 1197),\n    COL_TRI(589, 638, 679),\n    COL_TRI(590, 1198, 1202),\n    COL_TRI(590, 1202, 919),\n    COL_TRI(593, 594, 595),\n    COL_TRI(591, 1202, 1198),\n    COL_TRI(585, 919, 1203),\n    COL_TRI(591, 1198, 583),\n    COL_TRI(592, 590, 919),\n    COL_TRI(592, 919, 585),\n    COL_TRI(593, 595, 1204),\n    COL_TRI(594, 1205, 596),\n    COL_TRI(594, 596, 595),\n    COL_TRI(595, 596, 1204),\n    COL_TRI(596, 1206, 1204),\n    COL_TRI(596, 1207, 1206),\n    COL_TRI(596, 1205, 1207),\n    COL_TRI(597, 604, 1208),\n    COL_TRI(597, 1208, 1209),\n    COL_TRI(598, 599, 1210),\n    COL_TRI(598, 1210, 1211),\n    COL_TRI(603, 597, 1209),\n    COL_TRI(599, 1212, 1210),\n    COL_TRI(599, 1213, 1212),\n    COL_TRI(600, 1214, 601),\n    COL_TRI(600, 601, 1215),\n    COL_TRI(601, 1216, 1217),\n    COL_TRI(601, 1217, 1215),\n    COL_TRI(602, 1216, 1214),\n    COL_TRI(602, 1214, 1218),\n    COL_TRI(603, 1209, 1219),\n    COL_TRI(604, 593, 1204),\n    COL_TRI(604, 1204, 1208),\n    COL_TRI(605, 606, 1220),\n    COL_TRI(606, 1221, 1220),\n    COL_TRI(607, 1221, 1222),\n    COL_TRI(607, 1222, 1223),\n    COL_TRI(608, 605, 1220),\n    COL_TRI(608, 1220, 609),\n    COL_TRI(608, 609, 610),\n    COL_TRI(609, 1224, 610),\n    COL_TRI(610, 1224, 612),\n    COL_TRI(610, 612, 1200),\n    COL_TRI(611, 607, 612),\n    COL_TRI(612, 607, 1223),\n    COL_TRI(612, 1223, 1200),\n    COL_TRI(611, 745, 607),\n    COL_TRI(617, 618, 610),\n    COL_TRI(613, 1225, 614),\n    COL_TRI(613, 614, 1226),\n    COL_TRI(614, 1225, 1227),\n    COL_TRI(615, 636, 1228),\n    COL_TRI(615, 1229, 636),\n    COL_TRI(616, 618, 617),\n    COL_TRI(620, 621, 1223),\n    COL_TRI(618, 1207, 610),\n    COL_TRI(617, 610, 1200),\n    COL_TRI(618, 1230, 1207),\n    COL_TRI(616, 619, 618),\n    COL_TRI(619, 1230, 618),\n    COL_TRI(619, 1231, 1230),\n    COL_TRI(621, 620, 619),\n    COL_TRI(620, 1232, 619),\n    COL_TRI(621, 619, 616),\n    COL_TRI(620, 1233, 1232),\n    COL_TRI(622, 1234, 1235),\n    COL_TRI(622, 1235, 1236),\n    COL_TRI(623, 1237, 1238),\n    COL_TRI(623, 1238, 1239),\n    COL_TRI(624, 626, 625),\n    COL_TRI(624, 1240, 626),\n    COL_TRI(624, 629, 1240),\n    COL_TRI(625, 632, 624),\n    COL_TRI(624, 632, 629),\n    COL_TRI(626, 637, 638),\n    COL_TRI(626, 642, 637),\n    COL_TRI(627, 625, 626),\n    COL_TRI(625, 1241, 632),\n    COL_TRI(625, 627, 1241),\n    COL_TRI(631, 1213, 598),\n    COL_TRI(628, 1241, 631),\n    COL_TRI(628, 632, 1241),\n    COL_TRI(629, 632, 1212),\n    COL_TRI(629, 1212, 633),\n    COL_TRI(630, 1241, 627),\n    COL_TRI(631, 1241, 1213),\n    COL_TRI(632, 1211, 1212),\n    COL_TRI(632, 628, 1211),\n    COL_TRI(633, 1212, 1213),\n    COL_TRI(633, 1213, 630),\n    COL_TRI(630, 1213, 1241),\n    COL_TRI(634, 1242, 635),\n    COL_TRI(635, 630, 627),\n    COL_TRI(635, 1242, 630),\n    COL_TRI(640, 602, 1218),\n    COL_TRI(636, 1244, 685),\n    COL_TRI(636, 1229, 1244),\n    COL_TRI(637, 639, 638),\n    COL_TRI(638, 639, 678),\n    COL_TRI(639, 1245, 678),\n    COL_TRI(640, 1218, 651),\n    COL_TRI(645, 1248, 644),\n    COL_TRI(641, 1246, 643),\n    COL_TRI(641, 643, 645),\n    COL_TRI(642, 643, 637),\n    COL_TRI(643, 1246, 639),\n    COL_TRI(643, 639, 637),\n    COL_TRI(639, 1246, 1245),\n    COL_TRI(644, 1247, 646),\n    COL_TRI(644, 1248, 1247),\n    COL_TRI(649, 1248, 642),\n    COL_TRI(645, 643, 1248),\n    COL_TRI(646, 1246, 641),\n    COL_TRI(646, 1247, 1246),\n    COL_TRI(647, 1247, 648),\n    COL_TRI(648, 1247, 1248),\n    COL_TRI(648, 1248, 649),\n    COL_TRI(650, 602, 640),\n    COL_TRI(649, 642, 1249),\n    COL_TRI(647, 1245, 1247),\n    COL_TRI(645, 646, 641),\n    COL_TRI(645, 644, 646),\n    COL_TRI(650, 1216, 602),\n    COL_TRI(650, 1109, 1216),\n    COL_TRI(652, 1218, 1214),\n    COL_TRI(640, 1217, 1108),\n    COL_TRI(640, 427, 650),\n    COL_TRI(640, 1108, 427),\n    COL_TRI(651, 600, 1217),\n    COL_TRI(651, 1217, 640),\n    COL_TRI(652, 1214, 653),\n    COL_TRI(655, 670, 657),\n    COL_TRI(653, 1214, 600),\n    COL_TRI(653, 600, 654),\n    COL_TRI(654, 600, 651),\n    COL_TRI(654, 651, 1250),\n    COL_TRI(629, 654, 1250),\n    COL_TRI(629, 633, 654),\n    COL_TRI(655, 1251, 670),\n    COL_TRI(656, 1251, 655),\n    COL_TRI(657, 670, 1252),\n    COL_TRI(657, 1252, 671),\n    COL_TRI(656, 1253, 1251),\n    COL_TRI(658, 1253, 656),\n    COL_TRI(658, 1254, 1253),\n    COL_TRI(659, 1254, 658),\n    COL_TRI(653, 1255, 733),\n    COL_TRI(653, 733, 1256),\n    COL_TRI(668, 1261, 1263),\n    COL_TRI(660, 661, 1258),\n    COL_TRI(661, 1259, 1258),\n    COL_TRI(661, 1260, 1259),\n    COL_TRI(662, 1260, 661),\n    COL_TRI(662, 661, 660),\n    COL_TRI(663, 1258, 1259),\n    COL_TRI(663, 1259, 664),\n    COL_TRI(664, 1259, 1260),\n    COL_TRI(660, 1258, 663),\n    COL_TRI(664, 1260, 662),\n    COL_TRI(665, 1261, 668),\n    COL_TRI(666, 665, 668),\n    COL_TRI(665, 1262, 1263),\n    COL_TRI(665, 1263, 1261),\n    COL_TRI(667, 1262, 665),\n    COL_TRI(667, 665, 666),\n    COL_TRI(668, 1263, 669),\n    COL_TRI(669, 1262, 667),\n    COL_TRI(669, 1263, 1262),\n    COL_TRI(668, 1251, 666),\n    COL_TRI(664, 666, 1251),\n    COL_TRI(670, 668, 1264),\n    COL_TRI(668, 670, 1251),\n    COL_TRI(668, 669, 654),\n    COL_TRI(668, 654, 1264),\n    COL_TRI(669, 662, 654),\n    COL_TRI(669, 664, 662),\n    COL_TRI(669, 667, 664),\n    COL_TRI(664, 1251, 1255),\n    COL_TRI(664, 1255, 663),\n    COL_TRI(662, 653, 654),\n    COL_TRI(662, 660, 653),\n    COL_TRI(660, 663, 653),\n    COL_TRI(663, 1255, 653),\n    COL_TRI(671, 1252, 1257),\n    COL_TRI(671, 1257, 672),\n    COL_TRI(672, 1257, 1265),\n    COL_TRI(672, 1265, 673),\n    COL_TRI(673, 1266, 750),\n    COL_TRI(673, 1267, 1266),\n    COL_TRI(676, 1271, 677),\n    COL_TRI(674, 675, 1264),\n    COL_TRI(674, 1264, 633),\n    COL_TRI(675, 736, 1269),\n    COL_TRI(675, 1269, 1265),\n    COL_TRI(676, 1270, 1271),\n    COL_TRI(622, 1270, 676),\n    COL_TRI(679, 1273, 1222),\n    COL_TRI(677, 1271, 726),\n    COL_TRI(677, 726, 1249),\n    COL_TRI(622, 1236, 1270),\n    COL_TRI(678, 679, 638),\n    COL_TRI(636, 1272, 679),\n    COL_TRI(636, 679, 1222),\n    COL_TRI(681, 1275, 683),\n    COL_TRI(627, 626, 638),\n    COL_TRI(627, 638, 680),\n    COL_TRI(680, 1272, 636),\n    COL_TRI(627, 680, 636),\n    COL_TRI(620, 1223, 1222),\n    COL_TRI(681, 1274, 1275),\n    COL_TRI(686, 1280, 738),\n    COL_TRI(683, 1275, 1277),\n    COL_TRI(683, 1277, 684),\n    COL_TRI(684, 1277, 733),\n    COL_TRI(684, 733, 659),\n    COL_TRI(659, 733, 1254),\n    COL_TRI(685, 1279, 1280),\n    COL_TRI(685, 1280, 686),\n    COL_TRI(686, 738, 749),\n    COL_TRI(687, 1282, 689),\n    COL_TRI(687, 1283, 1282),\n    COL_TRI(688, 1283, 687),\n    COL_TRI(689, 1284, 1285),\n    COL_TRI(689, 1285, 694),\n    COL_TRI(690, 1286, 688),\n    COL_TRI(688, 740, 1283),\n    COL_TRI(691, 1287, 692),\n    COL_TRI(696, 1293, 1235),\n    COL_TRI(692, 1288, 1289),\n    COL_TRI(692, 1289, 693),\n    COL_TRI(693, 1289, 1292),\n    COL_TRI(693, 1292, 710),\n    COL_TRI(691, 1290, 1287),\n    COL_TRI(694, 1290, 691),\n    COL_TRI(694, 1285, 1290),\n    COL_TRI(695, 1293, 696),\n    COL_TRI(696, 1235, 1234),\n    COL_TRI(695, 1237, 1293),\n    COL_TRI(652, 1295, 695),\n    COL_TRI(697, 1296, 682),\n    COL_TRI(682, 1278, 1276),\n    COL_TRI(682, 1276, 681),\n    COL_TRI(700, 1305, 1302),\n    COL_TRI(698, 1299, 699),\n    COL_TRI(699, 1300, 1301),\n    COL_TRI(699, 1301, 690),\n    COL_TRI(690, 1291, 1286),\n    COL_TRI(698, 1302, 1299),\n    COL_TRI(700, 1302, 698),\n    COL_TRI(700, 1303, 1304),\n    COL_TRI(701, 1303, 700),\n    COL_TRI(706, 1309, 705),\n    COL_TRI(702, 1306, 703),\n    COL_TRI(703, 1306, 1307),\n    COL_TRI(703, 1307, 704),\n    COL_TRI(704, 1307, 730),\n    COL_TRI(704, 730, 708),\n    COL_TRI(705, 1308, 702),\n    COL_TRI(702, 1308, 1306),\n    COL_TRI(705, 1309, 1308),\n    COL_TRI(709, 1314, 620),\n    COL_TRI(706, 1310, 1309),\n    COL_TRI(707, 1310, 706),\n    COL_TRI(707, 1312, 1310),\n    COL_TRI(647, 1312, 707),\n    COL_TRI(647, 648, 1312),\n    COL_TRI(708, 1311, 709),\n    COL_TRI(708, 730, 1311),\n    COL_TRI(709, 1313, 1314),\n    COL_TRI(713, 1319, 1318),\n    COL_TRI(710, 1292, 1294),\n    COL_TRI(710, 1294, 711),\n    COL_TRI(711, 1294, 1315),\n    COL_TRI(711, 1315, 712),\n    COL_TRI(712, 1316, 1317),\n    COL_TRI(712, 1317, 746),\n    COL_TRI(614, 1227, 713),\n    COL_TRI(713, 1318, 714),\n    COL_TRI(714, 1320, 715),\n    COL_TRI(715, 1320, 1321),\n    COL_TRI(715, 1321, 716),\n    COL_TRI(716, 615, 1228),\n    COL_TRI(716, 1322, 615),\n    COL_TRI(714, 1318, 1320),\n    COL_TRI(717, 731, 1323),\n    COL_TRI(717, 1323, 1285),\n    COL_TRI(718, 1324, 719),\n    COL_TRI(719, 1324, 613),\n    COL_TRI(719, 613, 1226),\n    COL_TRI(718, 1325, 1324),\n    COL_TRI(606, 1325, 718),\n    COL_TRI(606, 605, 1325),\n    COL_TRI(720, 1311, 1326),\n    COL_TRI(720, 1326, 1327),\n    COL_TRI(721, 1233, 1327),\n    COL_TRI(721, 1327, 722),\n    COL_TRI(725, 1333, 1334),\n    COL_TRI(722, 603, 1219),\n    COL_TRI(722, 1219, 721),\n    COL_TRI(723, 1328, 1329),\n    COL_TRI(723, 1329, 1330),\n    COL_TRI(724, 726, 1331),\n    COL_TRI(724, 1331, 1332),\n    COL_TRI(728, 1302, 729),\n    COL_TRI(725, 1334, 1335),\n    COL_TRI(726, 1300, 1299),\n    COL_TRI(726, 1299, 649),\n    COL_TRI(727, 1336, 649),\n    COL_TRI(727, 649, 1299),\n    COL_TRI(728, 1308, 1302),\n    COL_TRI(729, 1337, 728),\n    COL_TRI(729, 1338, 1337),\n    COL_TRI(730, 1337, 1315),\n    COL_TRI(730, 1315, 1339),\n    COL_TRI(731, 1319, 732),\n    COL_TRI(731, 732, 1289),\n    COL_TRI(732, 1225, 1326),\n    COL_TRI(732, 1326, 1339),\n    COL_TRI(736, 1343, 1269),\n    COL_TRI(733, 1237, 1256),\n    COL_TRI(733, 1277, 1237),\n    COL_TRI(734, 1340, 1276),\n    COL_TRI(734, 1276, 1331),\n    COL_TRI(735, 1341, 1330),\n    COL_TRI(735, 1330, 1342),\n    COL_TRI(736, 737, 1343),\n    COL_TRI(737, 1328, 1343),\n    COL_TRI(737, 1243, 1328),\n    COL_TRI(738, 739, 740),\n    COL_TRI(738, 740, 1329),\n    COL_TRI(739, 1344, 740),\n    COL_TRI(741, 1229, 615),\n    COL_TRI(739, 1345, 1344),\n    COL_TRI(740, 1344, 1335),\n    COL_TRI(740, 1335, 1334),\n    COL_TRI(741, 742, 1229),\n    COL_TRI(742, 741, 1346),\n    COL_TRI(742, 1346, 725),\n    COL_TRI(612, 889, 611),\n    COL_TRI(743, 580, 679),\n    COL_TRI(743, 679, 1272),\n    COL_TRI(589, 680, 638),\n    COL_TRI(589, 1201, 680),\n    COL_TRI(680, 1201, 743),\n    COL_TRI(680, 743, 1272),\n    COL_TRI(652, 1297, 1295),\n    COL_TRI(612, 609, 889),\n    COL_TRI(744, 745, 611),\n    COL_TRI(745, 1347, 1220),\n    COL_TRI(745, 1220, 607),\n    COL_TRI(609, 1220, 1347),\n    COL_TRI(609, 1347, 889),\n    COL_TRI(749, 738, 1281),\n    COL_TRI(746, 1317, 1303),\n    COL_TRI(746, 1303, 701),\n    COL_TRI(634, 1243, 1242),\n    COL_TRI(747, 1243, 634),\n    COL_TRI(747, 1348, 1243),\n    COL_TRI(748, 1348, 747),\n    COL_TRI(748, 1281, 1348),\n    COL_TRI(749, 1281, 748),\n    COL_TRI(598, 1127, 753),\n    COL_TRI(750, 1266, 1268),\n    COL_TRI(750, 1268, 752),\n    COL_TRI(751, 1298, 697),\n    COL_TRI(697, 1298, 1296),\n    COL_TRI(751, 1349, 1298),\n    COL_TRI(752, 1349, 751),\n    COL_TRI(752, 1268, 1349),\n    COL_TRI(598, 753, 631),\n    COL_TRI(756, 1351, 1352),\n    COL_TRI(753, 754, 628),\n    COL_TRI(753, 628, 631),\n    COL_TRI(754, 1211, 628),\n    COL_TRI(754, 1128, 1211),\n    COL_TRI(755, 847, 842),\n    COL_TRI(755, 1350, 847),\n    COL_TRI(755, 835, 1350),\n    COL_TRI(756, 852, 1351),\n    COL_TRI(757, 116, 115),\n    COL_TRI(141, 140, 143),\n    COL_TRI(141, 143, 107),\n    COL_TRI(146, 145, 147),\n    COL_TRI(146, 147, 108),\n    COL_TRI(149, 148, 151),\n    COL_TRI(149, 151, 111),\n    COL_TRI(757, 115, 759),\n    COL_TRI(759, 115, 114),\n    COL_TRI(759, 114, 760),\n    COL_TRI(758, 155, 116),\n    COL_TRI(758, 116, 757),\n    COL_TRI(760, 114, 155),\n    COL_TRI(760, 155, 758),\n    COL_TRI(761, 112, 762),\n    COL_TRI(762, 112, 152),\n    COL_TRI(762, 152, 763),\n    COL_TRI(763, 152, 154),\n    COL_TRI(763, 154, 1353),\n    COL_TRI(761, 153, 112),\n    COL_TRI(761, 1353, 154),\n    COL_TRI(761, 154, 153),\n    COL_TRI(764, 120, 765),\n    COL_TRI(765, 118, 766),\n    COL_TRI(765, 120, 118),\n    COL_TRI(770, 123, 125),\n    COL_TRI(764, 121, 120),\n    COL_TRI(766, 118, 119),\n    COL_TRI(766, 119, 767),\n    COL_TRI(767, 121, 764),\n    COL_TRI(767, 119, 121),\n    COL_TRI(768, 122, 769),\n    COL_TRI(769, 122, 123),\n    COL_TRI(769, 123, 770),\n    COL_TRI(761, 1356, 1354),\n    COL_TRI(770, 125, 771),\n    COL_TRI(768, 157, 122),\n    COL_TRI(771, 157, 768),\n    COL_TRI(771, 125, 157),\n    COL_TRI(761, 1354, 772),\n    COL_TRI(772, 1354, 774),\n    COL_TRI(772, 774, 773),\n    COL_TRI(773, 774, 1355),\n    COL_TRI(774, 1354, 1356),\n    COL_TRI(774, 1356, 1355),\n    COL_TRI(778, 1361, 1360),\n    COL_TRI(773, 1355, 775),\n    COL_TRI(775, 1355, 1356),\n    COL_TRI(775, 1356, 761),\n    COL_TRI(776, 777, 1357),\n    COL_TRI(776, 1357, 1358),\n    COL_TRI(777, 854, 1357),\n    COL_TRI(777, 1359, 854),\n    COL_TRI(778, 1360, 779),\n    COL_TRI(776, 1358, 1365),\n    COL_TRI(779, 1360, 788),\n    COL_TRI(779, 788, 780),\n    COL_TRI(780, 788, 1362),\n    COL_TRI(780, 1362, 781),\n    COL_TRI(781, 1362, 789),\n    COL_TRI(781, 789, 782),\n    COL_TRI(782, 1363, 783),\n    COL_TRI(782, 789, 1363),\n    COL_TRI(783, 1363, 790),\n    COL_TRI(783, 790, 1364),\n    COL_TRI(787, 160, 126),\n    COL_TRI(784, 1366, 1365),\n    COL_TRI(776, 1365, 1366),\n    COL_TRI(784, 785, 1366),\n    COL_TRI(785, 784, 1367),\n    COL_TRI(785, 1367, 1368),\n    COL_TRI(786, 1368, 1367),\n    COL_TRI(786, 787, 1368),\n    COL_TRI(787, 786, 160),\n    COL_TRI(788, 1369, 790),\n    COL_TRI(788, 1361, 1369),\n    COL_TRI(788, 1360, 1361),\n    COL_TRI(789, 1362, 788),\n    COL_TRI(790, 1363, 789),\n    COL_TRI(791, 794, 795),\n    COL_TRI(791, 793, 794),\n    COL_TRI(791, 1370, 793),\n    COL_TRI(791, 1371, 1370),\n    COL_TRI(792, 1371, 791),\n    COL_TRI(796, 798, 1376),\n    COL_TRI(793, 811, 794),\n    COL_TRI(794, 811, 1372),\n    COL_TRI(794, 1372, 795),\n    COL_TRI(795, 1372, 1373),\n    COL_TRI(795, 1373, 796),\n    COL_TRI(793, 1370, 811),\n    COL_TRI(792, 1374, 1371),\n    COL_TRI(796, 1373, 1375),\n    COL_TRI(796, 1375, 797),\n    COL_TRI(796, 797, 798),\n    COL_TRI(797, 1375, 810),\n    COL_TRI(797, 810, 798),\n    COL_TRI(798, 810, 1377),\n    COL_TRI(798, 1377, 799),\n    COL_TRI(799, 1377, 1378),\n    COL_TRI(799, 1378, 800),\n    COL_TRI(800, 1378, 1374),\n    COL_TRI(801, 1374, 1378),\n    COL_TRI(801, 1378, 1377),\n    COL_TRI(800, 1374, 792),\n    COL_TRI(807, 1383, 806),\n    COL_TRI(802, 1379, 803),\n    COL_TRI(803, 1379, 1380),\n    COL_TRI(803, 1380, 804),\n    COL_TRI(804, 1380, 1381),\n    COL_TRI(804, 1381, 809),\n    COL_TRI(802, 813, 1379),\n    COL_TRI(805, 813, 802),\n    COL_TRI(805, 1382, 813),\n    COL_TRI(806, 1382, 805),\n    COL_TRI(806, 1383, 1382),\n    COL_TRI(807, 1384, 1383),\n    COL_TRI(808, 1384, 807),\n    COL_TRI(808, 814, 1384),\n    COL_TRI(809, 814, 808),\n    COL_TRI(809, 1381, 814),\n    COL_TRI(799, 800, 792),\n    COL_TRI(799, 792, 1376),\n    COL_TRI(810, 1373, 801),\n    COL_TRI(809, 803, 804),\n    COL_TRI(811, 1371, 1372),\n    COL_TRI(811, 1370, 1371),\n    COL_TRI(810, 1375, 1373),\n    COL_TRI(805, 802, 1385),\n    COL_TRI(805, 1385, 812),\n    COL_TRI(809, 1385, 803),\n    COL_TRI(815, 1381, 1380),\n    COL_TRI(812, 808, 807),\n    COL_TRI(812, 807, 806),\n    COL_TRI(813, 1382, 1386),\n    COL_TRI(813, 1386, 815),\n    COL_TRI(814, 1383, 1384),\n    COL_TRI(814, 1386, 1383),\n    COL_TRI(818, 1390, 816),\n    COL_TRI(815, 1380, 1379),\n    COL_TRI(816, 1387, 1388),\n    COL_TRI(816, 1389, 1387),\n    COL_TRI(817, 1390, 1391),\n    COL_TRI(817, 1391, 1392),\n    COL_TRI(818, 1393, 1390),\n    COL_TRI(822, 1387, 823),\n    COL_TRI(819, 824, 825),\n    COL_TRI(819, 825, 826),\n    COL_TRI(820, 1394, 822),\n    COL_TRI(820, 822, 823),\n    COL_TRI(821, 827, 1394),\n    COL_TRI(821, 1394, 819),\n    COL_TRI(823, 1387, 1389),\n    COL_TRI(823, 1389, 820),\n    COL_TRI(820, 1389, 817),\n    COL_TRI(820, 817, 824),\n    COL_TRI(822, 1388, 1387),\n    COL_TRI(824, 817, 1392),\n    COL_TRI(824, 1392, 825),\n    COL_TRI(825, 1392, 1391),\n    COL_TRI(825, 1391, 826),\n    COL_TRI(826, 1391, 1393),\n    COL_TRI(829, 862, 1395),\n    COL_TRI(826, 1393, 821),\n    COL_TRI(821, 1393, 818),\n    COL_TRI(821, 818, 827),\n    COL_TRI(827, 818, 1388),\n    COL_TRI(827, 1388, 822),\n    COL_TRI(828, 1395, 164),\n    COL_TRI(828, 164, 163),\n    COL_TRI(829, 1395, 828),\n    COL_TRI(830, 756, 1352),\n    COL_TRI(830, 1352, 863),\n    COL_TRI(831, 1396, 864),\n    COL_TRI(831, 864, 1397),\n    COL_TRI(832, 1398, 883),\n    COL_TRI(832, 883, 836),\n    COL_TRI(832, 755, 834),\n    COL_TRI(832, 835, 755),\n    COL_TRI(834, 837, 870),\n    COL_TRI(834, 840, 837),\n    COL_TRI(835, 836, 1400),\n    COL_TRI(835, 1400, 838),\n    COL_TRI(836, 840, 1400),\n    COL_TRI(836, 883, 872),\n    COL_TRI(837, 836, 872),\n    COL_TRI(837, 840, 836),\n    COL_TRI(838, 1400, 915),\n    COL_TRI(838, 915, 843),\n    COL_TRI(839, 840, 755),\n    COL_TRI(839, 1401, 840),\n    COL_TRI(840, 1401, 1400),\n    COL_TRI(841, 1401, 839),\n    COL_TRI(841, 914, 1401),\n    COL_TRI(842, 914, 841),\n    COL_TRI(842, 846, 914),\n    COL_TRI(843, 915, 848),\n    COL_TRI(843, 848, 847),\n    COL_TRI(74, 845, 842),\n    COL_TRI(844, 74, 842),\n    COL_TRI(844, 842, 847),\n    COL_TRI(845, 846, 842),\n    COL_TRI(846, 848, 914),\n    COL_TRI(847, 848, 855),\n    COL_TRI(848, 915, 914),\n    COL_TRI(849, 844, 847),\n    COL_TRI(850, 849, 847),\n    COL_TRI(850, 847, 855),\n    COL_TRI(851, 852, 1359),\n    COL_TRI(851, 1351, 852),\n    COL_TRI(852, 890, 744),\n    COL_TRI(852, 853, 890),\n    COL_TRI(852, 744, 1359),\n    COL_TRI(744, 1402, 1359),\n    COL_TRI(853, 854, 890),\n    COL_TRI(854, 1403, 890),\n    COL_TRI(850, 857, 849),\n    COL_TRI(855, 861, 850),\n    COL_TRI(855, 863, 861),\n    COL_TRI(856, 849, 1404),\n    COL_TRI(857, 1404, 849),\n    COL_TRI(858, 903, 845),\n    COL_TRI(859, 858, 845),\n    COL_TRI(854, 1405, 1406),\n    COL_TRI(854, 853, 1405),\n    COL_TRI(829, 1408, 887),\n    COL_TRI(860, 831, 127),\n    COL_TRI(860, 127, 862),\n    COL_TRI(861, 860, 850),\n    COL_TRI(860, 862, 850),\n    COL_TRI(829, 887, 862),\n    COL_TRI(862, 887, 850),\n    COL_TRI(863, 831, 869),\n    COL_TRI(829, 161, 1408),\n    COL_TRI(868, 866, 1413),\n    COL_TRI(864, 756, 918),\n    COL_TRI(864, 918, 865),\n    COL_TRI(864, 865, 1411),\n    COL_TRI(865, 1203, 1411),\n    COL_TRI(866, 1412, 918),\n    COL_TRI(756, 866, 918),\n    COL_TRI(867, 868, 1413),\n    COL_TRI(868, 1411, 866),\n    COL_TRI(867, 1413, 1409),\n    COL_TRI(869, 867, 1409),\n    COL_TRI(869, 1409, 1410),\n    COL_TRI(870, 872, 1399),\n    COL_TRI(870, 837, 872),\n    COL_TRI(871, 833, 1399),\n    COL_TRI(872, 871, 1399),\n    COL_TRI(833, 832, 1399),\n    COL_TRI(877, 1415, 1414),\n    COL_TRI(833, 1398, 832),\n    COL_TRI(873, 833, 874),\n    COL_TRI(873, 1398, 833),\n    COL_TRI(874, 833, 871),\n    COL_TRI(875, 883, 1398),\n    COL_TRI(875, 1398, 873),\n    COL_TRI(876, 877, 878),\n    COL_TRI(877, 1414, 878),\n    COL_TRI(880, 1418, 1419),\n    COL_TRI(878, 1414, 1416),\n    COL_TRI(879, 876, 878),\n    COL_TRI(878, 1417, 912),\n    COL_TRI(878, 880, 1417),\n    COL_TRI(878, 912, 879),\n    COL_TRI(878, 1416, 880),\n    COL_TRI(880, 1416, 1418),\n    COL_TRI(880, 1419, 1420),\n    COL_TRI(881, 880, 1420),\n    COL_TRI(880, 881, 1417),\n    COL_TRI(886, 904, 1407),\n    COL_TRI(874, 871, 882),\n    COL_TRI(882, 883, 875),\n    COL_TRI(882, 871, 883),\n    COL_TRI(883, 871, 872),\n    COL_TRI(884, 1422, 885),\n    COL_TRI(885, 1423, 886),\n    COL_TRI(885, 896, 1423),\n    COL_TRI(886, 1424, 904),\n    COL_TRI(887, 902, 888),\n    COL_TRI(888, 1426, 884),\n    COL_TRI(888, 900, 1426),\n    COL_TRI(884, 1425, 1422),\n    COL_TRI(889, 1347, 1403),\n    COL_TRI(889, 1403, 1402),\n    COL_TRI(890, 1347, 745),\n    COL_TRI(890, 1403, 1347),\n    COL_TRI(891, 1428, 893),\n    COL_TRI(744, 890, 745),\n    COL_TRI(611, 1402, 744),\n    COL_TRI(611, 889, 1402),\n    COL_TRI(891, 893, 892),\n    COL_TRI(892, 858, 894),\n    COL_TRI(892, 893, 858),\n    COL_TRI(893, 1404, 857),\n    COL_TRI(893, 1428, 1404),\n    COL_TRI(81, 856, 1428),\n    COL_TRI(858, 893, 1407),\n    COL_TRI(858, 1407, 903),\n    COL_TRI(894, 858, 859),\n    COL_TRI(894, 859, 895),\n    COL_TRI(895, 1428, 891),\n    COL_TRI(895, 859, 1428),\n    COL_TRI(856, 1404, 1428),\n    COL_TRI(81, 1428, 859),\n    COL_TRI(897, 898, 1425),\n    COL_TRI(893, 857, 1407),\n    COL_TRI(849, 81, 89),\n    COL_TRI(849, 856, 81),\n    COL_TRI(881, 913, 1417),\n    COL_TRI(896, 898, 897),\n    COL_TRI(897, 1425, 1426),\n    COL_TRI(896, 1422, 898),\n    COL_TRI(898, 1422, 1425),\n    COL_TRI(899, 1424, 1423),\n    COL_TRI(899, 1429, 1424),\n    COL_TRI(887, 1427, 902),\n    COL_TRI(900, 1430, 901),\n    COL_TRI(904, 1424, 1429),\n    COL_TRI(901, 1427, 1408),\n    COL_TRI(900, 902, 1430),\n    COL_TRI(901, 1430, 1427),\n    COL_TRI(902, 1427, 1430),\n    COL_TRI(903, 904, 1429),\n    COL_TRI(903, 1429, 899),\n    COL_TRI(905, 1431, 906),\n    COL_TRI(905, 1432, 1431),\n    COL_TRI(906, 1431, 907),\n    COL_TRI(907, 1431, 1432),\n    COL_TRI(906, 907, 1433),\n    COL_TRI(907, 1432, 908),\n    COL_TRI(908, 1434, 910),\n    COL_TRI(908, 910, 162),\n    COL_TRI(909, 162, 910),\n    COL_TRI(910, 162, 129),\n    COL_TRI(915, 1400, 1401),\n    COL_TRI(911, 1435, 1436),\n    COL_TRI(911, 1437, 1435),\n    COL_TRI(912, 1421, 879),\n    COL_TRI(913, 1421, 912),\n    COL_TRI(913, 912, 1417),\n    COL_TRI(914, 915, 1401),\n    COL_TRI(918, 1412, 1202),\n    COL_TRI(910, 129, 916),\n    COL_TRI(916, 129, 128),\n    COL_TRI(916, 128, 917),\n    COL_TRI(909, 130, 162),\n    COL_TRI(917, 130, 909),\n    COL_TRI(917, 128, 130),\n    COL_TRI(863, 869, 1410),\n    COL_TRI(918, 1202, 591),\n    COL_TRI(84, 1439, 1438),\n    COL_TRI(919, 1202, 1412),\n    COL_TRI(919, 1412, 1203),\n    COL_TRI(865, 918, 591),\n    COL_TRI(865, 591, 585),\n    COL_TRI(585, 1203, 865),\n    COL_TRI(84, 1438, 85),\n    COL_TRI(921, 1443, 12),\n    COL_TRI(83, 71, 1439),\n    COL_TRI(83, 1439, 64),\n    COL_TRI(72, 844, 89),\n    COL_TRI(72, 89, 80),\n    COL_TRI(920, 1440, 1441),\n    COL_TRI(920, 1441, 1442),\n    COL_TRI(923, 972, 1448),\n    COL_TRI(921, 12, 924),\n    COL_TRI(12, 1444, 1446),\n    COL_TRI(12, 1445, 1444),\n    COL_TRI(922, 1447, 925),\n    COL_TRI(922, 1445, 1447),\n    COL_TRI(923, 1448, 1449),\n    COL_TRI(923, 1449, 921),\n    COL_TRI(923, 1450, 972),\n    COL_TRI(924, 1446, 930),\n    COL_TRI(924, 930, 1451),\n    COL_TRI(925, 984, 926),\n    COL_TRI(925, 926, 1452),\n    COL_TRI(926, 1453, 1454),\n    COL_TRI(926, 1454, 1452),\n    COL_TRI(927, 1453, 1455),\n    COL_TRI(927, 972, 1453),\n    COL_TRI(928, 1444, 922),\n    COL_TRI(928, 929, 1444),\n    COL_TRI(929, 991, 1456),\n    COL_TRI(929, 930, 991),\n    COL_TRI(930, 549, 548),\n    COL_TRI(930, 548, 1451),\n    COL_TRI(548, 551, 928),\n    COL_TRI(548, 928, 1451),\n    COL_TRI(551, 929, 928),\n    COL_TRI(551, 552, 929),\n    COL_TRI(931, 932, 989),\n    COL_TRI(931, 894, 932),\n    COL_TRI(932, 895, 933),\n    COL_TRI(932, 894, 895),\n    COL_TRI(931, 892, 894),\n    COL_TRI(933, 895, 891),\n    COL_TRI(934, 933, 935),\n    COL_TRI(933, 891, 935),\n    COL_TRI(935, 891, 892),\n    COL_TRI(935, 892, 931),\n    COL_TRI(934, 935, 1457),\n    COL_TRI(935, 936, 1457),\n    COL_TRI(935, 931, 936),\n    COL_TRI(931, 989, 936),\n    COL_TRI(936, 945, 964),\n    COL_TRI(936, 989, 945),\n    COL_TRI(937, 1458, 1459),\n    COL_TRI(937, 1459, 939),\n    COL_TRI(938, 1458, 937),\n    COL_TRI(937, 939, 945),\n    COL_TRI(943, 945, 1462),\n    COL_TRI(938, 1460, 1458),\n    COL_TRI(939, 1459, 1461),\n    COL_TRI(939, 1461, 940),\n    COL_TRI(939, 1462, 945),\n    COL_TRI(940, 1461, 1460),\n    COL_TRI(940, 1460, 938),\n    COL_TRI(941, 1464, 1465),\n    COL_TRI(941, 1465, 943),\n    COL_TRI(942, 1464, 941),\n    COL_TRI(941, 1462, 1466),\n    COL_TRI(941, 943, 1462),\n    COL_TRI(942, 941, 1466),\n    COL_TRI(942, 1467, 1464),\n    COL_TRI(943, 1465, 1468),\n    COL_TRI(943, 1468, 944),\n    COL_TRI(944, 1468, 1469),\n    COL_TRI(944, 1469, 946),\n    COL_TRI(943, 944, 945),\n    COL_TRI(945, 944, 946),\n    COL_TRI(946, 1469, 1470),\n    COL_TRI(946, 1470, 947),\n    COL_TRI(946, 947, 1471),\n    COL_TRI(945, 946, 1463),\n    COL_TRI(946, 1471, 1463),\n    COL_TRI(947, 1470, 1472),\n    COL_TRI(947, 1472, 948),\n    COL_TRI(947, 952, 1471),\n    COL_TRI(947, 948, 952),\n    COL_TRI(948, 1472, 1467),\n    COL_TRI(948, 1467, 942),\n    COL_TRI(948, 942, 952),\n    COL_TRI(942, 1466, 952),\n    COL_TRI(949, 1473, 953),\n    COL_TRI(949, 1474, 1473),\n    COL_TRI(950, 1475, 949),\n    COL_TRI(953, 952, 1466),\n    COL_TRI(951, 1474, 1475),\n    COL_TRI(951, 1478, 1474),\n    COL_TRI(952, 1473, 1476),\n    COL_TRI(952, 1476, 954),\n    COL_TRI(952, 954, 1471),\n    COL_TRI(954, 1476, 1478),\n    COL_TRI(954, 1478, 951),\n    COL_TRI(954, 957, 1471),\n    COL_TRI(954, 951, 957),\n    COL_TRI(951, 1475, 957),\n    COL_TRI(955, 1475, 1477),\n    COL_TRI(955, 956, 1475),\n    COL_TRI(956, 957, 1475),\n    COL_TRI(950, 1477, 1475),\n    COL_TRI(957, 1479, 958),\n    COL_TRI(957, 1480, 1479),\n    COL_TRI(956, 1480, 957),\n    COL_TRI(956, 1481, 1480),\n    COL_TRI(958, 1479, 1482),\n    COL_TRI(958, 1482, 955),\n    COL_TRI(958, 1483, 967),\n    COL_TRI(958, 1477, 1483),\n    COL_TRI(958, 955, 1477),\n    COL_TRI(959, 958, 960),\n    COL_TRI(959, 957, 958),\n    COL_TRI(960, 958, 967),\n    COL_TRI(955, 1482, 1481),\n    COL_TRI(955, 1481, 956),\n    COL_TRI(964, 945, 1463),\n    COL_TRI(961, 1462, 934),\n    COL_TRI(962, 1462, 961),\n    COL_TRI(962, 1466, 1462),\n    COL_TRI(953, 1466, 962),\n    COL_TRI(963, 1477, 950),\n    COL_TRI(963, 1483, 1477),\n    COL_TRI(960, 967, 968),\n    COL_TRI(964, 1463, 965),\n    COL_TRI(961, 934, 1457),\n    COL_TRI(965, 1463, 1471),\n    COL_TRI(965, 1471, 966),\n    COL_TRI(966, 1471, 957),\n    COL_TRI(966, 957, 959),\n    COL_TRI(967, 974, 1484),\n    COL_TRI(967, 1483, 974),\n    COL_TRI(968, 967, 1484),\n    COL_TRI(968, 1484, 1485),\n    COL_TRI(969, 1483, 963),\n    COL_TRI(969, 974, 1483),\n    COL_TRI(970, 977, 971),\n    COL_TRI(970, 987, 977),\n    COL_TRI(970, 986, 987),\n    COL_TRI(970, 985, 986),\n    COL_TRI(970, 971, 1486),\n    COL_TRI(971, 975, 1486),\n    COL_TRI(972, 973, 1486),\n    COL_TRI(973, 1487, 1488),\n    COL_TRI(973, 1488, 1486),\n    COL_TRI(972, 1487, 973),\n    COL_TRI(972, 1450, 1487),\n    COL_TRI(970, 1488, 1489),\n    COL_TRI(972, 1486, 975),\n    COL_TRI(972, 976, 1484),\n    COL_TRI(972, 975, 976),\n    COL_TRI(972, 1484, 974),\n    COL_TRI(977, 1492, 1491),\n    COL_TRI(972, 974, 1453),\n    COL_TRI(974, 1454, 1453),\n    COL_TRI(974, 969, 1454),\n    COL_TRI(975, 1490, 976),\n    COL_TRI(976, 1485, 1484),\n    COL_TRI(976, 1490, 1485),\n    COL_TRI(975, 1491, 1490),\n    COL_TRI(977, 1491, 971),\n    COL_TRI(978, 1455, 1493),\n    COL_TRI(978, 927, 1455),\n    COL_TRI(979, 1493, 1494),\n    COL_TRI(979, 978, 1493),\n    COL_TRI(980, 1449, 979),\n    COL_TRI(980, 979, 983),\n    COL_TRI(980, 1495, 1496),\n    COL_TRI(980, 1496, 981),\n    COL_TRI(981, 1496, 1497),\n    COL_TRI(981, 1497, 982),\n    COL_TRI(982, 1498, 1499),\n    COL_TRI(982, 1497, 1498),\n    COL_TRI(983, 1500, 1495),\n    COL_TRI(983, 1495, 980),\n    COL_TRI(983, 1494, 1500),\n    COL_TRI(983, 979, 1494),\n    COL_TRI(987, 1492, 977),\n    COL_TRI(984, 1500, 1494),\n    COL_TRI(984, 1495, 1500),\n    COL_TRI(970, 1489, 985),\n    COL_TRI(985, 1489, 1501),\n    COL_TRI(985, 1501, 986),\n    COL_TRI(986, 1501, 1502),\n    COL_TRI(986, 1502, 987),\n    COL_TRI(987, 1502, 1492),\n    COL_TRI(270, 1016, 1003),\n    COL_TRI(938, 1503, 990),\n    COL_TRI(938, 990, 940),\n    COL_TRI(938, 989, 1503),\n    COL_TRI(988, 990, 1503),\n    COL_TRI(989, 988, 1503),\n    COL_TRI(988, 1504, 990),\n    COL_TRI(990, 1504, 934),\n    COL_TRI(990, 934, 940),\n    COL_TRI(991, 1444, 1456),\n    COL_TRI(991, 1446, 1444),\n    COL_TRI_INIT(SURFACE_HANGABLE, 16),\n    COL_TRI(176, 179, 177),\n    COL_TRI(167, 168, 169),\n    COL_TRI(167, 170, 168),\n    COL_TRI(171, 167, 172),\n    COL_TRI(173, 174, 168),\n    COL_TRI(173, 168, 175),\n    COL_TRI(176, 177, 178),\n    COL_TRI(183, 177, 190),\n    COL_TRI(175, 180, 173),\n    COL_TRI(175, 181, 180),\n    COL_TRI(170, 185, 186),\n    COL_TRI(170, 186, 187),\n    COL_TRI(182, 187, 188),\n    COL_TRI(182, 189, 187),\n    COL_TRI(183, 190, 191),\n    COL_TRI(171, 172, 184),\n    COL_TRI_INIT(SURFACE_DEATH_PLANE, 6),\n    COL_TRI(4, 5, 6),\n    COL_TRI(4, 7, 5),\n    COL_TRI(8, 9, 10),\n    COL_TRI(8, 11, 9),\n    COL_TRI(12, 13, 14),\n    COL_TRI(12, 15, 13),\n    COL_TRI_INIT(SURFACE_VERY_SLIPPERY, 68),\n    COL_TRI(103, 100, 101),\n    COL_TRI(90, 91, 92),\n    COL_TRI(93, 91, 90),\n    COL_TRI(90, 92, 94),\n    COL_TRI(92, 95, 94),\n    COL_TRI(92, 96, 95),\n    COL_TRI(93, 97, 91),\n    COL_TRI(98, 99, 95),\n    COL_TRI(98, 95, 96),\n    COL_TRI(100, 99, 98),\n    COL_TRI(100, 98, 101),\n    COL_TRI(102, 103, 101),\n    COL_TRI(103, 102, 104),\n    COL_TRI(37, 135, 132),\n    COL_TRI(105, 97, 93),\n    COL_TRI(105, 104, 97),\n    COL_TRI(103, 104, 105),\n    COL_TRI(37, 132, 25),\n    COL_TRI(25, 132, 133),\n    COL_TRI(25, 133, 22),\n    COL_TRI(22, 133, 134),\n    COL_TRI(22, 134, 18),\n    COL_TRI(106, 140, 141),\n    COL_TRI(28, 135, 37),\n    COL_TRI(28, 137, 135),\n    COL_TRI(30, 137, 28),\n    COL_TRI(30, 138, 137),\n    COL_TRI(38, 138, 30),\n    COL_TRI(38, 139, 138),\n    COL_TRI(16, 139, 38),\n    COL_TRI(16, 136, 139),\n    COL_TRI(18, 136, 16),\n    COL_TRI(18, 134, 136),\n    COL_TRI(110, 150, 148),\n    COL_TRI(106, 142, 140),\n    COL_TRI(107, 142, 106),\n    COL_TRI(107, 143, 142),\n    COL_TRI(108, 144, 109),\n    COL_TRI(109, 144, 145),\n    COL_TRI(109, 145, 146),\n    COL_TRI(108, 147, 144),\n    COL_TRI(110, 148, 149),\n    COL_TRI(111, 150, 110),\n    COL_TRI(111, 151, 150),\n    COL_TRI(112, 113, 152),\n    COL_TRI(112, 153, 113),\n    COL_TRI(113, 153, 154),\n    COL_TRI(113, 154, 152),\n    COL_TRI(114, 117, 155),\n    COL_TRI(115, 117, 114),\n    COL_TRI(116, 117, 115),\n    COL_TRI(117, 116, 155),\n    COL_TRI(118, 120, 156),\n    COL_TRI(119, 118, 156),\n    COL_TRI(120, 121, 156),\n    COL_TRI(121, 119, 156),\n    COL_TRI(122, 124, 123),\n    COL_TRI(123, 124, 125),\n    COL_TRI(128, 131, 130),\n    COL_TRI(124, 122, 157),\n    COL_TRI(125, 124, 157),\n    COL_TRI(126, 158, 159),\n    COL_TRI(126, 160, 158),\n    COL_TRI(127, 159, 158),\n    COL_TRI(127, 161, 159),\n    COL_TRI(129, 131, 128),\n    COL_TRI(130, 131, 162),\n    COL_TRI(131, 129, 162),\n    COL_TRI_INIT(SURFACE_SLIPPERY, 20),\n    COL_TRI(16, 17, 18),\n    COL_TRI(18, 19, 20),\n    COL_TRI(17, 21, 18),\n    COL_TRI(22, 18, 20),\n    COL_TRI(18, 21, 23),\n    COL_TRI(22, 20, 24),\n    COL_TRI(22, 24, 25),\n    COL_TRI(26, 27, 28),\n    COL_TRI(28, 29, 30),\n    COL_TRI(28, 27, 29),\n    COL_TRI(30, 29, 31),\n    COL_TRI(32, 25, 33),\n    COL_TRI(25, 24, 33),\n    COL_TRI(26, 28, 34),\n    COL_TRI(34, 28, 37),\n    COL_TRI(35, 30, 31),\n    COL_TRI(35, 38, 30),\n    COL_TRI(36, 38, 35),\n    COL_TRI(36, 16, 38),\n    COL_TRI(18, 23, 19),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 52),\n    COL_TRI(202, 201, 204),\n    COL_TRI(192, 193, 194),\n    COL_TRI(195, 196, 193),\n    COL_TRI(193, 197, 194),\n    COL_TRI(193, 196, 197),\n    COL_TRI(198, 195, 193),\n    COL_TRI(198, 193, 192),\n    COL_TRI(194, 197, 199),\n    COL_TRI(194, 199, 200),\n    COL_TRI(194, 200, 201),\n    COL_TRI(192, 194, 202),\n    COL_TRI(202, 194, 201),\n    COL_TRI(203, 202, 204),\n    COL_TRI(205, 202, 203),\n    COL_TRI(205, 192, 202),\n    COL_TRI(203, 204, 206),\n    COL_TRI(207, 192, 205),\n    COL_TRI(207, 198, 192),\n    COL_TRI(208, 203, 206),\n    COL_TRI(209, 203, 208),\n    COL_TRI(209, 205, 203),\n    COL_TRI(208, 206, 224),\n    COL_TRI(210, 207, 205),\n    COL_TRI(210, 205, 209),\n    COL_TRI(211, 208, 212),\n    COL_TRI(211, 209, 208),\n    COL_TRI(212, 208, 224),\n    COL_TRI(216, 211, 215),\n    COL_TRI(212, 224, 225),\n    COL_TRI(213, 209, 211),\n    COL_TRI(213, 210, 209),\n    COL_TRI(214, 212, 225),\n    COL_TRI(215, 211, 212),\n    COL_TRI(215, 212, 214),\n    COL_TRI(214, 225, 226),\n    COL_TRI(216, 213, 211),\n    COL_TRI(220, 227, 219),\n    COL_TRI(217, 216, 218),\n    COL_TRI(216, 215, 218),\n    COL_TRI(218, 215, 219),\n    COL_TRI(215, 214, 219),\n    COL_TRI(219, 214, 220),\n    COL_TRI(214, 226, 220),\n    COL_TRI(221, 219, 227),\n    COL_TRI(218, 228, 217),\n    COL_TRI(218, 229, 228),\n    COL_TRI(219, 229, 218),\n    COL_TRI(219, 221, 229),\n    COL_TRI(222, 230, 231),\n    COL_TRI(223, 233, 230),\n    COL_TRI(222, 232, 230),\n    COL_TRI(223, 230, 232),\n    COL_TRI_INIT(SURFACE_WALL_MISC, 18),\n    COL_TRI(51, 50, 49),\n    COL_TRI(39, 40, 41),\n    COL_TRI(41, 40, 42),\n    COL_TRI(41, 42, 43),\n    COL_TRI(43, 42, 44),\n    COL_TRI(43, 44, 45),\n    COL_TRI(39, 46, 40),\n    COL_TRI(47, 46, 39),\n    COL_TRI(47, 48, 46),\n    COL_TRI(49, 48, 47),\n    COL_TRI(49, 50, 48),\n    COL_TRI(45, 44, 54),\n    COL_TRI(51, 52, 50),\n    COL_TRI(53, 52, 51),\n    COL_TRI(53, 54, 52),\n    COL_TRI(45, 54, 53),\n    COL_TRI(163, 164, 165),\n    COL_TRI(163, 165, 166),\n    COL_TRI_INIT(SURFACE_NO_CAM_COLLISION, 35),\n    COL_TRI(66, 69, 70),\n    COL_TRI(59, 60, 61),\n    COL_TRI(59, 61, 62),\n    COL_TRI(62, 61, 63),\n    COL_TRI(64, 59, 62),\n    COL_TRI(64, 62, 63),\n    COL_TRI(65, 66, 67),\n    COL_TRI(65, 68, 66),\n    COL_TRI(66, 68, 69),\n    COL_TRI(74, 73, 84),\n    COL_TRI(70, 69, 71),\n    COL_TRI(70, 71, 83),\n    COL_TRI(72, 82, 73),\n    COL_TRI(73, 82, 64),\n    COL_TRI(73, 64, 84),\n    COL_TRI(72, 80, 82),\n    COL_TRI(74, 72, 73),\n    COL_TRI(74, 84, 85),\n    COL_TRI(81, 60, 59),\n    COL_TRI(75, 77, 76),\n    COL_TRI(75, 78, 77),\n    COL_TRI(76, 86, 75),\n    COL_TRI(75, 87, 78),\n    COL_TRI(75, 86, 87),\n    COL_TRI(77, 88, 79),\n    COL_TRI(78, 88, 77),\n    COL_TRI(77, 79, 76),\n    COL_TRI(76, 79, 86),\n    COL_TRI(78, 87, 88),\n    COL_TRI(79, 87, 86),\n    COL_TRI(79, 88, 87),\n    COL_TRI(80, 89, 81),\n    COL_TRI(80, 81, 59),\n    COL_TRI(82, 80, 59),\n    COL_TRI(64, 82, 59),\n    COL_TRI_INIT(SURFACE_PAINTING_WOBBLE_D0, 2),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI_INIT(SURFACE_WOBBLING_WARP, 2),\n    COL_TRI(55, 56, 57),\n    COL_TRI(55, 58, 56),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(13),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_null_start,  /*pos*/ -7601,  2253,  7630, /*yaw*/  96), // unused, probably an early way to set initial position\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_wooden_door, /*pos*/   922, -4689,  2330, /*yaw*/ 192),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_wooden_door, /*pos*/ -3586,  1536,   647, /*yaw*/  19),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_wooden_door, /*pos*/  5911,  -204,   870, /*yaw*/   0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_wooden_door, /*pos*/  3817,   205,   870, /*yaw*/   0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_metal_door,  /*pos*/  1127,  -409, -4709, /*yaw*/  64),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_metal_door,  /*pos*/  -468, -4279,  6711, /*yaw*/  32),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_metal_door,  /*pos*/  -359, -4279,  6602, /*yaw*/ 160),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_metal_door,  /*pos*/ -3634,  2355, -2764, /*yaw*/  64),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_metal_door,  /*pos*/ -4863,  1843, -7551, /*yaw*/ 192),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_metal_door,  /*pos*/  3328,  -409, -6911, /*yaw*/   0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_hmc_door,    /*pos*/   358,  2048,  3661, /*yaw*/ 192),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_hmc_door,    /*pos*/ -6553,  1536,  1459, /*yaw*/   0),\n    COL_WATER_BOX_INIT(3),\n    COL_WATER_BOX(0, -7628, -2559, 563, 7654, -4791),\n    COL_WATER_BOX(50, 1690, -6348, 6298, 819, -818),\n    COL_WATER_BOX(51, 1690, -6348, 6298, 819, -821),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/geo.inc.c",
    "content": "// 0x0E0005E8\nconst GeoLayout hmc_geo_0005E8[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_070078B0),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, hmc_seg7_dl_07007B50),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_070080E8),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_070093F0),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000618\nconst GeoLayout hmc_geo_000618[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_0700E448),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, hmc_seg7_dl_0700EF00),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_0700F3E8),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_0700FA40),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_0700FEF0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE_DECAL, hmc_seg7_dl_07010070),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000658\nconst GeoLayout hmc_geo_000658[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_07013CA8),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, hmc_seg7_dl_07013E80),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_07014300),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_07014B08),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_07014C00),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_07014E48),\n        GEO_ASM(   0, geo_movtex_pause_control),\n        GEO_ASM(0x0702, geo_movtex_draw_water_regions),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E0006A8\nconst GeoLayout hmc_geo_0006A8[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_070173A8),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, hmc_seg7_dl_07017C98),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_07018200),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_07019248),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_07019368),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E0006E0\nconst GeoLayout hmc_geo_0006E0[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_0701A080),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, hmc_seg7_dl_0701A400),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000700\nconst GeoLayout hmc_geo_000700[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_0701E820),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, hmc_seg7_dl_0701F1B0),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_0701F690),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_0701F818),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_0701FD58),\n        GEO_ASM(0, geo_movtex_pause_control),\n        GEO_ASM(0x0701, geo_movtex_draw_water_regions),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000748\nconst GeoLayout hmc_geo_000748[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_07020FD0),\n        GEO_ASM(0, geo_painting_update),\n        GEO_ASM(PAINTING_ID(0, 0), geo_painting_draw),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000770\nconst GeoLayout hmc_geo_000770[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_07021760),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_07021BA0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_070228A0),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000798\nconst GeoLayout hmc_geo_000798[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_070078B0),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, hmc_seg7_dl_07007B50),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_070080E8),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_070093F0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_0700E448),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, hmc_seg7_dl_0700EF00),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_0700F3E8),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_0700FA40),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_0700FEF0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE_DECAL, hmc_seg7_dl_07010070),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E0007F8\nconst GeoLayout hmc_geo_0007F8[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_070078B0),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, hmc_seg7_dl_07007B50),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_070080E8),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_070093F0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_070173A8),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, hmc_seg7_dl_07017C98),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_07018200),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_07019248),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_07019368),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000850\nconst GeoLayout hmc_geo_000850[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_0700E448),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, hmc_seg7_dl_0700EF00),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_0700F3E8),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_0700FA40),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_0700FEF0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE_DECAL, hmc_seg7_dl_07010070),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_07013CA8),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, hmc_seg7_dl_07013E80),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_07014300),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_07014B08),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_07014C00),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_07014E48),\n        GEO_ASM(   0, geo_movtex_pause_control),\n        GEO_ASM(0x0702, geo_movtex_draw_water_regions),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E0008D0\nconst GeoLayout hmc_geo_0008D0[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_0700E448),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, hmc_seg7_dl_0700EF00),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_0700F3E8),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_0700FA40),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_0700FEF0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE_DECAL, hmc_seg7_dl_07010070),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_070173A8),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, hmc_seg7_dl_07017C98),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_07018200),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_07019248),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_07019368),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000938\nconst GeoLayout hmc_geo_000938[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_07013CA8),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, hmc_seg7_dl_07013E80),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_07014300),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_07014B08),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_07014C00),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_07014E48),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_0701A080),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, hmc_seg7_dl_0701A400),\n        GEO_ASM(   0, geo_movtex_pause_control),\n        GEO_ASM(0x0702, geo_movtex_draw_water_regions),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000998\nconst GeoLayout hmc_geo_000998[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_07013CA8),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, hmc_seg7_dl_07013E80),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_07014300),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_07014B08),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_07014C00),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_07014E48),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_0701E820),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, hmc_seg7_dl_0701F1B0),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_0701F690),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_0701F818),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_0701FD58),\n        GEO_ASM(   0, geo_movtex_pause_control),\n        GEO_ASM(0x0701, geo_movtex_draw_water_regions),\n        GEO_ASM(0x0702, geo_movtex_draw_water_regions),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000A18\nconst GeoLayout hmc_geo_000A18[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_070173A8),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, hmc_seg7_dl_07017C98),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_07018200),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_07019248),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_07019368),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_0701E820),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, hmc_seg7_dl_0701F1B0),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_0701F690),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_0701F818),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_0701FD58),\n        GEO_ASM(   0, geo_movtex_pause_control),\n        GEO_ASM(0x0701, geo_movtex_draw_water_regions),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000A88\nconst GeoLayout hmc_geo_000A88[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_0701E820),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, hmc_seg7_dl_0701F1B0),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_0701F690),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_0701F818),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_0701FD58),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_07020FD0),\n        GEO_ASM(   0, geo_painting_update),\n        GEO_ASM(   PAINTING_ID(0, 0), geo_painting_draw),\n        GEO_ASM(   0, geo_movtex_pause_control),\n        GEO_ASM(0x0701, geo_movtex_draw_water_regions),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000AE8\nconst GeoLayout hmc_geo_000AE8[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_0701E820),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, hmc_seg7_dl_0701F1B0),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_0701F690),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_0701F818),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_0701FD58),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_07021760),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_07021BA0),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_070228A0),\n        GEO_ASM(   0, geo_movtex_pause_control),\n        GEO_ASM(0x0701, geo_movtex_draw_water_regions),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000B48\nconst GeoLayout hmc_geo_000B48[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_070173A8),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, hmc_seg7_dl_07017C98),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_07018200),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_07019248),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, hmc_seg7_dl_07019368),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_0701A080),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, hmc_seg7_dl_0701A400),\n    GEO_CLOSE_NODE(),\n    GEO_RETURN(),\n};\n\n// 0x0E000B90\nconst GeoLayout hmc_geo_000B90[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND_COLOR(0x0001),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 12800, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(16, 0, 2000, 6000, 0, 0, 0, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_SWITCH_CASE(18, geo_switch_area),\n                    GEO_OPEN_NODE(),\n                        GEO_BRANCH(1, hmc_geo_0005E8), // 0x0E0005E8\n                        GEO_BRANCH(1, hmc_geo_000618), // 0x0E000618\n                        GEO_BRANCH(1, hmc_geo_000658), // 0x0E000658\n                        GEO_BRANCH(1, hmc_geo_0006A8), // 0x0E0006A8\n                        GEO_BRANCH(1, hmc_geo_0006E0), // 0x0E0006E0\n                        GEO_BRANCH(1, hmc_geo_000700), // 0x0E000700\n                        GEO_BRANCH(1, hmc_geo_000748), // 0x0E000748\n                        GEO_BRANCH(1, hmc_geo_000770), // 0x0E000770\n                        GEO_BRANCH(1, hmc_geo_000798), // 0x0E000798\n                        GEO_BRANCH(1, hmc_geo_0007F8), // 0x0E0007F8\n                        GEO_BRANCH(1, hmc_geo_000850), // 0x0E000850\n                        GEO_BRANCH(1, hmc_geo_0008D0), // 0x0E0008D0\n                        GEO_BRANCH(1, hmc_geo_000938), // 0x0E000938\n                        GEO_BRANCH(1, hmc_geo_000998), // 0x0E000998\n                        GEO_BRANCH(1, hmc_geo_000A18), // 0x0E000A18\n                        GEO_BRANCH(1, hmc_geo_000A88), // 0x0E000A88\n                        GEO_BRANCH(1, hmc_geo_000AE8), // 0x0E000AE8\n                        GEO_BRANCH(1, hmc_geo_000B48), // 0x0E000B48\n                    GEO_CLOSE_NODE(),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(0, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/grill_door/collision.inc.c",
    "content": "// 0x0702B65C - 0x0702B6E0\nconst Collision hmc_seg7_collision_0702B65C[] = {\n#ifdef VERSION_JP\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(410, 0, 51),\n    COL_VERTEX(410, 819, -50),\n    COL_VERTEX(410, 819, 51),\n    COL_VERTEX(0, 819, 51),\n    COL_VERTEX(0, 0, 51),\n    COL_VERTEX(0, 819, -50),\n    COL_VERTEX(410, 0, -50),\n    COL_VERTEX(0, 0, -50),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(2, 3, 4),\n    COL_TRI(2, 4, 0),\n    COL_TRI(2, 1, 5),\n    COL_TRI(2, 5, 3),\n    COL_TRI(6, 5, 1),\n    COL_TRI(0, 6, 1),\n    COL_TRI(6, 7, 5),\n    COL_TRI(3, 5, 7),\n    COL_TRI(3, 7, 4),\n    COL_TRI(4, 7, 6),\n    COL_TRI(4, 6, 0),\n    COL_TRI_STOP(),\n    COL_END(),\n#else\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(410, 0, 51),\n    COL_VERTEX(410, 719, -50), // 819 changed to 719 in non-JP builds\n    COL_VERTEX(410, 719, 51),\n    COL_VERTEX(0, 719, 51),\n    COL_VERTEX(0, 0, 51),\n    COL_VERTEX(0, 719, -50),\n    COL_VERTEX(410, 0, -50),\n    COL_VERTEX(0, 0, -50),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(2, 3, 4),\n    COL_TRI(2, 4, 0),\n    COL_TRI(2, 1, 5),\n    COL_TRI(2, 5, 3),\n    COL_TRI(6, 5, 1),\n    COL_TRI(0, 6, 1),\n    COL_TRI(6, 7, 5),\n    COL_TRI(3, 5, 7),\n    COL_TRI(3, 7, 4),\n    COL_TRI(4, 7, 6),\n    COL_TRI(4, 6, 0),\n    COL_TRI_STOP(),\n    COL_END(),\n#endif\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/grill_door/geo.inc.c",
    "content": "// 0x0E000530\nconst GeoLayout hmc_geo_000530[] = {\n    GEO_CULLING_RADIUS(1000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, hmc_seg7_dl_0701FFF8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/grill_door/model.inc.c",
    "content": "// 0x0701FDC8 - 0x0701FEB8\nstatic const Vtx hmc_seg7_vertex_0701FDC8[] = {\n    {{{   410,      0,     51}, 0, {     0,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   410,    717,    -50}, 0, {   990,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   410,    717,     51}, 0, {     0,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   410,    717,     51}, 0, {  3034,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   410,    717,    -50}, 0, {  3034,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    717,    -50}, 0, { -1052,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    717,     51}, 0, { -1052,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    717,     51}, 0, {     0,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    717,    -50}, 0, {   990,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,    -50}, 0, {   990,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,     51}, 0, {     0,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,     51}, 0, { -1052,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,    -50}, 0, { -1052,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   410,      0,    -50}, 0, {  3034,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   410,      0,     51}, 0, {  3034,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701FEB8 - 0x0701FF68\nstatic const Vtx hmc_seg7_vertex_0701FEB8[] = {\n    {{{   410,    717,     51}, 0, {  2012,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,     51}, 0, { -2074,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   410,      0,     51}, 0, {  2012,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   410,      0,     51}, 0, {     0,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   410,      0,    -50}, 0, {   990,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   410,    717,    -50}, 0, {   990,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   410,      0,    -50}, 0, {  2012,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,      0,    -50}, 0, { -2074,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    717,    -50}, 0, { -2074,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   410,    717,    -50}, 0, {  2012,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,    717,     51}, 0, { -2074,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701FF68 - 0x0701FFF8\nstatic const Gfx hmc_seg7_dl_0701FF68[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_0701FDC8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_0701FEB8, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP1Triangle( 0, 10,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701FFF8 - 0x070200B0\nconst Gfx hmc_seg7_dl_0701FFF8[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_0701FF68),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/macro.inc.c",
    "content": "// 0x0702AA78 - 0x0702ADC2\nconst MacroObject hmc_seg7_macro_objs[] = {\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/ 315, /*pos*/ -6060,  2048,  5960, /*bhvParam*/ DIALOG_089),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/   0, /*pos*/ -6770,  1845,  4577, /*bhvParam*/ DIALOG_050),\n    MACRO_OBJECT               (/*preset*/ macro_swoop_2,                     /*yaw*/   0, /*pos*/  -439,   220, -2540),\n    MACRO_OBJECT               (/*preset*/ macro_swoop_1,                     /*yaw*/   0, /*pos*/    80,   140, -4660),\n    MACRO_OBJECT               (/*preset*/ macro_swoop_1,                     /*yaw*/   0, /*pos*/   800,    60, -7500),\n    MACRO_OBJECT               (/*preset*/ macro_swoop_2,                     /*yaw*/   0, /*pos*/  1880,   100, -7620),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/   0, /*pos*/  2500,   217,    50, /*bhvParam*/ DIALOG_071),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/   0, /*pos*/  2900,   217,    50, /*bhvParam*/ DIALOG_062),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/ 270, /*pos*/   838,  2052,  3580, /*bhvParam*/ DIALOG_088),\n    MACRO_OBJECT               (/*preset*/ macro_scuttlebug,                  /*yaw*/   0, /*pos*/ -6320,  2048,  6740),\n    MACRO_OBJECT               (/*preset*/ macro_scuttlebug,                  /*yaw*/   0, /*pos*/ -5455,  1536,   521),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  2140,  2048,  6540),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  2900,  2048,  6500),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  6400,  2090,  5320),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  6820,  1024,  3300),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  6260,  1124,  4960),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  4080,  1124,  5760),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  4640,  2250,  3980),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  2960,  1124,  5140),\n    MACRO_OBJECT               (/*preset*/ macro_box_metal_cap,               /*yaw*/  45, /*pos*/ -6924,  2440,  7364),\n    MACRO_OBJECT               (/*preset*/ macro_scuttlebug,                  /*yaw*/   0, /*pos*/  4160,    28,  6308),\n    MACRO_OBJECT               (/*preset*/ macro_scuttlebug,                  /*yaw*/   0, /*pos*/  5392,    28,  3587),\n    MACRO_OBJECT               (/*preset*/ macro_snufit,                      /*yaw*/   0, /*pos*/  2260,  -627, -1660),\n    MACRO_OBJECT               (/*preset*/ macro_snufit,                      /*yaw*/   0, /*pos*/  5760,  -623, -1600),\n    MACRO_OBJECT               (/*preset*/ macro_snufit,                      /*yaw*/   0, /*pos*/  4560,  -620, -1499),\n    MACRO_OBJECT               (/*preset*/ macro_box_metal_cap,               /*yaw*/   0, /*pos*/  5860,  -550,  -739),\n    MACRO_OBJECT               (/*preset*/ macro_box_metal_cap,               /*yaw*/   0, /*pos*/  1939,  -600, -2920),\n    MACRO_OBJECT               (/*preset*/ macro_box_metal_cap,               /*yaw*/   0, /*pos*/  5100,  -600, -4500),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,        /*yaw*/   0, /*pos*/ -6580,  1680, -5780),\n    MACRO_OBJECT               (/*preset*/ macro_breakable_box_no_coins,      /*yaw*/   0, /*pos*/  1022,  1848,  5120),\n    MACRO_OBJECT               (/*preset*/ macro_breakable_box_no_coins,      /*yaw*/   0, /*pos*/  3500,  2150,  3000),\n    MACRO_OBJECT               (/*preset*/ macro_scuttlebug_spawner,          /*yaw*/ 270, /*pos*/  3240, -4720,  2360),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_horizontal,        /*yaw*/   0, /*pos*/ -3600, -4240,  3600),\n    MACRO_OBJECT               (/*preset*/ macro_box_metal_cap,               /*yaw*/   0, /*pos*/ -3000, -2250, -6400),\n    MACRO_OBJECT               (/*preset*/ macro_scuttlebug_spawner,          /*yaw*/ 270, /*pos*/ -3420,  1800,  5960),\n    MACRO_OBJECT               (/*preset*/ macro_swoop_1,                     /*yaw*/   0, /*pos*/  6080,  3060,  4660),\n    MACRO_OBJECT               (/*preset*/ macro_swoop_1,                     /*yaw*/   0, /*pos*/  5480,  3000,  7120),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_horizontal,        /*yaw*/   0, /*pos*/ -2700,  2060, -6400),\n    MACRO_OBJECT               (/*preset*/ macro_swoop_2,                     /*yaw*/   0, /*pos*/ -5440,  1720,  -320),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,               /*yaw*/   0, /*pos*/ -2220,  2048,  4440),\n    MACRO_OBJECT               (/*preset*/ macro_recovery_heart,              /*yaw*/   0, /*pos*/ -7511,  1420,  -666),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/ 270, /*pos*/ -3359,  1536,   298, /*bhvParam*/ DIALOG_122),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/   0, /*pos*/ -3092,  2033, -7685, /*bhvParam*/ DIALOG_138),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/   0, /*pos*/  5439,     0,  2785, /*bhvParam*/ DIALOG_125),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/   0, /*pos*/ -3184,     0,   699, /*bhvParam*/ DIALOG_126),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/ 270, /*pos*/   500, -4300,  3644, /*bhvParam*/ DIALOG_127),\n    MACRO_OBJECT               (/*preset*/ macro_box_1up,                     /*yaw*/   0, /*pos*/ -4960,  2700,    80),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/ 180, /*pos*/  2006,     0,  6713, /*bhvParam*/ DIALOG_124),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/   0, /*pos*/  2510,     0,  2800, /*bhvParam*/ DIALOG_140),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/  90, /*pos*/   510,     0,  5380, /*bhvParam*/ DIALOG_139),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,               /*yaw*/   0, /*pos*/ -2340,  2040,  4560),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,               /*yaw*/   0, /*pos*/ -2460,  2040,  4660),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,               /*yaw*/   0, /*pos*/ -2060,  2040,  4380),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,               /*yaw*/   0, /*pos*/ -1920,  2040,  4320),\n    MACRO_OBJECT               (/*preset*/ macro_blue_coin_switch,            /*yaw*/   0, /*pos*/  5145,  -767, -2954),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/  3945, -1023, -2918),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/  3800, -1023, -4009),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/  3036,  -858, -4118),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/  2018,  -921, -4154),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/  1836,  -921, -4700),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/  1836,  -721, -4700),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/  1836,  -521, -4700),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,        /*yaw*/  90, /*pos*/  2800,   205,   463),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,        /*yaw*/  90, /*pos*/  1800,  -409, -7390),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal_flying, /*yaw*/ 144, /*pos*/ -5342,  2809, -1790),\n    MACRO_OBJECT               (/*preset*/ macro_swoop_2,                     /*yaw*/   0, /*pos*/  5632,  -563, -4454),\n    MACRO_OBJECT               (/*preset*/ macro_swoop_2,                     /*yaw*/   0, /*pos*/  4915,  -665, -5274),\n    MACRO_OBJECT               (/*preset*/ macro_swoop_1,                     /*yaw*/   0, /*pos*/  5120,  -665, -4660),\n    MACRO_OBJECT               (/*preset*/ macro_swoop_1,                     /*yaw*/   0, /*pos*/  5427,  -665, -5070),\n    MACRO_OBJECT               (/*preset*/ macro_snufit,                      /*yaw*/   0, /*pos*/  2439,  -722, -5499),\n    MACRO_OBJECT               (/*preset*/ macro_monty_mole_hole,             /*yaw*/   0, /*pos*/  2714,  -768, -4096),\n    MACRO_OBJECT               (/*preset*/ macro_monty_mole_hole,             /*yaw*/   0, /*pos*/  3011,  -768, -1272),\n    MACRO_OBJECT               (/*preset*/ macro_monty_mole_hole,             /*yaw*/   0, /*pos*/  3324,  -768, -1475),\n    MACRO_OBJECT               (/*preset*/ macro_monty_mole,                  /*yaw*/   0, /*pos*/  3940,  -768, -2880),\n    MACRO_OBJECT               (/*preset*/ macro_mr_i,                        /*yaw*/   0, /*pos*/  4740,  1060,  4680),\n    MACRO_OBJECT               (/*preset*/ macro_mr_i,                        /*yaw*/   0, /*pos*/  6700,  1020,  6820),\n    MACRO_OBJECT               (/*preset*/ macro_breakable_box_no_coins,      /*yaw*/   0, /*pos*/  2960,  1024,  5140),\n    MACRO_OBJECT               (/*preset*/ macro_breakable_box_no_coins,      /*yaw*/   0, /*pos*/  4080,  1024,  5760),\n    MACRO_OBJECT               (/*preset*/ macro_breakable_box_no_coins,      /*yaw*/   0, /*pos*/  6260,  1024,  4960),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/ 135, /*pos*/ -4370,  2860, -2243, /*bhvParam*/ DIALOG_043),\n    MACRO_OBJECT               (/*preset*/ macro_flamethrower,                /*yaw*/   0, /*pos*/ -2900,  1620,  4640),\n    MACRO_OBJECT               (/*preset*/ macro_fire_spitter,                /*yaw*/   0, /*pos*/  1420,  -380, -7040),\n    MACRO_OBJECT               (/*preset*/ macro_fire_spitter,                /*yaw*/   0, /*pos*/  2500,  -380, -7740),\n    MACRO_OBJECT               (/*preset*/ macro_box_1up_running_away,        /*yaw*/   0, /*pos*/ -2700,  2100, -6400),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/movtext.inc.c",
    "content": "// 0x0702B8E0\nstatic Movtex hmc_movtex_dorrie_pool_water_data[] = {\n    MOV_TEX_INIT_LOAD(    1),\n    MOV_TEX_ROT_SPEED(   20),\n    MOV_TEX_ROT_SCALE(   12),\n    MOV_TEX_4_BOX_TRIS(-7628, -2559),\n    MOV_TEX_4_BOX_TRIS(-7628,  7654),\n    MOV_TEX_4_BOX_TRIS(  563,  7654),\n    MOV_TEX_4_BOX_TRIS(  563, -2559),\n    MOV_TEX_ROT(     ROTATE_COUNTER_CLOCKWISE),\n    MOV_TEX_ALPHA(    0x96),\n    MOV_TEX_DEFINE(  TEXTURE_WATER),\n    MOV_TEX_END(),\n};\n\nconst struct MovtexQuadCollection hmc_movtex_dorrie_pool_water[] = {\n    {0, hmc_movtex_dorrie_pool_water_data},\n    {-1, NULL},\n};\n\n// 0x0702B910\nstatic Movtex hmc_movtex_toxic_maze_rot_count_clock_mist_data[] = {\n    MOV_TEX_INIT_LOAD(   1),\n    MOV_TEX_ROT_SPEED(  15),\n    MOV_TEX_ROT_SCALE(   3),\n    MOV_TEX_4_BOX_TRIS(1690, -6348),\n    MOV_TEX_4_BOX_TRIS(1690,   819),\n    MOV_TEX_4_BOX_TRIS(6298,   819),\n    MOV_TEX_4_BOX_TRIS(6298, -6348),\n    MOV_TEX_ROT(     ROTATE_COUNTER_CLOCKWISE),\n    MOV_TEX_ALPHA(   0x78),\n    MOV_TEX_DEFINE(  TEXTURE_MIST),\n    MOV_TEX_END(),\n};\n\n// 0x0702B930\nstatic Movtex hmc_movtex_toxic_maze_rot_clock_mist_data[] = {\n    MOV_TEX_INIT_LOAD(   1),\n    MOV_TEX_ROT_SPEED(   8),\n    MOV_TEX_ROT_SCALE(   3),\n    MOV_TEX_4_BOX_TRIS(1690, -6348),\n    MOV_TEX_4_BOX_TRIS(1690,   819),\n    MOV_TEX_4_BOX_TRIS(6298,   819),\n    MOV_TEX_4_BOX_TRIS(6298, -6348),\n    MOV_TEX_ROT(     ROTATE_CLOCKWISE),\n    MOV_TEX_ALPHA(   0xB4),\n    MOV_TEX_DEFINE(  TEXTURE_MIST),\n    MOV_TEX_END(),\n};\n\nconst struct MovtexQuadCollection hmc_movtex_toxic_maze_mist[] = {\n    {50, hmc_movtex_toxic_maze_rot_count_clock_mist_data},\n    {51, hmc_movtex_toxic_maze_rot_clock_mist_data},\n    {-1, NULL},\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/painting.inc.c",
    "content": "#include \"game/paintings.h\"\n\n// 0x070241B8 - 0x070241D0\nstatic const Lights1 hmc_seg7_lights_070241B8 = gdSPDefLights1(\n    0x50, 0x50, 0x50,\n    0xff, 0xff, 0xff, 0x32, 0x32, 0x32\n);\n\n// 0x070241D0 - 0x070241E8\n// No gdSPDefLights1 macro defined because of odd different light value (0xff and 0xfa)\nstatic const Lights1 hmc_seg7_lights_070241D0 = {\n    {{  {0x40, 0x40, 0x80}, 0, {0x40, 0x40, 0x80}, 0} },\n    {{{ {0x64, 0x64, 0xff}, 0, {0x64, 0x64, 0xfa}, 0, {0x28, 0x28, 0x28},0} }}\n};\n\n// Appears to lock 4 of the sides when shimmering and in use. Unused.\n// 0x070241E8 - 0x07024228\nstatic const Vtx hmc_seg7_vertex_070241E8[] = {\n    {{{     0,      0,      0}, 0, {   -32,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   614,      0,      0}, 0, {  6100,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   614,    614,      0}, 0, {  6100,  -5142}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,    614,      0}, 0, {   -32,  -5142}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07024228 - 0x07024268\nstatic const Vtx hmc_seg7_vertex_07024228[] = {\n    {{{     0,      0,      0}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   614,      0,      0}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   614,    614,      0}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,    614,      0}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// Unused\n// 0x07024268 - 0x070242A0\nconst Gfx hmc_seg7_dl_07024268[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPLight(&hmc_seg7_lights_070241B8.l, 1),\n    gsSPLight(&hmc_seg7_lights_070241B8.a, 2),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsSPVertex(hmc_seg7_vertex_070241E8, 4, 0),\n    gsSPEndDisplayList(),\n};\n\n// Unused\n// 0x070242A0 - 0x070242D0\nconst Gfx hmc_seg7_dl_070242A0[] = {\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x070242D0 - 0x070242F0\nstatic const Gfx hmc_seg7_painting_dl_070242D0[] = {\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x070242F0 - 0x07024CD2\nstatic const PaintingData hmc_seg7_pool_texture_map_070242F0[] = {\n    157, // num mappings\n    // Format:\n    // mesh vtx ID, texture X, texture Y\n      0, 6100, -4832,\n      1, 6100, -5142,\n      2, 5582, -5142,\n      3, 5582, -4526,\n      4, 6100, -4218,\n      5, 5070, -4832,\n      6, 5070, -5142,\n      7, 3030, -5142,\n      8, 3030, -4832,\n      9, 3540, -5142,\n     10, 2520, -5142,\n     11, 2520, -4526,\n     12, 3030, -4218,\n     13, 3540, -4526,\n     14, 4050, -4832,\n     15, 4560, -5142,\n     16, 5070, -4218,\n     17, 4560, -4526,\n     18, 4050, -4218,\n     19, 5582, -2074,\n     20, 6100, -2380,\n     21, 5582, -3300,\n     22, 6100, -2994,\n     23, 5582, -2686,\n     24, 5070, -2380,\n     25, 4560, -2074,\n     26, 4560, -3300,\n     27, 5070, -2994,\n     28, 5070, -3606,\n     29, 4050, -2380,\n     30, 4560, -2686,\n     31, 3540, -2074,\n     32, 4050, -3606,\n     33, 3540, -3300,\n     34, 4050, -2994,\n     35, 3540, -2686,\n     36, 3030, -2380,\n     37, 2520, -2074,\n     38, 3030, -2994,\n     39, 2520, -3300,\n     40, 3030, -3606,\n     41, 6100, -3606,\n     42, 5582, -3912,\n     43, 4560, -3912,\n     44, 3540, -3912,\n     45, 2520, -3912,\n     46, 4050, -1768,\n     47, 5070, -1768,\n     48, 3030, -1768,\n     49, 6100,   684,\n     50, 6100,   990,\n     51, 5582,   990,\n     52, 5582,  -236,\n     53, 6100,    70,\n     54, 5070,   684,\n     55, 5582,   378,\n     56, 4560,   990,\n     57, 5070,   990,\n     58, 4560,  -236,\n     59, 5070,    70,\n     60, 5070,  -542,\n     61, 4050,   684,\n     62, 4560,   378,\n     63, 3540,   990,\n     64, 4050,   990,\n     65, 4050,    70,\n     66, 3540,  -236,\n     67, 4050,  -542,\n     68, 3030,   684,\n     69, 3540,   378,\n     70, 2520,   990,\n     71, 3030,   990,\n     72, 2520,  -236,\n     73, 3030,    70,\n     74, 3030,  -542,\n     75, 6100,  -542,\n     76, 5582, -1462,\n     77, 6100, -1154,\n     78, 5582,  -848,\n     79, 4560, -1462,\n     80, 5070, -1154,\n     81, 4560,  -848,\n     82, 3540, -1462,\n     83, 4050, -1154,\n     84, 3540,  -848,\n     85, 2520, -1462,\n     86, 3030, -1154,\n     87, 2010, -4832,\n     88,    0, -5142,\n     89,    0, -4832,\n     90,  478, -5142,\n     91,  478, -4526,\n     92,  988, -4832,\n     93, 2010, -4218,\n     94, 1498, -4526,\n     95, 1498, -5142,\n     96,  988, -4218,\n     97, 2520, -2686,\n     98, 2010, -2380,\n     99, 1498, -2074,\n    100, 1498, -3300,\n    101, 2010, -2994,\n    102, 2010, -3606,\n    103, 1498, -2686,\n    104,  988, -2380,\n    105,  478, -2074,\n    106,  478, -3300,\n    107,  988, -2994,\n    108,  988, -3606,\n    109,  478, -2686,\n    110,    0, -2380,\n    111,    0, -3606,\n    112, 1498, -3912,\n    113,  478, -3912,\n    114, 1498, -1462,\n    115,  988, -1768,\n    116, 2010, -1768,\n    117,    0, -1768,\n    118,  478, -1462,\n    119, 2010,   684,\n    120, 2520,   378,\n    121, 2010,   990,\n    122, 1498,   990,\n    123, 2010,  -542,\n    124, 2010,    70,\n    125, 1498,  -236,\n    126,  988,   684,\n    127, 1498,   378,\n    128,  988,   990,\n    129,  478,   990,\n    130,  478,  -236,\n    131,  988,    70,\n    132,  988,  -542,\n    133,    0,   684,\n    134,  478,   378,\n    135,    0,  -542,\n    136, 2520,  -848,\n    137, 2010, -1154,\n    138, 1498,  -848,\n    139,  988, -1154,\n    140,  478,  -848,\n    141, 4050, -5142,\n    142, 6100, -2074,\n    143, 6100, -1768,\n    144, 5070, -2074,\n    145, 4050, -2074,\n    146, 3030, -2074,\n    147, 2010, -5142,\n    148,    0, -4218,\n    149,  988, -5142,\n    150, 2010, -2074,\n    151,  988, -2074,\n    152,    0, -2994,\n    153,    0, -2074,\n    154,    0, -1154,\n    155,    0,    70,\n    156,    0,   990,\n\n    264, // num groups\n    // Grouped by 5 + one remainder group,\n    // = 15 vertices per group + a few extra triangles\n      8,  12,  13,\n      0,   1,   2,\n      3,   0,   2,\n      4,   0,   3,\n      5,   2,   6,\n      2,   5,   3,\n      7,   8,   9,\n      8,   7,  10,\n     11,   8,  10,\n     12,   8,  11,\n      9,   8,  13,\n     13,  14,   9,\n     14, 141,   9,\n      5,   6,  15,\n      5,  16,   3,\n     16,   5,  17,\n     17,   5,  15,\n     14,  15, 141,\n     15,  14,  17,\n     18,  14,  13,\n     14,  18,  17,\n     19, 142,  20,\n     19,  20,  23,\n     28,  27,  21,\n     21,  23,  22,\n     22,  41,  21,\n     20,  22,  23,\n     23,  24,  19,\n     21,  27,  23,\n     24,  23,  27,\n     25, 144,  24,\n     19,  24, 144,\n     24,  27,  30,\n     25,  24,  30,\n     26,  30,  27,\n     27,  28,  26,\n     36,  38,  97,\n     26,  34,  30,\n     29,  30,  34,\n     30,  29,  25,\n     25,  29, 145,\n     31, 145,  29,\n     31,  29,  35,\n     29,  34,  35,\n     32,  34,  26,\n     33,  35,  34,\n     34,  32,  33,\n     33,  38,  35,\n     35,  36,  31,\n     36,  35,  38,\n     37,  36,  97,\n     37, 146,  36,\n     31,  36, 146,\n     28,  16,  43,\n     38,  40,  39,\n     39,  97,  38,\n     40,  38,  33,\n     21,  41,  42,\n     41,   4,  42,\n      3,  42,   4,\n     42,  28,  21,\n     28,  42,  16,\n      3,  16,  42,\n     26,  28,  43,\n     17,  43,  16,\n     43,  32,  26,\n     32,  43,  18,\n     17,  18,  43,\n     33,  32,  44,\n     32,  18,  44,\n     13,  44,  18,\n     44,  40,  33,\n     13,  12,  44,\n     40,  44,  12,\n     39,  40,  45,\n     40,  12,  45,\n     48,  31, 146,\n     11,  45,  12,\n     25,  47, 144,\n     46,  25, 145,\n     47,  19, 144,\n     19, 143, 142,\n     31,  46, 145,\n     60,  59,  52,\n     49,  53,  55,\n     50,  49,  51,\n     51,  49,  55,\n     52,  55,  53,\n     53,  75,  52,\n     54,  55,  59,\n     52,  59,  55,\n     55,  54,  51,\n     54,  59,  62,\n     56,  54,  62,\n     57,  54,  56,\n     54,  57,  51,\n     58,  62,  59,\n     59,  60,  58,\n     68,  71,  63,\n     61,  62,  65,\n     58,  65,  62,\n     62,  61,  56,\n     61,  65,  69,\n     63,  61,  69,\n     64,  61,  63,\n     61,  64,  56,\n     65,  67,  66,\n     66,  69,  65,\n     67,  65,  58,\n     68,  69,  73,\n     69,  68,  63,\n     66,  73,  69,\n     68,  73, 120,\n     70,  68, 120,\n     71,  68,  70,\n     72, 120,  73,\n     73,  74,  72,\n     74,  73,  66,\n     75,  77,  78,\n     52,  75,  78,\n     76,  78,  77,\n     77, 143,  76,\n     76,  80,  78,\n     60,  78,  80,\n     78,  60,  52,\n     46,  83,  79,\n     58,  60,  81,\n     60,  80,  81,\n     79,  81,  80,\n     80,  47,  79,\n     47,  80,  76,\n     81,  67,  58,\n     67,  81,  83,\n     79,  83,  81,\n     66,  67,  84,\n     67,  83,  84,\n     82,  84,  83,\n     83,  46,  82,\n     84,  74,  66,\n     82,  86,  84,\n     74,  84,  86,\n     74,  86, 136,\n     72,  74, 136,\n     85, 136,  86,\n     86,  48,  85,\n     48,  86,  82,\n     25,  46,  79,\n     79,  47,  25,\n     82,  46,  31,\n     19,  47,  76,\n     76, 143,  19,\n     31,  48,  82,\n     37,  48, 146,\n     85,  48,  37,\n     10,  87,  11,\n     87,  10, 147,\n     92,  95, 149,\n     88,  89,  90,\n     89, 148,  91,\n     90,  89,  91,\n     91,  92,  90,\n     92, 149,  90,\n     93,  87,  94,\n     87,  93,  11,\n     94,  87,  95,\n     87, 147,  95,\n     95,  92,  94,\n     96,  92,  91,\n     92,  96,  94,\n     39, 101,  97,\n     97,  98,  37,\n     98,  97, 101,\n     99,  98, 103,\n     99, 150,  98,\n     37,  98, 150,\n     98, 101, 103,\n    100, 103, 101,\n    101, 102, 100,\n    102, 101,  39,\n    100, 107, 103,\n    103, 104,  99,\n    104, 103, 107,\n    105, 104, 109,\n    105, 151, 104,\n     99, 104, 151,\n    104, 107, 109,\n    106, 109, 107,\n    107, 108, 106,\n    108, 107, 100,\n    109, 110, 105,\n    106, 152, 109,\n    110, 109, 152,\n    105, 110, 153,\n    111, 152, 106,\n     11,  93,  45,\n    102,  45,  93,\n     45, 102,  39,\n    102,  93, 112,\n    100, 102, 112,\n     94, 112,  93,\n    112, 108, 100,\n    108, 112,  96,\n     94,  96, 112,\n    106, 108, 113,\n    108,  96, 113,\n     91, 113,  96,\n     91, 148, 113,\n    113, 111, 106,\n    111, 113, 148,\n    114, 116,  99,\n     99, 115, 114,\n    115,  99, 151,\n     99, 116, 150,\n     72, 124, 120,\n    116,  37, 150,\n     37, 116,  85,\n    117, 105, 153,\n    105, 115, 151,\n    105, 117, 118,\n    118, 115, 105,\n    119, 120, 124,\n    120, 119,  70,\n    119, 124, 127,\n    119, 121,  70,\n    121, 119, 122,\n    122, 119, 127,\n    123, 124,  72,\n    124, 123, 125,\n    125, 127, 124,\n    126, 127, 131,\n    127, 126, 122,\n    125, 131, 127,\n    126, 131, 134,\n    128, 126, 129,\n    129, 126, 134,\n    126, 128, 122,\n    136, 123,  72,\n    130, 134, 131,\n    131, 132, 130,\n    132, 131, 125,\n    133, 134, 155,\n    134, 133, 129,\n    130, 155, 134,\n    133, 156, 129,\n    135, 155, 130,\n    123, 136, 137,\n     85, 137, 136,\n    139, 115, 118,\n    123, 137, 138,\n    125, 123, 138,\n    114, 138, 137,\n    137, 116, 114,\n    116, 137,  85,\n    114, 139, 138,\n    132, 138, 139,\n    138, 132, 125,\n    132, 139, 140,\n    130, 132, 140,\n    115, 139, 114,\n    118, 140, 139,\n    135, 140, 154,\n    118, 154, 140,\n    140, 135, 130,\n    117, 154, 118,\n};\n\n// 0x07024CD4\nstatic const PaintingData *const hmc_seg7_painting_texture_maps_07024CD4[] = {\n    hmc_seg7_pool_texture_map_070242F0,\n};\n\nUNUSED static const u64 hmc_unused_0 = 0;\n\n\n// 0x07024CE0 - 0x070254E0\nALIGNED8 static const Texture hmc_seg7_texture_07024CE0[] = {\n#include \"levels/hmc/7.rgba16.inc.c\"\n};\n\n// 0x070254E0 - 0x07025518\nstatic const Gfx hmc_seg7_painting_dl_070254E0[] = {\n    gsDPPipeSync(),\n    gsSPLight(&hmc_seg7_lights_070241D0.l, 1),\n    gsSPLight(&hmc_seg7_lights_070241D0.a, 2),\n    gsSPVertex(hmc_seg7_vertex_07024228, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07025518 - 0x07025594\nconst Texture *const hmc_seg7_painting_textures_07025518[] = {\n    hmc_seg7_texture_07024CE0,\n};\n\n// 0x0702551C (PaintingData)\nstruct Painting cotmc_painting = {\n    /* id */ 0x000E,\n    /* Image Count */ 0x01,\n    /* Texture Type */ PAINTING_ENV_MAP,\n    /* Floor Status */ 0x00, 0x00 , 0x00 /* which of the painting's nearby special floors Mario's on */,\n    /* Ripple Status */ 0x00,\n    /* Rotation */ 270.0f,  0.0f,\n    /* Position */ 2989.055908f, -4485.120117f, 5135.359863f,\n    /*                         curr   passive     entry */\n    /* Ripple Magnitude */     0.0f,    10.0f,    30.0f,\n    /* Ripple Decay */         1.0f,     1.0f,    0.98f,\n    /* Ripple Rate */          0.0f,    0.05f,    0.05f,\n    /* Ripple Dispersion */    0.0f,    15.0f,    15.0f,\n    /* Curr Ripple Timer */    0.0f,\n    /* Curr Ripple x, y */     0.0f,  0.0f,\n    /* Normal DList */ hmc_seg7_painting_dl_070254E0,\n    /* Texture Maps */ hmc_seg7_painting_texture_maps_07024CD4,\n    /* Textures */     hmc_seg7_painting_textures_07025518,\n    /* Texture w, h */ 32, 32,\n    /* Ripple DList */ hmc_seg7_painting_dl_070242D0,\n    /* Ripple Trigger */ RIPPLE_TRIGGER_CONTINUOUS,\n    /* Alpha */ 0xFF,\n    /* Mario Below */  0x00, 0x00, 0x00, /* Whether or not Mario is below the painting */\n    /* Size */  723.968018f,\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/room.inc.c",
    "content": "// 0x0702ADC4 - 0x0702B5E4\nconst RoomData hmc_seg7_rooms[] = {\n    17,  8,  8,  8,  8,  8,  8, 17, // 0-7\n    17,  8,  8,  8, 17,  8,  8,  8, // 8-15\n     8,  8,  8,  8,  8,  8,  8,  8, // 16-23\n     8,  8,  8,  8,  8,  8,  8,  8, // 24-31\n     8,  8,  8, 16,  8,  8,  8,  8, // 32-39\n     8, 16,  7,  7,  7,  7,  7,  7, // 40-47\n     7,  7,  7,  7,  7,  7,  7,  7, // 48-55\n     7,  7,  7,  7,  7,  7,  7, 16, // 56-63\n    16,  7,  7,  7,  7,  7,  7,  7, // 64-71\n     7,  7,  7,  7,  7,  7,  7,  7, // 72-79\n     7,  7,  7,  7,  7,  7,  7,  7, // 80-87\n     7,  7,  7,  7,  7,  7,  7,  7, // 88-95\n     7,  7,  7,  7,  7,  7,  7,  7, // 96-103\n     7,  7,  7,  7,  7,  7,  7,  7, // 104-111\n     7,  7,  7,  7,  7,  7,  7,  7, // 112-119\n     7,  7,  7,  7,  7,  7,  6,  7, // 120-127\n     7,  7,  7,  7,  6,  6,  6,  6, // 128-135\n     6,  6,  6,  6,  6,  6,  6,  6, // 136-143\n     6,  6,  6,  6,  6,  6,  6,  6, // 144-151\n     6,  6,  6,  6,  6,  6,  6,  6, // 152-159\n     6,  6,  6,  6,  6,  6,  6,  6, // 160-167\n     6,  6,  6,  6,  6,  6,  6,  6, // 168-175\n     6,  6,  6,  6,  6,  6,  6,  6, // 176-183\n     6,  6,  6,  6,  6,  6,  6,  6, // 184-191\n     6,  6,  6,  6,  6,  6,  6,  6, // 192-199\n     6,  6,  6,  6,  6,  6,  6,  6, // 200-207\n     6,  6,  6,  6,  6,  6,  6,  6, // 208-215\n     6,  6,  6,  6,  6,  6,  6,  6, // 216-223\n     6,  6,  6,  6,  6,  6,  6,  6, // 224-231\n     6,  6,  6,  6,  6,  6,  6,  6, // 232-239\n     6,  6,  6,  6,  6,  6,  6,  6, // 240-247\n     6,  6,  6,  6,  6,  6,  6,  6, // 248-255\n     6,  6,  6,  6,  6,  6,  6,  6, // 256-263\n     6,  6,  6,  6,  6,  6,  6,  6, // 264-271\n     6,  6,  6,  6, 17, 17,  6,  6, // 272-279\n     6,  6,  6,  6,  6,  6,  6,  6, // 280-287\n     6,  6,  6,  6,  6,  6,  6,  6, // 288-295\n     6,  6,  6,  6,  6,  6,  6,  6, // 296-303\n     6,  6,  6,  6,  6,  6,  6,  6, // 304-311\n     6,  6, 17, 17,  6,  6,  6,  6, // 312-319\n     6, 15, 15,  6,  6,  6,  6, 14, // 320-327\n    14,  6,  6,  6,  6,  6,  6,  6, // 328-335\n     6,  6,  6,  6,  6,  6,  6,  6, // 336-343\n     6,  6,  6,  6,  6,  6,  6,  6, // 344-351\n     6,  6,  6,  6,  6,  6,  6,  6, // 352-359\n     6,  6,  6,  6,  6,  6,  6,  6, // 360-367\n     6,  6,  6,  6,  6,  6,  6,  6, // 368-375\n     6,  6,  6, 16,  6,  6,  6,  6, // 376-383\n     6, 16,  6,  6,  6,  6,  6,  6, // 384-391\n     6,  6,  6,  6,  6,  6,  6,  6, // 392-399\n     6,  6,  6,  6,  6,  6,  6,  6, // 400-407\n     6,  6,  6,  6,  6,  6,  6,  6, // 408-415\n     6,  6,  6,  6,  6,  6,  6,  6, // 416-423\n     6,  6,  6,  6,  6,  6,  6,  6, // 424-431\n     6,  6,  6,  6,  6,  6,  6,  6, // 432-439\n     6,  6,  6,  6,  6,  6,  6,  6, // 440-447\n     6,  6,  6,  6,  6,  6,  6,  6, // 448-455\n     6,  6,  6,  6,  6,  6,  6,  6, // 456-463\n    15,  6,  6,  6,  6,  6,  6, 15, // 464-471\n    15,  4,  4,  6,  6,  6,  6,  6, // 472-479\n     4,  4,  6,  6,  6,  6,  6,  6, // 480-487\n     6,  6,  3,  6,  3, 14, 14,  6, // 488-495\n    14, 14,  3,  6,  6,  3,  6,  6, // 496-503\n     6,  3,  3,  6,  6,  6,  6,  6, // 504-511\n     6,  6,  6,  6,  5,  6,  6,  6, // 512-519\n     6,  6, 16, 16,  5,  5, 18, 18, // 520-527\n     5,  5,  5,  5,  5,  5,  5,  5, // 528-535\n    18, 18,  5, 13,  5,  5,  5,  5, // 536-543\n     5,  5,  5,  5,  5, 13,  5,  5, // 544-551\n     5,  4,  4, 18,  5,  5,  5,  5, // 552-559\n     5,  5,  5,  5,  5,  5,  5,  5, // 560-567\n     5,  5,  5,  5,  5,  5,  5,  5, // 568-575\n     5,  5,  5,  5,  5,  5,  5,  5, // 576-583\n     5,  5,  5,  5,  5,  5,  5,  5, // 584-591\n     5, 13, 13,  5,  5,  5,  5,  5, // 592-599\n     5,  5,  5,  5,  3,  3,  3,  3, // 600-607\n     3, 13, 13,  3,  5,  5,  5,  5, // 608-615\n     5,  5,  5,  5,  5,  5,  5,  4, // 616-623\n     4,  4,  4,  4,  4,  4,  4,  4, // 624-631\n     4,  4,  4,  4,  4,  4,  4,  4, // 632-639\n     4,  4,  4,  4,  4,  4,  4,  4, // 640-647\n    12,  4,  4, 12,  4,  4,  4,  4, // 648-655\n     4,  4,  4,  4,  4,  4,  4,  4, // 656-663\n     4,  4,  4,  4,  4,  4,  4,  4, // 664-671\n     4,  4,  4,  4,  4,  4,  4,  4, // 672-679\n     4,  4,  4,  4,  4,  4,  4,  4, // 680-687\n     4,  4,  4,  4,  4,  4,  4,  4, // 688-695\n     4,  4,  4,  4,  4,  4,  4,  4, // 696-703\n     4, 15, 15,  4,  4,  4,  4, 10, // 704-711\n     4, 10,  4,  4, 18,  4,  4,  4, // 712-719\n    18,  4,  4,  4,  4,  4,  4,  4, // 720-727\n     4,  4,  4,  4,  4,  4, 10,  4, // 728-735\n     4, 10,  4,  4,  4,  4,  4,  4, // 736-743\n     4,  4,  4,  4,  4,  4,  4,  4, // 744-751\n     4,  4,  4,  4,  4,  4,  4,  4, // 752-759\n     4,  4,  4,  4,  4,  4,  4,  4, // 760-767\n     4,  4,  4,  4,  4,  4,  4,  4, // 768-775\n     4,  4,  4,  4,  4,  4,  4,  4, // 776-783\n     4,  4,  4,  4,  4,  4,  4,  4, // 784-791\n     4,  4, 18,  4,  4,  4,  4,  4, // 792-799\n     4,  4,  4,  4,  4,  4,  4,  4, // 800-807\n     4,  4,  4,  4,  4,  4,  4,  4, // 808-815\n     4,  4,  4,  4,  4,  4,  1,  1, // 816-823\n     1,  4,  4,  4,  1,  1, 10, 10, // 824-831\n     1,  4,  4,  4,  4,  4,  4,  4, // 832-839\n     4,  4,  4, 12, 12,  4,  4,  4, // 840-847\n     4,  4,  4,  4,  4,  4,  4,  4, // 848-855\n     4,  4,  4,  4,  4,  4,  4,  4, // 856-863\n     4, 15,  4,  4,  4,  4,  4,  4, // 864-871\n     4,  4,  4,  4,  4,  4,  4,  4, // 872-879\n     4,  4,  4,  3,  4,  4, 11, 11, // 880-887\n     3,  3,  3,  3,  3,  3,  3,  3, // 888-895\n     3,  3,  3,  3,  3,  3,  3,  3, // 896-903\n     3,  3,  3,  3,  3,  3,  3,  3, // 904-911\n     3,  3,  3,  3,  3,  3,  3,  3, // 912-919\n     3,  3,  3,  3,  3, 11, 11,  3, // 920-927\n     3,  2,  3,  3,  3,  3, 11, 11, // 928-935\n     3,  3,  3,  3,  3,  3, 13, 13, // 936-943\n     3,  3,  3,  3,  3, 14, 14,  3, // 944-951\n     3,  3,  3,  3,  3,  3,  3,  3, // 952-959\n     3,  3,  3,  3,  3,  3,  3,  3, // 960-967\n     3,  3,  3,  3,  3,  3,  3,  3, // 968-975\n     3,  3,  3,  3,  3,  3,  3,  3, // 976-983\n     3,  3,  3,  3,  3,  3,  3,  3, // 984-991\n     3,  3,  3,  3,  3,  3,  3,  3, // 992-999\n     3,  3,  3,  3,  3,  3,  3,  3, // 1000-1007\n     3,  3,  3,  3,  3,  3,  3,  3, // 1008-1015\n     3,  3,  3,  3,  3,  3,  3,  3, // 1016-1023\n     3,  3,  3,  3,  3,  3,  3,  3, // 1024-1031\n     3,  3,  3,  3,  3,  3,  3,  3, // 1032-1039\n     3,  3,  3,  3,  3,  3,  3,  3, // 1040-1047\n     3,  3,  3,  3,  3,  3,  3,  3, // 1048-1055\n     3,  3,  3,  3,  3,  3,  3,  3, // 1056-1063\n     3,  3,  3,  3,  3,  3,  3,  3, // 1064-1071\n     3,  3,  3,  3,  3,  3,  3,  3, // 1072-1079\n     3,  3,  3,  3,  3,  3,  3,  3, // 1080-1087\n     3,  3,  3,  3,  3,  3,  3,  3, // 1088-1095\n     3,  3,  3,  3,  3,  3,  3,  3, // 1096-1103\n     3,  3,  3,  3,  3,  3,  3,  3, // 1104-1111\n     3,  3,  3,  3,  3,  3,  3,  3, // 1112-1119\n     3,  3,  3,  3,  3,  3,  3,  3, // 1120-1127\n     3,  3,  3,  3,  3,  3,  3,  3, // 1128-1135\n     3,  3,  3,  3,  3,  3,  3,  3, // 1136-1143\n     3,  3,  3,  3,  3,  3,  3,  3, // 1144-1151\n     3,  3,  3,  3,  3,  3,  3,  3, // 1152-1159\n     3,  3,  3,  3,  3,  3,  3,  3, // 1160-1167\n     3,  3,  3,  3,  3,  3,  3,  3, // 1168-1175\n     3,  3,  3,  3,  3,  3,  3,  3, // 1176-1183\n     3,  3,  3,  3,  3,  3,  3,  3, // 1184-1191\n     3,  3,  3,  3,  3,  3,  3,  3, // 1192-1199\n     3,  3,  3,  3,  3,  3,  3,  3, // 1200-1207\n     3,  3,  3,  3,  3,  3,  3,  3, // 1208-1215\n     3,  3,  3,  3,  3,  3,  3,  3, // 1216-1223\n     3,  3,  3,  3,  3,  3,  3,  3, // 1224-1231\n     3,  3,  3,  3,  3,  3,  3,  3, // 1232-1239\n     3,  3,  3,  3,  3,  3,  3,  3, // 1240-1247\n     3,  3,  3,  3,  3,  3,  3,  3, // 1248-1255\n     3,  3,  3,  3,  3,  3,  3,  3, // 1256-1263\n     3,  3,  3,  3,  3,  3,  2,  3, // 1264-1271\n     3, 11, 11,  3,  3,  3,  3,  3, // 1272-1279\n     3,  3,  3,  3,  3,  3,  3,  3, // 1280-1287\n     3,  3,  3,  3,  3,  2,  3,  3, // 1288-1295\n     3,  3,  2,  2,  2,  2,  2,  2, // 1296-1303\n     2,  2,  2,  2,  2,  2,  2,  2, // 1304-1311\n     2,  2,  2,  2,  2,  2,  2,  2, // 1312-1319\n     2,  2,  2,  2,  2,  2,  2,  2, // 1320-1327\n     2,  2,  2,  2,  2,  2,  2,  2, // 1328-1335\n     2,  2,  2,  2,  2,  2,  2,  2, // 1336-1343\n     2,  2,  2,  2,  2,  2,  2,  2, // 1344-1351\n     2, 11, 11,  2,  2,  2,  2,  2, // 1352-1359\n     2,  2,  2,  2,  2,  2,  2,  2, // 1360-1367\n     2,  2,  2,  2,  2,  2,  2,  2, // 1368-1375\n     2,  2,  2,  2,  2,  2,  2,  2, // 1376-1383\n     2,  2,  2,  2,  2,  2,  2,  2, // 1384-1391\n     2,  2,  2,  2,  2,  2,  2,  2, // 1392-1399\n     2,  2,  2,  2,  2,  2,  2,  2, // 1400-1407\n     2,  2,  2,  2,  2,  2,  2,  2, // 1408-1415\n     2,  2,  2,  2,  2,  2,  2,  2, // 1416-1423\n     2,  2,  2,  2,  2,  2,  2,  2, // 1424-1431\n     2,  2,  2,  2,  2,  2,  2,  2, // 1432-1439\n     2,  2,  2,  2,  2,  2,  2,  2, // 1440-1447\n     2,  2,  2,  2,  2,  2,  2,  2, // 1448-1455\n     2,  2,  2,  2,  2,  2,  2,  2, // 1456-1463\n     2,  2,  2,  2,  2,  2,  2,  2, // 1464-1471\n     2,  2,  2,  2,  2,  2,  2,  2, // 1472-1479\n     2,  2,  2,  2,  2,  2,  2,  2, // 1480-1487\n     2,  2,  2,  2,  2,  2,  2,  2, // 1488-1495\n     2,  2,  2,  2,  2,  2,  2,  2, // 1496-1503\n     2,  2,  2,  2,  2,  2,  2,  2, // 1504-1511\n     2,  2,  2,  2,  2,  2,  2,  2, // 1512-1519\n     2,  2,  2,  2,  2,  2,  2,  2, // 1520-1527\n     2,  2,  2,  2,  2,  2,  2,  2, // 1528-1535\n    11,  2,  2,  2,  2,  2,  2,  2, // 1536-1543\n    11,  2,  2,  2,  2,  2,  2,  2, // 1544-1551\n     2,  2,  2,  2,  2,  2,  2,  2, // 1552-1559\n     2,  2,  2,  2,  2,  2,  2,  2, // 1560-1567\n     2,  2,  2,  2,  2,  2,  2,  2, // 1568-1575\n     2,  2,  2,  2,  2,  2,  2,  2, // 1576-1583\n     2,  2, 11, 11,  2,  2,  2,  2, // 1584-1591\n     2,  2,  2,  2,  2,  2,  2,  2, // 1592-1599\n     2,  2,  9,  9,  2,  2,  2,  2, // 1600-1607\n     2,  2,  2,  2,  2,  2,  2,  2, // 1608-1615\n     2,  2,  2,  2,  2,  2,  2,  2, // 1616-1623\n     2,  2,  2,  2,  2,  2,  2,  2, // 1624-1631\n     2,  2,  2,  2,  2,  2,  2,  2, // 1632-1639\n     2,  2,  2,  2,  2,  2,  2,  2, // 1640-1647\n     2,  2,  2,  2,  2,  2,  2, 11, // 1648-1655\n    11,  2,  2,  2,  2,  1,  2,  2, // 1656-1663\n     2,  2,  1,  1,  1,  1,  1,  1, // 1664-1671\n     1,  1,  1,  1,  1,  1,  1,  1, // 1672-1679\n     1,  1,  1,  1,  1,  1,  1, 10, // 1680-1687\n    10,  1,  1,  1,  1,  1,  1,  1, // 1688-1695\n     1,  9,  9,  1,  1,  1,  1,  1, // 1696-1703\n     1,  1,  1,  1,  1,  1,  1,  1, // 1704-1711\n     1,  1,  1,  1,  1,  1,  1,  1, // 1712-1719\n     1,  1,  1,  1,  1,  1,  1,  1, // 1720-1727\n     1,  1,  1,  1,  1,  1,  1,  1, // 1728-1735\n     1,  1,  1,  1,  1,  1,  1,  1, // 1736-1743\n     1,  1,  1,  1,  1,  1,  1,  1, // 1744-1751\n     1,  1,  1,  1,  1,  1,  1,  1, // 1752-1759\n     1,  1,  1,  1,  1,  1,  1,  1, // 1760-1767\n     1,  1,  1,  1,  1,  1,  1,  1, // 1768-1775\n     1,  1,  1,  1,  1,  1,  1,  1, // 1776-1783\n     1,  1,  1,  1,  1,  1,  1,  1, // 1784-1791\n     1,  1,  1,  1,  1,  1,  1,  1, // 1792-1799\n     1,  1,  1,  1,  1,  1,  1,  1, // 1800-1807\n     1,  1,  1,  1,  1,  1,  1,  1, // 1808-1815\n     1,  1,  1,  1,  1,  1,  1,  1, // 1816-1823\n     1,  1,  1,  1,  1,  1,  1,  1, // 1824-1831\n     1,  1,  1,  1,  1,  1,  1,  1, // 1832-1839\n     1,  1,  1,  1,  1,  1,  1,  1, // 1840-1847\n     1,  1,  7,  1,  1,  1,  9,  1, // 1848-1855\n     9,  1,  1,  1,  1,  4,  4,  4, // 1856-1863\n     4,  4,  4,  4,  4,  4,  4,  4, // 1864-1871\n     4,  4,  4,  4,  4,  8,  8,  4, // 1872-1879\n     4,  1,  1,  6,  6,  6,  6,  6, // 1880-1887\n     6,  6,  6,  6,  6,  6,  6,  6, // 1888-1895\n     4,  6,  6,  6,  4,  4,  4,  4, // 1896-1903\n     4,  2,  4,  4,  4,  4,  4,  4, // 1904-1911\n     4,  4,  4,  4,  2,  2,  2,  2, // 1912-1919\n     2,  2,  2,  2,  2,  2,  2,  2, // 1920-1927\n     2,  2,  2,  2,  2,  2,  2,  2, // 1928-1935\n     2,  2,  2,  2,  2,  2,  2,  2, // 1936-1943\n     2,  2,  2,  2,  2,  2,  2,  4, // 1944-1951\n     4,  4,  4,  4,  4,  4,  4,  4, // 1952-1959\n     4,  4,  4,  4,  4,  4,  4,  4, // 1960-1967\n     4,  4,  4,  6,  6,  6,  6,  6, // 1968-1975\n     6,  6,  6,  6,  6,  6,  6,  6, // 1976-1983\n     6,  6,  6,  6,  6,  6,  6,  6, // 1984-1991\n     6,  6,  6,  6,  6,  6,  6,  6, // 1992-1999\n     6,  6,  6,  6,  6,  6,  6,  6, // 2000-2007\n     6,  6,  6,  6,  6,  6,  6,  6, // 2008-2015\n     6,  6,  6,  6,  6,  6,  6,  7, // 2016-2023\n     7,  7,  7,  7,  7,  7,  7,  7, // 2024-2031\n     7,  7,  7,  7,  7,  7,  7,  2, // 2032-2039\n     2,  2,  9,  9,  2,  2,  2,  2, // 2040-2047\n     2,  2,  2,  2,  2,  2,  2,  2, // 2048-2055\n     2,  2,  2,  2,  2,  2,  2,  2, // 2056-2063\n     2,  2,  2,  2,  2,  2,  2,  2, // 2064-2071\n     2,  2,  2,  2,  7,  7,  7,  7, // 2072-2079\n};\n"
  },
  {
    "path": "levels/hmc/areas/1/trajectory.inc.c",
    "content": "// 0x0702B86C - 0x0702B8E0\nconst Trajectory hmc_seg7_trajectory_0702B86C[] = {\n    TRAJECTORY_POS(0, /*pos*/ 1272, 2000, 5120),\n    TRAJECTORY_POS(1, /*pos*/ 1272, 2000, 3500),\n    TRAJECTORY_POS(2, /*pos*/ 1800, 2100, 3000),\n    TRAJECTORY_POS(3, /*pos*/ 4100, 2100, 3000),\n    TRAJECTORY_POS(4, /*pos*/ 4640, 2160, 3980),\n    TRAJECTORY_POS(5, /*pos*/ 5416, 2100, 3642),\n    TRAJECTORY_POS(6, /*pos*/ 6720, 1950, 4440),\n    TRAJECTORY_POS(7, /*pos*/ 6700, 1880, 5040),\n    TRAJECTORY_POS(8, /*pos*/ 6060, 1880, 5640),\n    TRAJECTORY_POS(9, /*pos*/ 5440, 1850, 6200),\n    TRAJECTORY_POS(10, /*pos*/ 3820, 1990, 7130),\n    TRAJECTORY_POS(11, /*pos*/ 1270, 1990, 7130),\n    TRAJECTORY_POS(12, /*pos*/ 1272, 2000, 6000),\n    TRAJECTORY_POS(13, /*pos*/ 1272, 2000, 5400),\n    TRAJECTORY_END(),\n};\n"
  },
  {
    "path": "levels/hmc/arrow_platform/collision.inc.c",
    "content": "// 0x0702B6E0 - 0x0702B7F4\nconst Collision hmc_seg7_collision_controllable_platform[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x10),\n    COL_VERTEX(307, 51, 307),\n    COL_VERTEX(-306, 0, 307),\n    COL_VERTEX(307, 0, 307),\n    COL_VERTEX(-306, 51, 307),\n    COL_VERTEX(307, 0, -306),\n    COL_VERTEX(64, 0, 64),\n    COL_VERTEX(64, 0, -63),\n    COL_VERTEX(307, 51, -306),\n    COL_VERTEX(-306, 0, -306),\n    COL_VERTEX(-63, 0, 64),\n    COL_VERTEX(-306, 51, -306),\n    COL_VERTEX(-63, 0, -63),\n    COL_VERTEX(102, 51, 102),\n    COL_VERTEX(102, 51, -101),\n    COL_VERTEX(-101, 51, -101),\n    COL_VERTEX(-101, 51, 102),\n    COL_TRI_INIT(SURFACE_DEFAULT, 28),\n    COL_TRI(6, 8, 4),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI(4, 0, 2),\n    COL_TRI(5, 2, 1),\n    COL_TRI(2, 5, 6),\n    COL_TRI(2, 6, 4),\n    COL_TRI(4, 7, 0),\n    COL_TRI(8, 7, 4),\n    COL_TRI(5, 1, 9),\n    COL_TRI(1, 10, 8),\n    COL_TRI(1, 3, 10),\n    COL_TRI(11, 1, 8),\n    COL_TRI(11, 9, 1),\n    COL_TRI(6, 11, 8),\n    COL_TRI(8, 10, 7),\n    COL_TRI(7, 10, 14),\n    COL_TRI(10, 15, 14),\n    COL_TRI(10, 3, 15),\n    COL_TRI(15, 0, 12),\n    COL_TRI(7, 12, 0),\n    COL_TRI(7, 13, 12),\n    COL_TRI(7, 14, 13),\n    COL_TRI(15, 3, 0),\n    COL_TRI(15, 12, 13),\n    COL_TRI(15, 13, 14),\n    COL_TRI(11, 5, 9),\n    COL_TRI(11, 6, 5),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/hmc/arrow_platform/geo.inc.c",
    "content": "// 0x0E0005A0\nconst GeoLayout hmc_geo_0005A0[] = {\n    GEO_CULLING_RADIUS(550),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_07022DA0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/hmc/arrow_platform/model.inc.c",
    "content": "// 0x07022B48 - 0x07022B60\nstatic const Lights1 hmc_seg7_lights_07022B48 = gdSPDefLights1(\n    0x79, 0x79, 0x79,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07022B60 - 0x07022C60\nstatic const Vtx hmc_seg7_vertex_07022B60[] = {\n    {{{   307,     51,    307}, 0, {  3004,    -12}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -306,      0,    307}, 0, {    -2,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   307,      0,    307}, 0, {  3004,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -306,     51,    307}, 0, {    -2,    -12}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -306,      0,   -306}, 0, {    -2,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   307,     51,   -306}, 0, {  3004,    -12}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   307,      0,   -306}, 0, {  3004,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -306,     51,   -306}, 0, {    -2,    -12}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   307,      0,   -306}, 0, {  3004,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   307,     51,   -306}, 0, {  3004,    -12}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   307,     51,    307}, 0, {    -2,    -12}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   307,      0,    307}, 0, {    -2,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -306,      0,    307}, 0, {    -2,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -306,     51,    307}, 0, {    -2,    -12}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -306,     51,   -306}, 0, {  3004,    -12}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -306,      0,   -306}, 0, {  3004,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07022C60 - 0x07022CE0\nstatic const Vtx hmc_seg7_vertex_07022C60[] = {\n    {{{   307,      0,    307}, 0, {  3004,  -2046}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -306,      0,   -306}, 0, {    -2,    960}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   307,      0,   -306}, 0, {  3004,    960}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -306,      0,    307}, 0, {    -2,  -2046}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   307,     51,   -306}, 0, {  1982,  -1024}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -306,     51,   -306}, 0, { -1022,  -1024}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -306,     51,    307}, 0, { -1022,   1980}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   307,     51,    307}, 0, {  1982,   1980}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07022CE0 - 0x07022D58\nstatic const Gfx hmc_seg7_dl_07022CE0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, hmc_seg7_texture_07004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&hmc_seg7_lights_07022B48.l, 1),\n    gsSPLight(&hmc_seg7_lights_07022B48.a, 2),\n    gsSPVertex(hmc_seg7_vertex_07022B60, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07022D58 - 0x07022DA0\nstatic const Gfx hmc_seg7_dl_07022D58[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, hmc_seg7_texture_07003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(hmc_seg7_vertex_07022C60, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07022DA0 - 0x07022E78\nconst Gfx hmc_seg7_dl_07022DA0[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_07022CE0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_07022D58),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/hmc/arrow_platform_button/collision.inc.c",
    "content": "// 0x0702B7F4 - 0x0702B86C\nconst Collision hmc_seg7_collision_controllable_platform_sub[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(38, 11, 38),\n    COL_VERTEX(-37, 11, 38),\n    COL_VERTEX(-50, 0, 51),\n    COL_VERTEX(51, 0, 51),\n    COL_VERTEX(38, 11, -37),\n    COL_VERTEX(-37, 11, -37),\n    COL_VERTEX(51, 0, -50),\n    COL_VERTEX(-50, 0, -50),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 10),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(0, 4, 5),\n    COL_TRI(1, 0, 5),\n    COL_TRI(4, 0, 3),\n    COL_TRI(6, 4, 3),\n    COL_TRI(5, 4, 6),\n    COL_TRI(7, 5, 6),\n    COL_TRI(1, 5, 7),\n    COL_TRI(1, 7, 2),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/hmc/arrow_platform_button/geo.inc.c",
    "content": "// 0x0E0005B8\nconst GeoLayout hmc_geo_0005B8[] = {\n    GEO_CULLING_RADIUS(200),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_07023090),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/hmc/arrow_platform_button/model.inc.c",
    "content": "// 0x07022E78 - 0x07022E90\nstatic const Lights1 hmc_seg7_lights_07022E78 = gdSPDefLights1(\n    0x79, 0x79, 0x79,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07022E90 - 0x07022EA8\nstatic const Lights1 hmc_seg7_lights_07022E90 = gdSPDefLights1(\n    0x4f, 0x64, 0x5b,\n    0xa8, 0xd3, 0xc0, 0x28, 0x28, 0x28\n);\n\n// 0x07022EA8 - 0x07022EE8\nstatic const Vtx hmc_seg7_vertex_07022EA8[] = {\n    {{{    38,     11,     38}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    38,     11,    -37}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -37,     11,    -37}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -37,     11,     38}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07022EE8 - 0x07022FE8\nstatic const Vtx hmc_seg7_vertex_07022EE8[] = {\n    {{{   -50,      0,    -50}, 0, {     0,      0}, {0x00, 0x60, 0xae, 0xff}}},\n    {{{   -37,     11,    -37}, 0, {     0,      0}, {0x00, 0x60, 0xae, 0xff}}},\n    {{{    51,      0,    -50}, 0, {     0,      0}, {0x00, 0x60, 0xae, 0xff}}},\n    {{{    38,     11,    -37}, 0, {     0,      0}, {0x00, 0x60, 0xae, 0xff}}},\n    {{{    51,      0,    -50}, 0, {     0,      0}, {0x52, 0x60, 0x00, 0xff}}},\n    {{{    38,     11,    -37}, 0, {     0,      0}, {0x52, 0x60, 0x00, 0xff}}},\n    {{{    51,      0,     51}, 0, {     0,      0}, {0x52, 0x60, 0x00, 0xff}}},\n    {{{    38,     11,     38}, 0, {     0,      0}, {0x52, 0x60, 0x00, 0xff}}},\n    {{{   -37,     11,     38}, 0, {     0,      0}, {0xae, 0x60, 0x00, 0xff}}},\n    {{{   -37,     11,    -37}, 0, {     0,      0}, {0xae, 0x60, 0x00, 0xff}}},\n    {{{   -50,      0,    -50}, 0, {     0,      0}, {0xae, 0x60, 0x00, 0xff}}},\n    {{{   -50,      0,     51}, 0, {     0,      0}, {0xae, 0x60, 0x00, 0xff}}},\n    {{{    38,     11,     38}, 0, {     0,      0}, {0x00, 0x60, 0x52, 0xff}}},\n    {{{   -50,      0,     51}, 0, {     0,      0}, {0x00, 0x60, 0x52, 0xff}}},\n    {{{    51,      0,     51}, 0, {     0,      0}, {0x00, 0x60, 0x52, 0xff}}},\n    {{{   -37,     11,     38}, 0, {     0,      0}, {0x00, 0x60, 0x52, 0xff}}},\n};\n\n// 0x07022FE8 - 0x07023030\nstatic const Gfx hmc_seg7_dl_07022FE8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, hmc_seg7_texture_07003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&hmc_seg7_lights_07022E78.l, 1),\n    gsSPLight(&hmc_seg7_lights_07022E78.a, 2),\n    gsSPVertex(hmc_seg7_vertex_07022EA8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07023030 - 0x07023090\nstatic const Gfx hmc_seg7_dl_07023030[] = {\n    gsSPLight(&hmc_seg7_lights_07022E90.l, 1),\n    gsSPLight(&hmc_seg7_lights_07022E90.a, 2),\n    gsSPVertex(hmc_seg7_vertex_07022EE8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07023090 - 0x07023160\nconst Gfx hmc_seg7_dl_07023090[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_07022FE8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_PASS2),\n    gsSPDisplayList(hmc_seg7_dl_07023030),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/hmc/elevator_platform/collision.inc.c",
    "content": "// 0x0702B5E4 - 0x0702B65C\nconst Collision hmc_seg7_collision_elevator[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-255, 0, 256),\n    COL_VERTEX(-255, 102, 256),\n    COL_VERTEX(-255, 102, -255),\n    COL_VERTEX(256, 102, 256),\n    COL_VERTEX(256, 102, -255),\n    COL_VERTEX(256, 0, 256),\n    COL_VERTEX(256, 0, -255),\n    COL_VERTEX(-255, 0, -255),\n    COL_TRI_INIT(SURFACE_DEFAULT, 10),\n    COL_TRI(0, 1, 2),\n    COL_TRI(1, 3, 4),\n    COL_TRI(1, 4, 2),\n    COL_TRI(5, 3, 1),\n    COL_TRI(5, 1, 0),\n    COL_TRI(6, 3, 5),\n    COL_TRI(6, 4, 3),\n    COL_TRI(7, 2, 4),\n    COL_TRI(7, 4, 6),\n    COL_TRI(0, 2, 7),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/hmc/elevator_platform/geo.inc.c",
    "content": "// 0x0E0005D0\nconst GeoLayout hmc_geo_0005D0[] = {\n    GEO_CULLING_RADIUS(500),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_07022AA0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/hmc/elevator_platform/model.inc.c",
    "content": "// 0x07022910 - 0x07022928\nstatic const Lights1 hmc_seg7_lights_07022910 = gdSPDefLights1(\n    0x79, 0x79, 0x79,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07022928 - 0x07022A08\nstatic const Vtx hmc_seg7_vertex_07022928[] = {\n    {{{  -255,      0,   -255}, 0, {   990,     96}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{   256,    102,   -255}, 0, {     0,      0}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{   256,      0,   -255}, 0, {     0,     96}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{   256,      0,    256}, 0, {   990,      0}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{  -255,      0,    256}, 0, {   990,    990}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{  -255,      0,   -255}, 0, {     0,    990}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{   256,      0,   -255}, 0, {     0,      0}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{  -255,    102,    256}, 0, {   990,    990}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{   256,    102,    256}, 0, {   990,      0}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{  -255,    102,   -255}, 0, {     0,    990}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{   256,      0,    256}, 0, {   990,     96}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{  -255,    102,    256}, 0, {     0,      0}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  -255,    102,   -255}, 0, {   990,      0}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{  -255,      0,    256}, 0, {     0,     96}, {0x99, 0xcd, 0x33, 0xff}}},\n};\n\n// 0x07022A08 - 0x07022AA0\nstatic const Gfx hmc_seg7_dl_07022A08[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09002800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&hmc_seg7_lights_07022910.l, 1),\n    gsSPLight(&hmc_seg7_lights_07022910.a, 2),\n    gsSPVertex(hmc_seg7_vertex_07022928, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  1, 0x0),\n    gsSP2Triangles( 7,  1,  9, 0x0,  2,  8, 10, 0x0),\n    gsSP2Triangles( 2,  1,  8, 0x0, 10,  8, 11, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0, 13, 12,  0, 0x0),\n    gsSP2Triangles(10, 11, 13, 0x0, 13, 11, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07022AA0 - 0x07022B48\nconst Gfx hmc_seg7_dl_07022AA0[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_07022A08),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/hmc/geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"game/level_geo.h\"\n#include \"game/geo_misc.h\"\n#include \"game/camera.h\"\n#include \"game/moving_texture.h\"\n#include \"game/screen_transition.h\"\n#include \"game/paintings.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"levels/hmc/header.h\"\n\n#include \"levels/hmc/areas/1/grill_door/geo.inc.c\"\n#include \"levels/hmc/rolling_rock/geo.inc.c\"\n#include \"levels/hmc/rolling_rock_fragment_1/geo.inc.c\"\n#include \"levels/hmc/rolling_rock_fragment_2/geo.inc.c\"\n#include \"levels/hmc/arrow_platform/geo.inc.c\"\n#include \"levels/hmc/arrow_platform_button/geo.inc.c\"\n#include \"levels/hmc/elevator_platform/geo.inc.c\"\n#include \"levels/hmc/areas/1/geo.inc.c\"\n"
  },
  {
    "path": "levels/hmc/header.h",
    "content": "#ifndef HMC_HEADER_H\n#define HMC_HEADER_H\n\n#include \"types.h\"\n#include \"game/moving_texture.h\"\n\n// geo\nextern const GeoLayout hmc_geo_000530[];\nextern const GeoLayout hmc_geo_000548[];\nextern const GeoLayout hmc_geo_000570[];\nextern const GeoLayout hmc_geo_000588[];\nextern const GeoLayout hmc_geo_0005A0[];\nextern const GeoLayout hmc_geo_0005B8[];\nextern const GeoLayout hmc_geo_0005D0[];\nextern const GeoLayout hmc_geo_0005E8[];\nextern const GeoLayout hmc_geo_000618[];\nextern const GeoLayout hmc_geo_000658[];\nextern const GeoLayout hmc_geo_0006A8[];\nextern const GeoLayout hmc_geo_0006E0[];\nextern const GeoLayout hmc_geo_000700[];\nextern const GeoLayout hmc_geo_000748[];\nextern const GeoLayout hmc_geo_000770[];\nextern const GeoLayout hmc_geo_000798[];\nextern const GeoLayout hmc_geo_0007F8[];\nextern const GeoLayout hmc_geo_000850[];\nextern const GeoLayout hmc_geo_0008D0[];\nextern const GeoLayout hmc_geo_000938[];\nextern const GeoLayout hmc_geo_000998[];\nextern const GeoLayout hmc_geo_000A18[];\nextern const GeoLayout hmc_geo_000A88[];\nextern const GeoLayout hmc_geo_000AE8[];\nextern const GeoLayout hmc_geo_000B48[];\nextern const GeoLayout hmc_geo_000B90[];\n\n// leveldata\nextern const Gfx hmc_seg7_dl_070078B0[];\nextern const Gfx hmc_seg7_dl_07007B50[];\nextern const Gfx hmc_seg7_dl_070080E8[];\nextern const Gfx hmc_seg7_dl_070093F0[];\nextern const Gfx hmc_seg7_dl_0700E448[];\nextern const Gfx hmc_seg7_dl_0700EF00[];\nextern const Gfx hmc_seg7_dl_0700F3E8[];\nextern const Gfx hmc_seg7_dl_0700FA40[];\nextern const Gfx hmc_seg7_dl_0700FEF0[];\nextern const Gfx hmc_seg7_dl_07010070[];\nextern const Gfx hmc_seg7_dl_07013CA8[];\nextern const Gfx hmc_seg7_dl_07013E80[];\nextern const Gfx hmc_seg7_dl_07014300[];\nextern const Gfx hmc_seg7_dl_07014B08[];\nextern const Gfx hmc_seg7_dl_07014C00[];\nextern const Gfx hmc_seg7_dl_07014E48[];\nextern const Gfx hmc_seg7_dl_070173A8[];\nextern const Gfx hmc_seg7_dl_07017C98[];\nextern const Gfx hmc_seg7_dl_07018200[];\nextern const Gfx hmc_seg7_dl_07019248[];\nextern const Gfx hmc_seg7_dl_07019368[];\nextern const Gfx hmc_seg7_dl_0701A080[];\nextern const Gfx hmc_seg7_dl_0701A400[];\nextern const Gfx hmc_seg7_dl_0701E820[];\nextern const Gfx hmc_seg7_dl_0701F1B0[];\nextern const Gfx hmc_seg7_dl_0701F690[];\nextern const Gfx hmc_seg7_dl_0701F818[];\nextern const Gfx hmc_seg7_dl_0701FD58[];\nextern const Gfx hmc_seg7_dl_0701FFF8[];\nextern const Gfx hmc_seg7_dl_07020FD0[];\nextern const Gfx hmc_seg7_dl_07021760[];\nextern const Gfx hmc_seg7_dl_07021BA0[];\nextern const Gfx hmc_seg7_dl_070228A0[];\nextern const Gfx hmc_seg7_dl_07022AA0[];\nextern const Gfx hmc_seg7_dl_07022DA0[];\nextern const Gfx hmc_seg7_dl_07023090[];\nextern const Gfx hmc_seg7_dl_07023BC8[];\nextern const Gfx hmc_seg7_dl_07023E10[];\nextern const Gfx hmc_seg7_dl_07024110[];\nextern const Gfx hmc_seg7_dl_07024268[];\nextern const Gfx hmc_seg7_dl_070242A0[];\nextern const u8 *const hmc_seg7_painting_textures_07025518[];\nextern struct Painting cotmc_painting;\nextern const Collision hmc_seg7_collision_level[];\nextern const MacroObject hmc_seg7_macro_objs[];\nextern const RoomData hmc_seg7_rooms[];\nextern const Collision hmc_seg7_collision_elevator[];\nextern const Collision hmc_seg7_collision_0702B65C[];\nextern const Collision hmc_seg7_collision_controllable_platform[];\nextern const Collision hmc_seg7_collision_controllable_platform_sub[];\nextern const Trajectory hmc_seg7_trajectory_0702B86C[];\nextern const struct MovtexQuadCollection hmc_movtex_dorrie_pool_water[];\nextern const struct MovtexQuadCollection hmc_movtex_toxic_maze_mist[];\n\n// script\nextern const LevelScript level_hmc_entry[];\n\n#endif\n"
  },
  {
    "path": "levels/hmc/level.yaml",
    "content": "# Hazy Maze Cave\nshort-name: hmc\nfull-name: Hazy Maze Cave\ntexture-file: [\"/texture.inc.c\"]\narea-count: 1\nobjects: [arrow_platform, arrow_platform_button, elevator_platform, rolling_rock, rolling_rock_fragment_1, rolling_rock_fragment_2]\nshared-path: []\n# loaded files\nskybox-bin: null\ntexture-bin: cave\neffects: false\nactor-bins: [group6, group17]\ncommon-bin: [common0]\n"
  },
  {
    "path": "levels/hmc/leveldata.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"surface_terrains.h\"\n#include \"moving_texture_macros.h\"\n#include \"level_misc_macros.h\"\n#include \"macro_presets.h\"\n#include \"special_presets.h\"\n#include \"textures.h\"\n#include \"dialog_ids.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/hmc/texture.inc.c\"\n#include \"levels/hmc/areas/1/1/model.inc.c\"\n#include \"levels/hmc/areas/1/2/model.inc.c\"\n#include \"levels/hmc/areas/1/3/model.inc.c\"\n#include \"levels/hmc/areas/1/4/model.inc.c\"\n#include \"levels/hmc/areas/1/5/model.inc.c\"\n#include \"levels/hmc/areas/1/6/model.inc.c\"\n#include \"levels/hmc/areas/1/7/model.inc.c\"\n#include \"levels/hmc/areas/1/8/model.inc.c\"\n#include \"levels/hmc/areas/1/9/model.inc.c\"\n#include \"levels/hmc/areas/1/10/model.inc.c\"\n#include \"levels/hmc/areas/1/11/model.inc.c\"\n#include \"levels/hmc/areas/1/12/model.inc.c\"\n#include \"levels/hmc/areas/1/13/model.inc.c\"\n#include \"levels/hmc/areas/1/14/model.inc.c\"\n#include \"levels/hmc/areas/1/15/model.inc.c\"\n#include \"levels/hmc/areas/1/16/model.inc.c\"\n#include \"levels/hmc/areas/1/17/model.inc.c\"\n#include \"levels/hmc/areas/1/18/model.inc.c\"\n#include \"levels/hmc/areas/1/19/model.inc.c\"\n#include \"levels/hmc/areas/1/20/model.inc.c\"\n#include \"levels/hmc/areas/1/21/model.inc.c\"\n#include \"levels/hmc/areas/1/22/model.inc.c\"\n#include \"levels/hmc/areas/1/23/model.inc.c\"\n#include \"levels/hmc/areas/1/24/model.inc.c\"\n#include \"levels/hmc/areas/1/25/model.inc.c\"\n#include \"levels/hmc/areas/1/26/model.inc.c\"\n#include \"levels/hmc/areas/1/27/model.inc.c\"\n#include \"levels/hmc/areas/1/28/model.inc.c\"\n#include \"levels/hmc/areas/1/grill_door/model.inc.c\"\n#include \"levels/hmc/areas/1/29/model.inc.c\"\n#include \"levels/hmc/areas/1/30/model.inc.c\"\n#include \"levels/hmc/areas/1/31/model.inc.c\"\n#include \"levels/hmc/areas/1/32/model.inc.c\"\n#include \"levels/hmc/elevator_platform/model.inc.c\"\n#include \"levels/hmc/arrow_platform/model.inc.c\"\n#include \"levels/hmc/arrow_platform_button/model.inc.c\"\n#include \"levels/hmc/rolling_rock/model.inc.c\"\n#include \"levels/hmc/rolling_rock_fragment_1/model.inc.c\"\n#include \"levels/hmc/rolling_rock_fragment_2/model.inc.c\"\n#include \"levels/hmc/areas/1/painting.inc.c\"\n#include \"levels/hmc/areas/1/collision.inc.c\"\n#include \"levels/hmc/areas/1/macro.inc.c\"\n#include \"levels/hmc/areas/1/room.inc.c\"\n#include \"levels/hmc/elevator_platform/collision.inc.c\"\n#include \"levels/hmc/areas/1/grill_door/collision.inc.c\" // This is odd, but the model data for this is in the middle of area 1. I have to conclude it is an area local object, despite the fact it has collision. Let's hope this is the only oddity...\n#include \"levels/hmc/arrow_platform/collision.inc.c\"\n#include \"levels/hmc/arrow_platform_button/collision.inc.c\"\n#include \"levels/hmc/areas/1/trajectory.inc.c\"\n#include \"levels/hmc/areas/1/movtext.inc.c\"\n"
  },
  {
    "path": "levels/hmc/rolling_rock/geo.inc.c",
    "content": "// 0x0E000548\nconst GeoLayout hmc_geo_000548[] = {\n    GEO_CULLING_RADIUS(300),\n    GEO_OPEN_NODE(),\n        GEO_SHADOW(SHADOW_CIRCLE_9_VERTS, 0xB4, 400),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_07023BC8),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/hmc/rolling_rock/model.inc.c",
    "content": "// 0x07023160 - 0x07023178\nstatic const Lights1 hmc_seg7_lights_07023160 = gdSPDefLights1(\n    0x79, 0x79, 0x79,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07023178 - 0x07023278\nstatic const Vtx hmc_seg7_vertex_07023178[] = {\n    {{{  -204,      0,      0}, 0, {  2012,   2012}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  -173,    102,     33}, 0, {  2830,   3448}, {0x96, 0x41, 0x14, 0xff}}},\n    {{{  -173,     63,    -86}, 0, {  3648,   3448}, {0x96, 0x28, 0xc9, 0xff}}},\n    {{{  -173,      0,    108}, 0, {  2012,   3448}, {0x96, 0x00, 0x44, 0xff}}},\n    {{{   -91,    108,    148}, 0, {  2420,   4888}, {0xc0, 0x40, 0x58, 0xff}}},\n    {{{   -91,      0,    183}, 0, {  2012,   4888}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{   -91,    174,     57}, 0, {  2830,   4888}, {0xc8, 0x6c, 0x23, 0xff}}},\n    {{{     0,    -62,    195}, 0, {  1808,   6096}, {0x00, 0xd9, 0x78, 0xff}}},\n    {{{     0,     63,    195}, 0, {  2216,   6096}, {0x00, 0x27, 0x78, 0xff}}},\n    {{{    92,      0,    183}, 0, {  2012,   7304}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{    92,   -107,    148}, 0, {  1604,   7304}, {0x37, 0xbd, 0x5c, 0xff}}},\n    {{{    92,    108,    148}, 0, {  2420,   7304}, {0x38, 0x43, 0x5c, 0xff}}},\n    {{{   -91,    174,    -56}, 0, {  3238,   4888}, {0xc0, 0x68, 0xdf, 0xff}}},\n    {{{   -91,    108,   -147}, 0, {  3648,   4888}, {0xc8, 0x42, 0xa4, 0xff}}},\n    {{{     0,    166,    120}, 0, {  2626,   6096}, {0x00, 0x66, 0x4a, 0xff}}},\n    {{{     0,    205,      0}, 0, {  3034,   6096}, {0x00, 0x7e, 0x00, 0xff}}},\n};\n\n// 0x07023278 - 0x07023378\nstatic const Vtx hmc_seg7_vertex_07023278[] = {\n    {{{     0,    166,    120}, 0, {  2626,   6096}, {0x00, 0x66, 0x4a, 0xff}}},\n    {{{    92,    108,    148}, 0, {  2420,   7304}, {0x38, 0x43, 0x5c, 0xff}}},\n    {{{    92,    174,     57}, 0, {  2830,   7304}, {0x40, 0x68, 0x21, 0xff}}},\n    {{{     0,    205,      0}, 0, {  3034,   6096}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{    92,    174,    -56}, 0, {  3238,   7304}, {0x38, 0x6c, 0xdd, 0xff}}},\n    {{{  -204,      0,      0}, 0, {     0,   2012}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  -173,     63,    -86}, 0, {  -438,   3448}, {0x96, 0x28, 0xc9, 0xff}}},\n    {{{  -173,    -62,    -86}, 0, {   376,   3448}, {0x96, 0xd8, 0xc9, 0xff}}},\n    {{{     0,     63,   -194}, 0, {  3852,   6096}, {0x00, 0x27, 0x88, 0xff}}},\n    {{{    92,    108,   -147}, 0, {  3648,   7304}, {0x3f, 0x40, 0xa8, 0xff}}},\n    {{{    92,      0,   -182}, 0, {  4056,   7304}, {0x37, 0x00, 0x8e, 0xff}}},\n    {{{   -91,      0,   -182}, 0, {     0,   4888}, {0xc0, 0x00, 0x93, 0xff}}},\n    {{{   -91,   -107,   -147}, 0, {   376,   4888}, {0xc8, 0xbd, 0xa4, 0xff}}},\n    {{{  -173,     63,    -86}, 0, {  3648,   3448}, {0x96, 0x28, 0xc9, 0xff}}},\n    {{{   -91,    108,   -147}, 0, {  3648,   4888}, {0xc8, 0x42, 0xa4, 0xff}}},\n    {{{   -91,      0,   -182}, 0, {  4056,   4888}, {0xc0, 0x00, 0x93, 0xff}}},\n};\n\n// 0x07023378 - 0x07023478\nstatic const Vtx hmc_seg7_vertex_07023378[] = {\n    {{{   -91,    108,   -147}, 0, {  3648,   4888}, {0xc8, 0x42, 0xa4, 0xff}}},\n    {{{     0,    166,   -119}, 0, {  3442,   6096}, {0x00, 0x66, 0xb6, 0xff}}},\n    {{{     0,     63,   -194}, 0, {  3852,   6096}, {0x00, 0x27, 0x88, 0xff}}},\n    {{{    92,    108,   -147}, 0, {  3648,   7304}, {0x3f, 0x40, 0xa8, 0xff}}},\n    {{{    92,    174,    -56}, 0, {  3238,   7304}, {0x38, 0x6c, 0xdd, 0xff}}},\n    {{{  -204,      0,      0}, 0, {  2012,   2012}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  -173,   -101,     33}, 0, {  1194,   3448}, {0x96, 0xbf, 0x14, 0xff}}},\n    {{{  -173,      0,    108}, 0, {  2012,   3448}, {0x96, 0x00, 0x44, 0xff}}},\n    {{{  -204,      0,      0}, 0, {     0,   2012}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  -173,    -62,    -86}, 0, {   376,   3448}, {0x96, 0xd8, 0xc9, 0xff}}},\n    {{{   -91,   -173,    -56}, 0, {   786,   4888}, {0xc0, 0x98, 0xdf, 0xff}}},\n    {{{   -91,   -107,   -147}, 0, {   376,   4888}, {0xc8, 0xbd, 0xa4, 0xff}}},\n    {{{   -91,   -173,     57}, 0, {  1194,   4888}, {0xc8, 0x94, 0x23, 0xff}}},\n    {{{     0,    -62,   -194}, 0, {   172,   6096}, {0x00, 0xd9, 0x88, 0xff}}},\n    {{{     0,   -165,   -119}, 0, {   582,   6096}, {0x00, 0x9a, 0xb6, 0xff}}},\n    {{{    92,   -107,   -147}, 0, {   376,   7304}, {0x3f, 0xc0, 0xa8, 0xff}}},\n};\n\n// 0x07023478 - 0x07023558\nstatic const Vtx hmc_seg7_vertex_07023478[] = {\n    {{{     0,    -62,   -194}, 0, {   172,   6096}, {0x00, 0xd9, 0x88, 0xff}}},\n    {{{    92,      0,   -182}, 0, {     0,   7304}, {0x37, 0x00, 0x8e, 0xff}}},\n    {{{    92,   -107,   -147}, 0, {   376,   7304}, {0x3f, 0xc0, 0xa8, 0xff}}},\n    {{{     0,   -165,   -119}, 0, {   582,   6096}, {0x00, 0x9a, 0xb6, 0xff}}},\n    {{{    92,   -173,    -56}, 0, {   786,   7304}, {0x38, 0x94, 0xdd, 0xff}}},\n    {{{  -173,   -101,     33}, 0, {  1194,   3448}, {0x96, 0xbf, 0x14, 0xff}}},\n    {{{   -91,   -107,    148}, 0, {  1604,   4888}, {0xc1, 0xc0, 0x58, 0xff}}},\n    {{{  -173,      0,    108}, 0, {  2012,   3448}, {0x96, 0x00, 0x44, 0xff}}},\n    {{{   -91,   -173,     57}, 0, {  1194,   4888}, {0xc8, 0x94, 0x23, 0xff}}},\n    {{{   -91,      0,    183}, 0, {  2012,   4888}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{     0,   -204,      0}, 0, {   990,   6096}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{     0,   -165,    120}, 0, {  1398,   6096}, {0x00, 0x9a, 0x4a, 0xff}}},\n    {{{    92,   -173,     57}, 0, {  1194,   7304}, {0x40, 0x98, 0x21, 0xff}}},\n    {{{    92,   -107,    148}, 0, {  1604,   7304}, {0x37, 0xbd, 0x5c, 0xff}}},\n};\n\n// 0x07023558 - 0x07023638\nstatic const Vtx hmc_seg7_vertex_07023558[] = {\n    {{{   205,      0,      0}, 0, {  4056,  10184}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{   174,      0,   -107}, 0, {  4056,   8744}, {0x6a, 0x00, 0xbc, 0xff}}},\n    {{{   174,    102,    -32}, 0, {  3238,   8744}, {0x6a, 0x41, 0xeb, 0xff}}},\n    {{{     0,     63,   -194}, 0, {  3852,   6096}, {0x00, 0x27, 0x88, 0xff}}},\n    {{{   -91,      0,   -182}, 0, {  4056,   4888}, {0xc0, 0x00, 0x93, 0xff}}},\n    {{{   -91,    108,   -147}, 0, {  3648,   4888}, {0xc8, 0x42, 0xa4, 0xff}}},\n    {{{    92,    108,   -147}, 0, {  3648,   7304}, {0x3f, 0x40, 0xa8, 0xff}}},\n    {{{    92,      0,   -182}, 0, {  4056,   7304}, {0x37, 0x00, 0x8e, 0xff}}},\n    {{{    92,    174,    -56}, 0, {  3238,   7304}, {0x38, 0x6c, 0xdd, 0xff}}},\n    {{{    92,      0,   -182}, 0, {     0,   7304}, {0x37, 0x00, 0x8e, 0xff}}},\n    {{{     0,    -62,   -194}, 0, {   172,   6096}, {0x00, 0xd9, 0x88, 0xff}}},\n    {{{     0,     63,   -194}, 0, {  -234,   6096}, {0x00, 0x27, 0x88, 0xff}}},\n    {{{   -91,   -107,   -147}, 0, {   376,   4888}, {0xc8, 0xbd, 0xa4, 0xff}}},\n    {{{   -91,      0,   -182}, 0, {     0,   4888}, {0xc0, 0x00, 0x93, 0xff}}},\n};\n\n// 0x07023638 - 0x07023728\nstatic const Vtx hmc_seg7_vertex_07023638[] = {\n    {{{   205,      0,      0}, 0, {  2012,  10184}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{   174,     63,     87}, 0, {  2420,   8744}, {0x6a, 0x28, 0x37, 0xff}}},\n    {{{   174,    -62,     87}, 0, {  1604,   8744}, {0x6a, 0xd8, 0x37, 0xff}}},\n    {{{   205,      0,      0}, 0, {  4056,  10184}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{   174,    102,    -32}, 0, {  3238,   8744}, {0x6a, 0x41, 0xeb, 0xff}}},\n    {{{    92,    174,     57}, 0, {  2830,   7304}, {0x40, 0x68, 0x21, 0xff}}},\n    {{{    92,    174,    -56}, 0, {  3238,   7304}, {0x38, 0x6c, 0xdd, 0xff}}},\n    {{{    92,    108,    148}, 0, {  2420,   7304}, {0x38, 0x43, 0x5c, 0xff}}},\n    {{{     0,    166,   -119}, 0, {  3442,   6096}, {0x00, 0x66, 0xb6, 0xff}}},\n    {{{     0,    205,      0}, 0, {  3034,   6096}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{   -91,    174,    -56}, 0, {  3238,   4888}, {0xc0, 0x68, 0xdf, 0xff}}},\n    {{{   -91,    108,   -147}, 0, {  3648,   4888}, {0xc8, 0x42, 0xa4, 0xff}}},\n    {{{   -91,    174,     57}, 0, {  2830,   4888}, {0xc8, 0x6c, 0x23, 0xff}}},\n    {{{    92,      0,    183}, 0, {  2012,   7304}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{    92,   -107,    148}, 0, {  1604,   7304}, {0x37, 0xbd, 0x5c, 0xff}}},\n};\n\n// 0x07023728 - 0x07023828\nstatic const Vtx hmc_seg7_vertex_07023728[] = {\n    {{{    92,    108,    148}, 0, {  2420,   7304}, {0x38, 0x43, 0x5c, 0xff}}},\n    {{{     0,    166,    120}, 0, {  2626,   6096}, {0x00, 0x66, 0x4a, 0xff}}},\n    {{{     0,     63,    195}, 0, {  2216,   6096}, {0x00, 0x27, 0x78, 0xff}}},\n    {{{   -91,    108,    148}, 0, {  2420,   4888}, {0xc0, 0x40, 0x58, 0xff}}},\n    {{{   -91,    174,     57}, 0, {  2830,   4888}, {0xc8, 0x6c, 0x23, 0xff}}},\n    {{{   -91,      0,    183}, 0, {  2012,   4888}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{   205,      0,      0}, 0, {  2012,  10184}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{   174,    -62,     87}, 0, {  1604,   8744}, {0x6a, 0xd8, 0x37, 0xff}}},\n    {{{   174,   -101,    -32}, 0, {   786,   8744}, {0x6a, 0xbf, 0xec, 0xff}}},\n    {{{    92,   -107,    148}, 0, {  1604,   7304}, {0x37, 0xbd, 0x5c, 0xff}}},\n    {{{    92,   -173,     57}, 0, {  1194,   7304}, {0x40, 0x98, 0x21, 0xff}}},\n    {{{    92,   -173,    -56}, 0, {   786,   7304}, {0x38, 0x94, 0xdd, 0xff}}},\n    {{{     0,    -62,    195}, 0, {  1808,   6096}, {0x00, 0xd9, 0x78, 0xff}}},\n    {{{     0,   -165,    120}, 0, {  1398,   6096}, {0x00, 0x9a, 0x4a, 0xff}}},\n    {{{   -91,   -107,    148}, 0, {  1604,   4888}, {0xc1, 0xc0, 0x58, 0xff}}},\n    {{{   -91,   -173,     57}, 0, {  1194,   4888}, {0xc8, 0x94, 0x23, 0xff}}},\n};\n\n// 0x07023828 - 0x070238D8\nstatic const Vtx hmc_seg7_vertex_07023828[] = {\n    {{{   205,      0,      0}, 0, {     0,  10184}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{   174,   -101,    -32}, 0, {   786,   8744}, {0x6a, 0xbf, 0xec, 0xff}}},\n    {{{   174,      0,   -107}, 0, {     0,   8744}, {0x6a, 0x00, 0xbc, 0xff}}},\n    {{{     0,   -165,   -119}, 0, {   582,   6096}, {0x00, 0x9a, 0xb6, 0xff}}},\n    {{{   -91,   -173,    -56}, 0, {   786,   4888}, {0xc0, 0x98, 0xdf, 0xff}}},\n    {{{   -91,   -107,   -147}, 0, {   376,   4888}, {0xc8, 0xbd, 0xa4, 0xff}}},\n    {{{    92,   -107,   -147}, 0, {   376,   7304}, {0x3f, 0xc0, 0xa8, 0xff}}},\n    {{{    92,   -173,    -56}, 0, {   786,   7304}, {0x38, 0x94, 0xdd, 0xff}}},\n    {{{    92,      0,   -182}, 0, {     0,   7304}, {0x37, 0x00, 0x8e, 0xff}}},\n    {{{     0,   -204,      0}, 0, {   990,   6096}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{   -91,   -173,     57}, 0, {  1194,   4888}, {0xc8, 0x94, 0x23, 0xff}}},\n};\n\n// 0x070238D8 - 0x07023BC8\nstatic const Gfx hmc_seg7_dl_070238D8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, hmc_seg7_texture_07004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&hmc_seg7_lights_07023160.l, 1),\n    gsSPLight(&hmc_seg7_lights_07023160.a, 2),\n    gsSPVertex(hmc_seg7_vertex_07023178, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 3,  4,  1, 0x0,  3,  5,  4, 0x0),\n    gsSP2Triangles( 1,  4,  6, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 7,  9,  8, 0x0,  7, 10,  9, 0x0),\n    gsSP2Triangles( 8,  9, 11, 0x0,  1, 12,  2, 0x0),\n    gsSP2Triangles( 1,  6, 12, 0x0,  2, 12, 13, 0x0),\n    gsSP1Triangle( 6, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07023278, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  6, 11,  7, 0x0),\n    gsSP2Triangles( 7, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07023378, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9,  6, 0x0,  9, 10,  6, 0x0),\n    gsSP2Triangles( 9, 11, 10, 0x0,  6, 10, 12, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07023478, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  8,  6, 0x0),\n    gsSP2Triangles( 7,  6,  9, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(10, 12, 11, 0x0, 10,  4, 12, 0x0),\n    gsSP1Triangle(11, 12, 13, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07023558, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 1,  6,  2, 0x0,  1,  7,  6, 0x0),\n    gsSP2Triangles( 2,  6,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(10, 12, 13, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07023638, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 4,  5,  1, 0x0,  4,  6,  5, 0x0),\n    gsSP2Triangles( 1,  5,  7, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0,  8, 11, 10, 0x0),\n    gsSP2Triangles( 9, 10, 12, 0x0,  1, 13,  2, 0x0),\n    gsSP2Triangles( 1,  7, 13, 0x0,  2, 13, 14, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07023728, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  2,  3,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 13, 0x0, 12, 14, 13, 0x0),\n    gsSP2Triangles(12,  5, 14, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07023828, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 1,  6,  2, 0x0,  1,  7,  6, 0x0),\n    gsSP2Triangles( 2,  6,  8, 0x0,  7,  9,  3, 0x0),\n    gsSP2Triangles( 9,  4,  3, 0x0,  9, 10,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07023BC8 - 0x07023C70\nconst Gfx hmc_seg7_dl_07023BC8[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_070238D8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/hmc/rolling_rock_fragment_1/geo.inc.c",
    "content": "// 0x0E000570\nconst GeoLayout hmc_geo_000570[] = {\n    GEO_CULLING_RADIUS(150),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_07023E10),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/hmc/rolling_rock_fragment_1/model.inc.c",
    "content": "// 0x07023C70 - 0x07023C88\nstatic const Lights1 hmc_seg7_lights_07023C70 = gdSPDefLights1(\n    0x79, 0x79, 0x79,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07023C88 - 0x07023D48\nstatic const Vtx hmc_seg7_vertex_07023C88[] = {\n    {{{   -91,      0,    -45}, 0, {   -22,   4380}, {0x8a, 0x17, 0xd8, 0xff}}},\n    {{{   -73,    -53,     46}, 0, {   158,   3308}, {0x9f, 0xc9, 0x3c, 0xff}}},\n    {{{   -32,     24,     51}, 0, {  -194,   2768}, {0xad, 0x5e, 0x11, 0xff}}},\n    {{{     0,      0,   -101}, 0, {   426,   5632}, {0xf6, 0x1d, 0x85, 0xff}}},\n    {{{    74,     54,    -45}, 0, {  1058,   4388}, {0x3e, 0x52, 0xb7, 0xff}}},\n    {{{   -32,     24,     51}, 0, {  1634,   2768}, {0xad, 0x5e, 0x11, 0xff}}},\n    {{{    28,     87,     46}, 0, {  1246,   3284}, {0x05, 0x70, 0x3a, 0xff}}},\n    {{{    92,      0,     46}, 0, {   874,   3300}, {0x72, 0xf9, 0x36, 0xff}}},\n    {{{   -41,    -67,    -45}, 0, {   272,   4428}, {0xdc, 0x95, 0xc7, 0xff}}},\n    {{{    37,    -80,     29}, 0, {   546,   3484}, {0x21, 0x8f, 0x2c, 0xff}}},\n    {{{    66,    -59,    -28}, 0, {   660,   4196}, {0x53, 0xb3, 0xc9, 0xff}}},\n    {{{     0,      0,    102}, 0, {   426,   2044}, {0xf3, 0x03, 0x7e, 0xff}}},\n};\n\n// 0x07023D48 - 0x07023E10\nstatic const Gfx hmc_seg7_dl_07023D48[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, hmc_seg7_texture_07004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&hmc_seg7_lights_07023C70.l, 1),\n    gsSPLight(&hmc_seg7_lights_07023C70.a, 2),\n    gsSPVertex(hmc_seg7_vertex_07023C88, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 2,  4,  3, 0x0,  5,  6,  4, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  3,  8,  0, 0x0),\n    gsSP2Triangles( 8,  9,  1, 0x0, 10,  7,  9, 0x0),\n    gsSP2Triangles( 1,  0,  8, 0x0,  3, 10,  8, 0x0),\n    gsSP2Triangles( 3,  4, 10, 0x0,  9,  8, 10, 0x0),\n    gsSP2Triangles(11,  9,  7, 0x0, 11,  7,  6, 0x0),\n    gsSP2Triangles(11,  1,  9, 0x0, 11,  2,  1, 0x0),\n    gsSP2Triangles(11,  6,  2, 0x0,  7, 10,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07023E10 - 0x07023EB8\nconst Gfx hmc_seg7_dl_07023E10[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_07023D48),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/hmc/rolling_rock_fragment_2/geo.inc.c",
    "content": "// 0x0E000588\nconst GeoLayout hmc_geo_000588[] = {\n    GEO_CULLING_RADIUS(100),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, hmc_seg7_dl_07024110),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/hmc/rolling_rock_fragment_2/model.inc.c",
    "content": "// 0x07023EB8 - 0x07023ED0\nstatic const Lights1 hmc_seg7_lights_07023EB8 = gdSPDefLights1(\n    0x79, 0x79, 0x79,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07023ED0 - 0x07023FD0\nstatic const Vtx hmc_seg7_vertex_07023ED0[] = {\n    {{{   -22,     29,     25}, 0, {     0,   2012}, {0x96, 0x13, 0x42, 0xff}}},\n    {{{     2,     47,    -24}, 0, {     0,   2680}, {0x1d, 0x7a, 0xf1, 0xff}}},\n    {{{   -32,      0,    -24}, 0, {   258,   2344}, {0x8e, 0xf4, 0xca, 0xff}}},\n    {{{    46,    -25,     14}, 0, {     0,   2012}, {0x78, 0xdd, 0x12, 0xff}}},\n    {{{    18,      0,    -55}, 0, {     0,   2916}, {0x16, 0xd9, 0x8a, 0xff}}},\n    {{{     2,     47,    -24}, 0, {   302,   2840}, {0x1d, 0x7a, 0xf1, 0xff}}},\n    {{{     6,      5,     44}, 0, {     0,   2012}, {0x0d, 0x07, 0x7e, 0xff}}},\n    {{{    46,    -25,     14}, 0, {     0,   2672}, {0x78, 0xdd, 0x12, 0xff}}},\n    {{{     2,     47,    -24}, 0, {   422,   2120}, {0x1d, 0x7a, 0xf1, 0xff}}},\n    {{{     2,    -34,     -8}, 0, {     0,   2012}, {0xc9, 0x8f, 0x0e, 0xff}}},\n    {{{     6,      5,     44}, 0, {     0,   2760}, {0x0d, 0x07, 0x7e, 0xff}}},\n    {{{   -22,     29,     25}, 0, {   204,   2740}, {0x96, 0x13, 0x42, 0xff}}},\n    {{{   -32,      0,    -24}, 0, {   258,   2076}, {0x8e, 0xf4, 0xca, 0xff}}},\n    {{{    18,      0,    -55}, 0, {     0,   2012}, {0x16, 0xd9, 0x8a, 0xff}}},\n    {{{     2,    -34,     -8}, 0, {     0,   2692}, {0xc9, 0x8f, 0x0e, 0xff}}},\n    {{{   -32,      0,    -24}, 0, {   228,   2432}, {0x8e, 0xf4, 0xca, 0xff}}},\n};\n\n// 0x07023FD0 - 0x07024080\nstatic const Vtx hmc_seg7_vertex_07023FD0[] = {\n    {{{     6,      5,     44}, 0, {     0,   2012}, {0x0d, 0x07, 0x7e, 0xff}}},\n    {{{     2,    -34,     -8}, 0, {     0,   2760}, {0xc9, 0x8f, 0x0e, 0xff}}},\n    {{{    46,    -25,     14}, 0, {   212,   2460}, {0x78, 0xdd, 0x12, 0xff}}},\n    {{{    18,      0,    -55}, 0, {     0,   2012}, {0x16, 0xd9, 0x8a, 0xff}}},\n    {{{   -32,      0,    -24}, 0, {     0,   2680}, {0x8e, 0xf4, 0xca, 0xff}}},\n    {{{     2,     47,    -24}, 0, {   258,   2344}, {0x1d, 0x7a, 0xf1, 0xff}}},\n    {{{     2,     47,    -24}, 0, {     0,   2012}, {0x1d, 0x7a, 0xf1, 0xff}}},\n    {{{   -22,     29,     25}, 0, {     0,   2680}, {0x96, 0x13, 0x42, 0xff}}},\n    {{{     6,      5,     44}, 0, {   196,   2804}, {0x0d, 0x07, 0x7e, 0xff}}},\n    {{{    46,    -25,     14}, 0, {     0,   2916}, {0x78, 0xdd, 0x12, 0xff}}},\n    {{{     2,    -34,     -8}, 0, {   184,   2540}, {0xc9, 0x8f, 0x0e, 0xff}}},\n};\n\n// 0x07024080 - 0x07024110\nstatic const Gfx hmc_seg7_dl_07024080[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, hmc_seg7_texture_07004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&hmc_seg7_lights_07023EB8.l, 1),\n    gsSPLight(&hmc_seg7_lights_07023EB8.a, 2),\n    gsSPVertex(hmc_seg7_vertex_07023ED0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(hmc_seg7_vertex_07023FD0, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  3,  9, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07024110 - 0x070241B8\nconst Gfx hmc_seg7_dl_07024110[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(960, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(hmc_seg7_dl_07024080),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/hmc/script.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"behavior_data.h\"\n#include \"model_ids.h\"\n#include \"seq_ids.h\"\n#include \"segment_symbols.h\"\n#include \"level_commands.h\"\n\n#include \"game/level_update.h\"\n\n#include \"levels/scripts.h\"\n\n#include \"actors/common1.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/hmc/header.h\"\n\nstatic const LevelScript script_func_local_1[] = {\n    OBJECT(/*model*/ MODEL_RED_FLAME, /*pos*/ 4936, -357, -4146, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlame),\n    OBJECT(/*model*/ MODEL_RED_FLAME, /*pos*/ 5018, -460, -5559, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlame),\n    OBJECT(/*model*/ MODEL_RED_FLAME, /*pos*/ 1997,  666,  -235, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlame),\n    OBJECT(/*model*/ MODEL_RED_FLAME, /*pos*/ 1762, -460, -2610, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlame),\n    OBJECT(/*model*/ MODEL_RED_FLAME, /*pos*/ 4178, -255, -3737, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlame),\n    OBJECT(/*model*/ MODEL_RED_FLAME, /*pos*/ 2233, -460,   256, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlame),\n    OBJECT(/*model*/ MODEL_RED_FLAME, /*pos*/ 5510, -255, -3429, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlame),\n    OBJECT(/*model*/ MODEL_RED_FLAME, /*pos*/ 4690, -357,  -767, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlame),\n    OBJECT(/*model*/ MODEL_RED_FLAME, /*pos*/ 3462, -255, -1125, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlame),\n    OBJECT(/*model*/ MODEL_RED_FLAME, /*pos*/ 1762,  666,     0, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlame),\n    OBJECT(/*model*/ MODEL_RED_FLAME, /*pos*/ 1762, -460,   256, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlame),\n    OBJECT(/*model*/ MODEL_RED_FLAME, /*pos*/ 6482,  461,  3226, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlame),\n    OBJECT(/*model*/ MODEL_RED_FLAME, /*pos*/ 1075,  461,  6543, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlame),\n    OBJECT(/*model*/ MODEL_RED_FLAME, /*pos*/ 6912,  461,  6543, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlame),\n    OBJECT(/*model*/ MODEL_RED_FLAME, /*pos*/ 6912,  461,  3697, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlame),\n    OBJECT(/*model*/ MODEL_RED_FLAME, /*pos*/ 6482,  461,  7014, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlame),\n    OBJECT(/*model*/ MODEL_RED_FLAME, /*pos*/ 3817,  717,  1034, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlame),\n    OBJECT(/*model*/ MODEL_NONE,      /*pos*/  799, 1024,  4434, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(184), /*bhv*/ bhvPoleGrabbing),\n    OBJECT(/*model*/ MODEL_NONE,      /*pos*/  889, 1024,  3277, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(184), /*bhv*/ bhvPoleGrabbing),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_2[] = {\n    OBJECT(/*model*/ MODEL_HMC_METAL_PLATFORM,    /*pos*/  1100,   950,  6350, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvControllablePlatform),\n    OBJECT(/*model*/ MODEL_HMC_ELEVATOR_PLATFORM, /*pos*/ -3243,  1434,  1392, /*angle*/ 0,  27, 0, /*bhvParam*/ 0, /*bhv*/ bhvHMCElevatorPlatform),\n    OBJECT(/*model*/ MODEL_HMC_ELEVATOR_PLATFORM, /*pos*/ -2816,  2253, -2509, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(0x01), /*bhv*/ bhvHMCElevatorPlatform),\n    OBJECT(/*model*/ MODEL_HMC_ELEVATOR_PLATFORM, /*pos*/  -973,  1741, -7347, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(0x02), /*bhv*/ bhvHMCElevatorPlatform),\n    OBJECT(/*model*/ MODEL_HMC_ELEVATOR_PLATFORM, /*pos*/ -3533,  1741, -7040, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(0x03), /*bhv*/ bhvHMCElevatorPlatform),\n    OBJECT(/*model*/ MODEL_NONE,                  /*pos*/   614, -4690,  2330, /*angle*/ 0, 270, 0, /*bhvParam*/ BPARAM2(OPENABLE_GRILL_BP_HMC), /*bhv*/ bhvOpenableGrill),\n    OBJECT(/*model*/ MODEL_PURPLE_SWITCH,         /*pos*/  -307, -4997,  2483, /*angle*/ 0, 270, 0, /*bhvParam*/ 0, /*bhv*/ bhvFloorSwitchGrills),\n    OBJECT(/*model*/ MODEL_CHECKERBOARD_PLATFORM, /*pos*/  1270,  2000,  4000, /*angle*/ 0, 270, 0, /*bhvParam*/ BPARAM1(0x09) | BPARAM2(0xA4), /*bhv*/ bhvPlatformOnTrack),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_3[] = {\n    OBJECT(/*model*/ MODEL_DORRIE, /*pos*/ -3533, -4969,  3558, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvDorrie),\n    OBJECT(/*model*/ MODEL_NONE,   /*pos*/ -6093,  3075, -7807, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvBigBoulderGenerator),\n    OBJECT(/*model*/ MODEL_NONE,   /*pos*/  -500,  1600,  3500, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(0x04), /*bhv*/ bhvFlamethrower),\n    OBJECT(/*model*/ MODEL_NONE,   /*pos*/  -500,  1600,  3800, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(0x04), /*bhv*/ bhvFlamethrower),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_4[] = {\n    OBJECT_WITH_ACTS(/*model*/ MODEL_STAR, /*pos*/ -3600, -4000,  3600, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_1), /*bhv*/ bhvStar,                 /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_NONE, /*pos*/  4000,   300,  5000, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_2), /*bhv*/ bhvHiddenRedCoinStar, /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_STAR, /*pos*/  6200, -4400,  2300, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_3), /*bhv*/ bhvStar,                 /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_STAR, /*pos*/ -2100,  2100, -7550, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_4), /*bhv*/ bhvStar,                 /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_STAR, /*pos*/ -6500,  2700, -1600, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_5), /*bhv*/ bhvStar,                 /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_STAR, /*pos*/ -5000,  3050, -6700, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_6), /*bhv*/ bhvStar,                 /*acts*/ ALL_ACTS),\n    RETURN(),\n};\n\nconst LevelScript level_hmc_entry[] = {\n    INIT_LEVEL(),\n    LOAD_MIO0        (/*seg*/ 0x07, _hmc_segment_7SegmentRomStart, _hmc_segment_7SegmentRomEnd),\n    LOAD_MIO0_TEXTURE(/*seg*/ 0x09, _cave_mio0SegmentRomStart, _cave_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x05, _group6_mio0SegmentRomStart, _group6_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0C, _group6_geoSegmentRomStart, _group6_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x06, _group17_mio0SegmentRomStart, _group17_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0D, _group17_geoSegmentRomStart, _group17_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x08, _common0_mio0SegmentRomStart, _common0_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0F, _common0_geoSegmentRomStart,  _common0_geoSegmentRomEnd),\n    ALLOC_LEVEL_POOL(),\n    MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),\n    JUMP_LINK(script_func_global_1),\n    JUMP_LINK(script_func_global_7),\n    JUMP_LINK(script_func_global_18),\n    LOAD_MODEL_FROM_GEO(MODEL_HMC_WOODEN_DOOR,          wooden_door_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_HMC_METAL_DOOR,           metal_door_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_HMC_HAZY_MAZE_DOOR,       hazy_maze_door_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_HMC_METAL_PLATFORM,       hmc_geo_0005A0),\n    LOAD_MODEL_FROM_GEO(MODEL_HMC_METAL_ARROW_PLATFORM, hmc_geo_0005B8),\n    LOAD_MODEL_FROM_GEO(MODEL_HMC_ELEVATOR_PLATFORM,    hmc_geo_0005D0),\n    LOAD_MODEL_FROM_GEO(MODEL_HMC_ROLLING_ROCK,         hmc_geo_000548),\n    LOAD_MODEL_FROM_GEO(MODEL_HMC_ROCK_PIECE,           hmc_geo_000570),\n    LOAD_MODEL_FROM_GEO(MODEL_HMC_ROCK_SMALL_PIECE,     hmc_geo_000588),\n    LOAD_MODEL_FROM_GEO(MODEL_HMC_RED_GRILLS,           hmc_geo_000530),\n\n    AREA(/*index*/ 1, hmc_geo_000B90),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ -7152,  3161, 7181, /*angle*/ 0, 135, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvSpinAirborneWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/  3351, -4690, 4773, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(52) | BPARAM2(WARP_NODE_0B), /*bhv*/ bhvWarp),\n        WARP_NODE(/*id*/ WARP_NODE_0A,      /*destLevel*/ LEVEL_HMC,    /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_0B,      /*destLevel*/ LEVEL_COTMC,  /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_SUCCESS, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 3, /*destNode*/ WARP_NODE_34, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH,   /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 3, /*destNode*/ WARP_NODE_66, /*flags*/ WARP_NO_CHECKPOINT),\n        JUMP_LINK(script_func_local_1),\n        JUMP_LINK(script_func_local_2),\n        JUMP_LINK(script_func_local_3),\n        JUMP_LINK(script_func_local_4),\n        TERRAIN(/*terrainData*/ hmc_seg7_collision_level),\n        MACRO_OBJECTS(/*objList*/ hmc_seg7_macro_objs),\n        ROOMS(/*surfaceRooms*/ hmc_seg7_rooms),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0004, /*seq*/ SEQ_LEVEL_UNDERGROUND),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_STONE),\n    END_AREA(),\n\n    FREE_LEVEL_POOL(),\n    MARIO_POS(/*area*/ 1, /*yaw*/ 135, /*pos*/ -7152, 2161, 7181),\n    CALL(/*arg*/ 0, /*func*/ lvl_init_or_update),\n    CALL_LOOP(/*arg*/ 1, /*func*/ lvl_init_or_update),\n    CLEAR_LEVEL(),\n    SLEEP_BEFORE_EXIT(/*frames*/ 1),\n    EXIT(),\n};\n"
  },
  {
    "path": "levels/hmc/texture.inc.c",
    "content": "// 0x07000000 - 0x07001000\nALIGNED8 static const Texture hmc_seg7_texture_07000000[] = {\n#include \"levels/hmc/0.rgba16.inc.c\"\n};\n\n// 0x07001000 - 0x07002000\nALIGNED8 static const Texture hmc_seg7_texture_07001000[] = {\n#include \"levels/hmc/1.rgba16.inc.c\"\n};\n\n// 0x07002000 - 0x07003000\nALIGNED8 static const Texture hmc_seg7_texture_07002000[] = {\n#include \"levels/hmc/2.rgba16.inc.c\"\n};\n\n// 0x07003000 - 0x07003800\nALIGNED8 static const Texture hmc_seg7_texture_07003000[] = {\n#include \"levels/hmc/3.rgba16.inc.c\"\n};\n\n// 0x07003800 - 0x07004000\nALIGNED8 static const Texture hmc_seg7_texture_07003800[] = {\n#include \"levels/hmc/4.rgba16.inc.c\"\n};\n\n// 0x07004000 - 0x07004800\nALIGNED8 static const Texture hmc_seg7_texture_07004000[] = {\n#include \"levels/hmc/5.rgba16.inc.c\"\n};\n\n// 0x07004800 - 0x07005800\nALIGNED8 static const Texture hmc_seg7_texture_07004800[] = {\n#include \"levels/hmc/6.rgba16.inc.c\"\n};\n"
  },
  {
    "path": "levels/intro/geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"game/level_geo.h\"\n#include \"game/geo_misc.h\"\n#include \"game/camera.h\"\n#include \"game/moving_texture.h\"\n#include \"game/screen_transition.h\"\n#include \"game/paintings.h\"\n#include \"menu/debug_level_select.h\"\n#include \"menu/intro_geo.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"levels/intro/header.h\"\n\n// 0x0E0002D0\nconst GeoLayout intro_geo_0002D0[] = {\n    GEO_NODE_SCREEN_AREA(0, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND_COLOR(0x0001),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM(45, 128, 16384),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(0, 0, 0, 3200, 0, 0, 0, 0x00000000),\n                GEO_OPEN_NODE(),\n                    GEO_ASM(0, geo_intro_super_mario_64_logo),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_intro_tm_copyright),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0E00035C\nconst GeoLayout intro_geo_mario_head_regular[] = {\n    GEO_NODE_SCREEN_AREA(0, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_ASM(0, geo_intro_regular_backdrop),\n#if defined(VERSION_SH) || defined(VERSION_CN)\n                GEO_ASM(0, geo_intro_face_easter_egg),\n#endif\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM(45, 128, 16384),\n            GEO_OPEN_NODE(),\n                GEO_ASM(2, geo_draw_mario_head_goddard),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n#ifdef VERSION_SH\n    GEO_ZBUFFER(0),\n    GEO_OPEN_NODE(),\n        GEO_ASM(0, geo_intro_rumble_pak_graphic),\n    GEO_CLOSE_NODE(),\n#endif\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0E0003B8\nconst GeoLayout intro_geo_mario_head_dizzy[] = {\n    GEO_NODE_SCREEN_AREA(0, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_ASM(0, geo_intro_gameover_backdrop),\n#if defined(VERSION_SH) || defined(VERSION_CN)\n                GEO_ASM(0, geo_intro_face_easter_egg),\n#endif\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM(45, 128, 16384),\n            GEO_OPEN_NODE(),\n                GEO_ASM(3, geo_draw_mario_head_goddard),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n#ifdef VERSION_SH\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_ASM(1, geo_intro_rumble_pak_graphic),\n        GEO_CLOSE_NODE(),\n#endif\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0E000414\nconst GeoLayout intro_geo_000414[] = {\n    GEO_NODE_SCREEN_AREA(0, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_ASM(0, geo_intro_regular_backdrop),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM(45, 128, 16384),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(0, 0, 0, 1200, 0, 0, 0, 0x00000000),\n                GEO_OPEN_NODE(),\n                    GEO_TRANSLATE_NODE_WITH_DL(LAYER_OPAQUE, -230, 300, 0, debug_level_select_dl_07000858),\n                    GEO_TRANSLATE_NODE_WITH_DL(LAYER_OPAQUE, -120, 300, 0, debug_level_select_dl_07001100),\n                    GEO_TRANSLATE_NODE_WITH_DL(LAYER_OPAQUE,  -20, 300, 0, debug_level_select_dl_07001BA0),\n                    GEO_TRANSLATE_NODE_WITH_DL(LAYER_OPAQUE,  100, 300, 0, debug_level_select_dl_070025F0),\n                    GEO_TRANSLATE_NODE_WITH_DL(LAYER_OPAQUE,  250, 300, 0, debug_level_select_dl_07003258),\n                    GEO_TRANSLATE_NODE_WITH_DL(LAYER_OPAQUE, -310, 100, 0, debug_level_select_dl_07003DB8),\n                    GEO_TRANSLATE_NODE_WITH_DL(LAYER_OPAQUE,  -90, 100, 0, debug_level_select_dl_070048C8),\n                    GEO_TRANSLATE_NODE_WITH_DL(LAYER_OPAQUE,   60, 100, 0, debug_level_select_dl_07005558),\n                    GEO_TRANSLATE_NODE_WITH_DL(LAYER_OPAQUE,  180, 100, 0, debug_level_select_dl_070059F8),\n                    GEO_TRANSLATE_NODE_WITH_DL(LAYER_OPAQUE,  300, 100, 0, debug_level_select_dl_070063B0),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n"
  },
  {
    "path": "levels/intro/header.h",
    "content": "#ifndef INTRO_HEADER_H\n#define INTRO_HEADER_H\n\n#include \"types.h\"\n\n// geo\nextern const GeoLayout intro_geo_0002D0[];\nextern const GeoLayout intro_geo_mario_head_regular[];\nextern const GeoLayout intro_geo_mario_head_dizzy[];\nextern const GeoLayout intro_geo_000414[];\n\n// leveldata\nextern const Gfx intro_seg7_dl_0700B3A0[];\nextern const Gfx intro_seg7_dl_0700C6A0[];\nextern const f32 intro_seg7_table_0700C790[];\nextern const f32 intro_seg7_table_0700C880[];\n\n// script\nextern const LevelScript level_intro_splash_screen[];\nextern const LevelScript level_intro_mario_head_regular[];\nextern const LevelScript level_intro_mario_head_dizzy[];\nextern const LevelScript level_intro_entry_4[];\nextern const LevelScript script_intro_L1[];\nextern const LevelScript script_intro_L2[];\nextern const LevelScript script_intro_L3[];\nextern const LevelScript script_intro_L4[];\nextern const LevelScript script_intro_L5[];\n\n#endif\n"
  },
  {
    "path": "levels/intro/leveldata.c",
    "content": "#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\n#include \"macros.h\"\n#include \"types.h\"\n\n#include \"make_const_nonconst.h\"\n\n#if defined(VERSION_CN)\n// 0x07000000 - 0x07000030\nstatic const Vtx intro_seg7_vertex_07000000[] = {\n    {{{   416,    749,   -312}, 0, {    96,     96}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{   452,    751,   -313}, 0, {    96,     96}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{   431,    777,   -344}, 0, {    96,     96}, {0x16, 0x27, 0x9e, 0xff}}},\n};\n\n// 0x07000030 - 0x07000060\nstatic const Vtx intro_seg7_vertex_07000030[] = {\n    {{{   427,    812,   -365}, 0, {    64,     96}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{   431,    777,   -344}, 0, {    96,     96}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{   451,    805,   -346}, 0, {    64,     96}, {0x12, 0x20, 0x81, 0xff}}},\n};\n\n// 0x07000060 - 0x07000090\nstatic const Vtx intro_seg7_vertex_07000060[] = {\n    {{{   431,    777,   -344}, 0, {    96,     96}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{   452,    751,   -313}, 0, {    96,     96}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{   451,    805,   -346}, 0, {    64,     96}, {0x12, 0x20, 0x81, 0xff}}},\n};\n\n// 0x07000090 - 0x070000C0\nstatic const Vtx intro_seg7_vertex_07000090[] = {\n    {{{   427,    812,   -365}, 0, {    64,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   406,    804,   -345}, 0, {    64,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   431,    777,   -344}, 0, {    96,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x070000C0 - 0x070000F0\nstatic const Vtx intro_seg7_vertex_070000C0[] = {\n    {{{   431,    777,   -344}, 0, {    96,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   406,    804,   -345}, 0, {    64,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   416,    749,   -312}, 0, {    96,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x070000F0 - 0x07000140\nstatic const Vtx intro_seg7_vertex_070000F0[] = {\n    {{{   571,    814,   -363}, 0, {    64,     64}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{   427,    812,   -365}, 0, {    64,     96}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{   553,    804,   -345}, 0, {    96,     64}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{   427,    812,   -365}, 0, {    64,     96}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{   451,    805,   -346}, 0, {    64,     96}, {0x16, 0x27, 0x9e, 0xff}}},\n};\n\n// 0x07000140 - 0x07000190\nstatic const Vtx intro_seg7_vertex_07000140[] = {\n    {{{   427,    812,   -365}, 0, {    64,     96}, {0x14, 0x23, 0x90, 0xff}}},\n    {{{   302,    780,   -330}, 0, {    96,    128}, {0x14, 0x23, 0x90, 0xff}}},\n    {{{   406,    804,   -345}, 0, {    64,     96}, {0x14, 0x23, 0x90, 0xff}}},\n    {{{   276,    781,   -348}, 0, {    64,    128}, {0x14, 0x23, 0x90, 0xff}}},\n    {{{   427,    812,   -365}, 0, {    64,     96}, {0x14, 0x23, 0x90, 0xff}}},\n};\n\n// 0x07000190 - 0x070001D0\nstatic const Vtx intro_seg7_vertex_07000190[] = {\n    {{{   557,    762,   -320}, 0, {    96,     64}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   573,    772,   -341}, 0, {    96,     64}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   553,    804,   -345}, 0, {    96,     64}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   571,    814,   -363}, 0, {    64,     64}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x070001D0 - 0x07000210\nstatic const Vtx intro_seg7_vertex_070001D0[] = {\n    {{{   653,    778,   -348}, 0, {    96,     32}, {0x14, 0x23, 0x90, 0xff}}},\n    {{{   573,    772,   -341}, 0, {    96,     64}, {0x14, 0x23, 0x90, 0xff}}},\n    {{{   639,    768,   -323}, 0, {    96,     32}, {0x14, 0x23, 0x90, 0xff}}},\n    {{{   557,    762,   -320}, 0, {    96,     64}, {0x14, 0x23, 0x90, 0xff}}},\n};\n\n// 0x07000210 - 0x07000250\nstatic const Vtx intro_seg7_vertex_07000210[] = {\n    {{{   653,    778,   -348}, 0, {    96,     32}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   639,    768,   -323}, 0, {    96,     32}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   647,    662,   -276}, 0, {   128,     32}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   632,    689,   -276}, 0, {   128,     32}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07000250 - 0x07000280\nstatic const Vtx intro_seg7_vertex_07000250[] = {\n    {{{   647,    662,   -276}, 0, {   128,     32}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   632,    689,   -276}, 0, {   128,     32}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   637,    664,   -277}, 0, {   128,     32}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07000280 - 0x070002B0\nstatic const Vtx intro_seg7_vertex_07000280[] = {\n    {{{   637,    664,   -277}, 0, {   128,     32}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   632,    689,   -276}, 0, {   128,     32}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   621,    687,   -275}, 0, {   128,     32}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x070002B0 - 0x070002E0\nstatic const Vtx intro_seg7_vertex_070002B0[] = {\n    {{{   632,    689,   -276}, 0, {   128,     32}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   506,    692,   -278}, 0, {   128,     64}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   621,    687,   -275}, 0, {   128,     32}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x070002E0 - 0x07000310\nstatic const Vtx intro_seg7_vertex_070002E0[] = {\n    {{{   545,    679,   -286}, 0, {   128,     64}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   621,    687,   -275}, 0, {   128,     32}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   506,    692,   -278}, 0, {   128,     64}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07000310 - 0x07000340\nstatic const Vtx intro_seg7_vertex_07000310[] = {\n    {{{   545,    679,   -286}, 0, {   128,     64}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   506,    692,   -278}, 0, {   128,     64}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   503,    682,   -272}, 0, {   128,     64}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07000340 - 0x07000370\nstatic const Vtx intro_seg7_vertex_07000340[] = {\n    {{{   621,    687,   -275}, 0, {   128,     32}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   614,    680,   -271}, 0, {   128,     64}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   637,    664,   -277}, 0, {   128,     32}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07000370 - 0x070003A0\nstatic const Vtx intro_seg7_vertex_07000370[] = {\n    {{{   621,    687,   -275}, 0, {   128,     32}, {0x14, 0x23, 0x90, 0xff}}},\n    {{{   545,    679,   -286}, 0, {   128,     64}, {0x14, 0x23, 0x90, 0xff}}},\n    {{{   614,    680,   -271}, 0, {   128,     64}, {0x14, 0x23, 0x90, 0xff}}},\n};\n\n// 0x070003A0 - 0x070003D0\nstatic const Vtx intro_seg7_vertex_070003A0[] = {\n    {{{   545,    679,   -286}, 0, {   128,     64}, {0x14, 0x27, 0x9e, 0xff}}},\n    {{{   503,    682,   -272}, 0, {   128,     64}, {0x14, 0x27, 0x9e, 0xff}}},\n    {{{   614,    680,   -271}, 0, {   128,     64}, {0x14, 0x27, 0x9e, 0xff}}},\n};\n\n// 0x070003D0 - 0x07000410\nstatic const Vtx intro_seg7_vertex_070003D0[] = {\n    {{{   618,    578,   -227}, 0, {   160,     32}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   629,    625,   -238}, 0, {   160,     32}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   587,    571,   -206}, 0, {   160,     64}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   646,    614,   -248}, 0, {   160,     32}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07000410 - 0x07000450\nstatic const Vtx intro_seg7_vertex_07000410[] = {\n    {{{   652,    577,   -226}, 0, {   160,     32}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{   618,    578,   -227}, 0, {   160,     32}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{   638,    572,   -206}, 0, {   160,     32}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{   587,    571,   -206}, 0, {   160,     64}, {0x12, 0x20, 0x81, 0xff}}},\n};\n\n// 0x07000450 - 0x07000490\nstatic const Vtx intro_seg7_vertex_07000450[] = {\n    {{{   646,    614,   -248}, 0, {   160,     32}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   637,    664,   -277}, 0, {   128,     32}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   629,    625,   -238}, 0, {   160,     32}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   614,    680,   -271}, 0, {   128,     64}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07000490 - 0x070004D0\nstatic const Vtx intro_seg7_vertex_07000490[] = {\n    {{{   658,    486,   -172}, 0, {   192,     32}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   652,    577,   -226}, 0, {   160,     32}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   642,    504,   -165}, 0, {   192,     32}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   638,    572,   -206}, 0, {   160,     32}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x070004D0 - 0x07000510\nstatic const Vtx intro_seg7_vertex_070004D0[] = {\n    {{{   611,    499,   -162}, 0, {   192,     64}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   627,    482,   -170}, 0, {   192,     32}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   642,    504,   -165}, 0, {   192,     32}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   658,    486,   -172}, 0, {   192,     32}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07000510 - 0x07000550\nstatic const Vtx intro_seg7_vertex_07000510[] = {\n    {{{   642,    392,   -117}, 0, {   224,     32}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   627,    482,   -170}, 0, {   192,     32}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   626,    410,   -109}, 0, {   224,     64}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   611,    499,   -162}, 0, {   192,     64}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07000550 - 0x07000590\nstatic const Vtx intro_seg7_vertex_07000550[] = {\n    {{{   642,    392,   -117}, 0, {   224,     32}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   626,    410,   -109}, 0, {   224,     64}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   463,    390,   -115}, 0, {   224,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   482,    408,   -108}, 0, {   224,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07000590 - 0x070005C0\nstatic const Vtx intro_seg7_vertex_07000590[] = {\n    {{{   463,    390,   -115}, 0, {   224,     96}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{   482,    408,   -108}, 0, {   224,     96}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{   461,    469,   -162}, 0, {   192,     96}, {0x12, 0x20, 0x81, 0xff}}},\n};\n\n// 0x070005C0 - 0x070005F0\nstatic const Vtx intro_seg7_vertex_070005C0[] = {\n    {{{   461,    469,   -162}, 0, {   192,     96}, {0xff, 0xff, 0xff, 0x01}}},\n    {{{   482,    408,   -108}, 0, {   224,     96}, {0xff, 0xff, 0xff, 0x01}}},\n    {{{   466,    457,   -137}, 0, {   192,     96}, {0xff, 0xff, 0xff, 0x01}}},\n};\n\n// 0x070005F0 - 0x07000620\nstatic const Vtx intro_seg7_vertex_070005F0[] = {\n    {{{   461,    469,   -162}, 0, {   192,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   466,    457,   -137}, 0, {   192,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   505,    481,   -151}, 0, {   192,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07000620 - 0x07000650\nstatic const Vtx intro_seg7_vertex_07000620[] = {\n    {{{   461,    469,   -162}, 0, {   192,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   505,    481,   -151}, 0, {   192,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   499,    498,   -162}, 0, {   192,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07000650 - 0x07000680\nstatic const Vtx intro_seg7_vertex_07000650[] = {\n    {{{   461,    469,   -162}, 0, {   192,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   499,    498,   -162}, 0, {   192,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   442,    496,   -161}, 0, {   192,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07000680 - 0x070006B0\nstatic const Vtx intro_seg7_vertex_07000680[] = {\n    {{{   463,    390,   -115}, 0, {   224,     96}, {0x20, 0x39, 0x81, 0xff}}},\n    {{{   461,    469,   -162}, 0, {   192,     96}, {0x20, 0x39, 0x81, 0xff}}},\n    {{{   445,    408,   -108}, 0, {   224,     96}, {0x20, 0x39, 0x81, 0xff}}},\n};\n\n// 0x070006B0 - 0x070006E0\nstatic const Vtx intro_seg7_vertex_070006B0[] = {\n    {{{   461,    469,   -162}, 0, {   192,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   442,    496,   -161}, 0, {   192,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   445,    408,   -108}, 0, {   224,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x070006E0 - 0x07000720\nstatic const Vtx intro_seg7_vertex_070006E0[] = {\n    {{{   463,    390,   -115}, 0, {   224,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   445,    408,   -108}, 0, {   224,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   347,    390,   -115}, 0, {   224,    128}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   351,    408,   -108}, 0, {   224,    128}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07000720 - 0x07000750\nstatic const Vtx intro_seg7_vertex_07000720[] = {\n    {{{   347,    390,   -115}, 0, {   224,    128}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{   351,    408,   -108}, 0, {   224,    128}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{   341,    430,   -139}, 0, {   224,    128}, {0x12, 0x20, 0x81, 0xff}}},\n};\n\n// 0x07000750 - 0x07000780\nstatic const Vtx intro_seg7_vertex_07000750[] = {\n    {{{   341,    430,   -139}, 0, {   224,    128}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{   351,    408,   -108}, 0, {   224,    128}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{   343,    447,   -131}, 0, {   192,    128}, {0x12, 0x20, 0x81, 0xff}}},\n};\n\n// 0x07000780 - 0x070007B0\nstatic const Vtx intro_seg7_vertex_07000780[] = {\n    {{{   355,    490,   -175}, 0, {   192,    128}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{   341,    430,   -139}, 0, {   224,    128}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{   363,    472,   -146}, 0, {   192,    128}, {0x12, 0x20, 0x81, 0xff}}},\n};\n\n// 0x070007B0 - 0x070007E0\nstatic const Vtx intro_seg7_vertex_070007B0[] = {\n    {{{   341,    430,   -139}, 0, {   224,    128}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{   343,    447,   -131}, 0, {   192,    128}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{   363,    472,   -146}, 0, {   192,    128}, {0x12, 0x20, 0x81, 0xff}}},\n};\n\n// 0x070007E0 - 0x07000810\nstatic const Vtx intro_seg7_vertex_070007E0[] = {\n    {{{   355,    490,   -175}, 0, {   192,    128}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{   363,    472,   -146}, 0, {   192,    128}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{   359,    588,   -216}, 0, {   160,    128}, {0x12, 0x20, 0x81, 0xff}}},\n};\n\n// 0x07000810 - 0x07000840\nstatic const Vtx intro_seg7_vertex_07000810[] = {\n    {{{   355,    490,   -175}, 0, {   192,    128}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   359,    588,   -216}, 0, {   160,    128}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   352,    506,   -167}, 0, {   192,    128}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07000840 - 0x07000870\nstatic const Vtx intro_seg7_vertex_07000840[] = {\n    {{{   338,    374,   -106}, 0, {   256,    128}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   347,    390,   -115}, 0, {   224,    128}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   324,    401,   -104}, 0, {   224,    128}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07000870 - 0x070008A0\nstatic const Vtx intro_seg7_vertex_07000870[] = {\n    {{{   352,    506,   -167}, 0, {   192,    128}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   324,    401,   -104}, 0, {   224,    128}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   355,    490,   -175}, 0, {   192,    128}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x070008A0 - 0x070008D0\nstatic const Vtx intro_seg7_vertex_070008A0[] = {\n    {{{   355,    490,   -175}, 0, {   192,    128}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   324,    401,   -104}, 0, {   224,    128}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   341,    430,   -139}, 0, {   224,    128}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x070008D0 - 0x07000900\nstatic const Vtx intro_seg7_vertex_070008D0[] = {\n    {{{   347,    390,   -115}, 0, {   224,    128}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   341,    430,   -139}, 0, {   224,    128}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   324,    401,   -104}, 0, {   224,    128}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07000900 - 0x07000940\nstatic const Vtx intro_seg7_vertex_07000900[] = {\n    {{{   141,    425,   -137}, 0, {   224,    192}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   338,    374,   -106}, 0, {   256,    128}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   173,    443,   -129}, 0, {   192,    160}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   324,    401,   -104}, 0, {   224,    128}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07000940 - 0x07000980\nstatic const Vtx intro_seg7_vertex_07000940[] = {\n    {{{   141,    425,   -137}, 0, {   224,    192}, {0x10, 0x1c, 0x73, 0xff}}},\n    {{{   173,    443,   -129}, 0, {   192,    160}, {0x10, 0x1c, 0x73, 0xff}}},\n    {{{   278,    596,   -220}, 0, {   160,    128}, {0x10, 0x1c, 0x73, 0xff}}},\n    {{{   261,    594,   -236}, 0, {   160,    128}, {0x10, 0x1c, 0x73, 0xff}}},\n};\n\n// 0x07000980 - 0x070009C0\nstatic const Vtx intro_seg7_vertex_07000980[] = {\n    {{{   291,    666,   -262}, 0, {   128,    128}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{   274,    649,   -268}, 0, {   128,    128}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{   278,    596,   -220}, 0, {   160,    128}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{   261,    594,   -236}, 0, {   160,    128}, {0x12, 0x20, 0x81, 0xff}}},\n};\n\n// 0x070009C0 - 0x07000A00\nstatic const Vtx intro_seg7_vertex_070009C0[] = {\n    {{{   291,    666,   -262}, 0, {   128,    128}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   263,    669,   -264}, 0, {   128,    128}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   274,    649,   -268}, 0, {   128,    128}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   248,    650,   -269}, 0, {   128,    160}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07000A00 - 0x07000A40\nstatic const Vtx intro_seg7_vertex_07000A00[] = {\n    {{{   248,    650,   -269}, 0, {   128,    160}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{   263,    669,   -264}, 0, {   128,    128}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{   247,    742,   -321}, 0, {    96,    128}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{   266,    735,   -303}, 0, {    96,    128}, {0x12, 0x20, 0x81, 0xff}}},\n};\n\n// 0x07000A40 - 0x07000A80\nstatic const Vtx intro_seg7_vertex_07000A40[] = {\n    {{{   324,    740,   -307}, 0, {    96,    128}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{   302,    744,   -325}, 0, {    96,    128}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{   266,    735,   -303}, 0, {    96,    128}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{   247,    742,   -321}, 0, {    96,    128}, {0x16, 0x27, 0x9e, 0xff}}},\n};\n\n// 0x07000A80 - 0x07000AC0\nstatic const Vtx intro_seg7_vertex_07000A80[] = {\n    {{{   324,    740,   -307}, 0, {    96,    128}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{   302,    780,   -330}, 0, {    96,    128}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{   302,    744,   -325}, 0, {    96,    128}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{   276,    781,   -348}, 0, {    64,    128}, {0x12, 0x20, 0x81, 0xff}}},\n};\n\n// 0x07000AC0 - 0x07000AF0\nstatic const Vtx intro_seg7_vertex_07000AC0[] = {\n    {{{   428,    674,   -267}, 0, {   128,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   362,    671,   -266}, 0, {   128,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   380,    649,   -269}, 0, {   128,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07000AF0 - 0x07000B20\nstatic const Vtx intro_seg7_vertex_07000AF0[] = {\n    {{{   380,    649,   -269}, 0, {   128,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   362,    671,   -266}, 0, {   128,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   363,    640,   -247}, 0, {   128,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07000B20 - 0x07000B50\nstatic const Vtx intro_seg7_vertex_07000B20[] = {\n    {{{   380,    649,   -269}, 0, {   128,     96}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{   363,    640,   -247}, 0, {   128,     96}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{   410,    640,   -247}, 0, {   128,     96}, {0x16, 0x27, 0x9e, 0xff}}},\n};\n\n// 0x07000B50 - 0x07000B80\nstatic const Vtx intro_seg7_vertex_07000B50[] = {\n    {{{   380,    649,   -269}, 0, {   128,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   410,    640,   -247}, 0, {   128,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   428,    674,   -267}, 0, {   128,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07000B80 - 0x07000BB0\nstatic const Vtx intro_seg7_vertex_07000B80[] = {\n    {{{   504,    622,   -236}, 0, {   160,     64}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   473,    619,   -234}, 0, {   160,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   469,    578,   -227}, 0, {   160,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07000BB0 - 0x07000BE0\nstatic const Vtx intro_seg7_vertex_07000BB0[] = {\n    {{{   469,    578,   -227}, 0, {   160,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   473,    619,   -234}, 0, {   160,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   457,    596,   -220}, 0, {   160,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07000BE0 - 0x07000C10\nstatic const Vtx intro_seg7_vertex_07000BE0[] = {\n    {{{   469,    578,   -227}, 0, {   160,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   457,    596,   -220}, 0, {   160,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   436,    608,   -228}, 0, {   160,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07000C10 - 0x07000C40\nstatic const Vtx intro_seg7_vertex_07000C10[] = {\n    {{{   469,    578,   -227}, 0, {   160,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   436,    608,   -228}, 0, {   160,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   439,    567,   -203}, 0, {   160,     96}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07000C40 - 0x07000C70\nstatic const Vtx intro_seg7_vertex_07000C40[] = {\n    {{{   469,    578,   -227}, 0, {   160,     96}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{   439,    567,   -203}, 0, {   160,     96}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{   482,    570,   -205}, 0, {   160,     96}, {0x16, 0x27, 0x9e, 0xff}}},\n};\n\n// 0x07000C70 - 0x07000CA0\nstatic const Vtx intro_seg7_vertex_07000C70[] = {\n    {{{   469,    578,   -227}, 0, {   160,     96}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{   482,    570,   -205}, 0, {   160,     96}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{   475,    585,   -214}, 0, {   160,     96}, {0x12, 0x20, 0x81, 0xff}}},\n};\n\n// 0x07000CA0 - 0x07000CD0\nstatic const Vtx intro_seg7_vertex_07000CA0[] = {\n    {{{   469,    578,   -227}, 0, {   160,     96}, {0x12, 0x20, 0x7f, 0xff}}},\n    {{{   475,    585,   -214}, 0, {   160,     96}, {0x12, 0x20, 0x7f, 0xff}}},\n    {{{   504,    622,   -236}, 0, {   160,     64}, {0x12, 0x20, 0x7f, 0xff}}},\n};\n\n// 0x07000CD0 - 0x07000D00\nstatic const Vtx intro_seg7_vertex_07000CD0[] = {\n    {{{   515,    621,   -236}, 0, {   160,     64}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   542,    602,   -224}, 0, {   160,     64}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   544,    600,   -240}, 0, {   160,     64}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07000D00 - 0x07000D30\nstatic const Vtx intro_seg7_vertex_07000D00[] = {\n    {{{   544,    600,   -240}, 0, {   160,     64}, {0x12, 0x20, 0x7f, 0xff}}},\n    {{{   542,    602,   -224}, 0, {   160,     64}, {0x12, 0x20, 0x7f, 0xff}}},\n    {{{   564,    621,   -235}, 0, {   160,     64}, {0x12, 0x20, 0x7f, 0xff}}},\n};\n\n// 0x07000D30 - 0x07000D60\nstatic const Vtx intro_seg7_vertex_07000D30[] = {\n    {{{   544,    600,   -240}, 0, {   160,     64}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   564,    621,   -235}, 0, {   160,     64}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   515,    621,   -236}, 0, {   160,     64}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07000D60 - 0x07000E60\nstatic const Vtx intro_seg7_vertex_07000D60[] = {\n    {{{   173,    443,   -129}, 0, {   192,    160}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   324,    401,   -104}, 0, {   224,    128}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   278,    596,   -220}, 0, {   160,    128}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   352,    506,   -167}, 0, {   192,    128}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   359,    588,   -216}, 0, {   160,    128}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   291,    666,   -262}, 0, {   128,    128}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   363,    472,   -146}, 0, {   192,    128}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   442,    496,   -161}, 0, {   192,     96}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   439,    567,   -203}, 0, {   160,     96}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   436,    608,   -228}, 0, {   160,     96}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   302,    780,   -330}, 0, {    96,    128}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   324,    740,   -307}, 0, {    96,    128}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   406,    804,   -345}, 0, {    64,     96}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   416,    749,   -312}, 0, {    96,     96}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   266,    735,   -303}, 0, {    96,    128}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   362,    671,   -266}, 0, {   128,     96}, {0x65, 0x7f, 0xff, 0xff}}},\n};\n\n// 0x07000E60 - 0x07000F50\nstatic const Vtx intro_seg7_vertex_07000E60[] = {\n    {{{   362,    671,   -266}, 0, {   128,     96}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   428,    674,   -267}, 0, {   128,     96}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   416,    749,   -312}, 0, {    96,     96}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   452,    751,   -313}, 0, {    96,     96}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   626,    410,   -109}, 0, {   224,     64}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   611,    499,   -162}, 0, {   192,     64}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   482,    408,   -108}, 0, {   224,     96}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   466,    457,   -137}, 0, {   192,     96}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   505,    481,   -151}, 0, {   192,     96}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   642,    504,   -165}, 0, {   192,     32}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   587,    571,   -206}, 0, {   160,     64}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   499,    498,   -162}, 0, {   192,     96}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   639,    768,   -323}, 0, {    96,     32}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   557,    762,   -320}, 0, {    96,     64}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   632,    689,   -276}, 0, {   128,     32}, {0x65, 0x7f, 0xff, 0xff}}},\n};\n\n// 0x07000F50 - 0x07001050\nstatic const Vtx intro_seg7_vertex_07000F50[] = {\n    {{{   632,    689,   -276}, 0, {   128,     32}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   557,    762,   -320}, 0, {    96,     64}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   506,    692,   -278}, 0, {   128,     64}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   553,    804,   -345}, 0, {    96,     64}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   452,    751,   -313}, 0, {    96,     96}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   428,    674,   -267}, 0, {   128,     96}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   503,    682,   -272}, 0, {   128,     64}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   263,    669,   -264}, 0, {   128,    128}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   291,    666,   -262}, 0, {   128,    128}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   266,    735,   -303}, 0, {    96,    128}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   436,    608,   -228}, 0, {   160,     96}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   363,    640,   -247}, 0, {   128,     96}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   362,    671,   -266}, 0, {   128,     96}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   445,    408,   -108}, 0, {   224,     96}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   442,    496,   -161}, 0, {   192,     96}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   351,    408,   -108}, 0, {   224,    128}, {0x65, 0x7f, 0xff, 0xff}}},\n};\n\n// 0x07001050 - 0x07001130\nstatic const Vtx intro_seg7_vertex_07001050[] = {\n    {{{   351,    408,   -108}, 0, {   224,    128}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   442,    496,   -161}, 0, {   192,     96}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   343,    447,   -131}, 0, {   192,    128}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   363,    472,   -146}, 0, {   192,    128}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   499,    498,   -162}, 0, {   192,     96}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   542,    602,   -224}, 0, {   160,     64}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   482,    570,   -205}, 0, {   160,     96}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   439,    567,   -203}, 0, {   160,     96}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   451,    805,   -346}, 0, {    64,     96}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   452,    751,   -313}, 0, {    96,     96}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   553,    804,   -345}, 0, {    96,     64}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   638,    572,   -206}, 0, {   160,     32}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   587,    571,   -206}, 0, {   160,     64}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   642,    504,   -165}, 0, {   192,     32}, {0x65, 0x7f, 0xff, 0xff}}},\n};\n\n// 0x07001130 - 0x07001220\nstatic const Vtx intro_seg7_vertex_07001130[] = {\n    {{{   629,    625,   -238}, 0, {   160,     32}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   564,    621,   -235}, 0, {   160,     64}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   587,    571,   -206}, 0, {   160,     64}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   542,    602,   -224}, 0, {   160,     64}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   499,    498,   -162}, 0, {   192,     96}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   614,    680,   -271}, 0, {   128,     64}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   503,    682,   -272}, 0, {   128,     64}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   515,    621,   -236}, 0, {   160,     64}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   504,    622,   -236}, 0, {   160,     64}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   473,    619,   -234}, 0, {   160,     96}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   428,    674,   -267}, 0, {   128,     96}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   482,    570,   -205}, 0, {   160,     96}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   475,    585,   -214}, 0, {   160,     96}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   457,    596,   -220}, 0, {   160,     96}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   436,    608,   -228}, 0, {   160,     96}, {0x65, 0x7f, 0xff, 0xff}}},\n};\n\n// 0x07001220 - 0x07001270\nstatic const Vtx intro_seg7_vertex_07001220[] = {\n    {{{   363,    640,   -247}, 0, {   128,     96}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   436,    608,   -228}, 0, {   160,     96}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   410,    640,   -247}, 0, {   128,     96}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   473,    619,   -234}, 0, {   160,     96}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   428,    674,   -267}, 0, {   128,     96}, {0x65, 0x7f, 0xff, 0xff}}},\n};\n\n// 0x07001270 - 0x070012B0\nstatic const Vtx intro_seg7_vertex_07001270[] = {\n    {{{   213,    700,   -299}, 0, {   128,    160}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   278,    778,   -345}, 0, {    96,    128}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   208,    731,   -301}, 0, {    96,    160}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   255,    785,   -333}, 0, {    96,    128}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x070012B0 - 0x070012F0\nstatic const Vtx intro_seg7_vertex_070012B0[] = {\n    {{{    94,    750,   -328}, 0, {    96,    192}, {0x18, 0x2b, 0xad, 0xff}}},\n    {{{   208,    731,   -301}, 0, {    96,    160}, {0x18, 0x2b, 0xad, 0xff}}},\n    {{{   122,    764,   -321}, 0, {    96,    160}, {0x18, 0x2b, 0xad, 0xff}}},\n    {{{   213,    700,   -299}, 0, {   128,    160}, {0x18, 0x2b, 0xad, 0xff}}},\n};\n\n// 0x070012F0 - 0x07001330\nstatic const Vtx intro_seg7_vertex_070012F0[] = {\n    {{{   180,    850,   -387}, 0, {    32,    160}, {0x10, 0x1c, 0x73, 0xff}}},\n    {{{    94,    750,   -328}, 0, {    96,    192}, {0x10, 0x1c, 0x73, 0xff}}},\n    {{{   185,    837,   -365}, 0, {    64,    160}, {0x10, 0x1c, 0x73, 0xff}}},\n    {{{   122,    764,   -321}, 0, {    96,    160}, {0x10, 0x1c, 0x73, 0xff}}},\n};\n\n// 0x07001330 - 0x07001370\nstatic const Vtx intro_seg7_vertex_07001330[] = {\n    {{{   278,    778,   -345}, 0, {    96,    128}, {0x1a, 0x2e, 0xbb, 0xff}}},\n    {{{   180,    850,   -387}, 0, {    32,    160}, {0x1a, 0x2e, 0xbb, 0xff}}},\n    {{{   255,    785,   -333}, 0, {    96,    128}, {0x1a, 0x2e, 0xbb, 0xff}}},\n    {{{   185,    837,   -365}, 0, {    64,    160}, {0x1a, 0x2e, 0xbb, 0xff}}},\n};\n\n// 0x07001370 - 0x070013B0\nstatic const Vtx intro_seg7_vertex_07001370[] = {\n    {{{   122,    764,   -321}, 0, {    96,    160}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   208,    731,   -301}, 0, {    96,    160}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   185,    837,   -365}, 0, {    64,    160}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   255,    785,   -333}, 0, {    96,    128}, {0x65, 0x7f, 0xff, 0xff}}},\n};\n\n// 0x070013B0 - 0x070013F0\nstatic const Vtx intro_seg7_vertex_070013B0[] = {\n    {{{   214,    657,   -257}, 0, {   128,    160}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   162,    600,   -223}, 0, {   160,    160}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   245,    652,   -270}, 0, {   128,    128}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   170,    568,   -221}, 0, {   160,    160}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x070013F0 - 0x07001430\nstatic const Vtx intro_seg7_vertex_070013F0[] = {\n    {{{    61,    631,   -258}, 0, {   128,    192}, {0x18, 0x2b, 0xad, 0xff}}},\n    {{{   170,    568,   -221}, 0, {   160,    160}, {0x18, 0x2b, 0xad, 0xff}}},\n    {{{    84,    642,   -248}, 0, {   128,    192}, {0x18, 0x2b, 0xad, 0xff}}},\n    {{{   162,    600,   -223}, 0, {   160,    160}, {0x18, 0x2b, 0xad, 0xff}}},\n};\n\n// 0x07001430 - 0x07001470\nstatic const Vtx intro_seg7_vertex_07001430[] = {\n    {{{    61,    631,   -258}, 0, {   128,    192}, {0x10, 0x1c, 0x73, 0xff}}},\n    {{{    84,    642,   -248}, 0, {   128,    192}, {0x10, 0x1c, 0x73, 0xff}}},\n    {{{   134,    738,   -321}, 0, {    96,    160}, {0x10, 0x1c, 0x73, 0xff}}},\n    {{{   140,    725,   -298}, 0, {    96,    160}, {0x10, 0x1c, 0x73, 0xff}}},\n};\n\n// 0x07001470 - 0x070014B0\nstatic const Vtx intro_seg7_vertex_07001470[] = {\n    {{{   245,    652,   -270}, 0, {   128,    128}, {0x1a, 0x2e, 0xbb, 0xff}}},\n    {{{   134,    738,   -321}, 0, {    96,    160}, {0x1a, 0x2e, 0xbb, 0xff}}},\n    {{{   214,    657,   -257}, 0, {   128,    160}, {0x1a, 0x2e, 0xbb, 0xff}}},\n    {{{   140,    725,   -298}, 0, {    96,    160}, {0x1a, 0x2e, 0xbb, 0xff}}},\n};\n\n// 0x070014B0 - 0x070014F0\nstatic const Vtx intro_seg7_vertex_070014B0[] = {\n    {{{   140,    725,   -298}, 0, {    96,    160}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{    84,    642,   -248}, 0, {   128,    192}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   214,    657,   -257}, 0, {   128,    160}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   162,    600,   -223}, 0, {   160,    160}, {0x65, 0x7f, 0xff, 0xff}}},\n};\n\n// 0x070014F0 - 0x07001530\nstatic const Vtx intro_seg7_vertex_070014F0[] = {\n    {{{   224,    552,   -211}, 0, {   160,    128}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   201,    550,   -193}, 0, {   160,    160}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   126,    383,   -111}, 0, {   224,    160}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   120,    413,   -111}, 0, {   224,    192}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07001530 - 0x07001570\nstatic const Vtx intro_seg7_vertex_07001530[] = {\n    {{{   -28,    486,   -172}, 0, {   192,    224}, {0x18, 0x2b, 0xad, 0xff}}},\n    {{{   126,    383,   -111}, 0, {   224,    160}, {0x18, 0x2b, 0xad, 0xff}}},\n    {{{     0,    495,   -160}, 0, {   192,    192}, {0x18, 0x2b, 0xad, 0xff}}},\n    {{{   120,    413,   -111}, 0, {   224,    192}, {0x18, 0x2b, 0xad, 0xff}}},\n};\n\n// 0x07001570 - 0x070015B0\nstatic const Vtx intro_seg7_vertex_07001570[] = {\n    {{{   -28,    486,   -172}, 0, {   192,    224}, {0x10, 0x1c, 0x73, 0xff}}},\n    {{{     0,    495,   -160}, 0, {   192,    192}, {0x10, 0x1c, 0x73, 0xff}}},\n    {{{    97,    580,   -211}, 0, {   160,    192}, {0x10, 0x1c, 0x73, 0xff}}},\n    {{{    89,    593,   -236}, 0, {   128,    192}, {0x10, 0x1c, 0x73, 0xff}}},\n};\n\n// 0x070015B0 - 0x070015F0\nstatic const Vtx intro_seg7_vertex_070015B0[] = {\n    {{{    89,    593,   -236}, 0, {   128,    192}, {0x1a, 0x2e, 0xbb, 0xff}}},\n    {{{    97,    580,   -211}, 0, {   160,    192}, {0x1a, 0x2e, 0xbb, 0xff}}},\n    {{{   224,    552,   -211}, 0, {   160,    128}, {0x1a, 0x2e, 0xbb, 0xff}}},\n    {{{   201,    550,   -193}, 0, {   160,    160}, {0x1a, 0x2e, 0xbb, 0xff}}},\n};\n\n// 0x070015F0 - 0x07001630\nstatic const Vtx intro_seg7_vertex_070015F0[] = {\n    {{{   120,    413,   -111}, 0, {   224,    192}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   201,    550,   -193}, 0, {   160,    160}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{     0,    495,   -160}, 0, {   192,    192}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{    97,    580,   -211}, 0, {   160,    192}, {0x65, 0x7f, 0xff, 0xff}}},\n};\n\n// 0x07001630 - 0x07001670\nstatic const Vtx intro_seg7_vertex_07001630[] = {\n    {{{  -385,    770,   -324}, 0, {    64,    288}, {0x80, 0x00, 0x00, 0xff}}},\n    {{{  -352,    768,   -323}, 0, {    64,    288}, {0x80, 0x00, 0x00, 0xff}}},\n    {{{  -371,    778,   -345}, 0, {    64,    288}, {0x80, 0x00, 0x00, 0xff}}},\n    {{{  -340,    779,   -346}, 0, {    64,    288}, {0x80, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001670 - 0x070016A0\nstatic const Vtx intro_seg7_vertex_07001670[] = {\n    {{{  -340,    779,   -346}, 0, {    64,    288}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{  -352,    768,   -323}, 0, {    64,    288}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{  -350,    688,   -292}, 0, {    96,    288}, {0xd7, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070016A0 - 0x070016D0\nstatic const Vtx intro_seg7_vertex_070016A0[] = {\n    {{{  -350,    688,   -292}, 0, {    96,    288}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{  -352,    768,   -323}, 0, {    64,    288}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{  -357,    701,   -283}, 0, {    96,    288}, {0xd7, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070016D0 - 0x07001700\nstatic const Vtx intro_seg7_vertex_070016D0[] = {\n    {{{  -350,    688,   -292}, 0, {    96,    288}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{  -357,    701,   -283}, 0, {    96,    288}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{  -381,    648,   -252}, 0, {   128,    288}, {0xd7, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001700 - 0x07001730\nstatic const Vtx intro_seg7_vertex_07001700[] = {\n    {{{  -350,    688,   -292}, 0, {    96,    288}, {0x99, 0x00, 0x00, 0xff}}},\n    {{{  -381,    648,   -252}, 0, {   128,    288}, {0x99, 0x00, 0x00, 0xff}}},\n    {{{  -346,    623,   -236}, 0, {   128,    288}, {0x99, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001730 - 0x07001760\nstatic const Vtx intro_seg7_vertex_07001730[] = {\n    {{{  -346,    623,   -236}, 0, {   128,    288}, {0x62, 0x00, 0x00, 0xff}}},\n    {{{  -336,    775,   -327}, 0, {    64,    288}, {0x62, 0x00, 0x00, 0xff}}},\n    {{{  -350,    688,   -292}, 0, {    96,    288}, {0x62, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001760 - 0x07001790\nstatic const Vtx intro_seg7_vertex_07001760[] = {\n    {{{  -340,    779,   -346}, 0, {    64,    288}, {0x62, 0x00, 0x00, 0xff}}},\n    {{{  -350,    688,   -292}, 0, {    96,    288}, {0x62, 0x00, 0x00, 0xff}}},\n    {{{  -336,    775,   -327}, 0, {    64,    288}, {0x62, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001790 - 0x070017D0\nstatic const Vtx intro_seg7_vertex_07001790[] = {\n    {{{  -405,    831,   -361}, 0, {    64,    288}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{  -385,    770,   -324}, 0, {    64,    288}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{  -387,    844,   -382}, 0, {    32,    288}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{  -371,    778,   -345}, 0, {    64,    288}, {0xd7, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070017D0 - 0x07001810\nstatic const Vtx intro_seg7_vertex_070017D0[] = {\n    {{{  -244,    775,   -327}, 0, {    64,    256}, {0x80, 0x00, 0x00, 0xff}}},\n    {{{  -261,    785,   -349}, 0, {    64,    256}, {0x80, 0x00, 0x00, 0xff}}},\n    {{{  -336,    775,   -327}, 0, {    64,    288}, {0x80, 0x00, 0x00, 0xff}}},\n    {{{  -340,    779,   -346}, 0, {    64,    288}, {0x80, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001810 - 0x07001850\nstatic const Vtx intro_seg7_vertex_07001810[] = {\n    {{{  -257,    840,   -381}, 0, {    32,    256}, {0x62, 0x00, 0x00, 0xff}}},\n    {{{  -261,    785,   -349}, 0, {    64,    256}, {0x62, 0x00, 0x00, 0xff}}},\n    {{{  -236,    830,   -360}, 0, {    64,    256}, {0x62, 0x00, 0x00, 0xff}}},\n    {{{  -244,    775,   -327}, 0, {    64,    256}, {0x62, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001850 - 0x07001890\nstatic const Vtx intro_seg7_vertex_07001850[] = {\n    {{{  -257,    840,   -381}, 0, {    32,    256}, {0x80, 0x00, 0x00, 0xff}}},\n    {{{  -236,    830,   -360}, 0, {    64,    256}, {0x80, 0x00, 0x00, 0xff}}},\n    {{{  -115,    837,   -380}, 0, {    64,    224}, {0x80, 0x00, 0x00, 0xff}}},\n    {{{  -130,    832,   -361}, 0, {    64,    224}, {0x80, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001890 - 0x070018D0\nstatic const Vtx intro_seg7_vertex_07001890[] = {\n    {{{  -132,    769,   -324}, 0, {    96,    224}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{  -116,    775,   -343}, 0, {    64,    224}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{  -130,    832,   -361}, 0, {    64,    224}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{  -115,    837,   -380}, 0, {    64,    224}, {0xd7, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070018D0 - 0x07001910\nstatic const Vtx intro_seg7_vertex_070018D0[] = {\n    {{{   -17,    773,   -339}, 0, {    64,    192}, {0x80, 0x00, 0x00, 0xff}}},\n    {{{  -116,    775,   -343}, 0, {    64,    224}, {0x80, 0x00, 0x00, 0xff}}},\n    {{{   -34,    766,   -322}, 0, {    96,    192}, {0x80, 0x00, 0x00, 0xff}}},\n    {{{  -132,    769,   -324}, 0, {    96,    224}, {0x80, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001910 - 0x07001950\nstatic const Vtx intro_seg7_vertex_07001910[] = {\n    {{{    -9,    498,   -179}, 0, {   192,    192}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{   -34,    766,   -322}, 0, {    96,    192}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{   -26,    518,   -174}, 0, {   160,    224}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{   -17,    773,   -339}, 0, {    64,    192}, {0xd7, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001950 - 0x07001990\nstatic const Vtx intro_seg7_vertex_07001950[] = {\n    {{{    -9,    498,   -179}, 0, {   192,    192}, {0xc5, 0x00, 0x00, 0xff}}},\n    {{{   -26,    518,   -174}, 0, {   160,    224}, {0xc5, 0x00, 0x00, 0xff}}},\n    {{{  -108,    493,   -177}, 0, {   192,    224}, {0xc5, 0x00, 0x00, 0xff}}},\n    {{{  -121,    515,   -172}, 0, {   160,    224}, {0xc5, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001990 - 0x070019D0\nstatic const Vtx intro_seg7_vertex_07001990[] = {\n    {{{  -106,    391,   -116}, 0, {   224,    224}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{  -108,    493,   -177}, 0, {   192,    224}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{  -122,    413,   -111}, 0, {   224,    224}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{  -121,    515,   -172}, 0, {   160,    224}, {0xd7, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070019D0 - 0x07001A10\nstatic const Vtx intro_seg7_vertex_070019D0[] = {\n    {{{  -272,    396,   -118}, 0, {   224,    288}, {0xc5, 0x00, 0x00, 0xff}}},\n    {{{  -106,    391,   -116}, 0, {   224,    224}, {0xc5, 0x00, 0x00, 0xff}}},\n    {{{  -255,    416,   -113}, 0, {   224,    256}, {0xc5, 0x00, 0x00, 0xff}}},\n    {{{  -122,    413,   -111}, 0, {   224,    224}, {0xc5, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001A10 - 0x07001A50\nstatic const Vtx intro_seg7_vertex_07001A10[] = {\n    {{{  -268,    502,   -182}, 0, {   192,    288}, {0x62, 0x00, 0x00, 0xff}}},\n    {{{  -255,    416,   -113}, 0, {   224,    256}, {0x62, 0x00, 0x00, 0xff}}},\n    {{{  -252,    521,   -176}, 0, {   160,    256}, {0x62, 0x00, 0x00, 0xff}}},\n    {{{  -272,    396,   -118}, 0, {   224,    288}, {0x62, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001A50 - 0x07001A90\nstatic const Vtx intro_seg7_vertex_07001A50[] = {\n    {{{  -252,    521,   -176}, 0, {   160,    256}, {0xc5, 0x00, 0x00, 0xff}}},\n    {{{  -351,    524,   -177}, 0, {   160,    288}, {0xc5, 0x00, 0x00, 0xff}}},\n    {{{  -268,    502,   -182}, 0, {   192,    288}, {0xc5, 0x00, 0x00, 0xff}}},\n    {{{  -380,    504,   -183}, 0, {   192,    288}, {0xc5, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001A90 - 0x07001AC0\nstatic const Vtx intro_seg7_vertex_07001A90[] = {\n    {{{  -380,    504,   -183}, 0, {   192,    288}, {0x62, 0x00, 0x00, 0xff}}},\n    {{{  -351,    524,   -177}, 0, {   160,    288}, {0x62, 0x00, 0x00, 0xff}}},\n    {{{  -348,    585,   -214}, 0, {   160,    288}, {0x62, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001AC0 - 0x07001AF0\nstatic const Vtx intro_seg7_vertex_07001AC0[] = {\n    {{{  -380,    504,   -183}, 0, {   192,    288}, {0x99, 0x00, 0x00, 0xff}}},\n    {{{  -348,    585,   -214}, 0, {   160,    288}, {0x99, 0x00, 0x00, 0xff}}},\n    {{{  -378,    557,   -197}, 0, {   160,    288}, {0x99, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001AF0 - 0x07001B20\nstatic const Vtx intro_seg7_vertex_07001AF0[] = {\n    {{{  -380,    504,   -183}, 0, {   192,    288}, {0xa1, 0x00, 0x00, 0xff}}},\n    {{{  -378,    557,   -197}, 0, {   160,    288}, {0xa1, 0x00, 0x00, 0xff}}},\n    {{{  -400,    564,   -201}, 0, {   160,    288}, {0xa1, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001B20 - 0x07001B60\nstatic const Vtx intro_seg7_vertex_07001B20[] = {\n    {{{  -400,    564,   -201}, 0, {   160,    288}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{  -398,    425,   -118}, 0, {   192,    288}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{  -380,    504,   -183}, 0, {   192,    288}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{  -379,    401,   -121}, 0, {   224,    288}, {0xd7, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001B60 - 0x07001BA0\nstatic const Vtx intro_seg7_vertex_07001B60[] = {\n    {{{  -379,    401,   -121}, 0, {   224,    288}, {0xc5, 0x00, 0x00, 0xff}}},\n    {{{  -398,    425,   -118}, 0, {   192,    288}, {0xc5, 0x00, 0x00, 0xff}}},\n    {{{  -566,    406,   -122}, 0, {   224,    352}, {0xc5, 0x00, 0x00, 0xff}}},\n    {{{  -547,    428,   -120}, 0, {   192,    352}, {0xc5, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001BA0 - 0x07001BE0\nstatic const Vtx intro_seg7_vertex_07001BA0[] = {\n    {{{  -524,    562,   -200}, 0, {   160,    320}, {0x62, 0x00, 0x00, 0xff}}},\n    {{{  -540,    534,   -201}, 0, {   192,    352}, {0x62, 0x00, 0x00, 0xff}}},\n    {{{  -547,    428,   -120}, 0, {   192,    352}, {0x62, 0x00, 0x00, 0xff}}},\n    {{{  -566,    406,   -122}, 0, {   224,    352}, {0x62, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001BE0 - 0x07001C10\nstatic const Vtx intro_seg7_vertex_07001BE0[] = {\n    {{{  -568,    515,   -189}, 0, {   192,    352}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{  -540,    534,   -201}, 0, {   192,    352}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{  -558,    542,   -188}, 0, {   160,    352}, {0xd7, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001C10 - 0x07001C40\nstatic const Vtx intro_seg7_vertex_07001C10[] = {\n    {{{  -540,    534,   -201}, 0, {   192,    352}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{  -524,    562,   -200}, 0, {   160,    320}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{  -558,    542,   -188}, 0, {   160,    352}, {0xd7, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001C40 - 0x07001C90\nstatic const Vtx intro_seg7_vertex_07001C40[] = {\n    {{{  -610,    638,   -260}, 0, {   128,    352}, {0x93, 0x00, 0x00, 0xff}}},\n    {{{  -568,    515,   -189}, 0, {   192,    352}, {0x93, 0x00, 0x00, 0xff}}},\n    {{{  -594,    639,   -246}, 0, {   128,    352}, {0x93, 0x00, 0x00, 0xff}}},\n    {{{  -558,    542,   -188}, 0, {   160,    352}, {0x93, 0x00, 0x00, 0xff}}},\n    {{{  -594,    639,   -246}, 0, {   128,    352}, {0x93, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001C90 - 0x07001CC0\nstatic const Vtx intro_seg7_vertex_07001C90[] = {\n    {{{  -500,    682,   -272}, 0, {    96,    320}, {0x6b, 0x00, 0x00, 0xff}}},\n    {{{  -537,    670,   -281}, 0, {    96,    352}, {0x6b, 0x00, 0x00, 0xff}}},\n    {{{  -594,    639,   -246}, 0, {   128,    352}, {0x6b, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001CC0 - 0x07001CF0\nstatic const Vtx intro_seg7_vertex_07001CC0[] = {\n    {{{  -537,    670,   -281}, 0, {    96,    352}, {0xa1, 0x00, 0x00, 0xff}}},\n    {{{  -500,    682,   -272}, 0, {    96,    320}, {0xa1, 0x00, 0x00, 0xff}}},\n    {{{  -565,    698,   -282}, 0, {    96,    352}, {0xa1, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001CF0 - 0x07001D20\nstatic const Vtx intro_seg7_vertex_07001CF0[] = {\n    {{{  -582,    680,   -287}, 0, {    96,    352}, {0x93, 0x00, 0x00, 0xff}}},\n    {{{  -537,    670,   -281}, 0, {    96,    352}, {0x93, 0x00, 0x00, 0xff}}},\n    {{{  -565,    698,   -282}, 0, {    96,    352}, {0x93, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001D20 - 0x07001D60\nstatic const Vtx intro_seg7_vertex_07001D20[] = {\n    {{{  -556,    784,   -347}, 0, {    64,    352}, {0x5e, 0x00, 0x00, 0xff}}},\n    {{{  -565,    698,   -282}, 0, {    96,    352}, {0x5e, 0x00, 0x00, 0xff}}},\n    {{{  -543,    776,   -328}, 0, {    64,    320}, {0x5e, 0x00, 0x00, 0xff}}},\n    {{{  -582,    680,   -287}, 0, {    96,    352}, {0x5e, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001D60 - 0x07001D90\nstatic const Vtx intro_seg7_vertex_07001D60[] = {\n    {{{  -537,    670,   -281}, 0, {    96,    352}, {0x6b, 0x00, 0x00, 0xff}}},\n    {{{  -610,    638,   -260}, 0, {   128,    352}, {0x6b, 0x00, 0x00, 0xff}}},\n    {{{  -594,    639,   -246}, 0, {   128,    352}, {0x6b, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001D90 - 0x07001DD0\nstatic const Vtx intro_seg7_vertex_07001D90[] = {\n    {{{  -488,    772,   -326}, 0, {    64,    320}, {0x80, 0x00, 0x00, 0xff}}},\n    {{{  -504,    781,   -347}, 0, {    64,    320}, {0x80, 0x00, 0x00, 0xff}}},\n    {{{  -543,    776,   -328}, 0, {    64,    320}, {0x80, 0x00, 0x00, 0xff}}},\n    {{{  -556,    784,   -347}, 0, {    64,    352}, {0x80, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001DD0 - 0x07001E10\nstatic const Vtx intro_seg7_vertex_07001DD0[] = {\n    {{{  -488,    772,   -326}, 0, {    64,    320}, {0x93, 0x00, 0x00, 0xff}}},\n    {{{  -499,    805,   -345}, 0, {    64,    320}, {0x93, 0x00, 0x00, 0xff}}},\n    {{{  -504,    781,   -347}, 0, {    64,    320}, {0x93, 0x00, 0x00, 0xff}}},\n    {{{  -515,    811,   -362}, 0, {    64,    320}, {0x93, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001E10 - 0x07001E50\nstatic const Vtx intro_seg7_vertex_07001E10[] = {\n    {{{  -387,    844,   -382}, 0, {    32,    288}, {0x80, 0x00, 0x00, 0xff}}},\n    {{{  -515,    811,   -362}, 0, {    64,    320}, {0x80, 0x00, 0x00, 0xff}}},\n    {{{  -405,    831,   -361}, 0, {    64,    288}, {0x80, 0x00, 0x00, 0xff}}},\n    {{{  -499,    805,   -345}, 0, {    64,    320}, {0x80, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001E50 - 0x07001E80\nstatic const Vtx intro_seg7_vertex_07001E50[] = {\n    {{{  -244,    715,   -292}, 0, {    96,    256}, {0xa1, 0x00, 0x00, 0xff}}},\n    {{{  -277,    713,   -291}, 0, {    96,    256}, {0xa1, 0x00, 0x00, 0xff}}},\n    {{{  -265,    690,   -293}, 0, {    96,    256}, {0xa1, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001E80 - 0x07001EB0\nstatic const Vtx intro_seg7_vertex_07001E80[] = {\n    {{{  -265,    690,   -293}, 0, {    96,    256}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{  -277,    713,   -291}, 0, {    96,    256}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{  -278,    677,   -269}, 0, {   128,    256}, {0xd7, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001EB0 - 0x07001EE0\nstatic const Vtx intro_seg7_vertex_07001EB0[] = {\n    {{{  -265,    690,   -293}, 0, {    96,    256}, {0x99, 0x00, 0x00, 0xff}}},\n    {{{  -278,    677,   -269}, 0, {   128,    256}, {0x99, 0x00, 0x00, 0xff}}},\n    {{{  -249,    681,   -271}, 0, {   128,    256}, {0x99, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001EE0 - 0x07001F10\nstatic const Vtx intro_seg7_vertex_07001EE0[] = {\n    {{{  -265,    690,   -293}, 0, {    96,    256}, {0x5e, 0x00, 0x00, 0xff}}},\n    {{{  -249,    681,   -271}, 0, {   128,    256}, {0x5e, 0x00, 0x00, 0xff}}},\n    {{{  -244,    715,   -292}, 0, {    96,    256}, {0x5e, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001F10 - 0x07001F40\nstatic const Vtx intro_seg7_vertex_07001F10[] = {\n    {{{   -97,    717,   -293}, 0, {    96,    224}, {0xa1, 0x00, 0x00, 0xff}}},\n    {{{  -138,    714,   -291}, 0, {    96,    224}, {0xa1, 0x00, 0x00, 0xff}}},\n    {{{  -116,    688,   -292}, 0, {    96,    224}, {0xa1, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001F40 - 0x07001F70\nstatic const Vtx intro_seg7_vertex_07001F40[] = {\n    {{{  -116,    688,   -292}, 0, {    96,    224}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{  -138,    714,   -291}, 0, {    96,    224}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{  -139,    675,   -268}, 0, {   128,    224}, {0xd7, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001F70 - 0x07001FA0\nstatic const Vtx intro_seg7_vertex_07001F70[] = {\n    {{{  -116,    688,   -292}, 0, {    96,    224}, {0x99, 0x00, 0x00, 0xff}}},\n    {{{  -139,    675,   -268}, 0, {   128,    224}, {0x99, 0x00, 0x00, 0xff}}},\n    {{{   -90,    677,   -269}, 0, {   128,    224}, {0x99, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001FA0 - 0x07001FD0\nstatic const Vtx intro_seg7_vertex_07001FA0[] = {\n    {{{  -116,    688,   -292}, 0, {    96,    224}, {0x5e, 0x00, 0x00, 0xff}}},\n    {{{   -90,    677,   -269}, 0, {   128,    224}, {0x5e, 0x00, 0x00, 0xff}}},\n    {{{   -97,    717,   -293}, 0, {    96,    224}, {0x5e, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001FD0 - 0x07002000\nstatic const Vtx intro_seg7_vertex_07001FD0[] = {\n    {{{  -244,    617,   -233}, 0, {   128,    256}, {0xa1, 0x00, 0x00, 0xff}}},\n    {{{  -279,    621,   -235}, 0, {   128,    256}, {0xa1, 0x00, 0x00, 0xff}}},\n    {{{  -259,    598,   -239}, 0, {   128,    256}, {0xa1, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07002000 - 0x07002030\nstatic const Vtx intro_seg7_vertex_07002000[] = {\n    {{{  -259,    598,   -239}, 0, {   128,    256}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{  -279,    621,   -235}, 0, {   128,    256}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{  -285,    581,   -211}, 0, {   160,    256}, {0xd7, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07002030 - 0x07002060\nstatic const Vtx intro_seg7_vertex_07002030[] = {\n    {{{  -259,    598,   -239}, 0, {   128,    256}, {0x99, 0x00, 0x00, 0xff}}},\n    {{{  -285,    581,   -211}, 0, {   160,    256}, {0x99, 0x00, 0x00, 0xff}}},\n    {{{  -246,    581,   -211}, 0, {   160,    256}, {0x99, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07002060 - 0x07002090\nstatic const Vtx intro_seg7_vertex_07002060[] = {\n    {{{  -259,    598,   -239}, 0, {   128,    256}, {0x5e, 0x00, 0x00, 0xff}}},\n    {{{  -246,    581,   -211}, 0, {   160,    256}, {0x5e, 0x00, 0x00, 0xff}}},\n    {{{  -244,    617,   -233}, 0, {   128,    256}, {0x5e, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07002090 - 0x070020C0\nstatic const Vtx intro_seg7_vertex_07002090[] = {\n    {{{   -89,    627,   -239}, 0, {   128,    224}, {0xa1, 0x00, 0x00, 0xff}}},\n    {{{  -133,    623,   -237}, 0, {   128,    224}, {0xa1, 0x00, 0x00, 0xff}}},\n    {{{  -113,    595,   -237}, 0, {   160,    224}, {0xa1, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070020C0 - 0x070020F0\nstatic const Vtx intro_seg7_vertex_070020C0[] = {\n    {{{  -113,    595,   -237}, 0, {   160,    224}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{  -133,    623,   -237}, 0, {   128,    224}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{  -136,    581,   -212}, 0, {   160,    224}, {0xd7, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070020F0 - 0x07002120\nstatic const Vtx intro_seg7_vertex_070020F0[] = {\n    {{{  -113,    595,   -237}, 0, {   160,    224}, {0x99, 0x00, 0x00, 0xff}}},\n    {{{  -136,    581,   -212}, 0, {   160,    224}, {0x99, 0x00, 0x00, 0xff}}},\n    {{{   -93,    581,   -212}, 0, {   160,    224}, {0x99, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07002120 - 0x07002150\nstatic const Vtx intro_seg7_vertex_07002120[] = {\n    {{{  -113,    595,   -237}, 0, {   160,    224}, {0x5e, 0x00, 0x00, 0xff}}},\n    {{{   -93,    581,   -212}, 0, {   160,    224}, {0x5e, 0x00, 0x00, 0xff}}},\n    {{{   -89,    627,   -239}, 0, {   128,    224}, {0x5e, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07002150 - 0x07002240\nstatic const Vtx intro_seg7_vertex_07002150[] = {\n    {{{  -558,    542,   -188}, 0, {   160,    352}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -524,    562,   -200}, 0, {   160,    320}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -594,    639,   -246}, 0, {   128,    352}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -500,    682,   -272}, 0, {    96,    320}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -547,    428,   -120}, 0, {   192,    352}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -398,    425,   -118}, 0, {   192,    288}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -400,    564,   -201}, 0, {   160,    288}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -565,    698,   -282}, 0, {    96,    352}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -543,    776,   -328}, 0, {    64,    320}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -488,    772,   -326}, 0, {    64,    320}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -385,    770,   -324}, 0, {    64,    288}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -357,    701,   -283}, 0, {    96,    288}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -381,    648,   -252}, 0, {   128,    288}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -346,    623,   -236}, 0, {   128,    288}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -378,    557,   -197}, 0, {   160,    288}, {0xff, 0x2f, 0x2f, 0xff}}},\n};\n\n// 0x07002240 - 0x07002340\nstatic const Vtx intro_seg7_vertex_07002240[] = {\n    {{{  -405,    831,   -361}, 0, {    64,    288}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -499,    805,   -345}, 0, {    64,    320}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -385,    770,   -324}, 0, {    64,    288}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -488,    772,   -326}, 0, {    64,    320}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -352,    768,   -323}, 0, {    64,    288}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -357,    701,   -283}, 0, {    96,    288}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -130,    832,   -361}, 0, {    64,    224}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -236,    830,   -360}, 0, {    64,    256}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -132,    769,   -324}, 0, {    96,    224}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -244,    775,   -327}, 0, {    64,    256}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   -34,    766,   -322}, 0, {    96,    192}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   -97,    717,   -293}, 0, {    96,    224}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -138,    714,   -291}, 0, {    96,    224}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -336,    775,   -327}, 0, {    64,    288}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -346,    623,   -236}, 0, {   128,    288}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -277,    713,   -291}, 0, {    96,    256}, {0xff, 0x2f, 0x2f, 0xff}}},\n};\n\n// 0x07002340 - 0x07002420\nstatic const Vtx intro_seg7_vertex_07002340[] = {\n    {{{  -277,    713,   -291}, 0, {    96,    256}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -244,    715,   -292}, 0, {    96,    256}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -244,    775,   -327}, 0, {    64,    256}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -138,    714,   -291}, 0, {    96,    224}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -351,    524,   -177}, 0, {   160,    288}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -252,    521,   -176}, 0, {   160,    256}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -348,    585,   -214}, 0, {   160,    288}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -255,    416,   -113}, 0, {   224,    256}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -121,    515,   -172}, 0, {   160,    224}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -136,    581,   -212}, 0, {   160,    224}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -285,    581,   -211}, 0, {   160,    256}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -246,    581,   -211}, 0, {   160,    256}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -378,    557,   -197}, 0, {   160,    288}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -346,    623,   -236}, 0, {   128,    288}, {0xff, 0x2f, 0x2f, 0xff}}},\n};\n\n// 0x07002420 - 0x07002520\nstatic const Vtx intro_seg7_vertex_07002420[] = {\n    {{{  -122,    413,   -111}, 0, {   224,    224}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -121,    515,   -172}, 0, {   160,    224}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -255,    416,   -113}, 0, {   224,    256}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   -26,    518,   -174}, 0, {   160,    224}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   -93,    581,   -212}, 0, {   160,    224}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -136,    581,   -212}, 0, {   160,    224}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   -34,    766,   -322}, 0, {    96,    192}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   -89,    627,   -239}, 0, {   128,    224}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   -90,    677,   -269}, 0, {   128,    224}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   -97,    717,   -293}, 0, {    96,    224}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -133,    623,   -237}, 0, {   128,    224}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -246,    581,   -211}, 0, {   160,    256}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -244,    617,   -233}, 0, {   128,    256}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -138,    714,   -291}, 0, {    96,    224}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -244,    715,   -292}, 0, {    96,    256}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -139,    675,   -268}, 0, {   128,    224}, {0xff, 0x2f, 0x2f, 0xff}}},\n};\n\n// 0x07002520 - 0x070025D0\nstatic const Vtx intro_seg7_vertex_07002520[] = {\n    {{{  -277,    713,   -291}, 0, {    96,    256}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -346,    623,   -236}, 0, {   128,    288}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -278,    677,   -269}, 0, {   128,    256}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -285,    581,   -211}, 0, {   160,    256}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -279,    621,   -235}, 0, {   128,    256}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -244,    617,   -233}, 0, {   128,    256}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -249,    681,   -271}, 0, {   128,    256}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -244,    715,   -292}, 0, {    96,    256}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -139,    675,   -268}, 0, {   128,    224}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -133,    623,   -237}, 0, {   128,    224}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   -90,    677,   -269}, 0, {   128,    224}, {0xff, 0x2f, 0x2f, 0xff}}},\n};\n\n// 0x070025D0 - 0x07002610\nstatic const Vtx intro_seg7_vertex_070025D0[] = {\n    {{{   658,    317,    -73}, 0, {   256,     64}, {0x6a, 0x6a, 0x00, 0xff}}},\n    {{{   669,    311,    -50}, 0, {   256,     32}, {0x6a, 0x6a, 0x00, 0xff}}},\n    {{{   806,    317,    -73}, 0, {   256,      0}, {0x6a, 0x6a, 0x00, 0xff}}},\n    {{{   777,    309,    -49}, 0, {   256,     32}, {0x6a, 0x6a, 0x00, 0xff}}},\n};\n\n// 0x07002610 - 0x07002650\nstatic const Vtx intro_seg7_vertex_07002610[] = {\n    {{{   760,    257,    -17}, 0, {   288,     32}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{   790,    270,    -45}, 0, {   256,      0}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{   777,    309,    -49}, 0, {   256,     32}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{   806,    317,    -73}, 0, {   256,      0}, {0xb1, 0xb1, 0x00, 0xff}}},\n};\n\n// 0x07002650 - 0x07002690\nstatic const Vtx intro_seg7_vertex_07002650[] = {\n    {{{   760,    257,    -17}, 0, {   288,     32}, {0x6a, 0x6a, 0x00, 0xff}}},\n    {{{   901,    264,    -22}, 0, {   288,      0}, {0x6a, 0x6a, 0x00, 0xff}}},\n    {{{   790,    270,    -45}, 0, {   256,      0}, {0x6a, 0x6a, 0x00, 0xff}}},\n    {{{   930,    277,    -49}, 0, {   256,      0}, {0x6a, 0x6a, 0x00, 0xff}}},\n};\n\n// 0x07002690 - 0x070026D0\nstatic const Vtx intro_seg7_vertex_07002690[] = {\n    {{{   887,     92,     62}, 0, {   352,      0}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{   930,    277,    -49}, 0, {   256,      0}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{   871,    123,     62}, 0, {   320,      0}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{   901,    264,    -22}, 0, {   288,      0}, {0xb1, 0xb1, 0x00, 0xff}}},\n};\n\n// 0x070026D0 - 0x07002710\nstatic const Vtx intro_seg7_vertex_070026D0[] = {\n    {{{   887,     92,     62}, 0, {   352,      0}, {0xa1, 0xa1, 0x00, 0xff}}},\n    {{{   871,    123,     62}, 0, {   320,      0}, {0xa1, 0xa1, 0x00, 0xff}}},\n    {{{   786,    118,     44}, 0, {   352,      0}, {0xa1, 0xa1, 0x00, 0xff}}},\n    {{{   779,    149,     46}, 0, {   320,     32}, {0xa1, 0xa1, 0x00, 0xff}}},\n};\n\n// 0x07002710 - 0x07002740\nstatic const Vtx intro_seg7_vertex_07002710[] = {\n    {{{   769,    144,     49}, 0, {   320,     32}, {0xa1, 0xa1, 0x00, 0xff}}},\n    {{{   786,    118,     44}, 0, {   352,      0}, {0xa1, 0xa1, 0x00, 0xff}}},\n    {{{   779,    149,     46}, 0, {   320,     32}, {0xa1, 0xa1, 0x00, 0xff}}},\n};\n\n// 0x07002740 - 0x07002770\nstatic const Vtx intro_seg7_vertex_07002740[] = {\n    {{{   769,    144,     49}, 0, {   320,     32}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{   779,    149,     46}, 0, {   320,     32}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{   774,    159,     40}, 0, {   320,     32}, {0xb1, 0xb1, 0x00, 0xff}}},\n};\n\n// 0x07002770 - 0x070027A0\nstatic const Vtx intro_seg7_vertex_07002770[] = {\n    {{{   761,    188,     23}, 0, {   320,     32}, {0xa1, 0xa1, 0x00, 0xff}}},\n    {{{   698,    171,     33}, 0, {   320,     32}, {0xa1, 0xa1, 0x00, 0xff}}},\n    {{{   750,    162,     24}, 0, {   320,     32}, {0xa1, 0xa1, 0x00, 0xff}}},\n};\n\n// 0x070027A0 - 0x070027D0\nstatic const Vtx intro_seg7_vertex_070027A0[] = {\n    {{{   709,    150,     31}, 0, {   320,     32}, {0xa1, 0xa1, 0x00, 0xff}}},\n    {{{   750,    162,     24}, 0, {   320,     32}, {0xa1, 0xa1, 0x00, 0xff}}},\n    {{{   698,    171,     33}, 0, {   320,     32}, {0xa1, 0xa1, 0x00, 0xff}}},\n};\n\n// 0x070027D0 - 0x07002800\nstatic const Vtx intro_seg7_vertex_070027D0[] = {\n    {{{   709,    150,     31}, 0, {   320,     32}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{   698,    171,     33}, 0, {   320,     32}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{   649,    126,     60}, 0, {   320,     64}, {0xb1, 0xb1, 0x00, 0xff}}},\n};\n\n// 0x07002800 - 0x07002830\nstatic const Vtx intro_seg7_vertex_07002800[] = {\n    {{{   750,    162,     24}, 0, {   320,     32}, {0xa1, 0xa1, 0x00, 0xff}}},\n    {{{   774,    159,     40}, 0, {   320,     32}, {0xa1, 0xa1, 0x00, 0xff}}},\n    {{{   761,    188,     23}, 0, {   320,     32}, {0xa1, 0xa1, 0x00, 0xff}}},\n};\n\n// 0x07002830 - 0x07002860\nstatic const Vtx intro_seg7_vertex_07002830[] = {\n    {{{   649,    126,     60}, 0, {   320,     64}, {0x6a, 0x6a, 0x00, 0xff}}},\n    {{{   658,    122,     62}, 0, {   320,     64}, {0x6a, 0x6a, 0x00, 0xff}}},\n    {{{   709,    150,     31}, 0, {   320,     32}, {0x6a, 0x6a, 0x00, 0xff}}},\n};\n\n// 0x07002860 - 0x07002890\nstatic const Vtx intro_seg7_vertex_07002860[] = {\n    {{{   658,    122,     62}, 0, {   320,     64}, {0x6a, 0x6a, 0x00, 0xff}}},\n    {{{   769,    156,     42}, 0, {   320,     32}, {0x6a, 0x6a, 0x00, 0xff}}},\n    {{{   709,    150,     31}, 0, {   320,     32}, {0x6a, 0x6a, 0x00, 0xff}}},\n};\n\n// 0x07002890 - 0x070028C0\nstatic const Vtx intro_seg7_vertex_07002890[] = {\n    {{{   709,    150,     31}, 0, {   320,     32}, {0x6a, 0x6a, 0x00, 0xff}}},\n    {{{   769,    156,     42}, 0, {   320,     32}, {0x6a, 0x6a, 0x00, 0xff}}},\n    {{{   750,    162,     24}, 0, {   320,     32}, {0x6a, 0x6a, 0x00, 0xff}}},\n};\n\n// 0x070028C0 - 0x070028F0\nstatic const Vtx intro_seg7_vertex_070028C0[] = {\n    {{{   750,    162,     24}, 0, {   320,     32}, {0x6a, 0x6a, 0x00, 0xff}}},\n    {{{   769,    156,     42}, 0, {   320,     32}, {0x6a, 0x6a, 0x00, 0xff}}},\n    {{{   774,    159,     40}, 0, {   320,     32}, {0x6a, 0x6a, 0x00, 0xff}}},\n};\n\n// 0x070028F0 - 0x07002920\nstatic const Vtx intro_seg7_vertex_070028F0[] = {\n    {{{   774,    159,     40}, 0, {   320,     32}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{   769,    156,     42}, 0, {   320,     32}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{   769,    144,     49}, 0, {   320,     32}, {0xb1, 0xb1, 0x00, 0xff}}},\n};\n\n// 0x07002920 - 0x07002950\nstatic const Vtx intro_seg7_vertex_07002920[] = {\n    {{{   769,    156,     42}, 0, {   320,     32}, {0x6a, 0x6a, 0x00, 0xff}}},\n    {{{   658,    122,     62}, 0, {   320,     64}, {0x6a, 0x6a, 0x00, 0xff}}},\n    {{{   769,    144,     49}, 0, {   320,     32}, {0x6a, 0x6a, 0x00, 0xff}}},\n};\n\n// 0x07002950 - 0x07002980\nstatic const Vtx intro_seg7_vertex_07002950[] = {\n    {{{   629,     69,     80}, 0, {   352,     64}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   621,    100,     75}, 0, {   352,     64}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   611,     67,     74}, 0, {   352,     64}, {0x43, 0x43, 0x00, 0xff}}},\n};\n\n// 0x07002980 - 0x070029B0\nstatic const Vtx intro_seg7_vertex_07002980[] = {\n    {{{   629,     69,     80}, 0, {   352,     64}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{   649,    126,     60}, 0, {   320,     64}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{   621,    100,     75}, 0, {   352,     64}, {0xb1, 0xb1, 0x00, 0xff}}},\n};\n\n// 0x070029B0 - 0x070029E0\nstatic const Vtx intro_seg7_vertex_070029B0[] = {\n    {{{   625,     27,    119}, 0, {   352,     64}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   629,     69,     80}, 0, {   352,     64}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   610,     30,     96}, 0, {   352,     64}, {0x43, 0x43, 0x00, 0xff}}},\n};\n\n// 0x070029E0 - 0x07002A10\nstatic const Vtx intro_seg7_vertex_070029E0[] = {\n    {{{   610,     30,     96}, 0, {   352,     64}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   629,     69,     80}, 0, {   352,     64}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   611,     67,     74}, 0, {   352,     64}, {0x43, 0x43, 0x00, 0xff}}},\n};\n\n// 0x07002A10 - 0x07002A40\nstatic const Vtx intro_seg7_vertex_07002A10[] = {\n    {{{   649,    126,     60}, 0, {   320,     64}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{   629,     69,     80}, 0, {   352,     64}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{   658,    122,     62}, 0, {   320,     64}, {0xb1, 0xb1, 0x00, 0xff}}},\n};\n\n// 0x07002A40 - 0x07002A70\nstatic const Vtx intro_seg7_vertex_07002A40[] = {\n    {{{   629,     69,     80}, 0, {   352,     64}, {0xba, 0xba, 0x00, 0xff}}},\n    {{{   625,     27,    119}, 0, {   352,     64}, {0xba, 0xba, 0x00, 0xff}}},\n    {{{   658,    122,     62}, 0, {   320,     64}, {0xba, 0xba, 0x00, 0xff}}},\n};\n\n// 0x07002A70 - 0x07002AB0\nstatic const Vtx intro_seg7_vertex_07002A70[] = {\n    {{{   482,    -98,    173}, 0, {   416,     96}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   515,    -83,    185}, 0, {   416,     96}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   610,     30,     96}, 0, {   352,     64}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   625,     27,    119}, 0, {   352,     64}, {0x43, 0x43, 0x00, 0xff}}},\n};\n\n// 0x07002AB0 - 0x07002AF0\nstatic const Vtx intro_seg7_vertex_07002AB0[] = {\n    {{{   541,    186,      5}, 0, {   288,     96}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   611,     67,     74}, 0, {   352,     64}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   566,    193,     20}, 0, {   288,     64}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   621,    100,     75}, 0, {   352,     64}, {0x78, 0x78, 0x00, 0xff}}},\n};\n\n// 0x07002AF0 - 0x07002B30\nstatic const Vtx intro_seg7_vertex_07002AF0[] = {\n    {{{   541,    186,      5}, 0, {   288,     96}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   566,    193,     20}, 0, {   288,     64}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   628,    246,    -11}, 0, {   288,     64}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   619,    247,    -31}, 0, {   288,     64}, {0x43, 0x43, 0x00, 0xff}}},\n};\n\n// 0x07002B30 - 0x07002B70\nstatic const Vtx intro_seg7_vertex_07002B30[] = {\n    {{{   619,    247,    -31}, 0, {   288,     64}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   628,    246,    -11}, 0, {   288,     64}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   658,    317,    -73}, 0, {   256,     64}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   669,    311,    -50}, 0, {   256,     32}, {0x43, 0x43, 0x00, 0xff}}},\n};\n\n// 0x07002B70 - 0x07002BB0\nstatic const Vtx intro_seg7_vertex_07002B70[] = {\n    {{{   482,    -98,    173}, 0, {   416,     96}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{   619,   -170,    215}, 0, {   448,     64}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{   515,    -83,    185}, 0, {   416,     96}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{   615,   -133,    215}, 0, {   416,     64}, {0x6b, 0x6b, 0x00, 0xff}}},\n};\n\n// 0x07002BB0 - 0x07002BF0\nstatic const Vtx intro_seg7_vertex_07002BB0[] = {\n    {{{   668,    -97,    172}, 0, {   416,     64}, {0xba, 0xba, 0x00, 0xff}}},\n    {{{   615,   -133,    215}, 0, {   416,     64}, {0xba, 0xba, 0x00, 0xff}}},\n    {{{   619,   -170,    215}, 0, {   448,     64}, {0xba, 0xba, 0x00, 0xff}}},\n    {{{   667,    -61,    172}, 0, {   384,     64}, {0xba, 0xba, 0x00, 0xff}}},\n};\n\n// 0x07002BF0 - 0x07002C30\nstatic const Vtx intro_seg7_vertex_07002BF0[] = {\n    {{{   667,    -61,    172}, 0, {   384,     64}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{   668,    -97,    172}, 0, {   416,     64}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{   812,   -164,    234}, 0, {   448,     32}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{   810,   -196,    234}, 0, {   448,     32}, {0x6b, 0x6b, 0x00, 0xff}}},\n};\n\n// 0x07002C30 - 0x07002C70\nstatic const Vtx intro_seg7_vertex_07002C30[] = {\n    {{{   994,    -64,    156}, 0, {   416,      0}, {0xba, 0xba, 0x00, 0xff}}},\n    {{{   954,    -62,    173}, 0, {   416,      0}, {0xba, 0xba, 0x00, 0xff}}},\n    {{{   810,   -196,    234}, 0, {   448,     32}, {0xba, 0xba, 0x00, 0xff}}},\n    {{{   812,   -164,    234}, 0, {   448,     32}, {0xba, 0xba, 0x00, 0xff}}},\n};\n\n// 0x07002C70 - 0x07002CB0\nstatic const Vtx intro_seg7_vertex_07002C70[] = {\n    {{{   994,    -64,    156}, 0, {   416,      0}, {0x81, 0x81, 0x00, 0xff}}},\n    {{{   789,     26,     98}, 0, {   352,     32}, {0x81, 0x81, 0x00, 0xff}}},\n    {{{   954,    -62,    173}, 0, {   416,      0}, {0x81, 0x81, 0x00, 0xff}}},\n    {{{   768,     21,    123}, 0, {   384,     32}, {0x81, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07002CB0 - 0x07002CF0\nstatic const Vtx intro_seg7_vertex_07002CB0[] = {\n    {{{   769,    144,     49}, 0, {   320,     32}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{   768,     21,    123}, 0, {   384,     32}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{   786,    118,     44}, 0, {   352,      0}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{   789,     26,     98}, 0, {   352,     32}, {0xb1, 0xb1, 0x00, 0xff}}},\n};\n\n// 0x07002CF0 - 0x07002DC0\nstatic const Vtx intro_seg7_vertex_07002CF0[] = {\n    {{{   621,    100,     75}, 0, {   352,     64}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   649,    126,     60}, 0, {   320,     64}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   566,    193,     20}, 0, {   288,     64}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   698,    171,     33}, 0, {   320,     32}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   628,    246,    -11}, 0, {   288,     64}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   777,    309,    -49}, 0, {   256,     32}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   669,    311,    -50}, 0, {   256,     32}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   760,    257,    -17}, 0, {   288,     32}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   901,    264,    -22}, 0, {   288,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   871,    123,     62}, 0, {   320,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   779,    149,     46}, 0, {   320,     32}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   774,    159,     40}, 0, {   320,     32}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   761,    188,     23}, 0, {   320,     32}, {0xff, 0xff, 0x39, 0xff}}},\n};\n\n// 0x07002DC0 - 0x07002E50\nstatic const Vtx intro_seg7_vertex_07002DC0[] = {\n    {{{   954,    -62,    173}, 0, {   416,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   768,     21,    123}, 0, {   384,     32}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   812,   -164,    234}, 0, {   448,     32}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   667,    -61,    172}, 0, {   384,     64}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   769,    144,     49}, 0, {   320,     32}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   658,    122,     62}, 0, {   320,     64}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   625,     27,    119}, 0, {   352,     64}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   515,    -83,    185}, 0, {   416,     96}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   615,   -133,    215}, 0, {   416,     64}, {0xff, 0xff, 0x39, 0xff}}},\n};\n\n// 0x07002E50 - 0x07002E90\nstatic const Vtx intro_seg7_vertex_07002E50[] = {\n    {{{   494,     73,     70}, 0, {   352,     96}, {0xba, 0xba, 0x00, 0xff}}},\n    {{{   552,    151,     28}, 0, {   320,     64}, {0xba, 0xba, 0x00, 0xff}}},\n    {{{   480,     81,     86}, 0, {   352,     96}, {0xba, 0xba, 0x00, 0xff}}},\n    {{{   525,    152,     44}, 0, {   320,     96}, {0xba, 0xba, 0x00, 0xff}}},\n};\n\n// 0x07002E90 - 0x07002ED0\nstatic const Vtx intro_seg7_vertex_07002E90[] = {\n    {{{   494,     73,     70}, 0, {   352,     96}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{   480,     81,     86}, 0, {   352,     96}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{   545,     -8,    124}, 0, {   384,     64}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{   520,      7,    131}, 0, {   384,     96}, {0xb1, 0xb1, 0x00, 0xff}}},\n};\n\n// 0x07002ED0 - 0x07002F00\nstatic const Vtx intro_seg7_vertex_07002ED0[] = {\n    {{{   449,    179,     28}, 0, {   320,     96}, {0x8b, 0x8b, 0x00, 0xff}}},\n    {{{   525,    152,     44}, 0, {   320,     96}, {0x8b, 0x8b, 0x00, 0xff}}},\n    {{{   522,    162,     18}, 0, {   320,     64}, {0x8b, 0x8b, 0x00, 0xff}}},\n};\n\n// 0x07002F00 - 0x07002F30\nstatic const Vtx intro_seg7_vertex_07002F00[] = {\n    {{{   552,    151,     28}, 0, {   320,     64}, {0x8b, 0x8b, 0x00, 0xff}}},\n    {{{   551,    176,     13}, 0, {   320,     64}, {0x8b, 0x8b, 0x00, 0xff}}},\n    {{{   525,    152,     44}, 0, {   320,     96}, {0x8b, 0x8b, 0x00, 0xff}}},\n};\n\n// 0x07002F30 - 0x07002F60\nstatic const Vtx intro_seg7_vertex_07002F30[] = {\n    {{{   530,    186,     24}, 0, {   320,     96}, {0xba, 0xba, 0x00, 0xff}}},\n    {{{   522,    162,     18}, 0, {   320,     64}, {0xba, 0xba, 0x00, 0xff}}},\n    {{{   551,    176,     13}, 0, {   320,     64}, {0xba, 0xba, 0x00, 0xff}}},\n};\n\n// 0x07002F60 - 0x07002F90\nstatic const Vtx intro_seg7_vertex_07002F60[] = {\n    {{{   551,    176,     13}, 0, {   320,     64}, {0x6a, 0x6a, 0x00, 0xff}}},\n    {{{   522,    162,     18}, 0, {   320,     64}, {0x6a, 0x6a, 0x00, 0xff}}},\n    {{{   525,    152,     44}, 0, {   320,     96}, {0x6a, 0x6a, 0x00, 0xff}}},\n};\n\n// 0x07002F90 - 0x07002FC0\nstatic const Vtx intro_seg7_vertex_07002F90[] = {\n    {{{   522,    162,     18}, 0, {   320,     64}, {0xba, 0xba, 0x00, 0xff}}},\n    {{{   530,    186,     24}, 0, {   320,     96}, {0xba, 0xba, 0x00, 0xff}}},\n    {{{   449,    179,     28}, 0, {   320,     96}, {0xba, 0xba, 0x00, 0xff}}},\n};\n\n// 0x07002FC0 - 0x07003000\nstatic const Vtx intro_seg7_vertex_07002FC0[] = {\n    {{{   545,     -8,    124}, 0, {   384,     64}, {0xba, 0xba, 0x00, 0xff}}},\n    {{{   520,      7,    131}, 0, {   384,     96}, {0xba, 0xba, 0x00, 0xff}}},\n    {{{   480,    -27,    130}, 0, {   384,     96}, {0xba, 0xba, 0x00, 0xff}}},\n    {{{   461,     -7,    140}, 0, {   384,     96}, {0xba, 0xba, 0x00, 0xff}}},\n};\n\n// 0x07003000 - 0x07003040\nstatic const Vtx intro_seg7_vertex_07003000[] = {\n    {{{   191,   -117,    186}, 0, {   416,    192}, {0x51, 0x51, 0x00, 0xff}}},\n    {{{   211,    -92,    191}, 0, {   416,    160}, {0x51, 0x51, 0x00, 0xff}}},\n    {{{   175,    281,    -51}, 0, {   256,    160}, {0x51, 0x51, 0x00, 0xff}}},\n    {{{   195,    272,    -26}, 0, {   256,    160}, {0x51, 0x51, 0x00, 0xff}}},\n};\n\n// 0x07003040 - 0x07003080\nstatic const Vtx intro_seg7_vertex_07003040[] = {\n    {{{   578,    342,    -86}, 0, {   224,     64}, {0x6a, 0x6a, 0x00, 0xff}}},\n    {{{   175,    281,    -51}, 0, {   256,    160}, {0x6a, 0x6a, 0x00, 0xff}}},\n    {{{   554,    328,    -60}, 0, {   256,     64}, {0x6a, 0x6a, 0x00, 0xff}}},\n    {{{   195,    272,    -26}, 0, {   256,    160}, {0x6a, 0x6a, 0x00, 0xff}}},\n};\n\n// 0x07003080 - 0x070030C0\nstatic const Vtx intro_seg7_vertex_07003080[] = {\n    {{{   578,    342,    -86}, 0, {   224,     64}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{   554,    328,    -60}, 0, {   256,     64}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{   551,    176,     13}, 0, {   320,     64}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{   530,    186,     24}, 0, {   320,     96}, {0xb1, 0xb1, 0x00, 0xff}}},\n};\n\n// 0x070030C0 - 0x07003100\nstatic const Vtx intro_seg7_vertex_070030C0[] = {\n    {{{   480,    -27,    130}, 0, {   384,     96}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{   461,     -7,    140}, 0, {   384,     96}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{   480,   -103,    197}, 0, {   416,     96}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{   499,   -126,    196}, 0, {   416,     96}, {0xb1, 0xb1, 0x00, 0xff}}},\n};\n\n// 0x07003100 - 0x07003140\nstatic const Vtx intro_seg7_vertex_07003100[] = {\n    {{{   499,   -126,    196}, 0, {   416,     96}, {0xa4, 0xa4, 0x00, 0xff}}},\n    {{{   480,   -103,    197}, 0, {   416,     96}, {0xa4, 0xa4, 0x00, 0xff}}},\n    {{{   191,   -117,    186}, 0, {   416,    192}, {0xa4, 0xa4, 0x00, 0xff}}},\n    {{{   211,    -92,    191}, 0, {   416,    160}, {0xa4, 0xa4, 0x00, 0xff}}},\n};\n\n// 0x07003140 - 0x07003240\nstatic const Vtx intro_seg7_vertex_07003140[] = {\n    {{{   449,    179,     28}, 0, {   320,     96}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   438,    183,     26}, 0, {   320,     96}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   435,    180,     28}, 0, {   320,     96}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   369,    174,     31}, 0, {   320,    128}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   530,    186,     24}, 0, {   320,     96}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   195,    272,    -26}, 0, {   256,    160}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   348,    188,     23}, 0, {   288,    128}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   427,      8,    130}, 0, {   384,     96}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   449,    -10,    142}, 0, {   384,     96}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   456,     10,    130}, 0, {   384,     96}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   461,     -7,    140}, 0, {   384,     96}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   211,    -92,    191}, 0, {   416,    160}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   328,    172,     32}, 0, {   320,    128}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   306,    154,     43}, 0, {   320,    128}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   411,    147,     47}, 0, {   320,     96}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   313,    165,     36}, 0, {   320,    128}, {0xff, 0xff, 0x39, 0xff}}},\n};\n\n// 0x07003240 - 0x07003330\nstatic const Vtx intro_seg7_vertex_07003240[] = {\n    {{{   328,    172,     32}, 0, {   320,    128}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   307,    170,     34}, 0, {   320,    128}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   313,    165,     36}, 0, {   320,    128}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   195,    272,    -26}, 0, {   256,    160}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   461,     -7,    140}, 0, {   384,     96}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   480,     81,     86}, 0, {   352,     96}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   456,     10,    130}, 0, {   384,     96}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   427,      8,    130}, 0, {   384,     96}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   306,    154,     43}, 0, {   320,    128}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   520,      7,    131}, 0, {   384,     96}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   525,    152,     44}, 0, {   320,     96}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   449,    179,     28}, 0, {   320,     96}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   435,    180,     28}, 0, {   320,     96}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   411,    147,     47}, 0, {   320,     96}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   398,     34,    115}, 0, {   352,    128}, {0xff, 0xff, 0x39, 0xff}}},\n};\n\n// 0x07003330 - 0x07003410\nstatic const Vtx intro_seg7_vertex_07003330[] = {\n    {{{   480,   -103,    197}, 0, {   416,     96}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   461,     -7,    140}, 0, {   384,     96}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   211,    -92,    191}, 0, {   416,    160}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   301,     36,    114}, 0, {   352,    128}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   343,      5,    132}, 0, {   384,    128}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   330,     88,     82}, 0, {   352,    128}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   299,      2,    134}, 0, {   384,    128}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   195,    272,    -26}, 0, {   256,    160}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   306,    154,     43}, 0, {   320,    128}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   398,     34,    115}, 0, {   352,    128}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   427,      8,    130}, 0, {   384,     96}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   411,    147,     47}, 0, {   320,     96}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   554,    328,    -60}, 0, {   256,     64}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   530,    186,     24}, 0, {   320,     96}, {0xff, 0xff, 0x39, 0xff}}},\n};\n\n// 0x07003410 - 0x07003440\nstatic const Vtx intro_seg7_vertex_07003410[] = {\n    {{{   211,    -92,    191}, 0, {   416,    160}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   299,      2,    134}, 0, {   384,    128}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   195,    272,    -26}, 0, {   256,    160}, {0xff, 0xff, 0x39, 0xff}}},\n};\n\n// 0x07003440 - 0x07003470\nstatic const Vtx intro_seg7_vertex_07003440[] = {\n    {{{   411,    147,     47}, 0, {   320,     96}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   435,    180,     28}, 0, {   320,     96}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   407,    159,     26}, 0, {   320,    128}, {0x43, 0x43, 0x00, 0xff}}},\n};\n\n// 0x07003470 - 0x070034A0\nstatic const Vtx intro_seg7_vertex_07003470[] = {\n    {{{   368,    174,     31}, 0, {   320,    128}, {0xba, 0xba, 0x00, 0xff}}},\n    {{{   410,    147,     47}, 0, {   320,     96}, {0xba, 0xba, 0x00, 0xff}}},\n    {{{   406,    159,     26}, 0, {   320,    128}, {0xba, 0xba, 0x00, 0xff}}},\n};\n\n// 0x070034A0 - 0x070034D0\nstatic const Vtx intro_seg7_vertex_070034A0[] = {\n    {{{   435,    180,     28}, 0, {   320,     96}, {0xba, 0xba, 0x00, 0xff}}},\n    {{{   369,    174,     31}, 0, {   320,    128}, {0xba, 0xba, 0x00, 0xff}}},\n    {{{   407,    159,     26}, 0, {   320,    128}, {0xba, 0xba, 0x00, 0xff}}},\n};\n\n// 0x070034D0 - 0x070035C0\nstatic const Vtx intro_seg7_vertex_070034D0[] = {\n    {{{   396,     12,    114}, 0, {   352,    128}, {0xba, 0xba, 0x00, 0xff}}},\n    {{{   398,     34,    115}, 0, {   352,    128}, {0xba, 0xba, 0x00, 0xff}}},\n    {{{   343,      5,    132}, 0, {   384,    128}, {0xba, 0xba, 0x00, 0xff}}},\n    {{{   316,     83,     71}, 0, {   352,    128}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   330,     88,     82}, 0, {   352,    128}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   306,    154,     43}, 0, {   320,    128}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   312,      7,    117}, 0, {   352,    128}, {0x62, 0x62, 0x00, 0xff}}},\n    {{{   299,      2,    134}, 0, {   384,    128}, {0x62, 0x62, 0x00, 0xff}}},\n    {{{   343,      5,    132}, 0, {   384,    128}, {0x62, 0x62, 0x00, 0xff}}},\n    {{{   301,     36,    114}, 0, {   352,    128}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   330,     88,     82}, 0, {   352,    128}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   316,     83,     71}, 0, {   352,    128}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   427,      8,    130}, 0, {   384,     96}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   398,     34,    115}, 0, {   352,    128}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   396,     12,    114}, 0, {   352,    128}, {0x78, 0x78, 0x00, 0xff}}},\n};\n\n// 0x070035C0 - 0x07003680\nstatic const Vtx intro_seg7_vertex_070035C0[] = {\n    {{{   343,      5,    132}, 0, {   384,    128}, {0xba, 0xba, 0x00, 0xff}}},\n    {{{   427,      8,    130}, 0, {   384,     96}, {0xba, 0xba, 0x00, 0xff}}},\n    {{{   396,     12,    114}, 0, {   352,    128}, {0xba, 0xba, 0x00, 0xff}}},\n    {{{   301,     36,    114}, 0, {   352,    128}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   299,      2,    134}, 0, {   384,    128}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   312,      7,    117}, 0, {   352,    128}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   306,    154,     43}, 0, {   320,    128}, {0x62, 0x62, 0x00, 0xff}}},\n    {{{   301,     36,    114}, 0, {   352,    128}, {0x62, 0x62, 0x00, 0xff}}},\n    {{{   316,     83,     71}, 0, {   352,    128}, {0x62, 0x62, 0x00, 0xff}}},\n    {{{   312,      7,    117}, 0, {   352,    128}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   343,      5,    132}, 0, {   384,    128}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   301,     36,    114}, 0, {   352,    128}, {0x43, 0x43, 0x00, 0xff}}},\n};\n\n// 0x07003680 - 0x070036C0\nstatic const Vtx intro_seg7_vertex_07003680[] = {\n    {{{   -85,    319,    -74}, 0, {   224,    224}, {0x00, 0x75, 0x00, 0xff}}},\n    {{{   -72,    307,    -47}, 0, {   256,    224}, {0x00, 0x75, 0x00, 0xff}}},\n    {{{    98,    302,    -60}, 0, {   256,    160}, {0x00, 0x75, 0x00, 0xff}}},\n    {{{    69,    291,    -38}, 0, {   256,    192}, {0x00, 0x75, 0x00, 0xff}}},\n};\n\n// 0x070036C0 - 0x07003700\nstatic const Vtx intro_seg7_vertex_070036C0[] = {\n    {{{    59,    241,    -21}, 0, {   288,    192}, {0x00, 0xa6, 0x00, 0xff}}},\n    {{{    69,    291,    -38}, 0, {   256,    192}, {0x00, 0xa6, 0x00, 0xff}}},\n    {{{    32,    233,     -3}, 0, {   288,    192}, {0x00, 0xa6, 0x00, 0xff}}},\n    {{{    98,    302,    -60}, 0, {   256,    160}, {0x00, 0xa6, 0x00, 0xff}}},\n};\n\n// 0x07003700 - 0x07003740\nstatic const Vtx intro_seg7_vertex_07003700[] = {\n    {{{    32,    233,     -3}, 0, {   288,    192}, {0x00, 0x75, 0x00, 0xff}}},\n    {{{   116,    212,      8}, 0, {   288,    192}, {0x00, 0x75, 0x00, 0xff}}},\n    {{{    59,    241,    -21}, 0, {   288,    192}, {0x00, 0x75, 0x00, 0xff}}},\n    {{{   144,    218,    -12}, 0, {   288,    160}, {0x00, 0x75, 0x00, 0xff}}},\n};\n\n// 0x07003740 - 0x07003780\nstatic const Vtx intro_seg7_vertex_07003740[] = {\n    {{{   -93,    259,    -19}, 0, {   256,    224}, {0x00, 0x4b, 0x00, 0xff}}},\n    {{{   -72,    307,    -47}, 0, {   256,    224}, {0x00, 0x4b, 0x00, 0xff}}},\n    {{{  -110,    272,    -42}, 0, {   256,    224}, {0x00, 0x4b, 0x00, 0xff}}},\n    {{{   -85,    319,    -74}, 0, {   224,    224}, {0x00, 0x4b, 0x00, 0xff}}},\n};\n\n// 0x07003780 - 0x070037C0\nstatic const Vtx intro_seg7_vertex_07003780[] = {\n    {{{   -93,    259,    -19}, 0, {   256,    224}, {0x00, 0x75, 0x00, 0xff}}},\n    {{{  -110,    272,    -42}, 0, {   256,    224}, {0x00, 0x75, 0x00, 0xff}}},\n    {{{  -202,    276,    -29}, 0, {   256,    256}, {0x00, 0x75, 0x00, 0xff}}},\n    {{{  -213,    286,    -51}, 0, {   256,    256}, {0x00, 0x75, 0x00, 0xff}}},\n};\n\n// 0x070037C0 - 0x070037F0\nstatic const Vtx intro_seg7_vertex_070037C0[] = {\n    {{{  -190,    150,     28}, 0, {   320,    256}, {0x00, 0x5a, 0x00, 0xff}}},\n    {{{  -195,    134,     55}, 0, {   320,    256}, {0x00, 0x5a, 0x00, 0xff}}},\n    {{{  -165,    171,     33}, 0, {   288,    256}, {0x00, 0x5a, 0x00, 0xff}}},\n};\n\n// 0x070037F0 - 0x07003830\nstatic const Vtx intro_seg7_vertex_070037F0[] = {\n    {{{  -165,    171,     33}, 0, {   288,    256}, {0x00, 0xbb, 0x00, 0xff}}},\n    {{{  -257,    180,     27}, 0, {   288,    288}, {0x00, 0xbb, 0x00, 0xff}}},\n    {{{  -190,    150,     28}, 0, {   320,    256}, {0x00, 0xbb, 0x00, 0xff}}},\n    {{{  -290,    156,     24}, 0, {   320,    288}, {0x00, 0xbb, 0x00, 0xff}}},\n};\n\n// 0x07003830 - 0x07003870\nstatic const Vtx intro_seg7_vertex_07003830[] = {\n    {{{  -213,    286,    -51}, 0, {   256,    256}, {0x00, 0x4b, 0x00, 0xff}}},\n    {{{  -290,    156,     24}, 0, {   320,    288}, {0x00, 0x4b, 0x00, 0xff}}},\n    {{{  -202,    276,    -29}, 0, {   256,    256}, {0x00, 0x4b, 0x00, 0xff}}},\n    {{{  -257,    180,     27}, 0, {   288,    288}, {0x00, 0x4b, 0x00, 0xff}}},\n};\n\n// 0x07003870 - 0x070038B0\nstatic const Vtx intro_seg7_vertex_07003870[] = {\n    {{{  -366,     60,     81}, 0, {   320,    320}, {0x00, 0x54, 0x00, 0xff}}},\n    {{{  -341,     60,     99}, 0, {   352,    288}, {0x00, 0x54, 0x00, 0xff}}},\n    {{{  -190,    150,     28}, 0, {   320,    256}, {0x00, 0x54, 0x00, 0xff}}},\n    {{{  -195,    134,     55}, 0, {   320,    256}, {0x00, 0x54, 0x00, 0xff}}},\n};\n\n// 0x070038B0 - 0x07003910\nstatic const Vtx intro_seg7_vertex_070038B0[] = {\n    {{{    82,   -110,    183}, 0, {   416,    192}, {0x00, 0xa6, 0x00, 0xff}}},\n    {{{   144,    218,    -12}, 0, {   288,    160}, {0x00, 0xa6, 0x00, 0xff}}},\n    {{{    64,    -85,    187}, 0, {   384,    192}, {0x00, 0xa6, 0x00, 0xff}}},\n    {{{   144,    218,    -12}, 0, {   288,    160}, {0x00, 0xa6, 0x00, 0xff}}},\n    {{{   116,    212,      8}, 0, {   288,    192}, {0x00, 0xa6, 0x00, 0xff}}},\n    {{{    64,    -85,    187}, 0, {   384,    192}, {0x00, 0xa6, 0x00, 0xff}}},\n};\n\n// 0x07003910 - 0x07003950\nstatic const Vtx intro_seg7_vertex_07003910[] = {\n    {{{    82,   -110,    183}, 0, {   416,    192}, {0x00, 0xa4, 0x00, 0xff}}},\n    {{{    64,    -85,    187}, 0, {   384,    192}, {0x00, 0xa4, 0x00, 0xff}}},\n    {{{  -153,   -107,    181}, 0, {   416,    256}, {0x00, 0xa4, 0x00, 0xff}}},\n    {{{  -128,    -83,    186}, 0, {   384,    256}, {0x00, 0xa4, 0x00, 0xff}}},\n};\n\n// 0x07003950 - 0x07003980\nstatic const Vtx intro_seg7_vertex_07003950[] = {\n    {{{  -133,    -29,    132}, 0, {   384,    256}, {0x00, 0x4b, 0x00, 0xff}}},\n    {{{  -153,   -107,    181}, 0, {   416,    256}, {0x00, 0x4b, 0x00, 0xff}}},\n    {{{  -128,    -83,    186}, 0, {   384,    256}, {0x00, 0x4b, 0x00, 0xff}}},\n};\n\n// 0x07003980 - 0x070039B0\nstatic const Vtx intro_seg7_vertex_07003980[] = {\n    {{{   -47,     92,     60}, 0, {   320,    224}, {0x00, 0x79, 0x00, 0xff}}},\n    {{{   -93,     41,    111}, 0, {   352,    224}, {0x00, 0x79, 0x00, 0xff}}},\n    {{{   -41,     34,    115}, 0, {   352,    224}, {0x00, 0x79, 0x00, 0xff}}},\n};\n\n// 0x070039B0 - 0x070039E0\nstatic const Vtx intro_seg7_vertex_070039B0[] = {\n    {{{   -47,     92,     60}, 0, {   320,    224}, {0x00, 0x5a, 0x00, 0xff}}},\n    {{{   -41,     34,    115}, 0, {   352,    224}, {0x00, 0x5a, 0x00, 0xff}}},\n    {{{   -11,    126,     60}, 0, {   320,    224}, {0x00, 0x5a, 0x00, 0xff}}},\n};\n\n// 0x070039E0 - 0x07003A10\nstatic const Vtx intro_seg7_vertex_070039E0[] = {\n    {{{   -47,     92,     60}, 0, {   320,    224}, {0x00, 0xa9, 0x00, 0xff}}},\n    {{{   -11,    126,     60}, 0, {   320,    224}, {0x00, 0xa9, 0x00, 0xff}}},\n    {{{   -52,    135,     54}, 0, {   320,    224}, {0x00, 0xa9, 0x00, 0xff}}},\n};\n\n// 0x07003A10 - 0x07003A40\nstatic const Vtx intro_seg7_vertex_07003A10[] = {\n    {{{  -133,    -29,    132}, 0, {   384,    256}, {0x00, 0xa6, 0x00, 0xff}}},\n    {{{   -47,     92,     60}, 0, {   320,    224}, {0x00, 0xa6, 0x00, 0xff}}},\n    {{{  -133,     -6,    139}, 0, {   352,    256}, {0x00, 0xa6, 0x00, 0xff}}},\n};\n\n// 0x07003A40 - 0x07003A70\nstatic const Vtx intro_seg7_vertex_07003A40[] = {\n    {{{   -47,     92,     60}, 0, {   320,    224}, {0x00, 0xa6, 0x00, 0xff}}},\n    {{{   -52,    135,     54}, 0, {   320,    224}, {0x00, 0xa6, 0x00, 0xff}}},\n    {{{  -133,     -6,    139}, 0, {   352,    256}, {0x00, 0xa6, 0x00, 0xff}}},\n};\n\n// 0x07003A70 - 0x07003AA0\nstatic const Vtx intro_seg7_vertex_07003A70[] = {\n    {{{   -47,     92,     60}, 0, {   320,    224}, {0x00, 0xa6, 0x00, 0xff}}},\n    {{{  -132,    -31,    133}, 0, {   384,    256}, {0x00, 0xa6, 0x00, 0xff}}},\n    {{{   -93,     41,    111}, 0, {   352,    224}, {0x00, 0xa6, 0x00, 0xff}}},\n};\n\n// 0x07003AA0 - 0x07003AD0\nstatic const Vtx intro_seg7_vertex_07003AA0[] = {\n    {{{  -133,    -29,    132}, 0, {   384,    256}, {0x00, 0x4b, 0x00, 0xff}}},\n    {{{  -128,    -83,    186}, 0, {   384,    256}, {0x00, 0x4b, 0x00, 0xff}}},\n    {{{   -93,     41,    111}, 0, {   352,    224}, {0x00, 0x4b, 0x00, 0xff}}},\n};\n\n// 0x07003AD0 - 0x07003B10\nstatic const Vtx intro_seg7_vertex_07003AD0[] = {\n    {{{  -269,   -128,    192}, 0, {   416,    288}, {0x00, 0xbb, 0x00, 0xff}}},\n    {{{  -133,    -29,    132}, 0, {   384,    256}, {0x00, 0xbb, 0x00, 0xff}}},\n    {{{  -260,    -92,    191}, 0, {   384,    288}, {0x00, 0xbb, 0x00, 0xff}}},\n    {{{  -133,     -6,    139}, 0, {   352,    256}, {0x00, 0xbb, 0x00, 0xff}}},\n};\n\n// 0x07003B10 - 0x07003B50\nstatic const Vtx intro_seg7_vertex_07003B10[] = {\n    {{{  -366,     60,     81}, 0, {   320,    320}, {0x00, 0x5a, 0x00, 0xff}}},\n    {{{  -269,   -128,    192}, 0, {   416,    288}, {0x00, 0x5a, 0x00, 0xff}}},\n    {{{  -341,     60,     99}, 0, {   352,    288}, {0x00, 0x5a, 0x00, 0xff}}},\n    {{{  -260,    -92,    191}, 0, {   384,    288}, {0x00, 0x5a, 0x00, 0xff}}},\n};\n\n// 0x07003B50 - 0x07003C30\nstatic const Vtx intro_seg7_vertex_07003B50[] = {\n    {{{    69,    291,    -38}, 0, {   256,    192}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{   -72,    307,    -47}, 0, {   256,    224}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{    32,    233,     -3}, 0, {   288,    192}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{   -93,    259,    -19}, 0, {   256,    224}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{   -52,    135,     54}, 0, {   320,    224}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{   -11,    126,     60}, 0, {   320,    224}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{   116,    212,      8}, 0, {   288,    192}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{  -257,    180,     27}, 0, {   288,    288}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{  -165,    171,     33}, 0, {   288,    256}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{  -202,    276,    -29}, 0, {   256,    256}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{  -195,    134,     55}, 0, {   320,    256}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{  -260,    -92,    191}, 0, {   384,    288}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{  -133,     -6,    139}, 0, {   352,    256}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{  -341,     60,     99}, 0, {   352,    288}, {0x00, 0xf1, 0x00, 0xff}}},\n};\n\n// 0x07003C30 - 0x07003CD0\nstatic const Vtx intro_seg7_vertex_07003C30[] = {\n    {{{  -341,     60,     99}, 0, {   352,    288}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{  -133,     -6,    139}, 0, {   352,    256}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{  -195,    134,     55}, 0, {   320,    256}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{   -52,    135,     54}, 0, {   320,    224}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{   -41,     34,    115}, 0, {   352,    224}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{   116,    212,      8}, 0, {   288,    192}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{   -11,    126,     60}, 0, {   320,    224}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{  -128,    -83,    186}, 0, {   384,    256}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{    64,    -85,    187}, 0, {   384,    192}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{   -93,     41,    111}, 0, {   352,    224}, {0x00, 0xf1, 0x00, 0xff}}},\n};\n\n// 0x07003CD0 - 0x07003D10\nstatic const Vtx intro_seg7_vertex_07003CD0[] = {\n    {{{  -743,    372,    -86}, 0, {   224,    384}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{  -366,    340,    -67}, 0, {   224,    288}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{  -762,    384,   -108}, 0, {   192,    384}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{  -340,    348,    -86}, 0, {   224,    288}, {0x16, 0x27, 0x9e, 0xff}}},\n};\n\n// 0x07003D10 - 0x07003D50\nstatic const Vtx intro_seg7_vertex_07003D10[] = {\n    {{{  -340,    348,    -86}, 0, {   224,    288}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -366,    340,    -67}, 0, {   224,    288}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -392,    177,     14}, 0, {   288,    288}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -416,    170,     33}, 0, {   288,    320}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07003D50 - 0x07003D90\nstatic const Vtx intro_seg7_vertex_07003D50[] = {\n    {{{  -416,    170,     33}, 0, {   288,    320}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{  -352,    159,     40}, 0, {   288,    288}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{  -392,    177,     14}, 0, {   288,    288}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{  -330,    165,     21}, 0, {   288,    288}, {0x16, 0x27, 0x9e, 0xff}}},\n};\n\n// 0x07003D90 - 0x07003DD0\nstatic const Vtx intro_seg7_vertex_07003D90[] = {\n    {{{  -388,   -113,    185}, 0, {   416,    320}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -330,    165,     21}, 0, {   288,    288}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -405,    -91,    190}, 0, {   384,    320}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -352,    159,     40}, 0, {   288,    288}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07003DD0 - 0x07003E10\nstatic const Vtx intro_seg7_vertex_07003DD0[] = {\n    {{{  -594,   -160,    213}, 0, {   416,    384}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -388,   -113,    185}, 0, {   416,    320}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -583,   -130,    213}, 0, {   416,    352}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -405,    -91,    190}, 0, {   384,    320}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07003E10 - 0x07003E40\nstatic const Vtx intro_seg7_vertex_07003E10[] = {\n    {{{  -748,     54,     94}, 0, {   320,    384}, {0x13, 0x50, 0x8c, 0xff}}},\n    {{{  -735,     79,     88}, 0, {   320,    384}, {0x13, 0x50, 0x8c, 0xff}}},\n    {{{  -762,     61,     82}, 0, {   320,    416}, {0x13, 0x50, 0x8c, 0xff}}},\n};\n\n// 0x07003E40 - 0x07003E80\nstatic const Vtx intro_seg7_vertex_07003E40[] = {\n    {{{  -514,    102,     74}, 0, {   320,    352}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -735,     79,     88}, 0, {   320,    384}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -544,     74,     81}, 0, {   320,    352}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -748,     54,     94}, 0, {   320,    384}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07003E80 - 0x07003EB0\nstatic const Vtx intro_seg7_vertex_07003E80[] = {\n    {{{  -514,    102,     74}, 0, {   320,    352}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{  -544,     74,     81}, 0, {   320,    352}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{  -510,      5,    132}, 0, {   352,    352}, {0x12, 0x20, 0x81, 0xff}}},\n};\n\n// 0x07003EB0 - 0x07003EE0\nstatic const Vtx intro_seg7_vertex_07003EB0[] = {\n    {{{  -551,      5,    115}, 0, {   352,    352}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{  -510,      5,    132}, 0, {   352,    352}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{  -544,     74,     81}, 0, {   320,    352}, {0x12, 0x20, 0x81, 0xff}}},\n};\n\n// 0x07003EE0 - 0x07003F10\nstatic const Vtx intro_seg7_vertex_07003EE0[] = {\n    {{{  -510,      5,    132}, 0, {   352,    352}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{  -551,      5,    115}, 0, {   352,    352}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{  -574,     -5,    139}, 0, {   352,    352}, {0x12, 0x20, 0x81, 0xff}}},\n};\n\n// 0x07003F10 - 0x07003F40\nstatic const Vtx intro_seg7_vertex_07003F10[] = {\n    {{{  -574,     -5,    139}, 0, {   352,    352}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -551,      5,    115}, 0, {   352,    352}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -575,     61,     98}, 0, {   320,    352}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07003F40 - 0x07003F70\nstatic const Vtx intro_seg7_vertex_07003F40[] = {\n    {{{  -575,     61,     98}, 0, {   320,    352}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -551,      5,    115}, 0, {   352,    352}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -544,     74,     81}, 0, {   320,    352}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07003F70 - 0x07003FC0\nstatic const Vtx intro_seg7_vertex_07003F70[] = {\n    {{{  -868,   -118,    188}, 0, {   416,    448}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -664,    -64,    156}, 0, {   384,    384}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -850,    -86,    187}, 0, {   384,    416}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -574,     -5,    139}, 0, {   352,    352}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -663,    -45,    157}, 0, {   384,    384}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07003FC0 - 0x07004010\nstatic const Vtx intro_seg7_vertex_07003FC0[] = {\n    {{{  -583,   -130,    213}, 0, {   416,    352}, {0x13, 0x50, 0x8c, 0xff}}},\n    {{{  -637,    -46,    163}, 0, {   384,    384}, {0x13, 0x50, 0x8c, 0xff}}},\n    {{{  -663,    -45,    157}, 0, {   384,    384}, {0x13, 0x50, 0x8c, 0xff}}},\n    {{{  -594,   -160,    213}, 0, {   416,    384}, {0x13, 0x50, 0x8c, 0xff}}},\n    {{{  -664,    -64,    156}, 0, {   384,    384}, {0x13, 0x50, 0x8c, 0xff}}},\n};\n\n// 0x07004010 - 0x07004050\nstatic const Vtx intro_seg7_vertex_07004010[] = {\n    {{{  -637,    -46,    163}, 0, {   384,    384}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{  -510,      5,    132}, 0, {   352,    352}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{  -574,     -5,    139}, 0, {   352,    352}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{  -663,    -45,    157}, 0, {   384,    384}, {0x12, 0x20, 0x81, 0xff}}},\n};\n\n// 0x07004050 - 0x07004090\nstatic const Vtx intro_seg7_vertex_07004050[] = {\n    {{{  -864,     48,     90}, 0, {   320,    416}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{  -844,     36,    114}, 0, {   352,    416}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{  -762,     61,     82}, 0, {   320,    416}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{  -748,     54,     94}, 0, {   320,    384}, {0x16, 0x27, 0x9e, 0xff}}},\n};\n\n// 0x07004090 - 0x070040D0\nstatic const Vtx intro_seg7_vertex_07004090[] = {\n    {{{  -844,     36,    114}, 0, {   352,    416}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{  -575,     61,     98}, 0, {   320,    352}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{  -748,     54,     94}, 0, {   320,    384}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{  -544,     74,     81}, 0, {   320,    352}, {0x16, 0x27, 0x9e, 0xff}}},\n};\n\n// 0x070040D0 - 0x07004110\nstatic const Vtx intro_seg7_vertex_070040D0[] = {\n    {{{  -733,    215,     -8}, 0, {   288,    384}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{  -716,    209,     10}, 0, {   288,    384}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{  -623,    210,     -5}, 0, {   288,    352}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{  -642,    211,      9}, 0, {   288,    352}, {0x16, 0x27, 0x9e, 0xff}}},\n};\n\n// 0x07004110 - 0x07004150\nstatic const Vtx intro_seg7_vertex_07004110[] = {\n    {{{  -619,    175,     31}, 0, {   288,    352}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -613,    195,      3}, 0, {   288,    352}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -642,    211,      9}, 0, {   288,    352}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -623,    210,     -5}, 0, {   288,    352}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07004150 - 0x07004190\nstatic const Vtx intro_seg7_vertex_07004150[] = {\n    {{{  -619,    175,     31}, 0, {   288,    352}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{  -521,    175,     31}, 0, {   288,    352}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{  -613,    195,      3}, 0, {   288,    352}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{  -557,    199,      1}, 0, {   288,    352}, {0x16, 0x27, 0x9e, 0xff}}},\n};\n\n// 0x07004190 - 0x070041C0\nstatic const Vtx intro_seg7_vertex_07004190[] = {\n    {{{  -557,    199,      1}, 0, {   288,    352}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{  -521,    175,     31}, 0, {   288,    352}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{  -505,    240,     -8}, 0, {   256,    320}, {0x12, 0x20, 0x81, 0xff}}},\n};\n\n// 0x070041C0 - 0x070041F0\nstatic const Vtx intro_seg7_vertex_070041C0[] = {\n    {{{  -623,    210,     -5}, 0, {   288,    352}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{  -613,    195,      3}, 0, {   288,    352}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{  -557,    199,      1}, 0, {   288,    352}, {0x16, 0x27, 0x9e, 0xff}}},\n};\n\n// 0x070041F0 - 0x07004250\nstatic const Vtx intro_seg7_vertex_070041F0[] = {\n    {{{  -772,    213,     -9}, 0, {   288,    416}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -733,    215,     -8}, 0, {   288,    384}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -745,    243,     -9}, 0, {   256,    384}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -623,    210,     -5}, 0, {   288,    352}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -505,    240,     -8}, 0, {   256,    320}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -557,    199,      1}, 0, {   288,    352}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07004250 - 0x07004290\nstatic const Vtx intro_seg7_vertex_07004250[] = {\n    {{{  -762,    384,   -108}, 0, {   192,    384}, {0x10, 0x1c, 0x73, 0xff}}},\n    {{{  -772,    213,     -9}, 0, {   288,    416}, {0x10, 0x1c, 0x73, 0xff}}},\n    {{{  -743,    372,    -86}, 0, {   224,    384}, {0x10, 0x1c, 0x73, 0xff}}},\n    {{{  -745,    243,     -9}, 0, {   256,    384}, {0x10, 0x1c, 0x73, 0xff}}},\n};\n\n// 0x07004290 - 0x070042D0\nstatic const Vtx intro_seg7_vertex_07004290[] = {\n    {{{  -733,    215,     -8}, 0, {   288,    384}, {0x10, 0x73, 0x73, 0xff}}},\n    {{{  -762,     61,     82}, 0, {   320,    416}, {0x10, 0x73, 0x73, 0xff}}},\n    {{{  -716,    209,     10}, 0, {   288,    384}, {0x10, 0x73, 0x73, 0xff}}},\n    {{{  -735,     79,     88}, 0, {   320,    384}, {0x10, 0x73, 0x73, 0xff}}},\n};\n\n// 0x070042D0 - 0x07004310\nstatic const Vtx intro_seg7_vertex_070042D0[] = {\n    {{{  -868,   -118,    188}, 0, {   416,    448}, {0x10, 0x73, 0x73, 0xff}}},\n    {{{  -850,    -86,    187}, 0, {   384,    416}, {0x10, 0x73, 0x73, 0xff}}},\n    {{{  -864,     48,     90}, 0, {   320,    416}, {0x10, 0x73, 0x73, 0xff}}},\n    {{{  -844,     36,    114}, 0, {   352,    416}, {0x10, 0x73, 0x73, 0xff}}},\n};\n\n// 0x07004310 - 0x070043F0\nstatic const Vtx intro_seg7_vertex_07004310[] = {\n    {{{  -735,     79,     88}, 0, {   320,    384}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -514,    102,     74}, 0, {   320,    352}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -716,    209,     10}, 0, {   288,    384}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -510,      5,    132}, 0, {   352,    352}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -352,    159,     40}, 0, {   288,    288}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -416,    170,     33}, 0, {   288,    320}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -521,    175,     31}, 0, {   288,    352}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -619,    175,     31}, 0, {   288,    352}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -642,    211,      9}, 0, {   288,    352}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -637,    -46,    163}, 0, {   384,    384}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -583,   -130,    213}, 0, {   416,    352}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -405,    -91,    190}, 0, {   384,    320}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -366,    340,    -67}, 0, {   224,    288}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -505,    240,     -8}, 0, {   256,    320}, {0x65, 0x7f, 0xff, 0xff}}},\n};\n\n// 0x070043F0 - 0x07004430\nstatic const Vtx intro_seg7_vertex_070043F0[] = {\n    {{{  -743,    372,    -86}, 0, {   224,    384}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -745,    243,     -9}, 0, {   256,    384}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -366,    340,    -67}, 0, {   224,    288}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -505,    240,     -8}, 0, {   256,    320}, {0x65, 0x7f, 0xff, 0xff}}},\n};\n\n// 0x07004430 - 0x07004470\nstatic const Vtx intro_seg7_vertex_07004430[] = {\n    {{{  -850,    -86,    187}, 0, {   384,    416}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -574,     -5,    139}, 0, {   352,    352}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -844,     36,    114}, 0, {   352,    416}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -575,     61,     98}, 0, {   320,    352}, {0x65, 0x7f, 0xff, 0xff}}},\n};\n\n// 0x07004470 - 0x070044B0\nstatic const Vtx intro_seg7_vertex_07004470[] = {\n    {{{   589,    669,   -648}, 0, { -1408,   -640}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   589,    815,   -404}, 0, { -1408,   -640}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   593,    630,   -624}, 0, { -1344,   -608}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   593,    775,   -380}, 0, { -1344,   -608}, {0xc0, 0xc0, 0xc0, 0xff}}},\n};\n\n// 0x070044B0 - 0x070044F0\nstatic const Vtx intro_seg7_vertex_070044B0[] = {\n    {{{   425,    820,   -407}, 0, { -1536,   -416}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   589,    815,   -404}, 0, { -1408,   -640}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   425,    674,   -651}, 0, { -1536,   -416}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   589,    669,   -648}, 0, { -1408,   -640}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x070044F0 - 0x07004530\nstatic const Vtx intro_seg7_vertex_070044F0[] = {\n    {{{   681,    636,   -628}, 0, { -1280,   -768}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   681,    781,   -384}, 0, { -1280,   -768}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   669,    486,   -538}, 0, { -1024,   -608}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   669,    631,   -295}, 0, { -1024,   -608}, {0xc0, 0xc0, 0xc0, 0xff}}},\n};\n\n// 0x07004530 - 0x07004570\nstatic const Vtx intro_seg7_vertex_07004530[] = {\n    {{{   593,    630,   -624}, 0, { -1344,   -608}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   593,    775,   -380}, 0, { -1344,   -608}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   681,    636,   -628}, 0, { -1280,   -768}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   681,    781,   -384}, 0, { -1280,   -768}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07004570 - 0x070045B0\nstatic const Vtx intro_seg7_vertex_07004570[] = {\n    {{{   669,    631,   -295}, 0, { -1024,   -608}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   661,    633,   -296}, 0, { -1024,   -608}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   669,    486,   -538}, 0, { -1024,   -608}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   660,    488,   -540}, 0, { -1024,   -608}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x070045B0 - 0x070045F0\nstatic const Vtx intro_seg7_vertex_070045B0[] = {\n    {{{   676,    438,   -510}, 0, {  -928,   -576}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   676,    583,   -267}, 0, {  -928,   -576}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   682,    308,   -432}, 0, {  -704,   -480}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   682,    453,   -190}, 0, {  -704,   -480}, {0xc0, 0xc0, 0xc0, 0xff}}},\n};\n\n// 0x070045F0 - 0x07004630\nstatic const Vtx intro_seg7_vertex_070045F0[] = {\n    {{{   671,    450,   -517}, 0, {  -960,   -576}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   671,    595,   -274}, 0, {  -960,   -576}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   661,    438,   -510}, 0, {  -960,   -544}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   661,    583,   -267}, 0, {  -960,   -544}, {0xc0, 0xc0, 0xc0, 0xff}}},\n};\n\n// 0x07004630 - 0x07004670\nstatic const Vtx intro_seg7_vertex_07004630[] = {\n    {{{   661,    583,   -267}, 0, {  -960,   -544}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   676,    583,   -267}, 0, {  -928,   -576}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   661,    438,   -510}, 0, {  -960,   -544}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   676,    438,   -510}, 0, {  -928,   -576}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07004670 - 0x070046B0\nstatic const Vtx intro_seg7_vertex_07004670[] = {\n    {{{   660,    488,   -540}, 0, { -1024,   -608}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   661,    633,   -296}, 0, { -1024,   -608}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   671,    450,   -517}, 0, {  -960,   -576}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   671,    595,   -274}, 0, {  -960,   -576}, {0xc0, 0xc0, 0xc0, 0xff}}},\n};\n\n// 0x070046B0 - 0x070046F0\nstatic const Vtx intro_seg7_vertex_070046B0[] = {\n    {{{   655,    304,   -429}, 0, {  -736,   -416}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   655,    448,   -187}, 0, {  -736,   -416}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   672,    208,   -372}, 0, {  -544,   -352}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   672,    352,   -130}, 0, {  -544,   -352}, {0xc0, 0xc0, 0xc0, 0xff}}},\n};\n\n// 0x070046F0 - 0x07004730\nstatic const Vtx intro_seg7_vertex_070046F0[] = {\n    {{{   682,    308,   -432}, 0, {  -704,   -480}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{   682,    453,   -190}, 0, {  -704,   -480}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{   655,    304,   -429}, 0, {  -736,   -416}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{   655,    448,   -187}, 0, {  -736,   -416}, {0x95, 0x95, 0x95, 0xff}}},\n};\n\n// 0x07004730 - 0x07004770\nstatic const Vtx intro_seg7_vertex_07004730[] = {\n    {{{   672,    208,   -372}, 0, {  -544,   -352}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{   672,    352,   -130}, 0, {  -544,   -352}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{   469,    206,   -371}, 0, {  -704,    -64}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{   469,    350,   -129}, 0, {  -704,    -64}, {0x95, 0x95, 0x95, 0xff}}},\n};\n\n// 0x07004770 - 0x070047B0\nstatic const Vtx intro_seg7_vertex_07004770[] = {\n    {{{   469,    206,   -371}, 0, {  -704,    -64}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{   469,    350,   -129}, 0, {  -704,    -64}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{   357,    206,   -371}, 0, {  -800,     64}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{   356,    350,   -129}, 0, {  -800,     64}, {0x95, 0x95, 0x95, 0xff}}},\n};\n\n// 0x070047B0 - 0x070047F0\nstatic const Vtx intro_seg7_vertex_070047B0[] = {\n    {{{   357,    206,   -371}, 0, {  -800,     64}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   356,    350,   -129}, 0, {  -800,     64}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   353,    189,   -361}, 0, {  -768,     96}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   353,    333,   -119}, 0, {  -768,     96}, {0xc0, 0xc0, 0xc0, 0xff}}},\n};\n\n// 0x070047F0 - 0x07004830\nstatic const Vtx intro_seg7_vertex_070047F0[] = {\n    {{{   246,    468,   -528}, 0, { -1312,      0}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{   222,    615,   -286}, 0, { -1344,     32}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{   222,    471,   -529}, 0, { -1344,     32}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{   246,    613,   -285}, 0, { -1344,      0}, {0x95, 0x95, 0x95, 0xff}}},\n};\n\n// 0x07004830 - 0x07004870\nstatic const Vtx intro_seg7_vertex_07004830[] = {\n    {{{   222,    471,   -529}, 0, { -1344,     32}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   222,    615,   -286}, 0, { -1344,     32}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   228,    597,   -604}, 0, { -1568,    -64}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   228,    742,   -361}, 0, { -1568,    -64}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07004870 - 0x070048B0\nstatic const Vtx intro_seg7_vertex_07004870[] = {\n    {{{   353,    333,   -119}, 0, {  -768,     96}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   114,    399,   -158}, 0, { -1056,    384}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   353,    189,   -361}, 0, {  -768,     96}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   114,    255,   -400}, 0, { -1056,    384}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x070048B0 - 0x070048F0\nstatic const Vtx intro_seg7_vertex_070048B0[] = {\n    {{{   114,    399,   -158}, 0, { -1056,    384}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   240,    583,   -267}, 0, { -1280,     32}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   114,    255,   -400}, 0, { -1056,    384}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   240,    439,   -510}, 0, { -1280,     32}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x070048F0 - 0x07004930\nstatic const Vtx intro_seg7_vertex_070048F0[] = {\n    {{{   240,    439,   -510}, 0, { -1280,     32}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   240,    583,   -267}, 0, { -1280,     32}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   246,    468,   -528}, 0, { -1312,      0}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   246,    613,   -285}, 0, { -1344,      0}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07004930 - 0x07004970\nstatic const Vtx intro_seg7_vertex_07004930[] = {\n    {{{   228,    597,   -604}, 0, { -1568,    -64}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   228,    742,   -361}, 0, { -1568,    -64}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   265,    600,   -606}, 0, { -1536,    -96}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   265,    745,   -363}, 0, { -1536,    -96}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07004970 - 0x070049B0\nstatic const Vtx intro_seg7_vertex_07004970[] = {\n    {{{   265,    745,   -363}, 0, { -1536,    -96}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   246,    778,   -382}, 0, { -1600,    -96}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   265,    600,   -606}, 0, { -1536,    -96}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   246,    633,   -626}, 0, { -1600,    -96}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x070049B0 - 0x070049F0\nstatic const Vtx intro_seg7_vertex_070049B0[] = {\n    {{{   246,    633,   -626}, 0, { -1600,    -96}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   246,    778,   -382}, 0, { -1600,    -96}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   425,    674,   -651}, 0, { -1536,   -416}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   425,    820,   -407}, 0, { -1536,   -416}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x070049F0 - 0x07004A30\nstatic const Vtx intro_seg7_vertex_070049F0[] = {\n    {{{   178,    718,   -677}, 0, { -1792,    -96}, {0x60, 0x60, 0x60, 0xff}}},\n    {{{   178,    864,   -433}, 0, { -1792,    -96}, {0x60, 0x60, 0x60, 0xff}}},\n    {{{   308,    621,   -619}, 0, { -1536,   -192}, {0x60, 0x60, 0x60, 0xff}}},\n    {{{   308,    766,   -375}, 0, { -1536,   -192}, {0x60, 0x60, 0x60, 0xff}}},\n};\n\n// 0x07004A30 - 0x07004A70\nstatic const Vtx intro_seg7_vertex_07004A30[] = {\n    {{{   220,    521,   -559}, 0, { -1440,      0}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   220,    666,   -316}, 0, { -1440,      0}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{    61,    582,   -596}, 0, { -1664,    192}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{    61,    727,   -352}, 0, { -1664,    192}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07004A70 - 0x07004AB0\nstatic const Vtx intro_seg7_vertex_07004A70[] = {\n    {{{   308,    766,   -375}, 0, { -1536,   -192}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{   220,    666,   -316}, 0, { -1440,      0}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{   308,    621,   -619}, 0, { -1536,   -192}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{   220,    521,   -559}, 0, { -1440,      0}, {0xd1, 0xd1, 0xd1, 0xff}}},\n};\n\n// 0x07004AB0 - 0x07004AF0\nstatic const Vtx intro_seg7_vertex_07004AB0[] = {\n    {{{    61,    582,   -596}, 0, { -1664,    192}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{    61,    727,   -352}, 0, { -1664,    192}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   178,    718,   -677}, 0, { -1792,    -96}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   178,    864,   -433}, 0, { -1792,    -96}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07004AF0 - 0x07004B30\nstatic const Vtx intro_seg7_vertex_07004AF0[] = {\n    {{{   132,    613,   -614}, 0, { -1664,     32}, {0x60, 0x60, 0x60, 0xff}}},\n    {{{   132,    758,   -370}, 0, { -1664,     32}, {0x60, 0x60, 0x60, 0xff}}},\n    {{{   266,    491,   -541}, 0, { -1344,      0}, {0x60, 0x60, 0x60, 0xff}}},\n    {{{   266,    636,   -298}, 0, { -1344,      0}, {0x60, 0x60, 0x60, 0xff}}},\n};\n\n// 0x07004B30 - 0x07004B70\nstatic const Vtx intro_seg7_vertex_07004B30[] = {\n    {{{   171,    386,   -479}, 0, { -1248,    192}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   171,    531,   -236}, 0, { -1248,    192}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{    32,    463,   -524}, 0, { -1472,    320}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{    32,    607,   -281}, 0, { -1472,    320}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07004B70 - 0x07004BB0\nstatic const Vtx intro_seg7_vertex_07004B70[] = {\n    {{{   266,    636,   -298}, 0, { -1344,      0}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{   171,    531,   -236}, 0, { -1248,    192}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{   266,    491,   -541}, 0, { -1344,      0}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{   171,    386,   -479}, 0, { -1248,    192}, {0xd1, 0xd1, 0xd1, 0xff}}},\n};\n\n// 0x07004BB0 - 0x07004BF0\nstatic const Vtx intro_seg7_vertex_07004BB0[] = {\n    {{{    32,    463,   -524}, 0, { -1472,    320}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{    32,    607,   -281}, 0, { -1472,    320}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   132,    613,   -614}, 0, { -1664,     32}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   132,    758,   -370}, 0, { -1664,     32}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07004BF0 - 0x07004C30\nstatic const Vtx intro_seg7_vertex_07004BF0[] = {\n    {{{    83,    451,   -517}, 0, { -1440,    256}, {0x60, 0x60, 0x60, 0xff}}},\n    {{{    83,    596,   -274}, 0, { -1440,    256}, {0x60, 0x60, 0x60, 0xff}}},\n    {{{   256,    401,   -487}, 0, { -1216,     64}, {0x60, 0x60, 0x60, 0xff}}},\n    {{{   256,    545,   -245}, 0, { -1216,     64}, {0x60, 0x60, 0x60, 0xff}}},\n};\n\n// 0x07004C30 - 0x07004C70\nstatic const Vtx intro_seg7_vertex_07004C30[] = {\n    {{{   134,    192,   -362}, 0, {  -960,    416}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   134,    336,   -121}, 0, {  -960,    416}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   -55,    321,   -439}, 0, { -1312,    576}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   -55,    465,   -197}, 0, { -1312,    576}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07004C70 - 0x07004CB0\nstatic const Vtx intro_seg7_vertex_07004C70[] = {\n    {{{   256,    545,   -245}, 0, { -1216,     64}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{   134,    336,   -121}, 0, {  -960,    416}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{   256,    401,   -487}, 0, { -1216,     64}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{   134,    192,   -362}, 0, {  -960,    416}, {0xd1, 0xd1, 0xd1, 0xff}}},\n};\n\n// 0x07004CB0 - 0x07004CF0\nstatic const Vtx intro_seg7_vertex_07004CB0[] = {\n    {{{   -55,    321,   -439}, 0, { -1312,    576}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   -55,    465,   -197}, 0, { -1312,    576}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{    83,    451,   -517}, 0, { -1440,    256}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{    83,    596,   -274}, 0, { -1440,    256}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07004CF0 - 0x07004D30\nstatic const Vtx intro_seg7_vertex_07004CF0[] = {\n    {{{  -362,    706,   -670}, 0, { -2208,    704}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{  -354,    779,   -382}, 0, { -2080,    736}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{  -355,    633,   -626}, 0, { -2080,    736}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{  -361,    851,   -425}, 0, { -2208,    704}, {0xc0, 0xc0, 0xc0, 0xff}}},\n};\n\n// 0x07004D30 - 0x07004D70\nstatic const Vtx intro_seg7_vertex_07004D30[] = {\n    {{{  -296,    215,   -376}, 0, { -1312,   1024}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -292,    464,   -197}, 0, { -1504,    928}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -293,    320,   -439}, 0, { -1504,    928}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -295,    359,   -134}, 0, { -1312,   1024}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07004D70 - 0x07004DB0\nstatic const Vtx intro_seg7_vertex_07004D70[] = {\n    {{{  -279,    640,   -631}, 0, { -2016,    640}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -279,    785,   -386}, 0, { -2016,    640}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -271,    695,   -663}, 0, { -2112,    576}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -270,    840,   -419}, 0, { -2112,    576}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07004DB0 - 0x07004E10\nstatic const Vtx intro_seg7_vertex_07004DB0[] = {\n    {{{  -326,    636,   -628}, 0, { -2048,    704}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -355,    633,   -626}, 0, { -2080,    736}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -336,    780,   -383}, 0, { -2080,    704}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -279,    785,   -386}, 0, { -2016,    640}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -279,    640,   -631}, 0, { -2016,    640}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -354,    779,   -382}, 0, { -2080,    736}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07004E10 - 0x07004E50\nstatic const Vtx intro_seg7_vertex_07004E10[] = {\n    {{{     2,    630,   -624}, 0, { -1792,    224}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{     3,    775,   -380}, 0, { -1792,    224}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{    12,    317,   -437}, 0, { -1248,    480}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{    13,    461,   -195}, 0, { -1248,    480}, {0xc0, 0xc0, 0xc0, 0xff}}},\n};\n\n// 0x07004E50 - 0x07004E90\nstatic const Vtx intro_seg7_vertex_07004E50[] = {\n    {{{   -97,    694,   -662}, 0, { -1984,    320}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   -97,    839,   -418}, 0, { -1984,    320}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{  -100,    633,   -626}, 0, { -1888,    384}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   -99,    778,   -382}, 0, { -1888,    384}, {0xc0, 0xc0, 0xc0, 0xff}}},\n};\n\n// 0x07004E90 - 0x07004ED0\nstatic const Vtx intro_seg7_vertex_07004E90[] = {\n    {{{  -271,    695,   -663}, 0, { -2112,    576}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -270,    840,   -419}, 0, { -2112,    576}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   -97,    694,   -662}, 0, { -1984,    320}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   -97,    839,   -418}, 0, { -1984,    320}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07004ED0 - 0x07004F10\nstatic const Vtx intro_seg7_vertex_07004ED0[] = {\n    {{{  -100,    633,   -626}, 0, { -1888,    384}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   -99,    778,   -382}, 0, { -1888,    384}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{     2,    630,   -624}, 0, { -1792,    224}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{     3,    775,   -380}, 0, { -1792,    224}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07004F10 - 0x07004F50\nstatic const Vtx intro_seg7_vertex_07004F10[] = {\n    {{{   -83,    314,   -436}, 0, { -1312,    640}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   -82,    459,   -193}, 0, { -1312,    640}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   -84,    210,   -373}, 0, { -1152,    736}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   -83,    354,   -131}, 0, { -1152,    736}, {0xc0, 0xc0, 0xc0, 0xff}}},\n};\n\n// 0x07004F50 - 0x07004F90\nstatic const Vtx intro_seg7_vertex_07004F50[] = {\n    {{{    13,    461,   -195}, 0, { -1248,    480}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{   -82,    459,   -193}, 0, { -1312,    640}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{    12,    317,   -437}, 0, { -1248,    480}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{   -83,    314,   -436}, 0, { -1312,    640}, {0x95, 0x95, 0x95, 0xff}}},\n};\n\n// 0x07004F90 - 0x07004FD0\nstatic const Vtx intro_seg7_vertex_07004F90[] = {\n    {{{   -83,    354,   -131}, 0, { -1152,    736}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{  -295,    359,   -134}, 0, { -1312,   1024}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{   -84,    210,   -373}, 0, { -1152,    736}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{  -296,    215,   -376}, 0, { -1312,   1024}, {0x95, 0x95, 0x95, 0xff}}},\n};\n\n// 0x07004FD0 - 0x07005010\nstatic const Vtx intro_seg7_vertex_07004FD0[] = {\n    {{{  -576,    324,   -441}, 0, { -1728,   1344}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{  -580,    466,   -197}, 0, { -1728,   1376}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{  -581,    321,   -440}, 0, { -1728,   1376}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{  -576,    468,   -199}, 0, { -1728,   1344}, {0x95, 0x95, 0x95, 0xff}}},\n};\n\n// 0x07005010 - 0x07005050\nstatic const Vtx intro_seg7_vertex_07005010[] = {\n    {{{  -593,    222,   -380}, 0, { -1568,   1472}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -592,    366,   -139}, 0, { -1568,   1472}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -576,    324,   -441}, 0, { -1728,   1344}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -576,    468,   -199}, 0, { -1728,   1344}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07005050 - 0x07005090\nstatic const Vtx intro_seg7_vertex_07005050[] = {\n    {{{  -292,    464,   -197}, 0, { -1504,    928}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{  -361,    478,   -205}, 0, { -1568,   1024}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{  -293,    320,   -439}, 0, { -1504,    928}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{  -364,    334,   -447}, 0, { -1568,   1024}, {0x95, 0x95, 0x95, 0xff}}},\n};\n\n// 0x07005090 - 0x070050D0\nstatic const Vtx intro_seg7_vertex_07005090[] = {\n    {{{  -357,    362,   -136}, 0, { -1376,   1120}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{  -592,    366,   -139}, 0, { -1568,   1472}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{  -357,    218,   -378}, 0, { -1376,   1120}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{  -593,    222,   -380}, 0, { -1568,   1472}, {0x95, 0x95, 0x95, 0xff}}},\n};\n\n// 0x070050D0 - 0x07005110\nstatic const Vtx intro_seg7_vertex_070050D0[] = {\n    {{{  -361,    478,   -205}, 0, { -1568,   1024}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{  -357,    362,   -136}, 0, { -1376,   1120}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{  -364,    334,   -447}, 0, { -1568,   1024}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{  -357,    218,   -378}, 0, { -1376,   1120}, {0xc0, 0xc0, 0xc0, 0xff}}},\n};\n\n// 0x07005110 - 0x07005150\nstatic const Vtx intro_seg7_vertex_07005110[] = {\n    {{{  -612,    506,   -551}, 0, { -2048,   1248}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -612,    651,   -307}, 0, { -2048,   1248}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -575,    643,   -632}, 0, { -2272,   1056}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -574,    788,   -388}, 0, { -2272,   1056}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07005150 - 0x07005190\nstatic const Vtx intro_seg7_vertex_07005150[] = {\n    {{{  -642,    487,   -539}, 0, { -2048,   1312}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -641,    632,   -296}, 0, { -2048,   1312}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -604,    504,   -549}, 0, { -2048,   1248}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -603,    649,   -306}, 0, { -2048,   1216}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07005190 - 0x070051D0\nstatic const Vtx intro_seg7_vertex_07005190[] = {\n    {{{  -580,    466,   -197}, 0, { -1728,   1376}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -641,    632,   -296}, 0, { -2048,   1312}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -581,    321,   -440}, 0, { -1728,   1376}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -642,    487,   -539}, 0, { -2048,   1312}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x070051D0 - 0x07005210\nstatic const Vtx intro_seg7_vertex_070051D0[] = {\n    {{{  -603,    649,   -306}, 0, { -2048,   1216}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{  -612,    651,   -307}, 0, { -2048,   1248}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{  -604,    504,   -549}, 0, { -2048,   1248}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{  -612,    506,   -551}, 0, { -2048,   1248}, {0x95, 0x95, 0x95, 0xff}}},\n};\n\n// 0x07005210 - 0x07005250\nstatic const Vtx intro_seg7_vertex_07005210[] = {\n    {{{  -542,    641,   -631}, 0, { -2240,   1024}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -547,    803,   -397}, 0, { -2272,   1024}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -548,    658,   -641}, 0, { -2272,   1024}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -541,    786,   -387}, 0, { -2240,   1024}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07005250 - 0x07005290\nstatic const Vtx intro_seg7_vertex_07005250[] = {\n    {{{  -575,    643,   -632}, 0, { -2272,   1056}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -574,    788,   -388}, 0, { -2272,   1056}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -542,    641,   -631}, 0, { -2240,   1024}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -541,    786,   -387}, 0, { -2240,   1024}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07005290 - 0x070052D0\nstatic const Vtx intro_seg7_vertex_07005290[] = {\n    {{{  -547,    803,   -397}, 0, { -2272,   1024}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -361,    851,   -425}, 0, { -2208,    704}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -548,    658,   -641}, 0, { -2272,   1024}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -362,    706,   -670}, 0, { -2208,    704}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x070052D0 - 0x07005310\nstatic const Vtx intro_seg7_vertex_070052D0[] = {\n    {{{   593,    100,   -307}, 0, {  -448,   -160}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   593,    243,    -67}, 0, {  -448,   -160}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   644,    179,   -355}, 0, {  -512,   -288}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   644,    322,   -115}, 0, {  -544,   -288}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07005310 - 0x07005350\nstatic const Vtx intro_seg7_vertex_07005310[] = {\n    {{{   904,    -92,   -192}, 0, {    96,   -448}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{   812,     77,     31}, 0, {     0,   -320}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{   811,    -65,   -208}, 0, {     0,   -320}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{   904,     50,     47}, 0, {    96,   -448}, {0x95, 0x95, 0x95, 0xff}}},\n};\n\n// 0x07005350 - 0x07005390\nstatic const Vtx intro_seg7_vertex_07005350[] = {\n    {{{   833,    176,   -353}, 0, {  -384,   -576}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   833,    319,   -113}, 0, {  -384,   -576}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   817,    128,   -324}, 0, {  -320,   -512}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   817,    271,    -84}, 0, {  -320,   -512}, {0xc0, 0xc0, 0xc0, 0xff}}},\n};\n\n// 0x07005390 - 0x070053D0\nstatic const Vtx intro_seg7_vertex_07005390[] = {\n    {{{   644,    322,   -115}, 0, {  -544,   -288}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   833,    176,   -353}, 0, {  -384,   -576}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   644,    179,   -355}, 0, {  -512,   -288}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   833,    319,   -113}, 0, {  -384,   -576}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x070053D0 - 0x07005410\nstatic const Vtx intro_seg7_vertex_070053D0[] = {\n    {{{   817,    271,    -84}, 0, {  -320,   -512}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   952,    278,    -88}, 0, {  -224,   -704}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   817,    128,   -324}, 0, {  -320,   -512}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   952,    135,   -328}, 0, {  -224,   -704}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07005410 - 0x07005450\nstatic const Vtx intro_seg7_vertex_07005410[] = {\n    {{{   952,    135,   -328}, 0, {  -224,   -704}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   952,    278,    -88}, 0, {  -224,   -704}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   904,    -92,   -192}, 0, {    96,   -448}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   904,     50,     47}, 0, {    96,   -448}, {0xc0, 0xc0, 0xc0, 0xff}}},\n};\n\n// 0x07005450 - 0x07005490\nstatic const Vtx intro_seg7_vertex_07005450[] = {\n    {{{   514,    174,    -26}, 0, {  -384,      0}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   593,    243,    -67}, 0, {  -448,   -160}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   514,     31,   -266}, 0, {  -384,      0}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   593,    100,   -307}, 0, {  -448,   -160}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07005490 - 0x070054D0\nstatic const Vtx intro_seg7_vertex_07005490[] = {\n    {{{   514,    174,    -26}, 0, {  -384,      0}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   514,     31,   -266}, 0, {  -384,      0}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   593,     42,     52}, 0, {   -96,      0}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   593,   -100,   -187}, 0, {   -96,      0}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x070054D0 - 0x07005510\nstatic const Vtx intro_seg7_vertex_070054D0[] = {\n    {{{   593,   -100,   -187}, 0, {   -96,      0}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   585,   -125,   -172}, 0, {   -64,     32}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   593,     42,     52}, 0, {   -96,      0}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   585,     17,     67}, 0, {   -64,     32}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07005510 - 0x07005550\nstatic const Vtx intro_seg7_vertex_07005510[] = {\n    {{{   585,   -125,   -172}, 0, {   -64,     32}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   444,   -262,    -90}, 0, {    32,    352}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   585,     17,     67}, 0, {   -64,     32}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   444,   -120,    149}, 0, {    32,    352}, {0x4a, 0x4a, 0x4a, 0x00}}},\n};\n\n// 0x07005550 - 0x07005590\nstatic const Vtx intro_seg7_vertex_07005550[] = {\n    {{{   444,   -262,    -90}, 0, {    32,    352}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   628,   -353,    -35}, 0, {   320,    192}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   444,   -120,    149}, 0, {    32,    352}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   626,   -211,    204}, 0, {   320,    192}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07005590 - 0x070055D0\nstatic const Vtx intro_seg7_vertex_07005590[] = {\n    {{{   678,   -286,    -75}, 0, {   256,     32}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{   678,   -144,    164}, 0, {   256,     32}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{   628,   -353,    -35}, 0, {   320,    192}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{   626,   -211,    204}, 0, {   320,    192}, {0xd1, 0xd1, 0xd1, 0xff}}},\n};\n\n// 0x070055D0 - 0x07005610\nstatic const Vtx intro_seg7_vertex_070055D0[] = {\n    {{{   678,   -286,    -75}, 0, {   256,     32}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   811,   -381,    -19}, 0, {   512,    -32}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   678,   -144,    164}, 0, {   256,     32}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   812,   -238,    220}, 0, {   512,    -32}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07005610 - 0x07005650\nstatic const Vtx intro_seg7_vertex_07005610[] = {\n    {{{  1041,   -223,   -114}, 0, {   448,   -512}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{  1041,    -80,    125}, 0, {   416,   -512}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{   811,   -381,    -19}, 0, {   512,    -32}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{   812,   -238,    220}, 0, {   512,    -32}, {0xd1, 0xd1, 0xd1, 0xff}}},\n};\n\n// 0x07005650 - 0x07005690\nstatic const Vtx intro_seg7_vertex_07005650[] = {\n    {{{   811,   -123,   -173}, 0, {    96,   -256}, {0x5e, 0x5e, 0x5e, 0xff}}},\n    {{{   811,     18,     66}, 0, {    96,   -256}, {0x5e, 0x5e, 0x5e, 0xff}}},\n    {{{  1041,   -223,   -114}, 0, {   448,   -512}, {0x5e, 0x5e, 0x5e, 0xff}}},\n    {{{  1041,    -80,    125}, 0, {   416,   -512}, {0x5e, 0x5e, 0x5e, 0xff}}},\n};\n\n// 0x07005690 - 0x070056D0\nstatic const Vtx intro_seg7_vertex_07005690[] = {\n    {{{   812,     77,     31}, 0, {     0,   -320}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   811,     18,     66}, 0, {    96,   -256}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   811,    -65,   -208}, 0, {     0,   -320}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   811,   -123,   -173}, 0, {    96,   -256}, {0xc0, 0xc0, 0xc0, 0xff}}},\n};\n\n// 0x070056D0 - 0x07005710\nstatic const Vtx intro_seg7_vertex_070056D0[] = {\n    {{{   585,      1,   -248}, 0, {  -256,    -32}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   528,     54,     44}, 0, {  -160,     96}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   528,    -88,   -194}, 0, {  -160,     96}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   585,    144,     -8}, 0, {  -288,    -32}, {0xc0, 0xc0, 0xc0, 0xff}}},\n};\n\n// 0x07005710 - 0x07005750\nstatic const Vtx intro_seg7_vertex_07005710[] = {\n    {{{   528,    -88,   -194}, 0, {  -160,     96}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   528,     54,     44}, 0, {  -160,     96}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   579,   -184,   -137}, 0, {     0,     96}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   579,    -41,    102}, 0, {     0,     96}, {0xc0, 0xc0, 0xc0, 0xff}}},\n};\n\n// 0x07005750 - 0x07005790\nstatic const Vtx intro_seg7_vertex_07005750[] = {\n    {{{   571,    149,    -11}, 0, {  -288,    -32}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   585,    144,     -8}, 0, {  -288,    -32}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   572,      7,   -251}, 0, {  -288,    -32}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   585,      1,   -248}, 0, {  -256,    -32}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07005790 - 0x070057D0\nstatic const Vtx intro_seg7_vertex_07005790[] = {\n    {{{   579,    -41,    102}, 0, {     0,     96}, {0x9a, 0x9a, 0x9a, 0xff}}},\n    {{{   507,    -59,    113}, 0, {     0,    224}, {0x9a, 0x9a, 0x9a, 0xff}}},\n    {{{   579,   -184,   -137}, 0, {     0,     96}, {0x9a, 0x9a, 0x9a, 0xff}}},\n    {{{   512,   -201,   -127}, 0, {     0,    224}, {0x9a, 0x9a, 0x9a, 0xff}}},\n};\n\n// 0x070057D0 - 0x07005810\nstatic const Vtx intro_seg7_vertex_070057D0[] = {\n    {{{   512,   -201,   -127}, 0, {     0,    224}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   507,    -59,    113}, 0, {     0,    224}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   531,   -310,    -61}, 0, {   192,    288}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   531,   -167,    178}, 0, {   192,    288}, {0xc0, 0xc0, 0xc0, 0xff}}},\n};\n\n// 0x07005810 - 0x07005850\nstatic const Vtx intro_seg7_vertex_07005810[] = {\n    {{{   531,   -167,    178}, 0, {   192,    288}, {0x9a, 0x9a, 0x9a, 0xff}}},\n    {{{   170,   -153,    169}, 0, {   -96,    800}, {0x9a, 0x9a, 0x9a, 0xff}}},\n    {{{   531,   -310,    -61}, 0, {   192,    288}, {0x9a, 0x9a, 0x9a, 0xff}}},\n    {{{   170,   -296,    -70}, 0, {   -96,    800}, {0x9a, 0x9a, 0x9a, 0xff}}},\n};\n\n// 0x07005850 - 0x07005890\nstatic const Vtx intro_seg7_vertex_07005850[] = {\n    {{{   170,   -153,    169}, 0, {   -96,    800}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   151,    276,    -87}, 0, {  -832,    448}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   170,   -296,    -70}, 0, {   -96,    800}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   151,    133,   -327}, 0, {  -832,    448}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07005890 - 0x070058D0\nstatic const Vtx intro_seg7_vertex_07005890[] = {\n    {{{   151,    276,    -87}, 0, {  -832,    448}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   605,    348,   -130}, 0, {  -608,   -256}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   151,    133,   -327}, 0, {  -832,    448}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   605,    205,   -370}, 0, {  -608,   -256}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x070058D0 - 0x07005910\nstatic const Vtx intro_seg7_vertex_070058D0[] = {\n    {{{   571,    149,    -11}, 0, {  -288,    -32}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   572,      7,   -251}, 0, {  -288,    -32}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   605,    205,   -370}, 0, {  -608,   -256}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   605,    348,   -130}, 0, {  -608,   -256}, {0xc0, 0xc0, 0xc0, 0xff}}},\n};\n\n// 0x07005910 - 0x07005970\nstatic const Vtx intro_seg7_vertex_07005910[] = {\n    {{{  -789,    181,    -29}, 0, { -1408,   1920}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -782,    384,   -149}, 0, { -1760,   1728}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -789,     39,   -268}, 0, { -1408,   1920}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -789,     39,   -268}, 0, { -1408,   1920}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -782,    384,   -149}, 0, { -1760,   1728}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -782,    242,   -390}, 0, { -1760,   1728}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07005970 - 0x070059B0\nstatic const Vtx intro_seg7_vertex_07005970[] = {\n    {{{  -303,     20,   -257}, 0, {  -992,   1216}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{  -368,   -147,    164}, 0, {  -512,   1600}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{  -368,   -288,    -72}, 0, {  -512,   1600}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{  -303,    162,    -18}, 0, {  -992,   1216}, {0xc0, 0xc0, 0xc0, 0xff}}},\n};\n\n// 0x070059B0 - 0x070059F0\nstatic const Vtx intro_seg7_vertex_070059B0[] = {\n    {{{  -312,    205,   -368}, 0, { -1312,   1056}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{  -363,    173,    -25}, 0, { -1056,   1312}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{  -363,     31,   -263}, 0, { -1056,   1312}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{  -312,    348,   -128}, 0, { -1312,   1056}, {0xc0, 0xc0, 0xc0, 0xff}}},\n};\n\n// 0x070059F0 - 0x07005A30\nstatic const Vtx intro_seg7_vertex_070059F0[] = {\n    {{{  -363,    173,    -25}, 0, { -1056,   1312}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -303,    162,    -18}, 0, {  -992,   1216}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -363,     31,   -263}, 0, { -1056,   1312}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -303,     20,   -257}, 0, {  -992,   1216}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07005A30 - 0x07005A60\nstatic const Vtx intro_seg7_vertex_07005A30[] = {\n    {{{  -782,    384,   -149}, 0, { -1760,   1728}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -312,    348,   -128}, 0, { -1312,   1056}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -782,    242,   -390}, 0, { -1760,   1728}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07005A60 - 0x07005A90\nstatic const Vtx intro_seg7_vertex_07005A60[] = {\n    {{{  -312,    348,   -128}, 0, { -1312,   1056}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -312,    205,   -368}, 0, { -1312,   1056}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -782,    242,   -390}, 0, { -1760,   1728}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07005A90 - 0x07005AF0\nstatic const Vtx intro_seg7_vertex_07005A90[] = {\n    {{{  -746,    185,    -32}, 0, { -1376,   1856}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -756,     42,   -270}, 0, { -1376,   1888}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -775,     51,     46}, 0, { -1184,   2016}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -777,    -89,   -192}, 0, { -1184,   2016}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -775,     51,     46}, 0, { -1184,   2016}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -756,     42,   -270}, 0, { -1376,   1888}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07005AF0 - 0x07005B50\nstatic const Vtx intro_seg7_vertex_07005AF0[] = {\n    {{{  -746,    185,    -32}, 0, { -1376,   1856}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{  -789,    181,    -29}, 0, { -1408,   1920}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{  -756,     42,   -270}, 0, { -1376,   1888}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{  -789,     39,   -268}, 0, { -1408,   1920}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{  -756,     42,   -270}, 0, { -1376,   1888}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{  -789,    181,    -29}, 0, { -1408,   1920}, {0x95, 0x95, 0x95, 0xff}}},\n};\n\n// 0x07005B50 - 0x07005B90\nstatic const Vtx intro_seg7_vertex_07005B50[] = {\n    {{{  -775,     51,     46}, 0, { -1184,   2016}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -777,    -89,   -192}, 0, { -1184,   2016}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -888,     45,     50}, 0, { -1248,   2176}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -890,    -95,   -188}, 0, { -1248,   2208}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07005B90 - 0x07005BD0\nstatic const Vtx intro_seg7_vertex_07005B90[] = {\n    {{{  -888,     45,     50}, 0, { -1248,   2176}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -890,    -95,   -188}, 0, { -1248,   2208}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -900,   -313,    -57}, 0, {  -896,   2400}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -898,   -173,    180}, 0, {  -896,   2400}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07005BD0 - 0x07005C10\nstatic const Vtx intro_seg7_vertex_07005BD0[] = {\n    {{{  -604,   -199,    194}, 0, {  -608,   1984}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -667,    -97,    135}, 0, {  -832,   1984}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -604,   -340,    -41}, 0, {  -608,   1984}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -668,   -238,   -102}, 0, {  -832,   1984}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07005C10 - 0x07005C50\nstatic const Vtx intro_seg7_vertex_07005C10[] = {\n    {{{  -667,    -97,    135}, 0, {  -832,   1984}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{  -898,   -173,    180}, 0, {  -896,   2400}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{  -668,   -238,   -102}, 0, {  -832,   1984}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{  -900,   -313,    -57}, 0, {  -896,   2400}, {0x95, 0x95, 0x95, 0xff}}},\n};\n\n// 0x07005C50 - 0x07005C90\nstatic const Vtx intro_seg7_vertex_07005C50[] = {\n    {{{  -368,   -288,    -72}, 0, {  -512,   1600}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{  -368,   -147,    164}, 0, {  -512,   1600}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{  -604,   -340,    -41}, 0, {  -608,   1984}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{  -604,   -199,    194}, 0, {  -608,   1984}, {0xc0, 0xc0, 0xc0, 0xff}}},\n};\n\n// 0x07005C90 - 0x07005CD0\nstatic const Vtx intro_seg7_vertex_07005C90[] = {\n    {{{   101,   -291,    -73}, 0, {  -160,    896}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{   101,   -148,    166}, 0, {  -160,    896}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{  -182,   -288,    -75}, 0, {  -384,   1312}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{  -182,   -145,    164}, 0, {  -384,   1312}, {0x95, 0x95, 0x95, 0xff}}},\n};\n\n// 0x07005CD0 - 0x07005D10\nstatic const Vtx intro_seg7_vertex_07005CD0[] = {\n    {{{  -154,   -231,   -109}, 0, {  -448,   1216}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{  -276,   -175,    182}, 0, {  -416,   1472}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{  -276,   -318,    -57}, 0, {  -416,   1472}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{  -151,    -80,    125}, 0, {  -480,   1216}, {0xd1, 0xd1, 0xd1, 0xff}}},\n};\n\n// 0x07005D10 - 0x07005D50\nstatic const Vtx intro_seg7_vertex_07005D10[] = {\n    {{{   164,     69,   -289}, 0, {  -704,    480}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   164,    212,    -49}, 0, {  -704,    480}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   101,   -291,    -73}, 0, {  -160,    896}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   101,   -148,    166}, 0, {  -160,    896}, {0xc0, 0xc0, 0xc0, 0xff}}},\n};\n\n// 0x07005D50 - 0x07005D90\nstatic const Vtx intro_seg7_vertex_07005D50[] = {\n    {{{    95,     87,   -299}, 0, {  -800,    576}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   164,    212,    -49}, 0, {  -704,    480}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   164,     69,   -289}, 0, {  -704,    480}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{    95,    230,    -60}, 0, {  -800,    576}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07005D90 - 0x07005DD0\nstatic const Vtx intro_seg7_vertex_07005D90[] = {\n    {{{   137,    295,    -99}, 0, {  -864,    448}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{    95,    230,    -60}, 0, {  -800,    576}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   137,    153,   -339}, 0, {  -864,    448}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{    95,     87,   -299}, 0, {  -800,    576}, {0xc0, 0xc0, 0xc0, 0xff}}},\n};\n\n// 0x07005DD0 - 0x07005E10\nstatic const Vtx intro_seg7_vertex_07005DD0[] = {\n    {{{   137,    295,    -99}, 0, {  -864,    448}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   137,    153,   -339}, 0, {  -864,    448}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -100,    178,   -354}, 0, { -1120,    768}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -100,    321,   -114}, 0, { -1120,    768}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07005E10 - 0x07005E50\nstatic const Vtx intro_seg7_vertex_07005E10[] = {\n    {{{  -121,    275,    -87}, 0, { -1056,    864}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -100,    321,   -114}, 0, { -1120,    768}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -100,    178,   -354}, 0, { -1120,    768}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -121,    132,   -326}, 0, { -1056,    864}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07005E50 - 0x07005E90\nstatic const Vtx intro_seg7_vertex_07005E50[] = {\n    {{{  -226,    291,    -96}, 0, { -1152,    992}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -121,    275,    -87}, 0, { -1056,    864}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -121,    132,   -326}, 0, { -1056,    864}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -226,    148,   -336}, 0, { -1152,    992}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07005E90 - 0x07005ED0\nstatic const Vtx intro_seg7_vertex_07005E90[] = {\n    {{{  -322,    124,      3}, 0, {  -960,   1280}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -226,    291,    -96}, 0, { -1152,    992}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -226,    148,   -336}, 0, { -1152,    992}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -322,    -18,   -236}, 0, {  -960,   1280}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07005ED0 - 0x07005F10\nstatic const Vtx intro_seg7_vertex_07005ED0[] = {\n    {{{  -238,    118,      6}, 0, {  -864,   1152}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{  -322,    124,      3}, 0, {  -960,   1280}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{  -233,    -16,   -237}, 0, {  -896,   1152}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{  -322,    -18,   -236}, 0, {  -960,   1280}, {0xd1, 0xd1, 0xd1, 0xff}}},\n};\n\n// 0x07005F10 - 0x07005F50\nstatic const Vtx intro_seg7_vertex_07005F10[] = {\n    {{{  -396,     49,     48}, 0, {  -864,   1472}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -238,    118,      6}, 0, {  -864,   1152}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -233,    -16,   -237}, 0, {  -896,   1152}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -396,    -93,   -191}, 0, {  -864,   1472}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07005F50 - 0x07005F90\nstatic const Vtx intro_seg7_vertex_07005F50[] = {\n    {{{  -276,   -175,    182}, 0, {  -416,   1472}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -396,     49,     48}, 0, {  -864,   1472}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -396,    -93,   -191}, 0, {  -864,   1472}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -276,   -318,    -57}, 0, {  -416,   1472}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07005F90 - 0x07005FD0\nstatic const Vtx intro_seg7_vertex_07005F90[] = {\n    {{{  -151,    -80,    125}, 0, {  -480,   1216}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -154,   -231,   -109}, 0, {  -448,   1216}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -182,   -145,    164}, 0, {  -384,   1312}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -182,   -288,    -75}, 0, {  -384,   1312}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07005FD0 - 0x07006010\nstatic const Vtx intro_seg7_vertex_07005FD0[] = {\n    {{{  -312,    348,   -128}, 0, { -1312,   1056}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -782,    384,   -149}, 0, { -1760,   1728}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -340,    348,    -86}, 0, { -1312,   1120}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -762,    384,   -108}, 0, { -1696,   1728}, {0x73, 0x73, 0x73, 0xff}}},\n};\n\n// 0x07006010 - 0x07006050\nstatic const Vtx intro_seg7_vertex_07006010[] = {\n    {{{  -782,    384,   -149}, 0, { -1760,   1728}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -789,    181,    -29}, 0, { -1408,   1920}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -762,    384,   -108}, 0, { -1696,   1728}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -772,    213,     -9}, 0, { -1408,   1888}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07006050 - 0x07006090\nstatic const Vtx intro_seg7_vertex_07006050[] = {\n    {{{  -789,    181,    -29}, 0, { -1408,   1920}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{  -746,    185,    -32}, 0, { -1376,   1856}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{  -772,    213,     -9}, 0, { -1408,   1888}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{  -733,    215,     -8}, 0, { -1408,   1824}, {0xf0, 0xf0, 0xf0, 0xff}}},\n};\n\n// 0x07006090 - 0x070060D0\nstatic const Vtx intro_seg7_vertex_07006090[] = {\n    {{{  -733,    215,     -8}, 0, { -1408,   1824}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -746,    185,    -32}, 0, { -1376,   1856}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -762,     61,     82}, 0, { -1152,   2016}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -775,     51,     46}, 0, { -1184,   2016}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x070060D0 - 0x07006120\nstatic const Vtx intro_seg7_vertex_070060D0[] = {\n    {{{  -762,     61,     82}, 0, { -1152,   2016}, {0xff, 0xff, 0xff, 0x01}}},\n    {{{  -775,     51,     46}, 0, { -1184,   2016}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -762,     61,     82}, 0, { -1152,   2016}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -864,     48,     90}, 0, { -1216,   2176}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -888,     45,     50}, 0, { -1248,   2176}, {0x73, 0x73, 0x73, 0xff}}},\n};\n\n// 0x07006120 - 0x07006160\nstatic const Vtx intro_seg7_vertex_07006120[] = {\n    {{{  -898,   -173,    180}, 0, {  -896,   2400}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -868,   -118,    188}, 0, {  -928,   2336}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -888,     45,     50}, 0, { -1248,   2176}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -864,     48,     90}, 0, { -1216,   2176}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07006160 - 0x070061A0\nstatic const Vtx intro_seg7_vertex_07006160[] = {\n    {{{  -604,   -199,    194}, 0, {  -608,   1984}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -368,   -147,    164}, 0, {  -512,   1600}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -594,   -160,    213}, 0, {  -640,   1952}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -388,   -113,    185}, 0, {  -576,   1600}, {0xff, 0xff, 0xfe, 0xff}}},\n};\n\n// 0x070061A0 - 0x070061E0\nstatic const Vtx intro_seg7_vertex_070061A0[] = {\n    {{{  -303,    162,    -18}, 0, {  -992,   1216}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -330,    165,     21}, 0, {  -992,   1280}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -368,   -147,    164}, 0, {  -512,   1600}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -388,   -113,    185}, 0, {  -576,   1600}, {0xff, 0xff, 0xfe, 0xff}}},\n};\n\n// 0x070061E0 - 0x07006220\nstatic const Vtx intro_seg7_vertex_070061E0[] = {\n    {{{  -392,    177,     14}, 0, { -1056,   1344}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -330,    165,     21}, 0, {  -992,   1280}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -363,    173,    -25}, 0, { -1056,   1312}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -303,    162,    -18}, 0, {  -992,   1216}, {0x73, 0x73, 0x73, 0xff}}},\n};\n\n// 0x07006220 - 0x07006260\nstatic const Vtx intro_seg7_vertex_07006220[] = {\n    {{{  -312,    348,   -128}, 0, { -1312,   1056}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -340,    348,    -86}, 0, { -1312,   1120}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -363,    173,    -25}, 0, { -1056,   1312}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -392,    177,     14}, 0, { -1056,   1344}, {0xff, 0xff, 0xfe, 0xff}}},\n};\n\n// 0x07006260 - 0x070062A0\nstatic const Vtx intro_seg7_vertex_07006260[] = {\n    {{{  -898,   -173,    180}, 0, {  -896,   2400}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{  -667,    -97,    135}, 0, {  -832,   1984}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{  -868,   -118,    188}, 0, {  -928,   2336}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{  -664,    -64,    156}, 0, {  -864,   1984}, {0xf0, 0xf0, 0xf0, 0xff}}},\n};\n\n// 0x070062A0 - 0x070062E0\nstatic const Vtx intro_seg7_vertex_070062A0[] = {\n    {{{  -664,    -64,    156}, 0, {  -864,   1984}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -667,    -97,    135}, 0, {  -832,   1984}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -594,   -160,    213}, 0, {  -640,   1952}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -604,   -199,    194}, 0, {  -608,   1984}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x070062E0 - 0x07006320\nstatic const Vtx intro_seg7_vertex_070062E0[] = {\n    {{{   137,    295,    -99}, 0, {  -864,    448}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -100,    321,   -114}, 0, { -1120,    768}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{    98,    302,    -60}, 0, {  -896,    512}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   -85,    319,    -74}, 0, { -1056,    768}, {0x73, 0x73, 0x73, 0xff}}},\n};\n\n// 0x07006320 - 0x07006360\nstatic const Vtx intro_seg7_vertex_07006320[] = {\n    {{{  -100,    321,   -114}, 0, { -1120,    768}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -121,    275,    -87}, 0, { -1056,    864}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   -85,    319,    -74}, 0, { -1056,    768}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -110,    272,    -42}, 0, {  -992,    864}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07006360 - 0x070063A0\nstatic const Vtx intro_seg7_vertex_07006360[] = {\n    {{{   137,    295,    -99}, 0, {  -864,    448}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{    98,    302,    -60}, 0, {  -896,    512}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{    95,    230,    -60}, 0, {  -800,    576}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{    59,    241,    -21}, 0, {  -800,    640}, {0xff, 0xff, 0xfe, 0xff}}},\n};\n\n// 0x070063A0 - 0x070063E0\nstatic const Vtx intro_seg7_vertex_070063A0[] = {\n    {{{    59,    241,    -21}, 0, {  -800,    640}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   144,    218,    -12}, 0, {  -704,    512}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{    95,    230,    -60}, 0, {  -800,    576}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   164,    212,    -49}, 0, {  -704,    480}, {0x73, 0x73, 0x73, 0xff}}},\n};\n\n// 0x070063E0 - 0x07006420\nstatic const Vtx intro_seg7_vertex_070063E0[] = {\n    {{{   101,   -148,    166}, 0, {  -160,    896}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   164,    212,    -49}, 0, {  -704,    480}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{    82,   -110,    183}, 0, {  -192,    896}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   144,    218,    -12}, 0, {  -704,    512}, {0xff, 0xff, 0xfe, 0xff}}},\n};\n\n// 0x07006420 - 0x07006460\nstatic const Vtx intro_seg7_vertex_07006420[] = {\n    {{{  -182,   -145,    164}, 0, {  -384,   1312}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{   101,   -148,    166}, 0, {  -160,    896}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{  -153,   -107,    181}, 0, {  -384,   1248}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{    82,   -110,    183}, 0, {  -192,    896}, {0xf0, 0xf0, 0xf0, 0xff}}},\n};\n\n// 0x07006460 - 0x070064A0\nstatic const Vtx intro_seg7_vertex_07006460[] = {\n    {{{  -133,    -29,    132}, 0, {  -512,   1152}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -151,    -80,    125}, 0, {  -480,   1216}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -153,   -107,    181}, 0, {  -384,   1248}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -182,   -145,    164}, 0, {  -384,   1312}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x070064A0 - 0x070064E0\nstatic const Vtx intro_seg7_vertex_070064A0[] = {\n    {{{  -133,    -29,    132}, 0, {  -512,   1152}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -269,   -128,    192}, 0, {  -448,   1440}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -151,    -80,    125}, 0, {  -480,   1216}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -276,   -175,    182}, 0, {  -416,   1472}, {0xff, 0xff, 0xfe, 0xff}}},\n};\n\n// 0x070064E0 - 0x07006520\nstatic const Vtx intro_seg7_vertex_070064E0[] = {\n    {{{  -366,     60,     81}, 0, {  -832,   1408}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -396,     49,     48}, 0, {  -864,   1472}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -269,   -128,    192}, 0, {  -448,   1440}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -276,   -175,    182}, 0, {  -416,   1472}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x07006520 - 0x07006560\nstatic const Vtx intro_seg7_vertex_07006520[] = {\n    {{{  -190,    150,     28}, 0, {  -864,   1088}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -238,    118,      6}, 0, {  -864,   1152}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -366,     60,     81}, 0, {  -832,   1408}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -396,     49,     48}, 0, {  -864,   1472}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07006560 - 0x070065A0\nstatic const Vtx intro_seg7_vertex_07006560[] = {\n    {{{  -190,    150,     28}, 0, {  -864,   1088}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{  -290,    156,     24}, 0, {  -960,   1216}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{  -238,    118,      6}, 0, {  -864,   1152}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{  -322,    124,      3}, 0, {  -960,   1280}, {0xf0, 0xf0, 0xf0, 0xff}}},\n};\n\n// 0x070065A0 - 0x070065E0\nstatic const Vtx intro_seg7_vertex_070065A0[] = {\n    {{{  -213,    286,    -51}, 0, { -1120,    992}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -226,    291,    -96}, 0, { -1152,    992}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -290,    156,     24}, 0, {  -960,   1216}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -322,    124,      3}, 0, {  -960,   1280}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x070065E0 - 0x07006620\nstatic const Vtx intro_seg7_vertex_070065E0[] = {\n    {{{  -110,    272,    -42}, 0, {  -992,    864}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -121,    275,    -87}, 0, { -1056,    864}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -213,    286,    -51}, 0, { -1120,    992}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -226,    291,    -96}, 0, { -1152,    992}, {0x73, 0x73, 0x73, 0xff}}},\n};\n\n// 0x07006620 - 0x07006660\nstatic const Vtx intro_seg7_vertex_07006620[] = {\n    {{{   605,    348,   -130}, 0, {  -608,   -256}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   151,    276,    -87}, 0, {  -832,    448}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   578,    342,    -86}, 0, {  -576,   -192}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   175,    281,    -51}, 0, {  -800,    416}, {0x73, 0x73, 0x73, 0xff}}},\n};\n\n// 0x07006660 - 0x070066A0\nstatic const Vtx intro_seg7_vertex_07006660[] = {\n    {{{   175,    281,    -51}, 0, {  -800,    416}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   151,    276,    -87}, 0, {  -832,    448}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   191,   -117,    186}, 0, {   -96,    768}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   170,   -153,    169}, 0, {   -96,    800}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x070066A0 - 0x070066E0\nstatic const Vtx intro_seg7_vertex_070066A0[] = {\n    {{{   531,   -167,    178}, 0, {   192,    288}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{   499,   -126,    196}, 0, {   128,    320}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{   170,   -153,    169}, 0, {   -96,    800}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{   191,   -117,    186}, 0, {   -96,    768}, {0xf0, 0xf0, 0xf0, 0xff}}},\n};\n\n// 0x070066E0 - 0x07006720\nstatic const Vtx intro_seg7_vertex_070066E0[] = {\n    {{{   480,    -27,    130}, 0, {   -32,    256}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   507,    -59,    113}, 0, {     0,    224}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   499,   -126,    196}, 0, {   128,    320}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   531,   -167,    178}, 0, {   192,    288}, {0xff, 0xff, 0xfe, 0xff}}},\n};\n\n// 0x07006720 - 0x07006760\nstatic const Vtx intro_seg7_vertex_07006720[] = {\n    {{{   579,    -41,    102}, 0, {     0,     96}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   507,    -59,    113}, 0, {     0,    224}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   545,     -8,    124}, 0, {     0,    128}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   480,    -27,    130}, 0, {   -32,    256}, {0xff, 0xff, 0xfe, 0xff}}},\n};\n\n// 0x07006760 - 0x070067A0\nstatic const Vtx intro_seg7_vertex_07006760[] = {\n    {{{   579,    -41,    102}, 0, {     0,     96}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   528,     54,     44}, 0, {  -160,     96}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   545,     -8,    124}, 0, {     0,    128}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   494,     73,     70}, 0, {  -192,    128}, {0xff, 0xff, 0xfe, 0xff}}},\n};\n\n// 0x070067A0 - 0x070067E0\nstatic const Vtx intro_seg7_vertex_070067A0[] = {\n    {{{   585,    144,     -8}, 0, {  -288,    -32}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   552,    151,     28}, 0, {  -288,      0}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   528,     54,     44}, 0, {  -160,     96}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   494,     73,     70}, 0, {  -192,    128}, {0xff, 0xff, 0xfe, 0xff}}},\n};\n\n// 0x070067E0 - 0x07006820\nstatic const Vtx intro_seg7_vertex_070067E0[] = {\n    {{{   585,    144,     -8}, 0, {  -288,    -32}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   552,    151,     28}, 0, {  -288,      0}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   571,    149,    -11}, 0, {  -288,    -32}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   551,    176,     13}, 0, {  -320,      0}, {0xff, 0xff, 0xfe, 0xff}}},\n};\n\n// 0x07006820 - 0x07006860\nstatic const Vtx intro_seg7_vertex_07006820[] = {\n    {{{   605,    348,   -130}, 0, {  -608,   -256}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   578,    342,    -86}, 0, {  -576,   -192}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   571,    149,    -11}, 0, {  -288,    -32}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   551,    176,     13}, 0, {  -320,      0}, {0xff, 0xff, 0xfe, 0xff}}},\n};\n\n// 0x07006860 - 0x070068A0\nstatic const Vtx intro_seg7_vertex_07006860[] = {\n    {{{   952,    278,    -88}, 0, {  -224,   -704}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   817,    271,    -84}, 0, {  -320,   -512}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   930,    277,    -49}, 0, {  -192,   -672}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   790,    270,    -45}, 0, {  -288,   -448}, {0x73, 0x73, 0x73, 0xff}}},\n};\n\n// 0x070068A0 - 0x070068E0\nstatic const Vtx intro_seg7_vertex_070068A0[] = {\n    {{{   833,    319,   -113}, 0, {  -384,   -576}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   806,    317,    -73}, 0, {  -352,   -512}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   817,    271,    -84}, 0, {  -320,   -512}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   790,    270,    -45}, 0, {  -288,   -448}, {0xff, 0xff, 0xfe, 0xff}}},\n};\n\n// 0x070068E0 - 0x07006920\nstatic const Vtx intro_seg7_vertex_070068E0[] = {\n    {{{   833,    319,   -113}, 0, {  -384,   -576}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   644,    322,   -115}, 0, {  -544,   -288}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   806,    317,    -73}, 0, {  -352,   -512}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   658,    317,    -73}, 0, {  -480,   -288}, {0x73, 0x73, 0x73, 0xff}}},\n};\n\n// 0x07006920 - 0x07006960\nstatic const Vtx intro_seg7_vertex_07006920[] = {\n    {{{   644,    322,   -115}, 0, {  -544,   -288}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   593,    243,    -67}, 0, {  -448,   -160}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   658,    317,    -73}, 0, {  -480,   -288}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   619,    247,    -31}, 0, {  -384,   -160}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07006960 - 0x070069A0\nstatic const Vtx intro_seg7_vertex_07006960[] = {\n    {{{   514,    174,    -26}, 0, {  -384,      0}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   541,    186,      5}, 0, {  -352,      0}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   593,    243,    -67}, 0, {  -448,   -160}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   619,    247,    -31}, 0, {  -384,   -160}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x070069A0 - 0x070069E0\nstatic const Vtx intro_seg7_vertex_070069A0[] = {\n    {{{   514,    174,    -26}, 0, {  -384,      0}, {0x80, 0x80, 0x80, 0xff}}},\n    {{{   593,     42,     52}, 0, {   -96,      0}, {0x80, 0x80, 0x80, 0xff}}},\n    {{{   541,    186,      5}, 0, {  -352,      0}, {0x80, 0x80, 0x80, 0xff}}},\n    {{{   611,     67,     74}, 0, {   -96,      0}, {0x80, 0x80, 0x80, 0xff}}},\n};\n\n// 0x070069E0 - 0x07006A20\nstatic const Vtx intro_seg7_vertex_070069E0[] = {\n    {{{   611,     67,     74}, 0, {   -96,      0}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   593,     42,     52}, 0, {   -96,      0}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   610,     30,     96}, 0, {   -32,      0}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   585,     17,     67}, 0, {   -64,     32}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07006A20 - 0x07006A60\nstatic const Vtx intro_seg7_vertex_07006A20[] = {\n    {{{   610,     30,     96}, 0, {   -32,      0}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   585,     17,     67}, 0, {   -64,     32}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   482,    -98,    173}, 0, {    64,    320}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   444,   -120,    149}, 0, {    32,    352}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07006A60 - 0x07006AA0\nstatic const Vtx intro_seg7_vertex_07006A60[] = {\n    {{{   444,   -120,    149}, 0, {    32,    352}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   626,   -211,    204}, 0, {   320,    192}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   482,    -98,    173}, 0, {    64,    320}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   619,   -170,    215}, 0, {   288,    160}, {0x73, 0x73, 0x73, 0xff}}},\n};\n\n// 0x07006AA0 - 0x07006AE0\nstatic const Vtx intro_seg7_vertex_07006AA0[] = {\n    {{{   668,    -97,    172}, 0, {   192,     32}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   619,   -170,    215}, 0, {   288,    160}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   678,   -144,    164}, 0, {   256,     32}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   626,   -211,    204}, 0, {   320,    192}, {0xff, 0xff, 0xfe, 0xff}}},\n};\n\n// 0x07006AE0 - 0x07006B20\nstatic const Vtx intro_seg7_vertex_07006AE0[] = {\n    {{{   668,    -97,    172}, 0, {   192,     32}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   678,   -144,    164}, 0, {   256,     32}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   810,   -196,    234}, 0, {   480,    -64}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   812,   -238,    220}, 0, {   512,    -32}, {0x73, 0x73, 0x73, 0xff}}},\n};\n\n// 0x07006B20 - 0x07006B60\nstatic const Vtx intro_seg7_vertex_07006B20[] = {\n    {{{  1041,    -80,    125}, 0, {   416,   -512}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   994,    -64,    156}, 0, {   384,   -448}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   812,   -238,    220}, 0, {   512,    -32}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   810,   -196,    234}, 0, {   480,    -64}, {0xff, 0xff, 0xfe, 0xff}}},\n};\n\n// 0x07006B60 - 0x07006BA0\nstatic const Vtx intro_seg7_vertex_07006B60[] = {\n    {{{  1041,    -80,    125}, 0, {   416,   -512}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{   811,     18,     66}, 0, {    96,   -256}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{   994,    -64,    156}, 0, {   384,   -448}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{   789,     26,     98}, 0, {    96,   -224}, {0xbb, 0xbb, 0xbb, 0xff}}},\n};\n\n// 0x07006BA0 - 0x07006BE0\nstatic const Vtx intro_seg7_vertex_07006BA0[] = {\n    {{{   786,    118,     44}, 0, {   -32,   -320}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   789,     26,     98}, 0, {    96,   -224}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   812,     77,     31}, 0, {     0,   -320}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   811,     18,     66}, 0, {    96,   -256}, {0xff, 0xff, 0xfe, 0xff}}},\n};\n\n// 0x07006BE0 - 0x07006C20\nstatic const Vtx intro_seg7_vertex_07006BE0[] = {\n    {{{   786,    118,     44}, 0, {   -32,   -320}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{   812,     77,     31}, 0, {     0,   -320}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{   887,     92,     62}, 0, {    64,   -416}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{   904,     50,     47}, 0, {    96,   -448}, {0xf0, 0xf0, 0xf0, 0xff}}},\n};\n\n// 0x07006C20 - 0x07006C60\nstatic const Vtx intro_seg7_vertex_07006C20[] = {\n    {{{   952,    278,    -88}, 0, {  -224,   -704}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   930,    277,    -49}, 0, {  -192,   -672}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   904,     50,     47}, 0, {    96,   -448}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   887,     92,     62}, 0, {    64,   -416}, {0xff, 0xff, 0xfe, 0xff}}},\n};\n\n// 0x07006C60 - 0x07006CA0\nstatic const Vtx intro_seg7_vertex_07006C60[] = {\n    {{{   -97,    839,   -418}, 0, { -1984,    320}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -270,    840,   -419}, 0, { -2112,    576}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -115,    837,   -380}, 0, { -1952,    352}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -257,    840,   -381}, 0, { -2080,    576}, {0x73, 0x73, 0x73, 0xff}}},\n};\n\n// 0x07006CA0 - 0x07006CE0\nstatic const Vtx intro_seg7_vertex_07006CA0[] = {\n    {{{  -270,    840,   -419}, 0, { -2112,    576}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -279,    785,   -386}, 0, { -2016,    640}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -257,    840,   -381}, 0, { -2080,    576}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -261,    785,   -349}, 0, { -1984,    608}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07006CE0 - 0x07006D20\nstatic const Vtx intro_seg7_vertex_07006CE0[] = {\n    {{{  -261,    785,   -349}, 0, { -1984,    608}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -279,    785,   -386}, 0, { -2016,    640}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -340,    779,   -346}, 0, { -2048,    736}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -336,    780,   -383}, 0, { -2080,    704}, {0x73, 0x73, 0x73, 0xff}}},\n};\n\n// 0x07006D20 - 0x07006D60\nstatic const Vtx intro_seg7_vertex_07006D20[] = {\n    {{{  -371,    778,   -345}, 0, { -2048,    800}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -340,    779,   -346}, 0, { -2048,    736}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -354,    779,   -382}, 0, { -2080,    736}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -336,    780,   -383}, 0, { -2080,    704}, {0x73, 0x73, 0x73, 0xff}}},\n};\n\n// 0x07006D60 - 0x07006DA0\nstatic const Vtx intro_seg7_vertex_07006D60[] = {\n    {{{  -361,    851,   -425}, 0, { -2208,    704}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -387,    844,   -382}, 0, { -2176,    768}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -354,    779,   -382}, 0, { -2080,    736}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -371,    778,   -345}, 0, { -2048,    800}, {0xff, 0xff, 0xfe, 0xff}}},\n};\n\n// 0x07006DA0 - 0x07006DE0\nstatic const Vtx intro_seg7_vertex_07006DA0[] = {\n    {{{  -361,    851,   -425}, 0, { -2208,    704}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -547,    803,   -397}, 0, { -2272,   1024}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -387,    844,   -382}, 0, { -2176,    768}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -515,    811,   -362}, 0, { -2240,    960}, {0x73, 0x73, 0x73, 0xff}}},\n};\n\n// 0x07006DE0 - 0x07006E20\nstatic const Vtx intro_seg7_vertex_07006DE0[] = {\n    {{{  -547,    803,   -397}, 0, { -2272,   1024}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -541,    786,   -387}, 0, { -2240,   1024}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -515,    811,   -362}, 0, { -2240,    960}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -504,    781,   -347}, 0, { -2176,    992}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07006E20 - 0x07006E60\nstatic const Vtx intro_seg7_vertex_07006E20[] = {\n    {{{  -504,    781,   -347}, 0, { -2176,    992}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -541,    786,   -387}, 0, { -2240,   1024}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -556,    784,   -347}, 0, { -2208,   1056}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -574,    788,   -388}, 0, { -2272,   1056}, {0x73, 0x73, 0x73, 0xff}}},\n};\n\n// 0x07006E60 - 0x07006EA0\nstatic const Vtx intro_seg7_vertex_07006E60[] = {\n    {{{  -612,    651,   -307}, 0, { -2048,   1248}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -582,    680,   -287}, 0, { -2048,   1184}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -574,    788,   -388}, 0, { -2272,   1056}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -556,    784,   -347}, 0, { -2208,   1056}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07006EA0 - 0x07006EE0\nstatic const Vtx intro_seg7_vertex_07006EA0[] = {\n    {{{  -612,    651,   -307}, 0, { -2048,   1248}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  -603,    649,   -306}, 0, { -2048,   1216}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  -582,    680,   -287}, 0, { -2048,   1184}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  -537,    670,   -281}, 0, { -2016,   1120}, {0xdd, 0xdd, 0xdd, 0xff}}},\n};\n\n// 0x07006EE0 - 0x07006F20\nstatic const Vtx intro_seg7_vertex_07006EE0[] = {\n    {{{  -537,    670,   -281}, 0, { -2016,   1120}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -603,    649,   -306}, 0, { -2048,   1216}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -610,    638,   -260}, 0, { -2016,   1280}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -641,    632,   -296}, 0, { -2048,   1312}, {0x73, 0x73, 0x73, 0xff}}},\n};\n\n// 0x07006F20 - 0x07006F60\nstatic const Vtx intro_seg7_vertex_07006F20[] = {\n    {{{  -580,    466,   -197}, 0, { -1728,   1376}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -568,    515,   -189}, 0, { -1760,   1312}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -641,    632,   -296}, 0, { -2048,   1312}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -610,    638,   -260}, 0, { -2016,   1280}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x07006F60 - 0x07006FA0\nstatic const Vtx intro_seg7_vertex_07006F60[] = {\n    {{{  -580,    466,   -197}, 0, { -1728,   1376}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  -576,    468,   -199}, 0, { -1728,   1344}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  -568,    515,   -189}, 0, { -1760,   1312}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  -540,    534,   -201}, 0, { -1792,   1248}, {0xdd, 0xdd, 0xdd, 0xff}}},\n};\n\n// 0x07006FA0 - 0x07006FE0\nstatic const Vtx intro_seg7_vertex_07006FA0[] = {\n    {{{  -540,    534,   -201}, 0, { -1792,   1248}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -576,    468,   -199}, 0, { -1728,   1344}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -566,    406,   -122}, 0, { -1600,   1408}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -592,    366,   -139}, 0, { -1568,   1472}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07006FE0 - 0x07007020\nstatic const Vtx intro_seg7_vertex_07006FE0[] = {\n    {{{  -592,    366,   -139}, 0, { -1568,   1472}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{  -357,    362,   -136}, 0, { -1376,   1120}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{  -566,    406,   -122}, 0, { -1600,   1408}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{  -379,    401,   -121}, 0, { -1440,   1152}, {0xf0, 0xf0, 0xf0, 0xff}}},\n};\n\n// 0x07007020 - 0x07007060\nstatic const Vtx intro_seg7_vertex_07007020[] = {\n    {{{  -380,    504,   -183}, 0, { -1600,   1056}, {0xff, 0xff, 0xfe, 0x00}}},\n    {{{  -379,    401,   -121}, 0, { -1440,   1152}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -361,    478,   -205}, 0, { -1568,   1024}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -357,    362,   -136}, 0, { -1376,   1120}, {0xff, 0xff, 0xfe, 0xff}}},\n};\n\n// 0x07007060 - 0x070070A0\nstatic const Vtx intro_seg7_vertex_07007060[] = {\n    {{{  -380,    504,   -183}, 0, { -1600,   1056}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{  -361,    478,   -205}, 0, { -1568,   1024}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{  -268,    502,   -182}, 0, { -1504,    896}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{  -292,    464,   -197}, 0, { -1504,    928}, {0xf0, 0xf0, 0xf0, 0xff}}},\n};\n\n// 0x070070A0 - 0x070070E0\nstatic const Vtx intro_seg7_vertex_070070A0[] = {\n    {{{  -268,    502,   -182}, 0, { -1504,    896}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -292,    464,   -197}, 0, { -1504,    928}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -272,    396,   -118}, 0, { -1344,    992}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -295,    359,   -134}, 0, { -1312,   1024}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x070070E0 - 0x07007120\nstatic const Vtx intro_seg7_vertex_070070E0[] = {\n    {{{  -272,    396,   -118}, 0, { -1344,    992}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{  -295,    359,   -134}, 0, { -1312,   1024}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{  -106,    391,   -116}, 0, { -1216,    736}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{   -83,    354,   -131}, 0, { -1152,    736}, {0xf0, 0xf0, 0xf0, 0xff}}},\n};\n\n// 0x07007120 - 0x07007160\nstatic const Vtx intro_seg7_vertex_07007120[] = {\n    {{{  -108,    493,   -177}, 0, { -1376,    640}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -106,    391,   -116}, 0, { -1216,    736}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   -82,    459,   -193}, 0, { -1312,    640}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   -83,    354,   -131}, 0, { -1152,    736}, {0xff, 0xff, 0xfe, 0xff}}},\n};\n\n// 0x07007160 - 0x070071A0\nstatic const Vtx intro_seg7_vertex_07007160[] = {\n    {{{  -108,    493,   -177}, 0, { -1376,    640}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{   -82,    459,   -193}, 0, { -1312,    640}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{    -9,    498,   -179}, 0, { -1312,    512}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{    13,    461,   -195}, 0, { -1248,    480}, {0xf0, 0xf0, 0xf0, 0xff}}},\n};\n\n// 0x070071A0 - 0x070071E0\nstatic const Vtx intro_seg7_vertex_070071A0[] = {\n    {{{   -17,    773,   -339}, 0, { -1760,    256}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{    -9,    498,   -179}, 0, { -1312,    512}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{     3,    775,   -380}, 0, { -1792,    224}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{    13,    461,   -195}, 0, { -1248,    480}, {0xff, 0xff, 0xfe, 0xff}}},\n};\n\n// 0x070071E0 - 0x07007220\nstatic const Vtx intro_seg7_vertex_070071E0[] = {\n    {{{  -116,    775,   -343}, 0, { -1856,    416}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   -17,    773,   -339}, 0, { -1760,    256}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   -99,    778,   -382}, 0, { -1888,    384}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{     3,    775,   -380}, 0, { -1792,    224}, {0x73, 0x73, 0x73, 0xff}}},\n};\n\n// 0x07007220 - 0x07007260\nstatic const Vtx intro_seg7_vertex_07007220[] = {\n    {{{  -116,    775,   -343}, 0, { -1856,    416}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   -99,    778,   -382}, 0, { -1888,    384}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -115,    837,   -380}, 0, { -1952,    352}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   -97,    839,   -418}, 0, { -1984,    320}, {0xff, 0xff, 0xfe, 0xff}}},\n};\n\n// 0x07007260 - 0x070072A0\nstatic const Vtx intro_seg7_vertex_07007260[] = {\n    {{{   589,    815,   -404}, 0, { -1408,   -640}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   425,    820,   -407}, 0, { -1536,   -416}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   571,    814,   -363}, 0, { -1376,   -608}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   427,    812,   -365}, 0, { -1504,   -384}, {0x73, 0x73, 0x73, 0xff}}},\n};\n\n// 0x070072A0 - 0x070072E0\nstatic const Vtx intro_seg7_vertex_070072A0[] = {\n    {{{   246,    778,   -382}, 0, { -1600,    -96}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   276,    781,   -348}, 0, { -1568,   -128}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   425,    820,   -407}, 0, { -1536,   -416}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   427,    812,   -365}, 0, { -1504,   -384}, {0x73, 0x73, 0x73, 0xff}}},\n};\n\n// 0x070072E0 - 0x07007320\nstatic const Vtx intro_seg7_vertex_070072E0[] = {\n    {{{   246,    778,   -382}, 0, { -1600,    -96}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{   265,    745,   -363}, 0, { -1536,    -96}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{   276,    781,   -348}, 0, { -1568,   -128}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{   302,    744,   -325}, 0, { -1472,   -160}, {0xaa, 0xaa, 0xaa, 0xff}}},\n};\n\n// 0x07007320 - 0x07007360\nstatic const Vtx intro_seg7_vertex_07007320[] = {\n    {{{   302,    744,   -325}, 0, { -1472,   -160}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   265,    745,   -363}, 0, { -1536,    -96}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   247,    742,   -321}, 0, { -1504,    -64}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   228,    742,   -361}, 0, { -1568,    -64}, {0x73, 0x73, 0x73, 0xff}}},\n};\n\n// 0x07007360 - 0x070073A0\nstatic const Vtx intro_seg7_vertex_07007360[] = {\n    {{{   222,    615,   -286}, 0, { -1344,     32}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   248,    650,   -269}, 0, { -1376,      0}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   228,    742,   -361}, 0, { -1568,    -64}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   247,    742,   -321}, 0, { -1504,    -64}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x070073A0 - 0x070073E0\nstatic const Vtx intro_seg7_vertex_070073A0[] = {\n    {{{   274,    649,   -268}, 0, { -1344,    -32}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{   248,    650,   -269}, 0, { -1376,      0}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{   246,    613,   -285}, 0, { -1344,      0}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{   222,    615,   -286}, 0, { -1344,     32}, {0xf0, 0xf0, 0xf0, 0xff}}},\n};\n\n// 0x070073E0 - 0x07007420\nstatic const Vtx intro_seg7_vertex_070073E0[] = {\n    {{{   274,    649,   -268}, 0, { -1344,    -32}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   246,    613,   -285}, 0, { -1344,      0}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   261,    594,   -236}, 0, { -1248,      0}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   240,    583,   -267}, 0, { -1280,     32}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07007420 - 0x07007460\nstatic const Vtx intro_seg7_vertex_07007420[] = {\n    {{{   114,    399,   -158}, 0, { -1056,    384}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   141,    425,   -137}, 0, { -1056,    352}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   240,    583,   -267}, 0, { -1280,     32}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   261,    594,   -236}, 0, { -1248,      0}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07007460 - 0x070074A0\nstatic const Vtx intro_seg7_vertex_07007460[] = {\n    {{{   114,    399,   -158}, 0, { -1056,    384}, {0xcc, 0xcc, 0xcc, 0xff}}},\n    {{{   353,    333,   -119}, 0, {  -768,     96}, {0xcc, 0xcc, 0xcc, 0xff}}},\n    {{{   141,    425,   -137}, 0, { -1056,    352}, {0xcc, 0xcc, 0xcc, 0xff}}},\n    {{{   338,    374,   -106}, 0, {  -832,     96}, {0xcc, 0xcc, 0xcc, 0xff}}},\n};\n\n// 0x070074A0 - 0x070074E0\nstatic const Vtx intro_seg7_vertex_070074A0[] = {\n    {{{   353,    333,   -119}, 0, {  -768,     96}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   356,    350,   -129}, 0, {  -800,     64}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   338,    374,   -106}, 0, {  -832,     96}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   347,    390,   -115}, 0, {  -832,     64}, {0xff, 0xff, 0xfe, 0xff}}},\n};\n\n// 0x070074E0 - 0x07007520\nstatic const Vtx intro_seg7_vertex_070074E0[] = {\n    {{{   347,    390,   -115}, 0, {  -832,     64}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{   356,    350,   -129}, 0, {  -800,     64}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{   642,    392,   -117}, 0, {  -608,   -352}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{   672,    352,   -130}, 0, {  -544,   -352}, {0xf0, 0xf0, 0xf0, 0xff}}},\n};\n\n// 0x07007520 - 0x07007560\nstatic const Vtx intro_seg7_vertex_07007520[] = {\n    {{{   627,    482,   -170}, 0, {  -768,   -384}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   642,    392,   -117}, 0, {  -608,   -352}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   655,    448,   -187}, 0, {  -736,   -416}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   672,    352,   -130}, 0, {  -544,   -352}, {0xff, 0xff, 0xfe, 0xff}}},\n};\n\n// 0x07007560 - 0x070075A0\nstatic const Vtx intro_seg7_vertex_07007560[] = {\n    {{{   676,    583,   -267}, 0, {  -928,   -576}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   652,    577,   -226}, 0, {  -928,   -512}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   682,    453,   -190}, 0, {  -704,   -480}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   658,    486,   -172}, 0, {  -768,   -448}, {0xff, 0xff, 0xfe, 0xff}}},\n};\n\n// 0x070075A0 - 0x070075E0\nstatic const Vtx intro_seg7_vertex_070075A0[] = {\n    {{{   627,    482,   -170}, 0, {  -768,   -384}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{   655,    448,   -187}, 0, {  -736,   -416}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{   658,    486,   -172}, 0, {  -768,   -448}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{   682,    453,   -190}, 0, {  -704,   -480}, {0xf0, 0xf0, 0xf0, 0xff}}},\n};\n\n// 0x070075E0 - 0x07007620\nstatic const Vtx intro_seg7_vertex_070075E0[] = {\n    {{{   618,    578,   -227}, 0, {  -960,   -480}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   652,    577,   -226}, 0, {  -928,   -512}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   661,    583,   -267}, 0, {  -960,   -544}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   676,    583,   -267}, 0, {  -928,   -576}, {0x73, 0x73, 0x73, 0xff}}},\n};\n\n// 0x07007620 - 0x07007660\nstatic const Vtx intro_seg7_vertex_07007620[] = {\n    {{{   671,    595,   -274}, 0, {  -960,   -576}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   646,    614,   -248}, 0, {  -992,   -544}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   661,    583,   -267}, 0, {  -960,   -544}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   618,    578,   -227}, 0, {  -960,   -480}, {0xff, 0xff, 0xfe, 0xff}}},\n};\n\n// 0x07007660 - 0x070076A0\nstatic const Vtx intro_seg7_vertex_07007660[] = {\n    {{{   637,    664,   -277}, 0, { -1088,   -576}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   646,    614,   -248}, 0, {  -992,   -544}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   661,    633,   -296}, 0, { -1024,   -608}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   671,    595,   -274}, 0, {  -960,   -576}, {0xff, 0xff, 0xfe, 0xff}}},\n};\n\n// 0x070076A0 - 0x070076E0\nstatic const Vtx intro_seg7_vertex_070076A0[] = {\n    {{{   669,    631,   -295}, 0, { -1024,   -608}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{   647,    662,   -276}, 0, { -1056,   -576}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{   661,    633,   -296}, 0, { -1024,   -608}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{   637,    664,   -277}, 0, { -1088,   -576}, {0xf0, 0xf0, 0xf0, 0xff}}},\n};\n\n// 0x070076E0 - 0x07007720\nstatic const Vtx intro_seg7_vertex_070076E0[] = {\n    {{{   681,    781,   -384}, 0, { -1280,   -768}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   653,    778,   -348}, 0, { -1248,   -704}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   669,    631,   -295}, 0, { -1024,   -608}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   647,    662,   -276}, 0, { -1056,   -576}, {0xff, 0xff, 0xfe, 0xff}}},\n};\n\n// 0x07007720 - 0x07007760\nstatic const Vtx intro_seg7_vertex_07007720[] = {\n    {{{   573,    772,   -341}, 0, { -1312,   -576}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   653,    778,   -348}, 0, { -1248,   -704}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   593,    775,   -380}, 0, { -1344,   -608}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   681,    781,   -384}, 0, { -1280,   -768}, {0x73, 0x73, 0x73, 0xff}}},\n};\n\n// 0x07007760 - 0x070077A0\nstatic const Vtx intro_seg7_vertex_07007760[] = {\n    {{{   589,    815,   -404}, 0, { -1408,   -640}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   571,    814,   -363}, 0, { -1376,   -608}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   593,    775,   -380}, 0, { -1344,   -608}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   573,    772,   -341}, 0, { -1312,   -576}, {0xff, 0xff, 0xfe, 0xff}}},\n};\n\n// 0x070077A0 - 0x070077E0\nstatic const Vtx intro_seg7_vertex_070077A0[] = {\n    {{{   178,    864,   -433}, 0, { -1792,    -96}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{   180,    850,   -387}, 0, { -1760,    -64}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{   308,    766,   -375}, 0, { -1536,   -192}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{   278,    778,   -345}, 0, { -1568,   -128}, {0xaa, 0xaa, 0xaa, 0xff}}},\n};\n\n// 0x070077E0 - 0x07007820\nstatic const Vtx intro_seg7_vertex_070077E0[] = {\n    {{{   308,    766,   -375}, 0, { -1536,   -192}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   278,    778,   -345}, 0, { -1568,   -128}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   220,    666,   -316}, 0, { -1440,      0}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   213,    700,   -299}, 0, { -1472,      0}, {0xff, 0xff, 0xfe, 0xff}}},\n};\n\n// 0x07007820 - 0x07007860\nstatic const Vtx intro_seg7_vertex_07007820[] = {\n    {{{   213,    700,   -299}, 0, { -1472,      0}, {0xa7, 0x91, 0x7b, 0xff}}},\n    {{{    94,    750,   -328}, 0, { -1664,    128}, {0xa7, 0x91, 0x7b, 0xff}}},\n    {{{   220,    666,   -316}, 0, { -1440,      0}, {0xa7, 0x91, 0x7b, 0xff}}},\n    {{{    61,    727,   -352}, 0, { -1664,    192}, {0xa7, 0x91, 0x7b, 0xff}}},\n};\n\n// 0x07007860 - 0x070078A0\nstatic const Vtx intro_seg7_vertex_07007860[] = {\n    {{{    94,    750,   -328}, 0, { -1664,    128}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   180,    850,   -387}, 0, { -1760,    -64}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{    61,    727,   -352}, 0, { -1664,    192}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   178,    864,   -433}, 0, { -1792,    -96}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x070078A0 - 0x070078E0\nstatic const Vtx intro_seg7_vertex_070078A0[] = {\n    {{{   132,    758,   -370}, 0, { -1664,     32}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{   134,    738,   -321}, 0, { -1600,     64}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{   266,    636,   -298}, 0, { -1344,      0}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{   245,    652,   -270}, 0, { -1376,      0}, {0xaa, 0xaa, 0xaa, 0xff}}},\n};\n\n// 0x070078E0 - 0x07007920\nstatic const Vtx intro_seg7_vertex_070078E0[] = {\n    {{{   171,    531,   -236}, 0, { -1248,    192}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   266,    636,   -298}, 0, { -1344,      0}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   170,    568,   -221}, 0, { -1280,    160}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   245,    652,   -270}, 0, { -1376,      0}, {0xff, 0xff, 0xfe, 0xff}}},\n};\n\n// 0x07007920 - 0x07007960\nstatic const Vtx intro_seg7_vertex_07007920[] = {\n    {{{   170,    568,   -221}, 0, { -1280,    160}, {0xa7, 0x91, 0x7b, 0xff}}},\n    {{{    61,    631,   -258}, 0, { -1472,    288}, {0xa7, 0x91, 0x7b, 0xff}}},\n    {{{   171,    531,   -236}, 0, { -1248,    192}, {0xa7, 0x91, 0x7b, 0xff}}},\n    {{{    32,    607,   -281}, 0, { -1472,    320}, {0xa7, 0x91, 0x7b, 0xff}}},\n};\n\n// 0x07007960 - 0x070079A0\nstatic const Vtx intro_seg7_vertex_07007960[] = {\n    {{{    61,    631,   -258}, 0, { -1472,    288}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   134,    738,   -321}, 0, { -1600,     64}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{    32,    607,   -281}, 0, { -1472,    320}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   132,    758,   -370}, 0, { -1664,     32}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x070079A0 - 0x070079E0\nstatic const Vtx intro_seg7_vertex_070079A0[] = {\n    {{{   256,    545,   -245}, 0, { -1216,     64}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{    83,    596,   -274}, 0, { -1440,    256}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{   224,    552,   -211}, 0, { -1216,     96}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{    89,    593,   -236}, 0, { -1376,    256}, {0xaa, 0xaa, 0xaa, 0xff}}},\n};\n\n// 0x070079E0 - 0x07007A20\nstatic const Vtx intro_seg7_vertex_070079E0[] = {\n    {{{   134,    336,   -121}, 0, {  -960,    416}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   256,    545,   -245}, 0, { -1216,     64}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   126,    383,   -111}, 0, {  -992,    416}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   224,    552,   -211}, 0, { -1216,     96}, {0xff, 0xff, 0xfe, 0xff}}},\n};\n\n// 0x07007A20 - 0x07007A60\nstatic const Vtx intro_seg7_vertex_07007A20[] = {\n    {{{   134,    336,   -121}, 0, {  -960,    416}, {0xa7, 0x91, 0x7b, 0xff}}},\n    {{{   126,    383,   -111}, 0, {  -992,    416}, {0xa7, 0x91, 0x7b, 0xff}}},\n    {{{   -55,    465,   -197}, 0, { -1312,    576}, {0xa7, 0x91, 0x7b, 0xff}}},\n    {{{   -28,    486,   -172}, 0, { -1312,    544}, {0xa7, 0x91, 0x7b, 0xff}}},\n};\n\n// 0x07007A60 - 0x07007AA0\nstatic const Vtx intro_seg7_vertex_07007A60[] = {\n    {{{   -55,    465,   -197}, 0, { -1312,    576}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   -28,    486,   -172}, 0, { -1312,    544}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{    83,    596,   -274}, 0, { -1440,    256}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{    89,    593,   -236}, 0, { -1376,    256}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n#else\n\n// 0x07000000 - 0x07000100\nstatic const Vtx intro_seg7_vertex_07000000[] = {\n    {{{   498,    -74,     90}, 0, {   760,    796}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{   617,   -184,    153}, 0, {   816,    876}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{   660,    -62,     83}, 0, {   830,    778}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{   918,   -126,    120}, 0, {   946,    818}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{   811,     23,     33}, 0, {   894,    706}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{   765,    -44,     73}, 0, {   876,    760}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{   969,     83,      0}, 0, {   962,    654}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{   790,    200,    -68}, 0, {   878,    570}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{   699,    102,    -12}, 0, {   842,    650}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{   765,    -44,     73}, 0, {   876,    760}, {0x1f, 0xc0, 0x00, 0xff}}},\n    {{{   811,      2,     -1}, 0, {   894,    706}, {0x1f, 0xc0, 0x00, 0xff}}},\n    {{{   811,     23,     33}, 0, {   894,    706}, {0x1f, 0xc0, 0x00, 0xff}}},\n    {{{   765,    -65,     37}, 0, {   876,    760}, {0x1f, 0xc0, 0x00, 0xff}}},\n    {{{   615,    199,    -68}, 0, {   802,    578}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{   495,    137,    -32}, 0, {   750,    630}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{   611,     31,     29}, 0, {   806,    708}, {0x00, 0xf1, 0x00, 0xff}}},\n};\n\n// 0x07000100 - 0x070001F0\nstatic const Vtx intro_seg7_vertex_07000100[] = {\n    {{{   611,     31,     29}, 0, {   806,    708}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{   699,    103,    -12}, 0, {   842,    650}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{   790,    200,    -68}, 0, {   878,    570}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{   615,    199,    -68}, 0, {   802,    578}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{  -378,    -82,    144}, 0, {   384,    856}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{  -164,   -154,    185}, 0, {   480,    902}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{  -354,    312,    -83}, 0, {   380,    550}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{  -391,     31,     78}, 0, {   374,    768}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{  -570,     87,     46}, 0, {   292,    734}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{  -579,    -19,    108}, 0, {   292,    816}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{  -370,   -153,    185}, 0, {   390,    912}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{  -828,    -32,    115}, 0, {   184,    836}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{  -527,    344,   -102}, 0, {   304,    532}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{  -656,    -91,    149}, 0, {   262,    876}, {0x00, 0xf1, 0x00, 0xff}}},\n    {{{  -448,    249,    -47}, 0, {   342,    602}, {0x00, 0xf1, 0x00, 0xff}}},\n};\n\n// 0x070001F0 - 0x070002F0\nstatic const Vtx intro_seg7_vertex_070001F0[] = {\n    {{{  -944,    243,    -14}, 0, {   124,    638}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -992,    378,    -91}, 0, {    98,    536}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{ -1127,    377,    -91}, 0, {    38,    542}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -742,     15,    117}, 0, {   220,    806}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -717,    337,    -68}, 0, {   220,    556}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -877,    378,    -91}, 0, {   148,    530}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -853,    141,     44}, 0, {   166,    714}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -565,    -59,    160}, 0, {   300,    856}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -737,   -126,    199}, 0, {   228,    916}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -939,    -22,    139}, 0, {   134,    844}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{ -1037,   -143,    209}, 0, {    96,    942}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{ -1060,    134,     48}, 0, {    76,    728}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{ -1234,   -144,    209}, 0, {     8,    950}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -633,    570,   -238}, 0, {   248,    360}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -639,    816,   -380}, 0, {   238,    168}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -687,    451,   -169}, 0, {   230,    454}, {0x65, 0x7f, 0xff, 0xff}}},\n};\n\n// 0x070002F0 - 0x070003E0\nstatic const Vtx intro_seg7_vertex_070002F0[] = {\n    {{{   -12,    706,   -349}, 0, {   518,    216}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   108,    783,   -394}, 0, {   568,    152}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -177,    752,   -376}, 0, {   442,    188}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   -92,    441,   -196}, 0, {   490,    426}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   -24,    627,   -304}, 0, {   514,    278}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{    82,    705,   -349}, 0, {   560,    212}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{     8,    500,   -230}, 0, {   534,    376}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   -23,    588,   -282}, 0, {   516,    308}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   147,    541,   -254}, 0, {   594,    338}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{   183,    482,   -220}, 0, {   612,    382}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{    88,    595,   -285}, 0, {   566,    298}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{    88,    635,   -308}, 0, {   564,    268}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -455,    560,   -232}, 0, {   328,    360}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -568,    747,   -340}, 0, {   272,    220}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -559,    610,   -261}, 0, {   280,    326}, {0x65, 0x7f, 0xff, 0xff}}},\n};\n\n// 0x070003E0 - 0x070004E0\nstatic const Vtx intro_seg7_vertex_070003E0[] = {\n    {{{  -639,    816,   -380}, 0, {   238,    168}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -758,    540,   -221}, 0, {   194,    388}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -687,    451,   -169}, 0, {   230,    454}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -763,    816,   -380}, 0, {   184,    174}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -633,    570,   -238}, 0, {   248,    360}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -455,    560,   -232}, 0, {   328,    360}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -510,    485,   -189}, 0, {   306,    420}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -559,    610,   -261}, 0, {   280,    326}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -480,    764,   -350}, 0, {   310,    202}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -568,    747,   -340}, 0, {   272,    220}, {0x65, 0x7f, 0xff, 0xff}}},\n    {{{  -717,    337,    -68}, 0, {   220,    556}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -565,    -59,    160}, 0, {   300,    856}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -540,    -80,    149}, 0, {   312,    864}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -701,    343,    -95}, 0, {   226,    542}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -737,   -126,    199}, 0, {   228,    916}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -757,   -165,    198}, 0, {   220,    940}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x070004E0 - 0x070005D0\nstatic const Vtx intro_seg7_vertex_070004E0[] = {\n    {{{  -757,   -165,    198}, 0, {   220,    940}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{  -737,   -126,    199}, 0, {   228,    916}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{  -762,     -2,    104}, 0, {   212,    812}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{  -742,     15,    117}, 0, {   220,    806}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{  -762,     -2,    104}, 0, {   212,    812}, {0x18, 0x2b, 0xad, 0xff}}},\n    {{{  -742,     15,    117}, 0, {   220,    806}, {0x18, 0x2b, 0xad, 0xff}}},\n    {{{  -853,    141,     44}, 0, {   166,    714}, {0x18, 0x2b, 0xad, 0xff}}},\n    {{{  -849,     95,     47}, 0, {   170,    740}, {0x18, 0x2b, 0xad, 0xff}}},\n    {{{  -888,    390,   -122}, 0, {   142,    514}, {0x1a, 0x2e, 0xbb, 0xff}}},\n    {{{  -717,    337,    -68}, 0, {   220,    556}, {0x1a, 0x2e, 0xbb, 0xff}}},\n    {{{  -701,    343,    -95}, 0, {   226,    542}, {0x1a, 0x2e, 0xbb, 0xff}}},\n    {{{  -877,    378,    -91}, 0, {   148,    530}, {0x1a, 0x2e, 0xbb, 0xff}}},\n    {{{ -1033,     57,     69}, 0, {    90,    778}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{ -1060,    134,     48}, 0, {    76,    728}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{ -1037,   -143,    209}, 0, {    96,    942}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x070005D0 - 0x070006D0\nstatic const Vtx intro_seg7_vertex_070005D0[] = {\n    {{{ -1015,   -173,    202}, 0, {   106,    956}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{ -1037,   -143,    209}, 0, {    96,    942}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{ -1259,   -174,    203}, 0, {    -2,    968}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{ -1234,   -144,    209}, 0, {     8,    950}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{ -1033,     57,     69}, 0, {    90,    778}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{ -1259,   -174,    203}, 0, {    -2,    968}, {0x10, 0x1c, 0x73, 0xff}}},\n    {{{ -1127,    377,    -91}, 0, {    38,    542}, {0x10, 0x1c, 0x73, 0xff}}},\n    {{{ -1144,    386,   -120}, 0, {    30,    528}, {0x10, 0x1c, 0x73, 0xff}}},\n    {{{ -1234,   -144,    209}, 0, {     8,    950}, {0x10, 0x1c, 0x73, 0xff}}},\n    {{{  -977,    387,   -120}, 0, {   104,    520}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -992,    378,    -91}, 0, {    98,    536}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -941,    285,    -61}, 0, {   122,    598}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -936,    -69,    142}, 0, {   138,    872}, {0x13, 0x50, 0x8c, 0xff}}},\n    {{{  -939,    -22,    139}, 0, {   134,    844}, {0x13, 0x50, 0x8c, 0xff}}},\n    {{{ -1060,    134,     48}, 0, {    76,    728}, {0x13, 0x50, 0x8c, 0xff}}},\n    {{{ -1033,     57,     69}, 0, {    90,    778}, {0x13, 0x50, 0x8c, 0xff}}},\n};\n\n// 0x070006D0 - 0x070007B0\nstatic const Vtx intro_seg7_vertex_070006D0[] = {\n    {{{  -849,     95,     47}, 0, {   170,    740}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -853,    141,     44}, 0, {   166,    714}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -936,    -69,    142}, 0, {   138,    872}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -939,    -22,    139}, 0, {   134,    844}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{ -1144,    386,   -120}, 0, {    30,    528}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{ -1127,    377,    -91}, 0, {    38,    542}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{  -992,    378,    -91}, 0, {    98,    536}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{  -977,    387,   -120}, 0, {   104,    520}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{  -203,    759,   -404}, 0, {   430,    176}, {0x14, 0x23, 0x90, 0xff}}},\n    {{{  -107,    408,   -201}, 0, {   484,    444}, {0x14, 0x23, 0x90, 0xff}}},\n    {{{   -92,    441,   -196}, 0, {   490,    426}, {0x14, 0x23, 0x90, 0xff}}},\n    {{{  -992,    378,    -91}, 0, {    98,    536}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -944,    243,    -14}, 0, {   124,    638}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -941,    285,    -61}, 0, {   122,    598}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x070007B0 - 0x070008A0\nstatic const Vtx intro_seg7_vertex_070007B0[] = {\n    {{{  -941,    285,    -61}, 0, {   122,    598}, {0x10, 0x1c, 0x73, 0xff}}},\n    {{{  -944,    243,    -14}, 0, {   124,    638}, {0x10, 0x1c, 0x73, 0xff}}},\n    {{{  -877,    378,    -91}, 0, {   148,    530}, {0x10, 0x1c, 0x73, 0xff}}},\n    {{{  -888,    390,   -122}, 0, {   142,    514}, {0x10, 0x1c, 0x73, 0xff}}},\n    {{{  -177,    752,   -376}, 0, {   442,    188}, {0x14, 0x23, 0x90, 0xff}}},\n    {{{  -203,    759,   -404}, 0, {   430,    176}, {0x14, 0x23, 0x90, 0xff}}},\n    {{{   -92,    441,   -196}, 0, {   490,    426}, {0x14, 0x23, 0x90, 0xff}}},\n    {{{   108,    783,   -394}, 0, {   568,    152}, {0x14, 0x23, 0x90, 0xff}}},\n    {{{   137,    795,   -425}, 0, {   580,    132}, {0x14, 0x23, 0x90, 0xff}}},\n    {{{   109,    566,   -292}, 0, {   576,    312}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   108,    645,   -338}, 0, {   572,    250}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{    88,    635,   -308}, 0, {   564,    268}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   183,    482,   -220}, 0, {   612,    382}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   157,    554,   -285}, 0, {   598,    320}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   147,    541,   -254}, 0, {   594,    338}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x070008A0 - 0x07000980\nstatic const Vtx intro_seg7_vertex_070008A0[] = {\n    {{{   -92,    441,   -196}, 0, {   490,    426}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   215,    457,   -229}, 0, {   626,    392}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   183,    482,   -220}, 0, {   612,    382}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   157,    554,   -285}, 0, {   598,    320}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -107,    408,   -201}, 0, {   484,    444}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{    82,    705,   -349}, 0, {   560,    212}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   137,    795,   -425}, 0, {   580,    132}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   108,    783,   -394}, 0, {   568,    152}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{    97,    675,   -355}, 0, {   566,    228}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   -12,    706,   -349}, 0, {   518,    216}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{     5,    676,   -356}, 0, {   526,    232}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{    88,    635,   -308}, 0, {   564,    268}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{   108,    645,   -338}, 0, {   572,    250}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{     0,    638,   -334}, 0, {   524,    260}, {0x16, 0x27, 0x9e, 0xff}}},\n};\n\n// 0x07000980 - 0x07000A70\nstatic const Vtx intro_seg7_vertex_07000980[] = {\n    {{{    88,    595,   -285}, 0, {   566,    298}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   109,    566,   -292}, 0, {   576,    312}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{    88,    635,   -308}, 0, {   564,    268}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   -23,    588,   -282}, 0, {   516,    308}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   147,    541,   -254}, 0, {   594,    338}, {0x14, 0x23, 0x90, 0xff}}},\n    {{{   157,    554,   -285}, 0, {   598,    320}, {0x14, 0x23, 0x90, 0xff}}},\n    {{{     8,    500,   -230}, 0, {   534,    376}, {0x14, 0x23, 0x90, 0xff}}},\n    {{{    21,    514,   -262}, 0, {   538,    356}, {0x14, 0x23, 0x90, 0xff}}},\n    {{{   -24,    627,   -304}, 0, {   514,    278}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{     5,    676,   -356}, 0, {   526,    232}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   -12,    706,   -349}, 0, {   518,    216}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{     0,    638,   -334}, 0, {   524,    260}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -763,    816,   -380}, 0, {   184,    174}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{  -783,    825,   -409}, 0, {   174,    160}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{  -779,    523,   -234}, 0, {   186,    394}, {0x12, 0x20, 0x81, 0xff}}},\n};\n\n// 0x07000A70 - 0x07000B60\nstatic const Vtx intro_seg7_vertex_07000A70[] = {\n    {{{    88,    635,   -308}, 0, {   564,    268}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{     0,    638,   -334}, 0, {   524,    260}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{   -24,    627,   -304}, 0, {   514,    278}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{     8,    500,   -230}, 0, {   534,    376}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{     4,    560,   -289}, 0, {   530,    320}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   -23,    588,   -282}, 0, {   516,    308}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{   109,    566,   -292}, 0, {   576,    312}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{    21,    514,   -262}, 0, {   538,    356}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -619,    825,   -409}, 0, {   246,    152}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{  -783,    825,   -409}, 0, {   174,    160}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{  -763,    816,   -380}, 0, {   184,    174}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{  -639,    816,   -380}, 0, {   238,    168}, {0x16, 0x27, 0x9e, 0xff}}},\n    {{{  -633,    570,   -238}, 0, {   248,    360}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -619,    825,   -409}, 0, {   246,    152}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -639,    816,   -380}, 0, {   238,    168}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07000B60 - 0x07000C40\nstatic const Vtx intro_seg7_vertex_07000B60[] = {\n    {{{  -763,    816,   -380}, 0, {   184,    174}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{  -779,    523,   -234}, 0, {   186,    394}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{  -758,    540,   -221}, 0, {   194,    388}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{  -480,    764,   -350}, 0, {   310,    202}, {0x14, 0x23, 0x90, 0xff}}},\n    {{{  -462,    777,   -381}, 0, {   316,    184}, {0x14, 0x23, 0x90, 0xff}}},\n    {{{  -590,    752,   -367}, 0, {   262,    208}, {0x14, 0x23, 0x90, 0xff}}},\n    {{{  -568,    747,   -340}, 0, {   272,    220}, {0x14, 0x23, 0x90, 0xff}}},\n    {{{  -758,    540,   -221}, 0, {   194,    388}, {0x13, 0x50, 0x8c, 0xff}}},\n    {{{  -779,    523,   -234}, 0, {   186,    394}, {0x13, 0x50, 0x8c, 0xff}}},\n    {{{  -695,    420,   -175}, 0, {   226,    470}, {0x13, 0x50, 0x8c, 0xff}}},\n    {{{  -687,    451,   -169}, 0, {   230,    454}, {0x13, 0x50, 0x8c, 0xff}}},\n    {{{  -633,    570,   -238}, 0, {   248,    360}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -613,    593,   -275}, 0, {   256,    332}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -619,    825,   -409}, 0, {   246,    152}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07000C40 - 0x07000D20\nstatic const Vtx intro_seg7_vertex_07000C40[] = {\n    {{{  -590,    752,   -367}, 0, {   262,    208}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{  -580,    611,   -285}, 0, {   270,    318}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{  -559,    610,   -261}, 0, {   280,    326}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{  -568,    747,   -340}, 0, {   272,    220}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{  -613,    593,   -275}, 0, {   256,    332}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{  -633,    570,   -238}, 0, {   248,    360}, {0x12, 0x20, 0x81, 0xff}}},\n    {{{  -498,    458,   -197}, 0, {   312,    432}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -433,    545,   -247}, 0, {   338,    362}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -455,    560,   -232}, 0, {   328,    360}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -510,    485,   -189}, 0, {   306,    420}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -462,    777,   -381}, 0, {   316,    184}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -480,    764,   -350}, 0, {   310,    202}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -687,    451,   -169}, 0, {   230,    454}, {0x20, 0x39, 0xe5, 0xff}}},\n    {{{  -695,    420,   -175}, 0, {   226,    470}, {0x20, 0x39, 0xe5, 0xff}}},\n};\n\n// 0x07000D20 - 0x07000E10\nstatic const Vtx intro_seg7_vertex_07000D20[] = {\n    {{{   969,     83,      0}, 0, {   962,    654}, {0x00, 0x8b, 0x00, 0xff}}},\n    {{{   992,     81,    -23}, 0, {   972,    646}, {0x00, 0x8b, 0x00, 0xff}}},\n    {{{   796,    209,    -97}, 0, {   880,    554}, {0x00, 0x8b, 0x00, 0xff}}},\n    {{{   495,    137,    -32}, 0, {   750,    630}, {0x00, 0x52, 0x00, 0xff}}},\n    {{{   474,    139,    -56}, 0, {   740,    622}, {0x00, 0x52, 0x00, 0xff}}},\n    {{{   498,    -74,     90}, 0, {   760,    796}, {0x00, 0x52, 0x00, 0xff}}},\n    {{{   478,    -93,     77}, 0, {   750,    802}, {0x00, 0x52, 0x00, 0xff}}},\n    {{{   935,   -153,    112}, 0, {   954,    830}, {0x00, 0xba, 0x00, 0xff}}},\n    {{{   992,     81,    -23}, 0, {   972,    646}, {0x00, 0xba, 0x00, 0xff}}},\n    {{{   969,     83,      0}, 0, {   962,    654}, {0x00, 0xba, 0x00, 0xff}}},\n    {{{   918,   -126,    120}, 0, {   946,    818}, {0x00, 0xba, 0x00, 0xff}}},\n    {{{   617,   -184,    153}, 0, {   816,    876}, {0x00, 0xac, 0x00, 0xff}}},\n    {{{   610,   -215,    148}, 0, {   814,    892}, {0x00, 0xac, 0x00, 0xff}}},\n    {{{   935,   -153,    112}, 0, {   954,    830}, {0x00, 0xac, 0x00, 0xff}}},\n    {{{   918,   -126,    120}, 0, {   946,    818}, {0x00, 0xac, 0x00, 0xff}}},\n};\n\n// 0x07000E10 - 0x07000F00\nstatic const Vtx intro_seg7_vertex_07000E10[] = {\n    {{{   699,    103,    -12}, 0, {   842,    650}, {0x00, 0x79, 0x00, 0xff}}},\n    {{{   700,     67,    -15}, 0, {   842,    668}, {0x00, 0x79, 0x00, 0xff}}},\n    {{{   811,     23,     33}, 0, {   894,    706}, {0x00, 0x79, 0x00, 0xff}}},\n    {{{   969,     83,      0}, 0, {   962,    654}, {0x00, 0x8b, 0x00, 0xff}}},\n    {{{   796,    209,    -97}, 0, {   880,    554}, {0x00, 0x8b, 0x00, 0xff}}},\n    {{{   790,    200,    -68}, 0, {   878,    570}, {0x00, 0x8b, 0x00, 0xff}}},\n    {{{   811,     23,     33}, 0, {   894,    706}, {0x00, 0x4b, 0x00, 0xff}}},\n    {{{   783,      8,     18}, 0, {   882,    710}, {0x00, 0x4b, 0x00, 0xff}}},\n    {{{   752,    -37,     45}, 0, {   870,    748}, {0x00, 0x4b, 0x00, 0xff}}},\n    {{{   765,    -44,     73}, 0, {   876,    760}, {0x00, 0x4b, 0x00, 0xff}}},\n    {{{   765,    -44,     73}, 0, {   876,    760}, {0x00, 0x62, 0x00, 0xff}}},\n    {{{   752,    -37,     45}, 0, {   870,    748}, {0x00, 0x62, 0x00, 0xff}}},\n    {{{   671,    -50,     52}, 0, {   834,    762}, {0x00, 0x62, 0x00, 0xff}}},\n    {{{   660,    -62,     83}, 0, {   830,    778}, {0x00, 0x62, 0x00, 0xff}}},\n    {{{   783,      8,     18}, 0, {   882,    710}, {0x00, 0x79, 0x00, 0xff}}},\n};\n\n// 0x07000F00 - 0x07000FF0\nstatic const Vtx intro_seg7_vertex_07000F00[] = {\n    {{{   790,    200,    -68}, 0, {   878,    570}, {0x00, 0x6a, 0x00, 0xff}}},\n    {{{   796,    209,    -97}, 0, {   880,    554}, {0x00, 0x6a, 0x00, 0xff}}},\n    {{{   610,    209,    -97}, 0, {   798,    562}, {0x00, 0x6a, 0x00, 0xff}}},\n    {{{   660,    -62,     83}, 0, {   830,    778}, {0x00, 0xa4, 0x00, 0xff}}},\n    {{{   671,    -50,     52}, 0, {   834,    762}, {0x00, 0xa4, 0x00, 0xff}}},\n    {{{   611,     31,     29}, 0, {   806,    708}, {0x00, 0xa4, 0x00, 0xff}}},\n    {{{   636,     16,     14}, 0, {   816,    712}, {0x00, 0xa4, 0x00, 0xff}}},\n    {{{   498,    -74,     90}, 0, {   760,    796}, {0x00, 0x75, 0x00, 0xff}}},\n    {{{   478,    -93,     77}, 0, {   750,    802}, {0x00, 0x75, 0x00, 0xff}}},\n    {{{   610,   -215,    148}, 0, {   814,    892}, {0x00, 0x75, 0x00, 0xff}}},\n    {{{   617,   -184,    153}, 0, {   816,    876}, {0x00, 0x75, 0x00, 0xff}}},\n    {{{   611,     31,     29}, 0, {   806,    708}, {0x00, 0xbb, 0x00, 0xff}}},\n    {{{   700,     67,    -15}, 0, {   842,    668}, {0x00, 0xbb, 0x00, 0xff}}},\n    {{{   699,    103,    -12}, 0, {   842,    650}, {0x00, 0xbb, 0x00, 0xff}}},\n    {{{   636,     16,     14}, 0, {   816,    712}, {0x00, 0xbb, 0x00, 0xff}}},\n};\n\n// 0x07000FF0 - 0x070010E0\nstatic const Vtx intro_seg7_vertex_07000FF0[] = {\n    {{{  -397,   -107,    135}, 0, {   376,    868}, {0x00, 0x54, 0x00, 0xff}}},\n    {{{  -388,   -183,    179}, 0, {   382,    928}, {0x00, 0x54, 0x00, 0xff}}},\n    {{{  -370,   -153,    185}, 0, {   390,    912}, {0x00, 0x54, 0x00, 0xff}}},\n    {{{   790,    200,    -68}, 0, {   878,    570}, {0x00, 0x6a, 0x00, 0xff}}},\n    {{{   610,    209,    -97}, 0, {   798,    562}, {0x00, 0x6a, 0x00, 0xff}}},\n    {{{   615,    199,    -68}, 0, {   802,    578}, {0x00, 0x6a, 0x00, 0xff}}},\n    {{{   615,    199,    -68}, 0, {   802,    578}, {0x00, 0x54, 0x00, 0xff}}},\n    {{{   610,    209,    -97}, 0, {   798,    562}, {0x00, 0x54, 0x00, 0xff}}},\n    {{{   495,    137,    -32}, 0, {   750,    630}, {0x00, 0x54, 0x00, 0xff}}},\n    {{{   474,    139,    -56}, 0, {   740,    622}, {0x00, 0x54, 0x00, 0xff}}},\n    {{{  -370,   -153,    185}, 0, {   390,    912}, {0x00, 0xa4, 0x00, 0xff}}},\n    {{{  -388,   -183,    179}, 0, {   382,    928}, {0x00, 0xa4, 0x00, 0xff}}},\n    {{{  -164,   -154,    185}, 0, {   480,    902}, {0x00, 0xa4, 0x00, 0xff}}},\n    {{{  -134,   -183,    179}, 0, {   494,    916}, {0x00, 0xa4, 0x00, 0xff}}},\n    {{{  -378,    -82,    144}, 0, {   384,    856}, {0x00, 0x54, 0x00, 0xff}}},\n};\n\n// 0x070010E0 - 0x070011D0\nstatic const Vtx intro_seg7_vertex_070010E0[] = {\n    {{{  -164,   -154,    185}, 0, {   480,    902}, {0x00, 0xa6, 0x00, 0xff}}},\n    {{{  -134,   -183,    179}, 0, {   494,    916}, {0x00, 0xa6, 0x00, 0xff}}},\n    {{{  -354,    312,    -83}, 0, {   380,    550}, {0x00, 0xa6, 0x00, 0xff}}},\n    {{{  -828,    -32,    115}, 0, {   184,    836}, {0x00, 0x8f, 0x00, 0xff}}},\n    {{{  -861,    -51,    103}, 0, {   170,    846}, {0x00, 0x8f, 0x00, 0xff}}},\n    {{{  -651,   -124,    144}, 0, {   264,    892}, {0x00, 0x8f, 0x00, 0xff}}},\n    {{{  -656,    -91,    149}, 0, {   262,    876}, {0x00, 0x8f, 0x00, 0xff}}},\n    {{{  -656,    -91,    149}, 0, {   262,    876}, {0x00, 0xbb, 0x00, 0xff}}},\n    {{{  -573,    -52,    103}, 0, {   296,    834}, {0x00, 0xbb, 0x00, 0xff}}},\n    {{{  -579,    -19,    108}, 0, {   292,    816}, {0x00, 0xbb, 0x00, 0xff}}},\n    {{{  -651,   -124,    144}, 0, {   264,    892}, {0x00, 0xbb, 0x00, 0xff}}},\n    {{{  -579,    -19,    108}, 0, {   292,    816}, {0x00, 0x90, 0x00, 0xff}}},\n    {{{  -573,    -52,    103}, 0, {   296,    834}, {0x00, 0x90, 0x00, 0xff}}},\n    {{{  -397,   -107,    135}, 0, {   376,    868}, {0x00, 0x90, 0x00, 0xff}}},\n    {{{  -378,    -82,    144}, 0, {   384,    856}, {0x00, 0x90, 0x00, 0xff}}},\n};\n\n// 0x070011D0 - 0x070012C0\nstatic const Vtx intro_seg7_vertex_070011D0[] = {\n    {{{  -448,    249,    -47}, 0, {   342,    602}, {0x00, 0x5a, 0x00, 0xff}}},\n    {{{  -420,     50,     43}, 0, {   360,    748}, {0x00, 0x5a, 0x00, 0xff}}},\n    {{{  -391,     31,     78}, 0, {   374,    768}, {0x00, 0x5a, 0x00, 0xff}}},\n    {{{  -134,   -183,    179}, 0, {   494,    916}, {0x00, 0xa6, 0x00, 0xff}}},\n    {{{  -339,    318,   -110}, 0, {   386,    536}, {0x00, 0xa6, 0x00, 0xff}}},\n    {{{  -354,    312,    -83}, 0, {   380,    550}, {0x00, 0xa6, 0x00, 0xff}}},\n    {{{  -391,     31,     78}, 0, {   374,    768}, {0x00, 0x79, 0x00, 0xff}}},\n    {{{  -537,     87,     22}, 0, {   306,    724}, {0x00, 0x79, 0x00, 0xff}}},\n    {{{  -570,     87,     46}, 0, {   292,    734}, {0x00, 0x79, 0x00, 0xff}}},\n    {{{  -420,     50,     43}, 0, {   360,    748}, {0x00, 0x79, 0x00, 0xff}}},\n    {{{  -527,    344,   -102}, 0, {   304,    532}, {0x00, 0x4b, 0x00, 0xff}}},\n    {{{  -536,    356,   -132}, 0, {   298,    516}, {0x00, 0x4b, 0x00, 0xff}}},\n    {{{  -861,    -51,    103}, 0, {   170,    846}, {0x00, 0x4b, 0x00, 0xff}}},\n    {{{  -828,    -32,    115}, 0, {   184,    836}, {0x00, 0x4b, 0x00, 0xff}}},\n    {{{  -457,    194,    -38}, 0, {   338,    638}, {0x00, 0x5a, 0x00, 0xff}}},\n};\n\n// 0x070012C0 - 0x070013C0\nstatic const Vtx intro_seg7_vertex_070012C0[] = {\n    {{{   334,    706,   -391}, 0, {   670,    188}, {0x00, 0xb1, 0x00, 0xff}}},\n    {{{   310,    758,   -397}, 0, {   658,    156}, {0x00, 0xb1, 0x00, 0xff}}},\n    {{{   344,    596,   -327}, 0, {   678,    272}, {0x00, 0xb1, 0x00, 0xff}}},\n    {{{  -570,     87,     46}, 0, {   292,    734}, {0x00, 0xbc, 0x00, 0xff}}},\n    {{{  -457,    194,    -38}, 0, {   338,    638}, {0x00, 0xbc, 0x00, 0xff}}},\n    {{{  -448,    249,    -47}, 0, {   342,    602}, {0x00, 0xbc, 0x00, 0xff}}},\n    {{{  -537,     87,     22}, 0, {   306,    724}, {0x00, 0xbc, 0x00, 0xff}}},\n    {{{  -354,    312,    -83}, 0, {   380,    550}, {0x00, 0x75, 0x00, 0xff}}},\n    {{{  -536,    356,   -132}, 0, {   298,    516}, {0x00, 0x75, 0x00, 0xff}}},\n    {{{  -527,    344,   -102}, 0, {   304,    532}, {0x00, 0x75, 0x00, 0xff}}},\n    {{{  -339,    318,   -110}, 0, {   386,    536}, {0x00, 0x75, 0x00, 0xff}}},\n    {{{   210,    423,   -204}, 0, {   626,    420}, {0x00, 0x54, 0x00, 0xff}}},\n    {{{   175,    795,   -419}, 0, {   596,    134}, {0x00, 0x54, 0x00, 0xff}}},\n    {{{   152,    804,   -447}, 0, {   586,    120}, {0x00, 0x54, 0x00, 0xff}}},\n    {{{   192,    393,   -210}, 0, {   618,    436}, {0x00, 0x54, 0x00, 0xff}}},\n    {{{   324,    598,   -305}, 0, {   670,    280}, {0x00, 0xb1, 0x00, 0xff}}},\n};\n\n// 0x070013C0 - 0x070014A0\nstatic const Vtx intro_seg7_vertex_070013C0[] = {\n    {{{   344,    596,   -327}, 0, {   678,    272}, {0x00, 0x98, 0x00, 0xff}}},\n    {{{   324,    598,   -305}, 0, {   670,    280}, {0x00, 0x98, 0x00, 0xff}}},\n    {{{   342,    578,   -294}, 0, {   678,    294}, {0x00, 0x98, 0x00, 0xff}}},\n    {{{   497,    547,   -299}, 0, {   746,    304}, {0x00, 0x8a, 0x00, 0xff}}},\n    {{{   462,    556,   -281}, 0, {   732,    306}, {0x00, 0x8a, 0x00, 0xff}}},\n    {{{   568,    489,   -242}, 0, {   780,    354}, {0x00, 0x8a, 0x00, 0xff}}},\n    {{{   604,    480,   -260}, 0, {   796,    352}, {0x00, 0x8a, 0x00, 0xff}}},\n    {{{   529,    744,   -413}, 0, {   754,    150}, {0x00, 0xb1, 0x00, 0xff}}},\n    {{{   509,    744,   -389}, 0, {   746,    158}, {0x00, 0xb1, 0x00, 0xff}}},\n    {{{   519,    600,   -306}, 0, {   756,    270}, {0x00, 0xb1, 0x00, 0xff}}},\n    {{{   541,    581,   -318}, 0, {   764,    276}, {0x00, 0xb1, 0x00, 0xff}}},\n    {{{   461,    382,   -203}, 0, {   736,    434}, {0x00, 0x76, 0x00, 0xff}}},\n    {{{   462,    417,   -200}, 0, {   736,    414}, {0x00, 0x76, 0x00, 0xff}}},\n    {{{   336,    532,   -267}, 0, {   676,    330}, {0x00, 0x76, 0x00, 0xff}}},\n};\n\n// 0x070014A0 - 0x07001590\nstatic const Vtx intro_seg7_vertex_070014A0[] = {\n    {{{   604,    480,   -260}, 0, {   796,    352}, {0x00, 0xba, 0x00, 0xff}}},\n    {{{   462,    417,   -200}, 0, {   736,    414}, {0x00, 0xba, 0x00, 0xff}}},\n    {{{   461,    382,   -203}, 0, {   736,    434}, {0x00, 0xba, 0x00, 0xff}}},\n    {{{   568,    489,   -242}, 0, {   780,    354}, {0x00, 0xba, 0x00, 0xff}}},\n    {{{   541,    581,   -318}, 0, {   764,    276}, {0x00, 0xba, 0x00, 0xff}}},\n    {{{   519,    600,   -306}, 0, {   756,    270}, {0x00, 0xba, 0x00, 0xff}}},\n    {{{   497,    547,   -299}, 0, {   746,    304}, {0x00, 0xba, 0x00, 0xff}}},\n    {{{   462,    556,   -281}, 0, {   732,    306}, {0x00, 0xba, 0x00, 0xff}}},\n    {{{   440,    807,   -449}, 0, {   714,    104}, {0x00, 0x8d, 0x00, 0xff}}},\n    {{{   509,    744,   -389}, 0, {   746,    158}, {0x00, 0x8d, 0x00, 0xff}}},\n    {{{   529,    744,   -413}, 0, {   754,    150}, {0x00, 0x8d, 0x00, 0xff}}},\n    {{{   434,    797,   -420}, 0, {   710,    120}, {0x00, 0x8d, 0x00, 0xff}}},\n    {{{   336,    532,   -267}, 0, {   676,    330}, {0x00, 0xb1, 0x00, 0xff}}},\n    {{{   339,    425,   -205}, 0, {   682,    414}, {0x00, 0xb1, 0x00, 0xff}}},\n    {{{   360,    395,   -211}, 0, {   692,    428}, {0x00, 0xb1, 0x00, 0xff}}},\n};\n\n// 0x07001590 - 0x07001670\nstatic const Vtx intro_seg7_vertex_07001590[] = {\n    {{{   461,    382,   -203}, 0, {   736,    434}, {0x00, 0x76, 0x00, 0xff}}},\n    {{{   336,    532,   -267}, 0, {   676,    330}, {0x00, 0x76, 0x00, 0xff}}},\n    {{{   357,    475,   -258}, 0, {   688,    366}, {0x00, 0x76, 0x00, 0xff}}},\n    {{{   344,    596,   -327}, 0, {   678,    272}, {0x00, 0x4c, 0x00, 0xff}}},\n    {{{   444,    663,   -343}, 0, {   720,    224}, {0x00, 0x4c, 0x00, 0xff}}},\n    {{{   411,    652,   -360}, 0, {   706,    226}, {0x00, 0x4c, 0x00, 0xff}}},\n    {{{   342,    578,   -294}, 0, {   678,    294}, {0x00, 0x4c, 0x00, 0xff}}},\n    {{{   411,    652,   -360}, 0, {   706,    226}, {0x00, 0x79, 0x00, 0xff}}},\n    {{{   310,    758,   -397}, 0, {   658,    156}, {0x00, 0x79, 0x00, 0xff}}},\n    {{{   334,    706,   -391}, 0, {   670,    188}, {0x00, 0x79, 0x00, 0xff}}},\n    {{{   444,    663,   -343}, 0, {   720,    224}, {0x00, 0x79, 0x00, 0xff}}},\n    {{{   357,    475,   -258}, 0, {   688,    366}, {0x00, 0xb1, 0x00, 0xff}}},\n    {{{   336,    532,   -267}, 0, {   676,    330}, {0x00, 0xb1, 0x00, 0xff}}},\n    {{{   360,    395,   -211}, 0, {   692,    428}, {0x00, 0xb1, 0x00, 0xff}}},\n};\n\n// 0x07001670 - 0x07001770\nstatic const Vtx intro_seg7_vertex_07001670[] = {\n    {{{   152,    804,   -447}, 0, {   586,    120}, {0x00, 0x6a, 0x00, 0xff}}},\n    {{{   434,    797,   -420}, 0, {   710,    120}, {0x00, 0x6a, 0x00, 0xff}}},\n    {{{   440,    807,   -449}, 0, {   714,    104}, {0x00, 0x6a, 0x00, 0xff}}},\n    {{{   175,    795,   -419}, 0, {   596,    134}, {0x00, 0x6a, 0x00, 0xff}}},\n    {{{   360,    395,   -211}, 0, {   692,    428}, {0x00, 0xa4, 0x00, 0xff}}},\n    {{{   339,    425,   -205}, 0, {   682,    414}, {0x00, 0xa4, 0x00, 0xff}}},\n    {{{   210,    423,   -204}, 0, {   626,    420}, {0x00, 0xa4, 0x00, 0xff}}},\n    {{{   192,    393,   -210}, 0, {   618,    436}, {0x00, 0xa4, 0x00, 0xff}}},\n    {{{   324,    598,   -305}, 0, {   670,    280}, {0x2f, 0xff, 0x2f, 0xff}}},\n    {{{   339,    425,   -205}, 0, {   682,    414}, {0x2f, 0xff, 0x2f, 0xff}}},\n    {{{   336,    532,   -267}, 0, {   676,    330}, {0x2f, 0xff, 0x2f, 0xff}}},\n    {{{   342,    578,   -294}, 0, {   678,    294}, {0x2f, 0xff, 0x2f, 0xff}}},\n    {{{   310,    758,   -397}, 0, {   658,    156}, {0x2f, 0xff, 0x2f, 0xff}}},\n    {{{   210,    423,   -204}, 0, {   626,    420}, {0x2f, 0xff, 0x2f, 0xff}}},\n    {{{   175,    795,   -419}, 0, {   596,    134}, {0x2f, 0xff, 0x2f, 0xff}}},\n    {{{   434,    797,   -420}, 0, {   710,    120}, {0x2f, 0xff, 0x2f, 0xff}}},\n};\n\n// 0x07001770 - 0x07001850\nstatic const Vtx intro_seg7_vertex_07001770[] = {\n    {{{   434,    797,   -420}, 0, {   710,    120}, {0x2f, 0xff, 0x2f, 0xff}}},\n    {{{   444,    663,   -343}, 0, {   720,    224}, {0x2f, 0xff, 0x2f, 0xff}}},\n    {{{   519,    600,   -306}, 0, {   756,    270}, {0x2f, 0xff, 0x2f, 0xff}}},\n    {{{   310,    758,   -397}, 0, {   658,    156}, {0x2f, 0xff, 0x2f, 0xff}}},\n    {{{   509,    744,   -389}, 0, {   746,    158}, {0x2f, 0xff, 0x2f, 0xff}}},\n    {{{   342,    578,   -294}, 0, {   678,    294}, {0x2f, 0xff, 0x2f, 0xff}}},\n    {{{   462,    417,   -200}, 0, {   736,    414}, {0x2f, 0xff, 0x2f, 0xff}}},\n    {{{   568,    489,   -242}, 0, {   780,    354}, {0x2f, 0xff, 0x2f, 0xff}}},\n    {{{   462,    556,   -281}, 0, {   732,    306}, {0x2f, 0xff, 0x2f, 0xff}}},\n    {{{   336,    532,   -267}, 0, {   676,    330}, {0x2f, 0xff, 0x2f, 0xff}}},\n    {{{   256,   -197,    150}, 0, {   666,    898}, {0x62, 0x00, 0x00, 0xff}}},\n    {{{   277,   -168,    157}, 0, {   674,    882}, {0x62, 0x00, 0x00, 0xff}}},\n    {{{   284,    326,   -128}, 0, {   660,    498}, {0x62, 0x00, 0x00, 0xff}}},\n    {{{   263,    335,   -157}, 0, {   652,    484}, {0x62, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001850 - 0x07001950\nstatic const Vtx intro_seg7_vertex_07001850[] = {\n    {{{   496,   -198,    151}, 0, {   772,    888}, {0xc5, 0x00, 0x00, 0xff}}},\n    {{{   277,   -168,    157}, 0, {   674,    882}, {0xc5, 0x00, 0x00, 0xff}}},\n    {{{   256,   -197,    150}, 0, {   666,    898}, {0xc5, 0x00, 0x00, 0xff}}},\n    {{{   476,   -168,    157}, 0, {   762,    874}, {0xc5, 0x00, 0x00, 0xff}}},\n    {{{   437,    336,   -157}, 0, {   728,    476}, {0xd4, 0x00, 0x00, 0xff}}},\n    {{{   476,   -168,    157}, 0, {   762,    874}, {0xd4, 0x00, 0x00, 0xff}}},\n    {{{   496,   -198,    151}, 0, {   772,    888}, {0xd4, 0x00, 0x00, 0xff}}},\n    {{{   437,    336,   -157}, 0, {   728,    476}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{   417,    326,   -128}, 0, {   720,    492}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{   476,   -168,    157}, 0, {   762,    874}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{ -1043,    585,   -270}, 0, {    68,    358}, {0x6b, 0x00, 0x00, 0xff}}},\n    {{{ -1182,    531,   -239}, 0, {     8,    406}, {0x6b, 0x00, 0x00, 0xff}}},\n    {{{ -1140,    536,   -218}, 0, {    26,    408}, {0x6b, 0x00, 0x00, 0xff}}},\n    {{{   263,    335,   -157}, 0, {   652,    484}, {0x80, 0x00, 0x00, 0xff}}},\n    {{{   284,    326,   -128}, 0, {   660,    498}, {0x80, 0x00, 0x00, 0xff}}},\n    {{{   437,    336,   -157}, 0, {   728,    476}, {0x80, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001950 - 0x07001A30\nstatic const Vtx intro_seg7_vertex_07001950[] = {\n    {{{   284,    326,   -128}, 0, {   660,    498}, {0x80, 0x00, 0x00, 0xff}}},\n    {{{   417,    326,   -128}, 0, {   720,    492}, {0x80, 0x00, 0x00, 0xff}}},\n    {{{   437,    336,   -157}, 0, {   728,    476}, {0x80, 0x00, 0x00, 0xff}}},\n    {{{ -1027,    832,   -389}, 0, {    66,    174}, {0x5e, 0x00, 0x00, 0xff}}},\n    {{{ -1036,    841,   -418}, 0, {    62,    158}, {0x5e, 0x00, 0x00, 0xff}}},\n    {{{ -1159,    713,   -320}, 0, {    12,    272}, {0x5e, 0x00, 0x00, 0xff}}},\n    {{{ -1190,    702,   -337}, 0, {    -2,    274}, {0x5e, 0x00, 0x00, 0xff}}},\n    {{{ -1159,    713,   -320}, 0, {    12,    272}, {0x93, 0x00, 0x00, 0xff}}},\n    {{{ -1043,    585,   -270}, 0, {    68,    358}, {0x93, 0x00, 0x00, 0xff}}},\n    {{{ -1004,    589,   -249}, 0, {    84,    360}, {0x93, 0x00, 0x00, 0xff}}},\n    {{{ -1190,    702,   -337}, 0, {    -2,    274}, {0x93, 0x00, 0x00, 0xff}}},\n    {{{ -1030,    702,   -314}, 0, {    70,    274}, {0xe0, 0x00, 0x00, 0xff}}},\n    {{{  -946,    728,   -353}, 0, {   104,    242}, {0xe0, 0x00, 0x00, 0xff}}},\n    {{{  -948,    761,   -348}, 0, {   104,    224}, {0xe0, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001A30 - 0x07001B10\nstatic const Vtx intro_seg7_vertex_07001A30[] = {\n    {{{ -1004,    589,   -249}, 0, {    84,    360}, {0x6b, 0x00, 0x00, 0xff}}},\n    {{{ -1043,    585,   -270}, 0, {    68,    358}, {0x6b, 0x00, 0x00, 0xff}}},\n    {{{ -1140,    536,   -218}, 0, {    26,    408}, {0x6b, 0x00, 0x00, 0xff}}},\n    {{{ -1140,    536,   -218}, 0, {    26,    408}, {0x99, 0x00, 0x00, 0xff}}},\n    {{{ -1182,    531,   -239}, 0, {     8,    406}, {0x99, 0x00, 0x00, 0xff}}},\n    {{{ -1027,    459,   -173}, 0, {    78,    462}, {0x99, 0x00, 0x00, 0xff}}},\n    {{{ -1030,    426,   -179}, 0, {    78,    480}, {0x99, 0x00, 0x00, 0xff}}},\n    {{{  -868,    831,   -389}, 0, {   136,    166}, {0x80, 0x00, 0x00, 0xff}}},\n    {{{  -861,    841,   -418}, 0, {   138,    152}, {0x80, 0x00, 0x00, 0xff}}},\n    {{{ -1036,    841,   -418}, 0, {    62,    158}, {0x80, 0x00, 0x00, 0xff}}},\n    {{{ -1027,    832,   -389}, 0, {    66,    174}, {0x80, 0x00, 0x00, 0xff}}},\n    {{{ -1030,    702,   -314}, 0, {    70,    274}, {0xe0, 0x00, 0x00, 0xff}}},\n    {{{  -989,    697,   -335}, 0, {    88,    268}, {0xe0, 0x00, 0x00, 0xff}}},\n    {{{  -946,    728,   -353}, 0, {   104,    242}, {0xe0, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001B10 - 0x07001C00\nstatic const Vtx intro_seg7_vertex_07001B10[] = {\n    {{{  -814,    618,   -265}, 0, {   168,    330}, {0x99, 0x00, 0x00, 0xff}}},\n    {{{  -786,    618,   -289}, 0, {   180,    322}, {0x99, 0x00, 0x00, 0xff}}},\n    {{{ -1030,    702,   -314}, 0, {    70,    274}, {0x99, 0x00, 0x00, 0xff}}},\n    {{{  -948,    761,   -348}, 0, {   104,    224}, {0xa1, 0x00, 0x00, 0xff}}},\n    {{{  -946,    728,   -353}, 0, {   104,    242}, {0xa1, 0x00, 0x00, 0xff}}},\n    {{{  -869,    717,   -323}, 0, {   140,    256}, {0xa1, 0x00, 0x00, 0xff}}},\n    {{{  -867,    683,   -327}, 0, {   142,    274}, {0xa1, 0x00, 0x00, 0xff}}},\n    {{{ -1027,    459,   -173}, 0, {    78,    462}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{ -1030,    426,   -179}, 0, {    78,    480}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{  -846,    489,   -215}, 0, {   158,    424}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{  -862,    515,   -206}, 0, {   150,    412}, {0xd7, 0x00, 0x00, 0xff}}},\n    {{{  -795,    776,   -356}, 0, {   170,    208}, {0xac, 0x00, 0x00, 0xff}}},\n    {{{  -762,    766,   -374}, 0, {   184,    206}, {0xac, 0x00, 0x00, 0xff}}},\n    {{{  -861,    841,   -418}, 0, {   138,    152}, {0xac, 0x00, 0x00, 0xff}}},\n    {{{  -868,    831,   -389}, 0, {   136,    166}, {0xac, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001C00 - 0x07001CE0\nstatic const Vtx intro_seg7_vertex_07001C00[] = {\n    {{{  -862,    515,   -206}, 0, {   150,    412}, {0xe3, 0x00, 0x00, 0xff}}},\n    {{{  -786,    618,   -289}, 0, {   180,    322}, {0xe3, 0x00, 0x00, 0xff}}},\n    {{{  -814,    618,   -265}, 0, {   168,    330}, {0xe3, 0x00, 0x00, 0xff}}},\n    {{{  -786,    618,   -289}, 0, {   180,    322}, {0x99, 0x00, 0x00, 0xff}}},\n    {{{  -989,    697,   -335}, 0, {    88,    268}, {0x99, 0x00, 0x00, 0xff}}},\n    {{{ -1030,    702,   -314}, 0, {    70,    274}, {0x99, 0x00, 0x00, 0xff}}},\n    {{{  -869,    717,   -323}, 0, {   140,    256}, {0xe3, 0x00, 0x00, 0xff}}},\n    {{{  -762,    766,   -374}, 0, {   184,    206}, {0xe3, 0x00, 0x00, 0xff}}},\n    {{{  -795,    776,   -356}, 0, {   170,    208}, {0xe3, 0x00, 0x00, 0xff}}},\n    {{{  -867,    683,   -327}, 0, {   142,    274}, {0xe3, 0x00, 0x00, 0xff}}},\n    {{{  -846,    489,   -215}, 0, {   158,    424}, {0xe3, 0x00, 0x00, 0xff}}},\n    {{{ -1004,    589,   -249}, 0, {    84,    360}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{ -1027,    459,   -173}, 0, {    78,    462}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -862,    515,   -206}, 0, {   150,    412}, {0xff, 0x2f, 0x2f, 0xff}}},\n};\n\n// 0x07001CE0 - 0x07001DE0\nstatic const Vtx intro_seg7_vertex_07001CE0[] = {\n    {{{   476,   -168,    157}, 0, {   762,    874}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   417,    326,   -128}, 0, {   720,    492}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   284,    326,   -128}, 0, {   660,    498}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   277,   -168,    157}, 0, {   674,    882}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -948,    761,   -348}, 0, {   104,    224}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -869,    717,   -323}, 0, {   140,    256}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -795,    776,   -356}, 0, {   170,    208}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{ -1027,    832,   -389}, 0, {    66,    174}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{ -1159,    713,   -320}, 0, {    12,    272}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{ -1030,    702,   -314}, 0, {    70,    274}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -868,    831,   -389}, 0, {   136,    166}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{ -1004,    589,   -249}, 0, {    84,    360}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -814,    618,   -265}, 0, {   168,    330}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  -862,    515,   -206}, 0, {   150,    412}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{ -1140,    536,   -218}, 0, {    26,    408}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{ -1027,    459,   -173}, 0, {    78,    462}, {0xff, 0x2f, 0x2f, 0xff}}},\n};\n\n// 0x07001DE0 - 0x07001ED0\nstatic const Vtx intro_seg7_vertex_07001DE0[] = {\n    {{{   105,     33,     48}, 0, {   592,    736}, {0xba, 0xba, 0x00, 0xff}}},\n    {{{   142,     22,     30}, 0, {   608,    736}, {0xba, 0xba, 0x00, 0xff}}},\n    {{{   230,     73,      1}, 0, {   646,    692}, {0xba, 0xba, 0x00, 0xff}}},\n    {{{   122,   -166,    163}, 0, {   606,    890}, {0xba, 0xba, 0x00, 0xff}}},\n    {{{   120,   -201,    160}, 0, {   606,    910}, {0xba, 0xba, 0x00, 0xff}}},\n    {{{   260,    -69,    107}, 0, {   664,    808}, {0xba, 0xba, 0x00, 0xff}}},\n    {{{   295,    -78,     89}, 0, {   680,    806}, {0xba, 0xba, 0x00, 0xff}}},\n    {{{   260,    -69,    107}, 0, {   664,    808}, {0x8b, 0x8b, 0x00, 0xff}}},\n    {{{   295,    -78,     89}, 0, {   680,    806}, {0x8b, 0x8b, 0x00, 0xff}}},\n    {{{   142,     22,     30}, 0, {   608,    736}, {0x8b, 0x8b, 0x00, 0xff}}},\n    {{{   105,     33,     48}, 0, {   592,    736}, {0x8b, 0x8b, 0x00, 0xff}}},\n    {{{   -38,    -26,     82}, 0, {   532,    788}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{   -19,    -79,     89}, 0, {   540,    822}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{   120,   -201,    160}, 0, {   606,    910}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{   122,   -166,    163}, 0, {   606,    890}, {0x6b, 0x6b, 0x00, 0xff}}},\n};\n\n// 0x07001ED0 - 0x07001FD0\nstatic const Vtx intro_seg7_vertex_07001ED0[] = {\n    {{{   101,    165,    -28}, 0, {   586,    634}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   -24,     75,      0}, 0, {   534,    700}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   -22,     62,     31}, 0, {   534,    720}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   -42,   -140,    148}, 0, {   534,    878}, {0xb6, 0xb6, 0x00, 0xff}}},\n    {{{   -22,   -169,    141}, 0, {   542,    890}, {0xb6, 0xb6, 0x00, 0xff}}},\n    {{{   -19,    -79,     89}, 0, {   540,    822}, {0xb6, 0xb6, 0x00, 0xff}}},\n    {{{   -38,    -26,     82}, 0, {   532,    788}, {0xb6, 0xb6, 0x00, 0xff}}},\n    {{{  -199,   -145,    151}, 0, {   464,    888}, {0xa4, 0xa4, 0x00, 0xff}}},\n    {{{  -220,   -176,    145}, 0, {   456,    904}, {0xa4, 0xa4, 0x00, 0xff}}},\n    {{{   -22,   -169,    141}, 0, {   542,    890}, {0xa4, 0xa4, 0x00, 0xff}}},\n    {{{   -42,   -140,    148}, 0, {   534,    878}, {0xa4, 0xa4, 0x00, 0xff}}},\n    {{{   209,     94,     12}, 0, {   636,    684}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{   230,     73,      1}, 0, {   646,    692}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{   206,    268,    -87}, 0, {   628,    550}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{   226,    271,   -113}, 0, {   638,    538}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{    68,    154,    -45}, 0, {   572,    636}, {0x43, 0x43, 0x00, 0xff}}},\n};\n\n// 0x07001FD0 - 0x070020B0\nstatic const Vtx intro_seg7_vertex_07001FD0[] = {\n    {{{   -22,     62,     31}, 0, {   534,    720}, {0x8b, 0x8b, 0x00, 0xff}}},\n    {{{   -24,     75,      0}, 0, {   534,    700}, {0x8b, 0x8b, 0x00, 0xff}}},\n    {{{   -45,     80,     20}, 0, {   524,    706}, {0x8b, 0x8b, 0x00, 0xff}}},\n    {{{   206,    268,    -87}, 0, {   628,    550}, {0x81, 0x81, 0x00, 0xff}}},\n    {{{   226,    271,   -113}, 0, {   638,    538}, {0x81, 0x81, 0x00, 0xff}}},\n    {{{    12,    362,   -165}, 0, {   540,    476}, {0x81, 0x81, 0x00, 0xff}}},\n    {{{     8,    353,   -136}, 0, {   538,    492}, {0x81, 0x81, 0x00, 0xff}}},\n    {{{   -43,    272,    -89}, 0, {   518,    558}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   -23,    222,    -84}, 0, {   528,    588}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{    68,    154,    -45}, 0, {   572,    636}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   101,    165,    -28}, 0, {   586,    634}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  -399,    424,   -165}, 0, {   356,    458}, {0xa4, 0xa4, 0x00, 0xff}}},\n    {{{  -419,    394,   -172}, 0, {   348,    474}, {0xa4, 0xa4, 0x00, 0xff}}},\n    {{{  -283,    394,   -171}, 0, {   408,    470}, {0xa4, 0xa4, 0x00, 0xff}}},\n};\n\n// 0x070020B0 - 0x070021A0\nstatic const Vtx intro_seg7_vertex_070020B0[] = {\n    {{{   -24,     75,      0}, 0, {   534,    700}, {0xb6, 0xb6, 0x00, 0xff}}},\n    {{{   -23,    222,    -84}, 0, {   528,    588}, {0xb6, 0xb6, 0x00, 0xff}}},\n    {{{   -43,    272,    -89}, 0, {   518,    558}, {0xb6, 0xb6, 0x00, 0xff}}},\n    {{{   -45,     80,     20}, 0, {   524,    706}, {0xb6, 0xb6, 0x00, 0xff}}},\n    {{{  -198,    352,   -136}, 0, {   448,    502}, {0x51, 0x51, 0x00, 0xff}}},\n    {{{  -218,    362,   -165}, 0, {   438,    488}, {0x51, 0x51, 0x00, 0xff}}},\n    {{{  -220,   -176,    145}, 0, {   456,    904}, {0x51, 0x51, 0x00, 0xff}}},\n    {{{  -199,   -145,    151}, 0, {   464,    888}, {0x51, 0x51, 0x00, 0xff}}},\n    {{{     8,    353,   -136}, 0, {   538,    492}, {0x6a, 0x6a, 0x00, 0xff}}},\n    {{{    12,    362,   -165}, 0, {   540,    476}, {0x6a, 0x6a, 0x00, 0xff}}},\n    {{{  -218,    362,   -165}, 0, {   438,    488}, {0x6a, 0x6a, 0x00, 0xff}}},\n    {{{  -198,    352,   -136}, 0, {   448,    502}, {0x6a, 0x6a, 0x00, 0xff}}},\n    {{{  -132,    599,   -266}, 0, {   468,    312}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{  -111,    583,   -281}, 0, {   478,    316}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{  -126,    768,   -388}, 0, {   466,    172}, {0xb1, 0xb1, 0x00, 0xff}}},\n};\n\n// 0x070021A0 - 0x07002280\nstatic const Vtx intro_seg7_vertex_070021A0[] = {\n    {{{  -399,    424,   -165}, 0, {   356,    458}, {0xa4, 0xa4, 0x00, 0xff}}},\n    {{{  -283,    394,   -171}, 0, {   408,    470}, {0xa4, 0xa4, 0x00, 0xff}}},\n    {{{  -303,    423,   -165}, 0, {   398,    454}, {0xa4, 0xa4, 0x00, 0xff}}},\n    {{{  -400,    811,   -389}, 0, {   342,    158}, {0x51, 0x51, 0x00, 0xff}}},\n    {{{  -419,    394,   -172}, 0, {   348,    474}, {0x51, 0x51, 0x00, 0xff}}},\n    {{{  -399,    424,   -165}, 0, {   356,    458}, {0x51, 0x51, 0x00, 0xff}}},\n    {{{  -421,    820,   -418}, 0, {   334,    144}, {0x51, 0x51, 0x00, 0xff}}},\n    {{{  -145,    766,   -363}, 0, {   456,    182}, {0x83, 0x83, 0x00, 0xff}}},\n    {{{  -126,    768,   -388}, 0, {   466,    172}, {0x83, 0x83, 0x00, 0xff}}},\n    {{{  -238,    810,   -388}, 0, {   414,    152}, {0x83, 0x83, 0x00, 0xff}}},\n    {{{  -233,    819,   -417}, 0, {   416,    138}, {0x83, 0x83, 0x00, 0xff}}},\n    {{{  -132,    599,   -266}, 0, {   468,    312}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{  -126,    768,   -388}, 0, {   466,    172}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{  -145,    766,   -363}, 0, {   456,    182}, {0xb1, 0xb1, 0x00, 0xff}}},\n};\n\n// 0x07002280 - 0x07002370\nstatic const Vtx intro_seg7_vertex_07002280[] = {\n    {{{  -310,    724,   -338}, 0, {   386,    222}, {0xa1, 0xa1, 0x00, 0xff}}},\n    {{{  -289,    690,   -343}, 0, {   396,    240}, {0xa1, 0xa1, 0x00, 0xff}}},\n    {{{  -215,    678,   -336}, 0, {   428,    246}, {0xa1, 0xa1, 0x00, 0xff}}},\n    {{{  -206,    503,   -211}, 0, {   438,    388}, {0xbc, 0xbc, 0x00, 0xff}}},\n    {{{  -196,    474,   -218}, 0, {   444,    404}, {0xbc, 0xbc, 0x00, 0xff}}},\n    {{{  -132,    599,   -266}, 0, {   468,    312}, {0xbc, 0xbc, 0x00, 0xff}}},\n    {{{  -111,    583,   -281}, 0, {   478,    316}, {0xbc, 0xbc, 0x00, 0xff}}},\n    {{{  -238,    810,   -388}, 0, {   414,    152}, {0x6a, 0x6a, 0x00, 0xff}}},\n    {{{  -233,    819,   -417}, 0, {   416,    138}, {0x6a, 0x6a, 0x00, 0xff}}},\n    {{{  -400,    811,   -389}, 0, {   342,    158}, {0x6a, 0x6a, 0x00, 0xff}}},\n    {{{  -421,    820,   -418}, 0, {   334,    144}, {0x6a, 0x6a, 0x00, 0xff}}},\n    {{{  -189,    704,   -327}, 0, {   440,    232}, {0x4c, 0x4c, 0x00, 0xff}}},\n    {{{  -215,    678,   -336}, 0, {   428,    246}, {0x4c, 0x4c, 0x00, 0xff}}},\n    {{{  -235,    614,   -299}, 0, {   422,    296}, {0x4c, 0x4c, 0x00, 0xff}}},\n    {{{  -219,    607,   -271}, 0, {   430,    310}, {0x4c, 0x4c, 0x00, 0xff}}},\n};\n\n// 0x07002370 - 0x07002460\nstatic const Vtx intro_seg7_vertex_07002370[] = {\n    {{{  -304,    593,   -263}, 0, {   392,    324}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{  -284,    606,   -294}, 0, {   400,    304}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{  -289,    690,   -343}, 0, {   396,    240}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{  -310,    724,   -338}, 0, {   386,    222}, {0xa1, 0xa1, 0x00, 0xff}}},\n    {{{  -215,    678,   -336}, 0, {   428,    246}, {0xa1, 0xa1, 0x00, 0xff}}},\n    {{{  -189,    704,   -327}, 0, {   440,    232}, {0xa1, 0xa1, 0x00, 0xff}}},\n    {{{  -283,    473,   -218}, 0, {   406,    408}, {0xa4, 0xa4, 0x00, 0xff}}},\n    {{{  -196,    474,   -218}, 0, {   444,    404}, {0xa4, 0xa4, 0x00, 0xff}}},\n    {{{  -206,    503,   -211}, 0, {   438,    388}, {0xa4, 0xa4, 0x00, 0xff}}},\n    {{{  -303,    503,   -211}, 0, {   396,    394}, {0xa4, 0xa4, 0x00, 0xff}}},\n    {{{  -219,    607,   -271}, 0, {   430,    310}, {0x62, 0x62, 0x00, 0xff}}},\n    {{{  -235,    614,   -299}, 0, {   422,    296}, {0x62, 0x62, 0x00, 0xff}}},\n    {{{  -304,    593,   -263}, 0, {   392,    324}, {0x62, 0x62, 0x00, 0xff}}},\n    {{{  -284,    606,   -294}, 0, {   400,    304}, {0x62, 0x62, 0x00, 0xff}}},\n    {{{  -310,    724,   -338}, 0, {   386,    222}, {0xb1, 0xb1, 0x00, 0xff}}},\n};\n\n// 0x07002460 - 0x07002560\nstatic const Vtx intro_seg7_vertex_07002460[] = {\n    {{{  -303,    423,   -165}, 0, {   398,    454}, {0xb6, 0xb6, 0x00, 0xff}}},\n    {{{  -283,    394,   -171}, 0, {   408,    470}, {0xb6, 0xb6, 0x00, 0xff}}},\n    {{{  -283,    473,   -218}, 0, {   406,    408}, {0xb6, 0xb6, 0x00, 0xff}}},\n    {{{  -303,    503,   -211}, 0, {   396,    394}, {0xb1, 0xb1, 0x00, 0xff}}},\n    {{{  -198,    352,   -136}, 0, {   448,    502}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   -43,    272,    -89}, 0, {   518,    558}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{     8,    353,   -136}, 0, {   538,    492}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   122,   -166,    163}, 0, {   606,    890}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   105,     33,     48}, 0, {   592,    736}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   -38,    -26,     82}, 0, {   532,    788}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   260,    -69,    107}, 0, {   664,    808}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   101,    165,    -28}, 0, {   586,    634}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   209,     94,     12}, 0, {   636,    684}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   -22,     62,     31}, 0, {   534,    720}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   -45,     80,     20}, 0, {   524,    706}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   -42,   -140,    148}, 0, {   534,    878}, {0xff, 0xff, 0x39, 0xff}}},\n};\n\n// 0x07002560 - 0x07002660\nstatic const Vtx intro_seg7_vertex_07002560[] = {\n    {{{   101,    165,    -28}, 0, {   586,    634}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   206,    268,    -87}, 0, {   628,    550}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{     8,    353,   -136}, 0, {   538,    492}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   -43,    272,    -89}, 0, {   518,    558}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   209,     94,     12}, 0, {   636,    684}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  -198,    352,   -136}, 0, {   448,    502}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   -45,     80,     20}, 0, {   524,    706}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  -199,   -145,    151}, 0, {   464,    888}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   -42,   -140,    148}, 0, {   534,    878}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  -219,    607,   -271}, 0, {   430,    310}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  -145,    766,   -363}, 0, {   456,    182}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  -189,    704,   -327}, 0, {   440,    232}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  -132,    599,   -266}, 0, {   468,    312}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  -206,    503,   -211}, 0, {   438,    388}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  -304,    593,   -263}, 0, {   392,    324}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  -303,    503,   -211}, 0, {   396,    394}, {0xff, 0xff, 0x39, 0xff}}},\n};\n\n// 0x07002660 - 0x07002760\nstatic const Vtx intro_seg7_vertex_07002660[] = {\n    {{{  -400,    811,   -389}, 0, {   342,    158}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  -189,    704,   -327}, 0, {   440,    232}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  -145,    766,   -363}, 0, {   456,    182}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  -310,    724,   -338}, 0, {   386,    222}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  -238,    810,   -388}, 0, {   414,    152}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  -304,    593,   -263}, 0, {   392,    324}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  -399,    424,   -165}, 0, {   356,    458}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  -303,    423,   -165}, 0, {   398,    454}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  -303,    503,   -211}, 0, {   396,    394}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  1414,    378,   -183}, 0, {  5366,     42}, {0x95, 0x95, 0x61, 0xff}}},\n    {{{  1414,    176,   -350}, 0, {  6200,    858}, {0x95, 0x95, 0x61, 0xff}}},\n    {{{  1414,    255,   -396}, 0, {  5366,     42}, {0x95, 0x95, 0x61, 0xff}}},\n    {{{  1462,    447,   -223}, 0, {  5238,   -508}, {0x95, 0x95, 0x61, 0xff}}},\n    {{{  1462,    378,   -183}, 0, {  5806,     34}, {0x95, 0x95, 0x61, 0xff}}},\n    {{{  1462,    255,   -396}, 0, {  5806,     34}, {0x95, 0x95, 0x61, 0xff}}},\n    {{{  1462,    325,   -436}, 0, {  5238,   -508}, {0x95, 0x95, 0x61, 0xff}}},\n};\n\n// 0x07002760 - 0x07002840\nstatic const Vtx intro_seg7_vertex_07002760[] = {\n    {{{  1462,    378,   -183}, 0, {  5806,     34}, {0x74, 0x74, 0x55, 0xff}}},\n    {{{  1414,    255,   -396}, 0, {  5366,     42}, {0x74, 0x74, 0x55, 0xff}}},\n    {{{  1462,    255,   -396}, 0, {  5806,     34}, {0x74, 0x74, 0x55, 0xff}}},\n    {{{  1414,    378,   -183}, 0, {  5366,     42}, {0x74, 0x74, 0x55, 0xff}}},\n    {{{  1414,    447,   -223}, 0, {  4812,   -502}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{  1462,    325,   -436}, 0, {  5238,   -508}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{  1414,    325,   -436}, 0, {  4812,   -502}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{  1462,    447,   -223}, 0, {  5238,   -508}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{  1120,    451,   -225}, 0, {  2146,   -484}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{  1333,    563,   -573}, 0, {  1952,  -2664}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{  1120,    328,   -438}, 0, {  2146,   -484}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{  1414,    378,   -183}, 0, {  5366,     42}, {0x95, 0x95, 0x61, 0xff}}},\n    {{{  1414,    299,   -137}, 0, {  6200,    858}, {0x95, 0x95, 0x61, 0xff}}},\n    {{{  1414,    176,   -350}, 0, {  6200,    858}, {0x95, 0x95, 0x61, 0xff}}},\n};\n\n// 0x07002840 - 0x07002940\nstatic const Vtx intro_seg7_vertex_07002840[] = {\n    {{{  1414,    685,   -360}, 0, {  2590,  -2676}, {0x95, 0x95, 0x61, 0xff}}},\n    {{{  1414,    325,   -436}, 0, {  4812,   -502}, {0x95, 0x95, 0x61, 0xff}}},\n    {{{  1414,    563,   -573}, 0, {  2590,  -2676}, {0x95, 0x95, 0x61, 0xff}}},\n    {{{  1414,    447,   -223}, 0, {  4812,   -502}, {0x95, 0x95, 0x61, 0xff}}},\n    {{{  1333,    685,   -360}, 0, {  1952,  -2664}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{  1414,    685,   -360}, 0, {  2590,  -2676}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{  1414,    563,   -573}, 0, {  2590,  -2676}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{  1333,    563,   -573}, 0, {  1952,  -2664}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{  1120,    451,   -225}, 0, {  2146,   -484}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{  1229,    450,   -224}, 0, {  2858,   -486}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{  1320,    450,   -224}, 0, {  3950,   -506}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{  1320,    327,   -437}, 0, {  3950,   -506}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{  1414,    299,   -137}, 0, {  6200,    858}, {0x74, 0x74, 0x55, 0xff}}},\n    {{{  1320,    176,   -350}, 0, {  5358,    874}, {0x74, 0x74, 0x55, 0xff}}},\n    {{{  1414,    176,   -350}, 0, {  6200,    858}, {0x74, 0x74, 0x55, 0xff}}},\n    {{{  1320,    299,   -137}, 0, {  5358,    874}, {0x74, 0x74, 0x55, 0xff}}},\n};\n\n// 0x07002940 - 0x07002A40\nstatic const Vtx intro_seg7_vertex_07002940[] = {\n    {{{  1320,    299,   -137}, 0, {  5358,    874}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{  1320,    255,   -396}, 0, {  4526,     58}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{  1320,    176,   -350}, 0, {  5358,    874}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{  1320,    378,   -183}, 0, {  4526,     58}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{  1320,    450,   -224}, 0, {  3950,   -506}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{  1320,    430,   -497}, 0, {  2712,  -1718}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{  1320,    327,   -437}, 0, {  3950,   -506}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{  1320,    553,   -284}, 0, {  2712,  -1718}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{  1320,    378,   -183}, 0, {  4526,     58}, {0x74, 0x74, 0x55, 0xff}}},\n    {{{  1123,    378,   -183}, 0, {  2732,     92}, {0x74, 0x74, 0x55, 0xff}}},\n    {{{  1123,    255,   -396}, 0, {  2732,     92}, {0x74, 0x74, 0x55, 0xff}}},\n    {{{  1229,    450,   -224}, 0, {  2858,   -486}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{  1229,    327,   -437}, 0, {  2858,   -486}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{  1320,    553,   -284}, 0, {  2712,  -1718}, {0xa7, 0xa7, 0x7b, 0xff}}},\n    {{{  1229,    327,   -437}, 0, {  2858,   -486}, {0xa7, 0xa7, 0x7b, 0xff}}},\n    {{{  1320,    430,   -497}, 0, {  2712,  -1718}, {0xa7, 0xa7, 0x7b, 0xff}}},\n};\n\n// 0x07002A40 - 0x07002B40\nstatic const Vtx intro_seg7_vertex_07002A40[] = {\n    {{{  1320,    553,   -284}, 0, {  2712,  -1718}, {0xa7, 0xa7, 0x7b, 0xff}}},\n    {{{  1229,    450,   -224}, 0, {  2858,   -486}, {0xa7, 0xa7, 0x7b, 0xff}}},\n    {{{  1229,    327,   -437}, 0, {  2858,   -486}, {0xa7, 0xa7, 0x7b, 0xff}}},\n    {{{  1123,    378,   -183}, 0, {  2732,     92}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{  1120,    451,   -225}, 0, {  2146,   -484}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{  1120,    328,   -438}, 0, {  2146,   -484}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{  1123,    255,   -396}, 0, {  2732,     92}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{  1320,    378,   -183}, 0, {  4526,     58}, {0x74, 0x74, 0x55, 0xff}}},\n    {{{  1123,    255,   -396}, 0, {  2732,     92}, {0x74, 0x74, 0x55, 0xff}}},\n    {{{  1320,    255,   -396}, 0, {  4526,     58}, {0x74, 0x74, 0x55, 0xff}}},\n    {{{  1026,    526,   -269}, 0, {   604,  -1156}, {0x5f, 0x5f, 0x3d, 0xff}}},\n    {{{  1060,    366,   -459}, 0, {  1262,   -818}, {0x5f, 0x5f, 0x3d, 0xff}}},\n    {{{  1026,    403,   -481}, 0, {   604,  -1156}, {0x5f, 0x5f, 0x3d, 0xff}}},\n    {{{  1075,    426,   -211}, 0, {  1974,   -254}, {0xa0, 0x9e, 0x6f, 0xff}}},\n    {{{  1068,    376,   -182}, 0, {  2376,    204}, {0xa0, 0x9e, 0x6f, 0xff}}},\n    {{{  1068,    254,   -395}, 0, {  2376,    204}, {0xa0, 0x9e, 0x6f, 0xff}}},\n};\n\n// 0x07002B40 - 0x07002C20\nstatic const Vtx intro_seg7_vertex_07002B40[] = {\n    {{{  1075,    426,   -211}, 0, {  1974,   -254}, {0xa0, 0x9e, 0x6f, 0xff}}},\n    {{{  1068,    254,   -395}, 0, {  2376,    204}, {0xa0, 0x9e, 0x6f, 0xff}}},\n    {{{  1075,    304,   -423}, 0, {  1974,   -254}, {0xa0, 0x9e, 0x6f, 0xff}}},\n    {{{  1060,    488,   -247}, 0, {  1262,   -818}, {0x88, 0x88, 0x58, 0xff}}},\n    {{{  1075,    304,   -423}, 0, {  1974,   -254}, {0x88, 0x88, 0x58, 0xff}}},\n    {{{  1060,    366,   -459}, 0, {  1262,   -818}, {0x88, 0x88, 0x58, 0xff}}},\n    {{{  1075,    426,   -211}, 0, {  1974,   -254}, {0x88, 0x88, 0x58, 0xff}}},\n    {{{  1068,    376,   -182}, 0, {  2376,    204}, {0xa7, 0xa7, 0x7b, 0xff}}},\n    {{{  1035,    335,   -158}, 0, {  2460,    586}, {0xa7, 0xa7, 0x7b, 0xff}}},\n    {{{  1035,    213,   -371}, 0, {  2460,    586}, {0xa7, 0xa7, 0x7b, 0xff}}},\n    {{{  1068,    254,   -395}, 0, {  2376,    204}, {0xa7, 0xa7, 0x7b, 0xff}}},\n    {{{   956,    696,   -367}, 0, { -1608,  -2696}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{  1013,    694,   -366}, 0, { -1084,  -2690}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{  1013,    571,   -578}, 0, { -1084,  -2690}, {0x36, 0x36, 0x23, 0xff}}},\n};\n\n// 0x07002C20 - 0x07002D20\nstatic const Vtx intro_seg7_vertex_07002C20[] = {\n    {{{  1026,    526,   -269}, 0, {   604,  -1156}, {0x5f, 0x5f, 0x3d, 0xff}}},\n    {{{  1060,    488,   -247}, 0, {  1262,   -818}, {0x5f, 0x5f, 0x3d, 0xff}}},\n    {{{  1060,    366,   -459}, 0, {  1262,   -818}, {0x5f, 0x5f, 0x3d, 0xff}}},\n    {{{  1013,    694,   -366}, 0, { -1084,  -2690}, {0x95, 0x95, 0x61, 0xff}}},\n    {{{  1012,    494,   -533}, 0, {  -532,  -2150}, {0x95, 0x95, 0x61, 0xff}}},\n    {{{  1013,    571,   -578}, 0, { -1084,  -2690}, {0x95, 0x95, 0x61, 0xff}}},\n    {{{  1012,    616,   -321}, 0, {  -532,  -2150}, {0x95, 0x95, 0x61, 0xff}}},\n    {{{  1035,    335,   -158}, 0, {  2460,    586}, {0x9a, 0x9a, 0x72, 0xff}}},\n    {{{   979,    183,   -354}, 0, {  2234,    864}, {0x9a, 0x9a, 0x72, 0xff}}},\n    {{{  1035,    213,   -371}, 0, {  2460,    586}, {0x9a, 0x9a, 0x72, 0xff}}},\n    {{{   979,    306,   -141}, 0, {  2234,    864}, {0x9a, 0x9a, 0x72, 0xff}}},\n    {{{   956,    696,   -367}, 0, { -1608,  -2696}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{  1013,    571,   -578}, 0, { -1084,  -2690}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   956,    573,   -579}, 0, { -1608,  -2696}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   884,    687,   -361}, 0, { -2112,  -2600}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   884,    564,   -574}, 0, { -2112,  -2600}, {0x36, 0x36, 0x23, 0xff}}},\n};\n\n// 0x07002D20 - 0x07002E20\nstatic const Vtx intro_seg7_vertex_07002D20[] = {\n    {{{   978,    546,   -280}, 0, {   -12,  -1328}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{  1026,    403,   -481}, 0, {   604,  -1156}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   978,    423,   -492}, 0, {   -12,  -1328}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{  1026,    526,   -269}, 0, {   604,  -1156}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   923,    552,   -283}, 0, {  -554,  -1372}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   923,    429,   -496}, 0, {  -554,  -1372}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{  1012,    616,   -321}, 0, {  -532,  -2150}, {0x74, 0x74, 0x55, 0xff}}},\n    {{{   959,    616,   -321}, 0, { -1018,  -2124}, {0x74, 0x74, 0x55, 0xff}}},\n    {{{   959,    494,   -533}, 0, { -1018,  -2124}, {0x74, 0x74, 0x55, 0xff}}},\n    {{{  1012,    494,   -533}, 0, {  -532,  -2150}, {0x74, 0x74, 0x55, 0xff}}},\n    {{{   939,    375,   -182}, 0, {  1350,    308}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   968,    394,   -192}, 0, {  1348,     98}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   968,    271,   -405}, 0, {  1348,     98}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   972,    429,   -212}, 0, {  1024,   -258}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   972,    306,   -425}, 0, {  1024,   -258}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   960,    339,   -444}, 0, {   608,   -558}, {0x36, 0x36, 0x23, 0xff}}},\n};\n\n// 0x07002E20 - 0x07002F10\nstatic const Vtx intro_seg7_vertex_07002E20[] = {\n    {{{   939,    375,   -182}, 0, {  1350,    308}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   968,    271,   -405}, 0, {  1348,     98}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   939,    253,   -394}, 0, {  1350,    308}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   972,    429,   -212}, 0, {  1024,   -258}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   960,    462,   -231}, 0, {   608,   -558}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   960,    339,   -444}, 0, {   608,   -558}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   908,    370,   -179}, 0, {  1118,    400}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   908,    248,   -391}, 0, {  1118,    400}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   979,    306,   -141}, 0, {  2234,    864}, {0x88, 0x88, 0x58, 0xff}}},\n    {{{   916,    292,   -133}, 0, {  1798,   1000}, {0x88, 0x88, 0x58, 0xff}}},\n    {{{   916,    169,   -346}, 0, {  1798,   1000}, {0x88, 0x88, 0x58, 0xff}}},\n    {{{   979,    183,   -354}, 0, {  2234,    864}, {0x88, 0x88, 0x58, 0xff}}},\n    {{{   959,    616,   -321}, 0, { -1018,  -2124}, {0x81, 0x81, 0x5f, 0xff}}},\n    {{{   909,    608,   -316}, 0, { -1386,  -2048}, {0x81, 0x81, 0x5f, 0xff}}},\n    {{{   909,    486,   -529}, 0, { -1386,  -2048}, {0x81, 0x81, 0x5f, 0xff}}},\n};\n\n// 0x07002F10 - 0x07003000\nstatic const Vtx intro_seg7_vertex_07002F10[] = {\n    {{{   868,    547,   -281}, 0, { -1006,  -1320}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   923,    552,   -283}, 0, {  -554,  -1372}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   923,    429,   -496}, 0, {  -554,  -1372}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   868,    424,   -493}, 0, { -1006,  -1320}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   960,    462,   -231}, 0, {   608,   -558}, {0x40, 0x40, 0x2f, 0xff}}},\n    {{{   936,    350,   -450}, 0, {   200,   -734}, {0x40, 0x40, 0x2f, 0xff}}},\n    {{{   960,    339,   -444}, 0, {   608,   -558}, {0x40, 0x40, 0x2f, 0xff}}},\n    {{{   936,    473,   -238}, 0, {   200,   -734}, {0x40, 0x40, 0x2f, 0xff}}},\n    {{{   806,    655,   -343}, 0, { -2524,  -2286}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   884,    687,   -361}, 0, { -2112,  -2600}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   884,    564,   -574}, 0, { -2112,  -2600}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   806,    532,   -555}, 0, { -2524,  -2286}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   959,    616,   -321}, 0, { -1018,  -2124}, {0x81, 0x81, 0x5f, 0xff}}},\n    {{{   909,    486,   -529}, 0, { -1386,  -2048}, {0x81, 0x81, 0x5f, 0xff}}},\n    {{{   959,    494,   -533}, 0, { -1018,  -2124}, {0x81, 0x81, 0x5f, 0xff}}},\n};\n\n// 0x07003000 - 0x070030F0\nstatic const Vtx intro_seg7_vertex_07003000[] = {\n    {{{   878,    371,   -179}, 0, {   762,    368}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   908,    370,   -179}, 0, {  1118,    400}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   908,    248,   -391}, 0, {  1118,    400}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   878,    249,   -392}, 0, {   762,    368}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   936,    473,   -238}, 0, {   200,   -734}, {0x6c, 0x6c, 0x46, 0xff}}},\n    {{{   900,    475,   -239}, 0, {  -178,   -764}, {0x6c, 0x6c, 0x46, 0xff}}},\n    {{{   900,    352,   -451}, 0, {  -178,   -764}, {0x6c, 0x6c, 0x46, 0xff}}},\n    {{{   936,    350,   -450}, 0, {   200,   -734}, {0x6c, 0x6c, 0x46, 0xff}}},\n    {{{   825,    530,   -271}, 0, { -1230,  -1160}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   868,    547,   -281}, 0, { -1006,  -1320}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   868,    424,   -493}, 0, { -1006,  -1320}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   916,    292,   -133}, 0, {  1798,   1000}, {0x6a, 0x74, 0x55, 0xff}}},\n    {{{   840,    177,   -350}, 0, {  1048,    946}, {0x6a, 0x74, 0x55, 0xff}}},\n    {{{   916,    169,   -346}, 0, {  1798,   1000}, {0x6a, 0x74, 0x55, 0xff}}},\n    {{{   825,    407,   -483}, 0, { -1230,  -1160}, {0x36, 0x36, 0x23, 0xff}}},\n};\n\n// 0x070030F0 - 0x070031E0\nstatic const Vtx intro_seg7_vertex_070030F0[] = {\n    {{{   909,    608,   -316}, 0, { -1386,  -2048}, {0x94, 0x91, 0x66, 0xff}}},\n    {{{   872,    471,   -520}, 0, { -1566,  -1856}, {0x94, 0x91, 0x66, 0xff}}},\n    {{{   909,    486,   -529}, 0, { -1386,  -2048}, {0x94, 0x91, 0x66, 0xff}}},\n    {{{   872,    593,   -307}, 0, { -1566,  -1856}, {0x94, 0x91, 0x66, 0xff}}},\n    {{{   852,    382,   -185}, 0, {   364,    220}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   878,    371,   -179}, 0, {   762,    368}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   878,    249,   -392}, 0, {   762,    368}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   852,    259,   -398}, 0, {   364,    220}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   916,    292,   -133}, 0, {  1798,   1000}, {0x6a, 0x74, 0x55, 0xff}}},\n    {{{   840,    299,   -138}, 0, {  1048,    946}, {0x6a, 0x74, 0x55, 0xff}}},\n    {{{   840,    177,   -350}, 0, {  1048,    946}, {0x6a, 0x74, 0x55, 0xff}}},\n    {{{   900,    475,   -239}, 0, {  -178,   -764}, {0x81, 0x81, 0x5f, 0xff}}},\n    {{{   863,    346,   -448}, 0, {  -428,   -672}, {0x81, 0x81, 0x5f, 0xff}}},\n    {{{   900,    352,   -451}, 0, {  -178,   -764}, {0x81, 0x81, 0x5f, 0xff}}},\n    {{{   863,    468,   -235}, 0, {  -428,   -672}, {0x81, 0x81, 0x5f, 0xff}}},\n};\n\n// 0x070031E0 - 0x070032E0\nstatic const Vtx intro_seg7_vertex_070031E0[] = {\n    {{{   753,    600,   -311}, 0, { -2528,  -1784}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   806,    655,   -343}, 0, { -2524,  -2286}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   806,    532,   -555}, 0, { -2524,  -2286}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   753,    477,   -524}, 0, { -2528,  -1784}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   872,    593,   -307}, 0, { -1566,  -1856}, {0xa3, 0xa3, 0x69, 0xff}}},\n    {{{   841,    569,   -293}, 0, { -1530,  -1554}, {0xa3, 0xa3, 0x69, 0xff}}},\n    {{{   841,    446,   -506}, 0, { -1530,  -1554}, {0xa3, 0xa3, 0x69, 0xff}}},\n    {{{   872,    471,   -520}, 0, { -1566,  -1856}, {0xa3, 0xa3, 0x69, 0xff}}},\n    {{{   825,    407,   -483}, 0, { -1230,  -1160}, {0xa3, 0xa3, 0x69, 0xff}}},\n    {{{   825,    530,   -271}, 0, { -1230,  -1160}, {0xa3, 0xa3, 0x69, 0xff}}},\n    {{{   840,    299,   -138}, 0, {  1048,    946}, {0x44, 0x44, 0x2c, 0xff}}},\n    {{{   786,    199,   -363}, 0, {   354,    748}, {0x44, 0x44, 0x2c, 0xff}}},\n    {{{   840,    177,   -350}, 0, {  1048,    946}, {0x44, 0x44, 0x2c, 0xff}}},\n    {{{   863,    468,   -235}, 0, {  -428,   -672}, {0xa0, 0x9e, 0x6f, 0xff}}},\n    {{{   826,    444,   -221}, 0, {  -492,   -456}, {0xa0, 0x9e, 0x6f, 0xff}}},\n    {{{   826,    321,   -434}, 0, {  -492,   -456}, {0xa0, 0x9e, 0x6f, 0xff}}},\n};\n\n// 0x070032E0 - 0x070033C0\nstatic const Vtx intro_seg7_vertex_070032E0[] = {\n    {{{   863,    468,   -235}, 0, {  -428,   -672}, {0xa0, 0x9e, 0x6f, 0xff}}},\n    {{{   826,    321,   -434}, 0, {  -492,   -456}, {0xa0, 0x9e, 0x6f, 0xff}}},\n    {{{   863,    346,   -448}, 0, {  -428,   -672}, {0xa0, 0x9e, 0x6f, 0xff}}},\n    {{{   833,    407,   -200}, 0, {   -16,    -38}, {0x6a, 0x74, 0x55, 0xff}}},\n    {{{   852,    382,   -185}, 0, {   364,    220}, {0x6a, 0x74, 0x55, 0xff}}},\n    {{{   852,    259,   -398}, 0, {   364,    220}, {0x6a, 0x74, 0x55, 0xff}}},\n    {{{   833,    284,   -412}, 0, {   -16,    -38}, {0x6a, 0x74, 0x55, 0xff}}},\n    {{{   826,    444,   -221}, 0, {  -492,   -456}, {0x8e, 0x8e, 0x68, 0xff}}},\n    {{{   833,    284,   -412}, 0, {   -16,    -38}, {0x8e, 0x8e, 0x68, 0xff}}},\n    {{{   826,    321,   -434}, 0, {  -492,   -456}, {0x8e, 0x8e, 0x68, 0xff}}},\n    {{{   833,    407,   -200}, 0, {   -16,    -38}, {0x8e, 0x8e, 0x68, 0xff}}},\n    {{{   747,    364,   -175}, 0, {  -388,    368}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   729,    405,   -199}, 0, {  -932,     -6}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   729,    283,   -411}, 0, {  -932,     -6}, {0x36, 0x36, 0x23, 0xff}}},\n};\n\n// 0x070033C0 - 0x070034A0\nstatic const Vtx intro_seg7_vertex_070033C0[] = {\n    {{{   840,    299,   -138}, 0, {  1048,    946}, {0x44, 0x44, 0x2c, 0xff}}},\n    {{{   786,    322,   -151}, 0, {   354,    748}, {0x44, 0x44, 0x2c, 0xff}}},\n    {{{   786,    199,   -363}, 0, {   354,    748}, {0x44, 0x44, 0x2c, 0xff}}},\n    {{{   729,    550,   -283}, 0, { -2284,  -1330}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   753,    600,   -311}, 0, { -2528,  -1784}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   753,    477,   -524}, 0, { -2528,  -1784}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   729,    428,   -495}, 0, { -2284,  -1330}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   786,    322,   -151}, 0, {   354,    748}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   747,    242,   -388}, 0, {  -388,    368}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   786,    199,   -363}, 0, {   354,    748}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   747,    364,   -175}, 0, {  -388,    368}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   729,    283,   -411}, 0, {  -932,     -6}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   720,    506,   -257}, 0, { -1956,   -926}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   720,    384,   -470}, 0, { -1956,   -926}, {0x36, 0x36, 0x23, 0xff}}},\n};\n\n// 0x070034A0 - 0x07003500\nstatic const Vtx intro_seg7_vertex_070034A0[] = {\n    {{{   729,    405,   -199}, 0, {  -932,     -6}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   720,    455,   -228}, 0, { -1480,   -460}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   720,    333,   -440}, 0, { -1480,   -460}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   729,    283,   -411}, 0, {  -932,     -6}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   720,    506,   -257}, 0, { -1956,   -926}, {0x36, 0x36, 0x23, 0xff}}},\n    {{{   720,    384,   -470}, 0, { -1956,   -926}, {0x36, 0x36, 0x23, 0xff}}},\n};\n\n// 0x07003500 - 0x070035F0\nstatic const Vtx intro_seg7_vertex_07003500[] = {\n    {{{   605,    208,   -143}, 0, {  3156,  -2910}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   453,     27,   -276}, 0, {  2904,  -2404}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   453,    130,    -98}, 0, {  2904,  -2404}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   474,    139,    -56}, 0, {  2968,  -2396}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   610,    209,    -97}, 0, {  3194,  -2850}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   478,    -93,     77}, 0, {  3290,  -1594}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   458,   -121,     46}, 0, {  3254,  -1534}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   458,   -224,   -130}, 0, {  3254,  -1534}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   605,    105,   -321}, 0, {  3156,  -2910}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   604,   -359,    -52}, 0, {  3780,  -1290}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   604,   -257,    124}, 0, {  3780,  -1290}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   952,   -190,     86}, 0, {  4510,  -2064}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{  1016,    -32,   -241}, 0, {  4308,  -3068}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{  1016,     69,    -63}, 0, {  4308,  -3068}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{   952,   -293,    -90}, 0, {  4510,  -2064}, {0xd1, 0xd1, 0xd1, 0xff}}},\n};\n\n// 0x070035F0 - 0x070036D0\nstatic const Vtx intro_seg7_vertex_070035F0[] = {\n    {{{  1016,     69,    -63}, 0, {  4308,  -3068}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   992,     81,    -23}, 0, {  4266,  -3002}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   935,   -153,    112}, 0, {  4448,  -2096}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   952,   -190,     86}, 0, {  4510,  -2064}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   610,   -215,    148}, 0, {  3766,  -1374}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   604,   -257,    124}, 0, {  3780,  -1290}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   604,   -257,    124}, 0, {  3780,  -1290}, {0xb0, 0xb0, 0xb0, 0xff}}},\n    {{{   952,   -293,    -90}, 0, {  4510,  -2064}, {0xb0, 0xb0, 0xb0, 0xff}}},\n    {{{   952,   -190,     86}, 0, {  4510,  -2064}, {0xb0, 0xb0, 0xb0, 0xff}}},\n    {{{   604,   -359,    -52}, 0, {  3780,  -1290}, {0xb0, 0xb0, 0xb0, 0xff}}},\n    {{{  1016,     69,    -63}, 0, {  4308,  -3068}, {0x5e, 0x5e, 0x5e, 0xff}}},\n    {{{   802,    106,   -321}, 0, {  3618,  -3222}, {0x5e, 0x5e, 0x5e, 0xff}}},\n    {{{   802,    208,   -144}, 0, {  3618,  -3222}, {0x5e, 0x5e, 0x5e, 0xff}}},\n    {{{  1016,    -32,   -241}, 0, {  4308,  -3068}, {0x5e, 0x5e, 0x5e, 0xff}}},\n};\n\n// 0x070036D0 - 0x070037D0\nstatic const Vtx intro_seg7_vertex_070036D0[] = {\n    {{{   740,    -40,      0}, 0, {  3808,  -2258}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   683,   -152,   -172}, 0, {  3686,  -2136}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   683,    -49,      4}, 0, {  3686,  -2136}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   802,    208,   -144}, 0, {  3618,  -3222}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{   992,     81,    -23}, 0, {  4266,  -3002}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  1016,     69,    -63}, 0, {  4308,  -3068}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{   796,    209,    -97}, 0, {  3630,  -3144}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{   756,    -16,    -13}, 0, {  3814,  -2364}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   740,   -142,   -177}, 0, {  3808,  -2258}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   756,   -119,   -191}, 0, {  3814,  -2364}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   752,    -37,     45}, 0, {  3860,  -2216}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   783,      8,     18}, 0, {  3872,  -2424}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   701,     22,    -36}, 0, {  3630,  -2414}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   683,    -49,      4}, 0, {  3686,  -2136}, {0x9a, 0x9a, 0x9a, 0xff}}},\n    {{{   662,   -111,   -195}, 0, {  3582,  -2244}, {0x9a, 0x9a, 0x9a, 0xff}}},\n    {{{   662,     -9,    -18}, 0, {  3582,  -2244}, {0x9a, 0x9a, 0x9a, 0xff}}},\n};\n\n// 0x070037D0 - 0x070038B0\nstatic const Vtx intro_seg7_vertex_070037D0[] = {\n    {{{   701,     22,    -36}, 0, {  3630,  -2414}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   701,    -80,   -214}, 0, {  3630,  -2414}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   756,   -119,   -191}, 0, {  3814,  -2364}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   683,    -49,      4}, 0, {  3686,  -2136}, {0x60, 0x60, 0x60, 0xff}}},\n    {{{   671,    -50,     52}, 0, {  3688,  -2042}, {0x60, 0x60, 0x60, 0xff}}},\n    {{{   740,    -40,      0}, 0, {  3808,  -2258}, {0x60, 0x60, 0x60, 0xff}}},\n    {{{   752,    -37,     45}, 0, {  3860,  -2216}, {0x60, 0x60, 0x60, 0xff}}},\n    {{{   756,    -16,    -13}, 0, {  3814,  -2364}, {0x9a, 0x9a, 0x9a, 0xff}}},\n    {{{   783,      8,     18}, 0, {  3872,  -2424}, {0x9a, 0x9a, 0x9a, 0xff}}},\n    {{{   700,     67,    -15}, 0, {  3596,  -2500}, {0x9a, 0x9a, 0x9a, 0xff}}},\n    {{{   701,     22,    -36}, 0, {  3630,  -2414}, {0x9a, 0x9a, 0x9a, 0xff}}},\n    {{{   683,    -49,      4}, 0, {  3686,  -2136}, {0x9a, 0x9a, 0x9a, 0xff}}},\n    {{{   683,   -152,   -172}, 0, {  3686,  -2136}, {0x9a, 0x9a, 0x9a, 0xff}}},\n    {{{   662,   -111,   -195}, 0, {  3582,  -2244}, {0x9a, 0x9a, 0x9a, 0xff}}},\n};\n\n// 0x070038B0 - 0x070039A0\nstatic const Vtx intro_seg7_vertex_070038B0[] = {\n    {{{   802,    208,   -144}, 0, {  3618,  -3222}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   605,    105,   -321}, 0, {  3156,  -2910}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   605,    208,   -143}, 0, {  3156,  -2910}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   662,     -9,    -18}, 0, {  3582,  -2244}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{   662,   -111,   -195}, 0, {  3582,  -2244}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{   701,    -80,   -214}, 0, {  3630,  -2414}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{   701,     22,    -36}, 0, {  3630,  -2414}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{   662,     -9,    -18}, 0, {  3582,  -2244}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{   671,    -50,     52}, 0, {  3688,  -2042}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{   683,    -49,      4}, 0, {  3686,  -2136}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{   636,     16,     14}, 0, {  3516,  -2222}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{   701,     22,    -36}, 0, {  3630,  -2414}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   700,     67,    -15}, 0, {  3596,  -2500}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   662,     -9,    -18}, 0, {  3582,  -2244}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   636,     16,     14}, 0, {  3516,  -2222}, {0xff, 0xff, 0xfe, 0xff}}},\n};\n\n// 0x070039A0 - 0x07003A90\nstatic const Vtx intro_seg7_vertex_070039A0[] = {\n    {{{   458,    335,   -204}, 0, {  2700,  -3130}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   243,    232,   -382}, 0, {  2196,  -2796}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   243,    335,   -204}, 0, {  2196,  -2796}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   802,    208,   -144}, 0, {  3618,  -3222}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   802,    106,   -321}, 0, {  3618,  -3222}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   605,    105,   -321}, 0, {  3156,  -2910}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   604,   -257,    124}, 0, {  3780,  -1290}, {0x8d, 0x8d, 0x8d, 0xff}}},\n    {{{   610,   -215,    148}, 0, {  3766,  -1374}, {0x8d, 0x8d, 0x8d, 0xff}}},\n    {{{   478,    -93,     77}, 0, {  3290,  -1594}, {0x8d, 0x8d, 0x8d, 0xff}}},\n    {{{   458,   -121,     46}, 0, {  3254,  -1534}, {0x8d, 0x8d, 0x8d, 0xff}}},\n    {{{   610,    209,    -97}, 0, {  3194,  -2850}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   796,    209,    -97}, 0, {  3630,  -3144}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   802,    208,   -144}, 0, {  3618,  -3222}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   605,    208,   -143}, 0, {  3156,  -2910}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   458,    232,   -382}, 0, {  2700,  -3130}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07003A90 - 0x07003B90\nstatic const Vtx intro_seg7_vertex_07003A90[] = {\n    {{{   496,   -198,    151}, 0, {  3536,  -1264}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{   256,   -197,    150}, 0, {  2972,   -892}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{   517,   -238,    126}, 0, {  3610,  -1228}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{   243,    232,   -382}, 0, {  2196,  -2796}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   236,   -340,    -51}, 0, {  2948,   -792}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   243,    335,   -204}, 0, {  2196,  -2796}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   236,   -237,    126}, 0, {  2948,   -792}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   263,    335,   -157}, 0, {  2270,  -2758}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   256,   -197,    150}, 0, {  2972,   -892}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   517,   -341,    -51}, 0, {  3610,  -1228}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{   236,   -237,    126}, 0, {  2948,   -792}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{   236,   -340,    -51}, 0, {  2948,   -792}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{   517,   -238,    126}, 0, {  3610,  -1228}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{   437,    336,   -157}, 0, {  2678,  -3032}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   243,    335,   -204}, 0, {  2196,  -2794}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   263,    335,   -157}, 0, {  2270,  -2758}, {0x73, 0x73, 0x73, 0xff}}},\n};\n\n// 0x07003B90 - 0x07003C70\nstatic const Vtx intro_seg7_vertex_07003B90[] = {\n    {{{   256,   -197,    150}, 0, {  2972,   -892}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{   236,   -237,    126}, 0, {  2948,   -792}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{   517,   -238,    126}, 0, {  3610,  -1228}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{   517,   -238,    126}, 0, {  3610,  -1228}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   458,    232,   -382}, 0, {  2700,  -3130}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   458,    335,   -204}, 0, {  2700,  -3130}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   517,   -341,    -51}, 0, {  3610,  -1228}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   496,   -198,    151}, 0, {  3536,  -1264}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   517,   -238,    126}, 0, {  3610,  -1228}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   458,    335,   -204}, 0, {  2700,  -3130}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   437,    336,   -157}, 0, {  2678,  -3032}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   437,    336,   -157}, 0, {  2678,  -3032}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   458,    335,   -204}, 0, {  2700,  -3130}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   243,    335,   -204}, 0, {  2196,  -2794}, {0x73, 0x73, 0x73, 0xff}}},\n};\n\n// 0x07003C70 - 0x07003D60\nstatic const Vtx intro_seg7_vertex_07003C70[] = {\n    {{{     0,   -143,     79}, 0, {  2272,   -742}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   119,   -353,    -44}, 0, {  2692,   -566}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   119,   -247,    139}, 0, {  2692,   -566}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   119,   -247,    139}, 0, {  2692,   -566}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{   119,   -353,    -44}, 0, {  2692,   -566}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{   331,   -204,   -130}, 0, {  2990,  -1412}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{   331,    -98,     53}, 0, {  2990,  -1412}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{   331,    -98,     53}, 0, {  2990,  -1412}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   120,   -201,    160}, 0, {  2660,   -656}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   119,   -247,    139}, 0, {  2692,   -566}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   295,    -78,     89}, 0, {  2908,  -1356}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   331,    -98,     53}, 0, {  2990,  -1412}, {0x5e, 0x5e, 0x5e, 0xff}}},\n    {{{   180,   -105,   -187}, 0, {  2502,  -1524}, {0x5e, 0x5e, 0x5e, 0xff}}},\n    {{{   180,      0,     -4}, 0, {  2502,  -1524}, {0x5e, 0x5e, 0x5e, 0xff}}},\n    {{{   331,   -204,   -130}, 0, {  2990,  -1412}, {0x5e, 0x5e, 0x5e, 0xff}}},\n};\n\n// 0x07003D60 - 0x07003E50\nstatic const Vtx intro_seg7_vertex_07003D60[] = {\n    {{{    -2,   -208,    116}, 0, {  2354,   -510}, {0xcc, 0xcc, 0xcc, 0xff}}},\n    {{{     0,   -249,   -104}, 0, {  2272,   -742}, {0xcc, 0xcc, 0xcc, 0xff}}},\n    {{{     0,   -143,     79}, 0, {  2272,   -742}, {0xcc, 0xcc, 0xcc, 0xff}}},\n    {{{     0,   -143,     79}, 0, {  2272,   -742}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{     0,   -249,   -104}, 0, {  2272,   -742}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   119,   -353,    -44}, 0, {  2692,   -566}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   180,      0,     -4}, 0, {  2502,  -1524}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{   142,     22,     30}, 0, {  2412,  -1468}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{   295,    -78,     89}, 0, {  2908,  -1356}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{   331,    -98,     53}, 0, {  2990,  -1412}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{   180,      0,     -4}, 0, {  2502,  -1524}, {0xcc, 0xcc, 0xcc, 0xff}}},\n    {{{   250,    -64,   -211}, 0, {  2612,  -1778}, {0xcc, 0xcc, 0xcc, 0xff}}},\n    {{{   250,     41,    -27}, 0, {  2612,  -1778}, {0xcc, 0xcc, 0xcc, 0xff}}},\n    {{{   180,   -105,   -187}, 0, {  2502,  -1524}, {0xcc, 0xcc, 0xcc, 0xff}}},\n    {{{    -2,   -314,    -66}, 0, {  2354,   -510}, {0xcc, 0xcc, 0xcc, 0xff}}},\n};\n\n// 0x07003E50 - 0x07003F40\nstatic const Vtx intro_seg7_vertex_07003E50[] = {\n    {{{   246,    263,   -155}, 0, {  2304,  -2542}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   230,     73,      1}, 0, {  2548,  -1782}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   250,     41,    -27}, 0, {  2612,  -1778}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   119,   -247,    139}, 0, {  2692,   -566}, {0xa7, 0x91, 0x7b, 0xff}}},\n    {{{   120,   -201,    160}, 0, {  2660,   -656}, {0xa7, 0x91, 0x7b, 0xff}}},\n    {{{     0,   -143,     79}, 0, {  2272,   -742}, {0xa7, 0x91, 0x7b, 0xff}}},\n    {{{   -19,    -79,     89}, 0, {  2168,   -862}, {0xa7, 0x91, 0x7b, 0xff}}},\n    {{{  -241,   -216,    121}, 0, {  1804,   -110}, {0x9a, 0x9a, 0x9a, 0xff}}},\n    {{{  -241,   -322,    -62}, 0, {  1804,   -110}, {0x9a, 0x9a, 0x9a, 0xff}}},\n    {{{    -2,   -314,    -66}, 0, {  2354,   -510}, {0x9a, 0x9a, 0x9a, 0xff}}},\n    {{{    -2,   -208,    116}, 0, {  2354,   -510}, {0x9a, 0x9a, 0x9a, 0xff}}},\n    {{{   250,     41,    -27}, 0, {  2612,  -1778}, {0xc2, 0xc2, 0xc2, 0xff}}},\n    {{{   250,    -64,   -211}, 0, {  2612,  -1778}, {0xc2, 0xc2, 0xc2, 0xff}}},\n    {{{   246,    157,   -339}, 0, {  2304,  -2542}, {0xcc, 0xcc, 0xcc, 0xff}}},\n    {{{   246,    263,   -155}, 0, {  2304,  -2542}, {0xc2, 0xc2, 0xc2, 0xff}}},\n};\n\n// 0x07003F40 - 0x07004020\nstatic const Vtx intro_seg7_vertex_07003F40[] = {\n    {{{    -2,   -208,    116}, 0, {  2354,   -510}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{   -22,   -169,    141}, 0, {  2282,   -544}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{  -220,   -176,    145}, 0, {  1824,   -212}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{   246,    263,   -155}, 0, {  2304,  -2542}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   226,    271,   -113}, 0, {  2272,  -2466}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   230,     73,      1}, 0, {  2548,  -1782}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   142,     22,     30}, 0, {  2412,  -1468}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   180,      0,     -4}, 0, {  2502,  -1524}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   250,     41,    -27}, 0, {  2612,  -1778}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{     0,   -143,     79}, 0, {  2272,   -742}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   -19,    -79,     89}, 0, {  2168,   -862}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{    -2,   -208,    116}, 0, {  2354,   -510}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   -22,   -169,    141}, 0, {  2282,   -544}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -241,   -216,    121}, 0, {  1804,   -110}, {0xf0, 0xf0, 0xf0, 0xff}}},\n};\n\n// 0x07004020 - 0x07004120\nstatic const Vtx intro_seg7_vertex_07004020[] = {\n    {{{    -3,    162,    -97}, 0, {  1852,  -1800}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{    -3,     56,   -281}, 0, {  1852,  -1800}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{    36,     26,   -263}, 0, {  1986,  -1760}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   246,    263,   -155}, 0, {  2304,  -2542}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   246,    157,   -339}, 0, {  2304,  -2542}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{    17,    255,   -396}, 0, {  1632,  -2526}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{    17,    361,   -212}, 0, {  1632,  -2526}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -238,    255,   -395}, 0, {  1032,  -2124}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -238,    361,   -212}, 0, {  1032,  -2124}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{    36,    132,    -80}, 0, {  1986,  -1760}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{    -3,     -7,   -244}, 0, {  1936,  -1578}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{    -3,     98,    -60}, 0, {  1936,  -1578}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{    68,    154,    -45}, 0, {  2060,  -1814}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{    36,    132,    -80}, 0, {  1986,  -1760}, {0x9a, 0x9a, 0x9a, 0xff}}},\n    {{{    68,    154,    -45}, 0, {  2060,  -1814}, {0x9a, 0x9a, 0x9a, 0xff}}},\n    {{{   -23,    222,    -84}, 0, {  1752,  -1908}, {0x9a, 0x9a, 0x9a, 0xff}}},\n};\n\n// 0x07004120 - 0x07004200\nstatic const Vtx intro_seg7_vertex_07004120[] = {\n    {{{    -3,     98,    -60}, 0, {  1936,  -1578}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   -24,     75,      0}, 0, {  1946,  -1394}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{    68,    154,    -45}, 0, {  2060,  -1814}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{    -3,     -7,   -244}, 0, {  1936,  -1578}, {0xcc, 0xcc, 0xcc, 0xff}}},\n    {{{    -3,     56,   -281}, 0, {  1852,  -1800}, {0xcc, 0xcc, 0xcc, 0xff}}},\n    {{{    -3,    162,    -97}, 0, {  1852,  -1800}, {0xcc, 0xcc, 0xcc, 0xff}}},\n    {{{    -3,     98,    -60}, 0, {  1936,  -1578}, {0xcc, 0xcc, 0xcc, 0xff}}},\n    {{{    17,    361,   -212}, 0, {  1632,  -2526}, {0xa7, 0xa7, 0xa7, 0xff}}},\n    {{{   226,    271,   -113}, 0, {  2272,  -2466}, {0xa7, 0xa7, 0xa7, 0xff}}},\n    {{{   246,    263,   -155}, 0, {  2304,  -2542}, {0xa7, 0xa7, 0xa7, 0xff}}},\n    {{{    12,    362,   -165}, 0, {  1648,  -2452}, {0xa7, 0xa7, 0xa7, 0xff}}},\n    {{{    36,    132,    -80}, 0, {  1986,  -1760}, {0x9a, 0x9a, 0x9a, 0xff}}},\n    {{{   -23,    222,    -84}, 0, {  1752,  -1908}, {0x9a, 0x9a, 0x9a, 0xff}}},\n    {{{    -3,    162,    -97}, 0, {  1852,  -1800}, {0x9a, 0x9a, 0x9a, 0xff}}},\n};\n\n// 0x07004200 - 0x070042E0\nstatic const Vtx intro_seg7_vertex_07004200[] = {\n    {{{    -3,    162,    -97}, 0, {  1852,  -1800}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   -23,    222,    -84}, 0, {  1752,  -1908}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{    -3,     98,    -60}, 0, {  1936,  -1578}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   -24,     75,      0}, 0, {  1946,  -1394}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -238,    361,   -212}, 0, {  1032,  -2124}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -238,    255,   -395}, 0, {  1032,  -2124}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -241,   -322,    -62}, 0, {  1804,   -110}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -241,   -216,    121}, 0, {  1804,   -110}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -218,    362,   -165}, 0, {  1106,  -2088}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -220,   -176,    145}, 0, {  1824,   -212}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -238,    361,   -212}, 0, {  1032,  -2124}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{    12,    362,   -165}, 0, {  1648,  -2452}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{    17,    361,   -212}, 0, {  1632,  -2526}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -218,    362,   -165}, 0, {  1106,  -2088}, {0x73, 0x73, 0x73, 0xff}}},\n};\n\n// 0x070042E0 - 0x070043E0\nstatic const Vtx intro_seg7_vertex_070042E0[] = {\n    {{{  -416,   -142,    108}, 0, {  1308,    -50}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -407,   -341,    -50}, 0, {  1438,    216}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -407,   -223,    154}, 0, {  1438,    216}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -407,   -223,    154}, 0, {  1438,    216}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{  -104,   -342,    -50}, 0, {  2150,   -254}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{  -104,   -223,    155}, 0, {  2150,   -254}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{  -407,   -341,    -50}, 0, {  1438,    216}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{  -104,   -223,    155}, 0, {  2150,   -254}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{  -134,   -183,    179}, 0, {  2054,   -274}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{  -388,   -183,    179}, 0, {  1456,    120}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{  -407,   -223,    154}, 0, {  1438,    216}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{  -397,   -107,    135}, 0, {  1332,   -130}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -416,   -261,    -97}, 0, {  1308,    -50}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -568,    -94,     80}, 0, {   888,     20}, {0x68, 0x68, 0x68, 0xff}}},\n    {{{  -416,   -261,    -97}, 0, {  1308,    -50}, {0x68, 0x68, 0x68, 0xff}}},\n    {{{  -416,   -142,    108}, 0, {  1308,    -50}, {0x68, 0x68, 0x68, 0xff}}},\n};\n\n// 0x070043E0 - 0x070044C0\nstatic const Vtx intro_seg7_vertex_070043E0[] = {\n    {{{  -407,   -223,    154}, 0, {  1438,    216}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -388,   -183,    179}, 0, {  1456,    120}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -397,   -107,    135}, 0, {  1332,   -130}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -894,    -81,     72}, 0, {   102,    482}, {0x66, 0x66, 0x66, 0xff}}},\n    {{{  -646,   -285,    -83}, 0, {   800,    392}, {0x66, 0x66, 0x66, 0xff}}},\n    {{{  -646,   -167,    122}, 0, {   800,    392}, {0x66, 0x66, 0x66, 0xff}}},\n    {{{  -894,   -200,   -132}, 0, {   102,    482}, {0x66, 0x66, 0x66, 0xff}}},\n    {{{  -646,   -167,    122}, 0, {   800,    392}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{  -646,   -285,    -83}, 0, {   800,    392}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{  -568,   -213,   -124}, 0, {   888,     20}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{  -568,    -94,     80}, 0, {   888,     20}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{  -568,    -94,     80}, 0, {   888,     20}, {0x68, 0x68, 0x68, 0xff}}},\n    {{{  -568,   -213,   -124}, 0, {   888,     20}, {0x68, 0x68, 0x68, 0xff}}},\n    {{{  -416,   -261,    -97}, 0, {  1308,    -50}, {0x68, 0x68, 0x68, 0xff}}},\n};\n\n// 0x070044C0 - 0x070045B0\nstatic const Vtx intro_seg7_vertex_070044C0[] = {\n    {{{  -104,   -223,    155}, 0, {  2150,   -254}, {0xa4, 0xa4, 0xa4, 0xff}}},\n    {{{  -104,   -342,    -50}, 0, {  2150,   -254}, {0xa4, 0xa4, 0xa4, 0xff}}},\n    {{{  -324,    196,   -361}, 0, {   908,  -1788}, {0xa4, 0xa4, 0xa4, 0xff}}},\n    {{{  -646,   -167,    122}, 0, {   800,    392}, {0xcc, 0xcc, 0xcc, 0xff}}},\n    {{{  -651,   -124,    144}, 0, {   758,    322}, {0xcc, 0xcc, 0xcc, 0xff}}},\n    {{{  -894,    -81,     72}, 0, {   102,    482}, {0xcc, 0xcc, 0xcc, 0xff}}},\n    {{{  -861,    -51,    103}, 0, {   166,    398}, {0xcc, 0xcc, 0xcc, 0xff}}},\n    {{{  -573,    -52,    103}, 0, {   844,    -48}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -651,   -124,    144}, 0, {   758,    322}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -646,   -167,    122}, 0, {   800,    392}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -568,    -94,     80}, 0, {   888,     20}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -416,   -142,    108}, 0, {  1308,    -50}, {0xcc, 0xcc, 0xcc, 0xff}}},\n    {{{  -573,    -52,    103}, 0, {   844,    -48}, {0xcc, 0xcc, 0xcc, 0xff}}},\n    {{{  -568,    -94,     80}, 0, {   888,     20}, {0xcc, 0xcc, 0xcc, 0xff}}},\n    {{{  -397,   -107,    135}, 0, {  1332,   -130}, {0xcc, 0xcc, 0xcc, 0xff}}},\n};\n\n// 0x070045B0 - 0x070046B0\nstatic const Vtx intro_seg7_vertex_070045B0[] = {\n    {{{  -466,    127,    -47}, 0, {   826,   -912}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -466,      9,   -253}, 0, {   826,   -912}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -449,    -59,   -214}, 0, {   960,   -704}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -104,   -223,    155}, 0, {  2150,   -254}, {0xa4, 0xa4, 0xa4, 0xff}}},\n    {{{  -324,    196,   -361}, 0, {   908,  -1788}, {0xa4, 0xa4, 0xa4, 0xff}}},\n    {{{  -324,    315,   -156}, 0, {   908,  -1788}, {0xa4, 0xa4, 0xa4, 0xff}}},\n    {{{  -324,    315,   -156}, 0, {   908,  -1788}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -134,   -183,    179}, 0, {  2054,   -274}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -104,   -223,    155}, 0, {  2150,   -254}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -339,    318,   -110}, 0, {   896,  -1704}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -449,     59,     -8}, 0, {   960,   -704}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -505,    -41,   -224}, 0, {   804,   -678}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -505,     77,    -18}, 0, {   804,   -676}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -537,     87,     22}, 0, {   740,   -590}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  -420,     50,     43}, 0, {  1066,   -646}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  -449,     59,     -8}, 0, {   960,   -704}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x070046B0 - 0x070047A0\nstatic const Vtx intro_seg7_vertex_070046B0[] = {\n    {{{  -324,    315,   -156}, 0, {   908,  -1788}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -544,    238,   -386}, 0, {   334,  -1590}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -544,    357,   -180}, 0, {   334,  -1590}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -894,    -81,     72}, 0, {   102,    482}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -536,    356,   -132}, 0, {   384,  -1528}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -894,   -200,   -132}, 0, {   102,    482}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -324,    196,   -361}, 0, {   908,  -1788}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -861,    -51,    103}, 0, {   166,    398}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -505,     77,    -18}, 0, {   804,   -676}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  -466,      9,   -253}, 0, {   826,   -912}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  -466,    127,    -47}, 0, {   826,   -912}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  -505,    -41,   -224}, 0, {   804,   -678}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  -536,    356,   -132}, 0, {   384,  -1528}, {0x8b, 0x8b, 0x8b, 0xff}}},\n    {{{  -339,    318,   -110}, 0, {   896,  -1704}, {0x8b, 0x8b, 0x8b, 0xff}}},\n    {{{  -324,    315,   -156}, 0, {   908,  -1788}, {0x8b, 0x8b, 0x8b, 0xff}}},\n};\n\n// 0x070047A0 - 0x07004880\nstatic const Vtx intro_seg7_vertex_070047A0[] = {\n    {{{  -505,     77,    -18}, 0, {   804,   -676}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  -537,     87,     22}, 0, {   740,   -590}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  -449,     59,     -8}, 0, {   960,   -704}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  -449,     59,     -8}, 0, {   960,   -704}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{  -457,    194,    -38}, 0, {   786,  -1086}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{  -466,    127,    -47}, 0, {   826,   -912}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{  -420,     50,     43}, 0, {  1066,   -646}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{  -466,    127,    -47}, 0, {   826,   -912}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -537,     87,     22}, 0, {   740,   -590}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -505,     77,    -18}, 0, {   804,   -676}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -457,    194,    -38}, 0, {   786,  -1086}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -544,    357,   -180}, 0, {   334,  -1590}, {0x8b, 0x8b, 0x8b, 0xff}}},\n    {{{  -536,    356,   -132}, 0, {   384,  -1528}, {0x8b, 0x8b, 0x8b, 0xff}}},\n    {{{  -324,    315,   -156}, 0, {   908,  -1788}, {0x8b, 0x8b, 0x8b, 0xff}}},\n};\n\n// 0x07004880 - 0x07004970\nstatic const Vtx intro_seg7_vertex_07004880[] = {\n    {{{  -757,   -165,    198}, 0, {   584,    676}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -776,   -214,    179}, 0, {   576,    806}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -540,    -80,    149}, 0, {   980,     42}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -776,   -214,    179}, 0, {   576,    806}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{  -776,   -346,    -48}, 0, {   576,    806}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{  -514,   -243,   -107}, 0, {  1054,     40}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{  -514,   -112,    120}, 0, {  1054,     40}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{  -782,    -30,     73}, 0, {   314,    174}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -782,   -161,   -154}, 0, {   314,    174}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -776,   -346,    -48}, 0, {   576,    806}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -776,   -214,    179}, 0, {   576,    806}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -757,   -165,    198}, 0, {   584,    676}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -762,     -2,    104}, 0, {   350,    116}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -844,     40,     32}, 0, {    72,     26}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -844,    -91,   -195}, 0, {    72,     26}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07004970 - 0x07004A60\nstatic const Vtx intro_seg7_vertex_07004970[] = {\n    {{{  -900,    393,   -171}, 0, {  -530,  -1118}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -900,    261,   -399}, 0, {  -530,  -1118}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -938,    184,   -355}, 0, {  -518,   -790}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -776,   -214,    179}, 0, {   576,    806}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -514,   -112,    120}, 0, {  1054,     40}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -540,    -80,    149}, 0, {   980,     42}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -685,    339,   -140}, 0, {    44,  -1264}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -701,    343,    -95}, 0, {    28,  -1182}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -849,     95,     47}, 0, {    16,    -90}, {0x80, 0x80, 0x80, 0xff}}},\n    {{{  -844,     40,     32}, 0, {    72,     26}, {0x80, 0x80, 0x80, 0xff}}},\n    {{{  -762,     -2,    104}, 0, {   350,    116}, {0x80, 0x80, 0x80, 0xff}}},\n    {{{  -782,    -30,     73}, 0, {   314,    174}, {0x80, 0x80, 0x80, 0xff}}},\n    {{{  -685,    339,   -140}, 0, {    44,  -1264}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -888,    390,   -122}, 0, {  -474,  -1056}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -938,    316,   -127}, 0, {  -518,   -790}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07004A60 - 0x07004B50\nstatic const Vtx intro_seg7_vertex_07004A60[] = {\n    {{{ -1284,   -214,    179}, 0, {  -616,   1592}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{ -1284,   -345,    -48}, 0, {  -616,   1592}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{  -992,   -344,    -49}, 0, {    66,   1136}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{  -685,    339,   -140}, 0, {    44,  -1264}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -685,    207,   -368}, 0, {    44,  -1264}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -900,    261,   -399}, 0, {  -530,  -1118}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -514,   -112,    120}, 0, {  1054,     40}, {0xa7, 0xa7, 0xa7, 0xff}}},\n    {{{  -685,    207,   -368}, 0, {    44,  -1264}, {0xa7, 0xa7, 0xa7, 0xff}}},\n    {{{  -685,    339,   -140}, 0, {    44,  -1264}, {0xa7, 0xa7, 0xa7, 0xff}}},\n    {{{  -514,   -243,   -107}, 0, {  1054,     40}, {0xa7, 0xa7, 0xa7, 0xff}}},\n    {{{  -701,    343,    -95}, 0, {    28,  -1182}, {0xa7, 0x91, 0x7b, 0xff}}},\n    {{{  -685,    339,   -140}, 0, {    44,  -1264}, {0xa7, 0x91, 0x7b, 0xff}}},\n    {{{  -900,    393,   -171}, 0, {  -530,  -1118}, {0xa7, 0x91, 0x7b, 0xff}}},\n    {{{  -888,    390,   -122}, 0, {  -474,  -1056}, {0xa7, 0x91, 0x7b, 0xff}}},\n    {{{  -992,   -213,    178}, 0, {    66,   1136}, {0x95, 0x95, 0x95, 0xff}}},\n};\n\n// 0x07004B50 - 0x07004C40\nstatic const Vtx intro_seg7_vertex_07004B50[] = {\n    {{{  -992,   -213,    178}, 0, {    66,   1136}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{ -1007,   -161,   -155}, 0, {  -214,    524}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{ -1007,    -30,     72}, 0, {  -214,    524}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{ -1259,   -174,    203}, 0, {  -584,   1486}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{ -1284,   -214,    179}, 0, {  -616,   1592}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{ -1015,   -173,    202}, 0, {   -14,   1102}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{  -992,   -213,    178}, 0, {    66,   1136}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{ -1161,    385,   -167}, 0, { -1134,   -684}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{ -1284,   -345,    -48}, 0, {  -616,   1592}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{ -1284,   -214,    179}, 0, {  -616,   1592}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{ -1161,    254,   -395}, 0, { -1134,   -684}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -963,    386,   -167}, 0, {  -670,   -996}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{ -1259,   -174,    203}, 0, {  -584,   1486}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{ -1144,    386,   -120}, 0, { -1068,   -642}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -963,    254,   -395}, 0, {  -670,   -996}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07004C40 - 0x07004D30\nstatic const Vtx intro_seg7_vertex_07004C40[] = {\n    {{{  -933,   -127,    128}, 0, {    90,    746}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  -933,   -258,    -98}, 0, {    90,    746}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  -844,    -91,   -195}, 0, {    72,     26}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  -992,   -213,    178}, 0, {    66,   1136}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{  -992,   -344,    -49}, 0, {    66,   1136}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{ -1007,   -161,   -155}, 0, {  -214,    524}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{ -1015,   -173,    202}, 0, {   -14,   1102}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{ -1007,    -30,     72}, 0, {  -214,    524}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{ -1033,     57,     69}, 0, {  -366,    332}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -992,   -213,    178}, 0, {    66,   1136}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{ -1007,    -30,     72}, 0, {  -214,    524}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{ -1007,   -161,   -155}, 0, {  -214,    524}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -933,   -258,    -98}, 0, {    90,    746}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -933,   -127,    128}, 0, {    90,    746}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -844,     40,     32}, 0, {    72,     26}, {0xdd, 0xdd, 0xdd, 0xff}}},\n};\n\n// 0x07004D30 - 0x07004E30\nstatic const Vtx intro_seg7_vertex_07004D30[] = {\n    {{{  -938,    316,   -127}, 0, {  -518,   -790}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{  -963,    254,   -395}, 0, {  -670,   -996}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{  -963,    386,   -167}, 0, {  -670,   -996}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{ -1033,     57,     69}, 0, {  -366,    332}, {0x88, 0x88, 0x88, 0xff}}},\n    {{{  -933,   -127,    128}, 0, {    90,    746}, {0x88, 0x88, 0x88, 0xff}}},\n    {{{  -936,    -69,    142}, 0, {    32,    622}, {0x88, 0x88, 0x88, 0xff}}},\n    {{{ -1007,    -30,     72}, 0, {  -214,    524}, {0x88, 0x88, 0x88, 0xff}}},\n    {{{  -936,    -69,    142}, 0, {    32,    622}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -844,     40,     32}, 0, {    72,     26}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -849,     95,     47}, 0, {    16,    -90}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -933,   -127,    128}, 0, {    90,    746}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -977,    387,   -120}, 0, {  -678,   -904}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{ -1161,    385,   -167}, 0, { -1134,   -684}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{ -1144,    386,   -120}, 0, { -1068,   -642}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -963,    386,   -167}, 0, {  -670,   -996}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -938,    184,   -355}, 0, {  -518,   -790}, {0xaa, 0xaa, 0xaa, 0xff}}},\n};\n\n// 0x07004E30 - 0x07004F20\nstatic const Vtx intro_seg7_vertex_07004E30[] = {\n    {{{  -888,    390,   -122}, 0, {  -474,  -1056}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -938,    316,   -127}, 0, {  -518,   -790}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -941,    285,    -61}, 0, {  -456,   -604}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -941,    285,    -61}, 0, {  -456,   -604}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -963,    386,   -167}, 0, {  -670,   -996}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -977,    387,   -120}, 0, {  -678,   -904}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -938,    316,   -127}, 0, {  -518,   -790}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   130,    803,   -494}, 0, {  1288,  -4280}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   130,    693,   -684}, 0, {  1288,  -4280}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   173,    243,   -424}, 0, {  1996,  -2780}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   173,    352,   -234}, 0, {  1996,  -2780}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   152,    804,   -447}, 0, {  1368,  -4246}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   192,    393,   -210}, 0, {  2014,  -2878}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   447,    806,   -496}, 0, {  2030,  -4782}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   447,    696,   -685}, 0, {  2030,  -4782}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07004F20 - 0x07005010\nstatic const Vtx intro_seg7_vertex_07004F20[] = {\n    {{{   344,    596,   -327}, 0, {  2098,  -3820}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   361,    616,   -386}, 0, {  2084,  -3988}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   334,    706,   -391}, 0, {  1926,  -4190}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   358,    644,   -403}, 0, {  2038,  -4084}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   640,    460,   -296}, 0, {  2950,  -3880}, {0x59, 0x59, 0x59, 0xff}}},\n    {{{   640,    350,   -486}, 0, {  2950,  -3880}, {0x59, 0x59, 0x59, 0xff}}},\n    {{{   532,    419,   -525}, 0, {  2602,  -3950}, {0x59, 0x59, 0x59, 0xff}}},\n    {{{   532,    528,   -336}, 0, {  2602,  -3950}, {0x59, 0x59, 0x59, 0xff}}},\n    {{{   549,    734,   -454}, 0, {  2366,  -4692}, {0x60, 0x60, 0x60, 0xff}}},\n    {{{   447,    696,   -685}, 0, {  2030,  -4782}, {0x60, 0x60, 0x60, 0xff}}},\n    {{{   447,    806,   -496}, 0, {  2030,  -4782}, {0x60, 0x60, 0x60, 0xff}}},\n    {{{   562,    551,   -349}, 0, {  2642,  -4076}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   549,    625,   -644}, 0, {  2366,  -4692}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   549,    734,   -454}, 0, {  2366,  -4692}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   562,    442,   -539}, 0, {  2642,  -4076}, {0xc0, 0xc0, 0xc0, 0xff}}},\n};\n\n// 0x07005010 - 0x07005100\nstatic const Vtx intro_seg7_vertex_07005010[] = {\n    {{{   529,    744,   -413}, 0, {  2332,  -4626}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   549,    734,   -454}, 0, {  2366,  -4692}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   447,    806,   -496}, 0, {  2030,  -4782}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   532,    528,   -336}, 0, {  2602,  -3950}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{   532,    419,   -525}, 0, {  2602,  -3950}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{   562,    442,   -539}, 0, {  2642,  -4076}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{   562,    551,   -349}, 0, {  2642,  -4076}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{   549,    734,   -454}, 0, {  2366,  -4692}, {0x60, 0x60, 0x60, 0xff}}},\n    {{{   549,    625,   -644}, 0, {  2366,  -4692}, {0x60, 0x60, 0x60, 0xff}}},\n    {{{   447,    696,   -685}, 0, {  2030,  -4782}, {0x60, 0x60, 0x60, 0xff}}},\n    {{{   440,    807,   -449}, 0, {  2042,  -4704}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   604,    480,   -260}, 0, {  2866,  -3822}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{   640,    460,   -296}, 0, {  2950,  -3880}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{   497,    547,   -299}, 0, {  2522,  -3890}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{   532,    528,   -336}, 0, {  2602,  -3950}, {0xbb, 0xbb, 0xbb, 0xff}}},\n};\n\n// 0x07005100 - 0x07005200\nstatic const Vtx intro_seg7_vertex_07005100[] = {\n    {{{   497,    547,   -299}, 0, {  2522,  -3890}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   562,    551,   -349}, 0, {  2642,  -4076}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   541,    581,   -318}, 0, {  2580,  -4074}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   532,    528,   -336}, 0, {  2602,  -3950}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   549,    734,   -454}, 0, {  2366,  -4692}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   529,    744,   -413}, 0, {  2332,  -4626}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   361,    616,   -386}, 0, {  2084,  -3988}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   361,    506,   -576}, 0, {  2084,  -3988}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   358,    644,   -403}, 0, {  2038,  -4084}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   381,    356,   -236}, 0, {  2480,  -3114}, {0xc2, 0xc2, 0xc2, 0xff}}},\n    {{{   379,    298,   -456}, 0, {  2406,  -3294}, {0xcc, 0xcc, 0xcc, 0xff}}},\n    {{{   379,    408,   -266}, 0, {  2406,  -3294}, {0xc2, 0xc2, 0xc2, 0xff}}},\n    {{{   381,    246,   -426}, 0, {  2480,  -3114}, {0xc2, 0xc2, 0xc2, 0xff}}},\n    {{{   358,    644,   -403}, 0, {  2038,  -4084}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   358,    535,   -592}, 0, {  2038,  -4084}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   379,    630,   -394}, 0, {  2106,  -4066}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07005200 - 0x07005300\nstatic const Vtx intro_seg7_vertex_07005200[] = {\n    {{{   358,    535,   -592}, 0, {  2038,  -4084}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   379,    520,   -584}, 0, {  2106,  -4066}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   379,    630,   -394}, 0, {  2106,  -4066}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   361,    506,   -576}, 0, {  2084,  -3988}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   361,    616,   -386}, 0, {  2084,  -3988}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   344,    596,   -327}, 0, {  2098,  -3820}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   411,    652,   -360}, 0, {  2180,  -4120}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   440,    807,   -449}, 0, {  2042,  -4704}, {0x70, 0x70, 0x70, 0xff}}},\n    {{{   130,    803,   -494}, 0, {  1288,  -4280}, {0x70, 0x70, 0x70, 0xff}}},\n    {{{   152,    804,   -447}, 0, {  1368,  -4246}, {0x70, 0x70, 0x70, 0xff}}},\n    {{{   361,    506,   -576}, 0, {  2084,  -3988}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   358,    535,   -592}, 0, {  2038,  -4084}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   358,    644,   -403}, 0, {  2038,  -4084}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   334,    706,   -391}, 0, {  1926,  -4190}, {0x9a, 0x9a, 0x9a, 0xff}}},\n    {{{   358,    644,   -403}, 0, {  2038,  -4084}, {0x9a, 0x9a, 0x9a, 0xff}}},\n    {{{   379,    630,   -394}, 0, {  2106,  -4066}, {0x9a, 0x9a, 0x9a, 0xff}}},\n};\n\n// 0x07005300 - 0x07005400\nstatic const Vtx intro_seg7_vertex_07005300[] = {\n    {{{   334,    706,   -391}, 0, {  1926,  -4190}, {0x9a, 0x9a, 0x9a, 0xff}}},\n    {{{   379,    630,   -394}, 0, {  2106,  -4066}, {0x9a, 0x9a, 0x9a, 0xff}}},\n    {{{   411,    652,   -360}, 0, {  2180,  -4120}, {0x9a, 0x9a, 0x9a, 0xff}}},\n    {{{   360,    395,   -211}, 0, {  2404,  -3148}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   379,    408,   -266}, 0, {  2406,  -3294}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   357,    475,   -258}, 0, {  2292,  -3422}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   381,    356,   -236}, 0, {  2480,  -3114}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   440,    807,   -449}, 0, {  2042,  -4704}, {0x70, 0x70, 0x70, 0xff}}},\n    {{{   447,    806,   -496}, 0, {  2030,  -4782}, {0x70, 0x70, 0x70, 0xff}}},\n    {{{   130,    803,   -494}, 0, {  1288,  -4280}, {0x70, 0x70, 0x70, 0xff}}},\n    {{{   379,    408,   -266}, 0, {  2406,  -3294}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   379,    298,   -456}, 0, {  2406,  -3294}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   459,    226,   -414}, 0, {  2690,  -3166}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   173,    352,   -234}, 0, {  1996,  -2780}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{   173,    243,   -424}, 0, {  1996,  -2780}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{   381,    246,   -426}, 0, {  2480,  -3114}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x07005400 - 0x070054E0\nstatic const Vtx intro_seg7_vertex_07005400[] = {\n    {{{   173,    352,   -234}, 0, {  1996,  -2780}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{   381,    246,   -426}, 0, {  2480,  -3114}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{   381,    356,   -236}, 0, {  2480,  -3114}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{   173,    352,   -234}, 0, {  1996,  -2780}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{   381,    356,   -236}, 0, {  2480,  -3114}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{   360,    395,   -211}, 0, {  2404,  -3148}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{   192,    393,   -210}, 0, {  2014,  -2878}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{   357,    475,   -258}, 0, {  2292,  -3422}, {0x8e, 0x8e, 0x68, 0xff}}},\n    {{{   379,    408,   -266}, 0, {  2406,  -3294}, {0x8e, 0x8e, 0x68, 0xff}}},\n    {{{   459,    336,   -224}, 0, {  2690,  -3166}, {0x8e, 0x8e, 0x68, 0xff}}},\n    {{{   461,    382,   -203}, 0, {  2660,  -3258}, {0x8e, 0x8e, 0x68, 0xff}}},\n    {{{  -229,    755,   -449}, 0, {   518,  -3526}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -229,    648,   -634}, 0, {   518,  -3526}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -123,    366,   -224}, 0, {  1290,  -2336}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x070054E0 - 0x070055C0\nstatic const Vtx intro_seg7_vertex_070054E0[] = {\n    {{{   379,    408,   -266}, 0, {  2406,  -3294}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   459,    226,   -414}, 0, {  2690,  -3166}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   459,    336,   -224}, 0, {  2690,  -3166}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   461,    382,   -203}, 0, {  2660,  -3258}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   459,    336,   -224}, 0, {  2690,  -3166}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   604,    480,   -260}, 0, {  2866,  -3822}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   640,    460,   -296}, 0, {  2950,  -3880}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   459,    336,   -224}, 0, {  2690,  -3166}, {0xd0, 0xd0, 0xd0, 0xff}}},\n    {{{   640,    350,   -486}, 0, {  2950,  -3880}, {0xd0, 0xd0, 0xd0, 0xff}}},\n    {{{   640,    460,   -296}, 0, {  2950,  -3880}, {0xd0, 0xd0, 0xd0, 0xff}}},\n    {{{   459,    226,   -414}, 0, {  2690,  -3166}, {0xd0, 0xd0, 0xd0, 0xff}}},\n    {{{   165,    798,   -473}, 0, {  1390,  -4290}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -229,    648,   -634}, 0, {   518,  -3526}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -229,    755,   -449}, 0, {   518,  -3526}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x070055C0 - 0x070056B0\nstatic const Vtx intro_seg7_vertex_070055C0[] = {\n    {{{   115,    645,   -385}, 0, {  1476,  -3680}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{   165,    691,   -659}, 0, {  1390,  -4290}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{   165,    798,   -473}, 0, {  1390,  -4290}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{   165,    798,   -473}, 0, {  1390,  -4290}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   165,    691,   -659}, 0, {  1390,  -4290}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -229,    648,   -634}, 0, {   518,  -3526}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -123,    366,   -224}, 0, {  1290,  -2336}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{  -203,    759,   -404}, 0, {   600,  -3508}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{  -229,    755,   -449}, 0, {   518,  -3526}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{  -107,    408,   -201}, 0, {  1296,  -2436}, {0x50, 0x50, 0x50, 0xff}}},\n    {{{   248,    421,   -256}, 0, {  2090,  -3108}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{   248,    314,   -441}, 0, {  2090,  -3108}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{   167,    449,   -519}, 0, {  1716,  -3452}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{   167,    556,   -334}, 0, {  1716,  -3452}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{   115,    538,   -571}, 0, {  1476,  -3680}, {0xd1, 0xd1, 0xd1, 0xff}}},\n};\n\n// 0x070056B0 - 0x070057A0\nstatic const Vtx intro_seg7_vertex_070056B0[] = {\n    {{{   130,    545,   -328}, 0, {  1644,  -3356}, {0xcc, 0xcc, 0xcc, 0xff}}},\n    {{{   130,    438,   -513}, 0, {  1644,  -3356}, {0xcc, 0xcc, 0xcc, 0xff}}},\n    {{{   129,    539,   -571}, 0, {  1508,  -3704}, {0xcc, 0xcc, 0xcc, 0xff}}},\n    {{{   167,    556,   -334}, 0, {  1716,  -3452}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   130,    438,   -513}, 0, {  1644,  -3356}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   130,    545,   -328}, 0, {  1644,  -3356}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   167,    449,   -519}, 0, {  1716,  -3452}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   129,    646,   -386}, 0, {  1508,  -3704}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   129,    539,   -571}, 0, {  1508,  -3704}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   115,    538,   -571}, 0, {  1476,  -3680}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   115,    645,   -385}, 0, {  1476,  -3680}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{   167,    556,   -334}, 0, {  1716,  -3452}, {0xee, 0xee, 0xee, 0xff}}},\n    {{{   215,    457,   -229}, 0, {  1992,  -3110}, {0xee, 0xee, 0xee, 0xff}}},\n    {{{   248,    421,   -256}, 0, {  2090,  -3108}, {0xee, 0xee, 0xee, 0xff}}},\n    {{{   157,    554,   -285}, 0, {  1726,  -3356}, {0xee, 0xee, 0xee, 0xff}}},\n};\n\n// 0x070057A0 - 0x070058A0\nstatic const Vtx intro_seg7_vertex_070057A0[] = {\n    {{{   129,    646,   -386}, 0, {  1508,  -3704}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   108,    645,   -338}, 0, {  1488,  -3600}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   109,    566,   -292}, 0, {  1596,  -3324}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   130,    545,   -328}, 0, {  1644,  -3356}, {0xcc, 0xcc, 0xcc, 0xff}}},\n    {{{   129,    539,   -571}, 0, {  1508,  -3704}, {0xcc, 0xcc, 0xcc, 0xff}}},\n    {{{   129,    646,   -386}, 0, {  1508,  -3704}, {0xcc, 0xcc, 0xcc, 0xff}}},\n    {{{   137,    795,   -425}, 0, {  1352,  -4166}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   115,    645,   -385}, 0, {  1476,  -3680}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   165,    798,   -473}, 0, {  1390,  -4290}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   108,    645,   -374}, 0, {  1468,  -3650}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{    97,    675,   -355}, 0, {  1420,  -3684}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -123,    366,   -224}, 0, {  1290,  -2336}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{  -123,    259,   -409}, 0, {  1290,  -2336}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{   248,    314,   -441}, 0, {  2090,  -3108}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{   248,    421,   -256}, 0, {  2090,  -3108}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{   121,    543,   -307}, 0, {  1640,  -3306}, {0xff, 0xff, 0xfe, 0xff}}},\n};\n\n// 0x070058A0 - 0x070059A0\nstatic const Vtx intro_seg7_vertex_070058A0[] = {\n    {{{   129,    646,   -386}, 0, {  1508,  -3704}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   121,    543,   -307}, 0, {  1640,  -3306}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   130,    545,   -328}, 0, {  1644,  -3356}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   109,    566,   -292}, 0, {  1596,  -3324}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{    53,    523,   -315}, 0, {  1494,  -3158}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{    32,    522,   -314}, 0, {  1448,  -3122}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{     4,    560,   -289}, 0, {  1356,  -3140}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{    34,    517,   -311}, 0, {  1458,  -3110}, {0x53, 0x53, 0x53, 0xff}}},\n    {{{   157,    554,   -285}, 0, {  1726,  -3356}, {0x53, 0x53, 0x53, 0xff}}},\n    {{{   167,    556,   -334}, 0, {  1716,  -3452}, {0x53, 0x53, 0x53, 0xff}}},\n    {{{    21,    514,   -262}, 0, {  1460,  -3006}, {0x53, 0x53, 0x53, 0xff}}},\n    {{{   108,    645,   -374}, 0, {  1468,  -3650}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{    97,    675,   -355}, 0, {  1420,  -3684}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{    21,    639,   -378}, 0, {  1266,  -3506}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{    21,    514,   -262}, 0, {  1460,  -3006}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{    34,    517,   -311}, 0, {  1458,  -3110}, {0xff, 0xff, 0xfe, 0xff}}},\n};\n\n// 0x070059A0 - 0x07005A80\nstatic const Vtx intro_seg7_vertex_070059A0[] = {\n    {{{    97,    675,   -355}, 0, {  1420,  -3684}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{     5,    676,   -356}, 0, {  1202,  -3544}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{    21,    639,   -378}, 0, {  1266,  -3506}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{     0,    638,   -334}, 0, {  1240,  -3404}, {0x6a, 0x6a, 0x6a, 0xff}}},\n    {{{   129,    646,   -386}, 0, {  1508,  -3704}, {0x6a, 0x6a, 0x6a, 0xff}}},\n    {{{    23,    639,   -382}, 0, {  1268,  -3514}, {0x6a, 0x6a, 0x6a, 0xff}}},\n    {{{   108,    645,   -338}, 0, {  1488,  -3600}, {0x6a, 0x6a, 0x6a, 0xff}}},\n    {{{   248,    421,   -256}, 0, {  2090,  -3108}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -107,    408,   -201}, 0, {  1296,  -2436}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -123,    366,   -224}, 0, {  1290,  -2336}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   215,    457,   -229}, 0, {  1992,  -3110}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{     4,    560,   -289}, 0, {  1356,  -3140}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{    34,    517,   -311}, 0, {  1458,  -3110}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{    32,    522,   -314}, 0, {  1448,  -3122}, {0xff, 0xff, 0xfe, 0xff}}},\n};\n\n// 0x07005A80 - 0x07005B80\nstatic const Vtx intro_seg7_vertex_07005A80[] = {\n    {{{  -229,    755,   -449}, 0, {   518,  -3526}, {0x66, 0x66, 0x66, 0xff}}},\n    {{{   137,    795,   -425}, 0, {  1352,  -4166}, {0x66, 0x66, 0x66, 0xff}}},\n    {{{   165,    798,   -473}, 0, {  1390,  -4290}, {0x66, 0x66, 0x66, 0xff}}},\n    {{{  -203,    759,   -404}, 0, {   600,  -3508}, {0x66, 0x66, 0x66, 0xff}}},\n    {{{    21,    639,   -378}, 0, {  1266,  -3506}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{     5,    676,   -356}, 0, {  1202,  -3544}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{     0,    638,   -334}, 0, {  1240,  -3404}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -440,    354,   -196}, 0, {   574,  -1770}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{  -262,    242,   -388}, 0, {   990,  -2044}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{  -262,    354,   -196}, 0, {   990,  -2044}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{  -440,    243,   -388}, 0, {   574,  -1770}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{  -228,    818,   -464}, 0, {   446,  -3712}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -441,    708,   -657}, 0, {   -54,  -3386}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -441,    820,   -465}, 0, {   -54,  -3386}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -106,    760,   -430}, 0, {   812,  -3702}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -228,    707,   -656}, 0, {   446,  -3712}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07005B80 - 0x07005C60\nstatic const Vtx intro_seg7_vertex_07005B80[] = {\n    {{{  -421,    820,   -418}, 0, {    18,  -3350}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -441,    820,   -465}, 0, {   -54,  -3386}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -440,    354,   -196}, 0, {   574,  -1770}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -440,    243,   -388}, 0, {   574,  -1770}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -441,    708,   -657}, 0, {   -54,  -3386}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -419,    394,   -172}, 0, {   594,  -1870}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -228,    818,   -464}, 0, {   446,  -3712}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -228,    707,   -656}, 0, {   446,  -3712}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -419,    394,   -172}, 0, {   594,  -1870}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{  -440,    354,   -196}, 0, {   574,  -1770}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{  -283,    394,   -171}, 0, {   916,  -2080}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{  -262,    354,   -196}, 0, {   990,  -2044}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{  -106,    760,   -430}, 0, {   812,  -3702}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -106,    649,   -623}, 0, {   812,  -3702}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07005C60 - 0x07005D50\nstatic const Vtx intro_seg7_vertex_07005C60[] = {\n    {{{  -111,    583,   -281}, 0, {  1066,  -3006}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   -90,    557,   -313}, 0, {  1122,  -3018}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -106,    760,   -430}, 0, {   812,  -3702}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   -90,    557,   -313}, 0, {  1122,  -3018}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{   -90,    445,   -505}, 0, {  1122,  -3018}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{  -106,    649,   -623}, 0, {   812,  -3702}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{  -106,    760,   -430}, 0, {   812,  -3702}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{  -185,    434,   -242}, 0, {  1064,  -2444}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  -185,    323,   -434}, 0, {  1064,  -2444}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{   -90,    445,   -505}, 0, {  1122,  -3018}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{   -90,    557,   -313}, 0, {  1122,  -3018}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  -126,    768,   -388}, 0, {   782,  -3628}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{  -228,    818,   -464}, 0, {   446,  -3712}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{  -233,    819,   -417}, 0, {   462,  -3638}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{  -106,    760,   -430}, 0, {   812,  -3702}, {0xaa, 0xaa, 0xaa, 0xff}}},\n};\n\n// 0x07005D50 - 0x07005E30\nstatic const Vtx intro_seg7_vertex_07005D50[] = {\n    {{{  -267,    646,   -365}, 0, {   586,  -3056}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -267,    535,   -557}, 0, {   586,  -3056}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -241,    531,   -555}, 0, {   652,  -3082}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -196,    474,   -218}, 0, {  1014,  -2496}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{   -90,    557,   -313}, 0, {  1122,  -3018}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -111,    583,   -281}, 0, {  1066,  -3006}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -185,    434,   -242}, 0, {  1064,  -2444}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -106,    760,   -430}, 0, {   812,  -3702}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -126,    768,   -388}, 0, {   782,  -3628}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -262,    433,   -242}, 0, {   884,  -2322}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{  -185,    323,   -434}, 0, {  1064,  -2444}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{  -185,    434,   -242}, 0, {  1064,  -2444}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{  -262,    322,   -434}, 0, {   884,  -2322}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{  -241,    642,   -362}, 0, {   652,  -3082}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x07005E30 - 0x07005F20\nstatic const Vtx intro_seg7_vertex_07005E30[] = {\n    {{{  -265,    608,   -343}, 0, {   642,  -2926}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{  -265,    497,   -535}, 0, {   642,  -2926}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{  -267,    535,   -557}, 0, {   586,  -3056}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{  -215,    678,   -336}, 0, {   692,  -3176}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -241,    642,   -362}, 0, {   652,  -3082}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -251,    610,   -344}, 0, {   672,  -2956}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -241,    531,   -555}, 0, {   652,  -3082}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -251,    499,   -536}, 0, {   672,  -2956}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -265,    497,   -535}, 0, {   642,  -2926}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -235,    614,   -299}, 0, {   732,  -2920}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -265,    608,   -343}, 0, {   642,  -2926}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -262,    354,   -196}, 0, {   990,  -2044}, {0xcc, 0xcc, 0xcc, 0xff}}},\n    {{{  -262,    322,   -434}, 0, {   884,  -2322}, {0xcc, 0xcc, 0xcc, 0xff}}},\n    {{{  -262,    433,   -242}, 0, {   884,  -2322}, {0xcc, 0xcc, 0xcc, 0xff}}},\n    {{{  -262,    242,   -388}, 0, {   990,  -2044}, {0xcc, 0xcc, 0xcc, 0xff}}},\n};\n\n// 0x07005F20 - 0x07006010\nstatic const Vtx intro_seg7_vertex_07005F20[] = {\n    {{{  -283,    473,   -218}, 0, {   808,  -2358}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{  -262,    433,   -242}, 0, {   884,  -2322}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{  -185,    434,   -242}, 0, {  1064,  -2444}, {0xf0, 0xf0, 0xf0, 0xff}}},\n    {{{  -265,    608,   -343}, 0, {   642,  -2926}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{  -267,    535,   -557}, 0, {   586,  -3056}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{  -267,    646,   -365}, 0, {   586,  -3056}, {0xc0, 0xc0, 0xc0, 0xff}}},\n    {{{  -233,    819,   -417}, 0, {   462,  -3638}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -441,    820,   -465}, 0, {   -54,  -3386}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -421,    820,   -418}, 0, {    18,  -3350}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -228,    818,   -464}, 0, {   446,  -3712}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -289,    690,   -343}, 0, {   504,  -3104}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  -241,    642,   -362}, 0, {   652,  -3082}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  -215,    678,   -336}, 0, {   692,  -3176}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  -267,    646,   -365}, 0, {   586,  -3056}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  -196,    474,   -218}, 0, {  1014,  -2496}, {0xf0, 0xf0, 0xf0, 0xff}}},\n};\n\n// 0x07006010 - 0x07006100\nstatic const Vtx intro_seg7_vertex_07006010[] = {\n    {{{  -599,    824,   -456}, 0, {  -424,  -3140}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -804,    708,   -657}, 0, {  -908,  -2820}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -804,    824,   -456}, 0, {  -908,  -2820}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -283,    394,   -171}, 0, {   916,  -2080}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -262,    354,   -196}, 0, {   990,  -2044}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -262,    433,   -242}, 0, {   884,  -2322}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -283,    473,   -218}, 0, {   808,  -2358}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -235,    614,   -299}, 0, {   732,  -2920}, {0x60, 0x60, 0x60, 0xff}}},\n    {{{  -251,    610,   -344}, 0, {   672,  -2956}, {0x60, 0x60, 0x60, 0xff}}},\n    {{{  -284,    606,   -294}, 0, {   628,  -2816}, {0x60, 0x60, 0x60, 0xff}}},\n    {{{  -265,    608,   -343}, 0, {   642,  -2926}, {0x60, 0x60, 0x60, 0xff}}},\n    {{{  -284,    606,   -294}, 0, {   628,  -2816}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -267,    646,   -365}, 0, {   586,  -3056}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -289,    690,   -343}, 0, {   504,  -3104}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -265,    608,   -343}, 0, {   642,  -2926}, {0xff, 0xff, 0xfe, 0xff}}},\n};\n\n// 0x07006100 - 0x070061E0\nstatic const Vtx intro_seg7_vertex_07006100[] = {\n    {{{  -597,    750,   -413}, 0, {  -322,  -2886}, {0xc2, 0xc2, 0xc2, 0xff}}},\n    {{{  -599,    708,   -657}, 0, {  -424,  -3140}, {0xc2, 0xc2, 0xc2, 0xff}}},\n    {{{  -599,    824,   -456}, 0, {  -424,  -3140}, {0xc2, 0xc2, 0xc2, 0xff}}},\n    {{{  -599,    824,   -456}, 0, {  -424,  -3140}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -599,    708,   -657}, 0, {  -424,  -3140}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -804,    708,   -657}, 0, {  -908,  -2820}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -804,    824,   -456}, 0, {  -908,  -2820}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -799,    380,   -467}, 0, {  -454,  -1686}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -783,    825,   -409}, 0, {  -832,  -2784}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -799,    496,   -266}, 0, {  -454,  -1686}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -704,    261,   -399}, 0, {   -70,  -1422}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -779,    523,   -234}, 0, {  -414,  -1742}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -704,    378,   -198}, 0, {   -70,  -1422}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -597,    634,   -614}, 0, {  -322,  -2886}, {0xc2, 0xc2, 0xc2, 0xff}}},\n};\n\n// 0x070061E0 - 0x070062D0\nstatic const Vtx intro_seg7_vertex_070061E0[] = {\n    {{{  -704,    378,   -198}, 0, {   -70,  -1422}, {0xb0, 0xb0, 0xb0, 0xff}}},\n    {{{  -486,    303,   -423}, 0, {   384,  -1908}, {0xb0, 0xb0, 0xb0, 0xff}}},\n    {{{  -486,    419,   -222}, 0, {   384,  -1908}, {0xb0, 0xb0, 0xb0, 0xff}}},\n    {{{  -445,    780,   -430}, 0, {    -4,  -3226}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -445,    664,   -631}, 0, {    -4,  -3226}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -597,    634,   -614}, 0, {  -322,  -2886}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -597,    750,   -413}, 0, {  -322,  -2886}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -619,    825,   -409}, 0, {  -446,  -3040}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -599,    824,   -456}, 0, {  -424,  -3140}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -804,    824,   -456}, 0, {  -908,  -2820}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -783,    825,   -409}, 0, {  -832,  -2784}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -412,    519,   -279}, 0, {   424,  -2370}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  -445,    664,   -631}, 0, {    -4,  -3226}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  -445,    780,   -430}, 0, {    -4,  -3226}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  -412,    403,   -481}, 0, {   424,  -2370}, {0xbb, 0xbb, 0xbb, 0xff}}},\n};\n\n// 0x070062D0 - 0x070063C0\nstatic const Vtx intro_seg7_vertex_070062D0[] = {\n    {{{  -779,    523,   -234}, 0, {  -414,  -1742}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -799,    496,   -266}, 0, {  -454,  -1686}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -704,    378,   -198}, 0, {   -70,  -1422}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -704,    378,   -198}, 0, {   -70,  -1422}, {0xb0, 0xb0, 0xb0, 0xff}}},\n    {{{  -704,    261,   -399}, 0, {   -70,  -1422}, {0xb0, 0xb0, 0xb0, 0xff}}},\n    {{{  -486,    303,   -423}, 0, {   384,  -1908}, {0xb0, 0xb0, 0xb0, 0xff}}},\n    {{{  -486,    419,   -222}, 0, {   384,  -1908}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  -486,    303,   -423}, 0, {   384,  -1908}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  -412,    403,   -481}, 0, {   424,  -2370}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  -412,    519,   -279}, 0, {   424,  -2370}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  -597,    750,   -413}, 0, {  -322,  -2886}, {0x5e, 0x5e, 0x5e, 0xff}}},\n    {{{  -462,    777,   -381}, 0, {   -14,  -3116}, {0x5e, 0x5e, 0x5e, 0xff}}},\n    {{{  -445,    780,   -430}, 0, {    -4,  -3226}, {0x5e, 0x5e, 0x5e, 0xff}}},\n    {{{  -604,    749,   -396}, 0, {  -326,  -2846}, {0x5e, 0x5e, 0x5e, 0xff}}},\n    {{{  -590,    752,   -367}, 0, {  -280,  -2832}, {0x5e, 0x5e, 0x5e, 0xff}}},\n};\n\n// 0x070063C0 - 0x070064B0\nstatic const Vtx intro_seg7_vertex_070063C0[] = {\n    {{{  -433,    545,   -247}, 0, {   366,  -2354}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -445,    780,   -430}, 0, {    -4,  -3226}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -462,    777,   -381}, 0, {   -14,  -3116}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -779,    523,   -234}, 0, {  -414,  -1742}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -704,    378,   -198}, 0, {   -70,  -1422}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -695,    420,   -175}, 0, {   -78,  -1510}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -594,    605,   -329}, 0, {  -118,  -2386}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -599,    824,   -456}, 0, {  -424,  -3140}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -619,    825,   -409}, 0, {  -446,  -3040}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -613,    593,   -275}, 0, {  -120,  -2240}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -590,    752,   -367}, 0, {  -280,  -2832}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -597,    603,   -319}, 0, {  -118,  -2358}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -580,    611,   -285}, 0, {   -66,  -2354}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -604,    749,   -396}, 0, {  -326,  -2846}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -613,    593,   -275}, 0, {  -120,  -2240}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x070064B0 - 0x070065B0\nstatic const Vtx intro_seg7_vertex_070064B0[] = {\n    {{{  -854,    840,   -464}, 0, { -1044,  -2796}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{ -1044,    724,   -666}, 0, { -1492,  -2502}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{ -1044,    840,   -465}, 0, { -1492,  -2502}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -433,    545,   -247}, 0, {   366,  -2354}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -412,    519,   -279}, 0, {   424,  -2370}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -445,    780,   -430}, 0, {    -4,  -3226}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -498,    458,   -197}, 0, {   332,  -1950}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -486,    419,   -222}, 0, {   384,  -1908}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -695,    420,   -175}, 0, {   -78,  -1510}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -704,    378,   -198}, 0, {   -70,  -1422}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{ -1036,    841,   -418}, 0, { -1446,  -2446}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{ -1220,    680,   -372}, 0, { -1692,  -1670}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{ -1220,    564,   -574}, 0, { -1692,  -1670}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{ -1082,    454,   -510}, 0, { -1220,  -1502}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{ -1190,    702,   -337}, 0, { -1622,  -1722}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{ -1082,    570,   -309}, 0, { -1220,  -1502}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x070065B0 - 0x07006690\nstatic const Vtx intro_seg7_vertex_070065B0[] = {\n    {{{  -854,    840,   -464}, 0, { -1044,  -2796}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -854,    723,   -666}, 0, { -1044,  -2796}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{ -1044,    724,   -666}, 0, { -1492,  -2502}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{ -1082,    570,   -309}, 0, { -1220,  -1502}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{ -1082,    454,   -510}, 0, { -1220,  -1502}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{ -1224,    399,   -479}, 0, { -1478,  -1090}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{ -1224,    515,   -277}, 0, { -1478,  -1090}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{ -1182,    531,   -239}, 0, { -1374,  -1140}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{ -1043,    585,   -270}, 0, { -1120,  -1544}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -854,    840,   -464}, 0, { -1044,  -2796}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{ -1044,    840,   -465}, 0, { -1492,  -2502}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{ -1036,    841,   -418}, 0, { -1446,  -2446}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{ -1034,    268,   -403}, 0, {  -854,   -932}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{ -1034,    384,   -201}, 0, {  -854,   -932}, {0x4a, 0x4a, 0x4a, 0xff}}},\n};\n\n// 0x07006690 - 0x07006770\nstatic const Vtx intro_seg7_vertex_07006690[] = {\n    {{{ -1190,    702,   -337}, 0, { -1622,  -1722}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{ -1220,    680,   -372}, 0, { -1692,  -1670}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{ -1043,    585,   -270}, 0, { -1120,  -1544}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{ -1082,    570,   -309}, 0, { -1220,  -1502}, {0x95, 0x95, 0x95, 0xff}}},\n    {{{ -1182,    531,   -239}, 0, { -1374,  -1140}, {0xa0, 0xa0, 0xa0, 0xff}}},\n    {{{ -1034,    384,   -201}, 0, {  -854,   -932}, {0xa0, 0xa0, 0xa0, 0xff}}},\n    {{{ -1030,    426,   -179}, 0, {  -876,  -1012}, {0xa0, 0xa0, 0xa0, 0xff}}},\n    {{{ -1224,    515,   -277}, 0, { -1478,  -1090}, {0xa0, 0xa0, 0xa0, 0xff}}},\n    {{{  -989,    697,   -335}, 0, { -1144,  -2018}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -948,    682,   -373}, 0, { -1054,  -2100}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -945,    684,   -374}, 0, { -1050,  -2112}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -861,    841,   -418}, 0, { -1036,  -2718}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{  -854,    840,   -464}, 0, { -1044,  -2796}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{ -1036,    841,   -418}, 0, { -1446,  -2446}, {0x73, 0x73, 0x73, 0xff}}},\n};\n\n// 0x07006770 - 0x07006850\nstatic const Vtx intro_seg7_vertex_07006770[] = {\n    {{{ -1034,    384,   -201}, 0, {  -854,   -932}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{ -1034,    268,   -403}, 0, {  -854,   -932}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  -831,    337,   -443}, 0, {  -472,  -1486}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  -831,    453,   -241}, 0, {  -472,  -1486}, {0xbb, 0xbb, 0xbb, 0xff}}},\n    {{{  -730,    745,   -410}, 0, {  -626,  -2662}, {0x66, 0x66, 0x66, 0xff}}},\n    {{{  -730,    629,   -611}, 0, {  -626,  -2662}, {0x66, 0x66, 0x66, 0xff}}},\n    {{{  -854,    723,   -666}, 0, { -1044,  -2796}, {0x66, 0x66, 0x66, 0xff}}},\n    {{{  -854,    840,   -464}, 0, { -1044,  -2796}, {0x66, 0x66, 0x66, 0xff}}},\n    {{{  -989,    697,   -335}, 0, { -1144,  -2018}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -945,    684,   -374}, 0, { -1050,  -2112}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -946,    728,   -353}, 0, { -1084,  -2192}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -846,    489,   -215}, 0, {  -528,  -1516}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -831,    453,   -241}, 0, {  -472,  -1486}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -759,    608,   -330}, 0, {  -510,  -2136}, {0xff, 0xff, 0xfe, 0xff}}},\n};\n\n// 0x07006850 - 0x07006940\nstatic const Vtx intro_seg7_vertex_07006850[] = {\n    {{{  -856,    646,   -352}, 0, {  -790,  -2118}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{  -856,    529,   -554}, 0, {  -790,  -2118}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{  -730,    629,   -611}, 0, {  -626,  -2662}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{  -730,    745,   -410}, 0, {  -626,  -2662}, {0xd1, 0xd1, 0xd1, 0xff}}},\n    {{{  -759,    608,   -330}, 0, {  -510,  -2136}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -759,    491,   -532}, 0, {  -510,  -2136}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -856,    529,   -554}, 0, {  -790,  -2118}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -856,    646,   -352}, 0, {  -790,  -2118}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{ -1030,    426,   -179}, 0, {  -876,  -1012}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{ -1034,    384,   -201}, 0, {  -854,   -932}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -831,    453,   -241}, 0, {  -472,  -1486}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -846,    489,   -215}, 0, {  -528,  -1516}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -730,    745,   -410}, 0, {  -626,  -2662}, {0xcc, 0xcc, 0xcc, 0xff}}},\n    {{{  -854,    840,   -464}, 0, { -1044,  -2796}, {0xcc, 0xcc, 0xcc, 0xff}}},\n    {{{  -861,    841,   -418}, 0, { -1036,  -2718}, {0xcc, 0xcc, 0xcc, 0xff}}},\n};\n\n// 0x07006940 - 0x07006A30\nstatic const Vtx intro_seg7_vertex_07006940[] = {\n    {{{  -867,    683,   -327}, 0, {  -838,  -2160}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{  -946,    728,   -353}, 0, { -1084,  -2192}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{  -945,    684,   -374}, 0, { -1050,  -2112}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{  -925,    673,   -368}, 0, {  -988,  -2104}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{  -865,    649,   -343}, 0, {  -810,  -2098}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{  -846,    489,   -215}, 0, {  -528,  -1516}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -759,    608,   -330}, 0, {  -510,  -2136}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -786,    618,   -289}, 0, {  -560,  -2058}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -831,    453,   -241}, 0, {  -472,  -1486}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  -831,    337,   -443}, 0, {  -472,  -1486}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  -759,    491,   -532}, 0, {  -510,  -2136}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  -759,    608,   -330}, 0, {  -510,  -2136}, {0xdd, 0xdd, 0xdd, 0xff}}},\n    {{{  -762,    766,   -374}, 0, {  -702,  -2610}, {0xcc, 0xcc, 0xcc, 0xff}}},\n    {{{  -730,    745,   -410}, 0, {  -626,  -2662}, {0xcc, 0xcc, 0xcc, 0xff}}},\n    {{{  -861,    841,   -418}, 0, { -1036,  -2718}, {0xcc, 0xcc, 0xcc, 0xff}}},\n};\n\n// 0x07006A30 - 0x07006AC0\nstatic const Vtx intro_seg7_vertex_07006A30[] = {\n    {{{  -786,    618,   -289}, 0, {  -560,  -2058}, {0xa0, 0xa0, 0xa0, 0xff}}},\n    {{{  -759,    608,   -330}, 0, {  -510,  -2136}, {0xa0, 0xa0, 0xa0, 0xff}}},\n    {{{  -989,    697,   -335}, 0, { -1144,  -2018}, {0xa0, 0xa0, 0xa0, 0xff}}},\n    {{{  -948,    682,   -373}, 0, { -1054,  -2100}, {0xa0, 0xa0, 0xa0, 0xff}}},\n    {{{  -762,    766,   -374}, 0, {  -702,  -2610}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -865,    649,   -343}, 0, {  -810,  -2098}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -856,    646,   -352}, 0, {  -790,  -2118}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -867,    683,   -327}, 0, {  -838,  -2160}, {0xff, 0xff, 0xfe, 0xff}}},\n    {{{  -730,    745,   -410}, 0, {  -626,  -2662}, {0xff, 0xff, 0xfe, 0xff}}},\n};\n\n// 0x07006AC0 - 0x07006BC0\nstatic const Vtx intro_seg7_vertex_07006AC0[] = {\n    {{{  2484,   2075,   -818}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{ -2423,  -1994,   -818}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  2484,  -1994,   -818}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{ -2423,   2075,   -818}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -123,    259,   -409}, 0, {     0,      0}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -123,    366,   -224}, 0, {     0,      0}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  -229,    648,   -634}, 0, {     0,      0}, {0x4a, 0x4a, 0x4a, 0xff}}},\n    {{{  1401,    395,   -178}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  1401,    443,   -206}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  1334,    445,   -207}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  1334,    395,   -178}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  1449,    395,   -178}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  1449,    443,   -206}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  1334,    316,   -132}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  1401,    316,   -132}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  1401,    681,   -343}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n};\n\n// 0x07006BC0 - 0x07006CC0\nstatic const Vtx intro_seg7_vertex_07006BC0[] = {\n    {{{  1202,    445,   -207}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  1334,    592,   -292}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  1339,    681,   -343}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  1334,    445,   -207}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  1401,    681,   -343}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  1133,    453,   -212}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  1334,    395,   -178}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  1025,    350,   -152}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   981,    396,   -178}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   947,    372,   -165}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  1133,    395,   -178}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   985,    436,   -202}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  1062,    434,   -201}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  1048,    490,   -233}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   972,    474,   -224}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  1055,    387,   -173}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n};\n\n// 0x07006CC0 - 0x07006DC0\nstatic const Vtx intro_seg7_vertex_07006CC0[] = {\n    {{{  1048,    490,   -233}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  1018,    524,   -252}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   972,    474,   -224}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  1025,    350,   -152}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{  1055,    387,   -173}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   981,    396,   -178}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   888,    682,   -344}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   904,    625,   -311}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   957,    691,   -349}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   947,    372,   -165}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   973,    322,   -136}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   943,    489,   -232}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   974,    541,   -263}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   957,    634,   -316}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   999,    633,   -316}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   999,    690,   -348}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n};\n\n// 0x07006DC0 - 0x07006EB0\nstatic const Vtx intro_seg7_vertex_07006DC0[] = {\n    {{{   815,    652,   -327}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   904,    625,   -311}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   888,    682,   -344}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   973,    322,   -136}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   947,    372,   -165}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   909,    365,   -161}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   915,    309,   -129}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   943,    489,   -232}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   974,    541,   -263}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   923,    547,   -266}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   899,    492,   -234}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   872,    543,   -263}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   872,    367,   -162}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   844,    316,   -133}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   863,    608,   -301}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n};\n\n// 0x07006EB0 - 0x07006FB0\nstatic const Vtx intro_seg7_vertex_07006EB0[] = {\n    {{{   765,    601,   -297}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   829,    580,   -285}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   863,    608,   -301}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   856,    484,   -230}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   899,    492,   -234}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   872,    543,   -263}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   807,    517,   -248}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   812,    455,   -213}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   872,    367,   -162}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   841,    382,   -170}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   844,    316,   -133}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   795,    337,   -145}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   815,    652,   -327}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   820,    411,   -187}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   759,    376,   -167}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   733,    462,   -217}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n};\n\n// 0x07006FB0 - 0x070070B0\nstatic const Vtx intro_seg7_vertex_07006FB0[] = {\n    {{{   742,    414,   -189}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   812,    455,   -213}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   733,    462,   -217}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   820,    411,   -187}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   742,    554,   -270}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   733,    512,   -246}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   807,    517,   -248}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   829,    580,   -285}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   765,    601,   -297}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   759,    376,   -167}, 0, {     0,      0}, {0xff, 0x2f, 0x2f, 0xff}}},\n    {{{   230,     73,      1}, 0, {     0,      0}, {0xba, 0xba, 0x00, 0xff}}},\n    {{{   209,     94,     12}, 0, {     0,      0}, {0xba, 0xba, 0x00, 0xff}}},\n    {{{   105,     33,     48}, 0, {     0,      0}, {0xba, 0xba, 0x00, 0xff}}},\n    {{{  1414,    299,   -137}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  1401,    316,   -132}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  1334,    316,   -132}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n};\n\n// 0x070070B0 - 0x070071A0\nstatic const Vtx intro_seg7_vertex_070070B0[] = {\n    {{{  1414,    447,   -223}, 0, {     0,      0}, {0xb4, 0xa0, 0x3b, 0xff}}},\n    {{{  1401,    443,   -206}, 0, {     0,      0}, {0xb4, 0xa0, 0x3b, 0xff}}},\n    {{{  1449,    443,   -206}, 0, {     0,      0}, {0xb4, 0xa0, 0x3b, 0xff}}},\n    {{{  1462,    447,   -223}, 0, {     0,      0}, {0xb4, 0xa0, 0x3b, 0xff}}},\n    {{{  1462,    447,   -223}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  1449,    395,   -178}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  1462,    378,   -183}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  1401,    395,   -178}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  1414,    378,   -183}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  1401,    316,   -132}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  1414,    299,   -137}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  1449,    443,   -206}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  1320,    299,   -137}, 0, {     0,      0}, {0xa8, 0x95, 0x37, 0xff}}},\n    {{{  1334,    316,   -132}, 0, {     0,      0}, {0xa8, 0x95, 0x37, 0xff}}},\n    {{{  1334,    395,   -178}, 0, {     0,      0}, {0xa8, 0x95, 0x37, 0xff}}},\n};\n\n// 0x070071A0 - 0x07007280\nstatic const Vtx intro_seg7_vertex_070071A0[] = {\n    {{{  1414,    299,   -137}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  1334,    316,   -132}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  1320,    299,   -137}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  1414,    685,   -360}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  1401,    681,   -343}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  1401,    443,   -206}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  1414,    447,   -223}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  1333,    685,   -360}, 0, {     0,      0}, {0xb4, 0xa0, 0x3b, 0xff}}},\n    {{{  1401,    681,   -343}, 0, {     0,      0}, {0xb4, 0xa0, 0x3b, 0xff}}},\n    {{{  1414,    685,   -360}, 0, {     0,      0}, {0xb4, 0xa0, 0x3b, 0xff}}},\n    {{{  1339,    681,   -343}, 0, {     0,      0}, {0xb4, 0xa0, 0x3b, 0xff}}},\n    {{{  1320,    299,   -137}, 0, {     0,      0}, {0xa8, 0x95, 0x37, 0xff}}},\n    {{{  1334,    395,   -178}, 0, {     0,      0}, {0xa8, 0x95, 0x37, 0xff}}},\n    {{{  1320,    378,   -183}, 0, {     0,      0}, {0xa8, 0x95, 0x37, 0xff}}},\n};\n\n// 0x07007280 - 0x07007370\nstatic const Vtx intro_seg7_vertex_07007280[] = {\n    {{{  1120,    451,   -225}, 0, {     0,      0}, {0x84, 0x84, 0x2b, 0xff}}},\n    {{{  1133,    453,   -212}, 0, {     0,      0}, {0x84, 0x84, 0x2b, 0xff}}},\n    {{{  1333,    685,   -360}, 0, {     0,      0}, {0x84, 0x84, 0x2b, 0xff}}},\n    {{{  1334,    592,   -292}, 0, {     0,      0}, {0xa8, 0x95, 0x37, 0xff}}},\n    {{{  1320,    450,   -224}, 0, {     0,      0}, {0xa8, 0x95, 0x37, 0xff}}},\n    {{{  1334,    445,   -207}, 0, {     0,      0}, {0xa8, 0x95, 0x37, 0xff}}},\n    {{{  1320,    553,   -284}, 0, {     0,      0}, {0xa8, 0x95, 0x37, 0xff}}},\n    {{{  1202,    445,   -207}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  1229,    450,   -224}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  1334,    592,   -292}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  1320,    553,   -284}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  1334,    445,   -207}, 0, {     0,      0}, {0xb4, 0xa0, 0x3b, 0xff}}},\n    {{{  1229,    450,   -224}, 0, {     0,      0}, {0xb4, 0xa0, 0x3b, 0xff}}},\n    {{{  1202,    445,   -207}, 0, {     0,      0}, {0xb4, 0xa0, 0x3b, 0xff}}},\n    {{{  1320,    450,   -224}, 0, {     0,      0}, {0xb4, 0xa0, 0x3b, 0xff}}},\n};\n\n// 0x07007370 - 0x07007470\nstatic const Vtx intro_seg7_vertex_07007370[] = {\n    {{{  1123,    378,   -183}, 0, {     0,      0}, {0xa8, 0x95, 0x37, 0xff}}},\n    {{{  1133,    453,   -212}, 0, {     0,      0}, {0xa8, 0x95, 0x37, 0xff}}},\n    {{{  1120,    451,   -225}, 0, {     0,      0}, {0xa8, 0x95, 0x37, 0xff}}},\n    {{{  1133,    453,   -212}, 0, {     0,      0}, {0x84, 0x84, 0x2b, 0xff}}},\n    {{{  1339,    681,   -343}, 0, {     0,      0}, {0x84, 0x84, 0x2b, 0xff}}},\n    {{{  1333,    685,   -360}, 0, {     0,      0}, {0x84, 0x84, 0x2b, 0xff}}},\n    {{{  1320,    378,   -183}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  1334,    395,   -178}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  1133,    395,   -178}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  1123,    378,   -183}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  1123,    378,   -183}, 0, {     0,      0}, {0x70, 0x70, 0x19, 0xff}}},\n    {{{  1133,    395,   -178}, 0, {     0,      0}, {0x70, 0x70, 0x19, 0xff}}},\n    {{{  1133,    453,   -212}, 0, {     0,      0}, {0x70, 0x70, 0x19, 0xff}}},\n    {{{  1013,    694,   -366}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   999,    690,   -348}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   999,    633,   -316}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n};\n\n// 0x07007470 - 0x07007560\nstatic const Vtx intro_seg7_vertex_07007470[] = {\n    {{{  1060,    488,   -247}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  1062,    434,   -201}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  1075,    426,   -211}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  1068,    376,   -182}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  1055,    387,   -173}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  1048,    490,   -233}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  1025,    350,   -152}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  1035,    335,   -158}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  1026,    526,   -269}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  1018,    524,   -252}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   973,    322,   -136}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   979,    306,   -141}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   956,    696,   -367}, 0, {     0,      0}, {0xb4, 0xb4, 0x3b, 0xff}}},\n    {{{   957,    691,   -349}, 0, {     0,      0}, {0xb4, 0xb4, 0x3b, 0xff}}},\n    {{{   999,    690,   -348}, 0, {     0,      0}, {0xb4, 0xb4, 0x3b, 0xff}}},\n};\n\n// 0x07007560 - 0x07007650\nstatic const Vtx intro_seg7_vertex_07007560[] = {\n    {{{  1013,    694,   -366}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   999,    633,   -316}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{  1012,    616,   -321}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   957,    634,   -316}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   959,    616,   -321}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   979,    306,   -141}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   973,    322,   -136}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   915,    309,   -129}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   916,    292,   -133}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   956,    696,   -367}, 0, {     0,      0}, {0xb4, 0xb4, 0x3b, 0xff}}},\n    {{{   999,    690,   -348}, 0, {     0,      0}, {0xb4, 0xb4, 0x3b, 0xff}}},\n    {{{  1013,    694,   -366}, 0, {     0,      0}, {0xb4, 0xb4, 0x3b, 0xff}}},\n    {{{   960,    462,   -231}, 0, {     0,      0}, {0xa8, 0xa8, 0x37, 0xff}}},\n    {{{   972,    429,   -212}, 0, {     0,      0}, {0xa8, 0xa8, 0x37, 0xff}}},\n    {{{   985,    436,   -202}, 0, {     0,      0}, {0xa8, 0xa8, 0x37, 0xff}}},\n};\n\n// 0x07007650 - 0x07007740\nstatic const Vtx intro_seg7_vertex_07007650[] = {\n    {{{   978,    546,   -280}, 0, {     0,      0}, {0xdf, 0xdf, 0x1f, 0xff}}},\n    {{{   974,    541,   -263}, 0, {     0,      0}, {0xdf, 0xdf, 0x1f, 0xff}}},\n    {{{  1026,    526,   -269}, 0, {     0,      0}, {0xdf, 0xdf, 0x1f, 0xff}}},\n    {{{  1018,    524,   -252}, 0, {     0,      0}, {0xdf, 0xdf, 0x1f, 0xff}}},\n    {{{   959,    616,   -321}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   957,    634,   -316}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   904,    625,   -311}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   909,    608,   -316}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   985,    436,   -202}, 0, {     0,      0}, {0x90, 0x90, 0x39, 0xff}}},\n    {{{   968,    394,   -192}, 0, {     0,      0}, {0x90, 0x90, 0x39, 0xff}}},\n    {{{   981,    396,   -178}, 0, {     0,      0}, {0x90, 0x90, 0x39, 0xff}}},\n    {{{   972,    429,   -212}, 0, {     0,      0}, {0x90, 0x90, 0x39, 0xff}}},\n    {{{   943,    489,   -232}, 0, {     0,      0}, {0xdf, 0xdf, 0x1f, 0xff}}},\n    {{{   960,    462,   -231}, 0, {     0,      0}, {0xdf, 0xdf, 0x1f, 0xff}}},\n    {{{   972,    474,   -224}, 0, {     0,      0}, {0xdf, 0xdf, 0x1f, 0xff}}},\n};\n\n// 0x07007740 - 0x07007830\nstatic const Vtx intro_seg7_vertex_07007740[] = {\n    {{{   972,    474,   -224}, 0, {     0,      0}, {0xa8, 0xa8, 0x37, 0xff}}},\n    {{{   960,    462,   -231}, 0, {     0,      0}, {0xa8, 0xa8, 0x37, 0xff}}},\n    {{{   985,    436,   -202}, 0, {     0,      0}, {0xa8, 0xa8, 0x37, 0xff}}},\n    {{{   981,    396,   -178}, 0, {     0,      0}, {0x7e, 0x7e, 0x11, 0xff}}},\n    {{{   968,    394,   -192}, 0, {     0,      0}, {0x7e, 0x7e, 0x11, 0xff}}},\n    {{{   947,    372,   -165}, 0, {     0,      0}, {0x7e, 0x7e, 0x11, 0xff}}},\n    {{{   968,    394,   -192}, 0, {     0,      0}, {0x8c, 0x8c, 0x13, 0xff}}},\n    {{{   939,    375,   -182}, 0, {     0,      0}, {0x8c, 0x8c, 0x13, 0xff}}},\n    {{{   947,    372,   -165}, 0, {     0,      0}, {0x8c, 0x8c, 0x13, 0xff}}},\n    {{{   943,    489,   -232}, 0, {     0,      0}, {0xdf, 0xdf, 0x1f, 0xff}}},\n    {{{   936,    473,   -238}, 0, {     0,      0}, {0xdf, 0xdf, 0x1f, 0xff}}},\n    {{{   960,    462,   -231}, 0, {     0,      0}, {0xdf, 0xdf, 0x1f, 0xff}}},\n    {{{   909,    608,   -316}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   904,    625,   -311}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   872,    593,   -307}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n};\n\n// 0x07007830 - 0x07007920\nstatic const Vtx intro_seg7_vertex_07007830[] = {\n    {{{   915,    309,   -129}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   844,    316,   -133}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   840,    299,   -138}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   916,    292,   -133}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   923,    552,   -283}, 0, {     0,      0}, {0xc0, 0xc0, 0x2b, 0xff}}},\n    {{{   974,    541,   -263}, 0, {     0,      0}, {0xc0, 0xc0, 0x2b, 0xff}}},\n    {{{   978,    546,   -280}, 0, {     0,      0}, {0xc0, 0xc0, 0x2b, 0xff}}},\n    {{{   923,    547,   -266}, 0, {     0,      0}, {0xc0, 0xc0, 0x2b, 0xff}}},\n    {{{   884,    687,   -361}, 0, {     0,      0}, {0xa8, 0xa8, 0x37, 0xff}}},\n    {{{   888,    682,   -344}, 0, {     0,      0}, {0xa8, 0xa8, 0x37, 0xff}}},\n    {{{   957,    691,   -349}, 0, {     0,      0}, {0xa8, 0xa8, 0x37, 0xff}}},\n    {{{   956,    696,   -367}, 0, {     0,      0}, {0xa8, 0xa8, 0x37, 0xff}}},\n    {{{   868,    547,   -281}, 0, {     0,      0}, {0xa8, 0xa8, 0x37, 0xff}}},\n    {{{   872,    543,   -263}, 0, {     0,      0}, {0xa8, 0xa8, 0x37, 0xff}}},\n    {{{   923,    547,   -266}, 0, {     0,      0}, {0xa8, 0xa8, 0x37, 0xff}}},\n};\n\n// 0x07007920 - 0x07007A20\nstatic const Vtx intro_seg7_vertex_07007920[] = {\n    {{{   947,    372,   -165}, 0, {     0,      0}, {0x9a, 0x9a, 0x15, 0xff}}},\n    {{{   939,    375,   -182}, 0, {     0,      0}, {0x9a, 0x9a, 0x15, 0xff}}},\n    {{{   909,    365,   -161}, 0, {     0,      0}, {0x9a, 0x9a, 0x15, 0xff}}},\n    {{{   939,    375,   -182}, 0, {     0,      0}, {0xa0, 0xa0, 0x23, 0xff}}},\n    {{{   908,    370,   -179}, 0, {     0,      0}, {0xa0, 0xa0, 0x23, 0xff}}},\n    {{{   909,    365,   -161}, 0, {     0,      0}, {0xa0, 0xa0, 0x23, 0xff}}},\n    {{{   863,    468,   -235}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   900,    475,   -239}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   899,    492,   -234}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   943,    489,   -232}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   936,    473,   -238}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   856,    484,   -230}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   812,    455,   -213}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   868,    547,   -281}, 0, {     0,      0}, {0xa8, 0xa8, 0x37, 0xff}}},\n    {{{   923,    547,   -266}, 0, {     0,      0}, {0xa8, 0xa8, 0x37, 0xff}}},\n    {{{   923,    552,   -283}, 0, {     0,      0}, {0xa8, 0xa8, 0x37, 0xff}}},\n};\n\n// 0x07007A20 - 0x07007B20\nstatic const Vtx intro_seg7_vertex_07007A20[] = {\n    {{{   872,    593,   -307}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   863,    608,   -301}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   841,    569,   -293}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   904,    625,   -311}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   909,    365,   -161}, 0, {     0,      0}, {0xb4, 0xb4, 0x3b, 0xff}}},\n    {{{   908,    370,   -179}, 0, {     0,      0}, {0xb4, 0xb4, 0x3b, 0xff}}},\n    {{{   872,    367,   -162}, 0, {     0,      0}, {0xb4, 0xb4, 0x3b, 0xff}}},\n    {{{   878,    371,   -179}, 0, {     0,      0}, {0xb4, 0xb4, 0x3b, 0xff}}},\n    {{{   829,    580,   -285}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   841,    382,   -170}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   852,    382,   -185}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   833,    407,   -200}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   806,    655,   -343}, 0, {     0,      0}, {0x90, 0x90, 0x20, 0xff}}},\n    {{{   815,    652,   -327}, 0, {     0,      0}, {0x90, 0x90, 0x20, 0xff}}},\n    {{{   888,    682,   -344}, 0, {     0,      0}, {0x90, 0x90, 0x39, 0xff}}},\n    {{{   884,    687,   -361}, 0, {     0,      0}, {0x90, 0x90, 0x39, 0xff}}},\n};\n\n// 0x07007B20 - 0x07007C10\nstatic const Vtx intro_seg7_vertex_07007B20[] = {\n    {{{   872,    367,   -162}, 0, {     0,      0}, {0xdf, 0xdf, 0x1f, 0xff}}},\n    {{{   852,    382,   -185}, 0, {     0,      0}, {0xdf, 0xdf, 0x1f, 0xff}}},\n    {{{   841,    382,   -170}, 0, {     0,      0}, {0xdf, 0xdf, 0x1f, 0xff}}},\n    {{{   878,    371,   -179}, 0, {     0,      0}, {0xdf, 0xdf, 0x1f, 0xff}}},\n    {{{   841,    569,   -293}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   829,    580,   -285}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   807,    517,   -248}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   825,    530,   -271}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   840,    299,   -138}, 0, {     0,      0}, {0xf0, 0xf0, 0x00, 0xff}}},\n    {{{   844,    316,   -133}, 0, {     0,      0}, {0xf0, 0xf0, 0x00, 0xff}}},\n    {{{   786,    322,   -151}, 0, {     0,      0}, {0xf0, 0xf0, 0x00, 0xff}}},\n    {{{   820,    411,   -187}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   833,    407,   -200}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   826,    444,   -221}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   841,    382,   -170}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n};\n\n// 0x07007C10 - 0x07007CF0\nstatic const Vtx intro_seg7_vertex_07007C10[] = {\n    {{{   807,    517,   -248}, 0, {     0,      0}, {0x90, 0x90, 0x39, 0xff}}},\n    {{{   872,    543,   -263}, 0, {     0,      0}, {0x90, 0x90, 0x39, 0xff}}},\n    {{{   868,    547,   -281}, 0, {     0,      0}, {0x90, 0x90, 0x39, 0xff}}},\n    {{{   825,    530,   -271}, 0, {     0,      0}, {0x90, 0x90, 0x39, 0xff}}},\n    {{{   820,    411,   -187}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   826,    444,   -221}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   812,    455,   -213}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   863,    468,   -235}, 0, {     0,      0}, {0xff, 0xff, 0x39, 0xff}}},\n    {{{   786,    322,   -151}, 0, {     0,      0}, {0xc0, 0xc0, 0x2b, 0xff}}},\n    {{{   759,    376,   -167}, 0, {     0,      0}, {0xc0, 0xc0, 0x2b, 0xff}}},\n    {{{   747,    364,   -175}, 0, {     0,      0}, {0xc0, 0xc0, 0x2b, 0xff}}},\n    {{{   844,    316,   -133}, 0, {     0,      0}, {0xf0, 0xf0, 0x00, 0xff}}},\n    {{{   795,    337,   -145}, 0, {     0,      0}, {0xf0, 0xf0, 0x00, 0xff}}},\n    {{{   786,    322,   -151}, 0, {     0,      0}, {0xf0, 0xf0, 0x00, 0xff}}},\n};\n\n// 0x07007CF0 - 0x07007DF0\nstatic const Vtx intro_seg7_vertex_07007CF0[] = {\n    {{{   753,    600,   -311}, 0, {     0,      0}, {0x84, 0x84, 0x2b, 0xff}}},\n    {{{   765,    601,   -297}, 0, {     0,      0}, {0x84, 0x84, 0x2b, 0xff}}},\n    {{{   806,    655,   -343}, 0, {     0,      0}, {0x84, 0x84, 0x2b, 0xff}}},\n    {{{   815,    652,   -327}, 0, {     0,      0}, {0x84, 0x84, 0x2b, 0xff}}},\n    {{{   729,    550,   -283}, 0, {     0,      0}, {0x84, 0x84, 0x2b, 0xff}}},\n    {{{   742,    554,   -270}, 0, {     0,      0}, {0x84, 0x84, 0x2b, 0xff}}},\n    {{{   786,    322,   -151}, 0, {     0,      0}, {0xc0, 0xc0, 0x2b, 0xff}}},\n    {{{   795,    337,   -145}, 0, {     0,      0}, {0xc0, 0xc0, 0x2b, 0xff}}},\n    {{{   759,    376,   -167}, 0, {     0,      0}, {0xc0, 0xc0, 0x2b, 0xff}}},\n    {{{   720,    455,   -228}, 0, {     0,      0}, {0xa8, 0x95, 0x37, 0xff}}},\n    {{{   733,    512,   -246}, 0, {     0,      0}, {0xa8, 0x95, 0x37, 0xff}}},\n    {{{   720,    506,   -257}, 0, {     0,      0}, {0xa8, 0x95, 0x37, 0xff}}},\n    {{{   747,    364,   -175}, 0, {     0,      0}, {0xa8, 0xa8, 0x17, 0xff}}},\n    {{{   759,    376,   -167}, 0, {     0,      0}, {0xa8, 0xa8, 0x17, 0xff}}},\n    {{{   742,    414,   -189}, 0, {     0,      0}, {0xa8, 0xa8, 0x17, 0xff}}},\n    {{{   729,    405,   -199}, 0, {     0,      0}, {0xa8, 0xa8, 0x17, 0xff}}},\n};\n\n// 0x07007DF0 - 0x07007EA0\nstatic const Vtx intro_seg7_vertex_07007DF0[] = {\n    {{{   729,    405,   -199}, 0, {     0,      0}, {0x9a, 0x9a, 0x15, 0xff}}},\n    {{{   733,    462,   -217}, 0, {     0,      0}, {0x9a, 0x9a, 0x15, 0xff}}},\n    {{{   720,    455,   -228}, 0, {     0,      0}, {0x9a, 0x9a, 0x15, 0xff}}},\n    {{{   742,    414,   -189}, 0, {     0,      0}, {0x9a, 0x9a, 0x15, 0xff}}},\n    {{{   720,    506,   -257}, 0, {     0,      0}, {0x8b, 0x8b, 0x00, 0xff}}},\n    {{{   733,    512,   -246}, 0, {     0,      0}, {0x8b, 0x8b, 0x00, 0xff}}},\n    {{{   742,    554,   -270}, 0, {     0,      0}, {0x8b, 0x8b, 0x00, 0xff}}},\n    {{{   729,    550,   -283}, 0, {     0,      0}, {0x8b, 0x8b, 0x00, 0xff}}},\n    {{{   720,    455,   -228}, 0, {     0,      0}, {0xa8, 0x95, 0x37, 0xff}}},\n    {{{   733,    462,   -217}, 0, {     0,      0}, {0xa8, 0x95, 0x37, 0xff}}},\n    {{{   733,    512,   -246}, 0, {     0,      0}, {0xa8, 0x95, 0x37, 0xff}}},\n};\n#endif\n\n// 0x07007EA0 - 0x07007EA2\nALIGNED8 static const Texture intro_seg7_texture_0[] = {\n#include \"levels/intro/0.rgba16.inc.c\"\n};\n\n// 0x070086A0 - 0x070086A2\nALIGNED8 static const Texture intro_seg7_texture_1[] = {\n#include \"levels/intro/1.rgba16.inc.c\"\n};\n\n#if defined(VERSION_CN)\n// 0x07008AA0 - 0x0700A398\nstatic const Gfx intro_seg7_dl_07008AA0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, intro_seg7_texture_1),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(intro_seg7_vertex_07000000, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07000030, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07000060, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07000090, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070000C0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070000F0, 5, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 4, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07000140, 5, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 1, 4, 0),\n    gsSPVertex(intro_seg7_vertex_07000190, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070001D0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07000210, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07000250, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07000280, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070002B0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070002E0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07000310, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07000340, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07000370, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070003A0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070003D0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 1, 0, 0),\n    gsSPVertex(intro_seg7_vertex_07000410, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07000450, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07000490, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070004D0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07000510, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07000550, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07000590, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070005C0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070005F0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07000620, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07000650, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07000680, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070006B0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070006E0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07000720, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07000750, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07000780, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070007B0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070007E0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07000810, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07000840, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07000870, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070008A0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070008D0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07000900, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07000940, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 0, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07000980, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070009C0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_07000A00, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07000A40, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07000A80, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_07000AC0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07000AF0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07000B20, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07000B50, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07000B80, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07000BB0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07000BE0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07000C10, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07000C40, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07000C70, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07000CA0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07000CD0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07000D00, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07000D30, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07000D60, 16, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSP1Triangle(3, 4, 2, 0),\n    gsSP1Triangle(2, 4, 5, 0),\n    gsSP1Triangle(6, 7, 4, 0),\n    gsSP1Triangle(7, 8, 4, 0),\n    gsSP1Triangle(8, 9, 4, 0),\n    gsSP1Triangle(4, 9, 5, 0),\n    gsSP1Triangle(10, 11, 12, 0),\n    gsSP1Triangle(12, 11, 13, 0),\n    gsSP1Triangle(14, 5, 11, 0),\n    gsSP1Triangle(5, 15, 11, 0),\n    gsSP1Triangle(11, 15, 13, 0),\n    gsSPVertex(intro_seg7_vertex_07000E60, 15, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSP1Triangle(4, 5, 6, 0),\n    gsSP1Triangle(6, 5, 7, 0),\n    gsSP1Triangle(7, 5, 8, 0),\n    gsSP1Triangle(9, 10, 5, 0),\n    gsSP1Triangle(5, 10, 8, 0),\n    gsSP1Triangle(8, 10, 11, 0),\n    gsSP1Triangle(12, 13, 14, 0),\n    gsSPVertex(intro_seg7_vertex_07000F50, 16, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 4, 1, 0),\n    gsSP1Triangle(1, 4, 2, 0),\n    gsSP1Triangle(4, 5, 2, 0),\n    gsSP1Triangle(2, 5, 6, 0),\n    gsSP1Triangle(7, 8, 9, 0),\n    gsSP1Triangle(8, 10, 11, 0),\n    gsSP1Triangle(11, 12, 8, 0),\n    gsSP1Triangle(13, 14, 15, 0),\n    gsSPVertex(intro_seg7_vertex_07001050, 14, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSP1Triangle(4, 5, 1, 0),\n    gsSP1Triangle(1, 5, 6, 0),\n    gsSP1Triangle(6, 7, 1, 0),\n    gsSP1Triangle(8, 9, 10, 0),\n    gsSP1Triangle(11, 12, 13, 0),\n    gsSPVertex(intro_seg7_vertex_07001130, 15, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSP1Triangle(2, 3, 4, 0),\n    gsSP1Triangle(5, 6, 0, 0),\n    gsSP1Triangle(0, 6, 1, 0),\n    gsSP1Triangle(1, 6, 7, 0),\n    gsSP1Triangle(7, 6, 8, 0),\n    gsSP1Triangle(8, 6, 9, 0),\n    gsSP1Triangle(6, 10, 9, 0),\n    gsSP1Triangle(3, 7, 11, 0),\n    gsSP1Triangle(11, 7, 12, 0),\n    gsSP1Triangle(12, 7, 8, 0),\n    gsSP1Triangle(13, 9, 14, 0),\n    gsSPVertex(intro_seg7_vertex_07001220, 5, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSP1Triangle(4, 2, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07001270, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_070012B0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 1, 0, 0),\n    gsSPVertex(intro_seg7_vertex_070012F0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07001330, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07001370, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_070013B0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_070013F0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07001430, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07001470, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070014B0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070014F0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07001530, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07001570, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 0, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070015B0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_070015F0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_07001630, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07001670, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070016A0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070016D0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07001700, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07001730, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07001760, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07001790, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_070017D0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07001810, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07001850, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07001890, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070018D0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07001910, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 1, 0, 0),\n    gsSPVertex(intro_seg7_vertex_07001950, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07001990, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070019D0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07001A10, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 1, 0, 0),\n    gsSPVertex(intro_seg7_vertex_07001A50, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_07001A90, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07001AC0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07001AF0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07001B20, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_07001B60, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07001BA0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07001BE0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07001C10, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07001C40, 5, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 4, 0),\n    gsSPVertex(intro_seg7_vertex_07001C90, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07001CC0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07001CF0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07001D20, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 1, 0, 0),\n    gsSPVertex(intro_seg7_vertex_07001D60, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07001D90, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07001DD0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_07001E10, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07001E50, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07001E80, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07001EB0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07001EE0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07001F10, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07001F40, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07001F70, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07001FA0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07001FD0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07002000, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07002030, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07002060, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07002090, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070020C0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070020F0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07002120, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07002150, 15, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSP1Triangle(4, 5, 1, 0),\n    gsSP1Triangle(5, 6, 1, 0),\n    gsSP1Triangle(1, 6, 3, 0),\n    gsSP1Triangle(7, 3, 8, 0),\n    gsSP1Triangle(8, 3, 9, 0),\n    gsSP1Triangle(9, 3, 10, 0),\n    gsSP1Triangle(10, 3, 11, 0),\n    gsSP1Triangle(11, 3, 12, 0),\n    gsSP1Triangle(3, 6, 12, 0),\n    gsSP1Triangle(12, 6, 13, 0),\n    gsSP1Triangle(6, 14, 13, 0),\n    gsSPVertex(intro_seg7_vertex_07002240, 16, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSP1Triangle(4, 2, 5, 0),\n    gsSP1Triangle(6, 7, 8, 0),\n    gsSP1Triangle(7, 9, 8, 0),\n    gsSP1Triangle(10, 8, 11, 0),\n    gsSP1Triangle(11, 8, 12, 0),\n    gsSP1Triangle(8, 9, 12, 0),\n    gsSP1Triangle(13, 14, 9, 0),\n    gsSP1Triangle(9, 14, 15, 0),\n    gsSPVertex(intro_seg7_vertex_07002340, 14, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSP1Triangle(4, 5, 6, 0),\n    gsSP1Triangle(7, 8, 5, 0),\n    gsSP1Triangle(8, 9, 5, 0),\n    gsSP1Triangle(5, 10, 6, 0),\n    gsSP1Triangle(10, 5, 11, 0),\n    gsSP1Triangle(5, 9, 11, 0),\n    gsSP1Triangle(12, 6, 13, 0),\n    gsSP1Triangle(6, 10, 13, 0),\n    gsSPVertex(intro_seg7_vertex_07002420, 16, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 4, 1, 0),\n    gsSP1Triangle(4, 5, 1, 0),\n    gsSP1Triangle(3, 6, 4, 0),\n    gsSP1Triangle(4, 6, 7, 0),\n    gsSP1Triangle(7, 6, 8, 0),\n    gsSP1Triangle(6, 9, 8, 0),\n    gsSP1Triangle(10, 7, 8, 0),\n    gsSP1Triangle(11, 5, 12, 0),\n    gsSP1Triangle(5, 10, 12, 0),\n    gsSP1Triangle(13, 14, 15, 0),\n    gsSPVertex(intro_seg7_vertex_07002520, 11, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 4, 1, 0),\n    gsSP1Triangle(1, 4, 2, 0),\n    gsSP1Triangle(4, 5, 2, 0),\n    gsSP1Triangle(2, 5, 6, 0),\n    gsSP1Triangle(7, 6, 8, 0),\n    gsSP1Triangle(6, 5, 8, 0),\n    gsSP1Triangle(5, 9, 8, 0),\n    gsSP1Triangle(8, 9, 10, 0),\n    gsSPVertex(intro_seg7_vertex_070025D0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07002610, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07002650, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_07002690, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070026D0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07002710, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07002740, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07002770, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070027A0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070027D0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07002800, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07002830, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07002860, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07002890, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070028C0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070028F0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07002920, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07002950, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07002980, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070029B0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070029E0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07002A10, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07002A40, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07002A70, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07002AB0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07002AF0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 0, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07002B30, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07002B70, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07002BB0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 1, 0, 0),\n    gsSPVertex(intro_seg7_vertex_07002BF0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_07002C30, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07002C70, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07002CB0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07002CF0, 13, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSP1Triangle(4, 2, 3, 0),\n    gsSP1Triangle(5, 6, 7, 0),\n    gsSP1Triangle(6, 4, 7, 0),\n    gsSP1Triangle(8, 7, 9, 0),\n    gsSP1Triangle(9, 7, 10, 0),\n    gsSP1Triangle(10, 7, 11, 0),\n    gsSP1Triangle(11, 7, 12, 0),\n    gsSP1Triangle(7, 4, 12, 0),\n    gsSP1Triangle(12, 4, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07002DC0, 9, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSP1Triangle(4, 5, 1, 0),\n    gsSP1Triangle(5, 6, 1, 0),\n    gsSP1Triangle(1, 6, 3, 0),\n    gsSP1Triangle(6, 7, 3, 0),\n    gsSP1Triangle(7, 8, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07002E50, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07002E90, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07002ED0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07002F00, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07002F30, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07002F60, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07002F90, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07002FC0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07003000, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07003040, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07003080, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070030C0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 0, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07003100, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07003140, 16, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSP1Triangle(0, 4, 1, 0),\n    gsSP1Triangle(4, 5, 1, 0),\n    gsSP1Triangle(5, 6, 1, 0),\n    gsSP1Triangle(6, 3, 1, 0),\n    gsSP1Triangle(7, 8, 9, 0),\n    gsSP1Triangle(8, 10, 9, 0),\n    gsSP1Triangle(10, 8, 11, 0),\n    gsSP1Triangle(8, 7, 11, 0),\n    gsSP1Triangle(6, 12, 3, 0),\n    gsSP1Triangle(12, 6, 5, 0),\n    gsSP1Triangle(13, 14, 12, 0),\n    gsSP1Triangle(12, 14, 3, 0),\n    gsSP1Triangle(12, 15, 13, 0),\n    gsSPVertex(intro_seg7_vertex_07003240, 15, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 0, 3, 0),\n    gsSP1Triangle(4, 5, 6, 0),\n    gsSP1Triangle(6, 5, 7, 0),\n    gsSP1Triangle(2, 1, 8, 0),\n    gsSP1Triangle(8, 1, 3, 0),\n    gsSP1Triangle(9, 5, 4, 0),\n    gsSP1Triangle(10, 11, 5, 0),\n    gsSP1Triangle(11, 12, 5, 0),\n    gsSP1Triangle(12, 13, 5, 0),\n    gsSP1Triangle(7, 5, 14, 0),\n    gsSP1Triangle(5, 13, 14, 0),\n    gsSPVertex(intro_seg7_vertex_07003330, 14, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 4, 5, 0),\n    gsSP1Triangle(6, 3, 7, 0),\n    gsSP1Triangle(3, 8, 7, 0),\n    gsSP1Triangle(4, 9, 5, 0),\n    gsSP1Triangle(10, 4, 2, 0),\n    gsSP1Triangle(4, 6, 2, 0),\n    gsSP1Triangle(9, 11, 5, 0),\n    gsSP1Triangle(5, 11, 8, 0),\n    gsSP1Triangle(12, 7, 13, 0),\n    gsSPVertex(intro_seg7_vertex_07003410, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07003440, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07003470, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070034A0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070034D0, 15, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 4, 5, 0),\n    gsSP1Triangle(6, 7, 8, 0),\n    gsSP1Triangle(9, 10, 11, 0),\n    gsSP1Triangle(12, 13, 14, 0),\n    gsSPVertex(intro_seg7_vertex_070035C0, 12, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 4, 5, 0),\n    gsSP1Triangle(6, 7, 8, 0),\n    gsSP1Triangle(9, 10, 11, 0),\n    gsSPVertex(intro_seg7_vertex_07003680, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070036C0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 1, 0, 0),\n    gsSPVertex(intro_seg7_vertex_07003700, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_07003740, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_07003780, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070037C0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070037F0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_07003830, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07003870, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_070038B0, 6, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 4, 5, 0),\n    gsSPVertex(intro_seg7_vertex_07003910, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07003950, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07003980, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070039B0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070039E0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07003A10, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07003A40, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07003A70, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07003AA0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07003AD0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07003B10, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07003B50, 14, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSP1Triangle(3, 4, 2, 0),\n    gsSP1Triangle(4, 5, 2, 0),\n    gsSP1Triangle(5, 6, 2, 0),\n    gsSP1Triangle(7, 8, 9, 0),\n    gsSP1Triangle(9, 8, 3, 0),\n    gsSP1Triangle(10, 4, 8, 0),\n    gsSP1Triangle(8, 4, 3, 0),\n    gsSP1Triangle(11, 12, 13, 0),\n    gsSPVertex(intro_seg7_vertex_07003C30, 10, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSP1Triangle(4, 5, 6, 0),\n    gsSP1Triangle(7, 8, 9, 0),\n    gsSP1Triangle(9, 8, 4, 0),\n    gsSP1Triangle(8, 5, 4, 0),\n    gsSPVertex(intro_seg7_vertex_07003CD0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_07003D10, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07003D50, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_07003D90, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07003DD0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07003E10, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07003E40, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07003E80, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07003EB0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07003EE0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07003F10, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07003F40, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07003F70, 5, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 4, 0),\n    gsSP1Triangle(4, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_07003FC0, 5, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 0, 4, 0),\n    gsSP1Triangle(4, 0, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07004010, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 0, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07004050, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07004090, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_070040D0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07004110, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07004150, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_07004190, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070041C0, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070041F0, 6, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSP1Triangle(4, 2, 5, 0),\n    gsSP1Triangle(2, 3, 5, 0),\n    gsSPVertex(intro_seg7_vertex_07004250, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07004290, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070042D0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07004310, 14, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 4, 1, 0),\n    gsSP1Triangle(4, 5, 1, 0),\n    gsSP1Triangle(5, 6, 1, 0),\n    gsSP1Triangle(6, 7, 1, 0),\n    gsSP1Triangle(1, 7, 2, 0),\n    gsSP1Triangle(7, 8, 2, 0),\n    gsSP1Triangle(9, 10, 3, 0),\n    gsSP1Triangle(10, 11, 3, 0),\n    gsSP1Triangle(11, 4, 3, 0),\n    gsSP1Triangle(12, 13, 5, 0),\n    gsSP1Triangle(13, 6, 5, 0),\n    gsSPVertex(intro_seg7_vertex_070043F0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07004430, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A398 - 0x0700B7E8\nstatic const Gfx intro_seg7_dl_0700A398[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, intro_seg7_texture_0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(intro_seg7_vertex_07004470, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070044B0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_070044F0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07004530, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07004570, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_070045B0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070045F0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07004630, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07004670, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070046B0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070046F0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07004730, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07004770, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070047B0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070047F0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 1, 0, 0),\n    gsSPVertex(intro_seg7_vertex_07004830, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07004870, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_070048B0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_070048F0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07004930, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07004970, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_070049B0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070049F0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07004A30, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07004A70, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07004AB0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07004AF0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07004B30, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07004B70, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07004BB0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07004BF0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07004C30, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07004C70, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07004CB0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07004CF0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 1, 0, 0),\n    gsSPVertex(intro_seg7_vertex_07004D30, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 1, 0, 0),\n    gsSPVertex(intro_seg7_vertex_07004D70, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07004DB0, 6, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 3, 0, 0),\n    gsSP1Triangle(0, 3, 4, 0),\n    gsSP1Triangle(5, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_07004E10, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07004E50, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07004E90, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07004ED0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07004F10, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07004F50, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07004F90, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07004FD0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 1, 0, 0),\n    gsSPVertex(intro_seg7_vertex_07005010, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07005050, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07005090, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_070050D0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07005110, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07005150, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07005190, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_070051D0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07005210, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 1, 0, 0),\n    gsSPVertex(intro_seg7_vertex_07005250, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07005290, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_070052D0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07005310, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 1, 0, 0),\n    gsSPVertex(intro_seg7_vertex_07005350, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07005390, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 1, 0, 0),\n    gsSPVertex(intro_seg7_vertex_070053D0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07005410, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07005450, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07005490, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_070054D0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07005510, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07005550, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07005590, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_070055D0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07005610, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07005650, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07005690, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_070056D0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 1, 0, 0),\n    gsSPVertex(intro_seg7_vertex_07005710, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07005750, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07005790, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_070057D0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07005810, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07005850, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07005890, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070058D0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 0, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07005910, 6, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 4, 5, 0),\n    gsSPVertex(intro_seg7_vertex_07005970, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 1, 0, 0),\n    gsSPVertex(intro_seg7_vertex_070059B0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 1, 0, 0),\n    gsSPVertex(intro_seg7_vertex_070059F0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07005A30, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07005A60, 3, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07005A90, 6, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 4, 5, 0),\n    gsSPVertex(intro_seg7_vertex_07005AF0, 6, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 4, 5, 0),\n    gsSPVertex(intro_seg7_vertex_07005B50, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07005B90, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 0, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07005BD0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07005C10, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07005C50, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07005C90, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07005CD0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 1, 0, 0),\n    gsSPVertex(intro_seg7_vertex_07005D10, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07005D50, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 1, 0, 0),\n    gsSPVertex(intro_seg7_vertex_07005D90, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07005DD0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 0, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07005E10, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 0, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07005E50, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 0, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07005E90, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 0, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07005ED0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07005F10, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 0, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07005F50, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 0, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07005F90, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_07005FD0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07006010, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07006050, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07006090, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070060D0, 5, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSP1Triangle(4, 3, 1, 0),\n    gsSPVertex(intro_seg7_vertex_07006120, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07006160, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_070061A0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070061E0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07006220, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07006260, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_070062A0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_070062E0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07006320, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_07006360, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_070063A0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_070063E0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07006420, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07006460, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_070064A0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070064E0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_07006520, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07006560, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070065A0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_070065E0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_07006620, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07006660, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_070066A0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070066E0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_07006720, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07006760, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070067A0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_070067E0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07006820, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07006860, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_070068A0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_070068E0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07006920, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07006960, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_070069A0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_070069E0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07006A20, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_07006A60, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07006AA0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07006AE0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07006B20, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07006B60, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07006BA0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07006BE0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07006C20, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07006C60, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07006CA0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_07006CE0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07006D20, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07006D60, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07006DA0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07006DE0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_07006E20, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07006E60, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07006EA0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07006EE0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07006F20, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07006F60, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07006FA0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07006FE0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07007020, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_07007060, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_070070A0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_070070E0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_07007120, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_07007160, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_070071A0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_070071E0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_07007220, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07007260, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_070072A0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_070072E0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_07007320, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07007360, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_070073A0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070073E0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07007420, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07007460, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_070074A0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_070074E0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_07007520, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_07007560, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070075A0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_070075E0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07007620, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07007660, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_070076A0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070076E0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07007720, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_07007760, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070077A0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_070077E0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_07007820, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_07007860, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_070078A0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(2, 1, 3, 0),\n    gsSPVertex(intro_seg7_vertex_070078E0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07007920, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_07007960, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(3, 2, 1, 0),\n    gsSPVertex(intro_seg7_vertex_070079A0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_070079E0, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07007A20, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPVertex(intro_seg7_vertex_07007A60, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(1, 3, 2, 0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700B7E8 - 0x0700B860\nconst Gfx intro_seg7_dl_logo[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(G_TX_RENDERTILE, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(intro_seg7_dl_07008AA0),\n    gsSPDisplayList(intro_seg7_dl_0700A398),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n#else\n\n// 0x07008EA0 - 0x07009E38\nstatic const Gfx intro_seg7_dl_07008EA0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, intro_seg7_texture_1),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(intro_seg7_vertex_07000000, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  5,  2,  3, 0x0),\n    gsSP2Triangles( 3,  7,  4, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 7,  8,  4, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14,  0, 0x0),\n    gsSP2Triangles(15, 13,  0, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(intro_seg7_vertex_07000100, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 8,  9,  4, 0x0,  4, 10,  5, 0x0),\n    gsSP2Triangles( 7,  8,  4, 0x0, 11,  8, 12, 0x0),\n    gsSP2Triangles( 8, 11, 13, 0x0,  8, 13,  9, 0x0),\n    gsSP2Triangles( 8, 14, 12, 0x0,  6, 14,  7, 0x0),\n    gsSP1Triangle( 6, 12, 14, 0x0),\n    gsSPVertex(intro_seg7_vertex_070001F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  3,  7,  4, 0x0),\n    gsSP2Triangles( 3,  8,  7, 0x0,  0,  2,  6, 0x0),\n    gsSP2Triangles( 2,  9,  6, 0x0,  6,  5,  0, 0x0),\n    gsSP2Triangles( 2, 10, 11, 0x0,  2, 12, 10, 0x0),\n    gsSP2Triangles( 2, 11,  9, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(intro_seg7_vertex_070002F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 0,  2,  3, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  3,  8,  6, 0x0),\n    gsSP2Triangles( 3,  7,  4, 0x0,  3,  9,  8, 0x0),\n    gsSP2Triangles( 7, 10, 11, 0x0,  7, 11,  4, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(intro_seg7_vertex_070003E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  2,  5, 0x0,  2,  6,  5, 0x0),\n    gsSP2Triangles( 5,  7,  4, 0x0,  5,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 10, 12, 0x0),\n    gsSP2Triangles(12, 11, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(intro_seg7_vertex_070004E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(intro_seg7_vertex_070005D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  1,  0, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(intro_seg7_vertex_070006D0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(intro_seg7_vertex_070007B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  4, 0x0),\n    gsSP2Triangles( 8,  5,  4, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(intro_seg7_vertex_070008A0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  9,  8,  5, 0x0),\n    gsSP2Triangles( 9, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(intro_seg7_vertex_07000980, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(intro_seg7_vertex_07000A70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  3,  7,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  8, 10, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(intro_seg7_vertex_07000B60, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(intro_seg7_vertex_07000C40, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6,  8, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0,  8,  7, 10, 0x0),\n    gsSP2Triangles(12, 13,  6, 0x0, 12,  6,  9, 0x0),\n    gsSPVertex(intro_seg7_vertex_07000D20, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(intro_seg7_vertex_07000E10, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 1, 14,  2, 0x0),\n    gsSPVertex(intro_seg7_vertex_07000F00, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(intro_seg7_vertex_07000FF0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSP1Triangle(14,  0,  2, 0x0),\n    gsSPVertex(intro_seg7_vertex_070010E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(intro_seg7_vertex_070011D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(intro_seg7_vertex_070012C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(14, 11, 13, 0x0,  1, 15,  2, 0x0),\n    gsSPVertex(intro_seg7_vertex_070013C0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(intro_seg7_vertex_070014A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(intro_seg7_vertex_07001590, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(intro_seg7_vertex_07001670, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10, 11,  8, 0x0),\n    gsSP2Triangles(12, 13,  9, 0x0, 12, 14, 13, 0x0),\n    gsSP1Triangle(15, 14, 12, 0x0),\n    gsSPVertex(intro_seg7_vertex_07001770, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  5,  2,  1, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 5,  8,  2, 0x0,  5,  9,  6, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(intro_seg7_vertex_07001850, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(intro_seg7_vertex_07001950, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(intro_seg7_vertex_07001A30, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(intro_seg7_vertex_07001B10, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(intro_seg7_vertex_07001C00, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 0, 10,  1, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(intro_seg7_vertex_07001CE0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 8,  9,  4, 0x0,  4,  6, 10, 0x0),\n    gsSP2Triangles( 4, 10,  7, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(11, 12,  9, 0x0, 11, 13, 12, 0x0),\n    gsSP1Triangle(11, 14, 15, 0x0),\n    gsSPVertex(intro_seg7_vertex_07001DE0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(intro_seg7_vertex_07001ED0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(intro_seg7_vertex_07001FD0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(intro_seg7_vertex_070020B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(intro_seg7_vertex_070021A0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(intro_seg7_vertex_07002280, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(intro_seg7_vertex_07002370, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(intro_seg7_vertex_07002460, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11,  8, 12, 0x0),\n    gsSP2Triangles(11,  9,  8, 0x0,  9, 13, 14, 0x0),\n    gsSP2Triangles(11, 13,  9, 0x0,  4,  9, 14, 0x0),\n    gsSP1Triangle( 4, 15,  9, 0x0),\n    gsSPVertex(intro_seg7_vertex_07002560, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  5,  6,  3, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0,  9, 13, 12, 0x0),\n    gsSP2Triangles( 9, 14, 15, 0x0,  9, 15, 13, 0x0),\n    gsSPVertex(intro_seg7_vertex_07002660, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  0,  5,  3, 0x0),\n    gsSP2Triangles( 0,  6,  7, 0x0,  0,  8,  5, 0x0),\n    gsSP2Triangles( 0,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(intro_seg7_vertex_07002760, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(intro_seg7_vertex_07002840, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  4,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(intro_seg7_vertex_07002940, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  6, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(intro_seg7_vertex_07002A40, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(intro_seg7_vertex_07002B40, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(intro_seg7_vertex_07002C20, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(14, 13, 15, 0x0, 14, 11, 13, 0x0),\n    gsSPVertex(intro_seg7_vertex_07002D20, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  0,  2, 0x0,  4,  2,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 14, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(intro_seg7_vertex_07002E20, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  0,  2, 0x0,  6,  2,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(intro_seg7_vertex_07002F10, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(intro_seg7_vertex_07003000, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 8, 10, 14, 0x0),\n    gsSPVertex(intro_seg7_vertex_070030F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(intro_seg7_vertex_070031E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  5,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(intro_seg7_vertex_070032E0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(intro_seg7_vertex_070033C0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 10, 11,  8, 0x0),\n    gsSP2Triangles(12,  3,  6, 0x0, 12,  6, 13, 0x0),\n    gsSPVertex(intro_seg7_vertex_070034A0, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  1,  5,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009E38 - 0x0700ADC0\nstatic const Gfx intro_seg7_dl_07009E38[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, intro_seg7_texture_0),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(intro_seg7_vertex_07003500, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 2,  4,  0, 0x0,  5,  3,  2, 0x0),\n    gsSP2Triangles( 6,  5,  2, 0x0,  2,  1,  7, 0x0),\n    gsSP2Triangles( 2,  7,  6, 0x0,  0,  8,  1, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  6,  7, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 14, 12, 0x0),\n    gsSPVertex(intro_seg7_vertex_070035F0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  3,  2,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(intro_seg7_vertex_070036D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  0, 0x0),\n    gsSP2Triangles( 7,  9,  8, 0x0, 10, 11,  7, 0x0),\n    gsSP2Triangles(12,  9,  7, 0x0,  0, 10,  7, 0x0),\n    gsSP2Triangles( 0,  8,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(intro_seg7_vertex_070037D0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(intro_seg7_vertex_070038B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(intro_seg7_vertex_070039A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 10, 12, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(intro_seg7_vertex_07003A90, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  6,  7,  5, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(intro_seg7_vertex_07003B90, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(intro_seg7_vertex_07003C70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(intro_seg7_vertex_07003D60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(intro_seg7_vertex_07003E50, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(intro_seg7_vertex_07003F40, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  5,  7, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 10, 12, 11, 0x0),\n    gsSP1Triangle( 0,  2, 13, 0x0),\n    gsSPVertex(intro_seg7_vertex_07004020, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  2, 10, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 11, 12,  9, 0x0),\n    gsSP2Triangles( 0,  2,  9, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(intro_seg7_vertex_07004120, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(intro_seg7_vertex_07004200, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 7,  8,  4, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(intro_seg7_vertex_070042E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  2, 11,  0, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(intro_seg7_vertex_070043E0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(intro_seg7_vertex_070044C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(intro_seg7_vertex_070045B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10,  2, 11, 0x0,  0,  2, 10, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(intro_seg7_vertex_070046B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 2,  1,  5, 0x0,  2,  5,  3, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  3,  7,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(intro_seg7_vertex_070047A0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(intro_seg7_vertex_07004880, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  7, 10, 11, 0x0),\n    gsSP2Triangles(12,  7, 11, 0x0, 13,  8,  7, 0x0),\n    gsSP1Triangle(13, 14,  8, 0x0),\n    gsSPVertex(intro_seg7_vertex_07004970, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  4,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12,  1,  0, 0x0, 13,  0, 14, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(intro_seg7_vertex_07004A60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(intro_seg7_vertex_07004B50, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 10,  7, 0x0),\n    gsSP2Triangles( 7,  9, 12, 0x0, 13,  7, 12, 0x0),\n    gsSP1Triangle(11, 14, 10, 0x0),\n    gsSPVertex(intro_seg7_vertex_07004C40, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(intro_seg7_vertex_07004D30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(intro_seg7_vertex_07004E30, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11,  7, 12, 0x0),\n    gsSP2Triangles(13, 14,  8, 0x0, 13,  8,  7, 0x0),\n    gsSP1Triangle( 7, 10, 12, 0x0),\n    gsSPVertex(intro_seg7_vertex_07004F20, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(intro_seg7_vertex_07005010, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 0,  2, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(intro_seg7_vertex_07005100, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  2,  1,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(intro_seg7_vertex_07005200, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 6,  2,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(intro_seg7_vertex_07005300, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(intro_seg7_vertex_07005400, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(intro_seg7_vertex_070054E0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(intro_seg7_vertex_070055C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(intro_seg7_vertex_070056B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(intro_seg7_vertex_070057A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 6, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(intro_seg7_vertex_070058A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 3,  5,  4, 0x0,  3,  6,  5, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7, 10,  8, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0,  6, 14, 15, 0x0),\n    gsSPVertex(intro_seg7_vertex_070059A0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(intro_seg7_vertex_07005A80, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 15, 11, 0x0),\n    gsSPVertex(intro_seg7_vertex_07005B80, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 6,  7,  4, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 9, 11, 10, 0x0, 12, 13,  7, 0x0),\n    gsSPVertex(intro_seg7_vertex_07005C60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(intro_seg7_vertex_07005D50, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 12, 10, 0x0),\n    gsSP1Triangle( 0,  2, 13, 0x0),\n    gsSPVertex(intro_seg7_vertex_07005E30, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  3,  5,  9, 0x0),\n    gsSP2Triangles( 5,  8, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(intro_seg7_vertex_07005F20, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(intro_seg7_vertex_07006010, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(intro_seg7_vertex_07006100, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  5,  7, 0x0,  8,  6,  9, 0x0),\n    gsSP2Triangles( 6,  7,  9, 0x0,  9,  7, 10, 0x0),\n    gsSP2Triangles( 8,  9, 11, 0x0,  9, 10, 12, 0x0),\n    gsSP1Triangle( 0, 13,  1, 0x0),\n    gsSPVertex(intro_seg7_vertex_070061E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(intro_seg7_vertex_070062D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 14, 0x0),\n    gsSP1Triangle(10, 14, 11, 0x0),\n    gsSPVertex(intro_seg7_vertex_070063C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle(12, 11, 14, 0x0),\n    gsSPVertex(intro_seg7_vertex_070064B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  4, 0x0,  6,  4,  3, 0x0),\n    gsSP2Triangles( 8,  9,  7, 0x0,  8,  7,  6, 0x0),\n    gsSP2Triangles(10,  2, 11, 0x0,  2, 12, 11, 0x0),\n    gsSP2Triangles( 2,  1, 12, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(10, 11, 14, 0x0, 11, 13, 15, 0x0),\n    gsSPVertex(intro_seg7_vertex_070065B0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  3,  6,  7, 0x0),\n    gsSP2Triangles( 8,  3,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 6,  5, 12, 0x0,  6, 12, 13, 0x0),\n    gsSPVertex(intro_seg7_vertex_07006690, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(intro_seg7_vertex_07006770, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(intro_seg7_vertex_07006850, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(intro_seg7_vertex_07006940, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(intro_seg7_vertex_07006A30, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP1Triangle( 4,  6,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700ADC0 - 0x0700B3A0\nstatic const Gfx intro_seg7_dl_0700ADC0[] = {\n    gsSPVertex(intro_seg7_vertex_07006AC0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0,  7, 11, 12, 0x0),\n    gsSP2Triangles( 7, 12,  8, 0x0, 13, 14,  7, 0x0),\n    gsSP2Triangles(13,  7, 10, 0x0,  9,  8, 15, 0x0),\n    gsSPVertex(intro_seg7_vertex_07006BC0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  5,  0,  2, 0x0),\n    gsSP2Triangles( 6,  3,  0, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 6,  0, 10, 0x0, 10,  0,  5, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 13, 14, 0x0),\n    gsSP2Triangles(11,  8, 12, 0x0,  8, 15, 12, 0x0),\n    gsSPVertex(intro_seg7_vertex_07006CC0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  3,  9, 10, 0x0),\n    gsSP2Triangles(11,  2,  1, 0x0, 11,  1, 12, 0x0),\n    gsSP2Triangles(13, 14,  8, 0x0, 14, 15,  8, 0x0),\n    gsSP1Triangle( 7, 13,  8, 0x0),\n    gsSPVertex(intro_seg7_vertex_07006DC0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(12,  6,  5, 0x0, 12, 13,  6, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(intro_seg7_vertex_07006EB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  5, 0x0,  7,  3,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0,  9, 13, 14, 0x0),\n    gsSP2Triangles( 9, 14, 11, 0x0, 15,  7,  6, 0x0),\n    gsSPVertex(intro_seg7_vertex_07006FB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  2,  6,  5, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  7,  8,  4, 0x0),\n    gsSP2Triangles( 0,  9,  3, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(intro_seg7_vertex_070070B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  4, 11,  5, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(intro_seg7_vertex_070071A0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(intro_seg7_vertex_07007280, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(intro_seg7_vertex_07007370, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(intro_seg7_vertex_07007470, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 3,  4,  6, 0x0,  3,  6,  7, 0x0),\n    gsSP2Triangles( 8,  5,  0, 0x0,  8,  9,  5, 0x0),\n    gsSP2Triangles( 7,  6, 10, 0x0,  7, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(intro_seg7_vertex_07007560, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(intro_seg7_vertex_07007650, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(intro_seg7_vertex_07007740, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(intro_seg7_vertex_07007830, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(intro_seg7_vertex_07007920, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 7, 10,  9, 0x0, 11,  6,  8, 0x0),\n    gsSP2Triangles(12,  6, 11, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(intro_seg7_vertex_07007A20, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 1,  8,  2, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(intro_seg7_vertex_07007B20, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 12, 11, 0x0),\n    gsSPVertex(intro_seg7_vertex_07007C10, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(intro_seg7_vertex_07007CF0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  1,  0, 0x0,  4,  5,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(intro_seg7_vertex_07007DF0, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP1Triangle( 8,  9, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700B3A0 - 0x0700B420\nconst Gfx intro_seg7_dl_logo[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(intro_seg7_dl_07008EA0),\n    gsSPDisplayList(intro_seg7_dl_07009E38),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(intro_seg7_dl_0700ADC0),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n\n#endif\n\n#if defined(VERSION_CN)\n// 0x0700B860 - 0x0700B8A0\nstatic const Vtx intro_seg7_vertex_copyright_ique[] = {\n    {{{    96,     42,     -1}, 0, {     0,    512}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   224,     42,     -1}, 0, {  4096,    512}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   224,     58,     -1}, 0, {  4096,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    96,     58,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700B8A0 - 0x0700B8E0\nstatic const Vtx intro_seg7_vertex_copyright[] = {\n    {{{    96,     58,     -1}, 0, {     0,    512}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   224,     58,     -1}, 0, {  4096,    512}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   224,     75,     -1}, 0, {  4096,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    96,     75,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n#else\n\n// 0x0700B420 - 0x0700B460\nstatic const Vtx intro_seg7_vertex_copyright[] = {\n    {{{    96,     42,     -1}, 0, {     0,    512}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   224,     42,     -1}, 0, {  4096,    512}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   224,     58,     -1}, 0, {  4096,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    96,     58,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n#endif\n\n// 0x0700B460 - 0x0700B4A0\nstatic const Vtx intro_seg7_vertex_tm[] = {\n    {{{   268,    180,     -1}, 0, {     0,    512}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   284,    180,     -1}, 0, {   544,    512}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   284,    196,     -1}, 0, {   544,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   268,    196,     -1}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n#if defined(VERSION_EU) || defined(VERSION_SH)\n// 0x0700B4A0 - 0x0700B4A2\nALIGNED8 static const Texture intro_seg7_texture_copyright[] = {\n#include \"levels/intro/2_eu_copyright.rgba16.inc.c\"\n};\n\n#elif defined(VERSION_CN)\n// 0x0700B920 - 0x0700C920\nALIGNED8 static const Texture intro_seg7_texture_copyright[] = {\n#include \"levels/intro/2_cn_copyright.rgba16.inc.c\"\n};\n\n// 0x0700C920 - 0x0700D920\nALIGNED8 static const Texture intro_seg7_texture_copyright_ique[] = {\n#include \"levels/intro/2_cn_copyright_ique.rgba16.inc.c\"\n};\n\n#else\n// 0x0700B4A0 - 0x0700B4A2\nALIGNED8 static const Texture intro_seg7_texture_copyright[] = {\n#include \"levels/intro/2_copyright.rgba16.inc.c\"\n};\n#endif\n\n#if defined(VERSION_EU)\n// 0x0700C4A0 - 0x0700D4A0\nALIGNED8 static const u8 intro_seg7_texture_tm[] = {\n#include \"levels/intro/3_eu_tm.rgba16.inc.c\"\n};\n\n#elif defined(VERSION_SH) || defined(VERSION_CN)\nALIGNED8 static const u8 intro_seg7_texture_tm[] = {\n#include \"levels/intro/3_sh_tm.rgba16.inc.c\"\n};\n\n#else\n// 0x0700C4A0 - 0x0700D4A0\nALIGNED8 static const Texture intro_seg7_texture_tm[] = {\n#include \"levels/intro/3_tm.rgba16.inc.c\"\n};\n#endif\n\n// 0x0700C6A0 - 0x0700C790\nconst Gfx intro_seg7_dl_copyright[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALFADE, G_CC_DECALFADE),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n#if defined(VERSION_CN)\n    gsDPLoadTextureBlock(intro_seg7_texture_copyright_ique, G_IM_FMT_RGBA, G_IM_SIZ_16b, 128, 16, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, 7, 4, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(intro_seg7_vertex_copyright_ique, 4, 0),\n    gsSP1Triangle(0, 1, 2, 0),\n    gsSP1Triangle(0, 2, 3, 0),\n#endif\n    gsDPLoadTextureBlock(intro_seg7_texture_copyright, G_IM_FMT_RGBA, G_IM_SIZ_16b, 128, 16, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 4, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(intro_seg7_vertex_copyright, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsDPLoadTextureBlock(intro_seg7_texture_tm, G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 16, 0, G_TX_CLAMP, G_TX_CLAMP, 4, 4, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(intro_seg7_vertex_tm, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700C790\nconst f32 intro_seg7_table_0700C790[] = {\n    0.016000f, 0.052000f, 0.002500f, 0.148300f,\n    0.189200f, 0.035200f, 0.471600f, 0.525300f,\n    0.116600f, 0.875800f, 0.947000f, 0.222100f,\n    1.250500f, 1.341300f, 0.327000f, 1.485400f,\n    1.594900f, 0.406500f, 1.230500f, 1.563700f,\n    0.464300f, 0.913900f, 1.351300f, 0.520200f,\n    1.022900f, 1.216100f, 0.574400f, 1.122300f,\n    1.097200f, 0.627000f, 1.028300f, 0.955600f,\n    0.678100f, 0.934800f, 1.049400f, 0.727700f,\n    0.994200f, 1.005200f, 0.775900f, 1.070200f,\n    0.961500f, 0.822900f, 0.995600f, 0.995000f,\n    0.868700f, 0.991600f, 1.005700f, 0.913500f,\n    1.016500f, 0.985200f, 0.957200f, 0.985200f,\n    1.007100f, 1.000000f, 0.999900f, 0.999800f,\n    1.010600f, 1.000000f, 1.000000f, 1.000000f,\n};\n\n// 0x0700C880\nconst f32 intro_seg7_table_0700C880[] = {\n    1.000000f, 1.000000f, 1.000000f, 0.987300f,\n    0.987300f, 0.987300f, 0.951400f, 0.951400f,\n    0.951400f, 0.896000f, 0.896000f, 0.896000f,\n    0.824600f, 0.824600f, 0.824600f, 0.740700f,\n    0.740700f, 0.740700f, 0.648000f, 0.648000f,\n    0.648000f, 0.549900f, 0.549900f, 0.549900f,\n    0.450100f, 0.450100f, 0.450100f, 0.352000f,\n    0.352000f, 0.352000f, 0.259300f, 0.259300f,\n    0.259300f, 0.175400f, 0.175400f, 0.175400f,\n    0.104000f, 0.104000f, 0.104000f, 0.048600f,\n    0.048600f, 0.048600f, 0.012800f, 0.012800f,\n    0.012800f, 0.000000f, 0.000000f, 0.000000f,\n};\n"
  },
  {
    "path": "levels/intro/script.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"behavior_data.h\"\n#include \"model_ids.h\"\n#include \"seq_ids.h\"\n#include \"segment_symbols.h\"\n#include \"level_commands.h\"\n\n#include \"game/area.h\"\n#include \"game/level_update.h\"\n#include \"menu/title_screen.h\"\n\n#include \"levels/scripts.h\"\n#include \"levels/menu/header.h\"\n\n#include \"actors/common1.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/intro/header.h\"\n\nconst LevelScript level_intro_splash_screen[] = {\n    INIT_LEVEL(),\n    FIXED_LOAD(/*loadAddr*/ _goddardSegmentStart, /*romStart*/ _goddardSegmentRomStart, /*romEnd*/ _goddardSegmentRomEnd),\n    LOAD_RAW (/*seg*/ 0x13, _behaviorSegmentRomStart, _behaviorSegmentRomEnd),\n    LOAD_MIO0(/*seg*/ 0x07, _intro_segment_7SegmentRomStart, _intro_segment_7SegmentRomEnd),\n\n    // Load \"Super Mario 64\" logo\n    ALLOC_LEVEL_POOL(),\n    AREA(/*index*/ 1, intro_geo_0002D0),\n    END_AREA(),\n    FREE_LEVEL_POOL(),\n\n    // Start animation\n    LOAD_AREA(/*area*/ 1),\n\n    CALL(/*arg*/ LVL_INTRO_PLAY_ITS_A_ME_MARIO, /*func*/ lvl_intro_update),\n    SLEEP(/*frames*/ 75),\n    TRANSITION(/*transType*/ WARP_TRANSITION_FADE_INTO_COLOR, /*time*/ 16, /*color*/ 0x00, 0x00, 0x00),\n    SLEEP(/*frames*/ 16),\n    CMD2A(/*unk2*/ 1),\n    CLEAR_LEVEL(),\n    SLEEP(/*frames*/ 2),\n    EXIT_AND_EXECUTE(/*seg*/ 0x14, _introSegmentRomStart, _introSegmentRomEnd, level_intro_mario_head_regular),\n};\n\nconst LevelScript level_intro_mario_head_regular[] = {\n    INIT_LEVEL(),\n    BLACKOUT(/*active*/ TRUE),\n    FIXED_LOAD(/*loadAddr*/ _goddardSegmentStart, /*romStart*/ _goddardSegmentRomStart, /*romEnd*/ _goddardSegmentRomEnd),\n    LOAD_MARIO_HEAD(/*loadHeadID*/ REGULAR_FACE),\n    LOAD_RAW         (/*seg*/ 0x13, _behaviorSegmentRomStart, _behaviorSegmentRomEnd),\n    LOAD_MIO0_TEXTURE(/*seg*/ 0x0A, _title_screen_bg_mio0SegmentRomStart, _title_screen_bg_mio0SegmentRomEnd),\n\n    ALLOC_LEVEL_POOL(),\n    AREA(/*index*/ 1, intro_geo_mario_head_regular),\n    END_AREA(),\n    FREE_LEVEL_POOL(),\n\n    SLEEP(/*frames*/ 2),\n    BLACKOUT(/*active*/ FALSE),\n    LOAD_AREA(/*area*/ 1),\n    SET_MENU_MUSIC(/*seq*/ SEQ_MENU_TITLE_SCREEN),\n    TRANSITION(/*transType*/ WARP_TRANSITION_FADE_FROM_STAR, /*time*/ 20, /*color*/ 0x00, 0x00, 0x00),\n    SLEEP(/*frames*/ 20),\n    CALL_LOOP(/*arg*/ LVL_INTRO_REGULAR, /*func*/ lvl_intro_update),\n    JUMP_IF(/*op*/ OP_EQ, /*arg*/ 100, script_intro_L1),\n    JUMP_IF(/*op*/ OP_EQ, /*arg*/ 101, script_intro_L2),\n    JUMP(script_intro_L4),\n};\n\nconst LevelScript level_intro_mario_head_dizzy[] = {\n    INIT_LEVEL(),\n    BLACKOUT(/*active*/ TRUE),\n    FIXED_LOAD(/*loadAddr*/ _goddardSegmentStart, /*romStart*/ _goddardSegmentRomStart, /*romEnd*/ _goddardSegmentRomEnd),\n    LOAD_MARIO_HEAD(/*loadHeadID*/ DIZZY_FACE),\n    LOAD_RAW         (/*seg*/ 0x13, _behaviorSegmentRomStart, _behaviorSegmentRomEnd),\n    LOAD_MIO0_TEXTURE(/*seg*/ 0x0A, _title_screen_bg_mio0SegmentRomStart, _title_screen_bg_mio0SegmentRomEnd),\n    ALLOC_LEVEL_POOL(),\n\n    AREA(/*index*/ 1, intro_geo_mario_head_dizzy),\n    END_AREA(),\n\n    FREE_LEVEL_POOL(),\n    SLEEP(/*frames*/ 2),\n    BLACKOUT(/*active*/ FALSE),\n    LOAD_AREA(/*area*/ 1),\n    SET_MENU_MUSIC(/*seq*/ SEQ_MENU_GAME_OVER),\n    TRANSITION(/*transType*/ WARP_TRANSITION_FADE_FROM_STAR, /*time*/ 20, /*color*/ 0x00, 0x00, 0x00),\n    SLEEP(/*frames*/ 20),\n    CALL_LOOP(/*arg*/ LVL_INTRO_GAME_OVER, /*func*/ lvl_intro_update),\n    JUMP_IF(/*op*/ OP_EQ, /*arg*/ 100, script_intro_L1),\n    JUMP_IF(/*op*/ OP_EQ, /*arg*/ 101, script_intro_L2),\n    JUMP(script_intro_L4),\n};\n\nconst LevelScript level_intro_entry_4[] = {\n    INIT_LEVEL(),\n    LOAD_RAW         (/*seg*/ 0x13, _behaviorSegmentRomStart, _behaviorSegmentRomEnd),\n    LOAD_MIO0_TEXTURE(/*seg*/ 0x0A, _title_screen_bg_mio0SegmentRomStart, _title_screen_bg_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x07, _debug_level_select_mio0SegmentRomStart, _debug_level_select_mio0SegmentRomEnd),\n    FIXED_LOAD(/*loadAddr*/ _goddardSegmentStart, /*romStart*/ _goddardSegmentRomStart, /*romEnd*/ _goddardSegmentRomEnd),\n    ALLOC_LEVEL_POOL(),\n\n    AREA(/*index*/ 1, intro_geo_000414),\n    END_AREA(),\n\n    FREE_LEVEL_POOL(),\n    LOAD_AREA(/*area*/ 1),\n    SET_MENU_MUSIC(/*seq*/ SEQ_MENU_TITLE_SCREEN),\n    TRANSITION(/*transType*/ WARP_TRANSITION_FADE_FROM_COLOR, /*time*/ 16, /*color*/ 0xFF, 0xFF, 0xFF),\n    SLEEP(/*frames*/ 16),\n    CALL_LOOP(/*arg*/ LVL_INTRO_LEVEL_SELECT, /*func*/ lvl_intro_update),\n    JUMP_IF(/*op*/ OP_EQ, /*arg*/ -1, script_intro_L5),\n    JUMP(script_intro_L3),\n};\n\n// These should be static, but C doesn't allow non-sized forward declarations of static arrays\n\nconst LevelScript script_intro_L1[] = {\n    STOP_MUSIC(/*fadeOutTime*/ 0x00BE),\n    TRANSITION(/*transType*/ WARP_TRANSITION_FADE_INTO_COLOR, /*time*/ 16, /*color*/ 0xFF, 0xFF, 0xFF),\n    SLEEP(/*frames*/ 16),\n    CLEAR_LEVEL(),\n    SLEEP(/*frames*/ 2),\n    SET_REG(/*value*/ 16),\n    EXIT_AND_EXECUTE(/*seg*/ 0x14, _menuSegmentRomStart, _menuSegmentRomEnd, level_main_menu_entry_1),\n};\n\nconst LevelScript script_intro_L2[] = {\n    TRANSITION(/*transType*/ WARP_TRANSITION_FADE_INTO_COLOR, /*time*/ 16, /*color*/ 0xFF, 0xFF, 0xFF),\n    SLEEP(/*frames*/ 16),\n    CLEAR_LEVEL(),\n    SLEEP(/*frames*/ 2),\n    EXIT_AND_EXECUTE(/*seg*/ 0x14, _introSegmentRomStart, _introSegmentRomEnd, level_intro_entry_4),\n};\n\nconst LevelScript script_intro_L3[] = {\n    STOP_MUSIC(/*fadeOutTime*/ 0x00BE),\n    TRANSITION(/*transType*/ WARP_TRANSITION_FADE_INTO_COLOR, /*time*/ 16, /*color*/ 0xFF, 0xFF, 0xFF),\n    SLEEP(/*frames*/ 16),\n    CLEAR_LEVEL(),\n    SLEEP(/*frames*/ 2),\n    EXIT_AND_EXECUTE(/*seg*/ 0x15, _scriptsSegmentRomStart, _scriptsSegmentRomEnd, level_main_scripts_entry),\n};\n\nconst LevelScript script_intro_L4[] = {\n    TRANSITION(/*transType*/ WARP_TRANSITION_FADE_INTO_COLOR, /*time*/ 16, /*color*/ 0xFF, 0xFF, 0xFF),\n    SLEEP(/*frames*/ 16),\n    CLEAR_LEVEL(),\n    SLEEP(/*frames*/ 2),\n    EXIT_AND_EXECUTE(/*seg*/ 0x15, _scriptsSegmentRomStart, _scriptsSegmentRomEnd, level_main_scripts_entry),\n};\n\nconst LevelScript script_intro_L5[] = {\n    STOP_MUSIC(/*fadeOutTime*/ 0x00BE),\n    TRANSITION(/*transType*/ WARP_TRANSITION_FADE_INTO_COLOR, /*time*/ 16, /*color*/ 0x00, 0x00, 0x00),\n    SLEEP(/*frames*/ 16),\n    CLEAR_LEVEL(),\n    SLEEP(/*frames*/ 2),\n    EXIT_AND_EXECUTE(/*seg*/ 0x14, _introSegmentRomStart, _introSegmentRomEnd, level_intro_splash_screen),\n};\n"
  },
  {
    "path": "levels/jrb/areas/1/1/model.inc.c",
    "content": "// 0x07002800 - 0x070028F0\nstatic const Vtx jrb_seg7_vertex_07002800[] = {\n    {{{  2813,   1536,   5598}, 0, { -2074,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2813,   1331,   5598}, 0, { -2074,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4284,   1331,   7069}, 0, {  8308,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2668,   1536,   6322}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2668,   1331,   6322}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3611,   1331,   7264}, 0, {  6620,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3611,   1536,   7264}, 0, {  6620,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3861,   1331,   7182}, 0, {  7214,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2835,   1331,   6155}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2835,   1536,   6155}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3861,   1536,   7182}, 0, {  7214,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2980,   1536,   5431}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2980,   1331,   5431}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2813,   1331,   5598}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2813,   1536,   5598}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070028F0 - 0x070029E0\nstatic const Vtx jrb_seg7_vertex_070028F0[] = {\n    {{{  3392,   1536,   5018}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4909,   1331,   6535}, 0, { 10670,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4909,   1536,   6535}, 0, { 10670,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2813,   1536,   5598}, 0, { -2074,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4284,   1331,   7069}, 0, {  8308,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4284,   1536,   7069}, 0, {  8308,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4460,   1331,   6912}, 0, {  8372,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2980,   1536,   5431}, 0, { -2074,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4460,   1536,   6912}, 0, {  8372,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2980,   1331,   5431}, 0, { -2074,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3559,   1536,   4852}, 0, { -5140,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3559,   1331,   4852}, 0, { -5140,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3392,   1331,   5018}, 0, { -4118,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3392,   1536,   5018}, 0, { -4118,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3392,   1331,   5018}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070029E0 - 0x07002A60\nstatic const Vtx jrb_seg7_vertex_070029E0[] = {\n    {{{  5084,   1331,   6377}, 0, { 10734,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3559,   1331,   4852}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5084,   1536,   6377}, 0, { 10734,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3559,   1536,   4852}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2835,   1536,   6155}, 0, {  3034,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2668,   1331,   6322}, 0, {  4056,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2668,   1536,   6322}, 0, {  4056,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2835,   1331,   6155}, 0, {  3034,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07002A60 - 0x07002B60\nstatic const Vtx jrb_seg7_vertex_07002A60[] = {\n    {{{ -3991,   1126,    -97}, 0, { 19524,    956}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3443,   1024,    319}, 0, { 19132,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -705,   1024,   2401}, 0, { 17252,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1480,   4096,   7814}, 0, {  6336,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1480,   1024,   7814}, 0, {  6336,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -805,   1024,   7672}, 0, {  4776,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -805,   4096,   7672}, 0, {  4776,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4161,   4096,   6315}, 0, {  2440,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4161,   1024,   6315}, 0, {  2440,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6561,   4096,   4330}, 0, {   856,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6561,   1126,   4330}, 0, {   856,    956}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5762,   4096,  -1125}, 0, { 20512,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3991,   4096,    -97}, 0, { 19524,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5221,   4096,   -669}, 0, { 13320,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  7435,   1024,    615}, 0, { 12176,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  7435,   4096,    615}, 0, { 12176,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07002B60 - 0x07002C60\nstatic const Vtx jrb_seg7_vertex_07002B60[] = {\n    {{{  -705,   4096,   2401}, 0, { 17252,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -705,   1024,   2401}, 0, { 17252,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1136,   1024,   2287}, 0, { 16276,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3991,   4096,    -97}, 0, { 19524,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1136,   4096,   2287}, 0, { 16276,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2350,   1024,   1215}, 0, { 15468,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2350,   4096,   1215}, 0, { 15468,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3121,   1024,   -112}, 0, { 14632,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3121,   4096,   -112}, 0, { 14632,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5221,   1024,   -669}, 0, { 13320,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5221,   4096,   -669}, 0, { 13320,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  7435,   1024,    615}, 0, { 12176,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  7435,   4096,    615}, 0, { 12176,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  7992,   1024,   2714}, 0, { 11144,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  7992,   4096,   2714}, 0, { 11144,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6707,   1024,   4928}, 0, {  9936,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07002C60 - 0x07002D60\nstatic const Vtx jrb_seg7_vertex_07002C60[] = {\n    {{{  7992,   4096,   2714}, 0, { 11144,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6707,   1024,   4928}, 0, {  9936,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6707,   4096,   4928}, 0, {  9936,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4279,   1024,   7071}, 0, {  8148,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4279,   4096,   7071}, 0, {  8148,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1480,   1024,   7814}, 0, {  6336,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1480,   4096,   7814}, 0, {  6336,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5762,   4096,  -1125}, 0, { 20512,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5762,   1126,  -1125}, 0, { 20512,    956}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3991,   1126,    -97}, 0, { 19524,    956}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7494,   4096,    173}, 0, { 21392,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6980,   1126,   -712}, 0, { 20948,    956}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6980,   4096,   -712}, 0, { 20948,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7494,   1126,    173}, 0, { 21392,    956}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7818,   4096,   2416}, 0, { 22384,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7818,   1126,   2416}, 0, { 22384,    956}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07002D60 - 0x07002DA0\nstatic const Vtx jrb_seg7_vertex_07002D60[] = {\n    {{{ -6561,   4096,   4330}, 0, { 23340,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7818,   1126,   2416}, 0, { 22384,    956}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7818,   4096,   2416}, 0, { 22384,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6561,   1126,   4330}, 0, { 23340,    956}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07002DA0 - 0x07002E68\nstatic const Gfx jrb_seg7_dl_07002DA0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09006000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(jrb_seg7_vertex_07002800, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(jrb_seg7_vertex_070028F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(jrb_seg7_vertex_070029E0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07002E68 - 0x07002FD0\nstatic const Gfx jrb_seg7_dl_07002E68[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_0900B800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(jrb_seg7_vertex_07002A60, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 5,  8,  7, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11,  0, 12, 0x0),\n    gsSP2Triangles(13, 14, 15, 0x0, 12,  0,  2, 0x0),\n    gsSPVertex(jrb_seg7_vertex_07002B60, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  4,  2,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(12, 11, 13, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(14, 13, 15, 0x0),\n    gsSPVertex(jrb_seg7_vertex_07002C60, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12,  8,  7, 0x0),\n    gsSP2Triangles(12, 11,  8, 0x0, 10, 13, 11, 0x0),\n    gsSP2Triangles(14, 13, 10, 0x0, 14, 15, 13, 0x0),\n    gsSPVertex(jrb_seg7_vertex_07002D60, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07002FD0 - 0x070030A8\nconst Gfx jrb_seg7_dl_07002FD0[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(15, 65, 100, 255),\n    gsSPFogFactor(0x0724, 0xF9DC), // This isn't gsSPFogPosition since there is no valid min/max pair that corresponds to 0x0724F9DC\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(jrb_seg7_dl_07002DA0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(jrb_seg7_dl_07002E68),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/jrb/areas/1/2/model.inc.c",
    "content": "// 0x070030A8 - 0x070030C0\nstatic const Lights1 jrb_seg7_lights_070030A8 = gdSPDefLights1(\n    0x10, 0x25, 0x1e,\n    0x41, 0x96, 0x78, 0x28, 0x28, 0x28\n);\n\n// 0x070030C0 - 0x070030D8\nstatic const Lights1 jrb_seg7_lights_070030C0 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x070030D8 - 0x070030F0\nstatic const Lights1 jrb_seg7_lights_070030D8 = gdSPDefLights1(\n    0x1e, 0x27, 0x3a,\n    0x79, 0x9f, 0xeb, 0x28, 0x28, 0x28\n);\n\n// 0x070030F0 - 0x070031F0\nstatic const Vtx jrb_seg7_vertex_070030F0[] = {\n    {{{  3093,  -5119,   4015}, 0, {  1220,   2248}, {0x41, 0x63, 0xd5, 0xff}}},\n    {{{  4422,  -5119,   4786}, 0, {  2268,   1970}, {0x06, 0x76, 0xd2, 0xff}}},\n    {{{  4774,  -5119,   2892}, 0, {  1500,    852}, {0x0f, 0x78, 0xdb, 0xff}}},\n    {{{  4979,  -5631,   2482}, 0, {  1396,    546}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  4569,  -5119,   2687}, 0, {  1296,    852}, {0x25, 0x78, 0xf1, 0xff}}},\n    {{{  5183,  -5119,   2892}, 0, {  1704,    648}, {0xf1, 0x78, 0xdb, 0xff}}},\n    {{{  4569,  -5119,   2277}, 0, {  1092,    648}, {0x25, 0x78, 0x0f, 0xff}}},\n    {{{  5388,  -5119,   2277}, 0, {  1500,    238}, {0xdb, 0x78, 0x0f, 0xff}}},\n    {{{  5388,  -5119,   2687}, 0, {  1704,    444}, {0xdb, 0x78, 0xf1, 0xff}}},\n    {{{  4774,  -5119,   2073}, 0, {  1092,    444}, {0x0f, 0x78, 0x25, 0xff}}},\n    {{{  5183,  -5119,   2073}, 0, {  1296,    238}, {0xf1, 0x78, 0x25, 0xff}}},\n    {{{  2722,  -5119,   2615}, 0, {   336,   1736}, {0x3f, 0x69, 0x1d, 0xff}}},\n    {{{  6478,  -5119,   1243}, 0, {  1528,   -822}, {0xab, 0x44, 0x41, 0xff}}},\n    {{{  5821,  -5119,   4414}, 0, {  2780,   1086}, {0xc4, 0x60, 0xc9, 0xff}}},\n    {{{  3750,  -5119,    844}, 0, {     0,    340}, {0x31, 0x4d, 0x57, 0xff}}},\n    {{{  5150,  -5119,    472}, 0, {   480,   -544}, {0xf5, 0x5b, 0x56, 0xff}}},\n};\n\n// 0x070031F0 - 0x07003250\nstatic const Vtx jrb_seg7_vertex_070031F0[] = {\n    {{{  6849,  -5119,   2643}, 0, {  2412,   -308}, {0xa1, 0x53, 0x0a, 0xff}}},\n    {{{  6478,  -5119,   1243}, 0, {  1528,   -822}, {0xab, 0x44, 0x41, 0xff}}},\n    {{{  5388,  -5119,   2277}, 0, {  1500,    238}, {0xdb, 0x78, 0x0f, 0xff}}},\n    {{{  5388,  -5119,   2687}, 0, {  1704,    444}, {0xdb, 0x78, 0xf1, 0xff}}},\n    {{{  5821,  -5119,   4414}, 0, {  2780,   1086}, {0xc4, 0x60, 0xc9, 0xff}}},\n    {{{  5183,  -5119,   2892}, 0, {  1704,    648}, {0xf1, 0x78, 0xdb, 0xff}}},\n};\n\n// 0x07003250 - 0x07003350\nstatic const Vtx jrb_seg7_vertex_07003250[] = {\n    {{{  1888,   1024,   6165}, 0, {  1884,   3024}, {0x2a, 0x44, 0x9e, 0xff}}},\n    {{{  1879,   -511,   5086}, 0, {  1500,   3032}, {0x35, 0x54, 0xb3, 0xff}}},\n    {{{  1098,   1024,   6104}, 0, {  1884,   3812}, {0x01, 0x53, 0xa1, 0xff}}},\n    {{{   294,   -511,   4758}, 0, {  1500,   4614}, {0xde, 0x71, 0xd3, 0xff}}},\n    {{{  -219,    512,   5643}, 0, {  1756,   5128}, {0xe3, 0x63, 0xb7, 0xff}}},\n    {{{   330,   1024,   6232}, 0, {  1884,   4578}, {0xd3, 0x6b, 0xcd, 0xff}}},\n    {{{ -1662,  -1023,   3030}, 0, {  1116,   -312}, {0xfc, 0x7b, 0x1b, 0xff}}},\n    {{{ -2362,  -1023,   3215}, 0, {   652,   -188}, {0x2d, 0x63, 0x3f, 0xff}}},\n    {{{ -2876,  -1023,   4101}, 0, {   312,    400}, {0x43, 0x6b, 0xf9, 0xff}}},\n    {{{  -777,  -1023,   3544}, 0, {  1708,     30}, {0xd4, 0x66, 0x3b, 0xff}}},\n    {{{ -1848,      0,   2330}, 0, {   996,   -778}, {0xfb, 0x6d, 0x40, 0xff}}},\n    {{{ -2690,  -1023,   4801}, 0, {   432,    866}, {0x35, 0x6b, 0xd7, 0xff}}},\n    {{{ -1805,  -1023,   5315}, 0, {  1024,   1206}, {0x16, 0x60, 0xb1, 0xff}}},\n    {{{ -1105,  -1023,   5129}, 0, {  1488,   1082}, {0xe2, 0x67, 0xbd, 0xff}}},\n    {{{ -3762,      0,   3587}, 0, {  -276,     58}, {0x2b, 0x77, 0xf9, 0xff}}},\n    {{{ -3390,    512,   4987}, 0, {     0,    990}, {0x39, 0x61, 0xc8, 0xff}}},\n};\n\n// 0x07003350 - 0x07003450\nstatic const Vtx jrb_seg7_vertex_07003350[] = {\n    {{{ -1105,  -1023,   5129}, 0, {  1488,   1082}, {0xe2, 0x67, 0xbd, 0xff}}},\n    {{{  -219,    512,   5643}, 0, {  2076,   1424}, {0xe3, 0x63, 0xb7, 0xff}}},\n    {{{   294,   -511,   4758}, 0, {  2420,    838}, {0xde, 0x71, 0xd3, 0xff}}},\n    {{{  -591,  -1023,   4244}, 0, {  1832,    496}, {0xd8, 0x78, 0x01, 0xff}}},\n    {{{ -1662,  -1023,   3030}, 0, {  1116,   -312}, {0xfc, 0x7b, 0x1b, 0xff}}},\n    {{{ -1619,    512,   6015}, 0, {  1148,   1672}, {0x00, 0x6c, 0xbe, 0xff}}},\n    {{{ -1805,  -1023,   5315}, 0, {  1024,   1206}, {0x16, 0x60, 0xb1, 0xff}}},\n    {{{   -77,   -511,   3358}, 0, {  2172,    -94}, {0xf2, 0x7a, 0x1d, 0xff}}},\n    {{{  -777,  -1023,   3544}, 0, {  1708,     30}, {0xd4, 0x66, 0x3b, 0xff}}},\n    {{{ -3390,    512,   4987}, 0, {     0,    990}, {0x39, 0x61, 0xc8, 0xff}}},\n    {{{ -2690,  -1023,   4801}, 0, {   432,    866}, {0x35, 0x6b, 0xd7, 0xff}}},\n    {{{ -2876,  -1023,   4101}, 0, {   312,    400}, {0x43, 0x6b, 0xf9, 0xff}}},\n    {{{ -3762,      0,   3587}, 0, {  -276,     58}, {0x2b, 0x77, 0xf9, 0xff}}},\n    {{{ -2362,  -1023,   3215}, 0, {   652,   -188}, {0x2d, 0x63, 0x3f, 0xff}}},\n    {{{ -4133,      0,   2187}, 0, {  -524,   -872}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3248,      0,   2701}, 0, {    64,   -530}, {0x1d, 0x74, 0x28, 0xff}}},\n};\n\n// 0x07003450 - 0x07003540\nstatic const Vtx jrb_seg7_vertex_07003450[] = {\n    {{{ -1848,      0,   2330}, 0, {   996,   -778}, {0xfb, 0x6d, 0x40, 0xff}}},\n    {{{ -3248,      0,   2701}, 0, {    64,   -530}, {0x1d, 0x74, 0x28, 0xff}}},\n    {{{ -2362,  -1023,   3215}, 0, {   652,   -188}, {0x2d, 0x63, 0x3f, 0xff}}},\n    {{{ -1619,    512,   6015}, 0, {  1148,   1672}, {0x00, 0x6c, 0xbe, 0xff}}},\n    {{{ -3390,    512,   4987}, 0, {     0,    990}, {0x39, 0x61, 0xc8, 0xff}}},\n    {{{ -4161,    512,   6315}, 0, {  -540,   1872}, {0x1a, 0x69, 0xbf, 0xff}}},\n    {{{ -5256,    512,   4733}, 0, { -1268,    820}, {0x04, 0x7b, 0xe2, 0xff}}},\n    {{{ -3762,      0,   3587}, 0, {  -276,     58}, {0x2b, 0x77, 0xf9, 0xff}}},\n    {{{  -219,    512,   5643}, 0, {  2076,   1424}, {0xe3, 0x63, 0xb7, 0xff}}},\n    {{{  -805,    512,   7672}, 0, {  1688,   2774}, {0xea, 0x67, 0xbb, 0xff}}},\n    {{{  -777,  -1023,   3544}, 0, {  1708,     30}, {0xd4, 0x66, 0x3b, 0xff}}},\n    {{{   -77,   -511,   3358}, 0, {  2172,    -94}, {0xf2, 0x7a, 0x1d, 0xff}}},\n    {{{  -705,      0,   2401}, 0, {  1756,   -730}, {0x14, 0x6b, 0x40, 0xff}}},\n    {{{ -4133,      0,   2187}, 0, {  -524,   -872}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2771,      0,   1676}, 0, {   380,  -1212}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07003540 - 0x07003640\nstatic const Vtx jrb_seg7_vertex_07003540[] = {\n    {{{ -2771,    614,   1676}, 0, {  2536,    120}, {0x03, 0x7a, 0x20, 0xff}}},\n    {{{  -705,    512,   2401}, 0, {  4600,    844}, {0xdb, 0x60, 0x49, 0xff}}},\n    {{{ -3747,   1024,    257}, 0, {  1564,  -1296}, {0xfe, 0x79, 0x25, 0xff}}},\n    {{{  1879,   -511,   5086}, 0, {  3476,   1054}, {0x35, 0x54, 0xb3, 0xff}}},\n    {{{   -77,   -511,   3358}, 0, {  2172,    -94}, {0xf2, 0x7a, 0x1d, 0xff}}},\n    {{{   294,   -511,   4758}, 0, {  2420,    838}, {0xde, 0x71, 0xd3, 0xff}}},\n    {{{  1136,  -1023,   2287}, 0, {  2980,   -806}, {0x57, 0x3e, 0x43, 0xff}}},\n    {{{  -705,      0,   2401}, 0, {  1756,   -730}, {0x14, 0x6b, 0x40, 0xff}}},\n    {{{ -4133,      0,   2187}, 0, {  -524,   -872}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5170,      0,   3362}, 0, { -1212,    -92}, {0x03, 0x7c, 0xea, 0xff}}},\n    {{{ -3762,      0,   3587}, 0, {  -276,     58}, {0x2b, 0x77, 0xf9, 0xff}}},\n    {{{ -5256,    512,   4733}, 0, { -1268,    820}, {0x04, 0x7b, 0xe2, 0xff}}},\n    {{{ -4307,   1024,    405}, 0, {  1004,  -1146}, {0x09, 0x7b, 0x1c, 0xff}}},\n    {{{ -4133,    614,   2187}, 0, {  1176,    632}, {0x11, 0x7b, 0x17, 0xff}}},\n    {{{ -5345,   1024,   1011}, 0, {     0,   -542}, {0x15, 0x7b, 0x14, 0xff}}},\n    {{{ -5756,   1024,   1719}, 0, {  -440,    164}, {0x19, 0x7a, 0x13, 0xff}}},\n};\n\n// 0x07003640 - 0x07003700\nstatic const Vtx jrb_seg7_vertex_07003640[] = {\n    {{{ -5170,    614,   3362}, 0, {   144,   1802}, {0x23, 0x79, 0x03, 0xff}}},\n    {{{ -4133,    614,   2187}, 0, {  1176,    632}, {0x11, 0x7b, 0x17, 0xff}}},\n    {{{ -5756,   1024,   1719}, 0, {  -440,    164}, {0x19, 0x7a, 0x13, 0xff}}},\n    {{{ -4579,   1024,    508}, 0, {   732,  -1044}, {0x0d, 0x7b, 0x1a, 0xff}}},\n    {{{ -5345,   1024,   1011}, 0, {     0,   -542}, {0x15, 0x7b, 0x14, 0xff}}},\n    {{{ -4307,   1024,    405}, 0, {  1004,  -1146}, {0x09, 0x7b, 0x1c, 0xff}}},\n    {{{ -5963,   1024,   1954}, 0, {  -644,    398}, {0x27, 0x78, 0x0c, 0xff}}},\n    {{{ -6077,   1024,   3782}, 0, {  -760,   2222}, {0x2e, 0x75, 0xf2, 0xff}}},\n    {{{ -5256,   1024,   4733}, 0, {    56,   3170}, {0x25, 0x74, 0xe0, 0xff}}},\n    {{{  -705,    512,   2401}, 0, {  4600,    844}, {0xdb, 0x60, 0x49, 0xff}}},\n    {{{ -3443,   1024,    319}, 0, {  1864,  -1234}, {0xcc, 0x4a, 0x57, 0xff}}},\n    {{{ -3747,   1024,    257}, 0, {  1564,  -1296}, {0xfe, 0x79, 0x25, 0xff}}},\n};\n\n// 0x07003700 - 0x07003800\nstatic const Vtx jrb_seg7_vertex_07003700[] = {\n    {{{   728,   -630,   3571}, 0, {  2012,    990}, {0x20, 0x09, 0x7a, 0xff}}},\n    {{{   696,   1024,   3452}, 0, {  1604,   -662}, {0x20, 0x09, 0x7a, 0xff}}},\n    {{{   519,   1024,   3349}, 0, {  1120,   -662}, {0x97, 0x08, 0x45, 0xff}}},\n    {{{   799,   1024,   3275}, 0, {  1120,   -662}, {0x7a, 0x09, 0xe0, 0xff}}},\n    {{{   589,   -726,   3046}, 0, {   204,   1084}, {0x07, 0x08, 0x82, 0xff}}},\n    {{{   622,   1024,   3172}, 0, {   640,   -662}, {0xbb, 0x08, 0x97, 0xff}}},\n    {{{   927,   -751,   3241}, 0, {  1120,   1108}, {0x7a, 0x09, 0xe0, 0xff}}},\n    {{{   402,   -607,   3381}, 0, {  1120,    966}, {0x82, 0x08, 0xf9, 0xff}}},\n    {{{   225,   -595,   2823}, 0, { -1112,    872}, {0x6d, 0x07, 0x3f, 0xff}}},\n    {{{     2,   1024,   2812}, 0, {  -600,   -744}, {0xe7, 0x07, 0x7c, 0xff}}},\n    {{{   -40,   -455,   2888}, 0, {  -164,    734}, {0xa1, 0x07, 0x53, 0xff}}},\n    {{{   150,   -509,   2557}, 0, { -2072,    788}, {0x3f, 0x07, 0x93, 0xff}}},\n    {{{   105,   1024,   2635}, 0, { -1624,   -744}, {0x3f, 0x07, 0x93, 0xff}}},\n    {{{  -105,   -376,   2631}, 0, { -1112,    654}, {0xac, 0x07, 0xa2, 0xff}}},\n    {{{   -34,   1024,   2672}, 0, { -1112,   -744}, {0x84, 0x06, 0xe6, 0xff}}},\n    {{{   142,   1024,   2775}, 0, { -1112,   -744}, {0x6d, 0x07, 0x3f, 0xff}}},\n};\n\n// 0x07003800 - 0x070038F0\nstatic const Vtx jrb_seg7_vertex_07003800[] = {\n    {{{ -3928,    922,   2443}, 0, {  2012,  -3610}, {0x57, 0x26, 0x54, 0xff}}},\n    {{{ -3928,      0,   2443}, 0, {  2012,    990}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -3928,      0,   1829}, 0, {     0,    990}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  1252,   -664,   3893}, 0, {   928,    942}, {0x53, 0x07, 0x5f, 0xff}}},\n    {{{  1166,   1024,   3843}, 0, {   928,   -744}, {0x7c, 0x07, 0x19, 0xff}}},\n    {{{  1043,   1024,   3876}, 0, {  1380,   -744}, {0xc1, 0x07, 0x6d, 0xff}}},\n    {{{  1185,   -712,   3631}, 0, {     0,    990}, {0x5f, 0x07, 0xad, 0xff}}},\n    {{{  1133,   1024,   3720}, 0, {   476,   -744}, {0x19, 0x07, 0x84, 0xff}}},\n    {{{   925,   -640,   3703}, 0, {   928,    918}, {0x93, 0x07, 0xc1, 0xff}}},\n    {{{  1010,   1024,   3752}, 0, {   928,   -744}, {0x93, 0x07, 0xc1, 0xff}}},\n    {{{   995,   -594,   3958}, 0, {  1856,    872}, {0xc1, 0x07, 0x6d, 0xff}}},\n    {{{ -3928,    922,   1829}, 0, {  2012,  -3608}, {0x54, 0x26, 0xa9, 0xff}}},\n    {{{ -4543,      0,   1829}, 0, { -1048,    990}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -4543,    922,   1829}, 0, { -1052,  -3608}, {0xa9, 0x26, 0xac, 0xff}}},\n    {{{ -3928,    922,   1829}, 0, {     0,  -3610}, {0x54, 0x26, 0xa9, 0xff}}},\n};\n\n// 0x070038F0 - 0x070039E0\nstatic const Vtx jrb_seg7_vertex_070038F0[] = {\n    {{{ -4543,    922,   1829}, 0, {     0,  -3610}, {0xa9, 0x26, 0xac, 0xff}}},\n    {{{ -4543,      0,   1829}, 0, {     0,    990}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -4543,      0,   2443}, 0, {  2012,    990}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -4543,    922,   2443}, 0, {  2012,  -3610}, {0xac, 0x26, 0x57, 0xff}}},\n    {{{ -4543,    922,   2443}, 0, { -1052,  -3608}, {0xac, 0x26, 0x57, 0xff}}},\n    {{{ -3928,      0,   2443}, 0, {  2012,    990}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -3928,    922,   2443}, 0, {  2012,  -3608}, {0x57, 0x26, 0x54, 0xff}}},\n    {{{ -4543,      0,   2443}, 0, { -1048,    990}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -3928,    922,   1829}, 0, {  2012,  -3608}, {0x54, 0x26, 0xa9, 0xff}}},\n    {{{ -3928,      0,   1829}, 0, {  2012,    990}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{ -4543,      0,   1829}, 0, { -1048,    990}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -3976,   1024,   1877}, 0, {  1772,  -4120}, {0x30, 0x43, 0xa0, 0xff}}},\n    {{{ -4543,    922,   1829}, 0, { -1052,  -3608}, {0xa9, 0x26, 0xac, 0xff}}},\n    {{{ -4495,   1024,   2395}, 0, {  -812,  -4120}, {0xd0, 0x43, 0x60, 0xff}}},\n    {{{ -3976,   1024,   2395}, 0, {  1772,  -4120}, {0x60, 0x43, 0x30, 0xff}}},\n};\n\n// 0x070039E0 - 0x07003A90\nstatic const Vtx jrb_seg7_vertex_070039E0[] = {\n    {{{ -3928,    922,   1829}, 0, {     0,  -3610}, {0x54, 0x26, 0xa9, 0xff}}},\n    {{{ -3976,   1024,   1877}, 0, {   128,  -4120}, {0x30, 0x43, 0xa0, 0xff}}},\n    {{{ -3976,   1024,   2395}, 0, {  1852,  -4120}, {0x60, 0x43, 0x30, 0xff}}},\n    {{{ -3928,    922,   2443}, 0, {  2012,  -3610}, {0x57, 0x26, 0x54, 0xff}}},\n    {{{ -4495,   1024,   1877}, 0, {   128,  -4120}, {0xa0, 0x43, 0xd0, 0xff}}},\n    {{{ -4543,    922,   2443}, 0, {  2012,  -3610}, {0xac, 0x26, 0x57, 0xff}}},\n    {{{ -4495,   1024,   2395}, 0, {  1852,  -4120}, {0xd0, 0x43, 0x60, 0xff}}},\n    {{{ -4543,    922,   1829}, 0, {     0,  -3610}, {0xa9, 0x26, 0xac, 0xff}}},\n    {{{ -3976,   1024,   1877}, 0, {  1772,  -4120}, {0x30, 0x43, 0xa0, 0xff}}},\n    {{{ -4543,    922,   1829}, 0, { -1052,  -3608}, {0xa9, 0x26, 0xac, 0xff}}},\n    {{{ -4495,   1024,   1877}, 0, {  -812,  -4120}, {0xa0, 0x43, 0xd0, 0xff}}},\n};\n\n// 0x07003A90 - 0x07003B10\nstatic const Vtx jrb_seg7_vertex_07003A90[] = {\n    {{{ -2585,    512,   6165}, 0, {   780,   1090}, {0xc8, 0x05, 0x71, 0xff}}},\n    {{{ -2483,    512,   6165}, 0, {  1264,   1090}, {0x71, 0x05, 0x38, 0xff}}},\n    {{{ -2500,   1024,   6148}, 0, {  1444,    582}, {0x38, 0x05, 0x71, 0xff}}},\n    {{{ -2500,   1024,   6080}, 0, {  1120,    582}, {0x71, 0x05, 0xc8, 0xff}}},\n    {{{ -2483,    512,   6062}, 0, {   780,   1090}, {0x38, 0x05, 0x8f, 0xff}}},\n    {{{ -2568,   1024,   6080}, 0, {   800,    582}, {0xc8, 0x05, 0x8f, 0xff}}},\n    {{{ -2585,    512,   6062}, 0, {   300,   1090}, {0x8f, 0x05, 0xc8, 0xff}}},\n    {{{ -2568,   1024,   6148}, 0, {  1120,    582}, {0x8f, 0x05, 0x38, 0xff}}},\n};\n\n// 0x07003B10 - 0x07003C10\nstatic const Vtx jrb_seg7_vertex_07003B10[] = {\n    {{{  7030,  -3325,   1838}, 0, {   564,   1274}, {0x88, 0x1a, 0x1f, 0xff}}},\n    {{{  7092,  -3022,   1822}, 0, {   664,   1290}, {0x88, 0x1a, 0x1f, 0xff}}},\n    {{{  7435,      0,    615}, 0, {  1672,    498}, {0x9d, 0x13, 0x4c, 0xff}}},\n    {{{  6478,  -5119,   1243}, 0, {     0,    558}, {0xab, 0x44, 0x41, 0xff}}},\n    {{{  7038,  -3476,   1995}, 0, {   516,   1400}, {0x88, 0x1a, 0x1f, 0xff}}},\n    {{{  7162,  -2871,   1962}, 0, {   716,   1432}, {0x88, 0x1a, 0x1f, 0xff}}},\n    {{{  7992,      0,   2714}, 0, {  1672,   2398}, {0x83, 0x13, 0x01, 0xff}}},\n    {{{  5662,  -4095,    533}, 0, {   308,   -372}, {0xc2, 0x18, 0x6b, 0xff}}},\n    {{{  5221,      0,   -669}, 0, {  1672,  -1516}, {0xf7, 0x0f, 0x7d, 0xff}}},\n    {{{  5457,  -3890,    366}, 0, {   376,   -594}, {0xc2, 0x18, 0x6b, 0xff}}},\n    {{{  5221,   1024,   -669}, 0, {  2012,  -1516}, {0xdf, 0x00, 0x7a, 0xff}}},\n    {{{  7435,   1024,    615}, 0, {  2012,    498}, {0x92, 0x00, 0x3e, 0xff}}},\n    {{{  7117,  -3476,   2292}, 0, {   516,   1670}, {0x88, 0x1a, 0x1f, 0xff}}},\n    {{{  6849,  -5119,   2643}, 0, {     0,   1824}, {0xa1, 0x53, 0x0a, 0xff}}},\n    {{{  5662,  -4709,    675}, 0, {   104,   -260}, {0xc2, 0x18, 0x6b, 0xff}}},\n    {{{  7187,  -3325,   2432}, 0, {   564,   1812}, {0x88, 0x1a, 0x1e, 0xff}}},\n};\n\n// 0x07003C10 - 0x07003D10\nstatic const Vtx jrb_seg7_vertex_07003C10[] = {\n    {{{  7249,  -3022,   2416}, 0, {   664,   1828}, {0x88, 0x1a, 0x1f, 0xff}}},\n    {{{  6849,  -5119,   2643}, 0, {     0,   1824}, {0xa1, 0x53, 0x0a, 0xff}}},\n    {{{  7992,      0,   2714}, 0, {  1672,   2398}, {0x83, 0x13, 0x01, 0xff}}},\n    {{{  7187,  -3325,   2432}, 0, {   564,   1812}, {0x88, 0x1a, 0x1e, 0xff}}},\n    {{{  7241,  -2871,   2259}, 0, {   716,   1700}, {0x88, 0x1a, 0x1f, 0xff}}},\n    {{{  7162,  -2871,   1962}, 0, {   716,   1432}, {0x88, 0x1a, 0x1f, 0xff}}},\n    {{{  7435,   1024,    615}, 0, {  2012,    498}, {0x92, 0x00, 0x3e, 0xff}}},\n    {{{  7992,   1024,   2714}, 0, {  2012,   2398}, {0x86, 0x00, 0xdf, 0xff}}},\n    {{{  -805,    512,   7672}, 0, {  1840,  -8672}, {0xea, 0x67, 0xbb, 0xff}}},\n    {{{  -805,   1024,   7672}, 0, {  2012,  -8672}, {0x22, 0x00, 0x86, 0xff}}},\n    {{{  -210,   1024,   7709}, 0, {  2012,  -8162}, {0xd4, 0x3b, 0x9a, 0xff}}},\n    {{{ -4161,    512,   6315}, 0, {  1840, -11024}, {0x1a, 0x69, 0xbf, 0xff}}},\n    {{{ -3443,   1024,    319}, 0, {  2012,  -9448}, {0xcc, 0x4a, 0x57, 0xff}}},\n    {{{  -705,    512,   2401}, 0, {  1840,  -6164}, {0xdb, 0x60, 0x49, 0xff}}},\n    {{{  -705,   1024,   2401}, 0, {  2012,  -6164}, {0xeb, 0x00, 0x7d, 0xff}}},\n    {{{ -4161,   1024,   6315}, 0, {  2012, -11024}, {0x2f, 0x00, 0x8b, 0xff}}},\n};\n\n// 0x07003D10 - 0x07003E00\nstatic const Vtx jrb_seg7_vertex_07003D10[] = {\n    {{{  4279,   1024,   7071}, 0, {  2012,  -3890}, {0xc5, 0x00, 0x91, 0xff}}},\n    {{{  4279,  -1535,   7071}, 0, {  1160,  -3890}, {0x00, 0x29, 0x88, 0xff}}},\n    {{{  3190,   1024,   7360}, 0, {  2012,  -4988}, {0x1f, 0x1b, 0x89, 0xff}}},\n    {{{  6707,   1024,   4928}, 0, {  2012,   -756}, {0xa3, 0x00, 0xab, 0xff}}},\n    {{{  6707,  -1023,   4928}, 0, {  1332,   -756}, {0x9a, 0x0c, 0xb6, 0xff}}},\n    {{{  5821,  -5119,   4414}, 0, {     0,  -1304}, {0xc4, 0x60, 0xc9, 0xff}}},\n    {{{  4422,  -5119,   4786}, 0, {     0,  -2716}, {0x06, 0x76, 0xd2, 0xff}}},\n    {{{  5221,      0,   -669}, 0, {  1672,  -1516}, {0xf7, 0x0f, 0x7d, 0xff}}},\n    {{{  5167,  -3890,    198}, 0, {   376,   -858}, {0xf0, 0x1b, 0x7a, 0xff}}},\n    {{{  5457,  -3890,    366}, 0, {   376,   -594}, {0xc2, 0x18, 0x6b, 0xff}}},\n    {{{  4842,  -3890,    284}, 0, {   376,   -276}, {0x1f, 0x1a, 0x78, 0xff}}},\n    {{{  5221,      0,   -669}, 0, {  1672,    498}, {0xf7, 0x0f, 0x7d, 0xff}}},\n    {{{  3121,      0,   -112}, 0, {  1672,  -1618}, {0x46, 0x10, 0x68, 0xff}}},\n    {{{  4638,  -4095,    383}, 0, {   308,   -502}, {0x1f, 0x1a, 0x78, 0xff}}},\n    {{{  5167,  -3890,    198}, 0, {   376,     52}, {0xf0, 0x1b, 0x7a, 0xff}}},\n};\n\n// 0x07003E00 - 0x07003EF0\nstatic const Vtx jrb_seg7_vertex_07003E00[] = {\n    {{{  3121,   1024,   -112}, 0, {  2012,  -1618}, {0x3e, 0x00, 0x6e, 0xff}}},\n    {{{  5221,      0,   -669}, 0, {  1672,    498}, {0xf7, 0x0f, 0x7d, 0xff}}},\n    {{{  5221,   1024,   -669}, 0, {  2012,    498}, {0xdf, 0x00, 0x7a, 0xff}}},\n    {{{  3121,      0,   -112}, 0, {  1672,  -1618}, {0x46, 0x10, 0x68, 0xff}}},\n    {{{  3750,  -5119,    844}, 0, {     0,  -1500}, {0x31, 0x4d, 0x57, 0xff}}},\n    {{{  4638,  -4095,    383}, 0, {   308,   -502}, {0x1f, 0x1a, 0x78, 0xff}}},\n    {{{  4638,  -4709,    518}, 0, {   104,   -564}, {0x1f, 0x1a, 0x78, 0xff}}},\n    {{{  5150,  -5119,    472}, 0, {     0,    -90}, {0xf5, 0x5b, 0x56, 0xff}}},\n    {{{  4842,  -4914,    509}, 0, {    36,   -378}, {0x1f, 0x1a, 0x78, 0xff}}},\n    {{{  7992,      0,   2714}, 0, {  1672,   1398}, {0x83, 0x13, 0x01, 0xff}}},\n    {{{  5821,  -5119,   4414}, 0, {     0,  -1304}, {0xc4, 0x60, 0xc9, 0xff}}},\n    {{{  6707,  -1023,   4928}, 0, {  1332,   -756}, {0x9a, 0x0c, 0xb6, 0xff}}},\n    {{{  6478,  -5119,   1243}, 0, {     0,    558}, {0xab, 0x44, 0x41, 0xff}}},\n    {{{  5662,  -4709,    675}, 0, {   104,   -260}, {0xc2, 0x18, 0x6b, 0xff}}},\n    {{{  5457,  -4914,    603}, 0, {    36,   -408}, {0xc2, 0x18, 0x6b, 0xff}}},\n};\n\n// 0x07003EF0 - 0x07003FD0\nstatic const Vtx jrb_seg7_vertex_07003EF0[] = {\n    {{{  2350,      0,   1215}, 0, {  1672,    236}, {0x5f, 0x0e, 0x52, 0xff}}},\n    {{{  2722,  -5119,   2615}, 0, {     0,   -304}, {0x3f, 0x69, 0x1d, 0xff}}},\n    {{{  3750,  -5119,    844}, 0, {     0,   1010}, {0x31, 0x4d, 0x57, 0xff}}},\n    {{{  1136,  -1023,   2287}, 0, {  1332,   -850}, {0x57, 0x3e, 0x43, 0xff}}},\n    {{{  3121,      0,   -112}, 0, {  1672,   1222}, {0x46, 0x10, 0x68, 0xff}}},\n    {{{  7992,   1024,   2714}, 0, {  2012,   1398}, {0x86, 0x00, 0xdf, 0xff}}},\n    {{{  7992,      0,   2714}, 0, {  1672,   1398}, {0x83, 0x13, 0x01, 0xff}}},\n    {{{  6707,  -1023,   4928}, 0, {  1332,   -756}, {0x9a, 0x0c, 0xb6, 0xff}}},\n    {{{  6707,   1024,   4928}, 0, {  2012,   -756}, {0xa3, 0x00, 0xab, 0xff}}},\n    {{{  6478,  -5119,   1243}, 0, {     0,    558}, {0xab, 0x44, 0x41, 0xff}}},\n    {{{  5457,  -4914,    603}, 0, {    36,   -408}, {0xc2, 0x18, 0x6b, 0xff}}},\n    {{{  5150,  -5119,    472}, 0, {     0,   -650}, {0xf5, 0x5b, 0x56, 0xff}}},\n    {{{  6849,  -5119,   2643}, 0, {     0,    420}, {0xa1, 0x53, 0x0a, 0xff}}},\n    {{{  5821,  -5119,   4414}, 0, {     0,  -1304}, {0xc4, 0x60, 0xc9, 0xff}}},\n};\n\n// 0x07003FD0 - 0x070040C0\nstatic const Vtx jrb_seg7_vertex_07003FD0[] = {\n    {{{  2863,   1024,   7010}, 0, {  2012,  -1176}, {0x52, 0x32, 0xae, 0xff}}},\n    {{{  3190,   1024,   7360}, 0, {  2012,  -1642}, {0x1f, 0x1b, 0x89, 0xff}}},\n    {{{  4279,  -1535,   7071}, 0, {  1160,  -1936}, {0x00, 0x29, 0x88, 0xff}}},\n    {{{  1879,   -511,   5086}, 0, {  1500,    978}, {0x35, 0x54, 0xb3, 0xff}}},\n    {{{  3093,  -5119,   4015}, 0, {     0,   1296}, {0x41, 0x63, 0xd5, 0xff}}},\n    {{{  4422,  -5119,   4786}, 0, {     0,      0}, {0x06, 0x76, 0xd2, 0xff}}},\n    {{{  1136,  -1023,   2287}, 0, {  1332,   3766}, {0x57, 0x3e, 0x43, 0xff}}},\n    {{{  2722,  -5119,   2615}, 0, {     0,   2690}, {0x3f, 0x69, 0x1d, 0xff}}},\n    {{{  1888,   1024,   6165}, 0, {  2012,     40}, {0x2a, 0x44, 0x9e, 0xff}}},\n    {{{  -705,   1024,   2401}, 0, {  2012,  -6164}, {0xeb, 0x00, 0x7d, 0xff}}},\n    {{{  1136,  -1023,   2287}, 0, {  1332,  -4478}, {0x57, 0x3e, 0x43, 0xff}}},\n    {{{  1136,   1024,   2287}, 0, {  2012,  -4478}, {0x3d, 0x00, 0x6f, 0xff}}},\n    {{{  5457,  -4914,    603}, 0, {    36,   -408}, {0xc2, 0x18, 0x6b, 0xff}}},\n    {{{  5152,  -4914,    427}, 0, {    36,   -686}, {0xf0, 0x1b, 0x7a, 0xff}}},\n    {{{  5150,  -5119,    472}, 0, {     0,   -650}, {0xf5, 0x5b, 0x56, 0xff}}},\n};\n\n// 0x070040C0 - 0x070041C0\nstatic const Vtx jrb_seg7_vertex_070040C0[] = {\n    {{{  5150,  -5119,    472}, 0, {     0,    -90}, {0xf5, 0x5b, 0x56, 0xff}}},\n    {{{  5152,  -4914,    427}, 0, {    36,    -66}, {0xf0, 0x1b, 0x7a, 0xff}}},\n    {{{  4842,  -4914,    509}, 0, {    36,   -378}, {0x1f, 0x1a, 0x78, 0xff}}},\n    {{{  1136,   1024,   2287}, 0, {  2012,   -828}, {0x3d, 0x00, 0x6f, 0xff}}},\n    {{{  2350,      0,   1215}, 0, {  1672,    236}, {0x5f, 0x0e, 0x52, 0xff}}},\n    {{{  2350,   1024,   1215}, 0, {  2012,    248}, {0x66, 0x00, 0x4b, 0xff}}},\n    {{{  3121,      0,   -112}, 0, {  1672,   1222}, {0x46, 0x10, 0x68, 0xff}}},\n    {{{  3121,   1024,   -112}, 0, {  2012,   1234}, {0x3e, 0x00, 0x6e, 0xff}}},\n    {{{  1136,  -1023,   2287}, 0, {  1332,   -850}, {0x57, 0x3e, 0x43, 0xff}}},\n    {{{  -705,   1024,   2401}, 0, {  2012,  -6164}, {0xeb, 0x00, 0x7d, 0xff}}},\n    {{{  -705,      0,   2401}, 0, {  1672,  -6164}, {0x14, 0x6b, 0x40, 0xff}}},\n    {{{  1136,  -1023,   2287}, 0, {  1332,  -4478}, {0x57, 0x3e, 0x43, 0xff}}},\n    {{{  -219,    512,   5643}, 0, {  1840,  -7222}, {0xe3, 0x63, 0xb7, 0xff}}},\n    {{{  -805,    512,   7672}, 0, {  1840,  -8672}, {0xea, 0x67, 0xbb, 0xff}}},\n    {{{   111,   1024,   6993}, 0, {  2012,  -7548}, {0xb6, 0x63, 0xe7, 0xff}}},\n    {{{   330,   1024,   6232}, 0, {  2012,  -7004}, {0xd3, 0x6b, 0xcd, 0xff}}},\n};\n\n// 0x070041C0 - 0x070041F0\nstatic const Vtx jrb_seg7_vertex_070041C0[] = {\n    {{{  -805,    512,   7672}, 0, {  1840,  -8672}, {0xea, 0x67, 0xbb, 0xff}}},\n    {{{  -210,   1024,   7709}, 0, {  2012,  -8162}, {0xd4, 0x3b, 0x9a, 0xff}}},\n    {{{   111,   1024,   6993}, 0, {  2012,  -7548}, {0xb6, 0x63, 0xe7, 0xff}}},\n};\n\n// 0x070041F0 - 0x070044C8\nstatic const Gfx jrb_seg7_dl_070041F0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&jrb_seg7_lights_070030A8.l, 1),\n    gsSPLight(&jrb_seg7_lights_070030A8.a, 2),\n    gsSPVertex(jrb_seg7_vertex_070030F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 5,  3,  2, 0x0,  4,  3,  6, 0x0),\n    gsSP2Triangles( 7,  3,  8, 0x0,  6,  3,  9, 0x0),\n    gsSP2Triangles( 8,  3,  5, 0x0,  9,  3, 10, 0x0),\n    gsSP2Triangles( 3,  7, 10, 0x0, 11,  0,  4, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0, 12, 10,  7, 0x0),\n    gsSP2Triangles(13,  5,  1, 0x0,  5,  2,  1, 0x0),\n    gsSP2Triangles(11,  4,  6, 0x0, 14, 11,  6, 0x0),\n    gsSP2Triangles(14,  6,  9, 0x0, 15, 14,  9, 0x0),\n    gsSP2Triangles(15,  9, 10, 0x0, 12, 15, 10, 0x0),\n    gsSPVertex(jrb_seg7_vertex_070031F0, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  0,  3, 0x0,  4,  3,  5, 0x0),\n    gsSPLight(&jrb_seg7_lights_070030C0.l, 1),\n    gsSPLight(&jrb_seg7_lights_070030C0.a, 2),\n    gsSPVertex(jrb_seg7_vertex_07003250, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9, 10, 0x0),\n    gsSP2Triangles( 6,  8, 11, 0x0,  6, 11, 12, 0x0),\n    gsSP2Triangles( 6, 12, 13, 0x0,  6, 10,  7, 0x0),\n    gsSP1Triangle( 8, 14, 15, 0x0),\n    gsSPVertex(jrb_seg7_vertex_07003350, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  0,  3, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 0,  6,  5, 0x0,  7,  3,  2, 0x0),\n    gsSP2Triangles( 4,  3,  8, 0x0,  7,  8,  3, 0x0),\n    gsSP2Triangles( 9,  6, 10, 0x0,  9,  5,  6, 0x0),\n    gsSP2Triangles(10, 11,  9, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(14, 12, 15, 0x0, 12, 13, 15, 0x0),\n    gsSPVertex(jrb_seg7_vertex_07003450, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  5,  4, 0x0,  6,  4,  7, 0x0),\n    gsSP2Triangles( 8,  3,  9, 0x0,  3,  5,  9, 0x0),\n    gsSP2Triangles(10, 11,  0, 0x0, 12,  0, 11, 0x0),\n    gsSP2Triangles(13,  1,  0, 0x0, 14, 13,  0, 0x0),\n    gsSP1Triangle(12, 14,  0, 0x0),\n    gsSPVertex(jrb_seg7_vertex_07003540, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13,  0, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(jrb_seg7_vertex_07003640, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 1,  5,  3, 0x0,  0,  2,  6, 0x0),\n    gsSP2Triangles( 0,  7,  8, 0x0,  0,  6,  7, 0x0),\n    gsSP1Triangle( 9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070044C8 - 0x07004658\nstatic const Gfx jrb_seg7_dl_070044C8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&jrb_seg7_lights_070030D8.l, 1),\n    gsSPLight(&jrb_seg7_lights_070030D8.a, 2),\n    gsSPVertex(jrb_seg7_vertex_07003700, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  5,  4, 0x0),\n    gsSP2Triangles( 7,  2,  5, 0x0,  6,  3,  0, 0x0),\n    gsSP2Triangles( 3,  1,  0, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 0,  2,  7, 0x0, 11, 12,  8, 0x0),\n    gsSP2Triangles(12, 11, 13, 0x0, 12, 13, 14, 0x0),\n    gsSP2Triangles(12, 15,  8, 0x0, 10, 14, 13, 0x0),\n    gsSP2Triangles(10,  9, 14, 0x0,  8, 15,  9, 0x0),\n    gsSPVertex(jrb_seg7_vertex_07003800, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  7,  6, 0x0,  8,  9,  7, 0x0),\n    gsSP2Triangles( 3,  5, 10, 0x0, 10,  5,  8, 0x0),\n    gsSP2Triangles( 5,  9,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(jrb_seg7_vertex_070038F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  8, 12, 0x0),\n    gsSP2Triangles(13,  4,  6, 0x0, 13,  6, 14, 0x0),\n    gsSPVertex(jrb_seg7_vertex_070039E0, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP1Triangle( 8,  9, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07004658 - 0x070046C0\nstatic const Gfx jrb_seg7_dl_07004658[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09002800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(jrb_seg7_vertex_07003A90, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  4,  5,  3, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  6,  0,  7, 0x0),\n    gsSP2Triangles( 6,  7,  5, 0x0,  0,  2,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070046C0 - 0x07004940\nstatic const Gfx jrb_seg7_dl_070046C0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&jrb_seg7_lights_070030C0.l, 1),\n    gsSPLight(&jrb_seg7_lights_070030C0.a, 2),\n    gsSPVertex(jrb_seg7_vertex_07003B10, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  0,  3, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles( 5,  6,  2, 0x0,  2,  7,  3, 0x0),\n    gsSP2Triangles( 2,  8,  9, 0x0,  2,  9,  7, 0x0),\n    gsSP2Triangles(10,  8,  2, 0x0, 10,  2, 11, 0x0),\n    gsSP2Triangles(11,  2,  6, 0x0, 12,  4,  3, 0x0),\n    gsSP2Triangles(12,  3, 13, 0x0,  3,  7, 14, 0x0),\n    gsSP1Triangle(15, 12, 13, 0x0),\n    gsSPVertex(jrb_seg7_vertex_07003C10, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  0,  2, 0x0,  5,  4,  2, 0x0),\n    gsSP2Triangles( 6,  2,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 9,  8, 11, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle( 9, 11, 15, 0x0),\n    gsSPVertex(jrb_seg7_vertex_07003D10, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 3,  4,  1, 0x0,  1,  4,  5, 0x0),\n    gsSP2Triangles( 1,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 10, 12, 0x0),\n    gsSP1Triangle(10, 14, 11, 0x0),\n    gsSPVertex(jrb_seg7_vertex_07003E00, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  3, 0x0,  4,  6,  5, 0x0),\n    gsSP2Triangles( 4,  7,  8, 0x0,  4,  8,  6, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(jrb_seg7_vertex_07003EF0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle( 6, 12, 13, 0x0),\n    gsSPVertex(jrb_seg7_vertex_07003FD0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 2,  4,  3, 0x0,  2,  5,  4, 0x0),\n    gsSP2Triangles( 6,  3,  4, 0x0,  6,  4,  7, 0x0),\n    gsSP2Triangles( 3,  8,  0, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(jrb_seg7_vertex_070040C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 3,  8,  4, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(jrb_seg7_vertex_070041C0, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07004940 - 0x07004A18\nconst Gfx jrb_seg7_dl_07004940[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(5, 80, 75, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(jrb_seg7_dl_070041F0),\n    gsSPDisplayList(jrb_seg7_dl_070044C8),\n    gsSPDisplayList(jrb_seg7_dl_07004658),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(jrb_seg7_dl_070046C0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/jrb/areas/1/3/model.inc.c",
    "content": "// 0x07004A18 - 0x07004A30\nstatic const Lights1 jrb_seg7_lights_07004A18 = gdSPDefLights1(\n    0x1e, 0x27, 0x3a,\n    0x79, 0x9f, 0xeb, 0x28, 0x28, 0x28\n);\n\n// 0x07004A30 - 0x07004A48\nstatic const Lights1 jrb_seg7_lights_07004A30 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07004A48 - 0x07004AC8\nstatic const Vtx jrb_seg7_vertex_07004A48[] = {\n    {{{ -1944,    512,   7211}, 0, { 19276,      0}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{ -1675,    512,   6547}, 0, { 15876,      0}, {0x7c, 0x00, 0xe6, 0xff}}},\n    {{{ -1675,   1024,   6547}, 0, { 15876,   2522}, {0x7c, 0x00, 0xe6, 0xff}}},\n    {{{ -1944,   1024,   7211}, 0, { 19276,   2522}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{ -2073,    512,   6165}, 0, { 12960,      0}, {0x2b, 0x00, 0x89, 0xff}}},\n    {{{ -2073,   1024,   6165}, 0, { 12960,   2522}, {0xec, 0x00, 0x83, 0xff}}},\n    {{{ -3017,    512,   6778}, 0, {  7700,      0}, {0xbb, 0x00, 0x96, 0xff}}},\n    {{{ -3017,   1024,   6778}, 0, {  7700,   2522}, {0xbb, 0x00, 0x96, 0xff}}},\n};\n\n// 0x07004AC8 - 0x07004B88\nstatic const Vtx jrb_seg7_vertex_07004AC8[] = {\n    {{{ -2771,      0,   1676}, 0, {  1672,    554}, {0xf3, 0x00, 0x7e, 0xff}}},\n    {{{  -705,      0,   2401}, 0, {  1672,   -520}, {0xd6, 0x00, 0x77, 0xff}}},\n    {{{  -705,    512,   2401}, 0, {  1840,   -520}, {0xd6, 0x00, 0x77, 0xff}}},\n    {{{ -4161,    512,   6315}, 0, {  1840,    886}, {0x68, 0x00, 0xb8, 0xff}}},\n    {{{ -5256,   1024,   4733}, 0, {  2012,   1544}, {0x75, 0x00, 0xd1, 0xff}}},\n    {{{ -4161,   1024,   6315}, 0, {  2012,    886}, {0x68, 0x00, 0xb8, 0xff}}},\n    {{{ -5256,    512,   4733}, 0, {  1840,   1544}, {0x7d, 0x00, 0xed, 0xff}}},\n    {{{ -5170,    614,   3362}, 0, {  1876,   1608}, {0x7a, 0x00, 0x22, 0xff}}},\n    {{{ -5170,      0,   3362}, 0, {  1672,   1608}, {0x6f, 0x00, 0x3d, 0xff}}},\n    {{{ -4133,    614,   2187}, 0, {  1876,   1186}, {0x50, 0x00, 0x62, 0xff}}},\n    {{{ -4133,      0,   2187}, 0, {  1672,   1186}, {0x3f, 0x00, 0x6e, 0xff}}},\n    {{{ -2771,    614,   1676}, 0, {  1876,    554}, {0x10, 0x00, 0x7d, 0xff}}},\n};\n\n// 0x07004B88 - 0x07004BF0\nstatic const Gfx jrb_seg7_dl_07004B88[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&jrb_seg7_lights_07004A18.l, 1),\n    gsSPLight(&jrb_seg7_lights_07004A18.a, 2),\n    gsSPVertex(jrb_seg7_vertex_07004A48, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  5,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07004BF0 - 0x07004C78\nstatic const Gfx jrb_seg7_dl_07004BF0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&jrb_seg7_lights_07004A30.l, 1),\n    gsSPLight(&jrb_seg7_lights_07004A30.a, 2),\n    gsSPVertex(jrb_seg7_vertex_07004AC8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  8,  9,  7, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 10, 11,  9, 0x0),\n    gsSP2Triangles(10,  0, 11, 0x0,  0,  2, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07004C78 - 0x07004D40\nconst Gfx jrb_seg7_dl_07004C78[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(5, 80, 75, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(jrb_seg7_dl_07004B88),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(jrb_seg7_dl_07004BF0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/jrb/areas/1/4/model.inc.c",
    "content": "// 0x07004D40 - 0x07004D58\nstatic const Lights1 jrb_seg7_lights_07004D40 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x07004D58 - 0x07004D70\nstatic const Lights1 jrb_seg7_lights_07004D58 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07004D70 - 0x07004DF0\nstatic const Vtx jrb_seg7_vertex_07004D70[] = {\n    {{{  8048,  -2866,   1727}, 0, {  2044,    150}, {0x8f, 0xde, 0x2d, 0xff}}},\n    {{{  8008,  -3020,   1579}, 0, {  2044,    426}, {0xfe, 0xd1, 0x75, 0xff}}},\n    {{{  8008,  -3327,   1579}, 0, {  2044,    790}, {0xd0, 0x34, 0x69, 0xff}}},\n    {{{  8048,  -3481,   1727}, 0, {  2044,    882}, {0xc0, 0x64, 0x2c, 0xff}}},\n    {{{  8127,  -3481,   2024}, 0, {  2044,    700}, {0x9e, 0x4f, 0xf8, 0xff}}},\n    {{{  8166,  -3327,   2173}, 0, {  2044,    426}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  8166,  -3020,   2173}, 0, {  2044,     60}, {0xa2, 0xcc, 0xbd, 0xff}}},\n    {{{  8127,  -2866,   2024}, 0, {  2044,      0}, {0xd0, 0x8d, 0xee, 0xff}}},\n};\n\n// 0x07004DF0 - 0x07004EF0\nstatic const Vtx jrb_seg7_vertex_07004DF0[] = {\n    {{{  7241,  -2871,   2259}, 0, {   172,      0}, {0xf1, 0x93, 0xc3, 0xff}}},\n    {{{  8166,  -3020,   2173}, 0, {  2044,     60}, {0xa2, 0xcc, 0xbd, 0xff}}},\n    {{{  7249,  -3022,   2416}, 0, {   128,     60}, {0xe1, 0xe0, 0x8a, 0xff}}},\n    {{{  8166,  -3327,   2173}, 0, {  2044,    426}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  7187,  -3325,   2432}, 0, {    44,    426}, {0xe3, 0x31, 0x8f, 0xff}}},\n    {{{  8127,  -2866,   2024}, 0, {  2044,      0}, {0xd0, 0x8d, 0xee, 0xff}}},\n    {{{  7117,  -3476,   2292}, 0, {     0,    700}, {0xf5, 0x75, 0xd2, 0xff}}},\n    {{{  8127,  -3481,   2024}, 0, {  2044,    700}, {0x9e, 0x4f, 0xf8, 0xff}}},\n    {{{  7162,  -2871,   1962}, 0, {   172,    150}, {0x0c, 0x8b, 0x2e, 0xff}}},\n    {{{  8048,  -2866,   1727}, 0, {  2044,    150}, {0x8f, 0xde, 0x2d, 0xff}}},\n    {{{  7092,  -3022,   1822}, 0, {   128,    426}, {0x1e, 0xcf, 0x71, 0xff}}},\n    {{{  8008,  -3020,   1579}, 0, {  2044,    426}, {0xfe, 0xd1, 0x75, 0xff}}},\n    {{{  7030,  -3325,   1838}, 0, {    44,    790}, {0x1f, 0x20, 0x76, 0xff}}},\n    {{{  8008,  -3327,   1579}, 0, {  2044,    790}, {0xd0, 0x34, 0x69, 0xff}}},\n    {{{  7038,  -3476,   1995}, 0, {     0,    882}, {0x10, 0x6d, 0x3d, 0xff}}},\n    {{{  8048,  -3481,   1727}, 0, {  2044,    882}, {0xc0, 0x64, 0x2c, 0xff}}},\n};\n\n// 0x07004EF0 - 0x07004FF0\nstatic const Vtx jrb_seg7_vertex_07004EF0[] = {\n    {{{  5662,  -4095,   -653}, 0, {  1436,  -2854}, {0x8b, 0xd5, 0xed, 0xff}}},\n    {{{  5662,  -2577,  -2771}, 0, {  1388,   2344}, {0x88, 0xdf, 0xee, 0xff}}},\n    {{{  5662,  -3104,  -3087}, 0, {   692,   2220}, {0x88, 0x21, 0x12, 0xff}}},\n    {{{  5457,  -3900,   -590}, 0, {  1652,   1218}, {0xcf, 0x8e, 0xe9, 0xff}}},\n    {{{  5457,  -3890,    366}, 0, {  1660,  -1168}, {0xcf, 0x8b, 0x01, 0xff}}},\n    {{{  5167,  -3890,    198}, 0, {  1992,   -748}, {0x00, 0x82, 0x01, 0xff}}},\n    {{{  5662,  -4095,   -653}, 0, {  1340,   1376}, {0x8b, 0xd5, 0xed, 0xff}}},\n    {{{  5662,  -4095,    533}, 0, {  1340,  -1582}, {0x8b, 0xcf, 0x00, 0xff}}},\n    {{{  5457,  -3900,   -590}, 0, {  1708,  -2720}, {0xcf, 0x8e, 0xe9, 0xff}}},\n    {{{  5457,  -2401,  -2665}, 0, {  1688,   2386}, {0xc9, 0x9d, 0xc7, 0xff}}},\n    {{{  4842,  -3900,   -590}, 0, {  2316,  -2720}, {0x2a, 0x8d, 0xe1, 0xff}}},\n    {{{  4842,  -2401,  -2665}, 0, {  2336,   2386}, {0x37, 0x9b, 0xcc, 0xff}}},\n    {{{  5662,  -4709,   -850}, 0, {   756,  -3274}, {0x8b, 0x2b, 0x13, 0xff}}},\n    {{{  5457,  -4904,   -913}, 0, {  4412,   2026}, {0xd6, 0x73, 0x20, 0xff}}},\n    {{{  4842,  -4904,   -913}, 0, {  3700,   2026}, {0x31, 0x72, 0x18, 0xff}}},\n    {{{  5152,  -4914,    427}, 0, {  4060,  -1318}, {0x00, 0x7e, 0x00, 0xff}}},\n};\n\n// 0x07004FF0 - 0x070050F0\nstatic const Vtx jrb_seg7_vertex_07004FF0[] = {\n    {{{  4842,  -3900,   -590}, 0, {  2372,   1218}, {0x2a, 0x8d, 0xe1, 0xff}}},\n    {{{  5457,  -3900,   -590}, 0, {  1652,   1218}, {0xcf, 0x8e, 0xe9, 0xff}}},\n    {{{  5167,  -3890,    198}, 0, {  1992,   -748}, {0x00, 0x82, 0x01, 0xff}}},\n    {{{  4842,  -3890,    284}, 0, {  2364,   -962}, {0x31, 0x8b, 0x01, 0xff}}},\n    {{{  4638,  -4095,    383}, 0, {  2684,  -1210}, {0x6d, 0xc0, 0x00, 0xff}}},\n    {{{  4638,  -4095,   -653}, 0, {  2684,   1376}, {0x75, 0xd5, 0xed, 0xff}}},\n    {{{  4638,  -4709,    518}, 0, {  3388,  -1546}, {0x75, 0x31, 0x00, 0xff}}},\n    {{{  4638,  -4709,   -850}, 0, {  3388,   1868}, {0x75, 0x2b, 0x13, 0xff}}},\n    {{{  4842,  -4904,   -913}, 0, {  3700,   2026}, {0x31, 0x72, 0x18, 0xff}}},\n    {{{  4842,  -4914,    509}, 0, {  3708,  -1524}, {0x30, 0x75, 0x00, 0xff}}},\n    {{{  5152,  -4914,    427}, 0, {  4060,  -1318}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  5457,  -4914,    603}, 0, {   316,  -1758}, {0xd0, 0x75, 0x00, 0xff}}},\n    {{{  5457,  -4904,   -913}, 0, {   324,   2026}, {0xd6, 0x73, 0x20, 0xff}}},\n    {{{  5152,  -4914,    427}, 0, {   -28,  -1318}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  5662,  -4709,    675}, 0, {   636,  -1938}, {0x93, 0x41, 0x00, 0xff}}},\n    {{{  5662,  -4709,   -850}, 0, {   636,   1868}, {0x8b, 0x2b, 0x13, 0xff}}},\n};\n\n// 0x070050F0 - 0x070051F0\nstatic const Vtx jrb_seg7_vertex_070050F0[] = {\n    {{{  5662,  -4095,    533}, 0, {  1340,  -1582}, {0x8b, 0xcf, 0x00, 0xff}}},\n    {{{  5662,  -4709,   -850}, 0, {   636,   1868}, {0x8b, 0x2b, 0x13, 0xff}}},\n    {{{  5662,  -4709,    675}, 0, {   636,  -1938}, {0x93, 0x41, 0x00, 0xff}}},\n    {{{  5662,  -4095,   -653}, 0, {  1340,   1376}, {0x8b, 0xd5, 0xed, 0xff}}},\n    {{{  5457,  -4904,   -913}, 0, {  4492,  -3406}, {0xd6, 0x73, 0x20, 0xff}}},\n    {{{  4842,  -3279,  -3193}, 0, {  3668,   2178}, {0x37, 0x63, 0x38, 0xff}}},\n    {{{  4842,  -4904,   -913}, 0, {  3620,  -3406}, {0x31, 0x72, 0x18, 0xff}}},\n    {{{  5457,  -3279,  -3193}, 0, {  4444,   2178}, {0xc9, 0x65, 0x34, 0xff}}},\n    {{{  5662,  -4709,   -850}, 0, {   756,  -3274}, {0x8b, 0x2b, 0x13, 0xff}}},\n    {{{  5457,  -3279,  -3193}, 0, {   356,   2178}, {0xc9, 0x65, 0x34, 0xff}}},\n    {{{  5457,  -4904,   -913}, 0, {   404,  -3406}, {0xd6, 0x73, 0x20, 0xff}}},\n    {{{  4638,  -4709,   -850}, 0, {  3268,  -3274}, {0x75, 0x2b, 0x13, 0xff}}},\n    {{{  4638,  -3104,  -3087}, 0, {  3332,   2220}, {0x78, 0x21, 0x12, 0xff}}},\n    {{{  4638,  -2577,  -2771}, 0, {  2636,   2344}, {0x79, 0xdf, 0xee, 0xff}}},\n    {{{  4638,  -4095,   -653}, 0, {  2588,  -2854}, {0x75, 0xd5, 0xed, 0xff}}},\n    {{{  4842,  -2401,  -2665}, 0, {  2336,   2386}, {0x37, 0x9b, 0xcc, 0xff}}},\n};\n\n// 0x070051F0 - 0x070052F0\nstatic const Vtx jrb_seg7_vertex_070051F0[] = {\n    {{{  4638,  -4095,   -653}, 0, {  2588,  -2854}, {0x75, 0xd5, 0xed, 0xff}}},\n    {{{  4842,  -2401,  -2665}, 0, {  2336,   2386}, {0x37, 0x9b, 0xcc, 0xff}}},\n    {{{  4842,  -3900,   -590}, 0, {  2316,  -2720}, {0x2a, 0x8d, 0xe1, 0xff}}},\n    {{{  5662,  -3104,  -3087}, 0, {   692,   2220}, {0x88, 0x21, 0x12, 0xff}}},\n    {{{  5662,  -2766,  -3933}, 0, {   496,   3974}, {0x8e, 0x36, 0x0a, 0xff}}},\n    {{{  5457,  -3279,  -3193}, 0, {   356,   2178}, {0xc9, 0x65, 0x34, 0xff}}},\n    {{{  5662,  -4709,   -850}, 0, {   756,  -3274}, {0x8b, 0x2b, 0x13, 0xff}}},\n    {{{  5662,  -2577,  -2771}, 0, {  1128,  -1330}, {0x88, 0xdf, 0xee, 0xff}}},\n    {{{  5662,  -2167,  -3795}, 0, {  1376,    438}, {0x8e, 0xca, 0xf6, 0xff}}},\n    {{{  5662,  -2766,  -3933}, 0, {   676,    500}, {0x8e, 0x36, 0x0a, 0xff}}},\n    {{{  4842,  -3279,  -3193}, 0, {  3768,   -836}, {0x37, 0x63, 0x38, 0xff}}},\n    {{{  4638,  -2766,  -3933}, 0, {  3348,    500}, {0x72, 0x35, 0x0a, 0xff}}},\n    {{{  4638,  -3104,  -3087}, 0, {  3512,   -960}, {0x78, 0x21, 0x12, 0xff}}},\n    {{{  4638,  -2167,  -3795}, 0, {  2648,    438}, {0x72, 0xcb, 0xf6, 0xff}}},\n    {{{  4638,  -2577,  -2771}, 0, {  2896,  -1330}, {0x79, 0xdf, 0xee, 0xff}}},\n    {{{  4842,  -2966,  -3979}, 0, {  3680,    520}, {0x27, 0x75, 0x1b, 0xff}}},\n};\n\n// 0x070052F0 - 0x070053F0\nstatic const Vtx jrb_seg7_vertex_070052F0[] = {\n    {{{  4638,  -2167,  -3795}, 0, {  2648,    438}, {0x72, 0xcb, 0xf6, 0xff}}},\n    {{{  4842,  -1968,  -3749}, 0, {  2344,    416}, {0x26, 0x89, 0xed, 0xff}}},\n    {{{  4842,  -2401,  -2665}, 0, {  2528,  -1454}, {0x37, 0x9b, 0xcc, 0xff}}},\n    {{{  4638,  -2577,  -2771}, 0, {  2896,  -1330}, {0x79, 0xdf, 0xee, 0xff}}},\n    {{{  5457,  -1968,  -3749}, 0, {  1680,    416}, {0xda, 0x8b, 0xe4, 0xff}}},\n    {{{  5457,  -2401,  -2665}, 0, {  1496,  -1454}, {0xc9, 0x9d, 0xc7, 0xff}}},\n    {{{  5662,  -2167,  -3795}, 0, {  1376,    438}, {0x8e, 0xca, 0xf6, 0xff}}},\n    {{{  5662,  -2577,  -2771}, 0, {  1128,  -1330}, {0x88, 0xdf, 0xee, 0xff}}},\n    {{{  5662,  -2766,  -3933}, 0, {   676,    500}, {0x8e, 0x36, 0x0a, 0xff}}},\n    {{{  5662,  -3104,  -3087}, 0, {   512,   -960}, {0x88, 0x21, 0x12, 0xff}}},\n    {{{  5457,  -2966,  -3979}, 0, {   344,    520}, {0xda, 0x77, 0x11, 0xff}}},\n    {{{  5457,  -3279,  -3193}, 0, {   256,   -836}, {0xc9, 0x65, 0x34, 0xff}}},\n    {{{  5457,  -3279,  -3193}, 0, {  4344,   -836}, {0xc9, 0x65, 0x34, 0xff}}},\n    {{{  5457,  -2966,  -3979}, 0, {  4432,    520}, {0xda, 0x77, 0x11, 0xff}}},\n    {{{  4842,  -2966,  -3979}, 0, {  3680,    520}, {0x27, 0x75, 0x1b, 0xff}}},\n    {{{  4842,  -3279,  -3193}, 0, {  3768,   -836}, {0x37, 0x63, 0x38, 0xff}}},\n};\n\n// 0x070053F0 - 0x070054E0\nstatic const Vtx jrb_seg7_vertex_070053F0[] = {\n    {{{  4842,  -2966,  -5003}, 0, {  3764,   2176}, {0x30, 0x75, 0x00, 0xff}}},\n    {{{  4842,  -2966,  -3979}, 0, {  3680,    520}, {0x27, 0x75, 0x1b, 0xff}}},\n    {{{  5457,  -2966,  -3979}, 0, {  4432,    520}, {0xda, 0x77, 0x11, 0xff}}},\n    {{{  5457,  -2966,  -5003}, 0, {  4348,   2176}, {0xc1, 0x6d, 0x00, 0xff}}},\n    {{{  4638,  -2761,  -5003}, 0, {  3496,   2230}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{  4638,  -2766,  -3933}, 0, {  3348,    500}, {0x72, 0x35, 0x0a, 0xff}}},\n    {{{  5457,  -2966,  -5003}, 0, {   260,   2176}, {0xc1, 0x6d, 0x00, 0xff}}},\n    {{{  5662,  -2766,  -3933}, 0, {   676,    500}, {0x8e, 0x36, 0x0a, 0xff}}},\n    {{{  5662,  -2761,  -5003}, 0, {   528,   2230}, {0x86, 0x20, 0x00, 0xff}}},\n    {{{  4638,  -2146,  -5003}, 0, {  2828,   2396}, {0x7a, 0xe0, 0x00, 0xff}}},\n    {{{  4638,  -2167,  -3795}, 0, {  2648,    438}, {0x72, 0xcb, 0xf6, 0xff}}},\n    {{{  4842,  -1942,  -5003}, 0, {  2464,   2452}, {0x3f, 0x93, 0xfe, 0xff}}},\n    {{{  4842,  -1968,  -3749}, 0, {  2344,    416}, {0x26, 0x89, 0xed, 0xff}}},\n    {{{  5457,  -1942,  -5003}, 0, {  1560,   2452}, {0xd0, 0x8b, 0xfe, 0xff}}},\n    {{{  5457,  -1968,  -3749}, 0, {  1680,    416}, {0xda, 0x8b, 0xe4, 0xff}}},\n};\n\n// 0x070054E0 - 0x07005560\nstatic const Vtx jrb_seg7_vertex_070054E0[] = {\n    {{{  5662,  -2146,  -5003}, 0, {  1196,   2396}, {0x8b, 0xd0, 0x00, 0xff}}},\n    {{{  5662,  -2167,  -3795}, 0, {  1376,    438}, {0x8e, 0xca, 0xf6, 0xff}}},\n    {{{  5457,  -1942,  -5003}, 0, {  1560,   2452}, {0xd0, 0x8b, 0xfe, 0xff}}},\n    {{{  5457,  -1968,  -3749}, 0, {  1680,    416}, {0xda, 0x8b, 0xe4, 0xff}}},\n    {{{  5662,  -2761,  -5003}, 0, {   528,   2230}, {0x86, 0x20, 0x00, 0xff}}},\n    {{{  5662,  -2766,  -3933}, 0, {   676,    500}, {0x8e, 0x36, 0x0a, 0xff}}},\n    {{{  5457,  -2966,  -5003}, 0, {   260,   2176}, {0xc1, 0x6d, 0x00, 0xff}}},\n    {{{  5457,  -2966,  -3979}, 0, {   344,    520}, {0xda, 0x77, 0x11, 0xff}}},\n};\n\n// 0x07005560 - 0x07005660\nstatic const Gfx jrb_seg7_dl_07005560[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&jrb_seg7_lights_07004D40.l, 1),\n    gsSPLight(&jrb_seg7_lights_07004D40.a, 2),\n    gsSPVertex(jrb_seg7_vertex_07004D70, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  2,  3, 0x0,  0,  5,  6, 0x0),\n    gsSP2Triangles( 0,  6,  7, 0x0,  0,  4,  5, 0x0),\n    gsSPLight(&jrb_seg7_lights_07004D58.l, 1),\n    gsSPLight(&jrb_seg7_lights_07004D58.a, 2),\n    gsSPVertex(jrb_seg7_vertex_07004DF0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 2,  1,  3, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0,  3,  7,  6, 0x0),\n    gsSP2Triangles( 8,  5,  0, 0x0,  8,  9,  5, 0x0),\n    gsSP2Triangles(10, 11,  8, 0x0, 11,  9,  8, 0x0),\n    gsSP2Triangles(12, 11, 10, 0x0, 12, 13, 11, 0x0),\n    gsSP2Triangles(14, 13, 12, 0x0, 14, 15, 13, 0x0),\n    gsSP2Triangles( 6, 15, 14, 0x0,  6,  7, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07005660 - 0x070058C8\nstatic const Gfx jrb_seg7_dl_07005660[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(jrb_seg7_vertex_07004EF0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  4,  3,  7, 0x0),\n    gsSP2Triangles( 8,  9,  0, 0x0, 10,  9,  8, 0x0),\n    gsSP2Triangles( 9,  1,  0, 0x0, 10, 11,  9, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(jrb_seg7_vertex_07004FF0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  0,  3, 0x0,  4,  5,  0, 0x0),\n    gsSP2Triangles( 6,  5,  4, 0x0,  6,  7,  5, 0x0),\n    gsSP2Triangles( 8,  7,  6, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 9,  8,  6, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(14, 15, 12, 0x0, 14, 12, 11, 0x0),\n    gsSPVertex(jrb_seg7_vertex_070050F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles( 5, 12, 11, 0x0,  6,  5, 11, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(jrb_seg7_vertex_070051F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 13, 14, 0x0),\n    gsSP2Triangles(12, 11, 13, 0x0, 10, 15, 11, 0x0),\n    gsSPVertex(jrb_seg7_vertex_070052F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(jrb_seg7_vertex_070053F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  0, 0x0,  5,  1,  0, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  5,  4, 0x0),\n    gsSP2Triangles( 9, 10,  5, 0x0, 11, 10,  9, 0x0),\n    gsSP2Triangles(11, 12, 10, 0x0, 13, 12, 11, 0x0),\n    gsSP1Triangle(13, 14, 12, 0x0),\n    gsSPVertex(jrb_seg7_vertex_070054E0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  1,  0, 0x0,  4,  5,  1, 0x0),\n    gsSP1Triangle( 6,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070058C8 - 0x07005990\nconst Gfx jrb_seg7_dl_070058C8[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(5, 80, 75, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(jrb_seg7_dl_07005560),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(jrb_seg7_dl_07005660),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/jrb/areas/1/5/model.inc.c",
    "content": "// 0x07005990 - 0x070059A8\nstatic const Lights1 jrb_seg7_lights_07005990 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x070059A8 - 0x070059C0\nstatic const Lights1 jrb_seg7_lights_070059A8 = gdSPDefLights1(\n    0x26, 0x26, 0x26,\n    0x99, 0x99, 0x99, 0x28, 0x28, 0x28\n);\n\n// 0x070059C0 - 0x070059D8\nstatic const Lights1 jrb_seg7_lights_070059C0 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x070059D8 - 0x07005AC8\nstatic const Vtx jrb_seg7_vertex_070059D8[] = {\n    {{{  4284,   1485,   7069}, 0, { 10352,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2813,   1485,   5598}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2980,   1485,   5431}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  5084,   1536,   6377}, 0, { 10734,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3392,   1536,   5018}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4909,   1536,   6535}, 0, { 10670,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3559,   1536,   4852}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4909,   1485,   6535}, 0, { 10670,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3392,   1485,   5018}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3559,   1485,   4852}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  5084,   1485,   6377}, 0, { 10734,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4460,   1536,   6912}, 0, { 10416,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2813,   1536,   5598}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4284,   1536,   7069}, 0, { 10352,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2980,   1536,   5431}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07005AC8 - 0x07005B78\nstatic const Vtx jrb_seg7_vertex_07005AC8[] = {\n    {{{  3611,   1485,   7264}, 0, {  8664,  -3098}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2835,   1485,   6155}, 0, {  2012,  -2076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3861,   1485,   7182}, 0, {  9258,  -2076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4284,   1485,   7069}, 0, { 10352,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2980,   1485,   5431}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4460,   1485,   6912}, 0, { 10416,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3861,   1536,   7182}, 0, {  9258,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2668,   1536,   6322}, 0, {  2012,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3611,   1536,   7264}, 0, {  8664,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2835,   1536,   6155}, 0, {  2012,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2668,   1485,   6322}, 0, {  2012,  -3098}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07005B78 - 0x07005BF8\nstatic const Vtx jrb_seg7_vertex_07005B78[] = {\n    {{{ -4338,   1249,   2034}, 0, {  3032,      0}, {0x21, 0x65, 0x43, 0xff}}},\n    {{{ -4133,    737,   2034}, 0, {  1588,   2520}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{ -4133,   1249,   2034}, 0, {  1588,      0}, {0xbd, 0x65, 0x21, 0xff}}},\n    {{{ -4133,    737,   2239}, 0, {   144,   2520}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{ -4133,   1249,   2239}, 0, {   144,      0}, {0xdf, 0x65, 0xbd, 0xff}}},\n    {{{ -4338,    737,   2034}, 0, {  3032,   2520}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{ -4338,    737,   2239}, 0, {  1588,   2520}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{ -4338,   1249,   2239}, 0, {  1588,      0}, {0x43, 0x65, 0xdf, 0xff}}},\n};\n\n// 0x07005BF8 - 0x07005CE8\nstatic const Vtx jrb_seg7_vertex_07005BF8[] = {\n    {{{ -4082,   1249,   1983}, 0, {  1244,  -5244}, {0x18, 0x72, 0xd0, 0xff}}},\n    {{{ -4495,   1024,   1877}, 0, {  -812,  -4120}, {0xb6, 0x46, 0xb6, 0xff}}},\n    {{{ -4389,   1249,   1983}, 0, {  -284,  -5244}, {0xe4, 0x78, 0xe4, 0xff}}},\n    {{{ -3976,   1024,   1877}, 0, {   128,  -4120}, {0x60, 0x43, 0xd0, 0xff}}},\n    {{{ -4082,   1249,   1983}, 0, {   480,  -5244}, {0x18, 0x72, 0xd0, 0xff}}},\n    {{{ -4082,   1249,   2290}, 0, {  1500,  -5244}, {0x2a, 0x6f, 0x2b, 0xff}}},\n    {{{ -3976,   1024,   2395}, 0, {  1852,  -4120}, {0x4a, 0x46, 0x4a, 0xff}}},\n    {{{ -4082,   1249,   2290}, 0, {  1244,  -5244}, {0x2a, 0x6f, 0x2b, 0xff}}},\n    {{{ -4495,   1024,   2395}, 0, {  -812,  -4120}, {0xd0, 0x43, 0x60, 0xff}}},\n    {{{ -3976,   1024,   2395}, 0, {  1772,  -4120}, {0x4a, 0x46, 0x4a, 0xff}}},\n    {{{ -4389,   1249,   2290}, 0, {  -284,  -5244}, {0xd0, 0x72, 0x18, 0xff}}},\n    {{{ -4389,   1249,   2290}, 0, {  1500,  -5244}, {0xd0, 0x72, 0x18, 0xff}}},\n    {{{ -4495,   1024,   1877}, 0, {   128,  -4120}, {0xb6, 0x46, 0xb6, 0xff}}},\n    {{{ -4495,   1024,   2395}, 0, {  1852,  -4120}, {0xd0, 0x43, 0x60, 0xff}}},\n    {{{ -4389,   1249,   1983}, 0, {   480,  -5244}, {0xe4, 0x78, 0xe4, 0xff}}},\n};\n\n// 0x07005CE8 - 0x07005DD8\nstatic const Vtx jrb_seg7_vertex_07005CE8[] = {\n    {{{  1762,   1843,   1734}, 0, {  2580,  -3810}, {0x58, 0xa7, 0xef, 0xff}}},\n    {{{  1853,   1843,   2191}, 0, {  3036,  -1534}, {0x72, 0xd6, 0x23, 0xff}}},\n    {{{  1546,   1843,   2703}, 0, {  1500,   1020}, {0x04, 0xaf, 0x60, 0xff}}},\n    {{{ -4082,   1249,   1983}, 0, {  1244,  -5244}, {0x18, 0x72, 0xd0, 0xff}}},\n    {{{ -3976,   1024,   1877}, 0, {  1772,  -4120}, {0x60, 0x43, 0xd0, 0xff}}},\n    {{{ -4495,   1024,   1877}, 0, {  -812,  -4120}, {0xb6, 0x46, 0xb6, 0xff}}},\n    {{{ -4082,   1249,   1983}, 0, {  2012,    990}, {0x18, 0x72, 0xd0, 0xff}}},\n    {{{ -4133,   1249,   2034}, 0, {  1672,    820}, {0xbd, 0x65, 0x21, 0xff}}},\n    {{{ -4133,   1249,   2239}, 0, {   308,    820}, {0xdf, 0x65, 0xbd, 0xff}}},\n    {{{ -4082,   1249,   2290}, 0, {     0,    990}, {0x2a, 0x6f, 0x2b, 0xff}}},\n    {{{ -4389,   1249,   1983}, 0, {  2012,      0}, {0xe4, 0x78, 0xe4, 0xff}}},\n    {{{ -4338,   1249,   2034}, 0, {  1672,    138}, {0x21, 0x65, 0x43, 0xff}}},\n    {{{ -4338,   1249,   2239}, 0, {   308,    138}, {0x43, 0x65, 0xdf, 0xff}}},\n    {{{ -4389,   1249,   2290}, 0, {     0,      0}, {0xd0, 0x72, 0x18, 0xff}}},\n    {{{   522,   1843,   2287}, 0, { -3604,  -1054}, {0xdf, 0xa7, 0x53, 0xff}}},\n};\n\n// 0x07005DD8 - 0x07005EC8\nstatic const Vtx jrb_seg7_vertex_07005DD8[] = {\n    {{{  1480,   1536,   7814}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1098,   1536,   6104}, 0, {  -980,  -3276}, {0xf8, 0x46, 0x97, 0xff}}},\n    {{{   532,   1536,   6198}, 0, { -2392,  -3042}, {0xab, 0x4f, 0xcf, 0xff}}},\n    {{{   522,   1946,   2287}, 0, { -3604,  -1054}, {0xdf, 0x59, 0x53, 0xff}}},\n    {{{  1546,   1946,   2703}, 0, {  1500,   1020}, {0x42, 0x31, 0x60, 0xff}}},\n    {{{  1853,   1946,   2191}, 0, {  3036,  -1534}, {0x67, 0x49, 0x04, 0xff}}},\n    {{{  1762,   1946,   1734}, 0, {  2580,  -3810}, {0x58, 0x59, 0xef, 0xff}}},\n    {{{   532,   1536,   6198}, 0, {     0,    990}, {0xab, 0x4f, 0xcf, 0xff}}},\n    {{{   532,   1024,   6198}, 0, {     0,   3542}, {0xc2, 0x2e, 0x9c, 0xff}}},\n    {{{   386,   1075,   7315}, 0, {  5540,   3288}, {0xae, 0x5f, 0xf0, 0xff}}},\n    {{{   330,   1536,   7742}, 0, {  7672,    990}, {0x90, 0x38, 0xf2, 0xff}}},\n    {{{   330,   1124,   7742}, 0, {  7672,   3046}, {0xa1, 0x50, 0xeb, 0xff}}},\n    {{{  1888,   1536,   6165}, 0, {   984,  -3126}, {0x1d, 0x48, 0x9d, 0xff}}},\n    {{{  2863,   1536,   7010}, 0, {  3420,  -1016}, {0x47, 0x46, 0xb3, 0xff}}},\n    {{{   330,   1536,   7742}, 0, { -2896,    812}, {0x90, 0x38, 0xf2, 0xff}}},\n};\n\n// 0x07005EC8 - 0x07005FB8\nstatic const Vtx jrb_seg7_vertex_07005EC8[] = {\n    {{{   532,   1024,   6198}, 0, {  7748,   3542}, {0xc2, 0x2e, 0x9c, 0xff}}},\n    {{{   532,   1536,   6198}, 0, {  7748,    990}, {0xab, 0x4f, 0xcf, 0xff}}},\n    {{{  1098,   1536,   6104}, 0, {  3892,    990}, {0xf8, 0x46, 0x97, 0xff}}},\n    {{{  1480,   1536,   7814}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3190,   1536,   7360}, 0, {  4236,   -142}, {0x53, 0x38, 0xb3, 0xff}}},\n    {{{  2863,   1536,   7010}, 0, {  3420,  -1016}, {0x47, 0x46, 0xb3, 0xff}}},\n    {{{  1888,   1024,   6165}, 0, {  6236,   3542}, {0x3d, 0x00, 0x91, 0xff}}},\n    {{{  2863,   1536,   7010}, 0, {  -200,    990}, {0x47, 0x46, 0xb3, 0xff}}},\n    {{{  2863,   1024,   7010}, 0, {  -200,   3542}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1888,   1536,   6165}, 0, {  6236,    990}, {0x1d, 0x48, 0x9d, 0xff}}},\n    {{{  3190,   1536,   7360}, 0, { -2584,    990}, {0x53, 0x38, 0xb3, 0xff}}},\n    {{{  3190,   1024,   7360}, 0, { -2584,   3542}, {0x5c, 0x00, 0xaa, 0xff}}},\n    {{{  1098,   1024,   6104}, 0, {  3892,   3542}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{  1888,   1536,   6165}, 0, {     0,    990}, {0x1d, 0x48, 0x9d, 0xff}}},\n    {{{  1888,   1024,   6165}, 0, {     0,   3544}, {0x3d, 0x00, 0x91, 0xff}}},\n};\n\n// 0x07005FB8 - 0x070060B8\nstatic const Vtx jrb_seg7_vertex_07005FB8[] = {\n    {{{  1546,   1946,   2703}, 0, {     0,      0}, {0x42, 0x31, 0x60, 0xff}}},\n    {{{  1853,   1843,   2191}, 0, {  2796,    480}, {0x72, 0xd6, 0x23, 0xff}}},\n    {{{  1853,   1946,   2191}, 0, {  2796,      0}, {0x67, 0x49, 0x04, 0xff}}},\n    {{{  1762,   1843,   1734}, 0, {  4920,    480}, {0x58, 0xa7, 0xef, 0xff}}},\n    {{{  1762,   1946,   1734}, 0, {  4920,      0}, {0x58, 0x59, 0xef, 0xff}}},\n    {{{  1546,   1843,   2703}, 0, {     0,    478}, {0x04, 0xaf, 0x60, 0xff}}},\n    {{{   522,   1946,   2287}, 0, { -3604,      0}, {0xdf, 0x59, 0x53, 0xff}}},\n    {{{  1546,   1843,   2703}, 0, {  1908,    478}, {0x04, 0xaf, 0x60, 0xff}}},\n    {{{  1546,   1946,   2703}, 0, {  1908,      0}, {0x42, 0x31, 0x60, 0xff}}},\n    {{{   522,   1843,   2287}, 0, { -3604,    480}, {0xdf, 0xa7, 0x53, 0xff}}},\n    {{{ -1675,   1331,   6547}, 0, { 15876,   4054}, {0x6b, 0x2e, 0xcf, 0xff}}},\n    {{{ -2073,   1024,   6165}, 0, { 12960,   2522}, {0x2b, 0x00, 0x89, 0xff}}},\n    {{{ -2073,   1331,   6165}, 0, { 12960,   4054}, {0xf0, 0x50, 0xa0, 0xff}}},\n    {{{ -1675,   1024,   6547}, 0, { 15876,   2522}, {0x7e, 0x00, 0x01, 0xff}}},\n    {{{ -1944,   1331,   7211}, 0, { 19276,   4054}, {0x53, 0x59, 0x21, 0xff}}},\n    {{{ -1944,   1024,   7211}, 0, { 19276,   2522}, {0x75, 0x00, 0x2f, 0xff}}},\n};\n\n// 0x070060B8 - 0x07006138\nstatic const Vtx jrb_seg7_vertex_070060B8[] = {\n    {{{ -2073,   1331,   6165}, 0, { 12960,   4054}, {0xf0, 0x50, 0xa0, 0xff}}},\n    {{{ -2073,   1024,   6165}, 0, { 12960,   2522}, {0x2b, 0x00, 0x89, 0xff}}},\n    {{{ -3017,   1024,   6778}, 0, {  7700,   2522}, {0xbb, 0x00, 0x96, 0xff}}},\n    {{{ -3017,   1331,   6778}, 0, {  7700,   4054}, {0xd0, 0x59, 0xb5, 0xff}}},\n    {{{ -1944,   1331,   7211}, 0, {  -420,    820}, {0x53, 0x59, 0x21, 0xff}}},\n    {{{ -1675,   1331,   6547}, 0, {  1544,   1550}, {0x6b, 0x2e, 0xcf, 0xff}}},\n    {{{ -2073,   1331,   6165}, 0, {  3028,    906}, {0xf0, 0x50, 0xa0, 0xff}}},\n    {{{ -3017,   1331,   6778}, 0, {  1664,  -1114}, {0xd0, 0x59, 0xb5, 0xff}}},\n};\n\n// 0x07006138 - 0x07006238\nstatic const Vtx jrb_seg7_vertex_07006138[] = {\n    {{{ -2568,   1024,   6148}, 0, {  1120,    582}, {0xa7, 0x05, 0x59, 0xff}}},\n    {{{ -2534,   2048,   6114}, 0, {  1804,   -440}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2568,   1024,   6080}, 0, {   800,    582}, {0xa7, 0x05, 0xa7, 0xff}}},\n    {{{ -2500,   1024,   6080}, 0, {  1120,    582}, {0x59, 0x05, 0xa7, 0xff}}},\n    {{{ -2500,   1024,   6148}, 0, {  1444,    582}, {0x59, 0x05, 0x59, 0xff}}},\n    {{{   532,   1024,   6198}, 0, {  5488,   2892}, {0xc2, 0x2e, 0x9c, 0xff}}},\n    {{{   330,   1024,   6232}, 0, {  3768,   2592}, {0xf7, 0x7e, 0xfb, 0xff}}},\n    {{{   386,   1075,   7315}, 0, {  6668,    256}, {0xae, 0x5f, 0xf0, 0xff}}},\n    {{{   111,   1024,   6993}, 0, {  3508,    664}, {0xf0, 0x7d, 0xfb, 0xff}}},\n    {{{  -210,   1024,   7709}, 0, {  2240,  -1282}, {0xee, 0x7d, 0xf5, 0xff}}},\n    {{{   330,   1124,   7742}, 0, {  7120,   -756}, {0xa1, 0x50, 0xeb, 0xff}}},\n    {{{   519,   1024,   3349}, 0, {  2184,   8056}, {0x86, 0x09, 0x20, 0xff}}},\n    {{{   659,   2970,   3312}, 0, {  1904,   8130}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   622,   1024,   3172}, 0, {  1980,   8410}, {0xe0, 0x09, 0x86, 0xff}}},\n    {{{   799,   1024,   3275}, 0, {  1628,   8204}, {0x7a, 0x09, 0xe0, 0xff}}},\n    {{{   696,   1024,   3452}, 0, {  1832,   7850}, {0x20, 0x09, 0x7a, 0xff}}},\n};\n\n// 0x07006238 - 0x07006318\nstatic const Vtx jrb_seg7_vertex_07006238[] = {\n    {{{    54,   2765,   2724}, 0, {  3116,   9304}, {0xfe, 0x7e, 0xfc, 0xff}}},\n    {{{   105,   1024,   2635}, 0, {  3012,   9480}, {0x3f, 0x07, 0x93, 0xff}}},\n    {{{   -34,   1024,   2672}, 0, {  3292,   9406}, {0x93, 0x07, 0xc0, 0xff}}},\n    {{{   142,   1024,   2775}, 0, {  2936,   9202}, {0x6d, 0x07, 0x3f, 0xff}}},\n    {{{     2,   1024,   2812}, 0, {  3216,   9128}, {0xc0, 0x07, 0x6d, 0xff}}},\n    {{{  1166,   1024,   3843}, 0, {   896,   7070}, {0x6d, 0x07, 0x3f, 0xff}}},\n    {{{  1088,   2560,   3798}, 0, {  1052,   7160}, {0x05, 0x7e, 0xfe, 0xff}}},\n    {{{  1043,   1024,   3876}, 0, {  1140,   7004}, {0xc1, 0x07, 0x6d, 0xff}}},\n    {{{  1010,   1024,   3752}, 0, {  1208,   7252}, {0x93, 0x07, 0xc1, 0xff}}},\n    {{{  1133,   1024,   3720}, 0, {   960,   7316}, {0x3f, 0x07, 0x93, 0xff}}},\n    {{{ -5256,   1024,   4733}, 0, {  7296,   -648}, {0x13, 0x7c, 0xf4, 0xff}}},\n    {{{ -6304,   1126,   3887}, 0, {  2572,   -394}, {0x10, 0x7d, 0xfc, 0xff}}},\n    {{{ -6561,   1126,   4330}, 0, {  3036,    478}, {0x06, 0x7e, 0xff, 0xff}}},\n    {{{ -4161,   1024,   6315}, 0, { 13976,    -38}, {0x0c, 0x7e, 0xf8, 0xff}}},\n};\n\n// 0x07006318 - 0x07006418\nstatic const Vtx jrb_seg7_vertex_07006318[] = {\n    {{{ -6077,   1024,   3782}, 0, {  2876,   -808}, {0x30, 0x75, 0xf8, 0xff}}},\n    {{{ -5963,   1024,   1954}, 0, { -1400,  -3232}, {0x27, 0x78, 0x0c, 0xff}}},\n    {{{ -6161,   1126,   1602}, 0, { -2772,  -3422}, {0x16, 0x7c, 0x06, 0xff}}},\n    {{{ -6304,   1126,   3887}, 0, {  2572,   -394}, {0x10, 0x7d, 0xfc, 0xff}}},\n    {{{ -5256,   1024,   4733}, 0, {  7296,   -648}, {0x13, 0x7c, 0xf4, 0xff}}},\n    {{{ -5345,   1024,   1011}, 0, { -2208,  -5180}, {0x15, 0x7b, 0x14, 0xff}}},\n    {{{ -5647,   1126,    716}, 0, { -3700,  -5170}, {0x0e, 0x7d, 0x0d, 0xff}}},\n    {{{ -5756,   1024,   1719}, 0, { -1468,  -3782}, {0x19, 0x7b, 0x11, 0xff}}},\n    {{{ -7494,   1126,    173}, 0, { -9664,  -3544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5762,   1126,  -1125}, 0, { -8580,  -7324}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -7818,   1126,   2416}, 0, { -4872,   -340}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6561,   1126,   4330}, 0, {  3032,    478}, {0x06, 0x7e, 0xff, 0xff}}},\n    {{{ -4579,   1024,    508}, 0, { -1552,  -6762}, {0x0e, 0x7b, 0x1a, 0xff}}},\n    {{{ -4690,   1126,     88}, 0, { -2880,  -7148}, {0x07, 0x7d, 0x12, 0xff}}},\n    {{{ -4307,   1024,    405}, 0, { -1128,  -7230}, {0x09, 0x7b, 0x1c, 0xff}}},\n    {{{ -3747,   1024,    257}, 0, {  -104,  -8114}, {0x02, 0x7a, 0x21, 0xff}}},\n};\n\n// 0x07006418 - 0x070064C8\nstatic const Vtx jrb_seg7_vertex_07006418[] = {\n    {{{ -3747,   1024,    257}, 0, {  -104,  -8114}, {0x02, 0x7a, 0x21, 0xff}}},\n    {{{ -3991,   1126,    -97}, 0, { -1596,  -8252}, {0x00, 0x7c, 0x17, 0xff}}},\n    {{{ -4690,   1126,     88}, 0, { -2880,  -7148}, {0x07, 0x7d, 0x12, 0xff}}},\n    {{{ -3443,   1024,    319}, 0, {   804,  -8416}, {0xf8, 0x78, 0x28, 0xff}}},\n    {{{ -5762,   1126,  -1125}, 0, { -8580,  -7324}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6980,   1126,   -712}, 0, {-10588,  -5290}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -7494,   1126,    173}, 0, { -9664,  -3544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6304,   1126,   3887}, 0, {  2572,   -394}, {0x10, 0x7d, 0xfc, 0xff}}},\n    {{{ -7818,   1126,   2416}, 0, { -4872,   -340}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6161,   1126,   1602}, 0, { -2772,  -3422}, {0x16, 0x7c, 0x06, 0xff}}},\n    {{{ -5647,   1126,    716}, 0, { -3700,  -5170}, {0x0e, 0x7d, 0x0d, 0xff}}},\n};\n\n// 0x070064C8 - 0x07006508\nstatic const Vtx jrb_seg7_vertex_070064C8[] = {\n    {{{ -4133,    737,   2034}, 0, {     0,      0}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{ -4338,    737,   2239}, 0, {     0,      0}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{ -4133,    737,   2239}, 0, {     0,      0}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{ -4338,    737,   2034}, 0, {     0,      0}, {0x67, 0x33, 0x33, 0xff}}},\n};\n\n// 0x07006508 - 0x070065A8\nstatic const Gfx jrb_seg7_dl_07006508[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_0900A000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&jrb_seg7_lights_07005990.l, 1),\n    gsSPLight(&jrb_seg7_lights_07005990.a, 2),\n    gsSPVertex(jrb_seg7_vertex_070059D8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(jrb_seg7_vertex_07005AC8, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP1Triangle( 0, 10,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070065A8 - 0x070067F0\nstatic const Gfx jrb_seg7_dl_070065A8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&jrb_seg7_lights_070059A8.l, 1),\n    gsSPLight(&jrb_seg7_lights_070059A8.a, 2),\n    gsSPVertex(jrb_seg7_vertex_07005B78, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 7,  6,  5, 0x0,  7,  5,  0, 0x0),\n    gsSPLight(&jrb_seg7_lights_07005990.l, 1),\n    gsSPLight(&jrb_seg7_lights_07005990.a, 2),\n    gsSPVertex(jrb_seg7_vertex_07005BF8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(jrb_seg7_vertex_07005CE8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  6, 0x0, 10, 11,  7, 0x0),\n    gsSP2Triangles( 9,  8, 12, 0x0,  9, 12, 13, 0x0),\n    gsSP2Triangles(13, 11, 10, 0x0, 13, 12, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(jrb_seg7_vertex_07005DD8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0,  0, 13, 12, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(jrb_seg7_vertex_07005EC8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 8,  7, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 12,  2, 13, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(jrb_seg7_vertex_07005FB8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 2,  1,  3, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP2Triangles(13, 10, 14, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(jrb_seg7_vertex_070060B8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070067F0 - 0x07006980\nstatic const Gfx jrb_seg7_dl_070067F0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09002800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(jrb_seg7_vertex_07006138, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 3,  1,  4, 0x0,  4,  1,  0, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  7,  6, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0,  9,  7,  8, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 14, 12, 15, 0x0),\n    gsSP2Triangles(15, 12, 11, 0x0, 12, 14, 13, 0x0),\n    gsSPVertex(jrb_seg7_vertex_07006238, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 4,  0,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  6,  9, 0x0),\n    gsSP2Triangles( 6,  5,  9, 0x0,  7,  6,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(jrb_seg7_vertex_07006318, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 6,  2,  7, 0x0,  7,  2,  1, 0x0),\n    gsSP2Triangles( 3,  2,  8, 0x0,  2,  9,  8, 0x0),\n    gsSP2Triangles( 3, 10, 11, 0x0, 12,  6,  5, 0x0),\n    gsSP2Triangles(12, 13,  6, 0x0, 14, 13, 12, 0x0),\n    gsSP1Triangle(15, 13, 14, 0x0),\n    gsSPVertex(jrb_seg7_vertex_07006418, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  6,  8, 0x0),\n    gsSP2Triangles( 9, 10,  4, 0x0, 10,  2,  4, 0x0),\n    gsSP1Triangle( 2,  1,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07006980 - 0x070069B0\nstatic const Gfx jrb_seg7_dl_07006980[] = {\n    gsSPLight(&jrb_seg7_lights_070059C0.l, 1),\n    gsSPLight(&jrb_seg7_lights_070059C0.a, 2),\n    gsSPVertex(jrb_seg7_vertex_070064C8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070069B0 - 0x07006A98\nconst Gfx jrb_seg7_dl_070069B0[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(15, 65, 100, 255),\n    gsSPFogFactor(0x0724, 0xF9DC), // This isn't gsSPFogPosition since there is no valid min/max pair that corresponds to 0x0724F9DC\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(jrb_seg7_dl_07006508),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(jrb_seg7_dl_070065A8),\n    gsSPDisplayList(jrb_seg7_dl_070067F0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_PASS2),\n    gsSPDisplayList(jrb_seg7_dl_07006980),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/jrb/areas/1/6/model.inc.c",
    "content": "// 0x07006A98 - 0x07006AB0\nstatic const Lights1 jrb_seg7_lights_07006A98 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07006AB0 - 0x07006BA0\nstatic const Vtx jrb_seg7_vertex_07006AB0[] = {\n    {{{ -3758,   -918,  -1419}, 0, {  2012,      0}, {0x65, 0x00, 0xb4, 0xff}}},\n    {{{ -4270,  -2966,  -2955}, 0, {     0,    990}, {0x76, 0x2d, 0x03, 0xff}}},\n    {{{ -4270,   -918,  -2955}, 0, {  2012,    990}, {0x73, 0x00, 0x35, 0xff}}},\n    {{{ -4270,   -918,  -7563}, 0, {  8484,   -798}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  6481,   -918,  -7563}, 0, {  1332,   4566}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  6481,   -918,   -907}, 0, { -3096,   1244}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -4270,   -918,   -907}, 0, {  4056,  -4120}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -174,   -918,  -1931}, 0, {  2012,      0}, {0x9d, 0x00, 0xb2, 0xff}}},\n    {{{ -1710,  -2966,   -907}, 0, {     0,    990}, {0xe0, 0x4a, 0x9f, 0xff}}},\n    {{{ -1710,   -918,   -907}, 0, {  2012,    990}, {0xfd, 0x00, 0x82, 0xff}}},\n    {{{  -174,  -2966,  -1931}, 0, {     0,      0}, {0xa0, 0x4b, 0xe1, 0xff}}},\n    {{{ -1710,   -918,   -907}, 0, {  2012,      0}, {0xfd, 0x00, 0x82, 0xff}}},\n    {{{ -1710,  -2966,   -907}, 0, {     0,      0}, {0xe0, 0x4a, 0x9f, 0xff}}},\n    {{{ -3758,  -2966,  -1419}, 0, {     0,    990}, {0x36, 0x4c, 0xab, 0xff}}},\n    {{{ -3758,   -918,  -1419}, 0, {  2012,    990}, {0x65, 0x00, 0xb4, 0xff}}},\n};\n\n// 0x07006BA0 - 0x07006CA0\nstatic const Vtx jrb_seg7_vertex_07006BA0[] = {\n    {{{  3921,   -918,  -5003}, 0, {  2012,      0}, {0xea, 0x00, 0x84, 0xff}}},\n    {{{  3921,  -2966,  -5003}, 0, {     0,      0}, {0xf2, 0x3a, 0x91, 0xff}}},\n    {{{  1361,  -2966,  -3467}, 0, {     0,   3032}, {0xe5, 0x00, 0x85, 0xff}}},\n    {{{ -3758,   -918,  -1419}, 0, {  2012,      0}, {0x65, 0x00, 0xb4, 0xff}}},\n    {{{ -3758,  -2966,  -1419}, 0, {     0,      0}, {0x36, 0x4c, 0xab, 0xff}}},\n    {{{ -4270,  -2966,  -2955}, 0, {     0,    990}, {0x76, 0x2d, 0x03, 0xff}}},\n    {{{  6481,   -918,  -7051}, 0, {  2012,    376}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{  6481,  -2966,  -5515}, 0, {     0,   1602}, {0x86, 0x00, 0xe0, 0xff}}},\n    {{{  6481,   -918,  -5515}, 0, {  2012,   1602}, {0x93, 0x00, 0xc0, 0xff}}},\n    {{{  5969,  -2966,  -5003}, 0, {     0,   2010}, {0xda, 0x00, 0x88, 0xff}}},\n    {{{  5969,   -918,  -5003}, 0, {  2012,   2010}, {0xe9, 0x00, 0x84, 0xff}}},\n    {{{  6481,  -2966,  -7051}, 0, {     0,    376}, {0x93, 0x00, 0x40, 0xff}}},\n    {{{  1361,   -918,  -3467}, 0, {  2012,   3032}, {0x12, 0x00, 0x83, 0xff}}},\n    {{{ -4270,   -918,  -2955}, 0, {  2012,      0}, {0x73, 0x00, 0x35, 0xff}}},\n    {{{ -4270,  -2966,  -2955}, 0, {     0,      0}, {0x76, 0x2d, 0x03, 0xff}}},\n    {{{ -2222,  -2966,  -5003}, 0, {     0,   2010}, {0x40, 0x00, 0x6d, 0xff}}},\n};\n\n// 0x07006CA0 - 0x07006D90\nstatic const Vtx jrb_seg7_vertex_07006CA0[] = {\n    {{{  1361,   -918,  -3467}, 0, {  2012,      0}, {0x12, 0x00, 0x83, 0xff}}},\n    {{{  1361,  -2966,  -3467}, 0, {     0,      0}, {0xe5, 0x00, 0x85, 0xff}}},\n    {{{   337,  -2966,  -3979}, 0, {     0,    990}, {0x09, 0x00, 0x82, 0xff}}},\n    {{{   337,   -918,  -3979}, 0, {  2012,    990}, {0xcf, 0x00, 0x8b, 0xff}}},\n    {{{   337,   -918,  -3979}, 0, {  2012,      0}, {0xcf, 0x00, 0x8b, 0xff}}},\n    {{{   337,  -2966,  -3979}, 0, {     0,      0}, {0x09, 0x00, 0x82, 0xff}}},\n    {{{  -174,  -2966,  -3467}, 0, {     0,    990}, {0x93, 0x00, 0xc0, 0xff}}},\n    {{{  -174,   -918,  -3467}, 0, {  2012,    990}, {0x86, 0x00, 0xe0, 0xff}}},\n    {{{  -174,   -918,  -3467}, 0, {  2012,      0}, {0x86, 0x00, 0xe0, 0xff}}},\n    {{{  -174,  -2966,  -1931}, 0, {     0,    990}, {0xa0, 0x4b, 0xe1, 0xff}}},\n    {{{  -174,   -918,  -1931}, 0, {  2012,    990}, {0x9d, 0x00, 0xb2, 0xff}}},\n    {{{  -174,  -2966,  -3467}, 0, {     0,      0}, {0x93, 0x00, 0xc0, 0xff}}},\n    {{{  -686,   -918,  -5515}, 0, {  2012,      0}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{  -686,  -2966,  -7051}, 0, {     0,    990}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{  -686,   -918,  -7051}, 0, {  2012,    990}, {0x6d, 0x00, 0x40, 0xff}}},\n};\n\n// 0x07006D90 - 0x07006E70\nstatic const Vtx jrb_seg7_vertex_07006D90[] = {\n    {{{ -4270,   -918,  -2955}, 0, {  2012,      0}, {0x73, 0x00, 0x35, 0xff}}},\n    {{{ -2222,  -2966,  -5003}, 0, {     0,   2010}, {0x40, 0x00, 0x6d, 0xff}}},\n    {{{ -2222,   -918,  -5003}, 0, {  2012,   2010}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{ -2222,   -918,  -5003}, 0, {  2012,      0}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{ -2222,  -2966,  -5003}, 0, {     0,      0}, {0x40, 0x00, 0x6d, 0xff}}},\n    {{{ -1198,  -2966,  -5003}, 0, {     0,    990}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{ -1198,   -918,  -5003}, 0, {  2012,    990}, {0x40, 0x00, 0x6d, 0xff}}},\n    {{{ -1198,   -918,  -5003}, 0, {  2012,      0}, {0x40, 0x00, 0x6d, 0xff}}},\n    {{{ -1198,  -2966,  -5003}, 0, {     0,      0}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  -686,  -2966,  -5515}, 0, {     0,    990}, {0x6d, 0x00, 0x40, 0xff}}},\n    {{{  -686,   -918,  -5515}, 0, {  2012,    990}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{  -686,   -918,  -5515}, 0, {  2012,      0}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{  -686,  -2966,  -5515}, 0, {     0,      0}, {0x6d, 0x00, 0x40, 0xff}}},\n    {{{  -686,  -2966,  -7051}, 0, {     0,    990}, {0x7a, 0x00, 0x20, 0xff}}},\n};\n\n// 0x07006E70 - 0x07006F60\nstatic const Vtx jrb_seg7_vertex_07006E70[] = {\n    {{{  2385,  -2966,  -7051}, 0, {     0,    990}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  2385,   -918,  -7051}, 0, {  2012,    990}, {0x40, 0x00, 0x6d, 0xff}}},\n    {{{  1361,   -918,  -7051}, 0, {  2012,      0}, {0xe0, 0x00, 0x7a, 0xff}}},\n    {{{  -686,   -918,  -7051}, 0, {  2012,      0}, {0x6d, 0x00, 0x40, 0xff}}},\n    {{{  -686,  -2966,  -7051}, 0, {     0,      0}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{  -174,  -2966,  -7563}, 0, {     0,    990}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{  -174,   -918,  -7563}, 0, {  2012,    990}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{  5969,   -918,  -7563}, 0, {  2012,      0}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  5969,  -2966,  -7563}, 0, {     0,      0}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  6481,  -2966,  -7051}, 0, {     0,    376}, {0x93, 0x00, 0x40, 0xff}}},\n    {{{  6481,   -918,  -7051}, 0, {  2012,    376}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{  2897,  -2966,  -7563}, 0, {     0,    990}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{  2385,   -918,  -7051}, 0, {  2012,      0}, {0x40, 0x00, 0x6d, 0xff}}},\n    {{{  2385,  -2966,  -7051}, 0, {     0,      0}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  2897,   -918,  -7563}, 0, {  2012,    990}, {0x30, 0x00, 0x75, 0xff}}},\n};\n\n// 0x07006F60 - 0x07007050\nstatic const Vtx jrb_seg7_vertex_07006F60[] = {\n    {{{   849,   -918,  -7563}, 0, {  2012,    990}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  -174,  -2966,  -7563}, 0, {     0,      0}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{   849,  -2966,  -7563}, 0, {     0,    990}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  2385,  -2966,  -7051}, 0, {     0,    990}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  1361,   -918,  -7051}, 0, {  2012,      0}, {0xe0, 0x00, 0x7a, 0xff}}},\n    {{{  1361,  -2966,  -7051}, 0, {     0,      0}, {0xc0, 0x00, 0x6d, 0xff}}},\n    {{{  1361,  -2966,  -7051}, 0, {     0,    990}, {0xc0, 0x00, 0x6d, 0xff}}},\n    {{{  1361,   -918,  -7051}, 0, {  2012,    990}, {0xe0, 0x00, 0x7a, 0xff}}},\n    {{{   849,   -918,  -7563}, 0, {  2012,      0}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{   849,  -2966,  -7563}, 0, {     0,      0}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  5969,   -918,  -7563}, 0, {  2012,   3032}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  2897,   -918,  -7563}, 0, {  2012,      0}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{  2897,  -2966,  -7563}, 0, {     0,      0}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{  5969,  -2966,  -7563}, 0, {     0,   3032}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  -174,   -918,  -7563}, 0, {  2012,      0}, {0x30, 0x00, 0x75, 0xff}}},\n};\n\n// 0x07007050 - 0x07007110\nstatic const Vtx jrb_seg7_vertex_07007050[] = {\n    {{{  4638,  -2761,  -5003}, 0, {   172,   1294}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4842,  -2966,  -5003}, 0, {     0,   1090}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3921,  -2966,  -5003}, 0, {     0,   2010}, {0xf2, 0x3a, 0x91, 0xff}}},\n    {{{  4638,  -2146,  -5003}, 0, {   784,   1294}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3921,   -918,  -5003}, 0, {  2012,   2010}, {0xea, 0x00, 0x84, 0xff}}},\n    {{{  4842,  -1942,  -5003}, 0, {   988,   1090}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5457,  -1942,  -5003}, 0, {   988,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5969,   -918,  -5003}, 0, {  2012,      0}, {0xe9, 0x00, 0x84, 0xff}}},\n    {{{  5662,  -2146,  -5003}, 0, {   784,    274}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5969,  -2966,  -5003}, 0, {     0,      0}, {0xda, 0x00, 0x88, 0xff}}},\n    {{{  5662,  -2761,  -5003}, 0, {   172,    274}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5457,  -2966,  -5003}, 0, {     0,    480}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07007110 - 0x070071D0\nstatic const Vtx jrb_seg7_vertex_07007110[] = {\n    {{{ -2971,  -2812,  -1222}, 0, {  4940,      0}, {0x95, 0x38, 0xdc, 0xff}}},\n    {{{ -2734,  -2812,  -1931}, 0, {     0,      0}, {0xce, 0x6c, 0xd5, 0xff}}},\n    {{{ -2734,  -2966,  -1931}, 0, {     0,    990}, {0xa1, 0x00, 0xad, 0xff}}},\n    {{{ -2971,  -2966,  -1222}, 0, {  4940,    990}, {0x88, 0x00, 0xd8, 0xff}}},\n    {{{ -1710,  -2966,  -2443}, 0, {  2012,    990}, {0x31, 0x00, 0x8b, 0xff}}},\n    {{{ -1710,  -2812,  -2443}, 0, {  2012,      0}, {0xf8, 0x2f, 0x8b, 0xff}}},\n    {{{  -789,  -2812,  -1522}, 0, { -6656,      0}, {0x3f, 0x59, 0xc1, 0xff}}},\n    {{{  -789,  -2966,  -1522}, 0, { -6656,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2734,  -2966,  -1931}, 0, {  7584,    990}, {0xa1, 0x00, 0xad, 0xff}}},\n    {{{ -1710,  -2812,  -2443}, 0, {     0,      0}, {0xf8, 0x2f, 0x8b, 0xff}}},\n    {{{ -1710,  -2966,  -2443}, 0, {     0,    990}, {0x31, 0x00, 0x8b, 0xff}}},\n    {{{ -2734,  -2812,  -1931}, 0, {  7584,      0}, {0xce, 0x6c, 0xd5, 0xff}}},\n};\n\n// 0x070071D0 - 0x070072A0\nstatic const Vtx jrb_seg7_vertex_070071D0[] = {\n    {{{  -686,  -2966,  -7563}, 0, { 12232,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1710,  -2966,   -907}, 0, {   992,  -4376}, {0xe0, 0x4a, 0x9f, 0xff}}},\n    {{{  -174,  -2966,  -1931}, 0, {     0,  -3098}, {0xa0, 0x4b, 0xe1, 0xff}}},\n    {{{ -2734,  -2812,  -1931}, 0, {  5080,  -4376}, {0xce, 0x6c, 0xd5, 0xff}}},\n    {{{ -1710,  -2812,   -907}, 0, {   992,  -4376}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -789,  -2812,  -1522}, 0, {   376,  -3610}, {0x3f, 0x59, 0xc1, 0xff}}},\n    {{{ -1710,  -2812,  -2443}, 0, {  4056,  -3610}, {0xf8, 0x2f, 0x8b, 0xff}}},\n    {{{ -2971,  -2812,  -1222}, 0, {  4136,  -4848}, {0x95, 0x38, 0xdc, 0xff}}},\n    {{{  3921,  -2966,  -5003}, 0, { -2072,    478}, {0xf2, 0x3a, 0x91, 0xff}}},\n    {{{  6481,  -2966,  -5003}, 0, { -7184,   1754}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6481,  -2966,  -7563}, 0, { -2072,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4270,  -2966,  -2955}, 0, { 10188,  -4632}, {0x76, 0x2d, 0x03, 0xff}}},\n    {{{ -3758,  -2966,  -1419}, 0, {  6100,  -5142}, {0x36, 0x4c, 0xab, 0xff}}},\n};\n\n// 0x070072A0 - 0x070074A8\nstatic const Gfx jrb_seg7_dl_070072A0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&jrb_seg7_lights_07006A98.l, 1),\n    gsSPLight(&jrb_seg7_lights_07006A98.a, 2),\n    gsSPVertex(jrb_seg7_vertex_07006AB0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(jrb_seg7_vertex_07006BA0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 8,  7,  9, 0x0,  6, 11,  7, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(jrb_seg7_vertex_07006CA0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(jrb_seg7_vertex_07006D90, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(jrb_seg7_vertex_07006E70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(jrb_seg7_vertex_07006F60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(jrb_seg7_vertex_07007050, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  5,  3,  4, 0x0),\n    gsSP2Triangles( 6,  5,  4, 0x0,  6,  4,  7, 0x0),\n    gsSP2Triangles( 8,  6,  7, 0x0,  9,  8,  7, 0x0),\n    gsSP2Triangles( 9, 10,  8, 0x0,  9, 11, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070074A8 - 0x07007500\nstatic const Gfx jrb_seg7_dl_070074A8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(jrb_seg7_vertex_07007110, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007500 - 0x07007570\nstatic const Gfx jrb_seg7_dl_07007500[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09002800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(jrb_seg7_vertex_070071D0, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  3,  7,  4, 0x0),\n    gsSP2Triangles( 0,  8,  9, 0x0,  0,  9, 10, 0x0),\n    gsSP2Triangles( 0,  2,  8, 0x0,  0, 11, 12, 0x0),\n    gsSP1Triangle( 0, 12,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007570 - 0x07007628\nconst Gfx jrb_seg7_dl_07007570[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(5, 80, 75, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(jrb_seg7_dl_070072A0),\n    gsSPDisplayList(jrb_seg7_dl_070074A8),\n    gsSPDisplayList(jrb_seg7_dl_07007500),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/jrb/areas/1/7/model.inc.c",
    "content": "// 0x07007628 - 0x07007668\nstatic const Vtx jrb_seg7_vertex_07007628[] = {\n    {{{  4569,  -5221,   2892}, 0, {  4056,   6098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5388,  -5221,   2892}, 0, {  4056,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5388,  -5221,   2073}, 0, { -4118,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4569,  -5221,   2073}, 0, { -4118,   6098}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07007668 - 0x070076A8\nstatic const Vtx jrb_seg7_vertex_07007668[] = {\n    {{{  7521,  -2815,   2397}, 0, {  4736,   3544}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  7337,  -3532,   1704}, 0, { -2072,  -1566}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  7521,  -3532,   2397}, 0, { -2072,   3544}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  7337,  -2815,   1704}, 0, {  4736,  -1566}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070076A8 - 0x070076E0\nstatic const Gfx jrb_seg7_dl_070076A8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, jrb_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(jrb_seg7_vertex_07007628, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070076E0 - 0x07007718\nstatic const Gfx jrb_seg7_dl_070076E0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, jrb_seg7_texture_07000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(jrb_seg7_vertex_07007668, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007718 - 0x070077F0\nconst Gfx jrb_seg7_dl_07007718[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(5, 80, 75, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(jrb_seg7_dl_070076A8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(jrb_seg7_dl_070076E0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/jrb/areas/1/collision.inc.c",
    "content": "// 0x0700B058 - 0x0700C4E8\nconst Collision jrb_seg7_area_1_collision[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x14A),\n    COL_VERTEX(-4338, 1249, 2034),\n    COL_VERTEX(-4133, 737, 2034),\n    COL_VERTEX(-4133, 1249, 2034),\n    COL_VERTEX(-4133, 737, 2239),\n    COL_VERTEX(-4133, 1249, 2239),\n    COL_VERTEX(-4338, 737, 2034),\n    COL_VERTEX(-4338, 737, 2239),\n    COL_VERTEX(-4338, 1249, 2239),\n    COL_VERTEX(-5170, 614, 3362),\n    COL_VERTEX(-6077, 1024, 3782),\n    COL_VERTEX(-5256, 1024, 4733),\n    COL_VERTEX(-6561, 1126, 4330),\n    COL_VERTEX(-4161, 1024, 6315),\n    COL_VERTEX(-6304, 1126, 3887),\n    COL_VERTEX(-5963, 1024, 1954),\n    COL_VERTEX(-6161, 1126, 1602),\n    COL_VERTEX(-4133, 614, 2187),\n    COL_VERTEX(-5345, 1024, 1011),\n    COL_VERTEX(-5756, 1024, 1719),\n    COL_VERTEX(-5647, 1126, 716),\n    COL_VERTEX(-4579, 1024, 508),\n    COL_VERTEX(-3747, 1024, 257),\n    COL_VERTEX(-4307, 1024, 405),\n    COL_VERTEX(-2771, 614, 1676),\n    COL_VERTEX(-3443, 1024, 319),\n    COL_VERTEX(-705, 512, 2401),\n    COL_VERTEX(1098, 1024, 6104),\n    COL_VERTEX(-219, 512, 5643),\n    COL_VERTEX(-805, 512, 7672),\n    COL_VERTEX(111, 1024, 6993),\n    COL_VERTEX(-210, 1024, 7709),\n    COL_VERTEX(532, 1024, 6198),\n    COL_VERTEX(-2568, 1024, 6148),\n    COL_VERTEX(-2500, 1024, 6148),\n    COL_VERTEX(-2500, 1024, 6080),\n    COL_VERTEX(-2568, 1024, 6080),\n    COL_VERTEX(-3928, 922, 1829),\n    COL_VERTEX(-4082, 1249, 1983),\n    COL_VERTEX(-4082, 1249, 2290),\n    COL_VERTEX(-4389, 1249, 2290),\n    COL_VERTEX(-4690, 1126, 88),\n    COL_VERTEX(-3991, 1126, -97),\n    COL_VERTEX(330, 1024, 6232),\n    COL_VERTEX(386, 1075, 7315),\n    COL_VERTEX(330, 1124, 7742),\n    COL_VERTEX(-2534, 1075, 6114),\n    COL_VERTEX(-3928, 922, 2443),\n    COL_VERTEX(-4543, 922, 1829),\n    COL_VERTEX(-4389, 1249, 1983),\n    COL_VERTEX(-4543, 922, 2443),\n    COL_VERTEX(-1619, 512, 6015),\n    COL_VERTEX(-3390, 512, 4987),\n    COL_VERTEX(-2483, 512, 6062),\n    COL_VERTEX(-2585, 512, 6062),\n    COL_VERTEX(-2483, 512, 6165),\n    COL_VERTEX(-2585, 512, 6165),\n    COL_VERTEX(-1805, -1023, 5315),\n    COL_VERTEX(-1105, -1023, 5129),\n    COL_VERTEX(-4161, 512, 6315),\n    COL_VERTEX(-4161, 4096, 6315),\n    COL_VERTEX(-5256, 512, 4733),\n    COL_VERTEX(-3762, 0, 3587),\n    COL_VERTEX(-2876, -1023, 4101),\n    COL_VERTEX(-2690, -1023, 4801),\n    COL_VERTEX(-805, 4096, 7672),\n    COL_VERTEX(-805, 1024, 7672),\n    COL_VERTEX(3093, -5119, 4015),\n    COL_VERTEX(2722, -5119, 2615),\n    COL_VERTEX(4279, -1535, 7071),\n    COL_VERTEX(1136, -1023, 2287),\n    COL_VERTEX(5821, -5119, 4414),\n    COL_VERTEX(5183, -5119, 2892),\n    COL_VERTEX(3750, -5119, 844),\n    COL_VERTEX(2350, 0, 1215),\n    COL_VERTEX(5150, -5119, 472),\n    COL_VERTEX(6478, -5119, 1243),\n    COL_VERTEX(5457, -4914, 603),\n    COL_VERTEX(7117, -3476, 2292),\n    COL_VERTEX(7435, 0, 615),\n    COL_VERTEX(6849, -5119, 2643),\n    COL_VERTEX(7038, -3476, 1995),\n    COL_VERTEX(7992, 0, 2714),\n    COL_VERTEX(5969, -2966, -5003),\n    COL_VERTEX(5457, -2966, -5003),\n    COL_VERTEX(4842, -2966, -5003),\n    COL_VERTEX(5662, -2761, -5003),\n    COL_VERTEX(5662, -2146, -5003),\n    COL_VERTEX(5662, -2167, -3795),\n    COL_VERTEX(5457, -1942, -5003),\n    COL_VERTEX(4842, -1942, -5003),\n    COL_VERTEX(4638, -2146, -5003),\n    COL_VERTEX(4638, -2761, -5003),\n    COL_VERTEX(4638, -2766, -3933),\n    COL_VERTEX(4842, -3279, -3193),\n    COL_VERTEX(4842, -4904, -913),\n    COL_VERTEX(5457, -4904, -913),\n    COL_VERTEX(5457, -3279, -3193),\n    COL_VERTEX(4638, -3104, -3087),\n    COL_VERTEX(4638, -4709, -850),\n    COL_VERTEX(5662, -4709, -850),\n    COL_VERTEX(5662, -2766, -3933),\n    COL_VERTEX(5662, -3104, -3087),\n    COL_VERTEX(5662, -4095, -653),\n    COL_VERTEX(5662, -2577, -2771),\n    COL_VERTEX(5457, -2401, -2665),\n    COL_VERTEX(5457, -3900, -590),\n    COL_VERTEX(4842, -2401, -2665),\n    COL_VERTEX(4842, -3900, -590),\n    COL_VERTEX(4638, -4095, -653),\n    COL_VERTEX(4638, -2167, -3795),\n    COL_VERTEX(4638, -2577, -2771),\n    COL_VERTEX(5662, -4709, 675),\n    COL_VERTEX(4842, -4914, 509),\n    COL_VERTEX(5662, -4095, 533),\n    COL_VERTEX(4842, -3890, 284),\n    COL_VERTEX(4638, -4095, 383),\n    COL_VERTEX(5457, -3890, 366),\n    COL_VERTEX(4638, -4709, 518),\n    COL_VERTEX(5221, 0, -669),\n    COL_VERTEX(-6561, 4096, 4330),\n    COL_VERTEX(1480, 4096, 7814),\n    COL_VERTEX(4279, 4096, 7071),\n    COL_VERTEX(4279, 1024, 7071),\n    COL_VERTEX(-5762, 4096, -1125),\n    COL_VERTEX(-7494, 4096, 173),\n    COL_VERTEX(-6980, 4096, -712),\n    COL_VERTEX(-5762, 1126, -1125),\n    COL_VERTEX(-7818, 4096, 2416),\n    COL_VERTEX(-5170, 0, 3362),\n    COL_VERTEX(-4133, 0, 2187),\n    COL_VERTEX(-2771, 0, 1676),\n    COL_VERTEX(6707, 4096, 4928),\n    COL_VERTEX(1879, -511, 5086),\n    COL_VERTEX(2863, 1024, 7010),\n    COL_VERTEX(7162, -2871, 1962),\n    COL_VERTEX(7092, -3022, 1822),\n    COL_VERTEX(7030, -3325, 1838),\n    COL_VERTEX(5221, 4096, -669),\n    COL_VERTEX(7435, 4096, 615),\n    COL_VERTEX(3121, 4096, -112),\n    COL_VERTEX(7992, 4096, 2714),\n    COL_VERTEX(-77, -511, 3358),\n    COL_VERTEX(1888, 1024, 6165),\n    COL_VERTEX(7241, -2871, 2259),\n    COL_VERTEX(7249, -3022, 2416),\n    COL_VERTEX(7187, -3325, 2432),\n    COL_VERTEX(2350, 4096, 1215),\n    COL_VERTEX(1136, 4096, 2287),\n    COL_VERTEX(-705, 4096, 2401),\n    COL_VERTEX(150, -509, 2557),\n    COL_VERTEX(-1662, -1023, 3030),\n    COL_VERTEX(294, -511, 4758),\n    COL_VERTEX(-1848, 0, 2330),\n    COL_VERTEX(-777, -1023, 3544),\n    COL_VERTEX(-705, 0, 2401),\n    COL_VERTEX(-105, -376, 2631),\n    COL_VERTEX(4569, -5119, 2687),\n    COL_VERTEX(4774, -5119, 2892),\n    COL_VERTEX(4815, -5221, 2154),\n    COL_VERTEX(4569, -5119, 2277),\n    COL_VERTEX(4774, -5119, 2073),\n    COL_VERTEX(5306, -5221, 2318),\n    COL_VERTEX(5388, -5119, 2277),\n    COL_VERTEX(5388, -5119, 2687),\n    COL_VERTEX(7152, -3020, 1806),\n    COL_VERTEX(7310, -3327, 2400),\n    COL_VERTEX(-4270, -918, -7563),\n    COL_VERTEX(-174, -918, -3467),\n    COL_VERTEX(-174, -918, -1931),\n    COL_VERTEX(-686, -2966, -7563),\n    COL_VERTEX(-1710, -918, -907),\n    COL_VERTEX(-3758, -918, -1419),\n    COL_VERTEX(-4270, -918, -2955),\n    COL_VERTEX(6481, -918, -5515),\n    COL_VERTEX(6481, -918, -7051),\n    COL_VERTEX(3921, -918, -5003),\n    COL_VERTEX(1361, -918, -3467),\n    COL_VERTEX(337, -918, -3979),\n    COL_VERTEX(-2222, -918, -5003),\n    COL_VERTEX(-1198, -918, -5003),\n    COL_VERTEX(-686, -918, -5515),\n    COL_VERTEX(-686, -918, -7051),\n    COL_VERTEX(849, -918, -7563),\n    COL_VERTEX(5969, -918, -7563),\n    COL_VERTEX(-2734, -2966, -1931),\n    COL_VERTEX(-2971, -2812, -1222),\n    COL_VERTEX(-2734, -2812, -1931),\n    COL_VERTEX(-1710, -2966, -2443),\n    COL_VERTEX(2897, -2966, -7563),\n    COL_VERTEX(2385, -2966, -7051),\n    COL_VERTEX(1361, -2966, -7051),\n    COL_VERTEX(692, 2509, 3303),\n    COL_VERTEX(995, -594, 3958),\n    COL_VERTEX(402, -607, 3381),\n    COL_VERTEX(728, -630, 3571),\n    COL_VERTEX(927, -751, 3241),\n    COL_VERTEX(925, -640, 3703),\n    COL_VERTEX(1252, -664, 3893),\n    COL_VERTEX(1111, 2099, 3811),\n    COL_VERTEX(1064, 2099, 3784),\n    COL_VERTEX(-40, -455, 2888),\n    COL_VERTEX(1101, 2099, 3774),\n    COL_VERTEX(1088, 2150, 3798),\n    COL_VERTEX(1074, 2099, 3821),\n    COL_VERTEX(30, 2304, 2710),\n    COL_VERTEX(40, 2304, 2747),\n    COL_VERTEX(67, 2304, 2700),\n    COL_VERTEX(225, -595, 2823),\n    COL_VERTEX(626, 2509, 3321),\n    COL_VERTEX(668, 2509, 3345),\n    COL_VERTEX(651, 2509, 3279),\n    COL_VERTEX(1888, 1536, 6165),\n    COL_VERTEX(1480, 1536, 7814),\n    COL_VERTEX(532, 1536, 6198),\n    COL_VERTEX(1853, 1946, 2191),\n    COL_VERTEX(1762, 1843, 1734),\n    COL_VERTEX(1546, 1946, 2703),\n    COL_VERTEX(522, 1946, 2287),\n    COL_VERTEX(5084, 1434, 6377),\n    COL_VERTEX(3559, 1434, 4852),\n    COL_VERTEX(5084, 1536, 6377),\n    COL_VERTEX(3559, 1536, 4852),\n    COL_VERTEX(3392, 1536, 5018),\n    COL_VERTEX(4909, 1434, 6535),\n    COL_VERTEX(3392, 1434, 5018),\n    COL_VERTEX(4460, 1434, 6912),\n    COL_VERTEX(4460, 1536, 6912),\n    COL_VERTEX(2980, 1536, 5431),\n    COL_VERTEX(2813, 1536, 5598),\n    COL_VERTEX(4284, 1434, 7069),\n    COL_VERTEX(3861, 1536, 7182),\n    COL_VERTEX(3861, 1434, 7182),\n    COL_VERTEX(2835, 1536, 6155),\n    COL_VERTEX(2668, 1536, 6322),\n    COL_VERTEX(3611, 1434, 7264),\n    COL_VERTEX(2668, 1434, 6322),\n    COL_VERTEX(-1944, 1331, 7211),\n    COL_VERTEX(-1944, 512, 7211),\n    COL_VERTEX(-1675, 1331, 6547),\n    COL_VERTEX(-2073, 1331, 6165),\n    COL_VERTEX(-2362, -1023, 3215),\n    COL_VERTEX(4422, -5119, 4786),\n    COL_VERTEX(6707, -1023, 4928),\n    COL_VERTEX(1185, -712, 3631),\n    COL_VERTEX(589, -726, 3046),\n    COL_VERTEX(3121, 0, -112),\n    COL_VERTEX(5183, -5119, 2073),\n    COL_VERTEX(5152, -4914, 427),\n    COL_VERTEX(5457, -2966, -3979),\n    COL_VERTEX(4842, -2966, -3979),\n    COL_VERTEX(5457, -1968, -3749),\n    COL_VERTEX(5969, -918, -5003),\n    COL_VERTEX(4842, -1968, -3749),\n    COL_VERTEX(1361, -2966, -3467),\n    COL_VERTEX(3921, -2966, -5003),\n    COL_VERTEX(5167, -3890, 198),\n    COL_VERTEX(-7818, 1126, 2416),\n    COL_VERTEX(1480, 1024, 7814),\n    COL_VERTEX(3190, 1024, 7360),\n    COL_VERTEX(-3991, 4096, -97),\n    COL_VERTEX(-7494, 1126, 173),\n    COL_VERTEX(-6980, 1126, -712),\n    COL_VERTEX(-3248, 0, 2701),\n    COL_VERTEX(2863, 1536, 7010),\n    COL_VERTEX(3190, 1536, 7360),\n    COL_VERTEX(-591, -1023, 4244),\n    COL_VERTEX(77, 2304, 2737),\n    COL_VERTEX(1098, 1536, 6104),\n    COL_VERTEX(4651, -5221, 2318),\n    COL_VERTEX(4651, -5221, 2646),\n    COL_VERTEX(4815, -5221, 2810),\n    COL_VERTEX(5306, -5221, 2646),\n    COL_VERTEX(5142, -5221, 2810),\n    COL_VERTEX(5142, -5221, 2154),\n    COL_VERTEX(7310, -3020, 2400),\n    COL_VERTEX(7270, -2866, 2251),\n    COL_VERTEX(7270, -3481, 2251),\n    COL_VERTEX(7192, -2866, 1954),\n    COL_VERTEX(7152, -3327, 1806),\n    COL_VERTEX(7192, -3481, 1954),\n    COL_VERTEX(6481, -918, -907),\n    COL_VERTEX(-4270, -918, -907),\n    COL_VERTEX(6481, -918, -7563),\n    COL_VERTEX(-174, -2966, -1931),\n    COL_VERTEX(-1710, -2966, -907),\n    COL_VERTEX(-174, -2966, -3467),\n    COL_VERTEX(-3758, -2966, -1419),\n    COL_VERTEX(-4270, -2966, -2955),\n    COL_VERTEX(-2222, -2966, -5003),\n    COL_VERTEX(6481, -2966, -5003),\n    COL_VERTEX(-1198, -2966, -5003),\n    COL_VERTEX(6481, -2966, -5515),\n    COL_VERTEX(6481, -2966, -7051),\n    COL_VERTEX(337, -2966, -3979),\n    COL_VERTEX(6481, -2966, -7563),\n    COL_VERTEX(-686, -2966, -5515),\n    COL_VERTEX(-686, -2966, -7051),\n    COL_VERTEX(-174, -2966, -7563),\n    COL_VERTEX(-174, -918, -7563),\n    COL_VERTEX(849, -2966, -7563),\n    COL_VERTEX(5969, -2966, -7563),\n    COL_VERTEX(2897, -918, -7563),\n    COL_VERTEX(-1710, -2812, -2443),\n    COL_VERTEX(-1710, -2812, -907),\n    COL_VERTEX(-789, -2812, -1522),\n    COL_VERTEX(2385, -918, -7051),\n    COL_VERTEX(-2971, -2966, -1222),\n    COL_VERTEX(-789, -2966, -1522),\n    COL_VERTEX(1361, -918, -7051),\n    COL_VERTEX(659, 2560, 3312),\n    COL_VERTEX(54, 2355, 2724),\n    COL_VERTEX(330, 1536, 7742),\n    COL_VERTEX(1762, 1946, 1734),\n    COL_VERTEX(1853, 1843, 2191),\n    COL_VERTEX(1546, 1843, 2703),\n    COL_VERTEX(522, 1843, 2287),\n    COL_VERTEX(4909, 1536, 6535),\n    COL_VERTEX(4284, 1536, 7069),\n    COL_VERTEX(2980, 1434, 5431),\n    COL_VERTEX(2813, 1434, 5598),\n    COL_VERTEX(3611, 1536, 7264),\n    COL_VERTEX(2835, 1434, 6155),\n    COL_VERTEX(-3928, 0, 2443),\n    COL_VERTEX(-3928, 0, 1829),\n    COL_VERTEX(-4543, 0, 2443),\n    COL_VERTEX(-4543, 0, 1829),\n    COL_VERTEX(-3017, 1331, 6778),\n    COL_VERTEX(-2073, 512, 6165),\n    COL_VERTEX(-1675, 512, 6547),\n    COL_VERTEX(-3017, 512, 6778),\n    COL_TRI_INIT(SURFACE_DEFAULT, 482),\n    COL_TRI(50, 51, 52),\n    COL_TRI(53, 52, 51),\n    COL_TRI(52, 54, 50),\n    COL_TRI(50, 54, 28),\n    COL_TRI(28, 54, 55),\n    COL_TRI(27, 50, 28),\n    COL_TRI(51, 50, 56),\n    COL_TRI(57, 56, 50),\n    COL_TRI(57, 50, 27),\n    COL_TRI(28, 58, 59),\n    COL_TRI(58, 60, 10),\n    COL_TRI(58, 10, 12),\n    COL_TRI(58, 28, 55),\n    COL_TRI(58, 55, 53),\n    COL_TRI(58, 53, 51),\n    COL_TRI(60, 58, 51),\n    COL_TRI(55, 54, 33),\n    COL_TRI(52, 53, 35),\n    COL_TRI(53, 32, 35),\n    COL_TRI(53, 55, 32),\n    COL_TRI(60, 51, 61),\n    COL_TRI(62, 61, 51),\n    COL_TRI(51, 56, 63),\n    COL_TRI(63, 62, 51),\n    COL_TRI(55, 33, 32),\n    COL_TRI(69, 66, 67),\n    COL_TRI(28, 59, 64),\n    COL_TRI(28, 65, 30),\n    COL_TRI(66, 241, 157),\n    COL_TRI(66, 157, 156),\n    COL_TRI(67, 66, 156),\n    COL_TRI(68, 66, 132),\n    COL_TRI(68, 241, 66),\n    COL_TRI(69, 132, 66),\n    COL_TRI(72, 74, 112),\n    COL_TRI(70, 71, 241),\n    COL_TRI(71, 157, 241),\n    COL_TRI(68, 70, 241),\n    COL_TRI(67, 156, 159),\n    COL_TRI(72, 67, 159),\n    COL_TRI(73, 67, 72),\n    COL_TRI(67, 73, 69),\n    COL_TRI(72, 159, 160),\n    COL_TRI(74, 72, 160),\n    COL_TRI(72, 112, 117),\n    COL_TRI(74, 160, 246),\n    COL_TRI(75, 74, 246),\n    COL_TRI(76, 247, 74),\n    COL_TRI(74, 247, 112),\n    COL_TRI(75, 76, 74),\n    COL_TRI(75, 246, 162),\n    COL_TRI(77, 75, 79),\n    COL_TRI(77, 80, 75),\n    COL_TRI(78, 113, 75),\n    COL_TRI(79, 75, 162),\n    COL_TRI(80, 136, 75),\n    COL_TRI(75, 136, 78),\n    COL_TRI(79, 162, 163),\n    COL_TRI(70, 79, 163),\n    COL_TRI(70, 163, 71),\n    COL_TRI(81, 70, 242),\n    COL_TRI(81, 79, 70),\n    COL_TRI(68, 242, 70),\n    COL_TRI(82, 83, 85),\n    COL_TRI(83, 248, 100),\n    COL_TRI(83, 100, 85),\n    COL_TRI(84, 248, 83),\n    COL_TRI(84, 249, 248),\n    COL_TRI(85, 100, 87),\n    COL_TRI(82, 85, 86),\n    COL_TRI(85, 87, 86),\n    COL_TRI(86, 87, 88),\n    COL_TRI(87, 250, 88),\n    COL_TRI(82, 86, 251),\n    COL_TRI(86, 88, 251),\n    COL_TRI(88, 250, 252),\n    COL_TRI(88, 175, 251),\n    COL_TRI(88, 89, 175),\n    COL_TRI(88, 252, 89),\n    COL_TRI(95, 93, 94),\n    COL_TRI(89, 252, 109),\n    COL_TRI(89, 90, 175),\n    COL_TRI(89, 109, 90),\n    COL_TRI(90, 109, 92),\n    COL_TRI(90, 91, 254),\n    COL_TRI(90, 254, 175),\n    COL_TRI(90, 92, 91),\n    COL_TRI(91, 92, 84),\n    COL_TRI(92, 249, 84),\n    COL_TRI(91, 84, 254),\n    COL_TRI(93, 97, 98),\n    COL_TRI(94, 93, 98),\n    COL_TRI(95, 96, 93),\n    COL_TRI(97, 92, 109),\n    COL_TRI(93, 92, 97),\n    COL_TRI(93, 249, 92),\n    COL_TRI(98, 97, 110),\n    COL_TRI(97, 109, 110),\n    COL_TRI(96, 249, 93),\n    COL_TRI(96, 248, 249),\n    COL_TRI(99, 101, 96),\n    COL_TRI(99, 96, 95),\n    COL_TRI(100, 248, 96),\n    COL_TRI(101, 100, 96),\n    COL_TRI(102, 101, 99),\n    COL_TRI(102, 103, 101),\n    COL_TRI(103, 100, 101),\n    COL_TRI(103, 87, 100),\n    COL_TRI(104, 103, 102),\n    COL_TRI(104, 87, 103),\n    COL_TRI(104, 250, 87),\n    COL_TRI(105, 104, 102),\n    COL_TRI(106, 250, 104),\n    COL_TRI(107, 104, 105),\n    COL_TRI(107, 106, 104),\n    COL_TRI(106, 252, 250),\n    COL_TRI(108, 110, 106),\n    COL_TRI(108, 106, 107),\n    COL_TRI(109, 252, 106),\n    COL_TRI(110, 109, 106),\n    COL_TRI(98, 110, 108),\n    COL_TRI(76, 95, 247),\n    COL_TRI(111, 95, 76),\n    COL_TRI(111, 99, 95),\n    COL_TRI(112, 94, 117),\n    COL_TRI(94, 98, 117),\n    COL_TRI(94, 112, 247),\n    COL_TRI(95, 94, 247),\n    COL_TRI(116, 105, 113),\n    COL_TRI(113, 102, 99),\n    COL_TRI(113, 99, 111),\n    COL_TRI(105, 102, 113),\n    COL_TRI(107, 105, 255),\n    COL_TRI(114, 107, 255),\n    COL_TRI(115, 107, 114),\n    COL_TRI(115, 108, 107),\n    COL_TRI(105, 116, 255),\n    COL_TRI(72, 117, 115),\n    COL_TRI(117, 108, 115),\n    COL_TRI(117, 98, 108),\n    COL_TRI(78, 116, 113),\n    COL_TRI(75, 113, 111),\n    COL_TRI(78, 118, 116),\n    COL_TRI(118, 255, 116),\n    COL_TRI(75, 111, 76),\n    COL_TRI(12, 11, 119),\n    COL_TRI(72, 115, 245),\n    COL_TRI(115, 114, 245),\n    COL_TRI(114, 255, 118),\n    COL_TRI(114, 118, 245),\n    COL_TRI(59, 12, 119),\n    COL_TRI(120, 65, 64),\n    COL_TRI(119, 256, 127),\n    COL_TRI(119, 11, 256),\n    COL_TRI(121, 257, 120),\n    COL_TRI(121, 122, 257),\n    COL_TRI(122, 68, 258),\n    COL_TRI(120, 257, 65),\n    COL_TRI(123, 41, 259),\n    COL_TRI(123, 126, 41),\n    COL_TRI(40, 41, 126),\n    COL_TRI(24, 148, 259),\n    COL_TRI(41, 24, 259),\n    COL_TRI(124, 261, 125),\n    COL_TRI(125, 126, 123),\n    COL_TRI(125, 261, 126),\n    COL_TRI(126, 261, 260),\n    COL_TRI(124, 260, 261),\n    COL_TRI(15, 19, 126),\n    COL_TRI(19, 40, 126),\n    COL_TRI(15, 126, 260),\n    COL_TRI(127, 260, 124),\n    COL_TRI(13, 15, 260),\n    COL_TRI(13, 260, 256),\n    COL_TRI(127, 256, 260),\n    COL_TRI(13, 256, 11),\n    COL_TRI(60, 8, 10),\n    COL_TRI(60, 128, 8),\n    COL_TRI(128, 60, 61),\n    COL_TRI(130, 154, 25),\n    COL_TRI(128, 16, 8),\n    COL_TRI(128, 129, 16),\n    COL_TRI(129, 128, 61),\n    COL_TRI(129, 61, 262),\n    COL_TRI(129, 262, 152),\n    COL_TRI(130, 129, 152),\n    COL_TRI(129, 23, 16),\n    COL_TRI(129, 130, 23),\n    COL_TRI(130, 25, 23),\n    COL_TRI(131, 242, 68),\n    COL_TRI(131, 68, 121),\n    COL_TRI(132, 133, 68),\n    COL_TRI(133, 258, 68),\n    COL_TRI(134, 81, 78),\n    COL_TRI(135, 134, 78),\n    COL_TRI(136, 135, 78),\n    COL_TRI(139, 118, 137),\n    COL_TRI(139, 245, 118),\n    COL_TRI(137, 118, 78),\n    COL_TRI(73, 72, 245),\n    COL_TRI(140, 242, 131),\n    COL_TRI(140, 81, 242),\n    COL_TRI(132, 197, 192),\n    COL_TRI(141, 132, 192),\n    COL_TRI(134, 143, 81),\n    COL_TRI(143, 144, 81),\n    COL_TRI(144, 79, 81),\n    COL_TRI(138, 81, 140),\n    COL_TRI(138, 78, 81),\n    COL_TRI(144, 145, 79),\n    COL_TRI(145, 77, 79),\n    COL_TRI(146, 245, 139),\n    COL_TRI(146, 73, 245),\n    COL_TRI(147, 73, 146),\n    COL_TRI(142, 263, 133),\n    COL_TRI(137, 78, 138),\n    COL_TRI(147, 69, 73),\n    COL_TRI(148, 154, 69),\n    COL_TRI(148, 69, 147),\n    COL_TRI(133, 263, 264),\n    COL_TRI(133, 264, 258),\n    COL_TRI(142, 132, 26),\n    COL_TRI(26, 211, 142),\n    COL_TRI(142, 211, 263),\n    COL_TRI(132, 142, 133),\n    COL_TRI(132, 27, 26),\n    COL_TRI(149, 69, 154),\n    COL_TRI(69, 149, 207),\n    COL_TRI(141, 69, 207),\n    COL_TRI(141, 244, 69),\n    COL_TRI(69, 244, 195),\n    COL_TRI(150, 265, 153),\n    COL_TRI(150, 152, 240),\n    COL_TRI(150, 153, 152),\n    COL_TRI(150, 240, 62),\n    COL_TRI(150, 62, 63),\n    COL_TRI(150, 63, 56),\n    COL_TRI(150, 56, 57),\n    COL_TRI(150, 57, 265),\n    COL_TRI(57, 27, 151),\n    COL_TRI(57, 151, 265),\n    COL_TRI(141, 265, 151),\n    COL_TRI(141, 153, 265),\n    COL_TRI(61, 62, 240),\n    COL_TRI(153, 141, 152),\n    COL_TRI(154, 141, 200),\n    COL_TRI(132, 141, 151),\n    COL_TRI(152, 262, 240),\n    COL_TRI(61, 240, 262),\n    COL_TRI(154, 152, 141),\n    COL_TRI(154, 130, 152),\n    COL_TRI(141, 207, 200),\n    COL_TRI(141, 192, 193),\n    COL_TRI(141, 193, 244),\n    COL_TRI(132, 151, 27),\n    COL_TRI(155, 149, 154),\n    COL_TRI(154, 200, 155),\n    COL_TRI(156, 268, 159),\n    COL_TRI(156, 269, 268),\n    COL_TRI(157, 269, 156),\n    COL_TRI(157, 270, 269),\n    COL_TRI(158, 269, 270),\n    COL_TRI(158, 268, 269),\n    COL_TRI(159, 268, 158),\n    COL_TRI(71, 270, 157),\n    COL_TRI(159, 158, 160),\n    COL_TRI(160, 158, 273),\n    COL_TRI(158, 161, 273),\n    COL_TRI(158, 271, 161),\n    COL_TRI(158, 272, 271),\n    COL_TRI(158, 270, 272),\n    COL_TRI(160, 273, 246),\n    COL_TRI(161, 246, 273),\n    COL_TRI(161, 162, 246),\n    COL_TRI(162, 161, 271),\n    COL_TRI(162, 271, 163),\n    COL_TRI(163, 271, 272),\n    COL_TRI(163, 272, 71),\n    COL_TRI(71, 272, 270),\n    COL_TRI(77, 276, 279),\n    COL_TRI(144, 274, 165),\n    COL_TRI(143, 274, 144),\n    COL_TRI(144, 165, 145),\n    COL_TRI(164, 274, 275),\n    COL_TRI(164, 165, 274),\n    COL_TRI(143, 275, 274),\n    COL_TRI(145, 165, 77),\n    COL_TRI(165, 276, 77),\n    COL_TRI(164, 276, 165),\n    COL_TRI(134, 275, 143),\n    COL_TRI(164, 275, 277),\n    COL_TRI(134, 277, 275),\n    COL_TRI(135, 164, 134),\n    COL_TRI(164, 277, 134),\n    COL_TRI(164, 278, 279),\n    COL_TRI(136, 164, 135),\n    COL_TRI(164, 279, 276),\n    COL_TRI(136, 278, 164),\n    COL_TRI(80, 278, 136),\n    COL_TRI(80, 279, 278),\n    COL_TRI(77, 279, 80),\n    COL_TRI(166, 280, 281),\n    COL_TRI(166, 282, 280),\n    COL_TRI(167, 283, 168),\n    COL_TRI(168, 284, 170),\n    COL_TRI(168, 283, 284),\n    COL_TRI(172, 288, 178),\n    COL_TRI(167, 285, 283),\n    COL_TRI(169, 283, 254),\n    COL_TRI(169, 284, 283),\n    COL_TRI(170, 284, 286),\n    COL_TRI(169, 286, 284),\n    COL_TRI(170, 286, 171),\n    COL_TRI(171, 286, 287),\n    COL_TRI(169, 287, 286),\n    COL_TRI(171, 287, 172),\n    COL_TRI(172, 287, 288),\n    COL_TRI(173, 82, 251),\n    COL_TRI(173, 291, 82),\n    COL_TRI(174, 291, 173),\n    COL_TRI(174, 292, 291),\n    COL_TRI(175, 253, 176),\n    COL_TRI(175, 254, 253),\n    COL_TRI(169, 254, 289),\n    COL_TRI(176, 253, 293),\n    COL_TRI(180, 296, 181),\n    COL_TRI(176, 293, 177),\n    COL_TRI(177, 293, 285),\n    COL_TRI(177, 285, 167),\n    COL_TRI(178, 288, 290),\n    COL_TRI(178, 290, 179),\n    COL_TRI(179, 290, 295),\n    COL_TRI(179, 295, 180),\n    COL_TRI(180, 295, 296),\n    COL_TRI(184, 186, 302),\n    COL_TRI(181, 296, 297),\n    COL_TRI(181, 297, 298),\n    COL_TRI(182, 297, 299),\n    COL_TRI(182, 298, 297),\n    COL_TRI(183, 188, 300),\n    COL_TRI(183, 301, 188),\n    COL_TRI(183, 292, 174),\n    COL_TRI(183, 300, 292),\n    COL_TRI(185, 186, 184),\n    COL_TRI(186, 185, 303),\n    COL_TRI(186, 303, 304),\n    COL_TRI(185, 184, 306),\n    COL_TRI(187, 304, 307),\n    COL_TRI(187, 302, 304),\n    COL_TRI(186, 304, 302),\n    COL_TRI(184, 302, 187),\n    COL_TRI(169, 289, 294),\n    COL_TRI(188, 301, 305),\n    COL_TRI(188, 305, 189),\n    COL_TRI(189, 305, 308),\n    COL_TRI(189, 308, 190),\n    COL_TRI(190, 308, 182),\n    COL_TRI(190, 182, 299),\n    COL_TRI(191, 244, 210),\n    COL_TRI(191, 195, 244),\n    COL_TRI(192, 194, 193),\n    COL_TRI(198, 197, 243),\n    COL_TRI(132, 243, 197),\n    COL_TRI(192, 203, 196),\n    COL_TRI(192, 196, 194),\n    COL_TRI(194, 196, 243),\n    COL_TRI(195, 194, 243),\n    COL_TRI(195, 209, 194),\n    COL_TRI(196, 199, 243),\n    COL_TRI(197, 198, 203),\n    COL_TRI(149, 155, 204),\n    COL_TRI(132, 69, 243),\n    COL_TRI(199, 201, 243),\n    COL_TRI(198, 243, 201),\n    COL_TRI(69, 195, 243),\n    COL_TRI(200, 204, 155),\n    COL_TRI(200, 205, 204),\n    COL_TRI(149, 266, 207),\n    COL_TRI(149, 204, 206),\n    COL_TRI(149, 206, 266),\n    COL_TRI(201, 199, 202),\n    COL_TRI(199, 203, 202),\n    COL_TRI(202, 203, 198),\n    COL_TRI(203, 199, 196),\n    COL_TRI(201, 202, 198),\n    COL_TRI(197, 203, 192),\n    COL_TRI(204, 205, 310),\n    COL_TRI(205, 266, 310),\n    COL_TRI(206, 310, 266),\n    COL_TRI(207, 266, 205),\n    COL_TRI(206, 204, 310),\n    COL_TRI(207, 205, 200),\n    COL_TRI(195, 191, 209),\n    COL_TRI(31, 267, 26),\n    COL_TRI(193, 208, 210),\n    COL_TRI(208, 209, 309),\n    COL_TRI(210, 309, 191),\n    COL_TRI(209, 191, 309),\n    COL_TRI(210, 208, 309),\n    COL_TRI(193, 210, 244),\n    COL_TRI(194, 208, 193),\n    COL_TRI(194, 209, 208),\n    COL_TRI(43, 44, 311),\n    COL_TRI(211, 267, 212),\n    COL_TRI(31, 213, 267),\n    COL_TRI(26, 267, 211),\n    COL_TRI(212, 267, 213),\n    COL_TRI(212, 263, 211),\n    COL_TRI(212, 213, 311),\n    COL_TRI(212, 264, 263),\n    COL_TRI(213, 43, 311),\n    COL_TRI(213, 31, 43),\n    COL_TRI(24, 25, 148),\n    COL_TRI(214, 215, 312),\n    COL_TRI(214, 313, 215),\n    COL_TRI(215, 314, 315),\n    COL_TRI(215, 313, 314),\n    COL_TRI(216, 313, 214),\n    COL_TRI(216, 314, 313),\n    COL_TRI(219, 221, 220),\n    COL_TRI(217, 315, 314),\n    COL_TRI(217, 314, 216),\n    COL_TRI(217, 214, 312),\n    COL_TRI(217, 216, 214),\n    COL_TRI(52, 35, 34),\n    COL_TRI(54, 52, 34),\n    COL_TRI(54, 34, 33),\n    COL_TRI(218, 219, 220),\n    COL_TRI(226, 227, 228),\n    COL_TRI(221, 224, 222),\n    COL_TRI(221, 219, 224),\n    COL_TRI(220, 221, 222),\n    COL_TRI(220, 222, 316),\n    COL_TRI(222, 224, 316),\n    COL_TRI(223, 219, 218),\n    COL_TRI(223, 224, 219),\n    COL_TRI(224, 223, 316),\n    COL_TRI(225, 227, 226),\n    COL_TRI(226, 228, 317),\n    COL_TRI(232, 321, 235),\n    COL_TRI(227, 318, 319),\n    COL_TRI(225, 318, 227),\n    COL_TRI(227, 319, 228),\n    COL_TRI(228, 229, 317),\n    COL_TRI(228, 319, 229),\n    COL_TRI(229, 318, 225),\n    COL_TRI(229, 319, 318),\n    COL_TRI(230, 233, 320),\n    COL_TRI(230, 232, 233),\n    COL_TRI(231, 321, 232),\n    COL_TRI(231, 232, 230),\n    COL_TRI(232, 235, 233),\n    COL_TRI(48, 2, 37),\n    COL_TRI(233, 235, 320),\n    COL_TRI(234, 321, 231),\n    COL_TRI(234, 235, 321),\n    COL_TRI(235, 234, 320),\n    COL_TRI(1, 6, 3),\n    COL_TRI(1, 5, 6),\n    COL_TRI(37, 2, 4),\n    COL_TRI(37, 4, 38),\n    COL_TRI(49, 324, 322),\n    COL_TRI(48, 0, 2),\n    COL_TRI(38, 4, 7),\n    COL_TRI(38, 7, 39),\n    COL_TRI(39, 0, 48),\n    COL_TRI(39, 7, 0),\n    COL_TRI(49, 322, 46),\n    COL_TRI(46, 323, 36),\n    COL_TRI(46, 322, 323),\n    COL_TRI(36, 323, 325),\n    COL_TRI(36, 325, 47),\n    COL_TRI(47, 324, 49),\n    COL_TRI(47, 325, 324),\n    COL_TRI(236, 238, 239),\n    COL_TRI(237, 238, 236),\n    COL_TRI(236, 239, 326),\n    COL_TRI(238, 327, 239),\n    COL_TRI(238, 328, 327),\n    COL_TRI(237, 328, 238),\n    COL_TRI(239, 329, 326),\n    COL_TRI(239, 327, 329),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 45),\n    COL_TRI(17, 19, 18),\n    COL_TRI(8, 9, 10),\n    COL_TRI(10, 11, 12),\n    COL_TRI(9, 13, 10),\n    COL_TRI(10, 13, 11),\n    COL_TRI(8, 14, 9),\n    COL_TRI(9, 14, 15),\n    COL_TRI(9, 15, 13),\n    COL_TRI(16, 17, 18),\n    COL_TRI(8, 16, 18),\n    COL_TRI(8, 18, 14),\n    COL_TRI(18, 15, 14),\n    COL_TRI(19, 15, 18),\n    COL_TRI(20, 40, 19),\n    COL_TRI(20, 19, 17),\n    COL_TRI(16, 20, 17),\n    COL_TRI(21, 40, 22),\n    COL_TRI(22, 40, 20),\n    COL_TRI(21, 41, 40),\n    COL_TRI(16, 23, 22),\n    COL_TRI(16, 22, 20),\n    COL_TRI(23, 21, 22),\n    COL_TRI(24, 41, 21),\n    COL_TRI(25, 24, 21),\n    COL_TRI(23, 25, 21),\n    COL_TRI(26, 27, 42),\n    COL_TRI(27, 29, 42),\n    COL_TRI(27, 28, 29),\n    COL_TRI(28, 30, 29),\n    COL_TRI(29, 43, 42),\n    COL_TRI(30, 43, 29),\n    COL_TRI(37, 36, 47),\n    COL_TRI(30, 44, 43),\n    COL_TRI(31, 42, 43),\n    COL_TRI(32, 45, 35),\n    COL_TRI(33, 45, 32),\n    COL_TRI(34, 45, 33),\n    COL_TRI(35, 45, 34),\n    COL_TRI(36, 37, 38),\n    COL_TRI(36, 38, 46),\n    COL_TRI(39, 47, 49),\n    COL_TRI(37, 47, 48),\n    COL_TRI(38, 39, 49),\n    COL_TRI(38, 49, 46),\n    COL_TRI(39, 48, 47),\n    COL_TRI_INIT(SURFACE_WALL_MISC, 8),\n    COL_TRI(0, 1, 2),\n    COL_TRI(2, 1, 3),\n    COL_TRI(2, 3, 4),\n    COL_TRI(0, 5, 1),\n    COL_TRI(4, 3, 6),\n    COL_TRI(4, 6, 7),\n    COL_TRI(7, 6, 5),\n    COL_TRI(7, 5, 0),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(1),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_null_start, /*pos*/ -6750, 1126, 1482, /*yaw*/ 64), // unused, probably an early way to set initial position\n    COL_WATER_BOX_INIT(3),\n    COL_WATER_BOX(0, -6304, -669, 7992, 7814, 1024),\n    COL_WATER_BOX(1, 4433, -4253, 5969, -669, -3016),\n    COL_WATER_BOX(51, -7818, -1125, 9055, 7814, 1229),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/jrb/areas/1/geo.inc.c",
    "content": "// 0x0E000A18\nconst GeoLayout jrb_geo_000A18[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND(BACKGROUND_ABOVE_CLOUDS, geo_skybox_main),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 25000, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(16, 0, 2000, 6000, 0, 0, 0, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_ALPHA, jrb_seg7_dl_07002FD0),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, jrb_seg7_dl_07004940),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, jrb_seg7_dl_07004C78),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, jrb_seg7_dl_070058C8),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, jrb_seg7_dl_070069B0),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, jrb_seg7_dl_07007570),\n                    GEO_DISPLAY_LIST(LAYER_ALPHA, jrb_seg7_dl_07007718),\n                    GEO_ASM(   0, geo_movtex_pause_control),\n                    GEO_ASM(0x1201, geo_movtex_draw_water_regions),\n                    GEO_ASM(0x1205, geo_movtex_draw_water_regions),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(  14, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_cannon_circle_base),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/jrb/areas/1/macro.inc.c",
    "content": "// 0x0700C4E8 - 0x0700C756\nconst MacroObject jrb_seg7_area_1_macro_objs[] = {\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/ 250, /*pos*/ -6325,  1126,  1730, /*bhvParam*/ DIALOG_060),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_vertical_flying,   /*yaw*/   0, /*pos*/  5060, -4420,   720),\n    MACRO_OBJECT               (/*preset*/ macro_box_metal_cap,               /*yaw*/   0, /*pos*/  2077,  1832,  7465),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_horizontal_flying, /*yaw*/   0, /*pos*/ -1780,  -650,  4200),\n    MACRO_OBJECT               (/*preset*/ macro_floor_switch_hidden_objects, /*yaw*/  45, /*pos*/  2260,  1536,  6854),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_breakable_box,        /*yaw*/  45, /*pos*/  4269,  1336,  4866),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_breakable_box,        /*yaw*/  45, /*pos*/  4128,  1336,  5007),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_breakable_box,        /*yaw*/  45, /*pos*/  3400,  1336,  5155),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_breakable_box,        /*yaw*/  45, /*pos*/  3261,  1336,  5294),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_breakable_box,        /*yaw*/  45, /*pos*/  3120,  1336,  5435),\n    MACRO_OBJECT               (/*preset*/ macro_seaweed_bundle,              /*yaw*/   0, /*pos*/  3551, -5120,  2744),\n    MACRO_OBJECT               (/*preset*/ macro_seaweed_bundle,              /*yaw*/   0, /*pos*/  4201, -5120,  3863),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_horizontal,        /*yaw*/   0, /*pos*/ -2440, -2980, -4120),\n    MACRO_OBJECT               (/*preset*/ macro_box_metal_cap,               /*yaw*/   0, /*pos*/   279, -2600, -7340),\n    MACRO_OBJECT               (/*preset*/ macro_seaweed_bundle,              /*yaw*/   0, /*pos*/  4846, -5119,  1213),\n    MACRO_OBJECT               (/*preset*/ macro_seaweed_bundle,              /*yaw*/   0, /*pos*/  -800, -1023,  4040),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_breakable_box,        /*yaw*/  45, /*pos*/  3621,  1336,  6529),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_breakable_box,        /*yaw*/  45, /*pos*/  3485,  1336,  6665),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_breakable_box,        /*yaw*/  45, /*pos*/  2671,  1336,  6459),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  4900,  1800,  4700),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -2535,  2110,  6113),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -1845, -1003,  3518),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  -546,   530,  5930),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/   648,  -490,  4256),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  3642, -5103,  3175),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  4400,  2200,  1300),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  5400,  2200,  1300),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/ 180, /*pos*/  -900, -2966, -2200, /*bhvParam*/ DIALOG_073),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/  80, /*pos*/ -2552,  1331,  6573, /*bhvParam*/ DIALOG_051),\n    MACRO_OBJECT               (/*preset*/ macro_clam_shell,                  /*yaw*/ 315, /*pos*/ -1800, -1023,  3500),\n    MACRO_OBJECT               (/*preset*/ macro_clam_shell,                  /*yaw*/ 225, /*pos*/  -480,   512,  5980),\n    MACRO_OBJECT               (/*preset*/ macro_clam_shell,                  /*yaw*/ 270, /*pos*/   700,  -511,  4250),\n    MACRO_OBJECT               (/*preset*/ macro_clam_shell,                  /*yaw*/  90, /*pos*/  3600, -5119,  3200),\n    MACRO_OBJECT               (/*preset*/ macro_fish_spawner_few_blue,       /*yaw*/   0, /*pos*/ -2523,  -246,  4676),\n    MACRO_OBJECT               (/*preset*/ macro_fish_spawner_few_blue,       /*yaw*/   0, /*pos*/  5876, -4738,  3476),\n    MACRO_OBJECT               (/*preset*/ macro_blue_coin_switch,            /*yaw*/   0, /*pos*/  6011, -2966, -5511),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/  5900, -2966, -7347),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/  5300, -2966, -7347),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/  4700, -2966, -7347),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/  4100, -2966, -7347),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/  3500, -2966, -7347),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/  2900, -2966, -7347),\n    MACRO_OBJECT               (/*preset*/ macro_goomba_triplet_spawner,      /*yaw*/   0, /*pos*/  3305, -2966, -6147),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_vertical_flying,   /*yaw*/   0, /*pos*/   255,  1160,  7633),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_horizontal_flying, /*yaw*/   0, /*pos*/    51,   960,  2744),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,          /*yaw*/   0, /*pos*/  5060, -4220,   720),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_hidden_1up,                  /*yaw*/   0, /*pos*/  5140, -4380,     0, /*bhvParam*/ 1),\n    MACRO_OBJECT               (/*preset*/ macro_fish_spawner_few_cyan,       /*yaw*/   0, /*pos*/  4072, -4463,  2027),\n    MACRO_OBJECT               (/*preset*/ macro_fish_spawner_few_cyan,       /*yaw*/   0, /*pos*/  -290,   190,  4645),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_cannon_closed,               /*yaw*/   0, /*pos*/ -4235,  1247,  2137, /*bhvParam*/ 0x00),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_breakable_box,        /*yaw*/  45, /*pos*/  2536,  1336,  6594),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,        /*yaw*/  45, /*pos*/  4220,  1536,  5700),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_breakable_box,        /*yaw*/  45, /*pos*/  3987,  1336,  5148),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,        /*yaw*/  45, /*pos*/  3280,  1536,  5940),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,        /*yaw*/  45, /*pos*/  3200,  1536,  6720),\n    MACRO_OBJECT               (/*preset*/ macro_box_metal_cap,               /*yaw*/   0, /*pos*/ -7160,  1340,  2580),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/ 180, /*pos*/ -6910,  1120,  2380, /*bhvParam*/ DIALOG_113),\n    MACRO_OBJECT               (/*preset*/ macro_box_three_coins,             /*yaw*/   0, /*pos*/ -5800,  1340,  -750),\n    MACRO_OBJECT               (/*preset*/ macro_1up,                         /*yaw*/   0, /*pos*/   670,  3000,  3315),\n    MACRO_OBJECT               (/*preset*/ macro_koopa_shell_underwater,      /*yaw*/   0, /*pos*/ -1480, -1000,  4820),\n    MACRO_OBJECT               (/*preset*/ macro_clam_shell,                  /*yaw*/ 180, /*pos*/ -1480, -1040,  4820),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/   0, /*pos*/  5290, -2966, -4740, /*bhvParam*/ DIALOG_169),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/jrb/areas/1/movtext.inc.c",
    "content": "// 0x0700D28C - 0x0700D2AC\nstatic Movtex jrb_movtex_water_data[] = {\n    MOV_TEX_INIT_LOAD(    1),\n    MOV_TEX_ROT_SPEED(   20),\n    MOV_TEX_ROT_SCALE(    6),\n    MOV_TEX_4_BOX_TRIS(-6304,  -669),\n    MOV_TEX_4_BOX_TRIS(-6304,  7814),\n    MOV_TEX_4_BOX_TRIS( 7992,  7814),\n    MOV_TEX_4_BOX_TRIS( 7992,  -669),\n    MOV_TEX_ROT(     ROTATE_COUNTER_CLOCKWISE),\n    MOV_TEX_ALPHA(    0xB4),\n    MOV_TEX_DEFINE(  TEXTURE_JRB_WATER),\n    MOV_TEX_END(),\n};\n\n// 0x0700D2AC - 0x0700D2CC\nstatic Movtex jrb_movtex_ocean_cave_water_data[] = {\n    MOV_TEX_INIT_LOAD(    1),\n    MOV_TEX_ROT_SPEED(   10),\n    MOV_TEX_ROT_SCALE(    2),\n    MOV_TEX_4_BOX_TRIS( 4433, -4253),\n    MOV_TEX_4_BOX_TRIS( 4433,  -669),\n    MOV_TEX_4_BOX_TRIS( 5969,  -669),\n    MOV_TEX_4_BOX_TRIS( 5969, -4253),\n    MOV_TEX_ROT(     ROTATE_COUNTER_CLOCKWISE),\n    MOV_TEX_ALPHA(    0xB4),\n    MOV_TEX_DEFINE(  TEXTURE_JRB_WATER),\n    MOV_TEX_END(),\n};\n\n// 0x0700D2CC\nconst struct MovtexQuadCollection jrb_movtex_water[] = {\n    {0, jrb_movtex_water_data},\n    {1, jrb_movtex_ocean_cave_water_data},\n    {-1, NULL},\n};\n\n// 0x0700D2E4, appears if you enter the course the first time, then it disappears when you collect the \"Plunder in the Sunken Ship\" star\nstatic Movtex jrb_movtex_initial_mist_data[] = {\n    MOV_TEX_INIT_LOAD(    1),\n    MOV_TEX_ROT_SPEED(   20),\n    MOV_TEX_ROT_SCALE(   10),\n    MOV_TEX_4_BOX_TRIS(-7818, -1125),\n    MOV_TEX_4_BOX_TRIS(-7818,  7814),\n    MOV_TEX_4_BOX_TRIS( 9055,  7814),\n    MOV_TEX_4_BOX_TRIS( 9055, -1125),\n    MOV_TEX_ROT(     ROTATE_COUNTER_CLOCKWISE),\n    MOV_TEX_ALPHA(    0x32),\n    MOV_TEX_DEFINE(  TEXTURE_MIST),\n    MOV_TEX_END(),\n};\n\n// 0x0700D304\nconst struct MovtexQuadCollection jrb_movtex_initial_mist[] = {\n    {51, jrb_movtex_initial_mist_data},\n    {-1, NULL},\n};\n"
  },
  {
    "path": "levels/jrb/areas/1/trajectory.inc.c",
    "content": "// 0x0700D20C - 0x0700D23E\nconst Trajectory jrb_seg7_trajectory_unagi_1[] = {\n    TRAJECTORY_POS(0, /*pos*/  5300, -3800,  1200),\n    TRAJECTORY_POS(1, /*pos*/  3700, -3600,  1700),\n    TRAJECTORY_POS(2, /*pos*/  3400, -3400,  3500),\n    TRAJECTORY_POS(3, /*pos*/  3900, -3600,  4400),\n    TRAJECTORY_POS(4, /*pos*/  5300, -3800,  4400),\n    TRAJECTORY_POS(5, /*pos*/  6200, -4000,  2700),\n    TRAJECTORY_END(),\n};\n\n// 0x0700D240 - 0x0700D28A\nconst Trajectory jrb_seg7_trajectory_unagi_2[] = {\n    TRAJECTORY_POS(0, /*pos*/  5381,     0,  2758),\n    TRAJECTORY_POS(1, /*pos*/  5803, -3130,  3036),\n    TRAJECTORY_POS(2, /*pos*/  4876, -3045,  2706),\n    TRAJECTORY_POS(3, /*pos*/  4313, -3246,  2736),\n    TRAJECTORY_POS(4, /*pos*/  3792, -3413,  3668),\n    TRAJECTORY_POS(5, /*pos*/  4971, -3130,  3688),\n    TRAJECTORY_POS(6, /*pos*/  5392, -3130,  3326),\n    TRAJECTORY_POS(7, /*pos*/  6341, -3130,  2450),\n    TRAJECTORY_POS(8, /*pos*/  9431, -3130,  1400),\n    TRAJECTORY_END(),\n};\n"
  },
  {
    "path": "levels/jrb/areas/2/1/model.inc.c",
    "content": "// 0x0700D318 - 0x0700D330\nstatic const Lights1 jrb_seg7_lights_0700D318 = gdSPDefLights1(\n    0x14, 0x30, 0x2c,\n    0x32, 0x78, 0x6e, 0x28, 0x28, 0x28\n);\n\n// 0x0700D330 - 0x0700D348\nstatic const Lights1 jrb_seg7_lights_0700D330 = gdSPDefLights1(\n    0x3c, 0x52, 0x4a,\n    0x97, 0xcd, 0xbb, 0x28, 0x28, 0x28\n);\n\n// 0x0700D348 - 0x0700D360\nstatic const Lights1 jrb_seg7_lights_0700D348 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700D360 - 0x0700D378\nstatic const Lights1 jrb_seg7_lights_0700D360 = gdSPDefLights1(\n    0x50, 0x66, 0x58,\n    0xc8, 0xff, 0xdc, 0x28, 0x28, 0x28\n);\n\n// 0x0700D378 - 0x0700D3F8\nstatic const Vtx jrb_seg7_vertex_0700D378[] = {\n    {{{  1300,   1344,   -995}, 0, {   140,    140}, {0xba, 0x9c, 0xe2, 0xff}}},\n    {{{   968,   1380,  -1083}, 0, {   818,    140}, {0x04, 0x8e, 0xcb, 0xff}}},\n    {{{  1287,   1294,  -1083}, 0, {   140,    140}, {0xaa, 0xc4, 0xb9, 0xff}}},\n    {{{  1226,   1068,   -830}, 0, {   140,    818}, {0xa1, 0x2c, 0xb9, 0xff}}},\n    {{{  1213,   1018,   -918}, 0, {   140,    818}, {0xe0, 0x28, 0x8d, 0xff}}},\n    {{{   908,   1153,   -830}, 0, {   818,    818}, {0x30, 0x12, 0x8d, 0xff}}},\n    {{{   894,   1104,   -919}, 0, {   818,    818}, {0x2d, 0xd4, 0x93, 0xff}}},\n    {{{   981,   1429,   -995}, 0, {   818,    140}, {0x51, 0xa1, 0xed, 0xff}}},\n};\n\n// 0x0700D3F8 - 0x0700D4E8\nstatic const Vtx jrb_seg7_vertex_0700D3F8[] = {\n    {{{  1237,    315,  -2792}, 0, {     0,      0}, {0xa0, 0x3b, 0x38, 0xff}}},\n    {{{   988,    200,  -3096}, 0, {   990,      0}, {0xa0, 0x3b, 0x38, 0xff}}},\n    {{{   896,   -142,  -2891}, 0, {   990,    990}, {0xa0, 0x3b, 0x38, 0xff}}},\n    {{{   796,   1056,   -877}, 0, {   990,    990}, {0xf0, 0xc3, 0x93, 0xff}}},\n    {{{   894,   1104,   -919}, 0, {   818,    818}, {0x2d, 0xd4, 0x93, 0xff}}},\n    {{{  1274,    928,   -877}, 0, {     0,    990}, {0xf0, 0xc3, 0x93, 0xff}}},\n    {{{   907,   1470,  -1125}, 0, {   990,      0}, {0xf0, 0xc3, 0x93, 0xff}}},\n    {{{  1213,   1018,   -918}, 0, {   140,    818}, {0xe0, 0x28, 0x8d, 0xff}}},\n    {{{   968,   1380,  -1083}, 0, {   818,    140}, {0x04, 0x8e, 0xcb, 0xff}}},\n    {{{  1287,   1294,  -1083}, 0, {   140,    140}, {0xaa, 0xc4, 0xb9, 0xff}}},\n    {{{  1385,   1342,  -1125}, 0, {     0,      0}, {0xf0, 0xc3, 0x93, 0xff}}},\n    {{{  -640,   1438,   -882}, 0, {     0,    990}, {0xf0, 0xc3, 0x92, 0xff}}},\n    {{{  -529,   1853,  -1129}, 0, {     0,      0}, {0xf0, 0xc3, 0x92, 0xff}}},\n    {{{   -50,   1725,  -1129}, 0, {   990,      0}, {0xf0, 0xc3, 0x92, 0xff}}},\n    {{{  -162,   1310,   -881}, 0, {   990,    990}, {0xf0, 0xc3, 0x92, 0xff}}},\n};\n\n// 0x0700D4E8 - 0x0700D5D8\nstatic const Vtx jrb_seg7_vertex_0700D4E8[] = {\n    {{{  1509,    885,  -1716}, 0, {   990,      0}, {0x86, 0x20, 0x00, 0xff}}},\n    {{{  1470,    740,  -1156}, 0, {     0,    990}, {0x86, 0x20, 0x00, 0xff}}},\n    {{{  1562,   1083,  -1361}, 0, {     0,      0}, {0x86, 0x20, 0x00, 0xff}}},\n    {{{  1237,    315,  -2792}, 0, {     0,      0}, {0xa0, 0x3b, 0x38, 0xff}}},\n    {{{   896,   -142,  -2891}, 0, {   990,    990}, {0xa0, 0x3b, 0x38, 0xff}}},\n    {{{  1145,    -27,  -2587}, 0, {     0,    990}, {0xa0, 0x3b, 0x38, 0xff}}},\n    {{{  -912,    891,  -2792}, 0, {   990,      0}, {0x71, 0x03, 0x38, 0xff}}},\n    {{{  -846,    324,  -2891}, 0, {     0,    990}, {0x71, 0x03, 0x38, 0xff}}},\n    {{{  -754,    667,  -3096}, 0, {     0,      0}, {0x71, 0x03, 0x38, 0xff}}},\n    {{{ -1004,    548,  -2587}, 0, {   990,    990}, {0x71, 0x03, 0x38, 0xff}}},\n    {{{  1406,    502,  -2403}, 0, {   990,      0}, {0x86, 0x20, 0x00, 0xff}}},\n    {{{  1367,    357,  -1843}, 0, {     0,    990}, {0x86, 0x20, 0x00, 0xff}}},\n    {{{  1459,    700,  -2048}, 0, {     0,      0}, {0x86, 0x20, 0x00, 0xff}}},\n    {{{  1314,    159,  -2198}, 0, {   990,    990}, {0x86, 0x20, 0x00, 0xff}}},\n    {{{  1417,    542,  -1511}, 0, {   990,    990}, {0x86, 0x20, 0x00, 0xff}}},\n};\n\n// 0x0700D5D8 - 0x0700D6D8\nstatic const Vtx jrb_seg7_vertex_0700D5D8[] = {\n    {{{  -873,   1484,    351}, 0, {     0,      0}, {0x7a, 0xe0, 0x00, 0xff}}},\n    {{{  -820,   1681,    706}, 0, {   990,      0}, {0x7a, 0xe0, 0x00, 0xff}}},\n    {{{  -912,   1339,    910}, 0, {   990,    990}, {0x7a, 0xe0, 0x00, 0xff}}},\n    {{{  -913,   1335,  -2048}, 0, {   990,      0}, {0x7a, 0xe0, 0x00, 0xff}}},\n    {{{ -1005,    993,  -1843}, 0, {   990,    990}, {0x7a, 0xe0, 0x00, 0xff}}},\n    {{{ -1058,    795,  -2198}, 0, {     0,    990}, {0x7a, 0xe0, 0x00, 0xff}}},\n    {{{  -966,   1137,  -2403}, 0, {     0,      0}, {0x7a, 0xe0, 0x00, 0xff}}},\n    {{{  -810,   1718,  -1361}, 0, {   990,      0}, {0x7a, 0xe0, 0x00, 0xff}}},\n    {{{  -902,   1376,  -1156}, 0, {   990,    990}, {0x7a, 0xe0, 0x00, 0xff}}},\n    {{{  -863,   1521,  -1716}, 0, {     0,      0}, {0x7a, 0xe0, 0x00, 0xff}}},\n    {{{  -955,   1178,  -1511}, 0, {     0,    990}, {0x7a, 0xe0, 0x00, 0xff}}},\n    {{{ -1006,    989,   -535}, 0, {     0,      0}, {0x7a, 0xe0, 0x00, 0xff}}},\n    {{{  -953,   1187,   -180}, 0, {   990,      0}, {0x7a, 0xe0, 0x00, 0xff}}},\n    {{{ -1097,    646,   -330}, 0, {     0,    990}, {0x7a, 0xe0, 0x00, 0xff}}},\n    {{{ -1044,    844,     24}, 0, {   990,    990}, {0x7a, 0xe0, 0x00, 0xff}}},\n    {{{  -965,   1141,    556}, 0, {     0,    990}, {0x7a, 0xe0, 0x00, 0xff}}},\n};\n\n// 0x0700D6D8 - 0x0700D7C8\nstatic const Vtx jrb_seg7_vertex_0700D6D8[] = {\n    {{{  -741,   1978,   1238}, 0, {     0,      0}, {0x7a, 0xe0, 0x00, 0xff}}},\n    {{{  -688,   2176,   1592}, 0, {   990,      0}, {0x7a, 0xe0, 0x00, 0xff}}},\n    {{{  -780,   1833,   1797}, 0, {   990,    990}, {0x7a, 0xe0, 0x00, 0xff}}},\n    {{{  -833,   1635,   1442}, 0, {     0,    990}, {0x7a, 0xe0, 0x00, 0xff}}},\n    {{{  -608,   2473,   2124}, 0, {     0,      0}, {0x7a, 0xe0, 0x00, 0xff}}},\n    {{{  -555,   2671,   2479}, 0, {   990,      0}, {0x7a, 0xe0, 0x00, 0xff}}},\n    {{{  -647,   2328,   2684}, 0, {   990,    990}, {0x7a, 0xe0, 0x00, 0xff}}},\n    {{{  -700,   2130,   2329}, 0, {     0,    990}, {0x7a, 0xe0, 0x00, 0xff}}},\n    {{{  1815,   2029,   2482}, 0, {     0,      0}, {0x86, 0x20, 0x00, 0xff}}},\n    {{{  1762,   1831,   2128}, 0, {   990,      0}, {0x86, 0x20, 0x00, 0xff}}},\n    {{{  1724,   1687,   2687}, 0, {     0,    990}, {0x86, 0x20, 0x00, 0xff}}},\n    {{{  1418,    546,   -177}, 0, {     0,      0}, {0x86, 0x20, 0x00, 0xff}}},\n    {{{  1273,      5,   -327}, 0, {   990,    990}, {0x86, 0x20, 0x00, 0xff}}},\n    {{{  1326,    203,     27}, 0, {     0,    990}, {0x86, 0x20, 0x00, 0xff}}},\n    {{{  1671,   1489,   2333}, 0, {   990,    990}, {0x86, 0x20, 0x00, 0xff}}},\n};\n\n// 0x0700D7C8 - 0x0700D878\nstatic const Vtx jrb_seg7_vertex_0700D7C8[] = {\n    {{{  1683,   1535,   1596}, 0, {     0,      0}, {0x86, 0x20, 0x00, 0xff}}},\n    {{{  1538,    994,   1446}, 0, {   990,    990}, {0x86, 0x20, 0x00, 0xff}}},\n    {{{  1591,   1192,   1800}, 0, {     0,    990}, {0x86, 0x20, 0x00, 0xff}}},\n    {{{  1630,   1337,   1241}, 0, {   990,      0}, {0x86, 0x20, 0x00, 0xff}}},\n    {{{  1550,   1040,    709}, 0, {     0,      0}, {0x86, 0x20, 0x00, 0xff}}},\n    {{{  1497,    842,    354}, 0, {   990,      0}, {0x86, 0x20, 0x00, 0xff}}},\n    {{{  1406,    500,    559}, 0, {   990,    990}, {0x86, 0x20, 0x00, 0xff}}},\n    {{{  1459,    698,    914}, 0, {     0,    990}, {0x86, 0x20, 0x00, 0xff}}},\n    {{{  1418,    546,   -177}, 0, {     0,      0}, {0x86, 0x20, 0x00, 0xff}}},\n    {{{  1365,    348,   -532}, 0, {   990,      0}, {0x86, 0x20, 0x00, 0xff}}},\n    {{{  1273,      5,   -327}, 0, {   990,    990}, {0x86, 0x20, 0x00, 0xff}}},\n};\n\n// 0x0700D878 - 0x0700D928\nstatic const Vtx jrb_seg7_vertex_0700D878[] = {\n    {{{  -490,    217,   1205}, 0, {   866,    884}, {0x11, 0x42, 0x96, 0xff}}},\n    {{{  -546,    303,   1249}, 0, {   920,    936}, {0x1e, 0x73, 0xd5, 0xff}}},\n    {{{   625,    -10,   1249}, 0, {    56,    936}, {0x19, 0x5e, 0xb0, 0xff}}},\n    {{{  -665,   -351,    154}, 0, {   882,    898}, {0x11, 0x3f, 0x94, 0xff}}},\n    {{{  -705,   -289,    184}, 0, {   920,    936}, {0x1e, 0x73, 0xd5, 0xff}}},\n    {{{  -475,   -351,    184}, 0, {   750,    936}, {0x1c, 0x69, 0xc0, 0xff}}},\n    {{{   693,    536,   2270}, 0, {    84,    884}, {0x11, 0x41, 0x95, 0xff}}},\n    {{{  -331,    811,   2270}, 0, {   840,    884}, {0x11, 0x41, 0x95, 0xff}}},\n    {{{  -387,    897,   2313}, 0, {   894,    936}, {0x19, 0x5d, 0xaf, 0xff}}},\n    {{{   784,    583,   2313}, 0, {    30,    936}, {0x1e, 0x73, 0xd5, 0xff}}},\n    {{{   534,    -56,   1205}, 0, {   110,    884}, {0x11, 0x42, 0x96, 0xff}}},\n};\n\n// 0x0700D928 - 0x0700D968\nstatic const Vtx jrb_seg7_vertex_0700D928[] = {\n    {{{   981,   1429,   -995}, 0, {  2052,   -712}, {0x51, 0xa1, 0xed, 0xff}}},\n    {{{  1300,   1344,   -995}, 0, {   692,   -712}, {0xba, 0x9c, 0xe2, 0xff}}},\n    {{{   908,   1153,   -830}, 0, {  2052,    648}, {0x30, 0x12, 0x8d, 0xff}}},\n    {{{  1226,   1068,   -830}, 0, {   692,    648}, {0xa1, 0x2c, 0xb9, 0xff}}},\n};\n\n// 0x0700D968 - 0x0700DA28\nstatic const Vtx jrb_seg7_vertex_0700D968[] = {\n    {{{  -475,   -351,    184}, 0, {   750,    936}, {0x1c, 0x69, 0xc0, 0xff}}},\n    {{{  -705,   -289,    184}, 0, {   920,    936}, {0x1e, 0x73, 0xd5, 0xff}}},\n    {{{  -463,   -351,    265}, 0, {   742,    990}, {0x20, 0x7a, 0xfc, 0xff}}},\n    {{{  -631,   -306,    265}, 0, {   866,    990}, {0x20, 0x7a, 0xfc, 0xff}}},\n    {{{   784,    583,   2313}, 0, {    30,    936}, {0x1e, 0x73, 0xd5, 0xff}}},\n    {{{  -387,    897,   2313}, 0, {   894,    936}, {0x19, 0x5d, 0xaf, 0xff}}},\n    {{{  -313,    880,   2394}, 0, {   840,    990}, {0x20, 0x7a, 0xfc, 0xff}}},\n    {{{   712,    605,   2394}, 0, {    84,    990}, {0x20, 0x7a, 0xfc, 0xff}}},\n    {{{   625,    -10,   1249}, 0, {    56,    936}, {0x19, 0x5e, 0xb0, 0xff}}},\n    {{{  -546,    303,   1249}, 0, {   920,    936}, {0x1e, 0x73, 0xd5, 0xff}}},\n    {{{   553,     12,   1330}, 0, {   110,    990}, {0x20, 0x7a, 0xfb, 0xff}}},\n    {{{  -472,    287,   1330}, 0, {   866,    990}, {0x20, 0x7a, 0xfb, 0xff}}},\n};\n\n// 0x0700DA28 - 0x0700DB28\nstatic const Vtx jrb_seg7_vertex_0700DA28[] = {\n    {{{   822,   -351,    488}, 0, {   360,   4334}, {0xe0, 0x78, 0xe8, 0xff}}},\n    {{{  1217,   1125,   3135}, 0, { 10528,   4334}, {0xbf, 0x52, 0xba, 0xff}}},\n    {{{  1110,   -351,   -333}, 0, { -1884,   2752}, {0xc4, 0x6d, 0xeb, 0xff}}},\n    {{{   885,   1421,   3483}, 0, { 11864,   4334}, {0xed, 0x3c, 0x93, 0xff}}},\n    {{{  1331,   2232,   3522}, 0, { 13472,   1812}, {0xa9, 0x0b, 0xa5, 0xff}}},\n    {{{  1695,   1539,   2833}, 0, { 10528,   2324}, {0x90, 0x2f, 0xdc, 0xff}}},\n    {{{   668,   1534,  -1125}, 0, {   532,  -1438}, {0xf0, 0xc3, 0x93, 0xff}}},\n    {{{    23,   1041,   -753}, 0, {  2180,   1032}, {0xf0, 0xc3, 0x93, 0xff}}},\n    {{{   189,   1663,  -1125}, 0, {  2180,  -1438}, {0xf0, 0xc3, 0x93, 0xff}}},\n    {{{   502,    912,   -753}, 0, {   532,   1032}, {0xf0, 0xc3, 0x93, 0xff}}},\n    {{{  1458,    656,   -753}, 0, { -2752,  -3052}, {0xff, 0xf9, 0x82, 0xff}}},\n    {{{  1274,    928,   -877}, 0, { -1928,  -3878}, {0xf0, 0xc3, 0x93, 0xff}}},\n    {{{  1385,   1342,  -1125}, 0, { -1928,  -5526}, {0xf0, 0xc3, 0x93, 0xff}}},\n    {{{  1653,   1382,  -1187}, 0, { -2752,  -5938}, {0xb5, 0xb1, 0xc0, 0xff}}},\n    {{{   907,   1470,  -1125}, 0, {  -280,  -5526}, {0xf0, 0xc3, 0x93, 0xff}}},\n    {{{   668,   1534,  -1125}, 0, {   536,  -5526}, {0xf0, 0xc3, 0x93, 0xff}}},\n};\n\n// 0x0700DB28 - 0x0700DC08\nstatic const Vtx jrb_seg7_vertex_0700DB28[] = {\n    {{{  1653,   1382,  -1187}, 0, { -2752,  -5938}, {0xb5, 0xb1, 0xc0, 0xff}}},\n    {{{   668,   1534,  -1125}, 0, {   536,  -5526}, {0xf0, 0xc3, 0x93, 0xff}}},\n    {{{  -739,   2023,  -1187}, 0, {  5484,  -5938}, {0x2c, 0xa1, 0xb9, 0xff}}},\n    {{{   796,   1056,   -877}, 0, {  -280,  -3878}, {0xf0, 0xc3, 0x93, 0xff}}},\n    {{{  1274,    928,   -877}, 0, { -1928,  -3878}, {0xf0, 0xc3, 0x93, 0xff}}},\n    {{{  1458,    656,   -753}, 0, { -2752,  -3052}, {0xff, 0xf9, 0x82, 0xff}}},\n    {{{   907,   1470,  -1125}, 0, {  -280,  -5526}, {0xf0, 0xc3, 0x93, 0xff}}},\n    {{{   502,    912,   -753}, 0, {   536,  -3052}, {0xf0, 0xc3, 0x93, 0xff}}},\n    {{{   189,   1663,  -1125}, 0, {  2188,  -5526}, {0xf0, 0xc3, 0x93, 0xff}}},\n    {{{  -934,   1297,   -753}, 0, {  5484,  -3052}, {0xff, 0xf9, 0x82, 0xff}}},\n    {{{    23,   1041,   -753}, 0, {  2188,  -3052}, {0xf0, 0xc3, 0x93, 0xff}}},\n    {{{   482,   2801,   3605}, 0, {  2228,  -1042}, {0xff, 0xd4, 0x8a, 0xff}}},\n    {{{  1180,   2762,   3522}, 0, {   -48,  -1592}, {0xcb, 0xdd, 0x93, 0xff}}},\n    {{{   983,   2666,   3605}, 0, {   500,  -1042}, {0xea, 0xe1, 0x87, 0xff}}},\n};\n\n// 0x0700DC08 - 0x0700DCF8\nstatic const Vtx jrb_seg7_vertex_0700DC08[] = {\n    {{{  -993,   1078,   -765}, 0, {  5484,  -2416}, {0xe1, 0x8a, 0xe0, 0xff}}},\n    {{{  -950,   1237,   -860}, 0, {  5484,  -3052}, {0x08, 0x1f, 0x86, 0xff}}},\n    {{{  1399,    436,   -765}, 0, { -2752,  -2416}, {0xe1, 0x8a, 0xe0, 0xff}}},\n    {{{  1442,    596,   -860}, 0, { -2752,  -3052}, {0x08, 0x1f, 0x86, 0xff}}},\n    {{{   885,   1421,   3483}, 0, {  -252,   2290}, {0xed, 0x3c, 0x93, 0xff}}},\n    {{{   910,   2028,   3699}, 0, {   188,    946}, {0xec, 0x09, 0x84, 0xff}}},\n    {{{  1331,   2232,   3522}, 0, {  -988,   -230}, {0xa9, 0x0b, 0xa5, 0xff}}},\n    {{{   -54,   1673,   3483}, 0, {  2984,   2290}, {0x2d, 0x24, 0x90, 0xff}}},\n    {{{   226,   2211,   3699}, 0, {  2540,    946}, {0x1d, 0xff, 0x85, 0xff}}},\n    {{{   482,   2801,   3605}, 0, {  2228,  -1042}, {0xff, 0xd4, 0x8a, 0xff}}},\n    {{{   983,   2666,   3605}, 0, {   500,  -1042}, {0xea, 0xe1, 0x87, 0xff}}},\n    {{{  1180,   2762,   3522}, 0, {   -48,  -1592}, {0xcb, 0xdd, 0x93, 0xff}}},\n    {{{  1478,   2782,   3194}, 0, {  -988,  -2416}, {0x9e, 0xb5, 0xe5, 0xff}}},\n    {{{   359,   2982,   3522}, 0, {  2776,  -1592}, {0x1c, 0xc7, 0x93, 0xff}}},\n    {{{   415,   3189,   3398}, 0, {  2776,  -2416}, {0x12, 0xa3, 0xad, 0xff}}},\n};\n\n// 0x0700DCF8 - 0x0700DDD8\nstatic const Vtx jrb_seg7_vertex_0700DCF8[] = {\n    {{{  1331,   2232,   3522}, 0, { 13472,   1812}, {0xa9, 0x0b, 0xa5, 0xff}}},\n    {{{  1876,   2217,   2428}, 0, { 10528,   -372}, {0x98, 0xba, 0x12, 0xff}}},\n    {{{  1695,   1539,   2833}, 0, { 10528,   2324}, {0x90, 0x2f, 0xdc, 0xff}}},\n    {{{  1478,   2782,   3194}, 0, { 13472,   -372}, {0x9e, 0xb5, 0xe5, 0xff}}},\n    {{{  1263,    -72,  -1679}, 0, { -5248,   -372}, {0xa3, 0x54, 0xf0, 0xff}}},\n    {{{  1188,   -351,   -556}, 0, { -2492,   2324}, {0xaf, 0x61, 0xf9, 0xff}}},\n    {{{  1110,   -351,   -333}, 0, { -1884,   2752}, {0xc4, 0x6d, 0xeb, 0xff}}},\n    {{{   226,   2211,   3699}, 0, {  2540,    946}, {0x1d, 0xff, 0x85, 0xff}}},\n    {{{   -54,   1673,   3483}, 0, {  2984,   2290}, {0x2d, 0x24, 0x90, 0xff}}},\n    {{{   -36,   2599,   3522}, 0, {  3720,   -230}, {0x47, 0xdd, 0x9d, 0xff}}},\n    {{{   482,   2801,   3605}, 0, {  2228,  -1042}, {0xff, 0xd4, 0x8a, 0xff}}},\n    {{{   415,   3189,   3398}, 0, {  2776,  -2416}, {0x12, 0xa3, 0xad, 0xff}}},\n    {{{   359,   2982,   3522}, 0, {  2776,  -1592}, {0x1c, 0xc7, 0x93, 0xff}}},\n    {{{   111,   3148,   3194}, 0, {  3720,  -2416}, {0x1d, 0x85, 0x0b, 0xff}}},\n};\n\n// 0x0700DDD8 - 0x0700DED8\nstatic const Vtx jrb_seg7_vertex_0700DDD8[] = {\n    {{{   111,   3148,   3194}, 0, { 13472,   -372}, {0x1d, 0x85, 0x0b, 0xff}}},\n    {{{   -36,   2599,   3522}, 0, { 13472,   1812}, {0x47, 0xdd, 0x9d, 0xff}}},\n    {{{  -697,   2180,   2833}, 0, { 10528,   2324}, {0x77, 0xf1, 0xd9, 0xff}}},\n    {{{   -54,   1673,   3483}, 0, { 11864,   4334}, {0x2d, 0x24, 0x90, 0xff}}},\n    {{{  -491,   1583,   3135}, 0, { 10528,   4334}, {0x64, 0x1e, 0xb9, 0xff}}},\n    {{{ -1054,   -351,   -502}, 0, { -3300,   4086}, {0x5c, 0x54, 0xe8, 0xff}}},\n    {{{ -1009,   -351,   -332}, 0, { -2792,   4334}, {0x41, 0x67, 0xde, 0xff}}},\n    {{{  1263,    -72,  -1679}, 0, { -5248,   -372}, {0xa3, 0x54, 0xf0, 0xff}}},\n    {{{  1188,   -351,  -1513}, 0, { -5248,    734}, {0xb4, 0x61, 0x1b, 0xff}}},\n    {{{  1188,   -351,   -556}, 0, { -2492,   2324}, {0xaf, 0x61, 0xf9, 0xff}}},\n    {{{   844,   -266,  -2190}, 0, { -7208,   -372}, {0xbc, 0x63, 0x27, 0xff}}},\n    {{{  1478,   2782,   3194}, 0, {  -988,  -2416}, {0x9e, 0xb5, 0xe5, 0xff}}},\n    {{{  1180,   2762,   3522}, 0, {   -48,  -1592}, {0xcb, 0xdd, 0x93, 0xff}}},\n    {{{  1235,   2969,   3398}, 0, {   -48,  -2416}, {0xcc, 0x98, 0xce, 0xff}}},\n    {{{   482,   2801,   3605}, 0, {  2228,  -1042}, {0xff, 0xd4, 0x8a, 0xff}}},\n    {{{   415,   3189,   3398}, 0, {  2776,  -2416}, {0x12, 0xa3, 0xad, 0xff}}},\n};\n\n// 0x0700DED8 - 0x0700DFD8\nstatic const Vtx jrb_seg7_vertex_0700DED8[] = {\n    {{{   111,   3148,   3194}, 0, { 13472,   -372}, {0x1d, 0x85, 0x0b, 0xff}}},\n    {{{  -697,   2180,   2833}, 0, { 10528,   2324}, {0x77, 0xf1, 0xd9, 0xff}}},\n    {{{  -515,   2858,   2428}, 0, { 10528,   -374}, {0x25, 0x8d, 0x25, 0xff}}},\n    {{{ -1129,    568,  -1679}, 0, { -5248,   -372}, {0x7e, 0x0e, 0xfe, 0xff}}},\n    {{{ -1311,   -110,  -1274}, 0, { -5248,   2324}, {0x7c, 0x0b, 0x17, 0xff}}},\n    {{{ -1228,   -351,  -1152}, 0, { -5248,   3134}, {0x69, 0x45, 0xf6, 0xff}}},\n    {{{ -1054,   -351,   -502}, 0, { -3300,   4086}, {0x5c, 0x54, 0xe8, 0xff}}},\n    {{{  -864,    191,  -2190}, 0, { -7208,   -372}, {0x69, 0x42, 0x19, 0xff}}},\n    {{{ -1071,   -351,  -1741}, 0, { -6876,   2038}, {0x15, 0x7c, 0x09, 0xff}}},\n    {{{  -560,    -42,  -2445}, 0, {  3128,  -2416}, {0x3c, 0x6d, 0x18, 0xff}}},\n    {{{   455,   -351,  -2425}, 0, {  -396,  -2280}, {0xf9, 0x68, 0x47, 0xff}}},\n    {{{   464,   -317,  -2445}, 0, {  -396,  -2416}, {0xf9, 0x7c, 0x15, 0xff}}},\n    {{{  -643,   -351,  -2261}, 0, {  3128,  -1188}, {0x21, 0x6a, 0x3c, 0xff}}},\n    {{{  -864,    191,  -2190}, 0, {  4308,  -2416}, {0x69, 0x42, 0x19, 0xff}}},\n    {{{  -716,   -351,  -2182}, 0, {  3364,  -1002}, {0x45, 0x54, 0x40, 0xff}}},\n    {{{   759,   -351,  -2188}, 0, { -1372,  -2114}, {0xd4, 0x67, 0x39, 0xff}}},\n};\n\n// 0x0700DFD8 - 0x0700E0C8\nstatic const Vtx jrb_seg7_vertex_0700DFD8[] = {\n    {{{   759,   -351,  -2188}, 0, { -1372,  -2114}, {0xd4, 0x67, 0x39, 0xff}}},\n    {{{   844,   -266,  -2190}, 0, { -1576,  -2416}, {0xbc, 0x63, 0x27, 0xff}}},\n    {{{   464,   -317,  -2445}, 0, {  -396,  -2416}, {0xf9, 0x7c, 0x15, 0xff}}},\n    {{{  -739,   2023,  -1187}, 0, { -1324,  -3894}, {0x2c, 0xa1, 0xb9, 0xff}}},\n    {{{ -1205,    283,  -2190}, 0, { -7208,   -372}, {0x75, 0x2a, 0xed, 0xff}}},\n    {{{  -968,   1168,  -2719}, 0, { -7208,  -3894}, {0x3f, 0xae, 0x48, 0xff}}},\n    {{{  -976,   1137,   -658}, 0, { -1324,   -372}, {0x7a, 0xe0, 0x00, 0xff}}},\n    {{{  -703,    792,  -3230}, 0, {  4308,  -5938}, {0x19, 0xbd, 0x68, 0xff}}},\n    {{{  -940,    -93,  -2701}, 0, {  4308,  -2416}, {0x5a, 0x59, 0x05, 0xff}}},\n    {{{  -617,   -255,  -2828}, 0, {  3128,  -2416}, {0x37, 0x65, 0x34, 0xff}}},\n    {{{  1188,   -351,  -2194}, 0, { -7208,   -398}, {0xa2, 0x53, 0x0b, 0xff}}},\n    {{{  1653,   1382,  -1187}, 0, { -1324,  -3894}, {0xb5, 0xb1, 0xc0, 0xff}}},\n    {{{  1424,    527,  -2719}, 0, { -7208,  -3894}, {0xa0, 0xd9, 0x48, 0xff}}},\n    {{{  1415,    496,   -658}, 0, { -1324,   -372}, {0x86, 0x20, 0x00, 0xff}}},\n    {{{  1188,   -351,  -2178}, 0, { -7164,   -372}, {0xe4, 0x7a, 0xed, 0xff}}},\n};\n\n// 0x0700E0C8 - 0x0700E1C8\nstatic const Vtx jrb_seg7_vertex_0700E0C8[] = {\n    {{{  1005,    334,  -3230}, 0, { -9172,  -3894}, {0xbd, 0xe2, 0x67, 0xff}}},\n    {{{   822,   -351,  -2820}, 0, { -9172,  -1168}, {0xc6, 0x57, 0x47, 0xff}}},\n    {{{  1424,    527,  -2719}, 0, { -7208,  -3894}, {0xa0, 0xd9, 0x48, 0xff}}},\n    {{{  1188,   -351,  -2194}, 0, { -7208,   -398}, {0xa2, 0x53, 0x0b, 0xff}}},\n    {{{  -703,    792,  -3230}, 0, {  4308,  -5938}, {0x19, 0xbd, 0x68, 0xff}}},\n    {{{  -617,   -255,  -2828}, 0, {  3128,  -2416}, {0x37, 0x65, 0x34, 0xff}}},\n    {{{  -380,    629,  -3358}, 0, {  3128,  -5938}, {0x14, 0x1e, 0x79, 0xff}}},\n    {{{  -262,   -351,  -2828}, 0, {  1904,  -2416}, {0x19, 0x7c, 0x06, 0xff}}},\n    {{{   455,   -351,  -2936}, 0, {  -400,  -3130}, {0x00, 0x73, 0x34, 0xff}}},\n    {{{   645,    354,  -3358}, 0, {  -400,  -5938}, {0xe3, 0xfd, 0x7b, 0xff}}},\n    {{{   822,   -351,  -2820}, 0, { -1576,  -3212}, {0xc6, 0x57, 0x47, 0xff}}},\n    {{{  1005,    334,  -3230}, 0, { -1576,  -5938}, {0xbd, 0xe2, 0x67, 0xff}}},\n    {{{  -968,   1168,  -2719}, 0, { -7208,  -3894}, {0x3f, 0xae, 0x48, 0xff}}},\n    {{{  -940,    -93,  -2701}, 0, { -9172,   -372}, {0x5a, 0x59, 0x05, 0xff}}},\n    {{{  -703,    792,  -3230}, 0, { -9172,  -3894}, {0x19, 0xbd, 0x68, 0xff}}},\n    {{{ -1205,    283,  -2190}, 0, { -7208,   -372}, {0x75, 0x2a, 0xed, 0xff}}},\n};\n\n// 0x0700E1C8 - 0x0700E298\nstatic const Vtx jrb_seg7_vertex_0700E1C8[] = {\n    {{{  -864,    191,  -2190}, 0, { -7208,   -372}, {0x69, 0x42, 0x19, 0xff}}},\n    {{{ -1071,   -351,  -1741}, 0, { -6876,   2038}, {0x15, 0x7c, 0x09, 0xff}}},\n    {{{ -1009,   -351,  -1865}, 0, { -7208,   1784}, {0x58, 0x43, 0x3c, 0xff}}},\n    {{{  -864,    191,  -2190}, 0, {  4308,  -2416}, {0x69, 0x42, 0x19, 0xff}}},\n    {{{ -1009,   -351,  -1865}, 0, {  4308,   -258}, {0x58, 0x43, 0x3c, 0xff}}},\n    {{{  -716,   -351,  -2182}, 0, {  3364,  -1002}, {0x45, 0x54, 0x40, 0xff}}},\n    {{{   822,   -351,  -2139}, 0, { -1576,  -2078}, {0xd1, 0x6e, 0x28, 0xff}}},\n    {{{   844,   -266,  -2190}, 0, { -1576,  -2416}, {0xbc, 0x63, 0x27, 0xff}}},\n    {{{   759,   -351,  -2188}, 0, { -1372,  -2114}, {0xd4, 0x67, 0x39, 0xff}}},\n    {{{  1188,   -351,  -1513}, 0, { -5248,    734}, {0xb4, 0x61, 0x1b, 0xff}}},\n    {{{   844,   -266,  -2190}, 0, { -7208,   -372}, {0xbc, 0x63, 0x27, 0xff}}},\n    {{{   886,   -351,  -2029}, 0, { -6864,    100}, {0xc8, 0x6c, 0x21, 0xff}}},\n    {{{   822,   -351,  -2139}, 0, { -7208,    -34}, {0xd1, 0x6e, 0x28, 0xff}}},\n};\n\n// 0x0700E298 - 0x0700E398\nstatic const Vtx jrb_seg7_vertex_0700E298[] = {\n    {{{  1876,   2217,   2428}, 0, {  7736,  -3466}, {0x98, 0xba, 0x12, 0xff}}},\n    {{{  1478,   2782,   3194}, 0, { 10188,  -1994}, {0x9e, 0xb5, 0xe5, 0xff}}},\n    {{{   111,   3148,   3194}, 0, { 10188,   1928}, {0x1d, 0x85, 0x0b, 0xff}}},\n    {{{   885,   1421,   3483}, 0, { -3408,   1862}, {0xed, 0x3c, 0x93, 0xff}}},\n    {{{  1217,   1125,   3135}, 0, { -2072,   3188}, {0xbf, 0x52, 0xba, 0xff}}},\n    {{{   836,   1068,   3224}, 0, { -2072,   2010}, {0x02, 0x62, 0xb0, 0xff}}},\n    {{{  -643,   -351,    185}, 0, {  9600,  -1520}, {0x1d, 0x75, 0xd9, 0xff}}},\n    {{{  -189,   1343,   3224}, 0, { -2072,  -1520}, {0x33, 0x50, 0xad, 0xff}}},\n    {{{   455,   -351,    678}, 0, {  7704,   2010}, {0xfa, 0x79, 0xdb, 0xff}}},\n    {{{   822,   -351,    488}, 0, {  8096,   3188}, {0xe0, 0x78, 0xe8, 0xff}}},\n    {{{   -54,   1673,   3483}, 0, { -3408,  -1372}, {0x2d, 0x24, 0x90, 0xff}}},\n    {{{  -491,   1583,   3135}, 0, { -2072,  -2698}, {0x64, 0x1e, 0xb9, 0xff}}},\n    {{{ -1009,   -351,   -332}, 0, { 11248,  -2696}, {0x41, 0x67, 0xde, 0xff}}},\n    {{{  1235,   2969,   3398}, 0, { 10840,  -1210}, {0xcc, 0x98, 0xce, 0xff}}},\n    {{{   415,   3189,   3398}, 0, { 10840,   1144}, {0x12, 0xa3, 0xad, 0xff}}},\n    {{{  -515,   2858,   2428}, 0, {  7736,   3400}, {0x25, 0x8d, 0x25, 0xff}}},\n};\n\n// 0x0700E398 - 0x0700E458\nstatic const Vtx jrb_seg7_vertex_0700E398[] = {\n    {{{  1876,   2217,   2428}, 0, {  7736,  -3466}, {0x98, 0xba, 0x12, 0xff}}},\n    {{{  -515,   2858,   2428}, 0, {  7736,   3400}, {0x25, 0x8d, 0x25, 0xff}}},\n    {{{  1399,    436,   -765}, 0, {  -436,  -3466}, {0xe1, 0x8a, 0xe0, 0xff}}},\n    {{{  -993,   1078,   -765}, 0, {  -436,   3400}, {0xe1, 0x8a, 0xe0, 0xff}}},\n    {{{  1424,    527,  -2719}, 0, { -5344,  -3466}, {0xa0, 0xd9, 0x48, 0xff}}},\n    {{{  -968,   1168,  -2719}, 0, { -5344,   3400}, {0x3f, 0xae, 0x48, 0xff}}},\n    {{{  -703,    792,  -3230}, 0, { -6976,   2418}, {0x19, 0xbd, 0x68, 0xff}}},\n    {{{  1653,   1382,  -1187}, 0, {  -436,  -3466}, {0xb5, 0xb1, 0xc0, 0xff}}},\n    {{{   645,    354,  -3358}, 0, { -7388,  -1504}, {0xe3, 0xfd, 0x7b, 0xff}}},\n    {{{  1005,    334,  -3230}, 0, { -6976,  -2486}, {0xbd, 0xe2, 0x67, 0xff}}},\n    {{{  -380,    629,  -3358}, 0, { -7388,   1438}, {0x14, 0x1e, 0x79, 0xff}}},\n    {{{  -739,   2023,  -1187}, 0, {  -436,   3400}, {0x2c, 0xa1, 0xb9, 0xff}}},\n};\n\n// 0x0700E458 - 0x0700E518\nstatic const Vtx jrb_seg7_vertex_0700E458[] = {\n    {{{  -262,   -351,  -2828}, 0, {   540,    788}, {0x19, 0x7c, 0x06, 0xff}}},\n    {{{   464,   -317,  -2445}, 0, {  2012,  -1520}, {0xf9, 0x7c, 0x15, 0xff}}},\n    {{{  1162,   -351,  -2190}, 0, {  2992,  -3790}, {0x13, 0x75, 0xd5, 0xff}}},\n    {{{  -560,    -42,  -2445}, 0, {  2012,   2010}, {0x3c, 0x6d, 0x18, 0xff}}},\n    {{{   844,   -266,  -2190}, 0, {  2992,  -2698}, {0xbc, 0x63, 0x27, 0xff}}},\n    {{{  1263,    -72,  -1679}, 0, {  4956,  -3874}, {0xa3, 0x54, 0xf0, 0xff}}},\n    {{{  1188,   -351,  -2178}, 0, {  3040,  -3876}, {0xe4, 0x7a, 0xed, 0xff}}},\n    {{{ -1205,    283,  -2190}, 0, {  2992,   4364}, {0x75, 0x2a, 0xed, 0xff}}},\n    {{{ -1129,    568,  -1679}, 0, {  4956,   4364}, {0x7e, 0x0e, 0xfe, 0xff}}},\n    {{{  -864,    191,  -2190}, 0, {  2992,   3186}, {0x69, 0x42, 0x19, 0xff}}},\n    {{{  -940,    -93,  -2701}, 0, {  1032,   3186}, {0x5a, 0x59, 0x05, 0xff}}},\n    {{{  -617,   -255,  -2828}, 0, {   540,   2010}, {0x37, 0x65, 0x34, 0xff}}},\n};\n\n// 0x0700E518 - 0x0700E558\nstatic const Vtx jrb_seg7_vertex_0700E518[] = {\n    {{{  -950,   1237,   -860}, 0, {   992,   5142}, {0x08, 0x1f, 0x86, 0xff}}},\n    {{{  1458,    656,   -753}, 0, {  1404,  -3098}, {0xff, 0xf9, 0x82, 0xff}}},\n    {{{  1442,    596,   -860}, 0, {   988,  -3098}, {0x08, 0x1f, 0x86, 0xff}}},\n    {{{  -934,   1297,   -753}, 0, {  1404,   5142}, {0xff, 0xf9, 0x82, 0xff}}},\n};\n\n// 0x0700E558 - 0x0700E658\nstatic const Vtx jrb_seg7_vertex_0700E558[] = {\n    {{{ -1071,   -351,  -1741}, 0, {  2612,    836}, {0x15, 0x7c, 0x09, 0xff}}},\n    {{{  1110,   -351,   -333}, 0, {  -200,   -340}, {0xc4, 0x6d, 0xeb, 0xff}}},\n    {{{  1188,   -351,   -556}, 0, {  -348,   -190}, {0xaf, 0x61, 0xf9, 0xff}}},\n    {{{   455,   -351,    678}, 0, {   892,   -992}, {0xfa, 0x79, 0xdb, 0xff}}},\n    {{{   822,   -351,    488}, 0, {   344,   -890}, {0xe0, 0x78, 0xe8, 0xff}}},\n    {{{  -643,   -351,    185}, 0, {  2344,   -552}, {0x1d, 0x75, 0xd9, 0xff}}},\n    {{{ -1009,   -351,   -332}, 0, {  2768,   -156}, {0x41, 0x67, 0xde, 0xff}}},\n    {{{ -1054,   -351,   -502}, 0, {  2800,    -34}, {0x5c, 0x54, 0xe8, 0xff}}},\n    {{{ -1228,   -351,  -1152}, 0, {  2932,    436}, {0x69, 0x45, 0xf6, 0xff}}},\n    {{{   759,   -351,  -2188}, 0, {     0,    990}, {0xd4, 0x67, 0x39, 0xff}}},\n    {{{   455,   -351,  -2425}, 0, {   352,   1180}, {0xf9, 0x68, 0x47, 0xff}}},\n    {{{   822,   -351,  -2139}, 0, {  -108,    950}, {0xd1, 0x6e, 0x28, 0xff}}},\n    {{{   886,   -351,  -2029}, 0, {  -180,    868}, {0xc8, 0x6c, 0x21, 0xff}}},\n    {{{  1188,   -351,  -1513}, 0, {  -512,    480}, {0xb4, 0x61, 0x1b, 0xff}}},\n    {{{  -643,   -351,  -2261}, 0, {  1920,   1160}, {0x21, 0x6a, 0x3c, 0xff}}},\n    {{{  -716,   -351,  -2182}, 0, {  2036,   1112}, {0x45, 0x54, 0x40, 0xff}}},\n};\n\n// 0x0700E658 - 0x0700E6E8\nstatic const Vtx jrb_seg7_vertex_0700E658[] = {\n    {{{ -1071,   -351,  -1741}, 0, {  2612,    836}, {0x15, 0x7c, 0x09, 0xff}}},\n    {{{  -716,   -351,  -2182}, 0, {  2036,   1112}, {0x45, 0x54, 0x40, 0xff}}},\n    {{{ -1009,   -351,  -1865}, 0, {  2500,    918}, {0x58, 0x43, 0x3c, 0xff}}},\n    {{{   455,   -351,  -2936}, 0, {   264,   1538}, {0x00, 0x73, 0x34, 0xff}}},\n    {{{  1162,   -351,  -2190}, 0, {  -592,    956}, {0x13, 0x75, 0xd5, 0xff}}},\n    {{{  1188,   -351,  -2178}, 0, {  -628,    946}, {0xe4, 0x7a, 0xed, 0xff}}},\n    {{{  1188,   -351,  -2194}, 0, {  -632,    956}, {0xa2, 0x53, 0x0b, 0xff}}},\n    {{{   822,   -351,  -2820}, 0, {  -224,   1426}, {0xc6, 0x57, 0x47, 0xff}}},\n    {{{  -262,   -351,  -2828}, 0, {  1288,   1524}, {0x19, 0x7c, 0x06, 0xff}}},\n};\n\n// 0x0700E6E8 - 0x0700E8C8\nstatic const Gfx jrb_seg7_dl_0700E6E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&jrb_seg7_lights_0700D318.l, 1),\n    gsSPLight(&jrb_seg7_lights_0700D318.a, 2),\n    gsSPVertex(jrb_seg7_vertex_0700D378, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  5,  3,  4, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  7,  6,  1, 0x0),\n    gsSP2Triangles( 7,  5,  6, 0x0,  0,  7,  1, 0x0),\n    gsSPLight(&jrb_seg7_lights_0700D330.l, 1),\n    gsSPLight(&jrb_seg7_lights_0700D330.a, 2),\n    gsSPVertex(jrb_seg7_vertex_0700D3F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  4,  3, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 6,  8,  4, 0x0,  5,  7,  9, 0x0),\n    gsSP2Triangles( 5,  9, 10, 0x0, 10,  8,  6, 0x0),\n    gsSP2Triangles(10,  9,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(jrb_seg7_vertex_0700D4E8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(jrb_seg7_vertex_0700D5D8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(jrb_seg7_vertex_0700D6D8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 9, 14, 10, 0x0),\n    gsSPVertex(jrb_seg7_vertex_0700D7C8, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP1Triangle( 8,  9, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700E8C8 - 0x0700E998\nstatic const Gfx jrb_seg7_dl_0700E8C8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_0900A000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&jrb_seg7_lights_0700D318.l, 1),\n    gsSPLight(&jrb_seg7_lights_0700D318.a, 2),\n    gsSPVertex(jrb_seg7_vertex_0700D878, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP1Triangle(10,  0,  2, 0x0),\n    gsSPLight(&jrb_seg7_lights_0700D330.l, 1),\n    gsSPLight(&jrb_seg7_lights_0700D330.a, 2),\n    gsSPVertex(jrb_seg7_vertex_0700D928, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSPLight(&jrb_seg7_lights_0700D348.l, 1),\n    gsSPLight(&jrb_seg7_lights_0700D348.a, 2),\n    gsSPVertex(jrb_seg7_vertex_0700D968, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700E998 - 0x0700ECB8\nstatic const Gfx jrb_seg7_dl_0700E998[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&jrb_seg7_lights_0700D360.l, 1),\n    gsSPLight(&jrb_seg7_lights_0700D360.a, 2),\n    gsSPVertex(jrb_seg7_vertex_0700DA28, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  5,  2,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP2Triangles(13, 12, 14, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(jrb_seg7_vertex_0700DB28, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  1,  6, 0x0,  3,  7,  1, 0x0),\n    gsSP2Triangles( 1,  8,  2, 0x0,  9,  2,  8, 0x0),\n    gsSP2Triangles( 7,  3,  5, 0x0,  9,  8, 10, 0x0),\n    gsSP1Triangle(11, 12, 13, 0x0),\n    gsSPVertex(jrb_seg7_vertex_0700DC08, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  5,  4, 0x0),\n    gsSP2Triangles( 7,  8,  5, 0x0,  9, 10,  5, 0x0),\n    gsSP2Triangles(11,  5, 10, 0x0, 11,  6,  5, 0x0),\n    gsSP2Triangles( 8,  9,  5, 0x0, 12,  6, 11, 0x0),\n    gsSP1Triangle( 9, 13, 14, 0x0),\n    gsSPVertex(jrb_seg7_vertex_0700DCF8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  2,  1, 0x0,  4,  5,  2, 0x0),\n    gsSP2Triangles( 2,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0, 11, 12,  9, 0x0),\n    gsSP2Triangles(11,  9, 13, 0x0, 12, 10,  9, 0x0),\n    gsSPVertex(jrb_seg7_vertex_0700DDD8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  4,  5,  2, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8,  7, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(14, 15, 13, 0x0, 14, 13, 12, 0x0),\n    gsSPVertex(jrb_seg7_vertex_0700DED8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  5,  1,  6, 0x0),\n    gsSP2Triangles( 5,  4,  1, 0x0,  7,  3,  4, 0x0),\n    gsSP2Triangles( 8,  4,  5, 0x0,  7,  4,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 12, 10, 0x0),\n    gsSP2Triangles( 9, 13, 14, 0x0,  9, 14, 12, 0x0),\n    gsSP1Triangle(15, 11, 10, 0x0),\n    gsSPVertex(jrb_seg7_vertex_0700DFD8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle(10, 14, 13, 0x0),\n    gsSPVertex(jrb_seg7_vertex_0700E0C8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(jrb_seg7_vertex_0700E1C8, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(11, 10, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700ECB8 - 0x0700EE28\nstatic const Gfx jrb_seg7_dl_0700ECB8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_0900A800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(jrb_seg7_vertex_0700E298, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  7,  3,  5, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  5,  4,  8, 0x0),\n    gsSP2Triangles( 4,  9,  8, 0x0, 10,  7, 11, 0x0),\n    gsSP2Triangles( 7, 10,  3, 0x0,  7, 12, 11, 0x0),\n    gsSP2Triangles( 7,  6, 12, 0x0,  1, 13,  2, 0x0),\n    gsSP2Triangles(13, 14,  2, 0x0, 15,  0,  2, 0x0),\n    gsSPVertex(jrb_seg7_vertex_0700E398, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  4,  7, 0x0),\n    gsSP2Triangles( 8,  9,  6, 0x0, 10,  8,  6, 0x0),\n    gsSP2Triangles( 9,  4,  6, 0x0, 11,  5,  7, 0x0),\n    gsSPLight(&jrb_seg7_lights_0700D318.l, 1),\n    gsSPLight(&jrb_seg7_lights_0700D318.a, 2),\n    gsSPVertex(jrb_seg7_vertex_0700E458, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 2,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0,  3, 10,  9, 0x0),\n    gsSP2Triangles( 3, 11, 10, 0x0,  0, 11,  3, 0x0),\n    gsSPLight(&jrb_seg7_lights_0700D348.l, 1),\n    gsSPLight(&jrb_seg7_lights_0700D348.a, 2),\n    gsSPVertex(jrb_seg7_vertex_0700E518, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700EE28 - 0x0700EF00\nstatic const Gfx jrb_seg7_dl_0700EE28[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09002800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&jrb_seg7_lights_0700D360.l, 1),\n    gsSPLight(&jrb_seg7_lights_0700D360.a, 2),\n    gsSPVertex(jrb_seg7_vertex_0700E558, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  5,  3, 0x0,  0,  6,  5, 0x0),\n    gsSP2Triangles( 0,  7,  6, 0x0,  0,  8,  7, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  0,  9, 10, 0x0),\n    gsSP2Triangles( 0, 11,  9, 0x0,  0, 12, 11, 0x0),\n    gsSP2Triangles( 0, 13, 12, 0x0,  0,  2, 13, 0x0),\n    gsSP2Triangles( 0, 10, 14, 0x0,  0, 14, 15, 0x0),\n    gsSPVertex(jrb_seg7_vertex_0700E658, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  3,  5,  6, 0x0),\n    gsSP1Triangle( 3,  8,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700EF00 - 0x0700EF98\nconst Gfx jrb_seg7_dl_0700EF00[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(jrb_seg7_dl_0700E6E8),\n    gsSPDisplayList(jrb_seg7_dl_0700E8C8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(jrb_seg7_dl_0700E998),\n    gsSPDisplayList(jrb_seg7_dl_0700ECB8),\n    gsSPDisplayList(jrb_seg7_dl_0700EE28),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/jrb/areas/2/2/model.inc.c",
    "content": "// 0x0700EF98 - 0x0700EFB0\nstatic const Lights1 jrb_seg7_lights_0700EF98 = gdSPDefLights1(\n    0x3c, 0x66, 0x66,\n    0x96, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700EFB0 - 0x0700F0B0\nstatic const Vtx jrb_seg7_vertex_0700EFB0[] = {\n    {{{   442,   -202,    561}, 0, {     0,      0}, {0x01, 0x00, 0x82, 0xff}}},\n    {{{   288,   -351,    602}, 0, {  1068,    990}, {0xdf, 0x00, 0x86, 0xff}}},\n    {{{   259,   -202,    610}, 0, {  1272,      0}, {0xb5, 0x00, 0x9b, 0xff}}},\n    {{{   758,   -202,    808}, 0, {  -598,      0}, {0x69, 0x00, 0xb9, 0xff}}},\n    {{{   628,   -336,    616}, 0, {   990,    888}, {0x4a, 0x00, 0x9a, 0xff}}},\n    {{{   628,   -202,    616}, 0, {   990,      0}, {0x3d, 0x00, 0x92, 0xff}}},\n    {{{   628,   -202,    616}, 0, {  -280,      0}, {0x3d, 0x00, 0x92, 0xff}}},\n    {{{   628,   -336,    616}, 0, {  -280,    890}, {0x4a, 0x00, 0x9a, 0xff}}},\n    {{{   593,   -351,    606}, 0, {     0,    990}, {0x23, 0x00, 0x87, 0xff}}},\n    {{{   442,   -202,    561}, 0, {  1056,      0}, {0x01, 0x00, 0x82, 0xff}}},\n    {{{   442,   -351,    561}, 0, {  1056,    990}, {0x01, 0x00, 0x82, 0xff}}},\n    {{{   259,   -202,    610}, 0, {     0,      0}, {0xb5, 0x00, 0x9b, 0xff}}},\n    {{{   259,   -338,    610}, 0, {     0,    904}, {0xa0, 0x00, 0xae, 0xff}}},\n    {{{   235,   -202,    827}, 0, {  1470,      0}, {0x82, 0x00, 0xf3, 0xff}}},\n    {{{   442,   -351,    561}, 0, {     0,    990}, {0x01, 0x00, 0x82, 0xff}}},\n    {{{   259,   -338,    610}, 0, {  1272,    904}, {0xa0, 0x00, 0xae, 0xff}}},\n};\n\n// 0x0700F0B0 - 0x0700F190\nstatic const Vtx jrb_seg7_vertex_0700F0B0[] = {\n    {{{  -435,    -74,    621}, 0, {   254,      0}, {0xb0, 0x00, 0x9e, 0xff}}},\n    {{{  -435,   -146,    621}, 0, {   254,    450}, {0xc1, 0x00, 0x92, 0xff}}},\n    {{{  -479,    -74,    721}, 0, {   990,      0}, {0x8c, 0x00, 0xcd, 0xff}}},\n    {{{  -232,    -74,    576}, 0, {  -402,      0}, {0x0e, 0x00, 0x82, 0xff}}},\n    {{{  -232,   -227,    576}, 0, {  -402,    990}, {0x3b, 0x00, 0x90, 0xff}}},\n    {{{  -435,   -146,    621}, 0, {   990,    450}, {0xc1, 0x00, 0x92, 0xff}}},\n    {{{  -435,    -74,    621}, 0, {   990,      0}, {0xb0, 0x00, 0x9e, 0xff}}},\n    {{{   -82,    -74,    736}, 0, {  -476,    -34}, {0x6d, 0x00, 0xc1, 0xff}}},\n    {{{   -82,   -171,    736}, 0, {  -476,    620}, {0x74, 0x00, 0xce, 0xff}}},\n    {{{  -232,   -227,    576}, 0, {   990,    990}, {0x3b, 0x00, 0x90, 0xff}}},\n    {{{  -232,    -74,    576}, 0, {   990,    -34}, {0x0e, 0x00, 0x82, 0xff}}},\n    {{{   -72,    -74,    904}, 0, {  -134,      0}, {0x7e, 0x00, 0xf9, 0xff}}},\n    {{{   -82,   -171,    736}, 0, {   990,    622}, {0x74, 0x00, 0xce, 0xff}}},\n    {{{   -82,    -74,    736}, 0, {   990,      0}, {0x6d, 0x00, 0xc1, 0xff}}},\n};\n\n// 0x0700F190 - 0x0700F270\nstatic const Vtx jrb_seg7_vertex_0700F190[] = {\n    {{{   128,     -4,   1013}, 0, {     0,      0}, {0xba, 0x00, 0x97, 0xff}}},\n    {{{   128,    -62,   1013}, 0, {     0,    514}, {0xc5, 0x00, 0x90, 0xff}}},\n    {{{    70,     -4,   1085}, 0, {   830,      0}, {0x9e, 0x00, 0xb1, 0xff}}},\n    {{{   239,     -4,    980}, 0, {     0,      0}, {0x08, 0x00, 0x82, 0xff}}},\n    {{{   239,   -112,    980}, 0, {     0,    986}, {0x3b, 0x00, 0x90, 0xff}}},\n    {{{   128,    -62,   1013}, 0, {  1064,    514}, {0xc5, 0x00, 0x90, 0xff}}},\n    {{{   128,     -4,   1013}, 0, {  1064,      0}, {0xba, 0x00, 0x97, 0xff}}},\n    {{{   290,     -4,   1038}, 0, {   260,      0}, {0x6d, 0x00, 0xc0, 0xff}}},\n    {{{   290,    -91,   1038}, 0, {   260,    782}, {0x73, 0x00, 0xcb, 0xff}}},\n    {{{   239,   -112,    980}, 0, {   990,    986}, {0x3b, 0x00, 0x90, 0xff}}},\n    {{{   239,     -4,    980}, 0, {   990,      0}, {0x08, 0x00, 0x82, 0xff}}},\n    {{{   313,     -4,   1193}, 0, {  -484,      0}, {0x7d, 0x00, 0xee, 0xff}}},\n    {{{   290,    -91,   1038}, 0, {   990,    782}, {0x73, 0x00, 0xcb, 0xff}}},\n    {{{   290,     -4,   1038}, 0, {   990,      0}, {0x6d, 0x00, 0xc0, 0xff}}},\n};\n\n// 0x0700F270 - 0x0700F350\nstatic const Vtx jrb_seg7_vertex_0700F270[] = {\n    {{{   801,    -35,    945}, 0, {     0,      0}, {0x84, 0x00, 0xea, 0xff}}},\n    {{{   801,   -120,    945}, 0, {     0,    736}, {0x89, 0x00, 0xd4, 0xff}}},\n    {{{   847,    -35,   1084}, 0, {  1302,      0}, {0x88, 0x00, 0x27, 0xff}}},\n    {{{   979,    -35,    846}, 0, {   142,      0}, {0x09, 0x00, 0x82, 0xff}}},\n    {{{   886,   -142,    839}, 0, {   990,    936}, {0xcf, 0x00, 0x8c, 0xff}}},\n    {{{   886,    -35,    839}, 0, {   990,      0}, {0xb2, 0x00, 0x9c, 0xff}}},\n    {{{   886,    -35,    839}, 0, {  -238,      0}, {0xb2, 0x00, 0x9c, 0xff}}},\n    {{{   876,   -148,    851}, 0, {   -96,    990}, {0x9e, 0x00, 0xb0, 0xff}}},\n    {{{   801,   -120,    945}, 0, {   990,    736}, {0x89, 0x00, 0xd4, 0xff}}},\n    {{{   801,    -35,    945}, 0, {   990,      0}, {0x84, 0x00, 0xea, 0xff}}},\n    {{{   886,   -142,    839}, 0, {  -238,    936}, {0xcf, 0x00, 0x8c, 0xff}}},\n    {{{   841,     95,   1342}, 0, {   -22,      0}, {0x6c, 0x00, 0xbf, 0xff}}},\n    {{{   761,      6,   1210}, 0, {   990,    556}, {0x53, 0x00, 0xa1, 0xff}}},\n    {{{   761,     95,   1210}, 0, {   990,      0}, {0x49, 0x00, 0x99, 0xff}}},\n};\n\n// 0x0700F350 - 0x0700F440\nstatic const Vtx jrb_seg7_vertex_0700F350[] = {\n    {{{   761,     95,   1210}, 0, {    34,    -34}, {0x49, 0x00, 0x99, 0xff}}},\n    {{{   761,      6,   1210}, 0, {    34,    556}, {0x53, 0x00, 0xa1, 0xff}}},\n    {{{   628,    -59,   1151}, 0, {   990,    990}, {0x02, 0x00, 0x82, 0xff}}},\n    {{{   628,     95,   1151}, 0, {   990,    -34}, {0xc7, 0x00, 0x8f, 0xff}}},\n    {{{   523,     95,   1273}, 0, {     0,      0}, {0x93, 0x00, 0xc0, 0xff}}},\n    {{{   523,    -13,   1273}, 0, {     0,    686}, {0x8e, 0x00, 0xca, 0xff}}},\n    {{{   496,     95,   1444}, 0, {  1102,      0}, {0x83, 0x00, 0xed, 0xff}}},\n    {{{   628,     95,   1151}, 0, {     0,      0}, {0xc7, 0x00, 0x8f, 0xff}}},\n    {{{   628,    -59,   1151}, 0, {     0,    990}, {0x02, 0x00, 0x82, 0xff}}},\n    {{{   541,    -30,   1253}, 0, {   848,    798}, {0xa1, 0x00, 0xad, 0xff}}},\n    {{{   523,     95,   1273}, 0, {  1028,      0}, {0x93, 0x00, 0xc0, 0xff}}},\n    {{{   523,    -13,   1273}, 0, {  1028,    686}, {0x8e, 0x00, 0xca, 0xff}}},\n    {{{   477,    322,   1814}, 0, {  -396,      0}, {0x7a, 0x00, 0xde, 0xff}}},\n    {{{   418,    213,   1606}, 0, {   990,    664}, {0x70, 0x00, 0xc6, 0xff}}},\n    {{{   418,    322,   1606}, 0, {   990,      0}, {0x6c, 0x00, 0xbf, 0xff}}},\n};\n\n// 0x0700F440 - 0x0700F520\nstatic const Vtx jrb_seg7_vertex_0700F440[] = {\n    {{{   418,    322,   1606}, 0, {  -102,      0}, {0x6c, 0x00, 0xbf, 0xff}}},\n    {{{   418,    213,   1606}, 0, {  -102,    664}, {0x70, 0x00, 0xc6, 0xff}}},\n    {{{   312,    163,   1474}, 0, {   990,    990}, {0x4b, 0x00, 0x9b, 0xff}}},\n    {{{   312,    322,   1474}, 0, {   990,      0}, {0x2d, 0x00, 0x8a, 0xff}}},\n    {{{   312,    322,   1474}, 0, {     0,      0}, {0x2d, 0x00, 0x8a, 0xff}}},\n    {{{   168,    192,   1458}, 0, {   900,    804}, {0xe7, 0x00, 0x84, 0xff}}},\n    {{{   168,    322,   1458}, 0, {   900,      0}, {0xd2, 0x00, 0x8a, 0xff}}},\n    {{{   312,    163,   1474}, 0, {     0,    990}, {0x4b, 0x00, 0x9b, 0xff}}},\n    {{{   710,    430,   1647}, 0, {     0,      0}, {0x9f, 0x00, 0xaf, 0xff}}},\n    {{{   661,    279,   1790}, 0, {   698,    696}, {0x84, 0x00, 0xea, 0xff}}},\n    {{{   661,    430,   1790}, 0, {   698,      0}, {0x82, 0x00, 0xf4, 0xff}}},\n    {{{   168,    322,   1458}, 0, {     0,      0}, {0xd2, 0x00, 0x8a, 0xff}}},\n    {{{   168,    192,   1458}, 0, {     0,    806}, {0xe7, 0x00, 0x84, 0xff}}},\n    {{{    33,    322,   1615}, 0, {  1300,      0}, {0xa0, 0x00, 0xae, 0xff}}},\n};\n\n// 0x0700F520 - 0x0700F600\nstatic const Vtx jrb_seg7_vertex_0700F520[] = {\n    {{{  1087,    430,   1732}, 0, {   196,      0}, {0x52, 0x00, 0xa0, 0xff}}},\n    {{{   996,    299,   1655}, 0, {   770,    600}, {0x52, 0x00, 0xa0, 0xff}}},\n    {{{   961,    430,   1625}, 0, {   990,      0}, {0x26, 0x00, 0x88, 0xff}}},\n    {{{   961,    274,   1625}, 0, {   990,    718}, {0x26, 0x00, 0x88, 0xff}}},\n    {{{   961,    430,   1625}, 0, {  -224,      0}, {0x26, 0x00, 0x88, 0xff}}},\n    {{{   961,    274,   1625}, 0, {  -224,    718}, {0x26, 0x00, 0x88, 0xff}}},\n    {{{   710,    218,   1647}, 0, {   990,    990}, {0xc9, 0x00, 0x8e, 0xff}}},\n    {{{   710,    430,   1647}, 0, {   990,      0}, {0x9f, 0x00, 0xaf, 0xff}}},\n    {{{   710,    430,   1647}, 0, {     0,      0}, {0x9f, 0x00, 0xaf, 0xff}}},\n    {{{   710,    218,   1647}, 0, {     0,    990}, {0xc9, 0x00, 0x8e, 0xff}}},\n    {{{   661,    279,   1790}, 0, {   698,    696}, {0x84, 0x00, 0xea, 0xff}}},\n    {{{   661,    430,   1790}, 0, {     0,      0}, {0x82, 0x00, 0xf4, 0xff}}},\n    {{{   661,    279,   1790}, 0, {     0,    696}, {0x84, 0x00, 0xea, 0xff}}},\n    {{{   696,    430,   2063}, 0, {  1296,      0}, {0x83, 0x00, 0x10, 0xff}}},\n};\n\n// 0x0700F600 - 0x0700F6E0\nstatic const Vtx jrb_seg7_vertex_0700F600[] = {\n    {{{   275,    558,   1980}, 0, {     0,      0}, {0xb8, 0x00, 0x98, 0xff}}},\n    {{{   275,    475,   1980}, 0, {     0,    510}, {0xc2, 0x00, 0x92, 0xff}}},\n    {{{   193,    558,   2081}, 0, {   824,      0}, {0x9e, 0x00, 0xb0, 0xff}}},\n    {{{   428,    558,   1927}, 0, {     0,      0}, {0x07, 0x00, 0x82, 0xff}}},\n    {{{   428,    402,   1927}, 0, {     0,    988}, {0x42, 0x00, 0x94, 0xff}}},\n    {{{   275,    475,   1980}, 0, {  1028,    510}, {0xc2, 0x00, 0x92, 0xff}}},\n    {{{   275,    558,   1980}, 0, {  1028,      0}, {0xb8, 0x00, 0x98, 0xff}}},\n    {{{   513,    558,   2044}, 0, {    34,      0}, {0x73, 0x00, 0xcc, 0xff}}},\n    {{{   513,    450,   2044}, 0, {    34,    678}, {0x78, 0x00, 0xd8, 0xff}}},\n    {{{   428,    402,   1927}, 0, {   990,    988}, {0x42, 0x00, 0x94, 0xff}}},\n    {{{   428,    558,   1927}, 0, {   990,      0}, {0x07, 0x00, 0x82, 0xff}}},\n    {{{  -102,    445,   1567}, 0, {    92,      0}, {0x70, 0x00, 0xc5, 0xff}}},\n    {{{  -102,    330,   1567}, 0, {    92,    740}, {0x76, 0x00, 0xd3, 0xff}}},\n    {{{  -189,    292,   1466}, 0, {   990,    990}, {0x39, 0x00, 0x8f, 0xff}}},\n};\n\n// 0x0700F6E0 - 0x0700F7C0\nstatic const Vtx jrb_seg7_vertex_0700F6E0[] = {\n    {{{   517,    558,   2227}, 0, {  -206,      0}, {0x7e, 0x00, 0xfe, 0xff}}},\n    {{{   513,    450,   2044}, 0, {   990,    678}, {0x78, 0x00, 0xd8, 0xff}}},\n    {{{   513,    558,   2044}, 0, {   990,      0}, {0x73, 0x00, 0xcc, 0xff}}},\n    {{{  -407,    445,   1450}, 0, {     0,      0}, {0xce, 0x00, 0x8c, 0xff}}},\n    {{{  -407,    341,   1450}, 0, {     0,    664}, {0xce, 0x00, 0x8c, 0xff}}},\n    {{{  -446,    381,   1499}, 0, {   390,    396}, {0x9d, 0x00, 0xb1, 0xff}}},\n    {{{  -480,    445,   1541}, 0, {   754,      0}, {0x9d, 0x00, 0xb1, 0xff}}},\n    {{{  -189,    445,   1466}, 0, {     0,      0}, {0x39, 0x00, 0x8f, 0xff}}},\n    {{{  -189,    292,   1466}, 0, {     0,    990}, {0x39, 0x00, 0x8f, 0xff}}},\n    {{{  -407,    445,   1450}, 0, {  1430,      0}, {0xce, 0x00, 0x8c, 0xff}}},\n    {{{  -407,    341,   1450}, 0, {  1430,    664}, {0xce, 0x00, 0x8c, 0xff}}},\n    {{{  -102,    445,   1567}, 0, {    92,      0}, {0x70, 0x00, 0xc5, 0xff}}},\n    {{{  -189,    292,   1466}, 0, {   990,    990}, {0x39, 0x00, 0x8f, 0xff}}},\n    {{{  -189,    445,   1466}, 0, {   990,      0}, {0x39, 0x00, 0x8f, 0xff}}},\n};\n\n// 0x0700F7C0 - 0x0700F8A0\nstatic const Vtx jrb_seg7_vertex_0700F7C0[] = {\n    {{{   -98,    445,   1762}, 0, {  -312,      0}, {0x7e, 0x00, 0xfe, 0xff}}},\n    {{{  -102,    330,   1567}, 0, {   990,    740}, {0x76, 0x00, 0xd3, 0xff}}},\n    {{{  -102,    445,   1567}, 0, {   990,      0}, {0x70, 0x00, 0xc5, 0xff}}},\n    {{{  -417,    694,   1769}, 0, {     0,      0}, {0xcf, 0x00, 0x8b, 0xff}}},\n    {{{  -417,    543,   1769}, 0, {     0,    664}, {0xc2, 0x00, 0x92, 0xff}}},\n    {{{  -500,    694,   1865}, 0, {   554,      0}, {0xa0, 0x00, 0xad, 0xff}}},\n    {{{  -248,    694,   1740}, 0, {     0,      0}, {0x19, 0x00, 0x84, 0xff}}},\n    {{{  -406,    531,   1767}, 0, {   706,    720}, {0xeb, 0x00, 0x83, 0xff}}},\n    {{{  -417,    694,   1769}, 0, {   756,      0}, {0xcf, 0x00, 0x8b, 0xff}}},\n    {{{  -248,    472,   1740}, 0, {     0,    988}, {0x19, 0x00, 0x84, 0xff}}},\n    {{{  -417,    543,   1769}, 0, {   756,    664}, {0xc2, 0x00, 0x92, 0xff}}},\n    {{{   -36,    694,   1879}, 0, {  -176,      0}, {0x6e, 0x00, 0xc3, 0xff}}},\n    {{{   -36,    499,   1879}, 0, {  -176,    866}, {0x62, 0x00, 0xb1, 0xff}}},\n    {{{  -248,    694,   1740}, 0, {   990,      0}, {0x19, 0x00, 0x84, 0xff}}},\n};\n\n// 0x0700F8A0 - 0x0700F9A0\nstatic const Vtx jrb_seg7_vertex_0700F8A0[] = {\n    {{{  1128,    941,   2827}, 0, {     0,    -26}, {0x79, 0x00, 0xda, 0xff}}},\n    {{{  1027,    748,   2507}, 0, {   990,    542}, {0x56, 0x00, 0xa3, 0xff}}},\n    {{{  1027,    943,   2507}, 0, {   990,      0}, {0x62, 0x00, 0xb0, 0xff}}},\n    {{{   -36,    499,   1879}, 0, {  -176,    866}, {0x62, 0x00, 0xb1, 0xff}}},\n    {{{  -248,    472,   1740}, 0, {   990,    988}, {0x19, 0x00, 0x84, 0xff}}},\n    {{{  -248,    694,   1740}, 0, {   990,      0}, {0x19, 0x00, 0x84, 0xff}}},\n    {{{   -27,    694,   2210}, 0, {  -530,      0}, {0x7e, 0x00, 0xfd, 0xff}}},\n    {{{   -36,    499,   1879}, 0, {   990,    866}, {0x62, 0x00, 0xb1, 0xff}}},\n    {{{   -36,    694,   1879}, 0, {   990,      0}, {0x6e, 0x00, 0xc3, 0xff}}},\n    {{{  1027,    943,   2507}, 0, {    68,      0}, {0x62, 0x00, 0xb0, 0xff}}},\n    {{{  1027,    748,   2507}, 0, {    68,    542}, {0x56, 0x00, 0xa3, 0xff}}},\n    {{{   751,    943,   2357}, 0, {   990,      0}, {0xdf, 0x00, 0x86, 0xff}}},\n    {{{   751,    597,   2358}, 0, {   990,    986}, {0xf1, 0x00, 0x82, 0xff}}},\n    {{{   193,   1258,   2628}, 0, {     0,      0}, {0x34, 0x00, 0x8d, 0xff}}},\n    {{{  -167,    955,   2584}, 0, {   962,    798}, {0xe3, 0x00, 0x85, 0xff}}},\n    {{{  -167,   1258,   2584}, 0, {   962,      0}, {0xb3, 0x00, 0x9c, 0xff}}},\n};\n\n// 0x0700F9A0 - 0x0700FA90\nstatic const Vtx jrb_seg7_vertex_0700F9A0[] = {\n    {{{   751,    943,   2357}, 0, {     0,      0}, {0xdf, 0x00, 0x86, 0xff}}},\n    {{{   751,    597,   2358}, 0, {     0,    986}, {0xf1, 0x00, 0x82, 0xff}}},\n    {{{   712,    605,   2394}, 0, {   126,    962}, {0xaa, 0x00, 0xa3, 0xff}}},\n    {{{   414,    848,   2667}, 0, {  1316,    248}, {0x97, 0x00, 0xba, 0xff}}},\n    {{{   414,    943,   2667}, 0, {  1316,      0}, {0x8e, 0x00, 0xc9, 0xff}}},\n    {{{   414,    943,   2667}, 0, {     0,      0}, {0x8e, 0x00, 0xc9, 0xff}}},\n    {{{   414,    848,   2667}, 0, {     0,    246}, {0x97, 0x00, 0xba, 0xff}}},\n    {{{   401,    943,   2819}, 0, {   418,    -30}, {0x82, 0x00, 0xf6, 0xff}}},\n    {{{   362,   1258,   2944}, 0, {     8,      0}, {0x79, 0x00, 0xdd, 0xff}}},\n    {{{   362,   1028,   2944}, 0, {     8,    598}, {0x79, 0x00, 0xdd, 0xff}}},\n    {{{   193,    884,   2628}, 0, {   990,    990}, {0x58, 0x00, 0xa6, 0xff}}},\n    {{{   193,   1258,   2628}, 0, {   990,      0}, {0x34, 0x00, 0x8d, 0xff}}},\n    {{{  -167,   1258,   2584}, 0, {    48,      0}, {0xb3, 0x00, 0x9c, 0xff}}},\n    {{{  -262,   1070,   2735}, 0, {   536,    482}, {0x95, 0x00, 0xbd, 0xff}}},\n    {{{  -350,   1258,   2875}, 0, {   990,      0}, {0x95, 0x00, 0xbd, 0xff}}},\n};\n\n// 0x0700FA90 - 0x0700FB30\nstatic const Vtx jrb_seg7_vertex_0700FA90[] = {\n    {{{   193,   1258,   2628}, 0, {     0,      0}, {0x34, 0x00, 0x8d, 0xff}}},\n    {{{   193,    884,   2628}, 0, {     0,    990}, {0x58, 0x00, 0xa6, 0xff}}},\n    {{{  -167,    955,   2584}, 0, {   962,    798}, {0xe3, 0x00, 0x85, 0xff}}},\n    {{{   388,   1258,   3273}, 0, {    88,      0}, {0x7e, 0x00, 0xf6, 0xff}}},\n    {{{   384,   1189,   3224}, 0, {   224,    156}, {0x7e, 0x00, 0xf7, 0xff}}},\n    {{{   362,   1258,   2944}, 0, {   990,      0}, {0x79, 0x00, 0xdd, 0xff}}},\n    {{{   362,   1028,   2944}, 0, {   990,    598}, {0x79, 0x00, 0xdd, 0xff}}},\n    {{{  -167,   1258,   2584}, 0, {    48,      0}, {0xb3, 0x00, 0x9c, 0xff}}},\n    {{{  -167,    955,   2584}, 0, {    48,    798}, {0xe3, 0x00, 0x85, 0xff}}},\n    {{{  -262,   1070,   2735}, 0, {   536,    482}, {0x95, 0x00, 0xbd, 0xff}}},\n};\n\n// 0x0700FB30 - 0x0700FE48\nstatic const Gfx jrb_seg7_dl_0700FB30[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09006000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&jrb_seg7_lights_0700EF98.l, 1),\n    gsSPLight(&jrb_seg7_lights_0700EF98.a, 2),\n    gsSPVertex(jrb_seg7_vertex_0700EFB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles( 0, 14,  1, 0x0,  1, 15,  2, 0x0),\n    gsSPVertex(jrb_seg7_vertex_0700F0B0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(jrb_seg7_vertex_0700F190, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(jrb_seg7_vertex_0700F270, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 6, 10,  7, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(jrb_seg7_vertex_0700F350, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(jrb_seg7_vertex_0700F440, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(jrb_seg7_vertex_0700F520, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(jrb_seg7_vertex_0700F600, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(jrb_seg7_vertex_0700F6E0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(jrb_seg7_vertex_0700F7C0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(jrb_seg7_vertex_0700F8A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(10, 12, 11, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(jrb_seg7_vertex_0700F9A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(jrb_seg7_vertex_0700FA90, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700FE48 - 0x0700FEB8\nconst Gfx jrb_seg7_dl_0700FE48[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(jrb_seg7_dl_0700FB30),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/jrb/areas/2/3/model.inc.c",
    "content": "// 0x0700FEB8 - 0x0700FED0\nstatic const Lights1 jrb_seg7_lights_0700FEB8 = gdSPDefLights1(\n    0x50, 0x66, 0x58,\n    0xc8, 0xff, 0xdc, 0x28, 0x28, 0x28\n);\n\n// 0x0700FED0 - 0x0700FFC0\nstatic const Vtx jrb_seg7_vertex_0700FED0[] = {\n    {{{   886,    -35,    839}, 0, {   820,    146}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   847,    -35,   1084}, 0, {   -10,    734}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   906,    -35,   1054}, 0, {   186,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -435,    -74,    621}, 0, {     0,    538}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -82,    -74,    736}, 0, {   812,    376}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -232,    -74,    576}, 0, {   348,     28}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -72,    -74,    904}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -479,    -74,    721}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   259,   -202,    610}, 0, {    50,    114}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   235,   -202,    827}, 0, {   -12,    668}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   495,   -202,    944}, 0, {   478,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   758,   -202,    808}, 0, {   992,    668}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   628,   -202,    616}, 0, {   758,    166}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   442,   -202,    561}, 0, {   404,      6}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   979,    -35,    846}, 0, {   960,    734}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700FFC0 - 0x070100C0\nstatic const Vtx jrb_seg7_vertex_0700FFC0[] = {\n    {{{   168,    322,   1458}, 0, {    90,    184}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    33,    322,   1615}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   477,    322,   1814}, 0, {   978,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   886,    -35,    839}, 0, {   820,    146}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   801,    -35,    945}, 0, {   344,    -14}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   847,    -35,   1084}, 0, {   -10,    734}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   128,     -4,   1013}, 0, {   114,    464}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   290,     -4,   1038}, 0, {   638,    204}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   239,     -4,    980}, 0, {   404,     10}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   313,     -4,   1193}, 0, {   920,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    70,     -4,   1085}, 0, {    36,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   418,    322,   1606}, 0, {   690,    320}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   312,    322,   1474}, 0, {   376,      4}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   275,    558,   1980}, 0, {    62,    460}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   513,    558,   2044}, 0, {   736,    294}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   428,    558,   1927}, 0, {   386,     -8}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070100C0 - 0x070101B0\nstatic const Vtx jrb_seg7_vertex_070100C0[] = {\n    {{{   523,     95,   1273}, 0, {   206,    284}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   841,     95,   1342}, 0, {   956,    802}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   761,     95,   1210}, 0, {   854,    306}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   575,     95,   1479}, 0, {   184,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   496,     95,   1444}, 0, {    10,    802}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   628,     95,   1151}, 0, {   562,     -8}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   710,    430,   1647}, 0, {   508,     -2}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   661,    430,   1790}, 0, {   258,    194}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   696,    430,   2063}, 0, {   -30,    776}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1031,    430,   1890}, 0, {   676,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1087,    430,   1732}, 0, {   952,    776}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   961,    430,   1625}, 0, {   902,    366}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -417,    694,   1769}, 0, {   -16,    388}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -363,    694,   2060}, 0, {   356,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -27,    694,   2210}, 0, {   974,    764}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070101B0 - 0x07010290\nstatic const Vtx jrb_seg7_vertex_070101B0[] = {\n    {{{   275,    558,   1980}, 0, {    62,    460}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   517,    558,   2227}, 0, {   952,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   513,    558,   2044}, 0, {   736,    294}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   193,    558,   2081}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -407,    445,   1450}, 0, {    12,    380}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -429,    445,   1614}, 0, {   154,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -98,    445,   1762}, 0, {   974,    842}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -480,    445,   1541}, 0, {   -28,    842}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -102,    445,   1567}, 0, {   744,    178}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -189,    445,   1466}, 0, {   458,      2}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -417,    694,   1769}, 0, {   -16,    388}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -36,    694,   1879}, 0, {   626,    -12}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -248,    694,   1740}, 0, {   190,     24}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -27,    694,   2210}, 0, {   974,    764}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07010290 - 0x07010390\nstatic const Vtx jrb_seg7_vertex_07010290[] = {\n    {{{  -167,   1258,   2584}, 0, {     8,    222}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -350,   1258,   2875}, 0, {   -20,    808}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -211,   1258,   3072}, 0, {   236,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -417,    694,   1769}, 0, {   -16,    388}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -500,    694,   1865}, 0, {     0,    764}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -363,    694,   2060}, 0, {   356,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   414,    943,   2667}, 0, {    -8,    474}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  1027,    943,   2507}, 0, {   840,    212}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{   751,    943,   2357}, 0, {   454,    -18}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1128,    941,   2827}, 0, {   984,    714}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{   802,    943,   3000}, 0, {   536,    990}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{   401,    943,   2819}, 0, {   -24,    714}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   388,   1258,   3273}, 0, {   978,    808}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   362,   1258,   2944}, 0, {   764,    334}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   126,   1258,   3224}, 0, {   676,    944}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   193,   1258,   2628}, 0, {   410,     -4}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07010390 - 0x07010548\nstatic const Gfx jrb_seg7_dl_07010390[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&jrb_seg7_lights_0700FEB8.l, 1),\n    gsSPLight(&jrb_seg7_lights_0700FEB8.a, 2),\n    gsSPVertex(jrb_seg7_vertex_0700FED0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 8, 12, 13, 0x0,  8, 11, 12, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(jrb_seg7_vertex_0700FFC0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 6, 10,  9, 0x0,  0, 11, 12, 0x0),\n    gsSP2Triangles( 0,  2, 11, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(jrb_seg7_vertex_070100C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 6, 10, 11, 0x0,  6,  9, 10, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(jrb_seg7_vertex_070101B0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 4,  6,  8, 0x0,  4,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(jrb_seg7_vertex_07010290, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 6, 10,  9, 0x0,  6, 11, 10, 0x0),\n    gsSP2Triangles( 0, 12, 13, 0x0,  0, 14, 12, 0x0),\n    gsSP2Triangles( 0,  2, 14, 0x0,  0, 13, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07010548 - 0x070105B8\nconst Gfx jrb_seg7_dl_07010548[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(jrb_seg7_dl_07010390),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/jrb/areas/2/collision.inc.c",
    "content": "// 0x070105B8 - 0x07011370\nconst Collision jrb_seg7_area_2_collision[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0xC6),\n    COL_VERTEX(-435, -74, 621),\n    COL_VERTEX(-72, -74, 904),\n    COL_VERTEX(-82, -74, 736),\n    COL_VERTEX(-232, -74, 576),\n    COL_VERTEX(-479, -74, 721),\n    COL_VERTEX(259, -202, 610),\n    COL_VERTEX(628, -202, 616),\n    COL_VERTEX(442, -202, 561),\n    COL_VERTEX(235, -202, 827),\n    COL_VERTEX(495, -202, 944),\n    COL_VERTEX(758, -202, 808),\n    COL_VERTEX(886, -35, 839),\n    COL_VERTEX(847, -35, 1084),\n    COL_VERTEX(906, -35, 1054),\n    COL_VERTEX(979, -35, 846),\n    COL_VERTEX(801, -35, 945),\n    COL_VERTEX(128, -4, 1013),\n    COL_VERTEX(168, 322, 1458),\n    COL_VERTEX(523, 95, 1273),\n    COL_VERTEX(710, 430, 1647),\n    COL_VERTEX(275, 558, 1980),\n    COL_VERTEX(-407, 445, 1450),\n    COL_VERTEX(-417, 694, 1769),\n    COL_VERTEX(414, 943, 2667),\n    COL_VERTEX(-167, 1258, 2584),\n    COL_VERTEX(-472, 287, 1330),\n    COL_VERTEX(545, 11, 1249),\n    COL_VERTEX(-475, -351, 184),\n    COL_VERTEX(-705, -289, 184),\n    COL_VERTEX(784, 583, 2313),\n    COL_VERTEX(70, -4, 1085),\n    COL_VERTEX(313, -4, 1193),\n    COL_VERTEX(290, -4, 1038),\n    COL_VERTEX(239, -4, 980),\n    COL_VERTEX(418, 322, 1606),\n    COL_VERTEX(312, 322, 1474),\n    COL_VERTEX(477, 322, 1814),\n    COL_VERTEX(33, 322, 1615),\n    COL_VERTEX(841, 95, 1342),\n    COL_VERTEX(761, 95, 1210),\n    COL_VERTEX(575, 95, 1479),\n    COL_VERTEX(496, 95, 1444),\n    COL_VERTEX(628, 95, 1151),\n    COL_VERTEX(696, 430, 2063),\n    COL_VERTEX(1031, 430, 1890),\n    COL_VERTEX(661, 430, 1790),\n    COL_VERTEX(1087, 430, 1732),\n    COL_VERTEX(961, 430, 1625),\n    COL_VERTEX(513, 558, 2044),\n    COL_VERTEX(428, 558, 1927),\n    COL_VERTEX(517, 558, 2227),\n    COL_VERTEX(193, 558, 2081),\n    COL_VERTEX(-102, 445, 1567),\n    COL_VERTEX(-189, 445, 1466),\n    COL_VERTEX(-98, 445, 1762),\n    COL_VERTEX(-429, 445, 1614),\n    COL_VERTEX(-480, 445, 1541),\n    COL_VERTEX(-363, 694, 2060),\n    COL_VERTEX(-27, 694, 2210),\n    COL_VERTEX(-500, 694, 1865),\n    COL_VERTEX(-36, 694, 1879),\n    COL_VERTEX(-248, 694, 1740),\n    COL_VERTEX(1027, 943, 2507),\n    COL_VERTEX(751, 943, 2357),\n    COL_VERTEX(1128, 941, 2827),\n    COL_VERTEX(802, 943, 3000),\n    COL_VERTEX(401, 943, 2819),\n    COL_VERTEX(-350, 1258, 2875),\n    COL_VERTEX(-211, 1258, 3072),\n    COL_VERTEX(126, 1258, 3224),\n    COL_VERTEX(388, 1258, 3273),\n    COL_VERTEX(362, 1258, 2944),\n    COL_VERTEX(193, 1258, 2628),\n    COL_VERTEX(523, 18, 1273),\n    COL_VERTEX(-546, 303, 1249),\n    COL_VERTEX(514, 22, 1330),\n    COL_VERTEX(-463, -351, 265),\n    COL_VERTEX(-631, -306, 265),\n    COL_VERTEX(-387, 897, 2313),\n    COL_VERTEX(-313, 880, 2394),\n    COL_VERTEX(712, 605, 2394),\n    COL_VERTEX(-54, 1673, 3483),\n    COL_VERTEX(-189, 1343, 3224),\n    COL_VERTEX(885, 1421, 3483),\n    COL_VERTEX(384, 1189, 3224),\n    COL_VERTEX(836, 1068, 3224),\n    COL_VERTEX(1217, 1125, 3135),\n    COL_VERTEX(362, 1028, 2944),\n    COL_VERTEX(593, -351, 606),\n    COL_VERTEX(628, -336, 616),\n    COL_VERTEX(822, -351, 488),\n    COL_VERTEX(876, -148, 851),\n    COL_VERTEX(801, -120, 945),\n    COL_VERTEX(628, -59, 1151),\n    COL_VERTEX(239, -112, 980),\n    COL_VERTEX(290, -91, 1038),\n    COL_VERTEX(-490, 217, 1205),\n    COL_VERTEX(761, 6, 1210),\n    COL_VERTEX(710, 218, 1647),\n    COL_VERTEX(961, 274, 1625),\n    COL_VERTEX(661, 279, 1790),\n    COL_VERTEX(693, 536, 2270),\n    COL_VERTEX(418, 213, 1606),\n    COL_VERTEX(513, 450, 2044),\n    COL_VERTEX(1027, 748, 2507),\n    COL_VERTEX(193, 884, 2628),\n    COL_VERTEX(275, 475, 1980),\n    COL_VERTEX(-36, 499, 1879),\n    COL_VERTEX(168, 192, 1458),\n    COL_VERTEX(-189, 292, 1466),\n    COL_VERTEX(312, 163, 1474),\n    COL_VERTEX(-82, -171, 736),\n    COL_VERTEX(-232, -227, 576),\n    COL_VERTEX(534, -56, 1205),\n    COL_VERTEX(568, -39, 1221),\n    COL_VERTEX(996, 299, 1655),\n    COL_VERTEX(-331, 811, 2270),\n    COL_VERTEX(751, 597, 2358),\n    COL_VERTEX(428, 402, 1927),\n    COL_VERTEX(414, 848, 2667),\n    COL_VERTEX(-167, 955, 2584),\n    COL_VERTEX(-262, 1070, 2735),\n    COL_VERTEX(-248, 472, 1740),\n    COL_VERTEX(-406, 531, 1767),\n    COL_VERTEX(-102, 330, 1567),\n    COL_VERTEX(-407, 341, 1450),\n    COL_VERTEX(-446, 381, 1499),\n    COL_VERTEX(259, -338, 610),\n    COL_VERTEX(128, -62, 1013),\n    COL_VERTEX(288, -351, 602),\n    COL_VERTEX(-435, -146, 621),\n    COL_VERTEX(442, -351, 561),\n    COL_VERTEX(1110, -351, -333),\n    COL_VERTEX(886, -142, 839),\n    COL_VERTEX(-1009, -351, -332),\n    COL_VERTEX(-864, 191, -2190),\n    COL_VERTEX(-1071, -351, -1741),\n    COL_VERTEX(-560, -42, -2445),\n    COL_VERTEX(759, -351, -2188),\n    COL_VERTEX(822, -351, -2139),\n    COL_VERTEX(1188, -351, -1513),\n    COL_VERTEX(886, -351, -2029),\n    COL_VERTEX(1263, -72, -1679),\n    COL_VERTEX(1188, -351, -556),\n    COL_VERTEX(-665, -351, 154),\n    COL_VERTEX(1695, 1539, 2833),\n    COL_VERTEX(-36, 2599, 3522),\n    COL_VERTEX(-491, 1583, 3135),\n    COL_VERTEX(1653, 1382, -1187),\n    COL_VERTEX(-739, 2023, -1187),\n    COL_VERTEX(1188, -351, -2194),\n    COL_VERTEX(-950, 1237, -860),\n    COL_VERTEX(-993, 1078, -765),\n    COL_VERTEX(482, 2801, 3605),\n    COL_VERTEX(226, 2211, 3699),\n    COL_VERTEX(1180, 2762, 3522),\n    COL_VERTEX(1478, 2782, 3194),\n    COL_VERTEX(1331, 2232, 3522),\n    COL_VERTEX(359, 2982, 3522),\n    COL_VERTEX(415, 3189, 3398),\n    COL_VERTEX(111, 3148, 3194),\n    COL_VERTEX(1162, -351, -2190),\n    COL_VERTEX(-515, 2858, 2428),\n    COL_VERTEX(1876, 2217, 2428),\n    COL_VERTEX(1235, 2969, 3398),\n    COL_VERTEX(-1228, -351, -1152),\n    COL_VERTEX(-697, 2180, 2833),\n    COL_VERTEX(-1205, 283, -2190),\n    COL_VERTEX(-262, -351, -2828),\n    COL_VERTEX(464, -317, -2445),\n    COL_VERTEX(455, -351, -2936),\n    COL_VERTEX(-940, -93, -2701),\n    COL_VERTEX(-703, 792, -3230),\n    COL_VERTEX(-380, 629, -3358),\n    COL_VERTEX(-968, 1168, -2719),\n    COL_VERTEX(1005, 334, -3230),\n    COL_VERTEX(645, 354, -3358),\n    COL_VERTEX(822, -351, -2820),\n    COL_VERTEX(1424, 527, -2719),\n    COL_VERTEX(-417, 543, 1769),\n    COL_VERTEX(-1009, -351, -1865),\n    COL_VERTEX(-1311, -110, -1274),\n    COL_VERTEX(-716, -351, -2182),\n    COL_VERTEX(-643, -351, -2261),\n    COL_VERTEX(455, -351, -2425),\n    COL_VERTEX(-1054, -351, -502),\n    COL_VERTEX(-1129, 568, -1679),\n    COL_VERTEX(844, -266, -2190),\n    COL_VERTEX(-617, -255, -2828),\n    COL_VERTEX(910, 2028, 3699),\n    COL_VERTEX(-934, 1297, -753),\n    COL_VERTEX(1458, 656, -753),\n    COL_VERTEX(1415, 496, -658),\n    COL_VERTEX(-976, 1137, -658),\n    COL_VERTEX(1188, -351, -2178),\n    COL_VERTEX(1442, 596, -860),\n    COL_VERTEX(1399, 436, -765),\n    COL_VERTEX(983, 2666, 3605),\n    COL_TRI_INIT(SURFACE_DEFAULT, 236),\n    COL_TRI(10, 89, 6),\n    COL_TRI(6, 88, 7),\n    COL_TRI(6, 89, 88),\n    COL_TRI(88, 131, 7),\n    COL_TRI(131, 88, 90),\n    COL_TRI(7, 129, 5),\n    COL_TRI(7, 131, 129),\n    COL_TRI(76, 129, 131),\n    COL_TRI(131, 90, 132),\n    COL_TRI(76, 131, 132),\n    COL_TRI(129, 127, 5),\n    COL_TRI(5, 127, 8),\n    COL_TRI(16, 128, 30),\n    COL_TRI(0, 130, 4),\n    COL_TRI(3, 130, 0),\n    COL_TRI(3, 112, 130),\n    COL_TRI(2, 112, 3),\n    COL_TRI(2, 111, 112),\n    COL_TRI(1, 111, 2),\n    COL_TRI(33, 128, 16),\n    COL_TRI(33, 94, 128),\n    COL_TRI(32, 94, 33),\n    COL_TRI(32, 95, 94),\n    COL_TRI(31, 95, 32),\n    COL_TRI(11, 92, 15),\n    COL_TRI(15, 92, 12),\n    COL_TRI(14, 133, 11),\n    COL_TRI(90, 91, 133),\n    COL_TRI(132, 133, 14),\n    COL_TRI(132, 90, 133),\n    COL_TRI(11, 91, 92),\n    COL_TRI(11, 133, 91),\n    COL_TRI(38, 97, 39),\n    COL_TRI(39, 93, 42),\n    COL_TRI(39, 97, 93),\n    COL_TRI(42, 93, 114),\n    COL_TRI(42, 26, 73),\n    COL_TRI(42, 114, 26),\n    COL_TRI(73, 18, 42),\n    COL_TRI(36, 102, 34),\n    COL_TRI(34, 102, 110),\n    COL_TRI(34, 110, 35),\n    COL_TRI(35, 110, 108),\n    COL_TRI(115, 99, 47),\n    COL_TRI(14, 46, 132),\n    COL_TRI(14, 115, 46),\n    COL_TRI(14, 13, 115),\n    COL_TRI(35, 108, 17),\n    COL_TRI(17, 108, 37),\n    COL_TRI(46, 115, 47),\n    COL_TRI(132, 46, 86),\n    COL_TRI(46, 44, 86),\n    COL_TRI(47, 98, 19),\n    COL_TRI(47, 99, 98),\n    COL_TRI(19, 98, 100),\n    COL_TRI(19, 100, 45),\n    COL_TRI(45, 100, 43),\n    COL_TRI(20, 106, 51),\n    COL_TRI(49, 106, 20),\n    COL_TRI(49, 118, 106),\n    COL_TRI(56, 126, 74),\n    COL_TRI(48, 118, 49),\n    COL_TRI(48, 103, 118),\n    COL_TRI(50, 103, 48),\n    COL_TRI(21, 126, 56),\n    COL_TRI(21, 125, 126),\n    COL_TRI(53, 109, 21),\n    COL_TRI(109, 125, 21),\n    COL_TRI(126, 25, 74),\n    COL_TRI(59, 56, 74),\n    COL_TRI(55, 56, 59),\n    COL_TRI(52, 109, 53),\n    COL_TRI(52, 124, 109),\n    COL_TRI(54, 124, 52),\n    COL_TRI(22, 179, 59),\n    COL_TRI(61, 123, 22),\n    COL_TRI(123, 179, 22),\n    COL_TRI(59, 179, 55),\n    COL_TRI(55, 179, 123),\n    COL_TRI(134, 67, 59),\n    COL_TRI(74, 134, 59),\n    COL_TRI(59, 67, 78),\n    COL_TRI(59, 116, 57),\n    COL_TRI(59, 78, 116),\n    COL_TRI(61, 122, 123),\n    COL_TRI(60, 107, 61),\n    COL_TRI(107, 122, 61),\n    COL_TRI(63, 117, 80),\n    COL_TRI(58, 107, 60),\n    COL_TRI(62, 104, 63),\n    COL_TRI(64, 104, 62),\n    COL_TRI(104, 117, 63),\n    COL_TRI(63, 119, 23),\n    COL_TRI(63, 80, 119),\n    COL_TRI(29, 80, 117),\n    COL_TRI(23, 119, 66),\n    COL_TRI(71, 87, 105),\n    COL_TRI(70, 84, 71),\n    COL_TRI(84, 87, 71),\n    COL_TRI(71, 105, 72),\n    COL_TRI(135, 136, 180),\n    COL_TRI(72, 105, 120),\n    COL_TRI(72, 120, 24),\n    COL_TRI(24, 120, 121),\n    COL_TRI(24, 121, 67),\n    COL_TRI(79, 78, 121),\n    COL_TRI(67, 121, 78),\n    COL_TRI(134, 147, 67),\n    COL_TRI(68, 67, 147),\n    COL_TRI(136, 182, 180),\n    COL_TRI(136, 183, 182),\n    COL_TRI(136, 138, 184),\n    COL_TRI(136, 184, 183),\n    COL_TRI(136, 141, 139),\n    COL_TRI(137, 135, 182),\n    COL_TRI(137, 182, 183),\n    COL_TRI(135, 180, 182),\n    COL_TRI(137, 183, 184),\n    COL_TRI(137, 184, 169),\n    COL_TRI(138, 187, 169),\n    COL_TRI(138, 169, 184),\n    COL_TRI(139, 187, 138),\n    COL_TRI(136, 139, 138),\n    COL_TRI(136, 143, 140),\n    COL_TRI(136, 144, 27),\n    COL_TRI(136, 27, 143),\n    COL_TRI(140, 187, 141),\n    COL_TRI(141, 187, 139),\n    COL_TRI(136, 140, 141),\n    COL_TRI(142, 140, 143),\n    COL_TRI(142, 143, 145),\n    COL_TRI(143, 27, 132),\n    COL_TRI(144, 28, 27),\n    COL_TRI(27, 76, 132),\n    COL_TRI(140, 142, 187),\n    COL_TRI(101, 78, 29),\n    COL_TRI(136, 181, 165),\n    COL_TRI(136, 134, 144),\n    COL_TRI(134, 28, 144),\n    COL_TRI(28, 134, 74),\n    COL_TRI(136, 165, 134),\n    COL_TRI(145, 132, 86),\n    COL_TRI(83, 157, 86),\n    COL_TRI(86, 157, 145),\n    COL_TRI(147, 185, 166),\n    COL_TRI(77, 28, 96),\n    COL_TRI(28, 74, 96),\n    COL_TRI(96, 114, 113),\n    COL_TRI(96, 26, 114),\n    COL_TRI(96, 74, 26),\n    COL_TRI(101, 116, 78),\n    COL_TRI(146, 147, 166),\n    COL_TRI(147, 134, 185),\n    COL_TRI(81, 82, 147),\n    COL_TRI(68, 147, 82),\n    COL_TRI(18, 73, 75),\n    COL_TRI(18, 75, 41),\n    COL_TRI(148, 190, 149),\n    COL_TRI(148, 191, 190),\n    COL_TRI(149, 174, 148),\n    COL_TRI(150, 192, 148),\n    COL_TRI(151, 190, 191),\n    COL_TRI(149, 193, 167),\n    COL_TRI(149, 167, 174),\n    COL_TRI(151, 191, 195),\n    COL_TRI(152, 151, 196),\n    COL_TRI(151, 195, 196),\n    COL_TRI(83, 189, 157),\n    COL_TRI(81, 189, 83),\n    COL_TRI(153, 155, 197),\n    COL_TRI(153, 197, 189),\n    COL_TRI(154, 153, 189),\n    COL_TRI(155, 157, 189),\n    COL_TRI(155, 189, 197),\n    COL_TRI(81, 154, 189),\n    COL_TRI(156, 157, 155),\n    COL_TRI(157, 156, 163),\n    COL_TRI(157, 163, 145),\n    COL_TRI(145, 143, 132),\n    COL_TRI(142, 145, 163),\n    COL_TRI(153, 154, 146),\n    COL_TRI(154, 81, 146),\n    COL_TRI(146, 81, 147),\n    COL_TRI(158, 153, 146),\n    COL_TRI(159, 146, 160),\n    COL_TRI(160, 146, 166),\n    COL_TRI(159, 158, 146),\n    COL_TRI(161, 187, 142),\n    COL_TRI(162, 163, 160),\n    COL_TRI(163, 156, 160),\n    COL_TRI(153, 158, 159),\n    COL_TRI(160, 166, 162),\n    COL_TRI(167, 186, 135),\n    COL_TRI(156, 164, 160),\n    COL_TRI(156, 155, 164),\n    COL_TRI(153, 164, 155),\n    COL_TRI(153, 159, 164),\n    COL_TRI(164, 159, 160),\n    COL_TRI(165, 166, 185),\n    COL_TRI(165, 181, 166),\n    COL_TRI(166, 181, 186),\n    COL_TRI(162, 166, 186),\n    COL_TRI(135, 186, 181),\n    COL_TRI(161, 142, 194),\n    COL_TRI(135, 181, 136),\n    COL_TRI(168, 169, 161),\n    COL_TRI(168, 137, 169),\n    COL_TRI(169, 187, 161),\n    COL_TRI(170, 168, 161),\n    COL_TRI(170, 161, 194),\n    COL_TRI(170, 194, 150),\n    COL_TRI(171, 167, 135),\n    COL_TRI(137, 171, 135),\n    COL_TRI(137, 188, 171),\n    COL_TRI(168, 188, 137),\n    COL_TRI(172, 188, 173),\n    COL_TRI(173, 188, 168),\n    COL_TRI(172, 171, 188),\n    COL_TRI(174, 178, 148),\n    COL_TRI(173, 168, 170),\n    COL_TRI(174, 171, 172),\n    COL_TRI(170, 150, 177),\n    COL_TRI(150, 194, 192),\n    COL_TRI(150, 148, 178),\n    COL_TRI(175, 177, 178),\n    COL_TRI(176, 177, 175),\n    COL_TRI(177, 150, 178),\n    COL_TRI(173, 170, 176),\n    COL_TRI(176, 170, 177),\n    COL_TRI(174, 167, 171),\n    COL_TRI(163, 162, 196),\n    COL_TRI(162, 152, 196),\n    COL_TRI(178, 174, 172),\n    COL_TRI(175, 178, 172),\n    COL_TRI(176, 175, 172),\n    COL_TRI(173, 176, 172),\n    COL_TRI_INIT(SURFACE_SLIPPERY, 92),\n    COL_TRI(70, 69, 81),\n    COL_TRI(69, 82, 81),\n    COL_TRI(68, 82, 69),\n    COL_TRI(70, 81, 83),\n    COL_TRI(84, 70, 83),\n    COL_TRI(85, 84, 83),\n    COL_TRI(83, 86, 85),\n    COL_TRI(87, 84, 85),\n    COL_TRI(65, 85, 64),\n    COL_TRI(86, 64, 85),\n    COL_TRI(87, 85, 65),\n    COL_TRI(88, 89, 90),\n    COL_TRI(95, 113, 9),\n    COL_TRI(90, 89, 10),\n    COL_TRI(91, 90, 10),\n    COL_TRI(92, 10, 9),\n    COL_TRI(91, 10, 92),\n    COL_TRI(12, 92, 97),\n    COL_TRI(93, 97, 92),\n    COL_TRI(9, 93, 92),\n    COL_TRI(9, 113, 93),\n    COL_TRI(8, 94, 9),\n    COL_TRI(94, 95, 9),\n    COL_TRI(93, 113, 114),\n    COL_TRI(31, 113, 95),\n    COL_TRI(96, 113, 31),\n    COL_TRI(97, 38, 12),\n    COL_TRI(12, 38, 13),\n    COL_TRI(38, 99, 13),\n    COL_TRI(98, 99, 38),\n    COL_TRI(40, 98, 38),\n    COL_TRI(103, 50, 101),\n    COL_TRI(99, 115, 13),\n    COL_TRI(100, 98, 40),\n    COL_TRI(101, 100, 40),\n    COL_TRI(40, 36, 101),\n    COL_TRI(102, 36, 40),\n    COL_TRI(40, 41, 102),\n    COL_TRI(100, 101, 43),\n    COL_TRI(43, 101, 44),\n    COL_TRI(101, 29, 44),\n    COL_TRI(36, 103, 101),\n    COL_TRI(79, 105, 119),\n    COL_TRI(104, 44, 29),\n    COL_TRI(64, 86, 44),\n    COL_TRI(44, 104, 64),\n    COL_TRI(29, 117, 104),\n    COL_TRI(66, 87, 65),\n    COL_TRI(105, 87, 66),\n    COL_TRI(105, 66, 119),\n    COL_TRI(79, 120, 105),\n    COL_TRI(79, 119, 80),\n    COL_TRI(79, 121, 120),\n    COL_TRI(50, 51, 58),\n    COL_TRI(106, 107, 51),\n    COL_TRI(51, 107, 58),\n    COL_TRI(107, 54, 122),\n    COL_TRI(54, 107, 106),\n    COL_TRI(57, 116, 58),\n    COL_TRI(101, 50, 58),\n    COL_TRI(58, 116, 101),\n    COL_TRI(108, 110, 41),\n    COL_TRI(55, 123, 122),\n    COL_TRI(55, 122, 54),\n    COL_TRI(106, 37, 54),\n    COL_TRI(37, 124, 54),\n    COL_TRI(37, 106, 118),\n    COL_TRI(37, 118, 36),\n    COL_TRI(108, 124, 37),\n    COL_TRI(109, 124, 108),\n    COL_TRI(36, 118, 103),\n    COL_TRI(110, 102, 41),\n    COL_TRI(111, 1, 94),\n    COL_TRI(25, 108, 41),\n    COL_TRI(25, 41, 75),\n    COL_TRI(25, 109, 108),\n    COL_TRI(25, 125, 109),\n    COL_TRI(25, 126, 125),\n    COL_TRI(111, 8, 127),\n    COL_TRI(111, 94, 8),\n    COL_TRI(1, 128, 94),\n    COL_TRI(77, 4, 130),\n    COL_TRI(31, 30, 96),\n    COL_TRI(1, 96, 128),\n    COL_TRI(96, 30, 128),\n    COL_TRI(77, 96, 4),\n    COL_TRI(4, 96, 1),\n    COL_TRI(112, 111, 127),\n    COL_TRI(76, 112, 127),\n    COL_TRI(76, 127, 129),\n    COL_TRI(76, 77, 112),\n    COL_TRI(77, 130, 112),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 51),\n    COL_TRI(11, 13, 14),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(0, 4, 1),\n    COL_TRI(5, 6, 7),\n    COL_TRI(5, 8, 9),\n    COL_TRI(5, 9, 10),\n    COL_TRI(5, 10, 6),\n    COL_TRI(11, 12, 13),\n    COL_TRI(17, 37, 36),\n    COL_TRI(11, 15, 12),\n    COL_TRI(16, 30, 31),\n    COL_TRI(16, 32, 33),\n    COL_TRI(16, 31, 32),\n    COL_TRI(17, 34, 35),\n    COL_TRI(17, 36, 34),\n    COL_TRI(20, 48, 49),\n    COL_TRI(18, 38, 39),\n    COL_TRI(18, 40, 38),\n    COL_TRI(18, 41, 40),\n    COL_TRI(18, 39, 42),\n    COL_TRI(19, 43, 44),\n    COL_TRI(19, 45, 43),\n    COL_TRI(19, 44, 46),\n    COL_TRI(19, 46, 47),\n    COL_TRI(22, 58, 60),\n    COL_TRI(20, 50, 48),\n    COL_TRI(20, 51, 50),\n    COL_TRI(21, 52, 53),\n    COL_TRI(21, 54, 52),\n    COL_TRI(21, 55, 54),\n    COL_TRI(21, 56, 55),\n    COL_TRI(22, 57, 58),\n    COL_TRI(22, 59, 57),\n    COL_TRI(24, 68, 69),\n    COL_TRI(22, 60, 61),\n    COL_TRI(23, 62, 63),\n    COL_TRI(23, 64, 62),\n    COL_TRI(23, 65, 64),\n    COL_TRI(23, 66, 65),\n    COL_TRI(24, 67, 68),\n    COL_TRI(24, 69, 70),\n    COL_TRI(24, 70, 71),\n    COL_TRI(29, 78, 79),\n    COL_TRI(24, 71, 72),\n    COL_TRI(25, 73, 26),\n    COL_TRI(26, 74, 25),\n    COL_TRI(25, 75, 73),\n    COL_TRI(27, 28, 76),\n    COL_TRI(28, 77, 76),\n    COL_TRI(29, 79, 80),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(1),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_null_start, /*pos*/ 866, 798, -1248, /*yaw*/ 128), // unused, probably an early way to set initial position\n    COL_WATER_BOX_INIT(1),\n    COL_WATER_BOX(0, -4095, -4095,  4096,  4096,  2765),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/jrb/areas/2/geo.inc.c",
    "content": "// 0x0E000AFC\nconst GeoLayout jrb_geo_000AFC[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND_COLOR(0x0001),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 10000, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(16, 0, 2000, 6000, 0, 0, 0, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, jrb_seg7_dl_0700EF00),\n                    GEO_DISPLAY_LIST(LAYER_ALPHA, jrb_seg7_dl_0700FE48),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, jrb_seg7_dl_07010548),\n                    GEO_ASM(   0, geo_movtex_pause_control),\n                    GEO_ASM(0x1202, geo_movtex_draw_water_regions),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(   2, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/jrb/areas/2/macro.inc.c",
    "content": "// 0x07011370 - 0x0701137C\nconst MacroObject jrb_seg7_area_2_macro_objs[] = {\n    MACRO_OBJECT(/*preset*/ macro_box_star_act_1, /*yaw*/   0, /*pos*/ 0,  1600,  3000),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/jrb/areas/2/movtext.inc.c",
    "content": "// 0x0701137C\nstatic Movtex jrb_movtex_sunken_ship_water_data[] = {\n    MOV_TEX_INIT_LOAD(    1),\n    MOV_TEX_ROT_SPEED(   20),\n    MOV_TEX_ROT_SCALE(    6),\n    MOV_TEX_4_BOX_TRIS(-4095, -4095),\n    MOV_TEX_4_BOX_TRIS(-4095,  4096),\n    MOV_TEX_4_BOX_TRIS( 4096,  4096),\n    MOV_TEX_4_BOX_TRIS( 4096, -4095),\n    MOV_TEX_ROT(     ROTATE_COUNTER_CLOCKWISE),\n    MOV_TEX_ALPHA(    0xB4),\n    MOV_TEX_DEFINE(  TEXTURE_JRB_WATER),\n    MOV_TEX_END(),\n};\n\n// 0x0701139C\nconst struct MovtexQuadCollection jrb_movtex_sunken_ship_water[] = {\n    {0, jrb_movtex_sunken_ship_water_data},\n    {-1, NULL},\n};\n"
  },
  {
    "path": "levels/jrb/falling_pillar/geo.inc.c",
    "content": "// 0x0E000900\nconst GeoLayout jrb_geo_000900[] = {\n    GEO_CULLING_RADIUS(1600),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, jrb_seg7_dl_0700AE48),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/jrb/falling_pillar/model.inc.c",
    "content": "// 0x0700AD38 - 0x0700AD50\nstatic const Lights1 jrb_seg7_lights_0700AD38 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700AD50 - 0x0700ADD0\nstatic const Vtx jrb_seg7_vertex_0700AD50[] = {\n    {{{  -153,    922,    154}, 0, {  -796,  -2076}, {0xa7, 0x0e, 0x59, 0xff}}},\n    {{{  -153,    922,   -153}, 0, {   736,  -2076}, {0xa7, 0x0e, 0xa7, 0xff}}},\n    {{{     0,      0,      0}, 0, {     0,    990}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{   154,    922,    154}, 0, {   736,  -2076}, {0x59, 0x0e, 0x59, 0xff}}},\n    {{{     0,   1382,      0}, 0, {     0,  -3610}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  -153,    922,   -153}, 0, {  -796,  -2076}, {0xa7, 0x0e, 0xa7, 0xff}}},\n    {{{   154,    922,   -153}, 0, {   736,  -2076}, {0x59, 0x0e, 0xa7, 0xff}}},\n    {{{   154,    922,    154}, 0, {  -796,  -2076}, {0x59, 0x0e, 0x59, 0xff}}},\n};\n\n// 0x0700ADD0 - 0x0700AE48\nstatic const Gfx jrb_seg7_dl_0700ADD0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&jrb_seg7_lights_0700AD38.l, 1),\n    gsSPLight(&jrb_seg7_lights_0700AD38.a, 2),\n    gsSPVertex(jrb_seg7_vertex_0700AD50, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  6,  4,  7, 0x0),\n    gsSP2Triangles( 4,  1,  0, 0x0,  2,  5,  6, 0x0),\n    gsSP2Triangles( 7,  2,  6, 0x0,  3,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700AE48 - 0x0700AEF0\nconst Gfx jrb_seg7_dl_0700AE48[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(5, 80, 75, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(jrb_seg7_dl_0700ADD0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/jrb/falling_pillar_base/collision.inc.c",
    "content": "// 0x0700D198 - 0x0700D1DA\nconst Collision jrb_seg7_collision_pillar_base[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x5),\n    COL_VERTEX(102, 0, -101),\n    COL_VERTEX(0, 102, 0),\n    COL_VERTEX(102, 0, 102),\n    COL_VERTEX(-101, 0, -101),\n    COL_VERTEX(-101, 0, 102),\n    COL_TRI_INIT(SURFACE_DEFAULT, 4),\n    COL_TRI(0, 1, 2),\n    COL_TRI(3, 4, 1),\n    COL_TRI(2, 1, 4),\n    COL_TRI(1, 0, 3),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/jrb/falling_pillar_base/geo.inc.c",
    "content": "// 0x0E000918\nconst GeoLayout jrb_geo_000918[] = {\n    GEO_CULLING_RADIUS(300),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, jrb_seg7_dl_0700AFB0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/jrb/falling_pillar_base/model.inc.c",
    "content": "// 0x0700AEF0 - 0x0700AF08\nstatic const Lights1 jrb_seg7_lights_0700AEF0 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700AF08 - 0x0700AF58\nstatic const Vtx jrb_seg7_vertex_0700AF08[] = {\n    {{{   102,      0,   -101}, 0, {  2012,  -1054}, {0x33, 0x67, 0xcc, 0xff}}},\n    {{{     0,    102,      0}, 0, {   992,      0}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{   102,      0,    102}, 0, {  2012,    990}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{  -101,      0,   -101}, 0, {     0,  -1054}, {0xcc, 0x67, 0xcc, 0xff}}},\n    {{{  -101,      0,    102}, 0, {     0,    990}, {0xcc, 0x67, 0x33, 0xff}}},\n};\n\n// 0x0700AF58 - 0x0700AFB0\nstatic const Gfx jrb_seg7_dl_0700AF58[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&jrb_seg7_lights_0700AEF0.l, 1),\n    gsSPLight(&jrb_seg7_lights_0700AEF0.a, 2),\n    gsSPVertex(jrb_seg7_vertex_0700AF08, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  1,  0,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700AFB0 - 0x0700B058\nconst Gfx jrb_seg7_dl_0700AFB0[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(5, 80, 75, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(jrb_seg7_dl_0700AF58),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/jrb/floating_platform/collision.inc.c",
    "content": "// 0x0700C824 - 0x0700C8A8\nconst Collision jrb_seg7_collision_floating_platform[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(256, -63, 640),\n    COL_VERTEX(-255, 64, 640),\n    COL_VERTEX(-255, -63, 640),\n    COL_VERTEX(-255, -63, -639),\n    COL_VERTEX(-255, 64, -639),\n    COL_VERTEX(256, 64, -639),\n    COL_VERTEX(256, -63, -639),\n    COL_VERTEX(256, 64, 640),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(2, 4, 3),\n    COL_TRI(2, 1, 4),\n    COL_TRI(3, 4, 5),\n    COL_TRI(5, 4, 1),\n    COL_TRI(0, 3, 6),\n    COL_TRI(3, 5, 6),\n    COL_TRI(0, 7, 1),\n    COL_TRI(5, 1, 7),\n    COL_TRI(6, 5, 7),\n    COL_TRI(6, 7, 0),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/jrb/floating_platform/geo.inc.c",
    "content": "// 0x0E000948\nconst GeoLayout jrb_geo_000948[] = {\n    GEO_CULLING_RADIUS(900),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, jrb_seg7_dl_07007DC8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/jrb/floating_platform/model.inc.c",
    "content": "// 0x07007B70 - 0x07007B88\nstatic const Lights1 jrb_seg7_lights_07007B70 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07007B88 - 0x07007C88\nstatic const Vtx jrb_seg7_vertex_07007B88[] = {\n    {{{  -255,    -63,    640}, 0, {  -882,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,     64,    640}, 0, {  -882,    848}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,     64,   -639}, 0, {  3374,    848}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   256,    -63,    640}, 0, {   138,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,     64,    640}, 0, {   138,    848}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,     64,    640}, 0, {   990,    848}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,    -63,    640}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,    -63,   -639}, 0, {  3374,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,     64,    640}, 0, {  -882,    848}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,    -63,    640}, 0, {  -882,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,     64,   -639}, 0, {  3374,    848}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -255,    -63,   -639}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -255,     64,   -639}, 0, {   990,    848}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,     64,   -639}, 0, {   138,    848}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,    -63,   -639}, 0, {   138,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -255,    -63,   -639}, 0, {  3374,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07007C88 - 0x07007D08\nstatic const Vtx jrb_seg7_vertex_07007C88[] = {\n    {{{   256,    -63,    640}, 0, { -2328,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -255,    -63,    640}, 0, { -2328,  -1566}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -255,    -63,   -639}, 0, {  4056,  -1566}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   256,    -63,   -639}, 0, {  4056,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   256,     64,   -639}, 0, {  4056,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,     64,    640}, 0, { -2328,  -1566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,     64,    640}, 0, { -2328,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,     64,   -639}, 0, {  4056,  -1566}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07007D08 - 0x07007D80\nstatic const Gfx jrb_seg7_dl_07007D08[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_0900A000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&jrb_seg7_lights_07007B70.l, 1),\n    gsSPLight(&jrb_seg7_lights_07007B70.a, 2),\n    gsSPVertex(jrb_seg7_vertex_07007B88, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007D80 - 0x07007DC8\nstatic const Gfx jrb_seg7_dl_07007D80[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_0900A800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(jrb_seg7_vertex_07007C88, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007DC8 - 0x07007EA0\nconst Gfx jrb_seg7_dl_07007DC8[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(5, 80, 75, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(jrb_seg7_dl_07007D08),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(jrb_seg7_dl_07007D80),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/jrb/geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"game/level_geo.h\"\n#include \"game/geo_misc.h\"\n#include \"game/camera.h\"\n#include \"game/moving_texture.h\"\n#include \"game/screen_transition.h\"\n#include \"game/paintings.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"levels/jrb/header.h\"\n\n#include \"levels/jrb/falling_pillar/geo.inc.c\"\n#include \"levels/jrb/falling_pillar_base/geo.inc.c\"\n#include \"levels/jrb/rock/geo.inc.c\"\n#include \"levels/jrb/floating_platform/geo.inc.c\"\n#include \"levels/jrb/sliding_box/geo.inc.c\"\n#include \"levels/jrb/wooden_ship/geo.inc.c\"\n#include \"levels/jrb/areas/1/geo.inc.c\"\n#include \"levels/jrb/areas/2/geo.inc.c\"\n"
  },
  {
    "path": "levels/jrb/header.h",
    "content": "#ifndef JRB_HEADER_H\n#define JRB_HEADER_H\n\n#include \"types.h\"\n#include \"game/moving_texture.h\"\n\n// geo\nextern const GeoLayout jrb_geo_000900[];\nextern const GeoLayout jrb_geo_000918[];\nextern const GeoLayout jrb_geo_000930[];\nextern const GeoLayout jrb_geo_000948[];\nextern const GeoLayout jrb_geo_000960[];\nextern const GeoLayout jrb_geo_000978[];\nextern const GeoLayout jrb_geo_000990[];\nextern const GeoLayout jrb_geo_0009B0[];\nextern const GeoLayout jrb_geo_0009C8[];\nextern const GeoLayout jrb_geo_0009E8[];\nextern const GeoLayout jrb_geo_000A00[];\nextern const GeoLayout jrb_geo_000A18[];\nextern const GeoLayout jrb_geo_000AFC[];\n\n// leveldata\nextern const Gfx jrb_seg7_dl_07002FD0[];\nextern const Gfx jrb_seg7_dl_07004940[];\nextern const Gfx jrb_seg7_dl_07004C78[];\nextern const Gfx jrb_seg7_dl_070058C8[];\nextern const Gfx jrb_seg7_dl_070069B0[];\nextern const Gfx jrb_seg7_dl_07007570[];\nextern const Gfx jrb_seg7_dl_07007718[];\nextern const Gfx jrb_seg7_dl_07007AC8[];\nextern const Gfx jrb_seg7_dl_07007DC8[];\nextern const Gfx jrb_seg7_dl_070080F8[];\nextern const Gfx jrb_seg7_dl_07008FD8[];\nextern const Gfx jrb_seg7_dl_070090B0[];\nextern const Gfx jrb_seg7_dl_07009A58[];\nextern const Gfx jrb_seg7_dl_07009B30[];\nextern const Gfx jrb_seg7_dl_0700A608[];\nextern const Gfx jrb_seg7_dl_0700AC68[];\nextern const Gfx jrb_seg7_dl_0700AE48[];\nextern const Gfx jrb_seg7_dl_0700AFB0[];\nextern const Collision jrb_seg7_area_1_collision[];\nextern const MacroObject jrb_seg7_area_1_macro_objs[];\nextern const Collision jrb_seg7_collision_rock_solid[];\nextern const Collision jrb_seg7_collision_floating_platform[];\nextern const Collision jrb_seg7_collision_floating_box[];\nextern const Collision jrb_seg7_collision_in_sunken_ship_3[];\nextern const Collision jrb_seg7_collision_in_sunken_ship[];\nextern const Collision jrb_seg7_collision_0700CEF0[];\nextern const Collision jrb_seg7_collision_in_sunken_ship_2[];\nextern const Collision jrb_seg7_collision_pillar_base[];\nextern const Collision jrb_seg7_collision_0700D1DC[];\nextern const Trajectory jrb_seg7_trajectory_unagi_1[];\nextern const Trajectory jrb_seg7_trajectory_unagi_2[];\nextern const struct MovtexQuadCollection jrb_movtex_water[];\nextern const struct MovtexQuadCollection jrb_movtex_initial_mist[];\nextern const Gfx jrb_seg7_dl_0700EF00[];\nextern const Gfx jrb_seg7_dl_0700FE48[];\nextern const Gfx jrb_seg7_dl_07010548[];\nextern const Collision jrb_seg7_area_2_collision[];\nextern const MacroObject jrb_seg7_area_2_macro_objs[];\nextern const struct MovtexQuadCollection jrb_movtex_sunken_ship_water[];\n\n// script\nextern const LevelScript level_jrb_entry[];\n\n#endif\n"
  },
  {
    "path": "levels/jrb/level.yaml",
    "content": "# Jolly Roger Bay\nshort-name: jrb\nfull-name: Jolly Roger Bay\ntexture-file: [\"/texture.inc.c\"]\narea-count: 2\nobjects: [falling_pillar, falling_pillar_base, floating_platform, rock, sliding_box, unused_lid, wooden_ship]\nshared-path: []\n# loaded files\nskybox-bin: clouds\ntexture-bin: water\neffects: true\nactor-bins: [group4, group13]\ncommon-bin: [common0]\n"
  },
  {
    "path": "levels/jrb/leveldata.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"surface_terrains.h\"\n#include \"moving_texture_macros.h\"\n#include \"level_misc_macros.h\"\n#include \"macro_presets.h\"\n#include \"special_presets.h\"\n#include \"textures.h\"\n#include \"dialog_ids.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/jrb/texture.inc.c\"\n#include \"levels/jrb/areas/1/1/model.inc.c\"\n#include \"levels/jrb/areas/1/2/model.inc.c\"\n#include \"levels/jrb/areas/1/3/model.inc.c\"\n#include \"levels/jrb/areas/1/4/model.inc.c\"\n#include \"levels/jrb/areas/1/5/model.inc.c\"\n#include \"levels/jrb/areas/1/6/model.inc.c\"\n#include \"levels/jrb/areas/1/7/model.inc.c\"\n#include \"levels/jrb/rock/model.inc.c\"\n#include \"levels/jrb/floating_platform/model.inc.c\"\n#include \"levels/jrb/sliding_box/model.inc.c\"\n#include \"levels/jrb/wooden_ship/model.inc.c\"\n#include \"levels/jrb/falling_pillar/model.inc.c\"\n#include \"levels/jrb/falling_pillar_base/model.inc.c\"\n#include \"levels/jrb/areas/1/collision.inc.c\"\n#include \"levels/jrb/areas/1/macro.inc.c\"\n#include \"levels/jrb/rock/collision.inc.c\"\n#include \"levels/jrb/floating_platform/collision.inc.c\"\n#include \"levels/jrb/sliding_box/collision.inc.c\"\n#include \"levels/jrb/wooden_ship/collision.inc.c\"\n#include \"levels/jrb/falling_pillar_base/collision.inc.c\"\n#include \"levels/jrb/unused_lid/collision.inc.c\"\n#include \"levels/jrb/areas/1/trajectory.inc.c\"\n#include \"levels/jrb/areas/1/movtext.inc.c\"\n#include \"levels/jrb/areas/2/1/model.inc.c\"\n#include \"levels/jrb/areas/2/2/model.inc.c\"\n#include \"levels/jrb/areas/2/3/model.inc.c\"\n#include \"levels/jrb/areas/2/collision.inc.c\"\n#include \"levels/jrb/areas/2/macro.inc.c\"\n#include \"levels/jrb/areas/2/movtext.inc.c\"\n"
  },
  {
    "path": "levels/jrb/rock/collision.inc.c",
    "content": "// 0x0700C758 - 0x0700C824\nconst Collision jrb_seg7_collision_rock_solid[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0xC),\n    COL_VERTEX(305, -409, 0),\n    COL_VERTEX(216, -808, -53),\n    COL_VERTEX(32, -409, -338),\n    COL_VERTEX(32, -409, 264),\n    COL_VERTEX(28, -675, 134),\n    COL_VERTEX(-66, -822, -143),\n    COL_VERTEX(8, -822, -218),\n    COL_VERTEX(-108, -9, -53),\n    COL_VERTEX(28, -142, -182),\n    COL_VERTEX(-306, -409, 0),\n    COL_VERTEX(84, 29, 7),\n    COL_VERTEX(8, 29, 82),\n    COL_TRI_INIT(SURFACE_DEFAULT, 20),\n    COL_TRI(7, 11, 10),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 4),\n    COL_TRI(1, 0, 4),\n    COL_TRI(5, 1, 4),\n    COL_TRI(5, 6, 1),\n    COL_TRI(2, 1, 6),\n    COL_TRI(7, 8, 2),\n    COL_TRI(2, 9, 7),\n    COL_TRI(5, 2, 6),\n    COL_TRI(5, 9, 2),\n    COL_TRI(4, 9, 5),\n    COL_TRI(4, 3, 9),\n    COL_TRI(8, 7, 10),\n    COL_TRI(7, 9, 11),\n    COL_TRI(0, 2, 8),\n    COL_TRI(11, 3, 10),\n    COL_TRI(9, 3, 11),\n    COL_TRI(3, 0, 10),\n    COL_TRI(10, 0, 8),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/jrb/rock/geo.inc.c",
    "content": "// 0x0E000930\nconst GeoLayout jrb_geo_000930[] = {\n    GEO_CULLING_RADIUS(1100),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, jrb_seg7_dl_07007AC8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/jrb/rock/model.inc.c",
    "content": "// 0x070077F0 - 0x07007808\nstatic const Lights1 jrb_seg7_lights_070077F0 = gdSPDefLights1(\n    0x32, 0x38, 0x3f,\n    0xc8, 0xe1, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07007808 - 0x07007908\nstatic const Vtx jrb_seg7_vertex_07007808[] = {\n    {{{    32,   -409,   -338}, 0, {  3096,      0}, {0xf9, 0x0a, 0x82, 0xff}}},\n    {{{   216,   -808,    -53}, 0, {  3896,  -1028}, {0x4e, 0x9c, 0xfd, 0xff}}},\n    {{{     8,   -822,   -218}, 0, {  3060,  -1064}, {0xfd, 0xa7, 0xa7, 0xff}}},\n    {{{  -108,     -9,    -53}, 0, {  2308,    964}, {0xc5, 0x5e, 0xc4, 0xff}}},\n    {{{  -306,   -409,      0}, 0, {  2012,      0}, {0x87, 0xfd, 0x23, 0xff}}},\n    {{{     8,     29,     82}, 0, {   924,   1060}, {0xdc, 0x5a, 0x51, 0xff}}},\n    {{{    28,   -142,   -182}, 0, {  3132,    632}, {0x2c, 0x46, 0xa0, 0xff}}},\n    {{{   305,   -409,      0}, 0, {  4056,      0}, {0x7d, 0x0b, 0x0a, 0xff}}},\n    {{{    84,     29,      7}, 0, {  4108,   1060}, {0x4a, 0x66, 0xff, 0xff}}},\n    {{{   -66,   -822,   -143}, 0, {  2752,  -1064}, {0xb3, 0x9d, 0xf4, 0xff}}},\n    {{{  -108,     -9,    -53}, 0, {  1592,    210}, {0xc5, 0x5e, 0xc4, 0xff}}},\n    {{{     8,     29,     82}, 0, {   808,   -332}, {0xdc, 0x5a, 0x51, 0xff}}},\n    {{{    84,     29,      7}, 0, {   308,      0}, {0x4a, 0x66, 0xff, 0xff}}},\n    {{{    28,   -675,    134}, 0, {   860,   -696}, {0xfe, 0xb5, 0x66, 0xff}}},\n    {{{    32,   -409,    264}, 0, {   912,      0}, {0x1c, 0x07, 0x7b, 0xff}}},\n    {{{    84,     29,      7}, 0, {    20,   1060}, {0x4a, 0x66, 0xff, 0xff}}},\n};\n\n// 0x07007908 - 0x070079E8\nstatic const Vtx jrb_seg7_vertex_07007908[] = {\n    {{{    32,   -409,    264}, 0, {   912,      0}, {0x1c, 0x07, 0x7b, 0xff}}},\n    {{{   305,   -409,      0}, 0, {     0,      0}, {0x7d, 0x0b, 0x0a, 0xff}}},\n    {{{    84,     29,      7}, 0, {    20,   1060}, {0x4a, 0x66, 0xff, 0xff}}},\n    {{{    28,   -142,   -182}, 0, {   680,    724}, {0x2c, 0x46, 0xa0, 0xff}}},\n    {{{  -108,     -9,    -53}, 0, {  1592,    210}, {0xc5, 0x5e, 0xc4, 0xff}}},\n    {{{    84,     29,      7}, 0, {   308,      0}, {0x4a, 0x66, 0xff, 0xff}}},\n    {{{    28,   -675,    134}, 0, {   860,   -696}, {0xfe, 0xb5, 0x66, 0xff}}},\n    {{{   216,   -808,    -53}, 0, {  3896,  -1028}, {0x4e, 0x9c, 0xfd, 0xff}}},\n    {{{   305,   -409,      0}, 0, {  4056,      0}, {0x7d, 0x0b, 0x0a, 0xff}}},\n    {{{    28,   -675,    134}, 0, {  4948,   -696}, {0xfe, 0xb5, 0x66, 0xff}}},\n    {{{   -66,   -822,   -143}, 0, {  1312,    570}, {0xb3, 0x9d, 0xf4, 0xff}}},\n    {{{     8,   -822,   -218}, 0, {   808,    870}, {0xfd, 0xa7, 0xa7, 0xff}}},\n    {{{   216,   -808,    -53}, 0, {  -568,    210}, {0x4e, 0x9c, 0xfd, 0xff}}},\n    {{{    28,   -675,    134}, 0, {   680,   -542}, {0xfe, 0xb5, 0x66, 0xff}}},\n};\n\n// 0x070079E8 - 0x07007AC8\nstatic const Gfx jrb_seg7_dl_070079E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&jrb_seg7_lights_070077F0.l, 1),\n    gsSPLight(&jrb_seg7_lights_070077F0.a, 2),\n    gsSPVertex(jrb_seg7_vertex_07007808, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  3,  6,  0, 0x0),\n    gsSP2Triangles( 7,  0,  6, 0x0,  8,  7,  6, 0x0),\n    gsSP2Triangles( 9,  4,  0, 0x0,  9,  0,  2, 0x0),\n    gsSP2Triangles( 7,  1,  0, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(13, 14,  4, 0x0, 13,  4,  9, 0x0),\n    gsSP2Triangles( 4, 14,  5, 0x0,  5, 14, 15, 0x0),\n    gsSPVertex(jrb_seg7_vertex_07007908, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 1,  0,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007AC8 - 0x07007B70\nconst Gfx jrb_seg7_dl_07007AC8[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(5, 80, 75, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(jrb_seg7_dl_070079E8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/jrb/script.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"behavior_data.h\"\n#include \"model_ids.h\"\n#include \"seq_ids.h\"\n#include \"segment_symbols.h\"\n#include \"level_commands.h\"\n\n#include \"game/level_update.h\"\n\n#include \"levels/scripts.h\"\n\n#include \"actors/common1.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/jrb/header.h\"\n\nstatic const LevelScript script_func_local_1[] = {\n    OBJECT_WITH_ACTS(/*model*/ MODEL_JRB_SUNKEN_SHIP,          /*pos*/  2385,  3589,  3727, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvSunkenShipPart,          /*acts*/ ACT_1),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_JRB_SUNKEN_SHIP_BACK,     /*pos*/  2385,  3589,  3727, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvSunkenShipPart,          /*acts*/ ACT_1),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_JRB_SHIP_LEFT_HALF_PART,  /*pos*/  5385, -5520,  2428, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvSunkenShipPart2,        /*acts*/ ACT_1),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_JRB_SHIP_RIGHT_HALF_PART, /*pos*/  5385, -5520,  2428, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvSunkenShipPart2,        /*acts*/ ACT_1),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_NONE,                     /*pos*/  5385, -5520,  2428, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvInSunkenShip,            /*acts*/ ACT_1),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_NONE,                     /*pos*/  5385, -5520,  2428, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvInSunkenShip2,          /*acts*/ ACT_1),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_JRB_SHIP_LEFT_HALF_PART,  /*pos*/  4880,   820,  2375, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvShipPart3,               /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_JRB_SHIP_BACK_LEFT_PART,  /*pos*/  4880,   820,  2375, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvShipPart3,               /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_JRB_SHIP_RIGHT_HALF_PART, /*pos*/  4880,   820,  2375, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvShipPart3,               /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_JRB_SHIP_BACK_RIGHT_PART, /*pos*/  4880,   820,  2375, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvShipPart3,               /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_NONE,                     /*pos*/  4880,   820,  2375, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvInSunkenShip3,          /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_JRB_SLIDING_BOX,          /*pos*/  4668,  1434,  2916, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvJRBSlidingBox,           /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_UNAGI,                    /*pos*/  6048, -5381,  1154, /*angle*/ 0, 340, 0, /*bhvParam*/ 0, /*bhv*/ bhvUnagi,                     /*acts*/ ACT_1),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_UNAGI,                    /*pos*/  8270, -3130,  1846, /*angle*/ 0, 285, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_2) | BPARAM2(0x01), /*bhv*/ bhvUnagi,                     /*acts*/ ACT_2),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_UNAGI,                    /*pos*/  6048, -5381,  1154, /*angle*/ 0, 340, 0, /*bhvParam*/ BPARAM1(0x02) | BPARAM2(0x02), /*bhv*/ bhvUnagi,                     /*acts*/ ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_NONE,                     /*pos*/  4988, -5221,  2473, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvJetStream,                /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    OBJECT          (/*model*/ MODEL_NONE,                     /*pos*/ -1800, -2812, -2100, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_3), /*bhv*/ bhvTreasureChestsJRB),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_BOBOMB_BUDDY,             /*pos*/ -1956,  1331,  6500, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvBobombBuddyOpensCannon, /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_2[] = {\n    OBJECT(/*model*/ MODEL_JRB_ROCK,                 /*pos*/  1834, -2556, -7090, /*angle*/ 0, 194, 0, /*bhvParam*/ 0, /*bhv*/ bhvRockSolid),\n    OBJECT(/*model*/ MODEL_JRB_ROCK,                 /*pos*/ -2005, -2556, -3506, /*angle*/ 0, 135, 0, /*bhvParam*/ 0, /*bhv*/ bhvRockSolid),\n    OBJECT(/*model*/ MODEL_JRB_ROCK,                 /*pos*/  1578, -2556, -5554, /*angle*/ 0,  90, 0, /*bhvParam*/ 0, /*bhv*/ bhvRockSolid),\n    OBJECT(/*model*/ MODEL_JRB_ROCK,                 /*pos*/    42, -2556, -6578, /*angle*/ 0, 135, 0, /*bhvParam*/ 0, /*bhv*/ bhvRockSolid),\n    OBJECT(/*model*/ MODEL_JRB_ROCK,                 /*pos*/  -981, -2556, -5298, /*angle*/ 0, 255, 0, /*bhvParam*/ 0, /*bhv*/ bhvRockSolid),\n    OBJECT(/*model*/ MODEL_JRB_ROCK,                 /*pos*/ -6549,  1536,  4343, /*angle*/ 0,  90, 0, /*bhvParam*/ 0, /*bhv*/ bhvRockSolid),\n    OBJECT(/*model*/ MODEL_JRB_ROCK,                 /*pos*/  1322, -2556, -3506, /*angle*/ 0, 165, 0, /*bhvParam*/ 0, /*bhv*/ bhvRockSolid),\n    OBJECT(/*model*/ MODEL_JRB_ROCK,                 /*pos*/  6442, -2556, -6322, /*angle*/ 0, 135, 0, /*bhvParam*/ 0, /*bhv*/ bhvRockSolid),\n    OBJECT(/*model*/ MODEL_JRB_ROCK,                 /*pos*/  3882, -2556, -5042, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvRockSolid),\n    OBJECT(/*model*/ MODEL_JRB_ROCK,                 /*pos*/  1497,  1741,  7810, /*angle*/ 0,  14, 0, /*bhvParam*/ 0, /*bhv*/ bhvRockSolid),\n    OBJECT(/*model*/ MODEL_JRB_ROCK,                 /*pos*/ -3978,  1536,   -85, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvRockSolid),\n    OBJECT(/*model*/ MODEL_JRB_ROCK,                 /*pos*/ -5228,  1230,  2106, /*angle*/ 0, 323, 0, /*bhvParam*/ 0, /*bhv*/ bhvRockSolid),\n    OBJECT(/*model*/ MODEL_JRB_ROCK,                 /*pos*/ -7481,  1536,   185, /*angle*/ 0, 149, 0, /*bhvParam*/ 0, /*bhv*/ bhvRockSolid),\n    OBJECT(/*model*/ MODEL_JRB_ROCK,                 /*pos*/ -5749,  1536, -1113, /*angle*/ 0, 255, 0, /*bhvParam*/ 0, /*bhv*/ bhvRockSolid),\n    OBJECT(/*model*/ MODEL_JRB_ROCK,                 /*pos*/ -5332,  1434,  1023, /*angle*/ 0, 315, 0, /*bhvParam*/ 0, /*bhv*/ bhvRockSolid),\n    OBJECT(/*model*/ MODEL_JRB_ROCK,                 /*pos*/  -815,  -613,  3556, /*angle*/ 0, 315, 0, /*bhvParam*/ 0, /*bhv*/ bhvRockSolid),\n    OBJECT(/*model*/ MODEL_JRB_ROCK,                 /*pos*/ -3429,   819,  4948, /*angle*/ 0, 284, 0, /*bhvParam*/ 0, /*bhv*/ bhvRockSolid),\n    OBJECT(/*model*/ MODEL_JRB_ROCK,                 /*pos*/ -1940,   410,  2377, /*angle*/ 0, 194, 0, /*bhvParam*/ 0, /*bhv*/ bhvRockSolid),\n    OBJECT(/*model*/ MODEL_JRB_ROCK,                 /*pos*/ -1798,  -716,  4330, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvRockSolid),\n    OBJECT(/*model*/ MODEL_JRB_ROCK,                 /*pos*/  -845,   922,  7668, /*angle*/ 0, 315, 0, /*bhvParam*/ 0, /*bhv*/ bhvRockSolid),\n    OBJECT(/*model*/ MODEL_JRB_ROCK,                 /*pos*/  6741, -2886,  3556, /*angle*/ 0, 135, 0, /*bhvParam*/ 0, /*bhv*/ bhvRockSolid),\n    OBJECT(/*model*/ MODEL_JRB_ROCK,                 /*pos*/   255,  -101,  4719, /*angle*/ 0,  45, 0, /*bhvParam*/ 0, /*bhv*/ bhvRockSolid),\n    OBJECT(/*model*/ MODEL_JRB_ROCK,                 /*pos*/  1787,  -306,  5133, /*angle*/ 0, 315, 0, /*bhvParam*/ 0, /*bhv*/ bhvRockSolid),\n    OBJECT(/*model*/ MODEL_JRB_ROCK,                 /*pos*/  1079,  -613,  2299, /*angle*/ 0,  75, 0, /*bhvParam*/ 0, /*bhv*/ bhvRockSolid),\n    OBJECT(/*model*/ MODEL_JRB_ROCK,                 /*pos*/  2931, -1697,   980, /*angle*/ 0, 315, 0, /*bhvParam*/ 0, /*bhv*/ bhvRockSolid),\n    OBJECT(/*model*/ MODEL_JRB_ROCK,                 /*pos*/  3036, -4709,  4027, /*angle*/ 0, 315, 0, /*bhvParam*/ 0, /*bhv*/ bhvRockSolid),\n    OBJECT(/*model*/ MODEL_JRB_ROCK,                 /*pos*/  4222, -1125,  7083, /*angle*/ 0, 104, 0, /*bhvParam*/ 0, /*bhv*/ bhvRockSolid),\n    OBJECT(/*model*/ MODEL_JRB_ROCK,                 /*pos*/  6650,  -613,  4941, /*angle*/ 0, 315, 0, /*bhvParam*/ 0, /*bhv*/ bhvRockSolid),\n    OBJECT(/*model*/ MODEL_JRB_ROCK,                 /*pos*/  5764, -4709,  4427, /*angle*/ 0, 315, 0, /*bhvParam*/ 0, /*bhv*/ bhvRockSolid),\n    OBJECT(/*model*/ MODEL_JRB_ROCK,                 /*pos*/  3693, -4709,   856, /*angle*/ 0, 135, 0, /*bhvParam*/ 0, /*bhv*/ bhvRockSolid),\n    OBJECT(/*model*/ MODEL_JRB_ROCK,                 /*pos*/  7981,   410,  2704, /*angle*/ 0, 165, 0, /*bhvParam*/ 0, /*bhv*/ bhvRockSolid),\n    OBJECT(/*model*/ MODEL_JRB_ROCK,                 /*pos*/  2917, -3046,  4818, /*angle*/ 0, 241, 0, /*bhvParam*/ 0, /*bhv*/ bhvRockSolid),\n    OBJECT(/*model*/ MODEL_JRB_ROCK,                 /*pos*/  5896,  -393,  -123, /*angle*/ 0, 315, 0, /*bhvParam*/ 0, /*bhv*/ bhvRockSolid),\n    OBJECT(/*model*/ MODEL_NONE,                     /*pos*/    53,  2355,  2724, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(41), /*bhv*/ bhvPoleGrabbing),\n    OBJECT(/*model*/ MODEL_NONE,                     /*pos*/   659,  2560,  3314, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(41), /*bhv*/ bhvPoleGrabbing),\n    OBJECT(/*model*/ MODEL_NONE,                     /*pos*/  1087,  2150,  3798, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(41), /*bhv*/ bhvPoleGrabbing),\n    OBJECT(/*model*/ MODEL_NONE,                     /*pos*/ -2535,  1075,  6113, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(97), /*bhv*/ bhvPoleGrabbing),\n    OBJECT(/*model*/ MODEL_JRB_FALLING_PILLAR,       /*pos*/  2078, -2863, -4696, /*angle*/ 0,  90, 0, /*bhvParam*/ 0, /*bhv*/ bhvFallingPillar),\n    OBJECT(/*model*/ MODEL_JRB_FALLING_PILLAR,       /*pos*/ -1403, -2863, -4696, /*angle*/ 0,  90, 0, /*bhvParam*/ 0, /*bhv*/ bhvFallingPillar),\n    OBJECT(/*model*/ MODEL_JRB_FALLING_PILLAR,       /*pos*/ -1096, -2863, -3262, /*angle*/ 0,  90, 0, /*bhvParam*/ 0, /*bhv*/ bhvFallingPillar),\n    OBJECT(/*model*/ MODEL_JRB_FALLING_PILLAR,       /*pos*/   337, -2863, -5106, /*angle*/ 0,  90, 0, /*bhvParam*/ 0, /*bhv*/ bhvFallingPillar),\n    OBJECT(/*model*/ MODEL_JRB_FALLING_PILLAR,       /*pos*/  2078, -2863, -6232, /*angle*/ 0,  90, 0, /*bhvParam*/ 0, /*bhv*/ bhvFallingPillar),\n    OBJECT(/*model*/ MODEL_JRB_FALLING_PILLAR,       /*pos*/  4330, -2863, -5618, /*angle*/ 0,  90, 0, /*bhvParam*/ 0, /*bhv*/ bhvFallingPillar),\n    OBJECT(/*model*/ MODEL_JRB_FALLING_PILLAR_BASE,  /*pos*/  2078, -2966, -4696, /*angle*/ 0,  90, 0, /*bhvParam*/ 0, /*bhv*/ bhvPillarBase),\n    OBJECT(/*model*/ MODEL_JRB_FALLING_PILLAR_BASE,  /*pos*/ -1403, -2966, -4696, /*angle*/ 0,  90, 0, /*bhvParam*/ 0, /*bhv*/ bhvPillarBase),\n    OBJECT(/*model*/ MODEL_JRB_FALLING_PILLAR_BASE,  /*pos*/ -1096, -2966, -3262, /*angle*/ 0,  90, 0, /*bhvParam*/ 0, /*bhv*/ bhvPillarBase),\n    OBJECT(/*model*/ MODEL_JRB_FALLING_PILLAR_BASE,  /*pos*/   337, -2966, -5106, /*angle*/ 0,  90, 0, /*bhvParam*/ 0, /*bhv*/ bhvPillarBase),\n    OBJECT(/*model*/ MODEL_JRB_FALLING_PILLAR_BASE,  /*pos*/  2078, -2966, -6232, /*angle*/ 0,  90, 0, /*bhvParam*/ 0, /*bhv*/ bhvPillarBase),\n    OBJECT(/*model*/ MODEL_JRB_FALLING_PILLAR_BASE,  /*pos*/  4330, -2966, -5618, /*angle*/ 0,  90, 0, /*bhvParam*/ 0, /*bhv*/ bhvPillarBase),\n    OBJECT(/*model*/ MODEL_JRB_FLOATING_PLATFORM,    /*pos*/ -1059,  1025,  7072, /*angle*/ 0, 247, 0, /*bhvParam*/ 0, /*bhv*/ bhvJRBFloatingPlatform),\n    OBJECT(/*model*/ MODEL_NONE,                     /*pos*/ -4236, 1044, 2136,   /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvInsideCannon),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_3[] = {\n    OBJECT_WITH_ACTS(/*model*/ MODEL_NONE,            /*pos*/ 4900,  2400,   800, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_4), /*bhv*/ bhvHiddenRedCoinStar, /*acts*/ ALL_ACTS),\n#if defined(VERSION_JP) || defined(VERSION_SH)\n    OBJECT_WITH_ACTS(/*model*/ MODEL_STAR,            /*pos*/ 1540,  2160,  2130, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_5), /*bhv*/ bhvStar,                 /*acts*/ ALL_ACTS),\n#else\n    OBJECT_WITH_ACTS(/*model*/ MODEL_EXCLAMATION_BOX, /*pos*/ 1540,  2160,  2130, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_5) | BPARAM2(EXCLAMATION_BOX_BP_STAR_ACT_1), /*bhv*/ bhvExclamationBox,      /*acts*/ ALL_ACTS),\n#endif\n    OBJECT_WITH_ACTS(/*model*/ MODEL_STAR,            /*pos*/ 5000, -4800,  2500, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_6), /*bhv*/ bhvStar,                 /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_4[] = {\n    OBJECT(/*model*/ MODEL_NONE,            /*pos*/  400,  -350, -2700, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvTreasureChestsShip),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_5[] = {\n    RETURN(),\n};\n\nconst LevelScript level_jrb_entry[] = {\n    INIT_LEVEL(),\n    LOAD_MIO0        (/*seg*/ 0x07, _jrb_segment_7SegmentRomStart, _jrb_segment_7SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x0B, _effect_mio0SegmentRomStart, _effect_mio0SegmentRomEnd),\n    LOAD_MIO0_TEXTURE(/*seg*/ 0x09, _water_mio0SegmentRomStart, _water_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x0A, _clouds_skybox_mio0SegmentRomStart, _clouds_skybox_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x05, _group4_mio0SegmentRomStart, _group4_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0C, _group4_geoSegmentRomStart, _group4_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x06, _group13_mio0SegmentRomStart, _group13_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0D, _group13_geoSegmentRomStart,  _group13_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x08, _common0_mio0SegmentRomStart, _common0_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0F, _common0_geoSegmentRomStart,  _common0_geoSegmentRomEnd),\n    ALLOC_LEVEL_POOL(),\n    MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),\n    JUMP_LINK(script_func_global_1),\n    JUMP_LINK(script_func_global_5),\n    JUMP_LINK(script_func_global_14),\n    LOAD_MODEL_FROM_GEO(MODEL_JRB_SHIP_LEFT_HALF_PART,  jrb_geo_000978),\n    LOAD_MODEL_FROM_GEO(MODEL_JRB_SHIP_BACK_LEFT_PART,  jrb_geo_0009B0),\n    LOAD_MODEL_FROM_GEO(MODEL_JRB_SHIP_RIGHT_HALF_PART, jrb_geo_0009E8),\n    LOAD_MODEL_FROM_GEO(MODEL_JRB_SHIP_BACK_RIGHT_PART, jrb_geo_000A00),\n    LOAD_MODEL_FROM_GEO(MODEL_JRB_SUNKEN_SHIP,          jrb_geo_000990),\n    LOAD_MODEL_FROM_GEO(MODEL_JRB_SUNKEN_SHIP_BACK,     jrb_geo_0009C8),\n    LOAD_MODEL_FROM_GEO(MODEL_JRB_ROCK,                 jrb_geo_000930),\n    LOAD_MODEL_FROM_GEO(MODEL_JRB_SLIDING_BOX,          jrb_geo_000960),\n    LOAD_MODEL_FROM_GEO(MODEL_JRB_FALLING_PILLAR,       jrb_geo_000900),\n    LOAD_MODEL_FROM_GEO(MODEL_JRB_FALLING_PILLAR_BASE,  jrb_geo_000918),\n    LOAD_MODEL_FROM_GEO(MODEL_JRB_FLOATING_PLATFORM,    jrb_geo_000948),\n\n    AREA(/*index*/ 1, jrb_geo_000A18),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ -6750, 2126, 1482, /*angle*/ 0, 90, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvSpinAirborneWarp),\n        WARP_NODE(/*id*/ WARP_NODE_0A,         /*destLevel*/ LEVEL_JRB,    /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_WARP_FLOOR, /*destLevel*/ LEVEL_JRB,    /*destArea*/ 2, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_SUCCESS,    /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_35, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH,      /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_67, /*flags*/ WARP_NO_CHECKPOINT),\n        WHIRLPOOL(/*unk2*/ 0, /*unk3*/ 3, /*pos*/ 4979, -5222, 2482, /*strength*/ -30),\n        JUMP_LINK(script_func_local_1),\n        JUMP_LINK(script_func_local_2),\n        JUMP_LINK(script_func_local_3),\n        TERRAIN(/*terrainData*/ jrb_seg7_area_1_collision),\n        MACRO_OBJECTS(/*objList*/ jrb_seg7_area_1_macro_objs),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0003, /*seq*/ SEQ_LEVEL_WATER),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_WATER),\n    END_AREA(),\n\n    AREA(/*index*/ 2, jrb_geo_000AFC),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ 928, 1050, -1248, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvSwimmingWarp),\n        WARP_NODE(/*id*/ WARP_NODE_0A,      /*destLevel*/ LEVEL_JRB,    /*destArea*/ 2, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_SUCCESS, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_35, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH,   /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_67, /*flags*/ WARP_NO_CHECKPOINT),\n        JUMP_LINK(script_func_local_4),\n        JUMP_LINK(script_func_local_5),\n        TERRAIN(/*terrainData*/ jrb_seg7_area_2_collision),\n        MACRO_OBJECTS(/*objList*/ jrb_seg7_area_2_macro_objs),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0003, /*seq*/ SEQ_LEVEL_WATER),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_WATER),\n    END_AREA(),\n\n    FREE_LEVEL_POOL(),\n    MARIO_POS(/*area*/ 1, /*yaw*/ 90, /*pos*/ -6750, 1126, 1482),\n    CALL(/*arg*/ 0, /*func*/ lvl_init_or_update),\n    CALL_LOOP(/*arg*/ 1, /*func*/ lvl_init_or_update),\n    CLEAR_LEVEL(),\n    SLEEP_BEFORE_EXIT(/*frames*/ 1),\n    EXIT(),\n};\n"
  },
  {
    "path": "levels/jrb/sliding_box/collision.inc.c",
    "content": "// 0x0700C8A8 - 0x0700C92C\nconst Collision jrb_seg7_collision_floating_box[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-101, 0, 77),\n    COL_VERTEX(-101, 0, -76),\n    COL_VERTEX(102, 0, -76),\n    COL_VERTEX(102, 0, 77),\n    COL_VERTEX(102, 154, 77),\n    COL_VERTEX(-101, 154, 77),\n    COL_VERTEX(102, 154, -76),\n    COL_VERTEX(-101, 154, -76),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(3, 4, 5),\n    COL_TRI(4, 6, 7),\n    COL_TRI(4, 7, 5),\n    COL_TRI(2, 6, 4),\n    COL_TRI(2, 4, 3),\n    COL_TRI(1, 6, 2),\n    COL_TRI(1, 7, 6),\n    COL_TRI(0, 5, 7),\n    COL_TRI(0, 7, 1),\n    COL_TRI(3, 5, 0),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/jrb/sliding_box/geo.inc.c",
    "content": "// 0x0E000960\nconst GeoLayout jrb_geo_000960[] = {\n    GEO_CULLING_RADIUS(300),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, jrb_seg7_dl_070080F8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/jrb/sliding_box/model.inc.c",
    "content": "// 0x07007EA0 - 0x07007EB8\nstatic const Lights1 jrb_seg7_lights_07007EA0 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07007EB8 - 0x07007FB8\nstatic const Vtx jrb_seg7_vertex_07007EB8[] = {\n    {{{   102,      0,     77}, 0, {   990,    990}, {0x33, 0xcd, 0x67, 0xff}}},\n    {{{   102,    154,     77}, 0, {   990,      0}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{  -101,    154,     77}, 0, {     0,      0}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{   102,      0,    -76}, 0, {   990,    990}, {0x54, 0xac, 0xd6, 0xff}}},\n    {{{   102,    154,     77}, 0, {     0,      0}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{   102,      0,     77}, 0, {     0,    990}, {0x33, 0xcd, 0x67, 0xff}}},\n    {{{   102,    154,    -76}, 0, {   990,      0}, {0x33, 0x33, 0x99, 0xff}}},\n    {{{  -101,      0,    -76}, 0, {   990,    990}, {0xcd, 0xcd, 0x99, 0xff}}},\n    {{{   102,    154,    -76}, 0, {     0,      0}, {0x33, 0x33, 0x99, 0xff}}},\n    {{{   102,      0,    -76}, 0, {     0,    990}, {0x54, 0xac, 0xd6, 0xff}}},\n    {{{  -101,    154,    -76}, 0, {   990,      0}, {0xac, 0x54, 0xd6, 0xff}}},\n    {{{  -101,      0,     77}, 0, {   990,    990}, {0xac, 0xac, 0x2a, 0xff}}},\n    {{{  -101,    154,     77}, 0, {   990,      0}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{  -101,    154,    -76}, 0, {     0,      0}, {0xac, 0x54, 0xd6, 0xff}}},\n    {{{  -101,      0,    -76}, 0, {     0,    990}, {0xcd, 0xcd, 0x99, 0xff}}},\n    {{{  -101,      0,     77}, 0, {     0,    990}, {0xac, 0xac, 0x2a, 0xff}}},\n};\n\n// 0x07007FB8 - 0x07008038\nstatic const Vtx jrb_seg7_vertex_07007FB8[] = {\n    {{{  -101,      0,     77}, 0, {     0,      0}, {0xac, 0xac, 0x2a, 0xff}}},\n    {{{   102,      0,    -76}, 0, {   990,    990}, {0x54, 0xac, 0xd6, 0xff}}},\n    {{{   102,      0,     77}, 0, {   990,      0}, {0x33, 0xcd, 0x67, 0xff}}},\n    {{{  -101,      0,    -76}, 0, {     0,    990}, {0xcd, 0xcd, 0x99, 0xff}}},\n    {{{   102,    154,     77}, 0, {   990,    990}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{   102,    154,    -76}, 0, {   990,      0}, {0x33, 0x33, 0x99, 0xff}}},\n    {{{  -101,    154,    -76}, 0, {     0,      0}, {0xac, 0x54, 0xd6, 0xff}}},\n    {{{  -101,    154,     77}, 0, {     0,    990}, {0xcd, 0x33, 0x67, 0xff}}},\n};\n\n// 0x07008038 - 0x070080B0\nstatic const Gfx jrb_seg7_dl_07008038[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, jrb_seg7_texture_07001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&jrb_seg7_lights_07007EA0.l, 1),\n    gsSPLight(&jrb_seg7_lights_07007EA0.a, 2),\n    gsSPVertex(jrb_seg7_vertex_07007EB8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070080B0 - 0x070080F8\nstatic const Gfx jrb_seg7_dl_070080B0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, jrb_seg7_texture_07002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(jrb_seg7_vertex_07007FB8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070080F8 - 0x070081A8\nconst Gfx jrb_seg7_dl_070080F8[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(5, 80, 75, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(jrb_seg7_dl_07008038),\n    gsSPDisplayList(jrb_seg7_dl_070080B0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/jrb/texture.inc.c",
    "content": "// 0x07000000 - 0x07000800\nALIGNED8 static const Texture jrb_seg7_texture_07000000[] = {\n#include \"levels/jrb/0.rgba16.inc.c\"\n};\n\n// 0x07000800 - 0x07001800\nALIGNED8 static const Texture jrb_seg7_texture_07000800[] = {\n#include \"levels/jrb/1.rgba16.inc.c\"\n};\n\n// 0x07001800 - 0x07002000\nALIGNED8 static const Texture jrb_seg7_texture_07001800[] = {\n#include \"levels/jrb/2.rgba16.inc.c\"\n};\n\n// 0x07002000 - 0x07002800\nALIGNED8 static const Texture jrb_seg7_texture_07002000[] = {\n#include \"levels/jrb/3.rgba16.inc.c\"\n};\n"
  },
  {
    "path": "levels/jrb/unused_lid/collision.inc.c",
    "content": "// This file only has a collision entry and no model. It may have been some sort of\n// collision hitbox for an object that didn't have a model.\n\n// TODO: this appears to be a lid for an unused box\n// 0x0700D1DC - 0x0700D20C\nconst Collision jrb_seg7_collision_0700D1DC[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x4),\n    COL_VERTEX(123, 0, -122),\n    COL_VERTEX(-122, 0, -122),\n    COL_VERTEX(-122, 0, 123),\n    COL_VERTEX(123, 0, 123),\n    COL_TRI_INIT(SURFACE_DEFAULT, 2),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/jrb/wooden_ship/collision.inc.c",
    "content": "// 0x0700C92C - 0x0700CE5A\nconst Collision jrb_seg7_collision_in_sunken_ship_3[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x4F),\n    COL_VERTEX(-613, 717, -48),\n    COL_VERTEX(-716, 1126, -91),\n    COL_VERTEX(-716, 717, -48),\n    COL_VERTEX(717, 1126, -91),\n    COL_VERTEX(-613, 1126, -91),\n    COL_VERTEX(-716, 1229, -101),\n    COL_VERTEX(-613, 1229, -101),\n    COL_VERTEX(-613, 1126, -1330),\n    COL_VERTEX(614, 1126, -91),\n    COL_VERTEX(614, 1126, -1310),\n    COL_VERTEX(-613, 1126, -1310),\n    COL_VERTEX(-716, 1331, -1330),\n    COL_VERTEX(-613, 1331, -1330),\n    COL_VERTEX(717, 1229, -101),\n    COL_VERTEX(614, 1126, -1330),\n    COL_VERTEX(717, 1331, -1330),\n    COL_VERTEX(614, 717, -48),\n    COL_VERTEX(-306, 819, 2560),\n    COL_VERTEX(-613, 717, 1946),\n    COL_VERTEX(-716, 717, 1946),\n    COL_VERTEX(-613, 614, -37),\n    COL_VERTEX(614, 614, 1946),\n    COL_VERTEX(614, 717, 1946),\n    COL_VERTEX(717, 717, -48),\n    COL_VERTEX(410, 819, 2560),\n    COL_VERTEX(410, 1536, -1740),\n    COL_VERTEX(512, 1536, -1740),\n    COL_VERTEX(307, 1536, -1842),\n    COL_VERTEX(-306, 1536, -1842),\n    COL_VERTEX(307, 1536, -1945),\n    COL_VERTEX(-40, 1024, 3482),\n    COL_VERTEX(102, 1024, 2970),\n    COL_VERTEX(41, 1126, 3482),\n    COL_VERTEX(-101, 717, 3072),\n    COL_VERTEX(-101, -101, 2662),\n    COL_VERTEX(102, 717, 3072),\n    COL_VERTEX(102, 922, 2867),\n    COL_VERTEX(307, 819, 2560),\n    COL_VERTEX(717, 0, 1946),\n    COL_VERTEX(0, -511, 2048),\n    COL_VERTEX(0, -306, -1637),\n    COL_VERTEX(717, 0, -921),\n    COL_VERTEX(410, 307, 2560),\n    COL_VERTEX(614, 1229, -1330),\n    COL_VERTEX(-409, 1229, -1709),\n    COL_VERTEX(-306, 1536, -1945),\n    COL_VERTEX(-511, 1536, -1740),\n    COL_VERTEX(-409, 1536, -1740),\n    COL_VERTEX(-102, -306, -1637),\n    COL_VERTEX(307, 717, -1945),\n    COL_VERTEX(-306, 717, -1945),\n    COL_VERTEX(-101, 922, 2867),\n    COL_VERTEX(-101, 1024, 2970),\n    COL_VERTEX(-40, 1126, 3482),\n    COL_VERTEX(-101, 922, 2970),\n    COL_VERTEX(614, 614, -37),\n    COL_VERTEX(102, 819, 2867),\n    COL_VERTEX(-306, 614, 2560),\n    COL_VERTEX(-409, 819, 2560),\n    COL_VERTEX(-409, 307, 2560),\n    COL_VERTEX(-716, 0, -921),\n    COL_VERTEX(0, -511, -921),\n    COL_VERTEX(-511, 717, -1740),\n    COL_VERTEX(614, 1229, -101),\n    COL_VERTEX(614, 1331, -1330),\n    COL_VERTEX(-613, 614, 1946),\n    COL_VERTEX(307, 614, 2560),\n    COL_VERTEX(717, 717, 1946),\n    COL_VERTEX(307, 1229, -1811),\n    COL_VERTEX(410, 1229, -1709),\n    COL_VERTEX(-306, 1229, -1812),\n    COL_VERTEX(41, 1024, 3482),\n    COL_VERTEX(102, -101, 2662),\n    COL_VERTEX(-101, 819, 2867),\n    COL_VERTEX(512, 717, -1740),\n    COL_VERTEX(-634, 1126, -1310),\n    COL_VERTEX(635, 1126, -1310),\n    COL_VERTEX(-613, 1229, -1330),\n    COL_VERTEX(-716, 0, 1946),\n    COL_TRI_INIT(SURFACE_DEFAULT, 140),\n    COL_TRI(2, 5, 11),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI(1, 4, 5),\n    COL_TRI(4, 6, 5),\n    COL_TRI(6, 4, 7),\n    COL_TRI(4, 8, 9),\n    COL_TRI(4, 9, 10),\n    COL_TRI(11, 5, 6),\n    COL_TRI(11, 6, 12),\n    COL_TRI(6, 7, 12),\n    COL_TRI(8, 13, 63),\n    COL_TRI(8, 3, 13),\n    COL_TRI(14, 8, 63),\n    COL_TRI(13, 15, 64),\n    COL_TRI(13, 64, 63),\n    COL_TRI(15, 13, 23),\n    COL_TRI(14, 63, 64),\n    COL_TRI(0, 16, 3),\n    COL_TRI(16, 23, 3),\n    COL_TRI(17, 18, 19),\n    COL_TRI(17, 65, 18),\n    COL_TRI(18, 0, 2),\n    COL_TRI(19, 18, 2),\n    COL_TRI(18, 65, 20),\n    COL_TRI(18, 20, 0),\n    COL_TRI(0, 20, 16),\n    COL_TRI(20, 55, 16),\n    COL_TRI(17, 57, 65),\n    COL_TRI(17, 19, 58),\n    COL_TRI(21, 16, 55),\n    COL_TRI(21, 22, 16),\n    COL_TRI(22, 21, 66),\n    COL_TRI(23, 16, 67),\n    COL_TRI(16, 22, 67),\n    COL_TRI(15, 26, 25),\n    COL_TRI(22, 66, 37),\n    COL_TRI(24, 22, 37),\n    COL_TRI(24, 67, 22),\n    COL_TRI(15, 25, 64),\n    COL_TRI(25, 43, 64),\n    COL_TRI(26, 27, 25),\n    COL_TRI(27, 68, 69),\n    COL_TRI(26, 29, 27),\n    COL_TRI(27, 69, 25),\n    COL_TRI(28, 68, 27),\n    COL_TRI(29, 28, 27),\n    COL_TRI(25, 69, 43),\n    COL_TRI(28, 70, 68),\n    COL_TRI(29, 45, 28),\n    COL_TRI(30, 32, 53),\n    COL_TRI(30, 71, 32),\n    COL_TRI(31, 32, 35),\n    COL_TRI(32, 71, 35),\n    COL_TRI(33, 35, 71),\n    COL_TRI(33, 71, 30),\n    COL_TRI(34, 72, 35),\n    COL_TRI(34, 35, 33),\n    COL_TRI(35, 72, 42),\n    COL_TRI(33, 30, 53),\n    COL_TRI(38, 41, 23),\n    COL_TRI(24, 36, 31),\n    COL_TRI(24, 37, 36),\n    COL_TRI(36, 52, 31),\n    COL_TRI(36, 51, 52),\n    COL_TRI(37, 56, 36),\n    COL_TRI(36, 73, 51),\n    COL_TRI(36, 56, 73),\n    COL_TRI(31, 35, 24),\n    COL_TRI(37, 66, 56),\n    COL_TRI(15, 23, 41),\n    COL_TRI(42, 38, 24),\n    COL_TRI(38, 39, 61),\n    COL_TRI(39, 38, 72),\n    COL_TRI(38, 42, 72),\n    COL_TRI(38, 61, 41),\n    COL_TRI(38, 23, 67),\n    COL_TRI(40, 74, 41),\n    COL_TRI(15, 41, 74),\n    COL_TRI(41, 61, 40),\n    COL_TRI(35, 42, 24),\n    COL_TRI(38, 67, 24),\n    COL_TRI(43, 75, 76),\n    COL_TRI(43, 77, 75),\n    COL_TRI(44, 77, 43),\n    COL_TRI(44, 43, 69),\n    COL_TRI(44, 69, 68),\n    COL_TRI(44, 68, 70),\n    COL_TRI(49, 50, 29),\n    COL_TRI(45, 46, 47),\n    COL_TRI(46, 12, 47),\n    COL_TRI(46, 11, 12),\n    COL_TRI(12, 44, 47),\n    COL_TRI(12, 77, 44),\n    COL_TRI(45, 47, 28),\n    COL_TRI(47, 70, 28),\n    COL_TRI(47, 44, 70),\n    COL_TRI(40, 48, 49),\n    COL_TRI(48, 50, 49),\n    COL_TRI(50, 45, 29),\n    COL_TRI(51, 73, 57),\n    COL_TRI(51, 58, 52),\n    COL_TRI(51, 17, 58),\n    COL_TRI(51, 57, 17),\n    COL_TRI(52, 54, 53),\n    COL_TRI(53, 31, 52),\n    COL_TRI(53, 32, 31),\n    COL_TRI(55, 65, 21),\n    COL_TRI(33, 53, 54),\n    COL_TRI(39, 72, 34),\n    COL_TRI(54, 52, 58),\n    COL_TRI(55, 20, 65),\n    COL_TRI(56, 57, 73),\n    COL_TRI(57, 66, 21),\n    COL_TRI(57, 21, 65),\n    COL_TRI(56, 66, 57),\n    COL_TRI(49, 74, 40),\n    COL_TRI(48, 40, 61),\n    COL_TRI(58, 33, 52),\n    COL_TRI(58, 59, 33),\n    COL_TRI(58, 19, 78),\n    COL_TRI(34, 59, 78),\n    COL_TRI(59, 34, 33),\n    COL_TRI(34, 78, 39),\n    COL_TRI(60, 61, 78),\n    COL_TRI(61, 39, 78),\n    COL_TRI(19, 2, 78),\n    COL_TRI(2, 60, 78),\n    COL_TRI(58, 78, 59),\n    COL_TRI(60, 2, 11),\n    COL_TRI(60, 62, 48),\n    COL_TRI(62, 60, 11),\n    COL_TRI(48, 61, 60),\n    COL_TRI(48, 62, 50),\n    COL_TRI(45, 50, 46),\n    COL_TRI(50, 62, 46),\n    COL_TRI(46, 62, 11),\n    COL_TRI(15, 74, 26),\n    COL_TRI(26, 74, 49),\n    COL_TRI(26, 49, 29),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n\n\n// 0x0700CE5C - 0x0700CEF0\nconst Collision jrb_seg7_collision_in_sunken_ship[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0xA),\n    COL_VERTEX(512, 819, -409),\n    COL_VERTEX(307, 819, -409),\n    COL_VERTEX(307, 819, -255),\n    COL_VERTEX(512, 819, -255),\n    COL_VERTEX(307, 1024, -101),\n    COL_VERTEX(307, 819, -101),\n    COL_VERTEX(307, 1024, -409),\n    COL_VERTEX(512, 1024, -409),\n    COL_VERTEX(512, 819, -101),\n    COL_VERTEX(512, 1024, -101),\n    COL_TRI_INIT(SURFACE_DEFAULT, 10),\n    COL_TRI(4, 5, 1),\n    COL_TRI(4, 1, 6),\n    COL_TRI(7, 0, 8),\n    COL_TRI(7, 8, 9),\n    COL_TRI(5, 8, 3),\n    COL_TRI(5, 3, 2),\n    COL_TRI(6, 9, 4),\n    COL_TRI(6, 7, 9),\n    COL_TRI(7, 1, 0),\n    COL_TRI(7, 6, 1),\n    COL_TRI_INIT(SURFACE_WARP, 2),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n\n// This is probably part of the \"wooden ship\" collision file as the standstill box.\n// 0x0700CEF0 - 0x0700CF80\nconst Collision jrb_seg7_collision_0700CEF0[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0xA),\n    COL_VERTEX(307, 1024, -101),\n    COL_VERTEX(307, 819, -101),\n    COL_VERTEX(307, 819, -409),\n    COL_VERTEX(307, 1024, -409),\n    COL_VERTEX(512, 1024, -409),\n    COL_VERTEX(512, 819, -409),\n    COL_VERTEX(512, 819, -101),\n    COL_VERTEX(512, 1024, -101),\n    COL_VERTEX(512, 819, -306),\n    COL_VERTEX(307, 819, -306),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(4, 5, 6),\n    COL_TRI(4, 6, 7),\n    COL_TRI(1, 6, 8),\n    COL_TRI(1, 8, 9),\n    COL_TRI(3, 7, 0),\n    COL_TRI(3, 4, 7),\n    COL_TRI(4, 3, 2),\n    COL_TRI(4, 2, 5),\n    COL_TRI(5, 9, 8),\n    COL_TRI(5, 2, 9),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n\n// 0x0700CF80 - 0x0700D196\nconst Collision jrb_seg7_collision_in_sunken_ship_2[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x20),\n    COL_VERTEX(-409, 819, 2560),\n    COL_VERTEX(-409, 307, 2560),\n    COL_VERTEX(-101, 717, 3072),\n    COL_VERTEX(-101, 1024, 2970),\n    COL_VERTEX(-716, 0, 1946),\n    COL_VERTEX(-716, 717, 1946),\n    COL_VERTEX(102, 1024, 2970),\n    COL_VERTEX(410, 819, 2560),\n    COL_VERTEX(717, 1331, -1330),\n    COL_VERTEX(717, 717, -101),\n    COL_VERTEX(717, 0, -921),\n    COL_VERTEX(717, 717, 1946),\n    COL_VERTEX(-716, 717, -101),\n    COL_VERTEX(717, 1229, -101),\n    COL_VERTEX(717, 0, 1946),\n    COL_VERTEX(307, 819, -101),\n    COL_VERTEX(-716, 0, -921),\n    COL_VERTEX(41, 1126, 3482),\n    COL_VERTEX(-40, 1024, 3482),\n    COL_VERTEX(102, 717, 3072),\n    COL_VERTEX(-101, -101, 2662),\n    COL_VERTEX(307, 1024, -101),\n    COL_VERTEX(0, -511, 2048),\n    COL_VERTEX(410, 307, 2560),\n    COL_VERTEX(-40, 1126, 3482),\n    COL_VERTEX(-716, 1229, -101),\n    COL_VERTEX(0, -511, -921),\n    COL_VERTEX(512, 819, -101),\n    COL_VERTEX(-716, 1331, -1330),\n    COL_VERTEX(41, 1024, 3482),\n    COL_VERTEX(102, -101, 2662),\n    COL_VERTEX(512, 1024, -101),\n    COL_TRI_INIT(SURFACE_DEFAULT, 55),\n    COL_TRI(8, 9, 10),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(0, 4, 1),\n    COL_TRI(0, 5, 4),\n    COL_TRI(0, 3, 6),\n    COL_TRI(7, 0, 6),\n    COL_TRI(9, 15, 12),\n    COL_TRI(15, 9, 27),\n    COL_TRI(12, 25, 28),\n    COL_TRI(16, 12, 28),\n    COL_TRI(12, 16, 4),\n    COL_TRI(5, 12, 4),\n    COL_TRI(17, 29, 19),\n    COL_TRI(6, 17, 19),\n    COL_TRI(2, 29, 18),\n    COL_TRI(18, 29, 17),\n    COL_TRI(2, 19, 29),\n    COL_TRI(19, 30, 23),\n    COL_TRI(19, 23, 7),\n    COL_TRI(6, 19, 7),\n    COL_TRI(20, 30, 19),\n    COL_TRI(20, 19, 2),\n    COL_TRI(7, 11, 5),\n    COL_TRI(7, 5, 0),\n    COL_TRI(13, 8, 28),\n    COL_TRI(11, 9, 12),\n    COL_TRI(8, 13, 9),\n    COL_TRI(11, 12, 5),\n    COL_TRI(21, 31, 13),\n    COL_TRI(13, 31, 27),\n    COL_TRI(13, 27, 9),\n    COL_TRI(21, 13, 25),\n    COL_TRI(13, 28, 25),\n    COL_TRI(2, 18, 24),\n    COL_TRI(14, 22, 26),\n    COL_TRI(14, 26, 10),\n    COL_TRI(22, 14, 30),\n    COL_TRI(14, 23, 30),\n    COL_TRI(14, 10, 9),\n    COL_TRI(14, 9, 11),\n    COL_TRI(23, 14, 7),\n    COL_TRI(14, 11, 7),\n    COL_TRI(18, 17, 24),\n    COL_TRI(22, 30, 20),\n    COL_TRI(24, 17, 6),\n    COL_TRI(24, 6, 3),\n    COL_TRI(15, 21, 25),\n    COL_TRI(25, 12, 15),\n    COL_TRI(1, 20, 2),\n    COL_TRI(20, 1, 4),\n    COL_TRI(2, 24, 3),\n    COL_TRI(20, 4, 22),\n    COL_TRI(26, 22, 4),\n    COL_TRI(16, 26, 4),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/jrb/wooden_ship/geo.inc.c",
    "content": "// 0x0E000978\nconst GeoLayout jrb_geo_000978[] = {\n    GEO_CULLING_RADIUS(5000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, jrb_seg7_dl_07008FD8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0E000990\nconst GeoLayout jrb_geo_000990[] = {\n    GEO_CULLING_RADIUS(5000),\n    GEO_OPEN_NODE(),\n        GEO_ASM(0, geo_update_layer_transparency),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, jrb_seg7_dl_070090B0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0E0009B0\nconst GeoLayout jrb_geo_0009B0[] = {\n    GEO_CULLING_RADIUS(5000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, jrb_seg7_dl_07009A58),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0E0009C8\nconst GeoLayout jrb_geo_0009C8[] = {\n    GEO_CULLING_RADIUS(5000),\n    GEO_OPEN_NODE(),\n        GEO_ASM(0, geo_update_layer_transparency),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, jrb_seg7_dl_07009B30),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0E0009E8\nconst GeoLayout jrb_geo_0009E8[] = {\n    GEO_CULLING_RADIUS(5000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, jrb_seg7_dl_0700A608),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0E000A00\nconst GeoLayout jrb_geo_000A00[] = {\n    GEO_CULLING_RADIUS(5000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, jrb_seg7_dl_0700AC68),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/jrb/wooden_ship/model.inc.c",
    "content": "// 0x070081A8 - 0x070081C0\nstatic const Lights1 jrb_seg7_lights_070081A8 = gdSPDefLights1(\n    0x1e, 0x2c, 0x3a,\n    0x79, 0xb2, 0xeb, 0x28, 0x28, 0x28\n);\n\n// 0x070081C0 - 0x070081D8\nstatic const Lights1 jrb_seg7_lights_070081C0 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x070081D8 - 0x070082C8\nstatic const Vtx jrb_seg7_vertex_070081D8[] = {\n    {{{  -726,    307,    102}, 0, { -4118,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -726,    512,   -101}, 0, { -5140,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -726,    307,   -101}, 0, { -5140,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -726,    819,   -716}, 0, { -1052,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -726,   1024,   -921}, 0, { -2074,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -726,    819,   -921}, 0, { -2074,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -726,   1024,   -716}, 0, { -1052,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -726,    819,   -204}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -726,   1024,   -409}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -726,    819,   -409}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -726,   1024,   -204}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -726,    307,   -409}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -726,    512,   -613}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -726,    307,   -613}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -726,    512,   -409}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070082C8 - 0x070083B8\nstatic const Vtx jrb_seg7_vertex_070082C8[] = {\n    {{{  -726,    307,   1638}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -726,    512,   1434}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -726,    307,   1434}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -726,    307,    102}, 0, { -4118,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -726,    512,    102}, 0, { -4118,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -726,    512,   -101}, 0, { -5140,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -726,    307,    614}, 0, { -4118,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -726,    512,    410}, 0, { -5140,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -726,    307,    410}, 0, { -5140,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -726,    512,    614}, 0, { -4118,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -726,    307,   1126}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -726,    512,   1126}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -726,    512,    922}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -726,    307,    922}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -726,    512,   1638}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070083B8 - 0x07008478\nstatic const Vtx jrb_seg7_vertex_070083B8[] = {\n    {{{  -255,   1075,    -91}, 0, { -1052,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -562,    768,    -91}, 0, { -2074,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,    768,    -91}, 0, { -1052,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -562,   1075,    -91}, 0, { -2074,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,    768,   -101}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   307,   1024,   -101}, 0, {   138,    138}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,   1075,   -101}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   307,    819,   -101}, 0, {   138,    820}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   512,   1024,   -101}, 0, {   820,    138}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   563,   1075,   -101}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   512,    819,   -101}, 0, {   820,    820}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   563,    768,   -101}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07008478 - 0x07008578\nstatic const Vtx jrb_seg7_vertex_07008478[] = {\n    {{{  -101,   1024,   2970}, 0, { -3334,   -770}, {0xd1, 0x69, 0xcc, 0xff}}},\n    {{{  -101,    922,   2970}, 0, { -3372,   -622}, {0x93, 0xf4, 0x3f, 0xff}}},\n    {{{   -40,   1126,   3482}, 0, { -4252,   -832}, {0x9b, 0x44, 0x21, 0xff}}},\n    {{{   102,   1024,   2970}, 0, { -3252,   -486}, {0x00, 0x75, 0xd0, 0xff}}},\n    {{{    41,   1126,   3482}, 0, { -4220,   -718}, {0x00, 0x3c, 0x6f, 0xff}}},\n    {{{  -101,      0,   2560}, 0, { -2822,    260}, {0x91, 0xd5, 0x2b, 0xff}}},\n    {{{  -101,   -101,   2662}, 0, { -3058,    406}, {0xb9, 0xc2, 0x54, 0xff}}},\n    {{{  -101,    717,   3072}, 0, { -3648,   -328}, {0x9c, 0xce, 0x3b, 0xff}}},\n    {{{  -101,   -511,   2048}, 0, { -2034,    994}, {0xa5, 0xaf, 0x21, 0xff}}},\n    {{{  -101,   -409,   1946}, 0, { -1800,    848}, {0x8d, 0xce, 0x0f, 0xff}}},\n    {{{   102,   -101,   2662}, 0, { -2976,    690}, {0x00, 0xa4, 0x57, 0xff}}},\n    {{{   102,    717,   3072}, 0, { -3566,    -44}, {0x00, 0xb7, 0x67, 0xff}}},\n    {{{    41,   1024,   3482}, 0, { -4260,   -570}, {0x00, 0xb6, 0x66, 0xff}}},\n    {{{   -40,   1024,   3482}, 0, { -4292,   -684}, {0xd7, 0xdf, 0x73, 0xff}}},\n    {{{  -101,   -511,   -921}, 0, {  3662,    994}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  -101,   -409,   -921}, 0, {  3700,    848}, {0xa4, 0xa9, 0x00, 0xff}}},\n};\n\n// 0x07008578 - 0x07008668\nstatic const Vtx jrb_seg7_vertex_07008578[] = {\n    {{{  -101,   -511,   2048}, 0, { -2034,    994}, {0xa5, 0xaf, 0x21, 0xff}}},\n    {{{   102,   -511,   2048}, 0, { -1954,   1278}, {0x00, 0x84, 0x18, 0xff}}},\n    {{{   102,   -101,   2662}, 0, { -2976,    690}, {0x00, 0xa4, 0x57, 0xff}}},\n    {{{  -101,   -511,   -921}, 0, {  3662,    994}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  -101,    922,   2867}, 0, {   990,    990}, {0x36, 0x3b, 0x9e, 0xff}}},\n    {{{  -306,    819,   2560}, 0, {  2522,      0}, {0x4a, 0x53, 0xc5, 0xff}}},\n    {{{  -409,    819,   2560}, 0, {  2522,   -542}, {0xa3, 0x50, 0x1e, 0xff}}},\n    {{{   102,   -511,   -921}, 0, {  3742,   1278}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -716,   1331,  -1330}, 0, {  7122,      0}, {0xa7, 0x59, 0x07, 0xff}}},\n    {{{  -716,   1229,   -101}, 0, {  5078,      0}, {0xb9, 0x47, 0x4d, 0xff}}},\n    {{{  -613,   1229,   -101}, 0, {  5078,    480}, {0x47, 0x47, 0x4d, 0xff}}},\n    {{{  -613,   1331,  -1330}, 0, {  7122,    480}, {0x59, 0x59, 0x07, 0xff}}},\n    {{{   102,    922,   2867}, 0, {   990,   2010}, {0x00, 0x30, 0x8b, 0xff}}},\n    {{{  -101,   1024,   2970}, 0, {   480,    990}, {0xd1, 0x69, 0xcc, 0xff}}},\n    {{{   102,   1024,   2970}, 0, {   480,   2010}, {0x00, 0x75, 0xd0, 0xff}}},\n};\n\n// 0x07008668 - 0x070086C8\nstatic const Vtx jrb_seg7_vertex_07008668[] = {\n    {{{  -306,    819,   2560}, 0, {  2522,      0}, {0x4a, 0x53, 0xc5, 0xff}}},\n    {{{  -613,    717,   1946}, 0, {  5588,  -1564}, {0x57, 0x5a, 0xee, 0xff}}},\n    {{{  -716,    717,   1946}, 0, {  5588,  -2076}, {0xa8, 0x5a, 0x03, 0xff}}},\n    {{{  -409,    819,   2560}, 0, {  2522,   -542}, {0xa3, 0x50, 0x1e, 0xff}}},\n    {{{  -716,    717,   -101}, 0, { 15808,  -2076}, {0x92, 0x37, 0x1b, 0xff}}},\n    {{{  -613,    717,   -101}, 0, { 15808,  -1564}, {0x1d, 0x1d, 0x77, 0xff}}},\n};\n\n// 0x070086C8 - 0x070087B8\nstatic const Vtx jrb_seg7_vertex_070086C8[] = {\n    {{{   563,   1075,   -101}, 0, { 12744,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   717,    717,   -101}, 0, { 14276,   4054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   717,   1126,   -101}, 0, { 14276,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,   1075,   -101}, 0, {  9676,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   563,    768,   -101}, 0, { 12744,   3542}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   614,    717,   -101}, 0, { 13256,   4054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,    768,   -101}, 0, {  9676,   3542}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   614,    614,   -101}, 0, { 13256,   5076}, {0x00, 0x46, 0x69, 0xff}}},\n    {{{  -613,    614,   -101}, 0, {   988,   5076}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  -613,    717,   -101}, 0, {   988,   4054}, {0x1d, 0x1d, 0x77, 0xff}}},\n    {{{  -716,   1126,   -101}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,    717,   -101}, 0, {     0,   4054}, {0x92, 0x37, 0x1b, 0xff}}},\n    {{{   102,    922,   2867}, 0, {   480,      0}, {0x00, 0x30, 0x8b, 0xff}}},\n    {{{  -101,    819,   2867}, 0, {  1500,    990}, {0x1f, 0x1f, 0x8a, 0xff}}},\n    {{{  -101,    922,   2867}, 0, {  1500,      0}, {0x36, 0x3b, 0x9e, 0xff}}},\n};\n\n// 0x070087B8 - 0x070088A8\nstatic const Vtx jrb_seg7_vertex_070087B8[] = {\n    {{{  -613,   1229,   -101}, 0, {  3240,    990}, {0x47, 0x47, 0x4d, 0xff}}},\n    {{{  -613,   1126,  -1330}, 0, { -1664,   2010}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{  -613,   1331,  -1330}, 0, { -1664,      0}, {0x59, 0x59, 0x07, 0xff}}},\n    {{{   102,    922,   2867}, 0, {   480,      0}, {0x00, 0x30, 0x8b, 0xff}}},\n    {{{   102,    819,   2867}, 0, {   480,    990}, {0x00, 0x4e, 0x9d, 0xff}}},\n    {{{  -101,    819,   2867}, 0, {  1500,    990}, {0x1f, 0x1f, 0x8a, 0xff}}},\n    {{{  -101,    922,   2867}, 0, { -7388,    990}, {0x36, 0x3b, 0x9e, 0xff}}},\n    {{{  -306,    614,   2560}, 0, { -6160,   4054}, {0x3e, 0x59, 0xbf, 0xff}}},\n    {{{  -306,    819,   2560}, 0, { -6160,   2010}, {0x4a, 0x53, 0xc5, 0xff}}},\n    {{{  -101,    819,   2867}, 0, { -7388,   2010}, {0x1f, 0x1f, 0x8a, 0xff}}},\n    {{{  -613,    614,   1946}, 0, { -3708,   4054}, {0x54, 0x5a, 0xe5, 0xff}}},\n    {{{  -613,    717,   1946}, 0, { -3708,   3032}, {0x57, 0x5a, 0xee, 0xff}}},\n    {{{  -613,    614,   -101}, 0, {  4464,   4054}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  -613,    717,   -101}, 0, {  4464,   3032}, {0x1d, 0x1d, 0x77, 0xff}}},\n    {{{  -613,   1126,   -101}, 0, {  3240,   2010}, {0x49, 0x49, 0x49, 0xff}}},\n};\n\n// 0x070088A8 - 0x070089A8\nstatic const Vtx jrb_seg7_vertex_070088A8[] = {\n    {{{  -409,    307,   2560}, 0, { -6160,   7120}, {0x9c, 0xe5, 0x48, 0xff}}},\n    {{{  -101,    922,   2970}, 0, { -7796,    990}, {0x93, 0xf4, 0x3f, 0xff}}},\n    {{{  -409,    819,   2560}, 0, { -6160,   2010}, {0xa3, 0x50, 0x1e, 0xff}}},\n    {{{  -716,    717,   -101}, 0, {  4464,   3032}, {0x92, 0x37, 0x1b, 0xff}}},\n    {{{  -716,   1331,  -1330}, 0, {  9372,  -3098}, {0xa7, 0x59, 0x07, 0xff}}},\n    {{{  -716,    410,   -921}, 0, {  7736,   6098}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -716,    205,   -921}, 0, {  7736,   8142}, {0x82, 0xf2, 0x00, 0xff}}},\n    {{{  -716,   1229,   -101}, 0, {  4464,  -2076}, {0xb9, 0x47, 0x4d, 0xff}}},\n    {{{  -716,    717,   1946}, 0, { -3708,   3032}, {0xa8, 0x5a, 0x03, 0xff}}},\n    {{{  -716,    205,   1946}, 0, { -3708,   8142}, {0x89, 0xe4, 0x1e, 0xff}}},\n    {{{  -306,    102,   2560}, 0, { -6160,   9164}, {0xc0, 0xc3, 0x5a, 0xff}}},\n    {{{  -101,      0,   2560}, 0, { -6160,  10186}, {0x91, 0xd5, 0x2b, 0xff}}},\n    {{{  -101,   1024,   2970}, 0, { -7796,      0}, {0xd1, 0x69, 0xcc, 0xff}}},\n    {{{  -511,   -204,   1946}, 0, { -3708,  12230}, {0xaf, 0xa7, 0x26, 0xff}}},\n    {{{  -511,   -204,   -921}, 0, {  7736,  12230}, {0x9d, 0xb1, 0x00, 0xff}}},\n    {{{  -101,   -409,   -921}, 0, {  7736,  14274}, {0xa4, 0xa9, 0x00, 0xff}}},\n};\n\n// 0x070089A8 - 0x07008A98\nstatic const Vtx jrb_seg7_vertex_070089A8[] = {\n    {{{  -511,   -204,   1946}, 0, { -3708,  12230}, {0xaf, 0xa7, 0x26, 0xff}}},\n    {{{  -101,   -409,   -921}, 0, {  7736,  14274}, {0xa4, 0xa9, 0x00, 0xff}}},\n    {{{  -101,   -409,   1946}, 0, { -3708,  14274}, {0x8d, 0xce, 0x0f, 0xff}}},\n    {{{  -716,    205,   1946}, 0, { -3708,   8142}, {0x89, 0xe4, 0x1e, 0xff}}},\n    {{{  -511,   -204,   -921}, 0, {  7736,  12230}, {0x9d, 0xb1, 0x00, 0xff}}},\n    {{{  -101,      0,   2560}, 0, { -6160,  10186}, {0x91, 0xd5, 0x2b, 0xff}}},\n    {{{  -409,    307,   2560}, 0, { -6160,   7120}, {0x9c, 0xe5, 0x48, 0xff}}},\n    {{{  -306,    102,   2560}, 0, { -6160,   9164}, {0xc0, 0xc3, 0x5a, 0xff}}},\n    {{{  -716,    205,   -921}, 0, {  7736,   8142}, {0x82, 0xf2, 0x00, 0xff}}},\n    {{{  -409,    819,   2560}, 0, { -6160,   2010}, {0xa3, 0x50, 0x1e, 0xff}}},\n    {{{  -716,    717,   1946}, 0, { -3708,   3032}, {0xa8, 0x5a, 0x03, 0xff}}},\n    {{{  -613,   1229,   -101}, 0, {   988,  -1054}, {0x47, 0x47, 0x4d, 0xff}}},\n    {{{  -716,   1229,   -101}, 0, {     0,  -1054}, {0xb9, 0x47, 0x4d, 0xff}}},\n    {{{  -716,   1126,   -101}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -613,   1126,   -101}, 0, {   988,      0}, {0x49, 0x49, 0x49, 0xff}}},\n};\n\n// 0x07008A98 - 0x07008AC8\nstatic const Vtx jrb_seg7_vertex_07008A98[] = {\n    {{{   256,   1075,   -101}, 0, {  9676,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   717,   1126,   -101}, 0, { 14276,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -716,   1126,   -101}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07008AC8 - 0x07008B88\nstatic const Vtx jrb_seg7_vertex_07008AC8[] = {\n    {{{   614,   1126,   -101}, 0, { 10188,   3544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   614,   1126,  -1330}, 0, { 14276,   3544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -613,   1126,  -1330}, 0, { 14276,  -2586}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{  -613,   1126,   -101}, 0, { 10188,  -2586}, {0x49, 0x49, 0x49, 0xff}}},\n    {{{   614,    614,   -101}, 0, {  -540,    478}, {0x00, 0x46, 0x69, 0xff}}},\n    {{{  -613,    614,   1946}, 0, {  9676,   6610}, {0x54, 0x5a, 0xe5, 0xff}}},\n    {{{   614,    614,   1946}, 0, {  9676,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -613,    614,   -101}, 0, {  -540,   6608}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{   102,    819,   2867}, 0, { 14276,   3032}, {0x00, 0x4e, 0x9d, 0xff}}},\n    {{{  -306,    614,   2560}, 0, { 12744,   5076}, {0x3e, 0x59, 0xbf, 0xff}}},\n    {{{  -101,    819,   2867}, 0, { 14276,   4054}, {0x1f, 0x1f, 0x8a, 0xff}}},\n    {{{   307,    614,   2560}, 0, { 12744,   2010}, {0x00, 0x79, 0xdc, 0xff}}},\n};\n\n// 0x07008B88 - 0x07008C90\nstatic const Gfx jrb_seg7_dl_07008B88[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&jrb_seg7_lights_070081A8.l, 1),\n    gsSPLight(&jrb_seg7_lights_070081A8.a, 2),\n    gsSPVertex(jrb_seg7_vertex_070081D8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(jrb_seg7_vertex_070082C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(jrb_seg7_vertex_070083B8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 5,  8,  9, 0x0,  5,  9,  6, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles( 4, 11, 10, 0x0,  4, 10,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008C90 - 0x07008DD0\nstatic const Gfx jrb_seg7_dl_07008C90[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&jrb_seg7_lights_070081C0.l, 1),\n    gsSPLight(&jrb_seg7_lights_070081C0.a, 2),\n    gsSPVertex(jrb_seg7_vertex_07008478, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 2,  4,  3, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  5,  9,  8, 0x0),\n    gsSP2Triangles( 5,  7,  1, 0x0,  6, 10, 11, 0x0),\n    gsSP2Triangles( 8, 10,  6, 0x0,  6, 11,  7, 0x0),\n    gsSP2Triangles( 7, 12, 13, 0x0,  7, 11, 12, 0x0),\n    gsSP2Triangles( 7,  2,  1, 0x0,  7, 13,  2, 0x0),\n    gsSP2Triangles(13,  4,  2, 0x0, 13, 12,  4, 0x0),\n    gsSP2Triangles( 9, 14,  8, 0x0,  9, 15, 14, 0x0),\n    gsSPVertex(jrb_seg7_vertex_07008578, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  1,  3,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12,  4, 13, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle( 4,  6, 13, 0x0),\n    gsSPVertex(jrb_seg7_vertex_07008668, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  1,  5,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008DD0 - 0x07008F70\nstatic const Gfx jrb_seg7_dl_07008DD0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(jrb_seg7_vertex_070086C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  4,  5,  1, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  6,  3,  9, 0x0),\n    gsSP2Triangles( 6,  9,  8, 0x0, 10, 11,  9, 0x0),\n    gsSP2Triangles( 3, 10,  9, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(jrb_seg7_vertex_070087B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 8,  7, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(11, 10, 12, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(jrb_seg7_vertex_070088A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  3,  7,  4, 0x0),\n    gsSP2Triangles( 8,  3,  6, 0x0,  8,  6,  9, 0x0),\n    gsSP2Triangles(10,  1,  0, 0x0, 10, 11,  1, 0x0),\n    gsSP2Triangles( 1, 12,  2, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(jrb_seg7_vertex_070089A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 0,  2,  5, 0x0,  6,  0,  7, 0x0),\n    gsSP2Triangles( 6,  3,  0, 0x0,  3,  8,  4, 0x0),\n    gsSP2Triangles( 9,  3,  6, 0x0,  9, 10,  3, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 13, 14, 0x0),\n    gsSPVertex(jrb_seg7_vertex_07008A98, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008F70 - 0x07008FD8\nstatic const Gfx jrb_seg7_dl_07008F70[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_0900A800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(jrb_seg7_vertex_07008AC8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9,  6,  5, 0x0),\n    gsSP2Triangles( 9, 11,  6, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008FD8 - 0x070090B0\nconst Gfx jrb_seg7_dl_07008FD8[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(5, 80, 75, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(jrb_seg7_dl_07008B88),\n    gsSPDisplayList(jrb_seg7_dl_07008C90),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(jrb_seg7_dl_07008DD0),\n    gsSPDisplayList(jrb_seg7_dl_07008F70),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x070090B0 - 0x07009190\nconst Gfx jrb_seg7_dl_070090B0[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(5, 80, 75, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(jrb_seg7_dl_07008B88),\n    gsSPDisplayList(jrb_seg7_dl_07008C90),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(jrb_seg7_dl_07008DD0),\n    gsSPDisplayList(jrb_seg7_dl_07008F70),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_XLU_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009190 - 0x070091A8\nstatic const Lights1 jrb_seg7_lights_07009190 = gdSPDefLights1(\n    0x1e, 0x2c, 0x3a,\n    0x79, 0xb2, 0xeb, 0x28, 0x28, 0x28\n);\n\n// 0x070091A8 - 0x070091C0\nstatic const Lights1 jrb_seg7_lights_070091A8 = gdSPDefLights1(\n    0x19, 0x2c, 0x3f,\n    0x65, 0xb2, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x070091C0 - 0x070091D8\nstatic const Lights1 jrb_seg7_lights_070091C0 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x070091D8 - 0x07009218\nstatic const Vtx jrb_seg7_vertex_070091D8[] = {\n    {{{  -679,   1024,  -1426}, 0, {   990,      0}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{  -588,    819,  -1610}, 0, {     0,    990}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{  -679,    819,  -1426}, 0, {   990,    990}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{  -588,   1024,  -1610}, 0, {     0,      0}, {0x8f, 0x00, 0xc8, 0xff}}},\n};\n\n// 0x07009218 - 0x07009258\nstatic const Vtx jrb_seg7_vertex_07009218[] = {\n    {{{  -204,   1024,  -1955}, 0, {  2012,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   205,   1024,  -1955}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   205,    819,  -1955}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -204,    819,  -1955}, 0, {  2012,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07009258 - 0x07009358\nstatic const Vtx jrb_seg7_vertex_07009258[] = {\n    {{{   103,   -306,  -1637}, 0, {  5196,    984}, {0x00, 0xcf, 0x8c, 0xff}}},\n    {{{  -101,   -306,  -1637}, 0, {  5114,    700}, {0x94, 0xcd, 0xd7, 0xff}}},\n    {{{  -101,    512,  -1637}, 0, {  5466,   -622}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -511,   1536,  -1740}, 0, {  8144,    990}, {0xad, 0x5c, 0xe9, 0xff}}},\n    {{{  -716,   1331,  -1330}, 0, {  7122,      0}, {0x8e, 0x36, 0x00, 0xff}}},\n    {{{  -613,   1331,  -1330}, 0, {  7122,    480}, {0x49, 0x49, 0x49, 0xff}}},\n    {{{  -306,   1536,  -1945}, 0, {  8656,   2010}, {0xd5, 0x5c, 0xb6, 0xff}}},\n    {{{  -409,   1536,  -1740}, 0, {  8144,   1500}, {0x43, 0x54, 0x43, 0xff}}},\n    {{{  -306,   1536,  -1842}, 0, {  8400,   2010}, {0x15, 0x5c, 0x53, 0xff}}},\n    {{{   307,   1536,  -1945}, 0, {  8656,   5076}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{   307,   1536,  -1842}, 0, {  8400,   5076}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{  -101,   -409,   -921}, 0, {  3700,    848}, {0x8a, 0xd8, 0xec, 0xff}}},\n    {{{  -101,   -511,   -921}, 0, {  3662,    994}, {0xa7, 0xaa, 0xe8, 0xff}}},\n    {{{  -101,   -204,  -1330}, 0, {  4564,    554}, {0xa1, 0xc0, 0xcb, 0xff}}},\n    {{{   102,   -511,   -921}, 0, {  3742,   1278}, {0x00, 0x86, 0xde, 0xff}}},\n    {{{   102,    512,  -1637}, 0, {  5548,   -338}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07009358 - 0x070093A8\nstatic const Vtx jrb_seg7_vertex_07009358[] = {\n    {{{  -101,   -306,  -1637}, 0, {   478,   1328}, {0x94, 0xcd, 0xd7, 0xff}}},\n    {{{  -101,   -204,  -1330}, 0, {  1160,   1442}, {0xa1, 0xc0, 0xcb, 0xff}}},\n    {{{  -101,    205,  -1535}, 0, {  1500,    308}, {0x9f, 0xe8, 0xb3, 0xff}}},\n    {{{  -101,    512,  -1637}, 0, {  1842,   -486}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -101,    410,  -1535}, 0, {  1842,   -146}, {0xc8, 0x00, 0x8f, 0xff}}},\n};\n\n// 0x070093A8 - 0x07009488\nstatic const Vtx jrb_seg7_vertex_070093A8[] = {\n    {{{   614,   1229,  -1330}, 0, {  3648,    990}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{  -613,   1126,  -1330}, 0, { -1256,   2010}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   614,   1126,  -1330}, 0, {  3648,   2010}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -613,   1229,  -1330}, 0, { -1256,    990}, {0x39, 0x40, 0x5d, 0xff}}},\n    {{{  -409,   1536,  -1740}, 0, {  -540,      0}, {0x43, 0x54, 0x43, 0xff}}},\n    {{{  -306,   1229,  -1842}, 0, {     0,   3032}, {0x3c, 0x2a, 0x67, 0xff}}},\n    {{{  -306,   1536,  -1842}, 0, {     0,      0}, {0x15, 0x5c, 0x53, 0xff}}},\n    {{{   307,   1229,  -1842}, 0, {  3036,   3032}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{   307,   1536,  -1842}, 0, {  3036,      0}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{  -409,   1229,  -1740}, 0, {  -540,   3032}, {0x3f, 0x66, 0x28, 0xff}}},\n    {{{  -613,   1331,  -1330}, 0, { -1664,      0}, {0x49, 0x49, 0x49, 0xff}}},\n    {{{  -613,   1229,  -1330}, 0, { -1664,    990}, {0x39, 0x40, 0x5d, 0xff}}},\n    {{{  -409,   1229,  -1740}, 0, { -3300,    990}, {0x3f, 0x66, 0x28, 0xff}}},\n    {{{  -409,   1536,  -1740}, 0, { -3300,  -2076}, {0x43, 0x54, 0x43, 0xff}}},\n};\n\n// 0x07009488 - 0x07009588\nstatic const Vtx jrb_seg7_vertex_07009488[] = {\n    {{{   307,    717,  -1945}, 0, {  -540,   8142}, {0x00, 0xb6, 0x9a, 0xff}}},\n    {{{   307,    410,  -1535}, 0, {  -540,  11208}, {0x00, 0x9b, 0xb4, 0xff}}},\n    {{{  -306,    410,  -1535}, 0, {  2524,  11208}, {0xd6, 0xb8, 0xa1, 0xff}}},\n    {{{  -716,    614,  -1330}, 0, {  9372,   4054}, {0x90, 0xdd, 0xd2, 0xff}}},\n    {{{  -511,    717,  -1740}, 0, { 11004,   3032}, {0xa6, 0xd3, 0xb4, 0xff}}},\n    {{{  -511,    410,  -1330}, 0, {  9372,   6098}, {0x9f, 0xda, 0xba, 0xff}}},\n    {{{  -306,    410,  -1535}, 0, { 10188,   6098}, {0xd6, 0xb8, 0xa1, 0xff}}},\n    {{{  -306,    717,  -1945}, 0, { 11824,   3032}, {0xdc, 0xd4, 0x8f, 0xff}}},\n    {{{  -306,   1536,  -1945}, 0, { 11824,  -5142}, {0xd5, 0x5c, 0xb6, 0xff}}},\n    {{{  -511,   1536,  -1740}, 0, { 11004,  -5142}, {0xad, 0x5c, 0xe9, 0xff}}},\n    {{{  -306,    307,  -1535}, 0, { 10188,   7120}, {0xce, 0xee, 0x8d, 0xff}}},\n    {{{  -306,    717,  -1945}, 0, {  2524,   8142}, {0xdc, 0xd4, 0x8f, 0xff}}},\n    {{{  -306,   -101,  -1330}, 0, {  2524,  16318}, {0xc7, 0xbc, 0xa6, 0xff}}},\n    {{{  -306,    307,  -1535}, 0, {  2524,  12230}, {0xce, 0xee, 0x8d, 0xff}}},\n    {{{  -101,    205,  -1535}, 0, {  1500,  13252}, {0x9f, 0xe8, 0xb3, 0xff}}},\n    {{{  -101,    410,  -1535}, 0, {  1500,  11208}, {0xc8, 0x00, 0x8f, 0xff}}},\n};\n\n// 0x07009588 - 0x07009688\nstatic const Vtx jrb_seg7_vertex_07009588[] = {\n    {{{  -716,    205,   -921}, 0, {  7736,   8142}, {0x90, 0xef, 0xc8, 0xff}}},\n    {{{  -716,    410,   -921}, 0, {  7736,   6098}, {0x8b, 0xe2, 0xdd, 0xff}}},\n    {{{  -511,    410,  -1330}, 0, {  9372,   6098}, {0x9f, 0xda, 0xba, 0xff}}},\n    {{{  -716,    614,  -1330}, 0, {  9372,   4054}, {0x90, 0xdd, 0xd2, 0xff}}},\n    {{{  -716,   1331,  -1330}, 0, {  9372,  -3098}, {0x8e, 0x36, 0x00, 0xff}}},\n    {{{  -511,   1536,  -1740}, 0, { 11004,  -5142}, {0xad, 0x5c, 0xe9, 0xff}}},\n    {{{  -101,    205,  -1535}, 0, {  1500,  13252}, {0x9f, 0xe8, 0xb3, 0xff}}},\n    {{{  -306,    307,  -1535}, 0, {  2524,  12230}, {0xce, 0xee, 0x8d, 0xff}}},\n    {{{  -101,    410,  -1535}, 0, {  1500,  11208}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{   307,    717,  -1945}, 0, {  -540,   8142}, {0x00, 0xb6, 0x9a, 0xff}}},\n    {{{  -306,    717,  -1945}, 0, {  2524,   8142}, {0xdc, 0xd4, 0x8f, 0xff}}},\n    {{{   307,   1536,  -1945}, 0, {  -540,      0}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{  -306,   -101,  -1330}, 0, {  2524,  16318}, {0xc7, 0xbc, 0xa6, 0xff}}},\n    {{{  -101,   -204,  -1330}, 0, {  1500,  17340}, {0xa1, 0xc0, 0xcb, 0xff}}},\n    {{{  -306,    307,  -1535}, 0, { 10188,   7120}, {0xce, 0xee, 0x8d, 0xff}}},\n    {{{  -511,    205,  -1330}, 0, {  9372,   8142}, {0x9f, 0xdf, 0xb7, 0xff}}},\n};\n\n// 0x07009688 - 0x07009738\nstatic const Vtx jrb_seg7_vertex_07009688[] = {\n    {{{  -511,    205,  -1330}, 0, {  9372,   8142}, {0x9f, 0xdf, 0xb7, 0xff}}},\n    {{{  -306,    307,  -1535}, 0, { 10188,   7120}, {0xce, 0xee, 0x8d, 0xff}}},\n    {{{  -306,   -101,  -1330}, 0, {  9372,  11208}, {0xc7, 0xbc, 0xa6, 0xff}}},\n    {{{  -716,    205,   -921}, 0, {  7736,   8142}, {0x90, 0xef, 0xc8, 0xff}}},\n    {{{  -511,    410,  -1330}, 0, {  9372,   6098}, {0x9f, 0xda, 0xba, 0xff}}},\n    {{{  -511,   -204,   -921}, 0, {  7736,  12230}, {0xb3, 0xad, 0xc8, 0xff}}},\n    {{{  -101,   -204,  -1330}, 0, {  9372,  12230}, {0xa1, 0xc0, 0xcb, 0xff}}},\n    {{{  -101,   -409,   -921}, 0, {  7736,  14274}, {0x8a, 0xd8, 0xec, 0xff}}},\n    {{{  -306,    717,  -1945}, 0, {  2524,   8142}, {0xdc, 0xd4, 0x8f, 0xff}}},\n    {{{  -306,   1536,  -1945}, 0, {  2524,      0}, {0xd5, 0x5c, 0xb6, 0xff}}},\n    {{{   307,   1536,  -1945}, 0, {  -540,      0}, {0x00, 0x59, 0xa7, 0xff}}},\n};\n\n// 0x07009738 - 0x07009798\nstatic const Vtx jrb_seg7_vertex_07009738[] = {\n    {{{  -409,   1229,  -1740}, 0, { 16320,  -1566}, {0x3f, 0x66, 0x28, 0xff}}},\n    {{{  -613,   1229,  -1330}, 0, { 14276,  -2586}, {0x39, 0x40, 0x5d, 0xff}}},\n    {{{   614,   1229,  -1330}, 0, { 14276,   3544}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{   410,   1229,  -1740}, 0, { 16320,   2520}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   307,   1229,  -1842}, 0, { 16832,   2010}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{  -306,   1229,  -1842}, 0, { 16832,  -1054}, {0x3c, 0x2a, 0x67, 0xff}}},\n};\n\n// 0x07009798 - 0x07009808\nstatic const Gfx jrb_seg7_dl_07009798[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&jrb_seg7_lights_07009190.l, 1),\n    gsSPLight(&jrb_seg7_lights_07009190.a, 2),\n    gsSPVertex(jrb_seg7_vertex_070091D8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPLight(&jrb_seg7_lights_070091A8.l, 1),\n    gsSPLight(&jrb_seg7_lights_070091A8.a, 2),\n    gsSPVertex(jrb_seg7_vertex_07009218, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009808 - 0x070098C0\nstatic const Gfx jrb_seg7_dl_07009808[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&jrb_seg7_lights_070091C0.l, 1),\n    gsSPLight(&jrb_seg7_lights_070091C0.a, 2),\n    gsSPVertex(jrb_seg7_vertex_07009258, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  7, 0x0,  3,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6,  8, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0, 11,  1, 12, 0x0),\n    gsSP2Triangles(11, 13,  1, 0x0, 14,  1,  0, 0x0),\n    gsSP2Triangles(14, 12,  1, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(jrb_seg7_vertex_07009358, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP1Triangle( 2,  4,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070098C0 - 0x07009A10\nstatic const Gfx jrb_seg7_dl_070098C0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(jrb_seg7_vertex_070093A8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  4,  9,  5, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(jrb_seg7_vertex_07009488, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  4,  7,  6, 0x0),\n    gsSP2Triangles( 8,  7,  4, 0x0,  9,  4,  3, 0x0),\n    gsSP2Triangles( 8,  4,  9, 0x0, 10,  5,  6, 0x0),\n    gsSP2Triangles(11,  0,  2, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(13,  2, 15, 0x0),\n    gsSPVertex(jrb_seg7_vertex_07009588, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  3,  1, 0x0,  5,  3,  4, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12,  6, 13, 0x0, 14, 15,  2, 0x0),\n    gsSPVertex(jrb_seg7_vertex_07009688, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 3,  0,  5, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 5,  2,  6, 0x0,  5,  6,  7, 0x0),\n    gsSP1Triangle( 8,  9, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009A10 - 0x07009A58\nstatic const Gfx jrb_seg7_dl_07009A10[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_0900A800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(jrb_seg7_vertex_07009738, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  0,  3,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009A58 - 0x07009B30\nconst Gfx jrb_seg7_dl_07009A58[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(5, 80, 75, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(jrb_seg7_dl_07009798),\n    gsSPDisplayList(jrb_seg7_dl_07009808),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(jrb_seg7_dl_070098C0),\n    gsSPDisplayList(jrb_seg7_dl_07009A10),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009B30 - 0x07009C10\nconst Gfx jrb_seg7_dl_07009B30[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(5, 80, 75, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(jrb_seg7_dl_07009798),\n    gsSPDisplayList(jrb_seg7_dl_07009808),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(jrb_seg7_dl_070098C0),\n    gsSPDisplayList(jrb_seg7_dl_07009A10),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_XLU_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009C10 - 0x07009C28\nstatic const Lights1 jrb_seg7_lights_07009C10 = gdSPDefLights1(\n    0x1e, 0x2c, 0x3a,\n    0x79, 0xb2, 0xeb, 0x28, 0x28, 0x28\n);\n\n// 0x07009C28 - 0x07009C40\nstatic const Lights1 jrb_seg7_lights_07009C28 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07009C40 - 0x07009C58\nstatic const Lights1 jrb_seg7_lights_07009C40 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x07009C58 - 0x07009D48\nstatic const Vtx jrb_seg7_vertex_07009C58[] = {\n    {{{   727,    307,   -613}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   727,    512,   -613}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   727,    512,   -409}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   727,    819,   -409}, 0, { -1052,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   727,   1024,   -409}, 0, { -1052,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   727,   1024,   -204}, 0, { -2074,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   727,    819,   -204}, 0, { -2074,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   727,    819,   -921}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   727,   1024,   -716}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   727,    819,   -716}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   727,   1024,   -921}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   727,    307,   1434}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   727,    512,   1638}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   727,    307,   1638}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   727,    512,   1434}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07009D48 - 0x07009E38\nstatic const Vtx jrb_seg7_vertex_07009D48[] = {\n    {{{   727,    307,    410}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   727,    512,    410}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   727,    512,    614}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   727,    307,   -613}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   727,    512,   -409}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   727,    307,   -409}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   727,    307,   -101}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   727,    512,    102}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   727,    307,    102}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   727,    512,   -101}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   727,    307,    922}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   727,    512,   1126}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   727,    307,   1126}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   727,    512,    922}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   727,    307,    614}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07009E38 - 0x07009F38\nstatic const Vtx jrb_seg7_vertex_07009E38[] = {\n    {{{   410,    819,   2560}, 0, {  2524,   3542}, {0x50, 0x60, 0x15, 0xff}}},\n    {{{   717,    717,   1946}, 0, {  5590,   5076}, {0x43, 0x6a, 0x0a, 0xff}}},\n    {{{   614,    717,   1946}, 0, {  5590,   4564}, {0xad, 0x58, 0xdc, 0xff}}},\n    {{{    41,   1126,   3482}, 0, { -4220,   -718}, {0x7e, 0x02, 0x0f, 0xff}}},\n    {{{    41,   1024,   3482}, 0, { -4260,   -570}, {0x7d, 0x00, 0x12, 0xff}}},\n    {{{   102,    717,   3072}, 0, { -3566,    -44}, {0x7e, 0x02, 0x0a, 0xff}}},\n    {{{   102,    922,   2970}, 0, { -3292,   -338}, {0x71, 0xf5, 0x37, 0xff}}},\n    {{{   102,   -101,   2662}, 0, { -2976,    690}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,   1024,   2970}, 0, { -3252,   -486}, {0x72, 0x35, 0x06, 0xff}}},\n    {{{   102,      0,   2560}, 0, { -2740,    544}, {0x5d, 0xc3, 0x3c, 0xff}}},\n    {{{   102,    922,   2867}, 0, {   990,   2010}, {0xc2, 0x50, 0xb5, 0xff}}},\n    {{{   102,   1024,   2970}, 0, {   480,   2010}, {0x72, 0x35, 0x06, 0xff}}},\n    {{{   307,    819,   2560}, 0, {  2524,   3032}, {0xab, 0x40, 0xbc, 0xff}}},\n    {{{   614,    717,   -101}, 0, { 15810,   4566}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{   717,    717,   -101}, 0, { 15810,   5076}, {0x7c, 0x18, 0x00, 0xff}}},\n    {{{   102,   -409,   1946}, 0, { -1718,   1130}, {0x6c, 0xc0, 0x0c, 0xff}}},\n};\n\n// 0x07009F38 - 0x07009FC8\nstatic const Vtx jrb_seg7_vertex_07009F38[] = {\n    {{{   102,   -101,   2662}, 0, { -2976,    690}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,   -511,   2048}, 0, { -1954,   1278}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,   -409,   1946}, 0, { -1718,   1130}, {0x6c, 0xc0, 0x0c, 0xff}}},\n    {{{   102,   -409,   -921}, 0, {  3782,   1130}, {0x77, 0xd5, 0x00, 0xff}}},\n    {{{   102,   -511,   -921}, 0, {  3742,   1278}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   717,   1229,   -101}, 0, {  5078,   7120}, {0x28, 0x51, 0x58, 0xff}}},\n    {{{   717,   1331,  -1330}, 0, {  7122,   7120}, {0x71, 0x38, 0x04, 0xff}}},\n    {{{   614,   1331,  -1330}, 0, {  7122,   6610}, {0xa7, 0x59, 0x07, 0xff}}},\n    {{{   614,   1229,   -101}, 0, {  5078,   6610}, {0xb9, 0x47, 0x4d, 0xff}}},\n};\n\n// 0x07009FC8 - 0x0700A048\nstatic const Vtx jrb_seg7_vertex_07009FC8[] = {\n    {{{   512,   1024,   -306}, 0, {  5284,      0}, {0xac, 0xd6, 0x54, 0xff}}},\n    {{{   512,    819,   -306}, 0, {  5284,   2010}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{   512,    819,   -101}, 0, {  4464,   2010}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{   307,    819,   -306}, 0, {  5284,   2010}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{   307,   1024,   -306}, 0, {  5284,      0}, {0x33, 0x99, 0x33, 0xff}}},\n    {{{   512,   1024,   -101}, 0, {  4464,      0}, {0xc8, 0x8f, 0x00, 0xff}}},\n    {{{   307,   1024,   -101}, 0, {  4464,      0}, {0x71, 0xc8, 0x00, 0xff}}},\n    {{{   307,    819,   -101}, 0, {  4464,   2010}, {0x38, 0x71, 0x00, 0xff}}},\n};\n\n// 0x0700A048 - 0x0700A128\nstatic const Vtx jrb_seg7_vertex_0700A048[] = {\n    {{{   717,   1229,   -101}, 0, {  5692,      0}, {0x28, 0x51, 0x58, 0xff}}},\n    {{{   614,   1126,   -101}, 0, {  5284,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   717,   1126,   -101}, 0, {  5692,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   614,   1229,   -101}, 0, {  5284,      0}, {0xb9, 0x47, 0x4d, 0xff}}},\n    {{{   410,    307,   2560}, 0, { -6160,   7120}, {0x63, 0xeb, 0x4c, 0xff}}},\n    {{{   102,    922,   2970}, 0, { -7796,    990}, {0x71, 0xf5, 0x37, 0xff}}},\n    {{{   307,    102,   2560}, 0, { -6160,   9164}, {0x48, 0xc4, 0x54, 0xff}}},\n    {{{   410,    819,   2560}, 0, { -6160,   2010}, {0x50, 0x60, 0x15, 0xff}}},\n    {{{   102,      0,   2560}, 0, { -6160,  10186}, {0x5d, 0xc3, 0x3c, 0xff}}},\n    {{{   102,   1024,   2970}, 0, { -7796,      0}, {0x72, 0x35, 0x06, 0xff}}},\n    {{{   614,    717,   1946}, 0, { -3708,   3032}, {0xad, 0x58, 0xdc, 0xff}}},\n    {{{   307,    614,   2560}, 0, { -6160,   4054}, {0x91, 0x00, 0xc3, 0xff}}},\n    {{{   307,    819,   2560}, 0, { -6160,   2010}, {0xab, 0x40, 0xbc, 0xff}}},\n    {{{   102,    819,   2867}, 0, { -7388,   2010}, {0x97, 0x00, 0xba, 0xff}}},\n};\n\n// 0x0700A128 - 0x0700A228\nstatic const Vtx jrb_seg7_vertex_0700A128[] = {\n    {{{   717,    410,   -921}, 0, {  7736,   6098}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   717,   1331,  -1330}, 0, {  9372,  -3098}, {0x71, 0x38, 0x04, 0xff}}},\n    {{{   717,    717,   -101}, 0, {  4464,   3032}, {0x7c, 0x18, 0x00, 0xff}}},\n    {{{   307,    819,   2560}, 0, { -6160,   2010}, {0xab, 0x40, 0xbc, 0xff}}},\n    {{{   102,    819,   2867}, 0, { -7388,   2010}, {0x97, 0x00, 0xba, 0xff}}},\n    {{{   102,    922,   2867}, 0, { -7388,    990}, {0xc2, 0x50, 0xb5, 0xff}}},\n    {{{   614,    717,   1946}, 0, { -3708,   3032}, {0xad, 0x58, 0xdc, 0xff}}},\n    {{{   614,    614,   1946}, 0, { -3708,   4054}, {0x83, 0x00, 0xed, 0xff}}},\n    {{{   307,    614,   2560}, 0, { -6160,   4054}, {0x91, 0x00, 0xc3, 0xff}}},\n    {{{   614,    717,   -101}, 0, {  4464,   3032}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{   614,    614,   -101}, 0, {  4464,   4054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   614,   1331,  -1330}, 0, { -1664,      0}, {0xa7, 0x59, 0x07, 0xff}}},\n    {{{   614,   1126,  -1330}, 0, { -1664,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   614,   1126,   -101}, 0, {  3240,   2010}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   614,   1229,   -101}, 0, {  3240,    990}, {0xb9, 0x47, 0x4d, 0xff}}},\n    {{{   717,   1229,   -101}, 0, {  4464,  -2076}, {0x28, 0x51, 0x58, 0xff}}},\n};\n\n// 0x0700A228 - 0x0700A2F8\nstatic const Vtx jrb_seg7_vertex_0700A228[] = {\n    {{{   717,    205,   -921}, 0, {  7736,   8142}, {0x7b, 0xe3, 0x00, 0xff}}},\n    {{{   717,    410,   -921}, 0, {  7736,   6098}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   717,    717,   -101}, 0, {  4464,   3032}, {0x7c, 0x18, 0x00, 0xff}}},\n    {{{   717,    205,   1946}, 0, { -3708,   8142}, {0x77, 0xe9, 0x22, 0xff}}},\n    {{{   717,    717,   1946}, 0, { -3708,   3032}, {0x43, 0x6a, 0x0a, 0xff}}},\n    {{{   512,   -204,   1946}, 0, { -3708,  12230}, {0x57, 0xab, 0x22, 0xff}}},\n    {{{   512,   -204,   -921}, 0, {  7736,  12230}, {0x4f, 0x9d, 0x00, 0xff}}},\n    {{{   102,      0,   2560}, 0, { -6160,  10186}, {0x5d, 0xc3, 0x3c, 0xff}}},\n    {{{   102,   -409,   1946}, 0, { -3708,  14274}, {0x6c, 0xc0, 0x0c, 0xff}}},\n    {{{   307,    102,   2560}, 0, { -6160,   9164}, {0x48, 0xc4, 0x54, 0xff}}},\n    {{{   410,    307,   2560}, 0, { -6160,   7120}, {0x63, 0xeb, 0x4c, 0xff}}},\n    {{{   102,   -409,   -921}, 0, {  7736,  14274}, {0x77, 0xd5, 0x00, 0xff}}},\n    {{{   410,    819,   2560}, 0, { -6160,   2010}, {0x50, 0x60, 0x15, 0xff}}},\n};\n\n// 0x0700A2F8 - 0x0700A3A8\nstatic const Gfx jrb_seg7_dl_0700A2F8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&jrb_seg7_lights_07009C10.l, 1),\n    gsSPLight(&jrb_seg7_lights_07009C10.a, 2),\n    gsSPVertex(jrb_seg7_vertex_07009C58, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(jrb_seg7_vertex_07009D48, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A3A8 - 0x0700A470\nstatic const Gfx jrb_seg7_dl_0700A3A8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&jrb_seg7_lights_07009C28.l, 1),\n    gsSPLight(&jrb_seg7_lights_07009C28.a, 2),\n    gsSPVertex(jrb_seg7_vertex_07009E38, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  8,  3, 0x0,  6,  7,  9, 0x0),\n    gsSP2Triangles( 0, 10, 11, 0x0,  0, 12, 10, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0,  1, 13,  2, 0x0),\n    gsSP2Triangles( 1, 14, 13, 0x0,  7, 15,  9, 0x0),\n    gsSPVertex(jrb_seg7_vertex_07009F38, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  5,  6,  7, 0x0),\n    gsSP1Triangle( 5,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A470 - 0x0700A608\nstatic const Gfx jrb_seg7_dl_0700A470[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&jrb_seg7_lights_07009C40.l, 1),\n    gsSPLight(&jrb_seg7_lights_07009C40.a, 2),\n    gsSPVertex(jrb_seg7_vertex_07009FC8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  4,  5,  6, 0x0),\n    gsSP2Triangles( 4,  0,  5, 0x0,  7,  1,  3, 0x0),\n    gsSP2Triangles( 7,  2,  1, 0x0,  6,  7,  3, 0x0),\n    gsSP2Triangles( 0,  2,  5, 0x0,  6,  3,  4, 0x0),\n    gsSPLight(&jrb_seg7_lights_07009C28.l, 1),\n    gsSPLight(&jrb_seg7_lights_07009C28.a, 2),\n    gsSPVertex(jrb_seg7_vertex_0700A048, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  6,  5, 0x0,  5,  7,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSPVertex(jrb_seg7_vertex_0700A128, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  7,  6, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  1, 15,  2, 0x0),\n    gsSPVertex(jrb_seg7_vertex_0700A228, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 3,  0,  2, 0x0,  5,  6,  0, 0x0),\n    gsSP2Triangles( 5,  0,  3, 0x0,  7,  8,  5, 0x0),\n    gsSP2Triangles( 7,  5,  9, 0x0,  8,  6,  5, 0x0),\n    gsSP2Triangles( 9,  5,  3, 0x0,  9,  3, 10, 0x0),\n    gsSP2Triangles( 8, 11,  6, 0x0, 10,  3, 12, 0x0),\n    gsSP1Triangle( 3,  4, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A608 - 0x0700A6D8\nconst Gfx jrb_seg7_dl_0700A608[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(5, 80, 75, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(jrb_seg7_dl_0700A2F8),\n    gsSPDisplayList(jrb_seg7_dl_0700A3A8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(jrb_seg7_dl_0700A470),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A6D8 - 0x0700A6F0\nstatic const Lights1 jrb_seg7_lights_0700A6D8 = gdSPDefLights1(\n    0x1e, 0x2c, 0x3a,\n    0x79, 0xb2, 0xeb, 0x28, 0x28, 0x28\n);\n\n// 0x0700A6F0 - 0x0700A708\nstatic const Lights1 jrb_seg7_lights_0700A6F0 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700A708 - 0x0700A748\nstatic const Vtx jrb_seg7_vertex_0700A708[] = {\n    {{{   680,    819,  -1426}, 0, {   990,    990}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{   589,    819,  -1610}, 0, {     0,    990}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{   680,   1024,  -1426}, 0, {   990,      0}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{   589,   1024,  -1610}, 0, {     0,      0}, {0x71, 0x00, 0xc8, 0xff}}},\n};\n\n// 0x0700A748 - 0x0700A838\nstatic const Vtx jrb_seg7_vertex_0700A748[] = {\n    {{{   102,    205,  -1535}, 0, {   110,    596}, {0x6d, 0xf2, 0xc1, 0xff}}},\n    {{{   102,    512,  -1637}, 0, {   534,    440}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{   102,    410,  -1535}, 0, {   330,    440}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{   102,   -511,   -921}, 0, {  3742,   1278}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{   103,   -306,  -1637}, 0, {  5196,    984}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{   102,   -204,  -1330}, 0, {  4646,    838}, {0x61, 0xc7, 0xc6, 0xff}}},\n    {{{   102,    205,  -1535}, 0, {  5194,    250}, {0x6d, 0xf2, 0xc1, 0xff}}},\n    {{{   102,    512,  -1637}, 0, {  5548,   -338}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{   102,   -409,   -921}, 0, {  3782,   1130}, {0x6a, 0xc3, 0xe2, 0xff}}},\n    {{{   717,   1331,  -1330}, 0, {  7122,   7120}, {0x6a, 0x44, 0x00, 0xff}}},\n    {{{   512,   1536,  -1740}, 0, {  8144,   6098}, {0x49, 0x5c, 0xd3, 0xff}}},\n    {{{   410,   1536,  -1740}, 0, {  8144,   5588}, {0xba, 0x4e, 0x46, 0xff}}},\n    {{{   307,   1536,  -1842}, 0, {  8400,   5076}, {0xc1, 0x59, 0x3f, 0xff}}},\n    {{{   307,   1536,  -1945}, 0, {  8656,   5076}, {0x3f, 0x59, 0xc1, 0xff}}},\n    {{{   614,   1331,  -1330}, 0, {  7122,   6610}, {0xb7, 0x49, 0x49, 0xff}}},\n};\n\n// 0x0700A838 - 0x0700A938\nstatic const Vtx jrb_seg7_vertex_0700A838[] = {\n    {{{   512,   -204,   -921}, 0, {  7736,  12230}, {0x4d, 0xad, 0xc8, 0xff}}},\n    {{{   512,    205,  -1330}, 0, {  9372,   8142}, {0x61, 0xdf, 0xb7, 0xff}}},\n    {{{   717,    205,   -921}, 0, {  7736,   8142}, {0x70, 0xef, 0xc8, 0xff}}},\n    {{{   512,    410,  -1330}, 0, {  9372,   6098}, {0x61, 0xda, 0xba, 0xff}}},\n    {{{   512,    717,  -1740}, 0, { 11004,   3032}, {0x5e, 0xd3, 0xba, 0xff}}},\n    {{{   717,    614,  -1330}, 0, {  9372,   4054}, {0x6e, 0xd4, 0xd5, 0xff}}},\n    {{{   307,    410,  -1535}, 0, { 10188,   6098}, {0x3e, 0xcf, 0x9e, 0xff}}},\n    {{{   717,    410,   -921}, 0, {  7736,   6098}, {0x75, 0xe2, 0xdd, 0xff}}},\n    {{{   307,    307,  -1535}, 0, { 10188,   7120}, {0x2f, 0xe8, 0x8d, 0xff}}},\n    {{{   717,   1331,  -1330}, 0, {  9372,  -3098}, {0x6a, 0x44, 0x00, 0xff}}},\n    {{{   102,    410,  -1535}, 0, {   480,  11208}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{   307,    307,  -1535}, 0, {  -540,  12230}, {0x2f, 0xe8, 0x8d, 0xff}}},\n    {{{   102,    205,  -1535}, 0, {   480,  13252}, {0x6d, 0xf2, 0xc1, 0xff}}},\n    {{{   307,    410,  -1535}, 0, {  -540,  11208}, {0x3e, 0xcf, 0x9e, 0xff}}},\n    {{{   307,   -101,  -1330}, 0, {  9372,  11208}, {0x3f, 0xba, 0xad, 0xff}}},\n    {{{   102,   -204,  -1330}, 0, {  9372,  12230}, {0x61, 0xc7, 0xc6, 0xff}}},\n};\n\n// 0x0700A938 - 0x0700AA18\nstatic const Vtx jrb_seg7_vertex_0700A938[] = {\n    {{{   102,   -409,   -921}, 0, {  7736,  14274}, {0x6a, 0xc3, 0xe2, 0xff}}},\n    {{{   102,   -204,  -1330}, 0, {  9372,  12230}, {0x61, 0xc7, 0xc6, 0xff}}},\n    {{{   512,   -204,   -921}, 0, {  7736,  12230}, {0x4d, 0xad, 0xc8, 0xff}}},\n    {{{   102,   -204,  -1330}, 0, {   480,  17340}, {0x61, 0xc7, 0xc6, 0xff}}},\n    {{{   307,    307,  -1535}, 0, {  -540,  12230}, {0x2f, 0xe8, 0x8d, 0xff}}},\n    {{{   307,   -101,  -1330}, 0, {  -540,  16318}, {0x3f, 0xba, 0xad, 0xff}}},\n    {{{   102,    205,  -1535}, 0, {   480,  13252}, {0x6d, 0xf2, 0xc1, 0xff}}},\n    {{{   512,   1536,  -1740}, 0, { 11004,  -5142}, {0x49, 0x5c, 0xd3, 0xff}}},\n    {{{   307,    717,  -1945}, 0, { 11824,   3032}, {0x57, 0xe1, 0xa9, 0xff}}},\n    {{{   307,   1536,  -1945}, 0, { 11824,  -5142}, {0x3f, 0x59, 0xc1, 0xff}}},\n    {{{   512,    717,  -1740}, 0, { 11004,   3032}, {0x5e, 0xd3, 0xba, 0xff}}},\n    {{{   307,    410,  -1535}, 0, { 10188,   6098}, {0x3e, 0xcf, 0x9e, 0xff}}},\n    {{{   717,   1331,  -1330}, 0, {  9372,  -3098}, {0x6a, 0x44, 0x00, 0xff}}},\n    {{{   717,    614,  -1330}, 0, {  9372,   4054}, {0x6e, 0xd4, 0xd5, 0xff}}},\n};\n\n// 0x0700AA18 - 0x0700AA98\nstatic const Vtx jrb_seg7_vertex_0700AA18[] = {\n    {{{   307,   1536,  -1842}, 0, {  3036,      0}, {0xc1, 0x59, 0x3f, 0xff}}},\n    {{{   307,   1229,  -1842}, 0, {  3036,   3032}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{   410,   1229,  -1740}, 0, {  3544,   3032}, {0x9e, 0x00, 0x4f, 0xff}}},\n    {{{   410,   1536,  -1740}, 0, {  3544,      0}, {0xba, 0x4e, 0x46, 0xff}}},\n    {{{   410,   1536,  -1740}, 0, { -3300,  -2076}, {0xba, 0x4e, 0x46, 0xff}}},\n    {{{   410,   1229,  -1740}, 0, { -3300,    990}, {0x9e, 0x00, 0x4f, 0xff}}},\n    {{{   614,   1229,  -1330}, 0, { -1664,    990}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{   614,   1331,  -1330}, 0, { -1664,      0}, {0xb7, 0x49, 0x49, 0xff}}},\n};\n\n// 0x0700AA98 - 0x0700AAE0\nstatic const Gfx jrb_seg7_dl_0700AA98[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&jrb_seg7_lights_0700A6D8.l, 1),\n    gsSPLight(&jrb_seg7_lights_0700A6D8.a, 2),\n    gsSPVertex(jrb_seg7_vertex_0700A708, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700AAE0 - 0x0700AB60\nstatic const Gfx jrb_seg7_dl_0700AAE0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&jrb_seg7_lights_0700A6F0.l, 1),\n    gsSPLight(&jrb_seg7_lights_0700A6F0.a, 2),\n    gsSPVertex(jrb_seg7_vertex_0700A748, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  4,  7,  6, 0x0),\n    gsSP2Triangles( 3,  5,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(10, 12, 11, 0x0, 10, 13, 12, 0x0),\n    gsSP1Triangle( 9, 11, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700AB60 - 0x0700AC68\nstatic const Gfx jrb_seg7_dl_0700AB60[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(jrb_seg7_vertex_0700A838, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  4,  3, 0x0,  3,  7,  2, 0x0),\n    gsSP2Triangles( 3,  2,  1, 0x0,  3,  1,  8, 0x0),\n    gsSP2Triangles( 6,  3,  8, 0x0,  5,  7,  3, 0x0),\n    gsSP2Triangles( 7,  5,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(10, 13, 11, 0x0, 14,  8,  1, 0x0),\n    gsSP2Triangles(15, 14,  0, 0x0,  0, 14,  1, 0x0),\n    gsSPVertex(jrb_seg7_vertex_0700A938, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0, 12, 13, 10, 0x0),\n    gsSP2Triangles(12, 10,  7, 0x0,  7, 10,  8, 0x0),\n    gsSPVertex(jrb_seg7_vertex_0700AA18, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700AC68 - 0x0700AD38\nconst Gfx jrb_seg7_dl_0700AC68[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(5, 80, 75, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(jrb_seg7_dl_0700AA98),\n    gsSPDisplayList(jrb_seg7_dl_0700AAE0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(jrb_seg7_dl_0700AB60),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/level_defines.h",
    "content": "#ifdef VERSION_JP\n#define VAL_DIFF 25000\n#else\n#define VAL_DIFF 60000\n#endif\n\n// Define lists for list of level for macros. Each of the following fields are described:\n// Argument 1: Internal ROM name of the level.\n// Argument 2: Level enumerator for enum used to identify the level ID.\n// Argument 3: Course enumerator for enum used to identify the course ID.\n// Argument 4: Shorthand name of the level which should be the name of the levels/ folder of the level.\n// Argument 5: The shared texture bin used.\n// Argument 6: Acoustic reaches for each levels.\n// Argument 7, 8, 9: Echo levels for individual areas.\n// Argument 10: Specify dynamic music tables for levels, if specified. _ for none.\n// Argument 11: Specify level camera table, if specified. _ for none.\n\n// NOTE: Be sure to edit sZoomOutAreaMasks in camera.c, as there isnt a good way to macro those right now.\n// TODO: Figure something out for sZoomOutAreaMasks?\nSTUB_LEVEL(  \"\",               LEVEL_UNKNOWN_1,        COURSE_NONE,                                 20000,    0x00, 0x00, 0x00, _,         _)\nSTUB_LEVEL(  \"\",               LEVEL_UNKNOWN_2,        COURSE_NONE,                                 20000,    0x00, 0x00, 0x00, _,         _)\nSTUB_LEVEL(  \"\",               LEVEL_UNKNOWN_3,        COURSE_NONE,                                 20000,    0x00, 0x00, 0x00, _,         _)\nDEFINE_LEVEL(\"TERESA OBAKE\",   LEVEL_BBH,              COURSE_BBH,      bbh,              spooky,   28000,    0x28, 0x28, 0x28, sDynBBH,   sCamBBH)\nDEFINE_LEVEL(\"YYAMA1 % YSLD1\", LEVEL_CCM,              COURSE_CCM,      ccm,              snow,     17000,    0x10, 0x38, 0x38, _,         sCamCCM)\nDEFINE_LEVEL(\"SELECT ROOM\",    LEVEL_CASTLE,           COURSE_NONE,     castle_inside,    inside,   20000,    0x20, 0x20, 0x30, _,         sCamCastle)\nDEFINE_LEVEL(\"HORROR DUNGEON\", LEVEL_HMC,              COURSE_HMC,      hmc,              cave,     16000,    0x28, 0x28, 0x28, sDynHMC,   sCamHMC)\nDEFINE_LEVEL(\"SABAKU % PYRMD\", LEVEL_SSL,              COURSE_SSL,      ssl,              generic,  15000,    0x08, 0x30, 0x30, _,         sCamSSL)\nDEFINE_LEVEL(\"BATTLE FIELD\",   LEVEL_BOB,              COURSE_BOB,      bob,              generic,  15000,    0x08, 0x08, 0x08, _,         _)\nDEFINE_LEVEL(\"YUKIYAMA2\",      LEVEL_SL,               COURSE_SL,       sl,               snow,     14000,    0x10, 0x28, 0x28, _,         sCamSL)\nDEFINE_LEVEL(\"POOL KAI\",       LEVEL_WDW,              COURSE_WDW,      wdw,              grass,    17000,    0x10, 0x18, 0x18, sDynWDW,   _)\nDEFINE_LEVEL(\"WTDG % TINBOTU\", LEVEL_JRB,              COURSE_JRB,      jrb,              water,    20000,    0x10, 0x18, 0x18, sDynJRB,   _)\nDEFINE_LEVEL(\"BIG WORLD\",      LEVEL_THI,              COURSE_THI,      thi,              grass,    20000,    0x0c, 0x0c, 0x20, _,         sCamTHI)\nDEFINE_LEVEL(\"CLOCK TOWER\",    LEVEL_TTC,              COURSE_TTC,      ttc,              machine,  18000,    0x18, 0x18, 0x18, _,         _)\nDEFINE_LEVEL(\"RAINBOW CRUISE\", LEVEL_RR,               COURSE_RR,       rr,               sky,      20000,    0x20, 0x20, 0x20, _,         sCamRR)\nDEFINE_LEVEL(\"MAIN MAP\",       LEVEL_CASTLE_GROUNDS,   COURSE_NONE,     castle_grounds,   outside,  25000,    0x08, 0x08, 0x08, _,         _)\nDEFINE_LEVEL(\"EXT1 YOKO SCRL\", LEVEL_BITDW,            COURSE_BITDW,    bitdw,            sky,      16000,    0x28, 0x28, 0x28, _,         _)\nDEFINE_LEVEL(\"EXT7 HORI MINI\", LEVEL_VCUTM,            COURSE_VCUTM,    vcutm,            outside,  30000,    0x28, 0x28, 0x28, _,         _)\nDEFINE_LEVEL(\"EXT2 TIKA LAVA\", LEVEL_BITFS,            COURSE_BITFS,    bitfs,            sky,      16000,    0x28, 0x28, 0x28, _,         _)\nDEFINE_LEVEL(\"EXT9 SUISOU\",    LEVEL_SA,               COURSE_SA,       sa,               inside,   20000,    0x10, 0x10, 0x10, _,         _)\nDEFINE_LEVEL(\"EXT3 HEAVEN\",    LEVEL_BITS,             COURSE_BITS,     bits,             sky,      16000,    0x28, 0x28, 0x28, _,         _)\nDEFINE_LEVEL(\"FIREB1 % INVLC\", LEVEL_LLL,              COURSE_LLL,      lll,              fire,     22000,    0x08, 0x30, 0x30, _,         _)\nDEFINE_LEVEL(\"WATER LAND\",     LEVEL_DDD,              COURSE_DDD,      ddd,              water,    17000,    0x10, 0x20, 0x20, sDynDDD,   _)\nDEFINE_LEVEL(\"MOUNTAIN\",       LEVEL_WF,               COURSE_WF,       wf,               grass,    13000,    0x08, 0x08, 0x08, _,         _)\nDEFINE_LEVEL(\"ENDING\",         LEVEL_ENDING,           COURSE_CAKE_END, ending,           generic,  20000,    0x00, 0x00, 0x00, _,         _)\nDEFINE_LEVEL(\"URANIWA\",        LEVEL_CASTLE_COURTYARD, COURSE_NONE,     castle_courtyard, outside,  20000,    0x08, 0x08, 0x08, _,         _)\nDEFINE_LEVEL(\"EXT4 MINI SLID\", LEVEL_PSS,              COURSE_PSS,      pss,              mountain, 20000,    0x28, 0x28, 0x28, _,         _)\nDEFINE_LEVEL(\"IN THE FALL\",    LEVEL_COTMC,            COURSE_COTMC,    cotmc,            cave,     18000,    0x28, 0x28, 0x28, _,         sCamCotMC)\nDEFINE_LEVEL(\"EXT6 MARIO FLY\", LEVEL_TOTWC,            COURSE_TOTWC,    totwc,            sky,      20000,    0x20, 0x20, 0x20, _,         _)\nDEFINE_LEVEL(\"KUPPA1\",         LEVEL_BOWSER_1,         COURSE_BITDW,    bowser_1,         generic,  VAL_DIFF, 0x40, 0x40, 0x40, _,         _)\nDEFINE_LEVEL(\"EXT8 BLUE SKY\",  LEVEL_WMOTR,            COURSE_WMOTR,    wmotr,            generic,  20000,    0x28, 0x28, 0x28, _,         _)\nSTUB_LEVEL(  \"\",               LEVEL_UNKNOWN_32,       COURSE_NONE,                                 20000,    0x70, 0x00, 0x00, _,         _)\nDEFINE_LEVEL(\"KUPPA2\",         LEVEL_BOWSER_2,         COURSE_BITFS,    bowser_2,         fire,     VAL_DIFF, 0x40, 0x40, 0x40, _,         _)\nDEFINE_LEVEL(\"KUPPA3\",         LEVEL_BOWSER_3,         COURSE_BITS,     bowser_3,         generic,  VAL_DIFF, 0x40, 0x40, 0x40, _,         _)\nSTUB_LEVEL(  \"\",               LEVEL_UNKNOWN_35,       COURSE_NONE,                                 20000,    0x00, 0x00, 0x00, _,         _)\nDEFINE_LEVEL(\"DONKEY % SLID2\", LEVEL_TTM,              COURSE_TTM,      ttm,              mountain, 15000,    0x08, 0x08, 0x08, _,         _)\nSTUB_LEVEL(  \"\",               LEVEL_UNKNOWN_37,       COURSE_NONE,                                 20000,    0x00, 0x00, 0x00, _,         _)\nSTUB_LEVEL(  \"\",               LEVEL_UNKNOWN_38,       COURSE_NONE,                                 20000,    0x00, 0x00, 0x00, sDynUnk38, _)\n"
  },
  {
    "path": "levels/level_headers.h.in",
    "content": "// This file is to be processed by the Makefile to add #include \"\" before being included in build.\n\n#define STUB_LEVEL(_0, _1, _2, _3, _4, _5, _6, _7, _8)\n#define DEFINE_LEVEL(_0, _1, _2, folder, _4, _5, _6, _7, _8, _9, _10) levels/folder/header.h\n\n#include \"levels/level_defines.h\"\n\n#undef STUB_LEVEL\n#undef DEFINE_LEVEL\n"
  },
  {
    "path": "levels/level_rules.mk",
    "content": "#define STUB_LEVEL(_0, _1, _2, _3, _4, _5, _6, _7, _8)\n#define DEFINE_LEVEL(_0, _1, _2, folder, texturebin, _5, _6, _7, _8, _9, _10) $(eval $(call level_rules,folder,texturebin))\n\n#include \"levels/level_defines.h\"\n\n#undef STUB_LEVEL\n#undef DEFINE_LEVEL\n"
  },
  {
    "path": "levels/lll/areas/1/1/model.inc.c",
    "content": "// 0x0700FC90 - 0x0700FD70\nstatic const Vtx lll_seg7_vertex_0700FC90[] = {\n    {{{  6400,    -50,   4992}, 0, {     0,    932}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6400,     51,   5056}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6400,    -50,   5120}, 0, {   834,    390}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3840,     51,   6976}, 0, { -1052,    478}, {0x00, 0x43, 0x6b, 0xff}}},\n    {{{  3840,    -50,   7040}, 0, { -1052,    990}, {0x00, 0x43, 0x6b, 0xff}}},\n    {{{  6400,    -50,   7040}, 0, { 19386,    990}, {0x00, 0x43, 0x6b, 0xff}}},\n    {{{  6400,     51,   6976}, 0, { 19386,    480}, {0x00, 0x43, 0x6b, 0xff}}},\n    {{{  3840,    -50,   6912}, 0, { -1052,      0}, {0x00, 0x43, 0x95, 0xff}}},\n    {{{  3840,     51,   6976}, 0, { -1052,    478}, {0x00, 0x43, 0x95, 0xff}}},\n    {{{  6400,     51,   6976}, 0, { 19386,    480}, {0x00, 0x43, 0x95, 0xff}}},\n    {{{  6400,    -50,   6912}, 0, { 19386,      0}, {0x00, 0x43, 0x95, 0xff}}},\n    {{{  3840,    -50,   7040}, 0, { 13834,  -7734}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3840,     51,   6976}, 0, { 12968,  -8156}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3840,    -50,   6912}, 0, { 12968,  -7192}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700FD70 - 0x0700FE50\nstatic const Vtx lll_seg7_vertex_0700FD70[] = {\n    {{{  3840,    -50,   5120}, 0, {   834,    390}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3840,     51,   5056}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3840,    -50,   4992}, 0, {     0,    932}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3840,     51,   5056}, 0, { -1052, -14850}, {0x00, 0x43, 0x6b, 0xff}}},\n    {{{  6400,    -50,   5120}, 0, { 19386, -14340}, {0x00, 0x43, 0x6b, 0xff}}},\n    {{{  6400,     51,   5056}, 0, { 19386, -14850}, {0x00, 0x43, 0x6b, 0xff}}},\n    {{{  6400,    -50,   6912}, 0, { 12968,  -7192}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6400,     51,   6976}, 0, { 12968,  -8156}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6400,    -50,   7040}, 0, { 13834,  -7734}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3840,    -50,   5120}, 0, { -1052, -14340}, {0x00, 0x43, 0x6b, 0xff}}},\n    {{{  3840,     51,   5056}, 0, { -1052, -14850}, {0x00, 0x43, 0x95, 0xff}}},\n    {{{  6400,     51,   5056}, 0, { 19386, -14850}, {0x00, 0x43, 0x95, 0xff}}},\n    {{{  6400,    -50,   4992}, 0, { 19386, -15362}, {0x00, 0x43, 0x95, 0xff}}},\n    {{{  3840,    -50,   4992}, 0, { -1052, -15362}, {0x00, 0x43, 0x95, 0xff}}},\n};\n\n// 0x0700FE50 - 0x0700FF40\nstatic const Vtx lll_seg7_vertex_0700FE50[] = {\n    {{{  -255,    154,   4224}, 0, {   990,    582}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,    230,   4224}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,    230,   4096}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -383,    768,  -7231}, 0, {   224,   -798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   384,    768,  -6207}, 0, {  1756,   1244}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,    768,  -6335}, 0, {  2012,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -383,    768,  -6207}, 0, {   224,   1244}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,    768,  -6335}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,    768,  -7103}, 0, {  2012,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   384,    768,  -7231}, 0, {  1756,   -798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,    768,  -7103}, 0, {     0,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,    154,   4096}, 0, {     0,    582}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,    230,   4224}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,    154,   4224}, 0, {   990,    582}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,    230,   4096}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700FF40 - 0x07010030\nstatic const Vtx lll_seg7_vertex_0700FF40[] = {\n    {{{ -4115,    154,      0}, 0, {  2012,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4607,    154,      0}, 0, {    50,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4607,    154,    492}, 0, {    50,    908}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,    154,   4224}, 0, {   990,    582}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,    230,   4096}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,    154,   4096}, 0, {     0,    582}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,    230,   4224}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,    230,   4224}, 0, {  4056,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,    230,   4096}, 0, {  4056,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,    230,   4096}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,    154,   4224}, 0, {  4056,    582}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,    230,   4224}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,    154,   4224}, 0, {     0,    582}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,    230,   4224}, 0, {  4056,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4115,    154,    492}, 0, {  2012,    908}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07010030 - 0x07010120\nstatic const Vtx lll_seg7_vertex_07010030[] = {\n    {{{ -7042,      0,   3578}, 0, { -1482,    482}, {0x86, 0x00, 0xe0, 0xff}}},\n    {{{ -7179,      0,   4092}, 0, {  -950,    482}, {0x86, 0x00, 0xe0, 0xff}}},\n    {{{ -7179,    129,   4092}, 0, {  -950,    224}, {0x86, 0x00, 0xe0, 0xff}}},\n    {{{ -7179,    129,   4092}, 0, {  -950,    224}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{ -7179,      0,   4092}, 0, {  -950,    482}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{ -7042,      0,   4606}, 0, {     0,    482}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{ -7042,    257,   4606}, 0, {     0,      0}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{ -6665,    257,   4982}, 0, {  1030,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -7042,    257,   4606}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -7042,      0,   4606}, 0, {     0,    482}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -6665,      0,   4982}, 0, {  1030,    482}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -6151,    129,   5120}, 0, {  1950,    224}, {0xe0, 0x00, 0x7a, 0xff}}},\n    {{{ -6665,    257,   4982}, 0, {  1030,      0}, {0xe0, 0x00, 0x7a, 0xff}}},\n    {{{ -6665,      0,   4982}, 0, {  1030,    482}, {0xe0, 0x00, 0x7a, 0xff}}},\n    {{{ -6151,      0,   5120}, 0, {  1950,    482}, {0xe0, 0x00, 0x7a, 0xff}}},\n};\n\n// 0x07010120 - 0x07010210\nstatic const Vtx lll_seg7_vertex_07010120[] = {\n    {{{ -6151,    129,   5120}, 0, {  1950,    224}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{ -6151,      0,   5120}, 0, {  1950,    482}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{ -5637,      0,   4982}, 0, {  2482,    482}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{ -6665,    257,   4982}, 0, {   -50,   1736}, {0x25, 0x75, 0xe3, 0xff}}},\n    {{{ -6151,    129,   5120}, 0, {   974,   2010}, {0x25, 0x75, 0xe3, 0xff}}},\n    {{{ -6151,      0,   4606}, 0, {   974,    986}, {0x25, 0x75, 0xe3, 0xff}}},\n    {{{ -6151,    129,   5120}, 0, {   974,   2010}, {0x16, 0x79, 0xe2, 0xff}}},\n    {{{ -5637,      0,   4982}, 0, {  2000,   1736}, {0x16, 0x79, 0xe2, 0xff}}},\n    {{{ -6151,      0,   4606}, 0, {   974,    986}, {0x16, 0x79, 0xe2, 0xff}}},\n    {{{ -6151,    129,  -7175}, 0, {  -950,    224}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{ -6665,      0,  -7037}, 0, {     0,    482}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{ -6665,    257,  -7037}, 0, {     0,      0}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{ -6665,    257,   4982}, 0, {   -50,   1736}, {0x0f, 0x70, 0xc8, 0xff}}},\n    {{{ -6151,      0,   4606}, 0, {   974,    986}, {0x0f, 0x70, 0xc8, 0xff}}},\n    {{{ -6408,      0,   4537}, 0, {   460,    848}, {0x0f, 0x70, 0xc8, 0xff}}},\n};\n\n// 0x07010210 - 0x07010310\nstatic const Vtx lll_seg7_vertex_07010210[] = {\n    {{{ -7042,    257,   4606}, 0, {  -802,    986}, {0x29, 0x70, 0xd7, 0xff}}},\n    {{{ -6665,    257,   4982}, 0, {   -50,   1736}, {0x29, 0x70, 0xd7, 0xff}}},\n    {{{ -6596,      0,   4349}, 0, {    86,    472}, {0x29, 0x70, 0xd7, 0xff}}},\n    {{{ -6408,      0,   4537}, 0, {   460,    848}, {0x29, 0x70, 0xd7, 0xff}}},\n    {{{ -7042,    257,   4606}, 0, {  -802,    986}, {0x38, 0x70, 0xf1, 0xff}}},\n    {{{ -6596,      0,   4349}, 0, {    86,    472}, {0x38, 0x70, 0xf1, 0xff}}},\n    {{{ -6665,      0,   4092}, 0, {   -50,    -40}, {0x38, 0x70, 0xf1, 0xff}}},\n    {{{ -7179,    129,   4092}, 0, { -1076,    -40}, {0x1d, 0x75, 0xdb, 0xff}}},\n    {{{ -7042,    257,   4606}, 0, {  -802,    986}, {0x1d, 0x75, 0xdb, 0xff}}},\n    {{{ -6665,      0,   4092}, 0, {   -50,    -40}, {0x1d, 0x75, 0xdb, 0xff}}},\n    {{{ -7042,      0,   3578}, 0, {  -802,  -1066}, {0x1e, 0x79, 0xea, 0xff}}},\n    {{{ -7179,    129,   4092}, 0, { -1076,    -40}, {0x1e, 0x79, 0xea, 0xff}}},\n    {{{ -6665,      0,   4092}, 0, {   -50,    -40}, {0x1e, 0x79, 0xea, 0xff}}},\n    {{{ -5637,      0,  -7037}, 0, { -1482,    482}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{ -6151,      0,  -7175}, 0, {  -950,    482}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{ -6151,    129,  -7175}, 0, {  -950,    224}, {0x20, 0x00, 0x86, 0xff}}},\n};\n\n// 0x07010310 - 0x070103F0\nstatic const Vtx lll_seg7_vertex_07010310[] = {\n    {{{ -6151,    129,  -7175}, 0, {  -950,    224}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{ -6151,      0,  -7175}, 0, {  -950,    482}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{ -6665,      0,  -7037}, 0, {     0,    482}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{ -7042,    257,  -6661}, 0, {   234,  -1058}, {0x38, 0x70, 0x0f, 0xff}}},\n    {{{ -6665,      0,  -6147}, 0, {   986,      0}, {0x38, 0x70, 0x0f, 0xff}}},\n    {{{ -6596,      0,  -6404}, 0, {  1124,   -546}, {0x38, 0x70, 0x0f, 0xff}}},\n    {{{ -7042,    257,  -6661}, 0, {  1030,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -6665,      0,  -7037}, 0, {     0,    482}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -7042,      0,  -6661}, 0, {  1030,    482}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -6665,    257,  -7037}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -7179,    129,  -6147}, 0, {  1950,    224}, {0x86, 0x00, 0xe0, 0xff}}},\n    {{{ -7042,    257,  -6661}, 0, {  1030,      0}, {0x86, 0x00, 0xe0, 0xff}}},\n    {{{ -7042,      0,  -6661}, 0, {  1030,    482}, {0x86, 0x00, 0xe0, 0xff}}},\n    {{{ -7179,      0,  -6147}, 0, {  1950,    482}, {0x86, 0x00, 0xe0, 0xff}}},\n};\n\n// 0x070103F0 - 0x070104E0\nstatic const Vtx lll_seg7_vertex_070103F0[] = {\n    {{{ -7179,    129,  -6147}, 0, {  1950,    224}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{ -7179,      0,  -6147}, 0, {  1950,    482}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{ -7042,      0,  -5633}, 0, {  2482,    482}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{ -7179,    129,  -6147}, 0, {   -38,      0}, {0x0f, 0x7b, 0x1a, 0xff}}},\n    {{{ -7042,      0,  -5633}, 0, {   234,    992}, {0x0f, 0x7b, 0x1a, 0xff}}},\n    {{{ -6596,      0,  -5890}, 0, {  1124,    482}, {0x0f, 0x7b, 0x1a, 0xff}}},\n    {{{ -7179,    129,  -6147}, 0, {   -38,      0}, {0x1e, 0x7a, 0xf8, 0xff}}},\n    {{{ -6596,      0,  -5890}, 0, {  1124,    482}, {0x1e, 0x7a, 0xf8, 0xff}}},\n    {{{ -6665,      0,  -6147}, 0, {   986,      0}, {0x1e, 0x7a, 0xf8, 0xff}}},\n    {{{ -7042,    257,  -6661}, 0, {   234,  -1058}, {0x1d, 0x75, 0x25, 0xff}}},\n    {{{ -7179,    129,  -6147}, 0, {   -38,      0}, {0x1d, 0x75, 0x25, 0xff}}},\n    {{{ -6665,      0,  -6147}, 0, {   986,      0}, {0x1d, 0x75, 0x25, 0xff}}},\n    {{{ -2567,    129,  -2567}, 0, {  -950,    224}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{ -3081,      0,  -2429}, 0, {     0,    482}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{ -3081,    257,  -2429}, 0, {     0,      0}, {0xe0, 0x00, 0x86, 0xff}}},\n};\n\n// 0x070104E0 - 0x070105E0\nstatic const Vtx lll_seg7_vertex_070104E0[] = {\n    {{{ -6665,    257,  -7037}, 0, {   986,  -1810}, {0x29, 0x70, 0x29, 0xff}}},\n    {{{ -7042,    257,  -6661}, 0, {   234,  -1058}, {0x29, 0x70, 0x29, 0xff}}},\n    {{{ -6596,      0,  -6404}, 0, {  1124,   -546}, {0x29, 0x70, 0x29, 0xff}}},\n    {{{ -6408,      0,  -6592}, 0, {  1498,   -920}, {0x29, 0x70, 0x29, 0xff}}},\n    {{{ -6151,    129,  -7175}, 0, {  2012,  -2084}, {0x25, 0x75, 0x1d, 0xff}}},\n    {{{ -6665,    257,  -7037}, 0, {   986,  -1810}, {0x25, 0x75, 0x1d, 0xff}}},\n    {{{ -6151,      0,  -6661}, 0, {  2012,  -1058}, {0x25, 0x75, 0x1d, 0xff}}},\n    {{{ -6665,    257,  -7037}, 0, {   986,  -1810}, {0x0f, 0x70, 0x38, 0xff}}},\n    {{{ -6408,      0,  -6592}, 0, {  1498,   -920}, {0x0f, 0x70, 0x38, 0xff}}},\n    {{{ -6151,      0,  -6661}, 0, {  2012,  -1058}, {0x0f, 0x70, 0x38, 0xff}}},\n    {{{ -5871,      0,  -6578}, 0, {  2570,   -892}, {0xf7, 0x7a, 0x1e, 0xff}}},\n    {{{ -6151,    129,  -7175}, 0, {  2012,  -2084}, {0xf7, 0x7a, 0x1e, 0xff}}},\n    {{{ -6151,      0,  -6661}, 0, {  2012,  -1058}, {0xf7, 0x7a, 0x1e, 0xff}}},\n    {{{ -5871,      0,  -6578}, 0, {  2570,   -892}, {0x1b, 0x7b, 0x0d, 0xff}}},\n    {{{ -5637,      0,  -7037}, 0, {  3038,  -1810}, {0x1b, 0x7b, 0x0d, 0xff}}},\n    {{{ -6151,    129,  -7175}, 0, {  2012,  -2084}, {0x1b, 0x7b, 0x0d, 0xff}}},\n};\n\n// 0x070105E0 - 0x070106E0\nstatic const Vtx lll_seg7_vertex_070105E0[] = {\n    {{{ -2053,      0,  -2429}, 0, { -1482,    482}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{ -2567,      0,  -2567}, 0, {  -950,    482}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{ -2567,    129,  -2567}, 0, {  -950,    224}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{ -2567,    129,  -2567}, 0, {  -950,    224}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{ -2567,      0,  -2567}, 0, {  -950,    482}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{ -3081,      0,  -2429}, 0, {     0,    482}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{ -3458,    257,  -2053}, 0, {   234,  -1058}, {0x38, 0x70, 0x0f, 0xff}}},\n    {{{ -3081,      0,  -1539}, 0, {   986,      0}, {0x38, 0x70, 0x0f, 0xff}}},\n    {{{ -3012,      0,  -1796}, 0, {  1124,   -546}, {0x38, 0x70, 0x0f, 0xff}}},\n    {{{ -3458,    257,  -2053}, 0, {  1030,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -3081,      0,  -2429}, 0, {     0,    482}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -3458,      0,  -2053}, 0, {  1030,    482}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -3081,    257,  -2429}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -3595,    129,  -1539}, 0, {  1950,    224}, {0x86, 0x00, 0xe0, 0xff}}},\n    {{{ -3458,    257,  -2053}, 0, {  1030,      0}, {0x86, 0x00, 0xe0, 0xff}}},\n    {{{ -3458,      0,  -2053}, 0, {  1030,    482}, {0x86, 0x00, 0xe0, 0xff}}},\n};\n\n// 0x070106E0 - 0x070107D0\nstatic const Vtx lll_seg7_vertex_070106E0[] = {\n    {{{ -3595,    129,  -1539}, 0, {  1950,    224}, {0x86, 0x00, 0xe0, 0xff}}},\n    {{{ -3458,      0,  -2053}, 0, {  1030,    482}, {0x86, 0x00, 0xe0, 0xff}}},\n    {{{ -3595,      0,  -1539}, 0, {  1950,    482}, {0x86, 0x00, 0xe0, 0xff}}},\n    {{{ -3595,    129,  -1539}, 0, {  1950,    224}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{ -3595,      0,  -1539}, 0, {  1950,    482}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{ -3458,      0,  -1025}, 0, {  2482,    482}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{ -3595,    129,  -1539}, 0, {   -38,      0}, {0x0f, 0x7b, 0x1a, 0xff}}},\n    {{{ -3458,      0,  -1025}, 0, {   234,    992}, {0x0f, 0x7b, 0x1a, 0xff}}},\n    {{{ -3012,      0,  -1282}, 0, {  1124,    482}, {0x0f, 0x7b, 0x1a, 0xff}}},\n    {{{ -3458,    257,  -2053}, 0, {   234,  -1058}, {0x1d, 0x75, 0x25, 0xff}}},\n    {{{ -3595,    129,  -1539}, 0, {   -38,      0}, {0x1d, 0x75, 0x25, 0xff}}},\n    {{{ -3081,      0,  -1539}, 0, {   986,      0}, {0x1d, 0x75, 0x25, 0xff}}},\n    {{{ -3595,    129,  -1539}, 0, {   -38,      0}, {0x1e, 0x7a, 0xf8, 0xff}}},\n    {{{ -3012,      0,  -1282}, 0, {  1124,    482}, {0x1e, 0x7a, 0xf8, 0xff}}},\n    {{{ -3081,      0,  -1539}, 0, {   986,      0}, {0x1e, 0x7a, 0xf8, 0xff}}},\n};\n\n// 0x070107D0 - 0x070108D0\nstatic const Vtx lll_seg7_vertex_070107D0[] = {\n    {{{ -3081,    257,  -2429}, 0, {   986,  -1810}, {0x29, 0x70, 0x29, 0xff}}},\n    {{{ -3458,    257,  -2053}, 0, {   234,  -1058}, {0x29, 0x70, 0x29, 0xff}}},\n    {{{ -3012,      0,  -1796}, 0, {  1124,   -546}, {0x29, 0x70, 0x29, 0xff}}},\n    {{{ -2824,      0,  -1984}, 0, {  1498,   -920}, {0x29, 0x70, 0x29, 0xff}}},\n    {{{ -2567,    129,  -2567}, 0, {  2012,  -2084}, {0x25, 0x75, 0x1d, 0xff}}},\n    {{{ -3081,    257,  -2429}, 0, {   986,  -1810}, {0x25, 0x75, 0x1d, 0xff}}},\n    {{{ -2567,      0,  -2053}, 0, {  2012,  -1058}, {0x25, 0x75, 0x1d, 0xff}}},\n    {{{ -3081,    257,  -2429}, 0, {   986,  -1810}, {0x0f, 0x70, 0x38, 0xff}}},\n    {{{ -2824,      0,  -1984}, 0, {  1498,   -920}, {0x0f, 0x70, 0x38, 0xff}}},\n    {{{ -2567,      0,  -2053}, 0, {  2012,  -1058}, {0x0f, 0x70, 0x38, 0xff}}},\n    {{{ -2287,      0,  -1970}, 0, {  2570,   -892}, {0xf7, 0x7a, 0x1e, 0xff}}},\n    {{{ -2567,    129,  -2567}, 0, {  2012,  -2084}, {0xf7, 0x7a, 0x1e, 0xff}}},\n    {{{ -2567,      0,  -2053}, 0, {  2012,  -1058}, {0xf7, 0x7a, 0x1e, 0xff}}},\n    {{{ -2287,      0,  -1970}, 0, {  2570,   -892}, {0x1b, 0x7b, 0x0d, 0xff}}},\n    {{{ -2053,      0,  -2429}, 0, {  3038,  -1810}, {0x1b, 0x7b, 0x0d, 0xff}}},\n    {{{ -2567,    129,  -2567}, 0, {  2012,  -2084}, {0x1b, 0x7b, 0x0d, 0xff}}},\n};\n\n// 0x070108D0 - 0x070109C0\nstatic const Vtx lll_seg7_vertex_070108D0[] = {\n    {{{ -4095,      0,   6016}, 0, {  3374,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3583,    154,   6016}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3583,      0,   6016}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2303,      0,   6528}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2303,    154,   6528}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3583,    154,   6528}, 0, {  8484,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3583,      0,   6528}, 0, {  8484,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3583,      0,   6016}, 0, {  8484,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3583,    154,   6016}, 0, {  8484,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2303,    154,   6016}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2303,      0,   6016}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3583,      0,   6528}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4095,    154,   6528}, 0, {  3374,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4095,      0,   6528}, 0, {  3374,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3583,    154,   6528}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070109C0 - 0x07010AB0\nstatic const Vtx lll_seg7_vertex_070109C0[] = {\n    {{{   256,      0,   4224}, 0, { 11892,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,    154,   4224}, 0, { 11892,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,    154,   6016}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4095,      0,   6016}, 0, {  3374,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4095,    154,   6016}, 0, {  3374,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3583,    154,   6016}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4095,      0,   6528}, 0, {  3374,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4095,    154,   6528}, 0, {  3374,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4095,    154,   6016}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4095,      0,   6016}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2303,    154,   6016}, 0, {  1672,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2303,      0,   6528}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2303,      0,   6016}, 0, {  1672,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2303,    154,   6528}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,      0,   6016}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07010AB0 - 0x07010BA0\nstatic const Vtx lll_seg7_vertex_07010AB0[] = {\n    {{{ -1663,      0,   6016}, 0, {  2524,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1151,    154,   6016}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1151,      0,   6016}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -255,      0,   6016}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,    154,   6016}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,    154,   4224}, 0, { 11892,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,      0,   4224}, 0, { 11892,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1663,      0,   6016}, 0, {  -712,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1663,    154,   6528}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1663,    154,   6016}, 0, {  -712,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1663,      0,   6528}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1151,      0,   6528}, 0, {  2522,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1151,    154,   6528}, 0, {  2522,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1663,    154,   6528}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1663,      0,   6528}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07010BA0 - 0x07010C90\nstatic const Vtx lll_seg7_vertex_07010BA0[] = {\n    {{{   640,      0,   6400}, 0, {  1672,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   640,    154,   6400}, 0, {  1672,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   384,    154,   6400}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1663,      0,   6016}, 0, {  2524,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1663,    154,   6016}, 0, {  2524,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1151,    154,   6016}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1151,      0,   6528}, 0, {  -100,    990}, {0x14, 0x00, 0x7d, 0xff}}},\n    {{{  -383,    154,   6400}, 0, {  5078,      0}, {0x14, 0x00, 0x7d, 0xff}}},\n    {{{ -1151,    154,   6528}, 0, {  -100,      0}, {0x14, 0x00, 0x7d, 0xff}}},\n    {{{  -383,      0,   6400}, 0, {  5078,    990}, {0x14, 0x00, 0x7d, 0xff}}},\n    {{{  -383,      0,   6144}, 0, { -4188,    990}, {0x14, 0x00, 0x83, 0xff}}},\n    {{{ -1151,      0,   6016}, 0, {   990,    990}, {0x14, 0x00, 0x83, 0xff}}},\n    {{{ -1151,    154,   6016}, 0, {   990,      0}, {0x14, 0x00, 0x83, 0xff}}},\n    {{{  -383,    154,   6144}, 0, { -4188,      0}, {0x14, 0x00, 0x83, 0xff}}},\n    {{{   384,      0,   6400}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07010C90 - 0x07010CD0\nstatic const Vtx lll_seg7_vertex_07010C90[] = {\n    {{{   384,      0,   6144}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   384,    154,   6144}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   640,    154,   6144}, 0, {  1672,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   640,      0,   6144}, 0, {  1672,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07010CD0 - 0x07010D90\nstatic const Vtx lll_seg7_vertex_07010CD0[] = {\n    {{{  6912,    154,   7040}, 0, {   990,   1486}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  6656,    153,   7552}, 0, {     0,    990}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  6912,    154,   7552}, 0, {     0,   1486}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  6656,    153,   7040}, 0, {   990,    990}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  6656,    153,   7040}, 0, {   990,    990}, {0x56, 0x5c, 0x00, 0xff}}},\n    {{{  6272,    512,   7040}, 0, {   990,   -410}, {0x56, 0x5c, 0x00, 0xff}}},\n    {{{  6272,    512,   7552}, 0, {     0,   -410}, {0x56, 0x5c, 0x00, 0xff}}},\n    {{{  6656,    153,   7552}, 0, {     0,    990}, {0x56, 0x5c, 0x00, 0xff}}},\n    {{{  6272,    512,   7040}, 0, {   990,   -410}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6016,    512,   7552}, 0, {     0,   -906}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6272,    512,   7552}, 0, {     0,   -410}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6016,    512,   7040}, 0, {   990,   -906}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07010D90 - 0x07010E10\nstatic const Vtx lll_seg7_vertex_07010D90[] = {\n    {{{ -4095,    154,   6528}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3583,    154,   6016}, 0, {   990,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4095,    154,   6016}, 0, { -1052,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3583,    154,   6528}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1663,    154,   6528}, 0, {  -542,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1151,    154,   6016}, 0, {  1500,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1663,    154,   6016}, 0, {  -542,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1151,    154,   6528}, 0, {  1500,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07010E10 - 0x07010F10\nstatic const Vtx lll_seg7_vertex_07010E10[] = {\n    {{{  -767,    307,  -3647}, 0, { -4118,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   768,    307,  -5055}, 0, {   990,  -3694}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,    307,  -5055}, 0, { -4118,  -3694}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   768,      0,  -5055}, 0, {  4652,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   768,    307,  -3647}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   768,      0,  -3647}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   768,    307,  -5055}, 0, {  4652,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -767,      0,  -5055}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   768,    307,  -5055}, 0, {  5078,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   768,      0,  -5055}, 0, {  5078,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -767,    307,  -5055}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   768,      0,  -3647}, 0, {  5078,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -767,    307,  -3647}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -767,      0,  -3647}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   768,    307,  -3647}, 0, {  5078,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   768,    307,  -3647}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07010F10 - 0x07011010\nstatic const Vtx lll_seg7_vertex_07010F10[] = {\n    {{{  -767,      0,  -3647}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -767,    307,  -3647}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -767,    307,  -5055}, 0, {  4652,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -767,      0,  -5055}, 0, {  4652,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2759,    166,    435}, 0, {  5502,    328}, {0x88, 0x00, 0x27, 0xff}}},\n    {{{ -2667,    554,    718}, 0, {  4312,  -1222}, {0x88, 0x00, 0x27, 0xff}}},\n    {{{ -2722,    403,    550}, 0, {  5020,   -618}, {0x88, 0x00, 0x27, 0xff}}},\n    {{{ -2331,      0,   1753}, 0, {     0,    990}, {0x88, 0x00, 0x27, 0xff}}},\n    {{{ -2377,    166,   1611}, 0, {   566,    328}, {0x88, 0x00, 0x27, 0xff}}},\n    {{{ -2805,      0,    292}, 0, {  6100,    990}, {0x88, 0x00, 0x27, 0xff}}},\n    {{{ -2408,    376,   1515}, 0, {   966,   -512}, {0x88, 0x00, 0x27, 0xff}}},\n    {{{ -2469,    554,   1327}, 0, {  1756,  -1222}, {0x88, 0x00, 0x27, 0xff}}},\n    {{{ -2568,    640,   1023}, 0, {  -542,  -2076}, {0xf6, 0x7a, 0xe1, 0xff}}},\n    {{{ -2180,    554,    560}, 0, {   990,  -3354}, {0xf6, 0x7a, 0xe1, 0xff}}},\n    {{{ -2667,    554,    718}, 0, {  -542,  -3354}, {0xf6, 0x7a, 0xe1, 0xff}}},\n    {{{ -2568,    640,   1023}, 0, {  3034,  -1566}, {0x88, 0x00, 0x27, 0xff}}},\n};\n\n// 0x07011010 - 0x070110F0\nstatic const Vtx lll_seg7_vertex_07011010[] = {\n    {{{ -2759,    166,    435}, 0, {  -542,  -4544}, {0xe3, 0x54, 0xa7, 0xff}}},\n    {{{ -2272,    166,    276}, 0, {   990,  -4544}, {0xe3, 0x54, 0xa7, 0xff}}},\n    {{{ -2318,      0,    134}, 0, {   990,  -5142}, {0xe3, 0x54, 0xa7, 0xff}}},\n    {{{ -2759,    166,    435}, 0, {  -542,  -4544}, {0xe3, 0x55, 0xa7, 0xff}}},\n    {{{ -2318,      0,    134}, 0, {   990,  -5142}, {0xe3, 0x55, 0xa7, 0xff}}},\n    {{{ -2805,      0,    292}, 0, {  -542,  -5142}, {0xe3, 0x55, 0xa7, 0xff}}},\n    {{{ -2722,    403,    550}, 0, {  -542,  -4062}, {0xdd, 0x39, 0x95, 0xff}}},\n    {{{ -2272,    166,    276}, 0, {   990,  -4544}, {0xdd, 0x39, 0x95, 0xff}}},\n    {{{ -2759,    166,    435}, 0, {  -542,  -4544}, {0xdd, 0x39, 0x95, 0xff}}},\n    {{{ -2235,    403,    391}, 0, {   990,  -4062}, {0xdd, 0x39, 0x95, 0xff}}},\n    {{{ -2667,    554,    718}, 0, {  -542,  -3354}, {0xe7, 0x60, 0xb2, 0xff}}},\n    {{{ -2235,    403,    391}, 0, {   990,  -4062}, {0xe7, 0x60, 0xb2, 0xff}}},\n    {{{ -2722,    403,    550}, 0, {  -542,  -4062}, {0xe7, 0x60, 0xb2, 0xff}}},\n    {{{ -2180,    554,    560}, 0, {   990,  -3354}, {0xe7, 0x60, 0xb2, 0xff}}},\n};\n\n// 0x070110F0 - 0x070111D0\nstatic const Vtx lll_seg7_vertex_070110F0[] = {\n    {{{ -1844,      0,   1595}, 0, {     0,    990}, {0x78, 0x00, 0xd9, 0xff}}},\n    {{{ -2272,    166,    276}, 0, {  5502,    328}, {0x78, 0x00, 0xd9, 0xff}}},\n    {{{ -2235,    403,    391}, 0, {  5020,   -618}, {0x78, 0x00, 0xd9, 0xff}}},\n    {{{ -2568,    640,   1023}, 0, {  -542,  -2076}, {0xf6, 0x7a, 0xe1, 0xff}}},\n    {{{ -2081,    640,    864}, 0, {   990,  -2076}, {0xf6, 0x7a, 0xe1, 0xff}}},\n    {{{ -2180,    554,    560}, 0, {   990,  -3354}, {0xf6, 0x7a, 0xe1, 0xff}}},\n    {{{ -2469,    554,   1327}, 0, {  -542,   -798}, {0x0a, 0x7a, 0x1f, 0xff}}},\n    {{{ -2081,    640,    864}, 0, {   990,  -2076}, {0x0a, 0x7a, 0x1f, 0xff}}},\n    {{{ -2568,    640,   1023}, 0, {  -542,  -2076}, {0x0a, 0x7a, 0x1f, 0xff}}},\n    {{{ -1982,    554,   1169}, 0, {   990,   -798}, {0x0a, 0x7a, 0x1f, 0xff}}},\n    {{{ -2408,    376,   1515}, 0, {  -542,     -8}, {0x1a, 0x5e, 0x50, 0xff}}},\n    {{{ -1982,    554,   1169}, 0, {   990,   -798}, {0x1a, 0x5e, 0x50, 0xff}}},\n    {{{ -2469,    554,   1327}, 0, {  -542,   -798}, {0x1a, 0x5e, 0x50, 0xff}}},\n    {{{ -1921,    376,   1357}, 0, {   990,     -8}, {0x1a, 0x5e, 0x50, 0xff}}},\n};\n\n// 0x070111D0 - 0x070112C0\nstatic const Vtx lll_seg7_vertex_070111D0[] = {\n    {{{ -2377,    166,   1611}, 0, {  -542,    392}, {0x23, 0x36, 0x6c, 0xff}}},\n    {{{ -1921,    376,   1357}, 0, {   990,     -8}, {0x23, 0x36, 0x6c, 0xff}}},\n    {{{ -2408,    376,   1515}, 0, {  -542,     -8}, {0x23, 0x36, 0x6c, 0xff}}},\n    {{{ -2377,    166,   1611}, 0, {  -542,    392}, {0x23, 0x36, 0x6d, 0xff}}},\n    {{{ -1890,    166,   1452}, 0, {   990,    392}, {0x23, 0x36, 0x6d, 0xff}}},\n    {{{ -1921,    376,   1357}, 0, {   990,     -8}, {0x23, 0x36, 0x6d, 0xff}}},\n    {{{ -2331,      0,   1753}, 0, {  -542,    990}, {0x1d, 0x54, 0x59, 0xff}}},\n    {{{ -1890,    166,   1452}, 0, {   990,    392}, {0x1d, 0x54, 0x59, 0xff}}},\n    {{{ -2377,    166,   1611}, 0, {  -542,    392}, {0x1d, 0x54, 0x59, 0xff}}},\n    {{{ -2331,      0,   1753}, 0, {  -542,    990}, {0x1d, 0x55, 0x59, 0xff}}},\n    {{{ -1844,      0,   1595}, 0, {   990,    990}, {0x1d, 0x55, 0x59, 0xff}}},\n    {{{ -1890,    166,   1452}, 0, {   990,    392}, {0x1d, 0x55, 0x59, 0xff}}},\n    {{{ -1844,      0,   1595}, 0, {     0,    990}, {0x78, 0x00, 0xd9, 0xff}}},\n    {{{ -2318,      0,    134}, 0, {  6100,    990}, {0x78, 0x00, 0xd9, 0xff}}},\n    {{{ -2272,    166,    276}, 0, {  5502,    328}, {0x78, 0x00, 0xd9, 0xff}}},\n};\n\n// 0x070112C0 - 0x070113C0\nstatic const Vtx lll_seg7_vertex_070112C0[] = {\n    {{{  5698,    166,  -6833}, 0, {  5502,    328}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  6678,      0,  -5853}, 0, {     0,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  6572,    166,  -5959}, 0, {   566,    328}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1844,      0,   1595}, 0, {     0,    990}, {0x78, 0x00, 0xd9, 0xff}}},\n    {{{ -2235,    403,    391}, 0, {  5020,   -618}, {0x78, 0x00, 0xd9, 0xff}}},\n    {{{ -2180,    554,    560}, 0, {  4312,  -1222}, {0x78, 0x00, 0xd9, 0xff}}},\n    {{{ -2081,    640,    864}, 0, {  3034,  -1566}, {0x78, 0x00, 0xd9, 0xff}}},\n    {{{ -1982,    554,   1169}, 0, {  1756,  -1222}, {0x78, 0x00, 0xd9, 0xff}}},\n    {{{ -1921,    376,   1357}, 0, {   966,   -512}, {0x78, 0x00, 0xd9, 0xff}}},\n    {{{ -1890,    166,   1452}, 0, {   566,    328}, {0x78, 0x00, 0xd9, 0xff}}},\n    {{{ -2081,    640,    864}, 0, {  3034,  -1566}, {0x78, 0xff, 0xd8, 0xff}}},\n    {{{ -1890,    166,   1452}, 0, {   566,    328}, {0x78, 0xff, 0xd8, 0xff}}},\n    {{{ -1844,      0,   1595}, 0, {     0,    990}, {0x78, 0xff, 0xd8, 0xff}}},\n    {{{  5592,      0,  -6939}, 0, {  6100,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  6501,    376,  -6030}, 0, {   966,   -512}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  6362,    554,  -6170}, 0, {  1756,  -1222}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x070113C0 - 0x070114C0\nstatic const Vtx lll_seg7_vertex_070113C0[] = {\n    {{{  5698,    166,  -6833}, 0, {  5502,    328}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  6362,    554,  -6170}, 0, {  1756,  -1222}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  6135,    640,  -6396}, 0, {  3034,  -1566}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  5909,    554,  -6622}, 0, {  4312,  -1222}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  6135,    640,  -6396}, 0, {  -542,  -2076}, {0xe9, 0x7a, 0xe9, 0xff}}},\n    {{{  6497,    640,  -6758}, 0, {   990,  -2076}, {0xe9, 0x7a, 0xe9, 0xff}}},\n    {{{  6271,    554,  -6984}, 0, {   990,  -3354}, {0xe9, 0x7a, 0xe9, 0xff}}},\n    {{{  5698,    166,  -6833}, 0, {  5502,    328}, {0xa6, 0x01, 0x58, 0xff}}},\n    {{{  5909,    554,  -6622}, 0, {  4312,  -1222}, {0xa6, 0x01, 0x58, 0xff}}},\n    {{{  5784,    403,  -6748}, 0, {  5020,   -618}, {0xa6, 0x01, 0x58, 0xff}}},\n    {{{  5784,    403,  -6748}, 0, {  -542,  -4062}, {0xb1, 0x39, 0xb1, 0xff}}},\n    {{{  6060,    166,  -7195}, 0, {   990,  -4544}, {0xb1, 0x39, 0xb1, 0xff}}},\n    {{{  5698,    166,  -6833}, 0, {  -542,  -4544}, {0xb1, 0x39, 0xb1, 0xff}}},\n    {{{  5698,    166,  -6833}, 0, {  -542,  -4544}, {0xbe, 0x55, 0xbe, 0xff}}},\n    {{{  5954,      0,  -7301}, 0, {   990,  -5142}, {0xbe, 0x55, 0xbe, 0xff}}},\n    {{{  5592,      0,  -6939}, 0, {  -542,  -5142}, {0xbe, 0x55, 0xbe, 0xff}}},\n};\n\n// 0x070114C0 - 0x070115C0\nstatic const Vtx lll_seg7_vertex_070114C0[] = {\n    {{{  5698,    166,  -6833}, 0, {  -542,  -4544}, {0xbe, 0x55, 0xbe, 0xff}}},\n    {{{  6060,    166,  -7195}, 0, {   990,  -4544}, {0xbe, 0x55, 0xbe, 0xff}}},\n    {{{  5954,      0,  -7301}, 0, {   990,  -5142}, {0xbe, 0x55, 0xbe, 0xff}}},\n    {{{  5784,    403,  -6748}, 0, {  -542,  -4062}, {0xb1, 0x39, 0xb1, 0xff}}},\n    {{{  6146,    403,  -7110}, 0, {   990,  -4062}, {0xb1, 0x39, 0xb1, 0xff}}},\n    {{{  6060,    166,  -7195}, 0, {   990,  -4544}, {0xb1, 0x39, 0xb1, 0xff}}},\n    {{{  5909,    554,  -6622}, 0, {  -542,  -3354}, {0xc6, 0x60, 0xc6, 0xff}}},\n    {{{  6146,    403,  -7110}, 0, {   990,  -4062}, {0xc6, 0x60, 0xc6, 0xff}}},\n    {{{  5784,    403,  -6748}, 0, {  -542,  -4062}, {0xc6, 0x60, 0xc6, 0xff}}},\n    {{{  6271,    554,  -6984}, 0, {   990,  -3354}, {0xc6, 0x60, 0xc6, 0xff}}},\n    {{{  6135,    640,  -6396}, 0, {  -542,  -2076}, {0xe9, 0x7a, 0xe9, 0xff}}},\n    {{{  6271,    554,  -6984}, 0, {   990,  -3354}, {0xe9, 0x7a, 0xe9, 0xff}}},\n    {{{  5909,    554,  -6622}, 0, {  -542,  -3354}, {0xe9, 0x7a, 0xe9, 0xff}}},\n    {{{  7040,      0,  -6215}, 0, {     0,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  6271,    554,  -6984}, 0, {  4312,  -1222}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  6497,    640,  -6758}, 0, {  3034,  -1566}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x070115C0 - 0x070116C0\nstatic const Vtx lll_seg7_vertex_070115C0[] = {\n    {{{  6362,    554,  -6170}, 0, {  -542,   -798}, {0x17, 0x7a, 0x17, 0xff}}},\n    {{{  6497,    640,  -6758}, 0, {   990,  -2076}, {0x17, 0x7a, 0x17, 0xff}}},\n    {{{  6135,    640,  -6396}, 0, {  -542,  -2076}, {0x17, 0x7a, 0x17, 0xff}}},\n    {{{  6724,    554,  -6532}, 0, {   990,   -798}, {0x17, 0x7a, 0x17, 0xff}}},\n    {{{  6501,    376,  -6030}, 0, {  -542,     -8}, {0x3c, 0x5e, 0x3c, 0xff}}},\n    {{{  6724,    554,  -6532}, 0, {   990,   -798}, {0x3c, 0x5e, 0x3c, 0xff}}},\n    {{{  6362,    554,  -6170}, 0, {  -542,   -798}, {0x3c, 0x5e, 0x3c, 0xff}}},\n    {{{  6863,    376,  -6392}, 0, {   990,     -8}, {0x3c, 0x5e, 0x3c, 0xff}}},\n    {{{  6572,    166,  -5959}, 0, {  -542,    392}, {0x51, 0x36, 0x51, 0xff}}},\n    {{{  6863,    376,  -6392}, 0, {   990,     -8}, {0x51, 0x36, 0x51, 0xff}}},\n    {{{  6501,    376,  -6030}, 0, {  -542,     -8}, {0x51, 0x36, 0x51, 0xff}}},\n    {{{  6934,    166,  -6321}, 0, {   990,    392}, {0x51, 0x36, 0x51, 0xff}}},\n    {{{  6678,      0,  -5853}, 0, {  -542,    990}, {0x42, 0x55, 0x42, 0xff}}},\n    {{{  6934,    166,  -6321}, 0, {   990,    392}, {0x42, 0x55, 0x42, 0xff}}},\n    {{{  6572,    166,  -5959}, 0, {  -542,    392}, {0x42, 0x55, 0x42, 0xff}}},\n    {{{  7040,      0,  -6215}, 0, {   990,    990}, {0x42, 0x55, 0x42, 0xff}}},\n};\n\n// 0x070116C0 - 0x07011770\nstatic const Vtx lll_seg7_vertex_070116C0[] = {\n    {{{  7040,      0,  -6215}, 0, {     0,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  6060,    166,  -7195}, 0, {  5502,    328}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  6146,    403,  -7110}, 0, {  5020,   -618}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  6271,    554,  -6984}, 0, {  4312,  -1222}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  5954,      0,  -7301}, 0, {  6100,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  6497,    640,  -6758}, 0, {  3034,  -1566}, {0x59, 0xff, 0xa6, 0xff}}},\n    {{{  6724,    554,  -6532}, 0, {  1756,  -1222}, {0x59, 0xff, 0xa6, 0xff}}},\n    {{{  6863,    376,  -6392}, 0, {   966,   -512}, {0x59, 0xff, 0xa6, 0xff}}},\n    {{{  6497,    640,  -6758}, 0, {  3034,  -1566}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  6863,    376,  -6392}, 0, {   966,   -512}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  6934,    166,  -6321}, 0, {   566,    328}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07011770 - 0x07011850\nstatic const Vtx lll_seg7_vertex_07011770[] = {\n    {{{  6656,    154,  -3503}, 0, {   990,   -734}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  7030,    154,  -2855}, 0, {  2484,   1850}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  7030,    154,  -3287}, 0, {  2484,    128}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5222,      0,   6272}, 0, {  3646,   -544}, {0x3b, 0x70, 0x00, 0xff}}},\n    {{{ -5513,    154,   6872}, 0, {  2484,   1850}, {0x3b, 0x70, 0x00, 0xff}}},\n    {{{ -5222,      0,   7040}, 0, {  3646,   2520}, {0x3b, 0x70, 0x00, 0xff}}},\n    {{{ -5513,    154,   6440}, 0, {  2484,    128}, {0x3b, 0x70, 0x00, 0xff}}},\n    {{{ -5887,      0,   5888}, 0, {   990,  -2076}, {0x1d, 0x70, 0xcd, 0xff}}},\n    {{{ -5513,    154,   6440}, 0, {  2484,    128}, {0x1d, 0x70, 0xcd, 0xff}}},\n    {{{ -5222,      0,   6272}, 0, {  3646,   -544}, {0x1d, 0x70, 0xcd, 0xff}}},\n    {{{ -5887,    154,   6224}, 0, {   990,   -734}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5513,    154,   6872}, 0, {  2484,   1850}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5513,    154,   6440}, 0, {  2484,    128}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5887,    154,   6224}, 0, {   990,   -734}, {0x1d, 0x70, 0xcd, 0xff}}},\n};\n\n// 0x07011850 - 0x07011950\nstatic const Vtx lll_seg7_vertex_07011850[] = {\n    {{{ -5222,      0,   7040}, 0, {  3646,   2520}, {0x1d, 0x70, 0x33, 0xff}}},\n    {{{ -5513,    154,   6872}, 0, {  2484,   1850}, {0x1d, 0x70, 0x33, 0xff}}},\n    {{{ -5887,      0,   7424}, 0, {   990,   4054}, {0x1d, 0x70, 0x33, 0xff}}},\n    {{{ -5887,    154,   7088}, 0, {   990,   2712}, {0x1d, 0x70, 0x33, 0xff}}},\n    {{{ -5887,    154,   6224}, 0, {   990,   -734}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5887,    154,   7088}, 0, {   990,   2712}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5513,    154,   6872}, 0, {  2484,   1850}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5887,      0,   7424}, 0, {   990,   4054}, {0xe3, 0x70, 0x33, 0xff}}},\n    {{{ -5887,    154,   7088}, 0, {   990,   2712}, {0xe3, 0x70, 0x33, 0xff}}},\n    {{{ -6261,    154,   6872}, 0, {  -502,   1850}, {0xe3, 0x70, 0x33, 0xff}}},\n    {{{ -6261,    154,   6872}, 0, {  -502,   1850}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6552,      0,   7040}, 0, { -1664,   2522}, {0xe3, 0x70, 0x33, 0xff}}},\n    {{{ -6552,      0,   7040}, 0, { -1664,   2522}, {0xc5, 0x70, 0x00, 0xff}}},\n    {{{ -6261,    154,   6872}, 0, {  -502,   1850}, {0xc5, 0x70, 0x00, 0xff}}},\n    {{{ -6261,    154,   6440}, 0, {  -502,    128}, {0xc5, 0x70, 0x00, 0xff}}},\n    {{{ -6261,    154,   6440}, 0, {  -502,    128}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07011950 - 0x07011A30\nstatic const Vtx lll_seg7_vertex_07011950[] = {\n    {{{ -6552,      0,   7040}, 0, { -1664,   2522}, {0xc5, 0x70, 0x00, 0xff}}},\n    {{{ -6261,    154,   6440}, 0, {  -502,    128}, {0xc5, 0x70, 0x00, 0xff}}},\n    {{{ -6552,      0,   6272}, 0, { -1664,   -542}, {0xc5, 0x70, 0x00, 0xff}}},\n    {{{ -6552,      0,   6272}, 0, { -1664,   -542}, {0xe3, 0x70, 0xcd, 0xff}}},\n    {{{ -6261,    154,   6440}, 0, {  -502,    128}, {0xe3, 0x70, 0xcd, 0xff}}},\n    {{{ -5887,    154,   6224}, 0, {   990,   -734}, {0xe3, 0x70, 0xcd, 0xff}}},\n    {{{ -5887,      0,   5888}, 0, {   990,  -2076}, {0xe3, 0x70, 0xcd, 0xff}}},\n    {{{  5991,      0,  -3455}, 0, { -1664,   -542}, {0xe3, 0x70, 0xcd, 0xff}}},\n    {{{  6282,    154,  -3287}, 0, {  -502,    128}, {0xe3, 0x70, 0xcd, 0xff}}},\n    {{{  6656,      0,  -3839}, 0, {   990,  -2076}, {0xe3, 0x70, 0xcd, 0xff}}},\n    {{{  6656,      0,  -3839}, 0, {   990,  -2076}, {0x1d, 0x70, 0xcd, 0xff}}},\n    {{{  7030,    154,  -3287}, 0, {  2484,    128}, {0x1d, 0x70, 0xcd, 0xff}}},\n    {{{  7321,      0,  -3455}, 0, {  3646,   -544}, {0x1d, 0x70, 0xcd, 0xff}}},\n    {{{  6656,    154,  -3503}, 0, {   990,   -734}, {0x1d, 0x70, 0xcd, 0xff}}},\n};\n\n// 0x07011A30 - 0x07011B30\nstatic const Vtx lll_seg7_vertex_07011A30[] = {\n    {{{  7321,      0,  -3455}, 0, {  3646,   -544}, {0x3b, 0x70, 0x00, 0xff}}},\n    {{{  7030,    154,  -3287}, 0, {  2484,    128}, {0x3b, 0x70, 0x00, 0xff}}},\n    {{{  7321,      0,  -2687}, 0, {  3646,   2520}, {0x3b, 0x70, 0x00, 0xff}}},\n    {{{  7321,      0,  -2687}, 0, {  3646,   2520}, {0x1d, 0x70, 0x33, 0xff}}},\n    {{{  7030,    154,  -2855}, 0, {  2484,   1850}, {0x1d, 0x70, 0x33, 0xff}}},\n    {{{  6656,      0,  -2303}, 0, {   990,   4054}, {0x1d, 0x70, 0x33, 0xff}}},\n    {{{  6656,    154,  -3503}, 0, {   990,   -734}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6656,    154,  -2639}, 0, {   990,   2712}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  7030,    154,  -2855}, 0, {  2484,   1850}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  7030,    154,  -2855}, 0, {  2484,   1850}, {0x3b, 0x70, 0x00, 0xff}}},\n    {{{  6656,    154,  -2639}, 0, {   990,   2712}, {0x1d, 0x70, 0x33, 0xff}}},\n    {{{  6656,      0,  -2303}, 0, {   990,   4054}, {0xe3, 0x70, 0x33, 0xff}}},\n    {{{  6656,    154,  -2639}, 0, {   990,   2712}, {0xe3, 0x70, 0x33, 0xff}}},\n    {{{  6282,    154,  -2855}, 0, {  -502,   1850}, {0xe3, 0x70, 0x33, 0xff}}},\n    {{{  6282,    154,  -2855}, 0, {  -502,   1850}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5991,      0,  -2687}, 0, { -1664,   2522}, {0xe3, 0x70, 0x33, 0xff}}},\n};\n\n// 0x07011B30 - 0x07011BD0\nstatic const Vtx lll_seg7_vertex_07011B30[] = {\n    {{{  5991,      0,  -2687}, 0, { -1664,   2522}, {0xc5, 0x70, 0x00, 0xff}}},\n    {{{  6282,    154,  -2855}, 0, {  -502,   1850}, {0xc5, 0x70, 0x00, 0xff}}},\n    {{{  6282,    154,  -3287}, 0, {  -502,    128}, {0xc5, 0x70, 0x00, 0xff}}},\n    {{{  6656,    154,  -3503}, 0, {   990,   -734}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6282,    154,  -3287}, 0, {  -502,    128}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6282,    154,  -2855}, 0, {  -502,   1850}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5991,      0,  -3455}, 0, { -1664,   -542}, {0xc5, 0x70, 0x00, 0xff}}},\n    {{{  6282,    154,  -3287}, 0, {  -502,    128}, {0xe3, 0x70, 0xcd, 0xff}}},\n    {{{  6656,    154,  -3503}, 0, {   990,   -734}, {0xe3, 0x70, 0xcd, 0xff}}},\n    {{{  6656,      0,  -3839}, 0, {   990,  -2076}, {0xe3, 0x70, 0xcd, 0xff}}},\n};\n\n// 0x07011BD0 - 0x07011CD0\nstatic const Vtx lll_seg7_vertex_07011BD0[] = {\n    {{{  6912,      0,   7552}, 0, {  3544,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6656,    153,   7552}, 0, {  2522,    684}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6016,      0,   7552}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6016,      0,   7552}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6016,    512,   7552}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6016,    512,   7040}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6016,      0,   7040}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6912,      0,   7040}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6912,    154,   7040}, 0, {   990,    684}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6912,    154,   7552}, 0, {     0,    684}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6912,      0,   7552}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6272,    512,   7552}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6016,    512,   7552}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3072,    256,   7552}, 0, {  1454,    526}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3328,    256,   7552}, 0, {   990,    526}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3328,      0,   7552}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07011CD0 - 0x07011DC0\nstatic const Vtx lll_seg7_vertex_07011CD0[] = {\n    {{{  6912,      0,   7552}, 0, {  3544,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6912,    154,   7552}, 0, {  3544,    684}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6656,    153,   7552}, 0, {  2522,    684}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6016,      0,   7040}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6016,    512,   7040}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6272,    512,   7040}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6656,    153,   7040}, 0, {  2522,    684}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6912,      0,   7040}, 0, {  3544,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6912,    154,   7040}, 0, {  3544,    684}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3072,    256,   7552}, 0, {  1454,    526}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3328,      0,   7552}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3072,      0,   7552}, 0, {  1454,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4352,      0,   4992}, 0, { -2074,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3712,    563,   4992}, 0, {  -912,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3712,      0,   4992}, 0, {  -912,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07011DC0 - 0x07011EB0\nstatic const Vtx lll_seg7_vertex_07011DC0[] = {\n    {{{  3328,      0,   8192}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2816,    256,   8192}, 0, {  1920,    526}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2816,      0,   8192}, 0, {  1920,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3328,    256,   8192}, 0, {   990,    526}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3328,      0,   7552}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3328,    256,   8192}, 0, { -1192,    526}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3328,      0,   8192}, 0, { -1192,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3328,    256,   7552}, 0, {     0,    526}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4352,      0,   4608}, 0, {  1686,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4352,    563,   4992}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4352,      0,   4992}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4352,    563,   4608}, 0, {  1686,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3712,      0,   4992}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3712,    563,   5504}, 0, {    60,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3712,      0,   5504}, 0, {    60,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07011EB0 - 0x07011F90\nstatic const Vtx lll_seg7_vertex_07011EB0[] = {\n    {{{  4352,      0,   4992}, 0, { -2074,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4352,    563,   4992}, 0, { -2074,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3712,    563,   4992}, 0, {  -912,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3072,    563,   5504}, 0, {  3684,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3072,      0,   7552}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3072,      0,   5504}, 0, {  3684,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3072,    256,   7552}, 0, {     0,    526}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3712,    563,   5504}, 0, {  -912,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3072,    563,   5504}, 0, {   246,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3072,      0,   5504}, 0, {   246,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3712,      0,   5504}, 0, {  -912,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3712,      0,   4992}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3712,    563,   4992}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3712,    563,   5504}, 0, {    60,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07011F90 - 0x07012070\nstatic const Vtx lll_seg7_vertex_07011F90[] = {\n    {{{  2816,      0,   8192}, 0, {  6472,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2816,    256,   7552}, 0, {  5310,    526}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2816,      0,   4608}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2816,    256,   8192}, 0, {  6472,    526}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2816,    563,   5504}, 0, {  1594,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2816,    563,   4608}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2816,      0,   4608}, 0, {   712,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4352,    563,   4608}, 0, { -2074,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4352,      0,   4608}, 0, { -2074,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2816,    563,   4608}, 0, {   712,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4115,    154,    492}, 0, { -2278,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4115,      0,    492}, 0, { -2278,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4115,      0,      0}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4115,    154,      0}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07012070 - 0x07012170\nstatic const Vtx lll_seg7_vertex_07012070[] = {\n    {{{  1536,      0,   6400}, 0, {  3530,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1536,    154,   6400}, 0, {  3530,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1280,    154,   6656}, 0, {  2538,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -4607,    154,    492}, 0, {  -234,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4115,      0,    492}, 0, {  3034,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4115,    154,    492}, 0, {  3034,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4607,      0,    492}, 0, {  -234,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4607,    154,      0}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4607,      0,      0}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4607,      0,    492}, 0, { -2278,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4607,    154,    492}, 0, { -2278,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4115,    154,      0}, 0, {  3034,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4607,      0,      0}, 0, {  -234,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4607,    154,      0}, 0, {  -234,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4115,      0,      0}, 0, {  3034,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1280,      0,   6656}, 0, {  2538,    990}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07012170 - 0x07012270\nstatic const Vtx lll_seg7_vertex_07012170[] = {\n    {{{  1280,      0,   6656}, 0, {  2538,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   896,    154,   6656}, 0, {  1486,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   896,      0,   6656}, 0, {  1486,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1280,    154,   6656}, 0, {  2538,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1536,      0,   6016}, 0, {  4582,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1536,    154,   6400}, 0, {  3530,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1536,      0,   6400}, 0, {  3530,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   896,    154,   6656}, 0, {  1486,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   640,    154,   6400}, 0, {   494,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   640,      0,   6400}, 0, {   494,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   896,      0,   6656}, 0, {  1486,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   640,      0,   6144}, 0, {  7960,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   640,    154,   6016}, 0, {  7618,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   640,      0,   6016}, 0, {  7618,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   640,    154,   6144}, 0, {  7960,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1536,    154,   6016}, 0, {  4582,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07012270 - 0x07012330\nstatic const Vtx lll_seg7_vertex_07012270[] = {\n    {{{   640,      0,   6016}, 0, {  7618,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   640,    154,   6016}, 0, {  7618,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   896,    154,   5760}, 0, {  6626,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   896,      0,   5760}, 0, {  6626,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   896,      0,   5760}, 0, {  6626,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   896,    154,   5760}, 0, {  6626,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1280,    154,   5760}, 0, {  5574,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1280,      0,   5760}, 0, {  5574,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1280,      0,   5760}, 0, {  5574,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1280,    154,   5760}, 0, {  5574,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1536,    154,   6016}, 0, {  4582,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1536,      0,   6016}, 0, {  4582,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07012330 - 0x070123B0\nstatic const Vtx lll_seg7_vertex_07012330[] = {\n    {{{  2816,    563,   5504}, 0, {     0,  -5264}, {0x00, 0x7d, 0x12, 0xff}}},\n    {{{  2816,    256,   7552}, 0, {     0,    990}, {0x00, 0x7d, 0x12, 0xff}}},\n    {{{  3072,    256,   7552}, 0, {   990,    990}, {0x00, 0x7d, 0x12, 0xff}}},\n    {{{  3072,    563,   5504}, 0, {   990,  -5264}, {0x00, 0x7d, 0x12, 0xff}}},\n    {{{  -255,    154,   6016}, 0, {   990,  -6164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,    154,   6016}, 0, {     0,  -6164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,    154,   4224}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,    154,   4224}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070123B0 - 0x07012450\nstatic const Vtx lll_seg7_vertex_070123B0[] = {\n    {{{  3328,    256,   7552}, 0, {   990,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2816,    256,   7552}, 0, { -1562,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2816,    256,   8192}, 0, { -1562,   1116}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,    256,   8192}, 0, {   990,   1116}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3712,    563,   4992}, 0, {  4180,  -3346}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4352,    563,   4608}, 0, {  5626,  -2984}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2816,    563,   5504}, 0, {  2192,  -3888}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4352,    563,   4992}, 0, {  5084,  -2442}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2816,    563,   4608}, 0, {  3458,  -5152}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3712,    563,   5504}, 0, {  3458,  -2624}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07012450 - 0x07012540\nstatic const Vtx lll_seg7_vertex_07012450[] = {\n    {{{  -383,      0,  -7231}, 0, {  6934,   3032}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -511,    768,  -7103}, 0, {  7302,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -383,    768,  -7231}, 0, {  6934,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   384,      0,  -6207}, 0, {  2852,   3032}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   512,    768,  -6335}, 0, {  3222,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   384,    768,  -6207}, 0, {  2852,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   384,    768,  -6207}, 0, {  2852,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -383,      0,  -6207}, 0, {  1172,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   384,      0,  -6207}, 0, {  2852,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -383,    768,  -6207}, 0, {  1172,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,      0,  -6335}, 0, {   802,   3032}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -383,      0,  -6207}, 0, {  1172,   3032}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -383,    768,  -6207}, 0, {  1172,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -511,    768,  -6335}, 0, {   802,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   512,      0,  -6335}, 0, {  3222,   3032}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07012540 - 0x07012630\nstatic const Vtx lll_seg7_vertex_07012540[] = {\n    {{{   512,      0,  -7103}, 0, {  4898,   3032}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   384,    768,  -7231}, 0, {  5266,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   512,    768,  -7103}, 0, {  4898,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   512,    768,  -7103}, 0, {  4898,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,    768,  -6335}, 0, {  3222,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,      0,  -6335}, 0, {  3222,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,      0,  -7103}, 0, {  4898,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   384,      0,  -7231}, 0, {  5266,   3032}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -383,    768,  -7231}, 0, {  6934,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   384,    768,  -7231}, 0, {  5266,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   384,      0,  -7231}, 0, {  5266,   3032}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -383,      0,  -7231}, 0, {  6934,   3032}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -511,    768,  -6335}, 0, {  8978,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,    768,  -7103}, 0, {  7302,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,      0,  -7103}, 0, {  7302,   3032}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07012630 - 0x07012690\nstatic const Vtx lll_seg7_vertex_07012630[] = {\n    {{{  -383,      0,  -7231}, 0, {  6934,   3032}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -511,      0,  -7103}, 0, {  7302,   3032}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -511,    768,  -7103}, 0, {  7302,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -511,    768,  -6335}, 0, {  8978,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,      0,  -7103}, 0, {  7302,   3032}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,      0,  -6335}, 0, {  8978,   3032}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07012690 - 0x07012750\nstatic const Vtx lll_seg7_vertex_07012690[] = {\n    {{{ -3583,    154,   6528}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2303,    154,   6016}, 0, {  5078,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3583,    154,   6016}, 0, {     0,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2303,    154,   6528}, 0, {  5078,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1151,    154,   6528}, 0, { -1562,   1500}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -383,    154,   6144}, 0, {  1500,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1151,    154,   6016}, 0, { -1562,   -542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -383,    154,   6400}, 0, {  1500,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   640,    154,   6144}, 0, {  3034,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   384,    154,   6400}, 0, {  2012,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   640,    154,   6400}, 0, {  3034,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   384,    154,   6144}, 0, {  2012,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07012750 - 0x070127D0\nstatic const Vtx lll_seg7_vertex_07012750[] = {\n    {{{   896,    154,   5760}, 0, {   478,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,    154,   6656}, 0, {  2012,   3544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,    154,   6400}, 0, {  3034,   2522}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   640,    154,   6016}, 0, {  -540,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   640,    154,   6400}, 0, {  -540,   2522}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,    154,   6016}, 0, {  3034,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,    154,   5760}, 0, {  2012,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   896,    154,   6656}, 0, {   478,   3544}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070127D0 - 0x07012AE8\nstatic const Gfx lll_seg7_dl_070127D0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&lll_seg7_lights_0700FC78.l, 1),\n    gsSPLight(&lll_seg7_lights_0700FC78.a, 2),\n    gsSPVertex(lll_seg7_vertex_0700FC90, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(lll_seg7_vertex_0700FD70, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  3,  9,  4, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(lll_seg7_vertex_0700FE50, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  7,  6, 0x0),\n    gsSP2Triangles( 3,  5,  8, 0x0,  3,  8,  9, 0x0),\n    gsSP2Triangles( 3, 10,  7, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(lll_seg7_vertex_0700FF40, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_07010030, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_07010120, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_07010210, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_07010310, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(lll_seg7_vertex_070103F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_070104E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_070105E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_070106E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_070107D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07012AE8 - 0x07012C20\nstatic const Gfx lll_seg7_dl_07012AE8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_070108D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(lll_seg7_vertex_070109C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_07010AB0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_07010BA0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_07010C90, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07012C20 - 0x07012C78\nstatic const Gfx lll_seg7_dl_07012C20[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09006000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07010CD0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07012C78 - 0x07012CC0\nstatic const Gfx lll_seg7_dl_07012C78[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07010D90, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07012CC0 - 0x07012F60\nstatic const Gfx lll_seg7_dl_07012CC0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07010E10, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(lll_seg7_vertex_07010F10, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 4,  9,  7, 0x0,  4,  8, 10, 0x0),\n    gsSP2Triangles( 4, 10, 11, 0x0, 12, 13, 14, 0x0),\n    gsSP2Triangles( 4, 11, 15, 0x0,  4, 15,  5, 0x0),\n    gsSPVertex(lll_seg7_vertex_07011010, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(lll_seg7_vertex_070110F0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(lll_seg7_vertex_070111D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_070112C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles( 0, 13,  1, 0x0,  0,  2, 14, 0x0),\n    gsSP1Triangle( 0, 14, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_070113C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_070114C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_070115C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(lll_seg7_vertex_070116C0, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07012F60 - 0x070130A8\nstatic const Gfx lll_seg7_dl_07012F60[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09002800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07011770, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  7, 13,  8, 0x0),\n    gsSPVertex(lll_seg7_vertex_07011850, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 4, 10,  5, 0x0,  7,  9, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0,  4, 15, 10, 0x0),\n    gsSPVertex(lll_seg7_vertex_07011950, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(lll_seg7_vertex_07011A30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  1,  9,  2, 0x0),\n    gsSP2Triangles( 4, 10,  5, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles( 6, 14,  7, 0x0, 11, 13, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_07011B30, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  2,  6, 0x0,  7,  8,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070130A8 - 0x070132D8\nstatic const Gfx lll_seg7_dl_070130A8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09006800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07011BD0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  1, 11,  2, 0x0),\n    gsSP2Triangles(11, 12,  2, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_07011CD0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  3,  6,  7, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_07011DC0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_07011EB0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(lll_seg7_vertex_07011F90, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  4,  5,  2, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(lll_seg7_vertex_07012070, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  2, 15,  0, 0x0),\n    gsSPVertex(lll_seg7_vertex_07012170, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  4, 15,  5, 0x0),\n    gsSPVertex(lll_seg7_vertex_07012270, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070132D8 - 0x07013320\nstatic const Gfx lll_seg7_dl_070132D8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_0900B800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07012330, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07013320 - 0x07013378\nstatic const Gfx lll_seg7_dl_07013320[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_070123B0, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  6,  9,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07013378 - 0x07013430\nstatic const Gfx lll_seg7_dl_07013378[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07012450, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 3, 14,  4, 0x0),\n    gsSPVertex(lll_seg7_vertex_07012540, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  0,  7,  1, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_07012630, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07013430 - 0x07013488\nstatic const Gfx lll_seg7_dl_07013430[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07012690, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07013488 - 0x070134E0\nstatic const Gfx lll_seg7_dl_07013488[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07012750, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  2,  5, 0x0,  0,  5,  6, 0x0),\n    gsSP2Triangles( 0,  7,  1, 0x0,  0,  4,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070134E0 - 0x07013620\nconst Gfx lll_seg7_dl_070134E0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_070127D0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_07012AE8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_07012C20),\n    gsSPDisplayList(lll_seg7_dl_07012C78),\n    gsSPDisplayList(lll_seg7_dl_07012CC0),\n    gsSPDisplayList(lll_seg7_dl_07012F60),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_070130A8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_070132D8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_07013320),\n    gsSPDisplayList(lll_seg7_dl_07013378),\n    gsSPDisplayList(lll_seg7_dl_07013430),\n    gsSPDisplayList(lll_seg7_dl_07013488),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/lll/areas/1/10/collision.inc.c",
    "content": "// 0x0701D71C - 0x0701D7D0\nconst Collision lll_seg7_collision_hexagonal_platform[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0xC),\n    COL_VERTEX(0, 0, -895),\n    COL_VERTEX(768, 307, -383),\n    COL_VERTEX(768, 0, -383),\n    COL_VERTEX(768, 307, 384),\n    COL_VERTEX(768, 0, 384),\n    COL_VERTEX(0, 307, -895),\n    COL_VERTEX(0, 307, 896),\n    COL_VERTEX(0, 0, 896),\n    COL_VERTEX(-767, 307, 384),\n    COL_VERTEX(-767, 0, 384),\n    COL_VERTEX(-767, 307, -383),\n    COL_VERTEX(-767, 0, -383),\n    COL_TRI_INIT(SURFACE_DEFAULT, 16),\n    COL_TRI(0, 1, 2),\n    COL_TRI(2, 1, 3),\n    COL_TRI(2, 3, 4),\n    COL_TRI(0, 5, 1),\n    COL_TRI(5, 3, 1),\n    COL_TRI(5, 6, 3),\n    COL_TRI(4, 3, 6),\n    COL_TRI(4, 6, 7),\n    COL_TRI(5, 8, 6),\n    COL_TRI(7, 6, 8),\n    COL_TRI(7, 8, 9),\n    COL_TRI(5, 10, 8),\n    COL_TRI(9, 8, 10),\n    COL_TRI(9, 10, 11),\n    COL_TRI(11, 10, 5),\n    COL_TRI(11, 5, 0),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/lll/areas/1/10/geo.inc.c",
    "content": "// 0x0E000A78\nconst GeoLayout lll_geo_000A78[] = {\n    GEO_CULLING_RADIUS(1300),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_070165C8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/lll/areas/1/10/model.inc.c",
    "content": "// 0x070162E0 - 0x07016340\nstatic const Vtx lll_seg7_vertex_070162E0[] = {\n    {{{     0,    307,   -895}, 0, {     0,  -3012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,    307,    384}, 0, { -2586,   1244}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    307,    896}, 0, {     0,   2946}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,    307,   -383}, 0, { -2586,  -1310}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   768,    307,    384}, 0, {  2522,   1244}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   768,    307,   -383}, 0, {  2524,  -1310}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07016340 - 0x07016430\nstatic const Vtx lll_seg7_vertex_07016340[] = {\n    {{{  -767,      0,    384}, 0, {  1160,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -767,    307,   -383}, 0, { -3096,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -767,      0,   -383}, 0, { -3096,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   768,      0,   -383}, 0, {   330,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   768,    307,   -383}, 0, {   330,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   768,    307,    384}, 0, { -4118,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   768,      0,    384}, 0, { -4118,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   768,      0,    384}, 0, {  4226,    990}, {0x46, 0x00, 0x69, 0xff}}},\n    {{{   768,    307,    384}, 0, {  4226,      0}, {0x46, 0x00, 0x69, 0xff}}},\n    {{{     0,    307,    896}, 0, {     0,      0}, {0x46, 0x00, 0x69, 0xff}}},\n    {{{     0,      0,    896}, 0, {     0,    990}, {0x46, 0x00, 0x69, 0xff}}},\n    {{{     0,      0,    896}, 0, {  1160,    990}, {0xba, 0x00, 0x69, 0xff}}},\n    {{{  -767,    307,    384}, 0, { -3096,      0}, {0xba, 0x00, 0x69, 0xff}}},\n    {{{  -767,      0,    384}, 0, { -3096,    990}, {0xba, 0x00, 0x69, 0xff}}},\n    {{{     0,    307,    896}, 0, {  1160,      0}, {0xba, 0x00, 0x69, 0xff}}},\n};\n\n// 0x07016430 - 0x070164E0\nstatic const Vtx lll_seg7_vertex_07016430[] = {\n    {{{     0,      0,   -895}, 0, {   966,    990}, {0x46, 0x00, 0x97, 0xff}}},\n    {{{     0,    307,   -895}, 0, {   966,      0}, {0x46, 0x00, 0x97, 0xff}}},\n    {{{   768,    307,   -383}, 0, { -3096,      0}, {0x46, 0x00, 0x97, 0xff}}},\n    {{{  -767,      0,    384}, 0, {  1160,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -767,    307,    384}, 0, {  1160,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -767,    307,   -383}, 0, { -3096,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -767,      0,   -383}, 0, {  1160,    990}, {0xba, 0x00, 0x97, 0xff}}},\n    {{{     0,    307,   -895}, 0, { -3096,      0}, {0xba, 0x00, 0x97, 0xff}}},\n    {{{     0,      0,   -895}, 0, { -3096,    990}, {0xba, 0x00, 0x97, 0xff}}},\n    {{{  -767,    307,   -383}, 0, {  1160,      0}, {0xba, 0x00, 0x97, 0xff}}},\n    {{{   768,      0,   -383}, 0, { -3096,    990}, {0x46, 0x00, 0x97, 0xff}}},\n};\n\n// 0x070164E0 - 0x07016538\nstatic const Gfx lll_seg7_dl_070164E0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_07005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&lll_seg7_lights_0700FC00.l, 1),\n    gsSPLight(&lll_seg7_lights_0700FC00.a, 2),\n    gsSPVertex(lll_seg7_vertex_070162E0, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  0,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07016538 - 0x070165C8\nstatic const Gfx lll_seg7_dl_07016538[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07016340, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(lll_seg7_vertex_07016430, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP1Triangle( 0,  2, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070165C8 - 0x07016658\nconst Gfx lll_seg7_dl_070165C8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_070164E0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_07016538),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/lll/areas/1/11/geo.inc.c",
    "content": "// 0x0E000A90\nconst GeoLayout lll_geo_000A90[] = {\n    GEO_CULLING_RADIUS(1000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_07016B00),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/lll/areas/1/11/model.inc.c",
    "content": "// 0x07016658 - 0x07016670\nstatic const Lights1 lll_seg7_lights_07016658 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07016670 - 0x07016770\nstatic const Vtx lll_seg7_vertex_07016670[] = {\n    {{{   325,    282,   -210}, 0, {   180,    494}, {0x43, 0x58, 0xc4, 0xff}}},\n    {{{   186,    512,   -107}, 0, {   526,    236}, {0xe3, 0x7b, 0x09, 0xff}}},\n    {{{   335,    282,    194}, 0, {   154,   -514}, {0x51, 0x5a, 0x23, 0xff}}},\n    {{{   186,    512,    108}, 0, {   526,   -300}, {0xe8, 0x7a, 0xeb, 0xff}}},\n    {{{     0,    282,    387}, 0, {   990,   -998}, {0x00, 0x55, 0x5d, 0xff}}},\n    {{{   640,      0,   -383}, 0, {  -604,    926}, {0x4b, 0x62, 0xe6, 0xff}}},\n    {{{   640,      0,    384}, 0, {  -604,   -990}, {0x44, 0x63, 0x26, 0xff}}},\n    {{{     0,      0,    768}, 0, {   990,  -1948}, {0x00, 0x65, 0x4c, 0xff}}},\n    {{{     0,    512,    215}, 0, {   990,   -568}, {0x26, 0x53, 0xa9, 0xff}}},\n    {{{  -185,    512,    108}, 0, {  1454,   -300}, {0x36, 0x6b, 0x26, 0xff}}},\n    {{{  -334,    282,    194}, 0, {  1826,   -514}, {0xaf, 0x5a, 0x23, 0xff}}},\n    {{{  -639,      0,    384}, 0, {  2586,   -990}, {0xbc, 0x63, 0x26, 0xff}}},\n    {{{     0,      0,   -767}, 0, {   990,   1882}, {0x00, 0x65, 0xb4, 0xff}}},\n    {{{     0,    282,   -386}, 0, {   990,    934}, {0x00, 0x5a, 0xa7, 0xff}}},\n    {{{     0,    512,   -214}, 0, {   990,    504}, {0xe5, 0x7a, 0xf0, 0xff}}},\n    {{{  -324,    282,   -210}, 0, {  1800,    494}, {0xbd, 0x58, 0xc5, 0xff}}},\n};\n\n// 0x07016770 - 0x070167F0\nstatic const Vtx lll_seg7_vertex_07016770[] = {\n    {{{  -324,    282,   -210}, 0, {  1800,    494}, {0xbd, 0x58, 0xc5, 0xff}}},\n    {{{  -185,    512,   -107}, 0, {  1454,    236}, {0xfa, 0x6c, 0x42, 0xff}}},\n    {{{     0,    512,   -214}, 0, {   990,    504}, {0xe5, 0x7a, 0xf0, 0xff}}},\n    {{{  -334,    282,    194}, 0, {  1826,   -514}, {0xaf, 0x5a, 0x23, 0xff}}},\n    {{{  -639,      0,   -383}, 0, {  2586,    926}, {0xb5, 0x62, 0xe6, 0xff}}},\n    {{{     0,      0,   -767}, 0, {   990,   1882}, {0x00, 0x65, 0xb4, 0xff}}},\n    {{{  -185,    512,    108}, 0, {  1454,   -300}, {0x36, 0x6b, 0x26, 0xff}}},\n    {{{  -639,      0,    384}, 0, {  2586,   -990}, {0xbc, 0x63, 0x26, 0xff}}},\n};\n\n// 0x070167F0 - 0x07016850\nstatic const Vtx lll_seg7_vertex_070167F0[] = {\n    {{{     0,    102,   -214}, 0, {   990,    478}, {0x0d, 0x69, 0x44, 0xff}}},\n    {{{   186,    102,    108}, 0, {   224,    922}, {0xa1, 0x4c, 0xdf, 0xff}}},\n    {{{   186,    102,   -107}, 0, {   734,    922}, {0xa7, 0x2c, 0x4d, 0xff}}},\n    {{{     0,    102,    215}, 0, {     0,    480}, {0xed, 0x4c, 0x9d, 0xff}}},\n    {{{  -185,    102,   -107}, 0, {   734,     36}, {0x70, 0x2c, 0x26, 0xff}}},\n    {{{  -185,    102,    108}, 0, {   224,     36}, {0x4c, 0x4c, 0xbe, 0xff}}},\n};\n\n// 0x07016850 - 0x07016930\nstatic const Vtx lll_seg7_vertex_07016850[] = {\n    {{{   186,    512,   -107}, 0, {  3546,      0}, {0xe3, 0x7b, 0x09, 0xff}}},\n    {{{   186,    102,   -107}, 0, {  3546,    942}, {0xa7, 0x2c, 0x4d, 0xff}}},\n    {{{   186,    102,    108}, 0, {  2524,    942}, {0xa1, 0x4c, 0xdf, 0xff}}},\n    {{{   186,    512,    108}, 0, {  2524,      0}, {0xe8, 0x7a, 0xeb, 0xff}}},\n    {{{     0,    512,   -214}, 0, {  4568,      0}, {0xe5, 0x7a, 0xf0, 0xff}}},\n    {{{     0,    102,   -214}, 0, {  4568,    942}, {0x0d, 0x69, 0x44, 0xff}}},\n    {{{     0,    102,    215}, 0, {  1502,    942}, {0xed, 0x4c, 0x9d, 0xff}}},\n    {{{     0,    512,    215}, 0, {  1502,      0}, {0x26, 0x53, 0xa9, 0xff}}},\n    {{{  -185,    102,    108}, 0, {   480,    942}, {0x4c, 0x4c, 0xbe, 0xff}}},\n    {{{  -185,    512,    108}, 0, {   480,      0}, {0x36, 0x6b, 0x26, 0xff}}},\n    {{{  -185,    512,    108}, 0, {  6612,      0}, {0x36, 0x6b, 0x26, 0xff}}},\n    {{{  -185,    102,   -107}, 0, {  5590,    942}, {0x70, 0x2c, 0x26, 0xff}}},\n    {{{  -185,    512,   -107}, 0, {  5590,      0}, {0xfa, 0x6c, 0x42, 0xff}}},\n    {{{  -185,    102,    108}, 0, {  6612,    942}, {0x4c, 0x4c, 0xbe, 0xff}}},\n};\n\n// 0x07016930 - 0x07016A30\nstatic const Gfx lll_seg7_dl_07016930[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&lll_seg7_lights_07016658.l, 1),\n    gsSPLight(&lll_seg7_lights_07016658.a, 2),\n    gsSPVertex(lll_seg7_vertex_07016670, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 5,  0,  2, 0x0,  5,  2,  6, 0x0),\n    gsSP2Triangles( 1,  3,  2, 0x0,  2,  4,  7, 0x0),\n    gsSP2Triangles( 6,  2,  7, 0x0,  4,  8,  9, 0x0),\n    gsSP2Triangles( 4,  9, 10, 0x0,  3,  8,  4, 0x0),\n    gsSP2Triangles( 7,  4, 10, 0x0,  7, 10, 11, 0x0),\n    gsSP2Triangles(12, 13,  0, 0x0, 12,  0,  5, 0x0),\n    gsSP2Triangles( 0, 14,  1, 0x0,  0, 13, 14, 0x0),\n    gsSP2Triangles(13, 15, 14, 0x0, 15, 13, 12, 0x0),\n    gsSPVertex(lll_seg7_vertex_07016770, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  0,  5, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 3,  6,  1, 0x0,  7,  3,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07016A30 - 0x07016A78\nstatic const Gfx lll_seg7_dl_07016A30[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09009000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_070167F0, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  0,  5,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07016A78 - 0x07016B00\nstatic const Gfx lll_seg7_dl_07016A78[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09009800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07016850, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  1,  0, 0x0,  4,  5,  1, 0x0),\n    gsSP2Triangles( 3,  2,  6, 0x0,  3,  6,  7, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP2Triangles(12, 11,  5, 0x0, 12,  5,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07016B00 - 0x07016B70\nconst Gfx lll_seg7_dl_07016B00[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_07016930),\n    gsSPDisplayList(lll_seg7_dl_07016A30),\n    gsSPDisplayList(lll_seg7_dl_07016A78),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/lll/areas/1/12/geo.inc.c",
    "content": "// 0x0E000AA8\nconst GeoLayout lll_geo_000AA8[] = {\n    GEO_CULLING_RADIUS(900),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_070174E0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/lll/areas/1/12/model.inc.c",
    "content": "// 0x07016B70 - 0x07016BF0\nstatic const Vtx lll_seg7_vertex_07016B70[] = {\n    {{{  -255,    154,   -255}, 0, { -1564,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   384,    154,   -127}, 0, {   990,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,    154,   -255}, 0, {   480,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,    154,    256}, 0, {   480,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   384,    154,    128}, 0, {   990,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -383,    154,    128}, 0, { -2074,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,    154,    256}, 0, { -1564,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -383,    154,   -127}, 0, { -2074,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07016BF0 - 0x07016CE0\nstatic const Vtx lll_seg7_vertex_07016BF0[] = {\n    {{{   256,      0,    256}, 0, {  1672,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,    154,    256}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,      0,    256}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,      0,   -255}, 0, {  1172,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   384,    154,   -127}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   384,      0,   -127}, 0, {     0,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   256,    154,   -255}, 0, {  1172,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   384,      0,   -127}, 0, {   820,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   384,    154,   -127}, 0, {   820,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   384,    154,    128}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   384,      0,    128}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   384,      0,    128}, 0, {  1172,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   256,    154,    256}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   256,      0,    256}, 0, {     0,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   384,    154,    128}, 0, {  1172,      0}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07016CE0 - 0x07016DD0\nstatic const Vtx lll_seg7_vertex_07016CE0[] = {\n    {{{  -383,      0,   -127}, 0, {   990,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -383,    154,   -127}, 0, {   990,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -255,    154,   -255}, 0, {  -212,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   256,      0,    256}, 0, {  1672,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,    154,    256}, 0, {  1672,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,    154,    256}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,      0,    256}, 0, {   990,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -255,    154,    256}, 0, {   990,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -383,    154,    128}, 0, {  -212,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -383,      0,    128}, 0, {  -212,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -383,      0,    128}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -383,    154,    128}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -383,    154,   -127}, 0, {   138,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -383,      0,   -127}, 0, {   138,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,      0,   -255}, 0, {  -212,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07016DD0 - 0x07016EC0\nstatic const Vtx lll_seg7_vertex_07016DD0[] = {\n    {{{    77,    563,   -178}, 0, {   990,  -2076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    77,    563,    -25}, 0, { -4118,  -2076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -76,    563,    -25}, 0, { -4118,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -153,    486,   -178}, 0, {  4056,  -5142}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -153,    486,    -25}, 0, { -1052,  -5142}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -153,    154,    -25}, 0, { -1052,   1498}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -153,    154,   -178}, 0, {  4056,   1500}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   154,    154,   -178}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   154,    154,    -25}, 0, {  5078,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   154,    486,    -25}, 0, {  5078,  -5652}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   154,    486,   -178}, 0, {     0,  -5652}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   154,    486,   -178}, 0, {     0,    990}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{    77,    563,    -25}, 0, {  5078,  -1178}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{    77,    563,   -178}, 0, {     0,  -1178}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{   154,    486,    -25}, 0, {  5078,    990}, {0xa7, 0xa7, 0x00, 0xff}}},\n};\n\n// 0x07016EC0 - 0x07016FB0\nstatic const Vtx lll_seg7_vertex_07016EC0[] = {\n    {{{  -229,    486,   -178}, 0, {     0,    990}, {0xa6, 0x59, 0x00, 0xff}}},\n    {{{   -76,    640,    -25}, 0, {  5078,  -3346}, {0xa6, 0x59, 0x00, 0xff}}},\n    {{{   -76,    640,   -178}, 0, {     0,  -3346}, {0xa6, 0x59, 0x00, 0xff}}},\n    {{{    77,    563,   -178}, 0, {   990,  -2076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -76,    563,    -25}, 0, { -4118,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -76,    563,   -178}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -76,    563,   -178}, 0, {   990,  -1054}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{   -76,    563,    -25}, 0, { -4118,  -1054}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{  -153,    486,    -25}, 0, { -4118,   1112}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{  -153,    486,   -178}, 0, {   990,   1112}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{  -229,    154,   -178}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -229,    154,    -25}, 0, {  5078,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -229,    486,    -25}, 0, {  5078,  -5652}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -229,    486,   -178}, 0, {     0,  -5652}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -229,    486,    -25}, 0, {  5078,    990}, {0xa6, 0x59, 0x00, 0xff}}},\n};\n\n// 0x07016FB0 - 0x070170A0\nstatic const Vtx lll_seg7_vertex_07016FB0[] = {\n    {{{   -76,    640,    -25}, 0, { -4628,  -8208}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -229,    486,    -25}, 0, { -7694,  -5142}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -76,    563,    -25}, 0, { -4628,  -6674}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -76,    640,   -178}, 0, {  5078,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    77,    640,    -25}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    77,    640,   -178}, 0, {  5078,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -76,    640,    -25}, 0, {     0,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    77,    640,   -178}, 0, {  5078,  -3098}, {0x5a, 0x59, 0x00, 0xff}}},\n    {{{    77,    640,    -25}, 0, {     0,  -3098}, {0x5a, 0x59, 0x00, 0xff}}},\n    {{{   230,    486,    -25}, 0, {     0,   1236}, {0x5a, 0x59, 0x00, 0xff}}},\n    {{{   230,    486,   -178}, 0, {  5078,   1236}, {0x5a, 0x59, 0x00, 0xff}}},\n    {{{   230,    486,   -178}, 0, {  5078,  -5142}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   230,    486,    -25}, 0, {     0,  -5142}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   230,    154,    -25}, 0, {     0,   1500}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   230,    154,   -178}, 0, {  5078,   1500}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070170A0 - 0x07017190\nstatic const Vtx lll_seg7_vertex_070170A0[] = {\n    {{{  -229,    486,    -25}, 0, { -7694,  -5142}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -153,    154,    -25}, 0, { -6162,   1498}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -153,    486,    -25}, 0, { -6162,  -5142}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -229,    154,    -25}, 0, { -7694,   1498}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -76,    563,    -25}, 0, { -4628,  -6674}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -76,    640,    -25}, 0, { -4628,  -8208}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    77,    563,    -25}, 0, { -1562,  -6674}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   154,    486,    -25}, 0, {     0,  -5142}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   230,    486,    -25}, 0, {  1500,  -5142}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    77,    640,    -25}, 0, { -1564,  -8208}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   154,    154,    -25}, 0, {     0,   1498}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   230,    154,    -25}, 0, {  1502,   1498}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -153,    486,   -178}, 0, {  6612,  -5142}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -153,    154,   -178}, 0, {  6612,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -229,    486,   -178}, 0, {  8144,  -5142}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07017190 - 0x07017250\nstatic const Vtx lll_seg7_vertex_07017190[] = {\n    {{{   -76,    563,   -178}, 0, {  5078,  -6674}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -76,    640,   -178}, 0, {  5078,  -8208}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    77,    640,   -178}, 0, {  2012,  -8208}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -153,    154,   -178}, 0, {  6612,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -229,    154,   -178}, 0, {  8144,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -229,    486,   -178}, 0, {  8144,  -5142}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -153,    486,   -178}, 0, {  6612,  -5142}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   230,    486,   -178}, 0, { -1052,  -5142}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    77,    563,   -178}, 0, {  2012,  -6674}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   230,    154,   -178}, 0, { -1052,   1498}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   154,    154,   -178}, 0, {   480,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   154,    486,   -178}, 0, {   480,  -5142}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07017250 - 0x070172B8\nstatic const Gfx lll_seg7_dl_07017250[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&lll_seg7_lights_0700FC00.l, 1),\n    gsSPLight(&lll_seg7_lights_0700FC00.a, 2),\n    gsSPVertex(lll_seg7_vertex_07016B70, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  0,  5,  6, 0x0),\n    gsSP2Triangles( 0,  7,  5, 0x0,  0,  6,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070172B8 - 0x07017358\nstatic const Gfx lll_seg7_dl_070172B8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07016BF0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(lll_seg7_vertex_07016CE0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07017358 - 0x070174E0\nstatic const Gfx lll_seg7_dl_07017358[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_07002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07016DD0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(lll_seg7_vertex_07016EC0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(lll_seg7_vertex_07016FB0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_070170A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  5,  4,  6, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  6,  7,  9, 0x0),\n    gsSP2Triangles( 7, 10, 11, 0x0,  7, 11,  8, 0x0),\n    gsSP2Triangles( 6,  9,  5, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_07017190, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  5,  1, 0x0,  2,  7,  8, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  7, 10, 11, 0x0),\n    gsSP2Triangles( 7, 11,  8, 0x0,  2,  8,  0, 0x0),\n    gsSP1Triangle( 0,  6,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070174E0 - 0x07017578\nconst Gfx lll_seg7_dl_070174E0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_07017250),\n    gsSPDisplayList(lll_seg7_dl_07017358),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_070172B8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/lll/areas/1/13/geo.inc.c",
    "content": "// 0x0E000AC0\nconst GeoLayout lll_geo_000AC0[] = {\n    GEO_CULLING_RADIUS(1000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_070178A8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/lll/areas/1/13/model.inc.c",
    "content": "// 0x07017578 - 0x07017590\nstatic const Lights1 lll_seg7_lights_07017578 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xfe, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07017590 - 0x07017650\nstatic const Vtx lll_seg7_vertex_07017590[] = {\n    {{{  -511,    154,    128}, 0, {     0,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,    154,    512}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,    154,    512}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,    154,    128}, 0, {   990,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,    307,   -127}, 0, {   -30,    732}, {0x00, 0x6c, 0x41, 0xff}}},\n    {{{  -511,    154,    128}, 0, {     0,   1232}, {0x00, 0x6c, 0x41, 0xff}}},\n    {{{   512,    154,    128}, 0, {   988,   1246}, {0x00, 0x6c, 0x41, 0xff}}},\n    {{{   512,    307,   -127}, 0, {   992,    746}, {0x00, 0x6c, 0x41, 0xff}}},\n    {{{  -511,    307,   -511}, 0, {     0,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,    307,   -127}, 0, {     0,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,    307,   -127}, 0, {   990,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,    307,   -511}, 0, {   990,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07017650 - 0x07017740\nstatic const Vtx lll_seg7_vertex_07017650[] = {\n    {{{  -511,      0,   -511}, 0, {  4056,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   512,    307,   -511}, 0, {   650,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   512,      0,   -511}, 0, {   650,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   512,      0,   -511}, 0, {  2352,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,    307,   -511}, 0, {  2352,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,    307,   -127}, 0, {  1076,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,    154,    128}, 0, {   224,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,      0,    512}, 0, { -1052,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,    154,    512}, 0, { -1052,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -511,    154,    128}, 0, {  2098,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,    307,   -127}, 0, {  1246,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,      0,   -511}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,      0,    512}, 0, {  3374,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,    154,    512}, 0, {  3374,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,    307,   -511}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07017740 - 0x070177B0\nstatic const Vtx lll_seg7_vertex_07017740[] = {\n    {{{   512,      0,    512}, 0, {  3374,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,    154,    512}, 0, {     0,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,      0,    512}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,      0,   -511}, 0, {  4056,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -511,    307,   -511}, 0, {  4056,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   512,    307,   -511}, 0, {   650,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   512,    154,    512}, 0, {  3374,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070177B0 - 0x07017818\nstatic const Gfx lll_seg7_dl_070177B0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_0900B800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&lll_seg7_lights_07017578.l, 1),\n    gsSPLight(&lll_seg7_lights_07017578.a, 2),\n    gsSPVertex(lll_seg7_vertex_07017590, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07017818 - 0x070178A8\nstatic const Gfx lll_seg7_dl_07017818[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07017650, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  3,  6,  7, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13,  9, 0x0, 12,  9, 11, 0x0),\n    gsSP1Triangle(10, 14, 11, 0x0),\n    gsSPVertex(lll_seg7_vertex_07017740, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  6,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070178A8 - 0x07017938\nconst Gfx lll_seg7_dl_070178A8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_070177B0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_07017818),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/lll/areas/1/14/geo.inc.c",
    "content": "// 0x0E000AD8\nconst GeoLayout lll_geo_000AD8[] = {\n    GEO_CULLING_RADIUS(500),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_07017B50),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/lll/areas/1/14/model.inc.c",
    "content": "// 0x07017938 - 0x070179F8\nstatic const Vtx lll_seg7_vertex_07017938[] = {\n    {{{  -127,      0,   -127}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -127,    307,   -127}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   128,    307,   -127}, 0, {   138,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   128,      0,   -127}, 0, {   138,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -127,      0,    128}, 0, {   820,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -127,    307,    128}, 0, {   820,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -127,    307,   -127}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -127,      0,   -127}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   128,      0,   -127}, 0, {   820,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   128,    307,    128}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   128,      0,    128}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   128,    307,   -127}, 0, {   820,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070179F8 - 0x07017A38\nstatic const Vtx lll_seg7_vertex_070179F8[] = {\n    {{{  -127,    307,   -127}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   128,    307,    128}, 0, {   820,    820}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   128,    307,   -127}, 0, {   820,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -127,    307,    128}, 0, {     0,    820}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07017A38 - 0x07017A78\nstatic const Vtx lll_seg7_vertex_07017A38[] = {\n    {{{   128,      0,    128}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   128,    307,    128}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -127,    307,    128}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -127,      0,    128}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07017A78 - 0x07017AE0\nstatic const Gfx lll_seg7_dl_07017A78[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09006800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&lll_seg7_lights_0700FC00.l, 1),\n    gsSPLight(&lll_seg7_lights_0700FC00.a, 2),\n    gsSPVertex(lll_seg7_vertex_07017938, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07017AE0 - 0x07017B18\nstatic const Gfx lll_seg7_dl_07017AE0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09006000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_070179F8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07017B18 - 0x07017B50\nstatic const Gfx lll_seg7_dl_07017B18[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07017A38, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07017B50 - 0x07017BE8\nconst Gfx lll_seg7_dl_07017B50[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_07017A78),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_07017AE0),\n    gsSPDisplayList(lll_seg7_dl_07017B18),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/lll/areas/1/15/geo.inc.c",
    "content": "// 0x0E000AF0\nconst GeoLayout lll_geo_000AF0[] = {\n    GEO_CULLING_RADIUS(500),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, lll_seg7_dl_07017F40),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/lll/areas/1/15/model.inc.c",
    "content": "// 0x07017BE8 - 0x07017CD8\nstatic const Vtx lll_seg7_vertex_07017BE8[] = {\n    {{{  -101,      0,    177}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   102,    -19,    177}, 0, {   990,     70}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   102,      0,    177}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   102,      0,   -176}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -101,    -19,   -176}, 0, {   990,   1090}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -101,      0,   -176}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   102,    -19,   -176}, 0, {     0,   1090}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -101,      0,   -176}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -204,    -19,      0}, 0, {   990,   1090}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -204,      0,      0}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -101,    -19,   -176}, 0, {     0,   1090}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -204,      0,      0}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -204,    -19,      0}, 0, {     0,   1090}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -101,    -19,    177}, 0, {   990,   1090}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -101,      0,    177}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07017CD8 - 0x07017DD8\nstatic const Vtx lll_seg7_vertex_07017CD8[] = {\n    {{{   205,      0,      0}, 0, {   786,   -236}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -101,      0,   -176}, 0, {   268,  -2170}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -101,      0,    177}, 0, { -1146,   -754}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -101,      0,    177}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -101,    -19,    177}, 0, {     0,     70}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   102,    -19,    177}, 0, {   990,     70}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   102,      0,    177}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   205,    -19,      0}, 0, {   990,     70}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   205,      0,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   102,    -19,    177}, 0, {     0,     70}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   205,      0,      0}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   102,    -19,   -176}, 0, {   990,   1090}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   102,      0,   -176}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   205,    -19,      0}, 0, {     0,   1090}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   102,      0,   -176}, 0, {  1084,  -1354}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   102,      0,    177}, 0, {  -330,     62}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07017DD8 - 0x07017E68\nstatic const Vtx lll_seg7_vertex_07017DD8[] = {\n    {{{  -101,      0,   -176}, 0, {   268,  -2170}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -204,      0,      0}, 0, {  -848,  -1872}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -101,      0,    177}, 0, { -1146,   -754}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   102,    -19,    177}, 0, {   156,    292}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -101,    -19,    177}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -204,    -19,      0}, 0, {   478,   1498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   102,    -19,   -176}, 0, {  1364,    616}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   205,    -19,      0}, 0, {   854,    104}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -101,    -19,   -176}, 0, {  1178,   1312}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07017E68 - 0x07017F40\nstatic const Gfx lll_seg7_dl_07017E68[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07017BE8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_07017CD8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP2Triangles( 0, 14,  1, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_07017DD8, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  3,  6,  7, 0x0),\n    gsSP1Triangle( 5,  8,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07017F40 - 0x07017FB0\nconst Gfx lll_seg7_dl_07017F40[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_07017E68),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/lll/areas/1/2/model.inc.c",
    "content": "// 0x07013620 - 0x07013638\nstatic const Lights1 lll_seg7_lights_07013620 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07013638 - 0x07013738\nstatic const Vtx lll_seg7_vertex_07013638[] = {\n    {{{ -3327,     10,   3584}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3071,     10,   3584}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3071,     10,   3328}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3327,     10,   3328}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2816,   1280,   8192}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2816,    256,   8192}, 0, {     0,   1244}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2816,    256,   7552}, 0, {   766,   1244}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2816,    563,   5504}, 0, {  3322,    862}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2816,   1280,   4608}, 0, {  4440,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2816,    563,   4608}, 0, {  4440,    862}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2816,   1280,   4608}, 0, {     0,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2816,    563,   4608}, 0, {     0,   1116}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4352,    563,   4608}, 0, {  1884,   1116}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5888,   1280,   4608}, 0, {  3800,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4352,      0,   4608}, 0, {  1884,   1818}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5888,      0,   4608}, 0, {  3800,   1818}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07013738 - 0x070137C0\nstatic const Gfx lll_seg7_dl_07013738[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&lll_seg7_lights_07013620.l, 1),\n    gsSPLight(&lll_seg7_lights_07013620.a, 2),\n    gsSPVertex(lll_seg7_vertex_07013638, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 13, 10, 0x0),\n    gsSP2Triangles(12, 14, 15, 0x0, 12, 15, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070137C0 - 0x07013830\nconst Gfx lll_seg7_dl_070137C0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_07013738),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/lll/areas/1/3/model.inc.c",
    "content": "// 0x07013830 - 0x070138B0\nstatic const Vtx lll_seg7_vertex_07013830[] = {\n    {{{ -3839,    307,   3328}, 0, {   992,    992}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4095,    307,   3328}, 0, {   992,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4095,    307,   3584}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3839,    307,   3584}, 0, {     0,    992}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,    307,   3584}, 0, {   992,    992}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,    307,   3840}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,    307,   3840}, 0, {     0,    992}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,    307,   3584}, 0, {   992,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070138B0 - 0x070138F8\nstatic const Gfx lll_seg7_dl_070138B0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07013830, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070138F8 - 0x07013968\nconst Gfx lll_seg7_dl_070138F8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_070138B0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/lll/areas/1/4/geo.inc.c",
    "content": "// 0x0E0009E0\nconst GeoLayout lll_geo_0009E0[] = {\n    GEO_CULLING_RADIUS(1700),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_07013D28),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/lll/areas/1/4/model.inc.c",
    "content": "// 0x07013968 - 0x070139E8\nstatic const Vtx lll_seg7_vertex_07013968[] = {\n    {{{  -767,    307,   -767}, 0, { -1198,  -2222}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1152,    307,    384}, 0, {  4276,   1062}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1152,    307,   -383}, 0, {  4276,  -1128}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   768,    307,    768}, 0, {  3180,   2156}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   768,    307,   -767}, 0, {  3180,  -2222}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1151,    307,    384}, 0, { -2294,   1062}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,    307,    768}, 0, { -1198,   2156}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1151,    307,   -383}, 0, { -2294,  -1128}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070139E8 - 0x07013AD8\nstatic const Vtx lll_seg7_vertex_070139E8[] = {\n    {{{  1152,      0,    384}, 0, {  2012,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1152,    307,    384}, 0, {  2012,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   768,    307,    768}, 0, {  -394,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -767,      0,   -767}, 0, {  7634,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -767,    307,   -767}, 0, {  7634,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   768,    307,   -767}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   768,      0,   -767}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   768,      0,   -767}, 0, {  2376,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   768,    307,   -767}, 0, {  2376,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1152,    307,   -383}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1152,      0,   -383}, 0, {     0,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1152,      0,   -383}, 0, {  3374,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1152,    307,   -383}, 0, {  3374,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1152,    307,    384}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1152,      0,    384}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07013AD8 - 0x07013BC8\nstatic const Vtx lll_seg7_vertex_07013AD8[] = {\n    {{{ -1151,      0,    384}, 0, {  3374,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1151,    307,   -383}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1151,      0,   -383}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1152,      0,    384}, 0, {  2012,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   768,    307,    768}, 0, {  -394,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   768,      0,    768}, 0, {  -394,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   768,      0,    768}, 0, {  7122,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -767,    307,    768}, 0, {  -542,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -767,      0,    768}, 0, {  -542,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   768,    307,    768}, 0, {  7122,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -767,      0,    768}, 0, {  2012,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -767,    307,    768}, 0, {  2012,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1151,    307,    384}, 0, {  -394,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1151,      0,    384}, 0, {  -394,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1151,    307,    384}, 0, {  3374,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07013BC8 - 0x07013C08\nstatic const Vtx lll_seg7_vertex_07013BC8[] = {\n    {{{ -1151,      0,   -383}, 0, {  2376,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1151,    307,   -383}, 0, {  2376,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -767,    307,   -767}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -767,      0,   -767}, 0, {     0,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07013C08 - 0x07013C70\nstatic const Gfx lll_seg7_dl_07013C08[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_0900A800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&lll_seg7_lights_0700FC00.l, 1),\n    gsSPLight(&lll_seg7_lights_0700FC00.a, 2),\n    gsSPVertex(lll_seg7_vertex_07013968, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  0,  5,  6, 0x0),\n    gsSP2Triangles( 0,  7,  5, 0x0,  0,  6,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07013C70 - 0x07013D28\nstatic const Gfx lll_seg7_dl_07013C70[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_070139E8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_07013AD8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(lll_seg7_vertex_07013BC8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07013D28 - 0x07013DB8\nconst Gfx lll_seg7_dl_07013D28[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_07013C08),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_07013C70),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/lll/areas/1/5/geo.inc.c",
    "content": "// 0x0E0009F8\nconst GeoLayout lll_geo_0009F8[] = {\n    GEO_CULLING_RADIUS(2200),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_07014788),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/lll/areas/1/5/model.inc.c",
    "content": "// 0x07013DB8 - 0x07013EA8\nstatic const Vtx lll_seg7_vertex_07013DB8[] = {\n    {{{   256,      0,   1024}, 0, {   990,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   512,    154,    768}, 0, { -1416,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   512,      0,    768}, 0, { -1416,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   512,      0,   1280}, 0, {  1454,    990}, {0x0b, 0x00, 0x7e, 0xff}}},\n    {{{   512,    154,   1280}, 0, {  1454,      0}, {0x0b, 0x00, 0x7e, 0xff}}},\n    {{{  -895,    154,   1408}, 0, { -6162,      0}, {0x0b, 0x00, 0x7e, 0xff}}},\n    {{{  -895,      0,   1408}, 0, { -6162,    990}, {0x0b, 0x00, 0x7e, 0xff}}},\n    {{{  -895,      0,   1408}, 0, {  3034,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -895,    154,   1408}, 0, {  3034,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -895,    154,   1024}, 0, {  -370,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -895,      0,   1024}, 0, {  -370,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -895,      0,   1024}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,    154,   1024}, 0, { -5150,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,      0,   1024}, 0, { -5150,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -895,    154,   1024}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07013EA8 - 0x07013F98\nstatic const Vtx lll_seg7_vertex_07013EA8[] = {\n    {{{  -127,      0,    640}, 0, {   990,    990}, {0x88, 0x00, 0x28, 0xff}}},\n    {{{  -383,    154,   -127}, 0, { -6626,      0}, {0x88, 0x00, 0x28, 0xff}}},\n    {{{  -383,      0,   -127}, 0, { -6626,    990}, {0x88, 0x00, 0x28, 0xff}}},\n    {{{   256,      0,   1024}, 0, {   990,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   256,    154,   1024}, 0, {   990,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   512,    154,    768}, 0, { -1416,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   512,      0,    768}, 0, {   990,    990}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{   512,    154,    768}, 0, {   990,      0}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{   256,    154,    640}, 0, { -1416,      0}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{   256,      0,    640}, 0, { -1416,    990}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{   256,      0,    640}, 0, {  1330,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,    154,    640}, 0, {  1330,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -127,    154,    640}, 0, { -2074,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -127,      0,    640}, 0, { -2074,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -127,    154,    640}, 0, {   990,      0}, {0x88, 0x00, 0x28, 0xff}}},\n};\n\n// 0x07013F98 - 0x07014088\nstatic const Vtx lll_seg7_vertex_07013F98[] = {\n    {{{   256,      0,   -895}, 0, {  7122,    990}, {0xec, 0x00, 0x7d, 0xff}}},\n    {{{  -511,    154,  -1023}, 0, {    98,      0}, {0xec, 0x00, 0x7d, 0xff}}},\n    {{{  -511,      0,  -1023}, 0, {    98,    990}, {0xec, 0x00, 0x7d, 0xff}}},\n    {{{  -383,      0,   -127}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -383,    154,   -511}, 0, { -2414,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -383,      0,   -511}, 0, { -2414,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -383,    154,   -127}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -383,      0,   -511}, 0, {  7122,    990}, {0xe8, 0x00, 0x84, 0xff}}},\n    {{{  -383,    154,   -511}, 0, {  7122,      0}, {0xe8, 0x00, 0x84, 0xff}}},\n    {{{   256,    154,   -639}, 0, {    98,      0}, {0xe8, 0x00, 0x84, 0xff}}},\n    {{{   256,      0,   -639}, 0, {    98,    990}, {0xe8, 0x00, 0x84, 0xff}}},\n    {{{   256,      0,   -639}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   256,    154,   -895}, 0, {  -712,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   256,      0,   -895}, 0, {  -712,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   256,    154,   -639}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07014088 - 0x07014178\nstatic const Vtx lll_seg7_vertex_07014088[] = {\n    {{{  -895,      0,  -1407}, 0, {   650,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -639,    154,  -1407}, 0, { -1052,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -639,      0,  -1407}, 0, { -1052,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,      0,   -895}, 0, {  7122,    990}, {0xec, 0x00, 0x7d, 0xff}}},\n    {{{   256,    154,   -895}, 0, {  7122,      0}, {0xec, 0x00, 0x7d, 0xff}}},\n    {{{  -511,    154,  -1023}, 0, {    98,      0}, {0xec, 0x00, 0x7d, 0xff}}},\n    {{{  -511,      0,  -1023}, 0, {  5078,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,    154,  -1023}, 0, {  5078,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -895,    154,  -1023}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -895,      0,  -1023}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -895,      0,  -1023}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -895,    154,  -1407}, 0, { -2414,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -895,      0,  -1407}, 0, { -2414,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -895,    154,  -1023}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -895,    154,  -1407}, 0, {   650,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07014178 - 0x07014278\nstatic const Vtx lll_seg7_vertex_07014178[] = {\n    {{{  -639,      0,  -1407}, 0, {  1750,    990}, {0x24, 0x00, 0x87, 0xff}}},\n    {{{  -639,    154,  -1407}, 0, {  1750,      0}, {0x24, 0x00, 0x87, 0xff}}},\n    {{{   640,    154,  -1023}, 0, {-12294,      0}, {0x24, 0x00, 0x87, 0xff}}},\n    {{{   640,      0,  -1023}, 0, {-12294,    990}, {0x24, 0x00, 0x87, 0xff}}},\n    {{{   640,      0,  -1023}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   640,    154,  -1023}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   640,    154,   -511}, 0, { -4118,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   640,      0,   -511}, 0, { -4118,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   640,      0,   -511}, 0, {   860,    990}, {0x2f, 0x00, 0x75, 0xff}}},\n    {{{   640,    154,   -511}, 0, {   860,      0}, {0x2f, 0x00, 0x75, 0xff}}},\n    {{{     0,    154,   -255}, 0, { -6162,      0}, {0x2f, 0x00, 0x75, 0xff}}},\n    {{{     0,      0,   -255}, 0, { -6162,    990}, {0x2f, 0x00, 0x75, 0xff}}},\n    {{{     0,      0,   -255}, 0, {  1672,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,    154,   -255}, 0, {  1672,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,    154,   -127}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,      0,   -127}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07014278 - 0x07014378\nstatic const Vtx lll_seg7_vertex_07014278[] = {\n    {{{     0,      0,   -127}, 0, {  3776,    990}, {0x78, 0x00, 0xd8, 0xff}}},\n    {{{     0,    154,   -127}, 0, {  3776,      0}, {0x78, 0x00, 0xd8, 0xff}}},\n    {{{   128,    154,    256}, 0, {     0,      0}, {0x78, 0x00, 0xd8, 0xff}}},\n    {{{   128,      0,    256}, 0, {     0,    990}, {0x78, 0x00, 0xd8, 0xff}}},\n    {{{   128,      0,    256}, 0, {  3374,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   512,    154,    256}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   512,      0,    256}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   128,    154,    256}, 0, {  3374,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   512,      0,    256}, 0, {  1062,    990}, {0x65, 0x00, 0xb4, 0xff}}},\n    {{{   512,    154,    256}, 0, {  1062,      0}, {0x65, 0x00, 0xb4, 0xff}}},\n    {{{   896,    154,    768}, 0, { -6162,      0}, {0x65, 0x00, 0xb4, 0xff}}},\n    {{{   896,      0,    768}, 0, { -6162,    990}, {0x65, 0x00, 0xb4, 0xff}}},\n    {{{   896,      0,    768}, 0, {  1062,    990}, {0x65, 0x00, 0x4c, 0xff}}},\n    {{{   896,    154,    768}, 0, {  1062,      0}, {0x65, 0x00, 0x4c, 0xff}}},\n    {{{   512,    154,   1280}, 0, { -6162,      0}, {0x65, 0x00, 0x4c, 0xff}}},\n    {{{   512,      0,   1280}, 0, { -6162,    990}, {0x65, 0x00, 0x4c, 0xff}}},\n};\n\n// 0x07014378 - 0x07014478\nstatic const Vtx lll_seg7_vertex_07014378[] = {\n    {{{  -383,    154,   -127}, 0, { -1052,  -4120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,    154,    640}, 0, { -3608,  -7186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,    154,    768}, 0, { -4630,  -7696}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   640,    154,  -1023}, 0, { -5140,   -542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -639,    154,  -1407}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,    154,   -895}, 0, { -3606,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,    154,  -1023}, 0, {  -542,   -542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -895,    154,  -1023}, 0, {   990,   -542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -895,    154,  -1407}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,    154,   -639}, 0, { -3606,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    154,   -255}, 0, { -2586,  -3608}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -383,    154,   -511}, 0, { -1052,  -2586}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   128,    154,    256}, 0, { -3096,  -5652}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    154,   -127}, 0, { -2586,  -4120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -127,    154,    640}, 0, { -2074,  -7186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   640,    154,   -511}, 0, { -5140,  -2586}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07014478 - 0x070144F8\nstatic const Vtx lll_seg7_vertex_07014478[] = {\n    {{{   512,    154,    768}, 0, { -4630,  -7696}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,    154,   1024}, 0, { -3608,  -8718}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   896,    154,    768}, 0, { -6162,  -7696}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   128,    154,    256}, 0, { -3096,  -5652}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,    154,   1280}, 0, { -4630,  -9740}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -895,    154,   1408}, 0, {   990, -10252}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -895,    154,   1024}, 0, {   990,  -8718}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,    154,    256}, 0, { -4630,  -5652}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070144F8 - 0x070146B8\nstatic const Gfx lll_seg7_dl_070144F8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&lll_seg7_lights_0700FC00.l, 1),\n    gsSPLight(&lll_seg7_lights_0700FC00.a, 2),\n    gsSPVertex(lll_seg7_vertex_07013DB8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(lll_seg7_vertex_07013EA8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(lll_seg7_vertex_07013F98, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(lll_seg7_vertex_07014088, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(lll_seg7_vertex_07014178, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_07014278, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070146B8 - 0x07014788\nstatic const Gfx lll_seg7_dl_070146B8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07014378, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  4,  7,  6, 0x0),\n    gsSP2Triangles( 4,  8,  7, 0x0,  3,  5,  9, 0x0),\n    gsSP2Triangles(10,  9,  0, 0x0, 10,  3,  9, 0x0),\n    gsSP2Triangles( 9, 11,  0, 0x0,  0, 12, 13, 0x0),\n    gsSP2Triangles( 0, 13, 10, 0x0,  0,  2, 12, 0x0),\n    gsSP2Triangles( 0, 14,  1, 0x0, 10, 15,  3, 0x0),\n    gsSPVertex(lll_seg7_vertex_07014478, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  1,  5,  4, 0x0),\n    gsSP2Triangles( 1,  6,  5, 0x0,  2,  7,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07014788 - 0x07014818\nconst Gfx lll_seg7_dl_07014788[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_070144F8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_070146B8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/lll/areas/1/6/geo.inc.c",
    "content": "// 0x0E000A10\nconst GeoLayout lll_geo_000A10[] = {\n    GEO_CULLING_RADIUS(1200),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_07014BD8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/lll/areas/1/6/model.inc.c",
    "content": "// 0x07014818 - 0x07014908\nstatic const Vtx lll_seg7_vertex_07014818[] = {\n    {{{   256,      0,    768}, 0, {  2524,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,    307,    768}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,      0,    768}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -767,      0,    256}, 0, {  2012,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -767,    307,   -255}, 0, {  -542,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -767,      0,   -255}, 0, {  -542,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -767,    307,    256}, 0, {  2012,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   768,      0,   -255}, 0, {  2522,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   768,    307,   -255}, 0, {  2522,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   768,    307,    256}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   768,      0,    256}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   768,      0,    256}, 0, {  3582,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   256,    307,    768}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   256,      0,    768}, 0, {     0,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   768,    307,    256}, 0, {  3582,      0}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07014908 - 0x070149F8\nstatic const Vtx lll_seg7_vertex_07014908[] = {\n    {{{  -255,      0,   -767}, 0, {  2524,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -255,    307,   -767}, 0, {  2524,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,    307,   -767}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,      0,    768}, 0, {  2524,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,    307,    768}, 0, {  2524,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,    307,    768}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,      0,    768}, 0, {  3034,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -767,    307,    256}, 0, {  -578,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -767,      0,    256}, 0, {  -578,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -255,    307,    768}, 0, {  3034,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -767,      0,   -255}, 0, {  3034,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -767,    307,   -255}, 0, {  3034,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -255,    307,   -767}, 0, {  -578,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -255,      0,   -767}, 0, {  -578,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   256,      0,   -767}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070149F8 - 0x07014A38\nstatic const Vtx lll_seg7_vertex_070149F8[] = {\n    {{{   256,      0,   -767}, 0, {  3582,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   768,    307,   -255}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   768,      0,   -255}, 0, {     0,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   256,    307,   -767}, 0, {  3582,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07014A38 - 0x07014AB8\nstatic const Vtx lll_seg7_vertex_07014A38[] = {\n    {{{  -255,    307,   -767}, 0, {  3034,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,    307,    768}, 0, {  3034,  -5142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,    307,    768}, 0, {   990,  -5142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,    307,   -255}, 0, {  5078,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,    307,    256}, 0, {  5078,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   768,    307,   -255}, 0, { -1052,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,    307,   -767}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   768,    307,    256}, 0, { -1052,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07014AB8 - 0x07014B80\nstatic const Gfx lll_seg7_dl_07014AB8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&lll_seg7_lights_0700FC00.l, 1),\n    gsSPLight(&lll_seg7_lights_0700FC00.a, 2),\n    gsSPVertex(lll_seg7_vertex_07014818, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(lll_seg7_vertex_07014908, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_070149F8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07014B80 - 0x07014BD8\nstatic const Gfx lll_seg7_dl_07014B80[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_07002800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07014A38, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  0,  5,  6, 0x0),\n    gsSP2Triangles( 0,  2,  7, 0x0,  0,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07014BD8 - 0x07014C68\nconst Gfx lll_seg7_dl_07014BD8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_07014AB8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_07014B80),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/lll/areas/1/7/geo.inc.c",
    "content": "// 0x0E000A28\nconst GeoLayout lll_geo_000A28[] = {\n    GEO_CULLING_RADIUS(2000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_07015458),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/lll/areas/1/7/model.inc.c",
    "content": "// 0x07014C68 - 0x07014CE8\nstatic const Vtx lll_seg7_vertex_07014C68[] = {\n    {{{ -1023,    307,   -383}, 0, {  6100,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,    307,    256}, 0, { -3096,  -1566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,    307,   -255}, 0, { -3096,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,    307,    384}, 0, { -2074,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,    307,   -383}, 0, { -2074,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,    307,    256}, 0, {  7122,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,    307,    384}, 0, {  6100,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,    307,   -255}, 0, {  7122,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07014CE8 - 0x07014DD8\nstatic const Vtx lll_seg7_vertex_07014CE8[] = {\n    {{{ -1023,      0,    384}, 0, {   990,    990}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{ -1279,    307,    256}, 0, {  -212,      0}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{ -1279,      0,    256}, 0, {  -212,    990}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  1280,      0,   -255}, 0, {  1672,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1280,    307,   -255}, 0, {  1672,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1280,    307,    256}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1280,      0,    256}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1280,      0,    256}, 0, {  1172,    990}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  1024,    307,    384}, 0, {     0,      0}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  1024,      0,    384}, 0, {     0,    990}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  1280,    307,    256}, 0, {  1172,      0}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  1024,      0,    384}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1024,    307,    384}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1023,    307,    384}, 0, { -4118,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1023,      0,    384}, 0, { -4118,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07014DD8 - 0x07014EC8\nstatic const Vtx lll_seg7_vertex_07014DD8[] = {\n    {{{ -1023,      0,   -383}, 0, {  5078,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1024,    307,   -383}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1024,      0,   -383}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1023,      0,    384}, 0, {   990,    990}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{ -1023,    307,    384}, 0, {   990,      0}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{ -1279,    307,    256}, 0, {  -212,      0}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{ -1279,      0,    256}, 0, {  1502,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1279,    307,    256}, 0, {  1502,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1279,    307,   -255}, 0, {  -200,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1279,      0,   -255}, 0, {  -200,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1279,      0,   -255}, 0, {   990,    990}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -1279,    307,   -255}, 0, {   990,      0}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -1023,    307,   -383}, 0, {  -212,      0}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -1023,      0,   -383}, 0, {  -212,    990}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -1023,    307,   -383}, 0, {  5078,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07014EC8 - 0x07014F08\nstatic const Vtx lll_seg7_vertex_07014EC8[] = {\n    {{{  1024,      0,   -383}, 0, {  1172,    990}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  1024,    307,   -383}, 0, {  1172,      0}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  1280,    307,   -255}, 0, {     0,      0}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  1280,      0,   -255}, 0, {     0,    990}, {0x38, 0x00, 0x8f, 0xff}}},\n};\n\n// 0x07014F08 - 0x07014FE8\nstatic const Vtx lll_seg7_vertex_07014F08[] = {\n    {{{ -1458,    410,    128}, 0, {   416,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1279,    307,    128}, 0, {     0,    224}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1535,    307,    128}, 0, {   606,    224}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1535,      0,    128}, 0, {   606,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1279,      0,    128}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1535,    307,   -255}, 0, {  2522,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1535,      0,   -255}, 0, {  2522,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1279,      0,   -255}, 0, {  3162,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1279,    307,   -255}, 0, {  3162,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1458,    410,   -255}, 0, {  2714,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1535,      0,    256}, 0, {   288,    734}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1535,    307,    128}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1535,      0,    128}, 0, {     0,    734}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1535,    307,    256}, 0, {   288,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07014FE8 - 0x070150C8\nstatic const Vtx lll_seg7_vertex_07014FE8[] = {\n    {{{ -1535,    307,    256}, 0, {  2522,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1279,    307,    256}, 0, {  3162,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1458,    410,    256}, 0, {  2714,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1535,      0,    256}, 0, {  2522,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1279,      0,    256}, 0, {  3162,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1279,      0,   -383}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1535,    307,   -383}, 0, {   606,    224}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1458,    410,   -383}, 0, {   416,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1279,    307,   -383}, 0, {     0,    224}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1535,      0,   -383}, 0, {   606,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1535,      0,   -255}, 0, {  -988,    734}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1535,    307,   -255}, 0, {  -988,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1535,    307,   -383}, 0, { -1308,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1535,      0,   -383}, 0, { -1308,    734}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070150C8 - 0x07015108\nstatic const Vtx lll_seg7_vertex_070150C8[] = {\n    {{{ -1279,      0,   -255}, 0, {   564,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,      0,   -383}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,    307,   -383}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,    307,   -255}, 0, {   564,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07015108 - 0x07015208\nstatic const Vtx lll_seg7_vertex_07015108[] = {\n    {{{ -1458,    410,   -383}, 0, { -1308,      0}, {0x9b, 0x4c, 0x00, 0xff}}},\n    {{{ -1535,    307,   -383}, 0, { -1308,    288}, {0x9b, 0x4c, 0x00, 0xff}}},\n    {{{ -1535,    307,   -255}, 0, {  -988,    288}, {0x9b, 0x4c, 0x00, 0xff}}},\n    {{{ -1279,    307,    128}, 0, {  -286,    990}, {0x3f, 0x6e, 0x00, 0xff}}},\n    {{{ -1458,    410,    128}, 0, {  -286,    476}, {0x3f, 0x6e, 0x00, 0xff}}},\n    {{{ -1458,    410,    256}, 0, {  -604,    476}, {0x3f, 0x6e, 0x00, 0xff}}},\n    {{{ -1279,    307,    256}, 0, {  -604,    990}, {0x3f, 0x6e, 0x00, 0xff}}},\n    {{{ -1458,    410,    128}, 0, {     0,      0}, {0x9b, 0x4c, 0x00, 0xff}}},\n    {{{ -1535,    307,    256}, 0, {   288,    288}, {0x9b, 0x4c, 0x00, 0xff}}},\n    {{{ -1458,    410,    256}, 0, {   288,      0}, {0x9b, 0x4c, 0x00, 0xff}}},\n    {{{ -1535,    307,    128}, 0, {     0,    288}, {0x9b, 0x4c, 0x00, 0xff}}},\n    {{{ -1279,    307,   -383}, 0, {   990,    990}, {0x3f, 0x6e, 0x00, 0xff}}},\n    {{{ -1458,    410,   -255}, 0, {   670,    476}, {0x3f, 0x6e, 0x00, 0xff}}},\n    {{{ -1279,    307,   -255}, 0, {   670,    990}, {0x3f, 0x6e, 0x00, 0xff}}},\n    {{{ -1458,    410,   -383}, 0, {   990,    476}, {0x3f, 0x6e, 0x00, 0xff}}},\n    {{{ -1458,    410,   -255}, 0, {  -988,      0}, {0x9b, 0x4c, 0x00, 0xff}}},\n};\n\n// 0x07015208 - 0x07015270\nstatic const Gfx lll_seg7_dl_07015208[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_07004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&lll_seg7_lights_0700FC00.l, 1),\n    gsSPLight(&lll_seg7_lights_0700FC00.a, 2),\n    gsSPVertex(lll_seg7_vertex_07014C68, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  0,  5,  6, 0x0),\n    gsSP2Triangles( 0,  7,  5, 0x0,  0,  6,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07015270 - 0x07015328\nstatic const Gfx lll_seg7_dl_07015270[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07014CE8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_07014DD8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(lll_seg7_vertex_07014EC8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07015328 - 0x070153F0\nstatic const Gfx lll_seg7_dl_07015328[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09006800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07014F08, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  4, 0x0),\n    gsSP2Triangles( 3,  2,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  5,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(lll_seg7_vertex_07014FE8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  5,  9,  6, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(lll_seg7_vertex_070150C8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070153F0 - 0x07015458\nstatic const Gfx lll_seg7_dl_070153F0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09006000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07015108, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07015458 - 0x070154F8\nconst Gfx lll_seg7_dl_07015458[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_07015208),\n    gsSPDisplayList(lll_seg7_dl_07015328),\n    gsSPDisplayList(lll_seg7_dl_070153F0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_07015270),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/lll/areas/1/8/geo.inc.c",
    "content": "// 0x0E000A40\nconst GeoLayout lll_geo_000A40[] = {\n    GEO_CULLING_RADIUS(1700),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_07015C88),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, lll_seg7_dl_07015E20),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/lll/areas/1/8/model.inc.c",
    "content": "// combined model file. LLL is weird\n\n// 0x070154F8 - 0x070155E8\nstatic const Vtx lll_seg7_vertex_070154F8[] = {\n    {{{   640,    307,    512}, 0, {     0,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   896,    307,    512}, 0, {   606,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   819,    410,    512}, 0, {   416,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   640,    307,      0}, 0, {     0,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   896,      0,      0}, 0, {   606,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   896,    307,      0}, 0, {   606,    224}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   640,      0,      0}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   819,    410,      0}, 0, {   416,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   640,      0,    384}, 0, {  3162,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   896,    307,    384}, 0, {  2524,    224}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   896,      0,    384}, 0, {  2524,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   640,    307,    384}, 0, {  3162,    224}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   819,    410,    384}, 0, {  2714,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   640,      0,    512}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   896,      0,    512}, 0, {   606,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070155E8 - 0x070156E8\nstatic const Vtx lll_seg7_vertex_070155E8[] = {\n    {{{   896,      0,   -127}, 0, {  2268,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   896,    307,   -127}, 0, {  2268,    224}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   896,    307,      0}, 0, {  1948,    224}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   896,      0,    384}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   896,    307,    512}, 0, {   670,    224}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   896,      0,    512}, 0, {   670,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   896,    307,    384}, 0, {   990,    224}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   640,      0,   -127}, 0, {  3162,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   896,    307,   -127}, 0, {  2524,    224}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   896,      0,   -127}, 0, {  2524,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   640,    307,   -127}, 0, {  3162,    224}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   819,    410,   -127}, 0, {  2714,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   896,      0,      0}, 0, {  1948,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   640,      0,   -127}, 0, {  -604,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   640,      0,      0}, 0, {  -286,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   640,    307,      0}, 0, {  -286,    224}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070156E8 - 0x07015758\nstatic const Vtx lll_seg7_vertex_070156E8[] = {\n    {{{   640,      0,   -127}, 0, {  -604,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   640,    307,      0}, 0, {  -286,    224}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   640,    307,   -127}, 0, {  -604,    224}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   640,      0,    384}, 0, {   670,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   640,      0,    512}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   640,    307,    512}, 0, {   990,    224}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   640,    307,    384}, 0, {   670,    224}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07015758 - 0x07015858\nstatic const Vtx lll_seg7_vertex_07015758[] = {\n    {{{   819,    410,   -127}, 0, { -1052,    990}, {0xc1, 0x6e, 0x00, 0xff}}},\n    {{{   640,    307,   -127}, 0, { -1052,   1502}, {0xc1, 0x6e, 0x00, 0xff}}},\n    {{{   640,    307,      0}, 0, {  -732,   1502}, {0xc1, 0x6e, 0x00, 0xff}}},\n    {{{   896,    307,    384}, 0, {   990,    990}, {0x65, 0x4c, 0x00, 0xff}}},\n    {{{   819,    410,    512}, 0, {   670,    670}, {0x65, 0x4c, 0x00, 0xff}}},\n    {{{   896,    307,    512}, 0, {   670,    990}, {0x65, 0x4c, 0x00, 0xff}}},\n    {{{   819,    410,    384}, 0, {   990,    670}, {0x65, 0x4c, 0x00, 0xff}}},\n    {{{   819,    410,    384}, 0, {   224,    990}, {0xc1, 0x6e, 0x00, 0xff}}},\n    {{{   640,    307,    512}, 0, {   542,   1502}, {0xc1, 0x6e, 0x00, 0xff}}},\n    {{{   819,    410,    512}, 0, {   542,    990}, {0xc1, 0x6e, 0x00, 0xff}}},\n    {{{   640,    307,    384}, 0, {   224,   1502}, {0xc1, 0x6e, 0x00, 0xff}}},\n    {{{   896,    307,   -127}, 0, {  2268,    990}, {0x65, 0x4c, 0x00, 0xff}}},\n    {{{   819,    410,      0}, 0, {  1948,    670}, {0x65, 0x4c, 0x00, 0xff}}},\n    {{{   896,    307,      0}, 0, {  1948,    990}, {0x65, 0x4c, 0x00, 0xff}}},\n    {{{   819,    410,   -127}, 0, {  2268,    670}, {0x65, 0x4c, 0x00, 0xff}}},\n    {{{   819,    410,      0}, 0, {  -732,    990}, {0xc1, 0x6e, 0x00, 0xff}}},\n};\n\n// 0x07015858 - 0x07015948\nstatic const Vtx lll_seg7_vertex_07015858[] = {\n    {{{   128,      0,    128}, 0, {   990,   1192}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   128,    307,   -127}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   128,      0,   -127}, 0, {     0,   1192}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   640,      0,    768}, 0, {  5078,   1192}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -639,    307,    768}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -639,      0,    768}, 0, {     0,   1192}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   640,    307,    768}, 0, {  5078,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -639,      0,   -767}, 0, {   990,   1192}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   640,    307,   -767}, 0, { -4118,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   640,      0,   -767}, 0, { -4118,   1192}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -639,    307,   -767}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   640,      0,   -767}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   640,    307,   -767}, 0, {   990,   -236}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   640,    307,    768}, 0, { -5140,   -236}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   640,      0,    768}, 0, { -5140,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07015948 - 0x07015A38\nstatic const Vtx lll_seg7_vertex_07015948[] = {\n    {{{  -127,      0,    128}, 0, {   990,   1192}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -127,    307,    128}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   128,    307,    128}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   128,      0,    128}, 0, {   990,   1192}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   128,    307,    128}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   128,    307,   -127}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -639,      0,    768}, 0, {   990,   1192}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -639,    307,   -767}, 0, { -5140,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -639,      0,   -767}, 0, { -5140,   1192}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -639,    307,    768}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -127,      0,   -127}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -127,    307,    128}, 0, {     0,   -236}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -127,      0,    128}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -127,    307,   -127}, 0, {   990,   -236}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   128,      0,    128}, 0, {     0,   1192}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07015A38 - 0x07015B38\nstatic const Vtx lll_seg7_vertex_07015A38[] = {\n    {{{   128,      0,   -127}, 0, {   990,   1192}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -127,    307,   -127}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -127,      0,   -127}, 0, {     0,   1192}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   128,    307,   -127}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -127,    307,   -127}, 0, {  2012,  -2586}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   128,    307,   -767}, 0, {  3034,  -5142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -127,    307,   -767}, 0, {  2012,  -5142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   128,    307,   -127}, 0, {  3034,  -2586}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   640,    307,    768}, 0, {  5078,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   640,    307,   -767}, 0, {  5078,  -5142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   128,    307,    768}, 0, {  3034,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -639,    307,    768}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -639,    307,   -767}, 0, {     0,  -5142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -127,    307,    768}, 0, {  2012,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   128,    307,    128}, 0, {  3034,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -127,    307,    128}, 0, {  2012,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07015B38 - 0x07015C20\nstatic const Gfx lll_seg7_dl_07015B38[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09006800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&lll_seg7_lights_0700FC00.l, 1),\n    gsSPLight(&lll_seg7_lights_0700FC00.a, 2),\n    gsSPVertex(lll_seg7_vertex_070154F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  5,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12,  9, 11, 0x0,  0, 13, 14, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(lll_seg7_vertex_070155E8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11,  8, 10, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_070156E8, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 3,  5,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07015C20 - 0x07015C88\nstatic const Gfx lll_seg7_dl_07015C20[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09006000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07015758, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07015C88 - 0x07015D18\nconst Gfx lll_seg7_dl_07015C88[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_07015B38),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_07015C20),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x07015D18 - 0x07015E20\nstatic const Gfx lll_seg7_dl_07015D18[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&lll_seg7_lights_0700FC00.l, 1),\n    gsSPLight(&lll_seg7_lights_0700FC00.a, 2),\n    gsSPVertex(lll_seg7_vertex_07015858, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_07015948, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_07015A38, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 5,  8,  9, 0x0,  5, 10,  8, 0x0),\n    gsSP2Triangles(11,  6, 12, 0x0, 11, 13,  6, 0x0),\n    gsSP2Triangles(13, 10, 14, 0x0, 13, 14, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07015E20 - 0x07015E90\nconst Gfx lll_seg7_dl_07015E20[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_07015D18),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/lll/areas/1/9/geo.inc.c",
    "content": "// 0x0E000A60\nconst GeoLayout lll_geo_000A60[] = {\n    GEO_CULLING_RADIUS(1500),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_07016250),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/lll/areas/1/9/model.inc.c",
    "content": "// 0x07015E90 - 0x07015F10\nstatic const Vtx lll_seg7_vertex_07015E90[] = {\n    {{{  -255,    307,  -1023}, 0, { -2074,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -383,    307,    896}, 0, { -2586,   6608}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,    307,   1024}, 0, { -2074,   7120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,    307,   1024}, 0, {     0,   7120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -383,    307,   -895}, 0, { -2584,   -542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   384,    307,    896}, 0, {   478,   6608}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   384,    307,   -895}, 0, {   480,   -542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,    307,  -1023}, 0, {     0,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07015F10 - 0x07016000\nstatic const Vtx lll_seg7_vertex_07015F10[] = {\n    {{{  -383,      0,   -895}, 0, {     0,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -255,    307,  -1023}, 0, { -1234,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -255,      0,  -1023}, 0, { -1234,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   256,      0,   1024}, 0, {   650,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,    307,   1024}, 0, {   650,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,    307,   1024}, 0, { -1052,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,      0,   1024}, 0, { -1052,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,      0,   1024}, 0, {   990,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -383,    307,    896}, 0, {  -212,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -383,      0,    896}, 0, {  -212,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -255,    307,   1024}, 0, {   990,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -383,      0,    896}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -383,    307,    896}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -383,    307,   -895}, 0, { -8376,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -383,      0,   -895}, 0, { -8376,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07016000 - 0x070160F0\nstatic const Vtx lll_seg7_vertex_07016000[] = {\n    {{{   384,      0,   -895}, 0, {  9336,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   384,    307,    896}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   384,      0,    896}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -383,      0,   -895}, 0, {     0,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -383,    307,   -895}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -255,    307,  -1023}, 0, { -1234,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -255,      0,  -1023}, 0, {  1672,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,    307,  -1023}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,      0,  -1023}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -255,    307,  -1023}, 0, {  1672,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,      0,  -1023}, 0, {  1172,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   384,    307,   -895}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   384,      0,   -895}, 0, {     0,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   256,    307,  -1023}, 0, {  1172,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   384,    307,   -895}, 0, {  9336,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070160F0 - 0x07016130\nstatic const Vtx lll_seg7_vertex_070160F0[] = {\n    {{{   384,      0,    896}, 0, {  1172,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   256,    307,   1024}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   256,      0,   1024}, 0, {     0,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   384,    307,    896}, 0, {  1172,      0}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07016130 - 0x07016198\nstatic const Gfx lll_seg7_dl_07016130[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&lll_seg7_lights_0700FC00.l, 1),\n    gsSPLight(&lll_seg7_lights_0700FC00.a, 2),\n    gsSPVertex(lll_seg7_vertex_07015E90, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  0,  5,  6, 0x0),\n    gsSP2Triangles( 0,  6,  7, 0x0,  0,  3,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07016198 - 0x07016250\nstatic const Gfx lll_seg7_dl_07016198[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07015F10, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_07016000, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(lll_seg7_vertex_070160F0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07016250 - 0x070162E0\nconst Gfx lll_seg7_dl_07016250[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_07016130),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_07016198),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/lll/areas/1/collision.inc.c",
    "content": "// 0x0701ADE8 - 0x0701CE18\nconst Collision lll_seg7_area_1_collision[] = {\n#ifdef VERSION_JP\n    COL_INIT(),\n    COL_VERTEX_INIT(0x21B),\n    COL_VERTEX(2816, 1280, 4608),\n    COL_VERTEX(2775, 1280, 8192),\n    COL_VERTEX(2816, 1280, 8192),\n    COL_VERTEX(2775, 1280, 4567),\n    COL_VERTEX(5888, 1280, 4608),\n    COL_VERTEX(4352, 563, 4608),\n    COL_VERTEX(2816, 563, 4608),\n    COL_VERTEX(2816, 563, 5504),\n    COL_VERTEX(5888, 0, 4608),\n    COL_VERTEX(4352, 0, 4608),\n    COL_VERTEX(5888, 0, 4567),\n    COL_VERTEX(5888, 1280, 4567),\n    COL_VERTEX(2816, 256, 8192),\n    COL_VERTEX(2816, 256, 7552),\n    COL_VERTEX(-76, 563, 6093),\n    COL_VERTEX(-153, 486, 6093),\n    COL_VERTEX(-229, 486, 6246),\n    COL_VERTEX(-153, 154, 6093),\n    COL_VERTEX(230, 486, 6093),\n    COL_VERTEX(154, 154, 6093),\n    COL_VERTEX(154, 486, 6246),\n    COL_VERTEX(154, 486, 6093),\n    COL_VERTEX(77, 563, 6246),\n    COL_VERTEX(77, 563, 6093),\n    COL_VERTEX(-76, 640, 6246),\n    COL_VERTEX(77, 640, 6093),\n    COL_VERTEX(-229, 154, 6093),\n    COL_VERTEX(-229, 486, 6093),\n    COL_VERTEX(-76, 640, 6093),\n    COL_VERTEX(640, 0, -383),\n    COL_VERTEX(640, 0, 384),\n    COL_VERTEX(335, 282, 194),\n    COL_VERTEX(186, 512, 108),\n    COL_VERTEX(325, 282, -210),\n    COL_VERTEX(186, 512, -107),\n    COL_VERTEX(0, 0, 768),\n    COL_VERTEX(0, 282, 387),\n    COL_VERTEX(0, 0, -767),\n    COL_VERTEX(-639, 0, -383),\n    COL_VERTEX(-324, 282, -210),\n    COL_VERTEX(0, 282, -386),\n    COL_VERTEX(-639, 0, 384),\n    COL_VERTEX(-334, 282, 194),\n    COL_VERTEX(0, 512, 215),\n    COL_VERTEX(-185, 512, 108),\n    COL_VERTEX(-185, 512, -107),\n    COL_VERTEX(0, 512, -214),\n    COL_VERTEX(0, 102, -214),\n    COL_VERTEX(-3071, 10, 3584),\n    COL_VERTEX(-3327, 10, 3584),\n    COL_VERTEX(-3071, 10, 3328),\n    COL_VERTEX(-3327, 10, 3328),\n    COL_VERTEX(2775, 0, 4567),\n    COL_VERTEX(-153, 486, 6246),\n    COL_VERTEX(-153, 154, 6246),\n    COL_VERTEX(-229, 154, 6246),\n    COL_VERTEX(-76, 563, 6246),\n    COL_VERTEX(230, 154, 6093),\n    COL_VERTEX(154, 154, 6246),\n    COL_VERTEX(77, 640, 6246),\n    COL_VERTEX(230, 486, 6246),\n    COL_VERTEX(230, 154, 6246),\n    COL_VERTEX(-185, 102, 108),\n    COL_VERTEX(-185, 102, -107),\n    COL_VERTEX(0, 102, 215),\n    COL_VERTEX(186, 102, -107),\n    COL_VERTEX(186, 102, 108),\n    COL_VERTEX(-3071, 307, 3328),\n    COL_VERTEX(-3071, 307, 3584),\n    COL_VERTEX(-3327, 307, 3584),\n    COL_VERTEX(-3327, 307, 3328),\n    COL_VERTEX(2775, 0, 8192),\n    COL_VERTEX(-2318, 0, 134),\n    COL_VERTEX(0, 0, 8192),\n    COL_VERTEX(0, 0, -8191),\n    COL_VERTEX(-8191, 0, 0),\n    COL_VERTEX(-2805, 0, 292),\n    COL_VERTEX(-1844, 0, 1595),\n    COL_VERTEX(-2331, 0, 1753),\n    COL_VERTEX(-5222, 0, 7040),\n    COL_VERTEX(-5887, 0, 7424),\n    COL_VERTEX(-5222, 0, 6272),\n    COL_VERTEX(-5637, 0, 4982),\n    COL_VERTEX(-8191, 0, 8192),\n    COL_VERTEX(8192, 0, 8192),\n    COL_VERTEX(8192, 0, 0),\n    COL_VERTEX(6656, 0, -2303),\n    COL_VERTEX(7321, 0, -2687),\n    COL_VERTEX(5991, 0, -2687),\n    COL_VERTEX(-5871, 0, -6578),\n    COL_VERTEX(-2053, 0, -2429),\n    COL_VERTEX(-6151, 0, -7175),\n    COL_VERTEX(6656, 0, -3839),\n    COL_VERTEX(5954, 0, -7301),\n    COL_VERTEX(-5637, 0, -7037),\n    COL_VERTEX(5991, 0, -3455),\n    COL_VERTEX(7040, 0, -6215),\n    COL_VERTEX(8192, 0, -8191),\n    COL_VERTEX(6678, 0, -5853),\n    COL_VERTEX(-6552, 0, 7040),\n    COL_VERTEX(-6552, 0, 6272),\n    COL_VERTEX(-5887, 0, 5888),\n    COL_VERTEX(-7042, 0, 3578),\n    COL_VERTEX(-2567, 0, -2053),\n    COL_VERTEX(-2287, 0, -1970),\n    COL_VERTEX(-2824, 0, -1984),\n    COL_VERTEX(-3012, 0, -1796),\n    COL_VERTEX(-3081, 0, -1539),\n    COL_VERTEX(-3012, 0, -1282),\n    COL_VERTEX(-3458, 0, -1025),\n    COL_VERTEX(-7179, 0, 4092),\n    COL_VERTEX(-7042, 0, -5633),\n    COL_VERTEX(-3595, 0, -1539),\n    COL_VERTEX(-6596, 0, 4349),\n    COL_VERTEX(-6665, 0, 4092),\n    COL_VERTEX(-6408, 0, -6592),\n    COL_VERTEX(-6151, 0, -6661),\n    COL_VERTEX(-3081, 0, -2429),\n    COL_VERTEX(-3458, 0, -2053),\n    COL_VERTEX(-2567, 0, -2567),\n    COL_VERTEX(-7179, 0, -6147),\n    COL_VERTEX(-7042, 0, -6661),\n    COL_VERTEX(-6665, 0, -7037),\n    COL_VERTEX(7321, 0, -3455),\n    COL_VERTEX(-8191, 0, -8191),\n    COL_VERTEX(5592, 0, -6939),\n    COL_VERTEX(-7042, 0, 4606),\n    COL_VERTEX(-6665, 0, 4982),\n    COL_VERTEX(-6151, 0, 5120),\n    COL_VERTEX(-6151, 0, 4606),\n    COL_VERTEX(-6408, 0, 4537),\n    COL_VERTEX(-6596, 0, -6404),\n    COL_VERTEX(-6665, 0, -6147),\n    COL_VERTEX(-6596, 0, -5890),\n    COL_VERTEX(-127, 0, -1919),\n    COL_VERTEX(-127, 307, -2175),\n    COL_VERTEX(-127, 0, -2175),\n    COL_VERTEX(128, 307, -2175),\n    COL_VERTEX(128, 0, -2175),\n    COL_VERTEX(128, 307, -1919),\n    COL_VERTEX(128, 0, -1919),\n    COL_VERTEX(-127, 307, -1919),\n    COL_VERTEX(-4607, 0, -1023),\n    COL_VERTEX(-4607, 307, -1023),\n    COL_VERTEX(-4607, 307, -639),\n    COL_VERTEX(-4607, 154, -383),\n    COL_VERTEX(-4607, 0, 0),\n    COL_VERTEX(-5631, 0, -1023),\n    COL_VERTEX(-5631, 307, -639),\n    COL_VERTEX(-5631, 307, -1023),\n    COL_VERTEX(-5631, 154, -383),\n    COL_VERTEX(-5631, 0, 0),\n    COL_VERTEX(-4095, 0, 3968),\n    COL_VERTEX(-4095, 0, 2944),\n    COL_VERTEX(-4095, 307, 2944),\n    COL_VERTEX(-4479, 307, 2944),\n    COL_VERTEX(-4735, 154, 3968),\n    COL_VERTEX(-4735, 154, 2944),\n    COL_VERTEX(-5119, 0, 2944),\n    COL_VERTEX(-5119, 0, 3968),\n    COL_VERTEX(1536, 0, 3968),\n    COL_VERTEX(2560, 0, 3968),\n    COL_VERTEX(2560, 307, 3584),\n    COL_VERTEX(1536, 307, 3584),\n    COL_VERTEX(2560, 154, 3328),\n    COL_VERTEX(1536, 154, 3328),\n    COL_VERTEX(2560, 0, 2944),\n    COL_VERTEX(1536, 0, 2944),\n    COL_VERTEX(6144, 0, 896),\n    COL_VERTEX(6144, 0, 1920),\n    COL_VERTEX(6144, 307, 896),\n    COL_VERTEX(5760, 307, 896),\n    COL_VERTEX(5504, 154, 896),\n    COL_VERTEX(5504, 154, 1920),\n    COL_VERTEX(5120, 0, 896),\n    COL_VERTEX(5120, 0, 1920),\n    COL_VERTEX(-255, 154, 6016),\n    COL_VERTEX(-255, 0, 6016),\n    COL_VERTEX(-383, 0, 6144),\n    COL_VERTEX(256, 0, 6016),\n    COL_VERTEX(384, 0, 6144),\n    COL_VERTEX(384, 154, 6144),\n    COL_VERTEX(256, 0, 4224),\n    COL_VERTEX(384, 0, 6400),\n    COL_VERTEX(256, 0, 6528),\n    COL_VERTEX(-255, 0, 6528),\n    COL_VERTEX(-1151, 154, 6528),\n    COL_VERTEX(-1151, 0, 6528),\n    COL_VERTEX(640, 0, 6400),\n    COL_VERTEX(-5375, 307, -3071),\n    COL_VERTEX(-5503, 0, -2943),\n    COL_VERTEX(-5375, 0, -3071),\n    COL_VERTEX(-4735, 0, -2943),\n    COL_VERTEX(-4863, 0, -3071),\n    COL_VERTEX(-4735, 0, -1151),\n    COL_VERTEX(-5375, 0, -1023),\n    COL_VERTEX(-5503, 0, -1151),\n    COL_VERTEX(-2559, 0, 4224),\n    COL_VERTEX(-3839, 0, 2688),\n    COL_VERTEX(-2559, 0, 2688),\n    COL_VERTEX(-3071, 307, 2688),\n    COL_VERTEX(-3839, 0, 4224),\n    COL_VERTEX(-3839, 307, 4224),\n    COL_VERTEX(-3327, 307, 4224),\n    COL_VERTEX(-2559, 0, 3840),\n    COL_VERTEX(-2380, 410, 3840),\n    COL_VERTEX(-2303, 0, 3840),\n    COL_VERTEX(-2303, 307, 3840),\n    COL_VERTEX(-2559, 307, 3968),\n    COL_VERTEX(-2303, 307, 3328),\n    COL_VERTEX(-2559, 0, 3328),\n    COL_VERTEX(-2303, 0, 3328),\n    COL_VERTEX(-2380, 410, 3328),\n    COL_VERTEX(-2559, 307, 3456),\n    COL_VERTEX(-1458, 410, 3840),\n    COL_VERTEX(-1279, 307, 3840),\n    COL_VERTEX(-1535, 0, 3840),\n    COL_VERTEX(-1535, 0, 3968),\n    COL_VERTEX(-1535, 307, 3456),\n    COL_VERTEX(-1535, 0, 3456),\n    COL_VERTEX(-1458, 410, 3328),\n    COL_VERTEX(-1279, 0, 3456),\n    COL_VERTEX(-1279, 0, 3968),\n    COL_VERTEX(-1023, 307, 3328),\n    COL_VERTEX(-1279, 307, 3328),\n    COL_VERTEX(-1535, 307, 3968),\n    COL_VERTEX(-1023, 0, 4096),\n    COL_VERTEX(-1279, 0, 3328),\n    COL_VERTEX(-1023, 0, 3328),\n    COL_VERTEX(1280, 0, 3456),\n    COL_VERTEX(1024, 0, 3328),\n    COL_VERTEX(1280, 0, 3968),\n    COL_VERTEX(1024, 0, 4096),\n    COL_VERTEX(6400, 0, 1152),\n    COL_VERTEX(6912, 0, 640),\n    COL_VERTEX(6912, 307, 640),\n    COL_VERTEX(7424, 0, 640),\n    COL_VERTEX(7936, 0, 1152),\n    COL_VERTEX(7936, 0, 1664),\n    COL_VERTEX(7424, 0, 2176),\n    COL_VERTEX(6912, 0, 2176),\n    COL_VERTEX(6400, 0, 1664),\n    COL_VERTEX(4608, 154, -767),\n    COL_VERTEX(4864, 0, 0),\n    COL_VERTEX(4608, 0, -767),\n    COL_VERTEX(5248, 154, -1279),\n    COL_VERTEX(4992, 154, -895),\n    COL_VERTEX(4992, 0, -767),\n    COL_VERTEX(4992, 0, -895),\n    COL_VERTEX(5632, 0, -1151),\n    COL_VERTEX(5120, 0, -383),\n    COL_VERTEX(5888, 154, 128),\n    COL_VERTEX(5504, 154, 128),\n    COL_VERTEX(5248, 0, 384),\n    COL_VERTEX(5504, 0, 128),\n    COL_VERTEX(5248, 0, -1279),\n    COL_VERTEX(4608, 0, -1151),\n    COL_VERTEX(5632, 154, -1663),\n    COL_VERTEX(4352, 0, -2047),\n    COL_VERTEX(5632, 0, -1663),\n    COL_VERTEX(5248, 154, 384),\n    COL_VERTEX(5504, 0, -383),\n    COL_VERTEX(5888, 0, 128),\n    COL_VERTEX(4096, 0, 384),\n    COL_VERTEX(5248, 0, -1535),\n    COL_VERTEX(4352, 154, -2047),\n    COL_VERTEX(4096, 0, -2047),\n    COL_VERTEX(5504, 0, 640),\n    COL_VERTEX(4096, 0, 768),\n    COL_VERTEX(5248, 0, 0),\n    COL_VERTEX(4480, 0, -1663),\n    COL_VERTEX(4096, 0, -1663),\n    COL_VERTEX(2688, 0, -5247),\n    COL_VERTEX(2688, 0, -6015),\n    COL_VERTEX(3072, 307, -6399),\n    COL_VERTEX(3072, 0, -6399),\n    COL_VERTEX(4992, 0, -6015),\n    COL_VERTEX(4608, 0, -6399),\n    COL_VERTEX(4992, 0, -5247),\n    COL_VERTEX(4608, 0, -4863),\n    COL_VERTEX(3072, 0, -4863),\n    COL_VERTEX(-3839, 307, 3328),\n    COL_VERTEX(6656, 153, 7552),\n    COL_VERTEX(6912, 0, 7552),\n    COL_VERTEX(6272, 512, 7552),\n    COL_VERTEX(6016, 0, 7552),\n    COL_VERTEX(6016, 0, 7040),\n    COL_VERTEX(6912, 0, 7040),\n    COL_VERTEX(6656, 153, 7040),\n    COL_VERTEX(3072, 256, 7552),\n    COL_VERTEX(3328, 0, 7552),\n    COL_VERTEX(3328, 256, 7552),\n    COL_VERTEX(3328, 0, 8192),\n    COL_VERTEX(2816, 0, 8192),\n    COL_VERTEX(2816, 0, 4608),\n    COL_VERTEX(3712, 563, 4992),\n    COL_VERTEX(4352, 0, 4992),\n    COL_VERTEX(3712, 0, 4992),\n    COL_VERTEX(3072, 563, 5504),\n    COL_VERTEX(3712, 563, 5504),\n    COL_VERTEX(768, 0, -5055),\n    COL_VERTEX(-767, 0, -5055),\n    COL_VERTEX(-767, 307, -3647),\n    COL_VERTEX(768, 0, -3647),\n    COL_VERTEX(-767, 0, -3647),\n    COL_VERTEX(384, 0, -6207),\n    COL_VERTEX(384, 768, -6207),\n    COL_VERTEX(-383, 768, -7231),\n    COL_VERTEX(-511, 0, -6335),\n    COL_VERTEX(-511, 768, -6335),\n    COL_VERTEX(512, 0, -7103),\n    COL_VERTEX(512, 768, -7103),\n    COL_VERTEX(-383, 0, -7231),\n    COL_VERTEX(-3583, 154, 6528),\n    COL_VERTEX(-2303, 0, 6528),\n    COL_VERTEX(-4095, 154, 6528),\n    COL_VERTEX(-3583, 0, 6528),\n    COL_VERTEX(-2303, 154, 6016),\n    COL_VERTEX(-3583, 0, 6016),\n    COL_VERTEX(-4095, 0, 6016),\n    COL_VERTEX(-4095, 0, 6528),\n    COL_VERTEX(256, 154, 4096),\n    COL_VERTEX(-255, 230, 4224),\n    COL_VERTEX(256, 154, 4224),\n    COL_VERTEX(-255, 154, 4224),\n    COL_VERTEX(-1663, 0, 6016),\n    COL_VERTEX(-1663, 154, 6528),\n    COL_VERTEX(-4115, 154, 0),\n    COL_VERTEX(-4607, 154, 492),\n    COL_VERTEX(-4115, 154, 492),\n    COL_VERTEX(-4607, 154, 0),\n    COL_VERTEX(3840, -50, 6912),\n    COL_VERTEX(3840, -50, 7040),\n    COL_VERTEX(3840, 51, 6976),\n    COL_VERTEX(6400, -50, 6912),\n    COL_VERTEX(3840, -50, 5120),\n    COL_VERTEX(3840, 51, 5056),\n    COL_VERTEX(6400, -50, 4992),\n    COL_VERTEX(1280, 154, 6656),\n    COL_VERTEX(1280, 0, 6656),\n    COL_VERTEX(896, 154, 5760),\n    COL_VERTEX(1536, 0, 6400),\n    COL_VERTEX(1536, 0, 6016),\n    COL_VERTEX(896, 154, 6656),\n    COL_VERTEX(640, 0, 6144),\n    COL_VERTEX(640, 154, 6144),\n    COL_VERTEX(640, 0, 6016),\n    COL_VERTEX(896, 0, 5760),\n    COL_VERTEX(1280, 0, 5760),\n    COL_VERTEX(-5887, 154, 6224),\n    COL_VERTEX(-5513, 154, 6872),\n    COL_VERTEX(7030, 154, -3287),\n    COL_VERTEX(6656, 154, -3503),\n    COL_VERTEX(7030, 154, -2855),\n    COL_VERTEX(6282, 154, -3287),\n    COL_VERTEX(-2759, 166, 435),\n    COL_VERTEX(-2722, 403, 550),\n    COL_VERTEX(-2667, 554, 718),\n    COL_VERTEX(-2568, 640, 1023),\n    COL_VERTEX(-2469, 554, 1327),\n    COL_VERTEX(-2408, 376, 1515),\n    COL_VERTEX(-2377, 166, 1611),\n    COL_VERTEX(-2081, 640, 864),\n    COL_VERTEX(-7179, 129, 4092),\n    COL_VERTEX(-6665, 257, 4982),\n    COL_VERTEX(-7042, 257, 4606),\n    COL_VERTEX(-6151, 129, 5120),\n    COL_VERTEX(-6151, 129, -7175),\n    COL_VERTEX(-7042, 257, -6661),\n    COL_VERTEX(-6665, 257, -7037),\n    COL_VERTEX(-7179, 129, -6147),\n    COL_VERTEX(-2567, 129, -2567),\n    COL_VERTEX(-3458, 257, -2053),\n    COL_VERTEX(-3081, 257, -2429),\n    COL_VERTEX(-3595, 129, -1539),\n    COL_VERTEX(5698, 166, -6833),\n    COL_VERTEX(5784, 403, -6748),\n    COL_VERTEX(5909, 554, -6622),\n    COL_VERTEX(6135, 640, -6396),\n    COL_VERTEX(6362, 554, -6170),\n    COL_VERTEX(6501, 376, -6030),\n    COL_VERTEX(6572, 166, -5959),\n    COL_VERTEX(6497, 640, -6758),\n    COL_VERTEX(-5631, 154, 0),\n    COL_VERTEX(-4479, 307, 3968),\n    COL_VERTEX(-4095, 307, 3968),\n    COL_VERTEX(-5119, 154, 3968),\n    COL_VERTEX(-5119, 154, 2944),\n    COL_VERTEX(1536, 307, 3968),\n    COL_VERTEX(1280, 307, 3840),\n    COL_VERTEX(1280, 307, 3584),\n    COL_VERTEX(1536, 154, 2944),\n    COL_VERTEX(1536, 307, 3840),\n    COL_VERTEX(2560, 154, 2944),\n    COL_VERTEX(2560, 307, 3968),\n    COL_VERTEX(6144, 307, 1920),\n    COL_VERTEX(5760, 307, 1920),\n    COL_VERTEX(5120, 154, 1920),\n    COL_VERTEX(5120, 154, 896),\n    COL_VERTEX(256, 154, 6016),\n    COL_VERTEX(-255, 154, 6528),\n    COL_VERTEX(256, 154, 6528),\n    COL_VERTEX(-383, 154, 6400),\n    COL_VERTEX(-383, 154, 6144),\n    COL_VERTEX(384, 154, 6400),\n    COL_VERTEX(-255, 0, 4224),\n    COL_VERTEX(256, 230, 4224),\n    COL_VERTEX(-255, 230, 4096),\n    COL_VERTEX(-383, 0, 6400),\n    COL_VERTEX(-1151, 154, 6016),\n    COL_VERTEX(-1151, 0, 6016),\n    COL_VERTEX(640, 154, 6016),\n    COL_VERTEX(-5503, 307, -2943),\n    COL_VERTEX(-5503, 307, -1151),\n    COL_VERTEX(-4735, 307, -1151),\n    COL_VERTEX(-4735, 307, -2943),\n    COL_VERTEX(-4863, 307, -1023),\n    COL_VERTEX(-5375, 307, -1023),\n    COL_VERTEX(-4863, 307, -3071),\n    COL_VERTEX(640, 154, 6400),\n    COL_VERTEX(-4863, 0, -1023),\n    COL_VERTEX(-2559, 307, 4224),\n    COL_VERTEX(-3839, 307, 2688),\n    COL_VERTEX(-2559, 307, 2688),\n    COL_VERTEX(-3071, 307, 4224),\n    COL_VERTEX(-3327, 307, 2688),\n    COL_VERTEX(-2559, 307, 3840),\n    COL_VERTEX(-2303, 307, 3968),\n    COL_VERTEX(-2380, 410, 3968),\n    COL_VERTEX(-2303, 0, 3968),\n    COL_VERTEX(-2559, 0, 3968),\n    COL_VERTEX(-2380, 410, 3456),\n    COL_VERTEX(-2303, 307, 3456),\n    COL_VERTEX(-2559, 307, 3328),\n    COL_VERTEX(-2303, 0, 3456),\n    COL_VERTEX(-2559, 0, 3456),\n    COL_VERTEX(-1535, 307, 3840),\n    COL_VERTEX(-1458, 410, 3968),\n    COL_VERTEX(-1279, 0, 3840),\n    COL_VERTEX(-1279, 307, 3968),\n    COL_VERTEX(-1279, 307, 3456),\n    COL_VERTEX(-1458, 410, 3456),\n    COL_VERTEX(-1535, 307, 3328),\n    COL_VERTEX(-1535, 0, 3328),\n    COL_VERTEX(-1023, 307, 4096),\n    COL_VERTEX(1024, 307, 4096),\n    COL_VERTEX(1280, 307, 3968),\n    COL_VERTEX(1280, 307, 3456),\n    COL_VERTEX(1024, 307, 3328),\n    COL_VERTEX(6400, 307, 1152),\n    COL_VERTEX(7424, 307, 640),\n    COL_VERTEX(6912, 307, 2176),\n    COL_VERTEX(7424, 307, 2176),\n    COL_VERTEX(6400, 307, 1664),\n    COL_VERTEX(7936, 307, 1664),\n    COL_VERTEX(7936, 307, 1152),\n    COL_VERTEX(5120, 154, -383),\n    COL_VERTEX(4992, 154, -767),\n    COL_VERTEX(4864, 154, 0),\n    COL_VERTEX(4608, 154, -1151),\n    COL_VERTEX(5248, 154, 0),\n    COL_VERTEX(5632, 154, -1151),\n    COL_VERTEX(5504, 154, -383),\n    COL_VERTEX(5248, 154, -1535),\n    COL_VERTEX(5504, 154, 640),\n    COL_VERTEX(4096, 154, 768),\n    COL_VERTEX(4096, 154, 384),\n    COL_VERTEX(4480, 154, -1663),\n    COL_VERTEX(4096, 154, -1663),\n    COL_VERTEX(4096, 154, -2047),\n    COL_VERTEX(2688, 307, -6015),\n    COL_VERTEX(2688, 307, -5247),\n    COL_VERTEX(4608, 307, -6399),\n    COL_VERTEX(3072, 307, -4863),\n    COL_VERTEX(4992, 307, -6015),\n    COL_VERTEX(4992, 307, -5247),\n    COL_VERTEX(4608, 307, -4863),\n    COL_VERTEX(-4095, 307, 3584),\n    COL_VERTEX(-3839, 307, 3584),\n    COL_VERTEX(-4095, 307, 3328),\n    COL_VERTEX(6016, 512, 7552),\n    COL_VERTEX(6016, 512, 7040),\n    COL_VERTEX(6272, 512, 7040),\n    COL_VERTEX(6912, 154, 7552),\n    COL_VERTEX(6912, 154, 7040),\n    COL_VERTEX(3072, 0, 7552),\n    COL_VERTEX(3328, 256, 8192),\n    COL_VERTEX(4352, 563, 4992),\n    COL_VERTEX(3712, 0, 5504),\n    COL_VERTEX(3072, 0, 5504),\n    COL_VERTEX(768, 307, -5055),\n    COL_VERTEX(768, 307, -3647),\n    COL_VERTEX(-767, 307, -5055),\n    COL_VERTEX(512, 768, -6335),\n    COL_VERTEX(-383, 768, -6207),\n    COL_VERTEX(-383, 0, -6207),\n    COL_VERTEX(512, 0, -6335),\n    COL_VERTEX(-511, 0, -7103),\n    COL_VERTEX(-511, 768, -7103),\n    COL_VERTEX(384, 768, -7231),\n    COL_VERTEX(384, 0, -7231),\n    COL_VERTEX(-2303, 154, 6528),\n    COL_VERTEX(-3583, 154, 6016),\n    COL_VERTEX(-2303, 0, 6016),\n    COL_VERTEX(-4095, 154, 6016),\n    COL_VERTEX(256, 230, 4096),\n    COL_VERTEX(-255, 154, 4096),\n    COL_VERTEX(-1663, 154, 6016),\n    COL_VERTEX(-1663, 0, 6528),\n    COL_VERTEX(-4115, 0, 492),\n    COL_VERTEX(-4115, 0, 0),\n    COL_VERTEX(-4607, 0, 492),\n    COL_VERTEX(6400, 51, 6976),\n    COL_VERTEX(6400, -50, 7040),\n    COL_VERTEX(3840, -50, 4992),\n    COL_VERTEX(6400, -50, 5120),\n    COL_VERTEX(6400, 51, 5056),\n    COL_VERTEX(1536, 154, 6400),\n    COL_VERTEX(896, 0, 6656),\n    COL_VERTEX(1536, 154, 6016),\n    COL_VERTEX(1280, 154, 5760),\n    COL_VERTEX(-5513, 154, 6440),\n    COL_VERTEX(-5887, 154, 7088),\n    COL_VERTEX(-6261, 154, 6872),\n    COL_VERTEX(-6261, 154, 6440),\n    COL_VERTEX(6656, 154, -2639),\n    COL_VERTEX(6282, 154, -2855),\n    COL_VERTEX(-2272, 166, 276),\n    COL_VERTEX(-2235, 403, 391),\n    COL_VERTEX(-2180, 554, 560),\n    COL_VERTEX(-1982, 554, 1169),\n    COL_VERTEX(-1921, 376, 1357),\n    COL_VERTEX(-1890, 166, 1452),\n    COL_VERTEX(6060, 166, -7195),\n    COL_VERTEX(6146, 403, -7110),\n    COL_VERTEX(6271, 554, -6984),\n    COL_VERTEX(6724, 554, -6532),\n    COL_VERTEX(6863, 376, -6392),\n    COL_VERTEX(6934, 166, -6321),\n    COL_TRI_INIT(SURFACE_DEFAULT, 634),\n    COL_TRI(142, 143, 144),\n    COL_TRI(49, 48, 50),\n    COL_TRI(49, 50, 51),\n    COL_TRI(134, 135, 136),\n    COL_TRI(136, 137, 138),\n    COL_TRI(136, 135, 137),\n    COL_TRI(135, 139, 137),\n    COL_TRI(138, 137, 139),\n    COL_TRI(138, 139, 140),\n    COL_TRI(135, 141, 139),\n    COL_TRI(134, 141, 135),\n    COL_TRI(140, 139, 141),\n    COL_TRI(140, 141, 134),\n    COL_TRI(142, 145, 146),\n    COL_TRI(142, 144, 145),\n    COL_TRI(148, 145, 144),\n    COL_TRI(149, 144, 143),\n    COL_TRI(149, 148, 144),\n    COL_TRI(148, 150, 145),\n    COL_TRI(150, 330, 145),\n    COL_TRI(145, 330, 146),\n    COL_TRI(150, 383, 330),\n    COL_TRI(151, 383, 150),\n    COL_TRI(151, 150, 147),\n    COL_TRI(150, 148, 147),\n    COL_TRI(148, 149, 147),\n    COL_TRI(147, 149, 143),\n    COL_TRI(147, 143, 142),\n    COL_TRI(146, 330, 383),\n    COL_TRI(146, 383, 151),\n    COL_TRI(152, 384, 156),\n    COL_TRI(152, 156, 159),\n    COL_TRI(153, 385, 152),\n    COL_TRI(152, 385, 384),\n    COL_TRI(154, 384, 385),\n    COL_TRI(154, 155, 384),\n    COL_TRI(155, 156, 384),\n    COL_TRI(156, 386, 159),\n    COL_TRI(155, 157, 156),\n    COL_TRI(157, 386, 156),\n    COL_TRI(157, 155, 153),\n    COL_TRI(158, 387, 157),\n    COL_TRI(158, 157, 153),\n    COL_TRI(157, 387, 386),\n    COL_TRI(155, 154, 153),\n    COL_TRI(153, 154, 385),\n    COL_TRI(159, 386, 387),\n    COL_TRI(159, 387, 158),\n    COL_TRI(160, 163, 165),\n    COL_TRI(161, 388, 160),\n    COL_TRI(160, 388, 163),\n    COL_TRI(162, 165, 163),\n    COL_TRI(162, 163, 388),\n    COL_TRI(163, 389, 392),\n    COL_TRI(163, 390, 389),\n    COL_TRI(162, 164, 165),\n    COL_TRI(164, 391, 165),\n    COL_TRI(165, 391, 167),\n    COL_TRI(160, 165, 167),\n    COL_TRI(164, 393, 391),\n    COL_TRI(164, 162, 161),\n    COL_TRI(166, 393, 164),\n    COL_TRI(166, 164, 161),\n    COL_TRI(167, 391, 393),\n    COL_TRI(167, 393, 166),\n    COL_TRI(162, 388, 394),\n    COL_TRI(162, 394, 161),\n    COL_TRI(161, 394, 388),\n    COL_TRI(168, 395, 169),\n    COL_TRI(169, 395, 396),\n    COL_TRI(169, 396, 173),\n    COL_TRI(169, 173, 175),\n    COL_TRI(170, 396, 395),\n    COL_TRI(170, 171, 396),\n    COL_TRI(171, 173, 396),\n    COL_TRI(171, 172, 173),\n    COL_TRI(172, 397, 173),\n    COL_TRI(173, 397, 175),\n    COL_TRI(172, 171, 168),\n    COL_TRI(171, 170, 168),\n    COL_TRI(168, 170, 395),\n    COL_TRI(176, 403, 402),\n    COL_TRI(174, 172, 168),\n    COL_TRI(172, 398, 397),\n    COL_TRI(175, 397, 398),\n    COL_TRI(175, 398, 174),\n    COL_TRI(174, 398, 172),\n    COL_TRI(176, 399, 323),\n    COL_TRI(176, 323, 324),\n    COL_TRI(177, 176, 324),\n    COL_TRI(176, 400, 401),\n    COL_TRI(176, 402, 400),\n    COL_TRI(179, 181, 180),\n    COL_TRI(176, 181, 399),\n    COL_TRI(176, 404, 181),\n    COL_TRI(179, 399, 181),\n    COL_TRI(180, 181, 183),\n    COL_TRI(181, 404, 183),\n    COL_TRI(182, 323, 399),\n    COL_TRI(182, 399, 179),\n    COL_TRI(176, 401, 404),\n    COL_TRI(183, 404, 401),\n    COL_TRI(183, 401, 184),\n    COL_TRI(184, 401, 400),\n    COL_TRI(185, 400, 402),\n    COL_TRI(184, 400, 185),\n    COL_TRI(180, 181, 345),\n    COL_TRI(186, 402, 403),\n    COL_TRI(187, 408, 402),\n    COL_TRI(187, 402, 186),\n    COL_TRI(185, 402, 408),\n    COL_TRI(186, 403, 409),\n    COL_TRI(178, 409, 403),\n    COL_TRI(178, 403, 176),\n    COL_TRI(180, 345, 344),\n    COL_TRI(188, 404, 183),\n    COL_TRI(178, 410, 409),\n    COL_TRI(178, 176, 177),\n    COL_TRI(177, 324, 405),\n    COL_TRI(189, 412, 413),\n    COL_TRI(189, 414, 415),\n    COL_TRI(195, 417, 413),\n    COL_TRI(189, 416, 414),\n    COL_TRI(189, 417, 416),\n    COL_TRI(189, 413, 417),\n    COL_TRI(192, 415, 414),\n    COL_TRI(193, 418, 415),\n    COL_TRI(193, 415, 192),\n    COL_TRI(189, 415, 418),\n    COL_TRI(191, 418, 193),\n    COL_TRI(191, 189, 418),\n    COL_TRI(192, 414, 194),\n    COL_TRI(194, 414, 416),\n    COL_TRI(194, 416, 420),\n    COL_TRI(198, 423, 199),\n    COL_TRI(195, 413, 196),\n    COL_TRI(196, 413, 412),\n    COL_TRI(196, 412, 190),\n    COL_TRI(190, 412, 189),\n    COL_TRI(190, 189, 191),\n    COL_TRI(197, 421, 202),\n    COL_TRI(197, 202, 201),\n    COL_TRI(198, 422, 423),\n    COL_TRI(199, 421, 197),\n    COL_TRI(199, 423, 421),\n    COL_TRI(200, 421, 423),\n    COL_TRI(200, 424, 421),\n    COL_TRI(201, 202, 422),\n    COL_TRI(201, 422, 198),\n    COL_TRI(202, 203, 425),\n    COL_TRI(202, 425, 422),\n    COL_TRI(70, 67, 200),\n    COL_TRI(70, 200, 425),\n    COL_TRI(208, 429, 427),\n    COL_TRI(203, 424, 68),\n    COL_TRI(203, 68, 69),\n    COL_TRI(204, 207, 206),\n    COL_TRI(204, 426, 207),\n    COL_TRI(205, 207, 426),\n    COL_TRI(205, 426, 208),\n    COL_TRI(206, 207, 427),\n    COL_TRI(207, 205, 428),\n    COL_TRI(207, 428, 427),\n    COL_TRI(206, 427, 429),\n    COL_TRI(205, 208, 428),\n    COL_TRI(208, 427, 428),\n    COL_TRI(213, 435, 434),\n    COL_TRI(208, 430, 429),\n    COL_TRI(209, 212, 431),\n    COL_TRI(209, 431, 432),\n    COL_TRI(210, 433, 209),\n    COL_TRI(210, 209, 211),\n    COL_TRI(211, 209, 432),\n    COL_TRI(212, 209, 433),\n    COL_TRI(212, 433, 213),\n    COL_TRI(212, 213, 431),\n    COL_TRI(213, 432, 431),\n    COL_TRI(213, 434, 432),\n    COL_TRI(211, 432, 434),\n    COL_TRI(214, 215, 436),\n    COL_TRI(215, 214, 437),\n    COL_TRI(214, 225, 437),\n    COL_TRI(214, 436, 225),\n    COL_TRI(216, 215, 438),\n    COL_TRI(216, 436, 215),\n    COL_TRI(215, 437, 439),\n    COL_TRI(217, 436, 216),\n    COL_TRI(217, 225, 436),\n    COL_TRI(218, 440, 441),\n    COL_TRI(219, 218, 442),\n    COL_TRI(218, 221, 440),\n    COL_TRI(218, 219, 221),\n    COL_TRI(225, 439, 437),\n    COL_TRI(227, 443, 442),\n    COL_TRI(221, 224, 440),\n    COL_TRI(222, 440, 221),\n    COL_TRI(223, 440, 439),\n    COL_TRI(224, 441, 440),\n    COL_TRI(222, 439, 440),\n    COL_TRI(221, 440, 223),\n    COL_TRI(224, 220, 441),\n    COL_TRI(220, 218, 441),\n    COL_TRI(221, 227, 224),\n    COL_TRI(221, 223, 228),\n    COL_TRI(219, 442, 443),\n    COL_TRI(227, 220, 224),\n    COL_TRI(227, 442, 220),\n    COL_TRI(220, 442, 218),\n    COL_TRI(225, 217, 222),\n    COL_TRI(225, 222, 439),\n    COL_TRI(223, 439, 444),\n    COL_TRI(226, 439, 222),\n    COL_TRI(226, 444, 439),\n    COL_TRI(223, 444, 445),\n    COL_TRI(223, 445, 446),\n    COL_TRI(223, 446, 447),\n    COL_TRI(223, 447, 448),\n    COL_TRI(228, 223, 448),\n    COL_TRI(229, 447, 446),\n    COL_TRI(230, 447, 229),\n    COL_TRI(230, 448, 447),\n    COL_TRI(228, 448, 230),\n    COL_TRI(235, 449, 453),\n    COL_TRI(231, 446, 445),\n    COL_TRI(229, 446, 231),\n    COL_TRI(231, 445, 232),\n    COL_TRI(232, 445, 444),\n    COL_TRI(232, 444, 226),\n    COL_TRI(233, 449, 235),\n    COL_TRI(234, 235, 450),\n    COL_TRI(233, 235, 234),\n    COL_TRI(235, 451, 452),\n    COL_TRI(235, 453, 451),\n    COL_TRI(239, 451, 240),\n    COL_TRI(236, 455, 237),\n    COL_TRI(236, 450, 455),\n    COL_TRI(235, 455, 450),\n    COL_TRI(235, 454, 455),\n    COL_TRI(237, 455, 454),\n    COL_TRI(234, 450, 236),\n    COL_TRI(238, 454, 452),\n    COL_TRI(235, 452, 454),\n    COL_TRI(237, 454, 238),\n    COL_TRI(239, 452, 451),\n    COL_TRI(238, 452, 239),\n    COL_TRI(240, 451, 453),\n    COL_TRI(242, 252, 456),\n    COL_TRI(240, 453, 241),\n    COL_TRI(241, 453, 449),\n    COL_TRI(241, 449, 233),\n    COL_TRI(242, 456, 457),\n    COL_TRI(243, 242, 244),\n    COL_TRI(243, 458, 242),\n    COL_TRI(244, 242, 459),\n    COL_TRI(245, 459, 242),\n    COL_TRI(242, 460, 252),\n    COL_TRI(242, 458, 460),\n    COL_TRI(252, 251, 456),\n    COL_TRI(247, 457, 456),\n    COL_TRI(248, 246, 457),\n    COL_TRI(248, 457, 247),\n    COL_TRI(242, 457, 246),\n    COL_TRI(249, 246, 248),\n    COL_TRI(249, 461, 246),\n    COL_TRI(246, 461, 257),\n    COL_TRI(246, 245, 242),\n    COL_TRI(246, 257, 245),\n    COL_TRI(247, 456, 250),\n    COL_TRI(250, 456, 462),\n    COL_TRI(251, 462, 456),\n    COL_TRI(257, 265, 463),\n    COL_TRI(253, 260, 252),\n    COL_TRI(254, 252, 460),\n    COL_TRI(253, 252, 254),\n    COL_TRI(252, 260, 251),\n    COL_TRI(255, 245, 463),\n    COL_TRI(256, 459, 245),\n    COL_TRI(256, 245, 255),\n    COL_TRI(257, 463, 245),\n    COL_TRI(258, 257, 259),\n    COL_TRI(258, 265, 257),\n    COL_TRI(265, 467, 463),\n    COL_TRI(260, 464, 251),\n    COL_TRI(261, 251, 262),\n    COL_TRI(261, 462, 251),\n    COL_TRI(262, 251, 464),\n    COL_TRI(260, 465, 464),\n    COL_TRI(260, 466, 465),\n    COL_TRI(263, 260, 253),\n    COL_TRI(263, 466, 260),\n    COL_TRI(255, 463, 264),\n    COL_TRI(264, 463, 467),\n    COL_TRI(250, 462, 261),\n    COL_TRI(259, 257, 461),\n    COL_TRI(266, 265, 258),\n    COL_TRI(266, 469, 265),\n    COL_TRI(265, 468, 467),\n    COL_TRI(265, 469, 468),\n    COL_TRI(259, 461, 249),\n    COL_TRI(244, 459, 256),\n    COL_TRI(267, 464, 465),\n    COL_TRI(262, 464, 267),\n    COL_TRI(267, 465, 268),\n    COL_TRI(268, 465, 466),\n    COL_TRI(268, 466, 263),\n    COL_TRI(269, 460, 458),\n    COL_TRI(254, 460, 269),\n    COL_TRI(269, 458, 243),\n    COL_TRI(264, 467, 270),\n    COL_TRI(270, 467, 468),\n    COL_TRI(271, 468, 469),\n    COL_TRI(270, 468, 271),\n    COL_TRI(271, 469, 266),\n    COL_TRI(272, 470, 273),\n    COL_TRI(273, 470, 274),\n    COL_TRI(273, 274, 275),\n    COL_TRI(274, 470, 471),\n    COL_TRI(275, 274, 472),\n    COL_TRI(274, 471, 473),\n    COL_TRI(272, 471, 470),\n    COL_TRI(274, 474, 472),\n    COL_TRI(274, 475, 474),\n    COL_TRI(274, 476, 475),\n    COL_TRI(275, 472, 277),\n    COL_TRI(276, 474, 475),\n    COL_TRI(277, 472, 474),\n    COL_TRI(277, 474, 276),\n    COL_TRI(276, 475, 278),\n    COL_TRI(278, 475, 476),\n    COL_TRI(278, 476, 279),\n    COL_TRI(279, 476, 473),\n    COL_TRI(274, 473, 476),\n    COL_TRI(279, 473, 280),\n    COL_TRI(280, 473, 471),\n    COL_TRI(280, 471, 272),\n    COL_TRI(281, 477, 478),\n    COL_TRI(281, 479, 477),\n    COL_TRI(282, 284, 285),\n    COL_TRI(283, 282, 285),\n    COL_TRI(284, 480, 285),\n    COL_TRI(285, 480, 481),\n    COL_TRI(285, 481, 286),\n    COL_TRI(289, 290, 485),\n    COL_TRI(286, 481, 482),\n    COL_TRI(286, 482, 288),\n    COL_TRI(286, 288, 287),\n    COL_TRI(287, 484, 483),\n    COL_TRI(287, 483, 283),\n    COL_TRI(288, 484, 287),\n    COL_TRI(283, 483, 282),\n    COL_TRI(289, 291, 290),\n    COL_TRI(9, 5, 487),\n    COL_TRI(290, 291, 486),\n    COL_TRI(291, 12, 486),\n    COL_TRI(291, 13, 12),\n    COL_TRI(290, 486, 292),\n    COL_TRI(292, 486, 12),\n    COL_TRI(292, 12, 293),\n    COL_TRI(293, 12, 13),\n    COL_TRI(293, 13, 294),\n    COL_TRI(294, 5, 9),\n    COL_TRI(9, 487, 296),\n    COL_TRI(7, 6, 294),\n    COL_TRI(295, 5, 7),\n    COL_TRI(294, 6, 5),\n    COL_TRI(295, 487, 5),\n    COL_TRI(5, 6, 7),\n    COL_TRI(296, 487, 295),\n    COL_TRI(296, 295, 297),\n    COL_TRI(297, 295, 299),\n    COL_TRI(7, 299, 295),\n    COL_TRI(297, 299, 488),\n    COL_TRI(298, 289, 485),\n    COL_TRI(298, 485, 489),\n    COL_TRI(299, 298, 489),\n    COL_TRI(7, 289, 298),\n    COL_TRI(299, 489, 488),\n    COL_TRI(305, 493, 306),\n    COL_TRI(7, 13, 289),\n    COL_TRI(13, 7, 294),\n    COL_TRI(300, 490, 491),\n    COL_TRI(300, 491, 303),\n    COL_TRI(301, 490, 300),\n    COL_TRI(301, 492, 490),\n    COL_TRI(302, 491, 490),\n    COL_TRI(302, 490, 492),\n    COL_TRI(303, 491, 302),\n    COL_TRI(303, 302, 304),\n    COL_TRI(304, 492, 301),\n    COL_TRI(304, 302, 492),\n    COL_TRI(306, 494, 495),\n    COL_TRI(306, 495, 305),\n    COL_TRI(307, 494, 306),\n    COL_TRI(308, 495, 494),\n    COL_TRI(308, 494, 309),\n    COL_TRI(307, 309, 494),\n    COL_TRI(305, 496, 493),\n    COL_TRI(309, 497, 308),\n    COL_TRI(309, 498, 497),\n    COL_TRI(307, 498, 309),\n    COL_TRI(310, 499, 311),\n    COL_TRI(307, 493, 311),\n    COL_TRI(307, 311, 499),\n    COL_TRI(311, 493, 496),\n    COL_TRI(311, 496, 310),\n    COL_TRI(307, 306, 493),\n    COL_TRI(310, 500, 499),\n    COL_TRI(312, 498, 307),\n    COL_TRI(307, 499, 500),\n    COL_TRI(307, 500, 312),\n    COL_TRI(312, 497, 498),\n    COL_TRI(313, 501, 317),\n    COL_TRI(313, 317, 502),\n    COL_TRI(314, 501, 313),\n    COL_TRI(314, 313, 316),\n    COL_TRI(315, 313, 502),\n    COL_TRI(316, 313, 315),\n    COL_TRI(317, 501, 314),\n    COL_TRI(321, 505, 406),\n    COL_TRI(318, 502, 317),\n    COL_TRI(317, 314, 503),\n    COL_TRI(318, 317, 503),\n    COL_TRI(315, 502, 504),\n    COL_TRI(319, 504, 502),\n    COL_TRI(319, 502, 318),\n    COL_TRI(316, 315, 320),\n    COL_TRI(320, 315, 504),\n    COL_TRI(320, 504, 319),\n    COL_TRI(321, 406, 323),\n    COL_TRI(326, 409, 507),\n    COL_TRI(322, 505, 407),\n    COL_TRI(322, 406, 505),\n    COL_TRI(323, 406, 322),\n    COL_TRI(324, 322, 407),\n    COL_TRI(324, 407, 506),\n    COL_TRI(323, 322, 324),\n    COL_TRI(325, 507, 409),\n    COL_TRI(325, 409, 410),\n    COL_TRI(325, 326, 507),\n    COL_TRI(325, 508, 326),\n    COL_TRI(330, 146, 511),\n    COL_TRI(187, 326, 508),\n    COL_TRI(187, 186, 326),\n    COL_TRI(326, 186, 409),\n    COL_TRI(327, 328, 329),\n    COL_TRI(328, 509, 329),\n    COL_TRI(329, 509, 510),\n    COL_TRI(329, 510, 327),\n    COL_TRI(328, 511, 509),\n    COL_TRI(327, 510, 146),\n    COL_TRI(327, 146, 330),\n    COL_TRI(327, 330, 328),\n    COL_TRI(330, 511, 328),\n    COL_TRI(338, 339, 341),\n    COL_TRI(331, 333, 512),\n    COL_TRI(332, 333, 331),\n    COL_TRI(333, 513, 512),\n    COL_TRI(333, 332, 513),\n    COL_TRI(334, 512, 513),\n    COL_TRI(331, 512, 334),\n    COL_TRI(335, 336, 514),\n    COL_TRI(336, 335, 515),\n    COL_TRI(336, 516, 337),\n    COL_TRI(336, 337, 514),\n    COL_TRI(336, 515, 516),\n    COL_TRI(337, 516, 515),\n    COL_TRI(340, 338, 517),\n    COL_TRI(339, 338, 343),\n    COL_TRI(340, 343, 338),\n    COL_TRI(341, 517, 338),\n    COL_TRI(339, 343, 518),\n    COL_TRI(342, 517, 341),\n    COL_TRI(343, 188, 518),\n    COL_TRI(343, 419, 188),\n    COL_TRI(340, 419, 343),\n    COL_TRI(188, 419, 404),\n    COL_TRI(344, 345, 411),\n    COL_TRI(345, 404, 419),\n    COL_TRI(340, 411, 419),\n    COL_TRI(342, 519, 517),\n    COL_TRI(344, 411, 346),\n    COL_TRI(345, 181, 404),\n    COL_TRI(346, 411, 340),\n    COL_TRI(346, 340, 347),\n    COL_TRI(347, 340, 520),\n    COL_TRI(340, 517, 519),\n    COL_TRI(347, 520, 348),\n    COL_TRI(348, 520, 519),\n    COL_TRI(340, 519, 520),\n    COL_TRI(348, 519, 342),\n    COL_TRI(123, 351, 87),\n    COL_TRI(101, 521, 81),\n    COL_TRI(81, 350, 79),\n    COL_TRI(81, 521, 350),\n    COL_TRI(349, 350, 521),\n    COL_TRI(101, 349, 521),\n    COL_TRI(350, 522, 80),\n    COL_TRI(79, 350, 80),\n    COL_TRI(349, 522, 350),\n    COL_TRI(80, 522, 523),\n    COL_TRI(349, 523, 522),\n    COL_TRI(80, 523, 99),\n    COL_TRI(349, 524, 523),\n    COL_TRI(99, 523, 524),\n    COL_TRI(99, 524, 100),\n    COL_TRI(100, 524, 349),\n    COL_TRI(100, 349, 101),\n    COL_TRI(351, 353, 87),\n    COL_TRI(352, 353, 351),\n    COL_TRI(92, 352, 351),\n    COL_TRI(353, 525, 86),\n    COL_TRI(87, 353, 86),\n    COL_TRI(352, 525, 353),\n    COL_TRI(92, 351, 123),\n    COL_TRI(86, 525, 526),\n    COL_TRI(352, 526, 525),\n    COL_TRI(86, 526, 88),\n    COL_TRI(88, 526, 354),\n    COL_TRI(352, 354, 526),\n    COL_TRI(88, 354, 95),\n    COL_TRI(354, 352, 92),\n    COL_TRI(95, 354, 92),\n    COL_TRI(355, 76, 78),\n    COL_TRI(355, 72, 76),\n    COL_TRI(355, 357, 356),\n    COL_TRI(355, 358, 357),\n    COL_TRI(355, 78, 361),\n    COL_TRI(355, 361, 360),\n    COL_TRI(355, 360, 359),\n    COL_TRI(355, 359, 358),\n    COL_TRI(356, 527, 355),\n    COL_TRI(355, 527, 72),\n    COL_TRI(361, 532, 531),\n    COL_TRI(356, 528, 527),\n    COL_TRI(357, 528, 356),\n    COL_TRI(357, 529, 528),\n    COL_TRI(358, 529, 357),\n    COL_TRI(358, 362, 529),\n    COL_TRI(359, 362, 358),\n    COL_TRI(359, 530, 362),\n    COL_TRI(360, 530, 359),\n    COL_TRI(360, 531, 530),\n    COL_TRI(361, 531, 360),\n    COL_TRI(362, 531, 532),\n    COL_TRI(78, 532, 361),\n    COL_TRI(78, 77, 532),\n    COL_TRI(77, 529, 362),\n    COL_TRI(362, 532, 77),\n    COL_TRI(77, 528, 529),\n    COL_TRI(77, 72, 527),\n    COL_TRI(77, 527, 528),\n    COL_TRI(362, 530, 531),\n    COL_TRI(102, 363, 114),\n    COL_TRI(102, 110, 363),\n    COL_TRI(363, 110, 126),\n    COL_TRI(363, 126, 365),\n    COL_TRI(363, 365, 114),\n    COL_TRI(364, 365, 126),\n    COL_TRI(364, 126, 127),\n    COL_TRI(365, 364, 113),\n    COL_TRI(365, 113, 114),\n    COL_TRI(364, 366, 129),\n    COL_TRI(366, 364, 127),\n    COL_TRI(364, 129, 130),\n    COL_TRI(364, 130, 113),\n    COL_TRI(366, 127, 128),\n    COL_TRI(366, 128, 82),\n    COL_TRI(366, 82, 129),\n    COL_TRI(89, 94, 367),\n    COL_TRI(94, 91, 367),\n    COL_TRI(367, 91, 122),\n    COL_TRI(367, 369, 116),\n    COL_TRI(89, 367, 116),\n    COL_TRI(367, 122, 369),\n    COL_TRI(368, 122, 121),\n    COL_TRI(368, 369, 122),\n    COL_TRI(369, 368, 131),\n    COL_TRI(369, 131, 115),\n    COL_TRI(369, 115, 116),\n    COL_TRI(368, 370, 132),\n    COL_TRI(368, 132, 131),\n    COL_TRI(370, 368, 121),\n    COL_TRI(370, 121, 120),\n    COL_TRI(370, 133, 132),\n    COL_TRI(370, 120, 111),\n    COL_TRI(370, 111, 133),\n    COL_TRI(90, 119, 371),\n    COL_TRI(104, 90, 371),\n    COL_TRI(374, 118, 112),\n    COL_TRI(371, 119, 117),\n    COL_TRI(371, 117, 373),\n    COL_TRI(371, 373, 103),\n    COL_TRI(104, 371, 103),\n    COL_TRI(372, 373, 117),\n    COL_TRI(372, 117, 118),\n    COL_TRI(373, 372, 106),\n    COL_TRI(373, 106, 105),\n    COL_TRI(373, 105, 103),\n    COL_TRI(374, 372, 118),\n    COL_TRI(372, 107, 106),\n    COL_TRI(372, 374, 107),\n    COL_TRI(374, 112, 109),\n    COL_TRI(374, 109, 108),\n    COL_TRI(374, 108, 107),\n    COL_TRI(375, 379, 378),\n    COL_TRI(375, 378, 377),\n    COL_TRI(375, 377, 376),\n    COL_TRI(375, 380, 379),\n    COL_TRI(375, 125, 98),\n    COL_TRI(375, 98, 381),\n    COL_TRI(375, 381, 380),\n    COL_TRI(380, 536, 379),\n    COL_TRI(376, 533, 375),\n    COL_TRI(375, 93, 125),\n    COL_TRI(375, 533, 93),\n    COL_TRI(376, 534, 533),\n    COL_TRI(377, 534, 376),\n    COL_TRI(377, 535, 534),\n    COL_TRI(378, 535, 377),\n    COL_TRI(378, 382, 535),\n    COL_TRI(379, 382, 378),\n    COL_TRI(379, 536, 382),\n    COL_TRI(380, 537, 536),\n    COL_TRI(381, 537, 380),\n    COL_TRI(381, 538, 537),\n    COL_TRI(98, 538, 381),\n    COL_TRI(98, 96, 538),\n    COL_TRI(382, 538, 96),\n    COL_TRI(96, 533, 534),\n    COL_TRI(96, 534, 535),\n    COL_TRI(96, 535, 382),\n    COL_TRI(96, 93, 533),\n    COL_TRI(382, 537, 538),\n    COL_TRI(382, 536, 537),\n    COL_TRI_INIT(SURFACE_BURNING, 82),\n    COL_TRI(41, 38, 72),\n    COL_TRI(73, 35, 41),\n    COL_TRI(74, 38, 37),\n    COL_TRI(72, 38, 75),\n    COL_TRI(76, 72, 75),\n    COL_TRI(77, 41, 72),\n    COL_TRI(73, 78, 75),\n    COL_TRI(79, 80, 73),\n    COL_TRI(77, 73, 41),\n    COL_TRI(78, 76, 75),\n    COL_TRI(74, 37, 29),\n    COL_TRI(30, 73, 84),\n    COL_TRI(73, 30, 35),\n    COL_TRI(85, 29, 30),\n    COL_TRI(86, 29, 85),\n    COL_TRI(87, 86, 85),\n    COL_TRI(85, 30, 84),\n    COL_TRI(85, 97, 123),\n    COL_TRI(85, 123, 87),\n    COL_TRI(95, 92, 74),\n    COL_TRI(88, 74, 29),\n    COL_TRI(89, 90, 74),\n    COL_TRI(90, 38, 74),\n    COL_TRI(91, 94, 74),\n    COL_TRI(91, 74, 124),\n    COL_TRI(88, 95, 74),\n    COL_TRI(92, 125, 74),\n    COL_TRI(93, 74, 125),\n    COL_TRI(93, 97, 74),\n    COL_TRI(94, 89, 74),\n    COL_TRI(73, 80, 83),\n    COL_TRI(96, 98, 123),\n    COL_TRI(97, 96, 123),\n    COL_TRI(98, 92, 123),\n    COL_TRI(92, 98, 125),\n    COL_TRI(93, 96, 97),\n    COL_TRI(86, 88, 29),\n    COL_TRI(80, 99, 83),\n    COL_TRI(81, 79, 73),\n    COL_TRI(81, 73, 82),\n    COL_TRI(83, 82, 128),\n    COL_TRI(100, 82, 83),\n    COL_TRI(99, 100, 83),\n    COL_TRI(83, 110, 75),\n    COL_TRI(83, 126, 110),\n    COL_TRI(83, 127, 126),\n    COL_TRI(83, 128, 127),\n    COL_TRI(101, 81, 82),\n    COL_TRI(100, 101, 82),\n    COL_TRI(82, 73, 75),\n    COL_TRI(102, 82, 75),\n    COL_TRI(73, 77, 78),\n    COL_TRI(103, 105, 38),\n    COL_TRI(104, 103, 38),\n    COL_TRI(90, 104, 38),\n    COL_TRI(105, 106, 38),\n    COL_TRI(106, 107, 38),\n    COL_TRI(107, 108, 38),\n    COL_TRI(108, 109, 38),\n    COL_TRI(109, 75, 38),\n    COL_TRI(110, 102, 75),\n    COL_TRI(111, 124, 75),\n    COL_TRI(112, 75, 109),\n    COL_TRI(112, 111, 75),\n    COL_TRI(102, 129, 82),\n    COL_TRI(102, 114, 129),\n    COL_TRI(113, 130, 129),\n    COL_TRI(114, 113, 129),\n    COL_TRI(115, 131, 132),\n    COL_TRI(115, 132, 133),\n    COL_TRI(116, 115, 133),\n    COL_TRI(117, 116, 133),\n    COL_TRI(118, 117, 133),\n    COL_TRI(118, 133, 111),\n    COL_TRI(117, 119, 116),\n    COL_TRI(119, 89, 116),\n    COL_TRI(119, 90, 89),\n    COL_TRI(112, 118, 111),\n    COL_TRI(111, 120, 124),\n    COL_TRI(122, 91, 124),\n    COL_TRI(120, 121, 124),\n    COL_TRI(121, 122, 124),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 6),\n    COL_TRI(484, 288, 282),\n    COL_TRI(484, 282, 483),\n    COL_TRI(288, 482, 284),\n    COL_TRI(288, 284, 282),\n    COL_TRI(482, 481, 480),\n    COL_TRI(482, 480, 284),\n    COL_TRI_INIT(SURFACE_WALL_MISC, 106),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI(3, 0, 4),\n    COL_TRI(5, 4, 0),\n    COL_TRI(0, 6, 5),\n    COL_TRI(2, 7, 0),\n    COL_TRI(7, 6, 0),\n    COL_TRI(5, 8, 4),\n    COL_TRI(5, 9, 8),\n    COL_TRI(8, 10, 11),\n    COL_TRI(8, 11, 4),\n    COL_TRI(3, 4, 11),\n    COL_TRI(2, 12, 13),\n    COL_TRI(2, 13, 7),\n    COL_TRI(10, 3, 11),\n    COL_TRI(26, 55, 16),\n    COL_TRI(14, 15, 28),\n    COL_TRI(15, 27, 28),\n    COL_TRI(15, 17, 27),\n    COL_TRI(14, 53, 15),\n    COL_TRI(15, 54, 17),\n    COL_TRI(15, 53, 54),\n    COL_TRI(16, 54, 53),\n    COL_TRI(16, 55, 54),\n    COL_TRI(17, 26, 27),\n    COL_TRI(16, 53, 56),\n    COL_TRI(14, 56, 53),\n    COL_TRI(18, 19, 21),\n    COL_TRI(18, 57, 19),\n    COL_TRI(26, 16, 27),\n    COL_TRI(20, 61, 60),\n    COL_TRI(20, 58, 61),\n    COL_TRI(20, 60, 59),\n    COL_TRI(21, 20, 22),\n    COL_TRI(19, 20, 21),\n    COL_TRI(19, 58, 20),\n    COL_TRI(22, 20, 59),\n    COL_TRI(18, 21, 23),\n    COL_TRI(21, 22, 23),\n    COL_TRI(23, 22, 56),\n    COL_TRI(22, 59, 24),\n    COL_TRI(24, 56, 22),\n    COL_TRI(25, 23, 14),\n    COL_TRI(25, 18, 23),\n    COL_TRI(23, 56, 14),\n    COL_TRI(25, 59, 60),\n    COL_TRI(25, 60, 18),\n    COL_TRI(18, 60, 61),\n    COL_TRI(30, 31, 35),\n    COL_TRI(24, 16, 56),\n    COL_TRI(14, 28, 25),\n    COL_TRI(27, 16, 24),\n    COL_TRI(27, 24, 28),\n    COL_TRI(28, 24, 59),\n    COL_TRI(28, 59, 25),\n    COL_TRI(18, 61, 57),\n    COL_TRI(29, 31, 30),\n    COL_TRI(29, 33, 31),\n    COL_TRI(31, 36, 35),\n    COL_TRI(32, 36, 31),\n    COL_TRI(33, 34, 31),\n    COL_TRI(34, 32, 31),\n    COL_TRI(35, 42, 41),\n    COL_TRI(35, 36, 42),\n    COL_TRI(32, 43, 36),\n    COL_TRI(36, 44, 42),\n    COL_TRI(36, 43, 44),\n    COL_TRI(37, 33, 29),\n    COL_TRI(37, 40, 33),\n    COL_TRI(33, 46, 34),\n    COL_TRI(33, 40, 46),\n    COL_TRI(32, 64, 43),\n    COL_TRI(38, 39, 37),\n    COL_TRI(39, 40, 37),\n    COL_TRI(40, 39, 46),\n    COL_TRI(41, 42, 38),\n    COL_TRI(42, 39, 38),\n    COL_TRI(39, 45, 46),\n    COL_TRI(42, 45, 39),\n    COL_TRI(42, 44, 45),\n    COL_TRI(43, 62, 44),\n    COL_TRI(44, 63, 45),\n    COL_TRI(44, 62, 63),\n    COL_TRI(43, 64, 62),\n    COL_TRI(45, 47, 46),\n    COL_TRI(45, 63, 47),\n    COL_TRI(46, 47, 65),\n    COL_TRI(46, 65, 34),\n    COL_TRI(32, 66, 64),\n    COL_TRI(34, 66, 32),\n    COL_TRI(34, 65, 66),\n    COL_TRI(47, 66, 65),\n    COL_TRI(47, 64, 66),\n    COL_TRI(47, 62, 64),\n    COL_TRI(47, 63, 62),\n    COL_TRI(48, 67, 50),\n    COL_TRI(49, 68, 48),\n    COL_TRI(48, 68, 67),\n    COL_TRI(49, 69, 68),\n    COL_TRI(50, 67, 70),\n    COL_TRI(50, 70, 51),\n    COL_TRI(51, 70, 69),\n    COL_TRI(51, 69, 49),\n    COL_TRI(1, 3, 52),\n    COL_TRI(1, 52, 71),\n    COL_TRI(10, 52, 3),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(1),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_null_start, /*pos*/ -3839, 154, 6272, /*yaw*/ 64), // unused, probably an early way to set initial position\n    COL_END(),\n#else\n    COL_INIT(),\n    COL_VERTEX_INIT(0x20F),\n    COL_VERTEX(2775, 1280, 4567),\n    COL_VERTEX(2816, 1280, 4608),\n    COL_VERTEX(5888, 1280, 4608),\n    COL_VERTEX(2775, 1280, 8192),\n    COL_VERTEX(2816, 1280, 8192),\n    COL_VERTEX(2816, 563, 4608),\n    COL_VERTEX(4352, 563, 4608),\n    COL_VERTEX(2816, 563, 5504),\n    COL_VERTEX(5888, 0, 4608),\n    COL_VERTEX(4352, 0, 4608),\n    COL_VERTEX(5888, 1280, 4567),\n    COL_VERTEX(5888, 0, 4567),\n    COL_VERTEX(2816, 256, 7552),\n    COL_VERTEX(2816, 256, 8192),\n    COL_VERTEX(-153, 486, 6093),\n    COL_VERTEX(-76, 563, 6093),\n    COL_VERTEX(-229, 486, 6246),\n    COL_VERTEX(-153, 154, 6093),\n    COL_VERTEX(154, 154, 6093),\n    COL_VERTEX(230, 486, 6093),\n    COL_VERTEX(154, 486, 6093),\n    COL_VERTEX(154, 486, 6246),\n    COL_VERTEX(77, 563, 6246),\n    COL_VERTEX(77, 563, 6093),\n    COL_VERTEX(-76, 640, 6246),\n    COL_VERTEX(77, 640, 6093),\n    COL_VERTEX(-229, 154, 6093),\n    COL_VERTEX(-229, 486, 6093),\n    COL_VERTEX(-76, 640, 6093),\n    COL_VERTEX(640, 0, 384),\n    COL_VERTEX(640, 0, -383),\n    COL_VERTEX(186, 512, -107),\n    COL_VERTEX(325, 282, -210),\n    COL_VERTEX(186, 512, 108),\n    COL_VERTEX(335, 282, 194),\n    COL_VERTEX(0, 0, 768),\n    COL_VERTEX(0, 282, 387),\n    COL_VERTEX(0, 0, -767),\n    COL_VERTEX(-324, 282, -210),\n    COL_VERTEX(-639, 0, -383),\n    COL_VERTEX(0, 282, -386),\n    COL_VERTEX(-639, 0, 384),\n    COL_VERTEX(-334, 282, 194),\n    COL_VERTEX(-185, 512, 108),\n    COL_VERTEX(0, 512, 215),\n    COL_VERTEX(-185, 512, -107),\n    COL_VERTEX(0, 512, -214),\n    COL_VERTEX(0, 102, -214),\n    COL_VERTEX(-3327, 10, 3584),\n    COL_VERTEX(-3071, 10, 3584),\n    COL_VERTEX(-3071, 10, 3328),\n    COL_VERTEX(-3327, 10, 3328),\n    COL_VERTEX(2775, 0, 4567),\n    COL_VERTEX(-153, 154, 6246),\n    COL_VERTEX(-153, 486, 6246),\n    COL_VERTEX(-229, 154, 6246),\n    COL_VERTEX(-76, 563, 6246),\n    COL_VERTEX(154, 154, 6246),\n    COL_VERTEX(230, 154, 6093),\n    COL_VERTEX(230, 486, 6246),\n    COL_VERTEX(230, 154, 6246),\n    COL_VERTEX(77, 640, 6246),\n    COL_VERTEX(-185, 102, -107),\n    COL_VERTEX(-185, 102, 108),\n    COL_VERTEX(0, 102, 215),\n    COL_VERTEX(186, 102, 108),\n    COL_VERTEX(186, 102, -107),\n    COL_VERTEX(-3071, 307, 3584),\n    COL_VERTEX(-3071, 307, 3328),\n    COL_VERTEX(-3327, 307, 3584),\n    COL_VERTEX(-3327, 307, 3328),\n    COL_VERTEX(2775, 0, 8192),\n    COL_VERTEX(-2318, 0, 134),\n    COL_VERTEX(0, 0, 8192),\n    COL_VERTEX(0, 0, -8191),\n    COL_VERTEX(-2805, 0, 292),\n    COL_VERTEX(-8191, 0, 0),\n    COL_VERTEX(-1844, 0, 1595),\n    COL_VERTEX(8192, 0, 8192),\n    COL_VERTEX(-5637, 0, 4982),\n    COL_VERTEX(-2331, 0, 1753),\n    COL_VERTEX(-5222, 0, 7040),\n    COL_VERTEX(-5887, 0, 7424),\n    COL_VERTEX(-5222, 0, 6272),\n    COL_VERTEX(-8191, 0, 8192),\n    COL_VERTEX(8192, 0, 0),\n    COL_VERTEX(6656, 0, -2303),\n    COL_VERTEX(7321, 0, -2687),\n    COL_VERTEX(-2053, 0, -2429),\n    COL_VERTEX(-5871, 0, -6578),\n    COL_VERTEX(-5637, 0, -7037),\n    COL_VERTEX(-6151, 0, -7175),\n    COL_VERTEX(5954, 0, -7301),\n    COL_VERTEX(5991, 0, -2687),\n    COL_VERTEX(6656, 0, -3839),\n    COL_VERTEX(5991, 0, -3455),\n    COL_VERTEX(8192, 0, -8191),\n    COL_VERTEX(7040, 0, -6215),\n    COL_VERTEX(6678, 0, -5853),\n    COL_VERTEX(-6552, 0, 7040),\n    COL_VERTEX(-6552, 0, 6272),\n    COL_VERTEX(-5887, 0, 5888),\n    COL_VERTEX(-7042, 0, 3578),\n    COL_VERTEX(-3458, 0, -1025),\n    COL_VERTEX(-3012, 0, -1282),\n    COL_VERTEX(-3081, 0, -1539),\n    COL_VERTEX(-3012, 0, -1796),\n    COL_VERTEX(-2824, 0, -1984),\n    COL_VERTEX(-2567, 0, -2053),\n    COL_VERTEX(-2287, 0, -1970),\n    COL_VERTEX(-7179, 0, 4092),\n    COL_VERTEX(-3595, 0, -1539),\n    COL_VERTEX(-7042, 0, -5633),\n    COL_VERTEX(-6596, 0, 4349),\n    COL_VERTEX(-6665, 0, 4092),\n    COL_VERTEX(-6408, 0, -6592),\n    COL_VERTEX(-6151, 0, -6661),\n    COL_VERTEX(-3458, 0, -2053),\n    COL_VERTEX(-3081, 0, -2429),\n    COL_VERTEX(-2567, 0, -2567),\n    COL_VERTEX(-7179, 0, -6147),\n    COL_VERTEX(-6665, 0, -7037),\n    COL_VERTEX(-7042, 0, -6661),\n    COL_VERTEX(7321, 0, -3455),\n    COL_VERTEX(-8191, 0, -8191),\n    COL_VERTEX(5592, 0, -6939),\n    COL_VERTEX(-7042, 0, 4606),\n    COL_VERTEX(-6665, 0, 4982),\n    COL_VERTEX(-6151, 0, 5120),\n    COL_VERTEX(-6151, 0, 4606),\n    COL_VERTEX(-6408, 0, 4537),\n    COL_VERTEX(-6596, 0, -6404),\n    COL_VERTEX(-6665, 0, -6147),\n    COL_VERTEX(-6596, 0, -5890),\n    COL_VERTEX(-127, 0, -1919),\n    COL_VERTEX(-127, 307, -2175),\n    COL_VERTEX(-127, 0, -2175),\n    COL_VERTEX(128, 307, -2175),\n    COL_VERTEX(128, 0, -2175),\n    COL_VERTEX(128, 307, -1919),\n    COL_VERTEX(128, 0, -1919),\n    COL_VERTEX(-127, 307, -1919),\n    COL_VERTEX(-4607, 0, -1023),\n    COL_VERTEX(-4607, 154, -383),\n    COL_VERTEX(-4607, 0, 0),\n    COL_VERTEX(-4607, 307, -1023),\n    COL_VERTEX(-4607, 307, -639),\n    COL_VERTEX(-5631, 0, -1023),\n    COL_VERTEX(-5631, 307, -639),\n    COL_VERTEX(-5631, 307, -1023),\n    COL_VERTEX(-5631, 154, -383),\n    COL_VERTEX(-4607, 154, 0),\n    COL_VERTEX(-5631, 0, 0),\n    COL_VERTEX(-5631, 154, 0),\n    COL_VERTEX(-4095, 0, 3968),\n    COL_VERTEX(-4095, 0, 2944),\n    COL_VERTEX(-4095, 307, 2944),\n    COL_VERTEX(-4479, 307, 2944),\n    COL_VERTEX(-4735, 154, 3968),\n    COL_VERTEX(-4735, 154, 2944),\n    COL_VERTEX(-5119, 0, 2944),\n    COL_VERTEX(-5119, 0, 3968),\n    COL_VERTEX(1536, 0, 3968),\n    COL_VERTEX(2560, 0, 3968),\n    COL_VERTEX(1536, 307, 3584),\n    COL_VERTEX(2560, 307, 3584),\n    COL_VERTEX(2560, 154, 3328),\n    COL_VERTEX(1536, 154, 3328),\n    COL_VERTEX(2560, 0, 2944),\n    COL_VERTEX(1536, 0, 2944),\n    COL_VERTEX(6144, 0, 1920),\n    COL_VERTEX(6144, 0, 896),\n    COL_VERTEX(6144, 307, 896),\n    COL_VERTEX(5760, 307, 896),\n    COL_VERTEX(5504, 154, 896),\n    COL_VERTEX(5504, 154, 1920),\n    COL_VERTEX(5120, 0, 896),\n    COL_VERTEX(5120, 0, 1920),\n    COL_VERTEX(-255, 154, 6016),\n    COL_VERTEX(-255, 0, 6016),\n    COL_VERTEX(-383, 0, 6144),\n    COL_VERTEX(256, 0, 6016),\n    COL_VERTEX(384, 0, 6144),\n    COL_VERTEX(384, 154, 6144),\n    COL_VERTEX(256, 0, 4224),\n    COL_VERTEX(384, 0, 6400),\n    COL_VERTEX(256, 0, 6528),\n    COL_VERTEX(-255, 0, 6528),\n    COL_VERTEX(-1151, 154, 6528),\n    COL_VERTEX(-1151, 0, 6528),\n    COL_VERTEX(640, 0, 6400),\n    COL_VERTEX(-5375, 307, -3071),\n    COL_VERTEX(-5375, 0, -3071),\n    COL_VERTEX(-5503, 0, -2943),\n    COL_VERTEX(-4863, 0, -3071),\n    COL_VERTEX(-4735, 0, -2943),\n    COL_VERTEX(-4735, 0, -1151),\n    COL_VERTEX(-5375, 0, -1023),\n    COL_VERTEX(-5503, 0, -1151),\n    COL_VERTEX(-2559, 0, 4224),\n    COL_VERTEX(-3839, 0, 2688),\n    COL_VERTEX(-2559, 0, 2688),\n    COL_VERTEX(-3071, 307, 2688),\n    COL_VERTEX(-3839, 0, 4224),\n    COL_VERTEX(-3839, 307, 4224),\n    COL_VERTEX(-3327, 307, 4224),\n    COL_VERTEX(-2559, 0, 3840),\n    COL_VERTEX(-2380, 410, 3840),\n    COL_VERTEX(-2303, 0, 3840),\n    COL_VERTEX(-2303, 307, 3840),\n    COL_VERTEX(-2559, 307, 3968),\n    COL_VERTEX(-2303, 307, 3328),\n    COL_VERTEX(-2380, 410, 3328),\n    COL_VERTEX(-2303, 0, 3328),\n    COL_VERTEX(-2559, 0, 3328),\n    COL_VERTEX(-2559, 307, 3456),\n    COL_VERTEX(-1279, 307, 3840),\n    COL_VERTEX(-1458, 410, 3840),\n    COL_VERTEX(-1535, 0, 3840),\n    COL_VERTEX(-1535, 0, 3968),\n    COL_VERTEX(-1535, 0, 3456),\n    COL_VERTEX(-1535, 307, 3456),\n    COL_VERTEX(-1458, 410, 3328),\n    COL_VERTEX(-1279, 0, 3456),\n    COL_VERTEX(-1023, 307, 3328),\n    COL_VERTEX(-1279, 307, 3328),\n    COL_VERTEX(-1279, 0, 3968),\n    COL_VERTEX(-1535, 307, 3968),\n    COL_VERTEX(-1023, 0, 4096),\n    COL_VERTEX(-1279, 0, 3328),\n    COL_VERTEX(-1023, 0, 3328),\n    COL_VERTEX(1280, 0, 3456),\n    COL_VERTEX(1024, 0, 3328),\n    COL_VERTEX(1280, 0, 3968),\n    COL_VERTEX(1024, 0, 4096),\n    COL_VERTEX(6400, 0, 1152),\n    COL_VERTEX(6912, 0, 640),\n    COL_VERTEX(6912, 307, 640),\n    COL_VERTEX(7936, 0, 1152),\n    COL_VERTEX(7424, 0, 640),\n    COL_VERTEX(7936, 0, 1664),\n    COL_VERTEX(7424, 0, 2176),\n    COL_VERTEX(6912, 0, 2176),\n    COL_VERTEX(6400, 0, 1664),\n    COL_VERTEX(4864, 0, 0),\n    COL_VERTEX(4608, 0, -767),\n    COL_VERTEX(4608, 154, -767),\n    COL_VERTEX(5248, 154, -1279),\n    COL_VERTEX(4992, 154, -895),\n    COL_VERTEX(4992, 0, -895),\n    COL_VERTEX(4992, 0, -767),\n    COL_VERTEX(5632, 0, -1151),\n    COL_VERTEX(5120, 0, -383),\n    COL_VERTEX(5888, 154, 128),\n    COL_VERTEX(5504, 154, 128),\n    COL_VERTEX(5248, 0, 384),\n    COL_VERTEX(5504, 0, 128),\n    COL_VERTEX(4608, 0, -1151),\n    COL_VERTEX(5248, 0, -1279),\n    COL_VERTEX(5632, 154, -1663),\n    COL_VERTEX(5632, 0, -1663),\n    COL_VERTEX(4352, 0, -2047),\n    COL_VERTEX(5248, 154, 384),\n    COL_VERTEX(5504, 0, -383),\n    COL_VERTEX(5888, 0, 128),\n    COL_VERTEX(4096, 0, 384),\n    COL_VERTEX(5248, 0, -1535),\n    COL_VERTEX(4352, 154, -2047),\n    COL_VERTEX(4096, 0, -2047),\n    COL_VERTEX(5504, 0, 640),\n    COL_VERTEX(4096, 0, 768),\n    COL_VERTEX(5248, 0, 0),\n    COL_VERTEX(4480, 0, -1663),\n    COL_VERTEX(4096, 0, -1663),\n    COL_VERTEX(2688, 0, -5247),\n    COL_VERTEX(2688, 0, -6015),\n    COL_VERTEX(3072, 0, -6399),\n    COL_VERTEX(3072, 307, -6399),\n    COL_VERTEX(4608, 0, -6399),\n    COL_VERTEX(4992, 0, -6015),\n    COL_VERTEX(4992, 0, -5247),\n    COL_VERTEX(4608, 0, -4863),\n    COL_VERTEX(3072, 0, -4863),\n    COL_VERTEX(-3839, 307, 3328),\n    COL_VERTEX(6016, 0, 7552),\n    COL_VERTEX(6272, 512, 7552),\n    COL_VERTEX(6656, 153, 7552),\n    COL_VERTEX(6912, 0, 7552),\n    COL_VERTEX(6016, 0, 7040),\n    COL_VERTEX(6912, 0, 7040),\n    COL_VERTEX(6656, 153, 7040),\n    COL_VERTEX(3072, 256, 7552),\n    COL_VERTEX(3328, 0, 7552),\n    COL_VERTEX(3328, 256, 7552),\n    COL_VERTEX(3328, 0, 8192),\n    COL_VERTEX(2816, 0, 8192),\n    COL_VERTEX(2816, 0, 4608),\n    COL_VERTEX(3712, 563, 4992),\n    COL_VERTEX(4352, 0, 4992),\n    COL_VERTEX(3712, 0, 4992),\n    COL_VERTEX(3072, 563, 5504),\n    COL_VERTEX(3712, 563, 5504),\n    COL_VERTEX(-767, 0, -5055),\n    COL_VERTEX(768, 0, -5055),\n    COL_VERTEX(-767, 307, -3647),\n    COL_VERTEX(768, 0, -3647),\n    COL_VERTEX(-767, 0, -3647),\n    COL_VERTEX(384, 0, -6207),\n    COL_VERTEX(-383, 768, -7231),\n    COL_VERTEX(384, 768, -6207),\n    COL_VERTEX(-511, 0, -6335),\n    COL_VERTEX(-511, 768, -6335),\n    COL_VERTEX(512, 0, -7103),\n    COL_VERTEX(512, 768, -7103),\n    COL_VERTEX(-383, 0, -7231),\n    COL_VERTEX(-4095, 154, 6528),\n    COL_VERTEX(-3583, 154, 6528),\n    COL_VERTEX(-3583, 0, 6528),\n    COL_VERTEX(-2303, 0, 6528),\n    COL_VERTEX(-2303, 154, 6016),\n    COL_VERTEX(-3583, 0, 6016),\n    COL_VERTEX(-4095, 0, 6016),\n    COL_VERTEX(-4095, 0, 6528),\n    COL_VERTEX(256, 154, 4096),\n    COL_VERTEX(-255, 230, 4224),\n    COL_VERTEX(256, 154, 4224),\n    COL_VERTEX(-255, 154, 4224),\n    COL_VERTEX(-1663, 0, 6016),\n    COL_VERTEX(-1663, 154, 6528),\n    COL_VERTEX(-4607, 154, 492),\n    COL_VERTEX(-4115, 154, 492),\n    COL_VERTEX(-4115, 154, 0),\n    COL_VERTEX(1280, 154, 6656),\n    COL_VERTEX(1280, 0, 6656),\n    COL_VERTEX(896, 154, 5760),\n    COL_VERTEX(1536, 0, 6400),\n    COL_VERTEX(1536, 0, 6016),\n    COL_VERTEX(896, 154, 6656),\n    COL_VERTEX(640, 0, 6144),\n    COL_VERTEX(640, 154, 6144),\n    COL_VERTEX(640, 0, 6016),\n    COL_VERTEX(896, 0, 5760),\n    COL_VERTEX(1280, 0, 5760),\n    COL_VERTEX(-5887, 154, 6224),\n    COL_VERTEX(-5513, 154, 6872),\n    COL_VERTEX(7030, 154, -3287),\n    COL_VERTEX(6656, 154, -3503),\n    COL_VERTEX(7030, 154, -2855),\n    COL_VERTEX(6282, 154, -3287),\n    COL_VERTEX(-2759, 166, 435),\n    COL_VERTEX(-2722, 403, 550),\n    COL_VERTEX(-2667, 554, 718),\n    COL_VERTEX(-2568, 640, 1023),\n    COL_VERTEX(-2469, 554, 1327),\n    COL_VERTEX(-2408, 376, 1515),\n    COL_VERTEX(-2377, 166, 1611),\n    COL_VERTEX(-2081, 640, 864),\n    COL_VERTEX(-7179, 129, 4092),\n    COL_VERTEX(-6665, 257, 4982),\n    COL_VERTEX(-7042, 257, 4606),\n    COL_VERTEX(-6151, 129, 5120),\n    COL_VERTEX(-6151, 129, -7175),\n    COL_VERTEX(-7042, 257, -6661),\n    COL_VERTEX(-6665, 257, -7037),\n    COL_VERTEX(-7179, 129, -6147),\n    COL_VERTEX(-2567, 129, -2567),\n    COL_VERTEX(-3458, 257, -2053),\n    COL_VERTEX(-3081, 257, -2429),\n    COL_VERTEX(-3595, 129, -1539),\n    COL_VERTEX(5698, 166, -6833),\n    COL_VERTEX(5784, 403, -6748),\n    COL_VERTEX(5909, 554, -6622),\n    COL_VERTEX(6135, 640, -6396),\n    COL_VERTEX(6362, 554, -6170),\n    COL_VERTEX(6501, 376, -6030),\n    COL_VERTEX(6572, 166, -5959),\n    COL_VERTEX(6497, 640, -6758),\n    COL_VERTEX(-4095, 307, 3968),\n    COL_VERTEX(-4479, 307, 3968),\n    COL_VERTEX(-5119, 154, 3968),\n    COL_VERTEX(-5119, 154, 2944),\n    COL_VERTEX(1536, 307, 3968),\n    COL_VERTEX(1280, 307, 3584),\n    COL_VERTEX(1280, 307, 3840),\n    COL_VERTEX(1536, 154, 2944),\n    COL_VERTEX(1536, 307, 3840),\n    COL_VERTEX(2560, 154, 2944),\n    COL_VERTEX(2560, 307, 3968),\n    COL_VERTEX(5760, 307, 1920),\n    COL_VERTEX(6144, 307, 1920),\n    COL_VERTEX(5120, 154, 1920),\n    COL_VERTEX(5120, 154, 896),\n    COL_VERTEX(256, 154, 6016),\n    COL_VERTEX(-383, 154, 6144),\n    COL_VERTEX(256, 154, 6528),\n    COL_VERTEX(384, 154, 6400),\n    COL_VERTEX(-255, 154, 6528),\n    COL_VERTEX(-383, 154, 6400),\n    COL_VERTEX(-1151, 154, 6016),\n    COL_VERTEX(-1151, 0, 6016),\n    COL_VERTEX(-255, 0, 4224),\n    COL_VERTEX(256, 230, 4224),\n    COL_VERTEX(-255, 230, 4096),\n    COL_VERTEX(-383, 0, 6400),\n    COL_VERTEX(640, 154, 6016),\n    COL_VERTEX(-5503, 307, -1151),\n    COL_VERTEX(-5375, 307, -1023),\n    COL_VERTEX(-5503, 307, -2943),\n    COL_VERTEX(-4863, 307, -1023),\n    COL_VERTEX(-4735, 307, -2943),\n    COL_VERTEX(-4863, 307, -3071),\n    COL_VERTEX(-4735, 307, -1151),\n    COL_VERTEX(640, 154, 6400),\n    COL_VERTEX(-4863, 0, -1023),\n    COL_VERTEX(-2559, 307, 4224),\n    COL_VERTEX(-2559, 307, 2688),\n    COL_VERTEX(-3839, 307, 2688),\n    COL_VERTEX(-3071, 307, 4224),\n    COL_VERTEX(-3327, 307, 2688),\n    COL_VERTEX(-2559, 307, 3840),\n    COL_VERTEX(-2303, 307, 3968),\n    COL_VERTEX(-2380, 410, 3968),\n    COL_VERTEX(-2303, 0, 3968),\n    COL_VERTEX(-2559, 0, 3968),\n    COL_VERTEX(-2380, 410, 3456),\n    COL_VERTEX(-2303, 307, 3456),\n    COL_VERTEX(-2559, 307, 3328),\n    COL_VERTEX(-2303, 0, 3456),\n    COL_VERTEX(-2559, 0, 3456),\n    COL_VERTEX(-1458, 410, 3968),\n    COL_VERTEX(-1535, 307, 3840),\n    COL_VERTEX(-1279, 0, 3840),\n    COL_VERTEX(-1279, 307, 3968),\n    COL_VERTEX(-1535, 307, 3328),\n    COL_VERTEX(-1279, 307, 3456),\n    COL_VERTEX(-1458, 410, 3456),\n    COL_VERTEX(-1535, 0, 3328),\n    COL_VERTEX(-1023, 307, 4096),\n    COL_VERTEX(1280, 307, 3456),\n    COL_VERTEX(1280, 307, 3968),\n    COL_VERTEX(1024, 307, 4096),\n    COL_VERTEX(1024, 307, 3328),\n    COL_VERTEX(6400, 307, 1152),\n    COL_VERTEX(7424, 307, 640),\n    COL_VERTEX(7936, 307, 1152),\n    COL_VERTEX(6912, 307, 2176),\n    COL_VERTEX(7424, 307, 2176),\n    COL_VERTEX(7936, 307, 1664),\n    COL_VERTEX(6400, 307, 1664),\n    COL_VERTEX(4864, 154, 0),\n    COL_VERTEX(4608, 154, -1151),\n    COL_VERTEX(5248, 154, 0),\n    COL_VERTEX(5120, 154, -383),\n    COL_VERTEX(4992, 154, -767),\n    COL_VERTEX(5632, 154, -1151),\n    COL_VERTEX(5504, 154, -383),\n    COL_VERTEX(5248, 154, -1535),\n    COL_VERTEX(5504, 154, 640),\n    COL_VERTEX(4096, 154, 384),\n    COL_VERTEX(4096, 154, 768),\n    COL_VERTEX(4480, 154, -1663),\n    COL_VERTEX(4096, 154, -1663),\n    COL_VERTEX(4096, 154, -2047),\n    COL_VERTEX(2688, 307, -6015),\n    COL_VERTEX(4608, 307, -6399),\n    COL_VERTEX(2688, 307, -5247),\n    COL_VERTEX(3072, 307, -4863),\n    COL_VERTEX(4992, 307, -6015),\n    COL_VERTEX(4992, 307, -5247),\n    COL_VERTEX(4608, 307, -4863),\n    COL_VERTEX(-4095, 307, 3584),\n    COL_VERTEX(-3839, 307, 3584),\n    COL_VERTEX(-4095, 307, 3328),\n    COL_VERTEX(6016, 512, 7552),\n    COL_VERTEX(6016, 512, 7040),\n    COL_VERTEX(6272, 512, 7040),\n    COL_VERTEX(6912, 154, 7552),\n    COL_VERTEX(6912, 154, 7040),\n    COL_VERTEX(3072, 0, 7552),\n    COL_VERTEX(3328, 256, 8192),\n    COL_VERTEX(4352, 563, 4992),\n    COL_VERTEX(3712, 0, 5504),\n    COL_VERTEX(3072, 0, 5504),\n    COL_VERTEX(768, 307, -5055),\n    COL_VERTEX(768, 307, -3647),\n    COL_VERTEX(-767, 307, -5055),\n    COL_VERTEX(512, 768, -6335),\n    COL_VERTEX(-383, 768, -6207),\n    COL_VERTEX(-383, 0, -6207),\n    COL_VERTEX(512, 0, -6335),\n    COL_VERTEX(-511, 0, -7103),\n    COL_VERTEX(-511, 768, -7103),\n    COL_VERTEX(384, 768, -7231),\n    COL_VERTEX(384, 0, -7231),\n    COL_VERTEX(-3583, 154, 6016),\n    COL_VERTEX(-2303, 154, 6528),\n    COL_VERTEX(-2303, 0, 6016),\n    COL_VERTEX(-4095, 154, 6016),\n    COL_VERTEX(256, 230, 4096),\n    COL_VERTEX(-255, 154, 4096),\n    COL_VERTEX(-1663, 154, 6016),\n    COL_VERTEX(-1663, 0, 6528),\n    COL_VERTEX(-4115, 0, 492),\n    COL_VERTEX(-4115, 0, 0),\n    COL_VERTEX(-4607, 0, 492),\n    COL_VERTEX(1536, 154, 6400),\n    COL_VERTEX(896, 0, 6656),\n    COL_VERTEX(1536, 154, 6016),\n    COL_VERTEX(1280, 154, 5760),\n    COL_VERTEX(-5513, 154, 6440),\n    COL_VERTEX(-5887, 154, 7088),\n    COL_VERTEX(-6261, 154, 6872),\n    COL_VERTEX(-6261, 154, 6440),\n    COL_VERTEX(6656, 154, -2639),\n    COL_VERTEX(6282, 154, -2855),\n    COL_VERTEX(-2272, 166, 276),\n    COL_VERTEX(-2235, 403, 391),\n    COL_VERTEX(-2180, 554, 560),\n    COL_VERTEX(-1982, 554, 1169),\n    COL_VERTEX(-1921, 376, 1357),\n    COL_VERTEX(-1890, 166, 1452),\n    COL_VERTEX(6060, 166, -7195),\n    COL_VERTEX(6146, 403, -7110),\n    COL_VERTEX(6271, 554, -6984),\n    COL_VERTEX(6724, 554, -6532),\n    COL_VERTEX(6863, 376, -6392),\n    COL_VERTEX(6934, 166, -6321),\n    COL_TRI_INIT(SURFACE_DEFAULT, 622),\n    COL_TRI(142, 143, 144),\n    COL_TRI(48, 49, 50),\n    COL_TRI(48, 50, 51),\n    COL_TRI(134, 135, 136),\n    COL_TRI(136, 137, 138),\n    COL_TRI(136, 135, 137),\n    COL_TRI(135, 139, 137),\n    COL_TRI(138, 137, 139),\n    COL_TRI(138, 139, 140),\n    COL_TRI(135, 141, 139),\n    COL_TRI(134, 141, 135),\n    COL_TRI(140, 139, 141),\n    COL_TRI(140, 141, 134),\n    COL_TRI(142, 145, 146),\n    COL_TRI(147, 145, 142),\n    COL_TRI(148, 143, 146),\n    COL_TRI(149, 146, 145),\n    COL_TRI(149, 148, 146),\n    COL_TRI(142, 146, 143),\n    COL_TRI(148, 150, 143),\n    COL_TRI(150, 151, 143),\n    COL_TRI(143, 151, 144),\n    COL_TRI(150, 153, 151),\n    COL_TRI(152, 153, 150),\n    COL_TRI(152, 150, 147),\n    COL_TRI(150, 148, 147),\n    COL_TRI(148, 149, 147),\n    COL_TRI(147, 149, 145),\n    COL_TRI(144, 151, 153),\n    COL_TRI(144, 153, 152),\n    COL_TRI(154, 158, 161),\n    COL_TRI(154, 377, 378),\n    COL_TRI(154, 378, 158),\n    COL_TRI(156, 378, 377),\n    COL_TRI(156, 157, 378),\n    COL_TRI(157, 158, 378),\n    COL_TRI(158, 379, 161),\n    COL_TRI(157, 159, 158),\n    COL_TRI(159, 379, 158),\n    COL_TRI(159, 157, 155),\n    COL_TRI(160, 380, 159),\n    COL_TRI(160, 159, 155),\n    COL_TRI(159, 380, 379),\n    COL_TRI(157, 156, 155),\n    COL_TRI(155, 377, 154),\n    COL_TRI(155, 156, 377),\n    COL_TRI(161, 379, 380),\n    COL_TRI(161, 380, 160),\n    COL_TRI(162, 164, 167),\n    COL_TRI(162, 167, 169),\n    COL_TRI(163, 381, 162),\n    COL_TRI(164, 382, 383),\n    COL_TRI(164, 383, 385),\n    COL_TRI(165, 164, 381),\n    COL_TRI(165, 167, 164),\n    COL_TRI(162, 381, 164),\n    COL_TRI(165, 166, 167),\n    COL_TRI(166, 384, 167),\n    COL_TRI(167, 384, 169),\n    COL_TRI(166, 386, 384),\n    COL_TRI(166, 165, 163),\n    COL_TRI(168, 386, 166),\n    COL_TRI(168, 166, 163),\n    COL_TRI(169, 384, 386),\n    COL_TRI(169, 386, 168),\n    COL_TRI(165, 381, 387),\n    COL_TRI(165, 387, 163),\n    COL_TRI(163, 387, 381),\n    COL_TRI(170, 388, 175),\n    COL_TRI(171, 389, 170),\n    COL_TRI(170, 389, 388),\n    COL_TRI(170, 175, 177),\n    COL_TRI(172, 388, 389),\n    COL_TRI(172, 173, 388),\n    COL_TRI(173, 175, 388),\n    COL_TRI(173, 174, 175),\n    COL_TRI(174, 390, 175),\n    COL_TRI(175, 390, 177),\n    COL_TRI(174, 173, 171),\n    COL_TRI(173, 172, 171),\n    COL_TRI(171, 172, 389),\n    COL_TRI(178, 394, 395),\n    COL_TRI(176, 391, 174),\n    COL_TRI(176, 174, 171),\n    COL_TRI(174, 391, 390),\n    COL_TRI(177, 390, 391),\n    COL_TRI(177, 391, 176),\n    COL_TRI(178, 325, 326),\n    COL_TRI(178, 392, 325),\n    COL_TRI(179, 178, 326),\n    COL_TRI(180, 393, 178),\n    COL_TRI(180, 178, 179),\n    COL_TRI(186, 396, 187),\n    COL_TRI(178, 395, 183),\n    COL_TRI(178, 183, 392),\n    COL_TRI(181, 183, 182),\n    COL_TRI(182, 183, 185),\n    COL_TRI(183, 395, 185),\n    COL_TRI(181, 392, 183),\n    COL_TRI(184, 392, 181),\n    COL_TRI(184, 325, 392),\n    COL_TRI(185, 395, 394),\n    COL_TRI(178, 396, 394),\n    COL_TRI(186, 394, 396),\n    COL_TRI(185, 394, 186),\n    COL_TRI(178, 397, 396),\n    COL_TRI(187, 396, 397),\n    COL_TRI(182, 339, 338),\n    COL_TRI(188, 397, 393),\n    COL_TRI(189, 403, 397),\n    COL_TRI(189, 397, 188),\n    COL_TRI(178, 393, 397),\n    COL_TRI(187, 397, 403),\n    COL_TRI(180, 398, 393),\n    COL_TRI(188, 393, 398),\n    COL_TRI(182, 183, 339),\n    COL_TRI(190, 395, 185),\n    COL_TRI(180, 399, 398),\n    COL_TRI(179, 326, 400),\n    COL_TRI(191, 405, 406),\n    COL_TRI(191, 407, 405),\n    COL_TRI(191, 406, 408),\n    COL_TRI(191, 409, 410),\n    COL_TRI(191, 411, 409),\n    COL_TRI(191, 408, 411),\n    COL_TRI(194, 409, 195),\n    COL_TRI(194, 410, 409),\n    COL_TRI(195, 409, 411),\n    COL_TRI(192, 191, 410),\n    COL_TRI(192, 410, 194),\n    COL_TRI(195, 411, 196),\n    COL_TRI(196, 411, 408),\n    COL_TRI(196, 408, 413),\n    COL_TRI(197, 406, 405),\n    COL_TRI(200, 416, 415),\n    COL_TRI(197, 405, 198),\n    COL_TRI(198, 405, 407),\n    COL_TRI(198, 407, 193),\n    COL_TRI(193, 407, 191),\n    COL_TRI(193, 191, 192),\n    COL_TRI(199, 414, 204),\n    COL_TRI(199, 204, 203),\n    COL_TRI(200, 415, 201),\n    COL_TRI(201, 415, 414),\n    COL_TRI(201, 414, 199),\n    COL_TRI(202, 414, 415),\n    COL_TRI(202, 417, 414),\n    COL_TRI(203, 204, 416),\n    COL_TRI(203, 416, 200),\n    COL_TRI(204, 418, 416),\n    COL_TRI(204, 205, 418),\n    COL_TRI(70, 68, 202),\n    COL_TRI(70, 202, 418),\n    COL_TRI(210, 422, 420),\n    COL_TRI(205, 417, 67),\n    COL_TRI(205, 67, 69),\n    COL_TRI(206, 419, 209),\n    COL_TRI(206, 209, 208),\n    COL_TRI(207, 419, 210),\n    COL_TRI(207, 209, 419),\n    COL_TRI(208, 209, 420),\n    COL_TRI(209, 421, 420),\n    COL_TRI(209, 207, 421),\n    COL_TRI(208, 420, 422),\n    COL_TRI(207, 210, 421),\n    COL_TRI(210, 420, 421),\n    COL_TRI(215, 428, 427),\n    COL_TRI(210, 423, 422),\n    COL_TRI(211, 212, 424),\n    COL_TRI(211, 424, 425),\n    COL_TRI(212, 211, 426),\n    COL_TRI(213, 211, 425),\n    COL_TRI(214, 426, 211),\n    COL_TRI(214, 211, 213),\n    COL_TRI(212, 426, 215),\n    COL_TRI(212, 215, 424),\n    COL_TRI(215, 425, 424),\n    COL_TRI(213, 425, 427),\n    COL_TRI(215, 427, 425),\n    COL_TRI(216, 217, 429),\n    COL_TRI(217, 216, 430),\n    COL_TRI(217, 227, 429),\n    COL_TRI(217, 430, 227),\n    COL_TRI(218, 430, 216),\n    COL_TRI(218, 216, 431),\n    COL_TRI(216, 429, 432),\n    COL_TRI(219, 430, 218),\n    COL_TRI(219, 227, 430),\n    COL_TRI(220, 221, 433),\n    COL_TRI(221, 220, 223),\n    COL_TRI(221, 434, 435),\n    COL_TRI(221, 223, 434),\n    COL_TRI(227, 432, 429),\n    COL_TRI(229, 436, 433),\n    COL_TRI(223, 225, 434),\n    COL_TRI(224, 434, 432),\n    COL_TRI(225, 435, 434),\n    COL_TRI(223, 434, 224),\n    COL_TRI(226, 434, 223),\n    COL_TRI(226, 432, 434),\n    COL_TRI(225, 222, 435),\n    COL_TRI(222, 221, 435),\n    COL_TRI(223, 229, 225),\n    COL_TRI(223, 224, 230),\n    COL_TRI(220, 433, 436),\n    COL_TRI(229, 222, 225),\n    COL_TRI(229, 433, 222),\n    COL_TRI(222, 433, 221),\n    COL_TRI(227, 219, 226),\n    COL_TRI(227, 226, 432),\n    COL_TRI(224, 432, 437),\n    COL_TRI(228, 432, 226),\n    COL_TRI(228, 437, 432),\n    COL_TRI(224, 438, 441),\n    COL_TRI(224, 439, 438),\n    COL_TRI(224, 440, 439),\n    COL_TRI(224, 437, 440),\n    COL_TRI(230, 224, 441),\n    COL_TRI(231, 438, 439),\n    COL_TRI(232, 438, 231),\n    COL_TRI(232, 441, 438),\n    COL_TRI(230, 441, 232),\n    COL_TRI(233, 439, 440),\n    COL_TRI(231, 439, 233),\n    COL_TRI(233, 440, 234),\n    COL_TRI(234, 440, 437),\n    COL_TRI(234, 437, 228),\n    COL_TRI(235, 442, 237),\n    COL_TRI(235, 237, 236),\n    COL_TRI(236, 237, 443),\n    COL_TRI(237, 444, 443),\n    COL_TRI(237, 445, 446),\n    COL_TRI(237, 448, 445),\n    COL_TRI(238, 444, 447),\n    COL_TRI(239, 444, 238),\n    COL_TRI(239, 443, 444),\n    COL_TRI(237, 447, 444),\n    COL_TRI(236, 443, 239),\n    COL_TRI(240, 447, 446),\n    COL_TRI(238, 447, 240),\n    COL_TRI(237, 446, 447),\n    COL_TRI(241, 446, 445),\n    COL_TRI(240, 446, 241),\n    COL_TRI(242, 445, 448),\n    COL_TRI(241, 445, 242),\n    COL_TRI(248, 247, 246),\n    COL_TRI(242, 448, 243),\n    COL_TRI(243, 448, 442),\n    COL_TRI(237, 442, 448),\n    COL_TRI(243, 442, 235),\n    COL_TRI(244, 449, 246),\n    COL_TRI(244, 246, 245),\n    COL_TRI(245, 246, 450),\n    COL_TRI(246, 449, 451),\n    COL_TRI(246, 451, 254),\n    COL_TRI(247, 450, 246),\n    COL_TRI(249, 453, 250),\n    COL_TRI(249, 248, 453),\n    COL_TRI(250, 453, 452),\n    COL_TRI(246, 453, 248),\n    COL_TRI(246, 452, 453),\n    COL_TRI(248, 454, 259),\n    COL_TRI(251, 248, 249),\n    COL_TRI(251, 454, 248),\n    COL_TRI(248, 259, 247),\n    COL_TRI(250, 452, 252),\n    COL_TRI(252, 452, 455),\n    COL_TRI(253, 455, 452),\n    COL_TRI(254, 253, 452),\n    COL_TRI(246, 254, 452),\n    COL_TRI(255, 262, 254),\n    COL_TRI(256, 254, 451),\n    COL_TRI(255, 254, 256),\n    COL_TRI(254, 262, 253),\n    COL_TRI(257, 247, 258),\n    COL_TRI(257, 450, 247),\n    COL_TRI(258, 247, 456),\n    COL_TRI(259, 456, 247),\n    COL_TRI(259, 267, 456),\n    COL_TRI(260, 259, 454),\n    COL_TRI(267, 460, 456),\n    COL_TRI(262, 457, 253),\n    COL_TRI(263, 455, 253),\n    COL_TRI(264, 253, 457),\n    COL_TRI(263, 253, 264),\n    COL_TRI(262, 458, 459),\n    COL_TRI(262, 459, 457),\n    COL_TRI(265, 262, 255),\n    COL_TRI(265, 458, 262),\n    COL_TRI(266, 456, 460),\n    COL_TRI(258, 456, 266),\n    COL_TRI(261, 259, 260),\n    COL_TRI(267, 461, 460),\n    COL_TRI(267, 462, 461),\n    COL_TRI(268, 267, 261),\n    COL_TRI(268, 462, 267),\n    COL_TRI(261, 267, 259),\n    COL_TRI(260, 454, 251),\n    COL_TRI(252, 455, 263),\n    COL_TRI(245, 450, 257),\n    COL_TRI(269, 457, 459),\n    COL_TRI(264, 457, 269),\n    COL_TRI(270, 459, 458),\n    COL_TRI(269, 459, 270),\n    COL_TRI(270, 458, 265),\n    COL_TRI(271, 451, 449),\n    COL_TRI(256, 451, 271),\n    COL_TRI(271, 449, 244),\n    COL_TRI(272, 460, 461),\n    COL_TRI(266, 460, 272),\n    COL_TRI(272, 461, 273),\n    COL_TRI(273, 461, 462),\n    COL_TRI(273, 462, 268),\n    COL_TRI(274, 463, 275),\n    COL_TRI(275, 463, 277),\n    COL_TRI(275, 277, 276),\n    COL_TRI(276, 277, 464),\n    COL_TRI(277, 463, 465),\n    COL_TRI(277, 465, 466),\n    COL_TRI(274, 465, 463),\n    COL_TRI(277, 467, 464),\n    COL_TRI(277, 468, 467),\n    COL_TRI(277, 469, 468),\n    COL_TRI(276, 464, 278),\n    COL_TRI(278, 467, 279),\n    COL_TRI(278, 464, 467),\n    COL_TRI(279, 467, 468),\n    COL_TRI(280, 468, 469),\n    COL_TRI(279, 468, 280),\n    COL_TRI(277, 466, 469),\n    COL_TRI(281, 469, 466),\n    COL_TRI(280, 469, 281),\n    COL_TRI(281, 466, 282),\n    COL_TRI(282, 466, 465),\n    COL_TRI(282, 465, 274),\n    COL_TRI(283, 470, 471),\n    COL_TRI(283, 472, 470),\n    COL_TRI(284, 473, 474),\n    COL_TRI(284, 474, 288),\n    COL_TRI(285, 473, 284),\n    COL_TRI(286, 285, 284),\n    COL_TRI(287, 286, 284),\n    COL_TRI(291, 292, 478),\n    COL_TRI(288, 474, 475),\n    COL_TRI(288, 290, 289),\n    COL_TRI(288, 475, 290),\n    COL_TRI(289, 477, 476),\n    COL_TRI(289, 476, 287),\n    COL_TRI(290, 477, 289),\n    COL_TRI(287, 476, 286),\n    COL_TRI(291, 293, 292),\n    COL_TRI(296, 6, 9),\n    COL_TRI(292, 293, 479),\n    COL_TRI(293, 12, 13),\n    COL_TRI(293, 13, 479),\n    COL_TRI(292, 479, 294),\n    COL_TRI(294, 13, 295),\n    COL_TRI(294, 479, 13),\n    COL_TRI(295, 12, 296),\n    COL_TRI(295, 13, 12),\n    COL_TRI(9, 6, 480),\n    COL_TRI(9, 480, 298),\n    COL_TRI(7, 5, 296),\n    COL_TRI(6, 5, 7),\n    COL_TRI(297, 480, 6),\n    COL_TRI(297, 6, 7),\n    COL_TRI(296, 5, 6),\n    COL_TRI(298, 480, 297),\n    COL_TRI(298, 297, 299),\n    COL_TRI(7, 301, 297),\n    COL_TRI(299, 297, 301),\n    COL_TRI(299, 301, 481),\n    COL_TRI(300, 291, 478),\n    COL_TRI(300, 478, 482),\n    COL_TRI(301, 300, 482),\n    COL_TRI(7, 291, 300),\n    COL_TRI(301, 482, 481),\n    COL_TRI(307, 486, 309),\n    COL_TRI(7, 12, 291),\n    COL_TRI(12, 7, 296),\n    COL_TRI(302, 483, 303),\n    COL_TRI(303, 483, 484),\n    COL_TRI(303, 484, 305),\n    COL_TRI(304, 484, 483),\n    COL_TRI(304, 483, 485),\n    COL_TRI(302, 485, 483),\n    COL_TRI(305, 484, 304),\n    COL_TRI(305, 304, 306),\n    COL_TRI(306, 485, 302),\n    COL_TRI(306, 304, 485),\n    COL_TRI(308, 309, 486),\n    COL_TRI(308, 487, 309),\n    COL_TRI(309, 487, 488),\n    COL_TRI(308, 311, 487),\n    COL_TRI(310, 488, 487),\n    COL_TRI(310, 487, 311),\n    COL_TRI(309, 488, 307),\n    COL_TRI(307, 489, 486),\n    COL_TRI(311, 490, 310),\n    COL_TRI(311, 491, 490),\n    COL_TRI(308, 491, 311),\n    COL_TRI(312, 492, 313),\n    COL_TRI(308, 486, 313),\n    COL_TRI(308, 313, 492),\n    COL_TRI(313, 489, 312),\n    COL_TRI(313, 486, 489),\n    COL_TRI(312, 493, 492),\n    COL_TRI(308, 492, 493),\n    COL_TRI(314, 491, 308),\n    COL_TRI(308, 493, 314),\n    COL_TRI(314, 490, 491),\n    COL_TRI(315, 316, 494),\n    COL_TRI(316, 495, 319),\n    COL_TRI(317, 316, 315),\n    COL_TRI(316, 319, 494),\n    COL_TRI(318, 495, 316),\n    COL_TRI(318, 316, 317),\n    COL_TRI(319, 495, 318),\n    COL_TRI(323, 498, 401),\n    COL_TRI(319, 318, 496),\n    COL_TRI(320, 494, 319),\n    COL_TRI(320, 319, 496),\n    COL_TRI(315, 494, 497),\n    COL_TRI(321, 497, 494),\n    COL_TRI(321, 494, 320),\n    COL_TRI(317, 315, 322),\n    COL_TRI(322, 315, 497),\n    COL_TRI(322, 497, 321),\n    COL_TRI(323, 401, 325),\n    COL_TRI(328, 398, 500),\n    COL_TRI(324, 498, 402),\n    COL_TRI(324, 401, 498),\n    COL_TRI(325, 401, 324),\n    COL_TRI(325, 324, 326),\n    COL_TRI(326, 324, 402),\n    COL_TRI(326, 402, 499),\n    COL_TRI(327, 500, 398),\n    COL_TRI(327, 398, 399),\n    COL_TRI(327, 501, 328),\n    COL_TRI(327, 328, 500),\n    COL_TRI(151, 144, 504),\n    COL_TRI(189, 328, 501),\n    COL_TRI(189, 188, 328),\n    COL_TRI(328, 188, 398),\n    COL_TRI(329, 502, 330),\n    COL_TRI(330, 503, 331),\n    COL_TRI(330, 502, 503),\n    COL_TRI(331, 329, 330),\n    COL_TRI(329, 504, 502),\n    COL_TRI(331, 503, 144),\n    COL_TRI(331, 144, 151),\n    COL_TRI(331, 151, 329),\n    COL_TRI(151, 504, 329),\n    COL_TRI(332, 333, 335),\n    COL_TRI(333, 332, 337),\n    COL_TRI(334, 332, 505),\n    COL_TRI(334, 337, 332),\n    COL_TRI(335, 505, 332),\n    COL_TRI(333, 337, 506),\n    COL_TRI(336, 505, 335),\n    COL_TRI(337, 190, 506),\n    COL_TRI(337, 412, 190),\n    COL_TRI(334, 412, 337),\n    COL_TRI(190, 412, 395),\n    COL_TRI(338, 404, 340),\n    COL_TRI(340, 404, 334),\n    COL_TRI(334, 404, 412),\n    COL_TRI(342, 508, 507),\n    COL_TRI(338, 339, 404),\n    COL_TRI(339, 183, 395),\n    COL_TRI(339, 395, 412),\n    COL_TRI(340, 334, 341),\n    COL_TRI(341, 334, 508),\n    COL_TRI(334, 505, 507),\n    COL_TRI(334, 507, 508),\n    COL_TRI(341, 508, 342),\n    COL_TRI(342, 507, 336),\n    COL_TRI(336, 507, 505),\n    COL_TRI(101, 509, 83),\n    COL_TRI(83, 344, 81),\n    COL_TRI(83, 509, 344),\n    COL_TRI(343, 344, 509),\n    COL_TRI(101, 343, 509),\n    COL_TRI(343, 510, 344),\n    COL_TRI(344, 510, 82),\n    COL_TRI(81, 344, 82),\n    COL_TRI(343, 511, 510),\n    COL_TRI(82, 510, 511),\n    COL_TRI(346, 347, 345),\n    COL_TRI(82, 511, 99),\n    COL_TRI(343, 512, 511),\n    COL_TRI(99, 511, 512),\n    COL_TRI(99, 512, 100),\n    COL_TRI(100, 512, 343),\n    COL_TRI(100, 343, 101),\n    COL_TRI(345, 347, 87),\n    COL_TRI(123, 345, 87),\n    COL_TRI(94, 346, 345),\n    COL_TRI(94, 345, 123),\n    COL_TRI(87, 347, 86),\n    COL_TRI(347, 513, 86),\n    COL_TRI(346, 513, 347),\n    COL_TRI(86, 513, 514),\n    COL_TRI(346, 514, 513),\n    COL_TRI(86, 514, 93),\n    COL_TRI(93, 514, 348),\n    COL_TRI(346, 348, 514),\n    COL_TRI(93, 348, 95),\n    COL_TRI(348, 346, 94),\n    COL_TRI(95, 348, 94),\n    COL_TRI(349, 75, 80),\n    COL_TRI(349, 80, 355),\n    COL_TRI(349, 355, 354),\n    COL_TRI(351, 516, 350),\n    COL_TRI(349, 354, 353),\n    COL_TRI(349, 353, 352),\n    COL_TRI(349, 352, 351),\n    COL_TRI(349, 351, 350),\n    COL_TRI(349, 72, 75),\n    COL_TRI(350, 515, 349),\n    COL_TRI(349, 515, 72),\n    COL_TRI(350, 516, 515),\n    COL_TRI(80, 77, 520),\n    COL_TRI(351, 517, 516),\n    COL_TRI(352, 517, 351),\n    COL_TRI(352, 356, 517),\n    COL_TRI(353, 356, 352),\n    COL_TRI(353, 518, 356),\n    COL_TRI(354, 518, 353),\n    COL_TRI(354, 519, 518),\n    COL_TRI(355, 519, 354),\n    COL_TRI(355, 520, 519),\n    COL_TRI(80, 520, 355),\n    COL_TRI(102, 110, 357),\n    COL_TRI(356, 520, 77),\n    COL_TRI(77, 72, 515),\n    COL_TRI(77, 515, 516),\n    COL_TRI(77, 516, 517),\n    COL_TRI(77, 517, 356),\n    COL_TRI(356, 519, 520),\n    COL_TRI(356, 518, 519),\n    COL_TRI(102, 357, 114),\n    COL_TRI(357, 110, 126),\n    COL_TRI(357, 359, 114),\n    COL_TRI(357, 126, 359),\n    COL_TRI(358, 359, 126),\n    COL_TRI(358, 126, 127),\n    COL_TRI(359, 358, 113),\n    COL_TRI(359, 113, 114),\n    COL_TRI(358, 360, 129),\n    COL_TRI(358, 129, 130),\n    COL_TRI(358, 130, 113),\n    COL_TRI(360, 358, 127),\n    COL_TRI(360, 127, 128),\n    COL_TRI(360, 79, 129),\n    COL_TRI(360, 128, 79),\n    COL_TRI(89, 90, 361),\n    COL_TRI(90, 91, 361),\n    COL_TRI(361, 91, 121),\n    COL_TRI(361, 363, 116),\n    COL_TRI(89, 361, 116),\n    COL_TRI(361, 121, 363),\n    COL_TRI(362, 363, 121),\n    COL_TRI(362, 121, 122),\n    COL_TRI(363, 115, 116),\n    COL_TRI(363, 131, 115),\n    COL_TRI(363, 362, 131),\n    COL_TRI(362, 132, 131),\n    COL_TRI(362, 364, 132),\n    COL_TRI(364, 362, 122),\n    COL_TRI(364, 122, 120),\n    COL_TRI(364, 120, 112),\n    COL_TRI(364, 112, 133),\n    COL_TRI(364, 133, 132),\n    COL_TRI(88, 119, 365),\n    COL_TRI(109, 88, 365),\n    COL_TRI(365, 119, 118),\n    COL_TRI(365, 118, 367),\n    COL_TRI(365, 367, 108),\n    COL_TRI(109, 365, 108),\n    COL_TRI(369, 372, 371),\n    COL_TRI(366, 367, 118),\n    COL_TRI(366, 118, 117),\n    COL_TRI(367, 106, 107),\n    COL_TRI(367, 107, 108),\n    COL_TRI(367, 366, 106),\n    COL_TRI(368, 366, 117),\n    COL_TRI(366, 368, 105),\n    COL_TRI(366, 105, 106),\n    COL_TRI(368, 117, 111),\n    COL_TRI(368, 111, 103),\n    COL_TRI(368, 103, 104),\n    COL_TRI(368, 104, 105),\n    COL_TRI(369, 92, 125),\n    COL_TRI(369, 371, 370),\n    COL_TRI(369, 373, 372),\n    COL_TRI(369, 125, 98),\n    COL_TRI(369, 98, 375),\n    COL_TRI(369, 375, 374),\n    COL_TRI(369, 374, 373),\n    COL_TRI(370, 521, 369),\n    COL_TRI(369, 521, 92),\n    COL_TRI(375, 526, 525),\n    COL_TRI(370, 522, 521),\n    COL_TRI(371, 522, 370),\n    COL_TRI(371, 523, 522),\n    COL_TRI(372, 523, 371),\n    COL_TRI(372, 376, 523),\n    COL_TRI(373, 376, 372),\n    COL_TRI(373, 524, 376),\n    COL_TRI(374, 524, 373),\n    COL_TRI(374, 525, 524),\n    COL_TRI(375, 525, 374),\n    COL_TRI(376, 525, 526),\n    COL_TRI(98, 526, 375),\n    COL_TRI(98, 97, 526),\n    COL_TRI(376, 526, 97),\n    COL_TRI(97, 522, 523),\n    COL_TRI(97, 523, 376),\n    COL_TRI(97, 521, 522),\n    COL_TRI(97, 92, 521),\n    COL_TRI(376, 524, 525),\n    COL_TRI_INIT(SURFACE_BURNING, 82),\n    COL_TRI(77, 73, 41),\n    COL_TRI(41, 39, 72),\n    COL_TRI(73, 35, 41),\n    COL_TRI(74, 39, 37),\n    COL_TRI(75, 72, 76),\n    COL_TRI(72, 39, 76),\n    COL_TRI(77, 41, 72),\n    COL_TRI(29, 73, 78),\n    COL_TRI(79, 73, 76),\n    COL_TRI(73, 29, 35),\n    COL_TRI(85, 30, 29),\n    COL_TRI(85, 29, 78),\n    COL_TRI(85, 96, 123),\n    COL_TRI(85, 123, 87),\n    COL_TRI(86, 30, 85),\n    COL_TRI(87, 86, 85),\n    COL_TRI(74, 37, 30),\n    COL_TRI(93, 74, 30),\n    COL_TRI(88, 39, 74),\n    COL_TRI(89, 88, 74),\n    COL_TRI(90, 89, 74),\n    COL_TRI(91, 74, 124),\n    COL_TRI(91, 90, 74),\n    COL_TRI(92, 96, 74),\n    COL_TRI(92, 74, 125),\n    COL_TRI(93, 95, 74),\n    COL_TRI(94, 125, 74),\n    COL_TRI(95, 94, 74),\n    COL_TRI(73, 82, 84),\n    COL_TRI(81, 82, 73),\n    COL_TRI(96, 97, 123),\n    COL_TRI(97, 98, 123),\n    COL_TRI(98, 94, 123),\n    COL_TRI(94, 98, 125),\n    COL_TRI(92, 97, 96),\n    COL_TRI(86, 93, 30),\n    COL_TRI(82, 99, 84),\n    COL_TRI(100, 101, 79),\n    COL_TRI(84, 110, 76),\n    COL_TRI(84, 79, 128),\n    COL_TRI(84, 126, 110),\n    COL_TRI(84, 127, 126),\n    COL_TRI(84, 128, 127),\n    COL_TRI(99, 100, 84),\n    COL_TRI(100, 79, 84),\n    COL_TRI(83, 81, 73),\n    COL_TRI(101, 83, 79),\n    COL_TRI(83, 73, 79),\n    COL_TRI(108, 107, 39),\n    COL_TRI(73, 77, 80),\n    COL_TRI(73, 80, 76),\n    COL_TRI(102, 129, 79),\n    COL_TRI(102, 79, 76),\n    COL_TRI(80, 75, 76),\n    COL_TRI(103, 76, 39),\n    COL_TRI(104, 103, 39),\n    COL_TRI(105, 104, 39),\n    COL_TRI(106, 105, 39),\n    COL_TRI(107, 106, 39),\n    COL_TRI(115, 132, 133),\n    COL_TRI(110, 102, 76),\n    COL_TRI(111, 112, 76),\n    COL_TRI(111, 76, 103),\n    COL_TRI(112, 124, 76),\n    COL_TRI(102, 114, 129),\n    COL_TRI(113, 130, 129),\n    COL_TRI(114, 113, 129),\n    COL_TRI(115, 131, 132),\n    COL_TRI(122, 121, 124),\n    COL_TRI(117, 133, 112),\n    COL_TRI(117, 118, 133),\n    COL_TRI(116, 115, 133),\n    COL_TRI(118, 116, 133),\n    COL_TRI(118, 119, 116),\n    COL_TRI(119, 89, 116),\n    COL_TRI(119, 88, 89),\n    COL_TRI(111, 117, 112),\n    COL_TRI(112, 120, 124),\n    COL_TRI(120, 122, 124),\n    COL_TRI(121, 91, 124),\n    COL_TRI(88, 109, 39),\n    COL_TRI(109, 108, 39),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 6),\n    COL_TRI(477, 290, 286),\n    COL_TRI(477, 286, 476),\n    COL_TRI(290, 285, 286),\n    COL_TRI(290, 475, 285),\n    COL_TRI(475, 473, 285),\n    COL_TRI(475, 474, 473),\n    COL_TRI_INIT(SURFACE_WALL_MISC, 106),\n    COL_TRI(0, 1, 2),\n    COL_TRI(1, 0, 3),\n    COL_TRI(1, 3, 4),\n    COL_TRI(1, 5, 6),\n    COL_TRI(7, 5, 1),\n    COL_TRI(6, 2, 1),\n    COL_TRI(4, 7, 1),\n    COL_TRI(6, 8, 2),\n    COL_TRI(6, 9, 8),\n    COL_TRI(8, 10, 2),\n    COL_TRI(8, 11, 10),\n    COL_TRI(0, 2, 10),\n    COL_TRI(4, 12, 7),\n    COL_TRI(4, 13, 12),\n    COL_TRI(11, 0, 10),\n    COL_TRI(26, 55, 16),\n    COL_TRI(14, 53, 17),\n    COL_TRI(14, 54, 53),\n    COL_TRI(14, 17, 27),\n    COL_TRI(14, 27, 28),\n    COL_TRI(15, 14, 28),\n    COL_TRI(15, 54, 14),\n    COL_TRI(16, 55, 53),\n    COL_TRI(16, 53, 54),\n    COL_TRI(17, 26, 27),\n    COL_TRI(15, 56, 54),\n    COL_TRI(16, 54, 56),\n    COL_TRI(18, 21, 20),\n    COL_TRI(18, 57, 21),\n    COL_TRI(26, 16, 27),\n    COL_TRI(19, 59, 60),\n    COL_TRI(20, 21, 22),\n    COL_TRI(21, 59, 61),\n    COL_TRI(21, 60, 59),\n    COL_TRI(21, 57, 60),\n    COL_TRI(22, 21, 61),\n    COL_TRI(19, 20, 23),\n    COL_TRI(19, 18, 20),\n    COL_TRI(20, 22, 23),\n    COL_TRI(23, 22, 56),\n    COL_TRI(24, 56, 22),\n    COL_TRI(22, 61, 24),\n    COL_TRI(25, 23, 15),\n    COL_TRI(25, 19, 23),\n    COL_TRI(23, 56, 15),\n    COL_TRI(25, 61, 59),\n    COL_TRI(25, 59, 19),\n    COL_TRI(29, 34, 35),\n    COL_TRI(24, 16, 56),\n    COL_TRI(15, 28, 25),\n    COL_TRI(27, 16, 24),\n    COL_TRI(27, 24, 28),\n    COL_TRI(28, 24, 61),\n    COL_TRI(28, 61, 25),\n    COL_TRI(19, 58, 18),\n    COL_TRI(19, 60, 58),\n    COL_TRI(31, 33, 34),\n    COL_TRI(32, 31, 34),\n    COL_TRI(33, 36, 34),\n    COL_TRI(34, 36, 35),\n    COL_TRI(30, 34, 29),\n    COL_TRI(30, 32, 34),\n    COL_TRI(35, 42, 41),\n    COL_TRI(35, 36, 42),\n    COL_TRI(36, 44, 43),\n    COL_TRI(33, 44, 36),\n    COL_TRI(36, 43, 42),\n    COL_TRI(37, 32, 30),\n    COL_TRI(32, 40, 46),\n    COL_TRI(32, 46, 31),\n    COL_TRI(37, 40, 32),\n    COL_TRI(38, 40, 37),\n    COL_TRI(39, 38, 37),\n    COL_TRI(40, 38, 46),\n    COL_TRI(41, 42, 39),\n    COL_TRI(42, 38, 39),\n    COL_TRI(42, 45, 38),\n    COL_TRI(38, 45, 46),\n    COL_TRI(42, 43, 45),\n    COL_TRI(43, 62, 45),\n    COL_TRI(43, 63, 62),\n    COL_TRI(44, 63, 43),\n    COL_TRI(49, 67, 68),\n    COL_TRI(33, 64, 44),\n    COL_TRI(44, 64, 63),\n    COL_TRI(45, 62, 47),\n    COL_TRI(45, 47, 46),\n    COL_TRI(46, 47, 66),\n    COL_TRI(46, 66, 31),\n    COL_TRI(31, 65, 33),\n    COL_TRI(33, 65, 64),\n    COL_TRI(31, 66, 65),\n    COL_TRI(47, 63, 64),\n    COL_TRI(47, 64, 65),\n    COL_TRI(47, 65, 66),\n    COL_TRI(47, 62, 63),\n    COL_TRI(48, 67, 49),\n    COL_TRI(11, 52, 0),\n    COL_TRI(48, 69, 67),\n    COL_TRI(50, 68, 70),\n    COL_TRI(49, 68, 50),\n    COL_TRI(50, 70, 51),\n    COL_TRI(51, 69, 48),\n    COL_TRI(51, 70, 69),\n    COL_TRI(3, 0, 52),\n    COL_TRI(3, 52, 71),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(1),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_null_start, /*pos*/ -3839, 154, 6272, /*yaw*/ 64), // unused, probably an early way to set initial position\n    COL_END(),\n#endif\n};\n"
  },
  {
    "path": "levels/lll/areas/1/geo.inc.c",
    "content": "// 0x0E000E00\nconst GeoLayout lll_geo_000E00[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND(BACKGROUND_FLAMING_SKY, geo_skybox_main),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(64, 100, 20000, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(1, 0, 2000, 6000, 0, 0, -8192, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_070134E0),\n                    GEO_DISPLAY_LIST(LAYER_ALPHA, lll_seg7_dl_070138F8),\n                    GEO_DISPLAY_LIST(LAYER_ALPHA, lll_seg7_dl_070137C0),\n                    GEO_ASM(   0, geo_movtex_pause_control),\n                    GEO_ASM(0x2201, geo_movtex_draw_nocolor),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(  12, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/lll/areas/1/light.inc.c",
    "content": "// 0x0700FC00 - 0x0700FC18\nstatic const Lights1 lll_seg7_lights_0700FC00 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 lll_lights_unused1 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// Unreferenced light group\nUNUSED static const Lights1 lll_lights_unused2 = gdSPDefLights1(\n    0x3f, 0x00, 0x00,\n    0xff, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x0700FC48 - 0x0700FC60\nstatic const Lights1 lll_seg7_lights_0700FC48 = gdSPDefLights1(\n    0x19, 0x19, 0x19,\n    0x64, 0x64, 0x64, 0x28, 0x28, 0x28\n);\n\n// 0x0700FC60 - 0x0700FC78\nstatic const Lights1 lll_seg7_lights_0700FC60 = gdSPDefLights1(\n    0x32, 0x32, 0x32,\n    0xc8, 0xc8, 0xc8, 0x28, 0x28, 0x28\n);\n\n// 0x0700FC78 - 0x0700FC90\nstatic const Lights1 lll_seg7_lights_0700FC78 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n"
  },
  {
    "path": "levels/lll/areas/1/macro.inc.c",
    "content": "// 0x0701CE18 - 0x0701D018\nconst MacroObject lll_seg7_area_1_macro_objs[] = {\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -5800,   220,   250),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -5100,   220,   250),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -5100,   220,  1000),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -4400,   220,  1000),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -4400,   220,  1750),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -5100,   220,  1750),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -5800,   220,  1750),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -5800,   220,  1000),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/   0, /*pos*/ -3728,   154,  6057, /*bhvParam*/ DIALOG_068),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/ 315, /*pos*/  1350,   154,  5942, /*bhvParam*/ DIALOG_016),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal_flying, /*yaw*/   0, /*pos*/ -5760,   100,  3040),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_hidden_1up,                  /*yaw*/   0, /*pos*/ -5100,   540, -4070, /*bhvParam*/ 4),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,          /*yaw*/   0, /*pos*/ -5400,   320, -4070),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,          /*yaw*/   0, /*pos*/ -4800,   320, -4070),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,          /*yaw*/   0, /*pos*/ -5100,   320, -3770),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,          /*yaw*/   0, /*pos*/ -5100,   320, -4370),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal_flying, /*yaw*/  90, /*pos*/ -1920,    50, -4120),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/  3300,    50, -2692),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/  3330,    50, -3700),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/  4340,    50, -3700),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/  4340,    50, -2692),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/     0,   200,  1200),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/  1200,   200,     0),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/ -1200,   200,     0),\n    MACRO_OBJECT               (/*preset*/ macro_1up,                         /*yaw*/   0, /*pos*/     0,   307, -2085),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal_flying, /*yaw*/  90, /*pos*/  3000,    50,   520),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_horizontal,        /*yaw*/   0, /*pos*/  7160,   320,  1400),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_horizontal,        /*yaw*/   0, /*pos*/  3800,   320, -5600),\n    MACRO_OBJECT               (/*preset*/ macro_mr_i,                        /*yaw*/   0, /*pos*/  6673,   154, -3060),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_horizontal,        /*yaw*/   0, /*pos*/  6673,   154, -3060),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,        /*yaw*/  45, /*pos*/  6300,   755, -6580),\n    MACRO_OBJECT               (/*preset*/ macro_1up,                         /*yaw*/   0, /*pos*/  6326,   686, -6580),\n    MACRO_OBJECT               (/*preset*/ macro_1up,                         /*yaw*/   0, /*pos*/     0,    46, -7400),\n    MACRO_OBJECT               (/*preset*/ macro_1up,                         /*yaw*/   0, /*pos*/ -3133,   230, -2126),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,               /*yaw*/   0, /*pos*/ -3320,   161, -1860),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,               /*yaw*/   0, /*pos*/ -3346,    70, -1486),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,               /*yaw*/   0, /*pos*/ -2760,   113, -2260),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,               /*yaw*/   0, /*pos*/ -2440,    67, -2286),\n    MACRO_OBJECT               (/*preset*/ macro_1up,                         /*yaw*/   0, /*pos*/ -2333,   653,   886),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal_flying, /*yaw*/   0, /*pos*/ -1960,    38,  3693),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,               /*yaw*/   0, /*pos*/ -6966,    41,  3906),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,               /*yaw*/   0, /*pos*/ -6806,   188,  4653),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,               /*yaw*/   0, /*pos*/ -6033,    70,  4973),\n    MACRO_OBJECT               (/*preset*/ macro_1up,                         /*yaw*/   0, /*pos*/ -6780,   275, -6766),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/   0, /*pos*/ -3980,   154,  6057, /*bhvParam*/ DIALOG_086),\n    MACRO_OBJECT               (/*preset*/ macro_jumping_box,                 /*yaw*/   0, /*pos*/  4170,   154, -1940),\n    MACRO_OBJECT               (/*preset*/ macro_flamethrower,                /*yaw*/   0, /*pos*/  1400,   -20,  3720),\n    MACRO_OBJECT               (/*preset*/ macro_flamethrower,                /*yaw*/   0, /*pos*/  7100,   -20,  3420),\n    MACRO_OBJECT               (/*preset*/ macro_flamethrower,                /*yaw*/   0, /*pos*/  7300,   -20,  5160),\n    MACRO_OBJECT               (/*preset*/ macro_flamethrower,                /*yaw*/   0, /*pos*/  7100,   -20,  5700),\n    MACRO_OBJECT               (/*preset*/ macro_box_wing_cap,                /*yaw*/   0, /*pos*/ -5900,   460,  6400),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/lll/areas/2/1/model.inc.c",
    "content": "// 0x0701D7D0 - 0x0701D8C0\nstatic const Vtx lll_seg7_vertex_0701D7D0[] = {\n    {{{  -787,   1203,   2943}, 0, {  5078,   3874}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -787,   1818,   2943}, 0, {  5078,   1884}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -173,   1818,   2943}, 0, {  3086,   1884}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -173,   1203,   2943}, 0, {  3086,   3874}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   443,   2496,  -2449}, 0, {  1914,    470}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   315,   2490,  -2634}, 0, {  1500,    490}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   377,   2502,  -2663}, 0, {  1700,    452}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -353,   2391,  -2693}, 0, {  -664,    810}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -241,   2403,  -2634}, 0, {  -302,    772}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -223,   2391,  -2347}, 0, {  -244,    810}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   583,   2352,  -2942}, 0, {   324,    936}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   844,   2554,  -2742}, 0, {  1172,    282}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   774,   2554,  -2563}, 0, {   942,    282}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   661,   2554,  -2485}, 0, {   576,    282}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   788,   2554,  -2942}, 0, {   990,    282}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701D8C0 - 0x0701D9C0\nstatic const Vtx lll_seg7_vertex_0701D8C0[] = {\n    {{{   583,   2352,  -2942}, 0, {   324,    936}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   377,   2502,  -2663}, 0, {  -412,    470}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   583,   2554,  -2942}, 0, {   324,    282}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   443,   2496,  -2449}, 0, {  -128,    470}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   661,   2554,  -2485}, 0, {   576,    282}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -669,   2391,  -2500}, 0, {   352,    810}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -507,   2391,  -2942}, 0, {   878,    810}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -353,   2391,  -2693}, 0, {  1494,    810}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,   2391,  -2942}, 0, {     0,    810}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -223,   2391,  -2347}, 0, {  1798,    810}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   443,   2496,  -2449}, 0, {  3958,    470}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -241,   2403,  -2634}, 0, {  1494,    810}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   315,   2490,  -2634}, 0, {  3674,    470}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2034,   3181,   1185}, 0, {  3132,   -578}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2136,   3181,   1418}, 0, {  2518,   -578}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1840,   3050,   1444}, 0, {  2742,   -154}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701D9C0 - 0x0701DAC0\nstatic const Vtx lll_seg7_vertex_0701D9C0[] = {\n    {{{  2034,   3181,   1185}, 0, {  3132,   -578}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1840,   3050,   1444}, 0, {  2742,   -154}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1568,   3181,   1227}, 0, {  3480,   -578}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1870,   3181,   1740}, 0, {  2058,   -578}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2136,   3181,   1418}, 0, {  2518,   -578}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1021,   3079,   1151}, 0, {   468,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1132,   3079,   1131}, 0, {   692,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1089,   3028,   1235}, 0, {   812,    132}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1438,   3181,   1590}, 0, {  2798,   -578}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1356,   3151,   1391}, 0, {  1308,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1240,   3151,   1326}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1340,   3095,   1304}, 0, {  1022,    150}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1439,   3151,   1282}, 0, {  1054,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1266,   3151,   1191}, 0, {   600,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1360,   3151,   1204}, 0, {   734,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1240,   3079,   1195}, 0, {  1088,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701DAC0 - 0x0701DBB0\nstatic const Vtx lll_seg7_vertex_0701DAC0[] = {\n    {{{  1211,   3079,   1346}, 0, {  1348,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1089,   3028,   1235}, 0, {   812,    132}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1240,   3079,   1195}, 0, {  1088,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   955,   3079,   1220}, 0, {   460,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1021,   3079,   1151}, 0, {   468,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1048,   3079,   1362}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   608,   2976,   1457}, 0, {  3132,   -578}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   403,   2976,   1305}, 0, {  2518,   -578}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   647,   2845,   1135}, 0, {  2742,   -154}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   991,   2976,   1187}, 0, {  3480,   -578}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   472,   2976,    894}, 0, {  2058,   -578}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   921,   2976,    808}, 0, {  2798,   -578}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   772,   2099,    792}, 0, {  1406,    598}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   286,   2099,    750}, 0, {   482,    598}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   468,   1698,    405}, 0, {  1578,   1898}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701DBB0 - 0x0701DCA0\nstatic const Vtx lll_seg7_vertex_0701DBB0[] = {\n    {{{   468,   1698,    405}, 0, {  1578,   1898}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   221,   2099,    309}, 0, {  1264,    598}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   624,   2099,     82}, 0, {  2576,    598}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   286,   2099,    750}, 0, {   482,    598}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   876,   2099,    327}, 0, {  2592,    598}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   772,   2099,    792}, 0, {  1406,    598}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   830,   1075,    -97}, 0, {  1054,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   840,   1075,    -15}, 0, {  1308,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   797,   1033,    -46}, 0, {  1022,    150}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   763,   1075,      4}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   718,   1075,    -64}, 0, {   600,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   763,   1075,    -98}, 0, {   734,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1520,   3171,  -2259}, 0, {  1054,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1536,   3171,  -2123}, 0, {  1308,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1463,   3115,  -2175}, 0, {  1022,    150}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701DCA0 - 0x0701DDA0\nstatic const Vtx lll_seg7_vertex_0701DCA0[] = {\n    {{{  1463,   3115,  -2175}, 0, {  1022,    150}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1407,   3171,  -2090}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1332,   3171,  -2205}, 0, {   600,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1536,   3171,  -2123}, 0, {  1308,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1408,   3171,  -2260}, 0, {   734,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1520,   3171,  -2259}, 0, {  1054,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1022,   3027,  -2335}, 0, {   468,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1125,   3027,  -2382}, 0, {   692,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1108,   2977,  -2271}, 0, {   812,    132}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1245,   3027,  -2346}, 0, {  1088,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1254,   3027,  -2193}, 0, {  1348,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   975,   3027,  -2252}, 0, {   460,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1100,   3027,  -2138}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2046,   1930,    475}, 0, {  3132,   -578}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2219,   1930,    663}, 0, {  2518,   -578}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2363,   1799,    402}, 0, {  2742,   -154}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701DDA0 - 0x0701DEA0\nstatic const Vtx lll_seg7_vertex_0701DDA0[] = {\n    {{{  1109,   2921,  -2642}, 0, {  1308,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1032,   2921,  -2622}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1065,   2879,  -2673}, 0, {  1022,    150}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1099,   2921,  -2724}, 0, {  1054,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   986,   2921,  -2691}, 0, {   600,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1032,   2921,  -2724}, 0, {   734,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2389,   2038,   -202}, 0, {  2750,   -928}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2572,   1792,   -255}, 0, {  2450,   -132}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2457,   2038,   -488}, 0, {  3248,   -928}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2644,   2038,    -36}, 0, {  1784,   -928}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2837,   2038,   -257}, 0, {  1934,   -928}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2879,   2038,   -510}, 0, {  2588,   -928}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2621,   1930,    551}, 0, {  2058,   -578}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2363,   1799,    402}, 0, {  2742,   -154}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2219,   1930,    663}, 0, {  2518,   -578}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2659,   1930,     95}, 0, {  2798,   -578}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701DEA0 - 0x0701DF90\nstatic const Vtx lll_seg7_vertex_0701DEA0[] = {\n    {{{ -2046,   1930,    475}, 0, {  3132,   -578}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2363,   1799,    402}, 0, {  2742,   -154}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2275,   1930,     66}, 0, {  3480,   -578}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2659,   1930,     95}, 0, {  2798,   -578}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1940,   1853,    -25}, 0, {   850,   -330}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2086,   1591,   -225}, 0, {   974,    518}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1809,   1853,   -365}, 0, {  1932,   -330}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2321,   1853,   -173}, 0, {   318,   -330}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2295,   1853,   -410}, 0, {   922,   -330}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2110,   1853,   -520}, 0, {  1596,   -330}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2090,   1812,   1124}, 0, {  -124,    134}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2238,   1542,    934}, 0, {   -30,   1008}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2032,   1812,    695}, 0, {   990,    134}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2406,   1812,    729}, 0, {    56,    134}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2492,   1812,    967}, 0, {  -684,    134}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701DF90 - 0x0701E090\nstatic const Vtx lll_seg7_vertex_0701DF90[] = {\n    {{{ -1907,   1669,   1054}, 0, {   482,    598}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1972,   1669,    613}, 0, {  1264,    598}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1725,   1268,    709}, 0, {  1578,   1898}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1421,   1669,   1096}, 0, {  1406,    598}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1570,   1669,    386}, 0, {  2576,    598}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1317,   1669,    631}, 0, {  2592,    598}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2370,   1628,   1593}, 0, { -2022,    730}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2255,   1628,   1265}, 0, { -1008,    732}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2102,   1341,   1520}, 0, { -1240,   1658}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1950,   1628,   1746}, 0, { -1410,    730}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1874,   1628,   1252}, 0, {  -106,    732}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1741,   1628,   1538}, 0, {  -456,    732}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   788,   1818,   2943}, 0, {     0,   1884}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   788,   1203,   2943}, 0, {     0,   3874}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -173,   1203,   2943}, 0, {  3086,   3874}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -173,   1818,   2943}, 0, {  3086,   1884}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701E090 - 0x0701E180\nstatic const Vtx lll_seg7_vertex_0701E090[] = {\n    {{{  -787,   1818,   2943}, 0, {  5078,   1884}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   788,   5248,   2943}, 0, {     0,  -9230}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   788,   1818,   2943}, 0, {     0,   1884}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,   5248,   2943}, 0, {  5078,  -9230}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2943,   3539,   -787}, 0, {  5078,  -3694}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2943,   5248,   -787}, 0, {  5078,  -9230}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2154,   5248,  -2153}, 0, {     0,  -9230}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2943,   2121,   -787}, 0, {     0,    902}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2943,    179,   -787}, 0, {     0,   7194}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2943,   5248,    788}, 0, {  5078,  -9230}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2154,   3539,  -2153}, 0, {     0,  -3694}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2411,   3539,   -480}, 0, {  1958,   1414}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2943,   5248,   -787}, 0, {     0,  -4120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2943,   3539,   -787}, 0, {     0,   1414}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2411,   5248,   -480}, 0, {  1958,  -4120}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701E180 - 0x0701E280\nstatic const Vtx lll_seg7_vertex_0701E180[] = {\n    {{{   788,    128,  -2942}, 0, {  5078,   7358}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   788,   5248,  -2942}, 0, {  5078,  -9230}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,   5248,  -2942}, 0, {     0,  -9230}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,    128,  -2942}, 0, {     0,   7358}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2411,   3463,   -480}, 0, {   964,  -3444}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2943,   2121,   -787}, 0, {     0,    902}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2943,   5248,    788}, 0, {  5078,  -9230}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2154,    855,   2154}, 0, {  5078,   5004}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2943,   5248,    788}, 0, {     0,  -9230}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2943,    518,    788}, 0, {     0,   6096}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2943,    179,   -787}, 0, {     0,   7194}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2943,    518,    788}, 0, {  5078,   6096}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2411,   5248,   -480}, 0, {   964,  -9230}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2154,    179,  -2153}, 0, {     0,   7194}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2554,    159,  -1461}, 0, {  2556,   7260}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2154,   2121,  -2153}, 0, {     0,    902}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701E280 - 0x0701E360\nstatic const Vtx lll_seg7_vertex_0701E280[] = {\n    {{{  2154,   2121,  -2153}, 0, {     0,    902}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2554,    159,  -1461}, 0, {  2556,   7260}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2943,    179,   -787}, 0, {  5078,   7194}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2943,   2121,   -787}, 0, {  5078,    902}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2154,    855,   2154}, 0, {  5078,   5004}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2154,   5248,   2154}, 0, {  5078,  -9230}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2943,   5248,    788}, 0, {     0,  -9230}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2942,    128,   -787}, 0, {  5078,   7358}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2942,   5248,    788}, 0, {     0,  -9230}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2942,    128,    788}, 0, {     0,   7358}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   788,   1029,   2943}, 0, {  5078,   4438}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   788,   5248,   2943}, 0, {  5078,  -9230}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2154,   5248,   2154}, 0, {     0,  -9230}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2154,   1029,   2154}, 0, {     0,   4438}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701E360 - 0x0701E440\nstatic const Vtx lll_seg7_vertex_0701E360[] = {\n    {{{ -2153,   1613,   2154}, 0, {  5078,   2548}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2153,   5248,   2154}, 0, {  5078,  -9230}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,   5248,   2943}, 0, {     0,  -9230}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,   1613,   2943}, 0, {     0,   2548}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2942,    128,    788}, 0, {  5078,   7358}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2942,   5248,    788}, 0, {  5078,  -9230}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2153,   5248,   2154}, 0, {     0,  -9230}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2153,    128,   2154}, 0, {     0,   7358}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   788,    128,  -2942}, 0, {     0,   7358}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2154,   5248,  -2153}, 0, {  5078,  -9230}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   788,   5248,  -2942}, 0, {     0,  -9230}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2942,    128,   -787}, 0, {  5078,   7358}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2942,   5248,   -787}, 0, {  5078,  -9230}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2942,   5248,    788}, 0, {     0,  -9230}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701E440 - 0x0701E530\nstatic const Vtx lll_seg7_vertex_0701E440[] = {\n    {{{ -2153,   2268,  -2153}, 0, {  5078,    426}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2153,   5248,  -2153}, 0, {  5078,  -9230}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2942,   5248,   -787}, 0, {     0,  -9230}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2942,   2268,   -787}, 0, {     0,    426}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,   2442,  -2942}, 0, {  5078,   -138}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,   5248,  -2942}, 0, {  5078,  -9230}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2153,   5248,  -2153}, 0, {     0,  -9230}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2153,   2442,  -2153}, 0, {     0,   -138}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   788,    128,  -2942}, 0, {     0,   7358}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2154,    128,  -2153}, 0, {  5078,   7358}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2154,   5248,  -2153}, 0, {  5078,  -9230}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2943,    128,    788}, 0, {  5078,   7358}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2641,    466,    708}, 0, {  4816,   6262}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2697,    349,    223}, 0, {  3248,   6644}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2601,    167,   -533}, 0, {   792,   7232}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701E530 - 0x0701E620\nstatic const Vtx lll_seg7_vertex_0701E530[] = {\n    {{{  2154,   3463,  -2153}, 0, {     0,  -1400}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2154,   2121,  -2153}, 0, {     0,   2944}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1704,   3463,  -1703}, 0, {  2030,  -1400}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1704,   3463,  -1703}, 0, {   502,  -3444}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2943,   2121,   -787}, 0, {  5078,    902}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2411,   3463,   -480}, 0, {  5078,  -3444}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2154,   2121,  -2153}, 0, {     0,    902}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,    128,  -2942}, 0, {  5078,   7358}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -669,   2391,  -2500}, 0, {  4694,     28}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2153,    128,  -2153}, 0, {     0,   7358}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   788,    128,   2943}, 0, {  5078,   7358}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   645,    978,   2328}, 0, {  4484,   4604}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2154,    128,   2154}, 0, {     0,   7358}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1719,   2391,  -1719}, 0, {   482,     28}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1719,   2217,  -1719}, 0, {   482,    592}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701E620 - 0x0701E720\nstatic const Vtx lll_seg7_vertex_0701E620[] = {\n    {{{  -787,    128,  -2942}, 0, {   990,   5314}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,   2391,  -2942}, 0, {   990,  -2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -669,   2391,  -2500}, 0, {  -488,  -2016}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2943,    128,    788}, 0, {     0,   7358}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1831,    804,   1831}, 0, {  4694,   5168}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2302,    639,   1342}, 0, {  2560,   5702}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2154,    128,   2154}, 0, {  5078,   7358}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2641,    466,    708}, 0, {   230,   6262}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1831,    978,   1831}, 0, {   352,   4604}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1831,    804,   1831}, 0, {   352,   5168}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   645,    978,   2328}, 0, {  4484,   4604}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2154,    128,   2154}, 0, {     0,   7358}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,    128,   2943}, 0, {  5078,   7358}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,   1152,   2328}, 0, {  5078,   4040}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   788,    128,   2943}, 0, {     0,   7358}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   645,    978,   2328}, 0, {   432,   4604}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701E720 - 0x0701E810\nstatic const Vtx lll_seg7_vertex_0701E720[] = {\n    {{{   645,    978,   2328}, 0, {   432,   4604}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,   1152,   2328}, 0, {  5078,   4040}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   645,   1152,   2328}, 0, {   432,   4040}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2153,    128,   2154}, 0, {  5078,   7358}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1719,   1562,   1720}, 0, {  4562,   2714}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,    128,   2943}, 0, {     0,   7358}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,   1152,   2328}, 0, {   964,   4040}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,   1562,   2328}, 0, {   964,   2714}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2153,    128,   2154}, 0, {   990,   4292}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2153,   1562,   2154}, 0, {   990,   -350}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1719,   1562,   1720}, 0, {  -998,   -350}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2942,    128,   -787}, 0, {     0,   7358}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2153,    128,  -2153}, 0, {  5078,   7358}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1719,   2217,  -1719}, 0, {  4562,    592}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2348,   2217,   -628}, 0, {   482,    592}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701E810 - 0x0701E900\nstatic const Vtx lll_seg7_vertex_0701E810[] = {\n    {{{ -2942,   2217,   -787}, 0, {     0,  -1452}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2942,    128,   -787}, 0, {     0,   5314}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2348,   2217,   -628}, 0, {  1958,  -1452}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2153,   2391,  -2153}, 0, {     0,     28}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2153,   2268,  -2153}, 0, {     0,    426}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1719,   2268,  -1719}, 0, {  1958,    426}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1719,   2391,  -1719}, 0, {  1958,     28}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,   1562,   2943}, 0, {     0,   -350}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,   1203,   2328}, 0, {  1958,    810}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,   1562,   2328}, 0, {  1958,   -350}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,   1203,   2943}, 0, {     0,    810}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   788,   1152,   2943}, 0, {     0,    -46}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   645,   1029,   2328}, 0, {  2012,    352}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   645,   1152,   2328}, 0, {  2012,    -46}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   788,   1029,   2943}, 0, {     0,    352}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701E900 - 0x0701E940\nstatic const Vtx lll_seg7_vertex_0701E900[] = {\n    {{{  2154,    978,   2154}, 0, {     0,    518}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2154,    855,   2154}, 0, {     0,    918}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1831,    855,   1831}, 0, {  1448,    918}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1831,    978,   1831}, 0, {  1448,    518}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701E940 - 0x0701EA30\nstatic const Vtx lll_seg7_vertex_0701E940[] = {\n    {{{ -1431,      0,   -295}, 0, {  -802,    614}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1465,     26,   -323}, 0, {  -690,    522}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1671,      0,   -150}, 0, {    -6,   1098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1670,     26,   -199}, 0, {   -10,    934}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1663,     56,   -490}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1866,     26,   -189}, 0, {   644,    968}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1901,      0,   -138}, 0, {   758,   1136}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1367,      0,   -632}, 0, { -1014,   -506}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2038,      0,   -303}, 0, {  1216,    590}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1578,     26,   -699}, 0, {  -312,   -728}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1410,     26,   -611}, 0, {  -872,   -436}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1983,     26,   -330}, 0, {  1034,    500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1901,     26,   -619}, 0, {   762,   -462}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1942,      0,   -641}, 0, {   896,   -536}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1564,      0,   -734}, 0, {  -360,   -846}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701EA30 - 0x0701EB30\nstatic const Vtx lll_seg7_vertex_0701EA30[] = {\n    {{{   106,    410,  -2942}, 0, {  -818,   -256}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    39,    458,  -2942}, 0, { -1040,   -256}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   153,     55,  -2784}, 0, {  -654,      8}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1367,      0,   -632}, 0, { -1014,   -506}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1410,     26,   -611}, 0, {  -872,   -436}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1465,     26,   -323}, 0, {  -690,    522}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1663,     56,   -490}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   135,      0,  -2681}, 0, {  -726,    424}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   111,     42,  -2755}, 0, {  -816,    194}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     5,      0,  -2587}, 0, { -1160,    798}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   199,      0,  -2520}, 0, {  -512,   1018}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   179,     22,  -2717}, 0, {  -572,    296}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   272,    132,  -2745}, 0, {  -226,    286}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   190,    650,  -2942}, 0, {  -538,   -256}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    41,     51,  -2739}, 0, { -1050,    350}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -138,      0,  -2942}, 0, { -1634,   -256}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701EB30 - 0x0701EC30\nstatic const Vtx lll_seg7_vertex_0701EB30[] = {\n    {{{   199,      0,  -2520}, 0, {  -512,   1018}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   324,     52,  -2711}, 0, {   -92,    430}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   239,     51,  -2703}, 0, {  -378,    450}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   343,      0,  -2531}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   272,    132,  -2745}, 0, {  -226,    286}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   480,      0,  -2942}, 0, {   424,   -256}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   190,    650,  -2942}, 0, {  -538,   -256}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   179,     22,  -2717}, 0, {  -572,    296}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1166,    102,   1583}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1121,    102,   1727}, 0, {  -444,    706}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -939,      0,   1785}, 0, { -1038,    928}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1314,    102,   1858}, 0, {  -208,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1261,      0,   2004}, 0, {  -644,   -304}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1602,    102,   1563}, 0, {  1150,    150}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1499,    102,   1813}, 0, {   368,   -294}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1570,      0,   1928}, 0, {   316,   -740}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701EC30 - 0x0701ED20\nstatic const Vtx lll_seg7_vertex_0701EC30[] = {\n    {{{ -1602,    102,   1563}, 0, {  1150,    150}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1684,    102,   1704}, 0, {  1074,   -388}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1499,    102,   1813}, 0, {   368,   -294}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1570,      0,   1928}, 0, {   316,   -740}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1878,      0,   1747}, 0, {  1496,   -898}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1741,      0,   1511}, 0, {  1622,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1337,    102,   1449}, 0, {   692,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1166,    102,   1583}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1121,    102,   1727}, 0, {  -444,    706}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1300,      0,   1322}, 0, {   856,   1398}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1817,      0,   1021}, 0, {  -380,   -930}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1828,    102,    659}, 0, {   414,    124}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2120,      0,    611}, 0, {  1340,   -456}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1015,      0,   1545}, 0, {  -346,   1398}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -939,      0,   1785}, 0, { -1038,    928}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701ED20 - 0x0701EE00\nstatic const Vtx lll_seg7_vertex_0701ED20[] = {\n    {{{ -1037,      0,    741}, 0, { -1922,   1524}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1457,    102,    813}, 0, {  -870,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1383,      0,   1047}, 0, { -1632,    -64}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1643,    102,    767}, 0, {  -292,    218}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1817,      0,   1021}, 0, {  -380,   -930}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1300,     80,    673}, 0, { -1108,   1142}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1472,     89,    366}, 0, {    84,   1620}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1828,    102,    659}, 0, {   414,    124}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2120,      0,    611}, 0, {  1340,   -456}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1805,     88,    533}, 0, {   612,    500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1988,      0,    248}, 0, {  1762,    830}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1415,      0,    130}, 0, {   436,   2392}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1145,    102,    456}, 0, {  -956,   2054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -994,      0,    418}, 0, { -1274,   2464}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701EE00 - 0x0701EF00\nstatic const Vtx lll_seg7_vertex_0701EE00[] = {\n    {{{  1606,      0,   -997}, 0, {  2390,    584}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1565,     54,  -1056}, 0, {  1836,    362}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1452,      0,  -1046}, 0, {  1650,   -684}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1663,      0,  -1131}, 0, {  1120,   1288}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1504,     51,  -1085}, 0, {  1410,   -330}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1569,    307,  -1149}, 0, {   994,    286}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1507,     49,  -1190}, 0, {   550,   -374}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1402,      0,  -1186}, 0, {   -46,   -842}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1621,      0,  -1243}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1492,    184,  -1253}, 0, {  -266,   -284}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1447,     30,  -1230}, 0, {   -64,   -796}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1564,      0,  -1290}, 0, {  -562,    470}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1201,    103,  -1273}, 0, {  1274,   -488}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -663,    102,   -865}, 0, {  -770,    436}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -656,    102,  -1042}, 0, {  -262,    738}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1392,      0,  -1283}, 0, {  -644,   -842}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701EF00 - 0x0701F000\nstatic const Vtx lll_seg7_vertex_0701EF00[] = {\n    {{{  1492,    184,  -1253}, 0, {  -266,   -284}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1564,      0,  -1290}, 0, {  -562,    470}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1496,      0,  -1319}, 0, { -1006,   -254}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1442,     28,  -1272}, 0, {  -610,   -792}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1447,     30,  -1230}, 0, {   -64,   -796}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1392,      0,  -1283}, 0, {  -644,   -842}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1201,    103,  -1273}, 0, {  1274,   -488}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1153,    102,   -805}, 0, {  -168,  -1094}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -970,    102,   -746}, 0, {  -632,   -650}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1251,    103,  -1057}, 0, {   722,   -980}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -825,    102,   -746}, 0, {  -862,   -226}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -663,    102,   -865}, 0, {  -770,    436}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -656,    102,  -1042}, 0, {  -262,    738}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -623,    103,  -1140}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -704,    103,  -1289}, 0, {   534,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -842,    103,  -1301}, 0, {   788,    606}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701F000 - 0x0701F100\nstatic const Vtx lll_seg7_vertex_0701F000[] = {\n    {{{ -1201,    103,  -1273}, 0, {  1274,   -488}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -842,    103,  -1301}, 0, {   788,    606}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -987,    103,  -1352}, 0, {  1166,    262}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -704,    103,  -1289}, 0, {   534,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -604,      0,  -1392}, 0, {   674,   1442}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -801,      0,  -1409}, 0, {  1038,    896}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -623,    103,  -1140}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -488,      0,  -1178}, 0, {  -132,   1442}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1008,      0,  -1482}, 0, {  1580,    404}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -536,      0,  -1039}, 0, {  -464,   1082}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -656,    102,  -1042}, 0, {  -262,    738}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -546,      0,   -786}, 0, { -1188,    652}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1386,      0,  -1060}, 0, {   946,  -1368}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1251,    103,  -1057}, 0, {   722,   -980}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1201,    103,  -1273}, 0, {  1272,   -488}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1313,      0,  -1368}, 0, {  1730,   -668}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701F100 - 0x0701F200\nstatic const Vtx lll_seg7_vertex_0701F100[] = {\n    {{{ -1246,      0,   -699}, 0, {  -330,  -1532}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1251,    103,  -1057}, 0, {   722,   -980}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1386,      0,  -1060}, 0, {   946,  -1368}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1153,    102,   -805}, 0, {  -168,  -1094}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1313,      0,  -1368}, 0, {  1730,   -668}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1201,    103,  -1273}, 0, {  1272,   -488}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -987,    103,  -1352}, 0, {  1166,    262}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1251,     82,  -1991}, 0, {  1076,  -1544}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1569,     82,  -1978}, 0, {  2108,  -1776}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1211,     82,  -2222}, 0, {   746,  -2250}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1008,      0,  -1482}, 0, {  1580,    404}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -656,    102,  -1042}, 0, {  -262,    738}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -663,    102,   -865}, 0, {  -770,    436}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -546,      0,   -786}, 0, { -1188,    652}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -825,    102,   -746}, 0, {  -862,   -226}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -776,      0,   -615}, 0, { -1320,   -292}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701F200 - 0x0701F2F0\nstatic const Vtx lll_seg7_vertex_0701F200[] = {\n    {{{  -776,      0,   -615}, 0, { -1320,   -292}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -825,    102,   -746}, 0, {  -862,   -226}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -970,    102,   -746}, 0, {  -632,   -650}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -984,      0,   -615}, 0, {  -992,   -898}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1153,    102,   -805}, 0, {  -168,  -1094}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1246,      0,   -699}, 0, {  -330,  -1532}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1251,     82,  -1991}, 0, {  1076,  -1544}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1211,     82,  -2222}, 0, {   746,  -2250}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1075,     82,  -2032}, 0, {   474,  -1524}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1063,     82,  -1465}, 0, {   922,    310}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   996,     82,  -1725}, 0, {   484,   -470}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1413,      0,  -1841}, 0, {  1724,  -1200}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1569,     82,  -1978}, 0, {  2108,  -1776}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1147,      0,  -1406}, 0, {  1246,    426}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1683,      0,  -1866}, 0, {  2570,  -1512}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701F2F0 - 0x0701F3F0\nstatic const Vtx lll_seg7_vertex_0701F2F0[] = {\n    {{{  1569,     82,  -1978}, 0, {  2108,  -1776}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1708,      0,  -2241}, 0, {  2328,  -2740}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1610,     82,  -2166}, 0, {  2078,  -2414}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1683,      0,  -1866}, 0, {  2570,  -1512}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1251,     82,  -1991}, 0, {  1076,  -1544}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1075,     82,  -2032}, 0, {   474,  -1524}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   996,     82,  -1725}, 0, {   484,   -470}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1063,     82,  -1465}, 0, {   922,    310}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   812,     82,  -1638}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   549,     82,  -1588}, 0, {  -832,    356}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   464,      0,  -1691}, 0, { -1196,    100}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   248,      0,  -1650}, 0, { -1854,    414}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1165,      0,  -2342}, 0, {   496,  -2596}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1211,     82,  -2222}, 0, {   746,  -2250}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1006,      0,  -2087}, 0, {   204,  -1642}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   948,      0,  -1849}, 0, {   224,   -826}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701F3F0 - 0x0701F4F0\nstatic const Vtx lll_seg7_vertex_0701F3F0[] = {\n    {{{   996,     82,  -1725}, 0, {   484,   -470}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   948,      0,  -1849}, 0, {   224,   -826}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   747,      0,  -1727}, 0, {  -314,   -260}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   812,     82,  -1638}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   464,      0,  -1691}, 0, { -1196,    100}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   549,     82,  -1588}, 0, {  -832,    356}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   248,      0,  -1650}, 0, { -1854,    414}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   334,     82,  -1565}, 0, { -1502,    616}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -56,      0,  -1627}, 0, { -2814,    752}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    83,     82,  -1558}, 0, { -2304,    854}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -292,      0,  -1565}, 0, { -3520,   1152}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -149,     82,  -1492}, 0, { -2996,   1264}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -203,      0,  -1241}, 0, { -2954,   2116}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -100,     82,  -1325}, 0, { -2696,   1758}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   203,      0,  -1250}, 0, { -1654,   1736}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   272,     82,  -1355}, 0, { -1522,   1340}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701F4F0 - 0x0701F5E0\nstatic const Vtx lll_seg7_vertex_0701F4F0[] = {\n    {{{   694,     82,  -1310}, 0, {  -126,   1124}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1147,      0,  -1406}, 0, {  1246,    426}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1063,     82,  -1465}, 0, {   922,    310}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   724,      0,  -1191}, 0, {    70,   1480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   272,     82,  -1355}, 0, { -1522,   1340}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   203,      0,  -1250}, 0, { -1654,   1736}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1569,     82,  -1978}, 0, {  2108,  -1776}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1610,     82,  -2166}, 0, {  2078,  -2414}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1211,     82,  -2222}, 0, {   746,  -2250}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   812,     82,  -1638}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   549,     82,  -1588}, 0, {  -832,    356}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   334,     82,  -1565}, 0, { -1502,    616}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -149,     82,  -1492}, 0, { -2996,   1264}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -100,     82,  -1325}, 0, { -2696,   1758}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    83,     82,  -1558}, 0, { -2304,    854}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701F5E0 - 0x0701F6E0\nstatic const Vtx lll_seg7_vertex_0701F5E0[] = {\n    {{{  2154,   -204,  -2153}, 0, {     0,   1044}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1866,    128,  -1657}, 0, {  1788,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1922,    128,  -1896}, 0, {  1092,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,   -204,  -2942}, 0, {     0,   1044}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   788,    128,  -2942}, 0, {  5078,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,    128,  -2942}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   788,   -204,  -2942}, 0, {  5078,   1046}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2943,   -204,    788}, 0, {  8402,   1044}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2601,    167,   -533}, 0, {  4308,   -158}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2589,   -204,   -693}, 0, {  3872,   1044}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2943,    128,    788}, 0, {  8402,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2297,    128,   -997}, 0, {  2514,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1866,    128,  -1657}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1983,   -204,  -1706}, 0, {    66,   1044}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2112,    139,  -1381}, 0, {  1160,    -68}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2154,    128,  -2153}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701F6E0 - 0x0701F7C0\nstatic const Vtx lll_seg7_vertex_0701F6E0[] = {\n    {{{  1866,    128,  -1657}, 0, {  1788,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2154,   -204,  -2153}, 0, {     0,   1044}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1983,   -204,  -1706}, 0, {  1414,   1044}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2154,    128,   2154}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   788,   -204,   2943}, 0, {  5078,   1044}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   788,    128,   2943}, 0, {  5078,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2154,   -204,   2154}, 0, {     0,   1044}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2943,    128,    788}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2943,   -204,    788}, 0, {     0,   1044}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2154,   -204,   2154}, 0, {  5078,   1044}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2154,    128,   2154}, 0, {  5078,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2942,    128,    788}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2942,   -204,    788}, 0, {     0,   1044}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2942,   -204,   -787}, 0, {  5078,   1044}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701F7C0 - 0x0701F8B0\nstatic const Vtx lll_seg7_vertex_0701F7C0[] = {\n    {{{   788,    128,  -2942}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2154,   -204,  -2153}, 0, {  5078,   1044}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2154,    128,  -2153}, 0, {  5078,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   788,   -204,  -2942}, 0, {     0,   1044}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2153,    128,  -2153}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,   -204,  -2942}, 0, {  5078,   1044}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,    128,  -2942}, 0, {  5078,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2153,   -204,  -2153}, 0, {     0,   1044}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2942,    128,   -787}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2942,   -204,   -787}, 0, {     0,   1044}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2153,   -204,  -2153}, 0, {  5078,   1044}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2153,    128,  -2153}, 0, {  5078,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   788,    128,   2943}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,   -204,   2943}, 0, {  5078,   1044}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,    128,   2943}, 0, {  5078,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701F8B0 - 0x0701F990\nstatic const Vtx lll_seg7_vertex_0701F8B0[] = {\n    {{{ -2942,    128,    788}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2942,   -204,   -787}, 0, {  5078,   1044}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2942,    128,   -787}, 0, {  5078,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2153,    128,   2154}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2942,   -204,    788}, 0, {  5078,   1044}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2942,    128,    788}, 0, {  5078,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2153,   -204,   2154}, 0, {     0,   1044}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,    128,   2943}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,   -204,   2943}, 0, {     0,   1044}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2153,   -204,   2154}, 0, {  5078,   1044}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2153,    128,   2154}, 0, {  5078,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   788,    128,   2943}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   788,   -204,   2943}, 0, {     0,   1044}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,   -204,   2943}, 0, {  5078,   1044}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701F990 - 0x0701FA90\nstatic const Vtx lll_seg7_vertex_0701F990[] = {\n    {{{   661,   2606,  -2485}, 0, {  4642,  -2958}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   583,   2606,  -2942}, 0, {  2754,  -4296}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   443,   2547,  -2449}, 0, {  4000,  -2064}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   377,   2553,  -2663}, 0, {  3010,  -2588}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   315,   2541,  -2634}, 0, {  2896,  -2268}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -241,   2454,  -2634}, 0, {   930,   -302}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -223,   2442,  -2347}, 0, {  2008,    650}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -353,   2442,  -2693}, 0, {   328,   -114}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -669,   2442,  -2500}, 0, {  -106,   1680}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -507,   2442,  -2942}, 0, { -1090,   -448}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   844,   2606,  -2742}, 0, {  4384,  -4512}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   788,   2606,  -2942}, 0, {  3482,  -5022}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   774,   2606,  -2563}, 0, {  4764,  -3634}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1266,   3202,   1191}, 0, {   470,    932}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1240,   3202,   1326}, 0, {  1082,    626}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1356,   3202,   1391}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701FA90 - 0x0701FB80\nstatic const Vtx lll_seg7_vertex_0701FA90[] = {\n    {{{  -787,   2442,  -2942}, 0, { -2082,    542}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -669,   2442,  -2500}, 0, {  -106,   1680}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -507,   2442,  -2942}, 0, { -1090,   -448}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1568,   3232,   1227}, 0, {   990,  -1348}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2136,   3232,   1418}, 0, {  -216,   1388}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2034,   3232,   1185}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1870,   3232,   1740}, 0, { -1696,    -74}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1438,   3232,   1590}, 0, {  -756,  -2154}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1266,   3202,   1191}, 0, {   470,    932}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1439,   3202,   1282}, 0, {   306,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1360,   3202,   1204}, 0, {   238,    520}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1356,   3202,   1391}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   624,   2150,     82}, 0, {  2012,   -766}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   286,   2150,    750}, 0, { -1552,    342}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   772,   2150,    792}, 0, {   -20,   2228}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701FB80 - 0x0701FC60\nstatic const Vtx lll_seg7_vertex_0701FB80[] = {\n    {{{  1021,   3130,   1151}, 0, {   212,   1080}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1211,   3130,   1346}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1240,   3130,   1195}, 0, {   224,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1048,   3130,   1362}, 0, {  1218,    752}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   955,   3130,   1220}, 0, {   610,   1336}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1132,   3130,   1131}, 0, {    10,    552}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   472,   3028,    894}, 0, { -1696,    -74}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   991,   3028,   1187}, 0, {   990,  -1348}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   921,   3028,    808}, 0, {  -756,  -2154}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   608,   3028,   1457}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   403,   3028,   1305}, 0, {  -216,   1388}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   624,   2150,     82}, 0, {  2012,   -766}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   772,   2150,    792}, 0, {   -20,   2228}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   876,   2150,    327}, 0, {  2012,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701FC60 - 0x0701FD60\nstatic const Vtx lll_seg7_vertex_0701FC60[] = {\n    {{{  1408,   3222,  -2260}, 0, {   238,    520}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1332,   3222,  -2205}, 0, {   470,    932}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1407,   3222,  -2090}, 0, {  1082,    626}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   624,   2150,     82}, 0, {  2012,   -766}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   221,   2150,    309}, 0, {  -196,  -1422}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   286,   2150,    750}, 0, { -1552,    342}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   763,   1126,    -98}, 0, {     0,    302}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   763,   1126,      4}, 0, {   478,    302}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   840,   1126,    -15}, 0, {   376,    -82}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   718,   1126,    -64}, 0, {   136,    530}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   830,   1126,    -97}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1536,   3222,  -2123}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1520,   3222,  -2259}, 0, {   306,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2457,   2089,   -488}, 0, {   990,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2837,   2089,   -257}, 0, {  -844,    194}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2644,   2089,    -36}, 0, {   172,   1242}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701FD60 - 0x0701FE40\nstatic const Vtx lll_seg7_vertex_0701FD60[] = {\n    {{{  1022,   3078,  -2335}, 0, {   212,   1080}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1100,   3078,  -2138}, 0, {  1218,    752}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1254,   3078,  -2193}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   975,   3078,  -2252}, 0, {   610,   1336}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1245,   3078,  -2346}, 0, {   224,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1125,   3078,  -2382}, 0, {    10,    552}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1032,   2972,  -2724}, 0, {     0,    302}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1109,   2972,  -2642}, 0, {   376,    -82}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1099,   2972,  -2724}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1032,   2972,  -2622}, 0, {   478,    302}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   986,   2972,  -2691}, 0, {   136,    530}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2457,   2089,   -488}, 0, {   990,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2644,   2089,    -36}, 0, {   172,   1242}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2389,   2089,   -202}, 0, {  1402,    350}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701FE40 - 0x0701FF40\nstatic const Vtx lll_seg7_vertex_0701FE40[] = {\n    {{{ -2295,   1905,   -410}, 0, {    82,  -1270}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2321,   1905,   -173}, 0, { -1026,   -846}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1940,   1905,    -25}, 0, {  -818,   1182}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2457,   2089,   -488}, 0, {   990,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2879,   2089,   -510}, 0, { -1118,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2837,   2089,   -257}, 0, {  -844,    194}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2275,   1981,     66}, 0, {   990,  -1348}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2219,   1981,    663}, 0, {  -216,   1388}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2046,   1981,    475}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2621,   1981,    551}, 0, { -1696,    -74}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2659,   1981,     95}, 0, {  -756,  -2154}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1809,   1905,   -365}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2110,   1905,   -520}, 0, {   990,   -702}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2406,   1864,    729}, 0, {  1710,   -836}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2492,   1864,    967}, 0, {   476,  -1102}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2090,   1864,   1124}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701FF40 - 0x07020040\nstatic const Vtx lll_seg7_vertex_0701FF40[] = {\n    {{{ -2032,   1864,    695}, 0, {  2130,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2406,   1864,    729}, 0, {  1710,   -836}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2090,   1864,   1124}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1570,   1720,    386}, 0, {  2012,   -766}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1421,   1720,   1096}, 0, {   -20,   2228}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1317,   1720,    631}, 0, {  2012,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1907,   1720,   1054}, 0, { -1552,    342}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1972,   1720,    613}, 0, {  -196,  -1422}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2255,   1679,   1265}, 0, {  -758,  -1330}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1741,   1679,   1538}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1874,   1679,   1252}, 0, {   990,   -586}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1950,   1679,   1746}, 0, {  -392,   1484}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2370,   1679,   1593}, 0, { -1968,    -88}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2419,    179,  -1227}, 0, {  3996,   4716}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2943,    179,   -787}, 0, {   990,   3234}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2554,    159,  -1461}, 0, {  3602,   6004}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07020040 - 0x07020140\nstatic const Vtx lll_seg7_vertex_07020040[] = {\n    {{{  1866,    179,  -1657}, 0, {  7130,   6116}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2419,    179,  -1227}, 0, {  3996,   4716}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2554,    159,  -1461}, 0, {  3602,   6004}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2601,    218,   -533}, 0, {  2354,   1594}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2943,    179,   -787}, 0, {   990,   3234}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2297,    179,   -997}, 0, {  4340,   3486}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1922,    179,  -1896}, 0, {  7114,   7314}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2154,    179,  -2153}, 0, {  6262,   8804}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2112,    190,  -1381}, 0, {  5642,   5080}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2943,   3539,   -787}, 0, { -1052,  -4120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2154,   3539,  -2153}, 0, { -1052,   3748}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1704,   3539,  -1703}, 0, {  2012,   2926}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2411,   3539,   -480}, 0, {  2012,  -4120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,   1203,   2943}, 0, {   890,  -4694}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   645,   1203,   2328}, 0, {     0,   3032}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,   1203,   2328}, 0, {  3546,  -3162}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07020140 - 0x07020230\nstatic const Vtx lll_seg7_vertex_07020140[] = {\n    {{{ -2153,   2442,  -2153}, 0, { -4118,   8142}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1719,   2442,  -1719}, 0, { -1052,   8142}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,   2442,  -2942}, 0, { -2082,    542}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -669,   2442,  -2500}, 0, {  -106,   1680}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2942,   2268,   -787}, 0, {   -38,   4502}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2348,   2268,   -628}, 0, {  2616,   2968}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2153,   2268,  -2153}, 0, { -2074,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1719,   2268,  -1719}, 0, {   990,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1719,   1613,   1720}, 0, {   464,  -4340}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2153,   1613,   2154}, 0, { -2592,  -4108}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,   1613,   2943}, 0, {    16,   3314}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,   1613,   2328}, 0, {  2012,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2943,    179,   -787}, 0, {   990,   3234}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2601,    218,   -533}, 0, {  2354,   1594}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2697,    400,    223}, 0, {   990,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07020230 - 0x07020310\nstatic const Vtx lll_seg7_vertex_07020230[] = {\n    {{{  -787,   1203,   2943}, 0, {   890,  -4694}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   788,   1203,   2943}, 0, { -3042,   2118}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   645,   1203,   2328}, 0, {     0,   3032}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   645,   1029,   2328}, 0, {  4884,   3654}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2154,   1029,   2154}, 0, { -1052,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1831,   1029,   1831}, 0, { -1052,   1224}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   788,   1029,   2943}, 0, {  6548,    982}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2154,    855,   2154}, 0, {  1328, -12330}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2943,    518,    788}, 0, {  -862,  -4594}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2302,    690,   1342}, 0, {  1564,  -8138}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2641,    518,    708}, 0, {   682,  -4558}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1831,    855,   1831}, 0, {  3238, -11170}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2697,    400,    223}, 0, {   990,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2943,    179,   -787}, 0, {   990,   3234}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07020310 - 0x07020400\nstatic const Vtx lll_seg7_vertex_07020310[] = {\n    {{{   315,   2541,  -2634}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   315,   2490,  -2634}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -241,   2403,  -2634}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   377,   2553,  -2663}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   315,   2490,  -2634}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   315,   2541,  -2634}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   377,   2502,  -2663}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -241,   2454,  -2634}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -353,   2391,  -2693}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -353,   2442,  -2693}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -241,   2403,  -2634}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -353,   2442,  -2693}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -507,   2391,  -2942}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -507,   2442,  -2942}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -353,   2391,  -2693}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07020400 - 0x070204F0\nstatic const Vtx lll_seg7_vertex_07020400[] = {\n    {{{   774,   2606,  -2563}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   774,   2554,  -2563}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   844,   2554,  -2742}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   315,   2541,  -2634}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -241,   2403,  -2634}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -241,   2454,  -2634}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   583,   2606,  -2942}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   377,   2502,  -2663}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   377,   2553,  -2663}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   583,   2554,  -2942}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   844,   2606,  -2742}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   788,   2554,  -2942}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   788,   2606,  -2942}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   844,   2554,  -2742}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   844,   2606,  -2742}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070204F0 - 0x070205E0\nstatic const Vtx lll_seg7_vertex_070204F0[] = {\n    {{{  -223,   2442,  -2347}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -669,   2442,  -2500}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -669,   2391,  -2500}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   774,   2554,  -2563}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   661,   2606,  -2485}, 0, {  1120,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   661,   2554,  -2485}, 0, {  1120,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   774,   2606,  -2563}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -223,   2442,  -2347}, 0, { -1784,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   443,   2496,  -2449}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   443,   2547,  -2449}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -223,   2391,  -2347}, 0, { -1784,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   443,   2496,  -2449}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   661,   2606,  -2485}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   443,   2547,  -2449}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   661,   2554,  -2485}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070205E0 - 0x070206E0\nstatic const Vtx lll_seg7_vertex_070205E0[] = {\n    {{{  2136,   3232,   1418}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2034,   3181,   1185}, 0, {   560,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2034,   3232,   1185}, 0, {   560,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -223,   2442,  -2347}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -669,   2391,  -2500}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -223,   2391,  -2347}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1438,   3232,   1590}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1870,   3181,   1740}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1870,   3232,   1740}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1438,   3181,   1590}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1870,   3232,   1740}, 0, {   460,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2136,   3181,   1418}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1870,   3181,   1740}, 0, {   460,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1360,   3202,   1204}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1266,   3151,   1191}, 0, {   644,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1266,   3202,   1191}, 0, {   644,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070206E0 - 0x070207D0\nstatic const Vtx lll_seg7_vertex_070206E0[] = {\n    {{{  1568,   3181,   1227}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1438,   3232,   1590}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1568,   3232,   1227}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1438,   3181,   1590}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2034,   3232,   1185}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1568,   3181,   1227}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1568,   3232,   1227}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2034,   3181,   1185}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1240,   3202,   1326}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1356,   3151,   1391}, 0, {   644,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1356,   3202,   1391}, 0, {   644,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1240,   3151,   1326}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1360,   3202,   1204}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1360,   3151,   1204}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1266,   3151,   1191}, 0, {   644,    479}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070207D0 - 0x070208D0\nstatic const Vtx lll_seg7_vertex_070207D0[] = {\n    {{{  1266,   3202,   1191}, 0, {   644,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1266,   3151,   1191}, 0, {   644,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1240,   3151,   1326}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1240,   3202,   1326}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1439,   3202,   1282}, 0, {  1176,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1360,   3151,   1204}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1360,   3202,   1204}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1356,   3202,   1391}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1439,   3151,   1282}, 0, {  1176,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1356,   3151,   1391}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1021,   3130,   1151}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   955,   3079,   1220}, 0, {   548,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   955,   3130,   1220}, 0, {   548,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1021,   3079,   1151}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1048,   3079,   1362}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1048,   3130,   1362}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070208D0 - 0x070209C0\nstatic const Vtx lll_seg7_vertex_070208D0[] = {\n    {{{  1132,   3130,   1131}, 0, {  1044,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1021,   3079,   1151}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1021,   3130,   1151}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1132,   3079,   1131}, 0, {  1044,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1240,   3130,   1195}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1240,   3079,   1195}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1211,   3130,   1346}, 0, {  1040,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1240,   3079,   1195}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1240,   3130,   1195}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   472,   3028,    894}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   472,   2976,    894}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   403,   2976,   1305}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1211,   3079,   1346}, 0, {  1040,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1048,   3130,   1362}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1048,   3079,   1362}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070209C0 - 0x07020AA0\nstatic const Vtx lll_seg7_vertex_070209C0[] = {\n    {{{   921,   3028,    808}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   472,   2976,    894}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   472,   3028,    894}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   921,   2976,    808}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   472,   3028,    894}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   403,   2976,   1305}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   403,   3028,   1305}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   624,   2150,     82}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   624,   2099,     82}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   221,   2099,    309}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   403,   3028,   1305}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   608,   2976,   1457}, 0, {   560,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   608,   3028,   1457}, 0, {   560,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   403,   2976,   1305}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07020AA0 - 0x07020B80\nstatic const Vtx lll_seg7_vertex_07020AA0[] = {\n    {{{   991,   2976,   1187}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   921,   3028,    808}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   991,   3028,   1187}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   921,   2976,    808}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   608,   3028,   1457}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   608,   2976,   1457}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   991,   2976,   1187}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   991,   3028,   1187}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   772,   2150,    792}, 0, {  1008,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   876,   2099,    327}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   876,   2150,    327}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   624,   2150,     82}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   221,   2099,    309}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   221,   2150,    309}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07020B80 - 0x07020C80\nstatic const Vtx lll_seg7_vertex_07020B80[] = {\n    {{{   221,   2150,    309}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   286,   2099,    750}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   286,   2150,    750}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   221,   2099,    309}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   286,   2150,    750}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   772,   2099,    792}, 0, {  1008,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   772,   2150,    792}, 0, {  1008,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   286,   2099,    750}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   876,   2099,    327}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   718,   1126,    -64}, 0, {   644,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   718,   1075,    -64}, 0, {   644,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   763,   1075,      4}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   876,   2150,    327}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   624,   2099,     82}, 0, {   776,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   624,   2150,     82}, 0, {   776,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   876,   2099,    327}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07020C80 - 0x07020D80\nstatic const Vtx lll_seg7_vertex_07020C80[] = {\n    {{{   763,   1126,      4}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   840,   1075,    -15}, 0, {   644,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   840,   1126,    -15}, 0, {   644,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   763,   1075,      4}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   763,   1126,    -98}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   763,   1075,    -98}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   718,   1075,    -64}, 0, {   644,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   718,   1126,    -64}, 0, {   644,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1407,   3222,  -2090}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1536,   3171,  -2123}, 0, {   644,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1536,   3222,  -2123}, 0, {   644,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   763,   1075,      4}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   763,   1126,      4}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   840,   1126,    -15}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   830,   1075,    -97}, 0, {  1176,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   830,   1126,    -97}, 0, {  1176,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07020D80 - 0x07020E80\nstatic const Vtx lll_seg7_vertex_07020D80[] = {\n    {{{   830,   1126,    -97}, 0, {  1176,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   830,   1075,    -97}, 0, {  1176,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   763,   1075,    -98}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   763,   1126,    -98}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   840,   1126,    -15}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   840,   1075,    -15}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1407,   3222,  -2090}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1407,   3171,  -2090}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1536,   3171,  -2123}, 0, {   644,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1022,   3078,  -2335}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   975,   3027,  -2252}, 0, {   548,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   975,   3078,  -2252}, 0, {   548,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1408,   3222,  -2260}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1332,   3171,  -2205}, 0, {   644,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1332,   3222,  -2205}, 0, {   644,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1408,   3171,  -2260}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07020E80 - 0x07020F80\nstatic const Vtx lll_seg7_vertex_07020E80[] = {\n    {{{  1332,   3222,  -2205}, 0, {   644,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1332,   3171,  -2205}, 0, {   644,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1407,   3171,  -2090}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1407,   3222,  -2090}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1520,   3222,  -2259}, 0, {  1176,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1520,   3171,  -2259}, 0, {  1176,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1408,   3171,  -2260}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1408,   3222,  -2260}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1536,   3222,  -2123}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1536,   3171,  -2123}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1022,   3078,  -2335}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1022,   3027,  -2335}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   975,   3027,  -2252}, 0, {   548,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   975,   3078,  -2252}, 0, {   548,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1100,   3027,  -2138}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1100,   3078,  -2138}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07020F80 - 0x07021070\nstatic const Vtx lll_seg7_vertex_07020F80[] = {\n    {{{  1125,   3078,  -2382}, 0, {  1044,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1125,   3027,  -2382}, 0, {  1044,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1022,   3027,  -2335}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1022,   3078,  -2335}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1245,   3078,  -2346}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1245,   3027,  -2346}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1100,   3078,  -2138}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1254,   3027,  -2193}, 0, {  1040,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1254,   3078,  -2193}, 0, {  1040,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1032,   2972,  -2724}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   986,   2921,  -2691}, 0, {   644,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   986,   2972,  -2691}, 0, {   644,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1245,   3027,  -2346}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1100,   3027,  -2138}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1245,   3078,  -2346}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07021070 - 0x07021170\nstatic const Vtx lll_seg7_vertex_07021070[] = {\n    {{{  1032,   2972,  -2622}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1032,   2921,  -2622}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1109,   2921,  -2642}, 0, {   644,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1109,   2972,  -2642}, 0, {   644,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1032,   2972,  -2724}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1032,   2921,  -2724}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   986,   2921,  -2691}, 0, {   644,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2879,   2089,   -510}, 0, {  1420,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2837,   2038,   -257}, 0, {   512,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2837,   2089,   -257}, 0, {   512,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   986,   2972,  -2691}, 0, {   644,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1032,   2921,  -2622}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1032,   2972,  -2622}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1099,   2972,  -2724}, 0, {  1176,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1032,   2921,  -2724}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1032,   2972,  -2724}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07021170 - 0x07021250\nstatic const Vtx lll_seg7_vertex_07021170[] = {\n    {{{  1109,   2972,  -2642}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1099,   2921,  -2724}, 0, {  1176,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1099,   2972,  -2724}, 0, {  1176,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1032,   2921,  -2724}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1109,   2921,  -2642}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2837,   2038,   -257}, 0, {   512,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2644,   2038,    -36}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2644,   2089,    -36}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2837,   2089,   -257}, 0, {   512,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2275,   1930,     66}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2659,   1930,     95}, 0, {   748,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2659,   1981,     95}, 0, {   748,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2389,   2038,   -202}, 0, {  1020,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2389,   2089,   -202}, 0, {  1020,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07021250 - 0x07021350\nstatic const Vtx lll_seg7_vertex_07021250[] = {\n    {{{ -2457,   2089,   -488}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2879,   2038,   -510}, 0, {  1420,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2879,   2089,   -510}, 0, {  1420,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2837,   2038,   -257}, 0, {   512,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2457,   2038,   -488}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2389,   2089,   -202}, 0, {  1020,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2389,   2038,   -202}, 0, {  1020,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2659,   1981,     95}, 0, {   748,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2659,   1930,     95}, 0, {   748,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2621,   1930,    551}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2621,   1981,    551}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2275,   1930,     66}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2275,   1981,     66}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2321,   1905,   -173}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1940,   1853,    -25}, 0, {  1104,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1940,   1905,    -25}, 0, {  1104,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07021350 - 0x07021450\nstatic const Vtx lll_seg7_vertex_07021350[] = {\n    {{{ -2621,   1981,    551}, 0, {   460,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2219,   1930,    663}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2219,   1981,    663}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2621,   1930,    551}, 0, {   460,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2046,   1930,    475}, 0, {   560,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2046,   1981,    475}, 0, {   560,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2275,   1930,     66}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2275,   1981,     66}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1940,   1905,    -25}, 0, {  1104,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1809,   1853,   -365}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1809,   1905,   -365}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1940,   1853,    -25}, 0, {  1104,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2321,   1905,   -173}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2321,   1853,   -173}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2110,   1853,   -520}, 0, {  1160,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2110,   1905,   -520}, 0, {  1160,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07021450 - 0x07021550\nstatic const Vtx lll_seg7_vertex_07021450[] = {\n    {{{ -2110,   1853,   -520}, 0, {  1160,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2295,   1853,   -410}, 0, {   372,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2295,   1905,   -410}, 0, {   372,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2110,   1905,   -520}, 0, {  1160,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2321,   1853,   -173}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2321,   1905,   -173}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2492,   1864,    967}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2492,   1812,    967}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2090,   1812,   1124}, 0, {   984,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2090,   1864,   1124}, 0, {   984,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2406,   1864,    729}, 0, {   716,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1317,   1720,    631}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1317,   1669,    631}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1570,   1669,    386}, 0, {   776,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2406,   1812,    729}, 0, {   716,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2032,   1812,    695}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07021550 - 0x07021630\nstatic const Vtx lll_seg7_vertex_07021550[] = {\n    {{{ -2090,   1864,   1124}, 0, {   984,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2032,   1812,    695}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2032,   1864,    695}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2406,   1812,    729}, 0, {   716,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2406,   1864,    729}, 0, {   716,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1317,   1720,    631}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1570,   1669,    386}, 0, {   776,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1570,   1720,    386}, 0, {   776,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1972,   1669,    613}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1972,   1720,    613}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1972,   1720,    613}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1907,   1669,   1054}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1907,   1720,   1054}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1972,   1669,    613}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07021630 - 0x07021720\nstatic const Vtx lll_seg7_vertex_07021630[] = {\n    {{{ -1907,   1720,   1054}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1907,   1669,   1054}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1421,   1669,   1096}, 0, {  1008,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1421,   1720,   1096}, 0, {  1008,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1317,   1669,    631}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1317,   1720,    631}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1950,   1679,   1746}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1950,   1628,   1746}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1741,   1628,   1538}, 0, {   936,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1741,   1679,   1538}, 0, {   936,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2255,   1679,   1265}, 0, {  1060,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2255,   1628,   1265}, 0, {  1060,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2370,   1628,   1593}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1874,   1628,   1252}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1874,   1679,   1252}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07021720 - 0x07021820\nstatic const Vtx lll_seg7_vertex_07021720[] = {\n    {{{ -2370,   1679,   1593}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2370,   1628,   1593}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1950,   1628,   1746}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1950,   1679,   1746}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1874,   1679,   1252}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2255,   1628,   1265}, 0, {  1060,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2255,   1679,   1265}, 0, {  1060,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1874,   1628,   1252}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1719,   2442,  -1719}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -669,   2391,  -2500}, 0, {  6100,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -669,   2442,  -2500}, 0, {  6100,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2370,   1628,   1593}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2370,   1679,   1593}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1704,   3539,  -1703}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1704,   3463,  -1703}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2411,   3463,   -480}, 0, {  4056,    479}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07021820 - 0x07021920\nstatic const Vtx lll_seg7_vertex_07021820[] = {\n    {{{  1704,   3539,  -1703}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2411,   3463,   -480}, 0, {  4056,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2411,   3539,   -480}, 0, {  4056,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2154,   3463,  -2153}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1704,   3463,  -1703}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1704,   3539,  -1703}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2154,   3539,  -2153}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1719,   2442,  -1719}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1719,   2391,  -1719}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -669,   2391,  -2500}, 0, {  6100,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1719,   1562,   1720}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2153,   1562,   2154}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2153,   1613,   2154}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2153,   2442,  -2153}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1719,   2391,  -1719}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1719,   2442,  -1719}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07021920 - 0x07021A00\nstatic const Vtx lll_seg7_vertex_07021920[] = {\n    {{{ -2153,   2442,  -2153}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2153,   2391,  -2153}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1719,   2391,  -1719}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2348,   2268,   -628}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2348,   2217,   -628}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1719,   2217,  -1719}, 0, {  6100,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1719,   2268,  -1719}, 0, {  6100,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2942,   2268,   -787}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2348,   2217,   -628}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2348,   2268,   -628}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2942,   2217,   -787}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   645,   1203,   2328}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   645,   1152,   2328}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,   1152,   2328}, 0, {  8144,    479}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07021A00 - 0x07021AE0\nstatic const Vtx lll_seg7_vertex_07021A00[] = {\n    {{{ -1719,   1613,   1720}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1719,   1562,   1720}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2153,   1613,   2154}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,   1613,   2328}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1719,   1562,   1720}, 0, {  6100,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1719,   1613,   1720}, 0, {  6100,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,   1562,   2328}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,   1613,   2943}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,   1562,   2328}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,   1613,   2328}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,   1562,   2943}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   645,   1203,   2328}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,   1152,   2328}, 0, {  8144,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -787,   1203,   2328}, 0, {  8144,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07021AE0 - 0x07021BD0\nstatic const Vtx lll_seg7_vertex_07021AE0[] = {\n    {{{  2302,    639,   1342}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1831,    855,   1831}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2302,    690,   1342}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   788,   1203,   2943}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   788,   1152,   2943}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   645,   1152,   2328}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   645,   1203,   2328}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1831,   1029,   1831}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1831,    978,   1831}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   645,    978,   2328}, 0, {  8144,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   645,   1029,   2328}, 0, {  8144,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2154,   1029,   2154}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2154,    978,   2154}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1831,    978,   1831}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1831,   1029,   1831}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07021BD0 - 0x07021CC0\nstatic const Vtx lll_seg7_vertex_07021BD0[] = {\n    {{{  2601,    218,   -533}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2697,    349,    223}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2697,    400,    223}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2302,    639,   1342}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1831,    804,   1831}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1831,    855,   1831}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2641,    518,    708}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2641,    466,    708}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2302,    639,   1342}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2302,    690,   1342}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2697,    349,    223}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2641,    466,    708}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2641,    518,    708}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2697,    400,    223}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2601,    167,   -533}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07021CC0 - 0x07021DB0\nstatic const Vtx lll_seg7_vertex_07021CC0[] = {\n    {{{  1922,    179,  -1896}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1866,    128,  -1657}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1866,    179,  -1657}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2297,    128,   -997}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2601,    167,   -533}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2601,    218,   -533}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2297,    179,   -997}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2112,    139,  -1381}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2297,    128,   -997}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2297,    179,   -997}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2112,    190,  -1381}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1866,    128,  -1657}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2112,    139,  -1381}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2112,    190,  -1381}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1866,    179,  -1657}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07021DB0 - 0x07021E20\nstatic const Vtx lll_seg7_vertex_07021DB0[] = {\n    {{{  2154,    179,  -2153}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2154,    128,  -2153}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1922,    179,  -1896}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1922,    179,  -1896}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1922,    128,  -1896}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1866,    128,  -1657}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1922,    128,  -1896}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07021E20 - 0x070223C0\nstatic const Gfx lll_seg7_dl_07021E20[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_0700DC00),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_0701D7D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle(11, 10, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701D8C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 3,  1,  0, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 6,  5,  8, 0x0,  9,  5,  7, 0x0),\n    gsSP2Triangles(10,  9, 11, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701D9C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  1,  8,  2, 0x0),\n    gsSP2Triangles( 8,  1,  3, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12,  9, 11, 0x0, 11, 10, 13, 0x0),\n    gsSP2Triangles(14, 11, 13, 0x0, 14, 12, 11, 0x0),\n    gsSP1Triangle( 6, 15,  7, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701DAC0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 5,  3,  1, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10,  8,  7, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(11,  8, 10, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701DBB0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  4,  0,  2, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  8, 10, 0x0),\n    gsSP2Triangles(11,  6,  8, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701DCA0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  5,  0, 0x0,  4,  0,  2, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles(10,  8,  9, 0x0, 11,  6,  8, 0x0),\n    gsSP2Triangles(12, 11,  8, 0x0, 10, 12,  8, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701DDA0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  5,  2,  4, 0x0),\n    gsSP2Triangles( 5,  3,  2, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9,  7,  6, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles(11,  7, 10, 0x0,  8,  7, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 15, 13, 12, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701DEA0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  4,  7, 0x0),\n    gsSP2Triangles( 7,  8,  5, 0x0,  8,  9,  5, 0x0),\n    gsSP2Triangles( 9,  6,  5, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(11, 13, 12, 0x0, 11, 10, 14, 0x0),\n    gsSP1Triangle(11, 14, 13, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701DF90, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  2,  5,  3, 0x0),\n    gsSP2Triangles( 5,  2,  4, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9,  6,  8, 0x0,  7, 10,  8, 0x0),\n    gsSP2Triangles( 9,  8, 11, 0x0, 11,  8, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 15, 12, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701E090, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 4,  6, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701E180, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11,  6, 0x0, 12,  4,  6, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701E280, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701E360, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701E440, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701E530, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14,  8, 0x0),\n    gsSP1Triangle( 8, 14,  9, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701E620, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  3,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 15, 14, 13, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701E720, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  5,  4, 0x0,  6,  4,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701E810, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701E900, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070223C0 - 0x070229B8\nstatic const Gfx lll_seg7_dl_070223C0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_0701E940, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  2,  5,  6, 0x0),\n    gsSP2Triangles( 2,  3,  5, 0x0,  7,  1,  0, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  6,  5,  8, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0,  5,  4, 11, 0x0),\n    gsSP2Triangles( 5, 11,  8, 0x0,  8, 11, 12, 0x0),\n    gsSP2Triangles( 8, 12, 13, 0x0, 11,  4, 12, 0x0),\n    gsSP2Triangles(12,  4,  9, 0x0, 12,  9, 14, 0x0),\n    gsSP2Triangles(13, 12, 14, 0x0, 14,  9,  7, 0x0),\n    gsSP1Triangle( 9,  4, 10, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701EA30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  2,  8, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7, 10, 11, 0x0),\n    gsSP2Triangles( 7, 11,  2, 0x0, 12,  2, 11, 0x0),\n    gsSP2Triangles( 1,  8,  2, 0x0, 13,  2, 12, 0x0),\n    gsSP2Triangles(13,  0,  2, 0x0,  8, 14,  9, 0x0),\n    gsSP2Triangles( 1, 14,  8, 0x0, 14, 15,  9, 0x0),\n    gsSP1Triangle( 1, 15, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701EB30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  5,  4,  1, 0x0),\n    gsSP2Triangles( 5,  1,  3, 0x0,  5,  6,  4, 0x0),\n    gsSP2Triangles( 2,  4,  7, 0x0,  0,  2,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 11, 0x0),\n    gsSP2Triangles(13, 11,  9, 0x0, 12, 11, 15, 0x0),\n    gsSP1Triangle(11, 14, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701EC30, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 3,  1,  4, 0x0,  4,  1,  5, 0x0),\n    gsSP2Triangles( 1,  0,  5, 0x0,  5,  0,  6, 0x0),\n    gsSP2Triangles( 0,  7,  6, 0x0,  0,  8,  7, 0x0),\n    gsSP2Triangles( 5,  6,  9, 0x0,  9,  6,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  9,  7, 13, 0x0),\n    gsSP1Triangle(13,  7, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701ED20, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 2,  1,  3, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 1,  5,  6, 0x0,  1,  6,  3, 0x0),\n    gsSP2Triangles( 6,  7,  3, 0x0,  4,  3,  7, 0x0),\n    gsSP2Triangles( 8,  7,  9, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9,  6, 0x0),\n    gsSP2Triangles(10,  6, 11, 0x0,  5, 12,  6, 0x0),\n    gsSP2Triangles(11,  6, 12, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(12,  5,  0, 0x0, 13, 12,  0, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701EE00, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 4,  2,  1, 0x0,  5,  4,  1, 0x0),\n    gsSP2Triangles( 5,  1,  3, 0x0,  6,  2,  4, 0x0),\n    gsSP2Triangles( 2,  6,  7, 0x0,  5,  3,  8, 0x0),\n    gsSP2Triangles( 9, 10,  6, 0x0,  9,  6, 11, 0x0),\n    gsSP2Triangles(10,  7,  6, 0x0,  8, 11,  6, 0x0),\n    gsSP2Triangles( 6,  5,  8, 0x0,  6,  4,  5, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 15,  7, 10, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701EF00, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  0,  3, 0x0,  5,  3,  2, 0x0),\n    gsSP2Triangles( 5,  4,  3, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  9,  7, 0x0,  6,  8, 10, 0x0),\n    gsSP2Triangles( 6, 10, 11, 0x0,  6, 12, 13, 0x0),\n    gsSP2Triangles( 6, 13, 14, 0x0,  6, 14, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701F000, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 5,  1,  4, 0x0,  3,  6,  7, 0x0),\n    gsSP2Triangles( 4,  3,  7, 0x0,  2,  1,  5, 0x0),\n    gsSP2Triangles( 8,  2,  5, 0x0,  7,  6,  9, 0x0),\n    gsSP2Triangles( 6, 10,  9, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701F100, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 4,  6, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(12, 14, 15, 0x0, 13, 12, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701F200, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6, 10, 0x0),\n    gsSP2Triangles( 6, 11, 12, 0x0,  9, 13, 11, 0x0),\n    gsSP2Triangles( 9, 11,  6, 0x0, 14, 12, 11, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701F2F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  6,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  2,  1, 12, 0x0),\n    gsSP2Triangles( 2, 12, 13, 0x0, 13, 12, 14, 0x0),\n    gsSP2Triangles(13, 14,  5, 0x0,  5, 14, 15, 0x0),\n    gsSP1Triangle( 5, 15,  6, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701F3F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  7,  6,  8, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  9,  8, 10, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 11, 10, 12, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 13, 12, 14, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701F4F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  3,  0, 0x0,  4,  5,  3, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  0,  2,  9, 0x0),\n    gsSP2Triangles( 0,  9, 10, 0x0,  0, 10, 11, 0x0),\n    gsSP2Triangles( 4,  0, 11, 0x0, 12, 13, 14, 0x0),\n    gsSP2Triangles( 4, 11, 14, 0x0, 13,  4, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070229B8 - 0x07022AE0\nstatic const Gfx lll_seg7_dl_070229B8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_0700E400),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_0701F5E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  9,  8, 11, 0x0),\n    gsSP2Triangles( 9, 12, 13, 0x0,  9, 14, 12, 0x0),\n    gsSP2Triangles( 9, 11, 14, 0x0,  2, 15,  0, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701F6E0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701F7C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701F8B0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07022AE0 - 0x07022DF0\nstatic const Gfx lll_seg7_dl_07022AE0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_0700EC00),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_0701F990, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 1,  3,  2, 0x0,  4,  5,  2, 0x0),\n    gsSP2Triangles( 5,  6,  2, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 7,  8,  6, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles( 0, 10, 11, 0x0,  0, 12, 10, 0x0),\n    gsSP2Triangles( 0, 11,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701FA90, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701FB80, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 6, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701FC60, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 6,  8, 10, 0x0,  0, 11, 12, 0x0),\n    gsSP2Triangles( 0,  2, 11, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701FD60, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  0,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 6, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701FE40, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 6, 10,  9, 0x0,  0, 11, 12, 0x0),\n    gsSP2Triangles( 0,  2, 11, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701FF40, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles( 8, 12, 11, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_07020040, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  1,  5, 0x0,  6,  0,  2, 0x0),\n    gsSP2Triangles( 7,  6,  2, 0x0,  1,  0,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 12,  9, 11, 0x0),\n    gsSP2Triangles( 1,  8,  5, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_07020140, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_07020230, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11,  7,  9, 0x0),\n    gsSP2Triangles(10,  8, 12, 0x0,  8, 13, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07022DF0 - 0x070235C8\nstatic const Gfx lll_seg7_dl_07022DF0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_0700F400),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 16 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07020310, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(lll_seg7_vertex_07020400, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_070204F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(lll_seg7_vertex_070205E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11,  0, 0x0, 10, 12, 11, 0x0),\n    gsSP2Triangles( 0, 11,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_070206E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_070207D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  4, 0x0),\n    gsSP2Triangles( 4,  8,  5, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP2Triangles(12, 11, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_070208D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  3,  0, 0x0,  4,  5,  3, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 6, 12,  7, 0x0, 13, 14, 12, 0x0),\n    gsSP1Triangle(13, 12,  6, 0x0),\n    gsSPVertex(lll_seg7_vertex_070209C0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(lll_seg7_vertex_07020AA0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(lll_seg7_vertex_07020B80, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 6,  5,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(lll_seg7_vertex_07020C80, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  7, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_07020D80, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  1, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 15, 13, 0x0),\n    gsSPVertex(lll_seg7_vertex_07020E80, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  5,  4, 0x0,  8,  9,  5, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 12, 14, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_07020F80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  1,  0, 0x0,  4,  5,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 8,  7, 12, 0x0,  6, 13,  7, 0x0),\n    gsSP1Triangle( 8, 12, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_07021070, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  6, 11, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_07021170, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 7,  6, 12, 0x0,  7, 12, 13, 0x0),\n    gsSPVertex(lll_seg7_vertex_07021250, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  5,  4,  0, 0x0),\n    gsSP2Triangles( 5,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11,  7, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_07021350, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 11, 0x0, 10,  9, 14, 0x0),\n    gsSP1Triangle(10, 14, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_07021450, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  6, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(10, 14,  7, 0x0,  9,  8, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_07021550, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 2,  1,  3, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(lll_seg7_vertex_07021630, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  9,  8, 13, 0x0),\n    gsSP1Triangle( 9, 13, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_07021720, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  6, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_07021820, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_07021920, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(lll_seg7_vertex_07021A00, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(lll_seg7_vertex_07021AE0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_07021BD0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(lll_seg7_vertex_07021CC0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_07021DB0, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 1,  6,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070235C8 - 0x070236E8\nconst Gfx lll_seg7_dl_070235C8[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogFactor(0x0855, 0xF8AB), // This isn't gsSPFogPosition since there is no valid min/max pair that corresponds to 0x0855F8AB\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_07021E20),\n    gsSPDisplayList(lll_seg7_dl_070223C0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_070229B8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_07022AE0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 4, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (16 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_07022DF0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPGeometryMode(G_FOG, G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/lll/areas/2/2/model.inc.c",
    "content": "// 0x070236E8 - 0x07023700\nstatic const Lights1 lll_seg7_lights_070236E8 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07023700 - 0x070237E0\nstatic const Vtx lll_seg7_vertex_07023700[] = {\n    {{{  2424,   3539,  -1268}, 0, {     0,    990}, {0x20, 0x6c, 0xc8, 0xff}}},\n    {{{  2254,   3539,  -1170}, 0, {   990,    990}, {0xa6, 0x56, 0x16, 0xff}}},\n    {{{  2340,   3591,  -1021}, 0, {   990,  -3098}, {0xbf, 0x6c, 0x00, 0xff}}},\n    {{{  2315,   3539,  -1064}, 0, {   990,  -1930}, {0x92, 0x00, 0x3f, 0xff}}},\n    {{{  2510,   3591,  -1119}, 0, {     0,  -3098}, {0x40, 0x55, 0xbd, 0xff}}},\n    {{{  2485,   3539,  -1162}, 0, {     0,  -1930}, {0x6e, 0x00, 0xc1, 0xff}}},\n    {{{  2114,   3621,  -1186}, 0, {   990,      0}, {0x5d, 0x54, 0x0c, 0xff}}},\n    {{{  2114,   3539,  -1186}, 0, {     0,      0}, {0x5a, 0x00, 0x58, 0xff}}},\n    {{{  2080,   3539,  -1283}, 0, {     0,    990}, {0x58, 0x00, 0xa5, 0xff}}},\n    {{{  2080,   3621,  -1283}, 0, {   990,    990}, {0x0e, 0x33, 0x8d, 0xff}}},\n    {{{  2003,   3621,  -1256}, 0, {   990,    990}, {0xa3, 0x54, 0xf4, 0xff}}},\n    {{{  2003,   3539,  -1256}, 0, {     0,    990}, {0xa5, 0x00, 0xa8, 0xff}}},\n    {{{  2036,   3539,  -1159}, 0, {     0,      0}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{  2036,   3621,  -1159}, 0, {   990,      0}, {0xf1, 0x33, 0x72, 0xff}}},\n};\n\n// 0x070237E0 - 0x070238E0\nstatic const Vtx lll_seg7_vertex_070237E0[] = {\n    {{{  2076,   3621,  -1330}, 0, {   990,      0}, {0x5e, 0x54, 0xfd, 0xff}}},\n    {{{  2076,   3539,  -1330}, 0, {     0,      0}, {0x69, 0x00, 0x47, 0xff}}},\n    {{{  2027,   3539,  -1419}, 0, {     0,    990}, {0x48, 0x00, 0x98, 0xff}}},\n    {{{  2114,   3621,  -1186}, 0, {     0,      0}, {0x5d, 0x54, 0x0c, 0xff}}},\n    {{{  2003,   3621,  -1256}, 0, {   990,    990}, {0xa3, 0x54, 0xf4, 0xff}}},\n    {{{  2036,   3621,  -1159}, 0, {   990,      0}, {0xf1, 0x33, 0x72, 0xff}}},\n    {{{  2080,   3621,  -1283}, 0, {     0,    990}, {0x0e, 0x33, 0x8d, 0xff}}},\n    {{{  2076,   3621,  -1330}, 0, {     0,      0}, {0x5e, 0x54, 0xfd, 0xff}}},\n    {{{  1955,   3621,  -1379}, 0, {   990,    990}, {0xa2, 0x54, 0x04, 0xff}}},\n    {{{  2005,   3621,  -1290}, 0, {   990,      0}, {0x05, 0x33, 0x73, 0xff}}},\n    {{{  2027,   3621,  -1419}, 0, {     0,    990}, {0xfc, 0x33, 0x8d, 0xff}}},\n    {{{  2005,   3539,  -1290}, 0, {     0,      0}, {0xb9, 0x00, 0x69, 0xff}}},\n    {{{  1955,   3539,  -1379}, 0, {     0,    990}, {0x98, 0x00, 0xb9, 0xff}}},\n    {{{  2273,   3760,  -1709}, 0, {   990,    990}, {0xc2, 0xac, 0xba, 0xff}}},\n    {{{  2353,   3862,  -1730}, 0, {     0,      0}, {0x17, 0x33, 0x8f, 0xff}}},\n    {{{  2353,   3760,  -1730}, 0, {     0,    990}, {0x56, 0xcd, 0xb4, 0xff}}},\n};\n\n// 0x070238E0 - 0x070239E0\nstatic const Vtx lll_seg7_vertex_070238E0[] = {\n    {{{  2076,   3621,  -1330}, 0, {   990,      0}, {0x5e, 0x54, 0xfd, 0xff}}},\n    {{{  2027,   3539,  -1419}, 0, {     0,    990}, {0x48, 0x00, 0x98, 0xff}}},\n    {{{  2027,   3621,  -1419}, 0, {   990,    990}, {0xfc, 0x33, 0x8d, 0xff}}},\n    {{{  2374,   3760,  -1651}, 0, {     0,    990}, {0x3e, 0xac, 0x46, 0xff}}},\n    {{{  2374,   3862,  -1651}, 0, {     0,      0}, {0x5c, 0x54, 0x13, 0xff}}},\n    {{{  2295,   3862,  -1630}, 0, {   990,      0}, {0xe9, 0x33, 0x71, 0xff}}},\n    {{{  2295,   3760,  -1630}, 0, {   990,    990}, {0xaa, 0xcd, 0x4d, 0xff}}},\n    {{{  2376,   3555,  -1666}, 0, {     0,    990}, {0x69, 0x00, 0x45, 0xff}}},\n    {{{  2305,   3760,  -1625}, 0, {   990,  -1054}, {0x06, 0x33, 0x73, 0xff}}},\n    {{{  2305,   3555,  -1625}, 0, {   990,    990}, {0xbb, 0x00, 0x69, 0xff}}},\n    {{{  2376,   3760,  -1666}, 0, {     0,  -1054}, {0x5e, 0x54, 0xfb, 0xff}}},\n    {{{  2273,   3760,  -1709}, 0, {   990,    990}, {0xc2, 0xac, 0xba, 0xff}}},\n    {{{  2273,   3862,  -1709}, 0, {   990,      0}, {0xa4, 0x54, 0xee, 0xff}}},\n    {{{  2353,   3862,  -1730}, 0, {     0,      0}, {0x17, 0x33, 0x8f, 0xff}}},\n    {{{  2273,   3862,  -1709}, 0, {     0,      0}, {0xa4, 0x54, 0xee, 0xff}}},\n    {{{  2273,   3760,  -1709}, 0, {     0,    990}, {0xc2, 0xac, 0xba, 0xff}}},\n};\n\n// 0x070239E0 - 0x07023AE0\nstatic const Vtx lll_seg7_vertex_070239E0[] = {\n    {{{  2264,   3555,  -1696}, 0, {   990,    990}, {0x97, 0x00, 0xbb, 0xff}}},\n    {{{  2264,   3760,  -1696}, 0, {   990,  -1054}, {0xa2, 0x54, 0x05, 0xff}}},\n    {{{  2335,   3760,  -1737}, 0, {     0,  -1054}, {0xfa, 0x33, 0x8d, 0xff}}},\n    {{{  2335,   3555,  -1737}, 0, {     0,    990}, {0x45, 0x00, 0x97, 0xff}}},\n    {{{  2374,   3862,  -1651}, 0, {   990,      0}, {0x5c, 0x54, 0x13, 0xff}}},\n    {{{  2374,   3760,  -1651}, 0, {   990,    990}, {0x3e, 0xac, 0x46, 0xff}}},\n    {{{  2353,   3760,  -1730}, 0, {     0,    990}, {0x56, 0xcd, 0xb4, 0xff}}},\n    {{{  2353,   3862,  -1730}, 0, {     0,      0}, {0x17, 0x33, 0x8f, 0xff}}},\n    {{{  2376,   3760,  -1666}, 0, {   990,  -1054}, {0x5e, 0x54, 0xfb, 0xff}}},\n    {{{  2376,   3555,  -1666}, 0, {   990,    990}, {0x69, 0x00, 0x45, 0xff}}},\n    {{{  1892,   3555,  -1481}, 0, {   990,    990}, {0x97, 0x00, 0xbb, 0xff}}},\n    {{{  1963,   3657,  -1522}, 0, {     0,      0}, {0xfb, 0x54, 0xa2, 0xff}}},\n    {{{  1963,   3555,  -1522}, 0, {     0,    990}, {0x45, 0x00, 0x97, 0xff}}},\n    {{{  2273,   3862,  -1709}, 0, {     0,      0}, {0xa4, 0x54, 0xee, 0xff}}},\n    {{{  2295,   3760,  -1630}, 0, {   990,    990}, {0xaa, 0xcd, 0x4d, 0xff}}},\n    {{{  2295,   3862,  -1630}, 0, {   990,      0}, {0xe9, 0x33, 0x71, 0xff}}},\n};\n\n// 0x07023AE0 - 0x07023BE0\nstatic const Vtx lll_seg7_vertex_07023AE0[] = {\n    {{{  2264,   3760,  -1696}, 0, {     0,  -1054}, {0xa2, 0x54, 0x05, 0xff}}},\n    {{{  2305,   3555,  -1625}, 0, {   990,    990}, {0xbb, 0x00, 0x69, 0xff}}},\n    {{{  2305,   3760,  -1625}, 0, {   990,  -1054}, {0x06, 0x33, 0x73, 0xff}}},\n    {{{  2264,   3555,  -1696}, 0, {     0,    990}, {0x97, 0x00, 0xbb, 0xff}}},\n    {{{  2004,   3555,  -1451}, 0, {     0,    990}, {0x69, 0x00, 0x45, 0xff}}},\n    {{{  2004,   3657,  -1451}, 0, {     0,      0}, {0x73, 0x33, 0xfa, 0xff}}},\n    {{{  1933,   3657,  -1410}, 0, {   990,      0}, {0x05, 0x54, 0x5e, 0xff}}},\n    {{{  1933,   3555,  -1410}, 0, {   990,    990}, {0xbb, 0x00, 0x69, 0xff}}},\n    {{{  1892,   3555,  -1481}, 0, {   990,    990}, {0x97, 0x00, 0xbb, 0xff}}},\n    {{{  1892,   3657,  -1481}, 0, {   990,      0}, {0x8d, 0x33, 0x06, 0xff}}},\n    {{{  1963,   3657,  -1522}, 0, {     0,      0}, {0xfb, 0x54, 0xa2, 0xff}}},\n    {{{  2004,   3657,  -1451}, 0, {   990,      0}, {0x73, 0x33, 0xfa, 0xff}}},\n    {{{  1963,   3555,  -1522}, 0, {     0,    990}, {0x45, 0x00, 0x97, 0xff}}},\n    {{{  2004,   3555,  -1451}, 0, {   990,    990}, {0x69, 0x00, 0x45, 0xff}}},\n    {{{  1892,   3657,  -1481}, 0, {     0,      0}, {0x8d, 0x33, 0x06, 0xff}}},\n    {{{  1892,   3555,  -1481}, 0, {     0,    990}, {0x97, 0x00, 0xbb, 0xff}}},\n};\n\n// 0x07023BE0 - 0x07023CD0\nstatic const Vtx lll_seg7_vertex_07023BE0[] = {\n    {{{  2613,   3539,  -1236}, 0, {     0,    990}, {0xfc, 0x64, 0xb2, 0xff}}},\n    {{{  2254,   3591,   -972}, 0, {  7326,      0}, {0xd7, 0x77, 0xf6, 0xff}}},\n    {{{  2595,   3591,  -1168}, 0, {   786,      0}, {0x1a, 0x75, 0xd9, 0xff}}},\n    {{{  2187,   3539,   -990}, 0, {  8144,    990}, {0xb7, 0x65, 0xed, 0xff}}},\n    {{{  2586,   3591,  -1135}, 0, {  1194,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2288,   3591,   -963}, 0, {  6918,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2586,   3591,  -1135}, 0, {  6918,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2758,   3591,   -837}, 0, {  1194,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2792,   3591,   -828}, 0, {   786,      0}, {0x1c, 0x7b, 0x07, 0xff}}},\n    {{{  2595,   3591,  -1168}, 0, {  7326,      0}, {0x1a, 0x75, 0xd9, 0xff}}},\n    {{{  2859,   3539,   -810}, 0, {     0,    990}, {0x49, 0x65, 0x13, 0xff}}},\n    {{{  2613,   3539,  -1236}, 0, {  8144,    990}, {0xfc, 0x64, 0xb2, 0xff}}},\n    {{{  2228,   3539,  -1706}, 0, { -4630,    990}, {0xbf, 0x6b, 0xee, 0xff}}},\n    {{{  2295,   3539,  -1589}, 0, {   990,    990}, {0xf0, 0x6c, 0x40, 0xff}}},\n    {{{  2302,   3555,  -1614}, 0, {   240,    352}, {0xf5, 0x76, 0x2b, 0xff}}},\n};\n\n// 0x07023CD0 - 0x07023DC0\nstatic const Vtx lll_seg7_vertex_07023CD0[] = {\n    {{{  2859,   3539,   -810}, 0, {  8144,    990}, {0x49, 0x65, 0x13, 0xff}}},\n    {{{  2792,   3591,   -828}, 0, {  7326,      0}, {0x1c, 0x7b, 0x07, 0xff}}},\n    {{{  2451,   3591,   -631}, 0, {   786,      0}, {0x01, 0x7a, 0x20, 0xff}}},\n    {{{  2433,   3539,   -564}, 0, {     0,    990}, {0xd5, 0x63, 0x41, 0xff}}},\n    {{{  2460,   3591,   -665}, 0, {  1194,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2758,   3591,   -837}, 0, {  6918,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2433,   3539,   -564}, 0, {  8144,    990}, {0xd5, 0x63, 0x41, 0xff}}},\n    {{{  2451,   3591,   -631}, 0, {  7326,      0}, {0x01, 0x7a, 0x20, 0xff}}},\n    {{{  2254,   3591,   -972}, 0, {   786,      0}, {0xd7, 0x77, 0xf6, 0xff}}},\n    {{{  2288,   3591,   -963}, 0, {  1194,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2460,   3591,   -665}, 0, {  6918,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2187,   3539,   -990}, 0, {     0,    990}, {0xb7, 0x65, 0xed, 0xff}}},\n    {{{  2228,   3539,  -1706}, 0, {   990,    990}, {0xbf, 0x6b, 0xee, 0xff}}},\n    {{{  2338,   3555,  -1749}, 0, { -3880,    352}, {0xfd, 0x77, 0xd6, 0xff}}},\n    {{{  2345,   3539,  -1774}, 0, { -4628,    990}, {0x26, 0x6a, 0xc6, 0xff}}},\n};\n\n// 0x07023DC0 - 0x07023EB0\nstatic const Vtx lll_seg7_vertex_07023DC0[] = {\n    {{{  2252,   3555,  -1700}, 0, { -3880,    352}, {0xd5, 0x76, 0xf4, 0xff}}},\n    {{{  2228,   3539,  -1706}, 0, { -4630,    990}, {0xbf, 0x6b, 0xee, 0xff}}},\n    {{{  2302,   3555,  -1614}, 0, {   240,    352}, {0xf5, 0x76, 0x2b, 0xff}}},\n    {{{  2412,   3539,  -1657}, 0, { -4630,    990}, {0x3b, 0x69, 0x27, 0xff}}},\n    {{{  2388,   3555,  -1663}, 0, { -3880,    352}, {0x34, 0x73, 0xfe, 0xff}}},\n    {{{  2295,   3539,  -1589}, 0, {   990,    990}, {0xf0, 0x6c, 0x40, 0xff}}},\n    {{{  2345,   3539,  -1774}, 0, { -4630,    990}, {0x26, 0x6a, 0xc6, 0xff}}},\n    {{{  2388,   3555,  -1663}, 0, {   240,    352}, {0x34, 0x73, 0xfe, 0xff}}},\n    {{{  2412,   3539,  -1657}, 0, {   990,    990}, {0x3b, 0x69, 0x27, 0xff}}},\n    {{{  2338,   3555,  -1749}, 0, { -3880,    352}, {0xfd, 0x77, 0xd6, 0xff}}},\n    {{{  2228,   3539,  -1706}, 0, {   990,    990}, {0xbf, 0x6b, 0xee, 0xff}}},\n    {{{  2252,   3555,  -1700}, 0, {   240,    352}, {0xd5, 0x76, 0xf4, 0xff}}},\n    {{{  1929,   3555,  -1399}, 0, { -3880,    352}, {0xf2, 0x72, 0x34, 0xff}}},\n    {{{  1880,   3555,  -1484}, 0, {   240,    352}, {0xe1, 0x7a, 0xf8, 0xff}}},\n    {{{  1855,   3539,  -1491}, 0, {   990,    990}, {0xc0, 0x6b, 0xf0, 0xff}}},\n};\n\n// 0x07023EB0 - 0x07023FB0\nstatic const Vtx lll_seg7_vertex_07023EB0[] = {\n    {{{  1966,   3555,  -1534}, 0, { -3880,    352}, {0xfe, 0x73, 0xcd, 0xff}}},\n    {{{  1972,   3539,  -1559}, 0, { -4630,    990}, {0x26, 0x6a, 0xc7, 0xff}}},\n    {{{  1855,   3539,  -1491}, 0, {   990,    990}, {0xc0, 0x6b, 0xf0, 0xff}}},\n    {{{  1880,   3555,  -1484}, 0, {   240,    352}, {0xe1, 0x7a, 0xf8, 0xff}}},\n    {{{  1972,   3539,  -1559}, 0, {   990,    990}, {0x26, 0x6a, 0xc7, 0xff}}},\n    {{{  2015,   3555,  -1448}, 0, { -3880,    352}, {0x29, 0x77, 0xfe, 0xff}}},\n    {{{  2040,   3539,  -1442}, 0, { -4628,    990}, {0x39, 0x6a, 0x26, 0xff}}},\n    {{{  1966,   3555,  -1534}, 0, {   240,    352}, {0xfe, 0x73, 0xcd, 0xff}}},\n    {{{  2040,   3539,  -1442}, 0, { -4630,    990}, {0x39, 0x6a, 0x26, 0xff}}},\n    {{{  1929,   3555,  -1399}, 0, {   240,    352}, {0xf2, 0x72, 0x34, 0xff}}},\n    {{{  1923,   3539,  -1374}, 0, {   990,    990}, {0xee, 0x6b, 0x40, 0xff}}},\n    {{{   680,   2150,    707}, 0, {     0,  11208}, {0x7e, 0x00, 0xfd, 0xff}}},\n    {{{   661,   2150,    689}, 0, {     0,  11208}, {0xfb, 0x00, 0x82, 0xff}}},\n    {{{   661,   3174,    689}, 0, {     0,  -9230}, {0xfc, 0x2a, 0x89, 0xff}}},\n    {{{  1923,   3539,  -1374}, 0, { -4630,    990}, {0xee, 0x6b, 0x40, 0xff}}},\n    {{{  1929,   3555,  -1399}, 0, { -3880,    352}, {0xf2, 0x72, 0x34, 0xff}}},\n};\n\n// 0x07023FB0 - 0x070240B0\nstatic const Vtx lll_seg7_vertex_07023FB0[] = {\n    {{{   680,   2150,    707}, 0, {     0,  11208}, {0x7e, 0x00, 0xfd, 0xff}}},\n    {{{   663,   3174,    725}, 0, {   990,  -9230}, {0x05, 0x29, 0x77, 0xff}}},\n    {{{   663,   2150,    725}, 0, {   990,  11208}, {0x05, 0x00, 0x7e, 0xff}}},\n    {{{   680,   3174,    707}, 0, {     0,  -9230}, {0x49, 0x67, 0xfe, 0xff}}},\n    {{{   644,   2150,    708}, 0, {   990,  11208}, {0x82, 0x00, 0x07, 0xff}}},\n    {{{   661,   3174,    689}, 0, {     0,  -9230}, {0xfc, 0x2a, 0x89, 0xff}}},\n    {{{   661,   2150,    689}, 0, {     0,  11208}, {0xfb, 0x00, 0x82, 0xff}}},\n    {{{   644,   3174,    708}, 0, {   990,  -9230}, {0xb7, 0x67, 0x04, 0xff}}},\n    {{{   766,   1126,    -46}, 0, {   990,  11208}, {0x82, 0x00, 0x01, 0xff}}},\n    {{{   783,   2150,    -64}, 0, {     0,  -9230}, {0xfb, 0x29, 0x89, 0xff}}},\n    {{{   783,   1126,    -64}, 0, {     0,  11208}, {0xfb, 0x00, 0x82, 0xff}}},\n    {{{   802,   1126,    -47}, 0, {     0,  11208}, {0x7e, 0x00, 0xfb, 0xff}}},\n    {{{   784,   2150,    -28}, 0, {   990,  -9230}, {0x01, 0x2a, 0x77, 0xff}}},\n    {{{   784,   1126,    -28}, 0, {   990,  11208}, {0x01, 0x00, 0x7e, 0xff}}},\n    {{{   802,   2150,    -47}, 0, {     0,  -9230}, {0x48, 0x68, 0xfe, 0xff}}},\n    {{{   766,   2150,    -46}, 0, {   990,  -9230}, {0xb6, 0x67, 0x01, 0xff}}},\n};\n\n// 0x070240B0 - 0x070241B0\nstatic const Vtx lll_seg7_vertex_070240B0[] = {\n    {{{  1431,   3222,  -2190}, 0, {     0,   9164}, {0x7e, 0x00, 0xff, 0xff}}},\n    {{{  1431,   4041,  -2190}, 0, {     0,  -7186}, {0x48, 0x68, 0x00, 0xff}}},\n    {{{  1413,   4041,  -2172}, 0, {   990,  -7186}, {0x01, 0x29, 0x77, 0xff}}},\n    {{{  1413,   3222,  -2172}, 0, {   990,   9164}, {0x01, 0x00, 0x7e, 0xff}}},\n    {{{  1395,   3222,  -2189}, 0, {   990,   9164}, {0x82, 0x00, 0x05, 0xff}}},\n    {{{  1412,   4041,  -2208}, 0, {     0,  -7186}, {0xfc, 0x2a, 0x89, 0xff}}},\n    {{{  1412,   3222,  -2208}, 0, {     0,   9164}, {0xfb, 0x00, 0x82, 0xff}}},\n    {{{  1395,   4041,  -2189}, 0, {   990,  -7186}, {0xb7, 0x67, 0x03, 0xff}}},\n    {{{  1097,   3078,  -2269}, 0, {     0,  11208}, {0x7e, 0x00, 0xfb, 0xff}}},\n    {{{  1079,   4102,  -2250}, 0, {   990,  -9230}, {0x01, 0x2a, 0x77, 0xff}}},\n    {{{  1079,   3078,  -2250}, 0, {   990,  11208}, {0x01, 0x00, 0x7e, 0xff}}},\n    {{{  1097,   4102,  -2269}, 0, {     0,  -9230}, {0x48, 0x68, 0xfe, 0xff}}},\n    {{{  1061,   3078,  -2268}, 0, {   990,  11208}, {0x82, 0x00, 0x01, 0xff}}},\n    {{{  1078,   4102,  -2286}, 0, {     0,  -9230}, {0xfb, 0x29, 0x89, 0xff}}},\n    {{{  1078,   3078,  -2286}, 0, {     0,  11208}, {0xfb, 0x00, 0x82, 0xff}}},\n    {{{  1061,   4102,  -2268}, 0, {   990,  -9230}, {0xb6, 0x67, 0x01, 0xff}}},\n};\n\n// 0x070241B0 - 0x07024290\nstatic const Vtx lll_seg7_vertex_070241B0[] = {\n    {{{  1026,   2972,  -2677}, 0, {   990,   3840}, {0x87, 0x00, 0xdb, 0xff}}},\n    {{{  1043,   3758,  -2695}, 0, {     0,  -9230}, {0xd8, 0x33, 0x94, 0xff}}},\n    {{{  1043,   2972,  -2695}, 0, {     0,   3840}, {0x22, 0x00, 0x86, 0xff}}},\n    {{{  1061,   3078,  -2268}, 0, {   990,  11208}, {0x82, 0x00, 0x01, 0xff}}},\n    {{{  1079,   3078,  -2250}, 0, {   990,  11208}, {0x01, 0x00, 0x7e, 0xff}}},\n    {{{  1079,   4102,  -2250}, 0, {   990,  -9230}, {0x01, 0x2a, 0x77, 0xff}}},\n    {{{  1061,   4102,  -2268}, 0, {   990,  -9230}, {0xb6, 0x67, 0x01, 0xff}}},\n    {{{  1097,   4102,  -2269}, 0, {     0,  -9230}, {0x48, 0x68, 0xfe, 0xff}}},\n    {{{  1078,   4102,  -2286}, 0, {     0,  -9230}, {0xfb, 0x29, 0x89, 0xff}}},\n    {{{  1062,   2972,  -2678}, 0, {     0,   3840}, {0x79, 0x00, 0x24, 0xff}}},\n    {{{  1044,   3758,  -2659}, 0, {   990,  -9230}, {0x26, 0x34, 0x6c, 0xff}}},\n    {{{  1044,   2972,  -2659}, 0, {   990,   3840}, {0xd9, 0x00, 0x78, 0xff}}},\n    {{{  1062,   3758,  -2678}, 0, {     0,  -9230}, {0x57, 0x55, 0xde, 0xff}}},\n    {{{  1026,   3758,  -2677}, 0, {   990,  -9230}, {0xa6, 0x54, 0x1e, 0xff}}},\n};\n\n// 0x07024290 - 0x07024350\nstatic const Vtx lll_seg7_vertex_07024290[] = {\n    {{{   744,   2606,  -2762}, 0, {     0,  11208}, {0x6d, 0x00, 0xc0, 0xff}}},\n    {{{   719,   2606,  -2768}, 0, {     0,  11208}, {0xbe, 0x00, 0x94, 0xff}}},\n    {{{   719,   3166,  -2768}, 0, {     0,   1896}, {0xc2, 0x2a, 0x9a, 0xff}}},\n    {{{   744,   3166,  -2762}, 0, {     0,  -9230}, {0x3e, 0x68, 0xdc, 0xff}}},\n    {{{   713,   3166,  -2743}, 0, {   990,  -9230}, {0xc2, 0x67, 0x26, 0xff}}},\n    {{{   737,   3166,  -2737}, 0, {   990,  -9230}, {0x3c, 0x29, 0x67, 0xff}}},\n    {{{   719,   3166,  -2768}, 0, {     0,  -9230}, {0xc2, 0x2a, 0x9a, 0xff}}},\n    {{{   744,   3166,  -2762}, 0, {     0,   1896}, {0x3e, 0x68, 0xdc, 0xff}}},\n    {{{   737,   3166,  -2737}, 0, {   990,   1896}, {0x3c, 0x29, 0x67, 0xff}}},\n    {{{   737,   2606,  -2737}, 0, {   990,  11208}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{   713,   2606,  -2743}, 0, {   990,  11208}, {0x94, 0x00, 0x41, 0xff}}},\n    {{{   713,   3166,  -2743}, 0, {   990,   1896}, {0xc2, 0x67, 0x26, 0xff}}},\n};\n\n// 0x07024350 - 0x07024390\nstatic const Vtx lll_seg7_vertex_07024350[] = {\n    {{{  2758,   3591,   -837}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2288,   3591,   -963}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2460,   3591,   -665}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2586,   3591,  -1135}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07024390 - 0x07024480\nstatic const Vtx lll_seg7_vertex_07024390[] = {\n    {{{  2003,   3539,  -1256}, 0, {   990,    990}, {0xa5, 0x00, 0xa8, 0xff}}},\n    {{{  2003,   3621,  -1256}, 0, {   990,      0}, {0xa3, 0x54, 0xf4, 0xff}}},\n    {{{  2080,   3621,  -1283}, 0, {     0,      0}, {0x0e, 0x33, 0x8d, 0xff}}},\n    {{{  2338,   3555,  -1749}, 0, {   104,    854}, {0xfd, 0x77, 0xd6, 0xff}}},\n    {{{  2302,   3555,  -1614}, 0, {   854,    104}, {0xf5, 0x76, 0x2b, 0xff}}},\n    {{{  2388,   3555,  -1663}, 0, {   104,    104}, {0x34, 0x73, 0xfe, 0xff}}},\n    {{{  2252,   3555,  -1700}, 0, {   854,    854}, {0xd5, 0x76, 0xf4, 0xff}}},\n    {{{  2015,   3555,  -1448}, 0, {   104,    854}, {0x29, 0x77, 0xfe, 0xff}}},\n    {{{  1880,   3555,  -1484}, 0, {   854,    104}, {0xe1, 0x7a, 0xf8, 0xff}}},\n    {{{  1929,   3555,  -1399}, 0, {   104,    104}, {0xf2, 0x72, 0x34, 0xff}}},\n    {{{  1966,   3555,  -1534}, 0, {   854,    854}, {0xfe, 0x73, 0xcd, 0xff}}},\n    {{{  2114,   3539,  -1186}, 0, {   990,    990}, {0x5a, 0x00, 0x58, 0xff}}},\n    {{{  2036,   3621,  -1159}, 0, {     0,      0}, {0xf1, 0x33, 0x72, 0xff}}},\n    {{{  2036,   3539,  -1159}, 0, {     0,    990}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{  2114,   3621,  -1186}, 0, {   990,      0}, {0x5d, 0x54, 0x0c, 0xff}}},\n};\n\n// 0x07024480 - 0x07024570\nstatic const Vtx lll_seg7_vertex_07024480[] = {\n    {{{  2264,   3760,  -1696}, 0, {   990,    990}, {0xa2, 0x54, 0x05, 0xff}}},\n    {{{  2376,   3760,  -1666}, 0, {     0,      0}, {0x5e, 0x54, 0xfb, 0xff}}},\n    {{{  2335,   3760,  -1737}, 0, {     0,    990}, {0xfa, 0x33, 0x8d, 0xff}}},\n    {{{  2003,   3539,  -1256}, 0, {   990,    990}, {0xa5, 0x00, 0xa8, 0xff}}},\n    {{{  2080,   3621,  -1283}, 0, {     0,      0}, {0x0e, 0x33, 0x8d, 0xff}}},\n    {{{  2080,   3539,  -1283}, 0, {     0,    990}, {0x58, 0x00, 0xa5, 0xff}}},\n    {{{  1955,   3539,  -1379}, 0, {   990,    990}, {0x98, 0x00, 0xb9, 0xff}}},\n    {{{  1955,   3621,  -1379}, 0, {   990,      0}, {0xa2, 0x54, 0x04, 0xff}}},\n    {{{  2027,   3621,  -1419}, 0, {     0,      0}, {0xfc, 0x33, 0x8d, 0xff}}},\n    {{{  2027,   3539,  -1419}, 0, {     0,    990}, {0x48, 0x00, 0x98, 0xff}}},\n    {{{  2076,   3539,  -1330}, 0, {   990,    990}, {0x69, 0x00, 0x47, 0xff}}},\n    {{{  2005,   3621,  -1290}, 0, {     0,      0}, {0x05, 0x33, 0x73, 0xff}}},\n    {{{  2005,   3539,  -1290}, 0, {     0,    990}, {0xb9, 0x00, 0x69, 0xff}}},\n    {{{  2076,   3621,  -1330}, 0, {   990,      0}, {0x5e, 0x54, 0xfd, 0xff}}},\n    {{{  2305,   3760,  -1625}, 0, {   990,      0}, {0x06, 0x33, 0x73, 0xff}}},\n};\n\n// 0x07024570 - 0x07024630\nstatic const Vtx lll_seg7_vertex_07024570[] = {\n    {{{  1963,   3657,  -1522}, 0, {     0,    990}, {0xfb, 0x54, 0xa2, 0xff}}},\n    {{{  1892,   3657,  -1481}, 0, {   990,    990}, {0x8d, 0x33, 0x06, 0xff}}},\n    {{{  1933,   3657,  -1410}, 0, {   990,      0}, {0x05, 0x54, 0x5e, 0xff}}},\n    {{{  2004,   3657,  -1451}, 0, {     0,      0}, {0x73, 0x33, 0xfa, 0xff}}},\n    {{{  2374,   3862,  -1651}, 0, {     0,      0}, {0x5c, 0x54, 0x13, 0xff}}},\n    {{{  2353,   3862,  -1730}, 0, {     0,    990}, {0x17, 0x33, 0x8f, 0xff}}},\n    {{{  2273,   3862,  -1709}, 0, {   990,    990}, {0xa4, 0x54, 0xee, 0xff}}},\n    {{{  2295,   3862,  -1630}, 0, {   990,      0}, {0xe9, 0x33, 0x71, 0xff}}},\n    {{{  2295,   3760,  -1630}, 0, {   990,      0}, {0xaa, 0xcd, 0x4d, 0xff}}},\n    {{{  2273,   3760,  -1709}, 0, {   990,    990}, {0xc2, 0xac, 0xba, 0xff}}},\n    {{{  2374,   3760,  -1651}, 0, {     0,      0}, {0x3e, 0xac, 0x46, 0xff}}},\n    {{{  2353,   3760,  -1730}, 0, {     0,    990}, {0x56, 0xcd, 0xb4, 0xff}}},\n};\n\n// 0x07024630 - 0x070247C8\nstatic const Gfx lll_seg7_dl_07024630[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_0700D400),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&lll_seg7_lights_070236E8.l, 1),\n    gsSPLight(&lll_seg7_lights_070236E8.a, 2),\n    gsSPVertex(lll_seg7_vertex_07023700, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  0,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(lll_seg7_vertex_070237E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles( 8, 12, 11, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_070238E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 15,  6, 0x0),\n    gsSPVertex(lll_seg7_vertex_070239E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  3,  2, 0x0,  8,  9,  3, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_07023AE0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 10, 0x0),\n    gsSP2Triangles(11, 13, 12, 0x0, 14,  7,  6, 0x0),\n    gsSP1Triangle(14, 15,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070247C8 - 0x07024B08\nstatic const Gfx lll_seg7_dl_070247C8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_0900B000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07023BE0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  1,  5,  4, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_07023CD0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  2,  5, 0x0,  2,  1,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles( 7, 10,  9, 0x0, 11,  6,  8, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_07023DC0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 3,  2,  5, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  9,  7, 0x0, 10, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_07023EB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  5,  9, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 14, 15,  2, 0x0),\n    gsSPVertex(lll_seg7_vertex_07023FB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 0,  5,  3, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 4,  1,  7, 0x0,  4,  2,  1, 0x0),\n    gsSP2Triangles( 3,  5,  7, 0x0,  3,  7,  1, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 14, 12, 0x0),\n    gsSP2Triangles(14, 15, 12, 0x0,  8, 15,  9, 0x0),\n    gsSP2Triangles(11, 10,  9, 0x0, 11,  9, 14, 0x0),\n    gsSP2Triangles( 8, 12, 15, 0x0,  8, 13, 12, 0x0),\n    gsSP1Triangle(14,  9, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_070240B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 0,  5,  1, 0x0,  0,  6,  5, 0x0),\n    gsSP2Triangles( 4,  2,  7, 0x0,  4,  3,  2, 0x0),\n    gsSP2Triangles( 1,  5,  7, 0x0,  1,  7,  2, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSP2Triangles( 8, 13, 11, 0x0,  8, 14, 13, 0x0),\n    gsSPVertex(lll_seg7_vertex_070241B0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  6,  5, 0x0),\n    gsSP2Triangles( 7,  8,  6, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 12,  1, 13, 0x0),\n    gsSP2Triangles( 0, 13,  1, 0x0,  2,  1, 12, 0x0),\n    gsSP2Triangles( 2, 12,  9, 0x0, 11, 13,  0, 0x0),\n    gsSP2Triangles(11, 10, 13, 0x0, 12, 13, 10, 0x0),\n    gsSPVertex(lll_seg7_vertex_07024290, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  0,  7,  8, 0x0),\n    gsSP2Triangles( 0,  8,  9, 0x0, 10,  2,  1, 0x0),\n    gsSP2Triangles(10, 11,  2, 0x0, 10,  9,  8, 0x0),\n    gsSP2Triangles( 0,  2,  7, 0x0, 10,  8, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07024B08 - 0x07024B40\nstatic const Gfx lll_seg7_dl_07024B08[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07024350, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07024B40 - 0x07024C18\nstatic const Gfx lll_seg7_dl_07024B40[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07024390, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(lll_seg7_vertex_07024480, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(lll_seg7_vertex_07024570, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07024C18 - 0x07024CD8\nconst Gfx lll_seg7_dl_07024C18[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogFactor(0x0855, 0xF8AB), // This isn't gsSPFogPosition since there is no valid min/max pair that corresponds to 0x0855F8AB\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_07024630),\n    gsSPDisplayList(lll_seg7_dl_070247C8),\n    gsSPDisplayList(lll_seg7_dl_07024B08),\n    gsSPDisplayList(lll_seg7_dl_07024B40),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/lll/areas/2/3/model.inc.c",
    "content": "// 0x07024CD8 - 0x07024DC8\nstatic const Vtx lll_seg7_vertex_07024CD8[] = {\n    {{{ -2912,   4617,    781}, 0, {  2523,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2132,   5248,   2133}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2132,   4617,   2133}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -780,   4617,  -2892}, 0, {  2523,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -780,   5248,  -2892}, 0, {  2523,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2132,   5248,  -2132}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2132,   4617,  -2132}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2132,   4617,  -2132}, 0, {  2523,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2132,   5248,  -2132}, 0, {  2523,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2912,   5248,   -780}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2912,   4617,   -780}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2912,   4617,   -780}, 0, {  2523,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2912,   5248,   -780}, 0, {  2523,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2912,   5248,    781}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2912,   4617,    781}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07024DC8 - 0x07024EB8\nstatic const Vtx lll_seg7_vertex_07024DC8[] = {\n    {{{   781,   4617,   2913}, 0, {  2523,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2133,   5248,   2133}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2133,   4617,   2133}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2912,   4617,    781}, 0, {  2523,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2912,   5248,    781}, 0, {  2523,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2132,   5248,   2133}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2132,   4617,   2133}, 0, {  2523,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2132,   5248,   2133}, 0, {  2523,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -780,   5248,   2913}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -780,   4617,   2913}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -780,   4617,   2913}, 0, {  2523,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -780,   5248,   2913}, 0, {  2523,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   781,   5248,   2913}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   781,   4617,   2913}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   781,   5248,   2913}, 0, {  2523,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07024EB8 - 0x07024FA8\nstatic const Vtx lll_seg7_vertex_07024EB8[] = {\n    {{{  2913,   4617,   -780}, 0, {  2523,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2913,   5248,   -780}, 0, {  2523,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2133,   5248,  -2132}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2133,   4617,   2133}, 0, {  2523,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2133,   5248,   2133}, 0, {  2523,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2913,   5248,    781}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2913,   4617,    781}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   781,   4617,  -2892}, 0, {  2523,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   781,   5248,  -2892}, 0, {  2523,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -780,   5248,  -2892}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -780,   4617,  -2892}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2133,   4617,  -2132}, 0, {  2523,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   781,   5248,  -2892}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   781,   4617,  -2892}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2133,   5248,  -2132}, 0, {  2523,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07024FA8 - 0x07025098\nstatic const Vtx lll_seg7_vertex_07024FA8[] = {\n    {{{  -780,   -204,  -2912}, 0, {  4567,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   781,   -204,  -2912}, 0, { -3223,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   781,   -101,  -2912}, 0, { -3223,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2913,   4617,   -780}, 0, {  2523,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2133,   5248,  -2132}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2133,   4617,  -2132}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2386,   5248,   -475}, 0, {   963,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2913,   5248,   -780}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2913,   4617,   -780}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2386,   4617,   -475}, 0, {   963,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2913,   4617,    781}, 0, {  2012,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2913,   5248,    781}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2386,   5248,   -475}, 0, {  -218,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2386,   4617,   -475}, 0, {  -218,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -780,   -101,  -2912}, 0, {  4567,    479}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07025098 - 0x07025188\nstatic const Vtx lll_seg7_vertex_07025098[] = {\n    {{{ -2132,   -101,  -2132}, 0, {  4056,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2132,   -204,  -2132}, 0, {  4056,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -780,   -204,  -2912}, 0, { -3734,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2133,   -101,   2133}, 0, {  4056,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2133,   -204,   2133}, 0, {  4056,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   781,   -204,   2913}, 0, { -3734,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   781,   -101,   2913}, 0, { -3734,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2913,   -101,    781}, 0, {  4056,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2913,   -204,    781}, 0, {  4056,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2133,   -204,   2133}, 0, { -3734,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2133,   -101,   2133}, 0, { -3734,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   781,   -101,  -2912}, 0, {  4056,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2126,   -204,  -2136}, 0, { -3695,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2111,   -101,  -2144}, 0, { -3611,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   781,   -204,  -2912}, 0, {  4056,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07025188 - 0x07025278\nstatic const Vtx lll_seg7_vertex_07025188[] = {\n    {{{ -2132,   -101,   2133}, 0, {  4056,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2912,   -204,    781}, 0, { -3734,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2912,   -101,    781}, 0, { -3734,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2132,   -101,  -2132}, 0, {  4056,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -780,   -204,  -2912}, 0, { -3734,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -780,   -101,  -2912}, 0, { -3734,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2912,   -101,   -780}, 0, {  4567,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2912,   -204,   -780}, 0, {  4567,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2132,   -204,  -2132}, 0, { -3223,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2132,   -101,  -2132}, 0, { -3223,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2912,   -101,    781}, 0, {  4056,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2912,   -204,    781}, 0, {  4056,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2912,   -204,   -780}, 0, { -3734,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2912,   -101,   -780}, 0, { -3734,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2132,   -204,   2133}, 0, {  4056,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07025278 - 0x07025378\nstatic const Vtx lll_seg7_vertex_07025278[] = {\n    {{{  1966,   -204,  -1704}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2111,   -101,  -2144}, 0, {  2162,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2126,   -204,  -2136}, 0, {  2162,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -780,   -101,   2913}, 0, {  4056,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -780,   -204,   2913}, 0, {  4056,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2132,   -204,   2133}, 0, { -3734,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2132,   -101,   2133}, 0, { -3734,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   781,   -101,   2913}, 0, {  4567,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   781,   -204,   2913}, 0, {  4567,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -780,   -204,   2913}, 0, { -3223,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -780,   -101,   2913}, 0, { -3223,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1936,   -101,  -1692}, 0, {   -90,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2576,   -204,   -686}, 0, { -5111,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2913,   -204,    781}, 0, { -5312,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2571,   -101,   -655}, 0, {  1857,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2576,   -204,   -686}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07025378 - 0x070253D8\nstatic const Vtx lll_seg7_vertex_07025378[] = {\n    {{{  2576,   -204,   -686}, 0, { -5111,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2571,   -101,   -655}, 0, { -5265,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1936,   -101,  -1692}, 0, {   -90,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2913,   -204,    781}, 0, { -5312,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2913,   -101,    781}, 0, { -5312,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2571,   -101,   -655}, 0, {  1857,    479}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070253D8 - 0x070255D8\nstatic const Gfx lll_seg7_dl_070253D8[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, lll_seg7_texture_0700D200),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 16 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07024CD8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_07024DC8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(lll_seg7_vertex_07024EB8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(lll_seg7_vertex_07024FA8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_07025098, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(lll_seg7_vertex_07025188, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(lll_seg7_vertex_07025278, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  0, 11,  1, 0x0),\n    gsSP2Triangles(12, 11,  0, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_07025378, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070255D8 - 0x07025648\nconst Gfx lll_seg7_dl_070255D8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 4, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (16 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_070253D8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/lll/areas/2/4/model.inc.c",
    "content": "// 0x07025648 - 0x07025708\nstatic const Vtx lll_seg7_vertex_07025648[] = {\n    {{{  -425,   7373,    246}, 0, {   -46,    622}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   246,   7373,   -425}, 0, {   622,    -48}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   426,   7373,   -245}, 0, {   802,    132}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   7373,   -491}, 0, {   376,   -114}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -425,   7373,   -245}, 0, {   -46,    132}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -245,   7373,   -425}, 0, {   132,    -48}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -491,   7373,      0}, 0, {  -112,    376}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   246,   7373,    426}, 0, {   622,    802}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   7373,    492}, 0, {   376,    868}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -245,   7373,    426}, 0, {   132,    802}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   426,   7373,    246}, 0, {   802,    622}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   492,   7373,      0}, 0, {   868,    376}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07025708 - 0x07025808\nstatic const Vtx lll_seg7_vertex_07025708[] = {\n    {{{   532,   7168,    307}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   307,   7168,    532}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   102,   7168,    177}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -613,   7168,      0}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -181,   7168,    -92}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -204,   7168,      0}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -531,   7168,   -306}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -176,   7168,    102}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -531,   7168,    307}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -306,   7168,    532}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -101,   7168,    177}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{     0,   7168,    614}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{     0,   7168,    205}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -306,   7168,   -531}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{     0,   7168,   -204}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -101,   7168,   -176}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07025808 - 0x070258F8\nstatic const Vtx lll_seg7_vertex_07025808[] = {\n    {{{   532,   7168,    307}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   102,   7168,    177}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   177,   7168,    102}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   614,   7168,      0}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   205,   7168,      0}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   532,   7168,   -306}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   177,   7168,   -101}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   307,   7168,   -531}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   102,   7168,   -176}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{     0,   7168,   -613}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{     0,   7168,   -204}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -306,   7168,   -531}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -531,   7168,   -306}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -101,   7168,   -176}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -181,   7168,    -92}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070258F8 - 0x07025970\nstatic const Gfx lll_seg7_dl_070258F8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09009000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07025648, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  0,  5,  3, 0x0),\n    gsSP2Triangles( 0,  6,  4, 0x0,  0,  7,  8, 0x0),\n    gsSP2Triangles( 0,  8,  9, 0x0,  0, 10,  7, 0x0),\n    gsSP2Triangles( 0, 11, 10, 0x0,  0,  2, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07025970 - 0x07025A48\nstatic const Gfx lll_seg7_dl_07025970[] = {\n    gsSPVertex(lll_seg7_vertex_07025708, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  7,  8, 0x0),\n    gsSP2Triangles( 3,  5,  7, 0x0,  9,  8,  7, 0x0),\n    gsSP2Triangles( 9,  7, 10, 0x0, 11,  9, 10, 0x0),\n    gsSP2Triangles(11, 10, 12, 0x0,  1, 11, 12, 0x0),\n    gsSP2Triangles( 1, 12,  2, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_07025808, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  5,  3,  4, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  7,  5,  6, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  9,  7,  8, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0, 11,  9, 10, 0x0),\n    gsSP2Triangles(12, 11, 13, 0x0, 12, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07025A48 - 0x07025AC0\nconst Gfx lll_seg7_dl_07025A48[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGB, G_CC_DECALRGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_070258F8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(lll_seg7_dl_07025970),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/lll/areas/2/5/model.inc.c",
    "content": "// 0x07025AC0 - 0x07025B80\nstatic const Vtx lll_seg7_vertex_07025AC0[] = {\n    {{{ -2732,   2391,  -1140}, 0, {   479,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2773,   2309,  -1069}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2732,   2309,  -1140}, 0, {   479,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2773,   2391,  -1069}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2446,   2391,  -1636}, 0, {   479,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2487,   2309,  -1565}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2446,   2309,  -1636}, 0, {   479,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2487,   2391,  -1565}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2937,    518,    -30}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2937,    436,     51}, 0, {   479,    479}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2937,    518,     51}, 0, {   479,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2937,    436,    -30}, 0, {     0,    479}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07025B80 - 0x07025BD8\nstatic const Gfx lll_seg7_dl_07025B80[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_0700D000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 16 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07025AC0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07025BD8 - 0x07025C90\nconst Gfx lll_seg7_dl_07025BD8[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogFactor(0x0855, 0xF8AB), // This isn't gsSPFogPosition since there is no valid min/max pair that corresponds to 0x0855F8AB\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 4, G_TX_NOLOD, G_TX_CLAMP, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (16 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_07025B80),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/lll/areas/2/collision.inc.c",
    "content": "// 0x07025F80 - 0x070283D4\nconst Collision lll_seg7_area_2_collision[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x22F),\n    COL_VERTEX(2601, 218, -533),\n    COL_VERTEX(2943, 179, -787),\n    COL_VERTEX(2297, 179, -997),\n    COL_VERTEX(2419, 179, -1227),\n    COL_VERTEX(2554, 159, -1461),\n    COL_VERTEX(2112, 190, -1381),\n    COL_VERTEX(1866, 179, -1657),\n    COL_VERTEX(1922, 179, -1896),\n    COL_VERTEX(2641, 518, 708),\n    COL_VERTEX(2943, 518, 788),\n    COL_VERTEX(2697, 400, 223),\n    COL_VERTEX(1831, 855, 1831),\n    COL_VERTEX(2154, 978, 2154),\n    COL_VERTEX(2154, 855, 2154),\n    COL_VERTEX(645, 1029, 2328),\n    COL_VERTEX(788, 1152, 2943),\n    COL_VERTEX(-787, 1203, 2943),\n    COL_VERTEX(-787, 1562, 2943),\n    COL_VERTEX(-1719, 1613, 1720),\n    COL_VERTEX(-2942, 2268, -787),\n    COL_VERTEX(-2348, 2268, -628),\n    COL_VERTEX(-2153, 2391, -2153),\n    COL_VERTEX(-2153, 2442, -2153),\n    COL_VERTEX(-1719, 2442, -1719),\n    COL_VERTEX(2411, 3539, -480),\n    COL_VERTEX(2943, 3539, -787),\n    COL_VERTEX(1831, 978, 1831),\n    COL_VERTEX(645, 978, 2328),\n    COL_VERTEX(-787, 1152, 2328),\n    COL_VERTEX(-1719, 2391, -1719),\n    COL_VERTEX(-2942, 2217, -787),\n    COL_VERTEX(-2942, 128, -787),\n    COL_VERTEX(-669, 2391, -2500),\n    COL_VERTEX(-787, 128, -2942),\n    COL_VERTEX(-2153, 128, 2154),\n    COL_VERTEX(-787, 128, 2943),\n    COL_VERTEX(788, 128, 2943),\n    COL_VERTEX(1831, 804, 1831),\n    COL_VERTEX(2943, 128, 788),\n    COL_VERTEX(2641, 466, 708),\n    COL_VERTEX(1704, 3463, -1703),\n    COL_VERTEX(2154, 3463, -2153),\n    COL_VERTEX(2154, 179, -2153),\n    COL_VERTEX(-1874, 1679, 1252),\n    COL_VERTEX(-2255, 1679, 1265),\n    COL_VERTEX(-1741, 1679, 1538),\n    COL_VERTEX(-1950, 1679, 1746),\n    COL_VERTEX(-2370, 1679, 1593),\n    COL_VERTEX(-1950, 1628, 1746),\n    COL_VERTEX(-1741, 1628, 1538),\n    COL_VERTEX(-2370, 1628, 1593),\n    COL_VERTEX(-2255, 1628, 1265),\n    COL_VERTEX(-1570, 1720, 386),\n    COL_VERTEX(-1317, 1720, 631),\n    COL_VERTEX(-1907, 1720, 1054),\n    COL_VERTEX(-1421, 1720, 1096),\n    COL_VERTEX(-1972, 1720, 613),\n    COL_VERTEX(-1725, 1268, 709),\n    COL_VERTEX(-1317, 1669, 631),\n    COL_VERTEX(-1421, 1669, 1096),\n    COL_VERTEX(-1907, 1669, 1054),\n    COL_VERTEX(-2032, 1864, 695),\n    COL_VERTEX(-2090, 1864, 1124),\n    COL_VERTEX(-2406, 1864, 729),\n    COL_VERTEX(-2492, 1864, 967),\n    COL_VERTEX(-2238, 1542, 934),\n    COL_VERTEX(-2090, 1812, 1124),\n    COL_VERTEX(-2295, 1905, -410),\n    COL_VERTEX(-2110, 1853, -520),\n    COL_VERTEX(-1809, 1905, -365),\n    COL_VERTEX(-1940, 1905, -25),\n    COL_VERTEX(-2321, 1905, -173),\n    COL_VERTEX(-2086, 1591, -225),\n    COL_VERTEX(-1940, 1853, -25),\n    COL_VERTEX(-2321, 1853, -173),\n    COL_VERTEX(-2295, 1853, -410),\n    COL_VERTEX(-2275, 1981, 66),\n    COL_VERTEX(-2046, 1981, 475),\n    COL_VERTEX(-2275, 1930, 66),\n    COL_VERTEX(-2219, 1981, 663),\n    COL_VERTEX(-2621, 1981, 551),\n    COL_VERTEX(-2659, 1981, 95),\n    COL_VERTEX(-2046, 1930, 475),\n    COL_VERTEX(-2363, 1799, 402),\n    COL_VERTEX(-2659, 1930, 95),\n    COL_VERTEX(-2621, 1930, 551),\n    COL_VERTEX(-2457, 2089, -488),\n    COL_VERTEX(-2389, 2089, -202),\n    COL_VERTEX(-2837, 2038, -257),\n    COL_VERTEX(-2644, 2089, -36),\n    COL_VERTEX(-2879, 2089, -510),\n    COL_VERTEX(-2644, 2038, -36),\n    COL_VERTEX(-2389, 2038, -202),\n    COL_VERTEX(-2572, 1792, -255),\n    COL_VERTEX(-2457, 2038, -488),\n    COL_VERTEX(-2879, 2038, -510),\n    COL_VERTEX(1032, 2972, -2724),\n    COL_VERTEX(1099, 2972, -2724),\n    COL_VERTEX(1109, 2972, -2642),\n    COL_VERTEX(986, 2972, -2691),\n    COL_VERTEX(1109, 2921, -2642),\n    COL_VERTEX(1065, 2879, -2673),\n    COL_VERTEX(1032, 2921, -2724),\n    COL_VERTEX(1099, 2921, -2724),\n    COL_VERTEX(1032, 2972, -2622),\n    COL_VERTEX(1022, 3078, -2335),\n    COL_VERTEX(1125, 3078, -2382),\n    COL_VERTEX(1245, 3078, -2346),\n    COL_VERTEX(1254, 3078, -2193),\n    COL_VERTEX(1100, 3078, -2138),\n    COL_VERTEX(975, 3078, -2252),\n    COL_VERTEX(1100, 3027, -2138),\n    COL_VERTEX(1254, 3027, -2193),\n    COL_VERTEX(975, 3027, -2252),\n    COL_VERTEX(1125, 3027, -2382),\n    COL_VERTEX(1022, 3027, -2335),\n    COL_VERTEX(1408, 3222, -2260),\n    COL_VERTEX(1520, 3222, -2259),\n    COL_VERTEX(1536, 3222, -2123),\n    COL_VERTEX(1332, 3222, -2205),\n    COL_VERTEX(1463, 3115, -2175),\n    COL_VERTEX(1536, 3171, -2123),\n    COL_VERTEX(1408, 3171, -2260),\n    COL_VERTEX(1520, 3171, -2259),\n    COL_VERTEX(1407, 3222, -2090),\n    COL_VERTEX(763, 1126, -98),\n    COL_VERTEX(830, 1126, -97),\n    COL_VERTEX(840, 1126, -15),\n    COL_VERTEX(718, 1126, -64),\n    COL_VERTEX(797, 1033, -46),\n    COL_VERTEX(840, 1075, -15),\n    COL_VERTEX(763, 1075, -98),\n    COL_VERTEX(830, 1075, -97),\n    COL_VERTEX(763, 1126, 4),\n    COL_VERTEX(876, 2150, 327),\n    COL_VERTEX(624, 2150, 82),\n    COL_VERTEX(286, 2150, 750),\n    COL_VERTEX(772, 2150, 792),\n    COL_VERTEX(221, 2150, 309),\n    COL_VERTEX(876, 2099, 327),\n    COL_VERTEX(468, 1698, 405),\n    COL_VERTEX(772, 2099, 792),\n    COL_VERTEX(286, 2099, 750),\n    COL_VERTEX(472, 3028, 894),\n    COL_VERTEX(921, 3028, 808),\n    COL_VERTEX(608, 3028, 1457),\n    COL_VERTEX(991, 2976, 1187),\n    COL_VERTEX(403, 3028, 1305),\n    COL_VERTEX(608, 2976, 1457),\n    COL_VERTEX(647, 2845, 1135),\n    COL_VERTEX(921, 2976, 808),\n    COL_VERTEX(472, 2976, 894),\n    COL_VERTEX(1021, 3130, 1151),\n    COL_VERTEX(1132, 3130, 1131),\n    COL_VERTEX(1211, 3130, 1346),\n    COL_VERTEX(1240, 3130, 1195),\n    COL_VERTEX(1048, 3130, 1362),\n    COL_VERTEX(955, 3130, 1220),\n    COL_VERTEX(1211, 3079, 1346),\n    COL_VERTEX(1048, 3079, 1362),\n    COL_VERTEX(955, 3079, 1220),\n    COL_VERTEX(1132, 3079, 1131),\n    COL_VERTEX(1021, 3079, 1151),\n    COL_VERTEX(1266, 3202, 1191),\n    COL_VERTEX(1360, 3202, 1204),\n    COL_VERTEX(1356, 3202, 1391),\n    COL_VERTEX(1439, 3202, 1282),\n    COL_VERTEX(1340, 3095, 1304),\n    COL_VERTEX(1356, 3151, 1391),\n    COL_VERTEX(1360, 3151, 1204),\n    COL_VERTEX(1439, 3151, 1282),\n    COL_VERTEX(1240, 3202, 1326),\n    COL_VERTEX(1568, 3181, 1227),\n    COL_VERTEX(1568, 3232, 1227),\n    COL_VERTEX(2034, 3232, 1185),\n    COL_VERTEX(2136, 3232, 1418),\n    COL_VERTEX(1870, 3232, 1740),\n    COL_VERTEX(1438, 3232, 1590),\n    COL_VERTEX(2034, 3181, 1185),\n    COL_VERTEX(1840, 3050, 1444),\n    COL_VERTEX(1438, 3181, 1590),\n    COL_VERTEX(1870, 3181, 1740),\n    COL_VERTEX(-100, 82, -1325),\n    COL_VERTEX(-149, 82, -1492),\n    COL_VERTEX(272, 82, -1355),\n    COL_VERTEX(694, 82, -1310),\n    COL_VERTEX(1063, 82, -1465),\n    COL_VERTEX(1251, 82, -1991),\n    COL_VERTEX(1569, 82, -1978),\n    COL_VERTEX(1683, 0, -1866),\n    COL_VERTEX(83, 82, -1558),\n    COL_VERTEX(334, 82, -1565),\n    COL_VERTEX(549, 82, -1588),\n    COL_VERTEX(812, 82, -1638),\n    COL_VERTEX(996, 82, -1725),\n    COL_VERTEX(1075, 82, -2032),\n    COL_VERTEX(1211, 82, -2222),\n    COL_VERTEX(1610, 82, -2166),\n    COL_VERTEX(-1246, 0, -699),\n    COL_VERTEX(-984, 0, -615),\n    COL_VERTEX(-1386, 0, -1060),\n    COL_VERTEX(-776, 0, -615),\n    COL_VERTEX(-546, 0, -786),\n    COL_VERTEX(-663, 102, -865),\n    COL_VERTEX(-656, 102, -1042),\n    COL_VERTEX(-536, 0, -1039),\n    COL_VERTEX(-488, 0, -1178),\n    COL_VERTEX(-623, 103, -1140),\n    COL_VERTEX(-1008, 0, -1482),\n    COL_VERTEX(-1313, 0, -1368),\n    COL_VERTEX(-987, 103, -1352),\n    COL_VERTEX(-801, 0, -1409),\n    COL_VERTEX(-604, 0, -1392),\n    COL_VERTEX(-704, 103, -1289),\n    COL_VERTEX(-842, 103, -1301),\n    COL_VERTEX(-1201, 103, -1273),\n    COL_VERTEX(1507, 49, -1190),\n    COL_VERTEX(1569, 307, -1149),\n    COL_VERTEX(1621, 0, -1243),\n    COL_VERTEX(1504, 51, -1085),\n    COL_VERTEX(1452, 0, -1046),\n    COL_VERTEX(1606, 0, -997),\n    COL_VERTEX(1565, 54, -1056),\n    COL_VERTEX(1392, 0, -1283),\n    COL_VERTEX(1442, 28, -1272),\n    COL_VERTEX(1492, 184, -1253),\n    COL_VERTEX(1447, 30, -1230),\n    COL_VERTEX(-1457, 102, 813),\n    COL_VERTEX(-1037, 0, 741),\n    COL_VERTEX(-1383, 0, 1047),\n    COL_VERTEX(-1300, 80, 673),\n    COL_VERTEX(-1472, 89, 366),\n    COL_VERTEX(-1415, 0, 130),\n    COL_VERTEX(-1988, 0, 248),\n    COL_VERTEX(-1817, 0, 1021),\n    COL_VERTEX(-2120, 0, 611),\n    COL_VERTEX(-1145, 102, 456),\n    COL_VERTEX(-994, 0, 418),\n    COL_VERTEX(-1741, 0, 1511),\n    COL_VERTEX(-1684, 102, 1704),\n    COL_VERTEX(-1602, 102, 1563),\n    COL_VERTEX(-1300, 0, 1322),\n    COL_VERTEX(-1166, 102, 1583),\n    COL_VERTEX(-1015, 0, 1545),\n    COL_VERTEX(-939, 0, 1785),\n    COL_VERTEX(-1261, 0, 2004),\n    COL_VERTEX(-1314, 102, 1858),\n    COL_VERTEX(-1570, 0, 1928),\n    COL_VERTEX(-1878, 0, 1747),\n    COL_VERTEX(-1367, 0, -632),\n    COL_VERTEX(-1410, 26, -611),\n    COL_VERTEX(-1564, 0, -734),\n    COL_VERTEX(-1578, 26, -699),\n    COL_VERTEX(-1465, 26, -323),\n    COL_VERTEX(-1866, 26, -189),\n    COL_VERTEX(-1942, 0, -641),\n    COL_VERTEX(-1901, 26, -619),\n    COL_VERTEX(-2038, 0, -303),\n    COL_VERTEX(-1983, 26, -330),\n    COL_VERTEX(-1670, 26, -199),\n    COL_VERTEX(-1901, 0, -138),\n    COL_VERTEX(-1671, 0, -150),\n    COL_VERTEX(-1431, 0, -295),\n    COL_VERTEX(-787, 2442, -2942),\n    COL_VERTEX(-353, 2442, -2693),\n    COL_VERTEX(-223, 2442, -2347),\n    COL_VERTEX(661, 2606, -2485),\n    COL_VERTEX(443, 2496, -2449),\n    COL_VERTEX(774, 2554, -2563),\n    COL_VERTEX(583, 2606, -2942),\n    COL_VERTEX(-241, 2454, -2634),\n    COL_VERTEX(-507, 2391, -2942),\n    COL_VERTEX(-223, 2391, -2347),\n    COL_VERTEX(-353, 2391, -2693),\n    COL_VERTEX(315, 2541, -2634),\n    COL_VERTEX(377, 2553, -2663),\n    COL_VERTEX(583, 2352, -2942),\n    COL_VERTEX(774, 2606, -2563),\n    COL_VERTEX(844, 2606, -2742),\n    COL_VERTEX(844, 2554, -2742),\n    COL_VERTEX(2374, 3760, -1651),\n    COL_VERTEX(2374, 3862, -1651),\n    COL_VERTEX(2273, 3760, -1709),\n    COL_VERTEX(2353, 3862, -1730),\n    COL_VERTEX(2004, 3657, -1451),\n    COL_VERTEX(1963, 3657, -1522),\n    COL_VERTEX(1892, 3657, -1481),\n    COL_VERTEX(1892, 3555, -1481),\n    COL_VERTEX(2004, 3555, -1451),\n    COL_VERTEX(2264, 3760, -1696),\n    COL_VERTEX(2273, 3862, -1709),\n    COL_VERTEX(2264, 3555, -1696),\n    COL_VERTEX(2420, 3555, -1692),\n    COL_VERTEX(2295, 3760, -1630),\n    COL_VERTEX(2114, 3621, -1186),\n    COL_VERTEX(2003, 3621, -1256),\n    COL_VERTEX(2005, 3539, -1290),\n    COL_VERTEX(2005, 3621, -1290),\n    COL_VERTEX(2076, 3539, -1330),\n    COL_VERTEX(2114, 3539, -1186),\n    COL_VERTEX(1923, 3539, -1374),\n    COL_VERTEX(2040, 3539, -1442),\n    COL_VERTEX(1929, 3555, -1399),\n    COL_VERTEX(2015, 3555, -1448),\n    COL_VERTEX(1966, 3555, -1534),\n    COL_VERTEX(1972, 3539, -1559),\n    COL_VERTEX(2228, 3539, -1706),\n    COL_VERTEX(2252, 3555, -1700),\n    COL_VERTEX(2375, 3555, -1770),\n    COL_VERTEX(2434, 3539, -1669),\n    COL_VERTEX(1937, 3539, -1413),\n    COL_VERTEX(2076, 3621, -1330),\n    COL_VERTEX(2007, 3621, -1454),\n    COL_VERTEX(2187, 3539, -990),\n    COL_VERTEX(2613, 3539, -1236),\n    COL_VERTEX(2433, 3539, -564),\n    COL_VERTEX(2859, 3539, -810),\n    COL_VERTEX(2254, 3591, -972),\n    COL_VERTEX(2451, 3591, -631),\n    COL_VERTEX(2595, 3591, -1168),\n    COL_VERTEX(2460, 3591, -665),\n    COL_VERTEX(2586, 3591, -1135),\n    COL_VERTEX(2758, 3591, -837),\n    COL_VERTEX(2424, 3539, -1268),\n    COL_VERTEX(2254, 3539, -1170),\n    COL_VERTEX(2302, 690, 1342),\n    COL_VERTEX(2154, 1029, 2154),\n    COL_VERTEX(1831, 1029, 1831),\n    COL_VERTEX(788, 1029, 2943),\n    COL_VERTEX(645, 1152, 2328),\n    COL_VERTEX(645, 1203, 2328),\n    COL_VERTEX(-787, 1203, 2328),\n    COL_VERTEX(788, 1203, 2943),\n    COL_VERTEX(-787, 1562, 2328),\n    COL_VERTEX(-2153, 1613, 2154),\n    COL_VERTEX(-787, 1613, 2943),\n    COL_VERTEX(-787, 1613, 2328),\n    COL_VERTEX(-2153, 2268, -2153),\n    COL_VERTEX(-1719, 2268, -1719),\n    COL_VERTEX(-669, 2442, -2500),\n    COL_VERTEX(1704, 3539, -1703),\n    COL_VERTEX(2154, 3539, -2153),\n    COL_VERTEX(-1719, 2217, -1719),\n    COL_VERTEX(-1719, 1562, 1720),\n    COL_VERTEX(-2348, 2217, -628),\n    COL_VERTEX(-2153, 128, -2153),\n    COL_VERTEX(2154, 128, 2154),\n    COL_VERTEX(-2153, 1562, 2154),\n    COL_VERTEX(-787, 2391, -2942),\n    COL_VERTEX(2302, 639, 1342),\n    COL_VERTEX(2697, 349, 223),\n    COL_VERTEX(2601, 167, -533),\n    COL_VERTEX(2154, 2121, -2153),\n    COL_VERTEX(2943, 2121, -787),\n    COL_VERTEX(2411, 3463, -480),\n    COL_VERTEX(-1874, 1628, 1252),\n    COL_VERTEX(-2102, 1341, 1520),\n    COL_VERTEX(-1972, 1669, 613),\n    COL_VERTEX(-1570, 1669, 386),\n    COL_VERTEX(-2406, 1812, 729),\n    COL_VERTEX(-2032, 1812, 695),\n    COL_VERTEX(-2492, 1812, 967),\n    COL_VERTEX(-2110, 1905, -520),\n    COL_VERTEX(-1809, 1853, -365),\n    COL_VERTEX(-2219, 1930, 663),\n    COL_VERTEX(-2837, 2089, -257),\n    COL_VERTEX(986, 2921, -2691),\n    COL_VERTEX(1032, 2921, -2622),\n    COL_VERTEX(1245, 3027, -2346),\n    COL_VERTEX(1108, 2977, -2271),\n    COL_VERTEX(1332, 3171, -2205),\n    COL_VERTEX(1407, 3171, -2090),\n    COL_VERTEX(718, 1075, -64),\n    COL_VERTEX(763, 1075, 4),\n    COL_VERTEX(624, 2099, 82),\n    COL_VERTEX(221, 2099, 309),\n    COL_VERTEX(991, 3028, 1187),\n    COL_VERTEX(403, 2976, 1305),\n    COL_VERTEX(1089, 3028, 1235),\n    COL_VERTEX(1240, 3079, 1195),\n    COL_VERTEX(1240, 3151, 1326),\n    COL_VERTEX(1266, 3151, 1191),\n    COL_VERTEX(2136, 3181, 1418),\n    COL_VERTEX(1413, 0, -1841),\n    COL_VERTEX(1708, 0, -2241),\n    COL_VERTEX(-203, 0, -1241),\n    COL_VERTEX(203, 0, -1250),\n    COL_VERTEX(-292, 0, -1565),\n    COL_VERTEX(724, 0, -1191),\n    COL_VERTEX(1147, 0, -1406),\n    COL_VERTEX(-56, 0, -1627),\n    COL_VERTEX(248, 0, -1650),\n    COL_VERTEX(464, 0, -1691),\n    COL_VERTEX(747, 0, -1727),\n    COL_VERTEX(948, 0, -1849),\n    COL_VERTEX(1006, 0, -2087),\n    COL_VERTEX(1165, 0, -2342),\n    COL_VERTEX(-1251, 103, -1057),\n    COL_VERTEX(-1153, 102, -805),\n    COL_VERTEX(-970, 102, -746),\n    COL_VERTEX(-825, 102, -746),\n    COL_VERTEX(1663, 0, -1131),\n    COL_VERTEX(1564, 0, -1290),\n    COL_VERTEX(1402, 0, -1186),\n    COL_VERTEX(1496, 0, -1319),\n    COL_VERTEX(-1643, 102, 767),\n    COL_VERTEX(-1805, 88, 533),\n    COL_VERTEX(-1828, 102, 659),\n    COL_VERTEX(-1337, 102, 1449),\n    COL_VERTEX(-1121, 102, 1727),\n    COL_VERTEX(-1499, 102, 1813),\n    COL_VERTEX(-1663, 56, -490),\n    COL_VERTEX(-507, 2442, -2942),\n    COL_VERTEX(788, 2606, -2942),\n    COL_VERTEX(443, 2547, -2449),\n    COL_VERTEX(661, 2554, -2485),\n    COL_VERTEX(377, 2502, -2663),\n    COL_VERTEX(583, 2554, -2942),\n    COL_VERTEX(788, 2554, -2942),\n    COL_VERTEX(-241, 2403, -2634),\n    COL_VERTEX(315, 2490, -2634),\n    COL_VERTEX(2295, 3862, -1630),\n    COL_VERTEX(2353, 3760, -1730),\n    COL_VERTEX(1933, 3657, -1410),\n    COL_VERTEX(1933, 3555, -1410),\n    COL_VERTEX(1963, 3555, -1522),\n    COL_VERTEX(2305, 3555, -1625),\n    COL_VERTEX(2305, 3760, -1625),\n    COL_VERTEX(2379, 3760, -1763),\n    COL_VERTEX(2379, 3555, -1763),\n    COL_VERTEX(2420, 3760, -1692),\n    COL_VERTEX(2036, 3621, -1159),\n    COL_VERTEX(2080, 3621, -1283),\n    COL_VERTEX(2036, 3539, -1159),\n    COL_VERTEX(2003, 3539, -1256),\n    COL_VERTEX(2080, 3539, -1283),\n    COL_VERTEX(2007, 3539, -1454),\n    COL_VERTEX(1855, 3539, -1491),\n    COL_VERTEX(1880, 3555, -1484),\n    COL_VERTEX(2295, 3539, -1589),\n    COL_VERTEX(2302, 3555, -1614),\n    COL_VERTEX(2366, 3539, -1786),\n    COL_VERTEX(2425, 3555, -1685),\n    COL_VERTEX(1937, 3621, -1413),\n    COL_VERTEX(2004, 3539, -1451),\n    COL_VERTEX(2004, 3621, -1451),\n    COL_VERTEX(2288, 3591, -963),\n    COL_VERTEX(2792, 3591, -828),\n    COL_VERTEX(2510, 3591, -1119),\n    COL_VERTEX(2485, 3539, -1162),\n    COL_VERTEX(2340, 3591, -1021),\n    COL_VERTEX(2315, 3539, -1064),\n    COL_VERTEX(153, 55, -2784),\n    COL_VERTEX(179, 22, -2717),\n    COL_VERTEX(188, 33, -2720),\n    COL_VERTEX(228, 103, -2759),\n    COL_VERTEX(230, 192, -2785),\n    COL_VERTEX(206, 231, -2809),\n    COL_VERTEX(174, 20, -2713),\n    COL_VERTEX(111, 42, -2755),\n    COL_VERTEX(119, 27, -2729),\n    COL_VERTEX(142, 21, -2721),\n    COL_VERTEX(39, 458, -2942),\n    COL_VERTEX(190, 650, -2942),\n    COL_VERTEX(214, 313, -2829),\n    COL_VERTEX(238, 350, -2828),\n    COL_VERTEX(480, 0, -2942),\n    COL_VERTEX(75, 102, -2775),\n    COL_VERTEX(40, 141, -2784),\n    COL_VERTEX(-138, 0, -2942),\n    COL_VERTEX(448, 0, -2847),\n    COL_VERTEX(277, 261, -2827),\n    COL_VERTEX(260, 294, -2824),\n    COL_VERTEX(349, 84, -2817),\n    COL_VERTEX(250, 318, -2824),\n    COL_VERTEX(405, 25, -2831),\n    COL_VERTEX(272, 132, -2745),\n    COL_VERTEX(324, 52, -2711),\n    COL_VERTEX(269, 280, -2827),\n    COL_VERTEX(184, 25, -2716),\n    COL_VERTEX(239, 51, -2703),\n    COL_VERTEX(181, 23, -2713),\n    COL_VERTEX(179, 22, -2713),\n    COL_VERTEX(199, 0, -2520),\n    COL_VERTEX(135, 0, -2681),\n    COL_VERTEX(100, 38, -2738),\n    COL_VERTEX(5, 0, -2587),\n    COL_VERTEX(77, 46, -2748),\n    COL_VERTEX(28, 77, -2768),\n    COL_VERTEX(41, 51, -2739),\n    COL_VERTEX(20, 60, -2769),\n    COL_VERTEX(-73, 0, -2781),\n    COL_VERTEX(24, 68, -2769),\n    COL_VERTEX(343, 0, -2531),\n    COL_VERTEX(18, 44, -2764),\n    COL_VERTEX(-470, 247, -2942),\n    COL_VERTEX(-546, 0, -2942),\n    COL_VERTEX(-388, 775, -2942),\n    COL_VERTEX(-787, 0, -2942),\n    COL_VERTEX(437, 832, -2942),\n    COL_VERTEX(-389, 2555, -2942),\n    COL_VERTEX(527, 256, -2942),\n    COL_VERTEX(623, 0, -2942),\n    COL_VERTEX(788, 0, -2942),\n    COL_VERTEX(430, 2555, -2942),\n    COL_VERTEX(430, 5248, -2942),\n    COL_VERTEX(-787, 5248, -2942),\n    COL_VERTEX(-429, 5248, -2942),\n    COL_VERTEX(788, 128, -2942),\n    COL_VERTEX(-2942, 128, 788),\n    COL_VERTEX(2411, 5248, -480),\n    COL_VERTEX(2154, 128, -2153),\n    COL_VERTEX(1922, 128, -1896),\n    COL_VERTEX(1866, 128, -1657),\n    COL_VERTEX(2305, 0, -1103),\n    COL_VERTEX(1977, 0, -1848),\n    COL_VERTEX(2144, 0, -1286),\n    COL_VERTEX(2112, 139, -1381),\n    COL_VERTEX(2410, 0, -880),\n    COL_VERTEX(2297, 128, -997),\n    COL_VERTEX(2596, 0, -605),\n    COL_VERTEX(2943, 0, 788),\n    COL_VERTEX(788, 5248, -2942),\n    COL_VERTEX(2154, 0, -2153),\n    COL_VERTEX(2154, 5248, -2153),\n    COL_VERTEX(2943, 5248, -787),\n    COL_VERTEX(-2153, 5248, -2153),\n    COL_VERTEX(-2942, 5248, -787),\n    COL_VERTEX(-2942, 5248, 788),\n    COL_VERTEX(-2153, 5248, 2154),\n    COL_VERTEX(-787, 5248, 2943),\n    COL_VERTEX(788, 5248, 2943),\n    COL_VERTEX(2154, 5248, 2154),\n    COL_VERTEX(2943, 5248, 788),\n    COL_VERTEX(2011, 0, -1995),\n    COL_VERTEX(1911, 0, -1676),\n    COL_VERTEX(2154, 0, 2154),\n    COL_VERTEX(788, 0, 2943),\n    COL_VERTEX(-787, 0, 2943),\n    COL_VERTEX(-2153, 0, 2154),\n    COL_VERTEX(-2942, 0, 788),\n    COL_VERTEX(-2942, 0, -787),\n    COL_VERTEX(-2153, 0, -2153),\n    COL_VERTEX(527, 256, -2931),\n    COL_VERTEX(562, 0, -2906),\n    COL_VERTEX(623, 0, -2931),\n    COL_VERTEX(138, 946, -2870),\n    COL_VERTEX(437, 832, -2931),\n    COL_VERTEX(-388, 775, -2931),\n    COL_VERTEX(-389, 2555, -2931),\n    COL_VERTEX(-470, 247, -2931),\n    COL_VERTEX(-546, 0, -2931),\n    COL_VERTEX(430, 2555, -2931),\n    COL_VERTEX(430, 5248, -2931),\n    COL_VERTEX(120, 4229, -2916),\n    COL_VERTEX(1, 2555, -2916),\n    COL_VERTEX(-221, 0, -2835),\n    COL_VERTEX(0, 5248, -2926),\n    COL_VERTEX(-429, 5248, -2931),\n    COL_TRI_INIT(SURFACE_DEFAULT, 127),\n    COL_TRI(469, 462, 495),\n    COL_TRI(495, 496, 469),\n    COL_TRI(497, 462, 463),\n    COL_TRI(497, 495, 462),\n    COL_TRI(498, 495, 497),\n    COL_TRI(498, 496, 495),\n    COL_TRI(499, 500, 497),\n    COL_TRI(498, 497, 500),\n    COL_TRI(463, 499, 497),\n    COL_TRI(501, 502, 503),\n    COL_TRI(502, 501, 466),\n    COL_TRI(499, 501, 503),\n    COL_TRI(463, 501, 499),\n    COL_TRI(466, 501, 463),\n    COL_TRI(508, 511, 524),\n    COL_TRI(499, 504, 500),\n    COL_TRI(504, 499, 503),\n    COL_TRI(500, 504, 505),\n    COL_TRI(504, 522, 505),\n    COL_TRI(504, 503, 522),\n    COL_TRI(500, 505, 507),\n    COL_TRI(498, 500, 506),\n    COL_TRI(500, 507, 506),\n    COL_TRI(508, 503, 523),\n    COL_TRI(508, 524, 522),\n    COL_TRI(22, 29, 23),\n    COL_TRI(25, 524, 341),\n    COL_TRI(25, 525, 524),\n    COL_TRI(263, 506, 526),\n    COL_TRI(263, 526, 22),\n    COL_TRI(337, 526, 527),\n    COL_TRI(22, 21, 29),\n    COL_TRI(337, 527, 19),\n    COL_TRI(31, 527, 528),\n    COL_TRI(19, 344, 20),\n    COL_TRI(19, 30, 344),\n    COL_TRI(31, 528, 509),\n    COL_TRI(509, 528, 529),\n    COL_TRI(509, 529, 34),\n    COL_TRI(334, 529, 530),\n    COL_TRI(334, 530, 335),\n    COL_TRI(18, 343, 334),\n    COL_TRI(343, 347, 334),\n    COL_TRI(16, 530, 531),\n    COL_TRI(335, 333, 336),\n    COL_TRI(335, 17, 333),\n    COL_TRI(16, 531, 332),\n    COL_TRI(328, 531, 532),\n    COL_TRI(336, 333, 343),\n    COL_TRI(336, 343, 18),\n    COL_TRI(13, 533, 9),\n    COL_TRI(332, 329, 330),\n    COL_TRI(332, 15, 329),\n    COL_TRI(328, 532, 326),\n    COL_TRI(13, 532, 533),\n    COL_TRI(326, 26, 327),\n    COL_TRI(326, 12, 26),\n    COL_TRI(1, 9, 533),\n    COL_TRI(510, 354, 533),\n    COL_TRI(353, 1, 533),\n    COL_TRI(354, 353, 533),\n    COL_TRI(340, 354, 24),\n    COL_TRI(340, 40, 354),\n    COL_TRI(24, 510, 525),\n    COL_TRI(352, 1, 353),\n    COL_TRI(352, 4, 1),\n    COL_TRI(42, 4, 352),\n    COL_TRI(24, 525, 25),\n    COL_TRI(42, 511, 7),\n    COL_TRI(511, 512, 7),\n    COL_TRI(512, 511, 523),\n    COL_TRI(7, 513, 6),\n    COL_TRI(7, 512, 513),\n    COL_TRI(513, 512, 534),\n    COL_TRI(512, 523, 534),\n    COL_TRI(513, 517, 5),\n    COL_TRI(513, 5, 6),\n    COL_TRI(514, 513, 516),\n    COL_TRI(514, 517, 513),\n    COL_TRI(517, 2, 5),\n    COL_TRI(517, 519, 2),\n    COL_TRI(518, 517, 514),\n    COL_TRI(518, 519, 517),\n    COL_TRI(519, 0, 2),\n    COL_TRI(519, 351, 0),\n    COL_TRI(520, 519, 518),\n    COL_TRI(520, 351, 519),\n    COL_TRI(0, 350, 10),\n    COL_TRI(0, 351, 350),\n    COL_TRI(521, 351, 520),\n    COL_TRI(521, 38, 351),\n    COL_TRI(330, 329, 28),\n    COL_TRI(350, 8, 10),\n    COL_TRI(350, 39, 8),\n    COL_TRI(8, 349, 325),\n    COL_TRI(8, 39, 349),\n    COL_TRI(349, 11, 325),\n    COL_TRI(349, 37, 11),\n    COL_TRI(327, 26, 27),\n    COL_TRI(327, 27, 14),\n    COL_TRI(330, 28, 331),\n    COL_TRI(20, 344, 342),\n    COL_TRI(20, 342, 338),\n    COL_TRI(23, 29, 32),\n    COL_TRI(23, 32, 339),\n    COL_TRI(341, 41, 340),\n    COL_TRI(34, 540, 509),\n    COL_TRI(41, 40, 340),\n    COL_TRI(36, 537, 538),\n    COL_TRI(346, 537, 36),\n    COL_TRI(36, 538, 35),\n    COL_TRI(35, 538, 539),\n    COL_TRI(35, 539, 34),\n    COL_TRI(346, 536, 537),\n    COL_TRI(34, 539, 540),\n    COL_TRI(509, 540, 541),\n    COL_TRI(509, 541, 31),\n    COL_TRI(31, 541, 542),\n    COL_TRI(31, 542, 345),\n    COL_TRI(345, 542, 498),\n    COL_TRI(345, 498, 33),\n    COL_TRI(508, 523, 511),\n    COL_TRI(516, 513, 535),\n    COL_TRI(38, 536, 346),\n    COL_TRI(38, 521, 536),\n    COL_TRI(515, 513, 534),\n    COL_TRI(513, 515, 535),\n    COL_TRI_INIT(SURFACE_BURNING, 156),\n    COL_TRI(455, 456, 454),\n    COL_TRI(467, 456, 457),\n    COL_TRI(467, 485, 460),\n    COL_TRI(467, 487, 485),\n    COL_TRI(467, 460, 461),\n    COL_TRI(467, 482, 481),\n    COL_TRI(467, 458, 482),\n    COL_TRI(467, 461, 458),\n    COL_TRI(467, 481, 456),\n    COL_TRI(454, 456, 481),\n    COL_TRI(479, 454, 481),\n    COL_TRI(543, 471, 544),\n    COL_TRI(543, 544, 545),\n    COL_TRI(544, 471, 473),\n    COL_TRI(544, 473, 475),\n    COL_TRI(544, 475, 470),\n    COL_TRI(543, 478, 471),\n    COL_TRI(543, 547, 472),\n    COL_TRI(478, 543, 472),\n    COL_TRI(543, 499, 547),\n    COL_TRI(545, 501, 543),\n    COL_TRI(543, 501, 499),\n    COL_TRI(545, 502, 501),\n    COL_TRI(503, 502, 545),\n    COL_TRI(545, 502, 466),\n    COL_TRI(546, 474, 547),\n    COL_TRI(474, 472, 547),\n    COL_TRI(547, 499, 504),\n    COL_TRI(547, 504, 552),\n    COL_TRI(547, 552, 555),\n    COL_TRI(546, 547, 555),\n    COL_TRI(546, 464, 465),\n    COL_TRI(546, 548, 464),\n    COL_TRI(546, 555, 548),\n    COL_TRI(474, 546, 465),\n    COL_TRI(457, 464, 468),\n    COL_TRI(548, 492, 488),\n    COL_TRI(548, 488, 468),\n    COL_TRI(548, 550, 492),\n    COL_TRI(497, 548, 549),\n    COL_TRI(495, 548, 497),\n    COL_TRI(495, 550, 548),\n    COL_TRI(549, 548, 555),\n    COL_TRI(464, 548, 468),\n    COL_TRI(496, 551, 469),\n    COL_TRI(467, 457, 468),\n    COL_TRI(550, 551, 556),\n    COL_TRI(550, 556, 490),\n    COL_TRI(550, 490, 492),\n    COL_TRI(496, 550, 495),\n    COL_TRI(496, 551, 550),\n    COL_TRI(490, 556, 491),\n    COL_TRI(551, 496, 498),\n    COL_TRI(490, 491, 494),\n    COL_TRI(552, 504, 505),\n    COL_TRI(552, 505, 553),\n    COL_TRI(552, 554, 555),\n    COL_TRI(553, 554, 552),\n    COL_TRI(554, 553, 557),\n    COL_TRI(500, 558, 507),\n    COL_TRI(497, 549, 500),\n    COL_TRI(500, 549, 558),\n    COL_TRI(554, 557, 558),\n    COL_TRI(549, 554, 558),\n    COL_TRI(554, 549, 555),\n    COL_TRI(498, 208, 211),\n    COL_TRI(498, 486, 551),\n    COL_TRI(498, 387, 486),\n    COL_TRI(498, 212, 387),\n    COL_TRI(498, 211, 212),\n    COL_TRI(208, 498, 542),\n    COL_TRI(486, 469, 551),\n    COL_TRI(466, 396, 545),\n    COL_TRI(466, 395, 396),\n    COL_TRI(466, 493, 395),\n    COL_TRI(198, 249, 262),\n    COL_TRI(396, 503, 545),\n    COL_TRI(384, 523, 503),\n    COL_TRI(396, 384, 503),\n    COL_TRI(542, 255, 251),\n    COL_TRI(251, 200, 542),\n    COL_TRI(251, 198, 200),\n    COL_TRI(251, 249, 198),\n    COL_TRI(199, 198, 262),\n    COL_TRI(200, 209, 542),\n    COL_TRI(199, 237, 201),\n    COL_TRI(199, 232, 237),\n    COL_TRI(199, 262, 232),\n    COL_TRI(262, 261, 232),\n    COL_TRI(201, 237, 537),\n    COL_TRI(237, 228, 537),\n    COL_TRI(202, 201, 537),\n    COL_TRI(233, 232, 260),\n    COL_TRI(261, 260, 232),\n    COL_TRI(212, 206, 385),\n    COL_TRI(209, 208, 542),\n    COL_TRI(542, 541, 255),\n    COL_TRI(387, 483, 486),\n    COL_TRI(483, 484, 486),\n    COL_TRI(212, 385, 387),\n    COL_TRI(387, 390, 483),\n    COL_TRI(515, 534, 189),\n    COL_TRI(483, 392, 393),\n    COL_TRI(483, 391, 392),\n    COL_TRI(483, 390, 391),\n    COL_TRI(483, 393, 394),\n    COL_TRI(483, 395, 493),\n    COL_TRI(483, 394, 395),\n    COL_TRI(189, 534, 384),\n    COL_TRI(534, 523, 384),\n    COL_TRI(383, 535, 189),\n    COL_TRI(535, 515, 189),\n    COL_TRI(218, 401, 516),\n    COL_TRI(383, 516, 535),\n    COL_TRI(206, 205, 385),\n    COL_TRI(385, 205, 202),\n    COL_TRI(385, 202, 537),\n    COL_TRI(386, 385, 536),\n    COL_TRI(537, 536, 385),\n    COL_TRI(383, 389, 516),\n    COL_TRI(516, 402, 218),\n    COL_TRI(516, 404, 402),\n    COL_TRI(389, 404, 516),\n    COL_TRI(389, 223, 404),\n    COL_TRI(223, 389, 403),\n    COL_TRI(403, 389, 388),\n    COL_TRI(221, 516, 401),\n    COL_TRI(536, 221, 220),\n    COL_TRI(536, 521, 221),\n    COL_TRI(521, 520, 221),\n    COL_TRI(514, 516, 221),\n    COL_TRI(221, 518, 514),\n    COL_TRI(520, 518, 221),\n    COL_TRI(536, 220, 388),\n    COL_TRI(220, 403, 388),\n    COL_TRI(244, 245, 538),\n    COL_TRI(388, 386, 536),\n    COL_TRI(228, 243, 537),\n    COL_TRI(243, 244, 537),\n    COL_TRI(244, 538, 537),\n    COL_TRI(228, 229, 241),\n    COL_TRI(228, 241, 243),\n    COL_TRI(234, 238, 241),\n    COL_TRI(241, 229, 234),\n    COL_TRI(257, 255, 541),\n    COL_TRI(538, 247, 539),\n    COL_TRI(538, 245, 247),\n    COL_TRI(247, 248, 539),\n    COL_TRI(540, 539, 248),\n    COL_TRI(238, 540, 248),\n    COL_TRI(541, 540, 235),\n    COL_TRI(234, 235, 540),\n    COL_TRI(238, 234, 540),\n    COL_TRI(235, 233, 541),\n    COL_TRI(233, 257, 541),\n    COL_TRI(233, 260, 257),\n    COL_TRI_INIT(SURFACE_VERY_SLIPPERY, 74),\n    COL_TRI(452, 453, 454),\n    COL_TRI(454, 455, 452),\n    COL_TRI(456, 457, 452),\n    COL_TRI(458, 453, 452),\n    COL_TRI(459, 460, 452),\n    COL_TRI(461, 452, 460),\n    COL_TRI(459, 452, 462),\n    COL_TRI(458, 452, 461),\n    COL_TRI(452, 463, 462),\n    COL_TRI(455, 456, 452),\n    COL_TRI(452, 457, 463),\n    COL_TRI(457, 464, 463),\n    COL_TRI(463, 464, 465),\n    COL_TRI(463, 465, 466),\n    COL_TRI(457, 456, 465),\n    COL_TRI(465, 464, 457),\n    COL_TRI(465, 474, 466),\n    COL_TRI(462, 467, 459),\n    COL_TRI(462, 468, 467),\n    COL_TRI(469, 468, 462),\n    COL_TRI(470, 466, 475),\n    COL_TRI(470, 475, 493),\n    COL_TRI(471, 466, 478),\n    COL_TRI(472, 478, 466),\n    COL_TRI(471, 473, 466),\n    COL_TRI(473, 475, 466),\n    COL_TRI(474, 472, 466),\n    COL_TRI(476, 465, 456),\n    COL_TRI(475, 477, 493),\n    COL_TRI(475, 473, 477),\n    COL_TRI(476, 473, 471),\n    COL_TRI(477, 473, 476),\n    COL_TRI(476, 471, 478),\n    COL_TRI(478, 472, 476),\n    COL_TRI(476, 472, 474),\n    COL_TRI(476, 474, 465),\n    COL_TRI(476, 455, 454),\n    COL_TRI(476, 456, 455),\n    COL_TRI(485, 459, 487),\n    COL_TRI(453, 479, 454),\n    COL_TRI(454, 480, 476),\n    COL_TRI(479, 480, 454),\n    COL_TRI(481, 479, 453),\n    COL_TRI(453, 482, 481),\n    COL_TRI(482, 453, 458),\n    COL_TRI(483, 480, 479),\n    COL_TRI(483, 479, 481),\n    COL_TRI(481, 482, 483),\n    COL_TRI(483, 482, 458),\n    COL_TRI(483, 458, 484),\n    COL_TRI(484, 458, 461),\n    COL_TRI(484, 461, 460),\n    COL_TRI(459, 485, 460),\n    COL_TRI(484, 460, 486),\n    COL_TRI(460, 485, 486),\n    COL_TRI(485, 487, 486),\n    COL_TRI(486, 487, 489),\n    COL_TRI(487, 467, 489),\n    COL_TRI(467, 487, 459),\n    COL_TRI(467, 468, 489),\n    COL_TRI(488, 468, 469),\n    COL_TRI(489, 468, 488),\n    COL_TRI(490, 492, 469),\n    COL_TRI(469, 494, 490),\n    COL_TRI(491, 494, 469),\n    COL_TRI(492, 488, 469),\n    COL_TRI(489, 488, 492),\n    COL_TRI(489, 492, 490),\n    COL_TRI(489, 490, 494),\n    COL_TRI(486, 494, 491),\n    COL_TRI(486, 489, 494),\n    COL_TRI(480, 477, 476),\n    COL_TRI(493, 477, 483),\n    COL_TRI(477, 480, 483),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 625),\n    COL_TRI(9, 1, 10),\n    COL_TRI(0, 1, 2),\n    COL_TRI(1, 3, 2),\n    COL_TRI(3, 1, 4),\n    COL_TRI(3, 5, 2),\n    COL_TRI(3, 6, 5),\n    COL_TRI(7, 6, 4),\n    COL_TRI(6, 3, 4),\n    COL_TRI(8, 9, 10),\n    COL_TRI(15, 328, 14),\n    COL_TRI(1, 0, 10),\n    COL_TRI(11, 13, 325),\n    COL_TRI(12, 13, 11),\n    COL_TRI(12, 11, 26),\n    COL_TRI(13, 9, 325),\n    COL_TRI(9, 8, 325),\n    COL_TRI(14, 326, 327),\n    COL_TRI(14, 328, 326),\n    COL_TRI(19, 20, 337),\n    COL_TRI(16, 330, 331),\n    COL_TRI(17, 16, 331),\n    COL_TRI(16, 332, 330),\n    COL_TRI(17, 331, 333),\n    COL_TRI(18, 334, 335),\n    COL_TRI(18, 335, 336),\n    COL_TRI(25, 341, 340),\n    COL_TRI(20, 338, 337),\n    COL_TRI(21, 337, 338),\n    COL_TRI(21, 338, 29),\n    COL_TRI(22, 23, 263),\n    COL_TRI(23, 339, 263),\n    COL_TRI(24, 25, 340),\n    COL_TRI(31, 342, 344),\n    COL_TRI(26, 37, 27),\n    COL_TRI(15, 14, 329),\n    COL_TRI(27, 28, 329),\n    COL_TRI(28, 343, 333),\n    COL_TRI(29, 342, 32),\n    COL_TRI(30, 31, 344),\n    COL_TRI(31, 345, 342),\n    COL_TRI(32, 342, 345),\n    COL_TRI(33, 32, 345),\n    COL_TRI(34, 343, 35),\n    COL_TRI(34, 347, 343),\n    COL_TRI(28, 35, 343),\n    COL_TRI(35, 28, 36),\n    COL_TRI(27, 36, 28),\n    COL_TRI(36, 27, 346),\n    COL_TRI(37, 346, 27),\n    COL_TRI(38, 37, 349),\n    COL_TRI(38, 346, 37),\n    COL_TRI(39, 38, 349),\n    COL_TRI(38, 39, 350),\n    COL_TRI(38, 350, 351),\n    COL_TRI(33, 348, 32),\n    COL_TRI(40, 352, 353),\n    COL_TRI(40, 353, 354),\n    COL_TRI(41, 352, 40),\n    COL_TRI(42, 7, 4),\n    COL_TRI(43, 51, 44),\n    COL_TRI(44, 51, 50),\n    COL_TRI(44, 50, 47),\n    COL_TRI(44, 45, 43),\n    COL_TRI(44, 46, 45),\n    COL_TRI(44, 47, 46),\n    COL_TRI(53, 358, 52),\n    COL_TRI(45, 49, 355),\n    COL_TRI(45, 355, 43),\n    COL_TRI(46, 49, 45),\n    COL_TRI(43, 355, 51),\n    COL_TRI(47, 48, 46),\n    COL_TRI(46, 48, 49),\n    COL_TRI(47, 50, 48),\n    COL_TRI(48, 356, 49),\n    COL_TRI(49, 356, 355),\n    COL_TRI(50, 51, 356),\n    COL_TRI(48, 50, 356),\n    COL_TRI(51, 355, 356),\n    COL_TRI(52, 357, 56),\n    COL_TRI(52, 358, 357),\n    COL_TRI(61, 359, 63),\n    COL_TRI(54, 59, 55),\n    COL_TRI(55, 59, 58),\n    COL_TRI(55, 58, 53),\n    COL_TRI(52, 55, 53),\n    COL_TRI(52, 54, 55),\n    COL_TRI(53, 58, 358),\n    COL_TRI(54, 60, 59),\n    COL_TRI(56, 60, 54),\n    COL_TRI(52, 56, 54),\n    COL_TRI(56, 357, 60),\n    COL_TRI(57, 58, 59),\n    COL_TRI(58, 57, 358),\n    COL_TRI(59, 60, 57),\n    COL_TRI(57, 357, 358),\n    COL_TRI(60, 357, 57),\n    COL_TRI(61, 63, 62),\n    COL_TRI(67, 69, 362),\n    COL_TRI(63, 359, 361),\n    COL_TRI(63, 361, 64),\n    COL_TRI(63, 64, 62),\n    COL_TRI(64, 66, 62),\n    COL_TRI(62, 360, 61),\n    COL_TRI(62, 66, 360),\n    COL_TRI(64, 361, 66),\n    COL_TRI(65, 361, 359),\n    COL_TRI(65, 359, 360),\n    COL_TRI(61, 360, 359),\n    COL_TRI(66, 65, 360),\n    COL_TRI(65, 66, 361),\n    COL_TRI(67, 74, 71),\n    COL_TRI(67, 75, 74),\n    COL_TRI(76, 80, 79),\n    COL_TRI(67, 70, 69),\n    COL_TRI(69, 68, 362),\n    COL_TRI(69, 363, 68),\n    COL_TRI(70, 363, 69),\n    COL_TRI(68, 67, 362),\n    COL_TRI(71, 73, 70),\n    COL_TRI(67, 71, 70),\n    COL_TRI(70, 73, 363),\n    COL_TRI(71, 74, 73),\n    COL_TRI(72, 73, 74),\n    COL_TRI(73, 72, 363),\n    COL_TRI(74, 75, 72),\n    COL_TRI(75, 68, 72),\n    COL_TRI(68, 75, 67),\n    COL_TRI(68, 363, 72),\n    COL_TRI(76, 79, 77),\n    COL_TRI(76, 81, 80),\n    COL_TRI(79, 364, 82),\n    COL_TRI(80, 364, 79),\n    COL_TRI(79, 82, 77),\n    COL_TRI(77, 78, 76),\n    COL_TRI(77, 82, 78),\n    COL_TRI(80, 85, 364),\n    COL_TRI(81, 85, 80),\n    COL_TRI(78, 81, 76),\n    COL_TRI(78, 84, 81),\n    COL_TRI(81, 84, 85),\n    COL_TRI(82, 83, 78),\n    COL_TRI(83, 84, 78),\n    COL_TRI(82, 364, 83),\n    COL_TRI(84, 83, 85),\n    COL_TRI(85, 83, 364),\n    COL_TRI(86, 95, 90),\n    COL_TRI(86, 94, 95),\n    COL_TRI(87, 94, 86),\n    COL_TRI(86, 365, 89),\n    COL_TRI(88, 91, 89),\n    COL_TRI(88, 89, 365),\n    COL_TRI(89, 92, 87),\n    COL_TRI(89, 91, 92),\n    COL_TRI(86, 89, 87),\n    COL_TRI(87, 92, 94),\n    COL_TRI(90, 88, 365),\n    COL_TRI(86, 90, 365),\n    COL_TRI(90, 95, 88),\n    COL_TRI(91, 93, 92),\n    COL_TRI(92, 93, 94),\n    COL_TRI(93, 91, 88),\n    COL_TRI(94, 93, 95),\n    COL_TRI(95, 93, 88),\n    COL_TRI(96, 102, 366),\n    COL_TRI(96, 366, 99),\n    COL_TRI(97, 102, 96),\n    COL_TRI(96, 98, 97),\n    COL_TRI(98, 103, 97),\n    COL_TRI(98, 100, 103),\n    COL_TRI(96, 104, 98),\n    COL_TRI(97, 103, 102),\n    COL_TRI(96, 99, 104),\n    COL_TRI(99, 367, 104),\n    COL_TRI(99, 366, 367),\n    COL_TRI(100, 367, 101),\n    COL_TRI(101, 367, 366),\n    COL_TRI(102, 101, 366),\n    COL_TRI(102, 103, 101),\n    COL_TRI(103, 100, 101),\n    COL_TRI(104, 100, 98),\n    COL_TRI(104, 367, 100),\n    COL_TRI(105, 113, 110),\n    COL_TRI(105, 115, 113),\n    COL_TRI(105, 107, 106),\n    COL_TRI(105, 108, 107),\n    COL_TRI(105, 109, 108),\n    COL_TRI(106, 115, 105),\n    COL_TRI(105, 110, 109),\n    COL_TRI(107, 114, 106),\n    COL_TRI(107, 368, 114),\n    COL_TRI(108, 368, 107),\n    COL_TRI(106, 114, 115),\n    COL_TRI(108, 112, 368),\n    COL_TRI(109, 112, 108),\n    COL_TRI(110, 111, 109),\n    COL_TRI(109, 111, 112),\n    COL_TRI(110, 113, 111),\n    COL_TRI(111, 113, 369),\n    COL_TRI(112, 111, 369),\n    COL_TRI(113, 115, 369),\n    COL_TRI(112, 369, 368),\n    COL_TRI(114, 368, 369),\n    COL_TRI(115, 114, 369),\n    COL_TRI(116, 118, 117),\n    COL_TRI(116, 124, 118),\n    COL_TRI(116, 370, 119),\n    COL_TRI(116, 122, 370),\n    COL_TRI(117, 122, 116),\n    COL_TRI(116, 119, 124),\n    COL_TRI(118, 123, 117),\n    COL_TRI(118, 121, 123),\n    COL_TRI(117, 123, 122),\n    COL_TRI(119, 371, 124),\n    COL_TRI(119, 370, 371),\n    COL_TRI(120, 371, 370),\n    COL_TRI(121, 371, 120),\n    COL_TRI(122, 120, 370),\n    COL_TRI(122, 123, 120),\n    COL_TRI(123, 121, 120),\n    COL_TRI(124, 121, 118),\n    COL_TRI(124, 371, 121),\n    COL_TRI(125, 133, 127),\n    COL_TRI(125, 128, 133),\n    COL_TRI(125, 127, 126),\n    COL_TRI(126, 131, 125),\n    COL_TRI(125, 372, 128),\n    COL_TRI(125, 131, 372),\n    COL_TRI(127, 130, 132),\n    COL_TRI(127, 132, 126),\n    COL_TRI(126, 132, 131),\n    COL_TRI(128, 373, 133),\n    COL_TRI(128, 372, 373),\n    COL_TRI(129, 373, 372),\n    COL_TRI(130, 373, 129),\n    COL_TRI(131, 129, 372),\n    COL_TRI(131, 132, 129),\n    COL_TRI(132, 130, 129),\n    COL_TRI(133, 373, 130),\n    COL_TRI(133, 130, 127),\n    COL_TRI(134, 374, 135),\n    COL_TRI(135, 137, 134),\n    COL_TRI(135, 136, 137),\n    COL_TRI(135, 138, 136),\n    COL_TRI(135, 375, 138),\n    COL_TRI(135, 374, 375),\n    COL_TRI(136, 141, 137),\n    COL_TRI(137, 141, 139),\n    COL_TRI(137, 139, 134),\n    COL_TRI(134, 139, 374),\n    COL_TRI(136, 142, 141),\n    COL_TRI(138, 142, 136),\n    COL_TRI(138, 375, 142),\n    COL_TRI(139, 140, 374),\n    COL_TRI(140, 139, 141),\n    COL_TRI(141, 142, 140),\n    COL_TRI(140, 375, 374),\n    COL_TRI(142, 375, 140),\n    COL_TRI(143, 376, 144),\n    COL_TRI(143, 145, 376),\n    COL_TRI(143, 147, 145),\n    COL_TRI(143, 377, 147),\n    COL_TRI(145, 146, 376),\n    COL_TRI(146, 144, 376),\n    COL_TRI(146, 150, 144),\n    COL_TRI(144, 151, 143),\n    COL_TRI(144, 150, 151),\n    COL_TRI(145, 148, 146),\n    COL_TRI(147, 148, 145),\n    COL_TRI(147, 377, 148),\n    COL_TRI(148, 149, 146),\n    COL_TRI(149, 150, 146),\n    COL_TRI(148, 377, 149),\n    COL_TRI(150, 149, 151),\n    COL_TRI(143, 151, 377),\n    COL_TRI(151, 149, 377),\n    COL_TRI(152, 160, 157),\n    COL_TRI(152, 162, 160),\n    COL_TRI(153, 162, 152),\n    COL_TRI(152, 156, 154),\n    COL_TRI(152, 157, 156),\n    COL_TRI(154, 379, 155),\n    COL_TRI(155, 161, 153),\n    COL_TRI(155, 379, 161),\n    COL_TRI(152, 154, 155),\n    COL_TRI(152, 155, 153),\n    COL_TRI(153, 161, 162),\n    COL_TRI(154, 158, 379),\n    COL_TRI(156, 158, 154),\n    COL_TRI(156, 159, 158),\n    COL_TRI(157, 159, 156),\n    COL_TRI(157, 160, 159),\n    COL_TRI(158, 159, 378),\n    COL_TRI(159, 160, 378),\n    COL_TRI(160, 162, 378),\n    COL_TRI(158, 378, 379),\n    COL_TRI(161, 379, 378),\n    COL_TRI(162, 161, 378),\n    COL_TRI(163, 171, 165),\n    COL_TRI(163, 380, 171),\n    COL_TRI(163, 381, 380),\n    COL_TRI(163, 165, 166),\n    COL_TRI(163, 166, 164),\n    COL_TRI(164, 381, 163),\n    COL_TRI(165, 170, 166),\n    COL_TRI(166, 169, 164),\n    COL_TRI(166, 170, 169),\n    COL_TRI(164, 169, 381),\n    COL_TRI(165, 168, 170),\n    COL_TRI(167, 380, 381),\n    COL_TRI(168, 380, 167),\n    COL_TRI(169, 167, 381),\n    COL_TRI(170, 168, 167),\n    COL_TRI(169, 170, 167),\n    COL_TRI(171, 168, 165),\n    COL_TRI(171, 380, 168),\n    COL_TRI(172, 177, 173),\n    COL_TRI(173, 175, 174),\n    COL_TRI(173, 176, 175),\n    COL_TRI(173, 177, 176),\n    COL_TRI(174, 172, 173),\n    COL_TRI(175, 178, 174),\n    COL_TRI(175, 382, 178),\n    COL_TRI(176, 382, 175),\n    COL_TRI(174, 178, 172),\n    COL_TRI(177, 181, 176),\n    COL_TRI(176, 181, 382),\n    COL_TRI(177, 180, 181),\n    COL_TRI(172, 180, 177),\n    COL_TRI(178, 179, 172),\n    COL_TRI(179, 180, 172),\n    COL_TRI(178, 382, 179),\n    COL_TRI(180, 179, 181),\n    COL_TRI(181, 179, 382),\n    COL_TRI(182, 184, 190),\n    COL_TRI(183, 182, 190),\n    COL_TRI(187, 196, 195),\n    COL_TRI(184, 191, 190),\n    COL_TRI(184, 185, 191),\n    COL_TRI(185, 192, 191),\n    COL_TRI(185, 193, 192),\n    COL_TRI(185, 186, 193),\n    COL_TRI(186, 194, 193),\n    COL_TRI(186, 187, 194),\n    COL_TRI(187, 195, 194),\n    COL_TRI(187, 383, 188),\n    COL_TRI(187, 188, 196),\n    COL_TRI(185, 389, 186),\n    COL_TRI(188, 197, 196),\n    COL_TRI(183, 385, 182),\n    COL_TRI(182, 385, 386),\n    COL_TRI(182, 386, 184),\n    COL_TRI(183, 387, 385),\n    COL_TRI(184, 386, 388),\n    COL_TRI(184, 388, 185),\n    COL_TRI(185, 388, 389),\n    COL_TRI(186, 389, 383),\n    COL_TRI(186, 383, 187),\n    COL_TRI(189, 188, 383),\n    COL_TRI(190, 387, 183),\n    COL_TRI(190, 390, 387),\n    COL_TRI(191, 390, 190),\n    COL_TRI(191, 391, 390),\n    COL_TRI(192, 391, 191),\n    COL_TRI(197, 384, 396),\n    COL_TRI(192, 392, 391),\n    COL_TRI(193, 392, 192),\n    COL_TRI(193, 393, 392),\n    COL_TRI(194, 393, 193),\n    COL_TRI(194, 394, 393),\n    COL_TRI(195, 394, 194),\n    COL_TRI(195, 395, 394),\n    COL_TRI(196, 395, 195),\n    COL_TRI(196, 396, 395),\n    COL_TRI(197, 396, 196),\n    COL_TRI(201, 399, 199),\n    COL_TRI(188, 384, 197),\n    COL_TRI(188, 189, 384),\n    COL_TRI(198, 397, 200),\n    COL_TRI(198, 398, 397),\n    COL_TRI(199, 398, 198),\n    COL_TRI(200, 397, 215),\n    COL_TRI(200, 215, 209),\n    COL_TRI(199, 399, 398),\n    COL_TRI(209, 210, 208),\n    COL_TRI(201, 400, 399),\n    COL_TRI(202, 203, 201),\n    COL_TRI(203, 400, 201),\n    COL_TRI(204, 203, 202),\n    COL_TRI(205, 204, 202),\n    COL_TRI(206, 207, 205),\n    COL_TRI(207, 204, 205),\n    COL_TRI(208, 210, 211),\n    COL_TRI(215, 207, 213),\n    COL_TRI(210, 214, 211),\n    COL_TRI(209, 215, 210),\n    COL_TRI(211, 214, 212),\n    COL_TRI(212, 213, 206),\n    COL_TRI(213, 207, 206),\n    COL_TRI(214, 213, 212),\n    COL_TRI(215, 214, 210),\n    COL_TRI(215, 213, 214),\n    COL_TRI(216, 217, 218),\n    COL_TRI(215, 204, 207),\n    COL_TRI(215, 203, 204),\n    COL_TRI(215, 400, 203),\n    COL_TRI(215, 399, 400),\n    COL_TRI(215, 398, 399),\n    COL_TRI(215, 397, 398),\n    COL_TRI(216, 219, 217),\n    COL_TRI(216, 220, 219),\n    COL_TRI(223, 403, 226),\n    COL_TRI(217, 219, 222),\n    COL_TRI(217, 401, 218),\n    COL_TRI(217, 222, 401),\n    COL_TRI(218, 402, 216),\n    COL_TRI(219, 220, 222),\n    COL_TRI(220, 216, 403),\n    COL_TRI(221, 222, 220),\n    COL_TRI(222, 221, 401),\n    COL_TRI(223, 224, 404),\n    COL_TRI(223, 226, 224),\n    COL_TRI(229, 227, 405),\n    COL_TRI(224, 225, 404),\n    COL_TRI(225, 402, 404),\n    COL_TRI(225, 216, 402),\n    COL_TRI(225, 226, 216),\n    COL_TRI(226, 225, 224),\n    COL_TRI(226, 403, 216),\n    COL_TRI(227, 230, 231),\n    COL_TRI(228, 227, 229),\n    COL_TRI(228, 230, 227),\n    COL_TRI(227, 231, 405),\n    COL_TRI(230, 236, 231),\n    COL_TRI(231, 406, 407),\n    COL_TRI(231, 407, 405),\n    COL_TRI(232, 231, 236),\n    COL_TRI(233, 231, 232),\n    COL_TRI(233, 406, 231),\n    COL_TRI(229, 405, 234),\n    COL_TRI(234, 405, 407),\n    COL_TRI(234, 407, 235),\n    COL_TRI(235, 407, 406),\n    COL_TRI(235, 406, 233),\n    COL_TRI(236, 230, 228),\n    COL_TRI(237, 236, 228),\n    COL_TRI(232, 236, 237),\n    COL_TRI(247, 410, 239),\n    COL_TRI(238, 240, 408),\n    COL_TRI(239, 240, 238),\n    COL_TRI(240, 242, 408),\n    COL_TRI(240, 409, 242),\n    COL_TRI(240, 246, 409),\n    COL_TRI(240, 410, 246),\n    COL_TRI(240, 239, 410),\n    COL_TRI(241, 242, 243),\n    COL_TRI(241, 408, 242),\n    COL_TRI(242, 409, 244),\n    COL_TRI(243, 242, 244),\n    COL_TRI(238, 408, 241),\n    COL_TRI(244, 409, 246),\n    COL_TRI(244, 246, 245),\n    COL_TRI(245, 246, 247),\n    COL_TRI(246, 410, 247),\n    COL_TRI(248, 239, 238),\n    COL_TRI(247, 239, 248),\n    COL_TRI(249, 250, 253),\n    COL_TRI(250, 411, 253),\n    COL_TRI(249, 253, 262),\n    COL_TRI(251, 252, 249),\n    COL_TRI(252, 250, 249),\n    COL_TRI(252, 411, 250),\n    COL_TRI(253, 411, 259),\n    COL_TRI(254, 411, 258),\n    COL_TRI(255, 256, 251),\n    COL_TRI(256, 252, 251),\n    COL_TRI(257, 256, 255),\n    COL_TRI(258, 411, 256),\n    COL_TRI(256, 411, 252),\n    COL_TRI(257, 258, 256),\n    COL_TRI(259, 411, 254),\n    COL_TRI(254, 258, 257),\n    COL_TRI(265, 339, 32),\n    COL_TRI(261, 259, 254),\n    COL_TRI(261, 254, 260),\n    COL_TRI(253, 259, 261),\n    COL_TRI(262, 253, 261),\n    COL_TRI(260, 254, 257),\n    COL_TRI(263, 339, 412),\n    COL_TRI(264, 412, 339),\n    COL_TRI(264, 339, 265),\n    COL_TRI(266, 277, 278),\n    COL_TRI(264, 271, 412),\n    COL_TRI(266, 413, 269),\n    COL_TRI(266, 278, 413),\n    COL_TRI(267, 266, 414),\n    COL_TRI(266, 269, 414),\n    COL_TRI(267, 415, 266),\n    COL_TRI(268, 277, 266),\n    COL_TRI(268, 266, 415),\n    COL_TRI(269, 416, 275),\n    COL_TRI(269, 417, 416),\n    COL_TRI(269, 275, 414),\n    COL_TRI(270, 264, 265),\n    COL_TRI(270, 273, 264),\n    COL_TRI(264, 273, 271),\n    COL_TRI(265, 32, 272),\n    COL_TRI(265, 272, 267),\n    COL_TRI(265, 267, 414),\n    COL_TRI(270, 265, 414),\n    COL_TRI(32, 271, 273),\n    COL_TRI(272, 32, 273),\n    COL_TRI(271, 32, 348),\n    COL_TRI(273, 419, 272),\n    COL_TRI(267, 272, 419),\n    COL_TRI(274, 270, 414),\n    COL_TRI(275, 274, 414),\n    COL_TRI(275, 420, 274),\n    COL_TRI(275, 416, 420),\n    COL_TRI(274, 420, 419),\n    COL_TRI(274, 419, 270),\n    COL_TRI(270, 419, 273),\n    COL_TRI(267, 420, 416),\n    COL_TRI(267, 419, 420),\n    COL_TRI(276, 268, 415),\n    COL_TRI(267, 276, 415),\n    COL_TRI(277, 279, 278),\n    COL_TRI(278, 418, 413),\n    COL_TRI(278, 279, 418),\n    COL_TRI(277, 268, 279),\n    COL_TRI(276, 279, 268),\n    COL_TRI(279, 276, 418),\n    COL_TRI(267, 416, 276),\n    COL_TRI(276, 416, 417),\n    COL_TRI(280, 281, 421),\n    COL_TRI(280, 283, 281),\n    COL_TRI(282, 283, 422),\n    COL_TRI(282, 290, 283),\n    COL_TRI(280, 422, 283),\n    COL_TRI(281, 283, 421),\n    COL_TRI(283, 290, 421),\n    COL_TRI(284, 285, 423),\n    COL_TRI(285, 286, 423),\n    COL_TRI(286, 287, 424),\n    COL_TRI(288, 284, 423),\n    COL_TRI(286, 424, 423),\n    COL_TRI(284, 288, 425),\n    COL_TRI(284, 425, 285),\n    COL_TRI(287, 285, 425),\n    COL_TRI(287, 286, 285),\n    COL_TRI(288, 423, 424),\n    COL_TRI(289, 430, 428),\n    COL_TRI(289, 291, 426),\n    COL_TRI(289, 426, 427),\n    COL_TRI(290, 282, 293),\n    COL_TRI(290, 293, 421),\n    COL_TRI(291, 289, 428),\n    COL_TRI(291, 428, 429),\n    COL_TRI(289, 427, 430),\n    COL_TRI(282, 422, 280),\n    COL_TRI(292, 427, 426),\n    COL_TRI(292, 430, 427),\n    COL_TRI(280, 421, 293),\n    COL_TRI(293, 282, 280),\n    COL_TRI(294, 295, 431),\n    COL_TRI(294, 432, 295),\n    COL_TRI(299, 294, 431),\n    COL_TRI(295, 433, 431),\n    COL_TRI(295, 434, 433),\n    COL_TRI(296, 295, 297),\n    COL_TRI(296, 434, 295),\n    COL_TRI(297, 295, 432),\n    COL_TRI(294, 299, 435),\n    COL_TRI(294, 435, 432),\n    COL_TRI(298, 432, 435),\n    COL_TRI(297, 432, 311),\n    COL_TRI(298, 311, 432),\n    COL_TRI(307, 306, 440),\n    COL_TRI(299, 431, 433),\n    COL_TRI(300, 302, 437),\n    COL_TRI(301, 302, 300),\n    COL_TRI(302, 438, 437),\n    COL_TRI(301, 303, 302),\n    COL_TRI(303, 438, 302),\n    COL_TRI(304, 437, 438),\n    COL_TRI(304, 305, 437),\n    COL_TRI(303, 304, 438),\n    COL_TRI(305, 303, 301),\n    COL_TRI(305, 304, 303),\n    COL_TRI(306, 439, 440),\n    COL_TRI(312, 443, 297),\n    COL_TRI(306, 308, 441),\n    COL_TRI(306, 307, 308),\n    COL_TRI(308, 307, 440),\n    COL_TRI(308, 440, 442),\n    COL_TRI(309, 442, 440),\n    COL_TRI(309, 440, 439),\n    COL_TRI(310, 296, 297),\n    COL_TRI(311, 312, 297),\n    COL_TRI(314, 313, 317),\n    COL_TRI(311, 298, 312),\n    COL_TRI(298, 436, 312),\n    COL_TRI(310, 297, 443),\n    COL_TRI(312, 436, 444),\n    COL_TRI(312, 444, 445),\n    COL_TRI(313, 315, 317),\n    COL_TRI(315, 318, 317),\n    COL_TRI(316, 318, 315),\n    COL_TRI(314, 317, 319),\n    COL_TRI(317, 446, 321),\n    COL_TRI(318, 446, 317),\n    COL_TRI(319, 317, 321),\n    COL_TRI(316, 447, 318),\n    COL_TRI(318, 320, 446),\n    COL_TRI(320, 318, 322),\n    COL_TRI(318, 447, 322),\n    COL_TRI(319, 316, 314),\n    COL_TRI(319, 447, 316),\n    COL_TRI(321, 447, 319),\n    COL_TRI(321, 322, 447),\n    COL_TRI(322, 446, 320),\n    COL_TRI(322, 321, 446),\n    COL_TRI(323, 448, 449),\n    COL_TRI(323, 450, 448),\n    COL_TRI(323, 324, 450),\n    COL_TRI(324, 451, 450),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(1),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_null_start, /*pos*/ -955, 103, -1029, /*yaw*/ 84), // unused, probably an early way to set initial position\n    COL_WATER_BOX_INIT(1),\n    COL_WATER_BOX(10, -3071, -3071,  3072,  3072, 20),\n    COL_END(),\n};\n\n"
  },
  {
    "path": "levels/lll/areas/2/geo.inc.c",
    "content": "// 0x0E000EC0\nconst GeoLayout lll_geo_000EC0[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND_COLOR(0x0001),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 12800, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(2, 0, 2000, 6000, 0, 0, 0, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_070235C8),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_07024C18),\n                    GEO_DISPLAY_LIST(LAYER_TRANSPARENT, lll_seg7_dl_070255D8),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_07025A48),\n                    GEO_DISPLAY_LIST(LAYER_ALPHA, lll_seg7_dl_07025BD8),\n                    GEO_ASM(   0, geo_movtex_pause_control),\n                    GEO_ASM(0x2202, geo_movtex_draw_nocolor),\n                    GEO_ASM(0x2202, geo_movtex_draw_water_regions),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(   0, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/lll/areas/2/macro.inc.c",
    "content": "// 0x070283D4 - 0x070284DA\nconst MacroObject lll_seg7_area_2_macro_objs[] = {\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/   -20,    82, -1400),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/   600,    82, -1480),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  1080,    82, -1680),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  2180,   173, -1860),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  2520,   174, -1220),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  2840,   249,  -460),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  2800,   449,   460),\n    MACRO_OBJECT(/*preset*/ macro_small_bully,          /*yaw*/   0, /*pos*/  1300,  1029,  2300),\n    MACRO_OBJECT(/*preset*/ macro_small_bully,          /*yaw*/   0, /*pos*/  -960,  2442, -2610),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  2180,   775,  1720),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  1700,  1029,  2100),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/   940,  1029,  2540),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/ -1380,   102,  1640),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/ -2043,  1678,  1500),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/ -2283,  1863,   800),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/ -2420,  1981,   280),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/ -2620,  2089,  -280),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/ -2540,  2268,  -940),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  1330,  3201,  1313),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  1069,  3130,  1243),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/   704,  3028,  1156),\n    MACRO_OBJECT(/*preset*/ macro_hidden_1up_in_pole,   /*yaw*/   0, /*pos*/  1078,  4170, -2270),\n    MACRO_OBJECT(/*preset*/ macro_recovery_heart,       /*yaw*/   0, /*pos*/ -1627,  1750,   750),\n    MACRO_OBJECT(/*preset*/ macro_coin_line_horizontal, /*yaw*/  90, /*pos*/   182,  2623, -2529),\n    MACRO_OBJECT(/*preset*/ macro_bouncing_fireball_2,  /*yaw*/  25, /*pos*/   740,     0, -1840),\n    MACRO_OBJECT(/*preset*/ macro_bouncing_fireball_2,  /*yaw*/ 225, /*pos*/  1420,     0, -1720),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/lll/areas/2/movtext.inc.c",
    "content": "// 0x0702874C - 0x070287A8\nMovtex lll_movtex_tris_lava_floor[] = {\n    MOV_TEX_SPD(     1),\n    MOV_TEX_TRIS( 8191, 0,  8192, 0, 0),\n    MOV_TEX_TRIS(    0, 0,  8192, 0, 2),\n    MOV_TEX_TRIS(-8191, 0,  8192, 0, 4),\n    MOV_TEX_TRIS( 8191, 0,     0, 2, 0),\n    MOV_TEX_TRIS(    0, 0,     0, 2, 2),\n    MOV_TEX_TRIS(-8191, 0,     0, 2, 4),\n    MOV_TEX_TRIS( 8191, 0, -8192, 4, 0),\n    MOV_TEX_TRIS(    0, 0, -8192, 4, 2),\n    MOV_TEX_TRIS(-8191, 0, -8192, 4, 4),\n};\n\n// 0x070287A8 - 0x070287F0\nconst Gfx lll_dl_lava_floor[] = {\n    gsSP2Triangles( 0,  3,  1, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 4,  7,  5, 0x0,  5,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\nstatic Movtex lll_movtex_volcano_floor_lava_data[] = {\n    MOV_TEX_INIT_LOAD(    1),\n    MOV_TEX_ROT_SPEED(    8),\n    MOV_TEX_ROT_SCALE(    5),\n    MOV_TEX_4_BOX_TRIS(-3071, -3071),\n    MOV_TEX_4_BOX_TRIS(-3071,  3072),\n    MOV_TEX_4_BOX_TRIS( 3072,  3072),\n    MOV_TEX_4_BOX_TRIS( 3072, -3071),\n    MOV_TEX_ROT(     ROTATE_COUNTER_CLOCKWISE),\n    MOV_TEX_ALPHA(    0xC8),\n    MOV_TEX_DEFINE(  TEXTURE_LAVA),\n    MOV_TEX_END(),\n};\n\nconst struct MovtexQuadCollection lll_movtex_volcano_floor_lava[] = {\n    {10, lll_movtex_volcano_floor_lava_data},\n    {-1, NULL},\n};\n\n// 0x07028820 - 0x070288C8\nMovtex lll_movtex_tris_lavafall_volcano[] = {\n    MOV_TEX_SPD(   50),\n    MOV_TEX_TRIS( 655,  -86, -2934,  0, 0),\n    MOV_TEX_TRIS( 527,  256, -2934,  2, 0),\n    MOV_TEX_TRIS( 436, 1042, -2934,  4, 0),\n    MOV_TEX_TRIS( 430, 2555, -2934,  7, 0),\n    MOV_TEX_TRIS( 430, 5248, -2934, 11, 0),\n    MOV_TEX_TRIS( 148,  -86, -2669,  0, 1),\n    MOV_TEX_TRIS( 256,  281, -2823,  2, 1),\n    MOV_TEX_TRIS( 138,  946, -2870,  4, 1),\n    MOV_TEX_TRIS(   1, 2555, -2917,  7, 1),\n    MOV_TEX_TRIS(   0, 5248, -2928, 11, 1),\n    MOV_TEX_TRIS(  36,   63, -2766,  1, 1),\n    MOV_TEX_TRIS(-574,  -86, -2934,  0, 2),\n    MOV_TEX_TRIS(-471,  247, -2934,  2, 2),\n    MOV_TEX_TRIS(-389,  775, -2934,  4, 2),\n    MOV_TEX_TRIS(-390, 2555, -2934,  7, 2),\n    MOV_TEX_TRIS(-430, 5248, -2934, 11, 2),\n    MOV_TEX_END(),\n    0, // alignment?\n};\n\n// 0x070288C8 - 0x07028960\nconst Gfx lll_dl_lavafall_volcano[] = {\n    gsSP2Triangles(15, 14,  9, 0x0,  4,  9,  3, 0x0),\n    gsSP2Triangles( 9, 14,  8, 0x0,  9,  8,  3, 0x0),\n    gsSP2Triangles(14, 13,  8, 0x0,  8, 13,  7, 0x0),\n    gsSP2Triangles( 8,  7,  2, 0x0,  8,  2,  3, 0x0),\n    gsSP2Triangles(10,  6,  7, 0x0, 13, 10,  7, 0x0),\n    gsSP2Triangles(13, 12, 10, 0x0, 12, 11, 10, 0x0),\n    gsSP2Triangles(10, 11,  5, 0x0,  6, 10,  5, 0x0),\n    gsSP2Triangles( 6,  5,  0, 0x0,  6,  0,  1, 0x0),\n    gsSP2Triangles( 2,  6,  1, 0x0,  7,  6,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/lll/areas/2/trajectory.inc.c",
    "content": "// 0x0702856C - 0x07028660\nconst Trajectory lll_seg7_trajectory_0702856C[] = {\n    TRAJECTORY_POS(0, /*pos*/  -764,     0,  1664),\n    TRAJECTORY_POS(1, /*pos*/   -70,     0,  1410),\n    TRAJECTORY_POS(2, /*pos*/   625,   100,  1157),\n    TRAJECTORY_POS(3, /*pos*/   725,   120,  1169),\n    TRAJECTORY_POS(4, /*pos*/   800,   140,  1219),\n    TRAJECTORY_POS(5, /*pos*/   855,   160,  1293),\n    TRAJECTORY_POS(6, /*pos*/   865,   180,  1392),\n    TRAJECTORY_POS(7, /*pos*/   839,   200,  1488),\n    TRAJECTORY_POS(8, /*pos*/   762,   220,  1556),\n    TRAJECTORY_POS(9, /*pos*/   673,   240,  1584),\n    TRAJECTORY_POS(10, /*pos*/   583,   260,  1590),\n    TRAJECTORY_POS(11, /*pos*/   387,   300,  1493),\n    TRAJECTORY_POS(12, /*pos*/ -1257,   860,  -264),\n    TRAJECTORY_POS(13, /*pos*/ -1327,   870,  -364),\n    TRAJECTORY_POS(14, /*pos*/ -1372,   880,  -441),\n    TRAJECTORY_POS(15, /*pos*/ -1398,   890,  -516),\n    TRAJECTORY_POS(16, /*pos*/ -1387,   900,  -595),\n    TRAJECTORY_POS(17, /*pos*/ -1364,   910,  -671),\n    TRAJECTORY_POS(18, /*pos*/ -1307,   920,  -748),\n    TRAJECTORY_POS(19, /*pos*/ -1233,   930,  -813),\n    TRAJECTORY_POS(20, /*pos*/ -1157,   940,  -857),\n    TRAJECTORY_POS(21, /*pos*/  -742,   960, -1040),\n    TRAJECTORY_POS(22, /*pos*/  -592,   960, -1108),\n    TRAJECTORY_POS(23, /*pos*/  -546,   960, -1128),\n    TRAJECTORY_POS(24, /*pos*/  -511,   955, -1144),\n    TRAJECTORY_POS(25, /*pos*/  -478,   940, -1159),\n    TRAJECTORY_POS(26, /*pos*/  -450,   916, -1172),\n    TRAJECTORY_POS(27, /*pos*/  -428,   885, -1182),\n    TRAJECTORY_POS(28, /*pos*/  -414,   849, -1188),\n    TRAJECTORY_POS(29, /*pos*/  -410,   810, -1190),\n    TRAJECTORY_END(),\n};\n\n// 0x07028660 - 0x0702874C\nconst Trajectory lll_seg7_trajectory_07028660[] = {\n    TRAJECTORY_POS(0, /*pos*/   184,   980, -1366),\n    TRAJECTORY_POS(1, /*pos*/   294,   990, -1329),\n    TRAJECTORY_POS(2, /*pos*/   386,  1000, -1256),\n    TRAJECTORY_POS(3, /*pos*/   465,  1010, -1163),\n    TRAJECTORY_POS(4, /*pos*/   510,  1020, -1063),\n    TRAJECTORY_POS(5, /*pos*/   536,  1030,  -953),\n    TRAJECTORY_POS(6, /*pos*/   523,  1040,  -845),\n    TRAJECTORY_POS(7, /*pos*/   486,  1050,  -735),\n    TRAJECTORY_POS(8, /*pos*/   435,  1060,  -605),\n    TRAJECTORY_POS(9, /*pos*/   399,  1070,  -471),\n    TRAJECTORY_POS(10, /*pos*/   379,  1080,  -375),\n    TRAJECTORY_POS(11, /*pos*/   369,  1090,  -246),\n    TRAJECTORY_POS(12, /*pos*/   389,  1100,   -97),\n    TRAJECTORY_POS(13, /*pos*/   434,  1100,    34),\n    TRAJECTORY_POS(14, /*pos*/   497,  1100,   144),\n    TRAJECTORY_POS(15, /*pos*/   575,  1100,   232),\n    TRAJECTORY_POS(16, /*pos*/   696,  1100,   282),\n    TRAJECTORY_POS(17, /*pos*/   818,  1100,   285),\n    TRAJECTORY_POS(18, /*pos*/   939,  1100,   241),\n    TRAJECTORY_POS(19, /*pos*/  1039,  1100,   150),\n    TRAJECTORY_POS(20, /*pos*/  1092,  1100,    33),\n    TRAJECTORY_POS(21, /*pos*/  1105,  1100,  -128),\n    TRAJECTORY_POS(22, /*pos*/  1090,  1100,  -292),\n    TRAJECTORY_POS(23, /*pos*/  1087,  1095,  -330),\n    TRAJECTORY_POS(24, /*pos*/  1083,  1080,  -366),\n    TRAJECTORY_POS(25, /*pos*/  1080,  1056,  -397),\n    TRAJECTORY_POS(26, /*pos*/  1078,  1025,  -421),\n    TRAJECTORY_POS(27, /*pos*/  1077,   989,  -436),\n    TRAJECTORY_POS(28, /*pos*/  1076,   950,  -441),\n    TRAJECTORY_END(),\n};\n"
  },
  {
    "path": "levels/lll/collapsing_wooden_platform/collision.inc.c",
    "content": "// 0x0701D21C - 0x0701D294\nconst Collision lll_seg7_collision_0701D21C[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-255, 0, 64),\n    COL_VERTEX(-255, 154, -63),\n    COL_VERTEX(-255, 0, -63),\n    COL_VERTEX(256, 154, -63),\n    COL_VERTEX(256, 0, -63),\n    COL_VERTEX(-255, 154, 64),\n    COL_VERTEX(256, 154, 64),\n    COL_VERTEX(256, 0, 64),\n    COL_TRI_INIT(SURFACE_DEFAULT, 10),\n    COL_TRI(0, 1, 2),\n    COL_TRI(2, 1, 3),\n    COL_TRI(2, 3, 4),\n    COL_TRI(5, 3, 1),\n    COL_TRI(0, 5, 1),\n    COL_TRI(5, 6, 3),\n    COL_TRI(3, 6, 7),\n    COL_TRI(3, 7, 4),\n    COL_TRI(7, 6, 5),\n    COL_TRI(7, 5, 0),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/lll/collapsing_wooden_platform/geo.inc.c",
    "content": "// 0x0E000B80\nconst GeoLayout lll_geo_000B80[] = {\n    GEO_CULLING_RADIUS(450),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_07019160),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/lll/collapsing_wooden_platform/model.inc.c",
    "content": "// 0x07018F70 - 0x07018FB0\nstatic const Vtx lll_seg7_vertex_07018F70[] = {\n    {{{  -255,    154,     64}, 0, {   990,  -4120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,    154,     64}, 0, {     0,  -4120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,    154,    -63}, 0, {     0,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,    154,    -63}, 0, {   990,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07018FB0 - 0x070190B0\nstatic const Vtx lll_seg7_vertex_07018FB0[] = {\n    {{{   256,      0,     64}, 0, {  1330,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,    154,     64}, 0, {  1330,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,    154,     64}, 0, { -2074,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,      0,    -63}, 0, { -2074,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -255,    154,    -63}, 0, { -2074,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,    154,    -63}, 0, {  1330,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,      0,    -63}, 0, {  1330,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,    154,    -63}, 0, { -9058,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,    154,     64}, 0, {-10250,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,      0,     64}, 0, {-10250,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,      0,    -63}, 0, { -9058,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -255,      0,     64}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,    154,    -63}, 0, {  -200,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,      0,    -63}, 0, {  -200,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,    154,     64}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,      0,     64}, 0, { -2074,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070190B0 - 0x070190F8\nstatic const Gfx lll_seg7_dl_070190B0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_0900B800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&lll_seg7_lights_0700FC00.l, 1),\n    gsSPLight(&lll_seg7_lights_0700FC00.a, 2),\n    gsSPVertex(lll_seg7_vertex_07018F70, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070190F8 - 0x07019160\nstatic const Gfx lll_seg7_dl_070190F8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07018FB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07019160 - 0x070191F0\nconst Gfx lll_seg7_dl_07019160[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_070190B0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_070190F8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/lll/drawbridge_part/collision.inc.c",
    "content": "// 0x0701D108 - 0x0701D138\nconst Collision lll_seg7_collision_drawbridge[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x4),\n    COL_VERTEX(0, 0, -191),\n    COL_VERTEX(-639, 0, -191),\n    COL_VERTEX(-639, 0, 192),\n    COL_VERTEX(0, 0, 192),\n    COL_TRI_INIT(SURFACE_DEFAULT, 2),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/lll/drawbridge_part/geo.inc.c",
    "content": "// 0x0E000B20\nconst GeoLayout lll_geo_000B20[] = {\n    GEO_CULLING_RADIUS(850),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_07018680),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/lll/drawbridge_part/model.inc.c",
    "content": "// 0x070183F0 - 0x07018470\nstatic const Vtx lll_seg7_vertex_070183F0[] = {\n    {{{     0,   -101,   -191}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,      0,    192}, 0, {  3800,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,   -101,    192}, 0, {  3800,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,      0,   -191}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -639,   -101,    192}, 0, {  3800,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -639,      0,   -191}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -639,   -101,   -191}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -639,      0,    192}, 0, {  3800,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07018470 - 0x070184B0\nstatic const Vtx lll_seg7_vertex_07018470[] = {\n    {{{     0,      0,   -191}, 0, { -5140,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -639,      0,   -191}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -639,      0,    192}, 0, {     0,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,      0,    192}, 0, { -5140,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070184B0 - 0x070184F0\nstatic const Vtx lll_seg7_vertex_070184B0[] = {\n    {{{     0,   -101,    192}, 0, { -3352,    862}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -639,   -101,    192}, 0, {  -158,    862}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -639,   -101,   -191}, 0, {  -158,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     0,   -101,   -191}, 0, { -3352,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x070184F0 - 0x07018570\nstatic const Vtx lll_seg7_vertex_070184F0[] = {\n    {{{     0,   -101,    192}, 0, {  5334,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,      0,    192}, 0, {  5334,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -639,      0,    192}, 0, { -1052,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -639,   -101,    192}, 0, { -1052,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -639,   -101,   -191}, 0, {  2268,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -639,      0,   -191}, 0, {  2268,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,      0,   -191}, 0, { -4118,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,   -101,   -191}, 0, { -4118,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07018570 - 0x070185C8\nstatic const Gfx lll_seg7_dl_07018570[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_07005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&lll_seg7_lights_0700FC00.l, 1),\n    gsSPLight(&lll_seg7_lights_0700FC00.a, 2),\n    gsSPVertex(lll_seg7_vertex_070183F0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070185C8 - 0x07018600\nstatic const Gfx lll_seg7_dl_070185C8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_0900A000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07018470, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07018600 - 0x07018638\nstatic const Gfx lll_seg7_dl_07018600[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_070184B0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07018638 - 0x07018680\nstatic const Gfx lll_seg7_dl_07018638[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_07000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_070184F0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07018680 - 0x07018708\nconst Gfx lll_seg7_dl_07018680[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_07018570),\n    gsSPDisplayList(lll_seg7_dl_070185C8),\n    gsSPDisplayList(lll_seg7_dl_07018600),\n    gsSPDisplayList(lll_seg7_dl_07018638),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/lll/geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"game/level_geo.h\"\n#include \"game/geo_misc.h\"\n#include \"game/camera.h\"\n#include \"game/moving_texture.h\"\n#include \"game/screen_transition.h\"\n#include \"game/paintings.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"levels/lll/header.h\"\n\n#include \"levels/lll/areas/1/4/geo.inc.c\"\n#include \"levels/lll/areas/1/5/geo.inc.c\"\n#include \"levels/lll/areas/1/6/geo.inc.c\"\n#include \"levels/lll/areas/1/7/geo.inc.c\"\n#include \"levels/lll/areas/1/8/geo.inc.c\"\n#include \"levels/lll/areas/1/9/geo.inc.c\"\n#include \"levels/lll/areas/1/10/geo.inc.c\"\n#include \"levels/lll/areas/1/11/geo.inc.c\"\n#include \"levels/lll/areas/1/12/geo.inc.c\"\n#include \"levels/lll/areas/1/13/geo.inc.c\"\n#include \"levels/lll/areas/1/14/geo.inc.c\"\n#include \"levels/lll/areas/1/15/geo.inc.c\"\n#include \"levels/lll/moving_octagonal_mesh_platform/geo.inc.c\"\n#include \"levels/lll/drawbridge_part/geo.inc.c\"\n#include \"levels/lll/rotating_block_fire_bars/geo.inc.c\"\n#include \"levels/lll/wooden_float_small/geo.inc.c\"\n#include \"levels/lll/wooden_float_large/geo.inc.c\"\n#include \"levels/lll/collapsing_wooden_platform/geo.inc.c\"\n#include \"levels/lll/long_wooden_bridge/geo.inc.c\"\n#include \"levels/lll/rotating_hexagonal_ring/geo.inc.c\"\n#include \"levels/lll/sinking_rectangular_platform/geo.inc.c\"\n#include \"levels/lll/sinking_square_platform/geo.inc.c\"\n#include \"levels/lll/tilting_square_platform/geo.inc.c\"\n#include \"levels/lll/puzzle_piece/geo.inc.c\"\n#include \"levels/lll/sinking_rock_block/geo.inc.c\"\n#include \"levels/lll/rolling_log/geo.inc.c\"\n#include \"levels/lll/areas/1/geo.inc.c\"\n#include \"levels/lll/volcano_falling_trap/geo.inc.c\"\n#include \"levels/lll/areas/2/geo.inc.c\"\n"
  },
  {
    "path": "levels/lll/header.h",
    "content": "#ifndef LLL_HEADER_H\n#define LLL_HEADER_H\n\n#include \"types.h\"\n#include \"game/moving_texture.h\"\n\n// geo\nextern const GeoLayout lll_geo_0009E0[];\nextern const GeoLayout lll_geo_0009F8[];\nextern const GeoLayout lll_geo_000A10[];\nextern const GeoLayout lll_geo_000A28[];\nextern const GeoLayout lll_geo_000A40[];\nextern const GeoLayout lll_geo_000A60[];\nextern const GeoLayout lll_geo_000A78[];\nextern const GeoLayout lll_geo_000A90[];\nextern const GeoLayout lll_geo_000AA8[];\nextern const GeoLayout lll_geo_000AC0[];\nextern const GeoLayout lll_geo_000AD8[];\nextern const GeoLayout lll_geo_000AF0[];\nextern const GeoLayout lll_geo_000B08[];\nextern const GeoLayout lll_geo_000B20[];\nextern const GeoLayout lll_geo_000B38[];\nextern const GeoLayout lll_geo_000B50[];\nextern const GeoLayout lll_geo_000B68[];\nextern const GeoLayout lll_geo_000B80[];\nextern const GeoLayout lll_geo_000B98[];\nextern const GeoLayout lll_geo_000BB0[];\nextern const GeoLayout lll_geo_000BC8[];\nextern const GeoLayout lll_geo_000BE0[];\nextern const GeoLayout lll_geo_000BF8[];\nextern const GeoLayout lll_geo_000C10[];\nextern const GeoLayout lll_geo_000C30[];\nextern const GeoLayout lll_geo_000C50[];\nextern const GeoLayout lll_geo_000C70[];\nextern const GeoLayout lll_geo_000C90[];\nextern const GeoLayout lll_geo_000CB0[];\nextern const GeoLayout lll_geo_000CD0[];\nextern const GeoLayout lll_geo_000CF0[];\nextern const GeoLayout lll_geo_000D10[];\nextern const GeoLayout lll_geo_000D30[];\nextern const GeoLayout lll_geo_000D50[];\nextern const GeoLayout lll_geo_000D70[];\nextern const GeoLayout lll_geo_000D90[];\nextern const GeoLayout lll_geo_000DB0[];\nextern const GeoLayout lll_geo_000DD0[];\nextern const GeoLayout lll_geo_000DE8[];\nextern const GeoLayout lll_geo_000E00[];\nextern const GeoLayout lll_geo_000EA8[];\nextern const GeoLayout lll_geo_000EC0[];\n\n// leveldata\nextern const Gfx lll_seg7_dl_070134E0[];\nextern const Gfx lll_seg7_dl_070137C0[];\nextern const Gfx lll_seg7_dl_070138F8[];\nextern const Gfx lll_seg7_dl_07013D28[];\nextern const Gfx lll_seg7_dl_07014788[];\nextern const Gfx lll_seg7_dl_07014BD8[];\nextern const Gfx lll_seg7_dl_07015458[];\nextern const Gfx lll_seg7_dl_07015C88[];\nextern const Gfx lll_seg7_dl_07015E20[];\nextern const Gfx lll_seg7_dl_07016250[];\nextern const Gfx lll_seg7_dl_070165C8[];\nextern const Gfx lll_seg7_dl_07016B00[];\nextern const Gfx lll_seg7_dl_070174E0[];\nextern const Gfx lll_seg7_dl_070178A8[];\nextern const Gfx lll_seg7_dl_07017B50[];\nextern const Gfx lll_seg7_dl_07017F40[];\nextern const Gfx lll_seg7_dl_07018380[];\nextern const Gfx lll_seg7_dl_07018680[];\nextern const Gfx lll_seg7_dl_07018A30[];\nextern const Gfx lll_seg7_dl_07018C90[];\nextern const Gfx lll_seg7_dl_07018EF8[];\nextern const Gfx lll_seg7_dl_07019160[];\nextern const Gfx lll_seg7_dl_070193E0[];\nextern const Gfx lll_seg7_dl_07019A08[];\nextern const Gfx lll_seg7_dl_07019C08[];\nextern const Gfx lll_seg7_dl_0701A010[];\nextern const Gfx lll_seg7_dl_0701A1F0[];\nextern const Gfx lll_seg7_dl_0701A388[];\nextern const Gfx lll_seg7_dl_0701A3B8[];\nextern const Gfx lll_seg7_dl_0701A3E8[];\nextern const Gfx lll_seg7_dl_0701A418[];\nextern const Gfx lll_seg7_dl_0701A448[];\nextern const Gfx lll_seg7_dl_0701A478[];\nextern const Gfx lll_seg7_dl_0701A4A8[];\nextern const Gfx lll_seg7_dl_0701A4D8[];\nextern const Gfx lll_seg7_dl_0701A508[];\nextern const Gfx lll_seg7_dl_0701A538[];\nextern const Gfx lll_seg7_dl_0701A568[];\nextern const Gfx lll_seg7_dl_0701A598[];\nextern const Gfx lll_seg7_dl_0701A5C8[];\nextern const Gfx lll_seg7_dl_0701A5F8[];\nextern const Gfx lll_seg7_dl_0701A628[];\nextern const Gfx lll_seg7_dl_0701A878[];\nextern const Gfx lll_seg7_dl_0701AD70[];\nextern const Collision lll_seg7_area_1_collision[];\nextern const MacroObject lll_seg7_area_1_macro_objs[];\nextern const Collision lll_seg7_collision_octagonal_moving_platform[];\nextern const Collision lll_seg7_collision_drawbridge[];\nextern const Collision lll_seg7_collision_rotating_fire_bars[];\nextern const Collision lll_seg7_collision_wood_piece[];\nextern const Collision lll_seg7_collision_0701D21C[];\nextern const Collision lll_seg7_collision_rotating_platform[];\nextern const Collision lll_seg7_collision_slow_tilting_platform[];\nextern const Collision lll_seg7_collision_sinking_pyramids[];\nextern const Collision lll_seg7_collision_inverted_pyramid[];\nextern const Collision lll_seg7_collision_puzzle_piece[];\nextern const Collision lll_seg7_collision_floating_block[];\nextern const Collision lll_seg7_collision_pitoune[];\nextern const Collision lll_seg7_collision_hexagonal_platform[];\nextern const Gfx lll_seg7_dl_070235C8[];\nextern const Gfx lll_seg7_dl_07024C18[];\nextern const Gfx lll_seg7_dl_070255D8[];\nextern const Gfx lll_seg7_dl_07025A48[];\nextern const Gfx lll_seg7_dl_07025BD8[];\nextern const Gfx lll_seg7_dl_07025EC0[];\nextern const Collision lll_seg7_area_2_collision[];\nextern const MacroObject lll_seg7_area_2_macro_objs[];\nextern const Collision lll_seg7_collision_falling_wall[];\nextern const Trajectory lll_seg7_trajectory_0702856C[];\nextern const Trajectory lll_seg7_trajectory_07028660[];\nextern Movtex lll_movtex_tris_lava_floor[];\nextern const Gfx lll_dl_lava_floor[];\nextern const struct MovtexQuadCollection lll_movtex_volcano_floor_lava[];\nextern Movtex lll_movtex_tris_lavafall_volcano[];\nextern const Gfx lll_dl_lavafall_volcano[];\n\n// script\nextern const LevelScript level_lll_entry[];\n\n#endif\n"
  },
  {
    "path": "levels/lll/level.yaml",
    "content": "# Lethal Lava Land\nshort-name: lll\nfull-name: Lethal Lava Land\ntexture-file: [\"/texture.inc.c\"]\narea-count: 2\nobjects: [collapsing_wooden_platform, drawbridge_part, long_wooden_bridge, moving_octagonal_mesh_platform, puzzle_piece, rolling_log, rotating_block_fire_bars, rotating_hexagonal_ring, sinking_rectangular_platform, sinking_rock_block, sinking_square_platform, tilting_square_platform, volcano_falling_trap, wooden_float_large, wooden_float_small]\nshared-path: []\n# loaded files\nskybox-bin: bitfs\ntexture-bin: fire\neffects: true\nactor-bins: [group2, group17]\ncommon-bin: [common0]\n"
  },
  {
    "path": "levels/lll/leveldata.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"surface_terrains.h\"\n#include \"moving_texture_macros.h\"\n#include \"level_misc_macros.h\"\n#include \"macro_presets.h\"\n#include \"special_presets.h\"\n#include \"textures.h\"\n#include \"dialog_ids.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/lll/texture.inc.c\"\n#include \"levels/lll/areas/1/light.inc.c\" // What the hell? Every level up until LLL hasn't needed this. Some models share lights, so we'll assume its a shared area file for level optimization.\n#include \"levels/lll/areas/1/1/model.inc.c\"\n#include \"levels/lll/areas/1/2/model.inc.c\"\n#include \"levels/lll/areas/1/3/model.inc.c\"\n#include \"levels/lll/areas/1/4/model.inc.c\"\n#include \"levels/lll/areas/1/5/model.inc.c\"\n#include \"levels/lll/areas/1/6/model.inc.c\"\n#include \"levels/lll/areas/1/7/model.inc.c\"\n#include \"levels/lll/areas/1/8/model.inc.c\"\n#include \"levels/lll/areas/1/9/model.inc.c\"\n#include \"levels/lll/areas/1/10/model.inc.c\"\n#include \"levels/lll/areas/1/11/model.inc.c\"\n#include \"levels/lll/areas/1/12/model.inc.c\"\n#include \"levels/lll/areas/1/13/model.inc.c\"\n#include \"levels/lll/areas/1/14/model.inc.c\"\n#include \"levels/lll/areas/1/15/model.inc.c\"\n#include \"levels/lll/moving_octagonal_mesh_platform/model.inc.c\"\n#include \"levels/lll/drawbridge_part/model.inc.c\"\n#include \"levels/lll/rotating_block_fire_bars/model.inc.c\"\n#include \"levels/lll/wooden_float_small/model.inc.c\"\n#include \"levels/lll/wooden_float_large/model.inc.c\"\n#include \"levels/lll/collapsing_wooden_platform/model.inc.c\"\n#include \"levels/lll/long_wooden_bridge/model.inc.c\"\n#include \"levels/lll/rotating_hexagonal_ring/model.inc.c\"\n#include \"levels/lll/sinking_rectangular_platform/model.inc.c\"\n#include \"levels/lll/sinking_square_platform/model.inc.c\"\n#include \"levels/lll/tilting_square_platform/model.inc.c\"\n#include \"levels/lll/puzzle_piece/model.inc.c\"\n#include \"levels/lll/sinking_rock_block/model.inc.c\"\n#include \"levels/lll/rolling_log/model.inc.c\"\n#include \"levels/lll/areas/1/collision.inc.c\"\n#include \"levels/lll/areas/1/macro.inc.c\"\n#include \"levels/lll/moving_octagonal_mesh_platform/collision.inc.c\"\n#include \"levels/lll/drawbridge_part/collision.inc.c\"\n#include \"levels/lll/rotating_block_fire_bars/collision.inc.c\"\n#include \"levels/lll/wooden_float_small/collision.inc.c\"\n#include \"levels/lll/collapsing_wooden_platform/collision.inc.c\"\n#include \"levels/lll/rotating_hexagonal_ring/collision.inc.c\"\n#include \"levels/lll/sinking_rectangular_platform/collision.inc.c\"\n#include \"levels/lll/sinking_square_platform/collision.inc.c\"\n#include \"levels/lll/tilting_square_platform/collision.inc.c\"\n#include \"levels/lll/puzzle_piece/collision.inc.c\"\n#include \"levels/lll/sinking_rock_block/collision.inc.c\"\n#include \"levels/lll/rolling_log/collision.inc.c\"\n#include \"levels/lll/areas/1/10/collision.inc.c\"\n#include \"levels/lll/areas/2/1/model.inc.c\"\n#include \"levels/lll/areas/2/2/model.inc.c\"\n#include \"levels/lll/areas/2/3/model.inc.c\"\n#include \"levels/lll/areas/2/4/model.inc.c\"\n#include \"levels/lll/areas/2/5/model.inc.c\"\n#include \"levels/lll/volcano_falling_trap/model.inc.c\"\n#include \"levels/lll/areas/2/collision.inc.c\"\n#include \"levels/lll/areas/2/macro.inc.c\"\n#include \"levels/lll/volcano_falling_trap/collision.inc.c\"\n#include \"levels/lll/areas/2/trajectory.inc.c\"\n#include \"levels/lll/areas/2/movtext.inc.c\"\n"
  },
  {
    "path": "levels/lll/long_wooden_bridge/geo.inc.c",
    "content": "// 0x0E000B98\nconst GeoLayout lll_geo_000B98[] = {\n    GEO_CULLING_RADIUS(900),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_070193E0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/lll/long_wooden_bridge/model.inc.c",
    "content": "// 0x070191F0 - 0x07019230\nstatic const Vtx lll_seg7_vertex_070191F0[] = {\n    {{{  -255,    154,   -575}, 0, {   998,   1012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,    154,    576}, 0, {   998,  -8258}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,    154,    576}, 0, {     0,  -8258}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,    154,   -575}, 0, {     0,   1012}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07019230 - 0x07019330\nstatic const Vtx lll_seg7_vertex_07019230[] = {\n    {{{  -255,      0,   -575}, 0, {  3374,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -255,    154,   -575}, 0, {  3374,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,    154,   -575}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -255,      0,    576}, 0, {  7634,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,    154,   -575}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,      0,   -575}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,    154,    576}, 0, {  7634,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   256,      0,    576}, 0, {  3374,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,    154,    576}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,      0,    576}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,    154,    576}, 0, {  3374,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,      0,   -575}, 0, {  7122,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,    154,    576}, 0, {  -540,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,      0,    576}, 0, {  -540,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,    154,   -575}, 0, {  7122,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,      0,   -575}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07019330 - 0x07019378\nstatic const Gfx lll_seg7_dl_07019330[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_0900B800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&lll_seg7_lights_0700FC00.l, 1),\n    gsSPLight(&lll_seg7_lights_0700FC00.a, 2),\n    gsSPVertex(lll_seg7_vertex_070191F0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07019378 - 0x070193E0\nstatic const Gfx lll_seg7_dl_07019378[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07019230, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070193E0 - 0x07019470\nconst Gfx lll_seg7_dl_070193E0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_07019330),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_07019378),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/lll/moving_octagonal_mesh_platform/collision.inc.c",
    "content": "// 0x0701D018 - 0x0701D108\nconst Collision lll_seg7_collision_octagonal_moving_platform[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x10),\n    COL_VERTEX(-255, 0, -127),\n    COL_VERTEX(-127, 154, -255),\n    COL_VERTEX(-127, 0, -255),\n    COL_VERTEX(256, 154, 128),\n    COL_VERTEX(256, 154, -127),\n    COL_VERTEX(128, 154, 256),\n    COL_VERTEX(-127, 154, 256),\n    COL_VERTEX(-255, 154, 128),\n    COL_VERTEX(-255, 154, -127),\n    COL_VERTEX(128, 154, -255),\n    COL_VERTEX(-255, 0, 128),\n    COL_VERTEX(-127, 0, 256),\n    COL_VERTEX(128, 0, 256),\n    COL_VERTEX(256, 0, 128),\n    COL_VERTEX(256, 0, -127),\n    COL_VERTEX(128, 0, -255),\n    COL_TRI_INIT(SURFACE_DEFAULT, 22),\n    COL_TRI(12, 6, 11),\n    COL_TRI(0, 1, 2),\n    COL_TRI(1, 3, 4),\n    COL_TRI(1, 5, 3),\n    COL_TRI(1, 6, 5),\n    COL_TRI(1, 7, 6),\n    COL_TRI(1, 8, 7),\n    COL_TRI(1, 4, 9),\n    COL_TRI(0, 8, 1),\n    COL_TRI(2, 1, 9),\n    COL_TRI(10, 8, 0),\n    COL_TRI(10, 7, 8),\n    COL_TRI(11, 7, 10),\n    COL_TRI(11, 6, 7),\n    COL_TRI(12, 5, 6),\n    COL_TRI(2, 9, 15),\n    COL_TRI(13, 5, 12),\n    COL_TRI(13, 3, 5),\n    COL_TRI(14, 3, 13),\n    COL_TRI(14, 4, 3),\n    COL_TRI(15, 4, 14),\n    COL_TRI(15, 9, 4),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/lll/moving_octagonal_mesh_platform/geo.inc.c",
    "content": "// 0x0E000B08\nconst GeoLayout lll_geo_000B08[] = {\n    GEO_CULLING_RADIUS(550),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, lll_seg7_dl_07018380),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/lll/moving_octagonal_mesh_platform/model.inc.c",
    "content": "// 0x07017FB0 - 0x07018090\nstatic const Vtx lll_seg7_vertex_07017FB0[] = {\n    {{{  -255,    154,    128}, 0, {  -542,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -255,    154,   -127}, 0, {  -542,   -544}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -127,    154,   -255}, 0, {     0,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -127,    154,   -255}, 0, {     0,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,    154,   -127}, 0, {  1502,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   128,    154,   -255}, 0, {   990,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,    154,    128}, 0, {  1502,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   128,    154,    256}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -127,    154,    256}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,    154,    128}, 0, {  -542,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,    154,   -127}, 0, {  -542,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   128,      0,   -255}, 0, {     0,    582}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   128,    154,   -255}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   256,    154,   -127}, 0, {  -542,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07018090 - 0x07018180\nstatic const Vtx lll_seg7_vertex_07018090[] = {\n    {{{  -127,      0,   -255}, 0, {   990,    582}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   128,    154,   -255}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   128,      0,   -255}, 0, {     0,    582}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   128,      0,   -255}, 0, {     0,    582}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   256,    154,   -127}, 0, {  -542,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   256,      0,   -127}, 0, {  -542,    582}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -127,    154,   -255}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -255,      0,   -127}, 0, {  1502,    582}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -127,    154,   -255}, 0, {   990,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -127,      0,   -255}, 0, {   990,    582}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -255,    154,   -127}, 0, {  1502,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -255,      0,    128}, 0, {   990,    582}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,    154,   -127}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,      0,   -127}, 0, {     0,    582}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,    154,    128}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07018180 - 0x07018280\nstatic const Vtx lll_seg7_vertex_07018180[] = {\n    {{{   128,      0,    256}, 0, {   990,    582}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -127,    154,    256}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -127,      0,    256}, 0, {     0,    582}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -127,      0,    256}, 0, {     0,    582}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -255,    154,    128}, 0, {  -542,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -255,      0,    128}, 0, {  -542,    582}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -127,    154,    256}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   256,      0,   -127}, 0, {   990,    582}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,    154,   -127}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,    154,    128}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   128,    154,    256}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,      0,    128}, 0, {   990,    582}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   256,    154,    128}, 0, {   990,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   128,    154,    256}, 0, {   268,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   128,      0,    256}, 0, {   268,    582}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   256,      0,    128}, 0, {     0,    582}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07018280 - 0x07018380\nstatic const Gfx lll_seg7_dl_07018280[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&lll_seg7_lights_0700FC00.l, 1),\n    gsSPLight(&lll_seg7_lights_0700FC00.a, 2),\n    gsSPVertex(lll_seg7_vertex_07017FB0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  7,  6, 0x0),\n    gsSP2Triangles( 3,  8,  7, 0x0,  3,  9,  8, 0x0),\n    gsSP2Triangles( 3, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(lll_seg7_vertex_07018090, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(lll_seg7_vertex_07018180, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 0, 10,  1, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  7,  9, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07018380 - 0x070183F0\nconst Gfx lll_seg7_dl_07018380[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_07018280),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/lll/puzzle_piece/collision.inc.c",
    "content": "// 0x0701D560 - 0x0701D590\nconst Collision lll_seg7_collision_puzzle_piece[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x4),\n    COL_VERTEX(246, 0, -245),\n    COL_VERTEX(-245, 0, -245),\n    COL_VERTEX(-245, 0, 246),\n    COL_VERTEX(246, 0, 246),\n    COL_TRI_INIT(SURFACE_DEFAULT, 2),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/lll/puzzle_piece/geo.inc.c",
    "content": "// 0x0E000C10\nconst GeoLayout lll_geo_000C10[] = {\n    GEO_CULLING_RADIUS(350),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_0701A388),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, lll_seg7_dl_0701A628),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0E000C30\nconst GeoLayout lll_geo_000C30[] = {\n    GEO_CULLING_RADIUS(350),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_0701A3B8),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, lll_seg7_dl_0701A628),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0E000C50\nconst GeoLayout lll_geo_000C50[] = {\n    GEO_CULLING_RADIUS(350),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_0701A3E8),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, lll_seg7_dl_0701A628),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0E000C70\nconst GeoLayout lll_geo_000C70[] = {\n    GEO_CULLING_RADIUS(350),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_0701A418),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, lll_seg7_dl_0701A628),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0E000C90\nconst GeoLayout lll_geo_000C90[] = {\n    GEO_CULLING_RADIUS(350),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_0701A448),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, lll_seg7_dl_0701A628),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0E000CB0\nconst GeoLayout lll_geo_000CB0[] = {\n    GEO_CULLING_RADIUS(350),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_0701A478),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, lll_seg7_dl_0701A628),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0E000CD0\nconst GeoLayout lll_geo_000CD0[] = {\n    GEO_CULLING_RADIUS(350),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_0701A4A8),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, lll_seg7_dl_0701A628),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0E000CF0\nconst GeoLayout lll_geo_000CF0[] = {\n    GEO_CULLING_RADIUS(350),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_0701A4D8),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, lll_seg7_dl_0701A628),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0E000D10\nconst GeoLayout lll_geo_000D10[] = {\n    GEO_CULLING_RADIUS(350),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_0701A508),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, lll_seg7_dl_0701A628),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0E000D30\nconst GeoLayout lll_geo_000D30[] = {\n    GEO_CULLING_RADIUS(350),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_0701A538),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, lll_seg7_dl_0701A628),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0E000D50\nconst GeoLayout lll_geo_000D50[] = {\n    GEO_CULLING_RADIUS(350),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_0701A568),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, lll_seg7_dl_0701A628),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0E000D70\nconst GeoLayout lll_geo_000D70[] = {\n    GEO_CULLING_RADIUS(350),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_0701A598),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, lll_seg7_dl_0701A628),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0E000D90\nconst GeoLayout lll_geo_000D90[] = {\n    GEO_CULLING_RADIUS(350),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_0701A5C8),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, lll_seg7_dl_0701A628),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0E000DB0\nconst GeoLayout lll_geo_000DB0[] = {\n    GEO_CULLING_RADIUS(350),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_0701A5F8),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, lll_seg7_dl_0701A628),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/lll/puzzle_piece/model.inc.c",
    "content": "// 0x0701A270 - 0x0701A2B0\nstatic const Vtx lll_seg7_vertex_0701A270[] = {\n    {{{  -245,      0,    246}, 0, {     0,    992}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   246,      0,    246}, 0, {   992,    992}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   246,      0,   -245}, 0, {   992,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -245,      0,   -245}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0701A2B0 - 0x0701A2F0\nstatic const Vtx lll_seg7_vertex_0701A2B0[] = {\n    {{{  -245,    -45,    246}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xc8}}},\n    {{{   246,    -45,    246}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xc8}}},\n    {{{   246,    -45,   -245}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xc8}}},\n    {{{  -245,    -45,   -245}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xc8}}},\n};\n\n// 0x0701A2F0 - 0x0701A338\nstatic const Gfx lll_seg7_dl_0701A2F0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701A338 - 0x0701A388\nstatic const Gfx lll_seg7_dl_0701A338[] = {\n    gsSPLight(&lll_seg7_lights_0700FC00.l, 1),\n    gsSPLight(&lll_seg7_lights_0700FC00.a, 2),\n    gsSPVertex(lll_seg7_vertex_0701A270, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701A388 - 0x0701A3B8\nconst Gfx lll_seg7_dl_0701A388[] = {\n    gsSPDisplayList(lll_seg7_dl_0701A2F0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_07006000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(lll_seg7_dl_0701A338),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701A3B8 - 0x0701A3E8\nconst Gfx lll_seg7_dl_0701A3B8[] = {\n    gsSPDisplayList(lll_seg7_dl_0701A2F0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_07006800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(lll_seg7_dl_0701A338),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701A3E8 - 0x0701A418\nconst Gfx lll_seg7_dl_0701A3E8[] = {\n    gsSPDisplayList(lll_seg7_dl_0701A2F0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_07007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(lll_seg7_dl_0701A338),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701A418 - 0x0701A448\nconst Gfx lll_seg7_dl_0701A418[] = {\n    gsSPDisplayList(lll_seg7_dl_0701A2F0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_07007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(lll_seg7_dl_0701A338),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701A448 - 0x0701A478\nconst Gfx lll_seg7_dl_0701A448[] = {\n    gsSPDisplayList(lll_seg7_dl_0701A2F0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_07008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(lll_seg7_dl_0701A338),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701A478 - 0x0701A4A8\nconst Gfx lll_seg7_dl_0701A478[] = {\n    gsSPDisplayList(lll_seg7_dl_0701A2F0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_07008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(lll_seg7_dl_0701A338),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701A4A8 - 0x0701A4D8\nconst Gfx lll_seg7_dl_0701A4A8[] = {\n    gsSPDisplayList(lll_seg7_dl_0701A2F0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_07009000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(lll_seg7_dl_0701A338),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701A4D8 - 0x0701A508\nconst Gfx lll_seg7_dl_0701A4D8[] = {\n    gsSPDisplayList(lll_seg7_dl_0701A2F0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_07009800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(lll_seg7_dl_0701A338),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701A508 - 0x0701A538\nconst Gfx lll_seg7_dl_0701A508[] = {\n    gsSPDisplayList(lll_seg7_dl_0701A2F0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_0700A000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(lll_seg7_dl_0701A338),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701A538 - 0x0701A568\nconst Gfx lll_seg7_dl_0701A538[] = {\n    gsSPDisplayList(lll_seg7_dl_0701A2F0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_0700A800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(lll_seg7_dl_0701A338),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701A568 - 0x0701A598\nconst Gfx lll_seg7_dl_0701A568[] = {\n    gsSPDisplayList(lll_seg7_dl_0701A2F0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_0700B000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(lll_seg7_dl_0701A338),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701A598 - 0x0701A5C8\nconst Gfx lll_seg7_dl_0701A598[] = {\n    gsSPDisplayList(lll_seg7_dl_0701A2F0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_0700B800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(lll_seg7_dl_0701A338),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701A5C8 - 0x0701A5F8\nconst Gfx lll_seg7_dl_0701A5C8[] = {\n    gsSPDisplayList(lll_seg7_dl_0701A2F0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_0700C000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(lll_seg7_dl_0701A338),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701A5F8 - 0x0701A628\nconst Gfx lll_seg7_dl_0701A5F8[] = {\n    gsSPDisplayList(lll_seg7_dl_0701A2F0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_0700C800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(lll_seg7_dl_0701A338),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701A628 - 0x0701A670\nconst Gfx lll_seg7_dl_0701A628[] = {\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPVertex(lll_seg7_vertex_0701A2B0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/lll/rolling_log/collision.inc.c",
    "content": "// 0x0701D608 - 0x0701D71C\nconst Collision lll_seg7_collision_pitoune[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x10),\n    COL_VERTEX(1024, 106, 256),\n    COL_VERTEX(1024, 256, -105),\n    COL_VERTEX(1024, 256, 106),\n    COL_VERTEX(1024, 106, -255),\n    COL_VERTEX(1024, -105, -255),\n    COL_VERTEX(1024, -255, -105),\n    COL_VERTEX(1024, -255, 106),\n    COL_VERTEX(1024, -105, 256),\n    COL_VERTEX(-1023, 256, 106),\n    COL_VERTEX(-1023, 106, 256),\n    COL_VERTEX(-1023, -255, 106),\n    COL_VERTEX(-1023, 256, -105),\n    COL_VERTEX(-1023, -105, 256),\n    COL_VERTEX(-1023, 106, -255),\n    COL_VERTEX(-1023, -105, -255),\n    COL_VERTEX(-1023, -255, -105),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 28),\n    COL_TRI(2, 9, 0),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI(0, 4, 3),\n    COL_TRI(0, 5, 4),\n    COL_TRI(0, 6, 5),\n    COL_TRI(0, 7, 6),\n    COL_TRI(2, 8, 9),\n    COL_TRI(1, 8, 2),\n    COL_TRI(10, 8, 11),\n    COL_TRI(10, 9, 8),\n    COL_TRI(1, 11, 8),\n    COL_TRI(0, 9, 12),\n    COL_TRI(10, 12, 9),\n    COL_TRI(0, 12, 7),\n    COL_TRI(3, 11, 1),\n    COL_TRI(10, 11, 13),\n    COL_TRI(3, 13, 11),\n    COL_TRI(4, 13, 3),\n    COL_TRI(10, 13, 14),\n    COL_TRI(4, 14, 13),\n    COL_TRI(5, 14, 4),\n    COL_TRI(7, 12, 10),\n    COL_TRI(7, 10, 6),\n    COL_TRI(10, 14, 15),\n    COL_TRI(5, 15, 14),\n    COL_TRI(6, 15, 5),\n    COL_TRI(6, 10, 15),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/lll/rolling_log/geo.inc.c",
    "content": "// 0x0E000DE8\nconst GeoLayout lll_geo_000DE8[] = {\n    GEO_CULLING_RADIUS(1300),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_0701AD70),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/lll/rolling_log/model.inc.c",
    "content": "// 0x0701A8E8 - 0x0701A900\nstatic const Lights1 lll_seg7_lights_0701A8E8 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xfe, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0701A900 - 0x0701A9F0\nstatic const Vtx lll_seg7_vertex_0701A900[] = {\n    {{{  1024,   -105,   -255}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1023,    106,   -255}, 0, {   990,    144}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1024,    106,   -255}, 0, {     0,    144}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1024,    256,    106}, 0, {     0,    144}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -1023,    256,    106}, 0, {   990,    144}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -1023,    106,    256}, 0, {   990,    990}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{  1024,    106,    256}, 0, {     0,    990}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{  1024,    256,   -105}, 0, {     0,    144}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,    256,    106}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,    256,    106}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,    256,   -105}, 0, {   990,    144}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,    106,   -255}, 0, {     0,    990}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{ -1023,    106,   -255}, 0, {   990,    990}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{ -1023,    256,   -105}, 0, {   990,    144}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{  1024,    256,   -105}, 0, {     0,    144}, {0x00, 0x59, 0xa7, 0xff}}},\n};\n\n// 0x0701A9F0 - 0x0701AAE0\nstatic const Vtx lll_seg7_vertex_0701A9F0[] = {\n    {{{  1024,   -105,    256}, 0, {     0,    144}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{ -1023,   -105,    256}, 0, {   990,    144}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{ -1023,   -255,    106}, 0, {   990,    990}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{  1024,   -105,   -255}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1023,   -105,   -255}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1023,    106,   -255}, 0, {   990,    144}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1024,   -255,   -105}, 0, {     0,    990}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{ -1023,   -105,   -255}, 0, {   990,    144}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{  1024,   -105,   -255}, 0, {     0,    144}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{ -1023,   -255,   -105}, 0, {   990,    990}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{  1024,   -255,    106}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1023,   -255,    106}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1023,   -255,   -105}, 0, {   990,    144}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1024,   -255,   -105}, 0, {     0,    144}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1024,   -255,    106}, 0, {     0,    990}, {0x00, 0xa7, 0x59, 0xff}}},\n};\n\n// 0x0701AAE0 - 0x0701AB20\nstatic const Vtx lll_seg7_vertex_0701AAE0[] = {\n    {{{  1024,    106,    256}, 0, {     0,    144}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1023,   -105,    256}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1024,   -105,    256}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1023,    106,    256}, 0, {   990,    144}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0701AB20 - 0x0701AC20\nstatic const Vtx lll_seg7_vertex_0701AB20[] = {\n    {{{ -1023,   -255,    106}, 0, {     0,    778}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1023,    256,    106}, 0, {   990,    778}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1023,    256,   -105}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,    106,    256}, 0, {   690,    628}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1024,   -105,    256}, 0, {   268,    628}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1024,   -255,    106}, 0, {     0,    778}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1024,   -255,   -105}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1024,   -105,   -255}, 0, {   268,   1138}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1024,    106,   -255}, 0, {   690,   1138}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1024,    256,   -105}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1024,    256,    106}, 0, {   990,    778}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1023,    106,    256}, 0, {   690,    628}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1023,   -105,   -255}, 0, {   268,   1138}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1023,   -255,   -105}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1023,    106,   -255}, 0, {   690,   1138}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1023,   -105,    256}, 0, {   268,    628}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0701AC20 - 0x0701ACE8\nstatic const Gfx lll_seg7_dl_0701AC20[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_0900A800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&lll_seg7_lights_0701A8E8.l, 1),\n    gsSPLight(&lll_seg7_lights_0701A8E8.a, 2),\n    gsSPVertex(lll_seg7_vertex_0701A900, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701A9F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701AAE0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701ACE8 - 0x0701AD70\nstatic const Gfx lll_seg7_dl_0701ACE8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_0900B000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_0701AB20, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  3,  6,  7, 0x0),\n    gsSP2Triangles( 3,  7,  8, 0x0,  3,  8,  9, 0x0),\n    gsSP2Triangles( 3,  9, 10, 0x0,  0, 11,  1, 0x0),\n    gsSP2Triangles( 0, 12, 13, 0x0,  0, 14, 12, 0x0),\n    gsSP2Triangles( 0,  2, 14, 0x0,  0, 15, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701AD70 - 0x0701ADE8\nconst Gfx lll_seg7_dl_0701AD70[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_0701AC20),\n    gsSPDisplayList(lll_seg7_dl_0701ACE8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/lll/rotating_block_fire_bars/collision.inc.c",
    "content": "// 0x0701D138 - 0x0701D1EC\nconst Collision lll_seg7_collision_rotating_fire_bars[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0xC),\n    COL_VERTEX(-165, 0, 0),\n    COL_VERTEX(-115, 205, 0),\n    COL_VERTEX(-57, 205, -100),\n    COL_VERTEX(-82, 0, -143),\n    COL_VERTEX(-82, 0, 144),\n    COL_VERTEX(-57, 205, 101),\n    COL_VERTEX(58, 205, -100),\n    COL_VERTEX(58, 205, 101),\n    COL_VERTEX(116, 205, 0),\n    COL_VERTEX(83, 0, -143),\n    COL_VERTEX(83, 0, 144),\n    COL_VERTEX(166, 0, 0),\n    COL_TRI_INIT(SURFACE_DEFAULT, 16),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(4, 5, 0),\n    COL_TRI(5, 1, 0),\n    COL_TRI(3, 2, 6),\n    COL_TRI(2, 1, 5),\n    COL_TRI(2, 5, 7),\n    COL_TRI(2, 7, 8),\n    COL_TRI(2, 8, 6),\n    COL_TRI(3, 6, 9),\n    COL_TRI(10, 5, 4),\n    COL_TRI(10, 7, 5),\n    COL_TRI(11, 8, 7),\n    COL_TRI(11, 7, 10),\n    COL_TRI(9, 6, 8),\n    COL_TRI(9, 8, 11),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/lll/rotating_block_fire_bars/geo.inc.c",
    "content": "// 0x0E000B38\nconst GeoLayout lll_geo_000B38[] = {\n    GEO_CULLING_RADIUS(500),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_07018A30),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/lll/rotating_block_fire_bars/model.inc.c",
    "content": "// 0x07018708 - 0x07018808\nstatic const Vtx lll_seg7_vertex_07018708[] = {\n    {{{  -165,      0,      0}, 0, {     0,    514}, {0x95, 0x1a, 0xc2, 0xff}}},\n    {{{  -115,    205,      0}, 0, {   168,  -1014}, {0x95, 0x1a, 0xc2, 0xff}}},\n    {{{   -57,    205,   -100}, 0, {  1098,  -1014}, {0x95, 0x1a, 0xc2, 0xff}}},\n    {{{   -82,      0,   -143}, 0, {  1296,    514}, {0x95, 0x1a, 0xc2, 0xff}}},\n    {{{   -57,    205,   -100}, 0, {  -496,   -838}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -115,    205,      0}, 0, {  -960,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -57,    205,    101}, 0, {  -496,    774}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    58,    205,    101}, 0, {   434,    774}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   116,    205,      0}, 0, {   898,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    58,    205,   -100}, 0, {   434,   -838}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -82,      0,    144}, 0, {  1190,   1638}, {0x95, 0x1a, 0x3e, 0xff}}},\n    {{{   -57,    205,    101}, 0, {   990,      0}, {0x95, 0x1a, 0x3e, 0xff}}},\n    {{{  -165,      0,      0}, 0, {  -138,   1638}, {0x95, 0x1a, 0x3e, 0xff}}},\n    {{{   -57,    205,    101}, 0, {   990,      0}, {0x95, 0x1a, 0x3d, 0xff}}},\n    {{{  -115,    205,      0}, 0, {    60,      0}, {0x95, 0x1a, 0x3d, 0xff}}},\n    {{{  -165,      0,      0}, 0, {  -138,   1638}, {0x95, 0x1a, 0x3d, 0xff}}},\n};\n\n// 0x07018808 - 0x07018908\nstatic const Vtx lll_seg7_vertex_07018808[] = {\n    {{{   -82,      0,   -143}, 0, { -1358,    514}, {0x00, 0x1a, 0x84, 0xff}}},\n    {{{   -57,    205,   -100}, 0, { -1160,  -1014}, {0x00, 0x1a, 0x84, 0xff}}},\n    {{{    58,    205,   -100}, 0, {  -230,  -1014}, {0x00, 0x1a, 0x84, 0xff}}},\n    {{{    83,      0,    144}, 0, {     0,    990}, {0x00, 0x1a, 0x7c, 0xff}}},\n    {{{   -57,    205,    101}, 0, { -1160,   -682}, {0x00, 0x1a, 0x7c, 0xff}}},\n    {{{   -82,      0,    144}, 0, { -1358,    990}, {0x00, 0x1a, 0x7c, 0xff}}},\n    {{{    58,    205,    101}, 0, {  -230,   -682}, {0x00, 0x1a, 0x7c, 0xff}}},\n    {{{   166,      0,      0}, 0, {  1296,    990}, {0x6b, 0x1a, 0x3d, 0xff}}},\n    {{{   116,    205,      0}, 0, {  1098,   -682}, {0x6b, 0x1a, 0x3d, 0xff}}},\n    {{{    58,    205,    101}, 0, {   168,   -682}, {0x6b, 0x1a, 0x3d, 0xff}}},\n    {{{   166,      0,      0}, 0, {  1296,    990}, {0x6b, 0x1a, 0x3e, 0xff}}},\n    {{{    58,    205,    101}, 0, {   168,   -682}, {0x6b, 0x1a, 0x3e, 0xff}}},\n    {{{    83,      0,    144}, 0, {     0,    990}, {0x6b, 0x1a, 0x3e, 0xff}}},\n    {{{    83,      0,   -143}, 0, {  -138,   1162}, {0x6b, 0x1a, 0xc2, 0xff}}},\n    {{{    58,    205,   -100}, 0, {    60,   -364}, {0x6b, 0x1a, 0xc2, 0xff}}},\n    {{{   116,    205,      0}, 0, {   990,   -364}, {0x6b, 0x1a, 0xc2, 0xff}}},\n};\n\n// 0x07018908 - 0x07018968\nstatic const Vtx lll_seg7_vertex_07018908[] = {\n    {{{    83,      0,   -143}, 0, {  -138,   1162}, {0x6b, 0x1a, 0xc2, 0xff}}},\n    {{{   116,    205,      0}, 0, {   990,   -364}, {0x6b, 0x1a, 0xc2, 0xff}}},\n    {{{   166,      0,      0}, 0, {  1190,   1162}, {0x6b, 0x1a, 0xc2, 0xff}}},\n    {{{   -82,      0,   -143}, 0, { -1358,    514}, {0x00, 0x1a, 0x84, 0xff}}},\n    {{{    58,    205,   -100}, 0, {  -230,  -1014}, {0x00, 0x1a, 0x84, 0xff}}},\n    {{{    83,      0,   -143}, 0, {     0,    514}, {0x00, 0x1a, 0x84, 0xff}}},\n};\n\n// 0x07018968 - 0x07018A30\nstatic const Gfx lll_seg7_dl_07018968[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_07004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&lll_seg7_lights_0700FC00.l, 1),\n    gsSPLight(&lll_seg7_lights_0700FC00.a, 2),\n    gsSPVertex(lll_seg7_vertex_07018708, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 4,  7,  8, 0x0,  4,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_07018808, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_07018908, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07018A30 - 0x07018AA0\nconst Gfx lll_seg7_dl_07018A30[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_07018968),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/lll/rotating_hexagonal_ring/collision.inc.c",
    "content": "// 0x0701D294 - 0x0701D408\nconst Collision lll_seg7_collision_rotating_platform[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x18),\n    COL_VERTEX(-895, 0, 512),\n    COL_VERTEX(-895, 154, 512),\n    COL_VERTEX(0, 154, 1024),\n    COL_VERTEX(-1535, 154, 896),\n    COL_VERTEX(0, 154, 1792),\n    COL_VERTEX(0, 0, 1792),\n    COL_VERTEX(-1535, 0, 896),\n    COL_VERTEX(0, 0, 1024),\n    COL_VERTEX(896, 154, 512),\n    COL_VERTEX(896, 0, 512),\n    COL_VERTEX(1536, 154, 896),\n    COL_VERTEX(896, 154, -511),\n    COL_VERTEX(1536, 0, -895),\n    COL_VERTEX(1536, 0, 896),\n    COL_VERTEX(-895, 0, -511),\n    COL_VERTEX(-1535, 154, -895),\n    COL_VERTEX(0, 0, -1023),\n    COL_VERTEX(-895, 154, -511),\n    COL_VERTEX(-1535, 0, -895),\n    COL_VERTEX(0, 154, -1023),\n    COL_VERTEX(896, 0, -511),\n    COL_VERTEX(0, 0, -1791),\n    COL_VERTEX(1536, 154, -895),\n    COL_VERTEX(0, 154, -1791),\n    COL_TRI_INIT(SURFACE_DEFAULT, 36),\n    COL_TRI(0, 1, 2),\n    COL_TRI(1, 3, 4),\n    COL_TRI(1, 4, 2),\n    COL_TRI(5, 4, 3),\n    COL_TRI(5, 3, 6),\n    COL_TRI(0, 2, 7),\n    COL_TRI(7, 2, 8),\n    COL_TRI(7, 8, 9),\n    COL_TRI(2, 4, 10),\n    COL_TRI(2, 10, 8),\n    COL_TRI(9, 11, 20),\n    COL_TRI(9, 8, 11),\n    COL_TRI(12, 10, 13),\n    COL_TRI(13, 4, 5),\n    COL_TRI(13, 10, 4),\n    COL_TRI(14, 1, 0),\n    COL_TRI(19, 23, 15),\n    COL_TRI(6, 15, 18),\n    COL_TRI(6, 3, 15),\n    COL_TRI(16, 17, 14),\n    COL_TRI(14, 17, 1),\n    COL_TRI(17, 3, 1),\n    COL_TRI(17, 15, 3),\n    COL_TRI(18, 15, 23),\n    COL_TRI(18, 23, 21),\n    COL_TRI(16, 19, 17),\n    COL_TRI(19, 15, 17),\n    COL_TRI(8, 22, 11),\n    COL_TRI(20, 19, 16),\n    COL_TRI(20, 11, 19),\n    COL_TRI(11, 22, 23),\n    COL_TRI(11, 23, 19),\n    COL_TRI(21, 23, 22),\n    COL_TRI(21, 22, 12),\n    COL_TRI(12, 22, 10),\n    COL_TRI(8, 10, 22),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/lll/rotating_hexagonal_ring/geo.inc.c",
    "content": "// 0x0E000BB0\nconst GeoLayout lll_geo_000BB0[] = {\n    GEO_CULLING_RADIUS(2100),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_07019A08),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/lll/rotating_hexagonal_ring/model.inc.c",
    "content": "// 0x07019470 - 0x07019530\nstatic const Vtx lll_seg7_vertex_07019470[] = {\n    {{{     0,    154,   1024}, 0, { -2074,   2776}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    154,   1792}, 0, { -2074,   4310}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,    154,    896}, 0, {   990,   2520}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -895,    154,    512}, 0, { -3862,   1754}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,    154,    896}, 0, { -5140,   2520}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   896,    154,   -511}, 0, {  -286,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    154,  -1791}, 0, { -2074,  -2842}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    154,  -1023}, 0, { -2074,  -1310}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,    154,   -895}, 0, {   990,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   896,    154,    512}, 0, {  -286,   1754}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -895,    154,   -511}, 0, { -3862,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,    154,   -895}, 0, { -5140,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07019530 - 0x07019620\nstatic const Vtx lll_seg7_vertex_07019530[] = {\n    {{{     0,      0,   1792}, 0, { 17002,    990}, {0xc0, 0x00, 0x6d, 0xff}}},\n    {{{     0,    154,   1792}, 0, { 17002,      0}, {0xc0, 0x00, 0x6d, 0xff}}},\n    {{{ -1535,    154,    896}, 0, {     0,      0}, {0xc0, 0x00, 0x6d, 0xff}}},\n    {{{     0,      0,   1024}, 0, { 10188,    990}, {0xc1, 0x00, 0x92, 0xff}}},\n    {{{     0,    154,   1024}, 0, { 10188,      0}, {0xc1, 0x00, 0x92, 0xff}}},\n    {{{   896,    154,    512}, 0, {     0,      0}, {0xc1, 0x00, 0x92, 0xff}}},\n    {{{   896,      0,    512}, 0, {     0,    990}, {0xc1, 0x00, 0x92, 0xff}}},\n    {{{  1536,      0,    896}, 0, {   990,    990}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{  1536,    154,    896}, 0, {   990,      0}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{     0,    154,   1792}, 0, {-16042,      0}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{     0,      0,   1792}, 0, {-16042,    990}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{  -895,      0,    512}, 0, { 10188,    990}, {0x3f, 0x00, 0x92, 0xff}}},\n    {{{     0,    154,   1024}, 0, {     0,      0}, {0x3f, 0x00, 0x92, 0xff}}},\n    {{{     0,      0,   1024}, 0, {     0,    990}, {0x3f, 0x00, 0x92, 0xff}}},\n    {{{  -895,    154,    512}, 0, { 10188,      0}, {0x3f, 0x00, 0x92, 0xff}}},\n};\n\n// 0x07019620 - 0x07019710\nstatic const Vtx lll_seg7_vertex_07019620[] = {\n    {{{     0,      0,  -1023}, 0, { 10188,    990}, {0x3f, 0x00, 0x6e, 0xff}}},\n    {{{     0,    154,  -1023}, 0, { 10188,      0}, {0x3f, 0x00, 0x6e, 0xff}}},\n    {{{  -895,    154,   -511}, 0, {     0,      0}, {0x3f, 0x00, 0x6e, 0xff}}},\n    {{{     0,      0,   1792}, 0, { 17002,    990}, {0xc0, 0x00, 0x6d, 0xff}}},\n    {{{ -1535,    154,    896}, 0, {     0,      0}, {0xc0, 0x00, 0x6d, 0xff}}},\n    {{{ -1535,      0,    896}, 0, {     0,    990}, {0xc0, 0x00, 0x6d, 0xff}}},\n    {{{  -895,      0,   -511}, 0, { 10188,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -895,    154,    512}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -895,      0,    512}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -895,    154,   -511}, 0, { 10188,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1535,      0,    896}, 0, { 16320,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1535,    154,   -895}, 0, {  -712,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1535,      0,   -895}, 0, {  -712,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1535,    154,    896}, 0, { 16320,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -895,      0,   -511}, 0, {     0,    990}, {0x3f, 0x00, 0x6e, 0xff}}},\n};\n\n// 0x07019710 - 0x07019800\nstatic const Vtx lll_seg7_vertex_07019710[] = {\n    {{{   896,      0,    512}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   896,    154,   -511}, 0, { -9228,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   896,      0,   -511}, 0, { -9228,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1535,      0,   -895}, 0, { 17002,    990}, {0xc0, 0x00, 0x93, 0xff}}},\n    {{{ -1535,    154,   -895}, 0, { 17002,      0}, {0xc0, 0x00, 0x93, 0xff}}},\n    {{{     0,    154,  -1791}, 0, {     0,      0}, {0xc0, 0x00, 0x93, 0xff}}},\n    {{{     0,      0,  -1791}, 0, {     0,    990}, {0xc0, 0x00, 0x93, 0xff}}},\n    {{{   896,      0,   -511}, 0, { 10188,    990}, {0xc1, 0x00, 0x6e, 0xff}}},\n    {{{   896,    154,   -511}, 0, { 10188,      0}, {0xc1, 0x00, 0x6e, 0xff}}},\n    {{{     0,    154,  -1023}, 0, {     0,      0}, {0xc1, 0x00, 0x6e, 0xff}}},\n    {{{     0,      0,  -1023}, 0, {     0,    990}, {0xc1, 0x00, 0x6e, 0xff}}},\n    {{{     0,      0,  -1791}, 0, { 16320,    990}, {0x3f, 0x00, 0x93, 0xff}}},\n    {{{  1536,    154,   -895}, 0, {  -712,      0}, {0x3f, 0x00, 0x93, 0xff}}},\n    {{{  1536,      0,   -895}, 0, {  -712,    990}, {0x3f, 0x00, 0x93, 0xff}}},\n    {{{     0,    154,  -1791}, 0, { 16320,      0}, {0x3f, 0x00, 0x93, 0xff}}},\n};\n\n// 0x07019800 - 0x07019870\nstatic const Vtx lll_seg7_vertex_07019800[] = {\n    {{{  1536,      0,   -895}, 0, { 17002,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1536,    154,   -895}, 0, { 17002,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1536,    154,    896}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   896,      0,    512}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   896,    154,    512}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   896,    154,   -511}, 0, { -9228,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1536,      0,    896}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07019870 - 0x07019908\nstatic const Gfx lll_seg7_dl_07019870[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_07003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&lll_seg7_lights_0700FC00.l, 1),\n    gsSPLight(&lll_seg7_lights_0700FC00.a, 2),\n    gsSPVertex(lll_seg7_vertex_07019470, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 3,  1,  0, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  9,  8,  5, 0x0),\n    gsSP2Triangles( 9,  2,  8, 0x0, 10, 11,  4, 0x0),\n    gsSP2Triangles( 0,  2,  9, 0x0,  7, 11, 10, 0x0),\n    gsSP2Triangles( 7,  6, 11, 0x0, 10,  4,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07019908 - 0x07019A08\nstatic const Gfx lll_seg7_dl_07019908[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07019530, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(lll_seg7_vertex_07019620, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(lll_seg7_vertex_07019710, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(lll_seg7_vertex_07019800, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  2,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07019A08 - 0x07019A98\nconst Gfx lll_seg7_dl_07019A08[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_07019870),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_07019908),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/lll/script.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"behavior_data.h\"\n#include \"model_ids.h\"\n#include \"seq_ids.h\"\n#include \"dialog_ids.h\"\n#include \"segment_symbols.h\"\n#include \"level_commands.h\"\n\n#include \"game/level_update.h\"\n\n#include \"levels/scripts.h\"\n\n#include \"actors/common1.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/lll/header.h\"\n\n// Unlike most levels, level geometry objects in LLL are defined as regular objects instead of terrain objects.\nstatic const LevelScript script_func_local_1[] = {\n    OBJECT(/*model*/ MODEL_LEVEL_GEOMETRY_03, /*pos*/  3840,   0, -5631, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvStaticObject),\n    OBJECT(/*model*/ MODEL_LEVEL_GEOMETRY_04, /*pos*/  4992,   0,  -639, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvStaticObject),\n    OBJECT(/*model*/ MODEL_LEVEL_GEOMETRY_05, /*pos*/  7168,   0,  1408, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvStaticObject),\n    OBJECT(/*model*/ MODEL_LEVEL_GEOMETRY_06, /*pos*/     0,   0,  3712, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvStaticObject),\n    OBJECT(/*model*/ MODEL_LEVEL_GEOMETRY_07, /*pos*/ -3199,   0,  3456, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvStaticObject),\n    OBJECT(/*model*/ MODEL_LEVEL_GEOMETRY_08, /*pos*/ -5119,   0, -2047, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvStaticObject),\n    OBJECT(/*model*/ MODEL_LEVEL_GEOMETRY_0A, /*pos*/     0,   0,     0, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvStaticObject),\n    OBJECT(/*model*/ MODEL_LEVEL_GEOMETRY_0B, /*pos*/     0,   0,  6272, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvStaticObject),\n    OBJECT(/*model*/ MODEL_LEVEL_GEOMETRY_0C, /*pos*/  5632,   0,  1408, /*angle*/ 0, 270, 0, /*bhvParam*/ 0, /*bhv*/ bhvStaticObject),\n    OBJECT(/*model*/ MODEL_LEVEL_GEOMETRY_0C, /*pos*/  2048,   0,  3456, /*angle*/ 0, 180, 0, /*bhvParam*/ 0, /*bhv*/ bhvStaticObject),\n    OBJECT(/*model*/ MODEL_LEVEL_GEOMETRY_0C, /*pos*/ -4607,   0,  3456, /*angle*/ 0, 270, 0, /*bhvParam*/ 0, /*bhv*/ bhvStaticObject),\n    OBJECT(/*model*/ MODEL_LEVEL_GEOMETRY_0C, /*pos*/ -5119,   0,  -511, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvStaticObject),\n    OBJECT(/*model*/ MODEL_LEVEL_GEOMETRY_0D, /*pos*/     0,   0, -2047, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvStaticObject),\n    // This behavior differs from the rest in that it actually has collision rather than being purely visual.\n    // A likely explanation is that this object was added in after the collision model was made, and they didn't want\n    // to redo the collision so they just added a new behavior for it.\n    OBJECT(/*model*/ MODEL_LEVEL_GEOMETRY_0E, /*pos*/ -5115, 300, -3200, /*angle*/ 0,  90, 0, /*bhvParam*/ 0, /*bhv*/ bhvLLLHexagonalMesh),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_2[] = {\n    OBJECT(/*model*/ MODEL_LLL_DRAWBRIDGE_PART,                /*pos*/ -1919,  307,  3648, /*angle*/ 0,  0, 0, /*bhvParam*/ 0, /*bhv*/ bhvLLLDrawbridgeSpawner),\n    OBJECT(/*model*/ MODEL_LLL_ROTATING_BLOCK_FIRE_BARS,       /*pos*/ -5119,  307, -4095, /*angle*/ 0,  0, 0, /*bhvParam*/ 0, /*bhv*/ bhvLLLRotatingBlockWithFireBars),\n    OBJECT(/*model*/ MODEL_LLL_ROTATING_HEXAGONAL_RING,        /*pos*/     0,    0,     0, /*angle*/ 0,  0, 0, /*bhvParam*/ 0, /*bhv*/ bhvLLLRotatingHexagonalRing),\n    OBJECT(/*model*/ MODEL_LLL_SINKING_RECTANGULAR_PLATFORM,   /*pos*/  3968,    0,  1408, /*angle*/ 0, 90, 0, /*bhvParam*/ 0, /*bhv*/ bhvLLLSinkingRectangularPlatform),\n    OBJECT(/*model*/ MODEL_LLL_SINKING_RECTANGULAR_PLATFORM,   /*pos*/ -5759,    0,  3072, /*angle*/ 0,  0, 0, /*bhvParam*/ 0, /*bhv*/ bhvLLLSinkingRectangularPlatform),\n    OBJECT(/*model*/ MODEL_LLL_SINKING_RECTANGULAR_PLATFORM,   /*pos*/  2816,    0,   512, /*angle*/ 0, 90, 0, /*bhvParam*/ 0, /*bhv*/ bhvLLLSinkingRectangularPlatform),\n    OBJECT(/*model*/ MODEL_LLL_SINKING_RECTANGULAR_PLATFORM,   /*pos*/ -1791,    0, -4095, /*angle*/ 0, 90, 0, /*bhvParam*/ 0, /*bhv*/ bhvLLLSinkingRectangularPlatform),\n    OBJECT(/*model*/ MODEL_LLL_SINKING_SQUARE_PLATFORMS,       /*pos*/  3840,    0, -3199, /*angle*/ 0,  0, 0, /*bhvParam*/ 0, /*bhv*/ bhvLLLSinkingSquarePlatforms),\n    OBJECT(/*model*/ MODEL_LLL_TILTING_SQUARE_PLATFORM,        /*pos*/   922, -153,  2150, /*angle*/ 0,  0, 0, /*bhvParam*/ 0, /*bhv*/ bhvLLLTiltingInvertedPyramid),\n    OBJECT(/*model*/ MODEL_LLL_TILTING_SQUARE_PLATFORM,        /*pos*/  1741, -153,  1741, /*angle*/ 0,  0, 0, /*bhvParam*/ 0, /*bhv*/ bhvLLLTiltingInvertedPyramid),\n    OBJECT(/*model*/ MODEL_LLL_TILTING_SQUARE_PLATFORM,        /*pos*/  1741, -153,  2560, /*angle*/ 0,  0, 0, /*bhvParam*/ 0, /*bhv*/ bhvLLLTiltingInvertedPyramid),\n    OBJECT(/*model*/ MODEL_LLL_TILTING_SQUARE_PLATFORM,        /*pos*/  2099, -153,  -306, /*angle*/ 0,  0, 0, /*bhvParam*/ 0, /*bhv*/ bhvLLLTiltingInvertedPyramid),\n    OBJECT(/*model*/ MODEL_NONE,                               /*pos*/ -5119,  102,  1024, /*angle*/ 0,  0, 0, /*bhvParam*/ 0, /*bhv*/ bhvLLLBowserPuzzle),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_3[] = {\n    OBJECT(/*model*/ MODEL_LLL_MOVING_OCTAGONAL_MESH_PLATFORM, /*pos*/  1124,    0, -4607, /*angle*/ 0,  0, 0, /*bhvParam*/ 0, /*bhv*/ bhvLLLMovingOctagonalMeshPlatform),\n    OBJECT(/*model*/ MODEL_LLL_MOVING_OCTAGONAL_MESH_PLATFORM, /*pos*/  7168,    0,  2432, /*angle*/ 0,  0, 0, /*bhvParam*/ BPARAM2(0x01), /*bhv*/ bhvLLLMovingOctagonalMeshPlatform),\n    OBJECT(/*model*/ MODEL_LLL_SINKING_ROCK_BLOCK,             /*pos*/  7168,    0,  7296, /*angle*/ 0,  0, 0, /*bhvParam*/ 0, /*bhv*/ bhvLLLSinkingRockBlock),\n    OBJECT(/*model*/ MODEL_LLL_ROLLING_LOG,                    /*pos*/  6144,  307,  6016, /*angle*/ 0, 90, 0, /*bhvParam*/ 0, /*bhv*/ bhvLLLRollingLog),\n    OBJECT(/*model*/ MODEL_LLL_ROTATING_HEXAGONAL_PLATFORM,    /*pos*/ -5119,    0, -4095, /*angle*/ 0,  0, 0, /*bhvParam*/ 0, /*bhv*/ bhvLLLRotatingHexagonalPlatform),\n    OBJECT(/*model*/ MODEL_NONE,                               /*pos*/ -3583,    0, -4095, /*angle*/ 0,  0, 0, /*bhvParam*/ 0, /*bhv*/ bhvLLLFloatingWoodBridge),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_4[] = {\n    OBJECT          (/*model*/ MODEL_NONE,            /*pos*/ -3199,  307,  3456, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvMrI),\n    OBJECT          (/*model*/ MODEL_BULLY_BOSS,      /*pos*/     0,  307, -4385, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_1), /*bhv*/ bhvBigBully),\n    OBJECT          (/*model*/ MODEL_BULLY_BOSS,      /*pos*/  4046, 2234, -5521, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_2), /*bhv*/ bhvBigBullyWithMinions),\n    OBJECT          (/*model*/ MODEL_BULLY,           /*pos*/ -5119,  307, -2482, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvSmallBully),\n    OBJECT          (/*model*/ MODEL_BULLY,           /*pos*/     0,  307,  3712, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvSmallBully),\n    OBJECT          (/*model*/ MODEL_BULLY,           /*pos*/  6813,  307,  1613, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvSmallBully),\n    OBJECT          (/*model*/ MODEL_BULLY,           /*pos*/  7168,  307,   998, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvSmallBully),\n    OBJECT          (/*model*/ MODEL_BULLY,           /*pos*/ -5130,  285, -1663, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvSmallBully),\n    OBJECT          (/*model*/ MODEL_NONE,            /*pos*/     0,  200, -2048, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlamethrower),\n    OBJECT          (/*model*/ MODEL_NONE,            /*pos*/   500,    2,  5000, /*angle*/ 0, 270, 0, /*bhvParam*/ 0, /*bhv*/ bhvBouncingFireball),\n    OBJECT          (/*model*/ MODEL_NONE,            /*pos*/  -700,    2,  4500, /*angle*/ 0,  90, 0, /*bhvParam*/ 0, /*bhv*/ bhvBouncingFireball),\n    OBJECT          (/*model*/ MODEL_NONE,            /*pos*/ -6300,    2,  2625, /*angle*/ 0,  90, 0, /*bhvParam*/ 0, /*bhv*/ bhvBouncingFireball),\n    OBJECT          (/*model*/ MODEL_NONE,            /*pos*/ -3280,    2, -4854, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvBouncingFireball),\n    OBJECT          (/*model*/ MODEL_NONE,            /*pos*/  5996,    2,  -390, /*angle*/ 0, 315, 0, /*bhvParam*/ 0, /*bhv*/ bhvBouncingFireball),\n    OBJECT          (/*model*/ MODEL_NONE,            /*pos*/  5423,    2, -1991, /*angle*/ 0, 315, 0, /*bhvParam*/ 0, /*bhv*/ bhvBouncingFireball),\n    OBJECT          (/*model*/ MODEL_NONE,            /*pos*/  4921,    2, -1504, /*angle*/ 0,  90, 0, /*bhvParam*/ 0, /*bhv*/ bhvBouncingFireball),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_EXCLAMATION_BOX, /*pos*/  1050,  550,  6200, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(EXCLAMATION_BOX_BP_KOOPA_SHELL), /*bhv*/ bhvExclamationBox, /*acts*/ ACT_5 | ACT_6),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_5[] = {\n    OBJECT_WITH_ACTS(/*model*/ MODEL_NONE, /*pos*/ -4400, 350,  250, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_3), /*bhv*/ bhvHiddenRedCoinStar, /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_STAR, /*pos*/  3100, 400, 7900, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_4), /*bhv*/ bhvStar,                 /*acts*/ ALL_ACTS),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_6[] = {\n    OBJECT(/*model*/ MODEL_NONE,                         /*pos*/   728, 2606, -2754, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(56),   /*bhv*/ bhvPoleGrabbing),\n    OBJECT(/*model*/ MODEL_NONE,                         /*pos*/  1043, 2972, -2679, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(78),   /*bhv*/ bhvPoleGrabbing),\n    OBJECT(/*model*/ MODEL_NONE,                         /*pos*/  1078, 3078, -2269, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(102),  /*bhv*/ bhvPoleGrabbing),\n    OBJECT(/*model*/ MODEL_NONE,                         /*pos*/  1413, 3222, -2190, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(82),   /*bhv*/ bhvPoleGrabbing),\n    OBJECT(/*model*/ MODEL_NONE,                         /*pos*/   783, 1126,   -47, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(102),  /*bhv*/ bhvPoleGrabbing),\n    OBJECT(/*model*/ MODEL_NONE,                         /*pos*/   662, 2150,   708, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(102),  /*bhv*/ bhvPoleGrabbing),\n    OBJECT(/*model*/ MODEL_NONE,                         /*pos*/  2943,  476,    10, /*angle*/ 0, 270, 0, /*bhvParam*/ BPARAM2(0x02), /*bhv*/ bhvFlamethrower),\n    OBJECT(/*model*/ MODEL_NONE,                         /*pos*/ -2759, 2350, -1108, /*angle*/ 0,  60, 0, /*bhvParam*/ BPARAM2(0x02), /*bhv*/ bhvFlamethrower),\n    OBJECT(/*model*/ MODEL_NONE,                         /*pos*/ -2472, 2350, -1605, /*angle*/ 0,  60, 0, /*bhvParam*/ BPARAM2(0x02), /*bhv*/ bhvFlamethrower),\n    OBJECT(/*model*/ MODEL_LLL_VOLCANO_FALLING_TRAP,     /*pos*/  -485, 1203,  2933, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvLLLVolcanoFallingTrap),\n    OBJECT(/*model*/ MODEL_LLL_ROTATING_BLOCK_FIRE_BARS, /*pos*/   417, 2150,   583, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvLLLRotatingBlockWithFireBars),\n    OBJECT(/*model*/ MODEL_CHECKERBOARD_PLATFORM,        /*pos*/  -764,    0,  1664, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM1(0x08) | BPARAM2(0xA5), /*bhv*/ bhvPlatformOnTrack),\n    OBJECT(/*model*/ MODEL_CHECKERBOARD_PLATFORM,        /*pos*/   184,  980, -1366, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM1(0x08) | BPARAM2(0xA6), /*bhv*/ bhvPlatformOnTrack),\n    OBJECT(/*model*/ MODEL_NONE,                         /*pos*/   -26,  103, -2649, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvVolcanoSoundLoop),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_7[] = {\n    OBJECT_WITH_ACTS(/*model*/ MODEL_STAR, /*pos*/ 2523, 3850, -901, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_5), /*bhv*/ bhvStar, /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_STAR, /*pos*/ 1800, 3400, 1450, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_6), /*bhv*/ bhvStar, /*acts*/ ALL_ACTS),\n    RETURN(),\n};\n\nconst LevelScript level_lll_entry[] = {\n    INIT_LEVEL(),\n    LOAD_MIO0        (/*seg*/ 0x07, _lll_segment_7SegmentRomStart, _lll_segment_7SegmentRomEnd),\n    LOAD_MIO0_TEXTURE(/*seg*/ 0x09, _fire_mio0SegmentRomStart, _fire_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x0A, _bitfs_skybox_mio0SegmentRomStart, _bitfs_skybox_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x0B, _effect_mio0SegmentRomStart, _effect_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x05, _group2_mio0SegmentRomStart, _group2_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0C, _group2_geoSegmentRomStart,  _group2_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x06, _group17_mio0SegmentRomStart, _group17_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0D, _group17_geoSegmentRomStart,  _group17_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x08, _common0_mio0SegmentRomStart, _common0_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0F, _common0_geoSegmentRomStart,  _common0_geoSegmentRomEnd),\n    ALLOC_LEVEL_POOL(),\n    MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),\n    JUMP_LINK(script_func_global_1),\n    JUMP_LINK(script_func_global_3),\n    JUMP_LINK(script_func_global_18),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_03,                  lll_geo_0009E0),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_04,                  lll_geo_0009F8),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_05,                  lll_geo_000A10),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_06,                  lll_geo_000A28),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_07,                  lll_geo_000A40),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_08,                  lll_geo_000A60),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_0A,                  lll_geo_000A90),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_0B,                  lll_geo_000AA8),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_0C,                  lll_geo_000AC0),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_0D,                  lll_geo_000AD8),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_0E,                  lll_geo_000AF0),\n    LOAD_MODEL_FROM_GEO(MODEL_LLL_DRAWBRIDGE_PART,                lll_geo_000B20),\n    LOAD_MODEL_FROM_GEO(MODEL_LLL_ROTATING_BLOCK_FIRE_BARS,       lll_geo_000B38),\n    LOAD_MODEL_FROM_GEO(MODEL_LLL_ROTATING_HEXAGONAL_RING,        lll_geo_000BB0),\n    LOAD_MODEL_FROM_GEO(MODEL_LLL_SINKING_RECTANGULAR_PLATFORM,   lll_geo_000BC8),\n    LOAD_MODEL_FROM_GEO(MODEL_LLL_SINKING_SQUARE_PLATFORMS,       lll_geo_000BE0),\n    LOAD_MODEL_FROM_GEO(MODEL_LLL_TILTING_SQUARE_PLATFORM,        lll_geo_000BF8),\n    LOAD_MODEL_FROM_GEO(MODEL_LLL_BOWSER_PIECE_1,                 lll_geo_000C10),\n    LOAD_MODEL_FROM_GEO(MODEL_LLL_BOWSER_PIECE_2,                 lll_geo_000C30),\n    LOAD_MODEL_FROM_GEO(MODEL_LLL_BOWSER_PIECE_3,                 lll_geo_000C50),\n    LOAD_MODEL_FROM_GEO(MODEL_LLL_BOWSER_PIECE_4,                 lll_geo_000C70),\n    LOAD_MODEL_FROM_GEO(MODEL_LLL_BOWSER_PIECE_5,                 lll_geo_000C90),\n    LOAD_MODEL_FROM_GEO(MODEL_LLL_BOWSER_PIECE_6,                 lll_geo_000CB0),\n    LOAD_MODEL_FROM_GEO(MODEL_LLL_BOWSER_PIECE_7,                 lll_geo_000CD0),\n    LOAD_MODEL_FROM_GEO(MODEL_LLL_BOWSER_PIECE_8,                 lll_geo_000CF0),\n    LOAD_MODEL_FROM_GEO(MODEL_LLL_BOWSER_PIECE_9,                 lll_geo_000D10),\n    LOAD_MODEL_FROM_GEO(MODEL_LLL_BOWSER_PIECE_10,                lll_geo_000D30),\n    LOAD_MODEL_FROM_GEO(MODEL_LLL_BOWSER_PIECE_11,                lll_geo_000D50),\n    LOAD_MODEL_FROM_GEO(MODEL_LLL_BOWSER_PIECE_12,                lll_geo_000D70),\n    LOAD_MODEL_FROM_GEO(MODEL_LLL_BOWSER_PIECE_13,                lll_geo_000D90),\n    LOAD_MODEL_FROM_GEO(MODEL_LLL_BOWSER_PIECE_14,                lll_geo_000DB0),\n    LOAD_MODEL_FROM_GEO(MODEL_LLL_MOVING_OCTAGONAL_MESH_PLATFORM, lll_geo_000B08),\n    LOAD_MODEL_FROM_GEO(MODEL_LLL_SINKING_ROCK_BLOCK,             lll_geo_000DD0),\n    LOAD_MODEL_FROM_GEO(MODEL_LLL_ROLLING_LOG,                    lll_geo_000DE8),\n    LOAD_MODEL_FROM_GEO(MODEL_LLL_ROTATING_HEXAGONAL_PLATFORM,    lll_geo_000A78),\n    LOAD_MODEL_FROM_GEO(MODEL_LLL_WOOD_BRIDGE,                    lll_geo_000B50),\n    LOAD_MODEL_FROM_GEO(MODEL_LLL_LARGE_WOOD_BRIDGE,              lll_geo_000B68),\n    LOAD_MODEL_FROM_GEO(MODEL_LLL_FALLING_PLATFORM,               lll_geo_000B80),\n    LOAD_MODEL_FROM_GEO(MODEL_LLL_LARGE_FALLING_PLATFORM,         lll_geo_000B98),\n    LOAD_MODEL_FROM_GEO(MODEL_LLL_VOLCANO_FALLING_TRAP,           lll_geo_000EA8),\n\n    AREA(/*index*/ 1, lll_geo_000E00),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ -3839, 1154, 6272, /*angle*/ 0,   90, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvSpinAirborneWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/     0,  105,    0, /*angle*/ 0,    0, 0, /*bhvParam*/ BPARAM1(25) | BPARAM2(WARP_NODE_0B), /*bhv*/ bhvWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ -3200,   11, 3456, /*angle*/ 0, -100, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0C), /*bhv*/ bhvFadingWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ -5888,  154, 6656, /*angle*/ 0,  100, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0D), /*bhv*/ bhvFadingWarp),\n        WARP_NODE(/*id*/ WARP_NODE_0A,      /*destLevel*/ LEVEL_LLL,    /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_0B,      /*destLevel*/ LEVEL_LLL,    /*destArea*/ 2, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_0C,      /*destLevel*/ LEVEL_LLL,    /*destArea*/ 1, /*destNode*/ WARP_NODE_0D, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_0D,      /*destLevel*/ LEVEL_LLL,    /*destArea*/ 1, /*destNode*/ WARP_NODE_0C, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_SUCCESS, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 3, /*destNode*/ WARP_NODE_32, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH,   /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 3, /*destNode*/ WARP_NODE_64, /*flags*/ WARP_NO_CHECKPOINT),\n        JUMP_LINK(script_func_local_1),\n        JUMP_LINK(script_func_local_2),\n        JUMP_LINK(script_func_local_3),\n        JUMP_LINK(script_func_local_4),\n        JUMP_LINK(script_func_local_5),\n        TERRAIN(/*terrainData*/ lll_seg7_area_1_collision),\n        MACRO_OBJECTS(/*objList*/ lll_seg7_area_1_macro_objs),\n        SHOW_DIALOG(/*index*/ 0x00, DIALOG_097),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0000, /*seq*/ SEQ_LEVEL_HOT),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_STONE),\n    END_AREA(),\n\n    AREA(/*index*/ 2, lll_geo_000EC0),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ -955, 1103, -1029, /*angle*/ 0, 118, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvAirborneWarp),\n        WARP_NODE(/*id*/ WARP_NODE_0A,      /*destLevel*/ LEVEL_LLL,    /*destArea*/ 2, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_SUCCESS, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 3, /*destNode*/ WARP_NODE_32, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH,   /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 3, /*destNode*/ WARP_NODE_64, /*flags*/ WARP_NO_CHECKPOINT),\n        JUMP_LINK(script_func_local_6),\n        JUMP_LINK(script_func_local_7),\n        TERRAIN(/*terrainData*/ lll_seg7_area_2_collision),\n        MACRO_OBJECTS(/*objList*/ lll_seg7_area_2_macro_objs),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0004, /*seq*/ SEQ_LEVEL_HOT),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_STONE),\n    END_AREA(),\n\n    FREE_LEVEL_POOL(),\n    MARIO_POS(/*area*/ 1, /*yaw*/ 90, /*pos*/ -3839, 154, 6272),\n    CALL(/*arg*/ 0, /*func*/ lvl_init_or_update),\n    CALL_LOOP(/*arg*/ 1, /*func*/ lvl_init_or_update),\n    CLEAR_LEVEL(),\n    SLEEP_BEFORE_EXIT(/*frames*/ 1),\n    EXIT(),\n};\n"
  },
  {
    "path": "levels/lll/sinking_rectangular_platform/collision.inc.c",
    "content": "// 0x0701D408 - 0x0701D450\nconst Collision lll_seg7_collision_slow_tilting_platform[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x6),\n    COL_VERTEX(-383, 0, -1023),\n    COL_VERTEX(5, 41, 1024),\n    COL_VERTEX(5, 41, -1023),\n    COL_VERTEX(-383, 0, 1024),\n    COL_VERTEX(384, 0, -1023),\n    COL_VERTEX(384, 0, 1024),\n    COL_TRI_INIT(SURFACE_DEFAULT, 4),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI(1, 4, 2),\n    COL_TRI(1, 5, 4),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/lll/sinking_rectangular_platform/geo.inc.c",
    "content": "// 0x0E000BC8\nconst GeoLayout lll_geo_000BC8[] = {\n    GEO_CULLING_RADIUS(1400),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_07019C08),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/lll/sinking_rectangular_platform/model.inc.c",
    "content": "// 0x07019A98 - 0x07019B18\nstatic const Vtx lll_seg7_vertex_07019A98[] = {\n    {{{     5,     41,   1024}, 0, {   -26,   1000}, {0x0d, 0x7e, 0x00, 0xff}}},\n    {{{   384,      0,  -1023}, 0, {  1006,  -4116}, {0x0d, 0x7e, 0x00, 0xff}}},\n    {{{     5,     41,  -1023}, 0, {   -14,  -4108}, {0x0d, 0x7e, 0x00, 0xff}}},\n    {{{   384,      0,   1024}, 0, {   994,    992}, {0x0d, 0x7e, 0x00, 0xff}}},\n    {{{  -383,      0,  -1023}, 0, {   -48,  -4040}, {0xf3, 0x7e, 0x00, 0xff}}},\n    {{{     5,     41,   1024}, 0, {  1008,    994}, {0xf3, 0x7e, 0x00, 0xff}}},\n    {{{     5,     41,  -1023}, 0, {   984,  -4052}, {0xf3, 0x7e, 0x00, 0xff}}},\n    {{{  -383,      0,   1024}, 0, {   -26,   1006}, {0xf3, 0x7e, 0x00, 0xff}}},\n};\n\n// 0x07019B18 - 0x07019B78\nstatic const Vtx lll_seg7_vertex_07019B18[] = {\n    {{{  -383,      0,  -1023}, 0, {  7122,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     5,     41,  -1023}, 0, {  4016,    662}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   384,      0,  -1023}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   384,      0,   1024}, 0, {  6100,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     5,     41,   1024}, 0, {  3074,   -360}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -380,      0,   1024}, 0, {    -8,    -34}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07019B78 - 0x07019BD0\nstatic const Gfx lll_seg7_dl_07019B78[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&lll_seg7_lights_0700FC00.l, 1),\n    gsSPLight(&lll_seg7_lights_0700FC00.a, 2),\n    gsSPVertex(lll_seg7_vertex_07019A98, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07019BD0 - 0x07019C08\nstatic const Gfx lll_seg7_dl_07019BD0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09006000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07019B18, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07019C08 - 0x07019C80\nconst Gfx lll_seg7_dl_07019C08[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_07019B78),\n    gsSPDisplayList(lll_seg7_dl_07019BD0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/lll/sinking_rock_block/collision.inc.c",
    "content": "// 0x0701D590 - 0x0701D608\nconst Collision lll_seg7_collision_floating_block[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(128, 0, 256),\n    COL_VERTEX(128, 154, 256),\n    COL_VERTEX(-127, 154, 256),\n    COL_VERTEX(128, 154, -255),\n    COL_VERTEX(-127, 154, -255),\n    COL_VERTEX(128, 0, -255),\n    COL_VERTEX(-127, 0, -255),\n    COL_VERTEX(-127, 0, 256),\n    COL_TRI_INIT(SURFACE_DEFAULT, 10),\n    COL_TRI(0, 1, 2),\n    COL_TRI(1, 3, 4),\n    COL_TRI(1, 4, 2),\n    COL_TRI(5, 3, 1),\n    COL_TRI(5, 1, 0),\n    COL_TRI(6, 3, 5),\n    COL_TRI(6, 4, 3),\n    COL_TRI(7, 2, 4),\n    COL_TRI(7, 4, 6),\n    COL_TRI(0, 2, 7),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/lll/sinking_rock_block/geo.inc.c",
    "content": "// 0x0E000DD0\nconst GeoLayout lll_geo_000DD0[] = {\n    GEO_CULLING_RADIUS(600),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_0701A878),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/lll/sinking_rock_block/model.inc.c",
    "content": "// 0x0701A670 - 0x0701A688\nstatic const Lights1 lll_seg7_lights_0701A670 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xfe, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0701A688 - 0x0701A778\nstatic const Vtx lll_seg7_vertex_0701A688[] = {\n    {{{  -127,      0,    256}, 0, {  1910,   3134}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -127,    154,    256}, 0, {  2524,   2520}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -127,    154,   -255}, 0, {   480,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   128,    154,    256}, 0, {  -542,   3542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   128,    154,   -255}, 0, {  1502,   1498}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -127,    154,   -255}, 0, {   478,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -127,    154,    256}, 0, { -1564,   2520}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   128,      0,   -255}, 0, {  1910,   3134}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   128,    154,   -255}, 0, {  2522,   2520}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   128,    154,    256}, 0, {   478,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   128,      0,    256}, 0, {  -132,   1090}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -127,      0,   -255}, 0, {   888,   2112}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   128,    154,   -255}, 0, {   480,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   128,      0,   -255}, 0, {  -132,   1090}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -127,    154,   -255}, 0, {  1502,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0701A778 - 0x0701A7E8\nstatic const Vtx lll_seg7_vertex_0701A778[] = {\n    {{{   128,      0,    256}, 0, {   888,   2112}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -127,    154,    256}, 0, {   478,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -127,      0,    256}, 0, {  -132,   1090}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -127,      0,    256}, 0, {  1910,   3134}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -127,    154,   -255}, 0, {   480,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -127,      0,   -255}, 0, {  -132,   1090}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   128,    154,    256}, 0, {  1500,   1498}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0701A7E8 - 0x0701A878\nstatic const Gfx lll_seg7_dl_0701A7E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&lll_seg7_lights_0701A670.l, 1),\n    gsSPLight(&lll_seg7_lights_0701A670.a, 2),\n    gsSPVertex(lll_seg7_vertex_0701A688, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(lll_seg7_vertex_0701A778, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  6,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701A878 - 0x0701A8E8\nconst Gfx lll_seg7_dl_0701A878[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_0701A7E8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/lll/sinking_square_platform/collision.inc.c",
    "content": "// 0x0701D450 - 0x0701D510\nconst Collision lll_seg7_collision_sinking_pyramids[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0xE),\n    COL_VERTEX(0, 0, -1023),\n    COL_VERTEX(-1, 0, 0),\n    COL_VERTEX(514, 41, -511),\n    COL_VERTEX(1024, 0, 0),\n    COL_VERTEX(1024, 0, -1023),\n    COL_VERTEX(514, 41, 512),\n    COL_VERTEX(0, 0, 0),\n    COL_VERTEX(1024, 0, 1024),\n    COL_VERTEX(0, 0, 1024),\n    COL_VERTEX(-509, 41, -511),\n    COL_VERTEX(-1023, 0, 0),\n    COL_VERTEX(-1023, 0, -1023),\n    COL_VERTEX(-1023, 0, 1024),\n    COL_VERTEX(-509, 41, 512),\n    COL_TRI_INIT(SURFACE_DEFAULT, 16),\n    COL_TRI(10, 12, 13),\n    COL_TRI(0, 1, 2),\n    COL_TRI(1, 3, 2),\n    COL_TRI(4, 2, 3),\n    COL_TRI(5, 3, 6),\n    COL_TRI(7, 3, 5),\n    COL_TRI(4, 0, 2),\n    COL_TRI(8, 5, 6),\n    COL_TRI(8, 7, 5),\n    COL_TRI(9, 10, 1),\n    COL_TRI(11, 10, 9),\n    COL_TRI(0, 11, 9),\n    COL_TRI(12, 8, 13),\n    COL_TRI(13, 8, 6),\n    COL_TRI(10, 13, 6),\n    COL_TRI(0, 9, 1),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/lll/sinking_square_platform/geo.inc.c",
    "content": "// 0x0E000BE0\nconst GeoLayout lll_geo_000BE0[] = {\n    GEO_CULLING_RADIUS(1800),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_0701A010),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/lll/sinking_square_platform/model.inc.c",
    "content": "// 0x07019C80 - 0x07019D20\nstatic const Vtx lll_seg7_vertex_07019C80[] = {\n    {{{  -509,     41,   -511}, 0, {   -30,      0}, {0x00, 0x7e, 0x0a, 0xff}}},\n    {{{ -1023,      0,      0}, 0, {  -542,    478}, {0x00, 0x7e, 0x0a, 0xff}}},\n    {{{    -1,      0,      0}, 0, {   476,    480}, {0x00, 0x7e, 0x0a, 0xff}}},\n    {{{ -1023,      0,   1024}, 0, {  -542,   1500}, {0x00, 0x7e, 0x0a, 0xff}}},\n    {{{     0,      0,   1024}, 0, {   480,   1500}, {0x00, 0x7e, 0x0a, 0xff}}},\n    {{{  -509,     41,    512}, 0, {   -30,    990}, {0x00, 0x7e, 0x0a, 0xff}}},\n    {{{  1024,      0,   1024}, 0, {  1502,   1500}, {0x00, 0x7e, 0x0a, 0xff}}},\n    {{{   514,     41,    512}, 0, {   992,    990}, {0x00, 0x7e, 0x0a, 0xff}}},\n    {{{  1024,      0,      0}, 0, {  1502,    478}, {0x00, 0x7e, 0x0a, 0xff}}},\n    {{{   514,     41,   -511}, 0, {   992,      0}, {0x00, 0x7e, 0x0a, 0xff}}},\n};\n\n// 0x07019D20 - 0x07019E20\nstatic const Vtx lll_seg7_vertex_07019D20[] = {\n    {{{     0,      0,  -1023}, 0, {   480,   -544}, {0xf6, 0x7e, 0x00, 0xff}}},\n    {{{    -1,      0,      0}, 0, {   476,    480}, {0xf6, 0x7e, 0x00, 0xff}}},\n    {{{   514,     41,   -511}, 0, {   992,      0}, {0xf6, 0x7e, 0x00, 0xff}}},\n    {{{  1024,      0,  -1023}, 0, {  1502,   -544}, {0x0a, 0x7e, 0x00, 0xff}}},\n    {{{   514,     41,   -511}, 0, {   992,      0}, {0x0a, 0x7e, 0x00, 0xff}}},\n    {{{  1024,      0,      0}, 0, {  1502,    478}, {0x0a, 0x7e, 0x00, 0xff}}},\n    {{{  1024,      0,   1024}, 0, {  1502,   1500}, {0x0a, 0x7e, 0x00, 0xff}}},\n    {{{   514,     41,    512}, 0, {   992,    990}, {0x0a, 0x7e, 0x00, 0xff}}},\n    {{{ -1023,      0,  -1023}, 0, {  -542,   -544}, {0xf6, 0x7e, 0x00, 0xff}}},\n    {{{ -1023,      0,      0}, 0, {  -542,    478}, {0xf6, 0x7e, 0x00, 0xff}}},\n    {{{  -509,     41,   -511}, 0, {   -30,      0}, {0xf6, 0x7e, 0x00, 0xff}}},\n    {{{ -1023,      0,   1024}, 0, {  -542,   1500}, {0xf6, 0x7e, 0x00, 0xff}}},\n    {{{  -509,     41,    512}, 0, {   -30,    990}, {0xf6, 0x7e, 0x00, 0xff}}},\n    {{{     0,      0,  -1023}, 0, {   480,   -544}, {0x0a, 0x7e, 0x00, 0xff}}},\n    {{{  -509,     41,   -511}, 0, {   -30,      0}, {0x0a, 0x7e, 0x00, 0xff}}},\n    {{{    -1,      0,      0}, 0, {   476,    480}, {0x0a, 0x7e, 0x00, 0xff}}},\n};\n\n// 0x07019E20 - 0x07019E80\nstatic const Vtx lll_seg7_vertex_07019E20[] = {\n    {{{  -509,     41,    512}, 0, {   -30,    990}, {0x0a, 0x7e, 0x00, 0xff}}},\n    {{{     0,      0,   1024}, 0, {   480,   1500}, {0x0a, 0x7e, 0x00, 0xff}}},\n    {{{     0,      0,      0}, 0, {   478,    480}, {0x0a, 0x7e, 0x00, 0xff}}},\n    {{{     0,      0,   1024}, 0, {   480,   1500}, {0xf6, 0x7e, 0x00, 0xff}}},\n    {{{   514,     41,    512}, 0, {   992,    990}, {0xf6, 0x7e, 0x00, 0xff}}},\n    {{{     0,      0,      0}, 0, {   478,    480}, {0xf6, 0x7e, 0x00, 0xff}}},\n};\n\n// 0x07019E80 - 0x07019F20\nstatic const Vtx lll_seg7_vertex_07019E80[] = {\n    {{{  1024,      0,  -1023}, 0, {  1502,   -544}, {0x00, 0x7e, 0xf6, 0xff}}},\n    {{{     0,      0,  -1023}, 0, {   480,   -544}, {0x00, 0x7e, 0xf6, 0xff}}},\n    {{{   514,     41,   -511}, 0, {   992,      0}, {0x00, 0x7e, 0xf6, 0xff}}},\n    {{{ -1023,      0,  -1023}, 0, {  -542,   -544}, {0x00, 0x7e, 0xf6, 0xff}}},\n    {{{  -509,     41,   -511}, 0, {   -30,      0}, {0x00, 0x7e, 0xf6, 0xff}}},\n    {{{ -1023,      0,      0}, 0, {  -542,    478}, {0x00, 0x7e, 0xf6, 0xff}}},\n    {{{  -509,     41,    512}, 0, {   -30,    990}, {0x00, 0x7e, 0xf6, 0xff}}},\n    {{{     0,      0,      0}, 0, {   478,    480}, {0x00, 0x7e, 0xf6, 0xff}}},\n    {{{   514,     41,    512}, 0, {   992,    990}, {0x00, 0x7e, 0xf6, 0xff}}},\n    {{{  1024,      0,      0}, 0, {  1502,    478}, {0x00, 0x7e, 0xf6, 0xff}}},\n};\n\n// 0x07019F20 - 0x0701A010\nstatic const Gfx lll_seg7_dl_07019F20[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&lll_seg7_lights_0700FC48.l, 1),\n    gsSPLight(&lll_seg7_lights_0700FC48.a, 2),\n    gsSPVertex(lll_seg7_vertex_07019C80, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  2,  8,  9, 0x0),\n    gsSPLight(&lll_seg7_lights_0700FC60.l, 1),\n    gsSPLight(&lll_seg7_lights_0700FC60.a, 2),\n    gsSPVertex(lll_seg7_vertex_07019D20, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  5,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(lll_seg7_vertex_07019E20, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPLight(&lll_seg7_lights_0700FC00.l, 1),\n    gsSPLight(&lll_seg7_lights_0700FC00.a, 2),\n    gsSPVertex(lll_seg7_vertex_07019E80, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  9,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701A010 - 0x0701A080\nconst Gfx lll_seg7_dl_0701A010[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_07019F20),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/lll/texture.inc.c",
    "content": "// 0x07000000 - 0x07000800\nALIGNED8 static const Texture lll_seg7_texture_07000000[] = {\n#include \"levels/lll/0.rgba16.inc.c\"\n};\n\n// 0x07000800 - 0x07001000\nALIGNED8 static const Texture lll_seg7_texture_07000800[] = {\n#include \"levels/lll/1.rgba16.inc.c\"\n};\n\n// 0x07001000 - 0x07001800\nALIGNED8 static const Texture lll_seg7_texture_07001000[] = {\n#include \"levels/lll/2.rgba16.inc.c\"\n};\n\n// 0x07001800 - 0x07002000\nALIGNED8 static const Texture lll_seg7_texture_07001800[] = {\n#include \"levels/lll/3.rgba16.inc.c\"\n};\n\n// 0x07002000 - 0x07002800\nALIGNED8 static const Texture lll_seg7_texture_07002000[] = {\n#include \"levels/lll/4.rgba16.inc.c\"\n};\n\n// 0x07002800 - 0x07003000\nALIGNED8 static const Texture lll_seg7_texture_07002800[] = {\n#include \"levels/lll/5.rgba16.inc.c\"\n};\n\n// 0x07003000 - 0x07003800\nALIGNED8 static const Texture lll_seg7_texture_07003000[] = {\n#include \"levels/lll/6.rgba16.inc.c\"\n};\n\n// 0x07003800 - 0x07004000\nALIGNED8 static const Texture lll_seg7_texture_07003800[] = {\n#include \"levels/lll/7.rgba16.inc.c\"\n};\n\n// 0x07004000 - 0x07004800\nALIGNED8 static const Texture lll_seg7_texture_07004000[] = {\n#include \"levels/lll/8.rgba16.inc.c\"\n};\n\n// 0x07004800 - 0x07005000\nALIGNED8 static const Texture lll_seg7_texture_07004800[] = {\n#include \"levels/lll/9.rgba16.inc.c\"\n};\n\n// 0x07005000 - 0x07005800\nALIGNED8 static const Texture lll_seg7_texture_07005000[] = {\n#include \"levels/lll/10.rgba16.inc.c\"\n};\n\n// 0x07005800 - 0x07006000\nALIGNED8 static const Texture lll_seg7_texture_07005800[] = {\n#include \"levels/lll/11.rgba16.inc.c\"\n};\n\n// 0x07006000 - 0x07006800\nALIGNED8 static const Texture lll_seg7_texture_07006000[] = {\n#include \"levels/lll/12.rgba16.inc.c\"\n};\n\n// 0x07006800 - 0x07007000\nALIGNED8 static const Texture lll_seg7_texture_07006800[] = {\n#include \"levels/lll/13.rgba16.inc.c\"\n};\n\n// 0x07007000 - 0x07007800\nALIGNED8 static const Texture lll_seg7_texture_07007000[] = {\n#include \"levels/lll/14.rgba16.inc.c\"\n};\n\n// 0x07007800 - 0x07008000\nALIGNED8 static const Texture lll_seg7_texture_07007800[] = {\n#include \"levels/lll/15.rgba16.inc.c\"\n};\n\n// 0x07008000 - 0x07008800\nALIGNED8 static const Texture lll_seg7_texture_07008000[] = {\n#include \"levels/lll/16.rgba16.inc.c\"\n};\n\n// 0x07008800 - 0x07009000\nALIGNED8 static const Texture lll_seg7_texture_07008800[] = {\n#include \"levels/lll/17.rgba16.inc.c\"\n};\n\n// 0x07009000 - 0x07009800\nALIGNED8 static const Texture lll_seg7_texture_07009000[] = {\n#include \"levels/lll/18.rgba16.inc.c\"\n};\n\n// 0x07009800 - 0x0700A000\nALIGNED8 static const Texture lll_seg7_texture_07009800[] = {\n#include \"levels/lll/19.rgba16.inc.c\"\n};\n\n// 0x0700A000 - 0x0700A800\nALIGNED8 static const Texture lll_seg7_texture_0700A000[] = {\n#include \"levels/lll/20.rgba16.inc.c\"\n};\n\n// 0x0700A800 - 0x0700B000\nALIGNED8 static const Texture lll_seg7_texture_0700A800[] = {\n#include \"levels/lll/21.rgba16.inc.c\"\n};\n\n// 0x0700B000 - 0x0700B800\nALIGNED8 static const Texture lll_seg7_texture_0700B000[] = {\n#include \"levels/lll/22.rgba16.inc.c\"\n};\n\n// 0x0700B800 - 0x0700C000\nALIGNED8 static const Texture lll_seg7_texture_0700B800[] = {\n#include \"levels/lll/23.rgba16.inc.c\"\n};\n\n// 0x0700C000 - 0x0700C800\nALIGNED8 static const Texture lll_seg7_texture_0700C000[] = {\n#include \"levels/lll/24.rgba16.inc.c\"\n};\n\n// 0x0700C800 - 0x0700D000\nALIGNED8 static const Texture lll_seg7_texture_0700C800[] = {\n#include \"levels/lll/25.rgba16.inc.c\"\n};\n\n// 0x0700D000 - 0x0700D200\nALIGNED8 static const Texture lll_seg7_texture_0700D000[] = {\n#include \"levels/lll/26.rgba16.inc.c\"\n};\n\n// 0x0700D200 - 0x0700D400\nALIGNED8 static const Texture lll_seg7_texture_0700D200[] = {\n#include \"levels/lll/27.ia16.inc.c\"\n};\n\n// 0x0700D400 - 0x0700DC00\nALIGNED8 static const Texture lll_seg7_texture_0700D400[] = {\n#include \"levels/lll/28.rgba16.inc.c\"\n};\n\n// 0x0700DC00 - 0x0700E400\nALIGNED8 static const Texture lll_seg7_texture_0700DC00[] = {\n#include \"levels/lll/29.rgba16.inc.c\"\n};\n\n// 0x0700E400 - 0x0700EC00\nALIGNED8 static const Texture lll_seg7_texture_0700E400[] = {\n#include \"levels/lll/30.rgba16.inc.c\"\n};\n\n// 0x0700EC00 - 0x0700F400\nALIGNED8 static const Texture lll_seg7_texture_0700EC00[] = {\n#include \"levels/lll/31.rgba16.inc.c\"\n};\n\n// 0x0700F400 - 0x0700FC00\nALIGNED8 static const Texture lll_seg7_texture_0700F400[] = {\n#include \"levels/lll/32.rgba16.inc.c\"\n};\n"
  },
  {
    "path": "levels/lll/tilting_square_platform/collision.inc.c",
    "content": "// 0x0701D510 - 0x0701D55E\nconst Collision lll_seg7_collision_inverted_pyramid[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x5),\n    COL_VERTEX(0, 0, 0),\n    COL_VERTEX(307, 307, 307),\n    COL_VERTEX(-306, 307, 307),\n    COL_VERTEX(307, 307, -306),\n    COL_VERTEX(-306, 307, -306),\n    COL_TRI_INIT(SURFACE_DEFAULT, 6),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI(1, 4, 2),\n    COL_TRI(1, 3, 4),\n    COL_TRI(0, 4, 3),\n    COL_TRI(0, 2, 4),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/lll/tilting_square_platform/geo.inc.c",
    "content": "// 0x0E000BF8\nconst GeoLayout lll_geo_000BF8[] = {\n    GEO_CULLING_RADIUS(800),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_0701A1F0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/lll/tilting_square_platform/model.inc.c",
    "content": "// 0x0701A080 - 0x0701A120\nstatic const Vtx lll_seg7_vertex_0701A080[] = {\n    {{{     0,      0,      0}, 0, {   480,    478}, {0xff, 0x00, 0x00, 0xff}}},\n    {{{  -306,    307,   -306}, 0, {     0,    990}, {0xff, 0x00, 0x00, 0xff}}},\n    {{{   307,    307,   -306}, 0, {   990,    990}, {0xff, 0x00, 0x00, 0xff}}},\n    {{{   307,    307,    307}, 0, {   990,      0}, {0xff, 0x00, 0x00, 0xff}}},\n    {{{  -306,    307,    307}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0xff}}},\n    {{{     0,      0,      0}, 0, {   480,    478}, {0xc8, 0x00, 0x00, 0xff}}},\n    {{{  -306,    307,    307}, 0, {     0,      0}, {0xc8, 0x00, 0x00, 0xff}}},\n    {{{  -306,    307,   -306}, 0, {     0,    990}, {0xc8, 0x00, 0x00, 0xff}}},\n    {{{   307,    307,   -306}, 0, {   990,    990}, {0xc8, 0x00, 0x00, 0xff}}},\n    {{{   307,    307,    307}, 0, {   990,      0}, {0xc8, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0701A120 - 0x0701A160\nstatic const Vtx lll_seg7_vertex_0701A120[] = {\n    {{{   307,    307,    307}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -306,    307,   -306}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -306,    307,    307}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   307,    307,   -306}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0701A160 - 0x0701A1A8\nstatic const Gfx lll_seg7_dl_0701A160[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_0701A080, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  8,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701A1A8 - 0x0701A1F0\nstatic const Gfx lll_seg7_dl_0701A1A8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&lll_seg7_lights_0700FC00.l, 1),\n    gsSPLight(&lll_seg7_lights_0700FC00.a, 2),\n    gsSPVertex(lll_seg7_vertex_0701A120, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701A1F0 - 0x0701A270\nconst Gfx lll_seg7_dl_0701A1F0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_0701A160),\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPDisplayList(lll_seg7_dl_0701A1A8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/lll/volcano_falling_trap/collision.inc.c",
    "content": "// 0x070284DC - 0x0702856C\nconst Collision lll_seg7_collision_falling_wall[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0xA),\n    COL_VERTEX(307, -101, 105),\n    COL_VERTEX(307, 614, 105),\n    COL_VERTEX(307, -101, 703),\n    COL_VERTEX(-306, 614, 105),\n    COL_VERTEX(-306, -101, 703),\n    COL_VERTEX(-306, -101, 105),\n    COL_VERTEX(-306, -101, 3),\n    COL_VERTEX(-306, 614, 3),\n    COL_VERTEX(307, 614, 3),\n    COL_VERTEX(307, -101, 3),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(2, 1, 3),\n    COL_TRI(2, 3, 4),\n    COL_TRI(3, 5, 4),\n    COL_TRI(6, 7, 8),\n    COL_TRI(6, 8, 9),\n    COL_TRI(7, 1, 8),\n    COL_TRI(7, 3, 1),\n    COL_TRI(7, 6, 5),\n    COL_TRI(7, 5, 3),\n    COL_TRI(9, 8, 1),\n    COL_TRI(9, 1, 0),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/lll/volcano_falling_trap/geo.inc.c",
    "content": "// 0x0E000EA8\nconst GeoLayout lll_geo_000EA8[] = {\n    GEO_CULLING_RADIUS(900),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_07025EC0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/lll/volcano_falling_trap/model.inc.c",
    "content": "// 0x07025C90 - 0x07025D70\nstatic const Vtx lll_seg7_vertex_07025C90[] = {\n    {{{  -306,    614,      0}, 0, {     0,    864}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  -306,   -101,      0}, 0, {     0,   3184}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  -306,   -101,    102}, 0, {   300,   3184}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  -306,    614,    102}, 0, {   300,    864}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{   307,   -101,      0}, 0, {  3086,   3184}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{   307,    614,    102}, 0, {  2754,    864}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{   307,   -101,    102}, 0, {  2754,   3184}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{   307,    614,      0}, 0, {  3086,    864}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  -306,   -101,      0}, 0, {  5078,   3184}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -306,    614,      0}, 0, {  5078,    864}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   307,    614,      0}, 0, {  3086,    864}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   307,   -101,      0}, 0, {  3086,   3184}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   307,    614,    102}, 0, {  3086,    830}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -306,    614,    102}, 0, {  5078,    830}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07025D70 - 0x07025E10\nstatic const Vtx lll_seg7_vertex_07025D70[] = {\n    {{{   307,   -101,    102}, 0, { -2584,  -4120}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{   307,    614,    102}, 0, { -2584,   3032}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{   307,   -101,    700}, 0, { -2584,  -4120}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  -306,    614,    102}, 0, {  3544,   3032}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  -306,   -101,    102}, 0, {  3546,  -4120}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{  -306,   -101,    700}, 0, {  3544,  -4120}, {0x77, 0x77, 0x77, 0xff}}},\n    {{{   307,   -101,    700}, 0, { -2584,  -4120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -306,    614,    102}, 0, {  3544,   3032}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -306,   -101,    700}, 0, {  3544,  -4120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   307,    614,    102}, 0, { -2584,   3032}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07025E10 - 0x07025E78\nstatic const Gfx lll_seg7_dl_07025E10[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_0700DC00),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07025C90, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0,  9, 13, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07025E78 - 0x07025EC0\nstatic const Gfx lll_seg7_dl_07025E78[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_0900A000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07025D70, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07025EC0 - 0x07025F80\nconst Gfx lll_seg7_dl_07025EC0[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogFactor(0x0855, 0xF8AB), // This isn't gsSPFogPosition since there is no valid min/max pair that corresponds to 0x0855F8AB\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_07025E10),\n    gsSPDisplayList(lll_seg7_dl_07025E78),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/lll/wooden_float_large/geo.inc.c",
    "content": "// 0x0E000B68\nconst GeoLayout lll_geo_000B68[] = {\n    GEO_CULLING_RADIUS(1100),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_07018EF8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/lll/wooden_float_large/model.inc.c",
    "content": "// 0x07018D08 - 0x07018D88\nstatic const Vtx lll_seg7_vertex_07018D08[] = {\n    {{{   768,      0,    384}, 0, { 10188,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   768,    154,    384}, 0, { 10188,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -767,    154,    384}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -767,      0,    384}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -767,      0,   -383}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   768,    154,   -383}, 0, { -9228,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   768,      0,   -383}, 0, { -9228,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -767,    154,   -383}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07018D88 - 0x07018E48\nstatic const Vtx lll_seg7_vertex_07018D88[] = {\n    {{{   768,    154,   -383}, 0, {     0,  -9230}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,    154,   -383}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,    154,    384}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   768,    154,    384}, 0, {   990,  -9230}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   768,      0,   -383}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   768,    154,   -383}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   768,    154,    384}, 0, { -4118,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   768,      0,    384}, 0, { -4118,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -767,      0,    384}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -767,    154,   -383}, 0, { -4118,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -767,      0,   -383}, 0, { -4118,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -767,    154,    384}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07018E48 - 0x07018EA0\nstatic const Gfx lll_seg7_dl_07018E48[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&lll_seg7_lights_0700FC00.l, 1),\n    gsSPLight(&lll_seg7_lights_0700FC00.a, 2),\n    gsSPVertex(lll_seg7_vertex_07018D08, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07018EA0 - 0x07018EF8\nstatic const Gfx lll_seg7_dl_07018EA0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07018D88, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07018EF8 - 0x07018F70\nconst Gfx lll_seg7_dl_07018EF8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_07018E48),\n    gsSPDisplayList(lll_seg7_dl_07018EA0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/lll/wooden_float_small/collision.inc.c",
    "content": "// 0x0701D1EC - 0x0701D21C\nconst Collision lll_seg7_collision_wood_piece[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x4),\n    COL_VERTEX(154, 154, -383),\n    COL_VERTEX(-153, 154, -383),\n    COL_VERTEX(-153, 154, 384),\n    COL_VERTEX(154, 154, 384),\n    COL_TRI_INIT(SURFACE_DEFAULT, 2),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/lll/wooden_float_small/geo.inc.c",
    "content": "// 0x0E000B50\nconst GeoLayout lll_geo_000B50[] = {\n    GEO_CULLING_RADIUS(700),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, lll_seg7_dl_07018C90),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/lll/wooden_float_small/model.inc.c",
    "content": "// 0x07018AA0 - 0x07018B20\nstatic const Vtx lll_seg7_vertex_07018AA0[] = {\n    {{{   154,      0,    384}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   154,    154,    384}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -153,    154,    384}, 0, { -1052,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -153,      0,    384}, 0, { -1052,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -153,      0,   -383}, 0, {  2012,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   154,    154,   -383}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   154,      0,   -383}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -153,    154,   -383}, 0, {  2012,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07018B20 - 0x07018BE0\nstatic const Vtx lll_seg7_vertex_07018B20[] = {\n    {{{   154,    154,   -383}, 0, {   990,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -153,    154,   -383}, 0, {     0,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -153,    154,    384}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   154,    154,    384}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   154,      0,   -383}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   154,    154,   -383}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   154,    154,    384}, 0, { -4118,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   154,      0,    384}, 0, { -4118,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -153,      0,    384}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -153,    154,   -383}, 0, { -4118,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -153,      0,   -383}, 0, { -4118,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -153,    154,    384}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07018BE0 - 0x07018C38\nstatic const Gfx lll_seg7_dl_07018BE0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&lll_seg7_lights_0700FC00.l, 1),\n    gsSPLight(&lll_seg7_lights_0700FC00.a, 2),\n    gsSPVertex(lll_seg7_vertex_07018AA0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07018C38 - 0x07018C90\nstatic const Gfx lll_seg7_dl_07018C38[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(lll_seg7_vertex_07018B20, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07018C90 - 0x07018D08\nconst Gfx lll_seg7_dl_07018C90[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(lll_seg7_dl_07018BE0),\n    gsSPDisplayList(lll_seg7_dl_07018C38),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/menu/geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"game/level_geo.h\"\n#include \"game/geo_misc.h\"\n#include \"game/camera.h\"\n#include \"game/moving_texture.h\"\n#include \"game/screen_transition.h\"\n#include \"game/paintings.h\"\n#include \"menu/file_select.h\"\n#include \"menu/star_select.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"levels/menu/header.h\"\n\n// 0x0E0001D0\nconst GeoLayout geo_menu_mario_save_button[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 524288),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, dl_menu_mario_save_button_base),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, dl_menu_save_button_back),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0E000200\nconst GeoLayout geo_menu_mario_save_button_fade[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 524288),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, dl_menu_mario_save_button_base),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, dl_menu_save_button_fade_back),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0E000230\nconst GeoLayout geo_menu_mario_new_button[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 524288),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, dl_menu_mario_new_button_base),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, dl_menu_save_button_back),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0E000260\nconst GeoLayout geo_menu_mario_new_button_fade[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 524288),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, dl_menu_mario_new_button_base),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, dl_menu_save_button_fade_back),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0E000290\nconst GeoLayout geo_menu_erase_button[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 524288),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, dl_menu_erase_button),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0E0002B8\nconst GeoLayout geo_menu_copy_button[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 524288),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, dl_menu_copy_button),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0E0002E0\nconst GeoLayout geo_menu_file_button[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 524288),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, dl_menu_file_button),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0E000308\nconst GeoLayout geo_menu_score_button[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 524288),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, dl_menu_score_button),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0E000330\nconst GeoLayout geo_menu_sound_button[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 524288),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, dl_menu_sound_button),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0E000358\nconst GeoLayout geo_menu_generic_button[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 524288),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, dl_menu_generic_button),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0E000380\nconst GeoLayout geo_menu_file_select_strings_and_menu_cursor[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND_COLOR(0x0001),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM(45, 100, 25000),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(0, 0, 0, 1000, 0, 0, 0, 0x00000000),\n                GEO_OPEN_NODE(),\n                    GEO_RENDER_OBJ(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_file_select_strings_and_menu_cursor),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0E000408\nconst GeoLayout geo_menu_act_selector_strings[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND_COLOR(0xFFFF),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM(45, 100, 25000),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(0, 0, 0, 1000, 0, 0, 0, 0x00000000),\n                GEO_OPEN_NODE(),\n                    GEO_RENDER_OBJ(),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_act_selector_strings),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/menu/header.h",
    "content": "#ifndef MENU_HEADER_H\n#define MENU_HEADER_H\n\n#include \"types.h\"\n\n// geo\nextern const GeoLayout geo_menu_mario_save_button[];\nextern const GeoLayout geo_menu_mario_save_button_fade[];\nextern const GeoLayout geo_menu_mario_new_button[];\nextern const GeoLayout geo_menu_mario_new_button_fade[];\nextern const GeoLayout geo_menu_erase_button[];\nextern const GeoLayout geo_menu_copy_button[];\nextern const GeoLayout geo_menu_file_button[];\nextern const GeoLayout geo_menu_score_button[];\nextern const GeoLayout geo_menu_sound_button[];\nextern const GeoLayout geo_menu_generic_button[];\nextern const GeoLayout geo_menu_file_select_strings_and_menu_cursor[];\nextern const GeoLayout geo_menu_act_selector_strings[];\n\n// leveldata\nextern const Gfx dl_menu_mario_save_button_base[];\nextern const Gfx dl_menu_mario_new_button_base[];\nextern const Gfx dl_menu_save_button_back[];\nextern const Gfx dl_menu_save_button_fade_back[];\nextern const Gfx dl_menu_erase_button[];\nextern const Gfx dl_menu_copy_button[];\nextern const Gfx dl_menu_file_button[];\nextern const Gfx dl_menu_score_button[];\nextern const Gfx dl_menu_sound_button[];\nextern const Gfx dl_menu_generic_button[];\nextern const Gfx dl_menu_idle_hand[];\nextern const Gfx dl_menu_grabbing_hand[];\nextern const u8 *const menu_hud_lut[];\nextern const u8 *const menu_font_lut[];\nextern const Gfx dl_menu_ia8_text_begin[];\nextern const Gfx dl_menu_ia8_text_end[];\nextern const Gfx dl_menu_rgba16_wood_course[];\nextern const Gfx dl_menu_texture_course_upper[];\nextern const Gfx dl_menu_texture_niveau_upper[];\nextern const Gfx dl_menu_texture_kurs_upper[];\nextern const Collision main_menu_seg7_collision[];\n#ifdef VERSION_EU\nextern const u8 eu_course_strings_en_table[];\nextern const u8 eu_course_strings_fr_table[];\nextern const u8 eu_course_strings_de_table[];\n#endif\n\n// script\nextern const LevelScript level_main_menu_entry_1[];\nextern const LevelScript level_main_menu_entry_2[];\n\n#endif\n"
  },
  {
    "path": "levels/menu/leveldata.c",
    "content": "#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\n#include \"macros.h\"\n#include \"surface_terrains.h\"\n#include \"types.h\"\n\n#ifdef VERSION_EU\n#include \"text_strings.h\"\n#endif\n#include \"make_const_nonconst.h\"\n\n// 0x07000000 - 0x07000018\nstatic const Lights1 lights_menu_save_button = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07000018 - 0x07000818\nALIGNED8 static const Texture texture_menu_stone[] = {\n#include \"levels/menu/main_menu_seg7.00018.rgba16.inc.c\"\n};\n\n// 0x07000818 - 0x07001018\nALIGNED8 static const Texture texture_menu_dark_stone[] = {\n#include \"levels/menu/main_menu_seg7.00818.rgba16.inc.c\"\n};\n\n// 0x07001018 - 0x07002018\nALIGNED8 static const Texture texture_menu_mario_save[] = {\n#include \"levels/menu/main_menu_seg7.01018.rgba16.inc.c\"\n};\n\n// 0x07002018 - 0x07003018\nALIGNED8 static const Texture texture_menu_mario_new[] = {\n#include \"levels/menu/main_menu_seg7.02018.rgba16.inc.c\"\n};\n\n// 0x07003018 - 0x07003118\nstatic const Vtx vertex_menu_save_button_borders[] = {\n    {{{  -163,   -122,      0}, 0, {     0,    990}, {0x00, 0xb6, 0x66, 0xff}}},\n    {{{   163,   -122,      0}, 0, {   990,    990}, {0x00, 0xb6, 0x66, 0xff}}},\n    {{{  -122,    -81,     30}, 0, {    96,    820}, {0x00, 0xb6, 0x66, 0xff}}},\n    {{{   122,    -81,     30}, 0, {   862,    820}, {0x00, 0xb6, 0x66, 0xff}}},\n    {{{  -163,   -122,      0}, 0, {     0,    990}, {0xb6, 0x00, 0x66, 0xff}}},\n    {{{  -122,    -81,     30}, 0, {    96,    820}, {0xb6, 0x00, 0x66, 0xff}}},\n    {{{  -163,    122,      0}, 0, {     0,      0}, {0xb6, 0x00, 0x66, 0xff}}},\n    {{{  -122,     81,     30}, 0, {    96,    138}, {0xb6, 0x00, 0x66, 0xff}}},\n    {{{  -122,     81,     30}, 0, {    96,    138}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{   122,     81,     30}, 0, {   862,    138}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{   163,    122,      0}, 0, {   990,      0}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{  -163,    122,      0}, 0, {     0,      0}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{   122,     81,     30}, 0, {   862,    138}, {0x4a, 0x00, 0x66, 0xff}}},\n    {{{   122,    -81,     30}, 0, {   862,    820}, {0x4a, 0x00, 0x66, 0xff}}},\n    {{{   163,   -122,      0}, 0, {   990,    990}, {0x4a, 0x00, 0x66, 0xff}}},\n    {{{   163,    122,      0}, 0, {   990,      0}, {0x4a, 0x00, 0x66, 0xff}}},\n};\n\n// 0x07003118 - 0x07003158\nstatic const Vtx vertex_menu_save_button_front[] = {\n    {{{   122,     81,     30}, 0, {  2012,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -122,     81,     30}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   122,    -81,     30}, 0, {  2012,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -122,    -81,     30}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07003158 - 0x070031A0\nstatic const Gfx dl_tex_block_menu_save_button_base[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x070031A0 - 0x07003218\nstatic const Gfx dl_vertex_menu_save_button_borders[] = {\n    gsSPLight(&lights_menu_save_button.l, 1),\n    gsSPLight(&lights_menu_save_button.a, 2),\n    gsSPVertex(vertex_menu_save_button_borders, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  8, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 15, 12, 14, 0x0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x07003218 - 0x07003258\nstatic const Gfx dl_vertex_menu_save_button_front[] = {\n    gsSPVertex(vertex_menu_save_button_front, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x07003258 - 0x07003298\nstatic const Vtx vertex_menu_save_button_back[] = {\n    {{{   163,   -122,      0}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -163,   -122,      0}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   163,    122,      0}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -163,    122,      0}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07003298 - 0x070032E0\nstatic const Gfx dl_tex_block_menu_save_button_back[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x070032E0 - 0x07003330\nstatic const Gfx dl_vertex_menu_save_button_back[] = {\n    gsSPLight(&lights_menu_save_button.l, 1),\n    gsSPLight(&lights_menu_save_button.a, 2),\n    gsSPVertex(vertex_menu_save_button_back, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x07003330 - 0x07003380\nconst Gfx dl_menu_mario_save_button_base[] = {\n    gsSPDisplayList(dl_tex_block_menu_save_button_base),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_menu_stone),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(dl_vertex_menu_save_button_borders),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_menu_mario_save),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(dl_vertex_menu_save_button_front),\n    gsSPEndDisplayList(),\n};\n\n// 0x07003380 - 0x070033D0\nconst Gfx dl_menu_mario_new_button_base[] = {\n    gsSPDisplayList(dl_tex_block_menu_save_button_base),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_menu_stone),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(dl_vertex_menu_save_button_borders),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_menu_mario_new),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(dl_vertex_menu_save_button_front),\n    gsSPEndDisplayList(),\n};\n\n// 0x070033D0 - 0x07003400\nconst Gfx dl_menu_save_button_back[] = {\n    gsSPDisplayList(dl_tex_block_menu_save_button_back),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_menu_dark_stone),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(dl_vertex_menu_save_button_back),\n    gsSPEndDisplayList(),\n};\n\n// 0x07003400 - 0x07003450\nconst Gfx dl_menu_save_button_fade_back[] = {\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsSPLight(&lights_menu_save_button.l, 1),\n    gsSPLight(&lights_menu_save_button.a, 2),\n    gsSPVertex(vertex_menu_save_button_back, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x07003450 - 0x07003468\nstatic const Lights1 lights_menu_main_button = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07003468 - 0x07003468\nALIGNED8 static const Texture texture_menu_erase[] = {\n#include \"levels/menu/main_menu_seg7.03468.rgba16.inc.c\"\n};\n\n// 0x07003C68 - 0x07003C68\nALIGNED8 static const Texture texture_menu_copy[] = {\n#include \"levels/menu/main_menu_seg7.03C68.rgba16.inc.c\"\n};\n\n// 0x07004468 - 0x07004468\nALIGNED8 static const Texture texture_menu_file[] = {\n#include \"levels/menu/main_menu_seg7.04468.rgba16.inc.c\"\n};\n\n// 0x07004C68 - 0x07004C68\nALIGNED8 static const Texture texture_menu_score[] = {\n#include \"levels/menu/main_menu_seg7.04C68.rgba16.inc.c\"\n};\n\n// 0x07005468 - 0x07005468\nALIGNED8 static const Texture texture_menu_sound[] = {\n#include \"levels/menu/main_menu_seg7.05468.rgba16.inc.c\"\n};\n\n// 0x07005C68 - 0x07005D68\nstatic const Vtx vertex_menu_main_button_group1[] = {\n    {{{  -163,   -122,      0}, 0, {   990,      0}, {0xb6, 0x00, 0x66, 0xff}}},\n    {{{  -122,    -81,     30}, 0, {   862,    138}, {0xb6, 0x00, 0x66, 0xff}}},\n    {{{  -163,    122,      0}, 0, {   990,    990}, {0xb6, 0x00, 0x66, 0xff}}},\n    {{{  -143,    102,      0}, 0, {   926,    904}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -133,     92,     10}, 0, {   894,    862}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -133,    -92,     10}, 0, {   894,     96}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -133,     92,     10}, 0, {   894,    862}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   133,    -92,     10}, 0, {    64,     96}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -133,    -92,     10}, 0, {   894,     96}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   133,     92,     10}, 0, {    64,    862}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   133,     92,     10}, 0, {    64,    862}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{  -133,     92,     10}, 0, {   894,    862}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{  -143,    102,      0}, 0, {   926,    904}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{   143,   -102,      0}, 0, {    32,     54}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   133,     92,     10}, 0, {    64,    862}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   143,    102,      0}, 0, {    32,    904}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07005D68 - 0x07005E68\nstatic const Vtx vertex_menu_main_button_group2[] = {\n    {{{   143,   -102,      0}, 0, {    32,     54}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   133,    -92,     10}, 0, {    64,     96}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   133,     92,     10}, 0, {    64,    862}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   133,     92,     10}, 0, {    64,    862}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{  -143,    102,      0}, 0, {   926,    904}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{   143,    102,      0}, 0, {    32,    904}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{  -143,   -102,      0}, 0, {   926,     54}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{   133,    -92,     10}, 0, {    64,     96}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{   143,   -102,      0}, 0, {    32,     54}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{  -133,    -92,     10}, 0, {   894,     96}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{  -143,    102,      0}, 0, {   926,    904}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -133,    -92,     10}, 0, {   894,     96}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -143,   -102,      0}, 0, {   926,     54}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   163,    122,      0}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -143,    102,      0}, 0, {   926,    904}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -163,    122,      0}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07005E68 - 0x07005F48\nstatic const Vtx vertex_menu_main_button_group3[] = {\n    {{{   163,    122,      0}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   143,    102,      0}, 0, {    32,    904}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -143,    102,      0}, 0, {   926,    904}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   143,   -102,      0}, 0, {    32,     54}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   163,   -122,      0}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -163,    122,      0}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -143,   -102,      0}, 0, {   926,     54}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -163,   -122,      0}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   163,   -122,      0}, 0, {     0,      0}, {0x00, 0xb6, 0x66, 0xff}}},\n    {{{   122,    -81,     30}, 0, {    96,    138}, {0x00, 0xb6, 0x66, 0xff}}},\n    {{{  -122,    -81,     30}, 0, {   862,    138}, {0x00, 0xb6, 0x66, 0xff}}},\n    {{{  -122,    -81,     30}, 0, {   862,    138}, {0xb6, 0x00, 0x66, 0xff}}},\n    {{{  -122,     81,     30}, 0, {   862,    820}, {0xb6, 0x00, 0x66, 0xff}}},\n    {{{  -163,    122,      0}, 0, {   990,    990}, {0xb6, 0x00, 0x66, 0xff}}},\n};\n\n// 0x07005F48 - 0x07006038\nstatic const Vtx vertex_menu_main_button_group4[] = {\n    {{{  -122,     81,     30}, 0, {   862,    820}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -122,    -81,     30}, 0, {   862,    138}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   122,    -81,     30}, 0, {    96,    138}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -163,   -122,      0}, 0, {   990,      0}, {0x00, 0xb6, 0x66, 0xff}}},\n    {{{   163,   -122,      0}, 0, {     0,      0}, {0x00, 0xb6, 0x66, 0xff}}},\n    {{{  -122,    -81,     30}, 0, {   862,    138}, {0x00, 0xb6, 0x66, 0xff}}},\n    {{{  -122,     81,     30}, 0, {   862,    820}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{   122,     81,     30}, 0, {    96,    820}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{   163,    122,      0}, 0, {     0,    990}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{  -163,    122,      0}, 0, {   990,    990}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{   122,     81,     30}, 0, {    96,    820}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   163,    122,      0}, 0, {     0,    990}, {0x4a, 0x00, 0x66, 0xff}}},\n    {{{   122,     81,     30}, 0, {    96,    820}, {0x4a, 0x00, 0x66, 0xff}}},\n    {{{   163,   -122,      0}, 0, {     0,      0}, {0x4a, 0x00, 0x66, 0xff}}},\n    {{{   122,    -81,     30}, 0, {    96,    138}, {0x4a, 0x00, 0x66, 0xff}}},\n};\n\n// 0x07006038 - 0x07006150\nstatic const Gfx dl_vertex_menu_main_button[] = {\n    gsSPLight(&lights_menu_main_button.l, 1),\n    gsSPLight(&lights_menu_main_button.a, 2),\n    gsSPVertex(vertex_menu_main_button_group1, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(vertex_menu_main_button_group2, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(vertex_menu_main_button_group3, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  5,  2,  6, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  6,  3,  4, 0x0),\n    gsSP2Triangles( 6,  4,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP1Triangle(11, 12, 13, 0x0),\n    gsSPVertex(vertex_menu_main_button_group4, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6,  8, 0x0),\n    gsSP2Triangles(10,  0,  2, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07006150 - 0x07006198\nstatic const Gfx dl_tex_block_menu_main_button[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x07006198 - 0x070061C8\nstatic const Gfx dl_menu_main_button[] = {\n    gsSPDisplayList(dl_vertex_menu_main_button),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n\n// 0x070061C8 - 0x070061F8\nconst Gfx dl_menu_erase_button[] = {\n    gsSPDisplayList(dl_tex_block_menu_main_button),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_menu_erase),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(dl_menu_main_button),\n    gsSPEndDisplayList(),\n};\n\n// 0x070061F8 - 0x07006228\nconst Gfx dl_menu_copy_button[] = {\n    gsSPDisplayList(dl_tex_block_menu_main_button),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_menu_copy),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(dl_menu_main_button),\n    gsSPEndDisplayList(),\n};\n\n// 0x07006228 - 0x07006258\nconst Gfx dl_menu_file_button[] = {\n    gsSPDisplayList(dl_tex_block_menu_main_button),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_menu_file),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(dl_menu_main_button),\n    gsSPEndDisplayList(),\n};\n\n// 0x07006258 - 0x07006288\nconst Gfx dl_menu_score_button[] = {\n    gsSPDisplayList(dl_tex_block_menu_main_button),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_menu_score),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(dl_menu_main_button),\n    gsSPEndDisplayList(),\n};\n\n// 0x07006288 - 0x070062B8\nconst Gfx dl_menu_sound_button[] = {\n    gsSPDisplayList(dl_tex_block_menu_main_button),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_menu_sound),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(dl_menu_main_button),\n    gsSPEndDisplayList(),\n};\n\n// 0x070062B8 - 0x070062E8\nconst Gfx dl_menu_generic_button[] = {\n    gsSPDisplayList(dl_tex_block_menu_main_button),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_menu_stone),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(dl_menu_main_button),\n    gsSPEndDisplayList(),\n};\n\n// 0x070062E8 - 0x07006328\nstatic const Vtx vertex_menu_hand[] = {\n    {{{     0,      0,      0}, 0, {     0,   1984}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    32,      0,      0}, 0, {  1984,   1984}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    32,     32,      0}, 0, {  1984,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,     32,      0}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07006328 - 0x07006B28\nALIGNED8 static const Texture texture_menu_idle_hand[] = {\n#include \"levels/menu/main_menu_seg7.06328.rgba16.inc.c\"\n};\n\n// 0x07006B28 - 0x07007328\nALIGNED8 static const Texture texture_menu_grabbing_hand[] = {\n#include \"levels/menu/main_menu_seg7.06B28.rgba16.inc.c\"\n};\n\n// 0x07007328 - 0x070073A0\nstatic const Gfx dl_menu_hand[] = {\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsDPSetRenderMode(G_RM_AA_TEX_EDGE, G_RM_AA_TEX_EDGE2),\n    gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPVertex(vertex_menu_hand, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPTexture(0x0001, 0x0001, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x070073A0 - 0x070073B8\nconst Gfx dl_menu_idle_hand[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_menu_idle_hand),\n    gsSPBranchList(dl_menu_hand),\n};\n\n// 0x070073B8 - 0x070073D0\nconst Gfx dl_menu_grabbing_hand[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_menu_grabbing_hand),\n    gsSPBranchList(dl_menu_hand),\n};\n\n// 0x070073D0\nALIGNED8 static const Texture texture_menu_hud_char_katakana_hu[] = {\n#include \"levels/menu/main_menu_seg7.073D0.rgba16.inc.c\"\n};\n\n// 0x070075D0\nALIGNED8 static const Texture texture_menu_hud_char_katakana_small_a[] = {\n#include \"levels/menu/main_menu_seg7.075D0.rgba16.inc.c\"\n};\n\n// 0x070077D0\nALIGNED8 static const Texture texture_menu_hud_char_katakana_i[] = {\n#include \"levels/menu/main_menu_seg7.077D0.rgba16.inc.c\"\n};\n\n// 0x070079D0\nALIGNED8 static const Texture texture_menu_hud_char_katakana_ru[] = {\n#include \"levels/menu/main_menu_seg7.079D0.rgba16.inc.c\"\n};\n\n// 0x07007BD0\nALIGNED8 static const Texture texture_menu_hud_char_katakana_se[] = {\n#include \"levels/menu/main_menu_seg7.07BD0.rgba16.inc.c\"\n};\n\n// 0x07007DD0\nALIGNED8 static const Texture texture_menu_hud_char_katakana_re[] = {\n#include \"levels/menu/main_menu_seg7.07DD0.rgba16.inc.c\"\n};\n\n// 0x07007FD0\nALIGNED8 static const Texture texture_menu_hud_char_katakana_ku[] = {\n#include \"levels/menu/main_menu_seg7.07FD0.rgba16.inc.c\"\n};\n\n// 0x070081D0\nALIGNED8 static const Texture texture_menu_hud_char_katakana_to[] = {\n#include \"levels/menu/main_menu_seg7.081D0.rgba16.inc.c\"\n};\n\n// 0x070083D0\nALIGNED8 static const Texture texture_menu_hud_char_hiragana_wo[] = {\n#include \"levels/menu/main_menu_seg7.083D0.rgba16.inc.c\"\n};\n\n// 0x070085D0\nALIGNED8 static const Texture texture_menu_hud_char_katakana_ko[] = {\n#include \"levels/menu/main_menu_seg7.085D0.rgba16.inc.c\"\n};\n\n// 0x070087D0\nALIGNED8 static const Texture texture_menu_hud_char_kana_handakuten_pi[] = {\n#include \"levels/menu/main_menu_seg7.087D0.rgba16.inc.c\"\n};\n\n// 0x070089D0\nALIGNED8 static const Texture texture_menu_hud_char_choonpu[] = {\n#include \"levels/menu/main_menu_seg7.089D0.rgba16.inc.c\"\n};\n\n// 0x07008BD0\nALIGNED8 static const Texture texture_menu_hud_char_hiragana_su[] = {\n#include \"levels/menu/main_menu_seg7.08BD0.rgba16.inc.c\"\n};\n\n// 0x07008DD0\nALIGNED8 static const Texture texture_menu_hud_char_hiragana_ru[] = {\n#include \"levels/menu/main_menu_seg7.08DD0.rgba16.inc.c\"\n};\n\n// 0x07008FD0\nALIGNED8 static const Texture texture_menu_hud_char_hiragana_ke[] = {\n#include \"levels/menu/main_menu_seg7.08FD0.rgba16.inc.c\"\n};\n\n// 0x070091D0\nALIGNED8 static const Texture texture_menu_hud_char_katakana_ma[] = {\n#include \"levels/menu/main_menu_seg7.091D0.rgba16.inc.c\"\n};\n\n// 0x070093D0\nALIGNED8 static const Texture texture_menu_hud_char_katakana_ri[] = {\n#include \"levels/menu/main_menu_seg7.093D0.rgba16.inc.c\"\n};\n\n// 0x070095D0\nALIGNED8 static const Texture texture_menu_hud_char_katakana_o[] = {\n#include \"levels/menu/main_menu_seg7.095D0.rgba16.inc.c\"\n};\n\n// 0x070097D0\nALIGNED8 static const Texture texture_menu_hud_char_katakana_su[] = {\n#include \"levels/menu/main_menu_seg7.097D0.rgba16.inc.c\"\n};\n\n// 0x070099D0\nALIGNED8 static const Texture texture_menu_hud_char_katakana_a[] = {\n#include \"levels/menu/main_menu_seg7.099D0.rgba16.inc.c\"\n};\n\n// 0x07009BD0\nALIGNED8 static const Texture texture_menu_hud_char_hiragana_mi[] = {\n#include \"levels/menu/main_menu_seg7.09BD0.rgba16.inc.c\"\n};\n\n// 0x07009DD0\nALIGNED8 static const Texture texture_menu_hud_char_hira_dakuten_do[] = {\n#include \"levels/menu/main_menu_seg7.09DD0.rgba16.inc.c\"\n};\n\n// 0x07009FD0\nALIGNED8 static const Texture texture_menu_hud_char_hiragana_no[] = {\n#include \"levels/menu/main_menu_seg7.09FD0.rgba16.inc.c\"\n};\n\n// 0x0700A1D0\nALIGNED8 static const Texture texture_menu_hud_char_question[] = {\n#include \"levels/menu/main_menu_seg7.0A1D0.rgba16.inc.c\"\n};\n\n// 0x0700A3D0\nALIGNED8 static const Texture texture_menu_hud_char_katakana_sa[] = {\n#include \"levels/menu/main_menu_seg7.0A3D0.rgba16.inc.c\"\n};\n\n// 0x0700A5D0\nALIGNED8 static const Texture texture_menu_hud_char_katakana_u[] = {\n#include \"levels/menu/main_menu_seg7.0A5D0.rgba16.inc.c\"\n};\n\n// 0x0700A7D0\nALIGNED8 static const Texture texture_menu_hud_char_katakana_n[] = {\n#include \"levels/menu/main_menu_seg7.0A7D0.rgba16.inc.c\"\n};\n\n// 0x0700A9D0\nALIGNED8 static const Texture texture_menu_hud_char_kana_dakuten_do[] = {\n#include \"levels/menu/main_menu_seg7.0A9D0.rgba16.inc.c\"\n};\n\n// Menu HUD print table, only used in JP\n// 0x0700ABD0\nconst Texture *const menu_hud_lut[] = {\n    texture_menu_hud_char_katakana_hu, texture_menu_hud_char_katakana_small_a,         texture_menu_hud_char_katakana_i, texture_menu_hud_char_katakana_ru,\n    texture_menu_hud_char_katakana_se,      texture_menu_hud_char_katakana_re,        texture_menu_hud_char_katakana_ku, texture_menu_hud_char_katakana_to,\n    texture_menu_hud_char_hiragana_wo,      texture_menu_hud_char_katakana_ko, texture_menu_hud_char_kana_handakuten_pi, texture_menu_hud_char_choonpu,\n    texture_menu_hud_char_hiragana_su,      texture_menu_hud_char_hiragana_ru,        texture_menu_hud_char_hiragana_ke, texture_menu_hud_char_katakana_ma,\n    texture_menu_hud_char_katakana_ri,       texture_menu_hud_char_katakana_o,        texture_menu_hud_char_katakana_su, texture_menu_hud_char_katakana_a,\n    texture_menu_hud_char_hiragana_mi,  texture_menu_hud_char_hira_dakuten_do,        texture_menu_hud_char_hiragana_no, texture_menu_hud_char_question,\n    texture_menu_hud_char_katakana_sa,       texture_menu_hud_char_katakana_u,         texture_menu_hud_char_katakana_n, texture_menu_hud_char_kana_dakuten_do,\n};\n\n#if defined(VERSION_JP) || defined(VERSION_SH)\nUNUSED static const u64 menu_unused_0 = 0;\n\n// 0x0700AC48\nALIGNED8 static const Texture texture_menu_font_char_jp_0[] = {\n#include \"levels/menu/main_menu_seg7.0AC48.ia8.inc.c\"\n};\n\n// 0x0700AC88\nALIGNED8 static const Texture texture_menu_font_char_jp_1[] = {\n#include \"levels/menu/main_menu_seg7.0AC88.ia8.inc.c\"\n};\n\n// 0x0700ACC8\nALIGNED8 static const Texture texture_menu_font_char_jp_2[] = {\n#include \"levels/menu/main_menu_seg7.0ACC8.ia8.inc.c\"\n};\n\n// 0x0700AD08\nALIGNED8 static const Texture texture_menu_font_char_jp_3[] = {\n#include \"levels/menu/main_menu_seg7.0AD08.ia8.inc.c\"\n};\n\n// 0x0700AD48\nALIGNED8 static const Texture texture_menu_font_char_jp_4[] = {\n#include \"levels/menu/main_menu_seg7.0AD48.ia8.inc.c\"\n};\n\n// 0x0700AD88\nALIGNED8 static const Texture texture_menu_font_char_jp_5[] = {\n#include \"levels/menu/main_menu_seg7.0AD88.ia8.inc.c\"\n};\n\n// 0x0700ADC8\nALIGNED8 static const Texture texture_menu_font_char_jp_6[] = {\n#include \"levels/menu/main_menu_seg7.0ADC8.ia8.inc.c\"\n};\n\n// 0x0700AE08\nALIGNED8 static const Texture texture_menu_font_char_jp_7[] = {\n#include \"levels/menu/main_menu_seg7.0AE08.ia8.inc.c\"\n};\n\n// 0x0700AE48\nALIGNED8 static const Texture texture_menu_font_char_jp_8[] = {\n#include \"levels/menu/main_menu_seg7.0AE48.ia8.inc.c\"\n};\n\n// 0x0700AE88\nALIGNED8 static const Texture texture_menu_font_char_jp_9[] = {\n#include \"levels/menu/main_menu_seg7.0AE88.ia8.inc.c\"\n};\n\n// 0x0700AEC8\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_a[] = {\n#include \"levels/menu/main_menu_seg7.0AEC8.ia8.inc.c\"\n};\n\n// 0x0700AF08\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_i[] = {\n#include \"levels/menu/main_menu_seg7.0AF08.ia8.inc.c\"\n};\n\n// 0x0700AF48\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_u[] = {\n#include \"levels/menu/main_menu_seg7.0AF48.ia8.inc.c\"\n};\n\n// 0x0700AF88\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_c[] = {\n#include \"levels/menu/main_menu_seg7.0AF88.ia8.inc.c\"\n};\n\n// 0x0700AFC8\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_o[] = {\n#include \"levels/menu/main_menu_seg7.0AFC8.ia8.inc.c\"\n};\n\n// 0x0700B008\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_ka[] = {\n#include \"levels/menu/main_menu_seg7.0B008.ia8.inc.c\"\n};\n\n// 0x0700B048\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_ki[] = {\n#include \"levels/menu/main_menu_seg7.0B048.ia8.inc.c\"\n};\n\n// 0x0700B088\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_ku[] = {\n#include \"levels/menu/main_menu_seg7.0B088.ia8.inc.c\"\n};\n\n// 0x0700B0C8\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_ke[] = {\n#include \"levels/menu/main_menu_seg7.0B0C8.ia8.inc.c\"\n};\n\n// 0x0700B108\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_ko[] = {\n#include \"levels/menu/main_menu_seg7.0B108.ia8.inc.c\"\n};\n\n// 0x0700B148\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_sa[] = {\n#include \"levels/menu/main_menu_seg7.0B148.ia8.inc.c\"\n};\n\n// 0x0700B188\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_shi[] = {\n#include \"levels/menu/main_menu_seg7.0B188.ia8.inc.c\"\n};\n\n// 0x0700B1C8\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_su[] = {\n#include \"levels/menu/main_menu_seg7.0B1C8.ia8.inc.c\"\n};\n\n// 0x0700B208\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_se[] = {\n#include \"levels/menu/main_menu_seg7.0B208.ia8.inc.c\"\n};\n\n// 0x0700B248\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_so[] = {\n#include \"levels/menu/main_menu_seg7.0B248.ia8.inc.c\"\n};\n\n// 0x0700B288\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_ta[] = {\n#include \"levels/menu/main_menu_seg7.0B288.ia8.inc.c\"\n};\n\n// 0x0700B2C8\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_chi[] = {\n#include \"levels/menu/main_menu_seg7.0B2C8.ia8.inc.c\"\n};\n\n// 0x0700B308\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_tsu[] = {\n#include \"levels/menu/main_menu_seg7.0B308.ia8.inc.c\"\n};\n\n// 0x0700B348\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_te[] = {\n#include \"levels/menu/main_menu_seg7.0B348.ia8.inc.c\"\n};\n\n// 0x0700B388\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_to[] = {\n#include \"levels/menu/main_menu_seg7.0B388.ia8.inc.c\"\n};\n\n// 0x0700B3C8\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_na[] = {\n#include \"levels/menu/main_menu_seg7.0B3C8.ia8.inc.c\"\n};\n\n// 0x0700B408\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_ni[] = {\n#include \"levels/menu/main_menu_seg7.0B408.ia8.inc.c\"\n};\n\n// 0x0700B448\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_nu[] = {\n#include \"levels/menu/main_menu_seg7.0B448.ia8.inc.c\"\n};\n\n// 0x0700B488\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_ne[] = {\n#include \"levels/menu/main_menu_seg7.0B488.ia8.inc.c\"\n};\n\n// 0x0700B4C8\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_no[] = {\n#include \"levels/menu/main_menu_seg7.0B4C8.ia8.inc.c\"\n};\n\n// 0x0700B508\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_ha[] = {\n#include \"levels/menu/main_menu_seg7.0B508.ia8.inc.c\"\n};\n\n// 0x0700B548\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_hi[] = {\n#include \"levels/menu/main_menu_seg7.0B548.ia8.inc.c\"\n};\n\n// 0x0700B588\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_hu[] = {\n#include \"levels/menu/main_menu_seg7.0B588.ia8.inc.c\"\n};\n\n// 0x0700B5C8\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_he[] = {\n#include \"levels/menu/main_menu_seg7.0B5C8.ia8.inc.c\"\n};\n\n// 0x0700B608\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_ho[] = {\n#include \"levels/menu/main_menu_seg7.0B608.ia8.inc.c\"\n};\n\n// 0x0700B648\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_ma[] = {\n#include \"levels/menu/main_menu_seg7.0B648.ia8.inc.c\"\n};\n\n// 0x0700B688\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_mi[] = {\n#include \"levels/menu/main_menu_seg7.0B688.ia8.inc.c\"\n};\n\n// 0x0700B6C8\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_mu[] = {\n#include \"levels/menu/main_menu_seg7.0B6C8.ia8.inc.c\"\n};\n\n// 0x0700B708\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_me[] = {\n#include \"levels/menu/main_menu_seg7.0B708.ia8.inc.c\"\n};\n\n// 0x0700B748\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_mo[] = {\n#include \"levels/menu/main_menu_seg7.0B748.ia8.inc.c\"\n};\n\n// 0x0700B788\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_ya[] = {\n#include \"levels/menu/main_menu_seg7.0B788.ia8.inc.c\"\n};\n\n// 0x0700B7C8\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_yu[] = {\n#include \"levels/menu/main_menu_seg7.0B7C8.ia8.inc.c\"\n};\n\n// 0x0700B808\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_yo[] = {\n#include \"levels/menu/main_menu_seg7.0B808.ia8.inc.c\"\n};\n\n// 0x0700B848\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_ra[] = {\n#include \"levels/menu/main_menu_seg7.0B848.ia8.inc.c\"\n};\n\n// 0x0700B888\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_ri[] = {\n#include \"levels/menu/main_menu_seg7.0B888.ia8.inc.c\"\n};\n\n// 0x0700B8C8\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_ru[] = {\n#include \"levels/menu/main_menu_seg7.0B8C8.ia8.inc.c\"\n};\n\n// 0x0700B908\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_re[] = {\n#include \"levels/menu/main_menu_seg7.0B908.ia8.inc.c\"\n};\n\n// 0x0700B948\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_ro[] = {\n#include \"levels/menu/main_menu_seg7.0B948.ia8.inc.c\"\n};\n\n// 0x0700B988\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_wa[] = {\n#include \"levels/menu/main_menu_seg7.0B988.ia8.inc.c\"\n};\n\n// 0x0700B9C8\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_wo[] = {\n#include \"levels/menu/main_menu_seg7.0B9C8.ia8.inc.c\"\n};\n\n// 0x0700BA08\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_n[] = {\n#include \"levels/menu/main_menu_seg7.0BA08.ia8.inc.c\"\n};\n\n// 0x0700BA48\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_small_a[] = {\n#include \"levels/menu/main_menu_seg7.0BA48.ia8.inc.c\"\n};\n\n// 0x0700BA88\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_small_i[] = {\n#include \"levels/menu/main_menu_seg7.0BA88.ia8.inc.c\"\n};\n\n// 0x0700BAC8\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_small_u[] = {\n#include \"levels/menu/main_menu_seg7.0BAC8.ia8.inc.c\"\n};\n\n// 0x0700BB08\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_small_e[] = {\n#include \"levels/menu/main_menu_seg7.0BB08.ia8.inc.c\"\n};\n\n// 0x0700BB48\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_small_o[] = {\n#include \"levels/menu/main_menu_seg7.0BB48.ia8.inc.c\"\n};\n\n// 0x0700BB88\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_small_ka[] = {\n#include \"levels/menu/main_menu_seg7.0BB88.ia8.inc.c\"\n};\n\n// 0x0700BBC8\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_small_yu[] = {\n#include \"levels/menu/main_menu_seg7.0BBC8.ia8.inc.c\"\n};\n\n// 0x0700BC08\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_small_yo[] = {\n#include \"levels/menu/main_menu_seg7.0BC08.ia8.inc.c\"\n};\n\n// 0x0700BC48\nALIGNED8 static const Texture texture_menu_font_char_jp_hiragana_small_tsu[] = {\n#include \"levels/menu/main_menu_seg7.0BC48.ia8.inc.c\"\n};\n\n// 0x0700BC88\nALIGNED8 static const Texture texture_menu_font_char_jp_handakuten[] = {\n#include \"levels/menu/main_menu_seg7.0BC88.ia8.inc.c\"\n};\n\n// 0x0700BCC8\nALIGNED8 static const Texture texture_menu_font_char_jp_dakuten[] = {\n#include \"levels/menu/main_menu_seg7.0BCC8.ia8.inc.c\"\n};\n\n// 0x0700BD08\nALIGNED8 static const Texture texture_menu_font_char_jp_long_vowel[] = {\n#include \"levels/menu/main_menu_seg7.0BD08.ia8.inc.c\"\n};\n\n// 0x0700BD48\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_a[] = {\n#include \"levels/menu/main_menu_seg7.0BD48.ia8.inc.c\"\n};\n\n// 0x0700BD88\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_i[] = {\n#include \"levels/menu/main_menu_seg7.0BD88.ia8.inc.c\"\n};\n\n// 0x0700BDC8\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_u[] = {\n#include \"levels/menu/main_menu_seg7.0BDC8.ia8.inc.c\"\n};\n\n// 0x0700BE08\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_e[] = {\n#include \"levels/menu/main_menu_seg7.0BE08.ia8.inc.c\"\n};\n\n// 0x0700BE48\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_o[] = {\n#include \"levels/menu/main_menu_seg7.0BE48.ia8.inc.c\"\n};\n\n// 0x0700BE88\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_ka[] = {\n#include \"levels/menu/main_menu_seg7.0BE88.ia8.inc.c\"\n};\n\n// 0x0700BEC8\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_ki[] = {\n#include \"levels/menu/main_menu_seg7.0BEC8.ia8.inc.c\"\n};\n\n// 0x0700BF08\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_ku[] = {\n#include \"levels/menu/main_menu_seg7.0BF08.ia8.inc.c\"\n};\n\n// 0x0700BF48\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_ke[] = {\n#include \"levels/menu/main_menu_seg7.0BF48.ia8.inc.c\"\n};\n\n// 0x0700BF88\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_ko[] = {\n#include \"levels/menu/main_menu_seg7.0BF88.ia8.inc.c\"\n};\n\n// 0x0700BFC8\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_sa[] = {\n#include \"levels/menu/main_menu_seg7.0BFC8.ia8.inc.c\"\n};\n\n// 0x0700C008\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_shi[] = {\n#include \"levels/menu/main_menu_seg7.0C008.ia8.inc.c\"\n};\n\n// 0x0700C048\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_su[] = {\n#include \"levels/menu/main_menu_seg7.0C048.ia8.inc.c\"\n};\n\n// 0x0700C088\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_se[] = {\n#include \"levels/menu/main_menu_seg7.0C088.ia8.inc.c\"\n};\n\n// 0x0700C0C8\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_so[] = {\n#include \"levels/menu/main_menu_seg7.0C0C8.ia8.inc.c\"\n};\n\n// 0x0700C108\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_ta[] = {\n#include \"levels/menu/main_menu_seg7.0C108.ia8.inc.c\"\n};\n\n// 0x0700C148\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_chi[] = {\n#include \"levels/menu/main_menu_seg7.0C148.ia8.inc.c\"\n};\n\n// 0x0700C188\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_tsu[] = {\n#include \"levels/menu/main_menu_seg7.0C188.ia8.inc.c\"\n};\n\n// 0x0700C1C8\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_te[] = {\n#include \"levels/menu/main_menu_seg7.0C1C8.ia8.inc.c\"\n};\n\n// 0x0700C208\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_to[] = {\n#include \"levels/menu/main_menu_seg7.0C208.ia8.inc.c\"\n};\n\n// 0x0700C248\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_na[] = {\n#include \"levels/menu/main_menu_seg7.0C248.ia8.inc.c\"\n};\n\n// 0x0700C288\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_ni[] = {\n#include \"levels/menu/main_menu_seg7.0C288.ia8.inc.c\"\n};\n\n// 0x0700C2C8\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_nu[] = {\n#include \"levels/menu/main_menu_seg7.0C2C8.ia8.inc.c\"\n};\n\n// 0x0700C308\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_ne[] = {\n#include \"levels/menu/main_menu_seg7.0C308.ia8.inc.c\"\n};\n\n// 0x0700C348\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_no[] = {\n#include \"levels/menu/main_menu_seg7.0C348.ia8.inc.c\"\n};\n\n// 0x0700C388\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_ha[] = {\n#include \"levels/menu/main_menu_seg7.0C388.ia8.inc.c\"\n};\n\n// 0x0700C3C8\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_hi[] = {\n#include \"levels/menu/main_menu_seg7.0C3C8.ia8.inc.c\"\n};\n\n// 0x0700C408\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_hu[] = {\n#include \"levels/menu/main_menu_seg7.0C408.ia8.inc.c\"\n};\n\n// 0x0700C448\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_he[] = {\n#include \"levels/menu/main_menu_seg7.0C448.ia8.inc.c\"\n};\n\n// 0x0700C488\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_ho[] = {\n#include \"levels/menu/main_menu_seg7.0C488.ia8.inc.c\"\n};\n\n// 0x0700C4C8\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_ma[] = {\n#include \"levels/menu/main_menu_seg7.0C4C8.ia8.inc.c\"\n};\n\n// 0x0700C508\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_mi[] = {\n#include \"levels/menu/main_menu_seg7.0C508.ia8.inc.c\"\n};\n\n// 0x0700C548\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_mu[] = {\n#include \"levels/menu/main_menu_seg7.0C548.ia8.inc.c\"\n};\n\n// 0x0700C588\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_me[] = {\n#include \"levels/menu/main_menu_seg7.0C588.ia8.inc.c\"\n};\n\n// 0x0700C5C8\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_mo[] = {\n#include \"levels/menu/main_menu_seg7.0C5C8.ia8.inc.c\"\n};\n\n// 0x0700C608\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_ya[] = {\n#include \"levels/menu/main_menu_seg7.0C608.ia8.inc.c\"\n};\n\n// 0x0700C648\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_yu[] = {\n#include \"levels/menu/main_menu_seg7.0C648.ia8.inc.c\"\n};\n\n// 0x0700C688\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_yo[] = {\n#include \"levels/menu/main_menu_seg7.0C688.ia8.inc.c\"\n};\n\n// 0x0700C6C8\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_ra[] = {\n#include \"levels/menu/main_menu_seg7.0C6C8.ia8.inc.c\"\n};\n\n// 0x0700C708\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_ri[] = {\n#include \"levels/menu/main_menu_seg7.0C708.ia8.inc.c\"\n};\n\n// 0x0700C748\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_ru[] = {\n#include \"levels/menu/main_menu_seg7.0C748.ia8.inc.c\"\n};\n\n// 0x0700C788\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_re[] = {\n#include \"levels/menu/main_menu_seg7.0C788.ia8.inc.c\"\n};\n\n// 0x0700C7C8\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_ro[] = {\n#include \"levels/menu/main_menu_seg7.0C7C8.ia8.inc.c\"\n};\n\n// 0x0700C808\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_wa[] = {\n#include \"levels/menu/main_menu_seg7.0C808.ia8.inc.c\"\n};\n\n// 0x0700C848\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_wo[] = {\n#include \"levels/menu/main_menu_seg7.0C848.ia8.inc.c\"\n};\n\n// 0x0700C888\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_n[] = {\n#include \"levels/menu/main_menu_seg7.0C888.ia8.inc.c\"\n};\n\n// 0x0700C8C8\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_small_a[] = {\n#include \"levels/menu/main_menu_seg7.0C8C8.ia8.inc.c\"\n};\n\n// 0x0700C908\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_small_i[] = {\n#include \"levels/menu/main_menu_seg7.0C908.ia8.inc.c\"\n};\n\n// 0x0700C948\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_small_u[] = {\n#include \"levels/menu/main_menu_seg7.0C948.ia8.inc.c\"\n};\n\n// 0x0700C988\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_small_e[] = {\n#include \"levels/menu/main_menu_seg7.0C988.ia8.inc.c\"\n};\n\n// 0x0700C9C8\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_small_o[] = {\n#include \"levels/menu/main_menu_seg7.0C9C8.ia8.inc.c\"\n};\n\n// 0x0700CA08\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_small_ka[] = {\n#include \"levels/menu/main_menu_seg7.0CA08.ia8.inc.c\"\n};\n\n// 0x0700CA48\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_small_yu[] = {\n#include \"levels/menu/main_menu_seg7.0CA48.ia8.inc.c\"\n};\n\n// 0x0700CA88\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_small_yo[] = {\n#include \"levels/menu/main_menu_seg7.0CA88.ia8.inc.c\"\n};\n\n// 0x0700CAC8\nALIGNED8 static const Texture texture_menu_font_char_jp_katakana_small_tsu[] = {\n#include \"levels/menu/main_menu_seg7.0CAC8.ia8.inc.c\"\n};\n\n// 0x0700CB08\nALIGNED8 static const Texture texture_menu_font_char_jp_A[] = {\n#include \"levels/menu/main_menu_seg7.0CB08.ia8.inc.c\"\n};\n\n// 0x0700CB48\nALIGNED8 static const Texture texture_menu_font_char_jp_B[] = {\n#include \"levels/menu/main_menu_seg7.0CB48.ia8.inc.c\"\n};\n\n// 0x0700CB88\nALIGNED8 static const Texture texture_menu_font_char_jp_C[] = {\n#include \"levels/menu/main_menu_seg7.0CB88.ia8.inc.c\"\n};\n\n// 0x0700CBC8\nALIGNED8 static const Texture texture_menu_font_char_jp_D[] = {\n#include \"levels/menu/main_menu_seg7.0CBC8.ia8.inc.c\"\n};\n\n// 0x0700CC08\nALIGNED8 static const Texture texture_menu_font_char_jp_coin[] = {\n#include \"levels/menu/main_menu_seg7.0CC08.ia8.inc.c\"\n};\n\n// 0x0700CC48\nALIGNED8 static const Texture texture_menu_font_char_jp_star_filled[] = {\n#include \"levels/menu/main_menu_seg7.0CC48.ia8.inc.c\"\n};\n\n// 0x0700CC88\nALIGNED8 static const Texture texture_menu_font_char_jp_multiply[] = {\n#include \"levels/menu/main_menu_seg7.0CC88.ia8.inc.c\"\n};\n\n// 0x0700CCC8\nALIGNED8 static const Texture texture_menu_font_char_jp_exclamation[] = {\n#include \"levels/menu/main_menu_seg7.0CCC8.ia8.inc.c\"\n};\n\n#else\n\n// 0x0700AC40\nALIGNED8 static const Texture texture_menu_font_char_0[] = {\n#include \"levels/menu/main_menu_seg7_us.0AC40.ia8.inc.c\"\n};\n\n// 0x0700AC80\nALIGNED8 static const Texture texture_menu_font_char_1[] = {\n#include \"levels/menu/main_menu_seg7_us.0AC80.ia8.inc.c\"\n};\n\n// 0x0700ACC0\nALIGNED8 static const Texture texture_menu_font_char_2[] = {\n#include \"levels/menu/main_menu_seg7_us.0ACC0.ia8.inc.c\"\n};\n\n// 0x0700AD00\nALIGNED8 static const Texture texture_menu_font_char_3[] = {\n#include \"levels/menu/main_menu_seg7_us.0AD00.ia8.inc.c\"\n};\n\n// 0x0700AD40\nALIGNED8 static const Texture texture_menu_font_char_4[] = {\n#include \"levels/menu/main_menu_seg7_us.0AD40.ia8.inc.c\"\n};\n\n// 0x0700AD80\nALIGNED8 static const Texture texture_menu_font_char_5[] = {\n#include \"levels/menu/main_menu_seg7_us.0AD80.ia8.inc.c\"\n};\n\n// 0x0700ADC0\nALIGNED8 static const Texture texture_menu_font_char_6[] = {\n#include \"levels/menu/main_menu_seg7_us.0ADC0.ia8.inc.c\"\n};\n\n// 0x0700AE00\nALIGNED8 static const Texture texture_menu_font_char_7[] = {\n#include \"levels/menu/main_menu_seg7_us.0AE00.ia8.inc.c\"\n};\n\n// 0x0700AE40\nALIGNED8 static const Texture texture_menu_font_char_8[] = {\n#include \"levels/menu/main_menu_seg7_us.0AE40.ia8.inc.c\"\n};\n\n// 0x0700AE80\nALIGNED8 static const Texture texture_menu_font_char_9[] = {\n#include \"levels/menu/main_menu_seg7_us.0AE80.ia8.inc.c\"\n};\n\n// 0x0700AEC0\nALIGNED8 static const Texture texture_menu_font_char_A[] = {\n#include \"levels/menu/main_menu_seg7_us.0AEC0.ia8.inc.c\"\n};\n\n// 0x0700AF00\nALIGNED8 static const Texture texture_menu_font_char_B[] = {\n#include \"levels/menu/main_menu_seg7_us.0AF00.ia8.inc.c\"\n};\n\n// 0x0700AF40\nALIGNED8 static const Texture texture_menu_font_char_C[] = {\n#include \"levels/menu/main_menu_seg7_us.0AF40.ia8.inc.c\"\n};\n\n#ifdef VERSION_EU\n// 0x0700AF80\nALIGNED8 static const Texture texture_menu_font_char_D[] = {\n#include \"levels/menu/main_menu_seg7_eu.0AF80.ia8.inc.c\"\n};\n\n#else\n\n// 0x0700AF80\nALIGNED8 static const Texture texture_menu_font_char_D[] = {\n#include \"levels/menu/main_menu_seg7_us.0AF80.ia8.inc.c\"\n};\n#endif\n\n// 0x0700AFC0\nALIGNED8 static const Texture texture_menu_font_char_E[] = {\n#include \"levels/menu/main_menu_seg7_us.0AFC0.ia8.inc.c\"\n};\n\n// 0x0700B000\nALIGNED8 static const Texture texture_menu_font_char_F[] = {\n#include \"levels/menu/main_menu_seg7_us.0B000.ia8.inc.c\"\n};\n\n// 0x0700B040\nALIGNED8 static const Texture texture_menu_font_char_G[] = {\n#include \"levels/menu/main_menu_seg7_us.0B040.ia8.inc.c\"\n};\n\n// 0x0700B080\nALIGNED8 static const Texture texture_menu_font_char_H[] = {\n#include \"levels/menu/main_menu_seg7_us.0B080.ia8.inc.c\"\n};\n\n// 0x0700B0C0\nALIGNED8 static const Texture texture_menu_font_char_I[] = {\n#include \"levels/menu/main_menu_seg7_us.0B0C0.ia8.inc.c\"\n};\n\n// 0x0700B100\nALIGNED8 static const Texture texture_menu_font_char_J[] = {\n#include \"levels/menu/main_menu_seg7_us.0B100.ia8.inc.c\"\n};\n\n// 0x0700B140\nALIGNED8 static const Texture texture_menu_font_char_K[] = {\n#include \"levels/menu/main_menu_seg7_us.0B140.ia8.inc.c\"\n};\n\n// 0x0700B180\nALIGNED8 static const Texture texture_menu_font_char_L[] = {\n#include \"levels/menu/main_menu_seg7_us.0B180.ia8.inc.c\"\n};\n\n// 0x0700B1C0\nALIGNED8 static const Texture texture_menu_font_char_M[] = {\n#include \"levels/menu/main_menu_seg7_us.0B1C0.ia8.inc.c\"\n};\n\n// 0x0700B200\nALIGNED8 static const Texture texture_menu_font_char_N[] = {\n#include \"levels/menu/main_menu_seg7_us.0B200.ia8.inc.c\"\n};\n\n// 0x0700B240\nALIGNED8 static const Texture texture_menu_font_char_O[] = {\n#include \"levels/menu/main_menu_seg7_us.0B240.ia8.inc.c\"\n};\n\n// 0x0700B280\nALIGNED8 static const Texture texture_menu_font_char_P[] = {\n#include \"levels/menu/main_menu_seg7_us.0B280.ia8.inc.c\"\n};\n\n// 0x0700B2C0\nALIGNED8 static const Texture texture_menu_font_char_Q[] = {\n#include \"levels/menu/main_menu_seg7_us.0B2C0.ia8.inc.c\"\n};\n\n// 0x0700B300\nALIGNED8 static const Texture texture_menu_font_char_R[] = {\n#include \"levels/menu/main_menu_seg7_us.0B300.ia8.inc.c\"\n};\n\n// 0x0700B340\nALIGNED8 static const Texture texture_menu_font_char_S[] = {\n#include \"levels/menu/main_menu_seg7_us.0B340.ia8.inc.c\"\n};\n\n// 0x0700B380\nALIGNED8 static const Texture texture_menu_font_char_T[] = {\n#include \"levels/menu/main_menu_seg7_us.0B380.ia8.inc.c\"\n};\n\n// 0x0700B3C0\nALIGNED8 static const Texture texture_menu_font_char_U[] = {\n#include \"levels/menu/main_menu_seg7_us.0B3C0.ia8.inc.c\"\n};\n\n// 0x0700B400\nALIGNED8 static const Texture texture_menu_font_char_V[] = {\n#include \"levels/menu/main_menu_seg7_us.0B400.ia8.inc.c\"\n};\n\n// 0x0700B440\nALIGNED8 static const Texture texture_menu_font_char_W[] = {\n#include \"levels/menu/main_menu_seg7_us.0B440.ia8.inc.c\"\n};\n\n// 0x0700B480\nALIGNED8 static const Texture texture_menu_font_char_X[] = {\n#include \"levels/menu/main_menu_seg7_us.0B480.ia8.inc.c\"\n};\n\n// 0x0700B4C0\nALIGNED8 static const Texture texture_menu_font_char_Y[] = {\n#include \"levels/menu/main_menu_seg7_us.0B4C0.ia8.inc.c\"\n};\n\n// 0x0700B500\nALIGNED8 static const Texture texture_menu_font_char_Z[] = {\n#include \"levels/menu/main_menu_seg7_us.0B500.ia8.inc.c\"\n};\n\n// 0x0700B540\nALIGNED8 static const Texture texture_menu_font_char_coin[] = {\n#include \"levels/menu/main_menu_seg7_us.0B540.ia8.inc.c\"\n};\n\n// 0x0700B580\nALIGNED8 static const Texture texture_menu_font_char_multiply[] = {\n#include \"levels/menu/main_menu_seg7_us.0B580.ia8.inc.c\"\n};\n\n// 0x0700B5C0\nALIGNED8 static const Texture texture_menu_font_char_star_filled[] = {\n#include \"levels/menu/main_menu_seg7_us.0B5C0.ia8.inc.c\"\n};\n\n// 0x0700B600\nALIGNED8 static const Texture texture_menu_font_char_dash[] = {\n#include \"levels/menu/main_menu_seg7_us.0B600.ia8.inc.c\"\n};\n\n#ifdef VERSION_EU\n// 0x0700B640\nALIGNED8 static const Texture texture_menu_font_char_comma[] = {\n#include \"levels/menu/main_menu_seg7_eu.0B640.ia8.inc.c\"\n};\n\n// 0x0700B680\nALIGNED8 static const Texture texture_menu_font_char_apostrophe[] = {\n#include \"levels/menu/main_menu_seg7_eu.0B680.ia8.inc.c\"\n};\n\n#else\n\n// 0x0700B640\nALIGNED8 static const Texture texture_menu_font_char_comma[] = {\n#include \"levels/menu/main_menu_seg7_us.0B640.ia8.inc.c\"\n};\n\n// 0x0700B680\nALIGNED8 static const Texture texture_menu_font_char_apostrophe[] = {\n#include \"levels/menu/main_menu_seg7_us.0B680.ia8.inc.c\"\n};\n#endif\n\n// 0x0700B6C0\nALIGNED8 static const Texture texture_menu_font_char_exclamation[] = {\n#include \"levels/menu/main_menu_seg7_us.0B6C0.ia8.inc.c\"\n};\n\n// 0x0700B700\nALIGNED8 static const Texture texture_menu_font_char_question[] = {\n#include \"levels/menu/main_menu_seg7_us.0B700.ia8.inc.c\"\n};\n\n// 0x0700B740\nALIGNED8 static const Texture texture_menu_font_char_mface1[] = {\n#include \"levels/menu/main_menu_seg7_us.0B740.ia8.inc.c\"\n};\n\n// 0x0700B780\nALIGNED8 static const Texture texture_menu_font_char_mface2[] = {\n#include \"levels/menu/main_menu_seg7_us.0B780.ia8.inc.c\"\n};\n\n// 0x0700B7C0\nALIGNED8 static const Texture texture_menu_font_char_period[] = {\n#include \"levels/menu/main_menu_seg7_us.0B7C0.ia8.inc.c\"\n};\n\n// 0x0700B800\nALIGNED8 static const Texture texture_menu_font_char_ampersand[] = {\n#include \"levels/menu/main_menu_seg7_us.0B800.ia8.inc.c\"\n};\n#endif\n\n#ifdef VERSION_EU\n// 0x0700B840\nALIGNED8 static const Texture texture_menu_font_char_umlaut[] = {\n#include \"levels/menu/main_menu_seg7_eu.0B840.ia8.inc.c\"\n};\n\n// 0x0700B880\nALIGNED8 static const Texture texture_menu_font_char_cedilla_mayus[] = {\n#include \"levels/menu/main_menu_seg7_eu.0B880.ia8.inc.c\"\n};\n\n// 0x0700B8C0\nALIGNED8 static const Texture texture_menu_font_char_colon[] = {\n#include \"levels/menu/main_menu_seg7_eu.0B8C0.ia8.inc.c\"\n};\n#endif\n\n// Menu small font print table\n// 0x0700CD08\nconst Texture *const menu_font_lut[] = {\n#if defined(VERSION_JP) || defined(VERSION_SH)\n    texture_menu_font_char_jp_0, texture_menu_font_char_jp_1, texture_menu_font_char_jp_2, texture_menu_font_char_jp_3,\n    texture_menu_font_char_jp_4, texture_menu_font_char_jp_5, texture_menu_font_char_jp_6, texture_menu_font_char_jp_7,\n    texture_menu_font_char_jp_8, texture_menu_font_char_jp_9, texture_menu_font_char_jp_A, texture_menu_font_char_jp_B,\n    texture_menu_font_char_jp_C, texture_menu_font_char_jp_D,                   0x0,                      0x0,\n                              0x0,                      0x0,                      0x0,                      0x0,\n                              0x0,                      0x0,                      0x0,                      0x0,\n                              0x0,                      0x0,                      0x0,                      0x0,\n                              0x0,                      0x0,                      0x0,                      0x0,\n                              0x0,                      0x0,                      0x0,                      0x0,\n                              0x0,                      0x0,                      0x0,                      0x0,\n                              0x0,                      0x0,                      0x0,                      0x0,\n                              0x0,                      0x0,                      0x0,                      0x0,\n                              0x0,                      0x0,                      0x0,                      0x0,\n                              0x0,                      0x0,                      0x0,                      0x0,\n                              0x0,                      0x0,                      0x0,                      0x0,\n                              0x0,                      0x0,                      0x0,                      0x0,\n    texture_menu_font_char_jp_hiragana_a, texture_menu_font_char_jp_hiragana_i, texture_menu_font_char_jp_hiragana_u, texture_menu_font_char_jp_hiragana_c,\n    texture_menu_font_char_jp_hiragana_o, texture_menu_font_char_jp_hiragana_ka, texture_menu_font_char_jp_hiragana_ki, texture_menu_font_char_jp_hiragana_ku,\n    texture_menu_font_char_jp_hiragana_ke, texture_menu_font_char_jp_hiragana_ko, texture_menu_font_char_jp_hiragana_sa, texture_menu_font_char_jp_hiragana_shi,\n    texture_menu_font_char_jp_hiragana_su, texture_menu_font_char_jp_hiragana_se, texture_menu_font_char_jp_hiragana_so, texture_menu_font_char_jp_hiragana_ta,\n    texture_menu_font_char_jp_hiragana_chi, texture_menu_font_char_jp_hiragana_tsu, texture_menu_font_char_jp_hiragana_te, texture_menu_font_char_jp_hiragana_to,\n    texture_menu_font_char_jp_hiragana_na, texture_menu_font_char_jp_hiragana_ni, texture_menu_font_char_jp_hiragana_nu, texture_menu_font_char_jp_hiragana_ne,\n    texture_menu_font_char_jp_hiragana_no, texture_menu_font_char_jp_hiragana_ha, texture_menu_font_char_jp_hiragana_hi, texture_menu_font_char_jp_hiragana_hu,\n    texture_menu_font_char_jp_hiragana_he, texture_menu_font_char_jp_hiragana_ho, texture_menu_font_char_jp_hiragana_ma, texture_menu_font_char_jp_hiragana_mi,\n    texture_menu_font_char_jp_hiragana_mu, texture_menu_font_char_jp_hiragana_me, texture_menu_font_char_jp_hiragana_mo, texture_menu_font_char_jp_hiragana_ya,\n    texture_menu_font_char_jp_hiragana_yu, texture_menu_font_char_jp_hiragana_yo, texture_menu_font_char_jp_hiragana_ra, texture_menu_font_char_jp_hiragana_ri,\n    texture_menu_font_char_jp_hiragana_ru, texture_menu_font_char_jp_hiragana_re, texture_menu_font_char_jp_hiragana_ro, texture_menu_font_char_jp_hiragana_wa,\n    texture_menu_font_char_jp_hiragana_wo, texture_menu_font_char_jp_hiragana_n, 0x0,                                0x0,\n    texture_menu_font_char_jp_katakana_a, texture_menu_font_char_jp_katakana_i, texture_menu_font_char_jp_katakana_u, texture_menu_font_char_jp_katakana_e,\n    texture_menu_font_char_jp_katakana_o, texture_menu_font_char_jp_katakana_ka, texture_menu_font_char_jp_katakana_ki, texture_menu_font_char_jp_katakana_ku,\n    texture_menu_font_char_jp_katakana_ke, texture_menu_font_char_jp_katakana_ko, texture_menu_font_char_jp_katakana_sa, texture_menu_font_char_jp_katakana_shi,\n    texture_menu_font_char_jp_katakana_su, texture_menu_font_char_jp_katakana_se, texture_menu_font_char_jp_katakana_so, texture_menu_font_char_jp_katakana_ta,\n    texture_menu_font_char_jp_katakana_chi, texture_menu_font_char_jp_katakana_tsu, texture_menu_font_char_jp_katakana_te, texture_menu_font_char_jp_katakana_to,\n    texture_menu_font_char_jp_katakana_na, texture_menu_font_char_jp_katakana_ni, texture_menu_font_char_jp_katakana_nu, texture_menu_font_char_jp_katakana_ne,\n    texture_menu_font_char_jp_katakana_no, texture_menu_font_char_jp_katakana_ha, texture_menu_font_char_jp_katakana_hi, texture_menu_font_char_jp_katakana_hu,\n    texture_menu_font_char_jp_katakana_he, texture_menu_font_char_jp_katakana_ho, texture_menu_font_char_jp_katakana_ma, texture_menu_font_char_jp_katakana_mi,\n    texture_menu_font_char_jp_katakana_mu, texture_menu_font_char_jp_katakana_me, texture_menu_font_char_jp_katakana_mo, texture_menu_font_char_jp_katakana_ya,\n    texture_menu_font_char_jp_katakana_yu, texture_menu_font_char_jp_katakana_yo, texture_menu_font_char_jp_katakana_ra, texture_menu_font_char_jp_katakana_ri,\n    texture_menu_font_char_jp_katakana_ru, texture_menu_font_char_jp_katakana_re, texture_menu_font_char_jp_katakana_ro, texture_menu_font_char_jp_katakana_wa,\n    texture_menu_font_char_jp_katakana_wo, texture_menu_font_char_jp_katakana_n,                                   0x0, texture_menu_font_char_jp_long_vowel,\n    texture_menu_font_char_jp_hiragana_small_e, texture_menu_font_char_jp_hiragana_small_tsu, texture_menu_font_char_jp_hiragana_small_ka, texture_menu_font_char_jp_hiragana_small_yu,\n    texture_menu_font_char_jp_hiragana_small_yo, texture_menu_font_char_jp_hiragana_small_a, texture_menu_font_char_jp_hiragana_small_i, texture_menu_font_char_jp_hiragana_small_u,\n    texture_menu_font_char_jp_hiragana_small_o,          0x0,                      0x0,                      0x0,\n    0x0,                      0x0,                      0x0,                      0x0,\n    0x0,                      0x0,                      0x0,                      0x0,\n    0x0,                      0x0,                      0x0,                      0x0,\n    0x0,                      0x0,                      0x0,                      0x0,\n    0x0,                      0x0,                      0x0,                      0x0,\n    0x0,                      0x0,                      0x0,                      0x0,\n    0x0,                      0x0,                      0x0,                      0x0,\n    0x0,                      0x0,                      0x0,                      0x0,\n    0x0,                      0x0,                      0x0,                      0x0,\n    texture_menu_font_char_jp_katakana_small_e, texture_menu_font_char_jp_katakana_small_tsu, texture_menu_font_char_jp_katakana_small_ka, texture_menu_font_char_jp_katakana_small_yu,\n    texture_menu_font_char_jp_katakana_small_yo, texture_menu_font_char_jp_katakana_small_a, texture_menu_font_char_jp_katakana_small_i, texture_menu_font_char_jp_katakana_small_u,\n    texture_menu_font_char_jp_katakana_small_o, 0x0,                      0x0,                      0x0,\n    0x0,                      0x0,                      0x0,                      0x0,\n    0x0,                      0x0,                      0x0,                      0x0,\n    0x0,                      0x0,                      0x0,                      0x0,\n    0x0,                      0x0,                      0x0,                      0x0,\n    0x0,                      0x0,                      0x0,                      0x0,\n    texture_menu_font_char_jp_dakuten, texture_menu_font_char_jp_handakuten, texture_menu_font_char_jp_exclamation, 0x0,\n    0x0,                      0x0,                      0x0,                      0x0,\n    0x0,                      texture_menu_font_char_jp_coin, texture_menu_font_char_jp_star_filled, texture_menu_font_char_jp_multiply,\n    0x0,                      0x0,                      0x0,                      0x0,\n#else\n    texture_menu_font_char_0, texture_menu_font_char_1, texture_menu_font_char_2, texture_menu_font_char_3,\n    texture_menu_font_char_4, texture_menu_font_char_5, texture_menu_font_char_6, texture_menu_font_char_7,\n    texture_menu_font_char_8, texture_menu_font_char_9, texture_menu_font_char_A, texture_menu_font_char_B,\n    texture_menu_font_char_C, texture_menu_font_char_D, texture_menu_font_char_E, texture_menu_font_char_F,\n    texture_menu_font_char_G, texture_menu_font_char_H, texture_menu_font_char_I, texture_menu_font_char_J,\n    texture_menu_font_char_K, texture_menu_font_char_L, texture_menu_font_char_M, texture_menu_font_char_N,\n    texture_menu_font_char_O, texture_menu_font_char_P, texture_menu_font_char_Q, texture_menu_font_char_R,\n    texture_menu_font_char_S, texture_menu_font_char_T, texture_menu_font_char_U, texture_menu_font_char_V,\n    texture_menu_font_char_W, texture_menu_font_char_X, texture_menu_font_char_Y, texture_menu_font_char_Z,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0, texture_menu_font_char_apostrophe, texture_menu_font_char_period,\n    texture_menu_font_char_mface1, texture_menu_font_char_mface2,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0, texture_menu_font_char_comma,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0, texture_menu_font_char_dash,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n#ifdef VERSION_EU\n          0x0, texture_menu_font_char_ampersand, texture_menu_font_char_colon,       0x0,\n          0x0, texture_menu_font_char_umlaut,       0x0,       0x0,\n          0x0, texture_menu_font_char_cedilla_mayus,       0x0,       0x0,\n#else\n          0x0, texture_menu_font_char_ampersand,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n          0x0,       0x0,       0x0,       0x0,\n#endif\n          0x0,       0x0, texture_menu_font_char_exclamation,       0x0,\n    texture_menu_font_char_question,       0x0,       0x0,       0x0,\n          0x0, texture_menu_font_char_coin, texture_menu_font_char_star_filled, texture_menu_font_char_multiply,\n          0x0,       0x0,       0x0,       0x0,\n#endif\n};\n\n// 0x0700D108 - 0x0700D160\nconst Gfx dl_menu_ia8_text_begin[] = {\n    gsDPPipeSync(),\n    gsDPSetTexturePersp(G_TP_NONE),\n    gsDPSetCombineMode(G_CC_FADEA, G_CC_FADEA),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsDPSetRenderMode(G_RM_AA_XLU_SURF, G_RM_AA_XLU_SURF2),\n    gsDPSetTextureFilter(G_TF_POINT),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_8b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_8b, 1, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 3, G_TX_NOLOD, G_TX_CLAMP, 3, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (8 - 1) << G_TEXTURE_IMAGE_FRAC, (8 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700D160 - 0x0700D1A0\nconst Gfx dl_menu_ia8_text_end[] = {\n    gsDPPipeSync(),\n    gsDPSetTexturePersp(G_TP_PERSP),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPSetTextureFilter(G_TF_BILERP),\n    gsSPEndDisplayList(),\n};\n\nUNUSED static const u64 menu_unused_1 = 0;\n\n#ifdef VERSION_EU\n\n// 0x0700BDA0 - 0x0700CDA0\nALIGNED8 static const Texture texture_menu_course_upper[] = {\n#include \"levels/menu/main_menu_seg7_eu.0BDA0.rgba16.inc.c\"\n};\n\n// 0x0700CDA0 - 0x0700DDA0\nALIGNED8 static const Texture texture_menu_niveau_upper[] = {\n#include \"levels/menu/main_menu_seg7_eu.0CDA0.rgba16.inc.c\"\n};\n\n// 0x0700DDA0 - 0x0700EDA0\nALIGNED8 static const Texture texture_menu_kurs_upper[] = {\n#include \"levels/menu/main_menu_seg7_eu.0DDA0.rgba16.inc.c\"\n};\n\n// 0x0700EDA0 - 0x0700FDA0\nALIGNED8 static const Texture texture_menu_course_lower[] = {\n#include \"levels/menu/main_menu_seg7_eu.0EDA0.rgba16.inc.c\"\n};\n\n#elif defined(VERSION_CN)\n\n// 0x070BCE0 - 0x070CCE0\nALIGNED8 static const Texture texture_menu_course_upper[] = {\n#include \"levels/menu/main_menu_seg7_cn.0BCE0.rgba16.inc.c\"\n};\n\n// 0x0700CCE0 - 0x0700DCE0\nALIGNED8 static const Texture texture_menu_course_lower[] = {\n#include \"levels/menu/main_menu_seg7_cn.0CCE0.rgba16.inc.c\"\n};\n\n#else\n\n// 0x0700D1A8 - 0x0700E1A8\nALIGNED8 static const Texture texture_menu_course_upper[] = {\n#include \"levels/menu/main_menu_seg7.0D1A8.rgba16.inc.c\"\n};\n\n// 0x0700E1A8 - 0x0700F1A8\nALIGNED8 static const Texture texture_menu_course_lower[] = {\n#include \"levels/menu/main_menu_seg7.0E1A8.rgba16.inc.c\"\n};\n#endif\n\n// 0x0700F1A8 - 0x0700F1E8\nstatic const Vtx vertex_menu_course_upper[] = {\n    {{{   -32,      0,      0}, 0, {     0,   1984}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    32,      0,      0}, 0, {  4032,   1984}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    32,     32,      0}, 0, {  4032,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -32,     32,      0}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n};\n\n// 0x0700F1E8 - 0x0700F228\nstatic const Vtx vertex_menu_course_lower[] = {\n    {{{   -32,    -32,      0}, 0, {     0,   1984}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    32,    -32,      0}, 0, {  4032,   1984}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{    32,      0,      0}, 0, {  4032,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n    {{{   -32,      0,      0}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0x00}}},\n};\n\n// 0x0700F228 - 0x0700F2F8\nconst Gfx dl_menu_rgba16_wood_course[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),\n    gsDPSetRenderMode(G_RM_AA_TEX_EDGE, G_RM_AA_TEX_EDGE2),\n#ifdef VERSION_EU\n    gsSPEndDisplayList(),\n};\nconst Gfx dl_menu_rgba16_wood_course_end[] = {\n#else\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_menu_course_upper),\n#endif\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPVertex(vertex_menu_course_upper, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_menu_course_lower),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPVertex(vertex_menu_course_lower, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2),\n    gsSPTexture(0x0001, 0x0001, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n#ifdef VERSION_EU\n// 0x0700FEF0 - 0x0700FF00\nconst Gfx dl_menu_texture_course_upper[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_menu_course_upper),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700FF00 - 0x0700FF10\nconst Gfx dl_menu_texture_niveau_upper[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_menu_niveau_upper),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700FF10 - 0x0700FF20\nconst Gfx dl_menu_texture_kurs_upper[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_menu_kurs_upper),\n    gsSPEndDisplayList(),\n};\n#endif\n\n// 0x0700F2F8 - 0x0700F328\nconst Collision main_menu_seg7_collision[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x4),\n    COL_VERTEX( 8192, -1000, -8192),\n    COL_VERTEX(-8192, -1000, -8192),\n    COL_VERTEX(-8192, -1000,  8192),\n    COL_VERTEX( 8192, -1000,  8192),\n    COL_TRI_INIT(SURFACE_DEFAULT, 2),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n\n#ifdef VERSION_EU\n\n// Duplicate course name tables; the main menu needs all languages loaded at\n// once since it switches language, so the copies in segment 19 aren't good\n// enough.\n\n#define COURSE_TABLE eu_course_strings_en_table\n#include \"text/us/define_courses.inc.c\"\n#undef COURSE_TABLE\n\n#define COURSE_TABLE eu_course_strings_fr_table\n#include \"text/fr/define_courses.inc.c\"\n#undef COURSE_TABLE\n\n#define COURSE_TABLE eu_course_strings_de_table\n#include \"text/de/define_courses.inc.c\"\n#undef COURSE_TABLE\n\n#endif\n"
  },
  {
    "path": "levels/menu/script.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"behavior_data.h\"\n#include \"model_ids.h\"\n#include \"seq_ids.h\"\n#include \"segment_symbols.h\"\n#include \"level_commands.h\"\n\n#include \"game/area.h\"\n#include \"game/level_update.h\"\n#include \"menu/file_select.h\"\n#include \"menu/star_select.h\"\n\n#include \"levels/scripts.h\"\n\n#include \"actors/common1.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/menu/header.h\"\n\nconst LevelScript level_main_menu_entry_1[] = {\n    INIT_LEVEL(),\n    FIXED_LOAD(/*loadAddr*/ _goddardSegmentStart, /*romStart*/ _goddardSegmentRomStart, /*romEnd*/ _goddardSegmentRomEnd),\n    LOAD_MIO0(/*seg*/ 0x07, _menu_segment_7SegmentRomStart, _menu_segment_7SegmentRomEnd),\n    LOAD_RAW (/*seg*/ 0x13, _behaviorSegmentRomStart, _behaviorSegmentRomEnd),\n    ALLOC_LEVEL_POOL(),\n    LOAD_MODEL_FROM_GEO(MODEL_MAIN_MENU_MARIO_SAVE_BUTTON,      geo_menu_mario_save_button),\n    LOAD_MODEL_FROM_GEO(MODEL_MAIN_MENU_RED_ERASE_BUTTON,       geo_menu_erase_button),\n    LOAD_MODEL_FROM_GEO(MODEL_MAIN_MENU_BLUE_COPY_BUTTON,       geo_menu_copy_button),\n    LOAD_MODEL_FROM_GEO(MODEL_MAIN_MENU_YELLOW_FILE_BUTTON,     geo_menu_file_button),\n    LOAD_MODEL_FROM_GEO(MODEL_MAIN_MENU_GREEN_SCORE_BUTTON,     geo_menu_score_button),\n    LOAD_MODEL_FROM_GEO(MODEL_MAIN_MENU_MARIO_SAVE_BUTTON_FADE, geo_menu_mario_save_button_fade),\n    LOAD_MODEL_FROM_GEO(MODEL_MAIN_MENU_MARIO_NEW_BUTTON,       geo_menu_mario_new_button),\n    LOAD_MODEL_FROM_GEO(MODEL_MAIN_MENU_MARIO_NEW_BUTTON_FADE,  geo_menu_mario_new_button_fade),\n    LOAD_MODEL_FROM_GEO(MODEL_MAIN_MENU_PURPLE_SOUND_BUTTON,    geo_menu_sound_button),\n    LOAD_MODEL_FROM_GEO(MODEL_MAIN_MENU_GENERIC_BUTTON,         geo_menu_generic_button),\n\n    AREA(/*index*/ 1, geo_menu_file_select_strings_and_menu_cursor),\n        OBJECT(/*model*/ MODEL_NONE,         /*pos*/ 0, 0, -19000, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(0x04), /*bhv*/ bhvMenuButtonManager),\n        OBJECT(/*model*/ MODEL_MAIN_MENU_YELLOW_FILE_BUTTON, /*pos*/ 0, 0, -19000, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(0x04), /*bhv*/ bhvYellowBackgroundInMenu),\n        TERRAIN(/*terrainData*/ main_menu_seg7_collision),\n    END_AREA(),\n\n    FREE_LEVEL_POOL(),\n    LOAD_AREA(/*area*/ 1),\n    SET_MENU_MUSIC(/*seq*/ SEQ_MENU_FILE_SELECT),\n    TRANSITION(/*transType*/ WARP_TRANSITION_FADE_FROM_COLOR, /*time*/ 16, /*color*/ 0xFF, 0xFF, 0xFF),\n    CALL(/*arg*/ 0, /*func*/ lvl_init_menu_values_and_cursor_pos),\n    CALL_LOOP(/*arg*/ 0, /*func*/ lvl_update_obj_and_load_file_selected),\n    GET_OR_SET(/*op*/ OP_SET, /*var*/ VAR_CURR_SAVE_FILE_NUM),\n    STOP_MUSIC(/*fadeOutTime*/ 0x00BE),\n    TRANSITION(/*transType*/ WARP_TRANSITION_FADE_INTO_COLOR, /*time*/ 16, /*color*/ 0xFF, 0xFF, 0xFF),\n    SLEEP(/*frames*/ 16),\n    CLEAR_LEVEL(),\n    SLEEP_BEFORE_EXIT(/*frames*/ 1),\n    SET_REG(/*value*/ LEVEL_CASTLE_GROUNDS),\n    EXIT_AND_EXECUTE(/*seg*/ 0x15, _scriptsSegmentRomStart, _scriptsSegmentRomEnd, level_main_scripts_entry),\n};\n\nconst LevelScript level_main_menu_entry_2[] = {\n    /*0*/ CALL(/*arg*/ 0, /*func*/ lvl_set_current_level),\n    /*2*/ JUMP_IF(/*op*/ OP_EQ, /*arg*/ 0, level_main_menu_entry_2 + 42),\n    /*5*/ INIT_LEVEL(),\n    /*6*/ FIXED_LOAD(/*loadAddr*/ _goddardSegmentStart, /*romStart*/ _goddardSegmentRomStart, /*romEnd*/ _goddardSegmentRomEnd),\n    /*10*/ LOAD_MIO0(/*seg*/ 0x07, _menu_segment_7SegmentRomStart, _menu_segment_7SegmentRomEnd),\n    /*13*/ ALLOC_LEVEL_POOL(),\n\n    /*14*/ AREA(/*index*/ 2, geo_menu_act_selector_strings),\n        /*16*/ OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, -100, 0, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(0x04), /*bhv*/ bhvActSelector),\n        /*22*/ TERRAIN(/*terrainData*/ main_menu_seg7_collision),\n    /*24*/ END_AREA(),\n\n    /*25*/ FREE_LEVEL_POOL(),\n    /*26*/ LOAD_AREA(/*area*/ 2),\n#ifdef NO_SEGMENTED_MEMORY\n           // sVisibleStars is set to 0 during FIXED_LOAD above on N64, but not when NO_SEGMENTED_MEMORY is used.\n           // lvl_init_act_selector_values_and_stars must be called here otherwise the previous\n           // value is retained and causes incorrect drawing during the 16 transition frames.\n           CALL(/*arg*/ 0, /*func*/ lvl_init_act_selector_values_and_stars),\n#endif\n    /*27*/ TRANSITION(/*transType*/ WARP_TRANSITION_FADE_FROM_COLOR, /*time*/ 16, /*color*/ 0xFF, 0xFF, 0xFF),\n    /*29*/ SLEEP(/*frames*/ 16),\n    /*30*/ SET_MENU_MUSIC(/*seq*/ 0x000D),\n#ifndef NO_SEGMENTED_MEMORY\n    /*31*/ CALL(/*arg*/ 0, /*func*/ lvl_init_act_selector_values_and_stars),\n#endif\n    /*33*/ CALL_LOOP(/*arg*/ 0, /*func*/ lvl_update_obj_and_load_act_button_actions),\n    /*35*/ GET_OR_SET(/*op*/ OP_SET, /*var*/ VAR_CURR_ACT_NUM),\n    /*36*/ STOP_MUSIC(/*fadeOutTime*/ 0x00BE),\n    /*37*/ TRANSITION(/*transType*/ WARP_TRANSITION_FADE_INTO_COLOR, /*time*/ 16, /*color*/ 0xFF, 0xFF, 0xFF),\n    /*39*/ SLEEP(/*frames*/ 16),\n    /*40*/ CLEAR_LEVEL(),\n    /*41*/ SLEEP_BEFORE_EXIT(/*frames*/ 1),\n    // L1:\n    /*42*/ EXIT(),\n};\n"
  },
  {
    "path": "levels/pss/areas/1/1/model.inc.c",
    "content": "// 0x07001800 - 0x07001818\nstatic const Lights1 pss_seg7_lights_07001800 = gdSPDefLights1(\n    0x23, 0x23, 0x23,\n    0x8c, 0x8c, 0x8c, 0x28, 0x28, 0x28\n);\n\n// 0x07001818 - 0x07001830\nstatic const Lights1 pss_seg7_lights_07001818 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07001830 - 0x07001930\nstatic const Vtx pss_seg7_vertex_07001830[] = {\n    {{{ -5560,   3953,    674}, 0, { -5452,   2348}, {0xa9, 0xa8, 0x18, 0xff}}},\n    {{{ -6534,   4014,   1059}, 0, { -6498,   2338}, {0x4c, 0xa3, 0xda, 0xff}}},\n    {{{ -6710,   4127,      5}, 0, { -6284,   3384}, {0x56, 0xa5, 0xef, 0xff}}},\n    {{{ -6869,  -3010,  -1778}, 0, { -5794,   5104}, {0x20, 0xbf, 0x98, 0xff}}},\n    {{{ -5845,  -3563,   4067}, 0, { -6932,   -708}, {0xcb, 0xa7, 0x48, 0xff}}},\n    {{{ -6869,  -3563,   4067}, 0, { -7886,   -342}, {0x64, 0xd6, 0x41, 0xff}}},\n    {{{ -5845,  -3010,  -1778}, 0, { -4840,   4736}, {0xca, 0xe5, 0x91, 0xff}}},\n    {{{ -3930,   3523,   1674}, 0, { -4292,    836}, {0x69, 0xc2, 0x21, 0xff}}},\n    {{{ -4057,   3523,   2698}, 0, { -4776,    -72}, {0x6a, 0xdd, 0xc5, 0xff}}},\n    {{{ -5095,   3697,   2438}, 0, { -5650,    542}, {0x17, 0xa6, 0xab, 0xff}}},\n    {{{ -4701,   3666,   1481}, 0, { -4940,   1290}, {0xd2, 0xa8, 0x4e, 0xff}}},\n    {{{ -5957,   3871,   1926}, 0, { -6270,   1324}, {0x34, 0xa3, 0xbc, 0xff}}},\n    {{{ -5233,   3809,   1164}, 0, { -5324,   1776}, {0xba, 0xa8, 0x39, 0xff}}},\n    {{{ -5097,   4813,  -4685}, 0, { -3104,   7178}, {0xce, 0xaa, 0xb3, 0xff}}},\n    {{{ -5036,   4977,  -5904}, 0, { -2612,   8292}, {0x26, 0xa3, 0x4d, 0xff}}},\n    {{{ -4646,   4915,  -4947}, 0, { -2590,   7260}, {0xe8, 0xa9, 0xa8, 0xff}}},\n};\n\n// 0x07001930 - 0x07001A30\nstatic const Vtx pss_seg7_vertex_07001930[] = {\n    {{{ -5560,   3953,    674}, 0, { -5452,   2348}, {0xa9, 0xa8, 0x18, 0xff}}},\n    {{{ -6710,   4127,      5}, 0, { -6284,   3384}, {0x56, 0xa5, 0xef, 0xff}}},\n    {{{ -5686,   4096,    -79}, 0, { -5300,   3096}, {0xa5, 0xa8, 0xfd, 0xff}}},\n    {{{ -6710,   4536,  -3107}, 0, { -5172,   6284}, {0x4a, 0x9a, 0xf6, 0xff}}},\n    {{{ -5686,   4506,  -3071}, 0, { -4230,   5884}, {0x97, 0xbc, 0xf4, 0xff}}},\n    {{{ -6647,   4669,  -3992}, 0, { -4796,   7086}, {0x67, 0xb8, 0x11, 0xff}}},\n    {{{ -5636,   4608,  -3769}, 0, { -3934,   6518}, {0xb6, 0x9e, 0xe4, 0xff}}},\n    {{{ -6323,   4803,  -4847}, 0, { -4188,   7768}, {0x4c, 0xa2, 0x25, 0xff}}},\n    {{{ -5432,   4710,  -4308}, 0, { -3552,   6946}, {0xb6, 0xaa, 0xc9, 0xff}}},\n    {{{ -5753,   4905,  -5488}, 0, { -3428,   8160}, {0x3b, 0xa2, 0x3d, 0xff}}},\n    {{{ -5097,   4813,  -4685}, 0, { -3104,   7178}, {0xce, 0xaa, 0xb3, 0xff}}},\n    {{{ -5036,   4977,  -5904}, 0, { -2612,   8292}, {0x26, 0xa3, 0x4d, 0xff}}},\n    {{{ -4646,   4915,  -4947}, 0, { -2590,   7260}, {0xe8, 0xa9, 0xa8, 0xff}}},\n    {{{ -4313,   5048,  -6087}, 0, { -1872,   8204}, {0x17, 0xa5, 0x55, 0xff}}},\n    {{{ -4146,   5018,  -5073}, 0, { -2080,   7200}, {0xfd, 0xa8, 0xa5, 0xff}}},\n    {{{ -3603,   5120,  -6143}, 0, { -1190,   8002}, {0x11, 0xa7, 0x58, 0xff}}},\n};\n\n// 0x07001A30 - 0x07001A80\nstatic const Vtx pss_seg7_vertex_07001A30[] = {\n    {{{ -4146,   5018,  -5073}, 0, { -2080,   7200}, {0xfd, 0xa8, 0xa5, 0xff}}},\n    {{{ -3603,   5120,  -6143}, 0, { -1190,   8002}, {0x11, 0xa7, 0x58, 0xff}}},\n    {{{ -3563,   5120,  -5119}, 0, { -1520,   7034}, {0x0d, 0xa8, 0xa6, 0xff}}},\n    {{{  3072,   6656,  -6143}, 0, {  5028,   5614}, {0x0c, 0x90, 0x38, 0xff}}},\n    {{{  3072,   6656,  -5119}, 0, {  4662,   4660}, {0x06, 0xc8, 0x8f, 0xff}}},\n};\n\n// 0x07001A80 - 0x07001B80\nstatic const Vtx pss_seg7_vertex_07001A80[] = {\n    {{{ -6460,  -4034,  -1778}, 0, {  6598,    106}, {0x00, 0x7e, 0x0e, 0xff}}},\n    {{{ -6869,  -4034,  -1778}, 0, {  6974,    -54}, {0x59, 0x59, 0x0a, 0xff}}},\n    {{{ -5845,  -4587,   4067}, 0, {  3752,  -5026}, {0xb2, 0x5b, 0x27, 0xff}}},\n    {{{ -6226,  -3789,  -3535}, 0, {  7068,   1808}, {0x02, 0x7c, 0x17, 0xff}}},\n    {{{ -6439,  -3913,  -2723}, 0, {  6946,    982}, {0x03, 0x7d, 0x11, 0xff}}},\n    {{{ -5923,  -3941,  -2629}, 0, {  6436,   1094}, {0x01, 0x7d, 0x11, 0xff}}},\n    {{{ -5845,  -4034,  -1778}, 0, {  6032,    344}, {0xb4, 0x65, 0x09, 0xff}}},\n    {{{ -6564,  -3740,  -3761}, 0, {  7466,   1884}, {0x4d, 0x55, 0x34, 0xff}}},\n    {{{ -6841,  -3890,  -2797}, 0, {  7346,    892}, {0x59, 0x57, 0x16, 0xff}}},\n    {{{ -5822,  -3941,  -2610}, 0, {  6336,   1116}, {0xa5, 0x57, 0xfe, 0xff}}},\n    {{{ -5855,  -3842,  -3287}, 0, {  6630,   1726}, {0xfd, 0x7d, 0x15, 0xff}}},\n    {{{ -5600,  -3664,  -4117}, 0, {  6720,   2588}, {0x00, 0x7c, 0x18, 0xff}}},\n    {{{ -5790,  -3590,  -4473}, 0, {  7034,   2840}, {0x2f, 0x52, 0x54, 0xff}}},\n    {{{ -4098,  -3571,  -3835}, 0, {  5230,   2914}, {0xef, 0x7d, 0x00, 0xff}}},\n    {{{ -4769,  -3650,  -4015}, 0, {  5916,   2818}, {0xf2, 0x7d, 0x08, 0xff}}},\n    {{{ -4734,  -3650,  -3813}, 0, {  5806,   2646}, {0xf1, 0x5a, 0xa9, 0xff}}},\n};\n\n// 0x07001B80 - 0x07001C60\nstatic const Vtx pss_seg7_vertex_07001B80[] = {\n    {{{ -5855,  -3842,  -3287}, 0, {  6630,   1726}, {0xfd, 0x7d, 0x15, 0xff}}},\n    {{{ -5412,  -3738,  -3764}, 0, {  6408,   2336}, {0xf7, 0x7d, 0x11, 0xff}}},\n    {{{ -5600,  -3664,  -4117}, 0, {  6720,   2588}, {0x00, 0x7c, 0x18, 0xff}}},\n    {{{ -5685,  -3842,  -3173}, 0, {  6430,   1688}, {0xac, 0x58, 0xdd, 0xff}}},\n    {{{ -5822,  -3941,  -2610}, 0, {  6336,   1116}, {0xa5, 0x57, 0xfe, 0xff}}},\n    {{{ -4831,  -3607,  -4365}, 0, {  6110,   3114}, {0xf9, 0x7d, 0x10, 0xff}}},\n    {{{ -4901,  -3557,  -4765}, 0, {  6330,   3454}, {0x0e, 0x53, 0x5e, 0xff}}},\n    {{{ -5790,  -3590,  -4473}, 0, {  7034,   2840}, {0x2f, 0x52, 0x54, 0xff}}},\n    {{{ -4769,  -3650,  -4015}, 0, {  5916,   2818}, {0xf2, 0x7d, 0x08, 0xff}}},\n    {{{ -5315,  -3738,  -3584}, 0, {  6250,   2208}, {0xc7, 0x58, 0xba, 0xff}}},\n    {{{ -4051,  -3544,  -4313}, 0, {  5374,   3372}, {0xf4, 0x7e, 0x06, 0xff}}},\n    {{{ -4011,  -3522,  -4720}, 0, {  5496,   3760}, {0xeb, 0x56, 0x5a, 0xff}}},\n    {{{ -4098,  -3571,  -3835}, 0, {  5230,   2914}, {0xef, 0x7d, 0x00, 0xff}}},\n    {{{ -4734,  -3650,  -3813}, 0, {  5806,   2646}, {0xf1, 0x5a, 0xa9, 0xff}}},\n};\n\n// 0x07001C60 - 0x07001D60\nstatic const Vtx pss_seg7_vertex_07001C60[] = {\n    {{{ -2810,  -3384,  -3986}, 0, {  4106,   3554}, {0xea, 0x7c, 0xf4, 0xff}}},\n    {{{ -2773,  -3384,  -4081}, 0, {  4108,   3656}, {0xc9, 0x55, 0x4b, 0xff}}},\n    {{{ -3325,  -3481,  -4396}, 0, {  4738,   3730}, {0xd6, 0x6a, 0x35, 0xff}}},\n    {{{ -3475,  -3481,  -3907}, 0, {  4686,   3222}, {0xec, 0x7d, 0xfa, 0xff}}},\n    {{{ -4051,  -3544,  -4313}, 0, {  5374,   3372}, {0xf4, 0x7e, 0x06, 0xff}}},\n    {{{ -4098,  -3571,  -3835}, 0, {  5230,   2914}, {0xef, 0x7d, 0x00, 0xff}}},\n    {{{ -4011,  -3522,  -4720}, 0, {  5496,   3760}, {0xeb, 0x56, 0x5a, 0xff}}},\n    {{{ -3609,  -3481,  -3471}, 0, {  4638,   2770}, {0x1b, 0x5a, 0xac, 0xff}}},\n    {{{ -4109,  -3571,  -3733}, 0, {  5200,   2816}, {0x1b, 0x47, 0x9b, 0xff}}},\n    {{{ -4734,  -3650,  -3813}, 0, {  5806,   2646}, {0xf1, 0x5a, 0xa9, 0xff}}},\n    {{{ -2971,  -3360,  -3569}, 0, {  4090,   3110}, {0xea, 0x7c, 0xf2, 0xff}}},\n    {{{ -3119,  -3337,  -3188}, 0, {  4078,   2702}, {0x07, 0x55, 0xa3, 0xff}}},\n    {{{ -2481,  -3244,  -3479}, 0, {  3604,   3216}, {0xe3, 0x7a, 0xf1, 0xff}}},\n    {{{ -2495,  -3194,  -3072}, 0, {  3460,   2838}, {0xed, 0x52, 0xa2, 0xff}}},\n    {{{ -2469,  -3285,  -3809}, 0, {  3724,   3526}, {0xdf, 0x7a, 0xf7, 0xff}}},\n    {{{ -2016,  -3124,  -3526}, 0, {  3196,   3442}, {0xe4, 0x7b, 0xf4, 0xff}}},\n};\n\n// 0x07001D60 - 0x07001E60\nstatic const Vtx pss_seg7_vertex_07001D60[] = {\n    {{{ -1894,  -3051,  -3142}, 0, {  2934,   3136}, {0xd1, 0x50, 0xaa, 0xff}}},\n    {{{ -2016,  -3124,  -3526}, 0, {  3196,   3442}, {0xe4, 0x7b, 0xf4, 0xff}}},\n    {{{ -2481,  -3244,  -3479}, 0, {  3604,   3216}, {0xe3, 0x7a, 0xf1, 0xff}}},\n    {{{ -2495,  -3194,  -3072}, 0, {  3460,   2838}, {0xed, 0x52, 0xa2, 0xff}}},\n    {{{ -2112,  -3183,  -3828}, 0, {  3402,   3682}, {0xde, 0x7a, 0x00, 0xff}}},\n    {{{ -2469,  -3285,  -3809}, 0, {  3724,   3526}, {0xdf, 0x7a, 0xf7, 0xff}}},\n    {{{ -2462,  -3285,  -4014}, 0, {  3796,   3716}, {0xdb, 0x53, 0x58, 0xff}}},\n    {{{ -2773,  -3384,  -4081}, 0, {  4108,   3656}, {0xc9, 0x55, 0x4b, 0xff}}},\n    {{{ -1634,  -3060,  -3740}, 0, {  2930,   3788}, {0xe9, 0x7c, 0xff, 0xff}}},\n    {{{ -1385,  -3010,  -3419}, 0, {  2576,   3590}, {0xbd, 0x52, 0xbc, 0xff}}},\n    {{{ -1649,  -3015,  -4360}, 0, {  3184,   4350}, {0xf1, 0x7c, 0x12, 0xff}}},\n    {{{ -1734,  -3015,  -4417}, 0, {  3286,   4370}, {0x54, 0x46, 0x3f, 0xff}}},\n    {{{ -1940,  -3096,  -4136}, 0, {  3364,   4032}, {0x21, 0x56, 0x56, 0xff}}},\n    {{{ -1815,  -3096,  -3974}, 0, {  3186,   3932}, {0xe5, 0x7b, 0x0c, 0xff}}},\n    {{{ -2174,  -3183,  -4024}, 0, {  3536,   3838}, {0xf7, 0x53, 0x5f, 0xff}}},\n    {{{ -1285,  -2991,  -4116}, 0, {  2754,   4268}, {0xf1, 0x7d, 0x09, 0xff}}},\n};\n\n// 0x07001E60 - 0x07001F50\nstatic const Vtx pss_seg7_vertex_07001E60[] = {\n    {{{  -945,  -2969,  -3888}, 0, {  2354,   4192}, {0xac, 0x56, 0xd9, 0xff}}},\n    {{{ -1285,  -2991,  -4116}, 0, {  2754,   4268}, {0xf1, 0x7d, 0x09, 0xff}}},\n    {{{ -1634,  -3060,  -3740}, 0, {  2930,   3788}, {0xe9, 0x7c, 0xff, 0xff}}},\n    {{{ -1385,  -3010,  -3419}, 0, {  2576,   3590}, {0xbd, 0x52, 0xbc, 0xff}}},\n    {{{ -1649,  -3015,  -4360}, 0, {  3184,   4350}, {0xf1, 0x7c, 0x12, 0xff}}},\n    {{{ -1815,  -3096,  -3974}, 0, {  3186,   3932}, {0xe5, 0x7b, 0x0c, 0xff}}},\n    {{{ -1940,  -3096,  -4136}, 0, {  3364,   4032}, {0x21, 0x56, 0x56, 0xff}}},\n    {{{ -2174,  -3183,  -4024}, 0, {  3536,   3838}, {0xf7, 0x53, 0x5f, 0xff}}},\n    {{{ -1179,  -2928,  -4692}, 0, {  2882,   4840}, {0xf9, 0x7d, 0x11, 0xff}}},\n    {{{  -695,  -2928,  -4526}, 0, {  2372,   4876}, {0xa6, 0x58, 0xf1, 0xff}}},\n    {{{ -1634,  -2928,  -4848}, 0, {  3360,   4806}, {0x44, 0x65, 0x22, 0xff}}},\n    {{{ -1734,  -3015,  -4417}, 0, {  3286,   4370}, {0x54, 0x46, 0x3f, 0xff}}},\n    {{{ -1108,  -2835,  -5295}, 0, {  3052,   5422}, {0xf9, 0x7d, 0x14, 0xff}}},\n    {{{  -562,  -2835,  -5096}, 0, {  2472,   5452}, {0xbc, 0x6a, 0xf9, 0xff}}},\n    {{{ -1493,  -2835,  -5435}, 0, {  3460,   5400}, {0x60, 0x45, 0x2b, 0xff}}},\n};\n\n// 0x07001F50 - 0x07002050\nstatic const Vtx pss_seg7_vertex_07001F50[] = {\n    {{{  -562,  -2835,  -5096}, 0, {  2472,   5452}, {0xbc, 0x6a, 0xf9, 0xff}}},\n    {{{  -445,  -2742,  -5517}, 0, {  2530,   5884}, {0xf3, 0x7c, 0x16, 0xff}}},\n    {{{  -844,  -2714,  -5840}, 0, {  3022,   6024}, {0xf6, 0x7c, 0x17, 0xff}}},\n    {{{ -1108,  -2835,  -5295}, 0, {  3052,   5422}, {0xf9, 0x7d, 0x14, 0xff}}},\n    {{{  -365,  -2742,  -5453}, 0, {  2430,   5856}, {0xaf, 0x56, 0xd4, 0xff}}},\n    {{{ -1162,  -2692,  -6097}, 0, {  3414,   6136}, {0x40, 0x57, 0x41, 0xff}}},\n    {{{ -1493,  -2835,  -5435}, 0, {  3460,   5400}, {0x60, 0x45, 0x2b, 0xff}}},\n    {{{  -345,  -2598,  -6239}, 0, {  2720,   6586}, {0xf3, 0x7b, 0x18, 0xff}}},\n    {{{  -533,  -2549,  -6600}, 0, {  3032,   6844}, {0x23, 0x54, 0x58, 0xff}}},\n    {{{  -172,  -2644,  -5907}, 0, {  2432,   6348}, {0xee, 0x7c, 0x13, 0xff}}},\n    {{{   283,  -2559,  -6023}, 0, {  2056,   6634}, {0xe8, 0x7b, 0x0d, 0xff}}},\n    {{{   252,  -2483,  -6419}, 0, {  2240,   6984}, {0xee, 0x7b, 0x17, 0xff}}},\n    {{{   -78,  -2644,  -5725}, 0, {  2274,   6218}, {0xcb, 0x58, 0xb7, 0xff}}},\n    {{{   220,  -2405,  -6820}, 0, {  2426,   7340}, {0x01, 0x51, 0x61, 0xff}}},\n    {{{   859,  -2388,  -6345}, 0, {  1654,   7154}, {0xea, 0x7c, 0x0f, 0xff}}},\n    {{{   999,  -2313,  -6723}, 0, {  1672,   7554}, {0xde, 0x51, 0x5b, 0xff}}},\n};\n\n// 0x07002050 - 0x07002150\nstatic const Vtx pss_seg7_vertex_07002050[] = {\n    {{{   283,  -2559,  -6023}, 0, {  2056,   6634}, {0xe8, 0x7b, 0x0d, 0xff}}},\n    {{{   727,  -2459,  -5990}, 0, {  1636,   6776}, {0xe5, 0x7c, 0x01, 0xff}}},\n    {{{   859,  -2388,  -6345}, 0, {  1654,   7154}, {0xea, 0x7c, 0x0f, 0xff}}},\n    {{{   300,  -2559,  -5819}, 0, {  1962,   6452}, {0xe8, 0x56, 0xa7, 0xff}}},\n    {{{   -78,  -2644,  -5725}, 0, {  2274,   6218}, {0xcb, 0x58, 0xb7, 0xff}}},\n    {{{  -172,  -2644,  -5907}, 0, {  2432,   6348}, {0xee, 0x7c, 0x13, 0xff}}},\n    {{{  -365,  -2742,  -5453}, 0, {  2430,   5856}, {0xaf, 0x56, 0xd4, 0xff}}},\n    {{{  1844,  -2190,  -4763}, 0, {   132,   6084}, {0xfc, 0x7e, 0xf2, 0xff}}},\n    {{{  2251,  -2190,  -4813}, 0, {  -220,   6288}, {0xa6, 0x58, 0x05, 0xff}}},\n    {{{  1704,  -2257,  -5438}, 0, {   524,   6650}, {0xf4, 0x7e, 0xf7, 0xff}}},\n    {{{  1388,  -2325,  -5988}, 0, {  1028,   7032}, {0xec, 0x7d, 0x01, 0xff}}},\n    {{{  1683,  -2272,  -6267}, 0, {   866,   7402}, {0xbc, 0x53, 0x43, 0xff}}},\n    {{{   999,  -2313,  -6723}, 0, {  1672,   7554}, {0xde, 0x51, 0x5b, 0xff}}},\n    {{{  1142,  -2369,  -5755}, 0, {  1164,   6722}, {0xec, 0x7c, 0xf5, 0xff}}},\n    {{{   656,  -2459,  -5798}, 0, {  1628,   6572}, {0x0c, 0x56, 0xa5, 0xff}}},\n    {{{  2085,  -2231,  -5586}, 0, {   232,   6934}, {0xa9, 0x55, 0x21, 0xff}}},\n};\n\n// 0x07002150 - 0x07002250\nstatic const Vtx pss_seg7_vertex_07002150[] = {\n    {{{  1704,  -2257,  -5438}, 0, {   524,   6650}, {0xf4, 0x7e, 0xf7, 0xff}}},\n    {{{  1142,  -2369,  -5755}, 0, {  1164,   6722}, {0xec, 0x7c, 0xf5, 0xff}}},\n    {{{  1375,  -2280,  -5309}, 0, {   776,   6402}, {0xf6, 0x7d, 0xef, 0xff}}},\n    {{{   993,  -2369,  -5614}, 0, {  1246,   6534}, {0x30, 0x56, 0xb2, 0xff}}},\n    {{{   656,  -2459,  -5798}, 0, {  1628,   6572}, {0x0c, 0x56, 0xa5, 0xff}}},\n    {{{  1844,  -2190,  -4763}, 0, {   132,   6084}, {0xfc, 0x7e, 0xf2, 0xff}}},\n    {{{  2251,  -2190,  -4813}, 0, {  -220,   6288}, {0xa6, 0x58, 0x05, 0xff}}},\n    {{{  2085,  -2231,  -5586}, 0, {   232,   6934}, {0xa9, 0x55, 0x21, 0xff}}},\n    {{{ -4896,   3169,   1954}, 0, {  3704,  -2714}, {0x16, 0x7c, 0x05, 0xff}}},\n    {{{ -5095,   3185,   2438}, 0, {  3698,  -3238}, {0x2c, 0x57, 0xb0, 0xff}}},\n    {{{ -3993,   3011,   2182}, 0, {  2786,  -2572}, {0x14, 0x7d, 0x02, 0xff}}},\n    {{{  1410,  -2190,  -4710}, 0, {   510,   5866}, {0x49, 0x65, 0xea, 0xff}}},\n    {{{  1280,  -2280,  -5272}, 0, {   848,   6332}, {0x5c, 0x46, 0xcd, 0xff}}},\n    {{{  2275,  -2098,  -4043}, 0, {  -544,   5590}, {0xb4, 0x64, 0xf6, 0xff}}},\n    {{{  1449,  -2098,  -4029}, 0, {   208,   5256}, {0x59, 0x59, 0xf3, 0xff}}},\n    {{{ -3930,   3011,   1674}, 0, {  2926,  -2080}, {0x00, 0x58, 0x5a, 0xff}}},\n};\n\n// 0x07002250 - 0x07002340\nstatic const Vtx pss_seg7_vertex_07002250[] = {\n    {{{ -4896,   3169,   1954}, 0, {  3704,  -2714}, {0x16, 0x7c, 0x05, 0xff}}},\n    {{{ -3930,   3011,   1674}, 0, {  2926,  -2080}, {0x00, 0x58, 0x5a, 0xff}}},\n    {{{ -4701,   3154,   1481}, 0, {  3710,  -2204}, {0xeb, 0x59, 0x57, 0xff}}},\n    {{{ -5585,   3327,   1535}, 0, {  4502,  -2598}, {0x15, 0x7c, 0x0b, 0xff}}},\n    {{{ -5957,   3359,   1926}, 0, {  4690,  -3102}, {0x45, 0x56, 0xc3, 0xff}}},\n    {{{ -5095,   3185,   2438}, 0, {  3698,  -3238}, {0x2c, 0x57, 0xb0, 0xff}}},\n    {{{ -4057,   3011,   2698}, 0, {  2644,  -3070}, {0x15, 0x59, 0xa9, 0xff}}},\n    {{{ -3993,   3011,   2182}, 0, {  2786,  -2572}, {0x14, 0x7d, 0x02, 0xff}}},\n    {{{ -5233,   3297,   1164}, 0, {  4322,  -2120}, {0xcd, 0x5a, 0x48, 0xff}}},\n    {{{ -6035,   3471,    862}, 0, {  5178,  -2156}, {0x0e, 0x7d, 0x10, 0xff}}},\n    {{{ -6534,   3502,   1059}, 0, {  5558,  -2532}, {0x58, 0x56, 0xe4, 0xff}}},\n    {{{ -5560,   3441,    674}, 0, {  4814,  -1798}, {0xb3, 0x5a, 0x2a, 0xff}}},\n    {{{ -6196,   3599,    -37}, 0, {  5676,  -1392}, {0x06, 0x7d, 0x11, 0xff}}},\n    {{{ -6710,   3615,      5}, 0, {  6132,  -1632}, {0x5c, 0x57, 0x00, 0xff}}},\n    {{{ -5686,   3584,    -79}, 0, {  5224,  -1154}, {0xa9, 0x5a, 0x12, 0xff}}},\n};\n\n// 0x07002340 - 0x07002440\nstatic const Vtx pss_seg7_vertex_07002340[] = {\n    {{{ -5420,   4346,  -5080}, 0, {  6930,   3542}, {0xfa, 0x7d, 0x13, 0xff}}},\n    {{{ -5753,   4393,  -5488}, 0, {  7396,   3786}, {0x37, 0x55, 0x4c, 0xff}}},\n    {{{ -5868,   4244,  -4572}, 0, {  7144,   2900}, {0x00, 0x7d, 0x15, 0xff}}},\n    {{{ -6196,   3599,    -37}, 0, {  5676,  -1392}, {0x06, 0x7d, 0x11, 0xff}}},\n    {{{ -5686,   3584,    -79}, 0, {  5224,  -1154}, {0xa9, 0x5a, 0x12, 0xff}}},\n    {{{ -6197,   4009,  -3089}, 0, {  6868,   1410}, {0x03, 0x7d, 0x11, 0xff}}},\n    {{{ -6710,   4024,  -3107}, 0, {  7346,   1226}, {0x5a, 0x57, 0x0e, 0xff}}},\n    {{{ -6710,   3615,      5}, 0, {  6132,  -1632}, {0x5c, 0x57, 0x00, 0xff}}},\n    {{{ -5686,   3994,  -3071}, 0, {  6390,   1592}, {0xa8, 0x5a, 0x08, 0xff}}},\n    {{{ -6135,   4126,  -3879}, 0, {  7118,   2160}, {0x02, 0x7d, 0x14, 0xff}}},\n    {{{ -6647,   4157,  -3992}, 0, {  7632,   2064}, {0x58, 0x56, 0x1c, 0xff}}},\n    {{{ -5636,   4096,  -3769}, 0, {  6618,   2254}, {0xa9, 0x5b, 0xf8, 0xff}}},\n    {{{ -6323,   4291,  -4847}, 0, {  7668,   2976}, {0x4c, 0x55, 0x36, 0xff}}},\n    {{{ -5432,   4198,  -4308}, 0, {  6640,   2828}, {0xb1, 0x5c, 0xdd, 0xff}}},\n    {{{ -5097,   4301,  -4685}, 0, {  6480,   3304}, {0xc1, 0x5b, 0xc4, 0xff}}},\n    {{{ -4839,   4434,  -5420}, 0, {  6528,   4080}, {0xf4, 0x7d, 0x0d, 0xff}}},\n};\n\n// 0x07002440 - 0x07002520\nstatic const Vtx pss_seg7_vertex_07002440[] = {\n    {{{ -4839,   4434,  -5420}, 0, {  6528,   4080}, {0xf4, 0x7d, 0x0d, 0xff}}},\n    {{{ -5036,   4465,  -5904}, 0, {  6898,   4448}, {0x1e, 0x56, 0x57, 0xff}}},\n    {{{ -5420,   4346,  -5080}, 0, {  6930,   3542}, {0xfa, 0x7d, 0x13, 0xff}}},\n    {{{ -5753,   4393,  -5488}, 0, {  7396,   3786}, {0x37, 0x55, 0x4c, 0xff}}},\n    {{{ -5097,   4301,  -4685}, 0, {  6480,   3304}, {0xc1, 0x5b, 0xc4, 0xff}}},\n    {{{ -4646,   4403,  -4947}, 0, {  6166,   3722}, {0xd4, 0x5a, 0xb3, 0xff}}},\n    {{{ -4229,   4521,  -5578}, 0, {  6030,   4464}, {0xf0, 0x7d, 0x06, 0xff}}},\n    {{{ -4313,   4536,  -6087}, 0, {  6306,   4900}, {0x07, 0x57, 0x5b, 0xff}}},\n    {{{ -4146,   4506,  -5073}, 0, {  5756,   4032}, {0xe6, 0x59, 0xaa, 0xff}}},\n    {{{ -3603,   4608,  -6143}, 0, {  5674,   5228}, {0xf8, 0x58, 0x5a, 0xff}}},\n    {{{ -3583,   4608,  -5631}, 0, {  5456,   4764}, {0xea, 0x7c, 0x02, 0xff}}},\n    {{{ -3563,   4608,  -5119}, 0, {  5238,   4302}, {0xec, 0x57, 0xa7, 0xff}}},\n    {{{  3072,   6144,  -6143}, 0, {  -456,   7830}, {0xef, 0x4a, 0x65, 0xff}}},\n    {{{  3072,   6144,  -5119}, 0, {  -856,   6890}, {0xf4, 0x37, 0x8f, 0xff}}},\n};\n\n// 0x07002520 - 0x07002620\nstatic const Vtx pss_seg7_vertex_07002520[] = {\n    {{{  1456,  -1228,    878}, 0, { -1710,    752}, {0xa7, 0x59, 0xfb, 0xff}}},\n    {{{  2275,  -1223,   1846}, 0, { -2840,    182}, {0x59, 0x59, 0xfd, 0xff}}},\n    {{{  2275,  -1228,    878}, 0, { -2462,   1068}, {0x59, 0x59, 0xf7, 0xff}}},\n    {{{  1456,  -1223,   1846}, 0, { -2088,   -138}, {0xa7, 0x59, 0xf9, 0xff}}},\n    {{{  1456,  -1244,    779}, 0, { -1672,    842}, {0xa6, 0x56, 0xea, 0xff}}},\n    {{{  2275,  -1201,   2024}, 0, { -2910,     18}, {0x5a, 0x57, 0xef, 0xff}}},\n    {{{  1456,  -1201,   2024}, 0, { -2158,   -302}, {0xa6, 0x56, 0xe9, 0xff}}},\n    {{{  2275,  -1244,    779}, 0, { -2424,   1160}, {0x5a, 0x54, 0xe3, 0xff}}},\n    {{{  1456,  -1431,    371}, 0, { -1512,   1214}, {0xa7, 0x53, 0xdf, 0xff}}},\n    {{{  2275,   -988,   2623}, 0, { -3144,   -532}, {0x59, 0x56, 0xe8, 0xff}}},\n    {{{  1456,   -988,   2623}, 0, { -2390,   -852}, {0xa7, 0x57, 0xed, 0xff}}},\n    {{{  2275,  -1431,    371}, 0, { -2266,   1534}, {0x59, 0x54, 0xe2, 0xff}}},\n    {{{  2275,  -1479,    216}, 0, { -2204,   1678}, {0x5a, 0x58, 0xf7, 0xff}}},\n    {{{  1456,  -1479,    216}, 0, { -1452,   1358}, {0xa6, 0x57, 0xef, 0xff}}},\n    {{{  2275,  -1484,   -965}, 0, { -1744,   2764}, {0x5a, 0x58, 0xf2, 0xff}}},\n    {{{  1456,  -1484,   -965}, 0, {  -992,   2444}, {0xa6, 0x59, 0xf9, 0xff}}},\n};\n\n// 0x07002620 - 0x07002720\nstatic const Vtx pss_seg7_vertex_07002620[] = {\n    {{{  3072,   6144,  -6143}, 0, {  -456,   7830}, {0xef, 0x4a, 0x65, 0xff}}},\n    {{{ -3603,   4608,  -6143}, 0, {  5674,   5228}, {0xf8, 0x58, 0x5a, 0xff}}},\n    {{{ -3583,   4608,  -5631}, 0, {  5456,   4764}, {0xea, 0x7c, 0x02, 0xff}}},\n    {{{  2275,  -1725,  -1299}, 0, { -1614,   3070}, {0x5a, 0x4c, 0xd2, 0xff}}},\n    {{{  1456,  -1812,  -1477}, 0, {  -792,   2914}, {0xa6, 0x54, 0xe3, 0xff}}},\n    {{{  1456,  -1725,  -1299}, 0, {  -860,   2750}, {0xa6, 0x47, 0xcb, 0xff}}},\n    {{{  2275,  -1812,  -1477}, 0, { -1544,   3234}, {0x5a, 0x57, 0xed, 0xff}}},\n    {{{  2275,  -1508,  -1062}, 0, { -1706,   2852}, {0x5b, 0x4a, 0xd0, 0xff}}},\n    {{{  1456,  -1945,  -2810}, 0, {  -272,   4138}, {0xd8, 0x77, 0xf3, 0xff}}},\n    {{{  2275,  -1945,  -2810}, 0, { -1024,   4458}, {0xd8, 0x77, 0xf3, 0xff}}},\n    {{{  1456,  -1508,  -1062}, 0, {  -954,   2532}, {0xa5, 0x51, 0xdd, 0xff}}},\n    {{{  2275,  -1484,   -965}, 0, { -1744,   2764}, {0x5a, 0x58, 0xf2, 0xff}}},\n    {{{  1456,  -1484,   -965}, 0, {  -992,   2444}, {0xa6, 0x59, 0xf9, 0xff}}},\n    {{{  1970,   -670,   6301}, 0, { -4296,  -4030}, {0x2a, 0x67, 0xc4, 0xff}}},\n    {{{  2069,   -719,   6204}, 0, { -4350,  -3904}, {0x03, 0x7b, 0xe4, 0xff}}},\n    {{{  1605,   -819,   5495}, 0, { -3648,  -3432}, {0x0e, 0x7b, 0xe9, 0xff}}},\n};\n\n// 0x07002720 - 0x07002810\nstatic const Vtx pss_seg7_vertex_07002720[] = {\n    {{{  1970,   -670,   6301}, 0, { -4296,  -4030}, {0x2a, 0x67, 0xc4, 0xff}}},\n    {{{  1605,   -819,   5495}, 0, { -3648,  -3432}, {0x0e, 0x7b, 0xe9, 0xff}}},\n    {{{  1483,   -768,   5546}, 0, { -3556,  -3528}, {0xbd, 0x6b, 0x00, 0xff}}},\n    {{{  2743,   -559,   6802}, 0, { -5202,  -4190}, {0x0a, 0x6c, 0xbf, 0xff}}},\n    {{{  2069,   -719,   6204}, 0, { -4350,  -3904}, {0x03, 0x7b, 0xe4, 0xff}}},\n    {{{  2701,   -456,   6904}, 0, { -5204,  -4300}, {0xf5, 0x76, 0x2c, 0xff}}},\n    {{{  1914,   -564,   6355}, 0, { -4266,  -4102}, {0xbb, 0x53, 0x41, 0xff}}},\n    {{{  2807,   -620,   6648}, 0, { -5202,  -4022}, {0xf9, 0x7b, 0xe3, 0xff}}},\n    {{{  2617,   -736,   5671}, 0, { -4646,  -3200}, {0x3f, 0x5a, 0xc1, 0xff}}},\n    {{{  2343,   -828,   5186}, 0, { -4204,  -2860}, {0x52, 0x5a, 0xdf, 0xff}}},\n    {{{  2275,   -921,   4566}, 0, { -3902,  -2318}, {0x58, 0x5a, 0xf4, 0xff}}},\n    {{{  1456,   -921,   4677}, 0, { -3192,  -2738}, {0xb8, 0x68, 0xf7, 0xff}}},\n    {{{  3904,    307,   1784}, 0, { -4312,    874}, {0x19, 0x6a, 0xc0, 0xff}}},\n    {{{  4782,    203,   2199}, 0, { -5282,    834}, {0xfe, 0x7b, 0x1c, 0xff}}},\n    {{{  4823,    236,   2128}, 0, { -5292,    916}, {0x1b, 0x6d, 0xc6, 0xff}}},\n};\n\n// 0x07002810 - 0x07002900\nstatic const Vtx pss_seg7_vertex_07002810[] = {\n    {{{  2471,    658,   2707}, 0, { -3356,   -532}, {0x37, 0x6a, 0x2a, 0xff}}},\n    {{{  2892,    512,   2707}, 0, { -3742,   -370}, {0x17, 0x55, 0x5a, 0xff}}},\n    {{{  2598,    624,   1683}, 0, { -3074,    458}, {0x2e, 0x6e, 0x2a, 0xff}}},\n    {{{  4782,    203,   2199}, 0, { -5282,    834}, {0xfe, 0x7b, 0x1c, 0xff}}},\n    {{{  5487,    136,   2770}, 0, { -6152,    586}, {0xd0, 0x69, 0x33, 0xff}}},\n    {{{  4823,    236,   2128}, 0, { -5292,    916}, {0x1b, 0x6d, 0xc6, 0xff}}},\n    {{{  5400,     96,   2844}, 0, { -6100,    482}, {0xf5, 0x7b, 0x1a, 0xff}}},\n    {{{  4846,     72,   3315}, 0, { -5774,   -166}, {0xc7, 0x58, 0x47, 0xff}}},\n    {{{  4360,    184,   2924}, 0, { -5176,      4}, {0xde, 0x59, 0x53, 0xff}}},\n    {{{  3904,    307,   1784}, 0, { -4312,    874}, {0x19, 0x6a, 0xc0, 0xff}}},\n    {{{  5540,    215,   2725}, 0, { -6182,    648}, {0x42, 0x54, 0xbd, 0xff}}},\n    {{{  5974,     51,   3565}, 0, { -6908,     44}, {0xc8, 0x6d, 0x1f, 0xff}}},\n    {{{  5245,    -37,   3820}, 0, { -6338,   -474}, {0xb1, 0x58, 0x2a, 0xff}}},\n    {{{  5821,     -9,   3619}, 0, { -6790,    -64}, {0xeb, 0x7b, 0x14, 0xff}}},\n    {{{  6072,    146,   3531}, 0, { -6986,    114}, {0x2e, 0x75, 0xf2, 0xff}}},\n};\n\n// 0x07002900 - 0x07002A00\nstatic const Vtx pss_seg7_vertex_07002900[] = {\n    {{{  -781,   2676,   2702}, 0, {  -366,  -1798}, {0x21, 0x3d, 0x97, 0xff}}},\n    {{{  2471,    658,   2707}, 0, { -3356,   -532}, {0x37, 0x6a, 0x2a, 0xff}}},\n    {{{  -776,   2677,   1678}, 0, {    28,   -854}, {0x30, 0x58, 0x4d, 0xff}}},\n    {{{  2892,    512,   2707}, 0, { -3742,   -370}, {0x17, 0x55, 0x5a, 0xff}}},\n    {{{  2946,    512,   1683}, 0, { -3394,    592}, {0x1a, 0x57, 0xa8, 0xff}}},\n    {{{  2598,    624,   1683}, 0, { -3074,    458}, {0x2e, 0x6e, 0x2a, 0xff}}},\n    {{{  -900,   2732,   2702}, 0, {  -256,  -1844}, {0x21, 0x53, 0xa7, 0xff}}},\n    {{{  -896,   2734,   1678}, 0, {   138,   -902}, {0x1c, 0x54, 0x5a, 0xff}}},\n    {{{ -1029,   2765,   2702}, 0, {  -138,  -1894}, {0x10, 0x58, 0xa7, 0xff}}},\n    {{{ -1024,   2769,   1678}, 0, {   256,   -952}, {0x09, 0x58, 0x5a, 0xff}}},\n    {{{ -2573,   2810,   2700}, 0, {  1280,  -2494}, {0x03, 0x59, 0xa7, 0xff}}},\n    {{{ -2568,   2811,   1676}, 0, {  1674,  -1552}, {0x03, 0x59, 0x59, 0xff}}},\n    {{{ -2736,   2817,   2699}, 0, {  1430,  -2558}, {0x07, 0x59, 0xa7, 0xff}}},\n    {{{  2275,   -972,   2722}, 0, { -3182,   -624}, {0x59, 0x59, 0xf7, 0xff}}},\n    {{{  2275,   -988,   2623}, 0, { -3144,   -532}, {0x59, 0x56, 0xe8, 0xff}}},\n    {{{  1456,   -988,   2623}, 0, { -2390,   -852}, {0xa7, 0x57, 0xed, 0xff}}},\n};\n\n// 0x07002A00 - 0x07002B00\nstatic const Vtx pss_seg7_vertex_07002A00[] = {\n    {{{ -2736,   2817,   2699}, 0, {  1430,  -2558}, {0x07, 0x59, 0xa7, 0xff}}},\n    {{{ -2568,   2811,   1676}, 0, {  1674,  -1552}, {0x03, 0x59, 0x59, 0xff}}},\n    {{{ -2731,   2819,   1675}, 0, {  1824,  -1614}, {0x0c, 0x64, 0x4c, 0xff}}},\n    {{{ -4057,   3011,   2698}, 0, {  2644,  -3070}, {0x15, 0x59, 0xa9, 0xff}}},\n    {{{ -3930,   3011,   1674}, 0, {  2926,  -2080}, {0x00, 0x58, 0x5a, 0xff}}},\n    {{{ -3993,   3011,   2182}, 0, {  2786,  -2572}, {0x14, 0x7d, 0x02, 0xff}}},\n    {{{  2275,  -1945,  -2810}, 0, { -1024,   4458}, {0xd8, 0x77, 0xf3, 0xff}}},\n    {{{  2275,  -2098,  -4043}, 0, {  -544,   5590}, {0xb4, 0x64, 0xf6, 0xff}}},\n    {{{  1449,  -2098,  -4029}, 0, {   208,   5256}, {0x59, 0x59, 0xf3, 0xff}}},\n    {{{  1456,  -1945,  -2810}, 0, {  -272,   4138}, {0xd8, 0x77, 0xf3, 0xff}}},\n    {{{  2946,    512,   1683}, 0, { -3394,    592}, {0x1a, 0x57, 0xa8, 0xff}}},\n    {{{  3699,    297,   2752}, 0, { -4500,    -96}, {0x01, 0x58, 0x5b, 0xff}}},\n    {{{  3904,    307,   1784}, 0, { -4312,    874}, {0x19, 0x6a, 0xc0, 0xff}}},\n    {{{  2275,   -972,   2722}, 0, { -3182,   -624}, {0x59, 0x59, 0xf7, 0xff}}},\n    {{{  1456,   -988,   2623}, 0, { -2390,   -852}, {0xa7, 0x57, 0xed, 0xff}}},\n    {{{  1456,   -972,   2722}, 0, { -2430,   -942}, {0xa6, 0x59, 0xfc, 0xff}}},\n};\n\n// 0x07002B00 - 0x07002BE0\nstatic const Vtx pss_seg7_vertex_07002B00[] = {\n    {{{  2275,   -967,   3644}, 0, { -3542,  -1470}, {0x4b, 0x66, 0xfe, 0xff}}},\n    {{{  2275,   -972,   2722}, 0, { -3182,   -624}, {0x59, 0x59, 0xf7, 0xff}}},\n    {{{  1456,   -972,   2722}, 0, { -2430,   -942}, {0xa6, 0x59, 0xfc, 0xff}}},\n    {{{  1456,   -980,   3644}, 0, { -2788,  -1790}, {0x96, 0x45, 0xff, 0xff}}},\n    {{{  1456,   -921,   4677}, 0, { -3192,  -2738}, {0xb8, 0x68, 0xf7, 0xff}}},\n    {{{  2275,   -921,   4566}, 0, { -3902,  -2318}, {0x58, 0x5a, 0xf4, 0xff}}},\n    {{{ -6869,  -4034,  -1778}, 0, {  6974,    -54}, {0x59, 0x59, 0x0a, 0xff}}},\n    {{{ -6869,  -4587,   4067}, 0, {  4694,  -5426}, {0x3d, 0x6b, 0x1c, 0xff}}},\n    {{{ -5845,  -4587,   4067}, 0, {  3752,  -5026}, {0xb2, 0x5b, 0x27, 0xff}}},\n    {{{  2946,    512,   1683}, 0, { -3394,    592}, {0x1a, 0x57, 0xa8, 0xff}}},\n    {{{  2892,    512,   2707}, 0, { -3742,   -370}, {0x17, 0x55, 0x5a, 0xff}}},\n    {{{  3699,    297,   2752}, 0, { -4500,    -96}, {0x01, 0x58, 0x5b, 0xff}}},\n    {{{  3904,    307,   1784}, 0, { -4312,    874}, {0x19, 0x6a, 0xc0, 0xff}}},\n    {{{  4360,    184,   2924}, 0, { -5176,      4}, {0xde, 0x59, 0x53, 0xff}}},\n};\n\n// 0x07002BE0 - 0x07002CE0\nstatic const Vtx pss_seg7_vertex_07002BE0[] = {\n    {{{  5821,     -9,   3619}, 0, { -6790,    -64}, {0xeb, 0x7b, 0x14, 0xff}}},\n    {{{  5245,    -37,   3820}, 0, { -6338,   -474}, {0xb1, 0x58, 0x2a, 0xff}}},\n    {{{  5380,   -139,   4525}, 0, { -6738,  -1070}, {0xa6, 0x59, 0x01, 0xff}}},\n    {{{  6072,    146,   3531}, 0, { -6986,    114}, {0x2e, 0x75, 0xf2, 0xff}}},\n    {{{  5974,     51,   3565}, 0, { -6908,     44}, {0xc8, 0x6d, 0x1f, 0xff}}},\n    {{{  6292,     78,   4538}, 0, { -7580,   -726}, {0x11, 0x7d, 0x01, 0xff}}},\n    {{{  6153,    -31,   4536}, 0, { -7452,   -778}, {0xc6, 0x70, 0x0b, 0xff}}},\n    {{{  5944,   -112,   4533}, 0, { -7258,   -856}, {0xe5, 0x7b, 0x0b, 0xff}}},\n    {{{  5191,   -245,   5215}, 0, { -6834,  -1776}, {0xaa, 0x58, 0xe4, 0xff}}},\n    {{{  5736,   -217,   5427}, 0, { -7416,  -1758}, {0xe5, 0x7b, 0x05, 0xff}}},\n    {{{  5931,   -136,   5502}, 0, { -7624,  -1752}, {0xc4, 0x6f, 0xf7, 0xff}}},\n    {{{  5434,   -237,   6337}, 0, { -7494,  -2712}, {0xca, 0x6d, 0xde, 0xff}}},\n    {{{  4549,   -420,   6654}, 0, { -6804,  -3348}, {0xe8, 0x7b, 0xee, 0xff}}},\n    {{{  4623,   -339,   6849}, 0, { -6948,  -3500}, {0xe0, 0x6d, 0xca, 0xff}}},\n    {{{  6060,    -26,   5553}, 0, { -7762,  -1748}, {0x32, 0x73, 0x12, 0xff}}},\n    {{{  4860,   -347,   5748}, 0, { -6736,  -2396}, {0xbc, 0x59, 0xc5, 0xff}}},\n};\n\n// 0x07002CE0 - 0x07002DE0\nstatic const Vtx pss_seg7_vertex_07002CE0[] = {\n    {{{  5931,   -136,   5502}, 0, { -7624,  -1752}, {0xc4, 0x6f, 0xf7, 0xff}}},\n    {{{  5736,   -217,   5427}, 0, { -7416,  -1758}, {0xe5, 0x7b, 0x05, 0xff}}},\n    {{{  5288,   -318,   6187}, 0, { -7302,  -2632}, {0xe2, 0x7b, 0xfa, 0xff}}},\n    {{{  4860,   -347,   5748}, 0, { -6736,  -2396}, {0xbc, 0x59, 0xc5, 0xff}}},\n    {{{  5434,   -237,   6337}, 0, { -7494,  -2712}, {0xca, 0x6d, 0xde, 0xff}}},\n    {{{  6060,    -26,   5553}, 0, { -7762,  -1748}, {0x32, 0x73, 0x12, 0xff}}},\n    {{{  5531,   -127,   6436}, 0, { -7622,  -2766}, {0x2a, 0x73, 0x1f, 0xff}}},\n    {{{  4329,   -450,   6074}, 0, { -6376,  -2902}, {0xdc, 0x59, 0xae, 0xff}}},\n    {{{  4549,   -420,   6654}, 0, { -6804,  -3348}, {0xe8, 0x7b, 0xee, 0xff}}},\n    {{{  4623,   -339,   6849}, 0, { -6948,  -3500}, {0xe0, 0x6d, 0xca, 0xff}}},\n    {{{  4672,   -229,   6979}, 0, { -7044,  -3600}, {0x17, 0x73, 0x30, 0xff}}},\n    {{{  3681,   -552,   6163}, 0, { -5816,  -3236}, {0xfb, 0x58, 0xa6, 0xff}}},\n    {{{  3681,   -524,   6740}, 0, { -6040,  -3766}, {0xf1, 0x7b, 0xe6, 0xff}}},\n    {{{  3681,   -443,   6949}, 0, { -6122,  -3958}, {0xf5, 0x6d, 0xc1, 0xff}}},\n    {{{  3681,   -333,   7088}, 0, { -6176,  -4086}, {0xfd, 0x73, 0x34, 0xff}}},\n    {{{  3057,   -644,   6044}, 0, { -5196,  -3370}, {0x21, 0x5a, 0xae, 0xff}}},\n};\n\n// 0x07002DE0 - 0x07002E90\nstatic const Vtx pss_seg7_vertex_07002DE0[] = {\n    {{{  3681,   -524,   6740}, 0, { -6040,  -3766}, {0xf1, 0x7b, 0xe6, 0xff}}},\n    {{{  3057,   -644,   6044}, 0, { -5196,  -3370}, {0x21, 0x5a, 0xae, 0xff}}},\n    {{{  2807,   -620,   6648}, 0, { -5202,  -4022}, {0xf9, 0x7b, 0xe3, 0xff}}},\n    {{{  3681,   -443,   6949}, 0, { -6122,  -3958}, {0xf5, 0x6d, 0xc1, 0xff}}},\n    {{{  3681,   -333,   7088}, 0, { -6176,  -4086}, {0xfd, 0x73, 0x34, 0xff}}},\n    {{{  2743,   -559,   6802}, 0, { -5202,  -4190}, {0x0a, 0x6c, 0xbf, 0xff}}},\n    {{{  2701,   -456,   6904}, 0, { -5204,  -4300}, {0xf5, 0x76, 0x2c, 0xff}}},\n    {{{  2617,   -736,   5671}, 0, { -4646,  -3200}, {0x3f, 0x5a, 0xc1, 0xff}}},\n    {{{  2275,  -2098,  -4043}, 0, {  -544,   5590}, {0xb4, 0x64, 0xf6, 0xff}}},\n    {{{  2251,  -2190,  -4813}, 0, {  -220,   6288}, {0xa6, 0x58, 0x05, 0xff}}},\n    {{{  1844,  -2190,  -4763}, 0, {   132,   6084}, {0xfc, 0x7e, 0xf2, 0xff}}},\n};\n\n// 0x07002E90 - 0x07002F90\nstatic const Vtx pss_seg7_vertex_07002E90[] = {\n    {{{ -4895,  -3057,  -3251}, 0, {   410,    224}, {0xd3, 0x69, 0xcc, 0xff}}},\n    {{{ -4895,  -3057,  -2719}, 0, {  -472,    224}, {0xdf, 0x4c, 0x5f, 0xff}}},\n    {{{ -4588,  -3057,  -2719}, 0, {  -472,    734}, {0x42, 0x4c, 0x4c, 0xff}}},\n    {{{   220,  -1387,  -5286}, 0, {   224,   1430}, {0xd3, 0x69, 0xcb, 0xff}}},\n    {{{   681,  -1387,  -5020}, 0, {   990,    990}, {0x63, 0x4c, 0xed, 0xff}}},\n    {{{   527,  -1387,  -5286}, 0, {   480,    990}, {0x26, 0x2c, 0x90, 0xff}}},\n    {{{   220,  -1387,  -4754}, 0, {   990,   1874}, {0xdf, 0x4c, 0x5f, 0xff}}},\n    {{{   527,  -1387,  -4754}, 0, {  1246,   1430}, {0x42, 0x4c, 0x4c, 0xff}}},\n    {{{    66,  -1387,  -5020}, 0, {   478,   1874}, {0x8c, 0x2c, 0x16, 0xff}}},\n    {{{ -2641,  -2866,  -5234}, 0, {   224,    410}, {0xd3, 0x69, 0xcb, 0xff}}},\n    {{{ -2180,  -2866,  -4968}, 0, {   990,      0}, {0x63, 0x4c, 0xed, 0xff}}},\n    {{{ -2334,  -2866,  -5234}, 0, {   480,      0}, {0x26, 0x2c, 0x90, 0xff}}},\n    {{{ -2334,  -2866,  -4702}, 0, {  1246,    410}, {0x36, 0x3f, 0x5f, 0xff}}},\n    {{{ -2641,  -2866,  -4702}, 0, {   990,    854}, {0xd7, 0x5f, 0x48, 0xff}}},\n    {{{ -2795,  -2866,  -4968}, 0, {   478,    854}, {0x8c, 0x2c, 0x16, 0xff}}},\n    {{{ -5048,  -3057,  -2985}, 0, {     0,      0}, {0x8c, 0x2c, 0x16, 0xff}}},\n};\n\n// 0x07002F90 - 0x07002FD0\nstatic const Vtx pss_seg7_vertex_07002F90[] = {\n    {{{ -4895,  -3057,  -3251}, 0, {   410,    224}, {0xd3, 0x69, 0xcc, 0xff}}},\n    {{{ -4588,  -3057,  -2719}, 0, {  -472,    734}, {0x42, 0x4c, 0x4c, 0xff}}},\n    {{{ -4434,  -3057,  -2985}, 0, {     0,    990}, {0x63, 0x4c, 0xed, 0xff}}},\n    {{{ -4588,  -3057,  -3251}, 0, {   410,    734}, {0x26, 0x2c, 0x90, 0xff}}},\n};\n\n// 0x07002FD0 - 0x070030C0\nstatic const Vtx pss_seg7_vertex_07002FD0[] = {\n    {{{  2275,  -1443,  -1719}, 0, {  4566,  -3908}, {0xb5, 0xd6, 0xa4, 0xff}}},\n    {{{  2327,  -2343,  -1719}, 0, {  5078,   5076}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  2275,  -2343,  -1719}, 0, {  4566,   5076}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{  2275,  -2343,  -1668}, 0, {  4566,   5076}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  2275,  -1443,  -1668}, 0, {  4566,  -3908}, {0xac, 0xeb, 0x5c, 0xff}}},\n    {{{  2254,  -1421,  -1668}, 0, {  4356,  -4120}, {0xd4, 0xb7, 0x5d, 0xff}}},\n    {{{  2327,  -1421,  -1668}, 0, {  5078,  -4120}, {0x4a, 0x2c, 0x5c, 0xff}}},\n    {{{  2275,  -1370,  -1668}, 0, {  4566,  -4632}, {0x15, 0x53, 0x5c, 0xff}}},\n    {{{  2254,  -1421,  -1719}, 0, {  4356,  -4120}, {0xea, 0xad, 0xa3, 0xff}}},\n    {{{  2327,  -1421,  -1719}, 0, {  5078,  -4120}, {0x53, 0x16, 0xa4, 0xff}}},\n    {{{  2327,  -2343,  -1668}, 0, {  5078,   5076}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{  1477,  -1421,  -1668}, 0, { -3396,  -4120}, {0x16, 0xad, 0x5d, 0xff}}},\n    {{{  1456,  -1370,  -1668}, 0, { -3606,  -4632}, {0xd5, 0x4a, 0x5c, 0xff}}},\n    {{{  1405,  -1421,  -1719}, 0, { -4118,  -4120}, {0xb6, 0x2b, 0xa4, 0xff}}},\n    {{{  1405,  -1421,  -1668}, 0, { -4118,  -4120}, {0xad, 0x15, 0x5c, 0xff}}},\n};\n\n// 0x070030C0 - 0x070031C0\nstatic const Vtx pss_seg7_vertex_070030C0[] = {\n    {{{  1477,  -1421,  -1719}, 0, { -3396,  -4120}, {0x2c, 0xb7, 0xa3, 0xff}}},\n    {{{  2275,  -1370,  -1719}, 0, {  4566,  -4632}, {0x2b, 0x4b, 0xa4, 0xff}}},\n    {{{  2254,  -1421,  -1719}, 0, {  4356,  -4120}, {0xea, 0xad, 0xa3, 0xff}}},\n    {{{  2327,  -1421,  -1719}, 0, {  5078,  -4120}, {0x53, 0x16, 0xa4, 0xff}}},\n    {{{  1477,  -1421,  -1668}, 0, { -3396,  -4120}, {0x16, 0xad, 0x5d, 0xff}}},\n    {{{  1456,  -1443,  -1668}, 0, { -3606,  -3908}, {0x4b, 0xd6, 0x5c, 0xff}}},\n    {{{  1456,  -1370,  -1668}, 0, { -3606,  -4632}, {0xd5, 0x4a, 0x5c, 0xff}}},\n    {{{  1405,  -1421,  -1668}, 0, { -4118,  -4120}, {0xad, 0x15, 0x5c, 0xff}}},\n    {{{  1456,  -1370,  -1719}, 0, { -3606,  -4632}, {0xeb, 0x53, 0xa4, 0xff}}},\n    {{{  1456,  -1443,  -1719}, 0, { -3606,  -3908}, {0x54, 0xeb, 0xa4, 0xff}}},\n    {{{  1456,  -2343,  -1668}, 0, { -3606,   5076}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{  1405,  -2343,  -1668}, 0, { -4118,   5076}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  1456,  -2343,  -1719}, 0, { -3606,   5076}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  1405,  -1421,  -1719}, 0, { -4118,  -4120}, {0xb6, 0x2b, 0xa4, 0xff}}},\n    {{{  1405,  -2343,  -1719}, 0, { -4118,   5076}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{  2327,  -1421,  -1668}, 0, {  5078,  -4120}, {0x4a, 0x2c, 0x5c, 0xff}}},\n};\n\n// 0x070031C0 - 0x070032B0\nstatic const Vtx pss_seg7_vertex_070031C0[] = {\n    {{{  2327,  -1421,  -1668}, 0, {  5078,  -4120}, {0x4a, 0x2c, 0x5c, 0xff}}},\n    {{{  2275,  -1370,  -1719}, 0, {  4566,  -4632}, {0x2b, 0x4b, 0xa4, 0xff}}},\n    {{{  2275,  -1370,  -1668}, 0, {  4566,  -4632}, {0x15, 0x53, 0x5c, 0xff}}},\n    {{{  1456,  -1370,  -1719}, 0, { -3606,  -4632}, {0xeb, 0x53, 0xa4, 0xff}}},\n    {{{  1456,  -1370,  -1668}, 0, { -3606,  -4632}, {0xd5, 0x4a, 0x5c, 0xff}}},\n    {{{  1405,  -2343,  -1719}, 0, { -4118,   5076}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{  1405,  -1421,  -1668}, 0, { -4118,  -4120}, {0xad, 0x15, 0x5c, 0xff}}},\n    {{{  1405,  -1421,  -1719}, 0, { -4118,  -4120}, {0xb6, 0x2b, 0xa4, 0xff}}},\n    {{{  1405,  -2343,  -1668}, 0, { -4118,   5076}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  2275,  -1091,     31}, 0, {  4566,  -3908}, {0xb6, 0xd5, 0xa4, 0xff}}},\n    {{{  2327,  -1991,     31}, 0, {  5078,   5076}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  2275,  -1991,     31}, 0, {  4566,   5076}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{  2327,  -1991,     83}, 0, {  5078,   5076}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{  2327,  -1070,     31}, 0, {  5078,  -4120}, {0x53, 0x15, 0xa4, 0xff}}},\n    {{{  2327,  -1070,     83}, 0, {  5078,  -4120}, {0x4a, 0x2b, 0x5c, 0xff}}},\n};\n\n// 0x070032B0 - 0x070033A0\nstatic const Vtx pss_seg7_vertex_070032B0[] = {\n    {{{  2275,  -1991,     31}, 0, {  4566,   5076}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{  2275,  -1991,     83}, 0, {  4566,   5076}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  2275,  -1091,     83}, 0, {  4566,  -3908}, {0xad, 0xeb, 0x5c, 0xff}}},\n    {{{  2327,  -1070,     83}, 0, {  5078,  -4120}, {0x4a, 0x2b, 0x5c, 0xff}}},\n    {{{  2275,  -1018,     83}, 0, {  4566,  -4632}, {0x15, 0x53, 0x5c, 0xff}}},\n    {{{  2254,  -1070,     83}, 0, {  4356,  -4120}, {0xd5, 0xb6, 0x5c, 0xff}}},\n    {{{  2275,  -1091,     31}, 0, {  4566,  -3908}, {0xb6, 0xd5, 0xa4, 0xff}}},\n    {{{  2254,  -1070,     31}, 0, {  4356,  -4120}, {0xeb, 0xad, 0xa4, 0xff}}},\n    {{{  2327,  -1070,     31}, 0, {  5078,  -4120}, {0x53, 0x15, 0xa4, 0xff}}},\n    {{{  2327,  -1991,     31}, 0, {  5078,   5076}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  2327,  -1991,     83}, 0, {  5078,   5076}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{  1456,  -1018,     83}, 0, { -3606,  -4632}, {0xd4, 0x4a, 0x5c, 0xff}}},\n    {{{  1477,  -1070,     83}, 0, { -3396,  -4120}, {0x15, 0xad, 0x5c, 0xff}}},\n    {{{  1405,  -1070,     31}, 0, { -4118,  -4120}, {0xb5, 0x2b, 0xa4, 0xff}}},\n    {{{  1405,  -1070,     83}, 0, { -4118,  -4120}, {0xad, 0x15, 0x5c, 0xff}}},\n};\n\n// 0x070033A0 - 0x070034A0\nstatic const Vtx pss_seg7_vertex_070033A0[] = {\n    {{{  1477,  -1070,     31}, 0, { -3396,  -4120}, {0x2b, 0xb6, 0xa4, 0xff}}},\n    {{{  2275,  -1018,     31}, 0, {  4566,  -4632}, {0x2b, 0x4a, 0xa4, 0xff}}},\n    {{{  2254,  -1070,     31}, 0, {  4356,  -4120}, {0xeb, 0xad, 0xa4, 0xff}}},\n    {{{  2327,  -1070,     31}, 0, {  5078,  -4120}, {0x53, 0x15, 0xa4, 0xff}}},\n    {{{  1477,  -1070,     83}, 0, { -3396,  -4120}, {0x15, 0xad, 0x5c, 0xff}}},\n    {{{  1405,  -1070,     83}, 0, { -4118,  -4120}, {0xad, 0x15, 0x5c, 0xff}}},\n    {{{  1456,  -1091,     83}, 0, { -3606,  -3908}, {0x4a, 0xd5, 0x5c, 0xff}}},\n    {{{  1456,  -1018,     83}, 0, { -3606,  -4632}, {0xd4, 0x4a, 0x5c, 0xff}}},\n    {{{  1456,  -1091,     31}, 0, { -3606,  -3908}, {0x53, 0xeb, 0xa4, 0xff}}},\n    {{{  1456,  -1018,     31}, 0, { -3606,  -4632}, {0xea, 0x53, 0xa4, 0xff}}},\n    {{{  1405,  -1991,     83}, 0, { -4118,   5076}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  1456,  -1991,     83}, 0, { -3606,   5076}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{  1456,  -1991,     31}, 0, { -3606,   5076}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  1405,  -1070,     31}, 0, { -4118,  -4120}, {0xb5, 0x2b, 0xa4, 0xff}}},\n    {{{  1405,  -1991,     31}, 0, { -4118,   5076}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{  2327,  -1070,     83}, 0, {  5078,  -4120}, {0x4a, 0x2b, 0x5c, 0xff}}},\n};\n\n// 0x070034A0 - 0x07003590\nstatic const Vtx pss_seg7_vertex_070034A0[] = {\n    {{{  2327,  -1070,     83}, 0, {  5078,  -4120}, {0x4a, 0x2b, 0x5c, 0xff}}},\n    {{{  2275,  -1018,     31}, 0, {  4566,  -4632}, {0x2b, 0x4a, 0xa4, 0xff}}},\n    {{{  2275,  -1018,     83}, 0, {  4566,  -4632}, {0x15, 0x53, 0x5c, 0xff}}},\n    {{{  1456,  -1018,     31}, 0, { -3606,  -4632}, {0xea, 0x53, 0xa4, 0xff}}},\n    {{{  1456,  -1018,     83}, 0, { -3606,  -4632}, {0xd4, 0x4a, 0x5c, 0xff}}},\n    {{{  1405,  -1991,     31}, 0, { -4118,   5076}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{  1405,  -1070,     83}, 0, { -4118,  -4120}, {0xad, 0x15, 0x5c, 0xff}}},\n    {{{  1405,  -1070,     31}, 0, { -4118,  -4120}, {0xb5, 0x2b, 0xa4, 0xff}}},\n    {{{  1405,  -1991,     83}, 0, { -4118,   5076}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  2275,   -835,   1664}, 0, {  4566,  -3908}, {0xb6, 0xd5, 0xa4, 0xff}}},\n    {{{  2327,  -1735,   1664}, 0, {  5078,   5076}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  2275,  -1735,   1664}, 0, {  4566,   5076}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{  2327,  -1735,   1715}, 0, {  5078,   5076}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{  2327,   -814,   1664}, 0, {  5078,  -4120}, {0x53, 0x16, 0xa4, 0xff}}},\n    {{{  2327,   -814,   1715}, 0, {  5078,  -4120}, {0x4a, 0x2c, 0x5c, 0xff}}},\n};\n\n// 0x07003590 - 0x07003690\nstatic const Vtx pss_seg7_vertex_07003590[] = {\n    {{{  2275,  -1735,   1664}, 0, {  4566,   5076}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{  2275,  -1735,   1715}, 0, {  4566,   5076}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  2275,   -835,   1715}, 0, {  4566,  -3908}, {0xad, 0xeb, 0x5c, 0xff}}},\n    {{{  2275,   -835,   1664}, 0, {  4566,  -3908}, {0xb6, 0xd5, 0xa4, 0xff}}},\n    {{{  2254,   -814,   1715}, 0, {  4356,  -4120}, {0xd5, 0xb6, 0x5c, 0xff}}},\n    {{{  2327,   -814,   1715}, 0, {  5078,  -4120}, {0x4a, 0x2c, 0x5c, 0xff}}},\n    {{{  2275,   -763,   1715}, 0, {  4566,  -4632}, {0x15, 0x53, 0x5c, 0xff}}},\n    {{{  2254,   -814,   1664}, 0, {  4356,  -4120}, {0xeb, 0xad, 0xa4, 0xff}}},\n    {{{  2327,   -814,   1664}, 0, {  5078,  -4120}, {0x53, 0x16, 0xa4, 0xff}}},\n    {{{  2327,  -1735,   1664}, 0, {  5078,   5076}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  2327,  -1735,   1715}, 0, {  5078,   5076}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{  1477,   -814,   1715}, 0, { -3396,  -4120}, {0x15, 0xad, 0x5c, 0xff}}},\n    {{{  1456,   -763,   1715}, 0, { -3606,  -4632}, {0xd5, 0x4a, 0x5c, 0xff}}},\n    {{{  1405,   -814,   1664}, 0, { -4118,  -4120}, {0xb6, 0x2b, 0xa4, 0xff}}},\n    {{{  1405,   -814,   1715}, 0, { -4118,  -4120}, {0xad, 0x15, 0x5c, 0xff}}},\n    {{{  1477,   -814,   1664}, 0, { -3396,  -4120}, {0x2b, 0xb6, 0xa4, 0xff}}},\n};\n\n// 0x07003690 - 0x07003770\nstatic const Vtx pss_seg7_vertex_07003690[] = {\n    {{{  1477,   -814,   1664}, 0, { -3396,  -4120}, {0x2b, 0xb6, 0xa4, 0xff}}},\n    {{{  2275,   -763,   1664}, 0, {  4566,  -4632}, {0x2b, 0x4b, 0xa4, 0xff}}},\n    {{{  2254,   -814,   1664}, 0, {  4356,  -4120}, {0xeb, 0xad, 0xa4, 0xff}}},\n    {{{  2327,   -814,   1664}, 0, {  5078,  -4120}, {0x53, 0x16, 0xa4, 0xff}}},\n    {{{  1456,   -835,   1715}, 0, { -3606,  -3908}, {0x4a, 0xd5, 0x5c, 0xff}}},\n    {{{  1477,   -814,   1715}, 0, { -3396,  -4120}, {0x15, 0xad, 0x5c, 0xff}}},\n    {{{  1456,   -763,   1715}, 0, { -3606,  -4632}, {0xd5, 0x4a, 0x5c, 0xff}}},\n    {{{  1405,   -814,   1715}, 0, { -4118,  -4120}, {0xad, 0x15, 0x5c, 0xff}}},\n    {{{  1456,   -835,   1664}, 0, { -3606,  -3908}, {0x53, 0xeb, 0xa4, 0xff}}},\n    {{{  1456,   -763,   1664}, 0, { -3606,  -4632}, {0xeb, 0x53, 0xa4, 0xff}}},\n    {{{  1456,  -1735,   1715}, 0, { -3606,   5076}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{  1405,  -1735,   1715}, 0, { -4118,   5076}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  1456,  -1735,   1664}, 0, { -3606,   5076}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  1405,   -814,   1664}, 0, { -4118,  -4120}, {0xb6, 0x2b, 0xa4, 0xff}}},\n};\n\n// 0x07003770 - 0x07003860\nstatic const Vtx pss_seg7_vertex_07003770[] = {\n    {{{ -5026,  -5058,   6627}, 0, {  5486,   5934}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -5026,  -2027,   6627}, 0, {  5486,  -6164}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{ -7688,  -2027,   6627}, 0, { -5140,  -6164}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  1456,  -1735,   1664}, 0, { -3606,   5076}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  1405,  -1735,   1664}, 0, { -4118,   5076}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{  1405,   -814,   1664}, 0, { -4118,  -4120}, {0xb6, 0x2b, 0xa4, 0xff}}},\n    {{{  2327,   -814,   1715}, 0, {  5078,  -4120}, {0x4a, 0x2c, 0x5c, 0xff}}},\n    {{{  2327,   -814,   1664}, 0, {  5078,  -4120}, {0x53, 0x16, 0xa4, 0xff}}},\n    {{{  2275,   -763,   1664}, 0, {  4566,  -4632}, {0x2b, 0x4b, 0xa4, 0xff}}},\n    {{{  2275,   -763,   1715}, 0, {  4566,  -4632}, {0x15, 0x53, 0x5c, 0xff}}},\n    {{{  1456,   -763,   1664}, 0, { -3606,  -4632}, {0xeb, 0x53, 0xa4, 0xff}}},\n    {{{  1456,   -763,   1715}, 0, { -3606,  -4632}, {0xd5, 0x4a, 0x5c, 0xff}}},\n    {{{  1405,   -814,   1715}, 0, { -4118,  -4120}, {0xad, 0x15, 0x5c, 0xff}}},\n    {{{  1405,  -1735,   1715}, 0, { -4118,   5076}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{ -7688,  -5058,   6627}, 0, { -5140,   5934}, {0x8f, 0x00, 0x38, 0xff}}},\n};\n\n// 0x07003860 - 0x07003940\nstatic const Vtx pss_seg7_vertex_07003860[] = {\n    {{{ -7688,  -5058,   6627}, 0, { 18198,   5934}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -7688,  -2027,   6627}, 0, { 18198,  -6164}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{ -7688,  -2027,  -1778}, 0, {-15360,  -6164}, {0xbd, 0x21, 0x9b, 0xff}}},\n    {{{ -7688,  -5058,  -1778}, 0, {-15360,   5934}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -5026,  -5058,  -1778}, 0, { 16320,   5934}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -5026,  -2027,  -1778}, 0, { 16320,  -6164}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{ -5026,  -2027,   6627}, 0, {-17238,  -6164}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{ -5026,  -5058,   6627}, 0, {-17238,   5934}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -5845,  -3010,  -1778}, 0, { -1256,  -1218}, {0xca, 0xe5, 0x91, 0xff}}},\n    {{{ -5026,  -2027,  -1778}, 0, { -4526,  -5142}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{ -5026,  -5058,  -1778}, 0, { -4526,   6956}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -5845,  -5058,  -1778}, 0, { -1256,   6956}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -7688,  -2027,  -1778}, 0, {  6100,  -5142}, {0xbd, 0x21, 0x9b, 0xff}}},\n    {{{ -6869,  -3010,  -1778}, 0, {  2830,  -1218}, {0x20, 0xbf, 0x98, 0xff}}},\n};\n\n// 0x07003940 - 0x07003A40\nstatic const Vtx pss_seg7_vertex_07003940[] = {\n    {{{ -6869,  -3563,   4067}, 0, {  2830,  -3098}, {0x64, 0xd6, 0x41, 0xff}}},\n    {{{ -6920,  -3460,   4118}, 0, {  2626,  -3506}, {0x20, 0xd7, 0x73, 0xff}}},\n    {{{ -6920,  -4587,   4118}, 0, {  2626,    990}, {0x50, 0x38, 0x50, 0xff}}},\n    {{{ -6869,  -3010,  -1778}, 0, {  2830,  -1218}, {0x20, 0xbf, 0x98, 0xff}}},\n    {{{ -7688,  -5058,  -1778}, 0, {  6100,   6956}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -7688,  -2027,  -1778}, 0, {  6100,  -5142}, {0xbd, 0x21, 0x9b, 0xff}}},\n    {{{ -6869,  -5058,  -1778}, 0, {  2830,   6956}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -7688,  -2027,   6627}, 0, { -5114,  16194}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{ -5026,  -2027,   6627}, 0, {  5512,  16194}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{ -5026,  -2027,  -1778}, 0, {  5512, -17364}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{ -7688,  -2027,  -1778}, 0, { -5114, -17364}, {0xbd, 0x21, 0x9b, 0xff}}},\n    {{{ -6869,  -4587,   4067}, 0, {  2830,    990}, {0x3d, 0x6b, 0x1c, 0xff}}},\n    {{{ -5845,  -3563,   4067}, 0, {  6918,  -3098}, {0xcb, 0xa7, 0x48, 0xff}}},\n    {{{ -6869,  -4034,  -1778}, 0, { 20912,  -1218}, {0x59, 0x59, 0x0a, 0xff}}},\n    {{{ -6869,  -3563,   4067}, 0, { -2482,  -3098}, {0x64, 0xd6, 0x41, 0xff}}},\n    {{{ -6869,  -4587,   4067}, 0, { -2482,    990}, {0x3d, 0x6b, 0x1c, 0xff}}},\n};\n\n// 0x07003A40 - 0x07003B30\nstatic const Vtx pss_seg7_vertex_07003A40[] = {\n    {{{ -6920,  -3460,   4118}, 0, {  2626,  -3506}, {0x20, 0xd7, 0x73, 0xff}}},\n    {{{ -5845,  -3563,   4067}, 0, {  6918,  -3098}, {0xcb, 0xa7, 0x48, 0xff}}},\n    {{{ -5794,  -3460,   4118}, 0, {  7122,  -3506}, {0xbf, 0xec, 0x6a, 0xff}}},\n    {{{ -5845,  -4587,   4067}, 0, {  6918,    990}, {0xb2, 0x5b, 0x27, 0xff}}},\n    {{{ -5794,  -4587,   4118}, 0, {  7122,    990}, {0xd8, 0x71, 0x28, 0xff}}},\n    {{{ -5845,  -4587,   4067}, 0, {  4056,    990}, {0xb2, 0x5b, 0x27, 0xff}}},\n    {{{ -5845,  -3563,   4067}, 0, {  4056,  -3098}, {0xcb, 0xa7, 0x48, 0xff}}},\n    {{{ -5845,  -3010,  -1778}, 0, {-19282,  -5306}, {0xca, 0xe5, 0x91, 0xff}}},\n    {{{ -5845,  -4034,  -1778}, 0, {-19282,  -1218}, {0xb4, 0x65, 0x09, 0xff}}},\n    {{{ -6869,  -4034,  -1778}, 0, { 20912,  -1218}, {0x59, 0x59, 0x0a, 0xff}}},\n    {{{ -6869,  -3010,  -1778}, 0, { 20912,  -5306}, {0x20, 0xbf, 0x98, 0xff}}},\n    {{{ -6869,  -3563,   4067}, 0, { -2482,  -3098}, {0x64, 0xd6, 0x41, 0xff}}},\n    {{{ -6534,   3502,   1059}, 0, {  3834,    296}, {0x58, 0x56, 0xe4, 0xff}}},\n    {{{ -6534,   4014,   1059}, 0, {  3834,  -1748}, {0x4c, 0xa3, 0xda, 0xff}}},\n    {{{ -5957,   3871,   1926}, 0, {  -320,  -1174}, {0x34, 0xa3, 0xbc, 0xff}}},\n};\n\n// 0x07003B30 - 0x07003C20\nstatic const Vtx pss_seg7_vertex_07003B30[] = {\n    {{{  3072,   6144,  -6143}, 0, {  3546,   1000}, {0xef, 0x4a, 0x65, 0xff}}},\n    {{{  3226,   6144,  -6143}, 0, {  3954,   1000}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3226,   6656,  -6143}, 0, {  3954,  -1042}, {0x00, 0xc8, 0x71, 0xff}}},\n    {{{  3072,   6656,  -6143}, 0, {  3546,  -1042}, {0x0c, 0x90, 0x38, 0xff}}},\n    {{{ -5095,   3185,   2438}, 0, {  3852,    540}, {0x2c, 0x57, 0xb0, 0xff}}},\n    {{{ -4057,   3523,   2698}, 0, {  -418,   -810}, {0x6a, 0xdd, 0xc5, 0xff}}},\n    {{{ -4057,   3011,   2698}, 0, {  -418,   1232}, {0x15, 0x59, 0xa9, 0xff}}},\n    {{{ -5095,   3697,   2438}, 0, {  3852,  -1504}, {0x17, 0xa6, 0xab, 0xff}}},\n    {{{ -5957,   3359,   1926}, 0, {  3766,   -156}, {0x45, 0x56, 0xc3, 0xff}}},\n    {{{ -5957,   3871,   1926}, 0, {  3766,  -2200}, {0x34, 0xa3, 0xbc, 0xff}}},\n    {{{ -5095,   3697,   2438}, 0, {  -234,  -1504}, {0x17, 0xa6, 0xab, 0xff}}},\n    {{{ -5095,   3185,   2438}, 0, {  -234,    540}, {0x2c, 0x57, 0xb0, 0xff}}},\n    {{{ -6647,   4157,  -3992}, 0, {  3628,    748}, {0x58, 0x56, 0x1c, 0xff}}},\n    {{{ -6710,   4536,  -3107}, 0, {    88,   -766}, {0x4a, 0x9a, 0xf6, 0xff}}},\n    {{{ -6710,   4024,  -3107}, 0, {    88,   1276}, {0x5a, 0x57, 0x0e, 0xff}}},\n};\n\n// 0x07003C20 - 0x07003D00\nstatic const Vtx pss_seg7_vertex_07003C20[] = {\n    {{{ -6534,   3502,   1059}, 0, {  3834,    296}, {0x58, 0x56, 0xe4, 0xff}}},\n    {{{ -5957,   3871,   1926}, 0, {  -320,  -1174}, {0x34, 0xa3, 0xbc, 0xff}}},\n    {{{ -5957,   3359,   1926}, 0, {  -320,    870}, {0x45, 0x56, 0xc3, 0xff}}},\n    {{{ -6710,   3615,      5}, 0, {  4016,    870}, {0x5c, 0x57, 0x00, 0xff}}},\n    {{{ -6710,   4127,      5}, 0, {  4016,  -1174}, {0x56, 0xa5, 0xef, 0xff}}},\n    {{{ -6534,   4014,   1059}, 0, {  -250,   -726}, {0x4c, 0xa3, 0xda, 0xff}}},\n    {{{ -6534,   3502,   1059}, 0, {  -250,   1316}, {0x58, 0x56, 0xe4, 0xff}}},\n    {{{ -6710,   4024,  -3107}, 0, { 12358,   -768}, {0x5a, 0x57, 0x0e, 0xff}}},\n    {{{ -6710,   4536,  -3107}, 0, { 12358,  -2812}, {0x4a, 0x9a, 0xf6, 0xff}}},\n    {{{ -6710,   4127,      5}, 0, {   -68,  -1176}, {0x56, 0xa5, 0xef, 0xff}}},\n    {{{ -6710,   3615,      5}, 0, {   -68,    868}, {0x5c, 0x57, 0x00, 0xff}}},\n    {{{ -6647,   4157,  -3992}, 0, {  3628,    748}, {0x58, 0x56, 0x1c, 0xff}}},\n    {{{ -6647,   4669,  -3992}, 0, {  3628,  -1296}, {0x67, 0xb8, 0x11, 0xff}}},\n    {{{ -6710,   4536,  -3107}, 0, {    88,   -766}, {0x4a, 0x9a, 0xf6, 0xff}}},\n};\n\n// 0x07003D00 - 0x07003DF0\nstatic const Vtx pss_seg7_vertex_07003D00[] = {\n    {{{ -4313,   4536,  -6087}, 0, {  2670,    264}, {0x07, 0x57, 0x5b, 0xff}}},\n    {{{ -4313,   5048,  -6087}, 0, {  2670,  -1780}, {0x17, 0xa5, 0x55, 0xff}}},\n    {{{ -5036,   4977,  -5904}, 0, {  -308,  -1494}, {0x26, 0xa3, 0x4d, 0xff}}},\n    {{{ -6323,   4291,  -4847}, 0, {  3192,    220}, {0x4c, 0x55, 0x36, 0xff}}},\n    {{{ -6323,   4803,  -4847}, 0, {  3192,  -1824}, {0x4c, 0xa2, 0x25, 0xff}}},\n    {{{ -6647,   4669,  -3992}, 0, {  -458,  -1294}, {0x67, 0xb8, 0x11, 0xff}}},\n    {{{ -6647,   4157,  -3992}, 0, {  -458,    750}, {0x58, 0x56, 0x1c, 0xff}}},\n    {{{ -5753,   4393,  -5488}, 0, {  3546,    836}, {0x37, 0x55, 0x4c, 0xff}}},\n    {{{ -6323,   4803,  -4847}, 0, {   122,   -798}, {0x4c, 0xa2, 0x25, 0xff}}},\n    {{{ -6323,   4291,  -4847}, 0, {   122,   1244}, {0x4c, 0x55, 0x36, 0xff}}},\n    {{{ -5753,   4905,  -5488}, 0, {  3546,  -1208}, {0x3b, 0xa2, 0x3d, 0xff}}},\n    {{{ -5036,   4465,  -5904}, 0, {  2762,    552}, {0x1e, 0x56, 0x57, 0xff}}},\n    {{{ -5036,   4977,  -5904}, 0, {  2762,  -1492}, {0x26, 0xa3, 0x4d, 0xff}}},\n    {{{ -5753,   4905,  -5488}, 0, {  -546,  -1206}, {0x3b, 0xa2, 0x3d, 0xff}}},\n    {{{ -5753,   4393,  -5488}, 0, {  -546,    838}, {0x37, 0x55, 0x4c, 0xff}}},\n};\n\n// 0x07003DF0 - 0x07003EE0\nstatic const Vtx pss_seg7_vertex_07003DF0[] = {\n    {{{  3226,   6144,  -5119}, 0, {     0,   1002}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3072,   6656,  -5119}, 0, {   376,  -1040}, {0x06, 0xc8, 0x8f, 0xff}}},\n    {{{  3226,   6656,  -5119}, 0, {     0,  -1040}, {0x00, 0x8f, 0xc8, 0xff}}},\n    {{{ -4313,   4536,  -6087}, 0, {  2670,    264}, {0x07, 0x57, 0x5b, 0xff}}},\n    {{{ -5036,   4977,  -5904}, 0, {  -308,  -1494}, {0x26, 0xa3, 0x4d, 0xff}}},\n    {{{ -5036,   4465,  -5904}, 0, {  -308,    550}, {0x1e, 0x56, 0x57, 0xff}}},\n    {{{ -3603,   4608,  -6143}, 0, {  2444,    998}, {0xf8, 0x58, 0x5a, 0xff}}},\n    {{{ -3603,   5120,  -6143}, 0, {  2444,  -1044}, {0x11, 0xa7, 0x58, 0xff}}},\n    {{{ -4313,   5048,  -6087}, 0, {  -398,   -758}, {0x17, 0xa5, 0x55, 0xff}}},\n    {{{ -4313,   4536,  -6087}, 0, {  -398,   1284}, {0x07, 0x57, 0x5b, 0xff}}},\n    {{{  3072,   6144,  -6143}, 0, {  3546,   1000}, {0xef, 0x4a, 0x65, 0xff}}},\n    {{{  3072,   6656,  -6143}, 0, {  3546,  -1042}, {0x0c, 0x90, 0x38, 0xff}}},\n    {{{ -3603,   5120,  -6143}, 0, {-23104,   5088}, {0x11, 0xa7, 0x58, 0xff}}},\n    {{{ -3603,   4608,  -6143}, 0, {-23104,   7132}, {0xf8, 0x58, 0x5a, 0xff}}},\n    {{{  3072,   6144,  -5119}, 0, {   376,   1002}, {0xf4, 0x37, 0x8f, 0xff}}},\n};\n\n// 0x07003EE0 - 0x07003FD0\nstatic const Vtx pss_seg7_vertex_07003EE0[] = {\n    {{{ -5233,   3297,   1164}, 0, {  2618,   2132}, {0xcd, 0x5a, 0x48, 0xff}}},\n    {{{ -5233,   3809,   1164}, 0, {  2618,     90}, {0xba, 0xa8, 0x39, 0xff}}},\n    {{{ -5560,   3953,    674}, 0, {   266,   -482}, {0xa9, 0xa8, 0x18, 0xff}}},\n    {{{ -3563,   4608,  -5119}, 0, { 26868,   7134}, {0xec, 0x57, 0xa7, 0xff}}},\n    {{{ -3563,   5120,  -5119}, 0, { 26868,   5090}, {0x0d, 0xa8, 0xa6, 0xff}}},\n    {{{  3072,   6656,  -5119}, 0, {   376,  -1040}, {0x06, 0xc8, 0x8f, 0xff}}},\n    {{{  3072,   6144,  -5119}, 0, {   376,   1002}, {0xf4, 0x37, 0x8f, 0xff}}},\n    {{{ -3930,   3011,   1674}, 0, {  3162,   1228}, {0x00, 0x58, 0x5a, 0xff}}},\n    {{{ -4701,   3666,   1481}, 0, {   -10,  -1386}, {0xd2, 0xa8, 0x4e, 0xff}}},\n    {{{ -4701,   3154,   1481}, 0, {   -10,    658}, {0xeb, 0x59, 0x57, 0xff}}},\n    {{{ -3930,   3523,   1674}, 0, {  3162,   -814}, {0x69, 0xc2, 0x21, 0xff}}},\n    {{{ -4701,   3154,   1481}, 0, {  3052,   1680}, {0xeb, 0x59, 0x57, 0xff}}},\n    {{{ -5233,   3809,   1164}, 0, {   578,   -934}, {0xba, 0xa8, 0x39, 0xff}}},\n    {{{ -5233,   3297,   1164}, 0, {   578,   1108}, {0xcd, 0x5a, 0x48, 0xff}}},\n    {{{ -4701,   3666,   1481}, 0, {  3052,   -362}, {0xd2, 0xa8, 0x4e, 0xff}}},\n};\n\n// 0x07003FD0 - 0x070040C0\nstatic const Vtx pss_seg7_vertex_07003FD0[] = {\n    {{{ -5686,   3994,  -3071}, 0, {  3662,   1398}, {0xa8, 0x5a, 0x08, 0xff}}},\n    {{{ -5636,   4608,  -3769}, 0, {   866,  -1054}, {0xb6, 0x9e, 0xe4, 0xff}}},\n    {{{ -5636,   4096,  -3769}, 0, {   866,    990}, {0xa9, 0x5b, 0xf8, 0xff}}},\n    {{{ -5233,   3297,   1164}, 0, {  2618,   2132}, {0xcd, 0x5a, 0x48, 0xff}}},\n    {{{ -5560,   3953,    674}, 0, {   266,   -482}, {0xa9, 0xa8, 0x18, 0xff}}},\n    {{{ -5560,   3441,    674}, 0, {   266,   1560}, {0xb3, 0x5a, 0x2a, 0xff}}},\n    {{{ -5560,   3441,    674}, 0, {  3332,   1562}, {0xb3, 0x5a, 0x2a, 0xff}}},\n    {{{ -5560,   3953,    674}, 0, {  3332,   -480}, {0xa9, 0xa8, 0x18, 0xff}}},\n    {{{ -5686,   4096,    -79}, 0, {   280,  -1052}, {0xa5, 0xa8, 0xfd, 0xff}}},\n    {{{ -5686,   3584,    -79}, 0, {   280,    990}, {0xa9, 0x5a, 0x12, 0xff}}},\n    {{{ -5686,   3584,    -79}, 0, { 12542,   3034}, {0xa9, 0x5a, 0x12, 0xff}}},\n    {{{ -5686,   4506,  -3071}, 0, {   598,   -644}, {0x97, 0xbc, 0xf4, 0xff}}},\n    {{{ -5686,   3994,  -3071}, 0, {   598,   1398}, {0xa8, 0x5a, 0x08, 0xff}}},\n    {{{ -5686,   4096,    -79}, 0, { 12542,    990}, {0xa5, 0xa8, 0xfd, 0xff}}},\n    {{{ -5686,   4506,  -3071}, 0, {  3662,   -644}, {0x97, 0xbc, 0xf4, 0xff}}},\n};\n\n// 0x070040C0 - 0x070041B0\nstatic const Vtx pss_seg7_vertex_070040C0[] = {\n    {{{ -4646,   4403,  -4947}, 0, {  2642,   1812}, {0xd4, 0x5a, 0xb3, 0xff}}},\n    {{{ -4646,   4915,  -4947}, 0, {  2642,   -230}, {0xe8, 0xa9, 0xa8, 0xff}}},\n    {{{ -4146,   5018,  -5073}, 0, {   582,   -638}, {0xfd, 0xa8, 0xa5, 0xff}}},\n    {{{ -5636,   4096,  -3769}, 0, {  2910,   2010}, {0xa9, 0x5b, 0xf8, 0xff}}},\n    {{{ -5636,   4608,  -3769}, 0, {  2910,      0}, {0xb6, 0x9e, 0xe4, 0xff}}},\n    {{{ -5432,   4710,  -4308}, 0, {   612,   -440}, {0xb6, 0xaa, 0xc9, 0xff}}},\n    {{{ -5432,   4198,  -4308}, 0, {   612,   1602}, {0xb1, 0x5c, 0xdd, 0xff}}},\n    {{{ -5432,   4198,  -4308}, 0, {  2656,   1602}, {0xb1, 0x5c, 0xdd, 0xff}}},\n    {{{ -5097,   4813,  -4685}, 0, {   644,   -848}, {0xce, 0xaa, 0xb3, 0xff}}},\n    {{{ -5097,   4301,  -4685}, 0, {   644,   1194}, {0xc1, 0x5b, 0xc4, 0xff}}},\n    {{{ -5432,   4710,  -4308}, 0, {  2656,   -440}, {0xb6, 0xaa, 0xc9, 0xff}}},\n    {{{ -5097,   4301,  -4685}, 0, {  2690,   1196}, {0xc1, 0x5b, 0xc4, 0xff}}},\n    {{{ -5097,   4813,  -4685}, 0, {  2690,   -846}, {0xce, 0xaa, 0xb3, 0xff}}},\n    {{{ -4646,   4915,  -4947}, 0, {   608,  -1254}, {0xe8, 0xa9, 0xa8, 0xff}}},\n    {{{ -4646,   4403,  -4947}, 0, {   608,    790}, {0xd4, 0x5a, 0xb3, 0xff}}},\n};\n\n// 0x070041B0 - 0x070042A0\nstatic const Vtx pss_seg7_vertex_070041B0[] = {\n    {{{ -3930,   2601,   1059}, 0, {  6290,   2866}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3930,   4137,   1059}, 0, {  6290,  -3264}, {0x7e, 0x03, 0x03, 0xff}}},\n    {{{ -3930,   3523,   1674}, 0, {  3838,   -810}, {0x69, 0xc2, 0x21, 0xff}}},\n    {{{ -4646,   4403,  -4947}, 0, {  2642,   1812}, {0xd4, 0x5a, 0xb3, 0xff}}},\n    {{{ -4146,   5018,  -5073}, 0, {   582,   -638}, {0xfd, 0xa8, 0xa5, 0xff}}},\n    {{{ -4146,   4506,  -5073}, 0, {   582,   1404}, {0xe6, 0x59, 0xaa, 0xff}}},\n    {{{ -4146,   4506,  -5073}, 0, {  2628,   1406}, {0xe6, 0x59, 0xaa, 0xff}}},\n    {{{ -4146,   5018,  -5073}, 0, {  2628,   -636}, {0xfd, 0xa8, 0xa5, 0xff}}},\n    {{{ -3563,   5120,  -5119}, 0, {   294,  -1044}, {0x0d, 0xa8, 0xa6, 0xff}}},\n    {{{ -3563,   4608,  -5119}, 0, {   294,    998}, {0xec, 0x57, 0xa7, 0xff}}},\n    {{{  3072,   6656,  -6143}, 0, {  4056,   -632}, {0x0c, 0x90, 0x38, 0xff}}},\n    {{{  3226,   6656,  -6143}, 0, {  4056,   -632}, {0x00, 0xc8, 0x71, 0xff}}},\n    {{{  3226,   6656,  -5119}, 0, {  2012,   -632}, {0x00, 0x8f, 0xc8, 0xff}}},\n    {{{  3072,   6656,  -5119}, 0, {  2012,   -632}, {0x06, 0xc8, 0x8f, 0xff}}},\n    {{{ -3930,   2601,   1674}, 0, {  3838,   2866}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070042A0 - 0x07004340\nstatic const Vtx pss_seg7_vertex_070042A0[] = {\n    {{{ -4057,   4137,   3312}, 0, { -2700,  -3264}, {0x7e, 0xfe, 0x07, 0xff}}},\n    {{{ -4057,   3523,   2698}, 0, {  -248,   -810}, {0x6a, 0xdd, 0xc5, 0xff}}},\n    {{{ -3930,   3523,   1674}, 0, {  3838,   -810}, {0x69, 0xc2, 0x21, 0xff}}},\n    {{{ -3930,   4137,   1059}, 0, {  6290,  -3264}, {0x7e, 0x03, 0x03, 0xff}}},\n    {{{ -4057,   2601,   3312}, 0, { -2700,   2866}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4057,   2601,   2698}, 0, {  -248,   2866}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -5794,  -4587,   4118}, 0, {  2830,   1006}, {0xd8, 0x71, 0x28, 0xff}}},\n    {{{ -6869,  -4587,   4067}, 0, { -1460,    498}, {0x3d, 0x6b, 0x1c, 0xff}}},\n    {{{ -6920,  -4587,   4118}, 0, { -1666,   1006}, {0x50, 0x38, 0x50, 0xff}}},\n    {{{ -5845,  -4587,   4067}, 0, {  2626,    498}, {0xb2, 0x5b, 0x27, 0xff}}},\n};\n\n// 0x07004340 - 0x07004430\nstatic const Vtx pss_seg7_vertex_07004340[] = {\n    {{{   527, -10034,  -4754}, 0, {   990,  28732}, {0x29, 0x00, 0x78, 0xff}}},\n    {{{   527,  -1387,  -4754}, 0, {   990,      0}, {0x42, 0x4c, 0x4c, 0xff}}},\n    {{{   220,  -1387,  -4754}, 0, {     0,      0}, {0xdf, 0x4c, 0x5f, 0xff}}},\n    {{{   220, -10034,  -5286}, 0, {   990,  28732}, {0xd7, 0x00, 0x88, 0xff}}},\n    {{{   527,  -1387,  -5286}, 0, {     0,      0}, {0x26, 0x2c, 0x90, 0xff}}},\n    {{{   527, -10034,  -5286}, 0, {     0,  28732}, {0x53, 0x00, 0xa0, 0xff}}},\n    {{{   220,  -1387,  -5286}, 0, {   990,      0}, {0xd3, 0x69, 0xcb, 0xff}}},\n    {{{   527, -10034,  -5286}, 0, {   990,  28732}, {0x53, 0x00, 0xa0, 0xff}}},\n    {{{   527,  -1387,  -5286}, 0, {   990,      0}, {0x26, 0x2c, 0x90, 0xff}}},\n    {{{   681,  -1387,  -5020}, 0, {     0,      0}, {0x63, 0x4c, 0xed, 0xff}}},\n    {{{   681, -10034,  -5020}, 0, {     0,  28732}, {0x7c, 0x00, 0x18, 0xff}}},\n    {{{   681, -10034,  -5020}, 0, {   990,  28732}, {0x7c, 0x00, 0x18, 0xff}}},\n    {{{   527,  -1387,  -4754}, 0, {     0,      0}, {0x42, 0x4c, 0x4c, 0xff}}},\n    {{{   527, -10034,  -4754}, 0, {     0,  28732}, {0x29, 0x00, 0x78, 0xff}}},\n    {{{   681,  -1387,  -5020}, 0, {   990,      0}, {0x63, 0x4c, 0xed, 0xff}}},\n};\n\n// 0x07004430 - 0x07004520\nstatic const Vtx pss_seg7_vertex_07004430[] = {\n    {{{ -2641, -10034,  -5234}, 0, {   990,  23812}, {0xd7, 0x00, 0x88, 0xff}}},\n    {{{ -2334,  -2866,  -5234}, 0, {     0,      0}, {0x26, 0x2c, 0x90, 0xff}}},\n    {{{ -2334, -10034,  -5234}, 0, {     0,  23812}, {0x53, 0x00, 0xa0, 0xff}}},\n    {{{   527, -10034,  -4754}, 0, {   990,  28732}, {0x29, 0x00, 0x78, 0xff}}},\n    {{{   220,  -1387,  -4754}, 0, {     0,      0}, {0xdf, 0x4c, 0x5f, 0xff}}},\n    {{{   220, -10034,  -4754}, 0, {     0,  28732}, {0xad, 0x00, 0x60, 0xff}}},\n    {{{   220, -10034,  -4754}, 0, {   990,  28732}, {0xad, 0x00, 0x60, 0xff}}},\n    {{{   220,  -1387,  -4754}, 0, {   990,      0}, {0xdf, 0x4c, 0x5f, 0xff}}},\n    {{{    66,  -1387,  -5020}, 0, {     0,      0}, {0x8c, 0x2c, 0x16, 0xff}}},\n    {{{    66, -10034,  -5020}, 0, {     0,  28732}, {0x84, 0x00, 0xe8, 0xff}}},\n    {{{    66, -10034,  -5020}, 0, {   990,  28732}, {0x84, 0x00, 0xe8, 0xff}}},\n    {{{    66,  -1387,  -5020}, 0, {   990,      0}, {0x8c, 0x2c, 0x16, 0xff}}},\n    {{{   220,  -1387,  -5286}, 0, {     0,      0}, {0xd3, 0x69, 0xcb, 0xff}}},\n    {{{   220, -10034,  -5286}, 0, {     0,  28732}, {0xd7, 0x00, 0x88, 0xff}}},\n    {{{ -2641,  -2866,  -5234}, 0, {   990,      0}, {0xd3, 0x69, 0xcb, 0xff}}},\n};\n\n// 0x07004520 - 0x07004610\nstatic const Vtx pss_seg7_vertex_07004520[] = {\n    {{{ -2641, -10034,  -4702}, 0, {   990,  23812}, {0xc1, 0x00, 0x6e, 0xff}}},\n    {{{ -2795,  -2866,  -4968}, 0, {     0,      0}, {0x8c, 0x2c, 0x16, 0xff}}},\n    {{{ -2795, -10034,  -4968}, 0, {     0,  23812}, {0x84, 0x00, 0xe8, 0xff}}},\n    {{{ -2334, -10034,  -5234}, 0, {   990,  23812}, {0x53, 0x00, 0xa0, 0xff}}},\n    {{{ -2180,  -2866,  -4968}, 0, {     0,      0}, {0x63, 0x4c, 0xed, 0xff}}},\n    {{{ -2180, -10034,  -4968}, 0, {     0,  23812}, {0x7c, 0x00, 0x18, 0xff}}},\n    {{{ -2334,  -2866,  -5234}, 0, {   990,      0}, {0x26, 0x2c, 0x90, 0xff}}},\n    {{{ -2180, -10034,  -4968}, 0, {   990,  23812}, {0x7c, 0x00, 0x18, 0xff}}},\n    {{{ -2180,  -2866,  -4968}, 0, {   990,      0}, {0x63, 0x4c, 0xed, 0xff}}},\n    {{{ -2334,  -2866,  -4702}, 0, {     0,      0}, {0x36, 0x3f, 0x5f, 0xff}}},\n    {{{ -2334, -10034,  -4702}, 0, {     0,  23812}, {0x3f, 0x00, 0x6e, 0xff}}},\n    {{{ -2334, -10034,  -4702}, 0, {   990,  23812}, {0x3f, 0x00, 0x6e, 0xff}}},\n    {{{ -2334,  -2866,  -4702}, 0, {   990,      0}, {0x36, 0x3f, 0x5f, 0xff}}},\n    {{{ -2641, -10034,  -4702}, 0, {     0,  23812}, {0xc1, 0x00, 0x6e, 0xff}}},\n    {{{ -2641,  -2866,  -4702}, 0, {     0,      0}, {0xd7, 0x5f, 0x48, 0xff}}},\n};\n\n// 0x07004610 - 0x07004700\nstatic const Vtx pss_seg7_vertex_07004610[] = {\n    {{{ -4588, -10034,  -3251}, 0, {   990,  23176}, {0x53, 0x00, 0xa0, 0xff}}},\n    {{{ -4434,  -3057,  -2985}, 0, {     0,      0}, {0x63, 0x4c, 0xed, 0xff}}},\n    {{{ -4434, -10034,  -2985}, 0, {     0,  23176}, {0x7c, 0x00, 0x18, 0xff}}},\n    {{{ -2641, -10034,  -4702}, 0, {   990,  23812}, {0xc1, 0x00, 0x6e, 0xff}}},\n    {{{ -2641,  -2866,  -4702}, 0, {   990,      0}, {0xd7, 0x5f, 0x48, 0xff}}},\n    {{{ -2795,  -2866,  -4968}, 0, {     0,      0}, {0x8c, 0x2c, 0x16, 0xff}}},\n    {{{ -2795, -10034,  -4968}, 0, {   990,  23812}, {0x84, 0x00, 0xe8, 0xff}}},\n    {{{ -2641,  -2866,  -5234}, 0, {     0,      0}, {0xd3, 0x69, 0xcb, 0xff}}},\n    {{{ -2641, -10034,  -5234}, 0, {     0,  23812}, {0xd7, 0x00, 0x88, 0xff}}},\n    {{{ -2795,  -2866,  -4968}, 0, {   990,      0}, {0x8c, 0x2c, 0x16, 0xff}}},\n    {{{ -4895, -10034,  -3251}, 0, {   990,  23176}, {0xd7, 0x00, 0x89, 0xff}}},\n    {{{ -4588,  -3057,  -3251}, 0, {     0,      0}, {0x26, 0x2c, 0x90, 0xff}}},\n    {{{ -4588, -10034,  -3251}, 0, {     0,  23176}, {0x53, 0x00, 0xa0, 0xff}}},\n    {{{ -4895,  -3057,  -3251}, 0, {   990,      0}, {0xd3, 0x69, 0xcc, 0xff}}},\n    {{{ -4588,  -3057,  -3251}, 0, {   990,      0}, {0x26, 0x2c, 0x90, 0xff}}},\n};\n\n// 0x07004700 - 0x07004800\nstatic const Vtx pss_seg7_vertex_07004700[] = {\n    {{{ -5048, -10034,  -2985}, 0, {   990,  23176}, {0x84, 0x00, 0xe9, 0xff}}},\n    {{{ -4895,  -3057,  -3251}, 0, {     0,      0}, {0xd3, 0x69, 0xcc, 0xff}}},\n    {{{ -4895, -10034,  -3251}, 0, {     0,  23176}, {0xd7, 0x00, 0x89, 0xff}}},\n    {{{ -4434, -10034,  -2985}, 0, {   990,  23176}, {0x7c, 0x00, 0x18, 0xff}}},\n    {{{ -4434,  -3057,  -2985}, 0, {   990,      0}, {0x63, 0x4c, 0xed, 0xff}}},\n    {{{ -4588,  -3057,  -2719}, 0, {     0,      0}, {0x42, 0x4c, 0x4c, 0xff}}},\n    {{{ -4588, -10034,  -2719}, 0, {     0,  23176}, {0x29, 0x00, 0x78, 0xff}}},\n    {{{ -4588, -10034,  -2719}, 0, {   990,  23176}, {0x29, 0x00, 0x78, 0xff}}},\n    {{{ -4895,  -3057,  -2719}, 0, {     0,      0}, {0xdf, 0x4c, 0x5f, 0xff}}},\n    {{{ -4895, -10034,  -2719}, 0, {     0,  23176}, {0xad, 0x00, 0x5f, 0xff}}},\n    {{{ -4588,  -3057,  -2719}, 0, {   990,      0}, {0x42, 0x4c, 0x4c, 0xff}}},\n    {{{ -4895, -10034,  -2719}, 0, {   990,  23176}, {0xad, 0x00, 0x5f, 0xff}}},\n    {{{ -4895,  -3057,  -2719}, 0, {   990,      0}, {0xdf, 0x4c, 0x5f, 0xff}}},\n    {{{ -5048,  -3057,  -2985}, 0, {     0,      0}, {0x8c, 0x2c, 0x16, 0xff}}},\n    {{{ -5048, -10034,  -2985}, 0, {     0,  23176}, {0x84, 0x00, 0xe9, 0xff}}},\n    {{{ -5048,  -3057,  -2985}, 0, {   990,      0}, {0x8c, 0x2c, 0x16, 0xff}}},\n};\n\n// 0x07004800 - 0x070048E0\nstatic const Vtx pss_seg7_vertex_07004800[] = {\n    {{{  2598,    726,   1683}, 0, {     0,      0}, {0x6a, 0x3b, 0x23, 0xff}}},\n    {{{  2598,    214,   1580}, 0, {   990,   2012}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  2598,    726,   1580}, 0, {   990,      0}, {0x48, 0x28, 0xa1, 0xff}}},\n    {{{  2598,    214,   1683}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2471,    761,   2809}, 0, {     0,      0}, {0x6a, 0x3b, 0x22, 0xff}}},\n    {{{  2471,    249,   2707}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2471,    761,   2707}, 0, {   990,      0}, {0x49, 0x28, 0xa1, 0xff}}},\n    {{{  2471,    249,   2809}, 0, {     0,   2012}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  2275,  -1966,  -2810}, 0, {   888,    216}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{  1456,  -1966,  -2810}, 0, {    70,    216}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1354,  -2866,  -2810}, 0, {     0,   2012}, {0xba, 0x00, 0x69, 0xff}}},\n    {{{  2378,  -2866,  -2811}, 0, {   990,   2012}, {0x39, 0x00, 0x71, 0xff}}},\n    {{{  2378,  -1842,  -2811}, 0, {   990,      0}, {0x57, 0x2b, 0x51, 0xff}}},\n    {{{  2275,  -1842,  -2810}, 0, {   888,      0}, {0xcb, 0x6b, 0x28, 0xff}}},\n};\n\n// 0x070048E0 - 0x070049D0\nstatic const Vtx pss_seg7_vertex_070048E0[] = {\n    {{{  1184,  -2177,  -5235}, 0, {     0,      0}, {0xa7, 0x58, 0x12, 0xff}}},\n    {{{  1184,  -3201,  -5235}, 0, {     0,   2012}, {0x94, 0x00, 0x42, 0xff}}},\n    {{{  1309,  -3112,  -4698}, 0, {   990,   2012}, {0x83, 0x00, 0x15, 0xff}}},\n    {{{  1456,  -1966,  -2810}, 0, {    70,    216}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1354,  -1842,  -2810}, 0, {     0,      0}, {0xd4, 0x58, 0x4e, 0xff}}},\n    {{{  1354,  -2866,  -2810}, 0, {     0,   2012}, {0xba, 0x00, 0x69, 0xff}}},\n    {{{  1456,  -1842,  -2810}, 0, {    70,      0}, {0x6a, 0x34, 0x2d, 0xff}}},\n    {{{  1347,  -1996,  -4028}, 0, {     0,      0}, {0xa6, 0x58, 0xf7, 0xff}}},\n    {{{  1354,  -2866,  -2810}, 0, {   990,   2012}, {0xba, 0x00, 0x69, 0xff}}},\n    {{{  1354,  -1842,  -2810}, 0, {   990,      0}, {0xd4, 0x58, 0x4e, 0xff}}},\n    {{{  1347,  -3020,  -4028}, 0, {     0,   2012}, {0x82, 0x00, 0x05, 0xff}}},\n    {{{  1309,  -2088,  -4698}, 0, {     0,      0}, {0xa5, 0x58, 0xfe, 0xff}}},\n    {{{  1309,  -3112,  -4698}, 0, {     0,   2012}, {0x83, 0x00, 0x15, 0xff}}},\n    {{{  1347,  -3020,  -4028}, 0, {   990,   2012}, {0x82, 0x00, 0x05, 0xff}}},\n    {{{  1347,  -1996,  -4028}, 0, {   990,      0}, {0xa6, 0x58, 0xf7, 0xff}}},\n};\n\n// 0x070049D0 - 0x07004AC0\nstatic const Vtx pss_seg7_vertex_070049D0[] = {\n    {{{   308,  -2457,  -5717}, 0, {     0,      0}, {0xef, 0x55, 0x5c, 0xff}}},\n    {{{   308,  -3481,  -5717}, 0, {     0,   2012}, {0x12, 0x00, 0x7d, 0xff}}},\n    {{{   620,  -3381,  -5702}, 0, {   990,   2012}, {0xe8, 0x00, 0x7c, 0xff}}},\n    {{{  1184,  -2177,  -5235}, 0, {     0,      0}, {0xa7, 0x58, 0x12, 0xff}}},\n    {{{  1309,  -3112,  -4698}, 0, {   990,   2012}, {0x83, 0x00, 0x15, 0xff}}},\n    {{{  1309,  -2088,  -4698}, 0, {   990,      0}, {0xa5, 0x58, 0xfe, 0xff}}},\n    {{{   919,  -2267,  -5544}, 0, {     0,      0}, {0xb5, 0x57, 0x34, 0xff}}},\n    {{{   919,  -3291,  -5544}, 0, {     0,   2012}, {0xb8, 0x00, 0x68, 0xff}}},\n    {{{  1184,  -3201,  -5235}, 0, {   990,   2012}, {0x94, 0x00, 0x42, 0xff}}},\n    {{{  1184,  -2177,  -5235}, 0, {   990,      0}, {0xa7, 0x58, 0x12, 0xff}}},\n    {{{   620,  -2357,  -5702}, 0, {     0,      0}, {0xcb, 0x55, 0x4d, 0xff}}},\n    {{{   919,  -3291,  -5544}, 0, {   990,   2012}, {0xb8, 0x00, 0x68, 0xff}}},\n    {{{   919,  -2267,  -5544}, 0, {   990,      0}, {0xb5, 0x57, 0x34, 0xff}}},\n    {{{   620,  -3381,  -5702}, 0, {     0,   2012}, {0xe8, 0x00, 0x7c, 0xff}}},\n    {{{   620,  -2357,  -5702}, 0, {   990,      0}, {0xcb, 0x55, 0x4d, 0xff}}},\n};\n\n// 0x07004AC0 - 0x07004BB0\nstatic const Vtx pss_seg7_vertex_07004AC0[] = {\n    {{{  -598,  -2825,  -4492}, 0, {     0,      0}, {0x63, 0x46, 0x24, 0xff}}},\n    {{{  -465,  -3757,  -5061}, 0, {   990,   2012}, {0x78, 0x00, 0x28, 0xff}}},\n    {{{  -465,  -2733,  -5061}, 0, {   990,      0}, {0x4b, 0x58, 0x33, 0xff}}},\n    {{{   -31,  -2542,  -5634}, 0, {     0,      0}, {0x10, 0x56, 0x5b, 0xff}}},\n    {{{   -31,  -3566,  -5634}, 0, {     0,   2012}, {0x47, 0x00, 0x69, 0xff}}},\n    {{{   308,  -3481,  -5717}, 0, {   990,   2012}, {0x12, 0x00, 0x7d, 0xff}}},\n    {{{   308,  -2457,  -5717}, 0, {   990,      0}, {0xef, 0x55, 0x5c, 0xff}}},\n    {{{  -285,  -2640,  -5388}, 0, {     0,      0}, {0x37, 0x56, 0x4b, 0xff}}},\n    {{{  -285,  -3664,  -5388}, 0, {     0,   2012}, {0x68, 0x00, 0x47, 0xff}}},\n    {{{   -31,  -3566,  -5634}, 0, {   990,   2012}, {0x47, 0x00, 0x69, 0xff}}},\n    {{{   -31,  -2542,  -5634}, 0, {   990,      0}, {0x10, 0x56, 0x5b, 0xff}}},\n    {{{  -465,  -2733,  -5061}, 0, {     0,      0}, {0x4b, 0x58, 0x33, 0xff}}},\n    {{{  -285,  -3664,  -5388}, 0, {   990,   2012}, {0x68, 0x00, 0x47, 0xff}}},\n    {{{  -285,  -2640,  -5388}, 0, {   990,      0}, {0x37, 0x56, 0x4b, 0xff}}},\n    {{{  -465,  -3757,  -5061}, 0, {     0,   2012}, {0x78, 0x00, 0x28, 0xff}}},\n};\n\n// 0x07004BB0 - 0x07004CA0\nstatic const Vtx pss_seg7_vertex_07004BB0[] = {\n    {{{ -1863,  -2948,  -3044}, 0, {     0,      0}, {0x16, 0x59, 0x57, 0xff}}},\n    {{{ -1863,  -3972,  -3044}, 0, {     0,   2012}, {0x1e, 0x00, 0x7b, 0xff}}},\n    {{{ -1323,  -3931,  -3338}, 0, {   990,   2012}, {0x48, 0x00, 0x68, 0xff}}},\n    {{{  -598,  -2825,  -4492}, 0, {     0,      0}, {0x63, 0x46, 0x24, 0xff}}},\n    {{{  -598,  -3849,  -4492}, 0, {     0,   2012}, {0x78, 0x00, 0x28, 0xff}}},\n    {{{  -465,  -3757,  -5061}, 0, {   990,   2012}, {0x78, 0x00, 0x28, 0xff}}},\n    {{{  -860,  -2866,  -3832}, 0, {     0,      0}, {0x4b, 0x5a, 0x2f, 0xff}}},\n    {{{  -860,  -3890,  -3832}, 0, {     0,   2012}, {0x66, 0x00, 0x4a, 0xff}}},\n    {{{  -598,  -3849,  -4492}, 0, {   990,   2012}, {0x78, 0x00, 0x28, 0xff}}},\n    {{{  -598,  -2825,  -4492}, 0, {   990,      0}, {0x63, 0x46, 0x24, 0xff}}},\n    {{{ -1323,  -2907,  -3338}, 0, {     0,      0}, {0x36, 0x59, 0x47, 0xff}}},\n    {{{ -1323,  -3931,  -3338}, 0, {     0,   2012}, {0x48, 0x00, 0x68, 0xff}}},\n    {{{  -860,  -3890,  -3832}, 0, {   990,   2012}, {0x66, 0x00, 0x4a, 0xff}}},\n    {{{  -860,  -2866,  -3832}, 0, {   990,      0}, {0x4b, 0x5a, 0x2f, 0xff}}},\n    {{{ -1323,  -2907,  -3338}, 0, {   990,      0}, {0x36, 0x59, 0x47, 0xff}}},\n};\n\n// 0x07004CA0 - 0x07004D90\nstatic const Vtx pss_seg7_vertex_07004CA0[] = {\n    {{{ -4119,  -3468,  -3631}, 0, {     0,      0}, {0xd4, 0x57, 0x50, 0xff}}},\n    {{{ -4119,  -4492,  -3631}, 0, {     0,   2012}, {0xe1, 0x00, 0x7a, 0xff}}},\n    {{{ -3639,  -4402,  -3373}, 0, {   990,   2012}, {0xc3, 0x00, 0x6f, 0xff}}},\n    {{{ -2498,  -3091,  -2970}, 0, {     0,      0}, {0xee, 0x57, 0x5a, 0xff}}},\n    {{{ -1863,  -3972,  -3044}, 0, {   990,   2012}, {0x1e, 0x00, 0x7b, 0xff}}},\n    {{{ -1863,  -2948,  -3044}, 0, {   990,      0}, {0x16, 0x59, 0x57, 0xff}}},\n    {{{ -2498,  -4115,  -2970}, 0, {     0,   2012}, {0xf6, 0x00, 0x7e, 0xff}}},\n    {{{ -3155,  -3235,  -3092}, 0, {     0,      0}, {0xd4, 0x62, 0x41, 0xff}}},\n    {{{ -2498,  -4115,  -2970}, 0, {   990,   2012}, {0xf6, 0x00, 0x7e, 0xff}}},\n    {{{ -2498,  -3091,  -2970}, 0, {   990,      0}, {0xee, 0x57, 0x5a, 0xff}}},\n    {{{ -3155,  -4259,  -3092}, 0, {     0,   2012}, {0xce, 0x00, 0x74, 0xff}}},\n    {{{ -3639,  -3378,  -3373}, 0, {     0,      0}, {0xc5, 0x55, 0x48, 0xff}}},\n    {{{ -3639,  -4402,  -3373}, 0, {     0,   2012}, {0xc3, 0x00, 0x6f, 0xff}}},\n    {{{ -3155,  -4259,  -3092}, 0, {   990,   2012}, {0xce, 0x00, 0x74, 0xff}}},\n    {{{ -3155,  -3235,  -3092}, 0, {   990,      0}, {0xd4, 0x62, 0x41, 0xff}}},\n};\n\n// 0x07004D90 - 0x07004E80\nstatic const Vtx pss_seg7_vertex_07004D90[] = {\n    {{{ -5599,  -3740,  -3116}, 0, {     0,      0}, {0x43, 0x58, 0x3d, 0xff}}},\n    {{{ -5599,  -4764,  -3116}, 0, {     0,   2012}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{ -5267,  -4660,  -3493}, 0, {   990,   2012}, {0x51, 0x00, 0x61, 0xff}}},\n    {{{ -4119,  -3468,  -3631}, 0, {     0,      0}, {0xd4, 0x57, 0x50, 0xff}}},\n    {{{ -3639,  -4402,  -3373}, 0, {   990,   2012}, {0xc3, 0x00, 0x6f, 0xff}}},\n    {{{ -3639,  -3378,  -3373}, 0, {   990,      0}, {0xc5, 0x55, 0x48, 0xff}}},\n    {{{ -4716,  -3548,  -3712}, 0, {     0,      0}, {0xf7, 0x58, 0x5a, 0xff}}},\n    {{{ -4119,  -4492,  -3631}, 0, {   990,   2012}, {0xe1, 0x00, 0x7a, 0xff}}},\n    {{{ -4119,  -3468,  -3631}, 0, {   990,      0}, {0xd4, 0x57, 0x50, 0xff}}},\n    {{{ -4716,  -4572,  -3712}, 0, {     0,   2012}, {0x1a, 0x00, 0x7c, 0xff}}},\n    {{{ -5267,  -3636,  -3493}, 0, {     0,      0}, {0x20, 0x58, 0x55, 0xff}}},\n    {{{ -4716,  -4572,  -3712}, 0, {   990,   2012}, {0x1a, 0x00, 0x7c, 0xff}}},\n    {{{ -4716,  -3548,  -3712}, 0, {   990,      0}, {0xf7, 0x58, 0x5a, 0xff}}},\n    {{{ -5267,  -4660,  -3493}, 0, {     0,   2012}, {0x51, 0x00, 0x61, 0xff}}},\n    {{{ -5267,  -3636,  -3493}, 0, {   990,      0}, {0x20, 0x58, 0x55, 0xff}}},\n};\n\n// 0x07004E80 - 0x07004F70\nstatic const Vtx pss_seg7_vertex_07004E80[] = {\n    {{{ -6649,  -3638,  -3818}, 0, {     0,      0}, {0xaa, 0x58, 0xe3, 0xff}}},\n    {{{ -6942,  -4812,  -2815}, 0, {   990,   2012}, {0x84, 0x00, 0xe7, 0xff}}},\n    {{{ -6942,  -3788,  -2815}, 0, {   990,      0}, {0xa5, 0x57, 0x02, 0xff}}},\n    {{{ -5721,  -3839,  -2592}, 0, {     0,      0}, {0x56, 0x58, 0x1a, 0xff}}},\n    {{{ -5721,  -4863,  -2592}, 0, {     0,   2012}, {0x7e, 0x00, 0x0b, 0xff}}},\n    {{{ -5599,  -4764,  -3116}, 0, {   990,   2012}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{ -5599,  -3740,  -3116}, 0, {   990,      0}, {0x43, 0x58, 0x3d, 0xff}}},\n    {{{ -5743,  -3931,  -1777}, 0, {     0,      0}, {0x71, 0x38, 0x09, 0xff}}},\n    {{{ -5743,  -4955,  -1777}, 0, {     0,   2012}, {0x7e, 0x00, 0x03, 0xff}}},\n    {{{ -5721,  -4863,  -2592}, 0, {   990,   2012}, {0x7e, 0x00, 0x0b, 0xff}}},\n    {{{ -5721,  -3839,  -2592}, 0, {   990,      0}, {0x56, 0x58, 0x1a, 0xff}}},\n    {{{ -6942,  -3788,  -2815}, 0, {     0,      0}, {0xa5, 0x57, 0x02, 0xff}}},\n    {{{ -6942,  -4812,  -2815}, 0, {     0,   2012}, {0x84, 0x00, 0xe7, 0xff}}},\n    {{{ -6972,  -4955,  -1794}, 0, {   990,   2012}, {0x82, 0x00, 0xfd, 0xff}}},\n    {{{ -6972,  -3931,  -1794}, 0, {   990,      0}, {0xc6, 0x6f, 0x0d, 0xff}}},\n};\n\n// 0x07004F70 - 0x07005060\nstatic const Vtx pss_seg7_vertex_07004F70[] = {\n    {{{ -4001,  -3419,  -4822}, 0, {     0,      0}, {0x0b, 0x5a, 0xa8, 0xff}}},\n    {{{ -4001,  -4443,  -4822}, 0, {     0,   2012}, {0x26, 0x00, 0x87, 0xff}}},\n    {{{ -4919,  -4479,  -4866}, 0, {   990,   2012}, {0xf7, 0x00, 0x82, 0xff}}},\n    {{{ -6649,  -3638,  -3818}, 0, {     0,      0}, {0xaa, 0x58, 0xe3, 0xff}}},\n    {{{ -6649,  -4662,  -3818}, 0, {     0,   2012}, {0x9b, 0x00, 0xb4, 0xff}}},\n    {{{ -6942,  -4812,  -2815}, 0, {   990,   2012}, {0x84, 0x00, 0xe7, 0xff}}},\n    {{{ -5839,  -3487,  -4563}, 0, {     0,      0}, {0xc9, 0x59, 0xba, 0xff}}},\n    {{{ -5839,  -4511,  -4563}, 0, {     0,   2012}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -6649,  -4662,  -3818}, 0, {   990,   2012}, {0x9b, 0x00, 0xb4, 0xff}}},\n    {{{ -6649,  -3638,  -3818}, 0, {   990,      0}, {0xaa, 0x58, 0xe3, 0xff}}},\n    {{{ -4919,  -3455,  -4866}, 0, {     0,      0}, {0xec, 0x5a, 0xaa, 0xff}}},\n    {{{ -4919,  -4479,  -4866}, 0, {     0,   2012}, {0xf7, 0x00, 0x82, 0xff}}},\n    {{{ -5839,  -4511,  -4563}, 0, {   990,   2012}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -5839,  -3487,  -4563}, 0, {   990,      0}, {0xc9, 0x59, 0xba, 0xff}}},\n    {{{ -4919,  -3455,  -4866}, 0, {   990,      0}, {0xec, 0x5a, 0xaa, 0xff}}},\n};\n\n// 0x07005060 - 0x07005150\nstatic const Vtx pss_seg7_vertex_07005060[] = {\n    {{{ -2204,  -3080,  -4121}, 0, {     0,      0}, {0xd2, 0x55, 0xae, 0xff}}},\n    {{{ -2204,  -4104,  -4121}, 0, {     0,   2012}, {0xda, 0x00, 0x87, 0xff}}},\n    {{{ -2459,  -4206,  -4116}, 0, {   990,   2012}, {0x07, 0x00, 0x82, 0xff}}},\n    {{{ -3295,  -3378,  -4494}, 0, {     0,      0}, {0x1e, 0x59, 0xac, 0xff}}},\n    {{{ -4001,  -4443,  -4822}, 0, {   990,   2012}, {0x26, 0x00, 0x87, 0xff}}},\n    {{{ -4001,  -3419,  -4822}, 0, {   990,      0}, {0x0b, 0x5a, 0xa8, 0xff}}},\n    {{{ -3295,  -4402,  -4494}, 0, {     0,   2012}, {0x3b, 0x00, 0x90, 0xff}}},\n    {{{ -2736,  -3281,  -4177}, 0, {     0,      0}, {0x1a, 0x44, 0x99, 0xff}}},\n    {{{ -3295,  -4402,  -4494}, 0, {   990,   2012}, {0x3b, 0x00, 0x90, 0xff}}},\n    {{{ -3295,  -3378,  -4494}, 0, {   990,      0}, {0x1e, 0x59, 0xac, 0xff}}},\n    {{{ -2736,  -4305,  -4177}, 0, {     0,   2012}, {0x27, 0x00, 0x88, 0xff}}},\n    {{{ -2459,  -3182,  -4116}, 0, {     0,      0}, {0xef, 0x54, 0xa4, 0xff}}},\n    {{{ -2459,  -4206,  -4116}, 0, {     0,   2012}, {0x07, 0x00, 0x82, 0xff}}},\n    {{{ -2736,  -4305,  -4177}, 0, {   990,   2012}, {0x27, 0x00, 0x88, 0xff}}},\n    {{{ -2736,  -3281,  -4177}, 0, {   990,      0}, {0x1a, 0x44, 0x99, 0xff}}},\n};\n\n// 0x07005150 - 0x07005240\nstatic const Vtx pss_seg7_vertex_07005150[] = {\n    {{{ -1730,  -2825,  -4882}, 0, {     0,      0}, {0xb0, 0x62, 0x00, 0xff}}},\n    {{{ -1819,  -3937,  -4474}, 0, {   990,   2012}, {0x89, 0x00, 0xd5, 0xff}}},\n    {{{ -1819,  -2913,  -4474}, 0, {   990,      0}, {0xa6, 0x56, 0xe7, 0xff}}},\n    {{{ -2204,  -3080,  -4121}, 0, {     0,      0}, {0xd2, 0x55, 0xae, 0xff}}},\n    {{{ -2459,  -4206,  -4116}, 0, {   990,   2012}, {0x07, 0x00, 0x82, 0xff}}},\n    {{{ -2459,  -3182,  -4116}, 0, {   990,      0}, {0xef, 0x54, 0xa4, 0xff}}},\n    {{{ -2003,  -2993,  -4217}, 0, {     0,      0}, {0xb6, 0x55, 0xc7, 0xff}}},\n    {{{ -2003,  -4017,  -4217}, 0, {     0,   2012}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{ -2204,  -4104,  -4121}, 0, {   990,   2012}, {0xda, 0x00, 0x87, 0xff}}},\n    {{{ -2204,  -3080,  -4121}, 0, {   990,      0}, {0xd2, 0x55, 0xae, 0xff}}},\n    {{{ -1819,  -2913,  -4474}, 0, {     0,      0}, {0xa6, 0x56, 0xe7, 0xff}}},\n    {{{ -2003,  -4017,  -4217}, 0, {   990,   2012}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{ -2003,  -2993,  -4217}, 0, {   990,      0}, {0xb6, 0x55, 0xc7, 0xff}}},\n    {{{ -1819,  -3937,  -4474}, 0, {     0,   2012}, {0x89, 0x00, 0xd5, 0xff}}},\n    {{{ -1730,  -3849,  -4882}, 0, {     0,   2012}, {0x85, 0x00, 0xe4, 0xff}}},\n};\n\n// 0x07005240 - 0x07005330\nstatic const Vtx pss_seg7_vertex_07005240[] = {\n    {{{   212,  -2303,  -6922}, 0, {     0,      0}, {0xe8, 0x58, 0xa9, 0xff}}},\n    {{{  -580,  -3470,  -6691}, 0, {   990,   2012}, {0xcd, 0x00, 0x8c, 0xff}}},\n    {{{  -580,  -2446,  -6691}, 0, {   990,      0}, {0xc5, 0x57, 0xbb, 0xff}}},\n    {{{ -1589,  -2733,  -5471}, 0, {     0,      0}, {0xa5, 0x57, 0xf3, 0xff}}},\n    {{{ -1589,  -3757,  -5471}, 0, {     0,   2012}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{ -1730,  -3849,  -4882}, 0, {   990,   2012}, {0x85, 0x00, 0xe4, 0xff}}},\n    {{{ -1730,  -2825,  -4882}, 0, {   990,      0}, {0xb0, 0x62, 0x00, 0xff}}},\n    {{{ -1242,  -2590,  -6161}, 0, {     0,      0}, {0xad, 0x57, 0xd9, 0xff}}},\n    {{{ -1589,  -3757,  -5471}, 0, {   990,   2012}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{ -1589,  -2733,  -5471}, 0, {   990,      0}, {0xa5, 0x57, 0xf3, 0xff}}},\n    {{{ -1242,  -3614,  -6161}, 0, {     0,   2012}, {0xa4, 0x00, 0xaa, 0xff}}},\n    {{{  -580,  -2446,  -6691}, 0, {     0,      0}, {0xc5, 0x57, 0xbb, 0xff}}},\n    {{{ -1242,  -3614,  -6161}, 0, {   990,   2012}, {0xa4, 0x00, 0xaa, 0xff}}},\n    {{{ -1242,  -2590,  -6161}, 0, {   990,      0}, {0xad, 0x57, 0xd9, 0xff}}},\n    {{{  -580,  -3470,  -6691}, 0, {     0,   2012}, {0xcd, 0x00, 0x8c, 0xff}}},\n};\n\n// 0x07005330 - 0x07005420\nstatic const Vtx pss_seg7_vertex_07005330[] = {\n    {{{  2180,  -2129,  -5624}, 0, {     0,      0}, {0x4f, 0x59, 0xd7, 0xff}}},\n    {{{  1757,  -3194,  -6338}, 0, {   990,   2012}, {0x62, 0x00, 0xb0, 0xff}}},\n    {{{  1757,  -2170,  -6338}, 0, {   990,      0}, {0x38, 0x5a, 0xbb, 0xff}}},\n    {{{   212,  -2303,  -6922}, 0, {     0,      0}, {0xe8, 0x58, 0xa9, 0xff}}},\n    {{{   212,  -3327,  -6922}, 0, {     0,   2012}, {0xff, 0x00, 0x82, 0xff}}},\n    {{{  -580,  -3470,  -6691}, 0, {   990,   2012}, {0xcd, 0x00, 0x8c, 0xff}}},\n    {{{  1035,  -2211,  -6819}, 0, {     0,      0}, {0x12, 0x5a, 0xa9, 0xff}}},\n    {{{  1035,  -3235,  -6819}, 0, {     0,   2012}, {0x35, 0x00, 0x8d, 0xff}}},\n    {{{   212,  -3327,  -6922}, 0, {   990,   2012}, {0xff, 0x00, 0x82, 0xff}}},\n    {{{   212,  -2303,  -6922}, 0, {   990,      0}, {0xe8, 0x58, 0xa9, 0xff}}},\n    {{{  1757,  -2170,  -6338}, 0, {     0,      0}, {0x38, 0x5a, 0xbb, 0xff}}},\n    {{{  1757,  -3194,  -6338}, 0, {     0,   2012}, {0x62, 0x00, 0xb0, 0xff}}},\n    {{{  1035,  -3235,  -6819}, 0, {   990,   2012}, {0x35, 0x00, 0x8d, 0xff}}},\n    {{{  1035,  -2211,  -6819}, 0, {   990,      0}, {0x12, 0x5a, 0xa9, 0xff}}},\n    {{{  2180,  -3153,  -5624}, 0, {     0,   2012}, {0x78, 0x00, 0xd9, 0xff}}},\n};\n\n// 0x07005420 - 0x07005510\nstatic const Vtx pss_seg7_vertex_07005420[] = {\n    {{{ -5845,  -3931,  -1778}, 0, {     0,      0}, {0xc7, 0x70, 0x0a, 0xff}}},\n    {{{ -5721,  -3839,  -2592}, 0, {   990,      0}, {0x56, 0x58, 0x1a, 0xff}}},\n    {{{ -5822,  -3839,  -2610}, 0, {  1010,    -28}, {0xa4, 0x57, 0x04, 0xff}}},\n    {{{  2352,  -2088,  -4825}, 0, {     0,      0}, {0x57, 0x59, 0xea, 0xff}}},\n    {{{  2180,  -3153,  -5624}, 0, {   990,   2012}, {0x78, 0x00, 0xd9, 0xff}}},\n    {{{  2180,  -2129,  -5624}, 0, {   990,      0}, {0x4f, 0x59, 0xd7, 0xff}}},\n    {{{  2352,  -3112,  -4825}, 0, {     0,   2012}, {0x7e, 0x00, 0xf5, 0xff}}},\n    {{{  2378,  -1996,  -4044}, 0, {     0,      0}, {0x59, 0x59, 0xf4, 0xff}}},\n    {{{  2378,  -3020,  -4044}, 0, {     0,   2012}, {0x7e, 0x00, 0xff, 0xff}}},\n    {{{  2352,  -3112,  -4825}, 0, {   990,   2012}, {0x7e, 0x00, 0xf5, 0xff}}},\n    {{{  2352,  -2088,  -4825}, 0, {   990,      0}, {0x57, 0x59, 0xea, 0xff}}},\n    {{{  2378,  -1842,  -2811}, 0, {     0,      0}, {0x57, 0x2b, 0x51, 0xff}}},\n    {{{  2378,  -2866,  -2811}, 0, {     0,   2012}, {0x39, 0x00, 0x71, 0xff}}},\n    {{{  2378,  -3020,  -4044}, 0, {   990,   2012}, {0x7e, 0x00, 0xff, 0xff}}},\n    {{{  2378,  -1996,  -4044}, 0, {   990,      0}, {0x59, 0x59, 0xf4, 0xff}}},\n};\n\n// 0x07005510 - 0x07005600\nstatic const Vtx pss_seg7_vertex_07005510[] = {\n    {{{ -5315,  -3636,  -3584}, 0, {   -50,    -36}, {0xbc, 0x57, 0xc3, 0xff}}},\n    {{{ -4716,  -3548,  -3712}, 0, {   990,      0}, {0xf7, 0x58, 0x5a, 0xff}}},\n    {{{ -4734,  -3548,  -3813}, 0, {  1026,    -24}, {0xe2, 0x59, 0xac, 0xff}}},\n    {{{ -5845,  -3931,  -1778}, 0, {     0,      0}, {0xc7, 0x70, 0x0a, 0xff}}},\n    {{{ -5743,  -3931,  -1777}, 0, {     0,      0}, {0x71, 0x38, 0x09, 0xff}}},\n    {{{ -5721,  -3839,  -2592}, 0, {   990,      0}, {0x56, 0x58, 0x1a, 0xff}}},\n    {{{ -5822,  -3839,  -2610}, 0, {   -40,      0}, {0xa4, 0x57, 0x04, 0xff}}},\n    {{{ -5599,  -3740,  -3116}, 0, {   990,      0}, {0x43, 0x58, 0x3d, 0xff}}},\n    {{{ -5685,  -3740,  -3173}, 0, {  1058,    -20}, {0xa6, 0x56, 0xeb, 0xff}}},\n    {{{ -5721,  -3839,  -2592}, 0, {     0,      0}, {0x56, 0x58, 0x1a, 0xff}}},\n    {{{ -5685,  -3740,  -3173}, 0, {   -58,    -36}, {0xa6, 0x56, 0xeb, 0xff}}},\n    {{{ -5267,  -3636,  -3493}, 0, {   990,      0}, {0x20, 0x58, 0x55, 0xff}}},\n    {{{ -5315,  -3636,  -3584}, 0, {  1062,    -16}, {0xbc, 0x57, 0xc3, 0xff}}},\n    {{{ -5599,  -3740,  -3116}, 0, {     0,      0}, {0x43, 0x58, 0x3d, 0xff}}},\n    {{{ -5267,  -3636,  -3493}, 0, {     0,      0}, {0x20, 0x58, 0x55, 0xff}}},\n};\n\n// 0x07005600 - 0x07005700\nstatic const Vtx pss_seg7_vertex_07005600[] = {\n    {{{ -3119,  -3235,  -3188}, 0, {    -4,    -24}, {0x1a, 0x45, 0x9a, 0xff}}},\n    {{{ -3155,  -3235,  -3092}, 0, {     0,      0}, {0xd4, 0x62, 0x41, 0xff}}},\n    {{{ -2495,  -3091,  -3072}, 0, {   966,    -40}, {0xf4, 0x57, 0xa5, 0xff}}},\n    {{{ -4734,  -3548,  -3813}, 0, {   -82,    -40}, {0xe2, 0x59, 0xac, 0xff}}},\n    {{{ -4716,  -3548,  -3712}, 0, {     0,      0}, {0xf7, 0x58, 0x5a, 0xff}}},\n    {{{ -4119,  -3468,  -3631}, 0, {   990,      0}, {0xd4, 0x57, 0x50, 0xff}}},\n    {{{ -4109,  -3468,  -3733}, 0, {   984,      0}, {0x08, 0x59, 0xa7, 0xff}}},\n    {{{ -4109,  -3468,  -3733}, 0, {  -104,    -44}, {0x08, 0x59, 0xa7, 0xff}}},\n    {{{ -3639,  -3378,  -3373}, 0, {   990,      0}, {0xc5, 0x55, 0x48, 0xff}}},\n    {{{ -3609,  -3378,  -3471}, 0, {   952,    -40}, {0x18, 0x59, 0xaa, 0xff}}},\n    {{{ -4119,  -3468,  -3631}, 0, {     0,      0}, {0xd4, 0x57, 0x50, 0xff}}},\n    {{{ -3609,  -3378,  -3471}, 0, {   -72,    -44}, {0x18, 0x59, 0xaa, 0xff}}},\n    {{{ -3155,  -3235,  -3092}, 0, {   990,      0}, {0xd4, 0x62, 0x41, 0xff}}},\n    {{{ -3119,  -3235,  -3188}, 0, {   960,    -40}, {0x1a, 0x45, 0x9a, 0xff}}},\n    {{{ -3639,  -3378,  -3373}, 0, {     0,      0}, {0xc5, 0x55, 0x48, 0xff}}},\n    {{{ -2498,  -3091,  -2970}, 0, {   990,      0}, {0xee, 0x57, 0x5a, 0xff}}},\n};\n\n// 0x07005700 - 0x070057F0\nstatic const Vtx pss_seg7_vertex_07005700[] = {\n    {{{ -2495,  -3091,  -3072}, 0, {    -8,    -24}, {0xf4, 0x57, 0xa5, 0xff}}},\n    {{{ -2498,  -3091,  -2970}, 0, {     0,      0}, {0xee, 0x57, 0x5a, 0xff}}},\n    {{{ -1894,  -2948,  -3142}, 0, {   958,    -40}, {0xdc, 0x58, 0xad, 0xff}}},\n    {{{ -1863,  -2948,  -3044}, 0, {   990,      0}, {0x16, 0x59, 0x57, 0xff}}},\n    {{{ -1894,  -2948,  -3142}, 0, {     0,    -28}, {0xdc, 0x58, 0xad, 0xff}}},\n    {{{ -1863,  -2948,  -3044}, 0, {     0,      0}, {0x16, 0x59, 0x57, 0xff}}},\n    {{{ -1385,  -2907,  -3419}, 0, {   962,    -36}, {0xc9, 0x59, 0xba, 0xff}}},\n    {{{ -1323,  -2907,  -3338}, 0, {   990,      0}, {0x36, 0x59, 0x47, 0xff}}},\n    {{{ -1385,  -2907,  -3419}, 0, {    -8,      0}, {0xc9, 0x59, 0xba, 0xff}}},\n    {{{ -1323,  -2907,  -3338}, 0, {     0,      0}, {0x36, 0x59, 0x47, 0xff}}},\n    {{{  -945,  -2866,  -3888}, 0, {   964,    -36}, {0xb5, 0x5a, 0xd1, 0xff}}},\n    {{{  -562,  -2733,  -5096}, 0, {   -72,    -40}, {0xa5, 0x56, 0xf5, 0xff}}},\n    {{{  -285,  -2640,  -5388}, 0, {   990,      0}, {0x37, 0x56, 0x4b, 0xff}}},\n    {{{  -365,  -2640,  -5453}, 0, {  1040,    -24}, {0xa9, 0x55, 0xdd, 0xff}}},\n    {{{  -860,  -2866,  -3832}, 0, {   990,      0}, {0x4b, 0x5a, 0x2f, 0xff}}},\n};\n\n// 0x070057F0 - 0x070058D0\nstatic const Vtx pss_seg7_vertex_070057F0[] = {\n    {{{  -945,  -2866,  -3888}, 0, {     0,    -28}, {0xb5, 0x5a, 0xd1, 0xff}}},\n    {{{  -860,  -2866,  -3832}, 0, {     0,      0}, {0x4b, 0x5a, 0x2f, 0xff}}},\n    {{{  -695,  -2825,  -4526}, 0, {   984,      0}, {0xb5, 0x64, 0xf2, 0xff}}},\n    {{{  -598,  -2825,  -4492}, 0, {   990,      0}, {0x63, 0x46, 0x24, 0xff}}},\n    {{{  -695,  -2825,  -4526}, 0, {   -14,    -28}, {0xb5, 0x64, 0xf2, 0xff}}},\n    {{{  -598,  -2825,  -4492}, 0, {     0,      0}, {0x63, 0x46, 0x24, 0xff}}},\n    {{{  -465,  -2733,  -5061}, 0, {   990,      0}, {0x4b, 0x58, 0x33, 0xff}}},\n    {{{  -562,  -2733,  -5096}, 0, {  1012,    -28}, {0xa5, 0x56, 0xf5, 0xff}}},\n    {{{  -562,  -2733,  -5096}, 0, {   -72,    -40}, {0xa5, 0x56, 0xf5, 0xff}}},\n    {{{  -465,  -2733,  -5061}, 0, {     0,      0}, {0x4b, 0x58, 0x33, 0xff}}},\n    {{{  -285,  -2640,  -5388}, 0, {   990,      0}, {0x37, 0x56, 0x4b, 0xff}}},\n    {{{   656,  -2357,  -5798}, 0, {   -70,    -40}, {0xfe, 0x54, 0xa2, 0xff}}},\n    {{{   620,  -2357,  -5702}, 0, {     0,      0}, {0xcb, 0x55, 0x4d, 0xff}}},\n    {{{   919,  -2267,  -5544}, 0, {   990,      0}, {0xb5, 0x57, 0x34, 0xff}}},\n};\n\n// 0x070058D0 - 0x070059C0\nstatic const Vtx pss_seg7_vertex_070058D0[] = {\n    {{{  -365,  -2640,  -5453}, 0, {   -66,    -40}, {0xa9, 0x55, 0xdd, 0xff}}},\n    {{{  -285,  -2640,  -5388}, 0, {     0,      0}, {0x37, 0x56, 0x4b, 0xff}}},\n    {{{   -31,  -2542,  -5634}, 0, {   990,      0}, {0x10, 0x56, 0x5b, 0xff}}},\n    {{{   -78,  -2542,  -5725}, 0, {  1074,    -16}, {0xbd, 0x56, 0xc0, 0xff}}},\n    {{{   -78,  -2542,  -5725}, 0, {  -100,    -44}, {0xbd, 0x56, 0xc0, 0xff}}},\n    {{{   308,  -2457,  -5717}, 0, {   990,      0}, {0xef, 0x55, 0x5c, 0xff}}},\n    {{{   300,  -2457,  -5819}, 0, {  1038,    -24}, {0xdd, 0x54, 0xa9, 0xff}}},\n    {{{   -31,  -2542,  -5634}, 0, {     0,      0}, {0x10, 0x56, 0x5b, 0xff}}},\n    {{{   300,  -2457,  -5819}, 0, {   -72,    -40}, {0xdd, 0x54, 0xa9, 0xff}}},\n    {{{   308,  -2457,  -5717}, 0, {     0,      0}, {0xef, 0x55, 0x5c, 0xff}}},\n    {{{   620,  -2357,  -5702}, 0, {   990,      0}, {0xcb, 0x55, 0x4d, 0xff}}},\n    {{{   656,  -2357,  -5798}, 0, {  1092,    -12}, {0xfe, 0x54, 0xa2, 0xff}}},\n    {{{  1410,  -2088,  -4710}, 0, {   -40,      0}, {0x56, 0x58, 0xe5, 0xff}}},\n    {{{  1309,  -2088,  -4698}, 0, {     0,      0}, {0xa5, 0x58, 0xfe, 0xff}}},\n    {{{  1347,  -1996,  -4028}, 0, {   990,      0}, {0xa6, 0x58, 0xf7, 0xff}}},\n};\n\n// 0x070059C0 - 0x07005AA0\nstatic const Vtx pss_seg7_vertex_070059C0[] = {\n    {{{   656,  -2357,  -5798}, 0, {   -70,    -40}, {0xfe, 0x54, 0xa2, 0xff}}},\n    {{{   919,  -2267,  -5544}, 0, {   990,      0}, {0xb5, 0x57, 0x34, 0xff}}},\n    {{{   993,  -2267,  -5614}, 0, {  1088,    -16}, {0x27, 0x55, 0xab, 0xff}}},\n    {{{   993,  -2267,  -5614}, 0, {   -42,    -36}, {0x27, 0x55, 0xab, 0xff}}},\n    {{{  1184,  -2177,  -5235}, 0, {   990,      0}, {0xa7, 0x58, 0x12, 0xff}}},\n    {{{  1280,  -2177,  -5272}, 0, {  1074,    -16}, {0x45, 0x57, 0xc5, 0xff}}},\n    {{{   919,  -2267,  -5544}, 0, {     0,      0}, {0xb5, 0x57, 0x34, 0xff}}},\n    {{{  1280,  -2177,  -5272}, 0, {   -58,    -36}, {0x45, 0x57, 0xc5, 0xff}}},\n    {{{  1309,  -2088,  -4698}, 0, {   990,      0}, {0xa5, 0x58, 0xfe, 0xff}}},\n    {{{  1410,  -2088,  -4710}, 0, {  1010,    -28}, {0x56, 0x58, 0xe5, 0xff}}},\n    {{{  1184,  -2177,  -5235}, 0, {     0,      0}, {0xa7, 0x58, 0x12, 0xff}}},\n    {{{  1410,  -2088,  -4710}, 0, {   -40,      0}, {0x56, 0x58, 0xe5, 0xff}}},\n    {{{  1347,  -1996,  -4028}, 0, {   990,      0}, {0xa6, 0x58, 0xf7, 0xff}}},\n    {{{  1449,  -1996,  -4029}, 0, {   996,      0}, {0x59, 0x58, 0xf1, 0xff}}},\n};\n\n// 0x07005AA0 - 0x07005B80\nstatic const Vtx pss_seg7_vertex_07005AA0[] = {\n    {{{  1280,  -2280,  -5272}, 0, {   990,    480}, {0x5c, 0x46, 0xcd, 0xff}}},\n    {{{  1410,  -2088,  -4710}, 0, {     0,      0}, {0x56, 0x58, 0xe5, 0xff}}},\n    {{{  1410,  -2190,  -4710}, 0, {     0,    480}, {0x49, 0x65, 0xea, 0xff}}},\n    {{{  1449,  -1996,  -4029}, 0, {     0,      0}, {0x59, 0x58, 0xf1, 0xff}}},\n    {{{  1347,  -1996,  -4028}, 0, {     0,      0}, {0xa6, 0x58, 0xf7, 0xff}}},\n    {{{  1354,  -1842,  -2810}, 0, {   990,      0}, {0xd4, 0x58, 0x4e, 0xff}}},\n    {{{  1456,  -1842,  -2810}, 0, {   990,      0}, {0x6a, 0x34, 0x2d, 0xff}}},\n    {{{  1449,  -2098,  -4029}, 0, {   990,    480}, {0x59, 0x59, 0xf3, 0xff}}},\n    {{{  1449,  -1996,  -4029}, 0, {   990,      0}, {0x59, 0x58, 0xf1, 0xff}}},\n    {{{  1456,  -1842,  -2810}, 0, {     0,      0}, {0x6a, 0x34, 0x2d, 0xff}}},\n    {{{  1456,  -1945,  -2810}, 0, {     0,    480}, {0xd8, 0x77, 0xf3, 0xff}}},\n    {{{  1410,  -2190,  -4710}, 0, {   990,    480}, {0x49, 0x65, 0xea, 0xff}}},\n    {{{  1449,  -2098,  -4029}, 0, {     0,    480}, {0x59, 0x59, 0xf3, 0xff}}},\n    {{{  1410,  -2088,  -4710}, 0, {   990,      0}, {0x56, 0x58, 0xe5, 0xff}}},\n};\n\n// 0x07005B80 - 0x07005C70\nstatic const Vtx pss_seg7_vertex_07005B80[] = {\n    {{{   300,  -2559,  -5819}, 0, {   990,    480}, {0xe8, 0x56, 0xa7, 0xff}}},\n    {{{   300,  -2457,  -5819}, 0, {   990,      0}, {0xdd, 0x54, 0xa9, 0xff}}},\n    {{{   656,  -2357,  -5798}, 0, {     0,      0}, {0xfe, 0x54, 0xa2, 0xff}}},\n    {{{  1280,  -2280,  -5272}, 0, {   990,    480}, {0x5c, 0x46, 0xcd, 0xff}}},\n    {{{  1280,  -2177,  -5272}, 0, {   990,      0}, {0x45, 0x57, 0xc5, 0xff}}},\n    {{{  1410,  -2088,  -4710}, 0, {     0,      0}, {0x56, 0x58, 0xe5, 0xff}}},\n    {{{   993,  -2369,  -5614}, 0, {   990,    480}, {0x30, 0x56, 0xb2, 0xff}}},\n    {{{   993,  -2267,  -5614}, 0, {   990,      0}, {0x27, 0x55, 0xab, 0xff}}},\n    {{{  1280,  -2177,  -5272}, 0, {     0,      0}, {0x45, 0x57, 0xc5, 0xff}}},\n    {{{  1280,  -2280,  -5272}, 0, {     0,    480}, {0x5c, 0x46, 0xcd, 0xff}}},\n    {{{   656,  -2459,  -5798}, 0, {   990,    480}, {0x0c, 0x56, 0xa5, 0xff}}},\n    {{{   656,  -2357,  -5798}, 0, {   990,      0}, {0xfe, 0x54, 0xa2, 0xff}}},\n    {{{   993,  -2267,  -5614}, 0, {     0,      0}, {0x27, 0x55, 0xab, 0xff}}},\n    {{{   993,  -2369,  -5614}, 0, {     0,    480}, {0x30, 0x56, 0xb2, 0xff}}},\n    {{{   656,  -2459,  -5798}, 0, {     0,    480}, {0x0c, 0x56, 0xa5, 0xff}}},\n};\n\n// 0x07005C70 - 0x07005D60\nstatic const Vtx pss_seg7_vertex_07005C70[] = {\n    {{{  -695,  -2928,  -4526}, 0, {   990,    480}, {0xa6, 0x58, 0xf1, 0xff}}},\n    {{{  -562,  -2733,  -5096}, 0, {     0,      0}, {0xa5, 0x56, 0xf5, 0xff}}},\n    {{{  -562,  -2835,  -5096}, 0, {     0,    480}, {0xbc, 0x6a, 0xf9, 0xff}}},\n    {{{   -78,  -2644,  -5725}, 0, {   990,    480}, {0xcb, 0x58, 0xb7, 0xff}}},\n    {{{   300,  -2457,  -5819}, 0, {     0,      0}, {0xdd, 0x54, 0xa9, 0xff}}},\n    {{{   300,  -2559,  -5819}, 0, {     0,    480}, {0xe8, 0x56, 0xa7, 0xff}}},\n    {{{   -78,  -2542,  -5725}, 0, {   990,      0}, {0xbd, 0x56, 0xc0, 0xff}}},\n    {{{  -365,  -2742,  -5453}, 0, {   990,    480}, {0xaf, 0x56, 0xd4, 0xff}}},\n    {{{  -365,  -2640,  -5453}, 0, {   990,      0}, {0xa9, 0x55, 0xdd, 0xff}}},\n    {{{   -78,  -2542,  -5725}, 0, {     0,      0}, {0xbd, 0x56, 0xc0, 0xff}}},\n    {{{   -78,  -2644,  -5725}, 0, {     0,    480}, {0xcb, 0x58, 0xb7, 0xff}}},\n    {{{  -562,  -2835,  -5096}, 0, {   990,    480}, {0xbc, 0x6a, 0xf9, 0xff}}},\n    {{{  -562,  -2733,  -5096}, 0, {   990,      0}, {0xa5, 0x56, 0xf5, 0xff}}},\n    {{{  -365,  -2640,  -5453}, 0, {     0,      0}, {0xa9, 0x55, 0xdd, 0xff}}},\n    {{{  -365,  -2742,  -5453}, 0, {     0,    480}, {0xaf, 0x56, 0xd4, 0xff}}},\n};\n\n// 0x07005D60 - 0x07005E50\nstatic const Vtx pss_seg7_vertex_07005D60[] = {\n    {{{ -1894,  -3051,  -3142}, 0, {   990,    480}, {0xd1, 0x50, 0xaa, 0xff}}},\n    {{{ -1894,  -2948,  -3142}, 0, {   990,      0}, {0xdc, 0x58, 0xad, 0xff}}},\n    {{{ -1385,  -2907,  -3419}, 0, {     0,      0}, {0xc9, 0x59, 0xba, 0xff}}},\n    {{{  -695,  -2928,  -4526}, 0, {   990,    480}, {0xa6, 0x58, 0xf1, 0xff}}},\n    {{{  -695,  -2825,  -4526}, 0, {   990,      0}, {0xb5, 0x64, 0xf2, 0xff}}},\n    {{{  -562,  -2733,  -5096}, 0, {     0,      0}, {0xa5, 0x56, 0xf5, 0xff}}},\n    {{{  -945,  -2969,  -3888}, 0, {   990,    480}, {0xac, 0x56, 0xd9, 0xff}}},\n    {{{  -945,  -2866,  -3888}, 0, {   990,      0}, {0xb5, 0x5a, 0xd1, 0xff}}},\n    {{{  -695,  -2825,  -4526}, 0, {     0,      0}, {0xb5, 0x64, 0xf2, 0xff}}},\n    {{{  -695,  -2928,  -4526}, 0, {     0,    480}, {0xa6, 0x58, 0xf1, 0xff}}},\n    {{{ -1385,  -3010,  -3419}, 0, {   990,    480}, {0xbd, 0x52, 0xbc, 0xff}}},\n    {{{  -945,  -2866,  -3888}, 0, {     0,      0}, {0xb5, 0x5a, 0xd1, 0xff}}},\n    {{{  -945,  -2969,  -3888}, 0, {     0,    480}, {0xac, 0x56, 0xd9, 0xff}}},\n    {{{ -1385,  -2907,  -3419}, 0, {   990,      0}, {0xc9, 0x59, 0xba, 0xff}}},\n    {{{ -1385,  -3010,  -3419}, 0, {     0,    480}, {0xbd, 0x52, 0xbc, 0xff}}},\n};\n\n// 0x07005E50 - 0x07005F40\nstatic const Vtx pss_seg7_vertex_07005E50[] = {\n    {{{ -4109,  -3571,  -3733}, 0, {   990,    480}, {0x1b, 0x47, 0x9b, 0xff}}},\n    {{{ -3609,  -3378,  -3471}, 0, {     0,      0}, {0x18, 0x59, 0xaa, 0xff}}},\n    {{{ -3609,  -3481,  -3471}, 0, {     0,    480}, {0x1b, 0x5a, 0xac, 0xff}}},\n    {{{ -2495,  -3194,  -3072}, 0, {   990,    480}, {0xed, 0x52, 0xa2, 0xff}}},\n    {{{ -1894,  -2948,  -3142}, 0, {     0,      0}, {0xdc, 0x58, 0xad, 0xff}}},\n    {{{ -1894,  -3051,  -3142}, 0, {     0,    480}, {0xd1, 0x50, 0xaa, 0xff}}},\n    {{{ -2495,  -3091,  -3072}, 0, {   990,      0}, {0xf4, 0x57, 0xa5, 0xff}}},\n    {{{ -3119,  -3337,  -3188}, 0, {   990,    480}, {0x07, 0x55, 0xa3, 0xff}}},\n    {{{ -3119,  -3235,  -3188}, 0, {   990,      0}, {0x1a, 0x45, 0x9a, 0xff}}},\n    {{{ -2495,  -3091,  -3072}, 0, {     0,      0}, {0xf4, 0x57, 0xa5, 0xff}}},\n    {{{ -2495,  -3194,  -3072}, 0, {     0,    480}, {0xed, 0x52, 0xa2, 0xff}}},\n    {{{ -3609,  -3481,  -3471}, 0, {   990,    480}, {0x1b, 0x5a, 0xac, 0xff}}},\n    {{{ -3119,  -3235,  -3188}, 0, {     0,      0}, {0x1a, 0x45, 0x9a, 0xff}}},\n    {{{ -3119,  -3337,  -3188}, 0, {     0,    480}, {0x07, 0x55, 0xa3, 0xff}}},\n    {{{ -3609,  -3378,  -3471}, 0, {   990,      0}, {0x18, 0x59, 0xaa, 0xff}}},\n};\n\n// 0x07005F40 - 0x07006030\nstatic const Vtx pss_seg7_vertex_07005F40[] = {\n    {{{ -5685,  -3842,  -3173}, 0, {   990,    480}, {0xac, 0x58, 0xdd, 0xff}}},\n    {{{ -5315,  -3636,  -3584}, 0, {     0,      0}, {0xbc, 0x57, 0xc3, 0xff}}},\n    {{{ -5315,  -3738,  -3584}, 0, {     0,    480}, {0xc7, 0x58, 0xba, 0xff}}},\n    {{{ -4109,  -3571,  -3733}, 0, {   990,    480}, {0x1b, 0x47, 0x9b, 0xff}}},\n    {{{ -4109,  -3468,  -3733}, 0, {   990,      0}, {0x08, 0x59, 0xa7, 0xff}}},\n    {{{ -3609,  -3378,  -3471}, 0, {     0,      0}, {0x18, 0x59, 0xaa, 0xff}}},\n    {{{ -4734,  -3650,  -3813}, 0, {   990,    480}, {0xf1, 0x5a, 0xa9, 0xff}}},\n    {{{ -4109,  -3468,  -3733}, 0, {     0,      0}, {0x08, 0x59, 0xa7, 0xff}}},\n    {{{ -4109,  -3571,  -3733}, 0, {     0,    480}, {0x1b, 0x47, 0x9b, 0xff}}},\n    {{{ -4734,  -3548,  -3813}, 0, {   990,      0}, {0xe2, 0x59, 0xac, 0xff}}},\n    {{{ -5315,  -3738,  -3584}, 0, {   990,    480}, {0xc7, 0x58, 0xba, 0xff}}},\n    {{{ -5315,  -3636,  -3584}, 0, {   990,      0}, {0xbc, 0x57, 0xc3, 0xff}}},\n    {{{ -4734,  -3548,  -3813}, 0, {     0,      0}, {0xe2, 0x59, 0xac, 0xff}}},\n    {{{ -4734,  -3650,  -3813}, 0, {     0,    480}, {0xf1, 0x5a, 0xa9, 0xff}}},\n    {{{ -5685,  -3740,  -3173}, 0, {   990,      0}, {0xa6, 0x56, 0xeb, 0xff}}},\n};\n\n// 0x07006030 - 0x07006120\nstatic const Vtx pss_seg7_vertex_07006030[] = {\n    {{{  -776,   2779,   1678}, 0, {     0,      0}, {0x29, 0x4f, 0x59, 0xff}}},\n    {{{  -896,   2836,   1576}, 0, {   990,      0}, {0x22, 0x53, 0xa7, 0xff}}},\n    {{{  -896,   2836,   1678}, 0, {   988,      0}, {0x1c, 0x54, 0x59, 0xff}}},\n    {{{ -5822,  -3941,  -2610}, 0, {   990,    480}, {0xa5, 0x57, 0xfe, 0xff}}},\n    {{{ -5685,  -3740,  -3173}, 0, {     0,      0}, {0xa6, 0x56, 0xeb, 0xff}}},\n    {{{ -5685,  -3842,  -3173}, 0, {     0,    480}, {0xac, 0x58, 0xdd, 0xff}}},\n    {{{ -5822,  -3839,  -2610}, 0, {   990,      0}, {0xa4, 0x57, 0x04, 0xff}}},\n    {{{  2598,    726,   1683}, 0, {     0,      0}, {0x6a, 0x3b, 0x23, 0xff}}},\n    {{{  -776,   2779,   1576}, 0, {   990,      0}, {0x2c, 0x4e, 0xa7, 0xff}}},\n    {{{  -776,   2779,   1678}, 0, {   990,      0}, {0x29, 0x4f, 0x59, 0xff}}},\n    {{{  2598,    726,   1580}, 0, {     0,      0}, {0x48, 0x28, 0xa1, 0xff}}},\n    {{{  -776,   2267,   1576}, 0, {   990,   2012}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{  -776,   2779,   1576}, 0, {     0,      0}, {0x2c, 0x4e, 0xa7, 0xff}}},\n    {{{  -896,   2324,   1576}, 0, {   990,   2012}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{  -776,   2267,   1576}, 0, {     0,   2012}, {0x00, 0x00, 0x82, 0xff}}},\n};\n\n// 0x07006120 - 0x07006220\nstatic const Vtx pss_seg7_vertex_07006120[] = {\n    {{{  -896,   2836,   1678}, 0, {     0,      0}, {0x1c, 0x54, 0x59, 0xff}}},\n    {{{  -896,   2836,   1576}, 0, {     0,      0}, {0x22, 0x53, 0xa7, 0xff}}},\n    {{{ -1024,   2871,   1575}, 0, {   990,      0}, {0x10, 0x57, 0xa6, 0xff}}},\n    {{{ -1024,   2871,   1678}, 0, {   988,      0}, {0x09, 0x59, 0x5a, 0xff}}},\n    {{{ -1024,   2359,   1575}, 0, {   990,   2012}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{  -896,   2324,   1576}, 0, {     0,   2012}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{ -1024,   2871,   1678}, 0, {     0,      0}, {0x09, 0x59, 0x5a, 0xff}}},\n    {{{ -2568,   2913,   1573}, 0, {   990,      0}, {0x03, 0x59, 0xa7, 0xff}}},\n    {{{ -2568,   2913,   1676}, 0, {   990,      0}, {0x03, 0x59, 0x59, 0xff}}},\n    {{{ -1024,   2871,   1575}, 0, {     0,      0}, {0x10, 0x57, 0xa6, 0xff}}},\n    {{{ -2568,   2401,   1573}, 0, {   990,   2012}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{ -1024,   2359,   1575}, 0, {     0,   2012}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{ -2568,   2913,   1676}, 0, {     0,      0}, {0x03, 0x59, 0x59, 0xff}}},\n    {{{ -2731,   2921,   1573}, 0, {   990,      0}, {0x07, 0x59, 0xa7, 0xff}}},\n    {{{ -2731,   2921,   1675}, 0, {   990,      0}, {0x0a, 0x59, 0x59, 0xff}}},\n    {{{ -2568,   2913,   1573}, 0, {     0,      0}, {0x03, 0x59, 0xa7, 0xff}}},\n};\n\n// 0x07006220 - 0x07006320\nstatic const Vtx pss_seg7_vertex_07006220[] = {\n    {{{ -2731,   2409,   1573}, 0, {   990,   2012}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{ -2731,   2921,   1573}, 0, {   990,      0}, {0x07, 0x59, 0xa7, 0xff}}},\n    {{{ -2568,   2913,   1573}, 0, {     0,      0}, {0x03, 0x59, 0xa7, 0xff}}},\n    {{{ -2568,   2401,   1573}, 0, {     0,   2012}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{ -2731,   2921,   1675}, 0, {     0,      0}, {0x0a, 0x59, 0x59, 0xff}}},\n    {{{ -3930,   3113,   1571}, 0, {   990,      0}, {0x12, 0x70, 0xc8, 0xff}}},\n    {{{ -3930,   3113,   1674}, 0, {   990,      0}, {0x08, 0x38, 0x71, 0xff}}},\n    {{{ -2731,   2921,   1573}, 0, {     0,      0}, {0x07, 0x59, 0xa7, 0xff}}},\n    {{{ -3930,   2601,   1571}, 0, {   990,   2012}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{ -2731,   2409,   1573}, 0, {     0,   2012}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{  -781,   2778,   2702}, 0, {     0,      0}, {0x2c, 0x4e, 0xa7, 0xff}}},\n    {{{  2471,    761,   2809}, 0, {   990,      0}, {0x6a, 0x3b, 0x22, 0xff}}},\n    {{{  2471,    761,   2707}, 0, {   990,      0}, {0x49, 0x28, 0xa1, 0xff}}},\n    {{{  -781,   2778,   2804}, 0, {     0,      0}, {0x29, 0x4f, 0x59, 0xff}}},\n    {{{  2471,    249,   2809}, 0, {   990,   2012}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  -781,   2266,   2804}, 0, {     0,   2012}, {0x00, 0x00, 0x7e, 0xff}}},\n};\n\n// 0x07006320 - 0x07006420\nstatic const Vtx pss_seg7_vertex_07006320[] = {\n    {{{  -900,   2834,   2702}, 0, {     0,      0}, {0x21, 0x53, 0xa7, 0xff}}},\n    {{{  -900,   2834,   2804}, 0, {     0,      0}, {0x1c, 0x55, 0x59, 0xff}}},\n    {{{  -781,   2778,   2804}, 0, {   990,      0}, {0x29, 0x4f, 0x59, 0xff}}},\n    {{{  -781,   2778,   2702}, 0, {   988,      0}, {0x2c, 0x4e, 0xa7, 0xff}}},\n    {{{  -781,   2266,   2804}, 0, {   990,   2012}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{  -900,   2322,   2804}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1029,   2868,   2702}, 0, {     0,      0}, {0x10, 0x58, 0xa6, 0xff}}},\n    {{{  -900,   2834,   2804}, 0, {   990,      0}, {0x1c, 0x55, 0x59, 0xff}}},\n    {{{  -900,   2834,   2702}, 0, {   988,      0}, {0x21, 0x53, 0xa7, 0xff}}},\n    {{{ -1029,   2868,   2804}, 0, {     0,      0}, {0x09, 0x59, 0x5a, 0xff}}},\n    {{{  -900,   2322,   2804}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1029,   2356,   2804}, 0, {     0,   2012}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{ -2573,   2913,   2700}, 0, {     0,      0}, {0x03, 0x59, 0xa7, 0xff}}},\n    {{{ -2573,   2913,   2802}, 0, {     0,      0}, {0x03, 0x59, 0x59, 0xff}}},\n    {{{ -1029,   2868,   2804}, 0, {   990,      0}, {0x09, 0x59, 0x5a, 0xff}}},\n    {{{ -1029,   2868,   2702}, 0, {   990,      0}, {0x10, 0x58, 0xa6, 0xff}}},\n};\n\n// 0x07006420 - 0x07006500\nstatic const Vtx pss_seg7_vertex_07006420[] = {\n    {{{ -1029,   2356,   2804}, 0, {   990,   2012}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{ -1029,   2868,   2804}, 0, {   990,      0}, {0x09, 0x59, 0x5a, 0xff}}},\n    {{{ -2573,   2913,   2802}, 0, {     0,      0}, {0x03, 0x59, 0x59, 0xff}}},\n    {{{ -2573,   2401,   2802}, 0, {     0,   2012}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{ -2736,   2920,   2699}, 0, {     0,      0}, {0x07, 0x59, 0xa7, 0xff}}},\n    {{{ -2736,   2920,   2802}, 0, {     0,      0}, {0x09, 0x59, 0x59, 0xff}}},\n    {{{ -2573,   2913,   2802}, 0, {   990,      0}, {0x03, 0x59, 0x59, 0xff}}},\n    {{{ -2573,   2913,   2700}, 0, {   990,      0}, {0x03, 0x59, 0xa7, 0xff}}},\n    {{{ -2573,   2401,   2802}, 0, {   990,   2012}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{ -2736,   2408,   2802}, 0, {     0,   2012}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{ -4057,   3113,   2698}, 0, {     0,      0}, {0x10, 0x70, 0xc8, 0xff}}},\n    {{{ -2736,   2920,   2802}, 0, {   990,      0}, {0x09, 0x59, 0x59, 0xff}}},\n    {{{ -2736,   2920,   2699}, 0, {   990,      0}, {0x07, 0x59, 0xa7, 0xff}}},\n    {{{ -4057,   3113,   2800}, 0, {     0,      0}, {0x08, 0x38, 0x71, 0xff}}},\n};\n\n// 0x07006500 - 0x070065F0\nstatic const Vtx pss_seg7_vertex_07006500[] = {\n    {{{ -1029,   2765,   2702}, 0, {   990,    480}, {0x10, 0x58, 0xa7, 0xff}}},\n    {{{ -1029,   2868,   2702}, 0, {   990,      0}, {0x10, 0x58, 0xa6, 0xff}}},\n    {{{  -900,   2834,   2702}, 0, {     0,      0}, {0x21, 0x53, 0xa7, 0xff}}},\n    {{{ -2736,   2408,   2802}, 0, {   990,   2012}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{ -2736,   2920,   2802}, 0, {   990,      0}, {0x09, 0x59, 0x59, 0xff}}},\n    {{{ -4057,   3113,   2800}, 0, {     0,      0}, {0x08, 0x38, 0x71, 0xff}}},\n    {{{ -4057,   2601,   2800}, 0, {     0,   2012}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{  -776,   2677,   1678}, 0, {   990,    480}, {0x30, 0x58, 0x4d, 0xff}}},\n    {{{  -896,   2836,   1678}, 0, {     0,      0}, {0x1c, 0x54, 0x59, 0xff}}},\n    {{{  -896,   2734,   1678}, 0, {     0,    480}, {0x1c, 0x54, 0x5a, 0xff}}},\n    {{{  -776,   2779,   1678}, 0, {   990,      0}, {0x29, 0x4f, 0x59, 0xff}}},\n    {{{  -896,   2734,   1678}, 0, {   990,    480}, {0x1c, 0x54, 0x5a, 0xff}}},\n    {{{ -1024,   2871,   1678}, 0, {     0,      0}, {0x09, 0x59, 0x5a, 0xff}}},\n    {{{ -1024,   2769,   1678}, 0, {     0,    480}, {0x09, 0x58, 0x5a, 0xff}}},\n    {{{  -896,   2836,   1678}, 0, {   990,      0}, {0x1c, 0x54, 0x59, 0xff}}},\n};\n\n// 0x070065F0 - 0x070066E0\nstatic const Vtx pss_seg7_vertex_070065F0[] = {\n    {{{  -781,   2676,   2702}, 0, {   990,    480}, {0x21, 0x3d, 0x97, 0xff}}},\n    {{{  -781,   2778,   2702}, 0, {   990,      0}, {0x2c, 0x4e, 0xa7, 0xff}}},\n    {{{  2471,    761,   2707}, 0, {     0,      0}, {0x49, 0x28, 0xa1, 0xff}}},\n    {{{ -1029,   2765,   2702}, 0, {   990,    480}, {0x10, 0x58, 0xa7, 0xff}}},\n    {{{  -900,   2834,   2702}, 0, {     0,      0}, {0x21, 0x53, 0xa7, 0xff}}},\n    {{{  -900,   2732,   2702}, 0, {     0,    480}, {0x21, 0x53, 0xa7, 0xff}}},\n    {{{  -900,   2732,   2702}, 0, {   990,    480}, {0x21, 0x53, 0xa7, 0xff}}},\n    {{{  -900,   2834,   2702}, 0, {   990,      0}, {0x21, 0x53, 0xa7, 0xff}}},\n    {{{  -781,   2778,   2702}, 0, {     0,      0}, {0x2c, 0x4e, 0xa7, 0xff}}},\n    {{{  -781,   2676,   2702}, 0, {     0,    480}, {0x21, 0x3d, 0x97, 0xff}}},\n    {{{  2598,    624,   1683}, 0, {   990,    480}, {0x2e, 0x6e, 0x2a, 0xff}}},\n    {{{  -776,   2779,   1678}, 0, {     0,      0}, {0x29, 0x4f, 0x59, 0xff}}},\n    {{{  -776,   2677,   1678}, 0, {     0,    480}, {0x30, 0x58, 0x4d, 0xff}}},\n    {{{  2598,    726,   1683}, 0, {   990,      0}, {0x6a, 0x3b, 0x23, 0xff}}},\n    {{{  2471,    658,   2707}, 0, {     0,    480}, {0x37, 0x6a, 0x2a, 0xff}}},\n};\n\n// 0x070066E0 - 0x070067D0\nstatic const Vtx pss_seg7_vertex_070066E0[] = {\n    {{{ -4901,  -3455,  -4765}, 0, {   -16,      0}, {0x03, 0x5a, 0x59, 0xff}}},\n    {{{ -5839,  -3487,  -4563}, 0, {   990,      0}, {0xc9, 0x59, 0xba, 0xff}}},\n    {{{ -5790,  -3487,  -4473}, 0, {   972,      0}, {0x1f, 0x58, 0x54, 0xff}}},\n    {{{ -6841,  -3788,  -2797}, 0, {   -16,    -36}, {0x55, 0x59, 0x1e, 0xff}}},\n    {{{ -6942,  -3788,  -2815}, 0, {     0,      0}, {0xa5, 0x57, 0x02, 0xff}}},\n    {{{ -6972,  -3931,  -1794}, 0, {   990,      0}, {0xc6, 0x6f, 0x0d, 0xff}}},\n    {{{ -6869,  -3931,  -1778}, 0, {   988,      0}, {0x71, 0x38, 0x0b, 0xff}}},\n    {{{ -6564,  -3638,  -3761}, 0, {    -2,    -40}, {0x3f, 0x59, 0x40, 0xff}}},\n    {{{ -6649,  -3638,  -3818}, 0, {     0,      0}, {0xaa, 0x58, 0xe3, 0xff}}},\n    {{{ -6942,  -3788,  -2815}, 0, {   990,      0}, {0xa5, 0x57, 0x02, 0xff}}},\n    {{{ -6841,  -3788,  -2797}, 0, {   980,    -28}, {0x55, 0x59, 0x1e, 0xff}}},\n    {{{ -5790,  -3487,  -4473}, 0, {    -8,    -40}, {0x1f, 0x58, 0x54, 0xff}}},\n    {{{ -6649,  -3638,  -3818}, 0, {   990,      0}, {0xaa, 0x58, 0xe3, 0xff}}},\n    {{{ -6564,  -3638,  -3761}, 0, {   968,    -24}, {0x3f, 0x59, 0x40, 0xff}}},\n    {{{ -5839,  -3487,  -4563}, 0, {     0,      0}, {0xc9, 0x59, 0xba, 0xff}}},\n};\n\n// 0x070067D0 - 0x070068C0\nstatic const Vtx pss_seg7_vertex_070067D0[] = {\n    {{{ -2773,  -3281,  -4081}, 0, {   -54,    -28}, {0xd2, 0x62, 0x41, 0xff}}},\n    {{{ -3295,  -3378,  -4494}, 0, {   990,      0}, {0x1e, 0x59, 0xac, 0xff}}},\n    {{{ -3325,  -3378,  -4396}, 0, {   954,    -24}, {0xcf, 0x58, 0x4c, 0xff}}},\n    {{{ -4901,  -3455,  -4765}, 0, {   -16,      0}, {0x03, 0x5a, 0x59, 0xff}}},\n    {{{ -4919,  -3455,  -4866}, 0, {     0,      0}, {0xec, 0x5a, 0xaa, 0xff}}},\n    {{{ -5839,  -3487,  -4563}, 0, {   990,      0}, {0xc9, 0x59, 0xba, 0xff}}},\n    {{{ -4011,  -3419,  -4720}, 0, {   -26,      0}, {0xe1, 0x59, 0x54, 0xff}}},\n    {{{ -4001,  -3419,  -4822}, 0, {     0,      0}, {0x0b, 0x5a, 0xa8, 0xff}}},\n    {{{ -4919,  -3455,  -4866}, 0, {   990,      0}, {0xec, 0x5a, 0xaa, 0xff}}},\n    {{{ -4901,  -3455,  -4765}, 0, {   964,      0}, {0x03, 0x5a, 0x59, 0xff}}},\n    {{{ -3325,  -3378,  -4396}, 0, {   -48,      0}, {0xcf, 0x58, 0x4c, 0xff}}},\n    {{{ -3295,  -3378,  -4494}, 0, {     0,      0}, {0x1e, 0x59, 0xac, 0xff}}},\n    {{{ -4001,  -3419,  -4822}, 0, {   990,      0}, {0x0b, 0x5a, 0xa8, 0xff}}},\n    {{{ -4011,  -3419,  -4720}, 0, {   946,    -28}, {0xe1, 0x59, 0x54, 0xff}}},\n    {{{ -2736,  -3281,  -4177}, 0, {     0,      0}, {0x1a, 0x44, 0x99, 0xff}}},\n};\n\n// 0x070068C0 - 0x070069B0\nstatic const Vtx pss_seg7_vertex_070068C0[] = {\n    {{{ -1734,  -2913,  -4417}, 0, {   -40,      0}, {0x4a, 0x59, 0x31, 0xff}}},\n    {{{ -1819,  -2913,  -4474}, 0, {     0,      0}, {0xa6, 0x56, 0xe7, 0xff}}},\n    {{{ -1940,  -2993,  -4136}, 0, {  1086,    -48}, {0x2c, 0x57, 0x50, 0xff}}},\n    {{{ -2462,  -3182,  -4014}, 0, {   -96,    -20}, {0xdf, 0x53, 0x5a, 0xff}}},\n    {{{ -2459,  -3182,  -4116}, 0, {     0,      0}, {0xef, 0x54, 0xa4, 0xff}}},\n    {{{ -2773,  -3281,  -4081}, 0, {  1046,    -44}, {0xd2, 0x62, 0x41, 0xff}}},\n    {{{ -2736,  -3281,  -4177}, 0, {   990,      0}, {0x1a, 0x44, 0x99, 0xff}}},\n    {{{ -2174,  -3080,  -4024}, 0, {  -146,     -8}, {0xff, 0x53, 0x5f, 0xff}}},\n    {{{ -2204,  -3080,  -4121}, 0, {     0,      0}, {0xd2, 0x55, 0xae, 0xff}}},\n    {{{ -2462,  -3182,  -4014}, 0, {  1012,    -36}, {0xdf, 0x53, 0x5a, 0xff}}},\n    {{{ -2459,  -3182,  -4116}, 0, {   990,      0}, {0xef, 0x54, 0xa4, 0xff}}},\n    {{{ -1940,  -2993,  -4136}, 0, {  -130,    -16}, {0x2c, 0x57, 0x50, 0xff}}},\n    {{{ -2003,  -2993,  -4217}, 0, {     0,      0}, {0xb6, 0x55, 0xc7, 0xff}}},\n    {{{ -2174,  -3080,  -4024}, 0, {  1054,    -44}, {0xff, 0x53, 0x5f, 0xff}}},\n    {{{ -2204,  -3080,  -4121}, 0, {   990,      0}, {0xd2, 0x55, 0xae, 0xff}}},\n};\n\n// 0x070069B0 - 0x07006AA0\nstatic const Vtx pss_seg7_vertex_070069B0[] = {\n    {{{ -1162,  -2590,  -6097}, 0, {    -4,    -40}, {0x36, 0x57, 0x49, 0xff}}},\n    {{{ -1589,  -2733,  -5471}, 0, {   990,      0}, {0xa5, 0x57, 0xf3, 0xff}}},\n    {{{ -1493,  -2733,  -5435}, 0, {   974,    -28}, {0x4d, 0x58, 0x2f, 0xff}}},\n    {{{ -1819,  -2913,  -4474}, 0, {     0,      0}, {0xa6, 0x56, 0xe7, 0xff}}},\n    {{{ -2003,  -2993,  -4217}, 0, {   990,      0}, {0xb6, 0x55, 0xc7, 0xff}}},\n    {{{ -1940,  -2993,  -4136}, 0, {  1086,    -48}, {0x2c, 0x57, 0x50, 0xff}}},\n    {{{ -1634,  -2825,  -4848}, 0, {    -2,    -36}, {0x63, 0x45, 0x24, 0xff}}},\n    {{{ -1730,  -2825,  -4882}, 0, {     0,      0}, {0xb0, 0x62, 0x00, 0xff}}},\n    {{{ -1734,  -2913,  -4417}, 0, {  1082,    -48}, {0x4a, 0x59, 0x31, 0xff}}},\n    {{{ -1819,  -2913,  -4474}, 0, {   990,      0}, {0xa6, 0x56, 0xe7, 0xff}}},\n    {{{ -1493,  -2733,  -5435}, 0, {   -12,    -36}, {0x4d, 0x58, 0x2f, 0xff}}},\n    {{{ -1730,  -2825,  -4882}, 0, {   990,      0}, {0xb0, 0x62, 0x00, 0xff}}},\n    {{{ -1634,  -2825,  -4848}, 0, {  1006,    -36}, {0x63, 0x45, 0x24, 0xff}}},\n    {{{ -1589,  -2733,  -5471}, 0, {     0,      0}, {0xa5, 0x57, 0xf3, 0xff}}},\n    {{{ -1242,  -2590,  -6161}, 0, {     0,      0}, {0xad, 0x57, 0xd9, 0xff}}},\n};\n\n// 0x07006AA0 - 0x07006B90\nstatic const Vtx pss_seg7_vertex_07006AA0[] = {\n    {{{  1683,  -2170,  -6267}, 0, {    -6,    -36}, {0xb8, 0x5a, 0x34, 0xff}}},\n    {{{  1035,  -2211,  -6819}, 0, {   990,      0}, {0x12, 0x5a, 0xa9, 0xff}}},\n    {{{   999,  -2211,  -6723}, 0, {   962,    -28}, {0xd3, 0x59, 0x4e, 0xff}}},\n    {{{  -533,  -2446,  -6600}, 0, {    -8,    -40}, {0x16, 0x57, 0x59, 0xff}}},\n    {{{  -580,  -2446,  -6691}, 0, {     0,      0}, {0xc5, 0x57, 0xbb, 0xff}}},\n    {{{ -1242,  -2590,  -6161}, 0, {   990,      0}, {0xad, 0x57, 0xd9, 0xff}}},\n    {{{ -1162,  -2590,  -6097}, 0, {   964,    -24}, {0x36, 0x57, 0x49, 0xff}}},\n    {{{   220,  -2303,  -6820}, 0, {    -6,    -40}, {0xf4, 0x58, 0x5a, 0xff}}},\n    {{{  -580,  -2446,  -6691}, 0, {   990,      0}, {0xc5, 0x57, 0xbb, 0xff}}},\n    {{{  -533,  -2446,  -6600}, 0, {   966,    -24}, {0x16, 0x57, 0x59, 0xff}}},\n    {{{   212,  -2303,  -6922}, 0, {     0,      0}, {0xe8, 0x58, 0xa9, 0xff}}},\n    {{{   999,  -2211,  -6723}, 0, {    -4,    -36}, {0xd3, 0x59, 0x4e, 0xff}}},\n    {{{   212,  -2303,  -6922}, 0, {   990,      0}, {0xe8, 0x58, 0xa9, 0xff}}},\n    {{{   220,  -2303,  -6820}, 0, {   964,    -28}, {0xf4, 0x58, 0x5a, 0xff}}},\n    {{{  1035,  -2211,  -6819}, 0, {     0,      0}, {0x12, 0x5a, 0xa9, 0xff}}},\n};\n\n// 0x07006B90 - 0x07006C80\nstatic const Vtx pss_seg7_vertex_07006B90[] = {\n    {{{  2275,  -1996,  -4043}, 0, {   -30,      0}, {0xa6, 0x58, 0xf7, 0xff}}},\n    {{{  2378,  -1996,  -4044}, 0, {     0,      0}, {0x59, 0x59, 0xf4, 0xff}}},\n    {{{  2352,  -2088,  -4825}, 0, {   990,      0}, {0x57, 0x59, 0xea, 0xff}}},\n    {{{  1683,  -2170,  -6267}, 0, {    -6,    -36}, {0xb8, 0x5a, 0x34, 0xff}}},\n    {{{  1757,  -2170,  -6338}, 0, {     0,      0}, {0x38, 0x5a, 0xbb, 0xff}}},\n    {{{  1035,  -2211,  -6819}, 0, {   990,      0}, {0x12, 0x5a, 0xa9, 0xff}}},\n    {{{  2085,  -2129,  -5586}, 0, {   -12,      0}, {0xaa, 0x59, 0x17, 0xff}}},\n    {{{  2180,  -2129,  -5624}, 0, {     0,      0}, {0x4f, 0x59, 0xd7, 0xff}}},\n    {{{  1757,  -2170,  -6338}, 0, {   990,      0}, {0x38, 0x5a, 0xbb, 0xff}}},\n    {{{  1683,  -2170,  -6267}, 0, {   962,    -28}, {0xb8, 0x5a, 0x34, 0xff}}},\n    {{{  2251,  -2088,  -4813}, 0, {   -20,      0}, {0xa6, 0x59, 0x01, 0xff}}},\n    {{{  2352,  -2088,  -4825}, 0, {     0,      0}, {0x57, 0x59, 0xea, 0xff}}},\n    {{{  2180,  -2129,  -5624}, 0, {   990,      0}, {0x4f, 0x59, 0xd7, 0xff}}},\n    {{{  2085,  -2129,  -5586}, 0, {   970,      0}, {0xaa, 0x59, 0x17, 0xff}}},\n    {{{  2251,  -2088,  -4813}, 0, {   978,    -28}, {0xa6, 0x59, 0x01, 0xff}}},\n};\n\n// 0x07006C80 - 0x07006D70\nstatic const Vtx pss_seg7_vertex_07006C80[] = {\n    {{{  2251,  -2190,  -4813}, 0, {   990,    480}, {0xa6, 0x58, 0x05, 0xff}}},\n    {{{  2251,  -2088,  -4813}, 0, {   990,      0}, {0xa6, 0x59, 0x01, 0xff}}},\n    {{{  2085,  -2129,  -5586}, 0, {     0,      0}, {0xaa, 0x59, 0x17, 0xff}}},\n    {{{  2275,  -1842,  -2810}, 0, {     0,      0}, {0xcb, 0x6b, 0x28, 0xff}}},\n    {{{  2378,  -1996,  -4044}, 0, {   990,      0}, {0x59, 0x59, 0xf4, 0xff}}},\n    {{{  2275,  -1996,  -4043}, 0, {   988,      0}, {0xa6, 0x58, 0xf7, 0xff}}},\n    {{{  2378,  -1842,  -2811}, 0, {     0,      0}, {0x57, 0x2b, 0x51, 0xff}}},\n    {{{  2275,  -1945,  -2810}, 0, {   990,    480}, {0xd8, 0x77, 0xf3, 0xff}}},\n    {{{  2275,  -1996,  -4043}, 0, {     0,      0}, {0xa6, 0x58, 0xf7, 0xff}}},\n    {{{  2275,  -2098,  -4043}, 0, {     0,    480}, {0xb4, 0x64, 0xf6, 0xff}}},\n    {{{  2275,  -1842,  -2810}, 0, {   990,      0}, {0xcb, 0x6b, 0x28, 0xff}}},\n    {{{  2275,  -2098,  -4043}, 0, {   990,    480}, {0xb4, 0x64, 0xf6, 0xff}}},\n    {{{  2275,  -1996,  -4043}, 0, {   990,      0}, {0xa6, 0x58, 0xf7, 0xff}}},\n    {{{  2251,  -2088,  -4813}, 0, {     0,      0}, {0xa6, 0x59, 0x01, 0xff}}},\n    {{{  2251,  -2190,  -4813}, 0, {     0,    480}, {0xa6, 0x58, 0x05, 0xff}}},\n};\n\n// 0x07006D70 - 0x07006E60\nstatic const Vtx pss_seg7_vertex_07006D70[] = {\n    {{{   999,  -2313,  -6723}, 0, {   990,    480}, {0xde, 0x51, 0x5b, 0xff}}},\n    {{{   220,  -2303,  -6820}, 0, {     0,      0}, {0xf4, 0x58, 0x5a, 0xff}}},\n    {{{   220,  -2405,  -6820}, 0, {     0,    480}, {0x01, 0x51, 0x61, 0xff}}},\n    {{{  2251,  -2190,  -4813}, 0, {   990,    480}, {0xa6, 0x58, 0x05, 0xff}}},\n    {{{  2085,  -2129,  -5586}, 0, {     0,      0}, {0xaa, 0x59, 0x17, 0xff}}},\n    {{{  2085,  -2231,  -5586}, 0, {     0,    480}, {0xa9, 0x55, 0x21, 0xff}}},\n    {{{  2085,  -2231,  -5586}, 0, {   990,    480}, {0xa9, 0x55, 0x21, 0xff}}},\n    {{{  2085,  -2129,  -5586}, 0, {   990,      0}, {0xaa, 0x59, 0x17, 0xff}}},\n    {{{  1683,  -2170,  -6267}, 0, {     0,      0}, {0xb8, 0x5a, 0x34, 0xff}}},\n    {{{  1683,  -2272,  -6267}, 0, {     0,    480}, {0xbc, 0x53, 0x43, 0xff}}},\n    {{{  1683,  -2272,  -6267}, 0, {   990,    480}, {0xbc, 0x53, 0x43, 0xff}}},\n    {{{   999,  -2211,  -6723}, 0, {     0,      0}, {0xd3, 0x59, 0x4e, 0xff}}},\n    {{{   999,  -2313,  -6723}, 0, {     0,    480}, {0xde, 0x51, 0x5b, 0xff}}},\n    {{{  1683,  -2170,  -6267}, 0, {   990,      0}, {0xb8, 0x5a, 0x34, 0xff}}},\n    {{{   999,  -2211,  -6723}, 0, {   990,      0}, {0xd3, 0x59, 0x4e, 0xff}}},\n};\n\n// 0x07006E60 - 0x07006F50\nstatic const Vtx pss_seg7_vertex_07006E60[] = {\n    {{{ -1493,  -2835,  -5435}, 0, {   990,    480}, {0x60, 0x45, 0x2b, 0xff}}},\n    {{{ -1634,  -2825,  -4848}, 0, {     0,      0}, {0x63, 0x45, 0x24, 0xff}}},\n    {{{ -1634,  -2928,  -4848}, 0, {     0,    480}, {0x44, 0x65, 0x22, 0xff}}},\n    {{{   220,  -2405,  -6820}, 0, {   990,    480}, {0x01, 0x51, 0x61, 0xff}}},\n    {{{   220,  -2303,  -6820}, 0, {   990,      0}, {0xf4, 0x58, 0x5a, 0xff}}},\n    {{{  -533,  -2446,  -6600}, 0, {     0,      0}, {0x16, 0x57, 0x59, 0xff}}},\n    {{{  -533,  -2549,  -6600}, 0, {     0,    480}, {0x23, 0x54, 0x58, 0xff}}},\n    {{{  -533,  -2549,  -6600}, 0, {   990,    480}, {0x23, 0x54, 0x58, 0xff}}},\n    {{{  -533,  -2446,  -6600}, 0, {   990,      0}, {0x16, 0x57, 0x59, 0xff}}},\n    {{{ -1162,  -2590,  -6097}, 0, {     0,      0}, {0x36, 0x57, 0x49, 0xff}}},\n    {{{ -1162,  -2692,  -6097}, 0, {     0,    480}, {0x40, 0x57, 0x41, 0xff}}},\n    {{{ -1162,  -2692,  -6097}, 0, {   990,    480}, {0x40, 0x57, 0x41, 0xff}}},\n    {{{ -1493,  -2733,  -5435}, 0, {     0,      0}, {0x4d, 0x58, 0x2f, 0xff}}},\n    {{{ -1493,  -2835,  -5435}, 0, {     0,    480}, {0x60, 0x45, 0x2b, 0xff}}},\n    {{{ -1162,  -2590,  -6097}, 0, {   990,      0}, {0x36, 0x57, 0x49, 0xff}}},\n};\n\n// 0x07006F50 - 0x07007040\nstatic const Vtx pss_seg7_vertex_07006F50[] = {\n    {{{ -1940,  -3096,  -4136}, 0, {   990,    480}, {0x21, 0x56, 0x56, 0xff}}},\n    {{{ -2174,  -3080,  -4024}, 0, {     0,      0}, {0xff, 0x53, 0x5f, 0xff}}},\n    {{{ -2174,  -3183,  -4024}, 0, {     0,    480}, {0xf7, 0x53, 0x5f, 0xff}}},\n    {{{ -1493,  -2835,  -5435}, 0, {   990,    480}, {0x60, 0x45, 0x2b, 0xff}}},\n    {{{ -1493,  -2733,  -5435}, 0, {   990,      0}, {0x4d, 0x58, 0x2f, 0xff}}},\n    {{{ -1634,  -2825,  -4848}, 0, {     0,      0}, {0x63, 0x45, 0x24, 0xff}}},\n    {{{ -1634,  -2928,  -4848}, 0, {   990,    480}, {0x44, 0x65, 0x22, 0xff}}},\n    {{{ -1634,  -2825,  -4848}, 0, {   990,      0}, {0x63, 0x45, 0x24, 0xff}}},\n    {{{ -1734,  -2913,  -4417}, 0, {     0,      0}, {0x4a, 0x59, 0x31, 0xff}}},\n    {{{ -1734,  -3015,  -4417}, 0, {     0,    480}, {0x54, 0x46, 0x3f, 0xff}}},\n    {{{ -1734,  -3015,  -4417}, 0, {   990,    480}, {0x54, 0x46, 0x3f, 0xff}}},\n    {{{ -1734,  -2913,  -4417}, 0, {   990,      0}, {0x4a, 0x59, 0x31, 0xff}}},\n    {{{ -1940,  -2993,  -4136}, 0, {     0,      0}, {0x2c, 0x57, 0x50, 0xff}}},\n    {{{ -1940,  -3096,  -4136}, 0, {     0,    480}, {0x21, 0x56, 0x56, 0xff}}},\n    {{{ -1940,  -2993,  -4136}, 0, {   990,      0}, {0x2c, 0x57, 0x50, 0xff}}},\n};\n\n// 0x07007040 - 0x07007130\nstatic const Vtx pss_seg7_vertex_07007040[] = {\n    {{{ -3325,  -3481,  -4396}, 0, {   990,    480}, {0xd6, 0x6a, 0x35, 0xff}}},\n    {{{ -3325,  -3378,  -4396}, 0, {   990,      0}, {0xcf, 0x58, 0x4c, 0xff}}},\n    {{{ -4011,  -3419,  -4720}, 0, {     0,      0}, {0xe1, 0x59, 0x54, 0xff}}},\n    {{{ -2174,  -3183,  -4024}, 0, {   990,    480}, {0xf7, 0x53, 0x5f, 0xff}}},\n    {{{ -2174,  -3080,  -4024}, 0, {   990,      0}, {0xff, 0x53, 0x5f, 0xff}}},\n    {{{ -2462,  -3182,  -4014}, 0, {     0,      0}, {0xdf, 0x53, 0x5a, 0xff}}},\n    {{{ -2462,  -3285,  -4014}, 0, {     0,    480}, {0xdb, 0x53, 0x58, 0xff}}},\n    {{{ -2462,  -3285,  -4014}, 0, {   990,    480}, {0xdb, 0x53, 0x58, 0xff}}},\n    {{{ -2773,  -3281,  -4081}, 0, {     0,      0}, {0xd2, 0x62, 0x41, 0xff}}},\n    {{{ -2773,  -3384,  -4081}, 0, {     0,    480}, {0xc9, 0x55, 0x4b, 0xff}}},\n    {{{ -2462,  -3182,  -4014}, 0, {   990,      0}, {0xdf, 0x53, 0x5a, 0xff}}},\n    {{{ -2773,  -3384,  -4081}, 0, {   990,    480}, {0xc9, 0x55, 0x4b, 0xff}}},\n    {{{ -2773,  -3281,  -4081}, 0, {   990,      0}, {0xd2, 0x62, 0x41, 0xff}}},\n    {{{ -3325,  -3378,  -4396}, 0, {     0,      0}, {0xcf, 0x58, 0x4c, 0xff}}},\n    {{{ -3325,  -3481,  -4396}, 0, {     0,    480}, {0xd6, 0x6a, 0x35, 0xff}}},\n};\n\n// 0x07007130 - 0x07007220\nstatic const Vtx pss_seg7_vertex_07007130[] = {\n    {{{ -5790,  -3590,  -4473}, 0, {   990,    480}, {0x2f, 0x52, 0x54, 0xff}}},\n    {{{ -6564,  -3638,  -3761}, 0, {     0,      0}, {0x3f, 0x59, 0x40, 0xff}}},\n    {{{ -6564,  -3740,  -3761}, 0, {     0,    480}, {0x4d, 0x55, 0x34, 0xff}}},\n    {{{ -3325,  -3481,  -4396}, 0, {   990,    480}, {0xd6, 0x6a, 0x35, 0xff}}},\n    {{{ -4011,  -3419,  -4720}, 0, {     0,      0}, {0xe1, 0x59, 0x54, 0xff}}},\n    {{{ -4011,  -3522,  -4720}, 0, {     0,    480}, {0xeb, 0x56, 0x5a, 0xff}}},\n    {{{ -4011,  -3522,  -4720}, 0, {   990,    480}, {0xeb, 0x56, 0x5a, 0xff}}},\n    {{{ -4011,  -3419,  -4720}, 0, {   990,      0}, {0xe1, 0x59, 0x54, 0xff}}},\n    {{{ -4901,  -3455,  -4765}, 0, {     0,      0}, {0x03, 0x5a, 0x59, 0xff}}},\n    {{{ -4901,  -3557,  -4765}, 0, {     0,    480}, {0x0e, 0x53, 0x5e, 0xff}}},\n    {{{ -4901,  -3557,  -4765}, 0, {   990,    480}, {0x0e, 0x53, 0x5e, 0xff}}},\n    {{{ -4901,  -3455,  -4765}, 0, {   990,      0}, {0x03, 0x5a, 0x59, 0xff}}},\n    {{{ -5790,  -3487,  -4473}, 0, {     0,      0}, {0x1f, 0x58, 0x54, 0xff}}},\n    {{{ -5790,  -3590,  -4473}, 0, {     0,    480}, {0x2f, 0x52, 0x54, 0xff}}},\n    {{{ -5790,  -3487,  -4473}, 0, {   990,      0}, {0x1f, 0x58, 0x54, 0xff}}},\n};\n\n// 0x07007220 - 0x07007310\nstatic const Vtx pss_seg7_vertex_07007220[] = {\n    {{{ -2736,   2817,   2699}, 0, {   990,    480}, {0x07, 0x59, 0xa7, 0xff}}},\n    {{{ -2573,   2913,   2700}, 0, {     0,      0}, {0x03, 0x59, 0xa7, 0xff}}},\n    {{{ -2573,   2810,   2700}, 0, {     0,    480}, {0x03, 0x59, 0xa7, 0xff}}},\n    {{{ -6564,  -3740,  -3761}, 0, {   990,    480}, {0x4d, 0x55, 0x34, 0xff}}},\n    {{{ -6841,  -3788,  -2797}, 0, {     0,      0}, {0x55, 0x59, 0x1e, 0xff}}},\n    {{{ -6841,  -3890,  -2797}, 0, {     0,    480}, {0x59, 0x57, 0x16, 0xff}}},\n    {{{ -6564,  -3638,  -3761}, 0, {   990,      0}, {0x3f, 0x59, 0x40, 0xff}}},\n    {{{ -6841,  -3890,  -2797}, 0, {   990,    480}, {0x59, 0x57, 0x16, 0xff}}},\n    {{{ -6841,  -3788,  -2797}, 0, {   990,      0}, {0x55, 0x59, 0x1e, 0xff}}},\n    {{{ -6869,  -3931,  -1778}, 0, {     0,      0}, {0x71, 0x38, 0x0b, 0xff}}},\n    {{{ -6869,  -4034,  -1778}, 0, {     0,    480}, {0x59, 0x59, 0x0a, 0xff}}},\n    {{{ -2573,   2810,   2700}, 0, {   990,    480}, {0x03, 0x59, 0xa7, 0xff}}},\n    {{{ -2573,   2913,   2700}, 0, {   990,      0}, {0x03, 0x59, 0xa7, 0xff}}},\n    {{{ -1029,   2868,   2702}, 0, {     0,      0}, {0x10, 0x58, 0xa6, 0xff}}},\n    {{{ -1029,   2765,   2702}, 0, {     0,    480}, {0x10, 0x58, 0xa7, 0xff}}},\n};\n\n// 0x07007310 - 0x07007400\nstatic const Vtx pss_seg7_vertex_07007310[] = {\n    {{{ -2568,   2811,   1676}, 0, {   990,    480}, {0x03, 0x59, 0x59, 0xff}}},\n    {{{ -2731,   2921,   1675}, 0, {     0,      0}, {0x0a, 0x59, 0x59, 0xff}}},\n    {{{ -2731,   2819,   1675}, 0, {     0,    480}, {0x0c, 0x64, 0x4c, 0xff}}},\n    {{{ -2736,   2817,   2699}, 0, {   990,    480}, {0x07, 0x59, 0xa7, 0xff}}},\n    {{{ -2736,   2920,   2699}, 0, {   990,      0}, {0x07, 0x59, 0xa7, 0xff}}},\n    {{{ -2573,   2913,   2700}, 0, {     0,      0}, {0x03, 0x59, 0xa7, 0xff}}},\n    {{{ -4057,   3011,   2698}, 0, {   990,    480}, {0x15, 0x59, 0xa9, 0xff}}},\n    {{{ -4057,   3113,   2698}, 0, {   990,      0}, {0x10, 0x70, 0xc8, 0xff}}},\n    {{{ -2736,   2920,   2699}, 0, {     0,      0}, {0x07, 0x59, 0xa7, 0xff}}},\n    {{{ -2736,   2817,   2699}, 0, {     0,    480}, {0x07, 0x59, 0xa7, 0xff}}},\n    {{{ -1024,   2769,   1678}, 0, {   990,    480}, {0x09, 0x58, 0x5a, 0xff}}},\n    {{{ -2568,   2913,   1676}, 0, {     0,      0}, {0x03, 0x59, 0x59, 0xff}}},\n    {{{ -2568,   2811,   1676}, 0, {     0,    480}, {0x03, 0x59, 0x59, 0xff}}},\n    {{{ -1024,   2871,   1678}, 0, {   990,      0}, {0x09, 0x59, 0x5a, 0xff}}},\n    {{{ -2568,   2913,   1676}, 0, {   990,      0}, {0x03, 0x59, 0x59, 0xff}}},\n};\n\n// 0x07007400 - 0x070074F0\nstatic const Vtx pss_seg7_vertex_07007400[] = {\n    {{{  1456,  -1812,  -1477}, 0, {     0,      0}, {0xa6, 0x54, 0xe3, 0xff}}},\n    {{{  1456,  -2324,  -1477}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1456,  -2237,  -1299}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2731,   2819,   1675}, 0, {   990,    480}, {0x0c, 0x64, 0x4c, 0xff}}},\n    {{{ -2731,   2921,   1675}, 0, {   990,      0}, {0x0a, 0x59, 0x59, 0xff}}},\n    {{{ -3930,   3113,   1674}, 0, {     0,      0}, {0x08, 0x38, 0x71, 0xff}}},\n    {{{ -3930,   3011,   1674}, 0, {     0,    480}, {0x00, 0x58, 0x5a, 0xff}}},\n    {{{ -5845,  -4034,  -1778}, 0, {   990,    480}, {0xb4, 0x65, 0x09, 0xff}}},\n    {{{ -5845,  -3931,  -1778}, 0, {   990,      0}, {0xc7, 0x70, 0x0a, 0xff}}},\n    {{{ -5822,  -3839,  -2610}, 0, {     0,      0}, {0xa4, 0x57, 0x04, 0xff}}},\n    {{{ -5822,  -3941,  -2610}, 0, {     0,    480}, {0xa5, 0x57, 0xfe, 0xff}}},\n    {{{  1456,  -1945,  -2810}, 0, {     0,      0}, {0xd8, 0x77, 0xf3, 0xff}}},\n    {{{  1456,  -2457,  -2810}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1456,  -2324,  -1477}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1456,  -1812,  -1477}, 0, {   990,      0}, {0xa6, 0x54, 0xe3, 0xff}}},\n};\n\n// 0x070074F0 - 0x070075E0\nstatic const Vtx pss_seg7_vertex_070074F0[] = {\n    {{{  1456,  -1484,   -965}, 0, {     0,      0}, {0xa6, 0x59, 0xf9, 0xff}}},\n    {{{  1456,  -1991,    216}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1456,  -1479,    216}, 0, {   990,      0}, {0xa6, 0x57, 0xef, 0xff}}},\n    {{{  1456,  -1812,  -1477}, 0, {     0,      0}, {0xa6, 0x54, 0xe3, 0xff}}},\n    {{{  1456,  -2237,  -1299}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1456,  -1725,  -1299}, 0, {   990,      0}, {0xa6, 0x47, 0xcb, 0xff}}},\n    {{{  1456,  -1725,  -1299}, 0, {     0,      0}, {0xa6, 0x47, 0xcb, 0xff}}},\n    {{{  1456,  -2020,  -1062}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1456,  -1508,  -1062}, 0, {   990,      0}, {0xa5, 0x51, 0xdd, 0xff}}},\n    {{{  1456,  -2237,  -1299}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1456,  -1508,  -1062}, 0, {     0,      0}, {0xa5, 0x51, 0xdd, 0xff}}},\n    {{{  1456,  -2020,  -1062}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1456,  -1996,   -965}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1456,  -1484,   -965}, 0, {   990,      0}, {0xa6, 0x59, 0xf9, 0xff}}},\n    {{{  1456,  -1996,   -965}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070075E0 - 0x070076D0\nstatic const Vtx pss_seg7_vertex_070075E0[] = {\n    {{{  1456,  -1228,    878}, 0, {     0,      0}, {0xa7, 0x59, 0xfb, 0xff}}},\n    {{{  1456,  -1740,    878}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1456,  -1735,   1846}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1456,  -1479,    216}, 0, {     0,      0}, {0xa6, 0x57, 0xef, 0xff}}},\n    {{{  1456,  -1991,    216}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1456,  -1943,    371}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1456,  -1431,    371}, 0, {   990,      0}, {0xa7, 0x53, 0xdf, 0xff}}},\n    {{{  1456,  -1431,    371}, 0, {     0,      0}, {0xa7, 0x53, 0xdf, 0xff}}},\n    {{{  1456,  -1943,    371}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1456,  -1756,    779}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1456,  -1244,    779}, 0, {   990,      0}, {0xa6, 0x56, 0xea, 0xff}}},\n    {{{  1456,  -1244,    779}, 0, {     0,      0}, {0xa6, 0x56, 0xea, 0xff}}},\n    {{{  1456,  -1740,    878}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1456,  -1228,    878}, 0, {   990,      0}, {0xa7, 0x59, 0xfb, 0xff}}},\n    {{{  1456,  -1756,    779}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070076D0 - 0x070077C0\nstatic const Vtx pss_seg7_vertex_070076D0[] = {\n    {{{  1456,   -988,   2623}, 0, {     0,      0}, {0xa7, 0x57, 0xed, 0xff}}},\n    {{{  1456,  -1484,   2722}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1456,   -972,   2722}, 0, {   990,      0}, {0xa6, 0x59, 0xfc, 0xff}}},\n    {{{  1456,  -1228,    878}, 0, {     0,      0}, {0xa7, 0x59, 0xfb, 0xff}}},\n    {{{  1456,  -1735,   1846}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1456,  -1223,   1846}, 0, {   990,      0}, {0xa7, 0x59, 0xf9, 0xff}}},\n    {{{  1456,  -1223,   1846}, 0, {     0,      0}, {0xa7, 0x59, 0xf9, 0xff}}},\n    {{{  1456,  -1735,   1846}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1456,  -1713,   2024}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1456,  -1201,   2024}, 0, {   990,      0}, {0xa6, 0x56, 0xe9, 0xff}}},\n    {{{  1456,  -1201,   2024}, 0, {     0,      0}, {0xa6, 0x56, 0xe9, 0xff}}},\n    {{{  1456,  -1500,   2623}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1456,   -988,   2623}, 0, {   990,      0}, {0xa7, 0x57, 0xed, 0xff}}},\n    {{{  1456,  -1713,   2024}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1456,  -1500,   2623}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070077C0 - 0x070078B0\nstatic const Vtx pss_seg7_vertex_070077C0[] = {\n    {{{  1483,   -768,   5546}, 0, {     0,      0}, {0xbd, 0x6b, 0x00, 0xff}}},\n    {{{  1483,  -1280,   5546}, 0, {     0,   2012}, {0x84, 0x00, 0x17, 0xff}}},\n    {{{  1914,  -1076,   6355}, 0, {   990,   2012}, {0x9b, 0x00, 0x4c, 0xff}}},\n    {{{  1456,   -972,   2722}, 0, {     0,      0}, {0xa6, 0x59, 0xfc, 0xff}}},\n    {{{  1456,  -1492,   3644}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1456,   -980,   3644}, 0, {   990,      0}, {0x96, 0x45, 0xff, 0xff}}},\n    {{{  1456,  -1484,   2722}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1456,   -980,   3644}, 0, {     0,      0}, {0x96, 0x45, 0xff, 0xff}}},\n    {{{  1456,  -1492,   3644}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1456,  -1433,   4677}, 0, {   990,   2012}, {0x82, 0x00, 0x01, 0xff}}},\n    {{{  1456,   -921,   4677}, 0, {   990,      0}, {0xb8, 0x68, 0xf7, 0xff}}},\n    {{{  1456,   -921,   4677}, 0, {     0,      0}, {0xb8, 0x68, 0xf7, 0xff}}},\n    {{{  1456,  -1433,   4677}, 0, {     0,   2012}, {0x82, 0x00, 0x01, 0xff}}},\n    {{{  1483,  -1280,   5546}, 0, {   990,   2012}, {0x84, 0x00, 0x17, 0xff}}},\n    {{{  1483,   -768,   5546}, 0, {   990,      0}, {0xbd, 0x6b, 0x00, 0xff}}},\n};\n\n// 0x070078B0 - 0x070079A0\nstatic const Vtx pss_seg7_vertex_070078B0[] = {\n    {{{  3681,   -333,   7088}, 0, {     0,      0}, {0xfd, 0x73, 0x34, 0xff}}},\n    {{{  4672,   -741,   6979}, 0, {   990,   2012}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  4672,   -229,   6979}, 0, {   990,      0}, {0x17, 0x73, 0x30, 0xff}}},\n    {{{  1483,   -768,   5546}, 0, {     0,      0}, {0xbd, 0x6b, 0x00, 0xff}}},\n    {{{  1914,  -1076,   6355}, 0, {   990,   2012}, {0x9b, 0x00, 0x4c, 0xff}}},\n    {{{  1914,   -564,   6355}, 0, {   990,      0}, {0xbb, 0x53, 0x41, 0xff}}},\n    {{{  1914,   -564,   6355}, 0, {     0,      0}, {0xbb, 0x53, 0x41, 0xff}}},\n    {{{  1914,  -1076,   6355}, 0, {     0,   2012}, {0x9b, 0x00, 0x4c, 0xff}}},\n    {{{  2701,   -968,   6904}, 0, {   990,   2012}, {0xc7, 0x00, 0x71, 0xff}}},\n    {{{  2701,   -456,   6904}, 0, {   990,      0}, {0xf5, 0x76, 0x2c, 0xff}}},\n    {{{  2701,   -456,   6904}, 0, {     0,      0}, {0xf5, 0x76, 0x2c, 0xff}}},\n    {{{  3681,   -845,   7088}, 0, {   990,   2012}, {0xf5, 0x00, 0x7e, 0xff}}},\n    {{{  3681,   -333,   7088}, 0, {   990,      0}, {0xfd, 0x73, 0x34, 0xff}}},\n    {{{  2701,   -968,   6904}, 0, {     0,   2012}, {0xc7, 0x00, 0x71, 0xff}}},\n    {{{  3681,   -845,   7088}, 0, {     0,   2012}, {0xf5, 0x00, 0x7e, 0xff}}},\n};\n\n// 0x070079A0 - 0x07007A90\nstatic const Vtx pss_seg7_vertex_070079A0[] = {\n    {{{  6292,     78,   4538}, 0, {     0,      0}, {0x11, 0x7d, 0x01, 0xff}}},\n    {{{  6292,   -433,   4538}, 0, {     0,   2012}, {0x7e, 0x00, 0x0a, 0xff}}},\n    {{{  6072,   -365,   3531}, 0, {   990,   2012}, {0x77, 0x00, 0xd6, 0xff}}},\n    {{{  4672,   -229,   6979}, 0, {     0,      0}, {0x17, 0x73, 0x30, 0xff}}},\n    {{{  4672,   -741,   6979}, 0, {     0,   2012}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  5531,   -639,   6436}, 0, {   990,   2012}, {0x53, 0x00, 0x5f, 0xff}}},\n    {{{  5531,   -127,   6436}, 0, {   990,      0}, {0x2a, 0x73, 0x1f, 0xff}}},\n    {{{  5531,   -127,   6436}, 0, {     0,      0}, {0x2a, 0x73, 0x1f, 0xff}}},\n    {{{  6060,   -538,   5553}, 0, {   990,   2012}, {0x73, 0x00, 0x35, 0xff}}},\n    {{{  6060,    -26,   5553}, 0, {   990,      0}, {0x32, 0x73, 0x12, 0xff}}},\n    {{{  5531,   -639,   6436}, 0, {     0,   2012}, {0x53, 0x00, 0x5f, 0xff}}},\n    {{{  6060,    -26,   5553}, 0, {     0,      0}, {0x32, 0x73, 0x12, 0xff}}},\n    {{{  6060,   -538,   5553}, 0, {     0,   2012}, {0x73, 0x00, 0x35, 0xff}}},\n    {{{  6292,   -433,   4538}, 0, {   990,   2012}, {0x7e, 0x00, 0x0a, 0xff}}},\n    {{{  6292,     78,   4538}, 0, {   990,      0}, {0x11, 0x7d, 0x01, 0xff}}},\n};\n\n// 0x07007A90 - 0x07007B80\nstatic const Vtx pss_seg7_vertex_07007A90[] = {\n    {{{  4823,    236,   2128}, 0, {     0,      0}, {0x1b, 0x6d, 0xc6, 0xff}}},\n    {{{  4823,   -275,   2128}, 0, {     0,   2012}, {0x45, 0x00, 0x96, 0xff}}},\n    {{{  3904,   -204,   1784}, 0, {   990,   2012}, {0x22, 0x00, 0x86, 0xff}}},\n    {{{  6292,     78,   4538}, 0, {     0,      0}, {0x11, 0x7d, 0x01, 0xff}}},\n    {{{  6072,   -365,   3531}, 0, {   990,   2012}, {0x77, 0x00, 0xd6, 0xff}}},\n    {{{  6072,    146,   3531}, 0, {   990,      0}, {0x2e, 0x75, 0xf2, 0xff}}},\n    {{{  6072,    146,   3531}, 0, {     0,      0}, {0x2e, 0x75, 0xf2, 0xff}}},\n    {{{  5540,   -296,   2725}, 0, {   990,   2012}, {0x62, 0x00, 0xb1, 0xff}}},\n    {{{  5540,    215,   2725}, 0, {   990,      0}, {0x42, 0x54, 0xbd, 0xff}}},\n    {{{  6072,   -365,   3531}, 0, {     0,   2012}, {0x77, 0x00, 0xd6, 0xff}}},\n    {{{  5540,    215,   2725}, 0, {     0,      0}, {0x42, 0x54, 0xbd, 0xff}}},\n    {{{  5540,   -296,   2725}, 0, {     0,   2012}, {0x62, 0x00, 0xb1, 0xff}}},\n    {{{  4823,   -275,   2128}, 0, {   990,   2012}, {0x45, 0x00, 0x96, 0xff}}},\n    {{{  4823,    236,   2128}, 0, {   990,      0}, {0x1b, 0x6d, 0xc6, 0xff}}},\n    {{{  3904,    307,   1784}, 0, {   990,      0}, {0x19, 0x6a, 0xc0, 0xff}}},\n};\n\n// 0x07007B80 - 0x07007C70\nstatic const Vtx pss_seg7_vertex_07007B80[] = {\n    {{{  2275,  -1725,  -1299}, 0, {     0,      0}, {0x5a, 0x4c, 0xd2, 0xff}}},\n    {{{  2275,  -2237,  -1299}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2275,  -2324,  -1477}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3904,    307,   1784}, 0, {     0,      0}, {0x19, 0x6a, 0xc0, 0xff}}},\n    {{{  3904,   -204,   1784}, 0, {     0,   2012}, {0x22, 0x00, 0x86, 0xff}}},\n    {{{  2946,      0,   1683}, 0, {   990,   2012}, {0x08, 0x00, 0x82, 0xff}}},\n    {{{  2946,    512,   1683}, 0, {   990,      0}, {0x1a, 0x57, 0xa8, 0xff}}},\n    {{{  2946,    512,   1683}, 0, {     0,      0}, {0x1a, 0x57, 0xa8, 0xff}}},\n    {{{  2598,    112,   1683}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2598,    624,   1683}, 0, {   990,      0}, {0x2e, 0x6e, 0x2a, 0xff}}},\n    {{{  2946,      0,   1683}, 0, {     0,   2012}, {0x08, 0x00, 0x82, 0xff}}},\n    {{{  2275,  -1812,  -1477}, 0, {     0,      0}, {0x5a, 0x57, 0xed, 0xff}}},\n    {{{  2275,  -2324,  -1477}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2275,  -2457,  -2810}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2275,  -1945,  -2810}, 0, {   990,      0}, {0xd8, 0x77, 0xf3, 0xff}}},\n};\n\n// 0x07007C70 - 0x07007D60\nstatic const Vtx pss_seg7_vertex_07007C70[] = {\n    {{{  2275,  -1479,    216}, 0, {     0,      0}, {0x5a, 0x58, 0xf7, 0xff}}},\n    {{{  2275,  -1996,   -965}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2275,  -1484,   -965}, 0, {   990,      0}, {0x5a, 0x58, 0xf2, 0xff}}},\n    {{{  2275,  -1725,  -1299}, 0, {     0,      0}, {0x5a, 0x4c, 0xd2, 0xff}}},\n    {{{  2275,  -2324,  -1477}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2275,  -1812,  -1477}, 0, {   990,      0}, {0x5a, 0x57, 0xed, 0xff}}},\n    {{{  2275,  -1508,  -1062}, 0, {     0,      0}, {0x5b, 0x4a, 0xd0, 0xff}}},\n    {{{  2275,  -2020,  -1062}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2275,  -2237,  -1299}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2275,  -1725,  -1299}, 0, {   990,      0}, {0x5a, 0x4c, 0xd2, 0xff}}},\n    {{{  2275,  -1484,   -965}, 0, {     0,      0}, {0x5a, 0x58, 0xf2, 0xff}}},\n    {{{  2275,  -1996,   -965}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2275,  -2020,  -1062}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2275,  -1508,  -1062}, 0, {   990,      0}, {0x5b, 0x4a, 0xd0, 0xff}}},\n    {{{  2275,  -1991,    216}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07007D60 - 0x07007E50\nstatic const Vtx pss_seg7_vertex_07007D60[] = {\n    {{{  2275,  -1223,   1846}, 0, {     0,      0}, {0x59, 0x59, 0xfd, 0xff}}},\n    {{{  2275,  -1735,   1846}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2275,  -1740,    878}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2275,  -1431,    371}, 0, {     0,      0}, {0x59, 0x54, 0xe2, 0xff}}},\n    {{{  2275,  -1991,    216}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2275,  -1479,    216}, 0, {   990,      0}, {0x5a, 0x58, 0xf7, 0xff}}},\n    {{{  2275,  -1943,    371}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2275,  -1244,    779}, 0, {     0,      0}, {0x5a, 0x54, 0xe3, 0xff}}},\n    {{{  2275,  -1756,    779}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2275,  -1943,    371}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2275,  -1431,    371}, 0, {   990,      0}, {0x59, 0x54, 0xe2, 0xff}}},\n    {{{  2275,  -1228,    878}, 0, {     0,      0}, {0x59, 0x59, 0xf7, 0xff}}},\n    {{{  2275,  -1756,    779}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2275,  -1244,    779}, 0, {   990,      0}, {0x5a, 0x54, 0xe3, 0xff}}},\n    {{{  2275,  -1740,    878}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07007E50 - 0x07007F40\nstatic const Vtx pss_seg7_vertex_07007E50[] = {\n    {{{  2275,   -972,   2722}, 0, {     0,      0}, {0x59, 0x59, 0xf7, 0xff}}},\n    {{{  2275,  -1500,   2623}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2275,   -988,   2623}, 0, {   990,      0}, {0x59, 0x56, 0xe8, 0xff}}},\n    {{{  2275,  -1223,   1846}, 0, {     0,      0}, {0x59, 0x59, 0xfd, 0xff}}},\n    {{{  2275,  -1740,    878}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2275,  -1228,    878}, 0, {   990,      0}, {0x59, 0x59, 0xf7, 0xff}}},\n    {{{  2275,  -1201,   2024}, 0, {     0,      0}, {0x5a, 0x57, 0xef, 0xff}}},\n    {{{  2275,  -1713,   2024}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2275,  -1735,   1846}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2275,  -1223,   1846}, 0, {   990,      0}, {0x59, 0x59, 0xfd, 0xff}}},\n    {{{  2275,   -988,   2623}, 0, {     0,      0}, {0x59, 0x56, 0xe8, 0xff}}},\n    {{{  2275,  -1713,   2024}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2275,  -1201,   2024}, 0, {   990,      0}, {0x5a, 0x57, 0xef, 0xff}}},\n    {{{  2275,  -1500,   2623}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2275,  -1484,   2722}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07007F40 - 0x07008030\nstatic const Vtx pss_seg7_vertex_07007F40[] = {\n    {{{  2343,   -828,   5186}, 0, {     0,      0}, {0x52, 0x5a, 0xdf, 0xff}}},\n    {{{  2275,  -1433,   4566}, 0, {   990,   2012}, {0x7e, 0x00, 0xf7, 0xff}}},\n    {{{  2275,   -921,   4566}, 0, {   990,      0}, {0x58, 0x5a, 0xf4, 0xff}}},\n    {{{  2275,   -967,   3644}, 0, {     0,      0}, {0x4b, 0x66, 0xfe, 0xff}}},\n    {{{  2275,  -1479,   3644}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2275,  -1484,   2722}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2275,   -972,   2722}, 0, {   990,      0}, {0x59, 0x59, 0xf7, 0xff}}},\n    {{{  2275,   -921,   4566}, 0, {     0,      0}, {0x58, 0x5a, 0xf4, 0xff}}},\n    {{{  2275,  -1433,   4566}, 0, {     0,   2012}, {0x7e, 0x00, 0xf7, 0xff}}},\n    {{{  2275,  -1479,   3644}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2275,   -967,   3644}, 0, {   990,      0}, {0x4b, 0x66, 0xfe, 0xff}}},\n    {{{  2598,    726,   1580}, 0, {     0,      0}, {0x48, 0x28, 0xa1, 0xff}}},\n    {{{  2598,    214,   1580}, 0, {     0,   2012}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  -776,   2267,   1576}, 0, {   990,   2012}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{  2343,  -1340,   5186}, 0, {     0,   2012}, {0x75, 0x00, 0xd1, 0xff}}},\n};\n\n// 0x07008030 - 0x07008120\nstatic const Vtx pss_seg7_vertex_07008030[] = {\n    {{{  4329,   -450,   6074}, 0, {     0,      0}, {0xdc, 0x59, 0xae, 0xff}}},\n    {{{  4329,   -962,   6074}, 0, {     0,   2012}, {0xcd, 0x00, 0x8c, 0xff}}},\n    {{{  3681,  -1064,   6163}, 0, {   990,   2012}, {0xfd, 0x00, 0x82, 0xff}}},\n    {{{  2617,   -736,   5671}, 0, {     0,      0}, {0x3f, 0x5a, 0xc1, 0xff}}},\n    {{{  2617,  -1248,   5671}, 0, {     0,   2012}, {0x5c, 0x00, 0xaa, 0xff}}},\n    {{{  2343,  -1340,   5186}, 0, {   990,   2012}, {0x75, 0x00, 0xd1, 0xff}}},\n    {{{  2343,   -828,   5186}, 0, {   990,      0}, {0x52, 0x5a, 0xdf, 0xff}}},\n    {{{  3057,   -644,   6044}, 0, {     0,      0}, {0x21, 0x5a, 0xae, 0xff}}},\n    {{{  3057,  -1156,   6044}, 0, {     0,   2012}, {0x2c, 0x00, 0x8a, 0xff}}},\n    {{{  2617,  -1248,   5671}, 0, {   990,   2012}, {0x5c, 0x00, 0xaa, 0xff}}},\n    {{{  2617,   -736,   5671}, 0, {   990,      0}, {0x3f, 0x5a, 0xc1, 0xff}}},\n    {{{  3681,   -552,   6163}, 0, {     0,      0}, {0xfb, 0x58, 0xa6, 0xff}}},\n    {{{  3057,  -1156,   6044}, 0, {   990,   2012}, {0x2c, 0x00, 0x8a, 0xff}}},\n    {{{  3057,   -644,   6044}, 0, {   990,      0}, {0x21, 0x5a, 0xae, 0xff}}},\n    {{{  3681,  -1064,   6163}, 0, {     0,   2012}, {0xfd, 0x00, 0x82, 0xff}}},\n};\n\n// 0x07008120 - 0x07008210\nstatic const Vtx pss_seg7_vertex_07008120[] = {\n    {{{  5380,   -139,   4525}, 0, {     0,      0}, {0xa6, 0x59, 0x01, 0xff}}},\n    {{{  5191,   -757,   5215}, 0, {   990,   2012}, {0x8a, 0x00, 0xd3, 0xff}}},\n    {{{  5191,   -245,   5215}, 0, {   990,      0}, {0xaa, 0x58, 0xe4, 0xff}}},\n    {{{  4329,   -450,   6074}, 0, {     0,      0}, {0xdc, 0x59, 0xae, 0xff}}},\n    {{{  3681,  -1064,   6163}, 0, {   990,   2012}, {0xfd, 0x00, 0x82, 0xff}}},\n    {{{  3681,   -552,   6163}, 0, {   990,      0}, {0xfb, 0x58, 0xa6, 0xff}}},\n    {{{  4860,   -347,   5748}, 0, {     0,      0}, {0xbc, 0x59, 0xc5, 0xff}}},\n    {{{  4329,   -962,   6074}, 0, {   990,   2012}, {0xcd, 0x00, 0x8c, 0xff}}},\n    {{{  4329,   -450,   6074}, 0, {   990,      0}, {0xdc, 0x59, 0xae, 0xff}}},\n    {{{  4860,   -859,   5748}, 0, {     0,   2012}, {0xa0, 0x00, 0xae, 0xff}}},\n    {{{  5191,   -245,   5215}, 0, {     0,      0}, {0xaa, 0x58, 0xe4, 0xff}}},\n    {{{  5191,   -757,   5215}, 0, {     0,   2012}, {0x8a, 0x00, 0xd3, 0xff}}},\n    {{{  4860,   -859,   5748}, 0, {   990,   2012}, {0xa0, 0x00, 0xae, 0xff}}},\n    {{{  4860,   -347,   5748}, 0, {   990,      0}, {0xbc, 0x59, 0xc5, 0xff}}},\n    {{{  5380,   -651,   4525}, 0, {     0,   2012}, {0x82, 0x00, 0x04, 0xff}}},\n};\n\n// 0x07008210 - 0x07008300\nstatic const Vtx pss_seg7_vertex_07008210[] = {\n    {{{  3699,    297,   2752}, 0, {     0,      0}, {0x01, 0x58, 0x5b, 0xff}}},\n    {{{  4360,   -327,   2924}, 0, {   990,   2012}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  4360,    184,   2924}, 0, {   990,      0}, {0xde, 0x59, 0x53, 0xff}}},\n    {{{  5245,    -37,   3820}, 0, {     0,      0}, {0xb1, 0x58, 0x2a, 0xff}}},\n    {{{  5245,   -549,   3820}, 0, {     0,   2012}, {0x92, 0x00, 0x3e, 0xff}}},\n    {{{  5380,   -651,   4525}, 0, {   990,   2012}, {0x82, 0x00, 0x04, 0xff}}},\n    {{{  5380,   -139,   4525}, 0, {   990,      0}, {0xa6, 0x59, 0x01, 0xff}}},\n    {{{  4846,     72,   3315}, 0, {     0,      0}, {0xc7, 0x58, 0x47, 0xff}}},\n    {{{  4846,   -439,   3315}, 0, {     0,   2012}, {0xaa, 0x00, 0x5c, 0xff}}},\n    {{{  5245,   -549,   3820}, 0, {   990,   2012}, {0x92, 0x00, 0x3e, 0xff}}},\n    {{{  5245,    -37,   3820}, 0, {   990,      0}, {0xb1, 0x58, 0x2a, 0xff}}},\n    {{{  4360,    184,   2924}, 0, {     0,      0}, {0xde, 0x59, 0x53, 0xff}}},\n    {{{  4360,   -327,   2924}, 0, {     0,   2012}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  4846,   -439,   3315}, 0, {   990,   2012}, {0xaa, 0x00, 0x5c, 0xff}}},\n    {{{  4846,     72,   3315}, 0, {   990,      0}, {0xc7, 0x58, 0x47, 0xff}}},\n};\n\n// 0x07008300 - 0x070083B0\nstatic const Vtx pss_seg7_vertex_07008300[] = {\n    {{{  2471,    658,   2707}, 0, {     0,      0}, {0x37, 0x6a, 0x2a, 0xff}}},\n    {{{  2471,    146,   2707}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2892,      0,   2707}, 0, {   990,   2012}, {0xfe, 0x00, 0x7e, 0xff}}},\n    {{{  3699,    297,   2752}, 0, {     0,      0}, {0x01, 0x58, 0x5b, 0xff}}},\n    {{{  3699,   -214,   2752}, 0, {     0,   2012}, {0xf1, 0x00, 0x7e, 0xff}}},\n    {{{  4360,   -327,   2924}, 0, {   990,   2012}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  2892,    512,   2707}, 0, {     0,      0}, {0x17, 0x55, 0x5a, 0xff}}},\n    {{{  2892,      0,   2707}, 0, {     0,   2012}, {0xfe, 0x00, 0x7e, 0xff}}},\n    {{{  3699,   -214,   2752}, 0, {   990,   2012}, {0xf1, 0x00, 0x7e, 0xff}}},\n    {{{  3699,    297,   2752}, 0, {   990,      0}, {0x01, 0x58, 0x5b, 0xff}}},\n    {{{  2892,    512,   2707}, 0, {   990,      0}, {0x17, 0x55, 0x5a, 0xff}}},\n};\n\n// 0x070083B0 - 0x07008E20\nstatic const Gfx pss_seg7_dl_070083B0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_0900C000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&pss_seg7_lights_07001800.l, 1),\n    gsSPLight(&pss_seg7_lights_07001800.a, 2),\n    gsSPVertex(pss_seg7_vertex_07001830, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11,  1, 0x0),\n    gsSP2Triangles(12,  1,  0, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(pss_seg7_vertex_07001930, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  3,  5,  6, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(12, 11, 13, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(14, 13, 15, 0x0),\n    gsSPVertex(pss_seg7_vertex_07001A30, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP1Triangle( 2,  3,  4, 0x0),\n    gsSPLight(&pss_seg7_lights_07001818.l, 1),\n    gsSPLight(&pss_seg7_lights_07001818.a, 2),\n    gsSPVertex(pss_seg7_vertex_07001A80, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  4,  0,  6, 0x0),\n    gsSP2Triangles( 7,  8,  4, 0x0,  3,  7,  4, 0x0),\n    gsSP2Triangles( 4,  8,  0, 0x0,  8,  1,  0, 0x0),\n    gsSP2Triangles( 6,  0,  2, 0x0,  9,  5,  6, 0x0),\n    gsSP2Triangles( 5, 10,  3, 0x0, 10,  5,  9, 0x0),\n    gsSP2Triangles(11,  3, 10, 0x0, 12,  7,  3, 0x0),\n    gsSP2Triangles(11, 12,  3, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(pss_seg7_vertex_07001B80, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 3,  0,  4, 0x0,  5,  2,  1, 0x0),\n    gsSP2Triangles( 6,  7,  2, 0x0,  5,  6,  2, 0x0),\n    gsSP2Triangles( 1,  8,  5, 0x0,  9,  1,  3, 0x0),\n    gsSP2Triangles( 8,  1,  9, 0x0, 10,  5,  8, 0x0),\n    gsSP2Triangles(11,  6,  5, 0x0, 10, 11,  5, 0x0),\n    gsSP2Triangles( 8, 12, 10, 0x0, 13,  8,  9, 0x0),\n    gsSPVertex(pss_seg7_vertex_07001C60, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 2,  6,  4, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 5,  7,  3, 0x0,  7,  5,  8, 0x0),\n    gsSP2Triangles( 8,  5,  9, 0x0,  2,  3, 10, 0x0),\n    gsSP2Triangles(11,  3,  7, 0x0, 11, 10,  3, 0x0),\n    gsSP2Triangles(10,  0,  2, 0x0,  0, 10, 12, 0x0),\n    gsSP2Triangles(13, 12, 10, 0x0, 13, 10, 11, 0x0),\n    gsSP2Triangles(12, 14,  0, 0x0, 14,  1,  0, 0x0),\n    gsSP1Triangle(15, 14, 12, 0x0),\n    gsSPVertex(pss_seg7_vertex_07001D60, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  8,  1,  9, 0x0),\n    gsSP2Triangles( 1,  0,  9, 0x0,  4,  1,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  4,  8, 13, 0x0),\n    gsSP2Triangles( 4, 14,  6, 0x0, 13, 14,  4, 0x0),\n    gsSP1Triangle(13,  8, 15, 0x0),\n    gsSPVertex(pss_seg7_vertex_07001E60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  4,  6,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  4,  1,  8, 0x0),\n    gsSP2Triangles( 9,  8,  1, 0x0,  9,  1,  0, 0x0),\n    gsSP2Triangles( 8, 10,  4, 0x0, 10, 11,  4, 0x0),\n    gsSP2Triangles( 8, 12, 10, 0x0, 13, 12,  8, 0x0),\n    gsSP2Triangles(13,  8,  9, 0x0, 12, 14, 10, 0x0),\n    gsSPVertex(pss_seg7_vertex_07001F50, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 4,  1,  0, 0x0,  5,  6,  3, 0x0),\n    gsSP2Triangles( 2,  5,  3, 0x0,  2,  1,  7, 0x0),\n    gsSP2Triangles( 8,  5,  2, 0x0,  7,  8,  2, 0x0),\n    gsSP2Triangles( 1,  9,  7, 0x0,  9,  1,  4, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  7,  9, 11, 0x0),\n    gsSP2Triangles(10,  9, 12, 0x0, 13,  8,  7, 0x0),\n    gsSP2Triangles(11, 13,  7, 0x0, 10, 14, 11, 0x0),\n    gsSP2Triangles(15, 13, 11, 0x0, 14, 15, 11, 0x0),\n    gsSPVertex(pss_seg7_vertex_07002050, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 1,  0,  3, 0x0,  4,  5,  6, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0, 10,  2,  1, 0x0),\n    gsSP2Triangles(10, 11,  2, 0x0, 11, 12,  2, 0x0),\n    gsSP2Triangles( 1, 13, 10, 0x0, 14,  1,  3, 0x0),\n    gsSP2Triangles(13,  1, 14, 0x0,  9, 10, 13, 0x0),\n    gsSP2Triangles( 9, 15, 10, 0x0, 15, 11, 10, 0x0),\n    gsSPVertex(pss_seg7_vertex_07002150, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  4, 0x0),\n    gsSP2Triangles( 2,  1,  3, 0x0,  5,  0,  2, 0x0),\n    gsSP2Triangles( 6,  7,  0, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 5,  2, 11, 0x0, 12,  2,  3, 0x0),\n    gsSP2Triangles(11,  2, 12, 0x0, 13,  5, 11, 0x0),\n    gsSP2Triangles(14, 13, 11, 0x0,  8, 10, 15, 0x0),\n    gsSPVertex(pss_seg7_vertex_07002250, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  0, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  3,  2,  8, 0x0),\n    gsSP2Triangles( 3,  8,  9, 0x0, 10,  4,  3, 0x0),\n    gsSP2Triangles( 9, 10,  3, 0x0,  9,  8, 11, 0x0),\n    gsSP2Triangles(12,  9, 11, 0x0, 12, 13,  9, 0x0),\n    gsSP2Triangles(13, 10,  9, 0x0, 12, 11, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_07002340, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  3, 0x0,  5,  6,  3, 0x0),\n    gsSP2Triangles( 5,  4,  8, 0x0,  9,  5,  8, 0x0),\n    gsSP2Triangles(10,  6,  5, 0x0,  9, 10,  5, 0x0),\n    gsSP2Triangles( 9,  8, 11, 0x0,  2,  9, 11, 0x0),\n    gsSP2Triangles(12, 10,  9, 0x0,  2, 12,  9, 0x0),\n    gsSP2Triangles( 2, 11, 13, 0x0,  0,  2, 13, 0x0),\n    gsSP2Triangles( 1, 12,  2, 0x0,  0, 13, 14, 0x0),\n    gsSP1Triangle( 0, 14, 15, 0x0),\n    gsSPVertex(pss_seg7_vertex_07002440, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  0,  5,  6, 0x0),\n    gsSP2Triangles( 7,  1,  0, 0x0,  6,  7,  0, 0x0),\n    gsSP2Triangles( 6,  5,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 6, 10,  9, 0x0,  8, 10,  6, 0x0),\n    gsSP2Triangles(10,  8, 11, 0x0, 12, 10, 11, 0x0),\n    gsSP1Triangle(13, 12, 11, 0x0),\n    gsSPVertex(pss_seg7_vertex_07002520, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 2,  4,  0, 0x0,  3,  5,  1, 0x0),\n    gsSP2Triangles( 3,  6,  5, 0x0,  7,  8,  4, 0x0),\n    gsSP2Triangles( 2,  7,  4, 0x0,  9,  5,  6, 0x0),\n    gsSP2Triangles( 9,  6, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13,  8, 0x0,  7, 11,  8, 0x0),\n    gsSP2Triangles(12, 14, 15, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(pss_seg7_vertex_07002620, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  3,  5, 0x0),\n    gsSP2Triangles( 6,  8,  4, 0x0,  6,  9,  8, 0x0),\n    gsSP2Triangles( 7,  5, 10, 0x0, 11,  7, 10, 0x0),\n    gsSP2Triangles(11, 10, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(pss_seg7_vertex_07002720, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 5,  3,  0, 0x0,  5,  0,  6, 0x0),\n    gsSP2Triangles( 6,  0,  2, 0x0,  7,  8,  4, 0x0),\n    gsSP2Triangles( 3,  7,  4, 0x0,  4,  8,  9, 0x0),\n    gsSP2Triangles( 4,  9,  1, 0x0,  1, 10, 11, 0x0),\n    gsSP2Triangles( 2,  1, 11, 0x0,  1,  9, 10, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_07002810, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  7,  6, 0x0),\n    gsSP2Triangles( 3,  8,  7, 0x0,  9,  8,  3, 0x0),\n    gsSP2Triangles( 5,  4, 10, 0x0,  4,  6, 11, 0x0),\n    gsSP2Triangles( 6,  7, 12, 0x0,  6, 12, 13, 0x0),\n    gsSP2Triangles( 6, 13, 11, 0x0,  4, 11, 14, 0x0),\n    gsSP1Triangle(10,  4, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_07002900, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 1,  5,  2, 0x0,  6,  2,  7, 0x0),\n    gsSP2Triangles( 6,  0,  2, 0x0,  8,  6,  7, 0x0),\n    gsSP2Triangles( 8,  7,  9, 0x0, 10,  8,  9, 0x0),\n    gsSP2Triangles(10,  9, 11, 0x0, 12, 10, 11, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(pss_seg7_vertex_07002A00, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  2, 0x0,  5,  3,  2, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(pss_seg7_vertex_07002B00, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  0, 0x0,  4,  0,  3, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 11, 13, 0x0),\n    gsSPVertex(pss_seg7_vertex_07002BE0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  0,  6, 0x0,  0,  7,  6, 0x0),\n    gsSP2Triangles( 0,  2,  7, 0x0,  7,  2,  8, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles( 6,  7, 10, 0x0,  4,  6,  5, 0x0),\n    gsSP2Triangles( 5,  6, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles( 5, 10, 14, 0x0,  9,  8, 15, 0x0),\n    gsSPVertex(pss_seg7_vertex_07002CE0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  5,  0,  4, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  2,  3,  7, 0x0),\n    gsSP2Triangles( 2,  7,  8, 0x0,  4,  2,  8, 0x0),\n    gsSP2Triangles( 6,  9, 10, 0x0,  6,  4,  9, 0x0),\n    gsSP2Triangles( 8,  7, 11, 0x0,  9,  8, 12, 0x0),\n    gsSP2Triangles( 9, 12, 13, 0x0, 10,  9, 13, 0x0),\n    gsSP2Triangles(10, 13, 14, 0x0,  8, 11, 12, 0x0),\n    gsSP1Triangle(12, 11, 15, 0x0),\n    gsSPVertex(pss_seg7_vertex_07002DE0, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 3,  2,  5, 0x0,  2,  1,  7, 0x0),\n    gsSP1Triangle( 8,  9, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008E20 - 0x07008EB0\nstatic const Gfx pss_seg7_dl_07008E20[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, pss_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(pss_seg7_vertex_07002E90, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  3,  8,  6, 0x0),\n    gsSP2Triangles( 3,  7,  4, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0,  9, 13, 12, 0x0),\n    gsSP2Triangles( 9, 14, 13, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(pss_seg7_vertex_07002F90, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008EB0 - 0x070095E8\nstatic const Gfx pss_seg7_dl_07008EB0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(pss_seg7_vertex_07002FD0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 2,  4,  0, 0x0,  0,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  8,  9,  0, 0x0),\n    gsSP2Triangles( 0,  9,  1, 0x0,  0,  5,  8, 0x0),\n    gsSP2Triangles( 3, 10,  6, 0x0, 11,  8,  5, 0x0),\n    gsSP2Triangles( 5,  7, 12, 0x0,  5, 12, 11, 0x0),\n    gsSP2Triangles(10,  1,  9, 0x0, 10,  9,  6, 0x0),\n    gsSP1Triangle(13, 14, 12, 0x0),\n    gsSPVertex(pss_seg7_vertex_070030C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  0,  2, 0x0,  5,  0,  4, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 0,  8,  1, 0x0,  5,  9,  0, 0x0),\n    gsSP2Triangles( 9,  8,  0, 0x0, 10,  9,  5, 0x0),\n    gsSP2Triangles( 5,  7, 11, 0x0,  5, 11, 10, 0x0),\n    gsSP2Triangles(10, 12,  9, 0x0, 12, 13,  9, 0x0),\n    gsSP2Triangles( 9, 13,  8, 0x0, 13,  6,  8, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0, 15,  3,  1, 0x0),\n    gsSPVertex(pss_seg7_vertex_070031C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 3,  4,  2, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_070032B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 6,  2,  5, 0x0,  0,  2,  6, 0x0),\n    gsSP2Triangles( 7,  8,  6, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 6,  5,  7, 0x0,  1, 10,  3, 0x0),\n    gsSP2Triangles( 5, 11, 12, 0x0,  5,  4, 11, 0x0),\n    gsSP2Triangles(12,  7,  5, 0x0, 10,  9,  8, 0x0),\n    gsSP1Triangle(13, 14, 11, 0x0),\n    gsSPVertex(pss_seg7_vertex_070033A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  0,  2, 0x0,  4,  5,  6, 0x0),\n    gsSP2Triangles( 4,  7,  5, 0x0,  6,  0,  4, 0x0),\n    gsSP2Triangles( 8,  9,  0, 0x0,  0,  9,  1, 0x0),\n    gsSP2Triangles( 6,  8,  0, 0x0,  6,  5, 10, 0x0),\n    gsSP2Triangles( 6, 10, 11, 0x0, 11,  8,  6, 0x0),\n    gsSP2Triangles(12, 13,  8, 0x0,  8, 13,  9, 0x0),\n    gsSP2Triangles(11, 12,  8, 0x0, 13,  7,  9, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0, 15,  3,  1, 0x0),\n    gsSPVertex(pss_seg7_vertex_070034A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 3,  4,  2, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_07003590, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  2,  5,  6, 0x0),\n    gsSP2Triangles( 2,  6,  4, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles( 7,  8,  3, 0x0,  3,  8,  9, 0x0),\n    gsSP2Triangles( 3,  4,  7, 0x0,  1, 10,  5, 0x0),\n    gsSP2Triangles(11,  7,  4, 0x0,  4,  6, 12, 0x0),\n    gsSP2Triangles( 4, 12, 11, 0x0, 10,  9,  8, 0x0),\n    gsSP2Triangles(13, 14, 12, 0x0, 11, 15,  7, 0x0),\n    gsSPVertex(pss_seg7_vertex_07003690, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  0,  5, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  4, 0x0,  4,  8,  0, 0x0),\n    gsSP2Triangles( 8,  9,  0, 0x0,  0,  9,  1, 0x0),\n    gsSP2Triangles(10,  8,  4, 0x0,  4,  7, 11, 0x0),\n    gsSP2Triangles( 4, 11, 10, 0x0, 10, 12,  8, 0x0),\n    gsSP2Triangles( 8, 13,  9, 0x0, 12, 13,  8, 0x0),\n    gsSP1Triangle(13,  6,  9, 0x0),\n    gsSPVertex(pss_seg7_vertex_07003770, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10,  9,  8, 0x0, 10, 11,  9, 0x0),\n    gsSP2Triangles( 4, 12,  5, 0x0,  4, 13, 12, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_07003860, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 8, 12,  9, 0x0,  8, 13, 12, 0x0),\n    gsSPVertex(pss_seg7_vertex_07003940, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  0,  2, 11, 0x0),\n    gsSP2Triangles( 1,  0, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(pss_seg7_vertex_07003A40, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_07003B30, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_07003C20, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(pss_seg7_vertex_07003D00, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_07003DF0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(pss_seg7_vertex_07003EE0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(pss_seg7_vertex_07003FD0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(pss_seg7_vertex_070040C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_070041B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_070042A0, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  1,  0, 0x0,  4,  5,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070095E8 - 0x07009750\nstatic const Gfx pss_seg7_dl_070095E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(pss_seg7_vertex_07004340, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(pss_seg7_vertex_07004430, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(pss_seg7_vertex_07004520, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(pss_seg7_vertex_07004610, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(pss_seg7_vertex_07004700, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009750 - 0x0700A7C0\nstatic const Gfx pss_seg7_dl_07009750[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(pss_seg7_vertex_07004800, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  8, 10, 0x0),\n    gsSP2Triangles( 8, 11, 12, 0x0,  8, 12, 13, 0x0),\n    gsSPVertex(pss_seg7_vertex_070048E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_070049D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_07004AC0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(pss_seg7_vertex_07004BB0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_07004CA0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_07004D90, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_07004E80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_07004F70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_07005060, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_07005150, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(pss_seg7_vertex_07005240, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(pss_seg7_vertex_07005330, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(pss_seg7_vertex_07005420, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_07005510, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(pss_seg7_vertex_07005600, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  1, 15,  2, 0x0),\n    gsSPVertex(pss_seg7_vertex_07005700, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 9, 14, 10, 0x0),\n    gsSPVertex(pss_seg7_vertex_070057F0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(pss_seg7_vertex_070058D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_070059C0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(pss_seg7_vertex_07005AA0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11,  3, 12, 0x0),\n    gsSP1Triangle(11, 13,  3, 0x0),\n    gsSPVertex(pss_seg7_vertex_07005B80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_07005C70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_07005D60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_07005E50, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(pss_seg7_vertex_07005F40, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(pss_seg7_vertex_07006030, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 10, 11,  8, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0, 13,  1, 12, 0x0),\n    gsSP1Triangle(13, 12, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_07006120, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  2,  1, 0x0,  4,  1,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(pss_seg7_vertex_07006220, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  5,  7, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP2Triangles(13, 14, 11, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_07006320, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  2,  1, 0x0,  4,  1,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(pss_seg7_vertex_07006420, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  6,  5, 0x0,  8,  5,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(pss_seg7_vertex_07006500, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(pss_seg7_vertex_070065F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_070066E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(pss_seg7_vertex_070067D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(pss_seg7_vertex_070068C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(pss_seg7_vertex_070069B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(pss_seg7_vertex_07006AA0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(pss_seg7_vertex_07006B90, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_07006C80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_07006D70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(pss_seg7_vertex_07006E60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(pss_seg7_vertex_07006F50, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(pss_seg7_vertex_07007040, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_07007130, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(pss_seg7_vertex_07007220, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_07007310, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(pss_seg7_vertex_07007400, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_070074F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(pss_seg7_vertex_070075E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(pss_seg7_vertex_070076D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(pss_seg7_vertex_070077C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_070078B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(pss_seg7_vertex_070079A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_07007A90, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_07007B80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_07007C70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(pss_seg7_vertex_07007D60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(pss_seg7_vertex_07007E50, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(pss_seg7_vertex_07007F40, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(pss_seg7_vertex_07008030, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(pss_seg7_vertex_07008120, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(pss_seg7_vertex_07008210, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_07008300, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP1Triangle( 0,  2, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A7C0 - 0x0700A8B8\nconst Gfx pss_seg7_dl_0700A7C0[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(980, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(pss_seg7_dl_070083B0),\n    gsSPDisplayList(pss_seg7_dl_07008E20),\n    gsSPDisplayList(pss_seg7_dl_07008EB0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(pss_seg7_dl_070095E8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(pss_seg7_dl_07009750),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/pss/areas/1/2/model.inc.c",
    "content": "// 0x0700A8B8 - 0x0700A978\nstatic const Vtx pss_seg7_vertex_0700A8B8[] = {\n    {{{ -5128,  -2129,   4118}, 0, { -6282,  -1012}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -7586,  -2129,   6525}, 0, { -9432,  -2376}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -7586,  -2129,   4118}, 0, { -8572,   -134}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -5128,  -2129,   6525}, 0, { -7142,  -3254}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  6144,   7680,  -4095}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  3072,   7680,  -7167}, 0, {  2238,   3258}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  6144,   7680,  -7167}, 0, {  2238,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  3072,   7680,  -4095}, 0, {     0,   3258}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  6144,   6144,  -7167}, 0, { -2880,   9970}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3072,   6144,  -4095}, 0, { -1254,   5950}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6144,   6144,  -4095}, 0, { -4078,   7146}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3072,   6144,  -7167}, 0, {   -56,   8772}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700A978 - 0x0700AA78\nstatic const Vtx pss_seg7_vertex_0700A978[] = {\n    {{{  3226,   6144,  -6245}, 0, {  8552,   1002}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  3072,   6144,  -6245}, 0, {  8552,   1002}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  3072,   7035,  -6245}, 0, {  8552,  -2554}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  3226,   7035,  -6245}, 0, {  8552,  -2554}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  3072,   7035,  -5017}, 0, {  3648,  -2554}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  3226,   7035,  -5017}, 0, {  3648,  -2554}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  3072,   6144,  -5017}, 0, {  3648,   1002}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  3226,   6144,  -5017}, 0, {  3648,   1002}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -5128,  -2129,   4118}, 0, {  9780,  -8822}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{ -6920,  -3460,   4118}, 0, {  2626,  -3506}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{ -5794,  -3460,   4118}, 0, {  7122,  -3506}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{ -5794,  -4587,   4118}, 0, {  7122,    990}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{ -5128,  -4587,   4118}, 0, {  9780,    990}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{ -7586,  -2129,   4118}, 0, {     0,  -8822}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{ -7586,  -4587,   4118}, 0, {     0,    990}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{ -6920,  -4587,   4118}, 0, {  2626,    990}, {0xaa, 0xaa, 0xaa, 0xff}}},\n};\n\n// 0x0700AA78 - 0x0700AB68\nstatic const Vtx pss_seg7_vertex_0700AA78[] = {\n    {{{  3072,   6144,  -6245}, 0, {  8552,   1002}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{  3072,   6144,  -7167}, 0, { 12232,   1002}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{  3072,   7680,  -7167}, 0, { 12232,  -5128}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{  3072,   7035,  -6245}, 0, {  8552,  -2554}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{  3072,   7680,  -4095}, 0, {     0,  -5128}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{  3072,   6144,  -4095}, 0, {     0,   1002}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{  3072,   7035,  -5017}, 0, {  3648,  -2554}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{  3072,   6144,  -5017}, 0, {  3648,   1002}, {0xaa, 0xaa, 0xaa, 0xff}}},\n    {{{  3226,   6656,  -5119}, 0, {  4056,  -1040}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3226,   6656,  -6143}, 0, {  8144,  -1040}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3226,   7035,  -6245}, 0, {  8552,  -2554}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5128,  -4587,   4118}, 0, {   172,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5128,  -4587,   6525}, 0, {  9780,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5128,  -2129,   6525}, 0, {  9780,  -8822}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5128,  -2129,   4118}, 0, {   172,  -8822}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700AB68 - 0x0700AC58\nstatic const Vtx pss_seg7_vertex_0700AB68[] = {\n    {{{ -7586,  -2129,   6525}, 0, {     0,  -8822}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7586,  -4587,   4118}, 0, {  9574,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7586,  -2129,   4118}, 0, {  9574,  -8822}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7586,  -4587,   6525}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3226,   6144,  -6143}, 0, {  8144,   1002}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3226,   7035,  -6245}, 0, {  8552,  -2554}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3226,   6656,  -6143}, 0, {  8144,  -1040}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3226,   6144,  -6245}, 0, {  8552,   1002}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6144,   6144,  -4095}, 0, {     0,   1002}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3072,   7680,  -4095}, 0, { 12232,  -5128}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6144,   7680,  -4095}, 0, {     0,  -5128}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3226,   6144,  -5017}, 0, {  3648,   1002}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3226,   6144,  -5119}, 0, {  4056,   1002}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3226,   7035,  -5017}, 0, {  3648,  -2554}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3226,   6656,  -5119}, 0, {  4056,  -1040}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700AC58 - 0x0700AD48\nstatic const Vtx pss_seg7_vertex_0700AC58[] = {\n    {{{  6144,   7680,  -7167}, 0, {     0,  -5128}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6144,   6144,  -4095}, 0, { 12232,   1002}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6144,   7680,  -4095}, 0, { 12232,  -5128}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6144,   6144,  -7167}, 0, {     0,   1002}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6144,   6144,  -4095}, 0, {     0,   1002}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3072,   6144,  -4095}, 0, { 12232,   1002}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3072,   7680,  -4095}, 0, { 12232,  -5128}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6144,   7680,  -7167}, 0, { 12232,  -5128}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3072,   7680,  -7167}, 0, {     0,  -5128}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3072,   6144,  -7167}, 0, {     0,   1002}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6144,   6144,  -7167}, 0, { 12232,   1002}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7586,  -2129,   6525}, 0, {  9348,  -8822}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5128,  -2129,   6525}, 0, {  -460,  -8822}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5128,  -4587,   6525}, 0, {  -460,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7586,  -4587,   6525}, 0, {  9348,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700AD48 - 0x0700ADA8\nstatic const Vtx pss_seg7_vertex_0700AD48[] = {\n    {{{ -7586,  -4587,   6525}, 0, {  5078,  -3950}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5128,  -4587,   6525}, 0, { -3096,  -3950}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5794,  -4587,   4118}, 0, {  -882,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5128,  -4587,   4118}, 0, { -3096,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6920,  -4587,   4118}, 0, {  2864,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -7586,  -4587,   4118}, 0, {  5078,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700ADA8 - 0x0700AE00\nstatic const Gfx pss_seg7_dl_0700ADA8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_0900C000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(pss_seg7_vertex_0700A8B8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700AE00 - 0x0700AF60\nstatic const Gfx pss_seg7_dl_0700AE00[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(pss_seg7_vertex_0700A978, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  3,  2, 0x0,  4,  5,  3, 0x0),\n    gsSP2Triangles( 6,  5,  4, 0x0,  6,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11, 12, 0x0),\n    gsSP2Triangles( 8, 13,  9, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 9, 13, 14, 0x0,  9, 14, 15, 0x0),\n    gsSPVertex(pss_seg7_vertex_0700AA78, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  5,  6,  4, 0x0),\n    gsSP2Triangles( 5,  7,  6, 0x0,  3,  4,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_0700AB68, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0, 14,  5, 13, 0x0),\n    gsSPVertex(pss_seg7_vertex_0700AC58, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700AF60 - 0x0700AFA8\nstatic const Gfx pss_seg7_dl_0700AF60[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(pss_seg7_vertex_0700AD48, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  5,  0,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700AFA8 - 0x0700B070\nconst Gfx pss_seg7_dl_0700AFA8[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(980, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(pss_seg7_dl_0700ADA8),\n    gsSPDisplayList(pss_seg7_dl_0700AE00),\n    gsSPDisplayList(pss_seg7_dl_0700AF60),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/pss/areas/1/3/model.inc.c",
    "content": "// 0x0700B070 - 0x0700B160\nstatic const Vtx pss_seg7_vertex_0700B070[] = {\n    {{{ -5906,  -4217,   3701}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5845,  -4217,   3701}, 0, {   478,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5845,  -4252,   3701}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5906,  -3951,    895}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5845,  -3951,    895}, 0, {   478,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5845,  -3986,    895}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6869,  -3986,    895}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6869,  -3951,    895}, 0, {   478,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6808,  -3951,    895}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5906,  -4084,   2301}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5845,  -4084,   2301}, 0, {   478,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5845,  -4119,   2301}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6869,  -4119,   2301}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6869,  -4084,   2301}, 0, {   478,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6808,  -4084,   2301}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700B160 - 0x0700B250\nstatic const Vtx pss_seg7_vertex_0700B160[] = {\n    {{{   558,  -1918,  -5339}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   527,  -1918,  -5286}, 0, {   478,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   527,  -1953,  -5286}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6869,  -4252,   3701}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6869,  -4217,   3701}, 0, {   478,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6808,  -4217,   3701}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3603,   4880,  -6143}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3603,   4915,  -6143}, 0, {   478,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3603,   4915,  -6082}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2922,   6376,  -6143}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2922,   6411,  -6143}, 0, {   478,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2922,   6411,  -6082}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2922,   6411,  -5180}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2922,   6411,  -5119}, 0, {   478,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2922,   6376,  -5119}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700B250 - 0x0700B340\nstatic const Vtx pss_seg7_vertex_0700B250[] = {\n    {{{ -5095,   3457,   2438}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5095,   3492,   2438}, 0, {   478,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5072,   3492,   2382}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4557,  -3325,  -3304}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4588,  -3325,  -3251}, 0, {   478,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4588,  -3360,  -3251}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5753,   4665,  -5488}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5753,   4700,  -5488}, 0, {   478,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5715,   4700,  -5440}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6710,   4297,  -3107}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6710,   4332,  -3107}, 0, {   478,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6649,   4332,  -3106}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6710,   3887,      5}, 0, {   478,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6710,   3922,      5}, 0, {   478,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6649,   3922,      0}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700B340 - 0x0700B3F0\nstatic const Gfx pss_seg7_dl_0700B340[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(pss_seg7_vertex_0700B070, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_0700B160, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_0700B250, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700B3F0 - 0x0700B4A8\nconst Gfx pss_seg7_dl_0700B3F0[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(980, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_DECALRGB, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(pss_seg7_dl_0700B340),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/pss/areas/1/4/model.inc.c",
    "content": "// 0x0700B4A8 - 0x0700B598\nstatic const Vtx pss_seg7_vertex_0700B4A8[] = {\n    {{{ -5896,  -3851,    930}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5931,  -3951,    895}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5896,  -3951,    930}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5896,  -3951,    930}, 0, {   480,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5896,  -3951,    859}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5860,  -3951,    895}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5931,  -3951,    895}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5860,  -3851,    895}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5931,  -3851,    895}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5896,  -3851,    930}, 0, {   480,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5896,  -3851,    859}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5896,  -3851,    930}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5896,  -3951,    930}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5860,  -3951,    895}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5860,  -3851,    895}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700B598 - 0x0700B688\nstatic const Vtx pss_seg7_vertex_0700B598[] = {\n    {{{ -6819,  -3951,    930}, 0, {   480,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6854,  -3951,    895}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6819,  -3951,    859}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5896,  -3851,    930}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5931,  -3851,    895}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5931,  -3951,    895}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5896,  -3851,    859}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5860,  -3951,    895}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5896,  -3951,    859}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5860,  -3851,    895}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5896,  -3851,    859}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5931,  -3951,    895}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5931,  -3851,    895}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5896,  -3951,    859}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6784,  -3951,    895}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700B688 - 0x0700B778\nstatic const Vtx pss_seg7_vertex_0700B688[] = {\n    {{{ -6819,  -3851,    859}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6784,  -3951,    895}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6819,  -3951,    859}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6784,  -3851,    895}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6854,  -3851,    895}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6819,  -3851,    930}, 0, {   480,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6819,  -3851,    859}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6819,  -3851,    930}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6819,  -3951,    930}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6784,  -3951,    895}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6784,  -3851,    895}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6819,  -3851,    930}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6854,  -3951,    895}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6819,  -3951,    930}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6854,  -3851,    895}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700B778 - 0x0700B868\nstatic const Vtx pss_seg7_vertex_0700B778[] = {\n    {{{ -5860,  -3984,   2301}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5896,  -3984,   2266}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5931,  -3984,   2301}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6819,  -3851,    859}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6784,  -3851,    895}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6784,  -3951,    895}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6819,  -3851,    859}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6819,  -3951,    859}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6854,  -3951,    895}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6854,  -3851,    895}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5896,  -4084,   2336}, 0, {   480,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5896,  -4084,   2266}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5860,  -4084,   2301}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5931,  -4084,   2301}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5896,  -3984,   2336}, 0, {   480,    478}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700B868 - 0x0700B958\nstatic const Vtx pss_seg7_vertex_0700B868[] = {\n    {{{ -5896,  -3984,   2266}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5931,  -4084,   2301}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5931,  -3984,   2301}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5896,  -3984,   2336}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5896,  -4084,   2336}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5860,  -4084,   2301}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5860,  -3984,   2301}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5896,  -3984,   2336}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5931,  -4084,   2301}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5896,  -4084,   2336}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5931,  -3984,   2301}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5896,  -3984,   2266}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5860,  -4084,   2301}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5896,  -4084,   2266}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5860,  -3984,   2301}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700B958 - 0x0700BA48\nstatic const Vtx pss_seg7_vertex_0700B958[] = {\n    {{{ -6819,  -3984,   2336}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6819,  -4084,   2336}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6784,  -4084,   2301}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5896,  -3984,   2266}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5896,  -4084,   2266}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5931,  -4084,   2301}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6819,  -4084,   2336}, 0, {   480,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6819,  -4084,   2266}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6784,  -4084,   2301}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6854,  -4084,   2301}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6784,  -3984,   2301}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6819,  -3984,   2266}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6854,  -3984,   2301}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6819,  -3984,   2336}, 0, {   480,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6784,  -3984,   2301}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700BA48 - 0x0700BB38\nstatic const Vtx pss_seg7_vertex_0700BA48[] = {\n    {{{ -5896,  -4217,   3737}, 0, {   480,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5896,  -4217,   3666}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5860,  -4217,   3701}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6819,  -3984,   2336}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6854,  -4084,   2301}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6819,  -4084,   2336}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6854,  -3984,   2301}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6819,  -3984,   2266}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6784,  -4084,   2301}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6819,  -4084,   2266}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6784,  -3984,   2301}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6819,  -3984,   2266}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6854,  -4084,   2301}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6854,  -3984,   2301}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6819,  -4084,   2266}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700BB38 - 0x0700BC28\nstatic const Vtx pss_seg7_vertex_0700BB38[] = {\n    {{{ -5896,  -4117,   3737}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5931,  -4117,   3701}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5931,  -4217,   3701}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5896,  -4217,   3737}, 0, {   480,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5931,  -4217,   3701}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5896,  -4217,   3666}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5860,  -4117,   3701}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5896,  -4117,   3666}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5931,  -4117,   3701}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5896,  -4117,   3737}, 0, {   480,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5896,  -4117,   3737}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5860,  -4217,   3701}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5860,  -4117,   3701}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5896,  -4217,   3737}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5896,  -4217,   3737}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700BC28 - 0x0700BD18\nstatic const Vtx pss_seg7_vertex_0700BC28[] = {\n    {{{ -6784,  -4117,   3701}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6854,  -4117,   3701}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6819,  -4117,   3737}, 0, {   480,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5896,  -4117,   3666}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5860,  -4217,   3701}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5896,  -4217,   3666}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5860,  -4117,   3701}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5896,  -4117,   3666}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5931,  -4217,   3701}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5931,  -4117,   3701}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5896,  -4217,   3666}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6819,  -4217,   3737}, 0, {   480,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6854,  -4217,   3701}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6819,  -4217,   3666}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6784,  -4217,   3701}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700BD18 - 0x0700BDF8\nstatic const Vtx pss_seg7_vertex_0700BD18[] = {\n    {{{ -6819,  -4117,   3666}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6784,  -4117,   3701}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6784,  -4217,   3701}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6819,  -4117,   3666}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6854,  -4117,   3701}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6819,  -4117,   3737}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6784,  -4217,   3701}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6784,  -4117,   3701}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6819,  -4217,   3737}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6819,  -4117,   3737}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6854,  -4117,   3701}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6854,  -4217,   3701}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6819,  -4217,   3737}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6819,  -4217,   3666}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700BDF8 - 0x0700BEE8\nstatic const Vtx pss_seg7_vertex_0700BDF8[] = {\n    {{{ -5043,   3592,   2405}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5063,   3492,   2359}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5063,   3592,   2359}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6819,  -4117,   3666}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6854,  -4217,   3701}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6854,  -4117,   3701}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6819,  -4217,   3666}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5043,   3492,   2405}, 0, {   480,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5089,   3492,   2424}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5109,   3492,   2378}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5063,   3492,   2359}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5063,   3592,   2359}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5089,   3592,   2424}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5043,   3592,   2405}, 0, {   480,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5109,   3592,   2378}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700BEE8 - 0x0700BFD8\nstatic const Vtx pss_seg7_vertex_0700BEE8[] = {\n    {{{ -5109,   3592,   2378}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5109,   3492,   2378}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5089,   3492,   2424}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5043,   3592,   2405}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5043,   3492,   2405}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5063,   3492,   2359}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5043,   3592,   2405}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5089,   3492,   2424}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5043,   3492,   2405}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5089,   3592,   2424}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5109,   3592,   2378}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5063,   3492,   2359}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5109,   3492,   2378}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5063,   3592,   2359}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5089,   3592,   2424}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700BFD8 - 0x0700C0C8\nstatic const Vtx pss_seg7_vertex_0700BFD8[] = {\n    {{{ -6657,   4022,     35}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6695,   4022,      3}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6695,   3922,      3}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6657,   3922,     35}, 0, {   480,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6695,   3922,      3}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6663,   3922,    -34}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6625,   3922,     -2}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6625,   4022,     -2}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6695,   4022,      3}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6657,   4022,     35}, 0, {   480,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6663,   4022,    -34}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6657,   4022,     35}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6625,   3922,     -2}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6625,   4022,     -2}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6657,   3922,     35}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700C0C8 - 0x0700C1B8\nstatic const Vtx pss_seg7_vertex_0700C0C8[] = {\n    {{{ -6660,   4332,  -3071}, 0, {   480,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6659,   4332,  -3142}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6624,   4332,  -3106}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6657,   4022,     35}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6695,   3922,      3}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6657,   3922,     35}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6663,   4022,    -34}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6625,   3922,     -2}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6663,   3922,    -34}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6625,   4022,     -2}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6663,   4022,    -34}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6695,   3922,      3}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6695,   4022,      3}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6663,   3922,    -34}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6695,   4332,  -3107}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700C1B8 - 0x0700C2A8\nstatic const Vtx pss_seg7_vertex_0700C1B8[] = {\n    {{{ -6659,   4431,  -3142}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6624,   4332,  -3106}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6659,   4332,  -3142}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6624,   4431,  -3106}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6695,   4431,  -3107}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6660,   4431,  -3071}, 0, {   480,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6659,   4431,  -3142}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6660,   4431,  -3071}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6624,   4332,  -3106}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6624,   4431,  -3106}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6660,   4332,  -3071}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6660,   4431,  -3071}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6695,   4332,  -3107}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6660,   4332,  -3071}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6695,   4431,  -3107}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700C2A8 - 0x0700C398\nstatic const Vtx pss_seg7_vertex_0700C2A8[] = {\n    {{{ -5700,   4800,  -5421}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5694,   4800,  -5471}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5744,   4800,  -5476}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6659,   4431,  -3142}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6624,   4431,  -3106}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6624,   4332,  -3106}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6659,   4431,  -3142}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6659,   4332,  -3142}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6695,   4332,  -3107}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6695,   4431,  -3107}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5749,   4700,  -5426}, 0, {   480,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5694,   4700,  -5471}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5700,   4700,  -5421}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5744,   4700,  -5476}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5749,   4800,  -5426}, 0, {   480,    478}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700C398 - 0x0700C488\nstatic const Vtx pss_seg7_vertex_0700C398[] = {\n    {{{ -5694,   4800,  -5471}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5694,   4700,  -5471}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5744,   4700,  -5476}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5749,   4800,  -5426}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5749,   4700,  -5426}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5700,   4700,  -5421}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5700,   4800,  -5421}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5749,   4800,  -5426}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5744,   4700,  -5476}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5749,   4700,  -5426}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5744,   4800,  -5476}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5694,   4800,  -5471}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5700,   4700,  -5421}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5694,   4700,  -5471}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5700,   4800,  -5421}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700C488 - 0x0700C578\nstatic const Vtx pss_seg7_vertex_0700C488[] = {\n    {{{ -4593,  -3225,  -3313}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4593,  -3325,  -3313}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4580,  -3325,  -3264}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5694,   4800,  -5471}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5744,   4700,  -5476}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5744,   4800,  -5476}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4593,  -3325,  -3313}, 0, {   480,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4532,  -3325,  -3277}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4580,  -3325,  -3264}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4545,  -3325,  -3325}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4580,  -3225,  -3264}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4545,  -3225,  -3325}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4593,  -3225,  -3313}, 0, {   480,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4532,  -3225,  -3277}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4580,  -3225,  -3264}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700C578 - 0x0700C668\nstatic const Vtx pss_seg7_vertex_0700C578[] = {\n    {{{   522,  -1918,  -5347}, 0, {   480,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   583,  -1918,  -5312}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   535,  -1918,  -5299}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4593,  -3225,  -3313}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4545,  -3325,  -3325}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4593,  -3325,  -3313}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4545,  -3225,  -3325}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4532,  -3225,  -3277}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4580,  -3325,  -3264}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4532,  -3325,  -3277}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4580,  -3225,  -3264}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4532,  -3225,  -3277}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4532,  -3325,  -3277}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4545,  -3325,  -3325}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4545,  -3225,  -3325}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700C668 - 0x0700C758\nstatic const Vtx pss_seg7_vertex_0700C668[] = {\n    {{{   522,  -1818,  -5347}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   570,  -1818,  -5360}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   570,  -1918,  -5360}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   522,  -1918,  -5347}, 0, {   480,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   570,  -1918,  -5360}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   583,  -1918,  -5312}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   535,  -1818,  -5299}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   570,  -1818,  -5360}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   522,  -1818,  -5347}, 0, {   480,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   583,  -1818,  -5312}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   522,  -1818,  -5347}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   535,  -1918,  -5299}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   535,  -1818,  -5299}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   522,  -1918,  -5347}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   522,  -1918,  -5347}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700C758 - 0x0700C848\nstatic const Vtx pss_seg7_vertex_0700C758[] = {\n    {{{  2922,   6511,  -5134}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2922,   6511,  -5205}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2887,   6511,  -5169}, 0, {   480,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   583,  -1818,  -5312}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   535,  -1818,  -5299}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   535,  -1918,  -5299}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   583,  -1918,  -5312}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   583,  -1818,  -5312}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   570,  -1918,  -5360}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   570,  -1818,  -5360}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   583,  -1918,  -5312}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2887,   6411,  -5169}, 0, {   480,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2957,   6411,  -5169}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2922,   6411,  -5134}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2922,   6411,  -5205}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700C848 - 0x0700C928\nstatic const Vtx pss_seg7_vertex_0700C848[] = {\n    {{{  2957,   6511,  -5169}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2922,   6411,  -5134}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2957,   6411,  -5169}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2922,   6511,  -5134}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2957,   6511,  -5169}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2922,   6511,  -5205}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2887,   6511,  -5169}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2922,   6411,  -5134}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2922,   6511,  -5134}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2887,   6411,  -5169}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2887,   6511,  -5169}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2922,   6411,  -5205}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2887,   6411,  -5169}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2922,   6511,  -5205}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700C928 - 0x0700CA18\nstatic const Vtx pss_seg7_vertex_0700C928[] = {\n    {{{  2887,   6511,  -6093}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2922,   6411,  -6057}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2922,   6511,  -6057}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2957,   6511,  -5169}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2922,   6411,  -5205}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2922,   6511,  -5205}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2957,   6411,  -5169}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2887,   6411,  -6093}, 0, {   480,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2957,   6411,  -6093}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2922,   6411,  -6057}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2922,   6411,  -6128}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2922,   6511,  -6057}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2957,   6511,  -6093}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2922,   6511,  -6128}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2887,   6511,  -6093}, 0, {   480,    478}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700CA18 - 0x0700CB08\nstatic const Vtx pss_seg7_vertex_0700CA18[] = {\n    {{{  2957,   6511,  -6093}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2957,   6411,  -6093}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2922,   6411,  -6128}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2887,   6511,  -6093}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2887,   6411,  -6093}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2922,   6411,  -6057}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2887,   6511,  -6093}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2922,   6411,  -6128}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2887,   6411,  -6093}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2922,   6511,  -6128}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2957,   6511,  -6093}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2922,   6511,  -6057}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2922,   6411,  -6057}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2957,   6411,  -6093}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2922,   6511,  -6128}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700CB08 - 0x0700CBF8\nstatic const Vtx pss_seg7_vertex_0700CB08[] = {\n    {{{ -3638,   5015,  -6093}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3603,   5015,  -6128}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3603,   4915,  -6128}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3638,   4915,  -6093}, 0, {   480,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3568,   4915,  -6093}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3603,   4915,  -6057}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3603,   4915,  -6128}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3603,   5015,  -6057}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3603,   5015,  -6128}, 0, {     0,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3638,   5015,  -6093}, 0, {   480,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3568,   5015,  -6093}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3638,   5015,  -6093}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3603,   4915,  -6057}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3603,   5015,  -6057}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3638,   4915,  -6093}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700CBF8 - 0x0700CCA8\nstatic const Vtx pss_seg7_vertex_0700CBF8[] = {\n    {{{ -3568,   5015,  -6093}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3568,   4915,  -6093}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3603,   4915,  -6128}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3638,   5015,  -6093}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3603,   4915,  -6128}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3638,   4915,  -6093}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3568,   5015,  -6093}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3603,   4915,  -6057}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3568,   4915,  -6093}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3603,   5015,  -6057}, 0, {   480,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3603,   5015,  -6128}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700CCA8 - 0x0700D338\nstatic const Gfx pss_seg7_dl_0700CCA8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(pss_seg7_vertex_0700B4A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_0700B598, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_0700B688, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(pss_seg7_vertex_0700B778, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_0700B868, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(pss_seg7_vertex_0700B958, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_0700BA48, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(pss_seg7_vertex_0700BB38, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_0700BC28, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_0700BD18, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  8,  6, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 11, 12, 0x0),\n    gsSP1Triangle( 0,  2, 13, 0x0),\n    gsSPVertex(pss_seg7_vertex_0700BDF8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(pss_seg7_vertex_0700BEE8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_0700BFD8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(pss_seg7_vertex_0700C0C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(pss_seg7_vertex_0700C1B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(pss_seg7_vertex_0700C2A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_0700C398, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(pss_seg7_vertex_0700C488, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_0700C578, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_0700C668, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_0700C758, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(pss_seg7_vertex_0700C848, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  3,  1, 0x0),\n    gsSPVertex(pss_seg7_vertex_0700C928, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_0700CA18, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_0700CB08, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(pss_seg7_vertex_0700CBF8, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP1Triangle( 0,  2, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700D338 - 0x0700D3A8\nconst Gfx pss_seg7_dl_0700D338[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGB, G_CC_DECALRGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(pss_seg7_dl_0700CCA8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/pss/areas/1/5/model.inc.c",
    "content": "// 0x0700D3A8 - 0x0700D498\nstatic const Vtx pss_seg7_vertex_0700D3A8[] = {\n    {{{ -6864,  -3726,   2608}, 0, {     0,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -6864,  -4340,   1994}, 0, {   990,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -6864,  -3726,   1994}, 0, {   990,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -5850,  -3593,    587}, 0, {     0,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -5850,  -4207,   1202}, 0, {   990,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -5850,  -3593,   1202}, 0, {   990,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -5850,  -4207,    587}, 0, {     0,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -6864,  -3593,   1202}, 0, {     0,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -6864,  -4207,    587}, 0, {   990,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -6864,  -3593,    587}, 0, {   990,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -6864,  -4207,   1202}, 0, {     0,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -5850,  -3726,   1994}, 0, {     0,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -5850,  -4340,   1994}, 0, {     0,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -5850,  -4340,   2608}, 0, {   990,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -5850,  -3726,   2608}, 0, {   990,      0}, {0xff, 0x55, 0x00, 0xff}}},\n};\n\n// 0x0700D498 - 0x0700D588\nstatic const Vtx pss_seg7_vertex_0700D498[] = {\n    {{{ -4584,  -3581,  -3258}, 0, {   480,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -4891,  -3581,  -3258}, 0, {   990,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -4891,  -3057,  -3258}, 0, {   990,    118}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -6864,  -3726,   2608}, 0, {     0,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -6864,  -4340,   2608}, 0, {     0,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -6864,  -4340,   1994}, 0, {   990,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -5850,  -3858,   3394}, 0, {     0,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -5850,  -4473,   4009}, 0, {   990,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -5850,  -3858,   4009}, 0, {   990,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -5850,  -4473,   3394}, 0, {     0,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -6864,  -3858,   4009}, 0, {     0,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -6864,  -4473,   3394}, 0, {   990,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -6864,  -3858,   3394}, 0, {   990,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -6864,  -4473,   4009}, 0, {     0,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -4584,  -3057,  -3258}, 0, {   478,    118}, {0xff, 0x55, 0x00, 0xff}}},\n};\n\n// 0x0700D588 - 0x0700D688\nstatic const Vtx pss_seg7_vertex_0700D588[] = {\n    {{{ -5091,   3236,   2431}, 0, {   480,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -5355,   3850,   2273}, 0, {   990,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -5091,   3850,   2431}, 0, {   478,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -4431,  -3057,  -2992}, 0, {     0,    118}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -4584,  -3581,  -3258}, 0, {   480,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -4584,  -3057,  -3258}, 0, {   478,    118}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -4431,  -3581,  -2992}, 0, {     0,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{   531,  -2174,  -5293}, 0, {   480,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{   224,  -2174,  -5293}, 0, {   990,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{   224,  -1559,  -5293}, 0, {   990,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{   531,  -1559,  -5293}, 0, {   478,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{   684,  -1559,  -5026}, 0, {     0,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{   684,  -2174,  -5026}, 0, {     0,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -6651,   4280,    307}, 0, {     0,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -6651,   3666,    307}, 0, {     0,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -6703,   3666,      5}, 0, {   480,    990}, {0xff, 0x55, 0x00, 0xff}}},\n};\n\n// 0x0700D688 - 0x0700D768\nstatic const Vtx pss_seg7_vertex_0700D688[] = {\n    {{{ -5091,   3236,   2431}, 0, {   480,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -5355,   3236,   2273}, 0, {   990,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -5355,   3850,   2273}, 0, {   990,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -4793,   3850,   2506}, 0, {     0,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -4793,   3236,   2506}, 0, {     0,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -5091,   3850,   2431}, 0, {   478,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -6703,   3666,      5}, 0, {   480,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -6700,   4280,   -302}, 0, {   990,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -6703,   4280,      5}, 0, {   478,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -6700,   3666,   -302}, 0, {   990,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -6651,   4280,    307}, 0, {     0,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -5951,   5059,  -5249}, 0, {     0,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -5749,   4444,  -5481}, 0, {   480,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -5749,   5059,  -5481}, 0, {   478,      0}, {0xff, 0x55, 0x00, 0xff}}},\n};\n\n// 0x0700D768 - 0x0700D858\nstatic const Vtx pss_seg7_vertex_0700D768[] = {\n    {{{ -6703,   4076,  -3107}, 0, {   480,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -6679,   4076,  -3413}, 0, {   990,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -6679,   4690,  -3413}, 0, {   990,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -6703,   4690,  -3107}, 0, {   478,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -6650,   4690,  -2804}, 0, {     0,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -6650,   4076,  -2804}, 0, {     0,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -5749,   4444,  -5481}, 0, {   480,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -5483,   5059,  -5635}, 0, {   990,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -5749,   5059,  -5481}, 0, {   478,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -5483,   4444,  -5635}, 0, {   990,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{  3229,   6770,  -5124}, 0, {     0,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{  3229,   6155,  -5124}, 0, {     0,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{  2615,   6155,  -5124}, 0, {   990,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -5951,   5059,  -5249}, 0, {     0,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -5951,   4444,  -5249}, 0, {     0,    990}, {0xff, 0x55, 0x00, 0xff}}},\n};\n\n// 0x0700D858 - 0x0700D928\nstatic const Vtx pss_seg7_vertex_0700D858[] = {\n    {{{ -3603,   4659,  -6137}, 0, {   480,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -3296,   5274,  -6137}, 0, {   990,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -3603,   5274,  -6137}, 0, {   478,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -3296,   4659,  -6137}, 0, {   990,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -3909,   5274,  -6110}, 0, {     0,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{ -3909,   4659,  -6110}, 0, {     0,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{  3229,   6770,  -5124}, 0, {     0,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{  2615,   6155,  -5124}, 0, {   990,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{  2615,   6770,  -5124}, 0, {   990,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{  2615,   6770,  -6138}, 0, {     0,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{  3229,   6155,  -6138}, 0, {   990,    990}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{  3229,   6770,  -6138}, 0, {   990,      0}, {0xff, 0x55, 0x00, 0xff}}},\n    {{{  2615,   6155,  -6138}, 0, {     0,    990}, {0xff, 0x55, 0x00, 0xff}}},\n};\n\n// 0x0700D928 - 0x0700DAD8\nstatic const Gfx pss_seg7_dl_0700D928[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, pss_seg7_texture_07000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(pss_seg7_vertex_0700D3A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_0700D498, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_0700D588, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11,  7, 10, 0x0),\n    gsSP2Triangles(11, 12,  7, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(pss_seg7_vertex_0700D688, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 3,  0,  5, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  9,  7, 0x0, 10,  6,  8, 0x0),\n    gsSP1Triangle(11, 12, 13, 0x0),\n    gsSPVertex(pss_seg7_vertex_0700D768, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  0,  3, 0x0,  4,  5,  0, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14,  6, 0x0),\n    gsSPVertex(pss_seg7_vertex_0700D858, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  0, 0x0,  4,  0,  2, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle( 9, 12, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700DAD8 - 0x0700DB48\nconst Gfx pss_seg7_dl_0700DAD8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(pss_seg7_dl_0700D928),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/pss/areas/1/6/model.inc.c",
    "content": "// 0x0700DB48 - 0x0700DB88\nstatic const Vtx pss_seg7_vertex_0700DB48[] = {\n    {{{ -6720,  -4484,   6068}, 0, {  2382,  -1424}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -5994,  -4484,   6068}, 0, {     0,  -1424}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -5994,  -4484,   5342}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6720,  -4484,   5342}, 0, {  2382,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x0700DB88 - 0x0700DC48\nstatic const Vtx pss_seg7_vertex_0700DB88[] = {\n    {{{ -6178,  -4561,   5188}, 0, {     0,   1120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6178,  -4561,   5117}, 0, {     0,   1264}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6588,  -4561,   5117}, 0, {   786,   1264}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6588,  -4561,   5188}, 0, {   786,   1120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6588,  -4535,   5255}, 0, {   786,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6178,  -4535,   5255}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6178,  -4535,   5188}, 0, {     0,   1120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6588,  -4535,   5188}, 0, {   786,   1120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6588,  -4510,   5321}, 0, {   786,    858}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6178,  -4510,   5321}, 0, {     0,    858}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6178,  -4510,   5255}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6588,  -4510,   5255}, 0, {   786,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700DC48 - 0x0700DD38\nstatic const Vtx pss_seg7_vertex_0700DC48[] = {\n    {{{ -6588,  -4587,   5321}, 0, {  1088,    480}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6588,  -4561,   5117}, 0, {   542,    352}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6588,  -4587,   5117}, 0, {   542,    480}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6178,  -4587,   5117}, 0, {   550,    480}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6178,  -4561,   5188}, 0, {   360,    352}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6178,  -4587,   5321}, 0, {     6,    480}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6178,  -4561,   5117}, 0, {   550,    352}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6178,  -4535,   5255}, 0, {   182,    224}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6178,  -4535,   5188}, 0, {   360,    224}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6178,  -4510,   5255}, 0, {   182,     96}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6178,  -4510,   5321}, 0, {     6,     96}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6588,  -4510,   5255}, 0, {   910,     96}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6588,  -4510,   5321}, 0, {  1088,     96}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6588,  -4535,   5255}, 0, {   910,    224}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6588,  -4561,   5188}, 0, {   734,    352}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x0700DD38 - 0x0700DE28\nstatic const Vtx pss_seg7_vertex_0700DD38[] = {\n    {{{ -6588,  -4535,   5255}, 0, {  1484,    224}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6588,  -4510,   5255}, 0, {  1484,     96}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6178,  -4510,   5255}, 0, {   684,     96}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6588,  -4561,   5188}, 0, {   734,    352}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6588,  -4535,   5255}, 0, {   910,    224}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6588,  -4535,   5188}, 0, {   734,    224}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6588,  -4587,   5117}, 0, {  1560,    480}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6588,  -4561,   5117}, 0, {  1560,    352}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6178,  -4561,   5117}, 0, {   540,    352}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6178,  -4587,   5117}, 0, {   540,    480}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6588,  -4561,   5188}, 0, {  1748,    352}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6588,  -4535,   5188}, 0, {  1748,    224}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6178,  -4535,   5188}, 0, {   864,    224}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6178,  -4561,   5188}, 0, {   864,    352}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6178,  -4535,   5255}, 0, {   684,    224}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x0700DE28 - 0x0700DF18\nstatic const Vtx pss_seg7_vertex_0700DE28[] = {\n    {{{ -6741,  -4484,   6089}, 0, {     0,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6741,  -4587,   6089}, 0, {     0,    480}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -5973,  -4587,   6089}, 0, {  2012,    480}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6588,  -4510,   5321}, 0, {  1604,     96}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6588,  -4587,   5321}, 0, {  1604,    480}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6741,  -4587,   5321}, 0, {  2012,    480}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6178,  -4510,   5321}, 0, {   514,     96}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6741,  -4484,   5321}, 0, {  2012,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -5973,  -4484,   5321}, 0, {     0,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -5973,  -4587,   5321}, 0, {     0,    480}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6178,  -4587,   5321}, 0, {   514,    480}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6741,  -4484,   5321}, 0, {     0,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6741,  -4587,   5321}, 0, {     0,    480}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6741,  -4587,   6089}, 0, {  2012,    480}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6741,  -4484,   6089}, 0, {  2012,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x0700DF18 - 0x0700DFF8\nstatic const Vtx pss_seg7_vertex_0700DF18[] = {\n    {{{ -5973,  -4587,   5321}, 0, {  2012,    480}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -5973,  -4484,   6089}, 0, {     0,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -5973,  -4587,   6089}, 0, {     0,    480}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6741,  -4484,   6089}, 0, {     0,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -5973,  -4587,   6089}, 0, {  2012,    480}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -5973,  -4484,   6089}, 0, {  2012,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -5973,  -4484,   5321}, 0, {  2012,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -6741,  -4484,   5321}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5994,  -4484,   5342}, 0, {    24,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5973,  -4484,   5321}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5973,  -4484,   5321}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5994,  -4484,   6068}, 0, {    24,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5973,  -4484,   6089}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5994,  -4484,   5342}, 0, {  1956,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700DFF8 - 0x0700E0A8\nstatic const Vtx pss_seg7_vertex_0700DFF8[] = {\n    {{{ -5973,  -4484,   6089}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6720,  -4484,   6068}, 0, {    24,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6741,  -4484,   6089}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5994,  -4484,   6068}, 0, {  1956,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6720,  -4484,   5342}, 0, {    24,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6741,  -4484,   6089}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6720,  -4484,   6068}, 0, {  1956,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6741,  -4484,   5321}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6741,  -4484,   5321}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6720,  -4484,   5342}, 0, {  1956,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5994,  -4484,   5342}, 0, {    24,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700E0A8 - 0x0700E0E0\nstatic const Gfx pss_seg7_dl_0700E0A8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(pss_seg7_vertex_0700DB48, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700E0E0 - 0x0700E138\nstatic const Gfx pss_seg7_dl_0700E0E0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, pss_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(pss_seg7_vertex_0700DB88, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700E138 - 0x0700E2B0\nstatic const Gfx pss_seg7_dl_0700E138[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(pss_seg7_vertex_0700DC48, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 4,  8,  7, 0x0,  5,  7,  9, 0x0),\n    gsSP2Triangles( 5,  9, 10, 0x0, 11,  0, 12, 0x0),\n    gsSP2Triangles(11, 13,  0, 0x0, 14,  0, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(pss_seg7_vertex_0700DD38, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_0700DE28, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  7, 0x0,  3,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6,  8, 0x0),\n    gsSP2Triangles( 9, 10,  6, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(pss_seg7_vertex_0700DF18, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(pss_seg7_vertex_0700DFF8, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP1Triangle( 8,  9, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700E2B0 - 0x0700E348\nconst Gfx pss_seg7_dl_0700E2B0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(pss_seg7_dl_0700E0A8),\n    gsSPDisplayList(pss_seg7_dl_0700E0E0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(pss_seg7_dl_0700E138),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/pss/areas/1/7/model.inc.c",
    "content": "// 0x0700E348 - 0x0700E360\nstatic const Lights1 pss_seg7_lights_0700E348 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700E360 - 0x0700E3A0\nstatic const Vtx pss_seg7_vertex_0700E360[] = {\n    {{{ -5845,  -4509,   3251}, 0, {  6100,    990}, {0x00, 0x7e, 0x0b, 0xff}}},\n    {{{ -5845,  -4490,   3047}, 0, {  6100,  -1054}, {0x00, 0x7e, 0x0b, 0xff}}},\n    {{{ -6869,  -4490,   3047}, 0, { -4118,  -1054}, {0x00, 0x7e, 0x0b, 0xff}}},\n    {{{ -6869,  -4509,   3251}, 0, { -4118,    990}, {0x00, 0x7e, 0x0b, 0xff}}},\n};\n\n// 0x0700E3A0 - 0x0700E3E8\nstatic const Gfx pss_seg7_dl_0700E3A0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, pss_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&pss_seg7_lights_0700E348.l, 1),\n    gsSPLight(&pss_seg7_lights_0700E348.a, 2),\n    gsSPVertex(pss_seg7_vertex_0700E360, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700E3E8 - 0x0700E490\nconst Gfx pss_seg7_dl_0700E3E8[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_DECAL2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(980, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(pss_seg7_dl_0700E3A0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_DECAL, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/pss/areas/1/collision.inc.c",
    "content": "// 0x0700E490 - 0x07010F00\nconst Collision pss_seg7_collision[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x2A5),\n    COL_VERTEX(8192, -8191, -8191),\n    COL_VERTEX(-8191, -8191, 8192),\n    COL_VERTEX(8192, -8191, 8192),\n    COL_VERTEX(-8191, -8191, -8191),\n    COL_VERTEX(-5128, -2129, 4118),\n    COL_VERTEX(-5128, -2129, 6525),\n    COL_VERTEX(-7586, -2129, 6525),\n    COL_VERTEX(-7586, -2129, 4118),\n    COL_VERTEX(3226, 6144, -6245),\n    COL_VERTEX(3072, 6144, -6245),\n    COL_VERTEX(3072, 7035, -6245),\n    COL_VERTEX(3226, 7035, -6245),\n    COL_VERTEX(3072, 7035, -5017),\n    COL_VERTEX(3226, 7035, -5017),\n    COL_VERTEX(3072, 6144, -5017),\n    COL_VERTEX(3226, 6144, -5017),\n    COL_VERTEX(6144, 7680, -4095),\n    COL_VERTEX(3072, 7680, -4095),\n    COL_VERTEX(3072, 7680, -7167),\n    COL_VERTEX(6144, 7680, -7167),\n    COL_VERTEX(-6920, -3460, 4118),\n    COL_VERTEX(-5794, -3460, 4118),\n    COL_VERTEX(-5794, -4587, 4118),\n    COL_VERTEX(-5128, -4587, 4118),\n    COL_VERTEX(-7586, -4587, 4118),\n    COL_VERTEX(-6920, -4587, 4118),\n    COL_VERTEX(3072, 6144, -7167),\n    COL_VERTEX(3072, 6144, -4095),\n    COL_VERTEX(2275, -2343, -1719),\n    COL_VERTEX(2275, -2343, -1668),\n    COL_VERTEX(2275, -1443, -1668),\n    COL_VERTEX(2275, -1443, -1719),\n    COL_VERTEX(2327, -2343, -1719),\n    COL_VERTEX(2254, -1421, -1668),\n    COL_VERTEX(2327, -1421, -1668),\n    COL_VERTEX(2275, -1370, -1668),\n    COL_VERTEX(2254, -1421, -1719),\n    COL_VERTEX(2327, -1421, -1719),\n    COL_VERTEX(2327, -2343, -1668),\n    COL_VERTEX(1456, -1370, -1668),\n    COL_VERTEX(1477, -1421, -1668),\n    COL_VERTEX(1477, -1421, -1719),\n    COL_VERTEX(2275, -1370, -1719),\n    COL_VERTEX(1405, -1421, -1668),\n    COL_VERTEX(1456, -1443, -1668),\n    COL_VERTEX(1456, -1443, -1719),\n    COL_VERTEX(1456, -2343, -1668),\n    COL_VERTEX(1456, -2343, -1719),\n    COL_VERTEX(1456, -1370, -1719),\n    COL_VERTEX(1405, -1421, -1719),\n    COL_VERTEX(1405, -2343, -1719),\n    COL_VERTEX(2275, -1091, 31),\n    COL_VERTEX(2275, -1991, 31),\n    COL_VERTEX(2275, -1091, 83),\n    COL_VERTEX(2275, -1991, 83),\n    COL_VERTEX(2254, -1070, 31),\n    COL_VERTEX(1477, -1070, 83),\n    COL_VERTEX(2254, -1070, 83),\n    COL_VERTEX(1477, -1070, 31),\n    COL_VERTEX(1456, -1091, 83),\n    COL_VERTEX(1456, -1091, 31),\n    COL_VERTEX(1456, -1991, 83),\n    COL_VERTEX(1456, -1991, 31),\n    COL_VERTEX(2327, -1991, 83),\n    COL_VERTEX(2327, -1070, 83),\n    COL_VERTEX(1456, -1018, 31),\n    COL_VERTEX(1405, -1070, 31),\n    COL_VERTEX(1405, -1991, 31),\n    COL_VERTEX(2275, -1735, 1664),\n    COL_VERTEX(2275, -835, 1664),\n    COL_VERTEX(2275, -835, 1715),\n    COL_VERTEX(2275, -1735, 1715),\n    COL_VERTEX(2254, -814, 1664),\n    COL_VERTEX(1477, -814, 1715),\n    COL_VERTEX(2254, -814, 1715),\n    COL_VERTEX(1477, -814, 1664),\n    COL_VERTEX(1456, -835, 1715),\n    COL_VERTEX(1456, -835, 1664),\n    COL_VERTEX(1456, -1735, 1715),\n    COL_VERTEX(1456, -1735, 1664),\n    COL_VERTEX(2327, -1735, 1715),\n    COL_VERTEX(2327, -814, 1715),\n    COL_VERTEX(1456, -763, 1664),\n    COL_VERTEX(1405, -814, 1664),\n    COL_VERTEX(1405, -1735, 1664),\n    COL_VERTEX(1405, -2343, -1668),\n    COL_VERTEX(2327, -1991, 31),\n    COL_VERTEX(2327, -1070, 31),\n    COL_VERTEX(2275, -1018, 83),\n    COL_VERTEX(1456, -1018, 83),\n    COL_VERTEX(2275, -1018, 31),\n    COL_VERTEX(1405, -1070, 83),\n    COL_VERTEX(1405, -1991, 83),\n    COL_VERTEX(2327, -1735, 1664),\n    COL_VERTEX(2275, -763, 1715),\n    COL_VERTEX(2327, -814, 1664),\n    COL_VERTEX(1456, -763, 1715),\n    COL_VERTEX(2275, -763, 1664),\n    COL_VERTEX(1405, -814, 1715),\n    COL_VERTEX(1405, -1735, 1715),\n    COL_VERTEX(-6178, -4587, 5117),\n    COL_VERTEX(-5973, -4587, 5321),\n    COL_VERTEX(-6588, -4587, 5117),\n    COL_VERTEX(-6178, -4587, 5321),\n    COL_VERTEX(-5128, -4587, 6525),\n    COL_VERTEX(-7586, -4587, 6525),\n    COL_VERTEX(-6741, -4587, 5321),\n    COL_VERTEX(-6588, -4587, 5321),\n    COL_VERTEX(-6741, -4587, 6089),\n    COL_VERTEX(-5973, -4587, 6089),\n    COL_VERTEX(6144, 6144, -7167),\n    COL_VERTEX(-6178, -4561, 5188),\n    COL_VERTEX(-5973, -4484, 5321),\n    COL_VERTEX(-6741, -4484, 5321),\n    COL_VERTEX(-5973, -4484, 6089),\n    COL_VERTEX(-6720, -4484, 6068),\n    COL_VERTEX(-6720, -4484, 5342),\n    COL_VERTEX(-6588, -4535, 5255),\n    COL_VERTEX(-6588, -4510, 5321),\n    COL_VERTEX(6144, 6144, -4095),\n    COL_VERTEX(-6588, -4561, 5117),\n    COL_VERTEX(-6588, -4561, 5188),\n    COL_VERTEX(-6178, -4561, 5117),\n    COL_VERTEX(-5994, -4484, 5342),\n    COL_VERTEX(-5994, -4484, 6068),\n    COL_VERTEX(-6741, -4484, 6089),\n    COL_VERTEX(-6178, -4535, 5255),\n    COL_VERTEX(-6178, -4535, 5188),\n    COL_VERTEX(-6588, -4535, 5188),\n    COL_VERTEX(-6178, -4510, 5255),\n    COL_VERTEX(-6588, -4510, 5255),\n    COL_VERTEX(-6178, -4510, 5321),\n    COL_VERTEX(2872, 6098, -6143),\n    COL_VERTEX(2673, 6052, -6143),\n    COL_VERTEX(2673, 6052, -5119),\n    COL_VERTEX(2872, 6098, -5119),\n    COL_VERTEX(-5845, -4509, 3251),\n    COL_VERTEX(-5845, -4490, 3047),\n    COL_VERTEX(-6869, -4490, 3047),\n    COL_VERTEX(-6869, -4509, 3251),\n    COL_VERTEX(-6869, -3010, -1778),\n    COL_VERTEX(-5845, -3010, -1778),\n    COL_VERTEX(-5845, -3563, 4067),\n    COL_VERTEX(-6869, -3563, 4067),\n    COL_VERTEX(-3930, 3523, 1674),\n    COL_VERTEX(-4057, 3523, 2698),\n    COL_VERTEX(-5095, 3697, 2438),\n    COL_VERTEX(-4701, 3666, 1481),\n    COL_VERTEX(-5957, 3871, 1926),\n    COL_VERTEX(-5233, 3809, 1164),\n    COL_VERTEX(-6534, 4014, 1059),\n    COL_VERTEX(-5560, 3953, 674),\n    COL_VERTEX(-6710, 4127, 5),\n    COL_VERTEX(-5686, 4096, -79),\n    COL_VERTEX(-6710, 4536, -3107),\n    COL_VERTEX(-5686, 4506, -3071),\n    COL_VERTEX(-5636, 4608, -3769),\n    COL_VERTEX(-5432, 4710, -4308),\n    COL_VERTEX(-5097, 4813, -4685),\n    COL_VERTEX(-4646, 4915, -4947),\n    COL_VERTEX(-4146, 5018, -5073),\n    COL_VERTEX(-3563, 5120, -5119),\n    COL_VERTEX(-6647, 4669, -3992),\n    COL_VERTEX(-6323, 4803, -4847),\n    COL_VERTEX(-5753, 4905, -5488),\n    COL_VERTEX(-5036, 4977, -5904),\n    COL_VERTEX(-4313, 5048, -6087),\n    COL_VERTEX(-3603, 5120, -6143),\n    COL_VERTEX(3072, 6656, -6143),\n    COL_VERTEX(3072, 6656, -5119),\n    COL_VERTEX(3072, 6144, -6143),\n    COL_VERTEX(3226, 6144, -6143),\n    COL_VERTEX(3226, 6656, -6143),\n    COL_VERTEX(3226, 6656, -5119),\n    COL_VERTEX(3226, 6144, -5119),\n    COL_VERTEX(-5026, -5058, -1778),\n    COL_VERTEX(-5026, -5058, 6627),\n    COL_VERTEX(-7688, -2027, 6627),\n    COL_VERTEX(-7688, -5058, 6627),\n    COL_VERTEX(-5845, -4587, 4067),\n    COL_VERTEX(-6869, -4034, -1778),\n    COL_VERTEX(-5845, -4034, -1778),\n    COL_VERTEX(-6841, -3890, -2797),\n    COL_VERTEX(-5095, 3185, 2438),\n    COL_VERTEX(-5957, 3359, 1926),\n    COL_VERTEX(-4057, 3011, 2698),\n    COL_VERTEX(-6534, 3502, 1059),\n    COL_VERTEX(-6710, 3615, 5),\n    COL_VERTEX(-6710, 4024, -3107),\n    COL_VERTEX(-6647, 4157, -3992),\n    COL_VERTEX(-6323, 4291, -4847),\n    COL_VERTEX(-5753, 4393, -5488),\n    COL_VERTEX(-5036, 4465, -5904),\n    COL_VERTEX(-4313, 4536, -6087),\n    COL_VERTEX(-4229, 4521, -5578),\n    COL_VERTEX(-3603, 4608, -6143),\n    COL_VERTEX(-3563, 4608, -5119),\n    COL_VERTEX(-4896, 3169, 1954),\n    COL_VERTEX(-3930, 3011, 1674),\n    COL_VERTEX(-2731, 2819, 1675),\n    COL_VERTEX(-4701, 3154, 1481),\n    COL_VERTEX(-5585, 3327, 1535),\n    COL_VERTEX(-5233, 3297, 1164),\n    COL_VERTEX(-6035, 3471, 862),\n    COL_VERTEX(-5560, 3441, 674),\n    COL_VERTEX(-6196, 3599, -37),\n    COL_VERTEX(-5686, 3584, -79),\n    COL_VERTEX(-6197, 4009, -3089),\n    COL_VERTEX(-5686, 3994, -3071),\n    COL_VERTEX(-6135, 4126, -3879),\n    COL_VERTEX(-5636, 4096, -3769),\n    COL_VERTEX(-5868, 4244, -4572),\n    COL_VERTEX(-5432, 4198, -4308),\n    COL_VERTEX(-5420, 4346, -5080),\n    COL_VERTEX(-5097, 4301, -4685),\n    COL_VERTEX(-4839, 4434, -5420),\n    COL_VERTEX(-4646, 4403, -4947),\n    COL_VERTEX(-4146, 4506, -5073),\n    COL_VERTEX(-3583, 4608, -5631),\n    COL_VERTEX(-3930, 2601, 1059),\n    COL_VERTEX(-4057, 4137, 3312),\n    COL_VERTEX(-4057, 2601, 3312),\n    COL_VERTEX(2598, 726, 1683),\n    COL_VERTEX(-781, 2778, 2804),\n    COL_VERTEX(2471, 761, 2809),\n    COL_VERTEX(-781, 2778, 2702),\n    COL_VERTEX(2275, -1966, -2810),\n    COL_VERTEX(2378, -2866, -2811),\n    COL_VERTEX(2378, -1842, -2811),\n    COL_VERTEX(2275, -1842, -2810),\n    COL_VERTEX(2275, -1945, -2810),\n    COL_VERTEX(1347, -1996, -4028),\n    COL_VERTEX(1456, -1966, -2810),\n    COL_VERTEX(1449, -1996, -4029),\n    COL_VERTEX(1309, -2088, -4698),\n    COL_VERTEX(1184, -2177, -5235),\n    COL_VERTEX(919, -2267, -5544),\n    COL_VERTEX(620, -2357, -5702),\n    COL_VERTEX(308, -2457, -5717),\n    COL_VERTEX(-31, -2542, -5634),\n    COL_VERTEX(-285, -2640, -5388),\n    COL_VERTEX(-465, -2733, -5061),\n    COL_VERTEX(-598, -2825, -4492),\n    COL_VERTEX(-860, -2866, -3832),\n    COL_VERTEX(-1323, -2907, -3338),\n    COL_VERTEX(-1863, -2948, -3044),\n    COL_VERTEX(-2498, -3091, -2970),\n    COL_VERTEX(-3155, -3235, -3092),\n    COL_VERTEX(-3639, -3378, -3373),\n    COL_VERTEX(-4119, -3468, -3631),\n    COL_VERTEX(-4716, -3548, -3712),\n    COL_VERTEX(-5267, -3636, -3493),\n    COL_VERTEX(-5599, -3740, -3116),\n    COL_VERTEX(-5721, -3839, -2592),\n    COL_VERTEX(-5743, -3931, -1777),\n    COL_VERTEX(-6942, -3788, -2815),\n    COL_VERTEX(-6649, -3638, -3818),\n    COL_VERTEX(-5839, -3487, -4563),\n    COL_VERTEX(-4919, -3455, -4866),\n    COL_VERTEX(-4001, -3419, -4822),\n    COL_VERTEX(-3295, -3378, -4494),\n    COL_VERTEX(-2736, -3281, -4177),\n    COL_VERTEX(-2459, -3182, -4116),\n    COL_VERTEX(-2204, -3080, -4121),\n    COL_VERTEX(-2003, -2993, -4217),\n    COL_VERTEX(-1819, -2913, -4474),\n    COL_VERTEX(-1730, -2825, -4882),\n    COL_VERTEX(-1589, -2733, -5471),\n    COL_VERTEX(-1242, -2590, -6161),\n    COL_VERTEX(-580, -2446, -6691),\n    COL_VERTEX(212, -2303, -6922),\n    COL_VERTEX(1035, -2211, -6819),\n    COL_VERTEX(1757, -2170, -6338),\n    COL_VERTEX(2180, -2129, -5624),\n    COL_VERTEX(2352, -2088, -4825),\n    COL_VERTEX(2378, -1996, -4044),\n    COL_VERTEX(-5845, -3931, -1778),\n    COL_VERTEX(-5822, -3839, -2610),\n    COL_VERTEX(-5685, -3740, -3173),\n    COL_VERTEX(-5315, -3636, -3584),\n    COL_VERTEX(-4734, -3548, -3813),\n    COL_VERTEX(-4109, -3468, -3733),\n    COL_VERTEX(-3609, -3378, -3471),\n    COL_VERTEX(-3119, -3235, -3188),\n    COL_VERTEX(-2495, -3091, -3072),\n    COL_VERTEX(-1894, -2948, -3142),\n    COL_VERTEX(-2495, -3194, -3072),\n    COL_VERTEX(-1894, -3051, -3142),\n    COL_VERTEX(-1385, -2907, -3419),\n    COL_VERTEX(-945, -2866, -3888),\n    COL_VERTEX(-945, -2969, -3888),\n    COL_VERTEX(-1385, -3010, -3419),\n    COL_VERTEX(-695, -2825, -4526),\n    COL_VERTEX(-695, -2928, -4526),\n    COL_VERTEX(-562, -2733, -5096),\n    COL_VERTEX(-562, -2835, -5096),\n    COL_VERTEX(-365, -2640, -5453),\n    COL_VERTEX(-365, -2742, -5453),\n    COL_VERTEX(-78, -2542, -5725),\n    COL_VERTEX(-78, -2644, -5725),\n    COL_VERTEX(300, -2457, -5819),\n    COL_VERTEX(300, -2559, -5819),\n    COL_VERTEX(656, -2357, -5798),\n    COL_VERTEX(656, -2459, -5798),\n    COL_VERTEX(993, -2267, -5614),\n    COL_VERTEX(993, -2369, -5614),\n    COL_VERTEX(1280, -2177, -5272),\n    COL_VERTEX(1280, -2280, -5272),\n    COL_VERTEX(1410, -2088, -4710),\n    COL_VERTEX(1410, -2190, -4710),\n    COL_VERTEX(1449, -2098, -4029),\n    COL_VERTEX(1456, -1945, -2810),\n    COL_VERTEX(-3119, -3337, -3188),\n    COL_VERTEX(-3609, -3481, -3471),\n    COL_VERTEX(-4109, -3571, -3733),\n    COL_VERTEX(-4734, -3650, -3813),\n    COL_VERTEX(-5315, -3738, -3584),\n    COL_VERTEX(-5685, -3842, -3173),\n    COL_VERTEX(-5822, -3941, -2610),\n    COL_VERTEX(2598, 726, 1580),\n    COL_VERTEX(-896, 2324, 1576),\n    COL_VERTEX(-776, 2779, 1678),\n    COL_VERTEX(-1024, 2359, 1575),\n    COL_VERTEX(-896, 2836, 1678),\n    COL_VERTEX(-2568, 2401, 1573),\n    COL_VERTEX(-1024, 2871, 1678),\n    COL_VERTEX(-2731, 2409, 1573),\n    COL_VERTEX(-2568, 2913, 1676),\n    COL_VERTEX(-3930, 2601, 1571),\n    COL_VERTEX(-2731, 2921, 1675),\n    COL_VERTEX(-900, 2834, 2702),\n    COL_VERTEX(-781, 2266, 2804),\n    COL_VERTEX(-1029, 2868, 2702),\n    COL_VERTEX(-900, 2322, 2804),\n    COL_VERTEX(-2573, 2913, 2700),\n    COL_VERTEX(-1029, 2356, 2804),\n    COL_VERTEX(-2736, 2920, 2699),\n    COL_VERTEX(-2573, 2401, 2802),\n    COL_VERTEX(-4057, 3113, 2698),\n    COL_VERTEX(-2736, 2408, 2802),\n    COL_VERTEX(2598, 624, 1683),\n    COL_VERTEX(-776, 2677, 1678),\n    COL_VERTEX(-896, 2734, 1678),\n    COL_VERTEX(-1024, 2769, 1678),\n    COL_VERTEX(-2573, 2810, 2700),\n    COL_VERTEX(-1029, 2765, 2702),\n    COL_VERTEX(-900, 2732, 2702),\n    COL_VERTEX(-781, 2676, 2702),\n    COL_VERTEX(2946, 512, 1683),\n    COL_VERTEX(2471, 658, 2707),\n    COL_VERTEX(-6564, -3740, -3761),\n    COL_VERTEX(-6841, -3788, -2797),\n    COL_VERTEX(-6564, -3638, -3761),\n    COL_VERTEX(-5790, -3590, -4473),\n    COL_VERTEX(-5790, -3487, -4473),\n    COL_VERTEX(-4901, -3557, -4765),\n    COL_VERTEX(-4901, -3455, -4765),\n    COL_VERTEX(-4011, -3419, -4720),\n    COL_VERTEX(-3325, -3378, -4396),\n    COL_VERTEX(-2773, -3281, -4081),\n    COL_VERTEX(-2462, -3285, -4014),\n    COL_VERTEX(-2773, -3384, -4081),\n    COL_VERTEX(-2462, -3182, -4014),\n    COL_VERTEX(-2174, -3080, -4024),\n    COL_VERTEX(-1940, -3096, -4136),\n    COL_VERTEX(-2174, -3183, -4024),\n    COL_VERTEX(-1940, -2993, -4136),\n    COL_VERTEX(-1734, -2913, -4417),\n    COL_VERTEX(-1634, -2825, -4848),\n    COL_VERTEX(-1493, -2733, -5435),\n    COL_VERTEX(-1162, -2590, -6097),\n    COL_VERTEX(-533, -2446, -6600),\n    COL_VERTEX(220, -2303, -6820),\n    COL_VERTEX(999, -2211, -6723),\n    COL_VERTEX(1683, -2170, -6267),\n    COL_VERTEX(2085, -2129, -5586),\n    COL_VERTEX(2251, -2088, -4813),\n    COL_VERTEX(2275, -1996, -4043),\n    COL_VERTEX(2275, -1812, -1477),\n    COL_VERTEX(2275, -2098, -4043),\n    COL_VERTEX(2251, -2190, -4813),\n    COL_VERTEX(2085, -2231, -5586),\n    COL_VERTEX(1683, -2272, -6267),\n    COL_VERTEX(999, -2313, -6723),\n    COL_VERTEX(220, -2405, -6820),\n    COL_VERTEX(-533, -2549, -6600),\n    COL_VERTEX(-1162, -2692, -6097),\n    COL_VERTEX(-1493, -2835, -5435),\n    COL_VERTEX(-1634, -2928, -4848),\n    COL_VERTEX(-1734, -3015, -4417),\n    COL_VERTEX(-3325, -3481, -4396),\n    COL_VERTEX(-4011, -3522, -4720),\n    COL_VERTEX(-2736, 2817, 2699),\n    COL_VERTEX(-2568, 2811, 1676),\n    COL_VERTEX(1456, -1812, -1477),\n    COL_VERTEX(2275, -1725, -1299),\n    COL_VERTEX(1456, -1725, -1299),\n    COL_VERTEX(1456, -1508, -1062),\n    COL_VERTEX(2275, -1508, -1062),\n    COL_VERTEX(2275, -1484, -965),\n    COL_VERTEX(1456, -1484, -965),\n    COL_VERTEX(2275, -1479, 216),\n    COL_VERTEX(1456, -1479, 216),\n    COL_VERTEX(2275, -1431, 371),\n    COL_VERTEX(1456, -1431, 371),\n    COL_VERTEX(1456, -1244, 779),\n    COL_VERTEX(2275, -1244, 779),\n    COL_VERTEX(2275, -1228, 878),\n    COL_VERTEX(1456, -1228, 878),\n    COL_VERTEX(1456, -1223, 1846),\n    COL_VERTEX(1456, -1201, 2024),\n    COL_VERTEX(2275, -988, 2623),\n    COL_VERTEX(1456, -988, 2623),\n    COL_VERTEX(2275, -972, 2722),\n    COL_VERTEX(1456, -972, 2722),\n    COL_VERTEX(2275, -967, 3644),\n    COL_VERTEX(1456, -980, 3644),\n    COL_VERTEX(1456, -921, 4677),\n    COL_VERTEX(1483, -768, 5546),\n    COL_VERTEX(1914, -564, 6355),\n    COL_VERTEX(2701, -456, 6904),\n    COL_VERTEX(3681, -333, 7088),\n    COL_VERTEX(4672, -229, 6979),\n    COL_VERTEX(5531, -127, 6436),\n    COL_VERTEX(6060, -26, 5553),\n    COL_VERTEX(6292, 78, 4538),\n    COL_VERTEX(6072, 146, 3531),\n    COL_VERTEX(5540, 215, 2725),\n    COL_VERTEX(4823, 236, 2128),\n    COL_VERTEX(3904, 307, 1784),\n    COL_VERTEX(2275, -1223, 1846),\n    COL_VERTEX(2275, -1201, 2024),\n    COL_VERTEX(2275, -921, 4566),\n    COL_VERTEX(2343, -828, 5186),\n    COL_VERTEX(2617, -736, 5671),\n    COL_VERTEX(3057, -644, 6044),\n    COL_VERTEX(3681, -552, 6163),\n    COL_VERTEX(4329, -450, 6074),\n    COL_VERTEX(4860, -347, 5748),\n    COL_VERTEX(5191, -245, 5215),\n    COL_VERTEX(5380, -139, 4525),\n    COL_VERTEX(5245, -37, 3820),\n    COL_VERTEX(4846, 72, 3315),\n    COL_VERTEX(4360, 184, 2924),\n    COL_VERTEX(3699, 297, 2752),\n    COL_VERTEX(2892, 512, 2707),\n    COL_VERTEX(220, -10034, -5286),\n    COL_VERTEX(66, -10034, -5020),\n    COL_VERTEX(527, -10034, -5286),\n    COL_VERTEX(220, -1387, -5286),\n    COL_VERTEX(681, -10034, -5020),\n    COL_VERTEX(527, -10034, -4754),\n    COL_VERTEX(220, -10034, -4754),\n    COL_VERTEX(-2795, -10034, -4968),\n    COL_VERTEX(-2641, -10034, -5234),\n    COL_VERTEX(-2641, -2866, -5234),\n    COL_VERTEX(-2334, -10034, -5234),\n    COL_VERTEX(-2180, -10034, -4968),\n    COL_VERTEX(-2334, -2866, -4702),\n    COL_VERTEX(-2334, -10034, -4702),\n    COL_VERTEX(-2641, -10034, -4702),\n    COL_VERTEX(-4895, -10034, -3251),\n    COL_VERTEX(-5048, -10034, -2985),\n    COL_VERTEX(-4588, -10034, -3251),\n    COL_VERTEX(-4895, -3057, -3251),\n    COL_VERTEX(-4434, -10034, -2985),\n    COL_VERTEX(-4588, -10034, -2719),\n    COL_VERTEX(-4895, -10034, -2719),\n    COL_VERTEX(-6439, -3913, -2723),\n    COL_VERTEX(-5923, -3941, -2629),\n    COL_VERTEX(-6226, -3789, -3535),\n    COL_VERTEX(-5855, -3842, -3287),\n    COL_VERTEX(-5600, -3664, -4117),\n    COL_VERTEX(-5412, -3738, -3764),\n    COL_VERTEX(-4831, -3607, -4365),\n    COL_VERTEX(-4769, -3650, -4015),\n    COL_VERTEX(-4051, -3544, -4313),\n    COL_VERTEX(-4098, -3571, -3835),\n    COL_VERTEX(-3475, -3481, -3907),\n    COL_VERTEX(-2971, -3360, -3569),\n    COL_VERTEX(-2810, -3384, -3986),\n    COL_VERTEX(-2481, -3244, -3479),\n    COL_VERTEX(-2469, -3285, -3809),\n    COL_VERTEX(-2016, -3124, -3526),\n    COL_VERTEX(-2112, -3183, -3828),\n    COL_VERTEX(-1634, -3060, -3740),\n    COL_VERTEX(-1815, -3096, -3974),\n    COL_VERTEX(-1285, -2991, -4116),\n    COL_VERTEX(-1649, -3015, -4360),\n    COL_VERTEX(-1179, -2928, -4692),\n    COL_VERTEX(-1108, -2835, -5295),\n    COL_VERTEX(-844, -2714, -5840),\n    COL_VERTEX(-345, -2598, -6239),\n    COL_VERTEX(-445, -2742, -5517),\n    COL_VERTEX(-172, -2644, -5907),\n    COL_VERTEX(283, -2559, -6023),\n    COL_VERTEX(252, -2483, -6419),\n    COL_VERTEX(859, -2388, -6345),\n    COL_VERTEX(727, -2459, -5990),\n    COL_VERTEX(1388, -2325, -5988),\n    COL_VERTEX(1142, -2369, -5755),\n    COL_VERTEX(1704, -2257, -5438),\n    COL_VERTEX(1375, -2280, -5309),\n    COL_VERTEX(1844, -2190, -4763),\n    COL_VERTEX(1970, -670, 6301),\n    COL_VERTEX(2743, -559, 6802),\n    COL_VERTEX(2069, -719, 6204),\n    COL_VERTEX(2807, -620, 6648),\n    COL_VERTEX(1605, -819, 5495),\n    COL_VERTEX(4782, 203, 2199),\n    COL_VERTEX(5400, 96, 2844),\n    COL_VERTEX(5487, 136, 2770),\n    COL_VERTEX(-3993, 3011, 2182),\n    COL_VERTEX(-6460, -4034, -1778),\n    COL_VERTEX(5821, -9, 3619),\n    COL_VERTEX(5974, 51, 3565),\n    COL_VERTEX(5944, -112, 4533),\n    COL_VERTEX(6153, -31, 4536),\n    COL_VERTEX(5736, -217, 5427),\n    COL_VERTEX(5931, -136, 5502),\n    COL_VERTEX(5288, -318, 6187),\n    COL_VERTEX(5434, -237, 6337),\n    COL_VERTEX(4549, -420, 6654),\n    COL_VERTEX(4623, -339, 6849),\n    COL_VERTEX(3681, -524, 6740),\n    COL_VERTEX(3681, -443, 6949),\n    COL_VERTEX(3072, 6144, -5119),\n    COL_VERTEX(-5026, -2027, 6627),\n    COL_VERTEX(-5026, -2027, -1778),\n    COL_VERTEX(-7688, -2027, -1778),\n    COL_VERTEX(-7688, -5058, -1778),\n    COL_VERTEX(-6869, -5058, -1778),\n    COL_VERTEX(-5845, -5058, -1778),\n    COL_VERTEX(-6869, -4587, 4067),\n    COL_VERTEX(-6869, -3931, -1778),\n    COL_VERTEX(-3930, 3113, 1674),\n    COL_VERTEX(-3930, 2601, 1674),\n    COL_VERTEX(-3930, 4137, 1059),\n    COL_VERTEX(-4057, 2601, 2698),\n    COL_VERTEX(2598, 214, 1580),\n    COL_VERTEX(2598, 214, 1683),\n    COL_VERTEX(-776, 2779, 1576),\n    COL_VERTEX(-896, 2836, 1576),\n    COL_VERTEX(2471, 249, 2809),\n    COL_VERTEX(2471, 249, 2707),\n    COL_VERTEX(2471, 761, 2707),\n    COL_VERTEX(1354, -2866, -2810),\n    COL_VERTEX(2378, -3020, -4044),\n    COL_VERTEX(1354, -1842, -2810),\n    COL_VERTEX(1456, -1842, -2810),\n    COL_VERTEX(-900, 2834, 2804),\n    COL_VERTEX(1347, -3020, -4028),\n    COL_VERTEX(2352, -3112, -4825),\n    COL_VERTEX(1309, -3112, -4698),\n    COL_VERTEX(1184, -3201, -5235),\n    COL_VERTEX(919, -3291, -5544),\n    COL_VERTEX(620, -3381, -5702),\n    COL_VERTEX(308, -3481, -5717),\n    COL_VERTEX(-31, -3566, -5634),\n    COL_VERTEX(-285, -3664, -5388),\n    COL_VERTEX(-465, -3757, -5061),\n    COL_VERTEX(-598, -3849, -4492),\n    COL_VERTEX(-860, -3890, -3832),\n    COL_VERTEX(-1323, -3931, -3338),\n    COL_VERTEX(-1863, -3972, -3044),\n    COL_VERTEX(-2498, -4115, -2970),\n    COL_VERTEX(-3155, -4259, -3092),\n    COL_VERTEX(-3639, -4402, -3373),\n    COL_VERTEX(-4119, -4492, -3631),\n    COL_VERTEX(-4716, -4572, -3712),\n    COL_VERTEX(-5267, -4660, -3493),\n    COL_VERTEX(-5599, -4764, -3116),\n    COL_VERTEX(-5721, -4863, -2592),\n    COL_VERTEX(-5743, -4955, -1777),\n    COL_VERTEX(-6972, -4955, -1794),\n    COL_VERTEX(-6972, -3931, -1794),\n    COL_VERTEX(-6942, -4812, -2815),\n    COL_VERTEX(-6649, -4662, -3818),\n    COL_VERTEX(-5839, -4511, -4563),\n    COL_VERTEX(-4919, -4479, -4866),\n    COL_VERTEX(-4001, -4443, -4822),\n    COL_VERTEX(-3295, -4402, -4494),\n    COL_VERTEX(-2736, -4305, -4177),\n    COL_VERTEX(-2459, -4206, -4116),\n    COL_VERTEX(-2204, -4104, -4121),\n    COL_VERTEX(-2003, -4017, -4217),\n    COL_VERTEX(-1819, -3937, -4474),\n    COL_VERTEX(-1730, -3849, -4882),\n    COL_VERTEX(-1589, -3757, -5471),\n    COL_VERTEX(-1242, -3614, -6161),\n    COL_VERTEX(-580, -3470, -6691),\n    COL_VERTEX(212, -3327, -6922),\n    COL_VERTEX(1035, -3235, -6819),\n    COL_VERTEX(1757, -3194, -6338),\n    COL_VERTEX(2180, -3153, -5624),\n    COL_VERTEX(1456, -2324, -1477),\n    COL_VERTEX(1456, -2457, -2810),\n    COL_VERTEX(1456, -2237, -1299),\n    COL_VERTEX(-776, 2267, 1576),\n    COL_VERTEX(-1024, 2871, 1575),\n    COL_VERTEX(-2568, 2913, 1573),\n    COL_VERTEX(-2731, 2921, 1573),\n    COL_VERTEX(-3930, 3113, 1571),\n    COL_VERTEX(-1029, 2868, 2804),\n    COL_VERTEX(-2573, 2913, 2802),\n    COL_VERTEX(-2736, 2920, 2802),\n    COL_VERTEX(-4057, 3113, 2800),\n    COL_VERTEX(-4057, 2601, 2800),\n    COL_VERTEX(2598, 112, 1683),\n    COL_VERTEX(2892, 0, 2707),\n    COL_VERTEX(2471, 146, 2707),\n    COL_VERTEX(2946, 0, 1683),\n    COL_VERTEX(3699, -214, 2752),\n    COL_VERTEX(2275, -2457, -2810),\n    COL_VERTEX(2275, -2324, -1477),\n    COL_VERTEX(1456, -2020, -1062),\n    COL_VERTEX(1456, -1996, -965),\n    COL_VERTEX(1456, -1991, 216),\n    COL_VERTEX(1456, -1943, 371),\n    COL_VERTEX(1456, -1756, 779),\n    COL_VERTEX(1456, -1740, 878),\n    COL_VERTEX(1456, -1735, 1846),\n    COL_VERTEX(1456, -1713, 2024),\n    COL_VERTEX(1456, -1500, 2623),\n    COL_VERTEX(1456, -1484, 2722),\n    COL_VERTEX(1456, -1492, 3644),\n    COL_VERTEX(1456, -1433, 4677),\n    COL_VERTEX(1483, -1280, 5546),\n    COL_VERTEX(1914, -1076, 6355),\n    COL_VERTEX(2701, -968, 6904),\n    COL_VERTEX(3681, -845, 7088),\n    COL_VERTEX(4672, -741, 6979),\n    COL_VERTEX(5531, -639, 6436),\n    COL_VERTEX(2275, -1479, 3644),\n    COL_VERTEX(2275, -1433, 4566),\n    COL_VERTEX(6060, -538, 5553),\n    COL_VERTEX(6292, -433, 4538),\n    COL_VERTEX(6072, -365, 3531),\n    COL_VERTEX(5540, -296, 2725),\n    COL_VERTEX(4823, -275, 2128),\n    COL_VERTEX(3904, -204, 1784),\n    COL_VERTEX(2275, -2237, -1299),\n    COL_VERTEX(2275, -2020, -1062),\n    COL_VERTEX(2275, -1996, -965),\n    COL_VERTEX(2275, -1991, 216),\n    COL_VERTEX(2275, -1943, 371),\n    COL_VERTEX(2275, -1756, 779),\n    COL_VERTEX(2275, -1740, 878),\n    COL_VERTEX(2275, -1735, 1846),\n    COL_VERTEX(2275, -1713, 2024),\n    COL_VERTEX(2275, -1500, 2623),\n    COL_VERTEX(2275, -1484, 2722),\n    COL_VERTEX(2343, -1340, 5186),\n    COL_VERTEX(2617, -1248, 5671),\n    COL_VERTEX(3057, -1156, 6044),\n    COL_VERTEX(3681, -1064, 6163),\n    COL_VERTEX(4329, -962, 6074),\n    COL_VERTEX(4860, -859, 5748),\n    COL_VERTEX(5191, -757, 5215),\n    COL_VERTEX(5380, -651, 4525),\n    COL_VERTEX(5245, -549, 3820),\n    COL_VERTEX(4846, -439, 3315),\n    COL_VERTEX(4360, -327, 2924),\n    COL_VERTEX(527, -1387, -5286),\n    COL_VERTEX(681, -1387, -5020),\n    COL_VERTEX(66, -1387, -5020),\n    COL_VERTEX(527, -1387, -4754),\n    COL_VERTEX(220, -1387, -4754),\n    COL_VERTEX(-2334, -2866, -5234),\n    COL_VERTEX(-2180, -2866, -4968),\n    COL_VERTEX(-2795, -2866, -4968),\n    COL_VERTEX(-2641, -2866, -4702),\n    COL_VERTEX(-4588, -3057, -3251),\n    COL_VERTEX(-4434, -3057, -2985),\n    COL_VERTEX(-4895, -3057, -2719),\n    COL_VERTEX(-5048, -3057, -2985),\n    COL_VERTEX(-4588, -3057, -2719),\n    COL_TRI_INIT(SURFACE_DEFAULT, 968),\n    COL_TRI(16, 17, 18),\n    COL_TRI(4, 5, 6),\n    COL_TRI(4, 6, 7),\n    COL_TRI(8, 9, 10),\n    COL_TRI(8, 10, 11),\n    COL_TRI(12, 11, 10),\n    COL_TRI(12, 13, 11),\n    COL_TRI(14, 13, 12),\n    COL_TRI(14, 15, 13),\n    COL_TRI(16, 18, 19),\n    COL_TRI(4, 20, 21),\n    COL_TRI(4, 7, 20),\n    COL_TRI(4, 21, 22),\n    COL_TRI(4, 22, 23),\n    COL_TRI(20, 7, 24),\n    COL_TRI(20, 24, 25),\n    COL_TRI(9, 26, 18),\n    COL_TRI(9, 18, 10),\n    COL_TRI(10, 18, 17),\n    COL_TRI(27, 12, 17),\n    COL_TRI(27, 14, 12),\n    COL_TRI(10, 17, 12),\n    COL_TRI(151, 150, 152),\n    COL_TRI(140, 141, 142),\n    COL_TRI(140, 142, 143),\n    COL_TRI(144, 145, 146),\n    COL_TRI(144, 146, 147),\n    COL_TRI(147, 146, 148),\n    COL_TRI(147, 148, 149),\n    COL_TRI(149, 148, 150),\n    COL_TRI(149, 150, 151),\n    COL_TRI(158, 165, 159),\n    COL_TRI(151, 152, 153),\n    COL_TRI(153, 152, 154),\n    COL_TRI(153, 154, 155),\n    COL_TRI(154, 162, 156),\n    COL_TRI(155, 154, 156),\n    COL_TRI(156, 163, 157),\n    COL_TRI(156, 162, 163),\n    COL_TRI(157, 163, 164),\n    COL_TRI(157, 164, 158),\n    COL_TRI(158, 164, 165),\n    COL_TRI(159, 165, 166),\n    COL_TRI(159, 166, 160),\n    COL_TRI(160, 166, 167),\n    COL_TRI(160, 167, 161),\n    COL_TRI(161, 167, 168),\n    COL_TRI(161, 168, 169),\n    COL_TRI(171, 8, 11),\n    COL_TRI(23, 5, 4),\n    COL_TRI(23, 104, 5),\n    COL_TRI(6, 5, 104),\n    COL_TRI(6, 104, 105),\n    COL_TRI(6, 24, 7),\n    COL_TRI(6, 105, 24),\n    COL_TRI(170, 171, 172),\n    COL_TRI(171, 11, 172),\n    COL_TRI(19, 110, 119),\n    COL_TRI(170, 172, 168),\n    COL_TRI(173, 172, 11),\n    COL_TRI(168, 172, 173),\n    COL_TRI(15, 174, 13),\n    COL_TRI(174, 173, 13),\n    COL_TRI(174, 169, 173),\n    COL_TRI(174, 526, 169),\n    COL_TRI(173, 11, 13),\n    COL_TRI(168, 173, 169),\n    COL_TRI(19, 119, 16),\n    COL_TRI(176, 527, 177),\n    COL_TRI(119, 17, 16),\n    COL_TRI(119, 27, 17),\n    COL_TRI(19, 26, 110),\n    COL_TRI(19, 18, 26),\n    COL_TRI(175, 527, 176),\n    COL_TRI(176, 177, 178),\n    COL_TRI(179, 142, 141),\n    COL_TRI(177, 528, 529),\n    COL_TRI(177, 527, 528),\n    COL_TRI(178, 177, 529),\n    COL_TRI(178, 529, 530),\n    COL_TRI(175, 528, 527),\n    COL_TRI(141, 529, 528),\n    COL_TRI(141, 140, 529),\n    COL_TRI(140, 530, 529),\n    COL_TRI(140, 531, 530),\n    COL_TRI(141, 175, 532),\n    COL_TRI(141, 528, 175),\n    COL_TRI(179, 141, 181),\n    COL_TRI(20, 142, 21),\n    COL_TRI(180, 140, 143),\n    COL_TRI(143, 25, 533),\n    COL_TRI(143, 20, 25),\n    COL_TRI(20, 143, 142),\n    COL_TRI(22, 533, 25),\n    COL_TRI(22, 179, 533),\n    COL_TRI(179, 139, 533),\n    COL_TRI(180, 143, 533),\n    COL_TRI(21, 142, 179),\n    COL_TRI(21, 179, 22),\n    COL_TRI(179, 136, 139),\n    COL_TRI(181, 277, 318),\n    COL_TRI(181, 276, 277),\n    COL_TRI(182, 534, 180),\n    COL_TRI(185, 338, 336),\n    COL_TRI(135, 170, 132),\n    COL_TRI(135, 526, 170),\n    COL_TRI(170, 168, 167),\n    COL_TRI(170, 167, 195),\n    COL_TRI(183, 145, 185),\n    COL_TRI(183, 146, 145),\n    COL_TRI(184, 146, 183),\n    COL_TRI(185, 336, 392),\n    COL_TRI(190, 163, 162),\n    COL_TRI(184, 148, 146),\n    COL_TRI(186, 148, 184),\n    COL_TRI(186, 150, 148),\n    COL_TRI(187, 150, 186),\n    COL_TRI(187, 152, 150),\n    COL_TRI(188, 152, 187),\n    COL_TRI(188, 154, 152),\n    COL_TRI(189, 154, 188),\n    COL_TRI(189, 162, 154),\n    COL_TRI(190, 162, 189),\n    COL_TRI(133, 195, 218),\n    COL_TRI(191, 163, 190),\n    COL_TRI(191, 164, 163),\n    COL_TRI(192, 164, 191),\n    COL_TRI(192, 165, 164),\n    COL_TRI(193, 165, 192),\n    COL_TRI(193, 166, 165),\n    COL_TRI(194, 195, 193),\n    COL_TRI(195, 166, 193),\n    COL_TRI(195, 167, 166),\n    COL_TRI(194, 218, 195),\n    COL_TRI(196, 169, 526),\n    COL_TRI(196, 161, 169),\n    COL_TRI(197, 198, 200),\n    COL_TRI(197, 512, 198),\n    COL_TRI(198, 147, 200),\n    COL_TRI(198, 144, 147),\n    COL_TRI(199, 535, 198),\n    COL_TRI(200, 147, 149),\n    COL_TRI(206, 155, 208),\n    COL_TRI(201, 200, 202),\n    COL_TRI(197, 200, 201),\n    COL_TRI(200, 149, 202),\n    COL_TRI(202, 149, 151),\n    COL_TRI(201, 202, 203),\n    COL_TRI(203, 202, 204),\n    COL_TRI(202, 151, 204),\n    COL_TRI(204, 151, 153),\n    COL_TRI(205, 203, 204),\n    COL_TRI(205, 204, 206),\n    COL_TRI(204, 153, 206),\n    COL_TRI(206, 153, 155),\n    COL_TRI(205, 206, 207),\n    COL_TRI(207, 206, 208),\n    COL_TRI(214, 158, 159),\n    COL_TRI(208, 155, 156),\n    COL_TRI(209, 208, 210),\n    COL_TRI(209, 207, 208),\n    COL_TRI(208, 156, 210),\n    COL_TRI(210, 156, 157),\n    COL_TRI(211, 209, 210),\n    COL_TRI(211, 210, 212),\n    COL_TRI(210, 157, 212),\n    COL_TRI(212, 157, 158),\n    COL_TRI(213, 211, 212),\n    COL_TRI(213, 212, 214),\n    COL_TRI(212, 158, 214),\n    COL_TRI(134, 133, 196),\n    COL_TRI(215, 214, 216),\n    COL_TRI(213, 214, 215),\n    COL_TRI(214, 159, 216),\n    COL_TRI(216, 159, 160),\n    COL_TRI(194, 216, 217),\n    COL_TRI(215, 216, 194),\n    COL_TRI(216, 160, 217),\n    COL_TRI(217, 160, 161),\n    COL_TRI(218, 217, 196),\n    COL_TRI(217, 218, 194),\n    COL_TRI(217, 161, 196),\n    COL_TRI(133, 218, 196),\n    COL_TRI(219, 144, 536),\n    COL_TRI(219, 537, 144),\n    COL_TRI(220, 144, 537),\n    COL_TRI(220, 145, 144),\n    COL_TRI(221, 145, 220),\n    COL_TRI(221, 538, 145),\n    COL_TRI(222, 539, 319),\n    COL_TRI(222, 540, 539),\n    COL_TRI(222, 319, 541),\n    COL_TRI(222, 541, 321),\n    COL_TRI(223, 543, 224),\n    COL_TRI(224, 544, 545),\n    COL_TRI(224, 543, 544),\n    COL_TRI(225, 224, 545),\n    COL_TRI(223, 331, 543),\n    COL_TRI(226, 228, 229),\n    COL_TRI(226, 227, 228),\n    COL_TRI(227, 226, 546),\n    COL_TRI(226, 232, 546),\n    COL_TRI(225, 223, 224),\n    COL_TRI(228, 227, 547),\n    COL_TRI(228, 547, 275),\n    COL_TRI(229, 275, 377),\n    COL_TRI(229, 228, 275),\n    COL_TRI(230, 229, 377),\n    COL_TRI(231, 546, 548),\n    COL_TRI(231, 551, 546),\n    COL_TRI(232, 548, 546),\n    COL_TRI(232, 549, 548),\n    COL_TRI(233, 548, 549),\n    COL_TRI(234, 551, 231),\n    COL_TRI(234, 553, 551),\n    COL_TRI(235, 553, 234),\n    COL_TRI(235, 554, 553),\n    COL_TRI(236, 554, 235),\n    COL_TRI(236, 555, 554),\n    COL_TRI(242, 560, 241),\n    COL_TRI(237, 555, 236),\n    COL_TRI(237, 556, 555),\n    COL_TRI(238, 556, 237),\n    COL_TRI(238, 557, 556),\n    COL_TRI(239, 557, 238),\n    COL_TRI(239, 558, 557),\n    COL_TRI(240, 558, 239),\n    COL_TRI(240, 559, 558),\n    COL_TRI(241, 559, 240),\n    COL_TRI(241, 560, 559),\n    COL_TRI(247, 566, 565),\n    COL_TRI(242, 561, 560),\n    COL_TRI(243, 561, 242),\n    COL_TRI(243, 562, 561),\n    COL_TRI(244, 562, 243),\n    COL_TRI(244, 563, 562),\n    COL_TRI(245, 563, 244),\n    COL_TRI(245, 564, 563),\n    COL_TRI(246, 564, 245),\n    COL_TRI(246, 565, 564),\n    COL_TRI(247, 565, 246),\n    COL_TRI(253, 571, 252),\n    COL_TRI(248, 566, 247),\n    COL_TRI(248, 567, 566),\n    COL_TRI(249, 567, 248),\n    COL_TRI(249, 568, 567),\n    COL_TRI(250, 568, 249),\n    COL_TRI(250, 569, 568),\n    COL_TRI(251, 569, 250),\n    COL_TRI(251, 570, 569),\n    COL_TRI(252, 570, 251),\n    COL_TRI(252, 571, 570),\n    COL_TRI(257, 578, 577),\n    COL_TRI(253, 572, 571),\n    COL_TRI(254, 572, 253),\n    COL_TRI(254, 573, 572),\n    COL_TRI(255, 574, 575),\n    COL_TRI(255, 576, 574),\n    COL_TRI(256, 576, 255),\n    COL_TRI(256, 577, 576),\n    COL_TRI(257, 577, 256),\n    COL_TRI(263, 583, 262),\n    COL_TRI(258, 578, 257),\n    COL_TRI(258, 579, 578),\n    COL_TRI(259, 579, 258),\n    COL_TRI(259, 580, 579),\n    COL_TRI(260, 580, 259),\n    COL_TRI(260, 581, 580),\n    COL_TRI(261, 581, 260),\n    COL_TRI(261, 582, 581),\n    COL_TRI(262, 582, 261),\n    COL_TRI(262, 583, 582),\n    COL_TRI(268, 589, 588),\n    COL_TRI(263, 584, 583),\n    COL_TRI(264, 584, 263),\n    COL_TRI(264, 585, 584),\n    COL_TRI(265, 585, 264),\n    COL_TRI(265, 586, 585),\n    COL_TRI(266, 586, 265),\n    COL_TRI(266, 587, 586),\n    COL_TRI(267, 587, 266),\n    COL_TRI(267, 588, 587),\n    COL_TRI(268, 588, 267),\n    COL_TRI(274, 594, 273),\n    COL_TRI(269, 589, 268),\n    COL_TRI(269, 590, 589),\n    COL_TRI(270, 590, 269),\n    COL_TRI(270, 591, 590),\n    COL_TRI(271, 591, 270),\n    COL_TRI(271, 592, 591),\n    COL_TRI(272, 592, 271),\n    COL_TRI(272, 593, 592),\n    COL_TRI(273, 593, 272),\n    COL_TRI(273, 594, 593),\n    COL_TRI(278, 251, 279),\n    COL_TRI(274, 552, 594),\n    COL_TRI(275, 552, 274),\n    COL_TRI(275, 547, 552),\n    COL_TRI(276, 253, 277),\n    COL_TRI(276, 254, 253),\n    COL_TRI(277, 253, 252),\n    COL_TRI(277, 252, 278),\n    COL_TRI(278, 252, 251),\n    COL_TRI(284, 246, 285),\n    COL_TRI(279, 251, 250),\n    COL_TRI(279, 250, 280),\n    COL_TRI(280, 250, 249),\n    COL_TRI(280, 249, 281),\n    COL_TRI(281, 249, 248),\n    COL_TRI(281, 248, 282),\n    COL_TRI(282, 248, 247),\n    COL_TRI(282, 247, 283),\n    COL_TRI(283, 247, 284),\n    COL_TRI(247, 246, 284),\n    COL_TRI(287, 288, 291),\n    COL_TRI(246, 245, 285),\n    COL_TRI(285, 245, 288),\n    COL_TRI(286, 284, 285),\n    COL_TRI(287, 285, 288),\n    COL_TRI(286, 285, 287),\n    COL_TRI(245, 244, 288),\n    COL_TRI(288, 244, 289),\n    COL_TRI(244, 243, 289),\n    COL_TRI(289, 243, 292),\n    COL_TRI(290, 289, 292),\n    COL_TRI(291, 289, 290),\n    COL_TRI(291, 288, 289),\n    COL_TRI(295, 296, 297),\n    COL_TRI(243, 242, 292),\n    COL_TRI(292, 241, 294),\n    COL_TRI(292, 242, 241),\n    COL_TRI(290, 292, 293),\n    COL_TRI(293, 292, 294),\n    COL_TRI(294, 241, 240),\n    COL_TRI(294, 240, 296),\n    COL_TRI(295, 294, 296),\n    COL_TRI(293, 294, 295),\n    COL_TRI(296, 240, 239),\n    COL_TRI(296, 239, 298),\n    COL_TRI(297, 296, 298),\n    COL_TRI(304, 236, 235),\n    COL_TRI(298, 239, 238),\n    COL_TRI(298, 238, 300),\n    COL_TRI(297, 298, 299),\n    COL_TRI(299, 298, 300),\n    COL_TRI(300, 238, 237),\n    COL_TRI(300, 237, 302),\n    COL_TRI(301, 300, 302),\n    COL_TRI(299, 300, 301),\n    COL_TRI(302, 237, 236),\n    COL_TRI(302, 236, 304),\n    COL_TRI(303, 302, 304),\n    COL_TRI(301, 302, 303),\n    COL_TRI(304, 235, 306),\n    COL_TRI(305, 304, 306),\n    COL_TRI(303, 304, 305),\n    COL_TRI(306, 235, 234),\n    COL_TRI(306, 234, 308),\n    COL_TRI(307, 306, 308),\n    COL_TRI(305, 306, 307),\n    COL_TRI(308, 234, 231),\n    COL_TRI(309, 308, 233),\n    COL_TRI(307, 308, 309),\n    COL_TRI(308, 231, 233),\n    COL_TRI(233, 231, 548),\n    COL_TRI(310, 233, 549),\n    COL_TRI(309, 233, 310),\n    COL_TRI(310, 549, 311),\n    COL_TRI(311, 595, 394),\n    COL_TRI(311, 596, 595),\n    COL_TRI(312, 284, 286),\n    COL_TRI(312, 283, 284),\n    COL_TRI(313, 283, 312),\n    COL_TRI(313, 282, 283),\n    COL_TRI(314, 282, 313),\n    COL_TRI(320, 541, 598),\n    COL_TRI(314, 281, 282),\n    COL_TRI(315, 281, 314),\n    COL_TRI(315, 280, 281),\n    COL_TRI(316, 280, 315),\n    COL_TRI(316, 279, 280),\n    COL_TRI(317, 279, 316),\n    COL_TRI(317, 278, 279),\n    COL_TRI(318, 278, 317),\n    COL_TRI(318, 277, 278),\n    COL_TRI(319, 598, 541),\n    COL_TRI(320, 542, 541),\n    COL_TRI(321, 542, 323),\n    COL_TRI(321, 541, 542),\n    COL_TRI(322, 542, 320),\n    COL_TRI(322, 599, 542),\n    COL_TRI(323, 542, 599),\n    COL_TRI(323, 599, 325),\n    COL_TRI(324, 599, 322),\n    COL_TRI(324, 600, 599),\n    COL_TRI(325, 599, 600),\n    COL_TRI(325, 600, 327),\n    COL_TRI(326, 601, 600),\n    COL_TRI(326, 600, 324),\n    COL_TRI(327, 600, 601),\n    COL_TRI(332, 550, 330),\n    COL_TRI(327, 601, 329),\n    COL_TRI(328, 601, 326),\n    COL_TRI(328, 602, 601),\n    COL_TRI(329, 601, 602),\n    COL_TRI(329, 602, 535),\n    COL_TRI(331, 223, 550),\n    COL_TRI(330, 550, 223),\n    COL_TRI(330, 223, 225),\n    COL_TRI(338, 606, 605),\n    COL_TRI(331, 550, 333),\n    COL_TRI(333, 550, 603),\n    COL_TRI(332, 603, 550),\n    COL_TRI(334, 603, 332),\n    COL_TRI(335, 603, 604),\n    COL_TRI(333, 603, 335),\n    COL_TRI(334, 604, 603),\n    COL_TRI(336, 604, 334),\n    COL_TRI(337, 604, 605),\n    COL_TRI(335, 604, 337),\n    COL_TRI(336, 605, 604),\n    COL_TRI(338, 605, 336),\n    COL_TRI(337, 605, 339),\n    COL_TRI(339, 605, 606),\n    COL_TRI(343, 327, 393),\n    COL_TRI(339, 606, 607),\n    COL_TRI(340, 321, 341),\n    COL_TRI(341, 323, 342),\n    COL_TRI(341, 321, 323),\n    COL_TRI(342, 323, 325),\n    COL_TRI(342, 325, 343),\n    COL_TRI(340, 222, 321),\n    COL_TRI(343, 325, 327),\n    COL_TRI(348, 608, 340),\n    COL_TRI(344, 332, 345),\n    COL_TRI(345, 332, 330),\n    COL_TRI(345, 330, 346),\n    COL_TRI(346, 330, 225),\n    COL_TRI(346, 225, 347),\n    COL_TRI(344, 334, 332),\n    COL_TRI(347, 225, 545),\n    COL_TRI(347, 545, 349),\n    COL_TRI(352, 256, 255),\n    COL_TRI(349, 609, 445),\n    COL_TRI(349, 610, 609),\n    COL_TRI(350, 351, 182),\n    COL_TRI(350, 352, 351),\n    COL_TRI(182, 351, 534),\n    COL_TRI(351, 255, 575),\n    COL_TRI(352, 255, 351),\n    COL_TRI(351, 575, 534),\n    COL_TRI(358, 259, 357),\n    COL_TRI(353, 354, 352),\n    COL_TRI(353, 352, 350),\n    COL_TRI(354, 256, 352),\n    COL_TRI(354, 257, 256),\n    COL_TRI(355, 354, 353),\n    COL_TRI(355, 356, 354),\n    COL_TRI(356, 257, 354),\n    COL_TRI(356, 258, 257),\n    COL_TRI(357, 258, 356),\n    COL_TRI(357, 259, 258),\n    COL_TRI(358, 260, 259),\n    COL_TRI(359, 260, 358),\n    COL_TRI(359, 261, 260),\n    COL_TRI(360, 359, 361),\n    COL_TRI(360, 362, 359),\n    COL_TRI(361, 359, 358),\n    COL_TRI(362, 262, 359),\n    COL_TRI(262, 261, 359),\n    COL_TRI(363, 263, 362),\n    COL_TRI(263, 262, 362),\n    COL_TRI(364, 366, 363),\n    COL_TRI(365, 363, 362),\n    COL_TRI(364, 363, 365),\n    COL_TRI(366, 264, 363),\n    COL_TRI(264, 263, 363),\n    COL_TRI(367, 265, 366),\n    COL_TRI(265, 264, 366),\n    COL_TRI(266, 265, 367),\n    COL_TRI(368, 266, 367),\n    COL_TRI(369, 266, 368),\n    COL_TRI(374, 272, 271),\n    COL_TRI(369, 267, 266),\n    COL_TRI(370, 267, 369),\n    COL_TRI(370, 268, 267),\n    COL_TRI(371, 268, 370),\n    COL_TRI(371, 269, 268),\n    COL_TRI(372, 269, 371),\n    COL_TRI(372, 270, 269),\n    COL_TRI(373, 270, 372),\n    COL_TRI(373, 271, 270),\n    COL_TRI(374, 271, 373),\n    COL_TRI(375, 272, 374),\n    COL_TRI(375, 273, 272),\n    COL_TRI(376, 273, 375),\n    COL_TRI(376, 274, 273),\n    COL_TRI(377, 274, 376),\n    COL_TRI(377, 275, 274),\n    COL_TRI(378, 613, 230),\n    COL_TRI(230, 377, 379),\n    COL_TRI(384, 372, 371),\n    COL_TRI(379, 377, 376),\n    COL_TRI(379, 376, 380),\n    COL_TRI(380, 376, 375),\n    COL_TRI(380, 375, 381),\n    COL_TRI(381, 375, 374),\n    COL_TRI(381, 374, 382),\n    COL_TRI(382, 374, 373),\n    COL_TRI(382, 373, 383),\n    COL_TRI(383, 373, 372),\n    COL_TRI(383, 372, 384),\n    COL_TRI(389, 366, 364),\n    COL_TRI(384, 371, 385),\n    COL_TRI(385, 371, 370),\n    COL_TRI(385, 370, 386),\n    COL_TRI(386, 370, 369),\n    COL_TRI(386, 369, 387),\n    COL_TRI(387, 369, 368),\n    COL_TRI(387, 368, 388),\n    COL_TRI(388, 368, 367),\n    COL_TRI(388, 367, 389),\n    COL_TRI(389, 367, 366),\n    COL_TRI(392, 334, 344),\n    COL_TRI(365, 362, 360),\n    COL_TRI(361, 358, 390),\n    COL_TRI(390, 358, 357),\n    COL_TRI(390, 357, 391),\n    COL_TRI(391, 357, 356),\n    COL_TRI(391, 356, 355),\n    COL_TRI(392, 336, 334),\n    COL_TRI(393, 327, 329),\n    COL_TRI(393, 329, 199),\n    COL_TRI(199, 329, 535),\n    COL_TRI(394, 595, 597),\n    COL_TRI(395, 378, 394),\n    COL_TRI(395, 394, 396),\n    COL_TRI(378, 311, 394),\n    COL_TRI(394, 597, 396),\n    COL_TRI(396, 597, 615),\n    COL_TRI(396, 615, 397),\n    COL_TRI(397, 615, 616),\n    COL_TRI(398, 396, 397),\n    COL_TRI(399, 398, 397),\n    COL_TRI(399, 397, 400),\n    COL_TRI(397, 616, 400),\n    COL_TRI(400, 616, 617),\n    COL_TRI(401, 399, 400),\n    COL_TRI(401, 400, 402),\n    COL_TRI(400, 617, 402),\n    COL_TRI(402, 617, 618),\n    COL_TRI(403, 401, 402),\n    COL_TRI(403, 402, 404),\n    COL_TRI(402, 618, 404),\n    COL_TRI(404, 618, 619),\n    COL_TRI(404, 619, 405),\n    COL_TRI(405, 619, 620),\n    COL_TRI(406, 404, 405),\n    COL_TRI(407, 405, 408),\n    COL_TRI(407, 406, 405),\n    COL_TRI(405, 620, 408),\n    COL_TRI(406, 403, 404),\n    COL_TRI(408, 620, 621),\n    COL_TRI(408, 409, 430),\n    COL_TRI(408, 430, 407),\n    COL_TRI(408, 621, 409),\n    COL_TRI(409, 621, 622),\n    COL_TRI(409, 622, 410),\n    COL_TRI(410, 622, 623),\n    COL_TRI(409, 410, 431),\n    COL_TRI(411, 431, 410),\n    COL_TRI(411, 410, 412),\n    COL_TRI(410, 623, 412),\n    COL_TRI(409, 431, 430),\n    COL_TRI(412, 623, 624),\n    COL_TRI(413, 411, 412),\n    COL_TRI(413, 412, 414),\n    COL_TRI(412, 624, 414),\n    COL_TRI(414, 624, 625),\n    COL_TRI(415, 413, 414),\n    COL_TRI(415, 414, 416),\n    COL_TRI(414, 625, 416),\n    COL_TRI(416, 625, 626),\n    COL_TRI(416, 626, 417),\n    COL_TRI(417, 626, 627),\n    COL_TRI(417, 415, 416),\n    COL_TRI(417, 432, 415),\n    COL_TRI(417, 627, 418),\n    COL_TRI(418, 627, 628),\n    COL_TRI(418, 628, 419),\n    COL_TRI(419, 628, 629),\n    COL_TRI(419, 629, 420),\n    COL_TRI(420, 629, 630),\n    COL_TRI(420, 630, 421),\n    COL_TRI(421, 630, 631),\n    COL_TRI(421, 631, 422),\n    COL_TRI(422, 631, 632),\n    COL_TRI(422, 632, 423),\n    COL_TRI(423, 632, 635),\n    COL_TRI(423, 635, 424),\n    COL_TRI(424, 635, 636),\n    COL_TRI(424, 519, 521),\n    COL_TRI(424, 521, 423),\n    COL_TRI(425, 519, 424),\n    COL_TRI(424, 636, 425),\n    COL_TRI(425, 636, 637),\n    COL_TRI(425, 637, 426),\n    COL_TRI(426, 637, 638),\n    COL_TRI(426, 638, 427),\n    COL_TRI(427, 638, 639),\n    COL_TRI(427, 639, 428),\n    COL_TRI(427, 511, 426),\n    COL_TRI(428, 511, 427),\n    COL_TRI(428, 639, 640),\n    COL_TRI(428, 640, 429),\n    COL_TRI(429, 640, 611),\n    COL_TRI(399, 643, 642),\n    COL_TRI(429, 611, 348),\n    COL_TRI(348, 611, 608),\n    COL_TRI(378, 614, 613),\n    COL_TRI(395, 614, 378),\n    COL_TRI(395, 641, 614),\n    COL_TRI(398, 641, 395),\n    COL_TRI(398, 642, 641),\n    COL_TRI(399, 642, 398),\n    COL_TRI(431, 648, 430),\n    COL_TRI(401, 643, 399),\n    COL_TRI(401, 644, 643),\n    COL_TRI(403, 644, 401),\n    COL_TRI(403, 645, 644),\n    COL_TRI(406, 645, 403),\n    COL_TRI(406, 646, 645),\n    COL_TRI(407, 646, 406),\n    COL_TRI(407, 647, 646),\n    COL_TRI(430, 647, 407),\n    COL_TRI(430, 648, 647),\n    COL_TRI(433, 652, 634),\n    COL_TRI(431, 649, 648),\n    COL_TRI(411, 649, 431),\n    COL_TRI(411, 650, 649),\n    COL_TRI(413, 650, 411),\n    COL_TRI(413, 651, 650),\n    COL_TRI(415, 651, 413),\n    COL_TRI(415, 633, 651),\n    COL_TRI(432, 633, 415),\n    COL_TRI(432, 634, 633),\n    COL_TRI(433, 634, 432),\n    COL_TRI(437, 656, 655),\n    COL_TRI(319, 539, 598),\n    COL_TRI(434, 652, 433),\n    COL_TRI(434, 653, 652),\n    COL_TRI(435, 653, 434),\n    COL_TRI(435, 654, 653),\n    COL_TRI(436, 654, 435),\n    COL_TRI(436, 655, 654),\n    COL_TRI(437, 655, 436),\n    COL_TRI(443, 661, 442),\n    COL_TRI(438, 656, 437),\n    COL_TRI(438, 657, 656),\n    COL_TRI(439, 657, 438),\n    COL_TRI(439, 658, 657),\n    COL_TRI(440, 658, 439),\n    COL_TRI(440, 659, 658),\n    COL_TRI(441, 659, 440),\n    COL_TRI(441, 660, 659),\n    COL_TRI(442, 660, 441),\n    COL_TRI(442, 661, 660),\n    COL_TRI(443, 662, 661),\n    COL_TRI(444, 662, 443),\n    COL_TRI(444, 612, 662),\n    COL_TRI(445, 612, 444),\n    COL_TRI(445, 609, 612),\n    COL_TRI(446, 663, 448),\n    COL_TRI(446, 449, 663),\n    COL_TRI(447, 449, 446),\n    COL_TRI(448, 663, 664),\n    COL_TRI(449, 664, 663),\n    COL_TRI(448, 664, 450),\n    COL_TRI(447, 665, 449),\n    COL_TRI(449, 666, 664),\n    COL_TRI(449, 667, 666),\n    COL_TRI(449, 665, 667),\n    COL_TRI(450, 664, 666),\n    COL_TRI(450, 666, 451),\n    COL_TRI(451, 666, 667),\n    COL_TRI(451, 667, 452),\n    COL_TRI(452, 667, 665),\n    COL_TRI(452, 665, 447),\n    COL_TRI(453, 455, 454),\n    COL_TRI(454, 455, 668),\n    COL_TRI(454, 668, 456),\n    COL_TRI(461, 464, 672),\n    COL_TRI(455, 669, 668),\n    COL_TRI(456, 668, 669),\n    COL_TRI(456, 669, 457),\n    COL_TRI(455, 670, 671),\n    COL_TRI(455, 671, 458),\n    COL_TRI(453, 670, 455),\n    COL_TRI(455, 458, 669),\n    COL_TRI(457, 669, 458),\n    COL_TRI(457, 458, 459),\n    COL_TRI(458, 671, 460),\n    COL_TRI(459, 458, 460),\n    COL_TRI(460, 670, 453),\n    COL_TRI(460, 671, 670),\n    COL_TRI(461, 672, 463),\n    COL_TRI(468, 513, 181),\n    COL_TRI(463, 672, 673),\n    COL_TRI(464, 673, 672),\n    COL_TRI(463, 673, 465),\n    COL_TRI(464, 674, 676),\n    COL_TRI(464, 675, 674),\n    COL_TRI(464, 676, 673),\n    COL_TRI(462, 464, 461),\n    COL_TRI(462, 675, 464),\n    COL_TRI(465, 673, 676),\n    COL_TRI(465, 676, 466),\n    COL_TRI(466, 676, 674),\n    COL_TRI(466, 674, 467),\n    COL_TRI(467, 674, 675),\n    COL_TRI(467, 675, 462),\n    COL_TRI(469, 468, 181),\n    COL_TRI(470, 468, 469),\n    COL_TRI(468, 182, 513),\n    COL_TRI(470, 350, 468),\n    COL_TRI(182, 180, 513),\n    COL_TRI(318, 469, 181),\n    COL_TRI(181, 513, 137),\n    COL_TRI(469, 471, 470),\n    COL_TRI(471, 469, 318),\n    COL_TRI(472, 470, 471),\n    COL_TRI(353, 350, 470),\n    COL_TRI(472, 353, 470),\n    COL_TRI(350, 182, 468),\n    COL_TRI(513, 180, 137),\n    COL_TRI(315, 475, 316),\n    COL_TRI(471, 473, 472),\n    COL_TRI(317, 471, 318),\n    COL_TRI(473, 471, 317),\n    COL_TRI(474, 472, 473),\n    COL_TRI(355, 353, 472),\n    COL_TRI(474, 355, 472),\n    COL_TRI(473, 475, 474),\n    COL_TRI(475, 473, 316),\n    COL_TRI(316, 473, 317),\n    COL_TRI(476, 474, 475),\n    COL_TRI(391, 355, 474),\n    COL_TRI(476, 391, 474),\n    COL_TRI(475, 477, 476),\n    COL_TRI(477, 475, 315),\n    COL_TRI(480, 361, 390),\n    COL_TRI(478, 476, 477),\n    COL_TRI(390, 391, 476),\n    COL_TRI(478, 390, 476),\n    COL_TRI(477, 313, 478),\n    COL_TRI(314, 477, 315),\n    COL_TRI(313, 477, 314),\n    COL_TRI(390, 478, 479),\n    COL_TRI(312, 479, 478),\n    COL_TRI(312, 478, 313),\n    COL_TRI(479, 480, 390),\n    COL_TRI(480, 479, 481),\n    COL_TRI(286, 481, 479),\n    COL_TRI(286, 479, 312),\n    COL_TRI(481, 482, 480),\n    COL_TRI(482, 361, 480),\n    COL_TRI(483, 482, 481),\n    COL_TRI(287, 483, 481),\n    COL_TRI(287, 481, 286),\n    COL_TRI(483, 484, 482),\n    COL_TRI(484, 360, 482),\n    COL_TRI(482, 360, 361),\n    COL_TRI(485, 483, 291),\n    COL_TRI(483, 287, 291),\n    COL_TRI(484, 483, 485),\n    COL_TRI(488, 389, 364),\n    COL_TRI(484, 485, 486),\n    COL_TRI(484, 365, 360),\n    COL_TRI(486, 365, 484),\n    COL_TRI(486, 485, 487),\n    COL_TRI(290, 487, 485),\n    COL_TRI(290, 485, 291),\n    COL_TRI(487, 488, 486),\n    COL_TRI(488, 364, 486),\n    COL_TRI(486, 364, 365),\n    COL_TRI(488, 487, 489),\n    COL_TRI(293, 487, 290),\n    COL_TRI(293, 489, 487),\n    COL_TRI(489, 388, 488),\n    COL_TRI(388, 389, 488),\n    COL_TRI(295, 490, 489),\n    COL_TRI(489, 490, 388),\n    COL_TRI(295, 489, 293),\n    COL_TRI(490, 387, 388),\n    COL_TRI(295, 493, 491),\n    COL_TRI(491, 490, 295),\n    COL_TRI(297, 493, 295),\n    COL_TRI(386, 387, 490),\n    COL_TRI(491, 386, 490),\n    COL_TRI(491, 493, 492),\n    COL_TRI(385, 386, 491),\n    COL_TRI(492, 385, 491),\n    COL_TRI(493, 494, 492),\n    COL_TRI(494, 493, 297),\n    COL_TRI(492, 494, 496),\n    COL_TRI(494, 495, 496),\n    COL_TRI(495, 494, 299),\n    COL_TRI(496, 384, 492),\n    COL_TRI(384, 385, 492),\n    COL_TRI(495, 497, 496),\n    COL_TRI(383, 384, 496),\n    COL_TRI(497, 383, 496),\n    COL_TRI(495, 498, 497),\n    COL_TRI(301, 495, 299),\n    COL_TRI(498, 495, 301),\n    COL_TRI(299, 494, 297),\n    COL_TRI(503, 380, 501),\n    COL_TRI(499, 497, 498),\n    COL_TRI(382, 383, 497),\n    COL_TRI(499, 382, 497),\n    COL_TRI(498, 500, 499),\n    COL_TRI(500, 498, 303),\n    COL_TRI(303, 498, 301),\n    COL_TRI(501, 499, 500),\n    COL_TRI(381, 382, 499),\n    COL_TRI(501, 381, 499),\n    COL_TRI(501, 500, 502),\n    COL_TRI(502, 500, 305),\n    COL_TRI(305, 500, 303),\n    COL_TRI(503, 501, 502),\n    COL_TRI(380, 381, 501),\n    COL_TRI(503, 502, 309),\n    COL_TRI(307, 502, 305),\n    COL_TRI(309, 502, 307),\n    COL_TRI(379, 503, 309),\n    COL_TRI(310, 379, 309),\n    COL_TRI(197, 183, 512),\n    COL_TRI(201, 184, 197),\n    COL_TRI(184, 183, 197),\n    COL_TRI(209, 189, 207),\n    COL_TRI(183, 185, 512),\n    COL_TRI(186, 184, 201),\n    COL_TRI(203, 186, 201),\n    COL_TRI(187, 186, 203),\n    COL_TRI(205, 187, 203),\n    COL_TRI(207, 188, 205),\n    COL_TRI(188, 187, 205),\n    COL_TRI(189, 188, 207),\n    COL_TRI(398, 395, 396),\n    COL_TRI(190, 189, 209),\n    COL_TRI(211, 190, 209),\n    COL_TRI(191, 190, 211),\n    COL_TRI(213, 191, 211),\n    COL_TRI(215, 192, 213),\n    COL_TRI(192, 191, 213),\n    COL_TRI(193, 192, 215),\n    COL_TRI(194, 193, 215),\n    COL_TRI(505, 507, 506),\n    COL_TRI(378, 230, 311),\n    COL_TRI(504, 506, 508),\n    COL_TRI(504, 508, 418),\n    COL_TRI(419, 504, 418),\n    COL_TRI(420, 504, 419),\n    COL_TRI(505, 506, 504),\n    COL_TRI(420, 505, 504),\n    COL_TRI(506, 434, 433),\n    COL_TRI(506, 433, 508),\n    COL_TRI(507, 434, 506),\n    COL_TRI(509, 442, 510),\n    COL_TRI(508, 433, 432),\n    COL_TRI(508, 432, 417),\n    COL_TRI(418, 508, 417),\n    COL_TRI(429, 509, 428),\n    COL_TRI(348, 444, 429),\n    COL_TRI(429, 444, 443),\n    COL_TRI(429, 443, 509),\n    COL_TRI(509, 510, 511),\n    COL_TRI(509, 511, 428),\n    COL_TRI(509, 443, 442),\n    COL_TRI(445, 348, 340),\n    COL_TRI(510, 514, 515),\n    COL_TRI(510, 442, 441),\n    COL_TRI(510, 441, 514),\n    COL_TRI(511, 510, 515),\n    COL_TRI(511, 515, 426),\n    COL_TRI(349, 340, 341),\n    COL_TRI(347, 349, 341),\n    COL_TRI(349, 445, 340),\n    COL_TRI(198, 512, 199),\n    COL_TRI(346, 347, 341),\n    COL_TRI(346, 341, 342),\n    COL_TRI(345, 346, 342),\n    COL_TRI(345, 342, 343),\n    COL_TRI(344, 345, 343),\n    COL_TRI(344, 343, 393),\n    COL_TRI(392, 344, 393),\n    COL_TRI(392, 393, 199),\n    COL_TRI(185, 392, 199),\n    COL_TRI(512, 185, 199),\n    COL_TRI(514, 441, 440),\n    COL_TRI(230, 379, 310),\n    COL_TRI(311, 230, 310),\n    COL_TRI(180, 138, 137),\n    COL_TRI(348, 445, 444),\n    COL_TRI(426, 515, 425),\n    COL_TRI(514, 440, 516),\n    COL_TRI(514, 516, 517),\n    COL_TRI(515, 514, 517),\n    COL_TRI(516, 440, 439),\n    COL_TRI(516, 439, 518),\n    COL_TRI(516, 518, 519),\n    COL_TRI(517, 516, 519),\n    COL_TRI(425, 517, 519),\n    COL_TRI(515, 517, 425),\n    COL_TRI(518, 439, 438),\n    COL_TRI(519, 518, 520),\n    COL_TRI(518, 438, 520),\n    COL_TRI(519, 520, 521),\n    COL_TRI(520, 438, 437),\n    COL_TRI(520, 437, 522),\n    COL_TRI(521, 520, 522),\n    COL_TRI(423, 521, 523),\n    COL_TRI(423, 523, 422),\n    COL_TRI(522, 437, 436),\n    COL_TRI(521, 522, 523),\n    COL_TRI(422, 523, 525),\n    COL_TRI(523, 524, 525),\n    COL_TRI(523, 522, 524),\n    COL_TRI(422, 525, 421),\n    COL_TRI(522, 436, 524),\n    COL_TRI(102, 122, 100),\n    COL_TRI(524, 436, 435),\n    COL_TRI(524, 435, 507),\n    COL_TRI(525, 524, 507),\n    COL_TRI(421, 505, 420),\n    COL_TRI(421, 525, 505),\n    COL_TRI(507, 435, 434),\n    COL_TRI(525, 507, 505),\n    COL_TRI(379, 380, 503),\n    COL_TRI(100, 111, 103),\n    COL_TRI(121, 127, 111),\n    COL_TRI(100, 122, 111),\n    COL_TRI(111, 126, 103),\n    COL_TRI(111, 127, 126),\n    COL_TRI(101, 103, 131),\n    COL_TRI(103, 129, 131),\n    COL_TRI(103, 126, 129),\n    COL_TRI(102, 120, 122),\n    COL_TRI(117, 129, 126),\n    COL_TRI(131, 118, 113),\n    COL_TRI(121, 128, 127),\n    COL_TRI(118, 107, 106),\n    COL_TRI(121, 107, 117),\n    COL_TRI(130, 107, 118),\n    COL_TRI(130, 117, 107),\n    COL_TRI(107, 120, 102),\n    COL_TRI(107, 121, 120),\n    COL_TRI(121, 117, 128),\n    COL_TRI(117, 130, 129),\n    COL_TRI(118, 106, 113),\n    COL_TRI(113, 106, 108),\n    COL_TRI(131, 113, 112),\n    COL_TRI(113, 108, 125),\n    COL_TRI(101, 131, 112),\n    COL_TRI(101, 112, 114),\n    COL_TRI(101, 114, 109),\n    COL_TRI(125, 108, 109),\n    COL_TRI(125, 109, 114),\n    COL_TRI_INIT(SURFACE_DEATH_PLANE, 2),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI_INIT(SURFACE_TIMER_START, 2),\n    COL_TRI(132, 133, 134),\n    COL_TRI(134, 135, 132),\n    COL_TRI_INIT(SURFACE_TIMER_END, 2),\n    COL_TRI(136, 137, 138),\n    COL_TRI(139, 136, 138),\n    COL_TRI_INIT(SURFACE_NO_CAM_COLLISION, 120),\n    COL_TRI(28, 29, 30),\n    COL_TRI(28, 30, 31),\n    COL_TRI(31, 32, 28),\n    COL_TRI(31, 30, 33),\n    COL_TRI(30, 34, 35),\n    COL_TRI(30, 35, 33),\n    COL_TRI(29, 34, 30),\n    COL_TRI(36, 37, 31),\n    COL_TRI(31, 33, 36),\n    COL_TRI(31, 37, 32),\n    COL_TRI(29, 38, 34),\n    COL_TRI(33, 35, 39),\n    COL_TRI(33, 39, 40),\n    COL_TRI(40, 36, 33),\n    COL_TRI(38, 32, 37),\n    COL_TRI(38, 37, 34),\n    COL_TRI(49, 43, 39),\n    COL_TRI(40, 41, 36),\n    COL_TRI(41, 42, 36),\n    COL_TRI(36, 42, 37),\n    COL_TRI(40, 39, 43),\n    COL_TRI(40, 43, 44),\n    COL_TRI(44, 41, 40),\n    COL_TRI(41, 48, 42),\n    COL_TRI(45, 48, 41),\n    COL_TRI(44, 45, 41),\n    COL_TRI(44, 85, 46),\n    COL_TRI(44, 43, 85),\n    COL_TRI(46, 45, 44),\n    COL_TRI(47, 49, 45),\n    COL_TRI(45, 49, 48),\n    COL_TRI(46, 47, 45),\n    COL_TRI(49, 39, 48),\n    COL_TRI(47, 50, 49),\n    COL_TRI(34, 37, 42),\n    COL_TRI(34, 42, 35),\n    COL_TRI(48, 35, 42),\n    COL_TRI(48, 39, 35),\n    COL_TRI(50, 43, 49),\n    COL_TRI(50, 85, 43),\n    COL_TRI(51, 86, 52),\n    COL_TRI(63, 86, 87),\n    COL_TRI(52, 54, 53),\n    COL_TRI(51, 53, 57),\n    COL_TRI(52, 53, 51),\n    COL_TRI(53, 64, 88),\n    COL_TRI(53, 88, 57),\n    COL_TRI(54, 64, 53),\n    COL_TRI(55, 87, 51),\n    COL_TRI(51, 87, 86),\n    COL_TRI(51, 57, 55),\n    COL_TRI(54, 63, 64),\n    COL_TRI(56, 55, 57),\n    COL_TRI(57, 89, 56),\n    COL_TRI(57, 88, 89),\n    COL_TRI(63, 87, 64),\n    COL_TRI(66, 91, 89),\n    COL_TRI(55, 90, 87),\n    COL_TRI(58, 90, 55),\n    COL_TRI(56, 58, 55),\n    COL_TRI(59, 58, 56),\n    COL_TRI(56, 91, 59),\n    COL_TRI(56, 89, 91),\n    COL_TRI(58, 65, 90),\n    COL_TRI(60, 65, 58),\n    COL_TRI(59, 60, 58),\n    COL_TRI(61, 60, 59),\n    COL_TRI(59, 92, 61),\n    COL_TRI(59, 91, 92),\n    COL_TRI(61, 62, 60),\n    COL_TRI(62, 66, 60),\n    COL_TRI(60, 66, 65),\n    COL_TRI(66, 89, 65),\n    COL_TRI(68, 70, 69),\n    COL_TRI(62, 67, 66),\n    COL_TRI(64, 87, 90),\n    COL_TRI(64, 90, 88),\n    COL_TRI(65, 88, 90),\n    COL_TRI(65, 89, 88),\n    COL_TRI(67, 91, 66),\n    COL_TRI(67, 92, 91),\n    COL_TRI(68, 71, 70),\n    COL_TRI(69, 70, 74),\n    COL_TRI(70, 81, 94),\n    COL_TRI(71, 81, 70),\n    COL_TRI(70, 94, 74),\n    COL_TRI(69, 74, 72),\n    COL_TRI(69, 95, 93),\n    COL_TRI(72, 95, 69),\n    COL_TRI(69, 93, 68),\n    COL_TRI(71, 80, 81),\n    COL_TRI(73, 72, 74),\n    COL_TRI(74, 96, 73),\n    COL_TRI(74, 94, 96),\n    COL_TRI(80, 93, 95),\n    COL_TRI(80, 95, 81),\n    COL_TRI(83, 98, 96),\n    COL_TRI(73, 75, 72),\n    COL_TRI(72, 97, 95),\n    COL_TRI(75, 97, 72),\n    COL_TRI(76, 75, 73),\n    COL_TRI(73, 98, 76),\n    COL_TRI(73, 96, 98),\n    COL_TRI(76, 77, 75),\n    COL_TRI(75, 82, 97),\n    COL_TRI(77, 82, 75),\n    COL_TRI(78, 77, 76),\n    COL_TRI(76, 99, 78),\n    COL_TRI(76, 98, 99),\n    COL_TRI(78, 79, 77),\n    COL_TRI(77, 83, 82),\n    COL_TRI(79, 83, 77),\n    COL_TRI(83, 96, 82),\n    COL_TRI(84, 99, 98),\n    COL_TRI(79, 84, 83),\n    COL_TRI(81, 95, 97),\n    COL_TRI(81, 97, 94),\n    COL_TRI(82, 94, 97),\n    COL_TRI(82, 96, 94),\n    COL_TRI(84, 98, 83),\n    COL_TRI_INIT(SURFACE_NO_CAM_COL_SLIPPERY, 32),\n    COL_TRI(105, 108, 106),\n    COL_TRI(100, 22, 25),\n    COL_TRI(22, 100, 101),\n    COL_TRI(25, 102, 100),\n    COL_TRI(100, 103, 101),\n    COL_TRI(104, 23, 22),\n    COL_TRI(22, 101, 104),\n    COL_TRI(25, 105, 106),\n    COL_TRI(24, 105, 25),\n    COL_TRI(25, 106, 102),\n    COL_TRI(106, 107, 102),\n    COL_TRI(111, 122, 120),\n    COL_TRI(109, 104, 101),\n    COL_TRI(104, 109, 105),\n    COL_TRI(109, 108, 105),\n    COL_TRI(110, 27, 119),\n    COL_TRI(110, 26, 27),\n    COL_TRI(111, 120, 121),\n    COL_TRI(118, 129, 130),\n    COL_TRI(112, 123, 124),\n    COL_TRI(112, 124, 114),\n    COL_TRI(113, 123, 112),\n    COL_TRI(114, 124, 115),\n    COL_TRI(115, 124, 123),\n    COL_TRI(114, 115, 125),\n    COL_TRI(113, 116, 123),\n    COL_TRI(115, 123, 116),\n    COL_TRI(116, 125, 115),\n    COL_TRI(116, 113, 125),\n    COL_TRI(117, 126, 127),\n    COL_TRI(117, 127, 128),\n    COL_TRI(118, 131, 129),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(1),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_null_start, /*pos*/ 5632, 6656, -5631, /*yaw*/ 192),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/pss/areas/1/geo.inc.c",
    "content": "// 0x0E000100\nconst GeoLayout pss_geo_000100[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND_COLOR(0x0001),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 12800, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(9, 0, 2000, 6000, 0, 0, 0, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, pss_seg7_dl_0700A7C0),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, pss_seg7_dl_0700AFA8),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, pss_seg7_dl_0700B3F0),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, pss_seg7_dl_0700D338),\n                    GEO_DISPLAY_LIST(LAYER_TRANSPARENT, pss_seg7_dl_0700DAD8),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, pss_seg7_dl_0700E2B0),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE_DECAL, pss_seg7_dl_0700E3E8),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(0, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/pss/areas/1/macro.inc.c",
    "content": "// 0x07010F00 - 0x0701109C\nconst MacroObject pss_seg7_macro_objs[] = {\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/ -3233,  4688, -5600),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/ -5636,  4331, -5054),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/ -5980,  3453,   945),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/ -2870,  2837,  2300),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  3930,   274,  2425),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  5174,    61,  3200),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  5707,  -128,  4565),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  5194,  -310,  5845),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  3640,  -543,  6450),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  2550,  -700,  6050),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  1821,  -921,  4616),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/   -20, -2542, -6304),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/ -1197, -2929, -4692),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/ -2565, -3268, -3525),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/ -4909, -3633, -4218),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/ -6290, -3937, -2545),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,      /*yaw*/  90, /*pos*/  3580,  6140, -5180, /*bhvParam*/ DIALOG_149),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal, /*yaw*/  90, /*pos*/  3000,  6180, -5640),\n    MACRO_OBJECT               (/*preset*/ macro_blue_coin_switch,     /*yaw*/   0, /*pos*/  5423,  6140, -6540),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,     /*yaw*/   0, /*pos*/   780,  5613, -5600),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,     /*yaw*/   0, /*pos*/  2360,  5979, -5600),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal, /*yaw*/   0, /*pos*/  1880, -1440,    60),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal, /*yaw*/   0, /*pos*/  1860, -1760, -1720),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal, /*yaw*/   0, /*pos*/  1860, -1200,  1680),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,   /*yaw*/   0, /*pos*/  1860, -1220,  1700),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,   /*yaw*/   0, /*pos*/  1880, -1460,    80),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,   /*yaw*/   0, /*pos*/  1860, -1820, -1680),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,   /*yaw*/   0, /*pos*/ -6380, -4550,  6320),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_hidden_1up,           /*yaw*/   0, /*pos*/ -6380, -4500,  5980, /*bhvParam*/ 4),\n    MACRO_OBJECT               (/*preset*/ macro_1up_sliding,          /*yaw*/ 180, /*pos*/  1847,  -961,  3863),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal, /*yaw*/  90, /*pos*/   260,  2580,  2280),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal, /*yaw*/  90, /*pos*/  -880,  2880,  2280),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,     /*yaw*/   0, /*pos*/  -809,  5245, -5600),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,     /*yaw*/   0, /*pos*/ -2409,  4877, -5600),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/ -6400, -4146,  -590),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/ -6400, -4335,  1409),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/ -6400, -4530,  3481),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,     /*yaw*/   0, /*pos*/ -4445,  4490, -5536),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,     /*yaw*/   0, /*pos*/ -6263,  4150, -4009),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  1854, -2132, -4290),\n    MACRO_OBJECT               (/*preset*/ macro_box_star_act_1,       /*yaw*/   0, /*pos*/ -6385, -4200,  5770),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/pss/geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"game/level_geo.h\"\n#include \"game/geo_misc.h\"\n#include \"game/camera.h\"\n#include \"game/moving_texture.h\"\n#include \"game/screen_transition.h\"\n#include \"game/paintings.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"levels/pss/header.h\"\n\n#include \"levels/pss/areas/1/geo.inc.c\"\n"
  },
  {
    "path": "levels/pss/header.h",
    "content": "#ifndef PSS_HEADER_H\n#define PSS_HEADER_H\n\n#include \"types.h\"\n\n// geo\nextern const GeoLayout pss_geo_000100[];\n\n// leveldata\nextern const Gfx pss_seg7_dl_0700A7C0[];\nextern const Gfx pss_seg7_dl_0700AFA8[];\nextern const Gfx pss_seg7_dl_0700B3F0[];\nextern const Gfx pss_seg7_dl_0700D338[];\nextern const Gfx pss_seg7_dl_0700DAD8[];\nextern const Gfx pss_seg7_dl_0700E2B0[];\nextern const Gfx pss_seg7_dl_0700E3E8[];\nextern const Collision pss_seg7_collision[];\nextern const MacroObject pss_seg7_macro_objs[];\n\n// script\nextern const LevelScript level_pss_entry[];\n\n#endif\n"
  },
  {
    "path": "levels/pss/level.yaml",
    "content": "# The Princess's Secret Slide\nshort-name: pss\nfull-name: The Princess's Secret Slide\ntexture-file: [\"/texture.inc.c\"]\narea-count: 1\nobjects: []\nshared-path: []\n# loaded files\nskybox-bin: null\ntexture-bin: mountain\neffects: false\nactor-bins: [group8]\ncommon-bin: [common0]\n"
  },
  {
    "path": "levels/pss/leveldata.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"surface_terrains.h\"\n#include \"moving_texture_macros.h\"\n#include \"level_misc_macros.h\"\n#include \"macro_presets.h\"\n#include \"special_presets.h\"\n#include \"textures.h\"\n#include \"dialog_ids.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/pss/texture.inc.c\"\n#include \"levels/pss/areas/1/1/model.inc.c\"\n#include \"levels/pss/areas/1/2/model.inc.c\"\n#include \"levels/pss/areas/1/3/model.inc.c\"\n#include \"levels/pss/areas/1/4/model.inc.c\"\n#include \"levels/pss/areas/1/5/model.inc.c\"\n#include \"levels/pss/areas/1/6/model.inc.c\"\n#include \"levels/pss/areas/1/7/model.inc.c\"\n#include \"levels/pss/areas/1/collision.inc.c\"\n#include \"levels/pss/areas/1/macro.inc.c\"\n"
  },
  {
    "path": "levels/pss/script.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"behavior_data.h\"\n#include \"model_ids.h\"\n#include \"seq_ids.h\"\n#include \"segment_symbols.h\"\n#include \"level_commands.h\"\n\n#include \"game/level_update.h\"\n\n#include \"levels/scripts.h\"\n\n#include \"actors/common1.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/pss/header.h\"\n\nconst LevelScript level_pss_entry[] = {\n    INIT_LEVEL(),\n    LOAD_MIO0        (/*seg*/ 0x07, _pss_segment_7SegmentRomStart, _pss_segment_7SegmentRomEnd),\n    LOAD_MIO0_TEXTURE(/*seg*/ 0x09, _mountain_mio0SegmentRomStart, _mountain_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x05, _group8_mio0SegmentRomStart, _group8_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0C, _group8_geoSegmentRomStart,  _group8_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x08, _common0_mio0SegmentRomStart, _common0_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0F, _common0_geoSegmentRomStart,  _common0_geoSegmentRomEnd),\n    ALLOC_LEVEL_POOL(),\n    MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),\n    JUMP_LINK(script_func_global_1),\n    JUMP_LINK(script_func_global_9),\n\n    AREA(/*index*/ 1, pss_geo_000100),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ 5632, 6751, -5631, /*angle*/ 0, 270, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvAirborneWarp),\n        WARP_NODE(/*id*/ WARP_NODE_0A,         /*destLevel*/ LEVEL_PSS,    /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_WARP_FLOOR, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_20, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_SUCCESS,    /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_26, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH,      /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_23, /*flags*/ WARP_NO_CHECKPOINT),\n        TERRAIN(/*terrainData*/ pss_seg7_collision),\n        MACRO_OBJECTS(/*objList*/ pss_seg7_macro_objs),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_SLIDE),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0001, /*seq*/ SEQ_LEVEL_SLIDE),\n    END_AREA(),\n\n    FREE_LEVEL_POOL(),\n    MARIO_POS(/*area*/ 1, /*yaw*/ 270, /*pos*/ 5632, 6451, -5631),\n    CALL(/*arg*/ 0, /*func*/ lvl_init_or_update),\n    CALL_LOOP(/*arg*/ 1, /*func*/ lvl_init_or_update),\n    CLEAR_LEVEL(),\n    SLEEP_BEFORE_EXIT(/*frames*/ 1),\n    EXIT(),\n};\n"
  },
  {
    "path": "levels/pss/texture.inc.c",
    "content": "// 0x07000000 - 0x07000002\nALIGNED8 static const Texture pss_seg7_texture_07000000[] = {\n#include \"levels/pss/0.rgba16.inc.c\"\n};\n\n// 0x07000800 - 0x07000802\nALIGNED8 static const Texture pss_seg7_texture_07000800[] = {\n#include \"levels/pss/1.ia16.inc.c\"\n};\n\n// 0x07001000 - 0x07001002\nALIGNED8 static const Texture pss_seg7_texture_07001000[] = {\n#include \"levels/pss/2.rgba16.inc.c\"\n};\n"
  },
  {
    "path": "levels/rr/areas/1/1/model.inc.c",
    "content": "// 0x07002000 - 0x07002100\nstatic const Vtx dl_cruiser_metal_holes_vertex_group[] = {\n    {{{ -4786,   -975,   4124}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4889,   -975,   4124}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4786,  -1057,   4185}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6721,   -715,   -565}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6721,   -797,   -503}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6823,   -797,   -503}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6823,   -715,   -565}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3250,  -1792,   5658}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3250,  -1874,   5719}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3353,  -1874,   5719}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3353,  -1792,   5658}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5757,  -1792,   5760}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5860,  -1792,   5760}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5757,  -1874,   5822}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5860,  -1874,   5822}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4889,  -1057,   4185}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07002100 - 0x07002168\nstatic const Gfx dl_cruiser_metal_holes_model[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_metal_hole),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(dl_cruiser_metal_holes_vertex_group, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0,  1, 15,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07002168 - 0x070021D8\nconst Gfx dl_cruiser_metal_holes[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(dl_cruiser_metal_holes_model),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/10/geo.inc.c",
    "content": "// 0x0E000720\nconst GeoLayout rr_geo_000720[] = {\n    GEO_CULLING_RADIUS(3000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, rr_seg7_dl_0700CA38),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/10/model.inc.c",
    "content": "// 0x0700BBB8 - 0x0700BCB8\nstatic const Vtx rr_seg7_vertex_0700BBB8[] = {\n    {{{  -281,    385,   -229}, 0, { -1566,     96}, {0x72, 0x5d, 0x29, 0xff}}},\n    {{{  -281,    359,   -229}, 0, { -1312,     96}, {0x72, 0x5d, 0x29, 0xff}}},\n    {{{  -281,    359,  -1150}, 0, { -1312,   -926}, {0x72, 0x5d, 0x29, 0xff}}},\n    {{{  -281,    385,  -1150}, 0, { -1566,   -926}, {0x72, 0x5d, 0x29, 0xff}}},\n    {{{  -434,    385,  -1150}, 0, { -1566,   -926}, {0x72, 0x5d, 0x29, 0xff}}},\n    {{{  -434,    359,  -1150}, 0, { -1312,   -926}, {0x72, 0x5d, 0x29, 0xff}}},\n    {{{  -434,    359,   -229}, 0, { -1312,     96}, {0x72, 0x5d, 0x29, 0xff}}},\n    {{{  -434,    385,   -229}, 0, { -1566,     96}, {0x72, 0x5d, 0x29, 0xff}}},\n    {{{  -563,   -214,    492}, 0, {  1734,   1128}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{  -716,   -214,    902}, 0, {  3406,   1824}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{  -716,   -214,    492}, 0, {  3406,   1824}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{  -563,   -214,    902}, 0, {  1734,   1128}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{  -563,   -214,    492}, 0, {  1734,   1128}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  -716,   -111,    492}, 0, {  4056,   2010}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  -640,     -9,    492}, 0, {  3870,   1848}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  -563,   -111,    492}, 0, {  2384,   1314}, {0x58, 0x87, 0xb9, 0xff}}},\n};\n\n// 0x0700BCB8 - 0x0700BDB8\nstatic const Vtx rr_seg7_vertex_0700BCB8[] = {\n    {{{  -563,   -214,    492}, 0, {  1734,   1128}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  -716,   -214,    492}, 0, {  3406,   1824}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  -716,   -111,    492}, 0, {  4056,   2010}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  -716,   -111,    902}, 0, {  4056,   2010}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  -716,   -214,    902}, 0, {  3406,   1824}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  -563,   -214,    902}, 0, {  1734,   1128}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  -563,   -111,    902}, 0, {  2384,   1314}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  -640,     -9,    902}, 0, {  3870,   1848}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{ -1458,    359,    897}, 0, {     0,    990}, {0x50, 0x45, 0x00, 0xff}}},\n    {{{ -1458,    154,    282}, 0, {   308,    478}, {0x50, 0x45, 0x00, 0xff}}},\n    {{{ -1458,    359,    282}, 0, {     0,    478}, {0x50, 0x45, 0x00, 0xff}}},\n    {{{ -1458,    154,    897}, 0, {   308,    990}, {0x50, 0x45, 0x00, 0xff}}},\n    {{{ -1663,    154,    897}, 0, {   308,    990}, {0x50, 0x45, 0x00, 0xff}}},\n    {{{ -1663,    359,    897}, 0, {     0,    990}, {0x50, 0x45, 0x00, 0xff}}},\n    {{{ -1663,    359,   -331}, 0, {     0,      0}, {0x50, 0x45, 0x00, 0xff}}},\n    {{{ -1663,    154,   -331}, 0, {   308,      0}, {0x50, 0x45, 0x00, 0xff}}},\n};\n\n// 0x0700BDB8 - 0x0700BEB8\nstatic const Vtx rr_seg7_vertex_0700BDB8[] = {\n    {{{ -1663,    359,   -331}, 0, {     0,    308}, {0x87, 0x76, 0x44, 0xff}}},\n    {{{ -1458,    359,   -331}, 0, {   990,    308}, {0x87, 0x76, 0x44, 0xff}}},\n    {{{ -1458,    154,   -331}, 0, {   990,    650}, {0x87, 0x76, 0x44, 0xff}}},\n    {{{  -434,    385,   -229}, 0, {   224,    990}, {0x87, 0x76, 0x44, 0xff}}},\n    {{{  -434,    359,   -229}, 0, {   224,    990}, {0x87, 0x76, 0x44, 0xff}}},\n    {{{  -281,    359,   -229}, 0, {   990,    990}, {0x87, 0x76, 0x44, 0xff}}},\n    {{{  -281,    385,   -229}, 0, {   990,    990}, {0x87, 0x76, 0x44, 0xff}}},\n    {{{  -281,    385,  -1150}, 0, {   990,      0}, {0x87, 0x76, 0x44, 0xff}}},\n    {{{  -281,    359,  -1150}, 0, {   990,      0}, {0x87, 0x76, 0x44, 0xff}}},\n    {{{  -434,    359,  -1150}, 0, {   224,      0}, {0x87, 0x76, 0x44, 0xff}}},\n    {{{  -434,    385,  -1150}, 0, {   224,      0}, {0x87, 0x76, 0x44, 0xff}}},\n    {{{ -1663,    154,    897}, 0, {     0,    786}, {0x87, 0x76, 0x44, 0xff}}},\n    {{{ -1458,    154,    897}, 0, {   786,    786}, {0x87, 0x76, 0x44, 0xff}}},\n    {{{ -1458,    359,    897}, 0, {   786,      0}, {0x87, 0x76, 0x44, 0xff}}},\n    {{{ -1663,    359,    897}, 0, {     0,      0}, {0x87, 0x76, 0x44, 0xff}}},\n    {{{ -1663,    154,   -331}, 0, {     0,    650}, {0x87, 0x76, 0x44, 0xff}}},\n};\n\n// 0x0700BEB8 - 0x0700BF98\nstatic const Vtx rr_seg7_vertex_0700BEB8[] = {\n    {{{ -1458,    154,    897}, 0, {   786,    922}, {0x40, 0x3f, 0x1a, 0xff}}},\n    {{{ -1663,    154,   -331}, 0, {     0,   -714}, {0x40, 0x3f, 0x1a, 0xff}}},\n    {{{ -1458,    154,   -331}, 0, {   786,   -714}, {0x40, 0x3f, 0x1a, 0xff}}},\n    {{{ -1663,    154,    897}, 0, {     0,    922}, {0x40, 0x3f, 0x1a, 0xff}}},\n    {{{  -434,    359,  -1150}, 0, {   224,      0}, {0x49, 0x3d, 0x1f, 0xff}}},\n    {{{  -281,    359,  -1150}, 0, {   990,      0}, {0x49, 0x3d, 0x1f, 0xff}}},\n    {{{  -281,    359,   -229}, 0, {   990,    990}, {0x49, 0x3d, 0x1f, 0xff}}},\n    {{{  -434,    359,   -229}, 0, {   224,    990}, {0x49, 0x3d, 0x1f, 0xff}}},\n    {{{  -640,     -9,    492}, 0, {  3870,   1848}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{  -716,   -111,    902}, 0, {  4056,   2010}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{  -640,     -9,    902}, 0, {  3870,   1848}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{  -563,   -111,    902}, 0, {  2384,   1314}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{  -563,   -111,    492}, 0, {  2384,   1314}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{  -716,   -111,    492}, 0, {  4056,   2010}, {0x97, 0xb2, 0xcd, 0xff}}},\n};\n\n// 0x0700BF98 - 0x0700C098\nstatic const Vtx rr_seg7_vertex_0700BF98[] = {\n    {{{  -716,   -214,    492}, 0, {  3406,   1824}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  -716,   -111,    902}, 0, {  4056,   2010}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  -716,   -111,    492}, 0, {  4056,   2010}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  -716,   -214,    902}, 0, {  3406,   1824}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  -563,   -111,    492}, 0, {  2384,   1314}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  -563,   -111,    902}, 0, {  2384,   1314}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  -563,   -214,    902}, 0, {  1734,   1128}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  -563,   -214,    492}, 0, {  1734,   1128}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  -434,    385,   -229}, 0, {   224,    990}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{  -281,    385,   -229}, 0, {   990,    990}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{  -281,    385,  -1150}, 0, {   990,      0}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{  -434,    385,  -1150}, 0, {   224,      0}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{ -1663,    359,    897}, 0, {     0,    922}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{ -1458,    359,   -331}, 0, {   786,   -714}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{ -1663,    359,   -331}, 0, {     0,   -714}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{ -1458,    359,    897}, 0, {   786,    922}, {0xac, 0x9d, 0x52, 0xff}}},\n};\n\n// 0x0700C098 - 0x0700C188\nstatic const Vtx rr_seg7_vertex_0700C098[] = {\n    {{{   847,   -409,    498}, 0, { -2224,   1638}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{   847,   -409,    907}, 0, { -2224,   1638}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{   693,   -409,    907}, 0, { -1284,   1360}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{   693,   -409,    498}, 0, { -1284,   1360}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{  1359,   -409,    498}, 0, { -5360,   2568}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{  1205,   -409,    907}, 0, { -4420,   2288}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{  1205,   -409,    498}, 0, { -4420,   2288}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{  1359,   -409,    907}, 0, { -5360,   2568}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{   335,   -409,    498}, 0, {  1536,    526}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{   335,   -409,    907}, 0, {  1536,    526}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{   181,   -409,    907}, 0, {  2476,    246}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{   181,   -409,    498}, 0, {  2476,    246}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{  1205,   -204,    498}, 0, { -4048,   2102}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  1359,   -409,    498}, 0, { -5360,   2568}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  1205,   -409,    498}, 0, { -4420,   2288}, {0x58, 0x87, 0xb9, 0xff}}},\n};\n\n// 0x0700C188 - 0x0700C278\nstatic const Vtx rr_seg7_vertex_0700C188[] = {\n    {{{   693,   -409,    907}, 0, { -1284,   1360}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{   847,   -255,    907}, 0, { -1946,   1498}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{   693,   -255,    907}, 0, { -1006,   1220}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{   847,   -409,    907}, 0, { -2224,   1638}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{   693,   -255,    498}, 0, { -1006,   1220}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{   847,   -409,    498}, 0, { -2224,   1638}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{   693,   -409,    498}, 0, { -1284,   1360}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{   847,   -255,    498}, 0, { -1946,   1498}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  1205,   -409,    907}, 0, { -4420,   2288}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  1359,   -204,    907}, 0, { -4990,   2382}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  1205,   -204,    907}, 0, { -4048,   2102}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  1359,   -409,    907}, 0, { -5360,   2568}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{   181,   -409,    907}, 0, {  2476,    246}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{   335,   -409,    907}, 0, {  1536,    526}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{   335,   -153,    907}, 0, {  2000,    294}, {0x58, 0x87, 0xb9, 0xff}}},\n};\n\n// 0x0700C278 - 0x0700C358\nstatic const Vtx rr_seg7_vertex_0700C278[] = {\n    {{{  1205,   -204,    498}, 0, { -4048,   2102}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  1359,   -204,    498}, 0, { -4990,   2382}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  1359,   -409,    498}, 0, { -5360,   2568}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{   181,   -153,    498}, 0, {  2942,     14}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{   335,   -153,    498}, 0, {  2000,    294}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{   335,   -409,    498}, 0, {  1536,    526}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{   181,   -409,    498}, 0, {  2476,    246}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{   181,   -409,    907}, 0, {  2476,    246}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{   335,   -153,    907}, 0, {  2000,    294}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{   181,   -153,    907}, 0, {  2942,     14}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{   693,   -255,    498}, 0, { -1006,   1220}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{   693,   -255,    907}, 0, { -1006,   1220}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{   847,   -255,    907}, 0, { -1946,   1498}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{   847,   -255,    498}, 0, { -1946,   1498}, {0x97, 0xb2, 0xcd, 0xff}}},\n};\n\n// 0x0700C358 - 0x0700C458\nstatic const Vtx rr_seg7_vertex_0700C358[] = {\n    {{{  1205,   -204,    498}, 0, { -4048,   2102}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{  1359,   -204,    907}, 0, { -4990,   2382}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{  1359,   -204,    498}, 0, { -4990,   2382}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{  1205,   -204,    907}, 0, { -4048,   2102}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{   181,   -153,    498}, 0, {  2942,     14}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{   335,   -153,    907}, 0, {  2000,    294}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{   335,   -153,    498}, 0, {  2000,    294}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{   181,   -153,    907}, 0, {  2942,     14}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{   847,   -255,    498}, 0, { -1946,   1498}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   847,   -409,    907}, 0, { -2224,   1638}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   847,   -409,    498}, 0, { -2224,   1638}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   847,   -255,    907}, 0, { -1946,   1498}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   693,   -409,    498}, 0, { -1284,   1360}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   693,   -255,    907}, 0, { -1006,   1220}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   693,   -255,    498}, 0, { -1006,   1220}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   693,   -409,    907}, 0, { -1284,   1360}, {0x52, 0x7f, 0xac, 0xff}}},\n};\n\n// 0x0700C458 - 0x0700C558\nstatic const Vtx rr_seg7_vertex_0700C458[] = {\n    {{{  1205,   -409,    498}, 0, { -4420,   2288}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  1205,   -204,    907}, 0, { -4048,   2102}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  1205,   -204,    498}, 0, { -4048,   2102}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  1359,   -204,    498}, 0, { -4990,   2382}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  1359,   -409,    498}, 0, { -5360,   2568}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  1359,   -204,    907}, 0, { -4990,   2382}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  1359,   -409,    907}, 0, { -5360,   2568}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  1205,   -409,    907}, 0, { -4420,   2288}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   181,   -409,    498}, 0, {  2476,    246}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   181,   -153,    907}, 0, {  2942,     14}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   181,   -153,    498}, 0, {  2942,     14}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   181,   -409,    907}, 0, {  2476,    246}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   335,   -153,    498}, 0, {  2000,    294}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   335,   -409,    907}, 0, {  1536,    526}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   335,   -409,    498}, 0, {  1536,    526}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   335,   -153,    907}, 0, {  2000,    294}, {0x52, 0x7f, 0xac, 0xff}}},\n};\n\n// 0x0700C558 - 0x0700C658\nstatic const Vtx rr_seg7_vertex_0700C558[] = {\n    {{{   -25,    359,   -331}, 0, {  2524,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1458,    359,    282}, 0, { -1564,   1498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -25,    359,    282}, 0, {  2524,   1498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1458,    359,   -331}, 0, { -1562,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -25,    154,    282}, 0, { -2586,   1498}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1458,    154,   -331}, 0, {  1502,   -542}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   -25,    154,   -331}, 0, { -2584,   -544}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1458,    154,    282}, 0, {  1502,   1498}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   -25,    359,    282}, 0, {   480,   2522}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   -25,    154,    282}, 0, {   990,   2522}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   -25,    154,   -331}, 0, {   990,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   -25,    359,   -331}, 0, {   480,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   -25,    359,   -331}, 0, { -3374,    478}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{   -25,    154,   -331}, 0, { -3374,    990}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -1458,    154,   -331}, 0, {   716,    990}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -1458,    359,   -331}, 0, {   716,    478}, {0x91, 0x91, 0x91, 0xff}}},\n};\n\n// 0x0700C658 - 0x0700C698\nstatic const Vtx rr_seg7_vertex_0700C658[] = {\n    {{{ -1458,    359,    282}, 0, { -2352,    478}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -1458,    154,    282}, 0, { -2352,    990}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{   -25,    154,    282}, 0, {  1738,    990}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{   -25,    359,    282}, 0, {  1738,    478}, {0x91, 0x91, 0x91, 0xff}}},\n};\n\n// 0x0700C698 - 0x0700C820\nstatic const Gfx rr_seg7_dl_0700C698[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_0700BBB8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700BCB8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  3,  5,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700BDB8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700BEB8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11, 12, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0,  8, 13,  9, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700BF98, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700C820 - 0x0700C9B8\nstatic const Gfx rr_seg7_dl_0700C820[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_0700C098, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700C188, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700C278, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700C358, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700C458, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 2,  4,  0, 0x0,  3,  5,  6, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  4,  7,  0, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  0,  7,  1, 0x0),\n    gsSP2Triangles( 7,  6,  5, 0x0,  7,  5,  1, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700C9B8 - 0x0700CA38\nstatic const Gfx rr_seg7_dl_0700C9B8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_0700C558, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700C658, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700CA38 - 0x0700CAB8\nconst Gfx rr_seg7_dl_0700CA38[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_0700C698),\n    gsSPDisplayList(rr_seg7_dl_0700C820),\n    gsSPDisplayList(rr_seg7_dl_0700C9B8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/11/1.inc.c",
    "content": "// 0x0700CAB8 - 0x0700CBA8\nstatic const Vtx rr_seg7_vertex_0700CAB8[] = {\n    {{{  1045,    437,   -511}, 0, {  9848,   2418}, {0xef, 0xcd, 0x8e, 0xff}}},\n    {{{  -695,    386,    512}, 0, {  4056,   1942}, {0xef, 0xcd, 0x8e, 0xff}}},\n    {{{  1045,    437,    512}, 0, {  9848,   3100}, {0xef, 0xcd, 0x8e, 0xff}}},\n    {{{  -695,    386,   -511}, 0, {  4056,   1260}, {0xef, 0xcd, 0x8e, 0xff}}},\n    {{{ -1923,    489,   -306}, 0, {     0,    582}, {0xef, 0xcd, 0x8e, 0xff}}},\n    {{{ -1923,    489,    307}, 0, {     0,    990}, {0xef, 0xcd, 0x8e, 0xff}}},\n    {{{  1540,    468,    411}, 0, { 11492,   3362}, {0xef, 0xcd, 0x8e, 0xff}}},\n    {{{  1540,    468,   -407}, 0, { 11492,   2818}, {0xef, 0xcd, 0x8e, 0xff}}},\n    {{{ -2538,    745,    102}, 0, {  -370,   1670}, {0x63, 0x6e, 0x31, 0xff}}},\n    {{{ -2538,    540,      0}, 0, {   308,   1840}, {0x63, 0x6e, 0x31, 0xff}}},\n    {{{ -1923,    130,    410}, 0, {  1672,   1414}, {0x63, 0x6e, 0x31, 0xff}}},\n    {{{ -1923,    642,    512}, 0, {     0,    990}, {0x63, 0x6e, 0x31, 0xff}}},\n    {{{ -1923,    130,   -409}, 0, {  1672,   1414}, {0x63, 0x6e, 0x31, 0xff}}},\n    {{{ -2538,    745,   -101}, 0, {  -370,   1670}, {0x63, 0x6e, 0x31, 0xff}}},\n    {{{  -695,     28,    717}, 0, {  2012,      0}, {0x63, 0x6e, 0x31, 0xff}}},\n};\n\n// 0x0700CBA8 - 0x0700CCA8\nstatic const Vtx rr_seg7_vertex_0700CBA8[] = {\n    {{{  -695,     28,   -716}, 0, {  2012,      0}, {0x63, 0x6e, 0x31, 0xff}}},\n    {{{ -1923,    130,   -409}, 0, {  1672,   1414}, {0x63, 0x6e, 0x31, 0xff}}},\n    {{{ -1923,    642,   -511}, 0, {     0,    990}, {0x63, 0x6e, 0x31, 0xff}}},\n    {{{ -2538,    745,   -101}, 0, {  -370,   1670}, {0x63, 0x6e, 0x31, 0xff}}},\n    {{{  2376,    847,   -306}, 0, {  -712,  -4546}, {0x63, 0x6e, 0x31, 0xff}}},\n    {{{  1540,    171,   -612}, 0, {  1536,  -2940}, {0x63, 0x6e, 0x31, 0xff}}},\n    {{{  1540,    836,   -612}, 0, {  -676,  -3492}, {0x63, 0x6e, 0x31, 0xff}}},\n    {{{  2376,    437,   -306}, 0, {   650,  -4206}, {0x63, 0x6e, 0x31, 0xff}}},\n    {{{   459,     81,   -716}, 0, {  1836,  -1516}, {0x63, 0x6e, 0x31, 0xff}}},\n    {{{  1045,    591,   -716}, 0, {   138,  -2672}, {0x63, 0x6e, 0x31, 0xff}}},\n    {{{  1540,    120,    616}, 0, {  1706,  -2896}, {0x63, 0x6e, 0x31, 0xff}}},\n    {{{  1540,    836,    616}, 0, {  -676,  -3492}, {0x63, 0x6e, 0x31, 0xff}}},\n    {{{  1045,    591,    717}, 0, {   138,  -2672}, {0x63, 0x6e, 0x31, 0xff}}},\n    {{{  2376,    437,    307}, 0, {   650,  -4206}, {0x63, 0x6e, 0x31, 0xff}}},\n    {{{  2376,    847,    307}, 0, {  -712,  -4546}, {0x63, 0x6e, 0x31, 0xff}}},\n    {{{   562,     82,    719}, 0, {  1830,  -1646}, {0x63, 0x6e, 0x31, 0xff}}},\n};\n\n// 0x0700CCA8 - 0x0700CD88\nstatic const Vtx rr_seg7_vertex_0700CCA8[] = {\n    {{{   840,   -790,      0}, 0, {  4738,  -1266}, {0x53, 0x5d, 0x2a, 0xff}}},\n    {{{  1540,    120,    616}, 0, {  1706,  -2896}, {0x53, 0x5d, 0x2a, 0xff}}},\n    {{{   562,     82,    719}, 0, {  1830,  -1646}, {0x53, 0x5d, 0x2a, 0xff}}},\n    {{{  2376,    847,    307}, 0, {  -712,  -4546}, {0x53, 0x5d, 0x2a, 0xff}}},\n    {{{  2376,    437,   -306}, 0, {   650,  -4206}, {0x53, 0x5d, 0x2a, 0xff}}},\n    {{{  2376,    847,   -306}, 0, {  -712,  -4546}, {0x53, 0x5d, 0x2a, 0xff}}},\n    {{{  2376,    437,    307}, 0, {   650,  -4206}, {0x53, 0x5d, 0x2a, 0xff}}},\n    {{{ -1719,   -381,      0}, 0, {  3374,   1584}, {0x53, 0x5d, 0x2a, 0xff}}},\n    {{{  -695,   -790,      0}, 0, {  4738,    650}, {0x53, 0x5d, 0x2a, 0xff}}},\n    {{{  -695,     28,    717}, 0, {  2012,      0}, {0x53, 0x5d, 0x2a, 0xff}}},\n    {{{ -1923,    130,    410}, 0, {  1672,   1414}, {0x53, 0x5d, 0x2a, 0xff}}},\n    {{{   840,   -790,      0}, 0, {  4738,  -1266}, {0x49, 0x53, 0x22, 0xff}}},\n    {{{  1660,   -483,      0}, 0, {  3716,  -2544}, {0x49, 0x53, 0x22, 0xff}}},\n    {{{  1540,    120,    616}, 0, {  1706,  -2896}, {0x49, 0x53, 0x22, 0xff}}},\n};\n\n// 0x0700CD88 - 0x0700CE88\nstatic const Vtx rr_seg7_vertex_0700CD88[] = {\n    {{{ -2538,    540,      0}, 0, {   308,   1840}, {0x49, 0x53, 0x22, 0xff}}},\n    {{{ -1719,   -381,      0}, 0, {  3374,   1584}, {0x49, 0x53, 0x22, 0xff}}},\n    {{{ -1923,    130,    410}, 0, {  1672,   1414}, {0x49, 0x53, 0x22, 0xff}}},\n    {{{  1660,   -483,      0}, 0, {  3716,  -2544}, {0x49, 0x53, 0x22, 0xff}}},\n    {{{  2376,    437,    307}, 0, {   650,  -4206}, {0x49, 0x53, 0x22, 0xff}}},\n    {{{  1540,    120,    616}, 0, {  1706,  -2896}, {0x49, 0x53, 0x22, 0xff}}},\n    {{{ -1719,   -381,      0}, 0, {  3374,   1584}, {0x42, 0x50, 0x22, 0xff}}},\n    {{{ -2538,    540,      0}, 0, {   308,   1840}, {0x42, 0x50, 0x22, 0xff}}},\n    {{{ -1923,    130,   -409}, 0, {  1672,   1414}, {0x42, 0x50, 0x22, 0xff}}},\n    {{{  -695,     28,   -716}, 0, {  2012,      0}, {0x42, 0x50, 0x22, 0xff}}},\n    {{{  -695,   -790,      0}, 0, {  4738,    650}, {0x42, 0x50, 0x22, 0xff}}},\n    {{{   840,   -790,      0}, 0, {  4738,  -1266}, {0x42, 0x50, 0x22, 0xff}}},\n    {{{   459,     81,   -716}, 0, {  1836,  -1516}, {0x42, 0x50, 0x22, 0xff}}},\n    {{{  1540,    171,   -612}, 0, {  1536,  -2940}, {0x42, 0x50, 0x22, 0xff}}},\n    {{{  1660,   -483,      0}, 0, {  3716,  -2544}, {0x42, 0x50, 0x22, 0xff}}},\n    {{{  2376,    437,   -306}, 0, {   650,  -4206}, {0x42, 0x50, 0x22, 0xff}}},\n};\n\n// 0x0700CE88 - 0x0700CF88\nstatic const Vtx rr_seg7_vertex_0700CE88[] = {\n    {{{ -1923,    642,    512}, 0, {     0,    990}, {0x78, 0x7c, 0x32, 0xff}}},\n    {{{  -695,     28,    717}, 0, {  2012,      0}, {0x78, 0x7c, 0x32, 0xff}}},\n    {{{  -695,    540,    717}, 0, {   308,   -458}, {0x78, 0x7c, 0x32, 0xff}}},\n    {{{   562,     82,    719}, 0, {  1830,  -1646}, {0x78, 0x7c, 0x32, 0xff}}},\n    {{{  -695,    540,   -716}, 0, {   308,   -458}, {0x78, 0x7c, 0x32, 0xff}}},\n    {{{  -695,     28,   -716}, 0, {  2012,      0}, {0x78, 0x7c, 0x32, 0xff}}},\n    {{{ -1923,    642,   -511}, 0, {     0,    990}, {0x78, 0x7c, 0x32, 0xff}}},\n    {{{   459,     81,   -716}, 0, {  1836,  -1516}, {0x78, 0x7c, 0x32, 0xff}}},\n    {{{  1045,    591,    717}, 0, {   138,  -2672}, {0x78, 0x7c, 0x32, 0xff}}},\n    {{{  1045,    591,   -716}, 0, {   138,  -2672}, {0x78, 0x7c, 0x32, 0xff}}},\n    {{{  -695,    540,   -511}, 0, {   308,   -168}, {0x6b, 0x66, 0x14, 0xff}}},\n    {{{  -695,    386,   -511}, 0, {   820,    -66}, {0x6b, 0x66, 0x14, 0xff}}},\n    {{{  1045,    437,   -511}, 0, {   650,  -1838}, {0x6b, 0x66, 0x14, 0xff}}},\n    {{{  -695,    386,    512}, 0, {   820,    -66}, {0x6b, 0x66, 0x14, 0xff}}},\n    {{{ -1923,    489,    307}, 0, {   478,   1090}, {0x6b, 0x66, 0x14, 0xff}}},\n    {{{ -1923,    642,    307}, 0, {     0,    990}, {0x6b, 0x66, 0x14, 0xff}}},\n};\n\n// 0x0700CF88 - 0x0700D078\nstatic const Vtx rr_seg7_vertex_0700CF88[] = {\n    {{{  -695,    540,    512}, 0, {   308,   -168}, {0x6b, 0x66, 0x14, 0xff}}},\n    {{{  -695,    386,    512}, 0, {   820,    -66}, {0x6b, 0x66, 0x14, 0xff}}},\n    {{{ -1923,    642,    307}, 0, {     0,    990}, {0x6b, 0x66, 0x14, 0xff}}},\n    {{{  1045,    591,    512}, 0, {   138,  -1940}, {0x6b, 0x66, 0x14, 0xff}}},\n    {{{ -1923,    642,   -306}, 0, {     0,    990}, {0x6b, 0x66, 0x14, 0xff}}},\n    {{{  -695,    386,   -511}, 0, {   820,    -66}, {0x6b, 0x66, 0x14, 0xff}}},\n    {{{  -695,    540,   -511}, 0, {   308,   -168}, {0x6b, 0x66, 0x14, 0xff}}},\n    {{{ -1923,    489,   -306}, 0, {   478,   1090}, {0x6b, 0x66, 0x14, 0xff}}},\n    {{{  1045,    437,   -511}, 0, {   650,  -1838}, {0x6b, 0x66, 0x14, 0xff}}},\n    {{{  1045,    591,   -511}, 0, {   138,  -1940}, {0x6b, 0x66, 0x14, 0xff}}},\n    {{{  1540,    468,   -407}, 0, {   548,  -2352}, {0x6b, 0x66, 0x14, 0xff}}},\n    {{{  1540,    836,   -407}, 0, {  -676,  -2596}, {0x6b, 0x66, 0x14, 0xff}}},\n    {{{  1045,    437,    512}, 0, {   650,  -1838}, {0x6b, 0x66, 0x14, 0xff}}},\n    {{{  1540,    836,    411}, 0, {  -676,  -2596}, {0x6b, 0x66, 0x14, 0xff}}},\n    {{{  1540,    468,    411}, 0, {   548,  -2352}, {0x6b, 0x66, 0x14, 0xff}}},\n};\n\n// 0x0700D078 - 0x0700D178\nstatic const Vtx rr_seg7_vertex_0700D078[] = {\n    {{{ -1923,    642,    307}, 0, {     0,    990}, {0x5d, 0x5e, 0x1b, 0xff}}},\n    {{{ -1923,    489,    307}, 0, {   478,   1090}, {0x5d, 0x5e, 0x1b, 0xff}}},\n    {{{ -1923,    489,   -306}, 0, {   478,   1090}, {0x5d, 0x5e, 0x1b, 0xff}}},\n    {{{ -1923,    642,   -306}, 0, {     0,    990}, {0x5d, 0x5e, 0x1b, 0xff}}},\n    {{{  1540,    836,   -407}, 0, {  -676,  -2596}, {0x5d, 0x5e, 0x1b, 0xff}}},\n    {{{  1540,    468,   -407}, 0, {   548,  -2352}, {0x5d, 0x5e, 0x1b, 0xff}}},\n    {{{  1540,    468,    411}, 0, {   548,  -2352}, {0x5d, 0x5e, 0x1b, 0xff}}},\n    {{{  1540,    836,    411}, 0, {  -676,  -2596}, {0x5d, 0x5e, 0x1b, 0xff}}},\n    {{{  1864,    847,   -101}, 0, {  1330, -12636}, {0x68, 0x68, 0x24, 0xff}}},\n    {{{  1864,    335,   -101}, 0, {  3034, -12636}, {0x68, 0x68, 0x24, 0xff}}},\n    {{{  2069,    335,   -101}, 0, {  3034, -13318}, {0x68, 0x68, 0x24, 0xff}}},\n    {{{  2069,    847,   -101}, 0, {  1330, -13318}, {0x68, 0x68, 0x24, 0xff}}},\n    {{{  2069,    847,    102}, 0, {  1330, -13318}, {0x68, 0x68, 0x24, 0xff}}},\n    {{{  2069,    335,    102}, 0, {  3034, -13318}, {0x68, 0x68, 0x24, 0xff}}},\n    {{{  1864,    335,    102}, 0, {  3034, -12636}, {0x68, 0x68, 0x24, 0xff}}},\n    {{{  1864,    847,    102}, 0, {  1330, -12636}, {0x68, 0x68, 0x24, 0xff}}},\n};\n\n// 0x0700D178 - 0x0700D268\nstatic const Vtx rr_seg7_vertex_0700D178[] = {\n    {{{  2069,    847,   -101}, 0, {  1330, -13318}, {0x43, 0x45, 0x1d, 0xff}}},\n    {{{  2069,    335,   -101}, 0, {  3034, -13318}, {0x43, 0x45, 0x1d, 0xff}}},\n    {{{  2069,    335,    102}, 0, {  3034, -13318}, {0x43, 0x45, 0x1d, 0xff}}},\n    {{{  1660,   -483,      0}, 0, {  3716,  -2544}, {0x43, 0x45, 0x1d, 0xff}}},\n    {{{  2376,    437,   -306}, 0, {   650,  -4206}, {0x43, 0x45, 0x1d, 0xff}}},\n    {{{  2376,    437,    307}, 0, {   650,  -4206}, {0x43, 0x45, 0x1d, 0xff}}},\n    {{{  1864,    847,    102}, 0, {  1330, -12636}, {0x43, 0x45, 0x1d, 0xff}}},\n    {{{  1864,    335,    102}, 0, {  3034, -12636}, {0x43, 0x45, 0x1d, 0xff}}},\n    {{{  1864,    335,   -101}, 0, {  3034, -12636}, {0x43, 0x45, 0x1d, 0xff}}},\n    {{{  1864,    847,   -101}, 0, {  1330, -12636}, {0x43, 0x45, 0x1d, 0xff}}},\n    {{{  2069,    847,    102}, 0, {  1330, -13318}, {0x43, 0x45, 0x1d, 0xff}}},\n    {{{  1540,    836,    616}, 0, {   906,   1764}, {0xc8, 0xb1, 0x70, 0xff}}},\n    {{{  1045,    591,    512}, 0, {   876,    532}, {0xc8, 0xb1, 0x70, 0xff}}},\n    {{{  1045,    591,    717}, 0, {   934,    532}, {0xc8, 0xb1, 0x70, 0xff}}},\n    {{{  1540,    836,    411}, 0, {   848,   1764}, {0xc8, 0xb1, 0x70, 0xff}}},\n};\n\n// 0x0700D268 - 0x0700D358\nstatic const Vtx rr_seg7_vertex_0700D268[] = {\n    {{{  1540,    836,   -407}, 0, {   622,   1764}, {0xc8, 0xb1, 0x70, 0xff}}},\n    {{{  1540,    836,   -612}, 0, {   564,   1764}, {0xc8, 0xb1, 0x70, 0xff}}},\n    {{{  1045,    591,   -511}, 0, {   592,    532}, {0xc8, 0xb1, 0x70, 0xff}}},\n    {{{  1045,    591,   -716}, 0, {   536,    532}, {0xc8, 0xb1, 0x70, 0xff}}},\n    {{{ -2538,    745,   -101}, 0, {   706,  -8410}, {0xeb, 0xd8, 0x79, 0xff}}},\n    {{{ -2538,    745,    102}, 0, {   762,  -8410}, {0xeb, 0xd8, 0x79, 0xff}}},\n    {{{ -1923,    642,    512}, 0, {   876,  -6878}, {0xeb, 0xd8, 0x79, 0xff}}},\n    {{{ -1923,    642,   -511}, 0, {   592,  -6878}, {0xeb, 0xd8, 0x79, 0xff}}},\n    {{{  -695,    540,    512}, 0, {   876,  -3812}, {0xeb, 0xd8, 0x79, 0xff}}},\n    {{{ -1923,    642,    307}, 0, {   820,  -6878}, {0xeb, 0xd8, 0x79, 0xff}}},\n    {{{  -695,    540,    717}, 0, {   934,  -3812}, {0xeb, 0xd8, 0x79, 0xff}}},\n    {{{ -1923,    642,   -306}, 0, {   650,  -6878}, {0xeb, 0xd8, 0x79, 0xff}}},\n    {{{  -695,    540,   -716}, 0, {   536,  -3812}, {0xeb, 0xd8, 0x79, 0xff}}},\n    {{{  1045,    591,    512}, 0, {   876,    532}, {0xeb, 0xd8, 0x79, 0xff}}},\n    {{{  1045,    591,    717}, 0, {   934,    532}, {0xeb, 0xd8, 0x79, 0xff}}},\n};\n\n// 0x0700D358 - 0x0700D448\nstatic const Vtx rr_seg7_vertex_0700D358[] = {\n    {{{  1045,    591,   -716}, 0, {   536,    532}, {0xeb, 0xd8, 0x79, 0xff}}},\n    {{{  -695,    540,   -511}, 0, {   592,  -3812}, {0xeb, 0xd8, 0x79, 0xff}}},\n    {{{  1045,    591,   -511}, 0, {   592,    532}, {0xeb, 0xd8, 0x79, 0xff}}},\n    {{{  -695,    540,   -716}, 0, {   536,  -3812}, {0xeb, 0xd8, 0x79, 0xff}}},\n    {{{ -1923,    642,   -306}, 0, {   650,  -6878}, {0xeb, 0xd8, 0x79, 0xff}}},\n    {{{  1540,    836,    616}, 0, {   906,   1764}, {0xeb, 0xd8, 0x79, 0xff}}},\n    {{{  2376,    847,    307}, 0, {   820,   3852}, {0xeb, 0xd8, 0x79, 0xff}}},\n    {{{  1540,    836,    411}, 0, {   848,   1764}, {0xeb, 0xd8, 0x79, 0xff}}},\n    {{{  1864,    847,    102}, 0, {   762,   2574}, {0xeb, 0xd8, 0x79, 0xff}}},\n    {{{  1864,    847,   -101}, 0, {   706,   2574}, {0xeb, 0xd8, 0x79, 0xff}}},\n    {{{  1540,    836,   -407}, 0, {   622,   1764}, {0xeb, 0xd8, 0x79, 0xff}}},\n    {{{  2069,    847,    102}, 0, {   762,   3086}, {0xeb, 0xd8, 0x79, 0xff}}},\n    {{{  1540,    836,   -612}, 0, {   564,   1764}, {0xeb, 0xd8, 0x79, 0xff}}},\n    {{{  2376,    847,   -306}, 0, {   650,   3852}, {0xeb, 0xd8, 0x79, 0xff}}},\n    {{{  2069,    847,   -101}, 0, {   706,   3086}, {0xeb, 0xd8, 0x79, 0xff}}},\n};\n\n// 0x0700D448 - 0x0700D488\nstatic const Vtx rr_seg7_vertex_0700D448[] = {\n    {{{  2069,    335,   -101}, 0, {   706,   3086}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  1864,    335,    102}, 0, {   762,   2574}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  2069,    335,    102}, 0, {   762,   3086}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  1864,    335,   -101}, 0, {   706,   2574}, {0x35, 0x35, 0x00, 0xff}}},\n};\n\n// 0x0700D488 - 0x0700D588\nstatic const Vtx rr_seg7_vertex_0700D488[] = {\n    {{{   -45,   2355,      0}, 0, { -1396,  -1906}, {0x49, 0x53, 0x22, 0xff}}},\n    {{{   -34,    410,     20}, 0, { -1282,   1328}, {0x49, 0x53, 0x22, 0xff}}},\n    {{{   -34,   2355,     20}, 0, { -1282,  -1906}, {0x49, 0x53, 0x22, 0xff}}},\n    {{{   -45,    410,      0}, 0, { -1396,   1328}, {0x49, 0x53, 0x22, 0xff}}},\n    {{{     0,   2355,      0}, 0, {  -938,  -1906}, {0x49, 0x53, 0x22, 0xff}}},\n    {{{     0,    410,      0}, 0, {  -938,   1328}, {0x49, 0x53, 0x22, 0xff}}},\n    {{{   -11,    410,    -19}, 0, { -1052,   1328}, {0x49, 0x53, 0x22, 0xff}}},\n    {{{   -11,   2355,    -19}, 0, { -1052,  -1906}, {0x49, 0x53, 0x22, 0xff}}},\n    {{{   -11,   2355,     20}, 0, { -1052,  -1906}, {0x68, 0x68, 0x24, 0xff}}},\n    {{{     0,    410,      0}, 0, {  -938,   1328}, {0x68, 0x68, 0x24, 0xff}}},\n    {{{     0,   2355,      0}, 0, {  -938,  -1906}, {0x68, 0x68, 0x24, 0xff}}},\n    {{{   -11,    410,     20}, 0, { -1052,   1328}, {0x68, 0x68, 0x24, 0xff}}},\n    {{{   -34,   2355,    -19}, 0, { -1282,  -1906}, {0x68, 0x68, 0x24, 0xff}}},\n    {{{   -45,    410,      0}, 0, { -1396,   1328}, {0x68, 0x68, 0x24, 0xff}}},\n    {{{   -45,   2355,      0}, 0, { -1396,  -1906}, {0x68, 0x68, 0x24, 0xff}}},\n    {{{   -34,    410,    -19}, 0, { -1282,   1328}, {0x68, 0x68, 0x24, 0xff}}},\n};\n\n// 0x0700D588 - 0x0700D688\nstatic const Vtx rr_seg7_vertex_0700D588[] = {\n    {{{ -3767,   1052,     51}, 0, {   478,    990}, {0x68, 0x68, 0x24, 0xff}}},\n    {{{ -2538,    540,      0}, 0, {   224,  -1054}, {0x68, 0x68, 0x24, 0xff}}},\n    {{{ -2538,    745,    102}, 0, {   734,  -1054}, {0x68, 0x68, 0x24, 0xff}}},\n    {{{ -2538,    745,   -101}, 0, {  -286,  -1054}, {0x68, 0x68, 0x24, 0xff}}},\n    {{{ -3767,   1052,    -50}, 0, {     0,    990}, {0x68, 0x68, 0x24, 0xff}}},\n    {{{   -34,   2355,     20}, 0, { -1282,  -1906}, {0x85, 0x86, 0x4c, 0xff}}},\n    {{{   -34,    410,     20}, 0, { -1282,   1328}, {0x85, 0x86, 0x4c, 0xff}}},\n    {{{   -11,    410,     20}, 0, { -1052,   1328}, {0x85, 0x86, 0x4c, 0xff}}},\n    {{{   -11,   2355,     20}, 0, { -1052,  -1906}, {0x85, 0x86, 0x4c, 0xff}}},\n    {{{   -11,   2355,    -19}, 0, { -1052,  -1906}, {0x85, 0x86, 0x4c, 0xff}}},\n    {{{   -34,    410,    -19}, 0, { -1282,   1328}, {0x85, 0x86, 0x4c, 0xff}}},\n    {{{   -34,   2355,    -19}, 0, { -1282,  -1906}, {0x85, 0x86, 0x4c, 0xff}}},\n    {{{   -11,    410,    -19}, 0, { -1052,   1328}, {0x85, 0x86, 0x4c, 0xff}}},\n    {{{ -2538,    540,      0}, 0, {   224,  -1054}, {0x43, 0x45, 0x1d, 0xff}}},\n    {{{ -3152,    847,      0}, 0, {   224,      0}, {0x43, 0x45, 0x1d, 0xff}}},\n    {{{ -3767,   1052,    -50}, 0, {     0,    990}, {0x43, 0x45, 0x1d, 0xff}}},\n};\n\n// 0x0700D688 - 0x0700D708\nstatic const Vtx rr_seg7_vertex_0700D688[] = {\n    {{{ -3767,   1052,     51}, 0, {   478,    990}, {0x43, 0x45, 0x1d, 0xff}}},\n    {{{ -3152,    847,      0}, 0, {   224,      0}, {0x43, 0x45, 0x1d, 0xff}}},\n    {{{ -2538,    540,      0}, 0, {   224,  -1054}, {0x43, 0x45, 0x1d, 0xff}}},\n    {{{ -3767,   1052,    -50}, 0, {     0,    990}, {0x43, 0x45, 0x1d, 0xff}}},\n    {{{ -2538,    745,   -101}, 0, {  -286,  -1054}, {0x9f, 0x9d, 0x50, 0xff}}},\n    {{{ -3767,   1052,     51}, 0, {   478,    990}, {0x9f, 0x9d, 0x50, 0xff}}},\n    {{{ -2538,    745,    102}, 0, {   734,  -1054}, {0x9f, 0x9d, 0x50, 0xff}}},\n    {{{ -3767,   1052,    -50}, 0, {     0,    990}, {0x9f, 0x9d, 0x50, 0xff}}},\n};\n\n// 0x0700D708 - 0x0700D768\nstatic const Vtx rr_seg7_vertex_0700D708[] = {\n    {{{   -34,   2355,    -19}, 0, {     0,      0}, {0xb2, 0xa2, 0x54, 0xff}}},\n    {{{   -45,   2355,      0}, 0, {     0,      0}, {0xb2, 0xa2, 0x54, 0xff}}},\n    {{{   -34,   2355,     20}, 0, {     0,      0}, {0xb2, 0xa2, 0x54, 0xff}}},\n    {{{     0,   2355,      0}, 0, {     0,      0}, {0xb2, 0xa2, 0x54, 0xff}}},\n    {{{   -11,   2355,    -19}, 0, {     0,      0}, {0xb2, 0xa2, 0x54, 0xff}}},\n    {{{   -11,   2355,     20}, 0, {     0,      0}, {0xb2, 0xa2, 0x54, 0xff}}},\n};\n\n// 0x0700D768 - 0x0700DAD8\nstatic const Gfx rr_seg7_dl_0700D768[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_0700CAB8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  1,  3, 0x0,  4,  5,  1, 0x0),\n    gsSP2Triangles( 0,  2,  6, 0x0,  0,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12,  9, 13, 0x0, 11, 10, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700CBA8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 5,  8,  9, 0x0,  5,  9,  6, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 14, 0x0),\n    gsSP2Triangles(11, 10, 13, 0x0, 15, 10, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700CCA8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0,  8,  0,  9, 0x0),\n    gsSP2Triangles( 0,  2,  9, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700CD88, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10,  6, 0x0),\n    gsSP2Triangles( 8,  9,  6, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 11, 0x0, 13, 14, 11, 0x0),\n    gsSP2Triangles(13, 15, 14, 0x0,  9, 12, 11, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700CE88, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 3,  8,  2, 0x0,  4,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700CF88, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 3, 12,  1, 0x0, 13, 14,  3, 0x0),\n    gsSP2Triangles(14, 12,  3, 0x0,  9,  8, 10, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700D078, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700D178, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 0,  2, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700D268, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9,  6, 0x0,  8,  6, 10, 0x0),\n    gsSP2Triangles( 7, 11, 12, 0x0, 13,  8, 10, 0x0),\n    gsSP1Triangle(13, 10, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700D358, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  1,  3, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  6, 11,  8, 0x0),\n    gsSP2Triangles(12, 10,  9, 0x0, 12,  9, 13, 0x0),\n    gsSP2Triangles( 9, 14, 13, 0x0,  6, 14, 11, 0x0),\n    gsSP1Triangle( 6, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700D448, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700DAD8 - 0x0700DBA8\nstatic const Gfx rr_seg7_dl_0700DAD8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_0700D488, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700D588, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 12, 10, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700D688, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700DBA8 - 0x0700DBD8\nstatic const Gfx rr_seg7_dl_0700DBA8[] = {\n    gsSPVertex(rr_seg7_vertex_0700D708, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  2,  5, 0x0,  0,  5,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700DBD8 - 0x0700DC58\nconst Gfx rr_seg7_dl_0700DBD8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_0700D768),\n    gsSPDisplayList(rr_seg7_dl_0700DAD8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(rr_seg7_dl_0700DBA8),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/11/2.inc.c",
    "content": "// 0x0700DC58 - 0x0700DD48\nstatic const Vtx rr_seg7_vertex_0700DC58[] = {\n    {{{  -529,   -242,   -536}, 0, {   990,    990}, {0xeb, 0xeb, 0x79, 0xff}}},\n    {{{  -899,     19,   -761}, 0, {     0,      0}, {0xeb, 0xeb, 0x79, 0xff}}},\n    {{{  -541,     35,   -762}, 0, {   990,      0}, {0xeb, 0xeb, 0x79, 0xff}}},\n    {{{  -899,     19,    737}, 0, {     0,      0}, {0xeb, 0xeb, 0x79, 0xff}}},\n    {{{  -887,   -258,    511}, 0, {     0,    990}, {0xeb, 0xeb, 0x79, 0xff}}},\n    {{{  -529,   -242,    511}, 0, {   990,    990}, {0xeb, 0xeb, 0x79, 0xff}}},\n    {{{  -541,     35,    738}, 0, {   990,      0}, {0xeb, 0xeb, 0x79, 0xff}}},\n    {{{  -285,     46,    738}, 0, {     0,      0}, {0xeb, 0xeb, 0x79, 0xff}}},\n    {{{  -273,   -231,    512}, 0, {     0,    990}, {0xeb, 0xeb, 0x79, 0xff}}},\n    {{{    84,   -216,    513}, 0, {   990,    990}, {0xeb, 0xeb, 0x79, 0xff}}},\n    {{{    72,     61,    739}, 0, {   990,      0}, {0xeb, 0xeb, 0x79, 0xff}}},\n    {{{   700,     75,    726}, 0, {   990,      0}, {0xeb, 0xeb, 0x79, 0xff}}},\n    {{{   342,     59,    725}, 0, {     0,      0}, {0xeb, 0xeb, 0x79, 0xff}}},\n    {{{   712,   -202,    500}, 0, {   990,    990}, {0xeb, 0xeb, 0x79, 0xff}}},\n    {{{   354,   -218,    499}, 0, {     0,    990}, {0xeb, 0xeb, 0x79, 0xff}}},\n};\n\n// 0x0700DD48 - 0x0700DDF8\nstatic const Vtx rr_seg7_vertex_0700DD48[] = {\n    {{{   712,   -202,   -545}, 0, {   990,    990}, {0xeb, 0xeb, 0x79, 0xff}}},\n    {{{   354,   -218,   -544}, 0, {     0,    990}, {0xeb, 0xeb, 0x79, 0xff}}},\n    {{{   342,     59,   -770}, 0, {     0,      0}, {0xeb, 0xeb, 0x79, 0xff}}},\n    {{{  -529,   -242,   -536}, 0, {   990,    990}, {0xeb, 0xeb, 0x79, 0xff}}},\n    {{{  -887,   -258,   -535}, 0, {     0,    990}, {0xeb, 0xeb, 0x79, 0xff}}},\n    {{{  -899,     19,   -761}, 0, {     0,      0}, {0xeb, 0xeb, 0x79, 0xff}}},\n    {{{    84,   -216,   -537}, 0, {   990,    990}, {0xeb, 0xeb, 0x79, 0xff}}},\n    {{{  -273,   -231,   -536}, 0, {     0,    990}, {0xeb, 0xeb, 0x79, 0xff}}},\n    {{{  -285,     46,   -762}, 0, {     0,      0}, {0xeb, 0xeb, 0x79, 0xff}}},\n    {{{    72,     61,   -763}, 0, {   990,      0}, {0xeb, 0xeb, 0x79, 0xff}}},\n    {{{   700,     75,   -771}, 0, {   990,      0}, {0xeb, 0xeb, 0x79, 0xff}}},\n};\n\n// 0x0700DDF8 - 0x0700DE88\nstatic const Gfx rr_seg7_dl_0700DDF8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_metal_hole),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_0700DC58, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700DD48, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP1Triangle( 0,  2, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700DE88 - 0x0700DEF8\nconst Gfx rr_seg7_dl_0700DE88[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_0700DDF8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/11/geo.inc.c",
    "content": "// 0x0E000738\nconst GeoLayout rr_geo_000738[] = {\n    GEO_CULLING_RADIUS(4000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, rr_seg7_dl_0700DBD8),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, rr_seg7_dl_0700DE88),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/12/geo.inc.c",
    "content": "// 0x0E000758\nconst GeoLayout rr_geo_000758[] = {\n    GEO_CULLING_RADIUS(1500),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, rr_seg7_dl_0700E178),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/12/model.inc.c",
    "content": "// 0x0700DEF8 - 0x0700DFF8\nstatic const Vtx rr_seg7_vertex_0700DEF8[] = {\n    {{{   307,    -50,   -306}, 0, {     0,    990}, {0x8a, 0x6b, 0x00, 0xff}}},\n    {{{   307,    154,   -306}, 0, {     0,      0}, {0x8a, 0x6b, 0x00, 0xff}}},\n    {{{   307,    154,    307}, 0, {  3034,      0}, {0x8a, 0x6b, 0x00, 0xff}}},\n    {{{   307,    -50,    307}, 0, {  3034,    990}, {0x8a, 0x6b, 0x00, 0xff}}},\n    {{{  -306,    -50,    307}, 0, {  3034,    990}, {0x8a, 0x6b, 0x00, 0xff}}},\n    {{{  -306,    154,    307}, 0, {  3034,      0}, {0x8a, 0x6b, 0x00, 0xff}}},\n    {{{  -306,    154,   -306}, 0, {     0,      0}, {0x8a, 0x6b, 0x00, 0xff}}},\n    {{{  -306,    -50,   -306}, 0, {     0,    990}, {0x8a, 0x6b, 0x00, 0xff}}},\n    {{{  -306,    -50,   -306}, 0, {     0,    990}, {0xce, 0xaf, 0x16, 0xff}}},\n    {{{   307,    -50,   -306}, 0, {  3034,    990}, {0xce, 0xaf, 0x16, 0xff}}},\n    {{{   307,    154,   -306}, 0, {  3034,      0}, {0xce, 0xaf, 0x16, 0xff}}},\n    {{{  -306,    154,   -306}, 0, {     0,      0}, {0xce, 0xaf, 0x16, 0xff}}},\n    {{{  -306,    -50,    307}, 0, {     0,    990}, {0xce, 0xaf, 0x16, 0xff}}},\n    {{{   307,    -50,    307}, 0, {  3034,    990}, {0xce, 0xaf, 0x16, 0xff}}},\n    {{{   307,    154,    307}, 0, {  3034,      0}, {0xce, 0xaf, 0x16, 0xff}}},\n    {{{  -306,    154,    307}, 0, {     0,      0}, {0xce, 0xaf, 0x16, 0xff}}},\n};\n\n// 0x0700DFF8 - 0x0700E0A8\nstatic const Vtx rr_seg7_vertex_0700DFF8[] = {\n    {{{  -101,      0,   -101}, 0, {     0,      0}, {0xef, 0xcd, 0x8e, 0xff}}},\n    {{{   102,      0,   -101}, 0, {   990,      0}, {0xef, 0xcd, 0x8e, 0xff}}},\n    {{{   298,      0,   -297}, 0, {  2012,  -1054}, {0xef, 0xcd, 0x8e, 0xff}}},\n    {{{  -297,      0,   -297}, 0, { -1052,  -1054}, {0xef, 0xcd, 0x8e, 0xff}}},\n    {{{   102,      0,    102}, 0, {   990,    990}, {0xef, 0xcd, 0x8e, 0xff}}},\n    {{{   298,      0,    298}, 0, {  2012,   2010}, {0xef, 0xcd, 0x8e, 0xff}}},\n    {{{  -101,      0,    102}, 0, {     0,    990}, {0xef, 0xcd, 0x8e, 0xff}}},\n    {{{  -297,      0,    298}, 0, { -1052,   2010}, {0xef, 0xcd, 0x8e, 0xff}}},\n    {{{  -297,      0,   -297}, 0, { -1052,   3032}, {0xef, 0xcd, 0x8e, 0xff}}},\n    {{{  -101,      0,   -101}, 0, {     0,   2010}, {0xef, 0xcd, 0x8e, 0xff}}},\n    {{{  -297,      0,    298}, 0, { -1052,      0}, {0xef, 0xcd, 0x8e, 0xff}}},\n};\n\n// 0x0700E0A8 - 0x0700E110\nstatic const Gfx rr_seg7_dl_0700E0A8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_0700DEF8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700E110 - 0x0700E178\nstatic const Gfx rr_seg7_dl_0700E110[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_0700DFF8, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  4,  6, 0x0),\n    gsSP2Triangles( 8,  6,  9, 0x0,  8, 10,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700E178 - 0x0700E208\nconst Gfx rr_seg7_dl_0700E178[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_0700E0A8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_0700E110),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/13/geo.inc.c",
    "content": "// 0x0E000770\nconst GeoLayout rr_geo_000770[] = {\n    GEO_CULLING_RADIUS(1500),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, rr_seg7_dl_0700E830),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/13/model.inc.c",
    "content": "// 0x0700E208 - 0x0700E2F8\nstatic const Vtx rr_seg7_vertex_0700E208[] = {\n    {{{  -961,    350,      0}, 0, {     0,  -8910}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -465,    391,      0}, 0, {   990,  -9618}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -783,    658,      0}, 0, {     0,  -9798}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -177,   1008,      0}, 0, {     0, -11032}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -105,    599,      0}, 0, {   990, -11212}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   107,    605,      0}, 0, {   990, -11918}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   178,   1008,      0}, 0, {     0, -11918}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -511,    887,      0}, 0, {     0, -10324}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -303,    527,      0}, 0, {   990, -10504}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -105,    599,      0}, 0, {   990, -11032}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -177,   1008,      0}, 0, {     0, -11212}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -783,    658,      0}, 0, {     0,  -9618}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -303,    527,      0}, 0, {   990, -10324}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -511,    887,      0}, 0, {     0, -10504}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -465,    391,      0}, 0, {   990,  -9798}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700E2F8 - 0x0700E3E8\nstatic const Vtx rr_seg7_vertex_0700E2F8[] = {\n    {{{  -783,   -657,      0}, 0, {     0,  -6788}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -465,   -390,      0}, 0, {   990,  -6968}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -570,   -207,      0}, 0, {   990,  -7496}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -961,    350,      0}, 0, {     0,  -8910}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -570,    208,      0}, 0, {   990,  -9090}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -465,    391,      0}, 0, {   990,  -9618}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1023,      0,      0}, 0, {     0,  -8202}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -607,      0,      0}, 0, {   990,  -8382}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -570,    208,      0}, 0, {   990,  -8910}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -961,    350,      0}, 0, {     0,  -9090}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -961,   -349,      0}, 0, {     0,  -7496}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -570,   -207,      0}, 0, {   990,  -7676}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -607,      0,      0}, 0, {   990,  -8202}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1023,      0,      0}, 0, {     0,  -8382}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -961,   -349,      0}, 0, {     0,  -7676}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700E3E8 - 0x0700E4D8\nstatic const Vtx rr_seg7_vertex_0700E3E8[] = {\n    {{{   512,   -886,      0}, 0, {     0,  -3960}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   304,   -526,      0}, 0, {   990,  -4140}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   106,   -598,      0}, 0, {   990,  -4668}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -511,   -886,      0}, 0, {     0,  -6082}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -303,   -526,      0}, 0, {   990,  -6262}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -465,   -390,      0}, 0, {   990,  -6788}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -783,   -657,      0}, 0, {     0,  -6968}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -177,  -1007,      0}, 0, {     0,  -5374}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -105,   -598,      0}, 0, {   990,  -5554}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -303,   -526,      0}, 0, {   990,  -6082}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -511,   -886,      0}, 0, {     0,  -6262}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   178,  -1007,      0}, 0, {     0,  -4668}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -105,   -598,      0}, 0, {   990,  -5374}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -177,  -1007,      0}, 0, {     0,  -5554}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   106,   -598,      0}, 0, {   990,  -4848}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700E4D8 - 0x0700E5C8\nstatic const Vtx rr_seg7_vertex_0700E4D8[] = {\n    {{{  1024,      0,      0}, 0, {     0,  -1838}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   571,   -207,      0}, 0, {   990,  -2546}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   962,   -349,      0}, 0, {     0,  -2726}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   512,   -886,      0}, 0, {     0,  -3960}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   106,   -598,      0}, 0, {   990,  -4668}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   178,  -1007,      0}, 0, {     0,  -4848}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   784,   -657,      0}, 0, {     0,  -3252}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   304,   -526,      0}, 0, {   990,  -3960}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   512,   -886,      0}, 0, {     0,  -4140}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   466,   -390,      0}, 0, {   990,  -3434}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   962,   -349,      0}, 0, {     0,  -2546}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   466,   -390,      0}, 0, {   990,  -3252}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   784,   -657,      0}, 0, {     0,  -3434}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   571,   -207,      0}, 0, {   990,  -2726}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   608,      0,      0}, 0, {   990,  -2018}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700E5C8 - 0x0700E6C8\nstatic const Vtx rr_seg7_vertex_0700E5C8[] = {\n    {{{   178,   1008,      0}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   304,    527,      0}, 0, {   990,    282}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   512,    887,      0}, 0, {     0,    102}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   962,    350,      0}, 0, {     0,  -1132}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   571,    208,      0}, 0, {   990,  -1312}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   608,      0,      0}, 0, {   990,  -1838}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1024,      0,      0}, 0, {     0,  -2018}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   784,    658,      0}, 0, {     0,   -424}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   466,    391,      0}, 0, {   990,   -604}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   571,    208,      0}, 0, {   990,  -1132}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   962,    350,      0}, 0, {     0,  -1312}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   512,    887,      0}, 0, {     0,    282}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   466,    391,      0}, 0, {   990,   -424}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   784,    658,      0}, 0, {     0,   -604}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   304,    527,      0}, 0, {   990,    102}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   107,    605,      0}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700E6C8 - 0x0700E830\nstatic const Gfx rr_seg7_dl_0700E6C8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_0700E208, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700E2F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700E3E8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700E4D8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700E5C8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700E830 - 0x0700E8B0\nconst Gfx rr_seg7_dl_0700E830[] = {\n    gsDPPipeSync(),\n    gsDPSetEnvColor(255, 255, 255, 200),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADEA, G_CC_MODULATERGBFADEA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_0700E6C8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/14/geo.inc.c",
    "content": "// 0x0E000788\nconst GeoLayout rr_geo_000788[] = {\n    GEO_CULLING_RADIUS(4000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, rr_seg7_dl_07012758),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/14/model.inc.c",
    "content": "// 0x0700E8B0 - 0x0700E930\nstatic const Vtx rr_seg7_vertex_0700E8B0[] = {\n    {{{ -1535,  -1535,  -1125}, 0, {  -506,   5392}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1536,  -1535,  -1074}, 0, {  4568,   5308}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1229,  -1535,  -1535}, 0, {  4060,   6062}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1536,  -1535,   1075}, 0, {  4568,   1790}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1229,  -1535,   1536}, 0, {  4060,   1036}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1228,  -1535,   1536}, 0, {    -2,   1036}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1535,  -1535,   1126}, 0, {  -506,   1706}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1228,  -1535,  -1535}, 0, {    -2,   6062}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x0700E930 - 0x0700EA20\nstatic const Vtx rr_seg7_vertex_0700E930[] = {\n    {{{  -409,  -1279,   2406}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -306,  -1535,   2304}, 0, {  -222,   1436}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   307,  -1535,   2304}, 0, {   542,   2202}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   410,  -1279,   2406}, 0, {   990,   2010}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1741,   1331,   1024}, 0, { 10668,   1468}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1968,   1331,   1518}, 0, { 11046,   1846}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1968,  -1740,   1518}, 0, {  5936,   6956}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1741,  -1740,   1024}, 0, {  5558,   6578}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1968,   1331,  -1517}, 0, { 11156,   1956}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1938,  -1769,  -1512}, 0, {  5948,   7066}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1620,   1331,  -1922}, 0, { 10356,   1156}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1590,  -1769,  -1917}, 0, {  5148,   6266}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -854,  -1125,   2033}, 0, {  -394,    242}, {0xb4, 0xb4, 0xb4, 0xff}}},\n    {{{  -409,  -1279,   2406}, 0, {     0,    990}, {0xb4, 0xb4, 0xb4, 0xff}}},\n    {{{  -409,  -1125,   2406}, 0, {   160,    798}, {0xb4, 0xb4, 0xb4, 0xff}}},\n};\n\n// 0x0700EA20 - 0x0700EB10\nstatic const Vtx rr_seg7_vertex_0700EA20[] = {\n    {{{   410,  -1125,   2406}, 0, {  1182,   1818}, {0xb4, 0xb4, 0xb4, 0xff}}},\n    {{{   855,  -1279,   2033}, 0, {  1546,   2566}, {0xb4, 0xb4, 0xb4, 0xff}}},\n    {{{   855,  -1125,   2033}, 0, {  1738,   2374}, {0xb4, 0xb4, 0xb4, 0xff}}},\n    {{{   410,  -1279,   2406}, 0, {   990,   2010}, {0xb4, 0xb4, 0xb4, 0xff}}},\n    {{{ -1740,   1331,  -1023}, 0, {  4878,  -4320}, {0xb4, 0xb4, 0xb4, 0xff}}},\n    {{{ -1967,   1331,  -1517}, 0, {  4388,  -4810}, {0xb4, 0xb4, 0xb4, 0xff}}},\n    {{{ -1740,  -1740,  -1023}, 0, {  -230,    790}, {0xb4, 0xb4, 0xb4, 0xff}}},\n    {{{ -1996,  -1769,  -1512}, 0, {  -818,    300}, {0xb4, 0xb4, 0xb4, 0xff}}},\n    {{{  1126,  -1740,   1741}, 0, {  4536,   5556}, {0xb4, 0xb4, 0xb4, 0xff}}},\n    {{{  1620,   1331,   1923}, 0, { 10468,   1268}, {0xb4, 0xb4, 0xb4, 0xff}}},\n    {{{  1126,   1331,   1741}, 0, {  9646,    448}, {0xb4, 0xb4, 0xb4, 0xff}}},\n    {{{  1620,  -1740,   1923}, 0, {  5358,   6378}, {0xb4, 0xb4, 0xb4, 0xff}}},\n    {{{  -409,  -1228,   1741}, 0, {     0,    990}, {0xb4, 0xb4, 0xb4, 0xff}}},\n    {{{  -409,  -1228,   1536}, 0, {   480,   1500}, {0xb4, 0xb4, 0xb4, 0xff}}},\n    {{{  -409,   -613,   1741}, 0, {     0,    990}, {0xb4, 0xb4, 0xb4, 0xff}}},\n};\n\n// 0x0700EB10 - 0x0700EBF0\nstatic const Vtx rr_seg7_vertex_0700EB10[] = {\n    {{{  -854,  -1125,   2033}, 0, {  -394,    242}, {0xb4, 0xb4, 0xb4, 0xff}}},\n    {{{  -854,  -1279,   2033}, 0, {  -586,    434}, {0xb4, 0xb4, 0xb4, 0xff}}},\n    {{{  -409,  -1279,   2406}, 0, {     0,    990}, {0xb4, 0xb4, 0xb4, 0xff}}},\n    {{{ -1967,  -1740,   1518}, 0, {  -608,    412}, {0xb4, 0xb4, 0xb4, 0xff}}},\n    {{{ -1619,  -1740,   1923}, 0, {     0,    990}, {0xb4, 0xb4, 0xb4, 0xff}}},\n    {{{ -1967,   1331,   1518}, 0, {  4500,  -4698}, {0xb4, 0xb4, 0xb4, 0xff}}},\n    {{{ -1619,   1331,   1923}, 0, {  5078,  -4120}, {0xb4, 0xb4, 0xb4, 0xff}}},\n    {{{   410,  -1228,   1536}, 0, {  2522,   -542}, {0xb4, 0xb4, 0xb4, 0xff}}},\n    {{{   410,  -1228,   1741}, 0, {  2012,  -1054}, {0xb4, 0xb4, 0xb4, 0xff}}},\n    {{{   410,   -613,   1741}, 0, {  2012,  -1054}, {0xb4, 0xb4, 0xb4, 0xff}}},\n    {{{   669,  -1433,   -562}, 0, {   138,   1158}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   669,  -1535,   -562}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   669,  -1535,    666}, 0, {  2012,  -1054}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   669,  -1433,    666}, 0, {  2182,   -884}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x0700EBF0 - 0x0700ECE0\nstatic const Vtx rr_seg7_vertex_0700EBF0[] = {\n    {{{  1075,  -1436,    666}, 0, {  2176,   -890}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1075,  -1535,   -562}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1075,  -1436,   -562}, 0, {   132,   1152}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1075,  -1539,    666}, 0, {  2006,  -1060}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -409,  -1330,   1280}, 0, {   564,    564}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   410,  -1330,   1024}, 0, { -1222,   1498}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -409,  -1330,   1024}, 0, {   138,    138}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   410,  -1330,   1280}, 0, {  -796,   1924}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1125,  -1740,  -1740}, 0, {   790,   1810}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1648,  -1769,  -1917}, 0, {   -20,   1098}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1125,   1331,  -1740}, 0, {  5900,  -3298}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   410,  -1226,   2355}, 0, {  1118,  -1692}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   410,  -1228,   2406}, 0, {  1054,  -1756}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   410,  -1125,   2355}, 0, {  1118,  -1692}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   410,  -1125,   2406}, 0, {  1054,  -1756}, {0x96, 0x96, 0x96, 0xff}}},\n};\n\n// 0x0700ECE0 - 0x0700EDC0\nstatic const Vtx rr_seg7_vertex_0700ECE0[] = {\n    {{{  -411,  -1125,   2353}, 0, {    96,   -664}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -409,  -1125,   2406}, 0, {    32,   -734}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -409,  -1228,   2406}, 0, {    32,   -734}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -411,  -1228,   2353}, 0, {    96,   -664}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1740,  -1740,   1024}, 0, {  -230,    790}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1967,  -1740,   1518}, 0, {  -608,    412}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1967,   1331,   1518}, 0, {  4500,  -4698}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1740,   1331,   1024}, 0, {  4878,  -4320}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1620,   1331,   1923}, 0, { 10468,   1268}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1620,  -1740,   1923}, 0, {  5358,   6378}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1968,  -1740,   1518}, 0, {  5936,   6956}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1648,  -1769,  -1917}, 0, {   -20,   1098}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1619,   1331,  -1922}, 0, {  5188,  -4010}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1125,   1331,  -1740}, 0, {  5900,  -3298}, {0x96, 0x96, 0x96, 0xff}}},\n};\n\n// 0x0700EDC0 - 0x0700EEA0\nstatic const Vtx rr_seg7_vertex_0700EDC0[] = {\n    {{{  1711,  -1776,  -1018}, 0, {  5450,   6590}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1968,   1331,  -1517}, 0, { 11156,   1956}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1741,   1331,  -1023}, 0, { 10668,   1468}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1938,  -1769,  -1512}, 0, {  5948,   7066}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1125,   1331,   1741}, 0, {  5900,  -3298}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1619,   1331,   1923}, 0, {  5078,  -4120}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1125,  -1740,   1741}, 0, {   790,   1810}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1619,  -1740,   1923}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1620,   1331,   1923}, 0, { 10468,   1268}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1968,  -1740,   1518}, 0, {  5936,   6956}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1968,   1331,   1518}, 0, { 11046,   1846}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1535,   -101,    307}, 0, {  2532,  -1574}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1740,   -101,    307}, 0, {  2022,  -1064}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1740,    512,    307}, 0, {  2022,  -1064}, {0x96, 0x96, 0x96, 0xff}}},\n};\n\n// 0x0700EEA0 - 0x0700EFA0\nstatic const Vtx rr_seg7_vertex_0700EEA0[] = {\n    {{{ -1740,   -101,   -511}, 0, {  4066,    980}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1535,   -101,   -511}, 0, {  4576,    470}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1740,    512,   -511}, 0, {  4066,    980}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1536,  -1228,   -818}, 0, {     0,   3032}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1741,  -1228,   -818}, 0, {   480,   2522}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1741,   -613,   -818}, 0, {   480,   2522}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1741,  -1228,      0}, 0, { -1564,    480}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1536,  -1228,      0}, 0, { -2074,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1741,   -613,      0}, 0, { -1564,    480}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -409,  -1228,   1536}, 0, {   990,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   410,  -1228,   1280}, 0, {  -796,   1924}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -409,  -1228,   1280}, 0, {   564,    564}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   410,  -1228,   1536}, 0, {  -370,   2350}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1126,  -1740,   1741}, 0, {  6610,   2010}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   410,   -609,   1741}, 0, {  4306,   1494}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   410,  -1224,   1741}, 0, {  5074,   2260}, {0xc8, 0xc8, 0xc8, 0xff}}},\n};\n\n// 0x0700EFA0 - 0x0700F080\nstatic const Vtx rr_seg7_vertex_0700EFA0[] = {\n    {{{  1126,  -1740,   1741}, 0, {  6610,   2010}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1126,   1331,   1741}, 0, {  2778,  -1820}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   410,   -609,   1741}, 0, {  4306,   1494}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   493,  -1287,   1741}, 0, {  5256,   2236}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -492,  -1283,   1741}, 0, {  4022,   3460}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1125,  -1740,   1741}, 0, {  3800,   4820}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -409,  -1224,   1741}, 0, {  4052,   3282}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -409,   -609,   1741}, 0, {  3284,   2516}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1125,   1331,   1741}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -204,   -405,   1741}, 0, {  3284,   2006}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   205,   -405,   1741}, 0, {  3796,   1494}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -818,  -1125,   1997}, 0, {    32,    288}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -854,  -1125,   2033}, 0, {   -56,    288}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -409,  -1125,   2406}, 0, {    32,   -734}, {0xc8, 0xc8, 0xc8, 0xff}}},\n};\n\n// 0x0700F080 - 0x0700F170\nstatic const Vtx rr_seg7_vertex_0700F080[] = {\n    {{{  -409,  -1279,   2406}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   410,  -1228,   2406}, 0, {  1054,   1946}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -409,  -1228,   2406}, 0, {    32,    926}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   410,  -1279,   2406}, 0, {   990,   2010}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   819,  -1125,   1997}, 0, {  2076,  -1756}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   855,  -1125,   2033}, 0, {  2076,  -1846}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   870,  -1125,   1741}, 0, {  2460,  -1502}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   410,  -1125,   2355}, 0, {  1118,  -1692}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   819,  -1125,   1741}, 0, {  2396,  -1438}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   410,  -1125,   2406}, 0, {  1054,  -1756}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -818,  -1125,   1741}, 0, {   352,    606}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -854,  -1125,   2033}, 0, {   -56,    288}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -818,  -1125,   1997}, 0, {    32,    288}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -409,  -1125,   2406}, 0, {    32,   -734}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -409,  -1125,   2355}, 0, {    96,   -670}, {0xc8, 0xc8, 0xc8, 0xff}}},\n};\n\n// 0x0700F170 - 0x0700F260\nstatic const Vtx rr_seg7_vertex_0700F170[] = {\n    {{{  1536,  -1228,      0}, 0, { -2074,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1741,  -1228,   -818}, 0, {   480,   2522}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1536,  -1228,   -818}, 0, {     0,   3032}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -818,  -1125,   1741}, 0, {   352,    606}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -869,  -1125,   1741}, 0, {   288,    670}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -854,  -1125,   2033}, 0, {   -56,    288}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1535,   -101,   -511}, 0, {  4576,    470}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1740,   -101,   -511}, 0, {  4066,    980}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1740,   -101,    307}, 0, {  2022,  -1064}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1535,   -101,    307}, 0, {  2532,  -1574}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1741,  -1228,      0}, 0, { -1564,    480}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   205,   -409,   1536}, 0, {  2012,      0}, {0x5a, 0x5a, 0x5a, 0xff}}},\n    {{{  -204,   -409,   1741}, 0, {   480,    480}, {0x5a, 0x5a, 0x5a, 0xff}}},\n    {{{  -204,   -409,   1536}, 0, {   990,    990}, {0x5a, 0x5a, 0x5a, 0xff}}},\n    {{{   205,   -409,   1741}, 0, {  1500,   -542}, {0x5a, 0x5a, 0x5a, 0xff}}},\n};\n\n// 0x0700F260 - 0x0700F340\nstatic const Vtx rr_seg7_vertex_0700F260[] = {\n    {{{  -409,  -1433,   1024}, 0, {   138,    138}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   410,  -1433,    768}, 0, { -1648,   1074}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -409,  -1433,    768}, 0, {  -286,   -288}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   410,  -1433,   1024}, 0, { -1222,   1498}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1126,  -1740,  -1740}, 0, {  6610,   2010}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1125,  -1740,  -1740}, 0, {  3800,   4820}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1125,   1331,  -1740}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1126,   1331,  -1740}, 0, {  2778,  -1820}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -854,  -1279,   2033}, 0, {  -586,    434}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -306,  -1535,   2304}, 0, {  -222,   1436}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -409,  -1279,   2406}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   410,  -1279,   2406}, 0, {   990,   2010}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   307,  -1535,   2304}, 0, {   542,   2202}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   855,  -1279,   2033}, 0, {  1546,   2566}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x0700F340 - 0x0700F430\nstatic const Vtx rr_seg7_vertex_0700F340[] = {\n    {{{   870,  -1279,   1741}, 0, {  2460,  -1502}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   870,  -1125,   1741}, 0, {  2460,  -1502}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   855,  -1125,   2033}, 0, {  2076,  -1846}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   855,  -1279,   2033}, 0, {  2076,  -1846}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -854,  -1279,   2033}, 0, {   -56,    288}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -854,  -1125,   2033}, 0, {   -56,    288}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -869,  -1125,   1741}, 0, {   288,    670}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -869,  -1279,   1741}, 0, {   288,    670}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -818,  -1228,   1741}, 0, {   352,    606}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -818,  -1125,   1741}, 0, {   352,    606}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -818,  -1125,   1997}, 0, {    32,    288}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   410,  -1125,   2355}, 0, {  1182,   1818}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   819,  -1125,   1997}, 0, {  1692,   2330}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   410,  -1228,   2355}, 0, {  1054,   1946}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   819,  -1228,   1997}, 0, {  1564,   2458}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x0700F430 - 0x0700F510\nstatic const Vtx rr_seg7_vertex_0700F430[] = {\n    {{{   819,  -1125,   1741}, 0, {  2396,  -1438}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   819,  -1228,   1741}, 0, {  2396,  -1438}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   819,  -1228,   1997}, 0, {  2076,  -1756}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   819,  -1125,   1997}, 0, {  2076,  -1756}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -409,  -1125,   2355}, 0, {   160,    798}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -818,  -1228,   1997}, 0, {  -478,    416}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -818,  -1125,   1997}, 0, {  -350,    288}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -409,  -1228,   2355}, 0, {    32,    926}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1536,  -1228,      0}, 0, { -2074,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1536,   -613,      0}, 0, { -2074,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1741,   -613,      0}, 0, { -1564,    480}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -818,  -1228,   1741}, 0, {   352,    606}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -818,  -1125,   1997}, 0, {    32,    288}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -818,  -1228,   1997}, 0, {    32,    288}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x0700F510 - 0x0700F600\nstatic const Vtx rr_seg7_vertex_0700F510[] = {\n    {{{ -1535,   -101,    307}, 0, {  2532,  -1574}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1740,    512,    307}, 0, {  2022,  -1064}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1535,    512,    307}, 0, {  2532,  -1574}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1535,   -101,   -511}, 0, {  4576,    470}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1535,    512,   -511}, 0, {  4576,    470}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1740,    512,   -511}, 0, {  4066,    980}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1536,  -1228,   -818}, 0, {     0,   3032}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1741,   -613,   -818}, 0, {   480,   2522}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1536,   -613,   -818}, 0, {     0,   3032}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   410,  -1228,   1536}, 0, {  2522,   -542}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   410,   -613,   1741}, 0, {  2012,  -1054}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   410,   -613,   1536}, 0, {  2522,   -542}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -409,  -1228,   1536}, 0, {   480,   1500}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -409,   -613,   1536}, 0, {   480,   1500}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -409,   -613,   1741}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x0700F600 - 0x0700F700\nstatic const Vtx rr_seg7_vertex_0700F600[] = {\n    {{{  1536,  -1535,   1075}, 0, {    32,    926}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1536,   1331,   1075}, 0, { -3544,  -2650}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1536,  -1228,      0}, 0, {   990,   -798}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1536,  -1228,   -818}, 0, {  2012,  -1820}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1536,  -1535,  -1074}, 0, {  2714,  -1756}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1536,   -409,   -613}, 0, {   734,  -2586}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1536,   -409,   -204}, 0, {   224,  -2076}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1536,   -613,      0}, 0, {   224,  -1564}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1536,   1331,  -1074}, 0, {  -860,  -5334}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1536,   -613,   -818}, 0, {  1246,  -2586}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1535,    717,    102}, 0, { -1562,  -3098}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1535,    717,   -306}, 0, { -1052,  -3608}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1535,   1331,  -1125}, 0, {  -796,  -5398}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1535,    512,   -511}, 0, {  -540,  -3608}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1535,  -1535,  -1125}, 0, {  2842,  -1756}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1535,   -101,   -511}, 0, {   224,  -2842}, {0x44, 0x44, 0x44, 0xff}}},\n};\n\n// 0x0700F700 - 0x0700F7F0\nstatic const Vtx rr_seg7_vertex_0700F700[] = {\n    {{{ -1535,    717,    102}, 0, { -1562,  -3098}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1535,   1331,  -1125}, 0, {  -796,  -5398}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1535,   1331,   1126}, 0, { -3606,  -2586}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1535,  -1535,  -1125}, 0, {  2842,  -1756}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1535,   -101,    307}, 0, {  -796,  -1820}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1535,  -1535,   1126}, 0, {     0,    990}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1535,   -101,   -511}, 0, {   224,  -2842}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1535,    512,    307}, 0, { -1562,  -2586}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1075,  -1535,   -562}, 0, {   642,   1662}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   666,  -1535,   -562}, 0, {   -36,    984}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   666,  -1433,   -562}, 0, {   132,    814}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1075,  -1433,   -562}, 0, {   814,   1492}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   410,  -1535,   1536}, 0, {   480,    480}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   410,  -1433,   1024}, 0, {  -200,   1500}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   410,  -1330,   1024}, 0, {     0,   1670}, {0x44, 0x44, 0x44, 0xff}}},\n};\n\n// 0x0700F7F0 - 0x0700F8E0\nstatic const Vtx rr_seg7_vertex_0700F7F0[] = {\n    {{{  1075,  -1436,    666}, 0, {   808,   1498}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   666,  -1436,    666}, 0, {   126,    820}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   666,  -1539,    666}, 0, {   -42,    990}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1075,  -1539,    666}, 0, {   638,   1668}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -409,  -1535,   1536}, 0, {   480,    480}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -409,  -1228,   1280}, 0, {   564,   1414}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -409,  -1330,   1280}, 0, {   394,   1244}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -409,  -1330,   1024}, 0, {     0,   1670}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -409,  -1433,   1024}, 0, {  -200,   1500}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -409,  -1433,    768}, 0, {  -626,   1924}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -409,  -1228,   1536}, 0, {   990,    990}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -409,  -1535,    768}, 0, {  -796,   1754}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   410,  -1535,   1536}, 0, {   480,    480}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   410,  -1433,    768}, 0, {  -626,   1924}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   410,  -1433,   1024}, 0, {  -200,   1500}, {0x44, 0x44, 0x44, 0xff}}},\n};\n\n// 0x0700F8E0 - 0x0700F9E0\nstatic const Vtx rr_seg7_vertex_0700F8E0[] = {\n    {{{   410,  -1535,   1536}, 0, {   480,    480}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   410,  -1330,   1024}, 0, {     0,   1670}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   410,  -1330,   1280}, 0, {   394,   1244}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   410,  -1228,   1280}, 0, {   564,   1414}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   410,  -1228,   1536}, 0, {   990,    990}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   410,  -1535,    768}, 0, {  -796,   1754}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   410,  -1433,    768}, 0, {  -626,   1924}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   205,   -409,   1536}, 0, {   352,  -2204}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1228,   1331,   1536}, 0, { -3608,  -2586}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1229,   1331,   1536}, 0, {  -542,  -5652}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -204,   -409,   1536}, 0, {  -158,  -1692}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -409,   -613,   1536}, 0, {  -158,  -1182}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -409,  -1228,   1536}, 0, {   606,   -416}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1228,  -1535,   1536}, 0, {     0,    990}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   410,  -1228,   1536}, 0, {  1628,  -1438}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1229,  -1535,   1536}, 0, {  3034,  -2076}, {0x55, 0x55, 0x55, 0xff}}},\n};\n\n// 0x0700F9E0 - 0x0700FAE0\nstatic const Vtx rr_seg7_vertex_0700F9E0[] = {\n    {{{   410,   -613,   1536}, 0, {   862,  -2204}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   205,   -409,   1536}, 0, {   352,  -2204}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1229,   1331,   1536}, 0, {  -542,  -5652}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   410,  -1228,   1536}, 0, {  1628,  -1438}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1229,  -1535,   1536}, 0, {  3034,  -2076}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1228,  -1535,  -1535}, 0, {     0,    990}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1229,  -1535,  -1535}, 0, {  3034,  -2076}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1229,   1331,  -1535}, 0, {  -542,  -5652}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1228,   1331,  -1535}, 0, { -3608,  -2586}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -409,  -1228,   1280}, 0, {  1842,    138}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   410,  -1330,   1280}, 0, {   308,   1328}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -409,  -1330,   1280}, 0, {  1672,      0}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   410,  -1228,   1280}, 0, {   478,   1500}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   410,  -1535,    768}, 0, {     0,    990}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -409,  -1433,    768}, 0, {  1500,   -202}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   410,  -1433,    768}, 0, {   138,   1158}, {0x55, 0x55, 0x55, 0xff}}},\n};\n\n// 0x0700FAE0 - 0x0700FBD0\nstatic const Vtx rr_seg7_vertex_0700FAE0[] = {\n    {{{   410,  -1535,    768}, 0, {     0,    990}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -409,  -1535,    768}, 0, {  1330,   -372}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -409,  -1433,    768}, 0, {  1500,   -202}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -409,  -1330,   1024}, 0, {  1672,      0}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   410,  -1433,   1024}, 0, {   138,   1158}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -409,  -1433,   1024}, 0, {  1500,   -202}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   410,  -1330,   1024}, 0, {   308,   1328}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1535,    717,    102}, 0, {  3044,  -1064}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1740,    717,   -306}, 0, {  3554,    470}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1535,    717,   -306}, 0, {  4066,    -42}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1740,  -1740,   1024}, 0, {    96,   2648}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1711,  -1776,  -1018}, 0, {  6952,    892}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1741,  -1740,   1024}, 0, {  4440,  -1692}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1125,  -1740,  -1740}, 0, {  4312,   5332}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1126,  -1740,  -1740}, 0, {  7122,   2520}, {0x55, 0x55, 0x55, 0xff}}},\n};\n\n// 0x0700FBD0 - 0x0700FCD0\nstatic const Vtx rr_seg7_vertex_0700FBD0[] = {\n    {{{ -1740,  -1740,   1024}, 0, {    96,   2648}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1126,  -1740,   1741}, 0, {  2778,  -1820}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1125,  -1740,   1741}, 0, {     0,    990}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1741,  -1740,   1024}, 0, {  4440,  -1692}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1740,  -1740,  -1023}, 0, {  2650,   5204}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1125,  -1740,  -1740}, 0, {  4312,   5332}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   645,  -1637,   1741}, 0, {  2178,  -1220}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   307,  -1535,   2304}, 0, {  1054,  -1502}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -644,  -1648,   1741}, 0, {   568,    390}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -306,  -1535,   2304}, 0, {   288,   -734}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1536,   -409,   -613}, 0, {  -540,   2522}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1741,   -409,   -613}, 0, {     0,   2010}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1741,   -409,   -204}, 0, { -1052,    990}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1535,    717,    102}, 0, {  3044,  -1064}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1740,    717,    102}, 0, {  2532,   -552}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1740,    717,   -306}, 0, {  3554,    470}, {0x55, 0x55, 0x55, 0xff}}},\n};\n\n// 0x0700FCD0 - 0x0700FDB0\nstatic const Vtx rr_seg7_vertex_0700FCD0[] = {\n    {{{  1536,   -409,   -613}, 0, {  -540,   2522}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1741,   -409,   -204}, 0, { -1052,    990}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1536,   -409,   -204}, 0, { -1562,   1500}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -818,  -1228,   1741}, 0, {   352,    606}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -818,  -1228,   1997}, 0, {    32,    288}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -409,  -1228,   2406}, 0, {    32,   -734}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   410,  -1228,   2406}, 0, {  1054,  -1756}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   819,  -1228,   1997}, 0, {  2076,  -1756}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   819,  -1228,   1741}, 0, {  2396,  -1438}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   410,  -1228,   1536}, 0, {  2140,   -670}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -409,  -1228,   1536}, 0, {  1118,    352}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1740,  -1740,  -1023}, 0, {  2650,   5204}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1996,  -1769,  -1512}, 0, {  2760,   6120}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1648,  -1769,  -1917}, 0, {  4060,   6220}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x0700FDB0 - 0x0700FEA0\nstatic const Vtx rr_seg7_vertex_0700FDB0[] = {\n    {{{  -869,  -1279,   1741}, 0, {   288,    670}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -644,  -1648,   1741}, 0, {   568,    390}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -854,  -1279,   2033}, 0, {   -56,    288}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   855,  -1279,   2033}, 0, {  2076,  -1846}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   645,  -1637,   1741}, 0, {  2178,  -1220}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   870,  -1279,   1741}, 0, {  2460,  -1502}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -854,  -1279,   2033}, 0, {  -586,    434}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -644,  -1648,   1741}, 0, {  -784,   1154}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -306,  -1535,   2304}, 0, {  -222,   1436}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   307,  -1535,   2304}, 0, {   542,   2202}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   645,  -1637,   1741}, 0, {   836,   2750}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   855,  -1279,   2033}, 0, {  1546,   2566}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1125,  -1740,   1741}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1967,  -1740,   1518}, 0, {  -802,   2316}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1740,  -1740,   1024}, 0, {    96,   2648}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x0700FEA0 - 0x0700FF80\nstatic const Vtx rr_seg7_vertex_0700FEA0[] = {\n    {{{ -1740,  -1740,  -1023}, 0, {  2650,   5204}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1648,  -1769,  -1917}, 0, {  4060,   6220}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1125,  -1740,  -1740}, 0, {  4312,   5332}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1741,  -1740,   1024}, 0, {  4440,  -1692}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1968,  -1740,   1518}, 0, {  4106,  -2592}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1126,  -1740,   1741}, 0, {  2778,  -1820}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1620,  -1740,   1923}, 0, {  3166,  -2664}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1126,  -1740,  -1740}, 0, {  7122,   2520}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1590,  -1769,  -1917}, 0, {  7936,   2344}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1711,  -1776,  -1018}, 0, {  6952,    892}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1938,  -1769,  -1512}, 0, {  7836,   1044}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1125,  -1740,   1741}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1619,  -1740,   1923}, 0, {  -874,   1376}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1967,  -1740,   1518}, 0, {  -802,   2316}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x0700FF80 - 0x07010070\nstatic const Vtx rr_seg7_vertex_0700FF80[] = {\n    {{{  1536,   -409,   -204}, 0, { -1562,   1500}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1741,   -613,      0}, 0, { -1564,    480}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1536,   -613,      0}, 0, { -2074,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1535,    717,   -306}, 0, {  4066,    -42}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1740,    717,   -306}, 0, {  3554,    470}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1740,    512,   -511}, 0, {  4066,    980}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1535,    512,   -511}, 0, {  4576,    470}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1535,    512,    307}, 0, {  2532,  -1574}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1740,    717,    102}, 0, {  2532,   -552}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1535,    717,    102}, 0, {  3044,  -1064}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1740,    512,    307}, 0, {  2022,  -1064}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1536,   -613,   -818}, 0, {     0,   3032}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1741,   -613,   -818}, 0, {   480,   2522}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1741,   -409,   -613}, 0, {     0,   2010}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1536,   -409,   -613}, 0, {  -540,   2522}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x07010070 - 0x07010150\nstatic const Vtx rr_seg7_vertex_07010070[] = {\n    {{{   410,   -613,   1536}, 0, {  2522,   -542}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   205,   -409,   1741}, 0, {  1500,   -542}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   205,   -409,   1536}, 0, {  2012,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1536,   -409,   -204}, 0, { -1562,   1500}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1741,   -409,   -204}, 0, { -1052,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1741,   -613,      0}, 0, { -1564,    480}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -204,   -409,   1536}, 0, {   990,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -204,   -409,   1741}, 0, {   480,    480}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -409,   -613,   1741}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -409,   -613,   1536}, 0, {   480,   1500}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   410,   -613,   1741}, 0, {  2012,  -1054}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1740,   1331,   1024}, 0, {  6356,   2266}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -1740,   1331,  -1023}, 0, {  3800,   4820}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -1740,    717,   -306}, 0, {  3928,   3160}, {0x91, 0x91, 0x91, 0xff}}},\n};\n\n// 0x07010150 - 0x07010250\nstatic const Vtx rr_seg7_vertex_07010150[] = {\n    {{{  1741,   -409,   -204}, 0, {  2650,   1626}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1741,   -409,   -613}, 0, {  2140,   2138}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1741,   1331,  -1023}, 0, {  3800,   4820}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1741,   -613,   -818}, 0, {  1628,   2138}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1741,  -1228,   -818}, 0, {   862,   1372}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1711,  -1776,  -1018}, 0, {   -68,    938}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1741,   1331,   1024}, 0, {  6356,   2266}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1741,   -613,      0}, 0, {  2650,   1116}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1741,  -1228,      0}, 0, {  1884,    352}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1741,  -1740,   1024}, 0, {  2522,  -1564}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -1740,  -1740,  -1023}, 0, {     0,    990}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -1740,    512,   -511}, 0, {  3418,   3160}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -1740,   1331,  -1023}, 0, {  3800,   4820}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -1740,    717,   -306}, 0, {  3928,   3160}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -1740,   -101,    307}, 0, {  3672,   1372}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -1740,   -101,   -511}, 0, {  2650,   2394}, {0x91, 0x91, 0x91, 0xff}}},\n};\n\n// 0x07010250 - 0x07010340\nstatic const Vtx rr_seg7_vertex_07010250[] = {\n    {{{ -1740,   1331,   1024}, 0, {  6356,   2266}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -1740,    717,   -306}, 0, {  3928,   3160}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -1740,    717,    102}, 0, {  4440,   2648}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -1740,  -1740,   1024}, 0, {  2522,  -1564}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -1740,    512,    307}, 0, {  4440,   2138}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -1740,   -101,    307}, 0, {  3672,   1372}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -1740,  -1740,  -1023}, 0, {     0,    990}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1126,   1331,  -1740}, 0, {  9646,    448}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1620,   1331,  -1922}, 0, { 10356,   1156}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1590,  -1769,  -1917}, 0, {  5148,   6266}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1126,  -1740,  -1740}, 0, {  4536,   5556}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -1648,  -1769,  -1917}, 0, {   -20,   1098}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -1967,   1331,  -1517}, 0, {  4388,  -4810}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -1619,   1331,  -1922}, 0, {  5188,  -4010}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -1996,  -1769,  -1512}, 0, {  -818,    300}, {0x91, 0x91, 0x91, 0xff}}},\n};\n\n// 0x07010340 - 0x07010440\nstatic const Vtx rr_seg7_vertex_07010340[] = {\n    {{{  1318,   2595,  -1450}, 0, {  1072,  -3326}, {0x20, 0x85, 0x66, 0xff}}},\n    {{{  1741,   1331,  -1023}, 0, {  1776,    990}, {0x20, 0x85, 0x66, 0xff}}},\n    {{{  1968,   1331,  -1517}, 0, {     0,    990}, {0x20, 0x85, 0x66, 0xff}}},\n    {{{ -1967,   1331,  -1517}, 0, {     0,    990}, {0x20, 0x85, 0x66, 0xff}}},\n    {{{ -1740,   1331,  -1023}, 0, {  1776,    990}, {0x20, 0x85, 0x66, 0xff}}},\n    {{{ -1317,   2595,  -1450}, 0, {  1072,  -3326}, {0x20, 0x85, 0x66, 0xff}}},\n    {{{ -1317,   2595,   1451}, 0, {  1072,  -3326}, {0x20, 0x85, 0x66, 0xff}}},\n    {{{ -1740,   1331,   1024}, 0, {  1776,    990}, {0x20, 0x85, 0x66, 0xff}}},\n    {{{ -1967,   1331,   1518}, 0, {     0,    990}, {0x20, 0x85, 0x66, 0xff}}},\n    {{{  1968,   1331,   1518}, 0, {     0,    990}, {0x20, 0x85, 0x66, 0xff}}},\n    {{{  1741,   1331,   1024}, 0, {  1776,    990}, {0x20, 0x85, 0x66, 0xff}}},\n    {{{  1318,   2595,   1451}, 0, {  1072,  -3326}, {0x20, 0x85, 0x66, 0xff}}},\n    {{{   -64,   -921,  -1535}, 0, {     0,    990}, {0x45, 0x4c, 0x4e, 0xff}}},\n    {{{   -64,   1229,  -1381}, 0, {   734,  -9740}, {0x45, 0x4c, 0x4e, 0xff}}},\n    {{{   -64,   1331,  -1535}, 0, {     0, -10252}, {0x45, 0x4c, 0x4e, 0xff}}},\n    {{{   -64,   -921,  -1381}, 0, {   734,    990}, {0x45, 0x4c, 0x4e, 0xff}}},\n};\n\n// 0x07010440 - 0x07010540\nstatic const Vtx rr_seg7_vertex_07010440[] = {\n    {{{    89,   1331,  -1535}, 0, {     0, -10252}, {0x45, 0x4c, 0x4e, 0xff}}},\n    {{{    89,   -921,  -1381}, 0, {   734,    990}, {0x45, 0x4c, 0x4e, 0xff}}},\n    {{{    89,   -921,  -1535}, 0, {     0,    990}, {0x45, 0x4c, 0x4e, 0xff}}},\n    {{{    89,   1229,  -1381}, 0, {   734,  -9740}, {0x45, 0x4c, 0x4e, 0xff}}},\n    {{{   -64,   -921,  -1381}, 0, {     0,    990}, {0x7b, 0x76, 0x65, 0xff}}},\n    {{{    89,   1229,  -1381}, 0, {   734,  -9740}, {0x7b, 0x76, 0x65, 0xff}}},\n    {{{   -64,   1229,  -1381}, 0, {     0,  -9740}, {0x7b, 0x76, 0x65, 0xff}}},\n    {{{    89,   -921,  -1381}, 0, {   734,    990}, {0x7b, 0x76, 0x65, 0xff}}},\n    {{{ -1125,   1843,  -1125}, 0, {   224,  -2630}, {0x65, 0xff, 0xcc, 0xff}}},\n    {{{  -409,   1843,   -306}, 0, {  2608,  -1266}, {0x65, 0xff, 0xcc, 0xff}}},\n    {{{  1126,   1843,  -1125}, 0, {  7718,  -2630}, {0x65, 0xff, 0xcc, 0xff}}},\n    {{{   410,   1843,   -306}, 0, {  5334,  -1266}, {0x65, 0xff, 0xcc, 0xff}}},\n    {{{   410,   1843,    307}, 0, {  5334,   -244}, {0x65, 0xff, 0xcc, 0xff}}},\n    {{{  1126,   1843,   1126}, 0, {  7718,   1116}, {0x65, 0xff, 0xcc, 0xff}}},\n    {{{ -1125,   1843,   1126}, 0, {   224,   1116}, {0x65, 0xff, 0xcc, 0xff}}},\n    {{{  -409,   1843,    307}, 0, {  2608,   -244}, {0x65, 0xff, 0xcc, 0xff}}},\n};\n\n// 0x07010540 - 0x07010630\nstatic const Vtx rr_seg7_vertex_07010540[] = {\n    {{{  1741,   1331,  -1023}, 0, {  6576,    990}, {0x52, 0xac, 0x9d, 0xff}}},\n    {{{  1126,   1843,  -1125}, 0, {  6918,  -1670}, {0x52, 0xac, 0x9d, 0xff}}},\n    {{{  1126,   1843,   1126}, 0, {  -576,  -1670}, {0x52, 0xac, 0x9d, 0xff}}},\n    {{{  1318,   2595,  -1450}, 0, {   540,  -3346}, {0x52, 0xac, 0x9d, 0xff}}},\n    {{{  1968,   1331,  -1517}, 0, {  1780,    990}, {0x52, 0xac, 0x9d, 0xff}}},\n    {{{  1620,   1331,  -1922}, 0, {     2,    990}, {0x52, 0xac, 0x9d, 0xff}}},\n    {{{ -1619,   1331,  -1922}, 0, {     2,    990}, {0x52, 0xac, 0x9d, 0xff}}},\n    {{{ -1967,   1331,  -1517}, 0, {  1780,    990}, {0x52, 0xac, 0x9d, 0xff}}},\n    {{{ -1317,   2595,  -1450}, 0, {   540,  -3346}, {0x52, 0xac, 0x9d, 0xff}}},\n    {{{ -1317,   2595,   1451}, 0, {   540,  -3346}, {0x52, 0xac, 0x9d, 0xff}}},\n    {{{ -1967,   1331,   1518}, 0, {  1780,    990}, {0x52, 0xac, 0x9d, 0xff}}},\n    {{{ -1619,   1331,   1923}, 0, {     2,    990}, {0x52, 0xac, 0x9d, 0xff}}},\n    {{{  1620,   1331,   1923}, 0, {     2,    990}, {0x52, 0xac, 0x9d, 0xff}}},\n    {{{  1968,   1331,   1518}, 0, {  1780,    990}, {0x52, 0xac, 0x9d, 0xff}}},\n    {{{  1318,   2595,   1451}, 0, {   540,  -3346}, {0x52, 0xac, 0x9d, 0xff}}},\n};\n\n// 0x07010630 - 0x07010730\nstatic const Vtx rr_seg7_vertex_07010630[] = {\n    {{{ -1125,   1843,  -1125}, 0, {   156,  -1670}, {0x52, 0xac, 0x9d, 0xff}}},\n    {{{ -1740,   1331,  -1023}, 0, {   496,    990}, {0x52, 0xac, 0x9d, 0xff}}},\n    {{{ -1740,   1331,   1024}, 0, {  7310,    990}, {0x52, 0xac, 0x9d, 0xff}}},\n    {{{  1741,   1331,  -1023}, 0, {  6576,    990}, {0x52, 0xac, 0x9d, 0xff}}},\n    {{{  1126,   1843,   1126}, 0, {  -576,  -1670}, {0x52, 0xac, 0x9d, 0xff}}},\n    {{{  1741,   1331,   1024}, 0, {  -234,    990}, {0x52, 0xac, 0x9d, 0xff}}},\n    {{{ -1125,   1843,   1126}, 0, {  7650,  -1670}, {0x52, 0xac, 0x9d, 0xff}}},\n    {{{ -1125,   1331,  -1740}, 0, {     0,    990}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{ -1619,   1331,  -1922}, 0, {  1718,    990}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{ -1317,   2595,  -1450}, 0, {   230,  -3364}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  1741,   1331,  -1023}, 0, {     0,   1022}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  1318,   2595,  -1450}, 0, {     0,  -3322}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  1126,   1843,  -1125}, 0, {  2056,  -1278}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  1318,   2595,  -1450}, 0, {   230,  -3364}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  1620,   1331,  -1922}, 0, {  1718,    990}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  1126,   1331,  -1740}, 0, {     0,    990}, {0x3f, 0xbf, 0xaa, 0xff}}},\n};\n\n// 0x07010730 - 0x07010820\nstatic const Vtx rr_seg7_vertex_07010730[] = {\n    {{{  1126,   1843,  -1125}, 0, {  -896,  -1004}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  1318,   2595,  -1450}, 0, {   990,  -3372}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  1126,   1331,  -1740}, 0, {   990,    990}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{ -1125,   1331,  -1740}, 0, {   990,    990}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{ -1317,   2595,  -1450}, 0, {   990,  -3372}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{ -1125,   1843,  -1125}, 0, {  -896,  -1004}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  1126,   1331,   1741}, 0, {   990,    990}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  1318,   2595,   1451}, 0, {   990,  -3372}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  1126,   1843,   1126}, 0, {  -896,  -1004}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{ -1125,   1843,  -1125}, 0, {  2056,  -1278}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{ -1317,   2595,  -1450}, 0, {     0,  -3322}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{ -1740,   1331,  -1023}, 0, {     0,   1022}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{ -1740,   1331,   1024}, 0, {     0,   1022}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{ -1317,   2595,   1451}, 0, {     0,  -3322}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{ -1125,   1843,   1126}, 0, {  2056,  -1278}, {0x3f, 0xbf, 0xaa, 0xff}}},\n};\n\n// 0x07010820 - 0x07010920\nstatic const Vtx rr_seg7_vertex_07010820[] = {\n    {{{ -1317,   2595,   1451}, 0, {   230,  -3364}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{ -1619,   1331,   1923}, 0, {  1718,    990}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{ -1125,   1331,   1741}, 0, {     0,    990}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{ -1125,   1843,   1126}, 0, {  -896,  -1004}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{ -1317,   2595,   1451}, 0, {   990,  -3372}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{ -1125,   1331,   1741}, 0, {   990,    990}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  1126,   1331,   1741}, 0, {     0,    990}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  1620,   1331,   1923}, 0, {  1718,    990}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  1318,   2595,   1451}, 0, {   230,  -3364}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  1126,   1843,   1126}, 0, {  2056,  -1278}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  1318,   2595,   1451}, 0, {     0,  -3322}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  1741,   1331,   1024}, 0, {     0,   1022}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{ -1125,   1331,  -1740}, 0, {  7088,    990}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{ -1125,   1843,  -1125}, 0, {  7088,  -1670}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  1126,   1843,  -1125}, 0, {  -404,  -1670}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  1126,   1331,  -1740}, 0, {  -404,    990}, {0x3f, 0xbf, 0xaa, 0xff}}},\n};\n\n// 0x07010920 - 0x07010A10\nstatic const Vtx rr_seg7_vertex_07010920[] = {\n    {{{  1126,   1331,   1741}, 0, {  7462,    990}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  1126,   1843,   1126}, 0, {  7462,  -1670}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{ -1125,   1843,   1126}, 0, {     0,  -1670}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{ -1125,   1331,   1741}, 0, {     0,    990}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{   410,   1638,   -306}, 0, {  5334,  -1266}, {0x00, 0x35, 0x35, 0xff}}},\n    {{{  1126,   1638,  -1125}, 0, {  7718,  -2630}, {0x00, 0x35, 0x35, 0xff}}},\n    {{{  1126,   1638,   1126}, 0, {  7718,   1116}, {0x00, 0x35, 0x35, 0xff}}},\n    {{{ -1125,   1638,  -1125}, 0, {   224,  -2630}, {0x00, 0x35, 0x35, 0xff}}},\n    {{{  -409,   1638,   -306}, 0, {  2608,  -1266}, {0x00, 0x35, 0x35, 0xff}}},\n    {{{   410,   1638,    307}, 0, {  5334,   -244}, {0x00, 0x35, 0x35, 0xff}}},\n    {{{ -1125,   1638,   1126}, 0, {   224,   1116}, {0x00, 0x35, 0x35, 0xff}}},\n    {{{  -409,   1638,    307}, 0, {  2608,   -244}, {0x00, 0x35, 0x35, 0xff}}},\n    {{{ -1125,   1638,   1126}, 0, {  7122,  -1234}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{ -1535,   1331,   1126}, 0, {  7122,    466}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{ -1125,   1638,  -1125}, 0, {  -370,  -1234}, {0x00, 0x43, 0x43, 0xff}}},\n};\n\n// 0x07010A10 - 0x07010B00\nstatic const Vtx rr_seg7_vertex_07010A10[] = {\n    {{{  1229,   1331,  -1535}, 0, { -1216,   1060}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{  1208,   1331,  -1392}, 0, {  -806,    820}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{  1126,   1638,  -1125}, 0, {  -152,   -700}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{  1229,   1331,   1536}, 0, {   990,    990}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{  1126,   1638,   1126}, 0, {   -70,   -772}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{  1208,   1331,   1393}, 0, {   582,    748}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{ -1125,   1638,  -1125}, 0, {   -70,   -772}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{ -1207,   1331,  -1392}, 0, {   582,    748}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{ -1228,   1331,  -1535}, 0, {   990,    990}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{ -1125,   1638,   1126}, 0, {  1030,   -772}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{ -1228,   1331,   1536}, 0, {     0,    990}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{ -1207,   1331,   1393}, 0, {   376,    748}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{  1126,   1638,  -1125}, 0, {  7122,  -1250}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{  1536,   1331,  -1074}, 0, {  6952,    452}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{  1536,   1331,   1075}, 0, {  -200,    452}, {0x00, 0x43, 0x43, 0xff}}},\n};\n\n// 0x07010B00 - 0x07010BE0\nstatic const Vtx rr_seg7_vertex_07010B00[] = {\n    {{{ -1535,   1331,   1126}, 0, {  7122,    466}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{ -1535,   1331,  -1125}, 0, {  -370,    466}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{ -1125,   1638,  -1125}, 0, {  -370,  -1234}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{  1126,   1638,  -1125}, 0, {  7122,  -1250}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{  1536,   1331,   1075}, 0, {  -200,    452}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{  1126,   1638,   1126}, 0, {  -370,  -1250}, {0x00, 0x43, 0x43, 0xff}}},\n    {{{  1126,   1638,   1126}, 0, {  7462,  -1234}, {0x00, 0x50, 0x50, 0xff}}},\n    {{{  1229,   1331,   1536}, 0, {  7804,    466}, {0x00, 0x50, 0x50, 0xff}}},\n    {{{ -1125,   1638,   1126}, 0, {     0,  -1234}, {0x00, 0x50, 0x50, 0xff}}},\n    {{{ -1228,   1331,   1536}, 0, {  -370,    466}, {0x00, 0x50, 0x50, 0xff}}},\n    {{{  1229,   1331,  -1535}, 0, {  -370,    466}, {0x00, 0x50, 0x50, 0xff}}},\n    {{{ -1125,   1638,  -1125}, 0, {  7462,  -1234}, {0x00, 0x50, 0x50, 0xff}}},\n    {{{ -1228,   1331,  -1535}, 0, {  7804,    466}, {0x00, 0x50, 0x50, 0xff}}},\n    {{{  1126,   1638,  -1125}, 0, {     0,  -1234}, {0x00, 0x50, 0x50, 0xff}}},\n};\n\n// 0x07010BE0 - 0x07010CD0\nstatic const Vtx rr_seg7_vertex_07010BE0[] = {\n    {{{ -1125,   1638,  -1125}, 0, {   -70,   -772}, {0x00, 0x50, 0x50, 0xff}}},\n    {{{ -1392,   1331,  -1146}, 0, {  -644,    748}, {0x00, 0x50, 0x50, 0xff}}},\n    {{{ -1207,   1331,  -1392}, 0, {   582,    748}, {0x00, 0x50, 0x50, 0xff}}},\n    {{{  1208,   1331,  -1392}, 0, {  -806,    820}, {0x00, 0x50, 0x50, 0xff}}},\n    {{{  1393,   1331,  -1146}, 0, {   418,    820}, {0x00, 0x50, 0x50, 0xff}}},\n    {{{  1126,   1638,  -1125}, 0, {  -152,   -700}, {0x00, 0x50, 0x50, 0xff}}},\n    {{{  1393,   1331,   1147}, 0, {  -644,    748}, {0x00, 0x50, 0x50, 0xff}}},\n    {{{  1208,   1331,   1393}, 0, {   582,    748}, {0x00, 0x50, 0x50, 0xff}}},\n    {{{  1126,   1638,   1126}, 0, {   -70,   -772}, {0x00, 0x50, 0x50, 0xff}}},\n    {{{ -1125,   1638,   1126}, 0, {  1030,   -772}, {0x00, 0x50, 0x50, 0xff}}},\n    {{{ -1207,   1331,   1393}, 0, {   376,    748}, {0x00, 0x50, 0x50, 0xff}}},\n    {{{ -1392,   1331,   1147}, 0, {  1604,    748}, {0x00, 0x50, 0x50, 0xff}}},\n    {{{   410,   1638,    307}, 0, {   650,  -2076}, {0x00, 0x5d, 0x5d, 0xff}}},\n    {{{   410,   1843,   -306}, 0, { -1392,  -2076}, {0x00, 0x5d, 0x5d, 0xff}}},\n    {{{   410,   1638,   -306}, 0, { -1392,  -2076}, {0x00, 0x5d, 0x5d, 0xff}}},\n};\n\n// 0x07010CD0 - 0x07010DC0\nstatic const Vtx rr_seg7_vertex_07010CD0[] = {\n    {{{  1126,   1638,  -1125}, 0, {  -152,   -700}, {0x00, 0x5d, 0x5d, 0xff}}},\n    {{{  1393,   1331,  -1146}, 0, {   418,    820}, {0x00, 0x5d, 0x5d, 0xff}}},\n    {{{  1536,   1331,  -1074}, 0, {   990,    990}, {0x00, 0x5d, 0x5d, 0xff}}},\n    {{{  1536,   1331,   1075}, 0, { -1216,    918}, {0x00, 0x5d, 0x5d, 0xff}}},\n    {{{  1393,   1331,   1147}, 0, {  -644,    748}, {0x00, 0x5d, 0x5d, 0xff}}},\n    {{{  1126,   1638,   1126}, 0, {   -70,   -772}, {0x00, 0x5d, 0x5d, 0xff}}},\n    {{{ -1125,   1638,  -1125}, 0, {   -70,   -772}, {0x00, 0x5d, 0x5d, 0xff}}},\n    {{{ -1535,   1331,  -1125}, 0, { -1052,    990}, {0x00, 0x5d, 0x5d, 0xff}}},\n    {{{ -1392,   1331,  -1146}, 0, {  -644,    748}, {0x00, 0x5d, 0x5d, 0xff}}},\n    {{{ -1125,   1638,   1126}, 0, {  1030,   -772}, {0x00, 0x5d, 0x5d, 0xff}}},\n    {{{ -1392,   1331,   1147}, 0, {  1604,    748}, {0x00, 0x5d, 0x5d, 0xff}}},\n    {{{ -1535,   1331,   1126}, 0, {  2012,    990}, {0x00, 0x5d, 0x5d, 0xff}}},\n    {{{  -409,   1638,   -306}, 0, { -1392,    650}, {0x00, 0x5d, 0x5d, 0xff}}},\n    {{{  -409,   1843,   -306}, 0, { -1392,    650}, {0x00, 0x5d, 0x5d, 0xff}}},\n    {{{  -409,   1843,    307}, 0, {   650,    650}, {0x00, 0x5d, 0x5d, 0xff}}},\n};\n\n// 0x07010DC0 - 0x07010EA0\nstatic const Vtx rr_seg7_vertex_07010DC0[] = {\n    {{{   410,   1638,    307}, 0, {   650,  -2076}, {0x00, 0x5d, 0x5d, 0xff}}},\n    {{{   410,   1843,    307}, 0, {   650,  -2076}, {0x00, 0x5d, 0x5d, 0xff}}},\n    {{{   410,   1843,   -306}, 0, { -1392,  -2076}, {0x00, 0x5d, 0x5d, 0xff}}},\n    {{{  -409,   1638,   -306}, 0, { -1392,    650}, {0x00, 0x5d, 0x5d, 0xff}}},\n    {{{  -409,   1843,    307}, 0, {   650,    650}, {0x00, 0x5d, 0x5d, 0xff}}},\n    {{{  -409,   1638,    307}, 0, {   650,    650}, {0x00, 0x5d, 0x5d, 0xff}}},\n    {{{  -409,   1638,    307}, 0, {  2352,   -372}, {0x00, 0x78, 0x78, 0xff}}},\n    {{{  -409,   1843,    307}, 0, {  2352,   -372}, {0x00, 0x78, 0x78, 0xff}}},\n    {{{   410,   1843,    307}, 0, {  5078,   -372}, {0x00, 0x78, 0x78, 0xff}}},\n    {{{   410,   1638,    307}, 0, {  5078,   -372}, {0x00, 0x78, 0x78, 0xff}}},\n    {{{   410,   1638,   -306}, 0, {  5078,  -1394}, {0x00, 0x78, 0x78, 0xff}}},\n    {{{   410,   1843,   -306}, 0, {  5078,  -1394}, {0x00, 0x78, 0x78, 0xff}}},\n    {{{  -409,   1843,   -306}, 0, {  2352,  -1394}, {0x00, 0x78, 0x78, 0xff}}},\n    {{{  -409,   1638,   -306}, 0, {  2352,  -1394}, {0x00, 0x78, 0x78, 0xff}}},\n};\n\n// 0x07010EA0 - 0x07010FA0\nstatic const Vtx rr_seg7_vertex_07010EA0[] = {\n    {{{   614,  -1436,   -613}, 0, {  2524,    990}, {0x50, 0x45, 0x00, 0xff}}},\n    {{{  1126,  -1436,   -613}, 0, {     0,    990}, {0x50, 0x45, 0x00, 0xff}}},\n    {{{  1126,  -1436,    717}, 0, {     0,   7632}, {0x50, 0x45, 0x00, 0xff}}},\n    {{{   614,  -1436,    717}, 0, {  2524,   7632}, {0x50, 0x45, 0x00, 0xff}}},\n    {{{   614,  -1385,    717}, 0, {     0,    990}, {0x6f, 0x7f, 0x67, 0xff}}},\n    {{{  1126,  -1385,    717}, 0, {  2522,    990}, {0x6f, 0x7f, 0x67, 0xff}}},\n    {{{  1126,  -1385,   -613}, 0, {  2522,   -118}, {0x6f, 0x7f, 0x67, 0xff}}},\n    {{{   614,  -1385,   -613}, 0, {     0,   -118}, {0x6f, 0x7f, 0x67, 0xff}}},\n    {{{   614,  -1436,    717}, 0, {   990,   7630}, {0x4a, 0x5e, 0x33, 0xff}}},\n    {{{   614,  -1385,    717}, 0, {   734,   7630}, {0x4a, 0x5e, 0x33, 0xff}}},\n    {{{   614,  -1385,   -613}, 0, {   734,    990}, {0x4a, 0x5e, 0x33, 0xff}}},\n    {{{   614,  -1436,   -613}, 0, {   990,    990}, {0x4a, 0x5e, 0x33, 0xff}}},\n    {{{  1126,  -1436,   -613}, 0, {   990,    990}, {0x4a, 0x5e, 0x33, 0xff}}},\n    {{{  1126,  -1385,    717}, 0, {   734,   7630}, {0x4a, 0x5e, 0x33, 0xff}}},\n    {{{  1126,  -1436,    717}, 0, {   990,   7630}, {0x4a, 0x5e, 0x33, 0xff}}},\n    {{{  1126,  -1385,   -613}, 0, {   734,    990}, {0x4a, 0x5e, 0x33, 0xff}}},\n};\n\n// 0x07010FA0 - 0x07011020\nstatic const Vtx rr_seg7_vertex_07010FA0[] = {\n    {{{   614,  -1436,   -613}, 0, {  2524,    990}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   614,  -1385,   -613}, 0, {  2524,    990}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  1126,  -1385,   -613}, 0, {     0,    990}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  1126,  -1436,   -613}, 0, {     0,    990}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  1126,  -1436,    717}, 0, {     0,   7632}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  1126,  -1385,    717}, 0, {     0,   7632}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   614,  -1385,    717}, 0, {  2524,   7632}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   614,  -1436,    717}, 0, {  2524,   7632}, {0x35, 0x4c, 0x2b, 0xff}}},\n};\n\n// 0x07011020 - 0x07011120\nstatic const Vtx rr_seg7_vertex_07011020[] = {\n    {{{  -346,  -1125,  -1535}, 0, {  1374,    606}, {0x3a, 0x49, 0x44, 0xff}}},\n    {{{  -346,  -1125,  -1330}, 0, {   862,     96}, {0x3a, 0x49, 0x44, 0xff}}},\n    {{{  -141,   -921,  -1330}, 0, {  1374,   -416}, {0x3a, 0x49, 0x44, 0xff}}},\n    {{{  -141,   -921,  -1535}, 0, {  1884,     96}, {0x3a, 0x49, 0x44, 0xff}}},\n    {{{   165,   -921,  -1535}, 0, {  1884,     96}, {0x3a, 0x49, 0x44, 0xff}}},\n    {{{   370,  -1125,  -1330}, 0, {   862,     96}, {0x3a, 0x49, 0x44, 0xff}}},\n    {{{   370,  -1125,  -1535}, 0, {  1374,    606}, {0x3a, 0x49, 0x44, 0xff}}},\n    {{{   165,   -921,  -1330}, 0, {  1374,   -416}, {0x3a, 0x49, 0x44, 0xff}}},\n    {{{  -346,  -1484,  -1535}, 0, {   478,   1498}, {0x29, 0x39, 0x3d, 0xff}}},\n    {{{  -346,  -1125,  -1330}, 0, {   862,     96}, {0x29, 0x39, 0x3d, 0xff}}},\n    {{{  -346,  -1125,  -1535}, 0, {  1374,    606}, {0x29, 0x39, 0x3d, 0xff}}},\n    {{{  -346,  -1484,  -1330}, 0, {     0,    990}, {0x29, 0x39, 0x3d, 0xff}}},\n    {{{   370,  -1125,  -1535}, 0, {  1374,    606}, {0x29, 0x39, 0x3d, 0xff}}},\n    {{{   370,  -1125,  -1330}, 0, {   862,     96}, {0x29, 0x39, 0x3d, 0xff}}},\n    {{{   370,  -1484,  -1330}, 0, {     0,    990}, {0x29, 0x39, 0x3d, 0xff}}},\n    {{{   370,  -1484,  -1535}, 0, {   478,   1498}, {0x29, 0x39, 0x3d, 0xff}}},\n};\n\n// 0x07011120 - 0x07011220\nstatic const Vtx rr_seg7_vertex_07011120[] = {\n    {{{  -141,   -921,  -1535}, 0, {  1502,    990}, {0x67, 0x72, 0x67, 0xff}}},\n    {{{  -141,   -921,  -1330}, 0, {  1502,   2010}, {0x67, 0x72, 0x67, 0xff}}},\n    {{{   165,   -921,  -1330}, 0, {     0,   2010}, {0x67, 0x72, 0x67, 0xff}}},\n    {{{   165,   -921,  -1535}, 0, {     0,    990}, {0x67, 0x72, 0x67, 0xff}}},\n    {{{   370,  -1125,  -1330}, 0, {  2650,   1882}, {0x4b, 0x58, 0x57, 0xff}}},\n    {{{   165,   -921,  -1330}, 0, {  2650,    862}, {0x4b, 0x58, 0x57, 0xff}}},\n    {{{    63,  -1177,  -1330}, 0, {  1756,   1244}, {0x4b, 0x58, 0x57, 0xff}}},\n    {{{  -141,   -921,  -1330}, 0, {  1884,     96}, {0x4b, 0x58, 0x57, 0xff}}},\n    {{{   -38,  -1177,  -1330}, 0, {  1500,    990}, {0x4b, 0x58, 0x57, 0xff}}},\n    {{{  -346,  -1125,  -1330}, 0, {   862,     96}, {0x4b, 0x58, 0x57, 0xff}}},\n    {{{  -141,  -1279,  -1330}, 0, {   990,    990}, {0x4b, 0x58, 0x57, 0xff}}},\n    {{{   165,  -1279,  -1330}, 0, {  1756,   1754}, {0x4b, 0x58, 0x57, 0xff}}},\n    {{{   165,  -1484,  -1330}, 0, {  1246,   2266}, {0x4b, 0x58, 0x57, 0xff}}},\n    {{{   370,  -1484,  -1330}, 0, {  1756,   2776}, {0x4b, 0x58, 0x57, 0xff}}},\n    {{{  -346,  -1484,  -1330}, 0, {     0,    990}, {0x4b, 0x58, 0x57, 0xff}}},\n    {{{  -141,  -1484,  -1330}, 0, {   478,   1498}, {0x4b, 0x58, 0x57, 0xff}}},\n};\n\n// 0x07011220 - 0x07011310\nstatic const Vtx rr_seg7_vertex_07011220[] = {\n    {{{   -64,   1331,  -1535}, 0, {   830,    894}, {0x6f, 0x7f, 0x67, 0xff}}},\n    {{{    89,   1229,  -1381}, 0, {   830,    510}, {0x6f, 0x7f, 0x67, 0xff}}},\n    {{{    89,   1331,  -1535}, 0, {  1022,    702}, {0x6f, 0x7f, 0x67, 0xff}}},\n    {{{   -64,   1229,  -1381}, 0, {   638,    702}, {0x6f, 0x7f, 0x67, 0xff}}},\n    {{{  -141,  -1509,  -1484}, 0, {   416,   1562}, {0xff, 0x00, 0x00, 0xff}}},\n    {{{   165,  -1509,  -1484}, 0, {  1182,   2330}, {0xff, 0x00, 0x00, 0xff}}},\n    {{{   165,  -1100,  -1484}, 0, {  2204,   1308}, {0xff, 0x00, 0x00, 0xff}}},\n    {{{  -141,  -1100,  -1484}, 0, {  1438,    542}, {0xff, 0x00, 0x00, 0xff}}},\n    {{{ -1535,  -1535,  -1125}, 0, {  -200,    820}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1392,   1331,  -1146}, 0, {  4738,  -3780}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1535,   1331,  -1125}, 0, {  4566,  -3950}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1536,   1331,  -1074}, 0, {  5486,  -3030}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1393,   1331,  -1146}, 0, {  5248,  -3268}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1393,  -1535,  -1146}, 0, {   480,   1500}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1536,  -1535,  -1074}, 0, {   718,   1738}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x07011310 - 0x07011410\nstatic const Vtx rr_seg7_vertex_07011310[] = {\n    {{{ -1535,   1331,   1126}, 0, {  5350,  -3166}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1392,   1331,   1147}, 0, {  5520,  -2996}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1392,  -1535,   1147}, 0, {   752,   1772}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1535,  -1535,   1126}, 0, {   582,   1602}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1536,  -1535,   1075}, 0, {   -64,    956}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1393,  -1535,   1147}, 0, {  -302,    718}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1393,   1331,   1147}, 0, {  4464,  -4052}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1536,   1331,   1075}, 0, {  4704,  -3814}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   473,  -1484,  -1228}, 0, {  -668,   -160}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   370,  -1484,  -1535}, 0, {  -158,   -416}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   370,  -1484,  -1330}, 0, {  -414,   -160}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1535,  -1535,  -1125}, 0, {  -200,    820}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1392,  -1535,  -1146}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1392,   1331,  -1146}, 0, {  4738,  -3780}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -346,  -1484,  -1330}, 0, {   480,    734}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -448,  -1484,  -1228}, 0, {   480,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x07011410 - 0x070114F0\nstatic const Vtx rr_seg7_vertex_07011410[] = {\n    {{{  -346,  -1484,  -1330}, 0, {   480,    734}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -346,  -1484,  -1535}, 0, {   734,    478}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -448,  -1484,  -1535}, 0, {   862,    606}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -448,  -1484,  -1228}, 0, {   480,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   473,  -1484,  -1228}, 0, {  -668,   -160}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   473,  -1484,  -1535}, 0, {  -286,   -544}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   370,  -1484,  -1535}, 0, {  -158,   -416}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1228,   1331,  -1535}, 0, {  5418,  -3098}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1207,   1331,  -1392}, 0, {  5248,  -3268}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1207,  -1535,  -1392}, 0, {   480,   1500}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1229,  -1535,  -1535}, 0, {  -200,    820}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1208,  -1535,  -1392}, 0, {     0,    990}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1229,   1331,  -1535}, 0, {  4568,  -3950}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1208,   1331,  -1392}, 0, {  4738,  -3780}, {0x44, 0x44, 0x44, 0xff}}},\n};\n\n// 0x070114F0 - 0x070115D0\nstatic const Vtx rr_seg7_vertex_070114F0[] = {\n    {{{ -1228,  -1535,   1536}, 0, {  1432,   2452}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1207,  -1535,   1393}, 0, {  1262,   2282}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1207,   1331,   1393}, 0, {  6032,  -2484}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1228,   1331,   1536}, 0, {  6202,  -2314}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1229,   1331,   1536}, 0, {  3784,  -4734}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1208,   1331,   1393}, 0, {  3954,  -4562}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1208,  -1535,   1393}, 0, {  -814,    206}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1229,  -1535,   1536}, 0, {  -984,     36}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -448,  -1535,  -1228}, 0, {   480,    990}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -448,  -1484,  -1535}, 0, {   862,    606}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -448,  -1535,  -1535}, 0, {   862,    606}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1228,   1331,  -1535}, 0, {  5418,  -3098}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1207,  -1535,  -1392}, 0, {   480,   1500}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1228,  -1535,  -1535}, 0, {   650,   1670}, {0x44, 0x44, 0x44, 0xff}}},\n};\n\n// 0x070115D0 - 0x070116B0\nstatic const Vtx rr_seg7_vertex_070115D0[] = {\n    {{{   473,  -1535,  -1535}, 0, {  -286,   -544}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   473,  -1484,  -1535}, 0, {  -286,   -544}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   473,  -1484,  -1228}, 0, {  -668,   -160}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   473,  -1535,  -1228}, 0, {  -668,   -160}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -448,  -1535,  -1228}, 0, {   480,    990}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -448,  -1484,  -1228}, 0, {   480,    990}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -448,  -1484,  -1535}, 0, {   862,    606}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -1207,   1331,  -1392}, 0, {  5248,  -3268}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1392,   1331,  -1146}, 0, {  4738,  -3780}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1207,  -1535,  -1392}, 0, {   480,   1500}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1208,  -1535,  -1392}, 0, {     0,    990}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1393,  -1535,  -1146}, 0, {   480,   1500}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1393,   1331,  -1146}, 0, {  5248,  -3268}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1208,   1331,  -1392}, 0, {  4738,  -3780}, {0x55, 0x55, 0x55, 0xff}}},\n};\n\n// 0x070116B0 - 0x070117A0\nstatic const Vtx rr_seg7_vertex_070116B0[] = {\n    {{{ -1207,  -1535,   1393}, 0, {  1262,   2282}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1392,  -1535,   1147}, 0, {   752,   1772}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1207,   1331,   1393}, 0, {  6032,  -2484}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1392,   1331,   1147}, 0, {  5520,  -2996}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1208,   1331,   1393}, 0, {  3954,  -4562}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1393,   1331,   1147}, 0, {  4464,  -4052}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1208,  -1535,   1393}, 0, {  -814,    206}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1393,  -1535,   1147}, 0, {  -302,    718}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -448,  -1535,  -1228}, 0, {   480,    990}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   473,  -1484,  -1228}, 0, {  -668,   -160}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -448,  -1484,  -1228}, 0, {   480,    990}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1392,   1331,  -1146}, 0, {  4738,  -3780}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1392,  -1535,  -1146}, 0, {     0,    990}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1207,  -1535,  -1392}, 0, {   480,   1500}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   473,  -1535,  -1228}, 0, {  -668,   -160}, {0x55, 0x55, 0x55, 0xff}}},\n};\n\n// 0x070117A0 - 0x070118A0\nstatic const Vtx rr_seg7_vertex_070117A0[] = {\n    {{{   165,  -1535,  -1535}, 0, {   352,   1626}, {0xc8, 0x00, 0x00, 0xff}}},\n    {{{   165,  -1535,  -1330}, 0, {  -158,   1116}, {0xc8, 0x00, 0x00, 0xff}}},\n    {{{   165,  -1279,  -1330}, 0, {   478,    478}, {0xc8, 0x00, 0x00, 0xff}}},\n    {{{   165,  -1279,  -1535}, 0, {   990,    990}, {0xc8, 0x00, 0x00, 0xff}}},\n    {{{  -141,  -1279,  -1535}, 0, {   990,    990}, {0xc8, 0x00, 0x00, 0xff}}},\n    {{{  -141,  -1279,  -1330}, 0, {   478,    478}, {0xc8, 0x00, 0x00, 0xff}}},\n    {{{  -141,  -1535,  -1330}, 0, {  -158,   1116}, {0xc8, 0x00, 0x00, 0xff}}},\n    {{{  -141,  -1535,  -1535}, 0, {   352,   1626}, {0xc8, 0x00, 0x00, 0xff}}},\n    {{{  -141,  -1509,  -1330}, 0, {  5078,   6098}, {0xc8, 0x00, 0x00, 0xff}}},\n    {{{   165,  -1509,  -1535}, 0, {  8758,   5894}, {0xc8, 0x00, 0x00, 0xff}}},\n    {{{  -141,  -1509,  -1535}, 0, {  6304,   7734}, {0xc8, 0x00, 0x00, 0xff}}},\n    {{{   165,  -1509,  -1330}, 0, {  7530,   4258}, {0xc8, 0x00, 0x00, 0xff}}},\n    {{{   165,  -1279,  -1535}, 0, {   990,    990}, {0x96, 0x00, 0x00, 0xff}}},\n    {{{    63,  -1177,  -1330}, 0, {   734,    224}, {0x96, 0x00, 0x00, 0xff}}},\n    {{{    63,  -1177,  -1535}, 0, {  1246,    734}, {0x96, 0x00, 0x00, 0xff}}},\n    {{{   165,  -1279,  -1330}, 0, {   478,    478}, {0x96, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070118A0 - 0x07011920\nstatic const Vtx rr_seg7_vertex_070118A0[] = {\n    {{{    63,  -1177,  -1535}, 0, {   224,   1244}, {0x96, 0x00, 0x00, 0xff}}},\n    {{{   -38,  -1177,  -1330}, 0, {   478,    480}, {0x96, 0x00, 0x00, 0xff}}},\n    {{{   -38,  -1177,  -1535}, 0, {     0,    990}, {0x96, 0x00, 0x00, 0xff}}},\n    {{{    63,  -1177,  -1330}, 0, {   734,    734}, {0x96, 0x00, 0x00, 0xff}}},\n    {{{   -38,  -1177,  -1535}, 0, {  1246,    734}, {0x96, 0x00, 0x00, 0xff}}},\n    {{{   -38,  -1177,  -1330}, 0, {   734,    224}, {0x96, 0x00, 0x00, 0xff}}},\n    {{{  -141,  -1279,  -1330}, 0, {   478,    478}, {0x96, 0x00, 0x00, 0xff}}},\n    {{{  -141,  -1279,  -1535}, 0, {   990,    990}, {0x96, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07011920 - 0x07011978\nstatic const Gfx rr_seg7_dl_07011920[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_0700E8B0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  0,  5,  4, 0x0),\n    gsSP2Triangles( 0,  6,  5, 0x0,  0,  2,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07011978 - 0x07012128\nstatic const Gfx rr_seg7_dl_07011978[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_0700E930, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700EA20, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700EB10, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700EBF0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700ECE0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700EDC0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700EEA0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700EFA0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 1,  8,  9, 0x0,  1, 10,  2, 0x0),\n    gsSP2Triangles( 1,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700F080, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  5,  4, 0x0),\n    gsSP2Triangles( 4,  6,  8, 0x0,  7,  9,  5, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700F170, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 0, 10,  1, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700F260, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700F340, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700F430, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700F510, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700F600, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  1,  5,  6, 0x0),\n    gsSP2Triangles( 1,  7,  2, 0x0,  1,  6,  7, 0x0),\n    gsSP2Triangles( 1,  8,  5, 0x0,  8,  9,  5, 0x0),\n    gsSP2Triangles( 3,  9,  8, 0x0,  4,  3,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700F700, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  0,  2, 0x0),\n    gsSP2Triangles( 4,  7,  2, 0x0,  4,  2,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700F7F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 4,  7,  8, 0x0,  4,  8,  9, 0x0),\n    gsSP2Triangles( 4, 10,  5, 0x0,  9, 11,  4, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700F8E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  0,  5,  6, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7, 10,  8, 0x0),\n    gsSP2Triangles( 8, 11, 12, 0x0, 10, 11,  8, 0x0),\n    gsSP2Triangles( 8, 12, 13, 0x0, 13, 12, 14, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700F9E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 3,  0,  2, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700FAE0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 14, 0x0),\n    gsSP1Triangle(10, 14, 11, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700FBD0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 7,  9,  8, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700FCD0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  3,  7,  8, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  3,  8,  9, 0x0),\n    gsSP2Triangles( 3,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700FDB0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700FEA0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700FF80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07010070, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 0, 10,  1, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07010150, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 0,  2,  6, 0x0,  7,  0,  6, 0x0),\n    gsSP2Triangles( 8,  6,  9, 0x0,  8,  7,  6, 0x0),\n    gsSP2Triangles( 4,  8,  9, 0x0,  5,  4,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(14, 15, 10, 0x0, 10, 15, 11, 0x0),\n    gsSPVertex(rr_seg7_vertex_07010250, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07012128 - 0x07012418\nstatic const Gfx rr_seg7_dl_07012128[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_07010340, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07010440, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 10, 11, 0x0, 12, 13, 10, 0x0),\n    gsSP2Triangles(13, 12, 14, 0x0, 12, 15, 14, 0x0),\n    gsSP2Triangles( 9, 14, 15, 0x0,  9,  8, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07010540, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07010630, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  2,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07010730, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07010820, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07010920, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  4,  7, 0x0),\n    gsSP2Triangles( 4,  8,  7, 0x0,  4,  6,  9, 0x0),\n    gsSP2Triangles(10,  9,  6, 0x0, 10, 11,  9, 0x0),\n    gsSP2Triangles(11, 10,  7, 0x0, 11,  7,  8, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07010A10, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07010B00, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(rr_seg7_vertex_07010BE0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07010CD0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07010DC0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07012418 - 0x070124A8\nstatic const Gfx rr_seg7_dl_07012418[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_07010EA0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07010FA0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070124A8 - 0x07012758\nstatic const Gfx rr_seg7_dl_070124A8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_07011020, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07011120, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 8,  7,  9, 0x0, 11,  4,  6, 0x0),\n    gsSP2Triangles(12, 13,  4, 0x0, 12,  4, 11, 0x0),\n    gsSP2Triangles(10,  9, 14, 0x0, 10, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07011220, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07011310, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles( 8, 14, 15, 0x0,  8, 10, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07011410, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_070114F0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_070115D0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_070116B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 8, 14,  9, 0x0),\n    gsSPVertex(rr_seg7_vertex_070117A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_070118A0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07012758 - 0x070127E8\nconst Gfx rr_seg7_dl_07012758[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_07011920),\n    gsSPDisplayList(rr_seg7_dl_07011978),\n    gsSPDisplayList(rr_seg7_dl_07012128),\n    gsSPDisplayList(rr_seg7_dl_07012418),\n    gsSPDisplayList(rr_seg7_dl_070124A8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/15/geo.inc.c",
    "content": "// 0x0E0007A0\nconst GeoLayout rr_geo_0007A0[] = {\n    GEO_CULLING_RADIUS(3500),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, rr_seg7_dl_07014508),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/15/model.inc.c",
    "content": "// 0x070127E8 - 0x070128D8\nstatic const Vtx rr_seg7_vertex_070127E8[] = {\n#ifdef VERSION_JP\n    {{{   768,   -869,  -2252}, 0, {  4056,  -1054}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   358,   -869,  -1842}, 0, {  2012,  -1054}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   768,   -869,  -1842}, 0, {  3034,  -2076}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   358,   -869,  -2252}, 0, {  3034,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   358,   -460,  -2252}, 0, {    96,    862}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1178,   -460,  -2252}, 0, {  2140,   2904}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1178,   -511,  -2252}, 0, {  2012,   3032}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -153,   -869,  -2252}, 0, { -2840,   -288}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   768,   -921,  -2252}, 0, {    96,   2904}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -153,   -921,  -2252}, 0, { -2968,   -160}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   768,   -869,  -2252}, 0, {   224,   2776}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -153,   -921,  -1842}, 0, { -2968,   -160}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   768,   -869,  -1842}, 0, {   224,   2776}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -153,   -869,  -1842}, 0, { -2840,   -288}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   768,   -921,  -1842}, 0, {    96,   2904}, {0x96, 0x96, 0x96, 0xff}}},\n#else\n    {{{   768,   -869,  -2252}, 0, {  4056,  -1054}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   358,   -869,  -1842}, 0, {  2012,  -1054}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   768,   -869,  -1842}, 0, {  3034,  -2076}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   358,   -869,  -2252}, 0, {  3034,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   358,   -460,  -2252}, 0, {    96,    862}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1178,   -511,  -2252}, 0, {  2012,   3032}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   358,   -511,  -2252}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -153,   -869,  -2252}, 0, { -2840,   -288}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   768,   -921,  -2252}, 0, {    96,   2904}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -153,   -921,  -2252}, 0, { -2968,   -160}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   768,   -869,  -2252}, 0, {   224,   2776}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -153,   -921,  -1842}, 0, { -2968,   -160}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   768,   -869,  -1842}, 0, {   224,   2776}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -153,   -869,  -1842}, 0, { -2840,   -288}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   768,   -921,  -1842}, 0, {    96,   2904}, {0x96, 0x96, 0x96, 0xff}}},\n#endif\n};\n\n// 0x070128D8 - 0x070129B8\nstatic const Vtx rr_seg7_vertex_070128D8[] = {\n#ifdef VERSION_JP\n    {{{   358,   -511,  -1842}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1178,   -511,  -1842}, 0, {  2012,   3032}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1178,   -460,  -1842}, 0, {  2140,   2904}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   358,   -460,  -1842}, 0, {    96,    862}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   154,   1126,   2107}, 0, { -2586,  -1566}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1485,   1126,   2107}, 0, {   480,   1498}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1485,   1178,   2107}, 0, {   606,   1372}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   358,   -460,  -2252}, 0, {    96,    862}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1178,   -511,  -2252}, 0, {  2012,   3032}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   358,   -511,  -2252}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -2321,  -1177,  -2269}, 0, { -4118,   5076}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -2321,   -972,  -2269}, 0, { -3606,   5586}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1706,   -972,  -2269}, 0, { -3606,   5586}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1706,  -1177,  -2269}, 0, { -4118,   5076}, {0x96, 0x96, 0x96, 0xff}}},\n#else\n    {{{   358,   -511,  -1842}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1178,   -460,  -1842}, 0, {  2140,   2904}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   358,   -460,  -1842}, 0, {    96,    862}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1178,   -511,  -1842}, 0, {  2012,   3032}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   154,   1126,    673}, 0, { -2586,  -1566}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   461,   1178,    673}, 0, { -1690,   -926}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   461,   1126,    673}, 0, { -1818,   -798}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   358,   -460,  -2252}, 0, {    96,    862}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1178,   -460,  -2252}, 0, {  2140,   2904}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1178,   -511,  -2252}, 0, {  2012,   3032}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1706,  -1177,   -631}, 0, {  4822,  -7442}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -2321,   -972,   -631}, 0, {  3800,  -9486}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -2321,  -1177,   -631}, 0, {  3290,  -8974}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1706,   -972,   -631}, 0, {  5334,  -7952}, {0x96, 0x96, 0x96, 0xff}}},\n#endif\n};\n\n// 0x070129B8 - 0x07012AA8\nstatic const Vtx rr_seg7_vertex_070129B8[] = {\n#ifdef VERSION_JP\n    {{{ -1706,  -1177,   -631}, 0, {  4822,  -7442}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1706,   -972,   -631}, 0, {  5334,  -7952}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -2321,   -972,   -631}, 0, {  3800,  -9486}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -2321,  -1177,   -631}, 0, {  3290,  -8974}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   154,   1126,   2107}, 0, { -2586,  -1566}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1485,   1178,   2107}, 0, {   606,   1372}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   154,   1178,   2107}, 0, { -2458,  -1692}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   154,   1126,    673}, 0, { -2586,  -1566}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   461,   1178,    673}, 0, { -1690,   -926}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   461,   1126,    673}, 0, { -1818,   -798}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   154,   1178,    673}, 0, { -2458,  -1692}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1485,   1126,   1697}, 0, {   480,   1498}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   461,   1178,   1697}, 0, { -1690,   -926}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1485,   1178,   1697}, 0, {   606,   1372}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   461,   1126,   1697}, 0, { -1818,   -798}, {0x96, 0x96, 0x96, 0xff}}},\n#else\n    {{{   154,   1126,   2107}, 0, { -2586,  -1566}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1485,   1178,   2107}, 0, {   606,   1372}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   154,   1178,   2107}, 0, { -2458,  -1692}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1485,   1126,   2107}, 0, {   480,   1498}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   154,   1126,    673}, 0, { -2586,  -1566}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   154,   1178,    673}, 0, { -2458,  -1692}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   461,   1178,    673}, 0, { -1690,   -926}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1485,   1126,   1697}, 0, {   480,   1498}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   461,   1126,   1697}, 0, { -1818,   -798}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   461,   1178,   1697}, 0, { -1690,   -926}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1485,   1178,   1697}, 0, {   606,   1372}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -2321,  -1177,  -2269}, 0, {  3290,  -8974}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -2321,   -972,  -2269}, 0, {  3800,  -9486}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1706,  -1177,  -2269}, 0, {  4822,  -7442}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1706,   -972,  -2269}, 0, {  5334,  -7952}, {0x96, 0x96, 0x96, 0xff}}},\n#endif\n};\n\n// 0x07012AA8 - 0x07012B98\nstatic const Vtx rr_seg7_vertex_07012AA8[] = {\n#ifdef VERSION_JP\n    {{{   358,   -460,  -2252}, 0, {   808,   1828}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1178,   -460,  -1842}, 0, {  1830,  -1236}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1178,   -460,  -2252}, 0, {  2852,   -214}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   973,   1126,   -248}, 0, {  4822,  -1820}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1382,   1126,    161}, 0, {  4822,  -3864}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1382,   1126,   -248}, 0, {  5844,  -2842}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   973,   1126,    161}, 0, {  3800,  -2842}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1382,   1024,   -248}, 0, {  5844,  -2842}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1382,   1024,    161}, 0, {  4822,  -3864}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1587,   1024,    161}, 0, {  5334,  -4376}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1587,   1024,   -248}, 0, {  6356,  -3354}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -562,   1178,   -248}, 0, {   990,   2010}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   461,   1178,    161}, 0, {  2524,  -1564}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   461,   1178,   -248}, 0, {  3546,   -544}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -562,   1178,    161}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n#else\n    {{{   358,   -460,  -2252}, 0, {   808,   1828}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   358,   -460,  -1842}, 0, {  -212,    808}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1178,   -460,  -1842}, 0, {  1830,  -1236}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   973,   1126,   -248}, 0, {  4822,  -1820}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   973,   1126,    161}, 0, {  3800,  -2842}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1382,   1126,    161}, 0, {  4822,  -3864}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1382,   1126,   -248}, 0, {  5844,  -2842}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1382,   1024,   -248}, 0, {  5844,  -2842}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1587,   1024,    161}, 0, {  5334,  -4376}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1587,   1024,   -248}, 0, {  6356,  -3354}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1382,   1024,    161}, 0, {  4822,  -3864}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -562,   1178,   -248}, 0, {   990,   2010}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -562,   1178,    161}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   461,   1178,    161}, 0, {  2524,  -1564}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   461,   1178,   -248}, 0, {  3546,   -544}, {0xc8, 0xc8, 0xc8, 0xff}}},\n#endif\n};\n\n// 0x07012B98 - 0x07012C98\nstatic const Vtx rr_seg7_vertex_07012B98[] = {\n#ifdef VERSION_JP\n    {{{  1485,   1178,   2107}, 0, {  3290,  -2332}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1485,   1178,   1697}, 0, {  4312,  -1310}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   461,   1178,   1697}, 0, {  1756,   1244}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   358,   -460,  -2252}, 0, {   808,   1828}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   358,   -460,  -1842}, 0, {  -212,    808}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1178,   -460,  -1842}, 0, {  1830,  -1236}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -2321,   -972,   -631}, 0, { 13962,  14982}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1706,   -972,   -631}, 0, { 15494,  13448}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1706,   -972,  -2269}, 0, { 19582,  17536}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -2321,   -972,  -2269}, 0, { 18050,  19070}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   154,   1178,   2107}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   461,   1178,    673}, 0, {  4312,   3798}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   154,   1178,    673}, 0, {  3544,   4564}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   358,   -869,  -2252}, 0, {  2268,    734}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -153,   -869,  -2252}, 0, {   990,   2010}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -153,   -869,  -1842}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n#else\n    {{{  1485,   1178,   2107}, 0, {  3290,  -2332}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1485,   1178,   1697}, 0, {  4312,  -1310}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   461,   1178,   1697}, 0, {  1756,   1244}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   358,   -460,  -2252}, 0, {   808,   1828}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1178,   -460,  -1842}, 0, {  1830,  -1236}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1178,   -460,  -2252}, 0, {  2852,   -214}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -2321,   -972,   -631}, 0, { 13962,  14982}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1706,   -972,   -631}, 0, { 15494,  13448}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1706,   -972,  -2269}, 0, { 19582,  17536}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -2321,   -972,  -2269}, 0, { 18050,  19070}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   154,   1178,   2107}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   461,   1178,    673}, 0, {  4312,   3798}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   154,   1178,    673}, 0, {  3544,   4564}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   358,   -869,  -2252}, 0, {  2268,    734}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -153,   -869,  -2252}, 0, {   990,   2010}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -153,   -869,  -1842}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n#endif\n};\n\n// 0x07012C98 - 0x07012D78\nstatic const Vtx rr_seg7_vertex_07012C98[] = {\n#ifdef VERSION_JP\n    {{{   358,   -869,  -2252}, 0, {  2268,    734}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -153,   -869,  -1842}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   358,   -869,  -1842}, 0, {  1246,   -288}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1485,    -50,  -2252}, 0, {-13168,   5752}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{  1178,    -50,  -1842}, 0, {-12226,   5472}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{  1178,    -50,  -2252}, 0, {-12226,   5472}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{  1485,    -50,  -1842}, 0, {-13168,   5752}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{   614,    102,  -2252}, 0, { -3134,   2778}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{   614,    102,  -1842}, 0, { -3134,   2778}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{   461,    102,  -1842}, 0, { -2192,   2500}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{   461,    102,  -2252}, 0, { -2192,   2500}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{   461,    102,  -1842}, 0, { -2192,   2500}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{   614,    102,  -1842}, 0, { -3134,   2778}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{   614,    256,  -1842}, 0, { -2854,   2640}, {0x58, 0x87, 0xb9, 0xff}}},\n#else\n    {{{   358,   -869,  -2252}, 0, {  2268,    734}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -153,   -869,  -1842}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   358,   -869,  -1842}, 0, {  1246,   -288}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1485,    -50,  -2252}, 0, {-13168,   5752}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{  1178,    -50,  -1842}, 0, {-12226,   5472}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{  1178,    -50,  -2252}, 0, {-12226,   5472}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{  1485,    -50,  -1842}, 0, {-13168,   5752}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{   614,    102,  -2252}, 0, { -3134,   2778}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{   461,    102,  -1842}, 0, { -2192,   2500}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{   461,    102,  -2252}, 0, { -2192,   2500}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{   614,    102,  -1842}, 0, { -3134,   2778}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{   461,    102,  -1842}, 0, { -2192,   2500}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{   614,    256,  -1842}, 0, { -2854,   2640}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{   461,    256,  -1842}, 0, { -1914,   2360}, {0x58, 0x87, 0xb9, 0xff}}},\n#endif\n};\n\n// 0x07012D78 - 0x07012E68\nstatic const Vtx rr_seg7_vertex_07012D78[] = {\n#ifdef VERSION_JP\n    {{{  1178,    -50,  -1842}, 0, {-12226,   5472}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  1485,    102,  -1842}, 0, {-12888,   5612}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  1178,    102,  -1842}, 0, {-11948,   5334}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  1485,    -50,  -1842}, 0, {-13168,   5752}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  1178,    102,  -2252}, 0, {-11948,   5334}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  1485,    102,  -2252}, 0, {-12888,   5612}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  1485,    -50,  -2252}, 0, {-13168,   5752}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  1178,    -50,  -2252}, 0, {-12226,   5472}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{   461,    256,  -2252}, 0, { -1914,   2360}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{   614,    256,  -2252}, 0, { -2854,   2640}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{   614,    102,  -2252}, 0, { -3134,   2778}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{   461,    102,  -2252}, 0, { -2192,   2500}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{   461,    102,  -1842}, 0, { -2192,   2500}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{   614,    256,  -1842}, 0, { -2854,   2640}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{   461,    256,  -1842}, 0, { -1914,   2360}, {0x58, 0x87, 0xb9, 0xff}}},\n#else\n    {{{  1178,    -50,  -1842}, 0, {-12226,   5472}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  1485,    -50,  -1842}, 0, {-13168,   5752}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  1485,    102,  -1842}, 0, {-12888,   5612}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  1178,    102,  -1842}, 0, {-11948,   5334}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  1178,    102,  -2252}, 0, {-11948,   5334}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  1485,    102,  -2252}, 0, {-12888,   5612}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  1485,    -50,  -2252}, 0, {-13168,   5752}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  1178,    -50,  -2252}, 0, {-12226,   5472}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{   461,    256,  -2252}, 0, { -1914,   2360}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{   614,    256,  -2252}, 0, { -2854,   2640}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{   614,    102,  -2252}, 0, { -3134,   2778}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{   461,    102,  -2252}, 0, { -2192,   2500}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{   461,    102,  -1842}, 0, { -2192,   2500}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{   614,    102,  -1842}, 0, { -3134,   2778}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{   614,    256,  -1842}, 0, { -2854,   2640}, {0x58, 0x87, 0xb9, 0xff}}},\n#endif\n};\n\n// 0x07012E68 - 0x07012F58\nstatic const Vtx rr_seg7_vertex_07012E68[] = {\n#ifdef VERSION_JP\n    {{{  1178,    102,  -2252}, 0, {-11948,   5334}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{  1485,    102,  -1842}, 0, {-12888,   5612}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{  1485,    102,  -2252}, 0, {-12888,   5612}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{  1178,    102,  -1842}, 0, {-11948,   5334}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{   461,    256,  -2252}, 0, { -1914,   2360}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{   614,    256,  -1842}, 0, { -2854,   2640}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{   614,    256,  -2252}, 0, { -2854,   2640}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{   461,    256,  -1842}, 0, { -1914,   2360}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{   614,    256,  -2252}, 0, { -2854,   2640}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   614,    256,  -1842}, 0, { -2854,   2640}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   614,    102,  -1842}, 0, { -3134,   2778}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  1485,    102,  -2252}, 0, {-12888,   5612}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  1485,    -50,  -1842}, 0, {-13168,   5752}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  1485,    -50,  -2252}, 0, {-13168,   5752}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  1485,    102,  -1842}, 0, {-12888,   5612}, {0x52, 0x7f, 0xac, 0xff}}},\n#else\n    {{{  1178,    102,  -2252}, 0, {-11948,   5334}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{  1178,    102,  -1842}, 0, {-11948,   5334}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{  1485,    102,  -1842}, 0, {-12888,   5612}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{  1485,    102,  -2252}, 0, {-12888,   5612}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{   461,    256,  -2252}, 0, { -1914,   2360}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{   614,    256,  -1842}, 0, { -2854,   2640}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{   614,    256,  -2252}, 0, { -2854,   2640}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{   461,    256,  -1842}, 0, { -1914,   2360}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{   614,    256,  -2252}, 0, { -2854,   2640}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   614,    102,  -1842}, 0, { -3134,   2778}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   614,    102,  -2252}, 0, { -3134,   2778}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  1485,    102,  -2252}, 0, {-12888,   5612}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  1485,    102,  -1842}, 0, {-12888,   5612}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  1485,    -50,  -1842}, 0, {-13168,   5752}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  1485,    -50,  -2252}, 0, {-13168,   5752}, {0x52, 0x7f, 0xac, 0xff}}},\n#endif\n};\n\n// 0x07012F58 - 0x07013038\nstatic const Vtx rr_seg7_vertex_07012F58[] = {\n#ifdef VERSION_JP\n    {{{  1178,    -50,  -2252}, 0, {-12226,   5472}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  1178,    -50,  -1842}, 0, {-12226,   5472}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  1178,    102,  -1842}, 0, {-11948,   5334}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  1178,    102,  -2252}, 0, {-11948,   5334}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   461,    102,  -2252}, 0, { -2192,   2500}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   461,    256,  -1842}, 0, { -1914,   2360}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   461,    256,  -2252}, 0, { -1914,   2360}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   461,    102,  -1842}, 0, { -2192,   2500}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   614,    256,  -2252}, 0, { -2854,   2640}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   614,    102,  -1842}, 0, { -3134,   2778}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   614,    102,  -2252}, 0, { -3134,   2778}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   461,   1178,   -248}, 0, {  2012,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   461,   1126,    161}, 0, {     0,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   461,   1126,   -248}, 0, {  2012,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n#else\n    {{{  1178,    -50,  -2252}, 0, {-12226,   5472}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  1178,    102,  -1842}, 0, {-11948,   5334}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  1178,    102,  -2252}, 0, {-11948,   5334}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  1178,    -50,  -1842}, 0, {-12226,   5472}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   461,    102,  -2252}, 0, { -2192,   2500}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   461,    102,  -1842}, 0, { -2192,   2500}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   461,    256,  -1842}, 0, { -1914,   2360}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   461,    256,  -2252}, 0, { -1914,   2360}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   614,    256,  -2252}, 0, { -2854,   2640}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   614,    256,  -1842}, 0, { -2854,   2640}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   614,    102,  -1842}, 0, { -3134,   2778}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{   461,   1178,   -248}, 0, {  2012,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   461,   1178,    161}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   461,   1126,    161}, 0, {     0,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n#endif\n};\n\n// 0x07013038 - 0x07013128\nstatic const Vtx rr_seg7_vertex_07013038[] = {\n#ifdef VERSION_JP\n    {{{  1382,   1126,   -248}, 0, {  2012,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1382,   1024,    161}, 0, {     0,   1754}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1382,   1024,   -248}, 0, {  2012,   1754}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1382,   1126,    161}, 0, {     0,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   973,   1075,   -248}, 0, {  2012,   1498}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   973,   1126,    161}, 0, {     0,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   973,   1126,   -248}, 0, {  2012,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   973,   1075,    161}, 0, {     0,   1500}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1587,   1024,   -248}, 0, {  2012,   1754}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1587,    922,    161}, 0, {     0,   2266}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1587,    922,   -248}, 0, {  2012,   2266}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1587,   1024,    161}, 0, {     0,   1754}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   768,   -869,  -2252}, 0, {  1118,   1882}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   768,   -869,  -1842}, 0, {    96,    862}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   768,   -921,  -1842}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n#else\n    {{{  1382,   1126,   -248}, 0, {  2012,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1382,   1126,    161}, 0, {     0,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1382,   1024,    161}, 0, {     0,   1754}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1382,   1024,   -248}, 0, {  2012,   1754}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   973,   1075,   -248}, 0, {  2012,   1498}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   973,   1126,    161}, 0, {     0,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   973,   1126,   -248}, 0, {  2012,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   973,   1075,    161}, 0, {     0,   1500}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1587,   1024,   -248}, 0, {  2012,   1754}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1587,    922,    161}, 0, {     0,   2266}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1587,    922,   -248}, 0, {  2012,   2266}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1587,   1024,    161}, 0, {     0,   1754}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   768,   -869,  -2252}, 0, {  1118,   1882}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   768,   -921,  -1842}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   768,   -921,  -2252}, 0, {   990,   2010}, {0x7d, 0x7d, 0x7d, 0xff}}},\n#endif\n};\n\n// 0x07013128 - 0x07013208\nstatic const Vtx rr_seg7_vertex_07013128[] = {\n#ifdef VERSION_JP\n    {{{   461,   1178,   -248}, 0, {  2012,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   461,   1178,    161}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   461,   1126,    161}, 0, {     0,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -562,   1126,    161}, 0, {     0,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -562,   1178,    161}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -562,   1178,   -248}, 0, {  2012,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -562,   1126,   -248}, 0, {  2012,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -153,   -921,  -1842}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -153,   -869,  -2252}, 0, {  1118,   1882}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -153,   -921,  -2252}, 0, {   990,   2010}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -153,   -869,  -1842}, 0, {    96,    862}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   768,   -869,  -2252}, 0, {  1118,   1882}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   768,   -921,  -1842}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   768,   -921,  -2252}, 0, {   990,   2010}, {0x7d, 0x7d, 0x7d, 0xff}}},\n#else\n    {{{   461,   1178,   -248}, 0, {  2012,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   461,   1126,    161}, 0, {     0,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   461,   1126,   -248}, 0, {  2012,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -562,   1126,    161}, 0, {     0,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -562,   1178,    161}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -562,   1178,   -248}, 0, {  2012,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -562,   1126,   -248}, 0, {  2012,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -153,   -921,  -1842}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -153,   -869,  -1842}, 0, {    96,    862}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -153,   -869,  -2252}, 0, {  1118,   1882}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -153,   -921,  -2252}, 0, {   990,   2010}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   768,   -869,  -2252}, 0, {  1118,   1882}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   768,   -869,  -1842}, 0, {    96,    862}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   768,   -921,  -1842}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n#endif\n};\n\n// 0x07013208 - 0x070132F8\nstatic const Vtx rr_seg7_vertex_07013208[] = {\n#ifdef VERSION_JP\n    {{{ -1706,  -1177,  -2269}, 0, { -4118,   5076}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1706,   -972,   -631}, 0, {   478,   1498}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1706,  -1177,   -631}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1178,   -460,  -2252}, 0, {  2012,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1178,   -511,  -1842}, 0, {   862,     96}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1178,   -511,  -2252}, 0, {  1884,   1116}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1178,   -460,  -1842}, 0, {   990,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   358,   -511,  -1842}, 0, {   862,     96}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   358,   -460,  -2252}, 0, {  2012,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   358,   -511,  -2252}, 0, {  1884,   1116}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   358,   -460,  -1842}, 0, {   990,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -2321,  -1177,   -631}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -2321,   -972,  -2269}, 0, { -3606,   5586}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -2321,  -1177,  -2269}, 0, { -4118,   5076}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -2321,   -972,   -631}, 0, {   478,   1498}, {0x7d, 0x7d, 0x7d, 0xff}}},\n#else\n    {{{ -1706,  -1177,  -2269}, 0, { -4118,   5076}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1706,   -972,  -2269}, 0, { -3606,   5586}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1706,   -972,   -631}, 0, {   478,   1498}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1178,   -460,  -2252}, 0, {  2012,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1178,   -460,  -1842}, 0, {   990,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1178,   -511,  -1842}, 0, {   862,     96}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1178,   -511,  -2252}, 0, {  1884,   1116}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   358,   -511,  -1842}, 0, {   862,     96}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   358,   -460,  -2252}, 0, {  2012,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   358,   -511,  -2252}, 0, {  1884,   1116}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   358,   -460,  -1842}, 0, {   990,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -2321,  -1177,   -631}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -2321,   -972,  -2269}, 0, { -3606,   5586}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -2321,  -1177,  -2269}, 0, { -4118,   5076}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -2321,   -972,   -631}, 0, {   478,   1498}, {0x7d, 0x7d, 0x7d, 0xff}}},\n#endif\n};\n\n// 0x070132F8 - 0x070133E8\nstatic const Vtx rr_seg7_vertex_070132F8[] = {\n#ifdef VERSION_JP\n    {{{   154,   1126,   2107}, 0, {   990,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   154,   1178,    673}, 0, { -3224,   4438}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   154,   1126,    673}, 0, { -3352,   4310}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1706,  -1177,  -2269}, 0, { -4118,   5076}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1706,   -972,  -2269}, 0, { -3606,   5586}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1706,   -972,   -631}, 0, {   478,   1498}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1485,   1178,   1697}, 0, {    96,   1116}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1485,   1126,   2107}, 0, {   990,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1485,   1126,   1697}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1485,   1178,   2107}, 0, {  1118,     96}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   461,   1126,    673}, 0, { -3352,   4310}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   461,   1178,    673}, 0, { -3224,   4438}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   461,   1178,   1697}, 0, {    96,   1116}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   461,   1126,   1697}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   154,   1178,   2107}, 0, {  1118,     96}, {0x7d, 0x7d, 0x7d, 0xff}}},\n#else\n    {{{   154,   1126,   2107}, 0, {   990,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   154,   1178,   2107}, 0, {  1118,     96}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   154,   1178,    673}, 0, { -3224,   4438}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1706,  -1177,  -2269}, 0, { -4118,   5076}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1706,   -972,   -631}, 0, {   478,   1498}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1706,  -1177,   -631}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1485,   1178,   1697}, 0, {    96,   1116}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1485,   1178,   2107}, 0, {  1118,     96}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1485,   1126,   2107}, 0, {   990,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1485,   1126,   1697}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   461,   1126,    673}, 0, { -3352,   4310}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   461,   1178,   1697}, 0, {    96,   1116}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   461,   1126,   1697}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   461,   1178,    673}, 0, { -3224,   4438}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   154,   1126,    673}, 0, { -3352,   4310}, {0x7d, 0x7d, 0x7d, 0xff}}},\n#endif\n};\n\n// 0x070133E8 - 0x070134C8\nstatic const Vtx rr_seg7_vertex_070133E8[] = {\n#ifdef VERSION_JP\n    {{{   461,   1126,   1697}, 0, {  1756,   1244}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1485,   1126,   2107}, 0, {  3290,  -2332}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   154,   1126,   2107}, 0, {     0,    990}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1587,    922,   -248}, 0, {  6356,  -3354}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1331,    922,    161}, 0, {  4694,  -3736}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1331,    922,   -248}, 0, {  5716,  -2714}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1587,    922,    161}, 0, {  5334,  -4376}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -562,   1126,   -248}, 0, {   990,   2010}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   461,   1126,   -248}, 0, {  3546,   -544}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   461,   1126,    161}, 0, {  2524,  -1566}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -562,   1126,    161}, 0, {     0,    990}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   154,   1126,    673}, 0, {  3544,   4564}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   461,   1126,    673}, 0, {  4312,   3798}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1485,   1126,   1697}, 0, {  4312,  -1310}, {0x44, 0x44, 0x44, 0xff}}},\n#else\n    {{{   461,   1126,   1697}, 0, {  1756,   1244}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1485,   1126,   2107}, 0, {  3290,  -2332}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   154,   1126,   2107}, 0, {     0,    990}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1587,    922,   -248}, 0, {  6356,  -3354}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1587,    922,    161}, 0, {  5334,  -4376}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1331,    922,    161}, 0, {  4694,  -3736}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1331,    922,   -248}, 0, {  5716,  -2714}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -562,   1126,   -248}, 0, {   990,   2010}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   461,   1126,    161}, 0, {  2524,  -1566}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  -562,   1126,    161}, 0, {     0,    990}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   461,   1126,   -248}, 0, {  3546,   -544}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   154,   1126,    673}, 0, {  3544,   4564}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{   461,   1126,    673}, 0, {  4312,   3798}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1485,   1126,   1697}, 0, {  4312,  -1310}, {0x44, 0x44, 0x44, 0xff}}},\n#endif\n};\n\n// 0x070134C8 - 0x070135C8\nstatic const Vtx rr_seg7_vertex_070134C8[] = {\n#ifdef VERSION_JP\n    {{{  1331,    922,   -248}, 0, {  5716,  -2714}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1331,    922,    161}, 0, {  4694,  -3736}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   973,   1075,    161}, 0, {  3800,  -2842}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   973,   1075,   -248}, 0, {  4822,  -1820}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   358,   -511,  -2252}, 0, {   808,   1828}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1178,   -511,  -1842}, 0, {  1830,  -1236}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   358,   -511,  -1842}, 0, {  -212,    808}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1178,   -511,  -2252}, 0, {  2852,   -214}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -2321,  -1177,  -2269}, 0, { 18050,  19070}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1706,  -1177,   -631}, 0, { 15494,  13448}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -2321,  -1177,   -631}, 0, { 13962,  14982}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1706,  -1177,  -2269}, 0, { 19582,  17536}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -153,   -921,  -2252}, 0, {   990,   2010}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   768,   -921,  -1842}, 0, {  2268,  -1310}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -153,   -921,  -1842}, 0, {     0,    990}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   768,   -921,  -2252}, 0, {  3290,   -288}, {0x55, 0x55, 0x55, 0xff}}},\n#else\n    {{{  1331,    922,   -248}, 0, {  5716,  -2714}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   973,   1075,    161}, 0, {  3800,  -2842}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   973,   1075,   -248}, 0, {  4822,  -1820}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1331,    922,    161}, 0, {  4694,  -3736}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   358,   -511,  -2252}, 0, {   808,   1828}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1178,   -511,  -1842}, 0, {  1830,  -1236}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   358,   -511,  -1842}, 0, {  -212,    808}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1178,   -511,  -2252}, 0, {  2852,   -214}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -2321,  -1177,  -2269}, 0, { 18050,  19070}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1706,  -1177,   -631}, 0, { 15494,  13448}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -2321,  -1177,   -631}, 0, { 13962,  14982}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1706,  -1177,  -2269}, 0, { 19582,  17536}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -153,   -921,  -2252}, 0, {   990,   2010}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   768,   -921,  -1842}, 0, {  2268,  -1310}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -153,   -921,  -1842}, 0, {     0,    990}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   768,   -921,  -2252}, 0, {  3290,   -288}, {0x55, 0x55, 0x55, 0xff}}},\n#endif\n};\n\n// 0x070135C8 - 0x070136A8\nstatic const Vtx rr_seg7_vertex_070135C8[] = {\n#ifdef VERSION_JP\n    {{{   973,   1075,   -248}, 0, {  3672,   4948}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{   973,   1126,   -248}, 0, {  3800,   4820}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1382,   1126,   -248}, 0, {  4822,   5842}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1382,   1024,   -248}, 0, {  4568,   6098}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1331,    922,   -248}, 0, {  4184,   6226}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1587,   1024,   -248}, 0, {  5078,   6610}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1587,    922,   -248}, 0, {  4822,   6864}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1382,   1126,    161}, 0, {  4822,   5842}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{   973,   1126,    161}, 0, {  3800,   4820}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{   973,   1075,    161}, 0, {  3672,   4948}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1331,    922,    161}, 0, {  4184,   6226}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1382,   1024,    161}, 0, {  4568,   6098}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1587,   1024,    161}, 0, {  5078,   6610}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1587,    922,    161}, 0, {  4822,   6864}, {0x91, 0x91, 0x91, 0xff}}},\n#else\n    {{{   973,   1075,   -248}, 0, {  3672,   4948}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{   973,   1126,   -248}, 0, {  3800,   4820}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1382,   1126,   -248}, 0, {  4822,   5842}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1382,   1024,   -248}, 0, {  4568,   6098}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1331,    922,   -248}, 0, {  4184,   6226}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1587,   1024,   -248}, 0, {  5078,   6610}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1587,    922,   -248}, 0, {  4822,   6864}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1331,    922,    161}, 0, {  4184,   6226}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1382,   1024,    161}, 0, {  4568,   6098}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1382,   1126,    161}, 0, {  4822,   5842}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{   973,   1075,    161}, 0, {  3672,   4948}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{   973,   1126,    161}, 0, {  3800,   4820}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1587,    922,    161}, 0, {  4822,   6864}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1587,   1024,    161}, 0, {  5078,   6610}, {0x91, 0x91, 0x91, 0xff}}},\n#endif\n};\n\n// 0x070136A8 - 0x07013728\nstatic const Vtx rr_seg7_vertex_070136A8[] = {\n#ifdef VERSION_JP\n    {{{  -562,   1126,    161}, 0, {     0,    990}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{   461,   1178,    161}, 0, {  2650,   3416}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  -562,   1178,    161}, 0, {    96,    862}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{   461,   1126,    161}, 0, {  2524,   3544}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  -562,   1178,   -248}, 0, {    96,    862}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{   461,   1126,   -248}, 0, {  2524,   3544}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  -562,   1126,   -248}, 0, {     0,    990}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{   461,   1178,   -248}, 0, {  2650,   3416}, {0x91, 0x91, 0x91, 0xff}}},\n#else\n    {{{  -562,   1126,    161}, 0, {     0,    990}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{   461,   1178,    161}, 0, {  2650,   3416}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  -562,   1178,    161}, 0, {    96,    862}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{   461,   1126,    161}, 0, {  2524,   3544}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  -562,   1178,   -248}, 0, {    96,    862}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{   461,   1178,   -248}, 0, {  2650,   3416}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{   461,   1126,   -248}, 0, {  2524,   3544}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  -562,   1126,   -248}, 0, {     0,    990}, {0x91, 0x91, 0x91, 0xff}}},\n#endif\n};\n\n// 0x07013728 - 0x07013828\nstatic const Vtx rr_seg7_vertex_07013728[] = {\n#ifdef VERSION_JP\n    {{{   461,    307,   1697}, 0, {     0,   -784}, {0x38, 0x84, 0x95, 0xff}}},\n    {{{   461,    358,   2107}, 0, {  2012,   -850}, {0x38, 0x84, 0x95, 0xff}}},\n    {{{   461,    307,   2107}, 0, {  2012,   -784}, {0x38, 0x84, 0x95, 0xff}}},\n    {{{   461,    358,   1697}, 0, {     0,   -850}, {0x38, 0x84, 0x95, 0xff}}},\n    {{{  -204,   -255,   1697}, 0, {     0,    956}, {0x38, 0x84, 0x95, 0xff}}},\n    {{{  -204,   -204,   2107}, 0, {  2012,    890}, {0x38, 0x84, 0x95, 0xff}}},\n    {{{  -204,   -204,   1697}, 0, {     0,    890}, {0x38, 0x84, 0x95, 0xff}}},\n    {{{  -204,   -255,   2107}, 0, {  2012,    956}, {0x38, 0x84, 0x95, 0xff}}},\n    {{{   461,    307,   1697}, 0, {     0,   -460}, {0x32, 0x61, 0x77, 0xff}}},\n    {{{  -204,   -255,   1697}, 0, {     0,    990}, {0x32, 0x61, 0x77, 0xff}}},\n    {{{  -204,   -204,   1697}, 0, {  -420,    934}, {0x32, 0x61, 0x77, 0xff}}},\n    {{{   461,    358,   1697}, 0, {  -420,   -516}, {0x32, 0x61, 0x77, 0xff}}},\n    {{{   461,    358,   2107}, 0, {  -420,   -516}, {0x32, 0x61, 0x77, 0xff}}},\n    {{{  -204,   -204,   2107}, 0, {  -420,    934}, {0x32, 0x61, 0x77, 0xff}}},\n    {{{  -204,   -255,   2107}, 0, {     0,    990}, {0x32, 0x61, 0x77, 0xff}}},\n    {{{   461,    307,   2107}, 0, {     0,   -460}, {0x32, 0x61, 0x77, 0xff}}},\n#else\n    {{{   461,    307,   1697}, 0, {     0,   -784}, {0x38, 0x84, 0x95, 0xff}}},\n    {{{   461,    358,   1697}, 0, {     0,   -850}, {0x38, 0x84, 0x95, 0xff}}},\n    {{{   461,    358,   2107}, 0, {  2012,   -850}, {0x38, 0x84, 0x95, 0xff}}},\n    {{{   461,    307,   2107}, 0, {  2012,   -784}, {0x38, 0x84, 0x95, 0xff}}},\n    {{{  -204,   -255,   1697}, 0, {     0,    956}, {0x38, 0x84, 0x95, 0xff}}},\n    {{{  -204,   -255,   2107}, 0, {  2012,    956}, {0x38, 0x84, 0x95, 0xff}}},\n    {{{  -204,   -204,   2107}, 0, {  2012,    890}, {0x38, 0x84, 0x95, 0xff}}},\n    {{{  -204,   -204,   1697}, 0, {     0,    890}, {0x38, 0x84, 0x95, 0xff}}},\n    {{{   461,    307,   1697}, 0, {     0,   -460}, {0x32, 0x61, 0x77, 0xff}}},\n    {{{  -204,   -255,   1697}, 0, {     0,    990}, {0x32, 0x61, 0x77, 0xff}}},\n    {{{  -204,   -204,   1697}, 0, {  -420,    934}, {0x32, 0x61, 0x77, 0xff}}},\n    {{{   461,    358,   1697}, 0, {  -420,   -516}, {0x32, 0x61, 0x77, 0xff}}},\n    {{{   461,    358,   2107}, 0, {  -420,   -516}, {0x32, 0x61, 0x77, 0xff}}},\n    {{{  -204,   -204,   2107}, 0, {  -420,    934}, {0x32, 0x61, 0x77, 0xff}}},\n    {{{  -204,   -255,   2107}, 0, {     0,    990}, {0x32, 0x61, 0x77, 0xff}}},\n    {{{   461,    307,   2107}, 0, {     0,   -460}, {0x32, 0x61, 0x77, 0xff}}},\n#endif\n};\n\n// 0x07013828 - 0x070138A8\nstatic const Vtx rr_seg7_vertex_07013828[] = {\n#ifdef VERSION_JP\n    {{{   461,    307,   2107}, 0, {  2012,   -784}, {0x27, 0x4a, 0x5a, 0xff}}},\n    {{{  -204,   -255,   2107}, 0, {  2012,    956}, {0x27, 0x4a, 0x5a, 0xff}}},\n    {{{  -204,   -255,   1697}, 0, {     0,    956}, {0x27, 0x4a, 0x5a, 0xff}}},\n    {{{   461,    307,   1697}, 0, {     0,   -784}, {0x27, 0x4a, 0x5a, 0xff}}},\n    {{{  -204,   -204,   1697}, 0, {     0,    890}, {0xff, 0xe5, 0x43, 0xff}}},\n    {{{   461,    358,   2107}, 0, {  2012,   -850}, {0xff, 0xe5, 0x43, 0xff}}},\n    {{{   461,    358,   1697}, 0, {     0,   -850}, {0xff, 0xe5, 0x43, 0xff}}},\n    {{{  -204,   -204,   2107}, 0, {  2012,    890}, {0xff, 0xe5, 0x43, 0xff}}},\n#else\n    {{{   461,    307,   2107}, 0, {  2012,   -784}, {0x27, 0x4a, 0x5a, 0xff}}},\n    {{{  -204,   -255,   1697}, 0, {     0,    956}, {0x27, 0x4a, 0x5a, 0xff}}},\n    {{{   461,    307,   1697}, 0, {     0,   -784}, {0x27, 0x4a, 0x5a, 0xff}}},\n    {{{  -204,   -255,   2107}, 0, {  2012,    956}, {0x27, 0x4a, 0x5a, 0xff}}},\n    {{{  -204,   -204,   1697}, 0, {     0,    890}, {0xff, 0xe5, 0x43, 0xff}}},\n    {{{  -204,   -204,   2107}, 0, {  2012,    890}, {0xff, 0xe5, 0x43, 0xff}}},\n    {{{   461,    358,   2107}, 0, {  2012,   -850}, {0xff, 0xe5, 0x43, 0xff}}},\n    {{{   461,    358,   1697}, 0, {     0,   -850}, {0xff, 0xe5, 0x43, 0xff}}},\n#endif\n};\n\n// 0x070138A8 - 0x07013998\nstatic const Vtx rr_seg7_vertex_070138A8[] = {\n#ifdef VERSION_JP\n    {{{    41,   1341,   1893}, 0, {-11836,   3862}, {0xb4, 0xd5, 0xe7, 0xff}}},\n    {{{    33,   1341,   1907}, 0, {-11912,   3882}, {0xb4, 0xd5, 0xe7, 0xff}}},\n    {{{    41,   1341,   1920}, 0, {-11836,   3862}, {0xb4, 0xd5, 0xe7, 0xff}}},\n    {{{    64,   1341,   1907}, 0, {-11606,   3806}, {0xb4, 0xd5, 0xe7, 0xff}}},\n    {{{    56,   1341,   1893}, 0, {-11682,   3824}, {0xb4, 0xd5, 0xe7, 0xff}}},\n    {{{    56,   1341,   1920}, 0, {-11682,   3824}, {0xb4, 0xd5, 0xe7, 0xff}}},\n    {{{  1167,   2161,   1893}, 0, { -3660,    798}, {0xb4, 0xd5, 0xe7, 0xff}}},\n    {{{  1190,   2161,   1907}, 0, { -3430,    742}, {0xb4, 0xd5, 0xe7, 0xff}}},\n    {{{  1183,   2161,   1893}, 0, { -3506,    760}, {0xb4, 0xd5, 0xe7, 0xff}}},\n    {{{  1167,   2161,   1920}, 0, { -3660,    798}, {0xb4, 0xd5, 0xe7, 0xff}}},\n    {{{  1183,   2161,   1920}, 0, { -3506,    760}, {0xb4, 0xd5, 0xe7, 0xff}}},\n    {{{  1160,   2161,   1907}, 0, { -3736,    818}, {0xb4, 0xd5, 0xe7, 0xff}}},\n    {{{  1178,   1178,   1902}, 0, {  1348,    772}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{  1160,   2161,   1907}, 0, { -3736,    818}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{  1167,   2161,   1893}, 0, { -3660,    798}, {0x97, 0xa9, 0xcd, 0xff}}},\n#else\n    {{{    41,   1341,   1893}, 0, {-11836,   3862}, {0xb4, 0xd5, 0xe7, 0xff}}},\n    {{{    56,   1341,   1920}, 0, {-11682,   3824}, {0xb4, 0xd5, 0xe7, 0xff}}},\n    {{{    64,   1341,   1907}, 0, {-11606,   3806}, {0xb4, 0xd5, 0xe7, 0xff}}},\n    {{{    41,   1341,   1920}, 0, {-11836,   3862}, {0xb4, 0xd5, 0xe7, 0xff}}},\n    {{{    33,   1341,   1907}, 0, {-11912,   3882}, {0xb4, 0xd5, 0xe7, 0xff}}},\n    {{{    56,   1341,   1893}, 0, {-11682,   3824}, {0xb4, 0xd5, 0xe7, 0xff}}},\n    {{{  1167,   2161,   1893}, 0, { -3660,    798}, {0xb4, 0xd5, 0xe7, 0xff}}},\n    {{{  1167,   2161,   1920}, 0, { -3660,    798}, {0xb4, 0xd5, 0xe7, 0xff}}},\n    {{{  1183,   2161,   1920}, 0, { -3506,    760}, {0xb4, 0xd5, 0xe7, 0xff}}},\n    {{{  1190,   2161,   1907}, 0, { -3430,    742}, {0xb4, 0xd5, 0xe7, 0xff}}},\n    {{{  1183,   2161,   1893}, 0, { -3506,    760}, {0xb4, 0xd5, 0xe7, 0xff}}},\n    {{{  1160,   2161,   1907}, 0, { -3736,    818}, {0xb4, 0xd5, 0xe7, 0xff}}},\n    {{{  1178,   1178,   1902}, 0, {  1348,    772}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{  1160,   2161,   1907}, 0, { -3736,    818}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{  1167,   2161,   1893}, 0, { -3660,    798}, {0x97, 0xa9, 0xcd, 0xff}}},\n#endif\n};\n\n// 0x07013998 - 0x07013A88\nstatic const Vtx rr_seg7_vertex_07013998[] = {\n#ifdef VERSION_JP\n    {{{    51,    358,   1902}, 0, { -6826,   3836}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{    33,   1341,   1907}, 0, {-11912,   3882}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{    41,   1341,   1893}, 0, {-11836,   3862}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{    59,    358,   1889}, 0, { -6750,   3818}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{    82,    358,   1902}, 0, { -6520,   3760}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{    64,   1341,   1907}, 0, {-11606,   3806}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{    56,   1341,   1920}, 0, {-11682,   3824}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{    74,    358,   1915}, 0, { -6596,   3780}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{  1208,   1178,   1902}, 0, {  1654,    696}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{  1190,   2161,   1907}, 0, { -3430,    742}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{  1183,   2161,   1920}, 0, { -3506,    760}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{  1201,   1178,   1915}, 0, {  1578,    716}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{  1178,   1178,   1902}, 0, {  1348,    772}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{  1167,   2161,   1893}, 0, { -3660,    798}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{  1185,   1178,   1889}, 0, {  1424,    754}, {0x97, 0xa9, 0xcd, 0xff}}},\n#else\n    {{{    51,    358,   1902}, 0, { -6826,   3836}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{    41,   1341,   1893}, 0, {-11836,   3862}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{    59,    358,   1889}, 0, { -6750,   3818}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{    33,   1341,   1907}, 0, {-11912,   3882}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{    82,    358,   1902}, 0, { -6520,   3760}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{    64,   1341,   1907}, 0, {-11606,   3806}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{    56,   1341,   1920}, 0, {-11682,   3824}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{    74,    358,   1915}, 0, { -6596,   3780}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{  1208,   1178,   1902}, 0, {  1654,    696}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{  1183,   2161,   1920}, 0, { -3506,    760}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{  1201,   1178,   1915}, 0, {  1578,    716}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{  1190,   2161,   1907}, 0, { -3430,    742}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{  1178,   1178,   1902}, 0, {  1348,    772}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{  1167,   2161,   1893}, 0, { -3660,    798}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{  1185,   1178,   1889}, 0, {  1424,    754}, {0x97, 0xa9, 0xcd, 0xff}}},\n#endif\n};\n\n// 0x07013A88 - 0x07013B88\nstatic const Vtx rr_seg7_vertex_07013A88[] = {\n#ifdef VERSION_JP\n    {{{  1185,   1178,   1889}, 0, {  1424,    754}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  1167,   2161,   1893}, 0, { -3660,    798}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  1183,   2161,   1893}, 0, { -3506,    760}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{    59,    358,   1889}, 0, { -6750,   3818}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{    56,   1341,   1893}, 0, {-11682,   3824}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{    74,    358,   1889}, 0, { -6596,   3780}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{    41,   1341,   1893}, 0, {-11836,   3862}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{    74,    358,   1915}, 0, { -6596,   3780}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{    41,   1341,   1920}, 0, {-11836,   3862}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{    59,    358,   1915}, 0, { -6750,   3818}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{    56,   1341,   1920}, 0, {-11682,   3824}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  1201,   1178,   1915}, 0, {  1578,    716}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  1167,   2161,   1920}, 0, { -3660,    798}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  1185,   1178,   1915}, 0, {  1424,    754}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  1183,   2161,   1920}, 0, { -3506,    760}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  1201,   1178,   1889}, 0, {  1578,    716}, {0x52, 0x70, 0xac, 0xff}}},\n#else\n    {{{  1185,   1178,   1889}, 0, {  1424,    754}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  1183,   2161,   1893}, 0, { -3506,    760}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  1201,   1178,   1889}, 0, {  1578,    716}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{    59,    358,   1889}, 0, { -6750,   3818}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{    56,   1341,   1893}, 0, {-11682,   3824}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{    74,    358,   1889}, 0, { -6596,   3780}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{    41,   1341,   1893}, 0, {-11836,   3862}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{    74,    358,   1915}, 0, { -6596,   3780}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{    56,   1341,   1920}, 0, {-11682,   3824}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{    41,   1341,   1920}, 0, {-11836,   3862}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{    59,    358,   1915}, 0, { -6750,   3818}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  1201,   1178,   1915}, 0, {  1578,    716}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  1183,   2161,   1920}, 0, { -3506,    760}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  1167,   2161,   1920}, 0, { -3660,    798}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  1185,   1178,   1915}, 0, {  1424,    754}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  1167,   2161,   1893}, 0, { -3660,    798}, {0x52, 0x70, 0xac, 0xff}}},\n#endif\n};\n\n// 0x07013B88 - 0x07013C88\nstatic const Vtx rr_seg7_vertex_07013B88[] = {\n#ifdef VERSION_JP\n    {{{  1201,   1178,   1889}, 0, {  1578,    716}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{  1183,   2161,   1893}, 0, { -3506,    760}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{  1190,   2161,   1907}, 0, { -3430,    742}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{    74,    358,   1889}, 0, { -6596,   3780}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{    64,   1341,   1907}, 0, {-11606,   3806}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{    82,    358,   1902}, 0, { -6520,   3760}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{    56,   1341,   1893}, 0, {-11682,   3824}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{    59,    358,   1915}, 0, { -6750,   3818}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{    41,   1341,   1920}, 0, {-11836,   3862}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{    33,   1341,   1907}, 0, {-11912,   3882}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{    51,    358,   1902}, 0, { -6826,   3836}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{  1185,   1178,   1915}, 0, {  1424,    754}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{  1167,   2161,   1920}, 0, { -3660,    798}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{  1160,   2161,   1907}, 0, { -3736,    818}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{  1178,   1178,   1902}, 0, {  1348,    772}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{  1208,   1178,   1902}, 0, {  1654,    696}, {0x79, 0x8c, 0xeb, 0xff}}},\n#else\n    {{{  1201,   1178,   1889}, 0, {  1578,    716}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{  1190,   2161,   1907}, 0, { -3430,    742}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{  1208,   1178,   1902}, 0, {  1654,    696}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{    74,    358,   1889}, 0, { -6596,   3780}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{    56,   1341,   1893}, 0, {-11682,   3824}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{    64,   1341,   1907}, 0, {-11606,   3806}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{    82,    358,   1902}, 0, { -6520,   3760}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{    59,    358,   1915}, 0, { -6750,   3818}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{    41,   1341,   1920}, 0, {-11836,   3862}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{    33,   1341,   1907}, 0, {-11912,   3882}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{    51,    358,   1902}, 0, { -6826,   3836}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{  1185,   1178,   1915}, 0, {  1424,    754}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{  1160,   2161,   1907}, 0, { -3736,    818}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{  1178,   1178,   1902}, 0, {  1348,    772}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{  1167,   2161,   1920}, 0, { -3660,    798}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{  1183,   2161,   1893}, 0, { -3506,    760}, {0x79, 0x8c, 0xeb, 0xff}}},\n#endif\n};\n\n// 0x07013C88 - 0x07013D78\nstatic const Vtx rr_seg7_vertex_07013C88[] = {\n#ifdef VERSION_JP\n    {{{    59,    358,   1915}, 0, {     0,      0}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{    82,    358,   1902}, 0, {     0,      0}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{    74,    358,   1915}, 0, {     0,      0}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{    59,    358,   1889}, 0, {     0,      0}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{    74,    358,   1889}, 0, {     0,      0}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{    51,    358,   1902}, 0, {     0,      0}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{    77,   1198,   1932}, 0, {     0,      0}, {0x00, 0x96, 0x96, 0xff}}},\n    {{{    25,   1198,   1932}, 0, {     0,      0}, {0x00, 0x96, 0x96, 0xff}}},\n    {{{    51,   1198,   1983}, 0, {     0,      0}, {0x00, 0x96, 0x96, 0xff}}},\n    {{{  1395,   2074,   1907}, 0, {     0,      0}, {0x00, 0x96, 0x96, 0xff}}},\n    {{{  1216,   2074,   1881}, 0, {     0,      0}, {0x00, 0x96, 0x96, 0xff}}},\n    {{{  1216,   2074,   1932}, 0, {     0,      0}, {0x00, 0x96, 0x96, 0xff}}},\n    {{{  1177,   2074,   1830}, 0, {     0,      0}, {0x00, 0x96, 0x96, 0xff}}},\n    {{{  1152,   2074,   1881}, 0, {     0,      0}, {0x00, 0x96, 0x96, 0xff}}},\n    {{{  1203,   2074,   1881}, 0, {     0,      0}, {0x00, 0x96, 0x96, 0xff}}},\n#else// this list is shorter in non-JP versions.\n    {{{    59,    358,   1915}, 0, {     0,      0}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{    82,    358,   1902}, 0, {     0,      0}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{    74,    358,   1915}, 0, {     0,      0}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{    74,    358,   1889}, 0, {     0,      0}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{    59,    358,   1889}, 0, {     0,      0}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{    51,    358,   1902}, 0, {     0,      0}, {0x38, 0x5e, 0x96, 0xff}}},\n#endif\n};\n\n// this list doesn't exist in non-JP versions.\n#ifdef VERSION_JP\n// 0x07013D78 - 0x07013E68\nstatic const Vtx rr_seg7_vertex_07013D78[] = {\n    {{{  1203,   2074,   1932}, 0, {     0,      0}, {0x00, 0x96, 0x96, 0xff}}},\n    {{{  1152,   2074,   1932}, 0, {     0,      0}, {0x00, 0x96, 0x96, 0xff}}},\n    {{{  1177,   2074,   1983}, 0, {     0,      0}, {0x00, 0x96, 0x96, 0xff}}},\n    {{{  1062,   2074,   1907}, 0, {     0,      0}, {0x00, 0x96, 0x96, 0xff}}},\n    {{{  1139,   2074,   1932}, 0, {     0,      0}, {0x00, 0x96, 0x96, 0xff}}},\n    {{{  1139,   2074,   1881}, 0, {     0,      0}, {0x00, 0x96, 0x96, 0xff}}},\n    {{{   -60,   1198,   1907}, 0, {     0,      0}, {0x00, 0x96, 0x96, 0xff}}},\n    {{{    13,   1198,   1932}, 0, {     0,      0}, {0x00, 0x96, 0x96, 0xff}}},\n    {{{    13,   1198,   1881}, 0, {     0,      0}, {0x00, 0x96, 0x96, 0xff}}},\n    {{{   169,   1198,   1907}, 0, {     0,      0}, {0x00, 0x96, 0x96, 0xff}}},\n    {{{    89,   1198,   1881}, 0, {     0,      0}, {0x00, 0x96, 0x96, 0xff}}},\n    {{{    89,   1198,   1932}, 0, {     0,      0}, {0x00, 0x96, 0x96, 0xff}}},\n    {{{    51,   1198,   1830}, 0, {     0,      0}, {0x00, 0x96, 0x96, 0xff}}},\n    {{{    25,   1198,   1881}, 0, {     0,      0}, {0x00, 0x96, 0x96, 0xff}}},\n    {{{    77,   1198,   1881}, 0, {     0,      0}, {0x00, 0x96, 0x96, 0xff}}},\n};\n#endif\n\n// 0x07013E68 - 0x070142C0\nstatic const Gfx rr_seg7_dl_07013E68[] = {\n#ifdef VERSION_JP\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_070127E8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_070128D8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_070129B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_07012AA8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_07012B98, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10,  2, 11, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles( 0,  2, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07012C98, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07012D78, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07012E68, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_07012F58, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07013038, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07013128, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07013208, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_070132F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(rr_seg7_vertex_070133E8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11,  0,  2, 0x0),\n    gsSP2Triangles(11, 12,  0, 0x0,  0, 13,  1, 0x0),\n    gsSPVertex(rr_seg7_vertex_070134C8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_070135C8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  4,  0, 0x0,  3,  5,  6, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 10, 11,  7, 0x0),\n    gsSP2Triangles(10, 12, 11, 0x0, 10, 13, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_070136A8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n#else\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_070127E8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_070128D8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(rr_seg7_vertex_070129B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07012AA8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07012B98, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10,  2, 11, 0x0),\n    gsSP2Triangles( 0,  2, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07012C98, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07012D78, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07012E68, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07012F58, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07013038, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07013128, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07013208, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_070132F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_070133E8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12,  0, 0x0),\n    gsSP2Triangles(11,  0,  2, 0x0,  0, 13,  1, 0x0),\n    gsSPVertex(rr_seg7_vertex_070134C8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_070135C8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  4,  0, 0x0,  3,  5,  6, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles( 7, 12, 13, 0x0,  7, 13,  8, 0x0),\n    gsSPVertex(rr_seg7_vertex_070136A8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n#endif\n};\n\n// 0x070142C0 - 0x07014350\nstatic const Gfx rr_seg7_dl_070142C0[] = {\n#ifdef VERSION_JP\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_07013728, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07013828, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n#else\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_07013728, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07013828, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n#endif\n};\n\n// 0x07014350 - 0x07014490\nstatic const Gfx rr_seg7_dl_07014350[] = {\n#ifdef VERSION_JP\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_070138A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  2,  5, 0x0,  0,  5,  3, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9, 10, 0x0),\n    gsSP2Triangles( 6, 10,  7, 0x0,  6, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07013998, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07013A88, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07013B88, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n#else\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_070138A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 6,  9, 10, 0x0,  6, 11,  7, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07013998, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07013A88, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(rr_seg7_vertex_07013B88, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n#endif\n};\n\n// 0x07014490 - 0x07014508\nstatic const Gfx rr_seg7_dl_07014490[] = {\n#ifdef VERSION_JP\n    gsSPVertex(rr_seg7_vertex_07013C88, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  5,  3, 0x0,  0,  4,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07013D78, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n#else\n    gsSPVertex(rr_seg7_vertex_07013C88, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  0,  5,  4, 0x0),\n    gsSPEndDisplayList(),\n#endif\n};\n\n// 0x07014508 - 0x07014590\nconst Gfx rr_seg7_dl_07014508[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_07013E68),\n    gsSPDisplayList(rr_seg7_dl_070142C0),\n    gsSPDisplayList(rr_seg7_dl_07014350),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(rr_seg7_dl_07014490),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/16/geo.inc.c",
    "content": "// 0x0E0007B8\nconst GeoLayout rr_geo_0007B8[] = {\n    GEO_CULLING_RADIUS(1600),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, rr_seg7_dl_07014F30),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/16/model.inc.c",
    "content": "// 0x07014590 - 0x07014670\nstatic const Vtx rr_seg7_vertex_07014590[] = {\n    {{{    17,   1352,   -736}, 0, { -3692,    650}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{    40,   1352,   -722}, 0, { -3538,    572}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{    32,   1352,   -736}, 0, { -3590,    598}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{    32,   1352,   -709}, 0, { -3590,    598}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{    17,   1352,   -709}, 0, { -3692,    650}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{     9,   1352,   -722}, 0, { -3744,    674}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{    40,   1352,   -722}, 0, { -3538,    572}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{    32,   1352,   -709}, 0, { -3590,    598}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{    40,    379,   -722}, 0, {  1314,    572}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{    32,    379,   -709}, 0, {  1262,    598}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{     9,   1352,   -722}, 0, { -3744,    674}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{    17,   1352,   -736}, 0, { -3692,    650}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{     9,    379,   -722}, 0, {  1110,    674}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{    17,    379,   -736}, 0, {  1160,    650}, {0x97, 0xa9, 0xcd, 0xff}}},\n};\n\n// 0x07014670 - 0x07014770\nstatic const Vtx rr_seg7_vertex_07014670[] = {\n    {{{    32,   1352,   -709}, 0, { -3590,    598}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{    17,   1352,   -709}, 0, { -3692,    650}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{    32,    379,   -709}, 0, {  1262,    598}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{    17,    379,   -709}, 0, {  1160,    650}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{    17,   1352,   -736}, 0, { -3692,    650}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{    32,   1352,   -736}, 0, { -3590,    598}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{    17,    379,   -736}, 0, {  1160,    650}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{    32,    379,   -736}, 0, {  1262,    598}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{    17,   1352,   -709}, 0, { -3692,    650}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{     9,   1352,   -722}, 0, { -3744,    674}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{    17,    379,   -709}, 0, {  1160,    650}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{     9,    379,   -722}, 0, {  1110,    674}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{    32,   1352,   -736}, 0, { -3590,    598}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{    40,   1352,   -722}, 0, { -3538,    572}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{    32,    379,   -736}, 0, {  1262,    598}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{    40,    379,   -722}, 0, {  1314,    572}, {0x79, 0x8c, 0xeb, 0xff}}},\n};\n\n// 0x07014770 - 0x07014870\nstatic const Vtx rr_seg7_vertex_07014770[] = {\n    {{{ -1134,    236,   -444}, 0, {   906,   1926}, {0x59, 0x7a, 0xb3, 0xff}}},\n    {{{  -566,   -439,   -209}, 0, {  1238,   1126}, {0x59, 0x7a, 0xb3, 0xff}}},\n    {{{ -1134,    236,    495}, 0, {     0,    990}, {0x59, 0x7a, 0xb3, 0xff}}},\n    {{{  -566,   -439,    260}, 0, {   770,    658}, {0x59, 0x7a, 0xb3, 0xff}}},\n    {{{  1136,    236,    495}, 0, {  2234,  -1276}, {0x59, 0x7a, 0xb3, 0xff}}},\n    {{{   568,   -439,    260}, 0, {  1902,   -474}, {0x59, 0x7a, 0xb3, 0xff}}},\n    {{{  1136,    236,   -444}, 0, {  3172,   -338}, {0x59, 0x7a, 0xb3, 0xff}}},\n    {{{   568,   -439,   -209}, 0, {  2372,     -6}, {0x59, 0x7a, 0xb3, 0xff}}},\n    {{{  -566,   -439,   -209}, 0, {  1238,   1126}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{   568,   -439,    260}, 0, {  1902,   -474}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{   236,   -439,    593}, 0, {  1238,   -474}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{  -234,   -439,   -541}, 0, {  1902,   1126}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{   236,   -439,   -541}, 0, {  2372,    658}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{   568,   -439,   -209}, 0, {  2372,     -6}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{  -234,   -439,    593}, 0, {   770,     -6}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{  -566,   -439,    260}, 0, {   770,    658}, {0x38, 0x5e, 0x96, 0xff}}},\n};\n\n// 0x07014870 - 0x07014970\nstatic const Vtx rr_seg7_vertex_07014870[] = {\n    {{{  -469,    236,  -1109}, 0, {  2234,   1926}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  -234,   -439,   -541}, 0, {  1902,   1126}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  -566,   -439,   -209}, 0, {  1238,   1126}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{ -1134,    236,    495}, 0, {     0,    990}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  -234,   -439,    593}, 0, {   770,     -6}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  -469,    236,   1160}, 0, {     0,   -338}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  -566,   -439,    260}, 0, {   770,    658}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{   471,    236,   1160}, 0, {   906,  -1276}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{   236,   -439,    593}, 0, {  1238,   -474}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{   568,   -439,    260}, 0, {  1902,   -474}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  1136,    236,    495}, 0, {  2234,  -1276}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  1136,    236,   -444}, 0, {  3172,   -338}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{   236,   -439,   -541}, 0, {  2372,    658}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{   471,    236,  -1109}, 0, {  3172,    990}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{   568,   -439,   -209}, 0, {  2372,     -6}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{ -1134,    236,   -444}, 0, {   906,   1926}, {0x52, 0x70, 0xac, 0xff}}},\n};\n\n// 0x07014970 - 0x07014A60\nstatic const Vtx rr_seg7_vertex_07014970[] = {\n    {{{  -469,    236,   1160}, 0, {     0,   -338}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{   236,   -439,    593}, 0, {  1238,   -474}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{   471,    236,   1160}, 0, {   906,  -1276}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  -234,   -439,    593}, 0, {   770,     -6}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{   471,    236,  -1109}, 0, {  3172,    990}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  -234,   -439,   -541}, 0, {  1902,   1126}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  -469,    236,  -1109}, 0, {  2234,   1926}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{   236,   -439,   -541}, 0, {  2372,    658}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  1136,    236,    495}, 0, {  2800,  -1842}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1136,    379,    495}, 0, {  2800,  -1842}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   471,    379,   1160}, 0, {  1142,  -1842}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1136,    236,   -444}, 0, {  3974,   -670}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   471,    236,  -1109}, 0, {  3974,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   471,    379,  -1109}, 0, {  3974,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1136,    379,   -444}, 0, {  3974,   -670}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x07014A60 - 0x07014B60\nstatic const Vtx rr_seg7_vertex_07014A60[] = {\n    {{{ -1134,    236,   -444}, 0, {  1142,   2162}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -469,    379,  -1109}, 0, {  2800,   2162}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -469,    236,  -1109}, 0, {  2800,   2162}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1134,    379,   -444}, 0, {  1142,   2162}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -469,    379,   1160}, 0, {     0,   -670}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1134,    236,    495}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -469,    236,   1160}, 0, {     0,   -670}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1134,    379,    495}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1136,    236,    495}, 0, {  2800,  -1842}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   471,    379,   1160}, 0, {  1142,  -1842}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   471,    236,   1160}, 0, {  1142,  -1842}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   471,    379,  -1109}, 0, {  3974,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   471,    379,   1160}, 0, {  1142,  -1842}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1136,    379,    495}, 0, {  2800,  -1842}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1136,    379,   -444}, 0, {  3974,   -670}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -469,    379,   1160}, 0, {     0,   -670}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07014B60 - 0x07014C60\nstatic const Vtx rr_seg7_vertex_07014B60[] = {\n    {{{   471,    379,  -1109}, 0, {  3974,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1134,    379,   -444}, 0, {  1142,   2162}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1134,    379,    495}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -469,    379,  -1109}, 0, {  2800,   2162}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -469,    379,   1160}, 0, {     0,   -670}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1136,    236,    495}, 0, {  2800,  -1842}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1136,    379,   -444}, 0, {  3974,   -670}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1136,    379,    495}, 0, {  2800,  -1842}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1136,    236,   -444}, 0, {  3974,   -670}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1134,    236,   -444}, 0, {  1142,   2162}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1134,    236,    495}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1134,    379,    495}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1134,    379,   -444}, 0, {  1142,   2162}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -469,    379,  -1109}, 0, {  2800,   2162}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{   471,    379,  -1109}, 0, {  3974,    990}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  -469,    236,  -1109}, 0, {  2800,   2162}, {0x91, 0x91, 0x91, 0xff}}},\n};\n\n// 0x07014C60 - 0x07014CD0\nstatic const Vtx rr_seg7_vertex_07014C60[] = {\n    {{{   471,    379,  -1109}, 0, {  3974,    990}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{   471,    236,  -1109}, 0, {  3974,    990}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  -469,    236,  -1109}, 0, {  2800,   2162}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{   471,    379,   1160}, 0, {  1142,  -1842}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  -469,    379,   1160}, 0, {     0,   -670}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  -469,    236,   1160}, 0, {     0,   -670}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{   471,    236,   1160}, 0, {  1142,  -1842}, {0x91, 0x91, 0x91, 0xff}}},\n};\n\n// 0x07014CD0 - 0x07014D80\nstatic const Gfx rr_seg7_dl_07014CD0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_07014590, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  0,  5,  4, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_07014670, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07014D80 - 0x07014F30\nstatic const Gfx rr_seg7_dl_07014D80[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_07014770, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11, 12, 0x0),\n    gsSP2Triangles( 8, 13,  9, 0x0,  8, 12, 13, 0x0),\n    gsSP2Triangles( 8, 14, 15, 0x0,  8, 10, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07014870, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07014970, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07014A60, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0, 11, 15, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_07014B60, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07014C60, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 3,  5,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07014F30 - 0x07014FA8\nconst Gfx rr_seg7_dl_07014F30[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_07014CD0),\n    gsSPDisplayList(rr_seg7_dl_07014D80),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/17/geo.inc.c",
    "content": "// 0x0E0007D0\nconst GeoLayout rr_geo_0007D0[] = {\n    GEO_CULLING_RADIUS(3800),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, rr_seg7_dl_070156B8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/17/model.inc.c",
    "content": "// 0x07014FA8 - 0x070150A8\nstatic const Vtx rr_seg7_vertex_07014FA8[] = {\n    {{{  3077,   -315,   -751}, 0, { -1052,      0}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{  2668,   -315,   -136}, 0, {   990,    990}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{  3077,   -315,   -136}, 0, {   990,      0}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{  2668,   -315,   -751}, 0, { -1052,    990}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{  2081,   1114,   -765}, 0, { -1052,      0}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{  1672,   1114,   -150}, 0, {   990,    990}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{  2081,   1114,   -150}, 0, {   990,      0}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{  1672,   1114,   -765}, 0, { -1052,    990}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{  2081,   -162,   -150}, 0, {   990,      0}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{  1672,   -162,   -150}, 0, {   990,    990}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{  1672,   -162,   -765}, 0, { -1052,    990}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{  2081,   -162,   -765}, 0, { -1052,      0}, {0xbf, 0xbf, 0x3f, 0xff}}},\n    {{{  2668,  -1083,   -751}, 0, { -1052,    990}, {0xbf, 0xaa, 0x3f, 0xff}}},\n    {{{  3077,  -1083,   -751}, 0, { -1052,      0}, {0xbf, 0xaa, 0x3f, 0xff}}},\n    {{{  3077,  -1083,   -136}, 0, {   990,      0}, {0xbf, 0xaa, 0x3f, 0xff}}},\n    {{{  2668,  -1083,   -136}, 0, {   990,    990}, {0xbf, 0xaa, 0x3f, 0xff}}},\n};\n\n// 0x070150A8 - 0x07015198\nstatic const Vtx rr_seg7_vertex_070150A8[] = {\n    {{{  1672,   1062,   -765}, 0, {   224,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1672,   1114,   -765}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2081,   1114,   -765}, 0, {     0,  -1054}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1672,   -162,   -765}, 0, {   224,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1672,   -111,   -765}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2081,   -111,   -765}, 0, {     0,  -1054}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2081,   -162,   -765}, 0, {   224,  -1054}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2081,   -162,   -150}, 0, {   224,  -1054}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1672,   -111,   -150}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1672,   -162,   -150}, 0, {   224,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2081,   -111,   -150}, 0, {     0,  -1054}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2081,   1062,   -150}, 0, {   224,  -1054}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1672,   1114,   -150}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1672,   1062,   -150}, 0, {   224,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2081,   1114,   -150}, 0, {     0,  -1054}, {0x96, 0x96, 0x96, 0xff}}},\n};\n\n// 0x07015198 - 0x07015288\nstatic const Vtx rr_seg7_vertex_07015198[] = {\n    {{{  3077,  -1083,   -136}, 0, {   224,  -1054}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2668,  -1032,   -136}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2668,  -1083,   -136}, 0, {   224,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1672,   1062,   -765}, 0, {   224,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2081,   1114,   -765}, 0, {     0,  -1054}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2081,   1062,   -765}, 0, {   224,  -1054}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2668,   -367,   -751}, 0, {   224,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2668,   -315,   -751}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  3077,   -315,   -751}, 0, {     0,  -1054}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  3077,   -367,   -751}, 0, {   224,  -1054}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  3077,   -367,   -136}, 0, {   224,  -1054}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2668,   -315,   -136}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2668,   -367,   -136}, 0, {   224,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  3077,   -315,   -136}, 0, {     0,  -1054}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  3077,  -1032,   -136}, 0, {     0,  -1054}, {0x96, 0x96, 0x96, 0xff}}},\n};\n\n// 0x07015288 - 0x07015378\nstatic const Vtx rr_seg7_vertex_07015288[] = {\n    {{{  2668,  -1083,   -751}, 0, {   224,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2668,  -1032,   -751}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  3077,  -1032,   -751}, 0, {     0,  -1054}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  3077,  -1083,   -751}, 0, {   224,  -1054}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1672,   1062,   -150}, 0, {   224,  -2076}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1672,   1114,   -765}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1672,   1062,   -765}, 0, {   224,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1672,   -162,   -150}, 0, {   224,  -2076}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1672,   -111,   -765}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1672,   -162,   -765}, 0, {   224,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1672,   -111,   -150}, 0, {     0,  -2076}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2081,   -162,   -765}, 0, {   224,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2081,   -111,   -150}, 0, {     0,  -2076}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2081,   -162,   -150}, 0, {   224,  -2076}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2081,   -111,   -765}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x07015378 - 0x07015458\nstatic const Vtx rr_seg7_vertex_07015378[] = {\n    {{{  2081,   1062,   -765}, 0, {   224,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2081,   1114,   -765}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2081,   1114,   -150}, 0, {     0,  -2076}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2081,   1062,   -150}, 0, {   224,  -2076}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  3077,  -1083,   -751}, 0, {   224,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  3077,  -1032,   -751}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  3077,  -1032,   -136}, 0, {     0,  -2076}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1672,   1062,   -150}, 0, {   224,  -2076}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1672,   1114,   -150}, 0, {     0,  -2076}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1672,   1114,   -765}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2668,   -367,   -136}, 0, {   224,  -2076}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2668,   -315,   -136}, 0, {     0,  -2076}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2668,   -315,   -751}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2668,   -367,   -751}, 0, {   224,    990}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x07015458 - 0x07015508\nstatic const Vtx rr_seg7_vertex_07015458[] = {\n    {{{  3077,   -367,   -751}, 0, {   224,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  3077,   -315,   -751}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  3077,   -315,   -136}, 0, {     0,  -2076}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  3077,   -367,   -136}, 0, {   224,  -2076}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  3077,  -1083,   -751}, 0, {   224,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  3077,  -1032,   -136}, 0, {     0,  -2076}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  3077,  -1083,   -136}, 0, {   224,  -2076}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2668,  -1083,   -136}, 0, {   224,  -2076}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2668,  -1032,   -751}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2668,  -1083,   -751}, 0, {   224,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2668,  -1032,   -136}, 0, {     0,  -2076}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x07015508 - 0x07015570\nstatic const Gfx rr_seg7_dl_07015508[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_07014FA8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07015570 - 0x070156B8\nstatic const Gfx rr_seg7_dl_07015570[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_070150A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_07015198, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(rr_seg7_vertex_07015288, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_07015378, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07015458, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle( 7, 10,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070156B8 - 0x07015748\nconst Gfx rr_seg7_dl_070156B8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_07015508),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_07015570),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/18/geo.inc.c",
    "content": "// 0x0E0007E8\nconst GeoLayout rr_geo_0007E8[] = {\n    GEO_CULLING_RADIUS(2500),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, rr_seg7_dl_07015C68),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/18/model.inc.c",
    "content": "// 0x07015748 - 0x07015828\nstatic const Vtx rr_seg7_vertex_07015748[] = {\n    {{{  -947,   -836,   1010}, 0, {     0, -17856}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1001,   -833,    604}, 0, {   990, -18004}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1784,   -844,   1002}, 0, {   -40, -19944}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1780,   -844,    593}, 0, {   990, -19950}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -668,   -787,    959}, 0, {     0, -17226}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -650,   -775,    549}, 0, {   990, -17022}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1001,   -833,    604}, 0, {   990, -17918}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -947,   -836,   1010}, 0, {   -50, -17942}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -215,   -485,    959}, 0, {     0, -15792}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -215,   -485,    549}, 0, {   990, -15792}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -650,   -775,    549}, 0, {   990, -17096}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -668,   -787,    959}, 0, {     0, -17150}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -62,   -434,    959}, 0, {     0, -15388}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -62,   -434,    549}, 0, {   990, -15388}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07015828 - 0x07015928\nstatic const Vtx rr_seg7_vertex_07015828[] = {\n    {{{  1477,   -155,    543}, 0, {     0, -11492}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1168,   -151,    267}, 0, {   990, -11612}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1169,   -202,    813}, 0, {   -26, -12522}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   254,   -434,    959}, 0, {     0, -14596}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -62,   -434,    549}, 0, {   990, -15388}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -62,   -434,    959}, 0, {     0, -15388}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   255,   -434,    549}, 0, {   990, -14594}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   859,   -239,    960}, 0, {     0, -13026}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   795,   -226,    537}, 0, {   990, -13140}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   254,   -434,    959}, 0, {    10, -14608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   255,   -434,    549}, 0, {   990, -14584}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1169,   -202,    813}, 0, {     0, -12378}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   940,   -196,    468}, 0, {   990, -12522}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   859,   -239,    960}, 0, {     0, -13236}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   795,   -226,    537}, 0, {   990, -12930}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   940,   -196,    468}, 0, {   990, -12378}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07015928 - 0x07015A28\nstatic const Vtx rr_seg7_vertex_07015928[] = {\n    {{{  1792,   -122,     54}, 0, {     0, -10180}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1390,   -112,    -74}, 0, {   990, -10450}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1477,   -155,    543}, 0, {     0, -11630}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1168,   -151,    267}, 0, {   990, -11474}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1817,    -85,   -315}, 0, {     0,  -9512}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1407,    -83,   -312}, 0, {   990,  -9588}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1792,   -122,     54}, 0, {     0, -10442}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1390,   -112,    -74}, 0, {   990, -10188}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1793,    -47,   -674}, 0, {     0,  -8680}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1390,    -38,   -564}, 0, {   990,  -8882}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1817,    -85,   -315}, 0, {     0,  -9580}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1407,    -83,   -312}, 0, {   990,  -9520}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1607,      0,  -1050}, 0, {     0,  -7828}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1278,      9,   -792}, 0, {   990,  -8034}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1793,    -47,   -674}, 0, {   -28,  -8878}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1390,    -38,   -564}, 0, {   990,  -8682}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07015A28 - 0x07015B28\nstatic const Vtx rr_seg7_vertex_07015A28[] = {\n    {{{  1050,     77,  -1519}, 0, {     0,  -6214}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   859,     77,  -1142}, 0, {   990,  -6448}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1607,      0,  -1050}, 0, {   -24,  -8042}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1278,      9,   -792}, 0, {   990,  -7822}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   244,     77,  -1700}, 0, {     0,  -4400}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   199,     77,  -1291}, 0, {   990,  -4514}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1050,     77,  -1519}, 0, {     0,  -6462}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1961,     77,  -1700}, 0, {     0,    988}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1039,     77,  -1290}, 0, {   990,  -1312}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1039,     77,  -1700}, 0, {   -26,  -1308}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   859,     77,  -1142}, 0, {   990,  -6202}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1039,     77,  -1700}, 0, {     0,  -1310}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1039,     77,  -1290}, 0, {   990,  -1310}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   199,     77,  -1291}, 0, {   990,  -4400}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   244,     77,  -1700}, 0, {     0,  -4514}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1961,     35,  -1292}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07015B28 - 0x07015C68\nstatic const Gfx rr_seg7_dl_07015B28[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_07015748, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12,  9,  8, 0x0, 12, 13,  9, 0x0),\n    gsSPVertex(rr_seg7_vertex_07015828, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0,  1, 15,  2, 0x0),\n    gsSPVertex(rr_seg7_vertex_07015928, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07015A28, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 5, 10,  6, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  7, 15,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07015C68 - 0x07015CE8\nconst Gfx rr_seg7_dl_07015C68[] = {\n    gsDPPipeSync(),\n    gsDPSetEnvColor(255, 255, 255, 100),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADEA, G_CC_MODULATERGBFADEA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_07015B28),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/19/geo.inc.c",
    "content": "// 0x0E000800\nconst GeoLayout rr_geo_000800[] = {\n    GEO_CULLING_RADIUS(4500),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, rr_seg7_dl_07017530),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/19/model.inc.c",
    "content": "// 0x07015CE8 - 0x07015DE8\nstatic const Vtx rr_seg7_vertex_07015CE8[] = {\n    {{{   926,    977,   2299}, 0, {   -42,  -3178}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   845,    969,   2708}, 0, {   990,  -3390}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1196,   1006,   2302}, 0, {     0,  -2500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   309,   1636,   1522}, 0, {     0,  -2784}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   114,   1636,   1113}, 0, {   990,  -2298}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -147,   1636,   1522}, 0, {     0,  -1646}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -150,   1636,   1113}, 0, {   990,  -1638}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   576,   1603,   1197}, 0, {   -26,  -3356}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   114,   1636,   1113}, 0, {   990,  -2778}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   309,   1636,   1522}, 0, {     0,  -2304}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   290,   1599,    899}, 0, {   990,  -3476}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   737,   1566,   1044}, 0, {   -26,  -3984}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   523,   1550,    683}, 0, {   990,  -4212}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   576,   1603,   1197}, 0, {     0,  -3424}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   290,   1599,    899}, 0, {   990,  -3410}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1289,    995,   2704}, 0, {   990,  -2282}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07015DE8 - 0x07015ED8\nstatic const Vtx rr_seg7_vertex_07015DE8[] = {\n    {{{   654,    930,   2202}, 0, {   -26,  -4092}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   448,    918,   2564}, 0, {   990,  -4270}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   926,    977,   2299}, 0, {     0,  -3362}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   845,    969,   2708}, 0, {   990,  -3206}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   392,    872,   1982}, 0, {   -30,  -5136}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   123,    871,   2291}, 0, {   990,  -5154}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   654,    930,   2202}, 0, {     0,  -4270}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   448,    918,   2564}, 0, {   990,  -4090}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   153,    870,   1727}, 0, {   -34,  -6068}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -180,    870,   1969}, 0, {   990,  -6200}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   392,    872,   1982}, 0, {     0,  -5194}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -447,   -788,  -2827}, 0, {     0,  -6522}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -447,   -788,  -2418}, 0, {   990,  -6522}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -182,  -1053,  -2418}, 0, {   990,  -7456}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   123,    871,   2291}, 0, {   990,  -5096}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07015ED8 - 0x07015FD8\nstatic const Vtx rr_seg7_vertex_07015ED8[] = {\n    {{{  -250,    717,   1143}, 0, {   -24,  -7958}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -530,    738,   1458}, 0, {   990,  -7700}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   153,    870,   1727}, 0, {     0,  -6148}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -180,    870,   1969}, 0, {   990,  -6120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1171,    512,    693}, 0, {   -28, -10302}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -530,    738,   1458}, 0, {   990,  -7962}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -250,    717,   1143}, 0, {     0,  -7696}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1267,    531,   1102}, 0, {   990, -10070}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -447,   -788,  -2827}, 0, {     0,  -6522}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -182,  -1053,  -2418}, 0, {   990,  -7456}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -182,  -1053,  -2827}, 0, {     0,  -7456}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    94,  -1125,  -2827}, 0, {   -36, -12238}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    94,  -1125,  -2418}, 0, {   990, -12250}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   227,  -1070,  -2420}, 0, {   990, -11890}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    -8,  -1125,  -2418}, 0, {   990,  -7928}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    -8,  -1125,  -2827}, 0, {     0,  -7928}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07015FD8 - 0x070160B8\nstatic const Vtx rr_seg7_vertex_07015FD8[] = {\n    {{{    -8,  -1125,  -2827}, 0, {     0,  -7928}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    94,  -1125,  -2418}, 0, {   990,  -8184}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    94,  -1125,  -2827}, 0, {     0,  -8184}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    -8,  -1125,  -2418}, 0, {   990,  -7928}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -110,    102,   -240}, 0, {     0,  -1990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -522,    267,   -649}, 0, {   990,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -522,    267,   -240}, 0, {     0,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -110,    102,   -649}, 0, {   990,  -1990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   937,   -613,  -2810}, 0, {     8,  -9752}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   968,   -597,  -2396}, 0, {   990,  -9594}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1269,   -456,  -2373}, 0, {   990,  -8760}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    94,  -1125,  -2827}, 0, {   -36, -12238}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   227,  -1070,  -2420}, 0, {   990, -11890}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   269,  -1053,  -2827}, 0, {     0, -11766}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070160B8 - 0x07016198\nstatic const Vtx rr_seg7_vertex_070160B8[] = {\n    {{{   269,  -1053,  -2827}, 0, {   -28, -11800}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   227,  -1070,  -2420}, 0, {   990, -11856}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   569,   -729,  -2397}, 0, {   990, -10650}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   606,   -716,  -2807}, 0, {     0, -10610}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   606,   -716,  -2807}, 0, {   -22, -10580}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   569,   -729,  -2397}, 0, {   990, -10678}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   968,   -597,  -2396}, 0, {   990,  -9630}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   937,   -613,  -2810}, 0, {     0,  -9716}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   937,   -613,  -2810}, 0, {     8,  -9752}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1269,   -456,  -2373}, 0, {   990,  -8760}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1441,   -485,  -2767}, 0, {     0,  -8474}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2081,   -153,  -1523}, 0, {   -26,  -5546}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1617,    -93,  -1255}, 0, {   990,  -4670}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2007,   -101,  -1103}, 0, {     0,  -4476}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07016198 - 0x07016288\nstatic const Vtx rr_seg7_vertex_07016198[] = {\n    {{{  1441,   -485,  -2767}, 0, {   -42,  -8760}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1491,   -339,  -2195}, 0, {   990,  -7706}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1844,   -363,  -2416}, 0, {     0,  -7410}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1269,   -456,  -2373}, 0, {   990,  -8474}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1844,   -363,  -2416}, 0, {     0,  -7668}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1491,   -339,  -2195}, 0, {   990,  -7450}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1636,   -192,  -1803}, 0, {   990,  -6344}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2032,   -204,  -1944}, 0, {     0,  -6340}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2032,   -204,  -1944}, 0, {   -30,  -6460}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1636,   -192,  -1803}, 0, {   990,  -6224}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1667,   -146,  -1536}, 0, {   990,  -5544}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2081,   -153,  -1523}, 0, {     0,  -5398}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1338,      0,   -382}, 0, {   -34,  -2552}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   843,     60,   -676}, 0, {   990,  -1534}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   908,     57,   -271}, 0, {     0,  -1434}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07016288 - 0x07016368\nstatic const Vtx rr_seg7_vertex_07016288[] = {\n    {{{  2081,   -153,  -1523}, 0, {   -26,  -5546}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1667,   -146,  -1536}, 0, {   990,  -5396}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1617,    -93,  -1255}, 0, {   990,  -4670}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2007,   -101,  -1103}, 0, {     0,  -4678}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1416,    -42,   -945}, 0, {   990,  -3538}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1716,    -50,   -657}, 0, {     0,  -3346}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1617,    -93,  -1255}, 0, {   990,  -4468}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1716,    -50,   -657}, 0, {     0,  -3532}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1416,    -42,   -945}, 0, {   990,  -3352}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1164,      9,   -760}, 0, {   990,  -2560}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1338,      0,   -382}, 0, {     0,  -2362}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1338,      0,   -382}, 0, {   -34,  -2552}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1164,      9,   -760}, 0, {   990,  -2370}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   843,     60,   -676}, 0, {   990,  -1534}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07016368 - 0x07016458\nstatic const Vtx rr_seg7_vertex_07016368[] = {\n    {{{ -2413,    307,    -94}, 0, {     0,  -2388}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2732,    307,   -361}, 0, {   990,  -2208}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2966,    307,     42}, 0, {   990,  -3372}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   908,     57,   -271}, 0, {   -28,  -1514}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   843,     60,   -676}, 0, {   990,  -1452}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   570,    102,   -649}, 0, {   990,   -760}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   606,    102,   -240}, 0, {     0,   -748}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   606,    102,   -240}, 0, {     0,   -798}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -110,    102,   -649}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -110,    102,   -240}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   570,    102,   -649}, 0, {   990,   -710}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2556,    307,    152}, 0, {     0,   -738}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2963,    307,   1098}, 0, {   990,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2554,    307,   1098}, 0, {     0,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2966,    307,     42}, 0, {   990,   -464}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07016458 - 0x07016548\nstatic const Vtx rr_seg7_vertex_07016458[] = {\n    {{{  -724,    307,   -240}, 0, {   -30,    -24}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1979,    307,   -735}, 0, {   992,  -3230}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1954,    307,   -323}, 0, {     0,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2413,    307,    -94}, 0, {     0,  -2388}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2966,    307,     42}, 0, {   990,  -3372}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2556,    307,    152}, 0, {     0,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2195,    307,   -276}, 0, {     0,  -2386}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2732,    307,   -361}, 0, {   990,  -3276}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2413,    307,    -94}, 0, {     0,  -3096}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2377,    307,   -659}, 0, {   990,  -2120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1954,    307,   -323}, 0, {     0,  -2482}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2377,    307,   -659}, 0, {   990,  -3362}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2195,    307,   -276}, 0, {     0,  -3096}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1979,    307,   -735}, 0, {   990,  -2350}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -723,    307,   -649}, 0, {   992,    -90}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07016548 - 0x07016638\nstatic const Vtx rr_seg7_vertex_07016548[] = {\n    {{{  -522,    267,   -240}, 0, {     0,  -2580}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -522,    267,   -649}, 0, {   990,  -2580}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -723,    307,   -649}, 0, {   990,  -3090}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -724,    307,   -240}, 0, {     0,  -3094}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -622,   -716,  -2827}, 0, {     0,  -6050}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -447,   -788,  -2418}, 0, {   990,  -6522}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -447,   -788,  -2827}, 0, {     0,  -6522}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -622,   -716,  -2418}, 0, {   990,  -6050}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1032,   -716,  -2827}, 0, {     0,  -5028}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1032,   -716,  -2418}, 0, {   990,  -5028}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1219,   -773,  -2827}, 0, {     0,  -4538}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1219,   -773,  -2418}, 0, {   990,  -4538}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1751,  -1485,  -2825}, 0, {     0,  -2270}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1606,  -1320,  -2415}, 0, {   990,  -2820}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1623,  -1339,  -2825}, 0, {     0,  -2756}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07016638 - 0x07016718\nstatic const Vtx rr_seg7_vertex_07016638[] = {\n    {{{ -1356,   -864,  -2827}, 0, {     0,  -4128}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1356,   -864,  -2418}, 0, {   990,  -4128}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1219,   -773,  -2418}, 0, {   990,  -4538}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1219,   -773,  -2827}, 0, {     0,  -4538}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1482,  -1015,  -2827}, 0, {     0,  -3638}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1464,   -993,  -2418}, 0, {   990,  -3708}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1356,   -864,  -2418}, 0, {   990,  -4130}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1623,  -1339,  -2825}, 0, {     0,  -2762}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1606,  -1320,  -2415}, 0, {   990,  -2814}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1482,  -1015,  -2827}, 0, {     0,  -3644}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1464,   -993,  -2418}, 0, {   990,  -3700}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2995,  -1740,  -2825}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2995,  -1740,  -2415}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2278,  -1740,  -2415}, 0, {   990,   -798}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07016718 - 0x07016808\nstatic const Vtx rr_seg7_vertex_07016718[] = {\n    {{{ -1751,  -1485,  -2825}, 0, {     0,  -2270}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1751,  -1485,  -2415}, 0, {   990,  -2270}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1606,  -1320,  -2415}, 0, {   990,  -2820}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2088,  -1687,  -2825}, 0, {     0,  -1290}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2088,  -1687,  -2415}, 0, {   990,  -1290}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2278,  -1740,  -2825}, 0, {     0,   -798}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2278,  -1740,  -2415}, 0, {   990,   -798}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2995,  -1740,  -2825}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1636,   1105,   2016}, 0, {     0,  -3100}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1965,   1101,   2266}, 0, {   988,  -3228}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1771,   1126,   1781}, 0, {     0,  -2422}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1990,    256,    693}, 0, {     0,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1267,    531,   1102}, 0, {   982,    336}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1171,    512,    693}, 0, {   -38,    560}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1990,    256,   1102}, 0, {   982,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07016808 - 0x070168E8\nstatic const Vtx rr_seg7_vertex_07016808[] = {\n    {{{  1196,   1006,   2302}, 0, {   -22,  -3088}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1289,    995,   2704}, 0, {   986,  -3202}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1467,   1074,   2204}, 0, {   -34,  -2354}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1694,   1059,   2563}, 0, {   986,  -2118}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1467,   1074,   2204}, 0, {   -28,  -2074}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1694,   1059,   2563}, 0, {   990,  -2358}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1636,   1105,   2016}, 0, {     0,  -1440}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1965,   1101,   2266}, 0, {   990,  -1350}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1773,   1126,   1232}, 0, {     0,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1952,   1126,    747}, 0, {   990,  -2310}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1632,   1126,   1009}, 0, {     0,  -2438}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1965,   1101,   2266}, 0, {   988,  -3228}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2165,   1126,   1920}, 0, {   988,  -2230}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1771,   1126,   1781}, 0, {     0,  -2422}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070168E8 - 0x070169C8\nstatic const Vtx rr_seg7_vertex_070168E8[] = {\n    {{{  1771,   1126,   1781}, 0, {     0,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2224,   1126,   1500}, 0, {   990,  -2244}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1810,   1126,   1500}, 0, {     0,  -2388}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2165,   1126,   1920}, 0, {   990,  -3302}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1810,   1126,   1500}, 0, {     0,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2166,   1126,   1089}, 0, {   990,  -2206}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1773,   1126,   1232}, 0, {     0,  -2426}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2224,   1126,   1500}, 0, {   990,  -3242}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1773,   1126,   1232}, 0, {     0,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2166,   1126,   1089}, 0, {   990,  -3316}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1952,   1126,    747}, 0, {   990,  -2310}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   920,   1126,    749}, 0, {     0,  -3102}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   848,   1126,    340}, 0, {   990,  -3284}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   655,   1126,    846}, 0, {     0,  -2398}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070169C8 - 0x07016AB8\nstatic const Vtx rr_seg7_vertex_070169C8[] = {\n    {{{  1632,   1126,   1009}, 0, {     0,  -3092}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1952,   1126,    747}, 0, {   990,  -3222}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1676,   1126,    486}, 0, {   990,  -2274}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1456,   1126,    842}, 0, {     0,  -2486}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1456,   1126,    842}, 0, {     0,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1275,   1126,    340}, 0, {   990,  -2246}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1202,   1126,    749}, 0, {     0,  -2426}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1676,   1126,    486}, 0, {   990,  -3310}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1202,   1126,    749}, 0, {     0,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   848,   1126,    340}, 0, {   990,  -2214}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   920,   1126,    749}, 0, {     0,  -2394}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1275,   1126,    340}, 0, {   990,  -3280}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   848,   1126,    340}, 0, {   990,  -3284}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   414,   1118,    499}, 0, {   990,  -2130}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   655,   1126,    846}, 0, {     0,  -2398}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07016AB8 - 0x07016BB8\nstatic const Vtx rr_seg7_vertex_07016AB8[] = {\n    {{{   655,   1126,    846}, 0, {     0,  -2080}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   414,   1118,    499}, 0, {   996,  -2348}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   530,   1142,    989}, 0, {   -26,  -1606}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   189,   1142,    761}, 0, {   996,  -1484}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   530,   1142,    989}, 0, {   -40,  -3112}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   189,   1142,    761}, 0, {   970,  -3090}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   415,   1181,   1160}, 0, {   -50,  -2588}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    13,   1172,   1015}, 0, {   970,  -2316}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   415,   1181,   1160}, 0, {   -34,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    13,   1172,   1015}, 0, {   992,  -3412}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   397,   1206,   1477}, 0, {   -30,  -2304}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -10,   1204,   1514}, 0, {   992,  -2164}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   397,   1206,   1477}, 0, {     0,  -3524}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -10,   1204,   1514}, 0, {   990,  -3576}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   418,   1236,   1643}, 0, {     0,  -3104}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    27,   1220,   1787}, 0, {   990,  -2888}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07016BB8 - 0x07016CB8\nstatic const Vtx rr_seg7_vertex_07016BB8[] = {\n    {{{   418,   1236,   1643}, 0, {     0,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    27,   1220,   1787}, 0, {   982,  -3280}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   531,   1283,   1833}, 0, {   -38,  -2534}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   204,   1272,   2091}, 0, {   982,  -2392}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   531,   1283,   1833}, 0, {   -36,  -3092}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   204,   1272,   2091}, 0, {   992,  -3308}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   678,   1312,   1961}, 0, {   -30,  -2604}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   486,   1299,   2326}, 0, {   992,  -2390}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   678,   1312,   1961}, 0, {     0,  -3090}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   486,   1299,   2326}, 0, {  1008,  -3268}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   884,   1364,   2036}, 0, {   -14,  -2530}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   855,   1354,   2446}, 0, {  1008,  -2290}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   884,   1364,   2036}, 0, {   -30,  -3096}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   855,   1354,   2446}, 0, {   960,  -3112}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1096,   1443,   2037}, 0, {   -60,  -2536}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1126,   1430,   2462}, 0, {   960,  -2408}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07016CB8 - 0x07016DB8\nstatic const Vtx rr_seg7_vertex_07016CB8[] = {\n    {{{  1096,   1443,   2037}, 0, {   -28,  -3092}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1126,   1430,   2462}, 0, {  1002,  -3402}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1294,   1467,   1965}, 0, {   -20,  -2564}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1563,   1533,   1642}, 0, {     0,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2015,   1533,   1437}, 0, {   990,  -2398}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1599,   1533,   1437}, 0, {     0,  -2578}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1519,   1455,   2311}, 0, {  1002,  -2352}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1294,   1467,   1965}, 0, {   -24,  -3096}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1519,   1455,   2311}, 0, {   986,  -3218}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1461,   1514,   1821}, 0, {   -34,  -2534}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1772,   1505,   2101}, 0, {   986,  -2386}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1461,   1514,   1821}, 0, {   -30,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1772,   1505,   2101}, 0, {   990,  -3314}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1563,   1533,   1642}, 0, {     0,  -2582}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1953,   1533,   1789}, 0, {   990,  -2412}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1953,   1533,   1789}, 0, {   990,  -3288}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07016DB8 - 0x07016EA8\nstatic const Vtx rr_seg7_vertex_07016DB8[] = {\n    {{{  1126,   1533,    941}, 0, {     0,  -3112}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1112,   1526,    521}, 0, {   996,  -3358}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   737,   1566,   1044}, 0, {   -26,  -2106}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1599,   1533,   1437}, 0, {     0,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1948,   1533,   1056}, 0, {   990,  -2312}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1565,   1533,   1246}, 0, {     0,  -2614}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2015,   1533,   1437}, 0, {   990,  -3278}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1565,   1533,   1246}, 0, {     0,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1948,   1533,   1056}, 0, {   990,  -2378}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1529,   1533,    607}, 0, {   990,   -848}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1318,   1533,    981}, 0, {     0,  -1172}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1318,   1533,    981}, 0, {     0,  -3100}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1529,   1533,    607}, 0, {   992,  -3428}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1126,   1533,    941}, 0, {   -30,  -2610}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1112,   1526,    521}, 0, {   992,  -2364}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07016EA8 - 0x07016F98\nstatic const Vtx rr_seg7_vertex_07016EA8[] = {\n    {{{ -1712,   1844,   1535}, 0, {     0,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2327,   1844,   1126}, 0, {   990,   -542}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2327,   1844,   1535}, 0, {     0,   -542}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1112,   1526,    521}, 0, {   996,  -3358}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   523,   1550,    683}, 0, {   996,  -1832}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   737,   1566,   1044}, 0, {   -26,  -2106}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -147,   1636,   1522}, 0, {     0,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1200,   1640,   1126}, 0, {   990,    540}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1200,   1640,   1535}, 0, {     0,    552}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -150,   1636,   1113}, 0, {   990,  -2082}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1200,   1640,   1535}, 0, {     0,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1712,   1844,   1126}, 0, {   990,   -700}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1712,   1844,   1535}, 0, {     0,   -700}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1200,   1640,   1126}, 0, {   990,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1712,   1844,   1126}, 0, {   990,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07016F98 - 0x07016FD8\nstatic const Vtx rr_seg7_vertex_07016F98[] = {\n    {{{ -2605,    256,    693}, 0, {     0, -23702}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2605,    256,   1102}, 0, {   990, -23702}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1990,    256,   1102}, 0, {   990, -22184}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1990,    256,    693}, 0, {     0, -22168}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07016FD8 - 0x07017530\nstatic const Gfx rr_seg7_dl_07016FD8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_07015CE8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0,  1, 15,  2, 0x0),\n    gsSPVertex(rr_seg7_vertex_07015DE8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 9, 14, 10, 0x0),\n    gsSPVertex(rr_seg7_vertex_07015ED8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(10,  9, 14, 0x0, 10, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07015FD8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_070160B8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07016198, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07016288, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07016368, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_07016458, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(rr_seg7_vertex_07016548, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  7,  4, 0x0,  8,  9,  7, 0x0),\n    gsSP2Triangles(10, 11,  9, 0x0, 10,  9,  8, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07016638, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  0, 0x0,  5,  6,  0, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  8, 10,  9, 0x0),\n    gsSP1Triangle(11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07016718, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 3,  1,  0, 0x0,  5,  6,  4, 0x0),\n    gsSP2Triangles( 5,  4,  3, 0x0,  7,  6,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_07016808, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_070168E8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_070169C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07016AB8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07016BB8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07016CB8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 1,  6,  2, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0,  3, 15,  4, 0x0),\n    gsSPVertex(rr_seg7_vertex_07016DB8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07016EA8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(rr_seg7_vertex_07016F98, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07017530 - 0x070175B0\nconst Gfx rr_seg7_dl_07017530[] = {\n    gsDPPipeSync(),\n    gsDPSetEnvColor(255, 255, 255, 100),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADEA, G_CC_MODULATERGBFADEA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_07016FD8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/2/geo.inc.c",
    "content": "// 0x0E000660\nconst GeoLayout rr_geo_000660[] = {\n    GEO_CULLING_RADIUS(3000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, rr_seg7_dl_07002CC8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/2/model.inc.c",
    "content": "// 0x070021D8 - 0x070022C8\nstatic const Vtx rr_seg7_vertex_070021D8[] = {\n    {{{   984,      0,    210}, 0, {  2678,   2252}, {0xfe, 0xff, 0xcd, 0xff}}},\n    {{{   404,      0,    210}, 0, {  1956,   2976}, {0xfe, 0xff, 0xcd, 0xff}}},\n    {{{  -101,      0,    717}, 0, {   690,   2976}, {0xfe, 0xff, 0xcd, 0xff}}},\n    {{{  -101,      0,   1296}, 0, {     0,   2252}, {0xfe, 0xff, 0xcd, 0xff}}},\n    {{{   404,      0,   1803}, 0, {     0,    990}, {0xfe, 0xff, 0xcd, 0xff}}},\n    {{{   984,      0,   1803}, 0, {   690,    268}, {0xfe, 0xff, 0xcd, 0xff}}},\n    {{{  1491,      0,   1296}, 0, {  1956,    268}, {0xfe, 0xff, 0xcd, 0xff}}},\n    {{{  1491,      0,    717}, 0, {  2678,    990}, {0xfe, 0xff, 0xcd, 0xff}}},\n    {{{  -101,   -153,   1296}, 0, {     0,   2252}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   288,   -613,   1144}, 0, {   646,   1956}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   542,   -613,   1397}, 0, {   646,   1322}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   404,   -153,    210}, 0, {  1956,   2976}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   288,   -613,    854}, 0, {  1006,   2316}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -101,   -153,    717}, 0, {   690,   2976}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   542,   -613,    601}, 0, {  1640,   2316}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x070022C8 - 0x070023B8\nstatic const Vtx rr_seg7_vertex_070022C8[] = {\n    {{{  1491,   -153,    717}, 0, {  2678,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   831,   -613,    601}, 0, {  2000,   1956}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   984,   -153,    210}, 0, {  2678,   2252}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1085,   -613,    854}, 0, {  2000,   1322}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   984,   -153,   1803}, 0, {   690,    268}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1085,   -613,   1144}, 0, {  1640,    964}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1491,   -153,   1296}, 0, {  1956,    268}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   831,   -613,   1397}, 0, {  1006,    964}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -101,   -153,   1296}, 0, {     0,   2252}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   542,   -613,   1397}, 0, {   646,   1322}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   404,   -153,   1803}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -101,   -153,    717}, 0, {   690,   2976}, {0x6d, 0x68, 0x28, 0xff}}},\n    {{{  -101,      0,   1296}, 0, {     0,   2252}, {0x6d, 0x68, 0x28, 0xff}}},\n    {{{  -101,      0,    717}, 0, {   690,   2976}, {0x6d, 0x68, 0x28, 0xff}}},\n    {{{  -101,   -153,   1296}, 0, {     0,   2252}, {0x6d, 0x68, 0x28, 0xff}}},\n};\n\n// 0x070023B8 - 0x070024B8\nstatic const Vtx rr_seg7_vertex_070023B8[] = {\n    {{{  1491,   -153,   1296}, 0, {  1956,    268}, {0x6d, 0x68, 0x28, 0xff}}},\n    {{{  1491,   -153,    717}, 0, {  2678,    990}, {0x6d, 0x68, 0x28, 0xff}}},\n    {{{  1491,      0,    717}, 0, {  2678,    990}, {0x6d, 0x68, 0x28, 0xff}}},\n    {{{  1491,      0,   1296}, 0, {  1956,    268}, {0x6d, 0x68, 0x28, 0xff}}},\n    {{{   984,   -153,    210}, 0, {  2678,   2252}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   542,   -613,    601}, 0, {  1640,   2316}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   404,   -153,    210}, 0, {  1956,   2976}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   831,   -613,    601}, 0, {  2000,   1956}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   404,   -153,   1803}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   831,   -613,   1397}, 0, {  1006,    964}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   984,   -153,   1803}, 0, {   690,    268}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   542,   -613,   1397}, 0, {   646,   1322}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   288,   -613,    854}, 0, {  1006,   2316}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   542,   -613,    601}, 0, {  1640,   2316}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   831,   -613,    601}, 0, {  2000,   1956}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1085,   -613,    854}, 0, {  2000,   1322}, {0x55, 0x55, 0x55, 0xff}}},\n};\n\n// 0x070024B8 - 0x07002598\nstatic const Vtx rr_seg7_vertex_070024B8[] = {\n    {{{   288,   -613,    854}, 0, {  1006,   2316}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1085,   -613,    854}, 0, {  2000,   1322}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1085,   -613,   1144}, 0, {  1640,    964}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   831,   -613,   1397}, 0, {  1006,    964}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   542,   -613,   1397}, 0, {   646,   1322}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   288,   -613,   1144}, 0, {   646,   1956}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -101,   -153,    717}, 0, {   690,   2976}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -101,   -153,   1296}, 0, {     0,   2252}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1491,   -153,   1296}, 0, {  1956,    268}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1491,   -153,    717}, 0, {  2678,    990}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   984,      0,   1803}, 0, {   690,    268}, {0x96, 0x96, 0x00, 0xff}}},\n    {{{   404,      0,   1803}, 0, {     0,    990}, {0x96, 0x96, 0x00, 0xff}}},\n    {{{   404,   -153,   1803}, 0, {     0,    990}, {0x96, 0x96, 0x00, 0xff}}},\n    {{{   984,   -153,   1803}, 0, {   690,    268}, {0x96, 0x96, 0x00, 0xff}}},\n};\n\n// 0x07002598 - 0x07002688\nstatic const Vtx rr_seg7_vertex_07002598[] = {\n    {{{   404,      0,    210}, 0, {  1956,   2976}, {0x96, 0x96, 0x00, 0xff}}},\n    {{{   984,      0,    210}, 0, {  2678,   2252}, {0x96, 0x96, 0x00, 0xff}}},\n    {{{   404,   -153,    210}, 0, {  1956,   2976}, {0x96, 0x96, 0x00, 0xff}}},\n    {{{   984,   -153,    210}, 0, {  2678,   2252}, {0x96, 0x96, 0x00, 0xff}}},\n    {{{  1491,   -153,    717}, 0, {  2678,    990}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   984,      0,    210}, 0, {  2678,   2252}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  1491,      0,    717}, 0, {  2678,    990}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  1491,   -153,   1296}, 0, {  1956,    268}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  1491,      0,   1296}, 0, {  1956,    268}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   984,      0,   1803}, 0, {   690,    268}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   984,   -153,   1803}, 0, {   690,    268}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   404,      0,   1803}, 0, {     0,    990}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  -101,      0,   1296}, 0, {     0,   2252}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  -101,   -153,   1296}, 0, {     0,   2252}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   404,   -153,   1803}, 0, {     0,    990}, {0x78, 0x78, 0x00, 0xff}}},\n};\n\n// 0x07002688 - 0x070026F8\nstatic const Vtx rr_seg7_vertex_07002688[] = {\n    {{{  -101,   -153,    717}, 0, {   690,   2976}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   404,      0,    210}, 0, {  1956,   2976}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   404,   -153,    210}, 0, {  1956,   2976}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  -101,      0,    717}, 0, {   690,   2976}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  1491,   -153,    717}, 0, {  2678,    990}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   984,   -153,    210}, 0, {  2678,   2252}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   984,      0,    210}, 0, {  2678,   2252}, {0x78, 0x78, 0x00, 0xff}}},\n};\n\n// 0x070026F8 - 0x070027F8\nstatic const Vtx rr_seg7_vertex_070026F8[] = {\n#ifdef VERSION_JP\n    {{{  1636,    512,   -792}, 0, {  2694,   3714}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   817,    717,   -792}, 0, {   650,    308}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   817,    512,   -792}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1595,    512,   1072}, 0, {  3290,  -8974}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1595,    717,   1072}, 0, {  3800,  -9486}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -980,    717,   1072}, 0, {  5334,  -7952}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -980,    512,   1072}, 0, {  4822,  -7442}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -980,    717,   2301}, 0, {  5334,  -7952}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1595,    512,   2301}, 0, {  3290,  -8974}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -980,    512,   2301}, 0, {  4822,  -7442}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1595,    717,   2301}, 0, {  3800,  -9486}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   817,    512,  -1406}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   817,    717,  -1406}, 0, {   650,    308}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1636,    717,  -1406}, 0, {  3374,   3032}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1636,    512,  -1406}, 0, {  2694,   3714}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1636,    717,   -792}, 0, {  3374,   3032}, {0x96, 0x96, 0x96, 0xff}}},\n#else\n    {{{  1636,    512,   -792}, 0, {  2694,   3714}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   817,    717,   -792}, 0, {   650,    308}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   817,    512,   -792}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1595,    512,   1072}, 0, {  3290,  -8974}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1595,    717,   1072}, 0, {  3800,  -9486}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -980,    717,   1072}, 0, {  5334,  -7952}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -980,    512,   1072}, 0, {  4822,  -7442}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -980,    717,   2301}, 0, {  5334,  -7952}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1595,    512,   2199}, 0, {  3290,  -8974}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -980,    512,   2199}, 0, {  4822,  -7442}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1595,    717,   2301}, 0, {  3800,  -9486}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   817,    512,  -1406}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   817,    717,  -1406}, 0, {   650,    308}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1636,    717,  -1406}, 0, {  3374,   3032}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1636,    512,  -1406}, 0, {  2694,   3714}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1636,    717,   -792}, 0, {  3374,   3032}, {0x96, 0x96, 0x96, 0xff}}},\n#endif\n};\n\n// 0x070027F8 - 0x070028E8\nstatic const Vtx rr_seg7_vertex_070027F8[] = {\n#ifdef VERSION_JP\n    {{{ -1595,    717,   2301}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -980,    717,   1072}, 0, {  4566,   2522}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1595,    717,   1072}, 0, {  3034,   4054}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -980,    717,   2301}, 0, {  1502,   -542}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1636,    717,  -1406}, 0, {  4702,    344}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   817,    717,   -792}, 0, {   -64,   1022}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1636,    717,   -792}, 0, {  2658,  -1700}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   817,    717,  -1406}, 0, {  1978,   3066}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1636,    512,  -1406}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1636,    717,   -792}, 0, {  2694,   -372}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1636,    512,   -792}, 0, {  2012,  -1054}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -980,    512,   1072}, 0, {  -540,    478}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -980,    717,   2301}, 0, {  3034,  -2076}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -980,    512,   2301}, 0, {  2524,  -2588}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -980,    717,   1072}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n#else\n    {{{ -1595,    717,   2301}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -980,    717,   1072}, 0, {  4566,   2522}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1595,    717,   1072}, 0, {  3034,   4054}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -980,    717,   2301}, 0, {  1502,   -542}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1636,    717,  -1406}, 0, {  4702,    344}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   817,    717,   -792}, 0, {   -64,   1022}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1636,    717,   -792}, 0, {  2658,  -1700}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   817,    717,  -1406}, 0, {  1978,   3066}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1636,    512,  -1406}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1636,    717,   -792}, 0, {  2694,   -372}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1636,    512,   -792}, 0, {  2012,  -1054}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -980,    512,   1072}, 0, {   478,   1500}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -980,    717,   2301}, 0, {  4056,  -1054}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -980,    512,   2199}, 0, {  3290,  -1310}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -980,    717,   1072}, 0, {   990,   2010}, {0x7d, 0x7d, 0x7d, 0xff}}},\n#endif\n};\n\n// 0x070028E8 - 0x070029D8\nstatic const Vtx rr_seg7_vertex_070028E8[] = {\n#ifdef VERSION_JP\n    {{{ -1595,    512,   2301}, 0, {  2524,  -2588}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1595,    717,   2301}, 0, {  3034,  -2076}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1595,    717,   1072}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1595,    512,   1072}, 0, {  -540,    478}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   817,    512,   -792}, 0, {  2012,  -1054}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   817,    717,   -792}, 0, {  2694,   -372}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   817,    717,  -1406}, 0, {   650,   1670}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   817,    512,  -1406}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1636,    512,  -1406}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1636,    717,  -1406}, 0, {   650,   1670}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1636,    717,   -792}, 0, {  2694,   -372}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   817,    512,  -1406}, 0, {  1978,   3066}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1636,    512,   -792}, 0, {  2658,  -1700}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   817,    512,   -792}, 0, {   -64,   1022}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1636,    512,  -1406}, 0, {  4702,    344}, {0x55, 0x55, 0x55, 0xff}}},\n#else\n    {{{ -1595,    512,   2199}, 0, { -2330,  -2332}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1595,    717,   2301}, 0, { -2074,  -3098}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1595,    717,   1072}, 0, {   990,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1595,    512,   1072}, 0, {   480,    480}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   817,    512,   -792}, 0, {  2012,  -1054}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   817,    717,   -792}, 0, {  2694,   -372}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   817,    717,  -1406}, 0, {   650,   1670}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   817,    512,  -1406}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1636,    512,  -1406}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1636,    717,  -1406}, 0, {   650,   1670}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1636,    717,   -792}, 0, {  2694,   -372}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   817,    512,  -1406}, 0, {  1978,   3066}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1636,    512,   -792}, 0, {  2658,  -1700}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   817,    512,   -792}, 0, {   -64,   1022}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1636,    512,  -1406}, 0, {  4702,    344}, {0x55, 0x55, 0x55, 0xff}}},\n#endif\n};\n\n// 0x070029D8 - 0x07002A18\nstatic const Vtx rr_seg7_vertex_070029D8[] = {\n#ifdef VERSION_JP\n    {{{ -1595,    512,   1072}, 0, {  3034,   4054}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -980,    512,   1072}, 0, {  4566,   2522}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -980,    512,   2301}, 0, {  1502,   -542}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1595,    512,   2301}, 0, {     0,    990}, {0x55, 0x55, 0x55, 0xff}}},\n#else\n    {{{ -1595,    512,   1072}, 0, {  3034,   4054}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -980,    512,   1072}, 0, {  4566,   2522}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -980,    512,   2199}, 0, {  1502,   -542}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1595,    512,   2199}, 0, {     0,    990}, {0x55, 0x55, 0x55, 0xff}}},\n#endif\n};\n\n// 0x07002A18 - 0x07002BC8\nstatic const Gfx rr_seg7_dl_07002A18[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_070021D8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  0,  4,  5, 0x0),\n    gsSP2Triangles( 0,  5,  6, 0x0,  0,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_070022C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_070023B8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_070024B8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  0,  4,  5, 0x0),\n    gsSP2Triangles( 6,  0,  7, 0x0,  0,  5,  7, 0x0),\n    gsSP2Triangles( 8,  2,  9, 0x0,  2,  1,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07002598, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07002688, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP1Triangle( 4,  5,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07002BC8 - 0x07002CC8\nstatic const Gfx rr_seg7_dl_07002BC8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_070026F8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(rr_seg7_vertex_070027F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_070028E8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_070029D8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07002CC8 - 0x07002D40\nconst Gfx rr_seg7_dl_07002CC8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_07002A18),\n    gsSPDisplayList(rr_seg7_dl_07002BC8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/20/geo.inc.c",
    "content": "// 0x0E000818\nconst GeoLayout rr_geo_000818[] = {\n    GEO_CULLING_RADIUS(5000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, rr_seg7_dl_07018B58),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/20/model.inc.c",
    "content": "// 0x070175B0 - 0x070176A0\nstatic const Vtx rr_seg7_vertex_070175B0[] = {\n    {{{  2275,    154,  -2741}, 0, {     0,  -8060}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1981,    154,  -2442}, 0, {   990,  -7846}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2181,    154,  -2143}, 0, {   990,  -6950}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2667,    154,  -1330}, 0, {     0,  -4864}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2257,    154,  -1438}, 0, {   990,  -4596}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1203,    154,    434}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1515,    154,    713}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2257,    154,  -1798}, 0, {   990,  -5762}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2257,    154,  -1438}, 0, {   990,  -4864}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2667,    154,  -1330}, 0, {     0,  -4596}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2667,    154,  -1842}, 0, {     0,  -5874}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2564,    154,  -2307}, 0, {     0,  -6950}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2257,    154,  -1798}, 0, {   990,  -5874}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2667,    154,  -1842}, 0, {     0,  -5762}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2181,    154,  -2143}, 0, {   990,  -6758}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070176A0 - 0x07017790\nstatic const Vtx rr_seg7_vertex_070176A0[] = {\n    {{{   -10,    -49,  -2965}, 0, {     0, -13432}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   916,     55,  -2688}, 0, {   990, -11230}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   908,     49,  -3101}, 0, {     0, -11102}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2275,    154,  -2741}, 0, {     0,  -8060}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2181,    154,  -2143}, 0, {   990,  -6950}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2564,    154,  -2307}, 0, {     0,  -6758}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1873,    154,  -2998}, 0, {     0,  -9036}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1737,    154,  -2598}, 0, {   990,  -8784}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1981,    154,  -2442}, 0, {   990,  -8060}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2275,    154,  -2741}, 0, {     0,  -7846}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   908,     49,  -3101}, 0, {   -26, -11232}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   916,     55,  -2688}, 0, {   990, -11100}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1737,    154,  -2598}, 0, {   990,  -9024}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1873,    154,  -2998}, 0, {     0,  -8796}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   148,    -38,  -2574}, 0, {   990, -13182}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07017790 - 0x07017880\nstatic const Vtx rr_seg7_vertex_07017790[] = {\n    {{{  -241,   3226,  -2135}, 0, {     0,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -241,   1894,  -2545}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -241,   1894,  -2135}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -359,    -56,  -2700}, 0, {   -40, -14256}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   148,    -38,  -2574}, 0, {   990, -13446}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -10,    -49,  -2965}, 0, {     0, -13166}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -19,    -54,  -2444}, 0, {   990, -13978}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -490,    -51,  -2360}, 0, {     0, -14882}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -81,    -52,  -2282}, 0, {   990, -14696}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -19,    -54,  -2444}, 0, {   990, -14262}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -359,    -56,  -2700}, 0, {     0, -13972}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -143,    120,   -925}, 0, {   990, -18278}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -81,    -52,  -2282}, 0, {   990, -14862}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -490,    -51,  -2360}, 0, {     0, -14716}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -552,    120,   -943}, 0, {   -24, -18280}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07017880 - 0x07017980\nstatic const Vtx rr_seg7_vertex_07017880[] = {\n    {{{  -446,   -153,  -2135}, 0, {     0,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -446,   -153,  -2545}, 0, {   990,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -753,     51,  -2545}, 0, {   990,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -241,   3226,  -2135}, 0, {     0,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -241,   3226,  -2545}, 0, {   990,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -241,   1894,  -2545}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -987,    759,  -2140}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -987,    759,  -2550}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1367,   1280,  -2622}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1367,   1280,  -2212}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -753,     51,  -2135}, 0, {     0,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    14,   -153,  -2135}, 0, {     0,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    14,   -153,  -2545}, 0, {   990,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   372,    256,  -2135}, 0, {     0,  -4120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   372,    256,  -2545}, 0, {   990,  -4120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   372,    973,  -2135}, 0, {     0,  -5142}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07017980 - 0x07017A60\nstatic const Vtx rr_seg7_vertex_07017980[] = {\n    {{{   372,    973,  -2135}, 0, {     0,  -5142}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   372,    973,  -2545}, 0, {   990,  -5142}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   372,    256,  -2545}, 0, {   990,  -4120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   168,   1485,  -2135}, 0, {     0,  -6164}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   168,   1485,  -2545}, 0, {   990,  -6164}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2903,   1280,  -2289}, 0, {     0,   -172}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3064,   1280,  -2699}, 0, {   990,    124}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3610,   1089,  -2278}, 0, {   990,  -1662}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -241,   1894,  -2135}, 0, {     0,  -7186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -241,   1894,  -2545}, 0, {   990,  -7186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1367,   1280,  -2212}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2338,   1280,  -2699}, 0, {   990,  -1520}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2354,   1280,  -2289}, 0, {     0,  -1480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1367,   1280,  -2622}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07017A60 - 0x07017B40\nstatic const Vtx rr_seg7_vertex_07017A60[] = {\n    {{{ -2354,   1280,  -2289}, 0, {     0,  -1520}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2338,   1280,  -2699}, 0, {   990,  -1480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3064,   1280,  -2699}, 0, {   990,  -3290}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2903,   1280,  -2289}, 0, {     0,  -2890}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3555,    741,   -848}, 0, {     0,  -8272}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3883,    616,   -372}, 0, {   990,  -9328}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3505,    656,   -575}, 0, {   -24,  -8996}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2903,   1280,  -2289}, 0, {     0,   -172}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3610,   1089,  -2278}, 0, {   990,  -1662}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3291,   1121,  -2004}, 0, {    -2,  -1432}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3291,   1121,  -2004}, 0, {     0,   -538}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3610,   1089,  -2278}, 0, {   990,   -512}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3874,    937,  -1933}, 0, {   990,  -1658}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3504,    973,  -1740}, 0, {    -6,  -1460}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07017B40 - 0x07017C20\nstatic const Vtx rr_seg7_vertex_07017B40[] = {\n    {{{ -3504,    973,  -1740}, 0, {     0,  -2772}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3968,    724,   -806}, 0, {   990,  -5264}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3555,    741,   -848}, 0, {   -62,  -5068}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3874,    937,  -1933}, 0, {   990,  -2392}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3555,    741,   -848}, 0, {     0,  -8272}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3968,    724,   -806}, 0, {   990,  -8192}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3883,    616,   -372}, 0, {   990,  -9328}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -855,    205,    652}, 0, {     0,  -1420}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -692,    181,   1060}, 0, {   990,   -994}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    22,    205,    352}, 0, {   990,  -3504}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3505,    656,   -575}, 0, {     0,  -1198}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3883,    616,   -372}, 0, {   990,   -774}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2316,    393,    835}, 0, {   990,  -5742}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2122,    403,    468}, 0, {   -50,  -5564}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07017C20 - 0x07017D00\nstatic const Vtx rr_seg7_vertex_07017C20[] = {\n    {{{ -2122,    403,    468}, 0, {     0,  -2666}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2316,    393,    835}, 0, {   990,  -2508}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1633,    301,   1068}, 0, {   990,  -4324}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1564,    311,    658}, 0, {   -30,  -4154}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1564,    311,    658}, 0, {     0,   1804}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -692,    181,   1060}, 0, {   990,   -386}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -855,    205,    652}, 0, {     0,     18}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1633,    301,   1068}, 0, {   990,   1978}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3556,  -2303,   2281}, 0, {     0, -20360}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3554,  -2301,   2691}, 0, {   990, -20338}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4276,  -2447,   2680}, 0, {   990, -22176}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -855,    205,    652}, 0, {     0,  -1420}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    22,    205,    352}, 0, {   990,  -3504}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -409,    205,    205}, 0, {   -36,  -2996}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07017D00 - 0x07017DE0\nstatic const Vtx rr_seg7_vertex_07017D00[] = {\n    {{{  -409,    205,    205}, 0, {     0,    590}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    22,    205,    352}, 0, {   990,   1084}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -143,    120,   -925}, 0, {   990,  -2220}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -552,    120,   -943}, 0, {   -30,  -2306}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4269,  -2447,   2271}, 0, {     0, -22168}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4276,  -2447,   2680}, 0, {   990, -22184}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4884,  -2447,   2271}, 0, {     0, -23702}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4884,  -2447,   2680}, 0, {   990, -23702}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3556,  -2303,   2281}, 0, {     0, -20360}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4276,  -2447,   2680}, 0, {   990, -22176}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4269,  -2447,   2271}, 0, {     0, -22176}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   981,    154,   2337}, 0, {     0, -11252}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   818,    154,   2781}, 0, {   990, -10706}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1372,     43,   2704}, 0, {   990, -12128}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07017DE0 - 0x07017EE0\nstatic const Vtx rr_seg7_vertex_07017DE0[] = {\n    {{{  2839,  -1689,   2281}, 0, {     0, -17996}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3554,  -2301,   2691}, 0, {   990, -20346}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3556,  -2303,   2281}, 0, {     0, -20352}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2839,  -1689,   2691}, 0, {   990, -17996}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2071,   -409,   2281}, 0, {     0, -14272}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2069,   -405,   2691}, 0, {   990, -14260}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1403,     17,   2288}, 0, {     0, -12300}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1372,     43,   2704}, 0, {   990, -12186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2071,   -409,   2281}, 0, {   -18, -14280}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2069,   -405,   2691}, 0, {   990, -14254}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1515,    154,    713}, 0, {     0,  -4640}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1203,    154,    434}, 0, {   990,  -4864}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   491,    154,    949}, 0, {   990,  -7058}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   981,    154,   2337}, 0, {     0, -11252}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1372,     43,   2704}, 0, {   990, -12128}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1403,     17,   2288}, 0, {     4, -12358}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07017EE0 - 0x07017F90\nstatic const Vtx rr_seg7_vertex_07017EE0[] = {\n    {{{   715,    154,   2018}, 0, {     0,  -9650}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   278,    154,   2134}, 0, {   990,  -9172}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   981,    154,   2337}, 0, {     0, -10684}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   818,    154,   2781}, 0, {   990, -11274}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   865,    154,   1184}, 0, {     0,  -7058}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   278,    154,   2134}, 0, {   990,  -9650}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   715,    154,   2018}, 0, {     0,  -9172}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   491,    154,    949}, 0, {   990,  -6644}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1515,    154,    713}, 0, {     0,  -4640}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   491,    154,    949}, 0, {   990,  -7058}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   865,    154,   1184}, 0, {     0,  -6644}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07017F90 - 0x07018010\nstatic const Vtx rr_seg7_vertex_07017F90[] = {\n    {{{  -357,   -204,  -3713}, 0, {   224,    734}, {0x5d, 0x00, 0x00, 0xff}}},\n    {{{  -102,   -225,  -3883}, 0, {  1756,    734}, {0x5d, 0x00, 0x00, 0xff}}},\n    {{{  -214,    -25,  -3891}, 0, {  1246,   -288}, {0x5d, 0x00, 0x00, 0xff}}},\n    {{{  -299,    -18,  -3834}, 0, {   734,   -288}, {0x5d, 0x00, 0x00, 0xff}}},\n    {{{  -129,    -18,  -3834}, 0, {   342,  -1256}, {0x5d, 0x00, 0x00, 0xff}}},\n    {{{  -326,   -225,  -3883}, 0, {  1364,   -234}, {0x5d, 0x00, 0x00, 0xff}}},\n    {{{   -71,   -204,  -3713}, 0, {  -166,   -234}, {0x5d, 0x00, 0x00, 0xff}}},\n    {{{  -214,    -25,  -3891}, 0, {   854,  -1256}, {0x5d, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07018010 - 0x07018100\nstatic const Vtx rr_seg7_vertex_07018010[] = {\n    {{{ -2838,    256,   -153}, 0, {   990,    990}, {0x79, 0xbe, 0xda, 0xff}}},\n    {{{ -2838,    512,   -153}, 0, {   990,      0}, {0x79, 0xbe, 0xda, 0xff}}},\n    {{{ -1958,    256,    463}, 0, {     0,    990}, {0x79, 0xbe, 0xda, 0xff}}},\n    {{{ -3453,    563,  -1689}, 0, {   990,    990}, {0x79, 0xbe, 0xda, 0xff}}},\n    {{{ -3453,    922,  -1689}, 0, {   990,      0}, {0x79, 0xbe, 0xda, 0xff}}},\n    {{{ -3453,    922,   -613}, 0, {     0,      0}, {0x79, 0xbe, 0xda, 0xff}}},\n    {{{ -3453,    563,   -613}, 0, {     0,    990}, {0x79, 0xbe, 0xda, 0xff}}},\n    {{{ -4067,    563,   -613}, 0, {     0,    990}, {0x79, 0xbe, 0xda, 0xff}}},\n    {{{ -4067,    922,   -613}, 0, {     0,      0}, {0x79, 0xbe, 0xda, 0xff}}},\n    {{{ -4067,    922,  -1689}, 0, {   990,      0}, {0x79, 0xbe, 0xda, 0xff}}},\n    {{{ -4067,    563,  -1689}, 0, {   990,    990}, {0x79, 0xbe, 0xda, 0xff}}},\n    {{{ -2310,    256,    966}, 0, {     0,    990}, {0x79, 0xbe, 0xda, 0xff}}},\n    {{{ -2310,    512,    966}, 0, {     0,      0}, {0x79, 0xbe, 0xda, 0xff}}},\n    {{{ -3191,    256,    350}, 0, {   990,    990}, {0x79, 0xbe, 0xda, 0xff}}},\n    {{{ -3191,    512,    350}, 0, {   990,      0}, {0x79, 0xbe, 0xda, 0xff}}},\n};\n\n// 0x07018100 - 0x070181F0\nstatic const Vtx rr_seg7_vertex_07018100[] = {\n    {{{  2355,   -259,   2857}, 0, {   990,      0}, {0x79, 0xbe, 0xda, 0xff}}},\n    {{{  2355,  -1433,   2857}, 0, {   990,    990}, {0x79, 0xbe, 0xda, 0xff}}},\n    {{{  2355,  -1433,   2242}, 0, {     0,    990}, {0x79, 0xbe, 0xda, 0xff}}},\n    {{{ -2838,    512,   -153}, 0, {   990,      0}, {0x79, 0xbe, 0xda, 0xff}}},\n    {{{ -1958,    512,    463}, 0, {     0,      0}, {0x79, 0xbe, 0xda, 0xff}}},\n    {{{ -1958,    256,    463}, 0, {     0,    990}, {0x79, 0xbe, 0xda, 0xff}}},\n    {{{  3351,  -2354,   2870}, 0, {   990,    990}, {0x79, 0xbe, 0xda, 0xff}}},\n    {{{  3351,  -2354,   2256}, 0, {    -6,    990}, {0x79, 0xbe, 0xda, 0xff}}},\n    {{{  3351,  -1689,   2870}, 0, {   990,      0}, {0x79, 0xbe, 0xda, 0xff}}},\n    {{{  3351,  -1689,   2256}, 0, {    -6,      0}, {0x79, 0xbe, 0xda, 0xff}}},\n    {{{  2941,  -1689,   2256}, 0, {   990,      0}, {0x79, 0xbe, 0xda, 0xff}}},\n    {{{  2941,  -2354,   2256}, 0, {   990,    990}, {0x79, 0xbe, 0xda, 0xff}}},\n    {{{  2941,  -1689,   2870}, 0, {     0,      0}, {0x79, 0xbe, 0xda, 0xff}}},\n    {{{  2941,  -2354,   2870}, 0, {     0,    990}, {0x79, 0xbe, 0xda, 0xff}}},\n    {{{  2355,   -259,   2242}, 0, {     0,      0}, {0x79, 0xbe, 0xda, 0xff}}},\n};\n\n// 0x070181F0 - 0x070182F0\nstatic const Vtx rr_seg7_vertex_070181F0[] = {\n    {{{  1946,   -259,   2857}, 0, {     0,      0}, {0x79, 0xbe, 0xda, 0xff}}},\n    {{{  1946,  -1433,   2242}, 0, {   990,    990}, {0x79, 0xbe, 0xda, 0xff}}},\n    {{{  1946,  -1433,   2857}, 0, {     0,    990}, {0x79, 0xbe, 0xda, 0xff}}},\n    {{{  1946,   -259,   2242}, 0, {   990,      0}, {0x79, 0xbe, 0xda, 0xff}}},\n    {{{  3351,  -2354,   2870}, 0, {     0,    990}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  2941,  -2354,   2870}, 0, {  -358,    744}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  3351,  -2354,   2256}, 0, {   336,    500}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  2941,  -2354,   2256}, 0, {     8,    254}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  1946,  -1433,   2242}, 0, {  1140,   1082}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  2355,  -1433,   2242}, 0, {   812,    840}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  2355,  -1433,   2857}, 0, {   444,   1328}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{  1946,  -1433,   2857}, 0, {   772,   1574}, {0x3f, 0xbf, 0xaa, 0xff}}},\n    {{{ -4067,    563,  -1689}, 0, {   496,    550}, {0x52, 0xac, 0xac, 0xff}}},\n    {{{ -3453,    563,   -613}, 0, {   220,   1290}, {0x52, 0xac, 0xac, 0xff}}},\n    {{{ -4067,    563,   -613}, 0, {     0,    990}, {0x52, 0xac, 0xac, 0xff}}},\n    {{{ -3453,    563,  -1689}, 0, {   748,    852}, {0x52, 0xac, 0xac, 0xff}}},\n};\n\n// 0x070182F0 - 0x070183E0\nstatic const Vtx rr_seg7_vertex_070182F0[] = {\n    {{{ -3191,    256,    350}, 0, {   496,    550}, {0x52, 0xac, 0xac, 0xff}}},\n    {{{ -1958,    256,    463}, 0, {   220,   1290}, {0x52, 0xac, 0xac, 0xff}}},\n    {{{ -2310,    256,    966}, 0, {     0,    990}, {0x52, 0xac, 0xac, 0xff}}},\n    {{{ -2838,    256,   -153}, 0, {   748,    852}, {0x52, 0xac, 0xac, 0xff}}},\n    {{{ -2838,    512,   -153}, 0, {   748,    852}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3191,    512,    350}, 0, {   496,    550}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2310,    512,    966}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3453,    563,   -613}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4067,    922,   -613}, 0, {     0,     16}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4067,    563,   -613}, 0, {     0,   1036}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3453,    922,   -613}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4067,    563,  -1689}, 0, {     0,   1036}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3453,    922,  -1689}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3453,    563,  -1689}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4067,    922,  -1689}, 0, {     0,     16}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070183E0 - 0x070184D0\nstatic const Vtx rr_seg7_vertex_070183E0[] = {\n    {{{ -3453,    922,  -1689}, 0, {   748,    852}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4067,    922,  -1689}, 0, {   496,    550}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4067,    922,   -613}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3453,    922,   -613}, 0, {   220,   1290}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2838,    512,   -153}, 0, {   748,    852}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2310,    512,    966}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1958,    512,    463}, 0, {   220,   1290}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3191,    256,    350}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2838,    512,   -153}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2838,    256,   -153}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3191,    512,    350}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1958,    256,    463}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2310,    512,    966}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2310,    256,    966}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1958,    512,    463}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070184D0 - 0x070185D0\nstatic const Vtx rr_seg7_vertex_070184D0[] = {\n    {{{  3351,  -1689,   2256}, 0, {   336,    500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2941,  -1689,   2256}, 0, {     8,    254}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3351,  -1689,   2870}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1946,   -259,   2857}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2355,   -259,   2857}, 0, {  -358,    744}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2355,   -259,   2242}, 0, {     8,    254}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2941,  -1689,   2870}, 0, {  -358,    744}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3351,  -1689,   2256}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3351,  -2354,   2256}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2941,  -2354,   2256}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2941,  -1689,   2256}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2941,  -1689,   2870}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2941,  -2354,   2870}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3351,  -1689,   2870}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3351,  -2354,   2870}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1946,   -259,   2242}, 0, {   336,    500}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070185D0 - 0x07018650\nstatic const Vtx rr_seg7_vertex_070185D0[] = {\n    {{{  1946,   -259,   2857}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2355,  -1433,   2857}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2355,   -259,   2857}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1946,  -1433,   2857}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2355,   -259,   2242}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2355,  -1433,   2242}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1946,   -259,   2242}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1946,  -1433,   2242}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07018650 - 0x07018938\nstatic const Gfx rr_seg7_dl_07018650[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_070175B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_070176A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(rr_seg7_vertex_07017790, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 11, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07017880, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10,  2,  7, 0x0, 10,  7,  6, 0x0),\n    gsSP2Triangles( 0,  2, 10, 0x0, 11,  1,  0, 0x0),\n    gsSP2Triangles(11, 12,  1, 0x0, 13, 14, 12, 0x0),\n    gsSP2Triangles(13, 12, 11, 0x0, 15, 14, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07017980, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 3,  4,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  4,  3, 0x0,  8,  9,  4, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(rr_seg7_vertex_07017A60, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07017B40, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07017C20, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07017D00, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07017DE0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  0, 0x0,  5,  3,  0, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07017EE0, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP1Triangle( 8,  9, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07018938 - 0x07018980\nstatic const Gfx rr_seg7_dl_07018938[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09006000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_07017F90, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07018980 - 0x07018B58\nstatic const Gfx rr_seg7_dl_07018980[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, rr_seg7_texture_07001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_07018010, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07018100, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_070181F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_070182F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_070183E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_070184D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 1,  6,  2, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0,  3,  5, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_070185D0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07018B58 - 0x07018C18\nconst Gfx rr_seg7_dl_07018B58[] = {\n    gsDPPipeSync(),\n    gsDPSetEnvColor(255, 255, 255, 100),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADEA, G_CC_MODULATERGBFADEA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_07018650),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_07018938),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_07018980),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/21/geo.inc.c",
    "content": "// 0x0E000830\nconst GeoLayout rr_geo_000830[] = {\n    GEO_CULLING_RADIUS(3000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, rr_seg7_dl_070191A0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/21/model.inc.c",
    "content": "// 0x07018C18 - 0x07018D18\nstatic const Vtx rr_seg7_vertex_07018C18[] = {\n    {{{ -1381,    256,  -1228}, 0, {  3546,      0}, {0xce, 0xaf, 0x16, 0xff}}},\n    {{{ -1996,    256,   -153}, 0, {     0,    990}, {0xce, 0xaf, 0x16, 0xff}}},\n    {{{ -1381,    256,   -153}, 0, {     0,      0}, {0xce, 0xaf, 0x16, 0xff}}},\n    {{{ -1996,    256,  -1228}, 0, {  3546,    990}, {0xce, 0xaf, 0x16, 0xff}}},\n    {{{  -806,   -972,    485}, 0, {   990,    990}, {0x4c, 0x6a, 0x35, 0xff}}},\n    {{{  -806,   -972,    792}, 0, {   990,      0}, {0x4c, 0x6a, 0x35, 0xff}}},\n    {{{   -89,   -972,    792}, 0, { -1392,      0}, {0x4c, 0x6a, 0x35, 0xff}}},\n    {{{  -499,   -972,    485}, 0, {     0,    990}, {0x4c, 0x6a, 0x35, 0xff}}},\n    {{{  -767,   -153,    307}, 0, {  3546,      0}, {0xdf, 0xbf, 0x1f, 0xff}}},\n    {{{  -239,   -153,   1427}, 0, {     0,    990}, {0xdf, 0xbf, 0x1f, 0xff}}},\n    {{{   113,   -153,    924}, 0, {     0,      0}, {0xdf, 0xbf, 0x1f, 0xff}}},\n    {{{ -1119,   -153,    810}, 0, {  3546,    990}, {0xdf, 0xbf, 0x1f, 0xff}}},\n    {{{  -499,   -972,    485}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -89,   -972,    792}, 0, { -1392,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1855,   -972,    792}, 0, { -7866,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1855,   -972,    485}, 0, { -7866,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07018D18 - 0x07018E18\nstatic const Vtx rr_seg7_vertex_07018D18[] = {\n    {{{  -239,   -255,   1427}, 0, {   224,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1119,   -153,    810}, 0, {     0,  -3098}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1119,   -255,    810}, 0, {   224,  -3098}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -239,   -153,   1427}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -767,   -255,    307}, 0, {   224,  -3098}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   113,   -153,    924}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   113,   -255,    924}, 0, {   224,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -767,   -153,    307}, 0, {     0,  -3098}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1381,    154,  -1228}, 0, {   224,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1381,    256,  -1228}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1381,    256,   -153}, 0, {     0,   3670}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1381,    154,   -153}, 0, {   224,   3670}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1996,    154,   -153}, 0, {   224,   3670}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1996,    256,   -153}, 0, {     0,   3670}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1996,    256,  -1228}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1996,    154,  -1228}, 0, {   224,    990}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x07018E18 - 0x07018F08\nstatic const Vtx rr_seg7_vertex_07018E18[] = {\n    {{{ -1381,    154,   -153}, 0, {   224,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1996,    256,   -153}, 0, {     0,  -1054}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1996,    154,   -153}, 0, {   224,  -1054}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1381,    256,   -153}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1996,    154,  -1228}, 0, {   224,  -1054}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1381,    256,  -1228}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1381,    154,  -1228}, 0, {   224,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1996,    256,  -1228}, 0, {     0,  -1054}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   113,   -255,    924}, 0, {   224,  -1054}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -239,   -153,   1427}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -239,   -255,   1427}, 0, {   224,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1855,  -1074,    485}, 0, {   224,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1855,   -972,    485}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1855,   -972,    792}, 0, {     0,  -1054}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1855,  -1074,    792}, 0, {   224,  -1054}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x07018F08 - 0x07018FF8\nstatic const Vtx rr_seg7_vertex_07018F08[] = {\n    {{{  -806,  -1074,    792}, 0, {   224,  -1054}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -806,   -972,    792}, 0, {     0,  -1054}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -806,   -972,    485}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -806,  -1074,    485}, 0, {   224,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1119,   -255,    810}, 0, {   224,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -767,   -153,    307}, 0, {     0,  -1054}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -767,   -255,    307}, 0, {   224,  -1054}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1119,   -153,    810}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   113,   -255,    924}, 0, {   224,  -1054}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   113,   -153,    924}, 0, {     0,  -1054}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -239,   -153,   1427}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1855,  -1074,    792}, 0, {   224, -12296}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1855,   -972,    792}, 0, {     0, -12296}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  -806,   -972,    792}, 0, {     0,    990}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  -806,  -1074,    792}, 0, {   224,    990}, {0x91, 0x91, 0x91, 0xff}}},\n};\n\n// 0x07018FF8 - 0x07019038\nstatic const Vtx rr_seg7_vertex_07018FF8[] = {\n    {{{  -806,  -1074,    485}, 0, {   224,    990}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1855,   -972,    485}, 0, {     0, -12296}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1855,  -1074,    485}, 0, {   224, -12296}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  -806,   -972,    485}, 0, {     0,    990}, {0x91, 0x91, 0x91, 0xff}}},\n};\n\n// 0x07019038 - 0x070190A0\nstatic const Gfx rr_seg7_dl_07019038[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_07018C18, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070190A0 - 0x070191A0\nstatic const Gfx rr_seg7_dl_070190A0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_07018D18, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07018E18, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07018F08, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07018FF8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070191A0 - 0x07019230\nconst Gfx rr_seg7_dl_070191A0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_07019038),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_070190A0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/3/geo.inc.c",
    "content": "// 0x0E000678\nconst GeoLayout rr_geo_000678[] = {\n    GEO_CULLING_RADIUS(1000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, rr_seg7_dl_07002E80),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/3/model.inc.c",
    "content": "// 0x07002D40 - 0x07002D80\nstatic const Vtx rr_seg7_vertex_07002D40[] = {\n    {{{  -409,      0,   -204}, 0, {   990,    990}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   410,      0,    205}, 0, { -3096,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   410,      0,   -204}, 0, { -3096,    990}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -409,      0,    205}, 0, {   990,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n};\n\n// 0x07002D80 - 0x07002E00\nstatic const Vtx rr_seg7_vertex_07002D80[] = {\n    {{{   410,    113,   -204}, 0, {  3590,    -12}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -406,    117,   -204}, 0, {     0,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -409,   -112,   -204}, 0, {   -42,    988}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   410,   -112,   -204}, 0, {  3590,    988}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   410,    113,    205}, 0, {  3590,    -12}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -406,    117,    205}, 0, {     0,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -409,   -112,    205}, 0, {   -42,    988}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   410,   -112,    205}, 0, {  3590,    988}, {0xff, 0xd4, 0x00, 0xff}}},\n};\n\n// 0x07002E00 - 0x07002E38\nstatic const Gfx rr_seg7_dl_07002E00[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_07002D40, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07002E38 - 0x07002E80\nstatic const Gfx rr_seg7_dl_07002E38[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09006000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_07002D80, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07002E80 - 0x07002EF8\nconst Gfx rr_seg7_dl_07002E80[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_07002E00),\n    gsSPDisplayList(rr_seg7_dl_07002E38),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/4/geo.inc.c",
    "content": "// 0x0E000690\nconst GeoLayout rr_geo_000690[] = {\n    GEO_CULLING_RADIUS(3000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, rr_seg7_dl_07004A98),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/4/model.inc.c",
    "content": "// 0x07002EF8 - 0x07002FD8\nstatic const Vtx rr_seg7_vertex_07002EF8[] = {\n    {{{ -1175,   -178,   1142}, 0, {   514,    990}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{ -1073,   -178,   1039}, 0, {   514,   1328}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{ -1175,   -178,   1039}, 0, {   514,    990}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{ -1073,   -178,   1142}, 0, {   514,   1328}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{ -1073,   -178,    384}, 0, {  -712,    444}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{ -1175,   -178,    282}, 0, { -1052,    444}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{ -1175,   -178,    384}, 0, { -1052,    444}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{ -1073,   -178,    282}, 0, {  -712,    444}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{  -971,   1229,  -1433}, 0, {  -144,    648}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1381,   1229,  -1228}, 0, {   620,    392}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1380,   1434,  -1228}, 0, {   734,    734}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   920,  -1008,    282}, 0, {  1668,   -710}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   985,   -905,    384}, 0, {  1638,   -850}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  1022,  -1008,    384}, 0, {  1754,   -796}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x07002FD8 - 0x070030D8\nstatic const Vtx rr_seg7_vertex_07002FD8[] = {\n    {{{  1023,  -1008,   1039}, 0, {  1754,   -796}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   985,   -905,   1039}, 0, {  1638,   -850}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   921,  -1008,   1142}, 0, {  1670,   -712}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -971,   1434,   -409}, 0, {  1246,   2266}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1380,   1434,   -613}, 0, {  1502,   1498}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1380,   1229,   -613}, 0, {  1844,   1614}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -971,   1434,   -409}, 0, {  1246,    224}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1380,   1229,   -613}, 0, {  1844,   -428}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -971,   1229,   -409}, 0, {  1588,    338}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -971,   1229,  -1433}, 0, {  -144,    648}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1380,   1434,  -1228}, 0, {   734,    734}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -971,   1434,  -1433}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   256,   1229,   -613}, 0, {  -284,   3796}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -562,   1434,   -613}, 0, {   480,   2520}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -562,   1229,   -613}, 0, {   736,   2774}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   256,   1434,   -613}, 0, {  -540,   3542}, {0x96, 0x96, 0x96, 0xff}}},\n};\n\n// 0x070030D8 - 0x070031D8\nstatic const Vtx rr_seg7_vertex_070030D8[] = {\n    {{{  -562,   1229,  -1228}, 0, {  -540,   1498}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   256,   1434,  -1228}, 0, { -1306,   2774}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   256,   1229,  -1228}, 0, { -1562,   2520}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -562,   1434,  -1228}, 0, {  -284,   1752}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1073,   -905,    384}, 0, {    78,    734}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   985,   -905,    384}, 0, {  1544,    734}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   920,  -1008,    282}, 0, {  1426,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1124,  -1008,    282}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1124,  -1008,   1142}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   921,  -1008,   1142}, 0, {  1426,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   985,   -905,   1039}, 0, {  1546,    734}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1073,   -905,   1039}, 0, {    78,    734}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   256,   1434,   -613}, 0, {  -540,   3542}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -562,   1434,  -1228}, 0, {  -284,   1752}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -971,   1434,  -1433}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -562,   1434,   -613}, 0, {   480,   2520}, {0xc8, 0xc8, 0xc8, 0xff}}},\n};\n\n// 0x070031D8 - 0x070032B8\nstatic const Vtx rr_seg7_vertex_070031D8[] = {\n    {{{  -971,   1434,  -1433}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1380,   1434,   -613}, 0, {  1502,   1500}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -971,   1434,   -409}, 0, {  1246,   2266}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1380,   1434,  -1228}, 0, {   734,    734}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -971,   1434,  -1433}, 0, {     0,  -1054}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -971,   1434,   -409}, 0, {  1246,    224}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -562,   1434,   -613}, 0, {   480,    478}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   256,   1434,   -613}, 0, {  -540,   3542}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   256,   1434,  -1228}, 0, { -1306,   2774}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -562,   1434,  -1228}, 0, {  -284,   1752}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -868,    819,   -255}, 0, {   480,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -971,    819,   -153}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -868,    819,   -153}, 0, {   224,    734}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -971,    819,   -255}, 0, {   224,   1244}, {0xc8, 0xc8, 0xc8, 0xff}}},\n};\n\n// 0x070032B8 - 0x070033A8\nstatic const Vtx rr_seg7_vertex_070032B8[] = {\n    {{{   102,   1638,  -1893}, 0, {   480,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{     0,   1638,  -1893}, 0, {   224,   1244}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{     0,   1638,  -1791}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   102,   1638,  -1791}, 0, {   224,    734}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1022,   -260,    384}, 0, {  -542,    718}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{ -1022,   -260,    282}, 0, {  -542,    718}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{ -1073,   -178,    282}, 0, {  -712,    444}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{ -1073,   -178,   1039}, 0, {   514,   1328}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{ -1022,   -260,   1142}, 0, {   240,   1500}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{ -1022,   -260,   1039}, 0, {   240,   1500}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{ -1073,   -178,   1142}, 0, {   514,   1328}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{ -1227,   -260,   1039}, 0, {   240,    820}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{ -1227,   -260,   1142}, 0, {   240,    820}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{ -1175,   -178,   1142}, 0, {   514,    990}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{ -1175,   -178,   1039}, 0, {   514,    990}, {0xff, 0xd4, 0x00, 0xff}}},\n};\n\n// 0x070033A8 - 0x07003488\nstatic const Vtx rr_seg7_vertex_070033A8[] = {\n    {{{ -1175,   -178,    384}, 0, { -1052,    444}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{ -1227,   -260,    282}, 0, { -1222,    718}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{ -1227,   -260,    384}, 0, { -1222,    718}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{ -1175,   -178,    282}, 0, { -1052,    444}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{ -1022,   -260,    384}, 0, {  -542,    718}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{ -1073,   -178,    282}, 0, {  -712,    444}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{ -1073,   -178,    384}, 0, {  -712,    444}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{ -1380,   1229,   -613}, 0, {  1756,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1380,   1434,  -1228}, 0, {   734,    734}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1367,   1229,  -1228}, 0, {   990,    480}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1175,   -342,   1039}, 0, {  -102,   1116}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1175,  -1008,   1039}, 0, {   370,   1116}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1124,  -1008,   1142}, 0, {   406,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1124,   -342,   1142}, 0, {   -66,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x07003488 - 0x07003568\nstatic const Vtx rr_seg7_vertex_07003488[] = {\n    {{{ -1124,   -342,    282}, 0, {   -66,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1124,  -1008,    282}, 0, {   406,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1175,  -1008,    384}, 0, {   370,   1116}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1175,   -342,    384}, 0, {  -104,   1116}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   256,   1229,  -1228}, 0, { -1562,   3030}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   256,   1434,   -613}, 0, {  -540,   3542}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   256,   1229,   -613}, 0, {  -794,   3796}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   256,   1434,  -1228}, 0, { -1306,   2774}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1380,   1229,   -613}, 0, {  1756,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1380,   1434,   -613}, 0, {  1502,   1500}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1380,   1434,  -1228}, 0, {   734,    734}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -766,    614,   -357}, 0, {   990,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -868,    461,   -255}, 0, {   480,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -971,    461,   -255}, 0, {   224,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x07003568 - 0x07003668\nstatic const Vtx rr_seg7_vertex_07003568[] = {\n    {{{ -1022,    614,      0}, 0, {  -542,    734}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -971,    819,   -153}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1073,    614,   -357}, 0, {   224,   1754}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -971,    819,   -255}, 0, {   224,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -766,    614,   -357}, 0, {   990,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -868,    819,   -153}, 0, {   224,    734}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -817,    614,      0}, 0, {     0,    224}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -868,    819,   -255}, 0, {   480,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -971,    461,   -153}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -868,    461,   -153}, 0, {   224,    734}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   102,   1638,  -1791}, 0, {   224,    734}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   154,   1434,  -1637}, 0, {     0,    224}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   205,   1434,  -1996}, 0, {   990,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -971,    461,   -255}, 0, {   224,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   102,   1280,  -1893}, 0, {   480,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{     0,   1280,  -1893}, 0, {   224,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x07003668 - 0x07003758\nstatic const Vtx rr_seg7_vertex_07003668[] = {\n    {{{   205,   1434,  -1996}, 0, {   990,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{     0,   1280,  -1893}, 0, {   224,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -101,   1434,  -1996}, 0, {   224,   1754}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{     0,   1280,  -1791}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   154,   1434,  -1637}, 0, {     0,    224}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   -50,   1434,  -1637}, 0, {  -542,    734}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   102,   1280,  -1791}, 0, {   224,    734}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   102,   1638,  -1893}, 0, {   480,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   102,   1638,  -1791}, 0, {   224,    734}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{     0,   1638,  -1791}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{     0,   1638,  -1893}, 0, {   224,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1124,  -1008,    282}, 0, {     0,    990}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   920,  -1008,    282}, 0, {  1426,    990}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1022,  -1008,    384}, 0, {  1498,    990}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1175,  -1008,    384}, 0, {   -66,    990}, {0x55, 0x55, 0x55, 0xff}}},\n};\n\n// 0x07003758 - 0x07003858\nstatic const Vtx rr_seg7_vertex_07003758[] = {\n    {{{ -1175,  -1008,   1039}, 0, {   -66,    990}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1023,  -1008,   1039}, 0, {  1500,    990}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   921,  -1008,   1142}, 0, {  1426,    990}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1124,  -1008,   1142}, 0, {     0,    990}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1381,   1229,   -613}, 0, { -2838,   5840}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -972,   1229,  -1433}, 0, { -3350,   4308}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -562,   1229,  -1228}, 0, { -2584,   4052}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1381,   1229,  -1228}, 0, { -3606,   5074}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   256,   1229,  -1228}, 0, { -1562,   3030}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -972,   1229,   -409}, 0, { -2072,   5586}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -562,   1229,   -613}, 0, { -1816,   4818}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   256,   1229,   -613}, 0, {  -794,   3796}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -868,    461,   -153}, 0, {   224,    734}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -971,    461,   -153}, 0, {     0,    990}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -971,    461,   -255}, 0, {   224,   1244}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -868,    461,   -255}, 0, {   480,    990}, {0x55, 0x55, 0x55, 0xff}}},\n};\n\n// 0x07003858 - 0x07003948\nstatic const Vtx rr_seg7_vertex_07003858[] = {\n    {{{   102,   1280,  -1791}, 0, {   224,    734}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{     0,   1280,  -1791}, 0, {     0,    990}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{     0,   1280,  -1893}, 0, {   224,   1244}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   102,   1280,  -1893}, 0, {   480,    990}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1073,   -905,   1039}, 0, {    78,    734}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1023,  -1008,   1039}, 0, {  1500,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1175,  -1008,   1039}, 0, {   -66,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1073,   -342,   1039}, 0, {     0,    862}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1175,  -1008,   1039}, 0, {   370,   1116}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1175,   -342,   1039}, 0, {  -102,   1116}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1073,   -905,   1039}, 0, {   370,    862}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1175,   -342,    384}, 0, {  -104,   1116}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1175,  -1008,    384}, 0, {   370,   1116}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1073,   -905,    384}, 0, {   370,    862}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1073,   -342,    384}, 0, {     0,    862}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x07003948 - 0x07003A28\nstatic const Vtx rr_seg7_vertex_07003948[] = {\n    {{{ -1175,  -1008,    384}, 0, {   -66,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   985,   -905,    384}, 0, {  1544,    734}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1073,   -905,    384}, 0, {    78,    734}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1022,  -1008,    384}, 0, {  1498,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1073,   -905,   1039}, 0, {    78,    734}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   985,   -905,   1039}, 0, {  1546,    734}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1023,  -1008,   1039}, 0, {  1500,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   102,   1280,  -1791}, 0, {   224,    734}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   102,   1280,  -1893}, 0, {   480,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   205,   1434,  -1996}, 0, {   990,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -868,    461,   -153}, 0, {   224,    734}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -868,    461,   -255}, 0, {   480,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -766,    614,   -357}, 0, {   990,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -817,    614,      0}, 0, {     0,    224}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x07003A28 - 0x07003B08\nstatic const Vtx rr_seg7_vertex_07003A28[] = {\n    {{{ -1073,    614,   -357}, 0, {   224,   1754}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -971,    461,   -255}, 0, {   224,   1244}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -971,    461,   -153}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1022,    614,      0}, 0, {  -542,    734}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -101,   1434,  -1996}, 0, {   224,   1754}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{     0,   1280,  -1893}, 0, {   224,   1244}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{     0,   1280,  -1791}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   -50,   1434,  -1637}, 0, {  -542,    734}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   102,   1280,  -1791}, 0, {   224,    734}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   205,   1434,  -1996}, 0, {   990,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   154,   1434,  -1637}, 0, {     0,    224}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -562,   1229,  -1228}, 0, {  -626,   1640}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  -971,   1434,  -1433}, 0, {     0,    990}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  -562,   1434,  -1228}, 0, {  -284,   1752}, {0x91, 0x91, 0x91, 0xff}}},\n};\n\n// 0x07003B08 - 0x07003BF8\nstatic const Vtx rr_seg7_vertex_07003B08[] = {\n    {{{ -1124,   -342,   1142}, 0, {   -66,    990}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -1124,  -1008,   1142}, 0, {   406,    990}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -1073,   -905,   1039}, 0, {   370,    862}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -1073,   -342,   1039}, 0, {     0,    862}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -1073,   -342,    384}, 0, {     0,    862}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -1124,  -1008,    282}, 0, {   406,    990}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -1124,   -342,    282}, 0, {   -66,    990}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -1073,   -905,    384}, 0, {   370,    862}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  -562,   1434,   -613}, 0, {   480,   2520}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  -971,   1434,   -409}, 0, {  1246,   2266}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  -971,   1229,   -409}, 0, {  1360,   2608}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  -562,   1229,   -613}, 0, {   594,   2862}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  -562,   1229,  -1228}, 0, {  -626,   1640}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  -971,   1229,  -1433}, 0, {  -372,    876}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  -971,   1434,  -1433}, 0, {     0,    990}, {0x91, 0x91, 0x91, 0xff}}},\n};\n\n// 0x07003BF8 - 0x07003CF8\nstatic const Vtx rr_seg7_vertex_07003BF8[] = {\n    {{{     0,   1638,  -1893}, 0, {   224,   1244}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{   205,   1434,  -1996}, 0, {   990,    990}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  -101,   1434,  -1996}, 0, {   224,   1754}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -1073,    614,   -357}, 0, {   224,   1754}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  -971,    819,   -255}, 0, {   224,   1244}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  -868,    819,   -255}, 0, {   480,    990}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  -766,    614,   -357}, 0, {   990,    990}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  -817,    614,      0}, 0, {     0,    224}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  -868,    819,   -153}, 0, {   224,    734}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  -971,    819,   -153}, 0, {     0,    990}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -1022,    614,      0}, 0, {  -542,    734}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{   154,   1434,  -1637}, 0, {     0,    224}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{     0,   1638,  -1791}, 0, {     0,    990}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{   -50,   1434,  -1637}, 0, {  -542,    734}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{   102,   1638,  -1791}, 0, {   224,    734}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{   102,   1638,  -1893}, 0, {   480,    990}, {0x91, 0x91, 0x91, 0xff}}},\n};\n\n// 0x07003CF8 - 0x07003DE8\nstatic const Vtx rr_seg7_vertex_07003CF8[] = {\n    {{{ -1175,   -178,    384}, 0, { -1052,    444}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{ -1227,   -260,    384}, 0, { -1222,    718}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{ -1175,   -342,    384}, 0, { -1052,    990}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{ -1175,   -178,   1142}, 0, {   514,    990}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{ -1175,   -342,   1142}, 0, {     0,    990}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{ -1073,   -342,   1142}, 0, {     0,   1328}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{ -1227,   -260,   1142}, 0, {   240,    820}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{ -1022,   -260,   1142}, 0, {   240,   1500}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{ -1073,   -178,   1142}, 0, {   514,   1328}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{ -1175,   -342,    282}, 0, { -1052,    990}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{ -1073,   -178,    282}, 0, {  -712,    444}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{ -1022,   -260,    282}, 0, {  -542,    718}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{ -1227,   -260,    282}, 0, { -1222,    718}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{ -1175,   -178,    282}, 0, { -1052,    444}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{ -1073,   -342,    282}, 0, {  -712,    990}, {0xaa, 0xaa, 0x00, 0xff}}},\n};\n\n// 0x07003DE8 - 0x07003EE8\nstatic const Vtx rr_seg7_vertex_07003DE8[] = {\n    {{{ -1175,   -342,   1039}, 0, {     0,    990}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{ -1227,   -260,   1039}, 0, {   240,    820}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{ -1175,   -178,   1039}, 0, {   514,    990}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{ -1175,   -178,    384}, 0, { -1052,    444}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{ -1022,   -260,    384}, 0, {  -542,    718}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{ -1073,   -178,    384}, 0, {  -712,    444}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{ -1073,   -342,    384}, 0, {  -712,    990}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{ -1175,   -342,    384}, 0, { -1052,    990}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{ -1073,   -178,   1039}, 0, {   514,   1328}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{ -1022,   -260,   1039}, 0, {   240,   1500}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{ -1073,   -342,   1039}, 0, {     0,   1328}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{ -1073,   -342,    282}, 0, {  -712,    990}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{ -1073,   -342,    384}, 0, {  -712,    990}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{ -1124,   -342,    282}, 0, {  -882,    990}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{ -1175,   -342,    282}, 0, { -1052,    990}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{ -1175,   -342,    384}, 0, { -1052,    990}, {0x6b, 0x6b, 0x00, 0xff}}},\n};\n\n// 0x07003EE8 - 0x07003FE8\nstatic const Vtx rr_seg7_vertex_07003EE8[] = {\n    {{{ -1175,   -342,   1039}, 0, {     0,    990}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{ -1124,   -342,   1142}, 0, {     0,   1158}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{ -1175,   -342,   1142}, 0, {     0,    990}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{ -1073,   -342,   1039}, 0, {     0,   1328}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{ -1073,   -342,   1142}, 0, {     0,   1328}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{ -1073,   -342,    384}, 0, {  -712,    990}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{ -1073,   -342,    282}, 0, {  -712,    990}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{ -1022,   -260,    282}, 0, {  -542,    718}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{ -1073,   -342,   1039}, 0, {     0,   1328}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{ -1022,   -260,   1142}, 0, {   240,   1500}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{ -1073,   -342,   1142}, 0, {     0,   1328}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{ -1022,   -260,   1039}, 0, {   240,   1500}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{ -1175,   -342,   1039}, 0, {     0,    990}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{ -1175,   -342,   1142}, 0, {     0,    990}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{ -1227,   -260,   1142}, 0, {   240,    820}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{ -1227,   -260,   1039}, 0, {   240,    820}, {0x78, 0x78, 0x00, 0xff}}},\n};\n\n// 0x07003FE8 - 0x07004058\nstatic const Vtx rr_seg7_vertex_07003FE8[] = {\n    {{{ -1227,   -260,    384}, 0, { -1222,    718}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{ -1175,   -342,    282}, 0, { -1052,    990}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{ -1175,   -342,    384}, 0, { -1052,    990}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{ -1227,   -260,    282}, 0, { -1222,    718}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{ -1073,   -342,    384}, 0, {  -712,    990}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{ -1022,   -260,    282}, 0, {  -542,    718}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{ -1022,   -260,    384}, 0, {  -542,    718}, {0x78, 0x78, 0x00, 0xff}}},\n};\n\n// 0x07004058 - 0x07004148\nstatic const Vtx rr_seg7_vertex_07004058[] = {\n    {{{  1179,   -204,    410}, 0, {     0,   2010}, {0xb4, 0xb4, 0xb4, 0xff}}},\n    {{{  1384,   -409,   1024}, 0, { -1052,      0}, {0xb4, 0xb4, 0xb4, 0xff}}},\n    {{{  1384,   -409,    410}, 0, {   480,   1498}, {0xb4, 0xb4, 0xb4, 0xff}}},\n    {{{  1179,   -204,   1024}, 0, { -1564,    478}, {0xb4, 0xb4, 0xb4, 0xff}}},\n    {{{  1588,  -1074,   1024}, 0, {   224,   4564}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1384,   -409,   1024}, 0, {  1374,   2394}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1179,   -204,   1024}, 0, {  1374,   1372}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -919,    410,    410}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{     1,    614,    410}, 0, {  2778,   2776}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{     1,    410,    410}, 0, {  2268,   3288}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -919,    614,    410}, 0, {   480,    478}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{     1,    410,   1024}, 0, {  2268,   3288}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -919,    614,   1024}, 0, {   480,    478}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -919,    410,   1024}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{     1,    614,   1024}, 0, {  2778,   2776}, {0x96, 0x96, 0x96, 0xff}}},\n};\n\n// 0x07004148 - 0x07004248\nstatic const Vtx rr_seg7_vertex_07004148[] = {\n    {{{  1179,   -204,   1024}, 0, {  1374,   1372}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   820,   -204,   1024}, 0, {   480,    480}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   820,  -1074,   1024}, 0, { -1690,   2648}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1588,  -1074,   1024}, 0, {   224,   4564}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   820,  -1074,    410}, 0, { -1690,   2648}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1179,   -204,    410}, 0, {  1374,   1372}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1384,   -409,    410}, 0, {  1374,   2394}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1588,   -409,   1024}, 0, {  1884,   2904}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1384,   -409,   1024}, 0, {  1374,   2394}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   820,   -204,    410}, 0, {   480,    480}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1588,   -409,    410}, 0, {  1884,   2904}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1588,  -1074,    410}, 0, {   224,   4564}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   820,   -204,   1024}, 0, { -2458,   1372}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1179,   -204,    410}, 0, {     0,   2010}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   820,   -204,    410}, 0, {  -924,   2904}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1179,   -204,   1024}, 0, { -1564,    478}, {0xc8, 0xc8, 0xc8, 0xff}}},\n};\n\n// 0x07004248 - 0x07004338\nstatic const Vtx rr_seg7_vertex_07004248[] = {\n    {{{  1588,   -409,    410}, 0, {   990,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1384,   -409,   1024}, 0, { -1052,      0}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1588,   -409,   1024}, 0, {  -540,   -544}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1384,   -409,    410}, 0, {   480,   1498}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -919,    614,    410}, 0, {  1502,   2522}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{     1,    614,   1024}, 0, {  2268,  -1310}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{     1,    614,    410}, 0, {  3800,    224}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -919,    614,   1024}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{     1,    614,    410}, 0, {   480,   1500}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{     1,    614,   1024}, 0, {  2012,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{     1,    410,   1024}, 0, {  1502,   -544}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -919,    410,   1024}, 0, {  1502,   -544}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -919,    614,   1024}, 0, {  2012,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -919,    614,    410}, 0, {   480,   1500}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -919,    410,    410}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x07004338 - 0x07004428\nstatic const Vtx rr_seg7_vertex_07004338[] = {\n    {{{  1588,  -1074,    410}, 0, { -2586,  -3610}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1588,   -409,   1024}, 0, {  1118,  -2970}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1588,  -1074,   1024}, 0, { -1052,  -5142}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1588,   -409,    410}, 0, {  -414,  -1438}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   820,  -1074,   1024}, 0, { -1052,  -5142}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   820,   -204,   1024}, 0, {  1118,  -2970}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   820,   -204,    410}, 0, {  -414,  -1438}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   820,  -1074,    410}, 0, { -2586,  -3610}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{     1,    614,    410}, 0, {   480,   1500}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{     1,    410,   1024}, 0, {  1502,   -544}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{     1,    410,    410}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1588,  -1074,   1024}, 0, {  -540,   -544}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   820,  -1074,    410}, 0, {  -924,   2904}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1588,  -1074,    410}, 0, {   990,    990}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   820,  -1074,   1024}, 0, { -2458,   1372}, {0x55, 0x55, 0x55, 0xff}}},\n};\n\n// 0x07004428 - 0x07004468\nstatic const Vtx rr_seg7_vertex_07004428[] = {\n    {{{     1,    410,   1024}, 0, {  2268,  -1310}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -919,    410,   1024}, 0, {     0,    990}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -919,    410,    410}, 0, {  1502,   2520}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{     1,    410,    410}, 0, {  3800,    224}, {0x55, 0x55, 0x55, 0xff}}},\n};\n\n// 0x07004468 - 0x07004950\nstatic const Gfx rr_seg7_dl_07004468[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_07002EF8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07002FD8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_070030D8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 15, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_070031D8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(rr_seg7_vertex_070032B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_070033A8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07003488, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07003568, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 0,  8,  9, 0x0,  0,  9,  6, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  4, 13,  2, 0x0),\n    gsSP1Triangle(12, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07003668, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  0, 0x0),\n    gsSP2Triangles( 5,  9,  2, 0x0,  9, 10,  2, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07003758, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9,  4, 0x0,  4,  6,  8, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0,  8, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07003858, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07003948, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 10, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_07003A28, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07003B08, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07003BF8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(rr_seg7_vertex_07003CF8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  5,  7, 0x0),\n    gsSP2Triangles( 3,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 13, 0x0,  9, 13, 10, 0x0),\n    gsSP1Triangle( 9, 11, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07003DE8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  7,  6, 0x0),\n    gsSP2Triangles( 0,  2,  8, 0x0,  0,  8,  9, 0x0),\n    gsSP2Triangles( 0,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 13, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07003EE8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 8, 11,  9, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07003FE8, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP1Triangle( 4,  5,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07004950 - 0x07004A98\nstatic const Gfx rr_seg7_dl_07004950[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_07004058, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_07004148, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  3,  7,  8, 0x0),\n    gsSP2Triangles( 4,  9,  5, 0x0,  4,  6, 10, 0x0),\n    gsSP2Triangles( 4, 10, 11, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 15, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07004248, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07004338, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_07004428, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07004A98 - 0x07004B10\nconst Gfx rr_seg7_dl_07004A98[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_07004468),\n    gsSPDisplayList(rr_seg7_dl_07004950),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/5/geo.inc.c",
    "content": "// 0x0E0006A8\nconst GeoLayout rr_geo_0006A8[] = {\n    GEO_CULLING_RADIUS(3000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, rr_seg7_dl_07005C80),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/5/model.inc.c",
    "content": "// 0x07004B10 - 0x07004C10\nstatic const Vtx rr_seg7_vertex_07004B10[] = {\n    {{{  1196,   -204,    262}, 0, {  4036,   -544}, {0x78, 0x78, 0x78, 0xff}}},\n    {{{   902,   -204,    557}, 0, {  3054,   -542}, {0x78, 0x78, 0x78, 0xff}}},\n    {{{  1196,   -204,    557}, 0, {  3546,  -1034}, {0x78, 0x78, 0x78, 0xff}}},\n    {{{   902,   -204,    262}, 0, {  3546,    -52}, {0x78, 0x78, 0x78, 0xff}}},\n    {{{   377,   -204,    262}, 0, {  2672,    820}, {0x78, 0x78, 0x78, 0xff}}},\n    {{{    82,   -204,    557}, 0, {  1692,    820}, {0x78, 0x78, 0x78, 0xff}}},\n    {{{   377,   -204,    557}, 0, {  2182,    330}, {0x78, 0x78, 0x78, 0xff}}},\n    {{{    82,   -204,    262}, 0, {  2182,   1308}, {0x78, 0x78, 0x78, 0xff}}},\n    {{{   805,   -204,    244}, 0, {  3416,    138}, {0x6e, 0x6e, 0x6e, 0xff}}},\n    {{{   474,   -204,    575}, 0, {  2312,    138}, {0x6e, 0x6e, 0x6e, 0xff}}},\n    {{{   805,   -204,    575}, 0, {  2864,   -414}, {0x6e, 0x6e, 0x6e, 0xff}}},\n    {{{   474,   -204,    244}, 0, {  2864,    690}, {0x6e, 0x6e, 0x6e, 0xff}}},\n    {{{   -13,   -204,    244}, 0, {  2052,   1498}, {0x6e, 0x6e, 0x6e, 0xff}}},\n    {{{  -345,   -204,    244}, 0, {  1502,   2050}, {0x6e, 0x6e, 0x6e, 0xff}}},\n    {{{  -345,   -204,    575}, 0, {   950,   1498}, {0x6e, 0x6e, 0x6e, 0xff}}},\n    {{{   -13,   -204,    575}, 0, {  1502,    950}, {0x6e, 0x6e, 0x6e, 0xff}}},\n};\n\n// 0x07004C10 - 0x07004D10\nstatic const Vtx rr_seg7_vertex_07004C10[] = {\n    {{{ -1715,    -50,    102}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -486,    102,    102}, 0, {  2268,   2776}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -486,    -50,    102}, 0, {  2012,   3032}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2278,   -357,   1024}, 0, {  4568,   5588}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2278,   -204,   1024}, 0, {  4822,   5332}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -486,   -204,   1024}, 0, {   224,    734}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -486,   -357,   1024}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -486,   -357,   -204}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -486,   -204,   -204}, 0, {   224,    734}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2278,   -204,   -204}, 0, {  4822,   5332}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2278,   -357,   -204}, 0, {  4568,   5588}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -486,    -50,    717}, 0, {  2012,   3032}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1715,    102,    717}, 0, {   224,    734}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1715,    -50,    717}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -486,    102,    717}, 0, {  2268,   2776}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1715,    102,    102}, 0, {   224,    734}, {0x96, 0x96, 0x96, 0xff}}},\n};\n\n// 0x07004D10 - 0x07004E00\nstatic const Vtx rr_seg7_vertex_07004D10[] = {\n    {{{    82,   -204,    557}, 0, {  1692,    820}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   -13,   -204,    575}, 0, {  1502,    950}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  2278,   -204,   1024}, 0, {  4568,  -3608}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   474,   -204,    575}, 0, {  2312,    138}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   377,   -204,    557}, 0, {  2182,    330}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{    82,   -204,    262}, 0, {  2182,   1308}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -345,   -204,    575}, 0, {   950,   1498}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   -13,   -204,    244}, 0, {  2052,   1498}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   805,   -204,    575}, 0, {  2864,   -414}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   902,   -204,    557}, 0, {  3054,   -544}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1196,   -204,    557}, 0, {  3546,  -1034}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1330,   -204,    539}, 0, {  3798,  -1224}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -486,   -204,   1024}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1588,   -204,    539}, 0, {  4226,  -1654}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  2278,   -204,   -204}, 0, {  6612,  -1564}, {0xc8, 0xc8, 0xc8, 0xff}}},\n};\n\n// 0x07004E00 - 0x07004EE0\nstatic const Vtx rr_seg7_vertex_07004E00[] = {\n    {{{   805,   -204,    244}, 0, {  3416,    138}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   902,   -204,    262}, 0, {  3546,    -52}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1196,   -204,    262}, 0, {  4036,   -542}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1196,   -204,    557}, 0, {  3546,  -1034}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1330,   -204,    539}, 0, {  3798,  -1224}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1330,   -204,    281}, 0, {  4226,   -796}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   805,   -204,    575}, 0, {  2864,   -414}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   902,   -204,    557}, 0, {  3054,   -544}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   474,   -204,    244}, 0, {  2864,    690}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   377,   -204,    557}, 0, {  2182,    330}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   474,   -204,    575}, 0, {  2312,    138}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   377,   -204,    262}, 0, {  2672,    820}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  2278,   -204,   -204}, 0, {  6612,  -1564}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1588,   -204,    281}, 0, {  4656,  -1224}, {0xc8, 0xc8, 0xc8, 0xff}}},\n};\n\n// 0x07004EE0 - 0x07004FD0\nstatic const Vtx rr_seg7_vertex_07004EE0[] = {\n    {{{ -1715,    102,    102}, 0, {   990,   2010}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -486,    102,    717}, 0, {  2012,  -1054}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -486,    102,    102}, 0, {  3034,      0}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -486,   -204,   -204}, 0, {  2012,   3032}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   -13,   -204,    244}, 0, {  2052,   1498}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  2278,   -204,   -204}, 0, {  6612,  -1564}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -345,   -204,    244}, 0, {  1502,   2050}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{    82,   -204,    262}, 0, {  2182,   1308}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   474,   -204,    244}, 0, {  2864,    690}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   377,   -204,    262}, 0, {  2672,    820}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -486,   -204,   1024}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -345,   -204,    575}, 0, {   950,   1498}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1588,   -204,    281}, 0, {  4656,  -1224}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1588,   -204,    539}, 0, {  4226,  -1654}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1715,    102,    717}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n};\n\n// 0x07004FD0 - 0x070050C0\nstatic const Vtx rr_seg7_vertex_07004FD0[] = {\n    {{{ -1715,    -50,    717}, 0, {   990,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1715,    102,    102}, 0, {   224,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1715,    -50,    102}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1588,   -204,    281}, 0, {  4656,  -1224}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1330,   -204,    281}, 0, {  4226,   -796}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1330,   -204,    539}, 0, {  3798,  -1224}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1588,   -204,    539}, 0, {  4226,  -1654}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  2278,   -357,   -204}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  2278,   -204,   -204}, 0, {   224,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  2278,   -204,   1024}, 0, {  2268,   -798}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  2278,   -357,   1024}, 0, {  2012,  -1054}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -486,   -357,   1024}, 0, {  2012,  -1054}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -486,   -204,   1024}, 0, {  2268,   -798}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -486,   -204,   -204}, 0, {   224,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -486,   -357,   -204}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x070050C0 - 0x070051B0\nstatic const Vtx rr_seg7_vertex_070050C0[] = {\n    {{{  -486,    -50,    102}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -486,    102,    102}, 0, {   224,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -486,    102,    717}, 0, {  1246,    224}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1715,    -50,    717}, 0, {   990,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1715,    102,    717}, 0, {  1246,    224}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1715,    102,    102}, 0, {   224,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -486,    -50,    717}, 0, {   990,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  2278,   -357,   1024}, 0, {  4568,  -3608}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -486,   -357,   -204}, 0, {  2012,   3032}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  2278,   -357,   -204}, 0, {  6612,  -1564}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -486,   -357,   1024}, 0, {     0,    990}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -486,    -50,    102}, 0, {  3034,      0}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1715,    -50,    717}, 0, {     0,    990}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1715,    -50,    102}, 0, {   990,   2010}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -486,    -50,    717}, 0, {  2012,  -1054}, {0x55, 0x55, 0x55, 0xff}}},\n};\n\n// 0x070051B0 - 0x070052B0\nstatic const Vtx rr_seg7_vertex_070051B0[] = {\n    {{{ -1203,   1306,    717}, 0, {   990,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1611,   1306,    922}, 0, {  1244,   -796}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1203,   1101,    717}, 0, {   648,   -146}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1611,   1101,    922}, 0, {   900,   -910}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1203,   1101,    102}, 0, {  1870,   1076}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1611,   1101,   -101}, 0, {  2636,    824}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1203,   1306,    102}, 0, {  1756,    734}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -1611,   1306,   -101}, 0, {  2522,    480}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -588,   1101,    717}, 0, {     0,    478}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -384,   1306,    717}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1203,   1101,    717}, 0, {   734,   -288}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1203,   1306,    717}, 0, {   990,      0}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1203,   1101,    102}, 0, {  2012,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1203,   1306,    102}, 0, {  1756,    734}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -588,   1101,    102}, 0, {  1246,   1754}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -384,   1306,    102}, 0, {   734,   1754}, {0x96, 0x96, 0x96, 0xff}}},\n};\n\n// 0x070052B0 - 0x070053B0\nstatic const Vtx rr_seg7_vertex_070052B0[] = {\n    {{{  -384,   1306,    102}, 0, {   734,   1754}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1203,   1306,    102}, 0, {  1756,    734}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1611,   1306,    922}, 0, {  1244,   -796}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1611,   1306,   -101}, 0, {  2522,    480}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -2021,   1306,    102}, 0, {  2776,   -286}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -2021,   1306,    717}, 0, {  2010,  -1052}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1203,   1306,    717}, 0, {   990,      0}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -384,   1306,    717}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1971,    307,   -665}, 0, {   480,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -2073,    307,   -562}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1971,    307,   -562}, 0, {   224,    734}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -2073,    307,   -665}, 0, {   224,   1244}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -2021,   1101,    717}, 0, {  2138,  -1180}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -2021,   1306,    717}, 0, {  2010,  -1052}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -2021,   1101,    102}, 0, {  2904,   -414}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -2021,   1306,    102}, 0, {  2776,   -286}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x070053B0 - 0x070054B0\nstatic const Vtx rr_seg7_vertex_070053B0[] = {\n    {{{  -588,   1101,    102}, 0, {   990,   1500}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -384,   1306,    102}, 0, {   734,   1754}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -588,   1101,    717}, 0, {   224,    734}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -384,   1306,    717}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -2124,    102,   -409}, 0, {  -542,    734}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -2073,    307,   -562}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -2176,    102,   -767}, 0, {   224,   1754}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1868,    102,   -767}, 0, {   990,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1971,    -50,   -665}, 0, {   480,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -2073,    -50,   -665}, 0, {   224,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1971,    -50,   -562}, 0, {   224,    734}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1920,    102,   -409}, 0, {     0,    224}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -2073,    -50,   -562}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1971,    307,   -562}, 0, {   224,    734}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1971,    307,   -665}, 0, {   480,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -2073,    307,   -665}, 0, {   224,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x070054B0 - 0x070055B0\nstatic const Vtx rr_seg7_vertex_070054B0[] = {\n    {{{ -2021,   1101,    102}, 0, {  2776,   -286}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1611,   1101,   -101}, 0, {  2522,    480}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -588,   1101,    717}, 0, {   224,    734}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1611,   1101,    922}, 0, {  1244,   -796}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -2021,   1101,    717}, 0, {  2010,  -1052}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1203,   1101,    717}, 0, {   990,      0}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1203,   1101,    102}, 0, {  1756,    734}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -588,   1101,    102}, 0, {   990,   1500}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1971,    -50,   -562}, 0, {   224,    734}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -2073,    -50,   -562}, 0, {     0,    990}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -2073,    -50,   -665}, 0, {   224,   1244}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1971,    -50,   -665}, 0, {   480,    990}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -2176,    102,   -767}, 0, {   224,   1754}, {0x5a, 0x5a, 0x5a, 0xff}}},\n    {{{ -2073,    -50,   -665}, 0, {   224,   1244}, {0x5a, 0x5a, 0x5a, 0xff}}},\n    {{{ -2073,    -50,   -562}, 0, {     0,    990}, {0x5a, 0x5a, 0x5a, 0xff}}},\n    {{{ -2124,    102,   -409}, 0, {  -542,    734}, {0x5a, 0x5a, 0x5a, 0xff}}},\n};\n\n// 0x070055B0 - 0x070056B0\nstatic const Vtx rr_seg7_vertex_070055B0[] = {\n    {{{ -1920,    102,   -409}, 0, {     0,    224}, {0x5a, 0x5a, 0x5a, 0xff}}},\n    {{{ -1971,    -50,   -562}, 0, {   224,    734}, {0x5a, 0x5a, 0x5a, 0xff}}},\n    {{{ -1868,    102,   -767}, 0, {   990,    990}, {0x5a, 0x5a, 0x5a, 0xff}}},\n    {{{ -1971,    -50,   -665}, 0, {   480,    990}, {0x5a, 0x5a, 0x5a, 0xff}}},\n    {{{ -1611,   1306,    922}, 0, {  1244,   -796}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -2021,   1306,    717}, 0, {  2010,  -1052}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -1611,   1101,    922}, 0, {  1130,  -1140}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -2021,   1101,    717}, 0, {  1896,  -1396}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -1611,   1101,   -101}, 0, {  2864,    594}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -2021,   1101,    102}, 0, {  3120,   -172}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -1611,   1306,   -101}, 0, {  2522,    480}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -2021,   1306,    102}, 0, {  2776,   -286}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -1920,    102,   -409}, 0, {     0,    224}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -1971,    307,   -562}, 0, {   224,    734}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -2073,    307,   -562}, 0, {     0,    990}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -2124,    102,   -409}, 0, {  -542,    734}, {0x91, 0x91, 0x91, 0xff}}},\n};\n\n// 0x070056B0 - 0x070056F0\nstatic const Vtx rr_seg7_vertex_070056B0[] = {\n    {{{ -2176,    102,   -767}, 0, {   224,   1754}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -2073,    307,   -665}, 0, {   224,   1244}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -1971,    307,   -665}, 0, {   480,    990}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -1868,    102,   -767}, 0, {   990,    990}, {0x91, 0x91, 0x91, 0xff}}},\n};\n\n// 0x070056F0 - 0x070057F0\nstatic const Vtx rr_seg7_vertex_070056F0[] = {\n    {{{  -486,      0,    102}, 0, { -1052,    990}, {0x12, 0x23, 0x11, 0xff}}},\n    {{{  -588,      0,    102}, 0, {     0,   2010}, {0x12, 0x23, 0x11, 0xff}}},\n    {{{  -588,      0,   -204}, 0, {     0,   2010}, {0x12, 0x23, 0x11, 0xff}}},\n    {{{  -486,      0,   -204}, 0, { -1052,    990}, {0x12, 0x23, 0x11, 0xff}}},\n    {{{  -486,    102,   -204}, 0, { -1052,      0}, {0xa0, 0xcd, 0x97, 0xff}}},\n    {{{  -588,    102,    102}, 0, {     0,    990}, {0xa0, 0xcd, 0x97, 0xff}}},\n    {{{  -486,    102,    102}, 0, { -1052,      0}, {0xa0, 0xcd, 0x97, 0xff}}},\n    {{{  -588,    102,   -204}, 0, {     0,    990}, {0xa0, 0xcd, 0x97, 0xff}}},\n    {{{  -486,    102,    102}, 0, {     0,    990}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -486,      0,   -204}, 0, {   990,    114}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -486,    102,   -204}, 0, {     0,    114}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -486,      0,    102}, 0, {   990,    990}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -588,      0,    102}, 0, {   990,    990}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -588,    102,    102}, 0, {     0,    990}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -588,    102,   -204}, 0, {     0,      0}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -588,      0,   -204}, 0, {   990,      0}, {0x35, 0x4c, 0x2b, 0xff}}},\n};\n\n// 0x070057F0 - 0x07005A48\nstatic const Gfx rr_seg7_dl_070057F0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_07004B10, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07004C10, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(rr_seg7_vertex_07004D10, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 3,  0,  2, 0x0,  1,  0,  5, 0x0),\n    gsSP2Triangles( 2,  1,  6, 0x0,  1,  5,  7, 0x0),\n    gsSP2Triangles( 2,  8,  3, 0x0,  2,  9,  8, 0x0),\n    gsSP2Triangles( 2, 10,  9, 0x0,  2, 11, 10, 0x0),\n    gsSP2Triangles( 2,  6, 12, 0x0, 11,  2, 13, 0x0),\n    gsSP2Triangles(14, 13,  2, 0x0, 14,  7,  5, 0x0),\n    gsSPVertex(rr_seg7_vertex_07004E00, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  2, 0x0,  6,  7,  1, 0x0),\n    gsSP2Triangles( 6,  1,  0, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 8, 11,  9, 0x0, 12,  8,  0, 0x0),\n    gsSP2Triangles(12,  5, 13, 0x0, 12,  0,  2, 0x0),\n    gsSP1Triangle( 2,  5, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_07004EE0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 7,  9,  8, 0x0, 10, 11,  6, 0x0),\n    gsSP2Triangles(10,  6,  3, 0x0,  5, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(rr_seg7_vertex_07004FD0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_070050C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  2,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07005A48 - 0x07005C18\nstatic const Gfx rr_seg7_dl_07005A48[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_070051B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_070052B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 4,  5,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 2,  6,  0, 0x0,  6,  7,  0, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_070053B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9,  6, 0x0,  4, 10, 11, 0x0),\n    gsSP2Triangles( 4, 12, 10, 0x0,  7, 13, 11, 0x0),\n    gsSP2Triangles( 7, 14, 13, 0x0,  5, 15,  6, 0x0),\n    gsSPVertex(rr_seg7_vertex_070054B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 2,  5,  0, 0x0,  5,  3,  0, 0x0),\n    gsSP2Triangles( 1,  6,  2, 0x0,  6,  7,  2, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_070055B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_070056B0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07005C18 - 0x07005C80\nstatic const Gfx rr_seg7_dl_07005C18[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_070056F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07005C80 - 0x07005D00\nconst Gfx rr_seg7_dl_07005C80[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_070057F0),\n    gsSPDisplayList(rr_seg7_dl_07005A48),\n    gsSPDisplayList(rr_seg7_dl_07005C18),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/6/geo.inc.c",
    "content": "// 0x0E0006C0\nconst GeoLayout rr_geo_0006C0[] = {\n    GEO_CULLING_RADIUS(3500),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, rr_seg7_dl_07007E60),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/6/model.inc.c",
    "content": "// 0x07005D00 - 0x07005DF0\nstatic const Vtx rr_seg7_vertex_07005D00[] = {\n    {{{  1075,   -306,   1024}, 0, {   104,   1056}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{   973,   -306,    922}, 0, {   104,   1568}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{   973,   -306,   1024}, 0, {   104,   1568}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{  1075,   -306,    922}, 0, {   104,   1056}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{   973,   -306,   1782}, 0, {   240,    718}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{  1075,   -306,   1679}, 0, {   410,    888}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{   973,   -306,   1679}, 0, {   240,    718}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{  1075,   -306,   1782}, 0, {   410,    888}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{  1075,   -306,   1679}, 0, {   410,    888}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  1126,   -388,   1782}, 0, {   360,   1108}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  1126,   -388,   1679}, 0, {   360,   1108}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  1126,   -388,   1024}, 0, {   376,    938}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  1126,   -388,    922}, 0, {   376,    938}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  1075,   -306,    922}, 0, {   104,   1056}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  1075,   -306,   1024}, 0, {   104,   1056}, {0xff, 0xd4, 0x00, 0xff}}},\n};\n\n// 0x07005DF0 - 0x07005EF0\nstatic const Vtx rr_seg7_vertex_07005DF0[] = {\n    {{{   973,   -306,   1024}, 0, {   104,   1568}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   922,   -388,    922}, 0, {   376,   1958}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   922,   -388,   1024}, 0, {   376,   1958}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   973,   -306,    922}, 0, {   104,   1568}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   922,   -388,   1679}, 0, {    20,    768}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   973,   -306,   1782}, 0, {   240,    718}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   973,   -306,   1679}, 0, {   240,    718}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   922,   -388,   1782}, 0, {    20,    768}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  1075,   -306,   1679}, 0, {   410,    888}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  1075,   -306,   1782}, 0, {   410,    888}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  1126,   -388,   1782}, 0, {   360,   1108}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  1015,  -1433,   1763}, 0, {   278,   1142}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1024,  -1433,   1782}, 0, {   308,   1158}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1024,   -470,   1782}, 0, {   308,    -40}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   973,   -470,   1679}, 0, {   138,   -126}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   973,  -1433,   1679}, 0, {   138,   1074}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x07005EF0 - 0x07005FF0\nstatic const Vtx rr_seg7_vertex_07005EF0[] = {\n    {{{  1075,   -470,   1679}, 0, {   478,     44}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   991,  -1433,   1679}, 0, {   200,   1104}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   973,  -1433,   1679}, 0, {   138,   1074}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1075,  -1433,   1679}, 0, {   480,   1244}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   973,   -470,   1679}, 0, {   138,   -126}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1024,   -470,   1782}, 0, {   308,    -40}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1024,  -1433,   1782}, 0, {   308,   1158}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1070,  -1433,   1690}, 0, {   462,   1234}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1075,  -1433,   1679}, 0, {   480,   1244}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1075,   -470,   1679}, 0, {   478,     44}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{   973,   -306,   1782}, 0, {   240,    718}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  1075,   -470,   1782}, 0, {   138,   1158}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  1126,   -388,   1782}, 0, {   360,   1108}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{   973,   -306,   1024}, 0, {   104,   1568}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{   973,   -470,   1024}, 0, {   650,   1840}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  1075,   -470,   1024}, 0, {   650,   1328}, {0xaa, 0xaa, 0x00, 0xff}}},\n};\n\n// 0x07005FF0 - 0x070060F0\nstatic const Vtx rr_seg7_vertex_07005FF0[] = {\n    {{{   973,   -306,   1024}, 0, {   104,   1568}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{   922,   -388,   1024}, 0, {   376,   1958}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{   973,   -470,   1024}, 0, {   650,   1840}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  1126,   -388,   1024}, 0, {   376,    938}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  1075,   -306,   1024}, 0, {   104,   1056}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  1075,   -470,   1024}, 0, {   650,   1328}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{   973,   -470,   1679}, 0, {     0,    990}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  1075,   -306,   1679}, 0, {   410,    888}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  1126,   -388,   1679}, 0, {   360,   1108}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{   922,   -388,   1679}, 0, {    20,    768}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{   973,   -306,   1679}, 0, {   240,    718}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  1075,   -470,   1679}, 0, {   138,   1158}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{   973,   -306,   1782}, 0, {   240,    718}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{   973,   -470,   1782}, 0, {     0,    990}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  1075,   -470,   1782}, 0, {   138,   1158}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{   922,   -388,   1782}, 0, {    20,    768}, {0xaa, 0xaa, 0x00, 0xff}}},\n};\n\n// 0x070060F0 - 0x070061E0\nstatic const Vtx rr_seg7_vertex_070060F0[] = {\n    {{{   973,   -306,   1782}, 0, {   240,    718}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  1126,   -388,   1782}, 0, {   360,   1108}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  1075,   -306,   1782}, 0, {   410,    888}, {0xaa, 0xaa, 0x00, 0xff}}},\n    {{{  1075,   -470,   1024}, 0, {   650,   1328}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{   973,   -470,    922}, 0, {   650,   1840}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  1075,   -470,    922}, 0, {   650,   1328}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{   973,   -470,   1024}, 0, {   650,   1840}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  1024,   -470,   1782}, 0, {    54,   1074}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  1075,   -470,   1679}, 0, {   138,   1158}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  1075,   -470,   1782}, 0, {   138,   1158}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{   973,   -470,   1679}, 0, {     0,    990}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{   973,   -470,   1782}, 0, {     0,    990}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  1075,   -470,   1679}, 0, {   138,   1158}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  1126,   -388,   1782}, 0, {   360,   1108}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  1075,   -470,   1782}, 0, {   138,   1158}, {0x78, 0x78, 0x00, 0xff}}},\n};\n\n// 0x070061E0 - 0x070062D0\nstatic const Vtx rr_seg7_vertex_070061E0[] = {\n    {{{  1075,   -470,   1024}, 0, {   650,   1328}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  1126,   -388,    922}, 0, {   376,    938}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  1126,   -388,   1024}, 0, {   376,    938}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  1075,   -470,    922}, 0, {   650,   1328}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   922,   -388,   1024}, 0, {   376,   1958}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   922,   -388,    922}, 0, {   376,   1958}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   973,   -470,    922}, 0, {   650,   1840}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   973,   -470,   1024}, 0, {   650,   1840}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   973,   -470,   1679}, 0, {     0,    990}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   922,   -388,   1782}, 0, {    20,    768}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   922,   -388,   1679}, 0, {    20,    768}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   973,   -470,   1782}, 0, {     0,    990}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  1075,   -470,   1679}, 0, {   138,   1158}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  1126,   -388,   1679}, 0, {   360,   1108}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  1126,   -388,   1782}, 0, {   360,   1108}, {0x78, 0x78, 0x00, 0xff}}},\n};\n\n// 0x070062D0 - 0x070063B0\nstatic const Vtx rr_seg7_vertex_070062D0[] = {\n    {{{  1016,   2355,  -1548}, 0, { -9484,    734}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{  1016,   2355,  -1522}, 0, { -9484,    734}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{  1032,   2355,  -1522}, 0, { -9426,    716}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{  1009,   2355,  -1535}, 0, { -9512,    744}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{  1039,   2355,  -1535}, 0, { -9398,    706}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{  1032,   2355,  -1548}, 0, { -9426,    716}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{  1039,    307,  -1535}, 0, {   820,    706}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{  1039,   2355,  -1535}, 0, { -9398,    706}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{  1032,   2355,  -1522}, 0, { -9426,    716}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{  1032,    307,  -1522}, 0, {   792,    716}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{  1045,  -1433,   2154}, 0, {  1302,    716}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{  1045,   -255,   2154}, 0, { -4572,    716}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{  1038,   -255,   2167}, 0, { -4600,    724}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{  1038,  -1433,   2167}, 0, {  1274,    724}, {0x97, 0xa9, 0xcd, 0xff}}},\n};\n\n// 0x070063B0 - 0x070064A0\nstatic const Vtx rr_seg7_vertex_070063B0[] = {\n    {{{  1015,  -1433,   2154}, 0, {  1188,    754}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{  1015,   -255,   2154}, 0, { -4686,    754}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{  1022,   -255,   2141}, 0, { -4658,    744}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{  1022,  -1433,   2141}, 0, {  1216,    744}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{  1009,    307,  -1535}, 0, {   706,    744}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{  1016,   2355,  -1548}, 0, { -9484,    734}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{  1016,    307,  -1548}, 0, {   734,    734}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{  1009,   2355,  -1535}, 0, { -9512,    744}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{  1032,    307,  -1522}, 0, {   792,    716}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  1016,   2355,  -1522}, 0, { -9484,    734}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  1016,    307,  -1522}, 0, {   734,    734}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  1038,  -1433,   2167}, 0, {  1274,    724}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  1038,   -255,   2167}, 0, { -4600,    724}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  1022,   -255,   2167}, 0, { -4658,    744}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  1022,  -1433,   2167}, 0, {  1216,    744}, {0x52, 0x70, 0xac, 0xff}}},\n};\n\n// 0x070064A0 - 0x07006590\nstatic const Vtx rr_seg7_vertex_070064A0[] = {\n    {{{  1022,  -1433,   2141}, 0, {  1216,    744}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  1038,   -255,   2141}, 0, { -4600,    724}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  1038,  -1433,   2141}, 0, {  1274,    724}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  1022,   -255,   2141}, 0, { -4658,    744}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  1016,    307,  -1548}, 0, {   734,    734}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  1016,   2355,  -1548}, 0, { -9484,    734}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  1032,   2355,  -1548}, 0, { -9426,    716}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  1032,    307,  -1548}, 0, {   792,    716}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  1032,    307,  -1522}, 0, {   792,    716}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  1032,   2355,  -1522}, 0, { -9426,    716}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  1016,   2355,  -1522}, 0, { -9484,    734}, {0x52, 0x70, 0xac, 0xff}}},\n    {{{  1032,    307,  -1548}, 0, {   792,    716}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  1032,   2355,  -1548}, 0, { -9426,    716}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  1039,   2355,  -1535}, 0, { -9398,    706}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  1039,    307,  -1535}, 0, {   820,    706}, {0x8c, 0x98, 0xd8, 0xff}}},\n};\n\n// 0x07006590 - 0x07006690\nstatic const Vtx rr_seg7_vertex_07006590[] = {\n    {{{  1016,    307,  -1522}, 0, {   734,    734}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  1009,   2355,  -1535}, 0, { -9512,    744}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  1009,    307,  -1535}, 0, {   706,    744}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  1016,   2355,  -1522}, 0, { -9484,    734}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  1022,  -1433,   2167}, 0, {  1216,    744}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{  1015,   -255,   2154}, 0, { -4686,    754}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{  1015,  -1433,   2154}, 0, {  1188,    754}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{  1022,   -255,   2167}, 0, { -4658,    744}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{  1038,  -1433,   2141}, 0, {  1274,    724}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{  1038,   -255,   2141}, 0, { -4600,    724}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{  1045,   -255,   2154}, 0, { -4572,    716}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{  1045,  -1433,   2154}, 0, {  1302,    716}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{  1022,   -255,   2141}, 0, { -4658,    744}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1038,   -255,   2167}, 0, { -4600,    724}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1045,   -255,   2154}, 0, { -4572,    716}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1038,   -255,   2141}, 0, { -4600,    724}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07006690 - 0x070066D0\nstatic const Vtx rr_seg7_vertex_07006690[] = {\n    {{{  1022,   -255,   2141}, 0, { -4658,    744}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1022,   -255,   2167}, 0, { -4658,    744}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1038,   -255,   2167}, 0, { -4600,    724}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1015,   -255,   2154}, 0, { -4686,    754}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070066D0 - 0x070067C0\nstatic const Vtx rr_seg7_vertex_070066D0[] = {\n    {{{  1235,  -1535,   2359}, 0, { -1036,   5092}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1235,  -1433,   2359}, 0, {  -782,   4836}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   825,  -1433,   2359}, 0, { -1804,   3814}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1331,   -101,    922}, 0, {  2524,   1500}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   717,   -511,    922}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1331,   -511,    922}, 0, {  1502,   2522}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   717,   -101,    922}, 0, {   990,      0}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -716,   -460,   1050}, 0, { -3862,  -2076}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -716,    205,   1050}, 0, { -2202,  -3736}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{    51,    205,   1050}, 0, {  -158,  -1692}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{    51,   -460,   1050}, 0, { -1818,      0}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{    51,   -460,   1664}, 0, { -1818,      0}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{    51,    205,   1664}, 0, {  -158,  -1692}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -716,    205,   1664}, 0, { -2202,  -3736}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -716,   -460,   1664}, 0, { -3862,  -2076}, {0x96, 0x96, 0x96, 0xff}}},\n};\n\n// 0x070067C0 - 0x070068B0\nstatic const Vtx rr_seg7_vertex_070067C0[] = {\n    {{{  1331,    102,      0}, 0, {  3034,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   717,    102,      0}, 0, {  1502,   -542}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   717,   -101,      0}, 0, {   990,      0}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1235,  -1535,   2359}, 0, { -1036,   5092}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   825,  -1433,   2359}, 0, { -1804,   3814}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   825,  -1535,   2359}, 0, { -2058,   4070}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   825,  -1535,   1540}, 0, { -2058,   4070}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{    32,  -1433,   1540}, 0, { -3784,   1834}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{    32,  -1535,   1540}, 0, { -4038,   2090}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   825,  -1433,   1540}, 0, { -1804,   3814}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{    32,  -1535,   1233}, 0, { -4038,   2090}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{    32,  -1433,   1233}, 0, { -3784,   1834}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1235,  -1433,   1233}, 0, {  -782,   4836}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1235,  -1535,   1233}, 0, { -1036,   5092}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1331,   -101,      0}, 0, {  2524,   1500}, {0x96, 0x96, 0x96, 0xff}}},\n};\n\n// 0x070068B0 - 0x070069A0\nstatic const Vtx rr_seg7_vertex_070068B0[] = {\n    {{{  -280,   1024,   1664}, 0, {  2778,   3798}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1406,   1229,   1664}, 0, {   480,    480}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1406,   1024,   1664}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1331,    307,   -921}, 0, {  3544,    480}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   717,    102,   -921}, 0, {  1500,   -542}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1331,    102,   -921}, 0, {  3034,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   717,    307,   -921}, 0, {  2012,  -1054}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1331,   -511,  -1842}, 0, {  1502,   2522}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   717,    307,  -1842}, 0, {  2012,  -1054}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1331,    307,  -1842}, 0, {  3544,    480}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   717,   -511,  -1842}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -2072,   1843,   -588}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -792,   2048,   -588}, 0, {  3672,   3670}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -792,   1843,   -588}, 0, {  3162,   4182}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -2072,   2048,   -588}, 0, {   478,    480}, {0x96, 0x96, 0x96, 0xff}}},\n};\n\n// 0x070069A0 - 0x07006AA0\nstatic const Vtx rr_seg7_vertex_070069A0[] = {\n    {{{  -792,   1024,   1050}, 0, {  1500,   2520}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -792,   1229,   1050}, 0, {  2012,   2010}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -280,   1229,   1050}, 0, {  3290,   3288}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -280,   1024,   1664}, 0, {  2778,   3798}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -280,   1229,   1664}, 0, {  3290,   3288}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1406,   1229,   1664}, 0, {   480,    480}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -280,   1024,   1050}, 0, {  2778,   3798}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{    51,    205,   1050}, 0, {  8206,  -7248}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -716,    205,   1664}, 0, {  4630,  -6738}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{    51,    205,   1664}, 0, {  6674,  -8782}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -716,    205,   1050}, 0, {  6162,  -5204}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1235,  -1433,   1233}, 0, {  1796,   3728}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   825,  -1433,   1540}, 0, {  2052,   5518}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   825,  -1433,   2359}, 0, {     8,   7562}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{    32,  -1433,   1233}, 0, {  4798,   6730}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{    32,  -1433,   1540}, 0, {  4032,   7498}, {0xc8, 0xc8, 0xc8, 0xff}}},\n};\n\n// 0x07006AA0 - 0x07006B80\nstatic const Vtx rr_seg7_vertex_07006AA0[] = {\n    {{{  1235,  -1433,   1233}, 0, {  1796,   3728}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   825,  -1433,   2359}, 0, {     8,   7562}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1235,  -1433,   2359}, 0, { -1012,   6540}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   717,   -101,    922}, 0, {  4056,   4564}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1331,   -101,    922}, 0, {  2524,   3032}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1331,   -101,      0}, 0, {  4822,    734}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   717,   -101,      0}, 0, {  6356,   2266}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -2072,   2048,     26}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -792,   2048,     26}, 0, {  3162,  -2204}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -792,   2048,   -588}, 0, {  4694,   -670}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   717,    307,   -921}, 0, {  8656,      0}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1331,    307,  -1842}, 0, {  9422,  -3864}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   717,    307,  -1842}, 0, { 10954,  -2332}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1331,    307,   -921}, 0, {  7122,  -1564}, {0xc8, 0xc8, 0xc8, 0xff}}},\n};\n\n// 0x07006B80 - 0x07006C60\nstatic const Vtx rr_seg7_vertex_07006B80[] = {\n    {{{  1331,    102,   -921}, 0, {  7122,  -1564}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   717,    102,   -921}, 0, {  8656,      0}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   717,    102,      0}, 0, {  6356,   2266}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1331,    102,      0}, 0, {  4822,    734}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1406,   1229,   1050}, 0, {  1502,   2520}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1406,   1229,   1664}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -280,   1229,   1664}, 0, {  2778,  -1820}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -280,   1229,   1050}, 0, {  4312,   -288}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -2072,   2048,     26}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -792,   2048,   -588}, 0, {  4694,   -670}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -2072,   2048,   -588}, 0, {  1500,   2520}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1235,  -1535,   1233}, 0, { -3534,  -7004}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1235,  -1433,   2359}, 0, { -1234,  -8792}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1235,  -1535,   2359}, 0, { -1490,  -9048}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x07006C60 - 0x07006D50\nstatic const Vtx rr_seg7_vertex_07006C60[] = {\n    {{{  -716,   -460,   1664}, 0, { -1052,  -5142}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -716,    205,   1050}, 0, {  -924,  -1948}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -716,   -460,   1050}, 0, { -2586,  -3610}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -716,    205,   1664}, 0, {   606,  -3482}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{    51,   -460,   1050}, 0, { -2586,  -3610}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{    51,    205,   1050}, 0, {  -924,  -1948}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{    51,    205,   1664}, 0, {   606,  -3482}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{    51,   -460,   1664}, 0, { -1052,  -5142}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   825,  -1535,   2359}, 0, { -1490,  -9048}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   825,  -1433,   2359}, 0, { -1234,  -8792}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   825,  -1433,   1540}, 0, { -3278,  -6748}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   825,  -1535,   1540}, 0, { -3534,  -7004}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1235,  -1535,   1233}, 0, { -3534,  -7004}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1235,  -1433,   1233}, 0, { -3278,  -6748}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1235,  -1433,   2359}, 0, { -1234,  -8792}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x07006D50 - 0x07006E50\nstatic const Vtx rr_seg7_vertex_07006D50[] = {\n    {{{   717,    307,  -1842}, 0, {  5930,   4224}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   717,   -511,  -1842}, 0, {  4568,   5588}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   717,   -511,    922}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   717,    102,   -921}, 0, {  4056,   3032}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   717,    307,   -921}, 0, {  4396,   2692}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   717,   -101,      0}, 0, {  2182,   1840}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   717,   -101,    922}, 0, {   650,    308}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   717,    102,      0}, 0, {  2524,   1500}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1331,   -101,      0}, 0, {  2182,   1840}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1331,   -101,    922}, 0, {   650,    308}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1331,   -511,    922}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -2072,   1843,     26}, 0, {  1502,   -544}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -2072,   2048,   -588}, 0, {   478,   1498}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -2072,   1843,   -588}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1331,    307,  -1842}, 0, {  5930,   4224}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1331,    102,   -921}, 0, {  4056,   3032}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x07006E50 - 0x07006F30\nstatic const Vtx rr_seg7_vertex_07006E50[] = {\n    {{{  1331,   -511,    922}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1331,   -511,  -1842}, 0, {  4568,   5588}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1331,    307,  -1842}, 0, {  5930,   4224}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1331,    307,   -921}, 0, {  4396,   2692}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1331,    102,   -921}, 0, {  4056,   3032}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1331,    102,      0}, 0, {  2524,   1500}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1331,   -101,      0}, 0, {  2182,   1840}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -792,   1843,   -588}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -792,   2048,     26}, 0, {  2012,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -792,   1843,     26}, 0, {  1502,   -544}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -792,   2048,   -588}, 0, {   480,   1498}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -2072,   1843,     26}, 0, {  1502,   -544}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -2072,   2048,     26}, 0, {  2012,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -2072,   2048,   -588}, 0, {   478,   1498}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x07006F30 - 0x07007020\nstatic const Vtx rr_seg7_vertex_07006F30[] = {\n    {{{  -280,   1229,   1050}, 0, {   478,   1500}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -280,   1229,   1664}, 0, {  2012,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -280,   1024,   1664}, 0, {  1500,   -544}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -280,   1024,   1050}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1406,   1024,   1664}, 0, {  1500,   -544}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1406,   1229,   1050}, 0, {   478,   1500}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1406,   1024,   1050}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1406,   1229,   1664}, 0, {  2012,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -280,   1024,   1664}, 0, {  2778,  -1820}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1406,   1024,   1050}, 0, {  1500,   2520}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -280,   1024,   1050}, 0, {  4312,   -288}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{    51,   -460,   1664}, 0, {  6674,  -8782}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -716,   -460,   1664}, 0, {  4630,  -6738}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -716,   -460,   1050}, 0, {  6162,  -5204}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{    51,   -460,   1050}, 0, {  8206,  -7248}, {0x55, 0x55, 0x55, 0xff}}},\n};\n\n// 0x07007020 - 0x07007110\nstatic const Vtx rr_seg7_vertex_07007020[] = {\n    {{{  1331,   -511,    922}, 0, {  2524,   3032}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   717,   -511,    922}, 0, {  4056,   4564}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   717,   -511,  -1842}, 0, { 10954,  -2332}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1331,   -511,  -1842}, 0, {  9422,  -3864}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -2072,   1843,   -588}, 0, {  1500,   2520}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -792,   1843,     26}, 0, {  3162,  -2204}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -2072,   1843,     26}, 0, {     0,    990}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -792,   1843,   -588}, 0, {  4694,   -670}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -280,   1024,   1664}, 0, {  2778,  -1820}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1406,   1024,   1664}, 0, {     0,    990}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1406,   1024,   1050}, 0, {  1500,   2520}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1406,   1843,     26}, 0, {  1628,   2648}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -1406,   2048,     26}, 0, {  2140,   2138}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -2072,   2048,     26}, 0, {   478,    480}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{ -2072,   1843,     26}, 0, {     0,    990}, {0x91, 0x91, 0x91, 0xff}}},\n};\n\n// 0x07007110 - 0x07007150\nstatic const Vtx rr_seg7_vertex_07007110[] = {\n    {{{    51,   -460,   1050}, 0, { -2586,  -3610}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -716,   -460,   1050}, 0, { -2586,  -3610}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -716,   -460,   1664}, 0, { -1052,  -5142}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{    51,   -460,   1664}, 0, { -1052,  -5142}, {0x50, 0x50, 0x00, 0xff}}},\n};\n\n// 0x07007150 - 0x07007250\nstatic const Vtx rr_seg7_vertex_07007150[] = {\n    {{{   742,   1229,   1050}, 0, { -2074,   -236}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   742,   1229,   1664}, 0, { -2074,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1151,   1638,   1664}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1151,   1638,   1050}, 0, {     0,   -236}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1254,   1638,   1050}, 0, {   478,   -236}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1663,   1229,   1664}, 0, {  2522,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1663,   1229,   1050}, 0, {  2522,   -236}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  1254,   1638,   1664}, 0, {   480,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1406,   1024,   1050}, 0, {   500,   1122}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{ -1406,   2048,     26}, 0, {     0,   -670}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{ -1406,   1843,     26}, 0, {   500,   -512}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{ -1406,   1229,   1050}, 0, {     0,    966}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -792,   1024,   1050}, 0, {   404,    640}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -792,   1843,     26}, 0, {   404,   2820}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -792,   2048,     26}, 0, {   138,   3032}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -792,   1229,   1050}, 0, {   138,    852}, {0x67, 0x89, 0x51, 0xff}}},\n};\n\n// 0x07007250 - 0x07007350\nstatic const Vtx rr_seg7_vertex_07007250[] = {\n    {{{ -1406,   1843,     26}, 0, {     0,   -950}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -792,   1843,     26}, 0, {  3034,   -950}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -792,   1024,   1050}, 0, {  3034,   1230}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{ -1406,   1024,   1050}, 0, {     0,   1230}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{ -1406,   1229,   1050}, 0, {     0,    990}, {0xff, 0xe5, 0x65, 0xff}}},\n    {{{  -792,   2048,     26}, 0, {  3034,   -646}, {0xff, 0xe5, 0x65, 0xff}}},\n    {{{ -1406,   2048,     26}, 0, {     0,   -646}, {0xff, 0xe5, 0x65, 0xff}}},\n    {{{  -792,   1229,   1050}, 0, {  3034,    990}, {0xff, 0xe5, 0x65, 0xff}}},\n    {{{  1663,   1229,   1050}, 0, {  2522,   -236}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1663,   1229,   1664}, 0, {  2522,    990}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   742,   1229,   1664}, 0, { -2074,    990}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   742,   1229,   1050}, 0, { -2074,   -236}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1151,   1638,   1050}, 0, {     0,   -236}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1254,   1638,   1664}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1254,   1638,   1050}, 0, {   478,   -236}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1151,   1638,   1664}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07007350 - 0x070073D0\nstatic const Vtx rr_seg7_vertex_07007350[] = {\n    {{{  1663,   1229,   1664}, 0, {  4566,   2522}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1151,   1638,   1664}, 0, {  2012,    990}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{   742,   1229,   1664}, 0, {     0,    990}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1254,   1638,   1664}, 0, {  2522,   1158}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{   742,   1229,   1050}, 0, {     0,    990}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1151,   1638,   1050}, 0, {  2012,    990}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1254,   1638,   1050}, 0, {  2524,   1158}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{  1663,   1229,   1050}, 0, {  4568,   2522}, {0x91, 0x91, 0x91, 0xff}}},\n};\n\n// 0x070073D0 - 0x070074D0\nstatic const Vtx rr_seg7_vertex_070073D0[] = {\n    {{{ -1099,   1507,    702}, 0, {  1002,   1238}, {0x66, 0x50, 0x21, 0xff}}},\n    {{{ -1099,   1670,    702}, 0, {  1342,   1068}, {0x66, 0x50, 0x21, 0xff}}},\n    {{{ -1304,   1670,    702}, 0, {  1002,    728}, {0x66, 0x50, 0x21, 0xff}}},\n    {{{ -1099,   1752,    395}, 0, {  2310,    586}, {0x66, 0x50, 0x21, 0xff}}},\n    {{{ -1099,   1926,    190}, 0, {  3204,    138}, {0x66, 0x50, 0x21, 0xff}}},\n    {{{ -1099,   1916,    190}, 0, {  3184,    148}, {0x66, 0x50, 0x21, 0xff}}},\n    {{{  -894,   1752,    395}, 0, {  2652,    926}, {0x66, 0x50, 0x21, 0xff}}},\n    {{{ -1099,   1926,    395}, 0, {  2672,    404}, {0x66, 0x50, 0x21, 0xff}}},\n    {{{  -894,   1916,    190}, 0, {  3524,    490}, {0x66, 0x50, 0x21, 0xff}}},\n    {{{  -894,   1926,    190}, 0, {  3546,    478}, {0x66, 0x50, 0x21, 0xff}}},\n    {{{  -894,   1926,    395}, 0, {  3014,    744}, {0x66, 0x50, 0x21, 0xff}}},\n    {{{  -894,   1261,   1010}, 0, {    34,   2232}, {0x66, 0x50, 0x21, 0xff}}},\n    {{{  -894,   1414,   1010}, 0, {   354,   2072}, {0x66, 0x50, 0x21, 0xff}}},\n    {{{ -1099,   1414,   1010}, 0, {    12,   1732}, {0x66, 0x50, 0x21, 0xff}}},\n    {{{ -1099,   1261,   1010}, 0, {  -304,   1892}, {0x66, 0x50, 0x21, 0xff}}},\n    {{{ -1304,   1507,    702}, 0, {   662,    898}, {0x66, 0x50, 0x21, 0xff}}},\n};\n\n// 0x070074D0 - 0x070075C0\nstatic const Vtx rr_seg7_vertex_070074D0[] = {\n    {{{ -1304,   1507,    702}, 0, {   662,    898}, {0x52, 0x44, 0x30, 0xff}}},\n    {{{ -1304,   1670,    702}, 0, {  1002,    728}, {0x52, 0x44, 0x30, 0xff}}},\n    {{{ -1304,   1670,    498}, 0, {  1534,    462}, {0x52, 0x44, 0x30, 0xff}}},\n    {{{ -1099,   1752,    395}, 0, {  2310,    586}, {0x52, 0x44, 0x30, 0xff}}},\n    {{{ -1099,   1926,    395}, 0, {  2672,    404}, {0x52, 0x44, 0x30, 0xff}}},\n    {{{ -1099,   1926,    190}, 0, {  3204,    138}, {0x52, 0x44, 0x30, 0xff}}},\n    {{{  -894,   1916,    190}, 0, {  3524,    490}, {0x52, 0x44, 0x30, 0xff}}},\n    {{{  -894,   1926,    395}, 0, {  3014,    744}, {0x52, 0x44, 0x30, 0xff}}},\n    {{{  -894,   1752,    395}, 0, {  2652,    926}, {0x52, 0x44, 0x30, 0xff}}},\n    {{{  -894,   1414,    818}, 0, {   852,   1824}, {0x52, 0x44, 0x30, 0xff}}},\n    {{{  -894,   1414,   1010}, 0, {   354,   2072}, {0x52, 0x44, 0x30, 0xff}}},\n    {{{  -894,   1261,   1010}, 0, {    34,   2232}, {0x52, 0x44, 0x30, 0xff}}},\n    {{{ -1099,   1261,   1010}, 0, {  -304,   1892}, {0x52, 0x44, 0x30, 0xff}}},\n    {{{ -1099,   1414,   1010}, 0, {    12,   1732}, {0x52, 0x44, 0x30, 0xff}}},\n    {{{ -1099,   1414,    818}, 0, {   512,   1482}, {0x52, 0x44, 0x30, 0xff}}},\n};\n\n// 0x070075C0 - 0x070076B0\nstatic const Vtx rr_seg7_vertex_070075C0[] = {\n    {{{ -1099,   1670,    498}, 0, {  1874,    804}, {0x52, 0x44, 0x30, 0xff}}},\n    {{{ -1099,   1670,    702}, 0, {  1342,   1068}, {0x52, 0x44, 0x30, 0xff}}},\n    {{{ -1099,   1507,    702}, 0, {  1002,   1238}, {0x52, 0x44, 0x30, 0xff}}},\n    {{{ -1099,   1414,   1010}, 0, {    12,   1732}, {0xac, 0x8e, 0x52, 0xff}}},\n    {{{  -894,   1414,    818}, 0, {   852,   1824}, {0xac, 0x8e, 0x52, 0xff}}},\n    {{{ -1099,   1414,    818}, 0, {   512,   1482}, {0xac, 0x8e, 0x52, 0xff}}},\n    {{{  -894,   1414,   1010}, 0, {   354,   2072}, {0xac, 0x8e, 0x52, 0xff}}},\n    {{{ -1304,   1670,    702}, 0, {  1002,    728}, {0xac, 0x8e, 0x52, 0xff}}},\n    {{{ -1099,   1670,    702}, 0, {  1342,   1068}, {0xac, 0x8e, 0x52, 0xff}}},\n    {{{ -1099,   1670,    498}, 0, {  1874,    804}, {0xac, 0x8e, 0x52, 0xff}}},\n    {{{ -1304,   1670,    498}, 0, {  1534,    462}, {0xac, 0x8e, 0x52, 0xff}}},\n    {{{ -1099,   1926,    395}, 0, {  2672,    404}, {0xac, 0x8e, 0x52, 0xff}}},\n    {{{  -894,   1926,    190}, 0, {  3546,    478}, {0xac, 0x8e, 0x52, 0xff}}},\n    {{{ -1099,   1926,    190}, 0, {  3204,    138}, {0xac, 0x8e, 0x52, 0xff}}},\n    {{{  -894,   1926,    395}, 0, {  3014,    744}, {0xac, 0x8e, 0x52, 0xff}}},\n};\n\n// 0x070076B0 - 0x07007868\nstatic const Gfx rr_seg7_dl_070076B0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_07005D00, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07005DF0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(14, 11, 13, 0x0, 14, 15, 11, 0x0),\n    gsSPVertex(rr_seg7_vertex_07005EF0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  5,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07005FF0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  5,  3, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  9, 10, 0x0,  6, 10,  7, 0x0),\n    gsSP2Triangles( 6,  8, 11, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 15, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_070060F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7, 11, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_070061E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007868 - 0x070079B0\nstatic const Gfx rr_seg7_dl_07007868[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_070062D0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  0,  2,  4, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_070063B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_070064A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07006590, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07006690, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070079B0 - 0x07007CB0\nstatic const Gfx rr_seg7_dl_070079B0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_070066D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_070067C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_070068B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_070069A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  2,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 15, 0x0, 11, 15, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_07006AA0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(rr_seg7_vertex_07006B80, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07006C60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07006D50, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 3,  0,  2, 0x0,  3,  2,  5, 0x0),\n    gsSP2Triangles( 2,  6,  5, 0x0,  5,  7,  3, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(10, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07006E50, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  0,  4,  6, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7, 10,  8, 0x0),\n    gsSP1Triangle(11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07006F30, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07007020, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07007110, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007CB0 - 0x07007D88\nstatic const Gfx rr_seg7_dl_07007CB0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_07007150, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07007250, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07007350, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007D88 - 0x07007E60\nstatic const Gfx rr_seg7_dl_07007D88[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_070073D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  3, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 6, 10,  7, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_070074D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_070075C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007E60 - 0x07007EF0\nconst Gfx rr_seg7_dl_07007E60[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_070076B0),\n    gsSPDisplayList(rr_seg7_dl_07007868),\n    gsSPDisplayList(rr_seg7_dl_070079B0),\n    gsSPDisplayList(rr_seg7_dl_07007CB0),\n    gsSPDisplayList(rr_seg7_dl_07007D88),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/7/geo.inc.c",
    "content": "// 0x0E0006D8\nconst GeoLayout rr_geo_0006D8[] = {\n    GEO_CULLING_RADIUS(3500),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, rr_seg7_dl_07008258),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/7/model.inc.c",
    "content": "// 0x07007EF0 - 0x07007FF0\nstatic const Vtx rr_seg7_vertex_07007EF0[] = {\n    {{{ -2405,    -76,   -741}, 0, { -4260,   8996}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -2815,    128,   -537}, 0, { -5140,   8908}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -2405,    128,   -741}, 0, { -4374,   8654}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2406,    -76,    589}, 0, {  -144,    648}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2816,    128,    384}, 0, {   734,    734}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2406,    128,    589}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2816,    -76,    384}, 0, {   620,    392}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2406,    128,   -741}, 0, {  1628,   2648}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2816,    128,   -537}, 0, {  1884,   1882}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2816,    -76,   -537}, 0, {  2228,   1996}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  2406,    -76,   -741}, 0, {  1972,   2764}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -2405,    128,    589}, 0, { -6034,   6992}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -2815,    -76,    384}, 0, { -6632,   7644}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -2405,    -76,    589}, 0, { -6378,   6878}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -2815,    128,    384}, 0, { -6290,   7758}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{ -2815,    -76,   -537}, 0, { -5026,   9252}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x07007FF0 - 0x070080F0\nstatic const Vtx rr_seg7_vertex_07007FF0[] = {\n    {{{ -2405,    128,   -741}, 0, { -4374,   8654}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2406,    -76,   -741}, 0, {  1884,   2904}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -2405,    -76,   -741}, 0, { -4118,   8908}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2406,    128,   -741}, 0, {  1628,   2648}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -2405,    -76,    589}, 0, { -6290,   6736}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2406,    128,    589}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -2405,    128,    589}, 0, { -6034,   6992}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2406,    -76,    589}, 0, {  -286,    734}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2816,    -76,    384}, 0, {   990,    478}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  2816,    128,   -537}, 0, {  1884,   1882}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  2816,    128,    384}, 0, {   734,    734}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  2816,    -76,   -537}, 0, {  2140,   1626}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -2815,    128,    384}, 0, { -6290,   7758}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -2815,    128,   -537}, 0, { -5140,   8908}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -2815,    -76,   -537}, 0, { -5396,   9164}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -2815,    -76,    384}, 0, { -6546,   8014}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x070080F0 - 0x07008170\nstatic const Vtx rr_seg7_vertex_070080F0[] = {\n    {{{ -2405,    128,   -741}, 0, { -4374,   8654}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2405,    128,    589}, 0, { -6034,   6992}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2406,    128,    589}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2815,    128,   -537}, 0, { -5140,   8908}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2815,    128,    384}, 0, { -6290,   7758}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2816,    128,    384}, 0, {   734,    734}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2816,    128,   -537}, 0, {  1884,   1882}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2406,    128,   -741}, 0, {  1628,   2648}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07008170 - 0x07008258\nstatic const Gfx rr_seg7_dl_07008170[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_07007EF0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(rr_seg7_vertex_07007FF0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_070080F0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 0,  5,  6, 0x0,  0,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008258 - 0x070082C8\nconst Gfx rr_seg7_dl_07008258[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_07008170),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/8/geo.inc.c",
    "content": "// 0x0E0006F0\nconst GeoLayout rr_geo_0006F0[] = {\n    GEO_CULLING_RADIUS(2800),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, rr_seg7_dl_07008E20),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/8/model.inc.c",
    "content": "// 0x070082C8 - 0x070083C8\nstatic const Vtx rr_seg7_vertex_070082C8[] = {\n    {{{   620,      0,   -116}, 0, {   922,   1124}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   214,      0,   -521}, 0, {  1872,    780}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   272,    205,   -680}, 0, {  2082,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   620,      0,    347}, 0, {   180,    780}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   272,    205,    912}, 0, {  -462,   -198}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   214,      0,    752}, 0, {  -164,   -172}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   779,    205,    405}, 0, {     0,    990}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -306,    205,    912}, 0, {     0,  -1124}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -813,    205,    405}, 0, {  1156,  -1556}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -654,      0,    347}, 0, {  1132,  -1258}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -248,      0,    752}, 0, {   180,   -912}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -654,      0,   -116}, 0, {  1872,   -912}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -813,    205,   -173}, 0, {  2082,  -1124}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -306,    205,   -680}, 0, {  2514,     64}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{  -248,      0,   -521}, 0, {  2218,     38}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   779,    205,   -173}, 0, {   894,   1420}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x070083C8 - 0x070084C8\nstatic const Vtx rr_seg7_vertex_070083C8[] = {\n    {{{   272,    205,    912}, 0, {  -462,   -198}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -306,    205,    912}, 0, {     0,  -1124}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -248,      0,    752}, 0, {   180,   -912}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   214,      0,    752}, 0, {  -164,   -172}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -306,    205,   -680}, 0, {  2514,     64}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   272,    205,   -680}, 0, {  2082,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -248,      0,   -521}, 0, {  2218,     38}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   214,      0,   -521}, 0, {  1872,    780}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   272,    205,   -680}, 0, {  2082,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -306,    205,   -680}, 0, {  2514,     64}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -813,    205,   -173}, 0, {  2082,  -1124}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   779,    205,    405}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   779,    205,   -173}, 0, {   894,   1420}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -813,    205,    405}, 0, {  1156,  -1556}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -306,    205,    912}, 0, {     0,  -1124}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   272,    205,    912}, 0, {  -462,   -198}, {0xc8, 0xc8, 0xc8, 0xff}}},\n};\n\n// 0x070084C8 - 0x070085B8\nstatic const Vtx rr_seg7_vertex_070084C8[] = {\n    {{{   317,    642,  -1495}, 0, {   480,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   214,    642,  -1495}, 0, {   224,   1244}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   214,    642,  -1393}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   317,    642,  -1393}, 0, {   224,    734}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -654,      0,   -116}, 0, {  1872,   -912}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -813,    205,    405}, 0, {  1156,  -1556}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -813,    205,   -173}, 0, {  2082,  -1124}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -654,      0,    347}, 0, {  1132,  -1258}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   620,      0,    347}, 0, {   180,    780}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   779,    205,   -173}, 0, {   894,   1420}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   779,    205,    405}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   620,      0,   -116}, 0, {   922,   1124}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   163,    437,  -1239}, 0, {  -542,    734}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   214,    642,  -1393}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   112,    437,  -1598}, 0, {   224,   1754}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x070085B8 - 0x070086B8\nstatic const Vtx rr_seg7_vertex_070085B8[] = {\n    {{{   419,    437,  -1598}, 0, {   990,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   317,    284,  -1495}, 0, {   480,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   214,    284,  -1495}, 0, {   224,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   112,    437,  -1598}, 0, {   224,   1754}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   163,    437,  -1239}, 0, {  -542,    734}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   317,    284,  -1393}, 0, {   224,    734}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   368,    437,  -1239}, 0, {     0,    224}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   214,    284,  -1393}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   317,    642,  -1393}, 0, {   224,    734}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   317,    642,  -1495}, 0, {   480,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   214,    642,  -1393}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   214,    642,  -1495}, 0, {   224,   1244}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   620,      0,   -116}, 0, {   922,   1124}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   620,      0,    347}, 0, {   180,    780}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   214,      0,   -521}, 0, {  1872,    780}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   214,      0,    752}, 0, {  -164,   -172}, {0x55, 0x55, 0x55, 0xff}}},\n};\n\n// 0x070086B8 - 0x07008798\nstatic const Vtx rr_seg7_vertex_070086B8[] = {\n    {{{  -248,      0,    752}, 0, {   180,   -912}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -654,      0,    347}, 0, {  1132,  -1258}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   214,      0,   -521}, 0, {  1872,    780}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -654,      0,   -116}, 0, {  1872,   -912}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -248,      0,   -521}, 0, {  2218,     38}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   214,      0,    752}, 0, {  -164,   -172}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   317,    284,  -1393}, 0, {   224,    734}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   214,    284,  -1393}, 0, {     0,    990}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   214,    284,  -1495}, 0, {   224,   1244}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   317,    284,  -1495}, 0, {   480,    990}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   112,    437,  -1598}, 0, {   224,   1754}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   214,    284,  -1393}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   163,    437,  -1239}, 0, {  -542,    734}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   214,    284,  -1495}, 0, {   224,   1244}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x07008798 - 0x07008858\nstatic const Vtx rr_seg7_vertex_07008798[] = {\n    {{{   368,    437,  -1239}, 0, {     0,    224}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   317,    284,  -1393}, 0, {   224,    734}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   419,    437,  -1598}, 0, {   990,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   317,    284,  -1495}, 0, {   480,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   368,    437,  -1239}, 0, {     0,    224}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{   214,    642,  -1393}, 0, {     0,    990}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{   163,    437,  -1239}, 0, {  -542,    734}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{   317,    642,  -1393}, 0, {   224,    734}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{   112,    437,  -1598}, 0, {   224,   1754}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{   214,    642,  -1495}, 0, {   224,   1244}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{   317,    642,  -1495}, 0, {   480,    990}, {0x91, 0x91, 0x91, 0xff}}},\n    {{{   419,    437,  -1598}, 0, {   990,    990}, {0x91, 0x91, 0x91, 0xff}}},\n};\n\n// 0x07008858 - 0x07008958\nstatic const Vtx rr_seg7_vertex_07008858[] = {\n    {{{  -859,   -741,   1479}, 0, {  1500,   2520}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -859,   -588,   1479}, 0, {  1884,   2138}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1474,   -588,   1479}, 0, {   352,    606}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1474,   -741,   1479}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1474,   -741,   1069}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -859,   -588,   1069}, 0, {  1884,   2138}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -859,   -741,   1069}, 0, {  1500,   2520}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1474,   -588,   1069}, 0, {   352,    606}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1474,   -588,   1479}, 0, {     0,    990}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -859,   -588,   1479}, 0, {  1502,   -542}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -859,   -588,   1069}, 0, {  2524,    480}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -1474,   -588,   1069}, 0, {   990,   2010}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  -245,    -76,   1069}, 0, {-25282,   9834}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{  -245,    -76,   1479}, 0, {-25282,   9834}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{  -399,    -76,   1479}, 0, {-24342,   9554}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{  -399,    -76,   1069}, 0, {-24342,   9554}, {0x38, 0x5e, 0x96, 0xff}}},\n};\n\n// 0x07008958 - 0x07008A58\nstatic const Vtx rr_seg7_vertex_07008958[] = {\n    {{{  -399,    -76,   1479}, 0, {-24342,   9554}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  -245,    -76,   1479}, 0, {-25282,   9834}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  -245,     77,   1479}, 0, {-25004,   9694}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  -399,     77,   1479}, 0, {-24064,   9416}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  -399,     77,   1069}, 0, {-24064,   9416}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  -245,     77,   1069}, 0, {-25004,   9694}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  -245,    -76,   1069}, 0, {-25282,   9834}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  -399,    -76,   1069}, 0, {-24342,   9554}, {0x58, 0x87, 0xb9, 0xff}}},\n    {{{  -399,     77,   1069}, 0, {-24064,   9416}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{  -245,     77,   1479}, 0, {-25004,   9694}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{  -245,     77,   1069}, 0, {-25004,   9694}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{  -399,     77,   1479}, 0, {-24064,   9416}, {0x97, 0xb2, 0xcd, 0xff}}},\n    {{{  -245,     77,   1069}, 0, {-25004,   9694}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  -245,     77,   1479}, 0, {-25004,   9694}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  -245,    -76,   1479}, 0, {-25282,   9834}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  -245,    -76,   1069}, 0, {-25282,   9834}, {0x52, 0x7f, 0xac, 0xff}}},\n};\n\n// 0x07008A58 - 0x07008B58\nstatic const Vtx rr_seg7_vertex_07008A58[] = {\n    {{{  -399,    -76,   1069}, 0, {-24342,   9554}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  -399,     77,   1479}, 0, {-24064,   9416}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  -399,     77,   1069}, 0, {-24064,   9416}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  -399,    -76,   1479}, 0, {-24342,   9554}, {0x52, 0x7f, 0xac, 0xff}}},\n    {{{  -859,   -741,   1069}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -859,   -588,   1479}, 0, {  1374,    352}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -859,   -741,   1479}, 0, {   990,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -859,   -588,   1069}, 0, {   352,   1372}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1474,   -741,   1479}, 0, {   990,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1474,   -588,   1479}, 0, {  1374,    352}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1474,   -588,   1069}, 0, {   352,   1372}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1474,   -741,   1069}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -859,   -741,   1479}, 0, {  1500,   -542}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1474,   -741,   1069}, 0, {   990,   2010}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -859,   -741,   1069}, 0, {  2522,    480}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1474,   -741,   1479}, 0, {     0,    990}, {0x55, 0x55, 0x55, 0xff}}},\n};\n\n// 0x07008B58 - 0x07008D28\nstatic const Gfx rr_seg7_dl_07008B58[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_070082C8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_070083C8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11, 12, 0x0),\n    gsSP2Triangles( 8, 13, 14, 0x0,  8, 15, 11, 0x0),\n    gsSP2Triangles( 8, 10, 13, 0x0,  8, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_070084C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_070085B8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 0,  8,  6, 0x0,  0,  9,  8, 0x0),\n    gsSP2Triangles(10, 11,  3, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(13, 15, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_070086B8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 3,  4,  2, 0x0,  5,  0,  2, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(rr_seg7_vertex_07008798, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008D28 - 0x07008E20\nstatic const Gfx rr_seg7_dl_07008D28[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_07008858, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07008958, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07008A58, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008E20 - 0x07008E98\nconst Gfx rr_seg7_dl_07008E20[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_07008B58),\n    gsSPDisplayList(rr_seg7_dl_07008D28),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/9/geo.inc.c",
    "content": "// 0x0E000708\nconst GeoLayout rr_geo_000708[] = {\n    GEO_CULLING_RADIUS(4000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, rr_seg7_dl_0700BB48),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/9/model.inc.c",
    "content": "// 0x07008E98 - 0x07008F98\nstatic const Vtx rr_seg7_vertex_07008E98[] = {\n    {{{ -1433,    179,   -229}, 0, { -1734,   -714}, {0x3e, 0x3f, 0x62, 0xff}}},\n    {{{  1536,   1306,   -229}, 0, {  4908,   2180}, {0x3e, 0x3f, 0x62, 0xff}}},\n    {{{ -1433,   1306,   -229}, 0, {   138,  -2586}, {0x3e, 0x3f, 0x62, 0xff}}},\n    {{{ -2047,  -1253,   -229}, 0, { -5140,   4054}, {0x3e, 0x3f, 0x62, 0xff}}},\n    {{{ -2559,   2022,   -229}, 0, {  -540,  -2246}, {0x3e, 0x3f, 0x62, 0xff}}},\n    {{{ -2559,  -1253,   -229}, 0, { -5992,   3202}, {0x3e, 0x3f, 0x62, 0xff}}},\n    {{{ -2047,   1306,   -229}, 0, {  -882,   -202}, {0x3e, 0x3f, 0x62, 0xff}}},\n    {{{ -1842,   1306,   -229}, 0, {  -540,    138}, {0x3e, 0x3f, 0x62, 0xff}}},\n    {{{ -1433,   1510,   -229}, 0, {   480,    480}, {0x3e, 0x3f, 0x62, 0xff}}},\n    {{{  1741,   1510,   -229}, 0, {  5760,   5758}, {0x3e, 0x3f, 0x62, 0xff}}},\n    {{{  2150,   2022,   -229}, 0, {  7292,   5588}, {0x3e, 0x3f, 0x62, 0xff}}},\n    {{{  1331,    179,   -229}, 0, {  2694,   3714}, {0x3e, 0x3f, 0x62, 0xff}}},\n    {{{ -1433,   -332,   -229}, 0, { -2756,      0}, {0x3e, 0x3f, 0x62, 0xff}}},\n    {{{  1536,    179,   -229}, 0, {  3034,   4054}, {0x3e, 0x3f, 0x62, 0xff}}},\n    {{{  1331,   -895,   -229}, 0, {   904,   5502}, {0x3e, 0x3f, 0x62, 0xff}}},\n    {{{ -1433,  -1253,   -229}, 0, { -4288,   1500}, {0x3e, 0x3f, 0x62, 0xff}}},\n};\n\n// 0x07008F98 - 0x07009098\nstatic const Vtx rr_seg7_vertex_07008F98[] = {\n    {{{  1331,   -895,   -229}, 0, {   904,   5502}, {0x3e, 0x3f, 0x62, 0xff}}},\n    {{{ -1433,  -1253,   -229}, 0, { -4288,   1500}, {0x3e, 0x3f, 0x62, 0xff}}},\n    {{{ -1023,  -1919,   -229}, 0, { -4714,   3288}, {0x3e, 0x3f, 0x62, 0xff}}},\n    {{{     0,  -1919,   -229}, 0, { -3010,   4990}, {0x3e, 0x3f, 0x62, 0xff}}},\n    {{{  1536,  -1253,   -229}, 0, {   650,   6438}, {0x3e, 0x3f, 0x62, 0xff}}},\n    {{{  1536,   -895,   -229}, 0, {  1246,   5842}, {0x3e, 0x3f, 0x62, 0xff}}},\n    {{{  2150,   1510,   -229}, 0, {  6440,   6438}, {0x3e, 0x3f, 0x62, 0xff}}},\n    {{{  2150,   2022,   -229}, 0, {  7292,   5588}, {0x3e, 0x3f, 0x62, 0xff}}},\n    {{{  1741,   1510,   -229}, 0, {  5760,   5758}, {0x3e, 0x3f, 0x62, 0xff}}},\n    {{{  1536,   -434,   -332}, 0, {  3228,   -786}, {0xb4, 0xb4, 0xb4, 0xff}}},\n    {{{  1843,   -434,    384}, 0, {  2548,  -2488}, {0xb4, 0xb4, 0xb4, 0xff}}},\n    {{{  1843,   -434,   -332}, 0, {  3740,  -1296}, {0xb4, 0xb4, 0xb4, 0xff}}},\n    {{{  1536,   -434,    384}, 0, {  2036,  -1978}, {0xb4, 0xb4, 0xb4, 0xff}}},\n    {{{ -1433,   -332,   -229}, 0, { -1392,    308}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1433,   -332,    384}, 0, {  -370,   -714}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1433,   -639,    384}, 0, {  -882,  -1224}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x07009098 - 0x07009188\nstatic const Vtx rr_seg7_vertex_07009098[] = {\n    {{{ -1023,  -1253,   -229}, 0, { -2926,  -1224}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1023,  -1919,    384}, 0, { -3010,  -3354}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1023,  -1919,   -229}, 0, { -4032,  -2332}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1023,  -1253,    384}, 0, { -1904,  -2246}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1433,   -793,   -229}, 0, { -2160,   -458}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1433,  -1253,    384}, 0, { -1904,  -2246}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1433,  -1253,   -229}, 0, { -2926,  -1224}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1433,   -793,    384}, 0, { -1138,  -1480}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   102,   -639,   -229}, 0, { -1904,   -202}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   102,   -639,    384}, 0, {  -882,  -1224}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   102,   -793,    384}, 0, { -1138,  -1480}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   102,   -793,   -229}, 0, { -2160,   -458}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1433,   1306,   -229}, 0, {  1330,   3032}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1433,    896,    384}, 0, {  1672,   1328}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1433,    896,   -229}, 0, {   650,   2350}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x07009188 - 0x07009268\nstatic const Vtx rr_seg7_vertex_07009188[] = {\n    {{{ -1433,   -332,   -229}, 0, { -1392,    308}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1433,   -639,    384}, 0, {  -882,  -1224}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1433,   -639,   -229}, 0, { -1904,   -202}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -818,     77,   -229}, 0, {  -712,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -818,   -332,    384}, 0, {  -370,   -714}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -818,   -332,   -229}, 0, { -1392,    308}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -818,     77,    384}, 0, {   308,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1023,    794,   -229}, 0, {   650,   2350}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1023,     77,    384}, 0, {   308,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1023,     77,   -229}, 0, {  -712,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1023,    794,    384}, 0, {  1672,   1328}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1433,   1306,   -229}, 0, {  1330,   3032}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1433,   1306,    384}, 0, {  2352,   2010}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1433,    896,    384}, 0, {  1672,   1328}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x07009268 - 0x07009358\nstatic const Vtx rr_seg7_vertex_07009268[] = {\n    {{{  1536,    589,   -229}, 0, {   138,   1840}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1536,   1306,    384}, 0, {  2352,   2010}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1536,   1306,   -229}, 0, {  1330,   3032}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1536,    589,    384}, 0, {  1160,    820}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1536,   -434,   -332}, 0, { -1734,    308}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1536,    179,   -229}, 0, {  -542,   1158}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1536,    589,   -332}, 0, {     0,   2010}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -2764,  -1253,   -332}, 0, { -3096,  -1054}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -2764,   2227,    384}, 0, {  4056,   3714}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -2764,   2227,   -332}, 0, {  2864,   4906}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -2764,  -1253,    384}, 0, { -1904,  -2246}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -2559,   2022,   -229}, 0, {  2694,   4394}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -2559,   2022,    384}, 0, {  3716,   3372}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -2559,  -1253,    384}, 0, { -1904,  -2246}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -2559,  -1253,   -229}, 0, { -2926,  -1224}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x07009358 - 0x07009448\nstatic const Vtx rr_seg7_vertex_07009358[] = {\n    {{{     0,   -127,   -229}, 0, { -1052,    650}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{     0,   -332,    384}, 0, {  -370,   -714}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{     0,   -332,   -229}, 0, { -1392,    308}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2150,   1510,   -229}, 0, {  1842,   3544}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2150,   2022,    384}, 0, {  3716,   3372}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2150,   2022,   -229}, 0, {  2694,   4394}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2150,   1510,    384}, 0, {  2864,   2522}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2355,   2227,   -332}, 0, {  2864,   4906}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2355,   2227,    384}, 0, {  4056,   3714}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2355,   1510,    384}, 0, {  2864,   2522}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2355,   1510,   -332}, 0, {  1672,   3714}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -511,   -332,   -229}, 0, { -1392,    308}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -511,   -332,    384}, 0, {  -370,   -714}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -511,     77,    384}, 0, {   308,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -511,     77,   -229}, 0, {  -712,    990}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x07009448 - 0x07009538\nstatic const Vtx rr_seg7_vertex_07009448[] = {\n    {{{     0,    282,   -229}, 0, {  -370,   1328}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{     0,    282,    384}, 0, {   650,    308}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{     0,    435,    384}, 0, {   904,    564}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{     0,   -127,   -229}, 0, { -1052,    650}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{     0,   -127,    384}, 0, {     0,   -372}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{     0,   -332,    384}, 0, {  -370,   -714}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -204,    -25,   -229}, 0, {  -882,    820}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -204,    -25,    384}, 0, {   138,   -202}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -204,   -127,    384}, 0, {     0,   -372}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -204,   -127,   -229}, 0, { -1052,    650}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -306,     77,   -229}, 0, {  -712,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -306,     77,    384}, 0, {   308,      0}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -306,    -25,    384}, 0, {   138,   -202}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -306,    -25,   -229}, 0, {  -882,    820}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{     0,    435,   -229}, 0, {  -116,   1584}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x07009538 - 0x07009628\nstatic const Vtx rr_seg7_vertex_07009538[] = {\n    {{{   512,   -434,   -229}, 0, {  1356,    748}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   307,   -434,    384}, 0, {    -8,     66}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   307,   -434,   -229}, 0, {  1014,   1086}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   819,    435,   -229}, 0, {  -116,   1584}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   819,    282,    384}, 0, {   650,    308}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   819,    282,   -229}, 0, {  -370,   1328}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   819,    435,    384}, 0, {   904,    564}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   205,    435,   -229}, 0, {  -116,   1584}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   205,    845,    384}, 0, {  1586,   1244}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   205,    845,   -229}, 0, {   564,   2266}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   205,    435,    384}, 0, {   904,    564}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   307,   -434,   -229}, 0, { -1564,    138}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   307,   -434,    384}, 0, {  -542,   -884}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   307,   -281,    384}, 0, {  -286,   -628}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   307,   -281,   -229}, 0, { -1308,    394}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x07009628 - 0x07009718\nstatic const Vtx rr_seg7_vertex_07009628[] = {\n    {{{  1024,   -844,   -229}, 0, { -2244,   -544}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1024,   -844,    384}, 0, { -1222,  -1566}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1024,   -997,    384}, 0, { -1478,  -1820}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   512,   -434,   -229}, 0, {  1356,    748}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   512,   -434,    384}, 0, {   334,   -274}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   307,   -434,    384}, 0, {    -8,     66}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   512,   -844,   -229}, 0, { -2244,   -544}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   512,   -434,    384}, 0, {  -542,   -884}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   512,   -434,   -229}, 0, { -1564,    138}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   512,   -844,    384}, 0, { -1222,  -1566}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   307,   -997,   -229}, 0, { -2500,   -798}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   307,   -844,    384}, 0, { -1222,  -1566}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   307,   -844,   -229}, 0, { -2244,   -544}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   307,   -997,    384}, 0, { -1478,  -1820}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1024,   -997,   -229}, 0, { -2500,   -798}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x07009718 - 0x07009808\nstatic const Vtx rr_seg7_vertex_07009718[] = {\n    {{{  1331,   -434,   -229}, 0, { -1564,    138}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1331,    179,    384}, 0, {   478,    138}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1331,    179,   -229}, 0, {  -542,   1158}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   717,   -178,   -229}, 0, { -1138,    564}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   717,   -178,    384}, 0, {  -116,   -458}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   717,   -844,    384}, 0, { -1222,  -1566}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   717,   -844,   -229}, 0, { -2244,   -544}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1024,    -25,   -229}, 0, {  -882,    820}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1024,   -178,    384}, 0, {  -116,   -458}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1024,   -178,   -229}, 0, { -1138,    564}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1024,    -25,    384}, 0, {   138,   -202}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   512,   -281,   -229}, 0, { -1308,    394}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   512,   -281,    384}, 0, {  -286,   -628}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   512,    -25,    384}, 0, {   138,   -202}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{   512,    -25,   -229}, 0, {  -882,    820}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x07009808 - 0x070098F8\nstatic const Vtx rr_seg7_vertex_07009808[] = {\n    {{{  1843,   -434,   -332}, 0, { -1734,    308}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1843,   -434,    384}, 0, {  -542,   -884}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1843,   -588,    384}, 0, {  -796,  -1140}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1331,   -434,   -229}, 0, { -1564,    138}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1331,   -434,    384}, 0, {  -542,   -884}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1331,    179,    384}, 0, {   478,    138}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1024,   -588,   -229}, 0, { -1818,   -118}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1024,   -588,    384}, 0, {  -796,  -1140}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1024,   -434,    384}, 0, {  -542,   -884}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1024,   -434,   -229}, 0, { -1564,    138}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1331,   -895,   -229}, 0, { -2330,   -628}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1331,   -588,    384}, 0, {  -796,  -1140}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1331,   -588,   -229}, 0, { -1818,   -118}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1331,   -895,    384}, 0, { -1308,  -1650}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1843,   -588,   -332}, 0, { -1988,     54}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x070098F8 - 0x070099E8\nstatic const Vtx rr_seg7_vertex_070098F8[] = {\n    {{{  1536,   -434,   -332}, 0, { -1734,    308}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1536,    179,   -229}, 0, {  -542,   1158}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1536,    179,    384}, 0, {   478,    138}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -306,    589,   -229}, 0, {   138,   1840}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -306,    589,    384}, 0, {  1160,    820}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -306,    384,    384}, 0, {   820,    478}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -306,    384,   -229}, 0, {  -200,   1498}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -409,    384,   -229}, 0, {  -200,   1498}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -511,    589,    384}, 0, {  1160,    820}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -511,    589,   -229}, 0, {   138,   1840}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  -409,    384,    384}, 0, {   820,    478}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{     0,  -1919,   -229}, 0, { -4032,  -2332}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{     0,  -1919,    384}, 0, { -3010,  -3354}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{     0,  -1253,    384}, 0, { -1904,  -2246}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{     0,  -1253,   -229}, 0, { -2926,  -1224}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x070099E8 - 0x07009AD8\nstatic const Vtx rr_seg7_vertex_070099E8[] = {\n    {{{  1741,    589,   -332}, 0, {     0,   2010}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1741,   1510,   -332}, 0, {  1672,   3714}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1741,   1510,   -229}, 0, {  1842,   3544}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1536,   -434,   -332}, 0, { -1734,    308}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1536,    179,    384}, 0, {   478,    138}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1536,   -434,    384}, 0, {  -542,   -884}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1536,  -1253,   -229}, 0, { -2926,  -1224}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1536,  -1919,   -332}, 0, { -4204,  -2162}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1536,   -588,   -332}, 0, { -1988,     54}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1536,   -895,   -229}, 0, { -2330,   -628}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1536,   -588,    384}, 0, {  -796,  -1140}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1536,   -895,    384}, 0, { -1308,  -1650}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1536,  -1253,    384}, 0, { -1904,  -2246}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1536,  -1919,    384}, 0, { -3010,  -3354}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1741,   1510,    384}, 0, {  2864,   2522}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x07009AD8 - 0x07009BD8\nstatic const Vtx rr_seg7_vertex_07009AD8[] = {\n    {{{  2765,  -1458,    384}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2765,  -1253,    384}, 0, {   308,    650}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2765,  -1253,   -229}, 0, {  1330,   1670}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1741,    589,   -332}, 0, {     0,   2010}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1741,   1510,    384}, 0, {  2864,   2522}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  1741,    589,    384}, 0, {  1160,    820}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -2047,   1306,    384}, 0, {  2864,   2522}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -2047,   1306,   -229}, 0, {  1842,   3542}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -2047,  -1253,   -229}, 0, { -2926,  -1224}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -2047,  -1919,    384}, 0, { -3010,  -3354}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -2047,  -1919,   -332}, 0, { -4204,  -2162}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -2047,  -1253,   -332}, 0, { -3096,  -1054}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2765,  -1458,   -229}, 0, {   990,   2010}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  3174,  -1458,   -229}, 0, {   990,   2010}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  3174,  -1253,   -229}, 0, {  1330,   1670}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  3174,  -1253,    384}, 0, {   308,    650}, {0x64, 0x64, 0x64, 0xff}}},\n};\n\n// 0x07009BD8 - 0x07009CD8\nstatic const Vtx rr_seg7_vertex_07009BD8[] = {\n    {{{  3174,  -1458,   -229}, 0, {   990,   2010}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  3174,  -1253,    384}, 0, {   308,    650}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  3174,  -1458,    384}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2355,  -1458,   -229}, 0, {   990,   2010}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2355,  -1253,    384}, 0, {   308,    650}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2355,  -1458,    384}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2355,  -1253,   -229}, 0, {  1330,   1670}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2150,  -1458,    384}, 0, {     0,    990}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2150,  -1253,   -229}, 0, {  1330,   1670}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2150,  -1458,   -229}, 0, {   990,   2010}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{  2150,  -1253,    384}, 0, {   308,    650}, {0x64, 0x64, 0x64, 0xff}}},\n    {{{ -1433,   -332,    384}, 0, { -1478,   2436}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1023,    794,    384}, 0, {  1076,   1244}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1125,    896,    384}, 0, {  1076,    904}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1023,     77,    384}, 0, {  -116,   2436}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1433,    896,    384}, 0, {   564,    394}, {0x96, 0x96, 0x96, 0xff}}},\n};\n\n// 0x07009CD8 - 0x07009DD8\nstatic const Vtx rr_seg7_vertex_07009CD8[] = {\n    {{{ -1433,   -332,    384}, 0, { -1478,   2436}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -818,   -332,    384}, 0, {  -456,   3458}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -818,     77,    384}, 0, {   224,   2776}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{     0,  -1919,    384}, 0, { -2756,   4394}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1536,  -1919,    384}, 0, {  -200,   6950}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1536,  -1253,    384}, 0, {   904,   5842}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{     0,  -1253,    384}, 0, { -1648,   3288}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -409,    384,    384}, 0, {     0,    990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -306,    384,    384}, 0, {   138,   1158}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -306,    589,    384}, 0, {   478,    820}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -511,    589,    384}, 0, {   138,    480}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1536,    179,    384}, 0, {  3290,   3458}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1331,    179,    384}, 0, {  2948,   3118}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1331,   -434,    384}, 0, {  1926,   4140}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1024,   -588,    384}, 0, {  1160,   3884}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1331,   -588,    384}, 0, {  1672,   4394}, {0x96, 0x96, 0x96, 0xff}}},\n};\n\n// 0x07009DD8 - 0x07009EB8\nstatic const Vtx rr_seg7_vertex_07009DD8[] = {\n    {{{  1331,   -434,    384}, 0, {  1926,   4140}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1024,   -434,    384}, 0, {  1416,   3628}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1024,   -588,    384}, 0, {  1160,   3884}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1331,   -588,    384}, 0, {  1672,   4394}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1536,    179,    384}, 0, {  3290,   3458}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1536,   -895,    384}, 0, {  1502,   5246}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1536,   -588,    384}, 0, {  2012,   4736}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1843,   -434,    384}, 0, {  2778,   4990}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1536,   -434,    384}, 0, {  2268,   4480}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1331,   -895,    384}, 0, {  1160,   4906}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1843,   -588,    384}, 0, {  2524,   5246}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   307,   -844,    384}, 0, {  -456,   3118}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   307,   -997,    384}, 0, {  -712,   3372}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1024,   -997,    384}, 0, {   478,   4566}, {0x96, 0x96, 0x96, 0xff}}},\n};\n\n// 0x07009EB8 - 0x07009FB8\nstatic const Vtx rr_seg7_vertex_07009EB8[] = {\n    {{{   512,   -281,    384}, 0, {   820,   2520}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   307,   -281,    384}, 0, {   478,   2180}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   307,   -434,    384}, 0, {   224,   2436}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1024,   -997,    384}, 0, {   478,   4566}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1024,   -844,    384}, 0, {   734,   4310}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   717,   -844,    384}, 0, {   224,   3798}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   512,   -844,    384}, 0, {  -116,   3458}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   307,   -844,    384}, 0, {  -456,   3118}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   717,   -178,    384}, 0, {  1330,   2692}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   512,    -25,    384}, 0, {  1246,   2096}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1024,   -178,    384}, 0, {  1842,   3202}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1024,    -25,    384}, 0, {  2098,   2946}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   512,   -434,    384}, 0, {   564,   2776}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -511,   -332,    384}, 0, {  -966,    904}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{     0,   -332,    384}, 0, {  -116,   1754}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{     0,   -127,    384}, 0, {   224,   1414}, {0x96, 0x96, 0x96, 0xff}}},\n};\n\n// 0x07009FB8 - 0x0700A098\nstatic const Vtx rr_seg7_vertex_07009FB8[] = {\n    {{{     0,    435,    384}, 0, {  1160,    478}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{     0,    282,    384}, 0, {   904,    734}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   819,    282,    384}, 0, {  2268,   2096}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   205,    435,    384}, 0, {  1502,    820}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   819,    435,    384}, 0, {  2524,   1840}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   410,    845,    384}, 0, {  2524,    478}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   205,    845,    384}, 0, {  2182,    138}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -511,   -332,    384}, 0, {  -966,    904}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{     0,   -127,    384}, 0, {   224,   1414}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -204,   -127,    384}, 0, {  -116,   1074}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -204,    -25,    384}, 0, {    54,    904}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -306,    -25,    384}, 0, {  -116,    734}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -306,     77,    384}, 0, {    54,    564}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -511,     77,    384}, 0, {  -286,    224}, {0x96, 0x96, 0x96, 0xff}}},\n};\n\n// 0x0700A098 - 0x0700A188\nstatic const Vtx rr_seg7_vertex_0700A098[] = {\n    {{{ -2047,  -1919,    384}, 0, { -5140,   4054}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1023,  -1253,    384}, 0, { -2330,   4650}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1433,  -1253,    384}, 0, { -3010,   3968}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -2764,   2227,    384}, 0, {  -540,  -6674}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -2764,  -1253,    384}, 0, { -6502,   -714}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -2559,  -1253,    384}, 0, { -6162,   -372}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -2559,   2022,    384}, 0, {  -540,  -5994}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2150,   2022,    384}, 0, {  7292,   1840}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2355,   2227,    384}, 0, {  7974,   1840}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2150,   1510,    384}, 0, {  6440,   2692}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2355,   1510,    384}, 0, {  6782,   3032}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -2047,   1306,    384}, 0, {   224,  -1310}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1023,  -1919,    384}, 0, { -3436,   5758}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1842,   1306,    384}, 0, {   564,   -968}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1433,   1510,    384}, 0, {  1586,   -628}, {0x96, 0x96, 0x96, 0xff}}},\n};\n\n// 0x0700A188 - 0x0700A288\nstatic const Vtx rr_seg7_vertex_0700A188[] = {\n    {{{ -1433,   -793,    384}, 0, { -3266,    138}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   102,   -793,    384}, 0, {  -712,   2692}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   102,   -639,    384}, 0, {  -456,   2436}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1433,   -639,    384}, 0, { -3010,   -118}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1433,   -332,    384}, 0, { -2500,   -628}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  -818,     77,    384}, 0, {  -796,   -288}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1023,     77,    384}, 0, { -1138,   -628}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1433,   -332,    384}, 0, { -2756,      0}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1433,    896,    384}, 0, {  -540,  -1906}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1433,   1306,    384}, 0, {   138,  -2586}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1741,   1510,    384}, 0, {  6866,   4650}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1433,   1306,    384}, 0, {  1246,   -288}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1536,   1306,    384}, 0, {  6186,   4650}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1536,    589,    384}, 0, {  4992,   5842}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1741,    589,    384}, 0, {  5334,   6184}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -1433,   1510,    384}, 0, {  1586,   -628}, {0x96, 0x96, 0x96, 0xff}}},\n};\n\n// 0x0700A288 - 0x0700A388\nstatic const Vtx rr_seg7_vertex_0700A288[] = {\n    {{{ -2047,  -1253,   -332}, 0, { -5310,    480}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -2764,   2227,   -332}, 0, {  -540,  -6674}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2355,   2227,   -332}, 0, {  7974,   1840}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -2764,  -1253,   -332}, 0, { -6502,   -714}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1536,   -434,   -332}, 0, {  2012,   5076}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -2047,  -1919,   -332}, 0, { -6418,   1584}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1536,    589,   -332}, 0, {  3716,   3372}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1741,   1510,   -332}, 0, {  5760,   2010}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2765,  -1458,   -229}, 0, {  2352,   8824}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2765,  -1253,   -229}, 0, {  2694,   8482}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  3174,  -1253,   -229}, 0, {  3374,   9164}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2355,   1510,   -332}, 0, {  6782,   3032}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1741,    589,   -332}, 0, {  4056,   3714}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1536,  -1919,   -332}, 0, {  -456,   7546}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1843,   -588,   -332}, 0, {  2268,   5842}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1536,   -588,   -332}, 0, {  1756,   5332}, {0x96, 0x96, 0x96, 0xff}}},\n};\n\n// 0x0700A388 - 0x0700A468\nstatic const Vtx rr_seg7_vertex_0700A388[] = {\n    {{{  1536,   -434,   -332}, 0, {  2012,   5076}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1843,   -434,   -332}, 0, {  2522,   5586}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  1843,   -588,   -332}, 0, {  2268,   5842}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2765,  -1458,   -229}, 0, {  2352,   8824}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  3174,  -1253,   -229}, 0, {  3374,   9164}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  3174,  -1458,   -229}, 0, {  3034,   9504}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  3174,  -1458,    384}, 0, {  3034,   9504}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2765,  -1253,    384}, 0, {  2694,   8482}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2765,  -1458,    384}, 0, {  2352,   8824}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  3174,  -1253,    384}, 0, {  3374,   9164}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2355,  -1458,    384}, 0, {  1672,   8142}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2355,  -1253,    384}, 0, {  2012,   7802}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2150,  -1253,    384}, 0, {  1672,   7460}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2150,  -1458,    384}, 0, {  1330,   7802}, {0x96, 0x96, 0x96, 0xff}}},\n};\n\n// 0x0700A468 - 0x0700A568\nstatic const Vtx rr_seg7_vertex_0700A468[] = {\n    {{{  2150,  -1458,   -229}, 0, {  1330,   7802}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2355,  -1253,   -229}, 0, {  2012,   7802}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2355,  -1458,   -229}, 0, {  1672,   8142}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{  2150,  -1253,   -229}, 0, {  1672,   7460}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{ -2764,   2227,   -332}, 0, { -3924,   6366}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  2355,   2227,    384}, 0, {  3400,  -3340}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  2355,   2227,   -332}, 0, {  4592,  -2148}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{ -2764,   2227,    384}, 0, { -5116,   5174}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  3174,  -1253,   -229}, 0, {  5784,  -3682}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  2765,  -1253,   -229}, 0, {  5102,  -3000}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  2765,  -1253,    384}, 0, {  4080,  -4022}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  3174,  -1253,    384}, 0, {  4762,  -4704}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  2355,  -1253,   -229}, 0, {  4422,  -2318}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  2150,  -1253,    384}, 0, {  3058,  -3000}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  2355,  -1253,    384}, 0, {  3400,  -3340}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{  2150,  -1253,   -229}, 0, {  4080,  -1978}, {0xc8, 0xc8, 0xc8, 0xff}}},\n};\n\n// 0x0700A568 - 0x0700A658\nstatic const Vtx rr_seg7_vertex_0700A568[] = {\n    {{{ -1433,    896,   -229}, 0, {   990,   2010}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1125,    896,    384}, 0, {   308,    650}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1125,    896,   -229}, 0, {  1330,   1670}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1433,  -1253,   -229}, 0, { -1880,   3982}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1433,  -1253,    384}, 0, { -2902,   2960}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1023,  -1253,    384}, 0, { -2220,   2278}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1023,  -1253,   -229}, 0, { -1198,   3300}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1433,   -639,   -229}, 0, { -1880,   3982}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   102,   -639,    384}, 0, {  -346,    406}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   102,   -639,   -229}, 0, {   674,   1426}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1433,   -639,    384}, 0, { -2902,   2960}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1023,     77,   -229}, 0, { -1198,   3300}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1023,     77,    384}, 0, { -2220,   2278}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -818,     77,    384}, 0, { -1880,   1938}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -818,     77,   -229}, 0, {  -858,   2960}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x0700A658 - 0x0700A748\nstatic const Vtx rr_seg7_vertex_0700A658[] = {\n    {{{  -306,    -25,   -229}, 0, {  -176,   2278}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -306,    -25,    384}, 0, { -1198,   1256}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -204,    -25,    384}, 0, { -1028,   1086}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1433,    896,   -229}, 0, {   990,   2010}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1433,    896,    384}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1125,    896,    384}, 0, {   308,    650}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -511,     77,   -229}, 0, {  -346,   2448}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -306,     77,    384}, 0, { -1198,   1256}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -306,     77,   -229}, 0, {  -176,   2278}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -511,     77,    384}, 0, { -1368,   1426}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -204,   -127,   -229}, 0, {    -8,   2108}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -204,   -127,    384}, 0, { -1028,   1086}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{     0,   -127,    384}, 0, {  -516,    578}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{     0,   -127,   -229}, 0, {   504,   1598}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -204,    -25,   -229}, 0, {    -8,   2108}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x0700A748 - 0x0700A838\nstatic const Vtx rr_seg7_vertex_0700A748[] = {\n    {{{   307,   -844,   -229}, 0, {  1014,   1086}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   512,   -844,    384}, 0, {   334,   -274}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   512,   -844,   -229}, 0, {  1356,    748}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   205,    845,   -229}, 0, {   844,   1256}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   205,    845,    384}, 0, {  -176,    236}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   410,    845,    384}, 0, {   162,   -104}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   410,    845,   -229}, 0, {  1184,    918}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{     0,    435,   -229}, 0, {   504,   1598}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{     0,    435,    384}, 0, {  -516,    578}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   205,    435,    384}, 0, {  -176,    236}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   205,    435,   -229}, 0, {   844,   1256}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   307,   -281,   -229}, 0, {  1014,   1086}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   307,   -281,    384}, 0, {    -8,     66}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   512,   -281,    384}, 0, {   334,   -274}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   512,   -281,   -229}, 0, {  1356,    748}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x0700A838 - 0x0700A928\nstatic const Vtx rr_seg7_vertex_0700A838[] = {\n    {{{   512,    -25,   -229}, 0, {  1356,    748}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1024,    -25,    384}, 0, {  1184,  -1126}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1024,    -25,   -229}, 0, {  2206,   -104}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   307,   -844,   -229}, 0, {  1014,   1086}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   307,   -844,    384}, 0, {    -8,     66}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   512,   -844,    384}, 0, {   334,   -274}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1024,   -997,   -229}, 0, {  2206,   -104}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   307,   -997,    384}, 0, {    -8,     66}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   307,   -997,   -229}, 0, {  1014,   1086}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1024,   -997,    384}, 0, {  1184,  -1126}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   717,   -844,   -229}, 0, {  1696,    406}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1024,   -844,    384}, 0, {  1184,  -1126}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1024,   -844,   -229}, 0, {  2206,   -104}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   717,   -844,    384}, 0, {   674,   -616}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{   512,    -25,    384}, 0, {   334,   -274}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x0700A928 - 0x0700AA18\nstatic const Vtx rr_seg7_vertex_0700A928[] = {\n    {{{     0,  -1253,   -229}, 0, {   504,   1598}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1536,  -1253,    384}, 0, {  2036,  -1978}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1536,  -1253,   -229}, 0, {  3058,   -956}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1331,    179,   -229}, 0, {  2718,   -616}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1331,    179,    384}, 0, {  1696,  -1638}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1536,    179,    384}, 0, {  2036,  -1978}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1536,    179,   -229}, 0, {  3058,   -956}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1024,   -434,   -229}, 0, {  2206,   -104}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1024,   -434,    384}, 0, {  1184,  -1126}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1331,   -434,    384}, 0, {  1696,  -1638}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1331,   -434,   -229}, 0, {  2718,   -616}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -511,    589,   -229}, 0, {  -346,   2448}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -511,    589,    384}, 0, { -1368,   1426}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -306,    589,    384}, 0, { -1028,   1086}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  -306,    589,   -229}, 0, {    -8,   2108}, {0x7d, 0x7d, 0x7d, 0xff}}},\n};\n\n// 0x0700AA18 - 0x0700AB18\nstatic const Vtx rr_seg7_vertex_0700AA18[] = {\n    {{{ -1842,   1306,   -229}, 0, {  1330,   1670}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -2047,   1306,    384}, 0, {     0,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1842,   1306,    384}, 0, {   308,    650}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{     0,  -1253,   -229}, 0, {   504,   1598}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{     0,  -1253,    384}, 0, {  -516,    578}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1536,  -1253,    384}, 0, {  2036,  -1978}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1433,   1510,    384}, 0, {   990,      0}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1741,   1510,   -229}, 0, {  7292,  -4290}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -1433,   1510,   -229}, 0, {  2012,    990}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{  1741,   1510,    384}, 0, {  6270,  -5312}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -2047,   1306,   -229}, 0, {   990,   2010}, {0x7d, 0x7d, 0x7d, 0xff}}},\n    {{{ -2866,  -2124,    794}, 0, { -5796,   4834}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -2457,  -2124,   -332}, 0, { -3242,   6026}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  2355,  -2124,   -332}, 0, {  4762,  -1978}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  2765,  -2124,    794}, 0, {  3570,  -4532}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  2355,  -2124,    998}, 0, {  2548,  -4192}, {0x44, 0x44, 0x44, 0xff}}},\n};\n\n// 0x0700AB18 - 0x0700AC08\nstatic const Vtx rr_seg7_vertex_0700AB18[] = {\n    {{{ -2866,  -2124,    794}, 0, { -5796,   4834}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -2866,  -2124,   -127}, 0, { -4264,   6366}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -2457,  -2124,   -332}, 0, { -3242,   6026}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  2765,  -2124,   -127}, 0, {  5102,  -3000}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  2765,  -2124,    794}, 0, {  3570,  -4532}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  2355,  -2124,   -332}, 0, {  4762,  -1978}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  2355,  -2124,    998}, 0, {  2548,  -4192}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{ -2457,  -2124,    998}, 0, { -5456,   3812}, {0x44, 0x44, 0x44, 0xff}}},\n    {{{  1536,   1306,   -229}, 0, {  3058,   -956}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1536,   1306,    384}, 0, {  2036,  -1978}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1433,   1306,    384}, 0, { -2730,   2790}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1741,    589,   -332}, 0, {  3570,  -1126}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1741,    589,    384}, 0, {  2378,  -2318}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1536,    589,    384}, 0, {  2036,  -1978}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1536,    589,   -332}, 0, {  3228,   -786}, {0x55, 0x55, 0x55, 0xff}}},\n};\n\n// 0x0700AC08 - 0x0700ACE8\nstatic const Vtx rr_seg7_vertex_0700AC08[] = {\n    {{{   102,   -793,   -229}, 0, {   674,   1426}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   102,   -793,    384}, 0, {  -346,    406}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1433,   -793,    384}, 0, { -2902,   2960}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1433,   -793,   -229}, 0, { -1880,   3982}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -818,   -332,   -229}, 0, {  -858,   2960}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -818,   -332,    384}, 0, { -1880,   1938}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1433,   -332,    384}, 0, { -2902,   2960}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1433,   -332,   -229}, 0, { -1880,   3982}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   819,    282,   -229}, 0, {  1866,    236}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   819,    282,    384}, 0, {   844,   -786}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{     0,    282,    384}, 0, {  -516,    578}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1536,   1306,   -229}, 0, {  3058,   -956}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1433,   1306,    384}, 0, { -2730,   2790}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1433,   1306,   -229}, 0, { -1708,   3812}, {0x55, 0x55, 0x55, 0xff}}},\n};\n\n// 0x0700ACE8 - 0x0700ADC8\nstatic const Vtx rr_seg7_vertex_0700ACE8[] = {\n    {{{  2150,   2022,   -229}, 0, {  4080,  -1978}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  2150,   2022,    384}, 0, {  3058,  -3000}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -2559,   2022,    384}, 0, { -4774,   4834}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -2559,   2022,   -229}, 0, { -3752,   5856}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{     0,   -332,   -229}, 0, {   504,   1598}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{     0,   -332,    384}, 0, {  -516,    578}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -511,   -332,    384}, 0, { -1368,   1426}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -511,   -332,   -229}, 0, {  -346,   2448}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   819,    282,   -229}, 0, {  1866,    236}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{     0,    282,    384}, 0, {  -516,    578}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{     0,    282,   -229}, 0, {   504,   1598}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1843,   -588,   -332}, 0, {  3740,  -1296}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1843,   -588,    384}, 0, {  2548,  -2488}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1536,   -588,    384}, 0, {  2036,  -1978}, {0x55, 0x55, 0x55, 0xff}}},\n};\n\n// 0x0700ADC8 - 0x0700AEB8\nstatic const Vtx rr_seg7_vertex_0700ADC8[] = {\n    {{{  1024,   -178,   -229}, 0, {  2206,   -104}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   717,   -178,    384}, 0, {   674,   -616}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{   717,   -178,   -229}, 0, {  1696,    406}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1024,   -178,    384}, 0, {  1184,  -1126}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1331,   -588,   -229}, 0, {  2718,   -616}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1331,   -588,    384}, 0, {  1696,  -1638}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1024,   -588,    384}, 0, {  1184,  -1126}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1024,   -588,   -229}, 0, {  2206,   -104}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1536,   -895,   -229}, 0, {  3058,   -956}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1331,   -895,    384}, 0, {  1696,  -1638}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1331,   -895,   -229}, 0, {  2718,   -616}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1536,   -895,    384}, 0, {  2036,  -1978}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  2355,   1510,   -332}, 0, {  4592,  -2148}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  2355,   1510,    384}, 0, {  3400,  -3340}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  2150,   1510,    384}, 0, {  3058,  -3000}, {0x55, 0x55, 0x55, 0xff}}},\n};\n\n// 0x0700AEB8 - 0x0700AFB8\nstatic const Vtx rr_seg7_vertex_0700AEB8[] = {\n    {{{  1843,   -588,   -332}, 0, {  3740,  -1296}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1536,   -588,    384}, 0, {  2036,  -1978}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1536,   -588,   -332}, 0, {  3228,   -786}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -306,    384,   -229}, 0, {    -8,   2108}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -306,    384,    384}, 0, { -1028,   1086}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -409,    384,    384}, 0, { -1368,   1426}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  -409,    384,   -229}, 0, {  -346,   2448}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  2355,   1510,   -332}, 0, {  4592,  -2148}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  2150,   1510,   -229}, 0, {  4080,  -1978}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1741,   1510,   -229}, 0, {  3400,  -1296}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  1741,   1510,   -332}, 0, {  3570,  -1126}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  2150,   1510,    384}, 0, {  3058,  -3000}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -2559,  -1253,    384}, 0, { -4774,   4834}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -2764,  -1253,    384}, 0, { -5116,   5174}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -2764,  -1253,   -332}, 0, { -3924,   6366}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -2559,  -1253,   -229}, 0, { -3752,   5856}, {0x55, 0x55, 0x55, 0xff}}},\n};\n\n// 0x0700AFB8 - 0x0700B0B8\nstatic const Vtx rr_seg7_vertex_0700AFB8[] = {\n    {{{ -2764,  -1253,   -332}, 0, { -3924,   6366}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -2047,  -1253,   -332}, 0, { -2730,   5174}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -2047,  -1253,   -229}, 0, { -2902,   5004}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -2559,  -1253,   -229}, 0, { -3752,   5856}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  3174,  -1458,    384}, 0, {  4762,  -4704}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  2765,  -1458,   -229}, 0, {  5102,  -3000}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  3174,  -1458,   -229}, 0, {  5784,  -3682}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  2765,  -1458,    384}, 0, {  4080,  -4022}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  2150,  -1458,   -229}, 0, {  4080,  -1978}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  2355,  -1458,    384}, 0, {  3400,  -3340}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  2150,  -1458,    384}, 0, {  3058,  -3000}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{  2355,  -1458,   -229}, 0, {  4422,  -2318}, {0x55, 0x55, 0x55, 0xff}}},\n    {{{ -1125,    896,   -229}, 0, {  1330,   1670}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{ -1023,    794,    384}, 0, {   480,    480}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{ -1023,    794,   -229}, 0, {  1502,   1500}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{ -1125,    896,    384}, 0, {   308,    650}, {0x73, 0x73, 0x73, 0xff}}},\n};\n\n// 0x0700B0B8 - 0x0700B138\nstatic const Vtx rr_seg7_vertex_0700B0B8[] = {\n    {{{   410,    845,   -229}, 0, {   564,   2266}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   819,    435,    384}, 0, {   904,    564}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   819,    435,   -229}, 0, {  -116,   1584}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{   410,    845,    384}, 0, {  1586,   1244}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{ -1433,   1510,    384}, 0, {   990,      0}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{ -1433,   1510,   -229}, 0, {  2012,    990}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{ -1842,   1306,    384}, 0, {   308,    650}, {0x73, 0x73, 0x73, 0xff}}},\n    {{{ -1842,   1306,   -229}, 0, {  1330,   1670}, {0x73, 0x73, 0x73, 0xff}}},\n};\n\n// 0x0700B138 - 0x0700BB48\nstatic const Gfx rr_seg7_dl_0700B138[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_07008E98, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 4,  8,  9, 0x0,  4,  9, 10, 0x0),\n    gsSP2Triangles( 4,  7,  8, 0x0, 11,  0, 12, 0x0),\n    gsSP2Triangles( 0, 13,  1, 0x0, 11, 12, 14, 0x0),\n    gsSP1Triangle(14, 12, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07008F98, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07009098, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07009188, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07009268, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  0,  5, 0x0,  4,  6,  0, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7, 10,  8, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07009358, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07009448, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07009538, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07009628, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07009718, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07009808, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_070098F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_070099E8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  9,  6, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles( 6, 12, 13, 0x0,  6, 13,  7, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07009AD8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  9,  6, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0,  8, 11, 10, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07009BD8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0, 11, 13, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07009CD8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07009DD8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  3,  7,  8, 0x0),\n    gsSP2Triangles( 3,  8,  4, 0x0,  3,  9,  5, 0x0),\n    gsSP2Triangles( 3, 10,  7, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07009EB8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  6,  7,  3, 0x0),\n    gsSP2Triangles( 6,  5,  8, 0x0,  9,  6,  8, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07009FB8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  2,  5,  6, 0x0),\n    gsSP2Triangles( 2,  6,  3, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  7, 10, 11, 0x0),\n    gsSP2Triangles( 7, 11, 12, 0x0,  7, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700A098, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  3,  6,  7, 0x0),\n    gsSP2Triangles( 7,  8,  3, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11,  0,  2, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0,  2, 13, 11, 0x0),\n    gsSP1Triangle( 2, 14, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700A188, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 13, 14, 0x0),\n    gsSP2Triangles(12, 14, 10, 0x0, 10, 15, 11, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700A288, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  0, 0x0,  0,  6,  4, 0x0),\n    gsSP2Triangles( 0,  7,  6, 0x0,  0,  2,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  2, 11,  7, 0x0),\n    gsSP2Triangles( 7, 12,  6, 0x0,  4, 13,  5, 0x0),\n    gsSP1Triangle( 4, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700A388, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700A468, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700A568, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700A658, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700A748, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700A838, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700A928, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700AA18, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 0, 10,  1, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700AB18, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  5,  3, 0x0,  0,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700AC08, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700ACE8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700ADC8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700AEB8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0,  7, 11,  8, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 15, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700AFB8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_0700B0B8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700BB48 - 0x0700BBB8\nconst Gfx rr_seg7_dl_0700BB48[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_0700B138),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/collision.inc.c",
    "content": "// 0x0702A9A8 - 0x0702E9D8\nconst Collision rr_seg7_collision_level[] = {\n#ifdef VERSION_JP\n    COL_INIT(),\n    COL_VERTEX_INIT(0x454),\n    COL_VERTEX(-6677, -1782, 270),\n    COL_VERTEX(-6677, 1443, 270),\n    COL_VERTEX(-6677, 1443, -343),\n    COL_VERTEX(-6063, 1443, 270),\n    COL_VERTEX(-6063, -1116, 270),\n    COL_VERTEX(-6677, -1782, -445),\n    COL_VERTEX(-6063, 1648, 270),\n    COL_VERTEX(-6472, 1443, 270),\n    COL_VERTEX(-2888, 1648, 270),\n    COL_VERTEX(-3093, 1443, 270),\n    COL_VERTEX(-7394, 2364, -445),\n    COL_VERTEX(-7394, 2364, 270),\n    COL_VERTEX(-2274, 2364, 270),\n    COL_VERTEX(-2274, 2364, -445),\n    COL_VERTEX(2881, 2872, -2858),\n    COL_VERTEX(2881, 2872, -1834),\n    COL_VERTEX(4622, 2923, -1834),\n    COL_VERTEX(4622, 2923, -2858),\n    COL_VERTEX(5117, 2954, -1934),\n    COL_VERTEX(5117, 2954, -2753),\n    COL_VERTEX(1867, 2957, -2689),\n    COL_VERTEX(1875, 2956, -2001),\n    COL_VERTEX(5953, 3333, -2038),\n    COL_VERTEX(5117, 3322, -1729),\n    COL_VERTEX(5441, 3333, -2448),\n    COL_VERTEX(5117, 3322, -2958),\n    COL_VERTEX(5117, 3322, -1934),\n    COL_VERTEX(5117, 3322, -2753),\n    COL_VERTEX(4622, 3077, -3062),\n    COL_VERTEX(4622, 3077, -1834),\n    COL_VERTEX(1653, 3128, -2858),\n    COL_VERTEX(1038, 3231, -2448),\n    COL_VERTEX(1653, 3128, -2653),\n    COL_VERTEX(2881, 3026, -1834),\n    COL_VERTEX(5441, 3333, -2243),\n    COL_VERTEX(5646, 3333, -2243),\n    COL_VERTEX(5646, 3333, -2448),\n    COL_VERTEX(5953, 3333, -2653),\n    COL_VERTEX(4622, 3077, -2858),\n    COL_VERTEX(4622, 3077, -1629),\n    COL_VERTEX(2881, 3026, -2858),\n    COL_VERTEX(2881, 3026, -3062),\n    COL_VERTEX(2881, 3026, -1629),\n    COL_VERTEX(1653, 3128, -1834),\n    COL_VERTEX(1653, 3128, -2038),\n    COL_VERTEX(1038, 3231, -2243),\n    COL_VERTEX(-190, 3538, -2294),\n    COL_VERTEX(-190, 3538, -2397),\n    COL_VERTEX(-1509, -1280, 5438),\n    COL_VERTEX(-1304, -1270, 5438),\n    COL_VERTEX(-1304, -1280, 5438),\n    COL_VERTEX(-1509, -1270, 5438),\n    COL_VERTEX(2424, -348, 85),\n    COL_VERTEX(2424, -348, 494),\n    COL_VERTEX(3089, 214, 494),\n    COL_VERTEX(3089, 214, 85),\n    COL_VERTEX(-4339, 3098, -6450),\n    COL_VERTEX(-4032, 3098, -6450),\n    COL_VERTEX(-4032, 3098, -6655),\n    COL_VERTEX(-4339, 3098, -6655),\n    COL_VERTEX(-4339, 3098, -6604),\n    COL_VERTEX(-4032, 3507, -6604),\n    COL_VERTEX(-4339, 3507, -6604),\n    COL_VERTEX(-4032, 3098, -6604),\n    COL_VERTEX(1180, 2878, -340),\n    COL_VERTEX(1180, 3083, 274),\n    COL_VERTEX(1180, 2878, 274),\n    COL_VERTEX(1180, 3083, -340),\n    COL_VERTEX(2613, 2878, -340),\n    COL_VERTEX(2613, 3083, -340),\n    COL_VERTEX(975, 2878, 274),\n    COL_VERTEX(-3298, -451, 270),\n    COL_VERTEX(-3093, -297, 270),\n    COL_VERTEX(-3093, 316, 270),\n    COL_VERTEX(-3298, 316, 270),\n    COL_VERTEX(-3298, -297, 270),\n    COL_VERTEX(-3093, -758, 270),\n    COL_VERTEX(-3093, -758, -343),\n    COL_VERTEX(-3093, 316, -343),\n    COL_VERTEX(-3093, -1116, -343),\n    COL_VERTEX(-6370, -1782, -343),\n    COL_VERTEX(-3093, -1782, -445),\n    COL_VERTEX(-2888, 1648, -445),\n    COL_VERTEX(-6677, -1116, -445),\n    COL_VERTEX(-2479, -1321, 270),\n    COL_VERTEX(-2479, -1321, -343),\n    COL_VERTEX(-2274, -1321, 270),\n    COL_VERTEX(-2274, -1321, -343),\n    COL_VERTEX(-1455, -1321, -343),\n    COL_VERTEX(-1455, -1321, 270),\n    COL_VERTEX(-1864, -1321, 270),\n    COL_VERTEX(-1864, -1321, -343),\n    COL_VERTEX(-7394, -1116, -445),\n    COL_VERTEX(-3093, -297, -445),\n    COL_VERTEX(-2888, 1648, -343),\n    COL_VERTEX(-2786, -297, -445),\n    COL_VERTEX(-2888, 726, -445),\n    COL_VERTEX(-2274, 1648, -445),\n    COL_VERTEX(-7189, -1116, 270),\n    COL_VERTEX(-6677, -1116, -343),\n    COL_VERTEX(-7189, 2160, -343),\n    COL_VERTEX(-2479, 1648, -343),\n    COL_VERTEX(-2479, 2160, -343),\n    COL_VERTEX(-4629, -1782, 270),\n    COL_VERTEX(-4629, -1782, -343),\n    COL_VERTEX(-5039, 521, -343),\n    COL_VERTEX(-4936, 521, -343),\n    COL_VERTEX(-5039, 521, 270),\n    COL_VERTEX(-4936, 726, -343),\n    COL_VERTEX(-2786, -451, 270),\n    COL_VERTEX(-2786, -297, 270),\n    COL_VERTEX(-3298, -758, 270),\n    COL_VERTEX(-3298, -758, -343),\n    COL_VERTEX(-3605, -451, 270),\n    COL_VERTEX(-3605, -451, -343),\n    COL_VERTEX(-3605, -297, 270),\n    COL_VERTEX(-3298, -297, -343),\n    COL_VERTEX(-4117, -143, -343),\n    COL_VERTEX(-4117, 112, 270),\n    COL_VERTEX(-3912, -41, 270),\n    COL_VERTEX(-4117, -143, 270),\n    COL_VERTEX(-3605, 112, -343),\n    COL_VERTEX(-3605, -41, -343),\n    COL_VERTEX(-4117, -707, 270),\n    COL_VERTEX(-3912, -41, -343),\n    COL_VERTEX(-3605, -707, -343),\n    COL_VERTEX(-4322, -860, 270),\n    COL_VERTEX(-3605, -860, -343),\n    COL_VERTEX(-4322, -860, -343),\n    COL_VERTEX(-4117, -707, -343),\n    COL_VERTEX(-4117, -297, -343),\n    COL_VERTEX(-4322, -297, -343),\n    COL_VERTEX(-4424, 572, -343),\n    COL_VERTEX(-3810, 419, 270),\n    COL_VERTEX(-4220, 982, -343),\n    COL_VERTEX(-3810, 572, -343),\n    COL_VERTEX(-4629, 572, 270),\n    COL_VERTEX(-3810, 419, -343),\n    COL_VERTEX(-4629, 419, -343),\n    COL_VERTEX(-4936, 214, -343),\n    COL_VERTEX(-5141, -195, 270),\n    COL_VERTEX(-4834, 112, -343),\n    COL_VERTEX(-4629, 9, -343),\n    COL_VERTEX(-4629, -195, -343),\n    COL_VERTEX(-5141, -195, -343),\n    COL_VERTEX(-2479, 2160, 270),\n    COL_VERTEX(-3093, 726, -343),\n    COL_VERTEX(-3093, 1443, -343),\n    COL_VERTEX(-6063, -1116, -343),\n    COL_VERTEX(-5653, 931, -343),\n    COL_VERTEX(-6063, -195, 270),\n    COL_VERTEX(-5448, 214, -343),\n    COL_VERTEX(-5448, -195, -343),\n    COL_VERTEX(-4527, -502, -343),\n    COL_VERTEX(-4527, -655, -343),\n    COL_VERTEX(-6063, -655, 270),\n    COL_VERTEX(-5653, -1116, -343),\n    COL_VERTEX(-2274, -1987, 885),\n    COL_VERTEX(-7087, -1987, 885),\n    COL_VERTEX(-1864, -1987, 680),\n    COL_VERTEX(-2274, -1782, -445),\n    COL_VERTEX(-7087, -1782, -445),\n    COL_VERTEX(-7087, -1782, 885),\n    COL_VERTEX(-7496, -1782, 680),\n    COL_VERTEX(-7087, -1987, -445),\n    COL_VERTEX(3393, -2089, 2359),\n    COL_VERTEX(3393, -2089, 1780),\n    COL_VERTEX(2886, -1833, 1273),\n    COL_VERTEX(2307, -1833, 1273),\n    COL_VERTEX(1800, -2089, 1780),\n    COL_VERTEX(2307, -1833, 2866),\n    COL_VERTEX(2886, -1833, 2866),\n    COL_VERTEX(-3300, -3625, 6257),\n    COL_VERTEX(-3300, -3625, 6871),\n    COL_VERTEX(-3709, -2755, 6871),\n    COL_VERTEX(-4068, -3625, 6871),\n    COL_VERTEX(-5809, -2140, 6257),\n    COL_VERTEX(-5809, -2140, 6871),\n    COL_VERTEX(-4887, -2140, 6871),\n    COL_VERTEX(-4887, -1935, 6257),\n    COL_VERTEX(-5757, -1731, 5591),\n    COL_VERTEX(-5962, -1935, 5489),\n    COL_VERTEX(-5655, -1935, 5489),\n    COL_VERTEX(-5860, -1731, 5694),\n    COL_VERTEX(-5706, -1935, 5847),\n    COL_VERTEX(-5911, -1935, 5847),\n    COL_VERTEX(-6065, -2729, 6989),\n    COL_VERTEX(-5962, -2729, 6887),\n    COL_VERTEX(-6116, -2811, 6887),\n    COL_VERTEX(-6065, -2893, 6129),\n    COL_VERTEX(-5911, -2811, 6231),\n    COL_VERTEX(-5962, -2729, 6231),\n    COL_VERTEX(-6065, -2729, 6231),\n    COL_VERTEX(-6065, -2893, 6887),\n    COL_VERTEX(-6013, -2893, 6989),\n    COL_VERTEX(-5962, -2893, 6887),\n    COL_VERTEX(-5962, -3456, 6887),\n    COL_VERTEX(-6013, -3558, 6989),\n    COL_VERTEX(-5962, -2893, 6231),\n    COL_VERTEX(-6065, -2893, 6231),\n    COL_VERTEX(-5962, -3456, 6231),\n    COL_VERTEX(-6013, -2893, 6129),\n    COL_VERTEX(-6065, -3558, 6231),\n    COL_VERTEX(-3968, -3558, 6129),\n    COL_VERTEX(-3865, -3558, 6887),\n    COL_VERTEX(-4068, -3625, 6257),\n    COL_VERTEX(-2482, -1321, 4619),\n    COL_VERTEX(-1816, -1321, 5233),\n    COL_VERTEX(-2482, -1321, 5233),\n    COL_VERTEX(-4786, -911, 3953),\n    COL_VERTEX(-6269, -1321, 5233),\n    COL_VERTEX(-4632, -1321, 4619),\n    COL_VERTEX(-5860, -1116, 5438),\n    COL_VERTEX(-5860, -1321, 4414),\n    COL_VERTEX(-5451, -1321, 4619),\n    COL_VERTEX(-4632, -1321, 5233),\n    COL_VERTEX(-5451, -1116, 5233),\n    COL_VERTEX(-4888, -1270, 4055),\n    COL_VERTEX(-4991, -1116, 3851),\n    COL_VERTEX(-4735, -1116, 4209),\n    COL_VERTEX(-4786, -911, 4055),\n    COL_VERTEX(-4888, -911, 3953),\n    COL_VERTEX(-4939, -1116, 4209),\n    COL_VERTEX(-4888, -911, 4055),\n    COL_VERTEX(307, -2857, 3364),\n    COL_VERTEX(921, -3676, 3364),\n    COL_VERTEX(307, -3062, 4286),\n    COL_VERTEX(307, -3676, 6129),\n    COL_VERTEX(307, -3267, 5207),\n    COL_VERTEX(-690, -2140, 6871),\n    COL_VERTEX(-690, -1935, 6257),\n    COL_VERTEX(-1816, -2140, 6871),\n    COL_VERTEX(-1202, -2140, 6257),\n    COL_VERTEX(-1202, -1321, 4619),\n    COL_VERTEX(-1509, -1412, 5603),\n    COL_VERTEX(-1509, -1238, 5603),\n    COL_VERTEX(-1304, -1412, 5603),\n    COL_VERTEX(-1304, -1248, 5398),\n    COL_VERTEX(-1304, -1782, 6065),\n    COL_VERTEX(-1509, -1750, 6217),\n    COL_VERTEX(-1304, -1903, 6217),\n    COL_VERTEX(-1509, -1903, 6217),\n    COL_VERTEX(-1304, -1750, 6025),\n    COL_VERTEX(-1714, -1658, 5910),\n    COL_VERTEX(-1714, -1494, 5910),\n    COL_VERTEX(-1509, -1658, 5910),\n    COL_VERTEX(-1509, -1494, 5705),\n    COL_VERTEX(-1816, -1935, 6257),\n    COL_VERTEX(-1816, -2140, 6257),\n    COL_VERTEX(1653, 2975, -2038),\n    COL_VERTEX(921, -3676, 6129),\n    COL_VERTEX(921, -2857, 4286),\n    COL_VERTEX(921, -3062, 5207),\n    COL_VERTEX(-358, -3625, 6257),\n    COL_VERTEX(-358, -3625, 6871),\n    COL_VERTEX(-1126, -3625, 6871),\n    COL_VERTEX(-1126, -3625, 6257),\n    COL_VERTEX(825, -4700, 6440),\n    COL_VERTEX(825, -4700, 7566),\n    COL_VERTEX(415, -4700, 7566),\n    COL_VERTEX(415, -4700, 6747),\n    COL_VERTEX(716, -3553, 6231),\n    COL_VERTEX(665, -3471, 6231),\n    COL_VERTEX(563, -3471, 6231),\n    COL_VERTEX(563, -3635, 6887),\n    COL_VERTEX(665, -3635, 6887),\n    COL_VERTEX(614, -3635, 6989),\n    COL_VERTEX(563, -3471, 6989),\n    COL_VERTEX(665, -3471, 6887),\n    COL_VERTEX(512, -3553, 6887),\n    COL_VERTEX(-377, -4700, 6440),\n    COL_VERTEX(921, -3267, 5207),\n    COL_VERTEX(921, -2857, 3364),\n    COL_VERTEX(921, -3062, 4286),\n    COL_VERTEX(921, -3267, 6129),\n    COL_VERTEX(5646, -2038, 2241),\n    COL_VERTEX(5646, -2038, 1831),\n    COL_VERTEX(5031, -2038, 2241),\n    COL_VERTEX(5031, -2038, 1831),\n    COL_VERTEX(332, -1935, 6257),\n    COL_VERTEX(1254, -1935, 6257),\n    COL_VERTEX(742, -1526, 6257),\n    COL_VERTEX(844, -1526, 6257),\n    COL_VERTEX(1254, -1935, 6871),\n    COL_VERTEX(-5600, -4803, 7259),\n    COL_VERTEX(-787, -4803, 7259),\n    COL_VERTEX(-377, -4803, 7054),\n    COL_VERTEX(-5600, -4598, 5928),\n    COL_VERTEX(-787, -4598, 5928),\n    COL_VERTEX(-5600, -4598, 7259),\n    COL_VERTEX(-6009, -4598, 7054),\n    COL_VERTEX(-5600, -4803, 5928),\n    COL_VERTEX(7084, -1295, 1094),\n    COL_VERTEX(7084, -1295, 660),\n    COL_VERTEX(5889, -1295, 660),\n    COL_VERTEX(6778, -1091, 1674),\n    COL_VERTEX(6199, -1091, 1674),\n    COL_VERTEX(6823, -653, -733),\n    COL_VERTEX(6618, -858, -836),\n    COL_VERTEX(6925, -858, -836),\n    COL_VERTEX(6721, -653, -631),\n    COL_VERTEX(6874, -858, -477),\n    COL_VERTEX(6669, -858, -477),\n    COL_VERTEX(6107, -1219, 1831),\n    COL_VERTEX(6107, -1372, 1831),\n    COL_VERTEX(6260, -1219, 1831),\n    COL_VERTEX(6260, -1372, 1831),\n    COL_VERTEX(6107, -1372, 2241),\n    COL_VERTEX(6721, -1012, -631),\n    COL_VERTEX(5646, 2821, -2448),\n    COL_VERTEX(2881, 2514, -3062),\n    COL_VERTEX(1653, 2616, -2755),\n    COL_VERTEX(1857, 2104, -2346),\n    COL_VERTEX(1038, 3026, -2346),\n    COL_VERTEX(4139, 2568, -1627),\n    COL_VERTEX(4417, 1695, -2346),\n    COL_VERTEX(2881, 2514, -1629),\n    COL_VERTEX(5237, 2002, -2346),\n    COL_VERTEX(5117, 2606, -1729),\n    COL_VERTEX(5117, 2657, -2958),\n    COL_VERTEX(2881, 1695, -2346),\n    COL_VERTEX(1653, 2616, -1936),\n    COL_VERTEX(-5938, 2867, -4095),\n    COL_VERTEX(-5324, 2867, -3378),\n    COL_VERTEX(-5938, 2867, -6143),\n    COL_VERTEX(-6165, 5939, -6637),\n    COL_VERTEX(-5938, 5939, -6143),\n    COL_VERTEX(-5938, 5939, -4095),\n    COL_VERTEX(-5324, 5939, -3378),\n    COL_VERTEX(-3071, 5939, -3378),\n    COL_VERTEX(-3071, 2867, -3378),\n    COL_VERTEX(-2457, 2867, -4095),\n    COL_VERTEX(-5817, 5939, -3196),\n    COL_VERTEX(-2457, 5939, -6143),\n    COL_VERTEX(-2486, 2831, -6138),\n    COL_VERTEX(-2457, 3379, -5938),\n    COL_VERTEX(-2457, 3379, -5119),\n    COL_VERTEX(-2457, 3994, -5119),\n    COL_VERTEX(-2457, 5939, -4095),\n    COL_VERTEX(-2457, 4198, -5324),\n    COL_VERTEX(-2457, 4198, -5733),\n    COL_VERTEX(-3071, 2867, -6860),\n    COL_VERTEX(-3071, 5939, -6860),\n    COL_VERTEX(-5324, 2867, -6860),\n    COL_VERTEX(-5847, 2838, -7037),\n    COL_VERTEX(-5324, 5939, -6860),\n    COL_VERTEX(-4607, 3379, -3378),\n    COL_VERTEX(-4607, 3379, -3583),\n    COL_VERTEX(-4402, 4198, -3583),\n    COL_VERTEX(-3788, 3379, -3583),\n    COL_VERTEX(-5426, 3072, -3583),\n    COL_VERTEX(-3788, 3994, -3583),\n    COL_VERTEX(-3993, 4198, -3583),\n    COL_VERTEX(-2661, 5939, -4044),\n    COL_VERTEX(-2661, 5939, -6194),\n    COL_VERTEX(-2661, 3994, -5938),\n    COL_VERTEX(-2661, 4198, -5733),\n    COL_VERTEX(-2661, 4198, -5324),\n    COL_VERTEX(-2661, 3379, -5119),\n    COL_VERTEX(-2661, 3072, -4044),\n    COL_VERTEX(-2661, 3072, -6194),\n    COL_VERTEX(-2661, 3379, -5938),\n    COL_VERTEX(-5938, 4506, -5631),\n    COL_VERTEX(-5733, 4506, -5631),\n    COL_VERTEX(-5733, 5325, -5426),\n    COL_VERTEX(-5733, 4506, -4812),\n    COL_VERTEX(-5733, 3072, -6245),\n    COL_VERTEX(-5733, 5120, -4812),\n    COL_VERTEX(-5733, 5325, -5017),\n    COL_VERTEX(-5733, 5939, -6245),\n    COL_VERTEX(-6165, 2867, -3601),\n    COL_VERTEX(-2577, 5939, -3196),\n    COL_VERTEX(-5817, 5939, -7042),\n    COL_VERTEX(-2880, 7203, -6570),\n    COL_VERTEX(-2230, 5939, -6637),\n    COL_VERTEX(-5017, 3379, -3378),\n    COL_VERTEX(-5017, 3482, -3378),\n    COL_VERTEX(-4607, 3482, -2764),\n    COL_VERTEX(-5017, 3482, -3122),\n    COL_VERTEX(-3378, 3482, -3378),\n    COL_VERTEX(-3378, 3482, -3122),\n    COL_VERTEX(-3788, 3482, -2764),\n    COL_VERTEX(-5053, 3328, -3086),\n    COL_VERTEX(-5053, 3482, -3086),\n    COL_VERTEX(-4610, 3482, -2766),\n    COL_VERTEX(-5068, 3328, -3378),\n    COL_VERTEX(-5324, 6451, -6245),\n    COL_VERTEX(-3342, 3328, -3086),\n    COL_VERTEX(-3327, 3328, -3378),\n    COL_VERTEX(-3788, 3482, -2713),\n    COL_VERTEX(-4607, 3328, -2713),\n    COL_VERTEX(-3788, 3328, -2713),\n    COL_VERTEX(-3890, 3072, -2815),\n    COL_VERTEX(-3788, 3381, -2764),\n    COL_VERTEX(-3788, 3379, -2713),\n    COL_VERTEX(-3552, 2970, -3378),\n    COL_VERTEX(-5938, 2970, -3378),\n    COL_VERTEX(-3071, 6451, -3993),\n    COL_VERTEX(-4607, 6451, -5426),\n    COL_VERTEX(-2230, 5939, -3601),\n    COL_VERTEX(-3788, 6451, -4812),\n    COL_VERTEX(-3071, 6451, -6245),\n    COL_VERTEX(-3788, 6246, -5426),\n    COL_VERTEX(-3071, 6246, -6245),\n    COL_VERTEX(-3788, 6246, -4812),\n    COL_VERTEX(-4607, 6246, -5426),\n    COL_VERTEX(-4607, 6246, -4812),\n    COL_VERTEX(-5324, 6246, -3993),\n    COL_VERTEX(-3071, 6246, -3993),\n    COL_VERTEX(-2805, 5939, -3972),\n    COL_VERTEX(-2969, 5939, -3583),\n    COL_VERTEX(-2969, 5939, -6655),\n    COL_VERTEX(-2989, 5939, -6512),\n    COL_VERTEX(-5324, 6246, -6245),\n    COL_VERTEX(-5406, 3072, -3726),\n    COL_VERTEX(-5590, 3072, -3972),\n    COL_VERTEX(-5733, 5939, -3993),\n    COL_VERTEX(-2989, 5939, -3726),\n    COL_VERTEX(-2989, 3072, -6512),\n    COL_VERTEX(-5406, 5939, -6512),\n    COL_VERTEX(-5426, 5939, -6655),\n    COL_VERTEX(-2969, 3072, -6655),\n    COL_VERTEX(-5426, 3072, -6655),\n    COL_VERTEX(-5426, 5939, -3583),\n    COL_VERTEX(-5324, 6451, -3993),\n    COL_VERTEX(-5515, 7203, -3668),\n    COL_VERTEX(-3071, 3068, -4402),\n    COL_VERTEX(-3071, 3068, -5733),\n    COL_VERTEX(-3583, 3068, -4402),\n    COL_VERTEX(-3583, 3068, -5733),\n    COL_VERTEX(-3788, 3072, -3583),\n    COL_VERTEX(-4607, 3072, -3583),\n    COL_VERTEX(-3788, 3072, -4351),\n    COL_VERTEX(-4607, 3174, -4351),\n    COL_VERTEX(-4607, 3379, -3839),\n    COL_VERTEX(-4607, 3277, -4095),\n    COL_VERTEX(-3827, 3482, -6655),\n    COL_VERTEX(-4032, 3686, -6655),\n    COL_VERTEX(-4032, 3123, -6450),\n    COL_VERTEX(-3827, 3482, -6450),\n    COL_VERTEX(-4032, 3328, -6450),\n    COL_VERTEX(-4339, 3686, -6655),\n    COL_VERTEX(-4032, 3686, -6450),\n    COL_VERTEX(-4544, 3482, -6655),\n    COL_VERTEX(-4237, 3430, -6450),\n    COL_VERTEX(-4544, 3123, -6655),\n    COL_VERTEX(-4339, 3328, -6450),\n    COL_VERTEX(-4237, 3430, -6655),\n    COL_VERTEX(-4339, 3328, -6655),\n    COL_VERTEX(-4134, 3430, -6655),\n    COL_VERTEX(-4032, 3328, -6655),\n    COL_VERTEX(-4032, 3072, -6655),\n    COL_VERTEX(-4646, 3072, -6348),\n    COL_VERTEX(-3725, 3072, -6655),\n    COL_VERTEX(-4262, 3686, -6501),\n    COL_VERTEX(-4262, 3686, -6655),\n    COL_VERTEX(-4109, 5939, -6655),\n    COL_VERTEX(-4262, 5939, -6655),\n    COL_VERTEX(4212, -1720, 1831),\n    COL_VERTEX(4212, -1946, 2241),\n    COL_VERTEX(3393, -1946, 2241),\n    COL_VERTEX(921, -1116, 3364),\n    COL_VERTEX(307, -1321, 2135),\n    COL_VERTEX(921, -1321, 2135),\n    COL_VERTEX(307, -1321, 3364),\n    COL_VERTEX(307, -1116, 3364),\n    COL_VERTEX(307, -963, 3364),\n    COL_VERTEX(921, -963, 3364),\n    COL_VERTEX(921, -963, 3979),\n    COL_VERTEX(921, -1167, 3979),\n    COL_VERTEX(307, -963, 3979),\n    COL_VERTEX(307, -1167, 3364),\n    COL_VERTEX(512, -1147, 3774),\n    COL_VERTEX(307, -1147, 3979),\n    COL_VERTEX(512, -1147, 3569),\n    COL_VERTEX(716, -1147, 3774),\n    COL_VERTEX(921, -1147, 3979),\n    COL_VERTEX(307, -1147, 3364),\n    COL_VERTEX(921, -1147, 3364),\n    COL_VERTEX(716, -1116, 3569),\n    COL_VERTEX(921, -973, 3354),\n    COL_VERTEX(307, -973, 3354),\n    COL_VERTEX(3861, 4245, -2653),\n    COL_VERTEX(3452, 4245, -2448),\n    COL_VERTEX(3247, 4245, -2653),\n    COL_VERTEX(3656, 4276, -2448),\n    COL_VERTEX(3656, 4245, -2243),\n    COL_VERTEX(3247, 4245, -2038),\n    COL_VERTEX(3452, 4245, -2243),\n    COL_VERTEX(3861, 4245, -2038),\n    COL_VERTEX(3247, 4225, -2653),\n    COL_VERTEX(3247, 4430, -2653),\n    COL_VERTEX(3247, 4430, -2038),\n    COL_VERTEX(3861, 4225, -2038),\n    COL_VERTEX(3861, 4430, -2038),\n    COL_VERTEX(-7173, 3584, -2387),\n    COL_VERTEX(-6292, 3584, -1770),\n    COL_VERTEX(-6821, 3584, -2890),\n    COL_VERTEX(-5940, 3584, -2273),\n    COL_VERTEX(-8049, 3891, -4426),\n    COL_VERTEX(-8049, 3891, -3351),\n    COL_VERTEX(-7435, 3891, -4426),\n    COL_VERTEX(-7435, 3891, -3351),\n    COL_VERTEX(2204, 3083, -1773),\n    COL_VERTEX(2357, 3109, -1773),\n    COL_VERTEX(2204, 3109, -1773),\n    COL_VERTEX(2204, 3109, -852),\n    COL_VERTEX(2357, 3109, -852),\n    COL_VERTEX(1180, 2878, -954),\n    COL_VERTEX(2613, 2878, -954),\n    COL_VERTEX(975, 3083, -954),\n    COL_VERTEX(3332, 2468, -124),\n    COL_VERTEX(3486, 2314, -124),\n    COL_VERTEX(3486, 2468, -124),\n    COL_VERTEX(3332, 2314, 285),\n    COL_VERTEX(3332, 2314, -124),\n    COL_VERTEX(3844, 2519, -124),\n    COL_VERTEX(3844, 2314, -124),\n    COL_VERTEX(3998, 2519, -124),\n    COL_VERTEX(3998, 2314, -124),\n    COL_VERTEX(3844, 2314, 285),\n    COL_VERTEX(2820, 2314, -124),\n    COL_VERTEX(2820, 2570, -124),\n    COL_VERTEX(2974, 2570, -124),\n    COL_VERTEX(2974, 2314, -124),\n    COL_VERTEX(2820, 2314, 285),\n    COL_VERTEX(2075, 2509, -130),\n    COL_VERTEX(1921, 2509, -130),\n    COL_VERTEX(1998, 2714, -130),\n    COL_VERTEX(2075, 2612, -130),\n    COL_VERTEX(1921, 2612, 279),\n    COL_VERTEX(-1040, 1690, 133),\n    COL_VERTEX(-1040, 922, -480),\n    COL_VERTEX(-630, 922, -480),\n    COL_VERTEX(-630, 1690, 133),\n    COL_VERTEX(-630, 1690, -480),\n    COL_VERTEX(-1626, 3120, 119),\n    COL_VERTEX(-2036, 3120, 119),\n    COL_VERTEX(-1626, 3120, -494),\n    COL_VERTEX(-1626, 1843, 119),\n    COL_VERTEX(-2036, 3120, -494),\n    COL_VERTEX(7602, -2396, 5950),\n    COL_VERTEX(7602, -2396, 7179),\n    COL_VERTEX(4838, -2396, 7179),\n    COL_VERTEX(4838, -2396, 5950),\n    COL_VERTEX(3609, -2089, 6257),\n    COL_VERTEX(4838, -2089, 6257),\n    COL_VERTEX(3609, -2089, 6871),\n    COL_VERTEX(4838, -2089, 6871),\n    COL_VERTEX(3712, -937, 6052),\n    COL_VERTEX(4121, -937, 6257),\n    COL_VERTEX(3303, -937, 6871),\n    COL_VERTEX(3712, -732, 7076),\n    COL_VERTEX(4121, -732, 6871),\n    COL_VERTEX(4735, -937, 6871),\n    COL_VERTEX(4735, -937, 6257),\n    COL_VERTEX(3455, -1935, 5387),\n    COL_VERTEX(3404, -1935, 5745),\n    COL_VERTEX(3199, -1935, 5745),\n    COL_VERTEX(3148, -1935, 5387),\n    COL_VERTEX(3353, -1731, 5489),\n    COL_VERTEX(3250, -1731, 5591),\n    COL_VERTEX(6230, 3675, 4524),\n    COL_VERTEX(5565, 3819, 5189),\n    COL_VERTEX(4624, 3819, 5189),\n    COL_VERTEX(4624, 3675, 2919),\n    COL_VERTEX(3959, 3675, 3584),\n    COL_VERTEX(4527, 2999, 3819),\n    COL_VERTEX(6230, 3675, 3584),\n    COL_VERTEX(5565, 3819, 2919),\n    COL_VERTEX(4624, 3819, 2919),\n    COL_VERTEX(5565, 3675, 2919),\n    COL_VERTEX(4838, -1935, 5950),\n    COL_VERTEX(4838, -1935, 6257),\n    COL_VERTEX(2475, -1014, -3864),\n    COL_VERTEX(2475, -1065, -3454),\n    COL_VERTEX(3396, -1014, -3864),\n    COL_VERTEX(3806, -604, -3864),\n    COL_VERTEX(2987, -604, -3864),\n    COL_VERTEX(2987, -655, -3454),\n    COL_VERTEX(2987, -655, -3864),\n    COL_VERTEX(3089, 163, 85),\n    COL_VERTEX(2424, -399, 85),\n    COL_VERTEX(2782, 982, 494),\n    COL_VERTEX(4113, 1033, 85),\n    COL_VERTEX(3089, 982, 85),\n    COL_VERTEX(4113, 982, 85),\n    COL_VERTEX(3089, 982, -938),\n    COL_VERTEX(2782, 982, -938),\n    COL_VERTEX(2719, -1321, -343),\n    COL_VERTEX(3538, -1321, -343),\n    COL_VERTEX(3538, -1321, 270),\n    COL_VERTEX(2719, -1321, 270),\n    COL_VERTEX(307, -1321, -2243),\n    COL_VERTEX(921, -1321, -2243),\n    COL_VERTEX(307, -1321, -3882),\n    COL_VERTEX(921, -1321, -3882),\n    COL_VERTEX(4113, -195, -3864),\n    COL_VERTEX(4113, -41, -3864),\n    COL_VERTEX(3806, -41, -3864),\n    COL_VERTEX(3806, -195, -3454),\n    COL_VERTEX(3806, -195, -3864),\n    COL_VERTEX(3089, -41, -3864),\n    COL_VERTEX(3089, 112, -3864),\n    COL_VERTEX(3243, 112, -3864),\n    COL_VERTEX(3243, -41, -3864),\n    COL_VERTEX(3089, -41, -3454),\n    COL_VERTEX(4011, 880, -1860),\n    COL_VERTEX(3601, 931, -1860),\n    COL_VERTEX(4011, 982, -1860),\n    COL_VERTEX(4216, 880, -1860),\n    COL_VERTEX(4216, 777, -1860),\n    COL_VERTEX(3960, 777, -1860),\n    COL_VERTEX(3960, 777, -1450),\n    COL_VERTEX(4011, 982, -1450),\n    COL_VERTEX(3089, 1033, -1860),\n    COL_VERTEX(2065, 1033, -1860),\n    COL_VERTEX(2065, 982, -1450),\n    COL_VERTEX(2065, 982, -1860),\n    COL_VERTEX(-6860, 3021, -2713),\n    COL_VERTEX(-4197, 3021, -2405),\n    COL_VERTEX(-4197, 3021, -2713),\n    COL_VERTEX(-6860, 3021, -2405),\n    COL_VERTEX(975, 3083, 274),\n    COL_VERTEX(-3093, -1116, 270),\n    COL_VERTEX(-3093, -1782, 270),\n    COL_VERTEX(-3093, -1782, -343),\n    COL_VERTEX(-3093, 726, -445),\n    COL_VERTEX(-6370, 1443, -343),\n    COL_VERTEX(-2479, -1116, -343),\n    COL_VERTEX(-2274, -1116, -343),\n    COL_VERTEX(-2479, -1116, 270),\n    COL_VERTEX(-2274, -1116, 270),\n    COL_VERTEX(-2786, -451, -445),\n    COL_VERTEX(-3093, 726, 270),\n    COL_VERTEX(-2888, 726, 270),\n    COL_VERTEX(-1455, -1116, 270),\n    COL_VERTEX(-1864, -1116, 270),\n    COL_VERTEX(-1864, -1116, -343),\n    COL_VERTEX(-1455, -1116, -343),\n    COL_VERTEX(-2274, 1648, 270),\n    COL_VERTEX(-7189, -1116, -343),\n    COL_VERTEX(-3093, -451, -445),\n    COL_VERTEX(-2479, 1648, 270),\n    COL_VERTEX(-7394, -1116, 270),\n    COL_VERTEX(-7189, 2160, 270),\n    COL_VERTEX(-4629, -1116, 270),\n    COL_VERTEX(-4629, -1116, -343),\n    COL_VERTEX(-5141, 726, 270),\n    COL_VERTEX(-5141, 726, -343),\n    COL_VERTEX(-4936, 726, 270),\n    COL_VERTEX(-4936, 521, 270),\n    COL_VERTEX(-3605, -451, -445),\n    COL_VERTEX(-3093, -451, 270),\n    COL_VERTEX(-3298, -451, -343),\n    COL_VERTEX(-3605, -297, -343),\n    COL_VERTEX(-3298, 316, -343),\n    COL_VERTEX(-4117, 112, -343),\n    COL_VERTEX(-3605, 112, 270),\n    COL_VERTEX(-4322, -297, 270),\n    COL_VERTEX(-4117, -297, 270),\n    COL_VERTEX(-4322, -143, 270),\n    COL_VERTEX(-3605, -41, 270),\n    COL_VERTEX(-3912, -707, 270),\n    COL_VERTEX(-3912, -707, -343),\n    COL_VERTEX(-3605, -860, 270),\n    COL_VERTEX(-3605, -707, 270),\n    COL_VERTEX(-4322, -707, 270),\n    COL_VERTEX(-4322, -707, -343),\n    COL_VERTEX(-4322, -143, -343),\n    COL_VERTEX(-4424, 572, 270),\n    COL_VERTEX(-4424, 982, 270),\n    COL_VERTEX(-4424, 982, -343),\n    COL_VERTEX(-4220, 982, 270),\n    COL_VERTEX(-3810, 572, 270),\n    COL_VERTEX(-4629, 419, 270),\n    COL_VERTEX(-4629, 572, -343),\n    COL_VERTEX(-4936, 214, 270),\n    COL_VERTEX(-4936, 112, 270),\n    COL_VERTEX(-4936, 112, -343),\n    COL_VERTEX(-4834, 112, 270),\n    COL_VERTEX(-5141, 214, 270),\n    COL_VERTEX(-4834, 9, 270),\n    COL_VERTEX(-4834, 9, -343),\n    COL_VERTEX(-4629, 9, 270),\n    COL_VERTEX(-4629, -195, 270),\n    COL_VERTEX(-5141, 214, -343),\n    COL_VERTEX(-6063, 1443, -343),\n    COL_VERTEX(-5653, 214, 270),\n    COL_VERTEX(-5653, 214, -343),\n    COL_VERTEX(-5653, 931, 270),\n    COL_VERTEX(-5448, 214, 270),\n    COL_VERTEX(-5756, 1033, 270),\n    COL_VERTEX(-5448, -195, 270),\n    COL_VERTEX(-6063, -195, -343),\n    COL_VERTEX(-6063, 1033, 270),\n    COL_VERTEX(-4527, -502, 270),\n    COL_VERTEX(-4527, -655, 270),\n    COL_VERTEX(-6063, -655, -343),\n    COL_VERTEX(-6063, -502, 270),\n    COL_VERTEX(-5653, -1116, 270),\n    COL_VERTEX(-5653, -1782, 270),\n    COL_VERTEX(-5653, -1782, -343),\n    COL_VERTEX(-1864, -1782, 680),\n    COL_VERTEX(-2274, -1782, 885),\n    COL_VERTEX(-1864, -1782, -241),\n    COL_VERTEX(-1864, -1987, -241),\n    COL_VERTEX(-2274, -1987, -445),\n    COL_VERTEX(-7496, -1987, 680),\n    COL_VERTEX(-7496, -1782, -241),\n    COL_VERTEX(-7496, -1987, -241),\n    COL_VERTEX(3393, -1833, 1780),\n    COL_VERTEX(3393, -1833, 2359),\n    COL_VERTEX(2886, -2089, 2866),\n    COL_VERTEX(2886, -2089, 1273),\n    COL_VERTEX(2307, -2089, 2866),\n    COL_VERTEX(2307, -2089, 1273),\n    COL_VERTEX(1800, -1833, 1780),\n    COL_VERTEX(1800, -2089, 2359),\n    COL_VERTEX(1800, -1833, 2359),\n    COL_VERTEX(-3300, -2959, 6871),\n    COL_VERTEX(-3505, -2959, 6871),\n    COL_VERTEX(-4068, -2755, 6257),\n    COL_VERTEX(-4068, -2755, 6871),\n    COL_VERTEX(-3300, -2959, 6257),\n    COL_VERTEX(-5809, -1935, 6257),\n    COL_VERTEX(-4887, -2140, 6257),\n    COL_VERTEX(-5809, -1935, 6871),\n    COL_VERTEX(-4887, -1935, 6871),\n    COL_VERTEX(-5860, -1731, 5591),\n    COL_VERTEX(-5757, -1731, 5694),\n    COL_VERTEX(-5962, -2729, 6989),\n    COL_VERTEX(-6065, -2729, 6887),\n    COL_VERTEX(-5911, -2811, 6989),\n    COL_VERTEX(-5911, -2811, 6887),\n    COL_VERTEX(-5962, -2893, 6989),\n    COL_VERTEX(-6116, -2811, 6989),\n    COL_VERTEX(-6065, -2893, 6989),\n    COL_VERTEX(-6065, -2729, 6129),\n    COL_VERTEX(-5962, -2729, 6129),\n    COL_VERTEX(-5911, -2811, 6129),\n    COL_VERTEX(-5962, -2893, 6129),\n    COL_VERTEX(-6116, -2811, 6129),\n    COL_VERTEX(-6116, -2811, 6231),\n    COL_VERTEX(-6065, -3558, 6887),\n    COL_VERTEX(-3903, -3456, 6887),\n    COL_VERTEX(-3967, -3558, 6989),\n    COL_VERTEX(-6013, -3558, 6129),\n    COL_VERTEX(-3904, -3456, 6231),\n    COL_VERTEX(-3866, -3558, 6231),\n    COL_VERTEX(-3709, -2755, 6257),\n    COL_VERTEX(-3505, -2959, 6257),\n    COL_VERTEX(-2482, -1116, 4619),\n    COL_VERTEX(-1202, -1116, 4619),\n    COL_VERTEX(-1202, -1321, 5233),\n    COL_VERTEX(-2482, -1116, 5233),\n    COL_VERTEX(-1816, -1116, 5233),\n    COL_VERTEX(-5860, -1321, 5438),\n    COL_VERTEX(-6269, -1321, 4619),\n    COL_VERTEX(-6269, -1116, 5233),\n    COL_VERTEX(-6269, -1116, 4619),\n    COL_VERTEX(-5860, -1116, 4414),\n    COL_VERTEX(-5451, -1116, 4619),\n    COL_VERTEX(-4632, -1116, 4619),\n    COL_VERTEX(-5451, -1321, 5233),\n    COL_VERTEX(-4632, -1116, 5233),\n    COL_VERTEX(-4786, -1270, 4055),\n    COL_VERTEX(-4683, -1116, 3851),\n    COL_VERTEX(307, -3676, 3364),\n    COL_VERTEX(307, -2857, 4286),\n    COL_VERTEX(307, -3267, 6129),\n    COL_VERTEX(307, -3062, 5207),\n    COL_VERTEX(-690, -2140, 6257),\n    COL_VERTEX(-690, -1935, 6871),\n    COL_VERTEX(-1816, -1935, 6871),\n    COL_VERTEX(-1202, -1935, 6257),\n    COL_VERTEX(-1202, -1116, 5233),\n    COL_VERTEX(-1509, -1248, 5398),\n    COL_VERTEX(-1509, -1238, 5398),\n    COL_VERTEX(-1304, -1238, 5603),\n    COL_VERTEX(-1304, -1238, 5398),\n    COL_VERTEX(-1509, -1782, 6052),\n    COL_VERTEX(-1509, -1782, 6065),\n    COL_VERTEX(-1304, -1782, 6052),\n    COL_VERTEX(-1304, -1750, 6217),\n    COL_VERTEX(-1509, -1750, 6025),\n    COL_VERTEX(-1714, -1494, 5705),\n    COL_VERTEX(-1509, -1494, 5910),\n    COL_VERTEX(1653, 2975, -2653),\n    COL_VERTEX(-358, -2959, 6871),\n    COL_VERTEX(-1126, -2959, 6871),\n    COL_VERTEX(-1126, -2959, 6257),\n    COL_VERTEX(-358, -2959, 6257),\n    COL_VERTEX(825, -4598, 7566),\n    COL_VERTEX(415, -4598, 7566),\n    COL_VERTEX(825, -4598, 6440),\n    COL_VERTEX(415, -4598, 6747),\n    COL_VERTEX(-377, -4598, 6747),\n    COL_VERTEX(-377, -4700, 6747),\n    COL_VERTEX(716, -3553, 6129),\n    COL_VERTEX(665, -3471, 6129),\n    COL_VERTEX(563, -3471, 6129),\n    COL_VERTEX(512, -3553, 6129),\n    COL_VERTEX(512, -3553, 6231),\n    COL_VERTEX(605, -4598, 6970),\n    COL_VERTEX(614, -4598, 6989),\n    COL_VERTEX(563, -4598, 6887),\n    COL_VERTEX(582, -4598, 6887),\n    COL_VERTEX(660, -4598, 6897),\n    COL_VERTEX(665, -4598, 6887),\n    COL_VERTEX(716, -3553, 6887),\n    COL_VERTEX(563, -3471, 6887),\n    COL_VERTEX(665, -3471, 6989),\n    COL_VERTEX(716, -3553, 6989),\n    COL_VERTEX(512, -3553, 6989),\n    COL_VERTEX(665, -3635, 6989),\n    COL_VERTEX(563, -3635, 6989),\n    COL_VERTEX(-377, -4598, 6440),\n    COL_VERTEX(5031, -1884, 2241),\n    COL_VERTEX(5646, -1884, 2241),\n    COL_VERTEX(5646, -1884, 1831),\n    COL_VERTEX(5031, -1884, 1831),\n    COL_VERTEX(332, -1935, 6871),\n    COL_VERTEX(742, -1526, 6871),\n    COL_VERTEX(844, -1526, 6871),\n    COL_VERTEX(-787, -4598, 7259),\n    COL_VERTEX(-377, -4598, 7054),\n    COL_VERTEX(-377, -4803, 6133),\n    COL_VERTEX(-377, -4598, 6133),\n    COL_VERTEX(-787, -4803, 5928),\n    COL_VERTEX(-6009, -4803, 7054),\n    COL_VERTEX(-6009, -4803, 6133),\n    COL_VERTEX(-6009, -4598, 6133),\n    COL_VERTEX(7285, -1091, 1167),\n    COL_VERTEX(6704, -1295, 1474),\n    COL_VERTEX(7285, -1091, 588),\n    COL_VERTEX(6778, -1091, 81),\n    COL_VERTEX(6269, -1295, 1474),\n    COL_VERTEX(5889, -1295, 1094),\n    COL_VERTEX(5692, -1091, 1167),\n    COL_VERTEX(5692, -1091, 588),\n    COL_VERTEX(6199, -1091, 81),\n    COL_VERTEX(6721, -653, -733),\n    COL_VERTEX(6823, -653, -631),\n    COL_VERTEX(6107, -1219, 2241),\n    COL_VERTEX(6260, -1372, 2241),\n    COL_VERTEX(6260, -1219, 2241),\n    COL_VERTEX(6823, -1012, -631),\n    COL_VERTEX(5646, 2821, -2243),\n    COL_VERTEX(5441, 2821, -2243),\n    COL_VERTEX(5441, 2821, -2448),\n    COL_VERTEX(5953, 2923, -2038),\n    COL_VERTEX(5953, 2923, -2653),\n    COL_VERTEX(4036, 2567, -3062),\n    COL_VERTEX(-5938, 4506, -4812),\n    COL_VERTEX(-5938, 5120, -4812),\n    COL_VERTEX(-6165, 5939, -3601),\n    COL_VERTEX(-5938, 5120, -5631),\n    COL_VERTEX(-5938, 5325, -5426),\n    COL_VERTEX(-5938, 5325, -5017),\n    COL_VERTEX(-4607, 3998, -3378),\n    COL_VERTEX(-4607, 3383, -3378),\n    COL_VERTEX(-5817, 2867, -3196),\n    COL_VERTEX(-6195, 2838, -6632),\n    COL_VERTEX(-4402, 4202, -3378),\n    COL_VERTEX(-3993, 4202, -3378),\n    COL_VERTEX(-3788, 3998, -3378),\n    COL_VERTEX(-3788, 3383, -3378),\n    COL_VERTEX(-4690, 3324, -3378),\n    COL_VERTEX(-3704, 3320, -3378),\n    COL_VERTEX(-2577, 2867, -3196),\n    COL_VERTEX(-2230, 2867, -3601),\n    COL_VERTEX(-2457, 3994, -5938),\n    COL_VERTEX(-2607, 2838, -7037),\n    COL_VERTEX(-2577, 5939, -7042),\n    COL_VERTEX(-2259, 2838, -6632),\n    COL_VERTEX(-4607, 3994, -3378),\n    COL_VERTEX(-4607, 3994, -3583),\n    COL_VERTEX(-4402, 4198, -3378),\n    COL_VERTEX(-2969, 3072, -3583),\n    COL_VERTEX(-3788, 3994, -3378),\n    COL_VERTEX(-3788, 3379, -3378),\n    COL_VERTEX(-3993, 4198, -3378),\n    COL_VERTEX(-5406, 5939, -3726),\n    COL_VERTEX(-2989, 3072, -3726),\n    COL_VERTEX(-2661, 3994, -5119),\n    COL_VERTEX(-2805, 5939, -6266),\n    COL_VERTEX(-2805, 3072, -6266),\n    COL_VERTEX(-2805, 3072, -3972),\n    COL_VERTEX(-5733, 5120, -5631),\n    COL_VERTEX(-5733, 3072, -3993),\n    COL_VERTEX(-5590, 5939, -3972),\n    COL_VERTEX(-5515, 7203, -6570),\n    COL_VERTEX(-5017, 3379, -3122),\n    COL_VERTEX(-5068, 3482, -3378),\n    COL_VERTEX(-4607, 3482, -2713),\n    COL_VERTEX(-4607, 3379, -2764),\n    COL_VERTEX(-3378, 3379, -3122),\n    COL_VERTEX(-3378, 3379, -3378),\n    COL_VERTEX(-3327, 3482, -3378),\n    COL_VERTEX(-3342, 3482, -3086),\n    COL_VERTEX(-3788, 3379, -2764),\n    COL_VERTEX(-4505, 3072, -2815),\n    COL_VERTEX(-4843, 2959, -3378),\n    COL_VERTEX(-4607, 3379, -2713),\n    COL_VERTEX(-4610, 3379, -2766),\n    COL_VERTEX(-2457, 2970, -6860),\n    COL_VERTEX(-2457, 2970, -3378),\n    COL_VERTEX(-5938, 2970, -6860),\n    COL_VERTEX(-2880, 7203, -3668),\n    COL_VERTEX(-4607, 6451, -4812),\n    COL_VERTEX(-3788, 6451, -5426),\n    COL_VERTEX(-5590, 5939, -6266),\n    COL_VERTEX(-5590, 3072, -6266),\n    COL_VERTEX(-5406, 3072, -6512),\n    COL_VERTEX(-3583, 3222, -4402),\n    COL_VERTEX(-3071, 3222, -4402),\n    COL_VERTEX(-3071, 3222, -5733),\n    COL_VERTEX(-3583, 3222, -5733),\n    COL_VERTEX(-3788, 3174, -4351),\n    COL_VERTEX(-3788, 3174, -4095),\n    COL_VERTEX(-3788, 3379, -3839),\n    COL_VERTEX(-3788, 3277, -3839),\n    COL_VERTEX(-3788, 3277, -4095),\n    COL_VERTEX(-4607, 3174, -4095),\n    COL_VERTEX(-4607, 3072, -4351),\n    COL_VERTEX(-4607, 3277, -3839),\n    COL_VERTEX(-3827, 3123, -6450),\n    COL_VERTEX(-3827, 3123, -6655),\n    COL_VERTEX(-4134, 3430, -6450),\n    COL_VERTEX(-4339, 3686, -6450),\n    COL_VERTEX(-4544, 3482, -6450),\n    COL_VERTEX(-4544, 3123, -6450),\n    COL_VERTEX(-4339, 3123, -6450),\n    COL_VERTEX(-4339, 3072, -6450),\n    COL_VERTEX(-4339, 3072, -6655),\n    COL_VERTEX(-4032, 3072, -6450),\n    COL_VERTEX(-4646, 3123, -6655),\n    COL_VERTEX(-4646, 3072, -6655),\n    COL_VERTEX(-4646, 3123, -6348),\n    COL_VERTEX(-3725, 3123, -6348),\n    COL_VERTEX(-3725, 3072, -6348),\n    COL_VERTEX(-3725, 3123, -6655),\n    COL_VERTEX(-4109, 5837, -6501),\n    COL_VERTEX(-4262, 5837, -6501),\n    COL_VERTEX(-4109, 3686, -6501),\n    COL_VERTEX(-4109, 3686, -6655),\n    COL_VERTEX(3396, -1716, 1831),\n    COL_VERTEX(3393, -1946, 1831),\n    COL_VERTEX(4212, -1946, 1831),\n    COL_VERTEX(4212, -1720, 2241),\n    COL_VERTEX(3396, -1716, 2241),\n    COL_VERTEX(921, -1321, 3364),\n    COL_VERTEX(307, -1116, 2135),\n    COL_VERTEX(921, -1116, 2135),\n    COL_VERTEX(307, -1116, 3354),\n    COL_VERTEX(921, -1116, 3354),\n    COL_VERTEX(307, -1167, 3979),\n    COL_VERTEX(921, -1167, 3364),\n    COL_VERTEX(512, -1116, 3774),\n    COL_VERTEX(716, -1116, 3774),\n    COL_VERTEX(512, -1116, 3569),\n    COL_VERTEX(716, -1147, 3569),\n    COL_VERTEX(3656, 4245, -2448),\n    COL_VERTEX(3452, 4276, -2448),\n    COL_VERTEX(3452, 4276, -2243),\n    COL_VERTEX(3656, 4276, -2243),\n    COL_VERTEX(3247, 4225, -2038),\n    COL_VERTEX(3861, 4430, -2653),\n    COL_VERTEX(3861, 4225, -2653),\n    COL_VERTEX(-7173, 3942, -2387),\n    COL_VERTEX(-6821, 3942, -2890),\n    COL_VERTEX(-5940, 3942, -2273),\n    COL_VERTEX(-6292, 3942, -1770),\n    COL_VERTEX(-7435, 4352, -4426),\n    COL_VERTEX(-8049, 4352, -4426),\n    COL_VERTEX(-7435, 4352, -3351),\n    COL_VERTEX(-8049, 4352, -3351),\n    COL_VERTEX(2357, 3083, -1773),\n    COL_VERTEX(2357, 3083, -852),\n    COL_VERTEX(2204, 3083, -852),\n    COL_VERTEX(2613, 3083, -954),\n    COL_VERTEX(3486, 2314, 285),\n    COL_VERTEX(3486, 2468, 285),\n    COL_VERTEX(3332, 2468, 285),\n    COL_VERTEX(3844, 2519, 285),\n    COL_VERTEX(3998, 2314, 285),\n    COL_VERTEX(3998, 2519, 285),\n    COL_VERTEX(2820, 2570, 285),\n    COL_VERTEX(2974, 2314, 285),\n    COL_VERTEX(2974, 2570, 285),\n    COL_VERTEX(1921, 2509, 279),\n    COL_VERTEX(1921, 2612, -130),\n    COL_VERTEX(2075, 2509, 279),\n    COL_VERTEX(2075, 2612, 279),\n    COL_VERTEX(1998, 2714, 279),\n    COL_VERTEX(-1040, 922, 133),\n    COL_VERTEX(-630, 922, 133),\n    COL_VERTEX(-1040, 1690, -480),\n    COL_VERTEX(-1626, 1843, -494),\n    COL_VERTEX(-2036, 1843, -494),\n    COL_VERTEX(-2036, 1843, 119),\n    COL_VERTEX(7602, -2243, 7179),\n    COL_VERTEX(4838, -2243, 7179),\n    COL_VERTEX(4838, -2243, 5950),\n    COL_VERTEX(7602, -2243, 5950),\n    COL_VERTEX(4838, -1935, 6871),\n    COL_VERTEX(3609, -1935, 6257),\n    COL_VERTEX(3609, -1935, 6871),\n    COL_VERTEX(3303, -937, 6257),\n    COL_VERTEX(3303, -732, 6257),\n    COL_VERTEX(3712, -732, 6052),\n    COL_VERTEX(3303, -732, 6871),\n    COL_VERTEX(4121, -732, 6257),\n    COL_VERTEX(3712, -937, 7076),\n    COL_VERTEX(4121, -937, 6871),\n    COL_VERTEX(4940, -732, 6257),\n    COL_VERTEX(4940, -732, 6871),\n    COL_VERTEX(3250, -2089, 5591),\n    COL_VERTEX(3353, -2089, 5591),\n    COL_VERTEX(3353, -1731, 5591),\n    COL_VERTEX(3250, -1731, 5489),\n    COL_VERTEX(6230, 3819, 3584),\n    COL_VERTEX(6230, 3819, 4524),\n    COL_VERTEX(5565, 3675, 5189),\n    COL_VERTEX(4624, 3675, 5189),\n    COL_VERTEX(5330, 2999, 3486),\n    COL_VERTEX(5662, 2999, 3819),\n    COL_VERTEX(3959, 3675, 4524),\n    COL_VERTEX(3959, 3819, 4524),\n    COL_VERTEX(3959, 3819, 3584),\n    COL_VERTEX(4527, 2999, 4289),\n    COL_VERTEX(4860, 2999, 3486),\n    COL_VERTEX(4735, -1935, 5950),\n    COL_VERTEX(4735, -1935, 6257),\n    COL_VERTEX(4838, -2038, 6257),\n    COL_VERTEX(4838, -2038, 5950),\n    COL_VERTEX(3396, -1065, -3864),\n    COL_VERTEX(2475, -1065, -3864),\n    COL_VERTEX(3396, -1014, -3454),\n    COL_VERTEX(3396, -1065, -3454),\n    COL_VERTEX(2475, -1014, -3454),\n    COL_VERTEX(3806, -655, -3454),\n    COL_VERTEX(3806, -655, -3864),\n    COL_VERTEX(3806, -604, -3454),\n    COL_VERTEX(2987, -604, -3454),\n    COL_VERTEX(3089, 163, 494),\n    COL_VERTEX(2424, -399, 494),\n    COL_VERTEX(4113, 982, 494),\n    COL_VERTEX(4113, 1033, 494),\n    COL_VERTEX(2782, 1033, 494),\n    COL_VERTEX(3089, 1033, 85),\n    COL_VERTEX(2782, 1033, -938),\n    COL_VERTEX(3089, 1033, -938),\n    COL_VERTEX(3538, -1116, -343),\n    COL_VERTEX(3538, -1116, 270),\n    COL_VERTEX(2719, -1116, -343),\n    COL_VERTEX(2719, -1116, 270),\n    COL_VERTEX(307, -1116, -3882),\n    COL_VERTEX(307, -1116, -2243),\n    COL_VERTEX(921, -1116, -2243),\n    COL_VERTEX(921, -1116, -3882),\n    COL_VERTEX(4113, -195, -3454),\n    COL_VERTEX(4113, -41, -3454),\n    COL_VERTEX(3806, -41, -3454),\n    COL_VERTEX(3089, 112, -3454),\n    COL_VERTEX(3243, -41, -3454),\n    COL_VERTEX(3243, 112, -3454),\n    COL_VERTEX(3601, 982, -1860),\n    COL_VERTEX(4011, 880, -1450),\n    COL_VERTEX(4216, 777, -1450),\n    COL_VERTEX(4216, 880, -1450),\n    COL_VERTEX(3601, 931, -1450),\n    COL_VERTEX(3601, 982, -1450),\n    COL_VERTEX(3089, 982, -1450),\n    COL_VERTEX(3089, 982, -1860),\n    COL_VERTEX(3089, 1033, -1450),\n    COL_VERTEX(2065, 1033, -1450),\n    COL_VERTEX(-4197, 3123, -2405),\n    COL_VERTEX(-6860, 3123, -2405),\n    COL_VERTEX(-6860, 3123, -2713),\n    COL_VERTEX(-4197, 3123, -2713),\n    COL_VERTEX(975, 2878, -954),\n    COL_VERTEX(-8191, -8191, 8192),\n    COL_VERTEX(8192, -8191, 8192),\n    COL_VERTEX(8192, -8191, -8191),\n    COL_VERTEX(-8191, -8191, -8191),\n    COL_VERTEX(-6063, 1033, -343),\n    COL_VERTEX(-5756, 1033, -343),\n    COL_VERTEX(-6063, -502, -343),\n    COL_VERTEX(-2661, 3072, -6655),\n    COL_VERTEX(3393, -1833, 1831),\n    COL_VERTEX(921, -1116, 3979),\n    COL_VERTEX(3861, 4276, -2653),\n    COL_VERTEX(3861, 4276, -2038),\n    COL_VERTEX(3247, 4276, -2653),\n    COL_VERTEX(-6472, 1443, -343),\n    COL_VERTEX(-3605, -297, -445),\n    COL_VERTEX(-5733, 3072, -3583),\n    COL_VERTEX(-2661, 3072, -3583),\n    COL_VERTEX(-5733, 3072, -6655),\n    COL_VERTEX(4212, -1833, 2241),\n    COL_VERTEX(4212, -1833, 1831),\n    COL_VERTEX(3393, -1833, 2241),\n    COL_VERTEX(307, -1116, 3979),\n    COL_VERTEX(3247, 4276, -2038),\n    COL_VERTEX(1180, 3083, -954),\n    COL_VERTEX(-6063, 1648, -343),\n    COL_TRI_INIT(SURFACE_DEFAULT, 1324),\n    COL_TRI(3, 9, 8),\n    COL_TRI(0, 1, 2),\n    COL_TRI(3, 1, 4),\n    COL_TRI(1, 0, 4),\n    COL_TRI(0, 2, 5),\n    COL_TRI(3, 6, 7),\n    COL_TRI(3, 8, 6),\n    COL_TRI(48, 49, 50),\n    COL_TRI(48, 51, 49),\n    COL_TRI(64, 65, 66),\n    COL_TRI(64, 67, 65),\n    COL_TRI(67, 68, 69),\n    COL_TRI(67, 64, 68),\n    COL_TRI(65, 70, 66),\n    COL_TRI(71, 72, 73),\n    COL_TRI(73, 74, 75),\n    COL_TRI(75, 71, 73),\n    COL_TRI(77, 111, 112),\n    COL_TRI(77, 76, 111),\n    COL_TRI(73, 76, 77),\n    COL_TRI(73, 77, 78),\n    COL_TRI(79, 624, 625),\n    COL_TRI(79, 625, 626),\n    COL_TRI(80, 626, 147),\n    COL_TRI(81, 146, 626),\n    COL_TRI(85, 86, 84),\n    COL_TRI(81, 627, 146),\n    COL_TRI(82, 96, 627),\n    COL_TRI(83, 82, 627),\n    COL_TRI(83, 627, 93),\n    COL_TRI(84, 629, 85),\n    COL_TRI(85, 629, 630),\n    COL_TRI(85, 630, 87),\n    COL_TRI(85, 87, 86),\n    COL_TRI(86, 631, 84),\n    COL_TRI(87, 632, 86),\n    COL_TRI(86, 632, 631),\n    COL_TRI(84, 631, 629),\n    COL_TRI(87, 630, 632),\n    COL_TRI(88, 636, 89),\n    COL_TRI(89, 90, 91),\n    COL_TRI(89, 91, 88),\n    COL_TRI(89, 636, 637),\n    COL_TRI(89, 637, 90),\n    COL_TRI(93, 5, 83),\n    COL_TRI(90, 638, 91),\n    COL_TRI(91, 639, 88),\n    COL_TRI(91, 638, 639),\n    COL_TRI(88, 639, 636),\n    COL_TRI(90, 637, 638),\n    COL_TRI(83, 10, 13),\n    COL_TRI(92, 83, 99),\n    COL_TRI(83, 92, 10),\n    COL_TRI(93, 95, 633),\n    COL_TRI(93, 633, 642),\n    COL_TRI(93, 81, 5),\n    COL_TRI(94, 82, 97),\n    COL_TRI(13, 97, 82),\n    COL_TRI(83, 13, 82),\n    COL_TRI(13, 12, 640),\n    COL_TRI(13, 640, 97),\n    COL_TRI(95, 110, 109),\n    COL_TRI(95, 109, 633),\n    COL_TRI(96, 82, 94),\n    COL_TRI(96, 94, 8),\n    COL_TRI(96, 8, 635),\n    COL_TRI(96, 634, 627),\n    COL_TRI(96, 635, 634),\n    COL_TRI(97, 643, 101),\n    COL_TRI(97, 101, 94),\n    COL_TRI(92, 644, 11),\n    COL_TRI(92, 11, 10),\n    COL_TRI(98, 644, 92),\n    COL_TRI(92, 99, 641),\n    COL_TRI(92, 641, 98),\n    COL_TRI(99, 100, 641),\n    COL_TRI(11, 644, 98),\n    COL_TRI(11, 98, 645),\n    COL_TRI(100, 645, 98),\n    COL_TRI(100, 98, 641),\n    COL_TRI(99, 628, 100),\n    COL_TRI(97, 640, 643),\n    COL_TRI(101, 102, 94),\n    COL_TRI(102, 100, 628),\n    COL_TRI(94, 102, 628),\n    COL_TRI(9, 635, 8),\n    COL_TRI(9, 634, 635),\n    COL_TRI(103, 624, 646),\n    COL_TRI(103, 625, 624),\n    COL_TRI(104, 646, 647),\n    COL_TRI(104, 103, 646),\n    COL_TRI(105, 107, 648),\n    COL_TRI(105, 648, 649),\n    COL_TRI(106, 107, 105),\n    COL_TRI(107, 650, 648),\n    COL_TRI(107, 651, 650),\n    COL_TRI(106, 651, 107),\n    COL_TRI(112, 111, 71),\n    COL_TRI(108, 651, 106),\n    COL_TRI(108, 650, 651),\n    COL_TRI(71, 109, 110),\n    COL_TRI(109, 652, 633),\n    COL_TRI(71, 110, 72),\n    COL_TRI(71, 111, 76),\n    COL_TRI(116, 74, 656),\n    COL_TRI(71, 76, 653),\n    COL_TRI(112, 71, 654),\n    COL_TRI(75, 113, 71),\n    COL_TRI(114, 113, 115),\n    COL_TRI(114, 115, 655),\n    COL_TRI(75, 115, 113),\n    COL_TRI(109, 113, 652),\n    COL_TRI(116, 75, 74),\n    COL_TRI(117, 120, 118),\n    COL_TRI(117, 118, 657),\n    COL_TRI(118, 123, 119),\n    COL_TRI(119, 658, 118),\n    COL_TRI(120, 659, 660),\n    COL_TRI(120, 661, 659),\n    COL_TRI(121, 662, 122),\n    COL_TRI(121, 658, 662),\n    COL_TRI(119, 662, 658),\n    COL_TRI(122, 662, 119),\n    COL_TRI(127, 126, 128),\n    COL_TRI(122, 119, 124),\n    COL_TRI(123, 663, 119),\n    COL_TRI(124, 119, 663),\n    COL_TRI(124, 663, 664),\n    COL_TRI(125, 665, 127),\n    COL_TRI(125, 666, 665),\n    COL_TRI(126, 665, 666),\n    COL_TRI(127, 665, 126),\n    COL_TRI(131, 661, 669),\n    COL_TRI(126, 666, 667),\n    COL_TRI(128, 126, 667),\n    COL_TRI(128, 667, 668),\n    COL_TRI(129, 123, 660),\n    COL_TRI(129, 660, 130),\n    COL_TRI(130, 660, 659),\n    COL_TRI(130, 659, 131),\n    COL_TRI(131, 659, 661),\n    COL_TRI(132, 670, 671),\n    COL_TRI(132, 671, 672),\n    COL_TRI(133, 673, 671),\n    COL_TRI(133, 671, 670),\n    COL_TRI(133, 670, 136),\n    COL_TRI(134, 673, 674),\n    COL_TRI(134, 674, 135),\n    COL_TRI(133, 674, 673),\n    COL_TRI(135, 674, 133),\n    COL_TRI(135, 133, 137),\n    COL_TRI(136, 675, 133),\n    COL_TRI(137, 133, 675),\n    COL_TRI(137, 675, 138),\n    COL_TRI(138, 675, 136),\n    COL_TRI(140, 682, 680),\n    COL_TRI(138, 136, 676),\n    COL_TRI(139, 677, 678),\n    COL_TRI(139, 678, 679),\n    COL_TRI(140, 680, 678),\n    COL_TRI(140, 678, 677),\n    COL_TRI(140, 677, 681),\n    COL_TRI(141, 680, 682),\n    COL_TRI(141, 682, 683),\n    COL_TRI(140, 684, 682),\n    COL_TRI(142, 685, 143),\n    COL_TRI(142, 684, 685),\n    COL_TRI(140, 685, 684),\n    COL_TRI(143, 685, 140),\n    COL_TRI(143, 140, 144),\n    COL_TRI(144, 140, 681),\n    COL_TRI(144, 681, 686),\n    COL_TRI(145, 643, 640),\n    COL_TRI(145, 640, 12),\n    COL_TRI(147, 9, 3),\n    COL_TRI(145, 12, 11),\n    COL_TRI(101, 643, 145),\n    COL_TRI(101, 145, 102),\n    COL_TRI(11, 645, 145),\n    COL_TRI(102, 145, 645),\n    COL_TRI(102, 645, 100),\n    COL_TRI(146, 634, 9),\n    COL_TRI(146, 9, 147),\n    COL_TRI(147, 3, 687),\n    COL_TRI(148, 687, 3),\n    COL_TRI(148, 3, 4),\n    COL_TRI(149, 688, 689),\n    COL_TRI(149, 690, 688),\n    COL_TRI(150, 688, 690),\n    COL_TRI(150, 691, 688),\n    COL_TRI(150, 690, 692),\n    COL_TRI(151, 691, 693),\n    COL_TRI(151, 693, 152),\n    COL_TRI(152, 693, 150),\n    COL_TRI(150, 693, 691),\n    COL_TRI(156, 700, 701),\n    COL_TRI(152, 150, 694),\n    COL_TRI(150, 692, 695),\n    COL_TRI(153, 696, 697),\n    COL_TRI(153, 697, 154),\n    COL_TRI(154, 697, 155),\n    COL_TRI(155, 697, 696),\n    COL_TRI(154, 155, 698),\n    COL_TRI(155, 696, 699),\n    COL_TRI(156, 701, 702),\n    COL_TRI(0, 701, 700),\n    COL_TRI(0, 700, 4),\n    COL_TRI(157, 703, 704),\n    COL_TRI(157, 159, 703),\n    COL_TRI(158, 157, 704),\n    COL_TRI(159, 705, 703),\n    COL_TRI(159, 706, 705),\n    COL_TRI(162, 163, 708),\n    COL_TRI(158, 704, 162),\n    COL_TRI(160, 705, 706),\n    COL_TRI(160, 706, 707),\n    COL_TRI(161, 160, 707),\n    COL_TRI(161, 707, 164),\n    COL_TRI(162, 708, 158),\n    COL_TRI(163, 709, 710),\n    COL_TRI(163, 710, 708),\n    COL_TRI(164, 709, 161),\n    COL_TRI(164, 710, 709),\n    COL_TRI(80, 147, 628),\n    COL_TRI(165, 711, 712),\n    COL_TRI(165, 166, 711),\n    COL_TRI(165, 712, 171),\n    COL_TRI(166, 714, 167),\n    COL_TRI(166, 167, 711),\n    COL_TRI(167, 714, 716),\n    COL_TRI(168, 167, 716),\n    COL_TRI(169, 717, 168),\n    COL_TRI(169, 168, 716),\n    COL_TRI(169, 718, 719),\n    COL_TRI(169, 719, 717),\n    COL_TRI(174, 175, 173),\n    COL_TRI(170, 718, 715),\n    COL_TRI(170, 719, 718),\n    COL_TRI(171, 170, 715),\n    COL_TRI(171, 715, 713),\n    COL_TRI(165, 171, 713),\n    COL_TRI(172, 720, 173),\n    COL_TRI(173, 205, 172),\n    COL_TRI(173, 175, 205),\n    COL_TRI(173, 721, 174),\n    COL_TRI(173, 720, 721),\n    COL_TRI(175, 722, 205),\n    COL_TRI(175, 723, 722),\n    COL_TRI(174, 723, 175),\n    COL_TRI(172, 724, 720),\n    COL_TRI(176, 725, 179),\n    COL_TRI(177, 725, 176),\n    COL_TRI(176, 179, 726),\n    COL_TRI(178, 176, 726),\n    COL_TRI(178, 177, 176),\n    COL_TRI(179, 178, 726),\n    COL_TRI(177, 727, 725),\n    COL_TRI(179, 728, 178),\n    COL_TRI(178, 727, 177),\n    COL_TRI(178, 728, 727),\n    COL_TRI(180, 729, 183),\n    COL_TRI(180, 183, 730),\n    COL_TRI(181, 729, 180),\n    COL_TRI(182, 180, 730),\n    COL_TRI(181, 180, 182),\n    COL_TRI(183, 729, 181),\n    COL_TRI(184, 730, 183),\n    COL_TRI(185, 183, 181),\n    COL_TRI(184, 183, 185),\n    COL_TRI(182, 730, 184),\n    COL_TRI(189, 738, 739),\n    COL_TRI(186, 731, 187),\n    COL_TRI(186, 187, 732),\n    COL_TRI(187, 731, 733),\n    COL_TRI(187, 733, 734),\n    COL_TRI(186, 735, 733),\n    COL_TRI(186, 733, 731),\n    COL_TRI(188, 186, 732),\n    COL_TRI(188, 736, 186),\n    COL_TRI(186, 736, 737),\n    COL_TRI(186, 737, 735),\n    COL_TRI(189, 739, 740),\n    COL_TRI(189, 740, 741),\n    COL_TRI(190, 740, 739),\n    COL_TRI(191, 739, 738),\n    COL_TRI(190, 739, 191),\n    COL_TRI(189, 742, 738),\n    COL_TRI(192, 738, 742),\n    COL_TRI(191, 738, 192),\n    COL_TRI(192, 742, 743),\n    COL_TRI(192, 190, 191),\n    COL_TRI(192, 199, 198),\n    COL_TRI(192, 198, 190),\n    COL_TRI(192, 743, 199),\n    COL_TRI(193, 188, 732),\n    COL_TRI(193, 732, 187),\n    COL_TRI(193, 187, 734),\n    COL_TRI(193, 734, 195),\n    COL_TRI(194, 196, 195),\n    COL_TRI(195, 196, 744),\n    COL_TRI(195, 744, 193),\n    COL_TRI(196, 204, 744),\n    COL_TRI(193, 744, 197),\n    COL_TRI(193, 197, 194),\n    COL_TRI(197, 745, 196),\n    COL_TRI(196, 745, 204),\n    COL_TRI(194, 197, 196),\n    COL_TRI(204, 745, 746),\n    COL_TRI(197, 746, 745),\n    COL_TRI(198, 747, 201),\n    COL_TRI(199, 200, 198),\n    COL_TRI(198, 200, 747),\n    COL_TRI(200, 203, 747),\n    COL_TRI(201, 747, 202),\n    COL_TRI(201, 202, 199),\n    COL_TRI(202, 748, 200),\n    COL_TRI(200, 748, 203),\n    COL_TRI(199, 202, 200),\n    COL_TRI(202, 749, 748),\n    COL_TRI(203, 748, 749),\n    COL_TRI(205, 722, 750),\n    COL_TRI(205, 724, 172),\n    COL_TRI(205, 751, 724),\n    COL_TRI(205, 750, 751),\n    COL_TRI(206, 752, 753),\n    COL_TRI(206, 753, 233),\n    COL_TRI(206, 233, 754),\n    COL_TRI(207, 755, 208),\n    COL_TRI(207, 756, 755),\n    COL_TRI(208, 752, 206),\n    COL_TRI(208, 755, 752),\n    COL_TRI(206, 754, 208),\n    COL_TRI(209, 223, 220),\n    COL_TRI(209, 221, 223),\n    COL_TRI(210, 214, 211),\n    COL_TRI(210, 213, 214),\n    COL_TRI(211, 757, 210),\n    COL_TRI(210, 758, 213),\n    COL_TRI(212, 210, 757),\n    COL_TRI(212, 759, 210),\n    COL_TRI(210, 759, 760),\n    COL_TRI(210, 760, 758),\n    COL_TRI(213, 758, 760),\n    COL_TRI(213, 760, 761),\n    COL_TRI(214, 213, 761),\n    COL_TRI(214, 762, 763),\n    COL_TRI(214, 761, 762),\n    COL_TRI(214, 763, 211),\n    COL_TRI(211, 764, 757),\n    COL_TRI(211, 215, 764),\n    COL_TRI(211, 765, 215),\n    COL_TRI(211, 763, 765),\n    COL_TRI(215, 216, 764),\n    COL_TRI(215, 765, 216),\n    COL_TRI(216, 757, 764),\n    COL_TRI(216, 212, 757),\n    COL_TRI(217, 766, 219),\n    COL_TRI(217, 219, 222),\n    COL_TRI(218, 766, 217),\n    COL_TRI(218, 217, 222),\n    COL_TRI(218, 767, 766),\n    COL_TRI(219, 766, 767),\n    COL_TRI(219, 220, 223),\n    COL_TRI(209, 220, 767),\n    COL_TRI(220, 219, 767),\n    COL_TRI(219, 223, 222),\n    COL_TRI(221, 209, 767),\n    COL_TRI(221, 767, 218),\n    COL_TRI(222, 223, 218),\n    COL_TRI(223, 221, 218),\n    COL_TRI(224, 768, 227),\n    COL_TRI(225, 224, 272),\n    COL_TRI(225, 768, 224),\n    COL_TRI(226, 224, 227),\n    COL_TRI(227, 770, 228),\n    COL_TRI(226, 227, 228),\n    COL_TRI(228, 771, 226),\n    COL_TRI(226, 769, 224),\n    COL_TRI(229, 248, 772),\n    COL_TRI(229, 231, 248),\n    COL_TRI(230, 773, 229),\n    COL_TRI(230, 229, 772),\n    COL_TRI(229, 773, 774),\n    COL_TRI(229, 774, 231),\n    COL_TRI(235, 778, 777),\n    COL_TRI(231, 247, 248),\n    COL_TRI(231, 774, 247),\n    COL_TRI(232, 230, 772),\n    COL_TRI(232, 775, 230),\n    COL_TRI(233, 776, 754),\n    COL_TRI(234, 235, 777),\n    COL_TRI(236, 235, 234),\n    COL_TRI(235, 779, 780),\n    COL_TRI(235, 780, 778),\n    COL_TRI(237, 780, 779),\n    COL_TRI(237, 779, 236),\n    COL_TRI(236, 779, 235),\n    COL_TRI(238, 781, 782),\n    COL_TRI(238, 783, 781),\n    COL_TRI(239, 784, 242),\n    COL_TRI(239, 242, 785),\n    COL_TRI(240, 784, 239),\n    COL_TRI(242, 784, 240),\n    COL_TRI(241, 239, 785),\n    COL_TRI(240, 239, 241),\n    COL_TRI(243, 244, 786),\n    COL_TRI(244, 246, 786),\n    COL_TRI(244, 787, 246),\n    COL_TRI(245, 787, 244),\n    COL_TRI(245, 244, 243),\n    COL_TRI(246, 787, 245),\n    COL_TRI(233, 753, 776),\n    COL_TRI(247, 775, 776),\n    COL_TRI(247, 776, 756),\n    COL_TRI(248, 247, 756),\n    COL_TRI(248, 756, 207),\n    COL_TRI(232, 754, 776),\n    COL_TRI(232, 776, 775),\n    COL_TRI(252, 228, 271),\n    COL_TRI(249, 20, 788),\n    COL_TRI(249, 21, 20),\n    COL_TRI(250, 225, 272),\n    COL_TRI(251, 226, 273),\n    COL_TRI(251, 769, 226),\n    COL_TRI(252, 771, 228),\n    COL_TRI(258, 793, 794),\n    COL_TRI(253, 255, 254),\n    COL_TRI(253, 789, 254),\n    COL_TRI(254, 790, 255),\n    COL_TRI(254, 789, 790),\n    COL_TRI(254, 255, 256),\n    COL_TRI(254, 256, 253),\n    COL_TRI(253, 256, 255),\n    COL_TRI(255, 790, 791),\n    COL_TRI(255, 791, 256),\n    COL_TRI(256, 792, 253),\n    COL_TRI(256, 791, 792),\n    COL_TRI(253, 792, 789),\n    COL_TRI(257, 793, 258),\n    COL_TRI(258, 794, 259),\n    COL_TRI(261, 800, 262),\n    COL_TRI(257, 795, 793),\n    COL_TRI(259, 794, 796),\n    COL_TRI(259, 796, 260),\n    COL_TRI(260, 797, 798),\n    COL_TRI(260, 796, 797),\n    COL_TRI(261, 799, 800),\n    COL_TRI(262, 800, 801),\n    COL_TRI(261, 262, 263),\n    COL_TRI(262, 801, 263),\n    COL_TRI(263, 802, 803),\n    COL_TRI(261, 263, 803),\n    COL_TRI(263, 801, 802),\n    COL_TRI(264, 804, 805),\n    COL_TRI(264, 806, 804),\n    COL_TRI(264, 805, 266),\n    COL_TRI(265, 806, 264),\n    COL_TRI(264, 269, 811),\n    COL_TRI(265, 807, 806),\n    COL_TRI(266, 805, 808),\n    COL_TRI(266, 809, 265),\n    COL_TRI(266, 808, 809),\n    COL_TRI(265, 809, 807),\n    COL_TRI(264, 810, 265),\n    COL_TRI(264, 268, 810),\n    COL_TRI(264, 811, 268),\n    COL_TRI(270, 795, 257),\n    COL_TRI(267, 268, 811),\n    COL_TRI(267, 812, 268),\n    COL_TRI(268, 813, 810),\n    COL_TRI(268, 812, 813),\n    COL_TRI(269, 267, 811),\n    COL_TRI(269, 814, 267),\n    COL_TRI(267, 813, 812),\n    COL_TRI(267, 815, 813),\n    COL_TRI(267, 816, 815),\n    COL_TRI(267, 814, 816),\n    COL_TRI(270, 817, 795),\n    COL_TRI(250, 273, 271),\n    COL_TRI(250, 272, 273),\n    COL_TRI(271, 274, 250),\n    COL_TRI(272, 251, 273),\n    COL_TRI(273, 252, 271),\n    COL_TRI(274, 227, 250),\n    COL_TRI(274, 770, 227),\n    COL_TRI(279, 822, 823),\n    COL_TRI(275, 278, 276),\n    COL_TRI(275, 277, 278),\n    COL_TRI(275, 818, 277),\n    COL_TRI(275, 819, 818),\n    COL_TRI(276, 819, 275),\n    COL_TRI(276, 820, 819),\n    COL_TRI(277, 818, 821),\n    COL_TRI(277, 821, 278),\n    COL_TRI(278, 820, 276),\n    COL_TRI(278, 821, 820),\n    COL_TRI(279, 281, 282),\n    COL_TRI(279, 282, 280),\n    COL_TRI(280, 822, 279),\n    COL_TRI(279, 823, 281),\n    COL_TRI(281, 823, 824),\n    COL_TRI(281, 824, 282),\n    COL_TRI(282, 283, 280),\n    COL_TRI(282, 824, 283),\n    COL_TRI(280, 283, 822),\n    COL_TRI(283, 823, 822),\n    COL_TRI(283, 824, 823),\n    COL_TRI(284, 285, 825),\n    COL_TRI(285, 826, 825),\n    COL_TRI(285, 286, 826),\n    COL_TRI(286, 827, 828),\n    COL_TRI(286, 828, 826),\n    COL_TRI(289, 290, 830),\n    COL_TRI(284, 825, 289),\n    COL_TRI(287, 288, 829),\n    COL_TRI(288, 827, 829),\n    COL_TRI(288, 828, 827),\n    COL_TRI(287, 829, 291),\n    COL_TRI(289, 830, 284),\n    COL_TRI(293, 836, 835),\n    COL_TRI(290, 831, 830),\n    COL_TRI(290, 832, 831),\n    COL_TRI(291, 831, 832),\n    COL_TRI(291, 832, 287),\n    COL_TRI(292, 833, 295),\n    COL_TRI(292, 295, 834),\n    COL_TRI(292, 835, 833),\n    COL_TRI(292, 293, 835),\n    COL_TRI(300, 842, 298),\n    COL_TRI(294, 838, 839),\n    COL_TRI(294, 839, 840),\n    COL_TRI(294, 840, 841),\n    COL_TRI(295, 296, 837),\n    COL_TRI(296, 839, 838),\n    COL_TRI(296, 838, 837),\n    COL_TRI(295, 837, 834),\n    COL_TRI(297, 842, 300),\n    COL_TRI(297, 300, 843),\n    COL_TRI(298, 297, 299),\n    COL_TRI(298, 842, 297),\n    COL_TRI(299, 297, 843),\n    COL_TRI(305, 846, 845),\n    COL_TRI(301, 843, 300),\n    COL_TRI(302, 300, 298),\n    COL_TRI(301, 300, 302),\n    COL_TRI(299, 843, 301),\n    COL_TRI(303, 306, 304),\n    COL_TRI(303, 305, 306),\n    COL_TRI(304, 844, 303),\n    COL_TRI(305, 845, 306),\n    COL_TRI(301, 847, 299),\n    COL_TRI(306, 307, 304),\n    COL_TRI(306, 845, 307),\n    COL_TRI(304, 307, 844),\n    COL_TRI(307, 846, 844),\n    COL_TRI(307, 845, 846),\n    COL_TRI(298, 308, 302),\n    COL_TRI(308, 301, 302),\n    COL_TRI(308, 847, 301),\n    COL_TRI(298, 847, 308),\n    COL_TRI(298, 299, 847),\n    COL_TRI(38, 19, 27),\n    COL_TRI(24, 309, 36),\n    COL_TRI(36, 309, 848),\n    COL_TRI(36, 848, 35),\n    COL_TRI(309, 849, 848),\n    COL_TRI(35, 848, 849),\n    COL_TRI(35, 849, 34),\n    COL_TRI(309, 850, 849),\n    COL_TRI(24, 850, 309),\n    COL_TRI(34, 849, 850),\n    COL_TRI(34, 850, 24),\n    COL_TRI(27, 18, 26),\n    COL_TRI(27, 19, 18),\n    COL_TRI(18, 16, 29),\n    COL_TRI(26, 18, 29),\n    COL_TRI(38, 17, 19),\n    COL_TRI(29, 16, 15),\n    COL_TRI(29, 15, 33),\n    COL_TRI(40, 17, 38),\n    COL_TRI(40, 14, 17),\n    COL_TRI(32, 14, 40),\n    COL_TRI(33, 15, 44),\n    COL_TRI(44, 249, 788),\n    COL_TRI(44, 788, 32),\n    COL_TRI(15, 249, 44),\n    COL_TRI(32, 788, 14),\n    COL_TRI(41, 310, 30),\n    COL_TRI(310, 311, 30),\n    COL_TRI(30, 311, 31),\n    COL_TRI(311, 313, 31),\n    COL_TRI(311, 310, 312),\n    COL_TRI(312, 313, 311),\n    COL_TRI(31, 313, 47),\n    COL_TRI(45, 313, 321),\n    COL_TRI(313, 312, 321),\n    COL_TRI(314, 318, 39),\n    COL_TRI(315, 318, 314),\n    COL_TRI(314, 39, 42),\n    COL_TRI(316, 314, 42),\n    COL_TRI(321, 312, 316),\n    COL_TRI(317, 851, 318),\n    COL_TRI(23, 318, 851),\n    COL_TRI(315, 317, 318),\n    COL_TRI(318, 23, 39),\n    COL_TRI(23, 851, 22),\n    COL_TRI(317, 852, 851),\n    COL_TRI(37, 852, 319),\n    COL_TRI(37, 319, 25),\n    COL_TRI(319, 853, 28),\n    COL_TRI(319, 28, 25),\n    COL_TRI(22, 851, 852),\n    COL_TRI(22, 852, 37),\n    COL_TRI(43, 316, 42),\n    COL_TRI(41, 28, 853),\n    COL_TRI(41, 853, 310),\n    COL_TRI(312, 320, 316),\n    COL_TRI(320, 315, 316),\n    COL_TRI(315, 314, 316),\n    COL_TRI(43, 321, 316),\n    COL_TRI(322, 370, 856),\n    COL_TRI(45, 321, 43),\n    COL_TRI(46, 313, 45),\n    COL_TRI(46, 47, 313),\n    COL_TRI(322, 362, 324),\n    COL_TRI(322, 854, 362),\n    COL_TRI(322, 327, 855),\n    COL_TRI(322, 855, 854),\n    COL_TRI(323, 370, 322),\n    COL_TRI(323, 860, 328),\n    COL_TRI(324, 362, 857),\n    COL_TRI(324, 857, 326),\n    COL_TRI(325, 863, 324),\n    COL_TRI(326, 325, 324),\n    COL_TRI(326, 857, 858),\n    COL_TRI(327, 326, 858),\n    COL_TRI(327, 858, 859),\n    COL_TRI(327, 859, 855),\n    COL_TRI(328, 860, 864),\n    COL_TRI(329, 328, 864),\n    COL_TRI(323, 861, 860),\n    COL_TRI(329, 864, 865),\n    COL_TRI(330, 329, 866),\n    COL_TRI(329, 865, 866),\n    COL_TRI(330, 371, 329),\n    COL_TRI(330, 866, 867),\n    COL_TRI(330, 868, 323),\n    COL_TRI(330, 869, 868),\n    COL_TRI(330, 870, 371),\n    COL_TRI(331, 870, 330),\n    COL_TRI(328, 332, 323),\n    COL_TRI(332, 862, 323),\n    COL_TRI(323, 862, 370),\n    COL_TRI(333, 335, 334),\n    COL_TRI(333, 872, 335),\n    COL_TRI(334, 335, 331),\n    COL_TRI(335, 336, 331),\n    COL_TRI(336, 337, 331),\n    COL_TRI(337, 338, 331),\n    COL_TRI(338, 871, 331),\n    COL_TRI(331, 871, 870),\n    COL_TRI(370, 862, 332),\n    COL_TRI(342, 873, 341),\n    COL_TRI(339, 340, 333),\n    COL_TRI(340, 872, 333),\n    COL_TRI(339, 333, 338),\n    COL_TRI(334, 374, 333),\n    COL_TRI(337, 339, 338),\n    COL_TRI(338, 399, 871),\n    COL_TRI(341, 345, 342),\n    COL_TRI(341, 343, 345),\n    COL_TRI(343, 344, 345),\n    COL_TRI(344, 372, 345),\n    COL_TRI(345, 401, 342),\n    COL_TRI(342, 874, 873),\n    COL_TRI(346, 347, 876),\n    COL_TRI(347, 877, 876),\n    COL_TRI(348, 876, 877),\n    COL_TRI(348, 878, 876),\n    COL_TRI(349, 410, 879),\n    COL_TRI(349, 351, 410),\n    COL_TRI(350, 349, 879),\n    COL_TRI(350, 347, 349),\n    COL_TRI(349, 880, 351),\n    COL_TRI(349, 881, 880),\n    COL_TRI(351, 880, 882),\n    COL_TRI(351, 882, 352),\n    COL_TRI(352, 882, 878),\n    COL_TRI(351, 352, 410),\n    COL_TRI(352, 423, 410),\n    COL_TRI(352, 348, 423),\n    COL_TRI(352, 878, 348),\n    COL_TRI(353, 356, 357),\n    COL_TRI(353, 354, 356),\n    COL_TRI(354, 355, 356),\n    COL_TRI(359, 353, 885),\n    COL_TRI(355, 872, 340),\n    COL_TRI(355, 340, 356),\n    COL_TRI(356, 340, 339),\n    COL_TRI(357, 339, 337),\n    COL_TRI(356, 339, 357),\n    COL_TRI(353, 357, 885),\n    COL_TRI(357, 337, 885),\n    COL_TRI(336, 358, 337),\n    COL_TRI(358, 885, 337),\n    COL_TRI(359, 885, 358),\n    COL_TRI(360, 361, 355),\n    COL_TRI(359, 361, 360),\n    COL_TRI(359, 358, 361),\n    COL_TRI(361, 872, 355),\n    COL_TRI(361, 335, 872),\n    COL_TRI(360, 355, 354),\n    COL_TRI(362, 363, 857),\n    COL_TRI(363, 889, 857),\n    COL_TRI(364, 858, 857),\n    COL_TRI(364, 857, 889),\n    COL_TRI(365, 416, 890),\n    COL_TRI(365, 367, 416),\n    COL_TRI(366, 365, 890),\n    COL_TRI(366, 363, 365),\n    COL_TRI(365, 855, 367),\n    COL_TRI(365, 854, 855),\n    COL_TRI(367, 855, 859),\n    COL_TRI(367, 368, 416),\n    COL_TRI(367, 859, 368),\n    COL_TRI(368, 859, 858),\n    COL_TRI(368, 369, 416),\n    COL_TRI(368, 364, 369),\n    COL_TRI(368, 858, 364),\n    COL_TRI(369, 363, 366),\n    COL_TRI(344, 863, 325),\n    COL_TRI(364, 889, 369),\n    COL_TRI(369, 889, 363),\n    COL_TRI(370, 332, 856),\n    COL_TRI(371, 871, 399),\n    COL_TRI(371, 870, 871),\n    COL_TRI(344, 325, 372),\n    COL_TRI(373, 874, 342),\n    COL_TRI(372, 325, 892),\n    COL_TRI(325, 326, 892),\n    COL_TRI(345, 372, 892),\n    COL_TRI(373, 374, 874),\n    COL_TRI(373, 333, 374),\n    COL_TRI(374, 873, 874),\n    COL_TRI(374, 875, 873),\n    COL_TRI(334, 875, 374),\n    COL_TRI(380, 899, 379),\n    COL_TRI(375, 378, 893),\n    COL_TRI(375, 376, 378),\n    COL_TRI(376, 894, 383),\n    COL_TRI(376, 383, 378),\n    COL_TRI(377, 893, 378),\n    COL_TRI(378, 895, 377),\n    COL_TRI(378, 383, 895),\n    COL_TRI(377, 896, 893),\n    COL_TRI(379, 897, 380),\n    COL_TRI(379, 898, 897),\n    COL_TRI(381, 380, 897),\n    COL_TRI(380, 900, 899),\n    COL_TRI(381, 900, 380),\n    COL_TRI(381, 897, 901),\n    COL_TRI(382, 894, 385),\n    COL_TRI(382, 383, 894),\n    COL_TRI(383, 382, 390),\n    COL_TRI(383, 390, 895),\n    COL_TRI(386, 326, 327),\n    COL_TRI(384, 895, 904),\n    COL_TRI(382, 902, 390),\n    COL_TRI(382, 903, 902),\n    COL_TRI(385, 903, 382),\n    COL_TRI(322, 856, 327),\n    COL_TRI(386, 327, 424),\n    COL_TRI(387, 395, 388),\n    COL_TRI(388, 899, 900),\n    COL_TRI(388, 900, 387),\n    COL_TRI(389, 387, 900),\n    COL_TRI(389, 391, 387),\n    COL_TRI(390, 392, 391),\n    COL_TRI(390, 391, 394),\n    COL_TRI(391, 392, 387),\n    COL_TRI(392, 395, 387),\n    COL_TRI(381, 389, 900),\n    COL_TRI(392, 902, 903),\n    COL_TRI(390, 394, 904),\n    COL_TRI(390, 902, 392),\n    COL_TRI(393, 394, 381),\n    COL_TRI(394, 389, 381),\n    COL_TRI(384, 904, 905),\n    COL_TRI(395, 392, 903),\n    COL_TRI(397, 909, 338),\n    COL_TRI(396, 906, 907),\n    COL_TRI(396, 908, 906),\n    COL_TRI(329, 424, 328),\n    COL_TRI(329, 397, 424),\n    COL_TRI(329, 909, 397),\n    COL_TRI(329, 371, 909),\n    COL_TRI(333, 401, 397),\n    COL_TRI(333, 397, 338),\n    COL_TRI(400, 397, 401),\n    COL_TRI(397, 910, 424),\n    COL_TRI(398, 424, 910),\n    COL_TRI(398, 386, 424),\n    COL_TRI(345, 386, 401),\n    COL_TRI(399, 338, 909),\n    COL_TRI(397, 400, 910),\n    COL_TRI(402, 403, 408),\n    COL_TRI(400, 401, 911),\n    COL_TRI(333, 373, 401),\n    COL_TRI(401, 373, 342),\n    COL_TRI(386, 398, 401),\n    COL_TRI(398, 911, 401),\n    COL_TRI(402, 398, 405),\n    COL_TRI(403, 402, 405),\n    COL_TRI(402, 408, 404),\n    COL_TRI(402, 911, 398),\n    COL_TRI(404, 911, 402),\n    COL_TRI(404, 400, 911),\n    COL_TRI(405, 398, 910),\n    COL_TRI(405, 910, 406),\n    COL_TRI(406, 910, 400),\n    COL_TRI(406, 400, 404),\n    COL_TRI(371, 399, 909),\n    COL_TRI(406, 413, 405),\n    COL_TRI(406, 407, 413),\n    COL_TRI(408, 423, 407),\n    COL_TRI(407, 423, 883),\n    COL_TRI(407, 416, 369),\n    COL_TRI(407, 369, 413),\n    COL_TRI(407, 891, 416),\n    COL_TRI(407, 406, 404),\n    COL_TRI(407, 404, 408),\n    COL_TRI(403, 353, 408),\n    COL_TRI(408, 410, 423),\n    COL_TRI(409, 417, 408),\n    COL_TRI(410, 408, 417),\n    COL_TRI(353, 409, 408),\n    COL_TRI(407, 883, 891),\n    COL_TRI(403, 354, 353),\n    COL_TRI(411, 403, 413),\n    COL_TRI(412, 886, 403),\n    COL_TRI(411, 412, 403),\n    COL_TRI(403, 886, 354),\n    COL_TRI(403, 405, 413),\n    COL_TRI(411, 413, 420),\n    COL_TRI(413, 912, 419),\n    COL_TRI(413, 419, 420),\n    COL_TRI(413, 369, 912),\n    COL_TRI(350, 883, 423),\n    COL_TRI(350, 414, 883),\n    COL_TRI(414, 415, 883),\n    COL_TRI(415, 891, 883),\n    COL_TRI(416, 891, 415),\n    COL_TRI(359, 409, 353),\n    COL_TRI(359, 888, 409),\n    COL_TRI(417, 409, 888),\n    COL_TRI(410, 417, 884),\n    COL_TRI(417, 888, 884),\n    COL_TRI(420, 419, 914),\n    COL_TRI(418, 886, 412),\n    COL_TRI(418, 412, 411),\n    COL_TRI(354, 886, 887),\n    COL_TRI(418, 887, 886),\n    COL_TRI(419, 912, 913),\n    COL_TRI(366, 912, 369),\n    COL_TRI(366, 913, 912),\n    COL_TRI(419, 913, 914),\n    COL_TRI(410, 884, 879),\n    COL_TRI(421, 418, 411),\n    COL_TRI(420, 914, 422),\n    COL_TRI(422, 411, 420),\n    COL_TRI(354, 887, 360),\n    COL_TRI(327, 425, 424),\n    COL_TRI(423, 877, 347),\n    COL_TRI(348, 877, 423),\n    COL_TRI(423, 347, 350),\n    COL_TRI(416, 415, 890),\n    COL_TRI(424, 425, 328),\n    COL_TRI(425, 332, 328),\n    COL_TRI(425, 327, 856),\n    COL_TRI(425, 856, 332),\n    COL_TRI(430, 432, 919),\n    COL_TRI(386, 892, 326),\n    COL_TRI(345, 892, 386),\n    COL_TRI(426, 915, 428),\n    COL_TRI(426, 916, 915),\n    COL_TRI(427, 916, 426),\n    COL_TRI(427, 917, 916),\n    COL_TRI(428, 915, 918),\n    COL_TRI(428, 918, 429),\n    COL_TRI(429, 917, 427),\n    COL_TRI(429, 918, 917),\n    COL_TRI(433, 925, 431),\n    COL_TRI(430, 919, 920),\n    COL_TRI(430, 921, 349),\n    COL_TRI(430, 922, 921),\n    COL_TRI(430, 923, 922),\n    COL_TRI(430, 920, 923),\n    COL_TRI(431, 924, 433),\n    COL_TRI(432, 433, 919),\n    COL_TRI(432, 925, 433),\n    COL_TRI(437, 439, 436),\n    COL_TRI(431, 435, 924),\n    COL_TRI(431, 926, 435),\n    COL_TRI(431, 434, 926),\n    COL_TRI(431, 347, 434),\n    COL_TRI(434, 922, 926),\n    COL_TRI(434, 921, 922),\n    COL_TRI(435, 920, 924),\n    COL_TRI(435, 923, 920),\n    COL_TRI(436, 927, 928),\n    COL_TRI(436, 439, 927),\n    COL_TRI(445, 931, 443),\n    COL_TRI(437, 442, 439),\n    COL_TRI(438, 439, 440),\n    COL_TRI(438, 927, 439),\n    COL_TRI(439, 442, 929),\n    COL_TRI(440, 439, 929),\n    COL_TRI(441, 442, 437),\n    COL_TRI(441, 930, 442),\n    COL_TRI(442, 444, 929),\n    COL_TRI(442, 930, 444),\n    COL_TRI(443, 930, 441),\n    COL_TRI(443, 931, 930),\n    COL_TRI(444, 930, 931),\n    COL_TRI(450, 929, 449),\n    COL_TRI(445, 932, 931),\n    COL_TRI(446, 931, 932),\n    COL_TRI(444, 931, 446),\n    COL_TRI(446, 932, 933),\n    COL_TRI(447, 446, 448),\n    COL_TRI(448, 934, 935),\n    COL_TRI(448, 446, 934),\n    COL_TRI(447, 444, 446),\n    COL_TRI(449, 444, 447),\n    COL_TRI(449, 929, 444),\n    COL_TRI(450, 440, 929),\n    COL_TRI(451, 440, 450),\n    COL_TRI(451, 936, 440),\n    COL_TRI(452, 937, 938),\n    COL_TRI(452, 939, 937),\n    COL_TRI(452, 940, 939),\n    COL_TRI(452, 941, 940),\n    COL_TRI(453, 940, 941),\n    COL_TRI(453, 942, 940),\n    COL_TRI(454, 943, 944),\n    COL_TRI(454, 945, 943),\n    COL_TRI(455, 454, 944),\n    COL_TRI(456, 945, 946),\n    COL_TRI(456, 943, 945),\n    COL_TRI(457, 943, 456),\n    COL_TRI(457, 944, 943),\n    COL_TRI(455, 944, 457),\n    COL_TRI(422, 421, 411),\n    COL_TRI(458, 947, 948),\n    COL_TRI(458, 948, 949),\n    COL_TRI(459, 460, 950),\n    COL_TRI(460, 951, 950),\n    COL_TRI(461, 465, 464),\n    COL_TRI(461, 464, 952),\n    COL_TRI(462, 952, 464),\n    COL_TRI(462, 463, 952),\n    COL_TRI(466, 955, 465),\n    COL_TRI(464, 465, 953),\n    COL_TRI(464, 953, 462),\n    COL_TRI(462, 953, 954),\n    COL_TRI(462, 954, 463),\n    COL_TRI(463, 954, 461),\n    COL_TRI(463, 461, 952),\n    COL_TRI(465, 467, 466),\n    COL_TRI(465, 461, 467),\n    COL_TRI(481, 480, 955),\n    COL_TRI(461, 956, 480),\n    COL_TRI(461, 480, 467),\n    COL_TRI(467, 480, 481),\n    COL_TRI(467, 481, 466),\n    COL_TRI(466, 481, 955),\n    COL_TRI(468, 469, 957),\n    COL_TRI(469, 467, 958),\n    COL_TRI(469, 468, 467),\n    COL_TRI(475, 472, 959),\n    COL_TRI(470, 468, 957),\n    COL_TRI(471, 466, 957),\n    COL_TRI(466, 470, 957),\n    COL_TRI(472, 473, 477),\n    COL_TRI(473, 472, 476),\n    COL_TRI(472, 475, 476),\n    COL_TRI(474, 472, 477),\n    COL_TRI(474, 959, 472),\n    COL_TRI(476, 475, 478),\n    COL_TRI(477, 478, 474),\n    COL_TRI(475, 959, 960),\n    COL_TRI(475, 960, 479),\n    COL_TRI(475, 479, 962),\n    COL_TRI(478, 962, 474),\n    COL_TRI(479, 474, 962),\n    COL_TRI(479, 961, 474),\n    COL_TRI(474, 961, 959),\n    COL_TRI(480, 956, 955),\n    COL_TRI(490, 491, 967),\n    COL_TRI(482, 963, 483),\n    COL_TRI(483, 964, 965),\n    COL_TRI(483, 965, 488),\n    COL_TRI(484, 482, 483),\n    COL_TRI(483, 488, 484),\n    COL_TRI(485, 964, 483),\n    COL_TRI(485, 483, 963),\n    COL_TRI(486, 965, 966),\n    COL_TRI(486, 488, 965),\n    COL_TRI(487, 488, 489),\n    COL_TRI(488, 487, 484),\n    COL_TRI(488, 486, 489),\n    COL_TRI(489, 486, 482),\n    COL_TRI(486, 963, 482),\n    COL_TRI(486, 966, 485),\n    COL_TRI(486, 485, 963),\n    COL_TRI(495, 971, 497),\n    COL_TRI(491, 492, 967),\n    COL_TRI(492, 494, 967),\n    COL_TRI(493, 494, 968),\n    COL_TRI(494, 493, 967),\n    COL_TRI(493, 968, 969),\n    COL_TRI(490, 969, 968),\n    COL_TRI(490, 968, 491),\n    COL_TRI(495, 970, 971),\n    COL_TRI(500, 975, 499),\n    COL_TRI(496, 970, 495),\n    COL_TRI(496, 973, 970),\n    COL_TRI(497, 971, 972),\n    COL_TRI(497, 972, 498),\n    COL_TRI(495, 497, 498),\n    COL_TRI(498, 973, 496),\n    COL_TRI(495, 498, 496),\n    COL_TRI(498, 972, 973),\n    COL_TRI(499, 974, 501),\n    COL_TRI(499, 502, 500),\n    COL_TRI(499, 501, 502),\n    COL_TRI(499, 975, 974),\n    COL_TRI(501, 974, 976),\n    COL_TRI(501, 976, 502),\n    COL_TRI(502, 977, 500),\n    COL_TRI(502, 976, 977),\n    COL_TRI(500, 977, 975),\n    COL_TRI(503, 978, 979),\n    COL_TRI(503, 979, 980),\n    COL_TRI(504, 978, 503),\n    COL_TRI(504, 503, 505),\n    COL_TRI(505, 503, 980),\n    COL_TRI(69, 509, 981),\n    COL_TRI(506, 980, 979),\n    COL_TRI(506, 979, 507),\n    COL_TRI(507, 979, 978),\n    COL_TRI(505, 980, 506),\n    COL_TRI(507, 978, 504),\n    COL_TRI(68, 64, 508),\n    COL_TRI(68, 508, 509),\n    COL_TRI(69, 68, 509),\n    COL_TRI(516, 518, 519),\n    COL_TRI(510, 981, 509),\n    COL_TRI(511, 512, 515),\n    COL_TRI(511, 513, 512),\n    COL_TRI(512, 982, 514),\n    COL_TRI(512, 514, 515),\n    COL_TRI(513, 982, 512),\n    COL_TRI(513, 983, 982),\n    COL_TRI(514, 982, 983),\n    COL_TRI(515, 514, 984),\n    COL_TRI(514, 983, 984),\n    COL_TRI(515, 984, 511),\n    COL_TRI(516, 519, 517),\n    COL_TRI(522, 523, 524),\n    COL_TRI(518, 986, 519),\n    COL_TRI(518, 987, 986),\n    COL_TRI(519, 986, 520),\n    COL_TRI(519, 520, 517),\n    COL_TRI(517, 520, 985),\n    COL_TRI(517, 985, 516),\n    COL_TRI(520, 987, 985),\n    COL_TRI(520, 986, 987),\n    COL_TRI(521, 988, 522),\n    COL_TRI(522, 524, 521),\n    COL_TRI(526, 993, 991),\n    COL_TRI(523, 989, 524),\n    COL_TRI(523, 990, 989),\n    COL_TRI(524, 989, 525),\n    COL_TRI(524, 525, 521),\n    COL_TRI(521, 525, 988),\n    COL_TRI(525, 990, 988),\n    COL_TRI(525, 989, 990),\n    COL_TRI(526, 991, 527),\n    COL_TRI(527, 530, 992),\n    COL_TRI(527, 991, 530),\n    COL_TRI(526, 528, 529),\n    COL_TRI(528, 994, 529),\n    COL_TRI(529, 993, 526),\n    COL_TRI(529, 994, 993),\n    COL_TRI(526, 992, 528),\n    COL_TRI(526, 527, 992),\n    COL_TRI(528, 992, 530),\n    COL_TRI(528, 995, 994),\n    COL_TRI(528, 530, 995),\n    COL_TRI(530, 994, 995),\n    COL_TRI(530, 993, 994),\n    COL_TRI(530, 991, 993),\n    COL_TRI(537, 539, 536),\n    COL_TRI(531, 532, 996),\n    COL_TRI(532, 533, 997),\n    COL_TRI(532, 997, 996),\n    COL_TRI(533, 532, 998),\n    COL_TRI(531, 998, 532),\n    COL_TRI(531, 997, 534),\n    COL_TRI(531, 996, 997),\n    COL_TRI(534, 997, 533),\n    COL_TRI(534, 533, 535),\n    COL_TRI(535, 533, 998),\n    COL_TRI(536, 539, 999),\n    COL_TRI(536, 999, 538),\n    COL_TRI(543, 1003, 1004),\n    COL_TRI(538, 999, 1000),\n    COL_TRI(539, 1000, 999),\n    COL_TRI(538, 1000, 540),\n    COL_TRI(539, 1001, 1000),\n    COL_TRI(537, 1001, 539),\n    COL_TRI(540, 1000, 1001),\n    COL_TRI(540, 1001, 537),\n    COL_TRI(541, 1002, 542),\n    COL_TRI(542, 1002, 1003),\n    COL_TRI(542, 1003, 543),\n    COL_TRI(543, 1004, 544),\n    COL_TRI(541, 1005, 1002),\n    COL_TRI(544, 1005, 541),\n    COL_TRI(544, 1004, 1005),\n    COL_TRI(545, 573, 546),\n    COL_TRI(546, 548, 547),\n    COL_TRI(546, 547, 545),\n    COL_TRI(546, 573, 1006),\n    COL_TRI(546, 1006, 548),\n    COL_TRI(547, 1007, 545),\n    COL_TRI(548, 1008, 547),\n    COL_TRI(547, 1008, 1007),\n    COL_TRI(545, 1007, 573),\n    COL_TRI(548, 1006, 1008),\n    COL_TRI(554, 553, 1015),\n    COL_TRI(549, 1009, 1010),\n    COL_TRI(549, 1010, 1011),\n    COL_TRI(550, 549, 1011),\n    COL_TRI(551, 1012, 1010),\n    COL_TRI(551, 1010, 1009),\n    COL_TRI(550, 1011, 1013),\n    COL_TRI(552, 1012, 551),\n    COL_TRI(552, 551, 1014),\n    COL_TRI(553, 552, 1014),\n    COL_TRI(553, 1014, 1015),\n    COL_TRI(554, 550, 555),\n    COL_TRI(554, 1015, 550),\n    COL_TRI(550, 1013, 1016),\n    COL_TRI(550, 1016, 555),\n    COL_TRI(556, 560, 1020),\n    COL_TRI(554, 1017, 553),\n    COL_TRI(555, 1016, 1017),\n    COL_TRI(555, 1017, 554),\n    COL_TRI(556, 1018, 559),\n    COL_TRI(557, 1019, 556),\n    COL_TRI(556, 1019, 1018),\n    COL_TRI(558, 1018, 1019),\n    COL_TRI(559, 1018, 558),\n    COL_TRI(558, 1019, 557),\n    COL_TRI(556, 1020, 557),\n    COL_TRI(557, 1020, 561),\n    COL_TRI(560, 561, 1020),\n    COL_TRI(557, 561, 558),\n    COL_TRI(559, 560, 556),\n    COL_TRI(560, 1021, 561),\n    COL_TRI(559, 1021, 560),\n    COL_TRI(561, 1021, 559),\n    COL_TRI(558, 561, 559),\n    COL_TRI(562, 1022, 1023),\n    COL_TRI(562, 568, 1022),\n    COL_TRI(562, 563, 1024),\n    COL_TRI(562, 1023, 563),\n    COL_TRI(563, 1025, 1024),\n    COL_TRI(563, 564, 1025),\n    COL_TRI(564, 1028, 1025),\n    COL_TRI(564, 1029, 1028),\n    COL_TRI(565, 567, 566),\n    COL_TRI(566, 567, 1028),\n    COL_TRI(566, 1029, 1030),\n    COL_TRI(566, 1028, 1029),\n    COL_TRI(566, 570, 565),\n    COL_TRI(566, 1030, 570),\n    COL_TRI(567, 1031, 1028),\n    COL_TRI(568, 569, 1022),\n    COL_TRI(568, 571, 569),\n    COL_TRI(569, 571, 565),\n    COL_TRI(570, 569, 565),\n    COL_TRI(568, 1026, 571),\n    COL_TRI(568, 1027, 1026),\n    COL_TRI(571, 1032, 565),\n    COL_TRI(565, 1032, 567),\n    COL_TRI(571, 1026, 1032),\n    COL_TRI(572, 1033, 1034),\n    COL_TRI(572, 1034, 573),\n    COL_TRI(573, 1035, 1036),\n    COL_TRI(573, 1036, 572),\n    COL_TRI(574, 576, 1037),\n    COL_TRI(574, 1037, 1038),\n    COL_TRI(575, 574, 1038),\n    COL_TRI(576, 1039, 1040),\n    COL_TRI(576, 1040, 1037),\n    COL_TRI(575, 1040, 1039),\n    COL_TRI(579, 1044, 1045),\n    COL_TRI(575, 1039, 1041),\n    COL_TRI(575, 1041, 574),\n    COL_TRI(577, 1042, 1043),\n    COL_TRI(577, 1044, 1042),\n    COL_TRI(578, 577, 1043),\n    COL_TRI(579, 1042, 1044),\n    COL_TRI(582, 53, 52),\n    COL_TRI(579, 1045, 578),\n    COL_TRI(579, 578, 580),\n    COL_TRI(580, 1042, 579),\n    COL_TRI(578, 579, 1045),\n    COL_TRI(578, 580, 579),\n    COL_TRI(578, 1043, 580),\n    COL_TRI(580, 1043, 1042),\n    COL_TRI(581, 55, 54),\n    COL_TRI(581, 54, 1046),\n    COL_TRI(582, 1047, 53),\n    COL_TRI(583, 1048, 1049),\n    COL_TRI(583, 1049, 1050),\n    COL_TRI(584, 1049, 1048),\n    COL_TRI(584, 1048, 586),\n    COL_TRI(585, 1048, 583),\n    COL_TRI(585, 586, 1048),\n    COL_TRI(586, 585, 1051),\n    COL_TRI(586, 1051, 584),\n    COL_TRI(590, 1054, 1055),\n    COL_TRI(587, 1053, 1051),\n    COL_TRI(587, 1051, 585),\n    COL_TRI(588, 1053, 587),\n    COL_TRI(588, 587, 585),\n    COL_TRI(588, 585, 583),\n    COL_TRI(588, 1052, 1053),\n    COL_TRI(583, 1050, 1052),\n    COL_TRI(583, 1052, 588),\n    COL_TRI(589, 1054, 590),\n    COL_TRI(590, 1055, 591),\n    COL_TRI(594, 1060, 1059),\n    COL_TRI(589, 1056, 1054),\n    COL_TRI(591, 1055, 1057),\n    COL_TRI(591, 1057, 592),\n    COL_TRI(592, 1057, 1056),\n    COL_TRI(592, 1056, 589),\n    COL_TRI(593, 1058, 595),\n    COL_TRI(593, 1059, 1058),\n    COL_TRI(594, 1059, 593),\n    COL_TRI(600, 1062, 1063),\n    COL_TRI(595, 1058, 1061),\n    COL_TRI(595, 1061, 596),\n    COL_TRI(596, 1061, 1060),\n    COL_TRI(596, 1060, 594),\n    COL_TRI(597, 1062, 600),\n    COL_TRI(598, 1062, 597),\n    COL_TRI(597, 600, 601),\n    COL_TRI(599, 597, 601),\n    COL_TRI(599, 598, 597),\n    COL_TRI(598, 1063, 1062),\n    COL_TRI(606, 1066, 1067),\n    COL_TRI(600, 1063, 1064),\n    COL_TRI(601, 600, 1064),\n    COL_TRI(601, 1064, 599),\n    COL_TRI(602, 1065, 603),\n    COL_TRI(603, 605, 602),\n    COL_TRI(603, 604, 605),\n    COL_TRI(604, 1066, 605),\n    COL_TRI(604, 1067, 1066),\n    COL_TRI(605, 1066, 606),\n    COL_TRI(605, 606, 602),\n    COL_TRI(602, 606, 1065),\n    COL_TRI(606, 1067, 1065),\n    COL_TRI(607, 612, 608),\n    COL_TRI(608, 609, 607),\n    COL_TRI(608, 1068, 609),\n    COL_TRI(609, 1069, 607),\n    COL_TRI(607, 611, 612),\n    COL_TRI(607, 610, 611),\n    COL_TRI(610, 1070, 611),\n    COL_TRI(610, 1071, 1070),\n    COL_TRI(611, 613, 612),\n    COL_TRI(611, 1070, 613),\n    COL_TRI(612, 1072, 608),\n    COL_TRI(612, 613, 1072),\n    COL_TRI(615, 1074, 1075),\n    COL_TRI(613, 1069, 614),\n    COL_TRI(614, 1072, 613),\n    COL_TRI(614, 1073, 1072),\n    COL_TRI(608, 1073, 1068),\n    COL_TRI(608, 1072, 1073),\n    COL_TRI(613, 1071, 1069),\n    COL_TRI(613, 1070, 1071),\n    COL_TRI(609, 614, 1069),\n    COL_TRI(619, 621, 620),\n    COL_TRI(615, 1076, 1074),\n    COL_TRI(617, 1074, 1076),\n    COL_TRI(617, 1076, 1077),\n    COL_TRI(617, 616, 618),\n    COL_TRI(617, 1077, 616),\n    COL_TRI(618, 1074, 617),\n    COL_TRI(616, 1075, 618),\n    COL_TRI(618, 1075, 1074),\n    COL_TRI(616, 615, 1075),\n    COL_TRI(619, 620, 622),\n    COL_TRI(70, 510, 1082),\n    COL_TRI(620, 1078, 1079),\n    COL_TRI(621, 1078, 620),\n    COL_TRI(621, 1081, 1078),\n    COL_TRI(622, 1079, 1080),\n    COL_TRI(620, 1079, 622),\n    COL_TRI(622, 1080, 619),\n    COL_TRI(619, 1081, 621),\n    COL_TRI(619, 1080, 1081),\n    COL_TRI(65, 623, 70),\n    COL_TRI(70, 623, 510),\n    COL_TRI(508, 1082, 510),\n    COL_TRI(510, 509, 508),\n    COL_TRI_INIT(SURFACE_BURNING, 4),\n    COL_TRI(56, 57, 58),\n    COL_TRI(56, 58, 59),\n    COL_TRI(60, 61, 62),\n    COL_TRI(60, 63, 61),\n    COL_TRI_INIT(SURFACE_DEATH_PLANE, 2),\n    COL_TRI(1083, 1084, 1085),\n    COL_TRI(1083, 1085, 1086),\n    COL_TRI_INIT(SURFACE_VERY_SLIPPERY, 2),\n    COL_TRI(52, 53, 54),\n    COL_TRI(52, 54, 55),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 209),\n    COL_TRI(649, 650, 108),\n    COL_TRI(630, 629, 631),\n    COL_TRI(630, 631, 632),\n    COL_TRI(639, 638, 637),\n    COL_TRI(639, 637, 636),\n    COL_TRI(647, 646, 624),\n    COL_TRI(647, 624, 79),\n    COL_TRI(669, 661, 120),\n    COL_TRI(649, 648, 650),\n    COL_TRI(656, 74, 73),\n    COL_TRI(656, 73, 78),\n    COL_TRI(657, 118, 658),\n    COL_TRI(657, 658, 121),\n    COL_TRI(669, 120, 117),\n    COL_TRI(683, 682, 684),\n    COL_TRI(676, 670, 132),\n    COL_TRI(676, 136, 670),\n    COL_TRI(672, 671, 673),\n    COL_TRI(672, 673, 134),\n    COL_TRI(679, 678, 680),\n    COL_TRI(679, 680, 141),\n    COL_TRI(1088, 690, 149),\n    COL_TRI(683, 684, 142),\n    COL_TRI(686, 677, 139),\n    COL_TRI(686, 681, 677),\n    COL_TRI(1087, 692, 1088),\n    COL_TRI(1087, 695, 692),\n    COL_TRI(1088, 692, 690),\n    COL_TRI(161, 704, 703),\n    COL_TRI(689, 688, 691),\n    COL_TRI(689, 691, 151),\n    COL_TRI(1089, 696, 153),\n    COL_TRI(1089, 699, 696),\n    COL_TRI(148, 4, 700),\n    COL_TRI(148, 700, 156),\n    COL_TRI(161, 162, 704),\n    COL_TRI(161, 163, 162),\n    COL_TRI(161, 709, 163),\n    COL_TRI(161, 703, 705),\n    COL_TRI(161, 705, 160),\n    COL_TRI(115, 110, 95),\n    COL_TRI(115, 95, 1097),\n    COL_TRI(667, 125, 668),\n    COL_TRI(167, 171, 712),\n    COL_TRI(667, 666, 125),\n    COL_TRI(1090, 1098, 1099),\n    COL_TRI(1090, 1100, 1098),\n    COL_TRI(167, 717, 719),\n    COL_TRI(167, 168, 717),\n    COL_TRI(167, 719, 170),\n    COL_TRI(167, 712, 711),\n    COL_TRI(167, 170, 171),\n    COL_TRI(723, 174, 750),\n    COL_TRI(723, 750, 722),\n    COL_TRI(750, 174, 721),\n    COL_TRI(750, 721, 751),\n    COL_TRI(724, 751, 721),\n    COL_TRI(724, 721, 720),\n    COL_TRI(725, 727, 728),\n    COL_TRI(725, 728, 179),\n    COL_TRI(755, 753, 752),\n    COL_TRI(765, 762, 761),\n    COL_TRI(761, 216, 765),\n    COL_TRI(761, 212, 216),\n    COL_TRI(761, 759, 212),\n    COL_TRI(761, 760, 759),\n    COL_TRI(765, 763, 762),\n    COL_TRI(247, 773, 230),\n    COL_TRI(247, 774, 773),\n    COL_TRI(770, 271, 228),\n    COL_TRI(755, 776, 753),\n    COL_TRI(273, 771, 252),\n    COL_TRI(273, 226, 771),\n    COL_TRI(769, 251, 272),\n    COL_TRI(769, 272, 224),\n    COL_TRI(770, 274, 271),\n    COL_TRI(792, 790, 789),\n    COL_TRI(792, 791, 790),\n    COL_TRI(795, 797, 796),\n    COL_TRI(795, 796, 794),\n    COL_TRI(795, 794, 793),\n    COL_TRI(795, 817, 797),\n    COL_TRI(818, 819, 820),\n    COL_TRI(818, 820, 821),\n    COL_TRI(836, 840, 839),\n    COL_TRI(287, 825, 826),\n    COL_TRI(287, 289, 825),\n    COL_TRI(287, 826, 828),\n    COL_TRI(287, 828, 288),\n    COL_TRI(287, 290, 289),\n    COL_TRI(287, 832, 290),\n    COL_TRI(836, 841, 840),\n    COL_TRI(836, 295, 833),\n    COL_TRI(836, 296, 295),\n    COL_TRI(836, 839, 296),\n    COL_TRI(363, 362, 854),\n    COL_TRI(836, 833, 835),\n    COL_TRI(303, 844, 846),\n    COL_TRI(303, 846, 305),\n    COL_TRI(358, 335, 361),\n    COL_TRI(358, 336, 335),\n    COL_TRI(363, 854, 365),\n    COL_TRI(924, 920, 919),\n    COL_TRI(375, 898, 349),\n    COL_TRI(375, 897, 898),\n    COL_TRI(375, 394, 897),\n    COL_TRI(375, 904, 394),\n    COL_TRI(375, 893, 904),\n    COL_TRI(375, 349, 347),\n    COL_TRI(915, 916, 917),\n    COL_TRI(915, 917, 918),\n    COL_TRI(940, 927, 932),\n    COL_TRI(924, 919, 433),\n    COL_TRI(926, 922, 923),\n    COL_TRI(926, 923, 435),\n    COL_TRI(347, 349, 921),\n    COL_TRI(347, 921, 434),\n    COL_TRI(940, 928, 927),\n    COL_TRI(932, 445, 937),\n    COL_TRI(932, 937, 939),\n    COL_TRI(940, 932, 939),\n    COL_TRI(940, 942, 928),\n    COL_TRI(1091, 1101, 1102),\n    COL_TRI(1091, 1103, 1101),\n    COL_TRI(465, 461, 954),\n    COL_TRI(465, 954, 953),\n    COL_TRI(964, 1093, 1095),\n    COL_TRI(961, 479, 461),\n    COL_TRI(961, 461, 465),\n    COL_TRI(465, 959, 961),\n    COL_TRI(461, 479, 960),\n    COL_TRI(461, 960, 1092),\n    COL_TRI(465, 1104, 959),\n    COL_TRI(1092, 959, 1104),\n    COL_TRI(1092, 960, 959),\n    COL_TRI(475, 962, 478),\n    COL_TRI(964, 485, 1093),\n    COL_TRI(974, 977, 976),\n    COL_TRI(1093, 966, 1094),\n    COL_TRI(1093, 485, 966),\n    COL_TRI(1094, 966, 965),\n    COL_TRI(1094, 965, 1105),\n    COL_TRI(1095, 965, 964),\n    COL_TRI(1095, 1105, 965),\n    COL_TRI(971, 973, 972),\n    COL_TRI(971, 970, 973),\n    COL_TRI(511, 983, 513),\n    COL_TRI(974, 975, 977),\n    COL_TRI(981, 1106, 67),\n    COL_TRI(981, 67, 69),\n    COL_TRI(506, 507, 504),\n    COL_TRI(506, 504, 505),\n    COL_TRI(511, 984, 983),\n    COL_TRI(535, 998, 531),\n    COL_TRI(516, 985, 987),\n    COL_TRI(516, 987, 518),\n    COL_TRI(522, 990, 523),\n    COL_TRI(522, 988, 990),\n    COL_TRI(623, 65, 1106),\n    COL_TRI(623, 1106, 510),\n    COL_TRI(1007, 1008, 1006),\n    COL_TRI(535, 531, 534),\n    COL_TRI(538, 537, 536),\n    COL_TRI(538, 540, 537),\n    COL_TRI(1003, 1002, 1005),\n    COL_TRI(1003, 1005, 1004),\n    COL_TRI(1007, 1006, 573),\n    COL_TRI(569, 1030, 1029),\n    COL_TRI(1011, 553, 1017),\n    COL_TRI(1017, 1016, 1013),\n    COL_TRI(1017, 1013, 1011),\n    COL_TRI(1011, 1012, 552),\n    COL_TRI(1011, 1010, 1012),\n    COL_TRI(1011, 552, 553),\n    COL_TRI(569, 564, 563),\n    COL_TRI(569, 563, 1023),\n    COL_TRI(569, 1023, 1022),\n    COL_TRI(569, 1029, 564),\n    COL_TRI(1050, 1051, 1053),\n    COL_TRI(569, 570, 1030),\n    COL_TRI(1041, 1039, 576),\n    COL_TRI(1041, 576, 574),\n    COL_TRI(578, 1044, 577),\n    COL_TRI(578, 1045, 1044),\n    COL_TRI(1049, 1051, 1050),\n    COL_TRI(1050, 1053, 1052),\n    COL_TRI(1049, 584, 1051),\n    COL_TRI(1054, 1057, 1055),\n    COL_TRI(1054, 1056, 1057),\n    COL_TRI(1059, 1060, 1061),\n    COL_TRI(1059, 1061, 1058),\n    COL_TRI(607, 1071, 610),\n    COL_TRI(599, 1064, 1063),\n    COL_TRI(599, 1063, 598),\n    COL_TRI(603, 1065, 1067),\n    COL_TRI(603, 1067, 604),\n    COL_TRI(1068, 1073, 614),\n    COL_TRI(1068, 614, 609),\n    COL_TRI(1, 7, 1096),\n    COL_TRI(607, 1069, 1071),\n    COL_TRI(616, 1076, 615),\n    COL_TRI(616, 1077, 1076),\n    COL_TRI(1079, 1078, 1081),\n    COL_TRI(1079, 1081, 1080),\n    COL_TRI(1, 1096, 2),\n    COL_TRI(1096, 7, 6),\n    COL_TRI(1096, 6, 1107),\n    COL_TRI(6, 8, 82),\n    COL_TRI(6, 82, 1107),\n    COL_TRI_INIT(SURFACE_HORIZONTAL_WIND, 34),\n    COL_TRI_SPECIAL(10, 11, 12, 0x100),\n    COL_TRI_SPECIAL(10, 12, 13, 0x100),\n    COL_TRI_SPECIAL(14, 15, 16, 0x140),\n    COL_TRI_SPECIAL(17, 14, 16, 0x140),\n    COL_TRI_SPECIAL(17, 16, 18, 0x140),\n    COL_TRI_SPECIAL(17, 18, 19, 0x140),\n    COL_TRI_SPECIAL(20, 15, 14, 0x140),\n    COL_TRI_SPECIAL(20, 21, 15, 0x140),\n    COL_TRI_SPECIAL(22, 34, 26, 0x140),\n    COL_TRI_SPECIAL(23, 22, 26, 0x140),\n    COL_TRI_SPECIAL(22, 35, 34, 0x140),\n    COL_TRI_SPECIAL(22, 36, 35, 0x140),\n    COL_TRI_SPECIAL(22, 37, 36, 0x140),\n    COL_TRI_SPECIAL(24, 36, 37, 0x140),\n    COL_TRI_SPECIAL(25, 24, 37, 0x140),\n    COL_TRI_SPECIAL(26, 34, 24, 0x140),\n    COL_TRI_SPECIAL(25, 27, 24, 0x140),\n    COL_TRI_SPECIAL(26, 24, 27, 0x140),\n    COL_TRI_SPECIAL(27, 25, 38, 0x140),\n    COL_TRI_SPECIAL(25, 28, 38, 0x140),\n    COL_TRI_SPECIAL(23, 26, 29, 0x140),\n    COL_TRI_SPECIAL(23, 29, 39, 0x140),\n    COL_TRI_SPECIAL(33, 43, 42, 0x140),\n    COL_TRI_SPECIAL(28, 40, 38, 0x140),\n    COL_TRI_SPECIAL(28, 41, 40, 0x140),\n    COL_TRI_SPECIAL(29, 42, 39, 0x140),\n    COL_TRI_SPECIAL(29, 33, 42, 0x140),\n    COL_TRI_SPECIAL(30, 32, 41, 0x140),\n    COL_TRI_SPECIAL(31, 43, 30, 0x140),\n    COL_TRI_SPECIAL(32, 40, 41, 0x140),\n    COL_TRI_SPECIAL(33, 44, 43, 0x140),\n    COL_TRI_SPECIAL(31, 47, 46, 0x140),\n    COL_TRI_SPECIAL(31, 45, 43, 0x140),\n    COL_TRI_SPECIAL(31, 46, 45, 0x140),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(23),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_null_start,   /*pos*/  2599, -1833,  2071, /*yaw*/   64), // unused, probably an early way to set initial position\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/  1902, -1833,  1063, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_04, /*pos*/  3803, -1833,  2036, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_05, /*pos*/ -4888, -2550,  5847, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_06, /*pos*/  5324, -2038,  6155, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_07, /*pos*/  -409, -3164,  5207, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_08, /*pos*/ -4680, -1910,   296, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_08, /*pos*/ -3193, -4726,  6670, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_09, /*pos*/  6506, -1295,   762, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0A, /*pos*/ -4629,   137,  -113, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0B, /*pos*/  2639,  2724,  -622, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0C, /*pos*/  3577,  2486, -2346, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0D, /*pos*/  3554,  4276, -2346, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0D, /*pos*/   614, -1116,  3671, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0E, /*pos*/  5280,  4937,   603, /*yaw*/  128),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0F, /*pos*/ -4197,  4608, -5119, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_10, /*pos*/  2628,  -143, -1611, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_11, /*pos*/  5094,  3440,  4029, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_12, /*pos*/ -3708,  2006,   270, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_13, /*pos*/  5994,  -988,  1341, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_14, /*pos*/  3917,   624, -1133, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_15, /*pos*/ -3981,  3328, -2736, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_16, /*pos*/ -6053,  4096, -3197, /*yaw*/    0),\n    COL_END(),\n#else\n    COL_INIT(),\n    COL_VERTEX_INIT(0x454),\n    COL_VERTEX(-6677, 1443, 270),\n    COL_VERTEX(-6677, -1782, 270),\n    COL_VERTEX(-6063, -1116, 270),\n    COL_VERTEX(-6677, 1443, -343),\n    COL_VERTEX(-6677, -1782, -445),\n    COL_VERTEX(-6063, 1443, 270),\n    COL_VERTEX(-3093, 1443, 270),\n    COL_VERTEX(-2888, 1648, 270),\n    COL_VERTEX(-6063, 1648, 270),\n    COL_VERTEX(-6472, 1443, 270),\n    COL_VERTEX(4622, 2923, -2858),\n    COL_VERTEX(2881, 2872, -2858),\n    COL_VERTEX(4622, 2923, -1834),\n    COL_VERTEX(2881, 2872, -1834),\n    COL_VERTEX(1857, 2958, -2687),\n    COL_VERTEX(1857, 2958, -2004),\n    COL_VERTEX(1038, 3231, -2448),\n    COL_VERTEX(-190, 3538, -2397),\n    COL_VERTEX(-190, 3538, -2294),\n    COL_VERTEX(1653, 3128, -1834),\n    COL_VERTEX(1653, 3128, -2858),\n    COL_VERTEX(1038, 3231, -2243),\n    COL_VERTEX(2881, 3026, -1834),\n    COL_VERTEX(2881, 3026, -1629),\n    COL_VERTEX(1653, 3128, -2038),\n    COL_VERTEX(1653, 3128, -2653),\n    COL_VERTEX(5117, 3322, -1729),\n    COL_VERTEX(4622, 3077, -1834),\n    COL_VERTEX(5117, 3322, -2958),\n    COL_VERTEX(4622, 3077, -3062),\n    COL_VERTEX(5117, 3322, -2753),\n    COL_VERTEX(5117, 3322, -1934),\n    COL_VERTEX(5953, 3333, -2038),\n    COL_VERTEX(5117, 2954, -1934),\n    COL_VERTEX(5441, 3333, -2448),\n    COL_VERTEX(-7394, 2364, -445),\n    COL_VERTEX(2881, 3026, -3062),\n    COL_VERTEX(4622, 3077, -1629),\n    COL_VERTEX(4622, 3077, -2858),\n    COL_VERTEX(2881, 3026, -2858),\n    COL_VERTEX(5441, 3333, -2243),\n    COL_VERTEX(5953, 3333, -2653),\n    COL_VERTEX(5117, 2954, -2753),\n    COL_VERTEX(5646, 3333, -2243),\n    COL_VERTEX(5646, 3333, -2448),\n    COL_VERTEX(-7394, 2364, 270),\n    COL_VERTEX(-2274, 2364, 270),\n    COL_VERTEX(-2274, 2364, -445),\n    COL_VERTEX(-1509, -1280, 5438),\n    COL_VERTEX(-1304, -1270, 5438),\n    COL_VERTEX(-1304, -1280, 5438),\n    COL_VERTEX(-1509, -1270, 5438),\n    COL_VERTEX(2424, -348, 85),\n    COL_VERTEX(3089, 214, 494),\n    COL_VERTEX(3089, 214, 85),\n    COL_VERTEX(2424, -348, 494),\n    COL_VERTEX(-4339, 3098, -6604),\n    COL_VERTEX(-4032, 3507, -6604),\n    COL_VERTEX(-4339, 3507, -6604),\n    COL_VERTEX(-4032, 3098, -6604),\n    COL_VERTEX(-4339, 3098, -6450),\n    COL_VERTEX(-4032, 3098, -6655),\n    COL_VERTEX(-4339, 3098, -6655),\n    COL_VERTEX(-4032, 3098, -6450),\n    COL_VERTEX(1653, 2975, -2653),\n    COL_VERTEX(1653, 2975, -2038),\n    COL_VERTEX(975, 3083, -954),\n    COL_VERTEX(2613, 2878, -954),\n    COL_VERTEX(1180, 2878, -954),\n    COL_VERTEX(2613, 3083, -954),\n    COL_VERTEX(975, 2878, -954),\n    COL_VERTEX(2613, 3083, -340),\n    COL_VERTEX(1180, 3083, 274),\n    COL_VERTEX(975, 2878, 274),\n    COL_VERTEX(1180, 2878, -340),\n    COL_VERTEX(-6860, 3021, -2713),\n    COL_VERTEX(-4197, 3021, -2405),\n    COL_VERTEX(-4197, 3021, -2713),\n    COL_VERTEX(-6860, 3021, -2405),\n    COL_VERTEX(2987, -604, -3864),\n    COL_VERTEX(2987, -655, -3454),\n    COL_VERTEX(2987, -655, -3864),\n    COL_VERTEX(2065, 982, -1860),\n    COL_VERTEX(2065, 982, -1450),\n    COL_VERTEX(2065, 1033, -1860),\n    COL_VERTEX(3089, 1033, -1860),\n    COL_VERTEX(4011, 880, -1860),\n    COL_VERTEX(4216, 880, -1860),\n    COL_VERTEX(4216, 777, -1860),\n    COL_VERTEX(3960, 777, -1860),\n    COL_VERTEX(4011, 982, -1450),\n    COL_VERTEX(3601, 931, -1860),\n    COL_VERTEX(4011, 982, -1860),\n    COL_VERTEX(3960, 777, -1450),\n    COL_VERTEX(3243, -41, -3864),\n    COL_VERTEX(3243, 112, -3864),\n    COL_VERTEX(3089, 112, -3864),\n    COL_VERTEX(3089, -41, -3454),\n    COL_VERTEX(3089, -41, -3864),\n    COL_VERTEX(3806, -195, -3864),\n    COL_VERTEX(3806, -41, -3864),\n    COL_VERTEX(4113, -195, -3864),\n    COL_VERTEX(4113, -41, -3864),\n    COL_VERTEX(3806, -195, -3454),\n    COL_VERTEX(921, -1321, -3882),\n    COL_VERTEX(921, -1321, -2243),\n    COL_VERTEX(307, -1321, -2243),\n    COL_VERTEX(307, -1321, -3882),\n    COL_VERTEX(2719, -1321, -343),\n    COL_VERTEX(2719, -1321, 270),\n    COL_VERTEX(3538, -1321, -343),\n    COL_VERTEX(3538, -1321, 270),\n    COL_VERTEX(4113, 982, 85),\n    COL_VERTEX(3089, 982, 85),\n    COL_VERTEX(4113, 1033, 85),\n    COL_VERTEX(2782, 982, 494),\n    COL_VERTEX(2782, 982, -938),\n    COL_VERTEX(3089, 982, -938),\n    COL_VERTEX(2424, -399, 85),\n    COL_VERTEX(3089, 163, 85),\n    COL_VERTEX(3806, -604, -3864),\n    COL_VERTEX(2475, -1014, -3864),\n    COL_VERTEX(3396, -1014, -3864),\n    COL_VERTEX(2475, -1065, -3454),\n    COL_VERTEX(4735, -937, 6257),\n    COL_VERTEX(4735, -937, 6871),\n    COL_VERTEX(4121, -937, 6257),\n    COL_VERTEX(4121, -732, 6871),\n    COL_VERTEX(4838, -1935, 6257),\n    COL_VERTEX(4838, -1935, 5950),\n    COL_VERTEX(4624, 3675, 2919),\n    COL_VERTEX(3959, 3675, 3584),\n    COL_VERTEX(4527, 2999, 3819),\n    COL_VERTEX(4624, 3819, 5189),\n    COL_VERTEX(6230, 3675, 3584),\n    COL_VERTEX(6230, 3675, 4524),\n    COL_VERTEX(5565, 3675, 2919),\n    COL_VERTEX(5565, 3819, 2919),\n    COL_VERTEX(4624, 3819, 2919),\n    COL_VERTEX(5565, 3819, 5189),\n    COL_VERTEX(3455, -1935, 5387),\n    COL_VERTEX(3148, -1935, 5387),\n    COL_VERTEX(3353, -1731, 5489),\n    COL_VERTEX(3250, -1731, 5591),\n    COL_VERTEX(3404, -1935, 5745),\n    COL_VERTEX(3199, -1935, 5745),\n    COL_VERTEX(3303, -937, 6871),\n    COL_VERTEX(3712, -732, 7076),\n    COL_VERTEX(3712, -937, 6052),\n    COL_VERTEX(4838, -2089, 6257),\n    COL_VERTEX(3609, -2089, 6257),\n    COL_VERTEX(3609, -2089, 6871),\n    COL_VERTEX(4838, -2089, 6871),\n    COL_VERTEX(4838, -2396, 7179),\n    COL_VERTEX(7602, -2396, 7179),\n    COL_VERTEX(4838, -2396, 5950),\n    COL_VERTEX(7602, -2396, 5950),\n    COL_VERTEX(-1040, 1690, 133),\n    COL_VERTEX(-630, 1690, -480),\n    COL_VERTEX(-630, 922, -480),\n    COL_VERTEX(-1040, 922, -480),\n    COL_VERTEX(-630, 1690, 133),\n    COL_VERTEX(-1626, 3120, 119),\n    COL_VERTEX(-1626, 1843, 119),\n    COL_VERTEX(-2036, 3120, 119),\n    COL_VERTEX(-2036, 3120, -494),\n    COL_VERTEX(-1626, 3120, -494),\n    COL_VERTEX(1921, 2612, 279),\n    COL_VERTEX(1998, 2714, -130),\n    COL_VERTEX(2075, 2509, -130),\n    COL_VERTEX(2075, 2612, -130),\n    COL_VERTEX(1921, 2509, -130),\n    COL_VERTEX(2974, 2314, -124),\n    COL_VERTEX(2974, 2570, -124),\n    COL_VERTEX(2820, 2570, -124),\n    COL_VERTEX(2820, 2314, 285),\n    COL_VERTEX(2820, 2314, -124),\n    COL_VERTEX(3844, 2314, -124),\n    COL_VERTEX(3844, 2519, -124),\n    COL_VERTEX(3998, 2314, -124),\n    COL_VERTEX(3998, 2519, -124),\n    COL_VERTEX(3844, 2314, 285),\n    COL_VERTEX(3332, 2468, -124),\n    COL_VERTEX(3332, 2314, -124),\n    COL_VERTEX(3486, 2314, -124),\n    COL_VERTEX(3486, 2468, -124),\n    COL_VERTEX(3332, 2314, 285),\n    COL_VERTEX(2357, 3109, -1773),\n    COL_VERTEX(2357, 3109, -852),\n    COL_VERTEX(2204, 3083, -1773),\n    COL_VERTEX(2204, 3109, -1773),\n    COL_VERTEX(2204, 3109, -852),\n    COL_VERTEX(1180, 3083, -340),\n    COL_VERTEX(2613, 2878, -340),\n    COL_VERTEX(-8049, 3891, -4426),\n    COL_VERTEX(-8049, 3891, -3351),\n    COL_VERTEX(-7435, 3891, -4426),\n    COL_VERTEX(-7435, 3891, -3351),\n    COL_VERTEX(-7173, 3584, -2387),\n    COL_VERTEX(-6292, 3584, -1770),\n    COL_VERTEX(-6821, 3584, -2890),\n    COL_VERTEX(-5940, 3584, -2273),\n    COL_VERTEX(5646, -2038, 2241),\n    COL_VERTEX(5646, -2038, 1831),\n    COL_VERTEX(5031, -2038, 2241),\n    COL_VERTEX(5031, -2038, 1831),\n    COL_VERTEX(3247, 4225, -2653),\n    COL_VERTEX(3861, 4225, -2038),\n    COL_VERTEX(3861, 4430, -2038),\n    COL_VERTEX(3247, 4430, -2038),\n    COL_VERTEX(3247, 4430, -2653),\n    COL_VERTEX(3452, 4245, -2243),\n    COL_VERTEX(3247, 4245, -2038),\n    COL_VERTEX(3452, 4245, -2448),\n    COL_VERTEX(3656, 4245, -2243),\n    COL_VERTEX(3861, 4245, -2038),\n    COL_VERTEX(3247, 4245, -2653),\n    COL_VERTEX(3861, 4245, -2653),\n    COL_VERTEX(3656, 4276, -2448),\n    COL_VERTEX(921, -1116, 3364),\n    COL_VERTEX(307, -1116, 3364),\n    COL_VERTEX(921, -973, 3354),\n    COL_VERTEX(921, -963, 3364),\n    COL_VERTEX(307, -963, 3364),\n    COL_VERTEX(307, -973, 3354),\n    COL_VERTEX(716, -1116, 3569),\n    COL_VERTEX(512, -1147, 3569),\n    COL_VERTEX(307, -1147, 3364),\n    COL_VERTEX(921, -1147, 3364),\n    COL_VERTEX(716, -1147, 3774),\n    COL_VERTEX(512, -1147, 3774),\n    COL_VERTEX(307, -1147, 3979),\n    COL_VERTEX(921, -1147, 3979),\n    COL_VERTEX(307, -1167, 3364),\n    COL_VERTEX(307, -963, 3979),\n    COL_VERTEX(921, -963, 3979),\n    COL_VERTEX(921, -1167, 3979),\n    COL_VERTEX(307, -1321, 2135),\n    COL_VERTEX(307, -1321, 3364),\n    COL_VERTEX(921, -1321, 2135),\n    COL_VERTEX(4212, -1946, 2241),\n    COL_VERTEX(3393, -1946, 2241),\n    COL_VERTEX(4212, -1720, 1831),\n    COL_VERTEX(-2661, 3072, -4044),\n    COL_VERTEX(-2661, 4198, -5324),\n    COL_VERTEX(-2661, 5939, -4044),\n    COL_VERTEX(-3071, 6246, -6245),\n    COL_VERTEX(-2661, 4198, -5733),\n    COL_VERTEX(-2661, 3994, -5938),\n    COL_VERTEX(-2661, 5939, -6194),\n    COL_VERTEX(-2661, 3072, -6194),\n    COL_VERTEX(-2661, 3379, -5938),\n    COL_VERTEX(-5426, 3072, -3583),\n    COL_VERTEX(-5426, 5939, -3583),\n    COL_VERTEX(-4402, 4198, -3583),\n    COL_VERTEX(-3993, 4198, -3583),\n    COL_VERTEX(-3071, 6246, -3993),\n    COL_VERTEX(-5324, 6246, -3993),\n    COL_VERTEX(-3788, 3994, -3583),\n    COL_VERTEX(-2969, 5939, -3583),\n    COL_VERTEX(-3788, 3379, -3583),\n    COL_VERTEX(-5733, 5325, -5017),\n    COL_VERTEX(-5733, 5325, -5426),\n    COL_VERTEX(-5733, 5939, -6245),\n    COL_VERTEX(-5324, 6246, -6245),\n    COL_VERTEX(-5733, 3072, -6245),\n    COL_VERTEX(-5733, 5120, -4812),\n    COL_VERTEX(-5733, 4506, -4812),\n    COL_VERTEX(-5733, 5939, -3993),\n    COL_VERTEX(-2969, 3072, -6655),\n    COL_VERTEX(-2989, 3072, -6512),\n    COL_VERTEX(-2969, 5939, -6655),\n    COL_VERTEX(-2989, 5939, -6512),\n    COL_VERTEX(-5590, 3072, -3972),\n    COL_VERTEX(-5406, 3072, -3726),\n    COL_VERTEX(-2989, 5939, -3726),\n    COL_VERTEX(-2805, 5939, -3972),\n    COL_VERTEX(-5406, 5939, -6512),\n    COL_VERTEX(-5426, 5939, -6655),\n    COL_VERTEX(-5426, 3072, -6655),\n    COL_VERTEX(-4262, 5939, -6655),\n    COL_VERTEX(-4262, 3686, -6655),\n    COL_VERTEX(-4109, 5939, -6655),\n    COL_VERTEX(-4262, 3686, -6501),\n    COL_VERTEX(-3725, 3072, -6655),\n    COL_VERTEX(-4646, 3072, -6348),\n    COL_VERTEX(-3827, 3482, -6450),\n    COL_VERTEX(-4032, 3686, -6450),\n    COL_VERTEX(-4032, 3686, -6655),\n    COL_VERTEX(-4339, 3686, -6655),\n    COL_VERTEX(-4237, 3430, -6450),\n    COL_VERTEX(-4237, 3430, -6655),\n    COL_VERTEX(-4134, 3430, -6655),\n    COL_VERTEX(-4032, 3328, -6450),\n    COL_VERTEX(-4032, 3328, -6655),\n    COL_VERTEX(-4544, 3482, -6655),\n    COL_VERTEX(-4032, 3123, -6450),\n    COL_VERTEX(-3827, 3482, -6655),\n    COL_VERTEX(-4544, 3123, -6655),\n    COL_VERTEX(-4339, 3328, -6450),\n    COL_VERTEX(-4032, 3072, -6655),\n    COL_VERTEX(-4339, 3328, -6655),\n    COL_VERTEX(-4607, 3379, -3839),\n    COL_VERTEX(-4607, 3072, -3583),\n    COL_VERTEX(-3788, 3072, -4351),\n    COL_VERTEX(-4607, 3174, -4351),\n    COL_VERTEX(-4607, 3277, -4095),\n    COL_VERTEX(-3788, 3072, -3583),\n    COL_VERTEX(-3071, 3068, -4402),\n    COL_VERTEX(-3583, 3068, -4402),\n    COL_VERTEX(-3583, 3068, -5733),\n    COL_VERTEX(-3071, 3068, -5733),\n    COL_VERTEX(-2457, 5939, -6143),\n    COL_VERTEX(-2880, 7203, -6570),\n    COL_VERTEX(-3071, 6451, -6245),\n    COL_VERTEX(-2230, 5939, -6637),\n    COL_VERTEX(-2486, 2831, -6138),\n    COL_VERTEX(-3071, 5939, -6860),\n    COL_VERTEX(-5324, 6451, -6245),\n    COL_VERTEX(-4607, 6451, -5426),\n    COL_VERTEX(-3788, 6451, -4812),\n    COL_VERTEX(-5847, 2838, -7037),\n    COL_VERTEX(-6165, 5939, -6637),\n    COL_VERTEX(-5938, 5939, -6143),\n    COL_VERTEX(-5817, 5939, -7042),\n    COL_VERTEX(-5324, 5939, -6860),\n    COL_VERTEX(-5515, 7203, -3668),\n    COL_VERTEX(-5938, 5939, -4095),\n    COL_VERTEX(-5324, 6451, -3993),\n    COL_VERTEX(-3788, 6246, -5426),\n    COL_VERTEX(-4607, 6246, -4812),\n    COL_VERTEX(-3788, 6246, -4812),\n    COL_VERTEX(-2577, 5939, -3196),\n    COL_VERTEX(-2230, 5939, -3601),\n    COL_VERTEX(-3071, 6451, -3993),\n    COL_VERTEX(-3071, 5939, -3378),\n    COL_VERTEX(-4607, 6246, -5426),\n    COL_VERTEX(-3071, 2867, -6860),\n    COL_VERTEX(-5938, 2867, -4095),\n    COL_VERTEX(-5938, 2970, -3378),\n    COL_VERTEX(-5053, 3328, -3086),\n    COL_VERTEX(-5068, 3328, -3378),\n    COL_VERTEX(-3890, 3072, -2815),\n    COL_VERTEX(-3552, 2970, -3378),\n    COL_VERTEX(-3788, 3482, -2713),\n    COL_VERTEX(-3788, 3328, -2713),\n    COL_VERTEX(-3342, 3328, -3086),\n    COL_VERTEX(-3327, 3328, -3378),\n    COL_VERTEX(-4607, 3328, -2713),\n    COL_VERTEX(-3788, 3381, -2764),\n    COL_VERTEX(-3788, 3379, -2713),\n    COL_VERTEX(-4610, 3482, -2766),\n    COL_VERTEX(-5053, 3482, -3086),\n    COL_VERTEX(-3788, 3482, -2764),\n    COL_VERTEX(-3378, 3482, -3378),\n    COL_VERTEX(-3378, 3482, -3122),\n    COL_VERTEX(-5324, 2867, -3378),\n    COL_VERTEX(-6165, 2867, -3601),\n    COL_VERTEX(-5324, 2867, -6860),\n    COL_VERTEX(-5938, 2867, -6143),\n    COL_VERTEX(-2457, 3994, -5119),\n    COL_VERTEX(-2457, 4198, -5324),\n    COL_VERTEX(-2457, 5939, -4095),\n    COL_VERTEX(-2457, 2867, -4095),\n    COL_VERTEX(-2457, 3379, -5119),\n    COL_VERTEX(-2457, 3379, -5938),\n    COL_VERTEX(-3071, 2867, -3378),\n    COL_VERTEX(-2457, 4198, -5733),\n    COL_VERTEX(-5324, 5939, -3378),\n    COL_VERTEX(-5817, 5939, -3196),\n    COL_VERTEX(-5017, 3482, -3378),\n    COL_VERTEX(-5017, 3379, -3378),\n    COL_VERTEX(-4607, 3482, -2764),\n    COL_VERTEX(-5017, 3482, -3122),\n    COL_VERTEX(-5938, 4506, -5631),\n    COL_VERTEX(-5733, 4506, -5631),\n    COL_VERTEX(-2661, 3379, -5119),\n    COL_VERTEX(-4607, 3379, -3583),\n    COL_VERTEX(-4607, 3379, -3378),\n    COL_VERTEX(1653, 2616, -2755),\n    COL_VERTEX(1857, 2104, -2346),\n    COL_VERTEX(1038, 3026, -2346),\n    COL_VERTEX(1653, 2616, -1936),\n    COL_VERTEX(2881, 2514, -1629),\n    COL_VERTEX(2881, 2514, -3062),\n    COL_VERTEX(5237, 2002, -2346),\n    COL_VERTEX(5117, 2657, -2958),\n    COL_VERTEX(5117, 2606, -1729),\n    COL_VERTEX(4139, 2568, -1627),\n    COL_VERTEX(4417, 1695, -2346),\n    COL_VERTEX(2881, 1695, -2346),\n    COL_VERTEX(5646, 2821, -2448),\n    COL_VERTEX(6618, -858, -836),\n    COL_VERTEX(6874, -858, -477),\n    COL_VERTEX(6721, -1012, -631),\n    COL_VERTEX(6107, -1219, 1831),\n    COL_VERTEX(6260, -1219, 1831),\n    COL_VERTEX(6260, -1372, 1831),\n    COL_VERTEX(6107, -1372, 1831),\n    COL_VERTEX(6107, -1372, 2241),\n    COL_VERTEX(6925, -858, -836),\n    COL_VERTEX(6823, -653, -733),\n    COL_VERTEX(6721, -653, -631),\n    COL_VERTEX(6669, -858, -477),\n    COL_VERTEX(7084, -1295, 1094),\n    COL_VERTEX(6778, -1091, 1674),\n    COL_VERTEX(6199, -1091, 1674),\n    COL_VERTEX(5889, -1295, 660),\n    COL_VERTEX(7084, -1295, 660),\n    COL_VERTEX(-6009, -4598, 7054),\n    COL_VERTEX(-5600, -4598, 7259),\n    COL_VERTEX(-5600, -4803, 5928),\n    COL_VERTEX(-5600, -4803, 7259),\n    COL_VERTEX(-787, -4803, 7259),\n    COL_VERTEX(-377, -4803, 7054),\n    COL_VERTEX(-787, -4598, 5928),\n    COL_VERTEX(-5600, -4598, 5928),\n    COL_VERTEX(332, -1935, 6257),\n    COL_VERTEX(1254, -1935, 6257),\n    COL_VERTEX(844, -1526, 6257),\n    COL_VERTEX(1254, -1935, 6871),\n    COL_VERTEX(742, -1526, 6257),\n    COL_VERTEX(921, -3267, 6129),\n    COL_VERTEX(921, -3676, 6129),\n    COL_VERTEX(921, -3267, 5207),\n    COL_VERTEX(921, -2857, 3364),\n    COL_VERTEX(921, -3062, 4286),\n    COL_VERTEX(921, -3676, 3364),\n    COL_VERTEX(716, -3553, 6231),\n    COL_VERTEX(563, -3471, 6231),\n    COL_VERTEX(665, -3471, 6231),\n    COL_VERTEX(-377, -4700, 6440),\n    COL_VERTEX(825, -4700, 6440),\n    COL_VERTEX(825, -4700, 7566),\n    COL_VERTEX(415, -4700, 7566),\n    COL_VERTEX(415, -4700, 6747),\n    COL_VERTEX(665, -3471, 6887),\n    COL_VERTEX(563, -3471, 6989),\n    COL_VERTEX(512, -3553, 6887),\n    COL_VERTEX(563, -3635, 6887),\n    COL_VERTEX(614, -3635, 6989),\n    COL_VERTEX(665, -3635, 6887),\n    COL_VERTEX(-358, -3625, 6871),\n    COL_VERTEX(-358, -3625, 6257),\n    COL_VERTEX(-1126, -3625, 6257),\n    COL_VERTEX(-1126, -3625, 6871),\n    COL_VERTEX(921, -3062, 5207),\n    COL_VERTEX(921, -2857, 4286),\n    COL_VERTEX(307, -2857, 3364),\n    COL_VERTEX(307, -3062, 4286),\n    COL_VERTEX(-1202, -1321, 4619),\n    COL_VERTEX(-2482, -1321, 4619),\n    COL_VERTEX(-1202, -2140, 6257),\n    COL_VERTEX(-1816, -2140, 6257),\n    COL_VERTEX(-1816, -1935, 6257),\n    COL_VERTEX(-1304, -1412, 5603),\n    COL_VERTEX(-1509, -1238, 5603),\n    COL_VERTEX(-1509, -1412, 5603),\n    COL_VERTEX(-1304, -1248, 5398),\n    COL_VERTEX(-1714, -1658, 5910),\n    COL_VERTEX(-1509, -1658, 5910),\n    COL_VERTEX(-1714, -1494, 5910),\n    COL_VERTEX(-1509, -1494, 5705),\n    COL_VERTEX(-1304, -1903, 6217),\n    COL_VERTEX(-1509, -1903, 6217),\n    COL_VERTEX(-1509, -1750, 6217),\n    COL_VERTEX(-1304, -1750, 6025),\n    COL_VERTEX(-1304, -1782, 6065),\n    COL_VERTEX(-2482, -1321, 5233),\n    COL_VERTEX(-4991, -1116, 3851),\n    COL_VERTEX(-4888, -911, 3953),\n    COL_VERTEX(-4888, -911, 4055),\n    COL_VERTEX(-4939, -1116, 4209),\n    COL_VERTEX(-4735, -1116, 4209),\n    COL_VERTEX(-4888, -1270, 4055),\n    COL_VERTEX(-4786, -911, 3953),\n    COL_VERTEX(-4786, -911, 4055),\n    COL_VERTEX(-690, -1935, 6257),\n    COL_VERTEX(-690, -2140, 6871),\n    COL_VERTEX(-1816, -2140, 6871),\n    COL_VERTEX(307, -3267, 5207),\n    COL_VERTEX(307, -3676, 6129),\n    COL_VERTEX(-6269, -1321, 5233),\n    COL_VERTEX(-5451, -1321, 4619),\n    COL_VERTEX(-5860, -1321, 4414),\n    COL_VERTEX(-5451, -1116, 5233),\n    COL_VERTEX(-5860, -1116, 5438),\n    COL_VERTEX(-4632, -1321, 4619),\n    COL_VERTEX(-4632, -1321, 5233),\n    COL_VERTEX(-4887, -1935, 6257),\n    COL_VERTEX(-4887, -2140, 6871),\n    COL_VERTEX(-5809, -2140, 6257),\n    COL_VERTEX(-5809, -2140, 6871),\n    COL_VERTEX(-1816, -1321, 5233),\n    COL_VERTEX(-4068, -3625, 6257),\n    COL_VERTEX(-3709, -2755, 6871),\n    COL_VERTEX(-3300, -3625, 6871),\n    COL_VERTEX(-3300, -3625, 6257),\n    COL_VERTEX(-4068, -3625, 6871),\n    COL_VERTEX(-3865, -3558, 6887),\n    COL_VERTEX(-5962, -3456, 6887),\n    COL_VERTEX(-6013, -3558, 6989),\n    COL_VERTEX(-5962, -3456, 6231),\n    COL_VERTEX(-3968, -3558, 6129),\n    COL_VERTEX(-6065, -3558, 6231),\n    COL_VERTEX(-6013, -2893, 6989),\n    COL_VERTEX(-6065, -2893, 6887),\n    COL_VERTEX(-5962, -2893, 6887),\n    COL_VERTEX(-6065, -2893, 6231),\n    COL_VERTEX(-6013, -2893, 6129),\n    COL_VERTEX(-5962, -2893, 6231),\n    COL_VERTEX(-5962, -2729, 6231),\n    COL_VERTEX(-6065, -2729, 6231),\n    COL_VERTEX(-5911, -2811, 6231),\n    COL_VERTEX(-6065, -2893, 6129),\n    COL_VERTEX(-6065, -2729, 6989),\n    COL_VERTEX(-5962, -2729, 6887),\n    COL_VERTEX(-6116, -2811, 6887),\n    COL_VERTEX(-5962, -1935, 5489),\n    COL_VERTEX(-5655, -1935, 5489),\n    COL_VERTEX(-5757, -1731, 5591),\n    COL_VERTEX(-5706, -1935, 5847),\n    COL_VERTEX(-5860, -1731, 5694),\n    COL_VERTEX(-5911, -1935, 5847),\n    COL_VERTEX(3393, -2089, 2359),\n    COL_VERTEX(2886, -1833, 2866),\n    COL_VERTEX(2307, -1833, 2866),\n    COL_VERTEX(1800, -2089, 1780),\n    COL_VERTEX(2307, -1833, 1273),\n    COL_VERTEX(2886, -1833, 1273),\n    COL_VERTEX(3393, -2089, 1780),\n    COL_VERTEX(-6370, -1782, -343),\n    COL_VERTEX(-3093, -1782, -445),\n    COL_VERTEX(-3093, -1116, -343),\n    COL_VERTEX(-3605, -860, -343),\n    COL_VERTEX(-4322, -860, -343),\n    COL_VERTEX(-4322, -860, 270),\n    COL_VERTEX(-3605, -707, -343),\n    COL_VERTEX(-2786, -451, 270),\n    COL_VERTEX(-3298, -297, 270),\n    COL_VERTEX(-3605, -451, -343),\n    COL_VERTEX(-2786, -297, -445),\n    COL_VERTEX(-6063, -1116, -343),\n    COL_VERTEX(-3093, 1443, -343),\n    COL_VERTEX(-7087, -1782, 885),\n    COL_VERTEX(-7496, -1782, 680),\n    COL_VERTEX(-7087, -1987, -445),\n    COL_VERTEX(-7087, -1987, 885),\n    COL_VERTEX(-2274, -1987, 885),\n    COL_VERTEX(-1864, -1987, 680),\n    COL_VERTEX(-2274, -1782, -445),\n    COL_VERTEX(-7087, -1782, -445),\n    COL_VERTEX(-5448, -195, -343),\n    COL_VERTEX(-6063, -195, 270),\n    COL_VERTEX(-5653, 931, -343),\n    COL_VERTEX(-4629, -1782, 270),\n    COL_VERTEX(-4629, -1782, -343),\n    COL_VERTEX(-5039, 521, 270),\n    COL_VERTEX(-5039, 521, -343),\n    COL_VERTEX(-4936, 521, -343),\n    COL_VERTEX(-4936, 726, -343),\n    COL_VERTEX(-3093, 316, 270),\n    COL_VERTEX(-3298, -297, -343),\n    COL_VERTEX(-3298, -451, 270),\n    COL_VERTEX(-3298, -758, -343),\n    COL_VERTEX(-3093, -758, -343),\n    COL_VERTEX(-3912, -41, 270),\n    COL_VERTEX(-4117, 112, 270),\n    COL_VERTEX(-4117, -707, 270),\n    COL_VERTEX(-3605, -41, -343),\n    COL_VERTEX(-3912, -41, -343),\n    COL_VERTEX(-3605, 112, -343),\n    COL_VERTEX(-4117, -143, -343),\n    COL_VERTEX(-4117, -143, 270),\n    COL_VERTEX(-4322, -297, -343),\n    COL_VERTEX(-4117, -297, -343),\n    COL_VERTEX(-4117, -707, -343),\n    COL_VERTEX(-4629, 419, -343),\n    COL_VERTEX(-4629, 572, 270),\n    COL_VERTEX(-3810, 419, 270),\n    COL_VERTEX(-3810, 419, -343),\n    COL_VERTEX(-3810, 572, -343),\n    COL_VERTEX(-4220, 982, -343),\n    COL_VERTEX(-4424, 572, -343),\n    COL_VERTEX(-5141, -195, -343),\n    COL_VERTEX(-4629, -195, -343),\n    COL_VERTEX(-5141, -195, 270),\n    COL_VERTEX(-4629, 9, -343),\n    COL_VERTEX(-4834, 112, -343),\n    COL_VERTEX(-4936, 214, -343),\n    COL_VERTEX(-7394, -1116, -445),\n    COL_VERTEX(-2479, 2160, 270),\n    COL_VERTEX(-7189, -1116, 270),\n    COL_VERTEX(-7189, 2160, -343),\n    COL_VERTEX(-2479, 2160, -343),\n    COL_VERTEX(-2479, 1648, -343),\n    COL_VERTEX(-5653, -1116, -343),\n    COL_VERTEX(-4527, -655, -343),\n    COL_VERTEX(-6063, -655, 270),\n    COL_VERTEX(-4527, -502, -343),\n    COL_VERTEX(-5448, 214, -343),\n    COL_VERTEX(-3093, 726, -343),\n    COL_VERTEX(-2888, 726, -445),\n    COL_VERTEX(-2888, 1648, -445),\n    COL_VERTEX(-6677, -1116, -445),\n    COL_VERTEX(-3093, -297, -445),\n    COL_VERTEX(-2888, 1648, -343),\n    COL_VERTEX(-6677, -1116, -343),\n    COL_VERTEX(-2274, 1648, -445),\n    COL_VERTEX(-1864, -1321, -343),\n    COL_VERTEX(-1864, -1321, 270),\n    COL_VERTEX(-1455, -1321, 270),\n    COL_VERTEX(-1455, -1321, -343),\n    COL_VERTEX(-2479, -1321, -343),\n    COL_VERTEX(-2274, -1321, -343),\n    COL_VERTEX(-2274, -1321, 270),\n    COL_VERTEX(-2479, -1321, 270),\n    COL_VERTEX(975, 3083, 274),\n    COL_VERTEX(1180, 2878, 274),\n    COL_VERTEX(-4197, 3123, -2405),\n    COL_VERTEX(-6860, 3123, -2405),\n    COL_VERTEX(-6860, 3123, -2713),\n    COL_VERTEX(-4197, 3123, -2713),\n    COL_VERTEX(2987, -604, -3454),\n    COL_VERTEX(3806, -655, -3454),\n    COL_VERTEX(3806, -604, -3454),\n    COL_VERTEX(3806, -655, -3864),\n    COL_VERTEX(3089, 982, -1450),\n    COL_VERTEX(3089, 982, -1860),\n    COL_VERTEX(3089, 1033, -1450),\n    COL_VERTEX(2065, 1033, -1450),\n    COL_VERTEX(4216, 880, -1450),\n    COL_VERTEX(4216, 777, -1450),\n    COL_VERTEX(3601, 931, -1450),\n    COL_VERTEX(3601, 982, -1450),\n    COL_VERTEX(3601, 982, -1860),\n    COL_VERTEX(4011, 880, -1450),\n    COL_VERTEX(3243, -41, -3454),\n    COL_VERTEX(3243, 112, -3454),\n    COL_VERTEX(3089, 112, -3454),\n    COL_VERTEX(3806, -41, -3454),\n    COL_VERTEX(4113, -195, -3454),\n    COL_VERTEX(4113, -41, -3454),\n    COL_VERTEX(921, -1116, -2243),\n    COL_VERTEX(307, -1116, -2243),\n    COL_VERTEX(307, -1116, -3882),\n    COL_VERTEX(921, -1116, -3882),\n    COL_VERTEX(3538, -1116, -343),\n    COL_VERTEX(2719, -1116, -343),\n    COL_VERTEX(3538, -1116, 270),\n    COL_VERTEX(2719, -1116, 270),\n    COL_VERTEX(3089, 1033, 85),\n    COL_VERTEX(4113, 982, 494),\n    COL_VERTEX(2782, 1033, 494),\n    COL_VERTEX(2782, 1033, -938),\n    COL_VERTEX(4113, 1033, 494),\n    COL_VERTEX(3089, 1033, -938),\n    COL_VERTEX(2424, -399, 494),\n    COL_VERTEX(3089, 163, 494),\n    COL_VERTEX(3396, -1065, -3864),\n    COL_VERTEX(3396, -1065, -3454),\n    COL_VERTEX(3396, -1014, -3454),\n    COL_VERTEX(2475, -1014, -3454),\n    COL_VERTEX(2475, -1065, -3864),\n    COL_VERTEX(4940, -732, 6871),\n    COL_VERTEX(4121, -937, 6871),\n    COL_VERTEX(4940, -732, 6257),\n    COL_VERTEX(4121, -732, 6257),\n    COL_VERTEX(3712, -732, 6052),\n    COL_VERTEX(3712, -937, 7076),\n    COL_VERTEX(4838, -2038, 5950),\n    COL_VERTEX(4838, -2038, 6257),\n    COL_VERTEX(3303, -732, 6257),\n    COL_VERTEX(3303, -937, 6257),\n    COL_VERTEX(4735, -1935, 6257),\n    COL_VERTEX(4735, -1935, 5950),\n    COL_VERTEX(4860, 2999, 3486),\n    COL_VERTEX(3959, 3675, 4524),\n    COL_VERTEX(4527, 2999, 4289),\n    COL_VERTEX(4624, 3675, 5189),\n    COL_VERTEX(3959, 3819, 4524),\n    COL_VERTEX(3959, 3819, 3584),\n    COL_VERTEX(5330, 2999, 3486),\n    COL_VERTEX(5662, 2999, 3819),\n    COL_VERTEX(6230, 3819, 3584),\n    COL_VERTEX(6230, 3819, 4524),\n    COL_VERTEX(5565, 3675, 5189),\n    COL_VERTEX(3353, -1731, 5591),\n    COL_VERTEX(3250, -1731, 5489),\n    COL_VERTEX(3353, -2089, 5591),\n    COL_VERTEX(3250, -2089, 5591),\n    COL_VERTEX(3303, -732, 6871),\n    COL_VERTEX(3609, -1935, 6257),\n    COL_VERTEX(3609, -1935, 6871),\n    COL_VERTEX(4838, -1935, 6871),\n    COL_VERTEX(4838, -2243, 5950),\n    COL_VERTEX(4838, -2243, 7179),\n    COL_VERTEX(7602, -2243, 5950),\n    COL_VERTEX(7602, -2243, 7179),\n    COL_VERTEX(-630, 922, 133),\n    COL_VERTEX(-1040, 922, 133),\n    COL_VERTEX(-1040, 1690, -480),\n    COL_VERTEX(-1626, 1843, -494),\n    COL_VERTEX(-2036, 1843, -494),\n    COL_VERTEX(-2036, 1843, 119),\n    COL_VERTEX(2075, 2612, 279),\n    COL_VERTEX(1998, 2714, 279),\n    COL_VERTEX(2075, 2509, 279),\n    COL_VERTEX(1921, 2612, -130),\n    COL_VERTEX(1921, 2509, 279),\n    COL_VERTEX(2974, 2314, 285),\n    COL_VERTEX(2974, 2570, 285),\n    COL_VERTEX(2820, 2570, 285),\n    COL_VERTEX(3844, 2519, 285),\n    COL_VERTEX(3998, 2314, 285),\n    COL_VERTEX(3998, 2519, 285),\n    COL_VERTEX(3332, 2468, 285),\n    COL_VERTEX(3486, 2314, 285),\n    COL_VERTEX(3486, 2468, 285),\n    COL_VERTEX(2357, 3083, -1773),\n    COL_VERTEX(2357, 3083, -852),\n    COL_VERTEX(2204, 3083, -852),\n    COL_VERTEX(-8049, 4352, -4426),\n    COL_VERTEX(-7435, 4352, -4426),\n    COL_VERTEX(-7435, 4352, -3351),\n    COL_VERTEX(-8049, 4352, -3351),\n    COL_VERTEX(-6821, 3942, -2890),\n    COL_VERTEX(-7173, 3942, -2387),\n    COL_VERTEX(-5940, 3942, -2273),\n    COL_VERTEX(-6292, 3942, -1770),\n    COL_VERTEX(5031, -1884, 2241),\n    COL_VERTEX(5646, -1884, 2241),\n    COL_VERTEX(5031, -1884, 1831),\n    COL_VERTEX(5646, -1884, 1831),\n    COL_VERTEX(3861, 4430, -2653),\n    COL_VERTEX(3861, 4225, -2653),\n    COL_VERTEX(3247, 4225, -2038),\n    COL_VERTEX(3452, 4276, -2243),\n    COL_VERTEX(3656, 4245, -2448),\n    COL_VERTEX(3656, 4276, -2243),\n    COL_VERTEX(3452, 4276, -2448),\n    COL_VERTEX(921, -1116, 3354),\n    COL_VERTEX(307, -1116, 3354),\n    COL_VERTEX(512, -1116, 3569),\n    COL_VERTEX(716, -1147, 3569),\n    COL_VERTEX(512, -1116, 3774),\n    COL_VERTEX(716, -1116, 3774),\n    COL_VERTEX(307, -1167, 3979),\n    COL_VERTEX(921, -1167, 3364),\n    COL_VERTEX(307, -1116, 2135),\n    COL_VERTEX(921, -1116, 2135),\n    COL_VERTEX(921, -1321, 3364),\n    COL_VERTEX(4212, -1720, 2241),\n    COL_VERTEX(3396, -1716, 2241),\n    COL_VERTEX(3393, -1946, 1831),\n    COL_VERTEX(4212, -1946, 1831),\n    COL_VERTEX(3396, -1716, 1831),\n    COL_VERTEX(-2805, 3072, -3972),\n    COL_VERTEX(-2661, 3994, -5119),\n    COL_VERTEX(-2457, 3994, -5938),\n    COL_VERTEX(-2805, 3072, -6266),\n    COL_VERTEX(-2805, 5939, -6266),\n    COL_VERTEX(-5406, 5939, -3726),\n    COL_VERTEX(-4607, 3994, -3583),\n    COL_VERTEX(-3993, 4198, -3378),\n    COL_VERTEX(-4402, 4198, -3378),\n    COL_VERTEX(-2989, 3072, -3726),\n    COL_VERTEX(-2969, 3072, -3583),\n    COL_VERTEX(-3788, 3379, -3378),\n    COL_VERTEX(-3788, 3994, -3378),\n    COL_VERTEX(-4607, 3994, -3378),\n    COL_VERTEX(-5938, 5325, -5426),\n    COL_VERTEX(-5938, 5120, -5631),\n    COL_VERTEX(-5733, 5120, -5631),\n    COL_VERTEX(-5938, 5325, -5017),\n    COL_VERTEX(-5590, 5939, -6266),\n    COL_VERTEX(-5733, 3072, -3993),\n    COL_VERTEX(-5590, 5939, -3972),\n    COL_VERTEX(-5938, 4506, -4812),\n    COL_VERTEX(-5938, 5120, -4812),\n    COL_VERTEX(-5406, 3072, -6512),\n    COL_VERTEX(-5590, 3072, -6266),\n    COL_VERTEX(-4109, 5837, -6501),\n    COL_VERTEX(-4262, 5837, -6501),\n    COL_VERTEX(-4109, 3686, -6501),\n    COL_VERTEX(-4109, 3686, -6655),\n    COL_VERTEX(-3725, 3123, -6655),\n    COL_VERTEX(-3725, 3123, -6348),\n    COL_VERTEX(-3725, 3072, -6348),\n    COL_VERTEX(-4646, 3123, -6348),\n    COL_VERTEX(-4646, 3123, -6655),\n    COL_VERTEX(-4646, 3072, -6655),\n    COL_VERTEX(-4134, 3430, -6450),\n    COL_VERTEX(-4339, 3686, -6450),\n    COL_VERTEX(-4544, 3482, -6450),\n    COL_VERTEX(-4544, 3123, -6450),\n    COL_VERTEX(-3827, 3123, -6450),\n    COL_VERTEX(-3827, 3123, -6655),\n    COL_VERTEX(-4032, 3072, -6450),\n    COL_VERTEX(-4339, 3072, -6450),\n    COL_VERTEX(-4339, 3123, -6450),\n    COL_VERTEX(-4339, 3072, -6655),\n    COL_VERTEX(-3788, 3379, -3839),\n    COL_VERTEX(-3788, 3277, -3839),\n    COL_VERTEX(-4607, 3277, -3839),\n    COL_VERTEX(-4607, 3174, -4095),\n    COL_VERTEX(-3788, 3277, -4095),\n    COL_VERTEX(-3788, 3174, -4095),\n    COL_VERTEX(-4607, 3072, -4351),\n    COL_VERTEX(-3788, 3174, -4351),\n    COL_VERTEX(-3583, 3222, -4402),\n    COL_VERTEX(-3583, 3222, -5733),\n    COL_VERTEX(-3071, 3222, -5733),\n    COL_VERTEX(-3071, 3222, -4402),\n    COL_VERTEX(-2577, 5939, -7042),\n    COL_VERTEX(-2259, 2838, -6632),\n    COL_VERTEX(-2607, 2838, -7037),\n    COL_VERTEX(-3788, 6451, -5426),\n    COL_VERTEX(-6195, 2838, -6632),\n    COL_VERTEX(-5515, 7203, -6570),\n    COL_VERTEX(-6165, 5939, -3601),\n    COL_VERTEX(-2880, 7203, -3668),\n    COL_VERTEX(-4607, 6451, -4812),\n    COL_VERTEX(-2457, 2970, -6860),\n    COL_VERTEX(-2457, 2970, -3378),\n    COL_VERTEX(-5938, 2970, -6860),\n    COL_VERTEX(-5068, 3482, -3378),\n    COL_VERTEX(-4843, 2959, -3378),\n    COL_VERTEX(-4505, 3072, -2815),\n    COL_VERTEX(-3342, 3482, -3086),\n    COL_VERTEX(-3327, 3482, -3378),\n    COL_VERTEX(-4607, 3379, -2713),\n    COL_VERTEX(-4607, 3482, -2713),\n    COL_VERTEX(-4610, 3379, -2766),\n    COL_VERTEX(-3378, 3379, -3122),\n    COL_VERTEX(-3378, 3379, -3378),\n    COL_VERTEX(-3788, 3379, -2764),\n    COL_VERTEX(-5817, 2867, -3196),\n    COL_VERTEX(-4607, 3998, -3378),\n    COL_VERTEX(-4607, 3383, -3378),\n    COL_VERTEX(-2230, 2867, -3601),\n    COL_VERTEX(-2577, 2867, -3196),\n    COL_VERTEX(-4690, 3324, -3378),\n    COL_VERTEX(-3788, 3998, -3378),\n    COL_VERTEX(-3788, 3383, -3378),\n    COL_VERTEX(-3704, 3320, -3378),\n    COL_VERTEX(-4402, 4202, -3378),\n    COL_VERTEX(-3993, 4202, -3378),\n    COL_VERTEX(-5017, 3379, -3122),\n    COL_VERTEX(-4607, 3379, -2764),\n    COL_VERTEX(4036, 2567, -3062),\n    COL_VERTEX(5953, 2923, -2653),\n    COL_VERTEX(5953, 2923, -2038),\n    COL_VERTEX(5441, 2821, -2448),\n    COL_VERTEX(5441, 2821, -2243),\n    COL_VERTEX(5646, 2821, -2243),\n    COL_VERTEX(6823, -1012, -631),\n    COL_VERTEX(6260, -1372, 2241),\n    COL_VERTEX(6107, -1219, 2241),\n    COL_VERTEX(6260, -1219, 2241),\n    COL_VERTEX(6823, -653, -631),\n    COL_VERTEX(6721, -653, -733),\n    COL_VERTEX(6704, -1295, 1474),\n    COL_VERTEX(7285, -1091, 1167),\n    COL_VERTEX(7285, -1091, 588),\n    COL_VERTEX(6269, -1295, 1474),\n    COL_VERTEX(6778, -1091, 81),\n    COL_VERTEX(5692, -1091, 1167),\n    COL_VERTEX(5889, -1295, 1094),\n    COL_VERTEX(5692, -1091, 588),\n    COL_VERTEX(6199, -1091, 81),\n    COL_VERTEX(-6009, -4598, 6133),\n    COL_VERTEX(-6009, -4803, 6133),\n    COL_VERTEX(-6009, -4803, 7054),\n    COL_VERTEX(-787, -4598, 7259),\n    COL_VERTEX(-377, -4598, 7054),\n    COL_VERTEX(-377, -4598, 6133),\n    COL_VERTEX(-377, -4803, 6133),\n    COL_VERTEX(-787, -4803, 5928),\n    COL_VERTEX(332, -1935, 6871),\n    COL_VERTEX(742, -1526, 6871),\n    COL_VERTEX(844, -1526, 6871),\n    COL_VERTEX(307, -3267, 6129),\n    COL_VERTEX(307, -3676, 3364),\n    COL_VERTEX(512, -3553, 6231),\n    COL_VERTEX(512, -3553, 6129),\n    COL_VERTEX(563, -3471, 6129),\n    COL_VERTEX(665, -3471, 6129),\n    COL_VERTEX(-377, -4598, 6440),\n    COL_VERTEX(825, -4598, 6440),\n    COL_VERTEX(825, -4598, 7566),\n    COL_VERTEX(415, -4598, 7566),\n    COL_VERTEX(716, -3553, 6129),\n    COL_VERTEX(415, -4598, 6747),\n    COL_VERTEX(-377, -4598, 6747),\n    COL_VERTEX(-377, -4700, 6747),\n    COL_VERTEX(665, -3471, 6989),\n    COL_VERTEX(716, -3553, 6989),\n    COL_VERTEX(716, -3553, 6887),\n    COL_VERTEX(563, -3471, 6887),\n    COL_VERTEX(665, -3635, 6989),\n    COL_VERTEX(512, -3553, 6989),\n    COL_VERTEX(563, -3635, 6989),\n    COL_VERTEX(665, -4598, 6887),\n    COL_VERTEX(582, -4598, 6887),\n    COL_VERTEX(563, -4598, 6887),\n    COL_VERTEX(605, -4598, 6970),\n    COL_VERTEX(614, -4598, 6989),\n    COL_VERTEX(660, -4598, 6897),\n    COL_VERTEX(-358, -2959, 6257),\n    COL_VERTEX(-358, -2959, 6871),\n    COL_VERTEX(-1126, -2959, 6871),\n    COL_VERTEX(-1126, -2959, 6257),\n    COL_VERTEX(307, -3062, 5207),\n    COL_VERTEX(307, -2857, 4286),\n    COL_VERTEX(-1202, -1116, 4619),\n    COL_VERTEX(-1202, -1116, 5233),\n    COL_VERTEX(-1202, -1321, 5233),\n    COL_VERTEX(-2482, -1116, 5233),\n    COL_VERTEX(-2482, -1116, 4619),\n    COL_VERTEX(-1202, -1935, 6257),\n    COL_VERTEX(-1816, -1116, 5233),\n    COL_VERTEX(-1304, -1238, 5603),\n    COL_VERTEX(-1304, -1238, 5398),\n    COL_VERTEX(-1509, -1238, 5398),\n    COL_VERTEX(-1509, -1248, 5398),\n    COL_VERTEX(-1714, -1494, 5705),\n    COL_VERTEX(-1509, -1494, 5910),\n    COL_VERTEX(-1509, -1750, 6025),\n    COL_VERTEX(-1304, -1750, 6217),\n    COL_VERTEX(-1304, -1782, 6052),\n    COL_VERTEX(-1509, -1782, 6052),\n    COL_VERTEX(-1509, -1782, 6065),\n    COL_VERTEX(-4683, -1116, 3851),\n    COL_VERTEX(-4786, -1270, 4055),\n    COL_VERTEX(-690, -2140, 6257),\n    COL_VERTEX(-690, -1935, 6871),\n    COL_VERTEX(-1816, -1935, 6871),\n    COL_VERTEX(-6269, -1321, 4619),\n    COL_VERTEX(-5860, -1116, 4414),\n    COL_VERTEX(-6269, -1116, 4619),\n    COL_VERTEX(-6269, -1116, 5233),\n    COL_VERTEX(-5451, -1116, 4619),\n    COL_VERTEX(-5860, -1321, 5438),\n    COL_VERTEX(-5451, -1321, 5233),\n    COL_VERTEX(-4632, -1116, 4619),\n    COL_VERTEX(-4632, -1116, 5233),\n    COL_VERTEX(-4887, -1935, 6871),\n    COL_VERTEX(-4887, -2140, 6257),\n    COL_VERTEX(-5809, -1935, 6871),\n    COL_VERTEX(-5809, -1935, 6257),\n    COL_VERTEX(-3709, -2755, 6257),\n    COL_VERTEX(-3505, -2959, 6257),\n    COL_VERTEX(-3300, -2959, 6257),\n    COL_VERTEX(-4068, -2755, 6257),\n    COL_VERTEX(-3300, -2959, 6871),\n    COL_VERTEX(-3505, -2959, 6871),\n    COL_VERTEX(-4068, -2755, 6871),\n    COL_VERTEX(-3903, -3456, 6887),\n    COL_VERTEX(-3967, -3558, 6989),\n    COL_VERTEX(-6065, -3558, 6887),\n    COL_VERTEX(-6013, -3558, 6129),\n    COL_VERTEX(-3904, -3456, 6231),\n    COL_VERTEX(-3866, -3558, 6231),\n    COL_VERTEX(-5911, -2811, 6887),\n    COL_VERTEX(-6065, -2729, 6887),\n    COL_VERTEX(-6065, -2729, 6129),\n    COL_VERTEX(-6116, -2811, 6129),\n    COL_VERTEX(-6116, -2811, 6231),\n    COL_VERTEX(-5962, -2729, 6129),\n    COL_VERTEX(-5911, -2811, 6129),\n    COL_VERTEX(-5962, -2893, 6129),\n    COL_VERTEX(-5962, -2729, 6989),\n    COL_VERTEX(-5911, -2811, 6989),\n    COL_VERTEX(-6116, -2811, 6989),\n    COL_VERTEX(-6065, -2893, 6989),\n    COL_VERTEX(-5962, -2893, 6989),\n    COL_VERTEX(-5757, -1731, 5694),\n    COL_VERTEX(-5860, -1731, 5591),\n    COL_VERTEX(3393, -1833, 1780),\n    COL_VERTEX(3393, -1833, 2359),\n    COL_VERTEX(2886, -2089, 2866),\n    COL_VERTEX(2307, -2089, 2866),\n    COL_VERTEX(2886, -2089, 1273),\n    COL_VERTEX(1800, -2089, 2359),\n    COL_VERTEX(1800, -1833, 2359),\n    COL_VERTEX(2307, -2089, 1273),\n    COL_VERTEX(1800, -1833, 1780),\n    COL_VERTEX(-6370, 1443, -343),\n    COL_VERTEX(-3093, -1782, -343),\n    COL_VERTEX(-3093, -1782, 270),\n    COL_VERTEX(-3605, -860, 270),\n    COL_VERTEX(-4322, -707, 270),\n    COL_VERTEX(-3605, -707, 270),\n    COL_VERTEX(-3093, -1116, 270),\n    COL_VERTEX(-3093, 726, -445),\n    COL_VERTEX(-4322, -707, -343),\n    COL_VERTEX(-3605, -451, -445),\n    COL_VERTEX(-2786, -451, -445),\n    COL_VERTEX(-3605, -451, 270),\n    COL_VERTEX(-3605, -297, 270),\n    COL_VERTEX(-6063, 1443, -343),\n    COL_VERTEX(-3605, -297, -343),\n    COL_VERTEX(-3298, -758, 270),\n    COL_VERTEX(-3093, -297, 270),\n    COL_VERTEX(-2786, -297, 270),\n    COL_VERTEX(-3093, -758, 270),\n    COL_VERTEX(-5653, -1116, 270),\n    COL_VERTEX(-7496, -1987, 680),\n    COL_VERTEX(-7496, -1782, -241),\n    COL_VERTEX(-7496, -1987, -241),\n    COL_VERTEX(-5653, -1782, 270),\n    COL_VERTEX(-2888, 726, 270),\n    COL_VERTEX(-3093, 726, 270),\n    COL_VERTEX(-2274, -1782, 885),\n    COL_VERTEX(-1864, -1782, 680),\n    COL_VERTEX(-1864, -1987, -241),\n    COL_VERTEX(-1864, -1782, -241),\n    COL_VERTEX(-2274, -1987, -445),\n    COL_VERTEX(-6063, -195, -343),\n    COL_VERTEX(-5448, -195, 270),\n    COL_VERTEX(-5448, 214, 270),\n    COL_VERTEX(-5756, 1033, 270),\n    COL_VERTEX(-6063, 1033, 270),\n    COL_VERTEX(-5653, 214, 270),\n    COL_VERTEX(-5653, 931, 270),\n    COL_VERTEX(-4629, -1116, 270),\n    COL_VERTEX(-4629, -1116, -343),\n    COL_VERTEX(-4936, 726, 270),\n    COL_VERTEX(-5141, 726, 270),\n    COL_VERTEX(-4936, 521, 270),\n    COL_VERTEX(-5653, 214, -343),\n    COL_VERTEX(-5141, 726, -343),\n    COL_VERTEX(-3298, 316, 270),\n    COL_VERTEX(-3298, 316, -343),\n    COL_VERTEX(-3093, -451, 270),\n    COL_VERTEX(-3298, -451, -343),\n    COL_VERTEX(-3093, 316, -343),\n    COL_VERTEX(-3605, 112, 270),\n    COL_VERTEX(-3605, -41, 270),\n    COL_VERTEX(-3912, -707, 270),\n    COL_VERTEX(-4117, 112, -343),\n    COL_VERTEX(-4322, -143, 270),\n    COL_VERTEX(-4322, -297, 270),\n    COL_VERTEX(-4117, -297, 270),\n    COL_VERTEX(-3912, -707, -343),\n    COL_VERTEX(-4322, -143, -343),\n    COL_VERTEX(-4629, 572, -343),\n    COL_VERTEX(-4629, 419, 270),\n    COL_VERTEX(-4424, 572, 270),\n    COL_VERTEX(-3810, 572, 270),\n    COL_VERTEX(-4220, 982, 270),\n    COL_VERTEX(-4424, 982, 270),\n    COL_VERTEX(-4424, 982, -343),\n    COL_VERTEX(-5141, 214, 270),\n    COL_VERTEX(-4629, -195, 270),\n    COL_VERTEX(-4834, 112, 270),\n    COL_VERTEX(-4936, 112, 270),\n    COL_VERTEX(-4834, 9, 270),\n    COL_VERTEX(-4629, 9, 270),\n    COL_VERTEX(-4936, 214, 270),\n    COL_VERTEX(-4834, 9, -343),\n    COL_VERTEX(-5141, 214, -343),\n    COL_VERTEX(-4936, 112, -343),\n    COL_VERTEX(-7394, -1116, 270),\n    COL_VERTEX(-7189, 2160, 270),\n    COL_VERTEX(-2274, 1648, 270),\n    COL_VERTEX(-2479, 1648, 270),\n    COL_VERTEX(-7189, -1116, -343),\n    COL_VERTEX(-5653, -1782, -343),\n    COL_VERTEX(-6063, -655, -343),\n    COL_VERTEX(-4527, -655, 270),\n    COL_VERTEX(-4527, -502, 270),\n    COL_VERTEX(-6063, -502, 270),\n    COL_VERTEX(-3093, -451, -445),\n    COL_VERTEX(-1455, -1116, -343),\n    COL_VERTEX(-1864, -1116, -343),\n    COL_VERTEX(-1864, -1116, 270),\n    COL_VERTEX(-1455, -1116, 270),\n    COL_VERTEX(-2274, -1116, -343),\n    COL_VERTEX(-2274, -1116, 270),\n    COL_VERTEX(-2479, -1116, -343),\n    COL_VERTEX(-2479, -1116, 270),\n    COL_VERTEX(-8191, -8191, 8192),\n    COL_VERTEX(8192, -8191, 8192),\n    COL_VERTEX(8192, -8191, -8191),\n    COL_VERTEX(-8191, -8191, -8191),\n    COL_VERTEX(-6472, 1443, -343),\n    COL_VERTEX(3247, 4276, -2653),\n    COL_VERTEX(3861, 4276, -2653),\n    COL_VERTEX(3861, 4276, -2038),\n    COL_VERTEX(921, -1116, 3979),\n    COL_VERTEX(3393, -1833, 1831),\n    COL_VERTEX(-2661, 3072, -6655),\n    COL_VERTEX(-5756, 1033, -343),\n    COL_VERTEX(-6063, 1033, -343),\n    COL_VERTEX(-6063, -502, -343),\n    COL_VERTEX(-6063, 1648, -343),\n    COL_VERTEX(1180, 3083, -954),\n    COL_VERTEX(3247, 4276, -2038),\n    COL_VERTEX(307, -1116, 3979),\n    COL_VERTEX(3393, -1833, 2241),\n    COL_VERTEX(4212, -1833, 2241),\n    COL_VERTEX(4212, -1833, 1831),\n    COL_VERTEX(-5733, 3072, -6655),\n    COL_VERTEX(-5733, 3072, -3583),\n    COL_VERTEX(-2661, 3072, -3583),\n    COL_VERTEX(-3605, -297, -445),\n    COL_TRI_INIT(SURFACE_DEFAULT, 1324),\n    COL_TRI(5, 8, 9),\n    COL_TRI(0, 1, 2),\n    COL_TRI(1, 0, 3),\n    COL_TRI(1, 3, 4),\n    COL_TRI(5, 0, 2),\n    COL_TRI(5, 6, 7),\n    COL_TRI(5, 7, 8),\n    COL_TRI(48, 49, 50),\n    COL_TRI(48, 51, 49),\n    COL_TRI(14, 64, 65),\n    COL_TRI(14, 65, 15),\n    COL_TRI(13, 65, 24),\n    COL_TRI(24, 65, 64),\n    COL_TRI(25, 64, 11),\n    COL_TRI(24, 64, 25),\n    COL_TRI(66, 67, 68),\n    COL_TRI(66, 69, 67),\n    COL_TRI(68, 70, 66),\n    COL_TRI(75, 77, 76),\n    COL_TRI(71, 67, 69),\n    COL_TRI(72, 617, 73),\n    COL_TRI(72, 73, 618),\n    COL_TRI(73, 617, 66),\n    COL_TRI(73, 66, 70),\n    COL_TRI(74, 72, 618),\n    COL_TRI(80, 623, 79),\n    COL_TRI(76, 619, 620),\n    COL_TRI(76, 620, 78),\n    COL_TRI(77, 619, 76),\n    COL_TRI(75, 76, 78),\n    COL_TRI(78, 620, 621),\n    COL_TRI(78, 621, 75),\n    COL_TRI(75, 621, 622),\n    COL_TRI(75, 622, 77),\n    COL_TRI(77, 622, 619),\n    COL_TRI(79, 80, 623),\n    COL_TRI(79, 81, 80),\n    COL_TRI(80, 79, 81),\n    COL_TRI(120, 625, 624),\n    COL_TRI(81, 624, 80),\n    COL_TRI(80, 625, 623),\n    COL_TRI(80, 624, 625),\n    COL_TRI(81, 626, 624),\n    COL_TRI(79, 626, 81),\n    COL_TRI(79, 120, 626),\n    COL_TRI(82, 627, 83),\n    COL_TRI(82, 628, 627),\n    COL_TRI(83, 84, 82),\n    COL_TRI(84, 628, 82),\n    COL_TRI(87, 632, 88),\n    COL_TRI(83, 627, 629),\n    COL_TRI(83, 629, 630),\n    COL_TRI(83, 630, 84),\n    COL_TRI(84, 85, 628),\n    COL_TRI(85, 629, 627),\n    COL_TRI(85, 627, 628),\n    COL_TRI(86, 87, 88),\n    COL_TRI(87, 631, 632),\n    COL_TRI(88, 632, 93),\n    COL_TRI(86, 88, 89),\n    COL_TRI(88, 93, 89),\n    COL_TRI(89, 93, 633),\n    COL_TRI(86, 89, 91),\n    COL_TRI(89, 633, 91),\n    COL_TRI(90, 634, 633),\n    COL_TRI(90, 633, 93),\n    COL_TRI(91, 633, 634),\n    COL_TRI(91, 634, 635),\n    COL_TRI(92, 90, 636),\n    COL_TRI(92, 636, 86),\n    COL_TRI(91, 92, 86),\n    COL_TRI(93, 631, 636),\n    COL_TRI(93, 636, 90),\n    COL_TRI(93, 632, 631),\n    COL_TRI(91, 635, 92),\n    COL_TRI(94, 637, 97),\n    COL_TRI(94, 97, 98),\n    COL_TRI(95, 637, 94),\n    COL_TRI(96, 94, 98),\n    COL_TRI(96, 95, 94),\n    COL_TRI(97, 638, 639),\n    COL_TRI(97, 637, 638),\n    COL_TRI(98, 97, 639),\n    COL_TRI(98, 639, 96),\n    COL_TRI(95, 638, 637),\n    COL_TRI(99, 640, 100),\n    COL_TRI(100, 102, 101),\n    COL_TRI(100, 101, 99),\n    COL_TRI(101, 641, 103),\n    COL_TRI(101, 103, 99),\n    COL_TRI(102, 641, 101),\n    COL_TRI(99, 103, 640),\n    COL_TRI(107, 645, 646),\n    COL_TRI(102, 642, 641),\n    COL_TRI(103, 642, 640),\n    COL_TRI(103, 641, 642),\n    COL_TRI(104, 643, 105),\n    COL_TRI(105, 643, 644),\n    COL_TRI(105, 644, 106),\n    COL_TRI(106, 644, 645),\n    COL_TRI(106, 645, 107),\n    COL_TRI(104, 646, 643),\n    COL_TRI(107, 646, 104),\n    COL_TRI(113, 112, 652),\n    COL_TRI(108, 647, 110),\n    COL_TRI(108, 648, 647),\n    COL_TRI(109, 648, 108),\n    COL_TRI(110, 647, 649),\n    COL_TRI(110, 649, 111),\n    COL_TRI(109, 650, 648),\n    COL_TRI(111, 650, 109),\n    COL_TRI(111, 649, 650),\n    COL_TRI(112, 113, 651),\n    COL_TRI(113, 652, 115),\n    COL_TRI(114, 652, 112),\n    COL_TRI(112, 651, 114),\n    COL_TRI(114, 655, 652),\n    COL_TRI(115, 652, 655),\n    COL_TRI(115, 653, 654),\n    COL_TRI(116, 113, 115),\n    COL_TRI(115, 654, 116),\n    COL_TRI(117, 651, 113),\n    COL_TRI(117, 656, 651),\n    COL_TRI(116, 117, 113),\n    COL_TRI(116, 656, 117),\n    COL_TRI(116, 654, 656),\n    COL_TRI(119, 54, 53),\n    COL_TRI(115, 655, 653),\n    COL_TRI(118, 657, 55),\n    COL_TRI(118, 55, 52),\n    COL_TRI(119, 53, 658),\n    COL_TRI(121, 659, 663),\n    COL_TRI(120, 624, 626),\n    COL_TRI(121, 122, 659),\n    COL_TRI(122, 660, 659),\n    COL_TRI(122, 661, 660),\n    COL_TRI(123, 661, 662),\n    COL_TRI(123, 660, 661),\n    COL_TRI(123, 121, 663),\n    COL_TRI(123, 662, 121),\n    COL_TRI(128, 671, 670),\n    COL_TRI(124, 664, 125),\n    COL_TRI(125, 127, 665),\n    COL_TRI(125, 664, 127),\n    COL_TRI(125, 126, 124),\n    COL_TRI(125, 665, 126),\n    COL_TRI(126, 666, 124),\n    COL_TRI(126, 667, 666),\n    COL_TRI(126, 668, 667),\n    COL_TRI(126, 148, 668),\n    COL_TRI(124, 666, 664),\n    COL_TRI(127, 669, 665),\n    COL_TRI(128, 670, 129),\n    COL_TRI(133, 680, 677),\n    COL_TRI(129, 674, 128),\n    COL_TRI(129, 675, 674),\n    COL_TRI(130, 676, 132),\n    COL_TRI(130, 132, 131),\n    COL_TRI(131, 132, 677),\n    COL_TRI(132, 678, 677),\n    COL_TRI(133, 677, 679),\n    COL_TRI(131, 677, 680),\n    COL_TRI(131, 138, 130),\n    COL_TRI(131, 681, 138),\n    COL_TRI(131, 680, 681),\n    COL_TRI(134, 682, 136),\n    COL_TRI(134, 683, 682),\n    COL_TRI(134, 136, 137),\n    COL_TRI(134, 137, 684),\n    COL_TRI(135, 134, 684),\n    COL_TRI(135, 684, 685),\n    COL_TRI(136, 682, 676),\n    COL_TRI(136, 676, 130),\n    COL_TRI(137, 136, 130),\n    COL_TRI(138, 137, 130),\n    COL_TRI(135, 685, 139),\n    COL_TRI(135, 139, 686),\n    COL_TRI(145, 689, 144),\n    COL_TRI(139, 133, 679),\n    COL_TRI(139, 679, 686),\n    COL_TRI(140, 142, 687),\n    COL_TRI(141, 688, 142),\n    COL_TRI(142, 143, 687),\n    COL_TRI(142, 688, 143),\n    COL_TRI(141, 142, 140),\n    COL_TRI(143, 688, 141),\n    COL_TRI(144, 143, 145),\n    COL_TRI(144, 687, 143),\n    COL_TRI(145, 143, 141),\n    COL_TRI(140, 687, 144),\n    COL_TRI(145, 690, 689),\n    COL_TRI(144, 689, 140),\n    COL_TRI(140, 689, 690),\n    COL_TRI(140, 690, 141),\n    COL_TRI(141, 690, 145),\n    COL_TRI(127, 147, 669),\n    COL_TRI(146, 672, 673),\n    COL_TRI(146, 691, 672),\n    COL_TRI(147, 691, 146),\n    COL_TRI(147, 146, 669),\n    COL_TRI(153, 695, 155),\n    COL_TRI(148, 672, 668),\n    COL_TRI(148, 673, 672),\n    COL_TRI(149, 151, 150),\n    COL_TRI(150, 128, 149),\n    COL_TRI(150, 692, 128),\n    COL_TRI(151, 692, 150),\n    COL_TRI(151, 693, 692),\n    COL_TRI(149, 128, 694),\n    COL_TRI(149, 152, 151),\n    COL_TRI(149, 694, 152),\n    COL_TRI(152, 694, 693),\n    COL_TRI(152, 693, 151),\n    COL_TRI(153, 696, 695),\n    COL_TRI(154, 696, 153),\n    COL_TRI(154, 698, 696),\n    COL_TRI(155, 695, 697),\n    COL_TRI(155, 697, 156),\n    COL_TRI(156, 697, 698),\n    COL_TRI(156, 698, 154),\n    COL_TRI(157, 699, 161),\n    COL_TRI(157, 700, 699),\n    COL_TRI(157, 160, 700),\n    COL_TRI(157, 701, 160),\n    COL_TRI(160, 699, 700),\n    COL_TRI(158, 159, 701),\n    COL_TRI(159, 160, 701),\n    COL_TRI(160, 159, 699),\n    COL_TRI(161, 159, 158),\n    COL_TRI(161, 699, 159),\n    COL_TRI(162, 163, 702),\n    COL_TRI(163, 703, 702),\n    COL_TRI(163, 704, 703),\n    COL_TRI(164, 704, 163),\n    COL_TRI(164, 163, 162),\n    COL_TRI(165, 704, 164),\n    COL_TRI(165, 703, 704),\n    COL_TRI(166, 703, 165),\n    COL_TRI(166, 702, 703),\n    COL_TRI(162, 702, 166),\n    COL_TRI(167, 705, 706),\n    COL_TRI(167, 707, 705),\n    COL_TRI(168, 708, 167),\n    COL_TRI(168, 167, 706),\n    COL_TRI(167, 709, 707),\n    COL_TRI(168, 705, 170),\n    COL_TRI(168, 706, 705),\n    COL_TRI(169, 708, 168),\n    COL_TRI(169, 168, 170),\n    COL_TRI(169, 171, 708),\n    COL_TRI(170, 705, 707),\n    COL_TRI(170, 707, 169),\n    COL_TRI(169, 707, 709),\n    COL_TRI(169, 709, 171),\n    COL_TRI(171, 709, 167),\n    COL_TRI(171, 167, 708),\n    COL_TRI(172, 175, 176),\n    COL_TRI(178, 179, 177),\n    COL_TRI(172, 710, 175),\n    COL_TRI(173, 710, 172),\n    COL_TRI(174, 173, 172),\n    COL_TRI(175, 710, 711),\n    COL_TRI(175, 711, 712),\n    COL_TRI(176, 175, 712),\n    COL_TRI(176, 712, 174),\n    COL_TRI(174, 172, 176),\n    COL_TRI(173, 711, 710),\n    COL_TRI(177, 713, 178),\n    COL_TRI(178, 180, 179),\n    COL_TRI(183, 186, 716),\n    COL_TRI(179, 714, 181),\n    COL_TRI(179, 181, 177),\n    COL_TRI(180, 714, 179),\n    COL_TRI(177, 181, 713),\n    COL_TRI(180, 715, 714),\n    COL_TRI(181, 715, 713),\n    COL_TRI(181, 714, 715),\n    COL_TRI(182, 185, 184),\n    COL_TRI(182, 184, 183),\n    COL_TRI(183, 716, 182),\n    COL_TRI(184, 717, 186),\n    COL_TRI(184, 186, 183),\n    COL_TRI(185, 717, 184),\n    COL_TRI(191, 720, 188),\n    COL_TRI(185, 718, 717),\n    COL_TRI(186, 718, 716),\n    COL_TRI(186, 717, 718),\n    COL_TRI(187, 189, 190),\n    COL_TRI(187, 719, 189),\n    COL_TRI(188, 719, 187),\n    COL_TRI(189, 719, 720),\n    COL_TRI(188, 720, 719),\n    COL_TRI(189, 720, 721),\n    COL_TRI(190, 189, 721),\n    COL_TRI(190, 721, 191),\n    COL_TRI(191, 721, 720),\n    COL_TRI(194, 723, 196),\n    COL_TRI(192, 193, 71),\n    COL_TRI(71, 193, 67),\n    COL_TRI(193, 68, 67),\n    COL_TRI(193, 74, 68),\n    COL_TRI(192, 74, 193),\n    COL_TRI(74, 192, 72),\n    COL_TRI(194, 197, 195),\n    COL_TRI(194, 196, 197),\n    COL_TRI(195, 722, 194),\n    COL_TRI(194, 722, 723),\n    COL_TRI(196, 723, 724),\n    COL_TRI(196, 724, 197),\n    COL_TRI(195, 725, 722),\n    COL_TRI(197, 725, 195),\n    COL_TRI(197, 724, 725),\n    COL_TRI(198, 200, 201),\n    COL_TRI(198, 201, 199),\n    COL_TRI(198, 726, 200),\n    COL_TRI(199, 727, 198),\n    COL_TRI(198, 727, 726),\n    COL_TRI(202, 730, 204),\n    COL_TRI(200, 728, 201),\n    COL_TRI(201, 729, 199),\n    COL_TRI(201, 728, 729),\n    COL_TRI(199, 729, 727),\n    COL_TRI(200, 726, 728),\n    COL_TRI(18, 381, 21),\n    COL_TRI(18, 17, 381),\n    COL_TRI(16, 381, 17),\n    COL_TRI(203, 731, 202),\n    COL_TRI(202, 731, 730),\n    COL_TRI(202, 204, 205),\n    COL_TRI(204, 732, 205),\n    COL_TRI(205, 732, 733),\n    COL_TRI(205, 733, 203),\n    COL_TRI(202, 205, 203),\n    COL_TRI(203, 733, 731),\n    COL_TRI(204, 730, 732),\n    COL_TRI(206, 734, 210),\n    COL_TRI(206, 735, 734),\n    COL_TRI(207, 734, 735),\n    COL_TRI(212, 211, 215),\n    COL_TRI(207, 208, 734),\n    COL_TRI(208, 207, 736),\n    COL_TRI(209, 208, 736),\n    COL_TRI(210, 209, 736),\n    COL_TRI(206, 210, 736),\n    COL_TRI(211, 212, 216),\n    COL_TRI(211, 214, 215),\n    COL_TRI(213, 211, 216),\n    COL_TRI(214, 211, 737),\n    COL_TRI(213, 737, 211),\n    COL_TRI(215, 214, 217),\n    COL_TRI(216, 217, 213),\n    COL_TRI(214, 738, 217),\n    COL_TRI(214, 737, 739),\n    COL_TRI(214, 739, 218),\n    COL_TRI(214, 218, 738),\n    COL_TRI(217, 738, 213),\n    COL_TRI(218, 213, 738),\n    COL_TRI(218, 740, 213),\n    COL_TRI(213, 740, 737),\n    COL_TRI(219, 221, 222),\n    COL_TRI(219, 741, 221),\n    COL_TRI(226, 743, 745),\n    COL_TRI(221, 741, 742),\n    COL_TRI(222, 221, 224),\n    COL_TRI(222, 224, 223),\n    COL_TRI(220, 219, 222),\n    COL_TRI(220, 222, 223),\n    COL_TRI(223, 742, 220),\n    COL_TRI(223, 224, 742),\n    COL_TRI(224, 221, 742),\n    COL_TRI(225, 743, 226),\n    COL_TRI(225, 226, 744),\n    COL_TRI(233, 223, 747),\n    COL_TRI(226, 745, 230),\n    COL_TRI(229, 230, 745),\n    COL_TRI(229, 745, 746),\n    COL_TRI(230, 229, 232),\n    COL_TRI(230, 231, 227),\n    COL_TRI(231, 230, 232),\n    COL_TRI(226, 230, 227),\n    COL_TRI(229, 225, 744),\n    COL_TRI(229, 746, 225),\n    COL_TRI(232, 229, 228),\n    COL_TRI(228, 744, 226),\n    COL_TRI(227, 228, 226),\n    COL_TRI(223, 234, 747),\n    COL_TRI(234, 235, 747),\n    COL_TRI(235, 236, 747),\n    COL_TRI(236, 235, 222),\n    COL_TRI(236, 222, 748),\n    COL_TRI(237, 749, 750),\n    COL_TRI(237, 750, 239),\n    COL_TRI(237, 751, 238),\n    COL_TRI(238, 749, 237),\n    COL_TRI(237, 239, 751),\n    COL_TRI(241, 753, 752),\n    COL_TRI(239, 219, 751),\n    COL_TRI(239, 750, 219),\n    COL_TRI(219, 238, 751),\n    COL_TRI(238, 220, 749),\n    COL_TRI(219, 220, 238),\n    COL_TRI(240, 241, 752),\n    COL_TRI(242, 754, 755),\n    COL_TRI(242, 756, 754),\n    COL_TRI(243, 276, 245),\n    COL_TRI(243, 757, 276),\n    COL_TRI(243, 251, 250),\n    COL_TRI(243, 376, 251),\n    COL_TRI(243, 758, 376),\n    COL_TRI(243, 245, 758),\n    COL_TRI(244, 360, 758),\n    COL_TRI(245, 244, 758),\n    COL_TRI(245, 276, 256),\n    COL_TRI(246, 249, 245),\n    COL_TRI(246, 245, 256),\n    COL_TRI(245, 247, 244),\n    COL_TRI(245, 249, 247),\n    COL_TRI(247, 361, 244),\n    COL_TRI(244, 361, 360),\n    COL_TRI(248, 367, 247),\n    COL_TRI(247, 367, 361),\n    COL_TRI(249, 248, 247),\n    COL_TRI(249, 760, 250),\n    COL_TRI(249, 761, 760),\n    COL_TRI(246, 761, 249),\n    COL_TRI(250, 248, 249),\n    COL_TRI(256, 259, 253),\n    COL_TRI(251, 759, 248),\n    COL_TRI(248, 759, 367),\n    COL_TRI(250, 251, 248),\n    COL_TRI(251, 365, 759),\n    COL_TRI(252, 762, 253),\n    COL_TRI(253, 377, 252),\n    COL_TRI(253, 763, 377),\n    COL_TRI(254, 763, 253),\n    COL_TRI(255, 253, 259),\n    COL_TRI(255, 254, 253),\n    COL_TRI(260, 259, 767),\n    COL_TRI(252, 377, 260),\n    COL_TRI(252, 274, 762),\n    COL_TRI(252, 260, 767),\n    COL_TRI(258, 764, 255),\n    COL_TRI(255, 764, 765),\n    COL_TRI(255, 765, 254),\n    COL_TRI(258, 255, 259),\n    COL_TRI(260, 258, 259),\n    COL_TRI(259, 766, 767),\n    COL_TRI(259, 275, 766),\n    COL_TRI(259, 256, 275),\n    COL_TRI(260, 768, 769),\n    COL_TRI(260, 769, 258),\n    COL_TRI(261, 771, 262),\n    COL_TRI(262, 771, 772),\n    COL_TRI(262, 772, 773),\n    COL_TRI(261, 262, 263),\n    COL_TRI(262, 773, 263),\n    COL_TRI(267, 266, 268),\n    COL_TRI(263, 773, 375),\n    COL_TRI(264, 263, 775),\n    COL_TRI(261, 263, 268),\n    COL_TRI(263, 375, 265),\n    COL_TRI(257, 268, 263),\n    COL_TRI(257, 263, 264),\n    COL_TRI(265, 375, 267),\n    COL_TRI(265, 267, 776),\n    COL_TRI(266, 774, 261),\n    COL_TRI(261, 774, 771),\n    COL_TRI(266, 261, 268),\n    COL_TRI(267, 268, 776),\n    COL_TRI(270, 760, 761),\n    COL_TRI(268, 273, 776),\n    COL_TRI(268, 777, 273),\n    COL_TRI(267, 778, 779),\n    COL_TRI(267, 779, 266),\n    COL_TRI(266, 779, 774),\n    COL_TRI(269, 270, 271),\n    COL_TRI(270, 272, 271),\n    COL_TRI(270, 761, 272),\n    COL_TRI(271, 272, 246),\n    COL_TRI(271, 264, 278),\n    COL_TRI(271, 246, 264),\n    COL_TRI(272, 761, 246),\n    COL_TRI(273, 777, 762),\n    COL_TRI(274, 273, 762),\n    COL_TRI(257, 762, 777),\n    COL_TRI(257, 253, 762),\n    COL_TRI(264, 775, 277),\n    COL_TRI(257, 777, 268),\n    COL_TRI(275, 757, 766),\n    COL_TRI(275, 276, 757),\n    COL_TRI(276, 275, 256),\n    COL_TRI(277, 781, 780),\n    COL_TRI(264, 277, 278),\n    COL_TRI(277, 775, 781),\n    COL_TRI(278, 277, 780),\n    COL_TRI(265, 781, 775),\n    COL_TRI(278, 780, 279),\n    COL_TRI(265, 775, 263),\n    COL_TRI(279, 269, 271),\n    COL_TRI(279, 271, 278),\n    COL_TRI(280, 782, 282),\n    COL_TRI(280, 783, 782),\n    COL_TRI(281, 783, 280),\n    COL_TRI(285, 788, 787),\n    COL_TRI(282, 782, 784),\n    COL_TRI(283, 782, 783),\n    COL_TRI(283, 784, 782),\n    COL_TRI(282, 784, 785),\n    COL_TRI(281, 283, 783),\n    COL_TRI(284, 786, 787),\n    COL_TRI(284, 787, 788),\n    COL_TRI(285, 787, 789),\n    COL_TRI(292, 792, 290),\n    COL_TRI(285, 789, 790),\n    COL_TRI(285, 790, 791),\n    COL_TRI(286, 287, 792),\n    COL_TRI(287, 793, 290),\n    COL_TRI(287, 290, 792),\n    COL_TRI(288, 287, 286),\n    COL_TRI(289, 793, 287),\n    COL_TRI(289, 287, 288),\n    COL_TRI(290, 794, 299),\n    COL_TRI(290, 793, 794),\n    COL_TRI(291, 290, 299),\n    COL_TRI(292, 290, 291),\n    COL_TRI(296, 286, 293),\n    COL_TRI(293, 286, 792),\n    COL_TRI(294, 792, 292),\n    COL_TRI(294, 293, 792),\n    COL_TRI(295, 793, 289),\n    COL_TRI(295, 794, 793),\n    COL_TRI(296, 796, 286),\n    COL_TRI(297, 286, 796),\n    COL_TRI(288, 286, 297),\n    COL_TRI(298, 794, 295),\n    COL_TRI(298, 795, 794),\n    COL_TRI(299, 794, 795),\n    COL_TRI(300, 293, 294),\n    COL_TRI(300, 798, 293),\n    COL_TRI(301, 299, 799),\n    COL_TRI(291, 299, 301),\n    COL_TRI(299, 795, 800),\n    COL_TRI(303, 804, 306),\n    COL_TRI(297, 796, 797),\n    COL_TRI(301, 799, 801),\n    COL_TRI(302, 802, 803),\n    COL_TRI(302, 803, 804),\n    COL_TRI(303, 302, 804),\n    COL_TRI(303, 377, 302),\n    COL_TRI(307, 809, 807),\n    COL_TRI(304, 808, 305),\n    COL_TRI(304, 305, 809),\n    COL_TRI(303, 805, 305),\n    COL_TRI(305, 808, 303),\n    COL_TRI(303, 306, 805),\n    COL_TRI(306, 806, 807),\n    COL_TRI(306, 807, 805),\n    COL_TRI(307, 304, 809),\n    COL_TRI(307, 807, 806),\n    COL_TRI(307, 806, 803),\n    COL_TRI(312, 313, 314),\n    COL_TRI(307, 802, 260),\n    COL_TRI(307, 803, 802),\n    COL_TRI(308, 810, 309),\n    COL_TRI(309, 811, 310),\n    COL_TRI(309, 810, 811),\n    COL_TRI(310, 811, 812),\n    COL_TRI(310, 812, 311),\n    COL_TRI(308, 813, 810),\n    COL_TRI(311, 812, 813),\n    COL_TRI(311, 813, 308),\n    COL_TRI(313, 315, 814),\n    COL_TRI(313, 814, 317),\n    COL_TRI(314, 313, 317),\n    COL_TRI(315, 815, 816),\n    COL_TRI(316, 315, 312),\n    COL_TRI(316, 815, 315),\n    COL_TRI(315, 816, 814),\n    COL_TRI(313, 312, 315),\n    COL_TRI(317, 814, 816),\n    COL_TRI(318, 319, 314),\n    COL_TRI(319, 817, 314),\n    COL_TRI(320, 314, 817),\n    COL_TRI(326, 369, 368),\n    COL_TRI(321, 818, 322),\n    COL_TRI(321, 322, 324),\n    COL_TRI(322, 818, 359),\n    COL_TRI(323, 322, 359),\n    COL_TRI(322, 323, 819),\n    COL_TRI(324, 322, 819),\n    COL_TRI(318, 819, 323),\n    COL_TRI(325, 819, 318),\n    COL_TRI(325, 324, 819),\n    COL_TRI(321, 324, 325),\n    COL_TRI(327, 326, 328),\n    COL_TRI(328, 326, 368),\n    COL_TRI(326, 327, 820),\n    COL_TRI(326, 820, 369),\n    COL_TRI(246, 336, 264),\n    COL_TRI(246, 329, 336),\n    COL_TRI(329, 246, 256),\n    COL_TRI(256, 253, 257),\n    COL_TRI(257, 331, 256),\n    COL_TRI(329, 256, 331),\n    COL_TRI(257, 330, 331),\n    COL_TRI(330, 257, 264),\n    COL_TRI(329, 319, 336),\n    COL_TRI(329, 817, 319),\n    COL_TRI(331, 817, 329),\n    COL_TRI(330, 264, 336),\n    COL_TRI(332, 333, 821),\n    COL_TRI(333, 362, 821),\n    COL_TRI(320, 334, 314),\n    COL_TRI(312, 334, 362),\n    COL_TRI(334, 821, 362),\n    COL_TRI(335, 332, 821),\n    COL_TRI(335, 821, 334),\n    COL_TRI(335, 334, 328),\n    COL_TRI(335, 328, 368),\n    COL_TRI(334, 822, 328),\n    COL_TRI(334, 320, 822),\n    COL_TRI(331, 320, 817),\n    COL_TRI(330, 320, 331),\n    COL_TRI(330, 822, 320),\n    COL_TRI(336, 822, 330),\n    COL_TRI(336, 319, 822),\n    COL_TRI(319, 328, 822),\n    COL_TRI(318, 327, 328),\n    COL_TRI(319, 318, 328),\n    COL_TRI(318, 323, 327),\n    COL_TRI(325, 318, 314),\n    COL_TRI(339, 825, 823),\n    COL_TRI(312, 314, 334),\n    COL_TRI(325, 314, 317),\n    COL_TRI(337, 325, 317),\n    COL_TRI(317, 816, 337),\n    COL_TRI(338, 820, 327),\n    COL_TRI(339, 823, 824),\n    COL_TRI(340, 826, 341),\n    COL_TRI(341, 827, 340),\n    COL_TRI(342, 828, 827),\n    COL_TRI(343, 342, 827),\n    COL_TRI(340, 827, 828),\n    COL_TRI(340, 352, 826),\n    COL_TRI(340, 828, 348),\n    COL_TRI(344, 345, 346),\n    COL_TRI(344, 346, 829),\n    COL_TRI(342, 343, 346),\n    COL_TRI(345, 342, 346),\n    COL_TRI(346, 343, 347),\n    COL_TRI(348, 828, 342),\n    COL_TRI(348, 342, 345),\n    COL_TRI(347, 829, 346),\n    COL_TRI(347, 830, 829),\n    COL_TRI(348, 345, 350),\n    COL_TRI(348, 350, 831),\n    COL_TRI(349, 350, 353),\n    COL_TRI(350, 344, 353),\n    COL_TRI(351, 832, 831),\n    COL_TRI(351, 831, 833),\n    COL_TRI(352, 348, 832),\n    COL_TRI(353, 829, 355),\n    COL_TRI(354, 834, 355),\n    COL_TRI(353, 355, 834),\n    COL_TRI(355, 829, 830),\n    COL_TRI(355, 830, 354),\n    COL_TRI(354, 835, 834),\n    COL_TRI(353, 344, 829),\n    COL_TRI(369, 837, 356),\n    COL_TRI(338, 357, 820),\n    COL_TRI(356, 357, 338),\n    COL_TRI(338, 327, 779),\n    COL_TRI(338, 779, 778),\n    COL_TRI(338, 778, 374),\n    COL_TRI(338, 374, 359),\n    COL_TRI(357, 369, 820),\n    COL_TRI(357, 837, 369),\n    COL_TRI(356, 837, 357),\n    COL_TRI(337, 358, 325),\n    COL_TRI(358, 321, 325),\n    COL_TRI(323, 772, 771),\n    COL_TRI(359, 772, 323),\n    COL_TRI(327, 323, 771),\n    COL_TRI(359, 374, 772),\n    COL_TRI(360, 361, 362),\n    COL_TRI(361, 312, 362),\n    COL_TRI(362, 333, 840),\n    COL_TRI(366, 335, 843),\n    COL_TRI(332, 841, 840),\n    COL_TRI(332, 840, 333),\n    COL_TRI(362, 840, 363),\n    COL_TRI(363, 840, 841),\n    COL_TRI(364, 360, 363),\n    COL_TRI(363, 841, 366),\n    COL_TRI(360, 362, 363),\n    COL_TRI(365, 364, 363),\n    COL_TRI(316, 365, 363),\n    COL_TRI(366, 841, 332),\n    COL_TRI(366, 332, 335),\n    COL_TRI(366, 842, 356),\n    COL_TRI(335, 368, 846),\n    COL_TRI(335, 846, 847),\n    COL_TRI(335, 847, 843),\n    COL_TRI(361, 367, 312),\n    COL_TRI(367, 759, 312),\n    COL_TRI(312, 759, 365),\n    COL_TRI(312, 365, 316),\n    COL_TRI(368, 369, 356),\n    COL_TRI(368, 838, 846),\n    COL_TRI(356, 838, 368),\n    COL_TRI(373, 832, 372),\n    COL_TRI(356, 839, 838),\n    COL_TRI(370, 826, 352),\n    COL_TRI(352, 340, 348),\n    COL_TRI(371, 370, 373),\n    COL_TRI(371, 373, 848),\n    COL_TRI(372, 848, 373),\n    COL_TRI(370, 352, 373),\n    COL_TRI(373, 352, 832),\n    COL_TRI(364, 376, 360),\n    COL_TRI(372, 849, 848),\n    COL_TRI(353, 834, 836),\n    COL_TRI(374, 375, 772),\n    COL_TRI(375, 773, 772),\n    COL_TRI(376, 758, 360),\n    COL_TRI(254, 770, 763),\n    COL_TRI(254, 765, 770),\n    COL_TRI(377, 763, 770),\n    COL_TRI(378, 377, 770),\n    COL_TRI(258, 769, 764),\n    COL_TRI(366, 845, 842),\n    COL_TRI(366, 843, 844),\n    COL_TRI(327, 771, 774),\n    COL_TRI(327, 774, 779),\n    COL_TRI(21, 381, 382),\n    COL_TRI(21, 382, 19),\n    COL_TRI(384, 379, 20),\n    COL_TRI(379, 381, 16),\n    COL_TRI(20, 379, 16),\n    COL_TRI(380, 381, 379),\n    COL_TRI(381, 380, 382),\n    COL_TRI(19, 383, 23),\n    COL_TRI(19, 382, 383),\n    COL_TRI(382, 380, 383),\n    COL_TRI(383, 388, 23),\n    COL_TRI(380, 390, 383),\n    COL_TRI(36, 850, 384),\n    COL_TRI(379, 384, 380),\n    COL_TRI(26, 852, 32),\n    COL_TRI(36, 384, 20),\n    COL_TRI(32, 851, 41),\n    COL_TRI(41, 386, 28),\n    COL_TRI(41, 851, 386),\n    COL_TRI(385, 851, 852),\n    COL_TRI(32, 852, 851),\n    COL_TRI(386, 29, 28),\n    COL_TRI(386, 850, 29),\n    COL_TRI(385, 852, 387),\n    COL_TRI(26, 387, 852),\n    COL_TRI(387, 26, 37),\n    COL_TRI(388, 387, 37),\n    COL_TRI(389, 387, 388),\n    COL_TRI(389, 385, 387),\n    COL_TRI(390, 389, 383),\n    COL_TRI(388, 37, 23),\n    COL_TRI(389, 388, 383),\n    COL_TRI(36, 29, 850),\n    COL_TRI(22, 13, 24),\n    COL_TRI(27, 13, 22),\n    COL_TRI(25, 11, 39),\n    COL_TRI(39, 11, 10),\n    COL_TRI(39, 10, 38),\n    COL_TRI(27, 12, 13),\n    COL_TRI(31, 33, 27),\n    COL_TRI(33, 12, 27),\n    COL_TRI(40, 853, 34),\n    COL_TRI(38, 10, 42),\n    COL_TRI(38, 42, 30),\n    COL_TRI(30, 42, 33),\n    COL_TRI(30, 33, 31),\n    COL_TRI(34, 391, 44),\n    COL_TRI(34, 853, 391),\n    COL_TRI(391, 854, 855),\n    COL_TRI(44, 391, 855),\n    COL_TRI(391, 853, 854),\n    COL_TRI(40, 854, 853),\n    COL_TRI(394, 393, 403),\n    COL_TRI(43, 854, 40),\n    COL_TRI(43, 855, 854),\n    COL_TRI(44, 855, 43),\n    COL_TRI(392, 400, 856),\n    COL_TRI(392, 394, 403),\n    COL_TRI(392, 856, 394),\n    COL_TRI(393, 856, 400),\n    COL_TRI(394, 856, 393),\n    COL_TRI(400, 401, 860),\n    COL_TRI(395, 396, 397),\n    COL_TRI(395, 397, 398),\n    COL_TRI(396, 857, 397),\n    COL_TRI(397, 857, 399),\n    COL_TRI(397, 399, 398),\n    COL_TRI(398, 399, 858),\n    COL_TRI(399, 857, 859),\n    COL_TRI(399, 859, 858),\n    COL_TRI(398, 858, 395),\n    COL_TRI(396, 859, 857),\n    COL_TRI(392, 401, 400),\n    COL_TRI(400, 860, 393),\n    COL_TRI(404, 864, 863),\n    COL_TRI(401, 402, 860),\n    COL_TRI(393, 860, 402),\n    COL_TRI(393, 402, 403),\n    COL_TRI(392, 861, 401),\n    COL_TRI(401, 861, 402),\n    COL_TRI(402, 861, 392),\n    COL_TRI(403, 402, 392),\n    COL_TRI(404, 405, 862),\n    COL_TRI(404, 863, 405),\n    COL_TRI(404, 408, 864),\n    COL_TRI(409, 871, 872),\n    COL_TRI(405, 865, 862),\n    COL_TRI(405, 406, 865),\n    COL_TRI(406, 867, 868),\n    COL_TRI(406, 868, 865),\n    COL_TRI(407, 868, 867),\n    COL_TRI(407, 867, 869),\n    COL_TRI(407, 869, 870),\n    COL_TRI(408, 866, 864),\n    COL_TRI(410, 409, 873),\n    COL_TRI(411, 872, 871),\n    COL_TRI(409, 872, 873),\n    COL_TRI(410, 873, 412),\n    COL_TRI(411, 871, 416),\n    COL_TRI(412, 874, 410),\n    COL_TRI(412, 413, 874),\n    COL_TRI(413, 875, 874),\n    COL_TRI(419, 420, 418),\n    COL_TRI(413, 414, 875),\n    COL_TRI(414, 876, 875),\n    COL_TRI(414, 877, 876),\n    COL_TRI(415, 876, 877),\n    COL_TRI(415, 877, 878),\n    COL_TRI(416, 415, 878),\n    COL_TRI(416, 878, 411),\n    COL_TRI(417, 419, 418),\n    COL_TRI(418, 879, 417),\n    COL_TRI(418, 420, 879),\n    COL_TRI(423, 427, 425),\n    COL_TRI(420, 880, 879),\n    COL_TRI(417, 879, 880),\n    COL_TRI(417, 421, 419),\n    COL_TRI(417, 880, 421),\n    COL_TRI(420, 881, 880),\n    COL_TRI(419, 881, 420),\n    COL_TRI(421, 880, 881),\n    COL_TRI(421, 881, 419),\n    COL_TRI(422, 481, 423),\n    COL_TRI(422, 882, 481),\n    COL_TRI(428, 429, 884),\n    COL_TRI(424, 422, 423),\n    COL_TRI(423, 425, 426),\n    COL_TRI(425, 447, 426),\n    COL_TRI(426, 446, 424),\n    COL_TRI(423, 426, 424),\n    COL_TRI(427, 883, 448),\n    COL_TRI(427, 448, 425),\n    COL_TRI(428, 430, 429),\n    COL_TRI(432, 889, 890),\n    COL_TRI(429, 885, 884),\n    COL_TRI(429, 886, 885),\n    COL_TRI(428, 887, 430),\n    COL_TRI(430, 887, 886),\n    COL_TRI(430, 886, 429),\n    COL_TRI(431, 888, 889),\n    COL_TRI(431, 889, 432),\n    COL_TRI(432, 890, 433),\n    COL_TRI(433, 890, 891),\n    COL_TRI(433, 891, 434),\n    COL_TRI(434, 891, 893),\n    COL_TRI(434, 893, 435),\n    COL_TRI(435, 893, 894),\n    COL_TRI(435, 894, 895),\n    COL_TRI(436, 896, 897),\n    COL_TRI(436, 897, 898),\n    COL_TRI(437, 436, 899),\n    COL_TRI(437, 896, 436),\n    COL_TRI(437, 900, 897),\n    COL_TRI(437, 897, 896),\n    COL_TRI(438, 437, 899),\n    COL_TRI(438, 901, 437),\n    COL_TRI(437, 901, 902),\n    COL_TRI(437, 902, 900),\n    COL_TRI(439, 438, 899),\n    COL_TRI(439, 899, 436),\n    COL_TRI(439, 436, 898),\n    COL_TRI(439, 898, 441),\n    COL_TRI(442, 444, 443),\n    COL_TRI(440, 903, 441),\n    COL_TRI(441, 903, 904),\n    COL_TRI(441, 904, 905),\n    COL_TRI(441, 905, 439),\n    COL_TRI(439, 905, 906),\n    COL_TRI(439, 906, 907),\n    COL_TRI(439, 907, 440),\n    COL_TRI(440, 908, 903),\n    COL_TRI(440, 907, 908),\n    COL_TRI(428, 892, 887),\n    COL_TRI(443, 444, 445),\n    COL_TRI(443, 445, 442),\n    COL_TRI(443, 909, 910),\n    COL_TRI(443, 910, 442),\n    COL_TRI(442, 910, 911),\n    COL_TRI(442, 445, 444),\n    COL_TRI(442, 911, 445),\n    COL_TRI(444, 912, 909),\n    COL_TRI(444, 909, 443),\n    COL_TRI(445, 911, 912),\n    COL_TRI(445, 912, 444),\n    COL_TRI(446, 913, 480),\n    COL_TRI(446, 480, 424),\n    COL_TRI(447, 449, 426),\n    COL_TRI(447, 914, 449),\n    COL_TRI(448, 883, 481),\n    COL_TRI(449, 914, 448),\n    COL_TRI(449, 448, 481),\n    COL_TRI(450, 915, 916),\n    COL_TRI(450, 916, 917),\n    COL_TRI(451, 450, 917),\n    COL_TRI(451, 917, 468),\n    COL_TRI(456, 922, 923),\n    COL_TRI(452, 916, 920),\n    COL_TRI(452, 917, 916),\n    COL_TRI(453, 454, 921),\n    COL_TRI(453, 921, 493),\n    COL_TRI(454, 916, 921),\n    COL_TRI(454, 920, 916),\n    COL_TRI(455, 922, 456),\n    COL_TRI(455, 456, 457),\n    COL_TRI(456, 923, 924),\n    COL_TRI(458, 923, 922),\n    COL_TRI(456, 924, 925),\n    COL_TRI(458, 922, 455),\n    COL_TRI(459, 461, 926),\n    COL_TRI(460, 927, 461),\n    COL_TRI(460, 461, 459),\n    COL_TRI(461, 927, 462),\n    COL_TRI(461, 462, 926),\n    COL_TRI(462, 927, 460),\n    COL_TRI(457, 456, 925),\n    COL_TRI(463, 465, 464),\n    COL_TRI(464, 465, 928),\n    COL_TRI(465, 466, 928),\n    COL_TRI(463, 929, 465),\n    COL_TRI(465, 929, 466),\n    COL_TRI(466, 929, 463),\n    COL_TRI(467, 930, 931),\n    COL_TRI(467, 931, 932),\n    COL_TRI(472, 471, 469),\n    COL_TRI(468, 918, 919),\n    COL_TRI(468, 919, 451),\n    COL_TRI(451, 915, 450),\n    COL_TRI(469, 933, 934),\n    COL_TRI(469, 934, 474),\n    COL_TRI(469, 474, 472),\n    COL_TRI(470, 933, 469),\n    COL_TRI(471, 470, 469),\n    COL_TRI(473, 934, 933),\n    COL_TRI(474, 934, 473),\n    COL_TRI(474, 473, 472),\n    COL_TRI(470, 475, 933),\n    COL_TRI(475, 476, 933),\n    COL_TRI(476, 473, 933),\n    COL_TRI(473, 476, 471),\n    COL_TRI(473, 471, 472),\n    COL_TRI(452, 920, 477),\n    COL_TRI(452, 477, 935),\n    COL_TRI(481, 882, 480),\n    COL_TRI(477, 936, 478),\n    COL_TRI(477, 478, 935),\n    COL_TRI(478, 453, 935),\n    COL_TRI(478, 479, 453),\n    COL_TRI(478, 937, 479),\n    COL_TRI(479, 937, 454),\n    COL_TRI(479, 454, 453),\n    COL_TRI(478, 936, 937),\n    COL_TRI(449, 481, 480),\n    COL_TRI(480, 913, 449),\n    COL_TRI(485, 943, 944),\n    COL_TRI(482, 484, 483),\n    COL_TRI(482, 938, 484),\n    COL_TRI(483, 484, 939),\n    COL_TRI(484, 938, 940),\n    COL_TRI(484, 940, 939),\n    COL_TRI(482, 940, 938),\n    COL_TRI(482, 941, 940),\n    COL_TRI(483, 939, 942),\n    COL_TRI(485, 486, 943),\n    COL_TRI(486, 941, 482),\n    COL_TRI(486, 482, 943),\n    COL_TRI(482, 483, 487),\n    COL_TRI(487, 943, 482),\n    COL_TRI(487, 944, 943),\n    COL_TRI(483, 942, 945),\n    COL_TRI(483, 945, 487),\n    COL_TRI(488, 946, 485),\n    COL_TRI(488, 485, 944),\n    COL_TRI(487, 488, 944),\n    COL_TRI(487, 945, 946),\n    COL_TRI(487, 946, 488),\n    COL_TRI(475, 470, 471),\n    COL_TRI(475, 471, 476),\n    COL_TRI(489, 947, 490),\n    COL_TRI(489, 490, 948),\n    COL_TRI(490, 492, 491),\n    COL_TRI(490, 491, 948),\n    COL_TRI(490, 947, 949),\n    COL_TRI(491, 950, 489),\n    COL_TRI(491, 489, 948),\n    COL_TRI(492, 950, 491),\n    COL_TRI(492, 949, 950),\n    COL_TRI(490, 949, 492),\n    COL_TRI(493, 918, 468),\n    COL_TRI(493, 921, 918),\n    COL_TRI(451, 919, 915),\n    COL_TRI(494, 951, 952),\n    COL_TRI(494, 952, 953),\n    COL_TRI(494, 953, 497),\n    COL_TRI(494, 954, 951),\n    COL_TRI(495, 498, 496),\n    COL_TRI(496, 955, 956),\n    COL_TRI(496, 956, 495),\n    COL_TRI(496, 498, 494),\n    COL_TRI(496, 494, 497),\n    COL_TRI(497, 955, 496),\n    COL_TRI(500, 958, 499),\n    COL_TRI(495, 957, 498),\n    COL_TRI(497, 953, 955),\n    COL_TRI(498, 954, 494),\n    COL_TRI(498, 957, 954),\n    COL_TRI(499, 958, 959),\n    COL_TRI(500, 499, 960),\n    COL_TRI(501, 958, 500),\n    COL_TRI(501, 959, 958),\n    COL_TRI(502, 503, 961),\n    COL_TRI(502, 962, 503),\n    COL_TRI(503, 962, 963),\n    COL_TRI(504, 962, 502),\n    COL_TRI(504, 963, 962),\n    COL_TRI(505, 501, 500),\n    COL_TRI(506, 501, 505),\n    COL_TRI(506, 960, 501),\n    COL_TRI(506, 965, 516),\n    COL_TRI(505, 500, 507),\n    COL_TRI(507, 500, 960),\n    COL_TRI(507, 960, 506),\n    COL_TRI(508, 504, 502),\n    COL_TRI(509, 504, 508),\n    COL_TRI(509, 961, 504),\n    COL_TRI(508, 502, 510),\n    COL_TRI(510, 502, 961),\n    COL_TRI(510, 961, 509),\n    COL_TRI(506, 516, 964),\n    COL_TRI(512, 968, 508),\n    COL_TRI(506, 517, 965),\n    COL_TRI(506, 964, 507),\n    COL_TRI(511, 966, 512),\n    COL_TRI(512, 967, 968),\n    COL_TRI(512, 966, 967),\n    COL_TRI(512, 513, 511),\n    COL_TRI(512, 510, 513),\n    COL_TRI(512, 508, 510),\n    COL_TRI(516, 973, 964),\n    COL_TRI(513, 969, 511),\n    COL_TRI(513, 970, 969),\n    COL_TRI(511, 969, 966),\n    COL_TRI(514, 970, 971),\n    COL_TRI(514, 969, 970),\n    COL_TRI(514, 966, 969),\n    COL_TRI(514, 967, 966),\n    COL_TRI(515, 516, 965),\n    COL_TRI(515, 972, 516),\n    COL_TRI(516, 972, 973),\n    COL_TRI(519, 977, 521),\n    COL_TRI(517, 515, 965),\n    COL_TRI(515, 974, 975),\n    COL_TRI(515, 975, 976),\n    COL_TRI(517, 974, 515),\n    COL_TRI(515, 973, 972),\n    COL_TRI(515, 976, 973),\n    COL_TRI(518, 520, 519),\n    COL_TRI(519, 520, 977),\n    COL_TRI(524, 525, 981),\n    COL_TRI(520, 522, 977),\n    COL_TRI(521, 977, 522),\n    COL_TRI(521, 522, 523),\n    COL_TRI(520, 978, 522),\n    COL_TRI(518, 978, 520),\n    COL_TRI(522, 978, 518),\n    COL_TRI(523, 522, 518),\n    COL_TRI(524, 530, 979),\n    COL_TRI(524, 979, 980),\n    COL_TRI(524, 980, 525),\n    COL_TRI(525, 982, 981),\n    COL_TRI(525, 526, 982),\n    COL_TRI(526, 984, 982),\n    COL_TRI(526, 985, 984),\n    COL_TRI(527, 528, 986),\n    COL_TRI(527, 987, 528),\n    COL_TRI(527, 985, 987),\n    COL_TRI(527, 984, 985),\n    COL_TRI(528, 529, 986),\n    COL_TRI(529, 983, 986),\n    COL_TRI(534, 536, 535),\n    COL_TRI(530, 983, 529),\n    COL_TRI(530, 529, 979),\n    COL_TRI(531, 543, 988),\n    COL_TRI(531, 989, 543),\n    COL_TRI(532, 601, 989),\n    COL_TRI(533, 990, 989),\n    COL_TRI(538, 999, 997),\n    COL_TRI(534, 991, 536),\n    COL_TRI(535, 536, 992),\n    COL_TRI(536, 991, 993),\n    COL_TRI(537, 991, 534),\n    COL_TRI(537, 993, 991),\n    COL_TRI(536, 993, 992),\n    COL_TRI(535, 992, 996),\n    COL_TRI(538, 997, 998),\n    COL_TRI(543, 5, 1001),\n    COL_TRI(539, 999, 563),\n    COL_TRI(539, 1000, 999),\n    COL_TRI(540, 999, 1000),\n    COL_TRI(541, 538, 998),\n    COL_TRI(542, 5, 2),\n    COL_TRI(542, 1001, 5),\n    COL_TRI(543, 6, 5),\n    COL_TRI(1, 1007, 2),\n    COL_TRI(544, 545, 1008),\n    COL_TRI(545, 1009, 1010),\n    COL_TRI(545, 1010, 1008),\n    COL_TRI(546, 1010, 1009),\n    COL_TRI(544, 1008, 547),\n    COL_TRI(546, 1009, 551),\n    COL_TRI(547, 548, 1014),\n    COL_TRI(547, 1014, 544),\n    COL_TRI(548, 1015, 1014),\n    COL_TRI(548, 549, 1015),\n    COL_TRI(549, 1016, 1017),\n    COL_TRI(549, 1017, 1015),\n    COL_TRI(553, 1025, 1022),\n    COL_TRI(550, 1017, 1016),\n    COL_TRI(550, 1016, 1018),\n    COL_TRI(551, 1018, 546),\n    COL_TRI(551, 550, 1018),\n    COL_TRI(552, 553, 1019),\n    COL_TRI(552, 1020, 553),\n    COL_TRI(553, 1020, 1021),\n    COL_TRI(553, 1022, 1023),\n    COL_TRI(553, 1024, 1025),\n    COL_TRI(553, 1021, 1024),\n    COL_TRI(554, 1025, 1024),\n    COL_TRI(555, 994, 1026),\n    COL_TRI(555, 990, 994),\n    COL_TRI(556, 555, 1026),\n    COL_TRI(533, 994, 990),\n    COL_TRI(556, 1026, 1027),\n    COL_TRI(557, 1028, 1029),\n    COL_TRI(557, 1030, 1028),\n    COL_TRI(559, 557, 558),\n    COL_TRI(558, 557, 1029),\n    COL_TRI(560, 1030, 559),\n    COL_TRI(560, 1028, 1030),\n    COL_TRI(559, 1030, 557),\n    COL_TRI(558, 1029, 1032),\n    COL_TRI(539, 563, 561),\n    COL_TRI(561, 1033, 539),\n    COL_TRI(562, 539, 1033),\n    COL_TRI(540, 1000, 1002),\n    COL_TRI(563, 1003, 1006),\n    COL_TRI(563, 1004, 561),\n    COL_TRI(563, 1005, 1004),\n    COL_TRI(563, 538, 1005),\n    COL_TRI(563, 1006, 1035),\n    COL_TRI(564, 563, 1036),\n    COL_TRI(564, 1003, 563),\n    COL_TRI(565, 1003, 564),\n    COL_TRI(565, 1006, 1003),\n    COL_TRI(541, 1005, 538),\n    COL_TRI(561, 565, 1037),\n    COL_TRI(561, 1006, 565),\n    COL_TRI(562, 1033, 1034),\n    COL_TRI(573, 1043, 1044),\n    COL_TRI(566, 1038, 567),\n    COL_TRI(566, 1039, 1038),\n    COL_TRI(567, 568, 566),\n    COL_TRI(568, 1040, 566),\n    COL_TRI(569, 566, 570),\n    COL_TRI(569, 1039, 566),\n    COL_TRI(570, 566, 1040),\n    COL_TRI(571, 1038, 1039),\n    COL_TRI(571, 1039, 569),\n    COL_TRI(572, 567, 1041),\n    COL_TRI(572, 573, 567),\n    COL_TRI(573, 1042, 1043),\n    COL_TRI(577, 1048, 578),\n    COL_TRI(574, 1042, 1046),\n    COL_TRI(574, 1043, 1042),\n    COL_TRI(575, 1043, 574),\n    COL_TRI(575, 1044, 1043),\n    COL_TRI(576, 568, 1044),\n    COL_TRI(576, 1044, 575),\n    COL_TRI(570, 1040, 1045),\n    COL_TRI(577, 578, 1047),\n    COL_TRI(583, 1052, 1053),\n    COL_TRI(580, 579, 1048),\n    COL_TRI(580, 1048, 577),\n    COL_TRI(578, 1048, 579),\n    COL_TRI(581, 579, 580),\n    COL_TRI(581, 1050, 579),\n    COL_TRI(579, 1051, 1052),\n    COL_TRI(579, 1050, 1051),\n    COL_TRI(579, 1052, 1049),\n    COL_TRI(579, 1049, 578),\n    COL_TRI(582, 1050, 581),\n    COL_TRI(582, 1051, 1050),\n    COL_TRI(583, 1049, 1052),\n    COL_TRI(588, 1056, 1058),\n    COL_TRI(584, 586, 1054),\n    COL_TRI(585, 586, 584),\n    COL_TRI(585, 1055, 586),\n    COL_TRI(586, 1056, 1057),\n    COL_TRI(586, 1058, 1056),\n    COL_TRI(586, 1059, 1058),\n    COL_TRI(586, 1055, 1059),\n    COL_TRI(586, 1057, 1060),\n    COL_TRI(586, 1060, 1054),\n    COL_TRI(587, 1055, 585),\n    COL_TRI(587, 1059, 1055),\n    COL_TRI(588, 1058, 1061),\n    COL_TRI(45, 1064, 592),\n    COL_TRI(589, 1057, 1063),\n    COL_TRI(589, 1060, 1057),\n    COL_TRI(584, 1054, 1062),\n    COL_TRI(590, 45, 35),\n    COL_TRI(590, 1064, 45),\n    COL_TRI(591, 46, 45),\n    COL_TRI(45, 1065, 591),\n    COL_TRI(45, 592, 1065),\n    COL_TRI(592, 1064, 590),\n    COL_TRI(593, 592, 1068),\n    COL_TRI(593, 1065, 592),\n    COL_TRI(590, 1068, 592),\n    COL_TRI(594, 591, 1065),\n    COL_TRI(594, 1065, 593),\n    COL_TRI(595, 591, 594),\n    COL_TRI(595, 1067, 591),\n    COL_TRI(591, 1066, 46),\n    COL_TRI(591, 1067, 1066),\n    COL_TRI(598, 1071, 1072),\n    COL_TRI(47, 1066, 608),\n    COL_TRI(47, 46, 1066),\n    COL_TRI(1, 1011, 1007),\n    COL_TRI(596, 1011, 1069),\n    COL_TRI(596, 1007, 1011),\n    COL_TRI(597, 598, 1070),\n    COL_TRI(597, 1071, 598),\n    COL_TRI(598, 1072, 1073),\n    COL_TRI(601, 6, 543),\n    COL_TRI(599, 1072, 1071),\n    COL_TRI(599, 1071, 597),\n    COL_TRI(600, 1020, 552),\n    COL_TRI(600, 1021, 1020),\n    COL_TRI(554, 1024, 1031),\n    COL_TRI(601, 1013, 6),\n    COL_TRI(602, 1013, 995),\n    COL_TRI(602, 1012, 1013),\n    COL_TRI(6, 1013, 1012),\n    COL_TRI(6, 1012, 7),\n    COL_TRI(602, 7, 1012),\n    COL_TRI(602, 606, 7),\n    COL_TRI(603, 602, 995),\n    COL_TRI(602, 603, 606),\n    COL_TRI(604, 35, 47),\n    COL_TRI(604, 590, 35),\n    COL_TRI(604, 47, 603),\n    COL_TRI(604, 603, 995),\n    COL_TRI(47, 608, 603),\n    COL_TRI(605, 541, 998),\n    COL_TRI(595, 594, 606),\n    COL_TRI(606, 594, 988),\n    COL_TRI(594, 593, 988),\n    COL_TRI(607, 988, 593),\n    COL_TRI(590, 604, 607),\n    COL_TRI(590, 607, 1068),\n    COL_TRI(607, 593, 1068),\n    COL_TRI(608, 595, 606),\n    COL_TRI(606, 603, 608),\n    COL_TRI(608, 1067, 595),\n    COL_TRI(608, 1066, 1067),\n    COL_TRI(605, 4, 604),\n    COL_TRI(604, 995, 605),\n    COL_TRI(532, 995, 601),\n    COL_TRI(605, 532, 4),\n    COL_TRI(605, 998, 1074),\n    COL_TRI(609, 1075, 612),\n    COL_TRI(609, 1076, 1075),\n    COL_TRI(610, 1076, 609),\n    COL_TRI(611, 609, 612),\n    COL_TRI(611, 610, 609),\n    COL_TRI(610, 1077, 1076),\n    COL_TRI(612, 1075, 1078),\n    COL_TRI(612, 1078, 611),\n    COL_TRI(611, 1077, 610),\n    COL_TRI(611, 1078, 1077),\n    COL_TRI(613, 614, 615),\n    COL_TRI(613, 1079, 614),\n    COL_TRI(614, 1079, 1080),\n    COL_TRI(614, 1080, 615),\n    COL_TRI(613, 1081, 1079),\n    COL_TRI(616, 1081, 613),\n    COL_TRI(615, 1080, 1082),\n    COL_TRI(613, 615, 616),\n    COL_TRI(615, 1082, 616),\n    COL_TRI(616, 1082, 1081),\n    COL_TRI_INIT(SURFACE_BURNING, 4),\n    COL_TRI(56, 57, 58),\n    COL_TRI(56, 59, 57),\n    COL_TRI(60, 61, 62),\n    COL_TRI(60, 63, 61),\n    COL_TRI_INIT(SURFACE_DEATH_PLANE, 2),\n    COL_TRI(1083, 1084, 1085),\n    COL_TRI(1083, 1085, 1086),\n    COL_TRI_INIT(SURFACE_VERY_SLIPPERY, 2),\n    COL_TRI(52, 53, 54),\n    COL_TRI(52, 55, 53),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 216),\n    COL_TRI(555, 556, 1069),\n    COL_TRI(1, 4, 551),\n    COL_TRI(1, 551, 544),\n    COL_TRI(1, 544, 1015),\n    COL_TRI(1, 1015, 555),\n    COL_TRI(544, 1014, 1015),\n    COL_TRI(1015, 1017, 550),\n    COL_TRI(1015, 550, 532),\n    COL_TRI(1015, 532, 990),\n    COL_TRI(1015, 990, 555),\n    COL_TRI(555, 1069, 1011),\n    COL_TRI(620, 619, 622),\n    COL_TRI(551, 545, 544),\n    COL_TRI(551, 1009, 545),\n    COL_TRI(1087, 8, 1097),\n    COL_TRI(1087, 9, 8),\n    COL_TRI(0, 9, 1087),\n    COL_TRI(0, 1087, 3),\n    COL_TRI(8, 7, 603),\n    COL_TRI(8, 603, 1097),\n    COL_TRI(86, 631, 87),\n    COL_TRI(620, 622, 621),\n    COL_TRI(79, 625, 120),\n    COL_TRI(79, 623, 625),\n    COL_TRI(84, 630, 629),\n    COL_TRI(84, 629, 85),\n    COL_TRI(86, 636, 631),\n    COL_TRI(644, 643, 646),\n    COL_TRI(635, 90, 92),\n    COL_TRI(635, 634, 90),\n    COL_TRI(96, 638, 95),\n    COL_TRI(96, 639, 638),\n    COL_TRI(100, 640, 642),\n    COL_TRI(100, 642, 102),\n    COL_TRI(653, 656, 654),\n    COL_TRI(644, 646, 645),\n    COL_TRI(647, 648, 650),\n    COL_TRI(647, 650, 649),\n    COL_TRI(655, 651, 653),\n    COL_TRI(655, 114, 651),\n    COL_TRI(653, 651, 656),\n    COL_TRI(668, 672, 691),\n    COL_TRI(662, 122, 121),\n    COL_TRI(662, 661, 122),\n    COL_TRI(137, 681, 680),\n    COL_TRI(137, 680, 133),\n    COL_TRI(137, 133, 139),\n    COL_TRI(137, 139, 685),\n    COL_TRI(137, 685, 684),\n    COL_TRI(137, 138, 681),\n    COL_TRI(696, 697, 695),\n    COL_TRI(668, 691, 147),\n    COL_TRI(668, 147, 127),\n    COL_TRI(668, 127, 664),\n    COL_TRI(664, 666, 667),\n    COL_TRI(664, 667, 668),\n    COL_TRI(692, 693, 694),\n    COL_TRI(692, 694, 128),\n    COL_TRI(696, 698, 697),\n    COL_TRI(174, 712, 711),\n    COL_TRI(158, 701, 157),\n    COL_TRI(158, 157, 161),\n    COL_TRI(166, 165, 164),\n    COL_TRI(166, 164, 162),\n    COL_TRI(617, 1098, 66),\n    COL_TRI(617, 72, 1098),\n    COL_TRI(191, 188, 187),\n    COL_TRI(174, 711, 173),\n    COL_TRI(178, 715, 180),\n    COL_TRI(178, 713, 715),\n    COL_TRI(182, 718, 185),\n    COL_TRI(182, 716, 718),\n    COL_TRI(191, 187, 190),\n    COL_TRI(69, 1098, 192),\n    COL_TRI(69, 192, 71),\n    COL_TRI(723, 722, 725),\n    COL_TRI(723, 725, 724),\n    COL_TRI(726, 729, 728),\n    COL_TRI(726, 727, 729),\n    COL_TRI(740, 218, 1089),\n    COL_TRI(219, 225, 746),\n    COL_TRI(740, 1089, 1088),\n    COL_TRI(1088, 737, 740),\n    COL_TRI(1089, 739, 1090),\n    COL_TRI(1089, 218, 739),\n    COL_TRI(1088, 1099, 737),\n    COL_TRI(1090, 737, 1099),\n    COL_TRI(1090, 739, 737),\n    COL_TRI(229, 744, 228),\n    COL_TRI(219, 746, 1091),\n    COL_TRI(1092, 1101, 1102),\n    COL_TRI(743, 219, 220),\n    COL_TRI(743, 225, 219),\n    COL_TRI(1091, 746, 745),\n    COL_TRI(1091, 745, 1100),\n    COL_TRI(220, 745, 743),\n    COL_TRI(220, 1100, 745),\n    COL_TRI(220, 219, 750),\n    COL_TRI(220, 750, 749),\n    COL_TRI(377, 260, 802),\n    COL_TRI(1092, 1102, 1103),\n    COL_TRI(795, 790, 789),\n    COL_TRI(795, 298, 790),\n    COL_TRI(787, 796, 795),\n    COL_TRI(787, 795, 789),\n    COL_TRI(787, 786, 797),\n    COL_TRI(787, 797, 796),\n    COL_TRI(377, 802, 302),\n    COL_TRI(371, 848, 831),\n    COL_TRI(804, 806, 306),\n    COL_TRI(804, 803, 806),\n    COL_TRI(805, 807, 809),\n    COL_TRI(805, 809, 305),\n    COL_TRI(810, 812, 811),\n    COL_TRI(810, 813, 812),\n    COL_TRI(376, 364, 365),\n    COL_TRI(371, 260, 377),\n    COL_TRI(371, 835, 260),\n    COL_TRI(371, 834, 835),\n    COL_TRI(371, 350, 834),\n    COL_TRI(371, 831, 350),\n    COL_TRI(375, 374, 778),\n    COL_TRI(375, 778, 267),\n    COL_TRI(376, 365, 251),\n    COL_TRI(416, 871, 409),\n    COL_TRI(395, 859, 396),\n    COL_TRI(395, 858, 859),\n    COL_TRI(866, 406, 405),\n    COL_TRI(866, 405, 863),\n    COL_TRI(866, 863, 864),\n    COL_TRI(866, 867, 406),\n    COL_TRI(866, 870, 869),\n    COL_TRI(866, 869, 867),\n    COL_TRI(416, 875, 876),\n    COL_TRI(416, 874, 875),\n    COL_TRI(416, 410, 874),\n    COL_TRI(416, 409, 410),\n    COL_TRI(416, 876, 415),\n    COL_TRI(730, 731, 733),\n    COL_TRI(730, 733, 732),\n    COL_TRI(889, 888, 894),\n    COL_TRI(882, 424, 480),\n    COL_TRI(889, 891, 890),\n    COL_TRI(889, 894, 893),\n    COL_TRI(889, 893, 891),\n    COL_TRI(909, 912, 911),\n    COL_TRI(909, 911, 910),\n    COL_TRI(882, 422, 424),\n    COL_TRI(454, 937, 936),\n    COL_TRI(914, 425, 448),\n    COL_TRI(914, 447, 425),\n    COL_TRI(426, 449, 913),\n    COL_TRI(426, 913, 446),\n    COL_TRI(918, 916, 915),\n    COL_TRI(918, 915, 919),\n    COL_TRI(950, 947, 489),\n    COL_TRI(454, 936, 477),\n    COL_TRI(939, 485, 946),\n    COL_TRI(946, 945, 942),\n    COL_TRI(946, 942, 939),\n    COL_TRI(939, 940, 941),\n    COL_TRI(939, 941, 486),\n    COL_TRI(939, 486, 485),\n    COL_TRI(950, 949, 947),\n    COL_TRI(953, 952, 956),\n    COL_TRI(953, 956, 955),\n    COL_TRI(951, 956, 952),\n    COL_TRI(951, 495, 956),\n    COL_TRI(957, 495, 951),\n    COL_TRI(957, 951, 954),\n    COL_TRI(529, 985, 526),\n    COL_TRI(529, 987, 985),\n    COL_TRI(529, 528, 987),\n    COL_TRI(529, 526, 525),\n    COL_TRI(529, 525, 980),\n    COL_TRI(529, 980, 979),\n    COL_TRI(1093, 1104, 1105),\n    COL_TRI(1093, 1105, 1106),\n    COL_TRI(992, 993, 537),\n    COL_TRI(992, 537, 996),\n    COL_TRI(1000, 1005, 541),\n    COL_TRI(1000, 541, 1107),\n    COL_TRI(1094, 1022, 1025),\n    COL_TRI(1094, 1025, 554),\n    COL_TRI(1095, 1022, 1094),\n    COL_TRI(1095, 1023, 1022),\n    COL_TRI(542, 2, 1007),\n    COL_TRI(542, 1007, 596),\n    COL_TRI(1061, 1059, 587),\n    COL_TRI(1096, 1072, 599),\n    COL_TRI(1096, 1073, 1072),\n    COL_TRI(1031, 1024, 1021),\n    COL_TRI(1031, 1021, 600),\n    COL_TRI(1062, 1054, 1060),\n    COL_TRI(1062, 1060, 589),\n    COL_TRI(1047, 1049, 583),\n    COL_TRI(1061, 1058, 1059),\n    COL_TRI(1063, 1057, 1056),\n    COL_TRI(1063, 1056, 588),\n    COL_TRI(1053, 1051, 582),\n    COL_TRI(1053, 1052, 1051),\n    COL_TRI(1047, 578, 1049),\n    COL_TRI(1032, 1029, 1028),\n    COL_TRI(1046, 1042, 573),\n    COL_TRI(1046, 573, 572),\n    COL_TRI(1041, 567, 1038),\n    COL_TRI(1041, 1038, 571),\n    COL_TRI(1034, 1033, 561),\n    COL_TRI(1034, 561, 1037),\n    COL_TRI(1079, 1082, 1080),\n    COL_TRI(1032, 1028, 560),\n    COL_TRI(1027, 994, 533),\n    COL_TRI(1027, 1026, 994),\n    COL_TRI(1075, 1076, 1077),\n    COL_TRI(1075, 1077, 1078),\n    COL_TRI(1079, 1081, 1082),\n    COL_TRI_INIT(SURFACE_HORIZONTAL_WIND, 34),\n    COL_TRI_SPECIAL(10, 11, 12, 0x140),\n    COL_TRI_SPECIAL(11, 13, 12, 0x140),\n    COL_TRI_SPECIAL(11, 14, 13, 0x140),\n    COL_TRI_SPECIAL(14, 15, 13, 0x140),\n    COL_TRI_SPECIAL(16, 17, 18, 0x140),\n    COL_TRI_SPECIAL(16, 19, 20, 0x140),\n    COL_TRI_SPECIAL(16, 21, 19, 0x140),\n    COL_TRI_SPECIAL(16, 18, 21, 0x140),\n    COL_TRI_SPECIAL(22, 19, 23, 0x140),\n    COL_TRI_SPECIAL(22, 24, 19, 0x140),\n    COL_TRI_SPECIAL(25, 39, 36, 0x140),\n    COL_TRI_SPECIAL(20, 25, 36, 0x140),\n    COL_TRI_SPECIAL(26, 31, 27, 0x140),\n    COL_TRI_SPECIAL(27, 22, 23, 0x140),\n    COL_TRI_SPECIAL(27, 23, 37, 0x140),\n    COL_TRI_SPECIAL(26, 27, 37, 0x140),\n    COL_TRI_SPECIAL(28, 29, 38, 0x140),\n    COL_TRI_SPECIAL(29, 39, 38, 0x140),\n    COL_TRI_SPECIAL(29, 36, 39, 0x140),\n    COL_TRI_SPECIAL(10, 33, 42, 0x140),\n    COL_TRI_SPECIAL(30, 28, 38, 0x140),\n    COL_TRI_SPECIAL(26, 32, 31, 0x140),\n    COL_TRI_SPECIAL(31, 34, 30, 0x140),\n    COL_TRI_SPECIAL(32, 40, 31, 0x140),\n    COL_TRI_SPECIAL(31, 40, 34, 0x140),\n    COL_TRI_SPECIAL(28, 30, 34, 0x140),\n    COL_TRI_SPECIAL(28, 34, 41, 0x140),\n    COL_TRI_SPECIAL(10, 12, 33, 0x140),\n    COL_TRI_SPECIAL(32, 43, 40, 0x140),\n    COL_TRI_SPECIAL(34, 44, 41, 0x140),\n    COL_TRI_SPECIAL(32, 44, 43, 0x140),\n    COL_TRI_SPECIAL(32, 41, 44, 0x140),\n    COL_TRI_SPECIAL(35, 45, 46, 0x100),\n    COL_TRI_SPECIAL(35, 46, 47, 0x100),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(23),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_null_start,   /*pos*/  2599, -1833,  2071, /*yaw*/   64), // unused, probably an early way to set initial position\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/  1902, -1833,  1063, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_04, /*pos*/  3803, -1833,  2036, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_05, /*pos*/ -4888, -2550,  5847, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_06, /*pos*/  5324, -2038,  6155, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_07, /*pos*/  -409, -3164,  5207, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_08, /*pos*/ -3193, -4726,  6670, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_08, /*pos*/ -4680, -1910,   296, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_09, /*pos*/  6506, -1295,   762, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0A, /*pos*/ -4629,   137,  -113, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0B, /*pos*/  2639,  2724,  -622, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0C, /*pos*/  3577,  2486, -2346, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0D, /*pos*/   614, -1116,  3671, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0D, /*pos*/  3554,  4276, -2346, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0E, /*pos*/  5280,  4937,   603, /*yaw*/  128),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0F, /*pos*/ -4197,  4608, -5119, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_10, /*pos*/  2628,  -143, -1611, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_11, /*pos*/  5094,  3440,  4029, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_12, /*pos*/ -3708,  2006,   270, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_13, /*pos*/  5994,  -988,  1341, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_14, /*pos*/  3917,   624, -1133, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_15, /*pos*/ -3981,  3328, -2736, /*yaw*/    0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_16, /*pos*/ -6053,  4096, -3197, /*yaw*/    0),\n    COL_END(),\n#endif\n};\n"
  },
  {
    "path": "levels/rr/areas/1/geo.inc.c",
    "content": "// 0x0E0009D0\nconst GeoLayout rr_geo_0009D0[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND(BACKGROUND_BELOW_CLOUDS, geo_skybox_main),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 20000, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(14, 0, 2000, 6000, 0, 0, -8000, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_ASM(0, geo_exec_flying_carpet_timer_update),\n                    GEO_DISPLAY_LIST(LAYER_ALPHA, dl_cruiser_metal_holes),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(0, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_cannon_circle_base),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/macro.inc.c",
    "content": "// 0x0702E9D8 - 0x0702EC3C\nconst MacroObject rr_seg7_macro_objs[] = {\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -5850, -1000,   -50),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -2950,  -190,   -50),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -5850,  1150,    50),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -5050,   800,   -50),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -4550,   650,   -50),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -5300,   200,   -50),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -3550,  1000,   -50),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -5800,  -400,   -50),\n    MACRO_OBJECT               (/*preset*/ macro_bobomb_buddy_opens_cannon_1, /*yaw*/   0, /*pos*/ -4200,  1648,     0),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_cannon_closed,               /*yaw*/   0, /*pos*/  5545,  3333, -2345, /*bhvParam*/ 0xC0),\n    MACRO_OBJECT               (/*preset*/ macro_box_1up,                     /*yaw*/   0, /*pos*/ -6750,  2600,   -50),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_circling_amp,                /*yaw*/   0, /*pos*/  6500,  -900,   900, /*bhvParam*/ AMP_BP_ROT_RADIUS_300),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_horizontal,        /*yaw*/   0, /*pos*/  6500, -1000,   900),\n    MACRO_OBJECT               (/*preset*/ macro_enemy_lakitu,                /*yaw*/   0, /*pos*/   615,  -584,     0),\n    MACRO_OBJECT               (/*preset*/ macro_recovery_heart,              /*yaw*/   0, /*pos*/  -550, -1050,   -50),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_horizontal_flying, /*yaw*/   0, /*pos*/   600, -1040,  1200),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_horizontal_flying, /*yaw*/   0, /*pos*/   600, -1040, -1300),\n    MACRO_OBJECT               (/*preset*/ macro_recovery_heart,              /*yaw*/   0, /*pos*/ -7071, -1705,   -31),\n    MACRO_OBJECT               (/*preset*/ macro_bobomb,                      /*yaw*/   0, /*pos*/ -3295, -1782,   524),\n    MACRO_OBJECT               (/*preset*/ macro_bobomb,                      /*yaw*/   0, /*pos*/ -5872, -1782,   572),\n    MACRO_OBJECT               (/*preset*/ macro_fly_guy,                     /*yaw*/   0, /*pos*/   971, -3059,  4912),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,        /*yaw*/   0, /*pos*/   615, -3275,  5660),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_vertical_flying,   /*yaw*/   0, /*pos*/ -2203, -3500,  6572),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,        /*yaw*/  90, /*pos*/ -1866, -1116,  4933),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,        /*yaw*/  90, /*pos*/   799, -1446,  6622),\n    MACRO_OBJECT               (/*preset*/ macro_1up,                         /*yaw*/   0, /*pos*/  6666, -1000,  6533),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,               /*yaw*/   0, /*pos*/  3960,   -41, -3640),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/  5680,   600, -2400),\n    MACRO_OBJECT               (/*preset*/ macro_breakable_box_no_coins,      /*yaw*/   0, /*pos*/  2560,  1000, -1600),\n    MACRO_OBJECT               (/*preset*/ macro_goomba,                      /*yaw*/   0, /*pos*/ -1440, -1960,  6640),\n    MACRO_OBJECT               (/*preset*/ macro_1up,                         /*yaw*/   0, /*pos*/  5040,  2100,   280),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_in_pole,          /*yaw*/   0, /*pos*/  3542,  4892, -2371),\n    MACRO_OBJECT               (/*preset*/ macro_enemy_lakitu,                /*yaw*/   0, /*pos*/  4714,  3507, -2371),\n    MACRO_OBJECT               (/*preset*/ macro_bobomb,                      /*yaw*/   0, /*pos*/  3485,  2889, -2057),\n    MACRO_OBJECT               (/*preset*/ macro_bobomb,                      /*yaw*/   0, /*pos*/  2628,  2893, -2371),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_horizontal,        /*yaw*/   0, /*pos*/  3542,  2923, -2371),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,        /*yaw*/   0, /*pos*/ -3342,  3222, -5071),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,        /*yaw*/   0, /*pos*/ -7771,  4352, -3871),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_circling_amp,                /*yaw*/   0, /*pos*/ -6571,  4000, -2328, /*bhvParam*/ AMP_BP_ROT_RADIUS_300),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal_flying, /*yaw*/  90, /*pos*/ -6057,  4676, -5242),\n    MACRO_OBJECT               (/*preset*/ macro_chuckya,                     /*yaw*/   0, /*pos*/  5114,  3828,  4028),\n    MACRO_OBJECT               (/*preset*/ macro_1up,                         /*yaw*/   0, /*pos*/  -165,  3543, -2352),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_vertical_flying,   /*yaw*/   0, /*pos*/   250,  1400,  -180),\n    MACRO_OBJECT               (/*preset*/ macro_1up,                         /*yaw*/   0, /*pos*/  -735,  2860,  -150),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_in_pole,          /*yaw*/   0, /*pos*/ -2175,  2365,   -60),\n    MACRO_OBJECT               (/*preset*/ macro_blue_coin_switch,            /*yaw*/   0, /*pos*/ -6930, -1791,   521),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/ -6500,  1700,     0),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/ -6200,  1700,     0),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/ -5900,  1700,     0),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/ -5600,  1700,     0),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/ -6750, -1495,     0),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/ -5300,  1700,     0),\n    MACRO_OBJECT               (/*preset*/ macro_fire_spitter,                /*yaw*/   0, /*pos*/ -3233,  1291,   -52),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/ -7338, -2260,  6700),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/ -7338, -2260,  6350),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/ -6715, -1900,  6700),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/ -6715, -1900,  6350),\n    MACRO_OBJECT               (/*preset*/ macro_box_1up_running_away,        /*yaw*/   0, /*pos*/ -4844, -4240,  6622),\n    MACRO_OBJECT               (/*preset*/ macro_box_1up_running_away,        /*yaw*/   0, /*pos*/ -3428,  6770, -5128),\n    MACRO_OBJECT               (/*preset*/ macro_box_star_act_6,              /*yaw*/   0, /*pos*/  5000,  4100,  4440),\n    MACRO_OBJECT               (/*preset*/ macro_fire_spitter,                /*yaw*/   0, /*pos*/ -6000,  -440,   -40),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/rr/areas/1/trajectory.inc.c",
    "content": "// 0x0702EC3C - 0x0702ECC0\nconst Trajectory rr_seg7_trajectory_0702EC3C[] = {\n    TRAJECTORY_POS(0, /*pos*/  4500, -1820,  2050),\n    TRAJECTORY_POS(1, /*pos*/  5250, -1840,  2050),\n    TRAJECTORY_POS(2, /*pos*/  5860, -1430,  2070),\n    TRAJECTORY_POS(3, /*pos*/  6260, -1430,  2070),\n    TRAJECTORY_POS(4, /*pos*/  6970, -1220,  2000),\n    TRAJECTORY_POS(5, /*pos*/  7300, -1160,  1745),\n    TRAJECTORY_POS(6, /*pos*/  7490, -1125,  1450),\n    TRAJECTORY_POS(7, /*pos*/  7560, -1065,  1040),\n    TRAJECTORY_POS(8, /*pos*/  7510, -1020,   630),\n    TRAJECTORY_POS(9, /*pos*/  7265,  -935,   310),\n    TRAJECTORY_POS(10, /*pos*/  6960,  -915,    90),\n    TRAJECTORY_POS(11, /*pos*/  6085,  -915,   -40),\n    TRAJECTORY_POS(12, /*pos*/  5420,  -915,   -40),\n    TRAJECTORY_POS(13, /*pos*/  4960,  -915,   -40),\n    TRAJECTORY_POS(14, /*pos*/  4310,  -915,   -40),\n    TRAJECTORY_POS(15, /*pos*/  4035,  -915,   -40),\n    TRAJECTORY_END(),\n};\n\n// 0x0702ECC0 - 0x0702ED9C\nconst Trajectory rr_seg7_trajectory_0702ECC0[] = {\n    TRAJECTORY_POS(0, /*pos*/  1220, -1080, -3650),\n    TRAJECTORY_POS(1, /*pos*/  1740, -1120, -3640),\n    TRAJECTORY_POS(2, /*pos*/  2220,  -840, -3640),\n    TRAJECTORY_POS(3, /*pos*/  2480,  -300, -3640),\n    TRAJECTORY_POS(4, /*pos*/  2780,   -80, -3640),\n    TRAJECTORY_POS(5, /*pos*/  3360,  -100, -3640),\n    TRAJECTORY_POS(6, /*pos*/  3820,  -500, -3640),\n    TRAJECTORY_POS(7, /*pos*/  4120,  -500, -3640),\n    TRAJECTORY_POS(8, /*pos*/  4520,   -80, -3640),\n    TRAJECTORY_POS(9, /*pos*/  4900,    40, -3640),\n    TRAJECTORY_POS(10, /*pos*/  5300,   100, -3580),\n    TRAJECTORY_POS(11, /*pos*/  5520,   260, -3360),\n    TRAJECTORY_POS(12, /*pos*/  5640,   380, -3040),\n    TRAJECTORY_POS(13, /*pos*/  5700,   470, -2660),\n    TRAJECTORY_POS(14, /*pos*/  5680,   520, -2220),\n    TRAJECTORY_POS(15, /*pos*/  5440,   570, -1920),\n    TRAJECTORY_POS(16, /*pos*/  5120,   640, -1680),\n    TRAJECTORY_POS(17, /*pos*/  4520,   720, -1620),\n    TRAJECTORY_POS(18, /*pos*/  3900,   720, -1620),\n    TRAJECTORY_POS(19, /*pos*/  3280,   920, -1620),\n    TRAJECTORY_POS(20, /*pos*/  2460,   920, -1620),\n    TRAJECTORY_POS(21, /*pos*/  2000,   920, -1660),\n    TRAJECTORY_POS(22, /*pos*/  1660,   920, -1620),\n    TRAJECTORY_POS(23, /*pos*/  1340,   920, -1460),\n    TRAJECTORY_POS(24, /*pos*/  1060,   920, -1100),\n    TRAJECTORY_POS(25, /*pos*/  1020,   920,  -580),\n    TRAJECTORY_POS(26, /*pos*/  1100,   920,    20),\n    TRAJECTORY_END(),\n};\n\n// 0x0702ED9C - 0x0702EEE0\nconst Trajectory rr_seg7_trajectory_0702ED9C[] = {\n    TRAJECTORY_POS(0, /*pos*/  1580,   980,  -180),\n    TRAJECTORY_POS(1, /*pos*/  2740,  1140,  -140),\n    TRAJECTORY_POS(2, /*pos*/  3440,  1340,   260),\n    TRAJECTORY_POS(3, /*pos*/  3740,  1400,   460),\n    TRAJECTORY_POS(4, /*pos*/  3960,  1440,   800),\n    TRAJECTORY_POS(5, /*pos*/  4200,  1490,  1100),\n    TRAJECTORY_POS(6, /*pos*/  4520,  1540,  1340),\n    TRAJECTORY_POS(7, /*pos*/  4920,  1600,  1420),\n    TRAJECTORY_POS(8, /*pos*/  5360,  1645,  1340),\n    TRAJECTORY_POS(9, /*pos*/  5660,  1700,  1120),\n    TRAJECTORY_POS(10, /*pos*/  5900,  1740,   780),\n    TRAJECTORY_POS(11, /*pos*/  5960,  1740,   380),\n    TRAJECTORY_POS(12, /*pos*/  5900,  1740,   -20),\n    TRAJECTORY_POS(13, /*pos*/  5640,  1740,  -360),\n    TRAJECTORY_POS(14, /*pos*/  5340,  1740,  -580),\n    TRAJECTORY_POS(15, /*pos*/  4920,  1740,  -620),\n    TRAJECTORY_POS(16, /*pos*/  4520,  1750,  -580),\n    TRAJECTORY_POS(17, /*pos*/  4240,  1760,  -340),\n    TRAJECTORY_POS(18, /*pos*/  4080,  1785,   -40),\n    TRAJECTORY_POS(19, /*pos*/  4060,  1820,   320),\n    TRAJECTORY_POS(20, /*pos*/  4140,  1855,   680),\n    TRAJECTORY_POS(21, /*pos*/  4320,  1900,   940),\n    TRAJECTORY_POS(22, /*pos*/  4620,  1940,  1140),\n    TRAJECTORY_POS(23, /*pos*/  4920,  2010,  1190),\n    TRAJECTORY_POS(24, /*pos*/  5240,  2050,  1140),\n    TRAJECTORY_POS(25, /*pos*/  5500,  2100,   960),\n    TRAJECTORY_POS(26, /*pos*/  5680,  2150,   700),\n    TRAJECTORY_POS(27, /*pos*/  5740,  2160,   400),\n    TRAJECTORY_POS(28, /*pos*/  5680,  2160,    60),\n    TRAJECTORY_POS(29, /*pos*/  5500,  2160,  -200),\n    TRAJECTORY_POS(30, /*pos*/  5260,  2160,  -380),\n    TRAJECTORY_POS(31, /*pos*/  4940,  2160,  -420),\n    TRAJECTORY_POS(32, /*pos*/  4620,  2160,  -360),\n    TRAJECTORY_POS(33, /*pos*/  4400,  2200,  -200),\n    TRAJECTORY_POS(34, /*pos*/  4240,  2240,    20),\n    TRAJECTORY_POS(35, /*pos*/  3900,  2260,   140),\n    TRAJECTORY_POS(36, /*pos*/  3740,  2260,   140),\n    TRAJECTORY_POS(37, /*pos*/  2700,  2260,   140),\n    TRAJECTORY_POS(38, /*pos*/  2200,  2460,   140),\n    TRAJECTORY_POS(39, /*pos*/  1580,  2460,   140),\n    TRAJECTORY_END(),\n};\n\n// 0x0702EEE0 - 0x0702F032\nconst Trajectory rr_seg7_trajectory_0702EEE0[] = {\n    TRAJECTORY_POS(0, /*pos*/   540,   925,  -160),\n    TRAJECTORY_POS(1, /*pos*/  -425,  1020,  -160),\n    TRAJECTORY_POS(2, /*pos*/ -1160,  1620,  -160),\n    TRAJECTORY_POS(3, /*pos*/ -1940,  2960,  -160),\n    TRAJECTORY_POS(4, /*pos*/ -2550,  3320,  -170),\n    TRAJECTORY_POS(5, /*pos*/ -3060,  3500,   -80),\n    TRAJECTORY_POS(6, /*pos*/ -3500,  3500,  -620),\n    TRAJECTORY_POS(7, /*pos*/ -3500,  3500, -1100),\n    TRAJECTORY_POS(8, /*pos*/ -3380,  3500, -1600),\n    TRAJECTORY_POS(9, /*pos*/ -3040,  3500, -1960),\n    TRAJECTORY_POS(10, /*pos*/ -2620,  3500, -2200),\n    TRAJECTORY_POS(11, /*pos*/ -2100,  3500, -3100),\n    TRAJECTORY_POS(12, /*pos*/ -1660,  3500, -4160),\n    TRAJECTORY_POS(13, /*pos*/ -1660,  3500, -4940),\n    TRAJECTORY_POS(14, /*pos*/ -1880,  3500, -5280),\n    TRAJECTORY_POS(15, /*pos*/ -2220,  3500, -5500),\n    TRAJECTORY_POS(16, /*pos*/ -3060,  3380, -5560),\n    TRAJECTORY_POS(17, /*pos*/ -3920,  3260, -5480),\n    TRAJECTORY_POS(18, /*pos*/ -4180,  3260, -5260),\n    TRAJECTORY_POS(19, /*pos*/ -4300,  3260, -4940),\n    TRAJECTORY_POS(20, /*pos*/ -4300,  3440, -3780),\n    TRAJECTORY_POS(21, /*pos*/ -4240,  3560, -2440),\n    TRAJECTORY_POS(22, /*pos*/ -4400,  3560, -2120),\n    TRAJECTORY_POS(23, /*pos*/ -4740,  3560, -1860),\n    TRAJECTORY_POS(24, /*pos*/ -5320,  3600, -1800),\n    TRAJECTORY_POS(25, /*pos*/ -6000,  3680, -1860),\n    TRAJECTORY_POS(26, /*pos*/ -7720,  3980, -3250),\n    TRAJECTORY_POS(27, /*pos*/ -7810,  4140, -3990),\n    TRAJECTORY_POS(28, /*pos*/ -7670,  4320, -4645),\n    TRAJECTORY_POS(29, /*pos*/ -7090,  4620, -5170),\n    TRAJECTORY_POS(30, /*pos*/ -6040,  4620, -5280),\n    TRAJECTORY_POS(31, /*pos*/ -5360,  4620, -5220),\n    TRAJECTORY_POS(32, /*pos*/ -4980,  4100, -5140),\n    TRAJECTORY_POS(33, /*pos*/ -4780,  3360, -5140),\n    TRAJECTORY_POS(34, /*pos*/ -4480,  3180, -5140),\n    TRAJECTORY_POS(35, /*pos*/ -3960,  3180, -5140),\n    TRAJECTORY_POS(36, /*pos*/ -3580,  3580, -5140),\n    TRAJECTORY_POS(37, /*pos*/ -3660,  4300, -5140),\n    TRAJECTORY_POS(38, /*pos*/ -3800,  4800, -5140),\n    TRAJECTORY_POS(39, /*pos*/ -4200,  5220, -5120),\n    TRAJECTORY_POS(40, /*pos*/ -4200,  6560, -5100),\n    TRAJECTORY_POS(41, /*pos*/ -4200,  6740, -5100),\n    TRAJECTORY_END(),\n};\n"
  },
  {
    "path": "levels/rr/cruiser_wing/geo.inc.c",
    "content": "// 0x0E000890\nconst GeoLayout rr_geo_000890[] = {\n    GEO_CULLING_RADIUS(1200),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, rr_seg7_dl_0701A680),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/rr/cruiser_wing/model.inc.c",
    "content": "// 0x0701A608 - 0x0701A648\nstatic const Vtx rr_seg7_vertex_0701A608[] = {\n    {{{   227,      4,      5}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -79,      0,     -1}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   214,   -397,    947}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -93,   -402,    940}, 0, {  2012,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701A648 - 0x0701A680\nstatic const Gfx rr_seg7_dl_0701A648[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, rr_seg7_texture_07000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_0701A608, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701A680 - 0x0701A6F0\nconst Gfx rr_seg7_dl_0701A680[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_0701A648),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/rr/donut_block/1.inc.c",
    "content": "// 0x0701B530 - 0x0701B630\nstatic const Vtx rr_seg7_vertex_0701B530[] = {\n    {{{   102,     51,   -306}, 0, {   224,   1244}, {0x72, 0x5d, 0x29, 0xff}}},\n    {{{    51,      0,    307}, 0, {   122,   1192}, {0x72, 0x5d, 0x29, 0xff}}},\n    {{{    51,      0,   -306}, 0, {   122,   1192}, {0x72, 0x5d, 0x29, 0xff}}},\n    {{{   102,     51,    307}, 0, {   224,   1244}, {0x72, 0x5d, 0x29, 0xff}}},\n    {{{   -50,      0,   -306}, 0, {    70,   1040}, {0x72, 0x5d, 0x29, 0xff}}},\n    {{{  -101,     51,    307}, 0, {   122,    938}, {0x72, 0x5d, 0x29, 0xff}}},\n    {{{  -101,     51,   -306}, 0, {   122,    938}, {0x72, 0x5d, 0x29, 0xff}}},\n    {{{   -50,      0,    307}, 0, {    70,   1040}, {0x72, 0x5d, 0x29, 0xff}}},\n    {{{    51,      0,   -306}, 0, {   122,   1192}, {0x66, 0x50, 0x21, 0xff}}},\n    {{{   -50,      0,    307}, 0, {    70,   1040}, {0x66, 0x50, 0x21, 0xff}}},\n    {{{   -50,      0,   -306}, 0, {    70,   1040}, {0x66, 0x50, 0x21, 0xff}}},\n    {{{    51,      0,    307}, 0, {   122,   1192}, {0x66, 0x50, 0x21, 0xff}}},\n    {{{   102,    154,   -306}, 0, {   376,   1192}, {0x9b, 0x7c, 0x3d, 0xff}}},\n    {{{   102,    154,    307}, 0, {   376,   1192}, {0x9b, 0x7c, 0x3d, 0xff}}},\n    {{{   102,     51,    307}, 0, {   224,   1244}, {0x9b, 0x7c, 0x3d, 0xff}}},\n    {{{   102,     51,   -306}, 0, {   224,   1244}, {0x9b, 0x7c, 0x3d, 0xff}}},\n};\n\n// 0x0701B630 - 0x0701B710\nstatic const Vtx rr_seg7_vertex_0701B630[] = {\n    {{{  -101,     51,   -306}, 0, {   122,    938}, {0x9b, 0x7c, 0x3d, 0xff}}},\n    {{{  -101,    154,    307}, 0, {   274,    888}, {0x9b, 0x7c, 0x3d, 0xff}}},\n    {{{  -101,    154,   -306}, 0, {   274,    888}, {0x9b, 0x7c, 0x3d, 0xff}}},\n    {{{  -101,     51,    307}, 0, {   122,    938}, {0x9b, 0x7c, 0x3d, 0xff}}},\n    {{{  -101,    154,   -306}, 0, {   274,    888}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{  -101,    154,    307}, 0, {   274,    888}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{   102,    154,    307}, 0, {   376,   1192}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{   102,    154,   -306}, 0, {   376,   1192}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{   102,    154,    307}, 0, {   376,   1192}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{  -101,    154,    307}, 0, {   274,    888}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{  -101,     51,    307}, 0, {   122,    938}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{    51,      0,    307}, 0, {   122,   1192}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{   102,     51,    307}, 0, {   224,   1244}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{   -50,      0,    307}, 0, {    70,   1040}, {0xac, 0x9d, 0x52, 0xff}}},\n};\n\n// 0x0701B710 - 0x0701B770\nstatic const Vtx rr_seg7_vertex_0701B710[] = {\n    {{{  -101,     51,   -306}, 0, {   122,    938}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{    51,      0,   -306}, 0, {   122,   1192}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{   -50,      0,   -306}, 0, {    70,   1040}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{   102,    154,   -306}, 0, {   376,   1192}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{   102,     51,   -306}, 0, {   224,   1244}, {0xac, 0x9d, 0x52, 0xff}}},\n    {{{  -101,    154,   -306}, 0, {   274,    888}, {0xac, 0x9d, 0x52, 0xff}}},\n};\n\n// 0x0701B770 - 0x0701B848\nstatic const Gfx rr_seg7_dl_0701B770[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_0701B530, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701B630, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11, 12, 0x0),\n    gsSP2Triangles( 8, 13, 11, 0x0,  8, 10, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701B710, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  0,  5,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701B848 - 0x0701B8B8\nconst Gfx rr_seg7_dl_0701B848[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_0701B770),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/rr/donut_block/2.inc.c",
    "content": "// 0x0701B8B8 - 0x0701B938\nstatic const Vtx rr_seg7_vertex_0701B8B8[] = {\n    {{{    61,    143,    317}, 0, {   990,      0}, {0xc7, 0xa2, 0x68, 0xff}}},\n    {{{   -60,     20,    317}, 0, {     0,    990}, {0xc7, 0xa2, 0x68, 0xff}}},\n    {{{    61,     20,    317}, 0, {   990,    990}, {0xc7, 0xa2, 0x68, 0xff}}},\n    {{{   -60,    143,    317}, 0, {     0,      0}, {0xc7, 0xa2, 0x68, 0xff}}},\n    {{{    61,     20,   -316}, 0, {   990,    990}, {0xc7, 0xa2, 0x68, 0xff}}},\n    {{{   -60,    143,   -316}, 0, {     0,      0}, {0xc7, 0xa2, 0x68, 0xff}}},\n    {{{    61,    143,   -316}, 0, {   990,      0}, {0xc7, 0xa2, 0x68, 0xff}}},\n    {{{   -60,     20,   -316}, 0, {     0,    990}, {0xc7, 0xa2, 0x68, 0xff}}},\n};\n\n// 0x0701B938 - 0x0701B980\nstatic const Gfx rr_seg7_dl_0701B938[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_metal_hole),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_0701B8B8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701B980 - 0x0701B9F0\nconst Gfx rr_seg7_dl_0701B980[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_0701B938),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/rr/donut_block/collision.inc.c",
    "content": "// 0x070297D4 - 0x07029858\nconst Collision rr_seg7_collision_donut_platform[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-101, 0, -306),\n    COL_VERTEX(-101, 0, 307),\n    COL_VERTEX(-101, 154, 307),\n    COL_VERTEX(102, 0, 307),\n    COL_VERTEX(102, 154, 307),\n    COL_VERTEX(102, 0, -306),\n    COL_VERTEX(102, 154, -306),\n    COL_VERTEX(-101, 154, -306),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(1, 3, 4),\n    COL_TRI(1, 4, 2),\n    COL_TRI(5, 3, 1),\n    COL_TRI(5, 1, 0),\n    COL_TRI(6, 4, 3),\n    COL_TRI(6, 3, 5),\n    COL_TRI(7, 4, 6),\n    COL_TRI(7, 2, 4),\n    COL_TRI(0, 2, 7),\n    COL_TRI(7, 6, 5),\n    COL_TRI(7, 5, 0),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/rr/donut_block/geo.inc.c",
    "content": "// 0x0E000920\nconst GeoLayout rr_geo_000920[] = {\n    GEO_CULLING_RADIUS(420),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, rr_seg7_dl_0701B848),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, rr_seg7_dl_0701B980),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/rr/elevator_platform/collision.inc.c",
    "content": "// 0x070296CC - 0x07029750\nconst Collision rr_seg7_collision_elevator_platform[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(205, 102, 307),\n    COL_VERTEX(205, 0, 307),\n    COL_VERTEX(205, 0, -306),\n    COL_VERTEX(-204, 0, 307),\n    COL_VERTEX(-204, 0, -306),\n    COL_VERTEX(-204, 102, 307),\n    COL_VERTEX(-204, 102, -306),\n    COL_VERTEX(205, 102, -306),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(1, 3, 4),\n    COL_TRI(1, 4, 2),\n    COL_TRI(5, 3, 1),\n    COL_TRI(5, 1, 0),\n    COL_TRI(6, 4, 3),\n    COL_TRI(6, 3, 5),\n    COL_TRI(7, 4, 6),\n    COL_TRI(7, 2, 4),\n    COL_TRI(0, 2, 7),\n    COL_TRI(7, 6, 5),\n    COL_TRI(7, 5, 0),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/rr/elevator_platform/geo.inc.c",
    "content": "// 0x0E0008F0\nconst GeoLayout rr_geo_0008F0[] = {\n    GEO_CULLING_RADIUS(500),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, rr_seg7_dl_0701B220),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/rr/elevator_platform/model.inc.c",
    "content": "// 0x0701B010 - 0x0701B110\nstatic const Vtx rr_seg7_vertex_0701B010[] = {\n    {{{   205,    102,   -306}, 0, {  2522,   1498}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{  -204,    102,    307}, 0, {     0,    990}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{   205,    102,    307}, 0, {   990,      0}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{  -204,    102,   -306}, 0, {  1500,   2520}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{  -204,    102,   -306}, 0, {    36,   1124}, {0x59, 0x7a, 0xb3, 0xff}}},\n    {{{  -204,      0,   -306}, 0, {     0,    990}, {0x59, 0x7a, 0xb3, 0xff}}},\n    {{{  -204,      0,    307}, 0, {   786,    582}, {0x59, 0x7a, 0xb3, 0xff}}},\n    {{{  -204,    102,    307}, 0, {   854,    718}, {0x59, 0x7a, 0xb3, 0xff}}},\n    {{{   205,    102,    307}, 0, {   854,    718}, {0x59, 0x7a, 0xb3, 0xff}}},\n    {{{   205,      0,    307}, 0, {   786,    582}, {0x59, 0x7a, 0xb3, 0xff}}},\n    {{{   205,      0,   -306}, 0, {     0,    990}, {0x59, 0x7a, 0xb3, 0xff}}},\n    {{{   205,    102,   -306}, 0, {    36,   1124}, {0x59, 0x7a, 0xb3, 0xff}}},\n    {{{   205,      0,    307}, 0, {   990,      0}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{  -204,      0,    307}, 0, {     0,    990}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{  -204,      0,   -306}, 0, {  1500,   2520}, {0x38, 0x5e, 0x96, 0xff}}},\n    {{{   205,      0,   -306}, 0, {  2522,   1498}, {0x38, 0x5e, 0x96, 0xff}}},\n};\n\n// 0x0701B110 - 0x0701B190\nstatic const Vtx rr_seg7_vertex_0701B110[] = {\n    {{{  -204,    102,    307}, 0, {   138,    820}, {0x75, 0x92, 0xcb, 0xff}}},\n    {{{  -204,      0,    307}, 0, {     0,    990}, {0x75, 0x92, 0xcb, 0xff}}},\n    {{{   205,      0,    307}, 0, {   650,   1670}, {0x75, 0x92, 0xcb, 0xff}}},\n    {{{   205,    102,    307}, 0, {   820,   1500}, {0x75, 0x92, 0xcb, 0xff}}},\n    {{{   205,    102,   -306}, 0, {   820,   1500}, {0x75, 0x92, 0xcb, 0xff}}},\n    {{{   205,      0,   -306}, 0, {   650,   1670}, {0x75, 0x92, 0xcb, 0xff}}},\n    {{{  -204,      0,   -306}, 0, {     0,    990}, {0x75, 0x92, 0xcb, 0xff}}},\n    {{{  -204,    102,   -306}, 0, {   138,    820}, {0x75, 0x92, 0xcb, 0xff}}},\n};\n\n// 0x0701B190 - 0x0701B220\nstatic const Gfx rr_seg7_dl_0701B190[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_0701B010, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701B110, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701B220 - 0x0701B290\nconst Gfx rr_seg7_dl_0701B220[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_0701B190),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/rr/flying_carpet/collision.inc.c",
    "content": "// 0x07029038 - 0x07029152\nconst Collision rr_seg7_collision_07029038[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x15),\n    COL_VERTEX(-101, 20, 0),\n    COL_VERTEX(-204, 20, 0),\n    COL_VERTEX(-204, 20, 205),\n    COL_VERTEX(-204, 20, -204),\n    COL_VERTEX(-306, 20, 0),\n    COL_VERTEX(-306, 20, 205),\n    COL_VERTEX(-101, 20, -204),\n    COL_VERTEX(-306, 20, -204),\n    COL_VERTEX(-101, 20, 205),\n    COL_VERTEX(0, 20, -204),\n    COL_VERTEX(0, 20, 0),\n    COL_VERTEX(0, 20, 205),\n    COL_VERTEX(102, 20, -204),\n    COL_VERTEX(102, 20, 0),\n    COL_VERTEX(102, 20, 205),\n    COL_VERTEX(205, 20, 0),\n    COL_VERTEX(205, 20, -204),\n    COL_VERTEX(307, 20, -204),\n    COL_VERTEX(307, 20, 0),\n    COL_VERTEX(205, 20, 205),\n    COL_VERTEX(307, 20, 205),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 24),\n    COL_TRI(13, 10, 11),\n    COL_TRI(0, 1, 2),\n    COL_TRI(3, 4, 1),\n    COL_TRI(1, 5, 2),\n    COL_TRI(1, 4, 5),\n    COL_TRI(6, 1, 0),\n    COL_TRI(6, 3, 1),\n    COL_TRI(3, 7, 4),\n    COL_TRI(0, 2, 8),\n    COL_TRI(9, 0, 10),\n    COL_TRI(9, 6, 0),\n    COL_TRI(10, 0, 8),\n    COL_TRI(10, 8, 11),\n    COL_TRI(12, 10, 13),\n    COL_TRI(12, 9, 10),\n    COL_TRI(18, 19, 20),\n    COL_TRI(13, 11, 14),\n    COL_TRI(15, 13, 14),\n    COL_TRI(16, 12, 13),\n    COL_TRI(16, 13, 15),\n    COL_TRI(15, 14, 19),\n    COL_TRI(17, 15, 18),\n    COL_TRI(17, 16, 15),\n    COL_TRI(18, 15, 19),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/rr/flying_carpet/geo.inc.c",
    "content": "// 0x0E000848\nconst GeoLayout rr_geo_000848[] = {\n    GEO_CULLING_RADIUS(500),\n    GEO_OPEN_NODE(),\n        GEO_ASM(0, geo_exec_flying_carpet_create),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/rr/flying_carpet/model.inc.c",
    "content": "// Not a traditional model file. The vertexes are generated in src/geo_misc.c.\n\n// 0x07019230 - 0x07019248\nstatic const Lights1 rr_seg7_lights_07019230 = gdSPDefLights1(\n    0x5f, 0x5f, 0x5f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07019248 - 0x070192F0\nconst s16 flying_carpet_static_vertex_data[] = {\n//     x     z    tx    ty\n    -306,  205,    0,    0,\n    -306,    0,  992,    0,\n    -306, -204,    0,    0,\n    -204,  205,    0,  308,\n    -204,    0,  992,  308,\n    -204, -204,    0,  308,\n    -102,  205,    0,  650,\n    -102,    0,  992,  650,\n    -102, -204,    0,  650,\n       0,  205,    0,  992,\n       0,    0,  992,  992,\n       0, -204,    0,  992,\n     102,  205,    0,  650,\n     102,    0,  992,  650,\n     102, -204,    0,  650,\n     205,  205,    0,  308,\n     205,    0,  992,  308,\n     205, -204,    0,  308,\n     307,  205,    0,    0,\n     307,    0,  990,    0,\n     307, -204,    0,    0,\n};\n\n// 0x070192F0 - 0x07019360\nconst Gfx dl_flying_carpet_begin[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_quarter_flying_carpet),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&rr_seg7_lights_07019230.l, 1),\n    gsSPLight(&rr_seg7_lights_07019230.a, 2),\n    gsSPEndDisplayList(),\n};\n\n// 0x07019360 - 0x070193C8\nconst Gfx dl_flying_carpet_model_half[] = {\n    gsSP2Triangles( 0,  1,  3, 0x0,  3,  1,  4, 0x0),\n    gsSP2Triangles( 1,  2,  4, 0x0,  4,  2,  5, 0x0),\n    gsSP2Triangles( 3,  4,  6, 0x0,  6,  4,  7, 0x0),\n    gsSP2Triangles( 4,  5,  7, 0x0,  7,  5,  8, 0x0),\n    gsSP2Triangles( 6,  7,  9, 0x0,  9,  7, 10, 0x0),\n    gsSP2Triangles( 7,  8, 10, 0x0, 10,  8, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070193C8 - 0x070193F0\nconst Gfx dl_flying_carpet_end[] = {\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/rr/geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"game/level_geo.h\"\n#include \"game/geo_misc.h\"\n#include \"game/camera.h\"\n#include \"game/moving_texture.h\"\n#include \"game/screen_transition.h\"\n#include \"game/paintings.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"levels/rr/header.h\"\n\n#include \"levels/rr/areas/1/2/geo.inc.c\"\n#include \"levels/rr/areas/1/3/geo.inc.c\"\n#include \"levels/rr/areas/1/4/geo.inc.c\"\n#include \"levels/rr/areas/1/5/geo.inc.c\"\n#include \"levels/rr/areas/1/6/geo.inc.c\"\n#include \"levels/rr/areas/1/7/geo.inc.c\"\n#include \"levels/rr/areas/1/8/geo.inc.c\"\n#include \"levels/rr/areas/1/9/geo.inc.c\"\n#include \"levels/rr/areas/1/10/geo.inc.c\"\n#include \"levels/rr/areas/1/11/geo.inc.c\"\n#include \"levels/rr/areas/1/12/geo.inc.c\"\n#include \"levels/rr/areas/1/13/geo.inc.c\"\n#include \"levels/rr/areas/1/14/geo.inc.c\"\n#include \"levels/rr/areas/1/15/geo.inc.c\"\n#include \"levels/rr/areas/1/16/geo.inc.c\"\n#include \"levels/rr/areas/1/17/geo.inc.c\"\n#include \"levels/rr/areas/1/18/geo.inc.c\"\n#include \"levels/rr/areas/1/19/geo.inc.c\"\n#include \"levels/rr/areas/1/20/geo.inc.c\"\n#include \"levels/rr/areas/1/21/geo.inc.c\"\n#include \"levels/rr/flying_carpet/geo.inc.c\"\n#include \"levels/rr/swinging_platform/geo.inc.c\"\n#include \"levels/rr/rotating_bridge_platform/geo.inc.c\"\n#include \"levels/rr/cruiser_wing/geo.inc.c\"\n#include \"levels/rr/octagonal_platform/geo.inc.c\"\n#include \"levels/rr/sliding_platform/geo.inc.c\"\n#include \"levels/rr/pyramid_platform/geo.inc.c\" // unused\n#include \"levels/rr/elevator_platform/geo.inc.c\"\n#include \"levels/rr/seesaw_platform/geo.inc.c\"\n#include \"levels/rr/donut_block/geo.inc.c\"\n#include \"levels/rr/l_platform/geo.inc.c\" // also unused\n#include \"levels/rr/tricky_triangles_1/geo.inc.c\"\n#include \"levels/rr/tricky_triangles_2/geo.inc.c\"\n#include \"levels/rr/tricky_triangles_3/geo.inc.c\"\n#include \"levels/rr/tricky_triangles_4/geo.inc.c\"\n#include \"levels/rr/tricky_triangles_5/geo.inc.c\"\n#include \"levels/rr/areas/1/geo.inc.c\"\n"
  },
  {
    "path": "levels/rr/header.h",
    "content": "#ifndef RR_HEADER_H\n#define RR_HEADER_H\n\n#include \"types.h\"\n\n// geo\nextern const GeoLayout rr_geo_000660[];\nextern const GeoLayout rr_geo_000678[];\nextern const GeoLayout rr_geo_000690[];\nextern const GeoLayout rr_geo_0006A8[];\nextern const GeoLayout rr_geo_0006C0[];\nextern const GeoLayout rr_geo_0006D8[];\nextern const GeoLayout rr_geo_0006F0[];\nextern const GeoLayout rr_geo_000708[];\nextern const GeoLayout rr_geo_000720[];\nextern const GeoLayout rr_geo_000738[];\nextern const GeoLayout rr_geo_000758[];\nextern const GeoLayout rr_geo_000770[];\nextern const GeoLayout rr_geo_000788[];\nextern const GeoLayout rr_geo_0007A0[];\nextern const GeoLayout rr_geo_0007B8[];\nextern const GeoLayout rr_geo_0007D0[];\nextern const GeoLayout rr_geo_0007E8[];\nextern const GeoLayout rr_geo_000800[];\nextern const GeoLayout rr_geo_000818[];\nextern const GeoLayout rr_geo_000830[];\nextern const GeoLayout rr_geo_000848[];\nextern const GeoLayout rr_geo_000860[];\nextern const GeoLayout rr_geo_000878[];\nextern const GeoLayout rr_geo_000890[];\nextern const GeoLayout rr_geo_0008A8[];\nextern const GeoLayout rr_geo_0008C0[];\nextern const GeoLayout rr_geo_0008D8[];\nextern const GeoLayout rr_geo_0008F0[];\nextern const GeoLayout rr_geo_000908[];\nextern const GeoLayout rr_geo_000920[];\nextern const GeoLayout rr_geo_000940[];\nextern const GeoLayout rr_geo_000958[];\nextern const GeoLayout rr_geo_000970[];\nextern const GeoLayout rr_geo_000988[];\nextern const GeoLayout rr_geo_0009A0[];\nextern const GeoLayout rr_geo_0009B8[];\nextern const GeoLayout rr_geo_0009D0[];\n\n// leveldata\nextern const Gfx dl_cruiser_metal_holes[];\nextern const Gfx rr_seg7_dl_07002CC8[];\nextern const Gfx rr_seg7_dl_07002E80[];\nextern const Gfx rr_seg7_dl_07004A98[];\nextern const Gfx rr_seg7_dl_07005C80[];\nextern const Gfx rr_seg7_dl_07007E60[];\nextern const Gfx rr_seg7_dl_07008258[];\nextern const Gfx rr_seg7_dl_07008E20[];\nextern const Gfx rr_seg7_dl_0700BB48[];\nextern const Gfx rr_seg7_dl_0700CA38[];\nextern const Gfx rr_seg7_dl_0700DBD8[];\nextern const Gfx rr_seg7_dl_0700DE88[];\nextern const Gfx rr_seg7_dl_0700E178[];\nextern const Gfx rr_seg7_dl_0700E830[];\nextern const Gfx rr_seg7_dl_07012758[];\nextern const Gfx rr_seg7_dl_07014508[];\nextern const Gfx rr_seg7_dl_07014F30[];\nextern const Gfx rr_seg7_dl_070156B8[];\nextern const Gfx rr_seg7_dl_07015C68[];\nextern const Gfx rr_seg7_dl_07017530[];\nextern const Gfx rr_seg7_dl_07018B58[];\nextern const Gfx rr_seg7_dl_070191A0[];\nextern const s16 flying_carpet_static_vertex_data[];\nextern const Gfx dl_flying_carpet_begin[];\nextern const Gfx dl_flying_carpet_model_half[];\nextern const Gfx dl_flying_carpet_end[];\nextern const Gfx rr_seg7_dl_07019AE0[];\nextern const Gfx rr_seg7_dl_0701A568[];\nextern const Gfx rr_seg7_dl_0701A680[];\nextern const Gfx rr_seg7_dl_0701AB78[];\nextern const Gfx rr_seg7_dl_0701ADF8[];\nextern const Gfx rr_seg7_dl_0701AFA0[];\nextern const Gfx rr_seg7_dl_0701B220[];\nextern const Gfx rr_seg7_dl_0701B4C0[];\nextern const Gfx rr_seg7_dl_0701B848[];\nextern const Gfx rr_seg7_dl_0701B980[];\nextern const Gfx rr_seg7_dl_0701BD08[];\nextern const Gfx rr_seg7_dl_0701E670[];\nextern const Gfx rr_seg7_dl_07021100[];\nextern const Gfx rr_seg7_dl_07023B90[];\nextern const Gfx rr_seg7_dl_07026630[];\nextern const Gfx rr_seg7_dl_07028FA8[];\nextern const Collision rr_seg7_collision_07029038[];\nextern const Collision rr_seg7_collision_pendulum[];\nextern const Collision rr_seg7_collision_rotating_platform_with_fire[];\nextern const Collision rr_seg7_collision_07029508[];\nextern const Collision rr_seg7_collision_070295F8[];\nextern const Collision rr_seg7_collision_0702967C[];\nextern const Collision rr_seg7_collision_elevator_platform[];\nextern const Collision rr_seg7_collision_07029750[];\nextern const Collision rr_seg7_collision_donut_platform[];\nextern const Collision rr_seg7_collision_07029858[];\nextern const Collision rr_seg7_collision_07029924[];\nextern const Collision rr_seg7_collision_07029C1C[];\nextern const Collision rr_seg7_collision_07029FA4[];\nextern const Collision rr_seg7_collision_0702A32C[];\nextern const Collision rr_seg7_collision_0702A6B4[];\nextern const Collision rr_seg7_collision_level[];\nextern const MacroObject rr_seg7_macro_objs[];\nextern const Trajectory rr_seg7_trajectory_0702EC3C[];\nextern const Trajectory rr_seg7_trajectory_0702ECC0[];\nextern const Trajectory rr_seg7_trajectory_0702ED9C[];\nextern const Trajectory rr_seg7_trajectory_0702EEE0[];\n\n// script\nextern const LevelScript level_rr_entry[];\n\n#endif\n"
  },
  {
    "path": "levels/rr/l_platform/collision.inc.c",
    "content": "// 0x07029858 - 0x07029924\nconst Collision rr_seg7_collision_07029858[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0xC),\n    COL_VERTEX(26, 154, 0),\n    COL_VERTEX(666, 154, -613),\n    COL_VERTEX(26, 154, -613),\n    COL_VERTEX(666, 154, 410),\n    COL_VERTEX(-665, 154, 410),\n    COL_VERTEX(-665, 154, 0),\n    COL_VERTEX(26, 0, 0),\n    COL_VERTEX(-665, 0, 0),\n    COL_VERTEX(-665, 0, 410),\n    COL_VERTEX(666, 0, 410),\n    COL_VERTEX(666, 0, -613),\n    COL_VERTEX(26, 0, -613),\n    COL_TRI_INIT(SURFACE_DEFAULT, 20),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI(0, 4, 3),\n    COL_TRI(0, 5, 4),\n    COL_TRI(6, 0, 2),\n    COL_TRI(7, 0, 6),\n    COL_TRI(7, 5, 0),\n    COL_TRI(8, 5, 7),\n    COL_TRI(8, 4, 5),\n    COL_TRI(9, 4, 8),\n    COL_TRI(9, 3, 4),\n    COL_TRI(10, 3, 9),\n    COL_TRI(10, 1, 3),\n    COL_TRI(11, 2, 1),\n    COL_TRI(11, 1, 10),\n    COL_TRI(6, 2, 11),\n    COL_TRI(6, 9, 8),\n    COL_TRI(6, 10, 9),\n    COL_TRI(6, 11, 10),\n    COL_TRI(8, 7, 6),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/rr/l_platform/geo.inc.c",
    "content": "// 0x0E000940\nconst GeoLayout rr_geo_000940[] = {\n    GEO_CULLING_RADIUS(1100),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, rr_seg7_dl_0701BD08),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/rr/l_platform/model.inc.c",
    "content": "// 0x0701B9F0 - 0x0701BAD0\nstatic const Vtx rr_seg7_vertex_0701B9F0[] = {\n    {{{    26,    154,      0}, 0, {  1672,   1328}, {0xa9, 0xcd, 0x97, 0xff}}},\n    {{{   666,    154,    410}, 0, {     0,    990}, {0xa9, 0xcd, 0x97, 0xff}}},\n    {{{   666,    154,   -613}, 0, {  1672,   -714}, {0xa9, 0xcd, 0x97, 0xff}}},\n    {{{    26,    154,   -613}, 0, {  2694,    308}, {0xa9, 0xcd, 0x97, 0xff}}},\n    {{{  -665,    154,    410}, 0, {  2012,   3032}, {0xa9, 0xcd, 0x97, 0xff}}},\n    {{{  -665,    154,      0}, 0, {  2694,   2350}, {0xa9, 0xcd, 0x97, 0xff}}},\n    {{{  -665,      0,      0}, 0, {  2694,   2350}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{    26,    154,      0}, 0, {  1672,   1328}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{    26,      0,      0}, 0, {  1672,   1328}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -665,    154,      0}, 0, {  2694,   2350}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   666,      0,    410}, 0, {     0,    990}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -665,    154,    410}, 0, {  2012,   3032}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -665,      0,    410}, 0, {  2012,   3032}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   666,    154,    410}, 0, {     0,    990}, {0x67, 0x89, 0x51, 0xff}}},\n};\n\n// 0x0701BAD0 - 0x0701BBB0\nstatic const Vtx rr_seg7_vertex_0701BAD0[] = {\n    {{{    26,      0,   -613}, 0, {  2694,    308}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   666,    154,   -613}, 0, {  1672,   -714}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   666,      0,   -613}, 0, {  1672,   -714}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{    26,    154,   -613}, 0, {  2694,    308}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -665,      0,    410}, 0, {  2012,   3032}, {0x4d, 0x50, 0x36, 0xff}}},\n    {{{  -665,      0,      0}, 0, {  2694,   2350}, {0x4d, 0x50, 0x36, 0xff}}},\n    {{{    26,      0,      0}, 0, {  1672,   1328}, {0x4d, 0x50, 0x36, 0xff}}},\n    {{{   666,      0,    410}, 0, {     0,    990}, {0x4d, 0x50, 0x36, 0xff}}},\n    {{{    26,      0,   -613}, 0, {  2694,    308}, {0x4d, 0x50, 0x36, 0xff}}},\n    {{{   666,      0,   -613}, 0, {  1672,   -714}, {0x4d, 0x50, 0x36, 0xff}}},\n    {{{    26,      0,      0}, 0, {  1672,   1328}, {0x62, 0x78, 0x60, 0xff}}},\n    {{{    26,    154,      0}, 0, {  1672,   1328}, {0x62, 0x78, 0x60, 0xff}}},\n    {{{    26,    154,   -613}, 0, {  2694,    308}, {0x62, 0x78, 0x60, 0xff}}},\n    {{{    26,      0,   -613}, 0, {  2694,    308}, {0x62, 0x78, 0x60, 0xff}}},\n};\n\n// 0x0701BBB0 - 0x0701BC30\nstatic const Vtx rr_seg7_vertex_0701BBB0[] = {\n    {{{  -665,      0,    410}, 0, {  2012,   3032}, {0x62, 0x78, 0x60, 0xff}}},\n    {{{  -665,    154,    410}, 0, {  2012,   3032}, {0x62, 0x78, 0x60, 0xff}}},\n    {{{  -665,    154,      0}, 0, {  2694,   2350}, {0x62, 0x78, 0x60, 0xff}}},\n    {{{  -665,      0,      0}, 0, {  2694,   2350}, {0x62, 0x78, 0x60, 0xff}}},\n    {{{   666,      0,   -613}, 0, {  1672,   -714}, {0x62, 0x78, 0x60, 0xff}}},\n    {{{   666,    154,   -613}, 0, {  1672,   -714}, {0x62, 0x78, 0x60, 0xff}}},\n    {{{   666,    154,    410}, 0, {     0,    990}, {0x62, 0x78, 0x60, 0xff}}},\n    {{{   666,      0,    410}, 0, {     0,    990}, {0x62, 0x78, 0x60, 0xff}}},\n};\n\n// 0x0701BC30 - 0x0701BD08\nstatic const Gfx rr_seg7_dl_0701BC30[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_0701B9F0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  0,  5,  4, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701BAD0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701BBB0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701BD08 - 0x0701BD78\nconst Gfx rr_seg7_dl_0701BD08[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_0701BC30),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/rr/level.yaml",
    "content": "# Rainbow Ride\nshort-name: rr\nfull-name: Rainbow Ride\ntexture-file: [\"/texture.inc.c\"]\narea-count: 1\nobjects: [cruiser_wing, donut_block, elevator_platform, flying_carpet, l_platform, octagonal_platform, pyramid_platform, rotating_bridge_platform, seesaw_platform, sliding_platform, swinging_platform, tricky_triangles_1, tricky_triangles_2, tricky_triangles_3, tricky_triangles_4, tricky_triangles_5]\nshared-path: []\n# loaded files\nskybox-bin: cloud_floor\ntexture-bin: sky\neffects: false\nactor-bins: [group11]\ncommon-bin: [common0]\n"
  },
  {
    "path": "levels/rr/leveldata.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"surface_terrains.h\"\n#include \"moving_texture_macros.h\"\n#include \"level_misc_macros.h\"\n#include \"macro_presets.h\"\n#include \"special_presets.h\"\n#include \"textures.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/rr/texture.inc.c\"\n#include \"levels/rr/areas/1/1/model.inc.c\"\n#include \"levels/rr/areas/1/2/model.inc.c\"\n#include \"levels/rr/areas/1/3/model.inc.c\"\n#include \"levels/rr/areas/1/4/model.inc.c\"\n#include \"levels/rr/areas/1/5/model.inc.c\"\n#include \"levels/rr/areas/1/6/model.inc.c\"\n#include \"levels/rr/areas/1/7/model.inc.c\"\n#include \"levels/rr/areas/1/8/model.inc.c\"\n#include \"levels/rr/areas/1/9/model.inc.c\"\n#include \"levels/rr/areas/1/10/model.inc.c\"\n#include \"levels/rr/areas/1/11/1.inc.c\"\n#include \"levels/rr/areas/1/11/2.inc.c\"\n#include \"levels/rr/areas/1/12/model.inc.c\"\n#include \"levels/rr/areas/1/13/model.inc.c\"\n#include \"levels/rr/areas/1/14/model.inc.c\"\n#include \"levels/rr/areas/1/15/model.inc.c\"\n#include \"levels/rr/areas/1/16/model.inc.c\"\n#include \"levels/rr/areas/1/17/model.inc.c\"\n#include \"levels/rr/areas/1/18/model.inc.c\"\n#include \"levels/rr/areas/1/19/model.inc.c\"\n#include \"levels/rr/areas/1/20/model.inc.c\"\n#include \"levels/rr/areas/1/21/model.inc.c\"\n#include \"levels/rr/flying_carpet/model.inc.c\"\n#include \"levels/rr/swinging_platform/model.inc.c\"\n#include \"levels/rr/rotating_bridge_platform/model.inc.c\"\n#include \"levels/rr/cruiser_wing/model.inc.c\"\n#include \"levels/rr/octagonal_platform/model.inc.c\"\n#include \"levels/rr/sliding_platform/model.inc.c\"\n#include \"levels/rr/pyramid_platform/model.inc.c\" // Unused\n#include \"levels/rr/elevator_platform/model.inc.c\"\n#include \"levels/rr/seesaw_platform/model.inc.c\"\n#include \"levels/rr/donut_block/1.inc.c\"\n#include \"levels/rr/donut_block/2.inc.c\"\n#include \"levels/rr/l_platform/model.inc.c\" // also unused\n#include \"levels/rr/tricky_triangles_1/model.inc.c\"\n#include \"levels/rr/tricky_triangles_2/model.inc.c\"\n#include \"levels/rr/tricky_triangles_3/model.inc.c\"\n#include \"levels/rr/tricky_triangles_4/model.inc.c\"\n#include \"levels/rr/tricky_triangles_5/model.inc.c\"\n#include \"levels/rr/flying_carpet/collision.inc.c\"\n#include \"levels/rr/swinging_platform/collision.inc.c\"\n#include \"levels/rr/rotating_bridge_platform/collision.inc.c\"\n#include \"levels/rr/octagonal_platform/collision.inc.c\"\n#include \"levels/rr/sliding_platform/collision.inc.c\"\n#include \"levels/rr/pyramid_platform/collision.inc.c\"\n#include \"levels/rr/elevator_platform/collision.inc.c\"\n#include \"levels/rr/seesaw_platform/collision.inc.c\"\n#include \"levels/rr/donut_block/collision.inc.c\"\n#include \"levels/rr/l_platform/collision.inc.c\"\n#include \"levels/rr/tricky_triangles_1/collision.inc.c\"\n#include \"levels/rr/tricky_triangles_2/collision.inc.c\"\n#include \"levels/rr/tricky_triangles_3/collision.inc.c\"\n#include \"levels/rr/tricky_triangles_4/collision.inc.c\"\n#include \"levels/rr/tricky_triangles_5/collision.inc.c\"\n#include \"levels/rr/areas/1/collision.inc.c\"\n#include \"levels/rr/areas/1/macro.inc.c\"\n#include \"levels/rr/areas/1/trajectory.inc.c\"\n"
  },
  {
    "path": "levels/rr/octagonal_platform/collision.inc.c",
    "content": "// 0x07029508 - 0x070295F8\nconst Collision rr_seg7_collision_07029508[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x10),\n    COL_VERTEX(-578, 0, -578),\n    COL_VERTEX(-578, 205, -578),\n    COL_VERTEX(0, 205, -818),\n    COL_VERTEX(0, 0, -818),\n    COL_VERTEX(579, 0, 579),\n    COL_VERTEX(819, 0, 0),\n    COL_VERTEX(819, 205, 0),\n    COL_VERTEX(579, 205, 579),\n    COL_VERTEX(-818, 205, 0),\n    COL_VERTEX(-818, 0, 0),\n    COL_VERTEX(0, 205, 819),\n    COL_VERTEX(-578, 0, 579),\n    COL_VERTEX(0, 0, 819),\n    COL_VERTEX(-578, 205, 579),\n    COL_VERTEX(579, 205, -578),\n    COL_VERTEX(579, 0, -578),\n    COL_TRI_INIT(SURFACE_DEFAULT, 22),\n    COL_TRI(10, 11, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(4, 5, 6),\n    COL_TRI(4, 6, 7),\n    COL_TRI(0, 8, 1),\n    COL_TRI(0, 9, 8),\n    COL_TRI(14, 2, 1),\n    COL_TRI(10, 13, 11),\n    COL_TRI(4, 7, 10),\n    COL_TRI(4, 10, 12),\n    COL_TRI(14, 7, 6),\n    COL_TRI(14, 10, 7),\n    COL_TRI(14, 13, 10),\n    COL_TRI(14, 8, 13),\n    COL_TRI(14, 1, 8),\n    COL_TRI(13, 8, 9),\n    COL_TRI(13, 9, 11),\n    COL_TRI(2, 14, 3),\n    COL_TRI(14, 15, 3),\n    COL_TRI(5, 14, 6),\n    COL_TRI(5, 15, 14),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/rr/octagonal_platform/geo.inc.c",
    "content": "// 0x0E0008A8\nconst GeoLayout rr_geo_0008A8[] = {\n    GEO_CULLING_RADIUS(1300),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, rr_seg7_dl_0701AB78),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/rr/octagonal_platform/model.inc.c",
    "content": "// 0x0701A6F0 - 0x0701A708\nstatic const Lights1 rr_seg7_lights_0701A6F0 = gdSPDefLights1(\n    0x55, 0x5f, 0x53,\n    0xe3, 0xfe, 0xdf, 0x28, 0x28, 0x28\n);\n\n// 0x0701A708 - 0x0701A7F8\nstatic const Vtx rr_seg7_vertex_0701A708[] = {\n    {{{     0,    205,    819}, 0, {  1006,    464}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  -578,      0,    579}, 0, {     0,    990}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{     0,      0,    819}, 0, {   750,    208}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  -578,      0,   -578}, 0, {  1006,   3494}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{  -578,    205,   -578}, 0, {  1006,   3132}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{     0,    205,   -818}, 0, {  2112,   3132}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{     0,      0,   -818}, 0, {  2112,   3494}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{   579,      0,    579}, 0, {  2368,    208}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{   819,      0,      0}, 0, {  3150,    990}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{   819,    205,      0}, 0, {  2894,   1244}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{   579,    205,    579}, 0, {  2112,    464}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{  -578,      0,   -578}, 0, {   750,   3388}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{  -818,    205,      0}, 0, {   224,   2350}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{  -578,    205,   -578}, 0, {  1006,   3132}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{  -818,      0,      0}, 0, {     0,   2606}, {0x8b, 0x00, 0xd0, 0xff}}},\n};\n\n// 0x0701A7F8 - 0x0701A8E8\nstatic const Vtx rr_seg7_vertex_0701A7F8[] = {\n    {{{     0,      0,    819}, 0, {  5038,   4494}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   579,      0,   -578}, 0, {  3150,   2606}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   819,      0,      0}, 0, {  4256,   2606}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     0,    205,    819}, 0, {  1006,    464}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  -578,    205,    579}, 0, {   224,   1244}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  -578,      0,    579}, 0, {     0,    990}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{   579,      0,    579}, 0, {  2112,    102}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{     0,    205,    819}, 0, {  1006,    464}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{     0,      0,    819}, 0, {  1006,    102}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{   579,    205,    579}, 0, {  2112,    464}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{   579,      0,    579}, 0, {  5038,   3388}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     0,      0,   -818}, 0, {  2368,   3388}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -578,      0,   -578}, 0, {  2368,   4494}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -818,      0,      0}, 0, {  3150,   5276}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -578,      0,    579}, 0, {  4256,   5276}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0701A8E8 - 0x0701A9D8\nstatic const Vtx rr_seg7_vertex_0701A8E8[] = {\n    {{{     0,    205,   -818}, 0, {  2112,   3132}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{   579,    205,   -578}, 0, {  2894,   2350}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{     0,      0,   -818}, 0, {  2368,   3388}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{   579,    205,   -578}, 0, {  2894,   2350}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   579,    205,    579}, 0, {  2112,    464}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   819,    205,      0}, 0, {  2894,   1244}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    205,    819}, 0, {  1006,    464}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -578,    205,    579}, 0, {   224,   1244}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -818,    205,      0}, 0, {   224,   2350}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -578,    205,   -578}, 0, {  1006,   3132}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    205,   -818}, 0, {  2112,   3132}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -578,    205,    579}, 0, {   224,   1244}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{  -818,      0,      0}, 0, {  -136,   2350}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{  -578,      0,    579}, 0, {  -136,   1244}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{  -818,    205,      0}, 0, {   224,   2350}, {0x8b, 0x00, 0x30, 0xff}}},\n};\n\n// 0x0701A9D8 - 0x0701AA48\nstatic const Vtx rr_seg7_vertex_0701A9D8[] = {\n    {{{   819,      0,      0}, 0, {  3256,   1244}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{   579,    205,   -578}, 0, {  2894,   2350}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{   819,    205,      0}, 0, {  2894,   1244}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{   579,    205,   -578}, 0, {  2894,   2350}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{   579,      0,   -578}, 0, {  3150,   2606}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{     0,      0,   -818}, 0, {  2368,   3388}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{   579,      0,   -578}, 0, {  3256,   2350}, {0x75, 0x00, 0xd0, 0xff}}},\n};\n\n// 0x0701AA48 - 0x0701AB78\nstatic const Gfx rr_seg7_dl_0701AA48[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&rr_seg7_lights_0701A6F0.l, 1),\n    gsSPLight(&rr_seg7_lights_0701A6F0.a, 2),\n    gsSPVertex(rr_seg7_vertex_0701A708, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701A7F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 0,  2, 10, 0x0,  0, 11,  1, 0x0),\n    gsSP2Triangles( 0, 12, 11, 0x0,  0, 13, 12, 0x0),\n    gsSP1Triangle( 0, 14, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701A8E8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  7,  6, 0x0),\n    gsSP2Triangles( 3,  8,  7, 0x0,  3,  9,  8, 0x0),\n    gsSP2Triangles( 3, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701A9D8, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  6,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701AB78 - 0x0701ABE8\nconst Gfx rr_seg7_dl_0701AB78[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_0701AA48),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/rr/pyramid_platform/collision.inc.c",
    "content": "// 0x0702967C - 0x070296CA\nconst Collision rr_seg7_collision_0702967C[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x5),\n    COL_VERTEX(307, 307, -306),\n    COL_VERTEX(-306, 307, -306),\n    COL_VERTEX(-306, 307, 307),\n    COL_VERTEX(307, 307, 307),\n    COL_VERTEX(0, 0, 0),\n    COL_TRI_INIT(SURFACE_DEFAULT, 6),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(2, 1, 4),\n    COL_TRI(4, 3, 2),\n    COL_TRI(0, 4, 1),\n    COL_TRI(4, 0, 3),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/rr/pyramid_platform/geo.inc.c",
    "content": "// 0x0E0008D8\nconst GeoLayout rr_geo_0008D8[] = {\n    GEO_CULLING_RADIUS(700),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, rr_seg7_dl_0701AFA0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/rr/pyramid_platform/model.inc.c",
    "content": "// 0x0701AE68 - 0x0701AF48\nstatic const Vtx rr_seg7_vertex_0701AE68[] = {\n    {{{     0,      0,      0}, 0, {   990,    990}, {0x54, 0x16, 0xce, 0xff}}},\n    {{{   307,    307,   -306}, 0, {  2012,    990}, {0x54, 0x16, 0xce, 0xff}}},\n    {{{   307,    307,    307}, 0, {   990,      0}, {0x54, 0x16, 0xce, 0xff}}},\n    {{{  -306,    307,    307}, 0, {     0,    990}, {0x54, 0x16, 0xce, 0xff}}},\n    {{{  -306,    307,   -306}, 0, {   990,   2010}, {0x54, 0x16, 0xce, 0xff}}},\n    {{{   307,    307,   -306}, 0, {  2012,    990}, {0x55, 0x3f, 0xbf, 0xff}}},\n    {{{     0,      0,      0}, 0, {   990,    990}, {0x55, 0x3f, 0xbf, 0xff}}},\n    {{{  -306,    307,   -306}, 0, {   990,   2010}, {0x55, 0x3f, 0xbf, 0xff}}},\n    {{{   307,    307,    307}, 0, {   990,      0}, {0x55, 0x3f, 0xbf, 0xff}}},\n    {{{  -306,    307,    307}, 0, {     0,    990}, {0x55, 0x3f, 0xbf, 0xff}}},\n    {{{   307,    307,   -306}, 0, {  2012,    990}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  -306,    307,   -306}, 0, {   990,   2010}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  -306,    307,    307}, 0, {     0,    990}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{   307,    307,    307}, 0, {   990,      0}, {0x8c, 0x98, 0xd8, 0xff}}},\n};\n\n// 0x0701AF48 - 0x0701AFA0\nstatic const Gfx rr_seg7_dl_0701AF48[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_0701AE68, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701AFA0 - 0x0701B010\nconst Gfx rr_seg7_dl_0701AFA0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_0701AF48),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/rr/rotating_bridge_platform/collision.inc.c",
    "content": "// 0x07029308 - 0x07029506\nconst Collision rr_seg7_collision_rotating_platform_with_fire[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x21),\n    COL_VERTEX(-1114, 461, -117),\n    COL_VERTEX(-387, 461, -139),\n    COL_VERTEX(-387, 461, 138),\n    COL_VERTEX(-1114, 461, 138),\n    COL_VERTEX(-1114, 563, -117),\n    COL_VERTEX(-1114, 563, 138),\n    COL_VERTEX(376, 461, -139),\n    COL_VERTEX(1103, 461, -139),\n    COL_VERTEX(1103, 461, 138),\n    COL_VERTEX(376, 461, 138),\n    COL_VERTEX(1103, 563, -139),\n    COL_VERTEX(1103, 563, 138),\n    COL_VERTEX(376, 563, 138),\n    COL_VERTEX(0, 0, 0),\n    COL_VERTEX(133, 410, -382),\n    COL_VERTEX(-387, 563, 138),\n    COL_VERTEX(-387, 563, -139),\n    COL_VERTEX(376, 563, -139),\n    COL_VERTEX(-387, 410, 138),\n    COL_VERTEX(-387, 410, -139),\n    COL_VERTEX(133, 614, -382),\n    COL_VERTEX(-144, 410, -382),\n    COL_VERTEX(-144, 410, 381),\n    COL_VERTEX(133, 410, 381),\n    COL_VERTEX(376, 410, 138),\n    COL_VERTEX(376, 410, -139),\n    COL_VERTEX(-387, 614, -139),\n    COL_VERTEX(-144, 614, -382),\n    COL_VERTEX(-387, 614, 138),\n    COL_VERTEX(376, 614, -139),\n    COL_VERTEX(-144, 614, 381),\n    COL_VERTEX(133, 614, 381),\n    COL_VERTEX(376, 614, 138),\n    COL_TRI_INIT(SURFACE_DEFAULT, 50),\n    COL_TRI(8, 12, 9),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(3, 4, 0),\n    COL_TRI(3, 5, 4),\n    COL_TRI(6, 7, 8),\n    COL_TRI(6, 8, 9),\n    COL_TRI(6, 10, 7),\n    COL_TRI(8, 11, 12),\n    COL_TRI(13, 25, 24),\n    COL_TRI(14, 25, 13),\n    COL_TRI(13, 24, 23),\n    COL_TRI(13, 23, 22),\n    COL_TRI(13, 22, 18),\n    COL_TRI(13, 18, 19),\n    COL_TRI(13, 19, 21),\n    COL_TRI(13, 21, 14),\n    COL_TRI(5, 15, 16),\n    COL_TRI(5, 16, 4),\n    COL_TRI(2, 15, 5),\n    COL_TRI(2, 5, 3),\n    COL_TRI(18, 26, 19),\n    COL_TRI(0, 4, 16),\n    COL_TRI(7, 11, 8),\n    COL_TRI(7, 10, 11),\n    COL_TRI(12, 11, 10),\n    COL_TRI(12, 10, 17),\n    COL_TRI(6, 17, 10),\n    COL_TRI(19, 26, 27),\n    COL_TRI(20, 27, 26),\n    COL_TRI(19, 27, 21),\n    COL_TRI(21, 27, 20),\n    COL_TRI(21, 20, 14),\n    COL_TRI(14, 29, 25),\n    COL_TRI(14, 20, 29),\n    COL_TRI(22, 28, 18),\n    COL_TRI(18, 28, 26),\n    COL_TRI(20, 26, 28),\n    COL_TRI(22, 30, 28),\n    COL_TRI(20, 28, 30),\n    COL_TRI(23, 30, 22),\n    COL_TRI(23, 31, 30),\n    COL_TRI(20, 30, 31),\n    COL_TRI(24, 31, 23),\n    COL_TRI(24, 32, 31),\n    COL_TRI(20, 31, 32),\n    COL_TRI(25, 32, 24),\n    COL_TRI(25, 29, 32),\n    COL_TRI(20, 32, 29),\n    COL_TRI(0, 16, 1),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/rr/rotating_bridge_platform/geo.inc.c",
    "content": "// 0x0E000878\nconst GeoLayout rr_geo_000878[] = {\n    GEO_CULLING_RADIUS(1500),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, rr_seg7_dl_0701A568),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/rr/rotating_bridge_platform/model.inc.c",
    "content": "// 0x07019B68 - 0x07019B80\nstatic const Lights1 rr_seg7_lights_07019B68 = gdSPDefLights1(\n    0x32, 0x32, 0x32,\n    0xc8, 0xc8, 0xc8, 0x28, 0x28, 0x28\n);\n\n// 0x07019B80 - 0x07019B98\nstatic const Lights1 rr_seg7_lights_07019B80 = gdSPDefLights1(\n    0x23, 0x2b, 0x14,\n    0x8e, 0xac, 0x52, 0x28, 0x28, 0x28\n);\n\n// 0x07019B98 - 0x07019BB0\nstatic const Lights1 rr_seg7_lights_07019B98 = gdSPDefLights1(\n    0x1f, 0x2b, 0x14,\n    0x7f, 0xac, 0x52, 0x28, 0x28, 0x28\n);\n\n// 0x07019BB0 - 0x07019BC8\nstatic const Lights1 rr_seg7_lights_07019BB0 = gdSPDefLights1(\n    0x2f, 0x2a, 0x0f,\n    0xbf, 0xaa, 0x3f, 0x28, 0x28, 0x28\n);\n\n// 0x07019BC8 - 0x07019BE0\nstatic const Lights1 rr_seg7_lights_07019BC8 = gdSPDefLights1(\n    0x14, 0x23, 0x2b,\n    0x52, 0x8e, 0xac, 0x28, 0x28, 0x28\n);\n\n// 0x07019BE0 - 0x07019CD0\nstatic const Vtx rr_seg7_vertex_07019BE0[] = {\n    {{{   133,    614,   -382}, 0, {  2570,   2202}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -387,    614,   -139}, 0, {   662,   2896}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -387,    614,    138}, 0, {     0,   2202}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -387,    410,   -139}, 0, {   662,   2896}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -387,    614,   -139}, 0, {   662,   2896}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -144,    614,   -382}, 0, {  1876,   2896}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -144,    410,   -382}, 0, {  1876,   2896}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -387,    410,    138}, 0, {     0,   2202}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -387,    614,   -139}, 0, {   662,   2896}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -387,    410,   -139}, 0, {   662,   2896}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -144,    614,   -382}, 0, {  1876,   2896}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -144,    410,   -382}, 0, {  1876,   2896}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -144,    614,   -382}, 0, {  1876,   2896}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   133,    614,   -382}, 0, {  2570,   2202}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   133,    410,   -382}, 0, {  2570,   2202}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07019CD0 - 0x07019DD0\nstatic const Vtx rr_seg7_vertex_07019CD0[] = {\n    {{{   133,    410,   -382}, 0, {  2570,   2202}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   133,    614,   -382}, 0, {  2570,   2202}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   376,    614,   -139}, 0, {  2570,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   376,    410,   -139}, 0, {  2570,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -144,    410,    381}, 0, {     0,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -387,    614,    138}, 0, {     0,   2202}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -387,    410,    138}, 0, {     0,   2202}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -387,    410,    138}, 0, {     0,   2202}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -387,    614,    138}, 0, {     0,   2202}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -387,    614,   -139}, 0, {   662,   2896}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   133,    614,   -382}, 0, {  2570,   2202}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   133,    614,    381}, 0, {   662,    296}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   376,    614,    138}, 0, {  1876,    296}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -144,    614,    381}, 0, {     0,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -144,    614,    381}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -387,    614,    138}, 0, {     0,   2202}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07019DD0 - 0x07019E80\nstatic const Vtx rr_seg7_vertex_07019DD0[] = {\n    {{{   376,    410,    138}, 0, {  1876,    296}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   376,    614,    138}, 0, {  1876,    296}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   133,    614,    381}, 0, {   662,    296}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   133,    410,    381}, 0, {   662,    296}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   376,    410,   -139}, 0, {  2570,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   376,    614,    138}, 0, {  1876,    296}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   376,    410,    138}, 0, {  1876,    296}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   376,    614,   -139}, 0, {  2570,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   133,    614,   -382}, 0, {  2570,   2202}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   376,    614,    138}, 0, {  1876,    296}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   376,    614,   -139}, 0, {  2570,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07019E80 - 0x07019EC0\nstatic const Vtx rr_seg7_vertex_07019E80[] = {\n    {{{   133,    410,    381}, 0, {  1510,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -144,    614,    381}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -144,    410,    381}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   133,    614,    381}, 0, {  1510,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07019EC0 - 0x07019F40\nstatic const Vtx rr_seg7_vertex_07019EC0[] = {\n    {{{ -1114,    461,    138}, 0, {   734,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1114,    563,    138}, 0, {   734,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1114,    563,   -117}, 0, {   224,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1114,    461,   -117}, 0, {   224,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1103,    461,   -139}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1103,    563,    138}, 0, {   990,    524}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1103,    461,    138}, 0, {   990,    524}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1103,    563,   -139}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07019F40 - 0x0701A040\nstatic const Vtx rr_seg7_vertex_07019F40[] = {\n    {{{ -1114,    461,   -117}, 0, { -3096,   1032}, {0xfd, 0x00, 0x82, 0xff}}},\n    {{{ -1114,    563,   -117}, 0, { -3096,   1032}, {0xfd, 0x00, 0x82, 0xff}}},\n    {{{  -387,    563,   -139}, 0, {   990,    990}, {0xfd, 0x00, 0x82, 0xff}}},\n    {{{   376,    461,   -139}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   376,    563,   -139}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1103,    563,   -139}, 0, { -3096,   1032}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1103,    461,   -139}, 0, { -3096,   1032}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1103,    461,    138}, 0, { -3096,   1032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1103,    563,    138}, 0, { -3096,   1032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   376,    563,    138}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   376,    461,    138}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -387,    461,    138}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -387,    563,    138}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1114,    563,    138}, 0, { -3096,   1032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1114,    461,    138}, 0, { -3096,   1032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -387,    461,   -139}, 0, {   990,    990}, {0xfd, 0x00, 0x82, 0xff}}},\n};\n\n// 0x0701A040 - 0x0701A140\nstatic const Vtx rr_seg7_vertex_0701A040[] = {\n    {{{   376,    563,    138}, 0, { -3096,    472}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1103,    563,   -139}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   376,    563,   -139}, 0, { -3096,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1114,    461,   -117}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -387,    461,   -139}, 0, { -3096,   1032}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -387,    461,    138}, 0, { -3096,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1114,    461,    138}, 0, {   990,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   376,    461,   -139}, 0, { -3096,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1103,    461,    138}, 0, {   990,    524}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   376,    461,    138}, 0, { -3096,    524}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1103,    461,   -139}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1114,    563,    138}, 0, {  1246,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -387,    563,    138}, 0, { -2840,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -387,    563,   -139}, 0, { -2840,    982}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1114,    563,   -117}, 0, {  1246,    942}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1103,    563,    138}, 0, {   990,    472}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0701A140 - 0x0701A230\nstatic const Vtx rr_seg7_vertex_0701A140[] = {\n    {{{     0,      0,      0}, 0, {   692,   -288}, {0x5d, 0xab, 0x00, 0xff}}},\n    {{{   376,    410,   -139}, 0, {  2570,   2012}, {0x5d, 0xab, 0x00, 0xff}}},\n    {{{   376,    410,    138}, 0, {  2570,   2012}, {0x5d, 0xab, 0x00, 0xff}}},\n    {{{   133,    410,   -382}, 0, {  1356,   2012}, {0x43, 0xac, 0xbd, 0xff}}},\n    {{{   376,    410,   -139}, 0, {  2570,   2012}, {0x43, 0xac, 0xbd, 0xff}}},\n    {{{     0,      0,      0}, 0, {   692,   -288}, {0x43, 0xac, 0xbd, 0xff}}},\n    {{{     0,      0,      0}, 0, {   692,   -288}, {0x43, 0xac, 0x43, 0xff}}},\n    {{{   376,    410,    138}, 0, {  2570,   2012}, {0x43, 0xac, 0x43, 0xff}}},\n    {{{   133,    410,    381}, 0, {  1356,   2012}, {0x43, 0xac, 0x43, 0xff}}},\n    {{{     0,      0,      0}, 0, {   692,   -288}, {0x00, 0xaa, 0x5d, 0xff}}},\n    {{{   133,    410,    381}, 0, {  1356,   2012}, {0x00, 0xaa, 0x5d, 0xff}}},\n    {{{  -144,    410,    381}, 0, {     0,   2012}, {0x00, 0xaa, 0x5d, 0xff}}},\n    {{{     0,      0,      0}, 0, {   692,   -288}, {0xbe, 0xab, 0x42, 0xff}}},\n    {{{  -144,    410,    381}, 0, {     0,   2012}, {0xbe, 0xab, 0x42, 0xff}}},\n    {{{  -387,    410,    138}, 0, { -1244,   2012}, {0xbe, 0xab, 0x42, 0xff}}},\n};\n\n// 0x0701A230 - 0x0701A2C0\nstatic const Vtx rr_seg7_vertex_0701A230[] = {\n    {{{     0,      0,      0}, 0, {   692,   -288}, {0xa4, 0xa9, 0x00, 0xff}}},\n    {{{  -387,    410,    138}, 0, { -1244,   2012}, {0xa4, 0xa9, 0x00, 0xff}}},\n    {{{  -387,    410,   -139}, 0, { -1244,   2012}, {0xa4, 0xa9, 0x00, 0xff}}},\n    {{{     0,      0,      0}, 0, {   692,   -288}, {0xbe, 0xab, 0xbe, 0xff}}},\n    {{{  -387,    410,   -139}, 0, { -1244,   2012}, {0xbe, 0xab, 0xbe, 0xff}}},\n    {{{  -144,    410,   -382}, 0, {     0,   2012}, {0xbe, 0xab, 0xbe, 0xff}}},\n    {{{     0,      0,      0}, 0, {   692,   -288}, {0x00, 0xaa, 0xa4, 0xff}}},\n    {{{  -144,    410,   -382}, 0, {     0,   2012}, {0x00, 0xaa, 0xa4, 0xff}}},\n    {{{   133,    410,   -382}, 0, {  1356,   2012}, {0x00, 0xaa, 0xa4, 0xff}}},\n};\n\n// 0x0701A2C0 - 0x0701A3A8\nstatic const Gfx rr_seg7_dl_0701A2C0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&rr_seg7_lights_07019B68.l, 1),\n    gsSPLight(&rr_seg7_lights_07019B68.a, 2),\n    gsSPVertex(rr_seg7_vertex_07019BE0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 0, 10,  1, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07019CD0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  4, 13,  5, 0x0),\n    gsSP2Triangles(10, 14, 11, 0x0, 10, 15, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07019DD0, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP1Triangle( 8,  9, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701A3A8 - 0x0701A3E0\nstatic const Gfx rr_seg7_dl_0701A3A8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_07019E80, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701A3E0 - 0x0701A4E8\nstatic const Gfx rr_seg7_dl_0701A3E0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&rr_seg7_lights_07019B80.l, 1),\n    gsSPLight(&rr_seg7_lights_07019B80.a, 2),\n    gsSPVertex(rr_seg7_vertex_07019EC0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPLight(&rr_seg7_lights_07019B98.l, 1),\n    gsSPLight(&rr_seg7_lights_07019B98.a, 2),\n    gsSPVertex(rr_seg7_vertex_07019F40, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPLight(&rr_seg7_lights_07019BB0.l, 1),\n    gsSPLight(&rr_seg7_lights_07019BB0.a, 2),\n    gsSPVertex(rr_seg7_vertex_0701A040, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701A4E8 - 0x0701A568\nstatic const Gfx rr_seg7_dl_0701A4E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&rr_seg7_lights_07019BC8.l, 1),\n    gsSPLight(&rr_seg7_lights_07019BC8.a, 2),\n    gsSPVertex(rr_seg7_vertex_0701A140, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701A230, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701A568 - 0x0701A608\nconst Gfx rr_seg7_dl_0701A568[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_0701A2C0),\n    gsSPDisplayList(rr_seg7_dl_0701A3A8),\n    gsSPDisplayList(rr_seg7_dl_0701A3E0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_0701A4E8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/rr/script.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"behavior_data.h\"\n#include \"model_ids.h\"\n#include \"seq_ids.h\"\n#include \"segment_symbols.h\"\n#include \"level_commands.h\"\n\n#include \"game/level_update.h\"\n\n#include \"levels/scripts.h\"\n\n#include \"actors/common1.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/rr/header.h\"\n\nstatic const LevelScript script_func_local_1[] = {\n    OBJECT(/*model*/ MODEL_RR_SLIDING_PLATFORM,         /*pos*/ -3400, -2038,  6564, /*angle*/  0,   0,   0, /*bhvParam*/ BPARAM1(0x02) | BPARAM2(0x56), /*bhv*/ bhvSlidingPlatform2),\n    OBJECT(/*model*/ MODEL_RR_SLIDING_PLATFORM,         /*pos*/ -2684, -1423,   -36, /*angle*/  0,   0,   0, /*bhvParam*/ BPARAM1(0x02) | BPARAM2(0x59), /*bhv*/ bhvSlidingPlatform2),\n    OBJECT(/*model*/ MODEL_RR_FLYING_CARPET,            /*pos*/  4571, -1782,  2036, /*angle*/  0, 180,   0, /*bhvParam*/ 0, /*bhv*/ bhvPlatformOnTrack),\n    OBJECT(/*model*/ MODEL_RR_FLYING_CARPET,            /*pos*/   580,  -963, -3659, /*angle*/  0, 180,   0, /*bhvParam*/ BPARAM2(0x01), /*bhv*/ bhvPlatformOnTrack),\n    OBJECT(/*model*/ MODEL_RR_FLYING_CARPET,            /*pos*/  1567,   880,  -184, /*angle*/  0, 180,   0, /*bhvParam*/ BPARAM2(0x07), /*bhv*/ bhvPlatformOnTrack),\n    OBJECT(/*model*/ MODEL_RR_FLYING_CARPET,            /*pos*/   646,   880,  -184, /*angle*/  0,   0,   0, /*bhvParam*/ BPARAM2(0x08), /*bhv*/ bhvPlatformOnTrack),\n    OBJECT(/*model*/ MODEL_RR_OCTAGONAL_PLATFORM,       /*pos*/   644, -1321, -1301, /*angle*/  0, 180,   0, /*bhvParam*/ BPARAM1(0x03) | BPARAM2(0x01), /*bhv*/ bhvOctagonalPlatformRotating),\n    OBJECT(/*model*/ MODEL_RR_OCTAGONAL_PLATFORM,       /*pos*/  1797, -1321,   -56, /*angle*/  0,   0,   0, /*bhvParam*/ BPARAM2(0x01), /*bhv*/ bhvOctagonalPlatformRotating),\n    OBJECT(/*model*/ MODEL_RR_OCTAGONAL_PLATFORM,       /*pos*/   663, -1321,  1179, /*angle*/  0, 180,   0, /*bhvParam*/ BPARAM1(0x03) | BPARAM2(0x01), /*bhv*/ bhvOctagonalPlatformRotating),\n    OBJECT(/*model*/ MODEL_RR_OCTAGONAL_PLATFORM,       /*pos*/  -502, -1321,   -51, /*angle*/  0,   0,   0, /*bhvParam*/ BPARAM2(0x01), /*bhv*/ bhvOctagonalPlatformRotating),\n    OBJECT(/*model*/ MODEL_RR_ROTATING_BRIDGE_PLATFORM, /*pos*/  5043,  1342,   300, /*angle*/  0,   0,   0, /*bhvParam*/ BPARAM2(0x01), /*bhv*/ bhvRRRotatingBridgePlatform),\n    OBJECT(/*model*/ MODEL_RR_CRUISER_WING,             /*pos*/  3473,  2422, -1821, /*angle*/  0,   0,   0, /*bhvParam*/ 0, /*bhv*/ bhvRRCruiserWing),\n    OBJECT(/*model*/ MODEL_RR_CRUISER_WING,             /*pos*/  4084,  2431, -2883, /*angle*/ 45, 180, 180, /*bhvParam*/ BPARAM2(0x01), /*bhv*/ bhvRRCruiserWing),\n    OBJECT(/*model*/ MODEL_RR_CRUISER_WING,             /*pos*/  3470,  2420, -2869, /*angle*/ 45, 180, 180, /*bhvParam*/ BPARAM2(0x01), /*bhv*/ bhvRRCruiserWing),\n    OBJECT(/*model*/ MODEL_RR_CRUISER_WING,             /*pos*/  2856,  2410, -2855, /*angle*/ 45, 180, 180, /*bhvParam*/ BPARAM2(0x01), /*bhv*/ bhvRRCruiserWing),\n    OBJECT(/*model*/ MODEL_RR_CRUISER_WING,             /*pos*/  4101,  2435, -1813, /*angle*/  0,   0,   0, /*bhvParam*/ 0, /*bhv*/ bhvRRCruiserWing),\n    OBJECT(/*model*/ MODEL_RR_CRUISER_WING,             /*pos*/  2859,  2411, -1834, /*angle*/  0,   0,   0, /*bhvParam*/ 0, /*bhv*/ bhvRRCruiserWing),\n    OBJECT(/*model*/ MODEL_RR_SEESAW_PLATFORM,          /*pos*/ -6013, -2857,  6564, /*angle*/  0, 270,   0, /*bhvParam*/ BPARAM2(0x05), /*bhv*/ bhvSeesawPlatform),\n    OBJECT(/*model*/ MODEL_RR_SEESAW_PLATFORM,          /*pos*/   614, -3574,  6564, /*angle*/  0, 270,   0, /*bhvParam*/ BPARAM2(0x05), /*bhv*/ bhvSeesawPlatform),\n    OBJECT(/*model*/ MODEL_RR_SWINGING_PLATFORM,        /*pos*/ -3557,  -809,  4619, /*angle*/  0,   0,   0, /*bhvParam*/ 0, /*bhv*/ bhvSwingPlatform),\n    OBJECT(/*model*/ MODEL_RR_SWINGING_PLATFORM,        /*pos*/ -2213, -2582,  6257, /*angle*/  0,   0,   0, /*bhvParam*/ 0, /*bhv*/ bhvSwingPlatform),\n    OBJECT(/*model*/ MODEL_NONE,                        /*pos*/     0,     0,     0, /*angle*/  0,   0,   0, /*bhvParam*/ 0, /*bhv*/ bhvDonutPlatformSpawner),\n    OBJECT(/*model*/ MODEL_RR_ELEVATOR_PLATFORM,        /*pos*/ -2684,  1546,   -36, /*angle*/  0,   0,   0, /*bhvParam*/ BPARAM2(0x05), /*bhv*/ bhvRRElevatorPlatform),\n    OBJECT(/*model*/ MODEL_RR_TRICKY_TRIANGLES,         /*pos*/  5862, -1347,  6564, /*angle*/  0,   0,   0, /*bhvParam*/ BPARAM2(0x02), /*bhv*/ bhvAnimatesOnFloorSwitchPress),\n    OBJECT(/*model*/ MODEL_PURPLE_SWITCH,               /*pos*/  4428, -1936,  6564, /*angle*/  0,   0,   0, /*bhvParam*/ 0, /*bhv*/ bhvFloorSwitchAnimatesObject),\n    OBJECT(/*model*/ MODEL_NONE,                        /*pos*/   614, -2857,  3671, /*angle*/  0,   0,   0, /*bhvParam*/ BPARAM2(204),  /*bhv*/ bhvPoleGrabbing),\n    OBJECT(/*model*/ MODEL_NONE,                        /*pos*/   621, -4598,  7362, /*angle*/  0,   0,   0, /*bhvParam*/ BPARAM2(117),  /*bhv*/ bhvPoleGrabbing),\n    OBJECT(/*model*/ MODEL_NONE,                        /*pos*/  5119,  3819,  3325, /*angle*/  0,   0,   0, /*bhvParam*/ BPARAM2(97),   /*bhv*/ bhvPoleGrabbing),\n    OBJECT(/*model*/ MODEL_NONE,                        /*pos*/  3554,  2891, -2327, /*angle*/  0,   0,   0, /*bhvParam*/ BPARAM2(193),  /*bhv*/ bhvPoleGrabbing),\n    OBJECT(/*model*/ MODEL_NONE,                        /*pos*/  2680,   214,   295, /*angle*/  0,   0,   0, /*bhvParam*/ BPARAM2(98),   /*bhv*/ bhvPoleGrabbing),\n    OBJECT(/*model*/ MODEL_NONE,                        /*pos*/  3811,  1033,   295, /*angle*/  0,   0,   0, /*bhvParam*/ BPARAM2(98),   /*bhv*/ bhvPoleGrabbing),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_2[] = {\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -5809, -1834,  5719, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlamethrower),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -4838, -1015,  4081, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlamethrower),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/  3301, -1834,  5617, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlamethrower),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/  6772,  -757,  -606, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlamethrower),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -4187,  3213, -6630, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFlamethrower),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_3[] = {\n    OBJECT_WITH_ACTS(/*model*/ MODEL_STAR, /*pos*/  1450,  3400, -2352, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_1), /*bhv*/ bhvStar,                 /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_STAR, /*pos*/ -4200,  6700, -4450, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_2), /*bhv*/ bhvStar,                 /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_NONE, /*pos*/ -5150, -1400,     0, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_3), /*bhv*/ bhvHiddenRedCoinStar, /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_STAR, /*pos*/ -5850,  -700,  4950, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_4), /*bhv*/ bhvStar,                 /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_STAR, /*pos*/  3700,  -400,  6600, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_5), /*bhv*/ bhvStar,                 /*acts*/ ALL_ACTS),\n    RETURN(),\n};\n\nconst LevelScript level_rr_entry[] = {\n    INIT_LEVEL(),\n    LOAD_MIO0        (/*seg*/ 0x07, _rr_segment_7SegmentRomStart, _rr_segment_7SegmentRomEnd),\n    LOAD_MIO0_TEXTURE(/*seg*/ 0x09, _sky_mio0SegmentRomStart, _sky_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x0A, _cloud_floor_skybox_mio0SegmentRomStart, _cloud_floor_skybox_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x05, _group11_mio0SegmentRomStart, _group11_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0C, _group11_geoSegmentRomStart,  _group11_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x08, _common0_mio0SegmentRomStart, _common0_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0F, _common0_geoSegmentRomStart, _common0_geoSegmentRomEnd),\n    ALLOC_LEVEL_POOL(),\n    MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),\n    JUMP_LINK(script_func_global_12),\n    JUMP_LINK(script_func_global_1),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_03,           rr_geo_000660),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_04,           rr_geo_000678),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_05,           rr_geo_000690),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_06,           rr_geo_0006A8),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_07,           rr_geo_0006C0),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_08,           rr_geo_0006D8),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_09,           rr_geo_0006F0),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_0A,           rr_geo_000708),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_0B,           rr_geo_000720),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_0C,           rr_geo_000738),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_0D,           rr_geo_000758),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_0E,           rr_geo_000770),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_0F,           rr_geo_000788),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_10,           rr_geo_0007A0),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_11,           rr_geo_0007B8),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_12,           rr_geo_0007D0),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_13,           rr_geo_0007E8),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_14,           rr_geo_000800),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_15,           rr_geo_000818),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_16,           rr_geo_000830),\n    LOAD_MODEL_FROM_GEO(MODEL_RR_SLIDING_PLATFORM,         rr_geo_0008C0),\n    LOAD_MODEL_FROM_GEO(MODEL_RR_FLYING_CARPET,            rr_geo_000848),\n    LOAD_MODEL_FROM_GEO(MODEL_RR_OCTAGONAL_PLATFORM,       rr_geo_0008A8),\n    LOAD_MODEL_FROM_GEO(MODEL_RR_ROTATING_BRIDGE_PLATFORM, rr_geo_000878),\n    LOAD_MODEL_FROM_GEO(MODEL_RR_TRIANGLE_PLATFORM,        rr_geo_0008D8),\n    LOAD_MODEL_FROM_GEO(MODEL_RR_CRUISER_WING,             rr_geo_000890),\n    LOAD_MODEL_FROM_GEO(MODEL_RR_SEESAW_PLATFORM,          rr_geo_000908),\n    LOAD_MODEL_FROM_GEO(MODEL_RR_L_SHAPED_PLATFORM,        rr_geo_000940),\n    LOAD_MODEL_FROM_GEO(MODEL_RR_SWINGING_PLATFORM,        rr_geo_000860),\n    LOAD_MODEL_FROM_GEO(MODEL_RR_DONUT_PLATFORM,           rr_geo_000920),\n    LOAD_MODEL_FROM_GEO(MODEL_RR_ELEVATOR_PLATFORM,        rr_geo_0008F0),\n    LOAD_MODEL_FROM_GEO(MODEL_RR_TRICKY_TRIANGLES,         rr_geo_000958),\n    LOAD_MODEL_FROM_GEO(MODEL_RR_TRICKY_TRIANGLES_FRAME1,  rr_geo_000970),\n    LOAD_MODEL_FROM_GEO(MODEL_RR_TRICKY_TRIANGLES_FRAME2,  rr_geo_000988),\n    LOAD_MODEL_FROM_GEO(MODEL_RR_TRICKY_TRIANGLES_FRAME3,  rr_geo_0009A0),\n    LOAD_MODEL_FROM_GEO(MODEL_RR_TRICKY_TRIANGLES_FRAME4,  rr_geo_0009B8),\n\n    AREA(/*index*/ 1, rr_geo_0009D0),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ 2599, -833, 2071, /*angle*/ 0, 90, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvSpinAirborneWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ -7092, 2364, -63, /*angle*/ 0, 90, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0B), /*bhv*/ bhvFadingWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ -4213, 3379, -2815, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0C), /*bhv*/ bhvFadingWarp),\n        WARP_NODE(/*id*/ WARP_NODE_0A,      /*destLevel*/ LEVEL_RR,     /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_0B,      /*destLevel*/ LEVEL_RR,     /*destArea*/ 1, /*destNode*/ WARP_NODE_0C, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_0C,      /*destLevel*/ LEVEL_RR,     /*destArea*/ 1, /*destNode*/ WARP_NODE_0B, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_SUCCESS, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_3A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH,   /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_6C, /*flags*/ WARP_NO_CHECKPOINT),\n        JUMP_LINK(script_func_local_1),\n        JUMP_LINK(script_func_local_2),\n        JUMP_LINK(script_func_local_3),\n        TERRAIN(/*terrainData*/ rr_seg7_collision_level),\n        MACRO_OBJECTS(/*objList*/ rr_seg7_macro_objs),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0000, /*seq*/ SEQ_LEVEL_SLIDE),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_STONE),\n    END_AREA(),\n\n    FREE_LEVEL_POOL(),\n    MARIO_POS(/*area*/ 1, /*yaw*/ 90, /*pos*/ 2599, -1833, 2071),\n    CALL(/*arg*/ 0, /*func*/ lvl_init_or_update),\n    CALL_LOOP(/*arg*/ 1, /*func*/ lvl_init_or_update),\n    CLEAR_LEVEL(),\n    SLEEP_BEFORE_EXIT(/*frames*/ 1),\n    EXIT(),\n};\n"
  },
  {
    "path": "levels/rr/seesaw_platform/collision.inc.c",
    "content": "// 0x07029750 - 0x070297D4\nconst Collision rr_seg7_collision_07029750[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(307, 102, 819),\n    COL_VERTEX(307, 0, -767),\n    COL_VERTEX(307, 102, -818),\n    COL_VERTEX(-306, 0, -767),\n    COL_VERTEX(-306, 102, -818),\n    COL_VERTEX(307, 0, 768),\n    COL_VERTEX(-306, 0, 768),\n    COL_VERTEX(-306, 102, 819),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(2, 1, 3),\n    COL_TRI(2, 3, 4),\n    COL_TRI(4, 0, 2),\n    COL_TRI(0, 5, 1),\n    COL_TRI(1, 6, 3),\n    COL_TRI(1, 5, 6),\n    COL_TRI(4, 3, 6),\n    COL_TRI(4, 7, 0),\n    COL_TRI(4, 6, 7),\n    COL_TRI(7, 5, 0),\n    COL_TRI(7, 6, 5),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/rr/seesaw_platform/geo.inc.c",
    "content": "// 0x0E000908\nconst GeoLayout rr_geo_000908[] = {\n    GEO_CULLING_RADIUS(1000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, rr_seg7_dl_0701B4C0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/rr/seesaw_platform/model.inc.c",
    "content": "// US: 0x0701B0C8\n// 0x0701B290 - 0x0701B370\nstatic const Vtx rr_seg7_vertex_0701B290[] = {\n#ifdef VERSION_JP\n    {{{  -306,    102,   -818}, 0, {  3716,   -714}, {0xaf, 0xcf, 0xc1, 0xff}}},\n    {{{  -306,    102,    819}, 0, {   990,   2010}, {0xaf, 0xcf, 0xc1, 0xff}}},\n    {{{   307,    102,    819}, 0, {     0,    990}, {0xaf, 0xcf, 0xc1, 0xff}}},\n    {{{   307,    102,   -818}, 0, {  2694,  -1736}, {0xaf, 0xcf, 0xc1, 0xff}}},\n    {{{   307,      0,   -767}, 0, {  2608,  -1650}, {0x53, 0x73, 0x76, 0xff}}},\n    {{{  -306,      0,    768}, 0, {  1076,   1924}, {0x53, 0x73, 0x76, 0xff}}},\n    {{{  -306,      0,   -767}, 0, {  3630,   -628}, {0x53, 0x73, 0x76, 0xff}}},\n    {{{   307,      0,    768}, 0, {    54,    904}, {0x53, 0x73, 0x76, 0xff}}},\n    {{{  -306,    102,   -818}, 0, {  2694,   3714}, {0x63, 0x80, 0x88, 0xff}}},\n    {{{  -306,      0,    768}, 0, {  -116,   1244}, {0x63, 0x80, 0x88, 0xff}}},\n    {{{  -306,    102,    819}, 0, {     0,    990}, {0x63, 0x80, 0x88, 0xff}}},\n    {{{  -306,    102,   -818}, 0, {  3716,   -714}, {0x63, 0x80, 0x88, 0xff}}},\n    {{{  -306,      0,   -767}, 0, {  3630,   -628}, {0x63, 0x80, 0x88, 0xff}}},\n    {{{  -306,      0,    768}, 0, {  1076,   1924}, {0x63, 0x80, 0x88, 0xff}}},\n#else// increase from 14 to 16\n    {{{  -306,    102,   -818}, 0, {  3716,   -714}, {0xaf, 0xcf, 0xc1, 0xff}}},\n    {{{  -306,    102,    819}, 0, {   990,   2010}, {0xaf, 0xcf, 0xc1, 0xff}}},\n    {{{   307,    102,    819}, 0, {     0,    990}, {0xaf, 0xcf, 0xc1, 0xff}}},\n    {{{   307,    102,   -818}, 0, {  2694,  -1736}, {0xaf, 0xcf, 0xc1, 0xff}}},\n    {{{   307,      0,   -767}, 0, {  2438,  -1820}, {0x53, 0x73, 0x76, 0xff}}},\n    {{{  -306,      0,    768}, 0, { -1138,   -288}, {0x53, 0x73, 0x76, 0xff}}},\n    {{{  -306,      0,   -767}, 0, {  1416,  -2842}, {0x53, 0x73, 0x76, 0xff}}},\n    {{{   307,      0,    768}, 0, {  -116,    734}, {0x53, 0x73, 0x76, 0xff}}},\n    {{{  -306,    102,   -818}, 0, {  3716,   -714}, {0x63, 0x80, 0x88, 0xff}}},\n    {{{  -306,      0,   -767}, 0, {  3800,   -458}, {0x63, 0x80, 0x88, 0xff}}},\n    {{{  -306,      0,    768}, 0, {  1246,   2096}, {0x63, 0x80, 0x88, 0xff}}},\n    {{{  -306,    102,    819}, 0, {   990,   2010}, {0x63, 0x80, 0x88, 0xff}}},\n    {{{   307,    102,    819}, 0, {     0,    990}, {0x63, 0x80, 0x88, 0xff}}},\n    {{{   307,      0,    768}, 0, {  -116,    734}, {0x63, 0x80, 0x88, 0xff}}},\n    {{{   307,      0,   -767}, 0, {  2438,  -1820}, {0x63, 0x80, 0x88, 0xff}}},\n    {{{   307,    102,   -818}, 0, {  2694,  -1736}, {0x63, 0x80, 0x88, 0xff}}},\n#endif\n};\n\n// US: 0x0701B1C8\n// 0x0701B370 - 0x0701B430\nstatic const Vtx rr_seg7_vertex_0701B370[] = {\n#ifdef VERSION_JP\n    {{{   307,    102,    819}, 0, {     0,    990}, {0x63, 0x80, 0x88, 0xff}}},\n    {{{   307,      0,    768}, 0, {  -116,   1244}, {0x63, 0x80, 0x88, 0xff}}},\n    {{{   307,      0,   -767}, 0, {  2438,   3798}, {0x63, 0x80, 0x88, 0xff}}},\n    {{{   307,    102,   -818}, 0, {  2694,   3714}, {0x63, 0x80, 0x88, 0xff}}},\n    {{{   307,    102,   -818}, 0, {  2694,  -1736}, {0x79, 0x9c, 0x9f, 0xff}}},\n    {{{   307,      0,   -767}, 0, {  2608,  -1650}, {0x79, 0x9c, 0x9f, 0xff}}},\n    {{{  -306,      0,   -767}, 0, {  3630,   -628}, {0x79, 0x9c, 0x9f, 0xff}}},\n    {{{  -306,    102,   -818}, 0, {  3716,   -714}, {0x79, 0x9c, 0x9f, 0xff}}},\n    {{{  -306,    102,    819}, 0, {   990,   2010}, {0x79, 0x9c, 0x9f, 0xff}}},\n    {{{   307,      0,    768}, 0, {    54,    904}, {0x79, 0x9c, 0x9f, 0xff}}},\n    {{{   307,    102,    819}, 0, {     0,    990}, {0x79, 0x9c, 0x9f, 0xff}}},\n    {{{  -306,      0,    768}, 0, {  1076,   1924}, {0x79, 0x9c, 0x9f, 0xff}}},\n#else// reduced from 12 to 8\n    {{{   307,    102,   -818}, 0, {  2694,  -1736}, {0x79, 0x9c, 0x9f, 0xff}}},\n    {{{   307,      0,   -767}, 0, {  2884,  -1926}, {0x79, 0x9c, 0x9f, 0xff}}},\n    {{{  -306,      0,   -767}, 0, {  3906,   -904}, {0x79, 0x9c, 0x9f, 0xff}}},\n    {{{  -306,    102,   -818}, 0, {  3716,   -714}, {0x79, 0x9c, 0x9f, 0xff}}},\n    {{{  -306,    102,    819}, 0, {   990,   2010}, {0x79, 0x9c, 0x9f, 0xff}}},\n    {{{   307,      0,    768}, 0, {  -220,   1178}, {0x79, 0x9c, 0x9f, 0xff}}},\n    {{{   307,    102,    819}, 0, {     0,    990}, {0x79, 0x9c, 0x9f, 0xff}}},\n    {{{  -306,      0,    768}, 0, {   800,   2200}, {0x79, 0x9c, 0x9f, 0xff}}},\n#endif\n};\n\n// 0x0701B430 - 0x0701B4C0\nstatic const Gfx rr_seg7_dl_0701B430[] = {\n#ifdef VERSION_JP\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_0701B290, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701B370, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n#else\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_0701B290, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701B370, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n#endif\n};\n\n// 0x0701B4C0 - 0x0701B530\nconst Gfx rr_seg7_dl_0701B4C0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_0701B430),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/rr/sliding_platform/collision.inc.c",
    "content": "// 0x070295F8 - 0x0702967C\nconst Collision rr_seg7_collision_070295F8[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-409, 0, -306),\n    COL_VERTEX(410, 0, 307),\n    COL_VERTEX(-409, 0, 307),\n    COL_VERTEX(-409, 102, 307),\n    COL_VERTEX(-409, 102, -306),\n    COL_VERTEX(410, 102, 307),\n    COL_VERTEX(410, 102, -306),\n    COL_VERTEX(410, 0, -306),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(2, 3, 4),\n    COL_TRI(2, 4, 0),\n    COL_TRI(1, 3, 2),\n    COL_TRI(3, 5, 6),\n    COL_TRI(3, 6, 4),\n    COL_TRI(1, 5, 3),\n    COL_TRI(0, 4, 6),\n    COL_TRI(0, 6, 7),\n    COL_TRI(0, 7, 1),\n    COL_TRI(7, 5, 1),\n    COL_TRI(7, 6, 5),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/rr/sliding_platform/geo.inc.c",
    "content": "// 0x0E0008C0\nconst GeoLayout rr_geo_0008C0[] = {\n    GEO_CULLING_RADIUS(700),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, rr_seg7_dl_0701ADF8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/rr/sliding_platform/model.inc.c",
    "content": "// 0x0701ABE8 - 0x0701ACE8\nstatic const Vtx rr_seg7_vertex_0701ABE8[] = {\n    {{{  -409,    102,    307}, 0, {     0,    990}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{   410,    102,   -306}, 0, {  3544,    480}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{  -409,    102,   -306}, 0, {  1500,   2520}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{   410,    102,    307}, 0, {  2012,  -1054}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{  -409,      0,    307}, 0, {  1478,   -520}, {0xdf, 0xbf, 0x1f, 0xff}}},\n    {{{  -409,    102,    307}, 0, {  1732,   -264}, {0xdf, 0xbf, 0x1f, 0xff}}},\n    {{{  -409,    102,   -306}, 0, {   200,   1268}, {0xdf, 0xbf, 0x1f, 0xff}}},\n    {{{  -409,      0,   -306}, 0, {   -54,   1012}, {0xdf, 0xbf, 0x1f, 0xff}}},\n    {{{   410,      0,   -306}, 0, {   -54,   1012}, {0xdf, 0xbf, 0x1f, 0xff}}},\n    {{{   410,    102,    307}, 0, {  1732,   -264}, {0xdf, 0xbf, 0x1f, 0xff}}},\n    {{{   410,      0,    307}, 0, {  1478,   -520}, {0xdf, 0xbf, 0x1f, 0xff}}},\n    {{{   410,    102,   -306}, 0, {   200,   1268}, {0xdf, 0xbf, 0x1f, 0xff}}},\n    {{{   410,      0,    307}, 0, {  2012,   3032}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -409,    102,    307}, 0, {   224,    734}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -409,      0,    307}, 0, {     0,    990}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   410,    102,    307}, 0, {  2268,   2776}, {0xff, 0xd4, 0x00, 0xff}}},\n};\n\n// 0x0701ACE8 - 0x0701AD68\nstatic const Vtx rr_seg7_vertex_0701ACE8[] = {\n    {{{  -409,      0,   -306}, 0, {     0,    990}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   410,    102,   -306}, 0, {  2268,   2776}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   410,      0,   -306}, 0, {  2012,   3032}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -409,    102,   -306}, 0, {   224,    734}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -409,      0,   -306}, 0, {   -52,   4032}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   410,      0,    307}, 0, {   456,    456}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{  -409,      0,    307}, 0, { -1586,   2498}, {0x78, 0x78, 0x00, 0xff}}},\n    {{{   410,      0,   -306}, 0, {  1990,   1988}, {0x78, 0x78, 0x00, 0xff}}},\n};\n\n// 0x0701AD68 - 0x0701ADF8\nstatic const Gfx rr_seg7_dl_0701AD68[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_0701ABE8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701ACE8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701ADF8 - 0x0701AE68\nconst Gfx rr_seg7_dl_0701ADF8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_0701AD68),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/rr/swinging_platform/collision.inc.c",
    "content": "// 0x07029154 - 0x07029308\nconst Collision rr_seg7_collision_pendulum[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x1C),\n    COL_VERTEX(515, -921, -25),\n    COL_VERTEX(-457, -1023, -25),\n    COL_VERTEX(-508, -921, -25),\n    COL_VERTEX(-457, -1023, 589),\n    COL_VERTEX(-508, -921, 589),\n    COL_VERTEX(463, -1023, 589),\n    COL_VERTEX(515, -921, 589),\n    COL_VERTEX(463, -1023, -25),\n    COL_VERTEX(-48, -921, -76),\n    COL_VERTEX(-48, -1023, -25),\n    COL_VERTEX(-48, -101, -25),\n    COL_VERTEX(54, -921, -76),\n    COL_VERTEX(54, -1023, -25),\n    COL_VERTEX(54, -101, -25),\n    COL_VERTEX(54, -101, -76),\n    COL_VERTEX(-48, -101, -76),\n    COL_VERTEX(-48, 102, -101),\n    COL_VERTEX(-48, 102, 0),\n    COL_VERTEX(-114, 0, -101),\n    COL_VERTEX(-48, -101, -101),\n    COL_VERTEX(54, -101, -101),\n    COL_VERTEX(120, 0, -101),\n    COL_VERTEX(54, 102, -101),\n    COL_VERTEX(54, 102, 0),\n    COL_VERTEX(-114, 0, 0),\n    COL_VERTEX(-48, -101, 0),\n    COL_VERTEX(54, -101, 0),\n    COL_VERTEX(120, 0, 0),\n    COL_TRI_INIT(SURFACE_DEFAULT, 40),\n    COL_TRI(9, 12, 13),\n    COL_TRI(0, 1, 2),\n    COL_TRI(2, 3, 4),\n    COL_TRI(2, 1, 3),\n    COL_TRI(4, 3, 5),\n    COL_TRI(5, 3, 1),\n    COL_TRI(4, 5, 6),\n    COL_TRI(0, 7, 1),\n    COL_TRI(5, 1, 7),\n    COL_TRI(6, 5, 7),\n    COL_TRI(6, 7, 0),\n    COL_TRI(8, 9, 10),\n    COL_TRI(11, 9, 8),\n    COL_TRI(11, 12, 9),\n    COL_TRI(9, 13, 10),\n    COL_TRI(14, 13, 12),\n    COL_TRI(14, 12, 11),\n    COL_TRI(8, 10, 15),\n    COL_TRI(15, 11, 8),\n    COL_TRI(15, 14, 11),\n    COL_TRI(16, 17, 23),\n    COL_TRI(17, 24, 25),\n    COL_TRI(17, 25, 26),\n    COL_TRI(17, 26, 27),\n    COL_TRI(17, 27, 23),\n    COL_TRI(18, 24, 17),\n    COL_TRI(18, 17, 16),\n    COL_TRI(19, 18, 16),\n    COL_TRI(19, 25, 24),\n    COL_TRI(19, 24, 18),\n    COL_TRI(20, 26, 25),\n    COL_TRI(20, 25, 19),\n    COL_TRI(21, 26, 20),\n    COL_TRI(21, 27, 26),\n    COL_TRI(22, 23, 27),\n    COL_TRI(22, 27, 21),\n    COL_TRI(16, 23, 22),\n    COL_TRI(19, 22, 21),\n    COL_TRI(19, 21, 20),\n    COL_TRI(19, 16, 22),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 2),\n    COL_TRI(0, 2, 4),\n    COL_TRI(0, 4, 6),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/rr/swinging_platform/geo.inc.c",
    "content": "// 0x0E000860\nconst GeoLayout rr_geo_000860[] = {\n    GEO_CULLING_RADIUS(1300),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, rr_seg7_dl_07019AE0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/rr/swinging_platform/model.inc.c",
    "content": "// 0x070193F0 - 0x070194F0\nstatic const Vtx rr_seg7_vertex_070193F0[] = {\n    {{{   -48,    102,   -101}, 0, { -3096,    172}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{    54,    102,      0}, 0, { -3096,      0}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{    54,    102,   -101}, 0, { -3096,      0}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{   -48,    102,      0}, 0, { -3096,    172}, {0xec, 0xef, 0x8e, 0xff}}},\n    {{{    54,   -101,    -76}, 0, {  1118,    862}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{    54,   -101,    -25}, 0, {  1374,    606}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{    54,  -1023,    -25}, 0, {  1374,    606}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{    54,   -921,    -76}, 0, {  1118,    862}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   -48,   -921,    -76}, 0, {   606,    352}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   -48,   -101,    -25}, 0, {   862,     96}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   -48,   -101,    -76}, 0, {   606,    352}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   -48,  -1023,    -25}, 0, {   862,     96}, {0x96, 0x96, 0x96, 0xff}}},\n    {{{   -48,  -1023,    -25}, 0, {   862,     96}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{    54,   -101,    -25}, 0, {  1374,    606}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   -48,   -101,    -25}, 0, {   862,     96}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{    54,  -1023,    -25}, 0, {  1374,    606}, {0xc8, 0xc8, 0xc8, 0xff}}},\n};\n\n// 0x070194F0 - 0x070195F0\nstatic const Vtx rr_seg7_vertex_070194F0[] = {\n    {{{   -48,   -101,    -76}, 0, {   606,    352}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{    54,   -101,    -76}, 0, {  1118,    862}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{    54,   -921,    -76}, 0, {  1118,    862}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{   -48,   -921,    -76}, 0, {   606,    352}, {0xc8, 0xc8, 0xc8, 0xff}}},\n    {{{    54,    102,   -101}, 0, { -3096,      0}, {0xff, 0xe5, 0x65, 0xff}}},\n    {{{    54,    102,      0}, 0, { -3096,      0}, {0xff, 0xe5, 0x65, 0xff}}},\n    {{{   120,      0,      0}, 0, { -2074,     40}, {0xff, 0xe5, 0x65, 0xff}}},\n    {{{   120,      0,   -101}, 0, { -2074,     40}, {0xff, 0xe5, 0x65, 0xff}}},\n    {{{  -114,      0,   -101}, 0, { -2074,    510}, {0xff, 0xe5, 0x65, 0xff}}},\n    {{{  -114,      0,      0}, 0, { -2074,    510}, {0xff, 0xe5, 0x65, 0xff}}},\n    {{{   -48,    102,      0}, 0, { -3096,    172}, {0xff, 0xe5, 0x65, 0xff}}},\n    {{{   -48,    102,   -101}, 0, { -3096,    172}, {0xff, 0xe5, 0x65, 0xff}}},\n    {{{   120,      0,   -101}, 0, { -2074,     40}, {0xbf, 0xaa, 0x3f, 0xff}}},\n    {{{   120,      0,      0}, 0, { -2074,     40}, {0xbf, 0xaa, 0x3f, 0xff}}},\n    {{{    54,   -101,      0}, 0, { -1052,    376}, {0xbf, 0xaa, 0x3f, 0xff}}},\n    {{{    54,   -101,   -101}, 0, { -1052,    376}, {0xbf, 0xaa, 0x3f, 0xff}}},\n};\n\n// 0x070195F0 - 0x070196F0\nstatic const Vtx rr_seg7_vertex_070195F0[] = {\n    {{{   -48,   -101,   -101}, 0, { -1052,    582}, {0xbf, 0xaa, 0x3f, 0xff}}},\n    {{{   -48,   -101,      0}, 0, { -1052,    582}, {0xbf, 0xaa, 0x3f, 0xff}}},\n    {{{  -114,      0,      0}, 0, { -2074,    510}, {0xbf, 0xaa, 0x3f, 0xff}}},\n    {{{  -114,      0,   -101}, 0, { -2074,    510}, {0xbf, 0xaa, 0x3f, 0xff}}},\n    {{{   -48,    102,      0}, 0, { -3096,    172}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{    54,   -101,      0}, 0, { -1052,    376}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   120,      0,      0}, 0, { -2074,     40}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   -48,   -101,      0}, 0, { -1052,    582}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -114,      0,      0}, 0, { -2074,    510}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{    54,    102,      0}, 0, { -3096,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   -48,   -101,   -101}, 0, { -1052,    582}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   120,      0,   -101}, 0, { -2074,     40}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{    54,   -101,   -101}, 0, { -1052,    376}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{    54,    102,   -101}, 0, { -3096,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   -48,    102,   -101}, 0, { -3096,    172}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -114,      0,   -101}, 0, { -2074,    510}, {0xff, 0xd4, 0x00, 0xff}}},\n};\n\n// 0x070196F0 - 0x07019730\nstatic const Vtx rr_seg7_vertex_070196F0[] = {\n    {{{    54,   -101,   -101}, 0, { -1052,    376}, {0x6e, 0x6e, 0x00, 0xff}}},\n    {{{    54,   -101,      0}, 0, { -1052,    376}, {0x6e, 0x6e, 0x00, 0xff}}},\n    {{{   -48,   -101,      0}, 0, { -1052,    582}, {0x6e, 0x6e, 0x00, 0xff}}},\n    {{{   -48,   -101,   -101}, 0, { -1052,    582}, {0x6e, 0x6e, 0x00, 0xff}}},\n};\n\n// 0x07019730 - 0x070197B0\nstatic const Vtx rr_seg7_vertex_07019730[] = {\n    {{{   515,   -921,    -25}, 0, {     0,  -5142}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{  -508,   -921,    589}, 0, { 10188,    990}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{   515,   -921,    589}, 0, {     0,    990}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{  -508,   -921,    -25}, 0, { 10188,  -5142}, {0xad, 0xbb, 0xd1, 0xff}}},\n    {{{   412,  -1023,    589}, 0, {   480,    990}, {0x3d, 0x3c, 0x72, 0xff}}},\n    {{{  -406,  -1023,    -25}, 0, {  9678,  -5142}, {0x3d, 0x3c, 0x72, 0xff}}},\n    {{{   412,  -1023,    -25}, 0, {   480,  -5142}, {0x3d, 0x3c, 0x72, 0xff}}},\n    {{{  -406,  -1023,    589}, 0, {  9678,    990}, {0x3d, 0x3c, 0x72, 0xff}}},\n};\n\n// 0x070197B0 - 0x070198B0\nstatic const Vtx rr_seg7_vertex_070197B0[] = {\n    {{{   515,   -921,    -25}, 0, { 12232,    750}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{   412,  -1023,    -25}, 0, { 12232,    990}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  -406,  -1023,    -25}, 0, { 12232,    990}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  -508,   -921,    -25}, 0, { 12232,    750}, {0x8c, 0x98, 0xd8, 0xff}}},\n    {{{  -508,   -921,    589}, 0, {     0,    750}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{  -406,  -1023,    589}, 0, {     0,    990}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{   412,  -1023,    589}, 0, {     0,    990}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{   515,   -921,    589}, 0, {     0,    750}, {0x79, 0x8c, 0xeb, 0xff}}},\n    {{{  -508,   -921,    -25}, 0, {  2140,    734}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  -406,  -1023,    589}, 0, {  2012,    990}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  -508,   -921,    589}, 0, {  2140,    734}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{  -406,  -1023,    -25}, 0, {  2012,    990}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{   515,   -921,    589}, 0, {  2012,    734}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{   412,  -1023,    -25}, 0, {  2012,    990}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{   515,   -921,    -25}, 0, {  2012,    734}, {0x52, 0x61, 0xac, 0xff}}},\n    {{{   412,  -1023,    589}, 0, {  2012,    990}, {0x52, 0x61, 0xac, 0xff}}},\n};\n\n// 0x070198B0 - 0x070198F0\nstatic const Vtx rr_seg7_vertex_070198B0[] = {\n    {{{    54,   -921,    -76}, 0, {     0,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   -48,  -1023,    -25}, 0, {     0,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{   -48,   -921,    -76}, 0, {     0,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n    {{{    54,  -1023,    -25}, 0, {     0,      0}, {0x8c, 0x8c, 0x8c, 0xff}}},\n};\n\n// 0x070198F0 - 0x07019A10\nstatic const Gfx rr_seg7_dl_070198F0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_070193F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_070194F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_070195F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 4,  8,  7, 0x0,  4,  6,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP2Triangles(10, 14, 13, 0x0, 10, 15, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_070196F0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07019A10 - 0x07019A58\nstatic const Gfx rr_seg7_dl_07019A10[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_07019730, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07019A58 - 0x07019AC0\nstatic const Gfx rr_seg7_dl_07019A58[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_070197B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07019AC0 - 0x07019AE0\nstatic const Gfx rr_seg7_dl_07019AC0[] = {\n    gsSPVertex(rr_seg7_vertex_070198B0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07019AE0 - 0x07019B68\nconst Gfx rr_seg7_dl_07019AE0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_070198F0),\n    gsSPDisplayList(rr_seg7_dl_07019A10),\n    gsSPDisplayList(rr_seg7_dl_07019A58),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(rr_seg7_dl_07019AC0),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/rr/texture.inc.c",
    "content": "// 0x07000000 - 0x07000800\nALIGNED8 static const Texture texture_quarter_flying_carpet[] = {\n#include \"levels/rr/quarter_flying_carpet.rgba16.inc.c\"\n};\n\n// 0x07000800 - 0x07001800\nALIGNED8 static const Texture rr_seg7_texture_07000800[] = {\n#include \"levels/rr/1.rgba16.inc.c\"\n};\n\n// 0x07001800 - 0x07002000\nALIGNED8 static const Texture rr_seg7_texture_07001800[] = {\n#include \"levels/rr/2.rgba16.inc.c\"\n};\n"
  },
  {
    "path": "levels/rr/tricky_triangles_1/collision.inc.c",
    "content": "// 0x07029924 - 0x07029C1C\nconst Collision rr_seg7_collision_07029924[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x40),\n    COL_VERTEX(973, -588, -613),\n    COL_VERTEX(-1023, -588, -613),\n    COL_VERTEX(-1023, -690, -613),\n    COL_VERTEX(973, -690, -613),\n    COL_VERTEX(-767, -588, -634),\n    COL_VERTEX(-665, 461, -634),\n    COL_VERTEX(-767, 461, -634),\n    COL_VERTEX(-665, -588, -634),\n    COL_VERTEX(-357, -588, -634),\n    COL_VERTEX(-255, -588, -634),\n    COL_VERTEX(-255, 256, -634),\n    COL_VERTEX(-357, 256, -634),\n    COL_VERTEX(51, -588, -634),\n    COL_VERTEX(154, 51, -634),\n    COL_VERTEX(51, 51, -634),\n    COL_VERTEX(154, -588, -634),\n    COL_VERTEX(461, -588, -634),\n    COL_VERTEX(973, -153, -634),\n    COL_VERTEX(-511, 614, 205),\n    COL_VERTEX(-921, 614, 205),\n    COL_VERTEX(-716, 410, 0),\n    COL_VERTEX(-511, 410, 205),\n    COL_VERTEX(-306, 205, 0),\n    COL_VERTEX(-101, 410, 205),\n    COL_VERTEX(-101, 205, 205),\n    COL_VERTEX(307, 205, 205),\n    COL_VERTEX(102, 0, 0),\n    COL_VERTEX(717, 0, 205),\n    COL_VERTEX(922, -204, 0),\n    COL_VERTEX(1126, 0, 205),\n    COL_VERTEX(717, -204, 205),\n    COL_VERTEX(307, -204, 205),\n    COL_VERTEX(512, -409, 0),\n    COL_VERTEX(-921, -409, 205),\n    COL_VERTEX(-716, -613, 0),\n    COL_VERTEX(-511, -409, 205),\n    COL_VERTEX(-101, -409, 205),\n    COL_VERTEX(307, -409, 205),\n    COL_VERTEX(102, -613, 0),\n    COL_VERTEX(-511, -204, 205),\n    COL_VERTEX(-306, -409, 0),\n    COL_VERTEX(-101, -204, 205),\n    COL_VERTEX(563, -588, -634),\n    COL_VERTEX(563, -357, -634),\n    COL_VERTEX(461, -357, -634),\n    COL_VERTEX(870, -153, -634),\n    COL_VERTEX(870, -588, -634),\n    COL_VERTEX(973, -588, -634),\n    COL_VERTEX(-511, 614, -204),\n    COL_VERTEX(-921, 614, -204),\n    COL_VERTEX(-511, 410, -204),\n    COL_VERTEX(-101, 410, -204),\n    COL_VERTEX(307, 205, -204),\n    COL_VERTEX(-101, 205, -204),\n    COL_VERTEX(717, 0, -204),\n    COL_VERTEX(1126, 0, -204),\n    COL_VERTEX(717, -204, -204),\n    COL_VERTEX(307, -204, -204),\n    COL_VERTEX(-921, -409, -204),\n    COL_VERTEX(-511, -409, -204),\n    COL_VERTEX(307, -409, -204),\n    COL_VERTEX(-101, -409, -204),\n    COL_VERTEX(-511, -204, -204),\n    COL_VERTEX(-101, -204, -204),\n    COL_TRI_INIT(SURFACE_DEFAULT, 44),\n    COL_TRI(12, 13, 14),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(4, 5, 6),\n    COL_TRI(4, 7, 5),\n    COL_TRI(8, 9, 10),\n    COL_TRI(8, 10, 11),\n    COL_TRI(19, 20, 18),\n    COL_TRI(12, 15, 13),\n    COL_TRI(16, 42, 43),\n    COL_TRI(16, 43, 44),\n    COL_TRI(17, 45, 46),\n    COL_TRI(17, 46, 47),\n    COL_TRI(18, 20, 48),\n    COL_TRI(20, 19, 49),\n    COL_TRI(20, 49, 48),\n    COL_TRI(21, 22, 23),\n    COL_TRI(22, 21, 50),\n    COL_TRI(22, 50, 51),\n    COL_TRI(23, 22, 51),\n    COL_TRI(24, 26, 25),\n    COL_TRI(25, 26, 52),\n    COL_TRI(26, 53, 52),\n    COL_TRI(26, 24, 53),\n    COL_TRI(27, 28, 29),\n    COL_TRI(28, 27, 54),\n    COL_TRI(29, 28, 55),\n    COL_TRI(28, 54, 55),\n    COL_TRI(30, 32, 56),\n    COL_TRI(31, 32, 30),\n    COL_TRI(32, 31, 57),\n    COL_TRI(32, 57, 56),\n    COL_TRI(33, 34, 35),\n    COL_TRI(34, 33, 58),\n    COL_TRI(34, 58, 59),\n    COL_TRI(35, 34, 59),\n    COL_TRI(36, 38, 37),\n    COL_TRI(37, 38, 60),\n    COL_TRI(38, 36, 61),\n    COL_TRI(38, 61, 60),\n    COL_TRI(39, 40, 41),\n    COL_TRI(40, 39, 62),\n    COL_TRI(40, 62, 63),\n    COL_TRI(41, 40, 63),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 16),\n    COL_TRI(39, 41, 63),\n    COL_TRI(21, 23, 51),\n    COL_TRI(21, 51, 50),\n    COL_TRI(19, 18, 48),\n    COL_TRI(19, 48, 49),\n    COL_TRI(33, 35, 59),\n    COL_TRI(33, 59, 58),\n    COL_TRI(27, 55, 54),\n    COL_TRI(39, 63, 62),\n    COL_TRI(36, 60, 61),\n    COL_TRI(36, 37, 60),\n    COL_TRI(31, 30, 56),\n    COL_TRI(31, 56, 57),\n    COL_TRI(27, 29, 55),\n    COL_TRI(24, 25, 52),\n    COL_TRI(24, 52, 53),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/rr/tricky_triangles_1/geo.inc.c",
    "content": "// 0x0E000958\nconst GeoLayout rr_geo_000958[] = {\n    GEO_CULLING_RADIUS(1500),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, rr_seg7_dl_0701E670),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/rr/tricky_triangles_1/model.inc.c",
    "content": "// 0x0701BD78 - 0x0701BE68\nstatic const Vtx rr_seg7_vertex_0701BD78[] = {\n    {{{    77,    -50,   -634}, 0, {  -860,    542}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   102,      0,   -204}, 0, {  -924,    480}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   102,      0,   -634}, 0, {  -924,    480}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -741,    358,   -634}, 0, { -9036,   2584}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -716,    410,   -204}, 0, { -9100,   2520}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -716,    410,   -634}, 0, { -9100,   2520}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -741,    358,   -204}, 0, { -9036,   2584}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   896,   -255,   -634}, 0, {  6292,  -1502}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   896,   -255,   -204}, 0, {  6292,  -1502}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   922,   -204,   -204}, 0, {  6228,  -1564}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   922,   -204,   -634}, 0, {  6228,  -1564}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   486,   -460,   -634}, 0, {  4248,   -480}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   512,   -409,   -204}, 0, {  4184,   -542}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   512,   -409,   -634}, 0, {  4184,   -542}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   486,   -460,   -204}, 0, {  4248,   -480}, {0x7f, 0xac, 0x52, 0xff}}},\n};\n\n// 0x0701BE68 - 0x0701BF58\nstatic const Vtx rr_seg7_vertex_0701BE68[] = {\n    {{{  -332,    154,   -634}, 0, { -4948,   1562}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -306,    205,   -204}, 0, { -5012,   1498}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -306,    205,   -634}, 0, { -5012,   1498}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{    77,    -50,   -634}, 0, {  -860,    542}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{    77,    -50,   -204}, 0, {  -860,    542}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   102,      0,   -204}, 0, {  -924,    480}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -332,   -460,   -634}, 0, { -1882,   1562}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -332,   -460,   -204}, 0, { -1882,   1562}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -306,   -409,   -204}, 0, { -1946,   1498}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -306,   -409,   -634}, 0, { -1946,   1498}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -741,   -665,   -634}, 0, { -3926,   2584}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -741,   -665,   -204}, 0, { -3926,   2584}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -716,   -613,   -204}, 0, { -3990,   2520}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -716,   -613,   -634}, 0, { -3990,   2520}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -332,    154,   -204}, 0, { -4948,   1562}, {0x7f, 0xac, 0x52, 0xff}}},\n};\n\n// 0x0701BF58 - 0x0701C048\nstatic const Vtx rr_seg7_vertex_0701BF58[] = {\n    {{{    77,   -665,   -634}, 0, {  2204,    542}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   102,   -613,   -204}, 0, {  2140,    480}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   102,   -613,   -634}, 0, {  2140,    480}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{    77,   -665,   -204}, 0, {  2204,    542}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{    77,    -50,   -204}, 0, {  -860,    542}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   102,      0,    154}, 0, {  -924,    480}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   102,      0,   -204}, 0, {  -924,    480}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -741,    358,   -204}, 0, { -9036,   2584}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -716,    410,    154}, 0, { -9100,   2520}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -716,    410,   -204}, 0, { -9100,   2520}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -741,    358,    154}, 0, { -9036,   2584}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   896,   -255,   -204}, 0, {  6292,  -1502}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   922,   -204,    154}, 0, {  6228,  -1564}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   922,   -204,   -204}, 0, {  6228,  -1564}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   896,   -255,    154}, 0, {  6292,  -1502}, {0x44, 0x55, 0x22, 0xff}}},\n};\n\n// 0x0701C048 - 0x0701C128\nstatic const Vtx rr_seg7_vertex_0701C048[] = {\n    {{{   486,   -460,   -204}, 0, {  4248,   -480}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   512,   -409,    154}, 0, {  4184,   -542}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   512,   -409,   -204}, 0, {  4184,   -542}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   486,   -460,    154}, 0, {  4248,   -480}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -332,    154,   -204}, 0, { -4948,   1562}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -306,    205,    154}, 0, { -5012,   1498}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -306,    205,   -204}, 0, { -5012,   1498}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{    77,    -50,   -204}, 0, {  -860,    542}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{    77,    -50,    154}, 0, {  -860,    542}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   102,      0,    154}, 0, {  -924,    480}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -332,   -460,   -204}, 0, { -1882,   1562}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -332,   -460,    154}, 0, { -1882,   1562}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -306,   -409,    154}, 0, { -1946,   1498}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -306,   -409,   -204}, 0, { -1946,   1498}, {0x44, 0x55, 0x22, 0xff}}},\n};\n\n// 0x0701C128 - 0x0701C208\nstatic const Vtx rr_seg7_vertex_0701C128[] = {\n    {{{  -741,   -665,   -204}, 0, { -3926,   2584}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -716,   -613,    154}, 0, { -3990,   2520}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -716,   -613,   -204}, 0, { -3990,   2520}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -741,   -665,    154}, 0, { -3926,   2584}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -332,    154,   -204}, 0, { -4948,   1562}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -332,    154,    154}, 0, { -4948,   1562}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -306,    205,    154}, 0, { -5012,   1498}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{    77,   -665,   -204}, 0, {  2204,    542}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   102,   -613,    154}, 0, {  2140,    480}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   102,   -613,   -204}, 0, {  2140,    480}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{    77,   -665,    154}, 0, {  2204,    542}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   512,   -409,    154}, 0, {  4184,   -542}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   486,   -460,    154}, 0, {  4248,   -480}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   538,   -460,    154}, 0, {  4630,   -606}, {0x54, 0x70, 0x40, 0xff}}},\n};\n\n// 0x0701C208 - 0x0701C2F8\nstatic const Vtx rr_seg7_vertex_0701C208[] = {\n    {{{  -716,    410,    154}, 0, { -9100,   2520}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -741,    358,    154}, 0, { -9036,   2584}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -690,    358,    154}, 0, { -8654,   2458}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -306,    205,    154}, 0, { -5012,   1498}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -332,    154,    154}, 0, { -4948,   1562}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -281,    154,    154}, 0, { -4566,   1436}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   922,   -204,    154}, 0, {  6228,  -1564}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   896,   -255,    154}, 0, {  6292,  -1502}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   947,   -255,    154}, 0, {  6674,  -1628}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   102,      0,    154}, 0, {  -924,    480}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{    77,    -50,    154}, 0, {  -860,    542}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   128,    -50,    154}, 0, {  -478,    416}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -588,   -613}, 0, {  8528,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{ -1023,   -690,   -613}, 0, { -5906,   3288}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -690,   -613}, 0, {  9038,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n};\n\n// 0x0701C2F8 - 0x0701C3E8\nstatic const Vtx rr_seg7_vertex_0701C2F8[] = {\n    {{{  -306,   -409,    154}, 0, { -1946,   1498}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -332,   -460,    154}, 0, { -1882,   1562}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -281,   -460,    154}, 0, { -1500,   1436}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -716,   -613,    154}, 0, { -3990,   2520}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -741,   -665,    154}, 0, { -3926,   2584}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -690,   -665,    154}, 0, { -3544,   2458}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   102,   -613,    154}, 0, {  2140,    480}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{    77,   -665,    154}, 0, {  2204,    542}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   128,   -665,    154}, 0, {  2586,    416}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -588,   -613}, 0, {  8528,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{ -1023,   -588,   -613}, 0, { -6418,   3288}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{ -1023,   -690,   -613}, 0, { -5906,   3288}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   461,   -588,   -634}, 0, {  4694,   -416}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   563,   -588,   -634}, 0, {  5462,   -670}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   563,   -357,   -634}, 0, {  4566,   -670}, {0x54, 0x70, 0x40, 0xff}}},\n};\n\n// 0x0701C3E8 - 0x0701C4D8\nstatic const Vtx rr_seg7_vertex_0701C3E8[] = {\n    {{{  -767,   -588,   -634}, 0, { -4502,   2648}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -665,   -588,   -634}, 0, { -3734,   2394}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -665,    461,   -634}, 0, { -8716,   2394}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -767,    461,   -634}, 0, { -9484,   2648}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -357,   -588,   -634}, 0, { -1436,   1626}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -255,    256,   -634}, 0, { -4628,   1372}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -357,    256,   -634}, 0, { -5396,   1626}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -255,   -588,   -634}, 0, {  -668,   1372}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{    51,   -588,   -634}, 0, {  1628,    606}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   154,   -588,   -634}, 0, {  2396,    352}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   154,     51,   -634}, 0, {  -540,    352}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{    51,     51,   -634}, 0, { -1308,    606}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   461,   -357,   -665}, 0, {  3800,   -416}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   563,   -357,   -665}, 0, {  4566,   -670}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   563,   -588,   -665}, 0, {  5462,   -670}, {0x54, 0x70, 0x40, 0xff}}},\n};\n\n// 0x0701C4D8 - 0x0701C5D8\nstatic const Vtx rr_seg7_vertex_0701C4D8[] = {\n    {{{   461,   -588,   -634}, 0, {  4694,   -416}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   563,   -357,   -634}, 0, {  4566,   -670}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   461,   -357,   -634}, 0, {  3800,   -416}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   870,   -153,   -665}, 0, {  5844,  -1438}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -588,   -665}, 0, {  8528,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   870,   -588,   -665}, 0, {  7760,  -1438}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -153,   -665}, 0, {  6610,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -690,   -665}, 0, {  9038,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{ -1125,   -690,   -665}, 0, { -6672,   3542}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{ -1125,   -588,   -665}, 0, { -7184,   3542}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   461,   -357,   -665}, 0, {  3800,   -416}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   563,   -588,   -665}, 0, {  5462,   -670}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   461,   -588,   -665}, 0, {  4694,   -416}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -153,   -634}, 0, {  6610,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   870,   -588,   -634}, 0, {  7760,  -1438}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -588,   -634}, 0, {  8528,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n};\n\n// 0x0701C5D8 - 0x0701C6C8\nstatic const Vtx rr_seg7_vertex_0701C5D8[] = {\n    {{{    51,     51,   -665}, 0, { -1308,    606}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   154,   -588,   -665}, 0, {  2396,    352}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{    51,   -588,   -665}, 0, {  1628,    606}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   154,     51,   -665}, 0, {  -540,    352}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -357,    256,   -665}, 0, { -5396,   1626}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -255,    256,   -665}, 0, { -4628,   1372}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -255,   -588,   -665}, 0, {  -668,   1372}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -357,   -588,   -665}, 0, { -1436,   1626}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -767,    461,   -665}, 0, { -9484,   2648}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -665,   -588,   -665}, 0, { -3734,   2394}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -767,   -588,   -665}, 0, { -4502,   2648}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -665,    461,   -665}, 0, { -8716,   2394}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -153,   -634}, 0, {  6610,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   870,   -153,   -634}, 0, {  5844,  -1438}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   870,   -588,   -634}, 0, {  7760,  -1438}, {0x54, 0x70, 0x40, 0xff}}},\n};\n\n// 0x0701C6C8 - 0x0701C7B8\nstatic const Vtx rr_seg7_vertex_0701C6C8[] = {\n    {{{   538,   -460,   -634}, 0, {  4630,   -606}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   486,   -460,   -204}, 0, {  4248,   -480}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   486,   -460,   -634}, 0, {  4248,   -480}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -690,    358,   -634}, 0, { -8654,   2458}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -690,    358,   -204}, 0, { -8654,   2458}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -741,    358,   -204}, 0, { -9036,   2584}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -741,    358,   -634}, 0, { -9036,   2584}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -741,    358,    154}, 0, { -9036,   2584}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -690,    358,    154}, 0, { -8654,   2458}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   947,   -255,   -634}, 0, {  6674,  -1628}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   896,   -255,   -204}, 0, {  6292,  -1502}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   896,   -255,   -634}, 0, {  6292,  -1502}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   947,   -255,   -204}, 0, {  6674,  -1628}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   947,   -255,    154}, 0, {  6674,  -1628}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   896,   -255,    154}, 0, {  6292,  -1502}, {0x1d, 0x3e, 0x0f, 0xff}}},\n};\n\n// 0x0701C7B8 - 0x0701C8B8\nstatic const Vtx rr_seg7_vertex_0701C7B8[] = {\n    {{{  -281,   -460,   -634}, 0, { -1500,   1436}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -332,   -460,   -204}, 0, { -1882,   1562}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -332,   -460,   -634}, 0, { -1882,   1562}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   538,   -460,   -204}, 0, {  4630,   -606}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   486,   -460,    154}, 0, {  4248,   -480}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   486,   -460,   -204}, 0, {  4248,   -480}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   538,   -460,    154}, 0, {  4630,   -606}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   538,   -460,   -634}, 0, {  4630,   -606}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   128,    -50,   -634}, 0, {  -478,    416}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   128,    -50,   -204}, 0, {  -478,    416}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{    77,    -50,   -204}, 0, {  -860,    542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{    77,    -50,   -634}, 0, {  -860,    542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{    77,    -50,    154}, 0, {  -860,    542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   128,    -50,    154}, 0, {  -478,    416}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -281,   -460,   -204}, 0, { -1500,   1436}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -332,   -460,    154}, 0, { -1882,   1562}, {0x1d, 0x3e, 0x0f, 0xff}}},\n};\n\n// 0x0701C8B8 - 0x0701C9A8\nstatic const Vtx rr_seg7_vertex_0701C8B8[] = {\n    {{{  -281,   -460,   -204}, 0, { -1500,   1436}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -281,   -460,    154}, 0, { -1500,   1436}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -332,   -460,    154}, 0, { -1882,   1562}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -690,   -665,   -634}, 0, { -3544,   2458}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -690,   -665,   -204}, 0, { -3544,   2458}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -741,   -665,   -204}, 0, { -3926,   2584}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -741,   -665,   -634}, 0, { -3926,   2584}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -690,   -665,    154}, 0, { -3544,   2458}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -741,   -665,    154}, 0, { -3926,   2584}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -281,    154,   -634}, 0, { -4566,   1436}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -281,    154,   -204}, 0, { -4566,   1436}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -332,    154,   -204}, 0, { -4948,   1562}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -332,    154,   -634}, 0, { -4948,   1562}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -281,    154,    154}, 0, { -4566,   1436}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -332,    154,    154}, 0, { -4948,   1562}, {0x1d, 0x3e, 0x0f, 0xff}}},\n};\n\n// 0x0701C9A8 - 0x0701CAA8\nstatic const Vtx rr_seg7_vertex_0701C9A8[] = {\n    {{{   128,   -665,   -634}, 0, {  2586,    416}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{    77,   -665,   -204}, 0, {  2204,    542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{    77,   -665,   -634}, 0, {  2204,    542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   128,   -665,   -204}, 0, {  2586,    416}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{    77,   -665,    154}, 0, {  2204,    542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   128,   -665,    154}, 0, {  2586,    416}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   973,   -690,   -613}, 0, {  9038,  -1692}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{ -1125,   -690,   -665}, 0, { -6672,   3542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   973,   -690,   -665}, 0, {  9038,  -1692}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{ -1125,   -690,   -613}, 0, { -6672,   3542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   102,      0,   -634}, 0, {  -924,    480}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   102,      0,   -204}, 0, {  -924,    480}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   128,    -50,   -204}, 0, {  -478,    416}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -716,    410,   -634}, 0, { -9100,   2520}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -690,    358,   -204}, 0, { -8654,   2458}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -690,    358,   -634}, 0, { -8654,   2458}, {0x67, 0x89, 0x51, 0xff}}},\n};\n\n// 0x0701CAA8 - 0x0701CB88\nstatic const Vtx rr_seg7_vertex_0701CAA8[] = {\n    {{{  -716,    410,   -634}, 0, { -9100,   2520}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -716,    410,   -204}, 0, { -9100,   2520}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -690,    358,   -204}, 0, { -8654,   2458}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   922,   -204,   -634}, 0, {  6228,  -1564}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   922,   -204,   -204}, 0, {  6228,  -1564}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   947,   -255,   -204}, 0, {  6674,  -1628}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   947,   -255,   -634}, 0, {  6674,  -1628}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   512,   -409,   -634}, 0, {  4184,   -542}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   538,   -460,   -204}, 0, {  4630,   -606}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   538,   -460,   -634}, 0, {  4630,   -606}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   512,   -409,   -204}, 0, {  4184,   -542}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -306,    205,   -634}, 0, { -5012,   1498}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -306,    205,   -204}, 0, { -5012,   1498}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -281,    154,   -204}, 0, { -4566,   1436}, {0x67, 0x89, 0x51, 0xff}}},\n};\n\n// 0x0701CB88 - 0x0701CC68\nstatic const Vtx rr_seg7_vertex_0701CB88[] = {\n    {{{   102,      0,   -634}, 0, {  -924,    480}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   128,    -50,   -204}, 0, {  -478,    416}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   128,    -50,   -634}, 0, {  -478,    416}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -306,   -409,   -634}, 0, { -1946,   1498}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -306,   -409,   -204}, 0, { -1946,   1498}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -281,   -460,   -204}, 0, { -1500,   1436}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -281,   -460,   -634}, 0, { -1500,   1436}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -716,   -613,   -634}, 0, { -3990,   2520}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -716,   -613,   -204}, 0, { -3990,   2520}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -690,   -665,   -204}, 0, { -3544,   2458}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -690,   -665,   -634}, 0, { -3544,   2458}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -306,    205,   -634}, 0, { -5012,   1498}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -281,    154,   -204}, 0, { -4566,   1436}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -281,    154,   -634}, 0, { -4566,   1436}, {0x67, 0x89, 0x51, 0xff}}},\n};\n\n// 0x0701CC68 - 0x0701CD58\nstatic const Vtx rr_seg7_vertex_0701CC68[] = {\n    {{{   102,   -613,   -634}, 0, {  2140,    480}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   128,   -665,   -204}, 0, {  2586,    416}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   128,   -665,   -634}, 0, {  2586,    416}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   102,   -613,   -204}, 0, {  2140,    480}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -357,    256,   -634}, 0, { -5396,   1626}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -255,    256,   -634}, 0, { -4628,   1372}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -255,    256,   -665}, 0, { -4628,   1372}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   973,   -153,   -665}, 0, {  6610,  -1692}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   870,   -153,   -634}, 0, {  5844,  -1438}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   973,   -153,   -634}, 0, {  6610,  -1692}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   870,   -153,   -665}, 0, {  5844,  -1438}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   461,   -357,   -634}, 0, {  3800,   -416}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   563,   -357,   -634}, 0, {  4566,   -670}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   563,   -357,   -665}, 0, {  4566,   -670}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   461,   -357,   -665}, 0, {  3800,   -416}, {0x97, 0xcd, 0x97, 0xff}}},\n};\n\n// 0x0701CD58 - 0x0701CE48\nstatic const Vtx rr_seg7_vertex_0701CD58[] = {\n    {{{    51,     51,   -634}, 0, { -1308,    606}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   154,     51,   -634}, 0, {  -540,    352}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   154,     51,   -665}, 0, {  -540,    352}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{    51,     51,   -665}, 0, { -1308,    606}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   973,   -588,   -665}, 0, {  8528,  -1692}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{ -1125,   -588,   -613}, 0, { -7184,   3542}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   973,   -588,   -613}, 0, {  8528,  -1692}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -357,    256,   -634}, 0, { -5396,   1626}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -255,    256,   -665}, 0, { -4628,   1372}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -357,    256,   -665}, 0, { -5396,   1626}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -767,    461,   -634}, 0, { -9484,   2648}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -665,    461,   -634}, 0, { -8716,   2394}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -665,    461,   -665}, 0, { -8716,   2394}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -767,    461,   -665}, 0, { -9484,   2648}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{ -1125,   -588,   -665}, 0, { -7184,   3542}, {0x97, 0xcd, 0x97, 0xff}}},\n};\n\n// 0x0701CE48 - 0x0701CF38\nstatic const Vtx rr_seg7_vertex_0701CE48[] = {\n    {{{   102,      0,   -204}, 0, {  -924,    480}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   128,    -50,    154}, 0, {  -478,    416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   128,    -50,   -204}, 0, {  -478,    416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -716,    410,   -204}, 0, { -9100,   2520}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -716,    410,    154}, 0, { -9100,   2520}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -690,    358,    154}, 0, { -8654,   2458}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -690,    358,   -204}, 0, { -8654,   2458}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   922,   -204,   -204}, 0, {  6228,  -1564}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   922,   -204,    154}, 0, {  6228,  -1564}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   947,   -255,    154}, 0, {  6674,  -1628}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   947,   -255,   -204}, 0, {  6674,  -1628}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   512,   -409,   -204}, 0, {  4184,   -542}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   538,   -460,    154}, 0, {  4630,   -606}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   538,   -460,   -204}, 0, {  4630,   -606}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   512,   -409,    154}, 0, {  4184,   -542}, {0x35, 0x4c, 0x2b, 0xff}}},\n};\n\n// 0x0701CF38 - 0x0701D028\nstatic const Vtx rr_seg7_vertex_0701CF38[] = {\n    {{{  -306,    205,   -204}, 0, { -5012,   1498}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -281,    154,    154}, 0, { -4566,   1436}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -281,    154,   -204}, 0, { -4566,   1436}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   102,      0,   -204}, 0, {  -924,    480}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   102,      0,    154}, 0, {  -924,    480}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   128,    -50,    154}, 0, {  -478,    416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -306,   -409,   -204}, 0, { -1946,   1498}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -306,   -409,    154}, 0, { -1946,   1498}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -281,   -460,    154}, 0, { -1500,   1436}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -281,   -460,   -204}, 0, { -1500,   1436}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -716,   -613,   -204}, 0, { -3990,   2520}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -690,   -665,    154}, 0, { -3544,   2458}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -690,   -665,   -204}, 0, { -3544,   2458}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -716,   -613,    154}, 0, { -3990,   2520}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -306,    205,    154}, 0, { -5012,   1498}, {0x35, 0x4c, 0x2b, 0xff}}},\n};\n\n// 0x0701D028 - 0x0701D118\nstatic const Vtx rr_seg7_vertex_0701D028[] = {\n    {{{  -255,   -588,   -665}, 0, {  -668,   1372}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -255,    256,   -665}, 0, { -4628,   1372}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -255,    256,   -634}, 0, { -4628,   1372}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   102,   -613,   -204}, 0, {  2140,    480}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   102,   -613,    154}, 0, {  2140,    480}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   128,   -665,    154}, 0, {  2586,    416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   128,   -665,   -204}, 0, {  2586,    416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   563,   -588,   -665}, 0, {  5462,   -670}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   563,   -357,   -665}, 0, {  4566,   -670}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   563,   -357,   -634}, 0, {  4566,   -670}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   563,   -588,   -634}, 0, {  5462,   -670}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   154,   -588,   -665}, 0, {  2396,    352}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   154,     51,   -665}, 0, {  -540,    352}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   154,     51,   -634}, 0, {  -540,    352}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   154,   -588,   -634}, 0, {  2396,    352}, {0x35, 0x4c, 0x2b, 0xff}}},\n};\n\n// 0x0701D118 - 0x0701D208\nstatic const Vtx rr_seg7_vertex_0701D118[] = {\n    {{{   461,   -588,   -634}, 0, {  4694,   -416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   461,   -357,   -634}, 0, {  3800,   -416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   461,   -357,   -665}, 0, {  3800,   -416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -255,   -588,   -665}, 0, {  -668,   1372}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -255,    256,   -634}, 0, { -4628,   1372}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -255,   -588,   -634}, 0, {  -668,   1372}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -665,   -588,   -665}, 0, { -3734,   2394}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -665,    461,   -665}, 0, { -8716,   2394}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -665,    461,   -634}, 0, { -8716,   2394}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -665,   -588,   -634}, 0, { -3734,   2394}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   870,   -588,   -634}, 0, {  7760,  -1438}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   870,   -153,   -634}, 0, {  5844,  -1438}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   870,   -153,   -665}, 0, {  5844,  -1438}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   870,   -588,   -665}, 0, {  7760,  -1438}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   461,   -588,   -665}, 0, {  4694,   -416}, {0x35, 0x4c, 0x2b, 0xff}}},\n};\n\n// 0x0701D208 - 0x0701D2F8\nstatic const Vtx rr_seg7_vertex_0701D208[] = {\n    {{{ -1125,   -690,   -613}, 0, { -6672,   3542}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{ -1125,   -588,   -613}, 0, { -7184,   3542}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{ -1125,   -588,   -665}, 0, { -7184,   3542}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{    51,   -588,   -634}, 0, {  1628,    606}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{    51,     51,   -665}, 0, { -1308,    606}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{    51,   -588,   -665}, 0, {  1628,    606}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{    51,     51,   -634}, 0, { -1308,    606}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -357,   -588,   -634}, 0, { -1436,   1626}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -357,    256,   -665}, 0, { -5396,   1626}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -357,   -588,   -665}, 0, { -1436,   1626}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -357,    256,   -634}, 0, { -5396,   1626}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -767,   -588,   -634}, 0, { -4502,   2648}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -767,    461,   -634}, 0, { -9484,   2648}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -767,    461,   -665}, 0, { -9484,   2648}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -767,   -588,   -665}, 0, { -4502,   2648}, {0x35, 0x4c, 0x2b, 0xff}}},\n};\n\n// 0x0701D2F8 - 0x0701D398\nstatic const Vtx rr_seg7_vertex_0701D2F8[] = {\n    {{{   973,   -153,   -634}, 0, {  6610,  -1692}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   973,   -588,   -634}, 0, {  8528,  -1692}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   973,   -588,   -665}, 0, {  8528,  -1692}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{ -1125,   -690,   -613}, 0, { -6672,   3542}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{ -1125,   -588,   -665}, 0, { -7184,   3542}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{ -1125,   -690,   -665}, 0, { -6672,   3542}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   973,   -690,   -665}, 0, {  9038,  -1692}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   973,   -588,   -613}, 0, {  8528,  -1692}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   973,   -690,   -613}, 0, {  9038,  -1692}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   973,   -153,   -665}, 0, {  6610,  -1692}, {0x35, 0x4c, 0x2b, 0xff}}},\n};\n\n// 0x0701D398 - 0x0701D478\nstatic const Vtx rr_seg7_vertex_0701D398[] = {\n    {{{  -101,    410,   -204}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -306,    410,      0}, 0, {   480,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -101,    410,    205}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -511,    614,    205}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -716,    614,      0}, 0, {   480,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -921,    614,    205}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -511,    614,   -204}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -921,    614,   -204}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -921,    614,    205}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -716,    614,      0}, 0, {   478,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -511,    614,   -204}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   307,    205,   -204}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -101,    205,   -204}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   102,    205,      0}, 0, {   480,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n};\n\n// 0x0701D478 - 0x0701D578\nstatic const Vtx rr_seg7_vertex_0701D478[] = {\n    {{{  -511,    410,   -204}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -511,    410,    205}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -306,    410,      0}, 0, {   478,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -101,    410,   -204}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -306,    410,      0}, 0, {   480,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -101,    410,    205}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -511,    410,    205}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   307,    205,    205}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   102,    205,      0}, 0, {   480,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -101,    205,    205}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  1126,      0,   -204}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   717,      0,   -204}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   922,      0,      0}, 0, {   480,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -101,    205,   -204}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -101,    205,    205}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   102,    205,      0}, 0, {   478,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n};\n\n// 0x0701D578 - 0x0701D678\nstatic const Vtx rr_seg7_vertex_0701D578[] = {\n    {{{   307,    205,   -204}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   102,    205,      0}, 0, {   480,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   307,    205,    205}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  1126,      0,   -204}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   922,      0,      0}, 0, {   480,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  1126,      0,    205}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   717,      0,   -204}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   717,      0,    205}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   922,      0,      0}, 0, {   478,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   717,   -204,   -204}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   512,   -204,      0}, 0, {   480,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   717,   -204,    205}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   717,      0,    205}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   307,   -204,    205}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   717,   -204,   -204}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   307,   -204,   -204}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n};\n\n// 0x0701D678 - 0x0701D758\nstatic const Vtx rr_seg7_vertex_0701D678[] = {\n    {{{   307,   -204,   -204}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   307,   -204,    205}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   512,   -204,      0}, 0, {   478,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   307,   -409,    205}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   102,   -409,      0}, 0, {   480,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -101,   -409,    205}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -511,   -409,   -204}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -716,   -409,      0}, 0, {   480,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -511,   -409,    205}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -921,   -409,   -204}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -921,   -409,    205}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -716,   -409,      0}, 0, {   478,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -511,   -409,   -204}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -921,   -409,    205}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n};\n\n// 0x0701D758 - 0x0701D848\nstatic const Vtx rr_seg7_vertex_0701D758[] = {\n    {{{  -511,   -204,   -204}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -511,   -204,    205}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -306,   -204,      0}, 0, {   478,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   307,   -409,   -204}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -101,   -409,   -204}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   102,   -409,      0}, 0, {   480,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -101,   -409,    205}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   102,   -409,      0}, 0, {   478,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   307,   -409,   -204}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   307,   -409,    205}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -101,   -204,   -204}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -306,   -204,      0}, 0, {   480,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -101,   -204,    205}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -101,   -204,   -204}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -511,   -204,    205}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n};\n\n// 0x0701D848 - 0x0701D938\nstatic const Vtx rr_seg7_vertex_0701D848[] = {\n    {{{   307,    205,    205}, 0, {  1160,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{   102,      0,      0}, 0, {   480,      0}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{   307,    205,   -204}, 0, {  -200,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -511,    614,    205}, 0, {  1160,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -716,    410,      0}, 0, {   480,      0}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -511,    614,   -204}, 0, {  -200,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -716,    410,      0}, 0, {   478,      0}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -921,    614,    205}, 0, {  1160,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -921,    614,   -204}, 0, {  -200,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -306,    205,      0}, 0, {   478,      0}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -511,    410,    205}, 0, {  1160,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -511,    410,   -204}, 0, {  -200,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -101,    410,    205}, 0, {  1160,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -306,    205,      0}, 0, {   480,      0}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -101,    410,   -204}, 0, {  -200,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n};\n\n// 0x0701D938 - 0x0701DA28\nstatic const Vtx rr_seg7_vertex_0701D938[] = {\n    {{{   512,   -409,      0}, 0, {   478,      0}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{   307,   -204,    205}, 0, {  1160,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{   307,   -204,   -204}, 0, {  -200,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{   102,      0,      0}, 0, {   478,      0}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -101,    205,    205}, 0, {  1160,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -101,    205,   -204}, 0, {  -200,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{   922,   -204,      0}, 0, {   478,      0}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{   717,      0,    205}, 0, {  1160,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{   717,      0,   -204}, 0, {  -200,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  1126,      0,    205}, 0, {  1160,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{   922,   -204,      0}, 0, {   480,      0}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  1126,      0,   -204}, 0, {  -200,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{   717,   -204,    205}, 0, {  1160,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{   512,   -409,      0}, 0, {   480,      0}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{   717,   -204,   -204}, 0, {  -200,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n};\n\n// 0x0701DA28 - 0x0701DB18\nstatic const Vtx rr_seg7_vertex_0701DA28[] = {\n    {{{  -306,   -409,      0}, 0, {   478,      0}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -511,   -204,    205}, 0, {  1160,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -511,   -204,   -204}, 0, {  -200,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -716,   -613,      0}, 0, {   478,      0}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -921,   -409,    205}, 0, {  1160,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -921,   -409,   -204}, 0, {  -200,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -511,   -409,    205}, 0, {  1160,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -716,   -613,      0}, 0, {   480,      0}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -511,   -409,   -204}, 0, {  -200,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{   307,   -409,    205}, 0, {  1160,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{   102,   -613,      0}, 0, {   480,      0}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{   307,   -409,   -204}, 0, {  -200,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{   102,   -613,      0}, 0, {   478,      0}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -101,   -409,    205}, 0, {  1160,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -101,   -409,   -204}, 0, {  -200,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n};\n\n// 0x0701DB18 - 0x0701DC18\nstatic const Vtx rr_seg7_vertex_0701DB18[] = {\n    {{{  -101,   -204,    205}, 0, {  1160,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -306,   -409,      0}, 0, {   480,      0}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -101,   -204,   -204}, 0, {  -200,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{   102,      0,      0}, 0, {   480,      0}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  -101,    205,   -204}, 0, {  -200,   1332}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{   307,    205,   -204}, 0, {  1160,   1332}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  -716,    410,      0}, 0, {   480,      0}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  -921,    614,   -204}, 0, {  -200,   1332}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  -511,    614,   -204}, 0, {  1160,   1332}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  -921,    614,    205}, 0, {  -200,   1332}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  -511,    614,    205}, 0, {  1160,   1332}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  -511,    410,    205}, 0, {  -200,   1332}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  -306,    205,      0}, 0, {   480,      0}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  -101,    410,    205}, 0, {  1160,   1332}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  -511,    410,   -204}, 0, {  -200,   1332}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  -101,    410,   -204}, 0, {  1160,   1332}, {0x6b, 0x6b, 0x00, 0xff}}},\n};\n\n// 0x0701DC18 - 0x0701DD18\nstatic const Vtx rr_seg7_vertex_0701DC18[] = {\n    {{{   307,   -204,    205}, 0, {  -200,   1332}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{   512,   -409,      0}, 0, {   480,      0}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{   717,   -204,    205}, 0, {  1160,   1332}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  -101,    205,    205}, 0, {  -200,   1332}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{   102,      0,      0}, 0, {   480,      0}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{   307,    205,    205}, 0, {  1160,   1332}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{   717,      0,    205}, 0, {  -200,   1332}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{   922,   -204,      0}, 0, {   480,      0}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  1126,      0,    205}, 0, {  1160,   1332}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{   717,      0,   -204}, 0, {  -200,   1332}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  1126,      0,   -204}, 0, {  1160,   1332}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{   307,   -204,   -204}, 0, {  -200,   1332}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{   717,   -204,   -204}, 0, {  1160,   1332}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  -511,   -204,    205}, 0, {  -200,   1332}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  -306,   -409,      0}, 0, {   480,      0}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  -101,   -204,    205}, 0, {  1160,   1332}, {0x6b, 0x6b, 0x00, 0xff}}},\n};\n\n// 0x0701DD18 - 0x0701DDE8\nstatic const Vtx rr_seg7_vertex_0701DD18[] = {\n    {{{  -921,   -409,    205}, 0, {  -200,   1332}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  -716,   -613,      0}, 0, {   480,      0}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  -511,   -409,    205}, 0, {  1160,   1332}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  -921,   -409,   -204}, 0, {  -200,   1332}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  -511,   -409,   -204}, 0, {  1160,   1332}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{   102,   -613,      0}, 0, {   480,      0}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  -101,   -409,   -204}, 0, {  -200,   1332}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{   307,   -409,   -204}, 0, {  1160,   1332}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  -101,   -409,    205}, 0, {  -200,   1332}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{   307,   -409,    205}, 0, {  1160,   1332}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  -306,   -409,      0}, 0, {   480,      0}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  -511,   -204,   -204}, 0, {  -200,   1332}, {0x6b, 0x6b, 0x00, 0xff}}},\n    {{{  -101,   -204,   -204}, 0, {  1160,   1332}, {0x6b, 0x6b, 0x00, 0xff}}},\n};\n\n// 0x0701DDE8 - 0x0701E3F8\nstatic const Gfx rr_seg7_dl_0701DDE8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_0701BD78, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701BE68, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701BF58, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701C048, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701C128, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701C208, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701C2F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701C3E8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701C4D8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9,  4, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701C5D8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701C6C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 4,  8,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 14, 10, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701C7B8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  3,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0,  9, 13, 12, 0x0),\n    gsSP2Triangles( 0, 14,  1, 0x0, 14, 15,  1, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701C8B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 4,  8,  5, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 10, 13, 14, 0x0),\n    gsSP1Triangle(10, 14, 11, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701C9A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 3,  4,  1, 0x0,  3,  5,  4, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701CAA8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701CB88, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701CC68, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701CD58, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 4, 14,  5, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701CE48, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701CF38, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701D028, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701D118, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701D208, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701D2F8, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  2,  7, 0x0),\n    gsSP1Triangle( 0,  2,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701E3F8 - 0x0701E670\nstatic const Gfx rr_seg7_dl_0701E3F8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_0701D398, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  4,  3, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701D478, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701D578, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 5,  4, 12, 0x0, 11, 10, 13, 0x0),\n    gsSP1Triangle(14, 15, 10, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701D678, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12,  9,  7, 0x0,  8,  7, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701D758, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  8,  5,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13,  0, 11, 0x0),\n    gsSP1Triangle(12, 11, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701D848, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701D938, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701DA28, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701DB18, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701DC18, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles( 1, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701DD18, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  5,  9, 0x0),\n    gsSP1Triangle(10, 11, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701E670 - 0x0701E700\nconst Gfx rr_seg7_dl_0701E670[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_0701DDE8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_0701E3F8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/rr/tricky_triangles_2/collision.inc.c",
    "content": "// 0x07029C1C - 0x07029FA4\nconst Collision rr_seg7_collision_07029C1C[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x48),\n    COL_VERTEX(-101, -255, 205),\n    COL_VERTEX(-306, -204, 0),\n    COL_VERTEX(-511, -255, 205),\n    COL_VERTEX(-101, -255, -204),\n    COL_VERTEX(-511, -255, -204),\n    COL_VERTEX(307, -460, -204),\n    COL_VERTEX(-101, -460, -204),\n    COL_VERTEX(102, -409, 0),\n    COL_VERTEX(307, -460, 205),\n    COL_VERTEX(-101, -460, 205),\n    COL_VERTEX(-511, -460, 205),\n    COL_VERTEX(-716, -409, 0),\n    COL_VERTEX(-921, -460, 205),\n    COL_VERTEX(-511, -460, -204),\n    COL_VERTEX(-921, -460, -204),\n    COL_VERTEX(717, -255, -204),\n    COL_VERTEX(717, -255, 205),\n    COL_VERTEX(307, -255, -204),\n    COL_VERTEX(1126, -50, 205),\n    COL_VERTEX(1126, -50, -204),\n    COL_VERTEX(717, -50, -204),\n    COL_VERTEX(307, 154, -204),\n    COL_VERTEX(307, 154, 205),\n    COL_VERTEX(-101, 154, -204),\n    COL_VERTEX(-101, 358, 205),\n    COL_VERTEX(-101, 358, -204),\n    COL_VERTEX(-511, 358, -204),\n    COL_VERTEX(-511, 563, -204),\n    COL_VERTEX(-921, 563, -204),\n    COL_VERTEX(-511, 563, 205),\n    COL_VERTEX(512, -204, 0),\n    COL_VERTEX(307, -255, 205),\n    COL_VERTEX(922, 0, 0),\n    COL_VERTEX(717, -50, 205),\n    COL_VERTEX(102, 205, 0),\n    COL_VERTEX(-101, 154, 205),\n    COL_VERTEX(-306, 410, 0),\n    COL_VERTEX(-511, 358, 205),\n    COL_VERTEX(-716, 614, 0),\n    COL_VERTEX(-921, 563, 205),\n    COL_VERTEX(-767, -588, -634),\n    COL_VERTEX(-665, -588, -634),\n    COL_VERTEX(-665, 461, -634),\n    COL_VERTEX(-767, 461, -634),\n    COL_VERTEX(-357, -588, -634),\n    COL_VERTEX(-255, -588, -634),\n    COL_VERTEX(-255, 256, -634),\n    COL_VERTEX(-357, 256, -634),\n    COL_VERTEX(51, -588, -634),\n    COL_VERTEX(154, 51, -634),\n    COL_VERTEX(51, 51, -634),\n    COL_VERTEX(154, -588, -634),\n    COL_VERTEX(461, -588, -634),\n    COL_VERTEX(563, -588, -634),\n    COL_VERTEX(563, -357, -634),\n    COL_VERTEX(461, -357, -634),\n    COL_VERTEX(973, -153, -634),\n    COL_VERTEX(973, -588, -613),\n    COL_VERTEX(-306, -409, 0),\n    COL_VERTEX(102, -613, 0),\n    COL_VERTEX(-716, -613, 0),\n    COL_VERTEX(512, -409, 0),\n    COL_VERTEX(922, -204, 0),\n    COL_VERTEX(102, 0, 0),\n    COL_VERTEX(-306, 205, 0),\n    COL_VERTEX(-716, 410, 0),\n    COL_VERTEX(870, -153, -634),\n    COL_VERTEX(870, -588, -634),\n    COL_VERTEX(973, -588, -634),\n    COL_VERTEX(-1023, -588, -613),\n    COL_VERTEX(-1023, -690, -613),\n    COL_VERTEX(973, -690, -613),\n    COL_TRI_INIT(SURFACE_DEFAULT, 44),\n    COL_TRI(52, 53, 54),\n    COL_TRI(40, 41, 42),\n    COL_TRI(40, 42, 43),\n    COL_TRI(44, 45, 46),\n    COL_TRI(44, 46, 47),\n    COL_TRI(48, 49, 50),\n    COL_TRI(48, 51, 49),\n    COL_TRI(2, 58, 0),\n    COL_TRI(52, 54, 55),\n    COL_TRI(56, 66, 67),\n    COL_TRI(56, 67, 68),\n    COL_TRI(57, 69, 70),\n    COL_TRI(57, 70, 71),\n    COL_TRI(0, 58, 3),\n    COL_TRI(58, 2, 4),\n    COL_TRI(58, 4, 3),\n    COL_TRI(9, 59, 8),\n    COL_TRI(59, 9, 6),\n    COL_TRI(59, 6, 5),\n    COL_TRI(8, 59, 5),\n    COL_TRI(12, 60, 10),\n    COL_TRI(10, 60, 13),\n    COL_TRI(60, 12, 14),\n    COL_TRI(60, 14, 13),\n    COL_TRI(61, 31, 17),\n    COL_TRI(31, 61, 16),\n    COL_TRI(61, 17, 15),\n    COL_TRI(16, 61, 15),\n    COL_TRI(18, 62, 19),\n    COL_TRI(33, 62, 18),\n    COL_TRI(62, 20, 19),\n    COL_TRI(62, 33, 20),\n    COL_TRI(35, 63, 22),\n    COL_TRI(63, 35, 23),\n    COL_TRI(63, 23, 21),\n    COL_TRI(22, 63, 21),\n    COL_TRI(37, 64, 24),\n    COL_TRI(24, 64, 25),\n    COL_TRI(64, 26, 25),\n    COL_TRI(64, 37, 26),\n    COL_TRI(39, 65, 29),\n    COL_TRI(65, 39, 28),\n    COL_TRI(65, 28, 27),\n    COL_TRI(29, 65, 27),\n    COL_TRI_INIT(SURFACE_VERY_SLIPPERY, 32),\n    COL_TRI(0, 1, 2),\n    COL_TRI(3, 1, 0),\n    COL_TRI(3, 4, 1),\n    COL_TRI(4, 2, 1),\n    COL_TRI(5, 6, 7),\n    COL_TRI(5, 7, 8),\n    COL_TRI(8, 7, 9),\n    COL_TRI(6, 9, 7),\n    COL_TRI(10, 11, 12),\n    COL_TRI(13, 11, 10),\n    COL_TRI(13, 14, 11),\n    COL_TRI(14, 12, 11),\n    COL_TRI(15, 30, 16),\n    COL_TRI(15, 17, 30),\n    COL_TRI(16, 30, 31),\n    COL_TRI(17, 31, 30),\n    COL_TRI(18, 32, 33),\n    COL_TRI(19, 32, 18),\n    COL_TRI(19, 20, 32),\n    COL_TRI(20, 33, 32),\n    COL_TRI(21, 23, 34),\n    COL_TRI(21, 34, 22),\n    COL_TRI(22, 34, 35),\n    COL_TRI(23, 35, 34),\n    COL_TRI(24, 36, 37),\n    COL_TRI(25, 36, 24),\n    COL_TRI(26, 37, 36),\n    COL_TRI(25, 26, 36),\n    COL_TRI(27, 38, 29),\n    COL_TRI(27, 28, 38),\n    COL_TRI(28, 39, 38),\n    COL_TRI(29, 38, 39),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/rr/tricky_triangles_2/geo.inc.c",
    "content": "// 0x0E000970\nconst GeoLayout rr_geo_000970[] = {\n    GEO_CULLING_RADIUS(1500),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, rr_seg7_dl_07021100),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/rr/tricky_triangles_2/model.inc.c",
    "content": "// 0x0701E700 - 0x0701E7F0\nstatic const Vtx rr_seg7_vertex_0701E700[] = {\n    {{{    77,    -50,   -634}, 0, {  -860,    542}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   102,      0,   -204}, 0, {  -924,    480}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   102,      0,   -634}, 0, {  -924,    480}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -741,    358,   -634}, 0, { -9036,   2584}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -741,    358,   -204}, 0, { -9036,   2584}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -716,    410,   -204}, 0, { -9100,   2520}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -716,    410,   -634}, 0, { -9100,   2520}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   896,   -255,   -634}, 0, {  6292,  -1502}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   922,   -204,   -204}, 0, {  6228,  -1564}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   922,   -204,   -634}, 0, {  6228,  -1564}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   896,   -255,   -204}, 0, {  6292,  -1502}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   486,   -460,   -634}, 0, {  4248,   -480}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   512,   -409,   -204}, 0, {  4184,   -542}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   512,   -409,   -634}, 0, {  4184,   -542}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   486,   -460,   -204}, 0, {  4248,   -480}, {0x7f, 0xac, 0x52, 0xff}}},\n};\n\n// 0x0701E7F0 - 0x0701E8E0\nstatic const Vtx rr_seg7_vertex_0701E7F0[] = {\n    {{{  -332,    154,   -634}, 0, { -4948,   1562}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -332,    154,   -204}, 0, { -4948,   1562}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -306,    205,   -204}, 0, { -5012,   1498}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{    77,    -50,   -634}, 0, {  -860,    542}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{    77,    -50,   -204}, 0, {  -860,    542}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   102,      0,   -204}, 0, {  -924,    480}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -332,   -460,   -634}, 0, { -1882,   1562}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -306,   -409,   -204}, 0, { -1946,   1498}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -306,   -409,   -634}, 0, { -1946,   1498}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -332,   -460,   -204}, 0, { -1882,   1562}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -741,   -665,   -634}, 0, { -3926,   2584}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -741,   -665,   -204}, 0, { -3926,   2584}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -716,   -613,   -204}, 0, { -3990,   2520}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -716,   -613,   -634}, 0, { -3990,   2520}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -306,    205,   -634}, 0, { -5012,   1498}, {0x7f, 0xac, 0x52, 0xff}}},\n};\n\n// 0x0701E8E0 - 0x0701E9D0\nstatic const Vtx rr_seg7_vertex_0701E8E0[] = {\n    {{{    77,   -665,   -634}, 0, {  2204,    542}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   102,   -613,   -204}, 0, {  2140,    480}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   102,   -613,   -634}, 0, {  2140,    480}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{    77,   -665,   -204}, 0, {  2204,    542}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{    77,    -50,   -204}, 0, {  -860,    542}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{    77,    -50,    154}, 0, {  -860,    542}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   102,      0,    154}, 0, {  -924,    480}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -741,    358,   -204}, 0, { -9036,   2584}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -716,    410,    154}, 0, { -9100,   2520}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -716,    410,   -204}, 0, { -9100,   2520}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -741,    358,    154}, 0, { -9036,   2584}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   896,   -255,   -204}, 0, {  6292,  -1502}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   896,   -255,    154}, 0, {  6292,  -1502}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   922,   -204,    154}, 0, {  6228,  -1564}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   922,   -204,   -204}, 0, {  6228,  -1564}, {0x44, 0x55, 0x22, 0xff}}},\n};\n\n// 0x0701E9D0 - 0x0701EAB0\nstatic const Vtx rr_seg7_vertex_0701E9D0[] = {\n    {{{   486,   -460,   -204}, 0, {  4248,   -480}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   486,   -460,    154}, 0, {  4248,   -480}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   512,   -409,    154}, 0, {  4184,   -542}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   512,   -409,   -204}, 0, {  4184,   -542}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -332,    154,   -204}, 0, { -4948,   1562}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -306,    205,    154}, 0, { -5012,   1498}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -306,    205,   -204}, 0, { -5012,   1498}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{    77,    -50,   -204}, 0, {  -860,    542}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   102,      0,    154}, 0, {  -924,    480}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   102,      0,   -204}, 0, {  -924,    480}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -332,   -460,   -204}, 0, { -1882,   1562}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -306,   -409,    154}, 0, { -1946,   1498}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -306,   -409,   -204}, 0, { -1946,   1498}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -332,   -460,    154}, 0, { -1882,   1562}, {0x44, 0x55, 0x22, 0xff}}},\n};\n\n// 0x0701EAB0 - 0x0701EB90\nstatic const Vtx rr_seg7_vertex_0701EAB0[] = {\n    {{{  -741,   -665,   -204}, 0, { -3926,   2584}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -741,   -665,    154}, 0, { -3926,   2584}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -716,   -613,    154}, 0, { -3990,   2520}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -716,   -613,   -204}, 0, { -3990,   2520}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -332,    154,   -204}, 0, { -4948,   1562}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -332,    154,    154}, 0, { -4948,   1562}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -306,    205,    154}, 0, { -5012,   1498}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{    77,   -665,   -204}, 0, {  2204,    542}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{    77,   -665,    154}, 0, {  2204,    542}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   102,   -613,    154}, 0, {  2140,    480}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   102,   -613,   -204}, 0, {  2140,    480}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   512,   -409,    154}, 0, {  4184,   -542}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   486,   -460,    154}, 0, {  4248,   -480}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   538,   -460,    154}, 0, {  4630,   -606}, {0x54, 0x70, 0x40, 0xff}}},\n};\n\n// 0x0701EB90 - 0x0701EC80\nstatic const Vtx rr_seg7_vertex_0701EB90[] = {\n    {{{  -716,    410,    154}, 0, { -9100,   2520}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -741,    358,    154}, 0, { -9036,   2584}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -690,    358,    154}, 0, { -8654,   2458}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -306,    205,    154}, 0, { -5012,   1498}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -332,    154,    154}, 0, { -4948,   1562}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -281,    154,    154}, 0, { -4566,   1436}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   922,   -204,    154}, 0, {  6228,  -1564}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   896,   -255,    154}, 0, {  6292,  -1502}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   947,   -255,    154}, 0, {  6674,  -1628}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   102,      0,    154}, 0, {  -924,    480}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{    77,    -50,    154}, 0, {  -860,    542}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   128,    -50,    154}, 0, {  -478,    416}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -588,   -613}, 0, {  8528,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{ -1023,   -690,   -613}, 0, { -5906,   3288}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -690,   -613}, 0, {  9038,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n};\n\n// 0x0701EC80 - 0x0701ED70\nstatic const Vtx rr_seg7_vertex_0701EC80[] = {\n    {{{  -306,   -409,    154}, 0, { -1946,   1498}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -332,   -460,    154}, 0, { -1882,   1562}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -281,   -460,    154}, 0, { -1500,   1436}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -716,   -613,    154}, 0, { -3990,   2520}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -741,   -665,    154}, 0, { -3926,   2584}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -690,   -665,    154}, 0, { -3544,   2458}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   102,   -613,    154}, 0, {  2140,    480}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{    77,   -665,    154}, 0, {  2204,    542}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   128,   -665,    154}, 0, {  2586,    416}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -588,   -613}, 0, {  8528,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{ -1023,   -588,   -613}, 0, { -6418,   3288}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{ -1023,   -690,   -613}, 0, { -5906,   3288}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   461,   -588,   -634}, 0, {  4694,   -416}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   563,   -357,   -634}, 0, {  4566,   -670}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   461,   -357,   -634}, 0, {  3800,   -416}, {0x54, 0x70, 0x40, 0xff}}},\n};\n\n// 0x0701ED70 - 0x0701EE60\nstatic const Vtx rr_seg7_vertex_0701ED70[] = {\n    {{{  -767,   -588,   -634}, 0, { -4502,   2648}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -665,    461,   -634}, 0, { -8716,   2394}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -767,    461,   -634}, 0, { -9484,   2648}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -665,   -588,   -634}, 0, { -3734,   2394}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -357,   -588,   -634}, 0, { -1436,   1626}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -255,   -588,   -634}, 0, {  -668,   1372}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -255,    256,   -634}, 0, { -4628,   1372}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -357,    256,   -634}, 0, { -5396,   1626}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{    51,   -588,   -634}, 0, {  1628,    606}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   154,   -588,   -634}, 0, {  2396,    352}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   154,     51,   -634}, 0, {  -540,    352}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{    51,     51,   -634}, 0, { -1308,    606}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   461,   -357,   -665}, 0, {  3800,   -416}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   563,   -588,   -665}, 0, {  5462,   -670}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   461,   -588,   -665}, 0, {  4694,   -416}, {0x54, 0x70, 0x40, 0xff}}},\n};\n\n// 0x0701EE60 - 0x0701EF60\nstatic const Vtx rr_seg7_vertex_0701EE60[] = {\n    {{{   461,   -588,   -634}, 0, {  4694,   -416}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   563,   -588,   -634}, 0, {  5462,   -670}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   563,   -357,   -634}, 0, {  4566,   -670}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   870,   -153,   -665}, 0, {  5844,  -1438}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -153,   -665}, 0, {  6610,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -588,   -665}, 0, {  8528,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   870,   -588,   -665}, 0, {  7760,  -1438}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -690,   -665}, 0, {  9038,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{ -1125,   -690,   -665}, 0, { -6672,   3542}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{ -1125,   -588,   -665}, 0, { -7184,   3542}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   461,   -357,   -665}, 0, {  3800,   -416}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   563,   -357,   -665}, 0, {  4566,   -670}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   563,   -588,   -665}, 0, {  5462,   -670}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -153,   -634}, 0, {  6610,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   870,   -153,   -634}, 0, {  5844,  -1438}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   870,   -588,   -634}, 0, {  7760,  -1438}, {0x54, 0x70, 0x40, 0xff}}},\n};\n\n// 0x0701EF60 - 0x0701F050\nstatic const Vtx rr_seg7_vertex_0701EF60[] = {\n    {{{    51,     51,   -665}, 0, { -1308,    606}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   154,     51,   -665}, 0, {  -540,    352}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   154,   -588,   -665}, 0, {  2396,    352}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{    51,   -588,   -665}, 0, {  1628,    606}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -357,    256,   -665}, 0, { -5396,   1626}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -255,   -588,   -665}, 0, {  -668,   1372}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -357,   -588,   -665}, 0, { -1436,   1626}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -255,    256,   -665}, 0, { -4628,   1372}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -767,    461,   -665}, 0, { -9484,   2648}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -665,    461,   -665}, 0, { -8716,   2394}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -665,   -588,   -665}, 0, { -3734,   2394}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -767,   -588,   -665}, 0, { -4502,   2648}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -153,   -634}, 0, {  6610,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   870,   -588,   -634}, 0, {  7760,  -1438}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -588,   -634}, 0, {  8528,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n};\n\n// 0x0701F050 - 0x0701F140\nstatic const Vtx rr_seg7_vertex_0701F050[] = {\n    {{{   538,   -460,   -634}, 0, {  4630,   -606}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   486,   -460,   -204}, 0, {  4248,   -480}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   486,   -460,   -634}, 0, {  4248,   -480}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -690,    358,   -634}, 0, { -8654,   2458}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -741,    358,   -204}, 0, { -9036,   2584}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -741,    358,   -634}, 0, { -9036,   2584}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -690,    358,   -204}, 0, { -8654,   2458}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -741,    358,    154}, 0, { -9036,   2584}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -690,    358,    154}, 0, { -8654,   2458}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   947,   -255,   -634}, 0, {  6674,  -1628}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   896,   -255,   -204}, 0, {  6292,  -1502}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   896,   -255,   -634}, 0, {  6292,  -1502}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   947,   -255,   -204}, 0, {  6674,  -1628}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   896,   -255,    154}, 0, {  6292,  -1502}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   947,   -255,    154}, 0, {  6674,  -1628}, {0x1d, 0x3e, 0x0f, 0xff}}},\n};\n\n// 0x0701F140 - 0x0701F240\nstatic const Vtx rr_seg7_vertex_0701F140[] = {\n    {{{  -281,   -460,   -634}, 0, { -1500,   1436}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -332,   -460,   -204}, 0, { -1882,   1562}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -332,   -460,   -634}, 0, { -1882,   1562}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   538,   -460,   -204}, 0, {  4630,   -606}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   538,   -460,    154}, 0, {  4630,   -606}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   486,   -460,    154}, 0, {  4248,   -480}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   486,   -460,   -204}, 0, {  4248,   -480}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   538,   -460,   -634}, 0, {  4630,   -606}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   128,    -50,   -634}, 0, {  -478,    416}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{    77,    -50,   -204}, 0, {  -860,    542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{    77,    -50,   -634}, 0, {  -860,    542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   128,    -50,   -204}, 0, {  -478,    416}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   128,    -50,    154}, 0, {  -478,    416}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{    77,    -50,    154}, 0, {  -860,    542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -281,   -460,   -204}, 0, { -1500,   1436}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -332,   -460,    154}, 0, { -1882,   1562}, {0x1d, 0x3e, 0x0f, 0xff}}},\n};\n\n// 0x0701F240 - 0x0701F330\nstatic const Vtx rr_seg7_vertex_0701F240[] = {\n    {{{  -281,   -460,   -204}, 0, { -1500,   1436}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -281,   -460,    154}, 0, { -1500,   1436}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -332,   -460,    154}, 0, { -1882,   1562}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -690,   -665,   -634}, 0, { -3544,   2458}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -741,   -665,   -204}, 0, { -3926,   2584}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -741,   -665,   -634}, 0, { -3926,   2584}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -690,   -665,   -204}, 0, { -3544,   2458}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -741,   -665,    154}, 0, { -3926,   2584}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -690,   -665,    154}, 0, { -3544,   2458}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -281,    154,   -634}, 0, { -4566,   1436}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -281,    154,   -204}, 0, { -4566,   1436}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -332,    154,   -204}, 0, { -4948,   1562}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -332,    154,   -634}, 0, { -4948,   1562}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -332,    154,    154}, 0, { -4948,   1562}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -281,    154,    154}, 0, { -4566,   1436}, {0x1d, 0x3e, 0x0f, 0xff}}},\n};\n\n// 0x0701F330 - 0x0701F430\nstatic const Vtx rr_seg7_vertex_0701F330[] = {\n    {{{   128,   -665,   -634}, 0, {  2586,    416}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   128,   -665,   -204}, 0, {  2586,    416}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{    77,   -665,   -204}, 0, {  2204,    542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{    77,   -665,   -634}, 0, {  2204,    542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   128,   -665,    154}, 0, {  2586,    416}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{    77,   -665,    154}, 0, {  2204,    542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   973,   -690,   -613}, 0, {  9038,  -1692}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{ -1125,   -690,   -613}, 0, { -6672,   3542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{ -1125,   -690,   -665}, 0, { -6672,   3542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   973,   -690,   -665}, 0, {  9038,  -1692}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   102,      0,   -634}, 0, {  -924,    480}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   128,    -50,   -204}, 0, {  -478,    416}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   128,    -50,   -634}, 0, {  -478,    416}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -716,    410,   -634}, 0, { -9100,   2520}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -716,    410,   -204}, 0, { -9100,   2520}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -690,    358,   -204}, 0, { -8654,   2458}, {0x67, 0x89, 0x51, 0xff}}},\n};\n\n// 0x0701F430 - 0x0701F510\nstatic const Vtx rr_seg7_vertex_0701F430[] = {\n    {{{  -716,    410,   -634}, 0, { -9100,   2520}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -690,    358,   -204}, 0, { -8654,   2458}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -690,    358,   -634}, 0, { -8654,   2458}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   922,   -204,   -634}, 0, {  6228,  -1564}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   947,   -255,   -204}, 0, {  6674,  -1628}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   947,   -255,   -634}, 0, {  6674,  -1628}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   922,   -204,   -204}, 0, {  6228,  -1564}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   512,   -409,   -634}, 0, {  4184,   -542}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   538,   -460,   -204}, 0, {  4630,   -606}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   538,   -460,   -634}, 0, {  4630,   -606}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   512,   -409,   -204}, 0, {  4184,   -542}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -306,    205,   -634}, 0, { -5012,   1498}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -306,    205,   -204}, 0, { -5012,   1498}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -281,    154,   -204}, 0, { -4566,   1436}, {0x67, 0x89, 0x51, 0xff}}},\n};\n\n// 0x0701F510 - 0x0701F5F0\nstatic const Vtx rr_seg7_vertex_0701F510[] = {\n    {{{   102,      0,   -634}, 0, {  -924,    480}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   102,      0,   -204}, 0, {  -924,    480}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   128,    -50,   -204}, 0, {  -478,    416}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -306,   -409,   -634}, 0, { -1946,   1498}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -306,   -409,   -204}, 0, { -1946,   1498}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -281,   -460,   -204}, 0, { -1500,   1436}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -281,   -460,   -634}, 0, { -1500,   1436}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -716,   -613,   -634}, 0, { -3990,   2520}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -716,   -613,   -204}, 0, { -3990,   2520}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -690,   -665,   -204}, 0, { -3544,   2458}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -690,   -665,   -634}, 0, { -3544,   2458}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -306,    205,   -634}, 0, { -5012,   1498}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -281,    154,   -204}, 0, { -4566,   1436}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -281,    154,   -634}, 0, { -4566,   1436}, {0x67, 0x89, 0x51, 0xff}}},\n};\n\n// 0x0701F5F0 - 0x0701F6E0\nstatic const Vtx rr_seg7_vertex_0701F5F0[] = {\n    {{{   102,   -613,   -634}, 0, {  2140,    480}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   102,   -613,   -204}, 0, {  2140,    480}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   128,   -665,   -204}, 0, {  2586,    416}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   128,   -665,   -634}, 0, {  2586,    416}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -357,    256,   -634}, 0, { -5396,   1626}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -255,    256,   -665}, 0, { -4628,   1372}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -357,    256,   -665}, 0, { -5396,   1626}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   973,   -153,   -665}, 0, {  6610,  -1692}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   870,   -153,   -634}, 0, {  5844,  -1438}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   973,   -153,   -634}, 0, {  6610,  -1692}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   870,   -153,   -665}, 0, {  5844,  -1438}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   461,   -357,   -634}, 0, {  3800,   -416}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   563,   -357,   -665}, 0, {  4566,   -670}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   461,   -357,   -665}, 0, {  3800,   -416}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   563,   -357,   -634}, 0, {  4566,   -670}, {0x97, 0xcd, 0x97, 0xff}}},\n};\n\n// 0x0701F6E0 - 0x0701F7D0\nstatic const Vtx rr_seg7_vertex_0701F6E0[] = {\n    {{{    51,     51,   -634}, 0, { -1308,    606}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   154,     51,   -634}, 0, {  -540,    352}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   154,     51,   -665}, 0, {  -540,    352}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{    51,     51,   -665}, 0, { -1308,    606}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   973,   -588,   -665}, 0, {  8528,  -1692}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{ -1125,   -588,   -665}, 0, { -7184,   3542}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{ -1125,   -588,   -613}, 0, { -7184,   3542}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -357,    256,   -634}, 0, { -5396,   1626}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -255,    256,   -634}, 0, { -4628,   1372}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -255,    256,   -665}, 0, { -4628,   1372}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -767,    461,   -634}, 0, { -9484,   2648}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -665,    461,   -634}, 0, { -8716,   2394}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -665,    461,   -665}, 0, { -8716,   2394}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -767,    461,   -665}, 0, { -9484,   2648}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   973,   -588,   -613}, 0, {  8528,  -1692}, {0x97, 0xcd, 0x97, 0xff}}},\n};\n\n// 0x0701F7D0 - 0x0701F8C0\nstatic const Vtx rr_seg7_vertex_0701F7D0[] = {\n    {{{   102,      0,   -204}, 0, {  -924,    480}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   128,    -50,    154}, 0, {  -478,    416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   128,    -50,   -204}, 0, {  -478,    416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -716,    410,   -204}, 0, { -9100,   2520}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -690,    358,    154}, 0, { -8654,   2458}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -690,    358,   -204}, 0, { -8654,   2458}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -716,    410,    154}, 0, { -9100,   2520}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   922,   -204,   -204}, 0, {  6228,  -1564}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   947,   -255,    154}, 0, {  6674,  -1628}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   947,   -255,   -204}, 0, {  6674,  -1628}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   922,   -204,    154}, 0, {  6228,  -1564}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   512,   -409,   -204}, 0, {  4184,   -542}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   512,   -409,    154}, 0, {  4184,   -542}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   538,   -460,    154}, 0, {  4630,   -606}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   538,   -460,   -204}, 0, {  4630,   -606}, {0x35, 0x4c, 0x2b, 0xff}}},\n};\n\n// 0x0701F8C0 - 0x0701F9B0\nstatic const Vtx rr_seg7_vertex_0701F8C0[] = {\n    {{{  -306,    205,   -204}, 0, { -5012,   1498}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -281,    154,    154}, 0, { -4566,   1436}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -281,    154,   -204}, 0, { -4566,   1436}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   102,      0,   -204}, 0, {  -924,    480}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   102,      0,    154}, 0, {  -924,    480}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   128,    -50,    154}, 0, {  -478,    416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -306,   -409,   -204}, 0, { -1946,   1498}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -306,   -409,    154}, 0, { -1946,   1498}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -281,   -460,    154}, 0, { -1500,   1436}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -281,   -460,   -204}, 0, { -1500,   1436}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -716,   -613,   -204}, 0, { -3990,   2520}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -690,   -665,    154}, 0, { -3544,   2458}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -690,   -665,   -204}, 0, { -3544,   2458}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -716,   -613,    154}, 0, { -3990,   2520}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -306,    205,    154}, 0, { -5012,   1498}, {0x35, 0x4c, 0x2b, 0xff}}},\n};\n\n// 0x0701F9B0 - 0x0701FAA0\nstatic const Vtx rr_seg7_vertex_0701F9B0[] = {\n    {{{  -255,   -588,   -665}, 0, {  -668,   1372}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -255,    256,   -634}, 0, { -4628,   1372}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -255,   -588,   -634}, 0, {  -668,   1372}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   102,   -613,   -204}, 0, {  2140,    480}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   102,   -613,    154}, 0, {  2140,    480}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   128,   -665,    154}, 0, {  2586,    416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   128,   -665,   -204}, 0, {  2586,    416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   563,   -588,   -665}, 0, {  5462,   -670}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   563,   -357,   -665}, 0, {  4566,   -670}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   563,   -357,   -634}, 0, {  4566,   -670}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   563,   -588,   -634}, 0, {  5462,   -670}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   154,   -588,   -665}, 0, {  2396,    352}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   154,     51,   -665}, 0, {  -540,    352}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   154,     51,   -634}, 0, {  -540,    352}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   154,   -588,   -634}, 0, {  2396,    352}, {0x35, 0x4c, 0x2b, 0xff}}},\n};\n\n// 0x0701FAA0 - 0x0701FB90\nstatic const Vtx rr_seg7_vertex_0701FAA0[] = {\n    {{{   461,   -588,   -634}, 0, {  4694,   -416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   461,   -357,   -634}, 0, {  3800,   -416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   461,   -357,   -665}, 0, {  3800,   -416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -255,   -588,   -665}, 0, {  -668,   1372}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -255,    256,   -665}, 0, { -4628,   1372}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -255,    256,   -634}, 0, { -4628,   1372}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -665,   -588,   -665}, 0, { -3734,   2394}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -665,    461,   -665}, 0, { -8716,   2394}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -665,    461,   -634}, 0, { -8716,   2394}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -665,   -588,   -634}, 0, { -3734,   2394}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   870,   -588,   -634}, 0, {  7760,  -1438}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   870,   -153,   -634}, 0, {  5844,  -1438}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   870,   -153,   -665}, 0, {  5844,  -1438}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   870,   -588,   -665}, 0, {  7760,  -1438}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   461,   -588,   -665}, 0, {  4694,   -416}, {0x35, 0x4c, 0x2b, 0xff}}},\n};\n\n// 0x0701FB90 - 0x0701FC80\nstatic const Vtx rr_seg7_vertex_0701FB90[] = {\n    {{{ -1125,   -690,   -613}, 0, { -6672,   3542}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{ -1125,   -588,   -613}, 0, { -7184,   3542}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{ -1125,   -588,   -665}, 0, { -7184,   3542}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{    51,   -588,   -634}, 0, {  1628,    606}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{    51,     51,   -634}, 0, { -1308,    606}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{    51,     51,   -665}, 0, { -1308,    606}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{    51,   -588,   -665}, 0, {  1628,    606}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -357,   -588,   -634}, 0, { -1436,   1626}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -357,    256,   -665}, 0, { -5396,   1626}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -357,   -588,   -665}, 0, { -1436,   1626}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -357,    256,   -634}, 0, { -5396,   1626}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -767,   -588,   -634}, 0, { -4502,   2648}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -767,    461,   -665}, 0, { -9484,   2648}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -767,   -588,   -665}, 0, { -4502,   2648}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -767,    461,   -634}, 0, { -9484,   2648}, {0x35, 0x4c, 0x2b, 0xff}}},\n};\n\n// 0x0701FC80 - 0x0701FD20\nstatic const Vtx rr_seg7_vertex_0701FC80[] = {\n    {{{   973,   -153,   -634}, 0, {  6610,  -1692}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   973,   -588,   -634}, 0, {  8528,  -1692}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   973,   -588,   -665}, 0, {  8528,  -1692}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{ -1125,   -690,   -613}, 0, { -6672,   3542}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{ -1125,   -588,   -665}, 0, { -7184,   3542}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{ -1125,   -690,   -665}, 0, { -6672,   3542}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   973,   -690,   -665}, 0, {  9038,  -1692}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   973,   -588,   -613}, 0, {  8528,  -1692}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   973,   -690,   -613}, 0, {  9038,  -1692}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   973,   -153,   -665}, 0, {  6610,  -1692}, {0x35, 0x4c, 0x2b, 0xff}}},\n};\n\n// 0x0701FD20 - 0x0701FE20\nstatic const Vtx rr_seg7_vertex_0701FD20[] = {\n    {{{   307,    154,    205}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   102,    205,      0}, 0, {   480,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -101,    154,    205}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -511,    563,    205}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -716,    614,      0}, 0, {   480,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -921,    563,    205}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -511,    563,   -204}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -921,    563,   -204}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -101,    358,   -204}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -511,    358,   -204}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -306,    410,      0}, 0, {   480,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -101,    358,    205}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -511,    358,    205}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   717,   -255,   -204}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   307,   -255,   -204}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   512,   -204,      0}, 0, {   480,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n};\n\n// 0x0701FE20 - 0x0701FF00\nstatic const Vtx rr_seg7_vertex_0701FE20[] = {\n    {{{   307,    154,   -204}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -101,    154,   -204}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   102,    205,      0}, 0, {   480,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  1126,    -50,   -204}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   717,    -50,   -204}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   922,      0,      0}, 0, {   480,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  1126,    -50,    205}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   717,    -50,    205}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   717,   -255,    205}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   512,   -204,      0}, 0, {   480,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   307,   -255,    205}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -101,   -255,   -204}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -511,   -255,   -204}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -306,   -204,      0}, 0, {   480,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n};\n\n// 0x0701FF00 - 0x07020000\nstatic const Vtx rr_seg7_vertex_0701FF00[] = {\n    {{{  -511,   -460,   -204}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -921,   -460,   -204}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -716,   -409,      0}, 0, {   480,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -511,   -460,    205}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -921,   -460,    205}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   307,   -460,    205}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   102,   -409,      0}, 0, {   480,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -101,   -460,    205}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   307,   -460,   -204}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -101,   -460,   -204}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -101,   -255,    205}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -306,   -204,      0}, 0, {   480,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -511,   -255,    205}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -101,    154,   -204}, 0, {  -200,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -101,    154,    205}, 0, {  1160,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{   102,    205,      0}, 0, {   478,      0}, {0xe3, 0xc7, 0x13, 0xff}}},\n};\n\n// 0x07020000 - 0x070200F0\nstatic const Vtx rr_seg7_vertex_07020000[] = {\n    {{{  -921,    563,   -204}, 0, {  -200,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -921,    563,    205}, 0, {  1160,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -716,    614,      0}, 0, {   478,      0}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -511,    563,   -204}, 0, {  -200,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -716,    614,      0}, 0, {   480,      0}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -511,    563,    205}, 0, {  1160,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -101,    358,   -204}, 0, {  -200,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -306,    410,      0}, 0, {   480,      0}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -101,    358,    205}, 0, {  1160,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -511,    358,   -204}, 0, {  -200,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -511,    358,    205}, 0, {  1160,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -306,    410,      0}, 0, {   478,      0}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{   717,   -255,   -204}, 0, {  -200,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{   512,   -204,      0}, 0, {   480,      0}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{   717,   -255,    205}, 0, {  1160,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n};\n\n// 0x070200F0 - 0x070201E0\nstatic const Vtx rr_seg7_vertex_070200F0[] = {\n    {{{   307,    154,   -204}, 0, {  -200,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{   102,    205,      0}, 0, {   480,      0}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{   307,    154,    205}, 0, {  1160,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  1126,    -50,   -204}, 0, {  -200,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{   922,      0,      0}, 0, {   480,      0}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  1126,    -50,    205}, 0, {  1160,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{   717,    -50,   -204}, 0, {  -200,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{   717,    -50,    205}, 0, {  1160,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{   922,      0,      0}, 0, {   478,      0}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{   307,   -255,   -204}, 0, {  -200,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{   307,   -255,    205}, 0, {  1160,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{   512,   -204,      0}, 0, {   478,      0}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -101,   -255,   -204}, 0, {  -200,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -306,   -204,      0}, 0, {   480,      0}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -101,   -255,    205}, 0, {  1160,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n};\n\n// 0x070201E0 - 0x070202D0\nstatic const Vtx rr_seg7_vertex_070201E0[] = {\n    {{{  -511,   -460,   -204}, 0, {  -200,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -716,   -409,      0}, 0, {   480,      0}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -511,   -460,    205}, 0, {  1160,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -921,   -460,   -204}, 0, {  -200,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -921,   -460,    205}, 0, {  1160,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -716,   -409,      0}, 0, {   478,      0}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -101,   -460,   -204}, 0, {  -200,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -101,   -460,    205}, 0, {  1160,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{   102,   -409,      0}, 0, {   478,      0}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{   307,   -460,   -204}, 0, {  -200,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{   102,   -409,      0}, 0, {   480,      0}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{   307,   -460,    205}, 0, {  1160,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -511,   -255,   -204}, 0, {  -200,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -511,   -255,    205}, 0, {  1160,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -306,   -204,      0}, 0, {   478,      0}, {0xe3, 0xc7, 0x13, 0xff}}},\n};\n\n// 0x070202D0 - 0x070203C0\nstatic const Vtx rr_seg7_vertex_070202D0[] = {\n    {{{   307,    154,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   102,      0,      0}, 0, {   480,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   307,    154,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -511,    563,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -716,    410,      0}, 0, {   480,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -511,    563,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -716,    410,      0}, 0, {   478,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -921,    563,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -921,    563,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -306,    205,      0}, 0, {   478,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -511,    358,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -511,    358,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -101,    358,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -306,    205,      0}, 0, {   480,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -101,    358,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n};\n\n// 0x070203C0 - 0x070204B0\nstatic const Vtx rr_seg7_vertex_070203C0[] = {\n    {{{   512,   -409,      0}, 0, {   478,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   307,   -255,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   307,   -255,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   102,      0,      0}, 0, {   478,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -101,    154,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -101,    154,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   922,   -204,      0}, 0, {   478,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   717,    -50,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   717,    -50,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  1126,    -50,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   922,   -204,      0}, 0, {   480,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  1126,    -50,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   717,   -255,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   512,   -409,      0}, 0, {   480,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   717,   -255,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n};\n\n// 0x070204B0 - 0x070205A0\nstatic const Vtx rr_seg7_vertex_070204B0[] = {\n    {{{  -306,   -409,      0}, 0, {   478,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -511,   -255,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -511,   -255,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -716,   -613,      0}, 0, {   478,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -921,   -460,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -921,   -460,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -511,   -460,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -716,   -613,      0}, 0, {   480,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -511,   -460,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   307,   -460,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   102,   -613,      0}, 0, {   480,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   307,   -460,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   102,   -613,      0}, 0, {   478,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -101,   -460,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -101,   -460,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n};\n\n// 0x070205A0 - 0x070206A0\nstatic const Vtx rr_seg7_vertex_070205A0[] = {\n    {{{  -101,   -255,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -306,   -409,      0}, 0, {   480,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -101,   -255,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   102,      0,      0}, 0, {   480,      0}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  -101,    154,   -204}, 0, {  -200,   1332}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{   307,    154,   -204}, 0, {  1160,   1332}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  -716,    410,      0}, 0, {   480,      0}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  -921,    563,   -204}, 0, {  -200,   1332}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  -511,    563,   -204}, 0, {  1160,   1332}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  -921,    563,    205}, 0, {  -200,   1332}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  -511,    563,    205}, 0, {  1160,   1332}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  -511,    358,    205}, 0, {  -200,   1332}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  -306,    205,      0}, 0, {   480,      0}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  -101,    358,    205}, 0, {  1160,   1332}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  -511,    358,   -204}, 0, {  -200,   1332}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  -101,    358,   -204}, 0, {  1160,   1332}, {0x5d, 0x5d, 0x00, 0xff}}},\n};\n\n// 0x070206A0 - 0x070207A0\nstatic const Vtx rr_seg7_vertex_070206A0[] = {\n    {{{   307,   -255,    205}, 0, {  -200,   1332}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{   512,   -409,      0}, 0, {   480,      0}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{   717,   -255,    205}, 0, {  1160,   1332}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  -101,    154,    205}, 0, {  -200,   1332}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{   102,      0,      0}, 0, {   480,      0}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{   307,    154,    205}, 0, {  1160,   1332}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{   717,    -50,    205}, 0, {  -200,   1332}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{   922,   -204,      0}, 0, {   480,      0}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  1126,    -50,    205}, 0, {  1160,   1332}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{   717,    -50,   -204}, 0, {  -200,   1332}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  1126,    -50,   -204}, 0, {  1160,   1332}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{   307,   -255,   -204}, 0, {  -200,   1332}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{   717,   -255,   -204}, 0, {  1160,   1332}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  -511,   -255,    205}, 0, {  -200,   1332}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  -306,   -409,      0}, 0, {   480,      0}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  -101,   -255,    205}, 0, {  1160,   1332}, {0x5d, 0x5d, 0x00, 0xff}}},\n};\n\n// 0x070207A0 - 0x07020870\nstatic const Vtx rr_seg7_vertex_070207A0[] = {\n    {{{  -921,   -460,    205}, 0, {  -200,   1332}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  -716,   -613,      0}, 0, {   480,      0}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  -511,   -460,    205}, 0, {  1160,   1332}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  -921,   -460,   -204}, 0, {  -200,   1332}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  -511,   -460,   -204}, 0, {  1160,   1332}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{   102,   -613,      0}, 0, {   480,      0}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  -101,   -460,   -204}, 0, {  -200,   1332}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{   307,   -460,   -204}, 0, {  1160,   1332}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  -101,   -460,    205}, 0, {  -200,   1332}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{   307,   -460,    205}, 0, {  1160,   1332}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  -306,   -409,      0}, 0, {   480,      0}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  -511,   -255,   -204}, 0, {  -200,   1332}, {0x5d, 0x5d, 0x00, 0xff}}},\n    {{{  -101,   -255,   -204}, 0, {  1160,   1332}, {0x5d, 0x5d, 0x00, 0xff}}},\n};\n\n// 0x07020870 - 0x07020E80\nstatic const Gfx rr_seg7_dl_07020870[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_0701E700, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701E7F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701E8E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701E9D0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701EAB0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701EB90, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701EC80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701ED70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701EE60, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9,  5, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701EF60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701F050, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 12, 13, 10, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701F140, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  3,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 13,  9, 0x0),\n    gsSP2Triangles( 0, 14,  1, 0x0, 14, 15,  1, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701F240, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle(10, 14, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701F330, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701F430, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701F510, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701F5F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701F6E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 4,  6, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701F7D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701F8C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701F9B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701FAA0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701FB90, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701FC80, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  2,  7, 0x0),\n    gsSP1Triangle( 0,  2,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07020E80 - 0x07021100\nstatic const Gfx rr_seg7_dl_07020E80[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_0701FD20, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  4, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(11, 10, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701FE20, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  5,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP1Triangle(11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_0701FF00, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  9,  6, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07020000, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_070200F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_070201E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_070202D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_070203C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_070204B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_070205A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_070206A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles( 1, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_070207A0, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  5,  9, 0x0),\n    gsSP1Triangle(10, 11, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07021100 - 0x07021190\nconst Gfx rr_seg7_dl_07021100[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_07020870),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_07020E80),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/rr/tricky_triangles_3/collision.inc.c",
    "content": "// 0x07029FA4 - 0x0702A32C\nconst Collision rr_seg7_collision_07029FA4[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x48),\n    COL_VERTEX(-101, -306, 205),\n    COL_VERTEX(-306, -178, 0),\n    COL_VERTEX(-511, -306, 205),\n    COL_VERTEX(-101, -306, -204),\n    COL_VERTEX(-511, -306, -204),\n    COL_VERTEX(307, -511, -204),\n    COL_VERTEX(-101, -511, -204),\n    COL_VERTEX(102, -383, 0),\n    COL_VERTEX(307, -511, 205),\n    COL_VERTEX(-101, -511, 205),\n    COL_VERTEX(-511, -511, 205),\n    COL_VERTEX(-716, -383, 0),\n    COL_VERTEX(-921, -511, 205),\n    COL_VERTEX(-511, -511, -204),\n    COL_VERTEX(-921, -511, -204),\n    COL_VERTEX(717, -306, -204),\n    COL_VERTEX(717, -306, 205),\n    COL_VERTEX(307, -306, -204),\n    COL_VERTEX(1126, -101, 205),\n    COL_VERTEX(1126, -101, -204),\n    COL_VERTEX(717, -101, -204),\n    COL_VERTEX(307, 102, -204),\n    COL_VERTEX(307, 102, 205),\n    COL_VERTEX(-101, 102, -204),\n    COL_VERTEX(-101, 307, 205),\n    COL_VERTEX(-101, 307, -204),\n    COL_VERTEX(-511, 307, -204),\n    COL_VERTEX(-511, 512, -204),\n    COL_VERTEX(-921, 512, -204),\n    COL_VERTEX(-511, 512, 205),\n    COL_VERTEX(512, -178, 0),\n    COL_VERTEX(307, -306, 205),\n    COL_VERTEX(922, 26, 0),\n    COL_VERTEX(717, -101, 205),\n    COL_VERTEX(102, 230, 0),\n    COL_VERTEX(-101, 102, 205),\n    COL_VERTEX(-306, 435, 0),\n    COL_VERTEX(-511, 307, 205),\n    COL_VERTEX(-716, 640, 0),\n    COL_VERTEX(-921, 512, 205),\n    COL_VERTEX(-767, -588, -634),\n    COL_VERTEX(-665, -588, -634),\n    COL_VERTEX(-665, 461, -634),\n    COL_VERTEX(-767, 461, -634),\n    COL_VERTEX(-357, -588, -634),\n    COL_VERTEX(-255, -588, -634),\n    COL_VERTEX(-255, 256, -634),\n    COL_VERTEX(-357, 256, -634),\n    COL_VERTEX(51, -588, -634),\n    COL_VERTEX(154, 51, -634),\n    COL_VERTEX(51, 51, -634),\n    COL_VERTEX(154, -588, -634),\n    COL_VERTEX(461, -588, -634),\n    COL_VERTEX(563, -588, -634),\n    COL_VERTEX(563, -357, -634),\n    COL_VERTEX(461, -357, -634),\n    COL_VERTEX(973, -153, -634),\n    COL_VERTEX(973, -588, -613),\n    COL_VERTEX(-306, -409, 0),\n    COL_VERTEX(102, -613, 0),\n    COL_VERTEX(-716, -613, 0),\n    COL_VERTEX(512, -409, 0),\n    COL_VERTEX(922, -204, 0),\n    COL_VERTEX(102, 0, 0),\n    COL_VERTEX(-306, 205, 0),\n    COL_VERTEX(-716, 410, 0),\n    COL_VERTEX(870, -153, -634),\n    COL_VERTEX(870, -588, -634),\n    COL_VERTEX(973, -588, -634),\n    COL_VERTEX(-1023, -588, -613),\n    COL_VERTEX(-1023, -690, -613),\n    COL_VERTEX(973, -690, -613),\n    COL_TRI_INIT(SURFACE_DEFAULT, 44),\n    COL_TRI(52, 53, 54),\n    COL_TRI(40, 41, 42),\n    COL_TRI(40, 42, 43),\n    COL_TRI(44, 45, 46),\n    COL_TRI(44, 46, 47),\n    COL_TRI(48, 49, 50),\n    COL_TRI(48, 51, 49),\n    COL_TRI(2, 58, 0),\n    COL_TRI(52, 54, 55),\n    COL_TRI(56, 66, 67),\n    COL_TRI(56, 67, 68),\n    COL_TRI(57, 69, 70),\n    COL_TRI(57, 70, 71),\n    COL_TRI(0, 58, 3),\n    COL_TRI(58, 2, 4),\n    COL_TRI(58, 4, 3),\n    COL_TRI(9, 59, 8),\n    COL_TRI(59, 9, 6),\n    COL_TRI(59, 6, 5),\n    COL_TRI(8, 59, 5),\n    COL_TRI(12, 60, 10),\n    COL_TRI(10, 60, 13),\n    COL_TRI(60, 12, 14),\n    COL_TRI(60, 14, 13),\n    COL_TRI(61, 31, 17),\n    COL_TRI(31, 61, 16),\n    COL_TRI(61, 17, 15),\n    COL_TRI(16, 61, 15),\n    COL_TRI(18, 62, 19),\n    COL_TRI(33, 62, 18),\n    COL_TRI(62, 20, 19),\n    COL_TRI(62, 33, 20),\n    COL_TRI(35, 63, 22),\n    COL_TRI(63, 35, 23),\n    COL_TRI(63, 23, 21),\n    COL_TRI(22, 63, 21),\n    COL_TRI(37, 64, 24),\n    COL_TRI(24, 64, 25),\n    COL_TRI(64, 26, 25),\n    COL_TRI(64, 37, 26),\n    COL_TRI(39, 65, 29),\n    COL_TRI(65, 39, 28),\n    COL_TRI(65, 28, 27),\n    COL_TRI(29, 65, 27),\n    COL_TRI_INIT(SURFACE_VERY_SLIPPERY, 32),\n    COL_TRI(0, 1, 2),\n    COL_TRI(3, 1, 0),\n    COL_TRI(3, 4, 1),\n    COL_TRI(4, 2, 1),\n    COL_TRI(5, 6, 7),\n    COL_TRI(5, 7, 8),\n    COL_TRI(8, 7, 9),\n    COL_TRI(6, 9, 7),\n    COL_TRI(10, 11, 12),\n    COL_TRI(13, 11, 10),\n    COL_TRI(13, 14, 11),\n    COL_TRI(14, 12, 11),\n    COL_TRI(15, 30, 16),\n    COL_TRI(15, 17, 30),\n    COL_TRI(16, 30, 31),\n    COL_TRI(17, 31, 30),\n    COL_TRI(18, 32, 33),\n    COL_TRI(19, 32, 18),\n    COL_TRI(19, 20, 32),\n    COL_TRI(20, 33, 32),\n    COL_TRI(21, 23, 34),\n    COL_TRI(21, 34, 22),\n    COL_TRI(22, 34, 35),\n    COL_TRI(23, 35, 34),\n    COL_TRI(24, 36, 37),\n    COL_TRI(25, 36, 24),\n    COL_TRI(26, 37, 36),\n    COL_TRI(25, 26, 36),\n    COL_TRI(27, 38, 29),\n    COL_TRI(27, 28, 38),\n    COL_TRI(28, 39, 38),\n    COL_TRI(29, 38, 39),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/rr/tricky_triangles_3/geo.inc.c",
    "content": "// 0x0E000988\nconst GeoLayout rr_geo_000988[] = {\n    GEO_CULLING_RADIUS(1500),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, rr_seg7_dl_07023B90),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/rr/tricky_triangles_3/model.inc.c",
    "content": "// 0x07021190 - 0x07021280\nstatic const Vtx rr_seg7_vertex_07021190[] = {\n    {{{    77,    -50,   -634}, 0, {  -860,    542}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   102,      0,   -204}, 0, {  -924,    480}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   102,      0,   -634}, 0, {  -924,    480}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -741,    358,   -634}, 0, { -9036,   2584}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -741,    358,   -204}, 0, { -9036,   2584}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -716,    410,   -204}, 0, { -9100,   2520}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -716,    410,   -634}, 0, { -9100,   2520}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   896,   -255,   -634}, 0, {  6292,  -1502}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   922,   -204,   -204}, 0, {  6228,  -1564}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   922,   -204,   -634}, 0, {  6228,  -1564}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   896,   -255,   -204}, 0, {  6292,  -1502}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   486,   -460,   -634}, 0, {  4248,   -480}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   512,   -409,   -204}, 0, {  4184,   -542}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   512,   -409,   -634}, 0, {  4184,   -542}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   486,   -460,   -204}, 0, {  4248,   -480}, {0x7f, 0xac, 0x52, 0xff}}},\n};\n\n// 0x07021280 - 0x07021370\nstatic const Vtx rr_seg7_vertex_07021280[] = {\n    {{{  -332,    154,   -634}, 0, { -4948,   1562}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -332,    154,   -204}, 0, { -4948,   1562}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -306,    205,   -204}, 0, { -5012,   1498}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{    77,    -50,   -634}, 0, {  -860,    542}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{    77,    -50,   -204}, 0, {  -860,    542}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   102,      0,   -204}, 0, {  -924,    480}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -332,   -460,   -634}, 0, { -1882,   1562}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -306,   -409,   -204}, 0, { -1946,   1498}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -306,   -409,   -634}, 0, { -1946,   1498}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -332,   -460,   -204}, 0, { -1882,   1562}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -741,   -665,   -634}, 0, { -3926,   2584}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -741,   -665,   -204}, 0, { -3926,   2584}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -716,   -613,   -204}, 0, { -3990,   2520}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -716,   -613,   -634}, 0, { -3990,   2520}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -306,    205,   -634}, 0, { -5012,   1498}, {0x7f, 0xac, 0x52, 0xff}}},\n};\n\n// 0x07021370 - 0x07021460\nstatic const Vtx rr_seg7_vertex_07021370[] = {\n    {{{    77,   -665,   -634}, 0, {  2204,    542}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   102,   -613,   -204}, 0, {  2140,    480}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   102,   -613,   -634}, 0, {  2140,    480}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{    77,   -665,   -204}, 0, {  2204,    542}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{    77,    -50,   -204}, 0, {  -860,    542}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{    77,    -50,    154}, 0, {  -860,    542}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   102,      0,    154}, 0, {  -924,    480}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -741,    358,   -204}, 0, { -9036,   2584}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -716,    410,    154}, 0, { -9100,   2520}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -716,    410,   -204}, 0, { -9100,   2520}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -741,    358,    154}, 0, { -9036,   2584}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   896,   -255,   -204}, 0, {  6292,  -1502}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   896,   -255,    154}, 0, {  6292,  -1502}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   922,   -204,    154}, 0, {  6228,  -1564}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   922,   -204,   -204}, 0, {  6228,  -1564}, {0x44, 0x55, 0x22, 0xff}}},\n};\n\n// 0x07021460 - 0x07021540\nstatic const Vtx rr_seg7_vertex_07021460[] = {\n    {{{   486,   -460,   -204}, 0, {  4248,   -480}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   486,   -460,    154}, 0, {  4248,   -480}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   512,   -409,    154}, 0, {  4184,   -542}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   512,   -409,   -204}, 0, {  4184,   -542}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -332,    154,   -204}, 0, { -4948,   1562}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -306,    205,    154}, 0, { -5012,   1498}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -306,    205,   -204}, 0, { -5012,   1498}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{    77,    -50,   -204}, 0, {  -860,    542}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   102,      0,    154}, 0, {  -924,    480}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   102,      0,   -204}, 0, {  -924,    480}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -332,   -460,   -204}, 0, { -1882,   1562}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -306,   -409,    154}, 0, { -1946,   1498}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -306,   -409,   -204}, 0, { -1946,   1498}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -332,   -460,    154}, 0, { -1882,   1562}, {0x44, 0x55, 0x22, 0xff}}},\n};\n\n// 0x07021540 - 0x07021620\nstatic const Vtx rr_seg7_vertex_07021540[] = {\n    {{{  -741,   -665,   -204}, 0, { -3926,   2584}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -741,   -665,    154}, 0, { -3926,   2584}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -716,   -613,    154}, 0, { -3990,   2520}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -716,   -613,   -204}, 0, { -3990,   2520}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -332,    154,   -204}, 0, { -4948,   1562}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -332,    154,    154}, 0, { -4948,   1562}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -306,    205,    154}, 0, { -5012,   1498}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{    77,   -665,   -204}, 0, {  2204,    542}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{    77,   -665,    154}, 0, {  2204,    542}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   102,   -613,    154}, 0, {  2140,    480}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   102,   -613,   -204}, 0, {  2140,    480}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   512,   -409,    154}, 0, {  4184,   -542}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   486,   -460,    154}, 0, {  4248,   -480}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   538,   -460,    154}, 0, {  4630,   -606}, {0x54, 0x70, 0x40, 0xff}}},\n};\n\n// 0x07021620 - 0x07021710\nstatic const Vtx rr_seg7_vertex_07021620[] = {\n    {{{  -716,    410,    154}, 0, { -9100,   2520}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -741,    358,    154}, 0, { -9036,   2584}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -690,    358,    154}, 0, { -8654,   2458}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -306,    205,    154}, 0, { -5012,   1498}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -332,    154,    154}, 0, { -4948,   1562}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -281,    154,    154}, 0, { -4566,   1436}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   922,   -204,    154}, 0, {  6228,  -1564}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   896,   -255,    154}, 0, {  6292,  -1502}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   947,   -255,    154}, 0, {  6674,  -1628}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   102,      0,    154}, 0, {  -924,    480}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{    77,    -50,    154}, 0, {  -860,    542}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   128,    -50,    154}, 0, {  -478,    416}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -588,   -613}, 0, {  8528,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{ -1023,   -690,   -613}, 0, { -5906,   3288}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -690,   -613}, 0, {  9038,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n};\n\n// 0x07021710 - 0x07021800\nstatic const Vtx rr_seg7_vertex_07021710[] = {\n    {{{  -306,   -409,    154}, 0, { -1946,   1498}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -332,   -460,    154}, 0, { -1882,   1562}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -281,   -460,    154}, 0, { -1500,   1436}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -716,   -613,    154}, 0, { -3990,   2520}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -741,   -665,    154}, 0, { -3926,   2584}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -690,   -665,    154}, 0, { -3544,   2458}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   102,   -613,    154}, 0, {  2140,    480}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{    77,   -665,    154}, 0, {  2204,    542}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   128,   -665,    154}, 0, {  2586,    416}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -588,   -613}, 0, {  8528,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{ -1023,   -588,   -613}, 0, { -6418,   3288}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{ -1023,   -690,   -613}, 0, { -5906,   3288}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   461,   -588,   -634}, 0, {  4694,   -416}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   563,   -357,   -634}, 0, {  4566,   -670}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   461,   -357,   -634}, 0, {  3800,   -416}, {0x54, 0x70, 0x40, 0xff}}},\n};\n\n// 0x07021800 - 0x070218F0\nstatic const Vtx rr_seg7_vertex_07021800[] = {\n    {{{  -767,   -588,   -634}, 0, { -4502,   2648}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -665,    461,   -634}, 0, { -8716,   2394}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -767,    461,   -634}, 0, { -9484,   2648}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -665,   -588,   -634}, 0, { -3734,   2394}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -357,   -588,   -634}, 0, { -1436,   1626}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -255,   -588,   -634}, 0, {  -668,   1372}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -255,    256,   -634}, 0, { -4628,   1372}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -357,    256,   -634}, 0, { -5396,   1626}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{    51,   -588,   -634}, 0, {  1628,    606}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   154,   -588,   -634}, 0, {  2396,    352}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   154,     51,   -634}, 0, {  -540,    352}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{    51,     51,   -634}, 0, { -1308,    606}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   461,   -357,   -665}, 0, {  3800,   -416}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   563,   -588,   -665}, 0, {  5462,   -670}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   461,   -588,   -665}, 0, {  4694,   -416}, {0x54, 0x70, 0x40, 0xff}}},\n};\n\n// 0x070218F0 - 0x070219F0\nstatic const Vtx rr_seg7_vertex_070218F0[] = {\n    {{{   461,   -588,   -634}, 0, {  4694,   -416}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   563,   -588,   -634}, 0, {  5462,   -670}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   563,   -357,   -634}, 0, {  4566,   -670}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   870,   -153,   -665}, 0, {  5844,  -1438}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -153,   -665}, 0, {  6610,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -588,   -665}, 0, {  8528,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   870,   -588,   -665}, 0, {  7760,  -1438}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -690,   -665}, 0, {  9038,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{ -1125,   -690,   -665}, 0, { -6672,   3542}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{ -1125,   -588,   -665}, 0, { -7184,   3542}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   461,   -357,   -665}, 0, {  3800,   -416}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   563,   -357,   -665}, 0, {  4566,   -670}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   563,   -588,   -665}, 0, {  5462,   -670}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -153,   -634}, 0, {  6610,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   870,   -153,   -634}, 0, {  5844,  -1438}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   870,   -588,   -634}, 0, {  7760,  -1438}, {0x54, 0x70, 0x40, 0xff}}},\n};\n\n// 0x070219F0 - 0x07021AE0\nstatic const Vtx rr_seg7_vertex_070219F0[] = {\n    {{{    51,     51,   -665}, 0, { -1308,    606}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   154,     51,   -665}, 0, {  -540,    352}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   154,   -588,   -665}, 0, {  2396,    352}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{    51,   -588,   -665}, 0, {  1628,    606}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -357,    256,   -665}, 0, { -5396,   1626}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -255,   -588,   -665}, 0, {  -668,   1372}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -357,   -588,   -665}, 0, { -1436,   1626}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -255,    256,   -665}, 0, { -4628,   1372}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -767,    461,   -665}, 0, { -9484,   2648}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -665,    461,   -665}, 0, { -8716,   2394}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -665,   -588,   -665}, 0, { -3734,   2394}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -767,   -588,   -665}, 0, { -4502,   2648}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -153,   -634}, 0, {  6610,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   870,   -588,   -634}, 0, {  7760,  -1438}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -588,   -634}, 0, {  8528,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n};\n\n// 0x07021AE0 - 0x07021BD0\nstatic const Vtx rr_seg7_vertex_07021AE0[] = {\n    {{{   538,   -460,   -634}, 0, {  4630,   -606}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   486,   -460,   -204}, 0, {  4248,   -480}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   486,   -460,   -634}, 0, {  4248,   -480}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -690,    358,   -634}, 0, { -8654,   2458}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -741,    358,   -204}, 0, { -9036,   2584}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -741,    358,   -634}, 0, { -9036,   2584}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -690,    358,   -204}, 0, { -8654,   2458}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -690,    358,    154}, 0, { -8654,   2458}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -741,    358,    154}, 0, { -9036,   2584}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   947,   -255,   -634}, 0, {  6674,  -1628}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   896,   -255,   -204}, 0, {  6292,  -1502}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   896,   -255,   -634}, 0, {  6292,  -1502}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   947,   -255,   -204}, 0, {  6674,  -1628}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   896,   -255,    154}, 0, {  6292,  -1502}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   947,   -255,    154}, 0, {  6674,  -1628}, {0x1d, 0x3e, 0x0f, 0xff}}},\n};\n\n// 0x07021BD0 - 0x07021CD0\nstatic const Vtx rr_seg7_vertex_07021BD0[] = {\n    {{{  -281,   -460,   -634}, 0, { -1500,   1436}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -332,   -460,   -204}, 0, { -1882,   1562}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -332,   -460,   -634}, 0, { -1882,   1562}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   538,   -460,   -204}, 0, {  4630,   -606}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   538,   -460,    154}, 0, {  4630,   -606}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   486,   -460,    154}, 0, {  4248,   -480}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   486,   -460,   -204}, 0, {  4248,   -480}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   538,   -460,   -634}, 0, {  4630,   -606}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   128,    -50,   -634}, 0, {  -478,    416}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{    77,    -50,   -204}, 0, {  -860,    542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{    77,    -50,   -634}, 0, {  -860,    542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   128,    -50,   -204}, 0, {  -478,    416}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   128,    -50,    154}, 0, {  -478,    416}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{    77,    -50,    154}, 0, {  -860,    542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -281,   -460,   -204}, 0, { -1500,   1436}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -332,   -460,    154}, 0, { -1882,   1562}, {0x1d, 0x3e, 0x0f, 0xff}}},\n};\n\n// 0x07021CD0 - 0x07021DC0\nstatic const Vtx rr_seg7_vertex_07021CD0[] = {\n    {{{  -281,   -460,   -204}, 0, { -1500,   1436}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -281,   -460,    154}, 0, { -1500,   1436}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -332,   -460,    154}, 0, { -1882,   1562}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -690,   -665,   -634}, 0, { -3544,   2458}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -741,   -665,   -204}, 0, { -3926,   2584}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -741,   -665,   -634}, 0, { -3926,   2584}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -690,   -665,   -204}, 0, { -3544,   2458}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -741,   -665,    154}, 0, { -3926,   2584}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -690,   -665,    154}, 0, { -3544,   2458}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -281,    154,   -634}, 0, { -4566,   1436}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -281,    154,   -204}, 0, { -4566,   1436}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -332,    154,   -204}, 0, { -4948,   1562}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -332,    154,   -634}, 0, { -4948,   1562}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -332,    154,    154}, 0, { -4948,   1562}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -281,    154,    154}, 0, { -4566,   1436}, {0x1d, 0x3e, 0x0f, 0xff}}},\n};\n\n// 0x07021DC0 - 0x07021EC0\nstatic const Vtx rr_seg7_vertex_07021DC0[] = {\n    {{{   128,   -665,   -634}, 0, {  2586,    416}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   128,   -665,   -204}, 0, {  2586,    416}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{    77,   -665,   -204}, 0, {  2204,    542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{    77,   -665,   -634}, 0, {  2204,    542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   128,   -665,    154}, 0, {  2586,    416}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{    77,   -665,    154}, 0, {  2204,    542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   973,   -690,   -613}, 0, {  9038,  -1692}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{ -1125,   -690,   -613}, 0, { -6672,   3542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{ -1125,   -690,   -665}, 0, { -6672,   3542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   973,   -690,   -665}, 0, {  9038,  -1692}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   102,      0,   -634}, 0, {  -924,    480}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   128,    -50,   -204}, 0, {  -478,    416}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   128,    -50,   -634}, 0, {  -478,    416}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -716,    410,   -634}, 0, { -9100,   2520}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -716,    410,   -204}, 0, { -9100,   2520}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -690,    358,   -204}, 0, { -8654,   2458}, {0x67, 0x89, 0x51, 0xff}}},\n};\n\n// 0x07021EC0 - 0x07021FA0\nstatic const Vtx rr_seg7_vertex_07021EC0[] = {\n    {{{  -716,    410,   -634}, 0, { -9100,   2520}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -690,    358,   -204}, 0, { -8654,   2458}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -690,    358,   -634}, 0, { -8654,   2458}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   922,   -204,   -634}, 0, {  6228,  -1564}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   947,   -255,   -204}, 0, {  6674,  -1628}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   947,   -255,   -634}, 0, {  6674,  -1628}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   922,   -204,   -204}, 0, {  6228,  -1564}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   512,   -409,   -634}, 0, {  4184,   -542}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   538,   -460,   -204}, 0, {  4630,   -606}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   538,   -460,   -634}, 0, {  4630,   -606}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   512,   -409,   -204}, 0, {  4184,   -542}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -306,    205,   -634}, 0, { -5012,   1498}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -281,    154,   -204}, 0, { -4566,   1436}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -281,    154,   -634}, 0, { -4566,   1436}, {0x67, 0x89, 0x51, 0xff}}},\n};\n\n// 0x07021FA0 - 0x07022080\nstatic const Vtx rr_seg7_vertex_07021FA0[] = {\n    {{{   102,      0,   -634}, 0, {  -924,    480}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   102,      0,   -204}, 0, {  -924,    480}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   128,    -50,   -204}, 0, {  -478,    416}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -306,   -409,   -634}, 0, { -1946,   1498}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -306,   -409,   -204}, 0, { -1946,   1498}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -281,   -460,   -204}, 0, { -1500,   1436}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -281,   -460,   -634}, 0, { -1500,   1436}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -716,   -613,   -634}, 0, { -3990,   2520}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -690,   -665,   -204}, 0, { -3544,   2458}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -690,   -665,   -634}, 0, { -3544,   2458}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -716,   -613,   -204}, 0, { -3990,   2520}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -306,    205,   -634}, 0, { -5012,   1498}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -306,    205,   -204}, 0, { -5012,   1498}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -281,    154,   -204}, 0, { -4566,   1436}, {0x67, 0x89, 0x51, 0xff}}},\n};\n\n// 0x07022080 - 0x07022170\nstatic const Vtx rr_seg7_vertex_07022080[] = {\n    {{{   102,   -613,   -634}, 0, {  2140,    480}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   128,   -665,   -204}, 0, {  2586,    416}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   128,   -665,   -634}, 0, {  2586,    416}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   102,   -613,   -204}, 0, {  2140,    480}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -357,    256,   -634}, 0, { -5396,   1626}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -255,    256,   -665}, 0, { -4628,   1372}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -357,    256,   -665}, 0, { -5396,   1626}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   973,   -153,   -665}, 0, {  6610,  -1692}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   870,   -153,   -634}, 0, {  5844,  -1438}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   973,   -153,   -634}, 0, {  6610,  -1692}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   870,   -153,   -665}, 0, {  5844,  -1438}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   461,   -357,   -634}, 0, {  3800,   -416}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   563,   -357,   -665}, 0, {  4566,   -670}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   461,   -357,   -665}, 0, {  3800,   -416}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   563,   -357,   -634}, 0, {  4566,   -670}, {0x97, 0xcd, 0x97, 0xff}}},\n};\n\n// 0x07022170 - 0x07022260\nstatic const Vtx rr_seg7_vertex_07022170[] = {\n    {{{    51,     51,   -634}, 0, { -1308,    606}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   154,     51,   -665}, 0, {  -540,    352}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{    51,     51,   -665}, 0, { -1308,    606}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   154,     51,   -634}, 0, {  -540,    352}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   973,   -588,   -665}, 0, {  8528,  -1692}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{ -1125,   -588,   -665}, 0, { -7184,   3542}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{ -1125,   -588,   -613}, 0, { -7184,   3542}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -357,    256,   -634}, 0, { -5396,   1626}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -255,    256,   -634}, 0, { -4628,   1372}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -255,    256,   -665}, 0, { -4628,   1372}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -767,    461,   -634}, 0, { -9484,   2648}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -665,    461,   -634}, 0, { -8716,   2394}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -665,    461,   -665}, 0, { -8716,   2394}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -767,    461,   -665}, 0, { -9484,   2648}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   973,   -588,   -613}, 0, {  8528,  -1692}, {0x97, 0xcd, 0x97, 0xff}}},\n};\n\n// 0x07022260 - 0x07022350\nstatic const Vtx rr_seg7_vertex_07022260[] = {\n    {{{   102,      0,   -204}, 0, {  -924,    480}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   102,      0,    154}, 0, {  -924,    480}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   128,    -50,    154}, 0, {  -478,    416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -716,    410,   -204}, 0, { -9100,   2520}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -716,    410,    154}, 0, { -9100,   2520}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -690,    358,    154}, 0, { -8654,   2458}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -690,    358,   -204}, 0, { -8654,   2458}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   922,   -204,   -204}, 0, {  6228,  -1564}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   922,   -204,    154}, 0, {  6228,  -1564}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   947,   -255,    154}, 0, {  6674,  -1628}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   947,   -255,   -204}, 0, {  6674,  -1628}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   512,   -409,   -204}, 0, {  4184,   -542}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   512,   -409,    154}, 0, {  4184,   -542}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   538,   -460,    154}, 0, {  4630,   -606}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   538,   -460,   -204}, 0, {  4630,   -606}, {0x35, 0x4c, 0x2b, 0xff}}},\n};\n\n// 0x07022350 - 0x07022440\nstatic const Vtx rr_seg7_vertex_07022350[] = {\n    {{{  -306,    205,   -204}, 0, { -5012,   1498}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -306,    205,    154}, 0, { -5012,   1498}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -281,    154,    154}, 0, { -4566,   1436}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   102,      0,   -204}, 0, {  -924,    480}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   128,    -50,    154}, 0, {  -478,    416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   128,    -50,   -204}, 0, {  -478,    416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -306,   -409,   -204}, 0, { -1946,   1498}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -306,   -409,    154}, 0, { -1946,   1498}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -281,   -460,    154}, 0, { -1500,   1436}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -281,   -460,   -204}, 0, { -1500,   1436}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -716,   -613,   -204}, 0, { -3990,   2520}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -690,   -665,    154}, 0, { -3544,   2458}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -690,   -665,   -204}, 0, { -3544,   2458}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -716,   -613,    154}, 0, { -3990,   2520}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -281,    154,   -204}, 0, { -4566,   1436}, {0x35, 0x4c, 0x2b, 0xff}}},\n};\n\n// 0x07022440 - 0x07022530\nstatic const Vtx rr_seg7_vertex_07022440[] = {\n    {{{  -255,   -588,   -665}, 0, {  -668,   1372}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -255,    256,   -634}, 0, { -4628,   1372}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -255,   -588,   -634}, 0, {  -668,   1372}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   102,   -613,   -204}, 0, {  2140,    480}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   102,   -613,    154}, 0, {  2140,    480}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   128,   -665,    154}, 0, {  2586,    416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   128,   -665,   -204}, 0, {  2586,    416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   563,   -588,   -665}, 0, {  5462,   -670}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   563,   -357,   -665}, 0, {  4566,   -670}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   563,   -357,   -634}, 0, {  4566,   -670}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   563,   -588,   -634}, 0, {  5462,   -670}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   154,   -588,   -665}, 0, {  2396,    352}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   154,     51,   -665}, 0, {  -540,    352}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   154,     51,   -634}, 0, {  -540,    352}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   154,   -588,   -634}, 0, {  2396,    352}, {0x35, 0x4c, 0x2b, 0xff}}},\n};\n\n// 0x07022530 - 0x07022620\nstatic const Vtx rr_seg7_vertex_07022530[] = {\n    {{{   461,   -588,   -634}, 0, {  4694,   -416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   461,   -357,   -665}, 0, {  3800,   -416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   461,   -588,   -665}, 0, {  4694,   -416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -255,   -588,   -665}, 0, {  -668,   1372}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -255,    256,   -665}, 0, { -4628,   1372}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -255,    256,   -634}, 0, { -4628,   1372}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -665,   -588,   -665}, 0, { -3734,   2394}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -665,    461,   -634}, 0, { -8716,   2394}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -665,   -588,   -634}, 0, { -3734,   2394}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -665,    461,   -665}, 0, { -8716,   2394}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   870,   -588,   -634}, 0, {  7760,  -1438}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   870,   -153,   -634}, 0, {  5844,  -1438}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   870,   -153,   -665}, 0, {  5844,  -1438}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   870,   -588,   -665}, 0, {  7760,  -1438}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   461,   -357,   -634}, 0, {  3800,   -416}, {0x35, 0x4c, 0x2b, 0xff}}},\n};\n\n// 0x07022620 - 0x07022710\nstatic const Vtx rr_seg7_vertex_07022620[] = {\n    {{{ -1125,   -690,   -613}, 0, { -6672,   3542}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{ -1125,   -588,   -665}, 0, { -7184,   3542}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{ -1125,   -690,   -665}, 0, { -6672,   3542}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{    51,   -588,   -634}, 0, {  1628,    606}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{    51,     51,   -634}, 0, { -1308,    606}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{    51,     51,   -665}, 0, { -1308,    606}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{    51,   -588,   -665}, 0, {  1628,    606}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -357,   -588,   -634}, 0, { -1436,   1626}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -357,    256,   -634}, 0, { -5396,   1626}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -357,    256,   -665}, 0, { -5396,   1626}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -357,   -588,   -665}, 0, { -1436,   1626}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -767,   -588,   -634}, 0, { -4502,   2648}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -767,    461,   -665}, 0, { -9484,   2648}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -767,   -588,   -665}, 0, { -4502,   2648}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -767,    461,   -634}, 0, { -9484,   2648}, {0x35, 0x4c, 0x2b, 0xff}}},\n};\n\n// 0x07022710 - 0x070227B0\nstatic const Vtx rr_seg7_vertex_07022710[] = {\n    {{{   973,   -153,   -634}, 0, {  6610,  -1692}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   973,   -588,   -665}, 0, {  8528,  -1692}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   973,   -153,   -665}, 0, {  6610,  -1692}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{ -1125,   -690,   -613}, 0, { -6672,   3542}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{ -1125,   -588,   -613}, 0, { -7184,   3542}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{ -1125,   -588,   -665}, 0, { -7184,   3542}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   973,   -690,   -665}, 0, {  9038,  -1692}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   973,   -588,   -613}, 0, {  8528,  -1692}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   973,   -690,   -613}, 0, {  9038,  -1692}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   973,   -588,   -634}, 0, {  8528,  -1692}, {0x35, 0x4c, 0x2b, 0xff}}},\n};\n\n// 0x070227B0 - 0x07022890\nstatic const Vtx rr_seg7_vertex_070227B0[] = {\n    {{{  -101,   -511,   -204}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{  -101,   -511,    205}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   102,   -383,      0}, 0, {   478,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   307,   -511,   -204}, 0, {  -200,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   102,   -383,      0}, 0, {   480,      0}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   307,   -511,    205}, 0, {  1160,   1332}, {0xff, 0xd4, 0x00, 0xff}}},\n    {{{   307,    102,    205}, 0, {  1160,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{   102,    230,      0}, 0, {   480,      0}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -101,    102,    205}, 0, {  -200,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -511,    512,    205}, 0, {  1160,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -716,    640,      0}, 0, {   480,      0}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -921,    512,    205}, 0, {  -200,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -511,    512,   -204}, 0, {  1160,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -921,    512,   -204}, 0, {  -200,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n};\n\n// 0x07022890 - 0x07022990\nstatic const Vtx rr_seg7_vertex_07022890[] = {\n    {{{  -101,    307,   -204}, 0, {  1160,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -511,    307,   -204}, 0, {  -200,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -306,    435,      0}, 0, {   480,      0}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -101,    307,    205}, 0, {  1160,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -511,    307,    205}, 0, {  -200,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{   717,   -306,   -204}, 0, {  1160,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{   307,   -306,   -204}, 0, {  -200,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{   512,   -178,      0}, 0, {   480,      0}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{   307,    102,   -204}, 0, {  1160,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -101,    102,   -204}, 0, {  -200,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{   102,    230,      0}, 0, {   480,      0}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  1126,   -101,   -204}, 0, {  1160,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{   717,   -101,   -204}, 0, {  -200,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{   922,     26,      0}, 0, {   480,      0}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  1126,   -101,    205}, 0, {  1160,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{   717,   -101,    205}, 0, {  -200,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n};\n\n// 0x07022990 - 0x07022A90\nstatic const Vtx rr_seg7_vertex_07022990[] = {\n    {{{   717,   -306,    205}, 0, {  1160,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{   512,   -178,      0}, 0, {   480,      0}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{   307,   -306,    205}, 0, {  -200,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -101,   -306,   -204}, 0, {  1160,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -511,   -306,   -204}, 0, {  -200,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -306,   -178,      0}, 0, {   480,      0}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -511,   -511,   -204}, 0, {  1160,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -921,   -511,   -204}, 0, {  -200,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -716,   -383,      0}, 0, {   480,      0}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -511,   -511,    205}, 0, {  1160,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -921,   -511,    205}, 0, {  -200,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{   307,   -511,    205}, 0, {  1160,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{   102,   -383,      0}, 0, {   480,      0}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -101,   -511,    205}, 0, {  -200,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{   307,   -511,   -204}, 0, {  1160,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -101,   -511,   -204}, 0, {  -200,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n};\n\n// 0x07022A90 - 0x07022B80\nstatic const Vtx rr_seg7_vertex_07022A90[] = {\n    {{{  -101,   -306,    205}, 0, {  1160,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -306,   -178,      0}, 0, {   480,      0}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -511,   -306,    205}, 0, {  -200,   1332}, {0xe3, 0xc7, 0x13, 0xff}}},\n    {{{  -101,    102,   -204}, 0, {  -200,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -101,    102,    205}, 0, {  1160,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{   102,    230,      0}, 0, {   478,      0}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -921,    512,   -204}, 0, {  -200,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -921,    512,    205}, 0, {  1160,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -716,    640,      0}, 0, {   478,      0}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -511,    512,   -204}, 0, {  -200,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -716,    640,      0}, 0, {   480,      0}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -511,    512,    205}, 0, {  1160,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -101,    307,   -204}, 0, {  -200,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -306,    435,      0}, 0, {   480,      0}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -101,    307,    205}, 0, {  1160,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n};\n\n// 0x07022B80 - 0x07022C70\nstatic const Vtx rr_seg7_vertex_07022B80[] = {\n    {{{  -511,    307,   -204}, 0, {  -200,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -511,    307,    205}, 0, {  1160,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -306,    435,      0}, 0, {   478,      0}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{   717,   -306,   -204}, 0, {  -200,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{   512,   -178,      0}, 0, {   480,      0}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{   717,   -306,    205}, 0, {  1160,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{   307,    102,   -204}, 0, {  -200,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{   102,    230,      0}, 0, {   480,      0}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{   307,    102,    205}, 0, {  1160,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  1126,   -101,   -204}, 0, {  -200,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{   922,     26,      0}, 0, {   480,      0}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  1126,   -101,    205}, 0, {  1160,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{   717,   -101,   -204}, 0, {  -200,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{   717,   -101,    205}, 0, {  1160,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{   922,     26,      0}, 0, {   478,      0}, {0xd5, 0xbe, 0x00, 0xff}}},\n};\n\n// 0x07022C70 - 0x07022D60\nstatic const Vtx rr_seg7_vertex_07022C70[] = {\n    {{{   307,   -306,   -204}, 0, {  -200,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{   307,   -306,    205}, 0, {  1160,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{   512,   -178,      0}, 0, {   478,      0}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -511,   -511,   -204}, 0, {  -200,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -716,   -383,      0}, 0, {   480,      0}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -511,   -511,    205}, 0, {  1160,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -921,   -511,   -204}, 0, {  -200,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -921,   -511,    205}, 0, {  1160,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -716,   -383,      0}, 0, {   478,      0}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -101,   -306,   -204}, 0, {  -200,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -306,   -178,      0}, 0, {   480,      0}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -101,   -306,    205}, 0, {  1160,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -511,   -306,   -204}, 0, {  -200,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -511,   -306,    205}, 0, {  1160,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -306,   -178,      0}, 0, {   478,      0}, {0xd5, 0xbe, 0x00, 0xff}}},\n};\n\n// 0x07022D60 - 0x07022E50\nstatic const Vtx rr_seg7_vertex_07022D60[] = {\n    {{{   307,    102,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   102,      0,      0}, 0, {   480,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   307,    102,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -511,    512,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -716,    410,      0}, 0, {   480,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -511,    512,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -716,    410,      0}, 0, {   478,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -921,    512,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -921,    512,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -306,    205,      0}, 0, {   478,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -511,    307,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -511,    307,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -101,    307,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -306,    205,      0}, 0, {   480,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -101,    307,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n};\n\n// 0x07022E50 - 0x07022F40\nstatic const Vtx rr_seg7_vertex_07022E50[] = {\n    {{{   512,   -409,      0}, 0, {   478,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   307,   -306,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   307,   -306,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   102,      0,      0}, 0, {   478,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -101,    102,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -101,    102,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   922,   -204,      0}, 0, {   478,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   717,   -101,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   717,   -101,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  1126,   -101,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   922,   -204,      0}, 0, {   480,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  1126,   -101,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   717,   -306,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   512,   -409,      0}, 0, {   480,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   717,   -306,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n};\n\n// 0x07022F40 - 0x07023030\nstatic const Vtx rr_seg7_vertex_07022F40[] = {\n    {{{  -306,   -409,      0}, 0, {   478,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -511,   -306,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -511,   -306,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -716,   -613,      0}, 0, {   478,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -921,   -511,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -921,   -511,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -511,   -511,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -716,   -613,      0}, 0, {   480,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -511,   -511,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   307,   -511,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   102,   -613,      0}, 0, {   480,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   307,   -511,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   102,   -613,      0}, 0, {   478,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -101,   -511,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -101,   -511,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n};\n\n// 0x07023030 - 0x07023130\nstatic const Vtx rr_seg7_vertex_07023030[] = {\n    {{{  -101,   -306,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -306,   -409,      0}, 0, {   480,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -101,   -306,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   102,      0,      0}, 0, {   480,      0}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -101,    102,   -204}, 0, {  -200,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{   307,    102,   -204}, 0, {  1160,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -716,    410,      0}, 0, {   480,      0}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -921,    512,   -204}, 0, {  -200,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -511,    512,   -204}, 0, {  1160,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -921,    512,    205}, 0, {  -200,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -511,    512,    205}, 0, {  1160,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -511,    307,    205}, 0, {  -200,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -306,    205,      0}, 0, {   480,      0}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -101,    307,    205}, 0, {  1160,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -511,    307,   -204}, 0, {  -200,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -101,    307,   -204}, 0, {  1160,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n};\n\n// 0x07023130 - 0x07023230\nstatic const Vtx rr_seg7_vertex_07023130[] = {\n    {{{   307,   -306,    205}, 0, {  -200,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{   512,   -409,      0}, 0, {   480,      0}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{   717,   -306,    205}, 0, {  1160,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -101,    102,    205}, 0, {  -200,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{   102,      0,      0}, 0, {   480,      0}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{   307,    102,    205}, 0, {  1160,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{   717,   -101,    205}, 0, {  -200,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{   922,   -204,      0}, 0, {   480,      0}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  1126,   -101,    205}, 0, {  1160,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{   717,   -101,   -204}, 0, {  -200,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  1126,   -101,   -204}, 0, {  1160,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{   307,   -306,   -204}, 0, {  -200,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{   717,   -306,   -204}, 0, {  1160,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -511,   -306,    205}, 0, {  -200,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -306,   -409,      0}, 0, {   480,      0}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -101,   -306,    205}, 0, {  1160,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n};\n\n// 0x07023230 - 0x07023300\nstatic const Vtx rr_seg7_vertex_07023230[] = {\n    {{{  -921,   -511,    205}, 0, {  -200,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -716,   -613,      0}, 0, {   480,      0}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -511,   -511,    205}, 0, {  1160,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -921,   -511,   -204}, 0, {  -200,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -511,   -511,   -204}, 0, {  1160,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{   102,   -613,      0}, 0, {   480,      0}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -101,   -511,   -204}, 0, {  -200,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{   307,   -511,   -204}, 0, {  1160,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -101,   -511,    205}, 0, {  -200,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{   307,   -511,    205}, 0, {  1160,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -306,   -409,      0}, 0, {   480,      0}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -511,   -306,   -204}, 0, {  -200,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n    {{{  -101,   -306,   -204}, 0, {  1160,   1332}, {0x50, 0x50, 0x00, 0xff}}},\n};\n\n// 0x07023300 - 0x07023910\nstatic const Gfx rr_seg7_dl_07023300[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_07021190, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_07021280, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07021370, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07021460, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(rr_seg7_vertex_07021540, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07021620, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07021710, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07021800, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_070218F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9,  5, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_070219F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07021AE0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  8,  4, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 12, 13, 10, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07021BD0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  3,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 13,  9, 0x0),\n    gsSP2Triangles( 0, 14,  1, 0x0, 14, 15,  1, 0x0),\n    gsSPVertex(rr_seg7_vertex_07021CD0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle(10, 14, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07021DC0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07021EC0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07021FA0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07022080, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_07022170, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 4,  6, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07022260, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07022350, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07022440, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07022530, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(rr_seg7_vertex_07022620, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_07022710, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  1,  7, 0x0,  6,  7,  8, 0x0),\n    gsSP1Triangle( 0,  9,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07023910 - 0x07023B90\nstatic const Gfx rr_seg7_dl_07023910[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_070227B0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 10, 0x0),\n    gsSPVertex(rr_seg7_vertex_07022890, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07022990, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  8, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 14, 15, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_07022A90, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07022B80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07022C70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07022D60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07022E50, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07022F40, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07023030, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07023130, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles( 1, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07023230, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  5,  9, 0x0),\n    gsSP1Triangle(10, 11, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07023B90 - 0x07023C20\nconst Gfx rr_seg7_dl_07023B90[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_07023300),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_07023910),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/rr/tricky_triangles_4/collision.inc.c",
    "content": "// 0x0702A32C - 0x0702A6B4\nconst Collision rr_seg7_collision_0702A32C[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x48),\n    COL_VERTEX(-101, -357, 205),\n    COL_VERTEX(-306, -153, 0),\n    COL_VERTEX(-511, -357, 205),\n    COL_VERTEX(-101, -357, -204),\n    COL_VERTEX(-511, -357, -204),\n    COL_VERTEX(307, -562, -204),\n    COL_VERTEX(-101, -562, -204),\n    COL_VERTEX(102, -357, 0),\n    COL_VERTEX(307, -562, 205),\n    COL_VERTEX(-101, -562, 205),\n    COL_VERTEX(-511, -562, 205),\n    COL_VERTEX(-716, -357, 0),\n    COL_VERTEX(-921, -562, 205),\n    COL_VERTEX(-511, -562, -204),\n    COL_VERTEX(-921, -562, -204),\n    COL_VERTEX(717, -357, -204),\n    COL_VERTEX(717, -357, 205),\n    COL_VERTEX(307, -357, -204),\n    COL_VERTEX(1126, -153, 205),\n    COL_VERTEX(1126, -153, -204),\n    COL_VERTEX(717, -153, -204),\n    COL_VERTEX(307, 51, -204),\n    COL_VERTEX(307, 51, 205),\n    COL_VERTEX(-101, 51, -204),\n    COL_VERTEX(-101, 256, 205),\n    COL_VERTEX(-101, 256, -204),\n    COL_VERTEX(-511, 256, -204),\n    COL_VERTEX(-511, 461, -204),\n    COL_VERTEX(-921, 461, -204),\n    COL_VERTEX(-511, 461, 205),\n    COL_VERTEX(512, -153, 0),\n    COL_VERTEX(307, -357, 205),\n    COL_VERTEX(922, 51, 0),\n    COL_VERTEX(717, -153, 205),\n    COL_VERTEX(102, 256, 0),\n    COL_VERTEX(-101, 51, 205),\n    COL_VERTEX(-306, 461, 0),\n    COL_VERTEX(-511, 256, 205),\n    COL_VERTEX(-716, 666, 0),\n    COL_VERTEX(-921, 461, 205),\n    COL_VERTEX(-767, -588, -634),\n    COL_VERTEX(-665, -588, -634),\n    COL_VERTEX(-665, 461, -634),\n    COL_VERTEX(-767, 461, -634),\n    COL_VERTEX(-357, -588, -634),\n    COL_VERTEX(-255, -588, -634),\n    COL_VERTEX(-255, 256, -634),\n    COL_VERTEX(-357, 256, -634),\n    COL_VERTEX(51, -588, -634),\n    COL_VERTEX(154, 51, -634),\n    COL_VERTEX(51, 51, -634),\n    COL_VERTEX(154, -588, -634),\n    COL_VERTEX(461, -588, -634),\n    COL_VERTEX(563, -588, -634),\n    COL_VERTEX(563, -357, -634),\n    COL_VERTEX(461, -357, -634),\n    COL_VERTEX(973, -153, -634),\n    COL_VERTEX(973, -588, -613),\n    COL_VERTEX(-306, -409, 0),\n    COL_VERTEX(102, -613, 0),\n    COL_VERTEX(-716, -613, 0),\n    COL_VERTEX(512, -409, 0),\n    COL_VERTEX(922, -204, 0),\n    COL_VERTEX(102, 0, 0),\n    COL_VERTEX(-306, 205, 0),\n    COL_VERTEX(-716, 410, 0),\n    COL_VERTEX(870, -153, -634),\n    COL_VERTEX(870, -588, -634),\n    COL_VERTEX(973, -588, -634),\n    COL_VERTEX(-1023, -588, -613),\n    COL_VERTEX(-1023, -690, -613),\n    COL_VERTEX(973, -690, -613),\n    COL_TRI_INIT(SURFACE_DEFAULT, 44),\n    COL_TRI(52, 53, 54),\n    COL_TRI(40, 41, 42),\n    COL_TRI(40, 42, 43),\n    COL_TRI(44, 45, 46),\n    COL_TRI(44, 46, 47),\n    COL_TRI(48, 49, 50),\n    COL_TRI(48, 51, 49),\n    COL_TRI(2, 58, 0),\n    COL_TRI(52, 54, 55),\n    COL_TRI(56, 66, 67),\n    COL_TRI(56, 67, 68),\n    COL_TRI(57, 69, 70),\n    COL_TRI(57, 70, 71),\n    COL_TRI(0, 58, 3),\n    COL_TRI(58, 2, 4),\n    COL_TRI(58, 4, 3),\n    COL_TRI(9, 59, 8),\n    COL_TRI(59, 9, 6),\n    COL_TRI(59, 6, 5),\n    COL_TRI(8, 59, 5),\n    COL_TRI(12, 60, 10),\n    COL_TRI(10, 60, 13),\n    COL_TRI(60, 12, 14),\n    COL_TRI(60, 14, 13),\n    COL_TRI(61, 31, 17),\n    COL_TRI(31, 61, 16),\n    COL_TRI(61, 17, 15),\n    COL_TRI(16, 61, 15),\n    COL_TRI(18, 62, 19),\n    COL_TRI(33, 62, 18),\n    COL_TRI(62, 20, 19),\n    COL_TRI(62, 33, 20),\n    COL_TRI(35, 63, 22),\n    COL_TRI(63, 35, 23),\n    COL_TRI(63, 23, 21),\n    COL_TRI(22, 63, 21),\n    COL_TRI(37, 64, 24),\n    COL_TRI(24, 64, 25),\n    COL_TRI(64, 26, 25),\n    COL_TRI(64, 37, 26),\n    COL_TRI(39, 65, 29),\n    COL_TRI(65, 39, 28),\n    COL_TRI(65, 28, 27),\n    COL_TRI(29, 65, 27),\n    COL_TRI_INIT(SURFACE_VERY_SLIPPERY, 32),\n    COL_TRI(0, 1, 2),\n    COL_TRI(3, 1, 0),\n    COL_TRI(3, 4, 1),\n    COL_TRI(4, 2, 1),\n    COL_TRI(5, 6, 7),\n    COL_TRI(5, 7, 8),\n    COL_TRI(8, 7, 9),\n    COL_TRI(6, 9, 7),\n    COL_TRI(10, 11, 12),\n    COL_TRI(13, 11, 10),\n    COL_TRI(13, 14, 11),\n    COL_TRI(14, 12, 11),\n    COL_TRI(15, 30, 16),\n    COL_TRI(15, 17, 30),\n    COL_TRI(16, 30, 31),\n    COL_TRI(17, 31, 30),\n    COL_TRI(18, 32, 33),\n    COL_TRI(19, 32, 18),\n    COL_TRI(19, 20, 32),\n    COL_TRI(20, 33, 32),\n    COL_TRI(21, 23, 34),\n    COL_TRI(21, 34, 22),\n    COL_TRI(22, 34, 35),\n    COL_TRI(23, 35, 34),\n    COL_TRI(24, 36, 37),\n    COL_TRI(25, 36, 24),\n    COL_TRI(26, 37, 36),\n    COL_TRI(25, 26, 36),\n    COL_TRI(27, 38, 29),\n    COL_TRI(27, 28, 38),\n    COL_TRI(28, 39, 38),\n    COL_TRI(29, 38, 39),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/rr/tricky_triangles_4/geo.inc.c",
    "content": "// 0x0E0009A0\nconst GeoLayout rr_geo_0009A0[] = {\n    GEO_CULLING_RADIUS(1500),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, rr_seg7_dl_07026630),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/rr/tricky_triangles_4/model.inc.c",
    "content": "// 0x07023C20 - 0x07023D10\nstatic const Vtx rr_seg7_vertex_07023C20[] = {\n    {{{    77,    -50,   -634}, 0, {  -860,    542}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   102,      0,   -204}, 0, {  -924,    480}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   102,      0,   -634}, 0, {  -924,    480}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -741,    358,   -634}, 0, { -9036,   2584}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -741,    358,   -204}, 0, { -9036,   2584}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -716,    410,   -204}, 0, { -9100,   2520}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -716,    410,   -634}, 0, { -9100,   2520}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   896,   -255,   -634}, 0, {  6292,  -1502}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   922,   -204,   -204}, 0, {  6228,  -1564}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   922,   -204,   -634}, 0, {  6228,  -1564}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   896,   -255,   -204}, 0, {  6292,  -1502}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   486,   -460,   -634}, 0, {  4248,   -480}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   512,   -409,   -204}, 0, {  4184,   -542}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   512,   -409,   -634}, 0, {  4184,   -542}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   486,   -460,   -204}, 0, {  4248,   -480}, {0x7f, 0xac, 0x52, 0xff}}},\n};\n\n// 0x07023D10 - 0x07023E00\nstatic const Vtx rr_seg7_vertex_07023D10[] = {\n    {{{  -332,    154,   -634}, 0, { -4948,   1562}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -332,    154,   -204}, 0, { -4948,   1562}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -306,    205,   -204}, 0, { -5012,   1498}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{    77,    -50,   -634}, 0, {  -860,    542}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{    77,    -50,   -204}, 0, {  -860,    542}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   102,      0,   -204}, 0, {  -924,    480}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -332,   -460,   -634}, 0, { -1882,   1562}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -306,   -409,   -204}, 0, { -1946,   1498}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -306,   -409,   -634}, 0, { -1946,   1498}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -332,   -460,   -204}, 0, { -1882,   1562}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -741,   -665,   -634}, 0, { -3926,   2584}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -741,   -665,   -204}, 0, { -3926,   2584}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -716,   -613,   -204}, 0, { -3990,   2520}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -716,   -613,   -634}, 0, { -3990,   2520}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -306,    205,   -634}, 0, { -5012,   1498}, {0x7f, 0xac, 0x52, 0xff}}},\n};\n\n// 0x07023E00 - 0x07023EF0\nstatic const Vtx rr_seg7_vertex_07023E00[] = {\n    {{{    77,   -665,   -634}, 0, {  2204,    542}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   102,   -613,   -204}, 0, {  2140,    480}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   102,   -613,   -634}, 0, {  2140,    480}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{    77,   -665,   -204}, 0, {  2204,    542}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{    77,    -50,   -204}, 0, {  -860,    542}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{    77,    -50,    154}, 0, {  -860,    542}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   102,      0,    154}, 0, {  -924,    480}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -741,    358,   -204}, 0, { -9036,   2584}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -716,    410,    154}, 0, { -9100,   2520}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -716,    410,   -204}, 0, { -9100,   2520}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -741,    358,    154}, 0, { -9036,   2584}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   896,   -255,   -204}, 0, {  6292,  -1502}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   896,   -255,    154}, 0, {  6292,  -1502}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   922,   -204,    154}, 0, {  6228,  -1564}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   922,   -204,   -204}, 0, {  6228,  -1564}, {0x44, 0x55, 0x22, 0xff}}},\n};\n\n// 0x07023EF0 - 0x07023FD0\nstatic const Vtx rr_seg7_vertex_07023EF0[] = {\n    {{{   486,   -460,   -204}, 0, {  4248,   -480}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   486,   -460,    154}, 0, {  4248,   -480}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   512,   -409,    154}, 0, {  4184,   -542}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   512,   -409,   -204}, 0, {  4184,   -542}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -332,    154,   -204}, 0, { -4948,   1562}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -306,    205,    154}, 0, { -5012,   1498}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -306,    205,   -204}, 0, { -5012,   1498}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{    77,    -50,   -204}, 0, {  -860,    542}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   102,      0,    154}, 0, {  -924,    480}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   102,      0,   -204}, 0, {  -924,    480}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -332,   -460,   -204}, 0, { -1882,   1562}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -306,   -409,    154}, 0, { -1946,   1498}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -306,   -409,   -204}, 0, { -1946,   1498}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -332,   -460,    154}, 0, { -1882,   1562}, {0x44, 0x55, 0x22, 0xff}}},\n};\n\n// 0x07023FD0 - 0x070240B0\nstatic const Vtx rr_seg7_vertex_07023FD0[] = {\n    {{{  -741,   -665,   -204}, 0, { -3926,   2584}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -741,   -665,    154}, 0, { -3926,   2584}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -716,   -613,    154}, 0, { -3990,   2520}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -716,   -613,   -204}, 0, { -3990,   2520}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -332,    154,   -204}, 0, { -4948,   1562}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -332,    154,    154}, 0, { -4948,   1562}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -306,    205,    154}, 0, { -5012,   1498}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{    77,   -665,   -204}, 0, {  2204,    542}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{    77,   -665,    154}, 0, {  2204,    542}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   102,   -613,    154}, 0, {  2140,    480}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   102,   -613,   -204}, 0, {  2140,    480}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   512,   -409,    154}, 0, {  4184,   -542}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   486,   -460,    154}, 0, {  4248,   -480}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   538,   -460,    154}, 0, {  4630,   -606}, {0x54, 0x70, 0x40, 0xff}}},\n};\n\n// 0x070240B0 - 0x070241A0\nstatic const Vtx rr_seg7_vertex_070240B0[] = {\n    {{{  -716,    410,    154}, 0, { -9100,   2520}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -741,    358,    154}, 0, { -9036,   2584}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -690,    358,    154}, 0, { -8654,   2458}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -306,    205,    154}, 0, { -5012,   1498}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -332,    154,    154}, 0, { -4948,   1562}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -281,    154,    154}, 0, { -4566,   1436}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   922,   -204,    154}, 0, {  6228,  -1564}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   896,   -255,    154}, 0, {  6292,  -1502}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   947,   -255,    154}, 0, {  6674,  -1628}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   102,      0,    154}, 0, {  -924,    480}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{    77,    -50,    154}, 0, {  -860,    542}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   128,    -50,    154}, 0, {  -478,    416}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -588,   -613}, 0, {  8528,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{ -1023,   -690,   -613}, 0, { -5906,   3288}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -690,   -613}, 0, {  9038,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n};\n\n// 0x070241A0 - 0x07024290\nstatic const Vtx rr_seg7_vertex_070241A0[] = {\n    {{{  -306,   -409,    154}, 0, { -1946,   1498}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -332,   -460,    154}, 0, { -1882,   1562}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -281,   -460,    154}, 0, { -1500,   1436}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -716,   -613,    154}, 0, { -3990,   2520}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -741,   -665,    154}, 0, { -3926,   2584}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -690,   -665,    154}, 0, { -3544,   2458}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   102,   -613,    154}, 0, {  2140,    480}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{    77,   -665,    154}, 0, {  2204,    542}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   128,   -665,    154}, 0, {  2586,    416}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -588,   -613}, 0, {  8528,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{ -1023,   -588,   -613}, 0, { -6418,   3288}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{ -1023,   -690,   -613}, 0, { -5906,   3288}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   461,   -588,   -634}, 0, {  4694,   -416}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   563,   -357,   -634}, 0, {  4566,   -670}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   461,   -357,   -634}, 0, {  3800,   -416}, {0x54, 0x70, 0x40, 0xff}}},\n};\n\n// 0x07024290 - 0x07024380\nstatic const Vtx rr_seg7_vertex_07024290[] = {\n    {{{  -767,   -588,   -634}, 0, { -4502,   2648}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -665,    461,   -634}, 0, { -8716,   2394}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -767,    461,   -634}, 0, { -9484,   2648}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -665,   -588,   -634}, 0, { -3734,   2394}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -357,   -588,   -634}, 0, { -1436,   1626}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -255,   -588,   -634}, 0, {  -668,   1372}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -255,    256,   -634}, 0, { -4628,   1372}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -357,    256,   -634}, 0, { -5396,   1626}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{    51,   -588,   -634}, 0, {  1628,    606}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   154,   -588,   -634}, 0, {  2396,    352}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   154,     51,   -634}, 0, {  -540,    352}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{    51,     51,   -634}, 0, { -1308,    606}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   461,   -357,   -665}, 0, {  3800,   -416}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   563,   -588,   -665}, 0, {  5462,   -670}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   461,   -588,   -665}, 0, {  4694,   -416}, {0x54, 0x70, 0x40, 0xff}}},\n};\n\n// 0x07024380 - 0x07024480\nstatic const Vtx rr_seg7_vertex_07024380[] = {\n    {{{   461,   -588,   -634}, 0, {  4694,   -416}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   563,   -588,   -634}, 0, {  5462,   -670}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   563,   -357,   -634}, 0, {  4566,   -670}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   870,   -153,   -665}, 0, {  5844,  -1438}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -153,   -665}, 0, {  6610,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -588,   -665}, 0, {  8528,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   870,   -588,   -665}, 0, {  7760,  -1438}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -690,   -665}, 0, {  9038,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{ -1125,   -690,   -665}, 0, { -6672,   3542}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{ -1125,   -588,   -665}, 0, { -7184,   3542}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   461,   -357,   -665}, 0, {  3800,   -416}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   563,   -357,   -665}, 0, {  4566,   -670}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   563,   -588,   -665}, 0, {  5462,   -670}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -153,   -634}, 0, {  6610,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   870,   -153,   -634}, 0, {  5844,  -1438}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   870,   -588,   -634}, 0, {  7760,  -1438}, {0x54, 0x70, 0x40, 0xff}}},\n};\n\n// 0x07024480 - 0x07024570\nstatic const Vtx rr_seg7_vertex_07024480[] = {\n    {{{    51,     51,   -665}, 0, { -1308,    606}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   154,     51,   -665}, 0, {  -540,    352}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   154,   -588,   -665}, 0, {  2396,    352}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{    51,   -588,   -665}, 0, {  1628,    606}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -357,    256,   -665}, 0, { -5396,   1626}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -255,   -588,   -665}, 0, {  -668,   1372}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -357,   -588,   -665}, 0, { -1436,   1626}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -255,    256,   -665}, 0, { -4628,   1372}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -767,    461,   -665}, 0, { -9484,   2648}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -665,    461,   -665}, 0, { -8716,   2394}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -665,   -588,   -665}, 0, { -3734,   2394}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -767,   -588,   -665}, 0, { -4502,   2648}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -153,   -634}, 0, {  6610,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   870,   -588,   -634}, 0, {  7760,  -1438}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -588,   -634}, 0, {  8528,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n};\n\n// 0x07024570 - 0x07024660\nstatic const Vtx rr_seg7_vertex_07024570[] = {\n    {{{   538,   -460,   -634}, 0, {  4630,   -606}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   486,   -460,   -204}, 0, {  4248,   -480}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   486,   -460,   -634}, 0, {  4248,   -480}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -690,    358,   -634}, 0, { -8654,   2458}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -741,    358,   -204}, 0, { -9036,   2584}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -741,    358,   -634}, 0, { -9036,   2584}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -690,    358,   -204}, 0, { -8654,   2458}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -741,    358,    154}, 0, { -9036,   2584}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -690,    358,    154}, 0, { -8654,   2458}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   947,   -255,   -634}, 0, {  6674,  -1628}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   896,   -255,   -204}, 0, {  6292,  -1502}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   896,   -255,   -634}, 0, {  6292,  -1502}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   947,   -255,   -204}, 0, {  6674,  -1628}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   896,   -255,    154}, 0, {  6292,  -1502}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   947,   -255,    154}, 0, {  6674,  -1628}, {0x1d, 0x3e, 0x0f, 0xff}}},\n};\n\n// 0x07024660 - 0x07024760\nstatic const Vtx rr_seg7_vertex_07024660[] = {\n    {{{  -281,   -460,   -634}, 0, { -1500,   1436}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -332,   -460,   -204}, 0, { -1882,   1562}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -332,   -460,   -634}, 0, { -1882,   1562}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   538,   -460,   -204}, 0, {  4630,   -606}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   538,   -460,    154}, 0, {  4630,   -606}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   486,   -460,    154}, 0, {  4248,   -480}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   486,   -460,   -204}, 0, {  4248,   -480}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   538,   -460,   -634}, 0, {  4630,   -606}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   128,    -50,   -634}, 0, {  -478,    416}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{    77,    -50,   -204}, 0, {  -860,    542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{    77,    -50,   -634}, 0, {  -860,    542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   128,    -50,   -204}, 0, {  -478,    416}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   128,    -50,    154}, 0, {  -478,    416}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{    77,    -50,    154}, 0, {  -860,    542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -281,   -460,   -204}, 0, { -1500,   1436}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -332,   -460,    154}, 0, { -1882,   1562}, {0x1d, 0x3e, 0x0f, 0xff}}},\n};\n\n// 0x07024760 - 0x07024850\nstatic const Vtx rr_seg7_vertex_07024760[] = {\n    {{{  -281,   -460,   -204}, 0, { -1500,   1436}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -281,   -460,    154}, 0, { -1500,   1436}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -332,   -460,    154}, 0, { -1882,   1562}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -690,   -665,   -634}, 0, { -3544,   2458}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -741,   -665,   -204}, 0, { -3926,   2584}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -741,   -665,   -634}, 0, { -3926,   2584}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -690,   -665,   -204}, 0, { -3544,   2458}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -741,   -665,    154}, 0, { -3926,   2584}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -690,   -665,    154}, 0, { -3544,   2458}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -281,    154,   -634}, 0, { -4566,   1436}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -281,    154,   -204}, 0, { -4566,   1436}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -332,    154,   -204}, 0, { -4948,   1562}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -332,    154,   -634}, 0, { -4948,   1562}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -332,    154,    154}, 0, { -4948,   1562}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -281,    154,    154}, 0, { -4566,   1436}, {0x1d, 0x3e, 0x0f, 0xff}}},\n};\n\n// 0x07024850 - 0x07024950\nstatic const Vtx rr_seg7_vertex_07024850[] = {\n    {{{   128,   -665,   -634}, 0, {  2586,    416}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   128,   -665,   -204}, 0, {  2586,    416}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{    77,   -665,   -204}, 0, {  2204,    542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{    77,   -665,   -634}, 0, {  2204,    542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   128,   -665,    154}, 0, {  2586,    416}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{    77,   -665,    154}, 0, {  2204,    542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   973,   -690,   -613}, 0, {  9038,  -1692}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{ -1125,   -690,   -613}, 0, { -6672,   3542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{ -1125,   -690,   -665}, 0, { -6672,   3542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   973,   -690,   -665}, 0, {  9038,  -1692}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   102,      0,   -634}, 0, {  -924,    480}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   128,    -50,   -204}, 0, {  -478,    416}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   128,    -50,   -634}, 0, {  -478,    416}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -716,    410,   -634}, 0, { -9100,   2520}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -716,    410,   -204}, 0, { -9100,   2520}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -690,    358,   -204}, 0, { -8654,   2458}, {0x67, 0x89, 0x51, 0xff}}},\n};\n\n// 0x07024950 - 0x07024A30\nstatic const Vtx rr_seg7_vertex_07024950[] = {\n    {{{  -716,    410,   -634}, 0, { -9100,   2520}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -690,    358,   -204}, 0, { -8654,   2458}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -690,    358,   -634}, 0, { -8654,   2458}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   922,   -204,   -634}, 0, {  6228,  -1564}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   947,   -255,   -204}, 0, {  6674,  -1628}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   947,   -255,   -634}, 0, {  6674,  -1628}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   922,   -204,   -204}, 0, {  6228,  -1564}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   512,   -409,   -634}, 0, {  4184,   -542}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   538,   -460,   -204}, 0, {  4630,   -606}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   538,   -460,   -634}, 0, {  4630,   -606}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   512,   -409,   -204}, 0, {  4184,   -542}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -306,    205,   -634}, 0, { -5012,   1498}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -306,    205,   -204}, 0, { -5012,   1498}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -281,    154,   -204}, 0, { -4566,   1436}, {0x67, 0x89, 0x51, 0xff}}},\n};\n\n// 0x07024A30 - 0x07024B10\nstatic const Vtx rr_seg7_vertex_07024A30[] = {\n    {{{   102,      0,   -634}, 0, {  -924,    480}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   102,      0,   -204}, 0, {  -924,    480}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   128,    -50,   -204}, 0, {  -478,    416}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -306,   -409,   -634}, 0, { -1946,   1498}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -306,   -409,   -204}, 0, { -1946,   1498}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -281,   -460,   -204}, 0, { -1500,   1436}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -281,   -460,   -634}, 0, { -1500,   1436}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -716,   -613,   -634}, 0, { -3990,   2520}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -716,   -613,   -204}, 0, { -3990,   2520}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -690,   -665,   -204}, 0, { -3544,   2458}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -690,   -665,   -634}, 0, { -3544,   2458}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -306,    205,   -634}, 0, { -5012,   1498}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -281,    154,   -204}, 0, { -4566,   1436}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -281,    154,   -634}, 0, { -4566,   1436}, {0x67, 0x89, 0x51, 0xff}}},\n};\n\n// 0x07024B10 - 0x07024C00\nstatic const Vtx rr_seg7_vertex_07024B10[] = {\n    {{{   102,   -613,   -634}, 0, {  2140,    480}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   102,   -613,   -204}, 0, {  2140,    480}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   128,   -665,   -204}, 0, {  2586,    416}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   128,   -665,   -634}, 0, {  2586,    416}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -357,    256,   -634}, 0, { -5396,   1626}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -255,    256,   -665}, 0, { -4628,   1372}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -357,    256,   -665}, 0, { -5396,   1626}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   973,   -153,   -665}, 0, {  6610,  -1692}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   870,   -153,   -634}, 0, {  5844,  -1438}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   973,   -153,   -634}, 0, {  6610,  -1692}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   870,   -153,   -665}, 0, {  5844,  -1438}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   461,   -357,   -634}, 0, {  3800,   -416}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   563,   -357,   -665}, 0, {  4566,   -670}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   461,   -357,   -665}, 0, {  3800,   -416}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   563,   -357,   -634}, 0, {  4566,   -670}, {0x97, 0xcd, 0x97, 0xff}}},\n};\n\n// 0x07024C00 - 0x07024CF0\nstatic const Vtx rr_seg7_vertex_07024C00[] = {\n    {{{    51,     51,   -634}, 0, { -1308,    606}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   154,     51,   -634}, 0, {  -540,    352}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   154,     51,   -665}, 0, {  -540,    352}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{    51,     51,   -665}, 0, { -1308,    606}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   973,   -588,   -665}, 0, {  8528,  -1692}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{ -1125,   -588,   -665}, 0, { -7184,   3542}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{ -1125,   -588,   -613}, 0, { -7184,   3542}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -357,    256,   -634}, 0, { -5396,   1626}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -255,    256,   -634}, 0, { -4628,   1372}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -255,    256,   -665}, 0, { -4628,   1372}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -767,    461,   -634}, 0, { -9484,   2648}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -665,    461,   -634}, 0, { -8716,   2394}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -665,    461,   -665}, 0, { -8716,   2394}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -767,    461,   -665}, 0, { -9484,   2648}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   973,   -588,   -613}, 0, {  8528,  -1692}, {0x97, 0xcd, 0x97, 0xff}}},\n};\n\n// 0x07024CF0 - 0x07024DE0\nstatic const Vtx rr_seg7_vertex_07024CF0[] = {\n    {{{   102,      0,   -204}, 0, {  -924,    480}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   128,    -50,    154}, 0, {  -478,    416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   128,    -50,   -204}, 0, {  -478,    416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -716,    410,   -204}, 0, { -9100,   2520}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -690,    358,    154}, 0, { -8654,   2458}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -690,    358,   -204}, 0, { -8654,   2458}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -716,    410,    154}, 0, { -9100,   2520}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   922,   -204,   -204}, 0, {  6228,  -1564}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   947,   -255,    154}, 0, {  6674,  -1628}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   947,   -255,   -204}, 0, {  6674,  -1628}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   922,   -204,    154}, 0, {  6228,  -1564}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   512,   -409,   -204}, 0, {  4184,   -542}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   512,   -409,    154}, 0, {  4184,   -542}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   538,   -460,    154}, 0, {  4630,   -606}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   538,   -460,   -204}, 0, {  4630,   -606}, {0x35, 0x4c, 0x2b, 0xff}}},\n};\n\n// 0x07024DE0 - 0x07024ED0\nstatic const Vtx rr_seg7_vertex_07024DE0[] = {\n    {{{  -306,    205,   -204}, 0, { -5012,   1498}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -281,    154,    154}, 0, { -4566,   1436}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -281,    154,   -204}, 0, { -4566,   1436}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   102,      0,   -204}, 0, {  -924,    480}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   102,      0,    154}, 0, {  -924,    480}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   128,    -50,    154}, 0, {  -478,    416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -306,   -409,   -204}, 0, { -1946,   1498}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -306,   -409,    154}, 0, { -1946,   1498}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -281,   -460,    154}, 0, { -1500,   1436}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -281,   -460,   -204}, 0, { -1500,   1436}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -716,   -613,   -204}, 0, { -3990,   2520}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -690,   -665,    154}, 0, { -3544,   2458}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -690,   -665,   -204}, 0, { -3544,   2458}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -716,   -613,    154}, 0, { -3990,   2520}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -306,    205,    154}, 0, { -5012,   1498}, {0x35, 0x4c, 0x2b, 0xff}}},\n};\n\n// 0x07024ED0 - 0x07024FC0\nstatic const Vtx rr_seg7_vertex_07024ED0[] = {\n    {{{  -255,   -588,   -665}, 0, {  -668,   1372}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -255,    256,   -634}, 0, { -4628,   1372}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -255,   -588,   -634}, 0, {  -668,   1372}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   102,   -613,   -204}, 0, {  2140,    480}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   102,   -613,    154}, 0, {  2140,    480}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   128,   -665,    154}, 0, {  2586,    416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   128,   -665,   -204}, 0, {  2586,    416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   563,   -588,   -665}, 0, {  5462,   -670}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   563,   -357,   -665}, 0, {  4566,   -670}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   563,   -357,   -634}, 0, {  4566,   -670}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   563,   -588,   -634}, 0, {  5462,   -670}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   154,   -588,   -665}, 0, {  2396,    352}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   154,     51,   -665}, 0, {  -540,    352}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   154,     51,   -634}, 0, {  -540,    352}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   154,   -588,   -634}, 0, {  2396,    352}, {0x35, 0x4c, 0x2b, 0xff}}},\n};\n\n// 0x07024FC0 - 0x070250B0\nstatic const Vtx rr_seg7_vertex_07024FC0[] = {\n    {{{   461,   -588,   -634}, 0, {  4694,   -416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   461,   -357,   -634}, 0, {  3800,   -416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   461,   -357,   -665}, 0, {  3800,   -416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -255,   -588,   -665}, 0, {  -668,   1372}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -255,    256,   -665}, 0, { -4628,   1372}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -255,    256,   -634}, 0, { -4628,   1372}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -665,   -588,   -665}, 0, { -3734,   2394}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -665,    461,   -665}, 0, { -8716,   2394}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -665,    461,   -634}, 0, { -8716,   2394}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -665,   -588,   -634}, 0, { -3734,   2394}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   870,   -588,   -634}, 0, {  7760,  -1438}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   870,   -153,   -634}, 0, {  5844,  -1438}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   870,   -153,   -665}, 0, {  5844,  -1438}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   870,   -588,   -665}, 0, {  7760,  -1438}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   461,   -588,   -665}, 0, {  4694,   -416}, {0x35, 0x4c, 0x2b, 0xff}}},\n};\n\n// 0x070250B0 - 0x070251A0\nstatic const Vtx rr_seg7_vertex_070250B0[] = {\n    {{{ -1125,   -690,   -613}, 0, { -6672,   3542}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{ -1125,   -588,   -613}, 0, { -7184,   3542}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{ -1125,   -588,   -665}, 0, { -7184,   3542}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{    51,   -588,   -634}, 0, {  1628,    606}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{    51,     51,   -634}, 0, { -1308,    606}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{    51,     51,   -665}, 0, { -1308,    606}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{    51,   -588,   -665}, 0, {  1628,    606}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -357,   -588,   -634}, 0, { -1436,   1626}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -357,    256,   -665}, 0, { -5396,   1626}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -357,   -588,   -665}, 0, { -1436,   1626}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -357,    256,   -634}, 0, { -5396,   1626}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -767,   -588,   -634}, 0, { -4502,   2648}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -767,    461,   -665}, 0, { -9484,   2648}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -767,   -588,   -665}, 0, { -4502,   2648}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -767,    461,   -634}, 0, { -9484,   2648}, {0x35, 0x4c, 0x2b, 0xff}}},\n};\n\n// 0x070251A0 - 0x07025240\nstatic const Vtx rr_seg7_vertex_070251A0[] = {\n    {{{   973,   -153,   -634}, 0, {  6610,  -1692}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   973,   -588,   -634}, 0, {  8528,  -1692}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   973,   -588,   -665}, 0, {  8528,  -1692}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{ -1125,   -690,   -613}, 0, { -6672,   3542}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{ -1125,   -588,   -665}, 0, { -7184,   3542}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{ -1125,   -690,   -665}, 0, { -6672,   3542}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   973,   -690,   -665}, 0, {  9038,  -1692}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   973,   -588,   -613}, 0, {  8528,  -1692}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   973,   -690,   -613}, 0, {  9038,  -1692}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   973,   -153,   -665}, 0, {  6610,  -1692}, {0x35, 0x4c, 0x2b, 0xff}}},\n};\n\n// 0x07025240 - 0x07025340\nstatic const Vtx rr_seg7_vertex_07025240[] = {\n    {{{   307,     51,    205}, 0, {  1160,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{   102,    256,      0}, 0, {   480,      0}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -101,     51,    205}, 0, {  -200,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -511,    461,    205}, 0, {  1160,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -716,    666,      0}, 0, {   480,      0}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -921,    461,    205}, 0, {  -200,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -511,    461,   -204}, 0, {  1160,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -921,    461,   -204}, 0, {  -200,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -101,    256,   -204}, 0, {  1160,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -511,    256,   -204}, 0, {  -200,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -306,    461,      0}, 0, {   480,      0}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -101,    256,    205}, 0, {  1160,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -511,    256,    205}, 0, {  -200,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{   717,   -357,   -204}, 0, {  1160,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{   307,   -357,   -204}, 0, {  -200,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{   512,   -153,      0}, 0, {   480,      0}, {0xd5, 0xbe, 0x00, 0xff}}},\n};\n\n// 0x07025340 - 0x07025420\nstatic const Vtx rr_seg7_vertex_07025340[] = {\n    {{{   307,     51,   -204}, 0, {  1160,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -101,     51,   -204}, 0, {  -200,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{   102,    256,      0}, 0, {   480,      0}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  1126,   -153,   -204}, 0, {  1160,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{   717,   -153,   -204}, 0, {  -200,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{   922,     51,      0}, 0, {   480,      0}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  1126,   -153,    205}, 0, {  1160,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{   717,   -153,    205}, 0, {  -200,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{   717,   -357,    205}, 0, {  1160,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{   512,   -153,      0}, 0, {   480,      0}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{   307,   -357,    205}, 0, {  -200,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -101,   -357,   -204}, 0, {  1160,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -511,   -357,   -204}, 0, {  -200,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -306,   -153,      0}, 0, {   480,      0}, {0xd5, 0xbe, 0x00, 0xff}}},\n};\n\n// 0x07025420 - 0x07025520\nstatic const Vtx rr_seg7_vertex_07025420[] = {\n    {{{  -511,   -562,   -204}, 0, {  1160,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -921,   -562,   -204}, 0, {  -200,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -716,   -357,      0}, 0, {   480,      0}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -511,   -562,    205}, 0, {  1160,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -921,   -562,    205}, 0, {  -200,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{   307,   -562,    205}, 0, {  1160,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{   102,   -357,      0}, 0, {   480,      0}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -101,   -562,    205}, 0, {  -200,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{   307,   -562,   -204}, 0, {  1160,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -101,   -562,   -204}, 0, {  -200,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -101,   -357,    205}, 0, {  1160,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -306,   -153,      0}, 0, {   480,      0}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{  -511,   -357,    205}, 0, {  -200,   1332}, {0xd5, 0xbe, 0x00, 0xff}}},\n    {{{   307,     51,    205}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   102,      0,      0}, 0, {   480,      0}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   307,     51,   -204}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n};\n\n// 0x07025520 - 0x07025610\nstatic const Vtx rr_seg7_vertex_07025520[] = {\n    {{{  -511,    461,    205}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -716,    410,      0}, 0, {   480,      0}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -511,    461,   -204}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -716,    410,      0}, 0, {   478,      0}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -921,    461,    205}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -921,    461,   -204}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -306,    205,      0}, 0, {   478,      0}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -511,    256,    205}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -511,    256,   -204}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -101,    256,    205}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -306,    205,      0}, 0, {   480,      0}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -101,    256,   -204}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   512,   -409,      0}, 0, {   478,      0}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   307,   -357,    205}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   307,   -357,   -204}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n};\n\n// 0x07025610 - 0x07025700\nstatic const Vtx rr_seg7_vertex_07025610[] = {\n    {{{   102,      0,      0}, 0, {   478,      0}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -101,     51,    205}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -101,     51,   -204}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   922,   -204,      0}, 0, {   478,      0}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   717,   -153,    205}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   717,   -153,   -204}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  1126,   -153,    205}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   922,   -204,      0}, 0, {   480,      0}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  1126,   -153,   -204}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   717,   -357,    205}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   512,   -409,      0}, 0, {   480,      0}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   717,   -357,   -204}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -306,   -409,      0}, 0, {   478,      0}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -511,   -357,    205}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -511,   -357,   -204}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n};\n\n// 0x07025700 - 0x070257F0\nstatic const Vtx rr_seg7_vertex_07025700[] = {\n    {{{  -716,   -613,      0}, 0, {   478,      0}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -921,   -562,    205}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -921,   -562,   -204}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -511,   -562,    205}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -716,   -613,      0}, 0, {   480,      0}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -511,   -562,   -204}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   307,   -562,    205}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   102,   -613,      0}, 0, {   480,      0}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   307,   -562,   -204}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   102,   -613,      0}, 0, {   478,      0}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -101,   -562,    205}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -101,   -562,   -204}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -101,   -357,    205}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -306,   -409,      0}, 0, {   480,      0}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -101,   -357,   -204}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n};\n\n// 0x070257F0 - 0x070258F0\nstatic const Vtx rr_seg7_vertex_070257F0[] = {\n    {{{   102,      0,      0}, 0, {   480,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -101,     51,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   307,     51,   -204}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -716,    410,      0}, 0, {   480,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -921,    461,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -511,    461,   -204}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -921,    461,    205}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -511,    461,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -511,    256,    205}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -306,    205,      0}, 0, {   480,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -101,    256,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -511,    256,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -101,    256,   -204}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   307,   -357,    205}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   512,   -409,      0}, 0, {   480,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   717,   -357,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n};\n\n// 0x070258F0 - 0x070259D0\nstatic const Vtx rr_seg7_vertex_070258F0[] = {\n    {{{  -101,     51,    205}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   102,      0,      0}, 0, {   480,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   307,     51,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   717,   -153,    205}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   922,   -204,      0}, 0, {   480,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  1126,   -153,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   717,   -153,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  1126,   -153,   -204}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   512,   -409,      0}, 0, {   480,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   307,   -357,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   717,   -357,   -204}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -511,   -357,    205}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -306,   -409,      0}, 0, {   480,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -101,   -357,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n};\n\n// 0x070259D0 - 0x07025AD0\nstatic const Vtx rr_seg7_vertex_070259D0[] = {\n    {{{  -921,   -562,    205}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -716,   -613,      0}, 0, {   480,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -511,   -562,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -921,   -562,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -511,   -562,   -204}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   102,   -613,      0}, 0, {   480,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -101,   -562,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   307,   -562,   -204}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -101,   -562,    205}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{   307,   -562,    205}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -306,   -409,      0}, 0, {   480,      0}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -511,   -357,   -204}, 0, {  -200,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -101,   -357,   -204}, 0, {  1160,   1332}, {0x43, 0x43, 0x00, 0xff}}},\n    {{{  -101,     51,   -204}, 0, {  -200,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -101,     51,    205}, 0, {  1160,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{   102,    256,      0}, 0, {   478,      0}, {0xcc, 0xb7, 0x00, 0xff}}},\n};\n\n// 0x07025AD0 - 0x07025BC0\nstatic const Vtx rr_seg7_vertex_07025AD0[] = {\n    {{{  -921,    461,   -204}, 0, {  -200,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -921,    461,    205}, 0, {  1160,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -716,    666,      0}, 0, {   478,      0}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -511,    461,   -204}, 0, {  -200,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -716,    666,      0}, 0, {   480,      0}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -511,    461,    205}, 0, {  1160,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -101,    256,   -204}, 0, {  -200,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -306,    461,      0}, 0, {   480,      0}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -101,    256,    205}, 0, {  1160,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -511,    256,   -204}, 0, {  -200,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -511,    256,    205}, 0, {  1160,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -306,    461,      0}, 0, {   478,      0}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{   717,   -357,   -204}, 0, {  -200,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{   512,   -153,      0}, 0, {   480,      0}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{   717,   -357,    205}, 0, {  1160,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n};\n\n// 0x07025BC0 - 0x07025CB0\nstatic const Vtx rr_seg7_vertex_07025BC0[] = {\n    {{{   307,     51,   -204}, 0, {  -200,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{   102,    256,      0}, 0, {   480,      0}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{   307,     51,    205}, 0, {  1160,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  1126,   -153,   -204}, 0, {  -200,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{   922,     51,      0}, 0, {   480,      0}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  1126,   -153,    205}, 0, {  1160,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{   717,   -153,   -204}, 0, {  -200,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{   717,   -153,    205}, 0, {  1160,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{   922,     51,      0}, 0, {   478,      0}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{   307,   -357,   -204}, 0, {  -200,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{   307,   -357,    205}, 0, {  1160,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{   512,   -153,      0}, 0, {   478,      0}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -101,   -357,   -204}, 0, {  -200,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -306,   -153,      0}, 0, {   480,      0}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -101,   -357,    205}, 0, {  1160,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n};\n\n// 0x07025CB0 - 0x07025DA0\nstatic const Vtx rr_seg7_vertex_07025CB0[] = {\n    {{{  -511,   -562,   -204}, 0, {  -200,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -716,   -357,      0}, 0, {   480,      0}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -511,   -562,    205}, 0, {  1160,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -921,   -562,   -204}, 0, {  -200,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -921,   -562,    205}, 0, {  1160,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -716,   -357,      0}, 0, {   478,      0}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -101,   -562,   -204}, 0, {  -200,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -101,   -562,    205}, 0, {  1160,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{   102,   -357,      0}, 0, {   478,      0}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{   307,   -562,   -204}, 0, {  -200,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{   102,   -357,      0}, 0, {   480,      0}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{   307,   -562,    205}, 0, {  1160,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -511,   -357,   -204}, 0, {  -200,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -511,   -357,    205}, 0, {  1160,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -306,   -153,      0}, 0, {   478,      0}, {0xcc, 0xb7, 0x00, 0xff}}},\n};\n\n// 0x07025DA0 - 0x070263B0\nstatic const Gfx rr_seg7_dl_07025DA0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_07023C20, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_07023D10, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07023E00, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07023EF0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(rr_seg7_vertex_07023FD0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_070240B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_070241A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07024290, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07024380, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9,  5, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07024480, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07024570, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 12, 13, 10, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07024660, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  3,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 13,  9, 0x0),\n    gsSP2Triangles( 0, 14,  1, 0x0, 14, 15,  1, 0x0),\n    gsSPVertex(rr_seg7_vertex_07024760, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle(10, 14, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07024850, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07024950, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07024A30, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07024B10, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_07024C00, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 4,  6, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07024CF0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07024DE0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(rr_seg7_vertex_07024ED0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07024FC0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_070250B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_070251A0, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  2,  7, 0x0),\n    gsSP1Triangle( 0,  2,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070263B0 - 0x07026630\nstatic const Gfx rr_seg7_dl_070263B0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_07025240, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  4, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(11, 10, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07025340, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  5,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP1Triangle(11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07025420, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  9,  6, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07025520, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07025610, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07025700, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_070257F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_070258F0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP1Triangle(11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_070259D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  5,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07025AD0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07025BC0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07025CB0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07026630 - 0x070266C0\nconst Gfx rr_seg7_dl_07026630[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_07025DA0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_070263B0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/rr/tricky_triangles_5/collision.inc.c",
    "content": "// 0x0702A6B4 - 0x0702A9A6\nconst Collision rr_seg7_collision_0702A6B4[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x3F),\n    COL_VERTEX(-511, 410, 205),\n    COL_VERTEX(-716, 691, 0),\n    COL_VERTEX(-921, 410, 205),\n    COL_VERTEX(-511, 410, -204),\n    COL_VERTEX(-921, 410, -204),\n    COL_VERTEX(-101, 205, -204),\n    COL_VERTEX(-511, 205, -204),\n    COL_VERTEX(-306, 486, 0),\n    COL_VERTEX(-101, 205, 205),\n    COL_VERTEX(-511, 205, 205),\n    COL_VERTEX(307, 0, 205),\n    COL_VERTEX(102, 282, 0),\n    COL_VERTEX(-101, 0, 205),\n    COL_VERTEX(307, 0, -204),\n    COL_VERTEX(-101, 0, -204),\n    COL_VERTEX(1126, -204, -204),\n    COL_VERTEX(1126, -204, 205),\n    COL_VERTEX(717, -204, -204),\n    COL_VERTEX(717, -409, -204),\n    COL_VERTEX(717, -409, 205),\n    COL_VERTEX(307, -409, -204),\n    COL_VERTEX(-511, -613, -204),\n    COL_VERTEX(-921, -613, -204),\n    COL_VERTEX(-511, -613, 205),\n    COL_VERTEX(307, -613, -204),\n    COL_VERTEX(307, -613, 205),\n    COL_VERTEX(-101, -613, -204),\n    COL_VERTEX(-101, -409, -204),\n    COL_VERTEX(-511, -409, -204),\n    COL_VERTEX(-101, -409, 205),\n    COL_VERTEX(922, 77, 0),\n    COL_VERTEX(717, -204, 205),\n    COL_VERTEX(512, -127, 0),\n    COL_VERTEX(307, -409, 205),\n    COL_VERTEX(-716, -332, 0),\n    COL_VERTEX(-921, -613, 205),\n    COL_VERTEX(102, -332, 0),\n    COL_VERTEX(-101, -613, 205),\n    COL_VERTEX(-306, -127, 0),\n    COL_VERTEX(-511, -409, 205),\n    COL_VERTEX(973, -588, -634),\n    COL_VERTEX(973, -153, -634),\n    COL_VERTEX(461, -588, -634),\n    COL_VERTEX(51, -588, -634),\n    COL_VERTEX(-357, -588, -634),\n    COL_VERTEX(-767, -588, -634),\n    COL_VERTEX(-1023, -690, -634),\n    COL_VERTEX(973, -690, -634),\n    COL_VERTEX(-1023, -588, -634),\n    COL_VERTEX(870, -588, -634),\n    COL_VERTEX(870, -153, -634),\n    COL_VERTEX(563, -588, -634),\n    COL_VERTEX(563, -357, -634),\n    COL_VERTEX(461, -357, -634),\n    COL_VERTEX(154, -588, -634),\n    COL_VERTEX(154, 51, -634),\n    COL_VERTEX(51, 51, -634),\n    COL_VERTEX(-255, -588, -634),\n    COL_VERTEX(-255, 256, -634),\n    COL_VERTEX(-357, 256, -634),\n    COL_VERTEX(-665, 461, -634),\n    COL_VERTEX(-767, 461, -634),\n    COL_VERTEX(-665, -588, -634),\n    COL_TRI_INIT(SURFACE_DEFAULT, 28),\n    COL_TRI(16, 31, 17),\n    COL_TRI(25, 37, 26),\n    COL_TRI(25, 26, 24),\n    COL_TRI(29, 28, 27),\n    COL_TRI(29, 39, 28),\n    COL_TRI(23, 22, 21),\n    COL_TRI(23, 35, 22),\n    COL_TRI(8, 9, 6),\n    COL_TRI(16, 17, 15),\n    COL_TRI(19, 20, 18),\n    COL_TRI(19, 33, 20),\n    COL_TRI(10, 14, 13),\n    COL_TRI(10, 12, 14),\n    COL_TRI(8, 6, 5),\n    COL_TRI(40, 46, 47),\n    COL_TRI(40, 48, 46),\n    COL_TRI(41, 49, 40),\n    COL_TRI(41, 50, 49),\n    COL_TRI(42, 51, 52),\n    COL_TRI(42, 52, 53),\n    COL_TRI(43, 54, 55),\n    COL_TRI(43, 55, 56),\n    COL_TRI(44, 57, 58),\n    COL_TRI(44, 58, 59),\n    COL_TRI(45, 60, 61),\n    COL_TRI(45, 62, 60),\n    COL_TRI(0, 2, 4),\n    COL_TRI(0, 4, 3),\n    COL_TRI_INIT(SURFACE_VERY_SLIPPERY, 32),\n    COL_TRI(0, 1, 2),\n    COL_TRI(3, 1, 0),\n    COL_TRI(4, 2, 1),\n    COL_TRI(3, 4, 1),\n    COL_TRI(5, 6, 7),\n    COL_TRI(5, 7, 8),\n    COL_TRI(8, 7, 9),\n    COL_TRI(6, 9, 7),\n    COL_TRI(10, 11, 12),\n    COL_TRI(13, 11, 10),\n    COL_TRI(14, 12, 11),\n    COL_TRI(13, 14, 11),\n    COL_TRI(15, 17, 30),\n    COL_TRI(15, 30, 16),\n    COL_TRI(16, 30, 31),\n    COL_TRI(17, 31, 30),\n    COL_TRI(18, 32, 19),\n    COL_TRI(19, 32, 33),\n    COL_TRI(18, 20, 32),\n    COL_TRI(20, 33, 32),\n    COL_TRI(21, 34, 23),\n    COL_TRI(21, 22, 34),\n    COL_TRI(22, 35, 34),\n    COL_TRI(23, 34, 35),\n    COL_TRI(24, 36, 25),\n    COL_TRI(25, 36, 37),\n    COL_TRI(26, 37, 36),\n    COL_TRI(24, 26, 36),\n    COL_TRI(27, 38, 29),\n    COL_TRI(27, 28, 38),\n    COL_TRI(28, 39, 38),\n    COL_TRI(29, 38, 39),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/rr/tricky_triangles_5/geo.inc.c",
    "content": "// 0x0E0009B8\nconst GeoLayout rr_geo_0009B8[] = {\n    GEO_CULLING_RADIUS(1500),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, rr_seg7_dl_07028FA8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/rr/tricky_triangles_5/model.inc.c",
    "content": "// 0x070266C0 - 0x070267B0\nstatic const Vtx rr_seg7_vertex_070266C0[] = {\n    {{{    77,    -50,   -634}, 0, {  -860,    542}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   102,      0,   -204}, 0, {  -924,    480}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   102,      0,   -634}, 0, {  -924,    480}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -741,    358,   -634}, 0, { -9036,   2584}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -741,    358,   -204}, 0, { -9036,   2584}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -716,    410,   -204}, 0, { -9100,   2520}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -716,    410,   -634}, 0, { -9100,   2520}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   896,   -255,   -634}, 0, {  6292,  -1502}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   922,   -204,   -204}, 0, {  6228,  -1564}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   922,   -204,   -634}, 0, {  6228,  -1564}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   896,   -255,   -204}, 0, {  6292,  -1502}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   486,   -460,   -634}, 0, {  4248,   -480}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   512,   -409,   -204}, 0, {  4184,   -542}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   512,   -409,   -634}, 0, {  4184,   -542}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   486,   -460,   -204}, 0, {  4248,   -480}, {0x7f, 0xac, 0x52, 0xff}}},\n};\n\n// 0x070267B0 - 0x070268A0\nstatic const Vtx rr_seg7_vertex_070267B0[] = {\n    {{{  -332,    154,   -634}, 0, { -4948,   1562}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -332,    154,   -204}, 0, { -4948,   1562}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -306,    205,   -204}, 0, { -5012,   1498}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{    77,    -50,   -634}, 0, {  -860,    542}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{    77,    -50,   -204}, 0, {  -860,    542}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   102,      0,   -204}, 0, {  -924,    480}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -332,   -460,   -634}, 0, { -1882,   1562}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -306,   -409,   -204}, 0, { -1946,   1498}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -306,   -409,   -634}, 0, { -1946,   1498}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -332,   -460,   -204}, 0, { -1882,   1562}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -741,   -665,   -634}, 0, { -3926,   2584}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -741,   -665,   -204}, 0, { -3926,   2584}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -716,   -613,   -204}, 0, { -3990,   2520}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -716,   -613,   -634}, 0, { -3990,   2520}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{  -306,    205,   -634}, 0, { -5012,   1498}, {0x7f, 0xac, 0x52, 0xff}}},\n};\n\n// 0x070268A0 - 0x07026990\nstatic const Vtx rr_seg7_vertex_070268A0[] = {\n    {{{    77,   -665,   -634}, 0, {  2204,    542}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   102,   -613,   -204}, 0, {  2140,    480}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{   102,   -613,   -634}, 0, {  2140,    480}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{    77,   -665,   -204}, 0, {  2204,    542}, {0x7f, 0xac, 0x52, 0xff}}},\n    {{{    77,    -50,   -204}, 0, {  -860,    542}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{    77,    -50,    154}, 0, {  -860,    542}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   102,      0,    154}, 0, {  -924,    480}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -741,    358,   -204}, 0, { -9036,   2584}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -716,    410,    154}, 0, { -9100,   2520}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -716,    410,   -204}, 0, { -9100,   2520}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -741,    358,    154}, 0, { -9036,   2584}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   896,   -255,   -204}, 0, {  6292,  -1502}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   896,   -255,    154}, 0, {  6292,  -1502}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   922,   -204,    154}, 0, {  6228,  -1564}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   922,   -204,   -204}, 0, {  6228,  -1564}, {0x44, 0x55, 0x22, 0xff}}},\n};\n\n// 0x07026990 - 0x07026A70\nstatic const Vtx rr_seg7_vertex_07026990[] = {\n    {{{   486,   -460,   -204}, 0, {  4248,   -480}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   486,   -460,    154}, 0, {  4248,   -480}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   512,   -409,    154}, 0, {  4184,   -542}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   512,   -409,   -204}, 0, {  4184,   -542}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -332,    154,   -204}, 0, { -4948,   1562}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -306,    205,    154}, 0, { -5012,   1498}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -306,    205,   -204}, 0, { -5012,   1498}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{    77,    -50,   -204}, 0, {  -860,    542}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   102,      0,    154}, 0, {  -924,    480}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   102,      0,   -204}, 0, {  -924,    480}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -332,   -460,   -204}, 0, { -1882,   1562}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -306,   -409,    154}, 0, { -1946,   1498}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -306,   -409,   -204}, 0, { -1946,   1498}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -332,   -460,    154}, 0, { -1882,   1562}, {0x44, 0x55, 0x22, 0xff}}},\n};\n\n// 0x07026A70 - 0x07026B50\nstatic const Vtx rr_seg7_vertex_07026A70[] = {\n    {{{  -741,   -665,   -204}, 0, { -3926,   2584}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -741,   -665,    154}, 0, { -3926,   2584}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -716,   -613,    154}, 0, { -3990,   2520}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -716,   -613,   -204}, 0, { -3990,   2520}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -332,    154,   -204}, 0, { -4948,   1562}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -332,    154,    154}, 0, { -4948,   1562}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{  -306,    205,    154}, 0, { -5012,   1498}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{    77,   -665,   -204}, 0, {  2204,    542}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{    77,   -665,    154}, 0, {  2204,    542}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   102,   -613,    154}, 0, {  2140,    480}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   102,   -613,   -204}, 0, {  2140,    480}, {0x44, 0x55, 0x22, 0xff}}},\n    {{{   512,   -409,    154}, 0, {  4184,   -542}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   486,   -460,    154}, 0, {  4248,   -480}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   538,   -460,    154}, 0, {  4630,   -606}, {0x54, 0x70, 0x40, 0xff}}},\n};\n\n// 0x07026B50 - 0x07026C40\nstatic const Vtx rr_seg7_vertex_07026B50[] = {\n    {{{  -716,    410,    154}, 0, { -9100,   2520}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -741,    358,    154}, 0, { -9036,   2584}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -690,    358,    154}, 0, { -8654,   2458}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -306,    205,    154}, 0, { -5012,   1498}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -332,    154,    154}, 0, { -4948,   1562}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -281,    154,    154}, 0, { -4566,   1436}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   922,   -204,    154}, 0, {  6228,  -1564}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   896,   -255,    154}, 0, {  6292,  -1502}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   947,   -255,    154}, 0, {  6674,  -1628}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   102,      0,    154}, 0, {  -924,    480}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{    77,    -50,    154}, 0, {  -860,    542}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   128,    -50,    154}, 0, {  -478,    416}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -588,   -613}, 0, {  8528,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{ -1023,   -690,   -613}, 0, { -5906,   3288}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -690,   -613}, 0, {  9038,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n};\n\n// 0x07026C40 - 0x07026D30\nstatic const Vtx rr_seg7_vertex_07026C40[] = {\n    {{{  -306,   -409,    154}, 0, { -1946,   1498}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -332,   -460,    154}, 0, { -1882,   1562}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -281,   -460,    154}, 0, { -1500,   1436}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -716,   -613,    154}, 0, { -3990,   2520}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -741,   -665,    154}, 0, { -3926,   2584}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -690,   -665,    154}, 0, { -3544,   2458}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   102,   -613,    154}, 0, {  2140,    480}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{    77,   -665,    154}, 0, {  2204,    542}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   128,   -665,    154}, 0, {  2586,    416}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -588,   -613}, 0, {  8528,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{ -1023,   -588,   -613}, 0, { -6418,   3288}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{ -1023,   -690,   -613}, 0, { -5906,   3288}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   461,   -588,   -634}, 0, {  4694,   -416}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   563,   -357,   -634}, 0, {  4566,   -670}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   461,   -357,   -634}, 0, {  3800,   -416}, {0x54, 0x70, 0x40, 0xff}}},\n};\n\n// 0x07026D30 - 0x07026E20\nstatic const Vtx rr_seg7_vertex_07026D30[] = {\n    {{{  -767,   -588,   -634}, 0, { -4502,   2648}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -665,    461,   -634}, 0, { -8716,   2394}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -767,    461,   -634}, 0, { -9484,   2648}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -665,   -588,   -634}, 0, { -3734,   2394}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -357,   -588,   -634}, 0, { -1436,   1626}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -255,   -588,   -634}, 0, {  -668,   1372}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -255,    256,   -634}, 0, { -4628,   1372}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -357,    256,   -634}, 0, { -5396,   1626}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{    51,   -588,   -634}, 0, {  1628,    606}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   154,   -588,   -634}, 0, {  2396,    352}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   154,     51,   -634}, 0, {  -540,    352}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{    51,     51,   -634}, 0, { -1308,    606}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   461,   -357,   -665}, 0, {  3800,   -416}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   563,   -588,   -665}, 0, {  5462,   -670}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   461,   -588,   -665}, 0, {  4694,   -416}, {0x54, 0x70, 0x40, 0xff}}},\n};\n\n// 0x07026E20 - 0x07026F20\nstatic const Vtx rr_seg7_vertex_07026E20[] = {\n    {{{   461,   -588,   -634}, 0, {  4694,   -416}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   563,   -588,   -634}, 0, {  5462,   -670}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   563,   -357,   -634}, 0, {  4566,   -670}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   870,   -153,   -665}, 0, {  5844,  -1438}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -153,   -665}, 0, {  6610,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -588,   -665}, 0, {  8528,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   870,   -588,   -665}, 0, {  7760,  -1438}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -690,   -665}, 0, {  9038,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{ -1125,   -690,   -665}, 0, { -6672,   3542}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{ -1125,   -588,   -665}, 0, { -7184,   3542}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   461,   -357,   -665}, 0, {  3800,   -416}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   563,   -357,   -665}, 0, {  4566,   -670}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   563,   -588,   -665}, 0, {  5462,   -670}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -153,   -634}, 0, {  6610,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   870,   -153,   -634}, 0, {  5844,  -1438}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   870,   -588,   -634}, 0, {  7760,  -1438}, {0x54, 0x70, 0x40, 0xff}}},\n};\n\n// 0x07026F20 - 0x07027010\nstatic const Vtx rr_seg7_vertex_07026F20[] = {\n    {{{    51,     51,   -665}, 0, { -1308,    606}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   154,     51,   -665}, 0, {  -540,    352}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   154,   -588,   -665}, 0, {  2396,    352}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{    51,   -588,   -665}, 0, {  1628,    606}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -357,    256,   -665}, 0, { -5396,   1626}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -255,   -588,   -665}, 0, {  -668,   1372}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -357,   -588,   -665}, 0, { -1436,   1626}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -255,    256,   -665}, 0, { -4628,   1372}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -767,    461,   -665}, 0, { -9484,   2648}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -665,    461,   -665}, 0, { -8716,   2394}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -665,   -588,   -665}, 0, { -3734,   2394}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{  -767,   -588,   -665}, 0, { -4502,   2648}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -153,   -634}, 0, {  6610,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   870,   -588,   -634}, 0, {  7760,  -1438}, {0x54, 0x70, 0x40, 0xff}}},\n    {{{   973,   -588,   -634}, 0, {  8528,  -1692}, {0x54, 0x70, 0x40, 0xff}}},\n};\n\n// 0x07027010 - 0x07027100\nstatic const Vtx rr_seg7_vertex_07027010[] = {\n    {{{   538,   -460,   -634}, 0, {  4630,   -606}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   486,   -460,   -204}, 0, {  4248,   -480}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   486,   -460,   -634}, 0, {  4248,   -480}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -690,    358,   -634}, 0, { -8654,   2458}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -741,    358,   -204}, 0, { -9036,   2584}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -741,    358,   -634}, 0, { -9036,   2584}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -690,    358,   -204}, 0, { -8654,   2458}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -690,    358,    154}, 0, { -8654,   2458}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -741,    358,    154}, 0, { -9036,   2584}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   947,   -255,   -634}, 0, {  6674,  -1628}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   896,   -255,   -204}, 0, {  6292,  -1502}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   896,   -255,   -634}, 0, {  6292,  -1502}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   947,   -255,   -204}, 0, {  6674,  -1628}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   896,   -255,    154}, 0, {  6292,  -1502}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   947,   -255,    154}, 0, {  6674,  -1628}, {0x1d, 0x3e, 0x0f, 0xff}}},\n};\n\n// 0x07027100 - 0x07027200\nstatic const Vtx rr_seg7_vertex_07027100[] = {\n    {{{  -281,   -460,   -634}, 0, { -1500,   1436}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -332,   -460,   -204}, 0, { -1882,   1562}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -332,   -460,   -634}, 0, { -1882,   1562}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   538,   -460,   -204}, 0, {  4630,   -606}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   538,   -460,    154}, 0, {  4630,   -606}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   486,   -460,    154}, 0, {  4248,   -480}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   486,   -460,   -204}, 0, {  4248,   -480}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   538,   -460,   -634}, 0, {  4630,   -606}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   128,    -50,   -634}, 0, {  -478,    416}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{    77,    -50,   -204}, 0, {  -860,    542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{    77,    -50,   -634}, 0, {  -860,    542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   128,    -50,   -204}, 0, {  -478,    416}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   128,    -50,    154}, 0, {  -478,    416}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{    77,    -50,    154}, 0, {  -860,    542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -281,   -460,   -204}, 0, { -1500,   1436}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -332,   -460,    154}, 0, { -1882,   1562}, {0x1d, 0x3e, 0x0f, 0xff}}},\n};\n\n// 0x07027200 - 0x070272F0\nstatic const Vtx rr_seg7_vertex_07027200[] = {\n    {{{  -281,   -460,   -204}, 0, { -1500,   1436}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -281,   -460,    154}, 0, { -1500,   1436}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -332,   -460,    154}, 0, { -1882,   1562}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -690,   -665,   -634}, 0, { -3544,   2458}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -741,   -665,   -204}, 0, { -3926,   2584}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -741,   -665,   -634}, 0, { -3926,   2584}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -690,   -665,   -204}, 0, { -3544,   2458}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -741,   -665,    154}, 0, { -3926,   2584}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -690,   -665,    154}, 0, { -3544,   2458}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -281,    154,   -634}, 0, { -4566,   1436}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -281,    154,   -204}, 0, { -4566,   1436}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -332,    154,   -204}, 0, { -4948,   1562}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -332,    154,   -634}, 0, { -4948,   1562}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -332,    154,    154}, 0, { -4948,   1562}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{  -281,    154,    154}, 0, { -4566,   1436}, {0x1d, 0x3e, 0x0f, 0xff}}},\n};\n\n// 0x070272F0 - 0x070273F0\nstatic const Vtx rr_seg7_vertex_070272F0[] = {\n    {{{   128,   -665,   -634}, 0, {  2586,    416}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   128,   -665,   -204}, 0, {  2586,    416}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{    77,   -665,   -204}, 0, {  2204,    542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{    77,   -665,   -634}, 0, {  2204,    542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   128,   -665,    154}, 0, {  2586,    416}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{    77,   -665,    154}, 0, {  2204,    542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   973,   -690,   -613}, 0, {  9038,  -1692}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{ -1125,   -690,   -613}, 0, { -6672,   3542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{ -1125,   -690,   -665}, 0, { -6672,   3542}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   973,   -690,   -665}, 0, {  9038,  -1692}, {0x1d, 0x3e, 0x0f, 0xff}}},\n    {{{   102,      0,   -634}, 0, {  -924,    480}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   128,    -50,   -204}, 0, {  -478,    416}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   128,    -50,   -634}, 0, {  -478,    416}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -716,    410,   -634}, 0, { -9100,   2520}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -690,    358,   -204}, 0, { -8654,   2458}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -690,    358,   -634}, 0, { -8654,   2458}, {0x67, 0x89, 0x51, 0xff}}},\n};\n\n// 0x070273F0 - 0x070274D0\nstatic const Vtx rr_seg7_vertex_070273F0[] = {\n    {{{  -716,    410,   -634}, 0, { -9100,   2520}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -716,    410,   -204}, 0, { -9100,   2520}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -690,    358,   -204}, 0, { -8654,   2458}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   922,   -204,   -634}, 0, {  6228,  -1564}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   922,   -204,   -204}, 0, {  6228,  -1564}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   947,   -255,   -204}, 0, {  6674,  -1628}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   947,   -255,   -634}, 0, {  6674,  -1628}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   512,   -409,   -634}, 0, {  4184,   -542}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   538,   -460,   -204}, 0, {  4630,   -606}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   538,   -460,   -634}, 0, {  4630,   -606}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   512,   -409,   -204}, 0, {  4184,   -542}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -306,    205,   -634}, 0, { -5012,   1498}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -281,    154,   -204}, 0, { -4566,   1436}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -281,    154,   -634}, 0, { -4566,   1436}, {0x67, 0x89, 0x51, 0xff}}},\n};\n\n// 0x070274D0 - 0x070275B0\nstatic const Vtx rr_seg7_vertex_070274D0[] = {\n    {{{   102,      0,   -634}, 0, {  -924,    480}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   102,      0,   -204}, 0, {  -924,    480}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   128,    -50,   -204}, 0, {  -478,    416}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -306,   -409,   -634}, 0, { -1946,   1498}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -306,   -409,   -204}, 0, { -1946,   1498}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -281,   -460,   -204}, 0, { -1500,   1436}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -281,   -460,   -634}, 0, { -1500,   1436}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -716,   -613,   -634}, 0, { -3990,   2520}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -690,   -665,   -204}, 0, { -3544,   2458}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -690,   -665,   -634}, 0, { -3544,   2458}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -716,   -613,   -204}, 0, { -3990,   2520}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -306,    205,   -634}, 0, { -5012,   1498}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -306,    205,   -204}, 0, { -5012,   1498}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -281,    154,   -204}, 0, { -4566,   1436}, {0x67, 0x89, 0x51, 0xff}}},\n};\n\n// 0x070275B0 - 0x070276A0\nstatic const Vtx rr_seg7_vertex_070275B0[] = {\n    {{{   102,   -613,   -634}, 0, {  2140,    480}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   128,   -665,   -204}, 0, {  2586,    416}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   128,   -665,   -634}, 0, {  2586,    416}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{   102,   -613,   -204}, 0, {  2140,    480}, {0x67, 0x89, 0x51, 0xff}}},\n    {{{  -357,    256,   -634}, 0, { -5396,   1626}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -255,    256,   -634}, 0, { -4628,   1372}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -255,    256,   -665}, 0, { -4628,   1372}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   973,   -153,   -665}, 0, {  6610,  -1692}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   870,   -153,   -634}, 0, {  5844,  -1438}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   973,   -153,   -634}, 0, {  6610,  -1692}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   870,   -153,   -665}, 0, {  5844,  -1438}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   461,   -357,   -634}, 0, {  3800,   -416}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   563,   -357,   -634}, 0, {  4566,   -670}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   563,   -357,   -665}, 0, {  4566,   -670}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   461,   -357,   -665}, 0, {  3800,   -416}, {0x97, 0xcd, 0x97, 0xff}}},\n};\n\n// 0x070276A0 - 0x07027790\nstatic const Vtx rr_seg7_vertex_070276A0[] = {\n    {{{    51,     51,   -634}, 0, { -1308,    606}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   154,     51,   -665}, 0, {  -540,    352}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{    51,     51,   -665}, 0, { -1308,    606}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   154,     51,   -634}, 0, {  -540,    352}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   973,   -588,   -665}, 0, {  8528,  -1692}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{ -1125,   -588,   -613}, 0, { -7184,   3542}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{   973,   -588,   -613}, 0, {  8528,  -1692}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -357,    256,   -634}, 0, { -5396,   1626}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -255,    256,   -665}, 0, { -4628,   1372}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -357,    256,   -665}, 0, { -5396,   1626}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -767,    461,   -634}, 0, { -9484,   2648}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -665,    461,   -665}, 0, { -8716,   2394}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -767,    461,   -665}, 0, { -9484,   2648}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{  -665,    461,   -634}, 0, { -8716,   2394}, {0x97, 0xcd, 0x97, 0xff}}},\n    {{{ -1125,   -588,   -665}, 0, { -7184,   3542}, {0x97, 0xcd, 0x97, 0xff}}},\n};\n\n// 0x07027790 - 0x07027880\nstatic const Vtx rr_seg7_vertex_07027790[] = {\n    {{{   102,      0,   -204}, 0, {  -924,    480}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   102,      0,    154}, 0, {  -924,    480}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   128,    -50,    154}, 0, {  -478,    416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -716,    410,   -204}, 0, { -9100,   2520}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -716,    410,    154}, 0, { -9100,   2520}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -690,    358,    154}, 0, { -8654,   2458}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -690,    358,   -204}, 0, { -8654,   2458}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   922,   -204,   -204}, 0, {  6228,  -1564}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   947,   -255,    154}, 0, {  6674,  -1628}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   947,   -255,   -204}, 0, {  6674,  -1628}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   922,   -204,    154}, 0, {  6228,  -1564}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   512,   -409,   -204}, 0, {  4184,   -542}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   538,   -460,    154}, 0, {  4630,   -606}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   538,   -460,   -204}, 0, {  4630,   -606}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   512,   -409,    154}, 0, {  4184,   -542}, {0x35, 0x4c, 0x2b, 0xff}}},\n};\n\n// 0x07027880 - 0x07027970\nstatic const Vtx rr_seg7_vertex_07027880[] = {\n    {{{  -306,    205,   -204}, 0, { -5012,   1498}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -306,    205,    154}, 0, { -5012,   1498}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -281,    154,    154}, 0, { -4566,   1436}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   102,      0,   -204}, 0, {  -924,    480}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   128,    -50,    154}, 0, {  -478,    416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   128,    -50,   -204}, 0, {  -478,    416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -306,   -409,   -204}, 0, { -1946,   1498}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -306,   -409,    154}, 0, { -1946,   1498}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -281,   -460,    154}, 0, { -1500,   1436}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -281,   -460,   -204}, 0, { -1500,   1436}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -716,   -613,   -204}, 0, { -3990,   2520}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -690,   -665,    154}, 0, { -3544,   2458}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -690,   -665,   -204}, 0, { -3544,   2458}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -716,   -613,    154}, 0, { -3990,   2520}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -281,    154,   -204}, 0, { -4566,   1436}, {0x35, 0x4c, 0x2b, 0xff}}},\n};\n\n// 0x07027970 - 0x07027A60\nstatic const Vtx rr_seg7_vertex_07027970[] = {\n    {{{  -255,   -588,   -665}, 0, {  -668,   1372}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -255,    256,   -634}, 0, { -4628,   1372}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -255,   -588,   -634}, 0, {  -668,   1372}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   102,   -613,   -204}, 0, {  2140,    480}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   128,   -665,    154}, 0, {  2586,    416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   128,   -665,   -204}, 0, {  2586,    416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   102,   -613,    154}, 0, {  2140,    480}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   563,   -588,   -665}, 0, {  5462,   -670}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   563,   -357,   -634}, 0, {  4566,   -670}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   563,   -588,   -634}, 0, {  5462,   -670}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   563,   -357,   -665}, 0, {  4566,   -670}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   154,   -588,   -665}, 0, {  2396,    352}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   154,     51,   -665}, 0, {  -540,    352}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   154,     51,   -634}, 0, {  -540,    352}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   154,   -588,   -634}, 0, {  2396,    352}, {0x35, 0x4c, 0x2b, 0xff}}},\n};\n\n// 0x07027A60 - 0x07027B50\nstatic const Vtx rr_seg7_vertex_07027A60[] = {\n    {{{   461,   -588,   -634}, 0, {  4694,   -416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   461,   -357,   -665}, 0, {  3800,   -416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   461,   -588,   -665}, 0, {  4694,   -416}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -255,   -588,   -665}, 0, {  -668,   1372}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -255,    256,   -665}, 0, { -4628,   1372}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -255,    256,   -634}, 0, { -4628,   1372}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -665,   -588,   -665}, 0, { -3734,   2394}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -665,    461,   -634}, 0, { -8716,   2394}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -665,   -588,   -634}, 0, { -3734,   2394}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -665,    461,   -665}, 0, { -8716,   2394}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   870,   -588,   -634}, 0, {  7760,  -1438}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   870,   -153,   -634}, 0, {  5844,  -1438}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   870,   -153,   -665}, 0, {  5844,  -1438}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   870,   -588,   -665}, 0, {  7760,  -1438}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   461,   -357,   -634}, 0, {  3800,   -416}, {0x35, 0x4c, 0x2b, 0xff}}},\n};\n\n// 0x07027B50 - 0x07027C40\nstatic const Vtx rr_seg7_vertex_07027B50[] = {\n    {{{ -1125,   -690,   -613}, 0, { -6672,   3542}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{ -1125,   -588,   -613}, 0, { -7184,   3542}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{ -1125,   -588,   -665}, 0, { -7184,   3542}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{    51,   -588,   -634}, 0, {  1628,    606}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{    51,     51,   -665}, 0, { -1308,    606}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{    51,   -588,   -665}, 0, {  1628,    606}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{    51,     51,   -634}, 0, { -1308,    606}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -357,   -588,   -634}, 0, { -1436,   1626}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -357,    256,   -665}, 0, { -5396,   1626}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -357,   -588,   -665}, 0, { -1436,   1626}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -357,    256,   -634}, 0, { -5396,   1626}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -767,   -588,   -634}, 0, { -4502,   2648}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -767,    461,   -665}, 0, { -9484,   2648}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -767,   -588,   -665}, 0, { -4502,   2648}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{  -767,    461,   -634}, 0, { -9484,   2648}, {0x35, 0x4c, 0x2b, 0xff}}},\n};\n\n// 0x07027C40 - 0x07027CE0\nstatic const Vtx rr_seg7_vertex_07027C40[] = {\n    {{{   973,   -153,   -634}, 0, {  6610,  -1692}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   973,   -588,   -665}, 0, {  8528,  -1692}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   973,   -153,   -665}, 0, {  6610,  -1692}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{ -1125,   -690,   -613}, 0, { -6672,   3542}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{ -1125,   -588,   -665}, 0, { -7184,   3542}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{ -1125,   -690,   -665}, 0, { -6672,   3542}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   973,   -690,   -665}, 0, {  9038,  -1692}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   973,   -588,   -613}, 0, {  8528,  -1692}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   973,   -690,   -613}, 0, {  9038,  -1692}, {0x35, 0x4c, 0x2b, 0xff}}},\n    {{{   973,   -588,   -634}, 0, {  8528,  -1692}, {0x35, 0x4c, 0x2b, 0xff}}},\n};\n\n// 0x07027CE0 - 0x07027DD0\nstatic const Vtx rr_seg7_vertex_07027CE0[] = {\n    {{{  -101,      0,   -204}, 0, {  -200,   1332}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{  -101,      0,    205}, 0, {  1160,   1332}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{   102,    282,      0}, 0, {   478,      0}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{  -921,    410,   -204}, 0, {  -200,   1332}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{  -921,    410,    205}, 0, {  1160,   1332}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{  -716,    691,      0}, 0, {   478,      0}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{  -511,    410,   -204}, 0, {  -200,   1332}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{  -716,    691,      0}, 0, {   480,      0}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{  -511,    410,    205}, 0, {  1160,   1332}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{  -101,    205,   -204}, 0, {  -200,   1332}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{  -306,    486,      0}, 0, {   480,      0}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{  -101,    205,    205}, 0, {  1160,   1332}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{  -511,    205,   -204}, 0, {  -200,   1332}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{  -511,    205,    205}, 0, {  1160,   1332}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{  -306,    486,      0}, 0, {   478,      0}, {0xbe, 0xaf, 0x00, 0xff}}},\n};\n\n// 0x07027DD0 - 0x07027EC0\nstatic const Vtx rr_seg7_vertex_07027DD0[] = {\n    {{{   717,   -409,   -204}, 0, {  -200,   1332}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{   512,   -127,      0}, 0, {   480,      0}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{   717,   -409,    205}, 0, {  1160,   1332}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{   307,      0,   -204}, 0, {  -200,   1332}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{   102,    282,      0}, 0, {   480,      0}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{   307,      0,    205}, 0, {  1160,   1332}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{  1126,   -204,   -204}, 0, {  -200,   1332}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{   922,     77,      0}, 0, {   480,      0}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{  1126,   -204,    205}, 0, {  1160,   1332}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{   717,   -204,   -204}, 0, {  -200,   1332}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{   717,   -204,    205}, 0, {  1160,   1332}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{   922,     77,      0}, 0, {   478,      0}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{   307,   -409,   -204}, 0, {  -200,   1332}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{   307,   -409,    205}, 0, {  1160,   1332}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{   512,   -127,      0}, 0, {   478,      0}, {0xbe, 0xaf, 0x00, 0xff}}},\n};\n\n// 0x07027EC0 - 0x07027FB0\nstatic const Vtx rr_seg7_vertex_07027EC0[] = {\n    {{{  -101,   -409,   -204}, 0, {  -200,   1332}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{  -306,   -127,      0}, 0, {   480,      0}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{  -101,   -409,    205}, 0, {  1160,   1332}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{  -511,   -613,   -204}, 0, {  -200,   1332}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{  -716,   -332,      0}, 0, {   480,      0}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{  -511,   -613,    205}, 0, {  1160,   1332}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{  -921,   -613,   -204}, 0, {  -200,   1332}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{  -921,   -613,    205}, 0, {  1160,   1332}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{  -716,   -332,      0}, 0, {   478,      0}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{  -101,   -613,   -204}, 0, {  -200,   1332}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{  -101,   -613,    205}, 0, {  1160,   1332}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{   102,   -332,      0}, 0, {   478,      0}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{   307,   -613,   -204}, 0, {  -200,   1332}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{   102,   -332,      0}, 0, {   480,      0}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{   307,   -613,    205}, 0, {  1160,   1332}, {0xbe, 0xaf, 0x00, 0xff}}},\n};\n\n// 0x07027FB0 - 0x07028090\nstatic const Vtx rr_seg7_vertex_07027FB0[] = {\n    {{{  -511,   -409,   -204}, 0, {  -200,   1332}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{  -511,   -409,    205}, 0, {  1160,   1332}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{  -306,   -127,      0}, 0, {   478,      0}, {0xbe, 0xaf, 0x00, 0xff}}},\n    {{{  -511,    205,    205}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -306,    205,      0}, 0, {   480,      0}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -101,    205,    205}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -511,    410,    205}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -716,    410,      0}, 0, {   480,      0}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -511,    410,   -204}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -716,    410,      0}, 0, {   478,      0}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -921,    410,    205}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -921,    410,   -204}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -511,    410,   -204}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -921,    410,    205}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n};\n\n// 0x07028090 - 0x07028190\nstatic const Vtx rr_seg7_vertex_07028090[] = {\n    {{{   102,      0,      0}, 0, {   478,      0}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -101,      0,    205}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -101,      0,   -204}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -306,    205,      0}, 0, {   480,      0}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -511,    205,   -204}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -101,    205,   -204}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -306,    205,      0}, 0, {   478,      0}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -511,    205,    205}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -101,    205,    205}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -101,    205,   -204}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   307,      0,    205}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   102,      0,      0}, 0, {   480,      0}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   307,      0,   -204}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   922,   -204,      0}, 0, {   478,      0}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   717,   -204,    205}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   717,   -204,   -204}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n};\n\n// 0x07028190 - 0x07028280\nstatic const Vtx rr_seg7_vertex_07028190[] = {\n    {{{   102,      0,      0}, 0, {   480,      0}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -101,      0,   -204}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   307,      0,   -204}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -101,      0,    205}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   307,      0,    205}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   717,   -204,    205}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   922,   -204,      0}, 0, {   480,      0}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  1126,   -204,    205}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   717,   -204,   -204}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  1126,   -204,   -204}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   307,   -409,    205}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   512,   -409,      0}, 0, {   480,      0}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   717,   -409,    205}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  1126,   -204,   -204}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   717,   -409,   -204}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n};\n\n// 0x07028280 - 0x07028380\nstatic const Vtx rr_seg7_vertex_07028280[] = {\n    {{{   512,   -409,      0}, 0, {   478,      0}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   307,   -409,    205}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   307,   -409,   -204}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   512,   -409,      0}, 0, {   480,      0}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   717,   -409,   -204}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   307,   -613,    205}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   102,   -613,      0}, 0, {   480,      0}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   307,   -613,   -204}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -921,   -613,    205}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -716,   -613,      0}, 0, {   480,      0}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -511,   -613,    205}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -921,   -613,   -204}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -511,   -613,   -204}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -716,   -613,      0}, 0, {   478,      0}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -921,   -613,    205}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -511,   -613,   -204}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n};\n\n// 0x07028380 - 0x07028470\nstatic const Vtx rr_seg7_vertex_07028380[] = {\n    {{{  -306,   -409,      0}, 0, {   480,      0}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -511,   -409,   -204}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -101,   -409,   -204}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   102,   -613,      0}, 0, {   478,      0}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -101,   -613,    205}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -101,   -613,   -204}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   102,   -613,      0}, 0, {   480,      0}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   307,   -613,   -204}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -101,   -613,    205}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{   307,   -613,    205}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -511,   -409,    205}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -101,   -409,    205}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -306,   -409,      0}, 0, {   478,      0}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -511,   -409,    205}, 0, {  1160,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n    {{{  -101,   -409,   -204}, 0, {  -200,   1332}, {0x35, 0x35, 0x00, 0xff}}},\n};\n\n// 0x07028470 - 0x07028570\nstatic const Vtx rr_seg7_vertex_07028470[] = {\n    {{{   307,      0,    205}, 0, {  1160,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{   102,    282,      0}, 0, {   480,      0}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -101,      0,    205}, 0, {  -200,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -511,    410,    205}, 0, {  1160,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -716,    691,      0}, 0, {   480,      0}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -921,    410,    205}, 0, {  -200,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -511,    410,   -204}, 0, {  1160,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -921,    410,   -204}, 0, {  -200,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -101,    205,   -204}, 0, {  1160,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -511,    205,   -204}, 0, {  -200,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -306,    486,      0}, 0, {   480,      0}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -101,    205,    205}, 0, {  1160,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -511,    205,    205}, 0, {  -200,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{   717,   -409,   -204}, 0, {  1160,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{   307,   -409,   -204}, 0, {  -200,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{   512,   -127,      0}, 0, {   480,      0}, {0xcc, 0xb7, 0x00, 0xff}}},\n};\n\n// 0x07028570 - 0x07028650\nstatic const Vtx rr_seg7_vertex_07028570[] = {\n    {{{   307,      0,   -204}, 0, {  1160,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -101,      0,   -204}, 0, {  -200,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{   102,    282,      0}, 0, {   480,      0}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  1126,   -204,   -204}, 0, {  1160,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{   717,   -204,   -204}, 0, {  -200,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{   922,     77,      0}, 0, {   480,      0}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  1126,   -204,    205}, 0, {  1160,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{   717,   -204,    205}, 0, {  -200,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{   717,   -409,    205}, 0, {  1160,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{   512,   -127,      0}, 0, {   480,      0}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{   307,   -409,    205}, 0, {  -200,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -101,   -409,   -204}, 0, {  1160,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -511,   -409,   -204}, 0, {  -200,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -306,   -127,      0}, 0, {   480,      0}, {0xcc, 0xb7, 0x00, 0xff}}},\n};\n\n// 0x07028650 - 0x07028720\nstatic const Vtx rr_seg7_vertex_07028650[] = {\n    {{{  -511,   -613,   -204}, 0, {  1160,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -921,   -613,   -204}, 0, {  -200,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -716,   -332,      0}, 0, {   480,      0}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -511,   -613,    205}, 0, {  1160,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -921,   -613,    205}, 0, {  -200,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{   307,   -613,    205}, 0, {  1160,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{   102,   -332,      0}, 0, {   480,      0}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -101,   -613,    205}, 0, {  -200,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{   307,   -613,   -204}, 0, {  1160,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -101,   -613,   -204}, 0, {  -200,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -101,   -409,    205}, 0, {  1160,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -306,   -127,      0}, 0, {   480,      0}, {0xcc, 0xb7, 0x00, 0xff}}},\n    {{{  -511,   -409,    205}, 0, {  -200,   1332}, {0xcc, 0xb7, 0x00, 0xff}}},\n};\n\n// 0x07028720 - 0x07028D30\nstatic const Gfx rr_seg7_dl_07028720[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_070266C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_070267B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_070268A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07026990, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(rr_seg7_vertex_07026A70, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07026B50, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07026C40, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07026D30, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07026E20, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9,  5, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07026F20, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07027010, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  8,  4, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 12, 13, 10, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07027100, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  3,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 13,  9, 0x0),\n    gsSP2Triangles( 0, 14,  1, 0x0, 14, 15,  1, 0x0),\n    gsSPVertex(rr_seg7_vertex_07027200, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle(10, 14, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_070272F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_070273F0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_070274D0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_070275B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_070276A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 4, 14,  5, 0x0),\n    gsSPVertex(rr_seg7_vertex_07027790, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_07027880, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07027970, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07027A60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(rr_seg7_vertex_07027B50, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(rr_seg7_vertex_07027C40, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  1,  7, 0x0,  6,  7,  8, 0x0),\n    gsSP1Triangle( 0,  9,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07028D30 - 0x07028FA8\nstatic const Gfx rr_seg7_dl_07028D30[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(rr_seg7_vertex_07027CE0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07027DD0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07027EC0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07027FB0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 7, 11, 12, 0x0, 13,  7,  6, 0x0),\n    gsSPVertex(rr_seg7_vertex_07028090, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  4, 0x0,  8,  3,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07028190, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  7,  6, 13, 0x0),\n    gsSP1Triangle(12, 11, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07028280, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 11, 0x0),\n    gsSP1Triangle(10,  9, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07028380, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  5,  7, 0x0,  8,  6,  9, 0x0),\n    gsSP2Triangles(10,  0, 11, 0x0, 12, 13,  1, 0x0),\n    gsSP1Triangle(11,  0, 14, 0x0),\n    gsSPVertex(rr_seg7_vertex_07028470, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  4, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(11, 10, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(rr_seg7_vertex_07028570, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  5,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP1Triangle(11, 12, 13, 0x0),\n    gsSPVertex(rr_seg7_vertex_07028650, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  9,  6, 0x0),\n    gsSP1Triangle(10, 11, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07028FA8 - 0x07029038\nconst Gfx rr_seg7_dl_07028FA8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_07028720),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(rr_seg7_dl_07028D30),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/sa/areas/1/1/model.inc.c",
    "content": "// 0x07000000 - 0x07000018\nstatic const Lights1 sa_lights = gdSPDefLights1(\n    0x00, 0x7f, 0x99,\n    0x00, 0xd4, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07000018 - 0x070000D8\nstatic const Vtx sa_vertex_07000018[] = {\n    {{{ -3071,  -4607,   3072}, 0, { -2584,  -5142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,  -4607,    512}, 0, {     0,  -2586}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,  -4607,   -511}, 0, {     0,  -1564}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3071,  -4607,  -3071}, 0, { -2584,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3072,  -4607,   3072}, 0, {  3546,  -5142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,  -4607,    512}, 0, {   990,  -2586}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,  -4607,   -511}, 0, {   990,  -1566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3072,  -4607,  -3071}, 0, {  3544,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3072,      0,   3072}, 0, { -2586,   3544}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3071,      0,  -3071}, 0, {  3546,  -2588}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3072,      0,  -3071}, 0, {  3546,   3544}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3071,      0,   3072}, 0, { -2586,  -2588}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x070000D8 - 0x070001C8\nstatic const Vtx sa_vertex_070000D8[] = {\n    {{{ -3071,  -1545,  -1074}, 0, {   990,    970}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3276,  -2549,  -1074}, 0, {  1398,  -1034}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3071,  -2549,  -1074}, 0, {   990,  -1034}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3071,  -4607,  -2661}, 0, { -4118,   5076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3071,  -3122,    502}, 0, {  2196,   2112}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3071,  -4607,   2662}, 0, {  6508,   5076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3071,  -1545,   1075}, 0, {  3340,  -1034}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3071,      0,   2662}, 0, {  6508,  -4120}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3071,  -2549,   1075}, 0, {  3340,    970}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3071,   -972,    502}, 0, {  2196,  -2178}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3071,      0,  -2661}, 0, { -4118,  -4120}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3071,   -972,   -501}, 0, {   192,  -2178}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3071,  -1545,  -1074}, 0, {  -950,  -1034}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3071,  -2549,  -1074}, 0, {  -950,    970}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3071,  -3122,   -501}, 0, {   192,   2112}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070001C8 - 0x070002C8\nstatic const Vtx sa_vertex_070001C8[] = {\n    {{{ -3071,  -2549,   1075}, 0, {   990,  -1034}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3276,  -1545,   1075}, 0, {  1398,    970}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3071,  -1545,   1075}, 0, {   990,    970}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3071,  -1545,  -1074}, 0, {   990,    970}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3276,  -1545,  -1074}, 0, {  1398,    970}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3276,  -2549,  -1074}, 0, {  1398,  -1034}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3276,  -2549,  -1074}, 0, {  1398,  -1034}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -3276,  -3122,   -501}, 0, {  1398,  -2178}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -3071,  -3122,   -501}, 0, {   990,  -2178}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -3071,  -2549,  -1074}, 0, {   990,  -1034}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -3276,   -972,   -501}, 0, {  1398,   2112}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{ -3276,  -1545,  -1074}, 0, {  1398,    970}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{ -3071,  -1545,  -1074}, 0, {   990,    970}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{ -3071,   -972,    502}, 0, {  1972,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3276,   -972,   -501}, 0, {     0,    582}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3071,   -972,   -501}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x070002C8 - 0x070003C8\nstatic const Vtx sa_vertex_070002C8[] = {\n    {{{ -3071,   -972,    502}, 0, {  1972,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3276,   -972,    502}, 0, {  1972,    582}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3276,   -972,   -501}, 0, {     0,    582}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3071,  -3122,   -501}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3276,  -3122,    502}, 0, {  1972,    582}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3071,  -3122,    502}, 0, {  1972,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3071,  -2549,   1075}, 0, {   990,  -1034}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3276,  -2549,   1075}, 0, {  1398,  -1034}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3276,  -1545,   1075}, 0, {  1398,    970}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3276,  -1545,   1075}, 0, {  1398,    970}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{ -3071,   -972,    502}, 0, {   990,   2112}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{ -3071,  -1545,   1075}, 0, {   990,    970}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{ -3276,   -972,    502}, 0, {  1398,   2112}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{ -3276,  -2549,   1075}, 0, {  1398,  -1034}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{ -3071,  -3122,    502}, 0, {   990,  -2178}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{ -3276,  -3122,    502}, 0, {  1398,  -2178}, {0x00, 0x59, 0xa7, 0xff}}},\n};\n\n// 0x070003C8 - 0x070004B8\nstatic const Vtx sa_vertex_070003C8[] = {\n    {{{ -3276,  -2549,   1075}, 0, {  1398,  -1034}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{ -3071,  -2549,   1075}, 0, {   990,  -1034}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{ -3071,  -3122,    502}, 0, {   990,  -2178}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{ -3071,  -3122,   -501}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3276,  -3122,   -501}, 0, {     0,    582}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3276,  -3122,    502}, 0, {  1972,    582}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3276,   -972,   -501}, 0, {  1398,   2112}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{ -3071,  -1545,  -1074}, 0, {   990,    970}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{ -3071,   -972,   -501}, 0, {   990,   2112}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{ -3071,  -2549,  -1074}, 0, {  -950,    970}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3071,  -3122,   -501}, 0, {   192,   2112}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3071,  -4607,  -2661}, 0, { -4118,   5076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3071,   -972,   -501}, 0, {   192,  -2178}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3071,  -1545,  -1074}, 0, {  -950,  -1034}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3071,      0,  -2661}, 0, { -4118,  -4120}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070004B8 - 0x070005B8\nstatic const Vtx sa_vertex_070004B8[] = {\n    {{{ -3071,      0,   2662}, 0, {  6508,  -4120}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3071,  -1545,   1075}, 0, {  3340,  -1034}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3071,   -972,    502}, 0, {  2196,  -2178}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3071,  -3122,    502}, 0, {  2196,   2112}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3071,  -2549,   1075}, 0, {  3340,    970}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3071,  -4607,   2662}, 0, {  6508,   5076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3072,  -2549,  -1074}, 0, {     0,  -1034}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3277,  -1545,  -1074}, 0, {  -438,    970}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3072,  -1545,  -1074}, 0, {     0,    970}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3072,  -1545,   1075}, 0, {     0,    970}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{  3072,   -972,    502}, 0, {     0,   2112}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{  3277,   -972,    502}, 0, {  -438,   2112}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{  3277,  -1545,   1075}, 0, {  -438,    970}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{  3072,  -1545,   1075}, 0, {     0,    970}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3277,  -1545,   1075}, 0, {  -438,    970}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3277,  -2549,   1075}, 0, {  -438,  -1034}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070005B8 - 0x07000698\nstatic const Vtx sa_vertex_070005B8[] = {\n    {{{  3072,   -972,   -501}, 0, {     0,   2112}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{  3072,  -1545,  -1074}, 0, {     0,    970}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{  3277,  -1545,  -1074}, 0, {  -438,    970}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{  3277,   -972,   -501}, 0, {  -438,   2112}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{  3072,  -2549,  -1074}, 0, {     0,  -1034}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3277,  -2549,  -1074}, 0, {  -438,  -1034}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3277,  -1545,  -1074}, 0, {  -438,    970}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3277,  -3122,    502}, 0, {  -438,  -2178}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{  3072,  -2549,   1075}, 0, {     0,  -1034}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{  3277,  -2549,   1075}, 0, {  -438,  -1034}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{  3072,  -3122,    502}, 0, {     0,  -2178}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{  3072,  -1545,   1075}, 0, {     0,    970}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3277,  -2549,   1075}, 0, {  -438,  -1034}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3072,  -2549,   1075}, 0, {     0,  -1034}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07000698 - 0x07000798\nstatic const Vtx sa_vertex_07000698[] = {\n    {{{  3072,  -2549,  -1074}, 0, {     0,  -1034}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{  3277,  -3122,   -501}, 0, {  -438,  -2178}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{  3277,  -2549,  -1074}, 0, {  -438,  -1034}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{  3072,  -3122,   -501}, 0, {     0,  -2178}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{  3072,  -4607,   2662}, 0, {  6508,   5076}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,  -2549,   1075}, 0, {  3340,    970}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,  -3122,    502}, 0, {  2196,   2112}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,  -3122,    502}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3277,  -3122,   -501}, 0, {  1972,    582}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3072,  -3122,   -501}, 0, {  1972,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3072,   -972,    502}, 0, {  2196,  -2178}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,  -1545,   1075}, 0, {  3340,  -1034}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,      0,   2662}, 0, {  6508,  -4120}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,      0,  -2661}, 0, { -4118,  -4120}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,  -1545,  -1074}, 0, {  -950,  -1034}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,   -972,   -501}, 0, {   192,  -2178}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07000798 - 0x07000898\nstatic const Vtx sa_vertex_07000798[] = {\n    {{{  3072,  -4607,  -2661}, 0, { -4118,   5076}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,  -3122,   -501}, 0, {   192,   2112}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,  -2549,  -1074}, 0, {  -950,    970}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,  -3122,    502}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3277,  -3122,    502}, 0, {     0,    582}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3277,  -3122,   -501}, 0, {  1972,    582}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3072,   -972,   -501}, 0, {  1972,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3277,   -972,    502}, 0, {     0,    582}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3072,   -972,    502}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3277,   -972,   -501}, 0, {  1972,    582}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3072,      0,   2662}, 0, {  6508,  -4120}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,  -2549,   1075}, 0, {  3340,    970}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,  -4607,   2662}, 0, {  6508,   5076}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,  -3122,    502}, 0, {  2196,   2112}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,      0,  -2661}, 0, { -4118,  -4120}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,  -1545,  -1074}, 0, {  -950,  -1034}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07000898 - 0x07000998\nstatic const Vtx sa_vertex_07000898[] = {\n    {{{  3072,      0,   2662}, 0, {  6508,  -4120}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,      0,  -2661}, 0, { -4118,  -4120}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,   -972,   -501}, 0, {   192,  -2178}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,   -972,    502}, 0, {  2196,  -2178}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,  -1545,   1075}, 0, {  3340,  -1034}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,  -2549,   1075}, 0, {  3340,    970}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2661,      0,   3072}, 0, {  6508,  -4120}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2662,      0,   3072}, 0, { -4118,  -4120}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   502,   -972,   3072}, 0, {   192,  -2178}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -501,   -972,   3072}, 0, {  2196,  -2178}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1074,  -1545,   3072}, 0, {  3340,  -1034}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1074,  -2549,   3072}, 0, {  3340,    970}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2661,  -4607,   3072}, 0, {  6508,   5076}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   502,  -3122,   3072}, 0, {   192,   2112}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2662,  -4607,   3072}, 0, { -4118,   5076}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -501,  -3122,   3072}, 0, {  2196,   2112}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07000998 - 0x07000A88\nstatic const Vtx sa_vertex_07000998[] = {\n    {{{  1075,  -2549,   3072}, 0, {   990,  -1034}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{   502,  -3122,   3277}, 0, {  1398,  -2178}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{  1075,  -2549,   3277}, 0, {  1398,  -1034}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{  2662,      0,   3072}, 0, { -4118,  -4120}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1075,  -2549,   3072}, 0, {  -950,    970}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1075,  -1545,   3072}, 0, {  -950,  -1034}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2662,  -4607,   3072}, 0, { -4118,   5076}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1075,  -2549,   3072}, 0, {   990,  -1034}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1075,  -1545,   3277}, 0, {  1398,    970}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1075,  -1545,   3072}, 0, {   990,    970}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1075,  -2549,   3277}, 0, {  1398,  -1034}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   502,   -972,   3072}, 0, {   990,   2112}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  1075,  -1545,   3277}, 0, {  1398,    970}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{   502,   -972,   3277}, 0, {  1398,   2112}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  1075,  -1545,   3072}, 0, {   990,    970}, {0xa7, 0xa7, 0x00, 0xff}}},\n};\n\n// 0x07000A88 - 0x07000B68\nstatic const Vtx sa_vertex_07000A88[] = {\n    {{{  -501,  -3122,   3072}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -501,  -3122,   3277}, 0, {     0,    582}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   502,  -3122,   3277}, 0, {  1972,    582}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   502,   -972,   3072}, 0, {  1972,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   502,   -972,   3277}, 0, {  1972,    582}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -501,   -972,   3277}, 0, {     0,    582}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -501,   -972,   3072}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1074,  -1545,   3072}, 0, {   990,    970}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1074,  -2549,   3277}, 0, {  1398,  -1034}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1074,  -2549,   3072}, 0, {   990,  -1034}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1074,  -1545,   3277}, 0, {  1398,    970}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -501,  -3122,   3277}, 0, {  1398,  -2178}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{ -1074,  -2549,   3072}, 0, {   990,  -1034}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{ -1074,  -2549,   3277}, 0, {  1398,  -1034}, {0x59, 0x59, 0x00, 0xff}}},\n};\n\n// 0x07000B68 - 0x07000C58\nstatic const Vtx sa_vertex_07000B68[] = {\n    {{{ -1074,  -1545,   3072}, 0, {   990,    970}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{  -501,   -972,   3277}, 0, {  1398,   2112}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{ -1074,  -1545,   3277}, 0, {  1398,    970}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{ -2661,  -4607,   3072}, 0, {  6508,   5076}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1074,  -2549,   3072}, 0, {  3340,    970}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -501,  -3122,   3072}, 0, {  2196,   2112}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -501,  -3122,   3072}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   502,  -3122,   3277}, 0, {  1972,    582}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   502,  -3122,   3072}, 0, {  1972,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2662,  -4607,   3072}, 0, { -4118,   5076}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   502,  -3122,   3072}, 0, {   192,   2112}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1075,  -2549,   3072}, 0, {  -950,    970}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2662,      0,   3072}, 0, { -4118,  -4120}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1075,  -1545,   3072}, 0, {  -950,  -1034}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   502,   -972,   3072}, 0, {   192,  -2178}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07000C58 - 0x07000D58\nstatic const Vtx sa_vertex_07000C58[] = {\n    {{{  -501,   -972,   3072}, 0, {  2196,  -2178}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1074,  -1545,   3072}, 0, {  3340,  -1034}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2661,      0,   3072}, 0, {  6508,  -4120}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1075,  -2549,   3072}, 0, {   990,  -1034}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{   502,  -3122,   3072}, 0, {   990,  -2178}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{   502,  -3122,   3277}, 0, {  1398,  -2178}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{  -501,  -3122,   3277}, 0, {  1398,  -2178}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{  -501,  -3122,   3072}, 0, {   990,  -2178}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{ -1074,  -2549,   3072}, 0, {   990,  -1034}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{ -1074,  -1545,   3072}, 0, {   990,    970}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{  -501,   -972,   3072}, 0, {   990,   2112}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{  -501,   -972,   3277}, 0, {  1398,   2112}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{ -1074,  -2549,  -3071}, 0, {   990,  -1034}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1074,  -1545,  -3276}, 0, {  1398,    970}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1074,  -1545,  -3071}, 0, {   990,    970}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1074,  -2549,  -3276}, 0, {  1398,  -1034}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07000D58 - 0x07000E48\nstatic const Vtx sa_vertex_07000D58[] = {\n    {{{ -1074,  -1545,  -3276}, 0, {  1398,    970}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{  -501,   -972,  -3276}, 0, {  1398,   2112}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{  -501,   -972,  -3071}, 0, {   990,   2112}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{ -1074,  -1545,  -3071}, 0, {   990,    970}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{   502,   -972,  -3276}, 0, {  1398,   2112}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  1075,  -1545,  -3276}, 0, {  1398,    970}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  1075,  -1545,  -3071}, 0, {   990,    970}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{   502,   -972,  -3071}, 0, {   990,   2112}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  1075,  -1545,  -3071}, 0, {   990,    970}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1075,  -1545,  -3276}, 0, {  1398,    970}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1075,  -2549,  -3276}, 0, {  1398,  -1034}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1074,  -2549,  -3276}, 0, {  1398,  -1034}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{ -1074,  -2549,  -3071}, 0, {   990,  -1034}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{  -501,  -3122,  -3071}, 0, {   990,  -2178}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{  -501,  -3122,  -3276}, 0, {  1398,  -2178}, {0x59, 0x59, 0x00, 0xff}}},\n};\n\n// 0x07000E48 - 0x07000F48\nstatic const Vtx sa_vertex_07000E48[] = {\n    {{{  1075,  -2549,  -3276}, 0, {  1398,  -1034}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{   502,  -3122,  -3276}, 0, {  1398,  -2178}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{   502,  -3122,  -3071}, 0, {   990,  -2178}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{  1075,  -2549,  -3071}, 0, {   990,  -1034}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{  1075,  -1545,  -3071}, 0, {   990,    970}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1075,  -2549,  -3276}, 0, {  1398,  -1034}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1075,  -2549,  -3071}, 0, {   990,  -1034}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -501,  -3122,  -3071}, 0, {  2196,   2112}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1074,  -2549,  -3071}, 0, {  3340,    970}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2661,  -4607,  -3071}, 0, {  6508,   5076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2661,      0,  -3071}, 0, {  6508,  -4120}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1074,  -1545,  -3071}, 0, {  3340,  -1034}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -501,   -972,  -3071}, 0, {  2196,  -2178}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   502,   -972,  -3071}, 0, {   192,  -2178}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1075,  -1545,  -3071}, 0, {  -950,  -1034}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2662,      0,  -3071}, 0, { -4118,  -4120}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07000F48 - 0x07001048\nstatic const Vtx sa_vertex_07000F48[] = {\n    {{{  2662,  -4607,  -3071}, 0, { -4118,   5076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   502,  -3122,  -3071}, 0, {   192,   2112}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -501,  -3122,  -3071}, 0, {  2196,   2112}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1075,  -2549,  -3071}, 0, {  -950,    970}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   502,  -3122,  -3071}, 0, {  -214,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -501,  -3122,  -3276}, 0, {  1788,  -1668}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -501,  -3122,  -3071}, 0, {  1788,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   502,  -3122,  -3276}, 0, {  -214,  -1668}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -501,   -972,  -3071}, 0, {  1788,  -2076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   502,   -972,  -3276}, 0, {  -214,  -1668}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   502,   -972,  -3071}, 0, {  -214,  -2076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -501,   -972,  -3276}, 0, {  1788,  -1668}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2661,  -4607,  -3071}, 0, {  6508,   5076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1074,  -1545,  -3071}, 0, {  3340,  -1034}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2661,      0,  -3071}, 0, {  6508,  -4120}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1074,  -2549,  -3071}, 0, {  3340,    970}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07001048 - 0x07001128\nstatic const Vtx sa_vertex_07001048[] = {\n    {{{  1075,  -1545,  -3071}, 0, {  -950,  -1034}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2662,  -4607,  -3071}, 0, { -4118,   5076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2662,      0,  -3071}, 0, { -4118,  -4120}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1075,  -2549,  -3071}, 0, {  -950,    970}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -501,   -972,  -3071}, 0, {  2196,  -2178}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2661,      0,  -3071}, 0, {  6508,  -4120}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   502,   -972,  -3071}, 0, {   192,  -2178}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   512,  -4607,    512}, 0, {  5078,    990}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{   307,  -4402,    307}, 0, {  4056,      0}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{  -306,  -4402,    307}, 0, {   990,      0}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{  -511,  -4607,    512}, 0, {     0,    990}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{  -511,  -4607,    512}, 0, {     0,    990}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{  -306,  -4402,    307}, 0, {   990,      0}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{  -306,  -4402,   -306}, 0, {  4056,      0}, {0xa7, 0x59, 0x00, 0xff}}},\n};\n\n// 0x07001128 - 0x07001218\nstatic const Vtx sa_vertex_07001128[] = {\n    {{{   512,  -4607,   -511}, 0, {  5078,    990}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{   307,  -4402,    307}, 0, {   990,      0}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{   512,  -4607,    512}, 0, {     0,    990}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{   307,  -4402,   -306}, 0, {  4056,      0}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{  -511,  -4607,   -511}, 0, {     0,    990}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{   307,  -4402,   -306}, 0, {  4056,      0}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{   512,  -4607,   -511}, 0, {  5078,    990}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{  -306,  -4402,   -306}, 0, {   990,      0}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{  -511,  -4607,    512}, 0, {     0,    990}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{  -306,  -4402,   -306}, 0, {  4056,      0}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{  -511,  -4607,   -511}, 0, {  5078,    990}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{   307,  -4402,   -306}, 0, {   990,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -306,  -4402,   -306}, 0, {     0,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -306,  -4402,    307}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   307,  -4402,    307}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07001218 - 0x07001308\nstatic const Vtx sa_vertex_07001218[] = {\n    {{{  2662,  -4607,  -2866}, 0, {   224,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2662,      0,  -3071}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2662,  -4607,  -3071}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2867,  -4607,   2662}, 0, {   224,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3072,      0,   2662}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3072,  -4607,   2662}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2662,  -4607,   2867}, 0, {   734,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2867,      0,   2662}, 0, {   224,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2867,  -4607,   2662}, 0, {   224,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2867,      0,   2662}, 0, {   224,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2662,      0,   2867}, 0, {   734,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2662,  -4607,   3072}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2662,      0,   2867}, 0, {   734,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2662,  -4607,   2867}, 0, {   734,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2662,      0,   3072}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001308 - 0x070013E8\nstatic const Vtx sa_vertex_07001308[] = {\n    {{{  2867,  -4607,  -2661}, 0, {   734,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2662,      0,  -2866}, 0, {   224,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2662,  -4607,  -2866}, 0, {   224,   2012}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2662,  -4607,  -2866}, 0, {   224,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2662,      0,  -2866}, 0, {   224,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2662,      0,  -3071}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2661,  -4607,  -3071}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2661,      0,  -3071}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2661,      0,  -2866}, 0, {   734,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2867,      0,  -2661}, 0, {   734,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3072,  -4607,  -2661}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2867,      0,  -2661}, 0, {   734,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2867,  -4607,  -2661}, 0, {   734,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3072,      0,  -2661}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070013E8 - 0x070014C8\nstatic const Vtx sa_vertex_070013E8[] = {\n    {{{ -2866,  -4607,  -2661}, 0, {   224,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2866,      0,  -2661}, 0, {   224,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3071,      0,  -2661}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3071,  -4607,  -2661}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2661,  -4607,  -2866}, 0, {   734,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2866,      0,  -2661}, 0, {   224,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2866,  -4607,  -2661}, 0, {   224,   2012}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2661,      0,  -2866}, 0, {   734,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2661,  -4607,  -3071}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2661,      0,  -2866}, 0, {   734,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2661,  -4607,  -2866}, 0, {   734,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2866,  -4607,   2662}, 0, {   734,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2661,      0,   2867}, 0, {   224,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2661,  -4607,   2867}, 0, {   224,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x070014C8 - 0x070015B8\nstatic const Vtx sa_vertex_070014C8[] = {\n    {{{ -2661,  -4607,   2867}, 0, {   224,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2661,      0,   2867}, 0, {   224,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2661,      0,   3072}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2661,  -4607,   3072}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2866,  -4607,   2662}, 0, {   734,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2866,      0,   2662}, 0, {   734,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2661,      0,   2867}, 0, {   224,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -3071,  -4607,   2662}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2866,      0,   2662}, 0, {   734,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2866,  -4607,   2662}, 0, {   734,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3071,      0,   2662}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3173,  -2083,   1075}, 0, {   224,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3173,  -2047,      0}, 0, {   480,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3173,  -2011,     36}, 0, {   734,   1944}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3173,  -2011,   1075}, 0, {   734,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070015B8 - 0x070016B8\nstatic const Vtx sa_vertex_070015B8[] = {\n    {{{ -3173,  -2011,     36}, 0, {   734,   1944}, {0x29, 0x77, 0x00, 0xff}}},\n    {{{ -3276,  -1975,   1075}, 0, {   990,      0}, {0x29, 0x77, 0x00, 0xff}}},\n    {{{ -3173,  -2011,   1075}, 0, {   734,      0}, {0x29, 0x77, 0x00, 0xff}}},\n    {{{ -3276,  -1975,     72}, 0, {   990,   1876}, {0x29, 0x77, 0x00, 0xff}}},\n    {{{ -3173,  -2083,   1075}, 0, {   224,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3173,  -2083,     36}, 0, {   224,   1944}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3173,  -2047,      0}, 0, {   480,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3173,  -2083,   1075}, 0, {   224,      0}, {0x29, 0x89, 0x00, 0xff}}},\n    {{{ -3276,  -2119,     72}, 0, {     0,   1876}, {0x29, 0x89, 0x00, 0xff}}},\n    {{{ -3173,  -2083,     36}, 0, {   224,   1944}, {0x29, 0x89, 0x00, 0xff}}},\n    {{{ -3276,  -2119,   1075}, 0, {     0,      0}, {0x29, 0x89, 0x00, 0xff}}},\n    {{{ -3173,  -3122,     36}, 0, {   734,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3173,  -2083,     36}, 0, {   734,   1944}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3173,  -2083,     36}, 0, {   734,   1944}, {0x29, 0x00, 0x77, 0xff}}},\n    {{{ -3276,  -2119,     72}, 0, {   990,   1876}, {0x29, 0x00, 0x77, 0xff}}},\n    {{{ -3276,  -3122,     72}, 0, {   990,      0}, {0x29, 0x00, 0x77, 0xff}}},\n};\n\n// 0x070016B8 - 0x070017B8\nstatic const Vtx sa_vertex_070016B8[] = {\n    {{{ -3173,  -2083,     36}, 0, {   734,   1944}, {0x29, 0x00, 0x77, 0xff}}},\n    {{{ -3276,  -3122,     72}, 0, {   990,      0}, {0x29, 0x00, 0x77, 0xff}}},\n    {{{ -3173,  -3122,     36}, 0, {   734,      0}, {0x29, 0x00, 0x77, 0xff}}},\n    {{{ -3173,  -3122,     36}, 0, {   734,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3173,  -3122,    -35}, 0, {   224,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3173,  -2083,    -35}, 0, {   224,   1944}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3173,  -2047,      0}, 0, {   480,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3173,  -3122,    -35}, 0, {   224,      0}, {0x29, 0x00, 0x89, 0xff}}},\n    {{{ -3276,  -2119,    -71}, 0, {     0,   1876}, {0x29, 0x00, 0x89, 0xff}}},\n    {{{ -3173,  -2083,    -35}, 0, {   224,   1944}, {0x29, 0x00, 0x89, 0xff}}},\n    {{{ -3276,  -3122,    -71}, 0, {     0,      0}, {0x29, 0x00, 0x89, 0xff}}},\n    {{{ -3173,  -2011,    -35}, 0, {   734,   1944}, {0x29, 0x00, 0x89, 0xff}}},\n    {{{ -3276,  -1975,    -71}, 0, {   990,   1876}, {0x29, 0x00, 0x89, 0xff}}},\n    {{{ -3276,   -972,    -71}, 0, {   990,      0}, {0x29, 0x00, 0x89, 0xff}}},\n    {{{ -3173,  -2011,    -35}, 0, {   734,   1944}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3173,  -2011,  -1074}, 0, {   734,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070017B8 - 0x070018A8\nstatic const Vtx sa_vertex_070017B8[] = {\n    {{{ -3173,  -2083,    -35}, 0, {   224,   1944}, {0x29, 0x89, 0x00, 0xff}}},\n    {{{ -3276,  -2119,  -1074}, 0, {     0,      0}, {0x29, 0x89, 0x00, 0xff}}},\n    {{{ -3173,  -2083,  -1074}, 0, {   224,      0}, {0x29, 0x89, 0x00, 0xff}}},\n    {{{ -3276,  -2119,    -71}, 0, {     0,   1876}, {0x29, 0x89, 0x00, 0xff}}},\n    {{{ -3173,  -2083,    -35}, 0, {   224,   1944}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3173,  -2083,  -1074}, 0, {   224,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3173,  -2011,  -1074}, 0, {   734,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3173,  -2011,  -1074}, 0, {   734,      0}, {0x29, 0x77, 0x00, 0xff}}},\n    {{{ -3276,  -1975,    -71}, 0, {   990,   1876}, {0x29, 0x77, 0x00, 0xff}}},\n    {{{ -3173,  -2011,    -35}, 0, {   734,   1944}, {0x29, 0x77, 0x00, 0xff}}},\n    {{{ -3276,  -1975,  -1074}, 0, {   990,      0}, {0x29, 0x77, 0x00, 0xff}}},\n    {{{ -3173,  -2011,     36}, 0, {   224,   1944}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3173,  -2011,    -35}, 0, {   734,   1944}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3173,   -972,    -35}, 0, {   734,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3173,  -2047,      0}, 0, {   480,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070018A8 - 0x070019A8\nstatic const Vtx sa_vertex_070018A8[] = {\n    {{{ -3173,  -2011,    -35}, 0, {   734,   1944}, {0x29, 0x00, 0x89, 0xff}}},\n    {{{ -3276,   -972,    -71}, 0, {   990,      0}, {0x29, 0x00, 0x89, 0xff}}},\n    {{{ -3173,   -972,    -35}, 0, {   734,      0}, {0x29, 0x00, 0x89, 0xff}}},\n    {{{  3174,  -2083,  -1074}, 0, {   224,      0}, {0xd7, 0x89, 0x00, 0xff}}},\n    {{{  3277,  -2119,    -71}, 0, {     0,   1876}, {0xd7, 0x89, 0x00, 0xff}}},\n    {{{  3174,  -2083,    -35}, 0, {   224,   1944}, {0xd7, 0x89, 0x00, 0xff}}},\n    {{{ -3173,  -2011,     36}, 0, {   224,   1944}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3173,   -972,    -35}, 0, {   734,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3173,   -972,     36}, 0, {   224,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3173,   -972,     36}, 0, {   224,      0}, {0x29, 0x00, 0x77, 0xff}}},\n    {{{ -3276,   -972,     72}, 0, {     0,      0}, {0x29, 0x00, 0x77, 0xff}}},\n    {{{ -3276,  -1975,     72}, 0, {     0,   1876}, {0x29, 0x00, 0x77, 0xff}}},\n    {{{ -3173,  -2011,     36}, 0, {   224,   1944}, {0x29, 0x00, 0x77, 0xff}}},\n    {{{  3174,  -2011,    -35}, 0, {   734,   1944}, {0xd7, 0x77, 0x00, 0xff}}},\n    {{{  3277,  -1975,  -1074}, 0, {   990,      0}, {0xd7, 0x77, 0x00, 0xff}}},\n    {{{  3174,  -2011,  -1074}, 0, {   734,      0}, {0xd7, 0x77, 0x00, 0xff}}},\n};\n\n// 0x070019A8 - 0x07001AA8\nstatic const Vtx sa_vertex_070019A8[] = {\n    {{{  3174,  -2011,  -1074}, 0, {   734,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3174,  -2083,    -35}, 0, {   224,   1944}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3174,  -2047,      0}, 0, {   480,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3174,  -2083,  -1074}, 0, {   224,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3174,  -2011,    -35}, 0, {   734,   1944}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3174,  -2011,    -35}, 0, {   734,   1944}, {0xd7, 0x77, 0x00, 0xff}}},\n    {{{  3277,  -1975,    -71}, 0, {   990,   1876}, {0xd7, 0x77, 0x00, 0xff}}},\n    {{{  3277,  -1975,  -1074}, 0, {   990,      0}, {0xd7, 0x77, 0x00, 0xff}}},\n    {{{  3174,  -2011,   1075}, 0, {   734,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3174,  -2011,     36}, 0, {   734,   1944}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3174,  -2083,  -1074}, 0, {   224,      0}, {0xd7, 0x89, 0x00, 0xff}}},\n    {{{  3277,  -2119,  -1074}, 0, {     0,      0}, {0xd7, 0x89, 0x00, 0xff}}},\n    {{{  3277,  -2119,    -71}, 0, {     0,   1876}, {0xd7, 0x89, 0x00, 0xff}}},\n    {{{  3174,  -3122,    -35}, 0, {   224,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3174,  -3122,     36}, 0, {   734,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3174,  -2083,     36}, 0, {   734,   1944}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07001AA8 - 0x07001B98\nstatic const Vtx sa_vertex_07001AA8[] = {\n    {{{  3174,  -2083,    -35}, 0, {   224,   1944}, {0xd7, 0x00, 0x89, 0xff}}},\n    {{{  3277,  -3122,    -71}, 0, {     0,      0}, {0xd7, 0x00, 0x89, 0xff}}},\n    {{{  3174,  -3122,    -35}, 0, {   224,      0}, {0xd7, 0x00, 0x89, 0xff}}},\n    {{{  3277,  -2119,    -71}, 0, {     0,   1876}, {0xd7, 0x00, 0x89, 0xff}}},\n    {{{  3174,  -3122,     36}, 0, {   734,      0}, {0xd7, 0x00, 0x77, 0xff}}},\n    {{{  3277,  -2119,     72}, 0, {   990,   1876}, {0xd7, 0x00, 0x77, 0xff}}},\n    {{{  3174,  -2083,     36}, 0, {   734,   1944}, {0xd7, 0x00, 0x77, 0xff}}},\n    {{{  3277,  -3122,     72}, 0, {   990,      0}, {0xd7, 0x00, 0x77, 0xff}}},\n    {{{  3174,  -2047,      0}, 0, {   480,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3174,  -2083,   1075}, 0, {   224,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3174,  -2011,   1075}, 0, {   734,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3174,  -2011,   1075}, 0, {   734,      0}, {0xd7, 0x77, 0x00, 0xff}}},\n    {{{  3277,  -1975,   1075}, 0, {   990,      0}, {0xd7, 0x77, 0x00, 0xff}}},\n    {{{  3277,  -1975,     72}, 0, {   990,   1876}, {0xd7, 0x77, 0x00, 0xff}}},\n    {{{  3174,  -2011,     36}, 0, {   734,   1944}, {0xd7, 0x77, 0x00, 0xff}}},\n};\n\n// 0x07001B98 - 0x07001C78\nstatic const Vtx sa_vertex_07001B98[] = {\n    {{{  3174,  -2083,     36}, 0, {   224,   1944}, {0xd7, 0x89, 0x00, 0xff}}},\n    {{{  3277,  -2119,   1075}, 0, {     0,      0}, {0xd7, 0x89, 0x00, 0xff}}},\n    {{{  3174,  -2083,   1075}, 0, {   224,      0}, {0xd7, 0x89, 0x00, 0xff}}},\n    {{{  3174,  -2047,      0}, 0, {   480,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3174,  -2083,     36}, 0, {   224,   1944}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3174,  -2083,   1075}, 0, {   224,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3277,  -2119,     72}, 0, {     0,   1876}, {0xd7, 0x89, 0x00, 0xff}}},\n    {{{  3174,  -2011,    -35}, 0, {   734,   1944}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3174,   -972,     36}, 0, {   224,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3174,   -972,    -35}, 0, {   734,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3174,  -2011,     36}, 0, {   224,   1944}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3174,   -972,    -35}, 0, {   734,      0}, {0xd7, 0x00, 0x89, 0xff}}},\n    {{{  3277,  -1975,    -71}, 0, {   990,   1876}, {0xd7, 0x00, 0x89, 0xff}}},\n    {{{  3174,  -2011,    -35}, 0, {   734,   1944}, {0xd7, 0x00, 0x89, 0xff}}},\n};\n\n// 0x07001C78 - 0x07001D78\nstatic const Vtx sa_vertex_07001C78[] = {\n    {{{   -35,  -2083,   3174}, 0, {   224,   1944}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1074,  -2083,   3174}, 0, {   224,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1074,  -2011,   3174}, 0, {   734,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3174,  -2011,     36}, 0, {   224,   1944}, {0xd7, 0x00, 0x77, 0xff}}},\n    {{{  3277,   -972,     72}, 0, {     0,      0}, {0xd7, 0x00, 0x77, 0xff}}},\n    {{{  3174,   -972,     36}, 0, {   224,      0}, {0xd7, 0x00, 0x77, 0xff}}},\n    {{{  3174,   -972,    -35}, 0, {   734,      0}, {0xd7, 0x00, 0x89, 0xff}}},\n    {{{  3277,   -972,    -71}, 0, {   990,      0}, {0xd7, 0x00, 0x89, 0xff}}},\n    {{{  3277,  -1975,    -71}, 0, {   990,   1876}, {0xd7, 0x00, 0x89, 0xff}}},\n    {{{  3277,  -1975,     72}, 0, {     0,   1876}, {0xd7, 0x00, 0x77, 0xff}}},\n    {{{ -1074,  -2011,   3174}, 0, {   734,      0}, {0x00, 0x77, 0xd7, 0xff}}},\n    {{{   -71,  -1975,   3277}, 0, {   990,   1876}, {0x00, 0x77, 0xd7, 0xff}}},\n    {{{   -35,  -2011,   3174}, 0, {   734,   1944}, {0x00, 0x77, 0xd7, 0xff}}},\n    {{{ -1074,  -1975,   3277}, 0, {   990,      0}, {0x00, 0x77, 0xd7, 0xff}}},\n    {{{   -35,  -2011,   3174}, 0, {   734,   1944}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,  -2047,   3174}, 0, {   480,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07001D78 - 0x07001E78\nstatic const Vtx sa_vertex_07001D78[] = {\n    {{{   -35,  -2083,   3174}, 0, {   224,   1944}, {0x00, 0x89, 0xd7, 0xff}}},\n    {{{   -71,  -2119,   3277}, 0, {     0,   1876}, {0x00, 0x89, 0xd7, 0xff}}},\n    {{{ -1074,  -2119,   3277}, 0, {     0,      0}, {0x00, 0x89, 0xd7, 0xff}}},\n    {{{ -1074,  -2083,   3174}, 0, {   224,      0}, {0x00, 0x89, 0xd7, 0xff}}},\n    {{{   -35,  -3122,   3174}, 0, {   734,      0}, {0x89, 0x00, 0xd7, 0xff}}},\n    {{{   -71,  -2119,   3277}, 0, {   990,   1876}, {0x89, 0x00, 0xd7, 0xff}}},\n    {{{   -35,  -2083,   3174}, 0, {   734,   1944}, {0x89, 0x00, 0xd7, 0xff}}},\n    {{{   -71,  -3122,   3277}, 0, {   990,      0}, {0x89, 0x00, 0xd7, 0xff}}},\n    {{{    36,  -3122,   3174}, 0, {   224,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -35,  -3122,   3174}, 0, {   734,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -35,  -2083,   3174}, 0, {   734,   1944}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,  -2047,   3174}, 0, {   480,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    36,  -2083,   3174}, 0, {   224,   1944}, {0x77, 0x00, 0xd7, 0xff}}},\n    {{{    72,  -3122,   3277}, 0, {     0,      0}, {0x77, 0x00, 0xd7, 0xff}}},\n    {{{    36,  -3122,   3174}, 0, {   224,      0}, {0x77, 0x00, 0xd7, 0xff}}},\n    {{{    72,  -2119,   3277}, 0, {     0,   1876}, {0x77, 0x00, 0xd7, 0xff}}},\n};\n\n// 0x07001E78 - 0x07001F78\nstatic const Vtx sa_vertex_07001E78[] = {\n    {{{    36,  -3122,   3174}, 0, {   224,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,  -2047,   3174}, 0, {   480,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    36,  -2083,   3174}, 0, {   224,   1944}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -35,   -972,   3174}, 0, {   224,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    36,   -972,   3174}, 0, {   734,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1075,  -2083,   3174}, 0, {   224,      0}, {0x00, 0x89, 0xd7, 0xff}}},\n    {{{    72,  -2119,   3277}, 0, {     0,   1876}, {0x00, 0x89, 0xd7, 0xff}}},\n    {{{    36,  -2083,   3174}, 0, {   224,   1944}, {0x00, 0x89, 0xd7, 0xff}}},\n    {{{  1075,  -2119,   3277}, 0, {     0,      0}, {0x00, 0x89, 0xd7, 0xff}}},\n    {{{  1075,  -2011,   3174}, 0, {   734,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1075,  -2083,   3174}, 0, {   224,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    36,  -2011,   3174}, 0, {   734,   1944}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    36,  -2011,   3174}, 0, {   734,   1944}, {0x00, 0x77, 0xd7, 0xff}}},\n    {{{  1075,  -1975,   3277}, 0, {   990,      0}, {0x00, 0x77, 0xd7, 0xff}}},\n    {{{  1075,  -2011,   3174}, 0, {   734,      0}, {0x00, 0x77, 0xd7, 0xff}}},\n    {{{    72,  -1975,   3277}, 0, {   990,   1876}, {0x00, 0x77, 0xd7, 0xff}}},\n};\n\n// 0x07001F78 - 0x07002078\nstatic const Vtx sa_vertex_07001F78[] = {\n    {{{    36,   -972,   3174}, 0, {   734,      0}, {0x77, 0x00, 0xd7, 0xff}}},\n    {{{    72,  -1975,   3277}, 0, {   990,   1876}, {0x77, 0x00, 0xd7, 0xff}}},\n    {{{    36,  -2011,   3174}, 0, {   734,   1944}, {0x77, 0x00, 0xd7, 0xff}}},\n    {{{    72,   -972,   3277}, 0, {   990,      0}, {0x77, 0x00, 0xd7, 0xff}}},\n    {{{     0,  -2047,   3174}, 0, {   480,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    36,   -972,   3174}, 0, {   734,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    36,  -2011,   3174}, 0, {   734,   1944}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1075,  -2011,  -3173}, 0, {   734,      0}, {0x00, 0x77, 0x29, 0xff}}},\n    {{{  1075,  -1975,  -3276}, 0, {   990,      0}, {0x00, 0x77, 0x29, 0xff}}},\n    {{{    72,  -1975,  -3276}, 0, {   990,   1876}, {0x00, 0x77, 0x29, 0xff}}},\n    {{{   -35,  -2011,   3174}, 0, {   224,   1944}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -35,   -972,   3174}, 0, {   224,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -35,  -2011,   3174}, 0, {   224,   1944}, {0x89, 0x00, 0xd7, 0xff}}},\n    {{{   -71,   -972,   3277}, 0, {     0,      0}, {0x89, 0x00, 0xd7, 0xff}}},\n    {{{   -35,   -972,   3174}, 0, {   224,      0}, {0x89, 0x00, 0xd7, 0xff}}},\n    {{{   -71,  -1975,   3277}, 0, {     0,   1876}, {0x89, 0x00, 0xd7, 0xff}}},\n};\n\n// 0x07002078 - 0x07002168\nstatic const Vtx sa_vertex_07002078[] = {\n    {{{  1075,  -2011,  -3173}, 0, {   734,      0}, {0x00, 0x77, 0x29, 0xff}}},\n    {{{    72,  -1975,  -3276}, 0, {   990,   1876}, {0x00, 0x77, 0x29, 0xff}}},\n    {{{    36,  -2011,  -3173}, 0, {   734,   1944}, {0x00, 0x77, 0x29, 0xff}}},\n    {{{    36,  -2011,  -3173}, 0, {   734,   1944}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,  -2047,  -3173}, 0, {   480,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    36,  -2083,  -3173}, 0, {   224,   1944}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1075,  -2083,  -3173}, 0, {   224,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1075,  -2011,  -3173}, 0, {   734,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    36,  -2083,  -3173}, 0, {   224,   1944}, {0x00, 0x89, 0x29, 0xff}}},\n    {{{  1075,  -2119,  -3276}, 0, {     0,      0}, {0x00, 0x89, 0x29, 0xff}}},\n    {{{  1075,  -2083,  -3173}, 0, {   224,      0}, {0x00, 0x89, 0x29, 0xff}}},\n    {{{ -1074,  -2011,  -3173}, 0, {   734,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1074,  -2083,  -3173}, 0, {   224,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -35,  -2083,  -3173}, 0, {   224,   1944}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    72,  -2119,  -3276}, 0, {     0,   1876}, {0x00, 0x89, 0x29, 0xff}}},\n};\n\n// 0x07002168 - 0x07002268\nstatic const Vtx sa_vertex_07002168[] = {\n    {{{   -35,  -2083,  -3173}, 0, {   734,   1944}, {0x89, 0x00, 0x29, 0xff}}},\n    {{{   -71,  -2119,  -3276}, 0, {   990,   1876}, {0x89, 0x00, 0x29, 0xff}}},\n    {{{   -71,  -3122,  -3276}, 0, {   990,      0}, {0x89, 0x00, 0x29, 0xff}}},\n    {{{   -35,  -3122,  -3173}, 0, {   734,      0}, {0x89, 0x00, 0x29, 0xff}}},\n    {{{   -35,  -2083,  -3173}, 0, {   734,   1944}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    36,  -2083,  -3173}, 0, {   224,   1944}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,  -2047,  -3173}, 0, {   480,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    36,  -3122,  -3173}, 0, {   224,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -35,  -3122,  -3173}, 0, {   734,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    36,  -3122,  -3173}, 0, {   224,      0}, {0x77, 0x00, 0x29, 0xff}}},\n    {{{    72,  -2119,  -3276}, 0, {     0,   1876}, {0x77, 0x00, 0x29, 0xff}}},\n    {{{    36,  -2083,  -3173}, 0, {   224,   1944}, {0x77, 0x00, 0x29, 0xff}}},\n    {{{    72,  -3122,  -3276}, 0, {     0,      0}, {0x77, 0x00, 0x29, 0xff}}},\n    {{{   -35,   -972,  -3173}, 0, {   224,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    36,  -2011,  -3173}, 0, {   734,   1944}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    36,   -972,  -3173}, 0, {   734,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07002268 - 0x07002368\nstatic const Vtx sa_vertex_07002268[] = {\n    {{{   -35,  -2011,  -3173}, 0, {   734,   1944}, {0x00, 0x77, 0x29, 0xff}}},\n    {{{ -1074,  -1975,  -3276}, 0, {   990,      0}, {0x00, 0x77, 0x29, 0xff}}},\n    {{{ -1074,  -2011,  -3173}, 0, {   734,      0}, {0x00, 0x77, 0x29, 0xff}}},\n    {{{ -1074,  -2011,  -3173}, 0, {   734,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -35,  -2083,  -3173}, 0, {   224,   1944}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,  -2047,  -3173}, 0, {   480,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -35,  -2011,  -3173}, 0, {   734,   1944}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -71,  -1975,  -3276}, 0, {   990,   1876}, {0x00, 0x77, 0x29, 0xff}}},\n    {{{ -1074,  -2083,  -3173}, 0, {   224,      0}, {0x00, 0x89, 0x29, 0xff}}},\n    {{{   -71,  -2119,  -3276}, 0, {     0,   1876}, {0x00, 0x89, 0x29, 0xff}}},\n    {{{   -35,  -2083,  -3173}, 0, {   224,   1944}, {0x00, 0x89, 0x29, 0xff}}},\n    {{{ -1074,  -2119,  -3276}, 0, {     0,      0}, {0x00, 0x89, 0x29, 0xff}}},\n    {{{   -35,   -972,  -3173}, 0, {   224,      0}, {0x89, 0x00, 0x29, 0xff}}},\n    {{{   -71,   -972,  -3276}, 0, {     0,      0}, {0x89, 0x00, 0x29, 0xff}}},\n    {{{   -71,  -1975,  -3276}, 0, {     0,   1876}, {0x89, 0x00, 0x29, 0xff}}},\n    {{{   -35,  -2011,  -3173}, 0, {   224,   1944}, {0x89, 0x00, 0x29, 0xff}}},\n};\n\n// 0x07002368 - 0x070023E8\nstatic const Vtx sa_vertex_07002368[] = {\n    {{{    36,  -2011,  -3173}, 0, {   734,   1944}, {0x77, 0x00, 0x29, 0xff}}},\n    {{{    72,   -972,  -3276}, 0, {   990,      0}, {0x77, 0x00, 0x29, 0xff}}},\n    {{{    36,   -972,  -3173}, 0, {   734,      0}, {0x77, 0x00, 0x29, 0xff}}},\n    {{{    72,  -1975,  -3276}, 0, {   990,   1876}, {0x77, 0x00, 0x29, 0xff}}},\n    {{{   -35,   -972,  -3173}, 0, {   224,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,  -2047,  -3173}, 0, {   480,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    36,  -2011,  -3173}, 0, {   734,   1944}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -35,  -2011,  -3173}, 0, {   224,   1944}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070023E8 - 0x07002470\nstatic const Gfx sa_dl_070023E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_0900B000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&sa_lights.l, 1),\n    gsSPLight(&sa_lights.a, 2),\n    gsSPVertex(sa_vertex_07000018, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 2,  6,  7, 0x0,  2,  7,  3, 0x0),\n    gsSP2Triangles( 6,  4,  7, 0x0,  6,  5,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07002470 - 0x070028F0\nstatic const Gfx sa_dl_07002470[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(sa_vertex_070000D8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  8,  6, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12,  3, 10, 0x0, 12, 13,  3, 0x0),\n    gsSP1Triangle( 3, 14,  4, 0x0),\n    gsSPVertex(sa_vertex_070001C8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(sa_vertex_070002C8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(sa_vertex_070003C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(sa_vertex_070004B8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(sa_vertex_070005B8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(sa_vertex_07000698, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(sa_vertex_07000798, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 13,  1, 0x0),\n    gsSP2Triangles(12,  1,  0, 0x0, 14,  0,  2, 0x0),\n    gsSP1Triangle(14,  2, 15, 0x0),\n    gsSPVertex(sa_vertex_07000898, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0,  6, 10, 11, 0x0),\n    gsSP2Triangles( 6, 11, 12, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 15, 13, 0x0),\n    gsSPVertex(sa_vertex_07000998, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(sa_vertex_07000A88, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(sa_vertex_07000B68, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(sa_vertex_07000C58, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(sa_vertex_07000D58, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(sa_vertex_07000E48, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(sa_vertex_07000F48, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 15, 13, 0x0),\n    gsSPVertex(sa_vertex_07001048, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  2,  5, 0x0,  4,  6,  2, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7,  9, 10, 0x0),\n    gsSP1Triangle(11, 12, 13, 0x0),\n    gsSPVertex(sa_vertex_07001128, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070028F0 - 0x07002DE8\nstatic const Gfx sa_dl_070028F0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(sa_vertex_07001218, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  3,  9,  4, 0x0),\n    gsSP2Triangles( 6, 10,  7, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(sa_vertex_07001308, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  0,  9,  1, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(sa_vertex_070013E8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(sa_vertex_070014C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(sa_vertex_070015B8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11,  6, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(sa_vertex_070016B8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles( 5, 14,  6, 0x0,  5, 15, 14, 0x0),\n    gsSPVertex(sa_vertex_070017B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(sa_vertex_070018A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(sa_vertex_070019A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 2,  8,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles( 1, 13, 14, 0x0,  1, 15,  2, 0x0),\n    gsSP1Triangle( 1, 14, 15, 0x0),\n    gsSPVertex(sa_vertex_07001AA8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(sa_vertex_07001B98, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  7,  3, 10, 0x0),\n    gsSP1Triangle(11, 12, 13, 0x0),\n    gsSPVertex(sa_vertex_07001C78, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  3,  9,  4, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP2Triangles( 0,  2, 14, 0x0,  0, 14, 15, 0x0),\n    gsSPVertex(sa_vertex_07001D78, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(sa_vertex_07001E78, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  8,  6, 0x0),\n    gsSP2Triangles( 2,  9, 10, 0x0,  2, 11,  9, 0x0),\n    gsSP2Triangles( 2,  1, 11, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 15, 13, 0x0),\n    gsSPVertex(sa_vertex_07001F78, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 4, 10, 11, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 15, 13, 0x0),\n    gsSPVertex(sa_vertex_07002078, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  3,  5,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 8, 14,  9, 0x0),\n    gsSPVertex(sa_vertex_07002168, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 4,  8,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(sa_vertex_07002268, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  0,  7,  1, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(sa_vertex_07002368,  8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07002DE8 - 0x07002E80\nconst Gfx sa_seg7_dl_07002DE8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(sa_dl_070023E8),\n    gsSPDisplayList(sa_dl_07002470),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(sa_dl_070028F0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/sa/areas/1/2/model.inc.c",
    "content": "// 0x07002E80 - 0x07002F80\nstatic const Vtx sa_vertex_07002E80[] = {\n    {{{ -3276,   -972,   1075}, 0, {     0,      0}, {0x00, 0x00, 0xff, 0x40}}},\n    {{{ -3276,  -3122,  -1074}, 0, {     0,      0}, {0x00, 0x00, 0xff, 0x40}}},\n    {{{ -3276,   -972,  -1074}, 0, {     0,      0}, {0x00, 0x00, 0xff, 0x40}}},\n    {{{ -3276,  -3122,   1075}, 0, {     0,      0}, {0x00, 0x00, 0xff, 0x40}}},\n    {{{ -1074,  -3122,  -3276}, 0, {     0,      0}, {0x00, 0xff, 0x00, 0x40}}},\n    {{{  1075,   -972,  -3276}, 0, {     0,      0}, {0x00, 0xff, 0x00, 0x40}}},\n    {{{ -1074,   -972,  -3276}, 0, {     0,      0}, {0x00, 0xff, 0x00, 0x40}}},\n    {{{  1075,  -3122,  -3276}, 0, {     0,      0}, {0x00, 0xff, 0x00, 0x40}}},\n    {{{  3277,   -972,  -1074}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0x40}}},\n    {{{  3277,  -3122,  -1074}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0x40}}},\n    {{{  3277,  -3122,   1075}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0x40}}},\n    {{{  3277,   -972,   1075}, 0, {     0,      0}, {0xff, 0x00, 0x00, 0x40}}},\n    {{{ -1074,   -972,   3277}, 0, {     0,      0}, {0x00, 0xff, 0xff, 0x40}}},\n    {{{  1075,  -3122,   3277}, 0, {     0,      0}, {0x00, 0xff, 0xff, 0x40}}},\n    {{{ -1074,  -3122,   3277}, 0, {     0,      0}, {0x00, 0xff, 0xff, 0x40}}},\n    {{{  1075,   -972,   3277}, 0, {     0,      0}, {0x00, 0xff, 0xff, 0x40}}},\n};\n\n// 0x07002F80 - 0x07002FD0\nstatic const Gfx sa_dl_07002F80[] = {\n    gsSPVertex(sa_vertex_07002E80, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07002FD0 - 0x07003000\nconst Gfx sa_seg7_dl_07002FD0[] = {\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsSPDisplayList(sa_dl_07002F80),\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/sa/areas/1/collision.inc.c",
    "content": "// 0x07003000 - 0x07003282\nconst Collision sa_seg7_collision[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x30),\n    COL_VERTEX(-2661, 0, 3072),\n    COL_VERTEX(2662, 0, 3072),\n    COL_VERTEX(2662, -4607, 3072),\n    COL_VERTEX(-2661, -4607, 3072),\n    COL_VERTEX(2662, 0, -3071),\n    COL_VERTEX(-2661, 0, -3071),\n    COL_VERTEX(-2661, -4607, -3071),\n    COL_VERTEX(2662, -4607, -3071),\n    COL_VERTEX(-3071, 0, -2661),\n    COL_VERTEX(-3071, 0, 2662),\n    COL_VERTEX(-3071, -4607, 2662),\n    COL_VERTEX(-3071, -4607, -2661),\n    COL_VERTEX(3072, 0, 2662),\n    COL_VERTEX(3072, -4607, -2661),\n    COL_VERTEX(3072, -4607, 2662),\n    COL_VERTEX(3072, 0, -2661),\n    COL_VERTEX(3072, 0, 3072),\n    COL_VERTEX(-3071, -4607, 3072),\n    COL_VERTEX(512, -4607, -511),\n    COL_VERTEX(-511, -4607, -511),\n    COL_VERTEX(307, -4402, -306),\n    COL_VERTEX(-511, -4607, 512),\n    COL_VERTEX(512, -4607, 512),\n    COL_VERTEX(-2866, -4607, 2662),\n    COL_VERTEX(-2661, -4607, 2867),\n    COL_VERTEX(-2661, -4607, -2866),\n    COL_VERTEX(-2866, -4607, -2661),\n    COL_VERTEX(2867, -4607, -2661),\n    COL_VERTEX(2662, -4607, -2866),\n    COL_VERTEX(2662, -4607, 2867),\n    COL_VERTEX(2867, -4607, 2662),\n    COL_VERTEX(-3071, 0, -3071),\n    COL_VERTEX(3072, 0, -3071),\n    COL_VERTEX(-3071, 0, 3072),\n    COL_VERTEX(3072, -4607, 3072),\n    COL_VERTEX(-3071, -4607, -3071),\n    COL_VERTEX(3072, -4607, -3071),\n    COL_VERTEX(-306, -4402, 307),\n    COL_VERTEX(307, -4402, 307),\n    COL_VERTEX(-306, -4402, -306),\n    COL_VERTEX(-2866, 0, 2662),\n    COL_VERTEX(-2661, 0, 2867),\n    COL_VERTEX(-2661, 0, -2866),\n    COL_VERTEX(-2866, 0, -2661),\n    COL_VERTEX(2867, 0, -2661),\n    COL_VERTEX(2662, 0, -2866),\n    COL_VERTEX(2662, 0, 2867),\n    COL_VERTEX(2867, 0, 2662),\n    COL_TRI_INIT(SURFACE_DEFAULT, 52),\n    COL_TRI(12, 13, 14),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(4, 5, 6),\n    COL_TRI(4, 6, 7),\n    COL_TRI(8, 9, 10),\n    COL_TRI(8, 10, 11),\n    COL_TRI(17, 19, 35),\n    COL_TRI(12, 15, 13),\n    COL_TRI(16, 31, 32),\n    COL_TRI(16, 33, 31),\n    COL_TRI(17, 34, 22),\n    COL_TRI(17, 22, 21),\n    COL_TRI(17, 21, 19),\n    COL_TRI(21, 39, 19),\n    COL_TRI(18, 22, 34),\n    COL_TRI(18, 34, 36),\n    COL_TRI(19, 18, 36),\n    COL_TRI(19, 36, 35),\n    COL_TRI(20, 37, 38),\n    COL_TRI(19, 39, 20),\n    COL_TRI(19, 20, 18),\n    COL_TRI(18, 20, 38),\n    COL_TRI(20, 39, 37),\n    COL_TRI(21, 37, 39),\n    COL_TRI(24, 0, 3),\n    COL_TRI(22, 38, 37),\n    COL_TRI(22, 37, 21),\n    COL_TRI(18, 38, 22),\n    COL_TRI(10, 9, 40),\n    COL_TRI(10, 40, 23),\n    COL_TRI(23, 40, 41),\n    COL_TRI(23, 41, 24),\n    COL_TRI(24, 41, 0),\n    COL_TRI(27, 44, 45),\n    COL_TRI(6, 5, 42),\n    COL_TRI(6, 42, 25),\n    COL_TRI(25, 42, 43),\n    COL_TRI(25, 43, 26),\n    COL_TRI(26, 43, 8),\n    COL_TRI(26, 8, 11),\n    COL_TRI(13, 15, 44),\n    COL_TRI(13, 44, 27),\n    COL_TRI(30, 12, 14),\n    COL_TRI(27, 45, 28),\n    COL_TRI(28, 45, 4),\n    COL_TRI(28, 4, 7),\n    COL_TRI(2, 1, 46),\n    COL_TRI(2, 46, 29),\n    COL_TRI(29, 46, 47),\n    COL_TRI(29, 47, 30),\n    COL_TRI(30, 47, 12),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(1),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_null_start, /*pos*/ 0, -1535, 0, /*yaw*/ 64), // unused, probably an early way to set initial position\n    COL_WATER_BOX_INIT(1),\n    COL_WATER_BOX(0, -3173, -3173, 3174, 3174, 102),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/sa/areas/1/geo.inc.c",
    "content": "// 0x0E000170\nconst GeoLayout sa_geo_000170[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND(BACKGROUND_BELOW_CLOUDS, geo_skybox_main),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 12800, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(1, 0, 2000, 6000, 0, 0, 0, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, sa_seg7_dl_07002DE8),\n                    GEO_DISPLAY_LIST(LAYER_TRANSPARENT, sa_seg7_dl_07002FD0),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(2, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/sa/areas/1/macro.inc.c",
    "content": "// 0x07003284 - 0x07003330\nconst MacroObject sa_seg7_macro_objs[] = {\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -2400, -4607, -2400),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -2400, -4607,  2400),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  2400, -4607,  2400),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  2400, -4607, -2400),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/     0, -2200, -1500),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -1500, -2200,     0),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/     0, -2200,  1500),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  1500, -2200,     0),\n    MACRO_OBJECT               (/*preset*/ macro_fish_spawner_few_blue,       /*yaw*/   0, /*pos*/  1927, -2909,     0),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_vertical_flying,   /*yaw*/  90, /*pos*/     0, -2400, -1500),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_vertical_flying,   /*yaw*/   0, /*pos*/ -1500, -2400,     0),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_vertical_flying,   /*yaw*/  90, /*pos*/     0, -2400,  1500),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_vertical_flying,   /*yaw*/   0, /*pos*/  1500, -2400,     0),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,          /*yaw*/   0, /*pos*/     0, -3500,     0),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_hidden_1up,                  /*yaw*/   0, /*pos*/     0, -3800,     0, /*bhvParam*/ 1),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_horizontal_flying, /*yaw*/   0, /*pos*/     0, -3500,     0),\n    MACRO_OBJECT               (/*preset*/ macro_fish_spawner_few_cyan,       /*yaw*/   0, /*pos*/ -1000, -4080, -1740),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/sa/geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"game/level_geo.h\"\n#include \"game/geo_misc.h\"\n#include \"game/camera.h\"\n#include \"game/moving_texture.h\"\n#include \"game/screen_transition.h\"\n#include \"game/paintings.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"levels/sa/header.h\"\n\n#include \"levels/sa/areas/1/geo.inc.c\"\n"
  },
  {
    "path": "levels/sa/header.h",
    "content": "#ifndef SA_HEADER_H\n#define SA_HEADER_H\n\n#include \"types.h\"\n\n// geo\nextern const GeoLayout sa_geo_000170[];\n\n// leveldata\nextern const Gfx sa_seg7_dl_07002DE8[];\nextern const Gfx sa_seg7_dl_07002FD0[];\nextern const Collision sa_seg7_collision[];\nextern const MacroObject sa_seg7_macro_objs[];\n\n// script\nextern const LevelScript level_sa_entry[];\n\n#endif\n"
  },
  {
    "path": "levels/sa/level.yaml",
    "content": "# Secret Aquarium\nshort-name: sa\nfull-name: Secret Aquarium\ntexture-file: [\"/texture.inc.c\"]\narea-count: 1\nobjects: []\nshared-path: []\n# loaded files\nskybox-bin: cloud_floor\ntexture-bin: inside\neffects: true\nactor-bins: [group4, group13]\ncommon-bin: []\n"
  },
  {
    "path": "levels/sa/leveldata.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"surface_terrains.h\"\n#include \"moving_texture_macros.h\"\n#include \"level_misc_macros.h\"\n#include \"macro_presets.h\"\n#include \"special_presets.h\"\n#include \"textures.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/sa/texture.inc.c\"\n#include \"levels/sa/areas/1/1/model.inc.c\"\n#include \"levels/sa/areas/1/2/model.inc.c\"\n#include \"levels/sa/areas/1/collision.inc.c\"\n#include \"levels/sa/areas/1/macro.inc.c\"\n"
  },
  {
    "path": "levels/sa/script.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"behavior_data.h\"\n#include \"model_ids.h\"\n#include \"seq_ids.h\"\n#include \"segment_symbols.h\"\n#include \"level_commands.h\"\n\n#include \"game/level_update.h\"\n\n#include \"levels/scripts.h\"\n\n#include \"actors/common1.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/sa/header.h\"\n\nstatic const LevelScript script_func_local_1[] = {\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, -1000, 0, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(FISH_SPAWNER_BP_MANY_BLUE), /*bhv*/ bhvFishSpawner),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, -1000, 0, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(FISH_SPAWNER_BP_MANY_CYAN), /*bhv*/ bhvFishSpawner),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_2[] = {\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, -4250, 0, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_1), /*bhv*/ bhvHiddenRedCoinStar),\n    RETURN(),\n};\n\nconst LevelScript level_sa_entry[] = {\n    INIT_LEVEL(),\n    LOAD_MIO0        (/*seg*/ 0x07, _sa_segment_7SegmentRomStart, _sa_segment_7SegmentRomEnd),\n    LOAD_MIO0_TEXTURE(/*seg*/ 0x09, _inside_mio0SegmentRomStart, _inside_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x0A, _cloud_floor_skybox_mio0SegmentRomStart, _cloud_floor_skybox_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x0B, _effect_mio0SegmentRomStart, _effect_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x05, _group4_mio0SegmentRomStart, _group4_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0C, _group4_geoSegmentRomStart,  _group4_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x06, _group13_mio0SegmentRomStart, _group13_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0D, _group13_geoSegmentRomStart,  _group13_geoSegmentRomEnd),\n    ALLOC_LEVEL_POOL(),\n    MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),\n    JUMP_LINK(script_func_global_5),\n    JUMP_LINK(script_func_global_14),\n\n    AREA(/*index*/ 1, sa_geo_000170),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, -1535, 0, /*angle*/ 0, 90, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvSwimmingWarp),\n        WARP_NODE(/*id*/ WARP_NODE_0A,      /*destLevel*/ LEVEL_SA,     /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_SUCCESS, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_27, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH,   /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_28, /*flags*/ WARP_NO_CHECKPOINT),\n        JUMP_LINK(script_func_local_1),\n        JUMP_LINK(script_func_local_2),\n        TERRAIN(/*terrainData*/ sa_seg7_collision),\n        MACRO_OBJECTS(/*objList*/ sa_seg7_macro_objs),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0003, /*seq*/ (SEQ_LEVEL_WATER | SEQ_VARIATION)),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_WATER),\n    END_AREA(),\n\n    FREE_LEVEL_POOL(),\n    MARIO_POS(/*area*/ 1, /*yaw*/ 90, /*pos*/ 0, -1535, 0),\n    CALL(/*arg*/ 0, /*func*/ lvl_init_or_update),\n    CALL_LOOP(/*arg*/ 1, /*func*/ lvl_init_or_update),\n    CLEAR_LEVEL(),\n    SLEEP_BEFORE_EXIT(/*frames*/ 1),\n    EXIT(),\n};\n"
  },
  {
    "path": "levels/sa/texture.inc.c",
    "content": "// Blank File\n\n"
  },
  {
    "path": "levels/scripts.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"game/level_update.h\"\n#include \"level_commands.h\"\n#include \"game/area.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"segment_symbols.h\"\n\n#include \"actors/common0.h\"\n#include \"actors/common1.h\"\n#include \"actors/group0.h\"\n#include \"actors/group1.h\"\n#include \"actors/group2.h\"\n#include \"actors/group3.h\"\n#include \"actors/group4.h\"\n#include \"actors/group5.h\"\n#include \"actors/group6.h\"\n#include \"actors/group7.h\"\n#include \"actors/group8.h\"\n#include \"actors/group9.h\"\n#include \"actors/group10.h\"\n#include \"actors/group11.h\"\n#include \"actors/group12.h\"\n#include \"actors/group13.h\"\n#include \"actors/group14.h\"\n#include \"actors/group15.h\"\n#include \"actors/group16.h\"\n#include \"actors/group17.h\"\n\n#include \"levels/menu/header.h\"\n#include \"levels/intro/header.h\"\n\n#include \"level_headers.h\"\n\n#include \"level_table.h\"\n\n#define STUB_LEVEL(_0, _1, _2, _3, _4, _5, _6, _7, _8)\n#define DEFINE_LEVEL(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) + 3\nstatic const LevelScript script_exec_level_table[2\n  #include \"level_defines.h\"\n];\n#undef DEFINE_LEVEL\n#undef STUB_LEVEL\n\nstatic const LevelScript script_L1[4];\nstatic const LevelScript script_L2[4];\nstatic const LevelScript goto_mario_head_regular[4];\nstatic const LevelScript goto_mario_head_dizzy[4];\nstatic const LevelScript script_L5[4];\n\n#define STUB_LEVEL(_0, _1, _2, _3, _4, _5, _6, _7, _8)\n#define DEFINE_LEVEL(_0, _1, _2, folder, _4, _5, _6, _7, _8, _9, _10) static const LevelScript script_exec_ ## folder [4 + 1];\n\n#include \"level_defines.h\"\n\n#undef DEFINE_LEVEL\n#undef STUB_LEVEL\n\nconst LevelScript level_main_scripts_entry[] = {\n    LOAD_MIO0(/*seg*/ 0x04, _group0_mio0SegmentRomStart, _group0_mio0SegmentRomEnd),\n    LOAD_MIO0(/*seg*/ 0x03, _common1_mio0SegmentRomStart, _common1_mio0SegmentRomEnd),\n    LOAD_RAW (/*seg*/ 0x17, _group0_geoSegmentRomStart, _group0_geoSegmentRomEnd),\n    LOAD_RAW (/*seg*/ 0x16, _common1_geoSegmentRomStart, _common1_geoSegmentRomEnd),\n    LOAD_RAW (/*seg*/ 0x13, _behaviorSegmentRomStart, _behaviorSegmentRomEnd),\n    ALLOC_LEVEL_POOL(),\n    LOAD_MODEL_FROM_GEO(MODEL_MARIO,                   mario_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_SMOKE,                   smoke_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_SPARKLES,                sparkles_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_BUBBLE,                  bubble_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_SMALL_WATER_SPLASH,      small_water_splash_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_IDLE_WATER_WAVE,         idle_water_wave_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_WATER_SPLASH,            water_splash_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_WAVE_TRAIL,              wave_trail_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_YELLOW_COIN,             yellow_coin_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_STAR,                    star_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_TRANSPARENT_STAR,        transparent_star_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_WOODEN_SIGNPOST,         wooden_signpost_geo),\n    LOAD_MODEL_FROM_DL (MODEL_WHITE_PARTICLE_SMALL,    white_particle_small_dl, LAYER_ALPHA),\n    LOAD_MODEL_FROM_GEO(MODEL_RED_FLAME,               red_flame_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_BLUE_FLAME,              blue_flame_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_BURN_SMOKE,              burn_smoke_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_LEAVES,                  leaves_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_PURPLE_MARBLE,           purple_marble_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_FISH,                    fish_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_FISH_SHADOW,             fish_shadow_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_SPARKLES_ANIMATION,      sparkles_animation_geo),\n    LOAD_MODEL_FROM_DL (MODEL_SAND_DUST,               sand_seg3_dl_0302BCD0,   LAYER_ALPHA),\n    LOAD_MODEL_FROM_GEO(MODEL_BUTTERFLY,               butterfly_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_BURN_SMOKE_UNUSED,       burn_smoke_geo),\n    LOAD_MODEL_FROM_DL (MODEL_PEBBLE,                  pebble_seg3_dl_0301CB00, LAYER_ALPHA),\n    LOAD_MODEL_FROM_GEO(MODEL_MIST,                    mist_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_WHITE_PUFF,              white_puff_geo),\n    LOAD_MODEL_FROM_DL (MODEL_WHITE_PARTICLE_DL,       white_particle_dl,       LAYER_ALPHA),\n    LOAD_MODEL_FROM_GEO(MODEL_WHITE_PARTICLE,          white_particle_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_YELLOW_COIN_NO_SHADOW,   yellow_coin_no_shadow_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_BLUE_COIN,               blue_coin_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_BLUE_COIN_NO_SHADOW,     blue_coin_no_shadow_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_MARIOS_WINGED_METAL_CAP, marios_winged_metal_cap_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_MARIOS_METAL_CAP,        marios_metal_cap_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_MARIOS_WING_CAP,         marios_wing_cap_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_MARIOS_CAP,              marios_cap_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_MARIOS_CAP,              marios_cap_geo), // repeated\n    LOAD_MODEL_FROM_GEO(MODEL_BOWSER_KEY_CUTSCENE,     bowser_key_cutscene_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_BOWSER_KEY,              bowser_key_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_RED_FLAME_SHADOW,        red_flame_shadow_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_1UP,                     mushroom_1up_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_RED_COIN,                red_coin_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_RED_COIN_NO_SHADOW,      red_coin_no_shadow_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_NUMBER,                  number_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_EXPLOSION,               explosion_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_DIRT_ANIMATION,          dirt_animation_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_CARTOON_STAR,            cartoon_star_geo),\n    FREE_LEVEL_POOL(),\n    CALL(/*arg*/ 0, /*func*/ lvl_init_from_save_file),\n    LOOP_BEGIN(),\n        EXECUTE(/*seg*/ 0x14, _menuSegmentRomStart, _menuSegmentRomEnd, level_main_menu_entry_2),\n        JUMP_LINK(script_exec_level_table),\n        SLEEP(/*frames*/ 1),\n    LOOP_UNTIL(/*op*/ OP_LT, /*arg*/ 0),\n    JUMP_IF(/*op*/ OP_EQ, /*arg*/ -1, script_L2),\n    JUMP_IF(/*op*/ OP_EQ, /*arg*/ -2, goto_mario_head_regular),\n    JUMP_IF(/*op*/ OP_EQ, /*arg*/ -3, goto_mario_head_dizzy),\n    JUMP_IF(/*op*/ OP_EQ, /*arg*/ -8, script_L1),\n    JUMP_IF(/*op*/ OP_EQ, /*arg*/ -9, script_L5),\n};\n\nstatic const LevelScript script_L1[] = {\n    EXIT_AND_EXECUTE(/*seg*/ 0x14, _introSegmentRomStart, _introSegmentRomEnd, level_intro_splash_screen),\n};\n\nstatic const LevelScript script_L2[] = {\n    EXIT_AND_EXECUTE(/*seg*/ 0x0E, _endingSegmentRomStart, _endingSegmentRomEnd, level_ending_entry),\n};\n\nstatic const LevelScript goto_mario_head_regular[] = {\n    EXIT_AND_EXECUTE(/*seg*/ 0x14, _introSegmentRomStart, _introSegmentRomEnd, level_intro_mario_head_regular),\n};\n\nstatic const LevelScript goto_mario_head_dizzy[] = {\n    EXIT_AND_EXECUTE(/*seg*/ 0x14, _introSegmentRomStart, _introSegmentRomEnd, level_intro_mario_head_dizzy),\n};\n\nstatic const LevelScript script_L5[] = {\n    EXIT_AND_EXECUTE(/*seg*/ 0x14, _introSegmentRomStart, _introSegmentRomEnd, level_intro_entry_4),\n};\n\n// Include the level jumptable.\n\n#define STUB_LEVEL(_0, _1, _2, _3, _4, _5, _6, _7, _8)\n\n#define DEFINE_LEVEL(_0, levelenum, _2, folder, _4, _5, _6, _7, _8, _9, _10) JUMP_IF(OP_EQ, levelenum, script_exec_ ## folder),\n\nstatic const LevelScript script_exec_level_table[] = {\n    GET_OR_SET(/*op*/ OP_GET, /*var*/ VAR_CURR_LEVEL_NUM),\n    #include \"levels/level_defines.h\"\n    EXIT(),\n};\n#undef DEFINE_LEVEL\n\n#define DEFINE_LEVEL(_0, _1, _2, folder, _4, _5, _6, _7, _8, _9, _10) \\\nstatic const LevelScript script_exec_ ## folder [] = { \\\n    EXECUTE(0x0E, _ ## folder ## SegmentRomStart, _ ## folder ## SegmentRomEnd, level_ ## folder ## _entry), \\\n    RETURN(), \\\n};\n\n#include \"levels/level_defines.h\"\n#undef STUB_LEVEL\n#undef DEFINE_LEVEL\n\nconst LevelScript script_func_global_1[] = {\n    LOAD_MODEL_FROM_GEO(MODEL_BLUE_COIN_SWITCH,        blue_coin_switch_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_AMP,                     dAmpGeo),\n    LOAD_MODEL_FROM_GEO(MODEL_PURPLE_SWITCH,           purple_switch_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_CHECKERBOARD_PLATFORM,   checkerboard_platform_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_BREAKABLE_BOX,           breakable_box_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_BREAKABLE_BOX_SMALL,     breakable_box_small_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_EXCLAMATION_BOX_OUTLINE, exclamation_box_outline_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_EXCLAMATION_BOX,         exclamation_box_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_GOOMBA,                  goomba_geo),\n    LOAD_MODEL_FROM_DL (MODEL_EXCLAMATION_POINT,       exclamation_box_outline_seg8_dl_08025F08, LAYER_ALPHA),\n    LOAD_MODEL_FROM_GEO(MODEL_KOOPA_SHELL,             koopa_shell_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_METAL_BOX,               metal_box_geo),\n    LOAD_MODEL_FROM_DL (MODEL_METAL_BOX_DL,            metal_box_dl,                             LAYER_OPAQUE),\n    LOAD_MODEL_FROM_GEO(MODEL_BLACK_BOBOMB,            black_bobomb_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_BOBOMB_BUDDY,            bobomb_buddy_geo),\n    LOAD_MODEL_FROM_DL (MODEL_DL_CANNON_LID,           cannon_lid_seg8_dl_080048E0,              LAYER_OPAQUE),\n    LOAD_MODEL_FROM_GEO(MODEL_BOWLING_BALL,            bowling_ball_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_CANNON_BARREL,           cannon_barrel_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_CANNON_BASE,             cannon_base_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_HEART,                   heart_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_FLYGUY,                  flyguy_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_CHUCKYA,                 chuckya_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_TRAJECTORY_MARKER_BALL,  bowling_ball_track_geo),\n    RETURN(),\n};\n\nconst LevelScript script_func_global_2[] = {\n    LOAD_MODEL_FROM_GEO(MODEL_BULLET_BILL,             bullet_bill_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_YELLOW_SPHERE,           yellow_sphere_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_HOOT,                    hoot_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_YOSHI_EGG,               yoshi_egg_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_THWOMP,                  thwomp_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_HEAVE_HO,                heave_ho_geo),\n    RETURN(),\n};\n\nconst LevelScript script_func_global_3[] = {\n    LOAD_MODEL_FROM_GEO(MODEL_BLARGG,                  blargg_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_BULLY,                   bully_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_BULLY_BOSS,              bully_boss_geo),\n    RETURN(),\n};\n\nconst LevelScript script_func_global_4[] = {\n    LOAD_MODEL_FROM_GEO(MODEL_WATER_BOMB,              water_bomb_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_WATER_BOMB_SHADOW,       water_bomb_shadow_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_KING_BOBOMB,             king_bobomb_geo),\n    RETURN(),\n};\n\nconst LevelScript script_func_global_5[] = {\n    LOAD_MODEL_FROM_GEO(MODEL_MANTA_RAY,               manta_seg5_geo_05008D14),\n    LOAD_MODEL_FROM_GEO(MODEL_UNAGI,                   unagi_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_SUSHI,                   sushi_geo),\n    LOAD_MODEL_FROM_DL (MODEL_DL_WHIRLPOOL,            whirlpool_seg5_dl_05013CB8, LAYER_TRANSPARENT),\n    LOAD_MODEL_FROM_GEO(MODEL_CLAM_SHELL,              clam_shell_geo),\n    RETURN(),\n};\n\nconst LevelScript script_func_global_6[] = {\n    LOAD_MODEL_FROM_GEO(MODEL_POKEY_HEAD,              pokey_head_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_POKEY_BODY_PART,         pokey_body_part_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_TWEESTER,                tweester_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_KLEPTO,                  klepto_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_EYEROK_LEFT_HAND,        eyerok_left_hand_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_EYEROK_RIGHT_HAND,       eyerok_right_hand_geo),\n    RETURN(),\n};\n\nconst LevelScript script_func_global_7[] = {\n    LOAD_MODEL_FROM_DL (MODEL_DL_MONTY_MOLE_HOLE,      monty_mole_hole_seg5_dl_05000840, LAYER_TRANSPARENT_DECAL),\n    LOAD_MODEL_FROM_GEO(MODEL_MONTY_MOLE,              monty_mole_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_UKIKI,                   ukiki_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_FWOOSH,                  fwoosh_geo),\n    RETURN(),\n};\n\nconst LevelScript script_func_global_8[] = {\n    LOAD_MODEL_FROM_GEO(MODEL_SPINDRIFT,               spindrift_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_MR_BLIZZARD_HIDDEN,      mr_blizzard_hidden_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_MR_BLIZZARD,             mr_blizzard_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_PENGUIN,                 penguin_geo),\n    RETURN(),\n};\n\nconst LevelScript script_func_global_9[] = {\n    LOAD_MODEL_FROM_DL (MODEL_CAP_SWITCH_EXCLAMATION,  cap_switch_exclamation_seg5_dl_05002E00, LAYER_ALPHA),\n    LOAD_MODEL_FROM_GEO(MODEL_CAP_SWITCH,              cap_switch_geo),\n    LOAD_MODEL_FROM_DL (MODEL_CAP_SWITCH_BASE,         cap_switch_base_seg5_dl_05003120,        LAYER_OPAQUE),\n    RETURN(),\n};\n\nconst LevelScript script_func_global_10[] = {\n    LOAD_MODEL_FROM_GEO(MODEL_BOO,                     boo_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_BETA_BOO_KEY,            small_key_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_HAUNTED_CHAIR,           haunted_chair_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_MAD_PIANO,               mad_piano_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_BOOKEND_PART,            bookend_part_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_BOOKEND,                 bookend_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_HAUNTED_CAGE,            haunted_cage_geo),\n    RETURN(),\n};\n\nconst LevelScript script_func_global_11[] = {\n    LOAD_MODEL_FROM_GEO(MODEL_BIRDS,                   birds_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_PEACH,                   peach_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_YOSHI,                   yoshi_geo),\n    RETURN(),\n};\n\nconst LevelScript script_func_global_12[] = {\n    LOAD_MODEL_FROM_GEO(MODEL_ENEMY_LAKITU,            enemy_lakitu_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_SPINY_BALL,              spiny_ball_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_SPINY,                   spiny_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_WIGGLER_HEAD,            wiggler_head_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_WIGGLER_BODY,            wiggler_body_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_BUBBA,                   bubba_geo),\n    RETURN(),\n};\n\nconst LevelScript script_func_global_13[] = {\n    LOAD_MODEL_FROM_GEO(MODEL_BOWSER,                  bowser_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_BOWSER_BOMB_CHILD_OBJ,   bowser_bomb_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_BOWSER_BOMB,             bowser_bomb_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_BOWSER_SMOKE,            bowser_impact_smoke_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_BOWSER_FLAMES,           bowser_flames_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_BOWSER_WAVE,             invisible_bowser_accessory_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_BOWSER_NO_SHADOW,        bowser_geo_no_shadow),\n    RETURN(),\n};\n\nconst LevelScript script_func_global_14[] = {\n    LOAD_MODEL_FROM_GEO(MODEL_BUB,                     bub_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_TREASURE_CHEST_BASE,     treasure_chest_base_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_TREASURE_CHEST_LID,      treasure_chest_lid_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_CYAN_FISH,               cyan_fish_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_WATER_RING,              water_ring_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_WATER_MINE,              water_mine_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_SEAWEED,                 seaweed_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_SKEETER,                 skeeter_geo),\n    RETURN(),\n};\n\nconst LevelScript script_func_global_15[] = {\n    LOAD_MODEL_FROM_GEO(MODEL_PIRANHA_PLANT,           piranha_plant_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_WHOMP,                   whomp_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_KOOPA_WITH_SHELL,        koopa_with_shell_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_KOOPA_WITHOUT_SHELL,     koopa_without_shell_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_METALLIC_BALL,           metallic_ball_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_CHAIN_CHOMP,             chain_chomp_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_KOOPA_FLAG,              koopa_flag_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_WOODEN_POST,             wooden_post_geo),\n    RETURN(),\n};\n\nconst LevelScript script_func_global_16[] = {\n    LOAD_MODEL_FROM_GEO(MODEL_MIPS,                    mips_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_BOO_CASTLE,              boo_castle_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_LAKITU,                  lakitu_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_TOAD,                    toad_geo),\n    RETURN(),\n};\n\nconst LevelScript script_func_global_17[] = {\n    LOAD_MODEL_FROM_GEO(MODEL_CHILL_BULLY,             chilly_chief_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_BIG_CHILL_BULLY,         chilly_chief_big_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_MONEYBAG,                moneybag_geo),\n    RETURN(),\n};\n\nconst LevelScript script_func_global_18[] = {\n    LOAD_MODEL_FROM_GEO(MODEL_SWOOP,                   swoop_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_SCUTTLEBUG,              scuttlebug_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_MR_I_IRIS,               mr_i_iris_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_MR_I,                    mr_i_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_DORRIE,                  dorrie_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_SNUFIT,                  snufit_geo),\n    RETURN(),\n};\n"
  },
  {
    "path": "levels/scripts.h",
    "content": "#ifndef SCRIPTS_H\n#define SCRIPTS_H\n\n#include \"types.h\"\n\n// scripts\nextern const LevelScript level_main_scripts_entry[];\nextern const LevelScript script_func_global_1[];\nextern const LevelScript script_func_global_2[];\nextern const LevelScript script_func_global_3[];\nextern const LevelScript script_func_global_4[];\nextern const LevelScript script_func_global_5[];\nextern const LevelScript script_func_global_6[];\nextern const LevelScript script_func_global_7[];\nextern const LevelScript script_func_global_8[];\nextern const LevelScript script_func_global_9[];\nextern const LevelScript script_func_global_10[];\nextern const LevelScript script_func_global_11[];\nextern const LevelScript script_func_global_12[];\nextern const LevelScript script_func_global_13[];\nextern const LevelScript script_func_global_14[];\nextern const LevelScript script_func_global_15[];\nextern const LevelScript script_func_global_16[];\nextern const LevelScript script_func_global_17[];\nextern const LevelScript script_func_global_18[];\n\n#endif\n"
  },
  {
    "path": "levels/sl/areas/1/1/model.inc.c",
    "content": "// 0x07002800 - 0x07002818\nstatic const Lights1 sl_seg7_lights_07002800 = gdSPDefLights1(\n    0x59, 0x59, 0x59,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07002818 - 0x07002830\nstatic const Lights1 sl_seg7_lights_07002818 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x07002830 - 0x07002910\nstatic const Vtx sl_seg7_vertex_07002830[] = {\n    {{{  4378,    819,   1267}, 0, {  2880,   1832}, {0x05, 0x7e, 0x00, 0xff}}},\n    {{{  2687,   1024,    340}, 0, {  1756,   1214}, {0x03, 0x7d, 0x13, 0xff}}},\n    {{{  2175,   1024,    852}, 0, {  1414,   1556}, {0x35, 0x72, 0xf5, 0xff}}},\n    {{{ -4044,   1024,    572}, 0, { -2722,   1368}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4186,   1024,   2629}, 0, { -2816,   2738}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3551,   1024,   2330}, 0, { -2394,   2538}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3756,   1024,   2637}, 0, { -2530,   2742}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3668,   1024,    633}, 0, { -2472,   1410}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3439,   1024,   1818}, 0, { -2318,   2198}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   771,   1331,  -1252}, 0, {   482,    156}, {0x04, 0x7d, 0x14, 0xff}}},\n    {{{   768,   1331,  -1023}, 0, {   480,    308}, {0x3b, 0x4c, 0xae, 0xff}}},\n    {{{  3328,   1536,  -1791}, 0, {  2182,   -202}, {0xfe, 0x7d, 0x10, 0xff}}},\n    {{{  1008,   1536,  -2015}, 0, {   638,   -352}, {0x00, 0x7e, 0x08, 0xff}}},\n    {{{  1280,   1022,   -255}, 0, {   820,    820}, {0x69, 0x40, 0xe4, 0xff}}},\n};\n\n// 0x07002910 - 0x07002A10\nstatic const Vtx sl_seg7_vertex_07002910[] = {\n    {{{ -1137,   1536,  -2814}, 0, {  -786,   -884}, {0xef, 0x7d, 0xf6, 0xff}}},\n    {{{ -1015,   1536,  -2225}, 0, {  -706,   -492}, {0xf1, 0x7b, 0x18, 0xff}}},\n    {{{  -629,   1536,  -2425}, 0, {  -450,   -624}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,   1536,  -1791}, 0, {  2182,   -202}, {0xfe, 0x7d, 0x10, 0xff}}},\n    {{{  1536,   1536,  -4095}, 0, {   990,  -1736}, {0xfa, 0x7e, 0x05, 0xff}}},\n    {{{  1008,   1536,  -2834}, 0, {   638,   -896}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3014,   1616,  -3129}, 0, {  1974,  -1092}, {0xf7, 0x7e, 0x03, 0xff}}},\n    {{{  3551,   1651,  -2881}, 0, {  2330,   -928}, {0xfe, 0x7e, 0xfd, 0xff}}},\n    {{{  1008,   1536,  -2015}, 0, {   638,   -352}, {0x00, 0x7e, 0x08, 0xff}}},\n    {{{  6144,   1024,  -1535}, 0, {  4056,      0}, {0xe5, 0x7b, 0x06, 0xff}}},\n    {{{  2687,   1024,    340}, 0, {  1756,   1214}, {0x03, 0x7d, 0x13, 0xff}}},\n    {{{  -629,   1536,  -2630}, 0, {  -450,   -760}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4965,   1024,  -2303}, 0, { -3334,   -544}, {0x28, 0x76, 0xed, 0xff}}},\n    {{{ -2223,   1024,  -1319}, 0, { -1510,    112}, {0xf8, 0x7d, 0x13, 0xff}}},\n    {{{ -1217,   1119,  -3205}, 0, {  -840,  -1142}, {0xfb, 0x7c, 0xe6, 0xff}}},\n    {{{  -808,    986,  -1223}, 0, {  -568,    176}, {0x00, 0x79, 0x23, 0xff}}},\n};\n\n// 0x07002A10 - 0x07002B10\nstatic const Vtx sl_seg7_vertex_07002A10[] = {\n    {{{   394,   1536,  -2630}, 0, {   230,   -760}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1008,   1536,  -2015}, 0, {   638,   -352}, {0x00, 0x7e, 0x08, 0xff}}},\n    {{{  1008,   1536,  -2834}, 0, {   638,   -896}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   394,   1536,  -2425}, 0, {   230,   -624}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,   1024,  -3071}, 0, {     0,  -1054}, {0x09, 0x7e, 0x06, 0xff}}},\n    {{{ -1599,   1244,  -5055}, 0, { -1094,  -2374}, {0x01, 0x7e, 0xfa, 0xff}}},\n    {{{ -1217,   1119,  -3205}, 0, {  -840,  -1142}, {0xfb, 0x7c, 0xe6, 0xff}}},\n    {{{ -4965,   1024,  -2303}, 0, { -3334,   -544}, {0x28, 0x76, 0xed, 0xff}}},\n    {{{ -5688,   1024,  -6079}, 0, { -3816,  -3056}, {0x38, 0x70, 0xf2, 0xff}}},\n    {{{ -5688,   2048,  -6079}, 0, { -3816,  -3056}, {0x5f, 0x52, 0x08, 0xff}}},\n    {{{ -5688,   1024,  -7264}, 0, { -3816,  -3844}, {0x34, 0x6c, 0x27, 0xff}}},\n    {{{ -5688,   3927,  -8191}, 0, { -3816,  -4460}, {0x10, 0x46, 0x68, 0xff}}},\n    {{{ -1185,   1024,  -6079}, 0, {  -818,  -3056}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,   1024,  -6143}, 0, {   650,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6144,   1024,  -6143}, 0, {  4056,  -3098}, {0xe8, 0x7c, 0x07, 0xff}}},\n    {{{  7168,   2458,  -8191}, 0, {  4738,  -4460}, {0xd5, 0x59, 0x4e, 0xff}}},\n};\n\n// 0x07002B10 - 0x07002C00\nstatic const Vtx sl_seg7_vertex_07002B10[] = {\n    {{{  6144,   1024,  -1535}, 0, {  4056,      0}, {0xe5, 0x7b, 0x06, 0xff}}},\n    {{{  6144,   1024,  -6143}, 0, {  4056,  -3098}, {0xe8, 0x7c, 0x07, 0xff}}},\n    {{{  5191,   1024,  -2866}, 0, {  3422,   -918}, {0x19, 0x7b, 0x0e, 0xff}}},\n    {{{  3584,   1075,  -4863}, 0, {  2352,  -2246}, {0xfe, 0x7e, 0xf8, 0xff}}},\n    {{{  5325,   1075,  -4991}, 0, {  3510,  -2332}, {0x1b, 0x7b, 0xf6, 0xff}}},\n    {{{  7168,   2458,   8192}, 0, {  4738,   6438}, {0xb7, 0x5f, 0xd8, 0xff}}},\n    {{{  7168,   2458,  -8191}, 0, {  4738,  -4460}, {0xd5, 0x59, 0x4e, 0xff}}},\n    {{{ -4965,   1024,  -2303}, 0, { -3334,   -544}, {0x28, 0x76, 0xed, 0xff}}},\n    {{{ -5688,   1024,  -6079}, 0, { -3816,  -3056}, {0x38, 0x70, 0xf2, 0xff}}},\n    {{{ -5688,   2048,  -6079}, 0, { -3816,  -3056}, {0x5f, 0x52, 0x08, 0xff}}},\n    {{{  1024,   1024,  -6143}, 0, {   650,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1074,   1024,  -5944}, 0, {   682,  -2966}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2816,   1024,  -5375}, 0, {  1842,  -2588}, {0x05, 0x7e, 0x02, 0xff}}},\n    {{{ -1279,   1024,  -5631}, 0, {  -882,  -2758}, {0x02, 0x7d, 0xeb, 0xff}}},\n    {{{ -1185,   1024,  -6079}, 0, {  -818,  -3056}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07002C00 - 0x07002D00\nstatic const Vtx sl_seg7_vertex_07002C00[] = {\n    {{{ -5688,   2048,  -6079}, 0, { -3816,  -3056}, {0x5f, 0x52, 0x08, 0xff}}},\n    {{{ -7167,   2048,  -7167}, 0, { -4800,  -3780}, {0x00, 0x73, 0x34, 0xff}}},\n    {{{ -7167,   2048,  -1279}, 0, { -4800,    138}, {0x2c, 0x76, 0x04, 0xff}}},\n    {{{ -5688,   3927,  -8191}, 0, { -3816,  -4460}, {0x10, 0x46, 0x68, 0xff}}},\n    {{{ -5247,   2048,  -1279}, 0, { -3522,    138}, {0x34, 0x73, 0x0c, 0xff}}},\n    {{{ -4965,   1024,  -2303}, 0, { -3334,   -544}, {0x28, 0x76, 0xed, 0xff}}},\n    {{{  1536,   1024,   2560}, 0, {   990,   2692}, {0x1a, 0x7b, 0x06, 0xff}}},\n    {{{  2330,    819,   1779}, 0, {  1518,   2172}, {0x3e, 0x6b, 0x1a, 0xff}}},\n    {{{  1418,   1229,   2366}, 0, {   912,   2562}, {0x4b, 0x52, 0x3b, 0xff}}},\n    {{{ -1599,   1244,  -5055}, 0, { -1094,  -2374}, {0x01, 0x7e, 0xfa, 0xff}}},\n    {{{ -1279,   1024,  -5631}, 0, {  -882,  -2758}, {0x02, 0x7d, 0xeb, 0xff}}},\n    {{{ -5688,   1024,  -6079}, 0, { -3816,  -3056}, {0x38, 0x70, 0xf2, 0xff}}},\n    {{{ -8191,   2970,  -8191}, 0, { -5480,  -4460}, {0x38, 0x6a, 0x27, 0xff}}},\n    {{{  5172,   1024,   2581}, 0, {  3410,   2706}, {0xfc, 0x7e, 0xf5, 0xff}}},\n    {{{  4378,    819,   1267}, 0, {  2880,   1832}, {0x05, 0x7e, 0x00, 0xff}}},\n    {{{  -511,   1024,   6656}, 0, {  -370,   5416}, {0x00, 0x76, 0xd2, 0xff}}},\n};\n\n// 0x07002D00 - 0x07002DF0\nstatic const Vtx sl_seg7_vertex_07002D00[] = {\n    {{{  5172,   1024,   2581}, 0, {  3410,   2706}, {0xfc, 0x7e, 0xf5, 0xff}}},\n    {{{  4582,    819,   1267}, 0, {  3016,   1832}, {0xf0, 0x7d, 0xf7, 0xff}}},\n    {{{  4378,    819,   1267}, 0, {  2880,   1832}, {0x05, 0x7e, 0x00, 0xff}}},\n    {{{  -511,   1024,   6656}, 0, {  -370,   5416}, {0x00, 0x76, 0xd2, 0xff}}},\n    {{{  6144,   1024,   6144}, 0, {  4056,   5076}, {0xe8, 0x7b, 0xf1, 0xff}}},\n    {{{  5632,   1024,   1280}, 0, {  3716,   1840}, {0xf4, 0x7e, 0x01, 0xff}}},\n    {{{  4403,   1434,  -3737}, 0, {  2898,  -1496}, {0xfb, 0x7e, 0xf7, 0xff}}},\n    {{{  4915,   1434,  -4044}, 0, {  3238,  -1702}, {0x1a, 0x7b, 0xf8, 0xff}}},\n    {{{  3584,   1075,  -4863}, 0, {  2352,  -2246}, {0xfe, 0x7e, 0xf8, 0xff}}},\n    {{{  5325,   1075,  -4991}, 0, {  3510,  -2332}, {0x1b, 0x7b, 0xf6, 0xff}}},\n    {{{  4211,    760,  -2971}, 0, {  2770,   -988}, {0xf3, 0x7d, 0x0c, 0xff}}},\n    {{{  6144,   1024,  -1535}, 0, {  4056,      0}, {0xe5, 0x7b, 0x06, 0xff}}},\n    {{{  5191,   1024,  -2866}, 0, {  3422,   -918}, {0x19, 0x7b, 0x0e, 0xff}}},\n    {{{  4220,    754,  -2333}, 0, {  2776,   -564}, {0xf4, 0x7e, 0x00, 0xff}}},\n    {{{  3913,    754,  -2897}, 0, {  2572,   -938}, {0x02, 0x7e, 0x0f, 0xff}}},\n};\n\n// 0x07002DF0 - 0x07002EE0\nstatic const Vtx sl_seg7_vertex_07002DF0[] = {\n    {{{  3584,   1075,  -4863}, 0, {  2352,  -2246}, {0xfe, 0x7e, 0xf8, 0xff}}},\n    {{{  6144,   1024,  -6143}, 0, {  4056,  -3098}, {0xe8, 0x7c, 0x07, 0xff}}},\n    {{{  2816,   1024,  -5375}, 0, {  1842,  -2588}, {0x05, 0x7e, 0x02, 0xff}}},\n    {{{  4608,   1434,  -3532}, 0, {  3034,  -1360}, {0x10, 0x7d, 0x09, 0xff}}},\n    {{{  5191,   1024,  -2866}, 0, {  3422,   -918}, {0x19, 0x7b, 0x0e, 0xff}}},\n    {{{  4915,   1434,  -4044}, 0, {  3238,  -1702}, {0x1a, 0x7b, 0xf8, 0xff}}},\n    {{{  4403,   1434,  -3737}, 0, {  2898,  -1496}, {0xfb, 0x7e, 0xf7, 0xff}}},\n    {{{  4301,   1434,  -3532}, 0, {  2830,  -1360}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4211,    760,  -2971}, 0, {  2770,   -988}, {0xf3, 0x7d, 0x0c, 0xff}}},\n    {{{  3913,    754,  -2897}, 0, {  2572,   -938}, {0x02, 0x7e, 0x0f, 0xff}}},\n    {{{  2816,   1024,  -4351}, 0, {  1842,  -1906}, {0x02, 0x7e, 0x0d, 0xff}}},\n    {{{  1536,   1024,  -4095}, 0, {   990,  -1736}, {0x01, 0x7e, 0x06, 0xff}}},\n    {{{  4220,    754,  -2333}, 0, {  2776,   -564}, {0xf4, 0x7e, 0x00, 0xff}}},\n    {{{  4220,    754,  -1924}, 0, {  2776,   -290}, {0xef, 0x7d, 0x00, 0xff}}},\n    {{{  6144,   1024,  -1535}, 0, {  4056,      0}, {0xe5, 0x7b, 0x06, 0xff}}},\n};\n\n// 0x07002EE0 - 0x07002FE0\nstatic const Vtx sl_seg7_vertex_07002EE0[] = {\n    {{{  5120,   1024,    512}, 0, {  3374,   1328}, {0xfa, 0x7d, 0x15, 0xff}}},\n    {{{  5632,   1024,   1280}, 0, {  3716,   1840}, {0xf4, 0x7e, 0x01, 0xff}}},\n    {{{  6144,   1024,  -1535}, 0, {  4056,      0}, {0xe5, 0x7b, 0x06, 0xff}}},\n    {{{  6144,   1024,   6144}, 0, {  4056,   5076}, {0xe8, 0x7b, 0xf1, 0xff}}},\n    {{{  2687,   1024,    340}, 0, {  1756,   1214}, {0x03, 0x7d, 0x13, 0xff}}},\n    {{{  2816,   1024,  -4351}, 0, {  1842,  -1906}, {0x02, 0x7e, 0x0d, 0xff}}},\n    {{{  2373,   1024,  -4607}, 0, {  1546,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,   1024,  -4095}, 0, {   990,  -1736}, {0x01, 0x7e, 0x06, 0xff}}},\n    {{{  1248,   1024,  -5249}, 0, {   798,  -2504}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3551,   1651,  -2881}, 0, {  2330,   -928}, {0xfe, 0x7e, 0xfd, 0xff}}},\n    {{{  3716,   1613,  -3303}, 0, {  2440,  -1208}, {0x02, 0x7e, 0xf6, 0xff}}},\n    {{{  3014,   1616,  -3129}, 0, {  1974,  -1092}, {0xf7, 0x7e, 0x03, 0xff}}},\n    {{{  2373,   1024,  -5119}, 0, {  1546,  -2416}, {0x07, 0x7e, 0x0c, 0xff}}},\n    {{{  2816,   1024,  -5375}, 0, {  1842,  -2588}, {0x05, 0x7e, 0x02, 0xff}}},\n    {{{  1190,   1229,  -5480}, 0, {   760,  -2658}, {0x13, 0x7d, 0x04, 0xff}}},\n    {{{  1115,   1229,  -5778}, 0, {   710,  -2856}, {0x18, 0x7c, 0xfa, 0xff}}},\n};\n\n// 0x07002FE0 - 0x070030E0\nstatic const Vtx sl_seg7_vertex_07002FE0[] = {\n    {{{  1115,   1229,  -5778}, 0, {   710,  -2856}, {0x18, 0x7c, 0xfa, 0xff}}},\n    {{{   693,   1331,  -5673}, 0, {   430,  -2786}, {0x0e, 0x7e, 0xfd, 0xff}}},\n    {{{   768,   1331,  -5375}, 0, {   480,  -2588}, {0x12, 0x7d, 0xfc, 0xff}}},\n    {{{  1190,   1229,  -5480}, 0, {   760,  -2658}, {0x13, 0x7d, 0x04, 0xff}}},\n    {{{   371,   1331,  -5276}, 0, {   214,  -2520}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3551,   1651,  -2881}, 0, {  2330,   -928}, {0xfe, 0x7e, 0xfd, 0xff}}},\n    {{{  3818,   1613,  -3201}, 0, {  2508,  -1140}, {0x08, 0x7e, 0xf8, 0xff}}},\n    {{{  3716,   1613,  -3303}, 0, {  2440,  -1208}, {0x02, 0x7e, 0xf6, 0xff}}},\n    {{{ -7167,   2048,  -1279}, 0, { -4800,    138}, {0x2c, 0x76, 0x04, 0xff}}},\n    {{{ -8191,   2970,   8192}, 0, { -5480,   6438}, {0x4b, 0x5c, 0xd5, 0xff}}},\n    {{{ -7167,   1382,   7168}, 0, { -4800,   5758}, {0x1f, 0x76, 0xe1, 0xff}}},\n    {{{ -8191,   2970,  -8191}, 0, { -5480,  -4460}, {0x38, 0x6a, 0x27, 0xff}}},\n    {{{ -6143,   1946,   -460}, 0, { -4118,    684}, {0x10, 0x7d, 0x0d, 0xff}}},\n    {{{ -5247,   2048,  -1279}, 0, { -3522,    138}, {0x34, 0x73, 0x0c, 0xff}}},\n    {{{ -3327,   2099,   7168}, 0, { -2244,   5758}, {0xf2, 0x50, 0x9f, 0xff}}},\n    {{{ -6143,   1382,   4096}, 0, { -4118,   3714}, {0x11, 0x7d, 0x0d, 0xff}}},\n};\n\n// 0x070030E0 - 0x070031C0\nstatic const Vtx sl_seg7_vertex_070030E0[] = {\n    {{{ -4351,   1024,   6144}, 0, { -2926,   5076}, {0xf7, 0x6d, 0xc1, 0xff}}},\n    {{{ -6143,   1024,   6144}, 0, { -4118,   5076}, {0x1e, 0x7a, 0xf5, 0xff}}},\n    {{{ -7167,   1382,   7168}, 0, { -4800,   5758}, {0x1f, 0x76, 0xe1, 0xff}}},\n    {{{ -6143,   1382,   4096}, 0, { -4118,   3714}, {0x11, 0x7d, 0x0d, 0xff}}},\n    {{{ -3327,   2099,   7168}, 0, { -2244,   5758}, {0xf2, 0x50, 0x9f, 0xff}}},\n    {{{ -3941,   1382,   4710}, 0, { -2654,   4122}, {0x00, 0x7c, 0x17, 0xff}}},\n    {{{ -5119,   1382,   4710}, 0, { -3436,   4122}, {0xfa, 0x7c, 0x1a, 0xff}}},\n    {{{ -5887,   1024,   5632}, 0, { -3948,   4736}, {0xfa, 0x77, 0x29, 0xff}}},\n    {{{    90,   1024,   2330}, 0, {    28,   2538}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -403,   1024,   1818}, 0, {  -298,   2198}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3551,   1024,   2330}, 0, { -2394,   2538}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   875,   1024,   2330}, 0, {   550,   2538}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   875,   1024,   1818}, 0, {   550,   2198}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3439,   1024,   1818}, 0, { -2318,   2198}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070031C0 - 0x070032C0\nstatic const Vtx sl_seg7_vertex_070031C0[] = {\n    {{{ -5247,   2048,  -1279}, 0, { -3522,    138}, {0x34, 0x73, 0x0c, 0xff}}},\n    {{{ -6143,   1028,   -460}, 0, { -4118,    684}, {0x02, 0x4e, 0x63, 0xff}}},\n    {{{ -3781,   1024,   -511}, 0, { -2546,    650}, {0x19, 0x7b, 0x0d, 0xff}}},\n    {{{ -4965,   1024,  -2303}, 0, { -3334,   -544}, {0x28, 0x76, 0xed, 0xff}}},\n    {{{ -5887,   1024,   5632}, 0, { -3948,   4736}, {0xfa, 0x77, 0x29, 0xff}}},\n    {{{ -5119,   1382,   4710}, 0, { -3436,   4122}, {0xfa, 0x7c, 0x1a, 0xff}}},\n    {{{ -6143,   1382,   4096}, 0, { -4118,   3714}, {0x11, 0x7d, 0x0d, 0xff}}},\n    {{{ -3941,   1382,   4710}, 0, { -2654,   4122}, {0x00, 0x7c, 0x17, 0xff}}},\n    {{{ -2303,   1024,   -511}, 0, { -1564,    650}, {0xe9, 0x79, 0xe6, 0xff}}},\n    {{{ -3537,   1024,    255}, 0, { -2384,   1158}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2223,   1024,  -1319}, 0, { -1510,    112}, {0xf8, 0x7d, 0x13, 0xff}}},\n    {{{  2687,   1024,    340}, 0, {  1756,   1214}, {0x03, 0x7d, 0x13, 0xff}}},\n    {{{  4378,    819,   1267}, 0, {  2880,   1832}, {0x05, 0x7e, 0x00, 0xff}}},\n    {{{  4378,    819,   1062}, 0, {  2880,   1694}, {0x04, 0x7b, 0x1c, 0xff}}},\n    {{{  2175,   1024,    852}, 0, {  1414,   1556}, {0x35, 0x72, 0xf5, 0xff}}},\n    {{{  2330,    819,   1779}, 0, {  1518,   2172}, {0x3e, 0x6b, 0x1a, 0xff}}},\n};\n\n// 0x070032C0 - 0x070033C0\nstatic const Vtx sl_seg7_vertex_070032C0[] = {\n    {{{  2687,   1024,    340}, 0, {  1756,   1214}, {0x03, 0x7d, 0x13, 0xff}}},\n    {{{   768,   1331,  -1023}, 0, {   480,    308}, {0x3b, 0x4c, 0xae, 0xff}}},\n    {{{  1280,   1022,   -255}, 0, {   820,    820}, {0x69, 0x40, 0xe4, 0xff}}},\n    {{{ -3941,   1382,   4710}, 0, { -2654,   4122}, {0x00, 0x7c, 0x17, 0xff}}},\n    {{{ -3634,   1382,   4096}, 0, { -2448,   3714}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6143,   1382,   4096}, 0, { -4118,   3714}, {0x11, 0x7d, 0x0d, 0xff}}},\n    {{{ -5887,   1024,   5632}, 0, { -3948,   4736}, {0xfa, 0x77, 0x29, 0xff}}},\n    {{{ -4351,   1024,   5632}, 0, { -2926,   4736}, {0x00, 0x76, 0x2d, 0xff}}},\n    {{{  7168,   2458,   8192}, 0, {  4738,   6438}, {0xb7, 0x5f, 0xd8, 0xff}}},\n    {{{  6144,   1024,   6144}, 0, {  4056,   5076}, {0xe8, 0x7b, 0xf1, 0xff}}},\n    {{{  -511,   1024,   6656}, 0, {  -370,   5416}, {0x00, 0x76, 0xd2, 0xff}}},\n    {{{ -1277,   1741,   7168}, 0, {  -880,   5758}, {0x05, 0x4d, 0x9c, 0xff}}},\n    {{{  6144,   1024,  -1535}, 0, {  4056,      0}, {0xe5, 0x7b, 0x06, 0xff}}},\n    {{{  -767,    973,  -1023}, 0, {  -542,    308}, {0xd1, 0x4c, 0xa7, 0xff}}},\n    {{{ -2223,   1024,  -1319}, 0, { -1510,    112}, {0xf8, 0x7d, 0x13, 0xff}}},\n    {{{ -2303,   1024,   -511}, 0, { -1564,    650}, {0xe9, 0x79, 0xe6, 0xff}}},\n};\n\n// 0x070033C0 - 0x070034B0\nstatic const Vtx sl_seg7_vertex_070033C0[] = {\n    {{{  4582,    819,   1062}, 0, {  3016,   1694}, {0xef, 0x7b, 0x15, 0xff}}},\n    {{{  4582,    819,   1267}, 0, {  3016,   1832}, {0xf0, 0x7d, 0xf7, 0xff}}},\n    {{{  5632,   1024,   1280}, 0, {  3716,   1840}, {0xf4, 0x7e, 0x01, 0xff}}},\n    {{{  4378,    819,   1062}, 0, {  2880,   1694}, {0x04, 0x7b, 0x1c, 0xff}}},\n    {{{  5120,   1024,    512}, 0, {  3374,   1328}, {0xfa, 0x7d, 0x15, 0xff}}},\n    {{{  2687,   1024,    340}, 0, {  1756,   1214}, {0x03, 0x7d, 0x13, 0xff}}},\n    {{{  2330,    819,   1779}, 0, {  1518,   2172}, {0x3e, 0x6b, 0x1a, 0xff}}},\n    {{{  1534,   1741,   1678}, 0, {   988,   2104}, {0x4c, 0x49, 0x46, 0xff}}},\n    {{{  1418,   1229,   2366}, 0, {   912,   2562}, {0x4b, 0x52, 0x3b, 0xff}}},\n    {{{  2175,   1903,    852}, 0, {  1414,   1556}, {0x74, 0x2a, 0x1d, 0xff}}},\n    {{{  2175,   1024,    852}, 0, {  1414,   1556}, {0x35, 0x72, 0xf5, 0xff}}},\n    {{{   -72,   2150,   1244}, 0, {   -78,   1816}, {0xe5, 0x65, 0x47, 0xff}}},\n    {{{     0,   2150,   1818}, 0, {     0,   2198}, {0xec, 0x7d, 0x02, 0xff}}},\n    {{{   909,   2150,   1571}, 0, {   574,   2034}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   768,   2150,   1024}, 0, {   478,   1670}, {0x1c, 0x38, 0x6d, 0xff}}},\n};\n\n// 0x070034B0 - 0x070035A0\nstatic const Vtx sl_seg7_vertex_070034B0[] = {\n    {{{  -403,   1024,   1818}, 0, {  -298,   2198}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    90,   1024,   2330}, 0, {    28,   2538}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   875,   1024,   2330}, 0, {   550,   2538}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,    973,  -1023}, 0, {  -542,    308}, {0xd1, 0x4c, 0xa7, 0xff}}},\n    {{{  -808,    986,  -1223}, 0, {  -568,    176}, {0x00, 0x79, 0x23, 0xff}}},\n    {{{ -2223,   1024,  -1319}, 0, { -1510,    112}, {0xf8, 0x7d, 0x13, 0xff}}},\n    {{{   389,   2273,   1275}, 0, {     0,    582}, {0x9a, 0x34, 0xcb, 0xff}}},\n    {{{   371,   2253,   1310}, 0, {   138,    582}, {0xb4, 0xb5, 0x43, 0xff}}},\n    {{{   388,   2278,   1380}, 0, {   310,    496}, {0x85, 0xe8, 0x10, 0xff}}},\n    {{{   413,   2324,   1374}, 0, {   310,    410}, {0xbe, 0x6a, 0x10, 0xff}}},\n    {{{   371,   2150,   1310}, 0, {   138,    990}, {0x9d, 0x00, 0x4e, 0xff}}},\n    {{{   389,   2150,   1275}, 0, {     0,    990}, {0xa2, 0x00, 0xab, 0xff}}},\n    {{{   437,   2273,   1474}, 0, {   650,    582}, {0xc4, 0x35, 0x62, 0xff}}},\n    {{{   405,   2253,   1450}, 0, {   480,    582}, {0x83, 0xf0, 0xf2, 0xff}}},\n    {{{   437,   2150,   1474}, 0, {   650,    990}, {0xc3, 0x00, 0x6f, 0xff}}},\n};\n\n// 0x070035A0 - 0x07003680\nstatic const Vtx sl_seg7_vertex_070035A0[] = {\n    {{{   437,   2273,   1474}, 0, {  -280,   1400}, {0xc4, 0x35, 0x62, 0xff}}},\n    {{{   537,   2324,   1449}, 0, {    48,   1320}, {0x0d, 0x70, 0x38, 0xff}}},\n    {{{   413,   2324,   1374}, 0, {  -360,   1068}, {0xbe, 0x6a, 0x10, 0xff}}},\n    {{{   612,   2325,   1326}, 0, {   300,    910}, {0x38, 0x70, 0xf3, 0xff}}},\n    {{{   488,   2324,   1250}, 0, {  -110,    658}, {0xf2, 0x70, 0xc7, 0xff}}},\n    {{{   512,   2345,   1350}, 0, {     0,    990}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{   389,   2273,   1275}, 0, {  -442,    740}, {0x9a, 0x34, 0xcb, 0xff}}},\n    {{{   636,   2273,   1425}, 0, {   650,    580}, {0x66, 0x33, 0x36, 0xff}}},\n    {{{   662,   2273,   1314}, 0, {   308,    580}, {0x71, 0x27, 0xd8, 0xff}}},\n    {{{   612,   2325,   1326}, 0, {   310,    410}, {0x38, 0x70, 0xf3, 0xff}}},\n    {{{   662,   2150,   1314}, 0, {   308,    990}, {0x7e, 0x00, 0xf8, 0xff}}},\n    {{{   636,   2150,   1425}, 0, {   650,    990}, {0x64, 0x00, 0x4d, 0xff}}},\n    {{{   588,   2273,   1226}, 0, {     0,    580}, {0x35, 0x33, 0x99, 0xff}}},\n    {{{   588,   2150,   1226}, 0, {     0,    990}, {0x4d, 0x00, 0x9c, 0xff}}},\n};\n\n// 0x07003680 - 0x07003780\nstatic const Vtx sl_seg7_vertex_07003680[] = {\n    {{{   537,   2324,   1449}, 0, {   308,    410}, {0x0d, 0x70, 0x38, 0xff}}},\n    {{{   437,   2273,   1474}, 0, {     0,    582}, {0xc4, 0x35, 0x62, 0xff}}},\n    {{{   549,   2273,   1499}, 0, {   308,    582}, {0x29, 0x27, 0x71, 0xff}}},\n    {{{   588,   2273,   1226}, 0, {   218,    578}, {0x35, 0x33, 0x99, 0xff}}},\n    {{{   488,   2324,   1250}, 0, {  -110,    658}, {0xf2, 0x70, 0xc7, 0xff}}},\n    {{{   612,   2325,   1326}, 0, {   300,    910}, {0x38, 0x70, 0xf3, 0xff}}},\n    {{{   636,   2273,   1425}, 0, {   380,   1238}, {0x66, 0x33, 0x36, 0xff}}},\n    {{{   537,   2324,   1449}, 0, {    48,   1320}, {0x0d, 0x70, 0x38, 0xff}}},\n    {{{   588,   2273,   1226}, 0, {   650,    582}, {0x35, 0x33, 0x99, 0xff}}},\n    {{{   476,   2273,   1201}, 0, {   308,    582}, {0xd7, 0x27, 0x8f, 0xff}}},\n    {{{   488,   2324,   1250}, 0, {   308,    410}, {0xf2, 0x70, 0xc7, 0xff}}},\n    {{{   476,   2150,   1201}, 0, {   308,    990}, {0xf7, 0x00, 0x82, 0xff}}},\n    {{{   588,   2150,   1226}, 0, {   650,    990}, {0x4d, 0x00, 0x9c, 0xff}}},\n    {{{   389,   2150,   1275}, 0, {     0,    990}, {0xa2, 0x00, 0xab, 0xff}}},\n    {{{   389,   2273,   1275}, 0, {     0,    582}, {0x9a, 0x34, 0xcb, 0xff}}},\n    {{{   549,   2150,   1499}, 0, {   308,    990}, {0x09, 0x00, 0x7e, 0xff}}},\n};\n\n// 0x07003780 - 0x07003860\nstatic const Vtx sl_seg7_vertex_07003780[] = {\n    {{{   549,   2150,   1499}, 0, {   308,    990}, {0x09, 0x00, 0x7e, 0xff}}},\n    {{{   437,   2273,   1474}, 0, {     0,    582}, {0xc4, 0x35, 0x62, 0xff}}},\n    {{{   437,   2150,   1474}, 0, {     0,    990}, {0xc3, 0x00, 0x6f, 0xff}}},\n    {{{   636,   2150,   1425}, 0, {   650,    990}, {0x64, 0x00, 0x4d, 0xff}}},\n    {{{   549,   2273,   1499}, 0, {   308,    582}, {0x29, 0x27, 0x71, 0xff}}},\n    {{{   636,   2273,   1425}, 0, {   650,    582}, {0x66, 0x33, 0x36, 0xff}}},\n    {{{   537,   2324,   1449}, 0, {   308,    410}, {0x0d, 0x70, 0x38, 0xff}}},\n    {{{   437,   2150,   1474}, 0, {   650,    990}, {0xc3, 0x00, 0x6f, 0xff}}},\n    {{{   405,   2253,   1450}, 0, {   480,    582}, {0x83, 0xf0, 0xf2, 0xff}}},\n    {{{   405,   2150,   1450}, 0, {   480,    990}, {0x84, 0x00, 0xe7, 0xff}}},\n    {{{  1280,   1022,   -255}, 0, {   394,   2072}, {0x69, 0x40, 0xe4, 0xff}}},\n    {{{  1280,   2108,    256}, 0, {     0,    990}, {0x79, 0x00, 0x24, 0xff}}},\n    {{{  1280,   1400,    256}, 0, {     0,   1694}, {0x71, 0x2e, 0xde, 0xff}}},\n    {{{  1280,   2108,   -255}, 0, {   394,    990}, {0x6e, 0xd0, 0xd9, 0xff}}},\n};\n\n// 0x07003860 - 0x07003960\nstatic const Vtx sl_seg7_vertex_07003860[] = {\n    {{{  1280,   2816,    256}, 0, {     0,    284}, {0x72, 0x28, 0x25, 0xff}}},\n    {{{   512,   3328,    512}, 0, {  -668,   -228}, {0x5a, 0x2b, 0x4d, 0xff}}},\n    {{{   768,   2816,   1024}, 0, {  -952,    284}, {0x2f, 0x49, 0x5c, 0xff}}},\n    {{{  1280,   1022,   -255}, 0, {   394,   2072}, {0x69, 0x40, 0xe4, 0xff}}},\n    {{{   768,   1331,  -1023}, 0, {   748,   1764}, {0x3b, 0x4c, 0xae, 0xff}}},\n    {{{   768,   2108,  -1023}, 0, {   748,    990}, {0x3e, 0xdc, 0x98, 0xff}}},\n    {{{  1635,   2304,   -646}, 0, {   914,    794}, {0x34, 0x92, 0xde, 0xff}}},\n    {{{  1280,   2108,   -255}, 0, {   394,    990}, {0x6e, 0xd0, 0xd9, 0xff}}},\n    {{{  1379,   2304,  -1030}, 0, {  1092,    794}, {0x26, 0xc3, 0x98, 0xff}}},\n    {{{   768,   2150,   1024}, 0, {  -952,    948}, {0x1c, 0x38, 0x6d, 0xff}}},\n    {{{   -72,   2852,   1244}, 0, { -1600,    248}, {0x25, 0xf2, 0x78, 0xff}}},\n    {{{   -72,   2150,   1244}, 0, { -1600,    948}, {0xe5, 0x65, 0x47, 0xff}}},\n    {{{     0,   3328,    768}, 0, { -1164,   -228}, {0x5f, 0xfb, 0x53, 0xff}}},\n    {{{   768,   4352,   -767}, 0, {   690,    628}, {0x53, 0x2f, 0xad, 0xff}}},\n    {{{     0,   4864,   -511}, 0, {     0,    268}, {0x00, 0x74, 0xce, 0xff}}},\n    {{{   512,   4864,      0}, 0, {     0,    990}, {0x3f, 0x6d, 0x07, 0xff}}},\n};\n\n// 0x07003960 - 0x07003A60\nstatic const Vtx sl_seg7_vertex_07003960[] = {\n    {{{     0,   3328,    768}, 0, { -1164,   -228}, {0x5f, 0xfb, 0x53, 0xff}}},\n    {{{    -1,   3564,   1030}, 0, { -1382,   -462}, {0x7a, 0x00, 0x1f, 0xff}}},\n    {{{   -72,   2852,   1244}, 0, { -1600,    248}, {0x25, 0xf2, 0x78, 0xff}}},\n    {{{   -72,   2150,   1244}, 0, { -1600,    948}, {0xe5, 0x65, 0x47, 0xff}}},\n    {{{  -840,   2816,    988}, 0, { -1812,    284}, {0x9a, 0x01, 0x4b, 0xff}}},\n    {{{     0,   4864,    512}, 0, {  -752,    990}, {0x1d, 0x73, 0x2b, 0xff}}},\n    {{{     0,   4864,   -511}, 0, {     0,    268}, {0x00, 0x74, 0xce, 0xff}}},\n    {{{  -511,   4864,      0}, 0, {  -752,    268}, {0xc3, 0x6e, 0xf2, 0xff}}},\n    {{{   512,   4864,      0}, 0, {     0,    990}, {0x3f, 0x6d, 0x07, 0xff}}},\n    {{{   623,   4352,    623}, 0, {  -392,   1506}, {0x40, 0x53, 0x47, 0xff}}},\n    {{{   -24,   4352,    925}, 0, { -1062,   1262}, {0x2b, 0x49, 0x5d, 0xff}}},\n    {{{  1024,   4351,      0}, 0, {   330,   1350}, {0x75, 0x30, 0x06, 0xff}}},\n    {{{   768,   4352,   -767}, 0, {   690,    628}, {0x53, 0x2f, 0xad, 0xff}}},\n    {{{   768,   2108,  -1023}, 0, {   748,    990}, {0x3e, 0xdc, 0x98, 0xff}}},\n    {{{     0,    973,  -1279}, 0, {   534,   2120}, {0x14, 0x00, 0x83, 0xff}}},\n    {{{     0,   2816,  -1279}, 0, {   534,    284}, {0xfb, 0x20, 0x86, 0xff}}},\n};\n\n// 0x07003A60 - 0x07003B60\nstatic const Vtx sl_seg7_vertex_07003A60[] = {\n    {{{     0,   4864,   -511}, 0, {     0,    268}, {0x00, 0x74, 0xce, 0xff}}},\n    {{{  -767,   4352,   -767}, 0, {  -392,   -456}, {0xad, 0x2f, 0xad, 0xff}}},\n    {{{  -511,   4864,      0}, 0, {  -752,    268}, {0xc3, 0x6e, 0xf2, 0xff}}},\n    {{{   768,   4352,   -767}, 0, {   690,    628}, {0x53, 0x2f, 0xad, 0xff}}},\n    {{{     0,   4352,  -1023}, 0, {   330,    -94}, {0x00, 0x31, 0x8b, 0xff}}},\n    {{{   768,   2108,  -1023}, 0, {   748,    990}, {0x3e, 0xdc, 0x98, 0xff}}},\n    {{{   768,   1331,  -1023}, 0, {   748,   1764}, {0x3b, 0x4c, 0xae, 0xff}}},\n    {{{     0,    973,  -1279}, 0, {   534,   2120}, {0x14, 0x00, 0x83, 0xff}}},\n    {{{   768,   1024,  -1023}, 0, {   748,   2070}, {0x28, 0x00, 0x88, 0xff}}},\n    {{{  -767,    973,  -1023}, 0, {  -100,   2120}, {0xd1, 0x4c, 0xa7, 0xff}}},\n    {{{     0,   2816,  -1279}, 0, {   534,    284}, {0xfb, 0x20, 0x86, 0xff}}},\n    {{{   768,   3072,  -1023}, 0, {   748,     28}, {0x16, 0x53, 0xa3, 0xff}}},\n    {{{  1379,   2304,  -1030}, 0, {  1092,    794}, {0x26, 0xc3, 0x98, 0xff}}},\n    {{{  1635,   2560,   -646}, 0, {   914,    538}, {0x5e, 0x00, 0x55, 0xff}}},\n    {{{  1740,   2466,   -760}, 0, {  1068,    632}, {0x67, 0xb7, 0xfb, 0xff}}},\n    {{{  1990,   2816,  -1036}, 0, {  1434,    284}, {0x7d, 0x11, 0xff, 0xff}}},\n};\n\n// 0x07003B60 - 0x07003C40\nstatic const Vtx sl_seg7_vertex_07003B60[] = {\n    {{{  1280,   2108,    256}, 0, {     0,    990}, {0x79, 0x00, 0x24, 0xff}}},\n    {{{   995,   2816,    683}, 0, {  -542,    284}, {0x69, 0x00, 0x46, 0xff}}},\n    {{{   995,   2108,    683}, 0, {  -542,    990}, {0x69, 0x00, 0x46, 0xff}}},\n    {{{  1280,   2816,    256}, 0, {     0,    284}, {0x72, 0x28, 0x25, 0xff}}},\n    {{{  1280,   2364,   -255}, 0, {   394,    734}, {0x76, 0x00, 0x2d, 0xff}}},\n    {{{  1280,   3072,   -255}, 0, {   394,     28}, {0x61, 0x4a, 0x20, 0xff}}},\n    {{{  1280,   2210,    256}, 0, {     0,    888}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,   3328,    512}, 0, {  -668,   -228}, {0x5a, 0x2b, 0x4d, 0xff}}},\n    {{{  1635,   2560,   -646}, 0, {   914,    538}, {0x5e, 0x00, 0x55, 0xff}}},\n    {{{  1635,   2796,   -646}, 0, {   914,    284}, {0x5e, 0x00, 0x55, 0xff}}},\n    {{{  1453,   2970,   -444}, 0, {   646,    130}, {0x5e, 0x00, 0x55, 0xff}}},\n    {{{  1635,   2816,   -646}, 0, {   914,    284}, {0x42, 0x59, 0x3c, 0xff}}},\n    {{{  1990,   2816,  -1036}, 0, {  1434,    284}, {0x7d, 0x11, 0xff, 0xff}}},\n    {{{  1453,   3052,   -444}, 0, {   646,     28}, {0x5e, 0x00, 0x55, 0xff}}},\n};\n\n// 0x07003C40 - 0x07003D30\nstatic const Vtx sl_seg7_vertex_07003C40[] = {\n    {{{  1280,   1022,   -255}, 0, {   394,   2072}, {0x69, 0x40, 0xe4, 0xff}}},\n    {{{  1280,   1400,    256}, 0, {     0,   1694}, {0x71, 0x2e, 0xde, 0xff}}},\n    {{{  2175,   1024,    852}, 0, {     0,   2070}, {0x35, 0x72, 0xf5, 0xff}}},\n    {{{  1280,   3072,   -255}, 0, {   394,     28}, {0x61, 0x4a, 0x20, 0xff}}},\n    {{{   768,   3328,      0}, 0, {  -100,   -228}, {0x7e, 0xf4, 0xfb, 0xff}}},\n    {{{   512,   3328,    512}, 0, {  -668,   -228}, {0x5a, 0x2b, 0x4d, 0xff}}},\n    {{{  1195,   3072,   -383}, 0, {   452,     28}, {0x23, 0x77, 0xeb, 0xff}}},\n    {{{  1635,   2816,   -646}, 0, {   914,    284}, {0x42, 0x59, 0x3c, 0xff}}},\n    {{{  1990,   2816,  -1036}, 0, {  1434,    284}, {0x7d, 0x11, 0xff, 0xff}}},\n    {{{  1379,   2816,  -1030}, 0, {  1092,    284}, {0xff, 0x38, 0x8f, 0xff}}},\n    {{{  1379,   2304,  -1030}, 0, {  1092,    794}, {0x26, 0xc3, 0x98, 0xff}}},\n    {{{  1740,   2466,   -760}, 0, {  1068,    632}, {0x67, 0xb7, 0xfb, 0xff}}},\n    {{{ -1279,   2816,   -255}, 0, { -1022,    284}, {0x97, 0x3c, 0xdd, 0xff}}},\n    {{{  -511,   3328,   -511}, 0, {  -384,   -228}, {0xa4, 0x17, 0xac, 0xff}}},\n    {{{  -767,   2816,  -1023}, 0, {  -100,    284}, {0xb6, 0x32, 0xa7, 0xff}}},\n};\n\n// 0x07003D30 - 0x07003E10\nstatic const Vtx sl_seg7_vertex_07003D30[] = {\n    {{{ -1279,   1656,   -255}, 0, { -1022,   1440}, {0xa7, 0x20, 0xac, 0xff}}},\n    {{{  -767,   2816,  -1023}, 0, {  -100,    284}, {0xb6, 0x32, 0xa7, 0xff}}},\n    {{{  -767,    973,  -1023}, 0, {  -100,   2120}, {0xd1, 0x4c, 0xa7, 0xff}}},\n    {{{ -1279,   2816,   -255}, 0, { -1022,    284}, {0x97, 0x3c, 0xdd, 0xff}}},\n    {{{     0,   2816,  -1279}, 0, {   534,    284}, {0xfb, 0x20, 0x86, 0xff}}},\n    {{{     0,   3328,   -767}, 0, {   110,   -228}, {0xf7, 0x01, 0x82, 0xff}}},\n    {{{  -511,   3328,   -511}, 0, {  -384,   -228}, {0xa4, 0x17, 0xac, 0xff}}},\n    {{{  -767,   3328,      0}, 0, {  -952,   -228}, {0x84, 0xea, 0x00, 0xff}}},\n    {{{   512,   3328,   -511}, 0, {   180,   -228}, {0x54, 0x35, 0xb2, 0xff}}},\n    {{{   768,   3072,  -1023}, 0, {   748,     28}, {0x16, 0x53, 0xa3, 0xff}}},\n    {{{  1024,   3585,      0}, 0, {  -838,    990}, {0x7a, 0xe0, 0x00, 0xff}}},\n    {{{   768,   3584,   -767}, 0, {     0,    990}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{   768,   4352,   -767}, 0, {     0,    224}, {0x53, 0x2f, 0xad, 0xff}}},\n    {{{  1024,   4351,      0}, 0, {  -838,    224}, {0x75, 0x30, 0x06, 0xff}}},\n};\n\n// 0x07003E10 - 0x07003EF0\nstatic const Vtx sl_seg7_vertex_07003E10[] = {\n    {{{ -1279,   2816,    256}, 0, { -1448,    284}, {0x97, 0x3f, 0x1e, 0xff}}},\n    {{{ -1648,    768,    748}, 0, { -2060,   2070}, {0x98, 0x45, 0x11, 0xff}}},\n    {{{  -840,   1823,    988}, 0, { -1812,   1272}, {0xa2, 0x3d, 0x3a, 0xff}}},\n    {{{ -2303,   1024,   -511}, 0, { -1376,   2070}, {0xe9, 0x79, 0xe6, 0xff}}},\n    {{{  -840,   2816,    988}, 0, { -1812,    284}, {0x9a, 0x01, 0x4b, 0xff}}},\n    {{{     0,   3328,   -767}, 0, {  -758,   2010}, {0xf7, 0x01, 0x82, 0xff}}},\n    {{{  -767,   3584,   -767}, 0, {     0,   1754}, {0xb7, 0xb7, 0xb7, 0xff}}},\n    {{{     0,   3584,  -1023}, 0, {  -838,   1754}, {0x00, 0xe0, 0x86, 0xff}}},\n    {{{  -511,   3328,   -511}, 0, {  -192,   2010}, {0xa4, 0x17, 0xac, 0xff}}},\n    {{{   512,   3328,   -511}, 0, { -1162,   2010}, {0x54, 0x35, 0xb2, 0xff}}},\n    {{{   768,   3584,   -767}, 0, { -1484,   1754}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{   768,   4352,   -767}, 0, { -1484,    990}, {0x53, 0x2f, 0xad, 0xff}}},\n    {{{  -767,   4352,   -767}, 0, {     0,    990}, {0xad, 0x2f, 0xad, 0xff}}},\n    {{{     0,   4352,  -1023}, 0, {  -838,    990}, {0x00, 0x31, 0x8b, 0xff}}},\n};\n\n// 0x07003EF0 - 0x07003FE0\nstatic const Vtx sl_seg7_vertex_07003EF0[] = {\n    {{{  1333,   3072,   -683}, 0, {   778,     28}, {0x2a, 0x6f, 0xd5, 0xff}}},\n    {{{  1493,   2816,   -859}, 0, {  1012,    284}, {0x4e, 0x55, 0xcc, 0xff}}},\n    {{{  1379,   2816,  -1029}, 0, {  1090,    284}, {0x3c, 0x5d, 0xc3, 0xff}}},\n    {{{   512,   3328,   -511}, 0, { -1162,   2010}, {0x54, 0x35, 0xb2, 0xff}}},\n    {{{   768,   3584,   -767}, 0, { -1484,   1754}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{   768,   3328,      0}, 0, { -1242,   2010}, {0x7e, 0xf4, 0xfb, 0xff}}},\n    {{{  1024,   3585,      0}, 0, { -1484,   1754}, {0x7a, 0xe0, 0x00, 0xff}}},\n    {{{  -767,   3328,      0}, 0, {   210,   2010}, {0x84, 0xea, 0x00, 0xff}}},\n    {{{  -767,   3584,   -767}, 0, {     0,   1754}, {0xb7, 0xb7, 0xb7, 0xff}}},\n    {{{  -511,   3328,   -511}, 0, {  -192,   2010}, {0xa4, 0x17, 0xac, 0xff}}},\n    {{{  -767,   4352,   -767}, 0, {     0,    990}, {0xad, 0x2f, 0xad, 0xff}}},\n    {{{ -1023,   3584,      0}, 0, {   452,   1754}, {0x88, 0xd9, 0xf7, 0xff}}},\n    {{{ -1023,   4352,      0}, 0, {   452,    990}, {0x88, 0x27, 0x09, 0xff}}},\n    {{{  1195,   3072,   -383}, 0, {   452,     28}, {0x23, 0x77, 0xeb, 0xff}}},\n    {{{   768,   3072,  -1023}, 0, {   748,     28}, {0x16, 0x53, 0xa3, 0xff}}},\n};\n\n// 0x07003FE0 - 0x070040E0\nstatic const Vtx sl_seg7_vertex_07003FE0[] = {\n    {{{  -840,   2816,    988}, 0, { -1812,    284}, {0x9a, 0x01, 0x4b, 0xff}}},\n    {{{  -608,   3564,   1786}, 0, { -2346,   -462}, {0xb8, 0xc0, 0x51, 0xff}}},\n    {{{  -769,   3564,    774}, 0, { -1594,   -462}, {0x8d, 0xfc, 0xcc, 0xff}}},\n    {{{   768,   3072,  -1023}, 0, {   748,     28}, {0x16, 0x53, 0xa3, 0xff}}},\n    {{{  1379,   2816,  -1030}, 0, {  1092,    284}, {0xff, 0x38, 0x8f, 0xff}}},\n    {{{  1379,   2304,  -1030}, 0, {  1092,    794}, {0x26, 0xc3, 0x98, 0xff}}},\n    {{{   512,   3328,   -511}, 0, {   180,   -228}, {0x54, 0x35, 0xb2, 0xff}}},\n    {{{  1195,   3072,   -383}, 0, {   452,     28}, {0x23, 0x77, 0xeb, 0xff}}},\n    {{{   -72,   2150,   1244}, 0, { -1600,    948}, {0xe5, 0x65, 0x47, 0xff}}},\n    {{{  -840,   1823,    988}, 0, { -1812,   1272}, {0xa2, 0x3d, 0x3a, 0xff}}},\n    {{{  -511,   3328,    512}, 0, { -1234,   -228}, {0x83, 0x10, 0xf3, 0xff}}},\n    {{{ -1279,   2816,    256}, 0, { -1448,    284}, {0x97, 0x3f, 0x1e, 0xff}}},\n    {{{   -72,   2852,   1244}, 0, { -1600,    248}, {0x25, 0xf2, 0x78, 0xff}}},\n    {{{  1740,   2466,   -760}, 0, {  1068,    632}, {0x67, 0xb7, 0xfb, 0xff}}},\n    {{{  1635,   2304,   -646}, 0, {   914,    794}, {0x34, 0x92, 0xde, 0xff}}},\n    {{{   768,   3328,      0}, 0, {  -100,   -228}, {0x7e, 0xf4, 0xfb, 0xff}}},\n};\n\n// 0x070040E0 - 0x070041D0\nstatic const Vtx sl_seg7_vertex_070040E0[] = {\n    {{{  -769,   3564,    774}, 0, { -1594,   -462}, {0x8d, 0xfc, 0xcc, 0xff}}},\n    {{{  -767,   3584,    768}, 0, { -1588,   -484}, {0x95, 0xda, 0x38, 0xff}}},\n    {{{  -511,   3328,    512}, 0, { -1234,   -228}, {0x83, 0x10, 0xf3, 0xff}}},\n    {{{ -1279,   2816,    256}, 0, { -1448,    284}, {0x97, 0x3f, 0x1e, 0xff}}},\n    {{{  -767,   3328,      0}, 0, {  -952,   -228}, {0x84, 0xea, 0x00, 0xff}}},\n    {{{     0,   3328,    768}, 0, { -1164,   -228}, {0x5f, 0xfb, 0x53, 0xff}}},\n    {{{     0,   3584,   1024}, 0, { -1376,   -484}, {0x34, 0xe2, 0x6f, 0xff}}},\n    {{{    -1,   3564,   1030}, 0, { -1382,   -462}, {0x7a, 0x00, 0x1f, 0xff}}},\n    {{{  -767,   3584,    768}, 0, {   452,   1754}, {0x95, 0xda, 0x38, 0xff}}},\n    {{{     0,   4352,   1024}, 0, {  -192,    990}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{  -767,   4352,    768}, 0, {   452,    990}, {0x9f, 0x22, 0x4a, 0xff}}},\n    {{{     0,   3584,   1024}, 0, {  -192,   1754}, {0x34, 0xe2, 0x6f, 0xff}}},\n    {{{  -511,   3328,    512}, 0, {   130,   2010}, {0x83, 0x10, 0xf3, 0xff}}},\n    {{{  -767,   3328,      0}, 0, {   210,   2010}, {0x84, 0xea, 0x00, 0xff}}},\n    {{{ -1023,   3584,      0}, 0, {   452,   1754}, {0x88, 0xd9, 0xf7, 0xff}}},\n};\n\n// 0x070041D0 - 0x070042B0\nstatic const Vtx sl_seg7_vertex_070041D0[] = {\n    {{{ -1023,   4352,      0}, 0, {  -192,    224}, {0x88, 0x27, 0x09, 0xff}}},\n    {{{ -1023,   3584,      0}, 0, {  -192,    990}, {0x88, 0xd9, 0xf7, 0xff}}},\n    {{{  -767,   3584,    768}, 0, { -1000,    990}, {0x95, 0xda, 0x38, 0xff}}},\n    {{{  -767,   4352,    768}, 0, { -1000,    224}, {0x9f, 0x22, 0x4a, 0xff}}},\n    {{{ -1279,   2816,    256}, 0, { -1448,    284}, {0x97, 0x3f, 0x1e, 0xff}}},\n    {{{ -1279,   2816,   -255}, 0, { -1022,    284}, {0x97, 0x3c, 0xdd, 0xff}}},\n    {{{ -1279,   1656,   -255}, 0, { -1022,   1440}, {0xa7, 0x20, 0xac, 0xff}}},\n    {{{  -767,   3328,      0}, 0, {  -952,   -228}, {0x84, 0xea, 0x00, 0xff}}},\n    {{{ -2303,   1024,   -511}, 0, { -1376,   2070}, {0xe9, 0x79, 0xe6, 0xff}}},\n    {{{  -767,    973,  -1023}, 0, {  -100,   2120}, {0xd1, 0x4c, 0xa7, 0xff}}},\n    {{{  -511,   4864,      0}, 0, {  -752,    268}, {0xc3, 0x6e, 0xf2, 0xff}}},\n    {{{  -767,   4352,   -767}, 0, {  -392,   -456}, {0xad, 0x2f, 0xad, 0xff}}},\n    {{{ -1023,   4352,      0}, 0, { -1114,    -94}, {0x88, 0x27, 0x09, 0xff}}},\n    {{{  -767,   4352,    768}, 0, { -1476,    628}, {0x9f, 0x22, 0x4a, 0xff}}},\n};\n\n// 0x070042B0 - 0x07004390\nstatic const Vtx sl_seg7_vertex_070042B0[] = {\n    {{{   970,    963,  -4041}, 0, {-20200,  -3852}, {0x60, 0xfd, 0xae, 0xff}}},\n    {{{   924,    963,  -4064}, 0, {-20314,  -3624}, {0xec, 0xfc, 0x83, 0xff}}},\n    {{{   936,   1041,  -4007}, 0, {-20028,  -3680}, {0x01, 0x7c, 0xe6, 0xff}}},\n    {{{   879,    963,  -4018}, 0, {-20086,  -3394}, {0x85, 0xfc, 0xe4, 0xff}}},\n    {{{   936,    894,  -4007}, 0, {-20028,  -3680}, {0x01, 0x84, 0xe9, 0xff}}},\n    {{{   993,    963,  -3972}, 0, {-19856,  -3966}, {0x70, 0xfb, 0x3b, 0xff}}},\n    {{{   902,    963,  -3949}, 0, {-19742,  -3508}, {0xc4, 0xfc, 0x6f, 0xff}}},\n    {{{  -872,    963,  -5167}, 0, {-25822,   5344}, {0x5f, 0xfd, 0xad, 0xff}}},\n    {{{  -918,    963,  -5190}, 0, {-25936,   5572}, {0xed, 0xfc, 0x83, 0xff}}},\n    {{{  -906,   1041,  -5133}, 0, {-25650,   5516}, {0x01, 0x7c, 0xe6, 0xff}}},\n    {{{  -964,    963,  -5144}, 0, {-25706,   5802}, {0x85, 0xfc, 0xe3, 0xff}}},\n    {{{  -906,    894,  -5133}, 0, {-25650,   5516}, {0x01, 0x84, 0xe9, 0xff}}},\n    {{{  -849,    963,  -5099}, 0, {-25478,   5230}, {0x70, 0xfb, 0x3b, 0xff}}},\n    {{{  -941,    963,  -5076}, 0, {-25364,   5688}, {0xc5, 0xfc, 0x70, 0xff}}},\n};\n\n// 0x07004390 - 0x07004490\nstatic const Vtx sl_seg7_vertex_07004390[] = {\n    {{{   310,    963,  -5702}, 0, {-28490,   -558}, {0xed, 0xfc, 0x83, 0xff}}},\n    {{{   356,    963,  -5679}, 0, {-28376,   -786}, {0x5f, 0xfd, 0xad, 0xff}}},\n    {{{   322,    894,  -5645}, 0, {-28204,   -614}, {0x01, 0x84, 0xe9, 0xff}}},\n    {{{   415,    947,  -3639}, 0, {-18196,  -1080}, {0x73, 0xd0, 0x15, 0xff}}},\n    {{{   236,    922,  -3511}, 0, {-17558,   -186}, {0xf5, 0xe5, 0x7b, 0xff}}},\n    {{{   248,    870,  -3601}, 0, {-18004,   -250}, {0xf6, 0x84, 0xe9, 0xff}}},\n    {{{   108,    947,  -3588}, 0, {-17940,    454}, {0x91, 0xc5, 0xf2, 0xff}}},\n    {{{   133,    998,  -3588}, 0, {-17940,    326}, {0xb0, 0x62, 0x02, 0xff}}},\n    {{{   236,    947,  -3665}, 0, {-18324,   -186}, {0xe6, 0xff, 0x84, 0xff}}},\n    {{{   236,    998,  -3639}, 0, {-18196,   -186}, {0xf1, 0x6c, 0xc0, 0xff}}},\n    {{{   389,    998,  -3639}, 0, {-18196,   -952}, {0x27, 0x67, 0xc2, 0xff}}},\n    {{{   236,    998,  -3537}, 0, {-17686,   -186}, {0x15, 0x5e, 0x51, 0xff}}},\n    {{{  -286,    870,  -4638}, 0, {-23178,   2418}, {0x1f, 0xe7, 0x88, 0xff}}},\n    {{{  -204,    870,  -4441}, 0, {-22198,   2010}, {0x7c, 0xee, 0x0c, 0xff}}},\n    {{{  -286,    772,  -4539}, 0, {-22688,   2418}, {0x02, 0x82, 0xf9, 0xff}}},\n    {{{   264,    963,  -5656}, 0, {-28262,   -328}, {0x85, 0xfc, 0xe3, 0xff}}},\n};\n\n// 0x07004490 - 0x07004590\nstatic const Vtx sl_seg7_vertex_07004490[] = {\n    {{{   356,    963,  -5679}, 0, {-28376,   -786}, {0x5f, 0xfd, 0xad, 0xff}}},\n    {{{   310,    963,  -5702}, 0, {-28490,   -558}, {0xed, 0xfc, 0x83, 0xff}}},\n    {{{   322,   1041,  -5645}, 0, {-28204,   -614}, {0x01, 0x7c, 0xe6, 0xff}}},\n    {{{   379,    963,  -5611}, 0, {-28032,   -900}, {0x70, 0xfb, 0x3b, 0xff}}},\n    {{{   322,    894,  -5645}, 0, {-28204,   -614}, {0x01, 0x84, 0xe9, 0xff}}},\n    {{{   287,    963,  -5588}, 0, {-27918,   -442}, {0xc5, 0xfc, 0x70, 0xff}}},\n    {{{   264,    963,  -5656}, 0, {-28262,   -328}, {0x85, 0xfc, 0xe3, 0xff}}},\n    {{{  -286,    870,  -4359}, 0, {-21788,   2418}, {0xe4, 0xdf, 0x77, 0xff}}},\n    {{{  -384,    870,  -4539}, 0, {-22688,   2910}, {0x85, 0xea, 0xed, 0xff}}},\n    {{{  -286,    772,  -4539}, 0, {-22688,   2418}, {0x02, 0x82, 0xf9, 0xff}}},\n    {{{  -286,    870,  -4638}, 0, {-23178,   2418}, {0x1f, 0xe7, 0x88, 0xff}}},\n    {{{  -286,   1067,  -4539}, 0, {-22688,   2418}, {0x02, 0x7e, 0x00, 0xff}}},\n    {{{  -204,    870,  -4441}, 0, {-22198,   2010}, {0x7c, 0xee, 0x0c, 0xff}}},\n    {{{   -72,   2852,   1244}, 0, { -1600,    248}, {0x25, 0xf2, 0x78, 0xff}}},\n    {{{  -587,   3564,   1792}, 0, { -2340,   -462}, {0x30, 0xd1, 0x6b, 0xff}}},\n    {{{  -608,   3564,   1786}, 0, { -2346,   -462}, {0xb8, 0xc0, 0x51, 0xff}}},\n};\n\n// 0x07004590 - 0x07004620\nstatic const Vtx sl_seg7_vertex_07004590[] = {\n    {{{  -587,   3564,   1792}, 0, { -2340,   -462}, {0x30, 0xd1, 0x6b, 0xff}}},\n    {{{   -72,   2852,   1244}, 0, { -1600,    248}, {0x25, 0xf2, 0x78, 0xff}}},\n    {{{    -1,   3564,   1030}, 0, { -1382,   -462}, {0x7a, 0x00, 0x1f, 0xff}}},\n    {{{ -1648,    768,    748}, 0, { -1126,   1486}, {0x98, 0x45, 0x11, 0xff}}},\n    {{{ -1033,   1823,   1428}, 0, {  -730,   1956}, {0xbf, 0x68, 0xe3, 0xff}}},\n    {{{  -840,   1823,    988}, 0, {  -590,   1646}, {0xa2, 0x3d, 0x3a, 0xff}}},\n    {{{ -1801,    768,    952}, 0, { -1230,   1622}, {0xb3, 0x52, 0xc7, 0xff}}},\n    {{{   -72,   2150,   1244}, 0, {   -78,   1816}, {0xe5, 0x65, 0x47, 0xff}}},\n    {{{     0,   2150,   1818}, 0, {     0,   2198}, {0xec, 0x7d, 0x02, 0xff}}},\n};\n\n// 0x07004620 - 0x07004670\nstatic const Vtx sl_seg7_vertex_07004620[] = {\n    {{{   487,   2278,   1356}, 0, {   238,    -30}, {0xa9, 0xa9, 0x1e, 0xff}}},\n    {{{   471,   2253,   1286}, 0, {   510,    -30}, {0xec, 0xd4, 0x75, 0xff}}},\n    {{{   471,   2150,   1286}, 0, {   510,    990}, {0x9f, 0x00, 0x51, 0xff}}},\n    {{{   504,   2150,   1426}, 0, {     0,    990}, {0x94, 0x00, 0xbe, 0xff}}},\n    {{{   504,   2253,   1426}, 0, {     0,    -30}, {0xc1, 0xa8, 0xc0, 0xff}}},\n};\n\n// 0x07004670 - 0x070046F0\nstatic const Vtx sl_seg7_vertex_07004670[] = {\n    {{{     0,   4352,   1024}, 0, {     0,      0}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{   768,   3584,    768}, 0, {   990,    990}, {0x46, 0xc1, 0x54, 0xff}}},\n    {{{   768,   4352,    768}, 0, {   988,      0}, {0x67, 0x00, 0x49, 0xff}}},\n    {{{     0,   3584,   1024}, 0, {     0,    990}, {0x34, 0xe2, 0x6f, 0xff}}},\n    {{{   768,   4352,    768}, 0, {     0,    -34}, {0x67, 0x00, 0x49, 0xff}}},\n    {{{  1024,   3585,      0}, 0, {   990,    990}, {0x7a, 0xe0, 0x00, 0xff}}},\n    {{{  1024,   4351,      0}, 0, {   990,      0}, {0x75, 0x30, 0x06, 0xff}}},\n    {{{   768,   3584,    768}, 0, {     0,    990}, {0x46, 0xc1, 0x54, 0xff}}},\n};\n\n// 0x070046F0 - 0x07004750\nstatic const Vtx sl_seg7_vertex_070046F0[] = {\n    {{{   768,   3328,      0}, 0, {  1564,   1250}, {0x7e, 0xf4, 0xfb, 0xff}}},\n    {{{   768,   3584,    768}, 0, {   480,     54}, {0x46, 0xc1, 0x54, 0xff}}},\n    {{{   512,   3328,    512}, 0, {   480,    924}, {0x5a, 0x2b, 0x4d, 0xff}}},\n    {{{  1024,   3585,      0}, 0, {  1924,    706}, {0x7a, 0xe0, 0x00, 0xff}}},\n    {{{     0,   3328,    768}, 0, {  -602,   1250}, {0x5f, 0xfb, 0x53, 0xff}}},\n    {{{     0,   3584,   1024}, 0, {  -964,    706}, {0x34, 0xe2, 0x6f, 0xff}}},\n};\n\n// 0x07004750 - 0x07004830\nstatic const Vtx sl_seg7_vertex_07004750[] = {\n    {{{   371,   2253,   1310}, 0, {     0,      0}, {0xb4, 0xb5, 0x43, 0xff}}},\n    {{{   471,   2253,   1286}, 0, {     0,   2012}, {0xec, 0xd4, 0x75, 0xff}}},\n    {{{   487,   2278,   1356}, 0, {   480,   2012}, {0xa9, 0xa9, 0x1e, 0xff}}},\n    {{{   388,   2278,   1380}, 0, {   480,      0}, {0x85, 0xe8, 0x10, 0xff}}},\n    {{{   504,   2253,   1426}, 0, {   990,   2012}, {0xc1, 0xa8, 0xc0, 0xff}}},\n    {{{   405,   2253,   1450}, 0, {   990,      0}, {0x83, 0xf0, 0xf2, 0xff}}},\n    {{{   371,   2150,   1310}, 0, {     0,      0}, {0x9d, 0x00, 0x4e, 0xff}}},\n    {{{   471,   2253,   1286}, 0, {   990,   2012}, {0xec, 0xd4, 0x75, 0xff}}},\n    {{{   371,   2253,   1310}, 0, {   990,      0}, {0xb4, 0xb5, 0x43, 0xff}}},\n    {{{   471,   2150,   1286}, 0, {     0,   2012}, {0x9f, 0x00, 0x51, 0xff}}},\n    {{{   405,   2253,   1450}, 0, {     0,      0}, {0x83, 0xf0, 0xf2, 0xff}}},\n    {{{   504,   2253,   1426}, 0, {     0,   2012}, {0xc1, 0xa8, 0xc0, 0xff}}},\n    {{{   504,   2150,   1426}, 0, {   990,   2012}, {0x94, 0x00, 0xbe, 0xff}}},\n    {{{   405,   2150,   1450}, 0, {   990,      0}, {0x84, 0x00, 0xe7, 0xff}}},\n};\n\n// 0x07004830 - 0x07005370\nstatic const Gfx sl_seg7_dl_07004830[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&sl_seg7_lights_07002800.l, 1),\n    gsSPLight(&sl_seg7_lights_07002800.a, 2),\n    gsSPVertex(sl_seg7_vertex_07002830, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  3,  8, 0x0),\n    gsSP2Triangles( 3,  5,  8, 0x0,  1,  9, 10, 0x0),\n    gsSP2Triangles(11, 12,  9, 0x0,  9,  1, 11, 0x0),\n    gsSP1Triangle( 2,  1, 13, 0x0),\n    gsSPVertex(sl_seg7_vertex_07002910, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  7,  6, 0x0),\n    gsSP2Triangles( 5,  8,  3, 0x0,  9,  3, 10, 0x0),\n    gsSP2Triangles( 0,  2, 11, 0x0,  0, 12, 13, 0x0),\n    gsSP2Triangles( 0, 14, 12, 0x0,  1,  0, 13, 0x0),\n    gsSP1Triangle(15,  1, 13, 0x0),\n    gsSPVertex(sl_seg7_vertex_07002A10, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 5,  8,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(10, 12, 13, 0x0, 10, 13, 14, 0x0),\n    gsSP2Triangles(10, 14, 15, 0x0,  9,  8, 10, 0x0),\n    gsSP2Triangles( 8, 12, 10, 0x0, 15, 11, 10, 0x0),\n    gsSPVertex(sl_seg7_vertex_07002B10, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 5,  1,  0, 0x0,  5,  6,  1, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  1, 10, 12, 0x0),\n    gsSP1Triangle(13, 14,  8, 0x0),\n    gsSPVertex(sl_seg7_vertex_07002C00, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  4,  5,  0, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 2,  1, 12, 0x0,  1,  3, 12, 0x0),\n    gsSP2Triangles( 7,  6, 13, 0x0,  7, 13, 14, 0x0),\n    gsSP1Triangle(15, 13,  6, 0x0),\n    gsSPVertex(sl_seg7_vertex_07002D00, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 4,  5,  0, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  8,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 10, 13, 0x0),\n    gsSP2Triangles(10, 14, 13, 0x0,  9,  7, 12, 0x0),\n    gsSPVertex(sl_seg7_vertex_07002DF0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  3,  6,  7, 0x0),\n    gsSP2Triangles( 8,  0,  9, 0x0,  0, 10,  9, 0x0),\n    gsSP2Triangles(10, 11,  9, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(sl_seg7_vertex_07002EE0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  0,  2, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  7,  6, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 8,  6, 12, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(13, 15, 14, 0x0),\n    gsSPVertex(sl_seg7_vertex_07002FE0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13,  8, 0x0,  8, 10, 12, 0x0),\n    gsSP2Triangles(10,  9, 14, 0x0, 15, 12, 10, 0x0),\n    gsSPVertex(sl_seg7_vertex_070030E0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 12, 0x0),\n    gsSP1Triangle( 9, 13, 10, 0x0),\n    gsSPVertex(sl_seg7_vertex_070031C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  6,  5, 0x0),\n    gsSP2Triangles( 8,  3,  2, 0x0,  8,  2,  9, 0x0),\n    gsSP2Triangles( 8, 10,  3, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 15, 0x0),\n    gsSPVertex(sl_seg7_vertex_070032C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0,  9,  8, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(sl_seg7_vertex_070033C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 2,  4,  0, 0x0,  4,  5,  3, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6, 10, 0x0),\n    gsSP2Triangles( 6,  9,  7, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(sl_seg7_vertex_070034B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 7,  6, 10, 0x0,  6, 11, 10, 0x0),\n    gsSP2Triangles( 9,  8, 12, 0x0,  8, 13, 12, 0x0),\n    gsSP1Triangle(14, 12, 13, 0x0),\n    gsSPVertex(sl_seg7_vertex_070035A0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 1,  3,  5, 0x0,  2,  1,  5, 0x0),\n    gsSP2Triangles( 4,  2,  5, 0x0,  6,  2,  4, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0, 10,  7, 11, 0x0),\n    gsSP2Triangles(10,  8,  7, 0x0,  9,  8, 12, 0x0),\n    gsSP2Triangles(13,  8, 10, 0x0, 13, 12,  8, 0x0),\n    gsSPVertex(sl_seg7_vertex_07003680, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  5,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(11,  9,  8, 0x0, 11,  8, 12, 0x0),\n    gsSP2Triangles(13,  9, 11, 0x0, 10,  9, 14, 0x0),\n    gsSP2Triangles(13, 14,  9, 0x0, 15,  2,  1, 0x0),\n    gsSPVertex(sl_seg7_vertex_07003780, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 3,  5,  4, 0x0,  6,  4,  5, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(10, 13, 11, 0x0),\n    gsSPVertex(sl_seg7_vertex_07003860, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  8,  6, 0x0),\n    gsSP2Triangles( 3,  5,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9,  2, 10, 0x0,  2, 12, 10, 0x0),\n    gsSP2Triangles( 2,  1, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(sl_seg7_vertex_07003960, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  8,  6, 0x0),\n    gsSP2Triangles( 9,  8,  5, 0x0,  5, 10,  9, 0x0),\n    gsSP2Triangles( 8,  9, 11, 0x0,  8, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(sl_seg7_vertex_07003A60, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  9, 10,  7, 0x0),\n    gsSP2Triangles( 5, 11, 12, 0x0,  5, 10, 11, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(sl_seg7_vertex_07003B60, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  3, 0x0,  4,  3,  6, 0x0),\n    gsSP2Triangles( 5,  7,  3, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 4,  8, 10, 0x0, 11,  8, 12, 0x0),\n    gsSP2Triangles(13, 10,  9, 0x0,  4, 10,  5, 0x0),\n    gsSPVertex(sl_seg7_vertex_07003C40, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0, 10,  8, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(sl_seg7_vertex_07003D30, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  1,  5, 0x0,  1,  6,  5, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  3,  7,  6, 0x0),\n    gsSP2Triangles( 5,  8,  9, 0x0,  4,  5,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(sl_seg7_vertex_07003E10, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 2,  4,  0, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  9,  5, 10, 0x0),\n    gsSP2Triangles( 5,  7, 10, 0x0, 11, 10,  7, 0x0),\n    gsSP2Triangles( 7, 12, 13, 0x0,  7,  6, 12, 0x0),\n    gsSP1Triangle(11,  7, 13, 0x0),\n    gsSPVertex(sl_seg7_vertex_07003EF0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  8, 11, 0x0,  7, 11,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13,  0, 14, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(sl_seg7_vertex_07003FE0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  8,  0,  9, 0x0),\n    gsSP2Triangles( 0,  2, 10, 0x0,  0, 10, 11, 0x0),\n    gsSP2Triangles(12,  1,  0, 0x0,  5, 13, 14, 0x0),\n    gsSP1Triangle( 6, 15,  7, 0x0),\n    gsSPVertex(sl_seg7_vertex_070040E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 8, 11,  9, 0x0, 12,  8, 13, 0x0),\n    gsSP1Triangle( 8, 14, 13, 0x0),\n    gsSPVertex(sl_seg7_vertex_070041D0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 4,  6,  8, 0x0,  8,  6,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(sl_seg7_vertex_070042B0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  4, 0x0),\n    gsSP2Triangles( 1,  0,  4, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 5,  0,  2, 0x0,  0,  5,  4, 0x0),\n    gsSP2Triangles( 6,  3,  4, 0x0,  5,  6,  4, 0x0),\n    gsSP2Triangles( 3,  6,  2, 0x0,  6,  5,  2, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0, 10,  8, 11, 0x0),\n    gsSP2Triangles( 8,  7, 11, 0x0,  8, 10,  9, 0x0),\n    gsSP2Triangles( 7, 12, 11, 0x0, 12,  7,  9, 0x0),\n    gsSP2Triangles(12, 13, 11, 0x0, 13, 10, 11, 0x0),\n    gsSP2Triangles(10, 13,  9, 0x0, 13, 12,  9, 0x0),\n    gsSPVertex(sl_seg7_vertex_07004390, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 4,  7,  6, 0x0,  6,  8,  5, 0x0),\n    gsSP2Triangles( 8,  3,  5, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10,  3, 0x0),\n    gsSP2Triangles( 9, 11, 10, 0x0,  9,  7, 11, 0x0),\n    gsSP2Triangles( 3, 10, 11, 0x0,  3, 11,  4, 0x0),\n    gsSP2Triangles( 4, 11,  7, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(15,  0,  2, 0x0),\n    gsSPVertex(sl_seg7_vertex_07004490, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 3,  0,  2, 0x0,  3,  5,  4, 0x0),\n    gsSP2Triangles( 5,  6,  4, 0x0,  1,  6,  2, 0x0),\n    gsSP2Triangles( 6,  5,  2, 0x0,  5,  3,  2, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  8, 10,  9, 0x0),\n    gsSP2Triangles( 8,  7, 11, 0x0, 10,  8, 11, 0x0),\n    gsSP2Triangles(12,  7,  9, 0x0,  7, 12, 11, 0x0),\n    gsSP2Triangles(12, 10, 11, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(sl_seg7_vertex_07004590, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  5,  4,  7, 0x0),\n    gsSP1Triangle( 4,  8,  7, 0x0),\n    gsSPLight(&sl_seg7_lights_07002818.l, 1),\n    gsSPLight(&sl_seg7_lights_07002818.a, 2),\n    gsSPVertex(sl_seg7_vertex_07004620, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP1Triangle( 3,  4,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07005370 - 0x070053C8\nstatic const Gfx sl_seg7_dl_07005370[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sl_seg7_texture_07000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&sl_seg7_lights_07002800.l, 1),\n    gsSPLight(&sl_seg7_lights_07002800.a, 2),\n    gsSPVertex(sl_seg7_vertex_07004670, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070053C8 - 0x07005410\nstatic const Gfx sl_seg7_dl_070053C8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sl_seg7_texture_07001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(sl_seg7_vertex_070046F0, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  1,  5,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07005410 - 0x07005478\nstatic const Gfx sl_seg7_dl_07005410[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(sl_seg7_vertex_07004750, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07005478 - 0x07005520\nconst Gfx sl_seg7_dl_07005478[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(sl_seg7_dl_07004830),\n    gsSPDisplayList(sl_seg7_dl_07005370),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(sl_seg7_dl_070053C8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(sl_seg7_dl_07005410),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/sl/areas/1/2/model.inc.c",
    "content": "// 0x07005520 - 0x07005538\nstatic const Lights1 sl_seg7_lights_07005520 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07005538 - 0x07005638\nstatic const Vtx sl_seg7_vertex_07005538[] = {\n    {{{   768,   1352,  -5375}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -200,   1352,  -3761}, 0, {  1866,   -908}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1091,   1352,  -4084}, 0, {  1866,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,    922,  -3071}, 0, { -3096,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,    922,  -3071}, 0, { -3096,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -818,    922,  -1023}, 0, { -1052,   1806}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,    922,  -1023}, 0, { -1052,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   365,   3328,   2052}, 0, {  2016,    626}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2027,   3328,    608}, 0, {   576,  -1034}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1725,   3328,    260}, 0, {   228,   -732}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    63,   3328,   1704}, 0, {  1668,    928}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,    973,  -4351}, 0, { -4374,  -2332}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2304,    973,  -5375}, 0, { -5396,  -1310}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2304,    973,  -4351}, 0, { -4374,  -1310}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3328,    973,  -5375}, 0, { -5396,  -2332}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -522,   1352,  -5052}, 0, {     0,   -908}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07005638 - 0x070056B0\nstatic const Gfx sl_seg7_dl_07005638[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&sl_seg7_lights_07005520.l, 1),\n    gsSPLight(&sl_seg7_lights_07005520.a, 2),\n    gsSPVertex(sl_seg7_vertex_07005538, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070056B0 - 0x07005730\nconst Gfx sl_seg7_dl_070056B0[] = {\n    gsDPPipeSync(),\n    gsDPSetEnvColor(255, 255, 255, 180),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(sl_seg7_dl_07005638),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/sl/areas/1/3/model.inc.c",
    "content": "// 0x07005730 - 0x07005748\nstatic const Lights1 sl_seg7_lights_07005730 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07005748 - 0x07005760\nstatic const Lights1 sl_seg7_lights_07005748 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x07005760 - 0x070057D0\nstatic const Vtx sl_seg7_vertex_07005760[] = {\n    {{{  -587,   3564,   1792}, 0, { -2340,   -462}, {0xe8, 0xa8, 0x57, 0xff}}},\n    {{{  -602,   3584,   1808}, 0, { -2360,   -484}, {0xe8, 0xa8, 0x57, 0xff}}},\n    {{{  -608,   3564,   1786}, 0, { -2346,   -462}, {0xe8, 0xa8, 0x57, 0xff}}},\n    {{{  3967,   1229,   5078}, 0, {  1194,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4582,   1229,   4054}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3967,   1229,   4054}, 0, {  1194,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4582,   1229,   5078}, 0, {     0,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070057D0 - 0x07005810\nstatic const Vtx sl_seg7_vertex_070057D0[] = {\n    {{{  4378,    307,   1062}, 0, {  5730,  -2056}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4582,    307,   1267}, 0, {  5832,  -1954}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4582,    307,   1062}, 0, {  5832,  -2056}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4378,    307,   1267}, 0, {  5730,  -1954}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07005810 - 0x07005900\nstatic const Vtx sl_seg7_vertex_07005810[] = {\n    {{{  4582,   1229,   4054}, 0, { -3096,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4582,   1024,   4054}, 0, { -3096,   2010}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3967,   1024,   4054}, 0, {     0,   2010}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3967,   1229,   5078}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3967,   1024,   5078}, 0, {     0,   2010}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4582,   1024,   5078}, 0, { -3096,   2010}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4582,   1229,   5078}, 0, { -3096,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3967,   1229,   4054}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3967,   1024,   5078}, 0, {  5078,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3967,   1229,   5078}, 0, {  5078,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3967,   1024,   4054}, 0, {     0,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4582,   1229,   5078}, 0, {  5078,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4582,   1024,   5078}, 0, {  5078,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4582,   1024,   4054}, 0, {     0,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4582,   1229,   4054}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07005900 - 0x07005A00\nstatic const Vtx sl_seg7_vertex_07005900[] = {\n    {{{  1280,   1400,    256}, 0, {  3800,   4522}, {0x46, 0x00, 0x97, 0xff}}},\n    {{{  1919,   1903,    682}, 0, {     0,   2010}, {0x46, 0x00, 0x97, 0xff}}},\n    {{{  2175,   1024,    852}, 0, { -1564,   6396}, {0x46, 0x00, 0x97, 0xff}}},\n    {{{  4582,   1229,   4054}, 0, { -3096,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3967,   1024,   4054}, 0, {     0,   2010}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3967,   1229,   4054}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3634,   1382,   4096}, 0, {     0,  -2076}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3634,    768,   4096}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6143,   1382,   4096}, 0, { 12488,  -2076}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6143,    768,   4096}, 0, { 12488,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1308,   2108,   1473}, 0, { -1466,  -9580}, {0x64, 0x00, 0x4d, 0xff}}},\n    {{{  1308,   1741,   1473}, 0, { -1466,  -7748}, {0x64, 0x00, 0x4d, 0xff}}},\n    {{{  1919,   1903,    682}, 0, {  3516,  -8558}, {0x64, 0x00, 0x4d, 0xff}}},\n    {{{  1919,   2108,    682}, 0, {  3516,  -9580}, {0x64, 0x00, 0x4d, 0xff}}},\n    {{{  1919,   2108,    682}, 0, {     0,    990}, {0x46, 0x00, 0x97, 0xff}}},\n    {{{  1280,   2108,    256}, 0, {  3800,    990}, {0x46, 0x00, 0x97, 0xff}}},\n};\n\n// 0x07005A00 - 0x07005A30\nstatic const Vtx sl_seg7_vertex_07005A00[] = {\n    {{{  1919,   1903,    682}, 0, {     0,   2010}, {0x46, 0x00, 0x97, 0xff}}},\n    {{{  2175,   1903,    852}, 0, { -1564,   2010}, {0x46, 0x00, 0x97, 0xff}}},\n    {{{  2175,   1024,    852}, 0, { -1564,   6396}, {0x46, 0x00, 0x97, 0xff}}},\n};\n\n// 0x07005A30 - 0x07005B30\nstatic const Vtx sl_seg7_vertex_07005A30[] = {\n    {{{  -243,   3308,   2011}, 0, {  4484, -10014}, {0xc5, 0x00, 0x70, 0xff}}},\n    {{{  -243,   3226,   2011}, 0, {  4484,  -9742}, {0xc5, 0x00, 0x70, 0xff}}},\n    {{{    66,   3226,   2176}, 0, {  5574,  -9742}, {0xc5, 0x00, 0x70, 0xff}}},\n    {{{  -587,   3564,   1793}, 0, {  5932,   -968}, {0xa2, 0xae, 0x13, 0xff}}},\n    {{{  -440,   3360,   1636}, 0, {  5410,   -476}, {0xa2, 0xae, 0x13, 0xff}}},\n    {{{  -243,   3226,   2011}, 0, {  6658,    176}, {0xa2, 0xae, 0x13, 0xff}}},\n    {{{  -440,   3360,   1636}, 0, {  5410,   -476}, {0xe4, 0x88, 0xe4, 0xff}}},\n    {{{    63,   3226,   1704}, 0, {  5636,   1196}, {0xe4, 0x88, 0xe4, 0xff}}},\n    {{{  -243,   3226,   2011}, 0, {  6658,    176}, {0xe4, 0x88, 0xe4, 0xff}}},\n    {{{  -440,   3360,   1636}, 0, {  5410,   -476}, {0xf7, 0xae, 0xa0, 0xff}}},\n    {{{  -327,   3564,   1450}, 0, {  4792,   -100}, {0xf7, 0xae, 0xa0, 0xff}}},\n    {{{    63,   3226,   1704}, 0, {  5636,   1196}, {0xf7, 0xae, 0xa0, 0xff}}},\n    {{{    63,   3226,   1704}, 0, {  5636,   1196}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    66,   3226,   2176}, 0, {  7206,   1206}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -243,   3226,   2011}, 0, {  6658,    176}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   365,   3226,   2052}, 0, {  6794,   2202}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07005B30 - 0x07005C30\nstatic const Vtx sl_seg7_vertex_07005B30[] = {\n    {{{  -327,   3564,   1450}, 0, {  2894, -10866}, {0x45, 0x00, 0x96, 0xff}}},\n    {{{    63,   3308,   1704}, 0, {  4382, -10014}, {0x45, 0x00, 0x96, 0xff}}},\n    {{{    63,   3226,   1704}, 0, {  4382,  -9742}, {0x45, 0x00, 0x96, 0xff}}},\n    {{{   365,   3308,   2052}, 0, {  5916, -10014}, {0x5f, 0x00, 0xad, 0xff}}},\n    {{{    63,   3226,   1704}, 0, {  4382,  -9742}, {0x5f, 0x00, 0xad, 0xff}}},\n    {{{    63,   3308,   1704}, 0, {  4382, -10014}, {0x5f, 0x00, 0xad, 0xff}}},\n    {{{   365,   3226,   2052}, 0, {  5916,  -9742}, {0x5f, 0x00, 0xad, 0xff}}},\n    {{{  -243,   3308,   2011}, 0, {  4484, -10014}, {0xc5, 0x00, 0x70, 0xff}}},\n    {{{    66,   3226,   2176}, 0, {  5574,  -9742}, {0xc5, 0x00, 0x70, 0xff}}},\n    {{{    66,   3308,   2176}, 0, {  5574, -10014}, {0xc5, 0x00, 0x70, 0xff}}},\n    {{{  -243,   3226,   2011}, 0, {  4484,  -9742}, {0xbd, 0x00, 0x6b, 0xff}}},\n    {{{  -243,   3308,   2011}, 0, {  4484, -10014}, {0xbd, 0x00, 0x6b, 0xff}}},\n    {{{  -587,   3564,   1793}, 0, {  3184, -10868}, {0xbd, 0x00, 0x6b, 0xff}}},\n    {{{    66,   3308,   2176}, 0, {     0,    718}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{   365,   3226,   2052}, 0, {   964,    990}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{   365,   3308,   2052}, 0, {   964,    718}, {0x30, 0x00, 0x75, 0xff}}},\n};\n\n// 0x07005C30 - 0x07005D30\nstatic const Vtx sl_seg7_vertex_07005C30[] = {\n    {{{    66,   3308,   2176}, 0, {     0,    718}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{    66,   3226,   2176}, 0, {     0,    990}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{   365,   3226,   2052}, 0, {   964,    990}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{  -703,   3584,   1173}, 0, {     0,   1754}, {0x83, 0x00, 0x13, 0xff}}},\n    {{{  -703,   3738,   1173}, 0, {     0,    990}, {0x83, 0x00, 0x13, 0xff}}},\n    {{{  -767,   3738,    768}, 0, { -2074,    990}, {0x83, 0x00, 0x13, 0xff}}},\n    {{{  -767,   3584,    768}, 0, { -2074,   1754}, {0x83, 0x00, 0x13, 0xff}}},\n    {{{     0,   3584,   1024}, 0, { -5140, -16896}, {0x64, 0x00, 0x4d, 0xff}}},\n    {{{     0,   3840,   1024}, 0, { -5140, -18172}, {0x64, 0x00, 0x4d, 0xff}}},\n    {{{  -156,   3840,   1228}, 0, { -6158, -18172}, {0x64, 0x00, 0x4d, 0xff}}},\n    {{{  -346,   3840,   1124}, 0, {  1242,   -288}, {0xc4, 0x00, 0x6f, 0xff}}},\n    {{{  -156,   3584,   1228}, 0, {  2318,    990}, {0xc4, 0x00, 0x6f, 0xff}}},\n    {{{  -156,   3840,   1228}, 0, {  2318,   -288}, {0xc4, 0x00, 0x6f, 0xff}}},\n    {{{  -156,   3584,   1228}, 0, {  2318,    990}, {0xd3, 0x0e, 0x75, 0xff}}},\n    {{{  -346,   3840,   1124}, 0, {  1242,   -288}, {0xd3, 0x0e, 0x75, 0xff}}},\n    {{{  -589,   3738,   1043}, 0, {     0,    224}, {0xd3, 0x0e, 0x75, 0xff}}},\n};\n\n// 0x07005D30 - 0x07005E10\nstatic const Vtx sl_seg7_vertex_07005D30[] = {\n    {{{  -156,   3584,   1228}, 0, {  2318,    990}, {0xcf, 0x00, 0x74, 0xff}}},\n    {{{  -589,   3738,   1043}, 0, {     0,    224}, {0xcf, 0x00, 0x74, 0xff}}},\n    {{{  -589,   3584,   1043}, 0, {     0,    990}, {0xcf, 0x00, 0x74, 0xff}}},\n    {{{  -703,   3738,   1173}, 0, {  -890,    224}, {0x5f, 0x00, 0x53, 0xff}}},\n    {{{  -703,   3584,   1173}, 0, {  -890,    990}, {0x5f, 0x00, 0x53, 0xff}}},\n    {{{  -589,   3584,   1043}, 0, {     0,    990}, {0x5f, 0x00, 0x53, 0xff}}},\n    {{{  -589,   3738,   1043}, 0, {     0,    224}, {0x5f, 0x00, 0x53, 0xff}}},\n    {{{  -156,   3584,   1228}, 0, { -6158, -16896}, {0x64, 0x00, 0x4d, 0xff}}},\n    {{{     0,   3584,   1024}, 0, { -5140, -16896}, {0x64, 0x00, 0x4d, 0xff}}},\n    {{{  -156,   3840,   1228}, 0, { -6158, -18172}, {0x64, 0x00, 0x4d, 0xff}}},\n    {{{  2027,   3226,    608}, 0, { -1058,    478}, {0x7e, 0x00, 0x03, 0xff}}},\n    {{{  2037,   3072,    278}, 0, {     0,    990}, {0x7e, 0x00, 0x03, 0xff}}},\n    {{{  2037,   3154,    278}, 0, {     0,    718}, {0x7e, 0x00, 0x03, 0xff}}},\n    {{{  2027,   3308,    608}, 0, { -1058,    206}, {0x7e, 0x00, 0x03, 0xff}}},\n};\n\n// 0x07005E10 - 0x07005EF0\nstatic const Vtx sl_seg7_vertex_07005E10[] = {\n    {{{  1895,   3072,   -132}, 0, {  1414,    990}, {0x78, 0x00, 0xd7, 0xff}}},\n    {{{  2037,   3154,    278}, 0, {     0,    718}, {0x78, 0x00, 0xd7, 0xff}}},\n    {{{  2037,   3072,    278}, 0, {     0,    990}, {0x78, 0x00, 0xd7, 0xff}}},\n    {{{  1895,   3154,   -132}, 0, {  1414,    650}, {0x49, 0x00, 0x99, 0xff}}},\n    {{{  1895,   3072,   -132}, 0, {  1414,    990}, {0x49, 0x00, 0x99, 0xff}}},\n    {{{  1453,   2970,   -444}, 0, {  2876,   1328}, {0x49, 0x00, 0x99, 0xff}}},\n    {{{  1895,   3154,   -132}, 0, {  1414,    718}, {0x78, 0x00, 0xd7, 0xff}}},\n    {{{  2027,   3226,    608}, 0, {     0,    650}, {0xa1, 0x00, 0x53, 0xff}}},\n    {{{  2027,   3308,    608}, 0, {     0,    922}, {0xa1, 0x00, 0x53, 0xff}}},\n    {{{  1725,   3308,    260}, 0, {  1500,    922}, {0xa1, 0x00, 0x53, 0xff}}},\n    {{{  1725,   3226,    260}, 0, {  1500,    650}, {0xa1, 0x00, 0x53, 0xff}}},\n    {{{  1408,   2185,    341}, 0, { -2016,    564}, {0x41, 0x94, 0x00, 0xff}}},\n    {{{  1280,   2108,    256}, 0, { -1734,    990}, {0x41, 0x94, 0x00, 0xff}}},\n    {{{  1280,   2108,   -255}, 0, {     0,    990}, {0x41, 0x94, 0x00, 0xff}}},\n};\n\n// 0x07005EF0 - 0x07005FF0\nstatic const Vtx sl_seg7_vertex_07005EF0[] = {\n    {{{  1408,   2185,    341}, 0, { -2016,    564}, {0x70, 0xc8, 0xf0, 0xff}}},\n    {{{  1280,   2108,   -255}, 0, {     0,    990}, {0x70, 0xc8, 0xf0, 0xff}}},\n    {{{  1408,   2338,   -170}, 0, {  -314,    564}, {0x70, 0xc8, 0xf0, 0xff}}},\n    {{{  1280,   2108,   -255}, 0, {     0,    990}, {0x5d, 0xba, 0x31, 0xff}}},\n    {{{  1635,   2304,   -646}, 0, {  1268,   -192}, {0x5d, 0xba, 0x31, 0xff}}},\n    {{{  1763,   2534,   -560}, 0, {   984,   -616}, {0x5d, 0xba, 0x31, 0xff}}},\n    {{{  1408,   2338,   -170}, 0, {  -314,    564}, {0x5d, 0xba, 0x31, 0xff}}},\n    {{{  1635,   2304,   -646}, 0, {  1268,   -192}, {0x57, 0xba, 0x3a, 0xff}}},\n    {{{  1848,   2534,   -688}, 0, {  1408,   -900}, {0x57, 0xba, 0x3a, 0xff}}},\n    {{{  1763,   2534,   -560}, 0, {   984,   -616}, {0x57, 0xba, 0x3a, 0xff}}},\n    {{{  1635,   2304,   -646}, 0, {  1268,   -192}, {0x53, 0xab, 0xd4, 0xff}}},\n    {{{  1740,   2466,   -760}, 0, {  1650,   -538}, {0x53, 0xab, 0xd4, 0xff}}},\n    {{{  1848,   2534,   -688}, 0, {  1408,   -900}, {0x53, 0xab, 0xd4, 0xff}}},\n    {{{  1280,   3072,   -255}, 0, {  1686,    650}, {0xb7, 0x00, 0x67, 0xff}}},\n    {{{  1753,   3072,     78}, 0, {     0,    650}, {0xb7, 0x00, 0x67, 0xff}}},\n    {{{  1753,   3174,     78}, 0, {     0,    990}, {0xb7, 0x00, 0x67, 0xff}}},\n};\n\n// 0x07005FF0 - 0x070060E0\nstatic const Vtx sl_seg7_vertex_07005FF0[] = {\n    {{{  1753,   3174,     78}, 0, {     0,    990}, {0x83, 0x00, 0xed, 0xff}}},\n    {{{  1753,   3072,     78}, 0, {     0,    650}, {0x83, 0x00, 0xed, 0xff}}},\n    {{{  1725,   3226,    260}, 0, {  -522,   1158}, {0x83, 0x00, 0xed, 0xff}}},\n    {{{  2037,   3072,    278}, 0, {  -696,     46}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1753,   3072,     78}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1895,   3072,   -132}, 0, {   670,    518}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1453,   2970,   -444}, 0, {  1706,   1988}, {0x13, 0x84, 0x0d, 0xff}}},\n    {{{  1895,   3072,   -132}, 0, {   670,    518}, {0x13, 0x84, 0x0d, 0xff}}},\n    {{{  1753,   3072,     78}, 0, {     0,    990}, {0x13, 0x84, 0x0d, 0xff}}},\n    {{{  1280,   3072,   -255}, 0, {  1078,   2562}, {0xe5, 0x8b, 0x26, 0xff}}},\n    {{{  1453,   2970,   -444}, 0, {  1706,   1988}, {0xe5, 0x8b, 0x26, 0xff}}},\n    {{{  1753,   3072,     78}, 0, {     0,    990}, {0xe5, 0x8b, 0x26, 0xff}}},\n    {{{  1753,   3072,     78}, 0, {     0,    990}, {0xba, 0xab, 0x3d, 0xff}}},\n    {{{  2027,   3226,    608}, 0, { -1796,     78}, {0xba, 0xab, 0x3d, 0xff}}},\n    {{{  1725,   3226,    260}, 0, {  -638,   1082}, {0xba, 0xab, 0x3d, 0xff}}},\n};\n\n// 0x070060E0 - 0x070061E0\nstatic const Vtx sl_seg7_vertex_070060E0[] = {\n    {{{  1753,   3072,     78}, 0, {     0,    990}, {0xdd, 0x92, 0x32, 0xff}}},\n    {{{  2037,   3072,    278}, 0, {  -696,     46}, {0xdd, 0x92, 0x32, 0xff}}},\n    {{{  2027,   3226,    608}, 0, { -1796,     78}, {0xdd, 0x92, 0x32, 0xff}}},\n    {{{  1453,   2970,   -444}, 0, {  2876,   1328}, {0x49, 0x00, 0x99, 0xff}}},\n    {{{  1453,   3052,   -444}, 0, {  2876,   1056}, {0x49, 0x00, 0x99, 0xff}}},\n    {{{  1895,   3154,   -132}, 0, {  1414,    650}, {0x49, 0x00, 0x99, 0xff}}},\n    {{{  1848,   2534,   -688}, 0, {  -464,    762}, {0x46, 0x00, 0x97, 0xff}}},\n    {{{  1740,   2466,   -760}, 0, {     0,    990}, {0x46, 0x00, 0x97, 0xff}}},\n    {{{  1740,   2534,   -760}, 0, {     0,    762}, {0x46, 0x00, 0x97, 0xff}}},\n    {{{  1753,   3174,     78}, 0, {     0,    990}, {0x83, 0x00, 0xed, 0xff}}},\n    {{{  1725,   3226,    260}, 0, {  -522,   1158}, {0x83, 0x00, 0xed, 0xff}}},\n    {{{  1725,   3328,    260}, 0, {  -522,   1498}, {0x83, 0x00, 0xed, 0xff}}},\n    {{{  1195,   2108,    384}, 0, {  -636,   2178}, {0xba, 0x00, 0x69, 0xff}}},\n    {{{  1323,   2108,    469}, 0, { -1146,   2178}, {0xba, 0x00, 0x69, 0xff}}},\n    {{{  1323,   2185,    469}, 0, { -1146,   1922}, {0xba, 0x00, 0x69, 0xff}}},\n    {{{  1195,   2185,    384}, 0, {  -636,   1922}, {0xba, 0x00, 0x69, 0xff}}},\n};\n\n// 0x070061E0 - 0x07006250\nstatic const Vtx sl_seg7_vertex_070061E0[] = {\n    {{{  1323,   2185,    469}, 0, {     0,    734}, {0x69, 0x00, 0x46, 0xff}}},\n    {{{  1408,   2108,    341}, 0, {   480,    990}, {0x69, 0x00, 0x46, 0xff}}},\n    {{{  1408,   2185,    341}, 0, {   480,    734}, {0x69, 0x00, 0x46, 0xff}}},\n    {{{  1323,   2108,    469}, 0, {     0,    990}, {0x69, 0x00, 0x46, 0xff}}},\n    {{{  1408,   2185,    341}, 0, { -1146,   1922}, {0x46, 0x00, 0x97, 0xff}}},\n    {{{  1408,   2108,    341}, 0, { -1146,   2178}, {0x46, 0x00, 0x97, 0xff}}},\n    {{{  1280,   2108,    256}, 0, {  -636,   2178}, {0x46, 0x00, 0x97, 0xff}}},\n};\n\n// 0x07006250 - 0x07006350\nstatic const Vtx sl_seg7_vertex_07006250[] = {\n    {{{  1919,   2108,    682}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,   2108,    256}, 0, {     0,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   995,   2108,    683}, 0, { -1054,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -378,   3840,    898}, 0, {  -828,    990}, {0xa3, 0x55, 0x0d, 0xff}}},\n    {{{  -476,   3738,    865}, 0, { -1032,    990}, {0xa3, 0x55, 0x0d, 0xff}}},\n    {{{  -346,   3840,   1124}, 0, {  -624,   1396}, {0xa3, 0x55, 0x0d, 0xff}}},\n    {{{  -378,   3840,    898}, 0, {  -828,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -346,   3840,   1124}, 0, {  -624,   1396}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -156,   3840,   1228}, 0, {  -198,   1474}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,   3738,    768}, 0, { -1646,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -589,   3738,   1043}, 0, { -1134,   1396}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -476,   3738,    865}, 0, { -1032,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -703,   3738,   1173}, 0, { -1268,   1714}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -346,   3840,   1124}, 0, {  -624,   1396}, {0xd8, 0x75, 0xe7, 0xff}}},\n    {{{  -476,   3738,    865}, 0, { -1032,    990}, {0xd8, 0x75, 0xe7, 0xff}}},\n    {{{  -589,   3738,   1043}, 0, { -1134,   1396}, {0xd8, 0x75, 0xe7, 0xff}}},\n};\n\n// 0x07006350 - 0x070063B0\nstatic const Vtx sl_seg7_vertex_07006350[] = {\n    {{{  -378,   3840,    898}, 0, {  -828,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -156,   3840,   1228}, 0, {  -198,   1474}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,   3840,   1024}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1919,   2108,    682}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   995,   2108,    683}, 0, { -1054,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1308,   2108,   1473}, 0, { -2020,    850}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070063B0 - 0x070064B0\nstatic const Vtx sl_seg7_vertex_070063B0[] = {\n    {{{   365,   3328,   2052}, 0, {-10268,   2808}, {0x5f, 0x00, 0xad, 0xff}}},\n    {{{   365,   3308,   2052}, 0, {-10268,   2808}, {0x5f, 0x00, 0xad, 0xff}}},\n    {{{    63,   3308,   1704}, 0, { -8532,   1300}, {0x5f, 0x00, 0xad, 0xff}}},\n    {{{    63,   3328,   1704}, 0, {  3078,   4076}, {0x45, 0x00, 0x96, 0xff}}},\n    {{{  -327,   3564,   1450}, 0, {  2834,    990}, {0x45, 0x00, 0x96, 0xff}}},\n    {{{  -327,   3584,   1450}, 0, {  2834,    990}, {0x45, 0x00, 0x96, 0xff}}},\n    {{{    63,   3308,   1704}, 0, {  3078,   4076}, {0x45, 0x00, 0x96, 0xff}}},\n    {{{  -327,   3584,   1450}, 0, {  2834,    990}, {0x35, 0x6b, 0x29, 0xff}}},\n    {{{  -589,   3584,   1792}, 0, {     0,    990}, {0x35, 0x6b, 0x29, 0xff}}},\n    {{{  -243,   3328,   2011}, 0, {   212,   3702}, {0x35, 0x6b, 0x29, 0xff}}},\n    {{{    63,   3328,   1704}, 0, {  3078,   4076}, {0x2c, 0x6e, 0x2b, 0xff}}},\n    {{{  -327,   3584,   1450}, 0, {  2834,    990}, {0x2c, 0x6e, 0x2b, 0xff}}},\n    {{{  -243,   3328,   2011}, 0, {   212,   3702}, {0x2c, 0x6e, 0x2b, 0xff}}},\n    {{{  -589,   3584,   1792}, 0, {     0,    990}, {0xbd, 0x00, 0x6b, 0xff}}},\n    {{{  -243,   3308,   2011}, 0, {   212,   3702}, {0xbd, 0x00, 0x6b, 0xff}}},\n    {{{  -243,   3328,   2011}, 0, {   212,   3702}, {0xbd, 0x00, 0x6b, 0xff}}},\n};\n\n// 0x070064B0 - 0x07006590\nstatic const Vtx sl_seg7_vertex_070064B0[] = {\n    {{{  -589,   3584,   1792}, 0, {     0,    990}, {0xbc, 0xff, 0x6a, 0xff}}},\n    {{{  -587,   3564,   1793}, 0, {   -30,   1002}, {0xbc, 0xff, 0x6a, 0xff}}},\n    {{{  -243,   3308,   2011}, 0, {   212,   3702}, {0xbc, 0xff, 0x6a, 0xff}}},\n    {{{    63,   3328,   1704}, 0, { -8532,   1300}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    66,   3328,   2176}, 0, {-10888,   1316}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   365,   3328,   2052}, 0, {-10268,   2808}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   365,   3328,   2052}, 0, {-10268,   2808}, {0x5f, 0x00, 0xad, 0xff}}},\n    {{{    63,   3308,   1704}, 0, { -8532,   1300}, {0x5f, 0x00, 0xad, 0xff}}},\n    {{{    63,   3328,   1704}, 0, { -8532,   1300}, {0x5f, 0x00, 0xad, 0xff}}},\n    {{{  -243,   3328,   2011}, 0, {-10066,   -230}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -243,   3328,   2011}, 0, {-10066,   -230}, {0xc5, 0x00, 0x70, 0xff}}},\n    {{{    66,   3308,   2176}, 0, {-10888,   1316}, {0xc5, 0x00, 0x70, 0xff}}},\n    {{{    66,   3328,   2176}, 0, {-10888,   1316}, {0xc5, 0x00, 0x70, 0xff}}},\n    {{{  -243,   3308,   2011}, 0, {-10066,   -230}, {0xc5, 0x00, 0x70, 0xff}}},\n};\n\n// 0x07006590 - 0x07006690\nstatic const Vtx sl_seg7_vertex_07006590[] = {\n    {{{   365,   3328,   2052}, 0, {-10268,   2808}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{    66,   3308,   2176}, 0, {-10888,   1316}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{   365,   3308,   2052}, 0, {-10268,   2808}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{    66,   3328,   2176}, 0, {-10888,   1316}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{     0,   3584,   1024}, 0, {  4902,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,   3584,    768}, 0, {  3578,  -2826}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -602,   3584,   1808}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,   3584,   1024}, 0, {  4902,    990}, {0x64, 0x0d, 0x4c, 0xff}}},\n    {{{  -602,   3584,   1808}, 0, {     0,    990}, {0x64, 0x0d, 0x4c, 0xff}}},\n    {{{  -587,   3564,   1792}, 0, {    76,    998}, {0x64, 0x0d, 0x4c, 0xff}}},\n    {{{     0,   3584,   1024}, 0, {  4902,    990}, {0x63, 0x12, 0x4c, 0xff}}},\n    {{{  -587,   3564,   1792}, 0, {    76,    998}, {0x63, 0x12, 0x4c, 0xff}}},\n    {{{    -1,   3564,   1030}, 0, {  4872,    998}, {0x63, 0x12, 0x4c, 0xff}}},\n    {{{  -608,   3564,   1786}, 0, {    36,    898}, {0x84, 0x12, 0x13, 0xff}}},\n    {{{  -767,   3584,    768}, 0, {  3578,  -2826}, {0x84, 0x12, 0x13, 0xff}}},\n    {{{  -769,   3564,    774}, 0, {  3550,  -2816}, {0x84, 0x12, 0x13, 0xff}}},\n};\n\n// 0x07006690 - 0x07006790\nstatic const Vtx sl_seg7_vertex_07006690[] = {\n    {{{  -608,   3564,   1786}, 0, {    36,    898}, {0x84, 0x0f, 0x13, 0xff}}},\n    {{{  -602,   3584,   1808}, 0, {     0,    990}, {0x84, 0x0f, 0x13, 0xff}}},\n    {{{  -767,   3584,    768}, 0, {  3578,  -2826}, {0x84, 0x0f, 0x13, 0xff}}},\n    {{{  1635,   2816,   -646}, 0, { -1892,    990}, {0x50, 0x59, 0xd8, 0xff}}},\n    {{{  1333,   3072,   -683}, 0, {  -382,   -290}, {0x50, 0x59, 0xd8, 0xff}}},\n    {{{  1453,   3072,   -444}, 0, {     0,    990}, {0x50, 0x59, 0xd8, 0xff}}},\n    {{{  1453,   3072,   -444}, 0, {     0,    990}, {0x5e, 0x00, 0x55, 0xff}}},\n    {{{  1453,   3052,   -444}, 0, {  -100,   1000}, {0x5e, 0x00, 0x55, 0xff}}},\n    {{{  1635,   2796,   -646}, 0, { -1962,   1000}, {0x5e, 0x00, 0x55, 0xff}}},\n    {{{  1635,   2816,   -646}, 0, { -1892,    990}, {0x5e, 0x00, 0x55, 0xff}}},\n    {{{  1635,   2816,   -646}, 0, { -1892,    990}, {0x4e, 0x55, 0xcc, 0xff}}},\n    {{{  1493,   2816,   -859}, 0, { -2120,   -268}, {0x4e, 0x55, 0xcc, 0xff}}},\n    {{{  1333,   3072,   -683}, 0, {  -382,   -290}, {0x4e, 0x55, 0xcc, 0xff}}},\n    {{{  1280,   3072,   -255}, 0, {  2876,   -278}, {0xee, 0x7d, 0xf4, 0xff}}},\n    {{{  1753,   3174,     78}, 0, {   -56,   -278}, {0xee, 0x7d, 0xf4, 0xff}}},\n    {{{  1895,   3174,   -132}, 0, {     0,    990}, {0xee, 0x7d, 0xf4, 0xff}}},\n};\n\n// 0x07006790 - 0x07006870\nstatic const Vtx sl_seg7_vertex_07006790[] = {\n    {{{  1280,   3072,   -255}, 0, {  2876,   -278}, {0xef, 0x7c, 0xf0, 0xff}}},\n    {{{  1895,   3174,   -132}, 0, {     0,    990}, {0xef, 0x7c, 0xf0, 0xff}}},\n    {{{  1453,   3072,   -444}, 0, {  2718,    990}, {0xef, 0x7c, 0xf0, 0xff}}},\n    {{{  1895,   3174,   -132}, 0, {     0,    990}, {0x49, 0x00, 0x99, 0xff}}},\n    {{{  1895,   3154,   -132}, 0, {   -14,    990}, {0x49, 0x00, 0x99, 0xff}}},\n    {{{  1453,   3052,   -444}, 0, {  2736,    990}, {0x49, 0x00, 0x99, 0xff}}},\n    {{{  1453,   3072,   -444}, 0, {  2718,    990}, {0x49, 0x00, 0x99, 0xff}}},\n    {{{  2037,   3154,    278}, 0, {  1618,   1038}, {0x7e, 0x00, 0x03, 0xff}}},\n    {{{  2037,   3174,    278}, 0, {  1618,   1038}, {0x7e, 0x00, 0x03, 0xff}}},\n    {{{  2027,   3328,    608}, 0, {     0,    990}, {0x7e, 0x00, 0x03, 0xff}}},\n    {{{  2027,   3308,    608}, 0, {     0,    990}, {0x7e, 0x00, 0x03, 0xff}}},\n    {{{  2027,   3328,    608}, 0, {     0,    990}, {0x36, 0x68, 0xd1, 0xff}}},\n    {{{  2037,   3174,    278}, 0, {  1618,   1038}, {0x36, 0x68, 0xd1, 0xff}}},\n    {{{  1725,   3328,    260}, 0, {  1704,   -518}, {0x36, 0x68, 0xd1, 0xff}}},\n};\n\n// 0x07006870 - 0x07006950\nstatic const Vtx sl_seg7_vertex_07006870[] = {\n    {{{  2037,   3174,    278}, 0, {  1618,   1038}, {0x31, 0x5c, 0xba, 0xff}}},\n    {{{  1753,   3174,     78}, 0, {  2616,   -376}, {0x31, 0x5c, 0xba, 0xff}}},\n    {{{  1725,   3328,    260}, 0, {  1704,   -518}, {0x31, 0x5c, 0xba, 0xff}}},\n    {{{  2027,   3308,    608}, 0, {     0,    990}, {0xa1, 0x00, 0x53, 0xff}}},\n    {{{  2027,   3328,    608}, 0, {     0,    990}, {0xa1, 0x00, 0x53, 0xff}}},\n    {{{  1725,   3328,    260}, 0, {  1704,   -518}, {0xa1, 0x00, 0x53, 0xff}}},\n    {{{  1725,   3308,    260}, 0, {  1704,   -518}, {0xa1, 0x00, 0x53, 0xff}}},\n    {{{  1895,   3154,   -132}, 0, {  2138,    990}, {0x78, 0x00, 0xd7, 0xff}}},\n    {{{  2037,   3174,    278}, 0, {     0,    990}, {0x78, 0x00, 0xd7, 0xff}}},\n    {{{  2037,   3154,    278}, 0, {     0,    990}, {0x78, 0x00, 0xd7, 0xff}}},\n    {{{  1895,   3174,   -132}, 0, {  2138,    990}, {0x78, 0x00, 0xd7, 0xff}}},\n    {{{  1753,   3174,     78}, 0, {  1374,    -24}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2037,   3174,    278}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1895,   3174,   -132}, 0, {  2138,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07006950 - 0x07006A40\nstatic const Vtx sl_seg7_vertex_07006950[] = {\n    {{{  1195,   2210,    384}, 0, {   734,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1323,   2210,    469}, 0, {     0,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1408,   2210,    341}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,   2210,    256}, 0, {   734,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1323,   2185,    469}, 0, {     0,    224}, {0x69, 0x00, 0x46, 0xff}}},\n    {{{  1408,   2185,    341}, 0, {     0,    990}, {0x69, 0x00, 0x46, 0xff}}},\n    {{{  1408,   2210,    341}, 0, {     0,    990}, {0x69, 0x00, 0x46, 0xff}}},\n    {{{  1323,   2210,    469}, 0, {     0,    224}, {0x69, 0x00, 0x46, 0xff}}},\n    {{{  1408,   2364,   -170}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1408,   2210,    341}, 0, { -1448,  -1270}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1408,   2185,    341}, 0, { -1448,  -1314}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1408,   2210,    341}, 0, { -1448,  -1270}, {0xe9, 0x77, 0x23, 0xff}}},\n    {{{  1280,   2364,   -255}, 0, {   734,    990}, {0xe9, 0x77, 0x23, 0xff}}},\n    {{{  1280,   2210,    256}, 0, {  -680,  -1270}, {0xe9, 0x77, 0x23, 0xff}}},\n    {{{  1408,   2364,   -170}, 0, {     0,    990}, {0xe9, 0x77, 0x23, 0xff}}},\n};\n\n// 0x07006A40 - 0x07006B30\nstatic const Vtx sl_seg7_vertex_07006A40[] = {\n    {{{  1280,   2364,   -255}, 0, {  1128,  -1792}, {0xe8, 0x76, 0x25, 0xff}}},\n    {{{  1763,   2560,   -560}, 0, {     0,    990}, {0xe8, 0x76, 0x25, 0xff}}},\n    {{{  1635,   2560,   -646}, 0, {   734,    990}, {0xe8, 0x76, 0x25, 0xff}}},\n    {{{  1195,   2210,    384}, 0, {   734,    224}, {0xba, 0x00, 0x69, 0xff}}},\n    {{{  1195,   2185,    384}, 0, {   734,    224}, {0xba, 0x00, 0x69, 0xff}}},\n    {{{  1323,   2185,    469}, 0, {     0,    224}, {0xba, 0x00, 0x69, 0xff}}},\n    {{{  1323,   2210,    469}, 0, {     0,    224}, {0xba, 0x00, 0x69, 0xff}}},\n    {{{  1408,   2364,   -170}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1408,   2185,    341}, 0, { -1448,  -1314}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1408,   2338,   -170}, 0, {     0,    946}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1763,   2534,   -560}, 0, {     0,    946}, {0x5d, 0x00, 0x55, 0xff}}},\n    {{{  1408,   2364,   -170}, 0, {   362,  -1792}, {0x5d, 0x00, 0x55, 0xff}}},\n    {{{  1408,   2338,   -170}, 0, {   362,  -1836}, {0x5d, 0x00, 0x55, 0xff}}},\n    {{{  1763,   2560,   -560}, 0, {     0,    990}, {0x5d, 0x00, 0x55, 0xff}}},\n    {{{  1408,   2364,   -170}, 0, {   362,  -1792}, {0xe8, 0x76, 0x25, 0xff}}},\n};\n\n// 0x07006B30 - 0x07006C30\nstatic const Vtx sl_seg7_vertex_07006B30[] = {\n    {{{  1763,   2534,   -560}, 0, {     0,    224}, {0x69, 0x00, 0x46, 0xff}}},\n    {{{  1848,   2560,   -688}, 0, {     0,    990}, {0x69, 0x00, 0x46, 0xff}}},\n    {{{  1763,   2560,   -560}, 0, {     0,    224}, {0x69, 0x00, 0x46, 0xff}}},\n    {{{  1763,   2560,   -560}, 0, {     0,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1848,   2560,   -688}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1740,   2560,   -760}, 0, {   618,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1635,   2560,   -646}, 0, {   734,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1848,   2560,   -688}, 0, {     0,    990}, {0x46, 0x00, 0x97, 0xff}}},\n    {{{  1740,   2534,   -760}, 0, {   618,    990}, {0x46, 0x00, 0x97, 0xff}}},\n    {{{  1740,   2560,   -760}, 0, {   618,    990}, {0x46, 0x00, 0x97, 0xff}}},\n    {{{  1848,   2534,   -688}, 0, {     0,    990}, {0x69, 0x00, 0x46, 0xff}}},\n    {{{  1848,   2534,   -688}, 0, {     0,    990}, {0x46, 0x00, 0x97, 0xff}}},\n    {{{  1280,   3072,   -255}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1453,   3072,   -444}, 0, {  1012,    706}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1195,   3072,   -383}, 0, {   548,   -532}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1333,   3072,   -683}, 0, {  2120,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07006C30 - 0x07006C70\nstatic const Vtx sl_seg7_vertex_07006C30[] = {\n    {{{   875,   1536,   1571}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   875,   1536,   2626}, 0, {  5232,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1182,   1536,   2288}, 0, {  3544,   -542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1182,   1536,   1673}, 0, {   480,   -542}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07006C70 - 0x07006D70\nstatic const Vtx sl_seg7_vertex_07006C70[] = {\n    {{{  4378,    819,   1267}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4378,    307,   1267}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4378,    307,   1062}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4378,    819,   1062}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4582,    307,   1062}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4582,    819,   1062}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4378,    307,   1062}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4582,    819,   1062}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4582,    307,   1267}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4582,    819,   1267}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4582,    307,   1062}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4582,    819,   1267}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4582,    307,   1267}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4378,    307,   1267}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4378,    819,   1267}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4378,    819,   1062}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07006D70 - 0x07006DE8\nstatic const Gfx sl_seg7_dl_07006D70[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&sl_seg7_lights_07005730.l, 1),\n    gsSPLight(&sl_seg7_lights_07005730.a, 2),\n    gsSPVertex(sl_seg7_vertex_07005760, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 3,  6,  4, 0x0),\n    gsSPLight(&sl_seg7_lights_07005748.l, 1),\n    gsSPLight(&sl_seg7_lights_07005748.a, 2),\n    gsSPVertex(sl_seg7_vertex_070057D0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07006DE8 - 0x07006EB0\nstatic const Gfx sl_seg7_dl_07006DE8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&sl_seg7_lights_07005730.l, 1),\n    gsSPLight(&sl_seg7_lights_07005730.a, 2),\n    gsSPVertex(sl_seg7_vertex_07005810, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(sl_seg7_vertex_07005900, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 10, 12, 0x0),\n    gsSP2Triangles( 0, 14,  1, 0x0,  0, 15, 14, 0x0),\n    gsSPVertex(sl_seg7_vertex_07005A00, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07006EB0 - 0x070070A8\nstatic const Gfx sl_seg7_dl_07006EB0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(sl_seg7_vertex_07005A30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(sl_seg7_vertex_07005B30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(sl_seg7_vertex_07005C30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(sl_seg7_vertex_07005D30, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(sl_seg7_vertex_07005E10, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(sl_seg7_vertex_07005EF0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(sl_seg7_vertex_07005FF0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(sl_seg7_vertex_070060E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(sl_seg7_vertex_070061E0, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP1Triangle( 4,  5,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070070A8 - 0x07007118\nstatic const Gfx sl_seg7_dl_070070A8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09006000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(sl_seg7_vertex_07006250, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(sl_seg7_vertex_07006350, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007118 - 0x07007368\nstatic const Gfx sl_seg7_dl_07007118[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(sl_seg7_vertex_070063B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(sl_seg7_vertex_070064B0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  3,  9,  4, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(sl_seg7_vertex_07006590, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(sl_seg7_vertex_07006690, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(sl_seg7_vertex_07006790, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(sl_seg7_vertex_07006870, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(sl_seg7_vertex_07006950, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(sl_seg7_vertex_07006A40, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(sl_seg7_vertex_07006B30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 0, 10,  1, 0x0,  7, 11,  8, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(sl_seg7_vertex_07006C30, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007368 - 0x070073D0\nstatic const Gfx sl_seg7_dl_07007368[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(sl_seg7_vertex_07006C70, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070073D0 - 0x07007480\nconst Gfx sl_seg7_dl_070073D0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(sl_seg7_dl_07006D70),\n    gsSPDisplayList(sl_seg7_dl_07006DE8),\n    gsSPDisplayList(sl_seg7_dl_07006EB0),\n    gsSPDisplayList(sl_seg7_dl_070070A8),\n    gsSPDisplayList(sl_seg7_dl_07007118),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(sl_seg7_dl_07007368),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/sl/areas/1/4/model.inc.c",
    "content": "// 0x07007480 - 0x07007570\nstatic const Vtx sl_seg7_vertex_07007480[] = {\n    {{{   -33,   2150,   1233}, 0, { -3506,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    34,   2253,   1766}, 0, {  1854,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -33,   2253,   1233}, 0, { -3506,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1504,   1741,   1650}, 0, {  5130,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1404,   1843,   2246}, 0, {  -898,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1404,   1741,   2246}, 0, {  -898,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1504,   1843,   1650}, 0, {  5130,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2116,   1998,    862}, 0, {  9124,    -20}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1504,   1741,   1650}, 0, {  -956,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2116,   1896,    862}, 0, {  9124,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1504,   1843,   1650}, 0, {  -956,    -20}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2116,   1896,    862}, 0, {  -630,    994}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1897,   1896,    716}, 0, {  1994,    994}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1897,   1999,    716}, 0, {  1994,    -26}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2116,   1999,    862}, 0, {  -630,    -26}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07007570 - 0x070075E0\nstatic const Vtx sl_seg7_vertex_07007570[] = {\n    {{{    34,   2150,   1766}, 0, {  -800,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   899,   2150,   1531}, 0, {  8144,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   899,   2253,   1531}, 0, {  8144,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -33,   2150,   1233}, 0, { -3506,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    34,   2150,   1766}, 0, {  1854,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    34,   2253,   1766}, 0, {  1854,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    34,   2253,   1766}, 0, {  -800,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070075E0 - 0x070076E0\nstatic const Vtx sl_seg7_vertex_070075E0[] = {\n    {{{  -522,   1352,  -5052}, 0, {  8824,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -522,   1249,  -5052}, 0, {  8824,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -200,   1249,  -3761}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1725,   3328,    260}, 0, { 14616,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    63,   3226,   1704}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    63,   3328,   1704}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1725,   3226,    260}, 0, { 14616,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   365,   3328,   2052}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2027,   3226,    608}, 0, { 14616,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2027,   3328,    608}, 0, { 14616,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   365,   3226,   2052}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -200,   1352,  -3761}, 0, {  8824,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1091,   1249,  -4084}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1091,   1352,  -4084}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -200,   1249,  -3761}, 0, {  8824,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   768,   1249,  -5375}, 0, {  8824,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070076E0 - 0x07007770\nstatic const Vtx sl_seg7_vertex_070076E0[] = {\n    {{{  -522,   1352,  -5052}, 0, {  8824,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -200,   1249,  -3761}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -200,   1352,  -3761}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   768,   1249,  -5375}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   768,   1352,  -5375}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -522,   1249,  -5052}, 0, {  8824,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1091,   1352,  -4084}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   768,   1249,  -5375}, 0, {  8824,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   768,   1352,  -5375}, 0, {  8824,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07007770 - 0x070077F0\nstatic const Gfx sl_seg7_dl_07007770[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(sl_seg7_vertex_07007480, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(sl_seg7_vertex_07007570, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  2,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070077F0 - 0x07007880\nstatic const Gfx sl_seg7_dl_070077F0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(sl_seg7_vertex_070075E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0, 13, 12, 15, 0x0),\n    gsSPVertex(sl_seg7_vertex_070076E0, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 3,  5,  0, 0x0,  6,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007880 - 0x07007910\nconst Gfx sl_seg7_dl_07007880[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(sl_seg7_dl_07007770),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(sl_seg7_dl_070077F0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/sl/areas/1/5/model.inc.c",
    "content": "// 0x07007910 - 0x07007928\nstatic const Lights1 sl_seg7_lights_07007910 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07007928 - 0x07007A18\nstatic const Vtx sl_seg7_vertex_07007928[] = {\n    {{{  3967,   1638,   4054}, 0, {     0,    172}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  4582,   1843,   4156}, 0, { -1256,   -236}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  4786,   1638,   4054}, 0, { -1666,    172}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  4786,   1434,   4054}, 0, {     0,    582}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4786,   1638,   5078}, 0, {  2012,    172}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4786,   1434,   5078}, 0, {  2012,    582}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4786,   1638,   4054}, 0, {     0,    172}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3967,   1434,   4054}, 0, {     0,    582}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4786,   1638,   4054}, 0, { -1666,    172}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4786,   1434,   4054}, 0, { -1666,    582}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3967,   1638,   4054}, 0, {     0,    172}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4582,   1843,   4156}, 0, {   172,   -236}, {0x5a, 0x59, 0x00, 0xff}}},\n    {{{  4582,   1843,   5078}, 0, {  2012,   -236}, {0x5a, 0x59, 0x00, 0xff}}},\n    {{{  4786,   1638,   5078}, 0, {  2012,    172}, {0x5a, 0x59, 0x00, 0xff}}},\n    {{{  4786,   1638,   4054}, 0, {     0,    172}, {0x5a, 0x59, 0x00, 0xff}}},\n};\n\n// 0x07007A18 - 0x07007B08\nstatic const Vtx sl_seg7_vertex_07007A18[] = {\n    {{{  4582,   1434,   4873}, 0, {  1604,    582}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4786,   1229,   4873}, 0, {  1604,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4582,   1229,   4873}, 0, {  1604,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3967,   1638,   4054}, 0, {     0,    172}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  4172,   1843,   4156}, 0, {  -438,   -236}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  4582,   1843,   4156}, 0, { -1256,   -236}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  3967,   1638,   5078}, 0, {  2012,    172}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{  4172,   1843,   4156}, 0, {   172,   -236}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{  3967,   1638,   4054}, 0, {     0,    172}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{  4172,   1843,   5078}, 0, {  2012,   -236}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{  4786,   1434,   4873}, 0, {  1604,    582}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4786,   1434,   4873}, 0, {  1604,    582}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4786,   1229,   5078}, 0, {  2012,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4786,   1229,   4873}, 0, {  1604,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4786,   1434,   5078}, 0, {  2012,    582}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07007B08 - 0x07007BF8\nstatic const Vtx sl_seg7_vertex_07007B08[] = {\n    {{{  3967,   1434,   4668}, 0, {  1194,    582}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3967,   1229,   4054}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3967,   1229,   4668}, 0, {  1194,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3967,   1229,   5078}, 0, {  2012,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3967,   1434,   4873}, 0, {  1604,    582}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3967,   1229,   4873}, 0, {  1604,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3967,   1434,   5078}, 0, {  2012,    582}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4786,   1229,   4054}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4786,   1434,   4668}, 0, {  1194,    582}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4786,   1229,   4668}, 0, {  1194,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4786,   1434,   4054}, 0, {     0,    582}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4786,   1434,   4668}, 0, { -1666,    582}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3967,   1434,   4668}, 0, {     0,    582}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3967,   1229,   4668}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4786,   1229,   4668}, 0, { -1666,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07007BF8 - 0x07007CF8\nstatic const Vtx sl_seg7_vertex_07007BF8[] = {\n    {{{  4377,   1434,   4873}, 0, {  1604,    582}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4377,   1638,   4668}, 0, {  1194,    172}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4377,   1434,   4668}, 0, {  1194,    582}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3967,   1434,   4668}, 0, {  1194,    582}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3967,   1434,   4054}, 0, {     0,    582}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3967,   1229,   4054}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4172,   1434,   4873}, 0, {  -438,    582}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4377,   1638,   4873}, 0, {  -848,    172}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4377,   1229,   4873}, 0, {  -848,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4172,   1843,   4873}, 0, {  -438,   -236}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4582,   1843,   4873}, 0, { -1256,   -236}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4582,   1638,   4873}, 0, { -1256,    172}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4377,   1638,   4873}, 0, {  1604,    172}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3967,   1434,   4873}, 0, {  1604,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4172,   1434,   4668}, 0, {  1194,   1396}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4172,   1434,   4873}, 0, {  1604,   1396}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07007CF8 - 0x07007DE8\nstatic const Vtx sl_seg7_vertex_07007CF8[] = {\n    {{{  4377,   1434,   4668}, 0, {  -848,    582}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4172,   1843,   4668}, 0, {  -438,   -236}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4172,   1434,   4668}, 0, {  -438,    582}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4377,   1638,   4668}, 0, {  -848,    172}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4172,   1434,   4668}, 0, {  1194,    582}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4172,   1843,   4873}, 0, {  1604,   -236}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4172,   1434,   4873}, 0, {  1604,    582}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4172,   1843,   4668}, 0, {  1194,   -236}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4377,   1434,   4668}, 0, {  1194,   1806}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4786,   1434,   4668}, 0, {  1194,   2624}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4786,   1434,   4873}, 0, {  1604,   2624}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4582,   1434,   4873}, 0, {  1604,   2214}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4479,   1229,   4259}, 0, { -1052,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4479,   1843,   4259}, 0, { -1052,   -236}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4274,   1843,   4259}, 0, {  -644,   -236}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07007DE8 - 0x07007EC8\nstatic const Vtx sl_seg7_vertex_07007DE8[] = {\n    {{{  3967,   1434,   4873}, 0, {  1604,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3967,   1434,   4668}, 0, {  1194,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4172,   1434,   4668}, 0, {  1194,   1396}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4274,   1229,   4463}, 0, {  -644,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4479,   1843,   4463}, 0, { -1052,   -236}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4479,   1229,   4463}, 0, { -1052,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4274,   1843,   4463}, 0, {  -644,   -236}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4479,   1229,   4463}, 0, {   786,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4479,   1843,   4259}, 0, {   376,   -236}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4479,   1229,   4259}, 0, {   376,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4479,   1843,   4463}, 0, {   786,   -236}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4479,   1229,   4259}, 0, { -1052,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4274,   1843,   4259}, 0, {  -644,   -236}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4274,   1229,   4259}, 0, {  -644,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07007EC8 - 0x07007FB8\nstatic const Vtx sl_seg7_vertex_07007EC8[] = {\n    {{{  4377,   1434,   5078}, 0, {  -848,    582}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3967,   1229,   5078}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4377,   1229,   5078}, 0, {  -848,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4274,   1229,   4259}, 0, {   376,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4274,   1843,   4463}, 0, {   786,   -236}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4274,   1229,   4463}, 0, {   786,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4274,   1843,   4259}, 0, {   376,   -236}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4274,   1843,   4463}, 0, {   376,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4274,   1843,   4259}, 0, {   786,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4172,   1843,   4156}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4172,   1843,   4668}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4479,   1843,   4463}, 0, {   376,    734}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4582,   1843,   4156}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4479,   1843,   4259}, 0, {   786,    734}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4582,   1843,   4668}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07007FB8 - 0x070080A8\nstatic const Vtx sl_seg7_vertex_07007FB8[] = {\n    {{{  4582,   1229,   5078}, 0, {  2012,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4582,   1434,   5078}, 0, {  2012,    582}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4582,   1434,   4873}, 0, {  1604,    582}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4377,   1434,   5078}, 0, {  -848,    582}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3967,   1434,   5078}, 0, {     0,    582}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3967,   1229,   5078}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3967,   1434,   4873}, 0, {     0,    582}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4377,   1229,   4873}, 0, {  -848,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3967,   1229,   4873}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4172,   1434,   4873}, 0, {  -438,    582}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4786,   1229,   5078}, 0, { -1666,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4786,   1434,   5078}, 0, { -1666,    582}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4582,   1434,   5078}, 0, { -1256,    582}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4582,   1229,   5078}, 0, { -1256,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4582,   1229,   4873}, 0, {  1604,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070080A8 - 0x07008198\nstatic const Vtx sl_seg7_vertex_070080A8[] = {\n    {{{  4274,   1434,   4259}, 0, {   376,    582}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4274,   1434,   4054}, 0, {     0,    582}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4274,   1229,   4054}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4377,   1229,   5078}, 0, {  2012,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4377,   1434,   4873}, 0, {  1604,    582}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4377,   1434,   5078}, 0, {  2012,    582}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4377,   1229,   4873}, 0, {  1604,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4582,   1434,   5078}, 0, {  2012,   2214}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4377,   1434,   5078}, 0, {  2012,   1806}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4582,   1434,   4873}, 0, {  1604,   2214}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4377,   1434,   4668}, 0, {  1194,   1806}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4786,   1434,   4054}, 0, { -1666,    582}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4274,   1229,   4054}, 0, {  -644,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4274,   1434,   4054}, 0, {  -644,    582}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4786,   1229,   4054}, 0, { -1666,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07008198 - 0x07008288\nstatic const Vtx sl_seg7_vertex_07008198[] = {\n    {{{  4274,   1229,   4259}, 0, {  -644,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4070,   1434,   4259}, 0, {  -234,    582}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4274,   1434,   4259}, 0, {  -644,    582}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4274,   1434,   4259}, 0, {   376,    582}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4274,   1229,   4054}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4274,   1229,   4259}, 0, {   376,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3967,   1229,   4054}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4070,   1434,   4054}, 0, {  -234,    582}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4070,   1229,   4054}, 0, {  -234,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3967,   1434,   4054}, 0, {     0,    582}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4070,   1229,   4259}, 0, {   376,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4070,   1434,   4054}, 0, {     0,    582}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4070,   1434,   4259}, 0, {   376,    582}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4070,   1229,   4054}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4070,   1229,   4259}, 0, {  -234,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07008288 - 0x07008378\nstatic const Vtx sl_seg7_vertex_07008288[] = {\n    {{{  4786,   1229,   4873}, 0, {  1604,   2624}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4786,   1229,   5078}, 0, {  2012,   2624}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4582,   1229,   4873}, 0, {  1604,   2214}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4274,   1434,   4259}, 0, {   376,   1602}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4070,   1434,   4054}, 0, {     0,   1192}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4274,   1434,   4054}, 0, {     0,   1602}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4070,   1434,   4259}, 0, {   376,   1192}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4582,   1229,   4666}, 0, {  1190,   2214}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4786,   1229,   4054}, 0, {     0,   2624}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4786,   1229,   4668}, 0, {  1194,   2624}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4582,   1229,   4054}, 0, {     0,   2214}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4582,   1843,   4668}, 0, { -1256,   -236}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4377,   1638,   4668}, 0, {  -848,    172}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4582,   1638,   4668}, 0, { -1256,    172}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4172,   1843,   4668}, 0, {  -438,   -236}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07008378 - 0x07008478\nstatic const Vtx sl_seg7_vertex_07008378[] = {\n    {{{  4582,   1843,   4873}, 0, {  1604,   2214}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4172,   1843,   4873}, 0, {  1604,   1396}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4172,   1843,   5078}, 0, {  2012,   1396}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4786,   1229,   5078}, 0, {  2012,   2624}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4582,   1229,   5078}, 0, {  2012,   2214}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4582,   1229,   4873}, 0, {  1604,   2214}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4786,   1434,   5078}, 0, { -1666,    582}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3967,   1638,   5078}, 0, {     0,    172}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3967,   1434,   5078}, 0, {     0,    582}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4786,   1638,   5078}, 0, { -1666,    172}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4172,   1843,   5078}, 0, {  -438,   -236}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4582,   1843,   5078}, 0, { -1256,   -236}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4582,   1843,   5078}, 0, {  2012,   2214}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4582,   1638,   4873}, 0, {  1604,    172}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4582,   1843,   4668}, 0, {  1194,   -236}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4582,   1638,   4668}, 0, {  1194,    172}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07008478 - 0x07008528\nstatic const Vtx sl_seg7_vertex_07008478[] = {\n    {{{  4582,   1638,   4873}, 0, {  1604,    172}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4582,   1843,   4873}, 0, {  1604,   -236}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4582,   1843,   4668}, 0, {  1194,   -236}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4582,   1638,   4668}, 0, {  1194,   2214}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4377,   1638,   4668}, 0, {  1194,   1806}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4377,   1638,   4873}, 0, {  1604,   1806}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4582,   1638,   4873}, 0, {  1604,   2214}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3967,   1434,   5078}, 0, {  2012,    582}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3967,   1638,   4054}, 0, {     0,    172}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3967,   1434,   4054}, 0, {     0,    582}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3967,   1638,   5078}, 0, {  2012,    172}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07008528 - 0x070088B0\nstatic const Gfx sl_seg7_dl_07008528[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&sl_seg7_lights_07007910.l, 1),\n    gsSPLight(&sl_seg7_lights_07007910.a, 2),\n    gsSPVertex(sl_seg7_vertex_07007928, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 11, 13, 0x0),\n    gsSPVertex(sl_seg7_vertex_07007A18, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 0, 10,  1, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(sl_seg7_vertex_07007B08, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(sl_seg7_vertex_07007BF8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 10, 11,  7, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(sl_seg7_vertex_07007CF8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  8, 10, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(sl_seg7_vertex_07007DE8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(sl_seg7_vertex_07007EC8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 10, 11,  7, 0x0),\n    gsSP2Triangles( 8, 12,  9, 0x0,  8, 13, 12, 0x0),\n    gsSP2Triangles(10, 14, 11, 0x0, 14, 12, 11, 0x0),\n    gsSP1Triangle(12, 13, 11, 0x0),\n    gsSPVertex(sl_seg7_vertex_07007FB8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(sl_seg7_vertex_070080A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(sl_seg7_vertex_07008198, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(sl_seg7_vertex_07008288, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 11, 14, 0x0),\n    gsSPVertex(sl_seg7_vertex_07008378, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(sl_seg7_vertex_07008478, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle( 7, 10,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070088B0 - 0x07008930\nconst Gfx sl_seg7_dl_070088B0[] = {\n    gsDPPipeSync(),\n    gsDPSetEnvColor(255, 255, 255, 100),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(sl_seg7_dl_07008528),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/sl/areas/1/6/model.inc.c",
    "content": "// 0x07008930 - 0x07008948\nstatic const Lights1 sl_seg7_lights_07008930 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07008948 - 0x07008960\nstatic const Lights1 sl_seg7_lights_07008948 = gdSPDefLights1(\n    0x22, 0x17, 0x00,\n    0x44, 0x2f, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x07008960 - 0x07008A60\nstatic const Vtx sl_seg7_vertex_07008960[] = {\n    {{{  1487,   1536,  -3572}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1691,   1536,  -3435}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1828,   1536,  -3639}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1889,   2816,  -1035}, 0, {   990,     92}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1643,   2816,  -1032}, 0, {     0,    102}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1643,   2816,   -819}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1793,   2816,   -819}, 0, {   590,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1889,   2816,   -925}, 0, {   990,    550}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2916,   1024,   -549}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2712,   1024,   -412}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2575,   1024,   -615}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2779,   1024,   -753}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1624,   1536,  -3776}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5496,   1024,  -3308}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5700,   1024,  -3170}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5837,   1024,  -3374}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07008A60 - 0x07008B50\nstatic const Vtx sl_seg7_vertex_07008A60[] = {\n    {{{  1748,   1024,  -4726}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2089,   1024,  -4792}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1885,   1024,  -4930}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1952,   1024,  -4589}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3475,   1024,  -5856}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3816,   1024,  -5922}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3612,   1024,  -6059}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3679,   1024,  -5718}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5225,   1055,  -5410}, 0, {     0,      0}, {0x00, 0x7e, 0xfb, 0xff}}},\n    {{{  5566,   1053,  -5476}, 0, {   990,    990}, {0x00, 0x7e, 0xfb, 0xff}}},\n    {{{  5362,   1046,  -5613}, 0, {   990,      0}, {0x00, 0x7e, 0xfb, 0xff}}},\n    {{{  5428,   1062,  -5273}, 0, {     0,    990}, {0x00, 0x7e, 0xfb, 0xff}}},\n    {{{  -170,   4864,     33}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    33,   4864,    171}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   171,   4864,    -32}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07008B50 - 0x07008BF0\nstatic const Vtx sl_seg7_vertex_07008B50[] = {\n    {{{  5496,   1024,  -3308}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5837,   1024,  -3374}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5633,   1024,  -3512}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3940,   1024,  -1163}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3599,   1024,  -1230}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3803,   1024,  -1367}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3736,   1024,  -1026}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -170,   4864,     33}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   171,   4864,    -32}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -32,   4864,   -170}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07008BF0 - 0x07008C30\nstatic const Vtx sl_seg7_vertex_07008BF0[] = {\n    {{{  3762,   1024,   5487}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5401,   1024,   3849}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3762,   1024,   3849}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5401,   1024,   5487}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07008C30 - 0x07008D10\nstatic const Gfx sl_seg7_dl_07008C30[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, snow_09009800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&sl_seg7_lights_07008930.l, 1),\n    gsSPLight(&sl_seg7_lights_07008930.a, 2),\n    gsSPVertex(sl_seg7_vertex_07008960, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  3,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(sl_seg7_vertex_07008A60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(sl_seg7_vertex_07008B50, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008D10 - 0x07008D58\nstatic const Gfx sl_seg7_dl_07008D10[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, snow_09009000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&sl_seg7_lights_07008948.l, 1),\n    gsSPLight(&sl_seg7_lights_07008948.a, 2),\n    gsSPVertex(sl_seg7_vertex_07008BF0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008D58 - 0x07008DE8\nconst Gfx sl_seg7_dl_07008D58[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(sl_seg7_dl_07008C30),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(sl_seg7_dl_07008D10),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/sl/areas/1/7/model.inc.c",
    "content": "// 0x07008DE8 - 0x07008E00\nstatic const Lights1 sl_seg7_lights_07008DE8 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07008E00 - 0x07008F00\nstatic const Vtx sl_seg7_vertex_07008E00[] = {\n    {{{  -403,    819,   1818}, 0, {  -432,    444}, {0xd8, 0x4c, 0xa4, 0xff}}},\n    {{{  -403,   1024,   1818}, 0, {  -432,    308}, {0xd7, 0x10, 0x76, 0xff}}},\n    {{{ -1801,    768,    952}, 0, { -1828,    478}, {0xdb, 0x6b, 0x39, 0xff}}},\n    {{{   875,   1024,   1818}, 0, {   840,    308}, {0x8f, 0x18, 0x33, 0xff}}},\n    {{{   875,   1536,   1571}, 0, {   840,      0}, {0xf3, 0x1d, 0x7a, 0xff}}},\n    {{{     0,   2150,   1818}, 0, {     0,   -440}, {0x04, 0x02, 0x7e, 0xff}}},\n    {{{ -1033,   1823,   1428}, 0, { -1078,   -222}, {0xc6, 0x08, 0x70, 0xff}}},\n    {{{   909,   2150,   1571}, 0, {   876,   -440}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{  1308,   1741,   1473}, 0, {  1274,   -168}, {0xee, 0x5f, 0x51, 0xff}}},\n    {{{  1308,   2108,   1473}, 0, {  1274,   -412}, {0x65, 0x2b, 0x3e, 0xff}}},\n    {{{   909,   2816,   1571}, 0, {   876,   -884}, {0xbc, 0x27, 0x63, 0xff}}},\n    {{{   909,   2150,   1571}, 0, {  1536,   -440}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{   909,   2816,   1571}, 0, {  1536,   -884}, {0xbc, 0x27, 0x63, 0xff}}},\n    {{{   768,   2150,   1024}, 0, {   990,   -440}, {0x86, 0x00, 0x1f, 0xff}}},\n    {{{   768,   2816,   1024}, 0, {   990,   -884}, {0x2b, 0x70, 0x28, 0xff}}},\n    {{{  1308,   2108,   1473}, 0, {  1438,   -412}, {0x65, 0x2b, 0x3e, 0xff}}},\n};\n\n// 0x07008F00 - 0x07008F40\nstatic const Vtx sl_seg7_vertex_07008F00[] = {\n    {{{  1308,   2108,   1473}, 0, {  1438,   -412}, {0x65, 0x2b, 0x3e, 0xff}}},\n    {{{   995,   2816,    683}, 0, {   650,   -884}, {0x73, 0x35, 0x01, 0xff}}},\n    {{{   768,   2816,   1024}, 0, {   990,   -884}, {0x2b, 0x70, 0x28, 0xff}}},\n    {{{   995,   2108,    683}, 0, {   650,   -412}, {0x76, 0x00, 0xd2, 0xff}}},\n};\n\n// 0x07008F40 - 0x07009020\nstatic const Vtx sl_seg7_vertex_07008F40[] = {\n    {{{  1308,   1741,   1473}, 0, {  -226,    126}, {0xee, 0x5f, 0x51, 0xff}}},\n    {{{  1534,   1741,   1678}, 0, {   182,   -326}, {0x20, 0x79, 0x10, 0xff}}},\n    {{{  1919,   1903,    682}, 0, { -1804,  -1094}, {0xf4, 0x7d, 0x0f, 0xff}}},\n    {{{ -6143,   1024,   6144}, 0, {-12294, -11274}, {0x15, 0x7c, 0x0a, 0xff}}},\n    {{{ -5887,   1024,   5632}, 0, {-11272, -10764}, {0x0d, 0x7e, 0x06, 0xff}}},\n    {{{ -6143,   1382,   4096}, 0, { -8206, -11274}, {0x7a, 0x22, 0x05, 0xff}}},\n    {{{ -4351,   1024,   6144}, 0, {-12294,  -7698}, {0xd2, 0x76, 0x00, 0xff}}},\n    {{{ -4351,   1024,   5632}, 0, {-11272,  -7698}, {0xd4, 0x76, 0x00, 0xff}}},\n    {{{   875,   1536,   2626}, 0, {  2074,    990}, {0xb4, 0x3d, 0xb0, 0xff}}},\n    {{{  1418,   1741,   2366}, 0, {  1556,    -96}, {0x0c, 0x7e, 0xfe, 0xff}}},\n    {{{  1182,   1536,   2288}, 0, {  1398,    376}, {0xb5, 0x61, 0xe3, 0xff}}},\n    {{{  1182,   1536,   1673}, 0, {   172,    376}, {0xb4, 0x5f, 0x21, 0xff}}},\n    {{{   875,   1536,   1571}, 0, {     0,    990}, {0xf3, 0x1d, 0x7a, 0xff}}},\n    {{{  2175,   1903,    852}, 0, { -1464,  -1604}, {0xf6, 0x7d, 0x10, 0xff}}},\n};\n\n// 0x07009020 - 0x07009120\nstatic const Vtx sl_seg7_vertex_07009020[] = {\n    {{{ -3756,   1024,   2637}, 0, {  8742,  -2416}, {0x53, 0x34, 0x4f, 0xff}}},\n    {{{ -3756,    819,   2842}, 0, {  9424,  -1736}, {0x14, 0x74, 0x2d, 0xff}}},\n    {{{ -3551,    819,   2330}, 0, {  7720,  -1736}, {0x33, 0x64, 0x39, 0xff}}},\n    {{{ -3551,    819,   2330}, 0, {-11846,   8740}, {0x33, 0x64, 0x39, 0xff}}},\n    {{{ -2195,    817,   3060}, 0, { -7336,  11168}, {0xe4, 0x70, 0xce, 0xff}}},\n    {{{  -511,    819,   2816}, 0, { -1734,  10356}, {0xce, 0x48, 0xa5, 0xff}}},\n    {{{ -3756,    819,   2842}, 0, {-12528,  10444}, {0x14, 0x74, 0x2d, 0xff}}},\n    {{{ -6143,    768,   4096}, 0, {-20470,  14614}, {0x1d, 0x7b, 0x03, 0xff}}},\n    {{{ -4186,   1024,   2629}, 0, {  8736,  14578}, {0xc6, 0x51, 0x4d, 0xff}}},\n    {{{ -4201,    819,   2833}, 0, {  9418,  14578}, {0xcd, 0x72, 0x12, 0xff}}},\n    {{{ -3756,    819,   2842}, 0, {  9424,  13486}, {0x14, 0x74, 0x2d, 0xff}}},\n    {{{ -3756,   1024,   2637}, 0, {  8742,  13486}, {0x53, 0x34, 0x4f, 0xff}}},\n    {{{ -3551,   1024,   2330}, 0, {  7720,  -2416}, {0x27, 0x00, 0x78, 0xff}}},\n    {{{  1024,   1024,  -3071}, 0, { 10188,  -2416}, {0xa1, 0x4f, 0xe7, 0xff}}},\n    {{{  1536,   1536,  -4095}, 0, { 13594,  -4120}, {0xb4, 0x08, 0x9b, 0xff}}},\n    {{{  1536,   1024,  -4095}, 0, { 13594,  -2416}, {0xf5, 0x49, 0x99, 0xff}}},\n};\n\n// 0x07009120 - 0x07009220\nstatic const Vtx sl_seg7_vertex_07009120[] = {\n    {{{ -1217,   1119,  -3205}, 0, { 10632,  -2734}, {0x4e, 0x63, 0x05, 0xff}}},\n    {{{ -1137,   1536,  -2814}, 0, {  9334,  -4120}, {0x75, 0x04, 0xcf, 0xff}}},\n    {{{  -511,    512,  -2175}, 0, {  7208,   -714}, {0x45, 0x69, 0xf5, 0xff}}},\n    {{{ -1053,   1271,  -2411}, 0, {  7992,  -3240}, {0x71, 0xc8, 0xf8, 0xff}}},\n    {{{ -1015,   1536,  -2225}, 0, {  7374,  -4120}, {0x7d, 0x0c, 0x0b, 0xff}}},\n    {{{  -808,    986,  -1223}, 0, {  4040,  -2292}, {0x68, 0x47, 0xfd, 0xff}}},\n    {{{  -767,    973,  -1023}, 0, {  3374,  -2246}, {0x2b, 0x71, 0xdd, 0xff}}},\n    {{{   512,    512,  -2354}, 0, {  7804,   -714}, {0xdb, 0x79, 0x03, 0xff}}},\n    {{{  1008,   1126,  -2425}, 0, {  8038,  -2758}, {0x84, 0xec, 0xf5, 0xff}}},\n    {{{  1024,   1024,  -3071}, 0, { 10188,  -2416}, {0xa1, 0x4f, 0xe7, 0xff}}},\n    {{{  1008,   1536,  -2834}, 0, {  9400,  -4120}, {0x92, 0xe4, 0xc8, 0xff}}},\n    {{{  1536,   1536,  -4095}, 0, { 13594,  -4120}, {0xb4, 0x08, 0x9b, 0xff}}},\n    {{{ -1053,   1271,  -2411}, 0, {  3476,   9012}, {0x71, 0xc8, 0xf8, 0xff}}},\n    {{{  -629,   1536,  -2425}, 0, {  2064,   9058}, {0x3e, 0x9e, 0x32, 0xff}}},\n    {{{ -1015,   1536,  -2225}, 0, {  3348,   8394}, {0x7d, 0x0c, 0x0b, 0xff}}},\n    {{{  -629,   1536,  -2630}, 0, {  2064,   9740}, {0x31, 0x92, 0xda, 0xff}}},\n};\n\n// 0x07009220 - 0x07009320\nstatic const Vtx sl_seg7_vertex_07009220[] = {\n    {{{ -1053,   1271,  -2411}, 0, {  3476,   9012}, {0x71, 0xc8, 0xf8, 0xff}}},\n    {{{ -1137,   1536,  -2814}, 0, {  3752,  10354}, {0x75, 0x04, 0xcf, 0xff}}},\n    {{{  -629,   1536,  -2630}, 0, {  2064,   9740}, {0x31, 0x92, 0xda, 0xff}}},\n    {{{   512,    512,  -2354}, 0, { -1734,   8824}, {0xdb, 0x79, 0x03, 0xff}}},\n    {{{  -511,    512,  -2175}, 0, {  1672,   8228}, {0x45, 0x69, 0xf5, 0xff}}},\n    {{{     0,    973,  -1279}, 0, {     0,   5246}, {0xfa, 0x74, 0xce, 0xff}}},\n    {{{     0,   1024,  -3071}, 0, {     0,  11208}, {0x11, 0x7b, 0x18, 0xff}}},\n    {{{ -1217,   1119,  -3205}, 0, {  4020,  11652}, {0x4e, 0x63, 0x05, 0xff}}},\n    {{{  -767,    973,  -1023}, 0, {  2524,   4394}, {0x2b, 0x71, 0xdd, 0xff}}},\n    {{{   768,   1024,  -1023}, 0, { -2586,   4394}, {0x8e, 0x2e, 0xe2, 0xff}}},\n    {{{   768,   1024,  -1023}, 0, {  3374,  -2416}, {0x8e, 0x2e, 0xe2, 0xff}}},\n    {{{  1008,   1126,  -2425}, 0, {  8038,  -2758}, {0x84, 0xec, 0xf5, 0xff}}},\n    {{{   512,    512,  -2354}, 0, {  7804,   -714}, {0xdb, 0x79, 0x03, 0xff}}},\n    {{{   256,    256,  -4607}, 0, {  -882,  16318}, {0xf5, 0x7e, 0xff, 0xff}}},\n    {{{  1024,   1024,  -3071}, 0, { -3436,  11208}, {0xa1, 0x4f, 0xe7, 0xff}}},\n    {{{ -1599,   1244,  -5055}, 0, {  5290,  17808}, {0x3f, 0x6b, 0xe8, 0xff}}},\n};\n\n// 0x07009320 - 0x07009410\nstatic const Vtx sl_seg7_vertex_07009320[] = {\n    {{{   768,   1024,  -1023}, 0, { -3436,  -2416}, {0x8e, 0x2e, 0xe2, 0xff}}},\n    {{{   768,   1331,  -1023}, 0, { -3436,  -3438}, {0x82, 0x00, 0xff, 0xff}}},\n    {{{   771,   1331,  -1252}, 0, { -4198,  -3438}, {0x85, 0xf0, 0xe9, 0xff}}},\n    {{{  1008,   1536,  -2015}, 0, { -6738,  -4120}, {0x88, 0xda, 0x07, 0xff}}},\n    {{{  1008,   1126,  -2425}, 0, { -8100,  -2758}, {0x84, 0xec, 0xf5, 0xff}}},\n    {{{  4438,   1178,  -3702}, 0, {-12348, -13774}, {0x9d, 0x1d, 0x49, 0xff}}},\n    {{{  4211,    760,  -2971}, 0, { -9918, -13018}, {0xce, 0x6b, 0x2d, 0xff}}},\n    {{{  5191,   1024,  -2866}, 0, { -9568, -16280}, {0xb6, 0x42, 0x4e, 0xff}}},\n    {{{  3584,   1075,  -4863}, 0, {-16212, -10934}, {0xb7, 0x61, 0x22, 0xff}}},\n    {{{  4608,   1434,  -3532}, 0, {-11784, -14340}, {0xcb, 0xdc, 0x6d, 0xff}}},\n    {{{  4301,   1434,  -3532}, 0, {-11784, -13318}, {0xa4, 0xb4, 0x29, 0xff}}},\n    {{{  4403,   1434,  -3737}, 0, {-12464, -13658}, {0x83, 0xf1, 0x0b, 0xff}}},\n    {{{  4438,   1178,  -3702}, 0, {  -312,  -2928}, {0x9d, 0x1d, 0x49, 0xff}}},\n    {{{  5191,   1024,  -2866}, 0, {  3424,  -2416}, {0xb6, 0x42, 0x4e, 0xff}}},\n    {{{  4608,   1434,  -3532}, 0, {   482,  -3780}, {0xcb, 0xdc, 0x6d, 0xff}}},\n};\n\n// 0x07009410 - 0x07009510\nstatic const Vtx sl_seg7_vertex_07009410[] = {\n    {{{  3584,   1075,  -4863}, 0, { -5102,  -2586}, {0xb7, 0x61, 0x22, 0xff}}},\n    {{{  4438,   1178,  -3702}, 0, {  -312,  -2928}, {0x9d, 0x1d, 0x49, 0xff}}},\n    {{{  4403,   1434,  -3737}, 0, {  -474,  -3780}, {0x83, 0xf1, 0x0b, 0xff}}},\n    {{{  4220,    754,  -1924}, 0, {-14070,   7392}, {0x57, 0x56, 0xdf, 0xff}}},\n    {{{  3328,   1536,  -1791}, 0, {-11102,   6950}, {0x4b, 0x63, 0xea, 0xff}}},\n    {{{  6144,   1024,  -1535}, 0, {-20470,   6098}, {0x12, 0x29, 0x8a, 0xff}}},\n    {{{  3246,   1306,  -2897}, 0, {  9608,  -3354}, {0x53, 0xe7, 0xa4, 0xff}}},\n    {{{  3811,   1329,  -2332}, 0, {  7730,  -3430}, {0x65, 0x46, 0xe6, 0xff}}},\n    {{{  3913,    754,  -2897}, 0, {  9608,  -1518}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{  4220,    754,  -1924}, 0, {  6372,  -1518}, {0x57, 0x56, 0xdf, 0xff}}},\n    {{{  4220,    754,  -2333}, 0, {  7734,  -1518}, {0x65, 0x48, 0xe6, 0xff}}},\n    {{{  3328,   1536,  -1791}, 0, {  5930,  -4120}, {0x4b, 0x63, 0xea, 0xff}}},\n    {{{  3551,   1651,  -2881}, 0, {  9554,  -4500}, {0x71, 0xcf, 0x1e, 0xff}}},\n    {{{  1536,   1024,  -4095}, 0, { -5140,  -2416}, {0xf5, 0x49, 0x99, 0xff}}},\n    {{{  3246,   1306,  -2897}, 0, {-10830,  -3354}, {0x53, 0xe7, 0xa4, 0xff}}},\n    {{{  3913,    754,  -2897}, 0, {-13048,  -1518}, {0x49, 0x49, 0xb7, 0xff}}},\n};\n\n// 0x07009510 - 0x07009600\nstatic const Vtx sl_seg7_vertex_07009510[] = {\n    {{{  3014,   1616,  -3129}, 0, {-10056,  -4388}, {0x18, 0xd6, 0x8b, 0xff}}},\n    {{{  3246,   1306,  -2897}, 0, {-10830,  -3354}, {0x53, 0xe7, 0xa4, 0xff}}},\n    {{{  1536,   1024,  -4095}, 0, { -5140,  -2416}, {0xf5, 0x49, 0x99, 0xff}}},\n    {{{  1536,   1536,  -4095}, 0, { -5140,  -4120}, {0xb4, 0x08, 0x9b, 0xff}}},\n    {{{  2816,   1024,  -4351}, 0, { -8718,  -4632}, {0xfb, 0x75, 0xd1, 0xff}}},\n    {{{  3584,   1075,  -4863}, 0, { -9740,  -6164}, {0xb7, 0x61, 0x22, 0xff}}},\n    {{{  2816,    819,  -4863}, 0, { -9740,  -4630}, {0x07, 0x7e, 0x00, 0xff}}},\n    {{{  2373,   1024,  -4607}, 0, { -9228,  -3746}, {0x28, 0x75, 0xe9, 0xff}}},\n    {{{  2816,   1024,  -5375}, 0, {-10762,  -4630}, {0x08, 0x7e, 0xfd, 0xff}}},\n    {{{  2373,   1024,  -5119}, 0, {-10250,  -3746}, {0x18, 0x73, 0x2e, 0xff}}},\n    {{{  1074,   1024,  -5944}, 0, {-11898,  -1154}, {0xa3, 0x3a, 0xc1, 0xff}}},\n    {{{  1115,   1229,  -5778}, 0, {-11566,  -1236}, {0x0d, 0x4d, 0x9d, 0xff}}},\n    {{{  1190,   1229,  -5480}, 0, {-10972,  -1384}, {0x10, 0x60, 0x51, 0xff}}},\n    {{{  1248,   1024,  -5249}, 0, {-10510,  -1500}, {0xbd, 0x3f, 0x56, 0xff}}},\n    {{{   693,   1331,  -5673}, 0, {-11356,   -394}, {0xb6, 0xc5, 0xad, 0xff}}},\n};\n\n// 0x07009600 - 0x070096F0\nstatic const Vtx sl_seg7_vertex_07009600[] = {\n    {{{   256,    256,  -4607}, 0, {  -882,  16318}, {0xf5, 0x7e, 0xff, 0xff}}},\n    {{{  1536,   1024,  -4095}, 0, { -5140,  14614}, {0xf5, 0x49, 0x99, 0xff}}},\n    {{{  1248,   1024,  -5249}, 0, { -4180,  18454}, {0xbd, 0x3f, 0x56, 0xff}}},\n    {{{  1024,   1024,  -3071}, 0, { -3436,  11208}, {0xa1, 0x4f, 0xe7, 0xff}}},\n    {{{  1074,   1024,  -5944}, 0, { -3602,  20768}, {0xa3, 0x3a, 0xc1, 0xff}}},\n    {{{ -1279,   1024,  -5631}, 0, {  4226,  19724}, {0x38, 0x71, 0x01, 0xff}}},\n    {{{ -1599,   1244,  -5055}, 0, {  5290,  17808}, {0x3f, 0x6b, 0xe8, 0xff}}},\n    {{{ -1185,   1024,  -6079}, 0, {  3912,  21216}, {0x1b, 0x76, 0x23, 0xff}}},\n    {{{  1024,   1024,  -6143}, 0, { -3436,  21428}, {0xdd, 0x73, 0x27, 0xff}}},\n    {{{  3716,   1613,  -3303}, 0, {-12392,  11980}, {0x23, 0xe8, 0x89, 0xff}}},\n    {{{  3746,   1511,  -3273}, 0, {-12492,  11880}, {0x3a, 0x9e, 0xca, 0xff}}},\n    {{{  3014,   1616,  -3129}, 0, {-10056,  11402}, {0x18, 0xd6, 0x8b, 0xff}}},\n    {{{  3246,   1306,  -2897}, 0, {-10830,  10628}, {0x53, 0xe7, 0xa4, 0xff}}},\n    {{{  3551,   1651,  -2881}, 0, {-11844,  10574}, {0x71, 0xcf, 0x1e, 0xff}}},\n    {{{  3818,   1613,  -3201}, 0, {-12732,  11640}, {0x6c, 0xc1, 0xee, 0xff}}},\n};\n\n// 0x070096F0 - 0x070097D0\nstatic const Vtx sl_seg7_vertex_070096F0[] = {\n    {{{  1248,   1024,  -5249}, 0, { -4180,  18454}, {0xbd, 0x3f, 0x56, 0xff}}},\n    {{{   768,   1331,  -5375}, 0, { -2586,  18874}, {0xff, 0xe1, 0x7b, 0xff}}},\n    {{{   743,   1229,  -5474}, 0, { -2502,  19204}, {0xc9, 0x92, 0x1c, 0xff}}},\n    {{{  3551,   1651,  -2881}, 0, { -5782,  -6098}, {0x71, 0xcf, 0x1e, 0xff}}},\n    {{{  3246,   1306,  -2897}, 0, { -5814,  -5490}, {0x53, 0xe7, 0xa4, 0xff}}},\n    {{{  3746,   1511,  -3273}, 0, { -6566,  -6486}, {0x3a, 0x9e, 0xca, 0xff}}},\n    {{{  3811,   1329,  -2332}, 0, { -4688,  -6616}, {0x65, 0x46, 0xe6, 0xff}}},\n    {{{  3818,   1613,  -3201}, 0, { 10620,  -4376}, {0x6c, 0xc1, 0xee, 0xff}}},\n    {{{  3746,   1511,  -3273}, 0, { 10860,  -4036}, {0x3a, 0x9e, 0xca, 0xff}}},\n    {{{  3716,   1613,  -3303}, 0, { 10960,  -4376}, {0x23, 0xe8, 0x89, 0xff}}},\n    {{{  1074,   1024,  -5944}, 0, { -3602,  20768}, {0xa3, 0x3a, 0xc1, 0xff}}},\n    {{{   693,   1331,  -5673}, 0, { -2338,  19864}, {0xb6, 0xc5, 0xad, 0xff}}},\n    {{{  1190,   1229,  -5480}, 0, { -3988,  19224}, {0x10, 0x60, 0x51, 0xff}}},\n    {{{   371,   1331,  -5276}, 0, { -1264,  18542}, {0xee, 0x86, 0x1b, 0xff}}},\n};\n\n// 0x070097D0 - 0x070098D0\nstatic const Vtx sl_seg7_vertex_070097D0[] = {\n    {{{ -3432,    768,    552}, 0, { 11390,   -848}, {0x2b, 0x76, 0x07, 0xff}}},\n    {{{ -1648,    768,    748}, 0, {  5452,  -1496}, {0xff, 0x7e, 0x0d, 0xff}}},\n    {{{ -2303,   1024,   -511}, 0, {  7634,   2692}, {0x14, 0x73, 0x31, 0xff}}},\n    {{{ -1801,    768,    952}, 0, {  5964,  -2178}, {0xdb, 0x6b, 0x39, 0xff}}},\n    {{{ -3439,    819,   1818}, 0, { 11412,  -5058}, {0x33, 0x65, 0xc9, 0xff}}},\n    {{{ -4035,    768,    445}, 0, { 13060,   -514}, {0xe3, 0x79, 0xeb, 0xff}}},\n    {{{ -3537,   1024,    255}, 0, { 11738,    142}, {0xf8, 0x6e, 0x3d, 0xff}}},\n    {{{  -403,    819,   1818}, 0, {  1310,  -5058}, {0xd8, 0x4c, 0xa4, 0xff}}},\n    {{{  -403,    819,   1818}, 0, {  1310,  -1736}, {0xd8, 0x4c, 0xa4, 0xff}}},\n    {{{ -3439,    819,   1818}, 0, { 11412,  -1736}, {0x33, 0x65, 0xc9, 0xff}}},\n    {{{ -3439,   1024,   1818}, 0, { 11412,  -2416}, {0x4c, 0x1f, 0xa0, 0xff}}},\n    {{{  -403,   1024,   1818}, 0, {  1310,  -2416}, {0xd7, 0x10, 0x76, 0xff}}},\n    {{{ -3439,   1024,   1818}, 0, { -6078,  -2416}, {0x4c, 0x1f, 0xa0, 0xff}}},\n    {{{ -3439,    819,   1818}, 0, { -6078,  -1736}, {0x33, 0x65, 0xc9, 0xff}}},\n    {{{ -3432,    768,    552}, 0, { -1868,  -1566}, {0x2b, 0x76, 0x07, 0xff}}},\n    {{{ -3668,   1024,    633}, 0, { -2136,  -2416}, {0x2f, 0x4a, 0xa6, 0xff}}},\n};\n\n// 0x070098D0 - 0x070099D0\nstatic const Vtx sl_seg7_vertex_070098D0[] = {\n    {{{ -3668,   1024,    633}, 0, {-12238,   3094}, {0x2f, 0x4a, 0xa6, 0xff}}},\n    {{{ -4035,    768,    445}, 0, {-13456,   2468}, {0xe3, 0x79, 0xeb, 0xff}}},\n    {{{ -4044,   1024,    572}, 0, {-13486,   2890}, {0x94, 0x1a, 0xc4, 0xff}}},\n    {{{ -3432,    768,    552}, 0, {-11452,   2826}, {0x2b, 0x76, 0x07, 0xff}}},\n    {{{ -3537,   1024,    255}, 0, { 11738,    142}, {0xf8, 0x6e, 0x3d, 0xff}}},\n    {{{ -3432,    768,    552}, 0, { 11390,   -848}, {0x2b, 0x76, 0x07, 0xff}}},\n    {{{ -2303,   1024,   -511}, 0, {  7634,   2692}, {0x14, 0x73, 0x31, 0xff}}},\n    {{{ -3537,   1024,    255}, 0, {-11800,   1836}, {0xf8, 0x6e, 0x3d, 0xff}}},\n    {{{ -3781,   1024,   -511}, 0, {-12612,   -714}, {0xe6, 0x79, 0x19, 0xff}}},\n    {{{ -6143,   1028,   -460}, 0, {-20470,   -544}, {0x51, 0x5a, 0x23, 0xff}}},\n    {{{ -6143,   1028,   -460}, 0, {-20470,   -542}, {0x51, 0x5a, 0x23, 0xff}}},\n    {{{ -4201,    819,   2833}, 0, {-14008,  10412}, {0xcd, 0x72, 0x12, 0xff}}},\n    {{{ -4044,   1024,    572}, 0, {  1894,  -2416}, {0x94, 0x1a, 0xc4, 0xff}}},\n    {{{ -4201,    819,   2833}, 0, {  9418,  -1736}, {0xcd, 0x72, 0x12, 0xff}}},\n    {{{ -4186,   1024,   2629}, 0, {  8736,  -2416}, {0xc6, 0x51, 0x4d, 0xff}}},\n    {{{ -4035,    768,    445}, 0, {  1472,  -1566}, {0xe3, 0x79, 0xeb, 0xff}}},\n};\n\n// 0x070099D0 - 0x07009AB0\nstatic const Vtx sl_seg7_vertex_070099D0[] = {\n    {{{ -4201,    819,   2833}, 0, {-14008,  10412}, {0xcd, 0x72, 0x12, 0xff}}},\n    {{{ -6143,   1028,   -460}, 0, {-20470,   -544}, {0x51, 0x5a, 0x23, 0xff}}},\n    {{{ -6143,    768,   1024}, 0, {-20470,   4394}, {0x55, 0x5d, 0x08, 0xff}}},\n    {{{ -6143,    768,   4096}, 0, {-20470,  14614}, {0x1d, 0x7b, 0x03, 0xff}}},\n    {{{ -3756,    819,   2842}, 0, {-12528,  10444}, {0x14, 0x74, 0x2d, 0xff}}},\n    {{{ -3634,    768,   4096}, 0, {-12124,  14614}, {0xcb, 0x5b, 0xbb, 0xff}}},\n    {{{ -2195,    817,   3060}, 0, { -7336,  11168}, {0xe4, 0x70, 0xce, 0xff}}},\n    {{{ -3551,    819,   2330}, 0, {-11846,   8740}, {0x33, 0x64, 0x39, 0xff}}},\n    {{{  -511,    819,   2816}, 0, { -1734,  10356}, {0xce, 0x48, 0xa5, 0xff}}},\n    {{{    90,    819,   2330}, 0, {   268,   8740}, {0xd2, 0x4a, 0x5b, 0xff}}},\n    {{{ -3551,   1024,   2330}, 0, { 11784,  -2416}, {0x27, 0x00, 0x78, 0xff}}},\n    {{{ -3551,    819,   2330}, 0, { 11784,  -1736}, {0x33, 0x64, 0x39, 0xff}}},\n    {{{    90,    819,   2330}, 0, {  -330,  -1736}, {0xd2, 0x4a, 0x5b, 0xff}}},\n    {{{    90,   1024,   2330}, 0, {  -330,  -2416}, {0xbf, 0x36, 0xa2, 0xff}}},\n};\n\n// 0x07009AB0 - 0x07009B60\nstatic const Vtx sl_seg7_vertex_07009AB0[] = {\n    {{{ -6143,   1382,   4096}, 0, {-13656,   1500}, {0x7a, 0x22, 0x05, 0xff}}},\n    {{{ -6143,    768,   4096}, 0, {-13656,   3542}, {0x1d, 0x7b, 0x03, 0xff}}},\n    {{{ -6143,    768,   1024}, 0, { -3436,   3542}, {0x55, 0x5d, 0x08, 0xff}}},\n    {{{ -6143,   1028,   -460}, 0, {  1500,   2678}, {0x51, 0x5a, 0x23, 0xff}}},\n    {{{ -6143,   1946,   -460}, 0, {  1500,   -372}, {0x74, 0x00, 0x33, 0xff}}},\n    {{{ -5247,   2048,  -1279}, 0, {  4226,   -714}, {0x55, 0x00, 0x5d, 0xff}}},\n    {{{  1008,   1126,  -2425}, 0, { -3384,   9058}, {0x84, 0xec, 0xf5, 0xff}}},\n    {{{   394,   1536,  -2630}, 0, { -1340,   9740}, {0xca, 0x98, 0xd1, 0xff}}},\n    {{{  1008,   1536,  -2834}, 0, { -3384,  10420}, {0x92, 0xe4, 0xc8, 0xff}}},\n    {{{   394,   1536,  -2425}, 0, { -1340,   9058}, {0xbe, 0x9d, 0x2b, 0xff}}},\n    {{{  1008,   1536,  -2015}, 0, { -3384,   7696}, {0x88, 0xda, 0x07, 0xff}}},\n};\n\n// 0x07009B60 - 0x07009BA0\nstatic const Vtx sl_seg7_vertex_07009B60[] = {\n    {{{   875,   1536,   2626}, 0, {  1580,      0}, {0xb4, 0x3d, 0xb0, 0xff}}},\n    {{{   875,   1536,   1571}, 0, {  -524,      0}, {0xf3, 0x1d, 0x7a, 0xff}}},\n    {{{   875,   1024,   1818}, 0, {     0,    990}, {0x8f, 0x18, 0x33, 0xff}}},\n    {{{   875,   1024,   2330}, 0, {   990,    990}, {0xa7, 0x2c, 0xb3, 0xff}}},\n};\n\n// 0x07009BA0 - 0x07009CA0\nstatic const Vtx sl_seg7_vertex_07009BA0[] = {\n    {{{ -3634,    768,   4096}, 0, {  1782,    606}, {0xcb, 0x5b, 0xbb, 0xff}}},\n    {{{ -3634,   1382,   4096}, 0, {  1782,    300}, {0x07, 0x61, 0xaf, 0xff}}},\n    {{{ -2195,    817,   3060}, 0, {  1064,    582}, {0xe4, 0x70, 0xce, 0xff}}},\n    {{{   875,   1536,   2626}, 0, {  -872,   2298}, {0xb4, 0x3d, 0xb0, 0xff}}},\n    {{{  -511,   1311,   2816}, 0, { -1564,   2394}, {0xd8, 0x36, 0x95, 0xff}}},\n    {{{ -1479,   2214,   3942}, 0, { -2046,   2956}, {0xc3, 0x5d, 0xc5, 0xff}}},\n    {{{    90,   1024,   2330}, 0, { -1262,   2150}, {0xbf, 0x36, 0xa2, 0xff}}},\n    {{{   875,   1024,   2330}, 0, {  -872,   2150}, {0xa7, 0x2c, 0xb3, 0xff}}},\n    {{{  1418,   1741,   2366}, 0, {  -600,   2168}, {0x0c, 0x7e, 0xfe, 0xff}}},\n    {{{ -2195,    817,   3060}, 0, { -2404,   2516}, {0xe4, 0x70, 0xce, 0xff}}},\n    {{{  -511,    819,   2816}, 0, {   224,    582}, {0xce, 0x48, 0xa5, 0xff}}},\n    {{{  -511,   1311,   2816}, 0, {   224,    336}, {0xd8, 0x36, 0x95, 0xff}}},\n    {{{    90,   1024,   2330}, 0, {   -74,    478}, {0xbf, 0x36, 0xa2, 0xff}}},\n    {{{    90,    819,   2330}, 0, {   -74,    582}, {0xd2, 0x4a, 0x5b, 0xff}}},\n    {{{ -2366,   1021,   4425}, 0, { -2488,   3196}, {0xe8, 0x7a, 0xeb, 0xff}}},\n    {{{ -3634,   1382,   4096}, 0, { -3122,   3032}, {0x07, 0x61, 0xaf, 0xff}}},\n};\n\n// 0x07009CA0 - 0x07009DA0\nstatic const Vtx sl_seg7_vertex_07009CA0[] = {\n    {{{  1418,   1741,   2366}, 0, {  -600,   2168}, {0x0c, 0x7e, 0xfe, 0xff}}},\n    {{{ -1479,   2214,   3942}, 0, { -2046,   2956}, {0xc3, 0x5d, 0xc5, 0xff}}},\n    {{{ -1277,   1741,   7168}, 0, { -1946,   4566}, {0x0f, 0x7d, 0x0f, 0xff}}},\n    {{{ -2366,   1021,   4425}, 0, { -2488,   3196}, {0xe8, 0x7a, 0xeb, 0xff}}},\n    {{{ -3327,   2099,   7168}, 0, { -2968,   4566}, {0xfc, 0x7c, 0xe8, 0xff}}},\n    {{{ -3611,   2099,   4329}, 0, { -3110,   3148}, {0xa7, 0x48, 0xcc, 0xff}}},\n    {{{ -3941,   1382,   4710}, 0, { -3274,   3338}, {0x97, 0x45, 0xf4, 0xff}}},\n    {{{ -4351,   1024,   6144}, 0, { -3480,   4054}, {0xd2, 0x76, 0x00, 0xff}}},\n    {{{ -3634,   1382,   4096}, 0, { -1154,   2624}, {0x07, 0x61, 0xaf, 0xff}}},\n    {{{ -3327,   2099,   7168}, 0, {  -786,   3850}, {0xfc, 0x7c, 0xe8, 0xff}}},\n    {{{ -2366,   1021,   4425}, 0, {  -622,   2754}, {0xe8, 0x7a, 0xeb, 0xff}}},\n    {{{  -511,   1024,   6656}, 0, { -3276,   -332}, {0x67, 0x34, 0x33, 0xff}}},\n    {{{  1418,   1741,   2366}, 0, { -1178,   -166}, {0x0c, 0x7e, 0xfe, 0xff}}},\n    {{{ -1277,   1741,   7168}, 0, { -3432,   -730}, {0x0f, 0x7d, 0x0f, 0xff}}},\n    {{{  1536,   1024,   2560}, 0, { -1352,    148}, {0x52, 0x56, 0x29, 0xff}}},\n    {{{  1418,   1229,   2366}, 0, { -1238,     74}, {0x74, 0x1f, 0x29, 0xff}}},\n};\n\n// 0x07009DA0 - 0x07009E80\nstatic const Vtx sl_seg7_vertex_07009DA0[] = {\n    {{{  1534,   1741,   1678}, 0, {  -854,    -84}, {0x20, 0x79, 0x10, 0xff}}},\n    {{{  1418,   1741,   2366}, 0, { -1178,   -166}, {0x0c, 0x7e, 0xfe, 0xff}}},\n    {{{  1418,   1229,   2366}, 0, { -1238,     74}, {0x74, 0x1f, 0x29, 0xff}}},\n    {{{ -3634,   1382,   4096}, 0, { -2032,   -200}, {0x07, 0x61, 0xaf, 0xff}}},\n    {{{ -3611,   2099,   4329}, 0, { -2058,   -564}, {0xa7, 0x48, 0xcc, 0xff}}},\n    {{{ -3327,   2099,   7168}, 0, { -3390,   -898}, {0xfc, 0x7c, 0xe8, 0xff}}},\n    {{{ -3611,   2099,   4329}, 0, { -3110,   3148}, {0xa7, 0x48, 0xcc, 0xff}}},\n    {{{ -3634,   1382,   4096}, 0, { -3122,   3032}, {0x07, 0x61, 0xaf, 0xff}}},\n    {{{ -3941,   1382,   4710}, 0, { -3274,   3338}, {0x97, 0x45, 0xf4, 0xff}}},\n    {{{  -767,   4352,    768}, 0, {  1502,  -7698}, {0x26, 0x78, 0x0c, 0xff}}},\n    {{{  -670,   4352,    477}, 0, {   920,  -7698}, {0x05, 0x5f, 0x53, 0xff}}},\n    {{{  -511,   4864,      0}, 0, {     0,  -8720}, {0x2d, 0x48, 0x5d, 0xff}}},\n    {{{ -4351,   1024,   5632}, 0, { -3480,   3798}, {0xd4, 0x76, 0x00, 0xff}}},\n    {{{ -4351,   1024,   6144}, 0, { -3480,   4054}, {0xd2, 0x76, 0x00, 0xff}}},\n};\n\n// 0x07009E80 - 0x07009F30\nstatic const Vtx sl_seg7_vertex_07009E80[] = {\n    {{{     0,   4864,    512}, 0, {     0,   2010}, {0xae, 0x39, 0x4d, 0xff}}},\n    {{{  -511,   4864,      0}, 0, { -1052,    990}, {0x2d, 0x48, 0x5d, 0xff}}},\n    {{{  -670,   4352,    477}, 0, { -1370,   1940}, {0x05, 0x5f, 0x53, 0xff}}},\n    {{{   -87,   4352,    671}, 0, {  -206,   2328}, {0xcd, 0x6a, 0x2e, 0xff}}},\n    {{{   -24,   4352,    925}, 0, {   -80,   2834}, {0xe5, 0x7b, 0x06, 0xff}}},\n    {{{     0,   4352,   1024}, 0, {     0,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   768,   4352,    768}, 0, {  1502,   2522}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{   623,   4352,    623}, 0, {  1212,   2232}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  1024,   4351,      0}, 0, {  2012,    990}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  -767,   4352,    768}, 0, { -1564,   2522}, {0x26, 0x78, 0x0c, 0xff}}},\n    {{{   -24,   4352,    925}, 0, {  -118,   2680}, {0xe5, 0x7b, 0x06, 0xff}}},\n};\n\n// 0x07009F30 - 0x07009FE0\nstatic const Gfx sl_seg7_dl_07009F30[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&sl_seg7_lights_07008DE8.l, 1),\n    gsSPLight(&sl_seg7_lights_07008DE8.a, 2),\n    gsSPVertex(sl_seg7_vertex_07008E00, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  6,  1,  5, 0x0),\n    gsSP2Triangles( 6,  2,  1, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 4,  8,  7, 0x0,  8,  9,  7, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(14, 12, 15, 0x0, 12, 14, 13, 0x0),\n    gsSPVertex(sl_seg7_vertex_07008F00, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009FE0 - 0x0700A058\nstatic const Gfx sl_seg7_dl_07009FE0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09006000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(sl_seg7_vertex_07008F40, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  4,  3, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles( 9,  0, 11, 0x0,  9,  1,  0, 0x0),\n    gsSP2Triangles(11,  0, 12, 0x0,  1, 13,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A058 - 0x0700A418\nstatic const Gfx sl_seg7_dl_0700A058[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(sl_seg7_vertex_07009020, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  4,  3,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(sl_seg7_vertex_07009120, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  2,  5,  6, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  9,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(sl_seg7_vertex_07009220, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 4,  8,  5, 0x0,  3,  5,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13,  6, 14, 0x0),\n    gsSP2Triangles(15,  6, 13, 0x0,  6,  3, 14, 0x0),\n    gsSPVertex(sl_seg7_vertex_07009320, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  6,  5, 0x0,  5,  9, 10, 0x0),\n    gsSP2Triangles( 5, 10, 11, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(sl_seg7_vertex_07009410, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10,  7, 0x0),\n    gsSP2Triangles(10,  8,  7, 0x0,  9,  7, 11, 0x0),\n    gsSP2Triangles(11,  7, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(sl_seg7_vertex_07009510, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  9,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9,  6, 0x0, 10, 11,  8, 0x0),\n    gsSP2Triangles(12, 13,  9, 0x0, 11, 10, 14, 0x0),\n    gsSPVertex(sl_seg7_vertex_07009600, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  5,  6,  0, 0x0),\n    gsSP2Triangles( 7,  5,  0, 0x0,  7,  0,  8, 0x0),\n    gsSP2Triangles( 0,  4,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 11, 10, 0x0, 13, 10, 14, 0x0),\n    gsSPVertex(sl_seg7_vertex_070096F0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  4,  3, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  2, 11, 0x0, 10,  0,  2, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0,  2,  1, 13, 0x0),\n    gsSP1Triangle(11,  2, 13, 0x0),\n    gsSPVertex(sl_seg7_vertex_070097D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  5,  0,  6, 0x0),\n    gsSP2Triangles( 4,  7,  3, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 14, 15, 0x0),\n    gsSPVertex(sl_seg7_vertex_070098D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  1, 0x0),\n    gsSP2Triangles( 9,  1,  8, 0x0, 10, 11,  1, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(sl_seg7_vertex_070099D0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  0,  3, 0x0,  3,  5,  6, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(10, 12, 13, 0x0),\n    gsSPVertex(sl_seg7_vertex_07009AB0, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6, 10, 0x0),\n    gsSP1Triangle( 6,  9,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A418 - 0x0700A450\nstatic const Gfx sl_seg7_dl_0700A418[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sl_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(sl_seg7_vertex_07009B60, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A450 - 0x0700A5A0\nstatic const Gfx sl_seg7_dl_0700A450[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sl_seg7_texture_07002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(sl_seg7_vertex_07009BA0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  6,  3, 0x0),\n    gsSP2Triangles( 8,  3,  5, 0x0,  9,  5,  4, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 13, 10, 0x0),\n    gsSP2Triangles( 2, 11, 10, 0x0,  9, 14,  5, 0x0),\n    gsSP1Triangle( 9, 15, 14, 0x0),\n    gsSPVertex(sl_seg7_vertex_07009CA0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  2,  3, 0x0,  5,  6,  4, 0x0),\n    gsSP2Triangles( 7,  4,  6, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 14, 15, 0x0),\n    gsSP1Triangle(15, 12, 11, 0x0),\n    gsSPVertex(sl_seg7_vertex_07009DA0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13,  8, 0x0),\n    gsSPVertex(sl_seg7_vertex_07009E80, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  4,  5,  6, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  7,  6,  8, 0x0),\n    gsSP2Triangles( 9,  3,  2, 0x0,  9, 10,  3, 0x0),\n    gsSP1Triangle( 9,  5, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A5A0 - 0x0700A620\nconst Gfx sl_seg7_dl_0700A5A0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(sl_seg7_dl_07009F30),\n    gsSPDisplayList(sl_seg7_dl_07009FE0),\n    gsSPDisplayList(sl_seg7_dl_0700A058),\n    gsSPDisplayList(sl_seg7_dl_0700A418),\n    gsSPDisplayList(sl_seg7_dl_0700A450),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/sl/areas/1/collision.inc.c",
    "content": "// 0x0700CBD8 - 0x0700ED92\nconst Collision sl_seg7_area_1_collision[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x202),\n    COL_VERTEX(4786, 1229, 5078),\n    COL_VERTEX(4582, 1229, 5078),\n    COL_VERTEX(4582, 1229, 4873),\n    COL_VERTEX(4786, 1229, 4873),\n    COL_VERTEX(4582, 1229, 4666),\n    COL_VERTEX(4786, 1229, 4054),\n    COL_VERTEX(4786, 1229, 4668),\n    COL_VERTEX(4582, 1229, 4054),\n    COL_VERTEX(4274, 1434, 4259),\n    COL_VERTEX(4070, 1434, 4259),\n    COL_VERTEX(4070, 1434, 4054),\n    COL_VERTEX(4274, 1434, 4054),\n    COL_VERTEX(4377, 1434, 5078),\n    COL_VERTEX(4377, 1434, 4668),\n    COL_VERTEX(4582, 1434, 4873),\n    COL_VERTEX(4582, 1434, 5078),\n    COL_VERTEX(3967, 1434, 4873),\n    COL_VERTEX(1725, 3328, 260),\n    COL_VERTEX(1753, 3174, 78),\n    COL_VERTEX(1753, 3072, 78),\n    COL_VERTEX(63, 3226, 1704),\n    COL_VERTEX(-327, 3564, 1450),\n    COL_VERTEX(365, 3308, 2052),\n    COL_VERTEX(-440, 3360, 1636),\n    COL_VERTEX(63, 3328, 1704),\n    COL_VERTEX(365, 3328, 2052),\n    COL_VERTEX(2037, 3174, 278),\n    COL_VERTEX(2037, 3072, 278),\n    COL_VERTEX(768, 1249, -5375),\n    COL_VERTEX(-522, 1352, -5052),\n    COL_VERTEX(-200, 1352, -3761),\n    COL_VERTEX(1091, 1352, -4084),\n    COL_VERTEX(-587, 3564, 1793),\n    COL_VERTEX(-589, 3584, 1792),\n    COL_VERTEX(-608, 3564, 1786),\n    COL_VERTEX(-327, 3584, 1450),\n    COL_VERTEX(0, 3584, 1024),\n    COL_VERTEX(-156, 3584, 1228),\n    COL_VERTEX(-703, 3584, 1173),\n    COL_VERTEX(-346, 3840, 1124),\n    COL_VERTEX(-703, 3738, 1173),\n    COL_VERTEX(-243, 3308, 2011),\n    COL_VERTEX(-243, 3226, 2011),\n    COL_VERTEX(-243, 3328, 2011),\n    COL_VERTEX(66, 3308, 2176),\n    COL_VERTEX(1195, 2210, 384),\n    COL_VERTEX(1323, 2185, 469),\n    COL_VERTEX(1408, 2185, 341),\n    COL_VERTEX(1408, 2364, -170),\n    COL_VERTEX(1763, 2534, -560),\n    COL_VERTEX(1408, 2338, -170),\n    COL_VERTEX(1635, 2304, -646),\n    COL_VERTEX(1280, 2108, -255),\n    COL_VERTEX(1848, 2560, -688),\n    COL_VERTEX(1848, 2534, -688),\n    COL_VERTEX(-3634, 1382, 4096),\n    COL_VERTEX(-3634, 768, 4096),\n    COL_VERTEX(4378, 307, 1062),\n    COL_VERTEX(1919, 2108, 682),\n    COL_VERTEX(1308, 2108, 1473),\n    COL_VERTEX(1280, 1400, 256),\n    COL_VERTEX(1895, 3174, -132),\n    COL_VERTEX(1453, 2970, -444),\n    COL_VERTEX(1280, 3072, -255),\n    COL_VERTEX(1195, 2108, 384),\n    COL_VERTEX(1919, 1903, 682),\n    COL_VERTEX(-4044, 1024, 572),\n    COL_VERTEX(-3756, 1024, 2637),\n    COL_VERTEX(-403, 819, 1818),\n    COL_VERTEX(-3439, 1024, 1818),\n    COL_VERTEX(-3551, 1024, 2330),\n    COL_VERTEX(875, 1024, 2330),\n    COL_VERTEX(875, 1536, 2626),\n    COL_VERTEX(504, 2253, 1426),\n    COL_VERTEX(405, 2253, 1450),\n    COL_VERTEX(499, 2324, 1427),\n    COL_VERTEX(389, 2273, 1275),\n    COL_VERTEX(396, 2288, 1304),\n    COL_VERTEX(388, 2275, 1306),\n    COL_VERTEX(371, 2253, 1310),\n    COL_VERTEX(371, 2150, 1310),\n    COL_VERTEX(471, 2253, 1286),\n    COL_VERTEX(488, 2324, 1250),\n    COL_VERTEX(525, 2324, 1273),\n    COL_VERTEX(636, 2273, 1425),\n    COL_VERTEX(537, 2324, 1449),\n    COL_VERTEX(644, 2273, 1392),\n    COL_VERTEX(636, 2253, 1425),\n    COL_VERTEX(636, 2150, 1425),\n    COL_VERTEX(662, 2150, 1314),\n    COL_VERTEX(662, 2253, 1314),\n    COL_VERTEX(588, 2150, 1226),\n    COL_VERTEX(588, 2253, 1226),\n    COL_VERTEX(476, 2150, 1201),\n    COL_VERTEX(476, 2253, 1201),\n    COL_VERTEX(588, 2273, 1226),\n    COL_VERTEX(610, 2273, 1252),\n    COL_VERTEX(389, 2253, 1275),\n    COL_VERTEX(389, 2150, 1275),\n    COL_VERTEX(549, 2253, 1499),\n    COL_VERTEX(549, 2150, 1499),\n    COL_VERTEX(437, 2273, 1474),\n    COL_VERTEX(422, 2275, 1445),\n    COL_VERTEX(437, 2253, 1474),\n    COL_VERTEX(437, 2150, 1474),\n    COL_VERTEX(4172, 1434, 4668),\n    COL_VERTEX(4172, 1434, 4873),\n    COL_VERTEX(3967, 1434, 4668),\n    COL_VERTEX(4786, 1434, 4668),\n    COL_VERTEX(4786, 1434, 4873),\n    COL_VERTEX(1725, 3226, 260),\n    COL_VERTEX(365, 3226, 2052),\n    COL_VERTEX(66, 3226, 2176),\n    COL_VERTEX(63, 3308, 1704),\n    COL_VERTEX(2027, 3226, 608),\n    COL_VERTEX(2027, 3328, 608),\n    COL_VERTEX(1895, 3072, -132),\n    COL_VERTEX(-522, 1249, -5052),\n    COL_VERTEX(768, 1352, -5375),\n    COL_VERTEX(-200, 1249, -3761),\n    COL_VERTEX(1091, 1249, -4084),\n    COL_VERTEX(-602, 3584, 1808),\n    COL_VERTEX(-767, 3584, 768),\n    COL_VERTEX(-3, 3564, 1029),\n    COL_VERTEX(0, 3840, 1024),\n    COL_VERTEX(-769, 3564, 774),\n    COL_VERTEX(-156, 3840, 1228),\n    COL_VERTEX(-767, 3738, 768),\n    COL_VERTEX(-589, 3738, 1043),\n    COL_VERTEX(-589, 3584, 1043),\n    COL_VERTEX(66, 3328, 2176),\n    COL_VERTEX(1195, 2185, 384),\n    COL_VERTEX(1323, 2210, 469),\n    COL_VERTEX(1408, 2210, 341),\n    COL_VERTEX(1280, 2108, 256),\n    COL_VERTEX(1763, 2560, -560),\n    COL_VERTEX(1740, 2534, -760),\n    COL_VERTEX(1740, 2466, -760),\n    COL_VERTEX(1740, 2560, -760),\n    COL_VERTEX(-6143, 1382, 4096),\n    COL_VERTEX(-6143, 768, 4096),\n    COL_VERTEX(4582, 307, 1267),\n    COL_VERTEX(4582, 307, 1062),\n    COL_VERTEX(4378, 307, 1267),\n    COL_VERTEX(1308, 1741, 1473),\n    COL_VERTEX(2175, 1024, 852),\n    COL_VERTEX(1408, 2108, 341),\n    COL_VERTEX(1453, 3072, -444),\n    COL_VERTEX(1323, 2108, 469),\n    COL_VERTEX(2175, 1903, 852),\n    COL_VERTEX(-4035, 768, 445),\n    COL_VERTEX(-4201, 819, 2833),\n    COL_VERTEX(-4186, 1024, 2629),\n    COL_VERTEX(-3551, 819, 2330),\n    COL_VERTEX(-3439, 819, 1818),\n    COL_VERTEX(-403, 1024, 1818),\n    COL_VERTEX(-3432, 768, 552),\n    COL_VERTEX(90, 819, 2330),\n    COL_VERTEX(90, 1024, 2330),\n    COL_VERTEX(875, 1024, 1818),\n    COL_VERTEX(875, 1536, 1571),\n    COL_VERTEX(504, 2150, 1426),\n    COL_VERTEX(405, 2150, 1450),\n    COL_VERTEX(529, 2331, 1419),\n    COL_VERTEX(430, 2288, 1444),\n    COL_VERTEX(466, 2324, 1287),\n    COL_VERTEX(495, 2331, 1280),\n    COL_VERTEX(471, 2150, 1286),\n    COL_VERTEX(476, 2273, 1201),\n    COL_VERTEX(629, 2289, 1395),\n    COL_VERTEX(559, 2324, 1412),\n    COL_VERTEX(549, 2273, 1499),\n    COL_VERTEX(644, 2253, 1392),\n    COL_VERTEX(644, 2150, 1392),\n    COL_VERTEX(610, 2150, 1252),\n    COL_VERTEX(610, 2253, 1252),\n    COL_VERTEX(595, 2289, 1256),\n    COL_VERTEX(430, 2289, 1444),\n    COL_VERTEX(-72, 2852, 1244),\n    COL_VERTEX(-840, 2816, 988),\n    COL_VERTEX(-511, 3328, 512),\n    COL_VERTEX(-840, 1823, 988),\n    COL_VERTEX(-1279, 2816, 256),\n    COL_VERTEX(1280, 1022, -255),\n    COL_VERTEX(2687, 1024, 340),\n    COL_VERTEX(768, 1331, -1023),\n    COL_VERTEX(768, 2108, -1023),\n    COL_VERTEX(623, 4352, 623),\n    COL_VERTEX(0, 4864, 512),\n    COL_VERTEX(512, 4864, 0),\n    COL_VERTEX(768, 4352, -767),\n    COL_VERTEX(0, 4864, -511),\n    COL_VERTEX(-767, 973, -1023),\n    COL_VERTEX(1280, 2816, 256),\n    COL_VERTEX(1280, 2364, -255),\n    COL_VERTEX(1635, 2560, -646),\n    COL_VERTEX(1635, 2816, -646),\n    COL_VERTEX(768, 3328, 0),\n    COL_VERTEX(1379, 2304, -1030),\n    COL_VERTEX(1379, 2816, -1030),\n    COL_VERTEX(-1279, 1656, -255),\n    COL_VERTEX(-1279, 2816, -255),\n    COL_VERTEX(0, 2816, -1279),\n    COL_VERTEX(-767, 2816, -1023),\n    COL_VERTEX(0, 3328, -767),\n    COL_VERTEX(-767, 3328, 0),\n    COL_VERTEX(512, 3328, -511),\n    COL_VERTEX(768, 4352, 768),\n    COL_VERTEX(1024, 3585, 0),\n    COL_VERTEX(768, 3584, -767),\n    COL_VERTEX(-1648, 768, 748),\n    COL_VERTEX(-1033, 1823, 1428),\n    COL_VERTEX(0, 3584, -1023),\n    COL_VERTEX(768, 3072, -1023),\n    COL_VERTEX(-767, 4352, -767),\n    COL_VERTEX(-511, 4864, 0),\n    COL_VERTEX(1333, 3072, -683),\n    COL_VERTEX(1195, 3072, -383),\n    COL_VERTEX(768, 2816, 1024),\n    COL_VERTEX(512, 3328, 512),\n    COL_VERTEX(0, 3328, 768),\n    COL_VERTEX(768, 3584, 768),\n    COL_VERTEX(0, 4352, 1024),\n    COL_VERTEX(-1023, 4352, 0),\n    COL_VERTEX(-767, 4352, 768),\n    COL_VERTEX(-2303, 1024, -511),\n    COL_VERTEX(-3668, 1024, 633),\n    COL_VERTEX(3328, 1536, -1791),\n    COL_VERTEX(771, 1331, -1252),\n    COL_VERTEX(4378, 819, 1267),\n    COL_VERTEX(1008, 1536, -2834),\n    COL_VERTEX(6144, 1024, -1535),\n    COL_VERTEX(-1137, 1536, -2814),\n    COL_VERTEX(-1015, 1536, -2225),\n    COL_VERTEX(-808, 986, -1223),\n    COL_VERTEX(394, 1536, -2630),\n    COL_VERTEX(0, 1024, -3071),\n    COL_VERTEX(-1599, 1244, -5055),\n    COL_VERTEX(-1217, 1119, -3205),\n    COL_VERTEX(-5688, 2048, -6079),\n    COL_VERTEX(-5688, 1024, -7264),\n    COL_VERTEX(-5688, 1024, -6079),\n    COL_VERTEX(7168, 2458, -8191),\n    COL_VERTEX(6144, 1024, -6143),\n    COL_VERTEX(3584, 1075, -4863),\n    COL_VERTEX(7168, 2458, 8192),\n    COL_VERTEX(1024, 1024, -6143),\n    COL_VERTEX(-1279, 1024, -5631),\n    COL_VERTEX(-5247, 2048, -1279),\n    COL_VERTEX(-4965, 1024, -2303),\n    COL_VERTEX(-7167, 2048, -7167),\n    COL_VERTEX(-7167, 2048, -1279),\n    COL_VERTEX(2330, 819, 1779),\n    COL_VERTEX(-511, 1024, 6656),\n    COL_VERTEX(1536, 1024, 2560),\n    COL_VERTEX(6144, 1024, 6144),\n    COL_VERTEX(5172, 1024, 2581),\n    COL_VERTEX(3762, 1024, 3849),\n    COL_VERTEX(4403, 1434, -3737),\n    COL_VERTEX(5325, 1075, -4991),\n    COL_VERTEX(4608, 1434, -3532),\n    COL_VERTEX(2373, 1024, -5119),\n    COL_VERTEX(2816, 1024, -5375),\n    COL_VERTEX(1115, 1229, -5778),\n    COL_VERTEX(768, 1331, -5375),\n    COL_VERTEX(3551, 1651, -2881),\n    COL_VERTEX(-6143, 1946, -460),\n    COL_VERTEX(-7167, 1382, 7168),\n    COL_VERTEX(-4351, 1024, 6144),\n    COL_VERTEX(-3781, 1024, -511),\n    COL_VERTEX(-3941, 1382, 4710),\n    COL_VERTEX(-5887, 1024, 5632),\n    COL_VERTEX(5632, 1024, 1280),\n    COL_VERTEX(5401, 1024, 5487),\n    COL_VERTEX(4582, 819, 1062),\n    COL_VERTEX(4378, 819, 1062),\n    COL_VERTEX(5120, 1024, 512),\n    COL_VERTEX(-72, 2150, 1244),\n    COL_VERTEX(-87, 4352, 671),\n    COL_VERTEX(-24, 4352, 925),\n    COL_VERTEX(1024, 4351, 0),\n    COL_VERTEX(0, 4352, -1023),\n    COL_VERTEX(1990, 2816, -1036),\n    COL_VERTEX(0, 973, -1279),\n    COL_VERTEX(768, 1024, -1023),\n    COL_VERTEX(-2223, 1024, -1319),\n    COL_VERTEX(-767, 3584, -767),\n    COL_VERTEX(-1023, 3584, 0),\n    COL_VERTEX(995, 2816, 683),\n    COL_VERTEX(995, 2108, 683),\n    COL_VERTEX(1280, 2210, 256),\n    COL_VERTEX(-511, 3328, -511),\n    COL_VERTEX(-1801, 768, 952),\n    COL_VERTEX(0, 2150, 1818),\n    COL_VERTEX(1493, 2816, -859),\n    COL_VERTEX(1379, 2816, -1029),\n    COL_VERTEX(-670, 4352, 477),\n    COL_VERTEX(1008, 1536, -2015),\n    COL_VERTEX(1536, 1536, -4095),\n    COL_VERTEX(3014, 1616, -3129),\n    COL_VERTEX(-629, 1536, -2425),\n    COL_VERTEX(-629, 1536, -2630),\n    COL_VERTEX(394, 1536, -2425),\n    COL_VERTEX(-5688, 3927, -8191),\n    COL_VERTEX(-1185, 1024, -6079),\n    COL_VERTEX(5191, 1024, -2866),\n    COL_VERTEX(1074, 1024, -5944),\n    COL_VERTEX(4915, 1434, -4044),\n    COL_VERTEX(-8191, 2970, -8191),\n    COL_VERTEX(-8191, 2970, 8192),\n    COL_VERTEX(-6143, 1028, -460),\n    COL_VERTEX(1418, 1229, 2366),\n    COL_VERTEX(4582, 819, 1267),\n    COL_VERTEX(5401, 1024, 3849),\n    COL_VERTEX(3762, 1024, 5487),\n    COL_VERTEX(4301, 1434, -3532),\n    COL_VERTEX(1190, 1229, -5480),\n    COL_VERTEX(693, 1331, -5673),\n    COL_VERTEX(371, 1331, -5276),\n    COL_VERTEX(3716, 1613, -3303),\n    COL_VERTEX(3818, 1613, -3201),\n    COL_VERTEX(-3327, 2099, 7168),\n    COL_VERTEX(-6143, 1024, 6144),\n    COL_VERTEX(-5119, 1382, 4710),\n    COL_VERTEX(-4351, 1024, 5632),\n    COL_VERTEX(-3537, 1024, 255),\n    COL_VERTEX(1534, 1741, 1678),\n    COL_VERTEX(-1277, 1741, 7168),\n    COL_VERTEX(908, 2150, 1563),\n    COL_VERTEX(768, 2150, 1024),\n    COL_VERTEX(-378, 3840, 898),\n    COL_VERTEX(-476, 3738, 865),\n    COL_VERTEX(1418, 1741, 2366),\n    COL_VERTEX(1182, 1536, 1673),\n    COL_VERTEX(1248, 1024, -5249),\n    COL_VERTEX(1182, 1536, 2288),\n    COL_VERTEX(102, 922, -2928),\n    COL_VERTEX(922, 922, -2928),\n    COL_VERTEX(1024, 1024, -3071),\n    COL_VERTEX(57, 922, -1398),\n    COL_VERTEX(717, 922, -1289),\n    COL_VERTEX(-56, 922, -1379),\n    COL_VERTEX(-739, 922, -1151),\n    COL_VERTEX(-101, 922, -2892),\n    COL_VERTEX(-987, 922, -2869),\n    COL_VERTEX(-2195, 817, 3060),\n    COL_VERTEX(-3756, 819, 2842),\n    COL_VERTEX(2373, 1024, -4607),\n    COL_VERTEX(2816, 1024, -4351),\n    COL_VERTEX(1417, 952, -4143),\n    COL_VERTEX(1536, 1024, -4095),\n    COL_VERTEX(24, 952, -3214),\n    COL_VERTEX(997, 952, -5819),\n    COL_VERTEX(1155, 952, -5189),\n    COL_VERTEX(-511, 819, 2816),\n    COL_VERTEX(-6143, 768, 1024),\n    COL_VERTEX(2483, 973, -5055),\n    COL_VERTEX(2816, 973, -5247),\n    COL_VERTEX(3277, 973, -4863),\n    COL_VERTEX(2483, 973, -4671),\n    COL_VERTEX(2816, 973, -4479),\n    COL_VERTEX(952, 952, -3214),\n    COL_VERTEX(-1051, 952, -4923),\n    COL_VERTEX(-1136, 952, -5535),\n    COL_VERTEX(-1050, 952, -5942),\n    COL_VERTEX(952, 952, -6000),\n    COL_VERTEX(3967, 1229, 5078),\n    COL_VERTEX(3967, 1229, 4054),\n    COL_VERTEX(1008, 1126, -2425),\n    COL_VERTEX(-1053, 1271, -2411),\n    COL_VERTEX(4438, 1178, -3702),\n    COL_VERTEX(3811, 1329, -2332),\n    COL_VERTEX(3246, 1306, -2897),\n    COL_VERTEX(4220, 754, -2333),\n    COL_VERTEX(4220, 754, -1924),\n    COL_VERTEX(743, 1229, -5474),\n    COL_VERTEX(-1479, 2214, 3942),\n    COL_VERTEX(-3611, 2099, 4329),\n    COL_VERTEX(1519, 1843, 1664),\n    COL_VERTEX(2145, 2002, 857),\n    COL_VERTEX(2116, 1978, 862),\n    COL_VERTEX(1534, 1823, 1678),\n    COL_VERTEX(1504, 1823, 1650),\n    COL_VERTEX(1418, 1823, 2366),\n    COL_VERTEX(1404, 1823, 2246),\n    COL_VERTEX(1411, 1843, 2306),\n    COL_VERTEX(0, 2232, 1818),\n    COL_VERTEX(17, 2253, 1792),\n    COL_VERTEX(34, 2232, 1766),\n    COL_VERTEX(879, 963, -4018),\n    COL_VERTEX(902, 963, -3949),\n    COL_VERTEX(924, 963, -4064),\n    COL_VERTEX(970, 963, -4041),\n    COL_VERTEX(993, 963, -3972),\n    COL_VERTEX(-918, 963, -5190),\n    COL_VERTEX(-872, 963, -5167),\n    COL_VERTEX(-964, 963, -5144),\n    COL_VERTEX(-849, 963, -5099),\n    COL_VERTEX(-941, 963, -5076),\n    COL_VERTEX(236, 952, -3662),\n    COL_VERTEX(133, 998, -3588),\n    COL_VERTEX(110, 952, -3588),\n    COL_VERTEX(236, 998, -3639),\n    COL_VERTEX(412, 952, -3639),\n    COL_VERTEX(236, 952, -3522),\n    COL_VERTEX(310, 963, -5702),\n    COL_VERTEX(264, 963, -5656),\n    COL_VERTEX(356, 963, -5679),\n    COL_VERTEX(379, 963, -5611),\n    COL_VERTEX(287, 963, -5588),\n    COL_VERTEX(-238, 952, -4482),\n    COL_VERTEX(-286, 952, -4434),\n    COL_VERTEX(-286, 952, -4597),\n    COL_VERTEX(-343, 952, -4539),\n    COL_VERTEX(-511, 1311, 2816),\n    COL_VERTEX(-2366, 1021, 4425),\n    COL_VERTEX(4211, 760, -2971),\n    COL_VERTEX(3746, 1511, -3273),\n    COL_VERTEX(3913, 754, -2897),\n    COL_VERTEX(909, 2816, 1571),\n    COL_VERTEX(1919, 1985, 682),\n    COL_VERTEX(1908, 2002, 699),\n    COL_VERTEX(2175, 1985, 852),\n    COL_VERTEX(1897, 1978, 716),\n    COL_VERTEX(-52, 2253, 1239),\n    COL_VERTEX(-33, 2232, 1233),\n    COL_VERTEX(908, 2232, 1563),\n    COL_VERTEX(903, 2253, 1544),\n    COL_VERTEX(898, 2232, 1524),\n    COL_VERTEX(-72, 2232, 1244),\n    COL_VERTEX(926, 952, -4055),\n    COL_VERTEX(887, 952, -4016),\n    COL_VERTEX(936, 1041, -4007),\n    COL_VERTEX(965, 952, -4036),\n    COL_VERTEX(907, 952, -3958),\n    COL_VERTEX(985, 952, -3977),\n    COL_VERTEX(-906, 1041, -5133),\n    COL_VERTEX(-877, 952, -5162),\n    COL_VERTEX(-916, 952, -5182),\n    COL_VERTEX(-955, 952, -5143),\n    COL_VERTEX(-857, 952, -5104),\n    COL_VERTEX(-936, 952, -5084),\n    COL_VERTEX(389, 998, -3639),\n    COL_VERTEX(236, 998, -3537),\n    COL_VERTEX(351, 952, -5674),\n    COL_VERTEX(312, 952, -5694),\n    COL_VERTEX(273, 952, -5655),\n    COL_VERTEX(322, 1041, -5645),\n    COL_VERTEX(370, 952, -5616),\n    COL_VERTEX(292, 952, -5596),\n    COL_VERTEX(-286, 1067, -4539),\n    COL_VERTEX(843, 922, -2401),\n    COL_VERTEX(-713, 922, -2195),\n    COL_VERTEX(-768, 922, -1353),\n    COL_VERTEX(-804, 922, -2302),\n    COL_VERTEX(-761, 922, -2431),\n    COL_VERTEX(4582, 1638, 4668),\n    COL_VERTEX(4377, 1638, 4873),\n    COL_VERTEX(4582, 1638, 4873),\n    COL_VERTEX(4377, 1638, 4668),\n    COL_VERTEX(4582, 1843, 4873),\n    COL_VERTEX(4172, 1843, 4873),\n    COL_VERTEX(4172, 1843, 5078),\n    COL_VERTEX(4582, 1843, 5078),\n    COL_VERTEX(3967, 1638, 5078),\n    COL_VERTEX(4172, 1843, 4156),\n    COL_VERTEX(4786, 1638, 5078),\n    COL_VERTEX(4786, 1638, 4054),\n    COL_VERTEX(4582, 1843, 4156),\n    COL_VERTEX(3967, 1638, 4054),\n    COL_VERTEX(4274, 1843, 4259),\n    COL_VERTEX(4479, 1843, 4259),\n    COL_VERTEX(4582, 1843, 4668),\n    COL_VERTEX(4479, 1843, 4463),\n    COL_VERTEX(4172, 1843, 4668),\n    COL_VERTEX(4274, 1843, 4463),\n    COL_VERTEX(1091, 1300, -4084),\n    COL_VERTEX(-200, 1300, -3761),\n    COL_VERTEX(-522, 1300, -5052),\n    COL_VERTEX(768, 1300, -5375),\n    COL_VERTEX(3967, 1024, 5078),\n    COL_VERTEX(4582, 1024, 5078),\n    COL_VERTEX(3967, 1024, 4054),\n    COL_VERTEX(4582, 1024, 4054),\n    COL_VERTEX(4786, 1434, 5078),\n    COL_VERTEX(3967, 1434, 5078),\n    COL_VERTEX(3967, 1434, 4054),\n    COL_VERTEX(4377, 1434, 4873),\n    COL_VERTEX(4786, 1434, 4054),\n    COL_VERTEX(4274, 1229, 4259),\n    COL_VERTEX(4070, 1229, 4259),\n    COL_VERTEX(4377, 1229, 5078),\n    COL_VERTEX(4479, 1229, 4259),\n    COL_VERTEX(4274, 1229, 4463),\n    COL_VERTEX(4479, 1229, 4463),\n    COL_VERTEX(1404, 1741, 2246),\n    COL_VERTEX(2116, 1896, 862),\n    COL_VERTEX(4377, 1229, 4873),\n    COL_VERTEX(4274, 1229, 4054),\n    COL_VERTEX(4070, 1229, 4054),\n    COL_VERTEX(3967, 1229, 4668),\n    COL_VERTEX(3967, 1229, 4873),\n    COL_VERTEX(1504, 1741, 1650),\n    COL_VERTEX(1897, 1896, 716),\n    COL_VERTEX(34, 2150, 1766),\n    COL_VERTEX(-33, 2150, 1233),\n    COL_VERTEX(898, 2150, 1524),\n    COL_VERTEX(-8191, 5018, -8191),\n    COL_VERTEX(-8191, 5018, 8192),\n    COL_VERTEX(-5688, 5975, -8191),\n    COL_VERTEX(-3327, 4147, 7168),\n    COL_VERTEX(7168, 4506, -8191),\n    COL_VERTEX(7168, 4506, 8192),\n    COL_VERTEX(-1277, 3789, 7168),\n    COL_TRI_INIT(SURFACE_DEFAULT, 192),\n    COL_TRI(12, 13, 14),\n    COL_TRI(0, 1, 2),\n    COL_TRI(3, 0, 2),\n    COL_TRI(4, 5, 6),\n    COL_TRI(4, 7, 5),\n    COL_TRI(8, 9, 10),\n    COL_TRI(8, 10, 11),\n    COL_TRI(17, 20, 24),\n    COL_TRI(15, 12, 14),\n    COL_TRI(16, 105, 106),\n    COL_TRI(16, 107, 105),\n    COL_TRI(13, 108, 109),\n    COL_TRI(14, 13, 109),\n    COL_TRI(17, 110, 20),\n    COL_TRI(23, 21, 20),\n    COL_TRI(18, 19, 110),\n    COL_TRI(19, 114, 110),\n    COL_TRI(17, 110, 114),\n    COL_TRI(18, 110, 17),\n    COL_TRI(20, 111, 112),\n    COL_TRI(20, 112, 42),\n    COL_TRI(21, 113, 20),\n    COL_TRI(22, 111, 20),\n    COL_TRI(22, 20, 113),\n    COL_TRI(23, 20, 42),\n    COL_TRI(24, 113, 21),\n    COL_TRI(24, 21, 35),\n    COL_TRI(25, 113, 24),\n    COL_TRI(25, 111, 114),\n    COL_TRI(25, 114, 115),\n    COL_TRI(25, 22, 113),\n    COL_TRI(26, 115, 114),\n    COL_TRI(27, 26, 114),\n    COL_TRI(19, 27, 114),\n    COL_TRI(17, 114, 115),\n    COL_TRI(31, 120, 28),\n    COL_TRI(28, 117, 29),\n    COL_TRI(28, 29, 118),\n    COL_TRI(29, 117, 119),\n    COL_TRI(29, 119, 30),\n    COL_TRI(30, 119, 120),\n    COL_TRI(30, 120, 31),\n    COL_TRI(31, 28, 118),\n    COL_TRI(32, 33, 121),\n    COL_TRI(32, 121, 34),\n    COL_TRI(33, 41, 43),\n    COL_TRI(33, 32, 41),\n    COL_TRI(34, 121, 122),\n    COL_TRI(35, 21, 123),\n    COL_TRI(35, 123, 36),\n    COL_TRI(36, 124, 126),\n    COL_TRI(37, 36, 126),\n    COL_TRI(34, 122, 125),\n    COL_TRI(38, 127, 122),\n    COL_TRI(39, 37, 126),\n    COL_TRI(37, 128, 129),\n    COL_TRI(37, 39, 128),\n    COL_TRI(40, 129, 128),\n    COL_TRI(40, 38, 129),\n    COL_TRI(38, 40, 127),\n    COL_TRI(41, 42, 112),\n    COL_TRI(42, 41, 32),\n    COL_TRI(32, 23, 42),\n    COL_TRI(25, 130, 44),\n    COL_TRI(25, 44, 22),\n    COL_TRI(41, 112, 44),\n    COL_TRI(43, 41, 44),\n    COL_TRI(44, 111, 22),\n    COL_TRI(44, 112, 111),\n    COL_TRI(43, 44, 130),\n    COL_TRI(45, 131, 46),\n    COL_TRI(45, 46, 132),\n    COL_TRI(49, 53, 135),\n    COL_TRI(46, 133, 132),\n    COL_TRI(46, 47, 133),\n    COL_TRI(47, 134, 52),\n    COL_TRI(47, 52, 50),\n    COL_TRI(48, 47, 50),\n    COL_TRI(48, 133, 47),\n    COL_TRI(49, 135, 48),\n    COL_TRI(49, 48, 50),\n    COL_TRI(50, 52, 49),\n    COL_TRI(51, 54, 49),\n    COL_TRI(49, 54, 53),\n    COL_TRI(52, 51, 49),\n    COL_TRI(53, 136, 138),\n    COL_TRI(53, 54, 136),\n    COL_TRI(51, 137, 54),\n    COL_TRI(54, 137, 136),\n    COL_TRI(55, 56, 139),\n    COL_TRI(56, 140, 139),\n    COL_TRI(57, 141, 142),\n    COL_TRI(57, 143, 141),\n    COL_TRI(26, 116, 61),\n    COL_TRI(58, 59, 65),\n    COL_TRI(59, 144, 65),\n    COL_TRI(60, 65, 145),\n    COL_TRI(60, 58, 65),\n    COL_TRI(60, 134, 58),\n    COL_TRI(47, 146, 134),\n    COL_TRI(64, 46, 131),\n    COL_TRI(26, 27, 116),\n    COL_TRI(61, 116, 62),\n    COL_TRI(62, 116, 19),\n    COL_TRI(27, 19, 116),\n    COL_TRI(63, 62, 19),\n    COL_TRI(63, 19, 18),\n    COL_TRI(62, 147, 61),\n    COL_TRI(64, 148, 46),\n    COL_TRI(46, 148, 146),\n    COL_TRI(46, 146, 47),\n    COL_TRI(65, 149, 145),\n    COL_TRI(66, 150, 151),\n    COL_TRI(66, 151, 152),\n    COL_TRI(67, 153, 70),\n    COL_TRI(72, 160, 159),\n    COL_TRI(68, 154, 69),\n    COL_TRI(68, 69, 155),\n    COL_TRI(69, 154, 156),\n    COL_TRI(70, 153, 157),\n    COL_TRI(70, 157, 158),\n    COL_TRI(71, 72, 159),\n    COL_TRI(78, 79, 81),\n    COL_TRI(73, 74, 102),\n    COL_TRI(74, 161, 162),\n    COL_TRI(74, 73, 161),\n    COL_TRI(75, 163, 73),\n    COL_TRI(75, 73, 164),\n    COL_TRI(73, 102, 164),\n    COL_TRI(76, 78, 77),\n    COL_TRI(77, 78, 81),\n    COL_TRI(76, 77, 82),\n    COL_TRI(79, 98, 80),\n    COL_TRI(79, 97, 98),\n    COL_TRI(79, 76, 97),\n    COL_TRI(80, 81, 79),\n    COL_TRI(80, 167, 81),\n    COL_TRI(77, 81, 165),\n    COL_TRI(81, 166, 165),\n    COL_TRI(77, 165, 82),\n    COL_TRI(82, 165, 166),\n    COL_TRI(83, 82, 166),\n    COL_TRI(84, 169, 170),\n    COL_TRI(84, 170, 85),\n    COL_TRI(84, 86, 169),\n    COL_TRI(85, 171, 84),\n    COL_TRI(86, 84, 172),\n    COL_TRI(84, 87, 172),\n    COL_TRI(87, 84, 171),\n    COL_TRI(87, 173, 172),\n    COL_TRI(87, 88, 173),\n    COL_TRI(88, 99, 100),\n    COL_TRI(88, 87, 99),\n    COL_TRI(87, 171, 99),\n    COL_TRI(91, 175, 174),\n    COL_TRI(89, 172, 173),\n    COL_TRI(90, 89, 174),\n    COL_TRI(89, 90, 172),\n    COL_TRI(90, 174, 175),\n    COL_TRI(91, 92, 175),\n    COL_TRI(92, 95, 96),\n    COL_TRI(92, 96, 175),\n    COL_TRI(93, 92, 91),\n    COL_TRI(93, 94, 92),\n    COL_TRI(94, 95, 92),\n    COL_TRI(73, 162, 74),\n    COL_TRI(95, 82, 83),\n    COL_TRI(96, 95, 176),\n    COL_TRI(95, 83, 176),\n    COL_TRI(95, 168, 82),\n    COL_TRI(94, 168, 95),\n    COL_TRI(73, 161, 162),\n    COL_TRI(97, 76, 168),\n    COL_TRI(82, 168, 76),\n    COL_TRI(97, 168, 94),\n    COL_TRI(98, 94, 93),\n    COL_TRI(85, 101, 171),\n    COL_TRI(99, 171, 101),\n    COL_TRI(100, 103, 104),\n    COL_TRI(100, 99, 103),\n    COL_TRI(99, 101, 103),\n    COL_TRI(98, 97, 94),\n    COL_TRI(74, 101, 102),\n    COL_TRI(101, 75, 177),\n    COL_TRI(101, 85, 75),\n    COL_TRI(102, 101, 177),\n    COL_TRI(103, 101, 74),\n    COL_TRI(104, 103, 74),\n    COL_TRI(104, 74, 162),\n    COL_TRI(75, 85, 163),\n    COL_TRI(85, 170, 163),\n    COL_TRI(76, 79, 78),\n    COL_TRI_INIT(SURFACE_BURNING, 7),\n    COL_TRI(353, 362, 351),\n    COL_TRI(352, 365, 364),\n    COL_TRI(364, 353, 352),\n    COL_TRI(353, 364, 363),\n    COL_TRI(349, 353, 361),\n    COL_TRI(353, 363, 362),\n    COL_TRI(351, 361, 353),\n    COL_TRI_INIT(SURFACE_SLIPPERY, 233),\n    COL_TRI(183, 60, 145),\n    COL_TRI(178, 123, 23),\n    COL_TRI(178, 32, 34),\n    COL_TRI(178, 34, 179),\n    COL_TRI(123, 21, 23),\n    COL_TRI(179, 34, 125),\n    COL_TRI(179, 125, 180),\n    COL_TRI(181, 179, 182),\n    COL_TRI(179, 180, 182),\n    COL_TRI(188, 189, 191),\n    COL_TRI(183, 185, 186),\n    COL_TRI(183, 186, 52),\n    COL_TRI(186, 198, 51),\n    COL_TRI(186, 51, 52),\n    COL_TRI(187, 189, 188),\n    COL_TRI(188, 278, 279),\n    COL_TRI(188, 279, 187),\n    COL_TRI(188, 191, 215),\n    COL_TRI(192, 202, 283),\n    COL_TRI(189, 187, 280),\n    COL_TRI(189, 280, 190),\n    COL_TRI(190, 191, 189),\n    COL_TRI(191, 190, 281),\n    COL_TRI(191, 281, 214),\n    COL_TRI(191, 214, 215),\n    COL_TRI(186, 185, 283),\n    COL_TRI(185, 284, 283),\n    COL_TRI(193, 219, 218),\n    COL_TRI(183, 52, 134),\n    COL_TRI(186, 213, 198),\n    COL_TRI(186, 202, 213),\n    COL_TRI(186, 283, 202),\n    COL_TRI(134, 193, 288),\n    COL_TRI(134, 288, 289),\n    COL_TRI(183, 134, 60),\n    COL_TRI(63, 219, 193),\n    COL_TRI(194, 193, 290),\n    COL_TRI(195, 137, 282),\n    COL_TRI(195, 196, 62),\n    COL_TRI(194, 195, 62),\n    COL_TRI(196, 195, 282),\n    COL_TRI(147, 62, 196),\n    COL_TRI(196, 282, 199),\n    COL_TRI(194, 62, 63),\n    COL_TRI(194, 63, 193),\n    COL_TRI(201, 291, 203),\n    COL_TRI(197, 63, 217),\n    COL_TRI(63, 197, 219),\n    COL_TRI(198, 282, 137),\n    COL_TRI(199, 282, 198),\n    COL_TRI(200, 203, 192),\n    COL_TRI(200, 201, 203),\n    COL_TRI(204, 291, 286),\n    COL_TRI(201, 205, 291),\n    COL_TRI(205, 286, 291),\n    COL_TRI(203, 291, 204),\n    COL_TRI(202, 204, 213),\n    COL_TRI(204, 286, 212),\n    COL_TRI(204, 206, 213),\n    COL_TRI(202, 203, 204),\n    COL_TRI(204, 212, 209),\n    COL_TRI(206, 204, 209),\n    COL_TRI(192, 203, 202),\n    COL_TRI(207, 208, 280),\n    COL_TRI(210, 211, 181),\n    COL_TRI(208, 209, 190),\n    COL_TRI(190, 209, 212),\n    COL_TRI(206, 209, 197),\n    COL_TRI(209, 208, 197),\n    COL_TRI(190, 212, 281),\n    COL_TRI(208, 190, 280),\n    COL_TRI(182, 210, 181),\n    COL_TRI(210, 292, 211),\n    COL_TRI(206, 197, 217),\n    COL_TRI(181, 211, 277),\n    COL_TRI(192, 285, 225),\n    COL_TRI(192, 234, 285),\n    COL_TRI(212, 214, 281),\n    COL_TRI(212, 286, 214),\n    COL_TRI(213, 206, 217),\n    COL_TRI(214, 286, 287),\n    COL_TRI(205, 287, 286),\n    COL_TRI(215, 214, 223),\n    COL_TRI(214, 287, 223),\n    COL_TRI(216, 294, 295),\n    COL_TRI(217, 216, 213),\n    COL_TRI(216, 295, 213),\n    COL_TRI(213, 199, 198),\n    COL_TRI(221, 36, 220),\n    COL_TRI(197, 221, 219),\n    COL_TRI(197, 208, 221),\n    COL_TRI(218, 219, 220),\n    COL_TRI(219, 221, 220),\n    COL_TRI(125, 122, 180),\n    COL_TRI(180, 122, 205),\n    COL_TRI(182, 180, 205),\n    COL_TRI(218, 220, 178),\n    COL_TRI(220, 123, 178),\n    COL_TRI(220, 36, 123),\n    COL_TRI(122, 287, 205),\n    COL_TRI(207, 221, 208),\n    COL_TRI(122, 36, 222),\n    COL_TRI(222, 36, 221),\n    COL_TRI(198, 137, 51),\n    COL_TRI(222, 221, 207),\n    COL_TRI(122, 222, 224),\n    COL_TRI(223, 122, 224),\n    COL_TRI(223, 287, 122),\n    COL_TRI(182, 225, 210),\n    COL_TRI(224, 296, 215),\n    COL_TRI(215, 223, 224),\n    COL_TRI(182, 205, 201),\n    COL_TRI(182, 201, 200),\n    COL_TRI(182, 200, 225),\n    COL_TRI(225, 200, 192),\n    COL_TRI(211, 293, 277),\n    COL_TRI(66, 152, 70),\n    COL_TRI(152, 67, 70),\n    COL_TRI(226, 66, 69),\n    COL_TRI(66, 70, 69),\n    COL_TRI(227, 297, 228),\n    COL_TRI(228, 184, 227),\n    COL_TRI(184, 228, 185),\n    COL_TRI(184, 185, 183),\n    COL_TRI(145, 184, 183),\n    COL_TRI(229, 184, 145),\n    COL_TRI(230, 297, 227),\n    COL_TRI(231, 227, 184),\n    COL_TRI(227, 265, 299),\n    COL_TRI(227, 298, 230),\n    COL_TRI(227, 299, 298),\n    COL_TRI(232, 233, 300),\n    COL_TRI(232, 300, 301),\n    COL_TRI(232, 238, 249),\n    COL_TRI(233, 232, 285),\n    COL_TRI(232, 249, 285),\n    COL_TRI(234, 233, 285),\n    COL_TRI(235, 302, 297),\n    COL_TRI(235, 297, 230),\n    COL_TRI(236, 237, 238),\n    COL_TRI(238, 237, 249),\n    COL_TRI(249, 241, 239),\n    COL_TRI(237, 241, 249),\n    COL_TRI(239, 240, 303),\n    COL_TRI(240, 304, 246),\n    COL_TRI(240, 246, 243),\n    COL_TRI(240, 243, 242),\n    COL_TRI(241, 304, 240),\n    COL_TRI(242, 303, 240),\n    COL_TRI(239, 241, 240),\n    COL_TRI(243, 246, 262),\n    COL_TRI(244, 243, 262),\n    COL_TRI(243, 259, 305),\n    COL_TRI(231, 243, 305),\n    COL_TRI(245, 242, 243),\n    COL_TRI(246, 306, 262),\n    COL_TRI(247, 304, 241),\n    COL_TRI(248, 249, 239),\n    COL_TRI(239, 250, 251),\n    COL_TRI(239, 251, 248),\n    COL_TRI(250, 239, 303),\n    COL_TRI(254, 252, 311),\n    COL_TRI(237, 247, 241),\n    COL_TRI(250, 303, 308),\n    COL_TRI(251, 250, 308),\n    COL_TRI(252, 256, 229),\n    COL_TRI(252, 254, 256),\n    COL_TRI(253, 256, 254),\n    COL_TRI(259, 244, 307),\n    COL_TRI(255, 272, 256),\n    COL_TRI(256, 272, 312),\n    COL_TRI(256, 312, 229),\n    COL_TRI(257, 256, 253),\n    COL_TRI(256, 313, 255),\n    COL_TRI(256, 257, 313),\n    COL_TRI(245, 243, 231),\n    COL_TRI(258, 307, 244),\n    COL_TRI(262, 263, 316),\n    COL_TRI(243, 244, 259),\n    COL_TRI(259, 307, 305),\n    COL_TRI(260, 305, 307),\n    COL_TRI(260, 307, 258),\n    COL_TRI(260, 258, 315),\n    COL_TRI(261, 262, 316),\n    COL_TRI(263, 264, 316),\n    COL_TRI(263, 317, 264),\n    COL_TRI(264, 317, 318),\n    COL_TRI(265, 319, 299),\n    COL_TRI(265, 320, 319),\n    COL_TRI(251, 267, 266),\n    COL_TRI(251, 309, 267),\n    COL_TRI(251, 308, 309),\n    COL_TRI(155, 71, 159),\n    COL_TRI(267, 309, 321),\n    COL_TRI(268, 322, 267),\n    COL_TRI(267, 322, 139),\n    COL_TRI(268, 267, 321),\n    COL_TRI(139, 266, 267),\n    COL_TRI(158, 155, 70),\n    COL_TRI(271, 323, 139),\n    COL_TRI(155, 69, 70),\n    COL_TRI(266, 248, 251),\n    COL_TRI(248, 310, 269),\n    COL_TRI(269, 249, 248),\n    COL_TRI(270, 323, 271),\n    COL_TRI(270, 271, 324),\n    COL_TRI(270, 139, 323),\n    COL_TRI(225, 269, 325),\n    COL_TRI(225, 249, 269),\n    COL_TRI(225, 285, 249),\n    COL_TRI(184, 229, 275),\n    COL_TRI(229, 145, 252),\n    COL_TRI(270, 55, 139),\n    COL_TRI(255, 245, 231),\n    COL_TRI(245, 255, 253),\n    COL_TRI(245, 253, 327),\n    COL_TRI(272, 255, 231),\n    COL_TRI(253, 255, 314),\n    COL_TRI(255, 273, 314),\n    COL_TRI(273, 255, 313),\n    COL_TRI(252, 149, 326),\n    COL_TRI(274, 312, 272),\n    COL_TRI(272, 276, 274),\n    COL_TRI(275, 274, 276),\n    COL_TRI(276, 272, 231),\n    COL_TRI(276, 184, 275),\n    COL_TRI(184, 276, 231),\n    COL_TRI(252, 326, 311),\n    COL_TRI(149, 252, 145),\n    COL_TRI(277, 328, 329),\n    COL_TRI(277, 293, 328),\n    COL_TRI(155, 158, 71),\n    COL_TRI(253, 314, 257),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 1),\n    COL_TRI(122, 121, 33),\n    COL_TRI_INIT(SURFACE_WALL_MISC, 107),\n    COL_TRI(484, 464, 485),\n    COL_TRI(367, 480, 366),\n    COL_TRI(366, 480, 481),\n    COL_TRI(366, 481, 1),\n    COL_TRI(367, 482, 480),\n    COL_TRI(1, 481, 483),\n    COL_TRI(1, 483, 7),\n    COL_TRI(7, 482, 367),\n    COL_TRI(7, 483, 482),\n    COL_TRI(106, 461, 457),\n    COL_TRI(485, 464, 469),\n    COL_TRI(485, 469, 486),\n    COL_TRI(486, 469, 467),\n    COL_TRI(486, 467, 488),\n    COL_TRI(460, 458, 457),\n    COL_TRI(457, 461, 460),\n    COL_TRI(458, 460, 472),\n    COL_TRI(487, 457, 459),\n    COL_TRI(105, 461, 106),\n    COL_TRI(105, 474, 461),\n    COL_TRI(459, 472, 474),\n    COL_TRI(472, 459, 456),\n    COL_TRI(458, 472, 456),\n    COL_TRI(488, 466, 484),\n    COL_TRI(367, 486, 10),\n    COL_TRI(484, 466, 464),\n    COL_TRI(489, 9, 8),\n    COL_TRI(489, 490, 9),\n    COL_TRI(8, 498, 489),\n    COL_TRI(490, 10, 9),\n    COL_TRI(490, 499, 10),\n    COL_TRI(8, 11, 498),\n    COL_TRI(367, 10, 499),\n    COL_TRI(1, 15, 14),\n    COL_TRI(107, 367, 500),\n    COL_TRI(107, 486, 367),\n    COL_TRI(488, 498, 11),\n    COL_TRI(488, 5, 498),\n    COL_TRI(5, 488, 108),\n    COL_TRI(5, 108, 6),\n    COL_TRI(1, 14, 2),\n    COL_TRI(0, 15, 1),\n    COL_TRI(0, 484, 15),\n    COL_TRI(14, 3, 2),\n    COL_TRI(14, 109, 3),\n    COL_TRI(491, 497, 487),\n    COL_TRI(491, 487, 12),\n    COL_TRI(12, 366, 491),\n    COL_TRI(16, 497, 501),\n    COL_TRI(16, 106, 497),\n    COL_TRI(109, 484, 0),\n    COL_TRI(109, 0, 3),\n    COL_TRI(494, 473, 471),\n    COL_TRI(12, 485, 366),\n    COL_TRI(366, 485, 16),\n    COL_TRI(366, 16, 501),\n    COL_TRI(489, 470, 475),\n    COL_TRI(492, 470, 489),\n    COL_TRI(489, 475, 493),\n    COL_TRI(492, 471, 470),\n    COL_TRI(493, 475, 473),\n    COL_TRI(493, 473, 494),\n    COL_TRI(494, 471, 492),\n    COL_TRI(106, 457, 497),\n    COL_TRI(13, 474, 105),\n    COL_TRI(13, 459, 474),\n    COL_TRI(487, 459, 13),\n    COL_TRI(108, 107, 500),\n    COL_TRI(108, 500, 6),\n    COL_TRI(488, 467, 466),\n    COL_TRI(229, 57, 275),\n    COL_TRI(275, 57, 142),\n    COL_TRI(275, 142, 274),\n    COL_TRI(274, 142, 141),\n    COL_TRI(274, 141, 312),\n    COL_TRI(229, 143, 57),\n    COL_TRI(312, 141, 143),\n    COL_TRI(312, 143, 229),\n    COL_TRI(328, 419, 329),\n    COL_TRI(419, 218, 329),\n    COL_TRI(329, 218, 178),\n    COL_TRI(329, 178, 277),\n    COL_TRI(277, 178, 179),\n    COL_TRI(277, 179, 181),\n    COL_TRI(495, 332, 385),\n    COL_TRI(383, 332, 326),\n    COL_TRI(332, 383, 385),\n    COL_TRI(422, 149, 65),\n    COL_TRI(383, 326, 381),\n    COL_TRI(495, 385, 384),\n    COL_TRI(495, 384, 382),\n    COL_TRI(495, 382, 502),\n    COL_TRI(149, 422, 381),\n    COL_TRI(149, 381, 326),\n    COL_TRI(277, 293, 386),\n    COL_TRI(422, 65, 420),\n    COL_TRI(380, 423, 503),\n    COL_TRI(380, 503, 496),\n    COL_TRI(496, 382, 380),\n    COL_TRI(496, 502, 382),\n    COL_TRI(277, 386, 429),\n    COL_TRI(293, 328, 426),\n    COL_TRI(293, 426, 386),\n    COL_TRI(425, 388, 504),\n    COL_TRI(425, 504, 505),\n    COL_TRI(388, 506, 504),\n    COL_TRI(388, 428, 506),\n    COL_TRI_INIT(SURFACE_HORIZONTAL_WIND, 10),\n    COL_TRI_SPECIAL(334, 350, 347, 0x2A),\n    COL_TRI_SPECIAL(416, 244, 418, 0x1C),\n    COL_TRI_SPECIAL(416, 231, 305, 0x37),\n    COL_TRI_SPECIAL(416, 418, 373, 0x35),\n    COL_TRI_SPECIAL(244, 348, 418, 0x21),\n    COL_TRI_SPECIAL(348, 350, 418, 0x34),\n    COL_TRI_SPECIAL(373, 374, 231, 0x48),\n    COL_TRI_SPECIAL(231, 416, 373, 0x48),\n    COL_TRI_SPECIAL(348, 347, 350, 0x26),\n    COL_TRI_SPECIAL(334, 347, 261, 0x0),\n    COL_TRI_INIT(SURFACE_ICE, 40),\n    COL_TRI(456, 457, 458),\n    COL_TRI(456, 459, 457),\n    COL_TRI(460, 461, 462),\n    COL_TRI(460, 462, 463),\n    COL_TRI(464, 462, 465),\n    COL_TRI(466, 463, 462),\n    COL_TRI(466, 462, 464),\n    COL_TRI(467, 468, 466),\n    COL_TRI(469, 468, 467),\n    COL_TRI(469, 465, 468),\n    COL_TRI(470, 468, 465),\n    COL_TRI(470, 471, 468),\n    COL_TRI(472, 468, 473),\n    COL_TRI(468, 471, 473),\n    COL_TRI(474, 473, 475),\n    COL_TRI(474, 472, 473),\n    COL_TRI(475, 470, 465),\n    COL_TRI(475, 465, 474),\n    COL_TRI(464, 465, 469),\n    COL_TRI(468, 463, 466),\n    COL_TRI(451, 343, 455),\n    COL_TRI(25, 17, 24),\n    COL_TRI(25, 115, 17),\n    COL_TRI(476, 477, 478),\n    COL_TRI(476, 478, 479),\n    COL_TRI(118, 29, 30),\n    COL_TRI(118, 30, 31),\n    COL_TRI(343, 344, 455),\n    COL_TRI(455, 454, 451),\n    COL_TRI(451, 336, 343),\n    COL_TRI(337, 336, 451),\n    COL_TRI(339, 340, 451),\n    COL_TRI(454, 452, 451),\n    COL_TRI(341, 451, 452),\n    COL_TRI(451, 341, 339),\n    COL_TRI(341, 452, 453),\n    COL_TRI(453, 342, 341),\n    COL_TRI(358, 357, 356),\n    COL_TRI(359, 360, 358),\n    COL_TRI(358, 356, 359),\n    COL_TRI_INIT(SURFACE_HARD, 39),\n    COL_TRI(58, 289, 59),\n    COL_TRI(330, 39, 126),\n    COL_TRI(330, 126, 124),\n    COL_TRI(330, 331, 39),\n    COL_TRI(39, 331, 128),\n    COL_TRI(127, 128, 331),\n    COL_TRI(127, 40, 128),\n    COL_TRI(263, 306, 317),\n    COL_TRI(58, 134, 289),\n    COL_TRI(332, 333, 335),\n    COL_TRI(332, 144, 333),\n    COL_TRI(333, 144, 160),\n    COL_TRI(332, 326, 144),\n    COL_TRI(144, 326, 65),\n    COL_TRI(72, 332, 335),\n    COL_TRI(306, 263, 262),\n    COL_TRI(334, 316, 264),\n    COL_TRI(316, 334, 261),\n    COL_TRI(326, 149, 65),\n    COL_TRI(322, 271, 139),\n    COL_TRI(268, 271, 322),\n    COL_TRI(268, 324, 271),\n    COL_TRI(279, 222, 207),\n    COL_TRI(188, 215, 296),\n    COL_TRI(278, 188, 296),\n    COL_TRI(224, 278, 296),\n    COL_TRI(224, 222, 278),\n    COL_TRI(187, 207, 280),\n    COL_TRI(279, 207, 187),\n    COL_TRI(342, 192, 341),\n    COL_TRI(236, 336, 337),\n    COL_TRI(236, 337, 338),\n    COL_TRI(339, 284, 340),\n    COL_TRI(339, 283, 284),\n    COL_TRI(341, 283, 339),\n    COL_TRI(192, 283, 341),\n    COL_TRI(343, 238, 344),\n    COL_TRI(343, 236, 238),\n    COL_TRI(336, 236, 343),\n    COL_TRI_INIT(SURFACE_HARD_VERY_SLIPPERY, 173),\n    COL_TRI(155, 160, 293),\n    COL_TRI(366, 7, 367),\n    COL_TRI(366, 1, 7),\n    COL_TRI(211, 292, 155),\n    COL_TRI(68, 155, 292),\n    COL_TRI(211, 155, 293),\n    COL_TRI(159, 160, 155),\n    COL_TRI(369, 300, 233),\n    COL_TRI(230, 338, 368),\n    COL_TRI(338, 298, 350),\n    COL_TRI(338, 230, 298),\n    COL_TRI(368, 235, 230),\n    COL_TRI(368, 302, 235),\n    COL_TRI(302, 368, 297),\n    COL_TRI(369, 232, 301),\n    COL_TRI(369, 301, 300),\n    COL_TRI(158, 157, 354),\n    COL_TRI(284, 297, 368),\n    COL_TRI(284, 185, 228),\n    COL_TRI(297, 284, 228),\n    COL_TRI(72, 158, 414),\n    COL_TRI(71, 158, 72),\n    COL_TRI(72, 414, 376),\n    COL_TRI(332, 72, 376),\n    COL_TRI(354, 414, 158),\n    COL_TRI(345, 376, 414),\n    COL_TRI(345, 414, 354),\n    COL_TRI(244, 370, 258),\n    COL_TRI(370, 315, 258),\n    COL_TRI(370, 260, 315),\n    COL_TRI(370, 305, 260),\n    COL_TRI(244, 416, 370),\n    COL_TRI(370, 416, 305),\n    COL_TRI(319, 417, 299),\n    COL_TRI(371, 372, 265),\n    COL_TRI(372, 299, 417),\n    COL_TRI(265, 372, 417),\n    COL_TRI(299, 372, 350),\n    COL_TRI(372, 371, 418),\n    COL_TRI(350, 372, 418),\n    COL_TRI(227, 371, 265),\n    COL_TRI(373, 418, 371),\n    COL_TRI(374, 371, 227),\n    COL_TRI(374, 373, 371),\n    COL_TRI(299, 350, 298),\n    COL_TRI(374, 227, 231),\n    COL_TRI(320, 417, 319),\n    COL_TRI(265, 417, 320),\n    COL_TRI(306, 375, 317),\n    COL_TRI(306, 334, 375),\n    COL_TRI(334, 264, 375),\n    COL_TRI(317, 375, 318),\n    COL_TRI(375, 264, 318),\n    COL_TRI(56, 55, 345),\n    COL_TRI(345, 415, 376),\n    COL_TRI(345, 55, 415),\n    COL_TRI(332, 376, 327),\n    COL_TRI(376, 415, 327),\n    COL_TRI(55, 321, 415),\n    COL_TRI(321, 327, 415),\n    COL_TRI(253, 332, 327),\n    COL_TRI(55, 377, 321),\n    COL_TRI(377, 270, 321),\n    COL_TRI(268, 321, 270),\n    COL_TRI(326, 332, 311),\n    COL_TRI(311, 332, 253),\n    COL_TRI(253, 254, 311),\n    COL_TRI(377, 55, 270),\n    COL_TRI(324, 268, 270),\n    COL_TRI(160, 328, 293),\n    COL_TRI(144, 59, 328),\n    COL_TRI(160, 144, 328),\n    COL_TRI(218, 419, 59),\n    COL_TRI(59, 288, 218),\n    COL_TRI(289, 288, 59),\n    COL_TRI(59, 419, 328),\n    COL_TRI(355, 310, 139),\n    COL_TRI(139, 140, 355),\n    COL_TRI(139, 310, 266),\n    COL_TRI(266, 310, 248),\n    COL_TRI(378, 379, 380),\n    COL_TRI(379, 420, 421),\n    COL_TRI(380, 379, 421),\n    COL_TRI(381, 422, 379),\n    COL_TRI(378, 381, 379),\n    COL_TRI(379, 422, 420),\n    COL_TRI(380, 421, 423),\n    COL_TRI(382, 378, 380),\n    COL_TRI(383, 381, 378),\n    COL_TRI(384, 378, 382),\n    COL_TRI(385, 383, 378),\n    COL_TRI(384, 385, 378),\n    COL_TRI(386, 387, 424),\n    COL_TRI(387, 425, 424),\n    COL_TRI(387, 386, 426),\n    COL_TRI(387, 426, 427),\n    COL_TRI(391, 389, 432),\n    COL_TRI(386, 424, 429),\n    COL_TRI(387, 427, 428),\n    COL_TRI(388, 387, 428),\n    COL_TRI(387, 388, 425),\n    COL_TRI(389, 391, 430),\n    COL_TRI(389, 430, 431),\n    COL_TRI(390, 389, 431),\n    COL_TRI(389, 390, 432),\n    COL_TRI(394, 395, 437),\n    COL_TRI(391, 433, 430),\n    COL_TRI(391, 392, 433),\n    COL_TRI(392, 391, 432),\n    COL_TRI(390, 431, 434),\n    COL_TRI(390, 434, 435),\n    COL_TRI(393, 390, 435),\n    COL_TRI(390, 393, 432),\n    COL_TRI(392, 393, 435),\n    COL_TRI(392, 435, 433),\n    COL_TRI(393, 392, 432),\n    COL_TRI(394, 396, 436),\n    COL_TRI(395, 394, 436),\n    COL_TRI(397, 395, 436),\n    COL_TRI(395, 440, 437),\n    COL_TRI(395, 397, 440),\n    COL_TRI(394, 437, 438),\n    COL_TRI(394, 438, 439),\n    COL_TRI(396, 394, 439),\n    COL_TRI(398, 396, 439),\n    COL_TRI(398, 439, 441),\n    COL_TRI(396, 398, 436),\n    COL_TRI(398, 397, 436),\n    COL_TRI(397, 398, 441),\n    COL_TRI(397, 441, 440),\n    COL_TRI(399, 402, 442),\n    COL_TRI(399, 442, 403),\n    COL_TRI(402, 443, 442),\n    COL_TRI(402, 400, 443),\n    COL_TRI(400, 402, 399),\n    COL_TRI(403, 442, 443),\n    COL_TRI(403, 443, 404),\n    COL_TRI(404, 443, 400),\n    COL_TRI(404, 400, 401),\n    COL_TRI(401, 400, 399),\n    COL_TRI(405, 407, 444),\n    COL_TRI(405, 444, 445),\n    COL_TRI(405, 445, 446),\n    COL_TRI(406, 405, 446),\n    COL_TRI(411, 450, 413),\n    COL_TRI(407, 408, 448),\n    COL_TRI(408, 407, 447),\n    COL_TRI(407, 405, 447),\n    COL_TRI(407, 448, 444),\n    COL_TRI(409, 446, 449),\n    COL_TRI(409, 406, 446),\n    COL_TRI(405, 406, 447),\n    COL_TRI(406, 409, 447),\n    COL_TRI(409, 408, 447),\n    COL_TRI(408, 409, 449),\n    COL_TRI(408, 449, 448),\n    COL_TRI(410, 450, 411),\n    COL_TRI(412, 450, 410),\n    COL_TRI(413, 450, 412),\n    COL_TRI(453, 234, 192),\n    COL_TRI(451, 338, 337),\n    COL_TRI(451, 368, 338),\n    COL_TRI(284, 368, 451),\n    COL_TRI(284, 451, 340),\n    COL_TRI(452, 234, 453),\n    COL_TRI(452, 233, 234),\n    COL_TRI(238, 455, 344),\n    COL_TRI(453, 192, 342),\n    COL_TRI(454, 369, 233),\n    COL_TRI(454, 233, 452),\n    COL_TRI(232, 369, 454),\n    COL_TRI(455, 232, 454),\n    COL_TRI(238, 232, 455),\n    COL_TRI_INIT(SURFACE_HARD_NOT_SLIPPERY, 78),\n    COL_TRI(24, 130, 25),\n    COL_TRI(314, 313, 257),\n    COL_TRI(314, 273, 313),\n    COL_TRI(160, 72, 335),\n    COL_TRI(160, 335, 333),\n    COL_TRI(122, 33, 35),\n    COL_TRI(36, 122, 35),\n    COL_TRI(133, 48, 194),\n    COL_TRI(24, 43, 130),\n    COL_TRI(24, 35, 43),\n    COL_TRI(35, 33, 43),\n    COL_TRI(45, 133, 290),\n    COL_TRI(45, 132, 133),\n    COL_TRI(133, 194, 290),\n    COL_TRI(115, 26, 17),\n    COL_TRI(194, 48, 135),\n    COL_TRI(194, 135, 195),\n    COL_TRI(135, 138, 195),\n    COL_TRI(135, 53, 138),\n    COL_TRI(63, 147, 217),\n    COL_TRI(217, 147, 216),\n    COL_TRI(196, 216, 147),\n    COL_TRI(196, 294, 216),\n    COL_TRI(345, 346, 140),\n    COL_TRI(26, 18, 17),\n    COL_TRI(18, 26, 61),\n    COL_TRI(63, 18, 61),\n    COL_TRI(63, 61, 147),\n    COL_TRI(345, 153, 346),\n    COL_TRI(153, 345, 354),\n    COL_TRI(67, 346, 153),\n    COL_TRI(152, 151, 346),\n    COL_TRI(152, 346, 67),\n    COL_TRI(156, 292, 210),\n    COL_TRI(156, 210, 225),\n    COL_TRI(150, 156, 325),\n    COL_TRI(156, 154, 292),\n    COL_TRI(154, 68, 292),\n    COL_TRI(69, 156, 226),\n    COL_TRI(226, 156, 150),\n    COL_TRI(226, 150, 66),\n    COL_TRI(310, 151, 150),\n    COL_TRI(310, 150, 269),\n    COL_TRI(325, 269, 150),\n    COL_TRI(325, 156, 225),\n    COL_TRI(151, 310, 355),\n    COL_TRI(151, 355, 140),\n    COL_TRI(346, 151, 140),\n    COL_TRI(140, 56, 345),\n    COL_TRI(153, 354, 157),\n    COL_TRI(350, 349, 361),\n    COL_TRI(262, 261, 356),\n    COL_TRI(262, 356, 357),\n    COL_TRI(262, 357, 358),\n    COL_TRI(244, 262, 358),\n    COL_TRI(261, 347, 359),\n    COL_TRI(261, 359, 356),\n    COL_TRI(347, 360, 359),\n    COL_TRI(347, 348, 360),\n    COL_TRI(348, 244, 358),\n    COL_TRI(348, 358, 360),\n    COL_TRI(349, 350, 353),\n    COL_TRI(350, 334, 353),\n    COL_TRI(304, 247, 363),\n    COL_TRI(351, 338, 361),\n    COL_TRI(350, 361, 338),\n    COL_TRI(351, 236, 338),\n    COL_TRI(237, 236, 351),\n    COL_TRI(237, 351, 362),\n    COL_TRI(237, 362, 363),\n    COL_TRI(247, 237, 363),\n    COL_TRI(304, 363, 364),\n    COL_TRI(304, 364, 365),\n    COL_TRI(304, 365, 246),\n    COL_TRI(306, 246, 365),\n    COL_TRI(352, 306, 365),\n    COL_TRI(353, 306, 352),\n    COL_TRI(353, 334, 306),\n    COL_TRI_INIT(SURFACE_CAMERA_BOUNDARY, 14),\n    COL_TRI(308, 507, 508),\n    COL_TRI(308, 508, 309),\n    COL_TRI(509, 507, 308),\n    COL_TRI(509, 308, 303),\n    COL_TRI(309, 508, 510),\n    COL_TRI(309, 510, 321),\n    COL_TRI(242, 509, 303),\n    COL_TRI(242, 511, 509),\n    COL_TRI(245, 511, 242),\n    COL_TRI(245, 512, 511),\n    COL_TRI(513, 245, 327),\n    COL_TRI(513, 512, 245),\n    COL_TRI(510, 513, 327),\n    COL_TRI(510, 327, 321),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(10),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_null_start, /*pos*/  5541,  1024,   443, /*yaw*/ 192), // unused, probably an early way to set initial position\n    SPECIAL_OBJECT(/*preset*/ special_snow_tree,  /*pos*/  5395,  1054, -5443),\n    SPECIAL_OBJECT(/*preset*/ special_snow_tree,  /*pos*/     0,  4864,     0),\n    SPECIAL_OBJECT(/*preset*/ special_snow_tree,  /*pos*/  5666,  1024, -3341),\n    SPECIAL_OBJECT(/*preset*/ special_snow_tree,  /*pos*/  1919,  1024, -4759),\n    SPECIAL_OBJECT(/*preset*/ special_snow_tree,  /*pos*/  3645,  1024, -5889),\n    SPECIAL_OBJECT(/*preset*/ special_snow_tree,  /*pos*/  1658,  1536, -3605),\n    SPECIAL_OBJECT(/*preset*/ special_snow_tree,  /*pos*/ -3769,  1024, -1197),\n    SPECIAL_OBJECT(/*preset*/ special_snow_tree,  /*pos*/ -2745,  1024,  -582),\n    SPECIAL_OBJECT(/*preset*/ special_snow_tree,  /*pos*/  1766,  2816,  -942),\n    COL_WATER_BOX_INIT(2),\n    COL_WATER_BOX(0, -6194, -409, 154, 4198, 973),\n    COL_WATER_BOX(1, -1279, -6143, 1485, -3071, 973),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/sl/areas/1/geo.inc.c",
    "content": "// 0x0E0003A8\nconst GeoLayout sl_geo_0003A8[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND(BACKGROUND_SNOW_MOUNTAINS, geo_skybox_main),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 20000, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(16, 0, 2000, 6000, 0, 4400, 0, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, sl_seg7_dl_07005478),\n                    GEO_DISPLAY_LIST(LAYER_TRANSPARENT, sl_seg7_dl_070056B0),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, sl_seg7_dl_070073D0),\n                    GEO_DISPLAY_LIST(LAYER_ALPHA, sl_seg7_dl_07007880),\n                    GEO_DISPLAY_LIST(LAYER_TRANSPARENT, sl_seg7_dl_070088B0),\n                    GEO_DISPLAY_LIST(LAYER_TRANSPARENT_DECAL, sl_seg7_dl_07008D58),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, sl_seg7_dl_0700A5A0),\n                    GEO_ASM(   0, geo_movtex_pause_control),\n                    GEO_ASM(0x1001, geo_movtex_draw_water_regions),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(   1, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_cannon_circle_base),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/sl/areas/1/macro.inc.c",
    "content": "// 0x0700ED94 - 0x0700EF6C\nconst MacroObject sl_seg7_area_1_macro_objs[] = {\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,      /*yaw*/  90, /*pos*/  4086,  1024,   400, /*bhvParam*/ DIALOG_086),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  1285,  2210,   385),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  1728,  2560,  -671),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  1371,  2188,  -500),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  1814,  3174,   114),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/    28,  3328,  1885),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  -228,  3482,  1742),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_cannon_closed,        /*yaw*/   0, /*pos*/  4483,   821,  1168, /*bhvParam*/ 0x80),\n    MACRO_OBJECT               (/*preset*/ macro_mr_blizzard_1,        /*yaw*/   0, /*pos*/ -3452,  1110, -3364),\n    MACRO_OBJECT               (/*preset*/ macro_mr_blizzard_1,        /*yaw*/   0, /*pos*/  5422,  1065, -1288),\n    MACRO_OBJECT               (/*preset*/ macro_mr_blizzard_1,        /*yaw*/   0, /*pos*/ -6533,  2048, -2444),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,             /*yaw*/   0, /*pos*/  4750,  1061, -5230),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,             /*yaw*/   0, /*pos*/   416,  1050, -4522),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,             /*yaw*/   0, /*pos*/ -6560,  2040, -5080),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,             /*yaw*/   0, /*pos*/ -6760,  2040, -1360),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,             /*yaw*/   0, /*pos*/ -6880,  1857,  1000),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,             /*yaw*/   0, /*pos*/ -4211,  1092, -4723),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,             /*yaw*/   0, /*pos*/ -6271,  1390,  4764),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,             /*yaw*/   0, /*pos*/  -529,  1050, -5329),\n    MACRO_OBJECT               (/*preset*/ macro_spindrift,            /*yaw*/   0, /*pos*/ -3760,  1120,  1240),\n    MACRO_OBJECT               (/*preset*/ macro_spindrift,            /*yaw*/   0, /*pos*/  3840,  1240, -5280),\n    MACRO_OBJECT               (/*preset*/ macro_spindrift,            /*yaw*/   0, /*pos*/ -3440,  1400,   -40),\n    MACRO_OBJECT               (/*preset*/ macro_spindrift,            /*yaw*/   0, /*pos*/   400,  1060,  5860),\n    MACRO_OBJECT               (/*preset*/ macro_spindrift,            /*yaw*/   0, /*pos*/   880,  1080,  4860),\n    MACRO_OBJECT               (/*preset*/ macro_spindrift,            /*yaw*/   0, /*pos*/  1400,  1080,  3860),\n    MACRO_OBJECT               (/*preset*/ macro_spindrift,            /*yaw*/   0, /*pos*/  3400,  1660, -2920),\n    MACRO_OBJECT               (/*preset*/ macro_spindrift,            /*yaw*/   0, /*pos*/ -3171,  1075, -4765),\n    MACRO_OBJECT               (/*preset*/ macro_spindrift,            /*yaw*/   0, /*pos*/ -4241,  1009, -3834),\n    MACRO_OBJECT               (/*preset*/ macro_box_koopa_shell,      /*yaw*/   0, /*pos*/ -5450,  1300,  5900),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_circling_amp,         /*yaw*/   0, /*pos*/  4060,   900, -2940, /*bhvParam*/ AMP_BP_ROT_RADIUS_200),\n    MACRO_OBJECT               (/*preset*/ macro_spindrift,            /*yaw*/   0, /*pos*/ -4096,  1125,  3062),\n    MACRO_OBJECT               (/*preset*/ macro_spindrift,            /*yaw*/   0, /*pos*/ -4536,  1125,  3782),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal, /*yaw*/  65, /*pos*/  -660,  2120,  1340),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,        /*yaw*/   0, /*pos*/ -1520,  1040,   940),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,        /*yaw*/   0, /*pos*/ -1340,  1280,  1020),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,        /*yaw*/   0, /*pos*/ -1180,  1520,  1120),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,      /*yaw*/ 295, /*pos*/  -835,  1125, -3856, /*bhvParam*/ DIALOG_061),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,      /*yaw*/ 180, /*pos*/ -5050,  1020,  6026, /*bhvParam*/ DIALOG_016),\n    MACRO_OBJECT               (/*preset*/ macro_fly_guy,              /*yaw*/   0, /*pos*/  2766,  1522, -3633),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,      /*yaw*/ 135, /*pos*/ -3600,  1024,  -800, /*bhvParam*/ DIALOG_148),\n    MACRO_OBJECT               (/*preset*/ macro_moneybag,             /*yaw*/   0, /*pos*/  2440,  1024,  4840),\n    MACRO_OBJECT               (/*preset*/ macro_moneybag,             /*yaw*/   0, /*pos*/ -2400,  1177, -4200),\n    MACRO_OBJECT               (/*preset*/ macro_box_1up_running_away, /*yaw*/   0, /*pos*/ -3380,  1360, -4140),\n    MACRO_OBJECT               (/*preset*/ macro_box_star_act_4,       /*yaw*/   0, /*pos*/ -4700,  1300,  5850),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  2909,  1024,  4245),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  3418,  1024,  3554),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_in_pole,   /*yaw*/   0, /*pos*/     0,  5420,     0),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/sl/areas/1/movtext.inc.c",
    "content": "// 0x0700FA30 - 0x0700FA50\nstatic Movtex sl_movtex_snowman_water_data[] = {\n    MOV_TEX_INIT_LOAD(    1),\n    MOV_TEX_ROT_SPEED(    8),\n    MOV_TEX_ROT_SCALE(   10),\n    MOV_TEX_4_BOX_TRIS(-6194,  -409),\n    MOV_TEX_4_BOX_TRIS(-6194,  4198),\n    MOV_TEX_4_BOX_TRIS(  154,  4198),\n    MOV_TEX_4_BOX_TRIS(  154,  -409),\n    MOV_TEX_ROT(     ROTATE_COUNTER_CLOCKWISE),\n    MOV_TEX_ALPHA(   0x96),\n    MOV_TEX_DEFINE(  TEXTURE_WATER),\n    MOV_TEX_END(),\n};\n\n// 0x0700FA50 - 0x0700FA70\nstatic Movtex sl_movtex_ice_bully_water_data[] = {\n    MOV_TEX_INIT_LOAD(    1),\n    MOV_TEX_ROT_SPEED(    8),\n    MOV_TEX_ROT_SCALE(   10),\n    MOV_TEX_4_BOX_TRIS(-1279, -6143),\n    MOV_TEX_4_BOX_TRIS(-1279, -3071),\n    MOV_TEX_4_BOX_TRIS( 1792, -3071),\n    MOV_TEX_4_BOX_TRIS( 1792, -6143),\n    MOV_TEX_ROT(     ROTATE_COUNTER_CLOCKWISE),\n    MOV_TEX_ALPHA(   0x96),\n    MOV_TEX_DEFINE(  TEXTURE_WATER),\n    MOV_TEX_END(),\n};\n\n// 0x0700FA70 - 0x0700FA88\nconst struct MovtexQuadCollection sl_movtex_water[] = {\n    {0, sl_movtex_snowman_water_data},\n    {1, sl_movtex_ice_bully_water_data},\n    {-1, NULL},\n};\n"
  },
  {
    "path": "levels/sl/areas/2/1/model.inc.c",
    "content": "// 0x0700A9B0 - 0x0700A9C8\nstatic const Lights1 sl_seg7_lights_0700A9B0 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700A9C8 - 0x0700A9E0\nstatic const Lights1 sl_seg7_lights_0700A9C8 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x0700A9E0 - 0x0700AAE0\nstatic const Vtx sl_seg7_vertex_0700A9E0[] = {\n    {{{  1229,      0,  -1228}, 0, {  2830,    990}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  1024,    614,  -1228}, 0, {  2420,   -236}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  1024,      0,  -1228}, 0, {  2420,    990}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -1228,    614,   -613}, 0, { -2074,   -236}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1023,      0,   -613}, 0, { -1666,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1228,      0,   -613}, 0, { -2074,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1023,    614,   -613}, 0, { -1666,   -236}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   512,      0,   -818}, 0, {  1398,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   717,    614,   -818}, 0, {  1808,   -236}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   512,    614,   -818}, 0, {  1398,   -236}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   717,      0,   -818}, 0, {  1808,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1229,      0,  -1433}, 0, {  5692,    990}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  1229,    614,  -1433}, 0, {  5692,   -236}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  1229,    614,  -1228}, 0, {  5282,   -236}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{  1229,      0,  -1228}, 0, {  5282,    990}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  1229,    614,  -1228}, 0, {  2830,   -236}, {0x71, 0x00, 0x38, 0xff}}},\n};\n\n// 0x0700AAE0 - 0x0700ABE0\nstatic const Vtx sl_seg7_vertex_0700AAE0[] = {\n    {{{  1024,      0,  -1228}, 0, {  2420,    990}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  1024,    614,  -1228}, 0, {  2420,   -236}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  1024,    614,  -1433}, 0, {  2420,   -236}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{  1024,      0,  -1433}, 0, {  2420,    990}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  1229,    614,  -1433}, 0, {  2830,   -236}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  1229,      0,  -1433}, 0, {  2830,    990}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{ -1433,      0,   -613}, 0, { -2482,    990}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -2047,    614,   -613}, 0, { -3710,   -236}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2047,      0,   -613}, 0, { -3710,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1433,    614,   -613}, 0, { -2482,   -236}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{ -2047,      0,   -818}, 0, { -3710,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1433,    614,   -818}, 0, { -2482,   -236}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{ -1433,      0,   -818}, 0, { -2482,    990}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  -409,      0,    205}, 0, {  -438,    990}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  -204,    614,    205}, 0, {     0,   -236}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  -204,      0,    205}, 0, {     0,    990}, {0x71, 0x00, 0xc8, 0xff}}},\n};\n\n// 0x0700ABE0 - 0x0700ACC0\nstatic const Vtx sl_seg7_vertex_0700ABE0[] = {\n    {{{ -2047,      0,   -818}, 0, { -3710,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2047,    614,   -818}, 0, { -3710,   -236}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1433,    614,   -818}, 0, { -2482,   -236}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{ -1433,      0,   -818}, 0, {  4464,    990}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{ -1433,    614,   -613}, 0, {  4056,   -236}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{ -1433,      0,   -613}, 0, {  4056,    990}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -1433,    614,   -818}, 0, {  4464,   -236}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{   205,      0,    410}, 0, {   786,    990}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{   205,    614,    410}, 0, {   786,   -236}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{   410,    614,    410}, 0, {  1194,   -236}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{   410,      0,    410}, 0, {  1194,    990}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  -409,      0,    205}, 0, {  -438,    990}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  -409,    614,    205}, 0, {  -438,   -236}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{  -204,    614,    205}, 0, {     0,   -236}, {0x38, 0x00, 0x8f, 0xff}}},\n};\n\n// 0x0700ACC0 - 0x0700ADB0\nstatic const Vtx sl_seg7_vertex_0700ACC0[] = {\n    {{{ -1433,      0,  -1228}, 0, { -2482,    990}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -1975,    614,  -1228}, 0, { -3566,   -236}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{ -1975,      0,  -1228}, 0, { -3566,    990}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{   205,      0,   1434}, 0, {     0,    990}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{   205,    614,    410}, 0, {  2012,   -236}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{   205,      0,    410}, 0, {  2012,    990}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{   205,    614,   1434}, 0, {     0,   -236}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{ -1975,      0,  -1433}, 0, { -3566,    990}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -1975,    614,  -1433}, 0, { -3566,   -236}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{ -1433,    614,  -1433}, 0, { -2482,   -236}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{ -1433,      0,  -1433}, 0, { -2482,    990}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{ -1433,      0,  -1433}, 0, {  5692,    990}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{ -1433,    614,  -1228}, 0, {  5282,   -236}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{ -1433,      0,  -1228}, 0, {  5282,    990}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -1433,    614,  -1433}, 0, {  5692,   -236}, {0x38, 0x00, 0x8f, 0xff}}},\n};\n\n// 0x0700ADB0 - 0x0700AEA0\nstatic const Vtx sl_seg7_vertex_0700ADB0[] = {\n    {{{   410,      0,   1434}, 0, {  1194,    990}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{   410,    614,   1434}, 0, {  1194,   -236}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{   205,    614,   1434}, 0, {   786,   -236}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{ -1433,      0,  -1228}, 0, { -2482,    990}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -1433,    614,  -1228}, 0, { -2482,   -236}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{ -1975,    614,  -1228}, 0, { -3566,   -236}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{ -1975,      0,  -1228}, 0, {  5282,    990}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -1975,    614,  -1228}, 0, {  5282,   -236}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{ -1975,    614,  -1433}, 0, {  5692,   -236}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{ -1975,      0,  -1433}, 0, {  5692,    990}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{   410,      0,    410}, 0, {  2012,    990}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{   410,    614,   1434}, 0, {     0,   -236}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{   410,      0,   1434}, 0, {     0,    990}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{   410,    614,    410}, 0, {  2012,   -236}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{   205,      0,   1434}, 0, {   786,    990}, {0x8f, 0x00, 0x38, 0xff}}},\n};\n\n// 0x0700AEA0 - 0x0700AFA0\nstatic const Vtx sl_seg7_vertex_0700AEA0[] = {\n    {{{ -1228,      0,    205}, 0, { -2074,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1228,    614,    205}, 0, { -2074,   -236}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1842,    614,    205}, 0, { -3300,   -236}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  -204,      0,   1434}, 0, {     0,    990}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  -409,    614,   1434}, 0, {  -438,   -236}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  -409,      0,   1434}, 0, {  -438,    990}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  -204,    614,   1434}, 0, {     0,   -236}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{  -409,      0,   1434}, 0, {     0,    990}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  -409,    614,    205}, 0, {  2420,   -236}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{  -409,      0,    205}, 0, {  2420,    990}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  -409,    614,   1434}, 0, {     0,   -236}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  -204,      0,    205}, 0, {  2420,    990}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  -204,    614,    205}, 0, {  2420,   -236}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{ -1228,      0,    717}, 0, {  1398,    990}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -1228,    614,    717}, 0, {  1398,   -236}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{ -1228,    614,   -613}, 0, {  4056,   -236}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0700AFA0 - 0x0700B080\nstatic const Vtx sl_seg7_vertex_0700AFA0[] = {\n    {{{ -1228,      0,    205}, 0, { -2074,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1842,    614,    205}, 0, { -3300,   -236}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{ -1842,      0,    205}, 0, { -3300,    990}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -1842,      0,    205}, 0, {  2420,    990}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -1842,    614,      0}, 0, {  2830,   -236}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{ -1842,      0,      0}, 0, {  2830,    990}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -1842,    614,    205}, 0, {  2420,   -236}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{ -1842,      0,      0}, 0, { -3300,    990}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -1228,    614,      0}, 0, { -2074,   -236}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1228,      0,      0}, 0, { -2074,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1842,    614,      0}, 0, { -3300,   -236}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{ -1228,      0,    717}, 0, {  1398,    990}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -1228,    614,   -613}, 0, {  4056,   -236}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1228,      0,   -613}, 0, {  4056,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0700B080 - 0x0700B170\nstatic const Vtx sl_seg7_vertex_0700B080[] = {\n    {{{  1229,      0,   -818}, 0, {  4464,    990}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  1229,    614,      0}, 0, {  2830,   -236}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{  1229,      0,      0}, 0, {  2830,    990}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{   512,    614,  -1740}, 0, {  1398,   -236}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   717,    614,  -1740}, 0, {  1808,   -236}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   717,      0,  -1740}, 0, {  1808,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   512,      0,  -1740}, 0, {  1398,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1024,      0,      0}, 0, {  2830,    990}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  1024,    614,   -818}, 0, {  4464,   -236}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{  1024,      0,   -818}, 0, {  4464,    990}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  1024,    614,      0}, 0, {  2830,   -236}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  1024,      0,   -818}, 0, {  2420,    990}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  1229,    614,   -818}, 0, {  2830,   -236}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  1229,      0,   -818}, 0, {  2830,    990}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  1024,    614,   -818}, 0, {  2420,   -236}, {0x8f, 0x00, 0xc8, 0xff}}},\n};\n\n// 0x0700B170 - 0x0700B250\nstatic const Vtx sl_seg7_vertex_0700B170[] = {\n    {{{ -1023,      0,    717}, 0, { -1666,    990}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -1228,    614,    717}, 0, { -2074,   -236}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{ -1228,      0,    717}, 0, { -2074,    990}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  1229,      0,   -818}, 0, {  4464,    990}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  1229,    614,   -818}, 0, {  4464,   -236}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  1229,    614,      0}, 0, {  2830,   -236}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{  1229,      0,      0}, 0, {  2830,    990}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  1024,    614,      0}, 0, {  2420,   -236}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  1024,      0,      0}, 0, {  2420,    990}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -1023,      0,   -613}, 0, {  4056,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1023,    614,    717}, 0, {  1398,   -236}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{ -1023,      0,    717}, 0, {  1398,    990}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -1023,    614,   -613}, 0, {  4056,   -236}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1023,    614,    717}, 0, { -1666,   -236}, {0x71, 0x00, 0x38, 0xff}}},\n};\n\n// 0x0700B250 - 0x0700B330\nstatic const Vtx sl_seg7_vertex_0700B250[] = {\n    {{{   717,      0,  -1740}, 0, {  6304,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   717,    614,   -818}, 0, {  4464,   -236}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   717,      0,   -818}, 0, {  4464,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   717,    614,  -1740}, 0, {  6304,   -236}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   512,      0,   -818}, 0, {  4464,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   512,    614,  -1740}, 0, {  6304,   -236}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   512,      0,  -1740}, 0, {  6304,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   512,    614,   -818}, 0, {  4464,   -236}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -204,    154,   2662}, 0, {  1808,    836}, {0x35, 0xe0, 0x92, 0xff}}},\n    {{{  -204,      0,   2662}, 0, {  1808,    990}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{ -1023,      0,   2662}, 0, {   990,    990}, {0x3a, 0x00, 0x90, 0xff}}},\n    {{{  1024,      0,   2662}, 0, {  3034,    990}, {0xda, 0x00, 0x87, 0xff}}},\n    {{{   205,      0,   2662}, 0, {  2216,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   205,    154,   2662}, 0, {  2216,    836}, {0xb0, 0xce, 0xac, 0xff}}},\n};\n\n// 0x0700B330 - 0x0700B420\nstatic const Vtx sl_seg7_vertex_0700B330[] = {\n    {{{ -2047,    614,   1229}, 0, {  1584,    376}, {0x53, 0xa5, 0xe6, 0xff}}},\n    {{{ -1023,    614,   2662}, 0, {     0,    376}, {0x1b, 0xdf, 0x89, 0xff}}},\n    {{{ -1023,      0,   2662}, 0, {     0,    990}, {0x3a, 0x00, 0x90, 0xff}}},\n    {{{ -1023,    614,   2662}, 0, {   990,    376}, {0x1b, 0xdf, 0x89, 0xff}}},\n    {{{  1024,    614,   2662}, 0, {  3034,    376}, {0xd6, 0xcd, 0x95, 0xff}}},\n    {{{     0,    256,   2662}, 0, {  2012,    734}, {0x0e, 0xac, 0xa2, 0xff}}},\n    {{{   205,    154,   2662}, 0, {  2216,    836}, {0xb0, 0xce, 0xac, 0xff}}},\n    {{{  1024,      0,   2662}, 0, {  3034,    990}, {0xda, 0x00, 0x87, 0xff}}},\n    {{{  -204,    154,   2662}, 0, {  1808,    836}, {0x35, 0xe0, 0x92, 0xff}}},\n    {{{ -1023,      0,   2662}, 0, {   990,    990}, {0x3a, 0x00, 0x90, 0xff}}},\n    {{{  1024,    614,   2662}, 0, {  -464,    376}, {0xd6, 0xcd, 0x95, 0xff}}},\n    {{{  2048,    614,   1229}, 0, {   714,    376}, {0x9a, 0xb8, 0xeb, 0xff}}},\n    {{{  2048,      0,   1229}, 0, {   714,    990}, {0x93, 0x29, 0xd0, 0xff}}},\n    {{{  1024,      0,   2662}, 0, {  -464,    990}, {0xda, 0x00, 0x87, 0xff}}},\n    {{{ -2047,      0,   1229}, 0, {  1584,    990}, {0x53, 0x5b, 0xe6, 0xff}}},\n};\n\n// 0x0700B420 - 0x0700B510\nstatic const Vtx sl_seg7_vertex_0700B420[] = {\n    {{{ -2047,    614,   1229}, 0, { -3300,    990}, {0x53, 0xa5, 0xe6, 0xff}}},\n    {{{  2048,    614,  -2047}, 0, {     0,  -3098}, {0xcd, 0x99, 0x33, 0xff}}},\n    {{{  2048,    614,   1229}, 0, { -3300,  -3098}, {0x9a, 0xb8, 0xeb, 0xff}}},\n    {{{ -2047,    614,  -2047}, 0, {     0,    376}, {0x33, 0xcd, 0x67, 0xff}}},\n    {{{  2048,      0,  -2047}, 0, {  4056,    990}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  2048,    614,  -2047}, 0, {  4056,    376}, {0xcd, 0x99, 0x33, 0xff}}},\n    {{{ -2047,      0,  -2047}, 0, {     0,    990}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{  2048,    614,   1229}, 0, {   714,    376}, {0x9a, 0xb8, 0xeb, 0xff}}},\n    {{{  2048,      0,  -2047}, 0, {  3910,    990}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  2048,      0,   1229}, 0, {   714,    990}, {0x93, 0x29, 0xd0, 0xff}}},\n    {{{  2048,    614,  -2047}, 0, {  3910,    376}, {0xcd, 0x99, 0x33, 0xff}}},\n    {{{ -2047,      0,  -2047}, 0, {  4780,    990}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{ -2047,    614,   1229}, 0, {  1584,    376}, {0x53, 0xa5, 0xe6, 0xff}}},\n    {{{ -2047,      0,   1229}, 0, {  1584,    990}, {0x53, 0x5b, 0xe6, 0xff}}},\n    {{{ -2047,    614,  -2047}, 0, {  4780,    376}, {0x33, 0xcd, 0x67, 0xff}}},\n};\n\n// 0x0700B510 - 0x0700B5D0\nstatic const Vtx sl_seg7_vertex_0700B510[] = {\n    {{{  2048,      0,  -2047}, 0, {   990,  -4120}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -2047,      0,  -2047}, 0, { -3096,  -4120}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{ -2047,      0,   1229}, 0, { -3096,   -850}, {0x53, 0x5b, 0xe6, 0xff}}},\n    {{{ -2047,    614,   1229}, 0, { -3300,    990}, {0x53, 0xa5, 0xe6, 0xff}}},\n    {{{ -2047,    614,  -2047}, 0, {     0,    990}, {0x33, 0xcd, 0x67, 0xff}}},\n    {{{  2048,    614,  -2047}, 0, {     0,  -3098}, {0xcd, 0x99, 0x33, 0xff}}},\n    {{{  2048,    614,   1229}, 0, { -3300,  -3098}, {0x9a, 0xb8, 0xeb, 0xff}}},\n    {{{  1024,    614,   2662}, 0, { -4732,  -2076}, {0xd6, 0xcd, 0x95, 0xff}}},\n    {{{ -1023,    614,   2662}, 0, { -4732,      0}, {0x1b, 0xdf, 0x89, 0xff}}},\n    {{{  1024,      0,   3072}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2048,      0,   1229}, 0, {   990,   -850}, {0x93, 0x29, 0xd0, 0xff}}},\n    {{{ -1023,      0,   3072}, 0, { -2074,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700B5D0 - 0x0700B620\nstatic const Vtx sl_seg7_vertex_0700B5D0[] = {\n    {{{   205,      0,   3072}, 0, {   786,    990}, {0xba, 0x00, 0x97, 0xff}}},\n    {{{     0,    256,   3072}, 0, {   990,    478}, {0xf0, 0x9c, 0xb5, 0xff}}},\n    {{{   205,    154,   3072}, 0, {   786,    684}, {0xa3, 0xc7, 0xc0, 0xff}}},\n    {{{  -204,      0,   3072}, 0, {  1194,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -204,    154,   3072}, 0, {  1194,    684}, {0x5d, 0xc7, 0xc0, 0xff}}},\n};\n\n// 0x0700B620 - 0x0700B6C0\nstatic const Vtx sl_seg7_vertex_0700B620[] = {\n    {{{     0,    256,   2662}, 0, {  1344,      0}, {0x0e, 0xac, 0xa2, 0xff}}},\n    {{{  -204,    154,   3072}, 0, {   680,   2012}, {0x5d, 0xc7, 0xc0, 0xff}}},\n    {{{  -204,    154,   2662}, 0, {   680,      0}, {0x35, 0xe0, 0x92, 0xff}}},\n    {{{     0,    256,   3072}, 0, {  1344,   2012}, {0xf0, 0x9c, 0xb5, 0xff}}},\n    {{{  -204,      0,   2662}, 0, {     0,      0}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  -204,      0,   3072}, 0, {     0,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   205,      0,   3072}, 0, {     0,   2012}, {0xba, 0x00, 0x97, 0xff}}},\n    {{{   205,    154,   3072}, 0, {   680,   2012}, {0xa3, 0xc7, 0xc0, 0xff}}},\n    {{{   205,    154,   2662}, 0, {   680,      0}, {0xb0, 0xce, 0xac, 0xff}}},\n    {{{   205,      0,   2662}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0700B6C0 - 0x0700BA70\nstatic const Gfx sl_seg7_dl_0700B6C0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&sl_seg7_lights_0700A9B0.l, 1),\n    gsSPLight(&sl_seg7_lights_0700A9B0.a, 2),\n    gsSPVertex(sl_seg7_vertex_0700A9E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(sl_seg7_vertex_0700AAE0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(sl_seg7_vertex_0700ABE0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(sl_seg7_vertex_0700ACC0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(sl_seg7_vertex_0700ADB0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(sl_seg7_vertex_0700AEA0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11,  6,  3, 0x0),\n    gsSP2Triangles(11, 12,  6, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(sl_seg7_vertex_0700AFA0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(sl_seg7_vertex_0700B080, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(sl_seg7_vertex_0700B170, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 12, 10, 0x0),\n    gsSP1Triangle( 0, 13,  1, 0x0),\n    gsSPVertex(sl_seg7_vertex_0700B250, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(sl_seg7_vertex_0700B330, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  4,  7,  6, 0x0),\n    gsSP2Triangles( 3,  5,  8, 0x0,  3,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(sl_seg7_vertex_0700B420, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(sl_seg7_vertex_0700B510, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  3,  7,  8, 0x0),\n    gsSP2Triangles( 0,  9, 10, 0x0,  0, 11,  9, 0x0),\n    gsSP1Triangle( 0,  2, 11, 0x0),\n    gsSPLight(&sl_seg7_lights_0700A9C8.l, 1),\n    gsSPLight(&sl_seg7_lights_0700A9C8.a, 2),\n    gsSPVertex(sl_seg7_vertex_0700B5D0, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP1Triangle( 0,  4,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700BA70 - 0x0700BAE8\nstatic const Gfx sl_seg7_dl_0700BA70[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&sl_seg7_lights_0700A9B0.l, 1),\n    gsSPLight(&sl_seg7_lights_0700A9B0.a, 2),\n    gsSPVertex(sl_seg7_vertex_0700B620, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  2,  1, 0x0,  4,  1,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 8,  3,  0, 0x0,  8,  7,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700BAE8 - 0x0700BB68\nconst Gfx sl_seg7_dl_0700BAE8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(sl_seg7_dl_0700B6C0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(sl_seg7_dl_0700BA70),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/sl/areas/2/2/model.inc.c",
    "content": "// 0x0700BB68 - 0x0700BB80\nstatic const Lights1 sl_seg7_lights_0700BB68 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700BB80 - 0x0700BC80\nstatic const Vtx sl_seg7_vertex_0700BB80[] = {\n    {{{  -204,    317,   1229}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   205,    317,    819}, 0, {  2012,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -204,    317,    819}, 0, {  2012,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   205,    317,   1229}, 0, {     0,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   205,    317,    819}, 0, {  2012,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   205,    307,    819}, 0, {  2012,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -204,    307,    819}, 0, {  2012,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -204,    317,    819}, 0, {  2012,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -204,    307,    819}, 0, {  2012,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   205,    307,    819}, 0, {  2012,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   205,    307,   1229}, 0, {     0,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -204,    307,   1229}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -204,    317,   1229}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -204,    307,   1229}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   205,    307,   1229}, 0, {     0,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   205,    317,   1229}, 0, {     0,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0700BC80 - 0x0700BCF8\nstatic const Gfx sl_seg7_dl_0700BC80[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&sl_seg7_lights_0700BB68.l, 1),\n    gsSPLight(&sl_seg7_lights_0700BB68.a, 2),\n    gsSPVertex(sl_seg7_vertex_0700BB80, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700BCF8 - 0x0700BD68\nconst Gfx sl_seg7_dl_0700BCF8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(sl_seg7_dl_0700BC80),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/sl/areas/2/3/model.inc.c",
    "content": "// 0x0700BD68 - 0x0700BD80\nstatic const Lights1 sl_seg7_lights_0700BD68 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700BD80 - 0x0700BE70\nstatic const Vtx sl_seg7_vertex_0700BD80[] = {\n    {{{   205,    614,      0}, 0, {  1092,   -236}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   205,      0,   -204}, 0, {  1296,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   205,      0,      0}, 0, {  1092,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,      0,   -613}, 0, {  1398,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1024,    614,   -613}, 0, {  1398,   -236}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   512,    614,   -613}, 0, {   888,   -236}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   512,      0,   -613}, 0, {   888,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   512,      0,   -613}, 0, {  1706,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,    614,   -613}, 0, {  1706,   -236}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,    614,   -818}, 0, {  1910,   -236}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,      0,   -818}, 0, {  1910,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,      0,   -818}, 0, {   888,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1024,    614,   -818}, 0, {  1398,   -236}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1024,      0,   -818}, 0, {  1398,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   512,    614,   -818}, 0, {   888,   -236}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700BE70 - 0x0700BF60\nstatic const Vtx sl_seg7_vertex_0700BE70[] = {\n    {{{   205,      0,   -818}, 0, {  1910,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,    614,  -1023}, 0, {  2114,   -236}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,    614,   -818}, 0, {  1910,   -236}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,    614,      0}, 0, {  1092,   -236}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   205,    614,   -204}, 0, {  1296,   -236}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   205,      0,   -204}, 0, {  1296,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   205,      0,   -204}, 0, {   582,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1024,    614,   -204}, 0, {  1398,   -236}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1024,      0,   -204}, 0, {  1398,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   205,    614,   -204}, 0, {   582,   -236}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1024,      0,      0}, 0, {  1398,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1024,    614,      0}, 0, {  1398,   -236}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   205,    614,      0}, 0, {   582,   -236}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   205,      0,      0}, 0, {   582,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   205,      0,  -1023}, 0, {  2114,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700BF60 - 0x0700C050\nstatic const Vtx sl_seg7_vertex_0700BF60[] = {\n    {{{   205,      0,   -818}, 0, {   582,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -204,    614,   -818}, 0, {   172,   -236}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -204,      0,   -818}, 0, {   172,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -409,      0,   -204}, 0, {  1296,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -409,    614,  -1023}, 0, {  2114,   -236}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -409,      0,  -1023}, 0, {  2114,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -409,    614,   -204}, 0, {  1296,   -236}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -204,      0,   -818}, 0, {  1910,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -204,    614,   -818}, 0, {  1910,   -236}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -204,    614,   -204}, 0, {  1296,   -236}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -204,      0,   -204}, 0, {  1296,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -204,      0,   -204}, 0, {   172,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -409,    614,   -204}, 0, {     0,   -236}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -409,      0,   -204}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -204,    614,   -204}, 0, {   172,   -236}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0700C050 - 0x0700C140\nstatic const Vtx sl_seg7_vertex_0700C050[] = {\n    {{{   819,      0,    614}, 0, {   480,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   819,    614,    614}, 0, {   480,   -236}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   819,    614,    410}, 0, {   684,   -236}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   205,      0,   -818}, 0, {   582,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   205,    614,   -818}, 0, {   582,   -236}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -204,    614,   -818}, 0, {   172,   -236}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -409,      0,  -1023}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -409,    614,  -1023}, 0, {     0,   -236}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   205,    614,  -1023}, 0, {   582,   -236}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   205,      0,  -1023}, 0, {   582,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,      0,    614}, 0, {  2420,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   819,    614,    614}, 0, {  1194,   -236}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   819,      0,    614}, 0, {  1194,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,    614,    614}, 0, {  2420,   -236}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   819,      0,    410}, 0, {   684,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700C140 - 0x0700C230\nstatic const Vtx sl_seg7_vertex_0700C140[] = {\n    {{{     0,      0,  -2047}, 0, {   376,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   205,    614,  -2047}, 0, {   582,   -236}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   205,      0,  -2047}, 0, {   582,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   819,      0,    410}, 0, {  1194,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   819,    614,    410}, 0, {  1194,   -236}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,    614,    410}, 0, {  2420,   -236}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,      0,    410}, 0, {  2420,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   205,      0,  -2047}, 0, {  3136,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,    614,  -2047}, 0, {  3136,   -236}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,    614,  -1228}, 0, {  2318,   -236}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,      0,  -1228}, 0, {  2318,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,      0,  -1433}, 0, {  2524,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,    614,  -2047}, 0, {  3136,   -236}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,      0,  -2047}, 0, {  3136,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,    614,  -1433}, 0, {  2524,   -236}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700C230 - 0x0700C320\nstatic const Vtx sl_seg7_vertex_0700C230[] = {\n    {{{  1434,      0,   -204}, 0, {  1296,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1434,    614,      0}, 0, {  1092,   -236}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1434,    614,   -204}, 0, {  1296,   -236}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,      0,  -2047}, 0, {   376,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,    614,  -2047}, 0, {   376,   -236}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   205,    614,  -2047}, 0, {   582,   -236}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1024,      0,  -1433}, 0, {  2524,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,    614,  -2047}, 0, {  3136,   -236}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,      0,  -2047}, 0, {  3136,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,    614,  -1433}, 0, {  2524,   -236}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1229,      0,  -2047}, 0, {  3136,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,    614,  -2047}, 0, {  3136,   -236}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,    614,  -1433}, 0, {  2524,   -236}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,      0,  -1433}, 0, {  2524,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1434,      0,      0}, 0, {  1092,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700C320 - 0x0700C410\nstatic const Vtx sl_seg7_vertex_0700C320[] = {\n    {{{  2048,      0,  -1228}, 0, {  2420,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,    410,  -1228}, 0, {  2420,    172}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1229,    410,  -1228}, 0, {  1604,    172}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,      0,      0}, 0, {  2420,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1434,    614,      0}, 0, {  1808,   -236}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1434,      0,      0}, 0, {  1808,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,    614,      0}, 0, {  2420,   -236}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1434,      0,   -204}, 0, {  1808,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,    614,   -204}, 0, {  2420,   -236}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,      0,   -204}, 0, {  2420,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1434,    614,   -204}, 0, {  1808,   -236}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1229,      0,  -1433}, 0, {  1604,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1229,    410,  -1433}, 0, {  1604,    172}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,    410,  -1433}, 0, {  2420,    172}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,      0,  -1433}, 0, {  2420,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700C410 - 0x0700C500\nstatic const Vtx sl_seg7_vertex_0700C410[] = {\n    {{{ -1228,      0,   -818}, 0, {  -848,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -613,    614,   -818}, 0, {  -234,   -236}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -613,      0,   -818}, 0, {  -234,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,      0,  -1228}, 0, {  2420,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1229,    410,  -1228}, 0, {  1604,    172}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1229,      0,  -1228}, 0, {  1604,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -613,    614,   -818}, 0, {  1910,   -236}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -613,      0,   -613}, 0, {  1706,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -613,      0,   -818}, 0, {  1910,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -613,    614,   -613}, 0, {  1706,   -236}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1228,      0,   -818}, 0, {  1910,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1228,    614,   -613}, 0, {  1706,   -236}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1228,    614,   -818}, 0, {  1910,   -236}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1228,      0,   -613}, 0, {  1706,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1228,    614,   -818}, 0, {  -848,   -236}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700C500 - 0x0700C5F0\nstatic const Vtx sl_seg7_vertex_0700C500[] = {\n    {{{  -204,    614,    819}, 0, {   172,   -236}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   205,    317,    819}, 0, {   582,    560}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -204,    317,    819}, 0, {   172,    560}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -613,      0,   -613}, 0, {  -234,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -613,    614,   -613}, 0, {  -234,   -236}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1228,    614,   -613}, 0, {  -848,   -236}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1228,      0,   -613}, 0, {  -848,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   205,      0,  -1228}, 0, {   582,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   205,    614,  -1228}, 0, {   582,   -236}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1433,    614,  -1228}, 0, { -1052,   -236}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1433,      0,  -1228}, 0, { -1052,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1433,      0,  -1433}, 0, { -1052,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,    614,  -1433}, 0, {   376,   -236}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,      0,  -1433}, 0, {   376,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1433,    614,  -1433}, 0, { -1052,   -236}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700C5F0 - 0x0700C6E0\nstatic const Vtx sl_seg7_vertex_0700C5F0[] = {\n    {{{ -2047,    614,   1126}, 0, { -1666,   -236}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2047,      0,   1126}, 0, { -1666,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -409,      0,   1126}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -204,    614,    819}, 0, {   172,   -236}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   205,    614,    819}, 0, {   582,   -236}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   205,    317,    819}, 0, {   582,    560}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -204,    317,   1229}, 0, {   172,    560}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   205,    317,   1229}, 0, {   582,    560}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   205,    614,   1229}, 0, {   582,   -236}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -204,    614,   1229}, 0, {   172,   -236}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   410,      0,   1126}, 0, {   786,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,      0,   1126}, 0, {  2420,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,    614,   1126}, 0, {  2420,   -236}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   410,    614,   1126}, 0, {   786,   -236}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -409,    614,   1126}, 0, {     0,   -236}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0700C6E0 - 0x0700C720\nstatic const Vtx sl_seg7_vertex_0700C6E0[] = {\n    {{{  1229,    410,  -1433}, 0, {  -848,    582}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2048,    410,  -1228}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2048,    410,  -1433}, 0, {     0,    582}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1229,    410,  -1228}, 0, {  -848,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700C720 - 0x0700C9E8\nstatic const Gfx sl_seg7_dl_0700C720[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&sl_seg7_lights_0700BD68.l, 1),\n    gsSPLight(&sl_seg7_lights_0700BD68.a, 2),\n    gsSPVertex(sl_seg7_vertex_0700BD80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(sl_seg7_vertex_0700BE70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(sl_seg7_vertex_0700BF60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(sl_seg7_vertex_0700C050, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(sl_seg7_vertex_0700C140, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(sl_seg7_vertex_0700C230, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(sl_seg7_vertex_0700C320, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(sl_seg7_vertex_0700C410, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(sl_seg7_vertex_0700C500, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(sl_seg7_vertex_0700C5F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(sl_seg7_vertex_0700C6E0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700C9E8 - 0x0700CA68\nconst Gfx sl_seg7_dl_0700C9E8[] = {\n    gsDPPipeSync(),\n    gsDPSetEnvColor(255, 255, 255, 90),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(sl_seg7_dl_0700C720),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/sl/areas/2/4/model.inc.c",
    "content": "// 0x0700CA68 - 0x0700CA80\nstatic const Lights1 sl_seg7_lights_0700CA68 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700CA80 - 0x0700CB00\nstatic const Vtx sl_seg7_vertex_0700CA80[] = {\n    {{{   410,      0,   1126}, 0, {   786,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,    614,   1126}, 0, {  2420,   -236}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   410,    614,   1126}, 0, {   786,   -236}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,      0,   1126}, 0, {  2420,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2047,    614,   1126}, 0, { -1666,   -236}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -409,      0,   1126}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -409,    614,   1126}, 0, {     0,   -236}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2047,      0,   1126}, 0, { -1666,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0700CB00 - 0x0700CB58\nstatic const Gfx sl_seg7_dl_0700CB00[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&sl_seg7_lights_0700CA68.l, 1),\n    gsSPLight(&sl_seg7_lights_0700CA68.a, 2),\n    gsSPVertex(sl_seg7_vertex_0700CA80, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700CB58 - 0x0700CBD8\nconst Gfx sl_seg7_dl_0700CB58[] = {\n    gsDPPipeSync(),\n    gsDPSetEnvColor(255, 255, 255, 100),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(sl_seg7_dl_0700CB00),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/sl/areas/2/collision.inc.c",
    "content": "// 0x0700EFFC - 0x0700F978\nconst Collision sl_seg7_area_2_collision[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0xC1),\n    COL_VERTEX(205, 0, 3482),\n    COL_VERTEX(-204, 154, 3482),\n    COL_VERTEX(0, 256, 3482),\n    COL_VERTEX(-204, 0, 3482),\n    COL_VERTEX(205, 154, 3482),\n    COL_VERTEX(205, 154, 3072),\n    COL_VERTEX(205, 0, 3072),\n    COL_VERTEX(-204, 0, 3072),\n    COL_VERTEX(0, 256, 3072),\n    COL_VERTEX(-204, 154, 3072),\n    COL_VERTEX(205, 154, 2662),\n    COL_VERTEX(205, 0, 2662),\n    COL_VERTEX(-204, 0, 2662),\n    COL_VERTEX(0, 256, 2662),\n    COL_VERTEX(-204, 154, 2662),\n    COL_VERTEX(-1668, 614, -1433),\n    COL_VERTEX(-1433, 0, -1433),\n    COL_VERTEX(-1668, 0, -1433),\n    COL_VERTEX(-1433, 614, -1433),\n    COL_VERTEX(-1433, 0, -1228),\n    COL_VERTEX(-1433, 614, -1228),\n    COL_VERTEX(-1668, 614, -1228),\n    COL_VERTEX(-1668, 0, -1228),\n    COL_VERTEX(-1228, 614, -613),\n    COL_VERTEX(-1023, 614, -613),\n    COL_VERTEX(-1023, 0, -613),\n    COL_VERTEX(-1228, 0, -613),\n    COL_VERTEX(-1023, 614, 717),\n    COL_VERTEX(-1023, 0, 717),\n    COL_VERTEX(512, 0, -818),\n    COL_VERTEX(1229, 0, -1433),\n    COL_VERTEX(1229, 0, -1228),\n    COL_VERTEX(1024, 0, -1228),\n    COL_VERTEX(1024, 0, -1433),\n    COL_VERTEX(-1433, 0, -613),\n    COL_VERTEX(-2047, 0, -818),\n    COL_VERTEX(-1433, 0, -818),\n    COL_VERTEX(205, 0, 410),\n    COL_VERTEX(-409, 0, 205),\n    COL_VERTEX(205, 0, 1434),\n    COL_VERTEX(410, 0, 410),\n    COL_VERTEX(410, 0, 1434),\n    COL_VERTEX(-204, 0, 1434),\n    COL_VERTEX(-409, 0, 1434),\n    COL_VERTEX(-204, 0, 205),\n    COL_VERTEX(-1228, 0, 205),\n    COL_VERTEX(-1842, 0, 205),\n    COL_VERTEX(-1842, 0, 0),\n    COL_VERTEX(-1228, 0, 717),\n    COL_VERTEX(512, 614, -1740),\n    COL_VERTEX(1024, 0, 0),\n    COL_VERTEX(1024, 0, -818),\n    COL_VERTEX(1229, 0, -818),\n    COL_VERTEX(1229, 0, 0),\n    COL_VERTEX(717, 0, -1740),\n    COL_VERTEX(1024, 0, 2662),\n    COL_VERTEX(-1023, 614, 2662),\n    COL_VERTEX(1024, 614, 2662),\n    COL_VERTEX(-2047, 614, 1229),\n    COL_VERTEX(-2047, 614, -2047),\n    COL_VERTEX(2048, 614, 1229),\n    COL_VERTEX(-2047, 0, -2047),\n    COL_VERTEX(717, 0, -818),\n    COL_VERTEX(717, 614, -818),\n    COL_VERTEX(512, 614, -818),\n    COL_VERTEX(1229, 614, -1433),\n    COL_VERTEX(1229, 614, -1228),\n    COL_VERTEX(1024, 614, -1228),\n    COL_VERTEX(1024, 614, -1433),\n    COL_VERTEX(-1228, 614, 717),\n    COL_VERTEX(-2047, 614, -613),\n    COL_VERTEX(-2047, 0, -613),\n    COL_VERTEX(-1433, 614, -613),\n    COL_VERTEX(-1433, 614, -818),\n    COL_VERTEX(-2047, 614, -818),\n    COL_VERTEX(205, 614, 410),\n    COL_VERTEX(410, 614, 410),\n    COL_VERTEX(-409, 614, 205),\n    COL_VERTEX(-204, 614, 205),\n    COL_VERTEX(205, 614, 1434),\n    COL_VERTEX(410, 614, 1434),\n    COL_VERTEX(-409, 614, 1434),\n    COL_VERTEX(-204, 614, 1434),\n    COL_VERTEX(-1842, 614, 205),\n    COL_VERTEX(-1228, 614, 205),\n    COL_VERTEX(-1842, 614, 0),\n    COL_VERTEX(-1228, 614, 0),\n    COL_VERTEX(-1228, 0, 0),\n    COL_VERTEX(717, 614, -1740),\n    COL_VERTEX(512, 0, -1740),\n    COL_VERTEX(1024, 614, -818),\n    COL_VERTEX(1024, 614, 0),\n    COL_VERTEX(1229, 614, -818),\n    COL_VERTEX(1229, 614, 0),\n    COL_VERTEX(-1023, 0, 2662),\n    COL_VERTEX(2048, 0, 1229),\n    COL_VERTEX(-2047, 0, 1229),\n    COL_VERTEX(2048, 0, -2047),\n    COL_VERTEX(2048, 614, -2047),\n    COL_VERTEX(205, 317, 819),\n    COL_VERTEX(-204, 307, 819),\n    COL_VERTEX(-204, 317, 819),\n    COL_VERTEX(205, 307, 819),\n    COL_VERTEX(205, 307, 1229),\n    COL_VERTEX(-204, 307, 1229),\n    COL_VERTEX(-204, 317, 1229),\n    COL_VERTEX(205, 317, 1229),\n    COL_VERTEX(410, 0, 1147),\n    COL_VERTEX(2048, 614, 1147),\n    COL_VERTEX(410, 614, 1147),\n    COL_VERTEX(2048, 0, 1147),\n    COL_VERTEX(-2047, 614, 1147),\n    COL_VERTEX(-2047, 0, 1147),\n    COL_VERTEX(-409, 0, 1147),\n    COL_VERTEX(-409, 614, 1147),\n    COL_VERTEX(-409, 614, 1106),\n    COL_VERTEX(-409, 0, 1106),\n    COL_VERTEX(-2047, 0, 1106),\n    COL_VERTEX(-2047, 614, 1106),\n    COL_VERTEX(410, 614, 1106),\n    COL_VERTEX(2048, 614, 1106),\n    COL_VERTEX(2048, 0, 1106),\n    COL_VERTEX(410, 0, 1106),\n    COL_VERTEX(-204, 614, 819),\n    COL_VERTEX(205, 0, -1228),\n    COL_VERTEX(-613, 0, -613),\n    COL_VERTEX(-1228, 0, -818),\n    COL_VERTEX(-613, 614, -818),\n    COL_VERTEX(2048, 0, -1228),\n    COL_VERTEX(1434, 0, -204),\n    COL_VERTEX(2048, 0, 0),\n    COL_VERTEX(1229, 0, -2047),\n    COL_VERTEX(0, 0, -2047),\n    COL_VERTEX(0, 0, -1433),\n    COL_VERTEX(205, 0, -2047),\n    COL_VERTEX(819, 0, 410),\n    COL_VERTEX(819, 0, 614),\n    COL_VERTEX(2048, 0, 614),\n    COL_VERTEX(-409, 0, -1023),\n    COL_VERTEX(205, 0, -818),\n    COL_VERTEX(-204, 0, -204),\n    COL_VERTEX(-204, 0, -818),\n    COL_VERTEX(-409, 0, -204),\n    COL_VERTEX(205, 0, -204),\n    COL_VERTEX(205, 614, 0),\n    COL_VERTEX(512, 0, -613),\n    COL_VERTEX(1024, 0, -613),\n    COL_VERTEX(205, 614, 1229),\n    COL_VERTEX(-204, 614, 1229),\n    COL_VERTEX(205, 614, 819),\n    COL_VERTEX(0, 614, -1433),\n    COL_VERTEX(205, 614, -1228),\n    COL_VERTEX(-613, 614, -613),\n    COL_VERTEX(-1228, 614, -818),\n    COL_VERTEX(-613, 0, -818),\n    COL_VERTEX(2048, 410, -1228),\n    COL_VERTEX(1229, 410, -1228),\n    COL_VERTEX(2048, 410, -1433),\n    COL_VERTEX(2048, 0, -1433),\n    COL_VERTEX(1229, 410, -1433),\n    COL_VERTEX(2048, 614, -204),\n    COL_VERTEX(2048, 0, -204),\n    COL_VERTEX(1434, 614, -204),\n    COL_VERTEX(2048, 614, 0),\n    COL_VERTEX(1434, 614, 0),\n    COL_VERTEX(1434, 0, 0),\n    COL_VERTEX(1229, 614, -2047),\n    COL_VERTEX(1024, 614, -2047),\n    COL_VERTEX(1024, 0, -2047),\n    COL_VERTEX(0, 614, -2047),\n    COL_VERTEX(205, 614, -2047),\n    COL_VERTEX(819, 614, 410),\n    COL_VERTEX(2048, 614, 410),\n    COL_VERTEX(2048, 0, 410),\n    COL_VERTEX(819, 614, 614),\n    COL_VERTEX(2048, 614, 614),\n    COL_VERTEX(-409, 614, -1023),\n    COL_VERTEX(205, 614, -1023),\n    COL_VERTEX(205, 0, -1023),\n    COL_VERTEX(205, 614, -818),\n    COL_VERTEX(-204, 614, -818),\n    COL_VERTEX(-409, 614, -204),\n    COL_VERTEX(-204, 614, -204),\n    COL_VERTEX(205, 0, 0),\n    COL_VERTEX(1024, 614, -204),\n    COL_VERTEX(1024, 0, -204),\n    COL_VERTEX(205, 614, -204),\n    COL_VERTEX(512, 614, -613),\n    COL_VERTEX(1024, 614, -613),\n    COL_VERTEX(-1975, 0, -1433),\n    COL_VERTEX(-1975, 614, -1433),\n    COL_VERTEX(-1975, 0, -1228),\n    COL_VERTEX(-1975, 614, -1228),\n    COL_TRI_INIT(SURFACE_DEFAULT, 106),\n    COL_TRI(12, 9, 7),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI(0, 4, 5),\n    COL_TRI(0, 5, 6),\n    COL_TRI(3, 0, 6),\n    COL_TRI(0, 2, 4),\n    COL_TRI(7, 1, 3),\n    COL_TRI(3, 6, 7),\n    COL_TRI(8, 2, 1),\n    COL_TRI(8, 1, 9),\n    COL_TRI(7, 9, 1),\n    COL_TRI(5, 4, 2),\n    COL_TRI(5, 2, 8),\n    COL_TRI(10, 5, 8),\n    COL_TRI(6, 5, 10),\n    COL_TRI(11, 7, 6),\n    COL_TRI(6, 10, 11),\n    COL_TRI(11, 12, 7),\n    COL_TRI(13, 8, 9),\n    COL_TRI(13, 9, 14),\n    COL_TRI(12, 14, 9),\n    COL_TRI(10, 8, 13),\n    COL_TRI(25, 24, 27),\n    COL_TRI(15, 16, 17),\n    COL_TRI(15, 18, 16),\n    COL_TRI(19, 20, 21),\n    COL_TRI(19, 21, 22),\n    COL_TRI(23, 24, 25),\n    COL_TRI(23, 25, 26),\n    COL_TRI(31, 67, 32),\n    COL_TRI(25, 27, 28),\n    COL_TRI(29, 62, 63),\n    COL_TRI(29, 63, 64),\n    COL_TRI(30, 65, 66),\n    COL_TRI(30, 66, 31),\n    COL_TRI(31, 66, 67),\n    COL_TRI(32, 67, 68),\n    COL_TRI(32, 68, 33),\n    COL_TRI(33, 68, 65),\n    COL_TRI(33, 65, 30),\n    COL_TRI(34, 70, 71),\n    COL_TRI(34, 72, 70),\n    COL_TRI(35, 73, 36),\n    COL_TRI(35, 74, 73),\n    COL_TRI(39, 79, 75),\n    COL_TRI(36, 73, 72),\n    COL_TRI(36, 72, 34),\n    COL_TRI(37, 75, 76),\n    COL_TRI(37, 76, 40),\n    COL_TRI(38, 77, 78),\n    COL_TRI(38, 78, 44),\n    COL_TRI(41, 79, 39),\n    COL_TRI(39, 75, 37),\n    COL_TRI(16, 18, 20),\n    COL_TRI(16, 20, 19),\n    COL_TRI(40, 76, 80),\n    COL_TRI(40, 80, 41),\n    COL_TRI(41, 80, 79),\n    COL_TRI(45, 83, 46),\n    COL_TRI(42, 81, 43),\n    COL_TRI(42, 82, 81),\n    COL_TRI(43, 77, 38),\n    COL_TRI(43, 81, 77),\n    COL_TRI(44, 78, 82),\n    COL_TRI(44, 82, 42),\n    COL_TRI(48, 23, 26),\n    COL_TRI(45, 84, 83),\n    COL_TRI(46, 83, 85),\n    COL_TRI(46, 85, 47),\n    COL_TRI(47, 85, 86),\n    COL_TRI(47, 86, 87),\n    COL_TRI(48, 69, 23),\n    COL_TRI(52, 92, 93),\n    COL_TRI(49, 88, 54),\n    COL_TRI(49, 54, 89),\n    COL_TRI(50, 90, 51),\n    COL_TRI(50, 91, 90),\n    COL_TRI(51, 92, 52),\n    COL_TRI(51, 90, 92),\n    COL_TRI(54, 63, 62),\n    COL_TRI(52, 93, 53),\n    COL_TRI(53, 91, 50),\n    COL_TRI(53, 93, 91),\n    COL_TRI(28, 27, 69),\n    COL_TRI(28, 69, 48),\n    COL_TRI(54, 88, 63),\n    COL_TRI(57, 10, 13),\n    COL_TRI(29, 49, 89),\n    COL_TRI(29, 64, 49),\n    COL_TRI(14, 12, 94),\n    COL_TRI(55, 11, 10),\n    COL_TRI(56, 57, 13),\n    COL_TRI(57, 55, 10),\n    COL_TRI(59, 61, 97),\n    COL_TRI(56, 13, 14),\n    COL_TRI(56, 14, 94),\n    COL_TRI(57, 60, 95),\n    COL_TRI(57, 95, 55),\n    COL_TRI(58, 56, 94),\n    COL_TRI(58, 94, 96),\n    COL_TRI(61, 59, 58),\n    COL_TRI(59, 97, 98),\n    COL_TRI(60, 97, 95),\n    COL_TRI(60, 98, 97),\n    COL_TRI(61, 58, 96),\n    COL_TRI_INIT(SURFACE_ICE, 2),\n    COL_TRI(159, 156, 155),\n    COL_TRI(159, 155, 157),\n    COL_TRI_INIT(SURFACE_HARD_SLIPPERY, 8),\n    COL_TRI(58, 98, 60),\n    COL_TRI(58, 57, 56),\n    COL_TRI(58, 60, 57),\n    COL_TRI(58, 59, 98),\n    COL_TRI(97, 61, 96),\n    COL_TRI(97, 55, 95),\n    COL_TRI(97, 94, 55),\n    COL_TRI(97, 96, 94),\n    COL_TRI_INIT(SURFACE_HARD_NOT_SLIPPERY, 8),\n    COL_TRI(99, 100, 101),\n    COL_TRI(99, 102, 100),\n    COL_TRI(100, 103, 104),\n    COL_TRI(100, 102, 103),\n    COL_TRI(105, 103, 106),\n    COL_TRI(105, 104, 103),\n    COL_TRI(105, 99, 101),\n    COL_TRI(105, 106, 99),\n    COL_TRI_INIT(SURFACE_NO_CAM_COLLISION, 6),\n    COL_TRI(189, 15, 17),\n    COL_TRI(189, 190, 15),\n    COL_TRI(21, 191, 22),\n    COL_TRI(21, 192, 191),\n    COL_TRI(191, 192, 190),\n    COL_TRI(191, 190, 189),\n    COL_TRI_INIT(SURFACE_VANISH_CAP_WALLS, 74),\n    COL_TRI(119, 120, 121),\n    COL_TRI(107, 108, 109),\n    COL_TRI(107, 110, 108),\n    COL_TRI(111, 112, 113),\n    COL_TRI(111, 113, 114),\n    COL_TRI(115, 116, 117),\n    COL_TRI(115, 117, 118),\n    COL_TRI(16, 18, 150),\n    COL_TRI(119, 121, 122),\n    COL_TRI(105, 106, 147),\n    COL_TRI(105, 147, 148),\n    COL_TRI(123, 99, 101),\n    COL_TRI(123, 149, 99),\n    COL_TRI(16, 150, 133),\n    COL_TRI(126, 26, 23),\n    COL_TRI(124, 20, 19),\n    COL_TRI(124, 151, 20),\n    COL_TRI(125, 23, 26),\n    COL_TRI(125, 152, 23),\n    COL_TRI(126, 153, 127),\n    COL_TRI(126, 127, 154),\n    COL_TRI(30, 159, 157),\n    COL_TRI(126, 23, 153),\n    COL_TRI(127, 125, 154),\n    COL_TRI(127, 152, 125),\n    COL_TRI(128, 155, 156),\n    COL_TRI(128, 156, 31),\n    COL_TRI(30, 157, 158),\n    COL_TRI(131, 65, 30),\n    COL_TRI(129, 160, 161),\n    COL_TRI(129, 162, 160),\n    COL_TRI(130, 163, 164),\n    COL_TRI(130, 164, 165),\n    COL_TRI(129, 165, 164),\n    COL_TRI(129, 164, 162),\n    COL_TRI(133, 169, 132),\n    COL_TRI(131, 166, 65),\n    COL_TRI(33, 68, 167),\n    COL_TRI(33, 167, 168),\n    COL_TRI(132, 169, 170),\n    COL_TRI(132, 170, 134),\n    COL_TRI(133, 150, 169),\n    COL_TRI(137, 175, 174),\n    COL_TRI(134, 151, 124),\n    COL_TRI(134, 170, 151),\n    COL_TRI(135, 171, 172),\n    COL_TRI(135, 172, 173),\n    COL_TRI(136, 174, 171),\n    COL_TRI(136, 171, 135),\n    COL_TRI(140, 182, 181),\n    COL_TRI(137, 174, 136),\n    COL_TRI(138, 176, 177),\n    COL_TRI(138, 177, 178),\n    COL_TRI(139, 179, 180),\n    COL_TRI(139, 180, 141),\n    COL_TRI(140, 181, 142),\n    COL_TRI(50, 91, 144),\n    COL_TRI(141, 180, 182),\n    COL_TRI(141, 182, 140),\n    COL_TRI(142, 181, 176),\n    COL_TRI(142, 176, 138),\n    COL_TRI(139, 178, 177),\n    COL_TRI(139, 177, 179),\n    COL_TRI(29, 90, 51),\n    COL_TRI(50, 144, 183),\n    COL_TRI(143, 184, 185),\n    COL_TRI(143, 186, 184),\n    COL_TRI(144, 186, 143),\n    COL_TRI(144, 143, 183),\n    COL_TRI(29, 64, 90),\n    COL_TRI(145, 64, 29),\n    COL_TRI(145, 187, 64),\n    COL_TRI(146, 188, 187),\n    COL_TRI(146, 187, 145),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(1),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_null_start, /*pos*/ 0, 0, 2867, /*yaw*/ 128), // unused, probably an early way to set initial position\n    COL_END(),\n};\n\n"
  },
  {
    "path": "levels/sl/areas/2/geo.inc.c",
    "content": "// 0x0E000484\nconst GeoLayout sl_geo_000484[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND_COLOR(0x0001),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 12800, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(4, 0, 2000, 6000, 0, 0, 0, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, sl_seg7_dl_0700BAE8),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, sl_seg7_dl_0700BCF8),\n                    GEO_DISPLAY_LIST(LAYER_TRANSPARENT, sl_seg7_dl_0700C9E8),\n                    GEO_DISPLAY_LIST(LAYER_TRANSPARENT, sl_seg7_dl_0700CB58),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(0, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/sl/areas/2/macro.inc.c",
    "content": "// 0x0700F978 - 0x0700FA2E\nconst MacroObject sl_seg7_area_2_macro_objs[] = {\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,               /*yaw*/   0, /*pos*/  1740,     0,   900),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,               /*yaw*/   0, /*pos*/  1440,     0,   900),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,               /*yaw*/   0, /*pos*/  1140,     0,   900),\n    MACRO_OBJECT(/*preset*/ macro_goomba,                      /*yaw*/   0, /*pos*/  1760,     0,   200),\n    MACRO_OBJECT(/*preset*/ macro_spindrift,                   /*yaw*/   0, /*pos*/  1600,    80,  -800),\n    MACRO_OBJECT(/*preset*/ macro_box_vanish_cap,              /*yaw*/   0, /*pos*/  1660,   300, -1720),\n    MACRO_OBJECT(/*preset*/ macro_box_three_coins,             /*yaw*/   0, /*pos*/  -720,   300, -1740),\n    MACRO_OBJECT(/*preset*/ macro_bobomb_buddy_opens_cannon_1, /*yaw*/   0, /*pos*/ -1400,     0, -1740),\n    MACRO_OBJECT(/*preset*/ macro_goomba,                      /*yaw*/   0, /*pos*/   -20,     0,   960),\n    MACRO_OBJECT(/*preset*/ macro_goomba,                      /*yaw*/   0, /*pos*/   320,     0, -1220),\n    MACRO_OBJECT(/*preset*/ macro_spindrift,                   /*yaw*/   0, /*pos*/  -860,    40,  2040),\n    MACRO_OBJECT(/*preset*/ macro_spindrift,                   /*yaw*/   0, /*pos*/   800,    60,  2000),\n    MACRO_OBJECT(/*preset*/ macro_coin_line_horizontal,        /*yaw*/  90, /*pos*/  1500,     0,   500),\n    MACRO_OBJECT(/*preset*/ macro_coin_line_horizontal_flying, /*yaw*/  90, /*pos*/  1500,   100,   500),\n    MACRO_OBJECT(/*preset*/ macro_coin_line_horizontal_flying, /*yaw*/  90, /*pos*/  1500,   200,   500),\n    MACRO_OBJECT(/*preset*/ macro_coin_line_horizontal_flying, /*yaw*/  90, /*pos*/  1500,   300,   500),\n    MACRO_OBJECT(/*preset*/ macro_1up,                         /*yaw*/   0, /*pos*/  1700,    20,  -100),\n    MACRO_OBJECT(/*preset*/ macro_box_1up_running_away,        /*yaw*/   0, /*pos*/  -120,   300, -1740),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/sl/geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"game/level_geo.h\"\n#include \"game/geo_misc.h\"\n#include \"game/camera.h\"\n#include \"game/moving_texture.h\"\n#include \"game/screen_transition.h\"\n#include \"game/paintings.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"levels/sl/header.h\"\n\n#include \"levels/sl/unused_cracked_ice/geo.inc.c\"\n#include \"levels/sl/unused_ice_shard/geo.inc.c\"\n#include \"levels/sl/snow_mound/geo.inc.c\"\n#include \"levels/sl/areas/1/geo.inc.c\"\n#include \"levels/sl/areas/2/geo.inc.c\"\n"
  },
  {
    "path": "levels/sl/header.h",
    "content": "#ifndef SL_HEADER_H\n#define SL_HEADER_H\n\n#include \"types.h\"\n#include \"game/moving_texture.h\"\n\n// geo\nextern const GeoLayout sl_geo_000360[];\nextern const GeoLayout sl_geo_000378[];\nextern const GeoLayout sl_geo_000390[];\nextern const GeoLayout sl_geo_0003A8[];\nextern const GeoLayout sl_geo_000484[];\n\n// leveldata\nextern const Gfx sl_seg7_dl_07005478[];\nextern const Gfx sl_seg7_dl_070056B0[];\nextern const Gfx sl_seg7_dl_070073D0[];\nextern const Gfx sl_seg7_dl_07007880[];\nextern const Gfx sl_seg7_dl_070088B0[];\nextern const Gfx sl_seg7_dl_07008D58[];\nextern const Gfx sl_seg7_dl_0700A5A0[];\nextern const Gfx sl_seg7_dl_0700A780[];\nextern const Gfx sl_seg7_dl_0700A890[];\nextern const Gfx sl_seg7_dl_0700A980[];\nextern const Gfx sl_seg7_dl_0700BAE8[];\nextern const Gfx sl_seg7_dl_0700BCF8[];\nextern const Gfx sl_seg7_dl_0700C9E8[];\nextern const Gfx sl_seg7_dl_0700CB58[];\nextern const Collision sl_seg7_area_1_collision[];\nextern const MacroObject sl_seg7_area_1_macro_objs[];\nextern const Collision sl_seg7_collision_sliding_snow_mound[];\nextern const Collision sl_seg7_collision_pound_explodes[];\nextern const Collision sl_seg7_area_2_collision[];\nextern const MacroObject sl_seg7_area_2_macro_objs[];\nextern const struct MovtexQuadCollection sl_movtex_water[];\n\n// script\nextern const LevelScript level_sl_entry[];\n\n#endif\n"
  },
  {
    "path": "levels/sl/level.yaml",
    "content": "# Snowman's Land\nshort-name: sl\nfull-name: Snowman's Land\ntexture-file: [\"/texture.inc.c\"]\narea-count: 2\nobjects: [snow_mound, unused_cracked_ice, unused_ice_shard]\nshared-path: []\n# loaded files\nskybox-bin: ccm\ntexture-bin: snow\neffects: true\nactor-bins: [group7, group16]\ncommon-bin: [common0]\n"
  },
  {
    "path": "levels/sl/leveldata.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"surface_terrains.h\"\n#include \"moving_texture_macros.h\"\n#include \"level_misc_macros.h\"\n#include \"macro_presets.h\"\n#include \"special_presets.h\"\n#include \"textures.h\"\n#include \"dialog_ids.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/sl/texture.inc.c\"\n#include \"levels/sl/areas/1/1/model.inc.c\"\n#include \"levels/sl/areas/1/2/model.inc.c\"\n#include \"levels/sl/areas/1/3/model.inc.c\"\n#include \"levels/sl/areas/1/4/model.inc.c\"\n#include \"levels/sl/areas/1/5/model.inc.c\"\n#include \"levels/sl/areas/1/6/model.inc.c\"\n#include \"levels/sl/areas/1/7/model.inc.c\"\n#include \"levels/sl/snow_mound/model.inc.c\"\n#include \"levels/sl/unused_cracked_ice/model.inc.c\"\n#include \"levels/sl/unused_ice_shard/model.inc.c\" // Used in the unused behavior when ground pounding the cracked ice show in the above model.\n#include \"levels/sl/areas/2/1/model.inc.c\"\n#include \"levels/sl/areas/2/2/model.inc.c\"\n#include \"levels/sl/areas/2/3/model.inc.c\"\n#include \"levels/sl/areas/2/4/model.inc.c\"\n#include \"levels/sl/areas/1/collision.inc.c\"\n#include \"levels/sl/areas/1/macro.inc.c\"\n#include \"levels/sl/snow_mound/collision.inc.c\"\n#include \"levels/sl/unused_cracked_ice/collision.inc.c\"\n#include \"levels/sl/areas/2/collision.inc.c\"\n#include \"levels/sl/areas/2/macro.inc.c\"\n#include \"levels/sl/areas/1/movtext.inc.c\"\n"
  },
  {
    "path": "levels/sl/script.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"behavior_data.h\"\n#include \"model_ids.h\"\n#include \"seq_ids.h\"\n#include \"segment_symbols.h\"\n#include \"level_commands.h\"\n\n#include \"game/level_update.h\"\n\n#include \"levels/scripts.h\"\n\n#include \"actors/common1.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/sl/header.h\"\n\n\nstatic const LevelScript script_func_local_1[] = {\n    OBJECT_WITH_ACTS(/*model*/ MODEL_STAR, /*pos*/  700, 4500,  690, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_1), /*bhv*/ bhvStar,                 /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_STAR, /*pos*/ 4350, 1350, 4350, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_3), /*bhv*/ bhvStar,                 /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_NONE, /*pos*/ 5000, 1200,    0, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_5), /*bhv*/ bhvHiddenRedCoinStar, /*acts*/ ALL_ACTS),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_2[] = {\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/  977, 1024, 2075, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvSnowMoundSpawn),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_3[] = {\n    OBJECT(/*model*/ MODEL_PENGUIN,            /*pos*/ 1715, 3328,   518, /*angle*/ 0, -51, 0, /*bhvParam*/ 0, /*bhv*/ bhvSLWalkingPenguin),\n    OBJECT(/*model*/ MODEL_NONE,               /*pos*/  700, 3428,   700, /*angle*/ 0,  30, 0, /*bhvParam*/ 0, /*bhv*/ bhvSLSnowmanWind),\n    OBJECT(/*model*/ MODEL_NONE,               /*pos*/  480, 2300,  1370, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvIgloo),\n    OBJECT(/*model*/ MODEL_BIG_CHILL_BULLY,    /*pos*/  315, 1331, -4852, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_2), /*bhv*/ bhvBigChillBully),\n    OBJECT(/*model*/ MODEL_MR_BLIZZARD_HIDDEN, /*pos*/ 2954,  970,   750, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(MR_BLIZZARD_STYPE_CAP), /*bhv*/ bhvMrBlizzard),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_4[] = {\n    OBJECT_WITH_ACTS(/*model*/ MODEL_STAR, /*pos*/ 0, 500, 1000, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_6), /*bhv*/ bhvStar, /*acts*/ ALL_ACTS),\n    RETURN(),\n};\n\nconst LevelScript level_sl_entry[] = {\n    INIT_LEVEL(),\n    LOAD_MIO0        (/*seg*/ 0x07, _sl_segment_7SegmentRomStart, _sl_segment_7SegmentRomEnd),\n    LOAD_MIO0_TEXTURE(/*seg*/ 0x09, _snow_mio0SegmentRomStart, _snow_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x0B, _effect_mio0SegmentRomStart, _effect_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x0A, _ccm_skybox_mio0SegmentRomStart, _ccm_skybox_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x05, _group7_mio0SegmentRomStart, _group7_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0C, _group7_geoSegmentRomStart,  _group7_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x06, _group16_mio0SegmentRomStart, _group16_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0D, _group16_geoSegmentRomStart,  _group16_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x08, _common0_mio0SegmentRomStart, _common0_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0F, _common0_geoSegmentRomStart,  _common0_geoSegmentRomEnd),\n    ALLOC_LEVEL_POOL(),\n    MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),\n    JUMP_LINK(script_func_global_1),\n    JUMP_LINK(script_func_global_8),\n    JUMP_LINK(script_func_global_17),\n    LOAD_MODEL_FROM_GEO(MODEL_SL_SNOW_TRIANGLE,     sl_geo_000390),\n    LOAD_MODEL_FROM_GEO(MODEL_SL_CRACKED_ICE,       sl_geo_000360),\n    LOAD_MODEL_FROM_GEO(MODEL_SL_CRACKED_ICE_CHUNK, sl_geo_000378),\n    LOAD_MODEL_FROM_GEO(MODEL_SL_SNOW_TREE,         snow_tree_geo),\n\n    AREA(/*index*/ 1, sl_geo_0003A8),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/  5541, 2024,   443, /*angle*/ 0, 270, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvSpinAirborneWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/   257, 2150,  1399, /*angle*/ 0, 290, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0B), /*bhv*/ bhvInstantActiveWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/   569, 2150,  1336, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(6) | BPARAM2(WARP_NODE_0C), /*bhv*/ bhvWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/  5468, 1056, -5400, /*angle*/ 0, -20, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0D), /*bhv*/ bhvFadingWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ -3698, 1024, -1237, /*angle*/ 0,   6, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0E), /*bhv*/ bhvFadingWarp),\n        WARP_NODE(/*id*/ WARP_NODE_0A, /*destLevel*/ LEVEL_SL, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_0B, /*destLevel*/ LEVEL_SL, /*destArea*/ 1, /*destNode*/ WARP_NODE_0B, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_0C, /*destLevel*/ LEVEL_SL, /*destArea*/ 2, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_0D, /*destLevel*/ LEVEL_SL, /*destArea*/ 1, /*destNode*/ WARP_NODE_0E, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_0E, /*destLevel*/ LEVEL_SL, /*destArea*/ 1, /*destNode*/ WARP_NODE_0D, /*flags*/ WARP_NO_CHECKPOINT),\n        JUMP_LINK(script_func_local_1),\n        JUMP_LINK(script_func_local_2),\n        JUMP_LINK(script_func_local_3),\n        WARP_NODE(/*id*/ WARP_NODE_SUCCESS,    /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_36, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_68, /*flags*/ WARP_NO_CHECKPOINT),\n        TERRAIN(/*terrainData*/ sl_seg7_area_1_collision),\n        MACRO_OBJECTS(/*objList*/ sl_seg7_area_1_macro_objs),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0000, /*seq*/ SEQ_LEVEL_SNOW),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_SNOW),\n    END_AREA(),\n\n    AREA(/*index*/ 2, sl_geo_000484),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, 0, 2867, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvInstantActiveWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, 0, 3277, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(20) | BPARAM2(WARP_NODE_0B), /*bhv*/ bhvWarp),\n        WARP_NODE(/*id*/ WARP_NODE_0A, /*destLevel*/ LEVEL_SL, /*destArea*/ 2, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_0B, /*destLevel*/ LEVEL_SL, /*destArea*/ 1, /*destNode*/ WARP_NODE_0B, /*flags*/ WARP_NO_CHECKPOINT),\n        JUMP_LINK(script_func_local_4),\n        WARP_NODE(/*id*/ WARP_NODE_SUCCESS,    /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_36, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_68, /*flags*/ WARP_NO_CHECKPOINT),\n        TERRAIN(/*terrainData*/ sl_seg7_area_2_collision),\n        MACRO_OBJECTS(/*objList*/ sl_seg7_area_2_macro_objs),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0004, /*seq*/ SEQ_LEVEL_UNDERGROUND),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_SNOW),\n    END_AREA(),\n\n    FREE_LEVEL_POOL(),\n    MARIO_POS(/*area*/ 1, /*yaw*/ 270, /*pos*/ 5541, 1024, 443),\n    CALL(/*arg*/ 0, /*func*/ lvl_init_or_update),\n    CALL_LOOP(/*arg*/ 1, /*func*/ lvl_init_or_update),\n    CLEAR_LEVEL(),\n    SLEEP_BEFORE_EXIT(/*frames*/ 1),\n    EXIT(),\n};\n"
  },
  {
    "path": "levels/sl/snow_mound/collision.inc.c",
    "content": "// 0x0700EF6C - 0x0700EFC0\nconst Collision sl_seg7_collision_sliding_snow_mound[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x6),\n    COL_VERTEX(102, 0, -255),\n    COL_VERTEX(0, 102, 256),\n    COL_VERTEX(102, 0, 256),\n    COL_VERTEX(0, 102, -255),\n    COL_VERTEX(-101, 0, 256),\n    COL_VERTEX(-101, 0, -255),\n    COL_TRI_INIT(SURFACE_DEFAULT, 6),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI(3, 4, 1),\n    COL_TRI(3, 5, 4),\n    COL_TRI(1, 4, 2),\n    COL_TRI(0, 5, 3),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/sl/snow_mound/geo.inc.c",
    "content": "// 0x0E000390\nconst GeoLayout sl_geo_000390[] = {\n    GEO_CULLING_RADIUS(350),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, sl_seg7_dl_0700A780),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/sl/snow_mound/model.inc.c",
    "content": "// 0x0700A620 - 0x0700A638\nstatic const Lights1 sl_seg7_lights_0700A620 = gdSPDefLights1(\n    0x73, 0x73, 0x73,\n    0xe6, 0xe6, 0xe6, 0x28, 0x28, 0x28\n);\n\n// 0x0700A638 - 0x0700A718\nstatic const Vtx sl_seg7_vertex_0700A638[] = {\n    {{{   102,      0,   -255}, 0, {  2522,   2010}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{     0,    102,    256}, 0, {     0,   1498}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{   102,      0,    256}, 0, {     0,   2010}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{     0,    102,   -255}, 0, {  2522,   1500}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{     0,    102,   -255}, 0, {  2522,   1500}, {0xa6, 0x59, 0x00, 0xff}}},\n    {{{  -101,      0,    256}, 0, {     0,    990}, {0xa6, 0x59, 0x00, 0xff}}},\n    {{{     0,    102,    256}, 0, {     0,   1498}, {0xa6, 0x59, 0x00, 0xff}}},\n    {{{  -101,      0,   -255}, 0, {  2522,    990}, {0xa6, 0x59, 0x00, 0xff}}},\n    {{{     0,    102,    256}, 0, {   478,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -101,      0,    256}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,      0,    256}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,      0,   -255}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -101,      0,   -255}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,    102,   -255}, 0, {   478,    480}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700A718 - 0x0700A780\nstatic const Gfx sl_seg7_dl_0700A718[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&sl_seg7_lights_0700A620.l, 1),\n    gsSPLight(&sl_seg7_lights_0700A620.a, 2),\n    gsSPVertex(sl_seg7_vertex_0700A638, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A780 - 0x0700A7F0\nconst Gfx sl_seg7_dl_0700A780[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(sl_seg7_dl_0700A718),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/sl/texture.inc.c",
    "content": "// 0x07000000 - 0x07000800\nALIGNED8 static const Texture sl_seg7_texture_07000000[] = {\n#include \"levels/sl/0.rgba16.inc.c\"\n};\n\n// 0x07000800 - 0x07001000\nALIGNED8 static const Texture sl_seg7_texture_07000800[] = {\n#include \"levels/sl/1.rgba16.inc.c\"\n};\n\n// 0x07001000 - 0x07001800\nALIGNED8 static const Texture sl_seg7_texture_07001000[] = {\n#include \"levels/sl/2.rgba16.inc.c\"\n};\n\n// 0x07001800 - 0x07002000\nALIGNED8 static const Texture sl_seg7_texture_07001800[] = {\n#include \"levels/sl/3.rgba16.inc.c\"\n};\n\n// 0x07002000 - 0x07002800\nALIGNED8 static const Texture sl_seg7_texture_07002000[] = {\n#include \"levels/sl/4.rgba16.inc.c\"\n};\n"
  },
  {
    "path": "levels/sl/unused_cracked_ice/collision.inc.c",
    "content": "// 0x0700EFC0 - 0x0700EFFC\nconst Collision sl_seg7_collision_pound_explodes[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x5),\n    COL_VERTEX(-101, 0, 102),\n    COL_VERTEX(102, 0, 102),\n    COL_VERTEX(0, 0, 0),\n    COL_VERTEX(-101, 0, -101),\n    COL_VERTEX(102, 0, -101),\n    COL_TRI_INIT(SURFACE_ICE, 3),\n    COL_TRI(4, 3, 1),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/sl/unused_cracked_ice/geo.inc.c",
    "content": "// 0x0E000360\nconst GeoLayout sl_geo_000360[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, sl_seg7_dl_0700A890),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/sl/unused_cracked_ice/model.inc.c",
    "content": "// 0x0700A7F0 - 0x0700A808\nstatic const Lights1 sl_seg7_lights_0700A7F0 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700A808 - 0x0700A848\nstatic const Vtx sl_seg7_vertex_0700A808[] = {\n    {{{  -101,      0,    102}, 0, {   734,    734}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,      0,    102}, 0, {   734,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -101,      0,   -101}, 0, {   224,    734}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,      0,   -101}, 0, {   224,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700A848 - 0x0700A890\nstatic const Gfx sl_seg7_dl_0700A848[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sl_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&sl_seg7_lights_0700A7F0.l, 1),\n    gsSPLight(&sl_seg7_lights_0700A7F0.a, 2),\n    gsSPVertex(sl_seg7_vertex_0700A808, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A890 - 0x0700A910\nconst Gfx sl_seg7_dl_0700A890[] = {\n    gsDPPipeSync(),\n    gsDPSetEnvColor(255, 255, 255, 100),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(sl_seg7_dl_0700A848),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/sl/unused_ice_shard/geo.inc.c",
    "content": "// 0x0E000378\nconst GeoLayout sl_geo_000378[] = {\n    GEO_NODE_START(),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, sl_seg7_dl_0700A980),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/sl/unused_ice_shard/model.inc.c",
    "content": "// 0x0700A910 - 0x0700A928\nstatic const Lights1 sl_seg7_lights_0700A910 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700A928 - 0x0700A958\nstatic const Vtx sl_seg7_vertex_0700A928[] = {\n    {{{    -8,      0,      5}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x64}}},\n    {{{     9,      0,      5}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x64}}},\n    {{{     0,      0,     -9}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0x64}}},\n};\n\n// 0x0700A958 - 0x0700A980\nstatic const Gfx sl_seg7_dl_0700A958[] = {\n    gsSPLight(&sl_seg7_lights_0700A910.l, 1),\n    gsSPLight(&sl_seg7_lights_0700A910.a, 2),\n    gsSPVertex(sl_seg7_vertex_0700A928, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A980 - 0x0700A9B0\nconst Gfx sl_seg7_dl_0700A980[] = {\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPDisplayList(sl_seg7_dl_0700A958),\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ssl/areas/1/1/model.inc.c",
    "content": "// 0x07004BE0 - 0x07004BF8\nstatic const Lights1 ssl_seg7_lights_07004BE0 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x07004BF8 - 0x07004C10\nstatic const Lights1 ssl_seg7_lights_07004BF8 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07004C10 - 0x07004C28\nstatic const Lights1 ssl_seg7_lights_07004C10 = gdSPDefLights1(\n    0x0c, 0x0c, 0x0c,\n    0x32, 0x32, 0x32, 0x28, 0x28, 0x28\n);\n\n// 0x07004C28 - 0x07004C40\nstatic const Lights1 ssl_seg7_lights_07004C28 = gdSPDefLights1(\n    0x19, 0x19, 0x19,\n    0x64, 0x64, 0x64, 0x28, 0x28, 0x28\n);\n\n// 0x07004C40 - 0x07004C80\nstatic const Vtx ssl_seg7_vertex_07004C40[] = {\n    {{{ -1945,    768,   -921}, 0, {  6100,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1945,    768,  -1125}, 0, { 10188,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2149,    768,  -1125}, 0, { 10188,  -7186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2149,    768,   -921}, 0, {  6100,  -7186}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07004C80 - 0x07004D70\nstatic const Vtx ssl_seg7_vertex_07004C80[] = {\n    {{{  -767,    512,  -2303}, 0, { 13254,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,    512,    256}, 0, {  3034,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -383,    512,    256}, 0, {  3034,   1498}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2815,   1024,   -255}, 0, {  5078,  -8208}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2943,   1024,  -1791}, 0, { 11210,  -8718}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2943,   1024,   -255}, 0, {  5078,  -8718}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2815,   1024,  -1791}, 0, { 11210,  -8208}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3071,    768,  -2303}, 0, { 13254,  -9230}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,    768,  -2047}, 0, { 12232,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,    768,  -2303}, 0, { 13254,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3071,    768,  -2047}, 0, { 12232,  -9230}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,    256,   1024}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,    256,    512}, 0, {  2012,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3583,    256,    512}, 0, {  2012, -11274}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3583,    256,   1024}, 0, {     0, -11274}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07004D70 - 0x07004E60\nstatic const Vtx ssl_seg7_vertex_07004D70[] = {\n    {{{ -1920,   1103,   -639}, 0, {  3032,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2176,   1103,   -639}, 0, {  2012,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2176,   1103,   -334}, 0, {  2022,    676}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,    512,  -2303}, 0, { 13254,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -383,    512,    256}, 0, {  3034,   1498}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -383,    512,  -2303}, 0, { 13254,   1498}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2175,      0,   2048}, 0, { -3222,    480}, {0x00, 0x7b, 0x1e, 0xff}}},\n    {{{ -1919,    256,   1024}, 0, {   990,   1500}, {0x00, 0x7b, 0x1e, 0xff}}},\n    {{{ -2175,    256,   1024}, 0, {   990,    478}, {0x00, 0x7b, 0x1e, 0xff}}},\n    {{{ -1919,      0,   2048}, 0, { -3222,   1500}, {0x00, 0x7b, 0x1e, 0xff}}},\n    {{{ -1919,    256,    512}, 0, {   990,   1688}, {0x00, 0x66, 0xb5, 0xff}}},\n    {{{ -1919,      0,    165}, 0, {   990,      0}, {0x00, 0x66, 0xb5, 0xff}}},\n    {{{ -2175,      0,    165}, 0, {     0,      0}, {0x00, 0x66, 0xb5, 0xff}}},\n    {{{ -2175,    256,    512}, 0, {     0,   1688}, {0x00, 0x66, 0xb5, 0xff}}},\n    {{{ -1920,   1103,   -334}, 0, {  3034,    676}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07004E60 - 0x07004F60\nstatic const Vtx ssl_seg7_vertex_07004E60[] = {\n    {{{ -1535,   1280,  -1535}, 0, {  4056,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1945,   1280,  -1125}, 0, {  2420,   1602}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1945,   1280,   -921}, 0, {  2420,   2418}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2559,   1280,  -1535}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,   1280,   -511}, 0, {  4056,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2176,   1280,   -639}, 0, {  1498,   3542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1920,   1280,   -639}, 0, {  2520,   3542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2149,   1280,   -921}, 0, {  1604,   2418}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1920,   1280,   -511}, 0, {  2520,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2149,   1280,  -1125}, 0, {  1604,   1602}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2559,   1280,   -511}, 0, {     0,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2176,   1280,   -511}, 0, {  1498,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2736,   1103,   -334}, 0, {  -228,    676}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2736,   1103,   -255}, 0, {  -228,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1919,   1103,   -255}, 0, {  3034,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1920,   1103,   -334}, 0, {  3034,    676}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07004F60 - 0x07004FA0\nstatic const Vtx ssl_seg7_vertex_07004F60[] = {\n    {{{ -1919,      0,    165}, 0, {   990,    840}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2175,      0,    -52}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2175,      0,    165}, 0, {     0,    840}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1919,      0,    -52}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07004FA0 - 0x07004FE0\nstatic const Vtx ssl_seg7_vertex_07004FA0[] = {\n    {{{ -2175,    437,    331}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2175,    437,    -52}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1919,    437,    -52}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1919,    437,    331}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07004FE0 - 0x070050D0\nstatic const Vtx ssl_seg7_vertex_07004FE0[] = {\n    {{{  5120,      0,   2048}, 0, {  -336,    344}, {0x00, 0x78, 0xd9, 0xff}}},\n    {{{  6579,     51,   2202}, 0, {  5486,    990}, {0x00, 0x78, 0xd9, 0xff}}},\n    {{{  6656,      0,   2048}, 0, {  5794,    344}, {0x00, 0x78, 0xd9, 0xff}}},\n    {{{  5104,    614,   4624}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6672,    614,   4624}, 0, {  6100,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6672,    614,   2032}, 0, {  6100,  -9230}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5104,    614,   2032}, 0, {     0,  -9230}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6656,      0,   4608}, 0, {  5896,    614}, {0x00, 0x78, 0x27, 0xff}}},\n    {{{  6579,     51,   4454}, 0, {  5590,      0}, {0x00, 0x78, 0x27, 0xff}}},\n    {{{  5197,     51,   4454}, 0, {    70,      0}, {0x00, 0x78, 0x27, 0xff}}},\n    {{{  5120,      0,   4608}, 0, {  -234,    614}, {0x00, 0x78, 0x27, 0xff}}},\n    {{{  6656,      0,   2048}, 0, {   336,   -646}, {0x46, 0x69, 0x00, 0xff}}},\n    {{{  6579,     51,   4454}, 0, {     0,   8960}, {0x46, 0x69, 0x00, 0xff}}},\n    {{{  6656,      0,   4608}, 0, {   336,   9572}, {0x46, 0x69, 0x00, 0xff}}},\n    {{{  6579,     51,   2202}, 0, {     0,      0}, {0x46, 0x69, 0x00, 0xff}}},\n};\n\n// 0x070050D0 - 0x070051C0\nstatic const Vtx ssl_seg7_vertex_070050D0[] = {\n    {{{  6451,     51,   4326}, 0, {   990,   3646}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6579,    512,   4326}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6579,     51,   4326}, 0, {     0,   3646}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5120,      0,   2048}, 0, {  -336,    344}, {0x00, 0x78, 0xd9, 0xff}}},\n    {{{  5197,     51,   2202}, 0, {     0,    990}, {0x00, 0x78, 0xd9, 0xff}}},\n    {{{  6579,     51,   2202}, 0, {  5486,    990}, {0x00, 0x78, 0xd9, 0xff}}},\n    {{{  5120,      0,   4608}, 0, {   622,   9572}, {0xba, 0x69, 0x00, 0xff}}},\n    {{{  5197,     51,   4454}, 0, {   990,   8960}, {0xba, 0x69, 0x00, 0xff}}},\n    {{{  5197,     51,   2202}, 0, {   990,      0}, {0xba, 0x69, 0x00, 0xff}}},\n    {{{  5120,      0,   2048}, 0, {   622,   -646}, {0xba, 0x69, 0x00, 0xff}}},\n    {{{  5197,     51,   4454}, 0, {    70,   8960}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6579,     51,   4454}, 0, {  5588,   8960}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6579,     51,   2202}, 0, {  5590,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5197,     51,   2202}, 0, {    70,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6451,    512,   4326}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070051C0 - 0x070052B0\nstatic const Vtx ssl_seg7_vertex_070051C0[] = {\n    {{{  6579,    512,   4326}, 0, {  1118,    396}, {0x79, 0xda, 0x00, 0xff}}},\n    {{{  6595,    563,   4310}, 0, {  1246,      0}, {0x79, 0xda, 0x00, 0xff}}},\n    {{{  6595,    563,   4470}, 0, {     0,      0}, {0x79, 0xda, 0x00, 0xff}}},\n    {{{  6451,     51,   4454}, 0, {   990,   3646}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6451,    512,   4326}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6451,     51,   4326}, 0, {     0,   3646}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6451,    512,   4454}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6579,     51,   4454}, 0, {   990,   3646}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6451,    512,   4454}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6451,     51,   4454}, 0, {     0,   3646}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6579,    512,   4454}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6579,     51,   4326}, 0, {   990,   3646}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6579,    512,   4326}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6579,    512,   4454}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6579,     51,   4454}, 0, {     0,   3646}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070052B0 - 0x070053A0\nstatic const Vtx ssl_seg7_vertex_070052B0[] = {\n    {{{  6451,    512,   4326}, 0, {   862,    396}, {0x00, 0xda, 0x87, 0xff}}},\n    {{{  6595,    563,   4310}, 0, {  -286,      0}, {0x00, 0xda, 0x87, 0xff}}},\n    {{{  6579,    512,   4326}, 0, {  -158,    396}, {0x00, 0xda, 0x87, 0xff}}},\n    {{{  6579,    512,   4326}, 0, {  1118,    396}, {0x79, 0xda, 0x00, 0xff}}},\n    {{{  6595,    563,   4470}, 0, {     0,      0}, {0x79, 0xda, 0x00, 0xff}}},\n    {{{  6579,    512,   4454}, 0, {    96,    396}, {0x79, 0xda, 0x00, 0xff}}},\n    {{{  6579,    512,   4454}, 0, {   862,    396}, {0x00, 0xda, 0x79, 0xff}}},\n    {{{  6435,    563,   4470}, 0, {  -286,      0}, {0x00, 0xda, 0x79, 0xff}}},\n    {{{  6451,    512,   4454}, 0, {  -158,    396}, {0x00, 0xda, 0x79, 0xff}}},\n    {{{  6595,    563,   4470}, 0, {   990,      0}, {0x00, 0xda, 0x79, 0xff}}},\n    {{{  6451,    512,   4454}, 0, {   862,    396}, {0x87, 0xda, 0x00, 0xff}}},\n    {{{  6435,    563,   4310}, 0, {  -286,      0}, {0x87, 0xda, 0x00, 0xff}}},\n    {{{  6451,    512,   4326}, 0, {  -158,    396}, {0x87, 0xda, 0x00, 0xff}}},\n    {{{  6435,    563,   4470}, 0, {   990,      0}, {0x87, 0xda, 0x00, 0xff}}},\n    {{{  6435,    563,   4310}, 0, {   990,      0}, {0x00, 0xda, 0x87, 0xff}}},\n};\n\n// 0x070053A0 - 0x07005490\nstatic const Vtx ssl_seg7_vertex_070053A0[] = {\n    {{{  6451,    512,   2330}, 0, {   862,    396}, {0x87, 0xda, 0x00, 0xff}}},\n    {{{  6435,    563,   2186}, 0, {  -286,      0}, {0x87, 0xda, 0x00, 0xff}}},\n    {{{  6451,    512,   2202}, 0, {  -158,    396}, {0x87, 0xda, 0x00, 0xff}}},\n    {{{  6595,    563,   4310}, 0, {   990,  14104}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6435,    563,   4310}, 0, {   -72,  14104}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6435,    563,   4470}, 0, {   -72,  15168}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6595,    563,   4470}, 0, {   990,  15168}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6595,    563,   2186}, 0, {   990,  14104}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6435,    563,   2346}, 0, {   -72,  15168}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6595,    563,   2346}, 0, {   990,  15168}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6435,    563,   2186}, 0, {   -72,  14104}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6451,    512,   2202}, 0, {   862,    396}, {0x00, 0xda, 0x87, 0xff}}},\n    {{{  6435,    563,   2186}, 0, {   990,      0}, {0x00, 0xda, 0x87, 0xff}}},\n    {{{  6595,    563,   2186}, 0, {  -286,      0}, {0x00, 0xda, 0x87, 0xff}}},\n    {{{  6579,    512,   2202}, 0, {  -158,    396}, {0x00, 0xda, 0x87, 0xff}}},\n};\n\n// 0x07005490 - 0x07005580\nstatic const Vtx ssl_seg7_vertex_07005490[] = {\n    {{{  6579,     51,   2202}, 0, {   990,   3646}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6579,    512,   2330}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6579,     51,   2330}, 0, {     0,   3646}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6451,    512,   2330}, 0, {   862,    396}, {0x87, 0xda, 0x00, 0xff}}},\n    {{{  6435,    563,   2346}, 0, {   990,      0}, {0x87, 0xda, 0x00, 0xff}}},\n    {{{  6435,    563,   2186}, 0, {  -286,      0}, {0x87, 0xda, 0x00, 0xff}}},\n    {{{  6579,    512,   2330}, 0, {   862,    396}, {0x00, 0xda, 0x79, 0xff}}},\n    {{{  6435,    563,   2346}, 0, {  -286,      0}, {0x00, 0xda, 0x79, 0xff}}},\n    {{{  6451,    512,   2330}, 0, {  -158,    396}, {0x00, 0xda, 0x79, 0xff}}},\n    {{{  6595,    563,   2346}, 0, {   990,      0}, {0x00, 0xda, 0x79, 0xff}}},\n    {{{  6579,    512,   2202}, 0, {  1118,    396}, {0x79, 0xda, 0x00, 0xff}}},\n    {{{  6595,    563,   2346}, 0, {     0,      0}, {0x79, 0xda, 0x00, 0xff}}},\n    {{{  6579,    512,   2330}, 0, {    96,    396}, {0x79, 0xda, 0x00, 0xff}}},\n    {{{  6595,    563,   2186}, 0, {  1246,      0}, {0x79, 0xda, 0x00, 0xff}}},\n    {{{  6579,    512,   2202}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07005580 - 0x07005670\nstatic const Vtx ssl_seg7_vertex_07005580[] = {\n    {{{  5341,    563,   4310}, 0, {   990,  14104}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5181,    563,   4470}, 0, {   -72,  15168}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5341,    563,   4470}, 0, {   990,  15168}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6579,     51,   2330}, 0, {   990,   3646}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6579,    512,   2330}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6451,    512,   2330}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6451,     51,   2330}, 0, {     0,   3646}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6451,     51,   2330}, 0, {   990,   3646}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6451,    512,   2330}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6451,    512,   2202}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6451,     51,   2202}, 0, {     0,   3646}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6451,     51,   2202}, 0, {   990,   3646}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6451,    512,   2202}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6579,    512,   2202}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6579,     51,   2202}, 0, {     0,   3646}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07005670 - 0x07005760\nstatic const Vtx ssl_seg7_vertex_07005670[] = {\n    {{{  5325,    512,   4454}, 0, {   862,    396}, {0x00, 0xda, 0x79, 0xff}}},\n    {{{  5341,    563,   4470}, 0, {   990,      0}, {0x00, 0xda, 0x79, 0xff}}},\n    {{{  5181,    563,   4470}, 0, {  -286,      0}, {0x00, 0xda, 0x79, 0xff}}},\n    {{{  5341,    563,   4310}, 0, {   990,  14104}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5181,    563,   4310}, 0, {   -72,  14104}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5181,    563,   4470}, 0, {   -72,  15168}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5197,    512,   4326}, 0, {   862,    396}, {0x00, 0xda, 0x87, 0xff}}},\n    {{{  5341,    563,   4310}, 0, {  -286,      0}, {0x00, 0xda, 0x87, 0xff}}},\n    {{{  5325,    512,   4326}, 0, {  -158,    396}, {0x00, 0xda, 0x87, 0xff}}},\n    {{{  5181,    563,   4310}, 0, {   990,      0}, {0x00, 0xda, 0x87, 0xff}}},\n    {{{  5197,    512,   4454}, 0, {   862,    396}, {0x87, 0xda, 0x00, 0xff}}},\n    {{{  5181,    563,   4310}, 0, {  -286,      0}, {0x87, 0xda, 0x00, 0xff}}},\n    {{{  5197,    512,   4326}, 0, {  -158,    396}, {0x87, 0xda, 0x00, 0xff}}},\n    {{{  5181,    563,   4470}, 0, {   990,      0}, {0x87, 0xda, 0x00, 0xff}}},\n    {{{  5197,    512,   4454}, 0, {  -158,    396}, {0x00, 0xda, 0x79, 0xff}}},\n};\n\n// 0x07005760 - 0x07005850\nstatic const Vtx ssl_seg7_vertex_07005760[] = {\n    {{{  5197,     51,   4454}, 0, {   990,   3646}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5197,    512,   4454}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5197,    512,   4326}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5325,    512,   4326}, 0, {  1118,    396}, {0x79, 0xda, 0x00, 0xff}}},\n    {{{  5341,    563,   4470}, 0, {     0,      0}, {0x79, 0xda, 0x00, 0xff}}},\n    {{{  5325,    512,   4454}, 0, {    96,    396}, {0x79, 0xda, 0x00, 0xff}}},\n    {{{  5341,    563,   4310}, 0, {  1246,      0}, {0x79, 0xda, 0x00, 0xff}}},\n    {{{  5325,     51,   4326}, 0, {   990,   3646}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5325,    512,   4326}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5325,    512,   4454}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5325,     51,   4454}, 0, {     0,   3646}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5325,     51,   4454}, 0, {   990,   3646}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5325,    512,   4454}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5197,    512,   4454}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5197,     51,   4454}, 0, {     0,   3646}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07005850 - 0x07005940\nstatic const Vtx ssl_seg7_vertex_07005850[] = {\n    {{{  5197,     51,   2330}, 0, {   990,   3646}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5197,    512,   2202}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5197,     51,   2202}, 0, {     0,   3646}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5197,     51,   4454}, 0, {   990,   3646}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5197,    512,   4326}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5197,     51,   4326}, 0, {     0,   3646}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5197,     51,   4326}, 0, {   990,   3646}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5325,    512,   4326}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5325,     51,   4326}, 0, {     0,   3646}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5197,    512,   4326}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5197,     51,   2202}, 0, {   990,   3646}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5325,    512,   2202}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5325,     51,   2202}, 0, {     0,   3646}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5197,    512,   2202}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5197,    512,   2330}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07005940 - 0x07005A30\nstatic const Vtx ssl_seg7_vertex_07005940[] = {\n    {{{  5325,    512,   2330}, 0, {   862,    396}, {0x00, 0xda, 0x79, 0xff}}},\n    {{{  5341,    563,   2346}, 0, {   990,      0}, {0x00, 0xda, 0x79, 0xff}}},\n    {{{  5181,    563,   2346}, 0, {  -286,      0}, {0x00, 0xda, 0x79, 0xff}}},\n    {{{  5325,     51,   2330}, 0, {   990,   3646}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5197,    512,   2330}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5197,     51,   2330}, 0, {     0,   3646}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5325,    512,   2330}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5325,     51,   2202}, 0, {   990,   3646}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5325,    512,   2330}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5325,     51,   2330}, 0, {     0,   3646}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5325,    512,   2202}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5325,    512,   2202}, 0, {  1118,    396}, {0x79, 0xda, 0x00, 0xff}}},\n    {{{  5341,    563,   2346}, 0, {     0,      0}, {0x79, 0xda, 0x00, 0xff}}},\n    {{{  5325,    512,   2330}, 0, {    96,    396}, {0x79, 0xda, 0x00, 0xff}}},\n    {{{  5341,    563,   2186}, 0, {  1246,      0}, {0x79, 0xda, 0x00, 0xff}}},\n};\n\n// 0x07005A30 - 0x07005B20\nstatic const Vtx ssl_seg7_vertex_07005A30[] = {\n    {{{  5341,    563,   2186}, 0, {   990,  14104}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5181,    563,   2346}, 0, {   -72,  15168}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5341,    563,   2346}, 0, {   990,  15168}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5325,    512,   2330}, 0, {   862,    396}, {0x00, 0xda, 0x79, 0xff}}},\n    {{{  5181,    563,   2346}, 0, {  -286,      0}, {0x00, 0xda, 0x79, 0xff}}},\n    {{{  5197,    512,   2330}, 0, {  -158,    396}, {0x00, 0xda, 0x79, 0xff}}},\n    {{{  5197,    512,   2330}, 0, {   862,    396}, {0x87, 0xda, 0x00, 0xff}}},\n    {{{  5181,    563,   2186}, 0, {  -286,      0}, {0x87, 0xda, 0x00, 0xff}}},\n    {{{  5197,    512,   2202}, 0, {  -158,    396}, {0x87, 0xda, 0x00, 0xff}}},\n    {{{  5181,    563,   2346}, 0, {   990,      0}, {0x87, 0xda, 0x00, 0xff}}},\n    {{{  5197,    512,   2202}, 0, {   862,    396}, {0x00, 0xda, 0x87, 0xff}}},\n    {{{  5181,    563,   2186}, 0, {   990,      0}, {0x00, 0xda, 0x87, 0xff}}},\n    {{{  5341,    563,   2186}, 0, {  -286,      0}, {0x00, 0xda, 0x87, 0xff}}},\n    {{{  5325,    512,   2202}, 0, {  -158,    396}, {0x00, 0xda, 0x87, 0xff}}},\n    {{{  5181,    563,   2186}, 0, {   -72,  14104}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07005B20 - 0x07005C10\nstatic const Vtx ssl_seg7_vertex_07005B20[] = {\n    {{{  6672,    614,   4624}, 0, {   622,   9572}, {0x46, 0x97, 0x00, 0xff}}},\n    {{{  6595,    563,   4470}, 0, {   990,   8960}, {0x46, 0x97, 0x00, 0xff}}},\n    {{{  6595,    563,   2186}, 0, {   990,      0}, {0x46, 0x97, 0x00, 0xff}}},\n    {{{  5104,    614,   4624}, 0, {  5896,    614}, {0x00, 0x88, 0x27, 0xff}}},\n    {{{  5181,    563,   4470}, 0, {  5590,      0}, {0x00, 0x88, 0x27, 0xff}}},\n    {{{  6595,    563,   4470}, 0, {    70,      0}, {0x00, 0x88, 0x27, 0xff}}},\n    {{{  6672,    614,   4624}, 0, {  -234,    614}, {0x00, 0x88, 0x27, 0xff}}},\n    {{{  5104,    614,   2032}, 0, {   336,   -646}, {0xba, 0x97, 0x00, 0xff}}},\n    {{{  5181,    563,   2186}, 0, {     0,      0}, {0xba, 0x97, 0x00, 0xff}}},\n    {{{  5181,    563,   4470}, 0, {     0,   8960}, {0xba, 0x97, 0x00, 0xff}}},\n    {{{  5104,    614,   4624}, 0, {   336,   9572}, {0xba, 0x97, 0x00, 0xff}}},\n    {{{  6595,    563,   4470}, 0, {    70,   8960}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  5181,    563,   2186}, 0, {  5590,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  6595,    563,   2186}, 0, {    70,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  5181,    563,   4470}, 0, {  5588,   8960}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07005C10 - 0x07005C80\nstatic const Vtx ssl_seg7_vertex_07005C10[] = {\n    {{{  6672,    614,   2032}, 0, {  -336,    344}, {0x00, 0x88, 0xd9, 0xff}}},\n    {{{  5181,    563,   2186}, 0, {  5486,    990}, {0x00, 0x88, 0xd9, 0xff}}},\n    {{{  5104,    614,   2032}, 0, {  5794,    344}, {0x00, 0x88, 0xd9, 0xff}}},\n    {{{  6672,    614,   4624}, 0, {   622,   9572}, {0x46, 0x97, 0x00, 0xff}}},\n    {{{  6595,    563,   2186}, 0, {   990,      0}, {0x46, 0x97, 0x00, 0xff}}},\n    {{{  6672,    614,   2032}, 0, {   622,   -646}, {0x46, 0x97, 0x00, 0xff}}},\n    {{{  6595,    563,   2186}, 0, {     0,    990}, {0x00, 0x88, 0xd9, 0xff}}},\n};\n\n// 0x07005C80 - 0x07005D60\nstatic const Vtx ssl_seg7_vertex_07005C80[] = {\n    {{{ -1919,   1024,   -255}, 0, {     0,   1412}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -1279,   1024,   -255}, 0, {  2522,   1412}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -1920,   1103,   -334}, 0, {     0,    968}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{     0,   -255,   1024}, 0, {     0,    990}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{  -511,    256,    512}, 0, {  2012,  -1900}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{  -511,    256,   1024}, 0, {     0,  -1900}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{  -383,    512,  -2303}, 0, { 10188,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -383,    128,    640}, 0, { -1564,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -383,    128,  -2687}, 0, { 11722,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -383,    512,    256}, 0, {     0,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3327,    512,  -2303}, 0, {  9496,   1680}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1023,    768,  -2303}, 0, {   224,    308}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -767,    512,  -2303}, 0, {  -804,   1680}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3071,    768,  -2303}, 0, {  8466,    308}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07005D60 - 0x07005E60\nstatic const Vtx ssl_seg7_vertex_07005D60[] = {\n    {{{ -3327,    512,  -2303}, 0, {-12294,  -3346}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{ -3071,    768,  -2047}, 0, {-11272,  -4792}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{ -3071,    768,  -2303}, 0, {-12294,  -4792}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{ -2943,   1024,   -255}, 0, {  6100,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2943,    896,  -1919}, 0, {  -542,   1500}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2943,    896,   -127}, 0, {  6612,   1500}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2943,   1024,  -1791}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -383,    128,  -2687}, 0, {   480,   1886}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{  -767,    512,  -2303}, 0, {  2012,   -280}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{  -383,    512,  -2303}, 0, {   480,   -280}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{  -383,    128,    640}, 0, {  9166,   6470}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{  -383,    512,    256}, 0, {  9166,   4302}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{  -767,    512,    256}, 0, {  7634,   4302}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{     0,   -255,   1024}, 0, { 10188,  17310}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,    256,   1024}, 0, {  8144,  14420}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3583,    256,   1024}, 0, { -4118,  14420}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07005E60 - 0x07005F50\nstatic const Vtx ssl_seg7_vertex_07005E60[] = {\n    {{{  -767,    512,  -2303}, 0, {  7632,   4302}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{ -1023,    768,  -2303}, 0, {  7632,   2856}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{ -1023,    768,  -2047}, 0, {  6610,   2856}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{ -2943,    896,   -127}, 0, {  -796,   2132}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -2815,   1024,   -255}, 0, {  -542,   1412}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -2943,   1024,   -255}, 0, {  -796,   1412}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -2943,    896,  -1919}, 0, {  5588,   2644}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{ -2943,   1024,  -1791}, 0, {  5588,   1922}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{ -2815,   1024,  -1791}, 0, {  5078,   1922}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{     0,   -255,   1024}, 0, { 10188,  17310}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3583,    256,   1024}, 0, { -4118,  14420}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4095,   -255,   1024}, 0, { -6162,  17310}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2815,   1024,   -255}, 0, {  4566,   1412}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{ -2559,   1280,  -1535}, 0, {  -540,      0}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{ -2815,   1024,  -1791}, 0, { -1562,   1412}, {0xa7, 0x59, 0x00, 0xff}}},\n};\n\n// 0x07005F50 - 0x07006030\nstatic const Vtx ssl_seg7_vertex_07005F50[] = {\n    {{{ -3583,    256,   1024}, 0, {   990,  -1900}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{ -3583,    256,    512}, 0, { -1052,  -1900}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{ -4095,   -255,   1024}, 0, {   990,    990}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{ -3071,    768,  -2047}, 0, { 12232,  -4792}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{ -1535,   1280,  -1535}, 0, {  6100,  -7682}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{ -1023,    768,  -2047}, 0, {  4056,  -4792}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{ -2559,   1280,  -1535}, 0, { 10188,  -7682}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{     0,   -255,  -3071}, 0, {     0,    990}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{ -4095,   -255,  -3071}, 0, { 16320,    990}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{ -3327,    512,  -2303}, 0, { 13254,  -3346}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{  -767,    512,  -2303}, 0, {  3034,  -3346}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{ -2815,   1024,   -255}, 0, {  4566,   1412}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{ -2559,   1280,   -511}, 0, {  3544,      0}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{ -2559,   1280,  -1535}, 0, {  -540,      0}, {0xa7, 0x59, 0x00, 0xff}}},\n};\n\n// 0x07006030 - 0x07006120\nstatic const Vtx ssl_seg7_vertex_07006030[] = {\n    {{{ -2175,    256,   1024}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2175,   -255,   1024}, 0, {     0,   2022}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2175,      0,   2048}, 0, {  4080,    892}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4095,   -255,  -3071}, 0, {-15360,    990}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{ -2943,    896,   -127}, 0, { -3608,  -5514}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{ -2943,    896,  -1919}, 0, {-10762,  -5514}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{ -4095,   -255,   1024}, 0, {   990,    990}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{  -767,    512,  -2303}, 0, {  7632,   4302}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{ -1535,   1280,  -1535}, 0, {  4566,      0}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{ -1535,   1280,   -511}, 0, {   478,      0}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{  -767,    512,    256}, 0, { -2584,   4302}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{     0,   -255,   1024}, 0, {     0,    990}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{     0,   -255,  -3071}, 0, { 16320,    990}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{  -383,    128,  -2687}, 0, { 14788,  -1178}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{  -383,    128,    640}, 0, {  1502,  -1178}, {0x59, 0x59, 0x00, 0xff}}},\n};\n\n// 0x07006120 - 0x07006220\nstatic const Vtx ssl_seg7_vertex_07006120[] = {\n    {{{ -2175,    256,    512}, 0, { -1266,    686}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2175,    437,    -52}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2175,    437,    331}, 0, {  -540,    -36}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1919,      0,   2048}, 0, { -3096,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1919,   -255,   1024}, 0, {  1040,   2022}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1919,    256,   1024}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1919,      0,    -52}, 0, {     0,   1710}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1919,      0,    165}, 0, {   840,   1712}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1919,    256,    512}, 0, {  2224,    690}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1919,    437,    331}, 0, {  1500,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1919,    437,    -52}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2175,      0,    -52}, 0, {   986,   1710}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2175,      0,    165}, 0, {   114,   1710}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,   1024,   -255}, 0, {  2522,   1412}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -1535,   1280,   -511}, 0, {  1500,      0}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -1920,   1103,   -334}, 0, {     0,    968}, {0x00, 0x59, 0x59, 0xff}}},\n};\n\n// 0x07006220 - 0x07006310\nstatic const Vtx ssl_seg7_vertex_07006220[] = {\n    {{{ -1535,   1280,   -511}, 0, {  1500,      0}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -1920,   1280,   -511}, 0, {     0,      0}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -1920,   1103,   -334}, 0, {     0,    968}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -2176,   1280,   -511}, 0, { -1052,      0}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -2559,   1280,   -511}, 0, { -2586,      0}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -2736,   1103,   -334}, 0, { -3294,    970}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -2176,   1103,   -334}, 0, { -1042,    968}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -2175,    437,    331}, 0, {  2012,   4726}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -1919,    437,    331}, 0, {  3034,   4726}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -1279,   1024,   -255}, 0, {  5590,   1412}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -2815,   1024,   -255}, 0, {  -542,   1412}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -3583,    256,    512}, 0, { -3608,   5748}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -2175,    256,    512}, 0, {  2012,   5748}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{  -511,    256,    512}, 0, {  8656,   5748}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -1919,    256,    512}, 0, {  3034,   5748}, {0x00, 0x59, 0x59, 0xff}}},\n};\n\n// 0x07006310 - 0x070063F0\nstatic const Vtx ssl_seg7_vertex_07006310[] = {\n    {{{ -1919,   1103,   -255}, 0, {  2522,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2736,   1103,   -255}, 0, {  -738,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1919,   1024,   -255}, 0, {  2522,    794}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2815,   1024,   -255}, 0, { -1052,    792}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2815,   1024,   -255}, 0, {  4566,   1412}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{ -2736,   1103,   -255}, 0, {  4568,    970}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{ -2736,   1103,   -334}, 0, {  4254,    970}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{ -1919,   1024,   -255}, 0, {   676,    282}, {0x7e, 0x00, 0xff, 0xff}}},\n    {{{ -1920,   1103,   -334}, 0, {   990,      0}, {0x7e, 0x00, 0xff, 0xff}}},\n    {{{ -1919,   1103,   -255}, 0, {   676,      0}, {0x7e, 0x00, 0xff, 0xff}}},\n    {{{ -2176,   1103,   -639}, 0, {  -540,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1920,   1280,   -639}, 0, {   930,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2176,   1280,   -639}, 0, {  -536,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1920,   1103,   -639}, 0, {   930,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070063F0 - 0x07006470\nstatic const Vtx ssl_seg7_vertex_070063F0[] = {\n    {{{ -1920,   1103,   -334}, 0, {  2240,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1920,   1280,   -511}, 0, {  1218,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1920,   1103,   -639}, 0, {   478,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1920,   1280,   -639}, 0, {   478,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2176,   1103,   -334}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2176,   1103,   -639}, 0, {  1728,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2176,   1280,   -639}, 0, {  1728,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2176,   1280,   -511}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07006470 - 0x07006560\nstatic const Vtx ssl_seg7_vertex_07006470[] = {\n    {{{ -2149,   1280,   -921}, 0, {  2012,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2149,    768,   -921}, 0, {  2012,   4054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2149,    768,  -1125}, 0, {   376,   4054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2175,      0,    -52}, 0, {     0,   1710}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1919,    437,    -52}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2175,    437,    -52}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1919,      0,    -52}, 0, {   990,   1710}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1945,   1280,  -1125}, 0, {   376,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1945,    768,  -1125}, 0, {   376,   4054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1945,    768,   -921}, 0, {  2012,   4054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1945,   1280,   -921}, 0, {  2012,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2149,   1280,  -1125}, 0, {   376,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1945,    768,  -1125}, 0, {  2012,   4054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1945,   1280,  -1125}, 0, {  2012,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2149,    768,  -1125}, 0, {   376,   4054}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07006560 - 0x070065D0\nstatic const Vtx ssl_seg7_vertex_07006560[] = {\n    {{{ -1945,   1280,   -921}, 0, {  2012,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2149,    768,   -921}, 0, {   376,   4054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2149,   1280,   -921}, 0, {   376,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2149,   1280,   -921}, 0, {  2012,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2149,    768,  -1125}, 0, {   376,   4054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2149,   1280,  -1125}, 0, {   376,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1945,    768,   -921}, 0, {  2012,   4054}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070065D0 - 0x070066C0\nstatic const Vtx ssl_seg7_vertex_070065D0[] = {\n    {{{  6963,      0,  -6962}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6963,   -511,  -6962}, 0, {     0,    606}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6963,   -511,  -6757}, 0, {   990,    606}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4608,   -255,  -5631}, 0, {  5078,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4608,      0,  -5631}, 0, {  5078,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4608,      0,  -6143}, 0, {  6100,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4608,   -255,  -6143}, 0, {  6100,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4608,   -255,  -6143}, 0, {-11272,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6144,      0,  -6143}, 0, {-14338,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6144,   -255,  -6143}, 0, {-14338,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4608,      0,  -6143}, 0, {-11272,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6144,   -255,  -6143}, 0, {  6100,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6144,      0,  -6143}, 0, {  6100,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6144,      0,  -7167}, 0, {  8144,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6144,   -255,  -6655}, 0, {  7122,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070066C0 - 0x070067B0\nstatic const Vtx ssl_seg7_vertex_070066C0[] = {\n    {{{  6758,      0,  -6962}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6758,   -511,  -6962}, 0, {   990,    606}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6963,   -511,  -6962}, 0, {     0,    606}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6963,      0,  -6962}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6963,   -511,  -6757}, 0, {   990,    606}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6963,      0,  -6757}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6963,      0,  -6757}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6963,   -511,  -6757}, 0, {     0,    606}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6758,   -511,  -6757}, 0, {   990,    606}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6758,      0,  -6757}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6758,      0,  -6757}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6758,   -511,  -6962}, 0, {     0,    606}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6758,      0,  -6962}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6758,   -511,  -6757}, 0, {   990,    606}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6963,      0,  -6962}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070067B0 - 0x070068B0\nstatic const Vtx ssl_seg7_vertex_070067B0[] = {\n    {{{  6656,   -255,  -4607}, 0, {  3034,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6656,      0,  -4607}, 0, {  3034,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6656,      0,  -5631}, 0, {  5078,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  7168,      0,  -7167}, 0, {  8144,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  7168,      0,  -4607}, 0, {  3034,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  7168,   -255,  -4607}, 0, {  3034,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  7168,   -255,  -6655}, 0, {  7122,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6656,   -255,  -5631}, 0, {-15360,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4608,      0,  -5631}, 0, {-11272,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4608,   -255,  -5631}, 0, {-11272,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6656,      0,  -5631}, 0, {-15360,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  7168,   -255,  -4607}, 0, {-16382,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  7168,      0,  -4607}, 0, {-16382,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6656,      0,  -4607}, 0, {-15360,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6656,   -255,  -4607}, 0, {-15360,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6656,   -255,  -5631}, 0, {  5078,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070068B0 - 0x07006990\nstatic const Vtx ssl_seg7_vertex_070068B0[] = {\n    {{{  5120,      0,   -511}, 0, { -5140,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5120,   -255,  -1023}, 0, { -4118,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5120,      0,  -3071}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5120,   -255,  -3071}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3583,      0,  -5119}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3583,   -255,  -5119}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4095,      0,  -5119}, 0, {  2012,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   512,   -255,  -5119}, 0, { -3096,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   512,      0,  -5119}, 0, { -3096,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1023,      0,  -5119}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1023,   -255,  -5119}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3071,   -255,  -6655}, 0, {  7122,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3071,      0,  -6655}, 0, {  7122,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3071,      0,  -6143}, 0, {  6100,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07006990 - 0x07006A80\nstatic const Vtx ssl_seg7_vertex_07006990[] = {\n    {{{ -1023,   -255,  -5631}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1023,      0,  -5631}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   512,      0,  -5631}, 0, { -3096,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   512,   -255,  -5631}, 0, { -3096,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3071,   -255,  -4607}, 0, {  4056,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3071,      0,  -4607}, 0, {  4056,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4095,      0,  -4607}, 0, {  6100,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3583,   -255,  -4607}, 0, {  5078,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3583,   -255,  -6655}, 0, {  5078,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3071,      0,  -6655}, 0, {  4056,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3071,   -255,  -6655}, 0, {  4056,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3583,      0,  -6655}, 0, {  5078,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2047,   -255,  -5119}, 0, {  2012,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1535,      0,  -5119}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1535,   -255,  -5119}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07006A80 - 0x07006B60\nstatic const Vtx ssl_seg7_vertex_07006A80[] = {\n    {{{ -3071,   -255,  -6655}, 0, {  7122,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3071,      0,  -6143}, 0, {  6100,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3071,   -255,  -6143}, 0, {  6100,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3071,   -255,  -6143}, 0, {  4056,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3071,      0,  -6143}, 0, {  4056,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2047,      0,  -6143}, 0, {  2012,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2047,   -255,  -6143}, 0, {  2012,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2047,   -255,  -6143}, 0, {  6100,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2047,      0,  -6143}, 0, {  6100,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2047,      0,  -5119}, 0, {  4056,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2047,   -255,  -5119}, 0, {  4056,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2047,   -255,  -5119}, 0, {  2012,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2047,      0,  -5119}, 0, {  2012,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1535,      0,  -5119}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07006B60 - 0x07006C50\nstatic const Vtx ssl_seg7_vertex_07006B60[] = {\n    {{{ -2559,   -255,  -4607}, 0, {  3034,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2559,      0,  -5631}, 0, {  5078,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2559,   -255,  -5631}, 0, {  5078,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1535,   -255,  -5119}, 0, {  4056,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1535,      0,  -6655}, 0, {  7122,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1535,   -255,  -6655}, 0, {  7122,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1535,      0,  -5119}, 0, {  4056,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1535,   -255,  -6655}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1535,      0,  -6655}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1023,      0,  -6655}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1023,   -255,  -6655}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1023,   -255,  -4607}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1023,      0,  -4607}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2559,      0,  -4607}, 0, {  3034,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2559,   -255,  -4607}, 0, {  3034,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07006C50 - 0x07006D50\nstatic const Vtx ssl_seg7_vertex_07006C50[] = {\n    {{{ -3071,   -255,  -5631}, 0, {  5078,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3071,      0,  -5631}, 0, {  5078,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3071,      0,  -4607}, 0, {  3034,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2559,   -255,  -4607}, 0, {  3034,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2559,      0,  -4607}, 0, {  3034,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2559,      0,  -5631}, 0, {  5078,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2559,   -255,  -5631}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3071,      0,  -5631}, 0, { -1052,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3071,   -255,  -5631}, 0, { -1052,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2559,   -255,  -5631}, 0, {  3034,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2559,      0,  -5631}, 0, {  3034,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3071,      0,  -5631}, 0, {  4056,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3071,   -255,  -4607}, 0, {  3034,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4096,   -255,  -3583}, 0, {-10250,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1024,      0,  -3583}, 0, { -4118,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1024,   -255,  -3583}, 0, { -4118,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07006D50 - 0x07006E40\nstatic const Vtx ssl_seg7_vertex_07006D50[] = {\n    {{{  1024,   -255,  -3583}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,      0,  -3583}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,      0,  -4607}, 0, {  3034,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,   -255,  -4607}, 0, {  3034,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1536,   -255,  -4607}, 0, {  3034,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1536,      0,  -4607}, 0, {  3034,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1536,      0,  -4095}, 0, {  2012,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1536,   -255,  -4095}, 0, {  2012,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1536,   -255,  -4095}, 0, { -5140,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4608,      0,  -4095}, 0, {-11272,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4608,   -255,  -4095}, 0, {-11272,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1536,      0,  -4095}, 0, { -5140,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1024,   -255,  -6143}, 0, {  6100,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1024,      0,  -5119}, 0, {  4056,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1024,   -255,  -5119}, 0, {  4056,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07006E40 - 0x07006F20\nstatic const Vtx ssl_seg7_vertex_07006E40[] = {\n    {{{  4096,   -255,  -3583}, 0, {-10250,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4096,      0,  -3583}, 0, {-10250,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1024,      0,  -3583}, 0, { -4118,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   512,   -255,  -5631}, 0, {  5078,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,      0,  -5631}, 0, {  5078,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,      0,  -6143}, 0, {  6100,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,   -255,  -6143}, 0, {  6100,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,   -255,  -6143}, 0, { -3096,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1024,      0,  -6143}, 0, { -4118,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1024,   -255,  -6143}, 0, { -4118,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   512,      0,  -6143}, 0, { -3096,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1024,   -255,  -6143}, 0, {  6100,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1024,      0,  -6143}, 0, {  6100,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1024,      0,  -5119}, 0, {  4056,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07006F20 - 0x07007010\nstatic const Vtx ssl_seg7_vertex_07006F20[] = {\n    {{{  3072,   -255,  -5631}, 0, {  5078,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,      0,  -5631}, 0, {  5078,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,      0,  -6143}, 0, {  6100,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,   -255,  -5119}, 0, { -4118,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1024,      0,  -5119}, 0, { -4118,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,      0,  -5119}, 0, { -6162,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,   -255,  -5119}, 0, { -6162,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,   -255,  -5119}, 0, {  4056,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,      0,  -5631}, 0, {  5078,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,   -255,  -5631}, 0, {  5078,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,      0,  -5119}, 0, {  4056,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,   -255,  -5631}, 0, { -6162,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,      0,  -5631}, 0, { -6162,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3072,      0,  -5631}, 0, { -8206,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3072,   -255,  -5631}, 0, { -8206,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07007010 - 0x07007100\nstatic const Vtx ssl_seg7_vertex_07007010[] = {\n    {{{  3072,   -255,  -4607}, 0, {  3034,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,      0,  -4607}, 0, {  3034,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,      0,  -5119}, 0, {  4056,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,   -255,  -5631}, 0, {  5078,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,      0,  -6143}, 0, {  6100,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,   -255,  -6143}, 0, {  6100,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,   -255,  -6143}, 0, { -8206,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3072,      0,  -6143}, 0, { -8206,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3584,      0,  -6143}, 0, { -9228,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3584,   -255,  -6143}, 0, { -9228,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3584,   -255,  -6143}, 0, {  6100,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3584,      0,  -4607}, 0, {  3034,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3584,   -255,  -4607}, 0, {  3034,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3584,      0,  -6143}, 0, {  6100,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3072,   -255,  -5119}, 0, {  4056,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07007100 - 0x070071F0\nstatic const Vtx ssl_seg7_vertex_07007100[] = {\n    {{{  4608,   -255,  -3583}, 0, {  4056,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4608,      0,  -3583}, 0, {  4056,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5120,      0,  -3583}, 0, {  2012,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3072,   -255,  -5119}, 0, { -8206,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2560,      0,  -5119}, 0, { -7184,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2560,   -255,  -5119}, 0, { -7184,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3072,      0,  -5119}, 0, { -8206,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2560,   -255,  -5119}, 0, {  4056,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2560,      0,  -5119}, 0, {  4056,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2560,      0,  -4607}, 0, {  3034,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2560,   -255,  -4607}, 0, {  3034,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,   -255,  -4607}, 0, {  3034,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,      0,  -5119}, 0, {  4056,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,   -255,  -5119}, 0, {  4056,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,      0,  -4607}, 0, {  3034,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070071F0 - 0x070072E0\nstatic const Vtx ssl_seg7_vertex_070071F0[] = {\n    {{{  5120,   -255,  -3583}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5120,      0,  -4095}, 0, {  2012,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5120,   -255,  -4095}, 0, {  2012,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4608,   -255,  -3583}, 0, {  4056,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5120,      0,  -3583}, 0, {  2012,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5120,   -255,  -3583}, 0, {  2012,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4608,      0,  -4095}, 0, {  2012,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4608,   -255,  -3583}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4608,   -255,  -4095}, 0, {  2012,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4608,      0,  -3583}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4096,   -255,  -3071}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4096,      0,  -3583}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4096,   -255,  -3583}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4096,      0,  -3071}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5120,      0,  -3583}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070072E0 - 0x070073D0\nstatic const Vtx ssl_seg7_vertex_070072E0[] = {\n    {{{ -1023,   -255,  -6655}, 0, {  7122,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1023,      0,  -6655}, 0, {  7122,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1023,      0,  -5631}, 0, {  5078,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5632,      0,  -4095}, 0, {  2012,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5632,      0,  -3071}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5632,   -255,  -3071}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5632,   -255,  -4095}, 0, {  2012,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3584,      0,  -4607}, 0, { -9228,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3072,   -255,  -4607}, 0, { -8206,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3584,   -255,  -4607}, 0, { -9228,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3072,      0,  -4607}, 0, { -8206,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5632,   -255,  -4095}, 0, {-13316,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5120,      0,  -4095}, 0, {-12294,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5632,      0,  -4095}, 0, {-13316,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5120,   -255,  -4095}, 0, {-12294,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070073D0 - 0x070074C0\nstatic const Vtx ssl_seg7_vertex_070073D0[] = {\n    {{{  1024,      0,  -4607}, 0, { -4118,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   512,   -255,  -4607}, 0, { -3096,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1024,   -255,  -4607}, 0, { -4118,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1023,   -255,  -6655}, 0, {  7122,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1023,      0,  -5631}, 0, {  5078,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1023,   -255,  -5631}, 0, {  5078,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1023,      0,  -5119}, 0, {  4056,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1023,   -255,  -4607}, 0, {  3034,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1023,   -255,  -5119}, 0, {  4056,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1023,      0,  -4607}, 0, {  3034,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2560,   -255,  -4607}, 0, { -7184,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2560,      0,  -4607}, 0, { -7184,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1536,      0,  -4607}, 0, { -5140,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1536,   -255,  -4607}, 0, { -5140,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   512,      0,  -4607}, 0, { -3096,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070074C0 - 0x070075B0\nstatic const Vtx ssl_seg7_vertex_070074C0[] = {\n    {{{  4608,      0,  -3071}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4608,   -255,  -3071}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4608,   -255,  -1023}, 0, { -4118,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5632,   -255,  -3071}, 0, {-13316,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5632,      0,  -3071}, 0, {-13316,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5120,      0,  -3071}, 0, {-12294,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5120,   -255,  -3071}, 0, {-12294,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4608,      0,  -3071}, 0, {-11272,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4096,      0,  -3071}, 0, {-10250,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4096,   -255,  -3071}, 0, {-10250,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4608,   -255,  -3071}, 0, {-11272,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3583,      0,  -5119}, 0, {  4056,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3583,   -255,  -6655}, 0, {  7122,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3583,   -255,  -5119}, 0, {  4056,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3583,      0,  -6655}, 0, {  7122,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070075B0 - 0x070076A0\nstatic const Vtx ssl_seg7_vertex_070075B0[] = {\n    {{{  6656,   -255,  -2047}, 0, {-15360,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6144,      0,  -2047}, 0, {-14338,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6144,   -255,  -2047}, 0, {-14338,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4608,      0,  -3071}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4608,   -255,  -1023}, 0, { -4118,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4608,      0,   -511}, 0, { -5140,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6144,   -255,  -2559}, 0, {-14338,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6656,      0,  -2559}, 0, {-15360,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6656,   -255,  -2559}, 0, {-15360,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6144,      0,  -2559}, 0, {-14338,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6144,   -255,  -2047}, 0, { -2074,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6144,      0,  -2559}, 0, { -1052,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6144,   -255,  -2559}, 0, { -1052,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6144,      0,  -2047}, 0, { -2074,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6656,      0,  -2047}, 0, {-15360,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070076A0 - 0x07007790\nstatic const Vtx ssl_seg7_vertex_070076A0[] = {\n    {{{  7168,   -255,  -3071}, 0, {-16382,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6656,      0,  -3071}, 0, {-15360,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6656,   -255,  -3071}, 0, {-15360,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6656,   -255,  -2559}, 0, { -1052,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6656,      0,  -2559}, 0, { -1052,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6656,      0,  -2047}, 0, { -2074,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6656,   -255,  -2047}, 0, { -2074,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6656,   -255,  -3583}, 0, {-15360,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  7168,      0,  -3583}, 0, {-16382,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  7168,   -255,  -3583}, 0, {-16382,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6656,      0,  -3583}, 0, {-15360,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6656,   -255,  -3071}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6656,      0,  -3071}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6656,      0,  -3583}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6656,   -255,  -3583}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07007790 - 0x07007880\nstatic const Vtx ssl_seg7_vertex_07007790[] = {\n    {{{  5632,   -255,  -4607}, 0, {  3034,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5632,      0,  -5119}, 0, {  4056,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  5632,   -255,  -5119}, 0, {  4056,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  7168,   -255,  -3071}, 0, {-16382,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  7168,      0,  -3071}, 0, {-16382,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6656,      0,  -3071}, 0, {-15360,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  7168,   -255,  -3583}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  7168,      0,  -3583}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  7168,      0,  -3071}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  7168,   -255,  -3071}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5632,   -255,  -5119}, 0, {-13316,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5632,      0,  -5119}, 0, {-13316,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6144,      0,  -5119}, 0, {-14338,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6144,   -255,  -5119}, 0, {-14338,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5632,      0,  -4607}, 0, {  3034,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07007880 - 0x07007900\nstatic const Vtx ssl_seg7_vertex_07007880[] = {\n    {{{  6144,   -255,  -4607}, 0, {-14338,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6144,      0,  -4607}, 0, {-14338,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5632,      0,  -4607}, 0, {-13316,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5632,   -255,  -4607}, 0, {-13316,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6144,   -255,  -5119}, 0, {  4056,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6144,      0,  -4607}, 0, {  3034,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6144,   -255,  -4607}, 0, {  3034,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6144,      0,  -5119}, 0, {  4056,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07007900 - 0x07007A00\nstatic const Vtx ssl_seg7_vertex_07007900[] = {\n    {{{  1280,      0,   6400}, 0, {   990,    990}, {0x40, 0x6d, 0x00, 0xff}}},\n    {{{  1216,     38,   6643}, 0, {    20,    464}, {0x40, 0x6d, 0x00, 0xff}}},\n    {{{  1280,      0,   6656}, 0, {     0,    990}, {0x40, 0x6d, 0x00, 0xff}}},\n    {{{     0,      0,   6656}, 0, {   990,    990}, {0xc0, 0x6d, 0x00, 0xff}}},\n    {{{    64,     38,   6643}, 0, {   938,    464}, {0xc0, 0x6d, 0x00, 0xff}}},\n    {{{    64,     38,   6413}, 0, {    20,    464}, {0xc0, 0x6d, 0x00, 0xff}}},\n    {{{     0,      0,   6400}, 0, {     0,    990}, {0xc0, 0x6d, 0x00, 0xff}}},\n    {{{   256,      0,   6912}, 0, {   984,    990}, {0xcd, 0x68, 0x33, 0xff}}},\n    {{{    64,     38,   6643}, 0, {  -314,    482}, {0xcd, 0x68, 0x33, 0xff}}},\n    {{{     0,      0,   6656}, 0, {  -458,    990}, {0xcd, 0x68, 0x33, 0xff}}},\n    {{{   256,      0,   6912}, 0, {   984,    990}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{   294,     38,   6874}, 0, {   984,    482}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{    64,     38,   6643}, 0, {  -314,    482}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  1024,      0,   6912}, 0, {   990,    990}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{   294,     38,   6874}, 0, { -1920,    506}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{   256,      0,   6912}, 0, { -2074,    990}, {0x00, 0x59, 0x59, 0xff}}},\n};\n\n// 0x07007A00 - 0x07007AF0\nstatic const Vtx ssl_seg7_vertex_07007A00[] = {\n    {{{  1024,      0,   6912}, 0, {   990,    990}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{   986,     38,   6874}, 0, {   836,    506}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{   294,     38,   6874}, 0, { -1920,    506}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{  1280,      0,   6400}, 0, {   990,    990}, {0x40, 0x6d, 0x00, 0xff}}},\n    {{{  1216,     38,   6413}, 0, {   938,    464}, {0x40, 0x6d, 0x00, 0xff}}},\n    {{{  1216,     38,   6643}, 0, {    20,    464}, {0x40, 0x6d, 0x00, 0xff}}},\n    {{{  1280,      0,   6656}, 0, {   990,    990}, {0x33, 0x68, 0x33, 0xff}}},\n    {{{  1216,     38,   6643}, 0, {   846,    482}, {0x33, 0x68, 0x33, 0xff}}},\n    {{{   986,     38,   6874}, 0, {  -454,    482}, {0x33, 0x68, 0x33, 0xff}}},\n    {{{  1280,      0,   6656}, 0, {   990,    990}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{   986,     38,   6874}, 0, {  -454,    482}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{  1024,      0,   6912}, 0, {  -454,    990}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{  1024,      0,   6144}, 0, {  1414,    990}, {0x33, 0x68, 0xcd, 0xff}}},\n    {{{  1216,     38,   6413}, 0, {   112,    482}, {0x33, 0x68, 0xcd, 0xff}}},\n    {{{  1280,      0,   6400}, 0, {     0,    990}, {0x33, 0x68, 0xcd, 0xff}}},\n};\n\n// 0x07007AF0 - 0x07007BE0\nstatic const Vtx ssl_seg7_vertex_07007AF0[] = {\n    {{{  1024,      0,   6144}, 0, {  1414,    990}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{   986,     38,   6182}, 0, {  1414,    482}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  1216,     38,   6413}, 0, {   112,    482}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{     0,      0,   6400}, 0, {   990,    990}, {0xcd, 0x68, 0xcd, 0xff}}},\n    {{{    64,     38,   6413}, 0, {   846,    482}, {0xcd, 0x68, 0xcd, 0xff}}},\n    {{{   256,      0,   6144}, 0, {  -454,    990}, {0xcd, 0x68, 0xcd, 0xff}}},\n    {{{   256,      0,   6144}, 0, {  3034,   1004}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{   986,     38,   6182}, 0, {   124,    508}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{  1024,      0,   6144}, 0, {     0,    990}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{    64,     38,   6413}, 0, {   846,    482}, {0xcd, 0x67, 0xcd, 0xff}}},\n    {{{   294,     38,   6182}, 0, {  -454,    482}, {0xcd, 0x67, 0xcd, 0xff}}},\n    {{{   256,      0,   6144}, 0, {  -454,    990}, {0xcd, 0x67, 0xcd, 0xff}}},\n    {{{   294,     38,   6182}, 0, { -2790,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1216,     38,   6413}, 0, {   888,  -1156}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   986,     38,   6182}, 0, {     0,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07007BE0 - 0x07007C80\nstatic const Vtx ssl_seg7_vertex_07007BE0[] = {\n    {{{   294,     38,   6182}, 0, { -2790,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    64,     38,   6643}, 0, { -3710,   -236}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   294,     38,   6874}, 0, { -2790,    684}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    64,     38,   6413}, 0, { -3710,  -1156}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   986,     38,   6874}, 0, {     0,    684}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1216,     38,   6643}, 0, {   888,   -236}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1216,     38,   6413}, 0, {   888,  -1156}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,      0,   6144}, 0, {  3034,   1004}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{   294,     38,   6182}, 0, {  2882,    522}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{   986,     38,   6182}, 0, {   124,    508}, {0x00, 0x59, 0xa7, 0xff}}},\n};\n\n// 0x07007C80 - 0x07007D70\nstatic const Vtx ssl_seg7_vertex_07007C80[] = {\n    {{{  1600,    154,    960}, 0, {  2648,   6926}, {0x82, 0x06, 0x00, 0xff}}},\n    {{{  1648,   1024,    912}, 0, {  2268,      0}, {0x82, 0x06, 0x00, 0xff}}},\n    {{{  1648,   1024,    624}, 0, {     0,      0}, {0x82, 0x06, 0x00, 0xff}}},\n    {{{  1936,    896,  -2703}, 0, {  3034,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1648,    896,  -2415}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1936,    896,  -2415}, 0, {  3034,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1648,    896,  -2703}, 0, {     0,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1600,    154,    576}, 0, {  2654,   6926}, {0x00, 0x06, 0x82, 0xff}}},\n    {{{  1648,   1024,    624}, 0, {  2268,      0}, {0x00, 0x06, 0x82, 0xff}}},\n    {{{  1936,   1024,    624}, 0, {     0,      0}, {0x00, 0x06, 0x82, 0xff}}},\n    {{{  1984,    154,    576}, 0, {  -410,   6926}, {0x00, 0x06, 0x82, 0xff}}},\n    {{{  1536,      0,    512}, 0, {  3164,   6136}, {0x00, 0x30, 0x8b, 0xff}}},\n    {{{  1984,    154,    576}, 0, {  -410,   4882}, {0x00, 0x30, 0x8b, 0xff}}},\n    {{{  2048,      0,    512}, 0, {  -922,   6136}, {0x00, 0x30, 0x8b, 0xff}}},\n    {{{  1600,    154,    576}, 0, {  2654,   4882}, {0x00, 0x30, 0x8b, 0xff}}},\n};\n\n// 0x07007D70 - 0x07007E60\nstatic const Vtx ssl_seg7_vertex_07007D70[] = {\n    {{{  2048,      0,   1024}, 0, {  3158,   6134}, {0x00, 0x30, 0x75, 0xff}}},\n    {{{  1984,    154,    960}, 0, {  2648,   4882}, {0x00, 0x30, 0x75, 0xff}}},\n    {{{  1600,    154,    960}, 0, {  -416,   4882}, {0x00, 0x30, 0x75, 0xff}}},\n    {{{  1600,    154,    960}, 0, {  2648,   6926}, {0x82, 0x06, 0x00, 0xff}}},\n    {{{  1648,   1024,    624}, 0, {     0,      0}, {0x82, 0x06, 0x00, 0xff}}},\n    {{{  1600,    154,    576}, 0, {  -416,   6926}, {0x82, 0x06, 0x00, 0xff}}},\n    {{{  1536,      0,   1024}, 0, {  3158,   2048}, {0x8b, 0x30, 0x00, 0xff}}},\n    {{{  1600,    154,    576}, 0, {  -416,    796}, {0x8b, 0x30, 0x00, 0xff}}},\n    {{{  1536,      0,    512}, 0, {  -928,   2048}, {0x8b, 0x30, 0x00, 0xff}}},\n    {{{  1600,    154,    960}, 0, {  2648,    796}, {0x8b, 0x30, 0x00, 0xff}}},\n    {{{  1984,    154,    960}, 0, {  2648,   6926}, {0x00, 0x06, 0x7e, 0xff}}},\n    {{{  1648,   1024,    912}, 0, {     0,      0}, {0x00, 0x06, 0x7e, 0xff}}},\n    {{{  1600,    154,    960}, 0, {  -416,   6926}, {0x00, 0x06, 0x7e, 0xff}}},\n    {{{  1936,   1024,    912}, 0, {  2268,      0}, {0x00, 0x06, 0x7e, 0xff}}},\n    {{{  1536,      0,   1024}, 0, {  -928,   6134}, {0x00, 0x30, 0x75, 0xff}}},\n};\n\n// 0x07007E60 - 0x07007F50\nstatic const Vtx ssl_seg7_vertex_07007E60[] = {\n    {{{ -6079,    154,    576}, 0, {  2654,   6926}, {0x00, 0x06, 0x82, 0xff}}},\n    {{{ -6031,   1024,    624}, 0, {  2268,      0}, {0x00, 0x06, 0x82, 0xff}}},\n    {{{ -5743,   1024,    624}, 0, {     0,      0}, {0x00, 0x06, 0x82, 0xff}}},\n    {{{  1984,    154,    576}, 0, {  2654,   6926}, {0x7e, 0x06, 0x00, 0xff}}},\n    {{{  1936,   1024,    624}, 0, {  2268,      0}, {0x7e, 0x06, 0x00, 0xff}}},\n    {{{  1936,   1024,    912}, 0, {     0,      0}, {0x7e, 0x06, 0x00, 0xff}}},\n    {{{  1984,    154,    960}, 0, {  -410,   6926}, {0x7e, 0x06, 0x00, 0xff}}},\n    {{{  2048,      0,    512}, 0, {  3164,   2046}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{  1984,    154,    576}, 0, {  2654,    796}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{  1984,    154,    960}, 0, {  -410,    796}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{  2048,      0,   1024}, 0, {  -922,   2046}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{  1936,   1024,    624}, 0, {  3034,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1648,   1024,    912}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1936,   1024,    912}, 0, {  3034,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1648,   1024,    624}, 0, {     0,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07007F50 - 0x07008040\nstatic const Vtx ssl_seg7_vertex_07007F50[] = {\n    {{{ -6143,      0,   1024}, 0, {  3158,   2048}, {0x8b, 0x30, 0x00, 0xff}}},\n    {{{ -6079,    154,    960}, 0, {  2648,    796}, {0x8b, 0x30, 0x00, 0xff}}},\n    {{{ -6079,    154,    576}, 0, {  -416,    796}, {0x8b, 0x30, 0x00, 0xff}}},\n    {{{ -6079,    154,    576}, 0, {  2654,   6926}, {0x00, 0x06, 0x82, 0xff}}},\n    {{{ -5743,   1024,    624}, 0, {     0,      0}, {0x00, 0x06, 0x82, 0xff}}},\n    {{{ -5695,    154,    576}, 0, {  -410,   6926}, {0x00, 0x06, 0x82, 0xff}}},\n    {{{ -6143,      0,    512}, 0, {  3164,   6136}, {0x00, 0x30, 0x8b, 0xff}}},\n    {{{ -5695,    154,    576}, 0, {  -410,   4882}, {0x00, 0x30, 0x8b, 0xff}}},\n    {{{ -5631,      0,    512}, 0, {  -922,   6136}, {0x00, 0x30, 0x8b, 0xff}}},\n    {{{ -6079,    154,    576}, 0, {  2654,   4882}, {0x00, 0x30, 0x8b, 0xff}}},\n    {{{ -6079,    154,    960}, 0, {  2648,   6926}, {0x82, 0x06, 0x00, 0xff}}},\n    {{{ -6031,   1024,    912}, 0, {  2268,      0}, {0x82, 0x06, 0x00, 0xff}}},\n    {{{ -6031,   1024,    624}, 0, {     0,      0}, {0x82, 0x06, 0x00, 0xff}}},\n    {{{ -6079,    154,    576}, 0, {  -416,   6926}, {0x82, 0x06, 0x00, 0xff}}},\n    {{{ -6143,      0,    512}, 0, {  -928,   2048}, {0x8b, 0x30, 0x00, 0xff}}},\n};\n\n// 0x07008040 - 0x07008130\nstatic const Vtx ssl_seg7_vertex_07008040[] = {\n    {{{ -5631,      0,    512}, 0, {  3164,   2046}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{ -5695,    154,    960}, 0, {  -410,    796}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{ -5631,      0,   1024}, 0, {  -922,   2046}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{ -5695,    154,    960}, 0, {  2648,   6926}, {0x00, 0x06, 0x7e, 0xff}}},\n    {{{ -6031,   1024,    912}, 0, {     0,      0}, {0x00, 0x06, 0x7e, 0xff}}},\n    {{{ -6079,    154,    960}, 0, {  -416,   6926}, {0x00, 0x06, 0x7e, 0xff}}},\n    {{{ -5743,   1024,    912}, 0, {  2268,      0}, {0x00, 0x06, 0x7e, 0xff}}},\n    {{{ -5631,      0,   1024}, 0, {  3158,   6134}, {0x00, 0x30, 0x75, 0xff}}},\n    {{{ -5695,    154,    960}, 0, {  2648,   4882}, {0x00, 0x30, 0x75, 0xff}}},\n    {{{ -6079,    154,    960}, 0, {  -416,   4882}, {0x00, 0x30, 0x75, 0xff}}},\n    {{{ -6143,      0,   1024}, 0, {  -928,   6134}, {0x00, 0x30, 0x75, 0xff}}},\n    {{{ -5695,    154,    576}, 0, {  2654,   6926}, {0x7e, 0x06, 0x00, 0xff}}},\n    {{{ -5743,   1024,    624}, 0, {  2268,      0}, {0x7e, 0x06, 0x00, 0xff}}},\n    {{{ -5743,   1024,    912}, 0, {     0,      0}, {0x7e, 0x06, 0x00, 0xff}}},\n    {{{ -5695,    154,    960}, 0, {  -410,   6926}, {0x7e, 0x06, 0x00, 0xff}}},\n};\n\n// 0x07008130 - 0x07008220\nstatic const Vtx ssl_seg7_vertex_07008130[] = {\n    {{{ -5631,      0,  -2815}, 0, {  3164,   2046}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{ -5695,    154,  -2367}, 0, {  -410,    796}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{ -5631,      0,  -2303}, 0, {  -922,   2046}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{ -5631,      0,    512}, 0, {  3164,   2046}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{ -5695,    154,    576}, 0, {  2654,    796}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{ -5695,    154,    960}, 0, {  -410,    796}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{ -5743,   1024,    624}, 0, {  3034,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6031,   1024,    912}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5743,   1024,    912}, 0, {  3034,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6031,   1024,    624}, 0, {     0,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5743,   1024,  -2703}, 0, {  3034,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6031,   1024,  -2703}, 0, {     0,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6031,   1024,  -2415}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5743,   1024,  -2415}, 0, {  3034,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5695,    154,  -2751}, 0, {  2654,    796}, {0x75, 0x30, 0x00, 0xff}}},\n};\n\n// 0x07008220 - 0x07008310\nstatic const Vtx ssl_seg7_vertex_07008220[] = {\n    {{{ -6143,      0,  -2303}, 0, {  3158,   2048}, {0x8b, 0x30, 0x00, 0xff}}},\n    {{{ -6079,    154,  -2367}, 0, {  2648,    796}, {0x8b, 0x30, 0x00, 0xff}}},\n    {{{ -6079,    154,  -2751}, 0, {  -416,    796}, {0x8b, 0x30, 0x00, 0xff}}},\n    {{{ -5695,    154,  -2751}, 0, {  2654,   6926}, {0x7e, 0x06, 0x00, 0xff}}},\n    {{{ -5743,   1024,  -2415}, 0, {     0,      0}, {0x7e, 0x06, 0x00, 0xff}}},\n    {{{ -5695,    154,  -2367}, 0, {  -410,   6926}, {0x7e, 0x06, 0x00, 0xff}}},\n    {{{ -5743,   1024,  -2703}, 0, {  2268,      0}, {0x7e, 0x06, 0x00, 0xff}}},\n    {{{ -5631,      0,  -2303}, 0, {  3158,   6134}, {0x00, 0x30, 0x75, 0xff}}},\n    {{{ -5695,    154,  -2367}, 0, {  2648,   4882}, {0x00, 0x30, 0x75, 0xff}}},\n    {{{ -6079,    154,  -2367}, 0, {  -416,   4882}, {0x00, 0x30, 0x75, 0xff}}},\n    {{{ -6143,      0,  -2303}, 0, {  -928,   6134}, {0x00, 0x30, 0x75, 0xff}}},\n    {{{ -5695,    154,  -2367}, 0, {  2648,   6926}, {0x00, 0x06, 0x7e, 0xff}}},\n    {{{ -5743,   1024,  -2415}, 0, {  2268,      0}, {0x00, 0x06, 0x7e, 0xff}}},\n    {{{ -6031,   1024,  -2415}, 0, {     0,      0}, {0x00, 0x06, 0x7e, 0xff}}},\n    {{{ -6079,    154,  -2367}, 0, {  -416,   6926}, {0x00, 0x06, 0x7e, 0xff}}},\n};\n\n// 0x07008310 - 0x07008400\nstatic const Vtx ssl_seg7_vertex_07008310[] = {\n    {{{ -6079,    154,  -2751}, 0, {  2654,   6926}, {0x00, 0x06, 0x82, 0xff}}},\n    {{{ -6031,   1024,  -2703}, 0, {  2268,      0}, {0x00, 0x06, 0x82, 0xff}}},\n    {{{ -5743,   1024,  -2703}, 0, {     0,      0}, {0x00, 0x06, 0x82, 0xff}}},\n    {{{ -6143,      0,  -2303}, 0, {  3158,   2048}, {0x8b, 0x30, 0x00, 0xff}}},\n    {{{ -6079,    154,  -2751}, 0, {  -416,    796}, {0x8b, 0x30, 0x00, 0xff}}},\n    {{{ -6143,      0,  -2815}, 0, {  -928,   2048}, {0x8b, 0x30, 0x00, 0xff}}},\n    {{{ -6079,    154,  -2367}, 0, {  2648,   6926}, {0x82, 0x06, 0x00, 0xff}}},\n    {{{ -6031,   1024,  -2703}, 0, {     0,      0}, {0x82, 0x06, 0x00, 0xff}}},\n    {{{ -6079,    154,  -2751}, 0, {  -416,   6926}, {0x82, 0x06, 0x00, 0xff}}},\n    {{{ -6031,   1024,  -2415}, 0, {  2268,      0}, {0x82, 0x06, 0x00, 0xff}}},\n    {{{ -6143,      0,  -2815}, 0, {  3164,   6136}, {0x00, 0x30, 0x8b, 0xff}}},\n    {{{ -5695,    154,  -2751}, 0, {  -410,   4882}, {0x00, 0x30, 0x8b, 0xff}}},\n    {{{ -5631,      0,  -2815}, 0, {  -922,   6136}, {0x00, 0x30, 0x8b, 0xff}}},\n    {{{ -6079,    154,  -2751}, 0, {  2654,   4882}, {0x00, 0x30, 0x8b, 0xff}}},\n    {{{ -5695,    154,  -2751}, 0, {  -410,   6926}, {0x00, 0x06, 0x82, 0xff}}},\n};\n\n// 0x07008400 - 0x070084F0\nstatic const Vtx ssl_seg7_vertex_07008400[] = {\n    {{{  6963,   -511,  -6962}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6758,   -511,  -6757}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6963,   -511,  -6757}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6144,      0,  -7167}, 0, {   990,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6963,      0,  -6962}, 0, {   582,    582}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  7168,      0,  -7167}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6758,      0,  -6962}, 0, {   582,    172}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6758,      0,  -6757}, 0, {   172,    172}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6144,      0,  -6143}, 0, { -1052,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6963,      0,  -6757}, 0, {   172,    582}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6656,      0,  -5631}, 0, { -2074,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  7168,      0,  -4607}, 0, { -4118,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4608,      0,  -5631}, 0, { -2074,  -4120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4608,      0,  -6143}, 0, { -1052,  -4120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6656,      0,  -4607}, 0, { -4118,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070084F0 - 0x070085E0\nstatic const Vtx ssl_seg7_vertex_070084F0[] = {\n    {{{ -3071,      0,  -6143}, 0, {  3034,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3071,      0,  -5631}, 0, {  2012,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2559,      0,  -5631}, 0, {  2012,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6963,   -511,  -6962}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6758,   -511,  -6962}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6758,   -511,  -6757}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4095,      0,  -4607}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3071,      0,  -4607}, 0, {     0,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3583,      0,  -5119}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4095,      0,  -5119}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3071,      0,  -6655}, 0, {  4056,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3583,      0,  -6655}, 0, {  4056,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2559,      0,  -4607}, 0, {     0,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2047,      0,  -5119}, 0, {   990,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2047,      0,  -6143}, 0, {  3034,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070085E0 - 0x070086C0\nstatic const Vtx ssl_seg7_vertex_070085E0[] = {\n    {{{  4608,      0,  -4095}, 0, { -1052,  16318}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4096,      0,  -4095}, 0, { -1052,  15296}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4096,      0,  -3071}, 0, { -3096,  15296}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2559,      0,  -4607}, 0, {     0,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,      0,  -4607}, 0, {     0,   6098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2047,      0,  -5119}, 0, {   990,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,      0,  -5119}, 0, {   990,   5076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,      0,  -6655}, 0, {  4056,   6098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,      0,  -6655}, 0, {  4056,   5076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,      0,  -4607}, 0, {     0,  10186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,      0,  -4607}, 0, {     0,   9164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,      0,  -3583}, 0, { -2074,   9164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4096,      0,  -3583}, 0, { -2074,  15296}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,      0,  -4095}, 0, { -1052,  10186}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070086C0 - 0x070087C0\nstatic const Vtx ssl_seg7_vertex_070086C0[] = {\n    {{{  2048,      0,  -5119}, 0, {   990,  11208}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,      0,  -4607}, 0, {     0,   8142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2560,      0,  -5119}, 0, {   990,  12230}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3072,      0,  -5119}, 0, {   990,  13252}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3072,      0,  -5631}, 0, {  2012,  13252}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2048,      0,  -5631}, 0, {  2012,  11208}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,      0,  -5119}, 0, {   990,   9164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3584,      0,  -4607}, 0, {     0,  14274}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3584,      0,  -6143}, 0, {  3034,  14274}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3072,      0,  -4607}, 0, {     0,  13252}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3072,      0,  -6143}, 0, {  3034,  13252}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2560,      0,  -4607}, 0, {     0,  12230}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,      0,  -5631}, 0, {  2012,   8142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5632,      0,  -3071}, 0, { -3096,  18362}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5120,      0,  -4095}, 0, { -1052,  17340}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5120,      0,  -3583}, 0, { -2074,  17340}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070087C0 - 0x070088A0\nstatic const Vtx ssl_seg7_vertex_070087C0[] = {\n    {{{  1024,      0,  -5119}, 0, {   990,   9164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,      0,  -6143}, 0, {  3034,   9164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,      0,  -6143}, 0, {  3034,   8142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,      0,  -5631}, 0, {  2012,   8142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,      0,  -5631}, 0, {  2012,   5076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,      0,  -5119}, 0, {   990,   5076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,      0,  -5119}, 0, {   990,   8142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4608,      0,  -3583}, 0, { -2074,  16318}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4608,      0,  -4095}, 0, { -1052,  16318}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4096,      0,  -3071}, 0, { -3096,  15296}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5632,      0,  -3071}, 0, { -3096,  18362}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5120,      0,  -3583}, 0, { -2074,  17340}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5632,      0,  -4095}, 0, { -1052,  18362}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5120,      0,  -4095}, 0, { -1052,  17340}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070088A0 - 0x070089A0\nstatic const Vtx ssl_seg7_vertex_070088A0[] = {\n    {{{  6144,      0,  -5119}, 0, { -3096,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5632,      0,  -5119}, 0, { -3096,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5632,      0,  -4607}, 0, { -4118,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4608,      0,   -511}, 0, { -4118,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5120,      0,  -3071}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4608,      0,  -3071}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5120,      0,   -511}, 0, { -4118,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6656,      0,  -2559}, 0, { -8206,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6144,      0,  -2559}, 0, { -8206,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6144,      0,  -2047}, 0, { -9228,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6656,      0,  -2047}, 0, { -9228,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  7168,      0,  -3583}, 0, { -6162,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6656,      0,  -3583}, 0, { -6162,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6656,      0,  -3071}, 0, { -7184,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  7168,      0,  -3071}, 0, { -7184,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6144,      0,  -4607}, 0, { -4118,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070089A0 - 0x07008AA0\nstatic const Vtx ssl_seg7_vertex_070089A0[] = {\n    {{{  1555,    -81,  -2322}, 0, {  1420,   1032}, {0x8b, 0x31, 0x00, 0xff}}},\n    {{{  1600,     26,  -2751}, 0, { -1940,    262}, {0x8b, 0x31, 0x00, 0xff}}},\n    {{{  1521,   -162,  -2830}, 0, { -2522,   1774}, {0x8b, 0x31, 0x00, 0xff}}},\n    {{{  2050,   -133,  -2301}, 0, {  4674,   1542}, {0x00, 0x31, 0x75, 0xff}}},\n    {{{  1600,     26,  -2367}, 0, {  1112,    254}, {0x00, 0x31, 0x75, 0xff}}},\n    {{{  1555,    -81,  -2322}, 0, {   814,   1024}, {0x00, 0x31, 0x75, 0xff}}},\n    {{{  2050,   -133,  -2301}, 0, {  4674,   1542}, {0x00, 0x30, 0x75, 0xff}}},\n    {{{  1984,     26,  -2367}, 0, {  4178,    254}, {0x00, 0x30, 0x75, 0xff}}},\n    {{{  1600,     26,  -2367}, 0, {  1112,    254}, {0x00, 0x30, 0x75, 0xff}}},\n    {{{  2091,   -230,  -2858}, 0, {  4554,  -1112}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{  1984,     26,  -2751}, 0, {  3702,  -3332}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{  1984,     26,  -2367}, 0, {   636,  -3332}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{  2050,   -133,  -2301}, 0, {   140,  -2040}, {0x75, 0x30, 0x00, 0xff}}},\n    {{{  1521,   -162,  -2830}, 0, {  1698,   1768}, {0x00, 0x31, 0x8b, 0xff}}},\n    {{{  1600,     26,  -2751}, 0, {  1116,    256}, {0x00, 0x31, 0x8b, 0xff}}},\n    {{{  1984,     26,  -2751}, 0, { -1948,    256}, {0x00, 0x31, 0x8b, 0xff}}},\n};\n\n// 0x07008AA0 - 0x07008BA0\nstatic const Vtx ssl_seg7_vertex_07008AA0[] = {\n    {{{  1521,   -162,  -2830}, 0, {  1698,   1768}, {0x00, 0x31, 0x8b, 0xff}}},\n    {{{  1984,     26,  -2751}, 0, { -1948,    256}, {0x00, 0x31, 0x8b, 0xff}}},\n    {{{  2091,   -230,  -2858}, 0, { -2802,   2474}, {0x00, 0x31, 0x8b, 0xff}}},\n    {{{  1600,     26,  -2367}, 0, {  2648,   6926}, {0x82, 0x06, 0x00, 0xff}}},\n    {{{  1648,    896,  -2415}, 0, {  2268,      0}, {0x82, 0x06, 0x00, 0xff}}},\n    {{{  1648,    896,  -2703}, 0, {     0,      0}, {0x82, 0x06, 0x00, 0xff}}},\n    {{{  1555,    -81,  -2322}, 0, {  1420,   1032}, {0x8b, 0x31, 0x00, 0xff}}},\n    {{{  1600,     26,  -2367}, 0, {  1124,    262}, {0x8b, 0x31, 0x00, 0xff}}},\n    {{{  1600,     26,  -2751}, 0, { -1940,    262}, {0x8b, 0x31, 0x00, 0xff}}},\n    {{{  1984,     26,  -2751}, 0, {  2654,   6926}, {0x7e, 0x06, 0x00, 0xff}}},\n    {{{  1936,    896,  -2703}, 0, {  2268,      0}, {0x7e, 0x06, 0x00, 0xff}}},\n    {{{  1936,    896,  -2415}, 0, {     0,      0}, {0x7e, 0x06, 0x00, 0xff}}},\n    {{{  1984,     26,  -2367}, 0, {  -410,   6926}, {0x7e, 0x06, 0x00, 0xff}}},\n    {{{  1984,     26,  -2367}, 0, {  2648,   6926}, {0x00, 0x06, 0x7e, 0xff}}},\n    {{{  1648,    896,  -2415}, 0, {     0,      0}, {0x00, 0x06, 0x7e, 0xff}}},\n    {{{  1600,     26,  -2367}, 0, {  -416,   6926}, {0x00, 0x06, 0x7e, 0xff}}},\n};\n\n// 0x07008BA0 - 0x07008C40\nstatic const Vtx ssl_seg7_vertex_07008BA0[] = {\n    {{{  1984,     26,  -2367}, 0, {  2648,   6926}, {0x00, 0x06, 0x7e, 0xff}}},\n    {{{  1936,    896,  -2415}, 0, {  2268,      0}, {0x00, 0x06, 0x7e, 0xff}}},\n    {{{  1648,    896,  -2415}, 0, {     0,      0}, {0x00, 0x06, 0x7e, 0xff}}},\n    {{{  1600,     26,  -2367}, 0, {  2648,   6926}, {0x82, 0x06, 0x00, 0xff}}},\n    {{{  1648,    896,  -2703}, 0, {     0,      0}, {0x82, 0x06, 0x00, 0xff}}},\n    {{{  1600,     26,  -2751}, 0, {  -416,   6926}, {0x82, 0x06, 0x00, 0xff}}},\n    {{{  1600,     26,  -2751}, 0, {  2654,   6926}, {0x00, 0x06, 0x82, 0xff}}},\n    {{{  1648,    896,  -2703}, 0, {  2268,      0}, {0x00, 0x06, 0x82, 0xff}}},\n    {{{  1936,    896,  -2703}, 0, {     0,      0}, {0x00, 0x06, 0x82, 0xff}}},\n    {{{  1984,     26,  -2751}, 0, {  -410,   6926}, {0x00, 0x06, 0x82, 0xff}}},\n};\n\n// 0x07008C40 - 0x07008DE0\nstatic const Gfx ssl_seg7_dl_07008C40[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_0900A800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ssl_seg7_lights_07004BE0.l, 1),\n    gsSPLight(&ssl_seg7_lights_07004BE0.a, 2),\n    gsSPVertex(ssl_seg7_vertex_07004C40, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPLight(&ssl_seg7_lights_07004BF8.l, 1),\n    gsSPLight(&ssl_seg7_lights_07004BF8.a, 2),\n    gsSPVertex(ssl_seg7_vertex_07004C80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07004D70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07004E60, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  2,  5,  6, 0x0),\n    gsSP2Triangles( 4,  2,  6, 0x0,  2,  7,  5, 0x0),\n    gsSP2Triangles( 4,  6,  8, 0x0,  3,  9,  1, 0x0),\n    gsSP2Triangles(10,  9,  3, 0x0, 10,  7,  9, 0x0),\n    gsSP2Triangles(10, 11,  5, 0x0,  7, 10,  5, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPLight(&ssl_seg7_lights_07004C10.l, 1),\n    gsSPLight(&ssl_seg7_lights_07004C10.a, 2),\n    gsSPVertex(ssl_seg7_vertex_07004F60, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPLight(&ssl_seg7_lights_07004C28.l, 1),\n    gsSPLight(&ssl_seg7_lights_07004C28.a, 2),\n    gsSPVertex(ssl_seg7_vertex_07004FA0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008DE0 - 0x07009170\nstatic const Gfx ssl_seg7_dl_07008DE0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ssl_seg7_lights_07004BF8.l, 1),\n    gsSPLight(&ssl_seg7_lights_07004BF8.a, 2),\n    gsSPVertex(ssl_seg7_vertex_07004FE0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070050D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070051C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070052B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070053A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07005490, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07005580, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07005670, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07005760, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07005850, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07005940, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07005A30, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07005B20, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07005C10, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  6,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009170 - 0x07009410\nstatic const Gfx ssl_seg7_dl_07009170[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ssl_seg7_vertex_07005C80, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07005D60, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07005E60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07005F50, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07006030, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07006120, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 6,  9, 10, 0x0,  0, 11,  1, 0x0),\n    gsSP2Triangles( 0, 12, 11, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07006220, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12,  7, 0x0),\n    gsSP2Triangles(11,  7, 10, 0x0,  8, 13,  9, 0x0),\n    gsSP1Triangle( 8, 14, 13, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07006310, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070063F0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPLight(&ssl_seg7_lights_07004C10.l, 1),\n    gsSPLight(&ssl_seg7_lights_07004C10.a, 2),\n    gsSPVertex(ssl_seg7_vertex_07006470, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07006560, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  6,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009410 - 0x07009950\nstatic const Gfx ssl_seg7_dl_07009410[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ssl_seg7_lights_07004BF8.l, 1),\n    gsSPLight(&ssl_seg7_lights_07004BF8.a, 2),\n    gsSPVertex(ssl_seg7_vertex_070065D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070066C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070067B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070068B0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07006990, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07006A80, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07006B60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07006C50, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07006D50, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07006E40, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07006F20, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07007010, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07007100, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070071F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070072E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070073D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070074C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070075B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070076A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07007790, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07007880, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009950 - 0x07009A40\nstatic const Gfx ssl_seg7_dl_07009950[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09002800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ssl_seg7_vertex_07007900, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07007A00, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07007AF0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07007BE0, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  0,  4,  5, 0x0),\n    gsSP2Triangles( 0,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009A40 - 0x07009C60\nstatic const Gfx ssl_seg7_dl_07009A40[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ssl_seg7_vertex_07007C80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07007D70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07007E60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07007F50, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07008040, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07008130, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07008220, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07008310, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009C60 - 0x07009E90\nstatic const Gfx ssl_seg7_dl_07009C60[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ssl_seg7_vertex_07008400, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  6,  3, 0x0),\n    gsSP2Triangles( 7,  3,  8, 0x0,  5,  4,  9, 0x0),\n    gsSP2Triangles(10, 11,  5, 0x0, 10,  5,  9, 0x0),\n    gsSP2Triangles( 8, 12, 10, 0x0,  8, 13, 12, 0x0),\n    gsSP2Triangles( 7,  8, 10, 0x0, 10, 14, 11, 0x0),\n    gsSP1Triangle(10,  9,  7, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070084F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 0, 10,  8, 0x0,  0,  8,  1, 0x0),\n    gsSP2Triangles( 8,  7,  1, 0x0, 10, 11,  8, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14,  0,  2, 0x0),\n    gsSP1Triangle(14,  2, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070085E0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 4,  8,  6, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(11, 12,  1, 0x0, 11,  1, 13, 0x0),\n    gsSP1Triangle(11, 13,  9, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070086C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 4,  5,  0, 0x0,  0,  6,  1, 0x0),\n    gsSP2Triangles( 3,  7,  8, 0x0,  3,  9,  7, 0x0),\n    gsSP2Triangles( 3,  8,  4, 0x0,  8, 10,  4, 0x0),\n    gsSP2Triangles( 1, 11,  2, 0x0,  6, 12,  1, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070087C0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  3,  5,  6, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles(10, 11,  7, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070088A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009E90 - 0x07009F48\nstatic const Gfx ssl_seg7_dl_07009E90[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ssl_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ssl_seg7_vertex_070089A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07008AA0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07008BA0, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009F48 - 0x0700A020\nconst Gfx ssl_seg7_dl_07009F48[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ssl_seg7_dl_07008C40),\n    gsSPDisplayList(ssl_seg7_dl_07008DE0),\n    gsSPDisplayList(ssl_seg7_dl_07009170),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ssl_seg7_dl_07009410),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ssl_seg7_dl_07009950),\n    gsSPDisplayList(ssl_seg7_dl_07009A40),\n    gsSPDisplayList(ssl_seg7_dl_07009C60),\n    gsSPDisplayList(ssl_seg7_dl_07009E90),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ssl/areas/1/2/model.inc.c",
    "content": "// 0x0700A020 - 0x0700A038\nstatic const Lights1 ssl_seg7_lights_0700A020 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700A038 - 0x0700A138\nstatic const Vtx ssl_seg7_vertex_0700A038[] = {\n    {{{  1024,      0,  -2047}, 0, {  2012,    478}, {0x1b, 0x7b, 0xfd, 0xff}}},\n    {{{  2048,      0,    375}, 0, {   802,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2560,      0,   -511}, 0, {  1246,   1244}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,      0,    512}, 0, {   734,    734}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3584,      0,   -511}, 0, {  1246,   1754}, {0x00, 0x7e, 0xf3, 0xff}}},\n    {{{  1024,      0,   1024}, 0, {   480,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,   -255,  -3583}, 0, {   990,    990}, {0x40, 0x69, 0xe6, 0xff}}},\n    {{{  1024,      0,  -3583}, 0, {   990,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1024,      0,  -3071}, 0, {     0,    480}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  1024,      0,  -2047}, 0, { -2074,    480}, {0x1b, 0x7b, 0xfd, 0xff}}},\n    {{{  2048,      0,    512}, 0, {   734,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2560,      0,   1262}, 0, {   360,   1244}, {0xf9, 0x7e, 0xf5, 0xff}}},\n    {{{  2048,      0,   1024}, 0, {   480,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,      0,   1024}, 0, {   480,    734}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,      0,   2935}, 0, {  -472,    734}, {0xf4, 0x7e, 0x00, 0xff}}},\n    {{{   512,      0,   2935}, 0, {  -472,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700A138 - 0x0700A238\nstatic const Vtx ssl_seg7_vertex_0700A138[] = {\n    {{{     0,      0,   2048}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,      0,   1024}, 0, {   480,    734}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,      0,   1024}, 0, {   480,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,      0,   2935}, 0, {  -472,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6143,      0,    512}, 0, {   224,     32}, {0xfb, 0x7e, 0x03, 0xff}}},\n    {{{ -7167,      0,  -2559}, 0, {    96,   -352}, {0x0f, 0x7d, 0xfa, 0xff}}},\n    {{{ -6655,      0,    512}, 0, {   160,     32}, {0x23, 0x79, 0xfe, 0xff}}},\n    {{{ -6143,      0,   1024}, 0, {   224,     96}, {0x0f, 0x79, 0xe0, 0xff}}},\n    {{{ -6143,      0,  -2815}, 0, {   224,   -384}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6399,      0,  -5055}, 0, {   192,   -662}, {0x1c, 0x7b, 0x00, 0xff}}},\n    {{{ -6143,      0,  -2303}, 0, {   224,   -320}, {0x01, 0x7e, 0xf3, 0xff}}},\n    {{{ -6143,    128,  -1535}, 0, {   224,   -224}, {0x02, 0x7e, 0xfb, 0xff}}},\n    {{{ -8191,   1408,   1536}, 0, {     0,    160}, {0x3d, 0x69, 0xde, 0xff}}},\n    {{{ -8447,    256,  -3071}, 0, {   -62,   -416}, {0x20, 0x7a, 0x00, 0xff}}},\n    {{{ -6655,      0,   1024}, 0, {   160,     96}, {0x24, 0x6e, 0xce, 0xff}}},\n    {{{ -5631,      0,   2560}, 0, {   288,    288}, {0x19, 0x7c, 0xf8, 0xff}}},\n};\n\n// 0x0700A238 - 0x0700A328\nstatic const Vtx ssl_seg7_vertex_0700A238[] = {\n    {{{ -5631,      0,   2560}, 0, {   288,    288}, {0x19, 0x7c, 0xf8, 0xff}}},\n    {{{ -8191,   1408,   1536}, 0, {     0,    160}, {0x3d, 0x69, 0xde, 0xff}}},\n    {{{ -8191,   1280,   6144}, 0, {     0,    734}, {0x1e, 0x7b, 0xfe, 0xff}}},\n    {{{  3584,      0,   -511}, 0, {  2524,   5076}, {0x00, 0x7e, 0xf3, 0xff}}},\n    {{{  1024,    -50,  -2354}, 0, {     0,   1396}, {0x0a, 0x7d, 0xed, 0xff}}},\n    {{{  1024,      0,  -2047}, 0, {     0,   2010}, {0x1b, 0x7b, 0xfd, 0xff}}},\n    {{{ -6143,      0,   1024}, 0, {   224,     96}, {0x0f, 0x79, 0xe0, 0xff}}},\n    {{{ -5631,      0,   1024}, 0, {   288,     96}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,   -255,  -3583}, 0, {     0,  -1054}, {0x40, 0x69, 0xe6, 0xff}}},\n    {{{  1521,   -162,  -2830}, 0, {   464,    450}, {0x0a, 0x7c, 0xeb, 0xff}}},\n    {{{  2091,   -230,  -2858}, 0, {  1032,    394}, {0x1d, 0x73, 0xd4, 0xff}}},\n    {{{  4096,   -255,  -1535}, 0, {  3034,   3032}, {0x0e, 0x79, 0xe0, 0xff}}},\n    {{{  3686,    -50,   -716}, 0, {  2626,   4668}, {0x0d, 0x7c, 0xec, 0xff}}},\n    {{{  2050,   -133,  -2301}, 0, {   992,   1504}, {0x0d, 0x7c, 0xec, 0xff}}},\n    {{{  1555,    -81,  -2322}, 0, {   498,   1460}, {0x0a, 0x7d, 0xee, 0xff}}},\n};\n\n// 0x0700A328 - 0x0700A408\nstatic const Vtx ssl_seg7_vertex_0700A328[] = {\n    {{{  7168,   -255,  -6655}, 0, {   510,   -384}, {0xf4, 0x7e, 0x06, 0xff}}},\n    {{{  7680,      0,  -7167}, 0, {   510,   -448}, {0xf9, 0x78, 0x28, 0xff}}},\n    {{{  7168,      0,  -7167}, 0, {   478,   -416}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  7168,   -255,  -6655}, 0, {  7122, -12296}, {0xf4, 0x7e, 0x06, 0xff}}},\n    {{{  4096,   -255,  -1535}, 0, {  4056,  -2076}, {0x0e, 0x79, 0xe0, 0xff}}},\n    {{{  7168,   -255,  -1535}, 0, {  7122,  -2076}, {0xf2, 0x7d, 0xf1, 0xff}}},\n    {{{  1024,   -255,  -3583}, 0, {   990,  -6164}, {0x40, 0x69, 0xe6, 0xff}}},\n    {{{  4608,   -255,  -1535}, 0, {  4568,  -2076}, {0x00, 0x7b, 0xe2, 0xff}}},\n    {{{  4608,      0,   -511}, 0, {  4568,      0}, {0x00, 0x7b, 0xe2, 0xff}}},\n    {{{  3584,      0,   -511}, 0, {  3546,      0}, {0x00, 0x7e, 0xf3, 0xff}}},\n    {{{  7680,      0,   -511}, 0, {  7634,      0}, {0xec, 0x7c, 0xf5, 0xff}}},\n    {{{  5120,      0,   -511}, 0, {  5078,      0}, {0x00, 0x7b, 0xe2, 0xff}}},\n    {{{  5120,   -255,  -1535}, 0, {  5078,  -2076}, {0x00, 0x7b, 0xe2, 0xff}}},\n    {{{  7680,      0,  -7167}, 0, {  7634, -13318}, {0xf9, 0x78, 0x28, 0xff}}},\n};\n\n// 0x0700A408 - 0x0700A4F8\nstatic const Vtx ssl_seg7_vertex_0700A408[] = {\n    {{{  1024,      0,  -4095}, 0, {   990,      0}, {0x00, 0x78, 0xda, 0xff}}},\n    {{{     0,      0,  -4095}, 0, {   480,      0}, {0x00, 0x78, 0xda, 0xff}}},\n    {{{  1024,      0,  -3071}, 0, {   990,    478}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{ -3583,   -255,  -6655}, 0, { -3608, -12296}, {0x0e, 0x7a, 0x1d, 0xff}}},\n    {{{  6144,      0,  -7167}, 0, {  6100, -13318}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{ -4095,      0,  -7167}, 0, { -4118, -13318}, {0x04, 0x7d, 0x15, 0xff}}},\n    {{{  6144,   -255,  -6655}, 0, {  6100, -12296}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{ -3583,   -255,  -4607}, 0, { -3608,  -8208}, {0x17, 0x7c, 0xf5, 0xff}}},\n    {{{  7168,   -255,  -6655}, 0, {  7122, -12296}, {0xf4, 0x7e, 0x06, 0xff}}},\n    {{{ -4095,      0,  -4095}, 0, { -4118,  -7186}, {0x13, 0x7c, 0xef, 0xff}}},\n    {{{  1024,   -255,  -4607}, 0, {   990,  -8208}, {0x00, 0x7d, 0xed, 0xff}}},\n    {{{  1024,   -255,  -3583}, 0, {   990,  -6164}, {0x40, 0x69, 0xe6, 0xff}}},\n    {{{     0,   -255,  -4607}, 0, {     0,  -8208}, {0x00, 0x78, 0xda, 0xff}}},\n    {{{  1024,      0,  -4095}, 0, {   990,  -7186}, {0x00, 0x78, 0xda, 0xff}}},\n    {{{     0,      0,  -4095}, 0, {     0,  -7186}, {0x00, 0x78, 0xda, 0xff}}},\n};\n\n// 0x0700A4F8 - 0x0700A5E8\nstatic const Vtx ssl_seg7_vertex_0700A4F8[] = {\n    {{{  1280,    205,   5632}, 0, {  1150,    670}, {0x01, 0x72, 0x36, 0xff}}},\n    {{{   384,      0,   6016}, 0, {  1038,    718}, {0x02, 0x7b, 0x1d, 0xff}}},\n    {{{   768,      0,   6016}, 0, {  1086,    718}, {0xfe, 0x7b, 0x1c, 0xff}}},\n    {{{  -511,      0,   6144}, 0, {   926,    734}, {0x07, 0x76, 0x2d, 0xff}}},\n    {{{ -2687,   1280,   5632}, 0, {   654,    670}, {0xf2, 0x7d, 0xfa, 0xff}}},\n    {{{  1792,    563,   5376}, 0, {  1214,    638}, {0xf6, 0x7e, 0x01, 0xff}}},\n    {{{   512,      0,   4708}, 0, {  1054,    556}, {0x18, 0x70, 0xcc, 0xff}}},\n    {{{  2048,      0,   6144}, 0, {  1246,    734}, {0x04, 0x7a, 0x1f, 0xff}}},\n    {{{  1536,      0,   6144}, 0, {  1182,    734}, {0xff, 0x7d, 0x13, 0xff}}},\n    {{{ -1087,   1088,   5170}, 0, {   854,    614}, {0x29, 0x77, 0xf1, 0xff}}},\n    {{{  1024,      0,   6144}, 0, {  1118,    734}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,      0,   6144}, 0, {  1022,    734}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,      0,   6656}, 0, {   990,    798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,      0,   7680}, 0, {   990,    926}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,      0,   6400}, 0, {   990,    766}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700A5E8 - 0x0700A6E8\nstatic const Vtx ssl_seg7_vertex_0700A5E8[] = {\n    {{{ -8191,   1280,   6144}, 0, {     0,    734}, {0x1e, 0x7b, 0xfe, 0xff}}},\n    {{{ -5631,      0,   4096}, 0, {   288,    478}, {0x11, 0x7d, 0x00, 0xff}}},\n    {{{ -5631,      0,   2560}, 0, {   288,    288}, {0x19, 0x7c, 0xf8, 0xff}}},\n    {{{  -511,      0,   6144}, 0, {   926,    734}, {0x07, 0x76, 0x2d, 0xff}}},\n    {{{ -8191,      0,   7680}, 0, {     0,    926}, {0x08, 0x77, 0x2a, 0xff}}},\n    {{{ -2687,   1280,   5632}, 0, {   654,    670}, {0xf2, 0x7d, 0xfa, 0xff}}},\n    {{{ -3583,      0,   4608}, 0, {   542,    542}, {0xfe, 0x78, 0xd9, 0xff}}},\n    {{{ -1087,   1088,   5170}, 0, {   854,    614}, {0x29, 0x77, 0xf1, 0xff}}},\n    {{{ -1023,    768,   3822}, 0, {   862,    444}, {0x0f, 0x55, 0xa4, 0xff}}},\n    {{{ -1023,      0,   3822}, 0, {   862,    444}, {0xf3, 0x6c, 0xbf, 0xff}}},\n    {{{ -5119,      0,   4608}, 0, {   352,    542}, {0x01, 0x7c, 0xea, 0xff}}},\n    {{{ -3071,      0,   3822}, 0, {   606,    444}, {0x05, 0x7e, 0xfc, 0xff}}},\n    {{{ -3967,    128,   4215}, 0, {   494,    494}, {0x00, 0x7e, 0xfc, 0xff}}},\n    {{{ -4095,      0,   3822}, 0, {   480,    444}, {0xfa, 0x7d, 0xef, 0xff}}},\n    {{{ -4607,      0,   2935}, 0, {   416,    334}, {0x0b, 0x7e, 0x00, 0xff}}},\n    {{{ -5119,    128,   3131}, 0, {   352,    358}, {0x09, 0x7e, 0x00, 0xff}}},\n};\n\n// 0x0700A6E8 - 0x0700A7E8\nstatic const Vtx ssl_seg7_vertex_0700A6E8[] = {\n    {{{ -6399,      0,  -5055}, 0, {   192,   -662}, {0x1c, 0x7b, 0x00, 0xff}}},\n    {{{ -6271,      0,  -6463}, 0, {   208,   -838}, {0x26, 0x77, 0x15, 0xff}}},\n    {{{ -8447,    256,  -3071}, 0, {   -62,   -416}, {0x20, 0x7a, 0x00, 0xff}}},\n    {{{ -8191,   1280,  -8191}, 0, {     0,  -1054}, {0x22, 0x6d, 0x36, 0xff}}},\n    {{{ -3071,      0,   3822}, 0, {   606,    444}, {0x05, 0x7e, 0xfc, 0xff}}},\n    {{{ -4095,      0,   3822}, 0, {   480,    444}, {0xfa, 0x7d, 0xef, 0xff}}},\n    {{{ -3967,    128,   4215}, 0, {   494,    494}, {0x00, 0x7e, 0xfc, 0xff}}},\n    {{{ -5879,   -255,  -6182}, 0, {   256,   -804}, {0x21, 0x7a, 0x07, 0xff}}},\n    {{{ -5403,   -255,  -6845}, 0, {   316,   -886}, {0x12, 0x71, 0x36, 0xff}}},\n    {{{ -5874,   -255,  -6354}, 0, {   258,   -824}, {0x3b, 0x6c, 0x1c, 0xff}}},\n    {{{ -5631,      0,  -2815}, 0, {   288,   -384}, {0xf6, 0x7e, 0x06, 0xff}}},\n    {{{ -5631,      0,  -5055}, 0, {   288,   -662}, {0xeb, 0x75, 0xd5, 0xff}}},\n    {{{ -6143,      0,  -2815}, 0, {   224,   -384}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6207,      0,  -6015}, 0, {   216,   -782}, {0x3c, 0x6f, 0x02, 0xff}}},\n    {{{ -6141,   -255,  -5499}, 0, {   224,   -718}, {0x26, 0x75, 0xe4, 0xff}}},\n    {{{ -5247,      0,  -7231}, 0, {   336,   -934}, {0x1d, 0x69, 0x40, 0xff}}},\n};\n\n// 0x0700A7E8 - 0x0700A8E8\nstatic const Vtx ssl_seg7_vertex_0700A7E8[] = {\n    {{{ -5247,      0,  -7231}, 0, {   336,   -934}, {0x1d, 0x69, 0x40, 0xff}}},\n    {{{  -255,    256,  -8191}, 0, {   958,  -1054}, {0xfd, 0x76, 0x2e, 0xff}}},\n    {{{ -8191,   1280,  -8191}, 0, {     0,  -1054}, {0x22, 0x6d, 0x36, 0xff}}},\n    {{{ -5403,   -255,  -6845}, 0, {   316,   -886}, {0x12, 0x71, 0x36, 0xff}}},\n    {{{ -4095,      0,  -7167}, 0, {   480,   -926}, {0x04, 0x7d, 0x15, 0xff}}},\n    {{{ -5874,   -255,  -6354}, 0, {   258,   -824}, {0x3b, 0x6c, 0x1c, 0xff}}},\n    {{{ -5879,   -255,  -6182}, 0, {   256,   -804}, {0x21, 0x7a, 0x07, 0xff}}},\n    {{{ -6207,      0,  -6015}, 0, {   216,   -782}, {0x3c, 0x6f, 0x02, 0xff}}},\n    {{{   512,      0,   4708}, 0, {  1054,    556}, {0x18, 0x70, 0xcc, 0xff}}},\n    {{{     0,      0,   3822}, 0, {   990,    444}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,      0,   3822}, 0, {   862,    444}, {0xf3, 0x6c, 0xbf, 0xff}}},\n    {{{     0,      0,  -7167}, 0, {   990,   -926}, {0xf8, 0x72, 0x35, 0xff}}},\n    {{{  3584,   1024,  -8191}, 0, {  1438,  -1054}, {0x02, 0x76, 0x2c, 0xff}}},\n    {{{ -5055,      0,  -6399}, 0, {   360,   -830}, {0xc6, 0x65, 0xcf, 0xff}}},\n    {{{ -4863,      0,  -5439}, 0, {   384,   -710}, {0xea, 0x7c, 0xfb, 0xff}}},\n    {{{ -4095,      0,  -5119}, 0, {   480,   -670}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700A8E8 - 0x0700A9E8\nstatic const Vtx ssl_seg7_vertex_0700A8E8[] = {\n    {{{ -5403,   -255,  -6845}, 0, {   316,   -886}, {0x12, 0x71, 0x36, 0xff}}},\n    {{{ -4528,   -255,  -6920}, 0, {   426,   -896}, {0xe1, 0x79, 0xea, 0xff}}},\n    {{{ -4095,      0,  -7167}, 0, {   480,   -926}, {0x04, 0x7d, 0x15, 0xff}}},\n    {{{ -5055,      0,  -6399}, 0, {   360,   -830}, {0xc6, 0x65, 0xcf, 0xff}}},\n    {{{  7680,      0,  -7167}, 0, {  1948,   -926}, {0xf9, 0x78, 0x28, 0xff}}},\n    {{{  3584,   1024,  -8191}, 0, {  1438,  -1054}, {0x02, 0x76, 0x2c, 0xff}}},\n    {{{     0,      0,  -7167}, 0, {   990,   -926}, {0xf8, 0x72, 0x35, 0xff}}},\n    {{{  7680,      0,  -8191}, 0, {  1948,  -1054}, {0x1e, 0x7b, 0x00, 0xff}}},\n    {{{  2048,      0,   6144}, 0, {  1246,    734}, {0x04, 0x7a, 0x1f, 0xff}}},\n    {{{  3072,      0,   5632}, 0, {  1374,    670}, {0x0c, 0x74, 0x31, 0xff}}},\n    {{{  2816,    307,   5376}, 0, {  1342,    638}, {0x1d, 0x79, 0x16, 0xff}}},\n    {{{  1536,      0,   4708}, 0, {  1182,    556}, {0xf6, 0x77, 0xd7, 0xff}}},\n    {{{   512,      0,   4708}, 0, {  1054,    556}, {0x18, 0x70, 0xcc, 0xff}}},\n    {{{  1792,    563,   5376}, 0, {  1214,    638}, {0xf6, 0x7e, 0x01, 0xff}}},\n    {{{ -1023,      0,   3822}, 0, {   862,    444}, {0xf3, 0x6c, 0xbf, 0xff}}},\n    {{{ -1023,    768,   3822}, 0, {   862,    444}, {0x0f, 0x55, 0xa4, 0xff}}},\n};\n\n// 0x0700A9E8 - 0x0700AAD8\nstatic const Vtx ssl_seg7_vertex_0700A9E8[] = {\n    {{{ -1087,   1088,   5170}, 0, {   854,    614}, {0x29, 0x77, 0xf1, 0xff}}},\n    {{{   512,      0,   4708}, 0, {  1054,    556}, {0x18, 0x70, 0xcc, 0xff}}},\n    {{{ -1023,    768,   3822}, 0, {   862,    444}, {0x0f, 0x55, 0xa4, 0xff}}},\n    {{{  2816,    307,   5376}, 0, {  1342,    638}, {0x1d, 0x79, 0x16, 0xff}}},\n    {{{  1536,      0,   4708}, 0, {  1182,    556}, {0xf6, 0x77, 0xd7, 0xff}}},\n    {{{  1792,    563,   5376}, 0, {  1214,    638}, {0xf6, 0x7e, 0x01, 0xff}}},\n    {{{  2048,      0,   6144}, 0, {  1246,    734}, {0x04, 0x7a, 0x1f, 0xff}}},\n    {{{  1536,      0,   6144}, 0, {  1182,    734}, {0xff, 0x7d, 0x13, 0xff}}},\n    {{{  1280,      0,   6400}, 0, {  1150,    766}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,      0,   6656}, 0, {  1150,    798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5248,      0,   6638}, 0, {  1644,    796}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3584,      0,   6144}, 0, {  1438,    734}, {0x00, 0x7e, 0x0b, 0xff}}},\n    {{{  3072,      0,   5632}, 0, {  1374,    670}, {0x0c, 0x74, 0x31, 0xff}}},\n    {{{  1024,      0,   6144}, 0, {  1118,    734}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3072,    307,   5120}, 0, {  1374,    606}, {0x0b, 0x7e, 0x08, 0xff}}},\n};\n\n// 0x0700AAD8 - 0x0700ABD8\nstatic const Vtx ssl_seg7_vertex_0700AAD8[] = {\n    {{{  2048,      0,   3822}, 0, {  1246,    444}, {0xe5, 0x7b, 0xfd, 0xff}}},\n    {{{  1536,      0,   4708}, 0, {  1182,    556}, {0xf6, 0x77, 0xd7, 0xff}}},\n    {{{  3584,    563,   4608}, 0, {  1438,    542}, {0x11, 0x7d, 0x01, 0xff}}},\n    {{{  3584,    307,   5120}, 0, {  1438,    606}, {0x0f, 0x7b, 0x19, 0xff}}},\n    {{{  3072,    307,   5120}, 0, {  1374,    606}, {0x0b, 0x7e, 0x08, 0xff}}},\n    {{{  3072,      0,   5632}, 0, {  1374,    670}, {0x0c, 0x74, 0x31, 0xff}}},\n    {{{  4608,      0,   5120}, 0, {  1564,    606}, {0x11, 0x7c, 0x11, 0xff}}},\n    {{{  4864,      0,   4864}, 0, {  1596,    574}, {0x09, 0x7e, 0x03, 0xff}}},\n    {{{  3584,      0,   6144}, 0, {  1438,    734}, {0x00, 0x7e, 0x0b, 0xff}}},\n    {{{  4608,      0,   4096}, 0, {  1564,    478}, {0x22, 0x7a, 0x07, 0xff}}},\n    {{{ -5631,      0,  -2303}, 0, {   288,   -320}, {0x07, 0x7e, 0xfb, 0xff}}},\n    {{{ -6143,    128,  -1535}, 0, {   224,   -224}, {0x02, 0x7e, 0xfb, 0xff}}},\n    {{{ -5631,      0,    512}, 0, {   288,     32}, {0x06, 0x7e, 0x01, 0xff}}},\n    {{{  5248,      0,   6638}, 0, {  1644,    796}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4736,      0,   5751}, 0, {  1580,    686}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5119,      0,  -3071}, 0, {   352,   -416}, {0x09, 0x7e, 0x0c, 0xff}}},\n};\n\n// 0x0700ABD8 - 0x0700ACC8\nstatic const Vtx ssl_seg7_vertex_0700ABD8[] = {\n    {{{ -5119,      0,  -3071}, 0, {   352,   -416}, {0x09, 0x7e, 0x0c, 0xff}}},\n    {{{ -5631,      0,    512}, 0, {   288,     32}, {0x06, 0x7e, 0x01, 0xff}}},\n    {{{ -5119,      0,   1024}, 0, {   352,     96}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4095,      0,  -4095}, 0, {   480,   -544}, {0x13, 0x7c, 0xef, 0xff}}},\n    {{{ -5220,    256,  -4004}, 0, {   338,   -532}, {0xff, 0x7e, 0x04, 0xff}}},\n    {{{ -6143,    128,  -1535}, 0, {   224,   -224}, {0x02, 0x7e, 0xfb, 0xff}}},\n    {{{ -6143,      0,    512}, 0, {   224,     32}, {0xfb, 0x7e, 0x03, 0xff}}},\n    {{{  7680,      0,   -511}, 0, {  1948,    -96}, {0xec, 0x7c, 0xf5, 0xff}}},\n    {{{  3584,      0,   -511}, 0, {  1438,    -96}, {0x00, 0x7e, 0xf3, 0xff}}},\n    {{{  5632,    256,    862}, 0, {  1692,     76}, {0xfe, 0x7e, 0x05, 0xff}}},\n    {{{  7680,      0,      0}, 0, {  1948,      0}, {0x08, 0x7e, 0x02, 0xff}}},\n    {{{  6656,      0,   2048}, 0, {  1820,    224}, {0x06, 0x7e, 0x0c, 0xff}}},\n    {{{  5120,      0,   2048}, 0, {  1628,    224}, {0xff, 0x7e, 0x08, 0xff}}},\n    {{{  3584,      0,   1262}, 0, {  1438,    126}, {0x0b, 0x7e, 0xf7, 0xff}}},\n    {{{  4096,      0,    375}, 0, {  1502,     14}, {0xeb, 0x7d, 0x02, 0xff}}},\n};\n\n// 0x0700ACC8 - 0x0700ADB8\nstatic const Vtx ssl_seg7_vertex_0700ACC8[] = {\n    {{{  6656,      0,   4608}, 0, {  1820,    542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  7680,      0,   7680}, 0, {  1948,    926}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  7680,      0,      0}, 0, {  1948,      0}, {0x08, 0x7e, 0x02, 0xff}}},\n    {{{  6656,      0,   2048}, 0, {  1820,    224}, {0x06, 0x7e, 0x0c, 0xff}}},\n    {{{  4864,      0,   4864}, 0, {  1596,    574}, {0x09, 0x7e, 0x03, 0xff}}},\n    {{{  5120,      0,   4608}, 0, {  1628,    542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5120,      0,   2048}, 0, {  1628,    224}, {0xff, 0x7e, 0x08, 0xff}}},\n    {{{  4608,      0,   4096}, 0, {  1564,    478}, {0x22, 0x7a, 0x07, 0xff}}},\n    {{{  4608,      0,   3584}, 0, {  1564,    416}, {0x1c, 0x7b, 0xf7, 0xff}}},\n    {{{ -4095,      0,  -4095}, 0, {   480,   -544}, {0x13, 0x7c, 0xef, 0xff}}},\n    {{{ -4863,      0,  -5439}, 0, {   384,   -710}, {0xea, 0x7c, 0xfb, 0xff}}},\n    {{{ -5220,    256,  -4004}, 0, {   338,   -532}, {0xff, 0x7e, 0x04, 0xff}}},\n    {{{  3584,      0,   1262}, 0, {  1438,    126}, {0x0b, 0x7e, 0xf7, 0xff}}},\n    {{{  2560,      0,   1262}, 0, {  1310,    126}, {0xf9, 0x7e, 0xf5, 0xff}}},\n    {{{  3328,    435,   3072}, 0, {  1406,    352}, {0xfb, 0x7e, 0xfe, 0xff}}},\n};\n\n// 0x0700ADB8 - 0x0700AEA8\nstatic const Vtx ssl_seg7_vertex_0700ADB8[] = {\n    {{{ -5158,   -255,  -5745}, 0, {   346,   -748}, {0xda, 0x77, 0xed, 0xff}}},\n    {{{ -5649,   -255,  -5430}, 0, {   286,   -710}, {0xf8, 0x79, 0xdc, 0xff}}},\n    {{{ -5631,      0,  -5055}, 0, {   288,   -662}, {0xeb, 0x75, 0xd5, 0xff}}},\n    {{{ -6141,   -255,  -5499}, 0, {   224,   -718}, {0x26, 0x75, 0xe4, 0xff}}},\n    {{{ -4863,      0,  -5439}, 0, {   384,   -710}, {0xea, 0x7c, 0xfb, 0xff}}},\n    {{{ -5220,    256,  -4004}, 0, {   338,   -532}, {0xff, 0x7e, 0x04, 0xff}}},\n    {{{ -5631,      0,  -2815}, 0, {   288,   -384}, {0xf6, 0x7e, 0x06, 0xff}}},\n    {{{ -5631,      0,  -2303}, 0, {   288,   -320}, {0x07, 0x7e, 0xfb, 0xff}}},\n    {{{ -5119,      0,  -3071}, 0, {   352,   -416}, {0x09, 0x7e, 0x0c, 0xff}}},\n    {{{ -1535,      0,   2935}, 0, {   798,    334}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2559,      0,   2935}, 0, {   670,    334}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3071,      0,   3822}, 0, {   606,    444}, {0x05, 0x7e, 0xfc, 0xff}}},\n    {{{ -4095,      0,  -4607}, 0, {   480,   -606}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4095,      0,  -5119}, 0, {   480,   -670}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4095,      0,  -4095}, 0, {   480,   -544}, {0x13, 0x7c, 0xef, 0xff}}},\n};\n\n// 0x0700AEA8 - 0x0700AF98\nstatic const Vtx ssl_seg7_vertex_0700AEA8[] = {\n    {{{ -5419,   -255,  -6428}, 0, {   314,   -834}, {0xce, 0x74, 0xf9, 0xff}}},\n    {{{ -4863,      0,  -5439}, 0, {   384,   -710}, {0xea, 0x7c, 0xfb, 0xff}}},\n    {{{ -5055,      0,  -6399}, 0, {   360,   -830}, {0xc6, 0x65, 0xcf, 0xff}}},\n    {{{ -5158,   -255,  -5745}, 0, {   346,   -748}, {0xda, 0x77, 0xed, 0xff}}},\n    {{{ -5631,      0,  -2303}, 0, {   288,   -320}, {0x07, 0x7e, 0xfb, 0xff}}},\n    {{{ -6143,      0,  -2303}, 0, {   224,   -320}, {0x01, 0x7e, 0xf3, 0xff}}},\n    {{{ -6143,    128,  -1535}, 0, {   224,   -224}, {0x02, 0x7e, 0xfb, 0xff}}},\n    {{{ -1535,      0,   2935}, 0, {   798,    334}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3071,      0,   3822}, 0, {   606,    444}, {0x05, 0x7e, 0xfc, 0xff}}},\n    {{{ -1023,      0,   3822}, 0, {   862,    444}, {0xf3, 0x6c, 0xbf, 0xff}}},\n    {{{ -4528,   -255,  -6920}, 0, {   426,   -896}, {0xe1, 0x79, 0xea, 0xff}}},\n    {{{ -4607,      0,   2935}, 0, {   416,    334}, {0x0b, 0x7e, 0x00, 0xff}}},\n    {{{ -4095,      0,   2048}, 0, {   480,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5631,      0,   1024}, 0, {   288,     96}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5631,      0,   2560}, 0, {   288,    288}, {0x19, 0x7c, 0xf8, 0xff}}},\n};\n\n// 0x0700AF98 - 0x0700B098\nstatic const Vtx ssl_seg7_vertex_0700AF98[] = {\n    {{{ -5119,      0,   1024}, 0, {   352,     96}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5631,      0,    512}, 0, {   288,     32}, {0x06, 0x7e, 0x01, 0xff}}},\n    {{{ -5631,      0,   1024}, 0, {   288,     96}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4095,      0,   2048}, 0, {   480,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,      0,   2048}, 0, {   862,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2559,      0,   2935}, 0, {   670,    334}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,      0,   2935}, 0, {   798,    334}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3071,      0,   2048}, 0, {   606,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4864,      0,   4864}, 0, {  1596,    574}, {0x09, 0x7e, 0x03, 0xff}}},\n    {{{  4608,      0,   5120}, 0, {  1564,    606}, {0x11, 0x7c, 0x11, 0xff}}},\n    {{{  4736,      0,   5751}, 0, {  1580,    686}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,      0,   7680}, 0, {   990,    926}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,      0,   6144}, 0, {   926,    734}, {0x07, 0x76, 0x2d, 0xff}}},\n    {{{ -8191,      0,   7680}, 0, {     0,    926}, {0x08, 0x77, 0x2a, 0xff}}},\n    {{{     0,      0,   6656}, 0, {   990,    798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,      0,   6912}, 0, {  1022,    830}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700B098 - 0x0700B178\nstatic const Vtx ssl_seg7_vertex_0700B098[] = {\n    {{{   256,      0,   6912}, 0, {  1022,    830}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,      0,   7680}, 0, {   990,    926}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  7680,      0,   7680}, 0, {  1948,    926}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,      0,   6912}, 0, {  1118,    830}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,      0,   6656}, 0, {  1150,    798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5248,      0,   6638}, 0, {  1644,    796}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6272,      0,   6638}, 0, {  1772,    796}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5248,      0,   4864}, 0, {  1644,    574}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4864,      0,   4864}, 0, {  1596,    574}, {0x09, 0x7e, 0x03, 0xff}}},\n    {{{  4736,      0,   5751}, 0, {  1580,    686}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5120,      0,   4608}, 0, {  1628,    542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6272,      0,   4864}, 0, {  1772,    574}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6656,      0,   4608}, 0, {  1820,    542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6784,      0,   5751}, 0, {  1836,    686}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700B178 - 0x0700B278\nstatic const Vtx ssl_seg7_vertex_0700B178[] = {\n    {{{  4608,      0,   4096}, 0, {  1564,    478}, {0x22, 0x7a, 0x07, 0xff}}},\n    {{{  4608,      0,   3584}, 0, {  1564,    416}, {0x1c, 0x7b, 0xf7, 0xff}}},\n    {{{  3584,    563,   4608}, 0, {  1438,    542}, {0x11, 0x7d, 0x01, 0xff}}},\n    {{{  5120,      0,   2048}, 0, {  1628,    224}, {0xff, 0x7e, 0x08, 0xff}}},\n    {{{  3584,      0,   1262}, 0, {  1438,    126}, {0x0b, 0x7e, 0xf7, 0xff}}},\n    {{{  3840,    307,   3840}, 0, {  1470,    448}, {0x14, 0x7c, 0xf1, 0xff}}},\n    {{{  6656,      0,   4608}, 0, {  1820,    542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6272,      0,   4864}, 0, {  1772,    574}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6784,      0,   5751}, 0, {  1836,    686}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2560,      0,   1262}, 0, {  1310,    126}, {0xf9, 0x7e, 0xf5, 0xff}}},\n    {{{  1536,      0,   2935}, 0, {  1182,    334}, {0xf4, 0x7e, 0x00, 0xff}}},\n    {{{  3328,    435,   3072}, 0, {  1406,    352}, {0xfb, 0x7e, 0xfe, 0xff}}},\n    {{{  2048,      0,   3822}, 0, {  1246,    444}, {0xe5, 0x7b, 0xfd, 0xff}}},\n    {{{ -5879,   -255,  -6182}, 0, {   256,   -804}, {0x21, 0x7a, 0x07, 0xff}}},\n    {{{ -5158,   -255,  -5745}, 0, {   346,   -748}, {0xda, 0x77, 0xed, 0xff}}},\n    {{{ -5419,   -255,  -6428}, 0, {   314,   -834}, {0xce, 0x74, 0xf9, 0xff}}},\n};\n\n// 0x0700B278 - 0x0700B2E8\nstatic const Vtx ssl_seg7_vertex_0700B278[] = {\n    {{{ -5879,   -255,  -6182}, 0, {   256,   -804}, {0x21, 0x7a, 0x07, 0xff}}},\n    {{{ -5649,   -255,  -5430}, 0, {   286,   -710}, {0xf8, 0x79, 0xdc, 0xff}}},\n    {{{ -5158,   -255,  -5745}, 0, {   346,   -748}, {0xda, 0x77, 0xed, 0xff}}},\n    {{{ -6141,   -255,  -5499}, 0, {   224,   -718}, {0x26, 0x75, 0xe4, 0xff}}},\n    {{{ -4528,   -255,  -6920}, 0, {   426,   -896}, {0xe1, 0x79, 0xea, 0xff}}},\n    {{{ -5403,   -255,  -6845}, 0, {   316,   -886}, {0x12, 0x71, 0x36, 0xff}}},\n    {{{ -5419,   -255,  -6428}, 0, {   314,   -834}, {0xce, 0x74, 0xf9, 0xff}}},\n};\n\n// 0x0700B2E8 - 0x0700BA78\nstatic const Gfx ssl_seg7_dl_0700B2E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ssl_seg7_lights_0700A020.l, 1),\n    gsSPLight(&ssl_seg7_lights_0700A020.a, 2),\n    gsSPVertex(ssl_seg7_vertex_0700A038, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  0,  5,  3, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 1,  3, 10, 0x0, 11,  1, 12, 0x0),\n    gsSP2Triangles( 3,  5, 13, 0x0, 11, 12, 14, 0x0),\n    gsSP2Triangles(13, 15, 14, 0x0, 13, 14, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0700A138, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 5,  8,  9, 0x0, 10,  8,  5, 0x0),\n    gsSP2Triangles( 5,  4, 11, 0x0, 10,  5, 11, 0x0),\n    gsSP2Triangles( 5, 12,  6, 0x0,  5, 13, 12, 0x0),\n    gsSP2Triangles( 5,  9, 13, 0x0,  7,  6, 14, 0x0),\n    gsSP2Triangles( 6, 12, 14, 0x0,  7, 14, 12, 0x0),\n    gsSP1Triangle(15,  7, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0700A238, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  0,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 8,  4,  9, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(11, 10, 12, 0x0, 10, 13, 12, 0x0),\n    gsSP2Triangles( 3, 12,  4, 0x0, 12, 14,  4, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0,  4, 14,  9, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0700A328, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  4,  8, 0x0),\n    gsSP2Triangles( 4,  9,  8, 0x0,  3,  5, 10, 0x0),\n    gsSP2Triangles( 5, 11, 10, 0x0,  5, 12, 11, 0x0),\n    gsSP1Triangle( 3, 10, 13, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0700A408, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  3,  5, 0x0),\n    gsSP2Triangles( 8,  3,  7, 0x0,  7,  5,  9, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0,  8, 12, 10, 0x0),\n    gsSP2Triangles( 8,  7, 12, 0x0, 13, 10, 12, 0x0),\n    gsSP2Triangles(12,  9, 14, 0x0, 12,  7,  9, 0x0),\n    gsSP1Triangle(13, 12, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0700A4F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  5,  6,  0, 0x0),\n    gsSP2Triangles( 7,  5,  0, 0x0,  2,  8,  0, 0x0),\n    gsSP2Triangles( 8,  7,  0, 0x0,  4,  0,  9, 0x0),\n    gsSP2Triangles( 0,  6,  9, 0x0, 10,  1, 11, 0x0),\n    gsSP2Triangles(10,  2,  1, 0x0, 11,  1,  3, 0x0),\n    gsSP2Triangles( 8,  2, 10, 0x0, 12,  3, 13, 0x0),\n    gsSP2Triangles(14, 11,  3, 0x0, 14,  3, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0700A5E8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 3,  5,  0, 0x0,  6,  0,  5, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  9,  6,  5, 0x0),\n    gsSP2Triangles( 5,  8,  9, 0x0,  0,  6, 10, 0x0),\n    gsSP2Triangles( 0, 10,  1, 0x0,  6, 11, 12, 0x0),\n    gsSP2Triangles(11,  6,  9, 0x0, 10,  6, 12, 0x0),\n    gsSP2Triangles(13,  1, 10, 0x0, 13, 10, 12, 0x0),\n    gsSP2Triangles( 1, 14, 15, 0x0,  2,  1, 15, 0x0),\n    gsSP2Triangles(13, 14,  1, 0x0, 14,  2, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0700A6E8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11,  0, 0x0, 12, 10,  0, 0x0),\n    gsSP2Triangles( 0,  7, 13, 0x0,  0, 14,  7, 0x0),\n    gsSP2Triangles(14,  0, 11, 0x0,  0, 13,  1, 0x0),\n    gsSP2Triangles( 9,  1, 13, 0x0,  1,  9, 15, 0x0),\n    gsSP1Triangle( 1, 15,  3, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0700A7E8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 5,  3,  0, 0x0,  0,  4,  1, 0x0),\n    gsSP2Triangles( 6,  5,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 4, 11,  1, 0x0, 11, 12,  1, 0x0),\n    gsSP2Triangles( 4, 13, 14, 0x0, 14, 15,  4, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0700A8E8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  5,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0700A9E8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0,  6,  9, 10, 0x0),\n    gsSP2Triangles( 6, 10, 11, 0x0, 12,  6, 11, 0x0),\n    gsSP2Triangles( 7, 13,  8, 0x0, 14,  4,  3, 0x0),\n    gsSP1Triangle(12, 14,  3, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0700AAD8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 3,  1,  4, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  3, 0x0,  8,  6,  3, 0x0),\n    gsSP2Triangles( 7,  9,  3, 0x0,  9,  2,  3, 0x0),\n    gsSP2Triangles( 8,  3,  5, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(13, 14,  8, 0x0, 14,  6,  8, 0x0),\n    gsSP1Triangle(15, 10, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0700ABD8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 5,  6,  1, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0, 11, 10,  9, 0x0),\n    gsSP2Triangles(12, 11,  9, 0x0, 13, 12,  9, 0x0),\n    gsSP2Triangles(14, 13,  9, 0x0,  8, 14,  9, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0700ACC8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0700ADB8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  0,  2, 0x0,  4,  2,  5, 0x0),\n    gsSP2Triangles( 2,  6,  5, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  8,  5, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 4, 12, 13, 0x0,  4, 14, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0700AEA8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  0,  2, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0700AF98, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 11, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0700B098, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 4,  3,  5, 0x0,  2,  5,  3, 0x0),\n    gsSP2Triangles( 2,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8,  7, 10, 0x0, 11, 12,  7, 0x0),\n    gsSP2Triangles(12, 10,  7, 0x0, 12, 13,  2, 0x0),\n    gsSP1Triangle(13,  6,  2, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0700B178, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(11, 12,  5, 0x0, 11, 10, 12, 0x0),\n    gsSP2Triangles( 4, 11,  5, 0x0,  5, 12,  2, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0700B278, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  0,  6,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700BA78 - 0x0700BAD8\nconst Gfx ssl_seg7_dl_0700BA78[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ssl_seg7_dl_0700B2E8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ssl/areas/1/3/model.inc.c",
    "content": "// 0x0700BAD8 - 0x0700BAF0\nstatic const Lights1 ssl_seg7_lights_0700BAD8 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700BAF0 - 0x0700BBB0\nstatic const Vtx ssl_seg7_vertex_0700BAF0[] = {\n    {{{ -1023,      0,   2048}, 0, {     0,  -5142}, {0x6d, 0x00, 0x3f, 0xff}}},\n    {{{ -1535,    768,   2935}, 0, {  8144,    990}, {0x6d, 0x00, 0x3f, 0xff}}},\n    {{{ -1535,      0,   2935}, 0, {  8144,  -5142}, {0x6d, 0x00, 0x3f, 0xff}}},\n    {{{ -1023,    768,   2048}, 0, {     0,    990}, {0x6d, 0x00, 0x3f, 0xff}}},\n    {{{ -1535,      0,   2935}, 0, {     0,  -5142}, {0x6d, 0x00, 0xc1, 0xff}}},\n    {{{ -1023,    768,   3822}, 0, {  8144,    990}, {0x6d, 0x00, 0xc1, 0xff}}},\n    {{{ -1023,      0,   3822}, 0, {  8144,  -5142}, {0x6d, 0x00, 0xc1, 0xff}}},\n    {{{ -1535,    768,   2935}, 0, {     0,    990}, {0x6d, 0x00, 0xc1, 0xff}}},\n    {{{ -1023,      0,   2048}, 0, {  8144,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1023,    256,   1024}, 0, {     0,   4054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1023,    768,   2048}, 0, {  8144,   8142}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1023,   -255,   1024}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700BBB0 - 0x0700BC18\nstatic const Gfx ssl_seg7_dl_0700BBB0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ssl_seg7_lights_0700BAD8.l, 1),\n    gsSPLight(&ssl_seg7_lights_0700BAD8.a, 2),\n    gsSPVertex(ssl_seg7_vertex_0700BAF0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700BC18 - 0x0700BC88\nconst Gfx ssl_seg7_dl_0700BC18[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ssl_seg7_dl_0700BBB0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ssl/areas/1/4/model.inc.c",
    "content": "// 0x0700BC88 - 0x0700BCC8\nstatic const Vtx ssl_seg7_vertex_0700BC88[] = {\n    {{{ -6143,      0,  -4697}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xc8}}},\n    {{{ -5836,      0,  -4697}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xc8}}},\n    {{{ -5836,      0,  -5004}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xc8}}},\n    {{{ -6143,      0,  -5004}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xc8}}},\n};\n\n// 0x0700BCC8 - 0x0700BD00\nstatic const Gfx ssl_seg7_dl_0700BCC8[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, ssl_seg7_texture_07000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ssl_seg7_vertex_0700BC88, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700BD00 - 0x0700BD70\nconst Gfx ssl_seg7_dl_0700BD00[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ssl_seg7_dl_0700BCC8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ssl/areas/1/5/geo.inc.c",
    "content": "// 0x0E0005C0\nconst GeoLayout ssl_geo_0005C0[] = {\n    GEO_CULLING_RADIUS(2000),\n    GEO_OPEN_NODE(),\n        GEO_ASM(0x801, geo_movtex_draw_colored_2_no_update),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ssl/areas/1/collision.inc.c",
    "content": "// 0x0700FD80 - 0x07012422\nconst Collision ssl_seg7_area_1_collision[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x23E),\n    COL_VERTEX(5325, 51, 2202),\n    COL_VERTEX(5325, 563, 2330),\n    COL_VERTEX(5325, 51, 2330),\n    COL_VERTEX(5325, 563, 2202),\n    COL_VERTEX(5197, 51, 2202),\n    COL_VERTEX(5197, 563, 2202),\n    COL_VERTEX(5197, 563, 2330),\n    COL_VERTEX(5197, 51, 2330),\n    COL_VERTEX(5197, 51, 4454),\n    COL_VERTEX(5197, 563, 4326),\n    COL_VERTEX(5197, 51, 4326),\n    COL_VERTEX(5325, 563, 4326),\n    COL_VERTEX(5325, 51, 4326),\n    COL_VERTEX(5197, 563, 4454),\n    COL_VERTEX(5325, 563, 4454),\n    COL_VERTEX(5325, 51, 4454),\n    COL_VERTEX(6451, 51, 2202),\n    COL_VERTEX(6451, 51, 2330),\n    COL_VERTEX(6579, 51, 2202),\n    COL_VERTEX(6579, 51, 2330),\n    COL_VERTEX(6451, 51, 4326),\n    COL_VERTEX(6579, 51, 4326),\n    COL_VERTEX(6579, 51, 4454),\n    COL_VERTEX(6451, 51, 4454),\n    COL_VERTEX(6451, 563, 2202),\n    COL_VERTEX(6579, 563, 2202),\n    COL_VERTEX(6451, 563, 2330),\n    COL_VERTEX(6579, 563, 2330),\n    COL_VERTEX(6579, 563, 4326),\n    COL_VERTEX(6579, 563, 4454),\n    COL_VERTEX(6451, 563, 4326),\n    COL_VERTEX(6451, 563, 4454),\n    COL_VERTEX(-3967, -50, 2270),\n    COL_VERTEX(-3839, -101, 2491),\n    COL_VERTEX(-3327, -101, 2491),\n    COL_VERTEX(-3199, -50, 2270),\n    COL_VERTEX(-3071, -101, 2935),\n    COL_VERTEX(-2815, -50, 2935),\n    COL_VERTEX(-3199, -50, 3600),\n    COL_VERTEX(-3327, -101, 3378),\n    COL_VERTEX(-3839, -101, 3378),\n    COL_VERTEX(-3967, -50, 3600),\n    COL_VERTEX(-4351, -50, 2935),\n    COL_VERTEX(-895, -50, 2270),\n    COL_VERTEX(-127, -50, 2270),\n    COL_VERTEX(-127, -50, 3600),\n    COL_VERTEX(256, -50, 2935),\n    COL_VERTEX(-895, -50, 3600),\n    COL_VERTEX(-1279, -50, 2935),\n    COL_VERTEX(640, -50, 3157),\n    COL_VERTEX(1408, -50, 3157),\n    COL_VERTEX(1408, -50, 4487),\n    COL_VERTEX(1792, -50, 3822),\n    COL_VERTEX(640, -50, 4487),\n    COL_VERTEX(256, -50, 3822),\n    COL_VERTEX(2688, -50, -289),\n    COL_VERTEX(3456, -50, -289),\n    COL_VERTEX(3456, -50, 1040),\n    COL_VERTEX(3840, -50, 375),\n    COL_VERTEX(2688, -50, 1040),\n    COL_VERTEX(2304, -50, 375),\n    COL_VERTEX(5376, -50, 5086),\n    COL_VERTEX(6144, -50, 5086),\n    COL_VERTEX(6144, -50, 6416),\n    COL_VERTEX(6528, -50, 5751),\n    COL_VERTEX(5376, -50, 6416),\n    COL_VERTEX(4992, -50, 5751),\n    COL_VERTEX(-4095, -101, 2935),\n    COL_VERTEX(-255, -101, 2491),\n    COL_VERTEX(-767, -101, 2491),\n    COL_VERTEX(0, -101, 2935),\n    COL_VERTEX(-767, -101, 3378),\n    COL_VERTEX(-255, -101, 3378),\n    COL_VERTEX(-1023, -101, 2935),\n    COL_VERTEX(1280, -101, 3378),\n    COL_VERTEX(768, -101, 3378),\n    COL_VERTEX(1536, -101, 3822),\n    COL_VERTEX(1280, -101, 4265),\n    COL_VERTEX(768, -101, 4265),\n    COL_VERTEX(512, -101, 3822),\n    COL_VERTEX(2816, -101, -68),\n    COL_VERTEX(3328, -101, -68),\n    COL_VERTEX(3584, -101, 375),\n    COL_VERTEX(3328, -101, 818),\n    COL_VERTEX(2816, -101, 818),\n    COL_VERTEX(2560, -101, 375),\n    COL_VERTEX(6016, -101, 5307),\n    COL_VERTEX(5504, -101, 5307),\n    COL_VERTEX(6272, -101, 5751),\n    COL_VERTEX(6016, -101, 6194),\n    COL_VERTEX(5504, -101, 6194),\n    COL_VERTEX(5248, -101, 5751),\n    COL_VERTEX(2560, 0, 1262),\n    COL_VERTEX(2048, 0, 375),\n    COL_VERTEX(2048, 0, 1024),\n    COL_VERTEX(1536, 0, 512),\n    COL_VERTEX(2048, 0, 512),\n    COL_VERTEX(1024, 0, -2047),\n    COL_VERTEX(2560, 0, -511),\n    COL_VERTEX(1024, 0, 1024),\n    COL_VERTEX(1536, 0, 1024),\n    COL_VERTEX(1536, 0, 2935),\n    COL_VERTEX(512, 0, 2935),\n    COL_VERTEX(0, 0, 2048),\n    COL_VERTEX(3584, 0, -511),\n    COL_VERTEX(-3071, 0, 2048),\n    COL_VERTEX(-4095, 0, 2048),\n    COL_VERTEX(-2559, 0, 2935),\n    COL_VERTEX(-4095, 0, 3822),\n    COL_VERTEX(-3071, 0, 3822),\n    COL_VERTEX(-4607, 0, 2935),\n    COL_VERTEX(-1023, 0, 3822),\n    COL_VERTEX(0, 0, 3822),\n    COL_VERTEX(-1535, 0, 2935),\n    COL_VERTEX(-1023, 0, 2048),\n    COL_VERTEX(2048, 0, 3822),\n    COL_VERTEX(512, 0, 4708),\n    COL_VERTEX(1536, 0, 4708),\n    COL_VERTEX(4096, 0, 375),\n    COL_VERTEX(3584, 0, 1262),\n    COL_VERTEX(6272, 0, 4864),\n    COL_VERTEX(6784, 0, 5751),\n    COL_VERTEX(5248, 0, 6638),\n    COL_VERTEX(6272, 0, 6638),\n    COL_VERTEX(4736, 0, 5751),\n    COL_VERTEX(5248, 0, 4864),\n    COL_VERTEX(-3711, -153, 2713),\n    COL_VERTEX(-3455, -153, 2713),\n    COL_VERTEX(-3327, -153, 2935),\n    COL_VERTEX(-3455, -153, 3157),\n    COL_VERTEX(-3711, -153, 3157),\n    COL_VERTEX(-3839, -153, 2935),\n    COL_VERTEX(-639, -153, 2713),\n    COL_VERTEX(-383, -153, 2713),\n    COL_VERTEX(-255, -153, 2935),\n    COL_VERTEX(-383, -153, 3157),\n    COL_VERTEX(-639, -153, 3157),\n    COL_VERTEX(-767, -153, 2935),\n    COL_VERTEX(896, -153, 3600),\n    COL_VERTEX(1152, -153, 3600),\n    COL_VERTEX(1280, -153, 3822),\n    COL_VERTEX(1152, -153, 4043),\n    COL_VERTEX(896, -153, 4043),\n    COL_VERTEX(768, -153, 3822),\n    COL_VERTEX(2944, -153, 153),\n    COL_VERTEX(3200, -153, 153),\n    COL_VERTEX(3328, -153, 375),\n    COL_VERTEX(2944, -153, 597),\n    COL_VERTEX(3200, -153, 597),\n    COL_VERTEX(2816, -153, 375),\n    COL_VERTEX(5632, -153, 5529),\n    COL_VERTEX(5888, -153, 5529),\n    COL_VERTEX(6016, -153, 5751),\n    COL_VERTEX(5632, -153, 5973),\n    COL_VERTEX(5888, -153, 5973),\n    COL_VERTEX(5504, -153, 5751),\n    COL_VERTEX(1024, -255, -3583),\n    COL_VERTEX(2091, -230, -2858),\n    COL_VERTEX(4096, -255, -1535),\n    COL_VERTEX(7168, -255, -6655),\n    COL_VERTEX(7168, -255, -1535),\n    COL_VERTEX(4096, -255, -3583),\n    COL_VERTEX(1019, -255, -4607),\n    COL_VERTEX(1024, -255, -4607),\n    COL_VERTEX(-3583, -255, -4607),\n    COL_VERTEX(-3583, -255, -6655),\n    COL_VERTEX(3686, -50, -716),\n    COL_VERTEX(4506, -50, -716),\n    COL_VERTEX(4608, -255, -1535),\n    COL_VERTEX(1521, -162, -2830),\n    COL_VERTEX(2050, -133, -2301),\n    COL_VERTEX(1555, -81, -2322),\n    COL_VERTEX(1024, -50, -2354),\n    COL_VERTEX(4608, -50, -716),\n    COL_VERTEX(5120, -255, -1535),\n    COL_VERTEX(5120, -50, -716),\n    COL_VERTEX(7578, -50, -716),\n    COL_VERTEX(-2175, -50, 1843),\n    COL_VERTEX(-4914, -50, 1024),\n    COL_VERTEX(-4095, -50, 1843),\n    COL_VERTEX(0, -50, 1843),\n    COL_VERTEX(819, -50, 1024),\n    COL_VERTEX(819, -50, -3071),\n    COL_VERTEX(-4095, -50, -3890),\n    COL_VERTEX(-4914, -50, -3071),\n    COL_VERTEX(0, -50, -3890),\n    COL_VERTEX(-8191, -255, 8192),\n    COL_VERTEX(8192, -255, -8191),\n    COL_VERTEX(6144, -50, -7065),\n    COL_VERTEX(-3993, -50, -7065),\n    COL_VERTEX(6144, -255, -6655),\n    COL_VERTEX(-3993, -50, -4197),\n    COL_VERTEX(7578, -50, -7065),\n    COL_VERTEX(7168, -50, -7065),\n    COL_VERTEX(1024, -50, -4197),\n    COL_VERTEX(-3583, -204, 2935),\n    COL_VERTEX(-511, -204, 2935),\n    COL_VERTEX(1024, -204, 3822),\n    COL_VERTEX(3072, -204, 375),\n    COL_VERTEX(5760, -204, 5751),\n    COL_VERTEX(-4095, -255, 1024),\n    COL_VERTEX(-2175, -255, 1024),\n    COL_VERTEX(-4095, -255, -3071),\n    COL_VERTEX(-1919, -255, 1024),\n    COL_VERTEX(-1919, -50, 1843),\n    COL_VERTEX(0, -255, 1024),\n    COL_VERTEX(0, -255, -3071),\n    COL_VERTEX(7782, -50, 7782),\n    COL_VERTEX(-8191, -50, 7782),\n    COL_VERTEX(8192, -255, 8192),\n    COL_VERTEX(7782, -50, -8191),\n    COL_VERTEX(0, 0, 6400),\n    COL_VERTEX(64, 38, 6413),\n    COL_VERTEX(256, 0, 6144),\n    COL_VERTEX(294, 38, 6182),\n    COL_VERTEX(986, 38, 6182),\n    COL_VERTEX(1024, 0, 6144),\n    COL_VERTEX(1216, 38, 6413),\n    COL_VERTEX(1280, 0, 6400),\n    COL_VERTEX(0, 0, 6656),\n    COL_VERTEX(64, 38, 6643),\n    COL_VERTEX(1216, 38, 6643),\n    COL_VERTEX(1280, 0, 6656),\n    COL_VERTEX(986, 38, 6874),\n    COL_VERTEX(1024, 0, 6912),\n    COL_VERTEX(294, 38, 6874),\n    COL_VERTEX(256, 0, 6912),\n    COL_VERTEX(-767, 512, -2303),\n    COL_VERTEX(-383, 512, 256),\n    COL_VERTEX(-383, 512, -2303),\n    COL_VERTEX(-383, 128, 640),\n    COL_VERTEX(-383, 128, -2687),\n    COL_VERTEX(-767, 512, 256),\n    COL_VERTEX(-3327, 512, -2303),\n    COL_VERTEX(-3071, 768, -2303),\n    COL_VERTEX(-1023, 768, -2303),\n    COL_VERTEX(-1023, 768, -2047),\n    COL_VERTEX(-3071, 768, -2047),\n    COL_VERTEX(-2736, 1103, -255),\n    COL_VERTEX(-2815, 1024, -255),\n    COL_VERTEX(-1919, 1024, -255),\n    COL_VERTEX(-2815, 1024, -1791),\n    COL_VERTEX(-2943, 1024, -1791),\n    COL_VERTEX(-2943, 1024, -255),\n    COL_VERTEX(-2943, 896, -1919),\n    COL_VERTEX(-511, 256, 1024),\n    COL_VERTEX(-2175, 0, 2048),\n    COL_VERTEX(-2175, 256, 1024),\n    COL_VERTEX(-1919, 0, 2048),\n    COL_VERTEX(-1919, 0, 165),\n    COL_VERTEX(-2175, 0, -52),\n    COL_VERTEX(-2175, 256, 512),\n    COL_VERTEX(-1919, 0, -52),\n    COL_VERTEX(-2175, 437, 331),\n    COL_VERTEX(-2176, 1103, -639),\n    COL_VERTEX(-1920, 1103, -639),\n    COL_VERTEX(-1920, 1103, -334),\n    COL_VERTEX(-1920, 1280, -511),\n    COL_VERTEX(-2176, 1103, -334),\n    COL_VERTEX(-1919, 1103, -255),\n    COL_VERTEX(-2736, 1103, -334),\n    COL_VERTEX(-1535, 1280, -1535),\n    COL_VERTEX(-2559, 1280, -1535),\n    COL_VERTEX(-1945, 1280, -921),\n    COL_VERTEX(-1535, 1280, -511),\n    COL_VERTEX(-2559, 1280, -511),\n    COL_VERTEX(-2149, 1280, -921),\n    COL_VERTEX(4608, -255, -6143),\n    COL_VERTEX(6144, -255, -6143),\n    COL_VERTEX(7168, 0, -7167),\n    COL_VERTEX(7168, -255, -4607),\n    COL_VERTEX(6656, -255, -4607),\n    COL_VERTEX(6656, -255, -5631),\n    COL_VERTEX(4608, -255, -5631),\n    COL_VERTEX(6144, -255, -5119),\n    COL_VERTEX(5632, -255, -5119),\n    COL_VERTEX(6144, 0, -5119),\n    COL_VERTEX(6144, -255, -4607),\n    COL_VERTEX(5632, -255, -4607),\n    COL_VERTEX(6656, -255, -3583),\n    COL_VERTEX(7168, -255, -3583),\n    COL_VERTEX(7168, 0, -3583),\n    COL_VERTEX(7168, -255, -3071),\n    COL_VERTEX(6656, -255, -3071),\n    COL_VERTEX(6656, -255, -2559),\n    COL_VERTEX(6144, -255, -2559),\n    COL_VERTEX(6656, 0, -2559),\n    COL_VERTEX(6656, -255, -2047),\n    COL_VERTEX(6144, -255, -2047),\n    COL_VERTEX(4608, 0, -3071),\n    COL_VERTEX(4608, 0, -511),\n    COL_VERTEX(5120, 0, -511),\n    COL_VERTEX(5632, -255, -3071),\n    COL_VERTEX(-3583, 0, -5119),\n    COL_VERTEX(-4095, 0, -4607),\n    COL_VERTEX(-3071, 0, -6655),\n    COL_VERTEX(-3071, 0, -6143),\n    COL_VERTEX(4096, -255, -3071),\n    COL_VERTEX(4608, 0, -3583),\n    COL_VERTEX(4608, 0, -4095),\n    COL_VERTEX(5632, 0, -4095),\n    COL_VERTEX(5632, 0, -3071),\n    COL_VERTEX(1024, 0, -4607),\n    COL_VERTEX(1536, 0, -4607),\n    COL_VERTEX(512, -255, -4607),\n    COL_VERTEX(2048, 0, -5119),\n    COL_VERTEX(1024, 0, -5119),\n    COL_VERTEX(512, 0, -4607),\n    COL_VERTEX(2560, -255, -5119),\n    COL_VERTEX(2560, -255, -4607),\n    COL_VERTEX(1536, -255, -4607),\n    COL_VERTEX(1024, 0, -3583),\n    COL_VERTEX(512, 0, -5631),\n    COL_VERTEX(-1023, 0, -5119),\n    COL_VERTEX(512, -255, -5119),\n    COL_VERTEX(-1023, 0, -4607),\n    COL_VERTEX(-1023, -255, -4607),\n    COL_VERTEX(-2559, 0, -4607),\n    COL_VERTEX(-1023, -255, -6655),\n    COL_VERTEX(-1535, -255, -6655),\n    COL_VERTEX(-1023, -255, -5631),\n    COL_VERTEX(1536, -255, -4095),\n    COL_VERTEX(5632, -255, -4095),\n    COL_VERTEX(5120, -255, -3583),\n    COL_VERTEX(4608, -255, -3583),\n    COL_VERTEX(512, -255, -5631),\n    COL_VERTEX(3072, -255, -5119),\n    COL_VERTEX(3072, 0, -5119),\n    COL_VERTEX(3072, -255, -4607),\n    COL_VERTEX(3584, 0, -4607),\n    COL_VERTEX(3584, -255, -6143),\n    COL_VERTEX(3072, -255, -6143),\n    COL_VERTEX(3584, 0, -6143),\n    COL_VERTEX(3072, -255, -5631),\n    COL_VERTEX(2048, -255, -5631),\n    COL_VERTEX(3072, 0, -5631),\n    COL_VERTEX(2048, -255, -5119),\n    COL_VERTEX(1024, -255, -5119),\n    COL_VERTEX(1024, -255, -6143),\n    COL_VERTEX(512, -255, -6143),\n    COL_VERTEX(-3071, -255, -6655),\n    COL_VERTEX(-3071, -255, -4607),\n    COL_VERTEX(-3071, -255, -5631),\n    COL_VERTEX(-2559, -255, -5631),\n    COL_VERTEX(-1535, -255, -5119),\n    COL_VERTEX(-2047, -255, -5119),\n    COL_VERTEX(-2047, -255, -6143),\n    COL_VERTEX(-3071, -255, -6143),\n    COL_VERTEX(-2047, 0, -6143),\n    COL_VERTEX(-2559, -255, -4607),\n    COL_VERTEX(6672, 614, 2032),\n    COL_VERTEX(6672, 614, 4624),\n    COL_VERTEX(5104, 614, 4624),\n    COL_VERTEX(5104, 614, 2032),\n    COL_VERTEX(6595, 563, 4470),\n    COL_VERTEX(5341, 563, 2186),\n    COL_VERTEX(5341, 563, 4310),\n    COL_VERTEX(6595, 563, 2186),\n    COL_VERTEX(6595, 563, 4310),\n    COL_VERTEX(-2943, 896, -127),\n    COL_VERTEX(-3583, 256, 1024),\n    COL_VERTEX(-3583, 256, 512),\n    COL_VERTEX(-511, 256, 512),\n    COL_VERTEX(-1919, 256, 1024),\n    COL_VERTEX(-2175, 0, 165),\n    COL_VERTEX(-1919, 437, -52),\n    COL_VERTEX(-2175, 437, -52),\n    COL_VERTEX(-1919, 437, 331),\n    COL_VERTEX(-1919, 256, 512),\n    COL_VERTEX(-1920, 1280, -639),\n    COL_VERTEX(-2176, 1280, -639),\n    COL_VERTEX(-1945, 1280, -1125),\n    COL_VERTEX(-2149, 1280, -1125),\n    COL_VERTEX(-2176, 1280, -511),\n    COL_VERTEX(6144, 0, -6143),\n    COL_VERTEX(6144, 0, -7167),\n    COL_VERTEX(4608, 0, -6143),\n    COL_VERTEX(7168, 0, -4607),\n    COL_VERTEX(6656, 0, -4607),\n    COL_VERTEX(6656, 0, -5631),\n    COL_VERTEX(4608, 0, -5631),\n    COL_VERTEX(6144, 0, -4607),\n    COL_VERTEX(5632, 0, -4607),\n    COL_VERTEX(5632, 0, -5119),\n    COL_VERTEX(7168, 0, -3071),\n    COL_VERTEX(6656, 0, -3071),\n    COL_VERTEX(6656, 0, -3583),\n    COL_VERTEX(6656, 0, -2047),\n    COL_VERTEX(6144, 0, -2559),\n    COL_VERTEX(6144, 0, -2047),\n    COL_VERTEX(5120, 0, -3071),\n    COL_VERTEX(5120, -255, -3071),\n    COL_VERTEX(4096, 0, -3071),\n    COL_VERTEX(4608, -255, -3071),\n    COL_VERTEX(-3583, -255, -5119),\n    COL_VERTEX(-3583, 0, -6655),\n    COL_VERTEX(-4095, 0, -5119),\n    COL_VERTEX(-3071, 0, -4607),\n    COL_VERTEX(-3071, 0, -5631),\n    COL_VERTEX(4096, 0, -3583),\n    COL_VERTEX(5120, 0, -3583),\n    COL_VERTEX(5120, 0, -4095),\n    COL_VERTEX(4096, 0, -4095),\n    COL_VERTEX(512, 0, -5119),\n    COL_VERTEX(2560, 0, -4607),\n    COL_VERTEX(1536, 0, -4095),\n    COL_VERTEX(5120, -255, -4095),\n    COL_VERTEX(2560, 0, -5119),\n    COL_VERTEX(-1023, 0, -5631),\n    COL_VERTEX(512, 0, -6143),\n    COL_VERTEX(1024, 0, -6143),\n    COL_VERTEX(-1023, -255, -5119),\n    COL_VERTEX(-1535, 0, -5119),\n    COL_VERTEX(-1535, 0, -6655),\n    COL_VERTEX(-1023, 0, -6655),\n    COL_VERTEX(-2047, 0, -5119),\n    COL_VERTEX(-2559, 0, -5631),\n    COL_VERTEX(4608, -255, -4095),\n    COL_VERTEX(3072, 0, -4607),\n    COL_VERTEX(3584, -255, -4607),\n    COL_VERTEX(3072, 0, -6143),\n    COL_VERTEX(2048, 0, -5631),\n    COL_VERTEX(5181, 563, 2186),\n    COL_VERTEX(5181, 563, 4470),\n    COL_VERTEX(5181, 563, 2346),\n    COL_VERTEX(5341, 563, 2346),\n    COL_VERTEX(5341, 563, 4470),\n    COL_VERTEX(5181, 563, 4310),\n    COL_VERTEX(6435, 563, 2346),\n    COL_VERTEX(6595, 563, 2346),\n    COL_VERTEX(6435, 563, 2186),\n    COL_VERTEX(6435, 563, 4470),\n    COL_VERTEX(6435, 563, 4310),\n    COL_VERTEX(6963, 0, -6757),\n    COL_VERTEX(6963, -511, -6757),\n    COL_VERTEX(6758, -511, -6757),\n    COL_VERTEX(6758, 0, -6757),\n    COL_VERTEX(6963, 0, -6962),\n    COL_VERTEX(6963, -511, -6962),\n    COL_VERTEX(6758, -511, -6962),\n    COL_VERTEX(6758, 0, -6962),\n    COL_VERTEX(1600, 154, 960),\n    COL_VERTEX(1648, 1024, 624),\n    COL_VERTEX(1600, 154, 576),\n    COL_VERTEX(1984, 154, 576),\n    COL_VERTEX(1936, 1024, 624),\n    COL_VERTEX(1648, 1024, 912),\n    COL_VERTEX(1936, 1024, 912),\n    COL_VERTEX(1984, 154, 960),\n    COL_VERTEX(-6079, 154, 576),\n    COL_VERTEX(-5743, 1024, 624),\n    COL_VERTEX(-5695, 154, 576),\n    COL_VERTEX(-6143, 0, 512),\n    COL_VERTEX(-6079, 154, 960),\n    COL_VERTEX(-6031, 1024, 624),\n    COL_VERTEX(-6143, 0, 1024),\n    COL_VERTEX(-5743, 1024, 912),\n    COL_VERTEX(-5631, 0, 512),\n    COL_VERTEX(-5695, 154, 960),\n    COL_VERTEX(-5631, 0, 1024),\n    COL_VERTEX(-6079, 154, -2751),\n    COL_VERTEX(-6079, 154, -2367),\n    COL_VERTEX(-6143, 0, -2303),\n    COL_VERTEX(-6143, 0, -2815),\n    COL_VERTEX(-5695, 154, -2751),\n    COL_VERTEX(-5631, 0, -2815),\n    COL_VERTEX(-5695, 154, -2367),\n    COL_VERTEX(-5631, 0, -2303),\n    COL_VERTEX(1600, 26, -2751),\n    COL_VERTEX(1600, 26, -2367),\n    COL_VERTEX(1984, 26, -2751),\n    COL_VERTEX(1984, 26, -2367),\n    COL_VERTEX(5120, 0, 4608),\n    COL_VERTEX(6656, 0, 4608),\n    COL_VERTEX(5120, 0, 2048),\n    COL_VERTEX(6656, 0, 2048),\n    COL_VERTEX(-6031, 1024, 912),\n    COL_VERTEX(-6031, 1024, -2703),\n    COL_VERTEX(-5743, 1024, -2703),\n    COL_VERTEX(-6031, 1024, -2415),\n    COL_VERTEX(-5743, 1024, -2415),\n    COL_VERTEX(1648, 896, -2703),\n    COL_VERTEX(1936, 896, -2703),\n    COL_VERTEX(1648, 896, -2415),\n    COL_VERTEX(1936, 896, -2415),\n    COL_VERTEX(-1279, 1024, -255),\n    COL_VERTEX(-1023, -255, 1024),\n    COL_VERTEX(-1023, 256, 1024),\n    COL_VERTEX(-1023, 768, 2048),\n    COL_VERTEX(-1049, 768, 2048),\n    COL_VERTEX(-1049, -255, 1024),\n    COL_VERTEX(-1049, 0, 2048),\n    COL_VERTEX(-1049, 256, 1024),\n    COL_VERTEX(-1535, 768, 2935),\n    COL_VERTEX(-1561, 768, 2944),\n    COL_VERTEX(-1561, 0, 2944),\n    COL_VERTEX(-1049, 0, 3822),\n    COL_VERTEX(-1023, 768, 3822),\n    COL_VERTEX(-1945, 768, -921),\n    COL_VERTEX(-1049, 768, 3822),\n    COL_VERTEX(-1945, 768, -1125),\n    COL_VERTEX(-2149, 768, -1125),\n    COL_VERTEX(-2149, 768, -921),\n    COL_VERTEX(-6655, 0, 1024),\n    COL_VERTEX(-8191, 1408, 1536),\n    COL_VERTEX(-6655, 0, 512),\n    COL_VERTEX(-7167, 0, -2559),\n    COL_VERTEX(-8447, 256, -3071),\n    COL_VERTEX(-5631, 0, 2560),\n    COL_VERTEX(-8191, 1280, 6144),\n    COL_VERTEX(-6399, 0, -5055),\n    COL_VERTEX(-1036, 282, 1024),\n    COL_VERTEX(-1036, 794, 2048),\n    COL_VERTEX(7680, 0, -8191),\n    COL_VERTEX(7680, 0, -7167),\n    COL_VERTEX(-4095, 0, -7167),\n    COL_VERTEX(-4095, 0, -4095),\n    COL_VERTEX(-5247, 0, -7231),\n    COL_VERTEX(1280, 205, 5632),\n    COL_VERTEX(-2687, 1280, 5632),\n    COL_VERTEX(1792, 563, 5376),\n    COL_VERTEX(2048, 0, 6144),\n    COL_VERTEX(768, 0, 6016),\n    COL_VERTEX(1536, 0, 6144),\n    COL_VERTEX(-511, 0, 6144),\n    COL_VERTEX(-3583, 0, 4608),\n    COL_VERTEX(-5119, 0, 4608),\n    COL_VERTEX(-5631, 0, 4096),\n    COL_VERTEX(-6271, 0, -6463),\n    COL_VERTEX(0, 0, -7167),\n    COL_VERTEX(-1087, 1088, 5170),\n    COL_VERTEX(2816, 307, 5376),\n    COL_VERTEX(3072, 0, 5632),\n    COL_VERTEX(3072, 307, 5120),\n    COL_VERTEX(3584, 307, 5120),\n    COL_VERTEX(3584, 0, 6144),\n    COL_VERTEX(-5119, 0, -3071),\n    COL_VERTEX(-5119, 0, 1024),\n    COL_VERTEX(0, 0, -4095),\n    COL_VERTEX(7680, 0, -511),\n    COL_VERTEX(7680, 0, 7680),\n    COL_VERTEX(3584, 1024, -8191),\n    COL_VERTEX(-255, 256, -8191),\n    COL_VERTEX(1024, 0, -4095),\n    COL_VERTEX(-8191, 1280, -8191),\n    COL_VERTEX(384, 0, 6016),\n    COL_VERTEX(-8191, 0, 7680),\n    COL_VERTEX(1024, 0, -3071),\n    COL_VERTEX(-6143, 128, -1535),\n    COL_VERTEX(-5220, 256, -4004),\n    COL_VERTEX(7680, 0, 0),\n    COL_VERTEX(4608, 0, 3584),\n    COL_VERTEX(4864, 0, 4864),\n    COL_VERTEX(-5631, 0, -5055),\n    COL_VERTEX(-4863, 0, -5439),\n    COL_VERTEX(-6207, 0, -6015),\n    COL_VERTEX(0, 0, 7680),\n    COL_VERTEX(4608, 0, 5120),\n    COL_VERTEX(4608, 0, 4096),\n    COL_VERTEX(3328, 435, 3072),\n    COL_VERTEX(3840, 307, 3840),\n    COL_VERTEX(3584, 563, 4608),\n    COL_VERTEX(-5879, -255, -6182),\n    COL_VERTEX(5632, 256, 862),\n    COL_VERTEX(-5055, 0, -6399),\n    COL_VERTEX(-3967, 128, 4215),\n    COL_VERTEX(-5119, 128, 3131),\n    COL_VERTEX(-5419, -255, -6428),\n    COL_VERTEX(-4528, -255, -6920),\n    COL_VERTEX(-5158, -255, -5745),\n    COL_VERTEX(-5649, -255, -5430),\n    COL_VERTEX(-6141, -255, -5499),\n    COL_VERTEX(-5403, -255, -6845),\n    COL_VERTEX(-5874, -255, -6354),\n    COL_TRI_INIT(SURFACE_DEFAULT, 111),\n    COL_TRI(452, 506, 505),\n    COL_TRI(455, 452, 505),\n    COL_TRI(506, 463, 510),\n    COL_TRI(462, 463, 506),\n    COL_TRI(506, 452, 548),\n    COL_TRI(462, 506, 548),\n    COL_TRI(455, 505, 503),\n    COL_TRI(536, 467, 457),\n    COL_TRI(536, 457, 537),\n    COL_TRI(467, 548, 457),\n    COL_TRI(548, 452, 457),\n    COL_TRI(455, 508, 459),\n    COL_TRI(550, 539, 563),\n    COL_TRI(539, 104, 563),\n    COL_TRI(104, 118, 563),\n    COL_TRI(118, 119, 563),\n    COL_TRI(119, 474, 563),\n    COL_TRI(474, 475, 563),\n    COL_TRI(475, 550, 563),\n    COL_TRI(119, 92, 559),\n    COL_TRI(473, 540, 550),\n    COL_TRI(473, 550, 475),\n    COL_TRI(551, 474, 119),\n    COL_TRI(474, 551, 558),\n    COL_TRI(474, 558, 552),\n    COL_TRI(552, 472, 474),\n    COL_TRI(554, 396, 515),\n    COL_TRI(536, 549, 465),\n    COL_TRI(465, 553, 510),\n    COL_TRI(553, 465, 549),\n    COL_TRI(554, 553, 549),\n    COL_TRI(463, 465, 510),\n    COL_TRI(536, 516, 549),\n    COL_TRI(516, 554, 549),\n    COL_TRI(515, 564, 554),\n    COL_TRI(554, 516, 294),\n    COL_TRI(554, 294, 396),\n    COL_TRI(108, 110, 527),\n    COL_TRI(467, 536, 465),\n    COL_TRI(467, 462, 548),\n    COL_TRI(108, 527, 526),\n    COL_TRI(526, 525, 565),\n    COL_TRI(108, 526, 565),\n    COL_TRI(525, 109, 565),\n    COL_TRI(109, 525, 111),\n    COL_TRI(109, 108, 565),\n    COL_TRI(116, 112, 111),\n    COL_TRI(107, 109, 111),\n    COL_TRI(527, 110, 566),\n    COL_TRI(508, 527, 566),\n    COL_TRI(110, 106, 459),\n    COL_TRI(110, 459, 508),\n    COL_TRI(110, 508, 566),\n    COL_TRI(106, 537, 459),\n    COL_TRI(537, 457, 459),\n    COL_TRI(523, 522, 216),\n    COL_TRI(491, 105, 107),\n    COL_TRI(491, 107, 495),\n    COL_TRI(495, 107, 111),\n    COL_TRI(510, 555, 528),\n    COL_TRI(521, 523, 218),\n    COL_TRI(523, 216, 218),\n    COL_TRI(219, 556, 226),\n    COL_TRI(216, 522, 545),\n    COL_TRI(216, 545, 213),\n    COL_TRI(521, 218, 222),\n    COL_TRI(213, 545, 524),\n    COL_TRI(211, 213, 524),\n    COL_TRI(219, 524, 556),\n    COL_TRI(556, 524, 546),\n    COL_TRI(211, 524, 219),\n    COL_TRI(125, 552, 124),\n    COL_TRI(226, 556, 540),\n    COL_TRI(540, 224, 226),\n    COL_TRI(521, 222, 122),\n    COL_TRI(521, 122, 535),\n    COL_TRI(222, 224, 122),\n    COL_TRI(540, 122, 224),\n    COL_TRI(540, 123, 122),\n    COL_TRI(122, 124, 535),\n    COL_TRI(124, 557, 535),\n    COL_TRI(552, 557, 124),\n    COL_TRI(535, 557, 534),\n    COL_TRI(557, 552, 534),\n    COL_TRI(552, 558, 534),\n    COL_TRI(552, 125, 472),\n    COL_TRI(473, 472, 125),\n    COL_TRI(120, 473, 125),\n    COL_TRI(473, 121, 540),\n    COL_TRI(121, 123, 540),\n    COL_TRI(551, 119, 560),\n    COL_TRI(473, 120, 121),\n    COL_TRI(551, 560, 561),\n    COL_TRI(558, 551, 561),\n    COL_TRI(558, 561, 534),\n    COL_TRI(92, 101, 559),\n    COL_TRI(119, 559, 560),\n    COL_TRI(559, 101, 115),\n    COL_TRI(559, 115, 560),\n    COL_TRI(115, 117, 561),\n    COL_TRI(560, 115, 561),\n    COL_TRI(561, 117, 534),\n    COL_TRI(562, 567, 568),\n    COL_TRI(562, 569, 567),\n    COL_TRI(156, 547, 97),\n    COL_TRI(562, 570, 569),\n    COL_TRI(562, 571, 570),\n    COL_TRI(562, 568, 572),\n    COL_TRI(562, 572, 573),\n    COL_TRI(543, 538, 547),\n    COL_TRI(156, 311, 547),\n    COL_TRI_INIT(SURFACE_VERY_SLIPPERY, 90),\n    COL_TRI(455, 503, 504),\n    COL_TRI(505, 504, 503),\n    COL_TRI(506, 504, 505),\n    COL_TRI(506, 507, 504),\n    COL_TRI(508, 504, 509),\n    COL_TRI(506, 510, 507),\n    COL_TRI(488, 511, 512),\n    COL_TRI(488, 487, 511),\n    COL_TRI(511, 489, 512),\n    COL_TRI(511, 492, 489),\n    COL_TRI(176, 539, 513),\n    COL_TRI(176, 514, 192),\n    COL_TRI(175, 539, 176),\n    COL_TRI(175, 291, 539),\n    COL_TRI(210, 513, 540),\n    COL_TRI(513, 541, 514),\n    COL_TRI(104, 166, 172),\n    COL_TRI(104, 172, 97),\n    COL_TRI(166, 104, 290),\n    COL_TRI(166, 290, 167),\n    COL_TRI(192, 514, 269),\n    COL_TRI(192, 269, 193),\n    COL_TRI(514, 541, 529),\n    COL_TRI(189, 515, 516),\n    COL_TRI(189, 516, 191),\n    COL_TRI(516, 183, 538),\n    COL_TRI(191, 516, 543),\n    COL_TRI(191, 543, 194),\n    COL_TRI(375, 515, 188),\n    COL_TRI(515, 189, 188),\n    COL_TRI(517, 515, 542),\n    COL_TRI(515, 529, 542),\n    COL_TRI(167, 290, 173),\n    COL_TRI(518, 116, 530),\n    COL_TRI(519, 518, 530),\n    COL_TRI(520, 116, 518),\n    COL_TRI(521, 520, 518),\n    COL_TRI(522, 523, 518),\n    COL_TRI(523, 521, 518),\n    COL_TRI(518, 545, 522),\n    COL_TRI(518, 524, 545),\n    COL_TRI(518, 519, 524),\n    COL_TRI(509, 527, 508),\n    COL_TRI(524, 509, 546),\n    COL_TRI(524, 519, 509),\n    COL_TRI(519, 499, 496),\n    COL_TRI(519, 530, 499),\n    COL_TRI(496, 525, 519),\n    COL_TRI(525, 509, 519),\n    COL_TRI(509, 525, 526),\n    COL_TRI(509, 526, 527),\n    COL_TRI(207, 540, 546),\n    COL_TRI(207, 546, 208),\n    COL_TRI(510, 528, 507),\n    COL_TRI(528, 544, 507),\n    COL_TRI(528, 517, 544),\n    COL_TRI(517, 542, 544),\n    COL_TRI(529, 541, 542),\n    COL_TRI(116, 111, 497),\n    COL_TRI(116, 497, 499),\n    COL_TRI(530, 116, 499),\n    COL_TRI(521, 531, 520),\n    COL_TRI(117, 116, 520),\n    COL_TRI(531, 117, 520),\n    COL_TRI(532, 521, 535),\n    COL_TRI(521, 532, 531),\n    COL_TRI(532, 533, 531),\n    COL_TRI(533, 117, 531),\n    COL_TRI(534, 117, 533),\n    COL_TRI(534, 533, 532),\n    COL_TRI(535, 534, 532),\n    COL_TRI(536, 183, 516),\n    COL_TRI(536, 184, 183),\n    COL_TRI(536, 537, 178),\n    COL_TRI(536, 178, 184),\n    COL_TRI(537, 179, 178),\n    COL_TRI(537, 106, 179),\n    COL_TRI(538, 185, 182),\n    COL_TRI(538, 183, 185),\n    COL_TRI(538, 182, 547),\n    COL_TRI(99, 547, 182),\n    COL_TRI(99, 180, 103),\n    COL_TRI(99, 181, 180),\n    COL_TRI(99, 182, 181),\n    COL_TRI(248, 103, 180),\n    COL_TRI(248, 180, 204),\n    COL_TRI(106, 246, 177),\n    COL_TRI(106, 177, 179),\n    COL_TRI(210, 540, 207),\n    COL_TRI(508, 455, 504),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 16),\n    COL_TRI(569, 570, 553),\n    COL_TRI(554, 569, 553),\n    COL_TRI(567, 569, 554),\n    COL_TRI(570, 571, 553),\n    COL_TRI(571, 510, 553),\n    COL_TRI(567, 554, 564),\n    COL_TRI(573, 528, 555),\n    COL_TRI(562, 573, 555),\n    COL_TRI(573, 572, 517),\n    COL_TRI(528, 573, 517),\n    COL_TRI(510, 562, 555),\n    COL_TRI(510, 571, 562),\n    COL_TRI(517, 572, 515),\n    COL_TRI(572, 568, 515),\n    COL_TRI(568, 567, 564),\n    COL_TRI(515, 568, 564),\n    COL_TRI_INIT(SURFACE_INSTANT_QUICKSAND, 9),\n    COL_TRI(159, 165, 164),\n    COL_TRI(156, 157, 158),\n    COL_TRI(159, 158, 160),\n    COL_TRI(159, 161, 158),\n    COL_TRI(158, 161, 156),\n    COL_TRI(159, 156, 161),\n    COL_TRI(162, 163, 156),\n    COL_TRI(162, 156, 159),\n    COL_TRI(159, 164, 162),\n    COL_TRI_INIT(SURFACE_DEEP_MOVING_QUICKSAND, 60),\n    COL_TRI_SPECIAL(36, 129, 39, 0xAB),\n    COL_TRI_SPECIAL(33, 126, 127, 0x0),\n    COL_TRI_SPECIAL(33, 127, 34, 0x0),\n    COL_TRI_SPECIAL(34, 127, 128, 0xD5),\n    COL_TRI_SPECIAL(34, 128, 36, 0xD5),\n    COL_TRI_SPECIAL(39, 129, 130, 0x80),\n    COL_TRI_SPECIAL(39, 130, 40, 0x80),\n    COL_TRI_SPECIAL(69, 133, 68, 0x0),\n    COL_TRI_SPECIAL(36, 128, 129, 0xAB),\n    COL_TRI_SPECIAL(40, 131, 67, 0x55),\n    COL_TRI_SPECIAL(40, 130, 131, 0x55),\n    COL_TRI_SPECIAL(67, 131, 126, 0x2B),\n    COL_TRI_SPECIAL(67, 126, 33, 0x2B),\n    COL_TRI_SPECIAL(69, 132, 133, 0x0),\n    COL_TRI_SPECIAL(71, 136, 137, 0x55),\n    COL_TRI_SPECIAL(68, 134, 70, 0xD5),\n    COL_TRI_SPECIAL(68, 133, 134, 0xD5),\n    COL_TRI_SPECIAL(72, 135, 136, 0x80),\n    COL_TRI_SPECIAL(72, 136, 71, 0x80),\n    COL_TRI_SPECIAL(70, 135, 72, 0xAB),\n    COL_TRI_SPECIAL(70, 134, 135, 0xAB),\n    COL_TRI_SPECIAL(74, 139, 140, 0xD5),\n    COL_TRI_SPECIAL(71, 137, 73, 0x55),\n    COL_TRI_SPECIAL(73, 132, 69, 0x2B),\n    COL_TRI_SPECIAL(73, 137, 132, 0x2B),\n    COL_TRI_SPECIAL(75, 138, 139, 0x0),\n    COL_TRI_SPECIAL(75, 139, 74, 0x0),\n    COL_TRI_SPECIAL(74, 140, 76, 0xD5),\n    COL_TRI_SPECIAL(79, 138, 75, 0x2B),\n    COL_TRI_SPECIAL(77, 141, 142, 0x80),\n    COL_TRI_SPECIAL(77, 142, 78, 0x80),\n    COL_TRI_SPECIAL(76, 141, 77, 0xAB),\n    COL_TRI_SPECIAL(76, 140, 141, 0xAB),\n    COL_TRI_SPECIAL(78, 143, 79, 0x55),\n    COL_TRI_SPECIAL(78, 142, 143, 0x55),\n    COL_TRI_SPECIAL(83, 148, 147, 0x80),\n    COL_TRI_SPECIAL(79, 143, 138, 0x2B),\n    COL_TRI_SPECIAL(80, 144, 145, 0x0),\n    COL_TRI_SPECIAL(80, 145, 81, 0x0),\n    COL_TRI_SPECIAL(81, 145, 146, 0xD5),\n    COL_TRI_SPECIAL(81, 146, 82, 0xD5),\n    COL_TRI_SPECIAL(83, 147, 84, 0x80),\n    COL_TRI_SPECIAL(87, 150, 151, 0x0),\n    COL_TRI_SPECIAL(82, 146, 148, 0xAB),\n    COL_TRI_SPECIAL(82, 148, 83, 0xAB),\n    COL_TRI_SPECIAL(84, 149, 85, 0x55),\n    COL_TRI_SPECIAL(84, 147, 149, 0x55),\n    COL_TRI_SPECIAL(85, 144, 80, 0x2B),\n    COL_TRI_SPECIAL(85, 149, 144, 0x2B),\n    COL_TRI_SPECIAL(88, 154, 89, 0xAB),\n    COL_TRI_SPECIAL(87, 151, 86, 0x0),\n    COL_TRI_SPECIAL(86, 151, 152, 0xD5),\n    COL_TRI_SPECIAL(86, 152, 88, 0xD5),\n    COL_TRI_SPECIAL(89, 153, 90, 0x80),\n    COL_TRI_SPECIAL(89, 154, 153, 0x80),\n    COL_TRI_SPECIAL(88, 152, 154, 0xAB),\n    COL_TRI_SPECIAL(90, 155, 91, 0x55),\n    COL_TRI_SPECIAL(90, 153, 155, 0x55),\n    COL_TRI_SPECIAL(91, 150, 87, 0x2B),\n    COL_TRI_SPECIAL(91, 155, 150, 0x2B),\n    COL_TRI_INIT(SURFACE_SHALLOW_MOVING_QUICKSAND, 60),\n    COL_TRI_SPECIAL(109, 107, 37, 0xAB),\n    COL_TRI_SPECIAL(105, 32, 35, 0x0),\n    COL_TRI_SPECIAL(105, 106, 32, 0x0),\n    COL_TRI_SPECIAL(107, 105, 35, 0xD5),\n    COL_TRI_SPECIAL(107, 35, 37, 0xD5),\n    COL_TRI_SPECIAL(108, 38, 41, 0x80),\n    COL_TRI_SPECIAL(108, 109, 38, 0x80),\n    COL_TRI_SPECIAL(103, 114, 43, 0x0),\n    COL_TRI_SPECIAL(109, 37, 38, 0xAB),\n    COL_TRI_SPECIAL(110, 108, 41, 0x55),\n    COL_TRI_SPECIAL(110, 41, 42, 0x55),\n    COL_TRI_SPECIAL(106, 110, 42, 0x2B),\n    COL_TRI_SPECIAL(106, 42, 32, 0x2B),\n    COL_TRI_SPECIAL(103, 43, 44, 0x0),\n    COL_TRI_SPECIAL(113, 47, 48, 0x55),\n    COL_TRI_SPECIAL(102, 44, 46, 0xD5),\n    COL_TRI_SPECIAL(102, 103, 44, 0xD5),\n    COL_TRI_SPECIAL(111, 45, 47, 0x80),\n    COL_TRI_SPECIAL(111, 112, 45, 0x80),\n    COL_TRI_SPECIAL(112, 46, 45, 0xAB),\n    COL_TRI_SPECIAL(112, 102, 46, 0xAB),\n    COL_TRI_SPECIAL(115, 101, 50, 0xD5),\n    COL_TRI_SPECIAL(113, 111, 47, 0x55),\n    COL_TRI_SPECIAL(114, 48, 43, 0x2B),\n    COL_TRI_SPECIAL(114, 113, 48, 0x2B),\n    COL_TRI_SPECIAL(101, 102, 49, 0x0),\n    COL_TRI_SPECIAL(101, 49, 50, 0x0),\n    COL_TRI_SPECIAL(115, 50, 52, 0xD5),\n    COL_TRI_SPECIAL(102, 112, 54, 0x2B),\n    COL_TRI_SPECIAL(116, 117, 51, 0x80),\n    COL_TRI_SPECIAL(116, 51, 53, 0x80),\n    COL_TRI_SPECIAL(117, 115, 52, 0xAB),\n    COL_TRI_SPECIAL(117, 52, 51, 0xAB),\n    COL_TRI_SPECIAL(112, 53, 54, 0x55),\n    COL_TRI_SPECIAL(112, 116, 53, 0x55),\n    COL_TRI_SPECIAL(92, 119, 57, 0x80),\n    COL_TRI_SPECIAL(102, 54, 49, 0x2B),\n    COL_TRI_SPECIAL(104, 55, 56, 0x0),\n    COL_TRI_SPECIAL(104, 98, 55, 0x0),\n    COL_TRI_SPECIAL(118, 104, 56, 0xD5),\n    COL_TRI_SPECIAL(118, 56, 58, 0xD5),\n    COL_TRI_SPECIAL(92, 57, 59, 0x80),\n    COL_TRI_SPECIAL(120, 125, 61, 0x0),\n    COL_TRI_SPECIAL(119, 58, 57, 0xAB),\n    COL_TRI_SPECIAL(119, 118, 58, 0xAB),\n    COL_TRI_SPECIAL(93, 92, 59, 0x55),\n    COL_TRI_SPECIAL(93, 59, 60, 0x55),\n    COL_TRI_SPECIAL(98, 93, 60, 0x2B),\n    COL_TRI_SPECIAL(98, 60, 55, 0x2B),\n    COL_TRI_SPECIAL(123, 64, 63, 0xAB),\n    COL_TRI_SPECIAL(120, 61, 62, 0x0),\n    COL_TRI_SPECIAL(121, 120, 62, 0xD5),\n    COL_TRI_SPECIAL(121, 62, 64, 0xD5),\n    COL_TRI_SPECIAL(122, 123, 63, 0x80),\n    COL_TRI_SPECIAL(122, 63, 65, 0x80),\n    COL_TRI_SPECIAL(123, 121, 64, 0xAB),\n    COL_TRI_SPECIAL(124, 65, 66, 0x55),\n    COL_TRI_SPECIAL(124, 122, 65, 0x55),\n    COL_TRI_SPECIAL(125, 66, 61, 0x2B),\n    COL_TRI_SPECIAL(125, 124, 66, 0x2B),\n    COL_TRI_INIT(SURFACE_QUICKSAND, 12),\n    COL_TRI(103, 102, 100),\n    COL_TRI(92, 93, 94),\n    COL_TRI(93, 95, 96),\n    COL_TRI(97, 93, 98),\n    COL_TRI(97, 95, 93),\n    COL_TRI(95, 99, 100),\n    COL_TRI(97, 99, 95),\n    COL_TRI(92, 94, 101),\n    COL_TRI(100, 101, 94),\n    COL_TRI(100, 102, 101),\n    COL_TRI(103, 100, 99),\n    COL_TRI(97, 98, 104),\n    COL_TRI_INIT(SURFACE_MOVING_QUICKSAND, 60),\n    COL_TRI_SPECIAL(37, 39, 38, 0xAB),\n    COL_TRI_SPECIAL(32, 33, 34, 0x0),\n    COL_TRI_SPECIAL(32, 34, 35, 0x0),\n    COL_TRI_SPECIAL(35, 36, 37, 0xD5),\n    COL_TRI_SPECIAL(35, 34, 36, 0xD5),\n    COL_TRI_SPECIAL(38, 39, 40, 0x80),\n    COL_TRI_SPECIAL(38, 40, 41, 0x80),\n    COL_TRI_SPECIAL(43, 69, 68, 0x0),\n    COL_TRI_SPECIAL(37, 36, 39, 0xAB),\n    COL_TRI_SPECIAL(41, 67, 42, 0x55),\n    COL_TRI_SPECIAL(41, 40, 67, 0x55),\n    COL_TRI_SPECIAL(42, 67, 33, 0x2B),\n    COL_TRI_SPECIAL(42, 33, 32, 0x2B),\n    COL_TRI_SPECIAL(43, 68, 44, 0x0),\n    COL_TRI_SPECIAL(47, 71, 73, 0x55),\n    COL_TRI_SPECIAL(44, 68, 70, 0xD5),\n    COL_TRI_SPECIAL(44, 70, 46, 0xD5),\n    COL_TRI_SPECIAL(45, 71, 47, 0x80),\n    COL_TRI_SPECIAL(45, 72, 71, 0x80),\n    COL_TRI_SPECIAL(46, 72, 45, 0xAB),\n    COL_TRI_SPECIAL(46, 70, 72, 0xAB),\n    COL_TRI_SPECIAL(50, 74, 76, 0xD5),\n    COL_TRI_SPECIAL(47, 73, 48, 0x55),\n    COL_TRI_SPECIAL(48, 73, 69, 0x2B),\n    COL_TRI_SPECIAL(48, 69, 43, 0x2B),\n    COL_TRI_SPECIAL(49, 74, 50, 0x0),\n    COL_TRI_SPECIAL(49, 75, 74, 0x0),\n    COL_TRI_SPECIAL(50, 76, 52, 0xD5),\n    COL_TRI_SPECIAL(54, 75, 49, 0x2B),\n    COL_TRI_SPECIAL(51, 77, 78, 0x80),\n    COL_TRI_SPECIAL(51, 78, 53, 0x80),\n    COL_TRI_SPECIAL(52, 76, 77, 0xAB),\n    COL_TRI_SPECIAL(52, 77, 51, 0xAB),\n    COL_TRI_SPECIAL(53, 79, 54, 0x55),\n    COL_TRI_SPECIAL(53, 78, 79, 0x55),\n    COL_TRI_SPECIAL(57, 84, 59, 0x80),\n    COL_TRI_SPECIAL(54, 79, 75, 0x2B),\n    COL_TRI_SPECIAL(55, 80, 81, 0x0),\n    COL_TRI_SPECIAL(55, 81, 56, 0x0),\n    COL_TRI_SPECIAL(56, 82, 58, 0xD5),\n    COL_TRI_SPECIAL(56, 81, 82, 0xD5),\n    COL_TRI_SPECIAL(57, 83, 84, 0x80),\n    COL_TRI_SPECIAL(61, 86, 62, 0x0),\n    COL_TRI_SPECIAL(58, 83, 57, 0xAB),\n    COL_TRI_SPECIAL(58, 82, 83, 0xAB),\n    COL_TRI_SPECIAL(59, 85, 60, 0x55),\n    COL_TRI_SPECIAL(59, 84, 85, 0x55),\n    COL_TRI_SPECIAL(60, 85, 80, 0x2B),\n    COL_TRI_SPECIAL(60, 80, 55, 0x2B),\n    COL_TRI_SPECIAL(64, 88, 89, 0xAB),\n    COL_TRI_SPECIAL(61, 87, 86, 0x0),\n    COL_TRI_SPECIAL(62, 86, 88, 0xD5),\n    COL_TRI_SPECIAL(62, 88, 64, 0xD5),\n    COL_TRI_SPECIAL(63, 89, 90, 0x80),\n    COL_TRI_SPECIAL(63, 90, 65, 0x80),\n    COL_TRI_SPECIAL(64, 89, 63, 0xAB),\n    COL_TRI_SPECIAL(65, 90, 91, 0x55),\n    COL_TRI_SPECIAL(65, 91, 66, 0x55),\n    COL_TRI_SPECIAL(66, 87, 61, 0x2B),\n    COL_TRI_SPECIAL(66, 91, 87, 0x2B),\n    COL_TRI_INIT(SURFACE_WALL_MISC, 58),\n    COL_TRI(10, 9, 11),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI(4, 3, 0),\n    COL_TRI(4, 5, 3),\n    COL_TRI(2, 1, 6),\n    COL_TRI(2, 6, 7),\n    COL_TRI(7, 6, 5),\n    COL_TRI(7, 5, 4),\n    COL_TRI(8, 9, 10),\n    COL_TRI(10, 11, 12),\n    COL_TRI(17, 26, 24),\n    COL_TRI(8, 13, 9),\n    COL_TRI(12, 11, 14),\n    COL_TRI(12, 14, 15),\n    COL_TRI(15, 13, 8),\n    COL_TRI(15, 14, 13),\n    COL_TRI(16, 24, 25),\n    COL_TRI(16, 25, 18),\n    COL_TRI(17, 24, 16),\n    COL_TRI(22, 29, 31),\n    COL_TRI(18, 25, 27),\n    COL_TRI(18, 27, 19),\n    COL_TRI(19, 26, 17),\n    COL_TRI(19, 27, 26),\n    COL_TRI(20, 28, 21),\n    COL_TRI(21, 29, 22),\n    COL_TRI(21, 28, 29),\n    COL_TRI(20, 30, 28),\n    COL_TRI(23, 30, 20),\n    COL_TRI(22, 31, 23),\n    COL_TRI(23, 31, 30),\n    COL_TRI(114, 486, 487),\n    COL_TRI(114, 487, 488),\n    COL_TRI(489, 490, 491),\n    COL_TRI(489, 492, 490),\n    COL_TRI(493, 489, 494),\n    COL_TRI(493, 488, 489),\n    COL_TRI(114, 488, 493),\n    COL_TRI(114, 493, 113),\n    COL_TRI(495, 494, 489),\n    COL_TRI(495, 489, 491),\n    COL_TRI(496, 494, 495),\n    COL_TRI(113, 497, 111),\n    COL_TRI(113, 493, 497),\n    COL_TRI(497, 493, 494),\n    COL_TRI(497, 494, 499),\n    COL_TRI(496, 499, 494),\n    COL_TRI(371, 498, 263),\n    COL_TRI(371, 500, 498),\n    COL_TRI(498, 500, 501),\n    COL_TRI(263, 498, 502),\n    COL_TRI(372, 501, 500),\n    COL_TRI(266, 502, 501),\n    COL_TRI(266, 501, 372),\n    COL_TRI(498, 501, 502),\n    COL_TRI(263, 502, 266),\n    COL_TRI(372, 500, 371),\n    COL_TRI_INIT(SURFACE_INSTANT_MOVING_QUICKSAND, 69),\n    COL_TRI_SPECIAL(158, 157, 166, 0x60),\n    COL_TRI_SPECIAL(158, 166, 167, 0x80),\n    COL_TRI_SPECIAL(168, 158, 167, 0x80),\n    COL_TRI_SPECIAL(156, 169, 157, 0x60),\n    COL_TRI_SPECIAL(157, 170, 166, 0x60),\n    COL_TRI_SPECIAL(166, 170, 171, 0x60),\n    COL_TRI_SPECIAL(166, 171, 172, 0x60),\n    COL_TRI_SPECIAL(172, 171, 169, 0x60),\n    COL_TRI_SPECIAL(156, 172, 169, 0x60),\n    COL_TRI_SPECIAL(168, 167, 173, 0x80),\n    COL_TRI_SPECIAL(160, 174, 175, 0x80),\n    COL_TRI_SPECIAL(160, 175, 176, 0x80),\n    COL_TRI_SPECIAL(165, 188, 189, 0x0),\n    COL_TRI_SPECIAL(165, 190, 188, 0x0),\n    COL_TRI_SPECIAL(164, 165, 189, 0x40),\n    COL_TRI_SPECIAL(164, 189, 191, 0x40),\n    COL_TRI_SPECIAL(159, 192, 193, 0x0),\n    COL_TRI_SPECIAL(159, 176, 192, 0xC0),\n    COL_TRI_SPECIAL(159, 160, 176, 0xC0),\n    COL_TRI_SPECIAL(162, 164, 191, 0x80),\n    COL_TRI_SPECIAL(128, 195, 129, 0xAB),\n    COL_TRI_SPECIAL(163, 191, 194, 0x80),\n    COL_TRI_SPECIAL(126, 195, 127, 0x0),\n    COL_TRI_SPECIAL(127, 195, 128, 0xD5),\n    COL_TRI_SPECIAL(129, 195, 130, 0x80),\n    COL_TRI_SPECIAL(135, 196, 136, 0x80),\n    COL_TRI_SPECIAL(130, 195, 131, 0x55),\n    COL_TRI_SPECIAL(131, 195, 126, 0x2B),\n    COL_TRI_SPECIAL(132, 196, 133, 0x0),\n    COL_TRI_SPECIAL(133, 196, 134, 0xD5),\n    COL_TRI_SPECIAL(139, 197, 140, 0xD5),\n    COL_TRI_SPECIAL(134, 196, 135, 0xAB),\n    COL_TRI_SPECIAL(136, 196, 137, 0x55),\n    COL_TRI_SPECIAL(137, 196, 132, 0x2B),\n    COL_TRI_SPECIAL(138, 197, 139, 0x0),\n    COL_TRI_SPECIAL(144, 198, 145, 0x0),\n    COL_TRI_SPECIAL(141, 197, 142, 0x80),\n    COL_TRI_SPECIAL(140, 197, 141, 0xAB),\n    COL_TRI_SPECIAL(142, 197, 143, 0x55),\n    COL_TRI_SPECIAL(143, 197, 138, 0x2B),\n    COL_TRI_SPECIAL(149, 198, 144, 0x2B),\n    COL_TRI_SPECIAL(145, 198, 146, 0xD5),\n    COL_TRI_SPECIAL(148, 198, 147, 0x80),\n    COL_TRI_SPECIAL(146, 198, 148, 0xAB),\n    COL_TRI_SPECIAL(147, 198, 149, 0x55),\n    COL_TRI_SPECIAL(153, 199, 155, 0x55),\n    COL_TRI_SPECIAL(150, 199, 151, 0x0),\n    COL_TRI_SPECIAL(151, 199, 152, 0xD5),\n    COL_TRI_SPECIAL(154, 199, 153, 0x80),\n    COL_TRI_SPECIAL(152, 199, 154, 0xAB),\n    COL_TRI_SPECIAL(155, 199, 150, 0x2B),\n    COL_TRI_SPECIAL(177, 200, 179, 0x80),\n    COL_TRI_SPECIAL(177, 201, 200, 0x80),\n    COL_TRI_SPECIAL(178, 200, 202, 0x40),\n    COL_TRI_SPECIAL(179, 200, 178, 0x60),\n    COL_TRI_SPECIAL(180, 203, 204, 0x80),\n    COL_TRI_SPECIAL(178, 202, 184, 0x40),\n    COL_TRI_SPECIAL(180, 205, 203, 0x80),\n    COL_TRI_SPECIAL(181, 205, 180, 0xA0),\n    COL_TRI_SPECIAL(182, 206, 205, 0xC0),\n    COL_TRI_SPECIAL(182, 205, 181, 0xC0),\n    COL_TRI_SPECIAL(183, 202, 206, 0x0),\n    COL_TRI_SPECIAL(183, 206, 185, 0x0),\n    COL_TRI_SPECIAL(184, 202, 183, 0x20),\n    COL_TRI_SPECIAL(185, 206, 182, 0xE0),\n    COL_TRI_SPECIAL(186, 207, 208, 0x0),\n    COL_TRI_SPECIAL(186, 209, 207, 0x0),\n    COL_TRI_SPECIAL(187, 207, 209, 0x40),\n    COL_TRI_SPECIAL(187, 210, 207, 0x40),\n    COL_TRI_INIT(SURFACE_HARD, 288),\n    COL_TRI(238, 239, 240),\n    COL_TRI(227, 228, 229),\n    COL_TRI(229, 228, 230),\n    COL_TRI(229, 230, 231),\n    COL_TRI(227, 232, 228),\n    COL_TRI(233, 234, 235),\n    COL_TRI(233, 235, 227),\n    COL_TRI(234, 236, 235),\n    COL_TRI(234, 237, 236),\n    COL_TRI(239, 241, 242),\n    COL_TRI(244, 242, 241),\n    COL_TRI(243, 242, 244),\n    COL_TRI(239, 242, 243),\n    COL_TRI(243, 244, 359),\n    COL_TRI(205, 245, 360),\n    COL_TRI(205, 360, 200),\n    COL_TRI(245, 361, 360),\n    COL_TRI(245, 362, 361),\n    COL_TRI(246, 363, 247),\n    COL_TRI(251, 364, 250),\n    COL_TRI(247, 201, 246),\n    COL_TRI(246, 248, 363),\n    COL_TRI(248, 203, 363),\n    COL_TRI(249, 252, 250),\n    COL_TRI(249, 250, 364),\n    COL_TRI(250, 252, 365),\n    COL_TRI(250, 365, 366),\n    COL_TRI(251, 250, 366),\n    COL_TRI(257, 369, 255),\n    COL_TRI(252, 367, 365),\n    COL_TRI(253, 366, 365),\n    COL_TRI(253, 365, 367),\n    COL_TRI(251, 366, 253),\n    COL_TRI(252, 368, 367),\n    COL_TRI(252, 249, 368),\n    COL_TRI(254, 255, 369),\n    COL_TRI(255, 254, 258),\n    COL_TRI(255, 258, 256),\n    COL_TRI(256, 257, 255),\n    COL_TRI(260, 259, 256),\n    COL_TRI(254, 369, 370),\n    COL_TRI(258, 254, 370),\n    COL_TRI(259, 238, 240),\n    COL_TRI(260, 238, 259),\n    COL_TRI(240, 256, 259),\n    COL_TRI(261, 263, 264),\n    COL_TRI(261, 371, 263),\n    COL_TRI(262, 371, 261),\n    COL_TRI(258, 370, 373),\n    COL_TRI(263, 266, 370),\n    COL_TRI(263, 370, 369),\n    COL_TRI(264, 263, 369),\n    COL_TRI(264, 369, 257),\n    COL_TRI(262, 372, 371),\n    COL_TRI(265, 372, 262),\n    COL_TRI(265, 266, 372),\n    COL_TRI(266, 265, 373),\n    COL_TRI(271, 378, 379),\n    COL_TRI(267, 374, 268),\n    COL_TRI(268, 375, 190),\n    COL_TRI(268, 374, 375),\n    COL_TRI(267, 376, 374),\n    COL_TRI(269, 377, 270),\n    COL_TRI(269, 270, 159),\n    COL_TRI(270, 377, 378),\n    COL_TRI(270, 378, 271),\n    COL_TRI(271, 379, 272),\n    COL_TRI(272, 379, 380),\n    COL_TRI(278, 383, 275),\n    COL_TRI(272, 380, 273),\n    COL_TRI(273, 380, 376),\n    COL_TRI(273, 376, 267),\n    COL_TRI(274, 276, 381),\n    COL_TRI(274, 381, 277),\n    COL_TRI(275, 276, 274),\n    COL_TRI(276, 382, 381),\n    COL_TRI(276, 383, 382),\n    COL_TRI(275, 383, 276),\n    COL_TRI(277, 381, 382),\n    COL_TRI(277, 382, 278),\n    COL_TRI(278, 382, 383),\n    COL_TRI(285, 286, 284),\n    COL_TRI(279, 281, 280),\n    COL_TRI(280, 384, 282),\n    COL_TRI(280, 281, 384),\n    COL_TRI(281, 385, 384),\n    COL_TRI(281, 386, 385),\n    COL_TRI(279, 386, 281),\n    COL_TRI(282, 384, 385),\n    COL_TRI(282, 385, 283),\n    COL_TRI(283, 385, 386),\n    COL_TRI(283, 386, 279),\n    COL_TRI(284, 387, 287),\n    COL_TRI(284, 286, 387),\n    COL_TRI(291, 174, 390),\n    COL_TRI(286, 388, 389),\n    COL_TRI(286, 389, 387),\n    COL_TRI(285, 388, 286),\n    COL_TRI(287, 387, 389),\n    COL_TRI(287, 389, 288),\n    COL_TRI(288, 389, 388),\n    COL_TRI(288, 388, 285),\n    COL_TRI(289, 168, 290),\n    COL_TRI(290, 390, 289),\n    COL_TRI(290, 291, 390),\n    COL_TRI(293, 394, 396),\n    COL_TRI(292, 390, 391),\n    COL_TRI(292, 301, 390),\n    COL_TRI(174, 391, 390),\n    COL_TRI(289, 392, 297),\n    COL_TRI(289, 297, 393),\n    COL_TRI(289, 393, 168),\n    COL_TRI(293, 165, 394),\n    COL_TRI(293, 395, 165),\n    COL_TRI(295, 395, 293),\n    COL_TRI(165, 395, 295),\n    COL_TRI(165, 295, 340),\n    COL_TRI(297, 392, 399),\n    COL_TRI(298, 392, 301),\n    COL_TRI(298, 299, 392),\n    COL_TRI(299, 402, 392),\n    COL_TRI(297, 399, 161),\n    COL_TRI(300, 292, 322),\n    COL_TRI(300, 301, 292),\n    COL_TRI(301, 400, 298),\n    COL_TRI(301, 401, 400),\n    COL_TRI(301, 300, 401),\n    COL_TRI(163, 302, 303),\n    COL_TRI(302, 304, 163),\n    COL_TRI(302, 307, 304),\n    COL_TRI(156, 302, 163),\n    COL_TRI(156, 311, 302),\n    COL_TRI(303, 302, 311),\n    COL_TRI(322, 401, 300),\n    COL_TRI(308, 407, 404),\n    COL_TRI(304, 307, 403),\n    COL_TRI(305, 307, 407),\n    COL_TRI(305, 306, 307),\n    COL_TRI(306, 312, 307),\n    COL_TRI(307, 404, 407),\n    COL_TRI(304, 403, 314),\n    COL_TRI(163, 303, 310),\n    COL_TRI(308, 404, 309),\n    COL_TRI(309, 404, 303),\n    COL_TRI(309, 303, 310),\n    COL_TRI(314, 403, 313),\n    COL_TRI(310, 303, 405),\n    COL_TRI(311, 405, 303),\n    COL_TRI(310, 405, 321),\n    COL_TRI(312, 313, 403),\n    COL_TRI(312, 408, 313),\n    COL_TRI(313, 316, 411),\n    COL_TRI(313, 315, 316),\n    COL_TRI(314, 313, 411),\n    COL_TRI(320, 408, 312),\n    COL_TRI(315, 412, 415),\n    COL_TRI(315, 413, 412),\n    COL_TRI(315, 414, 413),\n    COL_TRI(316, 315, 317),\n    COL_TRI(317, 315, 415),\n    COL_TRI(316, 317, 349),\n    COL_TRI(318, 414, 408),\n    COL_TRI(318, 408, 320),\n    COL_TRI(319, 414, 318),\n    COL_TRI(319, 413, 414),\n    COL_TRI(320, 312, 325),\n    COL_TRI(299, 324, 417),\n    COL_TRI(299, 298, 324),\n    COL_TRI(321, 299, 417),\n    COL_TRI(321, 405, 299),\n    COL_TRI(311, 399, 402),\n    COL_TRI(311, 402, 405),\n    COL_TRI(323, 401, 406),\n    COL_TRI(323, 400, 401),\n    COL_TRI(322, 406, 401),\n    COL_TRI(324, 400, 323),\n    COL_TRI(324, 298, 400),\n    COL_TRI(306, 409, 312),\n    COL_TRI(325, 312, 409),\n    COL_TRI(326, 327, 407),\n    COL_TRI(326, 407, 308),\n    COL_TRI(333, 335, 420),\n    COL_TRI(305, 327, 335),\n    COL_TRI(327, 332, 335),\n    COL_TRI(328, 327, 326),\n    COL_TRI(328, 418, 327),\n    COL_TRI(327, 418, 329),\n    COL_TRI(327, 329, 332),\n    COL_TRI(329, 418, 328),\n    COL_TRI(329, 328, 419),\n    COL_TRI(330, 329, 419),\n    COL_TRI(330, 332, 329),\n    COL_TRI(331, 332, 330),\n    COL_TRI(331, 420, 332),\n    COL_TRI(332, 420, 335),\n    COL_TRI(333, 420, 331),\n    COL_TRI(325, 409, 339),\n    COL_TRI(334, 335, 333),\n    COL_TRI(334, 421, 335),\n    COL_TRI(335, 421, 305),\n    COL_TRI(336, 305, 421),\n    COL_TRI(336, 421, 334),\n    COL_TRI(337, 305, 336),\n    COL_TRI(337, 306, 305),\n    COL_TRI(338, 306, 337),\n    COL_TRI(338, 410, 306),\n    COL_TRI(306, 410, 409),\n    COL_TRI(339, 409, 410),\n    COL_TRI(339, 410, 338),\n    COL_TRI(294, 397, 293),\n    COL_TRI(161, 399, 311),\n    COL_TRI(161, 311, 156),\n    COL_TRI(340, 295, 296),\n    COL_TRI(296, 295, 293),\n    COL_TRI(341, 397, 294),\n    COL_TRI(293, 397, 398),\n    COL_TRI(342, 397, 341),\n    COL_TRI(342, 398, 397),\n    COL_TRI(296, 293, 398),\n    COL_TRI(296, 398, 416),\n    COL_TRI(343, 398, 342),\n    COL_TRI(343, 416, 398),\n    COL_TRI(344, 412, 413),\n    COL_TRI(344, 413, 319),\n    COL_TRI(345, 412, 344),\n    COL_TRI(345, 415, 412),\n    COL_TRI(346, 415, 345),\n    COL_TRI(346, 348, 415),\n    COL_TRI(317, 415, 348),\n    COL_TRI(348, 296, 416),\n    COL_TRI(348, 416, 317),\n    COL_TRI(341, 294, 164),\n    COL_TRI(294, 293, 396),\n    COL_TRI(340, 296, 347),\n    COL_TRI(347, 296, 348),\n    COL_TRI(349, 416, 343),\n    COL_TRI(349, 317, 416),\n    COL_TRI(347, 348, 346),\n    COL_TRI(355, 424, 425),\n    COL_TRI(350, 422, 353),\n    COL_TRI(350, 357, 422),\n    COL_TRI(351, 357, 350),\n    COL_TRI(352, 351, 350),\n    COL_TRI(352, 350, 353),\n    COL_TRI(351, 354, 357),\n    COL_TRI(353, 422, 423),\n    COL_TRI(353, 423, 352),\n    COL_TRI(352, 354, 351),\n    COL_TRI(352, 423, 354),\n    COL_TRI(354, 422, 357),\n    COL_TRI(354, 423, 422),\n    COL_TRI(358, 432, 431),\n    COL_TRI(355, 422, 424),\n    COL_TRI(356, 423, 426),\n    COL_TRI(356, 427, 423),\n    COL_TRI(357, 428, 429),\n    COL_TRI(357, 430, 428),\n    COL_TRI(358, 431, 354),\n    COL_TRI(8, 18, 4),\n    COL_TRI(8, 22, 18),\n    COL_TRI(214, 212, 220),\n    COL_TRI(214, 220, 225),\n    COL_TRI(214, 217, 215),\n    COL_TRI(214, 225, 223),\n    COL_TRI(214, 223, 221),\n    COL_TRI(214, 221, 217),\n    COL_TRI(440, 439, 438),\n    COL_TRI(433, 434, 435),\n    COL_TRI(433, 435, 436),\n    COL_TRI(437, 438, 434),\n    COL_TRI(437, 434, 433),\n    COL_TRI(436, 439, 440),\n    COL_TRI(436, 435, 439),\n    COL_TRI(440, 438, 437),\n    COL_TRI(438, 439, 435),\n    COL_TRI(436, 374, 379),\n    COL_TRI(374, 380, 379),\n    COL_TRI(436, 375, 374),\n    COL_TRI(374, 376, 380),\n    COL_TRI(379, 378, 377),\n    COL_TRI(379, 377, 269),\n    COL_TRI(379, 433, 436),\n    COL_TRI(379, 269, 433),\n    COL_TRI(269, 437, 433),\n    COL_TRI(375, 437, 269),\n    COL_TRI(436, 440, 375),\n    COL_TRI(375, 440, 437),\n    COL_TRI(438, 435, 434),\n    COL_TRI_INIT(SURFACE_HARD_SLIPPERY, 41),\n    COL_TRI(227, 235, 236),\n    COL_TRI(240, 485, 256),\n    COL_TRI(367, 362, 485),\n    COL_TRI(205, 362, 245),\n    COL_TRI(231, 227, 229),\n    COL_TRI(360, 361, 200),\n    COL_TRI(230, 228, 232),\n    COL_TRI(233, 237, 234),\n    COL_TRI(359, 239, 243),\n    COL_TRI(239, 238, 260),\n    COL_TRI(237, 262, 261),\n    COL_TRI(237, 261, 236),\n    COL_TRI(227, 261, 264),\n    COL_TRI(239, 262, 241),\n    COL_TRI(239, 265, 262),\n    COL_TRI(206, 233, 227),\n    COL_TRI(205, 206, 231),\n    COL_TRI(206, 202, 233),\n    COL_TRI(227, 264, 232),\n    COL_TRI(202, 359, 244),\n    COL_TRI(202, 200, 359),\n    COL_TRI(373, 265, 260),\n    COL_TRI(485, 264, 256),\n    COL_TRI(264, 257, 256),\n    COL_TRI(205, 231, 230),\n    COL_TRI(368, 249, 364),\n    COL_TRI(368, 364, 251),\n    COL_TRI(373, 260, 258),\n    COL_TRI(253, 485, 239),\n    COL_TRI(253, 367, 485),\n    COL_TRI(157, 471, 170),\n    COL_TRI(367, 368, 362),\n    COL_TRI(361, 251, 253),\n    COL_TRI(361, 253, 239),\n    COL_TRI(170, 471, 469),\n    COL_TRI(170, 469, 171),\n    COL_TRI(157, 470, 471),\n    COL_TRI(171, 469, 468),\n    COL_TRI(171, 468, 169),\n    COL_TRI(169, 468, 470),\n    COL_TRI(169, 470, 157),\n    COL_TRI_INIT(SURFACE_HARD_NOT_SLIPPERY, 80),\n    COL_TRI(211, 212, 213),\n    COL_TRI(212, 214, 213),\n    COL_TRI(213, 214, 215),\n    COL_TRI(213, 215, 216),\n    COL_TRI(216, 215, 217),\n    COL_TRI(216, 217, 218),\n    COL_TRI(219, 220, 212),\n    COL_TRI(219, 212, 211),\n    COL_TRI(218, 217, 221),\n    COL_TRI(218, 221, 222),\n    COL_TRI(222, 223, 224),\n    COL_TRI(222, 221, 223),\n    COL_TRI(224, 223, 225),\n    COL_TRI(224, 225, 226),\n    COL_TRI(226, 225, 220),\n    COL_TRI(226, 220, 219),\n    COL_TRI(449, 450, 451),\n    COL_TRI(441, 442, 443),\n    COL_TRI(100, 441, 443),\n    COL_TRI(100, 443, 95),\n    COL_TRI(95, 443, 444),\n    COL_TRI(443, 445, 444),\n    COL_TRI(443, 442, 445),\n    COL_TRI(441, 446, 442),\n    COL_TRI(444, 445, 447),\n    COL_TRI(95, 444, 96),\n    COL_TRI(444, 447, 448),\n    COL_TRI(96, 444, 448),\n    COL_TRI(96, 448, 94),\n    COL_TRI(94, 441, 100),\n    COL_TRI(94, 448, 441),\n    COL_TRI(448, 446, 441),\n    COL_TRI(448, 447, 446),\n    COL_TRI(452, 449, 451),\n    COL_TRI(453, 454, 449),\n    COL_TRI(455, 453, 449),\n    COL_TRI(455, 449, 452),\n    COL_TRI(453, 476, 454),\n    COL_TRI(449, 454, 450),\n    COL_TRI(451, 450, 456),\n    COL_TRI(451, 456, 458),\n    COL_TRI(452, 451, 457),\n    COL_TRI(457, 451, 458),\n    COL_TRI(457, 458, 459),\n    COL_TRI(458, 476, 453),\n    COL_TRI(459, 458, 453),\n    COL_TRI(459, 453, 455),\n    COL_TRI(458, 456, 476),\n    COL_TRI(460, 477, 478),\n    COL_TRI(460, 478, 464),\n    COL_TRI(461, 477, 460),\n    COL_TRI(462, 461, 460),\n    COL_TRI(462, 460, 463),\n    COL_TRI(461, 479, 477),\n    COL_TRI(464, 478, 480),\n    COL_TRI(463, 464, 465),\n    COL_TRI(465, 464, 466),\n    COL_TRI(464, 480, 466),\n    COL_TRI(463, 460, 464),\n    COL_TRI(465, 466, 467),\n    COL_TRI(466, 479, 461),\n    COL_TRI(467, 466, 461),\n    COL_TRI(467, 461, 462),\n    COL_TRI(466, 480, 479),\n    COL_TRI(468, 481, 482),\n    COL_TRI(468, 482, 470),\n    COL_TRI(469, 483, 481),\n    COL_TRI(469, 481, 468),\n    COL_TRI(470, 482, 484),\n    COL_TRI(470, 484, 471),\n    COL_TRI(471, 483, 469),\n    COL_TRI(471, 484, 483),\n    COL_TRI(472, 4, 474),\n    COL_TRI(472, 8, 4),\n    COL_TRI(473, 8, 472),\n    COL_TRI(475, 22, 473),\n    COL_TRI(473, 22, 8),\n    COL_TRI(474, 4, 18),\n    COL_TRI(474, 18, 475),\n    COL_TRI(475, 18, 22),\n    COL_TRI_INIT(SURFACE_CAMERA_MIDDLE, 8),\n    COL_TRI(482, 481, 483),\n    COL_TRI(445, 446, 447),\n    COL_TRI(445, 442, 446),\n    COL_TRI(450, 476, 456),\n    COL_TRI(450, 454, 476),\n    COL_TRI(478, 477, 479),\n    COL_TRI(478, 479, 480),\n    COL_TRI(482, 483, 484),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(7),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_null_start,   /*pos*/   653, 38,  6566, /*yaw*/ 64), // unused, probably an early way to set initial position\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/  5760,  0,  5751, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/ -3583,  0,  2935, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/  -511,  0,  2935, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/  1024,  0,  3822, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/  3072,  0,   375, /*yaw*/  0),\n    SPECIAL_OBJECT(/*preset*/ special_palm_tree,    /*pos*/ -5989,  0, -4850),\n    COL_WATER_BOX_INIT(3),\n    COL_WATER_BOX(51, 1024, -7065, 7578, -716, -50),\n    COL_WATER_BOX(52, -3993, -7065, 1024, -4197, -50),\n    COL_WATER_BOX(0, -6911, -7167, -4223, -4607, -127),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/ssl/areas/1/geo.inc.c",
    "content": "// 0x0E000648\nconst GeoLayout ssl_geo_000648[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND(BACKGROUND_DESERT, geo_skybox_main),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 20000, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(1, 0, 2000, 6000, -2048, 0, -1024, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, ssl_seg7_dl_07009F48),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, ssl_seg7_dl_0700BA78),\n                    GEO_DISPLAY_LIST(LAYER_ALPHA, ssl_seg7_dl_0700BC18),\n                    GEO_DISPLAY_LIST(LAYER_TRANSPARENT_DECAL, ssl_seg7_dl_0700BD00),\n                    GEO_ASM(0x0801, geo_movtex_update_horizontal),\n                    GEO_ASM(   0, geo_movtex_pause_control),\n                    GEO_ASM(0x0801, geo_movtex_draw_water_regions),\n                    GEO_ASM(0x0851, geo_movtex_draw_water_regions),\n                    GEO_ASM(0x0801, geo_movtex_draw_colored),\n                    GEO_ASM(0x0802, geo_movtex_draw_colored),\n                    GEO_ASM(0x0803, geo_movtex_draw_colored),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(   0, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_cannon_circle_base),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ssl/areas/1/macro.inc.c",
    "content": "// 0x07012424 - 0x070125F2\nconst MacroObject ssl_seg7_area_1_macro_objs[] = {\n    MACRO_OBJECT               (/*preset*/ macro_goomba,                      /*yaw*/   0, /*pos*/  6068,    51,  2800),\n    MACRO_OBJECT               (/*preset*/ macro_goomba,                      /*yaw*/   0, /*pos*/  5535,    51,  3377),\n    MACRO_OBJECT               (/*preset*/ macro_goomba,                      /*yaw*/   0, /*pos*/  5980,    51,  3911),\n    MACRO_OBJECT               (/*preset*/ macro_pokey_1,                     /*yaw*/   0, /*pos*/  4602,    40,  4622),\n    MACRO_OBJECT               (/*preset*/ macro_pokey_1,                     /*yaw*/   0, /*pos*/  5057,   143,   256),\n    MACRO_OBJECT               (/*preset*/ macro_pokey_1,                     /*yaw*/   0, /*pos*/ -6858,     8, -3711),\n    MACRO_OBJECT               (/*preset*/ macro_pokey_1,                     /*yaw*/   0, /*pos*/ -5372,    64,  3083),\n    MACRO_OBJECT               (/*preset*/ macro_breakable_box_no_coins,      /*yaw*/   0, /*pos*/  5900,    51,  4400),\n    MACRO_OBJECT               (/*preset*/ macro_breakable_box_no_coins,      /*yaw*/   0, /*pos*/  5900,    51,  2311),\n    MACRO_OBJECT               (/*preset*/ macro_bobomb_buddy_opens_cannon_1, /*yaw*/   0, /*pos*/ -5990,     0, -3871),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/ -5869,  1200, -2535),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/ -5896,  1200,   773),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/  1800,  1200,   800),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/  1805,  1200, -2536),\n    MACRO_OBJECT               (/*preset*/ macro_box_wing_cap,                /*yaw*/   0, /*pos*/  6900,   350, -5400),\n    MACRO_OBJECT               (/*preset*/ macro_box_wing_cap,                /*yaw*/   0, /*pos*/ -3000,   500,   800),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_cannon_closed,               /*yaw*/   0, /*pos*/  6863,     0, -6860, /*bhvParam*/ 0xC0),\n    MACRO_OBJECT               (/*preset*/ macro_breakable_box_small,         /*yaw*/   0, /*pos*/  5900,    50,  3440),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -4500,  1500, -3500),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -4500,  1500,  1500),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/   500,  1500, -3500),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/   500,  1500,  1500),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  3380,    10, -4900),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -5270,  -170, -6780),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -7450,    10,  7560),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  5900,    70,  2311),\n    MACRO_OBJECT               (/*preset*/ macro_box_koopa_shell,             /*yaw*/   0, /*pos*/  5840,   940,  2500),\n    MACRO_OBJECT               (/*preset*/ macro_box_wing_cap,                /*yaw*/   0, /*pos*/  5860,   940,  4180),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/   0, /*pos*/  5702,   614,  2974, /*bhvParam*/ DIALOG_016),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/   0, /*pos*/ -3260,   256,   800, /*bhvParam*/ DIALOG_032),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_in_pole,          /*yaw*/   0, /*pos*/ -6000,   600, -4800),\n    MACRO_OBJECT               (/*preset*/ macro_1up,                         /*yaw*/   0, /*pos*/  -250,     0,  4200),\n    MACRO_OBJECT               (/*preset*/ macro_fly_guy,                     /*yaw*/   0, /*pos*/  3500,   149,  5600),\n    MACRO_OBJECT               (/*preset*/ macro_bobomb,                      /*yaw*/   0, /*pos*/  3800,     0,  6000),\n    MACRO_OBJECT               (/*preset*/ macro_bobomb,                      /*yaw*/   0, /*pos*/  1750,     0,  6450),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,        /*yaw*/   0, /*pos*/ -5920,   200,  -920),\n    MACRO_OBJECT               (/*preset*/ macro_fire_spitter,                /*yaw*/   0, /*pos*/  -386,   512, -2228),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,        /*yaw*/  90, /*pos*/ -2290,   787, -2180),\n    MACRO_OBJECT               (/*preset*/ macro_fire_fly_guy,                /*yaw*/   0, /*pos*/  1440,   800,  -960),\n    MACRO_OBJECT               (/*preset*/ macro_fire_fly_guy,                /*yaw*/   0, /*pos*/ -3400,  1160, -1120),\n    MACRO_OBJECT               (/*preset*/ macro_fire_spitter,                /*yaw*/   0, /*pos*/ -5125,   135, -3138),\n    MACRO_OBJECT               (/*preset*/ macro_jumping_box,                 /*yaw*/   0, /*pos*/  1120,     0,  6480),\n    MACRO_OBJECT               (/*preset*/ macro_1up,                         /*yaw*/   0, /*pos*/  5757,   230,  5761),\n    MACRO_OBJECT               (/*preset*/ macro_jumping_box,                 /*yaw*/   0, /*pos*/ -5200,     0,  1700),\n    MACRO_OBJECT               (/*preset*/ macro_box_1up_running_away,        /*yaw*/   0, /*pos*/ -1200,   500,   800),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/   0, /*pos*/  5130,    26,  -370, /*bhvParam*/ DIALOG_157),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/ssl/areas/1/movtext.inc.c",
    "content": "// 0x07012758 - 0x07012778\nstatic Movtex ssl_movtex_puddle_water_data[] = {\n    MOV_TEX_INIT_LOAD(    1),\n    MOV_TEX_ROT_SPEED(   10),\n    MOV_TEX_ROT_SCALE(    3),\n    MOV_TEX_4_BOX_TRIS(-6911, -7167),\n    MOV_TEX_4_BOX_TRIS(-6911, -4607),\n    MOV_TEX_4_BOX_TRIS(-4223, -4607),\n    MOV_TEX_4_BOX_TRIS(-4223, -7167),\n    MOV_TEX_ROT(     ROTATE_COUNTER_CLOCKWISE),\n    MOV_TEX_ALPHA(    0x96),\n    MOV_TEX_DEFINE(  TEXTURE_WATER),\n    MOV_TEX_END(),\n};\n\n// 0x07012778\nconst struct MovtexQuadCollection ssl_movtex_puddle_water[] = {\n    {0, ssl_movtex_puddle_water_data},\n    {-1, NULL},\n};\n\n// 0x07012788 - 0x070127A8\nstatic Movtex ssl_movtex_toxbox_quicksand_large_mist[] = {\n    MOV_TEX_INIT_LOAD(    1),\n    MOV_TEX_ROT_SPEED(   40),\n    MOV_TEX_ROT_SCALE(    2),\n    MOV_TEX_4_BOX_TRIS( 1024, -7065),\n    MOV_TEX_4_BOX_TRIS( 1024,  -716),\n    MOV_TEX_4_BOX_TRIS( 7578,  -716),\n    MOV_TEX_4_BOX_TRIS( 7578, -7065),\n    MOV_TEX_ROT(     ROTATE_COUNTER_CLOCKWISE),\n    MOV_TEX_ALPHA(    0x96),\n    MOV_TEX_DEFINE(  TEXTURE_WATER), // vertex shaded to another color\n    MOV_TEX_END(),\n};\n\n// 0x070127A8 - 0x070127C8\nstatic Movtex ssl_movtex_toxbox_quicksand_short_mist[] = {\n    MOV_TEX_INIT_LOAD(    1),\n    MOV_TEX_ROT_SPEED(   40),\n    MOV_TEX_ROT_SCALE(    2),\n    MOV_TEX_4_BOX_TRIS(-3993, -7065),\n    MOV_TEX_4_BOX_TRIS(-3993, -4197),\n    MOV_TEX_4_BOX_TRIS( 1024, -4197),\n    MOV_TEX_4_BOX_TRIS( 1024, -7065),\n    MOV_TEX_ROT(     ROTATE_COUNTER_CLOCKWISE),\n    MOV_TEX_ALPHA(    0x96),\n    MOV_TEX_DEFINE(  TEXTURE_WATER), // vertex shaded to another color\n    MOV_TEX_END(),\n};\n\n// 0x070127C8 - 0x070127E0\nconst struct MovtexQuadCollection ssl_movtex_toxbox_quicksand_mist[] = {\n    {51, ssl_movtex_toxbox_quicksand_large_mist},\n    {52, ssl_movtex_toxbox_quicksand_short_mist},\n    {-1, NULL},\n};\n\n// 0x070127E0\nconst Gfx ssl_dl_quicksand_begin[] = {\n    gsSPBranchList(ssl_dl_quicksand_pit_begin),\n};\n\n// 0x070127E8\nconst Gfx ssl_dl_quicksand_end[] = {\n    gsSPBranchList(ssl_dl_quicksand_pit_end),\n};\n\n// 0x070127F0 - 0x070128B8\nMovtex ssl_movtex_tris_pyramid_quicksand[] = {\n    MOV_TEX_SPD(       20),\n    MOV_TEX_ROT_TRIS(-4096, -256,  1024,  23, 123, -15, 0, 0),\n    MOV_TEX_ROT_TRIS(    0, -256,  1024, -15, 123, -23, 0, 2),\n    MOV_TEX_ROT_TRIS(    0, -256, -3072, -23, 123,  15, 0, 4),\n    MOV_TEX_ROT_TRIS(-4096, -256, -3072,  17, 123,  23, 0, 2),\n    MOV_TEX_ROT_TRIS(-4096,    0,  2048,  17, 123, -21, 1, 0),\n    MOV_TEX_ROT_TRIS(    0,    0,  2048,  -6, 126, -12, 1, 2),\n    MOV_TEX_ROT_TRIS( 1024,    0,  1024, -14, 126,   2, 1, 2),\n    MOV_TEX_ROT_TRIS( 1024,    0, -3072,  -6, 125, -16, 1, 4),\n    MOV_TEX_ROT_TRIS(    0,    0, -4096,   7, 125, -15, 1, 4),\n    MOV_TEX_ROT_TRIS(-4096,    0, -4096,  10, 125, -12, 1, 2),\n    MOV_TEX_ROT_TRIS(-5120,    0, -3072,  14, 126,   4, 1, 2),\n    MOV_TEX_ROT_TRIS(-5120,    0,  1024,  12, 126,  -6, 1, 0),\n    MOV_TEX_ROT_END(),\n};\n\n// 0x070128B8 - 0x07012900\nconst Gfx ssl_dl_pyramid_quicksand[] = {\n    gsSP2Triangles( 0,  4,  1, 0x0,  1,  4,  5, 0x0),\n    gsSP2Triangles( 1,  6,  2, 0x0,  2,  6,  7, 0x0),\n    gsSP2Triangles( 2,  8,  3, 0x0,  3,  8,  9, 0x0),\n    gsSP2Triangles( 0,  3, 10, 0x0,  0, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07012900 - 0x07012A08\nMovtex ssl_movtex_tris_pyramid_corners_quicksand[] = {\n    MOV_TEX_SPD(       20),\n    MOV_TEX_ROT_TRIS(-4096, -256,  1024,  23, 123, -15, 0, 1),\n    MOV_TEX_ROT_TRIS(    0, -256,  1024, -15, 123, -23, 0, 3),\n    MOV_TEX_ROT_TRIS(    0, -256, -3072, -23, 123,  15, 0, 5),\n    MOV_TEX_ROT_TRIS(-4096, -256, -3072,  17, 123,  23, 0, 3),\n    MOV_TEX_ROT_TRIS(-4096,    0,  2048,  17, 123, -21, 1, 0),\n    MOV_TEX_ROT_TRIS(    0,    0,  2048,  -6, 126, -12, 1, 2),\n    MOV_TEX_ROT_TRIS( 1024,    0,  1024, -14, 126,   2, 1, 2),\n    MOV_TEX_ROT_TRIS( 1024,    0, -3072,  -6, 125, -16, 1, 4),\n    MOV_TEX_ROT_TRIS(    0,    0, -4096,   7, 125, -15, 1, 4),\n    MOV_TEX_ROT_TRIS(-4096,    0, -4096,  10, 125, -12, 1, 2),\n    MOV_TEX_ROT_TRIS(-5120,    0, -3072,  14, 126,   4, 1, 2),\n    MOV_TEX_ROT_TRIS(-5120,    0,  1024,  12, 126,  -6, 1, 0),\n    MOV_TEX_ROT_TRIS(-4608,    0,  1536,  15, 125, -14, 1, 1),\n    MOV_TEX_ROT_TRIS(  512,    0,  1536, -10, 126,  -5, 1, 3),\n    MOV_TEX_ROT_TRIS(  512,    0, -3584,   1, 125, -15, 1, 5),\n    MOV_TEX_ROT_TRIS(-4608,    0, -3584,  12, 126,  -4, 1, 3),\n    MOV_TEX_ROT_END(),\n};\n\n// 0x07012A08 - 0x07012A50\nconst Gfx ssl_dl_pyramid_corners_quicksand[] = {\n    gsSP2Triangles( 0, 11, 12, 0x0,  0, 12,  4, 0x0),\n    gsSP2Triangles( 1,  5, 13, 0x0,  1, 13,  6, 0x0),\n    gsSP2Triangles( 2,  7, 14, 0x0,  2, 14,  8, 0x0),\n    gsSP2Triangles( 3,  9, 15, 0x0,  3, 15, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07012A50 - 0x07012B48\nMovtex ssl_movtex_tris_sides_quicksand[] = {\n    MOV_TEX_SPD(       20),\n    MOV_TEX_ROT_TRIS(-8192, -512,  8704,   0, 113,  56, 0,  0),\n    MOV_TEX_ROT_TRIS(-8192, -256,  8192,   0, 113,  56, 1,  0),\n    MOV_TEX_ROT_TRIS(-8192,    0,  7680,   0, 106,  69, 2,  0),\n    MOV_TEX_ROT_TRIS(    0, -512,  8704,   0, 113,  56, 0,  3),\n    MOV_TEX_ROT_TRIS(    0, -256,  8192,   0, 113,  56, 1,  3),\n    MOV_TEX_ROT_TRIS(    0,    0,  7680,   2, 122,  34, 2,  3),\n    MOV_TEX_ROT_TRIS( 8704, -512,  8704,  29, 119,  29, 0,  6),\n    MOV_TEX_ROT_TRIS( 8192, -256,  8192,  29, 119,  29, 1,  6),\n    MOV_TEX_ROT_TRIS( 7680,    0,  7680,   6, 126,   6, 2,  6),\n    MOV_TEX_ROT_TRIS( 8704, -512,     0,  56, 113,   0, 0,  9),\n    MOV_TEX_ROT_TRIS( 8192, -256,     0,  56, 113,   0, 1,  9),\n    MOV_TEX_ROT_TRIS( 7680,    0,     0,  20, 125,   0, 2,  9),\n    MOV_TEX_ROT_TRIS( 8704, -512, -8192,  56, 113,   0, 0, 12),\n    MOV_TEX_ROT_TRIS( 8192, -256, -8192,  56, 113,   0, 1, 12),\n    MOV_TEX_ROT_TRIS( 7680,    0, -8192,  43, 119,   0, 2, 12),\n    MOV_TEX_ROT_END(),\n};\n\n// 0x07012B48 - 0x07012BD0\nconst Gfx ssl_dl_sides_quicksand[] = {\n    gsSP2Triangles( 2,  1,  5, 0x0,  1,  4,  5, 0x0),\n    gsSP2Triangles( 0,  3,  1, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 4,  7,  5, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 4,  3,  7, 0x0,  3,  6,  7, 0x0),\n    gsSP2Triangles( 8,  7, 11, 0x0, 11,  7, 10, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  7,  6,  9, 0x0),\n    gsSP2Triangles(11, 10, 13, 0x0, 11, 13, 14, 0x0),\n    gsSP2Triangles(10,  9, 13, 0x0, 13,  9, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ssl/areas/2/1/model.inc.c",
    "content": "// 0x07012BD0 - 0x07012BE8\nstatic const Lights1 ssl_seg7_lights_07012BD0 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07012BE8 - 0x07012C00\nstatic const Lights1 ssl_seg7_lights_07012BE8 = gdSPDefLights1(\n    0x46, 0x46, 0x46,\n    0x8c, 0x8c, 0x8c, 0x28, 0x28, 0x28\n);\n\n// 0x07012C00 - 0x07012C18\nstatic const Lights1 ssl_seg7_lights_07012C00 = gdSPDefLights1(\n    0x33, 0x33, 0x33,\n    0x66, 0x66, 0x66, 0x28, 0x28, 0x28\n);\n\n// 0x07012C18 - 0x07012C30\nstatic const Lights1 ssl_seg7_lights_07012C18 = gdSPDefLights1(\n    0x4b, 0x4b, 0x4b,\n    0x96, 0x96, 0x96, 0x28, 0x28, 0x28\n);\n\n// 0x07012C30 - 0x07012C48\nstatic const Lights1 ssl_seg7_lights_07012C30 = gdSPDefLights1(\n    0x64, 0x64, 0x64,\n    0xc8, 0xc8, 0xc8, 0x28, 0x28, 0x28\n);\n\n// 0x07012C48 - 0x07012CC8\nstatic const Vtx ssl_seg7_vertex_07012C48[] = {\n    {{{   512,    435,  -3685}, 0, {  2012,   -440}, {0xeb, 0x44, 0x68, 0xff}}},\n    {{{   512,    435,  -3327}, 0, {  2012,    990}, {0x12, 0x55, 0xa5, 0xff}}},\n    {{{  1102,      0,  -3327}, 0, {  4366,    990}, {0x62, 0x31, 0xc2, 0xff}}},\n    {{{  1102,      0,  -3685}, 0, {  4366,   -440}, {0x62, 0x31, 0x3e, 0xff}}},\n    {{{  -511,    435,  -3327}, 0, { -2074,    990}, {0xd5, 0x5e, 0xb8, 0xff}}},\n    {{{ -1101,      0,  -3685}, 0, { -4428,   -440}, {0x93, 0x37, 0x22, 0xff}}},\n    {{{ -1101,      0,  -3327}, 0, { -4428,    990}, {0x9f, 0x1e, 0xb5, 0xff}}},\n    {{{  -511,    435,  -3685}, 0, { -2074,   -440}, {0x0c, 0x56, 0x5c, 0xff}}},\n};\n\n// 0x07012CC8 - 0x07012D48\nstatic const Vtx ssl_seg7_vertex_07012CC8[] = {\n    {{{ -2559,   -409,   -370}, 0, { -9228,   7682}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   192,   -409,  -1664}, 0, {  1756,   2518}, {0x4a, 0x9d, 0x18, 0xff}}},\n    {{{  2560,   -409,   -370}, 0, { 11210,   7682}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -191,   -409,  -1664}, 0, {   224,   2518}, {0xc3, 0xa4, 0x3d, 0xff}}},\n    {{{ -2559,   -409,  -3954}, 0, { -9228,  -6624}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2560,   -409,  -3954}, 0, { 11210,  -6624}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   192,   -409,  -2432}, 0, {  1756,   -546}, {0xd6, 0xac, 0x54, 0xff}}},\n    {{{  -191,   -409,  -2432}, 0, {   224,   -546}, {0x26, 0x8e, 0x26, 0xff}}},\n};\n\n// 0x07012D48 - 0x07012E48\nstatic const Vtx ssl_seg7_vertex_07012D48[] = {\n    {{{   307,      0,   4915}, 0, {  2216,   4258}, {0xe9, 0x73, 0xd2, 0xff}}},\n    {{{   896,      0,   4915}, 0, {  4568,   4258}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   896,      0,   4096}, 0, {  4568,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   896,      0,   3072}, 0, {  4568,  -3098}, {0x1d, 0x77, 0xe3, 0xff}}},\n    {{{  -306,      0,   4915}, 0, {  -234,   4258}, {0x37, 0x6e, 0xe5, 0xff}}},\n    {{{  -895,      0,   4096}, 0, { -2586,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -895,      0,   3072}, 0, { -2586,  -3098}, {0xda, 0x72, 0xda, 0xff}}},\n    {{{  -895,      0,   4915}, 0, { -2586,   4258}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -895,      0,   2586}, 0, { -2586,  -5040}, {0xb7, 0x49, 0xb7, 0xff}}},\n    {{{   896,      0,   2586}, 0, {  4568,  -5040}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{  -306,      0,   6758}, 0, {  -234,  11616}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{   307,      0,   6758}, 0, {  2216,  11616}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{ -3071,      0,   -283}, 0, {  2012,  13142}, {0x65, 0x4c, 0x00, 0xff}}},\n    {{{ -3993,      0,  -4095}, 0, { -1666,  -2076}, {0x3d, 0x5c, 0x3d, 0xff}}},\n    {{{ -3993,      0,   -283}, 0, { -1666,  13142}, {0x26, 0x72, 0xda, 0xff}}},\n    {{{ -3071,      0,  -3276}, 0, {  2012,   1192}, {0x69, 0x46, 0x00, 0xff}}},\n};\n\n// 0x07012E48 - 0x07012E78\nstatic const Vtx ssl_seg7_vertex_07012E48[] = {\n    {{{ -3071,      0,  -3276}, 0, {  2012,   1192}, {0x69, 0x46, 0x00, 0xff}}},\n    {{{ -3071,      0,  -4095}, 0, {  2012,  -2076}, {0x49, 0x49, 0x49, 0xff}}},\n    {{{ -3993,      0,  -4095}, 0, { -1666,  -2076}, {0x3d, 0x5c, 0x3d, 0xff}}},\n};\n\n// 0x07012E78 - 0x07012F68\nstatic const Vtx ssl_seg7_vertex_07012E78[] = {\n    {{{   512,   4429,   -767}, 0, {  3034,  -3098}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{   512,   4429,  -1125}, 0, {  3034,  -4528}, {0x1d, 0x1d, 0x77, 0xff}}},\n    {{{  -204,   4429,  -1125}, 0, {   172,  -4528}, {0xe9, 0x65, 0x49, 0xff}}},\n    {{{   387,   4815,   -409}, 0, {     0,    990}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{   643,   4815,   -409}, 0, {   990,    990}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{   643,   4815,  -1125}, 0, {   990,  -1872}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{   387,   4815,  -1125}, 0, {     0,  -1872}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{   387,   4429,   -716}, 0, {  2534,  -2894}, {0xe5, 0x37, 0x6e, 0xff}}},\n    {{{   131,   4429,   -767}, 0, {  1512,  -3098}, {0x54, 0x54, 0xd6, 0xff}}},\n    {{{   131,   4429,   -716}, 0, {  1512,  -2894}, {0x33, 0x33, 0x67, 0xff}}},\n    {{{   387,   4429,   -767}, 0, {  2534,  -3098}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{  -665,   3840,    922}, 0, { -1666,   3646}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{  -665,   3840,   -716}, 0, { -1666,  -2894}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{ -1074,   3840,   -716}, 0, { -3300,  -2894}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{ -1074,   3840,    922}, 0, { -3300,   3646}, {0xa7, 0x59, 0x00, 0xff}}},\n};\n\n// 0x07012F68 - 0x07013068\nstatic const Vtx ssl_seg7_vertex_07012F68[] = {\n    {{{  -204,   4429,   -767}, 0, {   172,  -3098}, {0xd9, 0x4d, 0xa4, 0xff}}},\n    {{{  -204,   4429,  -1125}, 0, {   172,  -4528}, {0xe9, 0x65, 0x49, 0xff}}},\n    {{{  -665,   4045,  -1125}, 0, { -1666,  -4528}, {0xd2, 0x5c, 0x49, 0xff}}},\n    {{{   512,   4429,   -767}, 0, {  3034,  -3098}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{ -1535,   3942,    922}, 0, { -5140,   3646}, {0x70, 0x38, 0xee, 0xff}}},\n    {{{   102,   3942,   1229}, 0, {  1398,   4872}, {0xbd, 0x65, 0x21, 0xff}}},\n    {{{  1536,   3942,    922}, 0, {  7122,   3646}, {0xa2, 0x46, 0xd1, 0xff}}},\n    {{{   102,   3942,   1434}, 0, {  1398,   5690}, {0xe5, 0x6e, 0xc9, 0xff}}},\n    {{{  1536,   3942,   1536}, 0, {  7122,   6098}, {0xd6, 0x54, 0xac, 0xff}}},\n    {{{  -101,   3942,   1434}, 0, {   582,   5690}, {0x54, 0x54, 0xd6, 0xff}}},\n    {{{ -1535,   3942,   1536}, 0, { -5140,   6098}, {0x1d, 0x77, 0xe3, 0xff}}},\n    {{{  -101,   3942,   1229}, 0, {   582,   4872}, {0x21, 0x65, 0x43, 0xff}}},\n    {{{  -665,   4045,   -767}, 0, { -1666,  -3098}, {0xb3, 0x51, 0xc6, 0xff}}},\n    {{{  -665,   4045,   -716}, 0, { -1666,  -2894}, {0xe5, 0x37, 0x6e, 0xff}}},\n    {{{ -1535,   4045,  -1125}, 0, { -5140,  -4528}, {0x43, 0x65, 0x21, 0xff}}},\n    {{{ -1535,   4045,   -716}, 0, { -5140,  -2894}, {0x72, 0x26, 0x26, 0xff}}},\n};\n\n// 0x07013068 - 0x07013158\nstatic const Vtx ssl_seg7_vertex_07013068[] = {\n    {{{  -306,    845,   4915}, 0, {  -234,  -3916}, {0x1b, 0x92, 0xc9, 0xff}}},\n    {{{   -76,    845,   6528}, 0, {   684,   2522}, {0x1d, 0x89, 0xe3, 0xff}}},\n    {{{  -306,    845,   6758}, 0, {  -234,   3440}, {0x54, 0xac, 0xd6, 0xff}}},\n    {{{  1178,   1152,   2560}, 0, { 13868,   3032}, {0x38, 0x8f, 0x00, 0xff}}},\n    {{{ -1689,   1152,   2099}, 0, {  2420,   1192}, {0x1d, 0x89, 0xe3, 0xff}}},\n    {{{  1178,   1152,   2099}, 0, { 13868,   1192}, {0x65, 0xdf, 0xbd, 0xff}}},\n    {{{ -2201,   1152,   2560}, 0, {   376,   3032}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{ -2201,   1152,   -844}, 0, {   376, -10558}, {0xda, 0x8e, 0xda, 0xff}}},\n    {{{ -1689,   1152,   -537}, 0, {  2420,  -9332}, {0x3d, 0xa4, 0x3d, 0xff}}},\n    {{{ -1689,   1152,   -537}, 0, { -2688,    888}, {0x3d, 0xa4, 0x3d, 0xff}}},\n    {{{ -2201,   1152,   -844}, 0, { -4732,   -338}, {0xda, 0x8e, 0xda, 0xff}}},\n    {{{   205,   1152,   -844}, 0, {  4874,   -338}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{   205,   1152,   -537}, 0, {  4874,    888}, {0x49, 0xb7, 0x49, 0xff}}},\n    {{{    77,    845,   6528}, 0, {  1296,   2522}, {0xc3, 0xa4, 0xc3, 0xff}}},\n    {{{   307,    845,   6758}, 0, {  2216,   3440}, {0xdf, 0x9b, 0xbd, 0xff}}},\n};\n\n// 0x07013158 - 0x07013248\nstatic const Vtx ssl_seg7_vertex_07013158[] = {\n    {{{   512,    435,  -3685}, 0, {  2012,    582}, {0xeb, 0x44, 0x68, 0xff}}},\n    {{{   512,    461,  -3685}, 0, {  2012,    582}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -511,    461,  -3685}, 0, { -2074,    582}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{   307,    845,   4915}, 0, {  2216,  -3916}, {0xbd, 0x9b, 0xdf, 0xff}}},\n    {{{   307,    845,   6758}, 0, {  2216,   3440}, {0xdf, 0x9b, 0xbd, 0xff}}},\n    {{{    77,    845,   6528}, 0, {  1296,   2522}, {0xc3, 0xa4, 0xc3, 0xff}}},\n    {{{    77,    845,   6374}, 0, {  1296,   1908}, {0xda, 0x8e, 0x26, 0xff}}},\n    {{{  -306,    845,   4915}, 0, {  -234,  -3916}, {0x1b, 0x92, 0xc9, 0xff}}},\n    {{{   -76,    845,   6374}, 0, {   684,   1908}, {0x49, 0xb7, 0x49, 0xff}}},\n    {{{   -76,    845,   6528}, 0, {   684,   2522}, {0x1d, 0x89, 0xe3, 0xff}}},\n    {{{   819,    845,   4915}, 0, {  4260,   -850}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{  -818,    845,   4915}, 0, { -2278,   -850}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{  -818,    845,   3994}, 0, { -2278,  -4528}, {0x21, 0xbd, 0x9b, 0xff}}},\n    {{{   819,    845,   3994}, 0, {  4260,  -4528}, {0xbd, 0xdf, 0x9b, 0xff}}},\n    {{{  -511,    435,  -3685}, 0, { -2074,    582}, {0x0c, 0x56, 0x5c, 0xff}}},\n};\n\n// 0x07013248 - 0x07013338\nstatic const Vtx ssl_seg7_vertex_07013248[] = {\n    {{{   512,    538,  -3833}, 0, {  2012,     -8}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -511,    563,  -3833}, 0, { -2074,     -8}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -511,    538,  -3833}, 0, { -2074,     -8}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{   512,    461,  -3722}, 0, {  2012,    434}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -511,    486,  -3722}, 0, { -2074,    434}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -511,    461,  -3722}, 0, { -2074,    434}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{   512,    486,  -3722}, 0, {  2012,    434}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{   512,    486,  -3759}, 0, {  2012,    286}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -511,    512,  -3759}, 0, { -2074,    286}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -511,    486,  -3759}, 0, { -2074,    286}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{   512,    512,  -3759}, 0, {  2012,    286}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{   512,    512,  -3796}, 0, {  2012,    140}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -511,    538,  -3796}, 0, { -2074,    140}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -511,    512,  -3796}, 0, { -2074,    140}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{   512,    538,  -3796}, 0, {  2012,    140}, {0x00, 0x71, 0x38, 0xff}}},\n};\n\n// 0x07013338 - 0x07013428\nstatic const Vtx ssl_seg7_vertex_07013338[] = {\n    {{{   512,    614,  -3943}, 0, {  2012,   -448}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{   512,    640,  -3943}, 0, {  2012,   -448}, {0xbd, 0x65, 0x21, 0xff}}},\n    {{{  -511,    640,  -3943}, 0, { -2074,   -448}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{   512,    538,  -3833}, 0, {  2012,     -8}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{   512,    563,  -3833}, 0, {  2012,     -8}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -511,    563,  -3833}, 0, { -2074,     -8}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{   512,    563,  -3870}, 0, {  2012,   -154}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{   512,    589,  -3870}, 0, {  2012,   -154}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -511,    589,  -3870}, 0, { -2074,   -154}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -511,    563,  -3870}, 0, { -2074,   -154}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{   512,    589,  -3907}, 0, {  2012,   -302}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{   512,    614,  -3907}, 0, {  2012,   -302}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -511,    614,  -3907}, 0, { -2074,   -302}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -511,    589,  -3907}, 0, { -2074,   -302}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -511,    614,  -3943}, 0, { -2074,   -448}, {0x00, 0x71, 0x38, 0xff}}},\n};\n\n// 0x07013428 - 0x07013528\nstatic const Vtx ssl_seg7_vertex_07013428[] = {\n    {{{ -1535,   5222,   1536}, 0, { -5140,   6098}, {0x33, 0x99, 0xcd, 0xff}}},\n    {{{   410,   5222,    666}, 0, {  2626,   2624}, {0xc3, 0xa4, 0xc3, 0xff}}},\n    {{{  1536,   5222,   1536}, 0, {  7122,   6098}, {0xbd, 0x9b, 0xdf, 0xff}}},\n    {{{  -409,   5734,   -153}, 0, {  -644,   -646}, {0x1d, 0x89, 0x1d, 0xff}}},\n    {{{  -101,   5734,    358}, 0, {   582,   1396}, {0x26, 0x8e, 0xda, 0xff}}},\n    {{{  -409,   5734,    666}, 0, {  -644,   2624}, {0x3d, 0xa4, 0xc3, 0xff}}},\n    {{{   102,   5734,    358}, 0, {  1398,   1396}, {0xc3, 0xa4, 0xc3, 0xff}}},\n    {{{   410,   5734,    666}, 0, {  2626,   2624}, {0xda, 0x8e, 0xda, 0xff}}},\n    {{{   102,   5734,    154}, 0, {  1398,    582}, {0xe3, 0x89, 0x1d, 0xff}}},\n    {{{   410,   5734,   -153}, 0, {  2626,   -646}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{  -101,   5734,    154}, 0, {   582,    582}, {0x49, 0xb7, 0x49, 0xff}}},\n    {{{   410,   5222,   -153}, 0, {  2626,   -646}, {0xda, 0x8e, 0x26, 0xff}}},\n    {{{  1536,   5222,  -1125}, 0, {  7122,  -4528}, {0xc3, 0xa4, 0x3d, 0xff}}},\n    {{{  1946,   3712,   1536}, 0, {  8758,   9164}, {0xd9, 0x89, 0xed, 0xff}}},\n    {{{  1536,   3712,    922}, 0, {  7122,   6712}, {0xe3, 0x89, 0xe3, 0xff}}},\n    {{{  1536,   3712,  -1125}, 0, {  7122,  -1462}, {0xc3, 0xa4, 0x3d, 0xff}}},\n};\n\n// 0x07013528 - 0x07013628\nstatic const Vtx ssl_seg7_vertex_07013528[] = {\n    {{{  1536,   5222,  -1125}, 0, {  7122,  -4528}, {0xc3, 0xa4, 0x3d, 0xff}}},\n    {{{   410,   5222,   -153}, 0, {  2626,   -646}, {0xda, 0x8e, 0x26, 0xff}}},\n    {{{  -409,   5222,   -153}, 0, {  -644,   -646}, {0x33, 0x99, 0x33, 0xff}}},\n    {{{ -1535,   5222,  -1125}, 0, { -5140,  -4528}, {0x1b, 0xc9, 0x6e, 0xff}}},\n    {{{ -1535,   5222,   1536}, 0, { -5140,   6098}, {0x33, 0x99, 0xcd, 0xff}}},\n    {{{  -409,   5222,    666}, 0, {  -644,   2624}, {0x33, 0x99, 0xcd, 0xff}}},\n    {{{   410,   5222,    666}, 0, {  2626,   2624}, {0xc3, 0xa4, 0xc3, 0xff}}},\n    {{{ -1074,   3712,    922}, 0, { -3300,   6712}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  -665,   3712,   -716}, 0, { -1666,    172}, {0x49, 0xb7, 0x49, 0xff}}},\n    {{{  -665,   3712,    922}, 0, { -1666,   6712}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{ -1074,   3712,   -716}, 0, { -3300,    172}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  1946,   3712,   1536}, 0, {  8758,   9164}, {0xd9, 0x89, 0xed, 0xff}}},\n    {{{  1536,   3712,  -1125}, 0, {  7122,  -1462}, {0xc3, 0xa4, 0x3d, 0xff}}},\n    {{{  1946,   3712,  -2612}, 0, {  8758,  -7398}, {0xe5, 0x92, 0x37, 0xff}}},\n    {{{   102,   3712,   1229}, 0, {  1398,   7938}, {0xdf, 0x9b, 0x43, 0xff}}},\n    {{{  1536,   3712,    922}, 0, {  7122,   6712}, {0xe3, 0x89, 0xe3, 0xff}}},\n};\n\n// 0x07013628 - 0x07013728\nstatic const Vtx ssl_seg7_vertex_07013628[] = {\n    {{{  1946,   3712,   1536}, 0, {  8758,   9164}, {0xd9, 0x89, 0xed, 0xff}}},\n    {{{   102,   3712,   1434}, 0, {  1398,   8756}, {0xac, 0xac, 0xd6, 0xff}}},\n    {{{   102,   3712,   1229}, 0, {  1398,   7938}, {0xdf, 0x9b, 0x43, 0xff}}},\n    {{{  1536,   3712,    922}, 0, {  7122,   6712}, {0xe3, 0x89, 0xe3, 0xff}}},\n    {{{  -101,   3712,   1229}, 0, {   582,   7938}, {0x43, 0x9b, 0x21, 0xff}}},\n    {{{ -1535,   3712,    922}, 0, { -5140,   6712}, {0x17, 0x8d, 0xd2, 0xff}}},\n    {{{  -101,   3712,   1434}, 0, {   582,   8756}, {0x1b, 0x92, 0xc9, 0xff}}},\n    {{{ -1945,   3712,   1536}, 0, { -6776,   9164}, {0x2f, 0xba, 0xa2, 0xff}}},\n    {{{ -1945,   3712,  -2612}, 0, { -6776,  -7398}, {0x1d, 0x89, 0x1d, 0xff}}},\n    {{{  1946,   3712,  -2612}, 0, {  8758,  -7398}, {0xe5, 0x92, 0x37, 0xff}}},\n    {{{  1536,   3712,  -1125}, 0, {  7122,  -1462}, {0xc3, 0xa4, 0x3d, 0xff}}},\n    {{{   512,   3712,  -1125}, 0, {  3034,  -1462}, {0x37, 0x92, 0x1b, 0xff}}},\n    {{{  -204,   3072,   1536}, 0, { -1870,   2010}, {0xda, 0x8e, 0xda, 0xff}}},\n    {{{  3174,   3072,   2560}, 0, { 11618,  -2076}, {0x00, 0x88, 0xd8, 0xff}}},\n    {{{     0,   3072,   2560}, 0, { -1052,  -2076}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{  -112,   3712,   -767}, 0, {   540,      0}, {0x18, 0x86, 0x18, 0xff}}},\n};\n\n// 0x07013728 - 0x07013818\nstatic const Vtx ssl_seg7_vertex_07013728[] = {\n    {{{ -1945,   3712,  -2612}, 0, { -6776,  -7398}, {0x1d, 0x89, 0x1d, 0xff}}},\n    {{{ -1535,   3712,   -716}, 0, { -5140,    172}, {0x3d, 0xa4, 0x3d, 0xff}}},\n    {{{ -1535,   3712,    922}, 0, { -5140,   6712}, {0x17, 0x8d, 0xd2, 0xff}}},\n    {{{  -112,   3712,   -767}, 0, {   540,      0}, {0x18, 0x86, 0x18, 0xff}}},\n    {{{  -112,   3712,   -716}, 0, {   540,    172}, {0x43, 0xdf, 0x65, 0xff}}},\n    {{{   512,   3712,  -1125}, 0, {  3034,  -1462}, {0x37, 0x92, 0x1b, 0xff}}},\n    {{{   512,   3712,   -716}, 0, {  3034,    172}, {0x21, 0xbd, 0x65, 0xff}}},\n    {{{   113,   3712,   -767}, 0, {  1440,      0}, {0xdf, 0x9b, 0x43, 0xff}}},\n    {{{   113,   3712,   -716}, 0, {  1440,    172}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{     0,   3072,   2560}, 0, { -1052,  -2076}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{ -1945,   3072,   2560}, 0, { -8820,  -2076}, {0x54, 0xd6, 0xac, 0xff}}},\n    {{{ -1945,   3072,   1536}, 0, { -8820,   2010}, {0x33, 0x99, 0xcd, 0xff}}},\n    {{{  -204,   3072,   1536}, 0, { -1870,   2010}, {0xda, 0x8e, 0xda, 0xff}}},\n    {{{   205,   3072,   1126}, 0, {  -234,   3646}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{   205,   3072,   1459}, 0, {  -234,   2316}, {0x33, 0x99, 0xcd, 0xff}}},\n};\n\n// 0x07013818 - 0x07013918\nstatic const Vtx ssl_seg7_vertex_07013818[] = {\n    {{{  -204,   3072,   1536}, 0, { -1870,   2010}, {0xda, 0x8e, 0xda, 0xff}}},\n    {{{  1536,   3072,   1459}, 0, {  5078,   2316}, {0xcd, 0x99, 0xcd, 0xff}}},\n    {{{  3174,   3072,   2560}, 0, { 11618,  -2076}, {0x00, 0x88, 0xd8, 0xff}}},\n    {{{   205,   3072,   1459}, 0, {  -234,   2316}, {0x33, 0x99, 0xcd, 0xff}}},\n    {{{  -204,   3072,   1126}, 0, { -1870,   3646}, {0xb7, 0xb7, 0xb7, 0xff}}},\n    {{{   205,   3072,   1126}, 0, {  -234,   3646}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{  1536,   3072,   1459}, 0, { -3096,  -4836}, {0xcd, 0x99, 0xcd, 0xff}}},\n    {{{  1536,   3072,  -1998}, 0, { -3096,   8968}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{  3174,   3072,  -1998}, 0, {  3442,   8968}, {0xd6, 0xac, 0x54, 0xff}}},\n    {{{  3174,   3072,   2560}, 0, {  3442,  -9230}, {0x00, 0x88, 0xd8, 0xff}}},\n    {{{  2970,   2560,   2970}, 0, {  7736,    582}, {0xbd, 0x9b, 0xdf, 0xff}}},\n    {{{     0,   2560,   3174}, 0, { -4118,   1396}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{  3174,   2560,   2560}, 0, {  8552,  -1054}, {0x00, 0x97, 0xba, 0xff}}},\n    {{{ -2764,   2560,  -2612}, 0, { -1870,  -4332}, {0x54, 0xac, 0x2a, 0xff}}},\n    {{{ -1945,   2560,  -2612}, 0, {  1398,  -4332}, {0x54, 0xd6, 0x54, 0xff}}},\n    {{{ -1945,   2560,    311}, 0, {  1398,   7340}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07013918 - 0x070139F8\nstatic const Vtx ssl_seg7_vertex_07013918[] = {\n    {{{ -2764,   2560,  -2612}, 0, { -1870,  -4332}, {0x54, 0xac, 0x2a, 0xff}}},\n    {{{ -1945,   2560,    311}, 0, {  1398,   7340}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2764,   2560,    311}, 0, { -1870,   7340}, {0x69, 0xba, 0x00, 0xff}}},\n    {{{ -1945,   2560,    311}, 0, {   376,  -7988}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1945,   2560,   2560}, 0, {   376,    990}, {0x33, 0x99, 0xcd, 0xff}}},\n    {{{ -2764,   2560,   3174}, 0, { -2892,   3440}, {0x33, 0x99, 0xcd, 0xff}}},\n    {{{ -2764,   2560,    311}, 0, { -2892,  -7988}, {0x69, 0xba, 0x00, 0xff}}},\n    {{{     0,   2560,   2560}, 0, {  8144,    990}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{     0,   2560,   3174}, 0, {  8144,   3440}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{  3174,   2560,   2560}, 0, {  8552,  -1054}, {0x00, 0x97, 0xba, 0xff}}},\n    {{{  3174,   2560,   2970}, 0, {  8552,    582}, {0x00, 0xc8, 0x8f, 0xff}}},\n    {{{  2970,   2560,   2970}, 0, {  7736,    582}, {0xbd, 0x9b, 0xdf, 0xff}}},\n    {{{  2970,   2560,   3174}, 0, {  7736,   1396}, {0xb7, 0xb7, 0xb7, 0xff}}},\n    {{{     0,   2560,   3174}, 0, { -4118,   1396}, {0x00, 0xa7, 0xa7, 0xff}}},\n};\n\n// 0x070139F8 - 0x07013AD8\nstatic const Vtx ssl_seg7_vertex_070139F8[] = {\n    {{{  1280,   1792,  -2612}, 0, {  5078,   -244}, {0x33, 0x99, 0x33, 0xff}}},\n    {{{  1280,   1792,  -1998}, 0, {  5078,   2206}, {0x49, 0xb7, 0x49, 0xff}}},\n    {{{   922,   1792,  -1998}, 0, {  3648,   2206}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{     0,   2560,   3174}, 0, { -4118,   1396}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{     0,   2560,   2560}, 0, { -4118,  -1054}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{  3174,   2560,   2560}, 0, {  8552,  -1054}, {0x00, 0x97, 0xba, 0xff}}},\n    {{{ -2149,   1792,  -1998}, 0, { -8614,   2206}, {0x1d, 0x89, 0x1d, 0xff}}},\n    {{{     0,   1792,  -3022}, 0, {     0,  -1880}, {0x00, 0x97, 0x46, 0xff}}},\n    {{{   666,   1792,  -2612}, 0, {  2626,   -244}, {0x33, 0x99, 0x33, 0xff}}},\n    {{{   666,   1792,  -1998}, 0, {  2626,   2206}, {0x33, 0xcd, 0x67, 0xff}}},\n    {{{ -3173,   1792,  -3022}, 0, {-12702,  -1880}, {0x3d, 0xa4, 0x3d, 0xff}}},\n    {{{  3174,   1792,  -3022}, 0, { 12640,  -1880}, {0xd4, 0x92, 0x2c, 0xff}}},\n    {{{   922,   1792,  -2612}, 0, {  3648,   -244}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{  1536,   1792,  -2612}, 0, {  6100,   -244}, {0xcd, 0x99, 0x33, 0xff}}},\n};\n\n// 0x07013AD8 - 0x07013BD8\nstatic const Vtx ssl_seg7_vertex_07013AD8[] = {\n    {{{   770,   1152,  -3841}, 0, { 12240,  -7194}, {0xcd, 0x99, 0x33, 0xff}}},\n    {{{  -511,   1152,  -3841}, 0, {  7122,  -7194}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -511,   1152,  -4148}, 0, {  7122,  -8420}, {0x33, 0x99, 0x33, 0xff}}},\n    {{{  3174,   1792,  -3022}, 0, { 12640,  -1880}, {0xd4, 0x92, 0x2c, 0xff}}},\n    {{{  3174,   1792,  -1998}, 0, { 12640,   2206}, {0x8e, 0xda, 0x26, 0xff}}},\n    {{{  1536,   1792,  -1998}, 0, {  6100,   2206}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{  1536,   1792,  -2612}, 0, {  6100,   -244}, {0xcd, 0x99, 0x33, 0xff}}},\n    {{{ -3173,   1792,  -3022}, 0, { -2482,  -2902}, {0x3d, 0xa4, 0x3d, 0xff}}},\n    {{{ -2149,   1792,  -1998}, 0, {  1604,   1184}, {0x1d, 0x89, 0x1d, 0xff}}},\n    {{{ -2149,   1792,    311}, 0, {  1604,  10406}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{ -3173,   1792,    311}, 0, { -2482,  10406}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2149,   1792,    311}, 0, {   582,  -5944}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{ -2149,   1792,   2560}, 0, {   582,   3032}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{ -3173,   1792,   2560}, 0, { -3504,   3032}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{ -3173,   1792,    311}, 0, { -3504,  -5944}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   770,   1152,  -4148}, 0, { 12240,  -8420}, {0xac, 0xd6, 0x54, 0xff}}},\n};\n\n// 0x07013BD8 - 0x07013CC8\nstatic const Vtx ssl_seg7_vertex_07013BD8[] = {\n    {{{     0,   1152,  -3022}, 0, {  9166,  -3924}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{ -3583,   1152,  -3841}, 0, { -5140,  -7194}, {0x37, 0x92, 0x1b, 0xff}}},\n    {{{     0,   1152,  -3841}, 0, {  9166,  -7194}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3173,   1152,  -3022}, 0, { -3504,  -3924}, {0x33, 0x99, 0x33, 0xff}}},\n    {{{ -3173,   1152,      0}, 0, { -3504,   8142}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{ -3583,   1152,      0}, 0, { -5140,   8142}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3584,   1152,  -3841}, 0, {  7122,  -6172}, {0xdf, 0x9b, 0x43, 0xff}}},\n    {{{  3174,   1152,  -3022}, 0, {  5486,  -2902}, {0xda, 0x8e, 0x26, 0xff}}},\n    {{{     0,   1152,  -3022}, 0, { -7184,  -2902}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{     0,   1152,  -3841}, 0, { -7184,  -6172}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3584,   1152,      0}, 0, {  7122,   9164}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3584,   1152,      0}, 0, {  4056, -10252}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3584,   1152,   3584}, 0, {  4056,   4054}, {0xe3, 0x89, 0xe3, 0xff}}},\n    {{{  3174,   1152,   2560}, 0, {  2420,      0}, {0x00, 0x84, 0xe8, 0xff}}},\n    {{{  3174,   1152,      0}, 0, {  5486,   9164}, {0x8b, 0xd1, 0x00, 0xff}}},\n};\n\n// 0x07013CC8 - 0x07013DC8\nstatic const Vtx ssl_seg7_vertex_07013CC8[] = {\n    {{{ -3173,   1152,      0}, 0, {  -438,  -8208}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{ -3173,   1152,   2560}, 0, {  -438,   2010}, {0x26, 0x8e, 0xda, 0xff}}},\n    {{{ -3583,   1152,   3584}, 0, { -2074,   6098}, {0x3d, 0xa4, 0xc3, 0xff}}},\n    {{{ -3583,   1152,      0}, 0, { -2074,  -8208}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1125,   1152,   3584}, 0, {  7736,   6098}, {0x33, 0x99, 0xcd, 0xff}}},\n    {{{ -1125,   1152,   2560}, 0, {  7736,   2010}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3584,   1152,      0}, 0, {  4056, -10252}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3174,   1152,   2560}, 0, {  2420,      0}, {0x00, 0x84, 0xe8, 0xff}}},\n    {{{  3174,   1152,      0}, 0, {  2420, -10252}, {0x8b, 0xd1, 0x00, 0xff}}},\n    {{{  2970,   1152,   2970}, 0, {  1604,   1602}, {0xa2, 0xba, 0xd1, 0xff}}},\n    {{{  3584,   1152,   3584}, 0, {  4056,   4054}, {0xe3, 0x89, 0xe3, 0xff}}},\n    {{{  1126,   1152,   3584}, 0, { -5754,   4054}, {0xcd, 0x99, 0xcd, 0xff}}},\n    {{{  2970,   1152,   2765}, 0, {  1604,    786}, {0xdf, 0x9b, 0x43, 0xff}}},\n    {{{  2765,   1152,   2970}, 0, {   786,   1602}, {0x2a, 0xac, 0xac, 0xff}}},\n    {{{  2765,   1152,   2765}, 0, {   786,    786}, {0x37, 0x92, 0x1b, 0xff}}},\n    {{{  1126,   1152,   2560}, 0, { -5754,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07013DC8 - 0x07013EC8\nstatic const Vtx ssl_seg7_vertex_07013DC8[] = {\n    {{{ -1125,   1152,   2560}, 0, { -4526,  -2076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1126,   1152,   2560}, 0, {  4464,  -2076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1126,   1152,   3994}, 0, {  4464,   3646}, {0xdf, 0xbd, 0x9b, 0xff}}},\n    {{{ -1125,   1152,   3994}, 0, { -4526,   3646}, {0x43, 0xdf, 0x9b, 0xff}}},\n    {{{  3584,   1152,   3584}, 0, {  4056,   4054}, {0xe3, 0x89, 0xe3, 0xff}}},\n    {{{  2970,   1152,   2765}, 0, {  1604,    786}, {0xdf, 0x9b, 0x43, 0xff}}},\n    {{{  3174,   1152,   2560}, 0, {  2420,      0}, {0x00, 0x84, 0xe8, 0xff}}},\n    {{{  3072,    512,  -3276}, 0, { -2074,   2214}, {0xda, 0x8e, 0x26, 0xff}}},\n    {{{  3994,    512,   -283}, 0, {  1604,  14164}, {0xcd, 0x99, 0xcd, 0xff}}},\n    {{{  3072,    512,   -283}, 0, { -2074,  14164}, {0xac, 0xd6, 0x54, 0xff}}},\n    {{{  3994,    512,  -4095}, 0, {  1604,  -1054}, {0xd4, 0x92, 0x2c, 0xff}}},\n    {{{  1102,    512,  -3685}, 0, { -4830,    582}, {0x49, 0xb7, 0x49, 0xff}}},\n    {{{  1102,    512,  -4095}, 0, { -4830,  -1054}, {0x49, 0xb7, 0x49, 0xff}}},\n    {{{  3994,    512,  -4095}, 0, {  6714,  -1054}, {0xd4, 0x92, 0x2c, 0xff}}},\n    {{{  3072,    512,  -3276}, 0, {  3034,   2214}, {0xda, 0x8e, 0x26, 0xff}}},\n    {{{  1307,    512,  -3276}, 0, { -4012,   2214}, {0xb7, 0xb7, 0x49, 0xff}}},\n};\n\n// 0x07013EC8 - 0x07013FC8\nstatic const Vtx ssl_seg7_vertex_07013EC8[] = {\n    {{{  3994,    512,  -4095}, 0, {  6714,  -1054}, {0xd4, 0x92, 0x2c, 0xff}}},\n    {{{  1307,    512,  -3276}, 0, { -4012,   2214}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{  1307,    512,  -3685}, 0, { -4012,    582}, {0xcd, 0x99, 0x33, 0xff}}},\n    {{{  1102,    512,  -3685}, 0, { -4830,    582}, {0x49, 0xb7, 0x49, 0xff}}},\n    {{{ -3583,    512,   -283}, 0, {   990,  14164}, {0x54, 0xac, 0xd6, 0xff}}},\n    {{{ -3993,    512,  -4095}, 0, {  -644,  -1054}, {0x26, 0x8e, 0x26, 0xff}}},\n    {{{ -3583,    512,  -3841}, 0, {   990,    -40}, {0x21, 0x9b, 0x43, 0xff}}},\n    {{{ -3993,    512,   -283}, 0, {  -644,  14164}, {0x54, 0xd6, 0xac, 0xff}}},\n    {{{ -1125,    512,   3584}, 0, { 10802,      0}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{ -1125,    512,   4096}, 0, { 10802,   2010}, {0xb7, 0xb7, 0xb7, 0xff}}},\n    {{{ -3993,    512,   4096}, 0, {  -644,   2010}, {0x3d, 0xa4, 0xc3, 0xff}}},\n    {{{ -1101,    512,  -4095}, 0, { 10900,  -1054}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{ -1101,    512,  -3841}, 0, { 10900,    -40}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{  2560,    512,   3584}, 0, { -3096,   2010}, {0xc8, 0x8f, 0x00, 0xff}}},\n    {{{  3072,    512,   2560}, 0, { -1052,  -2076}, {0xe5, 0x92, 0xc9, 0xff}}},\n    {{{  3994,    512,   4096}, 0, {  2626,   4054}, {0xda, 0x8e, 0xda, 0xff}}},\n};\n\n// 0x07013FC8 - 0x07014098\nstatic const Vtx ssl_seg7_vertex_07013FC8[] = {\n    {{{  2560,    512,   3584}, 0, { -3096,   2010}, {0xc8, 0x8f, 0x00, 0xff}}},\n    {{{  3994,    512,   4096}, 0, {  2626,   4054}, {0xda, 0x8e, 0xda, 0xff}}},\n    {{{  1126,    512,   4096}, 0, { -8820,   4054}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{  2560,    512,   2560}, 0, { -3096,  -2076}, {0xb7, 0xb7, 0xb7, 0xff}}},\n    {{{  3072,    512,   2560}, 0, { -1052,  -2076}, {0xe5, 0x92, 0xc9, 0xff}}},\n    {{{  1126,    512,   3584}, 0, { -8820,   2010}, {0xb7, 0xb7, 0xb7, 0xff}}},\n    {{{  3994,    512,    473}, 0, {  2626, -10408}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{  3072,    512,    473}, 0, { -1052, -10408}, {0x99, 0xcd, 0xcd, 0xff}}},\n    {{{ -3583,    512,   3584}, 0, {   990,      0}, {0x26, 0x8e, 0xda, 0xff}}},\n    {{{ -3993,    512,    473}, 0, {  -644, -12452}, {0x33, 0x99, 0x33, 0xff}}},\n    {{{ -3583,    512,    473}, 0, {   990, -12452}, {0x54, 0xd6, 0x54, 0xff}}},\n    {{{ -3993,    512,   4096}, 0, {  -644,   2010}, {0x3d, 0xa4, 0xc3, 0xff}}},\n    {{{ -1125,    512,   3584}, 0, { 10802,      0}, {0x49, 0xb7, 0xb7, 0xff}}},\n};\n\n// 0x07014098 - 0x07014188\nstatic const Vtx ssl_seg7_vertex_07014098[] = {\n    {{{    10,   3200,   1341}, 0, {   458,  20406}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{    -9,   4122,   1341}, 0, {     0, -16384}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{    -9,   3200,   1341}, 0, {     0,  20406}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{    -9,   4122,   1321}, 0, {   990,    458}, {0xac, 0x54, 0xd6, 0xff}}},\n    {{{    -9,   4122,   1341}, 0, {   500,    458}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{    10,   4122,   1341}, 0, {   500,      0}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{    10,   4122,   1321}, 0, {   990,      0}, {0x33, 0x33, 0x99, 0xff}}},\n    {{{    10,   4122,   1321}, 0, {     0, -18428}, {0x33, 0x33, 0x99, 0xff}}},\n    {{{    10,   3200,   1321}, 0, {     0,  18362}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{    -9,   3200,   1321}, 0, {   458,  18362}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{    -9,   4122,   1321}, 0, {   458, -18428}, {0xac, 0x54, 0xd6, 0xff}}},\n    {{{    10,   4122,   1341}, 0, {     0, -16384}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{    10,   3200,   1341}, 0, {     0,  20406}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{    10,   3200,   1321}, 0, {   458,  20406}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{    10,   4122,   1321}, 0, {   458, -16384}, {0x33, 0x33, 0x99, 0xff}}},\n};\n\n// 0x07014188 - 0x07014278\nstatic const Vtx ssl_seg7_vertex_07014188[] = {\n    {{{  2877,   1408,   2857}, 0, {     0, -14340}, {0x33, 0x33, 0x99, 0xff}}},\n    {{{  2857,    640,   2857}, 0, {   458,  16318}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  2857,   1408,   2857}, 0, {   458, -14340}, {0xac, 0x54, 0xd6, 0xff}}},\n    {{{    10,   3200,   1341}, 0, {   458,  20406}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{    10,   4122,   1341}, 0, {   458, -16384}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{    -9,   4122,   1341}, 0, {     0, -16384}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{    -9,   4122,   1321}, 0, {     0, -18428}, {0xac, 0x54, 0xd6, 0xff}}},\n    {{{    -9,   3200,   1321}, 0, {     0,  18362}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{    -9,   3200,   1341}, 0, {   458,  18362}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{    -9,   4122,   1341}, 0, {   458, -18428}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{  2857,   1408,   2857}, 0, {     0,    458}, {0xac, 0x54, 0xd6, 0xff}}},\n    {{{  2877,   1408,   2877}, 0, {   458,      0}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{  2877,   1408,   2857}, 0, {     0,      0}, {0x33, 0x33, 0x99, 0xff}}},\n    {{{  2857,   1408,   2877}, 0, {   458,    458}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{  2877,    640,   2857}, 0, {     0,  16318}, {0x71, 0x00, 0xc8, 0xff}}},\n};\n\n// 0x07014278 - 0x07014368\nstatic const Vtx ssl_seg7_vertex_07014278[] = {\n    {{{  1178,   1178,   2560}, 0, { -5548,   1192}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1178,   1152,   2099}, 0, { -3710,   1294}, {0x65, 0xdf, 0xbd, 0xff}}},\n    {{{  1178,   1178,   2150}, 0, { -3914,   1192}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2877,   1408,   2877}, 0, {     0, -14340}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{  2877,    640,   2857}, 0, {   458,  16318}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  2877,   1408,   2857}, 0, {   458, -14340}, {0x33, 0x33, 0x99, 0xff}}},\n    {{{  2877,    640,   2877}, 0, {     0,  16318}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  2877,    640,   2877}, 0, {   458,  16318}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  2857,   1408,   2877}, 0, {     0, -14340}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{  2857,    640,   2877}, 0, {     0,  16318}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  2877,   1408,   2877}, 0, {   458, -14340}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{  2857,   1408,   2857}, 0, {     0, -14340}, {0xac, 0x54, 0xd6, 0xff}}},\n    {{{  2857,    640,   2877}, 0, {   458,  16318}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  2857,   1408,   2877}, 0, {   458, -14340}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{  2857,    640,   2857}, 0, {     0,  16318}, {0xc8, 0x00, 0x8f, 0xff}}},\n};\n\n// 0x07014368 - 0x07014448\nstatic const Vtx ssl_seg7_vertex_07014368[] = {\n    {{{  1178,   1280,   2150}, 0, { -4732,  -4528}, {0x2a, 0x54, 0x54, 0xff}}},\n    {{{ -1689,   1280,   2099}, 0, {  6714,  -4324}, {0x3d, 0x5c, 0xc3, 0xff}}},\n    {{{ -1740,   1280,   2150}, 0, {  6918,  -4528}, {0xda, 0x72, 0x26, 0xff}}},\n    {{{  1178,   1178,   2560}, 0, { -5548,   1192}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1178,   1152,   2560}, 0, { -5548,   1294}, {0x38, 0x8f, 0x00, 0xff}}},\n    {{{  1178,   1152,   2099}, 0, { -3710,   1294}, {0x65, 0xdf, 0xbd, 0xff}}},\n    {{{  1178,   1178,   2150}, 0, { -3914,   1192}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1178,   1280,   2099}, 0, { -3710,    786}, {0x67, 0x33, 0xcd, 0xff}}},\n    {{{  1178,   1280,   2150}, 0, { -3914,    786}, {0x2a, 0x54, 0x54, 0xff}}},\n    {{{ -1740,   1229,   2150}, 0, { -2074,    888}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1178,   1280,   2150}, 0, {  9574,    684}, {0x2a, 0x54, 0x54, 0xff}}},\n    {{{ -1740,   1280,   2150}, 0, { -2074,    684}, {0xda, 0x72, 0x26, 0xff}}},\n    {{{  1178,   1229,   2150}, 0, {  9574,    888}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1178,   1280,   2099}, 0, { -4732,  -4324}, {0x67, 0x33, 0xcd, 0xff}}},\n};\n\n// 0x07014448 - 0x07014548\nstatic const Vtx ssl_seg7_vertex_07014448[] = {\n    {{{ -1740,   1280,   -588}, 0, {  6918,   6404}, {0xc3, 0x5c, 0xc3, 0xff}}},\n    {{{ -1689,   1280,   -537}, 0, {  6714,   6200}, {0x26, 0x72, 0x26, 0xff}}},\n    {{{   205,   1280,   -537}, 0, {  -848,   6200}, {0x3d, 0x5c, 0x3d, 0xff}}},\n    {{{ -1740,   1280,   2150}, 0, {  6918,  -4528}, {0xda, 0x72, 0x26, 0xff}}},\n    {{{ -1689,   1280,   2099}, 0, {  6714,  -4324}, {0x3d, 0x5c, 0xc3, 0xff}}},\n    {{{  1178,   1152,   2099}, 0, { -5754,   1294}, {0x65, 0xdf, 0xbd, 0xff}}},\n    {{{ -1689,   1152,   2099}, 0, {  5692,   1294}, {0x1d, 0x89, 0xe3, 0xff}}},\n    {{{ -1689,   1280,   2099}, 0, {  5692,    786}, {0x3d, 0x5c, 0xc3, 0xff}}},\n    {{{  1178,   1280,   2099}, 0, { -5754,    786}, {0x67, 0x33, 0xcd, 0xff}}},\n    {{{ -1689,   1152,   -537}, 0, {  6918,   1090}, {0x3d, 0xa4, 0x3d, 0xff}}},\n    {{{ -1689,   1280,   2099}, 0, { -3608,    582}, {0x3d, 0x5c, 0xc3, 0xff}}},\n    {{{ -1689,   1152,   2099}, 0, { -3608,   1090}, {0x1d, 0x89, 0xe3, 0xff}}},\n    {{{ -1689,   1280,   -537}, 0, {  6918,    582}, {0x26, 0x72, 0x26, 0xff}}},\n    {{{ -2201,   1280,   2560}, 0, {  8758,  -6164}, {0xc8, 0x71, 0x00, 0xff}}},\n    {{{ -2149,   1280,   -793}, 0, {  8552,   7222}, {0x1d, 0x77, 0x1d, 0xff}}},\n    {{{ -2201,   1280,   -844}, 0, {  8758,   7426}, {0xb7, 0x49, 0xb7, 0xff}}},\n};\n\n// 0x07014548 - 0x07014628\nstatic const Vtx ssl_seg7_vertex_07014548[] = {\n    {{{ -1740,   1280,   -588}, 0, {  6918,   6404}, {0xc3, 0x5c, 0xc3, 0xff}}},\n    {{{   205,   1280,   -537}, 0, {  -848,   6200}, {0x3d, 0x5c, 0x3d, 0xff}}},\n    {{{   154,   1280,   -588}, 0, {  -644,   6404}, {0xda, 0x72, 0xda, 0xff}}},\n    {{{ -1740,   1229,   2150}, 0, {  5282,    888}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1740,   1280,   2150}, 0, {  5282,    684}, {0xda, 0x72, 0x26, 0xff}}},\n    {{{ -1740,   1280,   -588}, 0, { -5652,    684}, {0xc3, 0x5c, 0xc3, 0xff}}},\n    {{{ -1740,   1229,   -588}, 0, { -5652,    888}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2149,   1229,   -793}, 0, {  8042,    888}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2149,   1280,   2560}, 0, { -5344,    684}, {0x6e, 0x37, 0xe5, 0xff}}},\n    {{{ -2149,   1229,   2560}, 0, { -5344,    888}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2149,   1280,   -793}, 0, {  8042,    684}, {0x1d, 0x77, 0x1d, 0xff}}},\n    {{{ -2201,   1280,   2560}, 0, {  8758,  -6164}, {0xc8, 0x71, 0x00, 0xff}}},\n    {{{ -2149,   1280,   2560}, 0, {  8552,  -6164}, {0x6e, 0x37, 0xe5, 0xff}}},\n    {{{ -2149,   1280,   -793}, 0, {  8552,   7222}, {0x1d, 0x77, 0x1d, 0xff}}},\n};\n\n// 0x07014628 - 0x07014728\nstatic const Vtx ssl_seg7_vertex_07014628[] = {\n    {{{   205,   1280,   -537}, 0, {  7020,    684}, {0x3d, 0x5c, 0x3d, 0xff}}},\n    {{{   205,   1152,   -844}, 0, {  8246,   1192}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{   205,   1280,   -844}, 0, {  8246,    684}, {0x1d, 0x77, 0xe3, 0xff}}},\n    {{{ -2201,   1280,   -844}, 0, { -6674,    684}, {0xb7, 0x49, 0xb7, 0xff}}},\n    {{{ -2201,   1152,   2560}, 0, {  6918,   1192}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{ -2201,   1280,   2560}, 0, {  6918,    684}, {0xc8, 0x71, 0x00, 0xff}}},\n    {{{ -2201,   1152,   -844}, 0, { -6674,   1192}, {0xda, 0x8e, 0xda, 0xff}}},\n    {{{   154,   1280,   -588}, 0, {  -644,   6404}, {0xda, 0x72, 0xda, 0xff}}},\n    {{{   205,   1280,   -537}, 0, {  -848,   6200}, {0x3d, 0x5c, 0x3d, 0xff}}},\n    {{{   205,   1280,   -844}, 0, {  -848,   7426}, {0x1d, 0x77, 0xe3, 0xff}}},\n    {{{   154,   1280,   -793}, 0, {  -644,   7222}, {0xb7, 0x49, 0x49, 0xff}}},\n    {{{ -2149,   1280,   -793}, 0, {  8552,   7222}, {0x1d, 0x77, 0x1d, 0xff}}},\n    {{{   205,   1152,   -537}, 0, {  7020,   1192}, {0x49, 0xb7, 0x49, 0xff}}},\n    {{{   154,   1280,   -793}, 0, {  5486,    684}, {0xb7, 0x49, 0x49, 0xff}}},\n    {{{ -2149,   1229,   -793}, 0, { -3710,    888}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   154,   1229,   -793}, 0, {  5486,    888}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07014728 - 0x07014818\nstatic const Vtx ssl_seg7_vertex_07014728[] = {\n    {{{   154,   1229,   -588}, 0, { -5652,    888}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   154,   1280,   -793}, 0, { -6468,    684}, {0xb7, 0x49, 0x49, 0xff}}},\n    {{{   154,   1229,   -793}, 0, { -6468,    888}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   154,   1280,   -588}, 0, { -5652,    684}, {0xda, 0x72, 0xda, 0xff}}},\n    {{{ -1689,   1152,   -537}, 0, { -1870,   1192}, {0x3d, 0xa4, 0x3d, 0xff}}},\n    {{{   205,   1280,   -537}, 0, {  5692,    684}, {0x3d, 0x5c, 0x3d, 0xff}}},\n    {{{ -1689,   1280,   -537}, 0, { -1870,    684}, {0x26, 0x72, 0x26, 0xff}}},\n    {{{   205,   1152,   -537}, 0, {  5692,   1192}, {0x49, 0xb7, 0x49, 0xff}}},\n    {{{   154,   1229,   -588}, 0, { -1870,    888}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1740,   1229,   -588}, 0, {  5692,    888}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1740,   1280,   -588}, 0, {  5692,    684}, {0xc3, 0x5c, 0xc3, 0xff}}},\n    {{{   154,   1280,   -588}, 0, { -1870,    684}, {0xda, 0x72, 0xda, 0xff}}},\n    {{{   154,   1280,   -793}, 0, {  5486,    684}, {0xb7, 0x49, 0x49, 0xff}}},\n    {{{ -2149,   1280,   -793}, 0, { -3710,    684}, {0x1d, 0x77, 0x1d, 0xff}}},\n    {{{ -2149,   1229,   -793}, 0, { -3710,    888}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07014818 - 0x070148F8\nstatic const Vtx ssl_seg7_vertex_07014818[] = {\n    {{{   205,   1280,   -844}, 0, {  -848,   7426}, {0x1d, 0x77, 0xe3, 0xff}}},\n    {{{ -2201,   1280,   -844}, 0, {  8758,   7426}, {0xb7, 0x49, 0xb7, 0xff}}},\n    {{{ -2149,   1280,   -793}, 0, {  8552,   7222}, {0x1d, 0x77, 0x1d, 0xff}}},\n    {{{ -2201,   1280,   -844}, 0, {  7530,    684}, {0xb7, 0x49, 0xb7, 0xff}}},\n    {{{   205,   1280,   -844}, 0, { -2074,    684}, {0x1d, 0x77, 0xe3, 0xff}}},\n    {{{   205,   1152,   -844}, 0, { -2074,   1192}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{ -2201,   1152,   -844}, 0, {  7530,   1192}, {0xda, 0x8e, 0xda, 0xff}}},\n    {{{ -2802,    -81,  -1305}, 0, {     0,    990}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -2546,    -81,  -1305}, 0, {   990,    990}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{ -2546,    -81,  -1561}, 0, {   990,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{ -2802,    -81,  -1561}, 0, {     0,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{ -2802,    -81,    230}, 0, {     0,    990}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -2546,    -81,    -25}, 0, {   990,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{ -2802,    -81,    -25}, 0, {     0,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n};\n\n// 0x070148F8 - 0x070149E8\nstatic const Vtx ssl_seg7_vertex_070148F8[] = {\n    {{{ -1522,    -81,  -1305}, 0, {     0,    990}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -1266,    -81,  -1561}, 0, {   990,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{ -1522,    -81,  -1561}, 0, {     0,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{ -1266,    -81,  -1305}, 0, {   990,    990}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{ -1010,    -81,   -537}, 0, {     0,    990}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  -754,    -81,   -537}, 0, {   990,    990}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  -754,    -81,   -793}, 0, {   990,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{ -1010,    -81,   -793}, 0, {     0,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{ -1522,    -81,    230}, 0, {     0,    990}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -1266,    -81,    230}, 0, {   990,    990}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{ -1266,    -81,    -25}, 0, {   990,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{ -1522,    -81,    -25}, 0, {     0,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  1933,    -81,  -1765}, 0, {     0,    990}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  2189,    -81,  -1765}, 0, {   990,    990}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  2189,    -81,  -2021}, 0, {   990,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n};\n\n// 0x070149E8 - 0x07014AC8\nstatic const Vtx ssl_seg7_vertex_070149E8[] = {\n    {{{ -2802,    -81,    230}, 0, {     0,    990}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -2546,    -81,    230}, 0, {   990,    990}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{ -2546,    -81,    -25}, 0, {   990,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  -127,    -81,   2509}, 0, {     0,    990}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{   128,    -81,   2509}, 0, {   990,    990}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{   128,    -81,   2253}, 0, {   990,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  -127,    -81,   2253}, 0, {     0,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  1805,    -81,  -1253}, 0, {     0,    990}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  2061,    -81,  -1253}, 0, {   990,    990}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  2061,    -81,  -1509}, 0, {   990,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  1805,    -81,  -1509}, 0, {     0,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  1933,    -81,  -1765}, 0, {     0,    990}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  2189,    -81,  -2021}, 0, {   990,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  1933,    -81,  -2021}, 0, {     0,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n};\n\n// 0x07014AC8 - 0x07014BB8\nstatic const Vtx ssl_seg7_vertex_07014AC8[] = {\n    {{{  2304,    -81,   2970}, 0, {     0,    990}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  2560,    -81,   2714}, 0, {   990,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  2304,    -81,   2714}, 0, {     0,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  2445,    -81,  -1893}, 0, {     0,    990}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  2701,    -81,  -1893}, 0, {   990,    990}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  2701,    -81,  -2149}, 0, {   990,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  2445,    -81,  -2149}, 0, {     0,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  2573,    -81,  -2405}, 0, {     0,    990}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  2829,    -81,  -2405}, 0, {   990,    990}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  2829,    -81,  -2661}, 0, {   990,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  2573,    -81,  -2661}, 0, {     0,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  2573,    -81,  -2917}, 0, {     0,    990}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  2829,    -81,  -3173}, 0, {   990,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  2573,    -81,  -3173}, 0, {     0,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  2829,    -81,  -2917}, 0, {   990,    990}, {0x54, 0x2a, 0x54, 0xff}}},\n};\n\n// 0x07014BB8 - 0x07014CA8\nstatic const Vtx ssl_seg7_vertex_07014BB8[] = {\n    {{{  -511,    538,  -3833}, 0, { -2074,     -8}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -511,    538,  -3796}, 0, { -2074,    140}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{   512,    538,  -3796}, 0, {  2012,    140}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  2304,    -81,   2970}, 0, {     0,    990}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  2560,    -81,   2970}, 0, {   990,    990}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  2560,    -81,   2714}, 0, {   990,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  2714,    -81,   2970}, 0, {     0,    990}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  2970,    -81,   2970}, 0, {   990,    990}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  2970,    -81,   2714}, 0, {   990,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  2714,    -81,   2714}, 0, {     0,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  -511,    563,  -3870}, 0, { -2074,   -154}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -511,    563,  -3833}, 0, { -2074,     -8}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{   512,    563,  -3833}, 0, {  2012,     -8}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{   512,    563,  -3870}, 0, {  2012,   -154}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{   512,    538,  -3833}, 0, {  2012,     -8}, {0x00, 0x38, 0x71, 0xff}}},\n};\n\n// 0x07014CA8 - 0x07014D98\nstatic const Vtx ssl_seg7_vertex_07014CA8[] = {\n    {{{  -511,    486,  -3759}, 0, { -2074,    286}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -511,    486,  -3722}, 0, { -2074,    434}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{   512,    486,  -3722}, 0, {  2012,    434}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -511,    589,  -3907}, 0, { -2074,   -302}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{   512,    589,  -3870}, 0, {  2012,   -154}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{   512,    589,  -3907}, 0, {  2012,   -302}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -511,    589,  -3870}, 0, { -2074,   -154}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -511,    614,  -3943}, 0, { -2074,   -448}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{   512,    614,  -3907}, 0, {  2012,   -302}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{   512,    614,  -3943}, 0, {  2012,   -448}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -511,    614,  -3907}, 0, { -2074,   -302}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -511,    512,  -3796}, 0, { -2074,    140}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{   512,    512,  -3759}, 0, {  2012,    286}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{   512,    512,  -3796}, 0, {  2012,    140}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -511,    512,  -3759}, 0, { -2074,    286}, {0x00, 0x38, 0x71, 0xff}}},\n};\n\n// 0x07014D98 - 0x07014E88\nstatic const Vtx ssl_seg7_vertex_07014D98[] = {\n    {{{   131,   1967,   -460}, 0, {     0,    990}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{   387,   1967,   -716}, 0, {   990,      0}, {0x54, 0x54, 0xd6, 0xff}}},\n    {{{   131,   1967,   -716}, 0, {     0,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  -511,    486,  -3759}, 0, { -2074,    286}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{   512,    486,  -3722}, 0, {  2012,    434}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{   512,    486,  -3759}, 0, {  2012,    286}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -511,    461,  -3722}, 0, { -2074,    434}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{   512,    461,  -3685}, 0, {  2012,    582}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{   512,    461,  -3722}, 0, {  2012,    434}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -511,    461,  -3685}, 0, { -2074,    582}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{   387,   1839,   -716}, 0, {   990,      0}, {0x2a, 0xac, 0xac, 0xff}}},\n    {{{   131,   1839,   -460}, 0, {     0,    990}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{   131,   1839,   -716}, 0, {     0,      0}, {0xb7, 0xb7, 0xb7, 0xff}}},\n    {{{   387,   1839,   -460}, 0, {   990,    990}, {0x67, 0xcd, 0x33, 0xff}}},\n    {{{   387,   1967,   -460}, 0, {   990,    990}, {0x33, 0x33, 0x67, 0xff}}},\n};\n\n// 0x07014E88 - 0x07014F78\nstatic const Vtx ssl_seg7_vertex_07014E88[] = {\n    {{{   131,   3913,   -460}, 0, {     0,    990}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{   387,   3913,   -716}, 0, {   990,      0}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{   131,   3913,   -716}, 0, {     0,      0}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  -128,   2812,   -716}, 0, {   990,      0}, {0x2a, 0xac, 0xac, 0xff}}},\n    {{{  -384,   2812,   -460}, 0, {     0,    990}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{  -384,   2812,   -716}, 0, {     0,      0}, {0xb7, 0xb7, 0xb7, 0xff}}},\n    {{{  -128,   2812,   -460}, 0, {   990,    990}, {0x67, 0xcd, 0x33, 0xff}}},\n    {{{  -384,   2940,   -460}, 0, {     0,    990}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  -128,   2940,   -460}, 0, {   990,    990}, {0x33, 0x33, 0x67, 0xff}}},\n    {{{  -128,   2940,   -716}, 0, {   990,      0}, {0x54, 0x54, 0xd6, 0xff}}},\n    {{{  -384,   2940,   -716}, 0, {     0,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{   387,   3785,   -716}, 0, {   990,      0}, {0x38, 0x8f, 0x00, 0xff}}},\n    {{{   387,   3785,   -460}, 0, {   990,    990}, {0x67, 0xcd, 0x33, 0xff}}},\n    {{{   131,   3785,   -460}, 0, {     0,    990}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{   131,   3785,   -716}, 0, {     0,      0}, {0xa7, 0xa7, 0x00, 0xff}}},\n};\n\n// 0x07014F78 - 0x07015078\nstatic const Vtx ssl_seg7_vertex_07014F78[] = {\n    {{{  -204,   3200,   1536}, 0, { -3914,   8142}, {0xe5, 0x6e, 0xc9, 0xff}}},\n    {{{   205,   3200,   1459}, 0, { -2278,   7836}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{   205,   3200,   1126}, 0, { -2278,   6506}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{   131,   3913,   -460}, 0, {     0,    990}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{   387,   3913,   -460}, 0, {   990,    990}, {0x33, 0x33, 0x67, 0xff}}},\n    {{{   387,   3913,   -716}, 0, {   990,      0}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{   387,   4687,  -1125}, 0, {     0,  -1872}, {0xc8, 0x8f, 0x00, 0xff}}},\n    {{{   643,   4687,  -1125}, 0, {   990,  -1872}, {0x71, 0xc8, 0x00, 0xff}}},\n    {{{   643,   4687,   -409}, 0, {   990,    990}, {0x33, 0x99, 0x33, 0xff}}},\n    {{{   387,   4687,   -409}, 0, {     0,    990}, {0xac, 0xd6, 0x54, 0xff}}},\n    {{{  -204,   3200,   1126}, 0, { -3914,   6506}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  1946,   3200,   1536}, 0, {  4670,   8142}, {0xd6, 0x54, 0xac, 0xff}}},\n    {{{  1536,   3200,   1459}, 0, {  3034,   7836}, {0xe3, 0x77, 0xe3, 0xff}}},\n    {{{ -2764,   1920,    106}, 0, {  1194,    394}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{ -2866,   1920,    106}, 0, {   786,    394}, {0x33, 0x33, 0x67, 0xff}}},\n    {{{ -2866,   1920,    311}, 0, {   786,   1208}, {0x54, 0x54, 0xd6, 0xff}}},\n};\n\n// 0x07015078 - 0x07015168\nstatic const Vtx ssl_seg7_vertex_07015078[] = {\n    {{{  1946,   3200,  -2612}, 0, {  4670,  -8420}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{  1536,   3200,   1459}, 0, {  3034,   7836}, {0xe3, 0x77, 0xe3, 0xff}}},\n    {{{  1946,   3200,   1536}, 0, {  4670,   8142}, {0xd6, 0x54, 0xac, 0xff}}},\n    {{{  1536,   3200,  -2612}, 0, {  3034,  -8420}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  1280,   2560,  -2612}, 0, {   990,  -1266}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{   922,   2560,  -2612}, 0, {  -438,  -1266}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{   922,   2560,  -1998}, 0, {  -438,   1184}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  1280,   2560,  -1998}, 0, {   990,   1184}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{   666,   1920,  -2612}, 0, {  8758,  -4332}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{ -2764,   1920,  -2612}, 0, { -4936,  -4332}, {0x3d, 0x5c, 0x3d, 0xff}}},\n    {{{ -2149,   1920,  -1998}, 0, { -2482,  -1880}, {0x3d, 0x5c, 0x3d, 0xff}}},\n    {{{   666,   1920,  -1998}, 0, {  8758,  -1880}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{ -2149,   1664,   3174}, 0, { -2482,   1396}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1945,   1664,   3174}, 0, { -1666,   1396}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{ -1945,   1664,   2970}, 0, { -1666,    582}, {0x49, 0x49, 0xb7, 0xff}}},\n};\n\n// 0x07015168 - 0x07015248\nstatic const Vtx ssl_seg7_vertex_07015168[] = {\n    {{{ -2764,   1920,    106}, 0, {  1194,    394}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{ -2866,   1920,    311}, 0, {   786,   1208}, {0x54, 0x54, 0xd6, 0xff}}},\n    {{{ -2764,   1920,    311}, 0, {  1194,   1208}, {0x21, 0x65, 0xbd, 0xff}}},\n    {{{ -2764,   1920,   3174}, 0, {  -848,   6506}, {0x54, 0x54, 0xd6, 0xff}}},\n    {{{ -2149,   1920,   3174}, 0, {  1604,   6506}, {0x54, 0x2a, 0xac, 0xff}}},\n    {{{ -2149,   1920,    311}, 0, {  1604,  -4922}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{ -2764,   1920,    311}, 0, {  -848,  -4922}, {0x21, 0x65, 0xbd, 0xff}}},\n    {{{ -2149,   1920,    311}, 0, { -2482,   7340}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{ -2764,   1920,  -2612}, 0, { -4936,  -4332}, {0x3d, 0x5c, 0x3d, 0xff}}},\n    {{{ -2764,   1920,    311}, 0, { -4936,   7340}, {0x21, 0x65, 0xbd, 0xff}}},\n    {{{ -2149,   1920,  -1998}, 0, { -2482,  -1880}, {0x3d, 0x5c, 0x3d, 0xff}}},\n    {{{ -2149,   1664,   3174}, 0, { -2482,   1396}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1945,   1664,   2970}, 0, { -1666,    582}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{ -2149,   1664,   2970}, 0, { -2482,    582}, {0x00, 0x59, 0xa7, 0xff}}},\n};\n\n// 0x07015248 - 0x07015348\nstatic const Vtx ssl_seg7_vertex_07015248[] = {\n    {{{  1382,   1280,   2560}, 0, {  1398,  -1054}, {0x13, 0x6f, 0xc6, 0xff}}},\n    {{{  2765,   1280,   2970}, 0, {  6918,    582}, {0x37, 0x6e, 0xe5, 0xff}}},\n    {{{  2765,   1280,   2765}, 0, {  6918,   -236}, {0x2a, 0x54, 0x54, 0xff}}},\n    {{{ -2149,   1536,   2970}, 0, { -2482,    582}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{ -1945,   1536,   2765}, 0, { -1666,   -236}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{ -2149,   1536,   2765}, 0, { -2482,   -236}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{ -1945,   1536,   2970}, 0, { -1666,    582}, {0x72, 0x26, 0xda, 0xff}}},\n    {{{ -1740,   1408,   2970}, 0, {  -848,    582}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{ -1945,   1408,   2765}, 0, { -1666,   -236}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{ -1945,   1408,   2970}, 0, { -1666,    582}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{ -1740,   1408,   2765}, 0, {  -848,   -236}, {0x65, 0x21, 0xbd, 0xff}}},\n    {{{ -1945,   1357,   3174}, 0, { -1666,   1396}, {0x69, 0x46, 0x00, 0xff}}},\n    {{{ -1740,   1357,   2970}, 0, {  -848,    582}, {0x5c, 0x3d, 0x3d, 0xff}}},\n    {{{ -1945,   1357,   2970}, 0, { -1666,    582}, {0x49, 0x49, 0x49, 0xff}}},\n    {{{ -1740,   1357,   3174}, 0, {  -848,   1396}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{  1382,   1280,   3174}, 0, {  1398,   1396}, {0x15, 0x7d, 0x00, 0xff}}},\n};\n\n// 0x07015348 - 0x07015428\nstatic const Vtx ssl_seg7_vertex_07015348[] = {\n    {{{  2765,   1280,   2970}, 0, {  6918,    582}, {0x37, 0x6e, 0xe5, 0xff}}},\n    {{{  1382,   1280,   3174}, 0, {  1398,   1396}, {0x15, 0x7d, 0x00, 0xff}}},\n    {{{  2970,   1280,   3174}, 0, {  7736,   1396}, {0xb7, 0x49, 0xb7, 0xff}}},\n    {{{  2970,   1280,   2970}, 0, {  7736,    582}, {0xd1, 0x46, 0xa2, 0xff}}},\n    {{{  3174,   1280,   2560}, 0, {  8552,  -1054}, {0x00, 0x69, 0xba, 0xff}}},\n    {{{  3174,   1280,   2970}, 0, {  8552,    582}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{  2970,   1280,   2765}, 0, {  7736,   -236}, {0xbd, 0x65, 0x21, 0xff}}},\n    {{{  1382,   1280,   2560}, 0, {  1398,  -1054}, {0x13, 0x6f, 0xc6, 0xff}}},\n    {{{  1024,   1485,   3174}, 0, {     0,   1396}, {0x2b, 0x77, 0x00, 0xff}}},\n    {{{   870,   1485,   3174}, 0, {  -644,   1396}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{  1024,   1485,   2611}, 0, {     0,   -850}, {0x2a, 0x54, 0x54, 0xff}}},\n    {{{   870,   1485,   2611}, 0, {  -644,   -850}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{  1024,   1485,   2560}, 0, {     0,  -1054}, {0x5f, 0x21, 0xb4, 0xff}}},\n    {{{  2765,   1280,   2765}, 0, {  6918,   -236}, {0x2a, 0x54, 0x54, 0xff}}},\n};\n\n// 0x07015428 - 0x07015528\nstatic const Vtx ssl_seg7_vertex_07015428[] = {\n    {{{  -869,   1485,   2611}, 0, {  2626,   -850}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{ -1023,   1485,   3174}, 0, {  2012,   1396}, {0xeb, 0x7d, 0x00, 0xff}}},\n    {{{  -869,   1485,   3174}, 0, {  2626,   1396}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{ -1023,   1485,   2611}, 0, {  2012,   -850}, {0x99, 0x33, 0x33, 0xff}}},\n    {{{ -1381,   1280,   3174}, 0, {   582,   1396}, {0xd5, 0x77, 0x00, 0xff}}},\n    {{{ -1023,   1485,   2560}, 0, {  2012,  -1054}, {0xb4, 0x42, 0xb4, 0xff}}},\n    {{{ -1381,   1280,   2560}, 0, {   582,  -1054}, {0xf4, 0x49, 0x9a, 0xff}}},\n    {{{ -2149,   1280,   3174}, 0, { -2482,   1396}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{ -2149,   1280,   2560}, 0, { -2482,  -1054}, {0x6e, 0x37, 0xe5, 0xff}}},\n    {{{  3584,    640,  -3841}, 0, {  6100,  -5150}, {0xbd, 0x65, 0x21, 0xff}}},\n    {{{  1307,    640,  -3276}, 0, { -2990,  -2894}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  3072,    640,  -3276}, 0, {  4056,  -2894}, {0xc3, 0x5c, 0x3d, 0xff}}},\n    {{{  2560,    640,   3584}, 0, { -2074,   6098}, {0xc8, 0x71, 0x00, 0xff}}},\n    {{{  3584,    640,   3584}, 0, {  2012,   6098}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  3584,    640,   2560}, 0, {  2012,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3584,    640,   -283}, 0, {  6100,   9054}, {0xd6, 0x54, 0x54, 0xff}}},\n};\n\n// 0x07015528 - 0x07015628\nstatic const Vtx ssl_seg7_vertex_07015528[] = {\n    {{{  3072,    640,  -3276}, 0, {  4056,  -2894}, {0xc3, 0x5c, 0x3d, 0xff}}},\n    {{{  3072,    640,   -283}, 0, {  4056,   9054}, {0xb7, 0x49, 0x49, 0xff}}},\n    {{{  3584,    640,   -283}, 0, {  6100,   9054}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  3584,    640,  -3841}, 0, {  6100,  -5150}, {0xbd, 0x65, 0x21, 0xff}}},\n    {{{  1307,    640,  -3841}, 0, { -2990,  -5150}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1307,    640,  -3276}, 0, { -2990,  -2894}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  3072,    640,    473}, 0, {     0,  -6320}, {0xd6, 0x54, 0xac, 0xff}}},\n    {{{  3584,    640,   2560}, 0, {  2012,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3584,    640,    473}, 0, {  2012,  -6320}, {0xb7, 0x49, 0xb7, 0xff}}},\n    {{{  3072,    640,   2560}, 0, {     0,   2010}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{  2560,    640,   3584}, 0, { -2074,   6098}, {0xc8, 0x71, 0x00, 0xff}}},\n    {{{  2560,    640,   2560}, 0, { -2074,   2010}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{   770,    640,  -3841}, 0, {   998,    -40}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{   770,    640,  -4148}, 0, {   998,  -1266}, {0xda, 0x72, 0x26, 0xff}}},\n    {{{   512,    640,  -3943}, 0, {     0,   -448}, {0xbd, 0x65, 0x21, 0xff}}},\n    {{{   512,    640,  -3685}, 0, {     0,    582}, {0xcd, 0x67, 0x33, 0xff}}},\n};\n\n// 0x07015628 - 0x07015728\nstatic const Vtx ssl_seg7_vertex_07015628[] = {\n    {{{   770,    640,  -3841}, 0, {   998,    -40}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{   512,    640,  -3685}, 0, {     0,    582}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  1307,    640,  -3685}, 0, {  3140,    582}, {0xb7, 0x49, 0x49, 0xff}}},\n    {{{  1307,    640,  -3841}, 0, {  3140,    -40}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   770,    640,  -4148}, 0, {  2020,   -244}, {0xda, 0x72, 0x26, 0xff}}},\n    {{{  -511,    640,  -3943}, 0, { -3096,    574}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{   512,    640,  -3943}, 0, {   990,    574}, {0xbd, 0x65, 0x21, 0xff}}},\n    {{{  -511,    640,  -4148}, 0, { -3096,   -244}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{ -1306,      0,  -3276}, 0, {  9060,   1192}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -1101,      0,  -3276}, 0, {  9878,   1192}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{ -1101,      0,  -4095}, 0, {  9878,  -2076}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -1306,      0,  -4095}, 0, {  9060,  -2076}, {0xac, 0x2a, 0x54, 0xff}}},\n    {{{  3994,      0,  -4095}, 0, {  2626,  -2076}, {0xda, 0x72, 0x26, 0xff}}},\n    {{{  2433,      0,  -4095}, 0, { -3602,  -2076}, {0xac, 0x2a, 0x54, 0xff}}},\n    {{{  2433,      0,  -3276}, 0, { -3602,   1192}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  3072,      0,  -3276}, 0, { -1052,   1192}, {0xdf, 0x65, 0x43, 0xff}}},\n};\n\n// 0x07015728 - 0x07015818\nstatic const Vtx ssl_seg7_vertex_07015728[] = {\n    {{{  3072,      0,  -3276}, 0, { -1052,   1192}, {0xdf, 0x65, 0x43, 0xff}}},\n    {{{  3994,      0,   -283}, 0, {  2626,  13142}, {0xc3, 0x5c, 0xc3, 0xff}}},\n    {{{  3994,      0,  -4095}, 0, {  2626,  -2076}, {0xda, 0x72, 0x26, 0xff}}},\n    {{{  3072,      0,   -283}, 0, { -1052,  13142}, {0x9b, 0x4c, 0x00, 0xff}}},\n    {{{  2023,      0,  -4095}, 0, { -5238,  -2076}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{  1716,      0,  -4095}, 0, { -6464,  -2076}, {0xac, 0x2a, 0x54, 0xff}}},\n    {{{  1716,      0,  -3276}, 0, { -6464,   1192}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  2023,      0,  -3276}, 0, { -5238,   1192}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  1307,      0,  -4095}, 0, { -8100,  -2076}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{  1102,      0,  -4095}, 0, { -8918,  -2076}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  1102,      0,  -3276}, 0, { -8918,   1192}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{  1307,      0,  -3276}, 0, { -8100,   1192}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{   512,    435,  -3327}, 0, {  2012,    990}, {0x12, 0x55, 0xa5, 0xff}}},\n    {{{  -511,    435,  -3685}, 0, { -2074,   -440}, {0x0c, 0x56, 0x5c, 0xff}}},\n    {{{  -511,    435,  -3327}, 0, { -2074,    990}, {0xd5, 0x5e, 0xb8, 0xff}}},\n};\n\n// 0x07015818 - 0x07015908\nstatic const Vtx ssl_seg7_vertex_07015818[] = {\n    {{{  3072,      0,   -283}, 0, { -1052, -13428}, {0x9b, 0x4c, 0x00, 0xff}}},\n    {{{  3994,      0,   4096}, 0, {  2626,   4054}, {0xcd, 0x67, 0xcd, 0xff}}},\n    {{{  3994,      0,   -283}, 0, {  2626, -13428}, {0xc3, 0x5c, 0xc3, 0xff}}},\n    {{{  3072,      0,   3072}, 0, { -1052,      0}, {0xcd, 0x67, 0xcd, 0xff}}},\n    {{{   896,      0,   3072}, 0, { -9740,      0}, {0x1d, 0x77, 0xe3, 0xff}}},\n    {{{   896,      0,   4096}, 0, { -9740,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3071,      0,   3072}, 0, {  2012,   2010}, {0x1b, 0x6e, 0xc9, 0xff}}},\n    {{{ -3993,      0,   4096}, 0, { -1666,   6098}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  -895,      0,   4096}, 0, { 10700,   6098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -895,      0,   3072}, 0, { 10700,   2010}, {0xda, 0x72, 0xda, 0xff}}},\n    {{{ -3993,      0,   -283}, 0, { -1666, -11384}, {0x26, 0x72, 0xda, 0xff}}},\n    {{{ -3071,      0,   -283}, 0, {  2012, -11384}, {0x65, 0x4c, 0x00, 0xff}}},\n    {{{   512,    435,  -3327}, 0, {  2012,    990}, {0x12, 0x55, 0xa5, 0xff}}},\n    {{{   512,    435,  -3685}, 0, {  2012,   -440}, {0xeb, 0x44, 0x68, 0xff}}},\n    {{{  -511,    435,  -3685}, 0, { -2074,   -440}, {0x0c, 0x56, 0x5c, 0xff}}},\n};\n\n// 0x07015908 - 0x07015A08\nstatic const Vtx ssl_seg7_vertex_07015908[] = {\n    {{{  -818,   1536,   3174}, 0, {  8144,  -2332}, {0x1f, 0x78, 0xe8, 0xff}}},\n    {{{   819,   1536,   3174}, 0, {     0,  -2332}, {0xc7, 0x6e, 0xea, 0xff}}},\n    {{{   819,   1280,   2560}, 0, {     0,    990}, {0xdc, 0x43, 0x9b, 0xff}}},\n    {{{  -818,   1280,   2560}, 0, {  8144,    990}, {0x41, 0x3c, 0xa6, 0xff}}},\n    {{{  -191,    286,  -1222}, 0, {  2522,   1258}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{   192,    384,  -1023}, 0, {  -540,      0}, {0x00, 0x57, 0xa5, 0xff}}},\n    {{{   192,    286,  -1222}, 0, {  -540,   1258}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{  -191,    384,  -1023}, 0, {  2522,      0}, {0x00, 0x2b, 0x89, 0xff}}},\n    {{{  -191,    188,  -1421}, 0, {  2522,   2552}, {0x00, 0x6e, 0xc2, 0xff}}},\n    {{{   192,    188,  -1421}, 0, {  -540,   2552}, {0x00, 0x6e, 0xc2, 0xff}}},\n    {{{   192,   -275,  -1956}, 0, {  -540,   -104}, {0x00, 0x3d, 0x92, 0xff}}},\n    {{{  -191,   -562,  -2048}, 0, {  2522,   2450}, {0xe1, 0x13, 0x87, 0xff}}},\n    {{{  -191,   -275,  -1956}, 0, {  2522,   -104}, {0x00, 0x3d, 0x92, 0xff}}},\n    {{{  -191,    -13,  -1731}, 0, {  2524,   2208}, {0x00, 0x5f, 0xad, 0xff}}},\n    {{{  -191,    188,  -1421}, 0, {  2524,   -508}, {0x00, 0x6e, 0xc2, 0xff}}},\n    {{{   192,    188,  -1421}, 0, {  -540,   -508}, {0x00, 0x6e, 0xc2, 0xff}}},\n};\n\n// 0x07015A08 - 0x07015AE8\nstatic const Vtx ssl_seg7_vertex_07015A08[] = {\n    {{{  -191,    -13,  -1731}, 0, {  2524,   2208}, {0x00, 0x5f, 0xad, 0xff}}},\n    {{{   192,    188,  -1421}, 0, {  -540,   -508}, {0x00, 0x6e, 0xc2, 0xff}}},\n    {{{   192,    -13,  -1731}, 0, {  -540,   2208}, {0x00, 0x5f, 0xad, 0xff}}},\n    {{{   192,   -275,  -1956}, 0, {  -542,   2010}, {0x00, 0x3d, 0x92, 0xff}}},\n    {{{  -191,   -275,  -1956}, 0, {  2524,   2010}, {0x00, 0x3d, 0x92, 0xff}}},\n    {{{  -191,    -13,  -1731}, 0, {  2524,   -804}, {0x00, 0x5f, 0xad, 0xff}}},\n    {{{   192,    -13,  -1731}, 0, {  -542,   -804}, {0x00, 0x5f, 0xad, 0xff}}},\n    {{{  -191,   -664,  -1664}, 0, {  2522,   5220}, {0xcd, 0x99, 0x33, 0xff}}},\n    {{{   192,   -664,  -2048}, 0, {  -540,   6352}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{   192,   -664,  -1664}, 0, {  -540,   5220}, {0x33, 0xcd, 0x67, 0xff}}},\n    {{{  -191,   -664,  -2048}, 0, {  2522,   6352}, {0x8e, 0xda, 0xda, 0xff}}},\n    {{{   128,    384,   -255}, 0, {     0,  -4120}, {0xc3, 0x3d, 0x5c, 0xff}}},\n    {{{  -127,    384,  -1023}, 0, {  2012,   2010}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  -127,    384,   -255}, 0, {  2012,  -4120}, {0x43, 0x21, 0x65, 0xff}}},\n};\n\n// 0x07015AE8 - 0x07015B48\nstatic const Vtx ssl_seg7_vertex_07015AE8[] = {\n    {{{   192,   -275,  -1956}, 0, {  -540,   -104}, {0x00, 0x3d, 0x92, 0xff}}},\n    {{{   192,   -562,  -2048}, 0, {  -540,   2450}, {0x5a, 0x0d, 0xa8, 0xff}}},\n    {{{  -191,   -562,  -2048}, 0, {  2522,   2450}, {0xe1, 0x13, 0x87, 0xff}}},\n    {{{   128,    384,   -255}, 0, {     0,  -4120}, {0xc3, 0x3d, 0x5c, 0xff}}},\n    {{{   128,    384,  -1023}, 0, {     0,   2010}, {0xcd, 0x33, 0x99, 0xff}}},\n    {{{  -127,    384,  -1023}, 0, {  2012,   2010}, {0x33, 0x67, 0xcd, 0xff}}},\n};\n\n// 0x07015B48 - 0x07015BE8\nstatic const Vtx ssl_seg7_vertex_07015B48[] = {\n    {{{   131,   4480,   -767}, 0, {  2534,  -1770}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{  -204,   4480,   -716}, 0, {  1194,  -1770}, {0xe9, 0x65, 0x49, 0xff}}},\n    {{{   131,   4480,   -716}, 0, {  2534,  -1770}, {0x43, 0x21, 0x65, 0xff}}},\n    {{{  -204,   4480,   -767}, 0, {  1194,  -1770}, {0xd9, 0x4d, 0xa4, 0xff}}},\n    {{{  -665,   4096,   -716}, 0, {  -644,   -236}, {0xa8, 0x29, 0x51, 0xff}}},\n    {{{  -665,   4096,   -767}, 0, {  -644,   -236}, {0x9c, 0x2f, 0xc3, 0xff}}},\n    {{{   512,   4480,   -716}, 0, {  4056,  -1770}, {0x49, 0x49, 0x49, 0xff}}},\n    {{{   387,   4480,   -767}, 0, {  3556,  -1770}, {0xd6, 0x54, 0xac, 0xff}}},\n    {{{   387,   4480,   -716}, 0, {  3556,  -1770}, {0x99, 0x33, 0x33, 0xff}}},\n    {{{   512,   4480,   -767}, 0, {  4056,  -1770}, {0x49, 0x49, 0xb7, 0xff}}},\n};\n\n// 0x07015BE8 - 0x07015CE8\nstatic const Vtx ssl_seg7_vertex_07015BE8[] = {\n    {{{ -3521,      0,   -220}, 0, {   852,   2010}, {0x7a, 0x00, 0xe1, 0xff}}},\n    {{{ -3583,      0,   -283}, 0, {  1100,   2010}, {0x31, 0x00, 0x8b, 0xff}}},\n    {{{ -3521,   1152,   -220}, 0, {   852,  -2588}, {0x6d, 0x00, 0xc1, 0xff}}},\n    {{{  3584,   1152,    473}, 0, {  1856,  -2588}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{  3522,   1152,    411}, 0, {  1608,  -2588}, {0x93, 0x00, 0x40, 0xff}}},\n    {{{  3584,      0,    473}, 0, {  1856,   2010}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  3522,      0,    411}, 0, {  1608,   2010}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{  3522,   1152,   -220}, 0, {  -914,  -2588}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{  3584,      0,   -283}, 0, { -1162,   2010}, {0xc0, 0x00, 0x93, 0xff}}},\n    {{{  3522,      0,   -220}, 0, {  -914,   2010}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{  3584,   1152,   -283}, 0, { -1162,  -2588}, {0x86, 0x00, 0xe1, 0xff}}},\n    {{{ -3583,      0,    473}, 0, { -1918,   2010}, {0x40, 0x00, 0x6d, 0xff}}},\n    {{{ -3521,   1152,    411}, 0, { -1670,  -2588}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{ -3583,   1152,    473}, 0, { -1918,  -2588}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{ -3521,      0,    411}, 0, { -1670,   2010}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{ -3583,   1152,   -283}, 0, {  1100,  -2588}, {0x75, 0x00, 0xd0, 0xff}}},\n};\n\n// 0x07015CE8 - 0x07015DD8\nstatic const Vtx ssl_seg7_vertex_07015CE8[] = {\n    {{{    77,   1152,   6374}, 0, {  -132,   -544}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{    77,    845,   6374}, 0, {  -132,    684}, {0xda, 0x8e, 0x26, 0xff}}},\n    {{{    77,    845,   6528}, 0, {   480,    684}, {0xc3, 0xa4, 0xc3, 0xff}}},\n    {{{    77,    845,   6528}, 0, {   684,    684}, {0xc3, 0xa4, 0xc3, 0xff}}},\n    {{{   -76,    845,   6528}, 0, {  1296,    684}, {0x1d, 0x89, 0xe3, 0xff}}},\n    {{{   -76,   1152,   6528}, 0, {  1296,   -544}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{    77,   1152,   6528}, 0, {   684,   -544}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   -76,    845,   6374}, 0, {   684,    684}, {0x49, 0xb7, 0x49, 0xff}}},\n    {{{    77,    845,   6374}, 0, {  1296,    684}, {0xda, 0x8e, 0x26, 0xff}}},\n    {{{    77,   1152,   6374}, 0, {  1296,   -544}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   -76,   1152,   6374}, 0, {   684,   -544}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   -76,   1152,   6528}, 0, {   478,   -544}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   -76,    845,   6374}, 0, {  1092,    684}, {0x49, 0xb7, 0x49, 0xff}}},\n    {{{   -76,   1152,   6374}, 0, {  1092,   -544}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   -76,    845,   6528}, 0, {   478,    684}, {0x1d, 0x89, 0xe3, 0xff}}},\n};\n\n// 0x07015DD8 - 0x07015EC8\nstatic const Vtx ssl_seg7_vertex_07015DD8[] = {\n    {{{  -306,      0,   6758}, 0, {  2216,   2010}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{   307,    845,   6758}, 0, {  -234,  -1360}, {0xdf, 0x9b, 0xbd, 0xff}}},\n    {{{   307,      0,   6758}, 0, {  -234,   2010}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{    77,   1152,   6374}, 0, {  -132,   -544}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{    77,    845,   6528}, 0, {   480,    684}, {0xc3, 0xa4, 0xc3, 0xff}}},\n    {{{    77,   1152,   6528}, 0, {   480,   -544}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   307,      0,   4915}, 0, {  -234,   2010}, {0xe9, 0x73, 0xd2, 0xff}}},\n    {{{   307,    845,   4915}, 0, {  -234,  -1360}, {0xbd, 0x9b, 0xdf, 0xff}}},\n    {{{   819,    845,   4915}, 0, { -2278,  -1360}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{   819,      0,   4915}, 0, { -2278,   2010}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{  -818,      0,   4915}, 0, {  4260,   2010}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  -306,    845,   4915}, 0, {  2216,  -1360}, {0x1b, 0x92, 0xc9, 0xff}}},\n    {{{  -306,      0,   4915}, 0, {  2216,   2010}, {0x37, 0x6e, 0xe5, 0xff}}},\n    {{{  -818,    845,   4915}, 0, {  4260,  -1360}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{  -306,    845,   6758}, 0, {  2216,  -1360}, {0x54, 0xac, 0xd6, 0xff}}},\n};\n\n// 0x07015EC8 - 0x07015FB8\nstatic const Vtx ssl_seg7_vertex_07015EC8[] = {\n    {{{  1126,      0,   3994}, 0, {  5486,   2010}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1126,    512,   4096}, 0, {  5078,      0}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{  1126,      0,   4096}, 0, {  5078,   2010}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -306,    845,   6758}, 0, { -5548,  -1360}, {0x54, 0xac, 0xd6, 0xff}}},\n    {{{  -306,      0,   6758}, 0, { -5548,   2010}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{  -306,      0,   4915}, 0, {  1808,   2010}, {0x37, 0x6e, 0xe5, 0xff}}},\n    {{{  -306,    845,   4915}, 0, {  1808,  -1360}, {0x1b, 0x92, 0xc9, 0xff}}},\n    {{{   307,    845,   4915}, 0, {  2216,  -1360}, {0xbd, 0x9b, 0xdf, 0xff}}},\n    {{{   307,      0,   4915}, 0, {  2216,   2010}, {0xe9, 0x73, 0xd2, 0xff}}},\n    {{{   307,      0,   6758}, 0, {  9574,   2010}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{   307,    845,   6758}, 0, {  9574,  -1360}, {0xdf, 0x9b, 0xbd, 0xff}}},\n    {{{ -1125,    512,   3994}, 0, { -1460,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1125,      0,   4096}, 0, { -1052,   2010}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1125,    512,   4096}, 0, { -1052,      0}, {0xb7, 0xb7, 0xb7, 0xff}}},\n    {{{ -1125,      0,   3994}, 0, { -1460,   2010}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07015FB8 - 0x070160A8\nstatic const Vtx ssl_seg7_vertex_07015FB8[] = {\n    {{{  1126,   1152,   3994}, 0, { -3504,  -2588}, {0xdf, 0xbd, 0x9b, 0xff}}},\n    {{{   819,    845,   3994}, 0, { -2278,  -1360}, {0xbd, 0xdf, 0x9b, 0xff}}},\n    {{{  -818,    845,   3994}, 0, {  4260,  -1360}, {0x21, 0xbd, 0x9b, 0xff}}},\n    {{{  1126,      0,   3994}, 0, {  5486,   2010}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1126,    512,   3994}, 0, {  5486,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1126,    512,   4096}, 0, {  5078,      0}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{  -818,      0,   3994}, 0, {  5486,   2010}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -818,    845,   4915}, 0, {  1808,  -1360}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{  -818,      0,   4915}, 0, {  1808,   2010}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  -818,    845,   3994}, 0, {  5486,  -1360}, {0x21, 0xbd, 0x9b, 0xff}}},\n    {{{   819,      0,   4915}, 0, {  2216,   2010}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{   819,    845,   3994}, 0, { -1460,  -1360}, {0xbd, 0xdf, 0x9b, 0xff}}},\n    {{{   819,      0,   3994}, 0, { -1460,   2010}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   819,    845,   4915}, 0, {  2216,  -1360}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{  1126,      0,   3994}, 0, { -3504,   2010}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x070160A8 - 0x07016198\nstatic const Vtx ssl_seg7_vertex_070160A8[] = {\n    {{{  -101,   6144,    358}, 0, {  1398,  -2076}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   102,   6144,    358}, 0, {   582,  -2076}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   102,   5734,    358}, 0, {   582,   -440}, {0xc3, 0xa4, 0xc3, 0xff}}},\n    {{{ -1125,   1152,   3994}, 0, {  5486,  -2588}, {0x43, 0xdf, 0x9b, 0xff}}},\n    {{{  -818,    845,   3994}, 0, {  4260,  -1360}, {0x21, 0xbd, 0x9b, 0xff}}},\n    {{{  -818,      0,   3994}, 0, {  4260,   2010}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1126,   1152,   3994}, 0, { -3504,  -2588}, {0xdf, 0xbd, 0x9b, 0xff}}},\n    {{{ -1125,      0,   3994}, 0, {  5486,   2010}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   819,    845,   3994}, 0, { -2278,  -1360}, {0xbd, 0xdf, 0x9b, 0xff}}},\n    {{{  1126,      0,   3994}, 0, { -3504,   2010}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   819,      0,   3994}, 0, { -2278,   2010}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   102,   6144,    154}, 0, {  1398,  -2076}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -101,   6144,    154}, 0, {   582,  -2076}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -101,   5734,    154}, 0, {   582,   -440}, {0x49, 0xb7, 0x49, 0xff}}},\n    {{{   102,   5734,    154}, 0, {  1398,   -440}, {0xe3, 0x89, 0x1d, 0xff}}},\n};\n\n// 0x07016198 - 0x07016288\nstatic const Vtx ssl_seg7_vertex_07016198[] = {\n    {{{   102,   3942,   1434}, 0, {   582,   1602}, {0xe5, 0x6e, 0xc9, 0xff}}},\n    {{{   102,   3712,   1434}, 0, {   582,   2522}, {0xac, 0xac, 0xd6, 0xff}}},\n    {{{  -101,   3712,   1434}, 0, {  1398,   2522}, {0x1b, 0x92, 0xc9, 0xff}}},\n    {{{  -101,   6144,    358}, 0, {  1398,  -2076}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   102,   5734,    358}, 0, {   582,   -440}, {0xc3, 0xa4, 0xc3, 0xff}}},\n    {{{  -101,   5734,    358}, 0, {  1398,   -440}, {0x26, 0x8e, 0xda, 0xff}}},\n    {{{   102,   6144,    154}, 0, {   582,  -2076}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   102,   5734,    154}, 0, {   582,   -440}, {0xe3, 0x89, 0x1d, 0xff}}},\n    {{{   102,   5734,    358}, 0, {  1398,   -440}, {0xc3, 0xa4, 0xc3, 0xff}}},\n    {{{   102,   6144,    358}, 0, {  1398,  -2076}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -101,   6144,    358}, 0, {   582,  -2076}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -101,   5734,    154}, 0, {  1398,   -440}, {0x49, 0xb7, 0x49, 0xff}}},\n    {{{  -101,   6144,    154}, 0, {  1398,  -2076}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -101,   5734,    358}, 0, {   582,   -440}, {0x26, 0x8e, 0xda, 0xff}}},\n    {{{  -101,   3942,   1434}, 0, {  1398,   1602}, {0x54, 0x54, 0xd6, 0xff}}},\n};\n\n// 0x07016288 - 0x07016378\nstatic const Vtx ssl_seg7_vertex_07016288[] = {\n    {{{  1946,   3200,   1536}, 0, { -7798,    478}, {0xd6, 0x54, 0xac, 0xff}}},\n    {{{ -1945,   3712,   1536}, 0, {  7736,  -1566}, {0x2f, 0xba, 0xa2, 0xff}}},\n    {{{  1946,   3712,   1536}, 0, { -7798,  -1566}, {0xd9, 0x89, 0xed, 0xff}}},\n    {{{   102,   3942,   1229}, 0, {  4874,   1602}, {0xbd, 0x65, 0x21, 0xff}}},\n    {{{   102,   3712,   1434}, 0, {  5692,   2522}, {0xac, 0xac, 0xd6, 0xff}}},\n    {{{   102,   3942,   1434}, 0, {  5692,   1602}, {0xe5, 0x6e, 0xc9, 0xff}}},\n    {{{   102,   3712,   1229}, 0, {  4874,   2522}, {0xdf, 0x9b, 0x43, 0xff}}},\n    {{{  -101,   3942,   1434}, 0, {   376,   -440}, {0x54, 0x54, 0xd6, 0xff}}},\n    {{{  -101,   3712,   1229}, 0, {  1194,    478}, {0x43, 0x9b, 0x21, 0xff}}},\n    {{{  -101,   3942,   1229}, 0, {  1194,   -440}, {0x21, 0x65, 0x43, 0xff}}},\n    {{{  -101,   3712,   1434}, 0, {   376,    478}, {0x1b, 0x92, 0xc9, 0xff}}},\n    {{{  -101,   3942,   1229}, 0, {   582,    582}, {0x21, 0x65, 0x43, 0xff}}},\n    {{{  -101,   3712,   1229}, 0, {   582,   1500}, {0x43, 0x9b, 0x21, 0xff}}},\n    {{{   102,   3712,   1229}, 0, {  1398,   1500}, {0xdf, 0x9b, 0x43, 0xff}}},\n    {{{   102,   3942,   1229}, 0, {  1398,    582}, {0xbd, 0x65, 0x21, 0xff}}},\n};\n\n// 0x07016378 - 0x07016478\nstatic const Vtx ssl_seg7_vertex_07016378[] = {\n    {{{ -2866,   2125,    106}, 0, {  1586,   -338}, {0x54, 0xac, 0x2a, 0xff}}},\n    {{{ -2764,   2125,    106}, 0, {  1586,   -338}, {0x73, 0xe9, 0x2e, 0xff}}},\n    {{{ -2764,   2125,    311}, 0, {   770,   -338}, {0x6e, 0xc9, 0xe5, 0xff}}},\n    {{{ -1945,   3712,   1536}, 0, {  7736,  -1566}, {0x2f, 0xba, 0xa2, 0xff}}},\n    {{{  -204,   3200,   1536}, 0, {   786,    478}, {0xe5, 0x6e, 0xc9, 0xff}}},\n    {{{  -204,   3072,   1536}, 0, {   786,    990}, {0xda, 0x8e, 0xda, 0xff}}},\n    {{{  1946,   3200,   1536}, 0, { -7798,    478}, {0xd6, 0x54, 0xac, 0xff}}},\n    {{{ -1945,   3072,   1536}, 0, {  7736,    990}, {0x33, 0x99, 0xcd, 0xff}}},\n    {{{ -2764,   1920,    311}, 0, { 12028,   2522}, {0x21, 0x65, 0xbd, 0xff}}},\n    {{{ -2866,   1920,    311}, 0, { 12232,   2522}, {0x54, 0x54, 0xd6, 0xff}}},\n    {{{ -2866,   2125,    311}, 0, { 12232,   1704}, {0x33, 0xcd, 0x99, 0xff}}},\n    {{{ -2764,   2125,    311}, 0, { 12028,   1704}, {0x6e, 0xc9, 0xe5, 0xff}}},\n    {{{ -2866,   2125,    311}, 0, {   770,   -338}, {0x33, 0xcd, 0x99, 0xff}}},\n    {{{ -2866,   1920,    106}, 0, { -4118,    478}, {0x33, 0x33, 0x67, 0xff}}},\n    {{{ -2764,   2125,    106}, 0, { -3914,   -338}, {0x73, 0xe9, 0x2e, 0xff}}},\n    {{{ -2866,   2125,    106}, 0, { -4118,   -338}, {0x54, 0xac, 0x2a, 0xff}}},\n};\n\n// 0x07016478 - 0x07016578\nstatic const Vtx ssl_seg7_vertex_07016478[] = {\n    {{{ -2866,   1920,    106}, 0, { -4118,    478}, {0x33, 0x33, 0x67, 0xff}}},\n    {{{ -2764,   1920,    106}, 0, { -3914,    478}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{ -2764,   2125,    106}, 0, { -3914,   -338}, {0x73, 0xe9, 0x2e, 0xff}}},\n    {{{ -1945,   3072,   2560}, 0, {  8758,  -2076}, {0x54, 0xd6, 0xac, 0xff}}},\n    {{{     0,   3072,   2560}, 0, {   990,  -2076}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{     0,   2560,   2560}, 0, {   990,      0}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{ -1945,   2560,   2560}, 0, {  8758,      0}, {0x33, 0x99, 0xcd, 0xff}}},\n    {{{  3174,   2560,   2560}, 0, {-11680,      0}, {0x00, 0x97, 0xba, 0xff}}},\n    {{{  3174,   3072,   2560}, 0, {-11680,  -2076}, {0x00, 0x88, 0xd8, 0xff}}},\n    {{{ -2764,   1920,   3174}, 0, {-11680,   1500}, {0x54, 0x54, 0xd6, 0xff}}},\n    {{{ -2764,   1920,    311}, 0, {  -250,   1500}, {0x21, 0x65, 0xbd, 0xff}}},\n    {{{ -2764,   2125,    311}, 0, {  -250,    684}, {0x6e, 0xc9, 0xe5, 0xff}}},\n    {{{ -2764,   2560,   3174}, 0, {-11680,  -1054}, {0x33, 0x99, 0xcd, 0xff}}},\n    {{{ -2764,   2560,    311}, 0, {  -250,  -1054}, {0x69, 0xba, 0x00, 0xff}}},\n    {{{ -2764,   2125,    106}, 0, {   564,    684}, {0x73, 0xe9, 0x2e, 0xff}}},\n    {{{ -2764,   2560,    106}, 0, {   564,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07016578 - 0x07016678\nstatic const Vtx ssl_seg7_vertex_07016578[] = {\n    {{{ -2764,   1920,  -2612}, 0, { 11422,   1500}, {0x3d, 0x5c, 0x3d, 0xff}}},\n    {{{ -2764,   2560,  -2612}, 0, { 11422,  -1054}, {0x54, 0xac, 0x2a, 0xff}}},\n    {{{ -2764,   2125,    106}, 0, {   564,    684}, {0x73, 0xe9, 0x2e, 0xff}}},\n    {{{ -2764,   1920,    106}, 0, {   564,   1500}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{ -2764,   2560,    106}, 0, {   564,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2866,   1920,    311}, 0, {  -250,   1500}, {0x54, 0x54, 0xd6, 0xff}}},\n    {{{ -2866,   2125,    106}, 0, {   564,    684}, {0x54, 0xac, 0x2a, 0xff}}},\n    {{{ -2866,   2125,    311}, 0, {  -250,    684}, {0x33, 0xcd, 0x99, 0xff}}},\n    {{{ -2866,   1920,    106}, 0, {   564,   1500}, {0x33, 0x33, 0x67, 0xff}}},\n    {{{  2765,   1280,   2765}, 0, { 12028,   2010}, {0x2a, 0x54, 0x54, 0xff}}},\n    {{{  2765,   1152,   2765}, 0, { 12028,   2522}, {0x37, 0x92, 0x1b, 0xff}}},\n    {{{  2970,   1152,   2765}, 0, { 12846,   2522}, {0xdf, 0x9b, 0x43, 0xff}}},\n    {{{  2765,   1152,   2970}, 0, {-10046,   2522}, {0x2a, 0xac, 0xac, 0xff}}},\n    {{{  2970,   1280,   2970}, 0, {-10864,   2010}, {0xd1, 0x46, 0xa2, 0xff}}},\n    {{{  2970,   1152,   2970}, 0, {-10864,   2522}, {0xa2, 0xba, 0xd1, 0xff}}},\n    {{{  2765,   1280,   2970}, 0, {-10046,   2010}, {0x37, 0x6e, 0xe5, 0xff}}},\n};\n\n// 0x07016678 - 0x07016758\nstatic const Vtx ssl_seg7_vertex_07016678[] = {\n    {{{  2765,   1280,   2970}, 0, {-10864,    990}, {0x37, 0x6e, 0xe5, 0xff}}},\n    {{{  2765,   1152,   2970}, 0, {-10864,   1500}, {0x2a, 0xac, 0xac, 0xff}}},\n    {{{  2765,   1152,   2765}, 0, {-10046,   1500}, {0x37, 0x92, 0x1b, 0xff}}},\n    {{{  2765,   1280,   2765}, 0, {-10046,    990}, {0x2a, 0x54, 0x54, 0xff}}},\n    {{{  2970,   1280,   2765}, 0, { 11006,    990}, {0xbd, 0x65, 0x21, 0xff}}},\n    {{{  2970,   1152,   2970}, 0, { 11824,   1500}, {0xa2, 0xba, 0xd1, 0xff}}},\n    {{{  2970,   1280,   2970}, 0, { 11824,    990}, {0xd1, 0x46, 0xa2, 0xff}}},\n    {{{  2970,   1152,   2765}, 0, { 11006,   1500}, {0xdf, 0x9b, 0x43, 0xff}}},\n    {{{ -3173,   1152,      0}, 0, {   990,   1500}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{ -3173,   1792,  -3022}, 0, { 13058,  -1054}, {0x3d, 0xa4, 0x3d, 0xff}}},\n    {{{ -3173,   1792,      0}, 0, {   990,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2765,   1280,   2765}, 0, { 12028,   2010}, {0x2a, 0x54, 0x54, 0xff}}},\n    {{{  2970,   1152,   2765}, 0, { 12846,   2522}, {0xdf, 0x9b, 0x43, 0xff}}},\n    {{{  2970,   1280,   2765}, 0, { 12846,   2010}, {0xbd, 0x65, 0x21, 0xff}}},\n};\n\n// 0x07016758 - 0x07016848\nstatic const Vtx ssl_seg7_vertex_07016758[] = {\n    {{{ -3173,   1792,  -3022}, 0, {-11680,      0}, {0x3d, 0xa4, 0x3d, 0xff}}},\n    {{{     0,   1152,  -3022}, 0, {   990,   2522}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{     0,   1792,  -3022}, 0, {   990,      0}, {0x00, 0x97, 0x46, 0xff}}},\n    {{{ -3173,   1152,  -3022}, 0, {-11680,   2522}, {0x33, 0x99, 0x33, 0xff}}},\n    {{{  3174,   1152,  -3022}, 0, { 13662,   2522}, {0xda, 0x8e, 0x26, 0xff}}},\n    {{{  3174,   1792,  -3022}, 0, { 13662,      0}, {0xd4, 0x92, 0x2c, 0xff}}},\n    {{{ -3173,   1792,   2560}, 0, { -9228,  -1054}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{ -3173,   1152,   2560}, 0, { -9228,   1500}, {0x26, 0x8e, 0xda, 0xff}}},\n    {{{ -3173,   1152,      0}, 0, {   990,   1500}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{ -3173,   1792,      0}, 0, {   990,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3173,   1152,  -3022}, 0, { 13058,   1500}, {0x33, 0x99, 0x33, 0xff}}},\n    {{{ -3173,   1792,  -3022}, 0, { 13058,  -1054}, {0x3d, 0xa4, 0x3d, 0xff}}},\n    {{{ -1125,    512,   3584}, 0, {  4464,  -1054}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{ -3583,   1152,   3584}, 0, { 14276,  -3610}, {0x3d, 0xa4, 0xc3, 0xff}}},\n    {{{ -1125,   1152,   3584}, 0, {  4464,  -3610}, {0x33, 0x99, 0xcd, 0xff}}},\n};\n\n// 0x07016848 - 0x07016938\nstatic const Vtx ssl_seg7_vertex_07016848[] = {\n    {{{  1126,    512,   3994}, 0, { 15912,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1126,   1152,   3994}, 0, { 15912,  -2588}, {0xdf, 0xbd, 0x9b, 0xff}}},\n    {{{  1126,   1152,   3584}, 0, { 14276,  -2588}, {0xcd, 0x99, 0xcd, 0xff}}},\n    {{{  1126,    512,   3584}, 0, { 14276,      0}, {0xb7, 0xb7, 0xb7, 0xff}}},\n    {{{  1126,   1152,   3584}, 0, { -4526,  -3610}, {0xcd, 0x99, 0xcd, 0xff}}},\n    {{{  3584,    512,   3584}, 0, {-14338,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1126,    512,   3584}, 0, { -4526,  -1054}, {0xb7, 0xb7, 0xb7, 0xff}}},\n    {{{  3584,   1152,   3584}, 0, {-14338,  -3610}, {0xe3, 0x89, 0xe3, 0xff}}},\n    {{{  3584,    640,   3584}, 0, { 14276,   -544}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  3584,   1152,    473}, 0, {  1856,  -2588}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{  3584,    640,    473}, 0, {  1856,   -544}, {0xb7, 0x49, 0xb7, 0xff}}},\n    {{{  3584,   1152,   3584}, 0, { 14276,  -2588}, {0xe3, 0x89, 0xe3, 0xff}}},\n    {{{  3584,    512,   -283}, 0, {-14338,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3994,    512,   -283}, 0, {-15974,  -1054}, {0xcd, 0x99, 0xcd, 0xff}}},\n    {{{  3994,      0,   -283}, 0, {-15974,    990}, {0xc3, 0x5c, 0xc3, 0xff}}},\n};\n\n// 0x07016938 - 0x07016A18\nstatic const Vtx ssl_seg7_vertex_07016938[] = {\n    {{{ -1125,    512,   3584}, 0, {  4464,  -1054}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{ -3583,    512,   3584}, 0, { 14276,  -1054}, {0x26, 0x8e, 0xda, 0xff}}},\n    {{{ -3583,   1152,   3584}, 0, { 14276,  -3610}, {0x3d, 0xa4, 0xc3, 0xff}}},\n    {{{  3994,    512,    473}, 0, { 15912,  -1054}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{  3584,    512,    473}, 0, { 14276,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3584,      0,    473}, 0, { 14276,    990}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  3994,      0,    473}, 0, { 15912,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -3583,    512,    473}, 0, { -1918,      0}, {0x54, 0xd6, 0x54, 0xff}}},\n    {{{ -3583,   1152,   3584}, 0, {-14338,  -2588}, {0x3d, 0xa4, 0xc3, 0xff}}},\n    {{{ -3583,    512,   3584}, 0, {-14338,      0}, {0x26, 0x8e, 0xda, 0xff}}},\n    {{{ -3583,   1152,    473}, 0, { -1918,  -2588}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{  3584,    512,   -283}, 0, {-14338,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3994,      0,   -283}, 0, {-15974,    990}, {0xc3, 0x5c, 0xc3, 0xff}}},\n    {{{  3584,      0,   -283}, 0, {-14338,    990}, {0xc0, 0x00, 0x93, 0xff}}},\n};\n\n// 0x07016A18 - 0x07016B08\nstatic const Vtx ssl_seg7_vertex_07016A18[] = {\n    {{{ -3583,    512,   -283}, 0, {  1100,      0}, {0x54, 0xac, 0xd6, 0xff}}},\n    {{{ -3583,    512,  -3841}, 0, { 15306,      0}, {0x21, 0x9b, 0x43, 0xff}}},\n    {{{ -3583,   1152,  -3841}, 0, { 15306,  -2588}, {0x37, 0x92, 0x1b, 0xff}}},\n    {{{ -3993,      0,    473}, 0, {-15974,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3583,      0,    473}, 0, {-14338,    990}, {0x40, 0x00, 0x6d, 0xff}}},\n    {{{ -3583,    512,    473}, 0, {-14338,  -1054}, {0x54, 0xd6, 0x54, 0xff}}},\n    {{{ -3993,    512,    473}, 0, {-15974,  -1054}, {0x33, 0x99, 0x33, 0xff}}},\n    {{{  3584,   1152,   -283}, 0, { -1162,  -2588}, {0x86, 0x00, 0xe1, 0xff}}},\n    {{{  3584,    640,  -3841}, 0, {-15368,   -544}, {0xbd, 0x65, 0x21, 0xff}}},\n    {{{  3584,    640,   -283}, 0, { -1162,   -544}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  3584,   1152,  -3841}, 0, {-15368,  -2588}, {0xdf, 0x9b, 0x43, 0xff}}},\n    {{{ -3583,      0,   -283}, 0, { 14276,    990}, {0x31, 0x00, 0x8b, 0xff}}},\n    {{{ -3993,      0,   -283}, 0, { 15912,    990}, {0x26, 0x72, 0xda, 0xff}}},\n    {{{ -3993,    512,   -283}, 0, { 15912,  -1054}, {0x54, 0xd6, 0xac, 0xff}}},\n    {{{ -3583,    512,   -283}, 0, { 14276,  -1054}, {0x54, 0xac, 0xd6, 0xff}}},\n};\n\n// 0x07016B08 - 0x07016BF8\nstatic const Vtx ssl_seg7_vertex_07016B08[] = {\n    {{{   770,   1152,  -4148}, 0, {  3042,  -3610}, {0xac, 0xd6, 0x54, 0xff}}},\n    {{{  -511,   1152,  -4148}, 0, { -2074,  -3610}, {0x33, 0x99, 0x33, 0xff}}},\n    {{{  -511,    640,  -4148}, 0, { -2074,  -1566}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{ -3583,    512,   -283}, 0, {  1100,      0}, {0x54, 0xac, 0xd6, 0xff}}},\n    {{{ -3583,   1152,  -3841}, 0, { 15306,  -2588}, {0x37, 0x92, 0x1b, 0xff}}},\n    {{{ -3583,   1152,   -283}, 0, {  1100,  -2588}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{  3584,   1152,  -3841}, 0, { 14276,  -3610}, {0xdf, 0x9b, 0x43, 0xff}}},\n    {{{   770,   1152,  -3841}, 0, {  3042,  -3610}, {0xcd, 0x99, 0x33, 0xff}}},\n    {{{   770,    640,  -3841}, 0, {  3042,  -1566}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  3584,    640,  -3841}, 0, { 14276,  -1566}, {0xbd, 0x65, 0x21, 0xff}}},\n    {{{   770,    640,  -3841}, 0, {-15368,   -544}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{   770,   1152,  -3841}, 0, {-15368,  -2588}, {0xcd, 0x99, 0x33, 0xff}}},\n    {{{   770,   1152,  -4148}, 0, {-16594,  -2588}, {0xac, 0xd6, 0x54, 0xff}}},\n    {{{   770,    640,  -4148}, 0, {-16594,   -544}, {0xda, 0x72, 0x26, 0xff}}},\n    {{{   770,    640,  -4148}, 0, {  3042,  -1566}, {0xda, 0x72, 0x26, 0xff}}},\n};\n\n// 0x07016BF8 - 0x07016CE8\nstatic const Vtx ssl_seg7_vertex_07016BF8[] = {\n    {{{ -1125,      0,   4096}, 0, {  4464,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -3993,    512,   4096}, 0, { 15912,  -1054}, {0x3d, 0xa4, 0xc3, 0xff}}},\n    {{{ -1125,    512,   4096}, 0, {  4464,  -1054}, {0xb7, 0xb7, 0xb7, 0xff}}},\n    {{{ -3583,    512,  -3841}, 0, {-14338,  -1054}, {0x21, 0x9b, 0x43, 0xff}}},\n    {{{ -1101,    512,  -3841}, 0, { -4428,  -1054}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{ -1101,   1152,  -3841}, 0, { -4428,  -3610}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3583,   1152,  -3841}, 0, {-14338,  -3610}, {0x37, 0x92, 0x1b, 0xff}}},\n    {{{  1126,    512,   4096}, 0, { -4526,  -1054}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{  3994,    512,   4096}, 0, {-15974,  -1054}, {0xda, 0x8e, 0xda, 0xff}}},\n    {{{  3994,      0,   4096}, 0, {-15974,    990}, {0xcd, 0x67, 0xcd, 0xff}}},\n    {{{  1126,      0,   4096}, 0, { -4526,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  3994,    512,    473}, 0, {  1856,      0}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{  3994,      0,    473}, 0, {  1856,   2010}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3994,      0,   4096}, 0, { 16320,   2010}, {0xcd, 0x67, 0xcd, 0xff}}},\n    {{{  3994,    512,   4096}, 0, { 16320,      0}, {0xda, 0x8e, 0xda, 0xff}}},\n};\n\n// 0x07016CE8 - 0x07016DD8\nstatic const Vtx ssl_seg7_vertex_07016CE8[] = {\n    {{{ -3993,    512,   -283}, 0, {  1100,      0}, {0x54, 0xd6, 0xac, 0xff}}},\n    {{{ -3993,      0,   -283}, 0, {  1100,   2010}, {0x26, 0x72, 0xda, 0xff}}},\n    {{{ -3993,      0,  -4095}, 0, { 16320,   2010}, {0x3d, 0x5c, 0x3d, 0xff}}},\n    {{{ -1125,      0,   4096}, 0, {  4464,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -3993,      0,   4096}, 0, { 15912,    990}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{ -3993,    512,   4096}, 0, { 15912,  -1054}, {0x3d, 0xa4, 0xc3, 0xff}}},\n    {{{ -3993,    512,   4096}, 0, {-16382,      0}, {0x3d, 0xa4, 0xc3, 0xff}}},\n    {{{ -3993,      0,   4096}, 0, {-16382,   2010}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{ -3993,      0,    473}, 0, { -1918,   2010}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3993,    512,    473}, 0, { -1918,      0}, {0x33, 0x99, 0x33, 0xff}}},\n    {{{  3994,    512,  -4095}, 0, {-16382,      0}, {0xd4, 0x92, 0x2c, 0xff}}},\n    {{{  3994,      0,  -4095}, 0, {-16382,   2010}, {0xda, 0x72, 0x26, 0xff}}},\n    {{{  3994,      0,   -283}, 0, { -1162,   2010}, {0xc3, 0x5c, 0xc3, 0xff}}},\n    {{{  3994,    512,   -283}, 0, { -1162,      0}, {0xcd, 0x99, 0xcd, 0xff}}},\n    {{{ -3993,    512,  -4095}, 0, { 16320,      0}, {0x26, 0x8e, 0x26, 0xff}}},\n};\n\n// 0x07016DD8 - 0x07016EC8\nstatic const Vtx ssl_seg7_vertex_07016DD8[] = {\n    {{{ -1101,   1152,  -4095}, 0, {-16382,  -2588}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1101,      0,  -3685}, 0, {-14746,   2010}, {0x93, 0x37, 0x22, 0xff}}},\n    {{{ -1101,   1152,  -3685}, 0, {-14746,  -2588}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  1102,      0,  -4095}, 0, {  2012,   2010}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  1102,    512,  -4095}, 0, {  2012,      0}, {0x49, 0xb7, 0x49, 0xff}}},\n    {{{  1102,    512,  -3685}, 0, {   376,      0}, {0x49, 0xb7, 0x49, 0xff}}},\n    {{{  1102,      0,  -3685}, 0, {   376,   2010}, {0x62, 0x31, 0x3e, 0xff}}},\n    {{{  -511,    435,  -4148}, 0, { 16532,    274}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -511,   1152,  -4148}, 0, { 16532,  -2588}, {0x33, 0x99, 0x33, 0xff}}},\n    {{{  -511,   1152,  -3685}, 0, { 14684,  -2588}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{  -511,    435,  -3685}, 0, { 14684,    274}, {0x0c, 0x56, 0x5c, 0xff}}},\n    {{{  1102,      0,  -4095}, 0, {  4366,    990}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  3994,      0,  -4095}, 0, { 15912,    990}, {0xda, 0x72, 0x26, 0xff}}},\n    {{{  3994,    512,  -4095}, 0, { 15912,  -1054}, {0xd4, 0x92, 0x2c, 0xff}}},\n    {{{  1102,    512,  -4095}, 0, {  4366,  -1054}, {0x49, 0xb7, 0x49, 0xff}}},\n};\n\n// 0x07016EC8 - 0x07016FB8\nstatic const Vtx ssl_seg7_vertex_07016EC8[] = {\n    {{{  1716,      0,  -4095}, 0, {  6820,    990}, {0xac, 0x2a, 0x54, 0xff}}},\n    {{{  1307,      0,  -4095}, 0, {  5184,    990}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{  1307,   -306,  -4095}, 0, {  5184,   2214}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1101,   1152,  -4095}, 0, {-16382,  -2588}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1101,      0,  -4095}, 0, {-16382,   2010}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -1101,      0,  -3685}, 0, {-14746,   2010}, {0x93, 0x37, 0x22, 0xff}}},\n    {{{ -3993,      0,  -4095}, 0, {-15974,    990}, {0x3d, 0x5c, 0x3d, 0xff}}},\n    {{{ -1101,    512,  -4095}, 0, { -4428,  -1054}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{ -3993,    512,  -4095}, 0, {-15974,  -1054}, {0x26, 0x8e, 0x26, 0xff}}},\n    {{{ -1101,      0,  -4095}, 0, { -4428,    990}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -3071,   -306,  -4095}, 0, {-12294,   2214}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1306,   -306,  -4095}, 0, { -5246,   2214}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1306,      0,  -4095}, 0, { -5246,    990}, {0xac, 0x2a, 0x54, 0xff}}},\n    {{{ -3071,      0,  -4095}, 0, {-12294,    990}, {0x49, 0x49, 0x49, 0xff}}},\n    {{{  1716,   -306,  -4095}, 0, {  6820,   2214}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07016FB8 - 0x07016FF8\nstatic const Vtx ssl_seg7_vertex_07016FB8[] = {\n    {{{  2433,      0,  -4095}, 0, {  9682,    990}, {0xac, 0x2a, 0x54, 0xff}}},\n    {{{  2023,      0,  -4095}, 0, {  8046,    990}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{  2023,   -306,  -4095}, 0, {  8046,   2214}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2433,   -306,  -4095}, 0, {  9682,   2214}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07016FF8 - 0x070170E8\nstatic const Vtx ssl_seg7_vertex_07016FF8[] = {\n    {{{   -63,    896,   -626}, 0, {   734,   1500}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   -63,   1152,   -754}, 0, {   224,    478}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   -63,    896,   -754}, 0, {   224,   1500}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{    64,    896,   -754}, 0, {   734,   1500}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{    64,   1152,   -626}, 0, {   224,    478}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{    64,    896,   -626}, 0, {   224,   1500}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{    64,   1152,   -754}, 0, {   734,    478}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   -63,   1152,   -754}, 0, {   734,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{    64,    896,   -754}, 0, {   224,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   -63,    896,   -754}, 0, {   734,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{    64,   1152,   -754}, 0, {   224,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{    64,   1152,   -626}, 0, {   734,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   -63,   1152,   -626}, 0, {   224,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   -63,    896,   -626}, 0, {   224,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{    64,    896,   -626}, 0, {   734,    990}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x070170E8 - 0x070171D8\nstatic const Vtx ssl_seg7_vertex_070170E8[] = {\n    {{{  2381,   -306,  -2585}, 0, { -1154,   4258}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  2381,   1126,  -2585}, 0, { -1154,  -1462}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{  2381,   1126,  -2533}, 0, { -1358,  -1462}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{   -63,    896,   -626}, 0, {   734,   1500}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   -63,   1152,   -626}, 0, {   734,    478}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   -63,   1152,   -754}, 0, {   224,    478}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2381,   1126,  -2585}, 0, {  -950,  -1462}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{  2330,   1126,  -2533}, 0, { -1154,  -1462}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  2381,   1126,  -2533}, 0, { -1154,  -1462}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  2330,   1126,  -2585}, 0, {  -950,  -1462}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{  2381,   1126,  -2533}, 0, {  -746,  -1462}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  2330,   -306,  -2533}, 0, {  -950,   4258}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2381,   -306,  -2533}, 0, {  -746,   4258}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2330,   1126,  -2533}, 0, {  -950,  -1462}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  2381,   -306,  -2533}, 0, { -1358,   4258}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x070171D8 - 0x070172C8\nstatic const Vtx ssl_seg7_vertex_070171D8[] = {\n    {{{  2381,    640,  -3404}, 0, {  2318,    478}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  2381,   1152,  -3404}, 0, {  2318,  -1462}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  2381,   1152,  -3353}, 0, {  2114,  -1462}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2330,   -306,  -2533}, 0, {  1910,   4258}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2330,   1126,  -2533}, 0, {  1910,  -1462}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  2330,   1126,  -2585}, 0, {  1706,  -1462}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{  2330,   -306,  -2585}, 0, {  1706,   4258}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  2330,   -306,  -2585}, 0, {  1910,   4258}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  2381,   1126,  -2585}, 0, {  1706,  -1462}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{  2381,   -306,  -2585}, 0, {  1706,   4258}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  2330,   1126,  -2585}, 0, {  1910,  -1462}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{  2381,   1152,  -3353}, 0, {  -746,  -1462}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2330,    640,  -3353}, 0, {  -950,    478}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2381,    640,  -3353}, 0, {  -746,    478}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2330,   1152,  -3353}, 0, {  -950,  -1462}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x070172C8 - 0x070173B8\nstatic const Vtx ssl_seg7_vertex_070172C8[] = {\n    {{{  3200,   1152,  -2585}, 0, {  -950,  -1462}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{  3149,   1152,  -2585}, 0, {  -950,  -1462}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{  3149,   1152,  -2533}, 0, { -1154,  -1462}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  2381,    640,  -3404}, 0, {  2318,    478}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  2381,   1152,  -3353}, 0, {  2114,  -1462}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2381,    640,  -3353}, 0, {  2114,    478}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2330,    640,  -3353}, 0, { -1154,    478}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2330,   1152,  -3404}, 0, { -1358,  -1462}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{  2330,    640,  -3404}, 0, { -1358,    478}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  2330,   1152,  -3353}, 0, { -1154,  -1462}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2330,    640,  -3404}, 0, {  1910,    478}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  2330,   1152,  -3404}, 0, {  1910,  -1462}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{  2381,   1152,  -3404}, 0, {  1706,  -1462}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  2381,    640,  -3404}, 0, {  1706,    478}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  3200,   1152,  -2533}, 0, { -1154,  -1462}, {0x54, 0x2a, 0x54, 0xff}}},\n};\n\n// 0x070173B8 - 0x070174A8\nstatic const Vtx ssl_seg7_vertex_070173B8[] = {\n    {{{  3149,    640,  -2585}, 0, { -1358,    478}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  3200,   1152,  -2585}, 0, { -1564,  -1462}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{  3200,    640,  -2585}, 0, { -1564,    478}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  3200,   1152,  -2533}, 0, {  2524,  -1462}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  3149,    640,  -2533}, 0, {  2318,    478}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3200,    640,  -2533}, 0, {  2524,    478}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3149,   1152,  -2533}, 0, {  2318,  -1462}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  3200,    640,  -2585}, 0, { -1154,    480}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  3200,   1152,  -2533}, 0, { -1358,  -1462}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  3200,    640,  -2533}, 0, { -1358,    480}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3200,   1152,  -2585}, 0, { -1154,  -1462}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{  3149,    640,  -2533}, 0, {  1910,    480}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3149,   1152,  -2585}, 0, {  1706,  -1462}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{  3149,    640,  -2585}, 0, {  1706,    480}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  3149,   1152,  -2533}, 0, {  1910,  -1462}, {0xcd, 0x67, 0x33, 0xff}}},\n};\n\n// 0x070174A8 - 0x070175A8\nstatic const Vtx ssl_seg7_vertex_070174A8[] = {\n    {{{  1377,   1971,   3139}, 0, { 10576,  -1566}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  1326,   1971,   3139}, 0, { 10372,  -1566}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  1326,   1229,   3139}, 0, { 10372,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3149,    640,  -2585}, 0, { -1358,    478}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  3149,   1152,  -2585}, 0, { -1358,  -1462}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{  3200,   1152,  -2585}, 0, { -1564,  -1462}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{  1377,   1971,   3087}, 0, {  2074,  -1566}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  1326,   1971,   3087}, 0, {  2074,  -1566}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  1326,   1971,   3139}, 0, {  2278,  -1566}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  1377,   1971,   3139}, 0, {  2278,  -1566}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  1326,   1229,   3139}, 0, {  2278,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1326,   1229,   3087}, 0, {  2074,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1377,   1229,   3139}, 0, { 10576,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1326,   1229,   2647}, 0, {   316,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1326,   1971,   2647}, 0, {   316,  -1566}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  1326,   1971,   2596}, 0, {   112,  -1566}, {0xac, 0x2a, 0xac, 0xff}}},\n};\n\n// 0x070175A8 - 0x07017698\nstatic const Vtx ssl_seg7_vertex_070175A8[] = {\n    {{{  1377,   1229,   3087}, 0, { 10250,  -3098}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1377,   1971,   3139}, 0, { 10454,  -5654}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  1377,   1229,   3139}, 0, { 10454,  -3098}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1377,   1971,   3087}, 0, { 10250,  -5654}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  1377,   1229,   3087}, 0, {   602,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1326,   1971,   3087}, 0, {   806,  -1566}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  1377,   1971,   3087}, 0, {   602,  -1566}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  1326,   1229,   3087}, 0, {   806,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1377,   1971,   2596}, 0, {   112,  -1566}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  1326,   1971,   2596}, 0, {   112,  -1566}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  1326,   1971,   2647}, 0, {   316,  -1566}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  1377,   1971,   2647}, 0, {   316,  -1566}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  1377,   1229,   2596}, 0, {   602,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1326,   1229,   2596}, 0, {   806,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1326,   1971,   2596}, 0, {   806,  -1566}, {0xac, 0x2a, 0xac, 0xff}}},\n};\n\n// 0x07017698 - 0x07017778\nstatic const Vtx ssl_seg7_vertex_07017698[] = {\n    {{{  1326,   1229,   2647}, 0, {   316,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1326,   1971,   2596}, 0, {   112,  -1566}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  1326,   1229,   2596}, 0, {   112,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1377,   1971,   2647}, 0, { 10576,  -1566}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  1326,   1229,   2647}, 0, { 10372,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1377,   1229,   2647}, 0, { 10576,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1326,   1971,   2647}, 0, { 10372,  -1566}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  1377,   1229,   2596}, 0, {  8288,  -3098}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1377,   1971,   2647}, 0, {  8492,  -5654}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  1377,   1229,   2647}, 0, {  8492,  -3098}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1377,   1971,   2596}, 0, {  8288,  -5654}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  1377,   1229,   2596}, 0, {   602,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1326,   1971,   2596}, 0, {   806,  -1566}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  1377,   1971,   2596}, 0, {   602,  -1566}, {0x33, 0x67, 0xcd, 0xff}}},\n};\n\n// 0x07017778 - 0x07017858\nstatic const Vtx ssl_seg7_vertex_07017778[] = {\n    {{{ -1325,   1971,   3087}, 0, {  2074,  -1566}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{ -1376,   1971,   3087}, 0, {  2074,  -1566}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{ -1376,   1971,   3139}, 0, {  2278,  -1566}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -1325,   1971,   3139}, 0, {  2278,  -1566}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{ -1376,   1229,   3139}, 0, {  2278,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1376,   1229,   3087}, 0, {  2074,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1325,   1971,   3139}, 0, {  -214,  -1566}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{ -1376,   1229,   3139}, 0, {  -418,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1325,   1229,   3139}, 0, {  -214,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1376,   1971,   3139}, 0, {  -418,  -1566}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -1325,   1229,   3087}, 0, { 10250,  -3098}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1325,   1971,   3139}, 0, { 10454,  -5654}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{ -1325,   1229,   3139}, 0, { 10454,  -3098}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1325,   1971,   3087}, 0, { 10250,  -5654}, {0x33, 0x67, 0xcd, 0xff}}},\n};\n\n// 0x07017858 - 0x07017938\nstatic const Vtx ssl_seg7_vertex_07017858[] = {\n    {{{ -1325,   1229,   3087}, 0, { 11394,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1376,   1971,   3087}, 0, { 11598,  -1566}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{ -1325,   1971,   3087}, 0, { 11394,  -1566}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{ -1376,   1229,   3087}, 0, { 11598,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1325,   1971,   2596}, 0, {   112,  -1566}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{ -1376,   1971,   2596}, 0, {   112,  -1566}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{ -1376,   1971,   2647}, 0, {   316,  -1566}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -1325,   1971,   2647}, 0, {   316,  -1566}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{ -1376,   1229,   2647}, 0, {   316,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1376,   1229,   2596}, 0, {   112,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1325,   1971,   2647}, 0, {  -214,  -1566}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{ -1376,   1229,   2647}, 0, {  -418,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1325,   1229,   2647}, 0, {  -214,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1376,   1971,   2647}, 0, {  -418,  -1566}, {0xcd, 0x67, 0x33, 0xff}}},\n};\n\n// 0x07017938 - 0x07017A28\nstatic const Vtx ssl_seg7_vertex_07017938[] = {\n    {{{ -2802,    -81,  -1561}, 0, {   990,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{ -2546,    -81,  -1561}, 0, {     0,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{ -2546,   -132,  -1561}, 0, {     0,    172}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1325,   1229,   2596}, 0, {  8288,  -3098}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1325,   1971,   2647}, 0, {  8492,  -5654}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{ -1325,   1229,   2647}, 0, {  8492,  -3098}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1325,   1971,   2596}, 0, {  8288,  -5654}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{ -1325,   1229,   2596}, 0, { 11394,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1376,   1971,   2596}, 0, { 11598,  -1566}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{ -1325,   1971,   2596}, 0, { 11394,  -1566}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{ -1376,   1229,   2596}, 0, { 11598,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2802,   -132,  -1305}, 0, {     0,    172}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2546,    -81,  -1305}, 0, {   990,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{ -2802,    -81,  -1305}, 0, {     0,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -2546,   -132,  -1305}, 0, {   990,    172}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07017A28 - 0x07017B18\nstatic const Vtx ssl_seg7_vertex_07017A28[] = {\n    {{{ -1522,   -132,  -1305}, 0, {     0,    172}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1266,    -81,  -1305}, 0, {   990,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{ -1522,    -81,  -1305}, 0, {     0,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -2802,    -81,  -1561}, 0, {   990,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{ -2546,   -132,  -1561}, 0, {     0,    172}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2802,   -132,  -1561}, 0, {   990,    172}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2546,   -132,  -1561}, 0, {   990,    172}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2546,    -81,  -1305}, 0, {     0,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{ -2546,   -132,  -1305}, 0, {     0,    172}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2546,    -81,  -1561}, 0, {   990,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{ -2802,   -132,  -1305}, 0, {   990,    172}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2802,    -81,  -1561}, 0, {     0,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{ -2802,   -132,  -1561}, 0, {     0,    172}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2802,    -81,  -1305}, 0, {   990,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -1266,   -132,  -1305}, 0, {   990,    172}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07017B18 - 0x07017C08\nstatic const Vtx ssl_seg7_vertex_07017B18[] = {\n    {{{ -1010,   -132,   -537}, 0, {     0,    172}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -754,    -81,   -537}, 0, {   990,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{ -1010,    -81,   -537}, 0, {     0,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -1522,    -81,  -1561}, 0, {   990,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{ -1266,   -132,  -1561}, 0, {     0,    172}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1522,   -132,  -1561}, 0, {   990,    172}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1266,    -81,  -1561}, 0, {     0,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{ -1266,   -132,  -1561}, 0, {   990,    172}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1266,    -81,  -1561}, 0, {   990,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{ -1266,    -81,  -1305}, 0, {     0,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{ -1266,   -132,  -1305}, 0, {     0,    172}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1522,   -132,  -1305}, 0, {   990,    172}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1522,    -81,  -1561}, 0, {     0,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{ -1522,   -132,  -1561}, 0, {     0,    172}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1522,    -81,  -1305}, 0, {   990,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n};\n\n// 0x07017C08 - 0x07017CF8\nstatic const Vtx ssl_seg7_vertex_07017C08[] = {\n    {{{ -1010,   -132,   -537}, 0, {   990,    172}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1010,    -81,   -537}, 0, {   990,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -1010,    -81,   -793}, 0, {     0,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{ -1010,   -132,   -537}, 0, {     0,    172}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -754,   -132,   -537}, 0, {   990,    172}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -754,    -81,   -537}, 0, {   990,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{ -1010,    -81,   -793}, 0, {   990,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  -754,   -132,   -793}, 0, {     0,    172}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1010,   -132,   -793}, 0, {   990,    172}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -754,    -81,   -793}, 0, {     0,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  -754,   -132,   -793}, 0, {   990,    172}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -754,    -81,   -537}, 0, {     0,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  -754,   -132,   -537}, 0, {     0,    172}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -754,    -81,   -793}, 0, {   990,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{ -1010,   -132,   -793}, 0, {     0,    172}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07017CF8 - 0x07017DE8\nstatic const Vtx ssl_seg7_vertex_07017CF8[] = {\n    {{{ -1522,   -132,    230}, 0, {   990,    172}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1522,    -81,    -25}, 0, {     0,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{ -1522,   -132,    -25}, 0, {     0,    172}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1522,   -132,    230}, 0, {     0,    172}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1266,   -132,    230}, 0, {   990,    172}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1266,    -81,    230}, 0, {   990,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{ -1522,    -81,    230}, 0, {     0,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -1522,    -81,    -25}, 0, {   990,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{ -1266,   -132,    -25}, 0, {     0,    172}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1522,   -132,    -25}, 0, {   990,    172}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1266,    -81,    -25}, 0, {     0,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{ -1266,   -132,    -25}, 0, {   990,    172}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1266,    -81,    -25}, 0, {   990,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{ -1266,    -81,    230}, 0, {     0,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{ -1266,   -132,    230}, 0, {     0,    172}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07017DE8 - 0x07017ED8\nstatic const Vtx ssl_seg7_vertex_07017DE8[] = {\n    {{{ -2546,   -132,    -25}, 0, {   990,    172}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2546,    -81,    -25}, 0, {   990,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{ -2546,    -81,    230}, 0, {     0,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{ -1522,   -132,    230}, 0, {   990,    172}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1522,    -81,    230}, 0, {   990,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -1522,    -81,    -25}, 0, {     0,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{ -2802,   -132,    230}, 0, {     0,    172}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2546,    -81,    230}, 0, {   990,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{ -2802,    -81,    230}, 0, {     0,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -2546,   -132,    230}, 0, {   990,    172}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2802,    -81,    -25}, 0, {   990,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{ -2546,    -81,    -25}, 0, {     0,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{ -2546,   -132,    -25}, 0, {     0,    172}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2802,   -132,    -25}, 0, {   990,    172}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2546,   -132,    230}, 0, {     0,    172}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07017ED8 - 0x07017FC8\nstatic const Vtx ssl_seg7_vertex_07017ED8[] = {\n    {{{   128,   -132,   2253}, 0, {   990,    172}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   128,    -81,   2253}, 0, {   990,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{   128,    -81,   2509}, 0, {     0,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{ -2802,   -132,    230}, 0, {   990,    172}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2802,    -81,    -25}, 0, {     0,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{ -2802,   -132,    -25}, 0, {     0,    172}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2802,    -81,    230}, 0, {   990,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  -127,   -132,   2509}, 0, {     0,    172}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   128,    -81,   2509}, 0, {   990,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  -127,    -81,   2509}, 0, {     0,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{   128,   -132,   2509}, 0, {   990,    172}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -127,    -81,   2253}, 0, {   990,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{   128,   -132,   2253}, 0, {     0,    172}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -127,   -132,   2253}, 0, {   990,    172}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   128,    -81,   2253}, 0, {     0,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n};\n\n// 0x07017FC8 - 0x070180B8\nstatic const Vtx ssl_seg7_vertex_07017FC8[] = {\n    {{{  1805,    -81,  -1509}, 0, {   990,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  2061,    -81,  -1509}, 0, {     0,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  2061,   -132,  -1509}, 0, {     0,    172}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   128,   -132,   2253}, 0, {   990,    172}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   128,    -81,   2509}, 0, {     0,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{   128,   -132,   2509}, 0, {     0,    172}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -127,   -132,   2509}, 0, {   990,    172}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -127,    -81,   2253}, 0, {     0,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  -127,   -132,   2253}, 0, {     0,    172}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -127,    -81,   2509}, 0, {   990,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  1805,   -132,  -1253}, 0, {     0,    172}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2061,    -81,  -1253}, 0, {   990,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  1805,    -81,  -1253}, 0, {     0,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  2061,   -132,  -1253}, 0, {   990,    172}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1805,   -132,  -1509}, 0, {   990,    172}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x070180B8 - 0x070181A8\nstatic const Vtx ssl_seg7_vertex_070180B8[] = {\n    {{{  1933,    -81,  -2021}, 0, {   990,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  2189,   -132,  -2021}, 0, {     0,    172}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1933,   -132,  -2021}, 0, {   990,    172}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2061,   -132,  -1509}, 0, {   990,    172}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2061,    -81,  -1253}, 0, {     0,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  2061,   -132,  -1253}, 0, {     0,    172}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2061,    -81,  -1509}, 0, {   990,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  1805,   -132,  -1253}, 0, {   990,    172}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1805,    -81,  -1253}, 0, {   990,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  1805,    -81,  -1509}, 0, {     0,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  1805,   -132,  -1509}, 0, {     0,    172}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1933,   -132,  -1765}, 0, {     0,    172}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2189,    -81,  -1765}, 0, {   990,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  1933,    -81,  -1765}, 0, {     0,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  2189,   -132,  -1765}, 0, {   990,    172}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x070181A8 - 0x07018298\nstatic const Vtx ssl_seg7_vertex_070181A8[] = {\n    {{{  2445,   -132,  -1893}, 0, {     0,    172}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2701,   -132,  -1893}, 0, {   990,    172}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2701,    -81,  -1893}, 0, {   990,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  1933,    -81,  -2021}, 0, {   990,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  2189,    -81,  -2021}, 0, {     0,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  2189,   -132,  -2021}, 0, {     0,    172}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2189,   -132,  -2021}, 0, {   990,    172}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2189,    -81,  -1765}, 0, {     0,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  2189,   -132,  -1765}, 0, {     0,    172}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2189,    -81,  -2021}, 0, {   990,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  1933,   -132,  -1765}, 0, {   990,    172}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1933,    -81,  -2021}, 0, {     0,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  1933,   -132,  -2021}, 0, {     0,    172}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1933,    -81,  -1765}, 0, {   990,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  2445,    -81,  -1893}, 0, {     0,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n};\n\n// 0x07018298 - 0x07018388\nstatic const Vtx ssl_seg7_vertex_07018298[] = {\n    {{{  2573,   -132,  -2405}, 0, {     0,    172}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2829,    -81,  -2405}, 0, {   990,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  2573,    -81,  -2405}, 0, {     0,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  2445,    -81,  -2149}, 0, {   990,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  2701,    -81,  -2149}, 0, {     0,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  2701,   -132,  -2149}, 0, {     0,    172}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2445,   -132,  -2149}, 0, {   990,    172}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2701,   -132,  -2149}, 0, {   990,    172}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2701,    -81,  -1893}, 0, {     0,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  2701,   -132,  -1893}, 0, {     0,    172}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2701,    -81,  -2149}, 0, {   990,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  2445,   -132,  -1893}, 0, {   990,    172}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2445,    -81,  -1893}, 0, {   990,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  2445,    -81,  -2149}, 0, {     0,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  2445,   -132,  -2149}, 0, {     0,    172}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07018388 - 0x07018478\nstatic const Vtx ssl_seg7_vertex_07018388[] = {\n    {{{  2573,   -132,  -2405}, 0, {   990,    172}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2573,    -81,  -2405}, 0, {   990,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  2573,    -81,  -2661}, 0, {     0,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  2573,   -132,  -2405}, 0, {     0,    172}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2829,   -132,  -2405}, 0, {   990,    172}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2829,    -81,  -2405}, 0, {   990,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  2573,    -81,  -2661}, 0, {   990,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  2829,   -132,  -2661}, 0, {     0,    172}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2573,   -132,  -2661}, 0, {   990,    172}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2829,    -81,  -2661}, 0, {     0,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  2829,   -132,  -2661}, 0, {   990,    172}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2829,    -81,  -2661}, 0, {   990,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  2829,    -81,  -2405}, 0, {     0,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  2829,   -132,  -2405}, 0, {     0,    172}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2573,   -132,  -2661}, 0, {     0,    172}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07018478 - 0x07018568\nstatic const Vtx ssl_seg7_vertex_07018478[] = {\n    {{{  2573,   -132,  -2917}, 0, {   990,    172}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2573,    -81,  -2917}, 0, {   990,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  2573,    -81,  -3173}, 0, {     0,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  2573,   -132,  -2917}, 0, {     0,    172}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2829,    -81,  -2917}, 0, {   990,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  2573,    -81,  -2917}, 0, {     0,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  2829,   -132,  -2917}, 0, {   990,    172}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2573,    -81,  -3173}, 0, {   990,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  2829,   -132,  -3173}, 0, {     0,    172}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2573,   -132,  -3173}, 0, {   990,    172}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2829,    -81,  -3173}, 0, {     0,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  2829,   -132,  -3173}, 0, {   990,    172}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2829,    -81,  -2917}, 0, {     0,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  2829,   -132,  -2917}, 0, {     0,    172}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2829,    -81,  -3173}, 0, {   990,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n};\n\n// 0x07018568 - 0x07018658\nstatic const Vtx ssl_seg7_vertex_07018568[] = {\n    {{{  2560,   -132,   2714}, 0, {   990,    172}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2560,    -81,   2970}, 0, {     0,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  2560,   -132,   2970}, 0, {     0,    172}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2573,   -132,  -2917}, 0, {   990,    172}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2573,    -81,  -3173}, 0, {     0,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  2573,   -132,  -3173}, 0, {     0,    172}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2304,   -132,   2970}, 0, {     0,    172}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2560,    -81,   2970}, 0, {   990,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  2304,    -81,   2970}, 0, {     0,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  2560,   -132,   2970}, 0, {   990,    172}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2304,    -81,   2714}, 0, {   990,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  2560,   -132,   2714}, 0, {     0,    172}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2304,   -132,   2714}, 0, {   990,    172}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2560,    -81,   2714}, 0, {     0,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  2560,    -81,   2714}, 0, {   990,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n};\n\n// 0x07018658 - 0x07018748\nstatic const Vtx ssl_seg7_vertex_07018658[] = {\n    {{{  2970,   -132,   2714}, 0, {   990,    172}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2970,    -81,   2970}, 0, {     0,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  2970,   -132,   2970}, 0, {     0,    172}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2304,   -132,   2970}, 0, {   990,    172}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2304,    -81,   2970}, 0, {   990,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  2304,    -81,   2714}, 0, {     0,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  2304,   -132,   2714}, 0, {     0,    172}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2714,   -132,   2970}, 0, {     0,    172}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2970,   -132,   2970}, 0, {   990,    172}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2970,    -81,   2970}, 0, {   990,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  2714,    -81,   2970}, 0, {     0,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  2714,    -81,   2714}, 0, {   990,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  2970,    -81,   2714}, 0, {     0,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  2970,   -132,   2714}, 0, {     0,    172}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2714,   -132,   2714}, 0, {   990,    172}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07018748 - 0x07018838\nstatic const Vtx ssl_seg7_vertex_07018748[] = {\n    {{{   896,   -306,   2586}, 0, { 11108,   3236}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   896,      0,   3072}, 0, {  9166,   2010}, {0x1d, 0x77, 0xe3, 0xff}}},\n    {{{   896,   -306,   3072}, 0, {  9166,   3236}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2970,   -132,   2714}, 0, {   990,    172}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2970,    -81,   2714}, 0, {   990,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  2970,    -81,   2970}, 0, {     0,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  2714,   -132,   2970}, 0, {   990,    172}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2714,    -81,   2970}, 0, {   990,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  2714,    -81,   2714}, 0, {     0,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  2714,   -132,   2714}, 0, {     0,    172}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -895,   -306,   3072}, 0, { -5140,   3236}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -895,      0,   3072}, 0, { -5140,   2010}, {0xda, 0x72, 0xda, 0xff}}},\n    {{{  -895,      0,   2586}, 0, { -7082,   2010}, {0xb7, 0x49, 0xb7, 0xff}}},\n    {{{  -895,   -306,   2586}, 0, { -7082,   3236}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   896,      0,   2586}, 0, { 11108,   2010}, {0x49, 0x49, 0xb7, 0xff}}},\n};\n\n// 0x07018838 - 0x07018928\nstatic const Vtx ssl_seg7_vertex_07018838[] = {\n    {{{   387,   1967,   -716}, 0, {  1194,    480}, {0x54, 0x54, 0xd6, 0xff}}},\n    {{{   387,   1967,   -460}, 0, {   172,    480}, {0x33, 0x33, 0x67, 0xff}}},\n    {{{   387,   1839,   -460}, 0, {   172,    990}, {0x67, 0xcd, 0x33, 0xff}}},\n    {{{   896,   -306,   2586}, 0, { -2586,   3236}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -895,   -306,   2586}, 0, {  4568,   3236}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -895,      0,   2586}, 0, {  4568,   2010}, {0xb7, 0x49, 0xb7, 0xff}}},\n    {{{   896,      0,   2586}, 0, { -2586,   2010}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{   131,   1967,   -716}, 0, {   990,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{   387,   1967,   -716}, 0, {    36,      0}, {0x54, 0x54, 0xd6, 0xff}}},\n    {{{   387,   1839,   -716}, 0, {    36,    480}, {0x2a, 0xac, 0xac, 0xff}}},\n    {{{   131,   1839,   -716}, 0, {   990,    478}, {0xb7, 0xb7, 0xb7, 0xff}}},\n    {{{   387,   1967,   -460}, 0, {   990,      0}, {0x33, 0x33, 0x67, 0xff}}},\n    {{{   131,   1967,   -460}, 0, {    36,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{   131,   1839,   -460}, 0, {    36,    480}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{   387,   1839,   -460}, 0, {   990,    478}, {0x67, 0xcd, 0x33, 0xff}}},\n};\n\n// 0x07018928 - 0x07018A18\nstatic const Vtx ssl_seg7_vertex_07018928[] = {\n    {{{  -128,   2940,   -460}, 0, {   990,      0}, {0x33, 0x33, 0x67, 0xff}}},\n    {{{  -384,   2940,   -460}, 0, {    36,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  -384,   2812,   -460}, 0, {    36,    480}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{   387,   1967,   -716}, 0, {  1194,    480}, {0x54, 0x54, 0xd6, 0xff}}},\n    {{{   387,   1839,   -460}, 0, {   172,    990}, {0x67, 0xcd, 0x33, 0xff}}},\n    {{{   387,   1839,   -716}, 0, {  1194,    990}, {0x2a, 0xac, 0xac, 0xff}}},\n    {{{   131,   1839,   -460}, 0, {  2318,    478}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{   131,   1967,   -460}, 0, {  2318,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{   131,   1967,   -716}, 0, {  1296,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{   131,   1839,   -716}, 0, {  1296,    478}, {0xb7, 0xb7, 0xb7, 0xff}}},\n    {{{  -384,   2940,   -716}, 0, {   990,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  -128,   2940,   -716}, 0, {    36,      0}, {0x54, 0x54, 0xd6, 0xff}}},\n    {{{  -128,   2812,   -716}, 0, {    36,    480}, {0x2a, 0xac, 0xac, 0xff}}},\n    {{{  -384,   2812,   -716}, 0, {   990,    478}, {0xb7, 0xb7, 0xb7, 0xff}}},\n    {{{  -128,   2812,   -460}, 0, {   990,    478}, {0x67, 0xcd, 0x33, 0xff}}},\n};\n\n// 0x07018A18 - 0x07018B08\nstatic const Vtx ssl_seg7_vertex_07018A18[] = {\n    {{{   387,   3913,   -716}, 0, {  1194,    480}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{   387,   3913,   -460}, 0, {   172,    480}, {0x33, 0x33, 0x67, 0xff}}},\n    {{{   387,   3785,   -460}, 0, {   172,    990}, {0x67, 0xcd, 0x33, 0xff}}},\n    {{{  -128,   2940,   -716}, 0, {  1194,    480}, {0x54, 0x54, 0xd6, 0xff}}},\n    {{{  -128,   2940,   -460}, 0, {   172,    480}, {0x33, 0x33, 0x67, 0xff}}},\n    {{{  -128,   2812,   -460}, 0, {   172,    990}, {0x67, 0xcd, 0x33, 0xff}}},\n    {{{  -128,   2812,   -716}, 0, {  1194,    990}, {0x2a, 0xac, 0xac, 0xff}}},\n    {{{  -384,   2812,   -460}, 0, {  2318,    478}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{  -384,   2940,   -460}, 0, {  2318,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  -384,   2940,   -716}, 0, {  1296,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  -384,   2812,   -716}, 0, {  1296,    478}, {0xb7, 0xb7, 0xb7, 0xff}}},\n    {{{   387,   3913,   -460}, 0, {   990,      0}, {0x33, 0x33, 0x67, 0xff}}},\n    {{{   131,   3785,   -460}, 0, {    36,    480}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{   387,   3785,   -460}, 0, {   990,    478}, {0x67, 0xcd, 0x33, 0xff}}},\n    {{{   131,   3913,   -460}, 0, {    36,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n};\n\n// 0x07018B08 - 0x07018BF8\nstatic const Vtx ssl_seg7_vertex_07018B08[] = {\n    {{{  3174,   -306,   3174}, 0, {  1398,   3236}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  3174,   1152,   3174}, 0, {  1398,  -2588}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{  2970,   1152,   3174}, 0, {   582,  -2588}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{   387,   3913,   -716}, 0, {  1194,    480}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{   387,   3785,   -460}, 0, {   172,    990}, {0x67, 0xcd, 0x33, 0xff}}},\n    {{{   387,   3785,   -716}, 0, {  1194,    990}, {0x38, 0x8f, 0x00, 0xff}}},\n    {{{   131,   3785,   -460}, 0, {  2318,    478}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{   131,   3913,   -460}, 0, {  2318,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{   131,   3913,   -716}, 0, {  1296,      0}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{   131,   3785,   -716}, 0, {  1296,    478}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  3174,   -306,   2970}, 0, {  1398,   2214}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  3174,   1152,   2970}, 0, {  1398,  -3610}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3174,   1152,   3174}, 0, {   582,  -3610}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{  3174,   -306,   3174}, 0, {   582,   2214}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  2970,   -306,   3174}, 0, {   582,   3236}, {0x8f, 0x00, 0x38, 0xff}}},\n};\n\n// 0x07018BF8 - 0x07018CE8\nstatic const Vtx ssl_seg7_vertex_07018BF8[] = {\n    {{{  2970,   1280,   2970}, 0, {   376,  -2076}, {0xd1, 0x46, 0xa2, 0xff}}},\n    {{{  3174,   2560,   2970}, 0, {  -438,  -7186}, {0x00, 0xc8, 0x8f, 0xff}}},\n    {{{  3174,   1280,   2970}, 0, {  -438,  -2076}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{  2970,   -306,   2970}, 0, {   376,   4258}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  3174,   1152,   2970}, 0, {  -438,  -1566}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3174,   -306,   2970}, 0, {  -438,   4258}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  2970,   1152,   2970}, 0, {   376,  -1566}, {0xa2, 0xba, 0xd1, 0xff}}},\n    {{{  2970,   -306,   3174}, 0, {  1398,   3236}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  2970,   1152,   2970}, 0, {   582,  -2588}, {0xa2, 0xba, 0xd1, 0xff}}},\n    {{{  2970,   -306,   2970}, 0, {   582,   3236}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  2970,   1152,   3174}, 0, {  1398,  -2588}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  2970,   1280,   3174}, 0, {  1398,  -3098}, {0xb7, 0x49, 0xb7, 0xff}}},\n    {{{  2970,   2560,   3174}, 0, {  1398,  -8208}, {0xb7, 0xb7, 0xb7, 0xff}}},\n    {{{  2970,   2560,   2970}, 0, {   582,  -8208}, {0xbd, 0x9b, 0xdf, 0xff}}},\n    {{{  2970,   1280,   2970}, 0, {   582,  -3098}, {0xd1, 0x46, 0xa2, 0xff}}},\n};\n\n// 0x07018CE8 - 0x07018DD8\nstatic const Vtx ssl_seg7_vertex_07018CE8[] = {\n    {{{ -3173,   -306,   3174}, 0, {  1398,   3236}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -3173,   1152,   3174}, 0, {  1398,  -2588}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{ -3173,   1152,   2970}, 0, {   582,  -2588}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{  2970,   1280,   2970}, 0, {   376,  -2076}, {0xd1, 0x46, 0xa2, 0xff}}},\n    {{{  2970,   2560,   2970}, 0, {   376,  -7186}, {0xbd, 0x9b, 0xdf, 0xff}}},\n    {{{  3174,   2560,   2970}, 0, {  -438,  -7186}, {0x00, 0xc8, 0x8f, 0xff}}},\n    {{{ -2969,   -306,   2970}, 0, {  1398,   2214}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{ -2969,   1152,   2970}, 0, {  1398,  -3610}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{ -2969,   1152,   3174}, 0, {   582,  -3610}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{ -2969,   -306,   3174}, 0, {   582,   2214}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -2969,   -306,   3174}, 0, {   376,   3236}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -3173,   1152,   3174}, 0, {  -438,  -2588}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{ -3173,   -306,   3174}, 0, {  -438,   3236}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -2969,   1152,   3174}, 0, {   376,  -2588}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{ -3173,   -306,   2970}, 0, {   582,   3236}, {0xc8, 0x00, 0x8f, 0xff}}},\n};\n\n// 0x07018DD8 - 0x07018EC8\nstatic const Vtx ssl_seg7_vertex_07018DD8[] = {\n    {{{  2970,   -306,  -3173}, 0, {  1604,   2214}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  2970,   1152,  -3173}, 0, {  1604,  -3610}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  2970,   1152,  -3378}, 0, {   786,  -3610}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{ -3173,   -306,   2970}, 0, {   376,   3236}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -2969,   1152,   2970}, 0, {  -438,  -2588}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{ -2969,   -306,   2970}, 0, {  -438,   3236}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{ -3173,   1152,   2970}, 0, {   376,  -2588}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{  3174,   -306,  -3378}, 0, {  1194,   2214}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  3174,   1152,  -3173}, 0, {   376,  -3610}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{  3174,   -306,  -3173}, 0, {   376,   2214}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  3174,   1152,  -3378}, 0, {  1194,  -3610}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  3174,   -306,  -3173}, 0, {  1398,   3236}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  2970,   1152,  -3173}, 0, {   582,  -2588}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  2970,   -306,  -3173}, 0, {   582,   3236}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  3174,   1152,  -3173}, 0, {  1398,  -2588}, {0x71, 0x00, 0x38, 0xff}}},\n};\n\n// 0x07018EC8 - 0x07018FB8\nstatic const Vtx ssl_seg7_vertex_07018EC8[] = {\n    {{{ -2969,   -306,  -3173}, 0, {   376,   3236}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -2969,   1152,  -3173}, 0, {   376,  -2588}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{ -3173,   1152,  -3173}, 0, {  -438,  -2588}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  2970,   -306,  -3173}, 0, {  1604,   2214}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  2970,   1152,  -3378}, 0, {   786,  -3610}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{  2970,   -306,  -3378}, 0, {   786,   2214}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  2970,   -306,  -3378}, 0, {   376,   4258}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  3174,   1152,  -3378}, 0, {  -438,  -1566}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  3174,   -306,  -3378}, 0, {  -438,   4258}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  2970,   1152,  -3378}, 0, {   376,  -1566}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{ -2969,   -306,  -3378}, 0, {  1194,   2214}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{ -2969,   1152,  -3173}, 0, {   376,  -3610}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{ -2969,   -306,  -3173}, 0, {   376,   2214}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -2969,   1152,  -3378}, 0, {  1194,  -3610}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{ -3173,   -306,  -3173}, 0, {  -438,   3236}, {0x8f, 0x00, 0x38, 0xff}}},\n};\n\n// 0x07018FB8 - 0x070190A8\nstatic const Vtx ssl_seg7_vertex_07018FB8[] = {\n    {{{  -409,   5734,    666}, 0, {  2626,   -440}, {0x3d, 0xa4, 0xc3, 0xff}}},\n    {{{   410,   5222,    666}, 0, {  -644,   1602}, {0xc3, 0xa4, 0xc3, 0xff}}},\n    {{{  -409,   5222,    666}, 0, {  2626,   1602}, {0x33, 0x99, 0xcd, 0xff}}},\n    {{{ -3173,   -306,  -3173}, 0, {  1604,   2214}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -3173,   1152,  -3378}, 0, {   786,  -3610}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{ -3173,   -306,  -3378}, 0, {   786,   2214}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -3173,   1152,  -3173}, 0, {  1604,  -3610}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{ -3173,   -306,  -3378}, 0, {   376,   3236}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -2969,   1152,  -3378}, 0, {  -438,  -2588}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{ -2969,   -306,  -3378}, 0, {  -438,   3236}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{ -3173,   1152,  -3378}, 0, {   376,  -2588}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{   410,   5734,   -153}, 0, {  2626,   -440}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{  -409,   5222,   -153}, 0, {  -644,   1602}, {0x33, 0x99, 0x33, 0xff}}},\n    {{{   410,   5222,   -153}, 0, {  2626,   1602}, {0xda, 0x8e, 0x26, 0xff}}},\n    {{{  -409,   5734,   -153}, 0, {  -644,   -440}, {0x1d, 0x89, 0x1d, 0xff}}},\n};\n\n// 0x070190A8 - 0x07019198\nstatic const Vtx ssl_seg7_vertex_070190A8[] = {\n    {{{   643,   4815,   -409}, 0, {   990,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{   387,   4815,   -409}, 0, {    36,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{   387,   4687,   -409}, 0, {    36,    480}, {0xac, 0xd6, 0x54, 0xff}}},\n    {{{  -409,   5734,    666}, 0, {  2626,   -440}, {0x3d, 0xa4, 0xc3, 0xff}}},\n    {{{   410,   5734,    666}, 0, {  -644,   -440}, {0xda, 0x8e, 0xda, 0xff}}},\n    {{{   410,   5222,    666}, 0, {  -644,   1602}, {0xc3, 0xa4, 0xc3, 0xff}}},\n    {{{  -409,   5734,    666}, 0, {  -644,   -440}, {0x3d, 0xa4, 0xc3, 0xff}}},\n    {{{  -409,   5222,    666}, 0, {  -644,   1602}, {0x33, 0x99, 0xcd, 0xff}}},\n    {{{  -409,   5222,   -153}, 0, {  2626,   1602}, {0x33, 0x99, 0x33, 0xff}}},\n    {{{  -409,   5734,   -153}, 0, {  2626,   -440}, {0x1d, 0x89, 0x1d, 0xff}}},\n    {{{   410,   5734,   -153}, 0, {  -644,   -440}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{   410,   5222,    666}, 0, {  2626,   1602}, {0xc3, 0xa4, 0xc3, 0xff}}},\n    {{{   410,   5734,    666}, 0, {  2626,   -440}, {0xda, 0x8e, 0xda, 0xff}}},\n    {{{   410,   5222,   -153}, 0, {  -644,   1602}, {0xda, 0x8e, 0x26, 0xff}}},\n    {{{   643,   4687,   -409}, 0, {   990,    478}, {0x33, 0x99, 0x33, 0xff}}},\n};\n\n// 0x07019198 - 0x07019278\nstatic const Vtx ssl_seg7_vertex_07019198[] = {\n    {{{   643,   4687,  -1125}, 0, {  3034,    990}, {0x71, 0xc8, 0x00, 0xff}}},\n    {{{   643,   4815,   -409}, 0, {   172,    480}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{   643,   4687,   -409}, 0, {   172,    990}, {0x33, 0x99, 0x33, 0xff}}},\n    {{{   643,   4815,  -1125}, 0, {  3034,    480}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{   387,   4687,   -409}, 0, {  2318,    478}, {0xac, 0xd6, 0x54, 0xff}}},\n    {{{   387,   4815,   -409}, 0, {  2318,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{   387,   4815,  -1125}, 0, {  -540,      0}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{   387,   4687,  -1125}, 0, {  -540,    478}, {0xc8, 0x8f, 0x00, 0xff}}},\n    {{{   387,   4480,   -716}, 0, {  3556,  -1770}, {0x99, 0x33, 0x33, 0xff}}},\n    {{{   387,   4429,   -767}, 0, {  3556,  -1566}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{   387,   4429,   -716}, 0, {  3556,  -1566}, {0xe5, 0x37, 0x6e, 0xff}}},\n    {{{   387,   4480,   -767}, 0, {  3556,  -1770}, {0xd6, 0x54, 0xac, 0xff}}},\n    {{{   512,   4429,   -767}, 0, {  4056,  -1566}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{   512,   4480,   -767}, 0, {  4056,  -1770}, {0x49, 0x49, 0xb7, 0xff}}},\n};\n\n// 0x07019278 - 0x07019378\nstatic const Vtx ssl_seg7_vertex_07019278[] = {\n    {{{   512,   4480,   -716}, 0, {  4670,  -1770}, {0x49, 0x49, 0x49, 0xff}}},\n    {{{   387,   4480,   -716}, 0, {  4170,  -1770}, {0x99, 0x33, 0x33, 0xff}}},\n    {{{   387,   4429,   -716}, 0, {  4170,  -1564}, {0xe5, 0x37, 0x6e, 0xff}}},\n    {{{   131,   4429,   -716}, 0, {     0,    480}, {0x33, 0x33, 0x67, 0xff}}},\n    {{{   131,   4429,   -767}, 0, {   172,    480}, {0x54, 0x54, 0xd6, 0xff}}},\n    {{{   131,   4480,   -716}, 0, {     0,    274}, {0x43, 0x21, 0x65, 0xff}}},\n    {{{   131,   4480,   -767}, 0, {   172,    274}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{   113,   3712,   -716}, 0, {  3074,   1294}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{   512,   3712,   -716}, 0, {  4670,   1294}, {0x21, 0xbd, 0x65, 0xff}}},\n    {{{   113,   4326,   -716}, 0, {  3074,  -1156}, {0xd2, 0xe9, 0x73, 0xff}}},\n    {{{   131,   4429,   -716}, 0, {  3148,  -1564}, {0x33, 0x33, 0x67, 0xff}}},\n    {{{   131,   4480,   -716}, 0, {  3148,  -1770}, {0x43, 0x21, 0x65, 0xff}}},\n    {{{  -112,   4326,   -716}, 0, {  2176,  -1156}, {0x33, 0xcd, 0x67, 0xff}}},\n    {{{ -1074,   3712,    922}, 0, {  4464,    274}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{ -1074,   3840,    922}, 0, {  4464,   -236}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{ -1074,   3840,   -716}, 0, { -2074,   -236}, {0xa7, 0x59, 0x00, 0xff}}},\n};\n\n// 0x07019378 - 0x07019458\nstatic const Vtx ssl_seg7_vertex_07019378[] = {\n    {{{   131,   4480,   -716}, 0, {  3148,  -1770}, {0x43, 0x21, 0x65, 0xff}}},\n    {{{  -204,   4480,   -716}, 0, {  1808,  -1770}, {0xe9, 0x65, 0x49, 0xff}}},\n    {{{  -112,   4326,   -716}, 0, {  2176,  -1156}, {0x33, 0xcd, 0x67, 0xff}}},\n    {{{  -665,   4096,   -716}, 0, {     0,   -236}, {0xa8, 0x29, 0x51, 0xff}}},\n    {{{  -112,   3712,   -716}, 0, {  2176,   1294}, {0x43, 0xdf, 0x65, 0xff}}},\n    {{{  -665,   4045,   -767}, 0, {  -644,      0}, {0xb3, 0x51, 0xc6, 0xff}}},\n    {{{  -204,   4480,   -767}, 0, {  1194,  -1770}, {0xd9, 0x4d, 0xa4, 0xff}}},\n    {{{  -204,   4429,   -767}, 0, {  1194,  -1564}, {0xd9, 0x4d, 0xa4, 0xff}}},\n    {{{   131,   4480,   -767}, 0, {  2534,  -1770}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{   131,   4429,   -767}, 0, {  2534,  -1566}, {0x54, 0x54, 0xd6, 0xff}}},\n    {{{  -665,   4096,   -767}, 0, {  -644,   -236}, {0x9c, 0x2f, 0xc3, 0xff}}},\n    {{{ -1074,   3712,    922}, 0, {  4464,    274}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{ -1074,   3840,   -716}, 0, { -2074,   -236}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{ -1074,   3712,   -716}, 0, { -2074,    274}, {0xa7, 0xa7, 0x00, 0xff}}},\n};\n\n// 0x07019458 - 0x07019548\nstatic const Vtx ssl_seg7_vertex_07019458[] = {\n    {{{   512,   4429,   -767}, 0, {   172,    480}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{   512,   4480,   -767}, 0, {   172,    274}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{   512,   4480,   -716}, 0, {     0,    274}, {0x49, 0x49, 0x49, 0xff}}},\n    {{{   512,   3712,  -1125}, 0, {  5692,   3338}, {0x37, 0x92, 0x1b, 0xff}}},\n    {{{   512,   4429,  -1125}, 0, {  5692,    478}, {0x1d, 0x1d, 0x77, 0xff}}},\n    {{{   512,   4429,   -716}, 0, {  4056,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,   3712,   -716}, 0, {  4056,   3338}, {0x21, 0xbd, 0x65, 0xff}}},\n    {{{  1536,   3942,    922}, 0, { -5140,   2418}, {0xa2, 0x46, 0xd1, 0xff}}},\n    {{{ -1535,   3712,    922}, 0, {  7122,   3338}, {0x17, 0x8d, 0xd2, 0xff}}},\n    {{{ -1535,   3942,    922}, 0, {  7122,   2418}, {0x70, 0x38, 0xee, 0xff}}},\n    {{{  1536,   3712,    922}, 0, { -5140,   3338}, {0xe3, 0x89, 0xe3, 0xff}}},\n    {{{  -665,   3712,   -716}, 0, {  4056,   3338}, {0x49, 0xb7, 0x49, 0xff}}},\n    {{{  -665,   3840,    922}, 0, { -2482,   2828}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{  -665,   3712,    922}, 0, { -2482,   3338}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{  -665,   3840,   -716}, 0, {  4056,   2828}, {0x59, 0x59, 0x00, 0xff}}},\n};\n\n// 0x07019548 - 0x07019648\nstatic const Vtx ssl_seg7_vertex_07019548[] = {\n    {{{  -665,   4045,   -767}, 0, {  -644,      0}, {0xb3, 0x51, 0xc6, 0xff}}},\n    {{{  -665,   4096,   -716}, 0, {  -644,   -236}, {0xa8, 0x29, 0x51, 0xff}}},\n    {{{  -665,   4096,   -767}, 0, {  -644,   -236}, {0x9c, 0x2f, 0xc3, 0xff}}},\n    {{{   512,   4429,   -767}, 0, {   172,    480}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{   512,   4480,   -716}, 0, {     0,    274}, {0x49, 0x49, 0x49, 0xff}}},\n    {{{   512,   4429,   -716}, 0, {     0,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -665,   4096,   -716}, 0, {     0,   -236}, {0xa8, 0x29, 0x51, 0xff}}},\n    {{{  -665,   4045,   -716}, 0, {     0,      0}, {0xe5, 0x37, 0x6e, 0xff}}},\n    {{{  -112,   3712,   -716}, 0, {  2176,   1294}, {0x43, 0xdf, 0x65, 0xff}}},\n    {{{  -665,   3712,   -716}, 0, {     0,   1294}, {0x49, 0xb7, 0x49, 0xff}}},\n    {{{ -1535,   3712,   -716}, 0, { -3504,   1294}, {0x3d, 0xa4, 0x3d, 0xff}}},\n    {{{ -1535,   4045,   -716}, 0, { -3504,      0}, {0x72, 0x26, 0x26, 0xff}}},\n    {{{  -665,   4045,   -716}, 0, {  -644,      0}, {0xe5, 0x37, 0x6e, 0xff}}},\n    {{{   512,   3712,  -1125}, 0, {  3034,   3338}, {0x37, 0x92, 0x1b, 0xff}}},\n    {{{  1536,   3712,  -1125}, 0, {  7122,   3338}, {0xc3, 0xa4, 0x3d, 0xff}}},\n    {{{   512,   4429,  -1125}, 0, {  3034,    480}, {0x1d, 0x1d, 0x77, 0xff}}},\n};\n\n// 0x07019648 - 0x07019748\nstatic const Vtx ssl_seg7_vertex_07019648[] = {\n    {{{   512,   4429,  -1125}, 0, {  3034,    480}, {0x1d, 0x1d, 0x77, 0xff}}},\n    {{{  1536,   3712,  -1125}, 0, {  7122,   3338}, {0xc3, 0xa4, 0x3d, 0xff}}},\n    {{{  1536,   5222,  -1125}, 0, {  7122,  -2690}, {0xc3, 0xa4, 0x3d, 0xff}}},\n    {{{ -1535,   5222,  -1125}, 0, { -5140,  -2690}, {0x1b, 0xc9, 0x6e, 0xff}}},\n    {{{  -204,   4429,  -1125}, 0, {   172,    478}, {0xe9, 0x65, 0x49, 0xff}}},\n    {{{  1536,   5222,  -1125}, 0, { -4732,  -2690}, {0xc3, 0xa4, 0x3d, 0xff}}},\n    {{{  1536,   3942,    922}, 0, {  3442,   2418}, {0xa2, 0x46, 0xd1, 0xff}}},\n    {{{  1536,   5222,   1536}, 0, {  5896,  -2690}, {0xbd, 0x9b, 0xdf, 0xff}}},\n    {{{  1536,   3712,  -1125}, 0, { -4732,   3338}, {0xc3, 0xa4, 0x3d, 0xff}}},\n    {{{  1536,   3712,    922}, 0, {  3442,   3338}, {0xe3, 0x89, 0xe3, 0xff}}},\n    {{{  1536,   3942,   1536}, 0, {  5896,   2418}, {0xd6, 0x54, 0xac, 0xff}}},\n    {{{ -1535,   4045,  -1125}, 0, { -5140,   2010}, {0x43, 0x65, 0x21, 0xff}}},\n    {{{  -665,   4045,  -1125}, 0, { -1666,   2010}, {0xd2, 0x5c, 0x49, 0xff}}},\n    {{{ -1535,   4045,  -1125}, 0, {  5692,   2010}, {0x43, 0x65, 0x21, 0xff}}},\n    {{{ -1535,   5222,   -716}, 0, {  4056,  -2690}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1535,   4045,   -716}, 0, {  4056,   2010}, {0x72, 0x26, 0x26, 0xff}}},\n};\n\n// 0x07019748 - 0x07019848\nstatic const Vtx ssl_seg7_vertex_07019748[] = {\n    {{{ -1535,   5222,   1536}, 0, {  7122,  -2690}, {0x33, 0x99, 0xcd, 0xff}}},\n    {{{  1536,   3942,   1536}, 0, { -5140,   2418}, {0xd6, 0x54, 0xac, 0xff}}},\n    {{{ -1535,   3942,   1536}, 0, {  7122,   2418}, {0x1d, 0x77, 0xe3, 0xff}}},\n    {{{  1536,   5222,   1536}, 0, { -5140,  -2690}, {0xbd, 0x9b, 0xdf, 0xff}}},\n    {{{ -1535,   5222,   1536}, 0, { -4936,  -2690}, {0x33, 0x99, 0xcd, 0xff}}},\n    {{{ -1535,   3942,    922}, 0, { -2482,   2418}, {0x70, 0x38, 0xee, 0xff}}},\n    {{{ -1535,   5222,    922}, 0, { -2482,  -2690}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1535,   3942,   1536}, 0, { -4936,   2418}, {0x1d, 0x77, 0xe3, 0xff}}},\n    {{{ -1535,   5222,   -716}, 0, {  4056,  -2690}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1535,   4045,  -1125}, 0, {  5692,   2010}, {0x43, 0x65, 0x21, 0xff}}},\n    {{{ -1535,   5222,  -1125}, 0, {  5692,  -2690}, {0x1b, 0xc9, 0x6e, 0xff}}},\n    {{{  -112,   4275,   -767}, 0, {  1562,   -952}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{   113,   3712,   -767}, 0, {  2462,   1294}, {0xdf, 0x9b, 0x43, 0xff}}},\n    {{{   113,   4275,   -767}, 0, {  2462,   -952}, {0x89, 0x1d, 0x1d, 0xff}}},\n    {{{   113,   3712,   -716}, 0, {  2462,   1294}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{   113,   4326,   -716}, 0, {  2462,  -1156}, {0xd2, 0xe9, 0x73, 0xff}}},\n};\n\n// 0x07019848 - 0x07019928\nstatic const Vtx ssl_seg7_vertex_07019848[] = {\n    {{{   113,   4275,   -767}, 0, {  2462,   -952}, {0x89, 0x1d, 0x1d, 0xff}}},\n    {{{   113,   4326,   -716}, 0, {  2462,  -1156}, {0xd2, 0xe9, 0x73, 0xff}}},\n    {{{   113,   4326,   -869}, 0, {  2462,  -1156}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{   113,   4275,   -869}, 0, {  2462,   -952}, {0xc8, 0x71, 0x00, 0xff}}},\n    {{{  -112,   4275,   -767}, 0, {  1562,   -952}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{  -112,   4326,   -716}, 0, {  1562,  -1156}, {0x33, 0xcd, 0x67, 0xff}}},\n    {{{  -112,   3712,   -767}, 0, {  1562,   1294}, {0x18, 0x86, 0x18, 0xff}}},\n    {{{   113,   3712,   -767}, 0, {  2462,   1294}, {0xdf, 0x9b, 0x43, 0xff}}},\n    {{{  -112,   3712,   -716}, 0, {  1562,   1294}, {0x43, 0xdf, 0x65, 0xff}}},\n    {{{  -112,   4275,   -869}, 0, {  1562,   -952}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{  -112,   4326,   -869}, 0, {  1562,  -1156}, {0x71, 0xc8, 0x00, 0xff}}},\n    {{{  -204,   3200,   1126}, 0, {   786,    478}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{   205,   3072,   1126}, 0, {  -848,    990}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{  -204,   3072,   1126}, 0, {   786,    990}, {0xb7, 0xb7, 0xb7, 0xff}}},\n};\n\n// 0x07019928 - 0x07019A18\nstatic const Vtx ssl_seg7_vertex_07019928[] = {\n    {{{   205,   3200,   1459}, 0, {  -848,    478}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{  1536,   3072,   1459}, 0, { -6162,    990}, {0xcd, 0x99, 0xcd, 0xff}}},\n    {{{   205,   3072,   1459}, 0, {  -848,    990}, {0x33, 0x99, 0xcd, 0xff}}},\n    {{{  1536,   3200,   1459}, 0, { -6162,    478}, {0xe3, 0x77, 0xe3, 0xff}}},\n    {{{   205,   3072,   1126}, 0, { -5548,      0}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{   205,   3200,   1459}, 0, { -6878,   -544}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{   205,   3072,   1459}, 0, { -6878,      0}, {0x33, 0x99, 0xcd, 0xff}}},\n    {{{   205,   3200,   1126}, 0, { -5548,   -544}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  -204,   3072,   1536}, 0, {  9166,   2010}, {0xda, 0x8e, 0xda, 0xff}}},\n    {{{  -204,   3200,   1536}, 0, {  9166,   1500}, {0xe5, 0x6e, 0xc9, 0xff}}},\n    {{{  -204,   3200,   1126}, 0, {  7530,   1500}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  -204,   3072,   1126}, 0, {  7530,   2010}, {0xb7, 0xb7, 0xb7, 0xff}}},\n    {{{   922,   1920,  -2612}, 0, {  1604,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   666,   1792,  -2612}, 0, {   582,    990}, {0x33, 0x99, 0x33, 0xff}}},\n    {{{   922,   1792,  -2612}, 0, {  1604,    990}, {0xb7, 0xb7, 0x49, 0xff}}},\n};\n\n// 0x07019A18 - 0x07019AF8\nstatic const Vtx ssl_seg7_vertex_07019A18[] = {\n    {{{  -204,   3200,   1126}, 0, {   786,    478}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{   205,   3200,   1126}, 0, {  -848,    478}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{   205,   3072,   1126}, 0, {  -848,    990}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{  1536,   3200,  -1998}, 0, { -4944,   1500}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1536,   3072,   1459}, 0, {  8860,   2010}, {0xcd, 0x99, 0xcd, 0xff}}},\n    {{{  1536,   3200,   1459}, 0, {  8860,   1500}, {0xe3, 0x77, 0xe3, 0xff}}},\n    {{{  1536,   3072,  -1998}, 0, { -4944,   2010}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{  1536,   1920,  -2612}, 0, {  4056,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1280,   1920,  -2612}, 0, {  3034,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1280,   1792,  -2612}, 0, {  3034,    990}, {0x33, 0x99, 0x33, 0xff}}},\n    {{{  1536,   1792,  -2612}, 0, {  4056,    990}, {0xcd, 0x99, 0x33, 0xff}}},\n    {{{   922,   1920,  -2612}, 0, {  1604,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   666,   1920,  -2612}, 0, {   582,    478}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{   666,   1792,  -2612}, 0, {   582,    990}, {0x33, 0x99, 0x33, 0xff}}},\n};\n\n// 0x07019AF8 - 0x07019BE8\nstatic const Vtx ssl_seg7_vertex_07019AF8[] = {\n    {{{  1280,   2560,  -1998}, 0, {  -226,  -1054}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  1280,   1792,  -2612}, 0, {  2224,   2010}, {0x33, 0x99, 0x33, 0xff}}},\n    {{{  1280,   2560,  -2612}, 0, {  2224,  -1054}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{  1946,   3200,   1536}, 0, {  9166,   1500}, {0xd6, 0x54, 0xac, 0xff}}},\n    {{{  1946,   3712,   1536}, 0, {  9166,   -544}, {0xd9, 0x89, 0xed, 0xff}}},\n    {{{  1946,   3200,  -2612}, 0, { -7396,   1500}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{  1946,   3712,  -2612}, 0, { -7396,   -544}, {0xe5, 0x92, 0x37, 0xff}}},\n    {{{ -1945,   2560,  -2612}, 0, {  9378,   2010}, {0x54, 0xd6, 0x54, 0xff}}},\n    {{{ -1945,   3712,  -2612}, 0, {  9378,  -2588}, {0x1d, 0x89, 0x1d, 0xff}}},\n    {{{ -1945,   3712,   1536}, 0, { -7184,  -2588}, {0x2f, 0xba, 0xa2, 0xff}}},\n    {{{ -1945,   2560,   1536}, 0, { -7184,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1946,   3712,  -2612}, 0, {  7736,  -3610}, {0xe5, 0x92, 0x37, 0xff}}},\n    {{{ -1945,   1920,  -2612}, 0, { -7798,   3544}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1946,   1920,  -2612}, 0, {  7736,   3544}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1945,   3712,  -2612}, 0, { -7798,  -3610}, {0x1d, 0x89, 0x1d, 0xff}}},\n};\n\n// 0x07019BE8 - 0x07019CD8\nstatic const Vtx ssl_seg7_vertex_07019BE8[] = {\n    {{{  1536,   1792,  -1998}, 0, {  1186,   2010}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{  1536,   3200,  -1998}, 0, {  1186,  -3610}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1536,   3200,  -2612}, 0, { -1264,  -3610}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  1280,   2560,  -1998}, 0, {  -226,  -1054}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  1280,   1792,  -1998}, 0, {  -226,   2010}, {0x49, 0xb7, 0x49, 0xff}}},\n    {{{  1280,   1792,  -2612}, 0, {  2224,   2010}, {0x33, 0x99, 0x33, 0xff}}},\n    {{{  1280,   2560,  -1998}, 0, { -3096,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{   922,   1792,  -1998}, 0, { -4526,   3032}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{  1280,   1792,  -1998}, 0, { -3096,   3032}, {0x49, 0xb7, 0x49, 0xff}}},\n    {{{   922,   2560,  -1998}, 0, { -4526,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  3174,   3072,  -1998}, 0, {  4464,  -2076}, {0xd6, 0xac, 0x54, 0xff}}},\n    {{{  1536,   3072,  -1998}, 0, { -2074,  -2076}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{  1536,   1792,  -1998}, 0, { -2074,   3032}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{  3174,   1792,  -1998}, 0, {  4464,   3032}, {0x8e, 0xda, 0x26, 0xff}}},\n    {{{  1536,   1792,  -2612}, 0, { -1264,   2010}, {0xcd, 0x99, 0x33, 0xff}}},\n};\n\n// 0x07019CD8 - 0x07019DD8\nstatic const Vtx ssl_seg7_vertex_07019CD8[] = {\n    {{{  3174,   1792,  -1998}, 0, { -1878,    990}, {0x8e, 0xda, 0x26, 0xff}}},\n    {{{  3174,   1792,  -3022}, 0, { -5966,    990}, {0xd4, 0x92, 0x2c, 0xff}}},\n    {{{  3174,   1152,      0}, 0, {  6100,   3544}, {0x8b, 0xd1, 0x00, 0xff}}},\n    {{{   922,   2560,  -2612}, 0, { -1264,  -1054}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{   922,   1792,  -1998}, 0, {  1186,   2010}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{   922,   2560,  -1998}, 0, {  1186,  -1054}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{   922,   1792,  -2612}, 0, { -1264,   2010}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{  3174,   1152,      0}, 0, { -6162,   3544}, {0x8b, 0xd1, 0x00, 0xff}}},\n    {{{  3174,   1152,   2970}, 0, {  5692,   3544}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3174,   3072,   2970}, 0, {  5692,  -4120}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3174,   3072,      0}, 0, { -6162,  -4120}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3174,   3072,      0}, 0, {  6100,  -4120}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3174,   3072,  -1998}, 0, { -1878,  -4120}, {0xd6, 0xac, 0x54, 0xff}}},\n    {{{ -1945,   2560,  -2612}, 0, {  -644,  -2076}, {0x54, 0xd6, 0x54, 0xff}}},\n    {{{ -2764,   1920,  -2612}, 0, { -3914,    478}, {0x3d, 0x5c, 0x3d, 0xff}}},\n    {{{ -1945,   1920,  -2612}, 0, {  -644,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07019DD8 - 0x07019EB8\nstatic const Vtx ssl_seg7_vertex_07019DD8[] = {\n    {{{  3174,   1792,  -3022}, 0, { -5966,    990}, {0xd4, 0x92, 0x2c, 0xff}}},\n    {{{  3174,   1152,  -3022}, 0, { -5966,   3544}, {0xda, 0x8e, 0x26, 0xff}}},\n    {{{  3174,   1152,      0}, 0, {  6100,   3544}, {0x8b, 0xd1, 0x00, 0xff}}},\n    {{{ -2764,   2560,   3174}, 0, { 12028,      0}, {0x33, 0x99, 0xcd, 0xff}}},\n    {{{ -2149,   1920,   3174}, 0, {  9574,   2522}, {0x54, 0x2a, 0xac, 0xff}}},\n    {{{ -2764,   1920,   3174}, 0, { 12028,   2522}, {0x54, 0x54, 0xd6, 0xff}}},\n    {{{ -2149,   2560,   3174}, 0, {  9574,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1945,   2560,   1536}, 0, { -5140,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1945,   3072,   2560}, 0, { -9228,  -3098}, {0x54, 0xd6, 0xac, 0xff}}},\n    {{{ -1945,   2560,   2560}, 0, { -9228,  -1054}, {0x33, 0x99, 0xcd, 0xff}}},\n    {{{ -1945,   3072,   1536}, 0, { -5140,  -3098}, {0x33, 0x99, 0xcd, 0xff}}},\n    {{{ -1945,   2560,  -2612}, 0, {  -644,  -2076}, {0x54, 0xd6, 0x54, 0xff}}},\n    {{{ -2764,   2560,  -2612}, 0, { -3914,  -2076}, {0x54, 0xac, 0x2a, 0xff}}},\n    {{{ -2764,   1920,  -2612}, 0, { -3914,    478}, {0x3d, 0x5c, 0x3d, 0xff}}},\n};\n\n// 0x07019EB8 - 0x07019F98\nstatic const Vtx ssl_seg7_vertex_07019EB8[] = {\n    {{{   666,   1792,  -2612}, 0, {  2224,   2010}, {0x33, 0x99, 0x33, 0xff}}},\n    {{{   666,   1920,  -1998}, 0, {  -226,   1500}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{   666,   1792,  -1998}, 0, {  -226,   2010}, {0x33, 0xcd, 0x67, 0xff}}},\n    {{{   666,   1920,  -2612}, 0, {  2224,   1500}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{ -2149,   1920,  -1998}, 0, { -1460,    478}, {0x3d, 0x5c, 0x3d, 0xff}}},\n    {{{   666,   1792,  -1998}, 0, {  9780,    990}, {0x33, 0xcd, 0x67, 0xff}}},\n    {{{   666,   1920,  -1998}, 0, {  9780,    478}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{ -2149,   1792,  -1998}, 0, { -1460,    990}, {0x1d, 0x89, 0x1d, 0xff}}},\n    {{{ -2149,   1920,   2560}, 0, { -9228,   1500}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2149,   1792,    311}, 0, {  -250,   2010}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{ -2149,   1920,    311}, 0, {  -250,   1500}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{ -2149,   1792,   2560}, 0, { -9228,   2010}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{ -2149,   1920,  -1998}, 0, {  8970,   1500}, {0x3d, 0x5c, 0x3d, 0xff}}},\n    {{{ -2149,   1792,  -1998}, 0, {  8970,   2010}, {0x1d, 0x89, 0x1d, 0xff}}},\n};\n\n// 0x07019F98 - 0x0701A098\nstatic const Vtx ssl_seg7_vertex_07019F98[] = {\n    {{{ -2149,   1280,   2765}, 0, {  9574,   2010}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1945,   1408,   2765}, 0, {  8758,   1500}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{ -1740,   1408,   2765}, 0, {  7940,   1500}, {0x65, 0x21, 0xbd, 0xff}}},\n    {{{ -1945,   1408,   2970}, 0, { -6776,   1500}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{ -1740,   1357,   2970}, 0, { -5958,   1704}, {0x5c, 0x3d, 0x3d, 0xff}}},\n    {{{ -1740,   1408,   2970}, 0, { -5958,   1500}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{ -1945,   1357,   2970}, 0, { -6776,   1704}, {0x49, 0x49, 0x49, 0xff}}},\n    {{{ -1740,   1357,   2970}, 0, {-10864,    684}, {0x5c, 0x3d, 0x3d, 0xff}}},\n    {{{ -1740,   1357,   3174}, 0, {-11680,    684}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{ -1740,   1280,   3174}, 0, {-11680,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1740,   1408,   2765}, 0, {-10046,    478}, {0x65, 0x21, 0xbd, 0xff}}},\n    {{{ -1740,   1408,   2970}, 0, {-10864,    478}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{ -1740,   1280,   2765}, 0, {-10046,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2149,   1536,   2765}, 0, {  9574,    990}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{ -1945,   1536,   2765}, 0, {  8758,    990}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{ -1740,   1280,   2765}, 0, {  7940,   2010}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0701A098 - 0x0701A198\nstatic const Vtx ssl_seg7_vertex_0701A098[] = {\n    {{{ -1945,   1408,   2970}, 0, {-10864,    478}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{ -1945,   1536,   2765}, 0, {-10046,      0}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{ -1945,   1536,   2970}, 0, {-10864,      0}, {0x72, 0x26, 0xda, 0xff}}},\n    {{{ -1945,   1408,   2765}, 0, {-10046,    478}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{ -1945,   1357,   3174}, 0, {-11680,    684}, {0x69, 0x46, 0x00, 0xff}}},\n    {{{ -1945,   1357,   2970}, 0, {-10864,    684}, {0x49, 0x49, 0x49, 0xff}}},\n    {{{ -1945,   1664,   2970}, 0, {-10864,   -544}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{ -1945,   1664,   3174}, 0, {-11680,   -544}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{ -1945,   1664,   2970}, 0, {  8758,    478}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{ -2149,   1536,   2970}, 0, {  9574,    990}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{ -2149,   1664,   2970}, 0, {  9574,    478}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{ -1945,   1536,   2970}, 0, {  8758,    990}, {0x72, 0x26, 0xda, 0xff}}},\n    {{{  -869,   1485,   2611}, 0, { -2482,   1192}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{ -1023,   1536,   2611}, 0, { -3096,    990}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{ -1023,   1485,   2611}, 0, { -3096,   1192}, {0x99, 0x33, 0x33, 0xff}}},\n    {{{  -869,   1536,   2611}, 0, { -2482,    990}, {0xc9, 0x6e, 0x1b, 0xff}}},\n};\n\n// 0x0701A198 - 0x0701A298\nstatic const Vtx ssl_seg7_vertex_0701A198[] = {\n    {{{   870,   1536,   3174}, 0, {  1398,      0}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{   870,   1485,   2611}, 0, {  -848,    172}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{   870,   1536,   2611}, 0, {  -848,      0}, {0x2a, 0x54, 0x54, 0xff}}},\n    {{{   870,   1485,   3174}, 0, {  1398,    172}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{  1024,   1536,   2611}, 0, {     0,    786}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{   819,   1536,   2560}, 0, {   786,    990}, {0xea, 0x58, 0xa8, 0xff}}},\n    {{{   870,   1536,   2611}, 0, {   582,    786}, {0x2a, 0x54, 0x54, 0xff}}},\n    {{{  1024,   1536,   2560}, 0, {     0,    990}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{   870,   1536,   3174}, 0, {   582,  -1462}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{   819,   1536,   3174}, 0, {   786,  -1462}, {0xc7, 0x6e, 0xea, 0xff}}},\n    {{{   819,   1536,   2560}, 0, { -2278,    990}, {0xea, 0x58, 0xa8, 0xff}}},\n    {{{  1024,   1485,   2560}, 0, { -3096,   1192}, {0x5f, 0x21, 0xb4, 0xff}}},\n    {{{  1382,   1280,   2560}, 0, { -4526,   2010}, {0x13, 0x6f, 0xc6, 0xff}}},\n    {{{   819,   1536,   3174}, 0, { 12640,      0}, {0xc7, 0x6e, 0xea, 0xff}}},\n    {{{   819,   1536,   2560}, 0, { 10188,      0}, {0xea, 0x58, 0xa8, 0xff}}},\n    {{{   819,   1280,   2560}, 0, { 10188,    990}, {0xdc, 0x43, 0x9b, 0xff}}},\n};\n\n// 0x0701A298 - 0x0701A398\nstatic const Vtx ssl_seg7_vertex_0701A298[] = {\n    {{{   870,   1536,   2611}, 0, {  4464,    990}, {0x2a, 0x54, 0x54, 0xff}}},\n    {{{   870,   1485,   2611}, 0, {  4464,   1192}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{  1024,   1485,   2611}, 0, {  5078,   1192}, {0x2a, 0x54, 0x54, 0xff}}},\n    {{{  1024,   1536,   2611}, 0, {  5078,    990}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{  1024,   1536,   2611}, 0, { -9432,      0}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{  1024,   1485,   2560}, 0, { -9228,    172}, {0x5f, 0x21, 0xb4, 0xff}}},\n    {{{  1024,   1536,   2560}, 0, { -9228,      0}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{  1024,   1485,   2611}, 0, { -9432,    172}, {0x2a, 0x54, 0x54, 0xff}}},\n    {{{   819,   1536,   2560}, 0, { -2278,    990}, {0xea, 0x58, 0xa8, 0xff}}},\n    {{{  1382,   1280,   2560}, 0, { -4526,   2010}, {0x13, 0x6f, 0xc6, 0xff}}},\n    {{{  1382,   1152,   2560}, 0, { -4526,   2522}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -869,   1536,   2611}, 0, {  -848,      0}, {0xc9, 0x6e, 0x1b, 0xff}}},\n    {{{  -869,   1485,   3174}, 0, {  1398,    172}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  -869,   1536,   3174}, 0, {  1398,      0}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{  3174,   1280,   2560}, 0, {-11680,   2010}, {0x00, 0x69, 0xba, 0xff}}},\n    {{{   819,   1152,   2560}, 0, { -2278,   2522}, {0xc8, 0x00, 0x8f, 0xff}}},\n};\n\n// 0x0701A398 - 0x0701A498\nstatic const Vtx ssl_seg7_vertex_0701A398[] = {\n    {{{  1382,   1152,   2560}, 0, { -4526,   2522}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3174,   1280,   2560}, 0, {-11680,   2010}, {0x00, 0x69, 0xba, 0xff}}},\n    {{{  3174,   1152,   2560}, 0, {-11680,   2522}, {0x00, 0x84, 0xe8, 0xff}}},\n    {{{   819,   1536,   2560}, 0, { -2278,    990}, {0xea, 0x58, 0xa8, 0xff}}},\n    {{{  1024,   1536,   2560}, 0, { -3096,    990}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{  1024,   1485,   2560}, 0, { -3096,   1192}, {0x5f, 0x21, 0xb4, 0xff}}},\n    {{{   819,   1280,   2560}, 0, { -2278,   2010}, {0xdc, 0x43, 0x9b, 0xff}}},\n    {{{   819,   1152,   2560}, 0, { -2278,   2522}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  -818,   1152,   2560}, 0, {  4260,   2522}, {0x11, 0x00, 0x83, 0xff}}},\n    {{{  -818,   1280,   2560}, 0, {  4260,   2010}, {0x41, 0x3c, 0xa6, 0xff}}},\n    {{{ -1023,   1536,   2560}, 0, { 10188,      0}, {0xb7, 0x49, 0xb7, 0xff}}},\n    {{{ -1023,   1485,   2611}, 0, { 10392,    172}, {0x99, 0x33, 0x33, 0xff}}},\n    {{{ -1023,   1536,   2611}, 0, { 10392,      0}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{  -869,   1536,   2611}, 0, {  -848,      0}, {0xc9, 0x6e, 0x1b, 0xff}}},\n    {{{  -869,   1485,   2611}, 0, {  -848,    172}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  -869,   1485,   3174}, 0, {  1398,    172}, {0x8f, 0x38, 0x00, 0xff}}},\n};\n\n// 0x0701A498 - 0x0701A588\nstatic const Vtx ssl_seg7_vertex_0701A498[] = {\n    {{{  -869,   1536,   2611}, 0, {  7530,    786}, {0xc9, 0x6e, 0x1b, 0xff}}},\n    {{{  -818,   1536,   3174}, 0, {  7326,  -1462}, {0x1f, 0x78, 0xe8, 0xff}}},\n    {{{  -818,   1536,   2560}, 0, {  7326,    990}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  -869,   1536,   3174}, 0, {  7530,  -1462}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{ -1023,   1536,   2560}, 0, {  8144,    990}, {0xb7, 0x49, 0xb7, 0xff}}},\n    {{{ -1023,   1536,   2611}, 0, {  8144,    786}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{  -818,   1280,   2560}, 0, { -9228,    990}, {0x41, 0x3c, 0xa6, 0xff}}},\n    {{{  -818,   1536,   2560}, 0, { -9228,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  -818,   1536,   3174}, 0, {-11680,      0}, {0x1f, 0x78, 0xe8, 0xff}}},\n    {{{ -3173,   1792,   2560}, 0, { 13662,      0}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{ -2149,   1792,   2560}, 0, {  9574,      0}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{ -2149,   1152,   2560}, 0, {  9574,   2522}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1023,   1536,   2560}, 0, { 10188,      0}, {0xb7, 0x49, 0xb7, 0xff}}},\n    {{{ -1023,   1485,   2560}, 0, { 10188,    172}, {0xb4, 0x42, 0xb4, 0xff}}},\n    {{{ -1023,   1485,   2611}, 0, { 10392,    172}, {0x99, 0x33, 0x33, 0xff}}},\n};\n\n// 0x0701A588 - 0x0701A688\nstatic const Vtx ssl_seg7_vertex_0701A588[] = {\n    {{{  -818,   1152,   2560}, 0, {  4260,   2522}, {0x11, 0x00, 0x83, 0xff}}},\n    {{{ -1023,   1485,   2560}, 0, {  5078,   1192}, {0xb4, 0x42, 0xb4, 0xff}}},\n    {{{ -1023,   1536,   2560}, 0, {  5078,    990}, {0xb7, 0x49, 0xb7, 0xff}}},\n    {{{ -1381,   1280,   2560}, 0, {  6508,   2010}, {0xf4, 0x49, 0x9a, 0xff}}},\n    {{{ -1381,   1152,   2560}, 0, {  6508,   2522}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -818,   1536,   2560}, 0, {  4260,    990}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{ -2149,   1152,   2560}, 0, {  9574,   2522}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2149,   1280,   2560}, 0, {  9574,   2010}, {0x6e, 0x37, 0xe5, 0xff}}},\n    {{{ -3173,   1792,   2560}, 0, { 13662,      0}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{ -3173,   1152,   2560}, 0, { 13662,   2522}, {0x26, 0x8e, 0xda, 0xff}}},\n    {{{ -2149,   1280,   3174}, 0, {  9574,   2010}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{     0,   2560,   3174}, 0, {   990,  -3098}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{     0,   1280,   3174}, 0, {   990,   2010}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2149,   2560,   3174}, 0, {  9574,  -3098}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2970,   1280,   3174}, 0, {-10864,   2010}, {0xb7, 0x49, 0xb7, 0xff}}},\n    {{{  2970,   2560,   3174}, 0, {-10864,  -3098}, {0xb7, 0xb7, 0xb7, 0xff}}},\n};\n\n// 0x0701A688 - 0x0701A778\nstatic const Vtx ssl_seg7_vertex_0701A688[] = {\n    {{{ -2149,   1280,   2560}, 0, { -9228,    990}, {0x6e, 0x37, 0xe5, 0xff}}},\n    {{{ -2149,   1920,   2560}, 0, { -9228,  -1566}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2149,   1920,   3174}, 0, {-11680,  -1566}, {0x54, 0x2a, 0xac, 0xff}}},\n    {{{ -2149,   1280,   3174}, 0, {-11680,    990}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{  3072,    640,  -3276}, 0, {-13112,   -544}, {0xc3, 0x5c, 0x3d, 0xff}}},\n    {{{  3072,    512,   -283}, 0, { -1162,      0}, {0xac, 0xd6, 0x54, 0xff}}},\n    {{{  3072,    640,   -283}, 0, { -1162,   -544}, {0xb7, 0x49, 0x49, 0xff}}},\n    {{{  3072,    512,  -3276}, 0, {-13112,      0}, {0xda, 0x8e, 0x26, 0xff}}},\n    {{{  3584,    640,   -283}, 0, { 14276,  -1566}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  3072,    512,   -283}, 0, { 12232,  -1054}, {0xac, 0xd6, 0x54, 0xff}}},\n    {{{  3584,    512,   -283}, 0, { 14276,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3072,    512,    473}, 0, {  1856,      0}, {0x99, 0xcd, 0xcd, 0xff}}},\n    {{{  3072,    640,   2560}, 0, { 10188,   -544}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{  3072,    640,    473}, 0, {  1856,   -544}, {0xd6, 0x54, 0xac, 0xff}}},\n    {{{  3072,    512,   2560}, 0, { 10188,      0}, {0xe5, 0x92, 0xc9, 0xff}}},\n};\n\n// 0x0701A778 - 0x0701A858\nstatic const Vtx ssl_seg7_vertex_0701A778[] = {\n    {{{  2560,    640,   2560}, 0, { 10188,   -544}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  2560,    512,   3584}, 0, { 14276,      0}, {0xc8, 0x8f, 0x00, 0xff}}},\n    {{{  2560,    640,   3584}, 0, { 14276,   -544}, {0xc8, 0x71, 0x00, 0xff}}},\n    {{{  2560,    512,   2560}, 0, { 10188,      0}, {0xb7, 0xb7, 0xb7, 0xff}}},\n    {{{  3072,    512,   2560}, 0, {-12294,  -1054}, {0xe5, 0x92, 0xc9, 0xff}}},\n    {{{  2560,    512,   2560}, 0, {-10250,  -1054}, {0xb7, 0xb7, 0xb7, 0xff}}},\n    {{{  2560,    640,   2560}, 0, {-10250,  -1566}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  3072,    640,   2560}, 0, {-12294,  -1566}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{  1307,    640,  -3685}, 0, {  3140,   -544}, {0xb7, 0x49, 0x49, 0xff}}},\n    {{{   512,    640,  -3685}, 0, {     0,   -544}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{   512,    512,  -3685}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3584,    640,   -283}, 0, { 14276,  -1566}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  3072,    640,   -283}, 0, { 12232,  -1566}, {0xb7, 0x49, 0x49, 0xff}}},\n    {{{  3072,    512,   -283}, 0, { 12232,  -1054}, {0xac, 0xd6, 0x54, 0xff}}},\n};\n\n// 0x0701A858 - 0x0701A938\nstatic const Vtx ssl_seg7_vertex_0701A858[] = {\n    {{{  3072,    640,  -3276}, 0, { 12232,  -1566}, {0xc3, 0x5c, 0x3d, 0xff}}},\n    {{{  1307,    512,  -3276}, 0, {  5184,  -1054}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{  3072,    512,  -3276}, 0, { 12232,  -1054}, {0xda, 0x8e, 0x26, 0xff}}},\n    {{{  1307,    640,  -3276}, 0, {  5184,  -1566}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  1307,    512,  -3276}, 0, {  2216,      0}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{  1307,    640,  -3276}, 0, {  2216,   -544}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  1307,    640,  -3685}, 0, {   582,   -544}, {0xb7, 0x49, 0x49, 0xff}}},\n    {{{  1307,    512,  -3685}, 0, {   582,      0}, {0xcd, 0x99, 0x33, 0xff}}},\n    {{{  1307,    640,  -3685}, 0, {  3140,   -544}, {0xb7, 0x49, 0x49, 0xff}}},\n    {{{   512,    512,  -3685}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1307,    512,  -3685}, 0, {  3140,      0}, {0xcd, 0x99, 0x33, 0xff}}},\n    {{{ -3521,   1152,    411}, 0, { -1670,  -2588}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{ -3521,      0,   -220}, 0, {   852,   2010}, {0x7a, 0x00, 0xe1, 0xff}}},\n    {{{ -3521,   1152,   -220}, 0, {   852,  -2588}, {0x6d, 0x00, 0xc1, 0xff}}},\n};\n\n// 0x0701A938 - 0x0701AA28\nstatic const Vtx ssl_seg7_vertex_0701A938[] = {\n    {{{  3584,    512,    473}, 0, {-14338,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3072,    640,    473}, 0, {-12294,  -1566}, {0xd6, 0x54, 0xac, 0xff}}},\n    {{{  3584,    640,    473}, 0, {-14338,  -1566}, {0xb7, 0x49, 0xb7, 0xff}}},\n    {{{  3072,    512,    473}, 0, {-12294,  -1054}, {0x99, 0xcd, 0xcd, 0xff}}},\n    {{{ -1125,    512,   3584}, 0, {-14338,      0}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{ -1125,   1152,   3584}, 0, {-14338,  -2588}, {0x33, 0x99, 0xcd, 0xff}}},\n    {{{ -1125,   1152,   3994}, 0, {-15974,  -2588}, {0x43, 0xdf, 0x9b, 0xff}}},\n    {{{ -1125,    512,   3994}, 0, {-15974,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3522,   1152,   -220}, 0, {  -914,  -2588}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{  3522,      0,    411}, 0, {  1608,   2010}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{  3522,   1152,    411}, 0, {  1608,  -2588}, {0x93, 0x00, 0x40, 0xff}}},\n    {{{  3522,      0,   -220}, 0, {  -914,   2010}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{   819,   -306,   2662}, 0, { 10596,   3236}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   819,   1152,   2560}, 0, { 10188,  -2588}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{   819,   -306,   2560}, 0, { 10188,   3236}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0701AA28 - 0x0701AB08\nstatic const Vtx ssl_seg7_vertex_0701AA28[] = {\n    {{{ -3521,   1152,    411}, 0, { -1670,  -2588}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{ -3521,      0,    411}, 0, { -1670,   2010}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{ -3521,      0,   -220}, 0, {   852,   2010}, {0x7a, 0x00, 0xe1, 0xff}}},\n    {{{   922,   1152,   2662}, 0, {  3648,  -3610}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   819,   -306,   2662}, 0, {  3238,   2214}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   922,   -306,   2662}, 0, {  3648,   2214}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   819,   1152,   2662}, 0, {  3238,  -3610}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   922,   -306,   2560}, 0, {-10250,   3236}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   922,   1152,   2662}, 0, {-10658,  -2588}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   922,   -306,   2662}, 0, {-10658,   3236}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   922,   1152,   2560}, 0, {-10250,  -2588}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   819,   -306,   2662}, 0, { 10596,   3236}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   819,   1152,   2662}, 0, { 10596,  -2588}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   819,   1152,   2560}, 0, { 10188,  -2588}, {0xc8, 0x00, 0x8f, 0xff}}},\n};\n\n// 0x0701AB08 - 0x0701ABF8\nstatic const Vtx ssl_seg7_vertex_0701AB08[] = {\n    {{{  -921,   -306,   2662}, 0, { 10596,   3236}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -921,   1152,   2560}, 0, { 10188,  -2588}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -921,   -306,   2560}, 0, { 10188,   3236}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   922,   -306,   2560}, 0, { -3710,   2214}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   819,   1152,   2560}, 0, { -3300,  -3610}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{   922,   1152,   2560}, 0, { -3710,  -3610}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   819,   -306,   2560}, 0, { -3300,   2214}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -818,   1152,   2662}, 0, { -3300,  -3610}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -921,   -306,   2662}, 0, { -3710,   2214}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -818,   -306,   2662}, 0, { -3300,   2214}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -921,   1152,   2662}, 0, { -3710,  -3610}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -818,   -306,   2560}, 0, {-10250,   3236}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -818,   1152,   2560}, 0, {-10250,  -2588}, {0x11, 0x00, 0x83, 0xff}}},\n    {{{  -818,   1152,   2662}, 0, {-10658,  -2588}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -818,   -306,   2662}, 0, {-10658,   3236}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x0701ABF8 - 0x0701ACE8\nstatic const Vtx ssl_seg7_vertex_0701ABF8[] = {\n    {{{   512,    435,  -3685}, 0, {   582,    274}, {0xeb, 0x44, 0x68, 0xff}}},\n    {{{   512,    640,  -3685}, 0, {   582,   -544}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{   512,    640,  -3943}, 0, {  -446,   -544}, {0xbd, 0x65, 0x21, 0xff}}},\n    {{{  -921,   -306,   2662}, 0, { 10596,   3236}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -921,   1152,   2662}, 0, { 10596,  -2588}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -921,   1152,   2560}, 0, { 10188,  -2588}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -818,   -306,   2560}, 0, {  3238,   2214}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -921,   1152,   2560}, 0, {  3648,  -3610}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -818,   1152,   2560}, 0, {  3238,  -3610}, {0x11, 0x00, 0x83, 0xff}}},\n    {{{  -921,   -306,   2560}, 0, {  3648,   2214}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   512,    512,  -3685}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   512,    435,  -3685}, 0, {     0,    274}, {0xeb, 0x44, 0x68, 0xff}}},\n    {{{  1102,    512,  -3685}, 0, {  2322,      0}, {0x49, 0xb7, 0x49, 0xff}}},\n    {{{  1102,      0,  -3685}, 0, {  2322,   2010}, {0x62, 0x31, 0x3e, 0xff}}},\n    {{{   512,    435,  -3943}, 0, {  -446,    274}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0701ACE8 - 0x0701ADD8\nstatic const Vtx ssl_seg7_vertex_0701ACE8[] = {\n    {{{ -1306,   -306,  -3276}, 0, { 13050,   3236}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1306,      0,  -3276}, 0, { 13050,   2010}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -1306,      0,  -4095}, 0, {  9780,   2010}, {0xac, 0x2a, 0x54, 0xff}}},\n    {{{ -1101,   1152,  -3685}, 0, {  -340,  -1566}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  -511,    435,  -3685}, 0, {  2012,   1294}, {0x0c, 0x56, 0x5c, 0xff}}},\n    {{{  -511,   1152,  -3685}, 0, {  2012,  -1566}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{ -1101,      0,  -3685}, 0, {  -340,   3032}, {0x93, 0x37, 0x22, 0xff}}},\n    {{{  2433,   -306,  -3276}, 0, { 13050,   3236}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2433,      0,  -4095}, 0, {  9780,   2010}, {0xac, 0x2a, 0x54, 0xff}}},\n    {{{  2433,   -306,  -4095}, 0, {  9780,   3236}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2433,      0,  -3276}, 0, { 13050,   2010}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  1716,   -306,  -3276}, 0, { 13050,   3236}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1716,      0,  -4095}, 0, {  9780,   2010}, {0xac, 0x2a, 0x54, 0xff}}},\n    {{{  1716,   -306,  -4095}, 0, {  9780,   3236}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1716,      0,  -3276}, 0, { 13050,   2010}, {0xcd, 0x67, 0x33, 0xff}}},\n};\n\n// 0x0701ADD8 - 0x0701AEC8\nstatic const Vtx ssl_seg7_vertex_0701ADD8[] = {\n    {{{ -3071,   -306,  -4095}, 0, { 13050,   3236}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3071,      0,  -4095}, 0, { 13050,   2010}, {0x49, 0x49, 0x49, 0xff}}},\n    {{{ -3071,      0,  -3276}, 0, {  9780,   2010}, {0x69, 0x46, 0x00, 0xff}}},\n    {{{ -1306,   -306,  -3276}, 0, { 13050,   3236}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1306,      0,  -4095}, 0, {  9780,   2010}, {0xac, 0x2a, 0x54, 0xff}}},\n    {{{ -1306,   -306,  -4095}, 0, {  9780,   3236}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2023,   -306,  -4095}, 0, { 13050,   3236}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2023,      0,  -3276}, 0, {  9780,   2010}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  2023,   -306,  -3276}, 0, {  9780,   3236}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2023,      0,  -4095}, 0, { 13050,   2010}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{  1307,   -306,  -4095}, 0, { 13050,   3236}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1307,      0,  -3276}, 0, {  9780,   2010}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  1307,   -306,  -3276}, 0, {  9780,   3236}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1307,      0,  -4095}, 0, { 13050,   2010}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{ -3071,   -306,  -3276}, 0, {  9780,   3236}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0701AEC8 - 0x0701AFB8\nstatic const Vtx ssl_seg7_vertex_0701AEC8[] = {\n    {{{ -1306,   -306,  -3276}, 0, { -5246,   2214}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1101,      0,  -3276}, 0, { -4428,    990}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{ -1306,      0,  -3276}, 0, { -5246,    990}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -1101,   -306,  -3276}, 0, { -4428,   2214}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,    486,  -3276}, 0, { -2074,   -952}, {0xef, 0x33, 0x72, 0xff}}},\n    {{{  1102,   -306,  -3276}, 0, {  4366,   2214}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1101,     51,  -3276}, 0, { -4428,    786}, {0x93, 0x37, 0x22, 0xff}}},\n    {{{  3072,      0,  -3276}, 0, { 12232,    990}, {0xdf, 0x65, 0x43, 0xff}}},\n    {{{  2433,   -306,  -3276}, 0, {  9682,   2214}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3072,   -306,  -3276}, 0, { 12232,   2214}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  2433,      0,  -3276}, 0, {  9682,    990}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  2023,      0,  -3276}, 0, {  8046,    990}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  1716,      0,  -3276}, 0, {  6820,    990}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  1716,   -306,  -3276}, 0, {  6820,   2214}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2023,   -306,  -3276}, 0, {  8046,   2214}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x0701AFB8 - 0x0701B0A8\nstatic const Vtx ssl_seg7_vertex_0701AFB8[] = {\n    {{{  1307,      0,  -3276}, 0, {  5184,    990}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  1102,   -306,  -3276}, 0, {  4366,   2214}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1307,   -306,  -3276}, 0, {  5184,   2214}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1102,      0,  -3276}, 0, {  4366,    990}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{  -511,    486,  -3276}, 0, { -2074,   -952}, {0xef, 0x33, 0x72, 0xff}}},\n    {{{  1102,     51,  -3276}, 0, {  4366,    786}, {0x62, 0x31, 0x3e, 0xff}}},\n    {{{  3072,      0,   -283}, 0, { -1162,   2010}, {0x9b, 0x4c, 0x00, 0xff}}},\n    {{{  3072,   -306,  -3276}, 0, {-13112,   3236}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  3072,   -306,   -283}, 0, { -1162,   3236}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,      0,  -3276}, 0, {-13112,   2010}, {0xdf, 0x65, 0x43, 0xff}}},\n    {{{  3072,   -306,   3072}, 0, { 12232,   3236}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  3072,      0,   3072}, 0, { 12232,   2010}, {0xcd, 0x67, 0xcd, 0xff}}},\n    {{{ -3071,   -306,  -3276}, 0, { 13050,   3236}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3071,      0,   -283}, 0, {  1100,   2010}, {0x65, 0x4c, 0x00, 0xff}}},\n    {{{ -3071,   -306,   -283}, 0, {  1100,   3236}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0701B0A8 - 0x0701B188\nstatic const Vtx ssl_seg7_vertex_0701B0A8[] = {\n    {{{  -895,   -306,   3072}, 0, {  3546,   2214}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -3071,   -306,   3072}, 0, { 12232,   2214}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{ -3071,      0,   3072}, 0, { 12232,    990}, {0x1b, 0x6e, 0xc9, 0xff}}},\n    {{{ -3071,      0,   -283}, 0, {  1100,   2010}, {0x65, 0x4c, 0x00, 0xff}}},\n    {{{ -3071,      0,   3072}, 0, {-12294,   2010}, {0x1b, 0x6e, 0xc9, 0xff}}},\n    {{{ -3071,   -306,   3072}, 0, {-12294,   3236}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{ -3071,   -306,  -3276}, 0, { 13050,   3236}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3071,      0,  -3276}, 0, { 13050,   2010}, {0x69, 0x46, 0x00, 0xff}}},\n    {{{ -3071,   -306,   -283}, 0, {  1100,   3236}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   896,      0,   3072}, 0, { -3608,    990}, {0x1d, 0x77, 0xe3, 0xff}}},\n    {{{  3072,   -306,   3072}, 0, {-12294,   2214}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   896,   -306,   3072}, 0, { -3608,   2214}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  3072,      0,   3072}, 0, {-12294,    990}, {0xcd, 0x67, 0xcd, 0xff}}},\n    {{{  -895,      0,   3072}, 0, {  3546,    990}, {0xda, 0x72, 0xda, 0xff}}},\n};\n\n// 0x0701B188 - 0x0701B288\nstatic const Vtx ssl_seg7_vertex_0701B188[] = {\n    {{{ -1101,      0,  -3327}, 0, { -3406,   2010}, {0x9f, 0x1e, 0xb5, 0xff}}},\n    {{{ -1101,     51,  -3276}, 0, { -3406,   1806}, {0x93, 0x37, 0x22, 0xff}}},\n    {{{ -1101,     51,  -3327}, 0, { -3406,   1806}, {0x9e, 0x31, 0xc2, 0xff}}},\n    {{{  1102,      0,  -3327}, 0, {  5388,   2010}, {0x62, 0x31, 0xc2, 0xff}}},\n    {{{  1102,     51,  -3276}, 0, {  5388,   1806}, {0x62, 0x31, 0x3e, 0xff}}},\n    {{{  1102,      0,  -3276}, 0, {  5388,   2010}, {0x33, 0x67, 0x33, 0xff}}},\n    {{{  1102,     51,  -3327}, 0, {  5388,   1806}, {0x62, 0x31, 0xc2, 0xff}}},\n    {{{   512,    486,  -3327}, 0, {  3034,     70}, {0x24, 0x4f, 0xa5, 0xff}}},\n    {{{   512,    486,  -3276}, 0, {  3034,     70}, {0x18, 0x75, 0x29, 0xff}}},\n    {{{  -511,    486,  -3327}, 0, { -1052,     70}, {0xe5, 0x53, 0xa4, 0xff}}},\n    {{{   512,    435,  -3327}, 0, {  3034,    274}, {0x12, 0x55, 0xa5, 0xff}}},\n    {{{  -511,    486,  -3276}, 0, { -1052,     70}, {0xef, 0x33, 0x72, 0xff}}},\n    {{{  -511,    435,  -3327}, 0, { -1052,    274}, {0xd5, 0x5e, 0xb8, 0xff}}},\n    {{{ -1535,   4045,   -716}, 0, {  4056,   2010}, {0x72, 0x26, 0x26, 0xff}}},\n    {{{ -1535,   5222,   -716}, 0, {  4056,  -2690}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1535,   3942,    922}, 0, { -2482,   2418}, {0x70, 0x38, 0xee, 0xff}}},\n};\n\n// 0x0701B288 - 0x0701B328\nstatic const Vtx ssl_seg7_vertex_0701B288[] = {\n    {{{  -511,    486,  -3276}, 0, { -2074,   -952}, {0xef, 0x33, 0x72, 0xff}}},\n    {{{  1102,     51,  -3276}, 0, {  4366,    786}, {0x62, 0x31, 0x3e, 0xff}}},\n    {{{   512,    486,  -3276}, 0, {  2012,   -952}, {0x18, 0x75, 0x29, 0xff}}},\n    {{{ -1101,      0,  -3327}, 0, { -3406,   2010}, {0x9f, 0x1e, 0xb5, 0xff}}},\n    {{{ -1101,      0,  -3276}, 0, { -3406,   2010}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{ -1101,     51,  -3276}, 0, { -3406,   1806}, {0x93, 0x37, 0x22, 0xff}}},\n    {{{ -1535,   3712,   -716}, 0, {  4056,   3338}, {0x3d, 0xa4, 0x3d, 0xff}}},\n    {{{ -1535,   3942,    922}, 0, { -2482,   2418}, {0x70, 0x38, 0xee, 0xff}}},\n    {{{ -1535,   3712,    922}, 0, { -2482,   3338}, {0x17, 0x8d, 0xd2, 0xff}}},\n    {{{ -1535,   4045,   -716}, 0, {  4056,   2010}, {0x72, 0x26, 0x26, 0xff}}},\n};\n\n// 0x0701B328 - 0x0701B418\nstatic const Vtx ssl_seg7_vertex_0701B328[] = {\n    {{{ -2966,    373,   3014}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2966,    373,   3130}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2966,    258,   3130}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3013,    373,   3177}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3129,    258,   3177}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3013,    258,   3177}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3129,    373,   3177}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3176,    373,   3130}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3176,    258,   3014}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3176,    258,   3130}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3176,    373,   3014}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3129,    373,   2967}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3013,    373,   2967}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3013,    258,   2967}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3129,    258,   2967}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0701B418 - 0x0701B508\nstatic const Vtx ssl_seg7_vertex_0701B418[] = {\n    {{{ -3176,    373,  -3218}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3176,    258,  -3333}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3176,    258,  -3218}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2966,    373,   3014}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2966,    258,   3130}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2966,    258,   3014}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2966,    373,  -3333}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2966,    373,  -3218}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2966,    258,  -3218}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2966,    258,  -3333}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3129,    373,  -3381}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3013,    258,  -3381}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3129,    258,  -3381}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3013,    373,  -3381}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3176,    373,  -3333}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0701B508 - 0x0701B5F8\nstatic const Vtx ssl_seg7_vertex_0701B508[] = {\n    {{{  3014,    373,  -3381}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3130,    373,  -3381}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3130,    258,  -3381}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3013,    373,  -3170}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3129,    373,  -3170}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3129,    258,  -3170}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3013,    258,  -3170}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3130,    373,  -3170}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3014,    258,  -3170}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3130,    258,  -3170}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3014,    373,  -3170}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2967,    373,  -3218}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2967,    258,  -3333}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2967,    258,  -3218}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2967,    373,  -3333}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0701B5F8 - 0x0701B6E8\nstatic const Vtx ssl_seg7_vertex_0701B5F8[] = {\n    {{{  2967,    373,   3130}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2967,    373,   3014}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2967,    258,   3014}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3014,    373,  -3381}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3130,    258,  -3381}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3014,    258,  -3381}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3177,    373,  -3333}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3177,    373,  -3218}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3177,    258,  -3218}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3177,    258,  -3333}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3130,    373,   3177}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3014,    373,   3177}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3014,    258,   3177}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3130,    258,   3177}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2967,    258,   3130}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0701B6E8 - 0x0701B7A8\nstatic const Vtx ssl_seg7_vertex_0701B6E8[] = {\n    {{{  3014,    373,   2967}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3130,    258,   2967}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3014,    258,   2967}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3130,    373,   2967}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3177,    373,   3014}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3177,    258,   3130}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3177,    258,   3014}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3177,    373,   3130}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    64,    512,  -2426}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -63,    512,  -2426}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -63,    384,  -2426}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    64,    384,  -2426}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0701B7A8 - 0x0701B888\nstatic const Vtx ssl_seg7_vertex_0701B7A8[] = {\n    {{{ -3071,   -101,  -3276}, 0, { -5140,  -4938}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1306,   -101,  -3276}, 0, {  1906,  -4938}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1306,   -101,  -4095}, 0, {  1906,  -8208}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3071,   -101,  -4095}, 0, { -5140,  -8208}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -383,   -101,  -2559}, 0, {  5590,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3071,   -101,   -255}, 0, { -5140,   7120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1716,   -101,  -4095}, 0, {   688,  -9230}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1307,   -101,  -4095}, 0, {  -946,  -9230}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1307,   -101,  -3276}, 0, {  -946,  -5960}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1716,   -101,  -3276}, 0, {   688,  -5960}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2433,   -101,  -4095}, 0, {  3550,  -9230}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2023,   -101,  -4095}, 0, {  1914,  -9230}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2023,   -101,  -3276}, 0, {  1914,  -5960}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2433,   -101,  -3276}, 0, {  3550,  -5960}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0701B888 - 0x0701B988\nstatic const Vtx ssl_seg7_vertex_0701B888[] = {\n    {{{ -3071,   -101,   3072}, 0, { -4118,   7120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2252,   -101,   2730}, 0, {  -848,   5754}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2764,   -101,   1843}, 0, { -2892,   2214}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3071,   -101,   -255}, 0, { -4118,  -6164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -895,   -101,   3072}, 0, {  4568,   7120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,   -101,   2730}, 0, {  3238,   5754}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2252,   -101,    956}, 0, {  -848,  -1324}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1228,   -101,    956}, 0, {  3238,  -1324}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,   -101,    528}, 0, {  4056,  -3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,   -101,   -357}, 0, {  6100,  -6572}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -895,   -101,   2586}, 0, {  4568,   5178}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -101,   1843}, 0, {  5282,   2214}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,   -101,   1415}, 0, {  6100,    508}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2765,   -101,   1843}, 0, {  3852,   2214}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3072,   -101,   3072}, 0, {  5078,   7120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3072,   -101,   -255}, 0, {  5078,  -6164}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0701B988 - 0x0701BA88\nstatic const Vtx ssl_seg7_vertex_0701B988[] = {\n    {{{  3072,   -101,   3072}, 0, {  5078,   7120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2765,   -101,   1843}, 0, {  3852,   2214}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2253,   -101,   2730}, 0, {  1808,   5754}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1229,   -101,   2730}, 0, { -2278,   5754}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   896,   -101,   3072}, 0, { -3608,   7120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3072,   -101,   -255}, 0, {  5078,  -6164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2253,   -101,    956}, 0, {  1808,  -1324}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,   -101,    528}, 0, { -3096,  -3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,   -101,   -357}, 0, { -5140,  -6572}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1229,   -101,    956}, 0, { -2278,  -1324}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   717,   -101,   1843}, 0, { -4322,   2214}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,   -101,   1415}, 0, { -5140,    508}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   896,   -101,   2586}, 0, { -3608,   5178}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   717,   -101,   1843}, 0, {  3852,    172}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,   -101,   1415}, 0, {  3034,  -1536}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,   -101,   1415}, 0, { -1052,  -1536}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0701BA88 - 0x0701BB88\nstatic const Vtx ssl_seg7_vertex_0701BA88[] = {\n    {{{   717,   -101,   1843}, 0, {  3852,    172}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,   -101,   1415}, 0, { -1052,  -1536}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -716,   -101,   1843}, 0, { -1870,    172}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   896,   -101,   2586}, 0, {  4568,   3134}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -895,   -101,   2586}, 0, { -2586,   3134}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -383,   -101,  -2559}, 0, {  5590,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,   -101,   -357}, 0, {  5078,   6712}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -383,   -101,   -357}, 0, {  5590,   6712}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3071,   -101,   -255}, 0, { -5140,   7120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   384,   -101,  -2559}, 0, {  8656,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1306,   -101,  -3276}, 0, {  1906,  -4938}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   384,   -101,  -3276}, 0, {  8656,  -4938}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1716,   -101,  -3276}, 0, {   688,  -5960}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1307,   -101,  -3276}, 0, {  -946,  -5960}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   384,   -101,  -2559}, 0, { -4630,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   384,   -101,  -3276}, 0, { -4630,  -5960}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0701BB88 - 0x0701BC48\nstatic const Vtx ssl_seg7_vertex_0701BB88[] = {\n    {{{  3072,   -101,  -3276}, 0, {  6100,  -5960}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2433,   -101,  -3276}, 0, {  3550,  -5960}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   384,   -101,  -2559}, 0, { -4630,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2023,   -101,  -3276}, 0, {  1914,  -5960}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1716,   -101,  -3276}, 0, {   688,  -5960}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3072,   -101,   -255}, 0, {  6100,   6098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,   -101,   -357}, 0, { -4118,   5690}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   384,   -101,   -357}, 0, { -4630,   5690}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1178,   1223,   2150}, 0, {  1604,   -748}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1178,   1178,   2560}, 0, {   786,   -646}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1178,   1178,   2150}, 0, {  1604,   -646}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1178,   1223,   2560}, 0, {   786,   -748}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0701BC48 - 0x0701BD28\nstatic const Vtx ssl_seg7_vertex_0701BC48[] = {\n    {{{  -127,    640,   -255}, 0, {     0,      0}, {0x21, 0xbd, 0x65, 0xff}}},\n    {{{   128,    640,  -1023}, 0, {   990,   3032}, {0xb7, 0xb7, 0xb7, 0xff}}},\n    {{{   128,    640,   -255}, 0, {   990,      0}, {0xda, 0xda, 0x72, 0xff}}},\n    {{{   128,    384,  -1023}, 0, {  3034,  -1054}, {0xcd, 0x33, 0x99, 0xff}}},\n    {{{   128,    640,  -1023}, 0, {  3034,  -2076}, {0xb7, 0xb7, 0xb7, 0xff}}},\n    {{{   192,    768,  -1023}, 0, {  3034,  -2588}, {0xe3, 0xe3, 0x89, 0xff}}},\n    {{{   192,    384,  -1023}, 0, {  3034,  -1054}, {0x00, 0x57, 0xa5, 0xff}}},\n    {{{  -127,    640,  -1023}, 0, {  3034,  -2076}, {0x37, 0xe5, 0x92, 0xff}}},\n    {{{  -191,    768,  -1023}, 0, {  3034,  -2588}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{  -191,    384,  -1023}, 0, {  3034,  -1054}, {0x00, 0x2b, 0x89, 0xff}}},\n    {{{  -127,    384,  -1023}, 0, {  3034,  -1054}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{   128,    640,  -1023}, 0, { -2074,      0}, {0xb7, 0xb7, 0xb7, 0xff}}},\n    {{{   128,    384,   -255}, 0, {   990,    990}, {0xc3, 0x3d, 0x5c, 0xff}}},\n    {{{   128,    384,  -1023}, 0, { -2074,    990}, {0xcd, 0x33, 0x99, 0xff}}},\n};\n\n// 0x0701BD28 - 0x0701BE08\nstatic const Vtx ssl_seg7_vertex_0701BD28[] = {\n    {{{  -127,    384,   -255}, 0, {     0,    990}, {0x43, 0x21, 0x65, 0xff}}},\n    {{{  -127,    384,  -1023}, 0, {  3034,    990}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  -127,    640,  -1023}, 0, {  3034,      0}, {0x37, 0xe5, 0x92, 0xff}}},\n    {{{  -127,    640,   -255}, 0, {     0,      0}, {0x21, 0xbd, 0x65, 0xff}}},\n    {{{   192,   -409,  -1664}, 0, {  -540,    -30}, {0x4a, 0x9d, 0x18, 0xff}}},\n    {{{   192,   -562,  -2048}, 0, {   990,    584}, {0x5a, 0x0d, 0xa8, 0xff}}},\n    {{{   192,   -409,  -1998}, 0, {   794,    -30}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   192,   -664,  -1664}, 0, {  -542,    990}, {0x33, 0xcd, 0x67, 0xff}}},\n    {{{   192,   -664,  -2048}, 0, {   990,    990}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{  -191,   -664,  -2048}, 0, {  -540,    990}, {0x8e, 0xda, 0xda, 0xff}}},\n    {{{  -191,   -664,  -1664}, 0, {   990,    990}, {0xcd, 0x99, 0x33, 0xff}}},\n    {{{  -191,   -409,  -1664}, 0, {   990,    -30}, {0xc3, 0xa4, 0x3d, 0xff}}},\n    {{{  -191,   -409,  -1998}, 0, {  -344,    -30}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -191,   -562,  -2048}, 0, {  -540,    584}, {0xe1, 0x13, 0x87, 0xff}}},\n};\n\n// 0x0701BE08 - 0x0701BF08\nstatic const Vtx ssl_seg7_vertex_0701BE08[] = {\n    {{{   192,   -409,  -2432}, 0, {  1502,   4668}, {0xd6, 0xac, 0x54, 0xff}}},\n    {{{   192,    768,  -2432}, 0, {  1502,      0}, {0x9b, 0xbd, 0x21, 0xff}}},\n    {{{  -191,    768,  -2432}, 0, {     0,      0}, {0x54, 0xd6, 0x54, 0xff}}},\n    {{{  -191,   -409,  -1664}, 0, {     0,      0}, {0xc3, 0xa4, 0x3d, 0xff}}},\n    {{{   192,   -664,  -1664}, 0, {  1502,    988}, {0x33, 0xcd, 0x67, 0xff}}},\n    {{{   192,   -409,  -1664}, 0, {  1502,      0}, {0x4a, 0x9d, 0x18, 0xff}}},\n    {{{  -191,   -664,  -1664}, 0, {     0,    988}, {0xcd, 0x99, 0x33, 0xff}}},\n    {{{  -191,   -409,  -1855}, 0, {  3292,   4668}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -191,   -409,  -2432}, 0, {  5592,   4668}, {0x26, 0x8e, 0x26, 0xff}}},\n    {{{  -191,    768,  -2432}, 0, {  5592,      0}, {0x54, 0xd6, 0x54, 0xff}}},\n    {{{  -191,    768,  -1023}, 0, {     0,      0}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{  -191,    256,  -1023}, 0, {     0,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -191,   -409,  -2432}, 0, {     0,   4668}, {0x26, 0x8e, 0x26, 0xff}}},\n    {{{   192,    768,  -2432}, 0, {  1502,   3032}, {0x9b, 0xbd, 0x21, 0xff}}},\n    {{{   192,    768,  -1023}, 0, {  1502,  -2590}, {0xe3, 0xe3, 0x89, 0xff}}},\n    {{{  -191,    768,  -1023}, 0, {     0,  -2590}, {0x49, 0xb7, 0xb7, 0xff}}},\n};\n\n// 0x0701BF08 - 0x0701BFF8\nstatic const Vtx ssl_seg7_vertex_0701BF08[] = {\n    {{{   192,    768,  -2432}, 0, { -1052,  -1054}, {0x9b, 0xbd, 0x21, 0xff}}},\n    {{{   192,    256,  -1023}, 0, {  4570,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   192,    768,  -1023}, 0, {  4570,  -1054}, {0xe3, 0xe3, 0x89, 0xff}}},\n    {{{   192,   -409,  -1855}, 0, {  1246,   3646}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   192,   -409,  -2432}, 0, { -1052,   3646}, {0xd6, 0xac, 0x54, 0xff}}},\n    {{{  -191,   -562,  -2048}, 0, {   990,    584}, {0xe1, 0x13, 0x87, 0xff}}},\n    {{{   192,   -562,  -2048}, 0, {  -542,    584}, {0x5a, 0x0d, 0xa8, 0xff}}},\n    {{{   192,   -664,  -2048}, 0, {  -542,    990}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{  -191,   -664,  -2048}, 0, {   990,    990}, {0x8e, 0xda, 0xda, 0xff}}},\n    {{{   192,    768,  -2432}, 0, {  1502,   3032}, {0x9b, 0xbd, 0x21, 0xff}}},\n    {{{  -191,    768,  -1023}, 0, {     0,  -2590}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{  -191,    768,  -2432}, 0, {     0,   3032}, {0x54, 0xd6, 0x54, 0xff}}},\n    {{{  -383,    896,  -2559}, 0, {  2524,  -1054}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{   384,    896,  -2559}, 0, {  -542,  -1054}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{   384,   -229,  -2559}, 0, {  -542,   3440}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0701BFF8 - 0x0701C0D8\nstatic const Vtx ssl_seg7_vertex_0701BFF8[] = {\n    {{{  -127,    640,   -255}, 0, {     0,      0}, {0x21, 0xbd, 0x65, 0xff}}},\n    {{{  -127,    640,  -1023}, 0, {     0,   3032}, {0x37, 0xe5, 0x92, 0xff}}},\n    {{{   128,    640,  -1023}, 0, {   990,   3032}, {0xb7, 0xb7, 0xb7, 0xff}}},\n    {{{   384,    896,   -255}, 0, {  2524,      0}, {0x43, 0x21, 0x65, 0xff}}},\n    {{{   128,    384,   -255}, 0, {  1502,   2010}, {0xc3, 0x3d, 0x5c, 0xff}}},\n    {{{   384,   -229,   -255}, 0, {  2524,   4462}, {0x28, 0x00, 0x78, 0xff}}},\n    {{{  -127,    384,   -255}, 0, {   480,   2010}, {0x43, 0x21, 0x65, 0xff}}},\n    {{{  -383,   -229,   -255}, 0, {  -542,   4462}, {0xba, 0x00, 0x69, 0xff}}},\n    {{{  -127,    640,   -255}, 0, {   480,    990}, {0x21, 0xbd, 0x65, 0xff}}},\n    {{{  -383,    896,   -255}, 0, {  -542,      0}, {0xdf, 0x43, 0x65, 0xff}}},\n    {{{   128,    640,   -255}, 0, {  1502,    990}, {0xda, 0xda, 0x72, 0xff}}},\n    {{{  -383,    896,  -2559}, 0, {  2524,  -1054}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{   384,   -229,  -2559}, 0, {  -542,   3440}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -383,   -229,  -2559}, 0, {  2524,   3440}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0701C0D8 - 0x0701C198\nstatic const Vtx ssl_seg7_vertex_0701C0D8[] = {\n    {{{  -383,    896,  -2559}, 0, { -4118,  -1054}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  -383,   -229,   -255}, 0, {  5078,   3440}, {0xba, 0x00, 0x69, 0xff}}},\n    {{{  -383,    896,   -255}, 0, {  5078,  -1054}, {0xdf, 0x43, 0x65, 0xff}}},\n    {{{  -383,   -229,  -2559}, 0, { -4118,   3440}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -383,    896,   -255}, 0, { -1564,  -3098}, {0xdf, 0x43, 0x65, 0xff}}},\n    {{{   384,    896,  -2559}, 0, {  1502,   6098}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  -383,    896,  -2559}, 0, { -1564,   6098}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{   384,    896,   -255}, 0, {  1502,  -3098}, {0x43, 0x21, 0x65, 0xff}}},\n    {{{   384,    896,   -255}, 0, { -4118,  -1054}, {0x43, 0x21, 0x65, 0xff}}},\n    {{{   384,   -229,   -255}, 0, { -4118,   3440}, {0x28, 0x00, 0x78, 0xff}}},\n    {{{   384,   -229,  -2559}, 0, {  5078,   3440}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   384,    896,  -2559}, 0, {  5078,  -1054}, {0x33, 0x67, 0xcd, 0xff}}},\n};\n\n// 0x0701C198 - 0x0701CFA8\nstatic const Gfx ssl_seg7_dl_0701C198[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_0900A800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ssl_seg7_lights_07012BD0.l, 1),\n    gsSPLight(&ssl_seg7_lights_07012BD0.a, 2),\n    gsSPVertex(ssl_seg7_vertex_07012C48, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPLight(&ssl_seg7_lights_07012BE8.l, 1),\n    gsSPLight(&ssl_seg7_lights_07012BE8.a, 2),\n    gsSPVertex(ssl_seg7_vertex_07012CC8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 0,  3,  1, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles( 1,  6,  5, 0x0,  3,  4,  7, 0x0),\n    gsSP2Triangles( 5,  7,  4, 0x0,  5,  6,  7, 0x0),\n    gsSPLight(&ssl_seg7_lights_07012BD0.l, 1),\n    gsSPLight(&ssl_seg7_lights_07012BD0.a, 2),\n    gsSPVertex(ssl_seg7_vertex_07012D48, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 3,  4,  0, 0x0,  3,  5,  4, 0x0),\n    gsSP2Triangles( 3,  6,  5, 0x0,  5,  7,  4, 0x0),\n    gsSP2Triangles( 8,  6,  3, 0x0,  9,  8,  3, 0x0),\n    gsSP2Triangles( 0, 10, 11, 0x0,  0,  4, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07012E48, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPLight(&ssl_seg7_lights_07012C00.l, 1),\n    gsSPLight(&ssl_seg7_lights_07012C00.a, 2),\n    gsSPVertex(ssl_seg7_vertex_07012E78, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07012F68, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  5,  7, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  4, 11,  5, 0x0),\n    gsSP2Triangles(11, 10,  9, 0x0, 11,  4, 10, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSP2Triangles(12,  2, 14, 0x0, 13, 12, 14, 0x0),\n    gsSPLight(&ssl_seg7_lights_07012C18.l, 1),\n    gsSPLight(&ssl_seg7_lights_07012C18.a, 2),\n    gsSPVertex(ssl_seg7_vertex_07013068, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0,  1, 13, 14, 0x0),\n    gsSP1Triangle( 1, 14,  2, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07013158, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  3,  6, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07013248, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07013338, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07013428, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 3, 10,  4, 0x0,  3,  9,  8, 0x0),\n    gsSP2Triangles( 3,  8, 10, 0x0,  2, 11, 12, 0x0),\n    gsSP2Triangles( 2,  1, 11, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07013528, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  2,  4,  3, 0x0),\n    gsSP2Triangles( 2,  5,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07013628, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  0,  6,  1, 0x0),\n    gsSP2Triangles( 0,  7,  6, 0x0,  6,  5,  4, 0x0),\n    gsSP2Triangles( 6,  7,  5, 0x0,  8,  5,  7, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 12, 13, 14, 0x0),\n    gsSP2Triangles(15,  8,  9, 0x0, 15,  9, 11, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07013728, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 3,  4,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  3,  5,  7, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 11, 12, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07013818, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07013918, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  5,  4,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(11, 12, 13, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070139F8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 6, 10,  7, 0x0,  0,  8, 11, 0x0),\n    gsSP2Triangles( 8,  7, 11, 0x0,  0,  2, 12, 0x0),\n    gsSP1Triangle(11, 13,  0, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07013AD8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07013BD8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  1,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 7,  6, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 7, 10, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07013CC8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  2,  1, 0x0,  4,  1,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(10,  9, 12, 0x0,  9, 11, 13, 0x0),\n    gsSP2Triangles(14, 13, 11, 0x0, 14, 11, 15, 0x0),\n    gsSP2Triangles( 7, 12, 14, 0x0,  7, 14, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07013DC8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07013EC8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  6,  5, 0x0),\n    gsSP2Triangles(11, 12,  6, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07013FC8, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 2,  5,  0, 0x0,  6,  1,  4, 0x0),\n    gsSP2Triangles( 6,  4,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 8, 11,  9, 0x0, 12, 11,  8, 0x0),\n    gsSPLight(&ssl_seg7_lights_07012BD0.l, 1),\n    gsSPLight(&ssl_seg7_lights_07012BD0.a, 2),\n    gsSPVertex(ssl_seg7_vertex_07014098, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07014188, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07014278, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07014368, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  5,  7, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 12, 10, 0x0),\n    gsSP1Triangle( 0, 13,  1, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07014448, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 3,  1,  0, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07014548, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07014628, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07014728, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07014818, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070148F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070149E8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07014AC8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07014BB8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07014CA8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07014D98, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07014E88, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07014F78, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 0,  2, 10, 0x0,  0, 11, 12, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07015078, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07015168, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07015248, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07015348, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  3,  5, 0x0,  4,  6,  3, 0x0),\n    gsSP2Triangles( 7,  8,  1, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0,  7, 12,  8, 0x0),\n    gsSP2Triangles( 7,  6,  4, 0x0,  7, 13,  6, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07015428, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  1,  5, 0x0,  4,  5,  6, 0x0),\n    gsSP2Triangles( 7,  4,  6, 0x0,  7,  6,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(11, 15,  9, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07015528, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10,  7, 11, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 14, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07015628, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07015728, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07015818, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  1, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 6, 10,  7, 0x0,  6, 11, 10, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701CFA8 - 0x0701D060\nstatic const Gfx ssl_seg7_dl_0701CFA8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ssl_seg7_vertex_07015908, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  4,  9, 0x0,  4,  6,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07015A08, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07015AE8, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// CLEAR #\n\n// 0x0701D060 - 0x0701E980\nstatic const Gfx ssl_seg7_dl_0701D060[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ssl_seg7_lights_07012C00.l, 1),\n    gsSPLight(&ssl_seg7_lights_07012C00.a, 2),\n    gsSPVertex(ssl_seg7_vertex_07015B48, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 3,  4,  1, 0x0,  3,  5,  4, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSPLight(&ssl_seg7_lights_07012C30.l, 1),\n    gsSPLight(&ssl_seg7_lights_07012C30.a, 2),\n    gsSPVertex(ssl_seg7_vertex_07015BE8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  1, 15,  2, 0x0),\n    gsSPLight(&ssl_seg7_lights_07012C18.l, 1),\n    gsSPLight(&ssl_seg7_lights_07012C18.a, 2),\n    gsSPVertex(ssl_seg7_vertex_07015CE8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07015DD8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07015EC8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07015FB8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 1,  0, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070160A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  4,  3, 0x0,  3,  5,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07016198, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07016288, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07016378, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  4,  3, 0x0,  3,  5,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07016478, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 4,  8,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12,  9, 11, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(14, 15, 13, 0x0, 14, 13, 11, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07016578, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07016678, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07016758, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07016848, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07016938, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07016A18, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07016B08, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07016BF8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07016CE8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07016DD8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07016EC8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07016FB8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPLight(&ssl_seg7_lights_07012BD0.l, 1),\n    gsSPLight(&ssl_seg7_lights_07012BD0.a, 2),\n    gsSPVertex(ssl_seg7_vertex_07016FF8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070170E8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070171D8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070172C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070173B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070174A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10,  8,  7, 0x0, 10,  7, 11, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070175A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07017698, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07017778, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  2,  1, 0x0,  4,  1,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07017858, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  6,  5, 0x0,  8,  5,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07017938, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07017A28, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07017B18, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07017C08, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07017CF8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07017DE8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07017ED8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07017FC8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070180B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070181A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07018298, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07018388, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07018478, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07018568, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07018658, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07018748, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07018838, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07018928, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07018A18, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07018B08, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07018BF8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07018CE8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07018DD8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07018EC8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07018FB8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070190A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07019198, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(11, 12,  9, 0x0, 11, 13, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07019278, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8,  0,  2, 0x0,  2,  9,  8, 0x0),\n    gsSP2Triangles( 2, 10,  9, 0x0, 11,  9, 10, 0x0),\n    gsSP2Triangles(11, 12,  9, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07019378, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 3,  2,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7,  6,  8, 0x0),\n    gsSP2Triangles( 5, 10,  6, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07019458, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07019548, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles( 7, 10,  9, 0x0,  7, 11, 10, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07019648, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  2,  3, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  8,  9,  6, 0x0),\n    gsSP2Triangles( 6, 10,  7, 0x0, 11, 12,  3, 0x0),\n    gsSP2Triangles( 3, 12,  4, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07019748, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  6,  5, 0x0,  9, 10,  8, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 13, 12, 14, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07019848, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 0,  2,  3, 0x0,  5,  2,  1, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  4,  5,  8, 0x0),\n    gsSP2Triangles( 4,  8,  6, 0x0,  4,  9, 10, 0x0),\n    gsSP2Triangles( 4, 10,  5, 0x0,  3,  9,  4, 0x0),\n    gsSP2Triangles( 5, 10,  2, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07019928, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07019A18, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07019AF8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07019BE8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07019CD8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12,  0, 0x0),\n    gsSP2Triangles(11,  0,  2, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07019DD8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07019EB8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0,  9, 13, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07019F98, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11,  7, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0,  0, 13, 14, 0x0),\n    gsSP2Triangles( 0, 14,  1, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701A098, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  2, 0x0,  4,  2,  6, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 8, 11,  9, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 15, 13, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701A198, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  5,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701A298, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(10,  9, 14, 0x0, 10, 15,  8, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701A398, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701A498, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  0,  2,  4, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701A588, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 6,  3,  4, 0x0,  6,  7,  3, 0x0),\n    gsSP2Triangles( 8,  6,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(10, 13, 11, 0x0, 11, 14, 12, 0x0),\n    gsSP1Triangle(11, 15, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701A688, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701A778, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701A858, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701A938, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701AA28, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701AB08, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701ABF8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701ACE8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701ADD8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701AEC8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  3,  5, 0x0,  4,  6,  3, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7, 10,  8, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701AFB8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  1,  5, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  9,  7, 0x0, 10,  6,  8, 0x0),\n    gsSP2Triangles(10, 11,  6, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701B0A8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  3, 0x0,  3,  5,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 12, 10, 0x0),\n    gsSP1Triangle( 0,  2, 13, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701B188, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 4,  7,  8, 0x0,  9,  7, 10, 0x0),\n    gsSP2Triangles( 7,  3, 10, 0x0,  7,  6,  3, 0x0),\n    gsSP2Triangles( 9,  8,  7, 0x0,  9, 11,  8, 0x0),\n    gsSP2Triangles( 9, 10, 12, 0x0,  1,  9,  2, 0x0),\n    gsSP2Triangles( 1, 11,  9, 0x0,  0,  9, 12, 0x0),\n    gsSP2Triangles( 0,  2,  9, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701B288, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// CLEAR #\n\n// 0x0701E980 - 0x0701EAD8\nstatic const Gfx ssl_seg7_dl_0701E980[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ssl_seg7_texture_07001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ssl_seg7_vertex_0701B328, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701B418, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701B508, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701B5F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701B6E8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701EAD8 - 0x0701ECB0\nstatic const Gfx ssl_seg7_dl_0701EAD8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ssl_pyramid_sand),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ssl_seg7_vertex_0701B7A8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  0,  5, 0x0,  1,  0,  4, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701B888, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  1,  0, 0x0,  4,  5,  1, 0x0),\n    gsSP2Triangles( 2,  6,  3, 0x0,  3,  6,  7, 0x0),\n    gsSP2Triangles( 3,  7,  8, 0x0,  3,  8,  9, 0x0),\n    gsSP2Triangles( 5, 10, 11, 0x0, 11,  8,  7, 0x0),\n    gsSP2Triangles(11, 12,  8, 0x0,  4, 10,  5, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701B988, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  2,  3, 0x0,  1,  5,  6, 0x0),\n    gsSP2Triangles( 7,  6,  5, 0x0,  5,  8,  7, 0x0),\n    gsSP2Triangles( 7,  9,  6, 0x0, 10,  9,  7, 0x0),\n    gsSP2Triangles(10,  7, 11, 0x0, 12,  3, 10, 0x0),\n    gsSP2Triangles( 3, 12,  4, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701BA88, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 6,  5,  8, 0x0,  9, 10,  5, 0x0),\n    gsSP2Triangles( 9, 11, 10, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(13, 15, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701BB88, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 3,  4,  2, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 6,  2,  7, 0x0,  5,  2,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701ECB0 - 0x0701EE80\nstatic const Gfx ssl_seg7_dl_0701ECB0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ssl_seg7_vertex_0701BC48, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 5,  4,  7, 0x0,  9,  8,  7, 0x0),\n    gsSP2Triangles( 9,  7, 10, 0x0, 11, 12,  2, 0x0),\n    gsSP1Triangle(11, 13, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701BD28, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 4,  8,  5, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0,  9, 12, 13, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701BE08, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10, 11, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701BF08, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701BFF8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  4,  6, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 3, 10,  4, 0x0,  9, 10,  3, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701C0D8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701EE80 - 0x0701EF80\nconst Gfx ssl_seg7_dl_0701EE80[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogFactor(0x0E49, 0xF2B7), // This isn't gsSPFogPosition since there is no valid min/max pair that corresponds to 0x0E49F2B7\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ssl_seg7_dl_0701C198),\n    gsSPDisplayList(ssl_seg7_dl_0701CFA8),\n    gsSPDisplayList(ssl_seg7_dl_0701D060),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ssl_seg7_dl_0701E980),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ssl_seg7_dl_0701EAD8),\n    gsSPDisplayList(ssl_seg7_dl_0701ECB0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ssl/areas/2/2/model.inc.c",
    "content": "// 0x0701EF80 - 0x0701F070\nstatic const Vtx ssl_seg7_vertex_0701EF80[] = {\n    {{{  3082,    102,   2684}, 0, { 13984,   1704}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3082,      0,   1178}, 0, {-16076,   -338}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3082,      0,   2684}, 0, { 13984,   -338}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   397,   4815,   -419}, 0, {  6628,  -1360}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   397,   4815,   -716}, 0, {   298,  -1360}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   397,   4917,   -716}, 0, {   298,    684}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   397,   4917,   -419}, 0, {  6628,    684}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   632,   4815,   -419}, 0, {  6636,  -1360}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   397,   4815,   -419}, 0, {  1496,  -1360}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   397,   4917,   -419}, 0, {  1496,    684}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   632,   4917,   -419}, 0, {  6636,    684}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   632,   4815,  -1125}, 0, {  7408,  -1360}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   632,   4815,   -419}, 0, { -6694,  -1360}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   632,   4917,   -419}, 0, { -6694,    684}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   632,   4917,  -1125}, 0, {  7408,    684}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701F070 - 0x0701F160\nstatic const Vtx ssl_seg7_vertex_0701F070[] = {\n    {{{  3082,    102,  -1819}, 0, { 14746,   1704}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3082,      0,  -3173}, 0, {-12294,   -338}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3082,      0,  -1819}, 0, { 14746,   -338}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3082,    102,   2684}, 0, { 13984,   1704}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3082,    102,   1178}, 0, {-16076,   1704}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3082,      0,   1178}, 0, {-16076,   -338}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3082,      0,   1178}, 0, {  8450,   -338}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3082,    102,   1178}, 0, {  8450,   1704}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3082,    102,    411}, 0, { -6856,   1704}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3082,      0,    411}, 0, { -6856,   -338}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3082,    102,   -220}, 0, { 17014,   1704}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3082,    102,  -1819}, 0, {-14890,   1704}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3082,      0,  -1819}, 0, {-14890,   -338}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3082,      0,   -220}, 0, { 17014,   -338}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3082,    102,  -3173}, 0, {-12294,   1704}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701F160 - 0x0701F250\nstatic const Vtx ssl_seg7_vertex_0701F160[] = {\n    {{{ -3081,    102,   1434}, 0, { 11210,    684}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3081,      0,   2970}, 0, {-19448,  -1360}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3081,      0,   1434}, 0, { 11210,  -1360}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3081,    102,  -3173}, 0, { 11210,    684}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3081,    102,  -1819}, 0, {-15830,    684}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3081,      0,  -1819}, 0, {-15830,  -1360}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3081,      0,  -3173}, 0, { 11210,  -1360}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3081,    102,  -1819}, 0, { 14828,    684}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3081,    102,   -283}, 0, {-15830,    684}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3081,      0,   -283}, 0, {-15830,  -1360}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3081,      0,  -1819}, 0, { 14828,  -1360}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3081,    102,   -283}, 0, { 14828,    684}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3081,    102,   1434}, 0, {-19448,    684}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3081,      0,   1434}, 0, {-19448,  -1360}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3081,      0,   -283}, 0, { 14828,  -1360}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701F250 - 0x0701F340\nstatic const Vtx ssl_seg7_vertex_0701F250[] = {\n    {{{ -3081,      0,  -4095}, 0, {  9166,  -1360}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3081,    102,  -3378}, 0, { -5140,    684}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3081,      0,  -3378}, 0, { -5140,  -1360}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3081,    102,   1434}, 0, { 11210,    684}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3081,    102,   2970}, 0, {-19448,    684}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3081,      0,   2970}, 0, {-19448,  -1360}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   886,    102,   2662}, 0, {  3750,    684}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   886,    102,   3082}, 0, { -4630,    684}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   886,      0,   3082}, 0, { -4630,  -1360}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   886,      0,   2662}, 0, {  3750,  -1360}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -885,    102,   3082}, 0, {  6610,    684}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -885,    102,   2662}, 0, { -1768,    684}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -885,      0,   2662}, 0, { -1768,  -1360}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -885,      0,   3082}, 0, {  6610,  -1360}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3081,    102,  -4095}, 0, {  9166,    684}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701F340 - 0x0701F430\nstatic const Vtx ssl_seg7_vertex_0701F340[] = {\n    {{{  2355,    947,  -3378}, 0, { -6162,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2970,    998,  -3378}, 0, {  1500,    606}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2355,    998,  -3378}, 0, { -6162,    606}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   886,    102,   3082}, 0, { 19898,    684}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2970,      0,   3082}, 0, {-21492,  -1360}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   886,      0,   3082}, 0, { 19898,  -1360}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2970,    102,   3082}, 0, {-21492,    684}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -818,    102,   2596}, 0, { 21430,    684}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   819,    102,   2596}, 0, {-11272,    684}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   819,      0,   2596}, 0, {-11272,  -1360}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -818,      0,   2596}, 0, { 21430,  -1360}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2969,    102,   3082}, 0, { 19402,    684}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -885,    102,   3082}, 0, {-21988,    684}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -885,      0,   3082}, 0, {-21988,  -1360}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2969,      0,   3082}, 0, { 19402,  -1360}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701F430 - 0x0701F530\nstatic const Vtx ssl_seg7_vertex_0701F430[] = {\n    {{{  2970,    947,  -3378}, 0, {  2524,  -4120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2355,    947,  -2559}, 0, { -5140,   6098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2970,    947,  -3173}, 0, {  2524,  -1566}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2355,    947,  -3378}, 0, { -6162,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2970,    947,  -3378}, 0, {  1500,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2970,    998,  -3378}, 0, {  1500,    606}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3174,    947,  -2559}, 0, {  5078,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3174,    998,  -2559}, 0, {  5078,    606}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3174,    998,  -3173}, 0, { -2584,    606}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3174,    947,  -3173}, 0, { -2584,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3174,    947,  -2559}, 0, {  5078,   6098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3174,    947,  -3173}, 0, {  5078,  -1566}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2355,    947,  -3378}, 0, { -5140,  -4120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1352,   1843,   3113}, 0, {-15360,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1351,   1894,   3113}, 0, { 18364,    606}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1352,   1894,   3113}, 0, {-15360,    606}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701F530 - 0x0701F620\nstatic const Vtx ssl_seg7_vertex_0701F530[] = {\n    {{{  2355,    947,  -2559}, 0, { -5140,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3174,    947,  -2559}, 0, {  5078,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3174,    998,  -2559}, 0, {  5078,    606}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2355,    998,  -2559}, 0, { -5140,    606}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2355,    947,  -2559}, 0, {  6100,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2355,    998,  -2559}, 0, {  6100,    606}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2355,    998,  -3378}, 0, { -4118,    606}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2355,    947,  -3378}, 0, { -4118,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1352,   1843,   3113}, 0, { -3096,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1352,   1894,   3113}, 0, { -3096,    606}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1352,   1894,   2621}, 0, {  3034,    606}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1352,   1843,   2621}, 0, {  3034,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1351,   1843,   2621}, 0, {  3034,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1351,   1894,   3113}, 0, { -3096,    606}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1351,   1843,   3113}, 0, { -3096,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701F620 - 0x0701F700\nstatic const Vtx ssl_seg7_vertex_0701F620[] = {\n    {{{  1352,   1843,   3113}, 0, {-15360,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1351,   1843,   3113}, 0, { 18364,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1351,   1894,   3113}, 0, { 18364,    606}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1351,   1843,   3113}, 0, { 17342,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1352,   1843,   3113}, 0, {-16382,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1352,   1843,   2621}, 0, {-16382,   3032}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1351,   1843,   2621}, 0, { 17342,   3032}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1352,   1894,   2621}, 0, {-15360,    606}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1351,   1894,   2621}, 0, { 18364,    606}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1351,   1843,   2621}, 0, { 18364,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1352,   1843,   2621}, 0, {-15360,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1351,   1843,   2621}, 0, {  3034,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1351,   1894,   2621}, 0, {  3034,    606}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1351,   1894,   3113}, 0, { -3096,    606}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0701F700 - 0x0701F920\nstatic const Gfx ssl_seg7_dl_0701F700[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ssl_seg7_vertex_0701EF80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701F070, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701F160, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701F250, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701F340, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701F430, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11,  2, 0x0, 10,  2,  1, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701F530, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701F620, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701F920 - 0x0701F9D8\nconst Gfx ssl_seg7_dl_0701F920[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogFactor(0x0E49, 0xF2B7), // This isn't gsSPFogPosition since there is no valid min/max pair that corresponds to 0x0E49F2B7\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ssl_seg7_dl_0701F700),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ssl/areas/2/3/model.inc.c",
    "content": "// 0x0701F9D8 - 0x0701FAD8\nstatic const Vtx ssl_seg7_vertex_0701F9D8[] = {\n    {{{  1024,   1485,   2621}, 0, {-10762,   2520}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  1024,   1485,   3113}, 0, {-10762,  -3610}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  1352,   1298,   3113}, 0, {-14850,  -3610}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  2970,    640,  -3378}, 0, {  2524,  -4120}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  2355,    640,  -3378}, 0, { -5140,  -4120}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  2355,    640,  -3276}, 0, { -5140,  -2842}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  2970,    640,  -3276}, 0, {  2524,  -2842}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  3174,    640,  -2559}, 0, {  5078,   6098}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  3174,    640,  -3173}, 0, {  5078,  -1566}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  3072,    640,  -3173}, 0, {  3800,  -1566}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  3072,    640,  -2559}, 0, {  3800,   6098}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   870,   1485,   2621}, 0, { -8844,   2522}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  1352,   1298,   2621}, 0, {-14850,   2520}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   819,   1536,   2621}, 0, { -8206,   2522}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   870,   1536,   3113}, 0, { -8844,  -3610}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   870,   1536,   2621}, 0, { -8844,   2522}, {0x00, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0701FAD8 - 0x0701FBD8\nstatic const Vtx ssl_seg7_vertex_0701FAD8[] = {\n    {{{  1024,   1485,   3113}, 0, {-10762,  -3610}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   870,   1485,   2621}, 0, { -8844,   2522}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   870,   1485,   3113}, 0, { -8844,  -3610}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{ -1023,   1485,   2621}, 0, { 14788,   2522}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{ -1023,   1485,   3113}, 0, { 14788,  -3610}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -869,   1485,   3113}, 0, { 12870,  -3610}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{ -1351,   1298,   2621}, 0, { 18876,   2522}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{ -1351,   1298,   3113}, 0, { 18876,  -3610}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -869,   1485,   2621}, 0, { 12870,   2522}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   819,   1536,   2621}, 0, { -8206,   2522}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   819,   1536,   3113}, 0, { -8206,  -3610}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   870,   1536,   3113}, 0, { -8844,  -3610}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   819,   1510,   3113}, 0, { -8206,  -3610}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -818,   1306,   2621}, 0, { 12232,   2522}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -818,   1510,   3113}, 0, { 12232,  -3610}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   819,   1306,   2621}, 0, { -8206,   2522}, {0x00, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0701FBD8 - 0x0701FC18\nstatic const Vtx ssl_seg7_vertex_0701FBD8[] = {\n    {{{  -869,   1536,   2621}, 0, { 12870,   2522}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -869,   1536,   3113}, 0, { 12870,  -3610}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -818,   1536,   3113}, 0, { 12232,  -3610}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -818,   1536,   2621}, 0, { 12232,   2522}, {0x00, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0701FC18 - 0x0701FCE0\nstatic const Gfx ssl_seg7_dl_0701FC18[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ssl_seg7_vertex_0701F9D8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  1,  0, 11, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701FAD8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 3,  5,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701FBD8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701FCE0 - 0x0701FD60\nconst Gfx ssl_seg7_dl_0701FCE0[] = {\n    gsDPPipeSync(),\n    gsDPSetEnvColor(255, 255, 255, 100),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADEA, G_CC_MODULATERGBFADEA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ssl_seg7_dl_0701FC18),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ssl/areas/2/4/geo.inc.c",
    "content": "// 0x0E0005D8\nconst GeoLayout ssl_geo_0005D8[] = {\n    GEO_CULLING_RADIUS(2000),\n    GEO_OPEN_NODE(),\n        GEO_RENDER_RANGE(-1000, 4000),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0x802, geo_movtex_draw_colored_2_no_update),\n        GEO_CLOSE_NODE(),\n        GEO_RENDER_RANGE(4000, 12800),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, ssl_dl_pyramid_quicksand_pit_static),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ssl/areas/2/4/model.inc.c",
    "content": "// Quicksand Pit\n\n// 0x07004000 - 0x07004018\nstatic const Lights1 ssl_lights_quicksand_pit = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07004018 - 0x07004818\nALIGNED8 const Texture ssl_quicksand[] = {\n#include \"levels/ssl/7.rgba16.inc.c\"\n};\n\n// 0x07004818 - 0x07004860\nconst Gfx ssl_dl_quicksand_pit_begin[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPLight(&ssl_lights_quicksand_pit.l, 1),\n    gsSPLight(&ssl_lights_quicksand_pit.a, 2),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x07004860 - 0x07004880\nconst Gfx ssl_dl_quicksand_pit_end[] = {\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x07004880 - 0x070048F8\nconst Gfx ssl_dl_pyramid_quicksand_pit_begin[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogFactor(0x0E49, 0xF2B7), // This isn't gsSPFogPosition since there is no valid min/max pair that corresponds to 0x0E49F2B7\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsSPLight(&ssl_lights_quicksand_pit.l, 1),\n    gsSPLight(&ssl_lights_quicksand_pit.a, 2),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x070048F8 - 0x07004930\nconst Gfx ssl_dl_pyramid_quicksand_pit_end[] = {\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x07004930 - 0x07004AB4\nMovtex ssl_movtex_tris_quicksand_pit[] = {\n    MOV_TEX_SPD(         10),\n    MOV_TEX_LIGHT_TRIS(    0, -204,    0, 127, 0, 0),\n    MOV_TEX_LIGHT_TRIS( 1024,    0,    0, 127, 2, 0),\n    MOV_TEX_LIGHT_TRIS(  512,    0, -886, 127, 2, 1),\n    MOV_TEX_LIGHT_TRIS( -511,    0, -886, 127, 2, 2),\n    MOV_TEX_LIGHT_TRIS(-1023,    0,    0, 127, 2, 3),\n    MOV_TEX_LIGHT_TRIS( -511,    0,  887, 127, 2, 2),\n    MOV_TEX_LIGHT_TRIS(  512,    0,  887, 127, 2, 1),\n    MOV_TEX_LIGHT_TRIS( 1024,    0,    0, 127, 2, 0),\n    MOV_TEX_END(),\n};\n\n// 0x070049B4 - 0x07004A38\nMovtex ssl_movtex_tris_pyramid_quicksand_pit[] = {\n    MOV_TEX_SPD(          5),\n    MOV_TEX_LIGHT_TRIS(    0, -204,    0, 127, 0, 0),\n    MOV_TEX_LIGHT_TRIS( 1024,    0,    0, 127, 2, 0),\n    MOV_TEX_LIGHT_TRIS(  512,    0, -886, 127, 2, 1),\n    MOV_TEX_LIGHT_TRIS( -511,    0, -886, 127, 2, 2),\n    MOV_TEX_LIGHT_TRIS(-1023,    0,    0, 127, 2, 3),\n    MOV_TEX_LIGHT_TRIS( -511,    0,  887, 127, 2, 2),\n    MOV_TEX_LIGHT_TRIS(  512,    0,  887, 127, 2, 1),\n    MOV_TEX_LIGHT_TRIS( 1024,    0,    0, 127, 2, 0),\n    MOV_TEX_END(),\n};\n\n// 0x07004A38 - 0x07004A70\nconst Gfx ssl_dl_quicksand_pit[] = {\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  0,  4,  5, 0x0),\n    gsSP2Triangles( 0,  5,  6, 0x0,  0,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07004A70 - 0x07004AE0\nstatic const Vtx ssl_seg7_vertex_07004A70[] = {\n    {{{     0,   -204,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,      0,      0}, 0, {  2016,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,      0,   -886}, 0, {  2016,    992}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,      0,   -886}, 0, {  2016,   2016}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,      0,      0}, 0, {  2016,   3040}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,      0,    887}, 0, {  2016,   2016}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,      0,    887}, 0, {  2016,    992}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07004AE0 - 0x07004BE0\nconst Gfx ssl_dl_pyramid_quicksand_pit_static[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogFactor(0x0E49, 0xF2B7), // This isn't gsSPFogPosition since there is no valid min/max pair that corresponds to 0x0E49F2B7\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsSPLight(&ssl_lights_quicksand_pit.l, 1),\n    gsSPLight(&ssl_lights_quicksand_pit.a, 2),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPLoadTextureBlock(ssl_pyramid_sand, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 5, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(ssl_seg7_vertex_07004A70, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  0,  4,  5, 0x0),\n    gsSP2Triangles( 0,  5,  6, 0x0,  0,  6,  1, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ssl/areas/2/collision.inc.c",
    "content": "// 0x07023678 - 0x070275BC\nconst Collision ssl_seg7_area_2_collision[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x438),\n    COL_VERTEX(512, 435, -3685),\n    COL_VERTEX(512, 435, -3327),\n    COL_VERTEX(1102, 0, -3327),\n    COL_VERTEX(1102, 0, -3685),\n    COL_VERTEX(-511, 435, -3327),\n    COL_VERTEX(-511, 435, -3685),\n    COL_VERTEX(-1101, 0, -3685),\n    COL_VERTEX(-1101, 0, -3327),\n    COL_VERTEX(192, -275, -1956),\n    COL_VERTEX(-191, -275, -1956),\n    COL_VERTEX(-191, -13, -1731),\n    COL_VERTEX(-191, 188, -1421),\n    COL_VERTEX(192, 188, -1421),\n    COL_VERTEX(192, -13, -1731),\n    COL_VERTEX(-191, -562, -2048),\n    COL_VERTEX(192, -562, -2048),\n    COL_VERTEX(192, -664, -2048),\n    COL_VERTEX(-191, -664, -2048),\n    COL_VERTEX(2970, 957, -3173),\n    COL_VERTEX(2355, 957, -3378),\n    COL_VERTEX(2970, 957, -3378),\n    COL_VERTEX(2355, 957, -2559),\n    COL_VERTEX(3174, 957, -3173),\n    COL_VERTEX(3174, 957, -2559),\n    COL_VERTEX(-1351, 1853, 2621),\n    COL_VERTEX(1352, 1853, 3113),\n    COL_VERTEX(-1351, 1853, 3113),\n    COL_VERTEX(1352, 1853, 2621),\n    COL_VERTEX(896, -101, 2586),\n    COL_VERTEX(128, -101, 2509),\n    COL_VERTEX(-895, -101, 2586),\n    COL_VERTEX(-127, -101, 2509),\n    COL_VERTEX(717, -101, 1843),\n    COL_VERTEX(128, -101, 2253),\n    COL_VERTEX(-127, -101, 2253),\n    COL_VERTEX(-716, -101, 1843),\n    COL_VERTEX(-895, -101, 3072),\n    COL_VERTEX(-1228, -101, 2730),\n    COL_VERTEX(1229, -101, 2730),\n    COL_VERTEX(896, -101, 3072),\n    COL_VERTEX(-511, -101, 1415),\n    COL_VERTEX(-1023, -101, 528),\n    COL_VERTEX(-1228, -101, 956),\n    COL_VERTEX(1024, -101, 528),\n    COL_VERTEX(512, -101, 1415),\n    COL_VERTEX(1229, -101, 956),\n    COL_VERTEX(-1522, -101, 230),\n    COL_VERTEX(-1266, -101, 230),\n    COL_VERTEX(-2252, -101, 956),\n    COL_VERTEX(-2546, -101, -25),\n    COL_VERTEX(-511, -101, -357),\n    COL_VERTEX(-754, -101, -537),\n    COL_VERTEX(-2546, -101, -1305),\n    COL_VERTEX(-1010, -101, -793),\n    COL_VERTEX(-2802, -101, -1305),\n    COL_VERTEX(-1522, -101, -25),\n    COL_VERTEX(-1266, -101, -1561),\n    COL_VERTEX(-1522, -101, -1305),\n    COL_VERTEX(-1522, -101, -1561),\n    COL_VERTEX(-3071, -101, -3276),\n    COL_VERTEX(-3071, -101, -255),\n    COL_VERTEX(-2802, -101, 230),\n    COL_VERTEX(-2764, -101, 1843),\n    COL_VERTEX(-3071, -101, 3072),\n    COL_VERTEX(-1306, -101, -3276),\n    COL_VERTEX(-383, -101, -2559),\n    COL_VERTEX(384, -101, -2559),\n    COL_VERTEX(3072, -101, -255),\n    COL_VERTEX(2765, -101, 1843),\n    COL_VERTEX(1805, -101, -1253),\n    COL_VERTEX(2061, -101, -1509),\n    COL_VERTEX(512, -101, -357),\n    COL_VERTEX(1307, -101, -3276),\n    COL_VERTEX(1805, -101, -1509),\n    COL_VERTEX(2189, -101, -1765),\n    COL_VERTEX(1716, -101, -4095),\n    COL_VERTEX(1933, -101, -1765),\n    COL_VERTEX(1933, -101, -2021),\n    COL_VERTEX(2023, -101, -3276),\n    COL_VERTEX(2189, -101, -2021),\n    COL_VERTEX(2445, -101, -1893),\n    COL_VERTEX(2433, -101, -4095),\n    COL_VERTEX(2445, -101, -2149),\n    COL_VERTEX(2573, -101, -2405),\n    COL_VERTEX(2433, -101, -3276),\n    COL_VERTEX(2573, -101, -2661),\n    COL_VERTEX(2701, -101, -2149),\n    COL_VERTEX(2829, -101, -2661),\n    COL_VERTEX(2829, -101, -3173),\n    COL_VERTEX(2701, -101, -1893),\n    COL_VERTEX(3072, -101, -2667),\n    COL_VERTEX(2829, -101, -2405),\n    COL_VERTEX(2829, -101, -2917),\n    COL_VERTEX(2304, -101, 2970),\n    COL_VERTEX(2253, -101, 2730),\n    COL_VERTEX(2970, -101, 2714),\n    COL_VERTEX(2970, -101, 2970),\n    COL_VERTEX(2714, -101, 2970),\n    COL_VERTEX(3072, -101, 3072),\n    COL_VERTEX(-2252, -101, 2730),\n    COL_VERTEX(-2546, -101, 230),\n    COL_VERTEX(-1266, -101, -1305),\n    COL_VERTEX(-1010, -101, -537),\n    COL_VERTEX(2253, -101, 956),\n    COL_VERTEX(-1266, -101, -25),\n    COL_VERTEX(-2802, -101, -25),\n    COL_VERTEX(-754, -101, -793),\n    COL_VERTEX(-2546, -101, -1561),\n    COL_VERTEX(-2802, -101, -1561),\n    COL_VERTEX(-1306, -101, -4095),\n    COL_VERTEX(-3071, -101, -4095),\n    COL_VERTEX(-383, -101, -357),\n    COL_VERTEX(3072, -101, -1203),\n    COL_VERTEX(2061, -101, -1253),\n    COL_VERTEX(384, -101, -3276),\n    COL_VERTEX(2560, -101, 2970),\n    COL_VERTEX(384, -101, -357),\n    COL_VERTEX(1716, -101, -3276),\n    COL_VERTEX(1307, -101, -4095),\n    COL_VERTEX(2573, -101, -2917),\n    COL_VERTEX(2023, -101, -4095),\n    COL_VERTEX(2573, -101, -3173),\n    COL_VERTEX(3072, -101, -3276),\n    COL_VERTEX(2304, -101, 2714),\n    COL_VERTEX(2560, -101, 2714),\n    COL_VERTEX(2714, -101, 2714),\n    COL_VERTEX(-383, -153, -136),\n    COL_VERTEX(384, -153, -136),\n    COL_VERTEX(768, -153, 528),\n    COL_VERTEX(384, -153, 1193),\n    COL_VERTEX(-383, -153, 1193),\n    COL_VERTEX(-2124, -153, 1178),\n    COL_VERTEX(-1356, -153, 1178),\n    COL_VERTEX(-2508, -153, 1843),\n    COL_VERTEX(-1356, -153, 2508),\n    COL_VERTEX(-2124, -153, 2508),\n    COL_VERTEX(-972, -153, 1843),\n    COL_VERTEX(-767, -153, 528),\n    COL_VERTEX(1357, -153, 1178),\n    COL_VERTEX(2125, -153, 1178),\n    COL_VERTEX(2509, -153, 1843),\n    COL_VERTEX(2125, -153, 2508),\n    COL_VERTEX(1357, -153, 2508),\n    COL_VERTEX(973, -153, 1843),\n    COL_VERTEX(896, 0, 3072),\n    COL_VERTEX(-306, 0, 4915),\n    COL_VERTEX(307, 0, 4915),\n    COL_VERTEX(896, 0, 4096),\n    COL_VERTEX(896, 0, 4915),\n    COL_VERTEX(-895, 0, 3072),\n    COL_VERTEX(-895, 0, 4096),\n    COL_VERTEX(-895, 0, 4915),\n    COL_VERTEX(-895, 0, 2586),\n    COL_VERTEX(896, 0, 2586),\n    COL_VERTEX(3072, 0, 3072),\n    COL_VERTEX(3994, 0, 4096),\n    COL_VERTEX(-3071, 0, 3072),\n    COL_VERTEX(-3071, 0, -283),\n    COL_VERTEX(-3071, 0, -3276),\n    COL_VERTEX(-306, 0, 6758),\n    COL_VERTEX(307, 0, 6758),\n    COL_VERTEX(-3993, 0, -4095),\n    COL_VERTEX(-3071, 0, -4095),\n    COL_VERTEX(-3993, 0, -283),\n    COL_VERTEX(-3993, 0, 4096),\n    COL_VERTEX(387, 4927, -716),\n    COL_VERTEX(427, 4887, -450),\n    COL_VERTEX(427, 4887, -716),\n    COL_VERTEX(387, 4927, -409),\n    COL_VERTEX(602, 4887, -450),\n    COL_VERTEX(643, 4927, -409),\n    COL_VERTEX(602, 4887, -1125),\n    COL_VERTEX(643, 4927, -1125),\n    COL_VERTEX(3072, 113, 411),\n    COL_VERTEX(3072, 113, 2714),\n    COL_VERTEX(3113, 72, 2714),\n    COL_VERTEX(3113, 72, 411),\n    COL_VERTEX(3113, 72, -3173),\n    COL_VERTEX(-3071, 113, -1819),\n    COL_VERTEX(-3071, 113, -283),\n    COL_VERTEX(-3071, 113, 1434),\n    COL_VERTEX(-3071, 113, 2970),\n    COL_VERTEX(-3071, 113, -3378),\n    COL_VERTEX(2970, 113, 3072),\n    COL_VERTEX(896, 113, 3072),\n    COL_VERTEX(-895, 113, 2662),\n    COL_VERTEX(-895, 113, 3072),\n    COL_VERTEX(819, 113, 2586),\n    COL_VERTEX(-818, 1536, 3174),\n    COL_VERTEX(3072, 113, -220),\n    COL_VERTEX(3113, 72, -220),\n    COL_VERTEX(3072, 113, -3173),\n    COL_VERTEX(-3071, 113, -3173),\n    COL_VERTEX(-3112, 72, -3173),\n    COL_VERTEX(-3112, 72, -1819),\n    COL_VERTEX(-3112, 72, -283),\n    COL_VERTEX(-3112, 72, 1434),\n    COL_VERTEX(-3112, 72, 2970),\n    COL_VERTEX(-3112, 72, -4095),\n    COL_VERTEX(-3112, 72, -3378),\n    COL_VERTEX(-3071, 113, -4095),\n    COL_VERTEX(855, 72, 3113),\n    COL_VERTEX(896, 113, 2662),\n    COL_VERTEX(855, 72, 2662),\n    COL_VERTEX(2970, 72, 3113),\n    COL_VERTEX(-854, 72, 3113),\n    COL_VERTEX(-854, 72, 2662),\n    COL_VERTEX(-2969, 72, 3113),\n    COL_VERTEX(-2969, 113, 3072),\n    COL_VERTEX(-818, 113, 2586),\n    COL_VERTEX(-818, 72, 2627),\n    COL_VERTEX(819, 72, 2627),\n    COL_VERTEX(819, 1536, 3174),\n    COL_VERTEX(819, 1280, 2560),\n    COL_VERTEX(-818, 1280, 2560),\n    COL_VERTEX(-255, -204, 85),\n    COL_VERTEX(256, -204, 85),\n    COL_VERTEX(512, -204, 528),\n    COL_VERTEX(256, -204, 972),\n    COL_VERTEX(-255, -204, 972),\n    COL_VERTEX(-1996, -204, 1400),\n    COL_VERTEX(-2252, -204, 1843),\n    COL_VERTEX(-1484, -204, 2287),\n    COL_VERTEX(-1996, -204, 2287),\n    COL_VERTEX(-1228, -204, 1843),\n    COL_VERTEX(-1484, -204, 1400),\n    COL_VERTEX(-1740, 1229, 2150),\n    COL_VERTEX(1178, 1229, 2150),\n    COL_VERTEX(-1740, 1229, -588),\n    COL_VERTEX(-511, -204, 528),\n    COL_VERTEX(1485, -204, 1400),\n    COL_VERTEX(1997, -204, 1400),\n    COL_VERTEX(2253, -204, 1843),\n    COL_VERTEX(1485, -204, 2287),\n    COL_VERTEX(1997, -204, 2287),\n    COL_VERTEX(1229, -204, 1843),\n    COL_VERTEX(-2149, 1229, 2560),\n    COL_VERTEX(1178, 1229, 2560),\n    COL_VERTEX(-2149, 1229, -793),\n    COL_VERTEX(154, 1229, -793),\n    COL_VERTEX(154, 1229, -588),\n    COL_VERTEX(-191, 286, -1222),\n    COL_VERTEX(192, 384, -1023),\n    COL_VERTEX(192, 286, -1222),\n    COL_VERTEX(-191, 384, -1023),\n    COL_VERTEX(128, -255, 307),\n    COL_VERTEX(-127, -255, 307),\n    COL_VERTEX(256, -255, 528),\n    COL_VERTEX(128, -255, 750),\n    COL_VERTEX(-127, -255, 750),\n    COL_VERTEX(-1868, -255, 1621),\n    COL_VERTEX(-1996, -255, 1843),\n    COL_VERTEX(-1612, -255, 2065),\n    COL_VERTEX(-1868, -255, 2065),\n    COL_VERTEX(-1484, -255, 1843),\n    COL_VERTEX(-1612, -255, 1621),\n    COL_VERTEX(-255, -255, 528),\n    COL_VERTEX(1869, -255, 1621),\n    COL_VERTEX(1613, -255, 1621),\n    COL_VERTEX(1997, -255, 1843),\n    COL_VERTEX(1613, -255, 2065),\n    COL_VERTEX(1869, -255, 2065),\n    COL_VERTEX(1485, -255, 1843),\n    COL_VERTEX(0, -306, 528),\n    COL_VERTEX(-1740, -306, 1843),\n    COL_VERTEX(1741, -306, 1843),\n    COL_VERTEX(387, 4815, -409),\n    COL_VERTEX(643, 4815, -1125),\n    COL_VERTEX(387, 4815, -1125),\n    COL_VERTEX(643, 4815, -409),\n    COL_VERTEX(387, 4429, -716),\n    COL_VERTEX(131, 4429, -767),\n    COL_VERTEX(131, 4429, -716),\n    COL_VERTEX(387, 4429, -767),\n    COL_VERTEX(131, 4480, -767),\n    COL_VERTEX(-204, 4480, -767),\n    COL_VERTEX(-204, 4480, -716),\n    COL_VERTEX(131, 4480, -716),\n    COL_VERTEX(-665, 4096, -716),\n    COL_VERTEX(-665, 4096, -767),\n    COL_VERTEX(512, 4480, -716),\n    COL_VERTEX(-665, 3840, 922),\n    COL_VERTEX(512, 4429, -767),\n    COL_VERTEX(-1535, 3942, 922),\n    COL_VERTEX(1536, 3942, 922),\n    COL_VERTEX(102, 3942, 1434),\n    COL_VERTEX(-101, 3942, 1229),\n    COL_VERTEX(-204, 4429, -767),\n    COL_VERTEX(-665, 4045, -767),\n    COL_VERTEX(-665, 4045, -716),\n    COL_VERTEX(512, 4480, -767),\n    COL_VERTEX(387, 4480, -767),\n    COL_VERTEX(387, 4480, -716),\n    COL_VERTEX(-665, 3840, -716),\n    COL_VERTEX(-1074, 3840, -716),\n    COL_VERTEX(-1074, 3840, 922),\n    COL_VERTEX(512, 4429, -1125),\n    COL_VERTEX(-204, 4429, -1125),\n    COL_VERTEX(102, 3942, 1229),\n    COL_VERTEX(1536, 3942, 1536),\n    COL_VERTEX(-101, 3942, 1434),\n    COL_VERTEX(-1535, 3942, 1536),\n    COL_VERTEX(-665, 4045, -1125),\n    COL_VERTEX(-1535, 4045, -1125),\n    COL_VERTEX(-1535, 4045, -716),\n    COL_VERTEX(2381, 1126, -2585),\n    COL_VERTEX(2330, 1126, -2585),\n    COL_VERTEX(2330, 1126, -2533),\n    COL_VERTEX(2381, 1126, -2533),\n    COL_VERTEX(2330, -306, -2533),\n    COL_VERTEX(2330, -306, -2585),\n    COL_VERTEX(2381, -306, -2533),\n    COL_VERTEX(2381, -306, -2585),\n    COL_VERTEX(2381, 1152, -3353),\n    COL_VERTEX(2381, 640, -3404),\n    COL_VERTEX(2330, 640, -3404),\n    COL_VERTEX(2330, 640, -3353),\n    COL_VERTEX(3200, 1152, -2585),\n    COL_VERTEX(3200, 1152, -2533),\n    COL_VERTEX(3200, 640, -2585),\n    COL_VERTEX(3149, 640, -2533),\n    COL_VERTEX(3149, 640, -2585),\n    COL_VERTEX(1377, 1971, 3087),\n    COL_VERTEX(1326, 1229, 3139),\n    COL_VERTEX(1377, 1229, 3087),\n    COL_VERTEX(1377, 1971, 3139),\n    COL_VERTEX(1377, 1971, 2596),\n    COL_VERTEX(1326, 1229, 2647),\n    COL_VERTEX(1377, 1229, 2596),\n    COL_VERTEX(1377, 1971, 2647),\n    COL_VERTEX(-1325, 1971, 3087),\n    COL_VERTEX(-1376, 1229, 3139),\n    COL_VERTEX(-1325, 1229, 3087),\n    COL_VERTEX(-1325, 1971, 3139),\n    COL_VERTEX(-1325, 1971, 2596),\n    COL_VERTEX(-1376, 1229, 2647),\n    COL_VERTEX(-1325, 1971, 2647),\n    COL_VERTEX(-1325, 1229, 2596),\n    COL_VERTEX(2970, -306, 2970),\n    COL_VERTEX(3174, -306, 2970),\n    COL_VERTEX(3174, -306, 3174),\n    COL_VERTEX(2970, -306, 3174),\n    COL_VERTEX(-2969, -306, 2970),\n    COL_VERTEX(-3173, -306, 2970),\n    COL_VERTEX(-2969, -306, 3174),\n    COL_VERTEX(-3173, -306, 3174),\n    COL_VERTEX(2970, -306, -3378),\n    COL_VERTEX(3174, -306, -3378),\n    COL_VERTEX(3174, -306, -3173),\n    COL_VERTEX(2970, -306, -3173),\n    COL_VERTEX(-2969, -306, -3378),\n    COL_VERTEX(-3173, -306, -3378),\n    COL_VERTEX(-2969, -306, -3173),\n    COL_VERTEX(-3173, -306, -3173),\n    COL_VERTEX(410, 5734, -153),\n    COL_VERTEX(-409, 5734, 666),\n    COL_VERTEX(922, -306, 2560),\n    COL_VERTEX(922, 1152, 2662),\n    COL_VERTEX(819, -306, 2662),\n    COL_VERTEX(-818, -306, 2560),\n    COL_VERTEX(-818, 1152, 2662),\n    COL_VERTEX(-921, -306, 2662),\n    COL_VERTEX(2381, 640, -3353),\n    COL_VERTEX(2381, 1152, -3404),\n    COL_VERTEX(2330, 1152, -3353),\n    COL_VERTEX(2330, 1152, -3404),\n    COL_VERTEX(3149, 1152, -2533),\n    COL_VERTEX(3149, 1152, -2585),\n    COL_VERTEX(3200, 640, -2533),\n    COL_VERTEX(1326, 1971, 3087),\n    COL_VERTEX(1326, 1971, 3139),\n    COL_VERTEX(1326, 1229, 3087),\n    COL_VERTEX(1377, 1229, 3139),\n    COL_VERTEX(1326, 1971, 2596),\n    COL_VERTEX(1326, 1971, 2647),\n    COL_VERTEX(1326, 1229, 2596),\n    COL_VERTEX(1377, 1229, 2647),\n    COL_VERTEX(-1376, 1971, 3087),\n    COL_VERTEX(-1376, 1971, 3139),\n    COL_VERTEX(-1376, 1229, 3087),\n    COL_VERTEX(-1325, 1229, 3139),\n    COL_VERTEX(-1376, 1971, 2647),\n    COL_VERTEX(-1376, 1971, 2596),\n    COL_VERTEX(-1376, 1229, 2596),\n    COL_VERTEX(-1325, 1229, 2647),\n    COL_VERTEX(3174, 1152, 2970),\n    COL_VERTEX(3174, 1152, 3174),\n    COL_VERTEX(2970, 1152, 3174),\n    COL_VERTEX(2970, 1152, 2970),\n    COL_VERTEX(-2969, 1152, 2970),\n    COL_VERTEX(-2969, 1152, 3174),\n    COL_VERTEX(-3173, 1152, 3174),\n    COL_VERTEX(-3173, 1152, 2970),\n    COL_VERTEX(3174, 1152, -3378),\n    COL_VERTEX(3174, 1152, -3173),\n    COL_VERTEX(2970, 1152, -3173),\n    COL_VERTEX(2970, 1152, -3378),\n    COL_VERTEX(-2969, 1152, -3173),\n    COL_VERTEX(-2969, 1152, -3378),\n    COL_VERTEX(-3173, 1152, -3173),\n    COL_VERTEX(-3173, 1152, -3378),\n    COL_VERTEX(410, 5222, -153),\n    COL_VERTEX(410, 5222, 666),\n    COL_VERTEX(-409, 5222, -153),\n    COL_VERTEX(-409, 5734, -153),\n    COL_VERTEX(410, 5734, 666),\n    COL_VERTEX(-409, 5222, 666),\n    COL_VERTEX(102, 3712, 1434),\n    COL_VERTEX(-101, 3712, 1434),\n    COL_VERTEX(-101, 3712, 1229),\n    COL_VERTEX(102, 3712, 1229),\n    COL_VERTEX(922, 1152, 2560),\n    COL_VERTEX(922, -306, 2662),\n    COL_VERTEX(819, 1152, 2662),\n    COL_VERTEX(819, 1152, 2560),\n    COL_VERTEX(819, -306, 2560),\n    COL_VERTEX(-818, 1152, 2560),\n    COL_VERTEX(-818, -306, 2662),\n    COL_VERTEX(-921, 1152, 2662),\n    COL_VERTEX(-921, 1152, 2560),\n    COL_VERTEX(-921, -306, 2560),\n    COL_VERTEX(3584, 1152, 473),\n    COL_VERTEX(3522, 1152, 411),\n    COL_VERTEX(3584, 0, 473),\n    COL_VERTEX(3522, 0, 411),\n    COL_VERTEX(3522, 1152, -220),\n    COL_VERTEX(3584, 1152, -283),\n    COL_VERTEX(3584, 0, -283),\n    COL_VERTEX(3522, 0, -220),\n    COL_VERTEX(-3583, 0, 473),\n    COL_VERTEX(-3521, 0, 411),\n    COL_VERTEX(-3521, 1152, 411),\n    COL_VERTEX(-3583, 1152, 473),\n    COL_VERTEX(-3521, 0, -220),\n    COL_VERTEX(-3583, 0, -283),\n    COL_VERTEX(-3521, 1152, -220),\n    COL_VERTEX(-3583, 1152, -283),\n    COL_VERTEX(-76, 845, 6528),\n    COL_VERTEX(77, 845, 6528),\n    COL_VERTEX(307, 845, 6758),\n    COL_VERTEX(-306, 845, 6758),\n    COL_VERTEX(-76, 1152, 6528),\n    COL_VERTEX(-306, 845, 4915),\n    COL_VERTEX(-76, 845, 6374),\n    COL_VERTEX(307, 845, 4915),\n    COL_VERTEX(77, 845, 6374),\n    COL_VERTEX(77, 1152, 6528),\n    COL_VERTEX(819, 845, 4915),\n    COL_VERTEX(77, 1152, 6374),\n    COL_VERTEX(-818, 0, 4915),\n    COL_VERTEX(-76, 1152, 6374),\n    COL_VERTEX(819, 0, 4915),\n    COL_VERTEX(-818, 845, 4915),\n    COL_VERTEX(-818, 845, 3994),\n    COL_VERTEX(-818, 0, 3994),\n    COL_VERTEX(-1125, 512, 3994),\n    COL_VERTEX(-1125, 0, 4096),\n    COL_VERTEX(-1125, 512, 3584),\n    COL_VERTEX(-1125, 1152, 3994),\n    COL_VERTEX(1126, 0, 3994),\n    COL_VERTEX(1126, 512, 4096),\n    COL_VERTEX(2560, 512, 3584),\n    COL_VERTEX(1126, 512, 3994),\n    COL_VERTEX(1126, 1152, 3994),\n    COL_VERTEX(819, 845, 3994),\n    COL_VERTEX(-511, 435, -4148),\n    COL_VERTEX(512, 461, -3722),\n    COL_VERTEX(512, 486, -3759),\n    COL_VERTEX(512, 512, -3796),\n    COL_VERTEX(512, 538, -3833),\n    COL_VERTEX(512, 563, -3870),\n    COL_VERTEX(512, 589, -3907),\n    COL_VERTEX(512, 614, -3943),\n    COL_VERTEX(102, 6144, 154),\n    COL_VERTEX(-101, 6144, 358),\n    COL_VERTEX(1536, 5222, 1536),\n    COL_VERTEX(-1535, 5222, 1536),\n    COL_VERTEX(1536, 5222, -1125),\n    COL_VERTEX(1946, 3200, 1536),\n    COL_VERTEX(-1945, 3712, 1536),\n    COL_VERTEX(-204, 3072, 1536),\n    COL_VERTEX(0, 3072, 2560),\n    COL_VERTEX(-1074, 3712, 922),\n    COL_VERTEX(1946, 3712, 1536),\n    COL_VERTEX(1536, 3712, 922),\n    COL_VERTEX(-1945, 3712, -2612),\n    COL_VERTEX(1946, 3712, -2612),\n    COL_VERTEX(-112, 3712, -767),\n    COL_VERTEX(512, 3712, -716),\n    COL_VERTEX(512, 3712, -1125),\n    COL_VERTEX(-1945, 3072, 2560),\n    COL_VERTEX(1536, 3072, 1459),\n    COL_VERTEX(-2764, 2560, -2612),\n    COL_VERTEX(-2764, 1920, -2612),\n    COL_VERTEX(-1945, 2560, 311),\n    COL_VERTEX(-2764, 2560, 3174),\n    COL_VERTEX(-2764, 2125, 106),\n    COL_VERTEX(0, 2560, 3174),\n    COL_VERTEX(2970, 2560, 2970),\n    COL_VERTEX(3174, 2560, 2560),\n    COL_VERTEX(-2764, 1920, 311),\n    COL_VERTEX(-2764, 1920, 3174),\n    COL_VERTEX(-2866, 1920, 311),\n    COL_VERTEX(-2866, 2125, 106),\n    COL_VERTEX(-2866, 1920, 106),\n    COL_VERTEX(-2764, 1920, 106),\n    COL_VERTEX(2765, 1280, 2970),\n    COL_VERTEX(2765, 1152, 2970),\n    COL_VERTEX(2765, 1152, 2765),\n    COL_VERTEX(2970, 1280, 2765),\n    COL_VERTEX(3174, 1152, 2560),\n    COL_VERTEX(2765, 1280, 2765),\n    COL_VERTEX(3584, 1152, 3584),\n    COL_VERTEX(-3173, 1792, -3022),\n    COL_VERTEX(-2149, 1792, -1998),\n    COL_VERTEX(0, 1152, -3022),\n    COL_VERTEX(-3583, 1152, -3841),\n    COL_VERTEX(1280, 1792, -2612),\n    COL_VERTEX(3174, 1792, -3022),\n    COL_VERTEX(666, 1792, -2612),\n    COL_VERTEX(-3173, 1152, 0),\n    COL_VERTEX(-3173, 1792, 2560),\n    COL_VERTEX(-2149, 1792, 311),\n    COL_VERTEX(-1125, 1152, 3584),\n    COL_VERTEX(770, 640, -3841),\n    COL_VERTEX(3584, 1152, -3841),\n    COL_VERTEX(770, 1152, -3841),\n    COL_VERTEX(770, 1152, -4148),\n    COL_VERTEX(-3583, 512, -283),\n    COL_VERTEX(-3583, 512, -3841),\n    COL_VERTEX(3174, 1152, -3022),\n    COL_VERTEX(-3583, 512, 473),\n    COL_VERTEX(3584, 1152, 0),\n    COL_VERTEX(3584, 640, 3584),\n    COL_VERTEX(1126, 1152, 3584),\n    COL_VERTEX(-1125, 1152, 2560),\n    COL_VERTEX(-3583, 512, 3584),\n    COL_VERTEX(3994, 512, 473),\n    COL_VERTEX(-3993, 0, 473),\n    COL_VERTEX(3584, 512, -283),\n    COL_VERTEX(3994, 512, -4095),\n    COL_VERTEX(-3993, 512, 4096),\n    COL_VERTEX(-1101, 512, -4095),\n    COL_VERTEX(3072, 512, -3276),\n    COL_VERTEX(1102, 512, -3685),\n    COL_VERTEX(1102, 0, -4095),\n    COL_VERTEX(-3993, 512, -283),\n    COL_VERTEX(-1101, 1152, -4095),\n    COL_VERTEX(-3071, -306, -4095),\n    COL_VERTEX(1716, 0, -4095),\n    COL_VERTEX(2433, 0, -4095),\n    COL_VERTEX(819, 0, 3994),\n    COL_VERTEX(-1125, 512, 4096),\n    COL_VERTEX(-1125, 0, 3994),\n    COL_VERTEX(1126, 0, 4096),\n    COL_VERTEX(1126, 512, 3584),\n    COL_VERTEX(3994, 512, 4096),\n    COL_VERTEX(-3583, 1152, 3584),\n    COL_VERTEX(3584, 512, 3584),\n    COL_VERTEX(3072, 512, 2560),\n    COL_VERTEX(2560, 512, 2560),\n    COL_VERTEX(-511, 461, -3685),\n    COL_VERTEX(512, 461, -3685),\n    COL_VERTEX(-511, 1152, -3685),\n    COL_VERTEX(-511, 486, -3722),\n    COL_VERTEX(-511, 461, -3722),\n    COL_VERTEX(512, 486, -3722),\n    COL_VERTEX(-511, 1152, -4148),\n    COL_VERTEX(-511, 512, -3759),\n    COL_VERTEX(-511, 486, -3759),\n    COL_VERTEX(512, 512, -3759),\n    COL_VERTEX(-511, 538, -3796),\n    COL_VERTEX(-511, 512, -3796),\n    COL_VERTEX(512, 538, -3796),\n    COL_VERTEX(512, 563, -3833),\n    COL_VERTEX(-511, 563, -3833),\n    COL_VERTEX(-511, 538, -3833),\n    COL_VERTEX(-511, 589, -3870),\n    COL_VERTEX(-511, 563, -3870),\n    COL_VERTEX(512, 589, -3870),\n    COL_VERTEX(-511, 614, -3907),\n    COL_VERTEX(-511, 589, -3907),\n    COL_VERTEX(512, 614, -3907),\n    COL_VERTEX(512, 640, -3943),\n    COL_VERTEX(-511, 640, -3943),\n    COL_VERTEX(-511, 614, -3943),\n    COL_VERTEX(-101, 6144, 154),\n    COL_VERTEX(-101, 5734, 154),\n    COL_VERTEX(102, 5734, 154),\n    COL_VERTEX(-101, 5734, 358),\n    COL_VERTEX(102, 5734, 358),\n    COL_VERTEX(102, 6144, 358),\n    COL_VERTEX(-1535, 5222, -1125),\n    COL_VERTEX(-204, 3200, 1536),\n    COL_VERTEX(-1945, 3072, 1536),\n    COL_VERTEX(-204, 3072, 1126),\n    COL_VERTEX(205, 3072, 1459),\n    COL_VERTEX(3174, 3072, 2560),\n    COL_VERTEX(205, 3072, 1126),\n    COL_VERTEX(-1074, 3712, -716),\n    COL_VERTEX(-665, 3712, -716),\n    COL_VERTEX(-665, 3712, 922),\n    COL_VERTEX(1536, 3712, -1125),\n    COL_VERTEX(-1535, 3712, 922),\n    COL_VERTEX(3174, 3072, -1998),\n    COL_VERTEX(1536, 3072, -1998),\n    COL_VERTEX(-1535, 3712, -716),\n    COL_VERTEX(-112, 3712, -716),\n    COL_VERTEX(113, 3712, -716),\n    COL_VERTEX(113, 3712, -767),\n    COL_VERTEX(0, 2560, 2560),\n    COL_VERTEX(-1945, 2560, 2560),\n    COL_VERTEX(-2764, 2560, 311),\n    COL_VERTEX(-1945, 2560, -2612),\n    COL_VERTEX(-2764, 2560, 106),\n    COL_VERTEX(-2764, 2125, 311),\n    COL_VERTEX(3174, 2560, 2970),\n    COL_VERTEX(2970, 2560, 3174),\n    COL_VERTEX(-2866, 2125, 311),\n    COL_VERTEX(2970, 1280, 2970),\n    COL_VERTEX(2970, 1152, 2765),\n    COL_VERTEX(1126, 1152, 2560),\n    COL_VERTEX(0, 1792, -3022),\n    COL_VERTEX(-3173, 1152, -3022),\n    COL_VERTEX(-3173, 1792, 311),\n    COL_VERTEX(1536, 1792, -2612),\n    COL_VERTEX(1536, 1792, -1998),\n    COL_VERTEX(3174, 1792, -1998),\n    COL_VERTEX(-2149, 1792, 2560),\n    COL_VERTEX(-3173, 1152, 2560),\n    COL_VERTEX(0, 1152, -3841),\n    COL_VERTEX(-3583, 1152, 0),\n    COL_VERTEX(-3173, 1792, 0),\n    COL_VERTEX(922, 1792, -1998),\n    COL_VERTEX(1280, 1792, -1998),\n    COL_VERTEX(666, 1792, -1998),\n    COL_VERTEX(922, 1792, -2612),\n    COL_VERTEX(-511, 1152, -3841),\n    COL_VERTEX(-511, 640, -4148),\n    COL_VERTEX(770, 640, -4148),\n    COL_VERTEX(3584, 640, -3841),\n    COL_VERTEX(-1101, 1152, -3841),\n    COL_VERTEX(-3993, 512, -4095),\n    COL_VERTEX(-1101, 512, -3841),\n    COL_VERTEX(3174, 1152, 0),\n    COL_VERTEX(-3993, 512, 473),\n    COL_VERTEX(3584, 640, -283),\n    COL_VERTEX(3584, 640, 473),\n    COL_VERTEX(3994, 0, 473),\n    COL_VERTEX(3584, 512, 473),\n    COL_VERTEX(3994, 512, -283),\n    COL_VERTEX(3994, 0, -283),\n    COL_VERTEX(3994, 0, -4095),\n    COL_VERTEX(1307, 512, -3276),\n    COL_VERTEX(3072, 512, -283),\n    COL_VERTEX(1102, 512, -4095),\n    COL_VERTEX(1307, 512, -3685),\n    COL_VERTEX(-1101, 0, -4095),\n    COL_VERTEX(3072, 512, 473),\n    COL_VERTEX(-1101, 1152, -3685),\n    COL_VERTEX(-1306, 0, -4095),\n    COL_VERTEX(-1306, -306, -4095),\n    COL_VERTEX(1307, 0, -4095),\n    COL_VERTEX(1307, -306, -4095),\n    COL_VERTEX(1716, -306, -4095),\n    COL_VERTEX(2023, -306, -4095),\n    COL_VERTEX(2433, -306, -4095),\n    COL_VERTEX(2023, 0, -4095),\n    COL_VERTEX(387, 4815, -716),\n    COL_VERTEX(427, 4815, -716),\n    COL_VERTEX(427, 4815, -450),\n    COL_VERTEX(602, 4815, -450),\n    COL_VERTEX(3113, 0, 411),\n    COL_VERTEX(3072, 0, 411),\n    COL_VERTEX(3072, 0, -220),\n    COL_VERTEX(3113, 0, -3173),\n    COL_VERTEX(-3071, 0, -1819),\n    COL_VERTEX(-3071, 0, 1434),\n    COL_VERTEX(-3071, -306, -3276),\n    COL_VERTEX(-3071, 0, 2970),\n    COL_VERTEX(-3071, 0, -3378),\n    COL_VERTEX(2970, 0, 3072),\n    COL_VERTEX(896, -306, 2586),\n    COL_VERTEX(-895, 0, 2662),\n    COL_VERTEX(-895, -306, 3072),\n    COL_VERTEX(819, 0, 2586),\n    COL_VERTEX(64, 896, -754),\n    COL_VERTEX(64, 1152, -626),\n    COL_VERTEX(-63, 896, -626),\n    COL_VERTEX(-63, 1152, -754),\n    COL_VERTEX(1178, 1280, 2150),\n    COL_VERTEX(1178, 1178, 2150),\n    COL_VERTEX(1165, 1229, 2150),\n    COL_VERTEX(1178, 1178, 2560),\n    COL_VERTEX(1178, 1152, 2560),\n    COL_VERTEX(1178, 1152, 2099),\n    COL_VERTEX(-1689, 1152, -537),\n    COL_VERTEX(-1689, 1152, 2099),\n    COL_VERTEX(-2201, 1280, -844),\n    COL_VERTEX(-1740, 1280, 2150),\n    COL_VERTEX(-1740, 1280, -588),\n    COL_VERTEX(154, 1280, -793),\n    COL_VERTEX(-2201, 1280, 2560),\n    COL_VERTEX(154, 1280, -588),\n    COL_VERTEX(205, 1280, -537),\n    COL_VERTEX(205, 1280, -844),\n    COL_VERTEX(3149, 1029, -3022),\n    COL_VERTEX(3149, 1152, -3022),\n    COL_VERTEX(3174, 1029, -3022),\n    COL_VERTEX(3174, 1029, -2559),\n    COL_VERTEX(3149, 978, -2585),\n    COL_VERTEX(2381, 978, -2585),\n    COL_VERTEX(2355, 1029, -3022),\n    COL_VERTEX(2381, 978, -3353),\n    COL_VERTEX(2355, 1152, -3022),\n    COL_VERTEX(2355, 1029, -2559),\n    COL_VERTEX(2381, 1029, -3022),\n    COL_VERTEX(2970, 978, -3173),\n    COL_VERTEX(-1325, 1925, 2647),\n    COL_VERTEX(-1325, 1874, 2647),\n    COL_VERTEX(-1325, 1874, 3087),\n    COL_VERTEX(-1351, 1925, 3113),\n    COL_VERTEX(1352, 1925, 3113),\n    COL_VERTEX(-1351, 1925, 2621),\n    COL_VERTEX(1326, 1874, 3087),\n    COL_VERTEX(1352, 1925, 2621),\n    COL_VERTEX(-2802, -132, -1305),\n    COL_VERTEX(-2802, -81, -1561),\n    COL_VERTEX(-2546, -132, -1561),\n    COL_VERTEX(-2802, -81, -1305),\n    COL_VERTEX(-1522, -132, -1305),\n    COL_VERTEX(-1522, -81, -1561),\n    COL_VERTEX(-1266, -132, -1561),\n    COL_VERTEX(-1522, -81, -1305),\n    COL_VERTEX(-1010, -132, -537),\n    COL_VERTEX(-1010, -81, -793),\n    COL_VERTEX(-754, -132, -793),\n    COL_VERTEX(-1010, -81, -537),\n    COL_VERTEX(-1522, -132, 230),\n    COL_VERTEX(-1522, -81, -25),\n    COL_VERTEX(-1266, -132, -25),\n    COL_VERTEX(-1522, -81, 230),\n    COL_VERTEX(-2802, -132, 230),\n    COL_VERTEX(-2802, -81, -25),\n    COL_VERTEX(-2546, -132, -25),\n    COL_VERTEX(-2802, -81, 230),\n    COL_VERTEX(-127, -132, 2509),\n    COL_VERTEX(-127, -81, 2253),\n    COL_VERTEX(128, -132, 2253),\n    COL_VERTEX(-127, -81, 2509),\n    COL_VERTEX(1805, -132, -1253),\n    COL_VERTEX(1805, -81, -1509),\n    COL_VERTEX(2061, -132, -1509),\n    COL_VERTEX(1805, -81, -1253),\n    COL_VERTEX(1933, -132, -1765),\n    COL_VERTEX(1933, -81, -2021),\n    COL_VERTEX(2189, -132, -2021),\n    COL_VERTEX(1933, -81, -1765),\n    COL_VERTEX(2445, -132, -1893),\n    COL_VERTEX(2445, -81, -2149),\n    COL_VERTEX(2701, -132, -2149),\n    COL_VERTEX(2445, -81, -1893),\n    COL_VERTEX(2573, -132, -2405),\n    COL_VERTEX(2573, -81, -2661),\n    COL_VERTEX(2829, -132, -2661),\n    COL_VERTEX(2573, -81, -2405),\n    COL_VERTEX(2573, -132, -2917),\n    COL_VERTEX(2573, -81, -3173),\n    COL_VERTEX(2829, -132, -3173),\n    COL_VERTEX(2573, -81, -2917),\n    COL_VERTEX(2304, -132, 2970),\n    COL_VERTEX(2304, -81, 2714),\n    COL_VERTEX(2560, -132, 2714),\n    COL_VERTEX(2304, -81, 2970),\n    COL_VERTEX(2714, -132, 2970),\n    COL_VERTEX(2714, -81, 2714),\n    COL_VERTEX(2970, -132, 2714),\n    COL_VERTEX(2714, -81, 2970),\n    COL_VERTEX(131, 1967, -716),\n    COL_VERTEX(131, 1967, -460),\n    COL_VERTEX(387, 1967, -460),\n    COL_VERTEX(131, 1839, -460),\n    COL_VERTEX(387, 1839, -716),\n    COL_VERTEX(387, 1967, -716),\n    COL_VERTEX(-384, 2940, -716),\n    COL_VERTEX(-128, 2940, -460),\n    COL_VERTEX(-384, 2940, -460),\n    COL_VERTEX(-384, 2812, -460),\n    COL_VERTEX(-128, 2812, -716),\n    COL_VERTEX(-128, 2940, -716),\n    COL_VERTEX(387, 3913, -460),\n    COL_VERTEX(131, 3913, -460),\n    COL_VERTEX(387, 3785, -716),\n    COL_VERTEX(131, 3785, -460),\n    COL_VERTEX(387, 3913, -716),\n    COL_VERTEX(2970, 1280, 3174),\n    COL_VERTEX(3174, 1280, 2560),\n    COL_VERTEX(387, 4687, -409),\n    COL_VERTEX(387, 4687, -1125),\n    COL_VERTEX(643, 4687, -1125),\n    COL_VERTEX(113, 4275, -767),\n    COL_VERTEX(-112, 4326, -716),\n    COL_VERTEX(-112, 4275, -767),\n    COL_VERTEX(113, 4275, -869),\n    COL_VERTEX(1946, 3200, -2612),\n    COL_VERTEX(205, 3200, 1459),\n    COL_VERTEX(1536, 3200, -1998),\n    COL_VERTEX(-204, 3200, 1126),\n    COL_VERTEX(1536, 1920, -2612),\n    COL_VERTEX(922, 1920, -2612),\n    COL_VERTEX(922, 2560, -2612),\n    COL_VERTEX(1280, 2560, -1998),\n    COL_VERTEX(1280, 2560, -2612),\n    COL_VERTEX(3174, 3072, 0),\n    COL_VERTEX(-2149, 1280, 2560),\n    COL_VERTEX(-2149, 1280, 3174),\n    COL_VERTEX(-1945, 2560, 1536),\n    COL_VERTEX(666, 1920, -2612),\n    COL_VERTEX(-2149, 1920, -1998),\n    COL_VERTEX(-2149, 1920, 311),\n    COL_VERTEX(-2149, 1920, 2560),\n    COL_VERTEX(-1945, 1408, 2970),\n    COL_VERTEX(-1740, 1357, 2970),\n    COL_VERTEX(-1740, 1408, 2765),\n    COL_VERTEX(-1945, 1357, 3174),\n    COL_VERTEX(-1740, 1280, 3174),\n    COL_VERTEX(-2149, 1280, 2765),\n    COL_VERTEX(-1740, 1408, 2970),\n    COL_VERTEX(-2149, 1536, 2970),\n    COL_VERTEX(-1945, 1664, 2970),\n    COL_VERTEX(-2149, 1664, 3174),\n    COL_VERTEX(-869, 1536, 2611),\n    COL_VERTEX(-869, 1485, 2611),\n    COL_VERTEX(1382, 1280, 2560),\n    COL_VERTEX(870, 1485, 3174),\n    COL_VERTEX(819, 1536, 2560),\n    COL_VERTEX(1382, 1152, 2560),\n    COL_VERTEX(870, 1536, 3174),\n    COL_VERTEX(1024, 1536, 2611),\n    COL_VERTEX(870, 1536, 2611),\n    COL_VERTEX(-1381, 1280, 3174),\n    COL_VERTEX(-2149, 1152, 2560),\n    COL_VERTEX(-1023, 1536, 2560),\n    COL_VERTEX(3072, 640, -3276),\n    COL_VERTEX(3072, 640, 473),\n    COL_VERTEX(2560, 640, 3584),\n    COL_VERTEX(2560, 640, 2560),\n    COL_VERTEX(1307, 640, -3685),\n    COL_VERTEX(1307, 640, -3841),\n    COL_VERTEX(512, 512, -3685),\n    COL_VERTEX(2433, -306, -3276),\n    COL_VERTEX(3072, 0, -3276),\n    COL_VERTEX(1716, -306, -3276),\n    COL_VERTEX(-1306, -306, -3276),\n    COL_VERTEX(-1306, 0, -3276),\n    COL_VERTEX(2023, 0, -3276),\n    COL_VERTEX(1307, 0, -3276),\n    COL_VERTEX(-511, 486, -3276),\n    COL_VERTEX(3072, 0, -283),\n    COL_VERTEX(3072, -306, 3072),\n    COL_VERTEX(1102, 51, -3276),\n    COL_VERTEX(-511, 486, -3327),\n    COL_VERTEX(512, 486, -3327),\n    COL_VERTEX(-1101, 51, -3276),\n    COL_VERTEX(-191, -409, -1664),\n    COL_VERTEX(-2559, -409, -370),\n    COL_VERTEX(192, -409, -1664),\n    COL_VERTEX(2560, -409, -3954),\n    COL_VERTEX(128, 384, -1023),\n    COL_VERTEX(128, 640, -1023),\n    COL_VERTEX(128, 384, -255),\n    COL_VERTEX(192, 768, -2432),\n    COL_VERTEX(192, 768, -1023),\n    COL_VERTEX(-127, 640, -255),\n    COL_VERTEX(-127, 384, -255),\n    COL_VERTEX(-191, -409, -1855),\n    COL_VERTEX(384, -229, -255),\n    COL_VERTEX(384, 896, -255),\n    COL_VERTEX(-383, 896, -255),\n    COL_VERTEX(-383, -229, -255),\n    COL_VERTEX(-191, -664, -1664),\n    COL_VERTEX(192, -409, -2432),\n    COL_VERTEX(-383, 896, -2559),\n    COL_VERTEX(602, 4815, -1125),\n    COL_VERTEX(3113, 0, 2714),\n    COL_VERTEX(3072, 0, 2714),\n    COL_VERTEX(3072, 0, -3173),\n    COL_VERTEX(3113, 0, -220),\n    COL_VERTEX(-3071, 0, -3173),\n    COL_VERTEX(-3071, -306, -283),\n    COL_VERTEX(-3071, -306, 3072),\n    COL_VERTEX(-3112, 0, -3173),\n    COL_VERTEX(-3112, 0, -1819),\n    COL_VERTEX(-3112, 0, -283),\n    COL_VERTEX(-3112, 0, 1434),\n    COL_VERTEX(-3112, 0, 2970),\n    COL_VERTEX(-3112, 0, -4095),\n    COL_VERTEX(-3112, 0, -3378),\n    COL_VERTEX(896, 0, 2662),\n    COL_VERTEX(896, -306, 3072),\n    COL_VERTEX(855, 0, 3113),\n    COL_VERTEX(855, 0, 2662),\n    COL_VERTEX(2970, 0, 3113),\n    COL_VERTEX(-895, -306, 2586),\n    COL_VERTEX(-2969, 0, 3072),\n    COL_VERTEX(-854, 0, 3113),\n    COL_VERTEX(-854, 0, 2662),\n    COL_VERTEX(-2969, 0, 3113),\n    COL_VERTEX(-818, 0, 2586),\n    COL_VERTEX(-818, 0, 2627),\n    COL_VERTEX(819, 0, 2627),\n    COL_VERTEX(64, 896, -626),\n    COL_VERTEX(64, 1152, -754),\n    COL_VERTEX(-63, 1152, -626),\n    COL_VERTEX(-63, 896, -754),\n    COL_VERTEX(1178, 1280, 2099),\n    COL_VERTEX(-1689, 1280, 2099),\n    COL_VERTEX(-1689, 1280, -537),\n    COL_VERTEX(1165, 1229, 2560),\n    COL_VERTEX(-2201, 1152, 2560),\n    COL_VERTEX(-2201, 1152, -844),\n    COL_VERTEX(205, 1152, -844),\n    COL_VERTEX(205, 1152, -537),\n    COL_VERTEX(-2149, 1280, -793),\n    COL_VERTEX(3149, 1152, -3173),\n    COL_VERTEX(3149, 978, -3173),\n    COL_VERTEX(3149, 978, -3022),\n    COL_VERTEX(3174, 957, -3022),\n    COL_VERTEX(3149, 1029, -2585),\n    COL_VERTEX(2381, 1029, -2585),\n    COL_VERTEX(2355, 957, -3022),\n    COL_VERTEX(2381, 1152, -3022),\n    COL_VERTEX(2355, 1152, -3378),\n    COL_VERTEX(2381, 978, -3022),\n    COL_VERTEX(2970, 978, -3353),\n    COL_VERTEX(2970, 1152, -3353),\n    COL_VERTEX(1326, 1874, 2647),\n    COL_VERTEX(-1325, 1925, 3087),\n    COL_VERTEX(1326, 1925, 3087),\n    COL_VERTEX(1326, 1925, 2647),\n    COL_VERTEX(-2802, -132, -1561),\n    COL_VERTEX(-2546, -132, -1305),\n    COL_VERTEX(-2546, -81, -1305),\n    COL_VERTEX(-2546, -81, -1561),\n    COL_VERTEX(-1266, -81, -1305),\n    COL_VERTEX(-1266, -132, -1305),\n    COL_VERTEX(-1522, -132, -1561),\n    COL_VERTEX(-1266, -81, -1561),\n    COL_VERTEX(-754, -132, -537),\n    COL_VERTEX(-754, -81, -537),\n    COL_VERTEX(-1010, -132, -793),\n    COL_VERTEX(-754, -81, -793),\n    COL_VERTEX(-1522, -132, -25),\n    COL_VERTEX(-1266, -132, 230),\n    COL_VERTEX(-1266, -81, 230),\n    COL_VERTEX(-1266, -81, -25),\n    COL_VERTEX(-2802, -132, -25),\n    COL_VERTEX(-2546, -132, 230),\n    COL_VERTEX(-2546, -81, 230),\n    COL_VERTEX(-2546, -81, -25),\n    COL_VERTEX(-127, -132, 2253),\n    COL_VERTEX(128, -132, 2509),\n    COL_VERTEX(128, -81, 2509),\n    COL_VERTEX(128, -81, 2253),\n    COL_VERTEX(2061, -81, -1253),\n    COL_VERTEX(2061, -132, -1253),\n    COL_VERTEX(1805, -132, -1509),\n    COL_VERTEX(2061, -81, -1509),\n    COL_VERTEX(1933, -132, -2021),\n    COL_VERTEX(2189, -132, -1765),\n    COL_VERTEX(2189, -81, -1765),\n    COL_VERTEX(2189, -81, -2021),\n    COL_VERTEX(2445, -132, -2149),\n    COL_VERTEX(2701, -132, -1893),\n    COL_VERTEX(2701, -81, -1893),\n    COL_VERTEX(2701, -81, -2149),\n    COL_VERTEX(2829, -132, -2405),\n    COL_VERTEX(2829, -81, -2405),\n    COL_VERTEX(2573, -132, -2661),\n    COL_VERTEX(2829, -81, -2661),\n    COL_VERTEX(2573, -132, -3173),\n    COL_VERTEX(2829, -132, -2917),\n    COL_VERTEX(2829, -81, -2917),\n    COL_VERTEX(2829, -81, -3173),\n    COL_VERTEX(2560, -132, 2970),\n    COL_VERTEX(2560, -81, 2970),\n    COL_VERTEX(2304, -132, 2714),\n    COL_VERTEX(2560, -81, 2714),\n    COL_VERTEX(2970, -81, 2970),\n    COL_VERTEX(2970, -132, 2970),\n    COL_VERTEX(2714, -132, 2714),\n    COL_VERTEX(2970, -81, 2714),\n    COL_VERTEX(131, 1839, -716),\n    COL_VERTEX(387, 1839, -460),\n    COL_VERTEX(-384, 2812, -716),\n    COL_VERTEX(-128, 2812, -460),\n    COL_VERTEX(387, 3785, -460),\n    COL_VERTEX(131, 3913, -716),\n    COL_VERTEX(131, 3785, -716),\n    COL_VERTEX(1382, 1280, 3174),\n    COL_VERTEX(3174, 1280, 2970),\n    COL_VERTEX(643, 4687, -409),\n    COL_VERTEX(0, 1280, 3174),\n    COL_VERTEX(113, 4326, -716),\n    COL_VERTEX(512, 4429, -716),\n    COL_VERTEX(113, 4326, -869),\n    COL_VERTEX(-112, 4326, -869),\n    COL_VERTEX(-1535, 5222, 922),\n    COL_VERTEX(-1535, 5222, -716),\n    COL_VERTEX(-112, 4275, -869),\n    COL_VERTEX(205, 3200, 1126),\n    COL_VERTEX(1536, 3200, 1459),\n    COL_VERTEX(1536, 3200, -2612),\n    COL_VERTEX(-1945, 1920, -2612),\n    COL_VERTEX(1280, 1920, -2612),\n    COL_VERTEX(666, 1920, -1998),\n    COL_VERTEX(922, 2560, -1998),\n    COL_VERTEX(1946, 1920, -2612),\n    COL_VERTEX(3174, 3072, 2970),\n    COL_VERTEX(-2149, 1920, 3174),\n    COL_VERTEX(-2149, 2560, 3174),\n    COL_VERTEX(-1381, 1280, 2560),\n    COL_VERTEX(-1945, 1357, 2970),\n    COL_VERTEX(-1945, 1408, 2765),\n    COL_VERTEX(-1945, 1536, 2765),\n    COL_VERTEX(-1945, 1536, 2970),\n    COL_VERTEX(-1740, 1357, 3174),\n    COL_VERTEX(-1740, 1280, 2765),\n    COL_VERTEX(-2149, 1536, 2765),\n    COL_VERTEX(-1945, 1664, 3174),\n    COL_VERTEX(-2149, 1664, 2970),\n    COL_VERTEX(-869, 1485, 3174),\n    COL_VERTEX(-1023, 1536, 2611),\n    COL_VERTEX(-1023, 1485, 2611),\n    COL_VERTEX(-1023, 1485, 3174),\n    COL_VERTEX(-869, 1536, 3174),\n    COL_VERTEX(1024, 1485, 3174),\n    COL_VERTEX(1024, 1485, 2560),\n    COL_VERTEX(-818, 1536, 2560),\n    COL_VERTEX(1024, 1485, 2611),\n    COL_VERTEX(870, 1485, 2611),\n    COL_VERTEX(1024, 1536, 2560),\n    COL_VERTEX(-1023, 1485, 2560),\n    COL_VERTEX(-1381, 1152, 2560),\n    COL_VERTEX(1307, 640, -3276),\n    COL_VERTEX(3072, 640, -283),\n    COL_VERTEX(3584, 640, 2560),\n    COL_VERTEX(3072, 640, 2560),\n    COL_VERTEX(512, 640, -3685),\n    COL_VERTEX(512, 435, -3943),\n    COL_VERTEX(2433, 0, -3276),\n    COL_VERTEX(3072, -306, -3276),\n    COL_VERTEX(1716, 0, -3276),\n    COL_VERTEX(-1101, 0, -3276),\n    COL_VERTEX(-1101, -306, -3276),\n    COL_VERTEX(2023, -306, -3276),\n    COL_VERTEX(1307, -306, -3276),\n    COL_VERTEX(1102, -306, -3276),\n    COL_VERTEX(1102, 0, -3276),\n    COL_VERTEX(-1101, 51, -3327),\n    COL_VERTEX(3072, -306, -283),\n    COL_VERTEX(512, 486, -3276),\n    COL_VERTEX(1102, 51, -3327),\n    COL_VERTEX(-2559, -409, -3954),\n    COL_VERTEX(2560, -409, -370),\n    COL_VERTEX(192, -409, -1998),\n    COL_VERTEX(192, -664, -1664),\n    COL_VERTEX(-191, -409, -2432),\n    COL_VERTEX(-191, -409, -1998),\n    COL_VERTEX(-127, 384, -1023),\n    COL_VERTEX(-191, 768, -1023),\n    COL_VERTEX(192, 256, -1023),\n    COL_VERTEX(-127, 640, -1023),\n    COL_VERTEX(128, 640, -255),\n    COL_VERTEX(-191, 768, -2432),\n    COL_VERTEX(192, -409, -1855),\n    COL_VERTEX(-191, 256, -1023),\n    COL_VERTEX(384, -229, -2559),\n    COL_VERTEX(384, 896, -2559),\n    COL_VERTEX(-383, -229, -2559),\n    COL_TRI_INIT(SURFACE_DEFAULT, 1068),\n    COL_TRI(433, 434, 435),\n    COL_TRI(421, 422, 423),\n    COL_TRI(422, 424, 423),\n    COL_TRI(425, 426, 427),\n    COL_TRI(425, 427, 428),\n    COL_TRI(429, 430, 431),\n    COL_TRI(429, 431, 432),\n    COL_TRI(434, 436, 435),\n    COL_TRI(442, 445, 443),\n    COL_TRI(437, 438, 439),\n    COL_TRI(437, 439, 440),\n    COL_TRI(438, 437, 441),\n    COL_TRI(442, 443, 437),\n    COL_TRI(442, 437, 440),\n    COL_TRI(159, 440, 439),\n    COL_TRI(159, 439, 160),\n    COL_TRI(444, 439, 438),\n    COL_TRI(444, 438, 445),\n    COL_TRI(438, 441, 446),\n    COL_TRI(146, 444, 447),\n    COL_TRI(442, 444, 445),\n    COL_TRI(146, 447, 451),\n    COL_TRI(448, 445, 438),\n    COL_TRI(449, 442, 145),\n    COL_TRI(449, 452, 442),\n    COL_TRI(441, 437, 443),\n    COL_TRI(441, 443, 450),\n    COL_TRI(443, 445, 448),\n    COL_TRI(443, 448, 450),\n    COL_TRI(446, 441, 448),\n    COL_TRI(450, 448, 441),\n    COL_TRI(448, 438, 446),\n    COL_TRI(444, 160, 439),\n    COL_TRI(451, 447, 464),\n    COL_TRI(447, 452, 453),\n    COL_TRI(447, 453, 464),\n    COL_TRI(451, 464, 551),\n    COL_TRI(454, 452, 449),\n    COL_TRI(440, 159, 145),\n    COL_TRI(440, 145, 442),\n    COL_TRI(454, 453, 452),\n    COL_TRI(444, 146, 160),\n    COL_TRI(455, 456, 552),\n    COL_TRI(455, 553, 456),\n    COL_TRI(456, 164, 541),\n    COL_TRI(456, 541, 552),\n    COL_TRI(457, 552, 541),\n    COL_TRI(458, 454, 553),\n    COL_TRI(459, 460, 554),\n    COL_TRI(460, 555, 461),\n    COL_TRI(461, 556, 460),\n    COL_TRI(460, 155, 554),\n    COL_TRI(460, 556, 155),\n    COL_TRI(459, 462, 460),\n    COL_TRI(462, 534, 555),\n    COL_TRI(462, 463, 534),\n    COL_TRI(463, 453, 458),\n    COL_TRI(458, 453, 454),\n    COL_TRI(463, 464, 453),\n    COL_TRI(466, 566, 564),\n    COL_TRI(464, 463, 459),\n    COL_TRI(464, 459, 551),\n    COL_TRI(0, 561, 5),\n    COL_TRI(0, 562, 561),\n    COL_TRI(465, 563, 5),\n    COL_TRI(466, 564, 565),\n    COL_TRI(470, 577, 578),\n    COL_TRI(467, 568, 569),\n    COL_TRI(467, 570, 568),\n    COL_TRI(468, 571, 572),\n    COL_TRI(468, 573, 571),\n    COL_TRI(469, 574, 575),\n    COL_TRI(469, 575, 576),\n    COL_TRI(473, 587, 588),\n    COL_TRI(470, 579, 577),\n    COL_TRI(471, 580, 581),\n    COL_TRI(471, 582, 580),\n    COL_TRI(472, 583, 584),\n    COL_TRI(472, 584, 585),\n    COL_TRI(473, 586, 587),\n    COL_TRI(474, 590, 589),\n    COL_TRI(474, 589, 587),\n    COL_TRI(474, 587, 586),\n    COL_TRI(404, 588, 587),\n    COL_TRI(404, 587, 589),\n    COL_TRI(405, 590, 588),\n    COL_TRI(405, 588, 354),\n    COL_TRI(404, 354, 588),\n    COL_TRI(474, 591, 590),\n    COL_TRI(473, 588, 590),\n    COL_TRI(473, 590, 591),\n    COL_TRI(404, 589, 355),\n    COL_TRI(355, 589, 590),\n    COL_TRI(355, 590, 405),\n    COL_TRI(475, 402, 401),\n    COL_TRI(475, 401, 477),\n    COL_TRI(476, 402, 475),\n    COL_TRI(479, 480, 594),\n    COL_TRI(477, 401, 403),\n    COL_TRI(477, 403, 592),\n    COL_TRI(476, 406, 402),\n    COL_TRI(403, 406, 476),\n    COL_TRI(403, 476, 592),\n    COL_TRI(478, 593, 479),\n    COL_TRI(478, 479, 483),\n    COL_TRI(479, 593, 480),\n    COL_TRI(483, 408, 407),\n    COL_TRI(480, 595, 598),\n    COL_TRI(480, 596, 491),\n    COL_TRI(481, 594, 480),\n    COL_TRI(480, 597, 481),\n    COL_TRI(480, 598, 596),\n    COL_TRI(480, 491, 597),\n    COL_TRI(482, 599, 600),\n    COL_TRI(482, 600, 601),\n    COL_TRI(483, 602, 486),\n    COL_TRI(483, 407, 410),\n    COL_TRI(483, 410, 484),\n    COL_TRI(483, 479, 408),\n    COL_TRI(483, 484, 602),\n    COL_TRI(484, 410, 409),\n    COL_TRI(484, 409, 603),\n    COL_TRI(408, 479, 603),\n    COL_TRI(408, 603, 409),\n    COL_TRI(485, 603, 479),\n    COL_TRI(486, 602, 489),\n    COL_TRI(487, 486, 489),\n    COL_TRI(487, 485, 486),\n    COL_TRI(487, 606, 485),\n    COL_TRI(485, 606, 603),\n    COL_TRI(487, 607, 606),\n    COL_TRI(488, 608, 609),\n    COL_TRI(489, 488, 609),\n    COL_TRI(487, 489, 609),\n    COL_TRI(481, 490, 594),\n    COL_TRI(490, 481, 610),\n    COL_TRI(481, 499, 610),\n    COL_TRI(490, 610, 611),\n    COL_TRI(491, 604, 597),\n    COL_TRI(481, 597, 499),\n    COL_TRI(491, 605, 604),\n    COL_TRI(492, 494, 612),\n    COL_TRI(492, 613, 494),\n    COL_TRI(492, 614, 496),\n    COL_TRI(496, 614, 612),\n    COL_TRI(494, 495, 612),\n    COL_TRI(494, 611, 495),\n    COL_TRI(495, 615, 612),\n    COL_TRI(496, 612, 615),\n    COL_TRI(495, 501, 615),\n    COL_TRI(495, 610, 497),\n    COL_TRI(495, 611, 610),\n    COL_TRI(497, 610, 499),\n    COL_TRI(498, 617, 497),\n    COL_TRI(498, 497, 499),\n    COL_TRI(499, 616, 498),\n    COL_TRI(500, 618, 615),\n    COL_TRI(500, 502, 618),\n    COL_TRI(501, 500, 615),\n    COL_TRI(502, 503, 618),\n    COL_TRI(503, 615, 618),\n    COL_TRI(503, 496, 615),\n    COL_TRI(502, 504, 503),\n    COL_TRI(504, 496, 503),\n    COL_TRI(493, 492, 496),\n    COL_TRI(505, 493, 496),\n    COL_TRI(504, 505, 496),\n    COL_TRI(512, 388, 620),\n    COL_TRI(506, 507, 508),\n    COL_TRI(507, 619, 388),\n    COL_TRI(507, 506, 619),\n    COL_TRI(388, 534, 507),\n    COL_TRI(508, 507, 534),\n    COL_TRI(509, 388, 619),\n    COL_TRI(509, 620, 388),\n    COL_TRI(506, 508, 511),\n    COL_TRI(510, 620, 508),\n    COL_TRI(511, 508, 620),\n    COL_TRI(510, 508, 621),\n    COL_TRI(508, 534, 621),\n    COL_TRI(511, 620, 509),\n    COL_TRI(512, 620, 510),\n    COL_TRI(515, 623, 516),\n    COL_TRI(513, 515, 622),\n    COL_TRI(513, 623, 515),\n    COL_TRI(514, 513, 622),\n    COL_TRI(513, 522, 624),\n    COL_TRI(513, 514, 522),\n    COL_TRI(515, 518, 622),\n    COL_TRI(515, 530, 518),\n    COL_TRI(516, 623, 520),\n    COL_TRI(521, 629, 520),\n    COL_TRI(517, 519, 518),\n    COL_TRI(518, 625, 517),\n    COL_TRI(518, 626, 625),\n    COL_TRI(518, 627, 626),\n    COL_TRI(519, 622, 518),\n    COL_TRI(520, 513, 632),\n    COL_TRI(520, 623, 513),\n    COL_TRI(521, 520, 632),\n    COL_TRI(514, 519, 635),\n    COL_TRI(522, 628, 521),\n    COL_TRI(522, 521, 624),\n    COL_TRI(523, 557, 629),\n    COL_TRI(523, 629, 535),\n    COL_TRI(520, 629, 557),\n    COL_TRI(514, 622, 519),\n    COL_TRI(517, 633, 636),\n    COL_TRI(517, 634, 633),\n    COL_TRI(524, 526, 527),\n    COL_TRI(525, 526, 524),\n    COL_TRI(526, 567, 527),\n    COL_TRI(526, 637, 567),\n    COL_TRI(527, 567, 638),\n    COL_TRI(465, 567, 563),\n    COL_TRI(516, 520, 631),\n    COL_TRI(524, 527, 639),\n    COL_TRI(527, 638, 639),\n    COL_TRI(525, 515, 630),\n    COL_TRI(525, 530, 515),\n    COL_TRI(515, 516, 630),\n    COL_TRI(528, 516, 436),\n    COL_TRI(528, 529, 516),\n    COL_TRI(529, 641, 516),\n    COL_TRI(525, 524, 640),\n    COL_TRI(426, 525, 640),\n    COL_TRI(530, 525, 532),\n    COL_TRI(530, 532, 644),\n    COL_TRI(520, 557, 631),\n    COL_TRI(457, 557, 523),\n    COL_TRI(457, 536, 557),\n    COL_TRI(531, 557, 536),\n    COL_TRI(535, 463, 458),\n    COL_TRI(532, 510, 644),\n    COL_TRI(532, 512, 510),\n    COL_TRI(533, 512, 421),\n    COL_TRI(534, 512, 558),\n    COL_TRI(388, 512, 534),\n    COL_TRI(535, 621, 463),\n    COL_TRI(537, 649, 423),\n    COL_TRI(534, 558, 555),\n    COL_TRI(533, 421, 647),\n    COL_TRI(457, 541, 536),\n    COL_TRI(536, 645, 531),\n    COL_TRI(536, 541, 645),\n    COL_TRI(537, 423, 648),\n    COL_TRI(537, 648, 155),\n    COL_TRI(538, 531, 645),\n    COL_TRI(538, 429, 531),\n    COL_TRI(531, 432, 557),\n    COL_TRI(539, 650, 651),\n    COL_TRI(539, 651, 427),\n    COL_TRI(540, 651, 650),\n    COL_TRI(541, 538, 645),\n    COL_TRI(541, 164, 538),\n    COL_TRI(426, 640, 646),\n    COL_TRI(434, 163, 546),\n    COL_TRI(434, 546, 528),\n    COL_TRI(540, 656, 544),\n    COL_TRI(528, 546, 642),\n    COL_TRI(528, 642, 529),\n    COL_TRI(529, 643, 641),\n    COL_TRI(542, 529, 642),\n    COL_TRI(542, 643, 529),\n    COL_TRI(540, 543, 653),\n    COL_TRI(543, 650, 654),\n    COL_TRI(543, 540, 650),\n    COL_TRI(544, 655, 540),\n    COL_TRI(540, 653, 656),\n    COL_TRI(545, 544, 3),\n    COL_TRI(545, 655, 544),\n    COL_TRI(545, 540, 655),\n    COL_TRI(546, 161, 642),\n    COL_TRI(161, 542, 642),\n    COL_TRI(161, 657, 542),\n    COL_TRI(461, 559, 556),\n    COL_TRI(461, 560, 559),\n    COL_TRI(537, 556, 559),\n    COL_TRI(537, 155, 556),\n    COL_TRI(537, 559, 658),\n    COL_TRI(540, 652, 651),\n    COL_TRI(546, 163, 161),\n    COL_TRI(545, 652, 540),\n    COL_TRI(550, 665, 666),\n    COL_TRI(547, 6, 659),\n    COL_TRI(547, 657, 6),\n    COL_TRI(548, 660, 162),\n    COL_TRI(548, 661, 660),\n    COL_TRI(549, 662, 663),\n    COL_TRI(549, 663, 664),\n    COL_TRI(550, 667, 665),\n    COL_TRI(266, 269, 170),\n    COL_TRI(668, 168, 165),\n    COL_TRI(668, 266, 168),\n    COL_TRI(668, 165, 167),\n    COL_TRI(668, 167, 669),\n    COL_TRI(167, 166, 670),\n    COL_TRI(167, 670, 669),\n    COL_TRI(166, 169, 671),\n    COL_TRI(166, 671, 670),\n    COL_TRI(672, 173, 176),\n    COL_TRI(266, 170, 168),\n    COL_TRI(169, 171, 883),\n    COL_TRI(169, 883, 671),\n    COL_TRI(269, 267, 172),\n    COL_TRI(269, 172, 170),\n    COL_TRI(672, 673, 173),\n    COL_TRI(673, 174, 173),\n    COL_TRI(176, 884, 672),\n    COL_TRI(176, 175, 884),\n    COL_TRI(673, 885, 174),\n    COL_TRI(174, 885, 884),\n    COL_TRI(174, 884, 175),\n    COL_TRI(191, 886, 674),\n    COL_TRI(674, 190, 189),\n    COL_TRI(674, 887, 190),\n    COL_TRI(191, 674, 189),\n    COL_TRI(678, 157, 889),\n    COL_TRI(675, 177, 190),\n    COL_TRI(675, 190, 887),\n    COL_TRI(157, 676, 178),\n    COL_TRI(676, 888, 192),\n    COL_TRI(676, 192, 178),\n    COL_TRI(157, 178, 179),\n    COL_TRI(677, 157, 179),\n    COL_TRI(156, 157, 163),\n    COL_TRI(679, 180, 181),\n    COL_TRI(677, 179, 180),\n    COL_TRI(194, 193, 891),\n    COL_TRI(194, 891, 892),\n    COL_TRI(195, 194, 892),\n    COL_TRI(195, 892, 893),\n    COL_TRI(196, 195, 893),\n    COL_TRI(196, 893, 894),\n    COL_TRI(679, 677, 180),\n    COL_TRI(199, 896, 897),\n    COL_TRI(197, 196, 894),\n    COL_TRI(197, 894, 895),\n    COL_TRI(680, 162, 200),\n    COL_TRI(680, 200, 182),\n    COL_TRI(548, 162, 158),\n    COL_TRI(199, 198, 896),\n    COL_TRI(204, 201, 900),\n    COL_TRI(681, 144, 184),\n    COL_TRI(144, 898, 202),\n    COL_TRI(144, 202, 184),\n    COL_TRI(144, 859, 899),\n    COL_TRI(144, 154, 859),\n    COL_TRI(682, 153, 144),\n    COL_TRI(682, 144, 899),\n    COL_TRI(681, 184, 183),\n    COL_TRI(684, 149, 152),\n    COL_TRI(201, 203, 901),\n    COL_TRI(201, 901, 900),\n    COL_TRI(204, 900, 902),\n    COL_TRI(683, 149, 186),\n    COL_TRI(683, 186, 185),\n    COL_TRI(149, 208, 186),\n    COL_TRI(149, 904, 208),\n    COL_TRI(684, 156, 149),\n    COL_TRI(206, 905, 906),\n    COL_TRI(206, 205, 905),\n    COL_TRI(205, 907, 905),\n    COL_TRI(205, 207, 907),\n    COL_TRI(685, 209, 187),\n    COL_TRI(685, 908, 209),\n    COL_TRI(211, 210, 909),\n    COL_TRI(211, 909, 910),\n    COL_TRI(686, 687, 911),\n    COL_TRI(686, 912, 687),\n    COL_TRI(687, 913, 688),\n    COL_TRI(687, 688, 911),\n    COL_TRI(688, 913, 689),\n    COL_TRI(688, 689, 914),\n    COL_TRI(689, 912, 686),\n    COL_TRI(689, 686, 914),\n    COL_TRI(690, 915, 916),\n    COL_TRI(690, 916, 699),\n    COL_TRI(226, 692, 690),\n    COL_TRI(690, 692, 691),\n    COL_TRI(692, 693, 691),\n    COL_TRI(692, 918, 693),\n    COL_TRI(693, 695, 691),\n    COL_TRI(693, 694, 695),\n    COL_TRI(694, 919, 697),\n    COL_TRI(694, 697, 695),\n    COL_TRI(691, 695, 915),\n    COL_TRI(691, 915, 690),\n    COL_TRI(695, 916, 915),\n    COL_TRI(695, 697, 916),\n    COL_TRI(696, 916, 697),\n    COL_TRI(697, 920, 696),\n    COL_TRI(697, 919, 920),\n    COL_TRI(698, 920, 919),\n    COL_TRI(698, 919, 702),\n    COL_TRI(226, 690, 699),\n    COL_TRI(226, 699, 700),\n    COL_TRI(226, 700, 228),\n    COL_TRI(704, 922, 921),\n    COL_TRI(699, 916, 917),\n    COL_TRI(699, 917, 700),\n    COL_TRI(696, 917, 916),\n    COL_TRI(696, 920, 921),\n    COL_TRI(696, 921, 922),\n    COL_TRI(696, 922, 704),\n    COL_TRI(696, 704, 917),\n    COL_TRI(700, 917, 704),\n    COL_TRI(240, 700, 703),\n    COL_TRI(240, 228, 700),\n    COL_TRI(704, 921, 705),\n    COL_TRI(701, 923, 238),\n    COL_TRI(701, 238, 239),\n    COL_TRI(238, 923, 814),\n    COL_TRI(238, 814, 236),\n    COL_TRI(702, 814, 923),\n    COL_TRI(702, 923, 698),\n    COL_TRI(698, 921, 920),\n    COL_TRI(698, 705, 921),\n    COL_TRI(700, 704, 703),\n    COL_TRI(703, 704, 705),\n    COL_TRI(706, 530, 707),\n    COL_TRI(703, 705, 701),\n    COL_TRI(705, 923, 701),\n    COL_TRI(240, 703, 701),\n    COL_TRI(240, 701, 239),\n    COL_TRI(705, 698, 923),\n    COL_TRI(706, 708, 530),\n    COL_TRI(707, 924, 925),\n    COL_TRI(707, 925, 926),\n    COL_TRI(394, 530, 927),\n    COL_TRI(394, 927, 22),\n    COL_TRI(708, 23, 927),\n    COL_TRI(706, 709, 708),\n    COL_TRI(708, 709, 23),\n    COL_TRI(709, 21, 23),\n    COL_TRI(716, 929, 711),\n    COL_TRI(706, 928, 709),\n    COL_TRI(709, 928, 929),\n    COL_TRI(709, 929, 715),\n    COL_TRI(710, 706, 926),\n    COL_TRI(710, 928, 706),\n    COL_TRI(711, 928, 710),\n    COL_TRI(711, 929, 928),\n    COL_TRI(21, 715, 712),\n    COL_TRI(21, 712, 930),\n    COL_TRI(712, 716, 931),\n    COL_TRI(712, 931, 714),\n    COL_TRI(715, 929, 716),\n    COL_TRI(20, 932, 396),\n    COL_TRI(713, 931, 933),\n    COL_TRI(713, 313, 931),\n    COL_TRI(714, 19, 930),\n    COL_TRI(714, 932, 19),\n    COL_TRI(715, 716, 712),\n    COL_TRI(20, 19, 932),\n    COL_TRI(717, 710, 925),\n    COL_TRI(709, 715, 21),\n    COL_TRI(313, 713, 934),\n    COL_TRI(716, 711, 933),\n    COL_TRI(313, 934, 935),\n    COL_TRI(717, 713, 711),\n    COL_TRI(717, 711, 710),\n    COL_TRI(717, 934, 713),\n    COL_TRI(718, 719, 936),\n    COL_TRI(719, 718, 937),\n    COL_TRI(719, 937, 720),\n    COL_TRI(720, 936, 719),\n    COL_TRI(720, 937, 938),\n    COL_TRI(721, 937, 718),\n    COL_TRI(722, 938, 937),\n    COL_TRI(722, 937, 721),\n    COL_TRI(720, 938, 724),\n    COL_TRI(720, 724, 936),\n    COL_TRI(718, 936, 939),\n    COL_TRI(723, 718, 939),\n    COL_TRI(721, 718, 723),\n    COL_TRI(724, 938, 939),\n    COL_TRI(724, 939, 936),\n    COL_TRI(725, 939, 938),\n    COL_TRI(725, 938, 722),\n    COL_TRI(723, 939, 725),\n    COL_TRI(27, 24, 723),\n    COL_TRI(27, 723, 725),\n    COL_TRI(27, 725, 722),\n    COL_TRI(722, 721, 26),\n    COL_TRI(26, 721, 723),\n    COL_TRI(726, 942, 729),\n    COL_TRI(27, 722, 25),\n    COL_TRI(722, 26, 25),\n    COL_TRI(26, 723, 24),\n    COL_TRI(726, 727, 940),\n    COL_TRI(726, 729, 727),\n    COL_TRI(726, 941, 942),\n    COL_TRI(730, 733, 731),\n    COL_TRI(727, 943, 728),\n    COL_TRI(727, 728, 940),\n    COL_TRI(728, 943, 942),\n    COL_TRI(728, 942, 941),\n    COL_TRI(729, 942, 943),\n    COL_TRI(729, 943, 727),\n    COL_TRI(730, 944, 733),\n    COL_TRI(730, 945, 944),\n    COL_TRI(734, 949, 737),\n    COL_TRI(731, 947, 732),\n    COL_TRI(731, 732, 946),\n    COL_TRI(730, 731, 946),\n    COL_TRI(732, 944, 945),\n    COL_TRI(732, 947, 944),\n    COL_TRI(733, 944, 947),\n    COL_TRI(733, 947, 731),\n    COL_TRI(734, 948, 949),\n    COL_TRI(738, 741, 739),\n    COL_TRI(734, 737, 735),\n    COL_TRI(735, 736, 950),\n    COL_TRI(734, 735, 950),\n    COL_TRI(735, 951, 736),\n    COL_TRI(736, 949, 948),\n    COL_TRI(736, 951, 949),\n    COL_TRI(737, 949, 951),\n    COL_TRI(737, 951, 735),\n    COL_TRI(738, 739, 952),\n    COL_TRI(738, 953, 954),\n    COL_TRI(738, 954, 741),\n    COL_TRI(739, 955, 740),\n    COL_TRI(739, 740, 952),\n    COL_TRI(740, 955, 954),\n    COL_TRI(740, 954, 953),\n    COL_TRI(741, 954, 955),\n    COL_TRI(744, 958, 957),\n    COL_TRI(741, 955, 739),\n    COL_TRI(742, 745, 743),\n    COL_TRI(742, 743, 956),\n    COL_TRI(742, 957, 958),\n    COL_TRI(742, 958, 745),\n    COL_TRI(743, 959, 744),\n    COL_TRI(743, 744, 956),\n    COL_TRI(744, 959, 958),\n    COL_TRI(748, 963, 962),\n    COL_TRI(745, 958, 959),\n    COL_TRI(745, 959, 743),\n    COL_TRI(746, 749, 747),\n    COL_TRI(746, 747, 960),\n    COL_TRI(746, 961, 962),\n    COL_TRI(746, 962, 749),\n    COL_TRI(747, 963, 748),\n    COL_TRI(747, 748, 960),\n    COL_TRI(751, 752, 966),\n    COL_TRI(749, 962, 963),\n    COL_TRI(748, 962, 961),\n    COL_TRI(749, 963, 747),\n    COL_TRI(750, 964, 753),\n    COL_TRI(750, 965, 964),\n    COL_TRI(750, 751, 966),\n    COL_TRI(750, 753, 751),\n    COL_TRI(751, 967, 752),\n    COL_TRI(752, 964, 965),\n    COL_TRI(752, 967, 964),\n    COL_TRI(753, 964, 967),\n    COL_TRI(753, 967, 751),\n    COL_TRI(754, 757, 755),\n    COL_TRI(754, 755, 968),\n    COL_TRI(754, 969, 970),\n    COL_TRI(754, 970, 757),\n    COL_TRI(755, 971, 756),\n    COL_TRI(755, 756, 968),\n    COL_TRI(756, 971, 970),\n    COL_TRI(756, 970, 969),\n    COL_TRI(757, 970, 971),\n    COL_TRI(757, 971, 755),\n    COL_TRI(758, 761, 759),\n    COL_TRI(758, 759, 972),\n    COL_TRI(758, 973, 974),\n    COL_TRI(758, 974, 761),\n    COL_TRI(759, 975, 760),\n    COL_TRI(759, 760, 972),\n    COL_TRI(760, 975, 974),\n    COL_TRI(760, 974, 973),\n    COL_TRI(761, 974, 975),\n    COL_TRI(761, 975, 759),\n    COL_TRI(762, 976, 977),\n    COL_TRI(762, 977, 765),\n    COL_TRI(762, 765, 763),\n    COL_TRI(762, 763, 978),\n    COL_TRI(763, 764, 978),\n    COL_TRI(763, 979, 764),\n    COL_TRI(764, 979, 977),\n    COL_TRI(764, 977, 976),\n    COL_TRI(765, 977, 979),\n    COL_TRI(765, 979, 763),\n    COL_TRI(766, 769, 767),\n    COL_TRI(766, 767, 980),\n    COL_TRI(766, 981, 982),\n    COL_TRI(766, 982, 769),\n    COL_TRI(767, 983, 768),\n    COL_TRI(767, 768, 980),\n    COL_TRI(768, 983, 982),\n    COL_TRI(768, 982, 981),\n    COL_TRI(769, 982, 983),\n    COL_TRI(769, 983, 767),\n    COL_TRI(770, 984, 985),\n    COL_TRI(770, 985, 773),\n    COL_TRI(770, 773, 771),\n    COL_TRI(770, 771, 986),\n    COL_TRI(771, 987, 772),\n    COL_TRI(771, 772, 986),\n    COL_TRI(772, 985, 984),\n    COL_TRI(772, 987, 985),\n    COL_TRI(773, 985, 987),\n    COL_TRI(773, 987, 771),\n    COL_TRI(774, 988, 777),\n    COL_TRI(774, 989, 988),\n    COL_TRI(774, 777, 775),\n    COL_TRI(774, 775, 990),\n    COL_TRI(775, 991, 776),\n    COL_TRI(775, 776, 990),\n    COL_TRI(682, 903, 152),\n    COL_TRI(776, 991, 988),\n    COL_TRI(776, 988, 989),\n    COL_TRI(777, 988, 991),\n    COL_TRI(777, 991, 775),\n    COL_TRI(684, 890, 156),\n    COL_TRI(684, 152, 903),\n    COL_TRI(581, 577, 579),\n    COL_TRI(682, 152, 153),\n    COL_TRI(578, 574, 470),\n    COL_TRI(578, 575, 574),\n    COL_TRI(576, 573, 469),\n    COL_TRI(576, 571, 573),\n    COL_TRI(581, 579, 471),\n    COL_TRI(565, 562, 466),\n    COL_TRI(585, 582, 472),\n    COL_TRI(585, 580, 582),\n    COL_TRI(572, 570, 468),\n    COL_TRI(572, 568, 570),\n    COL_TRI(569, 564, 566),\n    COL_TRI(569, 566, 467),\n    COL_TRI(779, 783, 778),\n    COL_TRI(565, 561, 562),\n    COL_TRI(778, 782, 992),\n    COL_TRI(778, 783, 782),\n    COL_TRI(779, 780, 783),\n    COL_TRI(780, 779, 781),\n    COL_TRI(780, 781, 993),\n    COL_TRI(781, 779, 778),\n    COL_TRI(782, 781, 992),\n    COL_TRI(782, 993, 781),\n    COL_TRI(781, 778, 992),\n    COL_TRI(786, 785, 789),\n    COL_TRI(783, 993, 782),\n    COL_TRI(783, 780, 993),\n    COL_TRI(784, 788, 994),\n    COL_TRI(784, 789, 788),\n    COL_TRI(785, 787, 995),\n    COL_TRI(785, 786, 787),\n    COL_TRI(790, 791, 793),\n    COL_TRI(787, 786, 784),\n    COL_TRI(788, 787, 994),\n    COL_TRI(788, 995, 787),\n    COL_TRI(787, 784, 994),\n    COL_TRI(786, 789, 784),\n    COL_TRI(789, 995, 788),\n    COL_TRI(789, 785, 995),\n    COL_TRI(790, 793, 996),\n    COL_TRI(795, 498, 619),\n    COL_TRI(792, 793, 998),\n    COL_TRI(792, 996, 793),\n    COL_TRI(793, 997, 998),\n    COL_TRI(793, 791, 997),\n    COL_TRI(791, 790, 794),\n    COL_TRI(791, 794, 997),\n    COL_TRI(794, 996, 792),\n    COL_TRI(794, 790, 996),\n    COL_TRI(269, 266, 797),\n    COL_TRI(795, 617, 498),\n    COL_TRI(619, 498, 616),\n    COL_TRI(619, 616, 1000),\n    COL_TRI(497, 617, 795),\n    COL_TRI(796, 619, 1000),\n    COL_TRI(269, 797, 1001),\n    COL_TRI(280, 292, 270),\n    COL_TRI(797, 268, 798),\n    COL_TRI(797, 266, 268),\n    COL_TRI(798, 1001, 797),\n    COL_TRI(798, 799, 1001),\n    COL_TRI(799, 269, 1001),\n    COL_TRI(799, 267, 269),\n    COL_TRI(292, 273, 270),\n    COL_TRI(292, 291, 273),\n    COL_TRI(282, 290, 280),\n    COL_TRI(270, 272, 1003),\n    COL_TRI(270, 1003, 488),\n    COL_TRI(488, 280, 270),\n    COL_TRI(291, 290, 282),\n    COL_TRI(291, 282, 273),\n    COL_TRI(272, 271, 277),\n    COL_TRI(277, 1003, 272),\n    COL_TRI(271, 274, 277),\n    COL_TRI(277, 801, 1003),\n    COL_TRI(277, 276, 801),\n    COL_TRI(287, 275, 274),\n    COL_TRI(287, 274, 271),\n    COL_TRI(608, 488, 1003),\n    COL_TRI(800, 608, 1003),\n    COL_TRI(800, 609, 608),\n    COL_TRI(489, 1004, 488),\n    COL_TRI(801, 1005, 1003),\n    COL_TRI(800, 1003, 1005),\n    COL_TRI(282, 280, 1004),\n    COL_TRI(278, 607, 801),\n    COL_TRI(278, 801, 276),\n    COL_TRI(288, 275, 287),\n    COL_TRI(288, 279, 275),\n    COL_TRI(482, 294, 599),\n    COL_TRI(482, 295, 294),\n    COL_TRI(288, 278, 279),\n    COL_TRI(477, 284, 475),\n    COL_TRI(489, 296, 1004),\n    COL_TRI(489, 602, 296),\n    COL_TRI(296, 602, 477),\n    COL_TRI(296, 592, 297),\n    COL_TRI(296, 477, 592),\n    COL_TRI(284, 603, 283),\n    COL_TRI(284, 484, 603),\n    COL_TRI(602, 484, 284),\n    COL_TRI(284, 299, 475),\n    COL_TRI(477, 602, 284),\n    COL_TRI(289, 606, 600),\n    COL_TRI(606, 1007, 603),\n    COL_TRI(476, 301, 283),\n    COL_TRI(476, 283, 1007),\n    COL_TRI(278, 600, 607),\n    COL_TRI(600, 281, 601),\n    COL_TRI(600, 293, 281),\n    COL_TRI(802, 607, 487),\n    COL_TRI(802, 801, 607),\n    COL_TRI(288, 289, 278),\n    COL_TRI(289, 304, 606),\n    COL_TRI(476, 475, 299),\n    COL_TRI(592, 302, 297),\n    COL_TRI(802, 609, 800),\n    COL_TRI(303, 592, 1008),\n    COL_TRI(476, 299, 301),\n    COL_TRI(606, 1008, 1007),\n    COL_TRI(303, 302, 592),\n    COL_TRI(303, 1008, 304),\n    COL_TRI(803, 802, 800),\n    COL_TRI(593, 1010, 807),\n    COL_TRI(802, 487, 609),\n    COL_TRI(803, 1009, 802),\n    COL_TRI(802, 1006, 801),\n    COL_TRI(802, 1009, 1006),\n    COL_TRI(801, 1006, 1005),\n    COL_TRI(800, 1005, 803),\n    COL_TRI(593, 805, 1010),\n    COL_TRI(480, 593, 807),\n    COL_TRI(598, 1010, 805),\n    COL_TRI(804, 1011, 478),\n    COL_TRI(804, 1012, 1011),\n    COL_TRI(593, 1011, 805),\n    COL_TRI(593, 478, 1011),\n    COL_TRI(478, 483, 804),\n    COL_TRI(805, 491, 596),\n    COL_TRI(805, 1011, 491),\n    COL_TRI(598, 805, 596),\n    COL_TRI(806, 605, 491),\n    COL_TRI(806, 491, 1011),\n    COL_TRI(807, 598, 595),\n    COL_TRI(807, 1010, 598),\n    COL_TRI(480, 807, 595),\n    COL_TRI(626, 806, 1012),\n    COL_TRI(604, 605, 626),\n    COL_TRI(483, 486, 804),\n    COL_TRI(626, 1012, 625),\n    COL_TRI(808, 517, 625),\n    COL_TRI(808, 1014, 517),\n    COL_TRI(809, 817, 519),\n    COL_TRI(809, 519, 636),\n    COL_TRI(519, 1015, 635),\n    COL_TRI(519, 817, 1015),\n    COL_TRI(810, 636, 633),\n    COL_TRI(486, 1013, 1017),\n    COL_TRI(486, 485, 1013),\n    COL_TRI(613, 493, 1013),\n    COL_TRI(613, 492, 493),\n    COL_TRI(613, 479, 816),\n    COL_TRI(613, 485, 479),\n    COL_TRI(811, 634, 517),\n    COL_TRI(811, 517, 812),\n    COL_TRI(813, 627, 644),\n    COL_TRI(811, 633, 634),\n    COL_TRI(811, 1016, 633),\n    COL_TRI(810, 633, 1016),\n    COL_TRI(812, 810, 1016),\n    COL_TRI(812, 1016, 811),\n    COL_TRI(813, 604, 627),\n    COL_TRI(604, 626, 627),\n    COL_TRI(627, 518, 644),\n    COL_TRI(518, 530, 644),\n    COL_TRI(644, 1018, 813),\n    COL_TRI(644, 385, 1018),\n    COL_TRI(495, 1019, 501),\n    COL_TRI(495, 1020, 1019),\n    COL_TRI(814, 1019, 815),\n    COL_TRI(814, 820, 1019),\n    COL_TRI(501, 1019, 819),\n    COL_TRI(817, 493, 818),\n    COL_TRI(501, 819, 500),\n    COL_TRI(815, 1020, 497),\n    COL_TRI(816, 490, 611),\n    COL_TRI(816, 594, 490),\n    COL_TRI(819, 493, 500),\n    COL_TRI(818, 635, 1015),\n    COL_TRI(818, 514, 635),\n    COL_TRI(819, 818, 493),\n    COL_TRI(522, 818, 819),\n    COL_TRI(522, 514, 818),\n    COL_TRI(817, 818, 1015),\n    COL_TRI(505, 502, 500),\n    COL_TRI(505, 504, 502),\n    COL_TRI(821, 1024, 1025),\n    COL_TRI(820, 522, 819),\n    COL_TRI(820, 628, 522),\n    COL_TRI(521, 628, 841),\n    COL_TRI(821, 822, 827),\n    COL_TRI(821, 1022, 822),\n    COL_TRI(821, 1023, 1024),\n    COL_TRI(826, 1028, 1024),\n    COL_TRI(822, 825, 823),\n    COL_TRI(822, 1026, 825),\n    COL_TRI(823, 827, 822),\n    COL_TRI(824, 1026, 822),\n    COL_TRI(824, 822, 1022),\n    COL_TRI(824, 1022, 1025),\n    COL_TRI(825, 1027, 823),\n    COL_TRI(826, 823, 1027),\n    COL_TRI(826, 1023, 823),\n    COL_TRI(826, 1024, 1023),\n    COL_TRI(827, 1023, 821),\n    COL_TRI(827, 823, 1023),\n    COL_TRI(828, 1024, 1028),\n    COL_TRI(828, 1025, 1024),\n    COL_TRI(824, 1025, 829),\n    COL_TRI(829, 1025, 828),\n    COL_TRI(824, 829, 1029),\n    COL_TRI(829, 828, 1030),\n    COL_TRI(830, 829, 1030),\n    COL_TRI(830, 1029, 829),\n    COL_TRI(506, 999, 795),\n    COL_TRI(831, 832, 1031),\n    COL_TRI(832, 1032, 1033),\n    COL_TRI(832, 831, 1032),\n    COL_TRI(831, 842, 1032),\n    COL_TRI(832, 1033, 1034),\n    COL_TRI(831, 1031, 1035),\n    COL_TRI(833, 506, 511),\n    COL_TRI(833, 999, 506),\n    COL_TRI(833, 511, 509),\n    COL_TRI(796, 509, 619),\n    COL_TRI(506, 795, 619),\n    COL_TRI(833, 1036, 999),\n    COL_TRI(834, 1036, 1039),\n    COL_TRI(834, 1039, 1040),\n    COL_TRI(833, 1037, 1036),\n    COL_TRI(835, 833, 836),\n    COL_TRI(835, 1037, 833),\n    COL_TRI(836, 833, 796),\n    COL_TRI(833, 509, 796),\n    COL_TRI(835, 212, 837),\n    COL_TRI(835, 1041, 1037),\n    COL_TRI(837, 1040, 839),\n    COL_TRI(837, 834, 1040),\n    COL_TRI(838, 835, 839),\n    COL_TRI(838, 1041, 835),\n    COL_TRI(835, 837, 839),\n    COL_TRI(212, 835, 213),\n    COL_TRI(836, 796, 510),\n    COL_TRI(839, 1039, 838),\n    COL_TRI(839, 1040, 1039),\n    COL_TRI(838, 1037, 1041),\n    COL_TRI(838, 1039, 1037),\n    COL_TRI(831, 188, 1038),\n    COL_TRI(836, 414, 835),\n    COL_TRI(213, 416, 214),\n    COL_TRI(213, 414, 416),\n    COL_TRI(214, 1038, 188),\n    COL_TRI(831, 1038, 842),\n    COL_TRI(831, 1035, 188),\n    COL_TRI(842, 1033, 1032),\n    COL_TRI(832, 1034, 1031),\n    COL_TRI(840, 1034, 1042),\n    COL_TRI(815, 840, 1021),\n    COL_TRI(840, 1042, 1021),\n    COL_TRI(416, 1021, 1042),\n    COL_TRI(416, 1042, 842),\n    COL_TRI(416, 1043, 1021),\n    COL_TRI(815, 1021, 814),\n    COL_TRI(841, 1021, 1043),\n    COL_TRI(841, 814, 1021),\n    COL_TRI(497, 795, 1002),\n    COL_TRI(842, 1042, 1033),\n    COL_TRI(416, 842, 1038),\n    COL_TRI(815, 497, 1002),\n    COL_TRI(521, 841, 629),\n    COL_TRI(843, 653, 543),\n    COL_TRI(843, 1044, 653),\n    COL_TRI(640, 1044, 843),\n    COL_TRI(843, 654, 1045),\n    COL_TRI(843, 543, 654),\n    COL_TRI(843, 646, 640),\n    COL_TRI(843, 1045, 646),\n    COL_TRI(646, 654, 539),\n    COL_TRI(646, 1045, 654),\n    COL_TRI(640, 848, 1044),\n    COL_TRI(844, 1046, 647),\n    COL_TRI(844, 1047, 1046),\n    COL_TRI(653, 847, 656),\n    COL_TRI(658, 1047, 844),\n    COL_TRI(658, 559, 1047),\n    COL_TRI(559, 846, 1047),\n    COL_TRI(559, 560, 846),\n    COL_TRI(845, 1046, 846),\n    COL_TRI(846, 461, 845),\n    COL_TRI(846, 560, 461),\n    COL_TRI(845, 533, 1046),\n    COL_TRI(653, 1044, 847),\n    COL_TRI(847, 849, 656),\n    COL_TRI(847, 1048, 849),\n    COL_TRI(524, 1048, 847),\n    COL_TRI(848, 524, 847),\n    COL_TRI(524, 583, 1048),\n    COL_TRI(524, 639, 583),\n    COL_TRI(639, 584, 583),\n    COL_TRI(425, 424, 422),\n    COL_TRI(639, 638, 584),\n    COL_TRI(649, 844, 647),\n    COL_TRI(649, 658, 844),\n    COL_TRI(457, 523, 458),\n    COL_TRI(457, 458, 455),\n    COL_TRI(425, 428, 424),\n    COL_TRI(659, 6, 5),\n    COL_TRI(431, 433, 435),\n    COL_TRI(431, 430, 433),\n    COL_TRI(849, 0, 544),\n    COL_TRI(0, 3, 544),\n    COL_TRI(0, 1048, 583),\n    COL_TRI(0, 583, 1049),\n    COL_TRI(852, 549, 664),\n    COL_TRI(659, 5, 563),\n    COL_TRI(850, 550, 666),\n    COL_TRI(850, 1050, 550),\n    COL_TRI(851, 850, 1051),\n    COL_TRI(851, 1050, 850),\n    COL_TRI(852, 1052, 549),\n    COL_TRI(853, 660, 661),\n    COL_TRI(853, 854, 660),\n    COL_TRI(853, 1053, 854),\n    COL_TRI(853, 1054, 1053),\n    COL_TRI(854, 657, 660),\n    COL_TRI(854, 1053, 657),\n    COL_TRI(665, 855, 1055),\n    COL_TRI(665, 667, 855),\n    COL_TRI(855, 1052, 852),\n    COL_TRI(855, 852, 1055),\n    COL_TRI(7, 1053, 863),\n    COL_TRI(663, 856, 1056),\n    COL_TRI(663, 662, 856),\n    COL_TRI(856, 1057, 1056),\n    COL_TRI(856, 1058, 1057),\n    COL_TRI(548, 158, 678),\n    COL_TRI(678, 158, 157),\n    COL_TRI(857, 1054, 1057),\n    COL_TRI(857, 863, 1054),\n    COL_TRI(858, 851, 1051),\n    COL_TRI(858, 1051, 1060),\n    COL_TRI(851, 651, 652),\n    COL_TRI(652, 1050, 851),\n    COL_TRI(652, 550, 1050),\n    COL_TRI(851, 858, 651),\n    COL_TRI(667, 1052, 855),\n    COL_TRI(667, 549, 1052),\n    COL_TRI(857, 1057, 860),\n    COL_TRI(2, 860, 1058),\n    COL_TRI(662, 545, 1058),\n    COL_TRI(662, 1058, 856),\n    COL_TRI(859, 154, 858),\n    COL_TRI(858, 155, 651),\n    COL_TRI(858, 154, 155),\n    COL_TRI(859, 858, 1060),\n    COL_TRI(156, 163, 164),\n    COL_TRI(157, 156, 890),\n    COL_TRI(157, 890, 889),\n    COL_TRI(857, 860, 1061),\n    COL_TRI(860, 862, 1061),\n    COL_TRI(860, 1062, 862),\n    COL_TRI(2, 1062, 860),\n    COL_TRI(861, 1061, 862),\n    COL_TRI(861, 862, 1),\n    COL_TRI(862, 1062, 2),\n    COL_TRI(862, 2, 1),\n    COL_TRI(861, 857, 1061),\n    COL_TRI(861, 1, 4),\n    COL_TRI(1, 5, 4),\n    COL_TRI(1, 0, 5),\n    COL_TRI(7, 861, 4),\n    COL_TRI(7, 1059, 861),\n    COL_TRI(863, 857, 861),\n    COL_TRI(863, 861, 1059),\n    COL_TRI(7, 863, 1059),\n    COL_TRI(867, 881, 1067),\n    COL_TRI(864, 865, 1063),\n    COL_TRI(865, 866, 1064),\n    COL_TRI(865, 864, 866),\n    COL_TRI(866, 867, 1064),\n    COL_TRI(866, 881, 867),\n    COL_TRI(866, 15, 1065),\n    COL_TRI(866, 16, 15),\n    COL_TRI(866, 1066, 16),\n    COL_TRI(864, 1066, 866),\n    COL_TRI(864, 1063, 1067),\n    COL_TRI(17, 864, 1068),\n    COL_TRI(867, 1067, 1063),\n    COL_TRI(244, 1070, 1072),\n    COL_TRI(868, 872, 242),\n    COL_TRI(868, 869, 872),\n    COL_TRI(869, 868, 870),\n    COL_TRI(870, 868, 1069),\n    COL_TRI(871, 872, 1070),\n    COL_TRI(871, 1071, 872),\n    COL_TRI(872, 1072, 1070),\n    COL_TRI(872, 869, 1072),\n    COL_TRI(869, 870, 1073),\n    COL_TRI(873, 869, 1073),\n    COL_TRI(873, 1072, 869),\n    COL_TRI(244, 1072, 1069),\n    COL_TRI(877, 1073, 870),\n    COL_TRI(874, 1069, 1072),\n    COL_TRI(874, 1072, 873),\n    COL_TRI(870, 1069, 874),\n    COL_TRI(871, 1070, 1074),\n    COL_TRI(875, 1070, 1076),\n    COL_TRI(875, 1074, 1070),\n    COL_TRI(876, 870, 874),\n    COL_TRI(877, 870, 876),\n    COL_TRI(878, 1073, 877),\n    COL_TRI(878, 873, 1073),\n    COL_TRI(876, 874, 879),\n    COL_TRI(879, 874, 873),\n    COL_TRI(879, 873, 878),\n    COL_TRI(880, 16, 1066),\n    COL_TRI(880, 17, 16),\n    COL_TRI(864, 880, 1066),\n    COL_TRI(17, 1068, 14),\n    COL_TRI(17, 880, 864),\n    COL_TRI(882, 1077, 1079),\n    COL_TRI(875, 1067, 1074),\n    COL_TRI(881, 871, 1074),\n    COL_TRI(881, 1074, 1067),\n    COL_TRI(871, 881, 1075),\n    COL_TRI(871, 1075, 1071),\n    COL_TRI(877, 876, 1077),\n    COL_TRI(882, 879, 878),\n    COL_TRI(882, 1079, 879),\n    COL_TRI(878, 877, 1078),\n    COL_TRI(877, 1077, 1078),\n    COL_TRI(878, 1078, 882),\n    COL_TRI(882, 1078, 1077),\n    COL_TRI(474, 586, 473),\n    COL_TRI(474, 473, 591),\n    COL_TRI_INIT(SURFACE_HANGABLE, 6),\n    COL_TRI(18, 19, 20),\n    COL_TRI(18, 21, 19),\n    COL_TRI(21, 22, 23),\n    COL_TRI(21, 18, 22),\n    COL_TRI(24, 25, 26),\n    COL_TRI(24, 27, 25),\n    COL_TRI_INIT(SURFACE_CLOSE_CAMERA, 17),\n    COL_TRI(144, 145, 146),\n    COL_TRI(144, 146, 147),\n    COL_TRI(146, 148, 147),\n    COL_TRI(144, 149, 150),\n    COL_TRI(150, 151, 145),\n    COL_TRI(144, 150, 145),\n    COL_TRI(152, 149, 144),\n    COL_TRI(153, 152, 144),\n    COL_TRI(154, 144, 155),\n    COL_TRI(144, 147, 155),\n    COL_TRI(156, 164, 150),\n    COL_TRI(156, 150, 149),\n    COL_TRI(146, 159, 160),\n    COL_TRI(146, 145, 159),\n    COL_TRI(157, 158, 161),\n    COL_TRI(158, 162, 161),\n    COL_TRI(157, 161, 163),\n    COL_TRI_INIT(SURFACE_VERY_SLIPPERY, 32),\n    COL_TRI(173, 174, 175),\n    COL_TRI(165, 166, 167),\n    COL_TRI(165, 168, 166),\n    COL_TRI(168, 169, 166),\n    COL_TRI(168, 170, 169),\n    COL_TRI(170, 171, 169),\n    COL_TRI(170, 172, 171),\n    COL_TRI(179, 194, 195),\n    COL_TRI(173, 175, 176),\n    COL_TRI(177, 189, 190),\n    COL_TRI(177, 191, 189),\n    COL_TRI(178, 192, 193),\n    COL_TRI(178, 193, 194),\n    COL_TRI(179, 178, 194),\n    COL_TRI(184, 203, 201),\n    COL_TRI(180, 179, 195),\n    COL_TRI(180, 195, 196),\n    COL_TRI(181, 180, 196),\n    COL_TRI(181, 196, 197),\n    COL_TRI(182, 198, 199),\n    COL_TRI(182, 200, 198),\n    COL_TRI(183, 184, 201),\n    COL_TRI(184, 202, 203),\n    COL_TRI(187, 210, 211),\n    COL_TRI(183, 201, 204),\n    COL_TRI(185, 186, 205),\n    COL_TRI(185, 205, 206),\n    COL_TRI(186, 207, 205),\n    COL_TRI(186, 208, 207),\n    COL_TRI(187, 209, 210),\n    COL_TRI(188, 212, 213),\n    COL_TRI(188, 213, 214),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(4, 5, 6),\n    COL_TRI(4, 6, 7),\n    COL_TRI(8, 9, 10),\n    COL_TRI(10, 11, 12),\n    COL_TRI(10, 12, 13),\n    COL_TRI(8, 10, 13),\n    COL_TRI(8, 14, 9),\n    COL_TRI(8, 15, 14),\n    COL_TRI(14, 16, 17),\n    COL_TRI(14, 15, 16),\n    COL_TRI_INIT(SURFACE_INSTANT_WARP_1D, 2),\n    COL_TRI(241, 242, 243),\n    COL_TRI(241, 244, 242),\n    COL_TRI_INIT(SURFACE_INSTANT_WARP_1E, 2),\n    COL_TRI(11, 241, 12),\n    COL_TRI(241, 243, 12),\n    COL_TRI_INIT(SURFACE_DEEP_QUICKSAND, 128),\n    COL_TRI(35, 34, 33),\n    COL_TRI(28, 29, 30),\n    COL_TRI(29, 31, 30),\n    COL_TRI(32, 33, 29),\n    COL_TRI(32, 29, 28),\n    COL_TRI(31, 34, 35),\n    COL_TRI(31, 35, 30),\n    COL_TRI(36, 30, 37),\n    COL_TRI(37, 30, 35),\n    COL_TRI(28, 38, 32),\n    COL_TRI(38, 28, 39),\n    COL_TRI(32, 40, 35),\n    COL_TRI(35, 41, 42),\n    COL_TRI(35, 40, 41),\n    COL_TRI(35, 33, 32),\n    COL_TRI(50, 47, 41),\n    COL_TRI(32, 43, 44),\n    COL_TRI(32, 44, 40),\n    COL_TRI(32, 45, 43),\n    COL_TRI(41, 46, 49),\n    COL_TRI(41, 47, 46),\n    COL_TRI(48, 42, 41),\n    COL_TRI(48, 41, 100),\n    COL_TRI(41, 49, 100),\n    COL_TRI(51, 47, 50),\n    COL_TRI(51, 104, 47),\n    COL_TRI(49, 46, 55),\n    COL_TRI(52, 54, 49),\n    COL_TRI(52, 49, 57),\n    COL_TRI(49, 101, 57),\n    COL_TRI(53, 101, 49),\n    COL_TRI(54, 105, 49),\n    COL_TRI(49, 102, 53),\n    COL_TRI(49, 55, 102),\n    COL_TRI(55, 104, 102),\n    COL_TRI(51, 102, 104),\n    COL_TRI(53, 106, 56),\n    COL_TRI(56, 101, 53),\n    COL_TRI(57, 58, 52),\n    COL_TRI(58, 107, 52),\n    COL_TRI(58, 56, 59),\n    COL_TRI(59, 107, 58),\n    COL_TRI(59, 108, 107),\n    COL_TRI(54, 60, 105),\n    COL_TRI(60, 54, 108),\n    COL_TRI(59, 60, 108),\n    COL_TRI(65, 59, 56),\n    COL_TRI(61, 105, 60),\n    COL_TRI(60, 62, 61),\n    COL_TRI(62, 48, 61),\n    COL_TRI(48, 100, 61),\n    COL_TRI(63, 62, 60),\n    COL_TRI(59, 109, 110),\n    COL_TRI(59, 64, 109),\n    COL_TRI(64, 59, 65),\n    COL_TRI(67, 95, 98),\n    COL_TRI(65, 56, 106),\n    COL_TRI(65, 50, 111),\n    COL_TRI(66, 64, 65),\n    COL_TRI(65, 106, 50),\n    COL_TRI(51, 50, 106),\n    COL_TRI(63, 99, 62),\n    COL_TRI(72, 114, 66),\n    COL_TRI(67, 112, 113),\n    COL_TRI(67, 71, 43),\n    COL_TRI(69, 71, 67),\n    COL_TRI(70, 113, 112),\n    COL_TRI(67, 113, 69),\n    COL_TRI(66, 69, 73),\n    COL_TRI(71, 69, 66),\n    COL_TRI(71, 66, 116),\n    COL_TRI(66, 114, 64),\n    COL_TRI(66, 73, 72),\n    COL_TRI(73, 76, 72),\n    COL_TRI(74, 73, 70),\n    COL_TRI(74, 76, 73),\n    COL_TRI(75, 72, 117),\n    COL_TRI(75, 118, 72),\n    COL_TRI(76, 77, 72),\n    COL_TRI(72, 77, 117),\n    COL_TRI(77, 79, 117),\n    COL_TRI(78, 117, 79),\n    COL_TRI(79, 82, 78),\n    COL_TRI(80, 82, 79),\n    COL_TRI(80, 79, 74),\n    COL_TRI(87, 92, 119),\n    COL_TRI(81, 120, 78),\n    COL_TRI(81, 78, 84),\n    COL_TRI(82, 83, 78),\n    COL_TRI(83, 85, 78),\n    COL_TRI(84, 78, 121),\n    COL_TRI(78, 119, 121),\n    COL_TRI(85, 119, 78),\n    COL_TRI(86, 83, 82),\n    COL_TRI(86, 91, 83),\n    COL_TRI(87, 119, 85),\n    COL_TRI(84, 121, 88),\n    COL_TRI(84, 88, 122),\n    COL_TRI(88, 92, 90),\n    COL_TRI(88, 90, 122),\n    COL_TRI(89, 80, 112),\n    COL_TRI(86, 89, 112),\n    COL_TRI(80, 74, 112),\n    COL_TRI(74, 70, 112),\n    COL_TRI(90, 91, 112),\n    COL_TRI(91, 86, 112),\n    COL_TRI(68, 67, 103),\n    COL_TRI(92, 87, 90),\n    COL_TRI(90, 87, 91),\n    COL_TRI(93, 123, 94),\n    COL_TRI(94, 123, 68),\n    COL_TRI(39, 93, 94),\n    COL_TRI(94, 38, 39),\n    COL_TRI(93, 39, 98),\n    COL_TRI(68, 124, 125),\n    COL_TRI(68, 123, 124),\n    COL_TRI(43, 103, 67),\n    COL_TRI(95, 68, 125),\n    COL_TRI(67, 68, 95),\n    COL_TRI(96, 98, 95),\n    COL_TRI(97, 125, 124),\n    COL_TRI(97, 124, 115),\n    COL_TRI(98, 96, 97),\n    COL_TRI(98, 115, 93),\n    COL_TRI(98, 97, 115),\n    COL_TRI(43, 45, 103),\n    COL_TRI(36, 99, 63),\n    COL_TRI(36, 37, 99),\n    COL_TRI_INIT(SURFACE_DEEP_MOVING_QUICKSAND, 36),\n    COL_TRI_SPECIAL(217, 248, 218, 0x1AB),\n    COL_TRI_SPECIAL(215, 245, 216, 0x100),\n    COL_TRI_SPECIAL(215, 246, 245, 0x100),\n    COL_TRI_SPECIAL(216, 245, 247, 0x1D5),\n    COL_TRI_SPECIAL(216, 247, 217, 0x1D5),\n    COL_TRI_SPECIAL(218, 248, 249, 0x180),\n    COL_TRI_SPECIAL(218, 249, 219, 0x180),\n    COL_TRI_SPECIAL(217, 247, 248, 0x1AB),\n    COL_TRI_SPECIAL(219, 249, 256, 0x155),\n    COL_TRI_SPECIAL(219, 256, 229, 0x155),\n    COL_TRI_SPECIAL(229, 246, 215, 0x12B),\n    COL_TRI_SPECIAL(229, 256, 246, 0x12B),\n    COL_TRI_SPECIAL(220, 250, 225, 0x100),\n    COL_TRI_SPECIAL(253, 251, 221, 0x155),\n    COL_TRI_SPECIAL(250, 255, 225, 0x100),\n    COL_TRI_SPECIAL(221, 251, 220, 0x12B),\n    COL_TRI_SPECIAL(251, 250, 220, 0x12B),\n    COL_TRI_SPECIAL(222, 252, 223, 0x180),\n    COL_TRI_SPECIAL(252, 253, 223, 0x180),\n    COL_TRI_SPECIAL(223, 253, 221, 0x155),\n    COL_TRI_SPECIAL(231, 259, 232, 0x1D5),\n    COL_TRI_SPECIAL(224, 254, 222, 0x1AB),\n    COL_TRI_SPECIAL(254, 252, 222, 0x1AB),\n    COL_TRI_SPECIAL(225, 255, 224, 0x1D5),\n    COL_TRI_SPECIAL(255, 254, 224, 0x1D5),\n    COL_TRI_SPECIAL(230, 257, 231, 0x100),\n    COL_TRI_SPECIAL(230, 258, 257, 0x100),\n    COL_TRI_SPECIAL(233, 262, 235, 0x155),\n    COL_TRI_SPECIAL(231, 257, 259, 0x1D5),\n    COL_TRI_SPECIAL(234, 260, 233, 0x180),\n    COL_TRI_SPECIAL(234, 261, 260, 0x180),\n    COL_TRI_SPECIAL(232, 259, 261, 0x1AB),\n    COL_TRI_SPECIAL(232, 261, 234, 0x1AB),\n    COL_TRI_SPECIAL(233, 260, 262, 0x155),\n    COL_TRI_SPECIAL(235, 258, 230, 0x12B),\n    COL_TRI_SPECIAL(235, 262, 258, 0x12B),\n    COL_TRI_INIT(SURFACE_MOVING_QUICKSAND, 78),\n    COL_TRI_SPECIAL(44, 128, 129, 0x1AB),\n    COL_TRI_SPECIAL(71, 126, 127, 0x100),\n    COL_TRI_SPECIAL(71, 50, 126, 0x100),\n    COL_TRI_SPECIAL(43, 71, 127, 0x1D5),\n    COL_TRI_SPECIAL(43, 127, 128, 0x1D5),\n    COL_TRI_SPECIAL(40, 129, 130, 0x180),\n    COL_TRI_SPECIAL(40, 44, 129, 0x180),\n    COL_TRI_SPECIAL(44, 43, 128, 0x1AB),\n    COL_TRI_SPECIAL(41, 130, 137, 0x155),\n    COL_TRI_SPECIAL(41, 40, 130, 0x155),\n    COL_TRI_SPECIAL(50, 41, 137, 0x12B),\n    COL_TRI_SPECIAL(50, 137, 126, 0x12B),\n    COL_TRI_SPECIAL(131, 132, 48, 0x100),\n    COL_TRI_SPECIAL(133, 62, 99, 0x155),\n    COL_TRI_SPECIAL(132, 42, 48, 0x100),\n    COL_TRI_SPECIAL(133, 131, 62, 0x12B),\n    COL_TRI_SPECIAL(131, 48, 62, 0x12B),\n    COL_TRI_SPECIAL(134, 135, 37, 0x180),\n    COL_TRI_SPECIAL(135, 99, 37, 0x180),\n    COL_TRI_SPECIAL(135, 133, 99, 0x155),\n    COL_TRI_SPECIAL(68, 139, 140, 0x1D5),\n    COL_TRI_SPECIAL(136, 134, 35, 0x1AB),\n    COL_TRI_SPECIAL(134, 37, 35, 0x1AB),\n    COL_TRI_SPECIAL(136, 35, 42, 0x1D5),\n    COL_TRI_SPECIAL(132, 136, 42, 0x1D5),\n    COL_TRI_SPECIAL(103, 45, 138, 0x100),\n    COL_TRI_SPECIAL(103, 138, 139, 0x100),\n    COL_TRI_SPECIAL(32, 38, 142, 0x155),\n    COL_TRI_SPECIAL(68, 103, 139, 0x1D5),\n    COL_TRI_SPECIAL(38, 94, 141, 0x180),\n    COL_TRI_SPECIAL(38, 141, 142, 0x180),\n    COL_TRI_SPECIAL(94, 68, 140, 0x1AB),\n    COL_TRI_SPECIAL(94, 140, 141, 0x1AB),\n    COL_TRI_SPECIAL(32, 142, 143, 0x155),\n    COL_TRI_SPECIAL(45, 143, 138, 0x12B),\n    COL_TRI_SPECIAL(45, 32, 143, 0x12B),\n    COL_TRI_SPECIAL(128, 217, 218, 0x1AB),\n    COL_TRI_SPECIAL(126, 215, 216, 0x100),\n    COL_TRI_SPECIAL(126, 216, 127, 0x100),\n    COL_TRI_SPECIAL(127, 217, 128, 0x1D5),\n    COL_TRI_SPECIAL(127, 216, 217, 0x1D5),\n    COL_TRI_SPECIAL(129, 218, 219, 0x180),\n    COL_TRI_SPECIAL(129, 219, 130, 0x180),\n    COL_TRI_SPECIAL(128, 218, 129, 0x1AB),\n    COL_TRI_SPECIAL(130, 219, 229, 0x155),\n    COL_TRI_SPECIAL(130, 229, 137, 0x155),\n    COL_TRI_SPECIAL(137, 215, 126, 0x12B),\n    COL_TRI_SPECIAL(137, 229, 215, 0x12B),\n    COL_TRI_SPECIAL(131, 220, 132, 0x100),\n    COL_TRI_SPECIAL(223, 221, 133, 0x155),\n    COL_TRI_SPECIAL(220, 225, 132, 0x100),\n    COL_TRI_SPECIAL(133, 221, 131, 0x12B),\n    COL_TRI_SPECIAL(221, 220, 131, 0x12B),\n    COL_TRI_SPECIAL(134, 222, 135, 0x180),\n    COL_TRI_SPECIAL(222, 223, 135, 0x180),\n    COL_TRI_SPECIAL(135, 223, 133, 0x155),\n    COL_TRI_SPECIAL(139, 231, 232, 0x1D5),\n    COL_TRI_SPECIAL(136, 224, 134, 0x1AB),\n    COL_TRI_SPECIAL(224, 222, 134, 0x1AB),\n    COL_TRI_SPECIAL(132, 225, 136, 0x1D5),\n    COL_TRI_SPECIAL(225, 224, 136, 0x1D5),\n    COL_TRI_SPECIAL(138, 230, 231, 0x100),\n    COL_TRI_SPECIAL(138, 231, 139, 0x100),\n    COL_TRI_SPECIAL(142, 233, 235, 0x155),\n    COL_TRI_SPECIAL(139, 232, 140, 0x1D5),\n    COL_TRI_SPECIAL(141, 233, 142, 0x180),\n    COL_TRI_SPECIAL(141, 234, 233, 0x180),\n    COL_TRI_SPECIAL(140, 234, 141, 0x1AB),\n    COL_TRI_SPECIAL(140, 232, 234, 0x1AB),\n    COL_TRI_SPECIAL(142, 235, 143, 0x155),\n    COL_TRI_SPECIAL(143, 230, 138, 0x12B),\n    COL_TRI_SPECIAL(143, 235, 230, 0x12B),\n    COL_TRI_SPECIAL(226, 236, 237, 0x140),\n    COL_TRI_SPECIAL(227, 226, 237, 0x140),\n    COL_TRI_SPECIAL(228, 236, 226, 0x100),\n    COL_TRI_SPECIAL(228, 238, 236, 0x100),\n    COL_TRI_SPECIAL(228, 239, 238, 0x1C0),\n    COL_TRI_SPECIAL(228, 240, 239, 0x1C0),\n    COL_TRI_INIT(SURFACE_INSTANT_MOVING_QUICKSAND, 18),\n    COL_TRI_SPECIAL(249, 263, 256, 0x155),\n    COL_TRI_SPECIAL(246, 263, 245, 0x100),\n    COL_TRI_SPECIAL(245, 263, 247, 0x1D5),\n    COL_TRI_SPECIAL(248, 263, 249, 0x180),\n    COL_TRI_SPECIAL(247, 263, 248, 0x1AB),\n    COL_TRI_SPECIAL(253, 264, 251, 0x155),\n    COL_TRI_SPECIAL(256, 263, 246, 0x12B),\n    COL_TRI_SPECIAL(250, 264, 255, 0x100),\n    COL_TRI_SPECIAL(251, 264, 250, 0x12B),\n    COL_TRI_SPECIAL(252, 264, 253, 0x180),\n    COL_TRI_SPECIAL(261, 265, 260, 0x180),\n    COL_TRI_SPECIAL(254, 264, 252, 0x1AB),\n    COL_TRI_SPECIAL(255, 264, 254, 0x1D5),\n    COL_TRI_SPECIAL(258, 265, 257, 0x100),\n    COL_TRI_SPECIAL(257, 265, 259, 0x1D5),\n    COL_TRI_SPECIAL(262, 265, 258, 0x12B),\n    COL_TRI_SPECIAL(259, 265, 261, 0x1AB),\n    COL_TRI_SPECIAL(260, 265, 262, 0x155),\n    COL_TRI_INIT(SURFACE_CAMERA_FREE_ROAM, 27),\n    COL_TRI(275, 278, 276),\n    COL_TRI(266, 267, 268),\n    COL_TRI(266, 269, 267),\n    COL_TRI(270, 271, 272),\n    COL_TRI(270, 273, 271),\n    COL_TRI(274, 275, 276),\n    COL_TRI(274, 276, 277),\n    COL_TRI(282, 297, 287),\n    COL_TRI(275, 279, 278),\n    COL_TRI(280, 290, 291),\n    COL_TRI(280, 291, 292),\n    COL_TRI(281, 293, 294),\n    COL_TRI(281, 294, 295),\n    COL_TRI(282, 296, 297),\n    COL_TRI(288, 302, 303),\n    COL_TRI(283, 298, 284),\n    COL_TRI(284, 298, 285),\n    COL_TRI(284, 285, 299),\n    COL_TRI(285, 300, 301),\n    COL_TRI(285, 301, 299),\n    COL_TRI(283, 286, 298),\n    COL_TRI(286, 301, 300),\n    COL_TRI(286, 283, 301),\n    COL_TRI(287, 302, 288),\n    COL_TRI(287, 297, 302),\n    COL_TRI(289, 288, 303),\n    COL_TRI(289, 303, 304),\n    COL_TRI_INIT(SURFACE_NO_CAM_COLLISION, 132),\n    COL_TRI(310, 305, 312),\n    COL_TRI(305, 306, 307),\n    COL_TRI(305, 307, 308),\n    COL_TRI(309, 307, 306),\n    COL_TRI(309, 306, 310),\n    COL_TRI(308, 309, 311),\n    COL_TRI(312, 305, 308),\n    COL_TRI(308, 307, 309),\n    COL_TRI(312, 308, 311),\n    COL_TRI(310, 306, 305),\n    COL_TRI(313, 316, 362),\n    COL_TRI(314, 363, 313),\n    COL_TRI(314, 313, 362),\n    COL_TRI(313, 364, 316),\n    COL_TRI(315, 363, 314),\n    COL_TRI(315, 365, 363),\n    COL_TRI(316, 365, 315),\n    COL_TRI(319, 317, 318),\n    COL_TRI(316, 364, 365),\n    COL_TRI(317, 366, 318),\n    COL_TRI(317, 367, 366),\n    COL_TRI(318, 320, 368),\n    COL_TRI(318, 366, 320),\n    COL_TRI(319, 318, 368),\n    COL_TRI(323, 370, 369),\n    COL_TRI(320, 366, 367),\n    COL_TRI(320, 367, 321),\n    COL_TRI(321, 317, 319),\n    COL_TRI(321, 367, 317),\n    COL_TRI(322, 369, 370),\n    COL_TRI(322, 370, 325),\n    COL_TRI(323, 369, 371),\n    COL_TRI(324, 325, 372),\n    COL_TRI(325, 370, 323),\n    COL_TRI(325, 323, 372),\n    COL_TRI(324, 322, 325),\n    COL_TRI(324, 371, 369),\n    COL_TRI(324, 369, 322),\n    COL_TRI(326, 373, 374),\n    COL_TRI(328, 373, 326),\n    COL_TRI(327, 374, 373),\n    COL_TRI(326, 374, 329),\n    COL_TRI(327, 373, 375),\n    COL_TRI(328, 326, 329),\n    COL_TRI(328, 329, 376),\n    COL_TRI(329, 374, 327),\n    COL_TRI(329, 327, 376),\n    COL_TRI(328, 375, 373),\n    COL_TRI(330, 377, 378),\n    COL_TRI(330, 378, 333),\n    COL_TRI(331, 378, 377),\n    COL_TRI(331, 377, 379),\n    COL_TRI(332, 330, 333),\n    COL_TRI(333, 331, 380),\n    COL_TRI(332, 333, 380),\n    COL_TRI(333, 378, 331),\n    COL_TRI(332, 379, 377),\n    COL_TRI(332, 377, 330),\n    COL_TRI(334, 381, 336),\n    COL_TRI(334, 382, 381),\n    COL_TRI(335, 381, 382),\n    COL_TRI(335, 382, 383),\n    COL_TRI(336, 335, 384),\n    COL_TRI(336, 381, 335),\n    COL_TRI(337, 336, 384),\n    COL_TRI(337, 334, 336),\n    COL_TRI(337, 383, 382),\n    COL_TRI(337, 382, 334),\n    COL_TRI(343, 389, 342),\n    COL_TRI(338, 385, 339),\n    COL_TRI(339, 386, 340),\n    COL_TRI(339, 385, 386),\n    COL_TRI(340, 386, 387),\n    COL_TRI(340, 387, 341),\n    COL_TRI(338, 388, 385),\n    COL_TRI(341, 387, 388),\n    COL_TRI(341, 388, 338),\n    COL_TRI(342, 389, 390),\n    COL_TRI(342, 390, 344),\n    COL_TRI(348, 394, 395),\n    COL_TRI(344, 390, 391),\n    COL_TRI(344, 391, 345),\n    COL_TRI(343, 392, 389),\n    COL_TRI(345, 391, 392),\n    COL_TRI(345, 392, 343),\n    COL_TRI(346, 393, 347),\n    COL_TRI(347, 394, 348),\n    COL_TRI(347, 393, 394),\n    COL_TRI(352, 399, 353),\n    COL_TRI(348, 395, 349),\n    COL_TRI(346, 396, 393),\n    COL_TRI(349, 395, 396),\n    COL_TRI(349, 396, 346),\n    COL_TRI(350, 397, 352),\n    COL_TRI(351, 398, 350),\n    COL_TRI(350, 398, 397),\n    COL_TRI(352, 397, 399),\n    COL_TRI(355, 405, 402),\n    COL_TRI(351, 400, 398),\n    COL_TRI(353, 399, 400),\n    COL_TRI(353, 400, 351),\n    COL_TRI(354, 401, 402),\n    COL_TRI(354, 403, 401),\n    COL_TRI(354, 404, 403),\n    COL_TRI(354, 402, 405),\n    COL_TRI(355, 406, 403),\n    COL_TRI(355, 403, 404),\n    COL_TRI(355, 402, 406),\n    COL_TRI(285, 407, 408),\n    COL_TRI(298, 407, 285),\n    COL_TRI(285, 408, 300),\n    COL_TRI(300, 408, 409),\n    COL_TRI(300, 409, 286),\n    COL_TRI(298, 410, 407),\n    COL_TRI(286, 410, 298),\n    COL_TRI(286, 409, 410),\n    COL_TRI(356, 411, 357),\n    COL_TRI(356, 357, 412),\n    COL_TRI(357, 413, 358),\n    COL_TRI(357, 358, 412),\n    COL_TRI(358, 414, 415),\n    COL_TRI(358, 413, 414),\n    COL_TRI(356, 414, 411),\n    COL_TRI(356, 415, 414),\n    COL_TRI(359, 416, 360),\n    COL_TRI(359, 360, 417),\n    COL_TRI(360, 418, 361),\n    COL_TRI(360, 361, 417),\n    COL_TRI(361, 418, 419),\n    COL_TRI(361, 419, 420),\n    COL_TRI(359, 419, 416),\n    COL_TRI(359, 420, 419),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(4),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_null_start,   /*pos*/     0,     0,  6451, /*yaw*/ 128), // unused, probably an early way to set initial position\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_04, /*pos*/  1741,  -101,  1843, /*yaw*/   0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_04, /*pos*/     0,  -101,   528, /*yaw*/   0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_04, /*pos*/ -1740,  -101,  1843, /*yaw*/   0),\n    COL_END(),\n};\n\n"
  },
  {
    "path": "levels/ssl/areas/2/geo.inc.c",
    "content": "// 0x0E0007CC\nconst GeoLayout ssl_geo_0007CC[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND_COLOR(0x0001),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 12800, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(4, 0, 2000, 6000, 0, 0, 0, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, ssl_seg7_dl_0701EE80),\n                    GEO_DISPLAY_LIST(LAYER_ALPHA, ssl_seg7_dl_0701F920),\n                    GEO_DISPLAY_LIST(LAYER_TRANSPARENT_DECAL, ssl_seg7_dl_0701FCE0),\n                    GEO_ASM(0x802, geo_movtex_update_horizontal),\n                    GEO_ASM(   0, geo_movtex_pause_control),\n                    GEO_ASM(0x801, geo_movtex_draw_nocolor),\n                    GEO_ASM(0x802, geo_movtex_draw_nocolor),\n                    GEO_ASM(0x803, geo_movtex_draw_nocolor),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(   0, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ssl/areas/2/macro.inc.c",
    "content": "// 0x07027CD4 - 0x07027ECA\nconst MacroObject ssl_seg7_area_2_macro_objs[] = {\n    MACRO_OBJECT               (/*preset*/ macro_goomba,                      /*yaw*/   0, /*pos*/  3263,   778,  3157),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/ 270, /*pos*/  2196,   640, -3329, /*bhvParam*/ DIALOG_043),\n    MACRO_OBJECT               (/*preset*/ macro_box_1up,                     /*yaw*/   0, /*pos*/ -3536,   252, -3705),\n    MACRO_OBJECT               (/*preset*/ macro_goomba,                      /*yaw*/   0, /*pos*/  3389,     0, -1978),\n    MACRO_OBJECT               (/*preset*/ macro_goomba,                      /*yaw*/   0, /*pos*/ -3638,     0,  1928),\n    MACRO_OBJECT               (/*preset*/ macro_box_1up,                     /*yaw*/   0, /*pos*/ -1242,   252, -3957),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,               /*yaw*/   0, /*pos*/  1873,     0, -3495),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,               /*yaw*/   0, /*pos*/  1200,     0, -3495),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_circling_amp,                /*yaw*/   0, /*pos*/  3056,   736, -3267, /*bhvParam*/ AMP_BP_ROT_RADIUS_300),\n    MACRO_OBJECT               (/*preset*/ macro_goomba,                      /*yaw*/   0, /*pos*/  3263,   652,  2200),\n    MACRO_OBJECT               (/*preset*/ macro_goomba,                      /*yaw*/   0, /*pos*/  3431,   673, -1373),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal_flying, /*yaw*/  90, /*pos*/    -2,  1774,  2794),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_horizontal_flying, /*yaw*/   0, /*pos*/  2694,   850, -2889),\n    MACRO_OBJECT               (/*preset*/ macro_recovery_heart,              /*yaw*/   0, /*pos*/  -400,  1978, -2250),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/   736,  2652, -2250),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/   736,  2546, -2250),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/  1368,  3263, -2250),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/  1368,  3135, -2250),\n    MACRO_OBJECT               (/*preset*/ macro_homing_amp,                  /*yaw*/   0, /*pos*/  1621,  3368, -1142),\n    MACRO_OBJECT               (/*preset*/ macro_homing_amp,                  /*yaw*/   0, /*pos*/  1621,  3389,   478),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,        /*yaw*/  90, /*pos*/  -210,  4521,  -994),\n    MACRO_OBJECT               (/*preset*/ macro_goomba,                      /*yaw*/   0, /*pos*/ -2100,     0,  3316),\n    MACRO_OBJECT               (/*preset*/ macro_blue_coin_switch,            /*yaw*/   0, /*pos*/  -719,     0,  4772),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/     0,     0,  2381),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/     0,   100,  2381),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/     0,   200,  2381),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,          /*yaw*/   0, /*pos*/  2064,   -81, -1901),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,          /*yaw*/   0, /*pos*/  2569,   -81, -2022),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,          /*yaw*/   0, /*pos*/  2698,   -81, -2535),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,          /*yaw*/   0, /*pos*/  2698,   -81, -3049),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_hidden_1up,                  /*yaw*/   0, /*pos*/  1940,   -81, -1360, /*bhvParam*/ 4),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_star_trigger,         /*yaw*/   0, /*pos*/  -260,  2940,  -600),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_star_trigger,         /*yaw*/   0, /*pos*/   260,  1967,  -600),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_star_trigger,         /*yaw*/   0, /*pos*/ -1940,  1229,  -600),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_star_trigger,         /*yaw*/   0, /*pos*/ -1940,  1229,  2320),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_vertical_flying,   /*yaw*/   0, /*pos*/   290,  4479,  -940),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/   0, /*pos*/ -3560,     0, -4065, /*bhvParam*/ DIALOG_103),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_star_trigger,         /*yaw*/   0, /*pos*/   260,  3913,  -600),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/  -260,  2950,  -600),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/   260,  1977,  -600),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/ -1940,  1239,  -600),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/ -1940,  1239,  2320),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/   260,  3923,  -600),\n    MACRO_OBJECT               (/*preset*/ macro_goomba_triplet_spawner,      /*yaw*/   0, /*pos*/  3181,     0,  3587),\n    MACRO_OBJECT               (/*preset*/ macro_1up,                         /*yaw*/   0, /*pos*/ -3350,   980, -1240),\n    MACRO_OBJECT               (/*preset*/ macro_1up,                         /*yaw*/   0, /*pos*/  2870,  1050, -2640),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,               /*yaw*/   0, /*pos*/ -2047,  1664,  3076),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,               /*yaw*/   0, /*pos*/ -2047,  1536,  2870),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,               /*yaw*/   0, /*pos*/ -1840,  1357,  3076),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,               /*yaw*/   0, /*pos*/ -1840,  1408,  2870),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/ssl/areas/2/movtext.inc.c",
    "content": "// 0x070285F0 - 0x07028660\nconst Gfx ssl_dl_pyramid_sand_pathway_floor_begin[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_INTER2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogFactor(0x0E49, 0xF2B7), // This isn't gsSPFogPosition since there is no valid min/max pair that corresponds to 0x0E49F2B7\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_DECALRGB, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x07028660 - 0x070286A0\nconst Gfx ssl_dl_pyramid_sand_pathway_floor_end[] = {\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsSPGeometryModeSetFirst(G_FOG, G_LIGHTING | G_CULL_BACK),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_INTER, G_RM_NOOP2),\n    gsSPEndDisplayList(),\n};\n\n// 0x070286A0 - 0x07028718\nconst Gfx ssl_dl_pyramid_sand_pathway_begin[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_INTER2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogFactor(0x0E49, 0xF2B7), // This isn't gsSPFogPosition since there is no valid min/max pair that corresponds to 0x0E49F2B7\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetEnvColor(255, 255, 255, 180),\n    gsDPSetCombineMode(G_CC_DECALFADE, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x07028718 - 0x07028760\nconst Gfx ssl_dl_pyramid_sand_pathway_end[] = {\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsSPGeometryModeSetFirst(G_FOG, G_LIGHTING | G_CULL_BACK),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPSetRenderMode(G_RM_AA_ZB_XLU_INTER, G_RM_NOOP2),\n    gsSPEndDisplayList(),\n};\n\n// 0x07028760 - 0x070287B8\nMovtex ssl_movtex_tris_pyramid_sand_pathway_front[] = {\n    MOV_TEX_SPD(   50),\n    MOV_TEX_TRIS( 102, 1229, -742, 0, 0),\n    MOV_TEX_TRIS( 102, 4275, -742, 5, 0),\n    MOV_TEX_TRIS( 102, 4300, -768, 6, 0),\n    MOV_TEX_TRIS( 102, 4300, -870, 8, 0),\n    MOV_TEX_TRIS(-102, 1229, -742, 0, 1),\n    MOV_TEX_TRIS(-102, 4275, -742, 5, 1),\n    MOV_TEX_TRIS(-102, 4300, -768, 6, 1),\n    MOV_TEX_TRIS(-102, 4300, -870, 8, 1),\n    MOV_TEX_END(),\n    0, // alignment?\n};\n\n// 0x070287B8 - 0x070287F0\nconst Gfx ssl_dl_pyramid_sand_pathway_front_end[] = {\n    gsSP2Triangles( 0,  1,  4, 0x0,  4,  1,  5, 0x0),\n    gsSP2Triangles( 1,  2,  5, 0x0,  5,  2,  6, 0x0),\n    gsSP2Triangles( 2,  3,  6, 0x0,  6,  3,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070287F0 - 0x07028844\nMovtex ssl_movtex_tris_pyramid_sand_pathway_floor[] = {\n    MOV_TEX_SPD(     8),\n    MOV_TEX_TRIS( 1178, 1229, 2150, 0, 0),\n    MOV_TEX_TRIS(-1741, 1229, 2150, 2, 0),\n    MOV_TEX_TRIS(-1741, 1229, -589, 4, 0),\n    MOV_TEX_TRIS(  154, 1229, -589, 5, 0),\n    MOV_TEX_TRIS( 1178, 1229, 2560, 0, 1),\n    MOV_TEX_TRIS(-2150, 1229, 2560, 2, 1),\n    MOV_TEX_TRIS(-2150, 1229, -794, 4, 1),\n    MOV_TEX_TRIS(  154, 1229, -794, 5, 1),\n    MOV_TEX_END(),\n};\n\n// 0x07028844 - 0x07028888\nMovtex ssl_movtex_tris_pyramid_sand_pathway_side[] = {\n    MOV_TEX_SPD(   50),\n    MOV_TEX_TRIS(1229, -307, 2150, 0, 0),\n    MOV_TEX_TRIS(1229, 1168, 2150, 1, 0),\n    MOV_TEX_TRIS(1178, 1229, 2150, 2, 0),\n    MOV_TEX_TRIS(1229, -307, 2560, 0, 1),\n    MOV_TEX_TRIS(1229, 1168, 2560, 1, 1),\n    MOV_TEX_TRIS(1178, 1229, 2560, 2, 1),\n    MOV_TEX_END(),\n    0, // alignment?\n};\n\n// 0x07028888 - 0x070288B0\nconst Gfx ssl_dl_pyramid_sand_pathway_side_end[] = {\n    gsSP2Triangles( 0,  1,  3, 0x0,  1,  4,  3, 0x0),\n    gsSP2Triangles( 1,  2,  4, 0x0,  2,  5,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ssl/areas/3/1/model.inc.c",
    "content": "// 0x0701FD60 - 0x0701FD78\nstatic const Lights1 ssl_seg7_lights_0701FD60 = gdSPDefLights1(\n    0x46, 0x46, 0x46,\n    0x8c, 0x8c, 0x8c, 0x28, 0x28, 0x28\n);\n\n// 0x0701FD78 - 0x0701FD90\nstatic const Lights1 ssl_seg7_lights_0701FD78 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0701FD90 - 0x0701FE50\nstatic const Vtx ssl_seg7_vertex_0701FD90[] = {\n    {{{   947,  -1534,  -1855}, 0, {  4464,  -2076}, {0x21, 0x65, 0x43, 0xff}}},\n    {{{  -946,  -2200,  -1855}, 0, { -3096,    582}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{   947,  -2200,  -1855}, 0, {  4464,    582}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{  -946,  -1534,  -1855}, 0, { -3096,  -2076}, {0xbd, 0x65, 0x21, 0xff}}},\n    {{{  -946,  -1534,  -1855}, 0, {  5078,  -3098}, {0xbd, 0x65, 0x21, 0xff}}},\n    {{{  -946,  -2200,  -3954}, 0, { -3300,   -440}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  -946,  -2200,  -1855}, 0, {  5078,   -440}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  -946,  -1534,  -3954}, 0, { -3300,  -3098}, {0xdf, 0x43, 0x65, 0xff}}},\n    {{{   947,  -1534,  -3954}, 0, {  4772,  -2076}, {0x37, 0x1b, 0x6e, 0xff}}},\n    {{{   947,  -2200,  -1855}, 0, { -3608,    582}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{   947,  -2200,  -3954}, 0, {  4772,    582}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   947,  -1534,  -1855}, 0, { -3608,  -2076}, {0x21, 0x65, 0x43, 0xff}}},\n};\n\n// 0x0701FE50 - 0x0701FF40\nstatic const Vtx ssl_seg7_vertex_0701FE50[] = {\n    {{{  -839,  -1534,  -3426}, 0, {   974,    -36}, {0x84, 0x00, 0x16, 0xff}}},\n    {{{  -839,  -1471,  -3426}, 0, {   974,   -544}, {0xc1, 0x54, 0x45, 0xff}}},\n    {{{  -803,  -1471,  -3549}, 0, {    28,   -544}, {0xab, 0x33, 0xb2, 0xff}}},\n    {{{  -803,  -1534,  -3549}, 0, {   974,    474}, {0xe9, 0x00, 0x84, 0xff}}},\n    {{{  -680,  -1471,  -3514}, 0, {    28,      0}, {0x3f, 0x54, 0xbb, 0xff}}},\n    {{{  -680,  -1534,  -3514}, 0, {    28,    474}, {0x7c, 0x00, 0xe9, 0xff}}},\n    {{{  -803,  -1471,  -3549}, 0, {   974,      0}, {0xab, 0x33, 0xb2, 0xff}}},\n    {{{  -680,  -1534,  -3514}, 0, {   974,    -36}, {0x7c, 0x00, 0xe9, 0xff}}},\n    {{{  -715,  -1471,  -3391}, 0, {    28,   -544}, {0x55, 0x33, 0x4e, 0xff}}},\n    {{{  -715,  -1534,  -3391}, 0, {    28,    -36}, {0x17, 0x00, 0x7c, 0xff}}},\n    {{{  -680,  -1471,  -3514}, 0, {   974,   -544}, {0x3f, 0x54, 0xbb, 0xff}}},\n    {{{  -715,  -1534,  -3391}, 0, {   974,    474}, {0x17, 0x00, 0x7c, 0xff}}},\n    {{{  -715,  -1471,  -3391}, 0, {   974,      0}, {0x55, 0x33, 0x4e, 0xff}}},\n    {{{  -839,  -1471,  -3426}, 0, {    28,      0}, {0xc1, 0x54, 0x45, 0xff}}},\n    {{{  -839,  -1534,  -3426}, 0, {    28,    474}, {0x84, 0x00, 0x16, 0xff}}},\n};\n\n// 0x0701FF40 - 0x07020030\nstatic const Vtx ssl_seg7_vertex_0701FF40[] = {\n    {{{  -574,  -1406,  -3685}, 0, {   974,    990}, {0x73, 0x33, 0x0a, 0xff}}},\n    {{{  -642,  -1406,  -3576}, 0, {   974,    -36}, {0xf7, 0x54, 0x5e, 0xff}}},\n    {{{  -642,  -1534,  -3576}, 0, {    28,    -36}, {0x42, 0x00, 0x6c, 0xff}}},\n    {{{  -839,  -1534,  -3426}, 0, {   974,    -36}, {0x84, 0x00, 0x16, 0xff}}},\n    {{{  -803,  -1471,  -3549}, 0, {    28,   -544}, {0xab, 0x33, 0xb2, 0xff}}},\n    {{{  -803,  -1534,  -3549}, 0, {    28,    -36}, {0xe9, 0x00, 0x84, 0xff}}},\n    {{{  -682,  -1534,  -3753}, 0, {   974,    990}, {0xbe, 0x00, 0x94, 0xff}}},\n    {{{  -750,  -1534,  -3644}, 0, {   974,    -36}, {0x94, 0x00, 0x41, 0xff}}},\n    {{{  -750,  -1406,  -3644}, 0, {    28,    -36}, {0x8d, 0x33, 0xf6, 0xff}}},\n    {{{  -682,  -1406,  -3753}, 0, {    28,    990}, {0x09, 0x54, 0xa2, 0xff}}},\n    {{{  -682,  -1406,  -3753}, 0, {   974,   1500}, {0x09, 0x54, 0xa2, 0xff}}},\n    {{{  -642,  -1406,  -3576}, 0, {    28,    474}, {0xf7, 0x54, 0x5e, 0xff}}},\n    {{{  -574,  -1406,  -3685}, 0, {    28,   1498}, {0x73, 0x33, 0x0a, 0xff}}},\n    {{{  -750,  -1406,  -3644}, 0, {   974,    474}, {0x8d, 0x33, 0xf6, 0xff}}},\n    {{{  -574,  -1534,  -3685}, 0, {    28,    990}, {0x6c, 0x00, 0xbf, 0xff}}},\n};\n\n// 0x07020030 - 0x07020120\nstatic const Vtx ssl_seg7_vertex_07020030[] = {\n    {{{  -539,  -1534,  -3773}, 0, {    28,   2520}, {0x28, 0x00, 0x78, 0xff}}},\n    {{{  -449,  -1342,  -3864}, 0, {   974,    990}, {0x5a, 0x54, 0x1d, 0xff}}},\n    {{{  -539,  -1342,  -3773}, 0, {    28,    990}, {0xdc, 0x33, 0x6d, 0xff}}},\n    {{{  -630,  -1534,  -3864}, 0, {    28,   3032}, {0x88, 0x00, 0x28, 0xff}}},\n    {{{  -539,  -1342,  -3773}, 0, {   974,   1500}, {0xdc, 0x33, 0x6d, 0xff}}},\n    {{{  -630,  -1342,  -3864}, 0, {    28,   1498}, {0xa7, 0x54, 0xe2, 0xff}}},\n    {{{  -539,  -1534,  -3773}, 0, {   974,   3032}, {0x28, 0x00, 0x78, 0xff}}},\n    {{{  -539,  -1534,  -3954}, 0, {    28,   2520}, {0xd9, 0x00, 0x88, 0xff}}},\n    {{{  -630,  -1342,  -3864}, 0, {   974,    990}, {0xa7, 0x54, 0xe2, 0xff}}},\n    {{{  -539,  -1342,  -3954}, 0, {    28,    990}, {0x24, 0x33, 0x93, 0xff}}},\n    {{{  -630,  -1534,  -3864}, 0, {   974,   2520}, {0x88, 0x00, 0x28, 0xff}}},\n    {{{  -449,  -1534,  -3864}, 0, {    28,   3032}, {0x78, 0x00, 0xd8, 0xff}}},\n    {{{  -539,  -1342,  -3954}, 0, {   974,   1500}, {0x24, 0x33, 0x93, 0xff}}},\n    {{{  -449,  -1342,  -3864}, 0, {    28,   1498}, {0x5a, 0x54, 0x1d, 0xff}}},\n    {{{  -539,  -1534,  -3954}, 0, {   974,   3032}, {0xd9, 0x00, 0x88, 0xff}}},\n};\n\n// 0x07020120 - 0x07020210\nstatic const Vtx ssl_seg7_vertex_07020120[] = {\n    {{{   747,  -1534,  -3864}, 0, {   974,   1498}, {0x88, 0x00, 0xd8, 0xff}}},\n    {{{   747,  -1278,  -3864}, 0, {   974,   -544}, {0xa6, 0x54, 0x1d, 0xff}}},\n    {{{   837,  -1278,  -3954}, 0, {    28,   -544}, {0xdc, 0x33, 0x93, 0xff}}},\n    {{{  -539,  -1534,  -3773}, 0, {    28,   2520}, {0x28, 0x00, 0x78, 0xff}}},\n    {{{  -449,  -1534,  -3864}, 0, {   974,   2520}, {0x78, 0x00, 0xd8, 0xff}}},\n    {{{  -449,  -1342,  -3864}, 0, {   974,    990}, {0x5a, 0x54, 0x1d, 0xff}}},\n    {{{   928,  -1534,  -3864}, 0, {   974,   1498}, {0x78, 0x00, 0x28, 0xff}}},\n    {{{   928,  -1278,  -3864}, 0, {   974,   -544}, {0x59, 0x54, 0xe2, 0xff}}},\n    {{{   837,  -1278,  -3773}, 0, {    28,   -544}, {0x24, 0x33, 0x6d, 0xff}}},\n    {{{   837,  -1534,  -3773}, 0, {    28,   1498}, {0xd8, 0x00, 0x78, 0xff}}},\n    {{{   837,  -1534,  -3954}, 0, {   974,   2010}, {0x27, 0x00, 0x88, 0xff}}},\n    {{{   837,  -1278,  -3954}, 0, {   974,      0}, {0xdc, 0x33, 0x93, 0xff}}},\n    {{{   928,  -1278,  -3864}, 0, {    28,      0}, {0x59, 0x54, 0xe2, 0xff}}},\n    {{{   928,  -1534,  -3864}, 0, {    28,   2010}, {0x78, 0x00, 0x28, 0xff}}},\n    {{{   837,  -1534,  -3954}, 0, {    28,   1498}, {0x27, 0x00, 0x88, 0xff}}},\n};\n\n// 0x07020210 - 0x07020300\nstatic const Vtx ssl_seg7_vertex_07020210[] = {\n    {{{  -927,  -1534,  -3864}, 0, {   974,   1498}, {0x88, 0x00, 0xd8, 0xff}}},\n    {{{  -927,  -1278,  -3864}, 0, {   974,   -544}, {0xa7, 0x54, 0x1d, 0xff}}},\n    {{{  -836,  -1278,  -3954}, 0, {    28,   -544}, {0xdc, 0x33, 0x92, 0xff}}},\n    {{{   837,  -1534,  -3773}, 0, {   974,   2010}, {0xd8, 0x00, 0x78, 0xff}}},\n    {{{   837,  -1278,  -3773}, 0, {   974,      0}, {0x24, 0x33, 0x6d, 0xff}}},\n    {{{   747,  -1278,  -3864}, 0, {    28,      0}, {0xa6, 0x54, 0x1d, 0xff}}},\n    {{{   747,  -1534,  -3864}, 0, {    28,   2010}, {0x88, 0x00, 0xd8, 0xff}}},\n    {{{  -746,  -1534,  -3864}, 0, {   974,   1498}, {0x78, 0x00, 0x27, 0xff}}},\n    {{{  -836,  -1278,  -3773}, 0, {    28,   -544}, {0x25, 0x33, 0x6d, 0xff}}},\n    {{{  -836,  -1534,  -3773}, 0, {    28,   1498}, {0xd8, 0x00, 0x78, 0xff}}},\n    {{{  -746,  -1278,  -3864}, 0, {   974,   -544}, {0x59, 0x54, 0xe2, 0xff}}},\n    {{{  -836,  -1534,  -3954}, 0, {   974,   2010}, {0x28, 0x00, 0x88, 0xff}}},\n    {{{  -836,  -1278,  -3954}, 0, {   974,      0}, {0xdc, 0x33, 0x92, 0xff}}},\n    {{{  -746,  -1278,  -3864}, 0, {    28,      0}, {0x59, 0x54, 0xe2, 0xff}}},\n    {{{  -746,  -1534,  -3864}, 0, {    28,   2010}, {0x78, 0x00, 0x27, 0xff}}},\n};\n\n// 0x07020300 - 0x070203F0\nstatic const Vtx ssl_seg7_vertex_07020300[] = {\n    {{{   540,  -1534,  -3954}, 0, {   974,   3032}, {0x27, 0x00, 0x88, 0xff}}},\n    {{{   540,  -1150,  -3954}, 0, {   974,      0}, {0xdc, 0x33, 0x93, 0xff}}},\n    {{{   631,  -1150,  -3864}, 0, {    28,      0}, {0x59, 0x54, 0xe2, 0xff}}},\n    {{{  -927,  -1534,  -3864}, 0, {   974,   1498}, {0x88, 0x00, 0xd8, 0xff}}},\n    {{{  -836,  -1278,  -3954}, 0, {    28,   -544}, {0xdc, 0x33, 0x92, 0xff}}},\n    {{{  -836,  -1534,  -3954}, 0, {    28,   1498}, {0x28, 0x00, 0x88, 0xff}}},\n    {{{  -836,  -1534,  -3773}, 0, {   974,   2010}, {0xd8, 0x00, 0x78, 0xff}}},\n    {{{  -927,  -1278,  -3864}, 0, {    28,      0}, {0xa7, 0x54, 0x1d, 0xff}}},\n    {{{  -927,  -1534,  -3864}, 0, {    28,   2010}, {0x88, 0x00, 0xd8, 0xff}}},\n    {{{  -836,  -1278,  -3773}, 0, {   974,      0}, {0x25, 0x33, 0x6d, 0xff}}},\n    {{{   631,  -1534,  -3864}, 0, {   974,   2520}, {0x78, 0x00, 0x28, 0xff}}},\n    {{{   631,  -1150,  -3864}, 0, {   974,   -544}, {0x59, 0x54, 0xe2, 0xff}}},\n    {{{   540,  -1150,  -3773}, 0, {    28,   -544}, {0x24, 0x33, 0x6d, 0xff}}},\n    {{{   540,  -1534,  -3773}, 0, {    28,   2520}, {0xd8, 0x00, 0x78, 0xff}}},\n    {{{   631,  -1534,  -3864}, 0, {    28,   3032}, {0x78, 0x00, 0x28, 0xff}}},\n};\n\n// 0x070203F0 - 0x070204E0\nstatic const Vtx ssl_seg7_vertex_070203F0[] = {\n    {{{   307,  -1534,  -3954}, 0, {  2156,    786}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{   307,  -1330,  -3954}, 0, {  2156,      0}, {0x21, 0x43, 0x65, 0xff}}},\n    {{{   307,  -1330,  -3545}, 0, {   520,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{   450,  -1534,  -3864}, 0, {   974,   2520}, {0x88, 0x00, 0xd8, 0xff}}},\n    {{{   540,  -1150,  -3954}, 0, {    28,   -544}, {0xdc, 0x33, 0x93, 0xff}}},\n    {{{   540,  -1534,  -3954}, 0, {    28,   2520}, {0x27, 0x00, 0x88, 0xff}}},\n    {{{   450,  -1150,  -3864}, 0, {   974,   -544}, {0xa6, 0x54, 0x1d, 0xff}}},\n    {{{   540,  -1534,  -3773}, 0, {   974,   3032}, {0xd8, 0x00, 0x78, 0xff}}},\n    {{{   540,  -1150,  -3773}, 0, {   974,      0}, {0x24, 0x33, 0x6d, 0xff}}},\n    {{{   450,  -1150,  -3864}, 0, {    28,      0}, {0xa6, 0x54, 0x1d, 0xff}}},\n    {{{   450,  -1534,  -3864}, 0, {    28,   3032}, {0x88, 0x00, 0xd8, 0xff}}},\n    {{{  -306,  -1534,  -3545}, 0, {   990,    786}, {0xdf, 0x65, 0x43, 0xff}}},\n    {{{  -306,  -1330,  -3545}, 0, {   990,      0}, {0xac, 0x54, 0x2a, 0xff}}},\n    {{{  -306,  -1534,  -3954}, 0, {  -644,    786}, {0xac, 0x2a, 0x54, 0xff}}},\n    {{{  -306,  -1330,  -3954}, 0, {  -644,      0}, {0xda, 0x26, 0x72, 0xff}}},\n};\n\n// 0x070204E0 - 0x07020550\nstatic const Vtx ssl_seg7_vertex_070204E0[] = {\n    {{{   307,  -1330,  -3545}, 0, {   950,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  -306,  -1330,  -3545}, 0, { -1502,      0}, {0xac, 0x54, 0x2a, 0xff}}},\n    {{{  -306,  -1534,  -3545}, 0, { -1502,    786}, {0xdf, 0x65, 0x43, 0xff}}},\n    {{{   307,  -1534,  -3954}, 0, {  2156,    786}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{   307,  -1330,  -3545}, 0, {   520,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{   307,  -1534,  -3545}, 0, {   520,    786}, {0x26, 0x72, 0x26, 0xff}}},\n    {{{   307,  -1534,  -3545}, 0, {   950,    786}, {0x26, 0x72, 0x26, 0xff}}},\n};\n\n// 0x07020550 - 0x070205D0\nstatic const Vtx ssl_seg7_vertex_07020550[] = {\n    {{{ -2559,   -409,   -370}, 0, { -9228,   7682}, {0x43, 0x9b, 0xdf, 0xff}}},\n    {{{   192,   -409,  -1664}, 0, {  1756,   2518}, {0x4a, 0x9d, 0x18, 0xff}}},\n    {{{  2560,   -409,   -370}, 0, { 11210,   7682}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{  -191,   -409,  -1664}, 0, {   224,   2518}, {0xc3, 0xa4, 0x3d, 0xff}}},\n    {{{ -2559,   -409,  -3954}, 0, { -9228,  -6624}, {0x18, 0xb6, 0x63, 0xff}}},\n    {{{  2560,   -409,  -3954}, 0, { 11210,  -6624}, {0xd6, 0xac, 0x54, 0xff}}},\n    {{{   192,   -409,  -2432}, 0, {  1756,   -546}, {0xd6, 0xac, 0x54, 0xff}}},\n    {{{  -191,   -409,  -2432}, 0, {   224,   -546}, {0x26, 0x8e, 0x26, 0xff}}},\n};\n\n// 0x070205D0 - 0x070206C0\nstatic const Vtx ssl_seg7_vertex_070205D0[] = {\n    {{{  -449,  -1342,  -3864}, 0, {     0,    990}, {0x5a, 0x54, 0x1d, 0xff}}},\n    {{{  -539,  -1342,  -3954}, 0, {   480,    990}, {0x24, 0x33, 0x93, 0xff}}},\n    {{{  -630,  -1342,  -3864}, 0, {   480,    478}, {0xa7, 0x54, 0xe2, 0xff}}},\n    {{{  -839,  -1471,  -3426}, 0, {     0,    990}, {0xc1, 0x54, 0x45, 0xff}}},\n    {{{  -680,  -1471,  -3514}, 0, {   480,    478}, {0x3f, 0x54, 0xbb, 0xff}}},\n    {{{  -803,  -1471,  -3549}, 0, {     0,    478}, {0xab, 0x33, 0xb2, 0xff}}},\n    {{{  -715,  -1471,  -3391}, 0, {   480,    990}, {0x55, 0x33, 0x4e, 0xff}}},\n    {{{  -642,  -1406,  -3576}, 0, {     0,    990}, {0xf7, 0x54, 0x5e, 0xff}}},\n    {{{  -750,  -1534,  -3644}, 0, {   480,    478}, {0x94, 0x00, 0x41, 0xff}}},\n    {{{  -642,  -1534,  -3576}, 0, {     0,    478}, {0x42, 0x00, 0x6c, 0xff}}},\n    {{{  -750,  -1406,  -3644}, 0, {   480,    990}, {0x8d, 0x33, 0xf6, 0xff}}},\n    {{{  -574,  -1534,  -3685}, 0, {     0,    478}, {0x6c, 0x00, 0xbf, 0xff}}},\n    {{{  -682,  -1406,  -3753}, 0, {   480,    990}, {0x09, 0x54, 0xa2, 0xff}}},\n    {{{  -574,  -1406,  -3685}, 0, {     0,    990}, {0x73, 0x33, 0x0a, 0xff}}},\n    {{{  -682,  -1534,  -3753}, 0, {   480,    478}, {0xbe, 0x00, 0x94, 0xff}}},\n};\n\n// 0x070206C0 - 0x070207B0\nstatic const Vtx ssl_seg7_vertex_070206C0[] = {\n    {{{   631,  -1150,  -3864}, 0, {     0,    990}, {0x59, 0x54, 0xe2, 0xff}}},\n    {{{   540,  -1150,  -3954}, 0, {   480,    990}, {0xdc, 0x33, 0x93, 0xff}}},\n    {{{   450,  -1150,  -3864}, 0, {   480,    478}, {0xa6, 0x54, 0x1d, 0xff}}},\n    {{{  -449,  -1342,  -3864}, 0, {     0,    990}, {0x5a, 0x54, 0x1d, 0xff}}},\n    {{{  -630,  -1342,  -3864}, 0, {   480,    478}, {0xa7, 0x54, 0xe2, 0xff}}},\n    {{{  -539,  -1342,  -3773}, 0, {     0,    478}, {0xdc, 0x33, 0x6d, 0xff}}},\n    {{{   928,  -1278,  -3864}, 0, {     0,    990}, {0x59, 0x54, 0xe2, 0xff}}},\n    {{{   747,  -1278,  -3864}, 0, {   480,    478}, {0xa6, 0x54, 0x1d, 0xff}}},\n    {{{   837,  -1278,  -3773}, 0, {     0,    478}, {0x24, 0x33, 0x6d, 0xff}}},\n    {{{   837,  -1278,  -3954}, 0, {   480,    990}, {0xdc, 0x33, 0x93, 0xff}}},\n    {{{  -746,  -1278,  -3864}, 0, {     0,    990}, {0x59, 0x54, 0xe2, 0xff}}},\n    {{{  -836,  -1278,  -3954}, 0, {   480,    990}, {0xdc, 0x33, 0x92, 0xff}}},\n    {{{  -927,  -1278,  -3864}, 0, {   480,    478}, {0xa7, 0x54, 0x1d, 0xff}}},\n    {{{  -836,  -1278,  -3773}, 0, {     0,    478}, {0x25, 0x33, 0x6d, 0xff}}},\n    {{{   540,  -1150,  -3773}, 0, {     0,    478}, {0x24, 0x33, 0x6d, 0xff}}},\n};\n\n// 0x070207B0 - 0x07020870\nstatic const Vtx ssl_seg7_vertex_070207B0[] = {\n    {{{   307,  -1330,  -3954}, 0, {  -234,   4872}, {0x21, 0x43, 0x65, 0xff}}},\n    {{{  -306,  -1330,  -3954}, 0, {  2216,   4872}, {0xda, 0x26, 0x72, 0xff}}},\n    {{{  -306,  -1330,  -3545}, 0, {  2216,   3236}, {0xac, 0x54, 0x2a, 0xff}}},\n    {{{   307,  -1330,  -3545}, 0, {  -234,   3236}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  -946,  -1534,  -1855}, 0, {  4772,  -3506}, {0xbd, 0x65, 0x21, 0xff}}},\n    {{{   947,  -1534,  -1855}, 0, { -2790,  -3506}, {0x21, 0x65, 0x43, 0xff}}},\n    {{{   307,  -1534,  -3545}, 0, {  -234,   3236}, {0x26, 0x72, 0x26, 0xff}}},\n    {{{   947,  -1534,  -3954}, 0, { -2790,   4872}, {0x37, 0x1b, 0x6e, 0xff}}},\n    {{{   307,  -1534,  -3954}, 0, {  -234,   4872}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{  -306,  -1534,  -3545}, 0, {  2216,   3236}, {0xdf, 0x65, 0x43, 0xff}}},\n    {{{  -946,  -1534,  -3954}, 0, {  4772,   4872}, {0xdf, 0x43, 0x65, 0xff}}},\n    {{{  -306,  -1534,  -3954}, 0, {  2216,   4872}, {0xac, 0x2a, 0x54, 0xff}}},\n};\n\n// 0x07020870 - 0x07020950\nstatic const Vtx ssl_seg7_vertex_07020870[] = {\n    {{{  2560,  -2200,  -3954}, 0, { 11210,   3030}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{   947,  -1534,  -3954}, 0, {  4772,    374}, {0x37, 0x1b, 0x6e, 0xff}}},\n    {{{   947,  -2200,  -3954}, 0, {  4772,   3030}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2559,  -2200,   -370}, 0, { 11210,    988}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{ -2559,   -409,   -370}, 0, { 11210,  -6164}, {0x43, 0x9b, 0xdf, 0xff}}},\n    {{{  2560,   -409,   -370}, 0, { -9228,  -6164}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{  2560,  -2200,   -370}, 0, { -9228,    988}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{ -2559,   -409,  -3954}, 0, { -9228,  -4120}, {0x18, 0xb6, 0x63, 0xff}}},\n    {{{  -946,  -1534,  -3954}, 0, { -2790,    374}, {0xdf, 0x43, 0x65, 0xff}}},\n    {{{  -306,  -1534,  -3954}, 0, {  -234,    374}, {0xac, 0x2a, 0x54, 0xff}}},\n    {{{ -2559,  -2200,  -3954}, 0, { -9228,   3030}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -946,  -2200,  -3954}, 0, { -2790,   3030}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  -306,  -1330,  -3954}, 0, {  -234,   -442}, {0xda, 0x26, 0x72, 0xff}}},\n    {{{  2560,   -409,  -3954}, 0, { 11210,  -4120}, {0xd6, 0xac, 0x54, 0xff}}},\n};\n\n// 0x07020950 - 0x07020A20\nstatic const Vtx ssl_seg7_vertex_07020950[] = {\n    {{{  2560,  -2200,   -370}, 0, {  8144,   2008}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{  2560,   -409,   -370}, 0, {  8144,  -5142}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{  2560,   -409,  -3954}, 0, { -6162,  -5142}, {0xd6, 0xac, 0x54, 0xff}}},\n    {{{   947,  -1534,  -3954}, 0, {  4772,    374}, {0x37, 0x1b, 0x6e, 0xff}}},\n    {{{   307,  -1330,  -3954}, 0, {  2216,   -442}, {0x21, 0x43, 0x65, 0xff}}},\n    {{{   307,  -1534,  -3954}, 0, {  2216,    374}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{  2560,   -409,  -3954}, 0, { 11210,  -4120}, {0xd6, 0xac, 0x54, 0xff}}},\n    {{{  -306,  -1330,  -3954}, 0, {  -234,   -442}, {0xda, 0x26, 0x72, 0xff}}},\n    {{{ -2559,  -2200,  -3954}, 0, {  8144,   2008}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2559,   -409,  -3954}, 0, {  8144,  -5142}, {0x18, 0xb6, 0x63, 0xff}}},\n    {{{ -2559,   -409,   -370}, 0, { -6162,  -5142}, {0x43, 0x9b, 0xdf, 0xff}}},\n    {{{ -2559,  -2200,   -370}, 0, { -6162,   2008}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  2560,  -2200,  -3954}, 0, { -6162,   2008}, {0xc8, 0x00, 0x71, 0xff}}},\n};\n\n// 0x07020A20 - 0x07020B20\nstatic const Vtx ssl_seg7_vertex_07020A20[] = {\n    {{{  -127,    640,   -255}, 0, {     0,      0}, {0x21, 0xbd, 0x65, 0xff}}},\n    {{{   128,    640,  -1023}, 0, {   990,   3032}, {0xb7, 0xb7, 0xb7, 0xff}}},\n    {{{   128,    640,   -255}, 0, {   990,      0}, {0xda, 0xda, 0x72, 0xff}}},\n    {{{   128,    384,  -1023}, 0, {  3034,  -1054}, {0xcd, 0x33, 0x99, 0xff}}},\n    {{{   192,    768,  -1023}, 0, {  3034,  -2588}, {0xe3, 0xe3, 0x89, 0xff}}},\n    {{{   192,    384,  -1023}, 0, {  3034,  -1054}, {0x00, 0x57, 0xa5, 0xff}}},\n    {{{   128,    640,  -1023}, 0, {  3034,  -2076}, {0xb7, 0xb7, 0xb7, 0xff}}},\n    {{{  -127,    640,  -1023}, 0, {  3034,  -2076}, {0x37, 0xe5, 0x92, 0xff}}},\n    {{{  -191,    768,  -1023}, 0, {  3034,  -2588}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{  -191,    384,  -1023}, 0, {  3034,  -1054}, {0x00, 0x2b, 0x89, 0xff}}},\n    {{{  -127,    384,  -1023}, 0, {  3034,  -1054}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{   128,    640,  -1023}, 0, { -2074,      0}, {0xb7, 0xb7, 0xb7, 0xff}}},\n    {{{   128,    384,  -1023}, 0, { -2074,    990}, {0xcd, 0x33, 0x99, 0xff}}},\n    {{{   128,    384,   -255}, 0, {   990,    990}, {0xc3, 0x3d, 0x5c, 0xff}}},\n    {{{  -127,    384,   -255}, 0, {     0,    990}, {0x43, 0x21, 0x65, 0xff}}},\n    {{{  -127,    640,  -1023}, 0, {  3034,      0}, {0x37, 0xe5, 0x92, 0xff}}},\n};\n\n// 0x07020B20 - 0x07020C20\nstatic const Vtx ssl_seg7_vertex_07020B20[] = {\n    {{{  -127,    384,   -255}, 0, {     0,    990}, {0x43, 0x21, 0x65, 0xff}}},\n    {{{  -127,    384,  -1023}, 0, {  3034,    990}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  -127,    640,  -1023}, 0, {  3034,      0}, {0x37, 0xe5, 0x92, 0xff}}},\n    {{{   192,   -409,  -1664}, 0, {  -540,    -30}, {0x4a, 0x9d, 0x18, 0xff}}},\n    {{{   192,   -664,  -1664}, 0, {  -542,    990}, {0x33, 0xcd, 0x67, 0xff}}},\n    {{{   192,   -664,  -2048}, 0, {   990,    990}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{   192,   -562,  -2048}, 0, {   990,    584}, {0x5a, 0x0d, 0xa8, 0xff}}},\n    {{{   192,   -409,  -1998}, 0, {   794,    -30}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -191,   -664,  -2048}, 0, {  -540,    990}, {0x8e, 0xda, 0xda, 0xff}}},\n    {{{  -191,   -409,  -1664}, 0, {   990,    -30}, {0xc3, 0xa4, 0x3d, 0xff}}},\n    {{{  -191,   -409,  -1998}, 0, {  -344,    -30}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -191,   -562,  -2048}, 0, {  -540,    584}, {0xe1, 0x13, 0x87, 0xff}}},\n    {{{  -191,   -664,  -1664}, 0, {   990,    990}, {0xcd, 0x99, 0x33, 0xff}}},\n    {{{   192,   -409,  -2432}, 0, {  1502,   4668}, {0xd6, 0xac, 0x54, 0xff}}},\n    {{{  -191,    768,  -2432}, 0, {     0,      0}, {0x54, 0xd6, 0x54, 0xff}}},\n    {{{  -191,   -409,  -2432}, 0, {     0,   4668}, {0x26, 0x8e, 0x26, 0xff}}},\n};\n\n// 0x07020C20 - 0x07020D10\nstatic const Vtx ssl_seg7_vertex_07020C20[] = {\n    {{{  -191,   -409,  -1664}, 0, {     0,      0}, {0xc3, 0xa4, 0x3d, 0xff}}},\n    {{{  -191,   -664,  -1664}, 0, {     0,    988}, {0xcd, 0x99, 0x33, 0xff}}},\n    {{{   192,   -664,  -1664}, 0, {  1502,    988}, {0x33, 0xcd, 0x67, 0xff}}},\n    {{{   192,   -409,  -1664}, 0, {  1502,      0}, {0x4a, 0x9d, 0x18, 0xff}}},\n    {{{  -191,   -409,  -1855}, 0, {  3292,   4668}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -191,    768,  -2432}, 0, {  5592,      0}, {0x54, 0xd6, 0x54, 0xff}}},\n    {{{  -191,    768,  -1023}, 0, {     0,      0}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{  -191,   -409,  -2432}, 0, {  5592,   4668}, {0x26, 0x8e, 0x26, 0xff}}},\n    {{{  -191,    256,  -1023}, 0, {     0,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   192,   -409,  -2432}, 0, {  1502,   4668}, {0xd6, 0xac, 0x54, 0xff}}},\n    {{{   192,    768,  -2432}, 0, {  1502,      0}, {0x9b, 0xbd, 0x21, 0xff}}},\n    {{{  -191,    768,  -2432}, 0, {     0,      0}, {0x54, 0xd6, 0x54, 0xff}}},\n    {{{   192,    768,  -2432}, 0, {  1502,   3032}, {0x9b, 0xbd, 0x21, 0xff}}},\n    {{{   192,    768,  -1023}, 0, {  1502,  -2590}, {0xe3, 0xe3, 0x89, 0xff}}},\n    {{{  -191,    768,  -1023}, 0, {     0,  -2590}, {0x49, 0xb7, 0xb7, 0xff}}},\n};\n\n// 0x07020D10 - 0x07020E00\nstatic const Vtx ssl_seg7_vertex_07020D10[] = {\n    {{{   192,    768,  -2432}, 0, { -1052,  -1054}, {0x9b, 0xbd, 0x21, 0xff}}},\n    {{{   192,   -409,  -2432}, 0, { -1052,   3646}, {0xd6, 0xac, 0x54, 0xff}}},\n    {{{   192,   -409,  -1855}, 0, {  1246,   3646}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   192,    256,  -1023}, 0, {  4570,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   192,    768,  -1023}, 0, {  4570,  -1054}, {0xe3, 0xe3, 0x89, 0xff}}},\n    {{{  -191,   -562,  -2048}, 0, {   990,    584}, {0xe1, 0x13, 0x87, 0xff}}},\n    {{{   192,   -562,  -2048}, 0, {  -542,    584}, {0x5a, 0x0d, 0xa8, 0xff}}},\n    {{{   192,   -664,  -2048}, 0, {  -542,    990}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{  -191,   -664,  -2048}, 0, {   990,    990}, {0x8e, 0xda, 0xda, 0xff}}},\n    {{{   192,    768,  -2432}, 0, {  1502,   3032}, {0x9b, 0xbd, 0x21, 0xff}}},\n    {{{  -191,    768,  -1023}, 0, {     0,  -2590}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{  -191,    768,  -2432}, 0, {     0,   3032}, {0x54, 0xd6, 0x54, 0xff}}},\n    {{{  -383,    896,   -255}, 0, {  -542,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -127,    640,   -255}, 0, {   480,    990}, {0x21, 0xbd, 0x65, 0xff}}},\n    {{{   128,    640,   -255}, 0, {  1502,    990}, {0xda, 0xda, 0x72, 0xff}}},\n};\n\n// 0x07020E00 - 0x07020EB0\nstatic const Vtx ssl_seg7_vertex_07020E00[] = {\n    {{{  -127,    640,   -255}, 0, {     0,      0}, {0x21, 0xbd, 0x65, 0xff}}},\n    {{{  -127,    640,  -1023}, 0, {     0,   3032}, {0x37, 0xe5, 0x92, 0xff}}},\n    {{{   128,    640,  -1023}, 0, {   990,   3032}, {0xb7, 0xb7, 0xb7, 0xff}}},\n    {{{   384,   -229,   -255}, 0, {  2524,   4462}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   128,    384,   -255}, 0, {  1502,   2010}, {0xc3, 0x3d, 0x5c, 0xff}}},\n    {{{  -127,    384,   -255}, 0, {   480,   2010}, {0x43, 0x21, 0x65, 0xff}}},\n    {{{   384,    896,   -255}, 0, {  2524,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -383,   -229,   -255}, 0, {  -542,   4462}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -127,    640,   -255}, 0, {   480,    990}, {0x21, 0xbd, 0x65, 0xff}}},\n    {{{  -383,    896,   -255}, 0, {  -542,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   128,    640,   -255}, 0, {  1502,    990}, {0xda, 0xda, 0x72, 0xff}}},\n};\n\n// 0x07020EB0 - 0x07020FB0\nstatic const Vtx ssl_seg7_vertex_07020EB0[] = {\n    {{{  -191,    286,  -1222}, 0, {  2522,   1258}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{  -191,    384,  -1023}, 0, {  2522,      0}, {0x00, 0x2b, 0x89, 0xff}}},\n    {{{   192,    384,  -1023}, 0, {  -540,      0}, {0x00, 0x57, 0xa5, 0xff}}},\n    {{{   192,    286,  -1222}, 0, {  -540,   1258}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{  -191,    188,  -1421}, 0, {  2522,   2552}, {0x00, 0x6e, 0xc2, 0xff}}},\n    {{{   192,    188,  -1421}, 0, {  -540,   2552}, {0x00, 0x6e, 0xc2, 0xff}}},\n    {{{   192,   -275,  -1956}, 0, {  -540,   -104}, {0x00, 0x3d, 0x92, 0xff}}},\n    {{{  -191,   -562,  -2048}, 0, {  2522,   2450}, {0xe1, 0x13, 0x87, 0xff}}},\n    {{{  -191,   -275,  -1956}, 0, {  2522,   -104}, {0x00, 0x3d, 0x92, 0xff}}},\n    {{{  -191,    -13,  -1731}, 0, {  2524,   2208}, {0x00, 0x5f, 0xad, 0xff}}},\n    {{{   192,    188,  -1421}, 0, {  -540,   -508}, {0x00, 0x6e, 0xc2, 0xff}}},\n    {{{   192,    -13,  -1731}, 0, {  -540,   2208}, {0x00, 0x5f, 0xad, 0xff}}},\n    {{{  -191,    188,  -1421}, 0, {  2524,   -508}, {0x00, 0x6e, 0xc2, 0xff}}},\n    {{{   192,   -275,  -1956}, 0, {  -542,   2010}, {0x00, 0x3d, 0x92, 0xff}}},\n    {{{  -191,    -13,  -1731}, 0, {  2524,   -804}, {0x00, 0x5f, 0xad, 0xff}}},\n    {{{   192,    -13,  -1731}, 0, {  -542,   -804}, {0x00, 0x5f, 0xad, 0xff}}},\n};\n\n// 0x07020FB0 - 0x07021090\nstatic const Vtx ssl_seg7_vertex_07020FB0[] = {\n    {{{   192,   -275,  -1956}, 0, {  -542,   2010}, {0x00, 0x3d, 0x92, 0xff}}},\n    {{{  -191,   -275,  -1956}, 0, {  2524,   2010}, {0x00, 0x3d, 0x92, 0xff}}},\n    {{{  -191,    -13,  -1731}, 0, {  2524,   -804}, {0x00, 0x5f, 0xad, 0xff}}},\n    {{{  -191,   -664,  -1664}, 0, {  2522,   5220}, {0xcd, 0x99, 0x33, 0xff}}},\n    {{{   192,   -664,  -2048}, 0, {  -540,   6352}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{   192,   -664,  -1664}, 0, {  -540,   5220}, {0x33, 0xcd, 0x67, 0xff}}},\n    {{{  -191,   -664,  -2048}, 0, {  2522,   6352}, {0x8e, 0xda, 0xda, 0xff}}},\n    {{{   128,    384,   -255}, 0, {     0,  -4120}, {0xc3, 0x3d, 0x5c, 0xff}}},\n    {{{  -127,    384,  -1023}, 0, {  2012,   2010}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  -127,    384,   -255}, 0, {  2012,  -4120}, {0x43, 0x21, 0x65, 0xff}}},\n    {{{   192,   -275,  -1956}, 0, {  -540,   -104}, {0x00, 0x3d, 0x92, 0xff}}},\n    {{{   192,   -562,  -2048}, 0, {  -540,   2450}, {0x5a, 0x0d, 0xa8, 0xff}}},\n    {{{  -191,   -562,  -2048}, 0, {  2522,   2450}, {0xe1, 0x13, 0x87, 0xff}}},\n    {{{   128,    384,  -1023}, 0, {     0,   2010}, {0xcd, 0x33, 0x99, 0xff}}},\n};\n\n// 0x07021090 - 0x07021150\nstatic const Vtx ssl_seg7_vertex_07021090[] = {\n    {{{    64,    512,  -2426}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -63,    384,  -2426}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    64,    384,  -2426}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -63,    512,  -2426}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,  -1048,  -3949}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -639,  -1048,  -3949}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -639,  -1176,  -3949}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,  -1176,  -3949}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   640,  -1048,  -3949}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   512,  -1176,  -3949}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   640,  -1176,  -3949}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   512,  -1048,  -3949}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07021150 - 0x07021250\nstatic const Vtx ssl_seg7_vertex_07021150[] = {\n    {{{  -204,  -1330,  -3903}, 0, {  1502,    734}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{   205,  -1176,  -3903}, 0, {  -542,      0}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{   205,  -1330,  -3903}, 0, {  -542,    734}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{   205,  -1330,  -3903}, 0, {  1500,    734}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{   205,  -1176,  -3596}, 0, {     0,      0}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{   205,  -1330,  -3596}, 0, {     0,    734}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{   205,  -1176,  -3903}, 0, {  1500,      0}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{   205,  -1330,  -3596}, 0, {  2012,    734}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  -204,  -1176,  -3596}, 0, {     0,      0}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  -204,  -1330,  -3596}, 0, {     0,    734}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{   205,  -1176,  -3596}, 0, {  2012,      0}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{  -204,  -1330,  -3596}, 0, {   990,    734}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  -204,  -1176,  -3596}, 0, {   990,      0}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  -204,  -1176,  -3903}, 0, {  -542,      0}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{  -204,  -1330,  -3903}, 0, {  -540,    734}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  -204,  -1176,  -3903}, 0, {  1500,      0}, {0x99, 0x33, 0xcd, 0xff}}},\n};\n\n// 0x07021250 - 0x07021290\nstatic const Vtx ssl_seg7_vertex_07021250[] = {\n    {{{   205,  -1176,  -3903}, 0, {     0,    990}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{  -204,  -1176,  -3903}, 0, {   990,    990}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{  -204,  -1176,  -3596}, 0, {   990,      0}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{   205,  -1176,  -3596}, 0, {     0,      0}, {0x67, 0x33, 0x33, 0xff}}},\n};\n\n// 0x07021290 - 0x070214E8\nstatic const Gfx ssl_seg7_dl_07021290[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ssl_seg7_lights_0701FD60.l, 1),\n    gsSPLight(&ssl_seg7_lights_0701FD60.a, 2),\n    gsSPVertex(ssl_seg7_vertex_0701FD90, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPLight(&ssl_seg7_lights_0701FD78.l, 1),\n    gsSPLight(&ssl_seg7_lights_0701FD78.a, 2),\n    gsSPVertex(ssl_seg7_vertex_0701FE50, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0701FF40, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07020030, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07020120, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07020210, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07020300, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070203F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070204E0, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  2,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070214E8 - 0x07021638\nstatic const Gfx ssl_seg7_dl_070214E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_0900A800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ssl_seg7_lights_0701FD60.l, 1),\n    gsSPLight(&ssl_seg7_lights_0701FD60.a, 2),\n    gsSPVertex(ssl_seg7_vertex_07020550, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 0,  3,  1, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles( 1,  6,  5, 0x0,  3,  4,  7, 0x0),\n    gsSP2Triangles( 5,  7,  4, 0x0,  5,  6,  7, 0x0),\n    gsSPLight(&ssl_seg7_lights_0701FD78.l, 1),\n    gsSPLight(&ssl_seg7_lights_0701FD78.a, 2),\n    gsSPVertex(ssl_seg7_vertex_070205D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070206C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070207B0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  4,  6,  9, 0x0),\n    gsSP2Triangles(10,  4,  9, 0x0, 10,  9, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07021638 - 0x07021870\nstatic const Gfx ssl_seg7_dl_07021638[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ssl_seg7_lights_0701FD60.l, 1),\n    gsSPLight(&ssl_seg7_lights_0701FD60.a, 2),\n    gsSPVertex(ssl_seg7_vertex_07020870, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0,  8,  7, 10, 0x0),\n    gsSP2Triangles( 7,  9, 12, 0x0, 13,  7, 12, 0x0),\n    gsSP1Triangle( 0, 13,  1, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07020950, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle( 0,  2, 12, 0x0),\n    gsSPLight(&ssl_seg7_lights_0701FD78.l, 1),\n    gsSPLight(&ssl_seg7_lights_0701FD78.a, 2),\n    gsSPVertex(ssl_seg7_vertex_07020A20, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  9,  7, 10, 0x0),\n    gsSP2Triangles( 9,  8,  7, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13,  2, 0x0, 14, 15,  0, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07020B20, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  3,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 8, 12,  9, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07020C20, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 4,  6,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07020D10, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07020E00, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  4,  3, 0x0,  3,  5,  7, 0x0),\n    gsSP2Triangles( 7,  5,  8, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 6, 10,  4, 0x0,  9, 10,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07021870 - 0x07021910\nstatic const Gfx ssl_seg7_dl_07021870[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ssl_seg7_vertex_07020EB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  0,  5, 0x0,  0,  3,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07020FB0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  7, 13,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07021910 - 0x07021968\nstatic const Gfx ssl_seg7_dl_07021910[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ssl_seg7_texture_07001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ssl_seg7_vertex_07021090, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07021968 - 0x070219D0\nstatic const Gfx ssl_seg7_dl_07021968[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ssl_seg7_vertex_07021150, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070219D0 - 0x07021A08\nstatic const Gfx ssl_seg7_dl_070219D0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ssl_seg7_vertex_07021250, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07021A08 - 0x07021AC8\nconst Gfx ssl_seg7_dl_07021A08[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ssl_seg7_dl_07021290),\n    gsSPDisplayList(ssl_seg7_dl_070214E8),\n    gsSPDisplayList(ssl_seg7_dl_07021638),\n    gsSPDisplayList(ssl_seg7_dl_07021870),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ssl_seg7_dl_07021910),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ssl_seg7_dl_07021968),\n    gsSPDisplayList(ssl_seg7_dl_070219D0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ssl/areas/3/2/model.inc.c",
    "content": "// 0x07021AC8 - 0x07021AE0\nstatic const Lights1 ssl_seg7_lights_07021AC8 = gdSPDefLights1(\n    0x46, 0x46, 0x46,\n    0x8c, 0x8c, 0x8c, 0x28, 0x28, 0x28\n);\n\n// 0x07021AE0 - 0x07021BA0\nstatic const Vtx ssl_seg7_vertex_07021AE0[] = {\n    {{{   947,  -3224,  -1855}, 0, { -3608,   4668}, {0x71, 0x00, 0x38, 0x00}}},\n    {{{   947,  -3224,  -3954}, 0, {  4772,   4668}, {0x59, 0x00, 0x59, 0x00}}},\n    {{{   947,  -2200,  -3954}, 0, {  4772,    582}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   947,  -2200,  -1855}, 0, { -3608,    582}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  -946,  -3224,  -3954}, 0, { -3300,   3646}, {0x8f, 0x00, 0x38, 0x00}}},\n    {{{  -946,  -3224,  -1855}, 0, {  5078,   3646}, {0xc8, 0x00, 0x71, 0x00}}},\n    {{{  -946,  -2200,  -1855}, 0, {  5078,   -440}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  -946,  -2200,  -3954}, 0, { -3300,   -440}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  -946,  -3224,  -1855}, 0, { -3096,   4668}, {0xc8, 0x00, 0x71, 0x00}}},\n    {{{   947,  -2200,  -1855}, 0, {  4464,    582}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  -946,  -2200,  -1855}, 0, { -3096,    582}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{   947,  -3224,  -1855}, 0, {  4464,   4668}, {0x71, 0x00, 0x38, 0x00}}},\n};\n\n// 0x07021BA0 - 0x07021C90\nstatic const Vtx ssl_seg7_vertex_07021BA0[] = {\n    {{{ -2559,  -3224,  -3954}, 0, { -9228,   7120}, {0x59, 0x00, 0x59, 0x00}}},\n    {{{  -946,  -3224,  -3954}, 0, { -2790,   7120}, {0x8f, 0x00, 0x38, 0x00}}},\n    {{{  -946,  -2200,  -3954}, 0, { -2790,   3032}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  2560,  -2200,  -3954}, 0, { -6162,    990}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  2560,  -3224,  -3954}, 0, { -6162,   5076}, {0xc8, 0x00, 0x71, 0x00}}},\n    {{{  2560,  -3224,   -370}, 0, {  8144,   5076}, {0x8f, 0x00, 0xc8, 0x00}}},\n    {{{  2560,  -2200,   -370}, 0, {  8144,    990}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -2559,  -2200,   -370}, 0, { -7184,   2010}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{ -2559,  -3224,   -370}, 0, { -7184,   6098}, {0x38, 0x00, 0x8f, 0x00}}},\n    {{{ -2559,  -3224,  -3954}, 0, {  7122,   6098}, {0x59, 0x00, 0x59, 0x00}}},\n    {{{ -2559,  -2200,  -3954}, 0, {  7122,   2010}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   947,  -2200,  -3954}, 0, {  4772,   3032}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2560,  -3224,  -3954}, 0, { 11210,   7120}, {0xc8, 0x00, 0x71, 0x00}}},\n    {{{  2560,  -2200,  -3954}, 0, { 11210,   3032}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{   947,  -3224,  -3954}, 0, {  4772,   7120}, {0x59, 0x00, 0x59, 0x00}}},\n};\n\n// 0x07021C90 - 0x07021D00\nstatic const Vtx ssl_seg7_vertex_07021C90[] = {\n    {{{  2560,  -2200,   -370}, 0, { -9228,    990}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  2560,  -3224,   -370}, 0, { -9228,   5076}, {0x8f, 0x00, 0xc8, 0x00}}},\n    {{{ -2559,  -3224,   -370}, 0, { 11210,   5076}, {0x38, 0x00, 0x8f, 0x00}}},\n    {{{ -2559,  -3224,  -3954}, 0, { -9228,   7120}, {0x59, 0x00, 0x59, 0x00}}},\n    {{{  -946,  -2200,  -3954}, 0, { -2790,   3032}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{ -2559,  -2200,  -3954}, 0, { -9228,   3032}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2559,  -2200,   -370}, 0, { 11210,    990}, {0x71, 0x00, 0xc8, 0xff}}},\n};\n\n// 0x07021D00 - 0x07021D68\nstatic const Gfx ssl_seg7_dl_07021D00[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ssl_seg7_lights_07021AC8.l, 1),\n    gsSPLight(&ssl_seg7_lights_07021AC8.a, 2),\n    gsSPVertex(ssl_seg7_vertex_07021AE0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07021D68 - 0x07021DE8\nstatic const Gfx ssl_seg7_dl_07021D68[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ssl_seg7_vertex_07021BA0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07021C90, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  2,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07021DE8 - 0x07021E50\nconst Gfx ssl_seg7_dl_07021DE8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ssl_seg7_dl_07021D00),\n    gsSPDisplayList(ssl_seg7_dl_07021D68),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ssl/areas/3/collision.inc.c",
    "content": "// 0x070275BC - 0x07027CD4\nconst Collision ssl_seg7_area_3_collision[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x7A),\n    COL_VERTEX(2560, -4606, -3954),\n    COL_VERTEX(947, -4606, -3954),\n    COL_VERTEX(2560, -4606, -370),\n    COL_VERTEX(947, -4606, -1855),\n    COL_VERTEX(-2559, -4606, -370),\n    COL_VERTEX(-946, -4606, -1855),\n    COL_VERTEX(-2559, -4606, -3954),\n    COL_VERTEX(-946, -4606, -3954),\n    COL_VERTEX(-191, -13, -1731),\n    COL_VERTEX(192, 188, -1421),\n    COL_VERTEX(192, -13, -1731),\n    COL_VERTEX(192, -275, -1956),\n    COL_VERTEX(-191, -275, -1956),\n    COL_VERTEX(-191, 188, -1421),\n    COL_VERTEX(192, -562, -2048),\n    COL_VERTEX(-191, -562, -2048),\n    COL_VERTEX(192, -664, -2048),\n    COL_VERTEX(-191, -664, -2048),\n    COL_VERTEX(-191, 286, -1222),\n    COL_VERTEX(-191, 384, -1023),\n    COL_VERTEX(192, 384, -1023),\n    COL_VERTEX(192, 286, -1222),\n    COL_VERTEX(-803, -1534, -3549),\n    COL_VERTEX(-680, -1471, -3514),\n    COL_VERTEX(-680, -1534, -3514),\n    COL_VERTEX(-803, -1471, -3549),\n    COL_VERTEX(-715, -1471, -3391),\n    COL_VERTEX(-715, -1534, -3391),\n    COL_VERTEX(-839, -1534, -3426),\n    COL_VERTEX(-839, -1471, -3426),\n    COL_VERTEX(-642, -1406, -3576),\n    COL_VERTEX(-574, -1534, -3685),\n    COL_VERTEX(-682, -1534, -3753),\n    COL_VERTEX(-682, -1406, -3753),\n    COL_VERTEX(-574, -1406, -3685),\n    COL_VERTEX(-449, -1534, -3864),\n    COL_VERTEX(-539, -1534, -3773),\n    COL_VERTEX(-449, -1342, -3864),\n    COL_VERTEX(-539, -1534, -3954),\n    COL_VERTEX(-630, -1534, -3864),\n    COL_VERTEX(928, -1534, -3864),\n    COL_VERTEX(837, -1534, -3954),\n    COL_VERTEX(837, -1534, -3773),\n    COL_VERTEX(928, -1278, -3864),\n    COL_VERTEX(747, -1534, -3864),\n    COL_VERTEX(-746, -1534, -3864),\n    COL_VERTEX(-836, -1534, -3954),\n    COL_VERTEX(-746, -1278, -3864),\n    COL_VERTEX(-836, -1534, -3773),\n    COL_VERTEX(-927, -1534, -3864),\n    COL_VERTEX(631, -1534, -3864),\n    COL_VERTEX(540, -1534, -3954),\n    COL_VERTEX(631, -1150, -3864),\n    COL_VERTEX(540, -1534, -3773),\n    COL_VERTEX(450, -1534, -3864),\n    COL_VERTEX(205, -1330, -3954),\n    COL_VERTEX(205, -1176, -3954),\n    COL_VERTEX(205, -1330, -3596),\n    COL_VERTEX(-204, -1330, -3596),\n    COL_VERTEX(-2559, -409, -3954),\n    COL_VERTEX(-946, -1534, -3954),\n    COL_VERTEX(-946, -1534, -1855),\n    COL_VERTEX(947, -1534, -3954),\n    COL_VERTEX(947, -1534, -1855),\n    COL_VERTEX(307, -1330, -3545),\n    COL_VERTEX(-306, -1534, -3545),\n    COL_VERTEX(-306, -1330, -3545),\n    COL_VERTEX(307, -1534, -3954),\n    COL_VERTEX(307, -1330, -3954),\n    COL_VERTEX(-191, -409, -1664),\n    COL_VERTEX(-2559, -409, -370),\n    COL_VERTEX(192, -409, -1664),\n    COL_VERTEX(2560, -409, -3954),\n    COL_VERTEX(128, 384, -1023),\n    COL_VERTEX(128, 640, -1023),\n    COL_VERTEX(128, 384, -255),\n    COL_VERTEX(192, 768, -2432),\n    COL_VERTEX(192, 768, -1023),\n    COL_VERTEX(-127, 640, -255),\n    COL_VERTEX(-127, 384, -255),\n    COL_VERTEX(-191, -409, -1855),\n    COL_VERTEX(384, 896, -255),\n    COL_VERTEX(384, -229, -255),\n    COL_VERTEX(-383, 896, -255),\n    COL_VERTEX(-383, -229, -255),\n    COL_VERTEX(-191, -664, -1664),\n    COL_VERTEX(192, -409, -2432),\n    COL_VERTEX(-750, -1534, -3644),\n    COL_VERTEX(-642, -1534, -3576),\n    COL_VERTEX(-750, -1406, -3644),\n    COL_VERTEX(-539, -1342, -3954),\n    COL_VERTEX(-539, -1342, -3773),\n    COL_VERTEX(-630, -1342, -3864),\n    COL_VERTEX(837, -1278, -3773),\n    COL_VERTEX(747, -1278, -3864),\n    COL_VERTEX(837, -1278, -3954),\n    COL_VERTEX(-836, -1278, -3773),\n    COL_VERTEX(-927, -1278, -3864),\n    COL_VERTEX(-836, -1278, -3954),\n    COL_VERTEX(540, -1150, -3773),\n    COL_VERTEX(450, -1150, -3864),\n    COL_VERTEX(540, -1150, -3954),\n    COL_VERTEX(205, -1176, -3596),\n    COL_VERTEX(-204, -1176, -3596),\n    COL_VERTEX(-204, -1176, -3954),\n    COL_VERTEX(-204, -1330, -3954),\n    COL_VERTEX(-306, -1330, -3954),\n    COL_VERTEX(2560, -409, -370),\n    COL_VERTEX(-306, -1534, -3954),\n    COL_VERTEX(307, -1534, -3545),\n    COL_VERTEX(192, -664, -1664),\n    COL_VERTEX(192, -409, -1998),\n    COL_VERTEX(-191, -409, -2432),\n    COL_VERTEX(-191, -409, -1998),\n    COL_VERTEX(-127, 384, -1023),\n    COL_VERTEX(-191, 768, -1023),\n    COL_VERTEX(-127, 640, -1023),\n    COL_VERTEX(192, 256, -1023),\n    COL_VERTEX(128, 640, -255),\n    COL_VERTEX(-191, 768, -2432),\n    COL_VERTEX(192, -409, -1855),\n    COL_VERTEX(-191, 256, -1023),\n    COL_TRI_INIT(SURFACE_DEFAULT, 158),\n    COL_TRI(22, 23, 24),\n    COL_TRI(22, 25, 23),\n    COL_TRI(24, 23, 26),\n    COL_TRI(24, 26, 27),\n    COL_TRI(28, 25, 22),\n    COL_TRI(28, 29, 25),\n    COL_TRI(27, 26, 29),\n    COL_TRI(27, 29, 28),\n    COL_TRI(29, 23, 25),\n    COL_TRI(29, 26, 23),\n    COL_TRI(33, 89, 30),\n    COL_TRI(30, 87, 88),\n    COL_TRI(30, 89, 87),\n    COL_TRI(31, 33, 34),\n    COL_TRI(31, 32, 33),\n    COL_TRI(32, 87, 89),\n    COL_TRI(32, 89, 33),\n    COL_TRI(35, 38, 90),\n    COL_TRI(33, 30, 34),\n    COL_TRI(34, 88, 31),\n    COL_TRI(34, 30, 88),\n    COL_TRI(35, 90, 37),\n    COL_TRI(36, 37, 91),\n    COL_TRI(36, 35, 37),\n    COL_TRI(37, 90, 92),\n    COL_TRI(37, 92, 91),\n    COL_TRI(38, 39, 92),\n    COL_TRI(39, 91, 92),\n    COL_TRI(38, 92, 90),\n    COL_TRI(39, 36, 91),\n    COL_TRI(46, 47, 45),\n    COL_TRI(40, 93, 42),\n    COL_TRI(40, 43, 93),\n    COL_TRI(41, 43, 40),\n    COL_TRI(42, 93, 94),\n    COL_TRI(43, 94, 93),\n    COL_TRI(42, 94, 44),\n    COL_TRI(43, 95, 94),\n    COL_TRI(41, 95, 43),\n    COL_TRI(44, 95, 41),\n    COL_TRI(44, 94, 95),\n    COL_TRI(45, 96, 48),\n    COL_TRI(45, 47, 96),\n    COL_TRI(47, 97, 96),\n    COL_TRI(48, 96, 97),\n    COL_TRI(48, 97, 49),\n    COL_TRI(47, 98, 97),\n    COL_TRI(46, 98, 47),\n    COL_TRI(49, 98, 46),\n    COL_TRI(49, 97, 98),\n    COL_TRI(50, 99, 53),\n    COL_TRI(50, 52, 99),\n    COL_TRI(51, 52, 50),\n    COL_TRI(52, 100, 99),\n    COL_TRI(53, 99, 100),\n    COL_TRI(53, 100, 54),\n    COL_TRI(52, 101, 100),\n    COL_TRI(51, 101, 52),\n    COL_TRI(54, 101, 51),\n    COL_TRI(54, 100, 101),\n    COL_TRI(55, 102, 57),\n    COL_TRI(55, 56, 102),\n    COL_TRI(56, 103, 102),\n    COL_TRI(57, 102, 103),\n    COL_TRI(57, 103, 58),\n    COL_TRI(56, 104, 103),\n    COL_TRI(58, 103, 104),\n    COL_TRI(56, 72, 59),\n    COL_TRI(58, 104, 105),\n    COL_TRI(59, 104, 56),\n    COL_TRI(59, 105, 104),\n    COL_TRI(59, 106, 105),\n    COL_TRI(4, 70, 107),\n    COL_TRI(4, 107, 2),\n    COL_TRI(6, 70, 4),\n    COL_TRI(2, 107, 72),\n    COL_TRI(2, 72, 0),\n    COL_TRI(6, 59, 70),\n    COL_TRI(59, 60, 108),\n    COL_TRI(60, 61, 65),\n    COL_TRI(60, 65, 108),\n    COL_TRI(60, 6, 7),\n    COL_TRI(60, 59, 6),\n    COL_TRI(61, 60, 7),\n    COL_TRI(61, 7, 5),\n    COL_TRI(59, 108, 106),\n    COL_TRI(0, 62, 1),\n    COL_TRI(0, 72, 62),\n    COL_TRI(63, 67, 109),\n    COL_TRI(62, 72, 68),\n    COL_TRI(62, 68, 67),\n    COL_TRI(63, 62, 67),\n    COL_TRI(62, 63, 3),\n    COL_TRI(62, 3, 1),\n    COL_TRI(56, 68, 72),\n    COL_TRI(63, 5, 3),\n    COL_TRI(63, 61, 5),\n    COL_TRI(61, 109, 65),\n    COL_TRI(61, 63, 109),\n    COL_TRI(68, 106, 66),\n    COL_TRI(64, 65, 109),\n    COL_TRI(64, 66, 65),\n    COL_TRI(65, 66, 108),\n    COL_TRI(66, 106, 108),\n    COL_TRI(67, 64, 109),\n    COL_TRI(67, 68, 64),\n    COL_TRI(56, 55, 68),\n    COL_TRI(68, 66, 64),\n    COL_TRI(69, 70, 59),\n    COL_TRI(70, 71, 107),\n    COL_TRI(70, 69, 71),\n    COL_TRI(71, 86, 72),\n    COL_TRI(71, 72, 107),\n    COL_TRI(71, 110, 16),\n    COL_TRI(71, 16, 14),\n    COL_TRI(71, 14, 111),\n    COL_TRI(69, 110, 71),\n    COL_TRI(69, 59, 112),\n    COL_TRI(17, 85, 69),\n    COL_TRI(72, 112, 59),\n    COL_TRI(72, 86, 112),\n    COL_TRI(85, 17, 16),\n    COL_TRI(85, 16, 110),\n    COL_TRI(69, 85, 110),\n    COL_TRI(19, 115, 116),\n    COL_TRI(73, 74, 77),\n    COL_TRI(73, 77, 20),\n    COL_TRI(74, 73, 75),\n    COL_TRI(75, 73, 114),\n    COL_TRI(76, 77, 115),\n    COL_TRI(77, 74, 116),\n    COL_TRI(77, 116, 115),\n    COL_TRI(76, 117, 77),\n    COL_TRI(74, 75, 118),\n    COL_TRI(78, 74, 118),\n    COL_TRI(78, 116, 74),\n    COL_TRI(19, 116, 114),\n    COL_TRI(82, 75, 79),\n    COL_TRI(79, 114, 116),\n    COL_TRI(79, 116, 78),\n    COL_TRI(75, 114, 79),\n    COL_TRI(76, 115, 119),\n    COL_TRI(80, 119, 115),\n    COL_TRI(80, 115, 121),\n    COL_TRI(81, 118, 75),\n    COL_TRI(81, 75, 82),\n    COL_TRI(83, 78, 118),\n    COL_TRI(83, 118, 81),\n    COL_TRI(84, 79, 78),\n    COL_TRI(82, 79, 84),\n    COL_TRI(84, 78, 83),\n    COL_TRI(17, 113, 15),\n    COL_TRI(17, 69, 113),\n    COL_TRI(80, 112, 119),\n    COL_TRI(86, 119, 112),\n    COL_TRI(86, 76, 119),\n    COL_TRI(76, 86, 120),\n    COL_TRI(76, 120, 117),\n    COL_TRI_INIT(SURFACE_DEATH_PLANE, 6),\n    COL_TRI(0, 1, 2),\n    COL_TRI(1, 3, 2),\n    COL_TRI(2, 3, 4),\n    COL_TRI(3, 5, 4),\n    COL_TRI(4, 5, 6),\n    COL_TRI(7, 6, 5),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 8),\n    COL_TRI(8, 9, 10),\n    COL_TRI(11, 12, 8),\n    COL_TRI(8, 13, 9),\n    COL_TRI(11, 8, 10),\n    COL_TRI(11, 14, 15),\n    COL_TRI(11, 15, 12),\n    COL_TRI(15, 14, 16),\n    COL_TRI(15, 16, 17),\n    COL_TRI_INIT(SURFACE_INSTANT_WARP_1D, 2),\n    COL_TRI(18, 19, 20),\n    COL_TRI(18, 20, 21),\n    COL_TRI_INIT(SURFACE_INSTANT_WARP_1E, 2),\n    COL_TRI(13, 18, 9),\n    COL_TRI(18, 21, 9),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/ssl/areas/3/geo.inc.c",
    "content": "// 0x0E00088C\nconst GeoLayout ssl_geo_00088C[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND_COLOR(0x0001),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 12800, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(4, 0, 2000, 6000, 0, 0, 0, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, ssl_seg7_dl_07021A08),\n                    GEO_DISPLAY_LIST(LAYER_TRANSPARENT, ssl_seg7_dl_07021DE8),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(0, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ssl/areas/3/macro.inc.c",
    "content": "// 0x07027ECC - 0x07027ECE\nconst MacroObject ssl_seg7_area_3_macro_objs[] = {\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/ssl/eyerok_col/collision.inc.c",
    "content": "// 0x07028274 - 0x070282F8\nconst Collision ssl_seg7_collision_07028274[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-87, 3, 147),\n    COL_VERTEX(-63, 204, -90),\n    COL_VERTEX(-63, 3, -90),\n    COL_VERTEX(-87, 204, 147),\n    COL_VERTEX(68, 204, 147),\n    COL_VERTEX(68, 204, -134),\n    COL_VERTEX(68, 3, 147),\n    COL_VERTEX(68, 3, -134),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI(1, 3, 4),\n    COL_TRI(1, 4, 5),\n    COL_TRI(6, 4, 3),\n    COL_TRI(6, 3, 0),\n    COL_TRI(7, 5, 4),\n    COL_TRI(7, 4, 6),\n    COL_TRI(2, 1, 5),\n    COL_TRI(2, 5, 7),\n    COL_TRI(6, 0, 2),\n    COL_TRI(6, 2, 7),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n\n// 0x070282F8 - 0x07028370\nconst Collision ssl_seg7_collision_070282F8[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-102, 0, 51),\n    COL_VERTEX(-102, 338, 51),\n    COL_VERTEX(-102, 338, -51),\n    COL_VERTEX(153, 338, 51),\n    COL_VERTEX(102, 338, -51),\n    COL_VERTEX(153, 0, 51),\n    COL_VERTEX(102, 0, -51),\n    COL_VERTEX(-102, 0, -51),\n    COL_TRI_INIT(SURFACE_DEFAULT, 10),\n    COL_TRI(0, 1, 2),\n    COL_TRI(1, 3, 4),\n    COL_TRI(1, 4, 2),\n    COL_TRI(5, 3, 1),\n    COL_TRI(5, 1, 0),\n    COL_TRI(6, 3, 5),\n    COL_TRI(6, 4, 3),\n    COL_TRI(7, 2, 4),\n    COL_TRI(7, 4, 6),\n    COL_TRI(0, 2, 7),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n\n// 0x07028370 - 0x070284AE\nconst Collision ssl_seg7_collision_07028370[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x13),\n    COL_VERTEX(100, 75, -122),\n    COL_VERTEX(-100, 0, -122),\n    COL_VERTEX(100, 100, -122),\n    COL_VERTEX(-100, 100, -122),\n    COL_VERTEX(-100, 0, 151),\n    COL_VERTEX(-100, 100, 151),\n    COL_VERTEX(100, 0, -122),\n    COL_VERTEX(100, 50, 151),\n    COL_VERTEX(100, 100, 151),\n    COL_VERTEX(100, 0, 151),\n    COL_VERTEX(151, 50, 151),\n    COL_VERTEX(151, 50, -21),\n    COL_VERTEX(100, 50, -21),\n    COL_VERTEX(151, 0, 151),\n    COL_VERTEX(151, 0, -21),\n    COL_VERTEX(151, 75, -122),\n    COL_VERTEX(100, 75, -20),\n    COL_VERTEX(151, 75, -20),\n    COL_VERTEX(151, 0, -122),\n    COL_TRI_INIT(SURFACE_DEFAULT, 32),\n    COL_TRI(0, 1, 2),\n    COL_TRI(1, 3, 2),\n    COL_TRI(1, 4, 5),\n    COL_TRI(1, 5, 3),\n    COL_TRI(6, 4, 1),\n    COL_TRI(7, 8, 4),\n    COL_TRI(8, 5, 4),\n    COL_TRI(6, 9, 4),\n    COL_TRI(3, 5, 8),\n    COL_TRI(3, 8, 2),\n    COL_TRI(7, 10, 11),\n    COL_TRI(12, 7, 11),\n    COL_TRI(7, 13, 10),\n    COL_TRI(7, 9, 13),\n    COL_TRI(10, 13, 14),\n    COL_TRI(11, 10, 14),\n    COL_TRI(15, 18, 6),\n    COL_TRI(0, 15, 6),\n    COL_TRI(0, 16, 15),\n    COL_TRI(16, 17, 15),\n    COL_TRI(15, 17, 18),\n    COL_TRI(17, 14, 18),\n    COL_TRI(17, 16, 11),\n    COL_TRI(16, 12, 11),\n    COL_TRI(8, 12, 16),\n    COL_TRI(8, 0, 2),\n    COL_TRI(8, 16, 0),\n    COL_TRI(8, 7, 12),\n    COL_TRI(9, 7, 4),\n    COL_TRI(6, 1, 0),\n    COL_TRI(6, 13, 9),\n    COL_TRI(6, 18, 13),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n\n\n// 0x070284B0 - 0x070285EE\nconst Collision ssl_seg7_collision_070284B0[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x13),\n    COL_VERTEX(100, 0, 151),\n    COL_VERTEX(100, 100, 151),\n    COL_VERTEX(-100, 100, 151),\n    COL_VERTEX(100, 0, -122),\n    COL_VERTEX(100, 100, -122),\n    COL_VERTEX(-100, 50, 151),\n    COL_VERTEX(-100, 0, -122),\n    COL_VERTEX(-100, 0, 151),\n    COL_VERTEX(-100, 100, -122),\n    COL_VERTEX(-100, 75, -122),\n    COL_VERTEX(-151, 0, -21),\n    COL_VERTEX(-150, 0, 151),\n    COL_VERTEX(-150, 50, 151),\n    COL_VERTEX(-151, 50, -21),\n    COL_VERTEX(-151, 0, -122),\n    COL_VERTEX(-151, 75, -122),\n    COL_VERTEX(-100, 50, -21),\n    COL_VERTEX(-151, 75, -20),\n    COL_VERTEX(-100, 75, -20),\n    COL_TRI_INIT(SURFACE_DEFAULT, 32),\n    COL_TRI(11, 7, 5),\n    COL_TRI(0, 1, 2),\n    COL_TRI(1, 0, 3),\n    COL_TRI(4, 1, 3),\n    COL_TRI(2, 1, 4),\n    COL_TRI(0, 2, 5),\n    COL_TRI(3, 0, 6),\n    COL_TRI(0, 7, 6),\n    COL_TRI(8, 3, 9),\n    COL_TRI(8, 4, 3),\n    COL_TRI(8, 2, 4),\n    COL_TRI(10, 11, 12),\n    COL_TRI(12, 11, 5),\n    COL_TRI(13, 16, 18),\n    COL_TRI(13, 12, 5),\n    COL_TRI(13, 5, 16),\n    COL_TRI(10, 12, 13),\n    COL_TRI(6, 14, 15),\n    COL_TRI(6, 15, 9),\n    COL_TRI(15, 17, 18),\n    COL_TRI(14, 17, 15),\n    COL_TRI(15, 18, 9),\n    COL_TRI(14, 10, 17),\n    COL_TRI(13, 18, 17),\n    COL_TRI(18, 16, 2),\n    COL_TRI(16, 5, 2),\n    COL_TRI(0, 5, 7),\n    COL_TRI(8, 9, 2),\n    COL_TRI(9, 18, 2),\n    COL_TRI(9, 3, 6),\n    COL_TRI(7, 11, 6),\n    COL_TRI(11, 14, 6),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/ssl/eyerok_col/geo.inc.c",
    "content": "// Blank File\n"
  },
  {
    "path": "levels/ssl/eyerok_col/model.inc.c",
    "content": "// Blank File\n\n"
  },
  {
    "path": "levels/ssl/geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"game/level_geo.h\"\n#include \"game/geo_misc.h\"\n#include \"game/camera.h\"\n#include \"game/moving_texture.h\"\n#include \"game/screen_transition.h\"\n#include \"game/paintings.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"levels/ssl/header.h\"\n\n#include \"levels/ssl/areas/1/5/geo.inc.c\"\n#include \"levels/ssl/areas/2/4/geo.inc.c\"\n#include \"levels/ssl/pyramid_top/geo.inc.c\"\n#include \"levels/ssl/tox_box/geo.inc.c\"\n#include \"levels/ssl/areas/1/geo.inc.c\"\n#include \"levels/ssl/grindel/geo.inc.c\"\n#include \"levels/ssl/spindel/geo.inc.c\"\n#include \"levels/ssl/moving_pyramid_wall/geo.inc.c\"\n#include \"levels/ssl/pyramid_elevator/geo.inc.c\"\n#include \"levels/ssl/eyerok_col/geo.inc.c\"\n#include \"levels/ssl/areas/2/geo.inc.c\"\n#include \"levels/ssl/areas/3/geo.inc.c\"\n"
  },
  {
    "path": "levels/ssl/grindel/collision.inc.c",
    "content": "// 0x07027ED0 - 0x07027F54\nconst Collision ssl_seg7_collision_grindel[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(224, 450, -224),\n    COL_VERTEX(224, 3, -224),\n    COL_VERTEX(-224, 3, -224),\n    COL_VERTEX(-224, 450, -224),\n    COL_VERTEX(-224, 3, 224),\n    COL_VERTEX(224, 3, 224),\n    COL_VERTEX(224, 450, 224),\n    COL_VERTEX(-224, 450, 224),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(3, 2, 4),\n    COL_TRI(2, 1, 5),\n    COL_TRI(2, 5, 4),\n    COL_TRI(6, 5, 1),\n    COL_TRI(6, 1, 0),\n    COL_TRI(7, 4, 5),\n    COL_TRI(7, 5, 6),\n    COL_TRI(3, 4, 7),\n    COL_TRI(7, 6, 0),\n    COL_TRI(7, 0, 3),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/ssl/grindel/geo.inc.c",
    "content": "// 0x0E000734\nconst GeoLayout ssl_geo_000734[] = {\n    GEO_CULLING_RADIUS(700),\n    GEO_OPEN_NODE(),\n        GEO_SHADOW(SHADOW_SQUARE_SCALABLE, 0xB4, 550),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, ssl_seg7_dl_070220A8),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, ssl_seg7_dl_070221E8),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ssl/grindel/model.inc.c",
    "content": "// 0x07021E50 - 0x07021E68\nstatic const Lights1 ssl_seg7_lights_07021E50 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07021E68 - 0x07021EE8\nstatic const Vtx ssl_seg7_vertex_07021E68[] = {\n    {{{  -224,      0,   -224}, 0, {   990,    990}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{   224,      0,    224}, 0, {     0,      0}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{  -224,      0,    224}, 0, {     0,    990}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{   224,      0,   -224}, 0, {   990,      0}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{  -224,    450,    224}, 0, {     0,    990}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{   224,    450,   -224}, 0, {   990,      0}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{  -224,    450,   -224}, 0, {   990,    990}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{   224,    450,    224}, 0, {     0,      0}, {0x67, 0x33, 0x33, 0xff}}},\n};\n\n// 0x07021EE8 - 0x07021FE8\nstatic const Vtx ssl_seg7_vertex_07021EE8[] = {\n    {{{   224,    450,   -224}, 0, {     0,      0}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{  -224,      0,   -224}, 0, {   990,   2012}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{  -224,    450,   -224}, 0, {   990,      0}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{  -224,    450,    224}, 0, {     0,      0}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{   224,      0,    224}, 0, {   990,   2012}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{   224,    450,    224}, 0, {   990,      0}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{  -224,      0,    224}, 0, {     0,   2012}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{  -224,    450,   -224}, 0, {     0,      0}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{  -224,      0,   -224}, 0, {     0,   2012}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{  -224,      0,    224}, 0, {   990,   2012}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{  -224,    450,    224}, 0, {   990,      0}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{   224,    450,    224}, 0, {     0,      0}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{   224,      0,    224}, 0, {     0,   2012}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{   224,      0,   -224}, 0, {   990,   2012}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{   224,    450,   -224}, 0, {   990,      0}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{   224,      0,   -224}, 0, {     0,   2012}, {0x67, 0xcd, 0xcd, 0xff}}},\n};\n\n// 0x07021FE8 - 0x07022040\nstatic const Gfx ssl_seg7_dl_07021FE8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ssl_seg7_lights_07021E50.l, 1),\n    gsSPLight(&ssl_seg7_lights_07021E50.a, 2),\n    gsSPVertex(ssl_seg7_vertex_07021E68, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07022040 - 0x070220A8\nstatic const Gfx ssl_seg7_dl_07022040[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ssl_seg7_texture_07002800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ssl_seg7_vertex_07021EE8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070220A8 - 0x07022170\nconst Gfx ssl_seg7_dl_070220A8[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogFactor(0x0E49, 0xF2B7), // This isn't gsSPFogPosition since there is no valid min/max pair that corresponds to 0x0E49F2B7\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ssl_seg7_dl_07021FE8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ssl_seg7_dl_07022040),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x07022170 - 0x070221B0\nstatic const Vtx ssl_seg7_vertex_07022170[] = {\n    {{{  -229,    382,   -157}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -229,     68,   -157}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -229,     68,    157}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -229,    382,    157}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070221B0 - 0x070221E8\nstatic const Gfx ssl_seg7_dl_070221B0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ssl_seg7_texture_07003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ssl_seg7_vertex_07022170, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070221E8 - 0x070222A0\nconst Gfx ssl_seg7_dl_070221E8[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogFactor(0x0E49, 0xF2B7), // This isn't gsSPFogPosition since there is no valid min/max pair that corresponds to 0x0E49F2B7\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ssl_seg7_dl_070221B0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ssl/header.h",
    "content": "#ifndef SSL_HEADER_H\n#define SSL_HEADER_H\n\n#include \"types.h\"\n#include \"game/moving_texture.h\"\n\n// geo\nextern const GeoLayout ssl_geo_0005C0[];\nextern const GeoLayout ssl_geo_0005D8[];\nextern const GeoLayout ssl_geo_000618[];\nextern const GeoLayout ssl_geo_000630[];\nextern const GeoLayout ssl_geo_000648[];\nextern const GeoLayout ssl_geo_000734[];\nextern const GeoLayout ssl_geo_000764[];\nextern const GeoLayout ssl_geo_000794[];\nextern const GeoLayout ssl_geo_0007AC[];\nextern const GeoLayout ssl_geo_0007CC[];\nextern const GeoLayout ssl_geo_00088C[];\n\n// leveldata\nextern const u8 ssl_pyramid_sand[];\nextern const u8 ssl_quicksand[];\nextern const Gfx ssl_dl_quicksand_pit_begin[];\nextern const Gfx ssl_dl_quicksand_pit_end[];\nextern const Gfx ssl_dl_pyramid_quicksand_pit_begin[];\nextern const Gfx ssl_dl_pyramid_quicksand_pit_end[];\nextern Movtex ssl_movtex_tris_quicksand_pit[];\nextern Movtex ssl_movtex_tris_pyramid_quicksand_pit[];\nextern const Gfx ssl_dl_quicksand_pit[];\nextern const Gfx ssl_dl_pyramid_quicksand_pit_static[];\nextern const Gfx ssl_seg7_dl_07009F48[];\nextern const Gfx ssl_seg7_dl_0700BA78[];\nextern const Gfx ssl_seg7_dl_0700BC18[];\nextern const Gfx ssl_seg7_dl_0700BD00[];\nextern const Gfx ssl_seg7_dl_0700BF18[];\nextern const Gfx ssl_seg7_dl_0700FCE0[];\nextern const Collision ssl_seg7_area_1_collision[];\nextern const MacroObject ssl_seg7_area_1_macro_objs[];\nextern const Collision ssl_seg7_collision_pyramid_top[];\nextern const Collision ssl_seg7_collision_tox_box[];\nextern const struct MovtexQuadCollection ssl_movtex_puddle_water[];\nextern const struct MovtexQuadCollection ssl_movtex_toxbox_quicksand_mist[];\nextern const Gfx ssl_dl_quicksand_begin[];\nextern const Gfx ssl_dl_quicksand_end[];\nextern Movtex ssl_movtex_tris_pyramid_quicksand[];\nextern const Gfx ssl_dl_pyramid_quicksand[];\nextern Movtex ssl_movtex_tris_pyramid_corners_quicksand[];\nextern const Gfx ssl_dl_pyramid_corners_quicksand[];\nextern Movtex ssl_movtex_tris_sides_quicksand[];\nextern const Gfx ssl_dl_sides_quicksand[];\nextern const Gfx ssl_seg7_dl_0701EE80[];\nextern const Gfx ssl_seg7_dl_0701F920[];\nextern const Gfx ssl_seg7_dl_0701FCE0[];\nextern const Gfx ssl_seg7_dl_07021A08[];\nextern const Gfx ssl_seg7_dl_07021DE8[];\nextern const Gfx ssl_seg7_dl_070220A8[];\nextern const Gfx ssl_seg7_dl_070221E8[];\nextern const Gfx ssl_seg7_dl_070228A8[];\nextern const Gfx ssl_seg7_dl_070229E8[];\nextern const Gfx ssl_seg7_dl_07022CF8[];\nextern const Gfx ssl_seg7_dl_070233A8[];\nextern const Gfx ssl_seg7_dl_070235C0[];\nextern const Collision ssl_seg7_area_2_collision[];\nextern const Collision ssl_seg7_area_3_collision[];\nextern const MacroObject ssl_seg7_area_2_macro_objs[];\nextern const MacroObject ssl_seg7_area_3_macro_objs[];\nextern const Collision ssl_seg7_collision_grindel[];\nextern const Collision ssl_seg7_collision_spindel[];\nextern const Collision ssl_seg7_collision_0702808C[];\nextern const Collision ssl_seg7_collision_pyramid_elevator[];\nextern const Collision ssl_seg7_collision_07028274[];\nextern const Collision ssl_seg7_collision_070282F8[];\nextern const Collision ssl_seg7_collision_07028370[];\nextern const Collision ssl_seg7_collision_070284B0[];\nextern const Gfx ssl_dl_pyramid_sand_pathway_floor_begin[];\nextern const Gfx ssl_dl_pyramid_sand_pathway_floor_end[];\nextern const Gfx ssl_dl_pyramid_sand_pathway_begin[];\nextern const Gfx ssl_dl_pyramid_sand_pathway_end[];\nextern Movtex ssl_movtex_tris_pyramid_sand_pathway_front[];\nextern const Gfx ssl_dl_pyramid_sand_pathway_front_end[];\nextern Movtex ssl_movtex_tris_pyramid_sand_pathway_floor[];\nextern Movtex ssl_movtex_tris_pyramid_sand_pathway_side[];\nextern const Gfx ssl_dl_pyramid_sand_pathway_side_end[];\n\n// script\nextern const LevelScript level_ssl_entry[];\n\n#endif\n"
  },
  {
    "path": "levels/ssl/level.yaml",
    "content": "# Shifting Sand Land\nshort-name: ssl\nfull-name: Shifting Sand Land\ntexture-file: [\"/texture.inc.c\"]\narea-count: 3\nobjects: [eyerok_col, grindel, moving_pyramid_wall, pyramid_elevator, pyramid_top, spindel, tox_box]\nshared-path: []\n# loaded files\nskybox-bin: ssl\ntexture-bin: generic\neffects: false\nactor-bins: [group5]\ncommon-bin: [common0]\n"
  },
  {
    "path": "levels/ssl/leveldata.c",
    "content": "#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n#include \"sm64.h\"\n\n#include \"dialog_ids.h\"\n#include \"level_misc_macros.h\"\n#include \"macros.h\"\n#include \"macro_presets.h\"\n#include \"moving_texture_macros.h\"\n#include \"special_presets.h\"\n#include \"surface_terrains.h\"\n#include \"textures.h\"\n#include \"types.h\"\n\n#include \"make_const_nonconst.h\"\n// LEVEL DATA\n#include \"levels/ssl/texture.inc.c\"\n// This is an oddity, but it is assumed this because of the likelyhood SSL's\n// course used to be smaller in a prototype build and that moving areas around\n// caused this discrepency. (See the 3 Star Course theory)\n#include \"levels/ssl/areas/2/4/model.inc.c\"\n#include \"levels/ssl/areas/1/1/model.inc.c\"\n#include \"levels/ssl/areas/1/2/model.inc.c\"\n#include \"levels/ssl/areas/1/3/model.inc.c\"\n#include \"levels/ssl/areas/1/4/model.inc.c\"\n#include \"levels/ssl/pyramid_top/model.inc.c\"\n#include \"levels/ssl/tox_box/model.inc.c\"\n#include \"levels/ssl/areas/1/collision.inc.c\"\n#include \"levels/ssl/areas/1/macro.inc.c\"\n#include \"levels/ssl/pyramid_top/collision.inc.c\"\n#include \"levels/ssl/tox_box/collision.inc.c\"\n#include \"levels/ssl/areas/1/movtext.inc.c\"\n#include \"levels/ssl/areas/2/1/model.inc.c\"\n#include \"levels/ssl/areas/2/2/model.inc.c\"\n#include \"levels/ssl/areas/2/3/model.inc.c\"\n#include \"levels/ssl/areas/3/1/model.inc.c\"\n#include \"levels/ssl/areas/3/2/model.inc.c\"\n#include \"levels/ssl/grindel/model.inc.c\"\n#include \"levels/ssl/spindel/model.inc.c\"\n#include \"levels/ssl/moving_pyramid_wall/model.inc.c\"\n#include \"levels/ssl/pyramid_elevator/model.inc.c\"\n#include \"levels/ssl/eyerok_col/model.inc.c\" // Blank file\n#include \"levels/ssl/areas/2/collision.inc.c\"\n#include \"levels/ssl/areas/3/collision.inc.c\"\n#include \"levels/ssl/areas/2/macro.inc.c\"\n#include \"levels/ssl/areas/3/macro.inc.c\"\n#include \"levels/ssl/grindel/collision.inc.c\"\n#include \"levels/ssl/spindel/collision.inc.c\"\n#include \"levels/ssl/moving_pyramid_wall/collision.inc.c\"\n#include \"levels/ssl/pyramid_elevator/collision.inc.c\"\n#include \"levels/ssl/eyerok_col/collision.inc.c\"\n#include \"levels/ssl/areas/2/movtext.inc.c\"\n"
  },
  {
    "path": "levels/ssl/moving_pyramid_wall/collision.inc.c",
    "content": "// 0x0702808C - 0x07028110\nconst Collision ssl_seg7_collision_0702808C[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-63, 0, -306),\n    COL_VERTEX(-63, 512, -306),\n    COL_VERTEX(64, 512, -306),\n    COL_VERTEX(64, 0, -306),\n    COL_VERTEX(-63, 0, 307),\n    COL_VERTEX(-63, 512, 307),\n    COL_VERTEX(64, 512, 307),\n    COL_VERTEX(64, 0, 307),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(4, 5, 1),\n    COL_TRI(4, 1, 0),\n    COL_TRI(2, 1, 5),\n    COL_TRI(2, 5, 6),\n    COL_TRI(3, 2, 6),\n    COL_TRI(7, 5, 4),\n    COL_TRI(7, 6, 5),\n    COL_TRI(7, 4, 0),\n    COL_TRI(7, 0, 3),\n    COL_TRI(3, 6, 7),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/ssl/moving_pyramid_wall/geo.inc.c",
    "content": "// 0x0E000794\nconst GeoLayout ssl_geo_000794[] = {\n    GEO_CULLING_RADIUS(700),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, ssl_seg7_dl_07022CF8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ssl/moving_pyramid_wall/model.inc.c",
    "content": "// 0x07022AA0 - 0x07022AB8\nstatic const Lights1 ssl_seg7_lights_07022AA0 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07022AB8 - 0x07022BB8\nstatic const Vtx ssl_seg7_vertex_07022AB8[] = {\n    {{{   -63,      0,    307}, 0, {  2420,    990}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{   -63,    512,    307}, 0, {  2420,  -1054}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{   -63,    512,   -306}, 0, {     0,  -1054}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{   -63,      0,   -306}, 0, {   990,    990}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{   -63,    512,   -306}, 0, {   990,  -1054}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{    64,    512,   -306}, 0, {   478,  -1054}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{    64,      0,   -306}, 0, {   478,    990}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{    64,      0,   -306}, 0, {  2420,    990}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{    64,    512,    307}, 0, {     0,  -1054}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{    64,      0,    307}, 0, {     0,    990}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{    64,    512,   -306}, 0, {  2420,  -1054}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{    64,      0,    307}, 0, {   990,    990}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{   -63,    512,    307}, 0, {   478,  -1054}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{   -63,      0,    307}, 0, {   478,    990}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{    64,    512,    307}, 0, {   990,  -1054}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{   -63,      0,   -306}, 0, {     0,    990}, {0xd6, 0xac, 0xac, 0xff}}},\n};\n\n// 0x07022BB8 - 0x07022C38\nstatic const Vtx ssl_seg7_vertex_07022BB8[] = {\n    {{{    64,      0,    307}, 0, {   990,   1464}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{   -63,      0,    307}, 0, {   480,   1464}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{   -63,      0,   -306}, 0, {   480,   -986}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{    64,      0,   -306}, 0, {   990,   -986}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{    64,    512,   -306}, 0, {   990,   -986}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{   -63,    512,    307}, 0, {   480,   1464}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{    64,    512,    307}, 0, {   990,   1464}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{   -63,    512,   -306}, 0, {   480,   -986}, {0x99, 0x33, 0xcd, 0xff}}},\n};\n\n// 0x07022C38 - 0x07022CB0\nstatic const Gfx ssl_seg7_dl_07022C38[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ssl_seg7_lights_07022AA0.l, 1),\n    gsSPLight(&ssl_seg7_lights_07022AA0.a, 2),\n    gsSPVertex(ssl_seg7_vertex_07022AB8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07022CB0 - 0x07022CF8\nstatic const Gfx ssl_seg7_dl_07022CB0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_0900A800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ssl_seg7_vertex_07022BB8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07022CF8 - 0x07022DA8\nconst Gfx ssl_seg7_dl_07022CF8[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogFactor(0x0E49, 0xF2B7), // This isn't gsSPFogPosition since there is no valid min/max pair that corresponds to 0x0E49F2B7\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ssl_seg7_dl_07022C38),\n    gsSPDisplayList(ssl_seg7_dl_07022CB0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ssl/pyramid_elevator/collision.inc.c",
    "content": "// 0x07028110 - 0x07028274\nconst Collision ssl_seg7_collision_pyramid_elevator[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x14),\n    COL_VERTEX(-511, 0, 512),\n    COL_VERTEX(512, 0, 512),\n    COL_VERTEX(512, 0, -511),\n    COL_VERTEX(-511, 0, -511),\n    COL_VERTEX(512, 256, -511),\n    COL_VERTEX(461, 256, 461),\n    COL_VERTEX(512, 256, 512),\n    COL_VERTEX(-460, 256, 461),\n    COL_VERTEX(-511, 256, 512),\n    COL_VERTEX(-511, 256, -511),\n    COL_VERTEX(461, 256, -460),\n    COL_VERTEX(-460, 256, -460),\n    COL_VERTEX(461, 0, 461),\n    COL_VERTEX(-460, 0, 461),\n    COL_VERTEX(461, 0, -460),\n    COL_VERTEX(-460, 0, -460),\n    COL_VERTEX(-511, -50, -511),\n    COL_VERTEX(512, -50, -511),\n    COL_VERTEX(512, -50, 512),\n    COL_VERTEX(-511, -50, 512),\n    COL_TRI_INIT(SURFACE_DEFAULT, 10),\n    COL_TRI(2, 16, 3),\n    COL_TRI(2, 17, 16),\n    COL_TRI(1, 17, 2),\n    COL_TRI(1, 18, 17),\n    COL_TRI(16, 17, 18),\n    COL_TRI(3, 16, 19),\n    COL_TRI(16, 18, 19),\n    COL_TRI(3, 19, 0),\n    COL_TRI(0, 19, 18),\n    COL_TRI(0, 18, 1),\n    COL_TRI_INIT(SURFACE_CLOSE_CAMERA, 2),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI_INIT(SURFACE_NO_CAM_COLLISION, 24),\n    COL_TRI(10, 12, 5),\n    COL_TRI(4, 5, 6),\n    COL_TRI(6, 5, 7),\n    COL_TRI(6, 7, 8),\n    COL_TRI(6, 2, 4),\n    COL_TRI(6, 1, 2),\n    COL_TRI(8, 1, 6),\n    COL_TRI(8, 0, 1),\n    COL_TRI(4, 2, 3),\n    COL_TRI(4, 3, 9),\n    COL_TRI(4, 10, 5),\n    COL_TRI(9, 10, 4),\n    COL_TRI(8, 7, 11),\n    COL_TRI(8, 11, 9),\n    COL_TRI(9, 0, 8),\n    COL_TRI(9, 3, 0),\n    COL_TRI(9, 11, 10),\n    COL_TRI(5, 12, 13),\n    COL_TRI(5, 13, 7),\n    COL_TRI(11, 14, 10),\n    COL_TRI(10, 14, 12),\n    COL_TRI(7, 13, 15),\n    COL_TRI(7, 15, 11),\n    COL_TRI(11, 15, 14),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/ssl/pyramid_elevator/geo.inc.c",
    "content": "// 0x0E0007AC\nconst GeoLayout ssl_geo_0007AC[] = {\n    GEO_CULLING_RADIUS(900),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, ssl_seg7_dl_070233A8),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, ssl_seg7_dl_070235C0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ssl/pyramid_elevator/model.inc.c",
    "content": "// 0x07022DA8 - 0x07022DC0\nstatic const Lights1 ssl_seg7_lights_07022DA8 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07022DC0 - 0x07022E80\nstatic const Vtx ssl_seg7_vertex_07022DC0[] = {\n    {{{   512,      0,   -511}, 0, {  3034,  -1054}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{  -511,    -50,   -511}, 0, { -1052,  -1054}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{  -511,      0,   -511}, 0, { -1052,  -1054}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{   512,    -50,   -511}, 0, {  3034,  -1054}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{   512,      0,    512}, 0, {  3034,   3032}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{   512,    -50,    512}, 0, {  3034,   3032}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{  -511,    -50,    512}, 0, { -1052,   3032}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{  -511,      0,    512}, 0, { -1052,   3032}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  -511,      0,    512}, 0, { -1052,   2010}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{   512,      0,   -511}, 0, {  3034,  -2076}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{  -511,      0,   -511}, 0, { -1052,  -2076}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{   512,      0,    512}, 0, {  3034,   2010}, {0x67, 0x33, 0x33, 0xff}}},\n};\n\n// 0x07022E80 - 0x07022F70\nstatic const Vtx ssl_seg7_vertex_07022E80[] = {\n    {{{   512,    256,   -511}, 0, { -4118,      0}, {0x21, 0x65, 0xbd, 0xff}}},\n    {{{   512,    205,   -511}, 0, { -4118,    480}, {0x43, 0x9b, 0xdf, 0xff}}},\n    {{{  -511,    205,   -511}, 0, {  6100,    480}, {0xdf, 0x9b, 0xbd, 0xff}}},\n    {{{   512,    256,    512}, 0, { -4630,      0}, {0x43, 0x65, 0x21, 0xff}}},\n    {{{   512,    205,   -511}, 0, {  5590,    478}, {0x43, 0x9b, 0xdf, 0xff}}},\n    {{{   512,    256,   -511}, 0, {  5590,      0}, {0x21, 0x65, 0xbd, 0xff}}},\n    {{{   512,    205,    512}, 0, { -4630,    480}, {0x21, 0x9b, 0x43, 0xff}}},\n    {{{  -511,    256,    512}, 0, { -4118,      0}, {0xdf, 0x65, 0x43, 0xff}}},\n    {{{   512,    205,    512}, 0, {  6100,    478}, {0x21, 0x9b, 0x43, 0xff}}},\n    {{{   512,    256,    512}, 0, {  6100,      0}, {0x43, 0x65, 0x21, 0xff}}},\n    {{{  -511,    205,    512}, 0, { -4118,    480}, {0xbd, 0x9b, 0x21, 0xff}}},\n    {{{  -511,    256,   -511}, 0, { -4630,      0}, {0xbd, 0x65, 0xdf, 0xff}}},\n    {{{  -511,    205,    512}, 0, {  5590,    478}, {0xbd, 0x9b, 0x21, 0xff}}},\n    {{{  -511,    256,    512}, 0, {  5590,      0}, {0xdf, 0x65, 0x43, 0xff}}},\n    {{{  -511,    205,   -511}, 0, { -4630,    480}, {0xdf, 0x9b, 0xbd, 0xff}}},\n};\n\n// 0x07022F70 - 0x07023060\nstatic const Vtx ssl_seg7_vertex_07022F70[] = {\n    {{{  -460,    256,   -460}, 0, { -4118,      0}, {0x21, 0x65, 0x43, 0xff}}},\n    {{{  -460,    205,   -460}, 0, { -4118,    478}, {0x43, 0x9b, 0x21, 0xff}}},\n    {{{   461,    205,   -460}, 0, {  5078,    478}, {0xdf, 0x9b, 0x43, 0xff}}},\n    {{{   512,    256,   -511}, 0, { -4118,      0}, {0x21, 0x65, 0xbd, 0xff}}},\n    {{{  -511,    205,   -511}, 0, {  6100,    480}, {0xdf, 0x9b, 0xbd, 0xff}}},\n    {{{  -511,    256,   -511}, 0, {  6100,      0}, {0xbd, 0x65, 0xdf, 0xff}}},\n    {{{   461,    256,    461}, 0, { -4118,      0}, {0xdf, 0x65, 0xbd, 0xff}}},\n    {{{  -460,    205,    461}, 0, {  5078,    480}, {0x21, 0x9b, 0xbd, 0xff}}},\n    {{{  -460,    256,    461}, 0, {  5078,      0}, {0x43, 0x65, 0xdf, 0xff}}},\n    {{{   461,    205,    461}, 0, { -4118,    478}, {0xbd, 0x9b, 0xdf, 0xff}}},\n    {{{  -460,    256,    461}, 0, { -3606,      0}, {0x43, 0x65, 0xdf, 0xff}}},\n    {{{  -460,    205,    461}, 0, { -3606,    480}, {0x21, 0x9b, 0xbd, 0xff}}},\n    {{{  -460,    205,   -460}, 0, {  5588,    478}, {0x43, 0x9b, 0x21, 0xff}}},\n    {{{  -460,    256,   -460}, 0, {  5588,      0}, {0x21, 0x65, 0x43, 0xff}}},\n    {{{   461,    256,   -460}, 0, {  5078,      0}, {0xbd, 0x65, 0x21, 0xff}}},\n};\n\n// 0x07023060 - 0x07023150\nstatic const Vtx ssl_seg7_vertex_07023060[] = {\n    {{{   512,    256,    512}, 0, {  6100,  -5142}, {0x43, 0x65, 0x21, 0xff}}},\n    {{{  -460,    256,    461}, 0, {  5588,   4564}, {0x43, 0x65, 0xdf, 0xff}}},\n    {{{  -511,    256,    512}, 0, {  6100,   5076}, {0xdf, 0x65, 0x43, 0xff}}},\n    {{{   461,    256,   -460}, 0, { -4628,      0}, {0xbd, 0x65, 0x21, 0xff}}},\n    {{{   461,    205,    461}, 0, {  4566,    480}, {0xbd, 0x9b, 0xdf, 0xff}}},\n    {{{   461,    256,    461}, 0, {  4566,      0}, {0xdf, 0x65, 0xbd, 0xff}}},\n    {{{   461,    205,   -460}, 0, { -4628,    478}, {0xdf, 0x9b, 0x43, 0xff}}},\n    {{{  -511,    205,   -511}, 0, { -4118,   6098}, {0xdf, 0x9b, 0xbd, 0xff}}},\n    {{{  -460,    205,    461}, 0, { -3608,  -3610}, {0x21, 0x9b, 0xbd, 0xff}}},\n    {{{  -511,    205,    512}, 0, { -4118,  -4120}, {0xbd, 0x9b, 0x21, 0xff}}},\n    {{{   512,    205,   -511}, 0, {  6100,   6098}, {0x43, 0x9b, 0xdf, 0xff}}},\n    {{{  -460,    205,   -460}, 0, { -3608,   5588}, {0x43, 0x9b, 0x21, 0xff}}},\n    {{{   461,    205,   -460}, 0, {  5590,   5588}, {0xdf, 0x9b, 0x43, 0xff}}},\n    {{{   461,    205,    461}, 0, {  5590,  -3610}, {0xbd, 0x9b, 0xdf, 0xff}}},\n    {{{   512,    205,    512}, 0, {  6100,  -4120}, {0x21, 0x9b, 0x43, 0xff}}},\n};\n\n// 0x07023150 - 0x070231D0\nstatic const Vtx ssl_seg7_vertex_07023150[] = {\n    {{{   512,    256,   -511}, 0, { -4118,  -5142}, {0x21, 0x65, 0xbd, 0xff}}},\n    {{{   461,    256,    461}, 0, {  5588,  -4632}, {0xdf, 0x65, 0xbd, 0xff}}},\n    {{{   512,    256,    512}, 0, {  6100,  -5142}, {0x43, 0x65, 0x21, 0xff}}},\n    {{{  -511,    256,    512}, 0, {  6100,   5076}, {0xdf, 0x65, 0x43, 0xff}}},\n    {{{  -460,    256,   -460}, 0, { -3606,   4566}, {0x21, 0x65, 0x43, 0xff}}},\n    {{{  -511,    256,   -511}, 0, { -4118,   5076}, {0xbd, 0x65, 0xdf, 0xff}}},\n    {{{  -460,    256,    461}, 0, {  5588,   4564}, {0x43, 0x65, 0xdf, 0xff}}},\n    {{{   461,    256,   -460}, 0, { -3606,  -4632}, {0xbd, 0x65, 0x21, 0xff}}},\n};\n\n// 0x070231D0 - 0x07023268\nstatic const Gfx ssl_seg7_dl_070231D0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_0900A800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ssl_seg7_lights_07022DA8.l, 1),\n    gsSPLight(&ssl_seg7_lights_07022DA8.a, 2),\n    gsSPVertex(ssl_seg7_vertex_07022DC0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  3,  0, 0x0,  1,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  3, 0x0,  1,  5,  6, 0x0),\n    gsSP2Triangles( 2,  1,  6, 0x0,  2,  6,  7, 0x0),\n    gsSP2Triangles( 7,  6,  5, 0x0,  7,  5,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07023268 - 0x070233A8\nstatic const Gfx ssl_seg7_dl_07023268[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ssl_seg7_vertex_07022E80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07022F70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07023060, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11,  7, 0x0,  7, 11,  8, 0x0),\n    gsSP2Triangles(10, 12, 11, 0x0,  9,  8, 13, 0x0),\n    gsSP2Triangles( 9, 13, 14, 0x0, 14, 12, 10, 0x0),\n    gsSP1Triangle(14, 13, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_07023150, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 2,  1,  6, 0x0,  3,  6,  4, 0x0),\n    gsSP2Triangles( 5,  4,  7, 0x0,  5,  7,  0, 0x0),\n    gsSP1Triangle( 0,  7,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070233A8 - 0x07023458\nconst Gfx ssl_seg7_dl_070233A8[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogFactor(0x0E49, 0xF2B7), // This isn't gsSPFogPosition since there is no valid min/max pair that corresponds to 0x0E49F2B7\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ssl_seg7_dl_070231D0),\n    gsSPDisplayList(ssl_seg7_dl_07023268),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x07023458 - 0x07023558\nstatic const Vtx ssl_seg7_vertex_07023458[] = {\n    {{{  -485,      0,   -485}, 0, {    96,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -485,    205,    486}, 0, {  9804,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -485,      0,    486}, 0, {  9804,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   486,      0,    486}, 0, {  9804,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -485,      0,    486}, 0, {    96,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -485,    205,    486}, 0, {    96,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   486,    205,    486}, 0, {  9804,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   486,      0,    486}, 0, {    96,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   486,    205,    486}, 0, {    96,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   486,    205,   -485}, 0, {  9804,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   486,      0,   -485}, 0, {  9804,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -485,      0,   -485}, 0, {  9804,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   486,    205,   -485}, 0, {    96,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -485,    205,   -485}, 0, {  9804,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   486,      0,   -485}, 0, {    96,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -485,    205,   -485}, 0, {    96,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07023558 - 0x070235C0\nstatic const Gfx ssl_seg7_dl_07023558[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ssl_seg7_vertex_07023458, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070235C0 - 0x07023678\nconst Gfx ssl_seg7_dl_070235C0[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogFactor(0x0E49, 0xF2B7), // This isn't gsSPFogPosition since there is no valid min/max pair that corresponds to 0x0E49F2B7\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ssl_seg7_dl_07023558),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ssl/pyramid_top/collision.inc.c",
    "content": "// 0x070125F4 - 0x07012642\nconst Collision ssl_seg7_collision_pyramid_top[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x5),\n    COL_VERTEX(-511, -255, 512),\n    COL_VERTEX(512, -255, -511),\n    COL_VERTEX(512, -255, 512),\n    COL_VERTEX(0, 256, 0),\n    COL_VERTEX(-511, -255, -511),\n    COL_TRI_INIT(SURFACE_HARD_SLIPPERY, 6),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(2, 1, 3),\n    COL_TRI(0, 4, 1),\n    COL_TRI(1, 4, 3),\n    COL_TRI(4, 0, 3),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/ssl/pyramid_top/geo.inc.c",
    "content": "// 0x0E000618\nconst GeoLayout ssl_geo_000618[] = {\n    GEO_CULLING_RADIUS(1000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, ssl_seg7_dl_0700BF18),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ssl/pyramid_top/model.inc.c",
    "content": "// 0x0700BD70 - 0x0700BD88\nstatic const Lights1 ssl_seg7_lights_0700BD70 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700BD88 - 0x0700BE48\nstatic const Vtx ssl_seg7_vertex_0700BD88[] = {\n    {{{   512,   -255,    512}, 0, {   480,    990}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{   512,   -255,   -511}, 0, {  4566,    990}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{     0,    256,      0}, 0, {  2522,  -1900}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{   512,   -255,   -511}, 0, {   480,    990}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{  -511,   -255,   -511}, 0, {  4568,    990}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{     0,    256,      0}, 0, {  2524,  -1900}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{  -511,   -255,   -511}, 0, {   478,    990}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{  -511,   -255,    512}, 0, {  4566,    990}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{     0,    256,      0}, 0, {  2522,  -1900}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{  -511,   -255,    512}, 0, {   480,    990}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{   512,   -255,    512}, 0, {  4566,    990}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{     0,    256,      0}, 0, {  2522,  -1900}, {0x00, 0x59, 0x59, 0xff}}},\n};\n\n// 0x0700BE48 - 0x0700BE88\nstatic const Vtx ssl_seg7_vertex_0700BE48[] = {\n    {{{  -511,   -255,    512}, 0, {  6100,  -7186}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   512,   -255,   -511}, 0, { 10188,  -3098}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   512,   -255,    512}, 0, {  6100,  -3098}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -511,   -255,   -511}, 0, { 10188,  -7186}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0700BE88 - 0x0700BEE0\nstatic const Gfx ssl_seg7_dl_0700BE88[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ssl_seg7_lights_0700BD70.l, 1),\n    gsSPLight(&ssl_seg7_lights_0700BD70.a, 2),\n    gsSPVertex(ssl_seg7_vertex_0700BD88, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700BEE0 - 0x0700BF18\nstatic const Gfx ssl_seg7_dl_0700BEE0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_0900A800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ssl_seg7_vertex_0700BE48, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700BF18 - 0x0700BF90\nconst Gfx ssl_seg7_dl_0700BF18[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ssl_seg7_dl_0700BE88),\n    gsSPDisplayList(ssl_seg7_dl_0700BEE0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ssl/script.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"behavior_data.h\"\n#include \"model_ids.h\"\n#include \"seq_ids.h\"\n#include \"segment_symbols.h\"\n#include \"level_commands.h\"\n\n#include \"game/level_update.h\"\n\n#include \"levels/scripts.h\"\n\n#include \"actors/common1.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/ssl/header.h\"\n\nstatic const LevelScript script_func_local_1[] = {\n    OBJECT(/*model*/ MODEL_SSL_PYRAMID_TOP, /*pos*/ -2047, 1536, -1023, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvPyramidTop),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_2[] = {\n    OBJECT          (/*model*/ MODEL_SSL_TOX_BOX,     /*pos*/ -1284,    0, -5895, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(TOX_BOX_BP_MOVEMENT_PATTERN_1), /*bhv*/ bhvToxBox),\n    OBJECT          (/*model*/ MODEL_SSL_TOX_BOX,     /*pos*/  1283,    0, -4865, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(TOX_BOX_BP_MOVEMENT_PATTERN_2), /*bhv*/ bhvToxBox),\n    OBJECT          (/*model*/ MODEL_SSL_TOX_BOX,     /*pos*/  4873,    0, -3335, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(TOX_BOX_BP_MOVEMENT_PATTERN_3), /*bhv*/ bhvToxBox),\n    OBJECT          (/*model*/ MODEL_TWEESTER,        /*pos*/ -3600, -200,  2940, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(0x12), /*bhv*/ bhvTweester),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_TWEESTER,        /*pos*/  1017, -200,  3832, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(0x19), /*bhv*/ bhvTweester, /*acts*/ ACT_4 | ACT_5 | ACT_6),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_TWEESTER,        /*pos*/  3066, -200,   400, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(0x19), /*bhv*/ bhvTweester, /*acts*/ ACT_4 | ACT_5 | ACT_6),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_KLEPTO,          /*pos*/  2200, 1174, -2820, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_1) | BPARAM2(0x01), /*bhv*/ bhvKlepto,   /*acts*/ ACT_1),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_KLEPTO,          /*pos*/ -5963,  573, -4784, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvKlepto,   /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_3[] = {\n    OBJECT_WITH_ACTS(/*model*/ MODEL_STAR, /*pos*/ -2050, 1200, -580, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_2), /*bhv*/ bhvStar,                 /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_NONE, /*pos*/  6000,  800, 3500, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_5), /*bhv*/ bhvHiddenRedCoinStar, /*acts*/ ALL_ACTS),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_4[] = {\n    OBJECT(/*model*/ MODEL_NONE,                    /*pos*/  2867,  640,  2867, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(77), /*bhv*/ bhvPoleGrabbing),\n    OBJECT(/*model*/ MODEL_NONE,                    /*pos*/     0, 3200,  1331, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(92), /*bhv*/ bhvPoleGrabbing),\n    OBJECT(/*model*/ MODEL_SSL_GRINDEL,             /*pos*/  3297,    0,    95, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(28), /*bhv*/ bhvGrindel),\n    OBJECT(/*model*/ MODEL_SSL_GRINDEL,             /*pos*/  -870, 3840,   105, /*angle*/ 0, 180, 0, /*bhvParam*/ 0, /*bhv*/ bhvHorizontalGrindel),\n    OBJECT(/*model*/ MODEL_SSL_GRINDEL,             /*pos*/ -3362,    0, -1385, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvHorizontalGrindel),\n    OBJECT(/*model*/ MODEL_SSL_SPINDEL,             /*pos*/ -2458, 2109, -1430, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvSpindel),\n    OBJECT(/*model*/ MODEL_SSL_MOVING_PYRAMID_WALL, /*pos*/   858, 1927, -2307, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(PYRAMID_WALL_BP_POSITION_HIGH),   /*bhv*/ bhvSSLMovingPyramidWall),\n    OBJECT(/*model*/ MODEL_SSL_MOVING_PYRAMID_WALL, /*pos*/   730, 1927, -2307, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(PYRAMID_WALL_BP_POSITION_MIDDLE), /*bhv*/ bhvSSLMovingPyramidWall),\n    OBJECT(/*model*/ MODEL_SSL_MOVING_PYRAMID_WALL, /*pos*/  1473, 2567, -2307, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(PYRAMID_WALL_BP_POSITION_MIDDLE), /*bhv*/ bhvSSLMovingPyramidWall),\n    OBJECT(/*model*/ MODEL_SSL_MOVING_PYRAMID_WALL, /*pos*/  1345, 2567, -2307, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(PYRAMID_WALL_BP_POSITION_LOW),    /*bhv*/ bhvSSLMovingPyramidWall),\n    OBJECT(/*model*/ MODEL_SSL_PYRAMID_ELEVATOR,    /*pos*/     0, 4966,   256, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvPyramidElevator),\n    OBJECT(/*model*/ MODEL_NONE,                    /*pos*/  1198, -133,  2396, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvSandSoundLoop),\n    OBJECT(/*model*/ MODEL_NONE,                    /*pos*/     7, 1229,  -708, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvSandSoundLoop),\n    OBJECT(/*model*/ MODEL_NONE,                    /*pos*/     7, 4317,  -708, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvSandSoundLoop),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_5[] = {\n    OBJECT_WITH_ACTS(/*model*/ MODEL_STAR, /*pos*/ 500, 5050, -500, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_3), /*bhv*/ bhvStar,        /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_NONE, /*pos*/ 900, 1400, 2350, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_6) | BPARAM2(0x04), /*bhv*/ bhvHiddenStar, /*acts*/ ALL_ACTS),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_6[] = {\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, -1534, -3693, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_4), /*bhv*/ bhvEyerokBoss),\n    RETURN(),\n};\n\nconst LevelScript level_ssl_entry[] = {\n    INIT_LEVEL(),\n    LOAD_MIO0        (/*seg*/ 0x07, _ssl_segment_7SegmentRomStart, _ssl_segment_7SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x0A, _ssl_skybox_mio0SegmentRomStart, _ssl_skybox_mio0SegmentRomEnd),\n    LOAD_MIO0_TEXTURE(/*seg*/ 0x09, _generic_mio0SegmentRomStart, _generic_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x05, _group5_mio0SegmentRomStart, _group5_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0C, _group5_geoSegmentRomStart,  _group5_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x08, _common0_mio0SegmentRomStart, _common0_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0F, _common0_geoSegmentRomStart,  _common0_geoSegmentRomEnd),\n    ALLOC_LEVEL_POOL(),\n    MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),\n    JUMP_LINK(script_func_global_1),\n    JUMP_LINK(script_func_global_6),\n    LOAD_MODEL_FROM_GEO(MODEL_SSL_PALM_TREE,           palm_tree_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_03,       ssl_geo_0005C0),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_04,       ssl_geo_0005D8),\n    LOAD_MODEL_FROM_GEO(MODEL_SSL_PYRAMID_TOP,         ssl_geo_000618),\n    LOAD_MODEL_FROM_GEO(MODEL_SSL_GRINDEL,             ssl_geo_000734),\n    LOAD_MODEL_FROM_GEO(MODEL_SSL_SPINDEL,             ssl_geo_000764),\n    LOAD_MODEL_FROM_GEO(MODEL_SSL_MOVING_PYRAMID_WALL, ssl_geo_000794),\n    LOAD_MODEL_FROM_GEO(MODEL_SSL_PYRAMID_ELEVATOR,    ssl_geo_0007AC),\n    LOAD_MODEL_FROM_GEO(MODEL_SSL_TOX_BOX,             ssl_geo_000630),\n\n    AREA(/*index*/ 1, ssl_geo_000648),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/   653, 1038,  6566, /*angle*/ 0,  90, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvSpinAirborneWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ -2048,    0,    56, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(WARP_NODE_14), /*bhv*/ bhvWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ -2048,  768, -1024, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(15) | BPARAM2(WARP_NODE_1E), /*bhv*/ bhvWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/  6930,    0, -4871, /*angle*/ 0, 159, 0, /*bhvParam*/ BPARAM2(WARP_NODE_1F), /*bhv*/ bhvFadingWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ -5943,    0, -4903, /*angle*/ 0,  49, 0, /*bhvParam*/ BPARAM2(WARP_NODE_20), /*bhv*/ bhvFadingWarp),\n        WARP_NODE(/*id*/ WARP_NODE_0A,      /*destLevel*/ LEVEL_SSL,    /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_14,      /*destLevel*/ LEVEL_SSL,    /*destArea*/ 2, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_1E,      /*destLevel*/ LEVEL_SSL,    /*destArea*/ 2, /*destNode*/ WARP_NODE_14, /*flags*/ WARP_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_1F,      /*destLevel*/ LEVEL_SSL,    /*destArea*/ 1, /*destNode*/ WARP_NODE_20, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_20,      /*destLevel*/ LEVEL_SSL,    /*destArea*/ 1, /*destNode*/ WARP_NODE_1F, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_SUCCESS, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 3, /*destNode*/ WARP_NODE_33, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH,   /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 3, /*destNode*/ WARP_NODE_65, /*flags*/ WARP_NO_CHECKPOINT),\n        JUMP_LINK(script_func_local_1),\n        JUMP_LINK(script_func_local_2),\n        JUMP_LINK(script_func_local_3),\n        TERRAIN(/*terrainData*/ ssl_seg7_area_1_collision),\n        MACRO_OBJECTS(/*objList*/ ssl_seg7_area_1_macro_objs),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0000, /*seq*/ SEQ_LEVEL_HOT),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_SAND),\n    END_AREA(),\n\n    AREA(/*index*/ 2, ssl_geo_0007CC),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/    0,  300,  6451, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvAirborneWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/    0, 5500,   256, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_14), /*bhv*/ bhvAirborneWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ 3070, 1280,  2900, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_15), /*bhv*/ bhvFadingWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ 2546, 1150, -2647, /*angle*/ 0,  78, 0, /*bhvParam*/ BPARAM2(WARP_NODE_16), /*bhv*/ bhvFadingWarp),\n        WARP_NODE(/*id*/ WARP_NODE_0A,      /*destLevel*/ LEVEL_SSL,    /*destArea*/ 2, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_14,      /*destLevel*/ LEVEL_SSL,    /*destArea*/ 2, /*destNode*/ WARP_NODE_14, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_15,      /*destLevel*/ LEVEL_SSL,    /*destArea*/ 2, /*destNode*/ WARP_NODE_16, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_16,      /*destLevel*/ LEVEL_SSL,    /*destArea*/ 2, /*destNode*/ WARP_NODE_15, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_SUCCESS, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 3, /*destNode*/ WARP_NODE_33, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH,   /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 3, /*destNode*/ WARP_NODE_65, /*flags*/ WARP_NO_CHECKPOINT),\n        JUMP_LINK(script_func_local_4),\n        JUMP_LINK(script_func_local_5),\n        INSTANT_WARP(/*index*/ 3, /*destArea*/ 3, /*displace*/ 0, 0, 0),\n        TERRAIN(/*terrainData*/ ssl_seg7_area_2_collision),\n        MACRO_OBJECTS(/*objList*/ ssl_seg7_area_2_macro_objs),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0004, /*seq*/ SEQ_LEVEL_UNDERGROUND),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_STONE),\n    END_AREA(),\n\n    AREA(/*index*/ 3, ssl_geo_00088C),\n        WARP_NODE(/*id*/ WARP_NODE_SUCCESS, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 3, /*destNode*/ WARP_NODE_33, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH,   /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 3, /*destNode*/ WARP_NODE_65, /*flags*/ WARP_NO_CHECKPOINT),\n        JUMP_LINK(script_func_local_6),\n        TERRAIN(/*terrainData*/ ssl_seg7_area_3_collision),\n        MACRO_OBJECTS(/*objList*/ ssl_seg7_area_3_macro_objs),\n        INSTANT_WARP(/*index*/ 2, /*destArea*/ 2, /*displace*/ 0, 0, 0),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0004, /*seq*/ SEQ_LEVEL_UNDERGROUND),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_STONE),\n    END_AREA(),\n\n    FREE_LEVEL_POOL(),\n    MARIO_POS(/*area*/ 1, /*yaw*/ 88, /*pos*/ 653, 38, 6566),\n    CALL(/*arg*/ 0, /*func*/ lvl_init_or_update),\n    CALL_LOOP(/*arg*/ 1, /*func*/ lvl_init_or_update),\n    CLEAR_LEVEL(),\n    SLEEP_BEFORE_EXIT(/*frames*/ 1),\n    EXIT(),\n};\n"
  },
  {
    "path": "levels/ssl/spindel/collision.inc.c",
    "content": "// 0x07027F54 - 0x0702808C\nconst Collision ssl_seg7_collision_spindel[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x12),\n    COL_VERTEX(-306, -77, 189),\n    COL_VERTEX(307, 78, 189),\n    COL_VERTEX(-306, 78, 189),\n    COL_VERTEX(307, -77, 189),\n    COL_VERTEX(-306, -188, 78),\n    COL_VERTEX(307, -188, 78),\n    COL_VERTEX(-306, -188, -77),\n    COL_VERTEX(307, -188, -77),\n    COL_VERTEX(-306, -77, -188),\n    COL_VERTEX(307, -77, -188),\n    COL_VERTEX(-306, 78, -188),\n    COL_VERTEX(-306, 189, -77),\n    COL_VERTEX(-306, 189, 78),\n    COL_VERTEX(-306, 0, 0),\n    COL_VERTEX(307, 189, 78),\n    COL_VERTEX(307, 78, -188),\n    COL_VERTEX(307, 189, -77),\n    COL_VERTEX(307, 0, 0),\n    COL_TRI_INIT(SURFACE_DEFAULT, 32),\n    COL_TRI(8, 9, 7),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI(4, 3, 0),\n    COL_TRI(4, 5, 3),\n    COL_TRI(6, 5, 4),\n    COL_TRI(6, 7, 5),\n    COL_TRI(12, 14, 16),\n    COL_TRI(8, 7, 6),\n    COL_TRI(10, 15, 9),\n    COL_TRI(10, 9, 8),\n    COL_TRI(11, 16, 15),\n    COL_TRI(11, 15, 10),\n    COL_TRI(12, 16, 11),\n    COL_TRI(13, 10, 8),\n    COL_TRI(13, 8, 6),\n    COL_TRI(13, 2, 12),\n    COL_TRI(13, 12, 11),\n    COL_TRI(13, 11, 10),\n    COL_TRI(1, 3, 17),\n    COL_TRI(13, 6, 4),\n    COL_TRI(13, 4, 0),\n    COL_TRI(13, 0, 2),\n    COL_TRI(14, 1, 17),\n    COL_TRI(15, 16, 17),\n    COL_TRI(3, 5, 17),\n    COL_TRI(5, 7, 17),\n    COL_TRI(7, 9, 17),\n    COL_TRI(9, 15, 17),\n    COL_TRI(2, 1, 14),\n    COL_TRI(16, 14, 17),\n    COL_TRI(2, 14, 12),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/ssl/spindel/geo.inc.c",
    "content": "// 0x0E000764\nconst GeoLayout ssl_geo_000764[] = {\n    GEO_CULLING_RADIUS(550),\n    GEO_OPEN_NODE(),\n        GEO_SHADOW(0x00 + SHADOW_RECTANGLE_HARDCODED_OFFSET, 0xB4, 0),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, ssl_seg7_dl_070228A8),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, ssl_seg7_dl_070229E8),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ssl/spindel/model.inc.c",
    "content": "// 0x070222A0 - 0x070222B8\nstatic const Lights1 ssl_seg7_lights_070222A0 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x070222B8 - 0x070223B8\nstatic const Vtx ssl_seg7_vertex_070222B8[] = {\n    {{{  -306,      0,      0}, 0, {   486,    912}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -306,     78,   -188}, 0, {   172,      0}, {0xb7, 0x1a, 0x9d, 0xff}}},\n    {{{  -306,    -77,   -188}, 0, {   798,      0}, {0xb7, 0xcc, 0xa7, 0xff}}},\n    {{{  -306,    -77,   -188}, 0, {   172,      0}, {0xb7, 0xcc, 0xa7, 0xff}}},\n    {{{  -306,   -188,    -77}, 0, {   798,      0}, {0xb7, 0x9d, 0xe6, 0xff}}},\n    {{{  -306,     78,    189}, 0, {   172,      0}, {0xb7, 0x34, 0x59, 0xff}}},\n    {{{  -306,    189,     78}, 0, {   798,      0}, {0xb7, 0x63, 0x1a, 0xff}}},\n    {{{  -306,    189,     78}, 0, {   172,      0}, {0xb7, 0x63, 0x1a, 0xff}}},\n    {{{  -306,    189,    -77}, 0, {   798,      0}, {0xb7, 0x59, 0xcc, 0xff}}},\n    {{{  -306,    189,    -77}, 0, {   172,      0}, {0xb7, 0x59, 0xcc, 0xff}}},\n    {{{  -306,     78,   -188}, 0, {   798,      0}, {0xb7, 0x1a, 0x9d, 0xff}}},\n    {{{   307,     78,    189}, 0, {   798,      0}, {0x49, 0x1a, 0x63, 0xff}}},\n    {{{   307,    -77,    189}, 0, {   172,      0}, {0x49, 0xcc, 0x59, 0xff}}},\n    {{{   307,      0,      0}, 0, {   486,    912}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -306,   -188,    -77}, 0, {   172,      0}, {0xb7, 0x9d, 0xe6, 0xff}}},\n    {{{  -306,   -188,     78}, 0, {   798,      0}, {0xb7, 0xa7, 0x34, 0xff}}},\n};\n\n// 0x070223B8 - 0x070224B8\nstatic const Vtx ssl_seg7_vertex_070223B8[] = {\n    {{{  -306,      0,      0}, 0, {   486,    912}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -306,   -188,     78}, 0, {   172,      0}, {0xb7, 0xa7, 0x34, 0xff}}},\n    {{{  -306,    -77,    189}, 0, {   798,      0}, {0xb7, 0xe6, 0x63, 0xff}}},\n    {{{  -306,    -77,    189}, 0, {   172,      0}, {0xb7, 0xe6, 0x63, 0xff}}},\n    {{{  -306,     78,    189}, 0, {   798,      0}, {0xb7, 0x34, 0x59, 0xff}}},\n    {{{   307,    189,     78}, 0, {   798,      0}, {0x49, 0x59, 0x34, 0xff}}},\n    {{{   307,     78,    189}, 0, {   172,      0}, {0x49, 0x1a, 0x63, 0xff}}},\n    {{{   307,      0,      0}, 0, {   486,    912}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   307,     78,   -188}, 0, {   798,      0}, {0x49, 0x34, 0xa7, 0xff}}},\n    {{{   307,    189,    -77}, 0, {   172,      0}, {0x49, 0x63, 0xe6, 0xff}}},\n    {{{   307,    -77,    189}, 0, {   798,      0}, {0x49, 0xcc, 0x59, 0xff}}},\n    {{{   307,   -188,     78}, 0, {   172,      0}, {0x49, 0x9d, 0x1a, 0xff}}},\n    {{{   307,   -188,     78}, 0, {   798,      0}, {0x49, 0x9d, 0x1a, 0xff}}},\n    {{{   307,   -188,    -77}, 0, {   172,      0}, {0x49, 0xa7, 0xcc, 0xff}}},\n    {{{   307,   -188,    -77}, 0, {   798,      0}, {0x49, 0xa7, 0xcc, 0xff}}},\n    {{{   307,    -77,   -188}, 0, {   172,      0}, {0x49, 0xe6, 0x9d, 0xff}}},\n};\n\n// 0x070224B8 - 0x07022508\nstatic const Vtx ssl_seg7_vertex_070224B8[] = {\n    {{{   307,    -77,   -188}, 0, {   798,      0}, {0x49, 0xe6, 0x9d, 0xff}}},\n    {{{   307,     78,   -188}, 0, {   172,      0}, {0x49, 0x34, 0xa7, 0xff}}},\n    {{{   307,      0,      0}, 0, {   486,    912}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   307,    189,    -77}, 0, {   798,      0}, {0x49, 0x63, 0xe6, 0xff}}},\n    {{{   307,    189,     78}, 0, {   172,      0}, {0x49, 0x59, 0x34, 0xff}}},\n};\n\n// 0x07022508 - 0x070225F8\nstatic const Vtx ssl_seg7_vertex_07022508[] = {\n    {{{  -306,    -77,   -188}, 0, {   990,   2012}, {0xb7, 0xcc, 0xa7, 0xff}}},\n    {{{   307,    -77,   -188}, 0, {   990,  -4120}, {0x49, 0xe6, 0x9d, 0xff}}},\n    {{{   307,   -188,    -77}, 0, {     0,  -4120}, {0x49, 0xa7, 0xcc, 0xff}}},\n    {{{  -306,    -77,    189}, 0, {   990,   2012}, {0xb7, 0xe6, 0x63, 0xff}}},\n    {{{   307,    -77,    189}, 0, {   990,  -4120}, {0x49, 0xcc, 0x59, 0xff}}},\n    {{{   307,     78,    189}, 0, {     0,  -4120}, {0x49, 0x1a, 0x63, 0xff}}},\n    {{{  -306,     78,    189}, 0, {     0,   2012}, {0xb7, 0x34, 0x59, 0xff}}},\n    {{{  -306,   -188,     78}, 0, {   990,   2012}, {0xb7, 0xa7, 0x34, 0xff}}},\n    {{{   307,    -77,    189}, 0, {     0,  -4120}, {0x49, 0xcc, 0x59, 0xff}}},\n    {{{  -306,    -77,    189}, 0, {     0,   2012}, {0xb7, 0xe6, 0x63, 0xff}}},\n    {{{   307,   -188,     78}, 0, {   990,  -4120}, {0x49, 0x9d, 0x1a, 0xff}}},\n    {{{  -306,   -188,    -77}, 0, {   990,   2012}, {0xb7, 0x9d, 0xe6, 0xff}}},\n    {{{   307,   -188,     78}, 0, {     0,  -4120}, {0x49, 0x9d, 0x1a, 0xff}}},\n    {{{  -306,   -188,     78}, 0, {     0,   2012}, {0xb7, 0xa7, 0x34, 0xff}}},\n    {{{   307,   -188,    -77}, 0, {   990,  -4120}, {0x49, 0xa7, 0xcc, 0xff}}},\n};\n\n// 0x070225F8 - 0x070226E8\nstatic const Vtx ssl_seg7_vertex_070225F8[] = {\n    {{{  -306,    189,     78}, 0, {   990,   2012}, {0xb7, 0x63, 0x1a, 0xff}}},\n    {{{   307,    189,     78}, 0, {   990,  -4120}, {0x49, 0x59, 0x34, 0xff}}},\n    {{{   307,    189,    -77}, 0, {     0,  -4120}, {0x49, 0x63, 0xe6, 0xff}}},\n    {{{  -306,    -77,   -188}, 0, {   990,   2012}, {0xb7, 0xcc, 0xa7, 0xff}}},\n    {{{   307,   -188,    -77}, 0, {     0,  -4120}, {0x49, 0xa7, 0xcc, 0xff}}},\n    {{{  -306,   -188,    -77}, 0, {     0,   2012}, {0xb7, 0x9d, 0xe6, 0xff}}},\n    {{{  -306,     78,   -188}, 0, {   990,   2012}, {0xb7, 0x1a, 0x9d, 0xff}}},\n    {{{   307,    -77,   -188}, 0, {     0,  -4120}, {0x49, 0xe6, 0x9d, 0xff}}},\n    {{{  -306,    -77,   -188}, 0, {     0,   2012}, {0xb7, 0xcc, 0xa7, 0xff}}},\n    {{{   307,     78,   -188}, 0, {   990,  -4120}, {0x49, 0x34, 0xa7, 0xff}}},\n    {{{  -306,    189,    -77}, 0, {   990,   2012}, {0xb7, 0x59, 0xcc, 0xff}}},\n    {{{   307,     78,   -188}, 0, {     0,  -4120}, {0x49, 0x34, 0xa7, 0xff}}},\n    {{{  -306,     78,   -188}, 0, {     0,   2012}, {0xb7, 0x1a, 0x9d, 0xff}}},\n    {{{   307,    189,    -77}, 0, {   990,  -4120}, {0x49, 0x63, 0xe6, 0xff}}},\n    {{{  -306,    189,    -77}, 0, {     0,   2012}, {0xb7, 0x59, 0xcc, 0xff}}},\n};\n\n// 0x070226E8 - 0x07022728\nstatic const Vtx ssl_seg7_vertex_070226E8[] = {\n    {{{  -306,     78,    189}, 0, {   990,   2012}, {0xb7, 0x34, 0x59, 0xff}}},\n    {{{   307,     78,    189}, 0, {   990,  -4120}, {0x49, 0x1a, 0x63, 0xff}}},\n    {{{   307,    189,     78}, 0, {     0,  -4120}, {0x49, 0x59, 0x34, 0xff}}},\n    {{{  -306,    189,     78}, 0, {     0,   2012}, {0xb7, 0x63, 0x1a, 0xff}}},\n};\n\n// 0x07022728 - 0x070227F0\nstatic const Gfx ssl_seg7_dl_07022728[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ssl_seg7_lights_070222A0.l, 1),\n    gsSPLight(&ssl_seg7_lights_070222A0.a, 2),\n    gsSPVertex(ssl_seg7_vertex_070222B8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  5,  6, 0x0,  0,  7,  8, 0x0),\n    gsSP2Triangles( 0,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14, 15, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070223B8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  9,  7, 0x0),\n    gsSP2Triangles(10, 11,  7, 0x0, 12, 13,  7, 0x0),\n    gsSP1Triangle(14, 15,  7, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070224B8, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070227F0 - 0x070228A8\nstatic const Gfx ssl_seg7_dl_070227F0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ssl_seg7_texture_07002800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ssl_seg7_vertex_07022508, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070225F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ssl_seg7_vertex_070226E8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070228A8 - 0x07022970\nconst Gfx ssl_seg7_dl_070228A8[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogFactor(0x0E49, 0xF2B7), // This isn't gsSPFogPosition since there is no valid min/max pair that corresponds to 0x0E49F2B7\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ssl_seg7_dl_07022728),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ssl_seg7_dl_070227F0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x07022970 - 0x070229B0\nstatic const Vtx ssl_seg7_vertex_07022970[] = {\n    {{{  -183,     82,    193}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   184,     82,    193}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   184,    193,     82}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -183,    193,     82}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070229B0 - 0x070229E8\nstatic const Gfx ssl_seg7_dl_070229B0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ssl_seg7_texture_07003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ssl_seg7_vertex_07022970, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070229E8 - 0x07022AA0\nconst Gfx ssl_seg7_dl_070229E8[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogFactor(0x0E49, 0xF2B7), // This isn't gsSPFogPosition since there is no valid min/max pair that corresponds to 0x0E49F2B7\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ssl_seg7_dl_070229B0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ssl/texture.inc.c",
    "content": "// 0x07000000 - 0x07000800\nALIGNED8 static const Texture ssl_seg7_texture_07000000[] = {\n#include \"levels/ssl/0.rgba16.inc.c\"\n};\n\n// 0x07000800 - 0x07001000\nALIGNED8 static const Texture ssl_seg7_texture_07000800[] = {\n#include \"levels/ssl/1.ia16.inc.c\"\n};\n\n// 0x07001000 - 0x07001800\nALIGNED8 const Texture ssl_pyramid_sand[] = {\n#include \"levels/ssl/2.rgba16.inc.c\"\n};\n\n// 0x07001800 - 0x07002000\nALIGNED8 static const Texture ssl_seg7_texture_07001800[] = {\n#include \"levels/ssl/3.rgba16.inc.c\"\n};\n\n// 0x07002000 - 0x07002800\nALIGNED8 static const Texture ssl_seg7_texture_07002000[] = {\n#include \"levels/ssl/4.rgba16.inc.c\"\n};\n\n// 0x07002800 - 0x07003800\nALIGNED8 static const Texture ssl_seg7_texture_07002800[] = {\n#include \"levels/ssl/5.rgba16.inc.c\"\n};\n\n// 0x07003800 - 0x07004000\nALIGNED8 static const Texture ssl_seg7_texture_07003800[] = {\n#include \"levels/ssl/6.rgba16.inc.c\"\n};\n"
  },
  {
    "path": "levels/ssl/tox_box/collision.inc.c",
    "content": "// 0x07012644 - 0x07012758\nconst Collision ssl_seg7_collision_tox_box[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x10),\n    COL_VERTEX(-255, 256, 256),\n    COL_VERTEX(256, 256, -255),\n    COL_VERTEX(-255, 256, -255),\n    COL_VERTEX(256, 256, 256),\n    COL_VERTEX(-255, -255, 256),\n    COL_VERTEX(256, -255, 256),\n    COL_VERTEX(256, -255, -255),\n    COL_VERTEX(-255, -255, -255),\n    COL_VERTEX(154, -255, 154),\n    COL_VERTEX(154, -255, -153),\n    COL_VERTEX(-153, -255, -153),\n    COL_VERTEX(-153, -255, 154),\n    COL_VERTEX(-153, 154, 154),\n    COL_VERTEX(-153, 154, -153),\n    COL_VERTEX(154, 154, -153),\n    COL_VERTEX(154, 154, 154),\n    COL_TRI_INIT(SURFACE_WALL_MISC, 28),\n    COL_TRI(12, 13, 14),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI(4, 0, 2),\n    COL_TRI(5, 0, 4),\n    COL_TRI(5, 3, 0),\n    COL_TRI(6, 3, 5),\n    COL_TRI(6, 1, 3),\n    COL_TRI(7, 1, 6),\n    COL_TRI(7, 2, 1),\n    COL_TRI(4, 2, 7),\n    COL_TRI(8, 6, 5),\n    COL_TRI(8, 9, 6),\n    COL_TRI(7, 6, 9),\n    COL_TRI(4, 8, 5),\n    COL_TRI(7, 9, 10),\n    COL_TRI(7, 11, 4),\n    COL_TRI(7, 10, 11),\n    COL_TRI(4, 11, 8),\n    COL_TRI(12, 11, 10),\n    COL_TRI(12, 10, 13),\n    COL_TRI(10, 14, 13),\n    COL_TRI(10, 9, 14),\n    COL_TRI(8, 11, 12),\n    COL_TRI(14, 9, 8),\n    COL_TRI(12, 14, 15),\n    COL_TRI(8, 12, 15),\n    COL_TRI(14, 8, 15),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/ssl/tox_box/geo.inc.c",
    "content": "// 0x0E000630\nconst GeoLayout ssl_geo_000630[] = {\n    GEO_CULLING_RADIUS(4000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, ssl_seg7_dl_0700FCE0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ssl/tox_box/model.inc.c",
    "content": "// 0x0700BF90 - 0x0700BFA8\nstatic const Lights1 ssl_seg7_lights_0700BF90 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700BFA8 - 0x0700C7A8\nALIGNED8 static const Texture ssl_seg7_texture_0700BFA8[] = {\n#include \"levels/ssl/8.rgba16.inc.c\"\n};\n\n// 0x0700C7A8 - 0x0700D7A8\nALIGNED8 static const Texture ssl_seg7_texture_0700C7A8[] = {\n#include \"levels/ssl/9.rgba16.inc.c\"\n};\n\n// 0x0700D7A8 - 0x0700E7A8\nALIGNED8 static const Texture ssl_seg7_texture_0700D7A8[] = {\n#include \"levels/ssl/10.rgba16.inc.c\"\n};\n\n// 0x0700E7A8 - 0x0700F7A8\nALIGNED8 static const Texture ssl_seg7_texture_0700E7A8[] = {\n#include \"levels/ssl/11.rgba16.inc.c\"\n};\n\n// 0x0700F7A8 - 0x0700F898\nstatic const Vtx ssl_seg7_vertex_0700F7A8[] = {\n    {{{  -153,   -255,   -153}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   154,   -255,   -153}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   154,    154,   -153}, 0, {   990,    -86}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -153,    154,    154}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -153,    154,   -153}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   154,    154,   -153}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   154,    154,    154}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -153,    154,    154}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -153,   -255,    154}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -153,   -255,   -153}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -153,    154,   -153}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   154,    154,   -153}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   154,   -255,    154}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   154,    154,    154}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   154,   -255,   -153}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700F898 - 0x0700F908\nstatic const Vtx ssl_seg7_vertex_0700F898[] = {\n    {{{   154,   -255,    154}, 0, {   -26,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -153,    154,    154}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   154,    154,    154}, 0, {   -26,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -153,   -255,   -153}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   154,    154,   -153}, 0, {   990,    -86}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -153,    154,   -153}, 0, {     0,    -86}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -153,   -255,    154}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700F908 - 0x0700FA08\nstatic const Vtx ssl_seg7_vertex_0700F908[] = {\n    {{{   256,   -255,   -255}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,    256,   -255}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,    256,    256}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -255,   -255,    256}, 0, {   990,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,    256,   -255}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,   -255,   -255}, 0, {     0,   2012}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,    256,    256}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   154,   -255,    154}, 0, {   172,   2012}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   154,   -255,   -153}, 0, {   786,   2012}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   256,   -255,   -255}, 0, {   990,   2012}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   256,   -255,    256}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,   -255,    256}, 0, {     0,   2012}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -255,   -255,   -255}, 0, {     0,   2012}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -153,   -255,    154}, 0, {   786,   2012}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -255,   -255,    256}, 0, {   990,   2012}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -153,   -255,   -153}, 0, {   172,   2012}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0700FA08 - 0x0700FB08\nstatic const Vtx ssl_seg7_vertex_0700FA08[] = {\n    {{{  -255,   -255,   -255}, 0, {   990,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -255,    256,   -255}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,    256,   -255}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,   -255,   -255}, 0, {     0,   2012}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -255,   -255,   -255}, 0, {   990,   2012}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   256,   -255,   -255}, 0, {     0,   2012}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   154,   -255,   -153}, 0, {   172,   2012}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -153,   -255,   -153}, 0, {   786,   2012}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   256,   -255,    256}, 0, {   990,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,    256,    256}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,    256,    256}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,   -255,    256}, 0, {     0,   2012}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   154,   -255,    154}, 0, {   786,   2012}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   256,   -255,    256}, 0, {   990,   2012}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -255,   -255,    256}, 0, {     0,   2012}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -153,   -255,    154}, 0, {   172,   2012}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0700FB08 - 0x0700FB48\nstatic const Vtx ssl_seg7_vertex_0700FB08[] = {\n    {{{  -255,    256,    256}, 0, {     0,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,    256,    256}, 0, {   990,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,    256,   -255}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,    256,   -255}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700FB48 - 0x0700FBD8\nstatic const Gfx ssl_seg7_dl_0700FB48[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ssl_seg7_texture_0700BFA8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ssl_seg7_lights_0700BF90.l, 1),\n    gsSPLight(&ssl_seg7_lights_0700BF90.a, 2),\n    gsSPVertex(ssl_seg7_vertex_0700F7A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ssl_seg7_vertex_0700F898, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  6,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700FBD8 - 0x0700FC40\nstatic const Gfx ssl_seg7_dl_0700FBD8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ssl_seg7_texture_0700C7A8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ssl_seg7_vertex_0700F908, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 0,  2, 10, 0x0,  7,  9, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700FC40 - 0x0700FCA8\nstatic const Gfx ssl_seg7_dl_0700FC40[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ssl_seg7_texture_0700E7A8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ssl_seg7_vertex_0700FA08, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles( 8, 10, 14, 0x0, 11, 15, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700FCA8 - 0x0700FCE0\nstatic const Gfx ssl_seg7_dl_0700FCA8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ssl_seg7_texture_0700D7A8),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ssl_seg7_vertex_0700FB08, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700FCE0 - 0x0700FD80\nconst Gfx ssl_seg7_dl_0700FCE0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ssl_seg7_dl_0700FB48),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ssl_seg7_dl_0700FBD8),\n    gsSPDisplayList(ssl_seg7_dl_0700FC40),\n    gsSPDisplayList(ssl_seg7_dl_0700FCA8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/thi/areas/1/1/model.inc.c",
    "content": "// 0x07001000 - 0x07001018\nstatic const Lights1 thi_seg7_lights_07001000 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07001018 - 0x07001030\nstatic const Lights1 thi_seg7_lights_07001018 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0x99, 0x99, 0x99, 0x28, 0x28, 0x28\n);\n\n// 0x07001030 - 0x07001048\nstatic const Lights1 thi_seg7_lights_07001030 = gdSPDefLights1(\n    0x5d, 0x5d, 0x5d,\n    0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28\n);\n\n// 0x07001048 - 0x07001060\nstatic const Lights1 thi_seg7_lights_07001048 = gdSPDefLights1(\n    0x7f, 0x7f, 0x3c,\n    0xff, 0xff, 0x78, 0x28, 0x28, 0x28\n);\n\n// 0x07001060 - 0x07001140\nstatic const Vtx thi_seg7_vertex_07001060[] = {\n    {{{ -4095,  -2559,  -7167}, 0, {  5808,   4638}, {0x33, 0x33, 0x99, 0xff}}},\n    {{{ -4095,  -6655,  -7167}, 0, {  5808,  10478}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{ -4607,  -6655,  -7167}, 0, {  6538,  10478}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -4607,  -2559,  -7167}, 0, {  6538,   4638}, {0x23, 0x77, 0xea, 0xff}}},\n    {{{ -4095,  -2559,  -4607}, 0, {  6538,   4638}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{ -4095,  -6655,  -4607}, 0, {  6538,  10478}, {0x18, 0x00, 0x84, 0xff}}},\n    {{{ -4095,  -6655,  -7167}, 0, { 10188,  10478}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{ -4095,  -2559,  -7167}, 0, { 10188,   4638}, {0x33, 0x33, 0x99, 0xff}}},\n    {{{ -5631,   -306,   -511}, 0, { -8060,    260}, {0x8d, 0x30, 0x15, 0xff}}},\n    {{{ -5119,    102,  -2149}, 0, { -7330,  -2076}, {0x05, 0x7d, 0x10, 0xff}}},\n    {{{ -5631,    205,  -4607}, 0, { -8060,  -5580}, {0xa9, 0x59, 0x16, 0xff}}},\n    {{{ -5128,  -3583,  -5221}, 0, { -7342,   6098}, {0xac, 0x00, 0xa2, 0xff}}},\n    {{{ -5128,  -1352,  -5220}, 0, { -7342,   2918}, {0xb2, 0xae, 0xc9, 0xff}}},\n    {{{ -3378,  -1330,  -5017}, 0, { -4848,   2886}, {0x18, 0xf2, 0x85, 0xff}}},\n};\n\n// 0x07001140 - 0x07001220\nstatic const Vtx thi_seg7_vertex_07001140[] = {\n    {{{ -3378,   -409,  -5324}, 0, {  7560,   1572}, {0x65, 0x48, 0x19, 0xff}}},\n    {{{ -3378,   -409,  -4607}, 0, {  6538,   1572}, {0x74, 0x32, 0x00, 0xff}}},\n    {{{ -3378,   -818,  -5017}, 0, {  7122,   2156}, {0x71, 0x32, 0xe7, 0xff}}},\n    {{{ -3378,  -1330,  -5017}, 0, { -4848,   2886}, {0x18, 0xf2, 0x85, 0xff}}},\n    {{{ -3378,  -6655,  -5017}, 0, { -4848,  10478}, {0xf7, 0x00, 0x82, 0xff}}},\n    {{{ -5128,  -6655,  -5221}, 0, { -7342,  10478}, {0x0e, 0x00, 0x82, 0xff}}},\n    {{{  -921,  -1433,  -5426}, 0, { -1344,   3032}, {0x1d, 0x26, 0x8b, 0xff}}},\n    {{{ -3378,   -818,  -5017}, 0, { -4848,   2156}, {0x71, 0x32, 0xe7, 0xff}}},\n    {{{ -5128,  -3583,  -5221}, 0, { -7342,   6098}, {0xac, 0x00, 0xa2, 0xff}}},\n    {{{  -921,  -6655,  -5426}, 0, { -1344,  10478}, {0x6f, 0x00, 0xc4, 0xff}}},\n    {{{ -3378,  -1330,  -5017}, 0, {  7122,   2886}, {0x18, 0xf2, 0x85, 0xff}}},\n    {{{ -3378,   -613,  -5631}, 0, {  7998,   1864}, {0x65, 0xd8, 0xc1, 0xff}}},\n    {{{ -3378,   -101,  -5631}, 0, {  7998,   1134}, {0x63, 0x4a, 0xe7, 0xff}}},\n    {{{ -3378,   -818,  -4607}, 0, {  6538,   2156}, {0x64, 0x4e, 0x00, 0xff}}},\n};\n\n// 0x07001220 - 0x07001310\nstatic const Vtx thi_seg7_vertex_07001220[] = {\n    {{{ -5128,    797,  -6244}, 0, {  8872,   -146}, {0x1e, 0x76, 0xdf, 0xff}}},\n    {{{ -5128,   -613,  -6244}, 0, {  8872,   1864}, {0xd7, 0xdc, 0x8e, 0xff}}},\n    {{{ -5617,    799,  -5703}, 0, {  8100,   -150}, {0xa7, 0x55, 0xe4, 0xff}}},\n    {{{ -5631,   -204,  -5631}, 0, {  7998,   1280}, {0x87, 0xe8, 0xe6, 0xff}}},\n    {{{ -5631,    205,  -4607}, 0, {  6538,    698}, {0xa9, 0x59, 0x16, 0xff}}},\n    {{{ -5631,   -204,  -4607}, 0, {  6538,   1280}, {0x8e, 0xce, 0x15, 0xff}}},\n    {{{ -5119,   -921,   -511}, 0, {   698,   2302}, {0x8b, 0xd1, 0x00, 0xff}}},\n    {{{ -3378,   -101,  -5631}, 0, { -4848,   1134}, {0x63, 0x4a, 0xe7, 0xff}}},\n    {{{ -5128,   -613,  -6244}, 0, { -7342,   1864}, {0xd7, 0xdc, 0x8e, 0xff}}},\n    {{{ -5128,    797,  -6244}, 0, { -7342,   -146}, {0x1e, 0x76, 0xdf, 0xff}}},\n    {{{ -3378,   -613,  -5631}, 0, { -4848,   1864}, {0x65, 0xd8, 0xc1, 0xff}}},\n    {{{ -5119,   -613,  -4607}, 0, {  6538,   1864}, {0x89, 0xd9, 0x12, 0xff}}},\n    {{{ -5128,  -1352,  -5220}, 0, {  7412,   2918}, {0xb2, 0xae, 0xc9, 0xff}}},\n    {{{ -5128,  -3583,  -5221}, 0, {  7412,   6098}, {0xac, 0x00, 0xa2, 0xff}}},\n    {{{ -5119,  -3583,   5120}, 0, { -7330,   6098}, {0x8f, 0x00, 0xc8, 0xff}}},\n};\n\n// 0x07001310 - 0x070013F0\nstatic const Vtx thi_seg7_vertex_07001310[] = {\n    {{{ -5119,   -921,   4096}, 0, { -7330,   2302}, {0xa9, 0xb8, 0x38, 0xff}}},\n    {{{ -5119,   -511,   4096}, 0, { -7330,   1718}, {0xac, 0x54, 0x2b, 0xff}}},\n    {{{ -5631,   -306,   4096}, 0, { -8060,   1426}, {0xfe, 0x62, 0x50, 0xff}}},\n    {{{ -5119,  -2047,  -7167}, 0, { -7330,  -9230}, {0xb1, 0x59, 0xd7, 0xff}}},\n    {{{ -5119,  -2047,  -6143}, 0, { -7330,  -7770}, {0x67, 0x3d, 0x27, 0xff}}},\n    {{{ -4607,  -1535,  -7167}, 0, { -6600,  -9230}, {0x23, 0x60, 0x4a, 0xff}}},\n    {{{ -5119,  -1535,  -8191}, 0, { -7330, -10690}, {0x8b, 0x2e, 0xf5, 0xff}}},\n    {{{ -4607,  -1023,  -8191}, 0, { -6600, -10690}, {0x4b, 0x25, 0xa2, 0xff}}},\n    {{{ -4607,  -1535,  -7167}, 0, { 10188,   3178}, {0x23, 0x60, 0x4a, 0xff}}},\n    {{{ -5119,  -2559,  -6143}, 0, {  8728,   4638}, {0x77, 0x1f, 0x1c, 0xff}}},\n    {{{ -4607,  -2559,  -7167}, 0, { 10188,   4638}, {0x23, 0x77, 0xea, 0xff}}},\n    {{{ -5119,  -2047,  -6143}, 0, {  8728,   3908}, {0x67, 0x3d, 0x27, 0xff}}},\n    {{{ -5119,  -2047,  -4607}, 0, {  6538,   3908}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{ -5119,  -2559,  -4607}, 0, {  6538,   4638}, {0x38, 0x71, 0x00, 0xff}}},\n};\n\n// 0x070013F0 - 0x070014F0\nstatic const Vtx thi_seg7_vertex_070013F0[] = {\n    {{{ -5119,  -3583,  -7167}, 0, {-10250,   6098}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{ -5119,  -2047,  -7167}, 0, {-10250,   3908}, {0xb1, 0x59, 0xd7, 0xff}}},\n    {{{ -5119,  -1535,  -8191}, 0, {-11710,   3178}, {0x8b, 0x2e, 0xf5, 0xff}}},\n    {{{ -5119,  -3583,  -8191}, 0, {-11710,   6098}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -921,  -6655,  -5426}, 0, {  7706,  10478}, {0x6f, 0x00, 0xc4, 0xff}}},\n    {{{  -921,  -1433,  -4607}, 0, {  6538,   3032}, {0x64, 0x4e, 0x00, 0xff}}},\n    {{{  -921,  -6655,  -4607}, 0, {  6538,  10478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -921,  -1433,  -5426}, 0, {  7706,   3032}, {0x1d, 0x26, 0x8b, 0xff}}},\n    {{{ -4607,  -6655,  -8191}, 0, {-11710,  10478}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -4607,  -1023,  -8191}, 0, {-11710,   2448}, {0x4b, 0x25, 0xa2, 0xff}}},\n    {{{ -4607,  -6655,  -7167}, 0, { -8790,  10478}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -5119,  -3583,   5120}, 0, { -7330,   6098}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{ -5119,   -921,   -511}, 0, {   698,   2302}, {0x8b, 0xd1, 0x00, 0xff}}},\n    {{{ -5119,   -613,  -4607}, 0, {  6538,   1864}, {0x89, 0xd9, 0x12, 0xff}}},\n    {{{ -5119,   -511,   4096}, 0, { -5870,   1718}, {0xac, 0x54, 0x2b, 0xff}}},\n    {{{ -5119,  -2969,   6349}, 0, { -9082,   5222}, {0x8f, 0x38, 0x00, 0xff}}},\n};\n\n// 0x070014F0 - 0x070015E0\nstatic const Vtx thi_seg7_vertex_070014F0[] = {\n    {{{ -5119,   -511,   4096}, 0, { -5870,   1718}, {0xac, 0x54, 0x2b, 0xff}}},\n    {{{ -5119,  -2713,   6400}, 0, { -9156,   4856}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5119,  -2713,   6502}, 0, { -9302,   4858}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5119,   -511,   8192}, 0, {-11710,   1718}, {0x96, 0x1f, 0x3e, 0xff}}},\n    {{{ -5119,  -2764,   6349}, 0, { -9082,   4930}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5119,  -2969,   6349}, 0, { -9082,   5222}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{ -5119,  -2764,   6554}, 0, { -9374,   4930}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5119,  -2969,   6554}, 0, { -9374,   5222}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{ -5119,  -2969,   8192}, 0, {-11710,   5222}, {0xea, 0x58, 0x58, 0xff}}},\n    {{{ -4607,  -1535,  -7167}, 0, { -8790,   3178}, {0x23, 0x60, 0x4a, 0xff}}},\n    {{{ -4607,  -6655,  -7167}, 0, { -8790,  10478}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -4607,  -1023,  -8191}, 0, {-11710,   2448}, {0x4b, 0x25, 0xa2, 0xff}}},\n    {{{ -1535,   -511,   1026}, 0, { -2078,   2010}, {0x7e, 0x00, 0xf1, 0xff}}},\n    {{{ -1535,      0,   1024}, 0, { -2074,    990}, {0x6b, 0x3d, 0x1b, 0xff}}},\n    {{{ -1497,   -204,   1331}, 0, { -2686,   1396}, {0x58, 0x2b, 0x4f, 0xff}}},\n};\n\n// 0x070015E0 - 0x070016D0\nstatic const Vtx thi_seg7_vertex_070015E0[] = {\n    {{{ -1497,   -204,   1331}, 0, { -2686,   1396}, {0x58, 0x2b, 0x4f, 0xff}}},\n    {{{ -1497,   -511,   1331}, 0, { -2686,   2010}, {0x3b, 0x00, 0x70, 0xff}}},\n    {{{ -1535,   -511,   1024}, 0, { -2074,   2010}, {0x52, 0x14, 0x5d, 0xff}}},\n    {{{ -1497,   -511,   1331}, 0, { -3020,   2010}, {0x3b, 0x00, 0x70, 0xff}}},\n    {{{ -1497,   -204,   1331}, 0, { -3020,   1396}, {0x58, 0x2b, 0x4f, 0xff}}},\n    {{{ -2559,   -204,   1331}, 0, { -5140,   1396}, {0x00, 0x10, 0x7d, 0xff}}},\n    {{{ -2559,   -511,   1331}, 0, { -5140,   2010}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4607,  -3583,   8192}, 0, { 16320,   8142}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -4607,  -2969,   7168}, 0, { 14276,   6916}, {0x6e, 0x3b, 0x12, 0xff}}},\n    {{{ -4607,  -2969,   8192}, 0, { 16320,   6916}, {0x6d, 0x05, 0x3f, 0xff}}},\n    {{{ -4607,  -3583,   7987}, 0, { 15912,   8142}, {0x61, 0x41, 0x30, 0xff}}},\n    {{{ -4607,  -2764,   6554}, 0, { 13050,   6506}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4607,  -2969,   6554}, 0, { 13050,   6916}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{ -4607,  -1535,   7168}, 0, { 14276,   4054}, {0x7d, 0x14, 0x05, 0xff}}},\n    {{{ -5119,   -511,   8192}, 0, { 16320,   2010}, {0x96, 0x1f, 0x3e, 0xff}}},\n};\n\n// 0x070016D0 - 0x070017D0\nstatic const Vtx thi_seg7_vertex_070016D0[] = {\n    {{{ -4607,  -3583,   8192}, 0, {  9166,   8142}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -4607,  -2969,   8192}, 0, {  9166,   6916}, {0x6d, 0x05, 0x3f, 0xff}}},\n    {{{ -5119,  -2969,   8192}, 0, { 10188,   6916}, {0xea, 0x58, 0x58, 0xff}}},\n    {{{ -5119,   -511,   8192}, 0, { 10188,   2010}, {0x96, 0x1f, 0x3e, 0xff}}},\n    {{{ -4607,  -2764,   6349}, 0, { 12640,   6506}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4607,  -2969,   6349}, 0, { 12640,   6916}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{ -4607,  -2969,   5120}, 0, { 10188,   6916}, {0x4c, 0x4d, 0x41, 0xff}}},\n    {{{ -4607,  -1023,  -8191}, 0, {  6538,   2448}, {0x4b, 0x25, 0xa2, 0xff}}},\n    {{{ -4607,  -6655,  -8191}, 0, {  6538,  10478}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -5119,  -6655,  -8191}, 0, {  7268,  10478}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4607,  -1535,   4096}, 0, {  8144,   4054}, {0x60, 0x1c, 0x4d, 0xff}}},\n    {{{ -4607,  -1535,   7168}, 0, { 14276,   4054}, {0x7d, 0x14, 0x05, 0xff}}},\n    {{{ -4607,  -2713,   6400}, 0, { 12744,   6404}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4607,  -2764,   6554}, 0, { 13050,   6506}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -4607,  -2713,   6502}, 0, { 12948,   6404}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -5119,   -511,   4096}, 0, {  8144,   2010}, {0xac, 0x54, 0x2b, 0xff}}},\n};\n\n// 0x070017D0 - 0x07001830\nstatic const Vtx thi_seg7_vertex_070017D0[] = {\n    {{{ -4607,  -1535,   7168}, 0, { 14276,   4054}, {0x7d, 0x14, 0x05, 0xff}}},\n    {{{ -5119,   -511,   4096}, 0, {  8144,   2010}, {0xac, 0x54, 0x2b, 0xff}}},\n    {{{ -5119,   -511,   8192}, 0, { 16320,   2010}, {0x96, 0x1f, 0x3e, 0xff}}},\n    {{{ -5119,  -6655,  -8191}, 0, {  7268,  10478}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5119,  -1535,  -8191}, 0, {  7268,   3178}, {0x8b, 0x2e, 0xf5, 0xff}}},\n    {{{ -4607,  -1023,  -8191}, 0, {  6538,   2448}, {0x4b, 0x25, 0xa2, 0xff}}},\n};\n\n// 0x07001830 - 0x07001920\nstatic const Vtx thi_seg7_vertex_07001830[] = {\n    {{{ -5128,  -1352,  -5220}, 0, {  7412,   2918}, {0xb2, 0xae, 0xc9, 0xff}}},\n    {{{ -5631,   -204,  -4607}, 0, {  6538,   1280}, {0x8e, 0xce, 0x15, 0xff}}},\n    {{{ -5631,   -204,  -5631}, 0, {  7998,   1280}, {0x87, 0xe8, 0xe6, 0xff}}},\n    {{{ -5128,   -613,  -6244}, 0, {  8872,   1864}, {0xd7, 0xdc, 0x8e, 0xff}}},\n    {{{ -5119,   -613,  -4607}, 0, {  6538,   1864}, {0x89, 0xd9, 0x12, 0xff}}},\n    {{{ -5119,   -921,   -511}, 0, {   698,   2302}, {0x8b, 0xd1, 0x00, 0xff}}},\n    {{{ -5128,  -1352,  -5220}, 0, { -7342,   2918}, {0xb2, 0xae, 0xc9, 0xff}}},\n    {{{ -5128,   -613,  -6244}, 0, { -7342,   1864}, {0xd7, 0xdc, 0x8e, 0xff}}},\n    {{{ -3378,   -613,  -5631}, 0, { -4848,   1864}, {0x65, 0xd8, 0xc1, 0xff}}},\n    {{{ -3378,  -1330,  -5017}, 0, { -4848,   2886}, {0x18, 0xf2, 0x85, 0xff}}},\n    {{{ -5631,   -306,   -511}, 0, {  -760,  -7040}, {0x8d, 0x30, 0x15, 0xff}}},\n    {{{ -5119,   -921,   -511}, 0, {  -760,  -6310}, {0x8b, 0xd1, 0x00, 0xff}}},\n    {{{ -5119,   -921,   4096}, 0, {  5808,  -6310}, {0xa9, 0xb8, 0x38, 0xff}}},\n    {{{ -5631,   -306,   4096}, 0, {  5808,  -7040}, {0xfe, 0x62, 0x50, 0xff}}},\n    {{{ -5631,    205,  -4607}, 0, { -6600,  -7040}, {0xa9, 0x59, 0x16, 0xff}}},\n};\n\n// 0x07001920 - 0x07001960\nstatic const Vtx thi_seg7_vertex_07001920[] = {\n    {{{ -2578,  -3583,   5700}, 0, {  4742,   2234}, {0x29, 0x6d, 0x32, 0xff}}},\n    {{{ -2578,  -1535,   4676}, 0, {  4180,      0}, {0x2f, 0xcc, 0x69, 0xff}}},\n    {{{ -4607,  -2969,   5120}, 0, {   530,   1682}, {0x4c, 0x4d, 0x41, 0xff}}},\n    {{{ -4607,  -1535,   4096}, 0, {     0,      0}, {0x60, 0x1c, 0x4d, 0xff}}},\n};\n\n// 0x07001960 - 0x070019F0\nstatic const Vtx thi_seg7_vertex_07001960[] = {\n    {{{ -2578,  -1535,   4676}, 0, { -9362,   2522}, {0x2f, 0xcc, 0x69, 0xff}}},\n    {{{ -2578,  -3583,   5700}, 0, {-11406,   4566}, {0x29, 0x6d, 0x32, 0xff}}},\n    {{{ -2562,  -1804,   1638}, 0, { -3300,   2790}, {0x4e, 0x23, 0x5d, 0xff}}},\n    {{{ -2578,  -1535,   4676}, 0, { -5178,  -3676}, {0x2f, 0xcc, 0x69, 0xff}}},\n    {{{ -1708,  -1535,   1631}, 0, { -3442,   -638}, {0x09, 0xca, 0x72, 0xff}}},\n    {{{ -1459,  -1459,   1629}, 0, { -2946,   -636}, {0x6d, 0xc6, 0x18, 0xff}}},\n    {{{ -1023,  -1023,   5120}, 0, { -2074,  -4120}, {0x52, 0xd3, 0x54, 0xff}}},\n    {{{ -2562,  -1535,   1638}, 0, { -5146,   -646}, {0x49, 0xb8, 0x49, 0xff}}},\n    {{{ -2562,  -1535,   1638}, 0, { -3300,   2522}, {0x49, 0xb8, 0x49, 0xff}}},\n};\n\n// 0x070019F0 - 0x07001A50\nstatic const Vtx thi_seg7_vertex_070019F0[] = {\n    {{{  5632,  -2764,  -1330}, 0, {     0,      0}, {0x1b, 0xdc, 0x8a, 0xff}}},\n    {{{  6042,  -2457,  -1330}, 0, { -1052,      0}, {0x39, 0xd7, 0x97, 0xff}}},\n    {{{  5632,  -3481,   -818}, 0, {   826,    736}, {0x5e, 0xac, 0xf2, 0xff}}},\n    {{{  5632,  -3481,   -818}, 0, {     0,   2154}, {0x5e, 0xac, 0xf2, 0xff}}},\n    {{{  6042,  -2457,    102}, 0, {   918,    802}, {0x51, 0xc4, 0x4b, 0xff}}},\n    {{{  5632,  -2764,    102}, 0, {     0,    990}, {0x18, 0xe0, 0x78, 0xff}}},\n};\n\n// 0x07001A50 - 0x07001B30\nstatic const Vtx thi_seg7_vertex_07001A50[] = {\n    {{{ -1279,   2202,  -1789}, 0, {  3776,      0}, {0xc1, 0x59, 0xc1, 0xff}}},\n    {{{ -2303,    666,   -765}, 0, {  1492,   1244}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{ -2303,   2202,   -765}, 0, {  1492,      0}, {0x9d, 0x49, 0xe6, 0xff}}},\n    {{{ -2303,   2202,   -765}, 0, {     0,      0}, {0x9d, 0x49, 0xe6, 0xff}}},\n    {{{ -2303,    666,    258}, 0, {  2012,    990}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -2303,   2202,    258}, 0, {  2012,      0}, {0xb7, 0x49, 0x49, 0xff}}},\n    {{{ -2303,    666,   -765}, 0, {     0,    990}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{ -2303,   2202,    258}, 0, {     0,      0}, {0xb7, 0x49, 0x49, 0xff}}},\n    {{{ -2303,    666,    258}, 0, {     0,   1244}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -1279,   2202,    258}, 0, {  1672,      0}, {0xbb, 0x5a, 0x38, 0xff}}},\n    {{{ -1586,   1690,  -1277}, 0, {  2012,      0}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{ -1791,    154,  -1277}, 0, {  1672,   1244}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2815,    154,  -1277}, 0, {     0,   1244}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -2815,   1690,  -1277}, 0, {     0,      0}, {0x99, 0x33, 0xcd, 0xff}}},\n};\n\n// 0x07001B30 - 0x07001C10\nstatic const Vtx thi_seg7_vertex_07001B30[] = {\n    {{{ -2815,   1690,   -253}, 0, {     0,      0}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{ -1791,    154,   -253}, 0, {  1672,   1244}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1586,   1690,   -253}, 0, {  2012,      0}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -2815,    154,   -253}, 0, {     0,   1244}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -2815,   1690,  -1277}, 0, {     0,      0}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{ -2815,    154,  -1277}, 0, {     0,    990}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -2815,    154,   -253}, 0, {  2012,    990}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -2815,   1690,   -253}, 0, {  2012,      0}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{ -1535,  -1535,   1024}, 0, {  6834,    820}, {0x65, 0x2e, 0x3b, 0xff}}},\n    {{{ -1459,  -1459,   1629}, 0, {  5820,    756}, {0x6d, 0xc6, 0x18, 0xff}}},\n    {{{ -1459,  -1804,   1629}, 0, {  5820,   1042}, {0x17, 0x5a, 0x55, 0xff}}},\n    {{{ -1535,   -511,   1024}, 0, {  6834,      0}, {0x52, 0x14, 0x5d, 0xff}}},\n    {{{ -1023,   -511,   5120}, 0, {     0,      0}, {0x27, 0x6f, 0x2e, 0xff}}},\n    {{{ -1023,  -1023,   5120}, 0, {     0,    394}, {0x52, 0xd3, 0x54, 0xff}}},\n};\n\n// 0x07001C10 - 0x07001D10\nstatic const Vtx thi_seg7_vertex_07001C10[] = {\n    {{{  -921,  -1637,  -5221}, 0, {  3648,      0}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{   922,  -1637,  -5221}, 0, {     0,      0}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{   922,  -2047,  -5221}, 0, {     0,    376}, {0x2f, 0x1d, 0x8e, 0xff}}},\n    {{{  -921,  -2457,  -5221}, 0, {  3648,    786}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   922,  -2457,  -5221}, 0, {     0,    786}, {0xe1, 0x00, 0x86, 0xff}}},\n    {{{   922,  -2047,  -5221}, 0, {  1194,    376}, {0x2f, 0x1d, 0x8e, 0xff}}},\n    {{{   922,  -1637,  -5221}, 0, {  1194,      0}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{   922,  -1637,  -4607}, 0, {     0,      0}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{   922,  -2047,  -4607}, 0, {     0,    376}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{  2970,  -2457,  -5631}, 0, {  2012,    376}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2970,  -2047,  -4607}, 0, {     0,      0}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{  2970,  -2457,  -4607}, 0, {     0,    376}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2970,  -2047,  -5631}, 0, {  2012,      0}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{  1946,  -2047,  -5631}, 0, {  1972,      0}, {0xed, 0x4d, 0x9d, 0xff}}},\n    {{{  2970,  -2047,  -5631}, 0, {     0,      0}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{  2970,  -2457,  -5631}, 0, {     0,    376}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07001D10 - 0x07001E10\nstatic const Vtx thi_seg7_vertex_07001D10[] = {\n    {{{  1946,  -2047,  -5631}, 0, {  1972,      0}, {0xed, 0x4d, 0x9d, 0xff}}},\n    {{{  2970,  -2457,  -5631}, 0, {     0,    376}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1946,  -2457,  -5631}, 0, {  1972,    376}, {0xe8, 0x00, 0x84, 0xff}}},\n    {{{   922,  -2457,  -5221}, 0, {  4136,    376}, {0xe1, 0x00, 0x86, 0xff}}},\n    {{{   922,  -2047,  -5221}, 0, {  4136,      0}, {0x2f, 0x1d, 0x8e, 0xff}}},\n    {{{ -7167,  -2047,  -3071}, 0, {     0,      0}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{ -5119,  -3583,  -3071}, 0, {  4056,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5119,  -2047,  -3071}, 0, {  4056,      0}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{ -7167,  -3583,  -3071}, 0, {     0,    990}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -6655,  -2047,  -6655}, 0, {     0,      0}, {0x93, 0x2f, 0xd4, 0xff}}},\n    {{{ -6655,  -3583,  -5119}, 0, {  3034,    990}, {0x86, 0x00, 0xe0, 0xff}}},\n    {{{ -6655,  -2047,  -5119}, 0, {  3034,      0}, {0xcb, 0x6e, 0xe1, 0xff}}},\n    {{{ -7167,  -2047,  -4607}, 0, {  4056,      0}, {0x8d, 0x2a, 0xe2, 0xff}}},\n    {{{ -7167,  -3583,  -3071}, 0, {  7122,    990}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -7167,  -2047,  -3071}, 0, {  7122,      0}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{ -7167,  -3583,  -4607}, 0, {  4056,    990}, {0x93, 0x00, 0xc0, 0xff}}},\n};\n\n// 0x07001E10 - 0x07001EF0\nstatic const Vtx thi_seg7_vertex_07001E10[] = {\n    {{{ -6655,  -2047,  -5119}, 0, {     0,      0}, {0xcb, 0x6e, 0xe1, 0xff}}},\n    {{{ -7167,  -3583,  -4607}, 0, {  1414,    990}, {0x93, 0x00, 0xc0, 0xff}}},\n    {{{ -7167,  -2047,  -4607}, 0, {  1414,      0}, {0x8d, 0x2a, 0xe2, 0xff}}},\n    {{{ -6655,  -3583,  -5119}, 0, {     0,    990}, {0x86, 0x00, 0xe0, 0xff}}},\n    {{{ -5119,  -2047,  -7167}, 0, {   -36,      0}, {0xb1, 0x59, 0xd7, 0xff}}},\n    {{{ -5119,  -3583,  -7167}, 0, {   -36,    990}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{ -6655,  -3583,  -6655}, 0, {  3194,    990}, {0xae, 0x00, 0xa0, 0xff}}},\n    {{{ -6655,  -2047,  -6655}, 0, {  3194,      0}, {0x93, 0x2f, 0xd4, 0xff}}},\n    {{{  6246,  -2047,    102}, 0, {     0,      0}, {0x25, 0x44, 0x63, 0xff}}},\n    {{{  6042,  -2457,    102}, 0, {     0,    272}, {0x51, 0xc4, 0x4b, 0xff}}},\n    {{{  6554,  -2047,   -818}, 0, {  1808,   -112}, {0x7a, 0xe1, 0xf4, 0xff}}},\n    {{{ -6655,  -2047,  -6655}, 0, {     0,      0}, {0x93, 0x2f, 0xd4, 0xff}}},\n    {{{ -6655,  -3583,  -6655}, 0, {     0,    990}, {0xae, 0x00, 0xa0, 0xff}}},\n    {{{ -6655,  -3583,  -5119}, 0, {  3034,    990}, {0x86, 0x00, 0xe0, 0xff}}},\n};\n\n// 0x07001EF0 - 0x07001FF0\nstatic const Vtx thi_seg7_vertex_07001EF0[] = {\n    {{{ -4607,  -1535,   4096}, 0, {   960,    990}, {0x60, 0x1c, 0x4d, 0xff}}},\n    {{{ -4607,   -511,   4096}, 0, {   960,      0}, {0xe9, 0x39, 0x6e, 0xff}}},\n    {{{ -5119,   -511,   4096}, 0, {     0,      0}, {0xac, 0x54, 0x2b, 0xff}}},\n    {{{ -2578,  -1535,   4676}, 0, {  5168,    990}, {0x2f, 0xcc, 0x69, 0xff}}},\n    {{{ -1023,  -1023,   5120}, 0, {  8396,    480}, {0x52, 0xd3, 0x54, 0xff}}},\n    {{{ -1023,   -511,   5120}, 0, {  8396,      0}, {0x27, 0x6f, 0x2e, 0xff}}},\n    {{{  -726,  -3583,   6284}, 0, {   990,    990}, {0xc1, 0x00, 0x93, 0xff}}},\n    {{{  -726,  -2559,   6284}, 0, {   990,      0}, {0xe7, 0x74, 0xd5, 0xff}}},\n    {{{  -296,  -2559,   6284}, 0, {     0,      0}, {0x26, 0x2c, 0x90, 0xff}}},\n    {{{  6042,  -2457,  -1330}, 0, {  2830,    272}, {0x39, 0xd7, 0x97, 0xff}}},\n    {{{  6246,  -2047,  -1330}, 0, {  2830,      0}, {0x20, 0x6a, 0xc4, 0xff}}},\n    {{{  6554,  -2047,   -818}, 0, {  1808,   -112}, {0x7a, 0xe1, 0xf4, 0xff}}},\n    {{{  5632,  -2764,    102}, 0, {     0,    684}, {0x18, 0xe0, 0x78, 0xff}}},\n    {{{  6042,  -2457,    102}, 0, {   786,    376}, {0x51, 0xc4, 0x4b, 0xff}}},\n    {{{  6246,  -2047,    102}, 0, {  1194,      0}, {0x25, 0x44, 0x63, 0xff}}},\n    {{{  5632,  -2047,    102}, 0, {     0,      0}, {0x00, 0x71, 0x38, 0xff}}},\n};\n\n// 0x07001FF0 - 0x070020D0\nstatic const Vtx thi_seg7_vertex_07001FF0[] = {\n    {{{  5632,  -2047,  -1330}, 0, {     0,      0}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  6042,  -2457,  -1330}, 0, {   786,    376}, {0x39, 0xd7, 0x97, 0xff}}},\n    {{{  5632,  -2764,  -1330}, 0, {     0,    684}, {0x1b, 0xdc, 0x8a, 0xff}}},\n    {{{  6246,  -2047,  -1330}, 0, {  1194,      0}, {0x20, 0x6a, 0xc4, 0xff}}},\n    {{{  -726,  -3583,   6284}, 0, {   990,    990}, {0xc1, 0x00, 0x93, 0xff}}},\n    {{{  -296,  -2559,   6284}, 0, {     0,      0}, {0x26, 0x2c, 0x90, 0xff}}},\n    {{{  -296,  -3583,   6284}, 0, {     0,    990}, {0x53, 0x00, 0xa0, 0xff}}},\n    {{{  -941,  -2559,   6656}, 0, {   990,      0}, {0x86, 0x23, 0x00, 0xff}}},\n    {{{  -726,  -3583,   6284}, 0, {     0,    990}, {0xc1, 0x00, 0x93, 0xff}}},\n    {{{  -941,  -3583,   6656}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -81,  -2559,   6656}, 0, {   990,      0}, {0x6d, 0x3f, 0x00, 0xff}}},\n    {{{  -296,  -3583,   7028}, 0, {     0,    990}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{   -81,  -3583,   6656}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -296,  -2559,   7028}, 0, {     0,      0}, {0x29, 0x5f, 0x48, 0xff}}},\n};\n\n// 0x070020D0 - 0x070021C0\nstatic const Vtx thi_seg7_vertex_070020D0[] = {\n    {{{  -296,  -3583,   6284}, 0, {   990,    990}, {0x53, 0x00, 0xa0, 0xff}}},\n    {{{   -81,  -2559,   6656}, 0, {     0,      0}, {0x6d, 0x3f, 0x00, 0xff}}},\n    {{{   -81,  -3583,   6656}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -296,  -2559,   6284}, 0, {   990,      0}, {0x26, 0x2c, 0x90, 0xff}}},\n    {{{  -296,  -3583,   7028}, 0, {   990,    990}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{  -296,  -2559,   7028}, 0, {   990,      0}, {0x29, 0x5f, 0x48, 0xff}}},\n    {{{  -726,  -2559,   7028}, 0, {     0,      0}, {0xdf, 0x4c, 0x5f, 0xff}}},\n    {{{  -726,  -3583,   7028}, 0, {     0,    990}, {0xad, 0x00, 0x60, 0xff}}},\n    {{{  -726,  -3583,   7028}, 0, {   990,    990}, {0xad, 0x00, 0x60, 0xff}}},\n    {{{  -726,  -2559,   7028}, 0, {   990,      0}, {0xdf, 0x4c, 0x5f, 0xff}}},\n    {{{  -941,  -2559,   6656}, 0, {     0,      0}, {0x86, 0x23, 0x00, 0xff}}},\n    {{{  -941,  -2559,   6656}, 0, {   990,      0}, {0x86, 0x23, 0x00, 0xff}}},\n    {{{  -726,  -2559,   6284}, 0, {     0,      0}, {0xe7, 0x74, 0xd5, 0xff}}},\n    {{{  -726,  -3583,   6284}, 0, {     0,    990}, {0xc1, 0x00, 0x93, 0xff}}},\n    {{{  -941,  -3583,   6656}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070021C0 - 0x07002220\nstatic const Vtx thi_seg7_vertex_070021C0[] = {\n    {{{ -1459,  -1804,   1629}, 0, {  4878,   1042}, {0x17, 0x5a, 0x55, 0xff}}},\n    {{{ -1459,  -1459,   1629}, 0, {  4878,    756}, {0x6d, 0xc6, 0x18, 0xff}}},\n    {{{ -1708,  -1535,   1631}, 0, {  4478,    820}, {0x09, 0xca, 0x72, 0xff}}},\n    {{{ -2562,  -1804,   1638}, 0, {  3104,   1042}, {0x4e, 0x23, 0x5d, 0xff}}},\n    {{{ -2562,  -1794,   1638}, 0, {  3104,   1034}, {0x01, 0x00, 0x7e, 0xff}}},\n    {{{ -2562,  -1535,   1638}, 0, {  3102,    820}, {0x49, 0xb8, 0x49, 0xff}}},\n};\n\n// 0x07002220 - 0x07002260\nstatic const Vtx thi_seg7_vertex_07002220[] = {\n    {{{  5632,  -3481,   -818}, 0, {  1808,   1004}, {0x5e, 0xac, 0xf2, 0xff}}},\n    {{{  6042,  -2457,  -1330}, 0, {  2830,    272}, {0x39, 0xd7, 0x97, 0xff}}},\n    {{{  6554,  -2047,   -818}, 0, {  1808,   -112}, {0x7a, 0xe1, 0xf4, 0xff}}},\n    {{{  6042,  -2457,    102}, 0, {     0,    272}, {0x51, 0xc4, 0x4b, 0xff}}},\n};\n\n// 0x07002260 - 0x07002360\nstatic const Vtx thi_seg7_vertex_07002260[] = {\n    {{{ -3583,   1229,   -511}, 0, { -7184,      0}, {0xda, 0x48, 0x60, 0xff}}},\n    {{{ -3583,   1016,  -1842}, 0, { -7184,  -2690}, {0xeb, 0x7b, 0xee, 0xff}}},\n    {{{ -4347,    717,  -1842}, 0, { -8708,  -2690}, {0xa0, 0x52, 0x04, 0xff}}},\n    {{{ -4230,    717,  -2457}, 0, { -8476,  -3916}, {0xbc, 0x5f, 0xd0, 0xff}}},\n    {{{ -4607,     64,  -3583}, 0, { -9228,  -6164}, {0xdf, 0x7a, 0xfb, 0xff}}},\n    {{{ -4607,     94,  -2457}, 0, { -9228,  -3916}, {0xe8, 0x7c, 0xfd, 0xff}}},\n    {{{ -4230,    341,  -2457}, 0, { -8476,  -3916}, {0xa9, 0x44, 0xc3, 0xff}}},\n    {{{ -3583,    512,  -3071}, 0, { -7184,  -5142}, {0xd6, 0x54, 0xac, 0xff}}},\n    {{{ -3583,    512,  -4607}, 0, { -7184,  -8208}, {0xe8, 0x6d, 0xc5, 0xff}}},\n    {{{ -4607,    -12,  -1842}, 0, { -9228,  -2690}, {0xf6, 0x75, 0x2e, 0xff}}},\n    {{{ -4347,   -511,   -511}, 0, { -8708,      0}, {0xaa, 0x57, 0x1f, 0xff}}},\n    {{{ -4347,     90,  -1842}, 0, { -8708,  -2690}, {0x99, 0x42, 0x1e, 0xff}}},\n    {{{ -2047,    819,  -3071}, 0, { -4118,  -5142}, {0x00, 0x7d, 0xec, 0xff}}},\n    {{{ -2047,   1229,   -511}, 0, { -4118,      0}, {0x00, 0x78, 0x29, 0xff}}},\n    {{{ -4607,   -511,   1024}, 0, { -9228,   3032}, {0xd6, 0x71, 0x24, 0xff}}},\n    {{{ -5119,   -511,   -511}, 0, {-10250,      0}, {0x14, 0x7b, 0x13, 0xff}}},\n};\n\n// 0x07002360 - 0x07002440\nstatic const Vtx thi_seg7_vertex_07002360[] = {\n    {{{ -3583,   1016,  -1842}, 0, { -7184,  -2690}, {0xeb, 0x7b, 0xee, 0xff}}},\n    {{{ -3583,    819,  -3071}, 0, { -7184,  -5142}, {0xc8, 0x41, 0xa3, 0xff}}},\n    {{{ -4230,    717,  -2457}, 0, { -8476,  -3916}, {0xbc, 0x5f, 0xd0, 0xff}}},\n    {{{ -2047,    819,  -3071}, 0, { -4118,  -5142}, {0x00, 0x7d, 0xec, 0xff}}},\n    {{{ -2559,    512,  -3071}, 0, { -5140,  -5142}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{ -3583,    512,  -4607}, 0, { -7184,  -8208}, {0xe8, 0x6d, 0xc5, 0xff}}},\n    {{{ -3583,    512,  -3071}, 0, { -6366,  -5142}, {0xd6, 0x54, 0xac, 0xff}}},\n    {{{ -1279,   2202,    258}, 0, { -2586,   1502}, {0xbb, 0x5a, 0x38, 0xff}}},\n    {{{ -1279,   2202,  -1789}, 0, { -2586,  -2584}, {0xc1, 0x59, 0xc1, 0xff}}},\n    {{{ -2303,   2202,   -765}, 0, { -4630,   -540}, {0x9d, 0x49, 0xe6, 0xff}}},\n    {{{ -4607,      0,  -4607}, 0, { -9228,  -8208}, {0xed, 0x53, 0xa3, 0xff}}},\n    {{{ -4607,     64,  -3583}, 0, { -9228,  -6164}, {0xdf, 0x7a, 0xfb, 0xff}}},\n    {{{ -5119,      0,  -4607}, 0, {-10250,  -8208}, {0x1a, 0x7b, 0xf2, 0xff}}},\n    {{{ -2559,    512,  -4607}, 0, { -5140,  -8208}, {0xe3, 0x1d, 0x89, 0xff}}},\n};\n\n// 0x07002440 - 0x07002530\nstatic const Vtx thi_seg7_vertex_07002440[] = {\n    {{{ -1586,   1690,  -1277}, 0, { -3198,  -1562}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{ -2815,   1690,  -1277}, 0, { -5652,  -1562}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{ -2815,   1690,   -253}, 0, { -5652,    482}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{ -1586,   1690,   -253}, 0, { -3198,    482}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -1279,   2202,    258}, 0, { -2586,   1502}, {0xbb, 0x5a, 0x38, 0xff}}},\n    {{{ -2303,   2202,   -765}, 0, { -4630,   -540}, {0x9d, 0x49, 0xe6, 0xff}}},\n    {{{ -2303,   2202,    258}, 0, { -4630,   1502}, {0xb7, 0x49, 0x49, 0xff}}},\n    {{{ -1023,   -511,   5120}, 0, { -2074,  11208}, {0x27, 0x6f, 0x2e, 0xff}}},\n    {{{ -4607,   -511,   1024}, 0, { -9228,   3032}, {0xd6, 0x71, 0x24, 0xff}}},\n    {{{ -4607,   -511,   4096}, 0, { -9228,   9164}, {0xe9, 0x39, 0x6e, 0xff}}},\n    {{{ -1535,   -511,   1024}, 0, { -3096,   3032}, {0x52, 0x14, 0x5d, 0xff}}},\n    {{{ -5119,   -511,   4096}, 0, {-10250,   9164}, {0xac, 0x54, 0x2b, 0xff}}},\n    {{{ -5119,   -511,   -511}, 0, {-10250,      0}, {0x14, 0x7b, 0x13, 0xff}}},\n    {{{ -4607,    -12,  -1842}, 0, { -9228,  -2690}, {0xf6, 0x75, 0x2e, 0xff}}},\n    {{{ -5119,    102,  -2149}, 0, {-10250,  -3302}, {0x05, 0x7d, 0x10, 0xff}}},\n};\n\n// 0x07002530 - 0x07002630\nstatic const Vtx thi_seg7_vertex_07002530[] = {\n    {{{ -4607,     64,  -3583}, 0, { -9228,  -6164}, {0xdf, 0x7a, 0xfb, 0xff}}},\n    {{{ -5119,      0,  -4607}, 0, {-10250,  -8208}, {0x1a, 0x7b, 0xf2, 0xff}}},\n    {{{ -5119,    102,  -2149}, 0, {-10250,  -3302}, {0x05, 0x7d, 0x10, 0xff}}},\n    {{{ -4607,     94,  -2457}, 0, { -9228,  -3916}, {0xe8, 0x7c, 0xfd, 0xff}}},\n    {{{ -5128,    285,  -5732}, 0, {-10268, -10454}, {0x31, 0x63, 0x3e, 0xff}}},\n    {{{ -5631,    205,  -4607}, 0, {-11272,  -8208}, {0xa9, 0x59, 0x16, 0xff}}},\n    {{{ -3378,   -409,  -4607}, 0, { -6776,  -8208}, {0x74, 0x32, 0x00, 0xff}}},\n    {{{ -3378,   -409,  -5324}, 0, { -6776,  -9638}, {0x65, 0x48, 0x19, 0xff}}},\n    {{{ -3378,   -818,  -5017}, 0, { -6776,  -9026}, {0x71, 0x32, 0xe7, 0xff}}},\n    {{{  -921,  -1433,  -4607}, 0, { -1870,  -8208}, {0x64, 0x4e, 0x00, 0xff}}},\n    {{{  -921,  -1433,  -5426}, 0, { -1870,  -9844}, {0x1d, 0x26, 0x8b, 0xff}}},\n    {{{ -4607,    -12,  -1842}, 0, { -9228,  -2690}, {0xf6, 0x75, 0x2e, 0xff}}},\n    {{{ -4607,    102,  -2149}, 0, { -9228,  -3302}, {0x00, 0x7d, 0x14, 0xff}}},\n    {{{ -4607,  -2559,  -7167}, 0, { -9228, -13318}, {0x23, 0x77, 0xea, 0xff}}},\n    {{{ -5119,  -2559,  -4607}, 0, {-10250,  -8208}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{ -4095,  -2559,  -4607}, 0, { -8206,  -8208}, {0x59, 0x59, 0x00, 0xff}}},\n};\n\n// 0x07002630 - 0x07002720\nstatic const Vtx thi_seg7_vertex_07002630[] = {\n    {{{ -4607,  -2559,  -7167}, 0, { -9228, -13318}, {0x23, 0x77, 0xea, 0xff}}},\n    {{{ -5119,  -2559,  -6143}, 0, {-10250, -11274}, {0x77, 0x1f, 0x1c, 0xff}}},\n    {{{ -5119,  -2559,  -4607}, 0, {-10250,  -8208}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{ -4095,  -2559,  -4607}, 0, { -8206,  -8208}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{ -4095,  -2559,  -7167}, 0, { -8206, -13318}, {0x33, 0x33, 0x99, 0xff}}},\n    {{{ -3378,   -818,  -5017}, 0, { -6776,  -9026}, {0x71, 0x32, 0xe7, 0xff}}},\n    {{{ -3378,   -818,  -4607}, 0, { -6776,  -8208}, {0x64, 0x4e, 0x00, 0xff}}},\n    {{{  -921,  -1433,  -4607}, 0, { -1870,  -8208}, {0x64, 0x4e, 0x00, 0xff}}},\n    {{{  7168,  -2559,   5632}, 0, { 14276,  12230}, {0x2f, 0x75, 0x0c, 0xff}}},\n    {{{  6349,  -2832,   6656}, 0, { 12640,  14274}, {0xe4, 0x7b, 0x0d, 0xff}}},\n    {{{  7168,  -2832,   6656}, 0, { 14276,  14274}, {0x39, 0x71, 0xfd, 0xff}}},\n    {{{  5632,  -2559,   5632}, 0, { 11210,  12230}, {0xae, 0x59, 0x25, 0xff}}},\n    {{{  5632,  -2559,   4864}, 0, { 11210,  10698}, {0xe5, 0x73, 0x2c, 0xff}}},\n    {{{  6400,  -2559,   4096}, 0, { 12744,   9164}, {0xd1, 0x6a, 0xce, 0xff}}},\n    {{{  5632,  -2559,   4096}, 0, { 11210,   9164}, {0x00, 0x38, 0x8f, 0xff}}},\n};\n\n// 0x07002720 - 0x07002820\nstatic const Vtx thi_seg7_vertex_07002720[] = {\n    {{{  4267,  -3583,   7168}, 0, {  8484,  15296}, {0xd0, 0x72, 0xe9, 0xff}}},\n    {{{  6349,  -2832,   7168}, 0, { 12640,  15296}, {0xf9, 0x7d, 0xeb, 0xff}}},\n    {{{  6349,  -2832,   6656}, 0, { 12640,  14274}, {0xe4, 0x7b, 0x0d, 0xff}}},\n    {{{  5632,  -3583,   5632}, 0, { 11210,  12230}, {0xfc, 0x63, 0x4f, 0xff}}},\n    {{{  6554,  -2832,   7066}, 0, { 13050,  15092}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6554,  -2832,   6861}, 0, { 13050,  14682}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  7168,  -2832,   6656}, 0, { 14276,  14274}, {0x39, 0x71, 0xfd, 0xff}}},\n    {{{  7168,  -2559,   5632}, 0, { 14276,  12230}, {0x2f, 0x75, 0x0c, 0xff}}},\n    {{{  7168,  -2559,   3584}, 0, { 14276,   8142}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{  6400,  -2559,   4096}, 0, { 12744,   9164}, {0xd1, 0x6a, 0xce, 0xff}}},\n    {{{  6758,  -2832,   6861}, 0, { 13458,  14682}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6861,  -2832,   7168}, 0, { 13662,  15296}, {0xe0, 0x79, 0xf1, 0xff}}},\n    {{{  7168,  -1945,   8192}, 0, { 14276,  17340}, {0xc2, 0x58, 0x42, 0xff}}},\n    {{{  6656,  -2559,   3584}, 0, { 13254,   8142}, {0xc7, 0x40, 0xa3, 0xff}}},\n    {{{  6758,  -2832,   7066}, 0, { 13458,  15092}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6656,  -2832,   7680}, 0, { 13254,  16318}, {0xa7, 0x58, 0x10, 0xff}}},\n};\n\n// 0x07002820 - 0x07002920\nstatic const Vtx thi_seg7_vertex_07002820[] = {\n    {{{  1946,  -2047,  -5631}, 0, {  3852, -10252}, {0xed, 0x4d, 0x9d, 0xff}}},\n    {{{   922,  -2047,  -4607}, 0, {  1808,  -8208}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{  2970,  -2047,  -4607}, 0, {  5896,  -8208}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{  6349,  -2832,   7168}, 0, { 12640,  15296}, {0xf9, 0x7d, 0xeb, 0xff}}},\n    {{{  5803,  -2832,   7168}, 0, { 11550,  15296}, {0xcd, 0x65, 0x37, 0xff}}},\n    {{{  6656,  -2832,   7680}, 0, { 13254,  16318}, {0xa7, 0x58, 0x10, 0xff}}},\n    {{{  7168,  -1945,   8192}, 0, { 14276,  17340}, {0xc2, 0x58, 0x42, 0xff}}},\n    {{{  6656,  -2832,   8192}, 0, { 13254,  17340}, {0x8a, 0x14, 0x29, 0xff}}},\n    {{{  5632,  -1535,  -4607}, 0, { 11210,  -8208}, {0x54, 0x54, 0xd6, 0xff}}},\n    {{{  7680,  -1535,  -6655}, 0, { 15298, -12296}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  5632,  -1535,  -6655}, 0, { 11210, -12296}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{  6656,  -1535,  -4607}, 0, { 13254,  -8208}, {0xac, 0x54, 0x2a, 0xff}}},\n    {{{  6656,  -1535,  -2559}, 0, { 13254,  -4120}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  7680,  -1535,  -2559}, 0, { 15298,  -4120}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{   922,  -2047,  -5221}, 0, {  1808,  -9434}, {0x2f, 0x1d, 0x8e, 0xff}}},\n    {{{  2970,  -2047,  -5631}, 0, {  5896, -10252}, {0x49, 0x49, 0xb7, 0xff}}},\n};\n\n// 0x07002920 - 0x07002A20\nstatic const Vtx thi_seg7_vertex_07002920[] = {\n    {{{   922,  -1637,  -4607}, 0, {  1808,  -8208}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{   922,  -1637,  -5221}, 0, {  1808,  -9434}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{  -921,  -1637,  -5221}, 0, { -1870,  -9434}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{  -921,  -1637,  -4607}, 0, { -1870,  -8208}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3378,   -409,  -5324}, 0, { -6776,  -9638}, {0x65, 0x48, 0x19, 0xff}}},\n    {{{ -3378,   -101,  -5631}, 0, { -6776, -10252}, {0x63, 0x4a, 0xe7, 0xff}}},\n    {{{ -5128,    285,  -5732}, 0, {-10268, -10454}, {0x31, 0x63, 0x3e, 0xff}}},\n    {{{ -5128,    797,  -6244}, 0, {-10268, -11476}, {0x1e, 0x76, 0xdf, 0xff}}},\n    {{{ -5617,    799,  -5703}, 0, {-11244, -10396}, {0xa7, 0x55, 0xe4, 0xff}}},\n    {{{ -5631,    205,  -4607}, 0, {-11272,  -8208}, {0xa9, 0x59, 0x16, 0xff}}},\n    {{{  1792,   2202,    258}, 0, {  3544,   1502}, {0x18, 0x4d, 0x61, 0xff}}},\n    {{{  2816,   3226,  -1789}, 0, {  5590,  -2584}, {0x2d, 0x73, 0x19, 0xff}}},\n    {{{  2304,   3226,  -1789}, 0, {  4568,  -2584}, {0x34, 0x70, 0x18, 0xff}}},\n    {{{ -5119,  -2047,  -7167}, 0, {-10250, -13318}, {0xb1, 0x59, 0xd7, 0xff}}},\n    {{{ -6655,  -2047,  -5119}, 0, {-13316,  -9230}, {0xcb, 0x6e, 0xe1, 0xff}}},\n    {{{ -5119,  -2047,  -4607}, 0, {-10250,  -8208}, {0x59, 0x59, 0x00, 0xff}}},\n};\n\n// 0x07002A20 - 0x07002B20\nstatic const Vtx thi_seg7_vertex_07002A20[] = {\n    {{{ -5119,  -2047,  -7167}, 0, {-10250, -13318}, {0xb1, 0x59, 0xd7, 0xff}}},\n    {{{ -6655,  -2047,  -6655}, 0, {-13316, -12296}, {0x93, 0x2f, 0xd4, 0xff}}},\n    {{{ -6655,  -2047,  -5119}, 0, {-13316,  -9230}, {0xcb, 0x6e, 0xe1, 0xff}}},\n    {{{ -7167,  -2047,  -4607}, 0, {-14338,  -8208}, {0x8d, 0x2a, 0xe2, 0xff}}},\n    {{{ -7167,  -2047,  -3071}, 0, {-14338,  -5142}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{ -5119,  -2047,  -3071}, 0, {-10250,  -5142}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{ -5119,  -2047,  -4607}, 0, {-10250,  -8208}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{  2816,   3226,  -1789}, 0, {  5590,  -2584}, {0x2d, 0x73, 0x19, 0xff}}},\n    {{{  2816,   3226,  -2909}, 0, {  5590,  -4818}, {0x1f, 0x61, 0xb5, 0xff}}},\n    {{{  2304,   3226,  -2909}, 0, {  4568,  -4818}, {0x11, 0x6f, 0xc7, 0xff}}},\n    {{{  2304,   3226,  -1789}, 0, {  4568,  -2584}, {0x34, 0x70, 0x18, 0xff}}},\n    {{{  1792,   2202,    258}, 0, {  3544,   1502}, {0x18, 0x4d, 0x61, 0xff}}},\n    {{{  2816,   2202,    258}, 0, {  5590,   1502}, {0x19, 0x3d, 0x6c, 0xff}}},\n    {{{  6246,  -2047,  -1330}, 0, { 12436,  -1668}, {0x20, 0x6a, 0xc4, 0xff}}},\n    {{{  6246,  -2047,    102}, 0, { 12436,   1192}, {0x25, 0x44, 0x63, 0xff}}},\n    {{{  6554,  -2047,   -818}, 0, { 13050,   -646}, {0x7a, 0xe1, 0xf4, 0xff}}},\n};\n\n// 0x07002B20 - 0x07002C00\nstatic const Vtx thi_seg7_vertex_07002B20[] = {\n    {{{  2560,   -511,   4096}, 0, {  5078,   9164}, {0x05, 0x61, 0x51, 0xff}}},\n    {{{  5632,   -511,   2049}, 0, { 11210,   5078}, {0x71, 0x2c, 0x24, 0xff}}},\n    {{{  5632,   -511,   1024}, 0, { 11210,   3032}, {0x22, 0x79, 0x0f, 0xff}}},\n    {{{  2560,   -511,   3072}, 0, {  5078,   7120}, {0xc1, 0x5f, 0x36, 0xff}}},\n    {{{  5632,   -511,    258}, 0, { 11210,   1502}, {0x4c, 0x56, 0x35, 0xff}}},\n    {{{  3072,    819,    258}, 0, {  6100,   1502}, {0x3a, 0x57, 0x47, 0xff}}},\n    {{{  3072,    819,   1024}, 0, {  6100,   3032}, {0x1a, 0x54, 0x5b, 0xff}}},\n    {{{   853,   -511,   1024}, 0, {  1672,   3032}, {0xdf, 0x27, 0x74, 0xff}}},\n    {{{  2560,  -1535,   4096}, 0, {  5078,   9164}, {0xde, 0x53, 0x58, 0xff}}},\n    {{{  5632,  -1535,   4096}, 0, { 11210,   9164}, {0x5e, 0x4b, 0x25, 0xff}}},\n    {{{  5632,  -1535,   2049}, 0, { 11210,   5078}, {0x5d, 0x2c, 0x49, 0xff}}},\n    {{{  6246,  -2047,  -1330}, 0, { 12436,  -1668}, {0x20, 0x6a, 0xc4, 0xff}}},\n    {{{  5632,  -2047,    102}, 0, { 11210,   1192}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  6246,  -2047,    102}, 0, { 12436,   1192}, {0x25, 0x44, 0x63, 0xff}}},\n};\n\n// 0x07002C00 - 0x07002D00\nstatic const Vtx thi_seg7_vertex_07002C00[] = {\n    {{{  2304,   3226,  -1789}, 0, {  4568,  -2584}, {0x34, 0x70, 0x18, 0xff}}},\n    {{{  2304,   3226,  -2909}, 0, {  4568,  -4818}, {0x11, 0x6f, 0xc7, 0xff}}},\n    {{{  1024,   4096,  -2555}, 0, {  2012,  -4112}, {0x0e, 0x7c, 0xee, 0xff}}},\n    {{{  6246,  -2047,  -1330}, 0, { 12436,  -1668}, {0x20, 0x6a, 0xc4, 0xff}}},\n    {{{  5632,  -2047,  -1330}, 0, { 11210,  -1668}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  5632,  -2047,    102}, 0, { 11210,   1192}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  7066,  -2559,    102}, 0, { 14072,   1192}, {0xed, 0x65, 0xb7, 0xff}}},\n    {{{  6656,  -2559,    717}, 0, { 13254,   2418}, {0x8b, 0x29, 0xe9, 0xff}}},\n    {{{  6656,  -2559,   2560}, 0, { 13254,   6098}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  7168,  -2559,   2560}, 0, { 14276,   6098}, {0x4d, 0x50, 0x3d, 0xff}}},\n    {{{  7680,  -2559,    717}, 0, { 15298,   2418}, {0x65, 0x49, 0xe9, 0xff}}},\n    {{{  7475,  -2559,    307}, 0, { 14890,   1602}, {0x4f, 0x3b, 0xb1, 0xff}}},\n    {{{  1024,   4096,   -507}, 0, {  2012,    -24}, {0x05, 0x7e, 0x06, 0xff}}},\n    {{{ -5119,    102,  -2149}, 0, {-10250,  -2280}, {0x05, 0x7d, 0x10, 0xff}}},\n    {{{ -5119,      0,  -4607}, 0, {-10250,  -7186}, {0x1a, 0x7b, 0xf2, 0xff}}},\n    {{{ -5631,    205,  -4607}, 0, {-11272,  -7186}, {0xa9, 0x59, 0x16, 0xff}}},\n};\n\n// 0x07002D00 - 0x07002E00\nstatic const Vtx thi_seg7_vertex_07002D00[] = {\n    {{{ -5119,   -511,   -511}, 0, {-10250,    990}, {0x14, 0x7b, 0x13, 0xff}}},\n    {{{ -5631,   -306,   -511}, 0, {-11272,    990}, {0x8d, 0x30, 0x15, 0xff}}},\n    {{{ -5631,   -306,   4096}, 0, {-11272,  10186}, {0xfe, 0x62, 0x50, 0xff}}},\n    {{{ -5119,   -511,   4096}, 0, {-10250,  10186}, {0xac, 0x54, 0x2b, 0xff}}},\n    {{{ -5631,   -306,   -511}, 0, { -8060,    260}, {0x8d, 0x30, 0x15, 0xff}}},\n    {{{ -5119,   -511,   -511}, 0, { -7330,    260}, {0x14, 0x7b, 0x13, 0xff}}},\n    {{{ -5119,    102,  -2149}, 0, { -7330,  -2076}, {0x05, 0x7d, 0x10, 0xff}}},\n    {{{  -726,  -2559,   6284}, 0, { -1482,  13530}, {0xe7, 0x74, 0xd5, 0xff}}},\n    {{{   -81,  -2559,   6656}, 0, {  -194,  14274}, {0x6d, 0x3f, 0x00, 0xff}}},\n    {{{  -296,  -2559,   6284}, 0, {  -622,  13530}, {0x26, 0x2c, 0x90, 0xff}}},\n    {{{  -941,  -2559,   6656}, 0, { -1910,  14274}, {0x86, 0x23, 0x00, 0xff}}},\n    {{{  -726,  -2559,   7028}, 0, { -1482,  15018}, {0xdf, 0x4c, 0x5f, 0xff}}},\n    {{{ -2578,  -3583,   5700}, 0, { -5178,  12364}, {0x29, 0x6d, 0x32, 0xff}}},\n    {{{ -4607,  -2969,   5120}, 0, { -9228,  11208}, {0x4c, 0x4d, 0x41, 0xff}}},\n    {{{ -4607,  -2969,   7168}, 0, { -9228,  15296}, {0x6e, 0x3b, 0x12, 0xff}}},\n    {{{  -296,  -2559,   7028}, 0, {  -622,  15018}, {0x29, 0x5f, 0x48, 0xff}}},\n};\n\n// 0x07002E00 - 0x07002F00\nstatic const Vtx thi_seg7_vertex_07002E00[] = {\n    {{{ -2559,    512,   1536}, 0, { -5140,   4054}, {0x42, 0x67, 0x1e, 0xff}}},\n    {{{ -2559,    512,   -511}, 0, { -5140,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3583,    512,   -511}, 0, { -7184,      0}, {0xe2, 0x61, 0x4b, 0xff}}},\n    {{{ -3583,    512,   1024}, 0, { -7184,   3032}, {0xc1, 0x67, 0x25, 0xff}}},\n    {{{ -2559,    512,   1024}, 0, { -5140,      0}, {0xd8, 0x4d, 0x5b, 0xff}}},\n    {{{ -1497,   -204,   1331}, 0, { -3020,   1396}, {0x58, 0x2b, 0x4f, 0xff}}},\n    {{{ -1535,      0,   1024}, 0, { -3096,    990}, {0x6b, 0x3d, 0x1b, 0xff}}},\n    {{{ -2559,   -204,   1331}, 0, { -5140,   1396}, {0x00, 0x10, 0x7d, 0xff}}},\n    {{{ -3583,  -3583,   7680}, 0, { -7184,  16318}, {0x27, 0x6c, 0x34, 0xff}}},\n    {{{ -2578,  -3583,   5700}, 0, { -5178,  12364}, {0x29, 0x6d, 0x32, 0xff}}},\n    {{{ -4607,  -2969,   7168}, 0, { -9228,  15296}, {0x6e, 0x3b, 0x12, 0xff}}},\n    {{{ -4607,  -3583,   7987}, 0, { -9228,  16932}, {0x61, 0x41, 0x30, 0xff}}},\n    {{{ -5119,  -2969,   5120}, 0, {-10250,  11208}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{ -7167,  -2969,   5120}, 0, {-14338,  11208}, {0xc7, 0x40, 0xa3, 0xff}}},\n    {{{ -5119,  -2969,   8192}, 0, {-10250,  17340}, {0xea, 0x58, 0x58, 0xff}}},\n    {{{ -7679,  -2969,   6144}, 0, {-15360,  13252}, {0xd5, 0x60, 0xbb, 0xff}}},\n};\n\n// 0x07002F00 - 0x07002F40\nstatic const Vtx thi_seg7_vertex_07002F00[] = {\n    {{{ -7679,  -2969,   6144}, 0, {-15360,  13252}, {0xd5, 0x60, 0xbb, 0xff}}},\n    {{{ -8191,  -2969,   6144}, 0, {-16382,  13252}, {0xb7, 0x49, 0xb7, 0xff}}},\n    {{{ -5119,  -2969,   8192}, 0, {-10250,  17340}, {0xea, 0x58, 0x58, 0xff}}},\n    {{{ -8191,  -2969,   8192}, 0, {-16382,  17340}, {0xb7, 0x49, 0x49, 0xff}}},\n};\n\n// 0x07002F40 - 0x07002F80\nstatic const Vtx thi_seg7_vertex_07002F40[] = {\n    {{{ -4607,  -2969,   6349}, 0, { -9228,  13660}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{ -5119,  -2969,   6349}, 0, {-10250,  13660}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{ -5119,  -2969,   6554}, 0, {-10250,  14070}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{ -4607,  -2969,   6554}, 0, { -9228,  14070}, {0x59, 0x59, 0x00, 0xff}}},\n};\n\n// 0x07002F80 - 0x07003080\nstatic const Vtx thi_seg7_vertex_07002F80[] = {\n    {{{  6349,  -2832,   6656}, 0, {  2524,    358}, {0xe4, 0x7b, 0x0d, 0xff}}},\n    {{{  5632,  -2559,   5632}, 0, {  1064,      0}, {0xae, 0x59, 0x25, 0xff}}},\n    {{{  5632,  -3583,   5632}, 0, {  1064,   1426}, {0xfc, 0x63, 0x4f, 0xff}}},\n    {{{ -2559,    819,  -4607}, 0, {  6538,   -178}, {0x9d, 0x3a, 0xcc, 0xff}}},\n    {{{ -2559,    819,   1024}, 0, { -1490,   -178}, {0xdd, 0x21, 0x75, 0xff}}},\n    {{{ -1279,   2202,    258}, 0, {  -398,  -2150}, {0xbb, 0x5a, 0x38, 0xff}}},\n    {{{ -1279,   2202,  -3325}, 0, {  4710,  -2150}, {0xca, 0x4a, 0xa9, 0xff}}},\n    {{{ -2559,    512,   1024}, 0, { -1490,    260}, {0xd8, 0x4d, 0x5b, 0xff}}},\n    {{{ -2559,    512,  -4607}, 0, {  6538,    260}, {0xe3, 0x1d, 0x89, 0xff}}},\n    {{{ -1023,   4096,  -2555}, 0, {  3612,  -4850}, {0xca, 0x67, 0xcf, 0xff}}},\n    {{{ -1023,   4096,   -507}, 0, {   692,  -4850}, {0x04, 0x76, 0x2d, 0xff}}},\n    {{{ -5119,  -3583,   5120}, 0, { -7330,   6098}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{ -7167,  -2969,   5120}, 0, {-10250,   5222}, {0xc7, 0x40, 0xa3, 0xff}}},\n    {{{ -5119,  -2969,   5120}, 0, { -7330,   5222}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{ -7167,  -3583,   5120}, 0, {-10250,   6098}, {0xbe, 0x00, 0x94, 0xff}}},\n    {{{  5632,  -2559,   4864}, 0, {     0,      0}, {0xe5, 0x73, 0x2c, 0xff}}},\n};\n\n// 0x07003080 - 0x07003180\nstatic const Vtx thi_seg7_vertex_07003080[] = {\n    {{{ -2559,    819,   1024}, 0, { -3680,   -178}, {0xdd, 0x21, 0x75, 0xff}}},\n    {{{  3072,    819,   1024}, 0, {  4348,   -178}, {0x1a, 0x54, 0x5b, 0xff}}},\n    {{{  1792,   2202,    258}, 0, {  2524,  -2150}, {0x18, 0x4d, 0x61, 0xff}}},\n    {{{ -2559,   -511,   1024}, 0, { -3680,   1718}, {0x78, 0x00, 0x28, 0xff}}},\n    {{{ -1535,   -511,   1024}, 0, { -2220,   1718}, {0x52, 0x14, 0x5d, 0xff}}},\n    {{{   307,   -306,   1024}, 0, {   406,   1426}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   512,   -306,   1024}, 0, {   698,   1426}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1279,   2202,    258}, 0, { -1856,  -2150}, {0xbb, 0x5a, 0x38, 0xff}}},\n    {{{   853,   -511,   1024}, 0, {  1184,   1718}, {0xdf, 0x27, 0x74, 0xff}}},\n    {{{     0,  -1535,   1024}, 0, {     0,   3178}, {0xd7, 0x4a, 0x5e, 0xff}}},\n    {{{   307,   -511,   1024}, 0, {   406,   1718}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1535,  -1535,   1024}, 0, { -2220,   3178}, {0x65, 0x2e, 0x3b, 0xff}}},\n    {{{  5632,  -3583,   5632}, 0, {  7998,   6098}, {0xfc, 0x63, 0x4f, 0xff}}},\n    {{{  2560,  -1535,   4096}, 0, {  3618,   3178}, {0xde, 0x53, 0x58, 0xff}}},\n    {{{  2560,  -3583,   6144}, 0, {  3618,   6098}, {0xed, 0x69, 0x44, 0xff}}},\n    {{{  5632,  -2559,   4864}, 0, {  7998,   4638}, {0xe5, 0x73, 0x2c, 0xff}}},\n};\n\n// 0x07003180 - 0x07003270\nstatic const Vtx thi_seg7_vertex_07003180[] = {\n    {{{  5632,  -2559,   4864}, 0, {  7998,   4638}, {0xe5, 0x73, 0x2c, 0xff}}},\n    {{{  5632,  -1535,   4096}, 0, {  7998,   3178}, {0x5e, 0x4b, 0x25, 0xff}}},\n    {{{  2560,  -1535,   4096}, 0, {  3618,   3178}, {0xde, 0x53, 0x58, 0xff}}},\n    {{{  5632,  -1535,   2049}, 0, {  7998,   3178}, {0x5d, 0x2c, 0x49, 0xff}}},\n    {{{  2560,   -511,   4096}, 0, {  3618,   1718}, {0x05, 0x61, 0x51, 0xff}}},\n    {{{  5632,  -6655,  -4607}, 0, {  6538,  10478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5632,  -1535,   4096}, 0, { -5870,   3178}, {0x5e, 0x4b, 0x25, 0xff}}},\n    {{{  5632,  -3583,   5632}, 0, { -8060,   6098}, {0xfc, 0x63, 0x4f, 0xff}}},\n    {{{  5632,  -6655,   5632}, 0, { -8060,  10478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5632,   -511,  -4611}, 0, {  7998,   1718}, {0x26, 0x3c, 0x98, 0xff}}},\n    {{{  1792,   2202,  -3325}, 0, {  2524,  -2150}, {0x00, 0x31, 0x8b, 0xff}}},\n    {{{  2816,   3226,  -2909}, 0, {  3984,  -3610}, {0x1f, 0x61, 0xb5, 0xff}}},\n    {{{  5632,  -1535,  -4607}, 0, {  6538,   3178}, {0x54, 0x54, 0xd6, 0xff}}},\n    {{{  5632,  -1535,  -6655}, 0, {  9458,   3178}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{  5632,  -6655,  -6655}, 0, {  9458,  10478}, {0xc8, 0x00, 0x8f, 0xff}}},\n};\n\n// 0x07003270 - 0x07003370\nstatic const Vtx thi_seg7_vertex_07003270[] = {\n    {{{   512,   -306,   1024}, 0, {   698,   1426}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   512,   -511,   1024}, 0, {   698,   1718}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   853,   -511,   1024}, 0, {  1184,   1718}, {0xdf, 0x27, 0x74, 0xff}}},\n    {{{  5632,   -511,  -4611}, 0, {  6544,   1718}, {0x26, 0x3c, 0x98, 0xff}}},\n    {{{  2816,   3226,  -2909}, 0, {  4118,  -3610}, {0x1f, 0x61, 0xb5, 0xff}}},\n    {{{  2816,   3226,  -1789}, 0, {  2520,  -3610}, {0x2d, 0x73, 0x19, 0xff}}},\n    {{{  5632,   -511,    258}, 0, {  -398,   1718}, {0x4c, 0x56, 0x35, 0xff}}},\n    {{{  3072,    819,   1024}, 0, { -1490,   -178}, {0x1a, 0x54, 0x5b, 0xff}}},\n    {{{  3072,    819,    258}, 0, {  -398,   -178}, {0x3a, 0x57, 0x47, 0xff}}},\n    {{{  1792,   2202,    258}, 0, {  -398,  -2150}, {0x18, 0x4d, 0x61, 0xff}}},\n    {{{  1792,   2202,  -3325}, 0, {  2524,  -2150}, {0x00, 0x31, 0x8b, 0xff}}},\n    {{{  2304,   3226,  -2909}, 0, {  3254,  -3610}, {0x11, 0x6f, 0xc7, 0xff}}},\n    {{{  2816,   3226,  -2909}, 0, {  3984,  -3610}, {0x1f, 0x61, 0xb5, 0xff}}},\n    {{{  1024,   4096,  -2555}, 0, {  1428,  -4850}, {0x0e, 0x7c, 0xee, 0xff}}},\n    {{{  5632,   -511,  -4611}, 0, {  7998,   1718}, {0x26, 0x3c, 0x98, 0xff}}},\n    {{{ -1279,   2202,  -3325}, 0, { -1856,  -2150}, {0xca, 0x4a, 0xa9, 0xff}}},\n};\n\n// 0x07003370 - 0x07003470\nstatic const Vtx thi_seg7_vertex_07003370[] = {\n    {{{ -1023,   4096,  -2555}, 0, { -1490,  -4850}, {0xca, 0x67, 0xcf, 0xff}}},\n    {{{  1024,   4096,  -2555}, 0, {  1428,  -4850}, {0x0e, 0x7c, 0xee, 0xff}}},\n    {{{  1792,   2202,  -3325}, 0, {  2524,  -2150}, {0x00, 0x31, 0x8b, 0xff}}},\n    {{{ -1279,   2202,  -3325}, 0, { -1856,  -2150}, {0xca, 0x4a, 0xa9, 0xff}}},\n    {{{  2816,   3226,  -1789}, 0, { -4046,  -1562}, {0x2d, 0x73, 0x19, 0xff}}},\n    {{{  2816,   2202,    258}, 0, { -4046,   1356}, {0x19, 0x3d, 0x6c, 0xff}}},\n    {{{  5632,   -511,    258}, 0, { -8060,   1356}, {0x4c, 0x56, 0x35, 0xff}}},\n    {{{  1792,   2202,    258}, 0, {  -398,  -2150}, {0x18, 0x4d, 0x61, 0xff}}},\n    {{{  2304,   3226,  -1789}, 0, {  2520,  -3610}, {0x34, 0x70, 0x18, 0xff}}},\n    {{{  1024,   4096,   -507}, 0, {   692,  -4850}, {0x05, 0x7e, 0x06, 0xff}}},\n    {{{  2816,   2202,    258}, 0, {  3984,  -2150}, {0x19, 0x3d, 0x6c, 0xff}}},\n    {{{  1792,   2202,    258}, 0, {  2524,  -2150}, {0x18, 0x4d, 0x61, 0xff}}},\n    {{{  3072,    819,    258}, 0, {  4348,   -178}, {0x3a, 0x57, 0x47, 0xff}}},\n    {{{  5632,   -511,    258}, 0, {  7998,   1718}, {0x4c, 0x56, 0x35, 0xff}}},\n    {{{  1024,   4096,   -507}, 0, {  1428,  -4850}, {0x05, 0x7e, 0x06, 0xff}}},\n    {{{ -1023,   4096,   -507}, 0, { -1490,  -4850}, {0x04, 0x76, 0x2d, 0xff}}},\n};\n\n// 0x07003470 - 0x07003570\nstatic const Vtx thi_seg7_vertex_07003470[] = {\n    {{{  1792,   2202,    258}, 0, {  2524,  -2150}, {0x18, 0x4d, 0x61, 0xff}}},\n    {{{ -1023,   4096,   -507}, 0, { -1490,  -4850}, {0x04, 0x76, 0x2d, 0xff}}},\n    {{{ -1279,   2202,    258}, 0, { -1856,  -2150}, {0xbb, 0x5a, 0x38, 0xff}}},\n    {{{ -3583,    512,  -4607}, 0, { -5140,    260}, {0xe8, 0x6d, 0xc5, 0xff}}},\n    {{{ -2559,    512,  -4607}, 0, { -3680,    260}, {0xe3, 0x1d, 0x89, 0xff}}},\n    {{{ -4095,  -6655,  -4607}, 0, { -5870,  10478}, {0x18, 0x00, 0x84, 0xff}}},\n    {{{ -4607,      0,  -4607}, 0, { -6600,    990}, {0xed, 0x53, 0xa3, 0xff}}},\n    {{{  5632,  -1535,  -4607}, 0, {  7998,   3178}, {0x54, 0x54, 0xd6, 0xff}}},\n    {{{ -8191,  -3583,   8192}, 0, {-11710,   6098}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -8191,  -2969,   6144}, 0, { -8790,   5222}, {0xb7, 0x49, 0xb7, 0xff}}},\n    {{{ -8191,  -3583,   6144}, 0, { -8790,   6098}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -5119,      0,  -4607}, 0, { -7330,    990}, {0x1a, 0x7b, 0xf2, 0xff}}},\n    {{{  5632,   -511,  -4611}, 0, {  7998,   1718}, {0x26, 0x3c, 0x98, 0xff}}},\n    {{{ -2559,    819,  -4607}, 0, { -3680,   -178}, {0x9d, 0x3a, 0xcc, 0xff}}},\n    {{{ -1279,   2202,  -3325}, 0, { -1856,  -2150}, {0xca, 0x4a, 0xa9, 0xff}}},\n    {{{  5632,  -6655,  -4607}, 0, {  7998,  10478}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07003570 - 0x07003650\nstatic const Vtx thi_seg7_vertex_07003570[] = {\n    {{{ -8191,  -3583,   8192}, 0, {-11710,   6098}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -8191,  -2969,   8192}, 0, {-11710,   5222}, {0xb7, 0x49, 0x49, 0xff}}},\n    {{{ -8191,  -2969,   6144}, 0, { -8790,   5222}, {0xb7, 0x49, 0xb7, 0xff}}},\n    {{{  5803,  -2832,   7168}, 0, {  8242,   5028}, {0xcd, 0x65, 0x37, 0xff}}},\n    {{{  4267,  -3583,   7168}, 0, {  6052,   6098}, {0xd0, 0x72, 0xe9, 0xff}}},\n    {{{  6656,  -3583,   7680}, 0, {  9458,   6098}, {0x97, 0x0f, 0x44, 0xff}}},\n    {{{  6349,  -2832,   7168}, 0, {  9020,   5028}, {0xf9, 0x7d, 0xeb, 0xff}}},\n    {{{  7168,  -2832,   6656}, 0, { -9520,   5028}, {0x39, 0x71, 0xfd, 0xff}}},\n    {{{  7168,  -6655,   8192}, 0, {-11710,  10478}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{  7168,  -6655,   3584}, 0, { -5140,  10478}, {0x78, 0x00, 0xd8, 0xff}}},\n    {{{  7168,  -1945,   8192}, 0, {-11710,   3762}, {0xc2, 0x58, 0x42, 0xff}}},\n    {{{  7168,  -2559,   5632}, 0, { -8060,   4638}, {0x2f, 0x75, 0x0c, 0xff}}},\n    {{{  7168,  -2559,   3584}, 0, { -5140,   4638}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{  6656,  -2832,   7680}, 0, {  9458,   5028}, {0xa7, 0x58, 0x10, 0xff}}},\n};\n\n// 0x07003650 - 0x07003750\nstatic const Vtx thi_seg7_vertex_07003650[] = {\n    {{{  6656,  -2832,   8192}, 0, {-11710,   5028}, {0x8a, 0x14, 0x29, 0xff}}},\n    {{{  6656,  -3583,   7680}, 0, {-10980,   6098}, {0x97, 0x0f, 0x44, 0xff}}},\n    {{{  6656,  -3583,   8192}, 0, {-11710,   6098}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  7680,  -1535,  -6655}, 0, { 10918,   3178}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  5632,  -6655,  -6655}, 0, {  7998,  10478}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  5632,  -1535,  -6655}, 0, {  7998,   3178}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{  6656,  -2832,   7680}, 0, {-10980,   5028}, {0xa7, 0x58, 0x10, 0xff}}},\n    {{{  7168,  -1945,   8192}, 0, { 10188,   3762}, {0xc2, 0x58, 0x42, 0xff}}},\n    {{{  6656,  -2832,   8192}, 0, {  9458,   5028}, {0x8a, 0x14, 0x29, 0xff}}},\n    {{{  6656,  -3583,   8192}, 0, {  9458,   6098}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  7168,  -6655,   8192}, 0, { 10188,  10478}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{  5632,  -1535,  -4607}, 0, {  6538,   3178}, {0x54, 0x54, 0xd6, 0xff}}},\n    {{{  5632,   -511,   2049}, 0, { -2952,   1718}, {0x71, 0x2c, 0x24, 0xff}}},\n    {{{  5632,  -1535,   2049}, 0, { -2952,   3178}, {0x5d, 0x2c, 0x49, 0xff}}},\n    {{{  5632,   -511,  -4607}, 0, {  6538,   1718}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  7680,  -6655,  -6655}, 0, { 10918,  10478}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07003750 - 0x07003850\nstatic const Vtx thi_seg7_vertex_07003750[] = {\n    {{{  7475,  -6655,    307}, 0, { 10626,  10478}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  7066,  -6655,    102}, 0, { 10042,  10478}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{  7066,  -2559,    102}, 0, { 10042,   4638}, {0xed, 0x65, 0xb7, 0xff}}},\n    {{{  7680,  -6655,  -4607}, 0, {  6538,  10478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  7680,  -6655,  -6655}, 0, {  9458,  10478}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  7680,  -1535,  -6655}, 0, {  9458,   3178}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  7680,  -1535,  -2559}, 0, {  3618,   3178}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{  7680,  -6655,  -2559}, 0, {  3618,  10478}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  6656,  -1535,  -2559}, 0, {  9458,   3178}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  7680,  -6655,  -2559}, 0, { 10918,  10478}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  7680,  -1535,  -2559}, 0, { 10918,   3178}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{  6656,  -6655,  -2559}, 0, {  9458,  10478}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  7475,  -2559,    307}, 0, { 10626,   4638}, {0x4f, 0x3b, 0xb1, 0xff}}},\n    {{{ -7167,  -2559,   1024}, 0, {  3232,   -470}, {0x89, 0x25, 0x13, 0xff}}},\n    {{{ -6655,  -2559,      0}, 0, {  1926,   -470}, {0xe0, 0x6e, 0xcb, 0xff}}},\n    {{{ -6655,  -3583,      0}, 0, {  1926,    990}, {0xbe, 0x00, 0x94, 0xff}}},\n};\n\n// 0x07003850 - 0x07003930\nstatic const Vtx thi_seg7_vertex_07003850[] = {\n    {{{  7168,  -2559,   2560}, 0, { -3680,   4638}, {0x4d, 0x50, 0x3d, 0xff}}},\n    {{{  7680,  -6655,    717}, 0, { -1052,  10478}, {0x7e, 0x00, 0x03, 0xff}}},\n    {{{  7680,  -2559,    717}, 0, { -1052,   4638}, {0x65, 0x49, 0xe9, 0xff}}},\n    {{{  7475,  -6655,    307}, 0, {  -468,  10478}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  7475,  -2559,    307}, 0, {  -468,   4638}, {0x4f, 0x3b, 0xb1, 0xff}}},\n    {{{  7168,  -6655,   2560}, 0, { -3680,  10478}, {0x31, 0x00, 0x74, 0xff}}},\n    {{{  6656,  -2559,   2560}, 0, {  9458,   4638}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  7168,  -6655,   2560}, 0, { 10188,  10478}, {0x31, 0x00, 0x74, 0xff}}},\n    {{{  7168,  -2559,   2560}, 0, { 10188,   4638}, {0x4d, 0x50, 0x3d, 0xff}}},\n    {{{  6656,  -6655,   2560}, 0, {  9458,  10478}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -6655,  -3583,      0}, 0, {  1926,    990}, {0xbe, 0x00, 0x94, 0xff}}},\n    {{{ -5119,  -2559,      0}, 0, {     0,   -470}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{ -5119,  -3583,      0}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6655,  -2559,      0}, 0, {  1926,   -470}, {0xe0, 0x6e, 0xcb, 0xff}}},\n};\n\n// 0x07003930 - 0x07003A20\nstatic const Vtx thi_seg7_vertex_07003930[] = {\n    {{{     0,  -1535,   1024}, 0, {  1428,   3178}, {0xd7, 0x4a, 0x5e, 0xff}}},\n    {{{  2560,  -1535,   4096}, 0, {  5808,   3178}, {0xde, 0x53, 0x58, 0xff}}},\n    {{{  2560,   -511,   3072}, 0, {  4348,   1718}, {0xc1, 0x5f, 0x36, 0xff}}},\n    {{{ -5119,  -2559,   2048}, 0, {  3232,   -470}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -6143,  -3583,   2048}, 0, {  1926,    990}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{ -5119,  -3583,   2048}, 0, {  3232,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -6143,  -2559,   2048}, 0, {  1926,   -470}, {0xe0, 0x5d, 0x4f, 0xff}}},\n    {{{ -7167,  -2559,   1024}, 0, {     0,   -470}, {0x89, 0x25, 0x13, 0xff}}},\n    {{{ -7167,  -3583,   1024}, 0, {     0,    990}, {0x83, 0x00, 0x14, 0xff}}},\n    {{{ -6655,  -2559,      0}, 0, {  9458,    990}, {0xe0, 0x6e, 0xcb, 0xff}}},\n    {{{ -5119,  -2559,   2048}, 0, {  7268,   3908}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -5119,  -2559,      0}, 0, {  7268,    990}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{ -6143,  -2559,   2048}, 0, {  8728,   3908}, {0xe0, 0x5d, 0x4f, 0xff}}},\n    {{{ -7167,  -2559,   1024}, 0, { 10188,   2448}, {0x89, 0x25, 0x13, 0xff}}},\n    {{{  2560,  -3583,   6144}, 0, {  8728,   6098}, {0xed, 0x69, 0x44, 0xff}}},\n};\n\n// 0x07003A20 - 0x07003B20\nstatic const Vtx thi_seg7_vertex_07003A20[] = {\n    {{{  6656,  -6655,   3584}, 0, {  9458,  10478}, {0xbe, 0x00, 0x94, 0xff}}},\n    {{{  7168,  -2559,   3584}, 0, { 10188,   4638}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{  7168,  -6655,   3584}, 0, { 10188,  10478}, {0x78, 0x00, 0xd8, 0xff}}},\n    {{{     0,  -1535,   1024}, 0, {  1428,   3178}, {0xd7, 0x4a, 0x5e, 0xff}}},\n    {{{  2560,   -511,   3072}, 0, {  4348,   1718}, {0xc1, 0x5f, 0x36, 0xff}}},\n    {{{   853,   -511,   1024}, 0, {  1428,   1718}, {0xdf, 0x27, 0x74, 0xff}}},\n    {{{  2560,   -511,   3072}, 0, { -4410,   1718}, {0xc1, 0x5f, 0x36, 0xff}}},\n    {{{  2560,  -1535,   4096}, 0, { -5870,   3178}, {0xde, 0x53, 0x58, 0xff}}},\n    {{{  2560,   -511,   4096}, 0, { -5870,   1718}, {0x05, 0x61, 0x51, 0xff}}},\n    {{{  5632,  -1535,   2049}, 0, {  7998,   3178}, {0x5d, 0x2c, 0x49, 0xff}}},\n    {{{  5632,   -511,   2049}, 0, {  7998,   1718}, {0x71, 0x2c, 0x24, 0xff}}},\n    {{{  2560,   -511,   4096}, 0, {  3618,   1718}, {0x05, 0x61, 0x51, 0xff}}},\n    {{{  6656,  -2559,   3584}, 0, {  9458,   4638}, {0xc7, 0x40, 0xa3, 0xff}}},\n    {{{ -3583,    512,   1024}, 0, { -1490,    260}, {0xc1, 0x67, 0x25, 0xff}}},\n    {{{ -3583,    512,   -511}, 0, {   698,    260}, {0xe2, 0x61, 0x4b, 0xff}}},\n    {{{ -4347,   -511,   -511}, 0, {   698,   1718}, {0xaa, 0x57, 0x1f, 0xff}}},\n};\n\n// 0x07003B20 - 0x07003C00\nstatic const Vtx thi_seg7_vertex_07003B20[] = {\n    {{{ -7167,  -2559,   1024}, 0, {  3232,   -470}, {0x89, 0x25, 0x13, 0xff}}},\n    {{{ -6655,  -3583,      0}, 0, {  1926,    990}, {0xbe, 0x00, 0x94, 0xff}}},\n    {{{ -7167,  -3583,   1024}, 0, {  3232,    990}, {0x83, 0x00, 0x14, 0xff}}},\n    {{{ -7167,  -2969,   5120}, 0, { -7330,   5222}, {0xc7, 0x40, 0xa3, 0xff}}},\n    {{{ -7679,  -3583,   6144}, 0, { -8790,   6098}, {0xbe, 0x00, 0x94, 0xff}}},\n    {{{ -7679,  -2969,   6144}, 0, { -8790,   5222}, {0xd5, 0x60, 0xbb, 0xff}}},\n    {{{ -7167,  -3583,   5120}, 0, { -7330,   6098}, {0xbe, 0x00, 0x94, 0xff}}},\n    {{{ -7679,  -3583,   6144}, 0, {-10980,   6098}, {0xbe, 0x00, 0x94, 0xff}}},\n    {{{ -8191,  -2969,   6144}, 0, {-11710,   5222}, {0xb7, 0x49, 0xb7, 0xff}}},\n    {{{ -7679,  -2969,   6144}, 0, {-10980,   5222}, {0xd5, 0x60, 0xbb, 0xff}}},\n    {{{ -8191,  -3583,   6144}, 0, {-11710,   6098}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -3583,    512,   1024}, 0, { -1490,    260}, {0xc1, 0x67, 0x25, 0xff}}},\n    {{{ -4347,   -511,   -511}, 0, {   698,   1718}, {0xaa, 0x57, 0x1f, 0xff}}},\n    {{{ -4607,   -204,   1024}, 0, { -1490,   1280}, {0x9c, 0x38, 0x34, 0xff}}},\n};\n\n// 0x07003C00 - 0x07003D00\nstatic const Vtx thi_seg7_vertex_07003C00[] = {\n    {{{ -2559,   -204,   2048}, 0, {  3618,   1280}, {0x0c, 0x27, 0x78, 0xff}}},\n    {{{ -3583,    512,   1024}, 0, {  5078,    260}, {0xc1, 0x67, 0x25, 0xff}}},\n    {{{ -4607,   -204,   1024}, 0, {  6538,   1280}, {0x9c, 0x38, 0x34, 0xff}}},\n    {{{ -4347,   -511,   -511}, 0, {   698,   1718}, {0xaa, 0x57, 0x1f, 0xff}}},\n    {{{ -4607,   -511,   1024}, 0, { -1490,   1718}, {0xd6, 0x71, 0x24, 0xff}}},\n    {{{ -4607,   -204,   1024}, 0, { -1490,   1280}, {0x9c, 0x38, 0x34, 0xff}}},\n    {{{ -2559,   -511,   2048}, 0, {  2888,   1718}, {0x42, 0x00, 0x6c, 0xff}}},\n    {{{ -2559,   -511,   1024}, 0, {  1428,   1718}, {0x78, 0x00, 0x28, 0xff}}},\n    {{{ -2559,   -204,   2048}, 0, {  2888,   1280}, {0x0c, 0x27, 0x78, 0xff}}},\n    {{{ -2559,    512,   1536}, 0, {  2158,    260}, {0x42, 0x67, 0x1e, 0xff}}},\n    {{{ -2559,    512,   1024}, 0, {  1428,    260}, {0xd8, 0x4d, 0x5b, 0xff}}},\n    {{{ -4607,   -511,   1024}, 0, {  6538,   1718}, {0xd6, 0x71, 0x24, 0xff}}},\n    {{{ -2559,   -511,   2048}, 0, {  3618,   1718}, {0x42, 0x00, 0x6c, 0xff}}},\n    {{{ -5119,  -2969,   8192}, 0, {  7268,   5222}, {0xea, 0x58, 0x58, 0xff}}},\n    {{{ -8191,  -2969,   8192}, 0, { 11648,   5222}, {0xb7, 0x49, 0x49, 0xff}}},\n    {{{ -8191,  -3583,   8192}, 0, { 11648,   6098}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07003D00 - 0x07003D60\nstatic const Vtx thi_seg7_vertex_07003D00[] = {\n    {{{ -2559,   -204,   2048}, 0, {  3618,   1280}, {0x0c, 0x27, 0x78, 0xff}}},\n    {{{ -2559,    512,   1536}, 0, {  3618,    260}, {0x42, 0x67, 0x1e, 0xff}}},\n    {{{ -3583,    512,   1024}, 0, {  5078,    260}, {0xc1, 0x67, 0x25, 0xff}}},\n    {{{ -8191,  -3583,   8192}, 0, { 11648,   6098}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -4607,  -3583,   8192}, 0, {  6538,   6098}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -5119,  -2969,   8192}, 0, {  7268,   5222}, {0xea, 0x58, 0x58, 0xff}}},\n};\n\n// 0x07003D60 - 0x07003E50\nstatic const Vtx thi_seg7_vertex_07003D60[] = {\n    {{{  6656,  -1535,  -4607}, 0, {  6538,   3178}, {0xac, 0x54, 0x2a, 0xff}}},\n    {{{  6656,  -6655,  -4607}, 0, {  6538,  10478}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  6656,  -6655,  -2559}, 0, {  3618,  10478}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  5632,  -2559,   4096}, 0, {  7998,   4638}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  6400,  -2559,   4096}, 0, {  9094,   4638}, {0xd1, 0x6a, 0xce, 0xff}}},\n    {{{  6400,  -6655,   4096}, 0, {  9094,  10478}, {0xd5, 0x00, 0x89, 0xff}}},\n    {{{  5632,  -6655,   4096}, 0, {  7998,  10478}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6656,  -6655,   3584}, 0, { -5140,  10478}, {0xbe, 0x00, 0x94, 0xff}}},\n    {{{  6400,  -6655,   4096}, 0, { -5870,  10478}, {0xd5, 0x00, 0x89, 0xff}}},\n    {{{  6400,  -2559,   4096}, 0, { -5870,   4638}, {0xd1, 0x6a, 0xce, 0xff}}},\n    {{{  6656,  -2559,   3584}, 0, { -5140,   4638}, {0xc7, 0x40, 0xa3, 0xff}}},\n    {{{  5632,  -1535,  -4607}, 0, {  7998,   3178}, {0x54, 0x54, 0xd6, 0xff}}},\n    {{{  5632,  -6655,  -4607}, 0, {  7998,  10478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6656,  -6655,  -4607}, 0, {  9458,  10478}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  6656,  -1535,  -4607}, 0, {  9458,   3178}, {0xac, 0x54, 0x2a, 0xff}}},\n};\n\n// 0x07003E50 - 0x07003EE0\nstatic const Vtx thi_seg7_vertex_07003E50[] = {\n    {{{  7066,  -6655,    102}, 0, {  -176,  10478}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{  6656,  -6655,    717}, 0, { -1052,  10478}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{  7066,  -2559,    102}, 0, {  -176,   4638}, {0xed, 0x65, 0xb7, 0xff}}},\n    {{{  6656,  -1535,  -4607}, 0, {  6538,   3178}, {0xac, 0x54, 0x2a, 0xff}}},\n    {{{  6656,  -6655,  -2559}, 0, {  3618,  10478}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  6656,  -1535,  -2559}, 0, {  3618,   3178}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  6656,  -2559,    717}, 0, { -1052,   4638}, {0x8b, 0x29, 0xe9, 0xff}}},\n    {{{  6656,  -6655,   2560}, 0, { -3680,  10478}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  6656,  -2559,   2560}, 0, { -3680,   4638}, {0xd6, 0x54, 0x54, 0xff}}},\n};\n\n// 0x07003EE0 - 0x07003FA0\nstatic const Vtx thi_seg7_vertex_07003EE0[] = {\n    {{{  1024,   4096,   -507}, 0, {  1210,   1206}, {0x05, 0x7e, 0x06, 0xff}}},\n    {{{   717,   3891,   -815}, 0, {   990,    990}, {0xf2, 0x7d, 0xf2, 0xff}}},\n    {{{  -716,   3891,   -815}, 0, {     0,    990}, {0x0c, 0x7b, 0xe8, 0xff}}},\n    {{{   717,   3891,  -2248}, 0, {   990,      0}, {0xe7, 0x7b, 0x0c, 0xff}}},\n    {{{   102,   3891,  -1634}, 0, {   552,    406}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,   3891,  -1429}, 0, {   552,    552}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,   4096,  -2555}, 0, {  1210,   -252}, {0x0e, 0x7c, 0xee, 0xff}}},\n    {{{  -716,   3891,  -2248}, 0, {     0,      0}, {0x15, 0x7b, 0x15, 0xff}}},\n    {{{  -101,   3891,  -1634}, 0, {   406,    406}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -101,   3891,  -1429}, 0, {   406,    552}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,   4096,   -507}, 0, {  -250,   1208}, {0x04, 0x76, 0x2d, 0xff}}},\n    {{{ -1023,   4096,  -2555}, 0, {  -248,   -252}, {0xca, 0x67, 0xcf, 0xff}}},\n};\n\n// 0x07003FA0 - 0x07004090\nstatic const Vtx thi_seg7_vertex_07003FA0[] = {\n    {{{ -3583,    819,  -3071}, 0, { -5140,    478}, {0xc8, 0x41, 0xa3, 0xff}}},\n    {{{ -2559,    819,  -3071}, 0, {-10250,    478}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3583,    512,  -3071}, 0, { -5140,   2010}, {0xd6, 0x54, 0xac, 0xff}}},\n    {{{ -4230,    341,  -2457}, 0, { -1910,   2862}, {0xa9, 0x44, 0xc3, 0xff}}},\n    {{{ -4230,    717,  -2457}, 0, { -1910,    990}, {0xbc, 0x5f, 0xd0, 0xff}}},\n    {{{ -2559,    512,  -3071}, 0, {-10250,   2010}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{ -4347,   -511,   -511}, 0, {  9678,   7120}, {0xaa, 0x57, 0x1f, 0xff}}},\n    {{{ -3583,   1229,   -511}, 0, {  9678,  -1564}, {0xda, 0x48, 0x60, 0xff}}},\n    {{{ -4347,    717,  -1842}, 0, {  3034,    990}, {0xa0, 0x52, 0x04, 0xff}}},\n    {{{ -4347,     90,  -1842}, 0, {  3034,   4118}, {0x99, 0x42, 0x1e, 0xff}}},\n    {{{ -2047,    512,   -511}, 0, { 12744,   2010}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3583,   1229,   -511}, 0, {  5078,  -1566}, {0xda, 0x48, 0x60, 0xff}}},\n    {{{ -3583,    512,   -511}, 0, {  5078,   2010}, {0xe2, 0x61, 0x4b, 0xff}}},\n    {{{ -4347,   -511,   -511}, 0, {  1266,   7120}, {0xaa, 0x57, 0x1f, 0xff}}},\n    {{{ -2047,   1229,   -511}, 0, { 12744,  -1566}, {0x00, 0x78, 0x29, 0xff}}},\n};\n\n// 0x07004090 - 0x070040F0\nstatic const Vtx thi_seg7_vertex_07004090[] = {\n    {{{ -2578,  -3583,   5700}, 0, { -1060,   3264}, {0x29, 0x6d, 0x32, 0xff}}},\n    {{{ -1459,  -1804,   1629}, 0, {  -614,   1638}, {0x17, 0x5a, 0x55, 0xff}}},\n    {{{ -2562,  -1804,   1638}, 0, { -1054,   1642}, {0x4e, 0x23, 0x5d, 0xff}}},\n    {{{  2560,  -3583,   6144}, 0, {   990,   3440}, {0xed, 0x69, 0x44, 0xff}}},\n    {{{ -1535,  -1535,   1024}, 0, {  -644,   1396}, {0x65, 0x2e, 0x3b, 0xff}}},\n    {{{     0,  -1535,   1024}, 0, {     0,   1396}, {0xd7, 0x4a, 0x5e, 0xff}}},\n};\n\n// 0x070040F0 - 0x07004130\nstatic const Vtx thi_seg7_vertex_070040F0[] = {\n    {{{ -7167,  -3685,  -7167}, 0, {     0,      0}, {0xfb, 0x7e, 0x00, 0xff}}},\n    {{{ -4914,  -3583,   7168}, 0, {     0,      0}, {0xfb, 0x7e, 0x00, 0xff}}},\n    {{{ -4914,  -3583,  -7167}, 0, {     0,      0}, {0xfb, 0x7e, 0x00, 0xff}}},\n    {{{ -7167,  -3685,   7168}, 0, {     0,      0}, {0xfb, 0x7e, 0x00, 0xff}}},\n};\n\n// 0x07004130 - 0x07004440\nstatic const Gfx thi_seg7_dl_07004130[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&thi_seg7_lights_07001000.l, 1),\n    gsSPLight(&thi_seg7_lights_07001000.a, 2),\n    gsSPVertex(thi_seg7_vertex_07001060, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(thi_seg7_vertex_07001140, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  7, 0x0,  4,  3,  6, 0x0),\n    gsSP2Triangles( 5,  8,  3, 0x0,  4,  6,  9, 0x0),\n    gsSP2Triangles(10, 11,  2, 0x0, 11,  0,  2, 0x0),\n    gsSP2Triangles(11, 12,  0, 0x0,  2,  1, 13, 0x0),\n    gsSPVertex(thi_seg7_vertex_07001220, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  3,  5,  4, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(thi_seg7_vertex_07001310, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12,  9, 11, 0x0, 12, 13,  9, 0x0),\n    gsSPVertex(thi_seg7_vertex_070013F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0, 14, 11, 15, 0x0),\n    gsSPVertex(thi_seg7_vertex_070014F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  0,  5,  4, 0x0),\n    gsSP2Triangles( 3,  2,  6, 0x0,  3,  6,  7, 0x0),\n    gsSP2Triangles( 3,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(thi_seg7_vertex_070015E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11,  9,  8, 0x0),\n    gsSP2Triangles(12, 11,  8, 0x0, 11, 13,  9, 0x0),\n    gsSP1Triangle( 9, 13, 14, 0x0),\n    gsSPVertex(thi_seg7_vertex_070016D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 4,  6, 10, 0x0, 11, 12, 10, 0x0),\n    gsSP2Triangles(12,  4, 10, 0x0, 13, 14, 11, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0, 11, 10, 15, 0x0),\n    gsSPVertex(thi_seg7_vertex_070017D0, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPLight(&thi_seg7_lights_07001018.l, 1),\n    gsSPLight(&thi_seg7_lights_07001018.a, 2),\n    gsSPVertex(thi_seg7_vertex_07001830, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  5,  1,  4, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle(14, 11, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07004440 - 0x070044F0\nstatic const Gfx thi_seg7_dl_07004440[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&thi_seg7_lights_07001000.l, 1),\n    gsSPLight(&thi_seg7_lights_07001000.a, 2),\n    gsSPVertex(thi_seg7_vertex_07001920, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSPLight(&thi_seg7_lights_07001018.l, 1),\n    gsSPLight(&thi_seg7_lights_07001018.a, 2),\n    gsSPVertex(thi_seg7_vertex_07001960, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  3,  7,  4, 0x0),\n    gsSP1Triangle( 0,  2,  8, 0x0),\n    gsSPLight(&thi_seg7_lights_07001030.l, 1),\n    gsSPLight(&thi_seg7_lights_07001030.a, 2),\n    gsSPVertex(thi_seg7_vertex_070019F0, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070044F0 - 0x07004788\nstatic const Gfx thi_seg7_dl_070044F0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&thi_seg7_lights_07001000.l, 1),\n    gsSPLight(&thi_seg7_lights_07001000.a, 2),\n    gsSPVertex(thi_seg7_vertex_07001A50, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(thi_seg7_vertex_07001B30, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13,  9, 0x0, 11,  9,  8, 0x0),\n    gsSPVertex(thi_seg7_vertex_07001C10, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(thi_seg7_vertex_07001D10, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 3,  0,  2, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(thi_seg7_vertex_07001E10, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(thi_seg7_vertex_07001EF0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  1,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(thi_seg7_vertex_07001FF0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(thi_seg7_vertex_070020D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 8, 10, 14, 0x0),\n    gsSPLight(&thi_seg7_lights_07001018.l, 1),\n    gsSPLight(&thi_seg7_lights_07001018.a, 2),\n    gsSPVertex(thi_seg7_vertex_070021C0, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 2,  4,  3, 0x0,  5,  4,  2, 0x0),\n    gsSPLight(&thi_seg7_lights_07001030.l, 1),\n    gsSPLight(&thi_seg7_lights_07001030.a, 2),\n    gsSPVertex(thi_seg7_vertex_07002220, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n\n\n// 0x07004788 - 0x07004BF0\nstatic const Gfx thi_seg7_dl_07004788[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&thi_seg7_lights_07001000.l, 1),\n    gsSPLight(&thi_seg7_lights_07001000.a, 2),\n    gsSPVertex(thi_seg7_vertex_07002260, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 7,  8,  4, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12,  1, 13, 0x0, 14, 10, 15, 0x0),\n    gsSP2Triangles(10,  9, 15, 0x0,  1,  0, 13, 0x0),\n    gsSPVertex(thi_seg7_vertex_07002360, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 5, 10, 11, 0x0, 11, 10, 12, 0x0),\n    gsSP1Triangle( 4, 13,  5, 0x0),\n    gsSPVertex(thi_seg7_vertex_07002440, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  9,  8, 11, 0x0),\n    gsSP2Triangles( 8, 12, 11, 0x0, 13, 14, 12, 0x0),\n    gsSPVertex(thi_seg7_vertex_07002530, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  1, 0x0,  6,  7,  1, 0x0),\n    gsSP2Triangles( 1,  7,  4, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(11, 12,  2, 0x0, 12,  3,  2, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(thi_seg7_vertex_07002630, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 9,  8, 11, 0x0,  8, 12, 11, 0x0),\n    gsSP2Triangles(12,  8, 13, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(thi_seg7_vertex_07002720, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  2,  1,  4, 0x0),\n    gsSP2Triangles( 5,  6,  2, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11,  6, 0x0,  6, 11, 12, 0x0),\n    gsSP2Triangles( 5, 10,  6, 0x0,  8, 13,  9, 0x0),\n    gsSP2Triangles(10, 14, 11, 0x0,  1, 14,  4, 0x0),\n    gsSP2Triangles( 1, 11, 14, 0x0, 12, 11, 15, 0x0),\n    gsSP1Triangle(11,  1, 15, 0x0),\n    gsSPVertex(thi_seg7_vertex_07002820, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  5,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 8, 11,  9, 0x0, 12,  9, 11, 0x0),\n    gsSP2Triangles(12, 13,  9, 0x0,  0, 14,  1, 0x0),\n    gsSP1Triangle( 0,  2, 15, 0x0),\n    gsSPVertex(thi_seg7_vertex_07002920, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(thi_seg7_vertex_07002A20, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  2,  5,  6, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles(11, 12,  7, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(thi_seg7_vertex_07002B20, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  2,  5,  6, 0x0),\n    gsSP2Triangles( 6,  3,  2, 0x0,  3,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(thi_seg7_vertex_07002C00, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 6,  9, 10, 0x0,  6, 10, 11, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(thi_seg7_vertex_07002D00, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10, 11, 0x0, 12, 13, 14, 0x0),\n    gsSP2Triangles( 7, 11, 15, 0x0,  7, 15,  8, 0x0),\n    gsSPVertex(thi_seg7_vertex_07002E00, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10, 11,  8, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(thi_seg7_vertex_07002F00, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSPLight(&thi_seg7_lights_07001018.l, 1),\n    gsSPLight(&thi_seg7_lights_07001018.a, 2),\n    gsSPVertex(thi_seg7_vertex_07002F40, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n\n\n// 0x07004BF0 - 0x070050C0\nstatic const Gfx thi_seg7_dl_07004BF0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&thi_seg7_lights_07001000.l, 1),\n    gsSPLight(&thi_seg7_lights_07001000.a, 2),\n    gsSPVertex(thi_seg7_vertex_07002F80, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  4,  3, 0x0),\n    gsSP2Triangles( 7,  3,  8, 0x0,  5,  9,  6, 0x0),\n    gsSP2Triangles( 5, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  1, 15,  2, 0x0),\n    gsSPVertex(thi_seg7_vertex_07003080, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  5,  6,  0, 0x0),\n    gsSP2Triangles( 6,  1,  0, 0x0,  0,  2,  7, 0x0),\n    gsSP2Triangles( 8,  4,  9, 0x0,  4, 10,  5, 0x0),\n    gsSP2Triangles( 6,  8,  1, 0x0,  4, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(thi_seg7_vertex_07003180, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  7,  8,  5, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  5, 12,  6, 0x0),\n    gsSP2Triangles(13, 14,  5, 0x0, 13,  5, 12, 0x0),\n    gsSPVertex(thi_seg7_vertex_07003270, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 10, 13, 0x0),\n    gsSP1Triangle(10, 14, 15, 0x0),\n    gsSPVertex(thi_seg7_vertex_07003370, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 10, 12, 0x0),\n    gsSP1Triangle(11, 14, 15, 0x0),\n    gsSPVertex(thi_seg7_vertex_07003470, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  5,  4,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  5, 11,  6, 0x0),\n    gsSP2Triangles( 4, 12,  7, 0x0,  4, 13, 12, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0,  5,  7, 15, 0x0),\n    gsSPVertex(thi_seg7_vertex_07003570, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11,  7,  9, 0x0),\n    gsSP2Triangles( 9, 12, 11, 0x0, 13,  3,  5, 0x0),\n    gsSPVertex(thi_seg7_vertex_07003650, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  3, 15,  4, 0x0),\n    gsSPVertex(thi_seg7_vertex_07003750, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  3, 0x0,  6,  3,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(thi_seg7_vertex_07003850, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 2,  1,  3, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(thi_seg7_vertex_07003930, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 4,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0,  9, 13, 12, 0x0),\n    gsSP1Triangle(14,  1,  0, 0x0),\n    gsSPVertex(thi_seg7_vertex_07003A20, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(thi_seg7_vertex_07003B20, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(thi_seg7_vertex_07003C00, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles( 7, 10,  9, 0x0, 11,  0,  2, 0x0),\n    gsSP2Triangles(11, 12,  0, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(thi_seg7_vertex_07003D00, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPLight(&thi_seg7_lights_07001018.l, 1),\n    gsSPLight(&thi_seg7_lights_07001018.a, 2),\n    gsSPVertex(thi_seg7_vertex_07003D60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(thi_seg7_vertex_07003E50, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  1,  7, 0x0,  6,  7,  8, 0x0),\n    gsSP1Triangle( 1,  6,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070050C0 - 0x07005178\nstatic const Gfx thi_seg7_dl_070050C0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, thi_seg7_texture_07000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&thi_seg7_lights_07001000.l, 1),\n    gsSPLight(&thi_seg7_lights_07001000.a, 2),\n    gsSPVertex(thi_seg7_vertex_07003EE0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  2,  1,  5, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  0,  6,  3, 0x0),\n    gsSP2Triangles( 7,  3,  6, 0x0,  8,  3,  7, 0x0),\n    gsSP2Triangles( 8,  4,  3, 0x0,  2,  5,  9, 0x0),\n    gsSP2Triangles(10,  2,  7, 0x0,  0,  2, 10, 0x0),\n    gsSP2Triangles( 7,  2,  9, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles(10,  7, 11, 0x0,  7,  6, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07005178 - 0x070051E8\nstatic const Gfx thi_seg7_dl_07005178[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(thi_seg7_vertex_07003FA0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 0,  2,  3, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSP1Triangle(10, 14, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070051E8 - 0x07005240\nstatic const Gfx thi_seg7_dl_070051E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_0900A800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&thi_seg7_lights_07001048.l, 1),\n    gsSPLight(&thi_seg7_lights_07001048.a, 2),\n    gsSPVertex(thi_seg7_vertex_07004090, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 4,  1,  5, 0x0,  3,  5,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07005240 - 0x07005260\nstatic const Gfx thi_seg7_dl_07005240[] = {\n    gsSPVertex(thi_seg7_vertex_070040F0, 4, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSP1Triangle( 0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07005260 - 0x07005330\nconst Gfx thi_seg7_dl_07005260[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(thi_seg7_dl_07004130),\n    gsSPDisplayList(thi_seg7_dl_07004440),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(thi_seg7_dl_070044F0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(thi_seg7_dl_07004788),\n    gsSPDisplayList(thi_seg7_dl_07004BF0),\n    gsSPDisplayList(thi_seg7_dl_070050C0),\n    gsSPDisplayList(thi_seg7_dl_07005178),\n    gsSPDisplayList(thi_seg7_dl_070051E8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(thi_seg7_dl_07005240),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/thi/areas/1/2/model.inc.c",
    "content": "// 0x07005330 - 0x07005348\nstatic const Lights1 thi_seg7_lights_07005330 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07005348 - 0x07005360\nstatic const Lights1 thi_seg7_lights_07005348 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0x99, 0x99, 0x99, 0x28, 0x28, 0x28\n);\n\n// 0x07005360 - 0x07005378\nstatic const Lights1 thi_seg7_lights_07005360 = gdSPDefLights1(\n    0x33, 0x33, 0x33,\n    0x66, 0x66, 0x66, 0x28, 0x28, 0x28\n);\n\n// 0x07005378 - 0x07005390\nstatic const Lights1 thi_seg7_lights_07005378 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x07005390 - 0x07005470\nstatic const Vtx thi_seg7_vertex_07005390[] = {\n    {{{  5734,  -2047,   -511}, 0, { 28584,  -1566}, {0x00, 0x7e, 0x0f, 0xff}}},\n    {{{  5632,  -1535,  -4607}, 0, { 28074, -22006}, {0x00, 0x7e, 0x0f, 0xff}}},\n    {{{  5632,  -2047,   -511}, 0, { 28074,  -1566}, {0x00, 0x7e, 0x0f, 0xff}}},\n    {{{  5734,  -1535,  -4607}, 0, { 28584, -22006}, {0x00, 0x7e, 0x0f, 0xff}}},\n    {{{  2560,   -511,   3686}, 0, { 12744,  19384}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1741,   -511,   3686}, 0, {  8656,  19384}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1638,   -511,   3789}, 0, {  8144,  19896}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1741,   -511,   3686}, 0, {  8656,  19384}, {0xf7, 0x7e, 0xf7, 0xff}}},\n    {{{   922,   -613,   3174}, 0, {  4568,  16830}, {0xf7, 0x7e, 0xf7, 0xff}}},\n    {{{   819,   -613,   3277}, 0, {  4056,  17340}, {0xf7, 0x7e, 0xf7, 0xff}}},\n    {{{  1638,   -511,   3789}, 0, {  8144,  19896}, {0xf7, 0x7e, 0xf7, 0xff}}},\n    {{{   819,   -613,   3277}, 0, {  4056,  17340}, {0x0f, 0x7d, 0x0f, 0xff}}},\n    {{{   922,   -613,   3174}, 0, {  4568,  16830}, {0x0f, 0x7d, 0x0f, 0xff}}},\n    {{{   973,   -511,   2304}, 0, {  4822,  12486}, {0x0f, 0x7d, 0x0f, 0xff}}},\n};\n\n// 0x07005470 - 0x07005550\nstatic const Vtx thi_seg7_vertex_07005470[] = {\n    {{{   819,   -511,   2355}, 0, {  4056,  12740}, {0x04, 0x7e, 0x0d, 0xff}}},\n    {{{   819,   -613,   3277}, 0, {  4056,  17340}, {0x04, 0x7e, 0x0d, 0xff}}},\n    {{{   973,   -511,   2304}, 0, {  4822,  12486}, {0x04, 0x7e, 0x0d, 0xff}}},\n    {{{  2560,   -511,   3686}, 0, { 12744,  19384}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1638,   -511,   3789}, 0, {  8144,  19896}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2560,   -511,   3789}, 0, { 12744,  19896}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1791,   2202,    258}, 0, { -1316,   9930}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2304,   2202,    565}, 0, { -2850, -10508}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2304,   2202,    258}, 0, { -1316, -10508}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1791,   2202,    565}, 0, { -2850,   9930}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   307,   -511,   1024}, 0, {  1500,   6098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   819,   -511,   2355}, 0, {  4056,  12740}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   973,   -511,   2304}, 0, {  4822,  12486}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,   -511,   1024}, 0, {  2522,   6098}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07005550 - 0x070055D0\nstatic const Vtx thi_seg7_vertex_07005550[] = {\n    {{{  5632,  -1535,  -5221}, 0, { 26030, -27116}, {0xe2, 0x7b, 0x00, 0xff}}},\n    {{{  5632,  -1535,  -5631}, 0, { 28074, -27116}, {0xe2, 0x7b, 0x00, 0xff}}},\n    {{{  4403,  -1842,  -5631}, 0, { 28074, -20984}, {0xe2, 0x7b, 0x00, 0xff}}},\n    {{{  4403,  -1842,  -5221}, 0, { 26030, -20984}, {0xe2, 0x7b, 0x00, 0xff}}},\n    {{{  4403,  -1842,  -5631}, 0, { 28074, -20984}, {0xef, 0x7d, 0x00, 0xff}}},\n    {{{  2970,  -2047,  -5221}, 0, { 26030, -13830}, {0xef, 0x7d, 0x00, 0xff}}},\n    {{{  4403,  -1842,  -5221}, 0, { 26030, -20984}, {0xef, 0x7d, 0x00, 0xff}}},\n    {{{  2970,  -2047,  -5631}, 0, { 28074, -13830}, {0xef, 0x7d, 0x00, 0xff}}},\n};\n\n// 0x070055D0 - 0x070056C0\nstatic const Vtx thi_seg7_vertex_070055D0[] = {\n    {{{  5734,  -2047,  -1330}, 0, { 28584,  -5654}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5734,  -1637,  -4607}, 0, { 28584, -22006}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5734,  -1535,  -4607}, 0, { 28584, -22006}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5734,  -2047,   -511}, 0, { 28584,  -1566}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5632,  -1637,  -4607}, 0, { 28074, -22006}, {0x00, 0x82, 0xf1, 0xff}}},\n    {{{  5734,  -1637,  -4607}, 0, { 28584, -22006}, {0x00, 0x82, 0xf1, 0xff}}},\n    {{{  5734,  -2047,  -1330}, 0, { 28584,  -5654}, {0x00, 0x82, 0xf1, 0xff}}},\n    {{{  5632,  -2047,  -1330}, 0, { 28074,  -5654}, {0x00, 0x82, 0xf1, 0xff}}},\n    {{{  1638,   -613,   3789}, 0, {  8144,  19896}, {0x09, 0x82, 0x09, 0xff}}},\n    {{{   819,   -716,   3277}, 0, {  4056,  17340}, {0x09, 0x82, 0x09, 0xff}}},\n    {{{   922,   -716,   3174}, 0, {  4568,  16830}, {0x09, 0x82, 0x09, 0xff}}},\n    {{{  1741,   -613,   3686}, 0, {  8656,  19384}, {0x09, 0x82, 0x09, 0xff}}},\n    {{{  2560,   -613,   3789}, 0, { 12744,  19896}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1638,   -511,   3789}, 0, {  8144,  19896}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1638,   -613,   3789}, 0, {  8144,  19896}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070056C0 - 0x070057B0\nstatic const Vtx thi_seg7_vertex_070056C0[] = {\n    {{{  1638,   -511,   3789}, 0, {  8144,  19896}, {0xbd, 0x00, 0x6b, 0xff}}},\n    {{{   819,   -716,   3277}, 0, {  4056,  17340}, {0xbd, 0x00, 0x6b, 0xff}}},\n    {{{  1638,   -613,   3789}, 0, {  8144,  19896}, {0xbd, 0x00, 0x6b, 0xff}}},\n    {{{  2560,   -613,   3789}, 0, { 12744,  19896}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1638,   -613,   3789}, 0, {  8144,  19896}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2560,   -613,   3686}, 0, { 12744,  19384}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1741,   -613,   3686}, 0, {  8656,  19384}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1741,   -511,   3686}, 0, {  8656,  19384}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2560,   -613,   3686}, 0, { 12744,  19384}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1741,   -613,   3686}, 0, {  8656,  19384}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2560,   -511,   3686}, 0, { 12744,  19384}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2560,   -613,   3789}, 0, { 12744,  19896}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2560,   -511,   3789}, 0, { 12744,  19896}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1638,   -511,   3789}, 0, {  8144,  19896}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   819,   -613,   3277}, 0, {  4056,  17340}, {0xbd, 0x00, 0x6b, 0xff}}},\n};\n\n// 0x070057B0 - 0x07005890\nstatic const Vtx thi_seg7_vertex_070057B0[] = {\n    {{{   922,   -613,   3174}, 0, {  4568,  16830}, {0x43, 0x00, 0x95, 0xff}}},\n    {{{  1741,   -511,   3686}, 0, {  8656,  19384}, {0x43, 0x00, 0x95, 0xff}}},\n    {{{  1741,   -613,   3686}, 0, {  8656,  19384}, {0x43, 0x00, 0x95, 0xff}}},\n    {{{   922,   -716,   3174}, 0, {  4568,  16830}, {0x43, 0x00, 0x95, 0xff}}},\n    {{{   922,   -716,   3174}, 0, {  4568,  16830}, {0xf2, 0x83, 0xf2, 0xff}}},\n    {{{   819,   -716,   3277}, 0, {  4056,  17340}, {0xf2, 0x83, 0xf2, 0xff}}},\n    {{{   819,   -613,   2355}, 0, {  4056,  12742}, {0xf2, 0x83, 0xf2, 0xff}}},\n    {{{   973,   -613,   2304}, 0, {  4822,  12486}, {0xfb, 0x83, 0xf1, 0xff}}},\n    {{{   922,   -716,   3174}, 0, {  4568,  16830}, {0xfb, 0x83, 0xf1, 0xff}}},\n    {{{   819,   -613,   2355}, 0, {  4056,  12742}, {0xfb, 0x83, 0xf1, 0xff}}},\n    {{{   512,   -613,   1024}, 0, {  2522,   6098}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   973,   -613,   2304}, 0, {  4822,  12486}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   819,   -613,   2355}, 0, {  4056,  12742}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   307,   -613,   1024}, 0, {  1500,   6098}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07005890 - 0x07005990\nstatic const Vtx thi_seg7_vertex_07005890[] = {\n    {{{  2304,   2099,    258}, 0, { -1316, -10508}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2304,   2202,    565}, 0, { -2850, -10508}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2304,   2099,    565}, 0, { -2850, -10508}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2304,   2202,    258}, 0, { -1316, -10508}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2304,   2099,    258}, 0, { -1316, -10508}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1791,   2099,    565}, 0, { -2850,   9930}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1791,   2099,    258}, 0, { -1316,   9930}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2304,   2099,    565}, 0, { -2850, -10508}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2304,   2099,    565}, 0, { -2850, -10508}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2304,   2202,    565}, 0, { -2850, -10508}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1791,   2202,    565}, 0, { -2850,   9930}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1791,   2099,    565}, 0, { -2850,   9930}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1791,   2099,    565}, 0, { -8972,   3808}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1791,   2202,    565}, 0, { -8972,   3808}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1791,   2202,    258}, 0, { -8972,   2274}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1791,   2099,    258}, 0, { -8972,   2274}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07005990 - 0x07005A80\nstatic const Vtx thi_seg7_vertex_07005990[] = {\n    {{{  4403,  -1842,  -5221}, 0, { 26030, -20984}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5632,  -1637,  -5221}, 0, { 26030, -27116}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5632,  -1535,  -5221}, 0, { 26030, -27116}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5632,  -1535,  -5631}, 0, { 28074, -27116}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  5632,  -1637,  -5631}, 0, { 28074, -27116}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4403,  -1945,  -5631}, 0, { 28074, -20984}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4403,  -1842,  -5631}, 0, { 28074, -20984}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2970,  -2149,  -5631}, 0, { 28074, -13830}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2970,  -2047,  -5631}, 0, { 28074, -13830}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4403,  -1945,  -5221}, 0, { 26030, -20984}, {0x11, 0x83, 0x00, 0xff}}},\n    {{{  2970,  -2149,  -5631}, 0, { 28074, -13830}, {0x11, 0x83, 0x00, 0xff}}},\n    {{{  4403,  -1945,  -5631}, 0, { 28074, -20984}, {0x11, 0x83, 0x00, 0xff}}},\n    {{{  2970,  -2149,  -5221}, 0, { 26030, -13830}, {0x11, 0x83, 0x00, 0xff}}},\n    {{{  2970,  -2047,  -5221}, 0, { 26030, -13830}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4403,  -1945,  -5221}, 0, { 26030, -20984}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07005A80 - 0x07005B70\nstatic const Vtx thi_seg7_vertex_07005A80[] = {\n    {{{  4403,  -1945,  -5221}, 0, { 26030, -20984}, {0x1e, 0x85, 0x00, 0xff}}},\n    {{{  5632,  -1637,  -5631}, 0, { 28074, -27116}, {0x1e, 0x85, 0x00, 0xff}}},\n    {{{  5632,  -1637,  -5221}, 0, { 26030, -27116}, {0x1e, 0x85, 0x00, 0xff}}},\n    {{{  4403,  -1945,  -5631}, 0, { 28074, -20984}, {0x1e, 0x85, 0x00, 0xff}}},\n    {{{  2970,  -2047,  -5221}, 0, { 26030, -13830}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2970,  -2149,  -5221}, 0, { 26030, -13830}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4403,  -1945,  -5221}, 0, { 26030, -20984}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   512,   -613,   1024}, 0, {  2522,   6098}, {0x77, 0x00, 0xd5, 0xff}}},\n    {{{   973,   -511,   2304}, 0, {  4822,  12486}, {0x77, 0x00, 0xd5, 0xff}}},\n    {{{   973,   -613,   2304}, 0, {  4822,  12486}, {0x77, 0x00, 0xd5, 0xff}}},\n    {{{   512,   -511,   1024}, 0, {  2522,   6098}, {0x77, 0x00, 0xd5, 0xff}}},\n    {{{   973,   -511,   2304}, 0, {  4822,  12486}, {0x7e, 0x00, 0x07, 0xff}}},\n    {{{   922,   -716,   3174}, 0, {  4568,  16830}, {0x7e, 0x00, 0x07, 0xff}}},\n    {{{   973,   -613,   2304}, 0, {  4822,  12486}, {0x7e, 0x00, 0x07, 0xff}}},\n    {{{   922,   -613,   3174}, 0, {  4568,  16830}, {0x7e, 0x00, 0x07, 0xff}}},\n};\n\n// 0x07005B70 - 0x07005C30\nstatic const Vtx thi_seg7_vertex_07005B70[] = {\n    {{{   819,   -511,   2355}, 0, {  4056,  12740}, {0x8a, 0x00, 0x2d, 0xff}}},\n    {{{   307,   -511,   1024}, 0, {  1500,   6098}, {0x8a, 0x00, 0x2d, 0xff}}},\n    {{{   307,   -613,   1024}, 0, {  1500,   6098}, {0x8a, 0x00, 0x2d, 0xff}}},\n    {{{   512,   -511,   1024}, 0, {  2524,   6098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   307,   -511,    819}, 0, {  1502,   5076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   307,   -511,   1024}, 0, {  1502,   6098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   819,   -613,   2355}, 0, {  4056,  12740}, {0x8a, 0x00, 0x2d, 0xff}}},\n    {{{   819,   -716,   3277}, 0, {  4056,  17340}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   819,   -511,   2355}, 0, {  4056,  12740}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   819,   -613,   2355}, 0, {  4056,  12740}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   819,   -613,   3277}, 0, {  4056,  17340}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,   -511,    819}, 0, {  2524,   5076}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07005C30 - 0x07005D30\nstatic const Vtx thi_seg7_vertex_07005C30[] = {\n    {{{ -4607,    717,  -2457}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4230,    717,  -2457}, 0, { -1910,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4230,    341,  -2457}, 0, { -1910,   2862}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4607,    614,  -1945}, 0, {  2524,   1500}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4607,    205,  -1945}, 0, {  2524,   3542}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4607,    -12,  -1842}, 0, {  3034,   4628}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4607,    717,  -1842}, 0, {  3034,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4607,    717,  -2457}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4607,    614,  -2354}, 0, {   478,   1500}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4607,    205,  -2354}, 0, {   478,   3542}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4607,    102,  -2149}, 0, {  1500,   4054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4607,     94,  -2457}, 0, {     0,   4096}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4607,     94,  -2457}, 0, {     0,   4096}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4607,    717,  -1842}, 0, {  3034,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4230,    717,  -2457}, 0, {     0,   -890}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4607,    717,  -2457}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07005D30 - 0x07005DA0\nstatic const Vtx thi_seg7_vertex_07005D30[] = {\n    {{{ -4607,    717,  -1842}, 0, {  3034,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4347,    717,  -1842}, 0, {  3034,   -308}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4230,    717,  -2457}, 0, {     0,   -890}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4347,     90,  -1842}, 0, {  1266,   4118}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4347,    717,  -1842}, 0, {  1266,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4607,    717,  -1842}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4607,    -12,  -1842}, 0, {     0,   4628}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07005DA0 - 0x07005EA0\nstatic const Vtx thi_seg7_vertex_07005DA0[] = {\n    {{{ -4607,    614,  -1945}, 0, {     0,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4197,    205,  -1945}, 0, { -2074,   3544}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4607,    205,  -1945}, 0, {     0,   3544}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4607,    205,  -1945}, 0, {  2524,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4197,    205,  -2354}, 0, {   480,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4607,    205,  -2354}, 0, {   480,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4197,    205,  -1945}, 0, {  2524,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4607,    205,  -2354}, 0, {     0,   3544}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4197,    614,  -2354}, 0, {  2012,   1500}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4607,    614,  -2354}, 0, {     0,   1500}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4197,    205,  -2354}, 0, {  2012,   3544}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4607,    614,  -2354}, 0, {   480,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -4197,    614,  -2354}, 0, {   480,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -4197,    614,  -1945}, 0, {  2524,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -4607,    614,  -1945}, 0, {  2524,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -4197,    614,  -1945}, 0, { -2074,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07005EA0 - 0x07005FA0\nstatic const Vtx thi_seg7_vertex_07005EA0[] = {\n    {{{ -5119,  -2764,   6349}, 0, { -7330,   4930}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4607,  -2969,   6349}, 0, { -6600,   5222}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4607,  -2764,   6349}, 0, { -6600,   4930}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5119,  -2713,   6400}, 0, { -7330,   4856}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{ -5119,  -2764,   6349}, 0, { -7330,   4930}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{ -4607,  -2764,   6349}, 0, { -6600,   4930}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{ -5119,  -2969,   6349}, 0, { -7330,   5222}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4607,  -2713,   6400}, 0, { -6600,   4858}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{ -4607,  -2713,   6400}, 0, { -6600,  10114}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -4607,  -2713,   6502}, 0, { -6600,  10260}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -5119,  -2713,   6502}, 0, { -7330,  10260}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -5119,  -2713,   6400}, 0, { -7330,  10114}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -4607,  -2713,   6502}, 0, { -6600,   4858}, {0x00, 0xa6, 0xa8, 0xff}}},\n    {{{ -4607,  -2764,   6554}, 0, { -6600,   4930}, {0x00, 0xa6, 0xa8, 0xff}}},\n    {{{ -5119,  -2764,   6554}, 0, { -7330,   4930}, {0x00, 0xa6, 0xa8, 0xff}}},\n    {{{ -5119,  -2713,   6502}, 0, { -7330,   4858}, {0x00, 0xa6, 0xa8, 0xff}}},\n};\n\n// 0x07005FA0 - 0x07005FE0\nstatic const Vtx thi_seg7_vertex_07005FA0[] = {\n    {{{ -4607,  -2764,   6554}, 0, { -6600,   4930}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4607,  -2969,   6554}, 0, { -6600,   5222}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5119,  -2969,   6554}, 0, { -7330,   5222}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -5119,  -2764,   6554}, 0, { -7330,   4930}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07005FE0 - 0x070060E0\nstatic const Vtx thi_seg7_vertex_07005FE0[] = {\n    {{{  6758,  -3344,   7066}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6758,  -2832,   7066}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6758,  -2832,   6861}, 0, {   376,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6758,  -3344,   6861}, 0, {   376,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6554,  -2832,   6861}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6554,  -3344,   6861}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6758,  -2832,   6861}, 0, {   376,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  6554,  -3344,   6861}, 0, {   376,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6554,  -2832,   6861}, 0, {   376,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6554,  -2832,   7066}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6554,  -3344,   7066}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  6554,  -3344,   7066}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6758,  -2832,   7066}, 0, {   376,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6758,  -3344,   7066}, 0, {   376,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6554,  -2832,   7066}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  6758,  -3344,   6861}, 0, {   376,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070060E0 - 0x070061D0\nstatic const Vtx thi_seg7_vertex_070060E0[] = {\n    {{{  -101,   3891,  -1634}, 0, {  -176,  -2514}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,   3379,  -1634}, 0, {   114,  -1784}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,   3891,  -1634}, 0, {   114,  -2514}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   512,   -306,   1024}, 0, {  1428,   1426}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,   -306,    819}, 0, {  1136,   1426}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,   -511,    819}, 0, {  1136,   1718}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,   -511,   1024}, 0, {  1428,   1718}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   307,   -511,   1024}, 0, {  1428,   1718}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   307,   -511,    819}, 0, {  1136,   1718}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   307,   -306,    819}, 0, {  1136,   1426}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   307,   -306,   1024}, 0, {  1428,   1426}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   307,   -306,   1024}, 0, {   406,   2448}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   307,   -306,    819}, 0, {   406,   2156}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   512,   -306,    819}, 0, {   698,   2156}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   512,   -306,   1024}, 0, {   698,   2448}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x070061D0 - 0x070062C0\nstatic const Vtx thi_seg7_vertex_070061D0[] = {\n    {{{   102,   3891,  -1634}, 0, { -2360,  -4558}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   102,   3379,  -1634}, 0, { -2360,  -3828}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   102,   3379,  -1429}, 0, { -2068,  -3828}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -101,   3891,  -1634}, 0, {  -176,  -2514}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -101,   3379,  -1634}, 0, {  -176,  -1784}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,   3379,  -1634}, 0, {   114,  -1784}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -101,   3891,  -1429}, 0, { -2068,  -4558}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -101,   3379,  -1429}, 0, { -2068,  -3828}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -101,   3379,  -1634}, 0, { -2360,  -3828}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -101,   3891,  -1634}, 0, { -2360,  -4558}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,   3891,  -1429}, 0, {   114,  -2514}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -101,   3379,  -1429}, 0, {  -176,  -1784}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -101,   3891,  -1429}, 0, {  -176,  -2514}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   102,   3379,  -1429}, 0, {   114,  -1784}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   102,   3891,  -1429}, 0, { -2068,  -4558}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070062C0 - 0x070063C0\nstatic const Vtx thi_seg7_vertex_070062C0[] = {\n    {{{  -101,   3379,  -1634}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -101,   3379,  -1429}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,   3379,  -1429}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4197,    205,  -1945}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4197,    614,  -1945}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4197,    614,  -2354}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -4197,    205,  -2354}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6554,  -3344,   6861}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6554,  -3344,   7066}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6758,  -3344,   7066}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6758,  -3344,   6861}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,   -511,    819}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   307,   -306,    819}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   307,   -511,    819}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   512,   -306,    819}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,   3379,  -1634}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070063C0 - 0x07006660\nstatic const Gfx thi_seg7_dl_070063C0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09006800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&thi_seg7_lights_07005330.l, 1),\n    gsSPLight(&thi_seg7_lights_07005330.a, 2),\n    gsSPVertex(thi_seg7_vertex_07005390, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(thi_seg7_vertex_07005470, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(thi_seg7_vertex_07005550, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPLight(&thi_seg7_lights_07005348.l, 1),\n    gsSPLight(&thi_seg7_lights_07005348.a, 2),\n    gsSPVertex(thi_seg7_vertex_070055D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(thi_seg7_vertex_070056C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(thi_seg7_vertex_070057B0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(thi_seg7_vertex_07005890, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(thi_seg7_vertex_07005990, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14,  0, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(thi_seg7_vertex_07005A80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(thi_seg7_vertex_07005B70, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  2,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  3, 11,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07006660 - 0x07006770\nstatic const Gfx thi_seg7_dl_07006660[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&thi_seg7_lights_07005330.l, 1),\n    gsSPLight(&thi_seg7_lights_07005330.a, 2),\n    gsSPVertex(thi_seg7_vertex_07005C30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  3, 0x0),\n    gsSP2Triangles( 7,  3,  6, 0x0,  4,  9, 10, 0x0),\n    gsSP2Triangles( 5,  4, 10, 0x0, 11,  8,  7, 0x0),\n    gsSP2Triangles(11,  9,  8, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(thi_seg7_vertex_07005D30, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  3,  5, 0x0),\n    gsSPLight(&thi_seg7_lights_07005360.l, 1),\n    gsSPLight(&thi_seg7_lights_07005360.a, 2),\n    gsSPVertex(thi_seg7_vertex_07005DA0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07006770 - 0x07006800\nstatic const Gfx thi_seg7_dl_07006770[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&thi_seg7_lights_07005348.l, 1),\n    gsSPLight(&thi_seg7_lights_07005348.a, 2),\n    gsSPVertex(thi_seg7_vertex_07005EA0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  3,  5,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(thi_seg7_vertex_07005FA0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07006800 - 0x07006868\nstatic const Gfx thi_seg7_dl_07006800[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(thi_seg7_vertex_07005FE0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07006868 - 0x07006908\nstatic const Gfx thi_seg7_dl_07006868[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(thi_seg7_vertex_070060E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(thi_seg7_vertex_070061D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07006908 - 0x07006968\nstatic const Gfx thi_seg7_dl_07006908[] = {\n    gsSPLight(&thi_seg7_lights_07005378.l, 1),\n    gsSPLight(&thi_seg7_lights_07005378.a, 2),\n    gsSPVertex(thi_seg7_vertex_070062C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07006968 - 0x07006A30\nconst Gfx thi_seg7_dl_07006968[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(thi_seg7_dl_070063C0),\n    gsSPDisplayList(thi_seg7_dl_07006660),\n    gsSPDisplayList(thi_seg7_dl_07006770),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(thi_seg7_dl_07006800),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(thi_seg7_dl_07006868),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(thi_seg7_dl_07006908),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/thi/areas/1/3/model.inc.c",
    "content": "// 0x07006A30 - 0x07006B20\nstatic const Vtx thi_seg7_vertex_07006A30[] = {\n    {{{ -6614,  -2047,  -6628}, 0, {  4806,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6614,  -1945,  -6143}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6614,  -1945,  -6628}, 0, {  4806,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -8150,  -2866,   8151}, 0, { 20000,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -8150,  -2866,   6144}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -8150,  -2969,   6144}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -8150,  -2969,   8151}, 0, { 20000,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5119,  -2969,   8151}, 0, { 30374,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5119,  -2866,   8151}, 0, { 30374,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -8150,  -2866,   8151}, 0, {   124,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -8150,  -2969,   8151}, 0, {   124,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6614,  -1945,  -6628}, 0, { 15696,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5119,  -2047,  -7126}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6614,  -2047,  -6628}, 0, { 15696,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -5119,  -1945,  -7126}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07006B20 - 0x07006C10\nstatic const Vtx thi_seg7_vertex_07006B20[] = {\n    {{{ -2605,   -511,   2827}, 0, {  -102,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2834,   -511,   2140}, 0, {  7122,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2834,   -409,   2140}, 0, {  7122,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6614,  -2047,  -6628}, 0, {  4806,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6614,  -2047,  -6143}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6614,  -1945,  -6143}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6677,  -2832,   7645}, 0, {  8876,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6677,  -2730,   7645}, 0, {  8876,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5882,  -2730,   7168}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5882,  -2832,   7168}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2742,   -409,   1956}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2834,   -409,   2140}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2834,   -511,   2140}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2742,   -511,   1956}, 0, {  2012,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2605,   -409,   2827}, 0, {  -102,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07006C10 - 0x07006D00\nstatic const Vtx thi_seg7_vertex_07006C10[] = {\n    {{{  7168,  -2457,   5632}, 0, { 20408,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  7168,  -2559,   3584}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  7168,  -2559,   5632}, 0, { 20408,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2874,   -409,   2884}, 0, {   284,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2605,   -511,   2827}, 0, {  3034,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2605,   -409,   2827}, 0, {  3034,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2874,   -511,   2884}, 0, {   284,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2874,   -511,   2884}, 0, { 21214,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4437,   -409,   1453}, 0, {    72,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4437,   -511,   1453}, 0, {    72,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2874,   -409,   2884}, 0, { 21214,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4299,   -511,   1178}, 0, {    82,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4437,   -409,   1453}, 0, {  3148,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4299,   -409,   1178}, 0, {    82,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4437,   -511,   1453}, 0, {  3148,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07006D00 - 0x07006DF0\nstatic const Vtx thi_seg7_vertex_07006D00[] = {\n    {{{  6400,  -2457,   4096}, 0, { -7694,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5632,  -2559,   4096}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6400,  -2559,   4096}, 0, { -7694,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  7168,  -2457,   5632}, 0, { 20408,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  7168,  -2457,   3584}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  7168,  -2559,   3584}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  7168,  -2762,   6777}, 0, { 11784,      2}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  7168,  -2559,   5632}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  7168,  -2832,   6656}, 0, { 10546,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  7168,  -2457,   5632}, 0, {   -44,      2}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6656,  -2559,   3584}, 0, { -5744,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6656,  -2457,   3584}, 0, { -5744,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6400,  -2457,   4096}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6400,  -2559,   4096}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5632,  -2457,   4096}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07006DF0 - 0x07006EB0\nstatic const Vtx thi_seg7_vertex_07006DF0[] = {\n    {{{  5632,  -1535,  -6655}, 0, { 10188,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5632,  -1433,  -6655}, 0, { 10188,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5632,  -1433,  -5631}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5632,  -1535,  -5631}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5632,  -1535,  -5221}, 0, { -6162,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5632,  -1433,  -4607}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5632,  -1535,  -4607}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5632,  -1433,  -5221}, 0, { -6162,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5632,  -1433,  -6655}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6656,  -1535,  -6655}, 0, {-10250,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  6656,  -1433,  -6655}, 0, {-10250,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5632,  -1535,  -6655}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07006EB0 - 0x07007008\nstatic const Gfx thi_seg7_dl_07006EB0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_0900A000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(thi_seg7_vertex_07006A30, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(thi_seg7_vertex_07006B20, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(thi_seg7_vertex_07006C10, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(thi_seg7_vertex_07006D00, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(thi_seg7_vertex_07006DF0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007008 - 0x07007078\nconst Gfx thi_seg7_dl_07007008[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(thi_seg7_dl_07006EB0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/thi/areas/1/4/model.inc.c",
    "content": "// 0x07007078 - 0x07007090\nstatic const Lights1 thi_seg7_lights_07007078 = gdSPDefLights1(\n    0x7f, 0x7f, 0x3c,\n    0xff, 0xff, 0x78, 0x28, 0x28, 0x28\n);\n\n// 0x07007090 - 0x07007180\nstatic const Vtx thi_seg7_vertex_07007090[] = {\n    {{{  5632,  -6655,  -6655}, 0, {    76,    806}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5120,  -6655,  -7167}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4608,  -6655,  -5631}, 0, {   506,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -8191,  -3583,  -8191}, 0, {  1502,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5119,  -3583,  -4607}, 0, {     0,     96}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5119,  -3583,  -8191}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -8191,  -3583,  -8191}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -8191,  -3583,   8192}, 0, {  8144,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5119,  -3583,   8192}, 0, {  8144,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5119,  -3583,  -4607}, 0, {  1756,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5119,  -3583,   8192}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6963,  -3583,   8192}, 0, {  5998,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6963,  -3583,   4608}, 0, {  5998,     96}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5119,  -3583,   4608}, 0, {     0,     96}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5632,  -6655,  -4607}, 0, {   722,    620}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07007180 - 0x07007240\nstatic const Vtx thi_seg7_vertex_07007180[] = {\n    {{{  7680,  -6655,  -6655}, 0, {   224,    786}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  8192,  -6655,  -7167}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5120,  -6655,  -7167}, 0, {  1502,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5632,  -6655,  -6655}, 0, {  1246,    786}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -921,  -6655,  -5426}, 0, {  1940,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -921,  -6655,  -4607}, 0, {  1952,    844}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5632,  -6655,  -4607}, 0, {  -382,    800}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4608,  -6655,  -5631}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  7680,  -6655,  -6655}, 0, {   970,    790}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  7680,  -6655,  -5631}, 0, {   470,    890}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  7680,  -6655,  -4607}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  8192,  -6655,  -7167}, 0, {  1270,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07007240 - 0x070072E8\nstatic const Gfx thi_seg7_dl_07007240[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, grass_0900B800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&thi_seg7_lights_07007078.l, 1),\n    gsSPLight(&thi_seg7_lights_07007078.a, 2),\n    gsSPVertex(thi_seg7_vertex_07007090, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(thi_seg7_vertex_07007180, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070072E8 - 0x07007348\nconst Gfx thi_seg7_dl_070072E8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(thi_seg7_dl_07007240),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/thi/areas/1/5/model.inc.c",
    "content": "// 0x07007348 - 0x07007388\nstatic const Vtx thi_seg7_vertex_07007348[] = {\n    {{{  4690,   -511,   2131}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xb4}}},\n    {{{  4690,   -511,   2377}, 0, {     0,    990}, {0x00, 0x00, 0x00, 0xb4}}},\n    {{{  4936,   -511,   2377}, 0, {   990,    990}, {0x00, 0x00, 0x00, 0xb4}}},\n    {{{  4936,   -511,   2131}, 0, {   990,      0}, {0x00, 0x00, 0x00, 0xb4}}},\n};\n\n// 0x07007388 - 0x070073C0\nstatic const Gfx thi_seg7_dl_07007388[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, grass_0900B000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(thi_seg7_vertex_07007348, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070073C0 - 0x07007430\nconst Gfx thi_seg7_dl_070073C0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(thi_seg7_dl_07007388),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/thi/areas/1/6/collision.inc.c",
    "content": "// 0x0700E228 - 0x0700E258\nconst Collision thi_seg7_collision_top_trap[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x4),\n    COL_VERTEX(-101, 0, -101),\n    COL_VERTEX(-101, 0, 102),\n    COL_VERTEX(102, 0, -101),\n    COL_VERTEX(102, 0, 102),\n    COL_TRI_INIT(SURFACE_DEFAULT, 2),\n    COL_TRI(0, 1, 2),\n    COL_TRI(1, 3, 2),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/thi/areas/1/6/geo.inc.c",
    "content": "// 0x0E0005B0\nconst GeoLayout thi_geo_0005B0[] = {\n    GEO_CULLING_RADIUS(300),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, thi_seg7_dl_07007648),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0E0005C8\nconst GeoLayout thi_geo_0005C8[] = {\n    GEO_CULLING_RADIUS(300),\n    GEO_OPEN_NODE(),\n        GEO_SCALE(0x00, 19660),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, thi_seg7_dl_07007648),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/thi/areas/1/6/model.inc.c",
    "content": "// 0x070075A8 - 0x070075C0\nstatic const Lights1 thi_seg7_lights_070075A8 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x070075C0 - 0x07007600\nstatic const Vtx thi_seg7_vertex_070075C0[] = {\n    {{{  -101,      0,   -101}, 0, {   406,    406}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -101,      0,    102}, 0, {   406,    552}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,      0,   -101}, 0, {   552,    406}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,      0,    102}, 0, {   552,    552}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07007600 - 0x07007648\nstatic const Gfx thi_seg7_dl_07007600[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, thi_seg7_texture_07000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&thi_seg7_lights_070075A8.l, 1),\n    gsSPLight(&thi_seg7_lights_070075A8.a, 2),\n    gsSPVertex(thi_seg7_vertex_070075C0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007648 - 0x070076A8\nconst Gfx thi_seg7_dl_07007648[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(thi_seg7_dl_07007600),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/thi/areas/1/7/geo.inc.c",
    "content": "// 0x0E0005F0\nconst GeoLayout thi_geo_0005F0[] = {\n    GEO_CULLING_RADIUS(1200),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, thi_seg7_dl_07007930),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/thi/areas/1/7/model.inc.c",
    "content": "// 0x070076A8 - 0x070076C0\nstatic const Lights1 thi_seg7_lights_070076A8 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x070076C0 - 0x070076D8\nstatic const Lights1 thi_seg7_lights_070076C0 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0x99, 0x99, 0x99, 0x28, 0x28, 0x28\n);\n\n// 0x070076D8 - 0x07007718\nstatic const Vtx thi_seg7_vertex_070076D8[] = {\n    {{{  -409,      0,   -409}, 0, {  -848,    172}, {0xac, 0x54, 0xd6, 0xff}}},\n    {{{   410,      0,    410}, 0, {   786,   1806}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{   410,      0,   -409}, 0, {   786,    172}, {0x33, 0x33, 0x99, 0xff}}},\n    {{{  -409,      0,    410}, 0, {  -848,   1806}, {0xcd, 0x33, 0x67, 0xff}}},\n};\n\n// 0x07007718 - 0x070077D8\nstatic const Vtx thi_seg7_vertex_07007718[] = {\n    {{{  -409,   -101,   -409}, 0, {   990,    224}, {0xc0, 0xd4, 0x9c, 0xff}}},\n    {{{  -409,      0,   -409}, 0, {   990,      0}, {0xac, 0x54, 0xd6, 0xff}}},\n    {{{   410,      0,   -409}, 0, {     0,      0}, {0x33, 0x33, 0x99, 0xff}}},\n    {{{   410,   -101,   -409}, 0, {     0,    224}, {0x64, 0xd4, 0xc0, 0xff}}},\n    {{{   410,      0,    410}, 0, {   990,      0}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{   410,   -101,    410}, 0, {   990,    224}, {0x40, 0xd4, 0x64, 0xff}}},\n    {{{   410,   -101,    410}, 0, {     0,    224}, {0x40, 0xd4, 0x64, 0xff}}},\n    {{{  -409,      0,    410}, 0, {   990,      0}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{  -409,   -101,    410}, 0, {   990,    224}, {0x9c, 0xd4, 0x40, 0xff}}},\n    {{{   410,      0,    410}, 0, {     0,      0}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{  -409,      0,   -409}, 0, {     0,      0}, {0xac, 0x54, 0xd6, 0xff}}},\n    {{{  -409,   -101,   -409}, 0, {     0,    224}, {0xc0, 0xd4, 0x9c, 0xff}}},\n};\n\n// 0x070077D8 - 0x07007828\nstatic const Vtx thi_seg7_vertex_070077D8[] = {\n    {{{  -409,   -101,   -409}, 0, {  -438,   2624}, {0xc0, 0xd4, 0x9c, 0xff}}},\n    {{{   410,   -101,   -409}, 0, { -1666,   2624}, {0x64, 0xd4, 0xc0, 0xff}}},\n    {{{     0,   -613,      0}, 0, { -1052,   2010}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{   410,   -101,    410}, 0, { -1666,   1396}, {0x40, 0xd4, 0x64, 0xff}}},\n    {{{  -409,   -101,    410}, 0, {  -438,   1396}, {0x9c, 0xd4, 0x40, 0xff}}},\n};\n\n// 0x07007828 - 0x07007870\nstatic const Gfx thi_seg7_dl_07007828[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&thi_seg7_lights_070076A8.l, 1),\n    gsSPLight(&thi_seg7_lights_070076A8.a, 2),\n    gsSPVertex(thi_seg7_vertex_070076D8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007870 - 0x070078D8\nstatic const Gfx thi_seg7_dl_07007870[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(thi_seg7_vertex_07007718, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 8,  7, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070078D8 - 0x07007930\nstatic const Gfx thi_seg7_dl_070078D8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&thi_seg7_lights_070076C0.l, 1),\n    gsSPLight(&thi_seg7_lights_070076C0.a, 2),\n    gsSPVertex(thi_seg7_vertex_070077D8, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 3,  4,  2, 0x0,  4,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007930 - 0x070079D0\nconst Gfx thi_seg7_dl_07007930[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(thi_seg7_dl_07007828),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(thi_seg7_dl_07007870),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(thi_seg7_dl_070078D8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/thi/areas/1/collision.inc.c",
    "content": "// 0x07009FC8 - 0x0700BD5E\nconst Collision thi_seg7_area_1_collision[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x1D5),\n    COL_VERTEX(-4607, 614, -2354),\n    COL_VERTEX(-4197, 614, -1945),\n    COL_VERTEX(-4607, 614, -1945),\n    COL_VERTEX(-4197, 205, -1945),\n    COL_VERTEX(-4607, 205, -1945),\n    COL_VERTEX(-4607, -12, -1842),\n    COL_VERTEX(-4607, 717, -1842),\n    COL_VERTEX(-4607, 717, -2457),\n    COL_VERTEX(-4197, 205, -2354),\n    COL_VERTEX(-4607, 205, -2354),\n    COL_VERTEX(-4607, 102, -2149),\n    COL_VERTEX(-4347, 90, -1842),\n    COL_VERTEX(-4347, 717, -1842),\n    COL_VERTEX(-4230, 717, -2457),\n    COL_VERTEX(-4607, 94, -2457),\n    COL_VERTEX(-4230, 341, -2457),\n    COL_VERTEX(-4197, 614, -2354),\n    COL_VERTEX(-4607, 64, -3583),\n    COL_VERTEX(-3583, 819, -3071),\n    COL_VERTEX(-3583, 512, -3071),\n    COL_VERTEX(-4347, -511, -511),\n    COL_VERTEX(-2303, 2202, -765),\n    COL_VERTEX(-2303, 1690, -765),\n    COL_VERTEX(-2303, 1096, 258),\n    COL_VERTEX(-2303, 2202, 258),\n    COL_VERTEX(-1279, 2202, -1789),\n    COL_VERTEX(-1791, 2099, 565),\n    COL_VERTEX(-1279, 2202, 258),\n    COL_VERTEX(-2559, 819, -253),\n    COL_VERTEX(-2303, 1096, -253),\n    COL_VERTEX(-2559, 819, 1024),\n    COL_VERTEX(-1374, 2099, 258),\n    COL_VERTEX(512, -306, 1024),\n    COL_VERTEX(307, -306, 1024),\n    COL_VERTEX(-2559, 512, 1024),\n    COL_VERTEX(-2559, 512, 1536),\n    COL_VERTEX(-1497, -204, 1331),\n    COL_VERTEX(-1535, -511, 1026),\n    COL_VERTEX(-1497, -511, 1331),\n    COL_VERTEX(-1535, -511, 1024),\n    COL_VERTEX(307, -613, 1024),\n    COL_VERTEX(-4607, -511, 1024),\n    COL_VERTEX(-4607, -511, 4096),\n    COL_VERTEX(-3583, 512, 1024),\n    COL_VERTEX(-2559, -204, 2048),\n    COL_VERTEX(-4607, -1535, 4096),\n    COL_VERTEX(-1023, -511, 5120),\n    COL_VERTEX(-3583, 1229, -511),\n    COL_VERTEX(-1279, -511, 3072),\n    COL_VERTEX(-2559, 819, -3071),\n    COL_VERTEX(-2815, 1229, -511),\n    COL_VERTEX(-5631, -306, -511),\n    COL_VERTEX(-5119, 102, -2149),\n    COL_VERTEX(-5119, -511, -511),\n    COL_VERTEX(-4095, -6655, -4607),\n    COL_VERTEX(-3378, -409, -4607),\n    COL_VERTEX(-5119, 0, -4607),\n    COL_VERTEX(-5128, 285, -5732),\n    COL_VERTEX(-3583, 512, -4607),\n    COL_VERTEX(-3583, 1016, -1842),\n    COL_VERTEX(-2559, 512, -3071),\n    COL_VERTEX(-2815, 1690, -1277),\n    COL_VERTEX(-2815, 512, -253),\n    COL_VERTEX(-2815, 1690, -253),\n    COL_VERTEX(-2293, 1106, -1277),\n    COL_VERTEX(-1791, 1690, -1277),\n    COL_VERTEX(-1279, 2202, -3325),\n    COL_VERTEX(5632, -511, -4607),\n    COL_VERTEX(-1023, 4096, -2555),\n    COL_VERTEX(1792, 2202, -3325),\n    COL_VERTEX(-4607, -1535, 7168),\n    COL_VERTEX(-5119, -921, 4096),\n    COL_VERTEX(5734, -2047, -511),\n    COL_VERTEX(6246, -2047, 102),\n    COL_VERTEX(5632, -2047, -511),\n    COL_VERTEX(5632, -2764, 102),\n    COL_VERTEX(6246, -2047, -1330),\n    COL_VERTEX(5734, -2047, -1330),\n    COL_VERTEX(6042, -2457, -1330),\n    COL_VERTEX(5632, -3481, -818),\n    COL_VERTEX(5632, -2047, -1330),\n    COL_VERTEX(2304, 2099, 565),\n    COL_VERTEX(3072, 819, 1024),\n    COL_VERTEX(1887, 2099, 315),\n    COL_VERTEX(2304, 2099, 258),\n    COL_VERTEX(1887, 2099, 258),\n    COL_VERTEX(2304, 2202, 258),\n    COL_VERTEX(5632, -1637, -4607),\n    COL_VERTEX(5632, -1535, -4607),\n    COL_VERTEX(5632, -1535, -6655),\n    COL_VERTEX(5632, -6655, -4607),\n    COL_VERTEX(2560, -613, 3789),\n    COL_VERTEX(1638, -613, 3789),\n    COL_VERTEX(1638, -511, 3789),\n    COL_VERTEX(1741, -511, 3686),\n    COL_VERTEX(2560, -511, 3686),\n    COL_VERTEX(819, -613, 3277),\n    COL_VERTEX(819, -511, 2355),\n    COL_VERTEX(922, -613, 3174),\n    COL_VERTEX(973, -613, 2304),\n    COL_VERTEX(922, -716, 3174),\n    COL_VERTEX(512, -613, 1024),\n    COL_VERTEX(512, -511, 1024),\n    COL_VERTEX(5632, -1535, -5631),\n    COL_VERTEX(4403, -1842, -5631),\n    COL_VERTEX(4403, -1945, -5221),\n    COL_VERTEX(4403, -1842, -5221),\n    COL_VERTEX(2970, -2047, -5221),\n    COL_VERTEX(307, -511, 1024),\n    COL_VERTEX(973, -511, 2304),\n    COL_VERTEX(819, -716, 3277),\n    COL_VERTEX(512, -511, 819),\n    COL_VERTEX(512, -306, 819),\n    COL_VERTEX(307, -511, 819),\n    COL_VERTEX(-6655, -2047, -6655),\n    COL_VERTEX(-5119, -1945, -7167),\n    COL_VERTEX(-6614, -2047, -6628),\n    COL_VERTEX(-5119, -3583, -7167),\n    COL_VERTEX(-5119, -2047, -7167),\n    COL_VERTEX(6656, -2832, 7680),\n    COL_VERTEX(-6614, -2047, -6143),\n    COL_VERTEX(-6655, -1945, -6143),\n    COL_VERTEX(-6614, -1965, -6628),\n    COL_VERTEX(-8150, -2969, 6144),\n    COL_VERTEX(-7679, -2969, 6144),\n    COL_VERTEX(-8191, -2969, 6144),\n    COL_VERTEX(-8191, -3583, 8192),\n    COL_VERTEX(-7679, -3583, 6144),\n    COL_VERTEX(-4095, -2559, -4607),\n    COL_VERTEX(-4095, -2559, -7167),\n    COL_VERTEX(512, -511, 614),\n    COL_VERTEX(307, -306, 819),\n    COL_VERTEX(-5119, -2764, 6349),\n    COL_VERTEX(-5119, -2713, 6400),\n    COL_VERTEX(-5119, -511, 4096),\n    COL_VERTEX(-7167, -2969, 5120),\n    COL_VERTEX(-4607, -2764, 6349),\n    COL_VERTEX(-4607, -2713, 6400),\n    COL_VERTEX(-4607, -2713, 6502),\n    COL_VERTEX(-4607, -2764, 6554),\n    COL_VERTEX(-5119, -511, 8192),\n    COL_VERTEX(-4607, -2969, 6554),\n    COL_VERTEX(-5119, -3583, 5120),\n    COL_VERTEX(-5117, -2969, 5120),\n    COL_VERTEX(-5119, -2969, 8192),\n    COL_VERTEX(-4607, -3071, 8192),\n    COL_VERTEX(-4607, -3583, 8192),\n    COL_VERTEX(-5128, -3583, -5221),\n    COL_VERTEX(6656, -1535, -4607),\n    COL_VERTEX(7680, -1535, -6655),\n    COL_VERTEX(7680, -6655, -4607),\n    COL_VERTEX(6656, -2559, 717),\n    COL_VERTEX(7066, -2559, 307),\n    COL_VERTEX(7475, -6655, 307),\n    COL_VERTEX(7066, -6655, 102),\n    COL_VERTEX(6656, -6655, 717),\n    COL_VERTEX(-3378, -409, -5324),\n    COL_VERTEX(-3378, -101, -5631),\n    COL_VERTEX(-5617, 799, -5703),\n    COL_VERTEX(-5128, -613, -6244),\n    COL_VERTEX(-5128, 797, -6244),\n    COL_VERTEX(-5631, -204, -5631),\n    COL_VERTEX(-5631, 205, -4607),\n    COL_VERTEX(-3378, -613, -5631),\n    COL_VERTEX(6656, -1535, -2764),\n    COL_VERTEX(6656, -6655, -4607),\n    COL_VERTEX(6656, -1535, -2559),\n    COL_VERTEX(7680, -1535, -2559),\n    COL_VERTEX(-921, -1433, -5426),\n    COL_VERTEX(-3378, -818, -5017),\n    COL_VERTEX(-3378, -1330, -5017),\n    COL_VERTEX(-921, -6655, -5426),\n    COL_VERTEX(-3378, -6655, -5017),\n    COL_VERTEX(-3402, -6655, -5019),\n    COL_VERTEX(7168, -6655, 3584),\n    COL_VERTEX(7168, -2559, 5632),\n    COL_VERTEX(6349, -2832, 6656),\n    COL_VERTEX(6758, -2832, 6861),\n    COL_VERTEX(6554, -2832, 6861),\n    COL_VERTEX(7168, -2832, 6656),\n    COL_VERTEX(6349, -2832, 7168),\n    COL_VERTEX(6861, -2832, 7168),\n    COL_VERTEX(7168, -1945, 8192),\n    COL_VERTEX(7168, -6655, 8192),\n    COL_VERTEX(7168, -2762, 6777),\n    COL_VERTEX(1946, -2047, -5631),\n    COL_VERTEX(922, -2457, -5221),\n    COL_VERTEX(2970, -2457, -5631),\n    COL_VERTEX(922, -1637, -4607),\n    COL_VERTEX(922, -2047, -5221),\n    COL_VERTEX(-921, -1637, -5221),\n    COL_VERTEX(-921, -2457, -5221),\n    COL_VERTEX(2816, 3226, -1789),\n    COL_VERTEX(1792, 2202, 258),\n    COL_VERTEX(2304, 3226, -2909),\n    COL_VERTEX(2816, 2202, 258),\n    COL_VERTEX(5632, -511, 258),\n    COL_VERTEX(2560, -1535, 4096),\n    COL_VERTEX(2560, -511, 4096),\n    COL_VERTEX(5632, -1535, 2049),\n    COL_VERTEX(5632, -1433, -4607),\n    COL_VERTEX(2560, -3583, 6144),\n    COL_VERTEX(4096, -2559, 4864),\n    COL_VERTEX(5632, -2559, 4864),\n    COL_VERTEX(5632, -1535, 4096),\n    COL_VERTEX(5632, -2559, 5632),\n    COL_VERTEX(5632, -3583, 5632),\n    COL_VERTEX(5632, -2559, 4096),\n    COL_VERTEX(6656, -6655, 3584),\n    COL_VERTEX(7168, -2559, 3584),\n    COL_VERTEX(6656, -2559, 2560),\n    COL_VERTEX(6656, -6655, 2560),\n    COL_VERTEX(7168, -6655, 2560),\n    COL_VERTEX(853, -511, 1024),\n    COL_VERTEX(-1535, -1535, 1024),\n    COL_VERTEX(-5119, -613, -4607),\n    COL_VERTEX(-4607, -2969, 7168),\n    COL_VERTEX(-4607, -2969, 8192),\n    COL_VERTEX(-1708, -1535, 1631),\n    COL_VERTEX(-1459, -1804, 1629),\n    COL_VERTEX(-2578, -3583, 5700),\n    COL_VERTEX(-2578, -1535, 4676),\n    COL_VERTEX(-2562, -1535, 1638),\n    COL_VERTEX(-5128, -1352, -5220),\n    COL_VERTEX(-5128, -6655, -5221),\n    COL_VERTEX(-296, -3583, 7028),\n    COL_VERTEX(-726, -3583, 7028),\n    COL_VERTEX(-726, -2559, 6284),\n    COL_VERTEX(-941, -2559, 6656),\n    COL_VERTEX(-726, -3583, 6284),\n    COL_VERTEX(-81, -2559, 6656),\n    COL_VERTEX(-296, -3583, 6284),\n    COL_VERTEX(7250, -2559, 2264),\n    COL_VERTEX(7680, -2559, 717),\n    COL_VERTEX(-6143, -3583, 2048),\n    COL_VERTEX(-5119, -2559, 2048),\n    COL_VERTEX(-6655, -2559, 0),\n    COL_VERTEX(-7167, -2559, 1024),\n    COL_VERTEX(-6655, -3583, 0),\n    COL_VERTEX(-4607, -1535, -7167),\n    COL_VERTEX(-5119, -3583, -8191),\n    COL_VERTEX(-4607, -1023, -8191),\n    COL_VERTEX(-7167, -2047, -3071),\n    COL_VERTEX(-7167, -2047, -4607),\n    COL_VERTEX(-6655, -2047, -5119),\n    COL_VERTEX(-716, 3891, -815),\n    COL_VERTEX(717, 3891, -815),\n    COL_VERTEX(-101, 3891, -1634),\n    COL_VERTEX(-716, 3891, -2248),\n    COL_VERTEX(5803, -2832, 7168),\n    COL_VERTEX(6656, -2832, 8192),\n    COL_VERTEX(6042, -2457, 102),\n    COL_VERTEX(5632, -2764, -1330),\n    COL_VERTEX(-2303, 1690, -253),\n    COL_VERTEX(-1791, 2099, 258),\n    COL_VERTEX(-1791, 2202, 258),\n    COL_VERTEX(-1791, 2202, 565),\n    COL_VERTEX(-1374, 2099, 315),\n    COL_VERTEX(-2559, -511, 1024),\n    COL_VERTEX(-2559, 512, -511),\n    COL_VERTEX(-3583, 512, -511),\n    COL_VERTEX(-2559, 512, -253),\n    COL_VERTEX(-2559, -204, 1331),\n    COL_VERTEX(-1459, -1459, 1629),\n    COL_VERTEX(3072, 819, 258),\n    COL_VERTEX(-1535, 0, 1024),\n    COL_VERTEX(-2559, -511, 1331),\n    COL_VERTEX(0, -1535, 1024),\n    COL_VERTEX(-1023, -1023, 5120),\n    COL_VERTEX(-4607, -204, 1024),\n    COL_VERTEX(-2559, -511, 2048),\n    COL_VERTEX(-5631, -306, 4096),\n    COL_VERTEX(-2562, -1804, 1638),\n    COL_VERTEX(-4607, -2969, 5120),\n    COL_VERTEX(-2815, 1106, -1277),\n    COL_VERTEX(-2815, 512, -511),\n    COL_VERTEX(-4607, 0, -4607),\n    COL_VERTEX(-5631, -204, -4607),\n    COL_VERTEX(-2559, 512, -4607),\n    COL_VERTEX(-2559, 819, -4607),\n    COL_VERTEX(-1792, 1648, -1277),\n    COL_VERTEX(-1791, 1649, -1277),\n    COL_VERTEX(-4650, -2764, 8192),\n    COL_VERTEX(1024, 4096, -2555),\n    COL_VERTEX(5632, -2047, 102),\n    COL_VERTEX(6554, -2047, -818),\n    COL_VERTEX(5734, -1535, -4607),\n    COL_VERTEX(5734, -1637, -4607),\n    COL_VERTEX(2304, 2202, 565),\n    COL_VERTEX(7680, -1535, -5631),\n    COL_VERTEX(7680, -6655, -6655),\n    COL_VERTEX(5632, -6655, -6655),\n    COL_VERTEX(5632, -2457, 4096),\n    COL_VERTEX(2560, -613, 3686),\n    COL_VERTEX(1741, -613, 3686),\n    COL_VERTEX(2560, -511, 3789),\n    COL_VERTEX(819, -613, 2355),\n    COL_VERTEX(4403, -1945, -5631),\n    COL_VERTEX(5632, -1637, -5631),\n    COL_VERTEX(2970, -2149, -5631),\n    COL_VERTEX(2970, -2047, -5631),\n    COL_VERTEX(2970, -2149, -5221),\n    COL_VERTEX(5632, -1637, -5221),\n    COL_VERTEX(5632, -1535, -5221),\n    COL_VERTEX(307, -511, 614),\n    COL_VERTEX(307, -306, 614),\n    COL_VERTEX(-6655, -1945, -6655),\n    COL_VERTEX(-5119, -2047, -7126),\n    COL_VERTEX(-5119, -1965, -7126),\n    COL_VERTEX(-6655, -3583, -6655),\n    COL_VERTEX(-5119, -2047, -6143),\n    COL_VERTEX(512, -306, 614),\n    COL_VERTEX(-5119, -1535, -8191),\n    COL_VERTEX(6656, -2730, 7680),\n    COL_VERTEX(5803, -2730, 7168),\n    COL_VERTEX(-6655, -3583, -5119),\n    COL_VERTEX(-6655, -2047, -6143),\n    COL_VERTEX(-6614, -1965, -6143),\n    COL_VERTEX(-7167, -3583, -4607),\n    COL_VERTEX(-8191, -2436, 6144),\n    COL_VERTEX(-8150, -2764, 6144),\n    COL_VERTEX(-8191, -2969, 8192),\n    COL_VERTEX(-8191, -3583, 6144),\n    COL_VERTEX(-4095, -6655, -7167),\n    COL_VERTEX(-4607, -6655, -7167),\n    COL_VERTEX(-4607, -2559, -7167),\n    COL_VERTEX(-5119, -2969, 6349),\n    COL_VERTEX(-4607, -2969, 6349),\n    COL_VERTEX(-5119, -2969, 6554),\n    COL_VERTEX(-5119, -2713, 6502),\n    COL_VERTEX(-7167, -3583, 5120),\n    COL_VERTEX(-5119, -921, -511),\n    COL_VERTEX(-5119, -2764, 6554),\n    COL_VERTEX(-5119, -2969, 5120),\n    COL_VERTEX(6656, -6655, -2559),\n    COL_VERTEX(-4607, -3583, 7987),\n    COL_VERTEX(7680, -1535, -2764),\n    COL_VERTEX(7066, -2559, 102),\n    COL_VERTEX(7475, -2559, 307),\n    COL_VERTEX(-3378, -818, -4607),\n    COL_VERTEX(-921, -1433, -4607),\n    COL_VERTEX(7680, -6655, -2559),\n    COL_VERTEX(-921, -6655, -4607),\n    COL_VERTEX(6656, -2559, 3584),\n    COL_VERTEX(6554, -2832, 7066),\n    COL_VERTEX(6758, -2832, 7066),\n    COL_VERTEX(6656, -3583, 8192),\n    COL_VERTEX(922, -2047, -4607),\n    COL_VERTEX(2970, -2047, -4607),\n    COL_VERTEX(1946, -2457, -5631),\n    COL_VERTEX(6656, -3583, 7680),\n    COL_VERTEX(2970, -2457, -4607),\n    COL_VERTEX(922, -1637, -5221),\n    COL_VERTEX(-921, -1637, -4607),\n    COL_VERTEX(2816, 3226, -2909),\n    COL_VERTEX(2304, 3226, -1789),\n    COL_VERTEX(2560, -511, 3072),\n    COL_VERTEX(5632, -511, 1024),\n    COL_VERTEX(5632, -511, 2049),\n    COL_VERTEX(6400, -2559, 4096),\n    COL_VERTEX(6400, -6655, 4096),\n    COL_VERTEX(5632, -6655, 4096),\n    COL_VERTEX(7168, -2559, 2560),\n    COL_VERTEX(6656, -2559, 2253),\n    COL_VERTEX(768, -613, 1024),\n    COL_VERTEX(-726, -2559, 7028),\n    COL_VERTEX(-941, -3583, 6656),\n    COL_VERTEX(-296, -2559, 7028),\n    COL_VERTEX(-296, -2559, 6284),\n    COL_VERTEX(-81, -3583, 6656),\n    COL_VERTEX(7680, -6655, 717),\n    COL_VERTEX(-6143, -2559, 2048),\n    COL_VERTEX(-5119, -3583, 2048),\n    COL_VERTEX(-7167, -3583, 1024),\n    COL_VERTEX(-5119, -2559, 0),\n    COL_VERTEX(-5119, -3583, 0),\n    COL_VERTEX(5632, -3583, 4864),\n    COL_VERTEX(-4607, -3583, -8191),\n    COL_VERTEX(1024, 4096, -507),\n    COL_VERTEX(-1023, 4096, -507),\n    COL_VERTEX(-7167, -3583, -3071),\n    COL_VERTEX(-5119, -3583, -3071),\n    COL_VERTEX(-5119, -2047, -3071),\n    COL_VERTEX(102, 3891, -1429),\n    COL_VERTEX(102, 3891, -1634),\n    COL_VERTEX(717, 3891, -2248),\n    COL_VERTEX(-101, 3891, -1429),\n    COL_VERTEX(4267, -3583, 7168),\n    COL_VERTEX(-5119, -2559, -4607),\n    COL_VERTEX(-5119, -2559, -6143),\n    COL_VERTEX(-3583, -3583, 7680),\n    COL_VERTEX(-4405, -429, 1434),\n    COL_VERTEX(-4430, -409, 1439),\n    COL_VERTEX(-2887, -429, 2849),\n    COL_VERTEX(-2894, -409, 2871),\n    COL_VERTEX(-4455, -429, 1444),\n    COL_VERTEX(-4281, -429, 1187),\n    COL_VERTEX(-4299, -409, 1178),\n    COL_VERTEX(-4318, -429, 1169),\n    COL_VERTEX(-2900, -429, 2893),\n    COL_VERTEX(-2613, -409, 2820),\n    COL_VERTEX(-2586, -429, 2836),\n    COL_VERTEX(-2640, -429, 2804),\n    COL_VERTEX(-2815, -429, 2149),\n    COL_VERTEX(-2838, -409, 2147),\n    COL_VERTEX(-2860, -429, 2146),\n    COL_VERTEX(-2724, -429, 1966),\n    COL_VERTEX(-2742, -409, 1956),\n    COL_VERTEX(2304, -613, 2867),\n    COL_VERTEX(-2760, -429, 1947),\n    COL_VERTEX(6677, -2750, 7645),\n    COL_VERTEX(5882, -2750, 7168),\n    COL_VERTEX(-8191, -2436, 8192),\n    COL_VERTEX(-8150, -2764, 8151),\n    COL_VERTEX(-5119, -2436, 8192),\n    COL_VERTEX(-5119, -2764, 8151),\n    COL_VERTEX(-8191, -7167, -8191),\n    COL_VERTEX(-8191, -7167, 8192),\n    COL_VERTEX(8192, -7167, 8192),\n    COL_VERTEX(8192, -7167, -8191),\n    COL_VERTEX(7782, -7065, 205),\n    COL_VERTEX(5632, -7065, -2866),\n    COL_VERTEX(5632, -7065, 205),\n    COL_VERTEX(7782, -7065, -2866),\n    COL_VERTEX(6656, -3071, 8192),\n    COL_VERTEX(-5119, -3071, -8191),\n    COL_VERTEX(-8191, -3071, -8191),\n    COL_VERTEX(-8191, -3583, -8191),\n    COL_VERTEX(-8191, -3071, 6144),\n    COL_VERTEX(5632, -1433, -6655),\n    COL_VERTEX(6400, -2457, 4096),\n    COL_VERTEX(7168, -2457, 5632),\n    COL_VERTEX(-2640, -511, 2804),\n    COL_VERTEX(-2760, -511, 1947),\n    COL_VERTEX(-4318, -511, 1169),\n    COL_VERTEX(-2900, -511, 2893),\n    COL_VERTEX(-2586, -511, 2836),\n    COL_VERTEX(5882, -2832, 7168),\n    COL_VERTEX(-101, 3379, -1634),\n    COL_VERTEX(-101, 3379, -1429),\n    COL_VERTEX(-101, 3174, -1634),\n    COL_VERTEX(102, 3379, -1634),\n    COL_VERTEX(102, 3379, -1429),\n    COL_VERTEX(6758, -3344, 6861),\n    COL_VERTEX(6758, -3344, 7066),\n    COL_VERTEX(6554, -3344, 6861),\n    COL_VERTEX(6554, -3344, 7066),\n    COL_VERTEX(-5119, -2047, -4607),\n    COL_VERTEX(-4607, -6655, -8191),\n    COL_VERTEX(6656, -1535, -6655),\n    COL_VERTEX(6656, -1433, -6655),\n    COL_VERTEX(5632, -1433, -5221),\n    COL_VERTEX(5632, -1433, -5631),\n    COL_VERTEX(6656, -2457, 3584),\n    COL_VERTEX(7168, -2457, 3584),\n    COL_VERTEX(-2887, -511, 2849),\n    COL_VERTEX(-2860, -511, 2146),\n    COL_VERTEX(-4405, -511, 1434),\n    COL_VERTEX(-4281, -511, 1187),\n    COL_VERTEX(-2815, -511, 2149),\n    COL_VERTEX(-2724, -511, 1966),\n    COL_VERTEX(-4455, -511, 1444),\n    COL_VERTEX(6677, -2832, 7645),\n    COL_VERTEX(102, 3174, -1634),\n    COL_VERTEX(-101, 3174, -1429),\n    COL_VERTEX(102, 3174, -1429),\n    COL_VERTEX(-5116, -3583, 8192),\n    COL_VERTEX(-8150, -2969, 8151),\n    COL_VERTEX(-5119, -2969, 8151),\n    COL_TRI_INIT(SURFACE_DEFAULT, 572),\n    COL_TRI(6, 12, 13),\n    COL_TRI(0, 1, 2),\n    COL_TRI(2, 1, 3),\n    COL_TRI(2, 3, 4),\n    COL_TRI(2, 4, 5),\n    COL_TRI(2, 5, 6),\n    COL_TRI(7, 0, 2),\n    COL_TRI(7, 2, 6),\n    COL_TRI(4, 8, 9),\n    COL_TRI(4, 3, 8),\n    COL_TRI(4, 9, 10),\n    COL_TRI(5, 4, 10),\n    COL_TRI(5, 11, 6),\n    COL_TRI(11, 12, 6),\n    COL_TRI(6, 13, 7),\n    COL_TRI(14, 0, 7),\n    COL_TRI(7, 13, 15),\n    COL_TRI(7, 15, 14),\n    COL_TRI(0, 16, 1),\n    COL_TRI(9, 16, 0),\n    COL_TRI(14, 9, 0),\n    COL_TRI(9, 14, 10),\n    COL_TRI(9, 8, 16),\n    COL_TRI(17, 14, 15),\n    COL_TRI(15, 13, 18),\n    COL_TRI(18, 19, 15),\n    COL_TRI(19, 17, 15),\n    COL_TRI(5, 20, 11),\n    COL_TRI(20, 12, 11),\n    COL_TRI(3, 16, 8),\n    COL_TRI(3, 1, 16),\n    COL_TRI(21, 22, 24),\n    COL_TRI(22, 253, 24),\n    COL_TRI(23, 24, 253),\n    COL_TRI(26, 254, 31),\n    COL_TRI(24, 23, 254),\n    COL_TRI(24, 254, 255),\n    COL_TRI(23, 31, 254),\n    COL_TRI(26, 256, 255),\n    COL_TRI(26, 255, 254),\n    COL_TRI(25, 24, 255),\n    COL_TRI(27, 25, 255),\n    COL_TRI(28, 30, 23),\n    COL_TRI(29, 28, 23),\n    COL_TRI(30, 31, 23),\n    COL_TRI(31, 257, 26),\n    COL_TRI(30, 257, 31),\n    COL_TRI(30, 82, 83),\n    COL_TRI(30, 83, 257),\n    COL_TRI(32, 82, 30),\n    COL_TRI(30, 258, 39),\n    COL_TRI(33, 32, 30),\n    COL_TRI(30, 39, 33),\n    COL_TRI(34, 30, 28),\n    COL_TRI(26, 257, 83),\n    COL_TRI(38, 36, 262),\n    COL_TRI(34, 259, 260),\n    COL_TRI(34, 260, 43),\n    COL_TRI(35, 34, 43),\n    COL_TRI(34, 28, 261),\n    COL_TRI(34, 36, 265),\n    COL_TRI(34, 262, 36),\n    COL_TRI(36, 38, 39),\n    COL_TRI(37, 265, 36),\n    COL_TRI(39, 214, 267),\n    COL_TRI(38, 262, 266),\n    COL_TRI(39, 38, 263),\n    COL_TRI(39, 263, 214),\n    COL_TRI(39, 40, 108),\n    COL_TRI(39, 108, 33),\n    COL_TRI(40, 39, 267),\n    COL_TRI(41, 20, 53),\n    COL_TRI(20, 41, 269),\n    COL_TRI(41, 53, 134),\n    COL_TRI(42, 41, 134),\n    COL_TRI(41, 44, 269),\n    COL_TRI(41, 42, 270),\n    COL_TRI(41, 270, 44),\n    COL_TRI(43, 20, 269),\n    COL_TRI(44, 43, 269),\n    COL_TRI(42, 45, 221),\n    COL_TRI(42, 221, 268),\n    COL_TRI(42, 268, 46),\n    COL_TRI(45, 42, 134),\n    COL_TRI(44, 35, 43),\n    COL_TRI(43, 260, 20),\n    COL_TRI(47, 20, 260),\n    COL_TRI(20, 5, 53),\n    COL_TRI(20, 47, 12),\n    COL_TRI(48, 46, 268),\n    COL_TRI(46, 48, 270),\n    COL_TRI(46, 270, 42),\n    COL_TRI(38, 48, 268),\n    COL_TRI(47, 59, 12),\n    COL_TRI(49, 47, 274),\n    COL_TRI(49, 18, 47),\n    COL_TRI(47, 50, 274),\n    COL_TRI(50, 47, 260),\n    COL_TRI(5, 52, 53),\n    COL_TRI(5, 10, 52),\n    COL_TRI(57, 162, 56),\n    COL_TRI(51, 53, 52),\n    COL_TRI(51, 52, 162),\n    COL_TRI(52, 56, 162),\n    COL_TRI(10, 14, 52),\n    COL_TRI(14, 17, 52),\n    COL_TRI(17, 56, 52),\n    COL_TRI(53, 271, 134),\n    COL_TRI(53, 51, 271),\n    COL_TRI(17, 276, 56),\n    COL_TRI(54, 56, 276),\n    COL_TRI(55, 156, 56),\n    COL_TRI(56, 156, 57),\n    COL_TRI(58, 276, 17),\n    COL_TRI(19, 58, 17),\n    COL_TRI(59, 18, 13),\n    COL_TRI(18, 60, 19),\n    COL_TRI(18, 49, 60),\n    COL_TRI(59, 13, 12),\n    COL_TRI(60, 58, 19),\n    COL_TRI(60, 278, 58),\n    COL_TRI(49, 274, 64),\n    COL_TRI(61, 274, 50),\n    COL_TRI(49, 278, 60),\n    COL_TRI(49, 279, 278),\n    COL_TRI(50, 260, 275),\n    COL_TRI(62, 50, 275),\n    COL_TRI(28, 62, 261),\n    COL_TRI(63, 62, 28),\n    COL_TRI(50, 62, 63),\n    COL_TRI(61, 50, 63),\n    COL_TRI(22, 63, 253),\n    COL_TRI(22, 61, 63),\n    COL_TRI(63, 28, 29),\n    COL_TRI(63, 29, 253),\n    COL_TRI(64, 274, 61),\n    COL_TRI(64, 61, 280),\n    COL_TRI(61, 65, 280),\n    COL_TRI(65, 61, 22),\n    COL_TRI(49, 64, 281),\n    COL_TRI(66, 279, 49),\n    COL_TRI(66, 49, 281),\n    COL_TRI(66, 281, 25),\n    COL_TRI(65, 25, 280),\n    COL_TRI(25, 65, 22),\n    COL_TRI(25, 22, 21),\n    COL_TRI(25, 21, 24),\n    COL_TRI(23, 253, 29),\n    COL_TRI(67, 279, 66),\n    COL_TRI(68, 66, 25),\n    COL_TRI(69, 67, 66),\n    COL_TRI(68, 69, 66),\n    COL_TRI(70, 45, 134),\n    COL_TRI(70, 134, 140),\n    COL_TRI(71, 134, 271),\n    COL_TRI(72, 286, 88),\n    COL_TRI(72, 88, 74),\n    COL_TRI(73, 72, 74),\n    COL_TRI(74, 284, 73),\n    COL_TRI(75, 73, 284),\n    COL_TRI(73, 251, 285),\n    COL_TRI(75, 251, 73),\n    COL_TRI(73, 285, 72),\n    COL_TRI(76, 77, 72),\n    COL_TRI(72, 285, 76),\n    COL_TRI(77, 286, 72),\n    COL_TRI(78, 76, 285),\n    COL_TRI(79, 78, 285),\n    COL_TRI(85, 84, 81),\n    COL_TRI(80, 76, 78),\n    COL_TRI(77, 287, 286),\n    COL_TRI(81, 256, 26),\n    COL_TRI(26, 83, 81),\n    COL_TRI(82, 85, 83),\n    COL_TRI(83, 85, 81),\n    COL_TRI(84, 288, 81),\n    COL_TRI(81, 288, 256),\n    COL_TRI(82, 264, 85),\n    COL_TRI(84, 85, 264),\n    COL_TRI(86, 84, 195),\n    COL_TRI(84, 86, 288),\n    COL_TRI(87, 287, 77),\n    COL_TRI(88, 149, 89),\n    COL_TRI(88, 148, 149),\n    COL_TRI(89, 90, 88),\n    COL_TRI(94, 293, 294),\n    COL_TRI(87, 77, 80),\n    COL_TRI(91, 92, 293),\n    COL_TRI(92, 294, 293),\n    COL_TRI(92, 100, 294),\n    COL_TRI(92, 110, 100),\n    COL_TRI(93, 110, 92),\n    COL_TRI(91, 93, 92),\n    COL_TRI(94, 95, 293),\n    COL_TRI(98, 94, 294),\n    COL_TRI(91, 295, 93),\n    COL_TRI(95, 93, 295),\n    COL_TRI(93, 96, 110),\n    COL_TRI(95, 94, 93),\n    COL_TRI(94, 96, 93),\n    COL_TRI(94, 98, 96),\n    COL_TRI(96, 98, 109),\n    COL_TRI(97, 96, 109),\n    COL_TRI(98, 294, 100),\n    COL_TRI(99, 100, 296),\n    COL_TRI(100, 110, 296),\n    COL_TRI(101, 296, 40),\n    COL_TRI(101, 99, 296),\n    COL_TRI(102, 101, 213),\n    COL_TRI(103, 297, 104),\n    COL_TRI(103, 298, 297),\n    COL_TRI(104, 297, 299),\n    COL_TRI(104, 299, 300),\n    COL_TRI(105, 301, 299),\n    COL_TRI(105, 299, 297),\n    COL_TRI(106, 105, 302),\n    COL_TRI(106, 302, 303),\n    COL_TRI(107, 105, 106),\n    COL_TRI(107, 301, 105),\n    COL_TRI(105, 298, 302),\n    COL_TRI(105, 297, 298),\n    COL_TRI(108, 109, 102),\n    COL_TRI(108, 97, 109),\n    COL_TRI(101, 109, 99),\n    COL_TRI(101, 102, 109),\n    COL_TRI(109, 100, 99),\n    COL_TRI(109, 98, 100),\n    COL_TRI(97, 108, 40),\n    COL_TRI(97, 40, 296),\n    COL_TRI(110, 96, 97),\n    COL_TRI(110, 97, 296),\n    COL_TRI(32, 111, 102),\n    COL_TRI(32, 102, 213),\n    COL_TRI(102, 111, 113),\n    COL_TRI(102, 113, 108),\n    COL_TRI(32, 112, 111),\n    COL_TRI(111, 304, 113),\n    COL_TRI(111, 130, 304),\n    COL_TRI(112, 130, 111),\n    COL_TRI(108, 113, 131),\n    COL_TRI(113, 304, 305),\n    COL_TRI(113, 305, 131),\n    COL_TRI(108, 131, 33),\n    COL_TRI(114, 115, 118),\n    COL_TRI(130, 305, 304),\n    COL_TRI(33, 131, 112),\n    COL_TRI(33, 112, 32),\n    COL_TRI(115, 307, 118),\n    COL_TRI(116, 308, 122),\n    COL_TRI(116, 307, 308),\n    COL_TRI(115, 308, 307),\n    COL_TRI(117, 118, 312),\n    COL_TRI(118, 117, 309),\n    COL_TRI(118, 309, 114),\n    COL_TRI(118, 310, 239),\n    COL_TRI(118, 239, 312),\n    COL_TRI(119, 313, 314),\n    COL_TRI(122, 317, 120),\n    COL_TRI(119, 314, 249),\n    COL_TRI(120, 121, 316),\n    COL_TRI(120, 317, 121),\n    COL_TRI(121, 114, 316),\n    COL_TRI(121, 306, 114),\n    COL_TRI(114, 309, 315),\n    COL_TRI(114, 315, 244),\n    COL_TRI(122, 120, 116),\n    COL_TRI(114, 306, 115),\n    COL_TRI(123, 319, 320),\n    COL_TRI(123, 125, 319),\n    COL_TRI(124, 125, 144),\n    COL_TRI(125, 321, 144),\n    COL_TRI(126, 125, 322),\n    COL_TRI(126, 321, 125),\n    COL_TRI(127, 125, 124),\n    COL_TRI(127, 322, 125),\n    COL_TRI(144, 321, 126),\n    COL_TRI(32, 213, 82),\n    COL_TRI(128, 323, 129),\n    COL_TRI(129, 324, 325),\n    COL_TRI(129, 323, 324),\n    COL_TRI(128, 54, 323),\n    COL_TRI(130, 311, 305),\n    COL_TRI(131, 305, 311),\n    COL_TRI(131, 311, 112),\n    COL_TRI(112, 311, 130),\n    COL_TRI(134, 133, 329),\n    COL_TRI(132, 326, 327),\n    COL_TRI(132, 327, 136),\n    COL_TRI(133, 132, 136),\n    COL_TRI(134, 326, 132),\n    COL_TRI(134, 132, 133),\n    COL_TRI(135, 328, 326),\n    COL_TRI(134, 143, 326),\n    COL_TRI(136, 327, 273),\n    COL_TRI(133, 136, 137),\n    COL_TRI(136, 273, 45),\n    COL_TRI(137, 136, 45),\n    COL_TRI(137, 329, 133),\n    COL_TRI(137, 138, 329),\n    COL_TRI(70, 137, 45),\n    COL_TRI(70, 138, 137),\n    COL_TRI(138, 139, 332),\n    COL_TRI(138, 332, 329),\n    COL_TRI(139, 138, 70),\n    COL_TRI(140, 329, 332),\n    COL_TRI(134, 329, 140),\n    COL_TRI(139, 328, 332),\n    COL_TRI(139, 141, 328),\n    COL_TRI(139, 70, 216),\n    COL_TRI(141, 139, 216),\n    COL_TRI(140, 328, 144),\n    COL_TRI(140, 332, 328),\n    COL_TRI(135, 144, 328),\n    COL_TRI(142, 135, 333),\n    COL_TRI(143, 135, 326),\n    COL_TRI(142, 330, 135),\n    COL_TRI(135, 124, 144),\n    COL_TRI(135, 330, 127),\n    COL_TRI(135, 127, 124),\n    COL_TRI(140, 144, 217),\n    COL_TRI(126, 146, 144),\n    COL_TRI(145, 217, 144),\n    COL_TRI(146, 145, 144),\n    COL_TRI(147, 142, 143),\n    COL_TRI(148, 289, 149),\n    COL_TRI(88, 165, 148),\n    COL_TRI(148, 165, 164),\n    COL_TRI(149, 290, 291),\n    COL_TRI(149, 291, 89),\n    COL_TRI(150, 149, 336),\n    COL_TRI(150, 290, 149),\n    COL_TRI(151, 152, 337),\n    COL_TRI(152, 338, 337),\n    COL_TRI(153, 337, 338),\n    COL_TRI(153, 154, 337),\n    COL_TRI(154, 155, 337),\n    COL_TRI(155, 151, 337),\n    COL_TRI(156, 55, 169),\n    COL_TRI(156, 157, 57),\n    COL_TRI(57, 158, 162),\n    COL_TRI(57, 160, 158),\n    COL_TRI(157, 160, 57),\n    COL_TRI(158, 161, 162),\n    COL_TRI(159, 161, 158),\n    COL_TRI(160, 159, 158),\n    COL_TRI(157, 159, 160),\n    COL_TRI(161, 277, 162),\n    COL_TRI(162, 277, 331),\n    COL_TRI(163, 157, 156),\n    COL_TRI(163, 156, 169),\n    COL_TRI(164, 166, 167),\n    COL_TRI(164, 167, 336),\n    COL_TRI(165, 166, 164),\n    COL_TRI(166, 334, 341),\n    COL_TRI(166, 341, 167),\n    COL_TRI(165, 334, 166),\n    COL_TRI(167, 150, 336),\n    COL_TRI(167, 341, 150),\n    COL_TRI(168, 170, 169),\n    COL_TRI(170, 163, 169),\n    COL_TRI(169, 55, 339),\n    COL_TRI(169, 339, 340),\n    COL_TRI(169, 340, 168),\n    COL_TRI(171, 168, 340),\n    COL_TRI(171, 340, 342),\n    COL_TRI(172, 170, 168),\n    COL_TRI(173, 168, 171),\n    COL_TRI(174, 209, 175),\n    COL_TRI(175, 176, 179),\n    COL_TRI(175, 179, 174),\n    COL_TRI(180, 345, 344),\n    COL_TRI(177, 181, 179),\n    COL_TRI(178, 177, 179),\n    COL_TRI(178, 179, 176),\n    COL_TRI(179, 181, 184),\n    COL_TRI(179, 184, 183),\n    COL_TRI(179, 183, 174),\n    COL_TRI(176, 344, 178),\n    COL_TRI(177, 345, 181),\n    COL_TRI(176, 180, 344),\n    COL_TRI(176, 175, 205),\n    COL_TRI(180, 181, 345),\n    COL_TRI(181, 180, 119),\n    COL_TRI(181, 182, 184),\n    COL_TRI(182, 181, 119),\n    COL_TRI(180, 249, 119),\n    COL_TRI(182, 119, 250),\n    COL_TRI(182, 250, 346),\n    COL_TRI(183, 182, 346),\n    COL_TRI(184, 182, 183),\n    COL_TRI(185, 189, 347),\n    COL_TRI(185, 347, 348),\n    COL_TRI(189, 352, 188),\n    COL_TRI(185, 348, 300),\n    COL_TRI(185, 300, 187),\n    COL_TRI(186, 189, 185),\n    COL_TRI(187, 300, 348),\n    COL_TRI(187, 348, 351),\n    COL_TRI(188, 352, 190),\n    COL_TRI(188, 190, 353),\n    COL_TRI(189, 188, 347),\n    COL_TRI(190, 352, 189),\n    COL_TRI(191, 190, 189),\n    COL_TRI(192, 354, 194),\n    COL_TRI(192, 194, 355),\n    COL_TRI(86, 195, 192),\n    COL_TRI(193, 86, 192),\n    COL_TRI(193, 192, 355),\n    COL_TRI(67, 354, 192),\n    COL_TRI(192, 196, 67),\n    COL_TRI(192, 195, 196),\n    COL_TRI(199, 198, 197),\n    COL_TRI(69, 194, 354),\n    COL_TRI(194, 69, 283),\n    COL_TRI(195, 84, 264),\n    COL_TRI(196, 195, 264),\n    COL_TRI(197, 198, 356),\n    COL_TRI(198, 357, 356),\n    COL_TRI(198, 358, 357),\n    COL_TRI(199, 358, 198),\n    COL_TRI(88, 200, 199),\n    COL_TRI(90, 88, 204),\n    COL_TRI(200, 358, 199),\n    COL_TRI(200, 67, 358),\n    COL_TRI(197, 204, 199),\n    COL_TRI(201, 197, 267),\n    COL_TRI(202, 197, 201),\n    COL_TRI(203, 197, 202),\n    COL_TRI(203, 204, 197),\n    COL_TRI(204, 203, 292),\n    COL_TRI(90, 204, 292),\n    COL_TRI(90, 292, 207),\n    COL_TRI(89, 291, 90),\n    COL_TRI(175, 203, 205),\n    COL_TRI(176, 205, 206),\n    COL_TRI(205, 203, 206),\n    COL_TRI(203, 175, 359),\n    COL_TRI(203, 359, 207),\n    COL_TRI(206, 203, 202),\n    COL_TRI(203, 207, 292),\n    COL_TRI(175, 209, 359),\n    COL_TRI(207, 359, 360),\n    COL_TRI(208, 360, 359),\n    COL_TRI(208, 359, 343),\n    COL_TRI(209, 343, 359),\n    COL_TRI(207, 360, 361),\n    COL_TRI(207, 361, 90),\n    COL_TRI(208, 209, 174),\n    COL_TRI(208, 343, 209),\n    COL_TRI(210, 362, 232),\n    COL_TRI(210, 232, 363),\n    COL_TRI(210, 212, 362),\n    COL_TRI(212, 232, 362),\n    COL_TRI(213, 101, 364),\n    COL_TRI(101, 267, 364),\n    COL_TRI(101, 40, 267),\n    COL_TRI(214, 219, 267),\n    COL_TRI(201, 267, 219),\n    COL_TRI(215, 223, 147),\n    COL_TRI(216, 217, 145),\n    COL_TRI(146, 216, 145),\n    COL_TRI(146, 335, 216),\n    COL_TRI(217, 70, 282),\n    COL_TRI(70, 217, 216),\n    COL_TRI(70, 140, 282),\n    COL_TRI(214, 263, 219),\n    COL_TRI(218, 272, 219),\n    COL_TRI(220, 221, 273),\n    COL_TRI(219, 263, 218),\n    COL_TRI(221, 263, 268),\n    COL_TRI(38, 268, 263),\n    COL_TRI(221, 218, 263),\n    COL_TRI(221, 222, 218),\n    COL_TRI(221, 272, 222),\n    COL_TRI(221, 220, 272),\n    COL_TRI(221, 45, 273),\n    COL_TRI(147, 223, 170),\n    COL_TRI(222, 272, 218),\n    COL_TRI(223, 277, 161),\n    COL_TRI(159, 223, 161),\n    COL_TRI(223, 215, 277),\n    COL_TRI(157, 163, 159),\n    COL_TRI(223, 159, 163),\n    COL_TRI(170, 223, 163),\n    COL_TRI(170, 172, 224),\n    COL_TRI(224, 147, 170),\n    COL_TRI(215, 147, 143),\n    COL_TRI(225, 365, 226),\n    COL_TRI(226, 365, 228),\n    COL_TRI(226, 228, 366),\n    COL_TRI(225, 367, 365),\n    COL_TRI(227, 228, 365),\n    COL_TRI(227, 365, 367),\n    COL_TRI(228, 227, 229),\n    COL_TRI(228, 229, 366),\n    COL_TRI(229, 227, 368),\n    COL_TRI(227, 367, 230),\n    COL_TRI(227, 230, 368),\n    COL_TRI(229, 368, 231),\n    COL_TRI(230, 367, 225),\n    COL_TRI(230, 225, 369),\n    COL_TRI(231, 368, 230),\n    COL_TRI(231, 230, 369),\n    COL_TRI(210, 211, 212),\n    COL_TRI(220, 219, 272),\n    COL_TRI(143, 134, 331),\n    COL_TRI(143, 331, 215),\n    COL_TRI(219, 220, 201),\n    COL_TRI(206, 202, 201),\n    COL_TRI(232, 212, 370),\n    COL_TRI(235, 234, 372),\n    COL_TRI(232, 370, 233),\n    COL_TRI(233, 370, 153),\n    COL_TRI(233, 153, 338),\n    COL_TRI(151, 155, 211),\n    COL_TRI(151, 211, 363),\n    COL_TRI(211, 210, 363),\n    COL_TRI(234, 371, 237),\n    COL_TRI(235, 371, 234),\n    COL_TRI(236, 237, 371),\n    COL_TRI(236, 371, 235),\n    COL_TRI(234, 237, 373),\n    COL_TRI(237, 236, 238),\n    COL_TRI(237, 238, 373),\n    COL_TRI(238, 236, 374),\n    COL_TRI(236, 235, 374),\n    COL_TRI(238, 374, 375),\n    COL_TRI(203, 376, 206),\n    COL_TRI(88, 90, 165),\n    COL_TRI(186, 185, 349),\n    COL_TRI(239, 241, 312),\n    COL_TRI(240, 312, 241),\n    COL_TRI(117, 312, 240),\n    COL_TRI(241, 377, 240),\n    COL_TRI(191, 189, 186),\n    COL_TRI(185, 187, 349),\n    COL_TRI(27, 379, 68),\n    COL_TRI(67, 69, 354),\n    COL_TRI(68, 283, 69),\n    COL_TRI(193, 378, 379),\n    COL_TRI(193, 379, 27),\n    COL_TRI(193, 355, 378),\n    COL_TRI(242, 380, 381),\n    COL_TRI(242, 381, 382),\n    COL_TRI(243, 380, 242),\n    COL_TRI(248, 386, 247),\n    COL_TRI(243, 318, 380),\n    COL_TRI(244, 318, 243),\n    COL_TRI(244, 315, 318),\n    COL_TRI(245, 246, 383),\n    COL_TRI(246, 384, 383),\n    COL_TRI(246, 385, 384),\n    COL_TRI(247, 385, 248),\n    COL_TRI(247, 384, 385),\n    COL_TRI(245, 383, 386),\n    COL_TRI(248, 245, 386),\n    COL_TRI(79, 251, 75),\n    COL_TRI(27, 68, 25),\n    COL_TRI(119, 249, 350),\n    COL_TRI(249, 387, 350),\n    COL_TRI(250, 119, 350),\n    COL_TRI(250, 350, 346),\n    COL_TRI(251, 79, 285),\n    COL_TRI(80, 78, 252),\n    COL_TRI(252, 78, 79),\n    COL_TRI(276, 58, 54),\n    COL_TRI(278, 200, 88),\n    COL_TRI(58, 278, 54),\n    COL_TRI(278, 67, 200),\n    COL_TRI(278, 279, 67),\n    COL_TRI(54, 278, 88),\n    COL_TRI(54, 88, 90),\n    COL_TRI_INIT(SURFACE_DEATH_PLANE, 2),\n    COL_TRI(416, 417, 418),\n    COL_TRI(416, 418, 419),\n    COL_TRI_INIT(SURFACE_SHALLOW_QUICKSAND, 5),\n    COL_TRI(244, 243, 242),\n    COL_TRI(118, 114, 244),\n    COL_TRI(118, 244, 447),\n    COL_TRI(244, 382, 447),\n    COL_TRI(244, 242, 382),\n    COL_TRI_INIT(SURFACE_WALL_MISC, 85),\n    COL_TRI(270, 266, 262),\n    COL_TRI(146, 424, 346),\n    COL_TRI(146, 145, 424),\n    COL_TRI(240, 425, 426),\n    COL_TRI(240, 426, 427),\n    COL_TRI(427, 426, 428),\n    COL_TRI(427, 428, 322),\n    COL_TRI(303, 200, 88),\n    COL_TRI(270, 262, 44),\n    COL_TRI(262, 34, 35),\n    COL_TRI(262, 35, 44),\n    COL_TRI(429, 449, 450),\n    COL_TRI(429, 89, 449),\n    COL_TRI(303, 451, 200),\n    COL_TRI(89, 452, 103),\n    COL_TRI(89, 429, 452),\n    COL_TRI(430, 292, 207),\n    COL_TRI(430, 207, 359),\n    COL_TRI(343, 453, 430),\n    COL_TRI(343, 430, 359),\n    COL_TRI(184, 175, 179),\n    COL_TRI(184, 431, 175),\n    COL_TRI(391, 393, 455),\n    COL_TRI(431, 454, 209),\n    COL_TRI(431, 209, 175),\n    COL_TRI(432, 393, 402),\n    COL_TRI(432, 455, 393),\n    COL_TRI(402, 405, 456),\n    COL_TRI(402, 456, 432),\n    COL_TRI(406, 403, 459),\n    COL_TRI(391, 455, 457),\n    COL_TRI(396, 391, 457),\n    COL_TRI(396, 457, 458),\n    COL_TRI(433, 405, 409),\n    COL_TRI(433, 456, 405),\n    COL_TRI(406, 459, 460),\n    COL_TRI(434, 461, 395),\n    COL_TRI(434, 395, 398),\n    COL_TRI(435, 395, 461),\n    COL_TRI(435, 399, 395),\n    COL_TRI(399, 436, 401),\n    COL_TRI(399, 435, 436),\n    COL_TRI(436, 403, 401),\n    COL_TRI(436, 459, 403),\n    COL_TRI(437, 314, 411),\n    COL_TRI(437, 249, 314),\n    COL_TRI(437, 411, 410),\n    COL_TRI(437, 410, 462),\n    COL_TRI(119, 410, 313),\n    COL_TRI(119, 462, 410),\n    COL_TRI(438, 463, 441),\n    COL_TRI(438, 440, 463),\n    COL_TRI(247, 438, 441),\n    COL_TRI(439, 440, 438),\n    COL_TRI(386, 439, 438),\n    COL_TRI(386, 438, 247),\n    COL_TRI(440, 464, 465),\n    COL_TRI(440, 465, 463),\n    COL_TRI(439, 464, 440),\n    COL_TRI(441, 463, 465),\n    COL_TRI(441, 465, 442),\n    COL_TRI(247, 441, 384),\n    COL_TRI(384, 441, 442),\n    COL_TRI(442, 465, 464),\n    COL_TRI(442, 464, 439),\n    COL_TRI(384, 442, 383),\n    COL_TRI(383, 442, 439),\n    COL_TRI(383, 439, 386),\n    COL_TRI(443, 177, 178),\n    COL_TRI(444, 177, 443),\n    COL_TRI(444, 345, 177),\n    COL_TRI(443, 178, 445),\n    COL_TRI(445, 178, 344),\n    COL_TRI(445, 446, 444),\n    COL_TRI(445, 444, 443),\n    COL_TRI(445, 344, 446),\n    COL_TRI(446, 344, 345),\n    COL_TRI(446, 345, 444),\n    COL_TRI(447, 389, 310),\n    COL_TRI(447, 388, 389),\n    COL_TRI(387, 249, 180),\n    COL_TRI(239, 389, 325),\n    COL_TRI(239, 310, 389),\n    COL_TRI(239, 324, 241),\n    COL_TRI(448, 241, 324),\n    COL_TRI_INIT(SURFACE_HORIZONTAL_WIND, 10),\n    COL_TRI_SPECIAL(303, 103, 104, 0xE1),\n    COL_TRI_SPECIAL(303, 104, 106, 0xE1),\n    COL_TRI_SPECIAL(104, 107, 106, 0xE1),\n    COL_TRI_SPECIAL(104, 300, 107, 0xE1),\n    COL_TRI_SPECIAL(289, 164, 336, 0x0),\n    COL_TRI_SPECIAL(289, 148, 164, 0x0),\n    COL_TRI_SPECIAL(152, 232, 233, 0x80),\n    COL_TRI_SPECIAL(152, 233, 338, 0x80),\n    COL_TRI_SPECIAL(152, 151, 363, 0x80),\n    COL_TRI_SPECIAL(152, 363, 232, 0x80),\n    COL_TRI_INIT(SURFACE_ICE, 18),\n    COL_TRI(390, 146, 226),\n    COL_TRI(390, 335, 146),\n    COL_TRI(146, 346, 225),\n    COL_TRI(146, 225, 226),\n    COL_TRI(346, 350, 387),\n    COL_TRI(346, 387, 225),\n    COL_TRI(369, 225, 387),\n    COL_TRI(220, 390, 226),\n    COL_TRI(226, 366, 220),\n    COL_TRI(220, 231, 201),\n    COL_TRI(220, 229, 231),\n    COL_TRI(220, 366, 229),\n    COL_TRI(231, 387, 201),\n    COL_TRI(231, 369, 387),\n    COL_TRI(201, 387, 206),\n    COL_TRI(240, 427, 126),\n    COL_TRI(126, 466, 147),\n    COL_TRI(126, 147, 240),\n    COL_TRI_INIT(SURFACE_HARD_VERY_SLIPPERY, 35),\n    COL_TRI(402, 400, 404),\n    COL_TRI(391, 392, 393),\n    COL_TRI(392, 394, 393),\n    COL_TRI(392, 395, 394),\n    COL_TRI(392, 391, 396),\n    COL_TRI(392, 396, 397),\n    COL_TRI(395, 392, 397),\n    COL_TRI(395, 397, 398),\n    COL_TRI(395, 399, 394),\n    COL_TRI(399, 400, 394),\n    COL_TRI(399, 401, 400),\n    COL_TRI(400, 393, 394),\n    COL_TRI(400, 402, 393),\n    COL_TRI(400, 403, 404),\n    COL_TRI(400, 401, 403),\n    COL_TRI(306, 122, 308),\n    COL_TRI(402, 404, 405),\n    COL_TRI(403, 406, 404),\n    COL_TRI(407, 405, 404),\n    COL_TRI(406, 407, 404),\n    COL_TRI(407, 409, 405),\n    COL_TRI(313, 410, 411),\n    COL_TRI(313, 411, 314),\n    COL_TRI(306, 308, 115),\n    COL_TRI(267, 197, 408),\n    COL_TRI(122, 306, 121),\n    COL_TRI(122, 121, 317),\n    COL_TRI(267, 408, 364),\n    COL_TRI(408, 356, 364),\n    COL_TRI(356, 82, 213),\n    COL_TRI(197, 356, 408),\n    COL_TRI(356, 213, 364),\n    COL_TRI(82, 356, 357),\n    COL_TRI(357, 196, 264),\n    COL_TRI(357, 264, 82),\n    COL_TRI_INIT(SURFACE_HARD_NOT_SLIPPERY, 20),\n    COL_TRI(355, 194, 283),\n    COL_TRI(325, 388, 128),\n    COL_TRI(325, 128, 129),\n    COL_TRI(325, 389, 388),\n    COL_TRI(390, 220, 216),\n    COL_TRI(220, 141, 216),\n    COL_TRI(220, 327, 141),\n    COL_TRI(220, 273, 327),\n    COL_TRI(216, 335, 390),\n    COL_TRI(206, 387, 176),\n    COL_TRI(378, 283, 385),\n    COL_TRI(248, 385, 283),\n    COL_TRI(248, 283, 68),\n    COL_TRI(355, 283, 378),\n    COL_TRI(378, 245, 379),\n    COL_TRI(378, 385, 246),\n    COL_TRI(378, 246, 245),\n    COL_TRI(379, 245, 248),\n    COL_TRI(379, 248, 68),\n    COL_TRI(387, 180, 176),\n    COL_TRI_INIT(SURFACE_VERTICAL_WIND, 2),\n    COL_TRI(420, 421, 422),\n    COL_TRI(420, 423, 421),\n    COL_TRI_INIT(SURFACE_CAMERA_FREE_ROAM, 2),\n    COL_TRI(326, 328, 141),\n    COL_TRI(326, 141, 327),\n    COL_TRI_INIT(SURFACE_CAMERA_8_DIR, 4),\n    COL_TRI(288, 86, 193),\n    COL_TRI(256, 288, 193),\n    COL_TRI(256, 193, 27),\n    COL_TRI(255, 256, 27),\n    COL_TRI_INIT(SURFACE_CAMERA_ROTATE_RIGHT, 2),\n    COL_TRI(48, 38, 270),\n    COL_TRI(270, 38, 266),\n    COL_TRI_INIT(SURFACE_NO_CAM_COLLISION, 8),\n    COL_TRI(51, 331, 71),\n    COL_TRI(467, 413, 415),\n    COL_TRI(467, 415, 468),\n    COL_TRI(467, 320, 413),\n    COL_TRI(467, 123, 320),\n    COL_TRI(162, 331, 51),\n    COL_TRI(331, 277, 215),\n    COL_TRI(51, 71, 271),\n    COL_TRI_INIT(SURFACE_NO_CAM_COL_VERY_SLIPPERY, 4),\n    COL_TRI(412, 413, 320),\n    COL_TRI(413, 412, 414),\n    COL_TRI(413, 414, 415),\n    COL_TRI(412, 320, 319),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(2),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_null_start,  /*pos*/ -7372, -2969,  7373, /*yaw*/ 106), // unused, probably an early way to set initial position\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree, /*pos*/  4813,  -511,  2254),\n    COL_WATER_BOX_INIT(3),\n    COL_WATER_BOX(0, -8191, -8191, -5119, 6246, -3071),\n    COL_WATER_BOX(1, -4607, 4506, 6963, 8192, -3071),\n    COL_WATER_BOX(2, -1023, -2555, 1024, -507, 4014),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/thi/areas/1/geo.inc.c",
    "content": "// 0x0E000608\nconst GeoLayout thi_geo_000608[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND(BACKGROUND_OCEAN_SKY, geo_skybox_main),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 20000, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(1, 0, 2000, 6000, 0, 0, 0, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, thi_seg7_dl_07005260),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, thi_seg7_dl_07006968),\n                    GEO_DISPLAY_LIST(LAYER_ALPHA, thi_seg7_dl_07007008),\n                    GEO_DISPLAY_LIST(LAYER_TRANSPARENT, thi_seg7_dl_070072E8),\n                    GEO_DISPLAY_LIST(LAYER_TRANSPARENT_DECAL, thi_seg7_dl_070073C0),\n                    GEO_ASM(   0, geo_movtex_pause_control),\n                    GEO_ASM(0x1301, geo_movtex_draw_water_regions),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(   0, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_cannon_circle_base),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/thi/areas/1/macro.inc.c",
    "content": "// 0x0700DD50 - 0x0700DEE2\nconst MacroObject thi_seg7_area_1_macro_objs[] = {\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_cannon_closed,         /*yaw*/   0, /*pos*/  6656, -2832,  6964, /*bhvParam*/ 0x80),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,  /*yaw*/   0, /*pos*/   870,  -502,  2828),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_in_pole,    /*yaw*/   0, /*pos*/  4800,  -110,  2250),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,       /*yaw*/  90, /*pos*/  6728, -2559,  1561, /*bhvParam*/ DIALOG_091),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,  /*yaw*/  90, /*pos*/   -66, -1637, -4944),\n    MACRO_OBJECT               (/*preset*/ macro_huge_goomba,           /*yaw*/   0, /*pos*/  7069, -1535, -4758),\n    MACRO_OBJECT               (/*preset*/ macro_huge_goomba,           /*yaw*/   0, /*pos*/  7177, -1535, -3522),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,  /*yaw*/   0, /*pos*/  5711, -1677, -2944),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,         /*yaw*/   0, /*pos*/ -1200, -1540,  1150),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,         /*yaw*/   0, /*pos*/  -250, -1540,  1150),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,    /*yaw*/   0, /*pos*/ -1200, -1540,  1150),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,    /*yaw*/   0, /*pos*/  -250, -1550,  1150),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_hidden_1up,            /*yaw*/   0, /*pos*/  -777, -1544,  1233, /*bhvParam*/ 2),\n    MACRO_OBJECT               (/*preset*/ macro_huge_goomba,           /*yaw*/   0, /*pos*/  4600, -1544,  3455),\n    MACRO_OBJECT               (/*preset*/ macro_huge_goomba,           /*yaw*/   0, /*pos*/  3444,  -522,  3011),\n    MACRO_OBJECT               (/*preset*/ macro_huge_goomba,           /*yaw*/   0, /*pos*/ -3622,  -511,  3100),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,  /*yaw*/   0, /*pos*/ -4911,  -395, -1433),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,  /*yaw*/  90, /*pos*/   199,  2233,   433),\n    MACRO_OBJECT               (/*preset*/ macro_huge_goomba,           /*yaw*/   0, /*pos*/ -3177,  1255, -2366),\n    MACRO_OBJECT               (/*preset*/ macro_chuckya,               /*yaw*/   0, /*pos*/ -1800,  2233,  -322),\n    MACRO_OBJECT               (/*preset*/ macro_fish_spawner_few_blue, /*yaw*/   0, /*pos*/ -6222, -3400, -1455),\n    MACRO_OBJECT               (/*preset*/ macro_enemy_lakitu,          /*yaw*/   0, /*pos*/ -1905, -2223,  6541),\n    MACRO_OBJECT               (/*preset*/ macro_fire_fly_guy,          /*yaw*/   0, /*pos*/ -1911,     0, -5822),\n    MACRO_OBJECT               (/*preset*/ macro_fire_fly_guy,          /*yaw*/   0, /*pos*/  6493, -2186,  5189),\n    MACRO_OBJECT               (/*preset*/ macro_1up,                   /*yaw*/   0, /*pos*/ -6000, -3566, -1320),\n    MACRO_OBJECT               (/*preset*/ macro_fish_spawner_few_blue, /*yaw*/   0, /*pos*/ -6550, -3450,  4100),\n    MACRO_OBJECT               (/*preset*/ macro_fish_spawner_few_blue, /*yaw*/   0, /*pos*/ -1750, -3450,  7800),\n    MACRO_OBJECT               (/*preset*/ macro_fish_spawner_few_blue, /*yaw*/   0, /*pos*/  1950, -3500,  7600),\n    MACRO_OBJECT               (/*preset*/ macro_box_1up_running_away,  /*yaw*/   0, /*pos*/ -5712, -2190,  1100),\n    MACRO_OBJECT               (/*preset*/ macro_box_1up_running_away,  /*yaw*/   0, /*pos*/  6022, -1722,  -633),\n    MACRO_OBJECT               (/*preset*/ macro_wooden_post_1,         /*yaw*/   0, /*pos*/ -5822, -2969,  5822),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,       /*yaw*/  90, /*pos*/  -886, -2559,  6655, /*bhvParam*/ DIALOG_165),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,       /*yaw*/   0, /*pos*/ -2370,  -511,  2320, /*bhvParam*/ DIALOG_166),\n    MACRO_OBJECT               (/*preset*/ macro_box_star_act_2,        /*yaw*/   0, /*pos*/  2600,  3500, -2400),\n    MACRO_OBJECT               (/*preset*/ macro_huge_goomba,           /*yaw*/   0, /*pos*/ -3180,  -511,  2080),\n    MACRO_OBJECT               (/*preset*/ macro_fly_guy,               /*yaw*/   0, /*pos*/  -300, -2340,  3940),\n    MACRO_OBJECT               (/*preset*/ macro_wooden_post_1,         /*yaw*/   0, /*pos*/  -520, -2560,  6660),\n    MACRO_OBJECT               (/*preset*/ macro_koopa,                 /*yaw*/   0, /*pos*/  -800, -2236,  3080),\n    MACRO_OBJECT               (/*preset*/ macro_butterfly_triplet,     /*yaw*/   0, /*pos*/ -3111,  -511,  2400),\n    MACRO_OBJECT               (/*preset*/ macro_butterfly_triplet,     /*yaw*/   0, /*pos*/  4844,  -533,  2266),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/thi/areas/1/movtext.inc.c",
    "content": "// 0x0700E2BC\nstatic Movtex thi_movtex_area1_short_side_water_data[] = {\n    MOV_TEX_INIT_LOAD(    1),\n    MOV_TEX_ROT_SPEED(   10),\n    MOV_TEX_ROT_SCALE(   10),\n    MOV_TEX_4_BOX_TRIS(-8191, -8191),\n    MOV_TEX_4_BOX_TRIS(-8191,  6246),\n    MOV_TEX_4_BOX_TRIS(-5119,  6246),\n    MOV_TEX_4_BOX_TRIS(-5119, -8191),\n    MOV_TEX_ROT(     ROTATE_COUNTER_CLOCKWISE),\n    MOV_TEX_ALPHA(    0x96),\n    MOV_TEX_DEFINE(  TEXTURE_WATER),\n    MOV_TEX_END(),\n};\n\n// 0x0700E2DC\nstatic Movtex thi_movtex_area1_large_side_water_data[] = {\n    MOV_TEX_INIT_LOAD(    1),\n    MOV_TEX_ROT_SPEED(   10),\n    MOV_TEX_ROT_SCALE(   10),\n    MOV_TEX_4_BOX_TRIS(-4607,  4506),\n    MOV_TEX_4_BOX_TRIS(-4607,  8192),\n    MOV_TEX_4_BOX_TRIS( 6963,  8192),\n    MOV_TEX_4_BOX_TRIS( 6963,  4506),\n    MOV_TEX_ROT(     ROTATE_COUNTER_CLOCKWISE),\n    MOV_TEX_ALPHA(    0x96),\n    MOV_TEX_DEFINE(  TEXTURE_WATER),\n    MOV_TEX_END(),\n};\n\n// 0x0700E2FC\nstatic Movtex thi_movtex_area1_mountain_top_water_data[] = {\n    MOV_TEX_INIT_LOAD(    1),\n    MOV_TEX_ROT_SPEED(   10),\n    MOV_TEX_ROT_SCALE(   10),\n    MOV_TEX_4_BOX_TRIS(-1023, -2555),\n    MOV_TEX_4_BOX_TRIS(-1023,  -507),\n    MOV_TEX_4_BOX_TRIS( 1024,  -507),\n    MOV_TEX_4_BOX_TRIS( 1024, -2555),\n    MOV_TEX_ROT(     ROTATE_COUNTER_CLOCKWISE),\n    MOV_TEX_ALPHA(    0x96),\n    MOV_TEX_DEFINE(  TEXTURE_WATER),\n    MOV_TEX_END(),\n};\n\n// 0x0700E31C\nconst struct MovtexQuadCollection thi_movtex_area1_water[] = {\n    {0, thi_movtex_area1_short_side_water_data},\n    {1, thi_movtex_area1_large_side_water_data},\n    {2, thi_movtex_area1_mountain_top_water_data},\n    {-1, NULL},\n};\n"
  },
  {
    "path": "levels/thi/areas/1/trajectory.inc.c",
    "content": "// 0x0700E258 - 0x0700E2BA\nconst Trajectory thi_seg7_trajectory_koopa[] = {\n    TRAJECTORY_POS(0, /*pos*/ -1900,  -511,  2400),\n    TRAJECTORY_POS(1, /*pos*/ -2750,  -511,  3300),\n    TRAJECTORY_POS(2, /*pos*/ -4900,  -511,  1200),\n    TRAJECTORY_POS(3, /*pos*/ -4894,   100, -2146),\n    TRAJECTORY_POS(4, /*pos*/ -5200,   143, -5050),\n    TRAJECTORY_POS(5, /*pos*/ -2800,  -962, -4900),\n    TRAJECTORY_POS(6, /*pos*/   500, -1637, -4900),\n    TRAJECTORY_POS(7, /*pos*/  1500, -2047, -5200),\n    TRAJECTORY_POS(8, /*pos*/  2971, -2046, -5428),\n    TRAJECTORY_POS(9, /*pos*/  5642, -1535, -5442),\n    TRAJECTORY_POS(10, /*pos*/  6371, -1535, -6271),\n    TRAJECTORY_POS(11, /*pos*/  6814, -1535, -6328),\n    TRAJECTORY_END(),\n};\n"
  },
  {
    "path": "levels/thi/areas/2/1/model.inc.c",
    "content": "// 0x07007430 - 0x070074D0\nstatic const Vtx thi_seg7_vertex_07007430[] = {\n    {{{  1690,   -460,    922}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xb4}}},\n    {{{  1690,   -460,    615}, 0, {     0,    606}, {0x00, 0x00, 0x00, 0xb4}}},\n    {{{  1229,   -460,    922}, 0, {   926,      0}, {0x00, 0x00, 0x00, 0xb4}}},\n    {{{  1690,   -153,    615}, 0, {     0,    606}, {0x00, 0x00, 0x00, 0xb4}}},\n    {{{  1229,   -153,    922}, 0, {   926,      0}, {0x00, 0x00, 0x00, 0xb4}}},\n    {{{  1505,   -153,    430}, 0, {   352,    990}, {0x00, 0x00, 0x00, 0xb4}}},\n    {{{  1242,    -68,    497}, 0, {   990,    990}, {0x00, 0x00, 0x00, 0xb4}}},\n    {{{  1198,   -153,    635}, 0, {   990,    564}, {0x00, 0x00, 0x00, 0xb4}}},\n    {{{  1690,   -153,    430}, 0, {     0,    990}, {0x00, 0x00, 0x00, 0xb4}}},\n    {{{  1198,   -153,    922}, 0, {   990,      0}, {0x00, 0x00, 0x00, 0xb4}}},\n};\n\n// 0x070074D0 - 0x07007538\nstatic const Gfx thi_seg7_dl_070074D0[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, grass_0900B000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(thi_seg7_vertex_07007430, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 3,  4,  2, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  3,  8, 0x0,  5,  4,  3, 0x0),\n    gsSP2Triangles( 5,  9,  4, 0x0,  5,  7,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007538 - 0x070075A8\nconst Gfx thi_seg7_dl_07007538[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(thi_seg7_dl_070074D0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/thi/areas/2/collision.inc.c",
    "content": "// 0x0700BD60 - 0x0700D444\nconst Collision thi_seg7_area_2_collision[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x16E),\n    COL_VERTEX(-450, -869, -4085),\n    COL_VERTEX(-450, -869, -4904),\n    COL_VERTEX(-40, -1381, -4494),\n    COL_VERTEX(369, -869, -4904),\n    COL_VERTEX(369, -869, -4085),\n    COL_VERTEX(-450, -767, -4085),\n    COL_VERTEX(-450, -767, -4904),\n    COL_VERTEX(369, -767, -4904),\n    COL_VERTEX(369, -767, -4085),\n    COL_VERTEX(188, -183, 404),\n    COL_VERTEX(154, -183, 307),\n    COL_VERTEX(154, -153, 307),\n    COL_VERTEX(292, -153, 691),\n    COL_VERTEX(92, -153, 307),\n    COL_VERTEX(246, -153, 707),\n    COL_VERTEX(246, -183, 983),\n    COL_VERTEX(-537, 630, 169),\n    COL_VERTEX(-411, 630, 77),\n    COL_VERTEX(691, 630, 169),\n    COL_VERTEX(-767, 246, 307),\n    COL_VERTEX(-411, 630, 94),\n    COL_VERTEX(922, 246, 307),\n    COL_VERTEX(566, 630, 94),\n    COL_VERTEX(566, 630, 77),\n    COL_VERTEX(691, 630, 77),\n    COL_VERTEX(691, 660, 77),\n    COL_VERTEX(-690, 329, 77),\n    COL_VERTEX(1720, -613, -398),\n    COL_VERTEX(1874, -613, -398),\n    COL_VERTEX(1690, -491, -1381),\n    COL_VERTEX(1720, -613, -153),\n    COL_VERTEX(1874, -613, 31),\n    COL_VERTEX(1690, -1996, -1381),\n    COL_VERTEX(1690, -460, -1381),\n    COL_VERTEX(1690, -460, -1996),\n    COL_VERTEX(1690, -613, -153),\n    COL_VERTEX(492, -183, 1137),\n    COL_VERTEX(768, -183, 1137),\n    COL_VERTEX(492, -153, 1137),\n    COL_VERTEX(522, -153, 1106),\n    COL_VERTEX(768, -153, 1106),\n    COL_VERTEX(276, -183, 952),\n    COL_VERTEX(292, -183, 691),\n    COL_VERTEX(276, -214, 952),\n    COL_VERTEX(-690, 660, 77),\n    COL_VERTEX(-383, 660, -536),\n    COL_VERTEX(-383, 660, 77),\n    COL_VERTEX(1690, -460, -1689),\n    COL_VERTEX(1321, -552, -1689),\n    COL_VERTEX(1321, -583, -1566),\n    COL_VERTEX(1690, -460, -1566),\n    COL_VERTEX(891, -613, -1566),\n    COL_VERTEX(1321, -552, -1566),\n    COL_VERTEX(246, -214, 983),\n    COL_VERTEX(-537, 507, -382),\n    COL_VERTEX(-690, 660, -229),\n    COL_VERTEX(-690, 507, -229),\n    COL_VERTEX(-767, 246, -75),\n    COL_VERTEX(-690, 329, -75),\n    COL_VERTEX(256, -153, 307),\n    COL_VERTEX(-767, 154, 307),\n    COL_VERTEX(-1074, 154, 307),\n    COL_VERTEX(-1303, -153, -153),\n    COL_VERTEX(-1381, -153, 307),\n    COL_VERTEX(-1381, -3, -552),\n    COL_VERTEX(-1074, 369, -153),\n    COL_VERTEX(-1381, -153, 1229),\n    COL_VERTEX(-767, -60, 614),\n    COL_VERTEX(-767, 154, 461),\n    COL_VERTEX(-844, 154, -75),\n    COL_VERTEX(-767, -153, 614),\n    COL_VERTEX(-767, -60, 399),\n    COL_VERTEX(-767, 154, -75),\n    COL_VERTEX(-448, -153, 399),\n    COL_VERTEX(-460, -153, 308),\n    COL_VERTEX(-448, -60, 399),\n    COL_VERTEX(-460, -153, 307),\n    COL_VERTEX(-767, 246, -921),\n    COL_VERTEX(-844, 369, -153),\n    COL_VERTEX(-1535, 31, -644),\n    COL_VERTEX(-1689, -91, -153),\n    COL_VERTEX(-1381, 19, -1074),\n    COL_VERTEX(-1381, 28, -736),\n    COL_VERTEX(-1381, 31, -644),\n    COL_VERTEX(-1535, -153, -153),\n    COL_VERTEX(-1228, -1996, -1381),\n    COL_VERTEX(-1538, 86, -1719),\n    COL_VERTEX(-1535, 0, -1381),\n    COL_VERTEX(-1013, -122, -1381),\n    COL_VERTEX(-1381, 0, -1381),\n    COL_VERTEX(-1074, 154, -1381),\n    COL_VERTEX(-1074, 154, -921),\n    COL_VERTEX(-1268, 102, -736),\n    COL_VERTEX(-1381, 215, -736),\n    COL_VERTEX(-1074, 246, -921),\n    COL_VERTEX(-1074, 305, -552),\n    COL_VERTEX(-767, 154, -921),\n    COL_VERTEX(-844, 507, -75),\n    COL_VERTEX(-844, 154, -153),\n    COL_VERTEX(-844, 507, -382),\n    COL_VERTEX(-687, 332, -382),\n    COL_VERTEX(-383, 660, -997),\n    COL_VERTEX(1690, -153, -1382),\n    COL_VERTEX(-306, 1229, -766),\n    COL_VERTEX(538, 660, -997),\n    COL_VERTEX(-1381, -460, 1229),\n    COL_VERTEX(-306, -153, 1536),\n    COL_VERTEX(-1535, -275, 1229),\n    COL_VERTEX(-1381, -460, 2150),\n    COL_VERTEX(1690, -828, 31),\n    COL_VERTEX(1812, -736, -398),\n    COL_VERTEX(1690, -1043, -245),\n    COL_VERTEX(1690, -613, -398),\n    COL_VERTEX(-214, 1167, -244),\n    COL_VERTEX(1905, -849, 1997),\n    COL_VERTEX(1280, -1074, 2150),\n    COL_VERTEX(1905, -849, 2150),\n    COL_VERTEX(2150, -583, 2458),\n    COL_VERTEX(2150, -849, 1997),\n    COL_VERTEX(2058, -849, 2150),\n    COL_VERTEX(-1381, -890, 2458),\n    COL_VERTEX(-1381, -921, 2458),\n    COL_VERTEX(-1381, -890, 2150),\n    COL_VERTEX(-1535, -890, 2458),\n    COL_VERTEX(-1381, -890, 1536),\n    COL_VERTEX(-1535, -890, 1536),\n    COL_VERTEX(-1535, -153, 1229),\n    COL_VERTEX(-1535, -183, -1381),\n    COL_VERTEX(-1538, -1074, -1565),\n    COL_VERTEX(-1381, 215, -552),\n    COL_VERTEX(-1228, -767, -2149),\n    COL_VERTEX(-1228, -767, -1381),\n    COL_VERTEX(-2303, -1074, 1843),\n    COL_VERTEX(-2457, -1074, 2458),\n    COL_VERTEX(-2303, -890, 1843),\n    COL_VERTEX(-2457, -890, 1843),\n    COL_VERTEX(-2149, -890, 1536),\n    COL_VERTEX(-1535, -1074, 1536),\n    COL_VERTEX(1997, -460, -1381),\n    COL_VERTEX(1997, -1996, -1381),\n    COL_VERTEX(1997, -460, -859),\n    COL_VERTEX(2304, -460, -1996),\n    COL_VERTEX(1997, -460, -767),\n    COL_VERTEX(2304, -460, -767),\n    COL_VERTEX(2304, -1996, -1381),\n    COL_VERTEX(2150, -1996, 1075),\n    COL_VERTEX(2150, -767, 1690),\n    COL_VERTEX(2150, -1996, 2458),\n    COL_VERTEX(538, 660, 77),\n    COL_VERTEX(845, 968, -536),\n    COL_VERTEX(691, 968, -872),\n    COL_VERTEX(768, -153, 922),\n    COL_VERTEX(1690, -460, 615),\n    COL_VERTEX(768, -153, 1229),\n    COL_VERTEX(1690, -767, 1459),\n    COL_VERTEX(1690, -460, 1229),\n    COL_VERTEX(768, -1074, 1843),\n    COL_VERTEX(1229, -767, 1459),\n    COL_VERTEX(768, -460, 1229),\n    COL_VERTEX(1690, -767, 1690),\n    COL_VERTEX(1690, -1074, 1690),\n    COL_VERTEX(1997, -1996, 1075),\n    COL_VERTEX(1690, -767, 1229),\n    COL_VERTEX(2150, -767, 1075),\n    COL_VERTEX(1997, -1996, 215),\n    COL_VERTEX(2120, -1996, 31),\n    COL_VERTEX(2243, -1996, 92),\n    COL_VERTEX(2120, -767, 31),\n    COL_VERTEX(1997, -767, 768),\n    COL_VERTEX(2150, -1996, 768),\n    COL_VERTEX(1997, -767, 215),\n    COL_VERTEX(2304, -767, 215),\n    COL_VERTEX(2176, -767, 676),\n    COL_VERTEX(1997, -1996, 768),\n    COL_VERTEX(-1013, -245, -1504),\n    COL_VERTEX(-275, -429, -1627),\n    COL_VERTEX(-1013, -398, -1504),\n    COL_VERTEX(-1013, -122, -1596),\n    COL_VERTEX(-1013, -183, -1689),\n    COL_VERTEX(-275, -1996, -1627),\n    COL_VERTEX(-1013, -1996, -1504),\n    COL_VERTEX(-1020, -1996, -1505),\n    COL_VERTEX(-1013, -30, -1689),\n    COL_VERTEX(-1689, -60, -1689),\n    COL_VERTEX(-1684, 240, -1710),\n    COL_VERTEX(-1689, 61, -1381),\n    COL_VERTEX(-1538, 239, -1873),\n    COL_VERTEX(-1538, -183, -1873),\n    COL_VERTEX(845, 660, 77),\n    COL_VERTEX(1690, -153, 77),\n    COL_VERTEX(-460, -460, 307),\n    COL_VERTEX(0, -460, 307),\n    COL_VERTEX(-1381, -1074, 2458),\n    COL_VERTEX(-1535, -685, 2458),\n    COL_VERTEX(-1535, -153, 2458),\n    COL_VERTEX(584, -613, -1689),\n    COL_VERTEX(891, -736, -1689),\n    COL_VERTEX(276, -736, -1566),\n    COL_VERTEX(276, -613, -1566),\n    COL_VERTEX(-275, -491, -1566),\n    COL_VERTEX(276, -491, -1381),\n    COL_VERTEX(-275, -736, -1566),\n    COL_VERTEX(-282, -767, 1997),\n    COL_VERTEX(-217, -1074, 1885),\n    COL_VERTEX(-217, -767, 1885),\n    COL_VERTEX(-217, -1074, 2109),\n    COL_VERTEX(-88, -1074, 2109),\n    COL_VERTEX(-24, -767, 1997),\n    COL_VERTEX(-88, -1074, 1885),\n    COL_VERTEX(-437, -437, 489),\n    COL_VERTEX(-773, -460, 1403),\n    COL_VERTEX(-512, -460, 489),\n    COL_VERTEX(-773, -1074, 1710),\n    COL_VERTEX(-437, -541, 489),\n    COL_VERTEX(-768, -460, 492),\n    COL_VERTEX(-1535, -275, -153),\n    COL_VERTEX(-1842, -1074, 614),\n    COL_VERTEX(-1535, -767, 614),\n    COL_VERTEX(-1996, -767, 0),\n    COL_VERTEX(-2149, -767, 307),\n    COL_VERTEX(-1996, -1074, 0),\n    COL_VERTEX(1741, -849, 2150),\n    COL_VERTEX(1997, -849, 2304),\n    COL_VERTEX(1997, -849, 2458),\n    COL_VERTEX(1812, -736, 31),\n    COL_VERTEX(1690, -828, -398),\n    COL_VERTEX(-1535, -613, -2149),\n    COL_VERTEX(-1535, -1074, -2149),\n    COL_VERTEX(-1996, -613, -1996),\n    COL_VERTEX(-1996, -613, -1535),\n    COL_VERTEX(-2149, -613, -1381),\n    COL_VERTEX(-2149, -613, -921),\n    COL_VERTEX(-1538, -405, -1565),\n    COL_VERTEX(-1538, -1996, -1566),\n    COL_VERTEX(-1381, -460, -2149),\n    COL_VERTEX(-1535, -1074, -2457),\n    COL_VERTEX(-1381, -306, -2457),\n    COL_VERTEX(230, -183, 307),\n    COL_VERTEX(294, -183, 383),\n    COL_VERTEX(92, -183, 307),\n    COL_VERTEX(246, -183, 707),\n    COL_VERTEX(-537, 630, 77),\n    COL_VERTEX(-537, 660, 169),\n    COL_VERTEX(-537, 660, 77),\n    COL_VERTEX(691, 660, 169),\n    COL_VERTEX(922, 246, 77),\n    COL_VERTEX(-767, -153, 307),\n    COL_VERTEX(1720, -491, -1381),\n    COL_VERTEX(1720, -460, -1381),\n    COL_VERTEX(1966, -613, -245),\n    COL_VERTEX(1690, -153, 615),\n    COL_VERTEX(1690, -153, -1381),\n    COL_VERTEX(1690, -613, 31),\n    COL_VERTEX(1997, -1996, -767),\n    COL_VERTEX(522, -183, 1106),\n    COL_VERTEX(768, -183, 1106),\n    COL_VERTEX(768, -153, 1137),\n    COL_VERTEX(1321, -583, -1689),\n    COL_VERTEX(1690, -491, -1689),\n    COL_VERTEX(891, -644, -1689),\n    COL_VERTEX(891, -613, -1689),\n    COL_VERTEX(891, -644, -1566),\n    COL_VERTEX(1690, -491, -1566),\n    COL_VERTEX(-537, 494, -382),\n    COL_VERTEX(-690, 507, -75),\n    COL_VERTEX(-1381, -60, 307),\n    COL_VERTEX(-1303, 215, -552),\n    COL_VERTEX(-1303, 27, -552),\n    COL_VERTEX(-1074, 154, -153),\n    COL_VERTEX(-767, -153, 399),\n    COL_VERTEX(-1689, -91, 1229),\n    COL_VERTEX(-306, -306, 1536),\n    COL_VERTEX(-460, 0, 307),\n    COL_VERTEX(-844, 332, -382),\n    COL_VERTEX(-1268, 215, -736),\n    COL_VERTEX(-1689, -60, -1381),\n    COL_VERTEX(-767, 154, -1381),\n    COL_VERTEX(-767, 246, -1381),\n    COL_VERTEX(-537, 495, -382),\n    COL_VERTEX(307, 1229, -766),\n    COL_VERTEX(-768, -541, 492),\n    COL_VERTEX(215, 1167, -674),\n    COL_VERTEX(-214, 1167, -674),\n    COL_VERTEX(215, 1167, -244),\n    COL_VERTEX(-1424, -685, 2458),\n    COL_VERTEX(-2457, -890, 2458),\n    COL_VERTEX(-2149, -1074, 1536),\n    COL_VERTEX(-1228, -1996, -2149),\n    COL_VERTEX(-1381, -1996, -2149),\n    COL_VERTEX(-1381, -767, -2149),\n    COL_VERTEX(-2457, -1074, 1843),\n    COL_VERTEX(2304, -460, -859),\n    COL_VERTEX(2304, -1996, -767),\n    COL_VERTEX(2304, -1996, -1996),\n    COL_VERTEX(1690, -1996, -1996),\n    COL_VERTEX(1920, -767, 1229),\n    COL_VERTEX(1997, -767, 1075),\n    COL_VERTEX(1997, -1074, 2458),\n    COL_VERTEX(691, 968, -536),\n    COL_VERTEX(845, 968, -872),\n    COL_VERTEX(1997, -1074, 2304),\n    COL_VERTEX(1690, -153, 307),\n    COL_VERTEX(1920, -1996, 1229),\n    COL_VERTEX(1690, -1996, 1229),\n    COL_VERTEX(2243, -767, 92),\n    COL_VERTEX(1997, -767, 676),\n    COL_VERTEX(2150, -767, 768),\n    COL_VERTEX(2304, -1996, 215),\n    COL_VERTEX(-1013, -245, -1381),\n    COL_VERTEX(-275, -429, -1381),\n    COL_VERTEX(-275, -1996, -1381),\n    COL_VERTEX(-306, 1229, -152),\n    COL_VERTEX(307, 1229, -152),\n    COL_VERTEX(-1381, -1074, 2396),\n    COL_VERTEX(584, -736, -1689),\n    COL_VERTEX(891, -613, -1381),\n    COL_VERTEX(891, -736, -1381),\n    COL_VERTEX(276, -613, -1381),\n    COL_VERTEX(276, -491, -1566),\n    COL_VERTEX(-275, -491, -1381),\n    COL_VERTEX(-88, -767, 1885),\n    COL_VERTEX(-88, -767, 2109),\n    COL_VERTEX(-217, -767, 2109),\n    COL_VERTEX(-282, -1074, 1997),\n    COL_VERTEX(-24, -1074, 1997),\n    COL_VERTEX(-1842, -767, 614),\n    COL_VERTEX(-2149, -1074, 307),\n    COL_VERTEX(-1535, -1074, 614),\n    COL_VERTEX(-1535, -767, 0),\n    COL_VERTEX(-1535, -1074, 0),\n    COL_VERTEX(1690, -1074, 1459),\n    COL_VERTEX(-1535, -613, -1381),\n    COL_VERTEX(-1535, -460, -2457),\n    COL_VERTEX(-1996, -1074, -1996),\n    COL_VERTEX(-1535, -613, -1842),\n    COL_VERTEX(-1996, -1074, -1535),\n    COL_VERTEX(-1535, -613, -921),\n    COL_VERTEX(-2149, -1074, -1381),\n    COL_VERTEX(-2149, -1074, -921),\n    COL_VERTEX(-1535, -1074, -921),\n    COL_VERTEX(-1538, -1074, -1566),\n    COL_VERTEX(-1381, -1074, -2457),\n    COL_VERTEX(-1535, -767, -1381),\n    COL_VERTEX(-1535, -767, -1842),\n    COL_VERTEX(-1074, -1074, 2304),\n    COL_VERTEX(691, -183, 860),\n    COL_VERTEX(-1535, -3788, -2457),\n    COL_VERTEX(2458, -3788, -2457),\n    COL_VERTEX(2458, -3788, -8191),\n    COL_VERTEX(-1535, -3788, -8191),\n    COL_VERTEX(-2457, -3788, -2457),\n    COL_VERTEX(2458, -3788, 2458),\n    COL_VERTEX(-2457, -3788, 2458),\n    COL_VERTEX(2335, -3788, 61),\n    COL_VERTEX(2335, -3788, -859),\n    COL_VERTEX(1690, -3788, -859),\n    COL_VERTEX(1690, -3788, 61),\n    COL_VERTEX(1997, -921, 2458),\n    COL_VERTEX(-1535, -921, -2457),\n    COL_VERTEX(-2457, -921, -2457),\n    COL_VERTEX(-2457, -1074, -2457),\n    COL_VERTEX(-2457, -921, 1843),\n    COL_VERTEX(-2457, -685, 2458),\n    COL_VERTEX(-2457, -685, 1843),\n    COL_VERTEX(-1381, -1996, -2457),\n    COL_VERTEX(-1534, -1074, 2458),\n    COL_TRI_INIT(SURFACE_DEFAULT, 516),\n    COL_TRI(0, 1, 2),\n    COL_TRI(1, 3, 2),\n    COL_TRI(3, 4, 2),\n    COL_TRI(4, 0, 2),\n    COL_TRI(4, 5, 0),\n    COL_TRI(0, 5, 6),\n    COL_TRI(0, 6, 1),\n    COL_TRI(1, 6, 7),\n    COL_TRI(1, 7, 3),\n    COL_TRI(4, 8, 5),\n    COL_TRI(3, 8, 4),\n    COL_TRI(3, 7, 8),\n    COL_TRI(13, 14, 12),\n    COL_TRI(9, 237, 238),\n    COL_TRI(9, 10, 237),\n    COL_TRI(10, 9, 239),\n    COL_TRI(11, 42, 9),\n    COL_TRI(11, 12, 42),\n    COL_TRI(12, 43, 42),\n    COL_TRI(12, 41, 43),\n    COL_TRI(13, 12, 11),\n    COL_TRI(24, 244, 18),\n    COL_TRI(16, 241, 17),\n    COL_TRI(17, 20, 16),\n    COL_TRI(16, 22, 18),\n    COL_TRI(16, 20, 22),\n    COL_TRI(16, 242, 243),\n    COL_TRI(18, 242, 16),\n    COL_TRI(16, 243, 241),\n    COL_TRI(19, 20, 26),\n    COL_TRI(20, 17, 26),\n    COL_TRI(19, 21, 22),\n    COL_TRI(21, 23, 22),\n    COL_TRI(22, 23, 18),\n    COL_TRI(23, 24, 18),\n    COL_TRI(18, 244, 242),\n    COL_TRI(21, 245, 23),\n    COL_TRI(24, 23, 245),\n    COL_TRI(25, 24, 188),\n    COL_TRI(24, 25, 244),\n    COL_TRI(26, 17, 241),\n    COL_TRI(27, 247, 248),\n    COL_TRI(27, 248, 30),\n    COL_TRI(28, 27, 30),\n    COL_TRI(33, 32, 139),\n    COL_TRI(29, 247, 27),\n    COL_TRI(30, 248, 33),\n    COL_TRI(31, 30, 35),\n    COL_TRI(30, 249, 28),\n    COL_TRI(31, 249, 30),\n    COL_TRI(30, 33, 35),\n    COL_TRI(32, 33, 155),\n    COL_TRI(33, 139, 138),\n    COL_TRI(38, 53, 36),\n    COL_TRI(35, 252, 31),\n    COL_TRI(29, 27, 112),\n    COL_TRI(36, 43, 254),\n    COL_TRI(36, 53, 43),\n    COL_TRI(37, 36, 254),\n    COL_TRI(37, 38, 36),\n    COL_TRI(37, 254, 255),\n    COL_TRI(37, 256, 38),\n    COL_TRI(39, 255, 254),\n    COL_TRI(39, 40, 255),\n    COL_TRI(38, 15, 53),\n    COL_TRI(40, 38, 256),\n    COL_TRI(40, 39, 38),\n    COL_TRI(39, 15, 38),\n    COL_TRI(14, 15, 12),\n    COL_TRI(15, 41, 12),\n    COL_TRI(39, 41, 15),\n    COL_TRI(41, 39, 254),\n    COL_TRI(41, 254, 43),\n    COL_TRI(42, 43, 240),\n    COL_TRI(43, 53, 240),\n    COL_TRI(9, 240, 239),\n    COL_TRI(9, 42, 240),\n    COL_TRI(44, 241, 243),\n    COL_TRI(45, 44, 243),\n    COL_TRI(46, 45, 243),\n    COL_TRI(47, 257, 48),\n    COL_TRI(47, 258, 257),\n    COL_TRI(48, 257, 259),\n    COL_TRI(48, 259, 260),\n    COL_TRI(49, 261, 259),\n    COL_TRI(49, 259, 257),\n    COL_TRI(48, 260, 51),\n    COL_TRI(48, 51, 52),\n    COL_TRI(50, 48, 52),\n    COL_TRI(51, 49, 52),\n    COL_TRI(52, 262, 50),\n    COL_TRI(52, 49, 262),\n    COL_TRI(49, 258, 262),\n    COL_TRI(49, 257, 258),\n    COL_TRI(51, 261, 49),\n    COL_TRI(50, 47, 48),\n    COL_TRI(53, 14, 240),\n    COL_TRI(53, 15, 14),\n    COL_TRI(14, 239, 240),\n    COL_TRI(14, 13, 239),\n    COL_TRI(45, 55, 44),\n    COL_TRI(54, 45, 263),\n    COL_TRI(45, 54, 56),\n    COL_TRI(45, 56, 55),\n    COL_TRI(55, 56, 44),\n    COL_TRI(44, 26, 241),\n    COL_TRI(56, 264, 44),\n    COL_TRI(26, 44, 264),\n    COL_TRI(57, 19, 26),\n    COL_TRI(58, 57, 26),\n    COL_TRI(60, 19, 57),\n    COL_TRI(19, 22, 20),\n    COL_TRI(19, 246, 76),\n    COL_TRI(59, 21, 19),\n    COL_TRI(19, 13, 11),\n    COL_TRI(19, 11, 59),\n    COL_TRI(19, 76, 13),\n    COL_TRI(61, 62, 265),\n    COL_TRI(62, 63, 265),\n    COL_TRI(63, 62, 84),\n    COL_TRI(62, 266, 267),\n    COL_TRI(62, 65, 266),\n    COL_TRI(64, 62, 267),\n    COL_TRI(62, 64, 84),\n    COL_TRI(65, 62, 268),\n    COL_TRI(61, 268, 62),\n    COL_TRI(63, 70, 67),\n    COL_TRI(63, 67, 265),\n    COL_TRI(57, 69, 72),\n    COL_TRI(67, 61, 265),\n    COL_TRI(68, 60, 61),\n    COL_TRI(67, 68, 61),\n    COL_TRI(69, 61, 60),\n    COL_TRI(69, 268, 61),\n    COL_TRI(70, 71, 67),\n    COL_TRI(71, 68, 67),\n    COL_TRI(71, 60, 68),\n    COL_TRI(60, 71, 75),\n    COL_TRI(60, 75, 272),\n    COL_TRI(60, 57, 72),\n    COL_TRI(72, 69, 60),\n    COL_TRI(76, 190, 191),\n    COL_TRI(70, 269, 71),\n    COL_TRI(73, 71, 269),\n    COL_TRI(73, 75, 71),\n    COL_TRI(74, 272, 75),\n    COL_TRI(75, 73, 76),\n    COL_TRI(76, 209, 190),\n    COL_TRI(76, 73, 209),\n    COL_TRI(13, 76, 239),\n    COL_TRI(65, 95, 266),\n    COL_TRI(77, 94, 65),\n    COL_TRI(78, 65, 268),\n    COL_TRI(77, 65, 273),\n    COL_TRI(65, 78, 273),\n    COL_TRI(64, 267, 129),\n    COL_TRI(64, 83, 79),\n    COL_TRI(64, 79, 84),\n    COL_TRI(87, 177, 86),\n    COL_TRI(79, 87, 185),\n    COL_TRI(80, 84, 79),\n    COL_TRI(80, 79, 185),\n    COL_TRI(81, 87, 79),\n    COL_TRI(82, 81, 79),\n    COL_TRI(83, 82, 79),\n    COL_TRI(84, 270, 126),\n    COL_TRI(84, 80, 270),\n    COL_TRI(63, 84, 126),\n    COL_TRI(81, 89, 87),\n    COL_TRI(85, 87, 89),\n    COL_TRI(86, 185, 87),\n    COL_TRI(91, 90, 81),\n    COL_TRI(89, 90, 85),\n    COL_TRI(90, 89, 81),\n    COL_TRI(81, 82, 92),\n    COL_TRI(91, 81, 92),\n    COL_TRI(92, 274, 94),\n    COL_TRI(93, 92, 82),\n    COL_TRI(93, 274, 92),\n    COL_TRI(94, 91, 92),\n    COL_TRI(96, 90, 91),\n    COL_TRI(95, 94, 274),\n    COL_TRI(94, 96, 91),\n    COL_TRI(94, 77, 96),\n    COL_TRI(95, 274, 266),\n    COL_TRI(90, 276, 85),\n    COL_TRI(96, 276, 90),\n    COL_TRI(99, 78, 97),\n    COL_TRI(97, 69, 57),\n    COL_TRI(98, 268, 69),\n    COL_TRI(78, 69, 97),\n    COL_TRI(78, 268, 98),\n    COL_TRI(69, 78, 98),\n    COL_TRI(77, 273, 100),\n    COL_TRI(99, 273, 78),\n    COL_TRI(77, 276, 96),\n    COL_TRI(54, 99, 56),\n    COL_TRI(77, 277, 276),\n    COL_TRI(56, 99, 97),\n    COL_TRI(56, 97, 264),\n    COL_TRI(97, 57, 58),\n    COL_TRI(97, 58, 264),\n    COL_TRI(100, 99, 263),\n    COL_TRI(100, 273, 99),\n    COL_TRI(99, 54, 263),\n    COL_TRI(103, 104, 101),\n    COL_TRI(77, 100, 278),\n    COL_TRI(101, 277, 77),\n    COL_TRI(101, 77, 278),\n    COL_TRI(101, 278, 45),\n    COL_TRI(26, 264, 58),\n    COL_TRI(102, 277, 101),\n    COL_TRI(103, 101, 45),\n    COL_TRI(104, 102, 101),\n    COL_TRI(66, 63, 126),\n    COL_TRI(66, 271, 106),\n    COL_TRI(66, 210, 271),\n    COL_TRI(66, 105, 210),\n    COL_TRI(105, 66, 126),\n    COL_TRI(66, 70, 63),\n    COL_TRI(106, 70, 66),\n    COL_TRI(70, 73, 269),\n    COL_TRI(106, 73, 70),\n    COL_TRI(73, 106, 271),\n    COL_TRI(107, 126, 270),\n    COL_TRI(108, 105, 126),\n    COL_TRI(109, 31, 252),\n    COL_TRI(109, 224, 31),\n    COL_TRI(31, 224, 249),\n    COL_TRI(110, 28, 249),\n    COL_TRI(111, 110, 249),\n    COL_TRI(112, 28, 110),\n    COL_TRI(113, 281, 282),\n    COL_TRI(113, 283, 281),\n    COL_TRI(116, 221, 222),\n    COL_TRI(114, 116, 118),\n    COL_TRI(114, 146, 159),\n    COL_TRI(115, 221, 116),\n    COL_TRI(116, 119, 118),\n    COL_TRI(117, 119, 222),\n    COL_TRI(118, 119, 117),\n    COL_TRI(119, 116, 222),\n    COL_TRI(126, 125, 123),\n    COL_TRI(108, 126, 194),\n    COL_TRI(120, 108, 284),\n    COL_TRI(108, 194, 284),\n    COL_TRI(105, 108, 122),\n    COL_TRI(108, 120, 122),\n    COL_TRI(121, 120, 123),\n    COL_TRI(122, 120, 121),\n    COL_TRI(123, 120, 284),\n    COL_TRI(124, 105, 122),\n    COL_TRI(125, 126, 215),\n    COL_TRI(129, 93, 83),\n    COL_TRI(126, 123, 193),\n    COL_TRI(126, 193, 194),\n    COL_TRI(127, 128, 125),\n    COL_TRI(125, 215, 127),\n    COL_TRI(128, 137, 125),\n    COL_TRI(93, 82, 83),\n    COL_TRI(131, 85, 287),\n    COL_TRI(64, 129, 83),\n    COL_TRI(129, 274, 93),\n    COL_TRI(129, 266, 274),\n    COL_TRI(130, 287, 288),\n    COL_TRI(130, 288, 289),\n    COL_TRI(131, 287, 130),\n    COL_TRI(132, 135, 134),\n    COL_TRI(132, 290, 135),\n    COL_TRI(133, 135, 290),\n    COL_TRI(133, 285, 135),\n    COL_TRI(134, 135, 123),\n    COL_TRI(135, 285, 123),\n    COL_TRI(123, 285, 133),\n    COL_TRI(136, 132, 134),\n    COL_TRI(136, 134, 123),\n    COL_TRI(137, 136, 125),\n    COL_TRI(137, 286, 136),\n    COL_TRI(136, 286, 132),\n    COL_TRI(144, 141, 291),\n    COL_TRI(125, 136, 123),\n    COL_TRI(138, 139, 140),\n    COL_TRI(139, 142, 140),\n    COL_TRI(140, 142, 143),\n    COL_TRI(141, 138, 140),\n    COL_TRI(141, 140, 291),\n    COL_TRI(140, 143, 291),\n    COL_TRI(139, 253, 142),\n    COL_TRI(142, 253, 292),\n    COL_TRI(142, 292, 143),\n    COL_TRI(143, 144, 291),\n    COL_TRI(143, 292, 144),\n    COL_TRI(144, 293, 141),\n    COL_TRI(141, 294, 34),\n    COL_TRI(141, 293, 294),\n    COL_TRI(33, 141, 34),\n    COL_TRI(33, 138, 141),\n    COL_TRI(145, 163, 146),\n    COL_TRI(146, 118, 145),\n    COL_TRI(146, 154, 159),\n    COL_TRI(146, 114, 118),\n    COL_TRI(102, 299, 149),\n    COL_TRI(118, 147, 145),\n    COL_TRI(118, 117, 147),\n    COL_TRI(147, 117, 297),\n    COL_TRI(117, 223, 297),\n    COL_TRI(117, 222, 223),\n    COL_TRI(25, 188, 149),\n    COL_TRI(148, 149, 298),\n    COL_TRI(148, 25, 149),\n    COL_TRI(153, 301, 151),\n    COL_TRI(149, 299, 150),\n    COL_TRI(150, 104, 279),\n    COL_TRI(104, 150, 299),\n    COL_TRI(149, 150, 298),\n    COL_TRI(151, 158, 153),\n    COL_TRI(152, 153, 158),\n    COL_TRI(152, 250, 153),\n    COL_TRI(153, 250, 301),\n    COL_TRI(33, 250, 152),\n    COL_TRI(33, 251, 250),\n    COL_TRI(154, 155, 158),\n    COL_TRI(154, 158, 157),\n    COL_TRI(156, 158, 191),\n    COL_TRI(157, 158, 156),\n    COL_TRI(158, 155, 152),\n    COL_TRI(155, 162, 32),\n    COL_TRI(155, 154, 162),\n    COL_TRI(34, 32, 33),\n    COL_TRI(34, 294, 32),\n    COL_TRI(159, 154, 160),\n    COL_TRI(114, 159, 160),\n    COL_TRI(154, 295, 162),\n    COL_TRI(160, 154, 157),\n    COL_TRI(154, 146, 295),\n    COL_TRI(146, 163, 295),\n    COL_TRI(161, 295, 296),\n    COL_TRI(161, 302, 295),\n    COL_TRI(162, 295, 302),\n    COL_TRI(163, 296, 295),\n    COL_TRI(162, 302, 303),\n    COL_TRI(162, 303, 32),\n    COL_TRI(161, 296, 163),\n    COL_TRI(161, 163, 145),\n    COL_TRI(164, 170, 167),\n    COL_TRI(165, 164, 167),\n    COL_TRI(166, 165, 167),\n    COL_TRI(166, 167, 304),\n    COL_TRI(167, 170, 305),\n    COL_TRI(167, 305, 172),\n    COL_TRI(168, 172, 305),\n    COL_TRI(169, 172, 306),\n    COL_TRI(167, 172, 171),\n    COL_TRI(168, 306, 172),\n    COL_TRI(170, 173, 305),\n    COL_TRI(170, 164, 173),\n    COL_TRI(171, 307, 166),\n    COL_TRI(171, 166, 304),\n    COL_TRI(172, 307, 171),\n    COL_TRI(167, 171, 304),\n    COL_TRI(168, 173, 169),\n    COL_TRI(168, 169, 306),\n    COL_TRI(173, 168, 305),\n    COL_TRI(172, 169, 307),\n    COL_TRI(181, 175, 179),\n    COL_TRI(174, 308, 309),\n    COL_TRI(174, 309, 175),\n    COL_TRI(175, 176, 174),\n    COL_TRI(176, 178, 174),\n    COL_TRI(174, 88, 308),\n    COL_TRI(177, 88, 174),\n    COL_TRI(178, 177, 174),\n    COL_TRI(179, 175, 309),\n    COL_TRI(179, 309, 310),\n    COL_TRI(180, 176, 175),\n    COL_TRI(185, 275, 215),\n    COL_TRI(88, 177, 87),\n    COL_TRI(86, 184, 185),\n    COL_TRI(177, 182, 86),\n    COL_TRI(182, 186, 86),\n    COL_TRI(86, 186, 184),\n    COL_TRI(183, 275, 185),\n    COL_TRI(184, 183, 185),\n    COL_TRI(185, 215, 80),\n    COL_TRI(182, 178, 187),\n    COL_TRI(182, 187, 186),\n    COL_TRI(186, 187, 184),\n    COL_TRI(178, 182, 177),\n    COL_TRI(187, 183, 184),\n    COL_TRI(80, 215, 107),\n    COL_TRI(80, 107, 270),\n    COL_TRI(46, 103, 45),\n    COL_TRI(46, 311, 103),\n    COL_TRI(148, 312, 311),\n    COL_TRI(148, 311, 46),\n    COL_TRI(103, 279, 104),\n    COL_TRI(188, 24, 245),\n    COL_TRI(189, 188, 245),\n    COL_TRI(149, 188, 189),\n    COL_TRI(190, 213, 191),\n    COL_TRI(156, 191, 213),\n    COL_TRI(191, 237, 10),\n    COL_TRI(191, 10, 239),\n    COL_TRI(76, 191, 239),\n    COL_TRI(133, 192, 123),\n    COL_TRI(192, 121, 123),\n    COL_TRI(193, 123, 284),\n    COL_TRI(192, 122, 121),\n    COL_TRI(192, 313, 122),\n    COL_TRI(194, 193, 284),\n    COL_TRI(195, 260, 196),\n    COL_TRI(195, 196, 314),\n    COL_TRI(196, 315, 316),\n    COL_TRI(196, 260, 315),\n    COL_TRI(195, 315, 260),\n    COL_TRI(200, 199, 319),\n    COL_TRI(195, 317, 315),\n    COL_TRI(197, 195, 314),\n    COL_TRI(197, 198, 195),\n    COL_TRI(195, 198, 317),\n    COL_TRI(198, 200, 317),\n    COL_TRI(198, 318, 200),\n    COL_TRI(199, 318, 198),\n    COL_TRI(200, 318, 199),\n    COL_TRI(205, 202, 323),\n    COL_TRI(201, 199, 198),\n    COL_TRI(201, 198, 197),\n    COL_TRI(202, 204, 203),\n    COL_TRI(203, 204, 320),\n    COL_TRI(204, 207, 320),\n    COL_TRI(204, 321, 207),\n    COL_TRI(204, 322, 321),\n    COL_TRI(204, 202, 322),\n    COL_TRI(202, 203, 323),\n    COL_TRI(205, 322, 202),\n    COL_TRI(209, 211, 213),\n    COL_TRI(206, 322, 205),\n    COL_TRI(206, 321, 322),\n    COL_TRI(207, 321, 206),\n    COL_TRI(208, 207, 324),\n    COL_TRI(207, 206, 324),\n    COL_TRI(208, 320, 207),\n    COL_TRI(203, 320, 208),\n    COL_TRI(73, 271, 209),\n    COL_TRI(210, 211, 209),\n    COL_TRI(190, 209, 213),\n    COL_TRI(211, 280, 213),\n    COL_TRI(212, 213, 280),\n    COL_TRI(213, 212, 156),\n    COL_TRI(210, 209, 271),\n    COL_TRI(210, 280, 214),\n    COL_TRI(210, 212, 280),\n    COL_TRI(160, 157, 156),\n    COL_TRI(210, 214, 211),\n    COL_TRI(212, 210, 124),\n    COL_TRI(214, 280, 211),\n    COL_TRI(215, 275, 127),\n    COL_TRI(216, 325, 219),\n    COL_TRI(216, 219, 326),\n    COL_TRI(217, 216, 327),\n    COL_TRI(217, 325, 216),\n    COL_TRI(218, 219, 325),\n    COL_TRI(218, 325, 217),\n    COL_TRI(219, 218, 220),\n    COL_TRI(219, 220, 326),\n    COL_TRI(220, 218, 328),\n    COL_TRI(218, 217, 328),\n    COL_TRI(220, 328, 329),\n    COL_TRI(154, 330, 160),\n    COL_TRI(223, 300, 297),\n    COL_TRI(149, 189, 102),\n    COL_TRI(102, 104, 299),\n    COL_TRI(148, 298, 312),\n    COL_TRI(221, 115, 300),\n    COL_TRI(222, 221, 300),\n    COL_TRI(223, 222, 300),\n    COL_TRI(226, 228, 229),\n    COL_TRI(210, 105, 124),\n    COL_TRI(224, 111, 249),\n    COL_TRI(111, 224, 109),\n    COL_TRI(112, 110, 225),\n    COL_TRI(225, 110, 111),\n    COL_TRI(226, 229, 331),\n    COL_TRI(187, 232, 183),\n    COL_TRI(226, 333, 228),\n    COL_TRI(228, 335, 229),\n    COL_TRI(228, 333, 335),\n    COL_TRI(229, 336, 331),\n    COL_TRI(229, 231, 336),\n    COL_TRI(229, 230, 231),\n    COL_TRI(229, 335, 337),\n    COL_TRI(229, 337, 230),\n    COL_TRI(230, 338, 231),\n    COL_TRI(230, 337, 338),\n    COL_TRI(231, 339, 336),\n    COL_TRI(231, 338, 339),\n    COL_TRI(226, 334, 234),\n    COL_TRI(232, 275, 183),\n    COL_TRI(232, 127, 275),\n    COL_TRI(127, 232, 128),\n    COL_TRI(128, 232, 176),\n    COL_TRI(176, 232, 178),\n    COL_TRI(232, 187, 178),\n    COL_TRI(176, 180, 233),\n    COL_TRI(233, 340, 176),\n    COL_TRI(236, 341, 235),\n    COL_TRI(227, 226, 332),\n    COL_TRI(226, 227, 333),\n    COL_TRI(234, 236, 332),\n    COL_TRI(226, 234, 332),\n    COL_TRI(227, 332, 235),\n    COL_TRI(235, 332, 236),\n    COL_TRI(85, 276, 33),\n    COL_TRI(276, 102, 33),\n    COL_TRI(276, 277, 102),\n    COL_TRI(85, 33, 32),\n    COL_TRI_INIT(SURFACE_DEATH_PLANE, 4),\n    COL_TRI(346, 347, 348),\n    COL_TRI(346, 348, 349),\n    COL_TRI(350, 351, 347),\n    COL_TRI(350, 352, 351),\n    COL_TRI_INIT(SURFACE_WALL_MISC, 16),\n    COL_TRI(192, 121, 357),\n    COL_TRI(192, 357, 297),\n    COL_TRI(235, 358, 359),\n    COL_TRI(235, 359, 360),\n    COL_TRI(360, 359, 361),\n    COL_TRI(360, 361, 290),\n    COL_TRI(135, 362, 285),\n    COL_TRI(135, 363, 362),\n    COL_TRI(362, 123, 285),\n    COL_TRI(362, 193, 123),\n    COL_TRI(331, 342, 343),\n    COL_TRI(331, 343, 334),\n    COL_TRI(234, 343, 289),\n    COL_TRI(234, 334, 343),\n    COL_TRI(234, 288, 236),\n    COL_TRI(364, 236, 288),\n    COL_TRI_INIT(SURFACE_ICE, 18),\n    COL_TRI(344, 313, 192),\n    COL_TRI(192, 297, 206),\n    COL_TRI(192, 206, 205),\n    COL_TRI(344, 192, 205),\n    COL_TRI(297, 300, 115),\n    COL_TRI(297, 115, 206),\n    COL_TRI(324, 206, 115),\n    COL_TRI(205, 323, 212),\n    COL_TRI(212, 344, 205),\n    COL_TRI(212, 323, 203),\n    COL_TRI(212, 208, 156),\n    COL_TRI(212, 203, 208),\n    COL_TRI(208, 115, 156),\n    COL_TRI(208, 324, 115),\n    COL_TRI(156, 115, 160),\n    COL_TRI(235, 360, 133),\n    COL_TRI(133, 365, 128),\n    COL_TRI(133, 128, 235),\n    COL_TRI_INIT(SURFACE_HARD_VERY_SLIPPERY, 12),\n    COL_TRI(191, 158, 345),\n    COL_TRI(9, 238, 59),\n    COL_TRI(11, 9, 59),\n    COL_TRI(151, 21, 59),\n    COL_TRI(345, 151, 238),\n    COL_TRI(191, 345, 238),\n    COL_TRI(158, 151, 345),\n    COL_TRI(151, 59, 238),\n    COL_TRI(21, 151, 301),\n    COL_TRI(301, 245, 21),\n    COL_TRI(191, 238, 237),\n    COL_TRI(301, 189, 245),\n    COL_TRI_INIT(SURFACE_HARD_NOT_SLIPPERY, 20),\n    COL_TRI(212, 124, 122),\n    COL_TRI(6, 8, 7),\n    COL_TRI(6, 5, 8),\n    COL_TRI(289, 131, 130),\n    COL_TRI(289, 342, 131),\n    COL_TRI(289, 343, 342),\n    COL_TRI(344, 212, 122),\n    COL_TRI(311, 282, 103),\n    COL_TRI(122, 313, 344),\n    COL_TRI(298, 279, 312),\n    COL_TRI(298, 150, 279),\n    COL_TRI(282, 281, 279),\n    COL_TRI(312, 279, 281),\n    COL_TRI(282, 279, 103),\n    COL_TRI(312, 283, 113),\n    COL_TRI(312, 113, 311),\n    COL_TRI(312, 281, 283),\n    COL_TRI(311, 113, 282),\n    COL_TRI(160, 115, 114),\n    COL_TRI(115, 116, 114),\n    COL_TRI_INIT(SURFACE_VERTICAL_WIND, 2),\n    COL_TRI(353, 354, 355),\n    COL_TRI(353, 355, 356),\n    COL_TRI_INIT(SURFACE_CAMERA_8_DIR, 4),\n    COL_TRI(243, 242, 46),\n    COL_TRI(242, 148, 46),\n    COL_TRI(242, 244, 148),\n    COL_TRI(244, 25, 148),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(3),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_null_start,   /*pos*/ -2211,  -890,  2212, /*yaw*/ 106), // unused, probably an early way to set initial position\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/   -40,  -767, -4494, /*yaw*/   0),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree,  /*pos*/  1444,  -153,   676),\n    COL_WATER_BOX_INIT(3),\n    COL_WATER_BOX(0, -2457, -2457, -1535, 1874, -921),\n    COL_WATER_BOX(1, -1381, 1352, 2089, 2458, -921),\n    COL_WATER_BOX(2, -306, -766, 307, -152, 1204),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/thi/areas/2/geo.inc.c",
    "content": "// SHARE_PATH: [level]/areas/1/1/, [level]/areas/1/2/, [level]/areas/1/3/, [level]/areas/1/4/\n\n// 0x0E0006D4\nconst GeoLayout thi_geo_0006D4[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND(BACKGROUND_OCEAN_SKY, geo_skybox_main),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 12800, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(1, 0, 2000, 6000, 0, 0, 0, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_SCALE(0x00, 19660),\n                    GEO_OPEN_NODE(),\n                        GEO_DISPLAY_LIST(LAYER_OPAQUE, thi_seg7_dl_07005260),\n                        GEO_DISPLAY_LIST(LAYER_OPAQUE, thi_seg7_dl_07006968),\n                        GEO_DISPLAY_LIST(LAYER_ALPHA, thi_seg7_dl_07007008),\n                        GEO_DISPLAY_LIST(LAYER_TRANSPARENT, thi_seg7_dl_070072E8),\n                    GEO_CLOSE_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_TRANSPARENT_DECAL, thi_seg7_dl_07007538),\n                    GEO_ASM(   0, geo_movtex_pause_control),\n                    GEO_ASM(0x1302, geo_movtex_draw_water_regions),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(   0, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/thi/areas/2/macro.inc.c",
    "content": "// 0x0700DEE4 - 0x0700E18E\nconst MacroObject thi_seg7_area_2_macro_objs[] = {\n    MACRO_OBJECT(/*preset*/ macro_bobomb_buddy_opens_cannon_1, /*yaw*/   0, /*pos*/  1902,  -767,  1318),\n    MACRO_OBJECT(/*preset*/ macro_floor_switch_hidden_objects, /*yaw*/   0, /*pos*/ -1380,  -766, -1770),\n    MACRO_OBJECT(/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/ -1140,  -970, -1920),\n    MACRO_OBJECT(/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/ -1140,  -970, -1720),\n    MACRO_OBJECT(/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/  -940,  -970, -1920),\n    MACRO_OBJECT(/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/  -940,  -970, -1720),\n    MACRO_OBJECT(/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/  -340,  -970, -2120),\n    MACRO_OBJECT(/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/  -340,  -970, -1920),\n    MACRO_OBJECT(/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/  -540,  -970, -1920),\n    MACRO_OBJECT(/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/  -740,  -970, -1920),\n    MACRO_OBJECT(/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/  -540,  -970, -1720),\n    MACRO_OBJECT(/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/  -140,  -970, -2120),\n    MACRO_OBJECT(/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/    40,  -970, -2520),\n    MACRO_OBJECT(/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/  -740,  -970, -1720),\n    MACRO_OBJECT(/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/  -140,  -970, -2320),\n    MACRO_OBJECT(/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/    40,  -970, -2320),\n    MACRO_OBJECT(/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/    40,  -970, -3120),\n    MACRO_OBJECT(/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/  -140,  -970, -2720),\n    MACRO_OBJECT(/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/  -140,  -970, -3320),\n    MACRO_OBJECT(/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/    40,  -970, -3320),\n    MACRO_OBJECT(/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/  -140,  -970, -2520),\n    MACRO_OBJECT(/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/    40,  -970, -2720),\n    MACRO_OBJECT(/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/  -140,  -970, -3120),\n    MACRO_OBJECT(/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/    40,  -970, -2920),\n    MACRO_OBJECT(/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/  -140,  -970, -2920),\n    MACRO_OBJECT(/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/   -40,  -970, -3720),\n    MACRO_OBJECT(/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/    40,  -970, -3520),\n    MACRO_OBJECT(/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/  -140,  -970, -3520),\n    MACRO_OBJECT(/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/  -140,  -970, -1920),\n    MACRO_OBJECT(/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/    40,  -970, -2120),\n    MACRO_OBJECT(/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/  -340,  -970, -1720),\n    MACRO_OBJECT(/*preset*/ macro_fire_piranha_plant_1,        /*yaw*/   0, /*pos*/ -1837,  -613, -1214),\n    MACRO_OBJECT(/*preset*/ macro_coin_line_horizontal,        /*yaw*/  90, /*pos*/    29,   666,   148),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,               /*yaw*/   0, /*pos*/   266,  -162,   829),\n    MACRO_OBJECT(/*preset*/ macro_tiny_goomba,                 /*yaw*/   0, /*pos*/  1881,  -778,  1614),\n    MACRO_OBJECT(/*preset*/ macro_tiny_goomba,                 /*yaw*/   0, /*pos*/  1822,  -460, -1511),\n    MACRO_OBJECT(/*preset*/ macro_tiny_goomba,                 /*yaw*/   0, /*pos*/  2148,  -460,  -918),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,               /*yaw*/   0, /*pos*/  -133,  -491, -1481),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,               /*yaw*/   0, /*pos*/ -1466,   -70,  -814),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,               /*yaw*/   0, /*pos*/ -1466,  -107,  -518),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,               /*yaw*/   0, /*pos*/ -1466,  -151,  -162),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,               /*yaw*/   0, /*pos*/   133,  -491, -1496),\n    MACRO_OBJECT(/*preset*/ macro_box_1up,                     /*yaw*/   0, /*pos*/ -1866,  -400,   311),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,               /*yaw*/   0, /*pos*/  -380,  -480,   370),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,               /*yaw*/   0, /*pos*/   -60,  -480,   370),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,               /*yaw*/   0, /*pos*/ -1171,  -153,  1023),\n    MACRO_OBJECT(/*preset*/ macro_tiny_goomba,                 /*yaw*/   0, /*pos*/  -923,   295,  -614),\n    MACRO_OBJECT(/*preset*/ macro_tiny_goomba,                 /*yaw*/   0, /*pos*/  1466,  -460,   999),\n    MACRO_OBJECT(/*preset*/ macro_box_three_coins,             /*yaw*/   0, /*pos*/  1849,  -325,  -183),\n    MACRO_OBJECT(/*preset*/ macro_tiny_goomba,                 /*yaw*/   0, /*pos*/  1033,  -162,   916),\n    MACRO_OBJECT(/*preset*/ macro_tiny_goomba,                 /*yaw*/   0, /*pos*/  -550,   666,  -150),\n    MACRO_OBJECT(/*preset*/ macro_fish_spawner_few_blue,       /*yaw*/   0, /*pos*/   383, -1022,  2133),\n    MACRO_OBJECT(/*preset*/ macro_tiny_goomba,                 /*yaw*/   0, /*pos*/  2133,  -767,   466),\n    MACRO_OBJECT(/*preset*/ macro_tiny_goomba,                 /*yaw*/   0, /*pos*/ -1033,  -153,  1050),\n    MACRO_OBJECT(/*preset*/ macro_hidden_star_trigger,         /*yaw*/   0, /*pos*/  1980,  -880,  2100),\n    MACRO_OBJECT(/*preset*/ macro_hidden_star_trigger,         /*yaw*/   0, /*pos*/   140,  -153,   360),\n    MACRO_OBJECT(/*preset*/ macro_hidden_star_trigger,         /*yaw*/   0, /*pos*/ -1330,  -900,  1945),\n    MACRO_OBJECT(/*preset*/ macro_hidden_star_trigger,         /*yaw*/   0, /*pos*/     0,  1150,  -450),\n    MACRO_OBJECT(/*preset*/ macro_hidden_star_trigger,         /*yaw*/   0, /*pos*/ -1392,    92,  -633),\n    MACRO_OBJECT(/*preset*/ macro_fire_spitter,                /*yaw*/   0, /*pos*/  1348,  -148,   666),\n    MACRO_OBJECT(/*preset*/ macro_fire_spitter,                /*yaw*/   0, /*pos*/  1733,  -770,  1718),\n    MACRO_OBJECT(/*preset*/ macro_fire_spitter,                /*yaw*/   0, /*pos*/ -2133,  -770,   296),\n    MACRO_OBJECT(/*preset*/ macro_fire_spitter,                /*yaw*/   0, /*pos*/  -160,  -608,   666),\n    MACRO_OBJECT(/*preset*/ macro_butterfly_triplet,           /*yaw*/   0, /*pos*/ -1693,  -890,  1746),\n    MACRO_OBJECT(/*preset*/ macro_koopa_tiny,                  /*yaw*/   0, /*pos*/  -600,  -153,   800),\n    MACRO_OBJECT(/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/   -40,  -970, -3920),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/   280,  -640, -4140),\n    MACRO_OBJECT(/*preset*/ macro_tiny_goomba,                 /*yaw*/   0, /*pos*/ -2020,  -890,  1720),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/thi/areas/2/movtext.inc.c",
    "content": "// 0x0700E33C\nstatic Movtex thi_movtex_area2_short_side_water_data[] = {\n    MOV_TEX_INIT_LOAD(    1),\n    MOV_TEX_ROT_SPEED(    3),\n    MOV_TEX_ROT_SCALE(    3),\n    MOV_TEX_4_BOX_TRIS(-2457, -2457),\n    MOV_TEX_4_BOX_TRIS(-2457,  1874),\n    MOV_TEX_4_BOX_TRIS(-1535,  1874),\n    MOV_TEX_4_BOX_TRIS(-1535, -2457),\n    MOV_TEX_ROT(     ROTATE_COUNTER_CLOCKWISE),\n    MOV_TEX_ALPHA(    0x96),\n    MOV_TEX_DEFINE(  TEXTURE_WATER),\n    MOV_TEX_END(),\n};\n\n// 0x0700E35C\nstatic Movtex thi_movtex_area2_large_side_water_data[] = {\n    MOV_TEX_INIT_LOAD(    1),\n    MOV_TEX_ROT_SPEED(    3),\n    MOV_TEX_ROT_SCALE(    3),\n    MOV_TEX_4_BOX_TRIS(-1381,  1352),\n    MOV_TEX_4_BOX_TRIS(-1381,  2458),\n    MOV_TEX_4_BOX_TRIS( 2089,  2458),\n    MOV_TEX_4_BOX_TRIS( 2089,  1352),\n    MOV_TEX_ROT(     ROTATE_COUNTER_CLOCKWISE),\n    MOV_TEX_ALPHA(    0x96),\n    MOV_TEX_DEFINE(  TEXTURE_WATER),\n    MOV_TEX_END(),\n};\n\n// 0x0700E37C\nstatic Movtex thi_movtex_area2_mountain_top_water_data[] = {\n    MOV_TEX_INIT_LOAD(    1),\n    MOV_TEX_ROT_SPEED(    3),\n    MOV_TEX_ROT_SCALE(    3),\n    MOV_TEX_4_BOX_TRIS( -306,  -766),\n    MOV_TEX_4_BOX_TRIS( -306,  -152),\n    MOV_TEX_4_BOX_TRIS(  307,  -152),\n    MOV_TEX_4_BOX_TRIS(  307,  -766),\n    MOV_TEX_ROT(     ROTATE_COUNTER_CLOCKWISE),\n    MOV_TEX_ALPHA(    0x96),\n    MOV_TEX_DEFINE(  TEXTURE_WATER),\n    MOV_TEX_END(),\n};\n\n// 0x0700E39C\nconst struct MovtexQuadCollection thi_movtex_area2_water[] = {\n    {0, thi_movtex_area2_short_side_water_data},\n    {1, thi_movtex_area2_large_side_water_data},\n    {2, thi_movtex_area2_mountain_top_water_data},\n    {-1, NULL},\n};\n"
  },
  {
    "path": "levels/thi/areas/3/1/model.inc.c",
    "content": "// 0x070079D0 - 0x07007AB0\nstatic const Vtx thi_seg7_vertex_070079D0[] = {\n    {{{  -101,   2458,    102}, 0, {   376,    990}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{   102,   3072,    102}, 0, {     0,    744}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{   102,   2458,    102}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{   614,   1024,   2048}, 0, {   274,    662}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{   614,   1229,   2048}, 0, {    70,    662}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{   717,   1331,   1229}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{   717,    922,   1229}, 0, {   376,    990}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{   307,   1331,   1229}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{   410,   1024,   2048}, 0, {   274,    662}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{   307,    922,   1229}, 0, {   376,    990}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{   410,   1229,   2048}, 0, {    70,    662}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{   614,   1229,   2048}, 0, {    70,    716}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{   410,   1229,   2048}, 0, {   274,    716}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{   307,   1331,   1229}, 0, {   376,    990}, {0xff, 0xff, 0xff, 0x80}}},\n};\n\n// 0x07007AB0 - 0x07007B80\nstatic const Vtx thi_seg7_vertex_07007AB0[] = {\n    {{{   102,   2458,    102}, 0, {   376,    990}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{   102,   3072,   -101}, 0, {    70,    762}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{   102,   2458,   -101}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{  -101,   2458,    102}, 0, {   376,    990}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{  -101,   3072,    102}, 0, {   376,    744}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{   102,   3072,    102}, 0, {     0,    744}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{   102,   3072,   -101}, 0, {     0,    744}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{  -101,   3072,   -101}, 0, {   376,    744}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{  -101,   2458,   -101}, 0, {   376,    990}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{  -101,   3072,   -101}, 0, {   274,    762}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{  -101,   3072,    102}, 0, {    70,    762}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{  -101,   2458,    102}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0x80}}},\n    {{{   102,   3072,    102}, 0, {   274,    762}, {0xff, 0xff, 0xff, 0x80}}},\n};\n\n// 0x07007B80 - 0x07007C20\nstatic const Gfx thi_seg7_dl_07007B80[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, grass_0900B800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(thi_seg7_vertex_070079D0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  5, 11, 12, 0x0),\n    gsSP1Triangle( 5, 12, 13, 0x0),\n    gsSPVertex(thi_seg7_vertex_07007AB0, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 2,  6,  7, 0x0,  2,  7,  8, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle( 0, 12,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007C20 - 0x07007C90\nconst Gfx thi_seg7_dl_07007C20[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(thi_seg7_dl_07007B80),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/thi/areas/3/2/model.inc.c",
    "content": "// 0x07007C90 - 0x07007CA8\nstatic const Lights1 thi_seg7_lights_07007C90 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x07007CA8 - 0x07007CC0\nstatic const Lights1 thi_seg7_lights_07007CA8 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07007CC0 - 0x07007CD8\nstatic const Lights1 thi_seg7_lights_07007CC0 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0x99, 0x99, 0x99, 0x28, 0x28, 0x28\n);\n\n// 0x07007CD8 - 0x07007CF0\nstatic const Lights1 thi_seg7_lights_07007CD8 = gdSPDefLights1(\n    0x33, 0x33, 0x33,\n    0x66, 0x66, 0x66, 0x28, 0x28, 0x28\n);\n\n// 0x07007CF0 - 0x07007D08\nstatic const Lights1 thi_seg7_lights_07007CF0 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xcc, 0xcc, 0xcc, 0x28, 0x28, 0x28\n);\n\n// 0x07007D08 - 0x07007D88\nstatic const Vtx thi_seg7_vertex_07007D08[] = {\n    {{{   102,   3072,    102}, 0, {  1262,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   512,   3072,    512}, 0, {   990,      0}, {0xed, 0x83, 0xf7, 0xff}}},\n    {{{  -511,   3072,    512}, 0, {  1672,      0}, {0x0c, 0x83, 0xf4, 0xff}}},\n    {{{   512,   3072,   -511}, 0, {   990,      0}, {0xf8, 0x83, 0x10, 0xff}}},\n    {{{   102,   3072,   -101}, 0, {  1262,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -101,   3072,    102}, 0, {  1398,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -101,   3072,   -101}, 0, {  1398,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -511,   3072,   -511}, 0, {  1672,      0}, {0x09, 0x82, 0x09, 0xff}}},\n};\n\n// 0x07007D88 - 0x07007DC8\nstatic const Vtx thi_seg7_vertex_07007D88[] = {\n    {{{  -306,   2560,   -306}, 0, { -1564,   -544}, {0xac, 0x54, 0xd6, 0xff}}},\n    {{{  -306,   2560,    307}, 0, { -1564,   2522}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{   307,   2560,    307}, 0, {  1502,   2522}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{   307,   2560,   -306}, 0, {  1502,   -544}, {0x33, 0x33, 0x99, 0xff}}},\n};\n\n// 0x07007DC8 - 0x07007E08\nstatic const Vtx thi_seg7_vertex_07007DC8[] = {\n    {{{     0,   1843,   -101}, 0, {     0,    650}, {0x00, 0x4b, 0x9a, 0xff}}},\n    {{{  -101,   1843,      0}, 0, {  -370,    990}, {0x83, 0xf0, 0x00, 0xff}}},\n    {{{     0,   1843,    102}, 0, {     0,   1328}, {0x00, 0x4b, 0x66, 0xff}}},\n    {{{   102,   1843,      0}, 0, {   308,    990}, {0x7d, 0xf0, 0x00, 0xff}}},\n};\n\n// 0x07007E08 - 0x07007EE8\nstatic const Vtx thi_seg7_vertex_07007E08[] = {\n    {{{ -2047,   1331,  -1740}, 0, {   210,     86}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -1842,   1331,  -2047}, 0, {   776,    376}, {0x35, 0x71, 0xef, 0xff}}},\n    {{{ -2047,   1331,  -2047}, 0, {   938,    182}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,   1024,    819}, 0, {  2352,    114}, {0x02, 0x5f, 0xad, 0xff}}},\n    {{{   819,   1024,   1434}, 0, {  1330,    260}, {0x34, 0x49, 0x59, 0xff}}},\n    {{{  1229,   1024,   1024}, 0, {  2012,      0}, {0x6d, 0x33, 0xdc, 0xff}}},\n    {{{   614,   1024,   1434}, 0, {  1330,    406}, {0x21, 0x65, 0x43, 0xff}}},\n    {{{   410,   1024,   1024}, 0, {  2012,    552}, {0xb5, 0x61, 0xe2, 0xff}}},\n    {{{   614,   1024,   2048}, 0, {   308,    406}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{   410,   1024,   2048}, 0, {   308,    552}, {0xcd, 0x33, 0x99, 0xff}}},\n    {{{ -1740,   1331,  -1740}, 0, {     0,    376}, {0x6e, 0x3a, 0x15, 0xff}}},\n    {{{ -2047,   1536,   -818}, 0, {     0,    376}, {0x50, 0x38, 0x50, 0xff}}},\n    {{{ -1637,   1536,  -1228}, 0, {   932,    376}, {0x47, 0x64, 0xe3, 0xff}}},\n    {{{ -2047,   1536,  -1228}, 0, {   450,     88}, {0x00, 0x38, 0x8f, 0xff}}},\n};\n\n// 0x07007EE8 - 0x07007FD8\nstatic const Vtx thi_seg7_vertex_07007EE8[] = {\n    {{{ -1740,   1331,  -1740}, 0, {     0,      0}, {0x6e, 0x3a, 0x15, 0xff}}},\n    {{{ -1842,    512,  -2047}, 0, {   776,    478}, {0x78, 0x00, 0xd8, 0xff}}},\n    {{{ -1842,   1331,  -2047}, 0, {   776,      0}, {0x35, 0x71, 0xef, 0xff}}},\n    {{{ -2047,   1536,  -1228}, 0, {   650,      0}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{ -1637,   1536,  -1228}, 0, {     0,      0}, {0x47, 0x64, 0xe3, 0xff}}},\n    {{{ -1637,    512,  -1228}, 0, {     0,    536}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{ -2047,    512,  -1228}, 0, {   650,    536}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1637,    512,  -1228}, 0, {   932,    536}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{ -2047,   1536,   -818}, 0, {     0,      0}, {0x50, 0x38, 0x50, 0xff}}},\n    {{{ -2047,    512,   -818}, 0, {     0,    536}, {0x27, 0x48, 0x60, 0xff}}},\n    {{{ -1637,   1536,  -1228}, 0, {   932,      0}, {0x47, 0x64, 0xe3, 0xff}}},\n    {{{ -1740,    512,  -1740}, 0, {   480,    478}, {0x3e, 0x00, 0x6e, 0xff}}},\n    {{{ -1740,   1331,  -1740}, 0, {   480,      0}, {0x6e, 0x3a, 0x15, 0xff}}},\n    {{{ -2047,   1331,  -1740}, 0, {     0,      0}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -2047,    512,  -1740}, 0, {     0,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07007FD8 - 0x070080D8\nstatic const Vtx thi_seg7_vertex_07007FD8[] = {\n    {{{  2048,  -1060,   2048}, 0, {  4056,    938}, {0xba, 0x00, 0x97, 0xff}}},\n    {{{   614,  -1060,   2048}, 0, {  2626,    938}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   614,   1024,   2048}, 0, {  2626,    288}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{ -1740,   1331,  -1740}, 0, {     0,      0}, {0x6e, 0x3a, 0x15, 0xff}}},\n    {{{ -1740,    512,  -1740}, 0, {     0,    478}, {0x3e, 0x00, 0x6e, 0xff}}},\n    {{{ -1842,    512,  -2047}, 0, {   776,    478}, {0x78, 0x00, 0xd8, 0xff}}},\n    {{{  2048,   2355,   2048}, 0, {  4056,      0}, {0xce, 0xb9, 0xa5, 0xff}}},\n    {{{   614,   1229,   2048}, 0, {  2626,    224}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   410,   1229,   2048}, 0, {  2420,    224}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2047,  -1060,   2048}, 0, {     0,    938}, {0x28, 0x00, 0x88, 0xff}}},\n    {{{ -2047,   2355,   2048}, 0, {     0,      0}, {0x43, 0xad, 0xbd, 0xff}}},\n    {{{   410,   1024,   2048}, 0, {  2420,    288}, {0xcd, 0x33, 0x99, 0xff}}},\n    {{{   410,  -1060,   2048}, 0, {  2420,    938}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1024,   2867,   1024}, 0, {     0,    990}, {0xee, 0x88, 0xdc, 0xff}}},\n    {{{ -2047,   2355,   2048}, 0, {  3034,    418}, {0x43, 0xad, 0xbd, 0xff}}},\n    {{{ -1023,   2867,   1024}, 0, {  2012,    990}, {0x1b, 0x87, 0xe5, 0xff}}},\n};\n\n// 0x070080D8 - 0x070081C8\nstatic const Vtx thi_seg7_vertex_070080D8[] = {\n    {{{  2048,   2355,   2048}, 0, {  3034,    418}, {0xce, 0xb9, 0xa5, 0xff}}},\n    {{{  1024,   2867,  -1023}, 0, {     0,    990}, {0xdc, 0x88, 0x12, 0xff}}},\n    {{{  2048,   2355,  -2047}, 0, { -1052,    418}, {0xb5, 0xad, 0x3a, 0xff}}},\n    {{{  1024,   2867,   1024}, 0, {  2012,    990}, {0xee, 0x88, 0xdc, 0xff}}},\n    {{{  2048,   2355,  -2047}, 0, {  3034,    418}, {0xb5, 0xad, 0x3a, 0xff}}},\n    {{{  1024,   2867,  -1023}, 0, {  2012,    990}, {0xdc, 0x88, 0x12, 0xff}}},\n    {{{ -1023,   2867,  -1023}, 0, {     0,    990}, {0x1b, 0x87, 0x1b, 0xff}}},\n    {{{ -2047,   2355,  -2047}, 0, { -1052,    418}, {0x36, 0xbd, 0x5c, 0xff}}},\n    {{{ -1023,   2867,  -1023}, 0, {  2012,    990}, {0x1b, 0x87, 0x1b, 0xff}}},\n    {{{ -1023,   2867,   1024}, 0, {     0,    990}, {0x1b, 0x87, 0xe5, 0xff}}},\n    {{{ -2047,   2355,   2048}, 0, { -1052,    418}, {0x43, 0xad, 0xbd, 0xff}}},\n    {{{ -2047,   2355,  -2047}, 0, {  3034,    418}, {0x36, 0xbd, 0x5c, 0xff}}},\n    {{{ -2047,  -1060,  -2047}, 0, {  4056,   1000}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{ -2047,   2355,   2048}, 0, {     0,      0}, {0x43, 0xad, 0xbd, 0xff}}},\n    {{{ -2047,  -1060,   2048}, 0, {     0,   1000}, {0x28, 0x00, 0x88, 0xff}}},\n};\n\n// 0x070081C8 - 0x070082A8\nstatic const Vtx thi_seg7_vertex_070081C8[] = {\n    {{{  1024,   2867,   1024}, 0, {     0,    990}, {0xee, 0x88, 0xdc, 0xff}}},\n    {{{  2048,   2355,   2048}, 0, { -1052,    418}, {0xce, 0xb9, 0xa5, 0xff}}},\n    {{{ -2047,   2355,   2048}, 0, {  3034,    418}, {0x43, 0xad, 0xbd, 0xff}}},\n    {{{  2048,  -1060,  -2047}, 0, {  4056,    938}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  2048,   2355,  -2047}, 0, {  4056,      0}, {0xb5, 0xad, 0x3a, 0xff}}},\n    {{{ -2047,   2355,  -2047}, 0, {     0,      0}, {0x36, 0xbd, 0x5c, 0xff}}},\n    {{{ -2047,  -1060,  -2047}, 0, {     0,    938}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{  2048,  -1060,   2048}, 0, {     0,    990}, {0xba, 0x00, 0x97, 0xff}}},\n    {{{  2048,   2355,   2048}, 0, {     0,    -44}, {0xce, 0xb9, 0xa5, 0xff}}},\n    {{{  2048,   2355,  -2047}, 0, {  4056,    -44}, {0xb5, 0xad, 0x3a, 0xff}}},\n    {{{  2048,  -1060,  -2047}, 0, {  4056,    990}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{ -2047,  -1060,  -2047}, 0, {  4056,   1000}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{ -2047,   2355,  -2047}, 0, {  4056,      0}, {0x36, 0xbd, 0x5c, 0xff}}},\n    {{{ -2047,   2355,   2048}, 0, {     0,      0}, {0x43, 0xad, 0xbd, 0xff}}},\n};\n\n// 0x070082A8 - 0x07008388\nstatic const Vtx thi_seg7_vertex_070082A8[] = {\n    {{{   410,  -1023,   1024}, 0, {     0,    990}, {0xae, 0x00, 0xa0, 0xff}}},\n    {{{  1024,   1024,    819}, 0, {   614,      0}, {0x02, 0x5f, 0xad, 0xff}}},\n    {{{  1024,  -1023,    819}, 0, {   614,    990}, {0x35, 0x00, 0x8d, 0xff}}},\n    {{{   819,  -1023,   1434}, 0, {   786,    990}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{   614,   1024,   1434}, 0, {   582,      0}, {0x21, 0x65, 0x43, 0xff}}},\n    {{{   614,  -1023,   1434}, 0, {   582,    990}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{   819,   1024,   1434}, 0, {   786,      0}, {0x34, 0x49, 0x59, 0xff}}},\n    {{{   410,  -1023,   2048}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   410,   1024,   1024}, 0, {     0,      0}, {0xb5, 0x61, 0xe2, 0xff}}},\n    {{{   410,   1024,   2048}, 0, {   990,      0}, {0xcd, 0x33, 0x99, 0xff}}},\n    {{{   614,  -1023,   1434}, 0, {   376,    990}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{   614,   1024,   2048}, 0, {   990,      0}, {0x49, 0x49, 0xb7, 0xff}}},\n    {{{   614,  -1023,   2048}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   614,   1024,   1434}, 0, {   376,      0}, {0x21, 0x65, 0x43, 0xff}}},\n};\n\n// 0x07008388 - 0x07008478\nstatic const Vtx thi_seg7_vertex_07008388[] = {\n    {{{  1229,  -1023,    614}, 0, {   614,    990}, {0x84, 0x00, 0x18, 0xff}}},\n    {{{  1229,   1024,    614}, 0, {   614,      0}, {0xf1, 0x62, 0x4e, 0xff}}},\n    {{{  1434,   1024,      0}, 0, {     0,      0}, {0xa7, 0x2f, 0xb4, 0xff}}},\n    {{{   410,  -1023,   1024}, 0, {     0,    990}, {0xae, 0x00, 0xa0, 0xff}}},\n    {{{   410,   1024,   1024}, 0, {     0,      0}, {0xb5, 0x61, 0xe2, 0xff}}},\n    {{{  1024,   1024,    819}, 0, {   614,      0}, {0x02, 0x5f, 0xad, 0xff}}},\n    {{{  1024,  -1023,    819}, 0, {  -898,    990}, {0x35, 0x00, 0x8d, 0xff}}},\n    {{{  1024,   1024,    819}, 0, {  -898,      0}, {0x02, 0x5f, 0xad, 0xff}}},\n    {{{  1229,   1024,   1024}, 0, { -1186,      0}, {0x6d, 0x33, 0xdc, 0xff}}},\n    {{{  1229,  -1023,   1024}, 0, { -1186,    990}, {0x78, 0x00, 0x28, 0xff}}},\n    {{{  1229,  -1023,   1024}, 0, {   546,    990}, {0x78, 0x00, 0x28, 0xff}}},\n    {{{  1229,   1024,   1024}, 0, {   546,      0}, {0x6d, 0x33, 0xdc, 0xff}}},\n    {{{   819,   1024,   1434}, 0, {     0,      0}, {0x34, 0x49, 0x59, 0xff}}},\n    {{{   819,  -1023,   1434}, 0, {     0,    990}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  1434,  -1023,      0}, 0, {     0,    990}, {0xd0, 0x00, 0x8b, 0xff}}},\n};\n\n// 0x07008478 - 0x07008568\nstatic const Vtx thi_seg7_vertex_07008478[] = {\n    {{{  1434,  -1023,   -818}, 0, { -1870,    990}, {0x7a, 0x00, 0xe0, 0xff}}},\n    {{{  1434,   1024,   -409}, 0, { -1460,      0}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{  1434,  -1023,   -409}, 0, { -1460,    990}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  1434,  -1023,      0}, 0, {  1398,    990}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{  1434,   1024,      0}, 0, {  1398,      0}, {0xa7, 0x2f, 0xb4, 0xff}}},\n    {{{  1843,   1024,      0}, 0, {  1808,      0}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{  1843,  -1023,      0}, 0, {  1808,    990}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  1843,  -1023,      0}, 0, { -1052,    990}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  1843,   1024,      0}, 0, { -1052,      0}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{  1843,   1024,    410}, 0, {  -644,      0}, {0x6d, 0x2f, 0x2c, 0xff}}},\n    {{{  1843,  -1023,    410}, 0, {  -644,    990}, {0x52, 0x00, 0x60, 0xff}}},\n    {{{  1843,  -1023,    410}, 0, {   614,    990}, {0x52, 0x00, 0x60, 0xff}}},\n    {{{  1229,   1024,    614}, 0, {     0,      0}, {0xf1, 0x62, 0x4e, 0xff}}},\n    {{{  1229,  -1023,    614}, 0, {     0,    990}, {0x84, 0x00, 0x18, 0xff}}},\n    {{{  1843,   1024,    410}, 0, {   614,      0}, {0x6d, 0x2f, 0x2c, 0xff}}},\n};\n\n// 0x07008568 - 0x07008658\nstatic const Vtx thi_seg7_vertex_07008568[] = {\n    {{{   614,  -1023,   -818}, 0, {  -848,    990}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{   614,   1024,  -1023}, 0, { -1052,      0}, {0x91, 0x2d, 0xd8, 0xff}}},\n    {{{   614,  -1023,  -1023}, 0, { -1052,    990}, {0xa4, 0x00, 0xa9, 0xff}}},\n    {{{  1434,  -1023,   -818}, 0, { -1870,    990}, {0x7a, 0x00, 0xe0, 0xff}}},\n    {{{  1434,   1024,   -818}, 0, { -1870,      0}, {0x67, 0x2a, 0xc4, 0xff}}},\n    {{{  1434,   1024,   -409}, 0, { -1460,      0}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{  1434,  -1023,   -409}, 0, {  1398,    990}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  1024,   1024,   -409}, 0, {   990,      0}, {0xe6, 0x49, 0x63, 0xff}}},\n    {{{  1024,  -1023,   -409}, 0, {   990,    990}, {0xc0, 0x00, 0x6d, 0xff}}},\n    {{{  1434,   1024,   -409}, 0, {  1398,      0}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{  1024,  -1023,   -409}, 0, {     0,    990}, {0xc0, 0x00, 0x6d, 0xff}}},\n    {{{   614,   1024,   -818}, 0, {   546,      0}, {0xa7, 0x49, 0x34, 0xff}}},\n    {{{   614,  -1023,   -818}, 0, {   546,    990}, {0x86, 0x00, 0x20, 0xff}}},\n    {{{  1024,   1024,   -409}, 0, {     0,      0}, {0xe6, 0x49, 0x63, 0xff}}},\n    {{{   614,   1024,   -818}, 0, {  -848,      0}, {0xa7, 0x49, 0x34, 0xff}}},\n};\n\n// 0x07008658 - 0x07008748\nstatic const Vtx thi_seg7_vertex_07008658[] = {\n    {{{   205,  -1023,  -1637}, 0, { -2688,    990}, {0x6f, 0x00, 0xc4, 0xff}}},\n    {{{   205,   1024,  -1228}, 0, { -2278,      0}, {0x5b, 0x4f, 0x25, 0xff}}},\n    {{{   205,  -1023,  -1228}, 0, { -2278,    990}, {0x52, 0x00, 0x60, 0xff}}},\n    {{{   614,  -1023,  -1023}, 0, {   -94,    990}, {0xa4, 0x00, 0xa9, 0xff}}},\n    {{{  1024,   1024,  -1228}, 0, {   356,      0}, {0xfb, 0x6b, 0xbd, 0xff}}},\n    {{{  1024,  -1023,  -1228}, 0, {   356,    990}, {0x31, 0x00, 0x8b, 0xff}}},\n    {{{   614,   1024,  -1023}, 0, {   -94,      0}, {0x91, 0x2d, 0xd8, 0xff}}},\n    {{{  1024,  -1023,  -1228}, 0, {   546,    990}, {0x31, 0x00, 0x8b, 0xff}}},\n    {{{  1434,   1024,   -818}, 0, {     0,      0}, {0x67, 0x2a, 0xc4, 0xff}}},\n    {{{  1434,  -1023,   -818}, 0, {     0,    990}, {0x7a, 0x00, 0xe0, 0xff}}},\n    {{{  1024,   1024,  -1228}, 0, {   546,      0}, {0xfb, 0x6b, 0xbd, 0xff}}},\n    {{{  -818,  -1023,  -1433}, 0, {  -418,    990}, {0x87, 0x00, 0xdc, 0xff}}},\n    {{{   205,   1024,  -1637}, 0, {   614,      0}, {0x21, 0x37, 0x93, 0xff}}},\n    {{{   205,  -1023,  -1637}, 0, {   614,    990}, {0x6f, 0x00, 0xc4, 0xff}}},\n    {{{  -818,   1024,  -1433}, 0, {  -418,      0}, {0xcd, 0x72, 0xf1, 0xff}}},\n};\n\n// 0x07008748 - 0x07008838\nstatic const Vtx thi_seg7_vertex_07008748[] = {\n    {{{ -1433,  -1023,  -2047}, 0, {  1068,    990}, {0x75, 0x00, 0xd1, 0xff}}},\n    {{{ -1433,    512,  -2047}, 0, {  1068,      0}, {0x34, 0x71, 0xeb, 0xff}}},\n    {{{ -1023,    512,  -1023}, 0, {     0,      0}, {0x71, 0x37, 0x0d, 0xff}}},\n    {{{   205,  -1023,  -1637}, 0, { -2688,    990}, {0x6f, 0x00, 0xc4, 0xff}}},\n    {{{   205,   1024,  -1637}, 0, { -2688,      0}, {0x21, 0x37, 0x93, 0xff}}},\n    {{{   205,   1024,  -1228}, 0, { -2278,      0}, {0x5b, 0x4f, 0x25, 0xff}}},\n    {{{   205,  -1023,  -1228}, 0, {  -418,    990}, {0x52, 0x00, 0x60, 0xff}}},\n    {{{  -409,   1024,  -1023}, 0, { -1064,      0}, {0xe4, 0x23, 0x76, 0xff}}},\n    {{{  -409,  -1023,  -1023}, 0, { -1064,    990}, {0xe3, 0x00, 0x7b, 0xff}}},\n    {{{   205,   1024,  -1228}, 0, {  -418,      0}, {0x5b, 0x4f, 0x25, 0xff}}},\n    {{{  -409,   1024,  -1023}, 0, {   546,      0}, {0xe4, 0x23, 0x76, 0xff}}},\n    {{{  -818,   1024,  -1433}, 0, {     0,      0}, {0xcd, 0x72, 0xf1, 0xff}}},\n    {{{  -818,  -1023,  -1433}, 0, {     0,    990}, {0x87, 0x00, 0xdc, 0xff}}},\n    {{{  -409,  -1023,  -1023}, 0, {   546,    990}, {0xe3, 0x00, 0x7b, 0xff}}},\n    {{{ -1023,  -1023,  -1023}, 0, {     0,    990}, {0x51, 0x00, 0x61, 0xff}}},\n};\n\n// 0x07008838 - 0x07008928\nstatic const Vtx thi_seg7_vertex_07008838[] = {\n    {{{  -204,  -1023,   -613}, 0, {   376,    990}, {0x67, 0x00, 0xb6, 0xff}}},\n    {{{  -204,    768,   -204}, 0, {     0,     96}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{  -204,  -1023,   -204}, 0, {     0,    990}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -1023,  -1023,  -1023}, 0, {  1010,    990}, {0x51, 0x00, 0x61, 0xff}}},\n    {{{ -1023,    512,  -1023}, 0, {  1010,      0}, {0x71, 0x37, 0x0d, 0xff}}},\n    {{{ -2047,    512,   -818}, 0, {     0,      0}, {0x27, 0x48, 0x60, 0xff}}},\n    {{{ -2047,  -1023,   -818}, 0, {     0,    990}, {0x18, 0x00, 0x7c, 0xff}}},\n    {{{  -818,  -1023,   -204}, 0, {   582,    990}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  -818,    768,   -818}, 0, {     0,     96}, {0xbc, 0x31, 0xa2, 0xff}}},\n    {{{  -818,  -1023,   -818}, 0, {     0,    990}, {0xb6, 0x00, 0x99, 0xff}}},\n    {{{  -818,    768,   -204}, 0, {   582,     96}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  -818,  -1023,   -818}, 0, {   614,    990}, {0xb6, 0x00, 0x99, 0xff}}},\n    {{{  -818,    768,   -818}, 0, {   614,     96}, {0xbc, 0x31, 0xa2, 0xff}}},\n    {{{  -204,  -1023,   -613}, 0, {     0,    990}, {0x67, 0x00, 0xb6, 0xff}}},\n    {{{  -204,    768,   -613}, 0, {     0,     96}, {0x40, 0x62, 0xd2, 0xff}}},\n};\n\n// 0x07008928 - 0x07008A28\nstatic const Vtx thi_seg7_vertex_07008928[] = {\n    {{{ -1023,  -1023,      0}, 0, { -1052,    990}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{ -1023,   1024,      0}, 0, { -1052,      0}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{ -1023,   1024,    614}, 0, {  -438,      0}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{  -204,  -1023,   -613}, 0, {   376,    990}, {0x67, 0x00, 0xb6, 0xff}}},\n    {{{  -204,    768,   -613}, 0, {   376,     96}, {0x40, 0x62, 0xd2, 0xff}}},\n    {{{  -204,    768,   -204}, 0, {     0,     96}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{  -204,  -1023,   -204}, 0, {   582,    990}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  -818,    768,   -204}, 0, {     0,     96}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  -818,  -1023,   -204}, 0, {     0,    990}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  -204,    768,   -204}, 0, {   582,     96}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{ -2047,  -1023,      0}, 0, { -2074,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2047,   1024,      0}, 0, { -2074,      0}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{ -1023,  -1023,    614}, 0, {  -438,    990}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  -204,  -1023,    614}, 0, {   426,    990}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{  -204,   1434,    614}, 0, {   426,      8}, {0x1e, 0x2c, 0x8e, 0xff}}},\n    {{{     0,  -1023,   1024}, 0, {     0,    990}, {0x7d, 0x00, 0x14, 0xff}}},\n};\n\n// 0x07008A28 - 0x07008B18\nstatic const Vtx thi_seg7_vertex_07008A28[] = {\n    {{{ -1023,  -1023,    614}, 0, { -1052,    990}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -2047,   1024,    614}, 0, { -2074,      0}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -2047,  -1023,    614}, 0, { -2074,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1023,   1024,    614}, 0, { -1052,      0}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{  -204,   1434,    614}, 0, {     0,      8}, {0x1e, 0x2c, 0x8e, 0xff}}},\n    {{{  -204,  -1023,    614}, 0, {     0,    990}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{  -818,  -1023,   1024}, 0, {   704,    990}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{  -818,   1434,   1024}, 0, {   704,      8}, {0xf2, 0x66, 0xb8, 0xff}}},\n    {{{ -2047,  -1023,   1024}, 0, {  1194,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -818,   1434,   1024}, 0, {     0,      8}, {0xf2, 0x66, 0xb8, 0xff}}},\n    {{{  -818,  -1023,   1024}, 0, {     0,    990}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{ -2047,   1434,   1024}, 0, {  1194,      8}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{     0,  -1023,   1024}, 0, {  1414,    990}, {0x7d, 0x00, 0x14, 0xff}}},\n    {{{     0,   1434,   1024}, 0, {  1414,      8}, {0x4f, 0x62, 0x0c, 0xff}}},\n    {{{ -1023,   1434,   2048}, 0, {     0,      8}, {0x3f, 0x59, 0x3f, 0xff}}},\n};\n\n// 0x07008B18 - 0x07008B78\nstatic const Vtx thi_seg7_vertex_07008B18[] = {\n    {{{  -204,   1434,    614}, 0, {   426,      8}, {0x1e, 0x2c, 0x8e, 0xff}}},\n    {{{     0,   1434,   1024}, 0, {     0,      8}, {0x4f, 0x62, 0x0c, 0xff}}},\n    {{{     0,  -1023,   1024}, 0, {     0,    990}, {0x7d, 0x00, 0x14, 0xff}}},\n    {{{     0,  -1023,   1024}, 0, {  1414,    990}, {0x7d, 0x00, 0x14, 0xff}}},\n    {{{ -1023,   1434,   2048}, 0, {     0,      8}, {0x3f, 0x59, 0x3f, 0xff}}},\n    {{{ -1023,  -1023,   2048}, 0, {     0,    990}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07008B78 - 0x07008C58\nstatic const Vtx thi_seg7_vertex_07008B78[] = {\n    {{{  -818,   1434,   1024}, 0, {  -286,      0}, {0xf2, 0x66, 0xb8, 0xff}}},\n    {{{ -2047,   1434,   2048}, 0, {  1246,    536}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,   1434,   2048}, 0, {     0,    536}, {0x3f, 0x59, 0x3f, 0xff}}},\n    {{{ -2047,   1434,   1024}, 0, {  1246,      0}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{     0,   1434,   1024}, 0, { -1308,      0}, {0x4f, 0x62, 0x0c, 0xff}}},\n    {{{  -204,   1434,    614}, 0, { -1052,   -260}, {0x1e, 0x2c, 0x8e, 0xff}}},\n    {{{ -2047,   1024,    614}, 0, {  1672,      0}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -1023,   1024,    614}, 0, {     0,      0}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{ -1023,   1024,      0}, 0, {     0,    582}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{ -2047,   1024,      0}, 0, {  1672,    582}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{  -818,    768,   -204}, 0, {   722,      0}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  -204,    768,   -204}, 0, {  -246,    194}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{  -204,    768,   -613}, 0, {     0,    582}, {0x40, 0x62, 0xd2, 0xff}}},\n    {{{  -818,    768,   -818}, 0, {  1046,    582}, {0xbc, 0x31, 0xa2, 0xff}}},\n};\n\n// 0x07008C58 - 0x07008D38\nstatic const Vtx thi_seg7_vertex_07008C58[] = {\n    {{{  1024,   1024,  -1228}, 0, {   946,    582}, {0xfb, 0x6b, 0xbd, 0xff}}},\n    {{{   614,   1024,   -818}, 0, {   946,      4}, {0xa7, 0x49, 0x34, 0xff}}},\n    {{{  1024,   1024,   -409}, 0, {   224,      4}, {0xe6, 0x49, 0x63, 0xff}}},\n    {{{  1434,   1024,   -409}, 0, {  -136,    292}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{  1434,   1024,   -818}, 0, {   224,    582}, {0x67, 0x2a, 0xc4, 0xff}}},\n    {{{   614,   1024,  -1023}, 0, {  1126,    148}, {0x91, 0x2d, 0xd8, 0xff}}},\n    {{{  1229,   1024,    614}, 0, {     0,      0}, {0xf1, 0x62, 0x4e, 0xff}}},\n    {{{  1843,   1024,    410}, 0, {   308,    582}, {0x6d, 0x2f, 0x2c, 0xff}}},\n    {{{  1843,   1024,      0}, 0, {   990,    582}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{  1434,   1024,      0}, 0, {   990,    172}, {0xa7, 0x2f, 0xb4, 0xff}}},\n    {{{  -818,   1024,  -1433}, 0, {  1672,    376}, {0xcd, 0x72, 0xf1, 0xff}}},\n    {{{  -409,   1024,  -1023}, 0, {   990,      0}, {0xe4, 0x23, 0x76, 0xff}}},\n    {{{   205,   1024,  -1228}, 0, {     0,    172}, {0x5b, 0x4f, 0x25, 0xff}}},\n    {{{   205,   1024,  -1637}, 0, {     0,    582}, {0x21, 0x37, 0x93, 0xff}}},\n};\n\n// 0x07008D38 - 0x07008D78\nstatic const Vtx thi_seg7_vertex_07008D38[] = {\n    {{{ -2047,    512,   -818}, 0, {   284,    -34}, {0x27, 0x48, 0x60, 0xff}}},\n    {{{ -1023,    512,  -1023}, 0, {     0,    606}, {0x71, 0x37, 0x0d, 0xff}}},\n    {{{ -1433,    512,  -2047}, 0, {  1802,    606}, {0x34, 0x71, 0xeb, 0xff}}},\n    {{{ -2047,    512,  -2047}, 0, {  2182,    250}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07008D78 - 0x07008E38\nstatic const Vtx thi_seg7_vertex_07008D78[] = {\n    {{{  -306,   2458,   -306}, 0, {   990,    224}, {0xc7, 0xc3, 0xa2, 0xff}}},\n    {{{  -306,   2560,   -306}, 0, {   990,      0}, {0xac, 0x54, 0xd6, 0xff}}},\n    {{{   307,   2560,   -306}, 0, {     0,      0}, {0x33, 0x33, 0x99, 0xff}}},\n    {{{   307,   2458,   -306}, 0, {     0,    224}, {0x5e, 0xc3, 0xc7, 0xff}}},\n    {{{   307,   2560,    307}, 0, {   990,      0}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{   307,   2458,    307}, 0, {   990,    224}, {0x39, 0xc3, 0x5e, 0xff}}},\n    {{{   307,   2458,    307}, 0, {     0,    224}, {0x39, 0xc3, 0x5e, 0xff}}},\n    {{{  -306,   2560,    307}, 0, {   990,      0}, {0xcd, 0x33, 0x67, 0xff}}},\n    {{{  -306,   2458,    307}, 0, {   990,    224}, {0xa2, 0xc3, 0x39, 0xff}}},\n    {{{   307,   2560,    307}, 0, {     0,      0}, {0x54, 0x54, 0x2a, 0xff}}},\n    {{{  -306,   2560,   -306}, 0, {     0,      0}, {0xac, 0x54, 0xd6, 0xff}}},\n    {{{  -306,   2458,   -306}, 0, {     0,    224}, {0xc7, 0xc3, 0xa2, 0xff}}},\n};\n\n// 0x07008E38 - 0x07008F18\nstatic const Vtx thi_seg7_vertex_07008E38[] = {\n    {{{     0,   1741,      0}, 0, {   330,   1614}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{     0,   1843,    102}, 0, {   690,    990}, {0x00, 0x4b, 0x66, 0xff}}},\n    {{{  -101,   1843,      0}, 0, {     0,    990}, {0x83, 0xf0, 0x00, 0xff}}},\n    {{{   307,   2458,   -306}, 0, { -1666,   2624}, {0x5e, 0xc3, 0xc7, 0xff}}},\n    {{{   307,   2458,    307}, 0, { -1666,   1396}, {0x39, 0xc3, 0x5e, 0xff}}},\n    {{{     0,   2253,      0}, 0, { -1052,   2010}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{  -306,   2458,   -306}, 0, {  -438,   2624}, {0xc7, 0xc3, 0xa2, 0xff}}},\n    {{{  -306,   2458,    307}, 0, {  -438,   1396}, {0xa2, 0xc3, 0x39, 0xff}}},\n    {{{     0,   1843,   -101}, 0, {   690,    990}, {0x00, 0x4b, 0x9a, 0xff}}},\n    {{{   102,   1843,      0}, 0, {     0,    990}, {0x7d, 0xf0, 0x00, 0xff}}},\n    {{{   102,   1843,      0}, 0, {   690,    990}, {0x7d, 0xf0, 0x00, 0xff}}},\n    {{{     0,   1843,    102}, 0, {     0,    990}, {0x00, 0x4b, 0x66, 0xff}}},\n    {{{  -101,   1843,      0}, 0, {   690,    990}, {0x83, 0xf0, 0x00, 0xff}}},\n    {{{     0,   1843,   -101}, 0, {     0,    990}, {0x00, 0x4b, 0x9a, 0xff}}},\n};\n\n// 0x07008F18 - 0x07008F98\nstatic const Vtx thi_seg7_vertex_07008F18[] = {\n    {{{  -511,   3072,    512}, 0, {     0,      0}, {0x0c, 0x83, 0xf4, 0xff}}},\n    {{{  1024,   2867,   1024}, 0, {     0,      0}, {0xee, 0x88, 0xdc, 0xff}}},\n    {{{ -1023,   2867,   1024}, 0, {     0,      0}, {0x1b, 0x87, 0xe5, 0xff}}},\n    {{{ -1023,   2867,  -1023}, 0, {     0,      0}, {0x1b, 0x87, 0x1b, 0xff}}},\n    {{{   512,   3072,    512}, 0, {     0,      0}, {0xed, 0x83, 0xf7, 0xff}}},\n    {{{  -511,   3072,   -511}, 0, {     0,      0}, {0x09, 0x82, 0x09, 0xff}}},\n    {{{   512,   3072,   -511}, 0, {     0,      0}, {0xf8, 0x83, 0x10, 0xff}}},\n    {{{  1024,   2867,  -1023}, 0, {     0,      0}, {0xdc, 0x88, 0x12, 0xff}}},\n};\n\n// 0x07008F98 - 0x07009010\nstatic const Gfx thi_seg7_dl_07008F98[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_0900B800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&thi_seg7_lights_07007C90.l, 1),\n    gsSPLight(&thi_seg7_lights_07007C90.a, 2),\n    gsSPVertex(thi_seg7_vertex_07007D08, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 0,  2,  5, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 6,  2,  7, 0x0,  6,  5,  2, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  4,  7,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009010 - 0x07009080\nstatic const Gfx thi_seg7_dl_07009010[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&thi_seg7_lights_07007CA8.l, 1),\n    gsSPLight(&thi_seg7_lights_07007CA8.a, 2),\n    gsSPVertex(thi_seg7_vertex_07007D88, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPLight(&thi_seg7_lights_07007CC0.l, 1),\n    gsSPLight(&thi_seg7_lights_07007CC0.a, 2),\n    gsSPVertex(thi_seg7_vertex_07007DC8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009080 - 0x07009530\nstatic const Gfx thi_seg7_dl_07009080[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&thi_seg7_lights_07007CA8.l, 1),\n    gsSPLight(&thi_seg7_lights_07007CA8.a, 2),\n    gsSPVertex(thi_seg7_vertex_07007E08, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  7,  6, 0x0),\n    gsSP2Triangles( 8,  6,  7, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 0, 10,  1, 0x0, 11, 12, 13, 0x0),\n    gsSPLight(&thi_seg7_lights_07007CD8.l, 1),\n    gsSPLight(&thi_seg7_lights_07007CD8.a, 2),\n    gsSPVertex(thi_seg7_vertex_07007EE8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(thi_seg7_vertex_07007FD8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  0,  7, 0x0,  0,  2,  7, 0x0),\n    gsSP2Triangles( 7,  8,  6, 0x0,  9, 10,  8, 0x0),\n    gsSP2Triangles( 9,  8, 11, 0x0,  8, 10,  6, 0x0),\n    gsSP2Triangles(11, 12,  9, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(thi_seg7_vertex_070080D8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(thi_seg7_vertex_070081C8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(thi_seg7_vertex_070082A8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  0, 0x0),\n    gsSP2Triangles( 7,  9,  8, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(10, 13, 11, 0x0),\n    gsSPVertex(thi_seg7_vertex_07008388, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(thi_seg7_vertex_07008478, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(thi_seg7_vertex_07008568, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(thi_seg7_vertex_07008658, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(thi_seg7_vertex_07008748, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 10, 12, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(thi_seg7_vertex_07008838, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(thi_seg7_vertex_07008928, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10,  1,  0, 0x0, 10, 11,  1, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(thi_seg7_vertex_07008A28, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(thi_seg7_vertex_07008B18, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPLight(&thi_seg7_lights_07007CF0.l, 1),\n    gsSPLight(&thi_seg7_lights_07007CF0.a, 2),\n    gsSPVertex(thi_seg7_vertex_07008B78, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  0,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(thi_seg7_vertex_07008C58, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(thi_seg7_vertex_07008D38, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009530 - 0x070095A8\nstatic const Gfx thi_seg7_dl_07009530[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&thi_seg7_lights_07007CC0.l, 1),\n    gsSPLight(&thi_seg7_lights_07007CC0.a, 2),\n    gsSPVertex(thi_seg7_vertex_07008D78, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0,  8,  7, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070095A8 - 0x07009610\nstatic const Gfx thi_seg7_dl_070095A8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(thi_seg7_vertex_07008E38, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 7,  6,  5, 0x0,  0,  8,  9, 0x0),\n    gsSP2Triangles( 0, 10, 11, 0x0,  0, 12, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009610 - 0x07009670\nstatic const Gfx thi_seg7_dl_07009610[] = {\n    gsSPLight(&thi_seg7_lights_07007C90.l, 1),\n    gsSPLight(&thi_seg7_lights_07007C90.a, 2),\n    gsSPVertex(thi_seg7_vertex_07008F18, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  0,  3,  5, 0x0),\n    gsSP2Triangles( 6,  5,  3, 0x0,  6,  3,  7, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  4,  7,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009670 - 0x07009740\nconst Gfx thi_seg7_dl_07009670[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(thi_seg7_dl_07008F98),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(thi_seg7_dl_07009010),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(thi_seg7_dl_07009080),\n    gsSPDisplayList(thi_seg7_dl_07009530),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(thi_seg7_dl_070095A8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(thi_seg7_dl_07009610),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/thi/areas/3/3/model.inc.c",
    "content": "// 0x07009740 - 0x07009820\nstatic const Vtx thi_seg7_vertex_07009740[] = {\n    {{{  -101,   3482,    102}, 0, {  1398,   -168}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -101,   3482,   -101}, 0, {  1398,   -168}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   102,   3482,   -101}, 0, {  1262,   -168}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   614,   1024,   2253}, 0, {   922,    650}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   614,   1024,   2458}, 0, {   922,    650}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   614,   1229,   2458}, 0, {   922,    582}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   614,   1229,   2253}, 0, {   922,    582}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   410,   1229,   2458}, 0, {  1058,    582}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   410,   1024,   2458}, 0, {  1058,    650}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   410,   1229,   2253}, 0, {  1058,    582}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   410,   1024,   2253}, 0, {  1058,    650}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -101,   3277,   -101}, 0, {  1398,   -100}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -101,   3277,    102}, 0, {  1398,   -100}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   102,   3482,    102}, 0, {  1262,   -168}, {0x00, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07009820 - 0x070098D0\nstatic const Vtx thi_seg7_vertex_07009820[] = {\n    {{{  -101,   3277,    102}, 0, {  1398,   -168}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -101,   3277,   -101}, 0, {  1398,   -168}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   102,   3277,   -101}, 0, {  1262,   -168}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   102,   3277,   -101}, 0, {  1262,   -100}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -101,   3482,   -101}, 0, {  1398,   -168}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -101,   3277,   -101}, 0, {  1398,   -100}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   102,   3482,   -101}, 0, {  1262,   -168}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   102,   3277,    102}, 0, {  1262,   -100}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   102,   3482,    102}, 0, {  1262,   -168}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  -101,   3277,    102}, 0, {  1398,   -100}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   102,   3277,    102}, 0, {  1262,   -168}, {0x00, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070098D0 - 0x070099C0\nstatic const Vtx thi_seg7_vertex_070098D0[] = {\n    {{{  -101,   3072,    102}, 0, {   172,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   102,   3277,    102}, 0, {  -234,  -2280}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   102,   3072,    102}, 0, {  -234,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   614,   1024,   2048}, 0, { -1392,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   614,   1229,   2253}, 0, { -1528,  -1462}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   614,   1229,   2048}, 0, { -1392,  -1462}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   614,   1024,   2253}, 0, { -1528,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   614,   1229,   2048}, 0, { -1392,   2214}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   410,   1229,   2253}, 0, { -1528,   1806}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   410,   1229,   2048}, 0, { -1392,   1806}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   614,   1229,   2253}, 0, { -1528,   2214}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   410,   1024,   2048}, 0, { -1392,   1806}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   410,   1024,   2253}, 0, { -1528,   1806}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   614,   1024,   2253}, 0, { -1528,   2214}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   614,   1024,   2048}, 0, { -1392,   2214}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070099C0 - 0x07009AB0\nstatic const Vtx thi_seg7_vertex_070099C0[] = {\n    {{{   102,   3072,    102}, 0, {   172,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   102,   3277,    102}, 0, {   172,   4258}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   102,   3277,   -101}, 0, {  -234,   4258}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -101,   3072,    102}, 0, {   172,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -101,   3277,    102}, 0, {   172,  -2280}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   102,   3277,    102}, 0, {  -234,  -2280}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -101,   3072,   -101}, 0, {  -234,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -101,   3277,   -101}, 0, {  -234,   4258}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -101,   3277,    102}, 0, {   172,   4258}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -101,   3072,    102}, 0, {   172,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   102,   3072,   -101}, 0, {  -234,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   102,   3277,   -101}, 0, {  -234,  -2280}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -101,   3277,   -101}, 0, {   172,  -2280}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -101,   3072,   -101}, 0, {   172,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   102,   3072,   -101}, 0, {  -234,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07009AB0 - 0x07009AF0\nstatic const Vtx thi_seg7_vertex_07009AB0[] = {\n    {{{   410,   1229,   2048}, 0, { -1392,  -1462}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   410,   1024,   2253}, 0, { -1528,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   410,   1024,   2048}, 0, { -1392,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   410,   1229,   2253}, 0, { -1528,  -1462}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07009AF0 - 0x07009B30\nstatic const Vtx thi_seg7_vertex_07009AF0[] = {\n    {{{   410,   1024,   2253}, 0, {  2012,  12230}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   410,   1024,   2458}, 0, {  2012,  13252}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   614,   1024,   2458}, 0, {  3034,  13252}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   614,   1024,   2253}, 0, {  3034,  12230}, {0x00, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07009B30 - 0x07009B70\nstatic const Vtx thi_seg7_vertex_07009B30[] = {\n    {{{   614,   1024,   2253}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   410,   1024,   2253}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   410,   1229,   2253}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{   614,   1229,   2253}, 0, {     0,      0}, {0x00, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07009B70 - 0x07009C40\nstatic const Gfx thi_seg7_dl_07009B70[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_0900B800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(thi_seg7_vertex_07009740, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 4,  8,  7, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  9, 0x0,  9,  7,  8, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0, 11,  0, 12, 0x0),\n    gsSP2Triangles(12,  0, 13, 0x0, 11,  1,  0, 0x0),\n    gsSP1Triangle( 0,  2, 13, 0x0),\n    gsSPVertex(thi_seg7_vertex_07009820, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  6, 0x0),\n    gsSP2Triangles( 7,  6,  3, 0x0,  9,  8,  7, 0x0),\n    gsSP1Triangle( 0,  2, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009C40 - 0x07009CF8\nstatic const Gfx thi_seg7_dl_07009C40[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, thi_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(thi_seg7_vertex_070098D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(thi_seg7_vertex_070099C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(thi_seg7_vertex_07009AB0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009CF8 - 0x07009D30\nstatic const Gfx thi_seg7_dl_07009CF8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(thi_seg7_vertex_07009AF0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009D30 - 0x07009D50\nstatic const Gfx thi_seg7_dl_07009D30[] = {\n    gsSPVertex(thi_seg7_vertex_07009B30, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009D50 - 0x07009DF0\nconst Gfx thi_seg7_dl_07009D50[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(thi_seg7_dl_07009B70),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(thi_seg7_dl_07009C40),\n    gsSPDisplayList(thi_seg7_dl_07009CF8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(thi_seg7_dl_07009D30),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/thi/areas/3/4/model.inc.c",
    "content": "// 0x07009DF0 - 0x07009EB0\nstatic const Vtx thi_seg7_vertex_07009DF0[] = {\n    {{{ -2047,   2150,   2048}, 0, {  4056,   5076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -716,   1843,    717}, 0, {  1398,   2418}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   717,   1843,    717}, 0, { -1460,   2418}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2048,   2150,   2048}, 0, { -4118,   5076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -716,   1843,   -716}, 0, {  1398,   -440}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2047,   2150,  -2047}, 0, {  4056,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -101,   1843,      0}, 0, {   172,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   1843,    102}, 0, {     0,   1192}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   717,   1843,   -716}, 0, { -1460,   -440}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   102,   1843,      0}, 0, {  -234,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2048,   2150,  -2047}, 0, { -4118,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,   1843,   -101}, 0, {     0,    786}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07009EB0 - 0x07009F58\nstatic const Gfx thi_seg7_dl_07009EB0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(thi_seg7_vertex_07009DF0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  0,  5, 0x0,  4,  1,  0, 0x0),\n    gsSP2Triangles( 4,  6,  1, 0x0,  6,  7,  1, 0x0),\n    gsSP2Triangles( 1,  7,  2, 0x0,  8,  2,  9, 0x0),\n    gsSP2Triangles( 7,  9,  2, 0x0, 10,  3,  2, 0x0),\n    gsSP2Triangles(10,  2,  8, 0x0, 10,  4,  5, 0x0),\n    gsSP2Triangles(10,  8,  4, 0x0,  4,  8, 11, 0x0),\n    gsSP2Triangles( 8,  9, 11, 0x0,  4, 11,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009F58 - 0x07009FC8\nconst Gfx thi_seg7_dl_07009F58[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(thi_seg7_dl_07009EB0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/thi/areas/3/collision.inc.c",
    "content": "// 0x0700D444 - 0x0700DD50\nconst Collision thi_seg7_area_3_collision[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0xA0),\n    COL_VERTEX(-716, 1843, -716),\n    COL_VERTEX(-101, 1843, 0),\n    COL_VERTEX(0, 1843, -101),\n    COL_VERTEX(-716, 1843, 717),\n    COL_VERTEX(-2047, 2150, -2047),\n    COL_VERTEX(717, 1843, -716),\n    COL_VERTEX(0, 1843, 102),\n    COL_VERTEX(102, 1843, 0),\n    COL_VERTEX(717, 1843, 717),\n    COL_VERTEX(2048, 2150, -2047),\n    COL_VERTEX(2048, 2150, 2048),\n    COL_VERTEX(-2047, 2150, 2048),\n    COL_VERTEX(102, 3072, 102),\n    COL_VERTEX(102, 3277, 102),\n    COL_VERTEX(102, 3277, -101),\n    COL_VERTEX(102, 3482, -101),\n    COL_VERTEX(-101, 3277, 102),\n    COL_VERTEX(102, 3482, 102),\n    COL_VERTEX(-101, 3072, 102),\n    COL_VERTEX(-101, 3482, 102),\n    COL_VERTEX(102, 3072, -101),\n    COL_VERTEX(-101, 3482, -101),\n    COL_VERTEX(-101, 3277, -101),\n    COL_VERTEX(-101, 3072, -101),\n    COL_VERTEX(614, 1024, 2253),\n    COL_VERTEX(614, 1024, 2458),\n    COL_VERTEX(410, 1024, 2253),\n    COL_VERTEX(410, 1229, 2253),\n    COL_VERTEX(614, 1229, 2253),\n    COL_VERTEX(614, 1229, 2048),\n    COL_VERTEX(1229, -3071, 1024),\n    COL_VERTEX(819, -3071, 1434),\n    COL_VERTEX(614, -3071, 1434),\n    COL_VERTEX(410, -3071, 2048),\n    COL_VERTEX(410, -3071, 1024),\n    COL_VERTEX(1024, -3071, 819),\n    COL_VERTEX(1229, -3071, 614),\n    COL_VERTEX(1843, -3071, 410),\n    COL_VERTEX(1434, -3071, 0),\n    COL_VERTEX(1843, -3071, 0),\n    COL_VERTEX(1434, -3071, -818),\n    COL_VERTEX(1024, -3071, -1228),\n    COL_VERTEX(1434, -3071, -409),\n    COL_VERTEX(1024, -3071, -409),\n    COL_VERTEX(614, -3071, -818),\n    COL_VERTEX(614, -3071, -1023),\n    COL_VERTEX(-818, -3071, -1433),\n    COL_VERTEX(-409, 1024, -1023),\n    COL_VERTEX(-409, -3071, -1023),\n    COL_VERTEX(205, -3071, -1637),\n    COL_VERTEX(205, -3071, -1228),\n    COL_VERTEX(-1433, -3071, -2047),\n    COL_VERTEX(-1023, -3071, -1023),\n    COL_VERTEX(-204, -3071, -204),\n    COL_VERTEX(-818, -3071, -204),\n    COL_VERTEX(-818, -3071, -818),\n    COL_VERTEX(-818, 768, -818),\n    COL_VERTEX(-204, -3071, -613),\n    COL_VERTEX(-2047, -3071, 0),\n    COL_VERTEX(-1023, -3071, 0),\n    COL_VERTEX(-1023, -3071, 614),\n    COL_VERTEX(-204, 1434, 614),\n    COL_VERTEX(-204, -3071, 614),\n    COL_VERTEX(-818, 1434, 1024),\n    COL_VERTEX(-2047, -3071, 1024),\n    COL_VERTEX(0, 1434, 1024),\n    COL_VERTEX(0, -3071, 1024),\n    COL_VERTEX(614, 1229, 2458),\n    COL_VERTEX(410, 1024, 2458),\n    COL_VERTEX(410, 1229, 2458),\n    COL_VERTEX(410, 1229, 2048),\n    COL_VERTEX(819, 1024, 1434),\n    COL_VERTEX(614, 1024, 1434),\n    COL_VERTEX(1229, 1024, 1024),\n    COL_VERTEX(614, 1024, 2048),\n    COL_VERTEX(614, -3071, 2048),\n    COL_VERTEX(410, 1024, 2048),\n    COL_VERTEX(410, 1024, 1024),\n    COL_VERTEX(1024, 1024, 819),\n    COL_VERTEX(1229, 1024, 614),\n    COL_VERTEX(1434, 1024, 0),\n    COL_VERTEX(1843, 1024, 410),\n    COL_VERTEX(1843, 1024, 0),\n    COL_VERTEX(1434, 1024, -818),\n    COL_VERTEX(1434, 1024, -409),\n    COL_VERTEX(1024, 1024, -1228),\n    COL_VERTEX(1024, 1024, -409),\n    COL_VERTEX(614, 1024, -818),\n    COL_VERTEX(614, 1024, -1023),\n    COL_VERTEX(205, 1024, -1637),\n    COL_VERTEX(-818, 1024, -1433),\n    COL_VERTEX(205, 1024, -1228),\n    COL_VERTEX(-1433, 512, -2047),\n    COL_VERTEX(-1023, 512, -1023),\n    COL_VERTEX(-2047, 512, -818),\n    COL_VERTEX(-2047, -3071, -818),\n    COL_VERTEX(-818, 768, -204),\n    COL_VERTEX(-204, 768, -204),\n    COL_VERTEX(-204, 768, -613),\n    COL_VERTEX(-2047, 1024, 0),\n    COL_VERTEX(-1023, 1024, 0),\n    COL_VERTEX(-1023, 1024, 614),\n    COL_VERTEX(-2047, 1024, 614),\n    COL_VERTEX(-2047, -3071, 614),\n    COL_VERTEX(-818, -3071, 1024),\n    COL_VERTEX(-2047, 1434, 1024),\n    COL_VERTEX(-1023, 1434, 2048),\n    COL_VERTEX(-1023, -3071, 2048),\n    COL_VERTEX(0, 1741, 0),\n    COL_VERTEX(-71, 1812, 0),\n    COL_VERTEX(0, 1812, -71),\n    COL_VERTEX(0, 1812, 72),\n    COL_VERTEX(72, 1812, 0),\n    COL_VERTEX(-2047, 1536, -818),\n    COL_VERTEX(-1637, 512, -1228),\n    COL_VERTEX(-1637, 1536, -1228),\n    COL_VERTEX(-2047, 1536, -1228),\n    COL_VERTEX(-2047, 1434, 2048),\n    COL_VERTEX(-306, 2458, -306),\n    COL_VERTEX(-306, 2458, 307),\n    COL_VERTEX(-306, 2560, -306),\n    COL_VERTEX(307, 2458, -306),\n    COL_VERTEX(307, 2458, 307),\n    COL_VERTEX(-2047, 1331, -1740),\n    COL_VERTEX(-1740, 1331, -1740),\n    COL_VERTEX(512, 3072, -511),\n    COL_VERTEX(307, 2560, -306),\n    COL_VERTEX(-306, 2560, 307),\n    COL_VERTEX(307, 2560, 307),\n    COL_VERTEX(0, 2253, 0),\n    COL_VERTEX(-1842, 1331, -2047),\n    COL_VERTEX(-1842, 512, -2047),\n    COL_VERTEX(-1740, 512, -1740),\n    COL_VERTEX(-2047, 1331, -2047),\n    COL_VERTEX(512, 3072, 512),\n    COL_VERTEX(-511, 3072, 512),\n    COL_VERTEX(-511, 3072, -511),\n    COL_VERTEX(2048, -3071, 2048),\n    COL_VERTEX(2048, -3071, -2047),\n    COL_VERTEX(-2047, -3071, -2047),\n    COL_VERTEX(-2047, -3071, 2048),\n    COL_VERTEX(-2047, 512, -2047),\n    COL_VERTEX(-2047, 512, -1228),\n    COL_VERTEX(-2047, 512, -1740),\n    COL_VERTEX(717, 1812, -716),\n    COL_VERTEX(-716, 1812, -716),\n    COL_VERTEX(-716, 1812, 717),\n    COL_VERTEX(2048, 2120, -2047),\n    COL_VERTEX(-2047, 2120, -2047),\n    COL_VERTEX(-2047, 2120, 2048),\n    COL_VERTEX(717, 1812, 717),\n    COL_VERTEX(2048, 2120, 2048),\n    COL_VERTEX(2048, 2355, 2048),\n    COL_VERTEX(-2047, 2355, 2048),\n    COL_VERTEX(1024, 2867, 1024),\n    COL_VERTEX(2048, 2355, -2047),\n    COL_VERTEX(1024, 2867, -1023),\n    COL_VERTEX(-1023, 2867, 1024),\n    COL_VERTEX(-1023, 2867, -1023),\n    COL_VERTEX(-2047, 2355, -2047),\n    COL_TRI_INIT(SURFACE_DEFAULT, 116),\n    COL_TRI(12, 13, 14),\n    COL_TRI(0, 1, 2),\n    COL_TRI(3, 1, 0),\n    COL_TRI(4, 0, 5),\n    COL_TRI(4, 3, 0),\n    COL_TRI(5, 0, 2),\n    COL_TRI(3, 6, 1),\n    COL_TRI(2, 7, 5),\n    COL_TRI(8, 7, 6),\n    COL_TRI(8, 5, 7),\n    COL_TRI(4, 5, 9),\n    COL_TRI(5, 10, 9),\n    COL_TRI(5, 8, 10),\n    COL_TRI(3, 8, 6),\n    COL_TRI(10, 8, 3),\n    COL_TRI(4, 11, 3),\n    COL_TRI(10, 3, 11),\n    COL_TRI(13, 15, 14),\n    COL_TRI(16, 17, 13),\n    COL_TRI(18, 16, 13),\n    COL_TRI(18, 13, 12),\n    COL_TRI(16, 19, 17),\n    COL_TRI(19, 15, 17),\n    COL_TRI(13, 17, 15),\n    COL_TRI(19, 21, 15),\n    COL_TRI(14, 15, 21),\n    COL_TRI(12, 14, 20),\n    COL_TRI(14, 21, 22),\n    COL_TRI(20, 14, 22),\n    COL_TRI(20, 22, 23),\n    COL_TRI(22, 21, 19),\n    COL_TRI(23, 22, 16),\n    COL_TRI(22, 19, 16),\n    COL_TRI(23, 16, 18),\n    COL_TRI(24, 25, 67),\n    COL_TRI(25, 68, 69),\n    COL_TRI(25, 69, 67),\n    COL_TRI(26, 68, 25),\n    COL_TRI(27, 68, 26),\n    COL_TRI(27, 69, 68),\n    COL_TRI(28, 67, 69),\n    COL_TRI(28, 69, 27),\n    COL_TRI(24, 67, 28),\n    COL_TRI(29, 28, 27),\n    COL_TRI(29, 27, 70),\n    COL_TRI(26, 25, 24),\n    COL_TRI(30, 71, 31),\n    COL_TRI(31, 72, 32),\n    COL_TRI(31, 71, 72),\n    COL_TRI(35, 73, 30),\n    COL_TRI(30, 73, 71),\n    COL_TRI(32, 72, 74),\n    COL_TRI(32, 74, 75),\n    COL_TRI(33, 76, 77),\n    COL_TRI(33, 77, 34),\n    COL_TRI(34, 77, 78),\n    COL_TRI(34, 78, 35),\n    COL_TRI(35, 78, 73),\n    COL_TRI(41, 83, 40),\n    COL_TRI(36, 79, 80),\n    COL_TRI(36, 80, 38),\n    COL_TRI(37, 79, 36),\n    COL_TRI(37, 81, 79),\n    COL_TRI(38, 80, 82),\n    COL_TRI(38, 82, 39),\n    COL_TRI(39, 82, 81),\n    COL_TRI(39, 81, 37),\n    COL_TRI(40, 83, 84),\n    COL_TRI(40, 84, 42),\n    COL_TRI(41, 85, 83),\n    COL_TRI(42, 84, 86),\n    COL_TRI(42, 86, 43),\n    COL_TRI(43, 86, 87),\n    COL_TRI(43, 87, 44),\n    COL_TRI(44, 87, 88),\n    COL_TRI(44, 88, 45),\n    COL_TRI(45, 88, 85),\n    COL_TRI(45, 85, 41),\n    COL_TRI(46, 89, 49),\n    COL_TRI(47, 90, 46),\n    COL_TRI(46, 90, 89),\n    COL_TRI(49, 89, 91),\n    COL_TRI(49, 91, 50),\n    COL_TRI(50, 91, 47),\n    COL_TRI(50, 47, 48),\n    COL_TRI(48, 47, 46),\n    COL_TRI(51, 92, 93),\n    COL_TRI(51, 93, 52),\n    COL_TRI(52, 93, 94),\n    COL_TRI(58, 100, 59),\n    COL_TRI(52, 94, 95),\n    COL_TRI(53, 96, 54),\n    COL_TRI(54, 96, 56),\n    COL_TRI(54, 56, 55),\n    COL_TRI(53, 97, 96),\n    COL_TRI(55, 56, 57),\n    COL_TRI(56, 98, 57),\n    COL_TRI(57, 98, 97),\n    COL_TRI(57, 97, 53),\n    COL_TRI(58, 99, 100),\n    COL_TRI(64, 63, 104),\n    COL_TRI(59, 100, 101),\n    COL_TRI(59, 101, 60),\n    COL_TRI(60, 101, 102),\n    COL_TRI(60, 102, 103),\n    COL_TRI(61, 65, 66),\n    COL_TRI(62, 61, 66),\n    COL_TRI(63, 61, 104),\n    COL_TRI(61, 62, 104),\n    COL_TRI(66, 65, 107),\n    COL_TRI(64, 105, 63),\n    COL_TRI(65, 106, 107),\n    COL_TRI(108, 109, 110),\n    COL_TRI(108, 111, 109),\n    COL_TRI(108, 112, 111),\n    COL_TRI(108, 110, 112),\n    COL_TRI_INIT(SURFACE_HANGABLE, 16),\n    COL_TRI(144, 112, 110),\n    COL_TRI(110, 145, 144),\n    COL_TRI(110, 109, 145),\n    COL_TRI(146, 109, 111),\n    COL_TRI(146, 145, 109),\n    COL_TRI(147, 145, 148),\n    COL_TRI(145, 149, 148),\n    COL_TRI(147, 144, 145),\n    COL_TRI(145, 146, 149),\n    COL_TRI(149, 146, 150),\n    COL_TRI(111, 150, 146),\n    COL_TRI(111, 112, 150),\n    COL_TRI(112, 144, 150),\n    COL_TRI(149, 150, 151),\n    COL_TRI(147, 151, 150),\n    COL_TRI(147, 150, 144),\n    COL_TRI_INIT(SURFACE_DEATH_PLANE, 2),\n    COL_TRI(137, 138, 139),\n    COL_TRI(137, 139, 140),\n    COL_TRI_INIT(SURFACE_WALL_MISC, 10),\n    COL_TRI(76, 26, 24),\n    COL_TRI(114, 142, 116),\n    COL_TRI(114, 116, 115),\n    COL_TRI(143, 132, 124),\n    COL_TRI(143, 124, 123),\n    COL_TRI(70, 27, 26),\n    COL_TRI(70, 26, 76),\n    COL_TRI(74, 28, 29),\n    COL_TRI(76, 24, 74),\n    COL_TRI(74, 24, 28),\n    COL_TRI_INIT(SURFACE_HARD_NOT_SLIPPERY, 52),\n    COL_TRI(102, 101, 100),\n    COL_TRI(113, 114, 115),\n    COL_TRI(113, 115, 116),\n    COL_TRI(113, 94, 114),\n    COL_TRI(63, 65, 61),\n    COL_TRI(63, 106, 65),\n    COL_TRI(63, 117, 106),\n    COL_TRI(63, 105, 117),\n    COL_TRI(102, 100, 99),\n    COL_TRI(96, 97, 98),\n    COL_TRI(96, 98, 56),\n    COL_TRI(85, 84, 83),\n    COL_TRI(85, 86, 84),\n    COL_TRI(85, 87, 86),\n    COL_TRI(85, 88, 87),\n    COL_TRI(79, 82, 80),\n    COL_TRI(79, 81, 82),\n    COL_TRI(90, 91, 89),\n    COL_TRI(78, 71, 73),\n    COL_TRI(78, 72, 71),\n    COL_TRI(78, 77, 72),\n    COL_TRI(74, 77, 76),\n    COL_TRI(74, 72, 77),\n    COL_TRI(90, 47, 91),\n    COL_TRI(118, 126, 121),\n    COL_TRI(118, 120, 126),\n    COL_TRI(119, 120, 118),\n    COL_TRI(119, 127, 120),\n    COL_TRI(120, 127, 128),\n    COL_TRI(120, 128, 126),\n    COL_TRI(121, 126, 128),\n    COL_TRI(121, 128, 122),\n    COL_TRI(122, 128, 127),\n    COL_TRI(122, 127, 119),\n    COL_TRI(121, 122, 129),\n    COL_TRI(118, 121, 129),\n    COL_TRI(122, 119, 129),\n    COL_TRI(119, 118, 129),\n    COL_TRI(123, 124, 130),\n    COL_TRI(124, 131, 130),\n    COL_TRI(124, 132, 131),\n    COL_TRI(123, 130, 133),\n    COL_TRI(125, 12, 20),\n    COL_TRI(12, 134, 135),\n    COL_TRI(12, 135, 18),\n    COL_TRI(125, 134, 12),\n    COL_TRI(23, 18, 135),\n    COL_TRI(23, 135, 136),\n    COL_TRI(20, 23, 136),\n    COL_TRI(20, 136, 125),\n    COL_TRI(2, 6, 7),\n    COL_TRI(2, 1, 6),\n    COL_TRI_INIT(SURFACE_CAMERA_FREE_ROAM, 22),\n    COL_TRI(155, 158, 159),\n    COL_TRI(137, 74, 29),\n    COL_TRI(152, 137, 29),\n    COL_TRI(29, 70, 152),\n    COL_TRI(70, 153, 152),\n    COL_TRI(140, 153, 70),\n    COL_TRI(140, 70, 76),\n    COL_TRI(154, 152, 153),\n    COL_TRI(137, 152, 155),\n    COL_TRI(152, 156, 155),\n    COL_TRI(152, 154, 156),\n    COL_TRI(154, 153, 157),\n    COL_TRI(158, 153, 159),\n    COL_TRI(139, 153, 140),\n    COL_TRI(139, 159, 153),\n    COL_TRI(158, 157, 153),\n    COL_TRI(155, 156, 158),\n    COL_TRI(138, 159, 139),\n    COL_TRI(76, 33, 140),\n    COL_TRI(137, 155, 138),\n    COL_TRI(137, 75, 74),\n    COL_TRI(138, 155, 159),\n    COL_TRI_INIT(SURFACE_THI3_WALLKICK, 2),\n    COL_TRI(94, 92, 141),\n    COL_TRI(94, 93, 92),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/thi/areas/3/geo.inc.c",
    "content": "// 0x0E00079C\nconst GeoLayout thi_geo_00079C[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND_COLOR(0x0001),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 12800, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(16, 0, 2000, 6000, 0, 0, 0, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_TRANSPARENT, thi_seg7_dl_07007C20),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, thi_seg7_dl_07009670),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, thi_seg7_dl_07009D50),\n                    GEO_DISPLAY_LIST(LAYER_ALPHA, thi_seg7_dl_07009F58),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(0, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/thi/areas/3/macro.inc.c",
    "content": "// 0x0700E190 - 0x0700E228\nconst MacroObject thi_seg7_area_3_macro_objs[] = {\n    MACRO_OBJECT(/*preset*/ macro_red_coin,             /*yaw*/   0, /*pos*/  1038,  1122,   998),\n    MACRO_OBJECT(/*preset*/ macro_red_coin,             /*yaw*/   0, /*pos*/  1590,  1078,   160),\n    MACRO_OBJECT(/*preset*/ macro_red_coin,             /*yaw*/   0, /*pos*/  1038,  1112,  -823),\n    MACRO_OBJECT(/*preset*/ macro_red_coin,             /*yaw*/   0, /*pos*/  -238,  1122, -1319),\n    MACRO_OBJECT(/*preset*/ macro_red_coin,             /*yaw*/   0, /*pos*/  -523,   824,  -500),\n    MACRO_OBJECT(/*preset*/ macro_red_coin,             /*yaw*/   0, /*pos*/ -1838,  1068,   338),\n    MACRO_OBJECT(/*preset*/ macro_red_coin,             /*yaw*/   0, /*pos*/  -240,  1500,  1040),\n    MACRO_OBJECT(/*preset*/ macro_red_coin,             /*yaw*/   0, /*pos*/ -1914,  1360, -1909),\n    MACRO_OBJECT(/*preset*/ macro_1up,                  /*yaw*/   0, /*pos*/ -1920,  1540, -1040),\n    MACRO_OBJECT(/*preset*/ macro_blue_coin_switch,     /*yaw*/   0, /*pos*/ -1495,  1434,  1595),\n    MACRO_OBJECT(/*preset*/ macro_hidden_blue_coin,     /*yaw*/   0, /*pos*/  -540,  1500,  1240),\n    MACRO_OBJECT(/*preset*/ macro_hidden_blue_coin,     /*yaw*/   0, /*pos*/  -840,  1500,  1440),\n    MACRO_OBJECT(/*preset*/ macro_coin_line_horizontal, /*yaw*/  45, /*pos*/ -1200,  2200, -1200),\n    MACRO_OBJECT(/*preset*/ macro_coin_line_horizontal, /*yaw*/  45, /*pos*/  1200,  2200,  1200),\n    MACRO_OBJECT(/*preset*/ macro_fire_spitter,         /*yaw*/   0, /*pos*/  -224,  1456,   672),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/thi/geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"game/level_geo.h\"\n#include \"game/geo_misc.h\"\n#include \"game/camera.h\"\n#include \"game/moving_texture.h\"\n#include \"game/screen_transition.h\"\n#include \"game/paintings.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"levels/thi/header.h\"\n\n#include \"levels/thi/areas/1/6/geo.inc.c\"\n#include \"levels/thi/areas/1/7/geo.inc.c\"\n#include \"levels/thi/areas/1/geo.inc.c\"\n#include \"levels/thi/areas/2/geo.inc.c\"\n#include \"levels/thi/areas/3/geo.inc.c\"\n"
  },
  {
    "path": "levels/thi/header.h",
    "content": "#ifndef THI_HEADER_H\n#define THI_HEADER_H\n\n#include \"types.h\"\n#include \"game/moving_texture.h\"\n\n// geo\nextern const GeoLayout thi_geo_0005B0[];\nextern const GeoLayout thi_geo_0005C8[];\nextern const GeoLayout thi_geo_0005F0[];\nextern const GeoLayout thi_geo_000608[];\nextern const GeoLayout thi_geo_0006D4[];\nextern const GeoLayout thi_geo_00079C[];\n\n// leveldata\nextern const Gfx thi_seg7_dl_07005260[];\nextern const Gfx thi_seg7_dl_07006968[];\nextern const Gfx thi_seg7_dl_07007008[];\nextern const Gfx thi_seg7_dl_070072E8[];\nextern const Gfx thi_seg7_dl_070073C0[];\nextern const Gfx thi_seg7_dl_07007538[];\nextern const Gfx thi_seg7_dl_07007648[];\nextern const Gfx thi_seg7_dl_07007930[];\nextern const Gfx thi_seg7_dl_07007C20[];\nextern const Gfx thi_seg7_dl_07009670[];\nextern const Gfx thi_seg7_dl_07009D50[];\nextern const Gfx thi_seg7_dl_07009F58[];\nextern const Collision thi_seg7_area_1_collision[];\nextern const Collision thi_seg7_area_2_collision[];\nextern const Collision thi_seg7_area_3_collision[];\nextern const MacroObject thi_seg7_area_1_macro_objs[];\nextern const MacroObject thi_seg7_area_2_macro_objs[];\nextern const MacroObject thi_seg7_area_3_macro_objs[];\nextern const Collision thi_seg7_collision_top_trap[];\nextern const Trajectory thi_seg7_trajectory_koopa[];\nextern const struct MovtexQuadCollection thi_movtex_area1_water[];\nextern const struct MovtexQuadCollection thi_movtex_area2_water[];\n\n// script\nextern const LevelScript level_thi_entry[];\n\n#endif\n"
  },
  {
    "path": "levels/thi/level.yaml",
    "content": "# Tiny Huge Island\nshort-name: thi\nfull-name: Tiny Huge Island\ntexture-file: [\"/texture.inc.c\"]\narea-count: 3\nobjects: []\nshared-path: [\"/areas/2/\", \"/areas/1/\"]\n# loaded files\nskybox-bin: water\ntexture-bin: grass\neffects: false\nactor-bins: [group11, group14]\ncommon-bin: [common0]\n"
  },
  {
    "path": "levels/thi/leveldata.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"surface_terrains.h\"\n#include \"moving_texture_macros.h\"\n#include \"level_misc_macros.h\"\n#include \"macro_presets.h\"\n#include \"special_presets.h\"\n#include \"textures.h\"\n#include \"dialog_ids.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/thi/texture.inc.c\"\n#include \"levels/thi/areas/1/1/model.inc.c\" // Area 2 defines a share path to load these DLs as part of its geo script.\n#include \"levels/thi/areas/1/2/model.inc.c\"\n#include \"levels/thi/areas/1/3/model.inc.c\"\n#include \"levels/thi/areas/1/4/model.inc.c\"\n#include \"levels/thi/areas/1/5/model.inc.c\"\n#include \"levels/thi/areas/2/1/model.inc.c\" // This looks a little weird being here but look at the usage and it makes sense.\n#include \"levels/thi/areas/1/6/model.inc.c\"\n#include \"levels/thi/areas/1/7/model.inc.c\"\n#include \"levels/thi/areas/3/1/model.inc.c\"\n#include \"levels/thi/areas/3/2/model.inc.c\"\n#include \"levels/thi/areas/3/3/model.inc.c\"\n#include \"levels/thi/areas/3/4/model.inc.c\"\n#include \"levels/thi/areas/1/collision.inc.c\"\n#include \"levels/thi/areas/2/collision.inc.c\"\n#include \"levels/thi/areas/3/collision.inc.c\"\n#include \"levels/thi/areas/1/macro.inc.c\"\n#include \"levels/thi/areas/2/macro.inc.c\"\n#include \"levels/thi/areas/3/macro.inc.c\"\n#include \"levels/thi/areas/1/6/collision.inc.c\"\n#include \"levels/thi/areas/1/trajectory.inc.c\"\n#include \"levels/thi/areas/1/movtext.inc.c\"\n#include \"levels/thi/areas/2/movtext.inc.c\"\n"
  },
  {
    "path": "levels/thi/script.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"behavior_data.h\"\n#include \"model_ids.h\"\n#include \"seq_ids.h\"\n#include \"segment_symbols.h\"\n#include \"level_commands.h\"\n\n#include \"game/level_update.h\"\n\n#include \"levels/scripts.h\"\n\n#include \"actors/common1.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/thi/header.h\"\n\nstatic const LevelScript script_func_local_1[] = {\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_2[] = {\n    OBJECT_WITH_ACTS(/*model*/ MODEL_NONE,    /*pos*/     0, -700, -4500, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_4), /*bhv*/ bhvHiddenStar,          /*acts*/ ALL_ACTS),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_3[] = {\n    OBJECT_WITH_ACTS(/*model*/ MODEL_NONE,             /*pos*/ -1800,   800, -1500, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_5), /*bhv*/ bhvHiddenRedCoinStar, /*acts*/ ALL_ACTS),\n    OBJECT          (/*model*/ MODEL_WIGGLER_HEAD,     /*pos*/    17,  1843,   -62, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_6), /*bhv*/ bhvWigglerHead),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_4[] = {\n    OBJECT_WITH_ACTS(/*model*/ MODEL_KOOPA_WITH_SHELL, /*pos*/ -1900,  -511,  2400, /*angle*/ 0, -30, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_3) | BPARAM2(KOOPA_BP_KOOPA_THE_QUICK_THI), /*bhv*/ bhvKoopa,             /*acts*/ ACT_3),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_NONE,             /*pos*/  7400, -1537, -6300, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvKoopaRaceEndpoint, /*acts*/ ACT_3),\n    OBJECT          (/*model*/ MODEL_NONE,             /*pos*/ -6556, -2969,  6565, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(GOOMBA_TRIPLET_SPAWNER_BP_EXTRA_GOOMBAS(0) | GOOMBA_SIZE_HUGE), /*bhv*/ bhvGoombaTripletSpawner),\n    OBJECT          (/*model*/ MODEL_GOOMBA,           /*pos*/  6517, -2559,  4327, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(GOOMBA_SIZE_HUGE), /*bhv*/ bhvGoomba),\n    OBJECT          (/*model*/ MODEL_PIRANHA_PLANT,    /*pos*/ -6336, -2047, -3861, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_1) | BPARAM2(0x01), /*bhv*/ bhvFirePiranhaPlant),\n    OBJECT          (/*model*/ MODEL_PIRANHA_PLANT,    /*pos*/ -5740, -2047, -6578, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_1) | BPARAM2(0x01), /*bhv*/ bhvFirePiranhaPlant),\n    OBJECT          (/*model*/ MODEL_PIRANHA_PLANT,    /*pos*/ -6481, -2047, -5998, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_1) | BPARAM2(0x01), /*bhv*/ bhvFirePiranhaPlant),\n    OBJECT          (/*model*/ MODEL_PIRANHA_PLANT,    /*pos*/ -5577, -2047, -4961, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_1) | BPARAM2(0x01), /*bhv*/ bhvFirePiranhaPlant),\n    OBJECT          (/*model*/ MODEL_PIRANHA_PLANT,    /*pos*/ -6865, -2047, -4568, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_1) | BPARAM2(0x01), /*bhv*/ bhvFirePiranhaPlant),\n    OBJECT          (/*model*/ MODEL_NONE,             /*pos*/ -4413,   204, -2140, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(BBALL_BP_STYPE_THI_LARGE), /*bhv*/ bhvTHIBowlingBallSpawner),\n    OBJECT          (/*model*/ MODEL_BUBBA,            /*pos*/ -6241, -3300,  -716, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvBubba),\n    OBJECT          (/*model*/ MODEL_BUBBA,            /*pos*/  1624, -3300,  8142, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvBubba),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_5[] = {\n    OBJECT(/*model*/ MODEL_THI_HUGE_ISLAND_TOP, /*pos*/     0, 3891, -1533, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvTHIHugeIslandTop),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_6[] = {\n    OBJECT(/*model*/ MODEL_THI_TINY_ISLAND_TOP, /*pos*/     0, 1167,  -460, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvTHITinyIslandTop),\n    OBJECT(/*model*/ MODEL_NONE,                /*pos*/ -1382,   80,  -649, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(BBALL_BP_STYPE_THI_SMALL), /*bhv*/ bhvTHIBowlingBallSpawner),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_7[] = {\n    OBJECT(/*model*/ MODEL_THI_WARP_PIPE, /*pos*/  6656, -1536, -5632, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(WARP_NODE_32), /*bhv*/ bhvWarpPipe),\n    OBJECT(/*model*/ MODEL_THI_WARP_PIPE, /*pos*/ -5888, -2048, -5888, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(WARP_NODE_33), /*bhv*/ bhvWarpPipe),\n    OBJECT(/*model*/ MODEL_THI_WARP_PIPE, /*pos*/ -3072,   512, -3840, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(WARP_NODE_34), /*bhv*/ bhvWarpPipe),\n    WARP_NODE(/*id*/ WARP_NODE_32, /*destLevel*/ LEVEL_THI, /*destArea*/ 2, /*destNode*/ WARP_NODE_32, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_33, /*destLevel*/ LEVEL_THI, /*destArea*/ 2, /*destNode*/ WARP_NODE_33, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_34, /*destLevel*/ LEVEL_THI, /*destArea*/ 2, /*destNode*/ WARP_NODE_34, /*flags*/ WARP_NO_CHECKPOINT),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_8[] = {\n    OBJECT(/*model*/ MODEL_THI_WARP_PIPE, /*pos*/  1997, -461, -1690, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(WARP_NODE_32), /*bhv*/ bhvWarpPipe),\n    OBJECT(/*model*/ MODEL_THI_WARP_PIPE, /*pos*/ -1766, -614, -1766, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(WARP_NODE_33), /*bhv*/ bhvWarpPipe),\n    OBJECT(/*model*/ MODEL_THI_WARP_PIPE, /*pos*/  -922,  154, -1152, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(WARP_NODE_34), /*bhv*/ bhvWarpPipe),\n    WARP_NODE(/*id*/ WARP_NODE_32, /*destLevel*/ LEVEL_THI, /*destArea*/ 1, /*destNode*/ WARP_NODE_32, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_33, /*destLevel*/ LEVEL_THI, /*destArea*/ 1, /*destNode*/ WARP_NODE_33, /*flags*/ WARP_NO_CHECKPOINT),\n    WARP_NODE(/*id*/ WARP_NODE_34, /*destLevel*/ LEVEL_THI, /*destArea*/ 1, /*destNode*/ WARP_NODE_34, /*flags*/ WARP_NO_CHECKPOINT),\n    RETURN(),\n};\n\nconst LevelScript level_thi_entry[] = {\n    INIT_LEVEL(),\n    LOAD_MIO0        (/*seg*/ 0x07, _thi_segment_7SegmentRomStart, _thi_segment_7SegmentRomEnd),\n    LOAD_MIO0_TEXTURE(/*seg*/ 0x09, _grass_mio0SegmentRomStart, _grass_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x0A, _water_skybox_mio0SegmentRomStart, _water_skybox_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x05, _group11_mio0SegmentRomStart, _group11_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0C, _group11_geoSegmentRomStart,  _group11_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x06, _group14_mio0SegmentRomStart, _group14_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0D, _group14_geoSegmentRomStart,  _group14_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x08, _common0_mio0SegmentRomStart, _common0_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0F, _common0_geoSegmentRomStart,  _common0_geoSegmentRomEnd),\n    ALLOC_LEVEL_POOL(),\n    MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),\n    JUMP_LINK(script_func_global_1),\n    JUMP_LINK(script_func_global_12),\n    JUMP_LINK(script_func_global_15),\n    LOAD_MODEL_FROM_GEO(MODEL_THI_BUBBLY_TREE,     bubbly_tree_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_03,   thi_geo_0005F0),\n    LOAD_MODEL_FROM_GEO(MODEL_THI_WARP_PIPE,       warp_pipe_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_THI_HUGE_ISLAND_TOP, thi_geo_0005B0),\n    LOAD_MODEL_FROM_GEO(MODEL_THI_TINY_ISLAND_TOP, thi_geo_0005C8),\n\n    AREA(/*index*/ 1, thi_geo_000608),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ -7372, -1969,  7373, /*angle*/ 0, 149, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvSpinAirborneWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/   410,  -512,   922, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0B), /*bhv*/ bhvInstantActiveWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/   410,  -512,   717, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(5)  | BPARAM2(WARP_NODE_0C), /*bhv*/ bhvWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/     0,  3170, -1570, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(10) | BPARAM2(WARP_NODE_0D), /*bhv*/ bhvWarp),\n        WARP_NODE(/*id*/ WARP_NODE_0A,      /*destLevel*/ LEVEL_THI,    /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_0B,      /*destLevel*/ LEVEL_THI,    /*destArea*/ 1, /*destNode*/ WARP_NODE_0B, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_0C,      /*destLevel*/ LEVEL_THI,    /*destArea*/ 3, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_0D,      /*destLevel*/ LEVEL_THI,    /*destArea*/ 3, /*destNode*/ WARP_NODE_0B, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_SUCCESS, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_37, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH,   /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_69, /*flags*/ WARP_NO_CHECKPOINT),\n        JUMP_LINK(script_func_local_7),\n        JUMP_LINK(script_func_local_1),\n        JUMP_LINK(script_func_local_5),\n        JUMP_LINK(script_func_local_4),\n        TERRAIN(/*terrainData*/ thi_seg7_area_1_collision),\n        MACRO_OBJECTS(/*objList*/ thi_seg7_area_1_macro_objs),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0000, /*seq*/ SEQ_LEVEL_GRASS),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_GRASS),\n    END_AREA(),\n\n    AREA(/*index*/ 2, thi_geo_0006D4),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ -2211,  110,  2212, /*angle*/ 0,  149, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvSpinAirborneWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/   280, -767, -4180, /*angle*/ 0,    0, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0B), /*bhv*/ bhvFadingWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ -1638,    0, -1988, /*angle*/ 0, -126, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0C), /*bhv*/ bhvFadingWarp),\n        WARP_NODE(/*id*/ WARP_NODE_0A,      /*destLevel*/ LEVEL_THI,    /*destArea*/ 2, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_0B,      /*destLevel*/ LEVEL_THI,    /*destArea*/ 2, /*destNode*/ WARP_NODE_0C, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_0C,      /*destLevel*/ LEVEL_THI,    /*destArea*/ 2, /*destNode*/ WARP_NODE_0B, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_SUCCESS, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_33, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH,   /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_65, /*flags*/ WARP_NO_CHECKPOINT),\n        JUMP_LINK(script_func_local_8),\n        JUMP_LINK(script_func_local_2),\n        JUMP_LINK(script_func_local_6),\n        TERRAIN(/*terrainData*/ thi_seg7_area_2_collision),\n        MACRO_OBJECTS(/*objList*/ thi_seg7_area_2_macro_objs),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0000, /*seq*/ SEQ_LEVEL_GRASS),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_GRASS),\n    END_AREA(),\n\n    AREA(/*index*/ 3, thi_geo_00079C),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ 512, 1024, 2150, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvInstantActiveWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/   0, 3277,    0, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0B), /*bhv*/ bhvAirborneWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ 512, 1024, 2355, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(5) | BPARAM2(WARP_NODE_0C), /*bhv*/ bhvWarp),\n        WARP_NODE(/*id*/ WARP_NODE_0A,      /*destLevel*/ LEVEL_THI,    /*destArea*/ 3, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_0B,      /*destLevel*/ LEVEL_THI,    /*destArea*/ 3, /*destNode*/ WARP_NODE_0B, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_0C,      /*destLevel*/ LEVEL_THI,    /*destArea*/ 1, /*destNode*/ WARP_NODE_0B, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_SUCCESS, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_37, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH,   /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_69, /*flags*/ WARP_NO_CHECKPOINT),\n        JUMP_LINK(script_func_local_3),\n        TERRAIN(/*terrainData*/ thi_seg7_area_3_collision),\n        MACRO_OBJECTS(/*objList*/ thi_seg7_area_3_macro_objs),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0004, /*seq*/ SEQ_LEVEL_UNDERGROUND),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_GRASS),\n    END_AREA(),\n\n    FREE_LEVEL_POOL(),\n    MARIO_POS(/*area*/ 1, /*yaw*/ 149, /*pos*/ -7372, -2969, 7373),\n    CALL(/*arg*/ 0, /*func*/ lvl_init_or_update),\n    CALL_LOOP(/*arg*/ 1, /*func*/ lvl_init_or_update),\n    CLEAR_LEVEL(),\n    SLEEP_BEFORE_EXIT(/*frames*/ 1),\n    EXIT(),\n};\n"
  },
  {
    "path": "levels/thi/texture.inc.c",
    "content": "// 0x07000000 - 0x07000002\nALIGNED8 static const Texture thi_seg7_texture_07000000[] = {\n#include \"levels/thi/0.rgba16.inc.c\"\n};\n\n// 0x07000800 - 0x07000802\nALIGNED8 static const Texture thi_seg7_texture_07000800[] = {\n#include \"levels/thi/1.rgba16.inc.c\"\n};\n"
  },
  {
    "path": "levels/totwc/areas/1/1/model.inc.c",
    "content": "// 0x07002800 - 0x07002900\nstatic const Vtx totwc_seg7_vertex_07002800[] = {\n    {{{  3686,  -5119,   3686}, 0, {   990,    990}, {0xfe, 0xff, 0xcb, 0xff}}},\n    {{{  3686,   1024,   3686}, 0, {   990,  -6674}, {0xfe, 0xff, 0xcb, 0xff}}},\n    {{{  4506,   1024,   3686}, 0, {     0,  -6674}, {0xfe, 0xff, 0xcb, 0xff}}},\n    {{{  4506,  -5119,   3686}, 0, {     0,    990}, {0xfe, 0xff, 0xcb, 0xff}}},\n    {{{  4506,  -5119,  -4505}, 0, { -2074,    990}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{  4506,   1024,  -3685}, 0, { -1052,  -6676}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{  4506,  -5119,  -3685}, 0, { -1052,    990}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{  4506,   1024,  -4505}, 0, { -2074,  -6676}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{  3686,  -5119,  -3685}, 0, {   990,    990}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{  3686,   1024,  -4505}, 0, {     0,  -6674}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{  3686,  -5119,  -4505}, 0, {     0,    990}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{  3686,   1024,  -3685}, 0, {   990,  -6674}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{ -3685,  -5119,   4506}, 0, {   990,    990}, {0x50, 0x86, 0xa3, 0xff}}},\n    {{{ -3685,   1024,   4506}, 0, {   990,  -6674}, {0x50, 0x86, 0xa3, 0xff}}},\n    {{{ -4505,  -5119,   4506}, 0, {     0,    990}, {0x50, 0x86, 0xa3, 0xff}}},\n    {{{ -4505,   1024,   4506}, 0, {     0,  -6674}, {0x50, 0x86, 0xa3, 0xff}}},\n};\n\n// 0x07002900 - 0x07002A00\nstatic const Vtx totwc_seg7_vertex_07002900[] = {\n    {{{ -3685,  -5119,   3686}, 0, {  8144,    990}, {0x93, 0xce, 0xd5, 0xff}}},\n    {{{ -3685,   1024,   3686}, 0, {  8144,  -6676}, {0x93, 0xce, 0xd5, 0xff}}},\n    {{{ -3685,  -5119,   4506}, 0, {  9166,    990}, {0x93, 0xce, 0xd5, 0xff}}},\n    {{{ -3685,   1024,   4506}, 0, {  9166,  -6676}, {0x93, 0xce, 0xd5, 0xff}}},\n    {{{ -4505,  -5119,   4506}, 0, {  9166,    990}, {0x93, 0xce, 0xd5, 0xff}}},\n    {{{ -4505,   1024,   4506}, 0, {  9166,  -6676}, {0x93, 0xce, 0xd5, 0xff}}},\n    {{{ -4505,  -5119,   3686}, 0, {  8144,    990}, {0x93, 0xce, 0xd5, 0xff}}},\n    {{{ -4505,   1024,   3686}, 0, {  8144,  -6676}, {0x93, 0xce, 0xd5, 0xff}}},\n    {{{ -4505,  -5119,   3686}, 0, {     0,    990}, {0xc5, 0xf8, 0xff, 0xff}}},\n    {{{ -4505,   1024,   3686}, 0, {     0,  -6674}, {0xc5, 0xf8, 0xff, 0xff}}},\n    {{{ -3685,  -5119,   3686}, 0, {   990,    990}, {0xc5, 0xf8, 0xff, 0xff}}},\n    {{{ -3685,   1024,   3686}, 0, {   990,  -6674}, {0xc5, 0xf8, 0xff, 0xff}}},\n    {{{ -4505,  -5119,  -4505}, 0, { 11210,    990}, {0xc1, 0xdd, 0xff, 0xff}}},\n    {{{ -4505,   1024,  -4505}, 0, { 11210,  -6674}, {0xc1, 0xdd, 0xff, 0xff}}},\n    {{{ -3685,   1024,  -4505}, 0, { 10188,  -6674}, {0xc1, 0xdd, 0xff, 0xff}}},\n    {{{ -3685,  -5119,  -4505}, 0, { 10188,    990}, {0xc1, 0xdd, 0xff, 0xff}}},\n};\n\n// 0x07002A00 - 0x07002B00\nstatic const Vtx totwc_seg7_vertex_07002A00[] = {\n    {{{  3686,  -5119,  -4505}, 0, {   990,    990}, {0xdd, 0xff, 0xc8, 0xff}}},\n    {{{  4506,   1024,  -4505}, 0, {     0,  -6674}, {0xdd, 0xff, 0xc8, 0xff}}},\n    {{{  4506,  -5119,  -4505}, 0, {     0,    990}, {0xdd, 0xff, 0xc8, 0xff}}},\n    {{{  3686,   1024,  -4505}, 0, {   990,  -6674}, {0xdd, 0xff, 0xc8, 0xff}}},\n    {{{  4506,  -5119,   4506}, 0, {     0,    990}, {0xa6, 0xa1, 0x6f, 0xff}}},\n    {{{  4506,   1024,   4506}, 0, {     0,  -6674}, {0xa6, 0xa1, 0x6f, 0xff}}},\n    {{{  3686,   1024,   4506}, 0, {   990,  -6674}, {0xa6, 0xa1, 0x6f, 0xff}}},\n    {{{  3686,  -5119,   4506}, 0, {   990,    990}, {0xa6, 0xa1, 0x6f, 0xff}}},\n    {{{ -3685,  -5119,  -3685}, 0, {   990,    990}, {0x65, 0x7b, 0x97, 0xff}}},\n    {{{ -4505,   1024,  -3685}, 0, {     0,  -6674}, {0x65, 0x7b, 0x97, 0xff}}},\n    {{{ -4505,  -5119,  -3685}, 0, {     0,    990}, {0x65, 0x7b, 0x97, 0xff}}},\n    {{{ -3685,   1024,  -3685}, 0, {   990,  -6674}, {0x65, 0x7b, 0x97, 0xff}}},\n    {{{  4506,  -5119,  -3685}, 0, {     0,    990}, {0x95, 0x9e, 0x7b, 0xff}}},\n    {{{  3686,   1024,  -3685}, 0, {   990,  -6674}, {0x95, 0x9e, 0x7b, 0xff}}},\n    {{{  3686,  -5119,  -3685}, 0, {   990,    990}, {0x95, 0x9e, 0x7b, 0xff}}},\n    {{{  4506,   1024,  -3685}, 0, {     0,  -6674}, {0x95, 0x9e, 0x7b, 0xff}}},\n};\n\n// 0x07002B00 - 0x07002C00\nstatic const Vtx totwc_seg7_vertex_07002B00[] = {\n    {{{ -3685,  -5119,  -4505}, 0, { -2074,    990}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{ -3685,   1024,  -4505}, 0, { -2074,  -6676}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{ -3685,   1024,  -3685}, 0, { -1052,  -6676}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{ -3685,  -5119,  -3685}, 0, { -1052,    990}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{ -4505,  -5119,  -3685}, 0, { -1052,    990}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{ -4505,   1024,  -3685}, 0, { -1052,  -6676}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{ -4505,   1024,  -4505}, 0, { -2074,  -6676}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{ -4505,  -5119,  -4505}, 0, { -2074,    990}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{  4506,  -5119,   3686}, 0, {  8144,    990}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{  4506,   1024,   4506}, 0, {  9166,  -6676}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{  4506,  -5119,   4506}, 0, {  9166,    990}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{  4506,   1024,   3686}, 0, {  8144,  -6676}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{  3686,  -5119,   4506}, 0, {  9166,    990}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{  3686,   1024,   4506}, 0, {  9166,  -6676}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{  3686,   1024,   3686}, 0, {  8144,  -6676}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{  3686,  -5119,   3686}, 0, {  8144,    990}, {0xcd, 0xc4, 0x97, 0xff}}},\n};\n\n// 0x07002C00 - 0x07002CE0\nstatic const Vtx totwc_seg7_vertex_07002C00[] = {\n    {{{ -4402,   2355,   3789}, 0, {   480,    224}, {0x5e, 0x94, 0xdd, 0xff}}},\n    {{{ -3788,   2355,   3789}, 0, {  2012,    224}, {0x5e, 0x94, 0xdd, 0xff}}},\n    {{{ -4607,   2048,   3584}, 0, {     0,    990}, {0x5e, 0x94, 0xdd, 0xff}}},\n    {{{ -3583,   2048,   3584}, 0, {  2524,    990}, {0x5e, 0x94, 0xdd, 0xff}}},\n    {{{  3789,   2355,   4403}, 0, {  2012,    224}, {0xce, 0x16, 0x35, 0xff}}},\n    {{{  4096,   3994,   4096}, 0, {  1246,  -3864}, {0xce, 0x16, 0x35, 0xff}}},\n    {{{  3789,   2355,   3789}, 0, {   480,    224}, {0xce, 0x16, 0x35, 0xff}}},\n    {{{  3584,   2048,   4608}, 0, {     0,    990}, {0xce, 0x16, 0x35, 0xff}}},\n    {{{  4403,   2355,   4403}, 0, {  2012,    224}, {0xce, 0x16, 0x35, 0xff}}},\n    {{{  3789,   2355,   4403}, 0, {   478,    224}, {0xce, 0x16, 0x35, 0xff}}},\n    {{{  4608,   2048,   4608}, 0, {  2524,    990}, {0xce, 0x16, 0x35, 0xff}}},\n    {{{ -3583,   2048,  -3583}, 0, {     0,    990}, {0x00, 0xd2, 0xc2, 0xff}}},\n    {{{ -3583,   2048,  -4607}, 0, {  2524,    990}, {0x00, 0xd2, 0xc2, 0xff}}},\n    {{{ -3788,   2355,  -4402}, 0, {  2012,    224}, {0x00, 0xd2, 0xc2, 0xff}}},\n};\n\n// 0x07002CE0 - 0x07002DD0\nstatic const Vtx totwc_seg7_vertex_07002CE0[] = {\n    {{{ -4095,   3994,  -4095}, 0, {  -286,  -2842}, {0x00, 0xd2, 0xc2, 0xff}}},\n    {{{ -3788,   2355,  -4402}, 0, { -1052,   1244}, {0x00, 0xd2, 0xc2, 0xff}}},\n    {{{ -4402,   2355,  -4402}, 0, {   480,   1244}, {0x00, 0xd2, 0xc2, 0xff}}},\n    {{{ -4402,   2355,  -3788}, 0, {  2012,    224}, {0x00, 0xd2, 0xc2, 0xff}}},\n    {{{ -4402,   2355,  -4402}, 0, {   480,    224}, {0x00, 0xd2, 0xc2, 0xff}}},\n    {{{ -4607,   2048,  -4607}, 0, {     0,    990}, {0x00, 0xd2, 0xc2, 0xff}}},\n    {{{ -4607,   2048,  -3583}, 0, {  2522,    990}, {0x00, 0xd2, 0xc2, 0xff}}},\n    {{{ -3583,   2048,  -3583}, 0, {     0,    990}, {0x00, 0xd2, 0xc2, 0xff}}},\n    {{{ -3788,   2355,  -4402}, 0, {  2012,    224}, {0x00, 0xd2, 0xc2, 0xff}}},\n    {{{ -3788,   2355,  -3788}, 0, {   478,    224}, {0x00, 0xd2, 0xc2, 0xff}}},\n    {{{ -4402,   2355,  -3788}, 0, {  2012,    224}, {0x00, 0xaf, 0xad, 0xff}}},\n    {{{ -4095,   3994,  -4095}, 0, {  1246,  -3864}, {0x00, 0xaf, 0xad, 0xff}}},\n    {{{ -4402,   2355,  -4402}, 0, {   480,    224}, {0x00, 0xaf, 0xad, 0xff}}},\n    {{{ -3788,   2355,  -4402}, 0, {  2012,    224}, {0x00, 0xaf, 0xad, 0xff}}},\n    {{{ -3788,   2355,  -3788}, 0, {   478,    224}, {0x00, 0xaf, 0xad, 0xff}}},\n};\n\n// 0x07002DD0 - 0x07002EB0\nstatic const Vtx totwc_seg7_vertex_07002DD0[] = {\n    {{{ -4607,   2048,  -3583}, 0, {   990,   2010}, {0x00, 0xaf, 0xad, 0xff}}},\n    {{{ -3583,   2048,  -3583}, 0, { -1562,   2010}, {0x00, 0xaf, 0xad, 0xff}}},\n    {{{ -3788,   2355,  -3788}, 0, { -1052,   1244}, {0x00, 0xaf, 0xad, 0xff}}},\n    {{{ -4402,   2355,  -3788}, 0, {   480,   1244}, {0x00, 0xaf, 0xad, 0xff}}},\n    {{{ -4095,   3994,  -4095}, 0, {  -286,  -2842}, {0x00, 0x84, 0x7d, 0xff}}},\n    {{{ -4402,   2355,  -3788}, 0, {   480,   1244}, {0x00, 0x84, 0x7d, 0xff}}},\n    {{{ -3788,   2355,  -3788}, 0, { -1052,   1244}, {0x00, 0x84, 0x7d, 0xff}}},\n    {{{ -3583,   2048,  -4607}, 0, { -1562,   2010}, {0x47, 0xf9, 0xd7, 0xff}}},\n    {{{ -4402,   2355,  -4402}, 0, {   480,   1244}, {0x47, 0xf9, 0xd7, 0xff}}},\n    {{{ -3788,   2355,  -4402}, 0, { -1052,   1244}, {0x47, 0xf9, 0xd7, 0xff}}},\n    {{{ -4607,   2048,  -4607}, 0, {   990,   2010}, {0x47, 0xf9, 0xd7, 0xff}}},\n    {{{  4096,   3994,   4096}, 0, {  1246,  -3864}, {0x88, 0x00, 0x1d, 0xff}}},\n    {{{  3789,   2355,   4403}, 0, {   480,    224}, {0x88, 0x00, 0x1d, 0xff}}},\n    {{{  4403,   2355,   4403}, 0, {  2012,    224}, {0x88, 0x00, 0x1d, 0xff}}},\n};\n\n// 0x07002EB0 - 0x07002FA0\nstatic const Vtx totwc_seg7_vertex_07002EB0[] = {\n    {{{  4608,   2048,   3584}, 0, {     0,    990}, {0xff, 0x59, 0x7d, 0xff}}},\n    {{{  3584,   2048,   3584}, 0, {  2524,    990}, {0xff, 0x59, 0x7d, 0xff}}},\n    {{{  3789,   2355,   3789}, 0, {  2012,    224}, {0xff, 0x59, 0x7d, 0xff}}},\n    {{{  4403,   2355,   3789}, 0, {   480,    224}, {0xff, 0x59, 0x7d, 0xff}}},\n    {{{  4096,   3994,   4096}, 0, {  1246,  -3864}, {0xff, 0x34, 0x57, 0xff}}},\n    {{{  4403,   2355,   3789}, 0, {   480,    224}, {0xff, 0x34, 0x57, 0xff}}},\n    {{{  3789,   2355,   3789}, 0, {  2012,    224}, {0xff, 0x34, 0x57, 0xff}}},\n    {{{  4608,   2048,   4608}, 0, {     0,    990}, {0xff, 0x34, 0x57, 0xff}}},\n    {{{  4608,   2048,   3584}, 0, {  2524,    990}, {0xff, 0x34, 0x57, 0xff}}},\n    {{{  4403,   2355,   4403}, 0, {   480,    224}, {0xff, 0x34, 0x57, 0xff}}},\n    {{{  4403,   2355,   3789}, 0, {  2012,    224}, {0xff, 0x34, 0x57, 0xff}}},\n    {{{  3789,   2355,   4403}, 0, {  2012,    224}, {0xff, 0x34, 0x57, 0xff}}},\n    {{{  3789,   2355,   3789}, 0, {   480,    224}, {0xff, 0x34, 0x57, 0xff}}},\n    {{{  3584,   2048,   3584}, 0, {     0,    990}, {0xff, 0x34, 0x57, 0xff}}},\n    {{{  3584,   2048,   4608}, 0, {  2522,    990}, {0xff, 0x34, 0x57, 0xff}}},\n};\n\n// 0x07002FA0 - 0x07003080\nstatic const Vtx totwc_seg7_vertex_07002FA0[] = {\n    {{{  4608,   2048,  -3583}, 0, {     0,    990}, {0xf6, 0x8f, 0x00, 0xff}}},\n    {{{  4608,   2048,  -4607}, 0, {  2524,    990}, {0xf6, 0x8f, 0x00, 0xff}}},\n    {{{  4403,   2355,  -3788}, 0, {   478,    224}, {0xf6, 0x8f, 0x00, 0xff}}},\n    {{{  4403,   2355,  -4402}, 0, {  2012,    224}, {0xf6, 0x8f, 0x00, 0xff}}},\n    {{{  3789,   2355,  -3788}, 0, {  2012,    224}, {0xf6, 0x8f, 0x00, 0xff}}},\n    {{{  3789,   2355,  -4402}, 0, {   480,    224}, {0xf6, 0x8f, 0x00, 0xff}}},\n    {{{  3584,   2048,  -4607}, 0, {     0,    990}, {0xf6, 0x8f, 0x00, 0xff}}},\n    {{{  3584,   2048,  -3583}, 0, {  2524,    990}, {0xf6, 0x8f, 0x00, 0xff}}},\n    {{{  4096,   3994,  -4095}, 0, {  1246,  -3864}, {0xff, 0xa2, 0x18, 0xff}}},\n    {{{  4403,   2355,  -4402}, 0, {   478,    224}, {0xff, 0xa2, 0x18, 0xff}}},\n    {{{  3789,   2355,  -4402}, 0, {  2012,    224}, {0xff, 0xa2, 0x18, 0xff}}},\n    {{{  4096,   3994,  -4095}, 0, {  1246,  -3864}, {0xab, 0x55, 0x0b, 0xff}}},\n    {{{  3789,   2355,  -3788}, 0, {   480,    224}, {0xab, 0x55, 0x0b, 0xff}}},\n    {{{  4403,   2355,  -3788}, 0, {  2012,    224}, {0xab, 0x55, 0x0b, 0xff}}},\n};\n\n// 0x07003080 - 0x07003160\nstatic const Vtx totwc_seg7_vertex_07003080[] = {\n    {{{  4403,   2355,   3789}, 0, {  2012,    224}, {0xdf, 0x1f, 0x3f, 0xff}}},\n    {{{  4096,   3994,   4096}, 0, {  1246,  -3864}, {0xdf, 0x1f, 0x3f, 0xff}}},\n    {{{  4403,   2355,   4403}, 0, {   480,    224}, {0xdf, 0x1f, 0x3f, 0xff}}},\n    {{{  4403,   2355,  -4402}, 0, {  2012,    224}, {0xff, 0x7f, 0x00, 0xff}}},\n    {{{  4096,   3994,  -4095}, 0, {  1246,  -3864}, {0xff, 0x7f, 0x00, 0xff}}},\n    {{{  4403,   2355,  -3788}, 0, {   478,    224}, {0xff, 0x7f, 0x00, 0xff}}},\n    {{{  3789,   2355,  -3788}, 0, {  2012,    224}, {0xff, 0x7f, 0x00, 0xff}}},\n    {{{  3789,   2355,  -4402}, 0, {   480,    224}, {0xff, 0x7f, 0x00, 0xff}}},\n    {{{ -4402,   2355,   4403}, 0, {   480,    224}, {0x49, 0x79, 0xbf, 0xff}}},\n    {{{ -4402,   2355,   3789}, 0, {  2012,    224}, {0x49, 0x79, 0xbf, 0xff}}},\n    {{{ -4607,   2048,   3584}, 0, {  2524,    990}, {0x49, 0x79, 0xbf, 0xff}}},\n    {{{ -3788,   2355,   3789}, 0, {  2012,    224}, {0x49, 0x79, 0xbf, 0xff}}},\n    {{{ -4402,   2355,   3789}, 0, {   480,    224}, {0x49, 0x79, 0xbf, 0xff}}},\n    {{{ -4095,   3994,   4096}, 0, {  1246,  -3864}, {0x49, 0x79, 0xbf, 0xff}}},\n};\n\n// 0x07003160 - 0x07003260\nstatic const Vtx totwc_seg7_vertex_07003160[] = {\n    {{{ -3583,   2048,   4608}, 0, {  2522,    990}, {0x49, 0x79, 0xbf, 0xff}}},\n    {{{ -3583,   2048,   3584}, 0, {     0,    990}, {0x49, 0x79, 0xbf, 0xff}}},\n    {{{ -3788,   2355,   4403}, 0, {  2012,    224}, {0x49, 0x79, 0xbf, 0xff}}},\n    {{{ -3788,   2355,   3789}, 0, {   480,    224}, {0x49, 0x79, 0xbf, 0xff}}},\n    {{{ -4402,   2355,   4403}, 0, {   480,    224}, {0x49, 0x79, 0xbf, 0xff}}},\n    {{{ -4607,   2048,   3584}, 0, {  2524,    990}, {0x49, 0x79, 0xbf, 0xff}}},\n    {{{ -4607,   2048,   4608}, 0, {     0,    990}, {0x49, 0x79, 0xbf, 0xff}}},\n    {{{  4608,   2048,  -4607}, 0, {     0,    990}, {0xff, 0xaa, 0x00, 0xff}}},\n    {{{  3789,   2355,  -4402}, 0, {  2012,    224}, {0xff, 0xaa, 0x00, 0xff}}},\n    {{{  4403,   2355,  -4402}, 0, {   478,    224}, {0xff, 0xaa, 0x00, 0xff}}},\n    {{{  3584,   2048,  -4607}, 0, {  2524,    990}, {0xff, 0xaa, 0x00, 0xff}}},\n    {{{ -3788,   2355,   3789}, 0, {   480,    224}, {0x3f, 0x6a, 0xbf, 0xff}}},\n    {{{ -4095,   3994,   4096}, 0, {  1246,  -3864}, {0x3f, 0x6a, 0xbf, 0xff}}},\n    {{{ -3788,   2355,   4403}, 0, {  2012,    224}, {0x3f, 0x6a, 0xbf, 0xff}}},\n    {{{ -4402,   2355,   4403}, 0, {   480,    224}, {0x3f, 0x6a, 0xbf, 0xff}}},\n    {{{ -4402,   2355,   3789}, 0, {  2012,    224}, {0x3f, 0x6a, 0xbf, 0xff}}},\n};\n\n// 0x07003260 - 0x07003350\nstatic const Vtx totwc_seg7_vertex_07003260[] = {\n    {{{ -3788,   2355,   4403}, 0, {   478,    224}, {0x3f, 0x6a, 0xbf, 0xff}}},\n    {{{ -4402,   2355,   4403}, 0, {  2012,    224}, {0x3f, 0x6a, 0xbf, 0xff}}},\n    {{{ -3583,   2048,   4608}, 0, {     0,    990}, {0x3f, 0x6a, 0xbf, 0xff}}},\n    {{{ -4607,   2048,   4608}, 0, {  2524,    990}, {0x3f, 0x6a, 0xbf, 0xff}}},\n    {{{ -4402,   2355,   4403}, 0, {  2012,    224}, {0x3f, 0x55, 0xbf, 0xff}}},\n    {{{ -3788,   2355,   4403}, 0, {   480,    224}, {0x3f, 0x55, 0xbf, 0xff}}},\n    {{{ -4095,   3994,   4096}, 0, {  1246,  -3864}, {0x3f, 0x55, 0xbf, 0xff}}},\n    {{{  3584,   2048,  -3583}, 0, {     0,    990}, {0xc8, 0x64, 0x00, 0xff}}},\n    {{{  4608,   2048,  -3583}, 0, {  2524,    990}, {0xc8, 0x64, 0x00, 0xff}}},\n    {{{  4403,   2355,  -3788}, 0, {  2012,    224}, {0xc8, 0x64, 0x00, 0xff}}},\n    {{{  3789,   2355,  -3788}, 0, {   480,    224}, {0xc8, 0x64, 0x00, 0xff}}},\n    {{{ -3583,   2048,   4608}, 0, {   138,  -2246}, {0x00, 0x00, 0x5d, 0xff}}},\n    {{{ -4607,   2048,   4608}, 0, {   480,  -2246}, {0x00, 0x00, 0x5d, 0xff}}},\n    {{{ -3583,   2048,   3584}, 0, {   138,  -1906}, {0x00, 0x00, 0x5d, 0xff}}},\n    {{{ -4607,   2048,   3584}, 0, {   480,  -1906}, {0x00, 0x00, 0x5d, 0xff}}},\n};\n\n// 0x07003350 - 0x07003410\nstatic const Vtx totwc_seg7_vertex_07003350[] = {\n    {{{  3584,   2048,   3584}, 0, {   138,  -1906}, {0x50, 0x00, 0x00, 0xff}}},\n    {{{  4608,   2048,   3584}, 0, {   480,  -1906}, {0x50, 0x00, 0x00, 0xff}}},\n    {{{  4608,   2048,   4608}, 0, {   480,  -2246}, {0x50, 0x00, 0x00, 0xff}}},\n    {{{  3584,   2048,   4608}, 0, {   138,  -2246}, {0x50, 0x00, 0x00, 0xff}}},\n    {{{ -3583,   2048,  -3583}, 0, { -2244,    478}, {0x00, 0x35, 0x35, 0xff}}},\n    {{{ -4607,   2048,  -4607}, 0, { -2586,    820}, {0x00, 0x35, 0x35, 0xff}}},\n    {{{ -3583,   2048,  -4607}, 0, { -2244,    820}, {0x00, 0x35, 0x35, 0xff}}},\n    {{{ -4607,   2048,  -3583}, 0, { -2586,    478}, {0x00, 0x35, 0x35, 0xff}}},\n    {{{  4608,   2048,  -3583}, 0, {   480,    478}, {0x50, 0x28, 0x00, 0xff}}},\n    {{{  3584,   2048,  -4607}, 0, {   138,    820}, {0x50, 0x28, 0x00, 0xff}}},\n    {{{  4608,   2048,  -4607}, 0, {   480,    820}, {0x50, 0x28, 0x00, 0xff}}},\n    {{{  3584,   2048,  -3583}, 0, {   138,    478}, {0x50, 0x28, 0x00, 0xff}}},\n};\n\n// 0x07003410 - 0x070034F0\nstatic const Vtx totwc_seg7_vertex_07003410[] = {\n    {{{ -1223,  -1842,    917}, 0, {  2024,   -506}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{ -1513,  -1842,    627}, 0, {  3020,   -506}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{ -1513,  -2457,    627}, 0, {  3020,    990}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{ -1223,  -2047,    917}, 0, {  2024,     -8}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  -626,  -2457,   1514}, 0, {     0,    990}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  -916,  -2047,   1224}, 0, {   966,     -8}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  -916,  -1842,   1224}, 0, {   966,   -506}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  -626,  -1842,   1514}, 0, {     0,   -506}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{   625,  -2457,  -1514}, 0, {  3026,    990}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{   627,  -1842,  -1513}, 0, {  3020,   -506}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{   917,  -1842,  -1223}, 0, {  2024,   -506}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{   917,  -2047,  -1223}, 0, {  2024,     -8}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  1224,  -2047,   -916}, 0, {   966,     -8}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  1514,  -2457,   -626}, 0, {     0,    990}, {0x9b, 0x51, 0x20, 0xff}}},\n};\n\n// 0x070034F0 - 0x070035E0\nstatic const Vtx totwc_seg7_vertex_070034F0[] = {\n    {{{   808,  -2047,  -1114}, 0, {  2024,     -8}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{   591,  -1842,  -1332}, 0, {  2772,   -506}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{   591,  -2047,  -1332}, 0, {  2772,     -8}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  1224,  -2047,   -916}, 0, {   966,     -8}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  1514,  -1842,   -626}, 0, {     0,   -506}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  1514,  -2457,   -626}, 0, {     0,    990}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  1224,  -1842,   -916}, 0, {   966,   -506}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  -773,  -2047,  -1151}, 0, {  3374,     -8}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  -882,  -1842,  -1259}, 0, {  3638,   -506}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  -882,  -2047,  -1259}, 0, {  3638,     -8}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  -773,  -1842,  -1151}, 0, {  3374,   -506}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  -216,  -2047,  -1513}, 0, {  2020,     -8}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  -216,  -1842,  -1513}, 0, {  2020,   -506}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  -216,  -1842,  -1359}, 0, {  2020,   -506}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  -216,  -2047,  -1359}, 0, {  2020,     -8}, {0x9b, 0x51, 0x20, 0xff}}},\n};\n\n// 0x070035E0 - 0x070036D0\nstatic const Vtx totwc_seg7_vertex_070035E0[] = {\n    {{{  1260,  -2047,    880}, 0, {   848,    -24}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  1150,  -1842,    773}, 0, {   854,   -520}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  1150,  -2047,    773}, 0, {   854,    -22}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{   808,  -2047,  -1114}, 0, {  2024,     -8}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{   808,  -1842,  -1114}, 0, {  2024,   -506}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{   591,  -1842,  -1332}, 0, {  2772,   -506}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  1333,  -2047,   -590}, 0, {   218,     -8}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  1333,  -1842,   -590}, 0, {   218,   -506}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  1115,  -1842,   -807}, 0, {   966,   -506}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  1115,  -2047,   -807}, 0, {   966,     -8}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  1360,  -2047,    217}, 0, {   966,     -8}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  1360,  -1842,    217}, 0, {   966,   -506}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  1514,  -1842,    217}, 0, {   966,   -506}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  1514,  -2047,    217}, 0, {   966,     -8}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  1260,  -1842,    880}, 0, {   850,   -522}, {0x9b, 0x51, 0x20, 0xff}}},\n};\n\n// 0x070036D0 - 0x070037C0\nstatic const Vtx totwc_seg7_vertex_070036D0[] = {\n    {{{ -1332,  -2047,    591}, 0, {  2772,     -8}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{ -1114,  -1842,    808}, 0, {  2024,   -506}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{ -1114,  -2047,    808}, 0, {  2024,     -8}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{   774,  -2047,   1152}, 0, {  2152,    -20}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{   883,  -1842,   1260}, 0, {  2154,   -518}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{   883,  -2047,   1260}, 0, {  2152,    -20}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{   774,  -1842,   1152}, 0, {  2152,   -518}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  -807,  -2047,   1115}, 0, {   966,     -8}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  -590,  -1842,   1333}, 0, {   218,   -506}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  -590,  -2047,   1333}, 0, {   218,     -8}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  -807,  -1842,   1115}, 0, {   966,   -506}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  -216,  -2047,   1360}, 0, {  2020,     -8}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  -216,  -1842,   1360}, 0, {  2020,   -506}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  -216,  -1842,   1514}, 0, {  2020,   -506}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  -216,  -2047,   1514}, 0, {  2020,     -8}, {0x9b, 0x51, 0x20, 0xff}}},\n};\n\n// 0x070037C0 - 0x070038B0\nstatic const Vtx totwc_seg7_vertex_070037C0[] = {\n    {{{   470,  -5119,  -1134}, 0, {  2638,   7468}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{   470,  -2866,  -1134}, 0, {  2638,   1986}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  1135,  -2866,   -469}, 0, {   350,   1986}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{ -1332,  -2047,    591}, 0, {  2772,     -8}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{ -1332,  -1842,    591}, 0, {  2772,   -506}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{ -1114,  -1842,    808}, 0, {  2024,   -506}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{ -1259,  -2047,   -879}, 0, {  2146,     -2}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{ -1151,  -1842,   -771}, 0, {  2148,   -502}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{ -1151,  -2047,   -771}, 0, {  2148,     -2}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{ -1259,  -1842,   -879}, 0, {  2148,   -500}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  -469,  -5119,   1135}, 0, {   350,   7468}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  -469,  -2866,   1135}, 0, {   350,   1986}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{ -1134,  -2866,    470}, 0, {  2638,   1986}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{ -1134,  -5119,    470}, 0, {  2638,   7468}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  1135,  -5119,   -469}, 0, {   350,   7468}, {0x9b, 0x51, 0x20, 0xff}}},\n};\n\n// 0x070038B0 - 0x070039B0\nstatic const Vtx totwc_seg7_vertex_070038B0[] = {\n    {{{   591,  -2047,  -1332}, 0, {    52,     -8}, {0x84, 0x42, 0x23, 0xff}}},\n    {{{   591,  -1842,  -1332}, 0, {    52,   -506}, {0x84, 0x42, 0x23, 0xff}}},\n    {{{   523,  -1842,  -1361}, 0, {   218,   -506}, {0x84, 0x42, 0x23, 0xff}}},\n    {{{   523,  -2047,  -1361}, 0, {   218,     -8}, {0x84, 0x42, 0x23, 0xff}}},\n    {{{ -1359,  -2047,    525}, 0, {   218,     -8}, {0x84, 0x42, 0x23, 0xff}}},\n    {{{ -1332,  -1842,    591}, 0, {    56,   -506}, {0x84, 0x42, 0x23, 0xff}}},\n    {{{ -1332,  -2047,    591}, 0, {    56,     -8}, {0x84, 0x42, 0x23, 0xff}}},\n    {{{ -1359,  -1842,    525}, 0, {   218,   -506}, {0x84, 0x42, 0x23, 0xff}}},\n    {{{  -216,  -1842,   1514}, 0, {   966,   -506}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{  -626,  -2457,   1514}, 0, {     0,    990}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{  -216,  -2047,   1514}, 0, {   966,     -8}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{  -626,  -1842,   1514}, 0, {     0,   -506}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{   629,  -2457,   1514}, 0, {  3026,    990}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{   219,  -2047,   1515}, 0, {  2028,     -8}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{   219,  -1842,   1515}, 0, {  2028,   -506}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{   627,  -1842,   1514}, 0, {  3020,   -506}, {0x7d, 0x3e, 0x1c, 0xff}}},\n};\n\n// 0x070039B0 - 0x07003AB0\nstatic const Vtx totwc_seg7_vertex_070039B0[] = {\n    {{{  1514,  -2047,    217}, 0, {   966,     -8}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{  1514,  -2457,    627}, 0, {     0,    990}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{  1514,  -2457,   -626}, 0, {  3020,    990}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{  1514,  -2047,   -216}, 0, {  2024,     -8}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{  1514,  -1842,   -626}, 0, {  3020,   -506}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{  1514,  -1842,   -216}, 0, {  2024,   -506}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{   523,  -2047,  -1361}, 0, {   218,     -8}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{   217,  -1842,  -1359}, 0, {   962,   -506}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{   217,  -2047,  -1359}, 0, {   962,     -8}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{  1360,  -1842,   -216}, 0, {  2024,   -506}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{  1360,  -2047,   -216}, 0, {  2024,     -8}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{  1514,  -1842,    217}, 0, {   966,   -506}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{  1514,  -1842,    627}, 0, {     0,   -506}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{  -216,  -2047,  -1359}, 0, {  2020,     -8}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{  -216,  -1842,  -1359}, 0, {  2020,   -506}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{  -524,  -1842,  -1359}, 0, {  2768,   -506}, {0x7d, 0x3e, 0x1c, 0xff}}},\n};\n\n// 0x07003AB0 - 0x07003BB0\nstatic const Vtx totwc_seg7_vertex_07003AB0[] = {\n    {{{  -216,  -2047,  -1359}, 0, {  2020,     -8}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{  -524,  -1842,  -1359}, 0, {  2768,   -506}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{  -524,  -2047,  -1359}, 0, {  2768,     -8}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{ -1359,  -2047,   -216}, 0, {  2024,     -8}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{ -1513,  -1842,   -216}, 0, {  2024,   -506}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{ -1513,  -2047,   -216}, 0, {  2024,     -8}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{   523,  -2047,  -1361}, 0, {   218,     -8}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{   523,  -1842,  -1361}, 0, {   218,   -506}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{   217,  -1842,  -1359}, 0, {   962,   -506}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{ -1359,  -2047,    217}, 0, {   966,     -8}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{ -1359,  -1842,    525}, 0, {   218,   -506}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{ -1359,  -2047,    525}, 0, {   218,     -8}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{ -1359,  -1842,    217}, 0, {   966,   -506}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{ -1359,  -2047,   -524}, 0, {  2772,     -8}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{ -1359,  -1842,   -524}, 0, {  2772,   -506}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{ -1359,  -1842,   -216}, 0, {  2024,   -506}, {0x7d, 0x3e, 0x1c, 0xff}}},\n};\n\n// 0x07003BB0 - 0x07003CB0\nstatic const Vtx totwc_seg7_vertex_07003BB0[] = {\n    {{{   470,  -5119,   1135}, 0, {   346,   7468}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{   470,  -2866,   1135}, 0, {   346,   1986}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{  -469,  -2866,   1135}, 0, {  2636,   1986}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{  -469,  -5119,   1135}, 0, {  2636,   7468}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{  1135,  -5119,   -469}, 0, {  2638,   7468}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{  1135,  -2866,    470}, 0, {   350,   1986}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{  1135,  -5119,    470}, 0, {   350,   7468}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{  1135,  -2866,   -469}, 0, {  2638,   1986}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{  1360,  -2047,   -521}, 0, {  2936,     -8}, {0xad, 0x5b, 0x2c, 0xff}}},\n    {{{  1360,  -1842,   -521}, 0, {  2936,   -506}, {0xad, 0x5b, 0x2c, 0xff}}},\n    {{{  1333,  -1842,   -590}, 0, {  2772,   -506}, {0xad, 0x5b, 0x2c, 0xff}}},\n    {{{  1333,  -2047,   -590}, 0, {  2772,     -8}, {0xad, 0x5b, 0x2c, 0xff}}},\n    {{{  -590,  -2047,   1333}, 0, {  2928,     -8}, {0xad, 0x5b, 0x2c, 0xff}}},\n    {{{  -524,  -1842,   1360}, 0, {  2768,   -506}, {0xad, 0x5b, 0x2c, 0xff}}},\n    {{{  -524,  -2047,   1360}, 0, {  2768,     -8}, {0xad, 0x5b, 0x2c, 0xff}}},\n    {{{  -590,  -1842,   1333}, 0, {  2928,   -506}, {0xad, 0x5b, 0x2c, 0xff}}},\n};\n\n// 0x07003CB0 - 0x07003DB0\nstatic const Vtx totwc_seg7_vertex_07003CB0[] = {\n    {{{ -1513,  -1842,   -216}, 0, {  2024,   -506}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{ -1513,  -1842,   -626}, 0, {  3020,   -506}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{ -1513,  -2457,   -626}, 0, {  3020,    990}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{ -1513,  -2047,   -216}, 0, {  2024,     -8}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{ -1513,  -2457,    627}, 0, {     0,    990}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{ -1513,  -2047,    217}, 0, {   966,     -8}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{ -1513,  -1842,    217}, 0, {   966,   -506}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{ -1513,  -1842,    627}, 0, {     0,   -506}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{  -628,  -2457,  -1513}, 0, {  3022,    990}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{  -216,  -2047,  -1513}, 0, {  2020,     -8}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{   217,  -2047,  -1513}, 0, {   962,     -8}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{   625,  -2457,  -1514}, 0, {     0,    990}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{  -626,  -1842,  -1513}, 0, {  3016,   -506}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{  -216,  -1842,  -1513}, 0, {  2020,   -506}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{   627,  -1842,  -1513}, 0, {   -34,   -506}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{   217,  -1842,  -1513}, 0, {   962,   -506}, {0xc3, 0x67, 0x2b, 0xff}}},\n};\n\n// 0x07003DB0 - 0x07003EB0\nstatic const Vtx totwc_seg7_vertex_07003DB0[] = {\n    {{{   217,  -2047,  -1359}, 0, {   962,     -8}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{   217,  -1842,  -1513}, 0, {   962,   -506}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{   217,  -2047,  -1513}, 0, {   962,     -8}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{   217,  -1842,  -1359}, 0, {   962,   -506}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{  1360,  -2047,   -216}, 0, {  2024,     -8}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{  1360,  -1842,   -216}, 0, {  2024,   -506}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{  1360,  -1842,   -521}, 0, {  2766,   -506}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{  1360,  -2047,   -521}, 0, {  2766,     -8}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{  1360,  -2047,    525}, 0, {   218,     -8}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{  1360,  -1842,    525}, 0, {   218,   -506}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{  1360,  -1842,    217}, 0, {   966,   -506}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{  1360,  -2047,    217}, 0, {   966,     -8}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{   219,  -2047,   1362}, 0, {   958,     -8}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{   219,  -1842,   1362}, 0, {   958,   -506}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{   525,  -1842,   1360}, 0, {   214,   -506}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{   525,  -2047,   1360}, 0, {   214,     -8}, {0xc3, 0x67, 0x2b, 0xff}}},\n};\n\n// 0x07003EB0 - 0x07003FB0\nstatic const Vtx totwc_seg7_vertex_07003EB0[] = {\n    {{{   219,  -2047,   1515}, 0, {   958,     -8}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{   219,  -1842,   1362}, 0, {   958,   -506}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{   219,  -2047,   1362}, 0, {   958,     -8}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{   219,  -1842,   1515}, 0, {   958,   -506}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{  -524,  -2047,   1360}, 0, {  2768,     -8}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{  -216,  -1842,   1360}, 0, {  2020,   -506}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{  -216,  -2047,   1360}, 0, {  2020,     -8}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{  -524,  -1842,   1360}, 0, {  2768,   -506}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{  -916,  -2047,   1224}, 0, {   966,     -8}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{  -807,  -1842,   1115}, 0, {   966,   -506}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{  -807,  -2047,   1115}, 0, {   966,     -8}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{  -916,  -1842,   1224}, 0, {   966,   -506}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{ -1134,  -5119,    470}, 0, {   350,   7468}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{ -1134,  -2866,   -469}, 0, {  2638,   1986}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{ -1134,  -5119,   -469}, 0, {  2638,   7468}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{ -1134,  -2866,    470}, 0, {   350,   1986}, {0xc3, 0x67, 0x2b, 0xff}}},\n};\n\n// 0x07003FB0 - 0x070040A0\nstatic const Vtx totwc_seg7_vertex_07003FB0[] = {\n    {{{  -469,  -5119,  -1134}, 0, {  2636,   7468}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{   470,  -2866,  -1134}, 0, {   346,   1986}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{   470,  -5119,  -1134}, 0, {   346,   7468}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{  -469,  -2866,  -1134}, 0, {  2636,   1986}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{  1333,  -2047,    591}, 0, {   224,    -24}, {0xcf, 0x6f, 0x28, 0xff}}},\n    {{{  1360,  -1842,    525}, 0, {    64,   -522}, {0xcf, 0x6f, 0x28, 0xff}}},\n    {{{  1360,  -2047,    525}, 0, {    64,    -24}, {0xcf, 0x6f, 0x28, 0xff}}},\n    {{{  1333,  -1842,    591}, 0, {   226,   -522}, {0xcf, 0x6f, 0x28, 0xff}}},\n    {{{   525,  -2047,   1360}, 0, {  2940,    -18}, {0xcf, 0x6f, 0x28, 0xff}}},\n    {{{   593,  -1842,   1333}, 0, {  2776,   -516}, {0xcf, 0x6f, 0x28, 0xff}}},\n    {{{   593,  -2047,   1333}, 0, {  2774,    -18}, {0xcf, 0x6f, 0x28, 0xff}}},\n    {{{   525,  -1842,   1360}, 0, {  2940,   -516}, {0xcf, 0x6f, 0x28, 0xff}}},\n    {{{  1150,  -2047,    773}, 0, {   854,    -22}, {0xe4, 0x87, 0x39, 0xff}}},\n    {{{  1333,  -1842,    591}, 0, {   226,   -522}, {0xe4, 0x87, 0x39, 0xff}}},\n    {{{  1333,  -2047,    591}, 0, {   224,    -24}, {0xe4, 0x87, 0x39, 0xff}}},\n};\n\n// 0x070040A0 - 0x07004190\nstatic const Vtx totwc_seg7_vertex_070040A0[] = {\n    {{{ -1513,  -2457,   -626}, 0, {  3016,    996}, {0xe4, 0x87, 0x39, 0xff}}},\n    {{{ -1259,  -2047,   -879}, 0, {  2146,     -2}, {0xe4, 0x87, 0x39, 0xff}}},\n    {{{  -882,  -2047,  -1259}, 0, {   842,     -4}, {0xe4, 0x87, 0x39, 0xff}}},\n    {{{  -628,  -2457,  -1513}, 0, {     0,    990}, {0xe4, 0x87, 0x39, 0xff}}},\n    {{{ -1259,  -1842,   -879}, 0, {  2148,   -500}, {0xe4, 0x87, 0x39, 0xff}}},\n    {{{ -1513,  -1842,   -626}, 0, {  3020,   -498}, {0xe4, 0x87, 0x39, 0xff}}},\n    {{{  -882,  -1842,  -1259}, 0, {   844,   -504}, {0xe4, 0x87, 0x39, 0xff}}},\n    {{{  -626,  -1842,  -1513}, 0, {     0,   -506}, {0xe4, 0x87, 0x39, 0xff}}},\n    {{{  1115,  -2047,   -807}, 0, {   966,     -8}, {0xe4, 0x87, 0x39, 0xff}}},\n    {{{  1115,  -1842,   -807}, 0, {   966,   -506}, {0xe4, 0x87, 0x39, 0xff}}},\n    {{{  1224,  -1842,   -916}, 0, {   966,   -506}, {0xe4, 0x87, 0x39, 0xff}}},\n    {{{  1224,  -2047,   -916}, 0, {   966,     -8}, {0xe4, 0x87, 0x39, 0xff}}},\n    {{{ -1134,  -5119,   -469}, 0, {  2620,   7474}, {0xe4, 0x87, 0x39, 0xff}}},\n    {{{ -1134,  -2866,   -469}, 0, {  2634,   1990}, {0xe4, 0x87, 0x39, 0xff}}},\n    {{{  -469,  -2866,  -1134}, 0, {   344,   1984}, {0xe4, 0x87, 0x39, 0xff}}},\n};\n\n// 0x07004190 - 0x07004270\nstatic const Vtx totwc_seg7_vertex_07004190[] = {\n    {{{  1150,  -2047,    773}, 0, {   854,    -22}, {0xe4, 0x87, 0x39, 0xff}}},\n    {{{  1150,  -1842,    773}, 0, {   854,   -520}, {0xe4, 0x87, 0x39, 0xff}}},\n    {{{  1333,  -1842,    591}, 0, {   226,   -522}, {0xe4, 0x87, 0x39, 0xff}}},\n    {{{   593,  -2047,   1333}, 0, {  2774,    -18}, {0xe4, 0x87, 0x39, 0xff}}},\n    {{{   774,  -1842,   1152}, 0, {  2152,   -518}, {0xe4, 0x87, 0x39, 0xff}}},\n    {{{   774,  -2047,   1152}, 0, {  2152,    -20}, {0xe4, 0x87, 0x39, 0xff}}},\n    {{{   593,  -1842,   1333}, 0, {  2776,   -516}, {0xe4, 0x87, 0x39, 0xff}}},\n    {{{ -1513,  -2047,    217}, 0, {   966,     -8}, {0xe4, 0x87, 0x39, 0xff}}},\n    {{{ -1513,  -1842,    217}, 0, {   966,   -506}, {0xe4, 0x87, 0x39, 0xff}}},\n    {{{ -1359,  -1842,    217}, 0, {   966,   -506}, {0xe4, 0x87, 0x39, 0xff}}},\n    {{{ -1359,  -2047,    217}, 0, {   966,     -8}, {0xe4, 0x87, 0x39, 0xff}}},\n    {{{ -1134,  -5119,   -469}, 0, {  2620,   7474}, {0xe4, 0x87, 0x39, 0xff}}},\n    {{{  -469,  -2866,  -1134}, 0, {   344,   1984}, {0xe4, 0x87, 0x39, 0xff}}},\n    {{{  -469,  -5119,  -1134}, 0, {   330,   7468}, {0xe4, 0x87, 0x39, 0xff}}},\n};\n\n// 0x07004270 - 0x07004370\nstatic const Vtx totwc_seg7_vertex_07004270[] = {\n    {{{  1514,  -1842,    627}, 0, {  3020,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{  1514,  -1842,    217}, 0, {  2024,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{  1360,  -1842,    217}, 0, {  2024,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{  1360,  -1842,   -521}, 0, {   222,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{  1514,  -1842,   -216}, 0, {   966,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{  1514,  -1842,   -626}, 0, {     0,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{  1360,  -1842,   -216}, 0, {   966,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{  1333,  -1842,   -590}, 0, {  2772,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{  1224,  -1842,   -916}, 0, {  2024,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{  1115,  -1842,   -807}, 0, {  2024,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{  1514,  -1842,   -626}, 0, {  3020,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{  1360,  -1842,   -521}, 0, {  2936,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{  1360,  -1842,    525}, 0, {  2772,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{  1150,  -1842,    773}, 0, {   854,   -520}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{  1514,  -1842,    627}, 0, {   -22,   -524}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{  1333,  -1842,    591}, 0, {   226,   -522}, {0xf6, 0xa1, 0x5b, 0xff}}},\n};\n\n// 0x07004370 - 0x07004450\nstatic const Vtx totwc_seg7_vertex_07004370[] = {\n    {{{  1150,  -1842,    773}, 0, {   854,   -520}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{  1260,  -1842,    880}, 0, {   850,   -522}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{  1514,  -1842,    627}, 0, {   -22,   -524}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{  1360,  -1842,    525}, 0, {    64,   -522}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{  1333,  -1842,    591}, 0, {   226,   -522}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{   627,  -1842,   1514}, 0, {  3030,   -516}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{   883,  -1842,   1260}, 0, {  2154,   -518}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{   774,  -1842,   1152}, 0, {  2152,   -518}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{   593,  -1842,   1333}, 0, {  2776,   -516}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{   525,  -1842,   1360}, 0, {  2940,   -516}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{   219,  -1842,   1362}, 0, {  2028,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{   219,  -1842,   1515}, 0, {  2028,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{   627,  -1842,   1514}, 0, {  3020,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{   525,  -1842,   1360}, 0, {  2772,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n};\n\n// 0x07004450 - 0x07004530\nstatic const Vtx totwc_seg7_vertex_07004450[] = {\n    {{{ -1359,  -1842,   -524}, 0, {   218,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{ -1513,  -1842,   -216}, 0, {   966,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{ -1359,  -1842,   -216}, 0, {   966,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{ -1513,  -1842,   -626}, 0, {     0,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{ -1151,  -1842,   -771}, 0, {  2148,   -502}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{ -1513,  -1842,   -626}, 0, {  3020,   -498}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{ -1332,  -1842,   -590}, 0, {  2772,   -500}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{ -1259,  -1842,   -879}, 0, {  2148,   -500}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{ -1359,  -1842,   -524}, 0, {  2932,   -500}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{ -1359,  -1842,    217}, 0, {   966,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{ -1513,  -1842,    217}, 0, {   966,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{ -1513,  -1842,    627}, 0, {     0,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{ -1359,  -1842,    525}, 0, {   218,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{ -1332,  -1842,    591}, 0, {    56,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n};\n\n// 0x07004530 - 0x07004630\nstatic const Vtx totwc_seg7_vertex_07004530[] = {\n    {{{  -626,  -1842,   1514}, 0, {     0,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{  -216,  -1842,   1514}, 0, {   966,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{  -216,  -1842,   1360}, 0, {   966,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{ -1513,  -1842,    627}, 0, {     0,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{ -1223,  -1842,    917}, 0, {   966,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{ -1114,  -1842,    808}, 0, {   966,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{ -1332,  -1842,    591}, 0, {   218,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{  -590,  -1842,   1333}, 0, {   218,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{  -807,  -1842,   1115}, 0, {   966,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{  -916,  -1842,   1224}, 0, {   966,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{  -524,  -1842,   1360}, 0, {   218,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{  -590,  -1842,   1333}, 0, {    56,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{   627,  -1842,  -1513}, 0, {  3020,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{   591,  -1842,  -1332}, 0, {  2772,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{   808,  -1842,  -1114}, 0, {  2024,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{   523,  -1842,  -1361}, 0, {  2938,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n};\n\n// 0x07004630 - 0x07004720\nstatic const Vtx totwc_seg7_vertex_07004630[] = {\n    {{{   627,  -1842,  -1513}, 0, {  3020,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{   808,  -1842,  -1114}, 0, {  2024,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{   917,  -1842,  -1223}, 0, {  2024,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{   217,  -1842,  -1513}, 0, {  2024,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{   217,  -1842,  -1359}, 0, {  2024,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{   523,  -1842,  -1361}, 0, {  2768,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{  -626,  -1842,  -1513}, 0, {  3016,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{  -524,  -1842,  -1359}, 0, {  2768,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{  -216,  -1842,  -1359}, 0, {  2020,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{  -216,  -1842,  -1513}, 0, {  2020,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{  -592,  -1842,  -1332}, 0, {  2934,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{  -626,  -1842,  -1513}, 0, {     0,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{  -882,  -1842,  -1259}, 0, {   844,   -504}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{  -773,  -1842,  -1151}, 0, {   844,   -504}, {0xf6, 0xa1, 0x5b, 0xff}}},\n    {{{  -592,  -1842,  -1332}, 0, {   222,   -506}, {0xf6, 0xa1, 0x5b, 0xff}}},\n};\n\n// 0x07004720 - 0x07004820\nstatic const Vtx totwc_seg7_vertex_07004720[] = {\n    {{{ -1259,  -2047,   -879}, 0, {  6482,    212}, {0xd8, 0xcc, 0x8c, 0xff}}},\n    {{{ -1223,  -2047,    917}, 0, {  6398,   2320}, {0xd8, 0xcc, 0x8c, 0xff}}},\n    {{{  -916,  -2047,   1224}, 0, {  5676,   2680}, {0xd8, 0xcc, 0x8c, 0xff}}},\n    {{{  1260,  -2047,    880}, 0, {   564,   2278}, {0xd8, 0xcc, 0x8c, 0xff}}},\n    {{{  1514,  -2047,    217}, 0, {     0,   1498}, {0xd8, 0xcc, 0x8c, 0xff}}},\n    {{{   883,  -2047,   1260}, 0, {  1450,   2724}, {0xd8, 0xcc, 0x8c, 0xff}}},\n    {{{   219,  -2047,   1515}, 0, {  3008,   3022}, {0xd8, 0xcc, 0x8c, 0xff}}},\n    {{{  -216,  -2047,   1514}, 0, {  4034,   3020}, {0xd8, 0xcc, 0x8c, 0xff}}},\n    {{{  1514,  -2047,   -216}, 0, {     0,    990}, {0xd8, 0xcc, 0x8c, 0xff}}},\n    {{{ -1513,  -2047,   -216}, 0, {  7078,    990}, {0xd8, 0xcc, 0x8c, 0xff}}},\n    {{{ -1513,  -2047,    217}, 0, {  7078,   1498}, {0xd8, 0xcc, 0x8c, 0xff}}},\n    {{{   217,  -2047,  -1513}, 0, {  3012,   -532}, {0xd8, 0xcc, 0x8c, 0xff}}},\n    {{{  -216,  -2047,  -1513}, 0, {  4034,   -532}, {0xd8, 0xcc, 0x8c, 0xff}}},\n    {{{   917,  -2047,  -1223}, 0, {  1370,   -192}, {0xd8, 0xcc, 0x8c, 0xff}}},\n    {{{  -882,  -2047,  -1259}, 0, {  5596,   -234}, {0xd8, 0xcc, 0x8c, 0xff}}},\n    {{{  1224,  -2047,   -916}, 0, {   648,    168}, {0xd8, 0xcc, 0x8c, 0xff}}},\n};\n\n// 0x07004820 - 0x07004910\nstatic const Vtx totwc_seg7_vertex_07004820[] = {\n    {{{ -1134,  -2866,    470}, 0, {   350,   1986}, {0x43, 0x21, 0x00, 0xff}}},\n    {{{ -1513,  -2457,    627}, 0, {     0,    990}, {0x43, 0x21, 0x00, 0xff}}},\n    {{{ -1134,  -2866,   -469}, 0, {  2638,   1986}, {0x43, 0x21, 0x00, 0xff}}},\n    {{{  1135,  -2866,    470}, 0, {   352,   1970}, {0x43, 0x21, 0x00, 0xff}}},\n    {{{   629,  -2457,   1514}, 0, {  3022,    980}, {0x43, 0x21, 0x00, 0xff}}},\n    {{{   470,  -2866,   1135}, 0, {  2640,   1976}, {0x43, 0x21, 0x00, 0xff}}},\n    {{{  1514,  -2457,    627}, 0, {   -26,    972}, {0x43, 0x21, 0x00, 0xff}}},\n    {{{   470,  -2866,   1135}, 0, {   346,   1986}, {0x43, 0x21, 0x00, 0xff}}},\n    {{{  -626,  -2457,   1514}, 0, {  3016,    990}, {0x43, 0x21, 0x00, 0xff}}},\n    {{{  -469,  -2866,   1135}, 0, {  2636,   1986}, {0x43, 0x21, 0x00, 0xff}}},\n    {{{   629,  -2457,   1514}, 0, {   -40,    990}, {0x43, 0x21, 0x00, 0xff}}},\n    {{{  -469,  -2866,   1135}, 0, {   350,   1986}, {0x43, 0x21, 0x00, 0xff}}},\n    {{{ -1513,  -2457,    627}, 0, {  3020,    990}, {0x43, 0x21, 0x00, 0xff}}},\n    {{{ -1134,  -2866,    470}, 0, {  2638,   1986}, {0x43, 0x21, 0x00, 0xff}}},\n    {{{  -626,  -2457,   1514}, 0, {     0,    990}, {0x43, 0x21, 0x00, 0xff}}},\n};\n\n// 0x07004910 - 0x07004A00\nstatic const Vtx totwc_seg7_vertex_07004910[] = {\n    {{{   470,  -2866,  -1134}, 0, {  2638,   1986}, {0x43, 0x21, 0x00, 0xff}}},\n    {{{   625,  -2457,  -1514}, 0, {  3026,    990}, {0x43, 0x21, 0x00, 0xff}}},\n    {{{  1135,  -2866,   -469}, 0, {   350,   1986}, {0x43, 0x21, 0x00, 0xff}}},\n    {{{ -1513,  -2457,    627}, 0, {     0,    990}, {0x43, 0x21, 0x00, 0xff}}},\n    {{{ -1513,  -2457,   -626}, 0, {  3020,    990}, {0x43, 0x21, 0x00, 0xff}}},\n    {{{ -1134,  -2866,   -469}, 0, {  2638,   1986}, {0x43, 0x21, 0x00, 0xff}}},\n    {{{ -1134,  -2866,   -469}, 0, {  2634,   1990}, {0x43, 0x21, 0x00, 0xff}}},\n    {{{ -1513,  -2457,   -626}, 0, {  3016,    996}, {0x43, 0x21, 0x00, 0xff}}},\n    {{{  -628,  -2457,  -1513}, 0, {     0,    990}, {0x43, 0x21, 0x00, 0xff}}},\n    {{{  -469,  -2866,  -1134}, 0, {   344,   1984}, {0x43, 0x21, 0x00, 0xff}}},\n    {{{  -469,  -2866,  -1134}, 0, {  2636,   1986}, {0x43, 0x21, 0x00, 0xff}}},\n    {{{  -628,  -2457,  -1513}, 0, {  3022,    990}, {0x43, 0x21, 0x00, 0xff}}},\n    {{{   625,  -2457,  -1514}, 0, {     0,    990}, {0x43, 0x21, 0x00, 0xff}}},\n    {{{   470,  -2866,  -1134}, 0, {   346,   1986}, {0x43, 0x21, 0x00, 0xff}}},\n    {{{  1514,  -2457,   -626}, 0, {     0,    990}, {0x43, 0x21, 0x00, 0xff}}},\n};\n\n// 0x07004A00 - 0x07004B00\nstatic const Vtx totwc_seg7_vertex_07004A00[] = {\n    {{{  1135,  -2866,   -469}, 0, {  2638,   1986}, {0x43, 0x21, 0x00, 0xff}}},\n    {{{  1514,  -2457,   -626}, 0, {  3020,    990}, {0x43, 0x21, 0x00, 0xff}}},\n    {{{  1514,  -2457,    627}, 0, {     0,    990}, {0x43, 0x21, 0x00, 0xff}}},\n    {{{  1135,  -2866,    470}, 0, {   350,   1986}, {0x43, 0x21, 0x00, 0xff}}},\n    {{{  1135,  -5119,    470}, 0, {   338,   7454}, {0x5d, 0x2e, 0x00, 0xff}}},\n    {{{   470,  -2866,   1135}, 0, {  2640,   1976}, {0x5d, 0x2e, 0x00, 0xff}}},\n    {{{   470,  -5119,   1135}, 0, {  2626,   7460}, {0x5d, 0x2e, 0x00, 0xff}}},\n    {{{  1135,  -2866,    470}, 0, {   352,   1970}, {0x5d, 0x2e, 0x00, 0xff}}},\n    {{{   917,  -2047,  -1223}, 0, {  2024,     -8}, {0x6b, 0x35, 0x00, 0xff}}},\n    {{{   808,  -1842,  -1114}, 0, {  2024,   -506}, {0x6b, 0x35, 0x00, 0xff}}},\n    {{{   808,  -2047,  -1114}, 0, {  2024,     -8}, {0x6b, 0x35, 0x00, 0xff}}},\n    {{{   883,  -2047,   1260}, 0, {  2152,    -20}, {0x6b, 0x35, 0x00, 0xff}}},\n    {{{   883,  -1842,   1260}, 0, {  2154,   -518}, {0x6b, 0x35, 0x00, 0xff}}},\n    {{{   629,  -2457,   1514}, 0, {  3022,    980}, {0x6b, 0x35, 0x00, 0xff}}},\n    {{{   627,  -1842,   1514}, 0, {  3030,   -516}, {0x6b, 0x35, 0x00, 0xff}}},\n    {{{  1514,  -2457,    627}, 0, {   -26,    972}, {0x6b, 0x35, 0x00, 0xff}}},\n};\n\n// 0x07004B00 - 0x07004BF0\nstatic const Vtx totwc_seg7_vertex_07004B00[] = {\n    {{{  1514,  -2457,    627}, 0, {   -26,    972}, {0x6b, 0x35, 0x00, 0xff}}},\n    {{{  1260,  -2047,    880}, 0, {   848,    -24}, {0x6b, 0x35, 0x00, 0xff}}},\n    {{{   883,  -2047,   1260}, 0, {  2152,    -20}, {0x6b, 0x35, 0x00, 0xff}}},\n    {{{  1260,  -1842,    880}, 0, {   850,   -522}, {0x6b, 0x35, 0x00, 0xff}}},\n    {{{  1514,  -1842,    627}, 0, {   -22,   -524}, {0x6b, 0x35, 0x00, 0xff}}},\n    {{{  -592,  -2047,  -1332}, 0, {  2934,     -8}, {0x6b, 0x35, 0x00, 0xff}}},\n    {{{  -592,  -1842,  -1332}, 0, {  2934,   -506}, {0x6b, 0x35, 0x00, 0xff}}},\n    {{{  -773,  -1842,  -1151}, 0, {  3374,   -506}, {0x6b, 0x35, 0x00, 0xff}}},\n    {{{  -773,  -2047,  -1151}, 0, {  3374,     -8}, {0x6b, 0x35, 0x00, 0xff}}},\n    {{{ -1151,  -2047,   -771}, 0, {   846,     -8}, {0x6b, 0x35, 0x00, 0xff}}},\n    {{{ -1332,  -1842,   -590}, 0, {   222,   -506}, {0x6b, 0x35, 0x00, 0xff}}},\n    {{{ -1332,  -2047,   -590}, 0, {   222,     -8}, {0x6b, 0x35, 0x00, 0xff}}},\n    {{{   917,  -2047,  -1223}, 0, {  2024,     -8}, {0x6b, 0x35, 0x00, 0xff}}},\n    {{{   917,  -1842,  -1223}, 0, {  2024,   -506}, {0x6b, 0x35, 0x00, 0xff}}},\n    {{{   808,  -1842,  -1114}, 0, {  2024,   -506}, {0x6b, 0x35, 0x00, 0xff}}},\n};\n\n// 0x07004BF0 - 0x07004CE0\nstatic const Vtx totwc_seg7_vertex_07004BF0[] = {\n    {{{ -1114,  -2047,    808}, 0, {  2024,     -8}, {0x6b, 0x35, 0x00, 0xff}}},\n    {{{ -1223,  -1842,    917}, 0, {  2024,   -506}, {0x6b, 0x35, 0x00, 0xff}}},\n    {{{ -1223,  -2047,    917}, 0, {  2024,     -8}, {0x6b, 0x35, 0x00, 0xff}}},\n    {{{ -1114,  -1842,    808}, 0, {  2024,   -506}, {0x6b, 0x35, 0x00, 0xff}}},\n    {{{ -1151,  -2047,   -771}, 0, {   846,     -8}, {0x6b, 0x35, 0x00, 0xff}}},\n    {{{ -1151,  -1842,   -771}, 0, {   846,   -506}, {0x6b, 0x35, 0x00, 0xff}}},\n    {{{ -1332,  -1842,   -590}, 0, {   222,   -506}, {0x6b, 0x35, 0x00, 0xff}}},\n    {{{  -524,  -2047,  -1359}, 0, {  2768,     -8}, {0x78, 0x3c, 0x00, 0xff}}},\n    {{{  -524,  -1842,  -1359}, 0, {  2768,   -506}, {0x78, 0x3c, 0x00, 0xff}}},\n    {{{  -592,  -1842,  -1332}, 0, {  2934,   -506}, {0x78, 0x3c, 0x00, 0xff}}},\n    {{{  -592,  -2047,  -1332}, 0, {  2934,     -8}, {0x78, 0x3c, 0x00, 0xff}}},\n    {{{ -1332,  -2047,   -590}, 0, {  2932,     -8}, {0x78, 0x3c, 0x00, 0xff}}},\n    {{{ -1359,  -1842,   -524}, 0, {  2772,   -506}, {0x78, 0x3c, 0x00, 0xff}}},\n    {{{ -1359,  -2047,   -524}, 0, {  2772,     -8}, {0x78, 0x3c, 0x00, 0xff}}},\n    {{{ -1332,  -1842,   -590}, 0, {  2932,   -506}, {0x78, 0x3c, 0x00, 0xff}}},\n};\n\n// 0x07004CE0 - 0x07004DE0\nstatic const Vtx totwc_seg7_vertex_07004CE0[] = {\n    {{{  3686,   1024,   3686}, 0, {   990,   2012}, {0xfe, 0xff, 0xcb, 0xff}}},\n    {{{  4506,   2048,   3686}, 0, {     0,      0}, {0xfe, 0xff, 0xcb, 0xff}}},\n    {{{  4506,   1024,   3686}, 0, {     0,   2012}, {0xfe, 0xff, 0xcb, 0xff}}},\n    {{{  3686,   2048,   3686}, 0, {   990,      0}, {0xfe, 0xff, 0xcb, 0xff}}},\n    {{{  3686,   1024,  -3685}, 0, {   990,   2012}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{  3686,   2048,  -4505}, 0, {     0,      0}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{  3686,   1024,  -4505}, 0, {     0,   2012}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{  3686,   2048,  -3685}, 0, {   990,      0}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{  4506,   1024,  -4505}, 0, {   990,   2012}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{  4506,   2048,  -3685}, 0, {     0,      0}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{  4506,   1024,  -3685}, 0, {     0,   2012}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{  4506,   2048,  -4505}, 0, {   990,      0}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{ -3685,   1024,   4506}, 0, {   990,   2012}, {0x50, 0x86, 0xa3, 0xff}}},\n    {{{ -3685,   2048,   4506}, 0, {   990,      0}, {0x50, 0x86, 0xa3, 0xff}}},\n    {{{ -4505,   1024,   4506}, 0, {     0,   2012}, {0x50, 0x86, 0xa3, 0xff}}},\n    {{{ -4505,   2048,   4506}, 0, {     0,      0}, {0x50, 0x86, 0xa3, 0xff}}},\n};\n\n// 0x07004DE0 - 0x07004EE0\nstatic const Vtx totwc_seg7_vertex_07004DE0[] = {\n    {{{ -4505,   1024,   4506}, 0, {   990,   2012}, {0x93, 0xce, 0xd5, 0xff}}},\n    {{{ -4505,   2048,   4506}, 0, {   990,      0}, {0x93, 0xce, 0xd5, 0xff}}},\n    {{{ -4505,   1024,   3686}, 0, {     0,   2012}, {0x93, 0xce, 0xd5, 0xff}}},\n    {{{ -4505,   2048,   3686}, 0, {     0,      0}, {0x93, 0xce, 0xd5, 0xff}}},\n    {{{ -3685,   1024,   3686}, 0, {     0,   2012}, {0x93, 0xce, 0xd5, 0xff}}},\n    {{{ -3685,   2048,   3686}, 0, {     0,      0}, {0x93, 0xce, 0xd5, 0xff}}},\n    {{{ -3685,   1024,   4506}, 0, {   990,   2012}, {0x93, 0xce, 0xd5, 0xff}}},\n    {{{ -3685,   2048,   4506}, 0, {   990,      0}, {0x93, 0xce, 0xd5, 0xff}}},\n    {{{ -4505,   1024,   3686}, 0, {     0,   2012}, {0xc5, 0xf8, 0xff, 0xff}}},\n    {{{ -4505,   2048,   3686}, 0, {     0,      0}, {0xc5, 0xf8, 0xff, 0xff}}},\n    {{{ -3685,   1024,   3686}, 0, {   990,   2012}, {0xc5, 0xf8, 0xff, 0xff}}},\n    {{{ -3685,   2048,   3686}, 0, {   990,      0}, {0xc5, 0xf8, 0xff, 0xff}}},\n    {{{ -4505,   1024,  -4505}, 0, {   990,   2012}, {0xc1, 0xdd, 0xff, 0xff}}},\n    {{{ -4505,   2048,  -4505}, 0, {   990,      0}, {0xc1, 0xdd, 0xff, 0xff}}},\n    {{{ -3685,   2048,  -4505}, 0, {     0,      0}, {0xc1, 0xdd, 0xff, 0xff}}},\n    {{{ -3685,   1024,  -4505}, 0, {     0,   2012}, {0xc1, 0xdd, 0xff, 0xff}}},\n};\n\n// 0x07004EE0 - 0x07004FE0\nstatic const Vtx totwc_seg7_vertex_07004EE0[] = {\n    {{{  3686,   1024,  -4505}, 0, {   990,   2012}, {0xdd, 0xff, 0xc8, 0xff}}},\n    {{{  3686,   2048,  -4505}, 0, {   990,      0}, {0xdd, 0xff, 0xc8, 0xff}}},\n    {{{  4506,   2048,  -4505}, 0, {     0,      0}, {0xdd, 0xff, 0xc8, 0xff}}},\n    {{{  4506,   1024,  -4505}, 0, {     0,   2012}, {0xdd, 0xff, 0xc8, 0xff}}},\n    {{{  4506,   1024,   4506}, 0, {     0,   2012}, {0xa6, 0xa1, 0x6f, 0xff}}},\n    {{{  3686,   2048,   4506}, 0, {   990,      0}, {0xa6, 0xa1, 0x6f, 0xff}}},\n    {{{  3686,   1024,   4506}, 0, {   990,   2012}, {0xa6, 0xa1, 0x6f, 0xff}}},\n    {{{  4506,   2048,   4506}, 0, {     0,      0}, {0xa6, 0xa1, 0x6f, 0xff}}},\n    {{{ -3685,   1024,  -3685}, 0, {   990,   2012}, {0x65, 0x7b, 0x97, 0xff}}},\n    {{{ -4505,   2048,  -3685}, 0, {     0,      0}, {0x65, 0x7b, 0x97, 0xff}}},\n    {{{ -4505,   1024,  -3685}, 0, {     0,   2012}, {0x65, 0x7b, 0x97, 0xff}}},\n    {{{ -3685,   2048,  -3685}, 0, {   990,      0}, {0x65, 0x7b, 0x97, 0xff}}},\n    {{{  4506,   1024,  -3685}, 0, {   990,   2012}, {0x95, 0x9e, 0x7b, 0xff}}},\n    {{{  3686,   2048,  -3685}, 0, {     0,      0}, {0x95, 0x9e, 0x7b, 0xff}}},\n    {{{  3686,   1024,  -3685}, 0, {     0,   2012}, {0x95, 0x9e, 0x7b, 0xff}}},\n    {{{  4506,   2048,  -3685}, 0, {   990,      0}, {0x95, 0x9e, 0x7b, 0xff}}},\n};\n\n// 0x07004FE0 - 0x070050E0\nstatic const Vtx totwc_seg7_vertex_07004FE0[] = {\n    {{{ -4505,   1024,  -3685}, 0, {   990,   2012}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{ -4505,   2048,  -3685}, 0, {   990,      0}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{ -4505,   2048,  -4505}, 0, {     0,      0}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{ -4505,   1024,  -4505}, 0, {     0,   2012}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{ -3685,   1024,  -4505}, 0, {   990,   2012}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{ -3685,   2048,  -3685}, 0, {     0,      0}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{ -3685,   1024,  -3685}, 0, {     0,   2012}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{ -3685,   2048,  -4505}, 0, {   990,      0}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{  3686,   1024,   4506}, 0, {   990,   2012}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{  3686,   2048,   3686}, 0, {     0,      0}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{  3686,   1024,   3686}, 0, {     0,   2012}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{  3686,   2048,   4506}, 0, {   990,      0}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{  4506,   1024,   3686}, 0, {     0,   2012}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{  4506,   2048,   4506}, 0, {   990,      0}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{  4506,   1024,   4506}, 0, {   990,   2012}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{  4506,   2048,   3686}, 0, {     0,      0}, {0xcd, 0xc4, 0x97, 0xff}}},\n};\n\n// 0x070050E0 - 0x07005220\nstatic const Gfx totwc_seg7_dl_070050E0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, totwc_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(totwc_seg7_vertex_07002800, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07002900, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07002A00, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07002B00, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07005220 - 0x07005448\nstatic const Gfx totwc_seg7_dl_07005220[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, totwc_seg7_texture_07001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(totwc_seg7_vertex_07002C00, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07002CE0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 11, 14, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07002DD0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07002EB0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07002FA0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07003080, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  4,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP1Triangle(11, 12, 13, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07003160, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 12, 15, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07003260, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07003350, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07005448 - 0x07005BE8\nstatic const Gfx totwc_seg7_dl_07005448[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(totwc_seg7_vertex_07003410, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  4,  5,  3, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  4,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 8, 11, 12, 0x0, 12, 13,  8, 0x0),\n    gsSPVertex(totwc_seg7_vertex_070034F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(totwc_seg7_vertex_070035E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(totwc_seg7_vertex_070036D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(totwc_seg7_vertex_070037C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(totwc_seg7_vertex_070038B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles( 9, 12, 13, 0x0,  9, 13, 10, 0x0),\n    gsSP2Triangles(13, 12, 14, 0x0, 12, 15, 14, 0x0),\n    gsSPVertex(totwc_seg7_vertex_070039B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  2,  5,  3, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  3,  5,  9, 0x0),\n    gsSP2Triangles( 3,  9, 10, 0x0,  0, 11, 12, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07003AB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSP2Triangles(13, 15,  3, 0x0,  3, 15,  4, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07003BB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07003CB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  4,  5,  3, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  4,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10, 11,  8, 0x0),\n    gsSP2Triangles( 8, 12, 13, 0x0,  8, 13,  9, 0x0),\n    gsSP2Triangles(10, 14, 11, 0x0, 10, 15, 14, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07003DB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07003EB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07003FB0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(totwc_seg7_vertex_070040A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  0,  5,  4, 0x0),\n    gsSP2Triangles( 2,  6,  7, 0x0,  2,  7,  3, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07004190, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07004270, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  7, 11, 10, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07004370, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  5,  7, 0x0),\n    gsSP2Triangles( 5,  8,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(10, 12, 13, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07004450, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 6,  5,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(11, 12,  9, 0x0, 11, 13, 12, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07004530, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  0,  7,  8, 0x0),\n    gsSP2Triangles( 8,  9,  0, 0x0,  0, 10, 11, 0x0),\n    gsSP2Triangles( 0,  2, 10, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 15, 13, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07004630, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0,  6, 10,  7, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 13, 14, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07004720, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  5,  3, 0x0,  0,  6,  5, 0x0),\n    gsSP2Triangles( 0,  7,  6, 0x0,  0,  2,  7, 0x0),\n    gsSP2Triangles( 0,  4,  8, 0x0,  0,  9, 10, 0x0),\n    gsSP2Triangles( 0, 10,  1, 0x0,  0, 11, 12, 0x0),\n    gsSP2Triangles( 0, 13, 11, 0x0,  0, 12, 14, 0x0),\n    gsSP2Triangles( 0,  8, 15, 0x0,  0, 15, 13, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07004820, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07004910, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 1, 14,  2, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07004A00, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0, 11, 13, 15, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07004B00, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07004BF0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07005BE8 - 0x07005D28\nstatic const Gfx totwc_seg7_dl_07005BE8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, totwc_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(totwc_seg7_vertex_07004CE0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07004DE0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07004EE0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07004FE0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07005D28 - 0x07005DC8\nconst Gfx totwc_seg7_dl_07005D28[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(totwc_seg7_dl_070050E0),\n    gsSPDisplayList(totwc_seg7_dl_07005220),\n    gsSPDisplayList(totwc_seg7_dl_07005448),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(totwc_seg7_dl_07005BE8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/totwc/areas/1/2/model.inc.c",
    "content": "// 0x07005DC8 - 0x07005EB8\nstatic const Vtx totwc_seg7_vertex_07005DC8[] = {\n    {{{   939,   3482,    770}, 0, {     0, -12460}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   621,   3482,    502}, 0, {   990, -12280}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   405,   3482,    684}, 0, {   990, -11574}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1153,   3482,   -439}, 0, {     0, -15114}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   811,   3482,    -19}, 0, {   990, -14228}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1227,   3482,    -19}, 0, {     0, -14048}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   768,   3482,   -299}, 0, {   990, -15114}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1227,   3482,    -19}, 0, {     0, -14228}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   762,   3482,    258}, 0, {   990, -13344}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1153,   3482,    400}, 0, {     0, -13164}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   811,   3482,    -19}, 0, {   990, -14048}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1153,   3482,    400}, 0, {     0, -13344}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   621,   3482,    502}, 0, {   990, -12460}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   939,   3482,    770}, 0, {     0, -12280}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   762,   3482,    258}, 0, {   990, -13164}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07005EB8 - 0x07005FA8\nstatic const Vtx totwc_seg7_vertex_07005EB8[] = {\n    {{{  -214,   3482,   1190}, 0, {     0,  -9806}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -142,   3482,    780}, 0, {   990,  -9626}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -407,   3482,    684}, 0, {   990,  -8920}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   939,   3482,    770}, 0, {     0, -12460}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   405,   3482,    684}, 0, {   990, -11574}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   613,   3482,   1044}, 0, {     0, -11394}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   613,   3482,   1044}, 0, {     0, -11574}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   139,   3482,    780}, 0, {   990, -10690}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   212,   3482,   1190}, 0, {     0, -10510}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   405,   3482,    684}, 0, {   990, -11394}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   212,   3482,   1190}, 0, {     0, -10690}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -142,   3482,    780}, 0, {   990,  -9806}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -214,   3482,   1190}, 0, {     0,  -9626}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   139,   3482,    780}, 0, {   990, -10510}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -615,   3482,   1044}, 0, {     0,  -8740}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07005FA8 - 0x07006098\nstatic const Vtx totwc_seg7_vertex_07005FA8[] = {\n    {{{ -1230,   3482,    -19}, 0, {     0,  -6268}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -765,   3482,   -297}, 0, {   990,  -5382}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1156,   3482,   -439}, 0, {     0,  -5202}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -615,   3482,   1044}, 0, {     0,  -8920}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -624,   3482,    502}, 0, {   990,  -8036}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -942,   3482,    770}, 0, {     0,  -7856}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -407,   3482,    684}, 0, {   990,  -8740}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -942,   3482,    770}, 0, {     0,  -8036}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -765,   3482,    258}, 0, {   990,  -7152}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1156,   3482,    400}, 0, {     0,  -6972}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -624,   3482,    502}, 0, {   990,  -7856}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1156,   3482,    400}, 0, {     0,  -7152}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -765,   3482,    258}, 0, {   990,  -6972}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -814,   3482,    -19}, 0, {   990,  -6268}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1230,   3482,    -19}, 0, {     0,  -6086}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07006098 - 0x07006188\nstatic const Vtx totwc_seg7_vertex_07006098[] = {\n    {{{  -615,   3482,  -1083}, 0, {     0,  -3614}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -142,   3482,   -820}, 0, {   990,  -2728}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -214,   3482,  -1229}, 0, {     0,  -2548}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1230,   3482,    -19}, 0, {     0,  -6268}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -814,   3482,    -19}, 0, {   990,  -6086}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -765,   3482,   -297}, 0, {   990,  -5382}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1156,   3482,   -439}, 0, {     0,  -5382}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -624,   3482,   -542}, 0, {   990,  -4498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -942,   3482,   -809}, 0, {     0,  -4318}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -765,   3482,   -297}, 0, {   990,  -5202}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -942,   3482,   -809}, 0, {     0,  -4498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -407,   3482,   -723}, 0, {   990,  -3614}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -615,   3482,  -1083}, 0, {     0,  -3434}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -624,   3482,   -542}, 0, {   990,  -4318}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -407,   3482,   -723}, 0, {   990,  -3434}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07006188 - 0x07006278\nstatic const Vtx totwc_seg7_vertex_07006188[] = {\n    {{{   939,   3482,   -809}, 0, {     0,    -74}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   768,   3482,   -299}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1153,   3482,   -439}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -214,   3482,  -1229}, 0, {     0,  -2728}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   139,   3482,   -820}, 0, {   990,  -1844}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   212,   3482,  -1229}, 0, {     0,  -1664}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -142,   3482,   -820}, 0, {   990,  -2548}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   212,   3482,  -1229}, 0, {     0,  -1844}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   405,   3482,   -723}, 0, {   990,   -960}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   613,   3482,  -1083}, 0, {     0,   -780}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   139,   3482,   -820}, 0, {   990,  -1664}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   613,   3482,  -1083}, 0, {     0,   -960}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   405,   3482,   -723}, 0, {   990,   -780}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   621,   3482,   -542}, 0, {   990,    -74}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   939,   3482,   -809}, 0, {     0,    106}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07006278 - 0x07006368\nstatic const Vtx totwc_seg7_vertex_07006278[] = {\n    {{{  1153,   2458,    400}, 0, {     0, -13344}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   762,   2458,    258}, 0, {   990, -13164}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   621,   2458,    502}, 0, {   990, -12460}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   939,   3482,   -809}, 0, {     0,    -74}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   621,   3482,   -542}, 0, {   990,    106}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   768,   3482,   -299}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1153,   2458,   -439}, 0, {     0, -15114}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   811,   2458,    -19}, 0, {   990, -14228}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1227,   2458,    -19}, 0, {     0, -14048}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   768,   2458,   -299}, 0, {   990, -15114}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1227,   2458,    -19}, 0, {     0, -14228}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   762,   2458,    258}, 0, {   990, -13344}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1153,   2458,    400}, 0, {     0, -13164}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   811,   2458,    -19}, 0, {   990, -14048}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   939,   2458,    770}, 0, {     0, -12280}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07006368 - 0x07006458\nstatic const Vtx totwc_seg7_vertex_07006368[] = {\n    {{{  -214,   2458,   1190}, 0, {     0,  -9806}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -407,   2458,    684}, 0, {   990,  -8920}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -615,   2458,   1044}, 0, {     0,  -8740}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   939,   2458,    770}, 0, {     0, -12460}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   405,   2458,    684}, 0, {   990, -11574}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   613,   2458,   1044}, 0, {     0, -11394}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   621,   2458,    502}, 0, {   990, -12280}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   613,   2458,   1044}, 0, {     0, -11574}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   139,   2458,    780}, 0, {   990, -10690}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   212,   2458,   1190}, 0, {     0, -10510}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   405,   2458,    684}, 0, {   990, -11394}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   212,   2458,   1190}, 0, {     0, -10690}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   139,   2458,    780}, 0, {   990, -10510}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -142,   2458,    780}, 0, {   990,  -9806}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -214,   2458,   1190}, 0, {     0,  -9626}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07006458 - 0x07006548\nstatic const Vtx totwc_seg7_vertex_07006458[] = {\n    {{{ -1156,   2458,    400}, 0, {     0,  -7152}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -765,   2458,    258}, 0, {   990,  -6972}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -814,   2458,    -19}, 0, {   990,  -6268}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -214,   2458,   1190}, 0, {     0,  -9806}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -142,   2458,    780}, 0, {   990,  -9626}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -407,   2458,    684}, 0, {   990,  -8920}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -615,   2458,   1044}, 0, {     0,  -8920}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -624,   2458,    502}, 0, {   990,  -8036}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -942,   2458,    770}, 0, {     0,  -7856}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -407,   2458,    684}, 0, {   990,  -8740}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -942,   2458,    770}, 0, {     0,  -8036}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -765,   2458,    258}, 0, {   990,  -7152}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1156,   2458,    400}, 0, {     0,  -6972}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -624,   2458,    502}, 0, {   990,  -7856}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1230,   2458,    -19}, 0, {     0,  -6086}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07006548 - 0x07006638\nstatic const Vtx totwc_seg7_vertex_07006548[] = {\n    {{{  -615,   2458,  -1083}, 0, {     0,  -3614}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -142,   2458,   -820}, 0, {   990,  -2728}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -214,   2458,  -1229}, 0, {     0,  -2548}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1230,   2458,    -19}, 0, {     0,  -6268}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -765,   2458,   -297}, 0, {   990,  -5382}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1156,   2458,   -439}, 0, {     0,  -5202}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -814,   2458,    -19}, 0, {   990,  -6086}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1156,   2458,   -439}, 0, {     0,  -5382}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -624,   2458,   -542}, 0, {   990,  -4498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -942,   2458,   -809}, 0, {     0,  -4318}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -765,   2458,   -297}, 0, {   990,  -5202}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -942,   2458,   -809}, 0, {     0,  -4498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -624,   2458,   -542}, 0, {   990,  -4318}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -407,   2458,   -723}, 0, {   990,  -3614}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -615,   2458,  -1083}, 0, {     0,  -3434}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07006638 - 0x07006728\nstatic const Vtx totwc_seg7_vertex_07006638[] = {\n    {{{   613,   2458,  -1083}, 0, {     0,   -960}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   405,   2458,   -723}, 0, {   990,   -780}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   621,   2458,   -542}, 0, {   990,    -74}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -615,   2458,  -1083}, 0, {     0,  -3614}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -407,   2458,   -723}, 0, {   990,  -3434}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -142,   2458,   -820}, 0, {   990,  -2728}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -214,   2458,  -1229}, 0, {     0,  -2728}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   139,   2458,   -820}, 0, {   990,  -1844}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   212,   2458,  -1229}, 0, {     0,  -1664}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -142,   2458,   -820}, 0, {   990,  -2548}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   212,   2458,  -1229}, 0, {     0,  -1844}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   405,   2458,   -723}, 0, {   990,   -960}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   613,   2458,  -1083}, 0, {     0,   -780}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   139,   2458,   -820}, 0, {   990,  -1664}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   939,   2458,   -809}, 0, {     0,    106}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07006728 - 0x07006818\nstatic const Vtx totwc_seg7_vertex_07006728[] = {\n    {{{   212,   1434,  -1229}, 0, {     0,  -1844}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   405,   1434,   -723}, 0, {   990,   -960}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   613,   1434,  -1083}, 0, {     0,   -780}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   939,   2458,   -809}, 0, {     0,    -74}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   768,   2458,   -299}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1153,   2458,   -439}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   621,   2458,   -542}, 0, {   990,    106}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   939,   1434,   -809}, 0, {     0,    -74}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   768,   1434,   -299}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1153,   1434,   -439}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   621,   1434,   -542}, 0, {   990,    106}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   613,   1434,  -1083}, 0, {     0,   -960}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   405,   1434,   -723}, 0, {   990,   -780}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   621,   1434,   -542}, 0, {   990,    -74}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   939,   1434,   -809}, 0, {     0,    106}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07006818 - 0x07006908\nstatic const Vtx totwc_seg7_vertex_07006818[] = {\n    {{{  -942,   1434,   -809}, 0, {     0,  -4498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -624,   1434,   -542}, 0, {   990,  -4318}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -407,   1434,   -723}, 0, {   990,  -3614}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   212,   1434,  -1229}, 0, {     0,  -1844}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   139,   1434,   -820}, 0, {   990,  -1664}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   405,   1434,   -723}, 0, {   990,   -960}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -214,   1434,  -1229}, 0, {     0,  -2728}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   139,   1434,   -820}, 0, {   990,  -1844}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   212,   1434,  -1229}, 0, {     0,  -1664}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -142,   1434,   -820}, 0, {   990,  -2548}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -615,   1434,  -1083}, 0, {     0,  -3614}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -407,   1434,   -723}, 0, {   990,  -3434}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -142,   1434,   -820}, 0, {   990,  -2728}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -214,   1434,  -1229}, 0, {     0,  -2548}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -615,   1434,  -1083}, 0, {     0,  -3434}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07006908 - 0x070069F8\nstatic const Vtx totwc_seg7_vertex_07006908[] = {\n    {{{  -942,   1434,    770}, 0, {     0,  -8036}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -765,   1434,    258}, 0, {   990,  -7152}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1156,   1434,    400}, 0, {     0,  -6972}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1156,   1434,   -439}, 0, {     0,  -5382}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -624,   1434,   -542}, 0, {   990,  -4498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -942,   1434,   -809}, 0, {     0,  -4318}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -765,   1434,   -297}, 0, {   990,  -5202}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1230,   1434,    -19}, 0, {     0,  -6268}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -765,   1434,   -297}, 0, {   990,  -5382}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1156,   1434,   -439}, 0, {     0,  -5202}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -814,   1434,    -19}, 0, {   990,  -6086}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1156,   1434,    400}, 0, {     0,  -7152}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -765,   1434,    258}, 0, {   990,  -6972}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -814,   1434,    -19}, 0, {   990,  -6268}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1230,   1434,    -19}, 0, {     0,  -6086}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070069F8 - 0x07006AE8\nstatic const Vtx totwc_seg7_vertex_070069F8[] = {\n    {{{   212,   1434,   1190}, 0, {     0, -10690}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   139,   1434,    780}, 0, {   990, -10510}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -142,   1434,    780}, 0, {   990,  -9806}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -942,   1434,    770}, 0, {     0,  -8036}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -624,   1434,    502}, 0, {   990,  -7856}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -765,   1434,    258}, 0, {   990,  -7152}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -615,   1434,   1044}, 0, {     0,  -8920}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -624,   1434,    502}, 0, {   990,  -8036}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -942,   1434,    770}, 0, {     0,  -7856}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -407,   1434,    684}, 0, {   990,  -8740}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -214,   1434,   1190}, 0, {     0,  -9806}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -407,   1434,    684}, 0, {   990,  -8920}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -615,   1434,   1044}, 0, {     0,  -8740}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -142,   1434,    780}, 0, {   990,  -9626}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -214,   1434,   1190}, 0, {     0,  -9626}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07006AE8 - 0x07006BD8\nstatic const Vtx totwc_seg7_vertex_07006AE8[] = {\n    {{{  1227,   1434,    -19}, 0, {     0, -14228}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   762,   1434,    258}, 0, {   990, -13344}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1153,   1434,    400}, 0, {     0, -13164}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   613,   1434,   1044}, 0, {     0, -11574}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   139,   1434,    780}, 0, {   990, -10690}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   212,   1434,   1190}, 0, {     0, -10510}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   405,   1434,    684}, 0, {   990, -11394}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   939,   1434,    770}, 0, {     0, -12460}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   621,   1434,    502}, 0, {   990, -12280}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   405,   1434,    684}, 0, {   990, -11574}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   613,   1434,   1044}, 0, {     0, -11394}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1153,   1434,    400}, 0, {     0, -13344}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   621,   1434,    502}, 0, {   990, -12460}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   939,   1434,    770}, 0, {     0, -12280}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   762,   1434,    258}, 0, {   990, -13164}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07006BD8 - 0x07006C48\nstatic const Vtx totwc_seg7_vertex_07006BD8[] = {\n    {{{  1153,   1434,   -439}, 0, {     0, -15114}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   768,   1434,   -299}, 0, {   990, -15114}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   811,   1434,    -19}, 0, {   990, -14228}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1227,   1434,    -19}, 0, {     0, -14228}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   811,   1434,    -19}, 0, {   990, -14048}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   762,   1434,    258}, 0, {   990, -13344}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1227,   1434,    -19}, 0, {     0, -14048}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07006C48 - 0x07007048\nstatic const Gfx totwc_seg7_dl_07006C48[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(totwc_seg7_vertex_07005DC8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07005EB8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07005FA8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07006098, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07006188, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07006278, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07006368, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07006458, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07006548, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07006638, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07006728, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07006818, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07006908, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(totwc_seg7_vertex_070069F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07006AE8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(totwc_seg7_vertex_07006BD8, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  2,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007048 - 0x070070C8\nconst Gfx totwc_seg7_dl_07007048[] = {\n    gsDPPipeSync(),\n    gsDPSetEnvColor(255, 255, 255, 150),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADEA, G_CC_MODULATERGBFADEA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(totwc_seg7_dl_07006C48),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/totwc/areas/1/3/model.inc.c",
    "content": "// 0x070070C8 - 0x070071C8\nstatic const Vtx totwc_seg7_vertex_070070C8[] = {\n    {{{  4506,  -7679,   3686}, 0, {   990,    990}, {0xfe, 0xff, 0xcb, 0x00}}},\n    {{{  3686,  -7679,   3686}, 0, {     0,    990}, {0xfe, 0xff, 0xcb, 0x00}}},\n    {{{  3686,  -5119,   3686}, 0, {     0,  -2204}, {0xfe, 0xff, 0xcb, 0xff}}},\n    {{{  4506,  -5119,   3686}, 0, {   990,  -2204}, {0xfe, 0xff, 0xcb, 0xff}}},\n    {{{  4506,  -5119,  -3685}, 0, {   990,  -2204}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{  4506,  -7679,  -3685}, 0, {   990,    990}, {0xb9, 0xd0, 0xad, 0x00}}},\n    {{{  4506,  -5119,  -4505}, 0, {     0,  -2204}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{  4506,  -7679,  -4505}, 0, {     0,    990}, {0xb9, 0xd0, 0xad, 0x00}}},\n    {{{  3686,  -7679,  -4505}, 0, {     0,    990}, {0xb9, 0xd0, 0xad, 0x00}}},\n    {{{  3686,  -7679,  -3685}, 0, {   990,    990}, {0xb9, 0xd0, 0xad, 0x00}}},\n    {{{  3686,  -5119,  -3685}, 0, {   990,  -2204}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{  3686,  -5119,  -4505}, 0, {     0,  -2204}, {0xb9, 0xd0, 0xad, 0xff}}},\n    {{{ -4505,  -5119,   4506}, 0, {   990,  -2204}, {0x50, 0x86, 0xa3, 0xff}}},\n    {{{ -4505,  -7679,   4506}, 0, {   990,    990}, {0x50, 0x86, 0xa3, 0x00}}},\n    {{{ -3685,  -7679,   4506}, 0, {     0,    990}, {0x50, 0x86, 0xa3, 0x00}}},\n    {{{ -3685,  -5119,   4506}, 0, {     0,  -2204}, {0x50, 0x86, 0xa3, 0xff}}},\n};\n\n// 0x070071C8 - 0x070072C8\nstatic const Vtx totwc_seg7_vertex_070071C8[] = {\n    {{{ -3685,  -5119,   4506}, 0, { 11210,  -2204}, {0x93, 0xce, 0xd5, 0xff}}},\n    {{{ -3685,  -7679,   3686}, 0, { 10188,    990}, {0x93, 0xce, 0xd5, 0x00}}},\n    {{{ -3685,  -5119,   3686}, 0, { 10188,  -2204}, {0x93, 0xce, 0xd5, 0xff}}},\n    {{{ -3685,  -7679,   4506}, 0, { 11210,    990}, {0x93, 0xce, 0xd5, 0x00}}},\n    {{{ -4505,  -5119,   3686}, 0, { 10188,  -2204}, {0x93, 0xce, 0xd5, 0xff}}},\n    {{{ -4505,  -7679,   3686}, 0, { 10188,    990}, {0x93, 0xce, 0xd5, 0x00}}},\n    {{{ -4505,  -7679,   4506}, 0, { 11210,    990}, {0x93, 0xce, 0xd5, 0x00}}},\n    {{{ -4505,  -5119,   4506}, 0, { 11210,  -2204}, {0x93, 0xce, 0xd5, 0xff}}},\n    {{{ -3685,  -5119,   3686}, 0, {     0,  -2204}, {0xc5, 0xf8, 0xff, 0xff}}},\n    {{{ -4505,  -7679,   3686}, 0, {   990,    990}, {0xc5, 0xf8, 0xff, 0x00}}},\n    {{{ -4505,  -5119,   3686}, 0, {   990,  -2204}, {0xc5, 0xf8, 0xff, 0xff}}},\n    {{{ -3685,  -7679,   3686}, 0, {     0,    990}, {0xc5, 0xf8, 0xff, 0x00}}},\n    {{{ -3685,  -7679,  -4505}, 0, { -9228,    990}, {0xc1, 0xdd, 0xff, 0x00}}},\n    {{{ -4505,  -7679,  -4505}, 0, {-10250,    990}, {0xc1, 0xdd, 0xff, 0x00}}},\n    {{{ -4505,  -5119,  -4505}, 0, {-10250,  -2204}, {0xc1, 0xdd, 0xff, 0xff}}},\n    {{{ -3685,  -5119,  -4505}, 0, { -9228,  -2204}, {0xc1, 0xdd, 0xff, 0xff}}},\n};\n\n// 0x070072C8 - 0x070073C8\nstatic const Vtx totwc_seg7_vertex_070072C8[] = {\n    {{{  4506,  -5119,  -4505}, 0, {   990,  -2204}, {0xdd, 0xff, 0xc8, 0xff}}},\n    {{{  4506,  -7679,  -4505}, 0, {   990,    990}, {0xdd, 0xff, 0xc8, 0x00}}},\n    {{{  3686,  -5119,  -4505}, 0, {     0,  -2204}, {0xdd, 0xff, 0xc8, 0xff}}},\n    {{{  3686,  -7679,  -4505}, 0, {     0,    990}, {0xdd, 0xff, 0xc8, 0x00}}},\n    {{{  3686,  -5119,   4506}, 0, {     0,  -2204}, {0xa6, 0xa1, 0x6f, 0xff}}},\n    {{{  3686,  -7679,   4506}, 0, {     0,    990}, {0xa6, 0xa1, 0x6f, 0x00}}},\n    {{{  4506,  -5119,   4506}, 0, {   990,  -2204}, {0xa6, 0xa1, 0x6f, 0xff}}},\n    {{{  4506,  -7679,   4506}, 0, {   990,    990}, {0xa6, 0xa1, 0x6f, 0x00}}},\n    {{{ -4505,  -5119,  -3685}, 0, {-10250,  -2204}, {0x65, 0x7b, 0x97, 0xff}}},\n    {{{ -4505,  -7679,  -3685}, 0, {-10250,    990}, {0x65, 0x7b, 0x97, 0x00}}},\n    {{{ -3685,  -5119,  -3685}, 0, { -9228,  -2204}, {0x65, 0x7b, 0x97, 0xff}}},\n    {{{ -3685,  -7679,  -3685}, 0, { -9228,    990}, {0x65, 0x7b, 0x97, 0x00}}},\n    {{{  3686,  -5119,  -3685}, 0, {     0,  -2204}, {0x95, 0x9e, 0x7b, 0xff}}},\n    {{{  3686,  -7679,  -3685}, 0, {     0,    990}, {0x95, 0x9e, 0x7b, 0x00}}},\n    {{{  4506,  -5119,  -3685}, 0, {   990,  -2204}, {0x95, 0x9e, 0x7b, 0xff}}},\n    {{{  4506,  -7679,  -3685}, 0, {   990,    990}, {0x95, 0x9e, 0x7b, 0x00}}},\n};\n\n// 0x070073C8 - 0x070074C8\nstatic const Vtx totwc_seg7_vertex_070073C8[] = {\n    {{{ -3685,  -7679,  -3685}, 0, {   990,    990}, {0x97, 0xa9, 0xcd, 0x00}}},\n    {{{ -3685,  -7679,  -4505}, 0, {     0,    990}, {0x97, 0xa9, 0xcd, 0x00}}},\n    {{{ -3685,  -5119,  -4505}, 0, {     0,  -2204}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{ -3685,  -5119,  -3685}, 0, {   990,  -2204}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{ -4505,  -5119,  -4505}, 0, {     0,  -2204}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{ -4505,  -7679,  -4505}, 0, {     0,    990}, {0x97, 0xa9, 0xcd, 0x00}}},\n    {{{ -4505,  -5119,  -3685}, 0, {   990,  -2204}, {0x97, 0xa9, 0xcd, 0xff}}},\n    {{{ -4505,  -7679,  -3685}, 0, {   990,    990}, {0x97, 0xa9, 0xcd, 0x00}}},\n    {{{  4506,  -5119,   4506}, 0, { 11210,  -2204}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{  4506,  -7679,   4506}, 0, { 11210,    990}, {0xcd, 0xc4, 0x97, 0x00}}},\n    {{{  4506,  -5119,   3686}, 0, { 10188,  -2204}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{  4506,  -7679,   3686}, 0, { 10188,    990}, {0xcd, 0xc4, 0x97, 0x00}}},\n    {{{  3686,  -7679,   3686}, 0, { 10188,    990}, {0xcd, 0xc4, 0x97, 0x00}}},\n    {{{  3686,  -7679,   4506}, 0, { 11210,    990}, {0xcd, 0xc4, 0x97, 0x00}}},\n    {{{  3686,  -5119,   4506}, 0, { 11210,  -2204}, {0xcd, 0xc4, 0x97, 0xff}}},\n    {{{  3686,  -5119,   3686}, 0, { 10188,  -2204}, {0xcd, 0xc4, 0x97, 0xff}}},\n};\n\n// 0x070074C8 - 0x070075C8\nstatic const Vtx totwc_seg7_vertex_070074C8[] = {\n    {{{  -469,  -7679,   1135}, 0, {   350,  13700}, {0x9b, 0x51, 0x20, 0x00}}},\n    {{{  -469,  -5119,   1135}, 0, {   350,   7468}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{ -1134,  -5119,    470}, 0, {  2638,   7468}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{ -1134,  -7679,    470}, 0, {  2638,  13700}, {0x9b, 0x51, 0x20, 0x00}}},\n    {{{   470,  -7679,  -1134}, 0, {  2638,  13700}, {0x9b, 0x51, 0x20, 0x00}}},\n    {{{  1135,  -5119,   -469}, 0, {   350,   7468}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{  1135,  -7679,   -469}, 0, {   350,  13700}, {0x9b, 0x51, 0x20, 0x00}}},\n    {{{   470,  -5119,  -1134}, 0, {  2638,   7468}, {0x9b, 0x51, 0x20, 0xff}}},\n    {{{   470,  -7679,   1135}, 0, {   346,  13700}, {0x7d, 0x3e, 0x1c, 0x00}}},\n    {{{  -469,  -5119,   1135}, 0, {  2636,   7468}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{  -469,  -7679,   1135}, 0, {  2636,  13700}, {0x7d, 0x3e, 0x1c, 0x00}}},\n    {{{   470,  -5119,   1135}, 0, {   346,   7468}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{  1135,  -7679,   -469}, 0, {  2638,  13700}, {0x7d, 0x3e, 0x1c, 0x00}}},\n    {{{  1135,  -5119,    470}, 0, {   350,   7468}, {0x7d, 0x3e, 0x1c, 0xff}}},\n    {{{  1135,  -7679,    470}, 0, {   350,  13700}, {0x7d, 0x3e, 0x1c, 0x00}}},\n    {{{  1135,  -5119,   -469}, 0, {  2638,   7468}, {0x7d, 0x3e, 0x1c, 0xff}}},\n};\n\n// 0x070075C8 - 0x070076C8\nstatic const Vtx totwc_seg7_vertex_070075C8[] = {\n    {{{ -1134,  -7679,    470}, 0, {   350,  13700}, {0xc3, 0x67, 0x2b, 0x00}}},\n    {{{ -1134,  -5119,    470}, 0, {   350,   7468}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{ -1134,  -5119,   -469}, 0, {  2638,   7468}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{ -1134,  -7679,   -469}, 0, {  2638,  13700}, {0xc3, 0x67, 0x2b, 0x00}}},\n    {{{  -469,  -7679,  -1134}, 0, {  2636,  13700}, {0xc3, 0x67, 0x2b, 0x00}}},\n    {{{  -469,  -5119,  -1134}, 0, {  2636,   7468}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{   470,  -5119,  -1134}, 0, {   346,   7468}, {0xc3, 0x67, 0x2b, 0xff}}},\n    {{{   470,  -7679,  -1134}, 0, {   346,  13700}, {0xc3, 0x67, 0x2b, 0x00}}},\n    {{{ -1134,  -7679,   -469}, 0, {  2604,  13704}, {0xe4, 0x87, 0x39, 0x00}}},\n    {{{  -469,  -5119,  -1134}, 0, {   330,   7468}, {0xe4, 0x87, 0x39, 0xff}}},\n    {{{  -469,  -7679,  -1134}, 0, {   316,  13700}, {0xe4, 0x87, 0x39, 0x00}}},\n    {{{ -1134,  -5119,   -469}, 0, {  2620,   7474}, {0xe4, 0x87, 0x39, 0xff}}},\n    {{{  1135,  -7679,    470}, 0, {   322,  13686}, {0x5d, 0x2e, 0x00, 0x00}}},\n    {{{  1135,  -5119,    470}, 0, {   338,   7454}, {0x5d, 0x2e, 0x00, 0xff}}},\n    {{{   470,  -5119,   1135}, 0, {  2626,   7460}, {0x5d, 0x2e, 0x00, 0xff}}},\n    {{{   470,  -7679,   1135}, 0, {  2612,  13692}, {0x5d, 0x2e, 0x00, 0x00}}},\n};\n\n// 0x070076C8 - 0x07007808\nstatic const Gfx totwc_seg7_dl_070076C8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, totwc_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(totwc_seg7_vertex_070070C8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  8, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(totwc_seg7_vertex_070071C8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 15, 12, 14, 0x0),\n    gsSPVertex(totwc_seg7_vertex_070072C8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(totwc_seg7_vertex_070073C8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 15, 12, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007808 - 0x070078B8\nstatic const Gfx totwc_seg7_dl_07007808[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(totwc_seg7_vertex_070074C8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(totwc_seg7_vertex_070075C8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070078B8 - 0x07007930\nconst Gfx totwc_seg7_dl_070078B8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(totwc_seg7_dl_070076C8),\n    gsSPDisplayList(totwc_seg7_dl_07007808),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/totwc/areas/1/collision.inc.c",
    "content": "// 0x07007A18 - 0x070088AC\nconst Collision totwc_seg7_collision[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0xE5),\n    COL_VERTEX(883, -2047, 1260),\n    COL_VERTEX(883, -1842, 1260),\n    COL_VERTEX(629, -2457, 1514),\n    COL_VERTEX(627, -1842, 1514),\n    COL_VERTEX(219, -2047, 1515),\n    COL_VERTEX(219, -1842, 1515),\n    COL_VERTEX(774, -1842, 1152),\n    COL_VERTEX(593, -1842, 1333),\n    COL_VERTEX(219, -1842, 1362),\n    COL_VERTEX(525, -1842, 1360),\n    COL_VERTEX(219, -2047, 1362),\n    COL_VERTEX(-626, -1842, 1514),\n    COL_VERTEX(-216, -1842, 1514),\n    COL_VERTEX(-216, -1842, 1360),\n    COL_VERTEX(-216, -2047, 1360),\n    COL_VERTEX(-216, -2047, 1514),\n    COL_VERTEX(-626, -2457, 1514),\n    COL_VERTEX(-807, -1842, 1115),\n    COL_VERTEX(-524, -1842, 1360),\n    COL_VERTEX(-590, -1842, 1333),\n    COL_VERTEX(1333, -1842, -590),\n    COL_VERTEX(1360, -2047, -521),\n    COL_VERTEX(1360, -2047, -216),\n    COL_VERTEX(1360, -1842, -521),\n    COL_VERTEX(1514, -2047, -216),\n    COL_VERTEX(1514, -2457, -626),\n    COL_VERTEX(1224, -2047, -916),\n    COL_VERTEX(1333, -2047, -590),\n    COL_VERTEX(1115, -2047, -807),\n    COL_VERTEX(1514, -2047, 217),\n    COL_VERTEX(1514, -2457, 627),\n    COL_VERTEX(1150, -1842, 773),\n    COL_VERTEX(1514, -1842, 627),\n    COL_VERTEX(1360, -2047, 217),\n    COL_VERTEX(1360, -2047, 525),\n    COL_VERTEX(1333, -2047, 591),\n    COL_VERTEX(1150, -2047, 773),\n    COL_VERTEX(1260, -2047, 880),\n    COL_VERTEX(774, -2047, 1152),\n    COL_VERTEX(593, -2047, 1333),\n    COL_VERTEX(525, -2047, 1360),\n    COL_VERTEX(-1359, -1842, -524),\n    COL_VERTEX(-1332, -2047, -590),\n    COL_VERTEX(-1359, -2047, -524),\n    COL_VERTEX(-1332, -1842, -590),\n    COL_VERTEX(-1151, -1842, -771),\n    COL_VERTEX(-1513, -1842, -216),\n    COL_VERTEX(-1513, -2457, -626),\n    COL_VERTEX(-1513, -2047, -216),\n    COL_VERTEX(-1359, -2047, -216),\n    COL_VERTEX(-1151, -2047, -771),\n    COL_VERTEX(-1259, -2047, -879),\n    COL_VERTEX(-1223, -2047, 917),\n    COL_VERTEX(-1513, -2457, 627),\n    COL_VERTEX(-1223, -1842, 917),\n    COL_VERTEX(-1513, -1842, 627),\n    COL_VERTEX(-1359, -1842, 217),\n    COL_VERTEX(-1513, -2047, 217),\n    COL_VERTEX(-773, -2047, -1151),\n    COL_VERTEX(-882, -2047, -1259),\n    COL_VERTEX(-626, -1842, -1513),\n    COL_VERTEX(-628, -2457, -1513),\n    COL_VERTEX(-216, -2047, -1513),\n    COL_VERTEX(217, -2047, -1359),\n    COL_VERTEX(217, -2047, -1513),\n    COL_VERTEX(627, -1842, -1513),\n    COL_VERTEX(625, -2457, -1514),\n    COL_VERTEX(-1114, -2047, 808),\n    COL_VERTEX(-916, -2047, 1224),\n    COL_VERTEX(917, -2047, -1223),\n    COL_VERTEX(-592, -2047, -1332),\n    COL_VERTEX(-524, -2047, -1359),\n    COL_VERTEX(-216, -2047, -1359),\n    COL_VERTEX(523, -2047, -1361),\n    COL_VERTEX(591, -2047, -1332),\n    COL_VERTEX(808, -2047, -1114),\n    COL_VERTEX(-807, -2047, 1115),\n    COL_VERTEX(-590, -2047, 1333),\n    COL_VERTEX(-524, -2047, 1360),\n    COL_VERTEX(-1359, -2047, 217),\n    COL_VERTEX(-1359, -2047, 525),\n    COL_VERTEX(-1332, -2047, 591),\n    COL_VERTEX(-916, -1842, 1224),\n    COL_VERTEX(1514, -1842, -626),\n    COL_VERTEX(1360, -1842, -216),\n    COL_VERTEX(1514, -1842, -216),\n    COL_VERTEX(1224, -1842, -916),\n    COL_VERTEX(1115, -1842, -807),\n    COL_VERTEX(1514, -1842, 217),\n    COL_VERTEX(1260, -1842, 880),\n    COL_VERTEX(1333, -1842, 591),\n    COL_VERTEX(1360, -1842, 217),\n    COL_VERTEX(1360, -1842, 525),\n    COL_VERTEX(-1513, -1842, -626),\n    COL_VERTEX(-1359, -1842, -216),\n    COL_VERTEX(-1259, -1842, -879),\n    COL_VERTEX(-1513, -1842, 217),\n    COL_VERTEX(-1114, -1842, 808),\n    COL_VERTEX(-1332, -1842, 591),\n    COL_VERTEX(-1359, -1842, 525),\n    COL_VERTEX(-882, -1842, -1259),\n    COL_VERTEX(-773, -1842, -1151),\n    COL_VERTEX(-216, -1842, -1513),\n    COL_VERTEX(-216, -1842, -1359),\n    COL_VERTEX(-592, -1842, -1332),\n    COL_VERTEX(-524, -1842, -1359),\n    COL_VERTEX(217, -1842, -1513),\n    COL_VERTEX(217, -1842, -1359),\n    COL_VERTEX(917, -1842, -1223),\n    COL_VERTEX(523, -1842, -1361),\n    COL_VERTEX(591, -1842, -1332),\n    COL_VERTEX(808, -1842, -1114),\n    COL_VERTEX(7168, -8191, -8191),\n    COL_VERTEX(-7167, -8191, -7167),\n    COL_VERTEX(7168, -8191, -7167),\n    COL_VERTEX(-7167, -8191, -8191),\n    COL_VERTEX(7168, -8191, 8192),\n    COL_VERTEX(8192, -8191, -8191),\n    COL_VERTEX(-8191, -8191, 8192),\n    COL_VERTEX(-7167, -8191, 8192),\n    COL_VERTEX(-8191, -8191, -8191),\n    COL_VERTEX(7168, -8191, 7168),\n    COL_VERTEX(8192, -8191, 8192),\n    COL_VERTEX(-7167, -8191, 7168),\n    COL_VERTEX(4608, 2048, -3583),\n    COL_VERTEX(4608, 2048, -4607),\n    COL_VERTEX(4403, 2355, -3788),\n    COL_VERTEX(3584, 2048, -4607),\n    COL_VERTEX(3584, 2048, -3583),\n    COL_VERTEX(3789, 2355, -3788),\n    COL_VERTEX(3789, 2355, -4402),\n    COL_VERTEX(4403, 2355, -4402),\n    COL_VERTEX(4506, -5119, -3685),\n    COL_VERTEX(4506, 1024, -3685),\n    COL_VERTEX(3686, 1024, -3685),\n    COL_VERTEX(3686, 2048, -3685),\n    COL_VERTEX(3686, -5119, -3685),\n    COL_VERTEX(3686, 1024, -4505),\n    COL_VERTEX(3686, 2048, -4505),\n    COL_VERTEX(4506, 2048, -3685),\n    COL_VERTEX(3686, -5119, -4505),\n    COL_VERTEX(4506, 2048, -4505),\n    COL_VERTEX(4506, 1024, -4505),\n    COL_VERTEX(4506, -5119, -4505),\n    COL_VERTEX(4096, 3994, -4095),\n    COL_VERTEX(-3583, 2048, -3583),\n    COL_VERTEX(-4402, 2355, -3788),\n    COL_VERTEX(-3583, 2048, -4607),\n    COL_VERTEX(-4607, 2048, -3583),\n    COL_VERTEX(-3685, -5119, -3685),\n    COL_VERTEX(-3685, -5119, -4505),\n    COL_VERTEX(-4505, -5119, -3685),\n    COL_VERTEX(-4505, -5119, -4505),\n    COL_VERTEX(-4095, 3994, -4095),\n    COL_VERTEX(-3788, 2355, -4402),\n    COL_VERTEX(-4505, 1024, -3685),\n    COL_VERTEX(-3685, 1024, -3685),\n    COL_VERTEX(-4505, 1024, -4505),\n    COL_VERTEX(-3685, 1024, -4505),\n    COL_VERTEX(4506, 1024, 4506),\n    COL_VERTEX(4506, 1024, 3686),\n    COL_VERTEX(3686, 1024, 4506),\n    COL_VERTEX(3686, 1024, 3686),\n    COL_VERTEX(3584, 2048, 4608),\n    COL_VERTEX(3789, 2355, 4403),\n    COL_VERTEX(3584, 2048, 3584),\n    COL_VERTEX(4608, 2048, 3584),\n    COL_VERTEX(4608, 2048, 4608),\n    COL_VERTEX(4096, 3994, 4096),\n    COL_VERTEX(4403, 2355, 3789),\n    COL_VERTEX(4506, -5119, 4506),\n    COL_VERTEX(4506, -5119, 3686),\n    COL_VERTEX(3686, -5119, 4506),\n    COL_VERTEX(3686, -5119, 3686),\n    COL_VERTEX(-3583, 2048, 4608),\n    COL_VERTEX(-4402, 2355, 4403),\n    COL_VERTEX(-3788, 2355, 4403),\n    COL_VERTEX(-4607, 2048, 4608),\n    COL_VERTEX(-3583, 2048, 3584),\n    COL_VERTEX(-3788, 2355, 3789),\n    COL_VERTEX(-4402, 2355, 3789),\n    COL_VERTEX(-4505, 1024, 3686),\n    COL_VERTEX(-4505, -5119, 3686),\n    COL_VERTEX(-3685, -5119, 3686),\n    COL_VERTEX(-3685, 1024, 3686),\n    COL_VERTEX(-3685, -5119, 4506),\n    COL_VERTEX(-3685, 1024, 4506),\n    COL_VERTEX(-4505, 1024, 4506),\n    COL_VERTEX(-4505, -5119, 4506),\n    COL_VERTEX(-3685, 2048, 4506),\n    COL_VERTEX(-4505, 2048, 4506),\n    COL_VERTEX(-4505, 2048, 3686),\n    COL_VERTEX(-3685, 2048, 3686),\n    COL_VERTEX(470, -2866, 1135),\n    COL_VERTEX(-469, -2866, 1135),\n    COL_VERTEX(1135, -2866, 470),\n    COL_VERTEX(-1134, -2866, -469),\n    COL_VERTEX(-469, -2866, -1134),\n    COL_VERTEX(470, -2866, -1134),\n    COL_VERTEX(1135, -2866, -469),\n    COL_VERTEX(1135, -5119, 470),\n    COL_VERTEX(1135, -5119, -469),\n    COL_VERTEX(470, -5119, 1135),\n    COL_VERTEX(-469, -5119, 1135),\n    COL_VERTEX(-1134, -2866, 470),\n    COL_VERTEX(-1134, -5119, 470),\n    COL_VERTEX(-1134, -5119, -469),\n    COL_VERTEX(-469, -5119, -1134),\n    COL_VERTEX(470, -5119, -1134),\n    COL_VERTEX(-4607, 2048, -4607),\n    COL_VERTEX(-3788, 2355, -3788),\n    COL_VERTEX(-4402, 2355, -4402),\n    COL_VERTEX(-4505, 2048, -3685),\n    COL_VERTEX(-4505, 2048, -4505),\n    COL_VERTEX(-3685, 2048, -4505),\n    COL_VERTEX(-3685, 2048, -3685),\n    COL_VERTEX(3686, 2048, 4506),\n    COL_VERTEX(4506, 2048, 4506),\n    COL_VERTEX(3686, 2048, 3686),\n    COL_VERTEX(4506, 2048, 3686),\n    COL_VERTEX(4403, 2355, 4403),\n    COL_VERTEX(3789, 2355, 3789),\n    COL_VERTEX(-4607, 2048, 3584),\n    COL_VERTEX(-4095, 3994, 4096),\n    COL_VERTEX(7168, -8191, 0),\n    COL_VERTEX(0, -8191, 7168),\n    COL_VERTEX(0, -8191, 0),\n    COL_VERTEX(0, -8191, -7167),\n    COL_VERTEX(-7167, -8191, 0),\n    COL_TRI_INIT(SURFACE_DEFAULT, 182),\n    COL_TRI(124, 125, 126),\n    COL_TRI(124, 127, 125),\n    COL_TRI(124, 128, 127),\n    COL_TRI(129, 127, 128),\n    COL_TRI(128, 126, 129),\n    COL_TRI(128, 124, 126),\n    COL_TRI(129, 130, 127),\n    COL_TRI(125, 127, 130),\n    COL_TRI(125, 130, 131),\n    COL_TRI(125, 131, 126),\n    COL_TRI(132, 133, 134),\n    COL_TRI(133, 135, 134),\n    COL_TRI(132, 134, 136),\n    COL_TRI(136, 134, 137),\n    COL_TRI(144, 131, 130),\n    COL_TRI(133, 139, 135),\n    COL_TRI(134, 135, 138),\n    COL_TRI(137, 138, 141),\n    COL_TRI(134, 138, 137),\n    COL_TRI(136, 137, 140),\n    COL_TRI(140, 137, 142),\n    COL_TRI(137, 141, 142),\n    COL_TRI(142, 141, 139),\n    COL_TRI(140, 142, 143),\n    COL_TRI(142, 139, 133),\n    COL_TRI(143, 142, 133),\n    COL_TRI(143, 133, 132),\n    COL_TRI(131, 144, 126),\n    COL_TRI(129, 144, 130),\n    COL_TRI(144, 129, 126),\n    COL_TRI(145, 148, 209),\n    COL_TRI(145, 209, 147),\n    COL_TRI(145, 147, 154),\n    COL_TRI(145, 154, 210),\n    COL_TRI(146, 211, 209),\n    COL_TRI(146, 209, 148),\n    COL_TRI(147, 209, 211),\n    COL_TRI(147, 211, 154),\n    COL_TRI(148, 210, 146),\n    COL_TRI(153, 146, 210),\n    COL_TRI(148, 145, 210),\n    COL_TRI(149, 156, 155),\n    COL_TRI(149, 155, 151),\n    COL_TRI(150, 156, 149),\n    COL_TRI(150, 158, 156),\n    COL_TRI(151, 155, 157),\n    COL_TRI(151, 157, 152),\n    COL_TRI(152, 158, 150),\n    COL_TRI(152, 157, 158),\n    COL_TRI(146, 153, 211),\n    COL_TRI(159, 216, 161),\n    COL_TRI(153, 154, 211),\n    COL_TRI(154, 153, 210),\n    COL_TRI(155, 212, 213),\n    COL_TRI(155, 213, 157),\n    COL_TRI(156, 212, 155),\n    COL_TRI(157, 213, 214),\n    COL_TRI(157, 214, 158),\n    COL_TRI(156, 215, 212),\n    COL_TRI(158, 214, 215),\n    COL_TRI(158, 215, 156),\n    COL_TRI(165, 167, 163),\n    COL_TRI(159, 217, 216),\n    COL_TRI(160, 217, 159),\n    COL_TRI(160, 219, 217),\n    COL_TRI(161, 216, 218),\n    COL_TRI(161, 218, 162),\n    COL_TRI(162, 219, 160),\n    COL_TRI(162, 218, 219),\n    COL_TRI(163, 167, 220),\n    COL_TRI(163, 220, 164),\n    COL_TRI(164, 165, 163),\n    COL_TRI(170, 161, 172),\n    COL_TRI(166, 169, 220),\n    COL_TRI(167, 166, 220),\n    COL_TRI(164, 221, 165),\n    COL_TRI(166, 221, 169),\n    COL_TRI(166, 165, 221),\n    COL_TRI(165, 166, 167),\n    COL_TRI(168, 169, 221),\n    COL_TRI(169, 168, 220),\n    COL_TRI(164, 168, 221),\n    COL_TRI(168, 164, 220),\n    COL_TRI(170, 159, 161),\n    COL_TRI(171, 159, 170),\n    COL_TRI(174, 177, 178),\n    COL_TRI(171, 160, 159),\n    COL_TRI(172, 161, 162),\n    COL_TRI(172, 162, 173),\n    COL_TRI(173, 160, 171),\n    COL_TRI(173, 162, 160),\n    COL_TRI(174, 178, 176),\n    COL_TRI(175, 177, 174),\n    COL_TRI(176, 175, 174),\n    COL_TRI(175, 222, 177),\n    COL_TRI(177, 222, 178),\n    COL_TRI(178, 179, 176),\n    COL_TRI(179, 178, 222),\n    COL_TRI(180, 179, 222),\n    COL_TRI(175, 180, 222),\n    COL_TRI(181, 184, 183),\n    COL_TRI(182, 181, 183),\n    COL_TRI(183, 184, 185),\n    COL_TRI(184, 186, 185),\n    COL_TRI(181, 191, 184),\n    COL_TRI(185, 186, 188),\n    COL_TRI(186, 187, 188),\n    COL_TRI(187, 181, 182),\n    COL_TRI(188, 187, 182),\n    COL_TRI(187, 190, 181),\n    COL_TRI(189, 190, 187),\n    COL_TRI(186, 189, 187),\n    COL_TRI(190, 191, 181),\n    COL_TRI(191, 192, 184),\n    COL_TRI(179, 180, 223),\n    COL_TRI(179, 223, 176),\n    COL_TRI(175, 176, 223),\n    COL_TRI(175, 223, 180),\n    COL_TRI(184, 192, 186),\n    COL_TRI(192, 189, 186),\n    COL_TRI(193, 2, 16),\n    COL_TRI(193, 16, 194),\n    COL_TRI(194, 16, 53),\n    COL_TRI(16, 68, 52),\n    COL_TRI(195, 2, 193),\n    COL_TRI(195, 30, 2),\n    COL_TRI(16, 2, 4),\n    COL_TRI(0, 2, 30),\n    COL_TRI(16, 4, 15),\n    COL_TRI(51, 15, 4),\n    COL_TRI(51, 4, 0),\n    COL_TRI(51, 68, 15),\n    COL_TRI(51, 52, 68),\n    COL_TRI(47, 51, 59),\n    COL_TRI(51, 62, 59),\n    COL_TRI(29, 30, 25),\n    COL_TRI(51, 48, 57),\n    COL_TRI(51, 57, 52),\n    COL_TRI(51, 29, 24),\n    COL_TRI(51, 37, 29),\n    COL_TRI(48, 47, 53),\n    COL_TRI(53, 57, 48),\n    COL_TRI(52, 53, 16),\n    COL_TRI(51, 0, 37),\n    COL_TRI(30, 37, 0),\n    COL_TRI(25, 24, 29),\n    COL_TRI(53, 47, 196),\n    COL_TRI(51, 24, 26),\n    COL_TRI(51, 26, 69),\n    COL_TRI(26, 25, 66),\n    COL_TRI(66, 69, 26),\n    COL_TRI(51, 69, 64),\n    COL_TRI(64, 66, 61),\n    COL_TRI(61, 62, 64),\n    COL_TRI(51, 64, 62),\n    COL_TRI(59, 61, 47),\n    COL_TRI(196, 47, 61),\n    COL_TRI(196, 61, 197),\n    COL_TRI(197, 61, 66),\n    COL_TRI(197, 66, 198),\n    COL_TRI(66, 25, 199),\n    COL_TRI(198, 66, 199),\n    COL_TRI(199, 25, 30),\n    COL_TRI(199, 30, 195),\n    COL_TRI(200, 195, 193),\n    COL_TRI(201, 199, 195),\n    COL_TRI(201, 195, 200),\n    COL_TRI(200, 193, 202),\n    COL_TRI(202, 193, 194),\n    COL_TRI(202, 194, 203),\n    COL_TRI(203, 194, 204),\n    COL_TRI(194, 53, 204),\n    COL_TRI(204, 53, 196),\n    COL_TRI(203, 204, 205),\n    COL_TRI(205, 204, 196),\n    COL_TRI(205, 196, 206),\n    COL_TRI(206, 196, 197),\n    COL_TRI(206, 197, 207),\n    COL_TRI(207, 197, 198),\n    COL_TRI(208, 198, 199),\n    COL_TRI(207, 198, 208),\n    COL_TRI(208, 199, 201),\n    COL_TRI_INIT(SURFACE_DEATH_PLANE, 8),\n    COL_TRI(224, 225, 121),\n    COL_TRI(224, 226, 225),\n    COL_TRI(114, 226, 224),\n    COL_TRI(227, 228, 226),\n    COL_TRI(114, 227, 226),\n    COL_TRI(226, 123, 225),\n    COL_TRI(226, 228, 123),\n    COL_TRI(227, 113, 228),\n    COL_TRI_INIT(SURFACE_WARP, 8),\n    COL_TRI(112, 113, 114),\n    COL_TRI(112, 115, 113),\n    COL_TRI(116, 117, 112),\n    COL_TRI(115, 118, 119),\n    COL_TRI(115, 120, 118),\n    COL_TRI(121, 119, 116),\n    COL_TRI(116, 122, 117),\n    COL_TRI(121, 123, 119),\n    COL_TRI_INIT(SURFACE_NO_CAM_COLLISION, 152),\n    COL_TRI(0, 1, 2),\n    COL_TRI(1, 3, 2),\n    COL_TRI(4, 2, 5),\n    COL_TRI(2, 3, 5),\n    COL_TRI(3, 1, 6),\n    COL_TRI(7, 3, 6),\n    COL_TRI(8, 5, 3),\n    COL_TRI(8, 3, 9),\n    COL_TRI(3, 7, 9),\n    COL_TRI(4, 5, 8),\n    COL_TRI(4, 8, 10),\n    COL_TRI(11, 12, 13),\n    COL_TRI(14, 13, 12),\n    COL_TRI(10, 8, 9),\n    COL_TRI(14, 12, 15),\n    COL_TRI(16, 11, 82),\n    COL_TRI(17, 82, 11),\n    COL_TRI(11, 13, 18),\n    COL_TRI(11, 18, 19),\n    COL_TRI(11, 19, 17),\n    COL_TRI(12, 11, 16),\n    COL_TRI(16, 82, 68),\n    COL_TRI(12, 16, 15),\n    COL_TRI(20, 23, 83),\n    COL_TRI(21, 23, 20),\n    COL_TRI(68, 82, 17),\n    COL_TRI(22, 23, 21),\n    COL_TRI(22, 84, 23),\n    COL_TRI(24, 85, 84),\n    COL_TRI(24, 84, 22),\n    COL_TRI(23, 84, 85),\n    COL_TRI(25, 83, 85),\n    COL_TRI(25, 85, 24),\n    COL_TRI(23, 85, 83),\n    COL_TRI(26, 83, 25),\n    COL_TRI(26, 86, 83),\n    COL_TRI(20, 83, 86),\n    COL_TRI(20, 86, 87),\n    COL_TRI(27, 20, 87),\n    COL_TRI(21, 20, 27),\n    COL_TRI(31, 89, 32),\n    COL_TRI(28, 86, 26),\n    COL_TRI(28, 87, 86),\n    COL_TRI(27, 87, 28),\n    COL_TRI(29, 32, 30),\n    COL_TRI(29, 88, 32),\n    COL_TRI(30, 32, 89),\n    COL_TRI(31, 32, 90),\n    COL_TRI(32, 88, 91),\n    COL_TRI(32, 91, 92),\n    COL_TRI(32, 92, 90),\n    COL_TRI(30, 89, 37),\n    COL_TRI(33, 91, 88),\n    COL_TRI(33, 88, 29),\n    COL_TRI(34, 91, 33),\n    COL_TRI(34, 92, 91),\n    COL_TRI(35, 92, 34),\n    COL_TRI(35, 90, 92),\n    COL_TRI(36, 31, 90),\n    COL_TRI(36, 90, 35),\n    COL_TRI(37, 31, 36),\n    COL_TRI(37, 89, 31),\n    COL_TRI(43, 41, 94),\n    COL_TRI(38, 1, 0),\n    COL_TRI(38, 6, 1),\n    COL_TRI(39, 6, 38),\n    COL_TRI(39, 7, 6),\n    COL_TRI(40, 9, 7),\n    COL_TRI(40, 7, 39),\n    COL_TRI(10, 9, 40),\n    COL_TRI(41, 93, 46),\n    COL_TRI(41, 46, 94),\n    COL_TRI(42, 41, 43),\n    COL_TRI(47, 95, 51),\n    COL_TRI(45, 95, 93),\n    COL_TRI(45, 93, 44),\n    COL_TRI(46, 93, 47),\n    COL_TRI(47, 93, 95),\n    COL_TRI(44, 93, 41),\n    COL_TRI(48, 46, 47),\n    COL_TRI(49, 46, 48),\n    COL_TRI(49, 94, 46),\n    COL_TRI(43, 94, 49),\n    COL_TRI(50, 45, 44),\n    COL_TRI(51, 95, 45),\n    COL_TRI(51, 45, 50),\n    COL_TRI(42, 44, 41),\n    COL_TRI(50, 44, 42),\n    COL_TRI(52, 54, 53),\n    COL_TRI(53, 96, 57),\n    COL_TRI(54, 55, 53),\n    COL_TRI(53, 55, 96),\n    COL_TRI(55, 54, 97),\n    COL_TRI(55, 97, 98),\n    COL_TRI(55, 98, 99),\n    COL_TRI(55, 99, 56),\n    COL_TRI(56, 96, 55),\n    COL_TRI(57, 96, 56),\n    COL_TRI(60, 105, 103),\n    COL_TRI(57, 56, 79),\n    COL_TRI(58, 100, 59),\n    COL_TRI(59, 60, 61),\n    COL_TRI(59, 100, 60),\n    COL_TRI(58, 101, 100),\n    COL_TRI(60, 100, 101),\n    COL_TRI(61, 60, 102),\n    COL_TRI(60, 103, 102),\n    COL_TRI(60, 101, 104),\n    COL_TRI(60, 104, 105),\n    COL_TRI(65, 111, 108),\n    COL_TRI(61, 102, 62),\n    COL_TRI(62, 102, 103),\n    COL_TRI(62, 103, 72),\n    COL_TRI(63, 106, 64),\n    COL_TRI(64, 106, 65),\n    COL_TRI(64, 65, 66),\n    COL_TRI(63, 107, 106),\n    COL_TRI(65, 106, 107),\n    COL_TRI(66, 65, 108),\n    COL_TRI(65, 107, 109),\n    COL_TRI(65, 109, 110),\n    COL_TRI(65, 110, 111),\n    COL_TRI(70, 104, 101),\n    COL_TRI(66, 108, 69),\n    COL_TRI(67, 54, 52),\n    COL_TRI(67, 97, 54),\n    COL_TRI(68, 17, 76),\n    COL_TRI(69, 108, 111),\n    COL_TRI(69, 111, 75),\n    COL_TRI(71, 104, 70),\n    COL_TRI(71, 105, 104),\n    COL_TRI(70, 101, 58),\n    COL_TRI(72, 103, 105),\n    COL_TRI(72, 105, 71),\n    COL_TRI(73, 107, 63),\n    COL_TRI(73, 109, 107),\n    COL_TRI(74, 109, 73),\n    COL_TRI(78, 13, 14),\n    COL_TRI(74, 110, 109),\n    COL_TRI(75, 111, 110),\n    COL_TRI(75, 110, 74),\n    COL_TRI(76, 19, 77),\n    COL_TRI(76, 17, 19),\n    COL_TRI(77, 19, 18),\n    COL_TRI(77, 18, 78),\n    COL_TRI(78, 18, 13),\n    COL_TRI(79, 99, 80),\n    COL_TRI(79, 56, 99),\n    COL_TRI(80, 99, 98),\n    COL_TRI(80, 98, 81),\n    COL_TRI(81, 98, 97),\n    COL_TRI(81, 97, 67),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(23),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_null_start,   /*pos*/ -4095,  2935,     0, /*yaw*/ 64), // unused, probably an early way to set initial position\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/  4608,  -357,  -511, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/ -4095,   666,   512, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/ -5631, -1893,  6144, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/ -2047,  -869,  2048, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/  1024,  1178,  1536, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/ -2047,  -357, -2559, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/  2560, -2917,  2560, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/  1024,  1178,  4096, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/ -1023,  -869,  5632, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/ -5119, -2405,  1024, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/   512, -2917,  3584, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/  1024, -1893, -3071, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/  -511,  -869, -4095, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/  4608, -3429,  1536, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/  6144, -3429, -5119, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/ -2559, -2405, -6655, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/  3072,  -869,  5632, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/  6144, -1381,  -511, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/  4096,   666, -1535, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/ -4607, -1381, -2559, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/ -1535, -2917, -6143, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/  2560, -3429, -3583, /*yaw*/  0),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/totwc/areas/1/geo.inc.c",
    "content": "// 0x0E000188\nconst GeoLayout totwc_geo_000188[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND(BACKGROUND_BELOW_CLOUDS, geo_skybox_main),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 25000, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(16, 0, 2000, 6000, 0, 0, 0, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, totwc_seg7_dl_07005D28),\n                    GEO_DISPLAY_LIST(LAYER_TRANSPARENT, totwc_seg7_dl_07007048),\n                    GEO_DISPLAY_LIST(LAYER_TRANSPARENT, totwc_seg7_dl_070078B8),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(0, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/totwc/areas/1/macro.inc.c",
    "content": "// 0x070088AC - 0x070089C6\nconst MacroObject totwc_seg7_macro_objs[] = {\n    MACRO_OBJECT(/*preset*/ macro_box_wing_cap,              /*yaw*/   0, /*pos*/     0, -1760,  -600),\n    MACRO_OBJECT(/*preset*/ macro_coin_ring_vertical_flying, /*yaw*/  90, /*pos*/     0, -1000,  3000),\n    MACRO_OBJECT(/*preset*/ macro_coin_ring_vertical_flying, /*yaw*/   0, /*pos*/ -3500,  -200,     0),\n    MACRO_OBJECT(/*preset*/ macro_coin_ring_vertical_flying, /*yaw*/   0, /*pos*/  4500,  1400,     0),\n    MACRO_OBJECT(/*preset*/ macro_coin_ring_vertical_flying, /*yaw*/  90, /*pos*/     0,   600, -4000),\n    MACRO_OBJECT(/*preset*/ macro_red_coin,                  /*yaw*/   0, /*pos*/  -100,   800, -4000),\n    MACRO_OBJECT(/*preset*/ macro_red_coin,                  /*yaw*/   0, /*pos*/ -3500,     0,   100),\n    MACRO_OBJECT(/*preset*/ macro_red_coin,                  /*yaw*/   0, /*pos*/   100,  -800,  3000),\n    MACRO_OBJECT(/*preset*/ macro_red_coin,                  /*yaw*/   0, /*pos*/  4500,  1600,  -100),\n    MACRO_OBJECT(/*preset*/ macro_red_coin,                  /*yaw*/   0, /*pos*/   100,   800, -4000),\n    MACRO_OBJECT(/*preset*/ macro_red_coin,                  /*yaw*/   0, /*pos*/ -3500,     0,  -100),\n    MACRO_OBJECT(/*preset*/ macro_red_coin,                  /*yaw*/   0, /*pos*/  -100,  -800,  3000),\n    MACRO_OBJECT(/*preset*/ macro_red_coin,                  /*yaw*/   0, /*pos*/  4500,  1600,   100),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_1,             /*yaw*/   0, /*pos*/  2913,  1200, -2941),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_1,             /*yaw*/   0, /*pos*/  3954,  1400, -1817),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_1,             /*yaw*/   0, /*pos*/  1554,  1000, -3680),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_1,             /*yaw*/   0, /*pos*/ -2657,   400, -2742),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_1,             /*yaw*/   0, /*pos*/ -1485,   600, -3628),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_1,             /*yaw*/   0, /*pos*/ -3231,   200, -1514),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_1,             /*yaw*/   0, /*pos*/ -2197,  -400,  2142),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_1,             /*yaw*/   0, /*pos*/ -3056,  -200,  1310),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_1,             /*yaw*/   0, /*pos*/ -1144,  -600,  2742),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_1,             /*yaw*/   0, /*pos*/  3680,  1800,  1439),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_1,             /*yaw*/   0, /*pos*/  2080,  2000,  2080),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_1,             /*yaw*/   0, /*pos*/   920,  2200,  1920),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_1,             /*yaw*/   0, /*pos*/   -40,  2400,  1520),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_1,             /*yaw*/   0, /*pos*/  -960,  2600,  1040),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_1,             /*yaw*/   0, /*pos*/ -1760,  2800,   600),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/totwc/cloud/collision.inc.c",
    "content": "// Blank File\n\n"
  },
  {
    "path": "levels/totwc/cloud/geo.inc.c",
    "content": "// 0x0E000160\nconst GeoLayout totwc_geo_000160[] = {\n    GEO_CULLING_RADIUS(2000),\n    GEO_OPEN_NODE(),\n        GEO_BILLBOARD(),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, totwc_seg7_dl_070079A8),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/totwc/cloud/model.inc.c",
    "content": "// 0x07007930 - 0x07007970\nstatic const Vtx totwc_seg7_vertex_07007930[] = {\n    {{{  1024,    512,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1023,    512,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1023,   -511,      0}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1024,   -511,      0}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07007970 - 0x070079A8\nstatic const Gfx totwc_seg7_dl_07007970[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, totwc_seg7_texture_07002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(totwc_seg7_vertex_07007930, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070079A8 - 0x07007A18\nconst Gfx totwc_seg7_dl_070079A8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(totwc_seg7_dl_07007970),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/totwc/geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"game/level_geo.h\"\n#include \"game/geo_misc.h\"\n#include \"game/camera.h\"\n#include \"game/moving_texture.h\"\n#include \"game/screen_transition.h\"\n#include \"game/paintings.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"levels/totwc/header.h\"\n\n#include \"levels/totwc/cloud/geo.inc.c\"\n#include \"levels/totwc/areas/1/geo.inc.c\"\n"
  },
  {
    "path": "levels/totwc/header.h",
    "content": "#ifndef TOTWC_HEADER_H\n#define TOTWC_HEADER_H\n\n#include \"types.h\"\n\n// geo\nextern const GeoLayout totwc_geo_000160[];\nextern const GeoLayout totwc_geo_000188[];\n\n// leveldata\nextern const Gfx totwc_seg7_dl_07005D28[];\nextern const Gfx totwc_seg7_dl_07007048[];\nextern const Gfx totwc_seg7_dl_070078B8[];\nextern const Gfx totwc_seg7_dl_070079A8[];\nextern const Collision totwc_seg7_collision[];\nextern const MacroObject totwc_seg7_macro_objs[];\n\n// script\nextern const LevelScript level_totwc_entry[];\n\n#endif\n"
  },
  {
    "path": "levels/totwc/level.yaml",
    "content": "# Tower of the Wing Cap\nshort-name: totwc\nfull-name: Tower of the Wing Cap\ntexture-file: [\"/texture.inc.c\"]\narea-count: 1\nobjects: [cloud]\nshared-path: []\n# loaded files\nskybox-bin: cloud_floor\ntexture-bin: sky\neffects: false\nactor-bins: [group8]\ncommon-bin: [common0]\n"
  },
  {
    "path": "levels/totwc/leveldata.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"surface_terrains.h\"\n#include \"moving_texture_macros.h\"\n#include \"level_misc_macros.h\"\n#include \"macro_presets.h\"\n#include \"special_presets.h\"\n#include \"textures.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/totwc/texture.inc.c\"\n#include \"levels/totwc/areas/1/1/model.inc.c\"\n#include \"levels/totwc/areas/1/2/model.inc.c\"\n#include \"levels/totwc/areas/1/3/model.inc.c\"\n#include \"levels/totwc/cloud/model.inc.c\"\n#include \"levels/totwc/areas/1/collision.inc.c\"\n#include \"levels/totwc/areas/1/macro.inc.c\"\n#include \"levels/totwc/cloud/collision.inc.c\" // Blank File\n"
  },
  {
    "path": "levels/totwc/script.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"behavior_data.h\"\n#include \"model_ids.h\"\n#include \"seq_ids.h\"\n#include \"dialog_ids.h\"\n#include \"segment_symbols.h\"\n#include \"level_commands.h\"\n\n#include \"game/level_update.h\"\n\n#include \"levels/scripts.h\"\n\n#include \"actors/common1.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/totwc/header.h\"\n\nstatic const LevelScript script_func_local_1[] = {\n    OBJECT(/*model*/ MODEL_CAP_SWITCH, /*pos*/   0, -2047, 10, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvCapSwitch),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_2[] = {\n    OBJECT(/*model*/ MODEL_NONE,       /*pos*/ 800, -1700,  0, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_1), /*bhv*/ bhvHiddenRedCoinStar),\n    RETURN(),\n};\n\nconst LevelScript level_totwc_entry[] = {\n    INIT_LEVEL(),\n    LOAD_MIO0        (/*seg*/ 0x07, _totwc_segment_7SegmentRomStart, _totwc_segment_7SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x0A, _cloud_floor_skybox_mio0SegmentRomStart, _cloud_floor_skybox_mio0SegmentRomEnd),\n    LOAD_MIO0_TEXTURE(/*seg*/ 0x09, _sky_mio0SegmentRomStart, _sky_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x05, _group8_mio0SegmentRomStart, _group8_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0C, _group8_geoSegmentRomStart,  _group8_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x08, _common0_mio0SegmentRomStart, _common0_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0F, _common0_geoSegmentRomStart,  _common0_geoSegmentRomEnd),\n    ALLOC_LEVEL_POOL(),\n    MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),\n    JUMP_LINK(script_func_global_1),\n    JUMP_LINK(script_func_global_9),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_03, totwc_geo_000160),\n\n    AREA(/*index*/ 1, totwc_geo_000188),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ -4095, 2935, 0, /*angle*/ 0, 90, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvFlyingWarp),\n        WARP_NODE(/*id*/ WARP_NODE_0A,         /*destLevel*/ LEVEL_TOTWC,  /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_WARP_FLOOR, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_20, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_SUCCESS,    /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_26, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH,      /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_23, /*flags*/ WARP_NO_CHECKPOINT),\n        JUMP_LINK(script_func_local_2),\n        JUMP_LINK(script_func_local_1),\n        TERRAIN(/*terrainData*/ totwc_seg7_collision),\n        MACRO_OBJECTS(/*objList*/ totwc_seg7_macro_objs),\n        SHOW_DIALOG(/*index*/ 0x00, DIALOG_131),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0000, /*seq*/ SEQ_LEVEL_SLIDE),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_STONE),\n    END_AREA(),\n\n    FREE_LEVEL_POOL(),\n    MARIO_POS(/*area*/ 1, /*yaw*/ 90, /*pos*/ -4095, 2935, 0),\n    CALL(/*arg*/ 0, /*func*/ lvl_init_or_update),\n    CALL_LOOP(/*arg*/ 1, /*func*/ lvl_init_or_update),\n    CLEAR_LEVEL(),\n    SLEEP_BEFORE_EXIT(/*frames*/ 1),\n    EXIT(),\n};\n"
  },
  {
    "path": "levels/totwc/texture.inc.c",
    "content": "// 0x07000000 - 0x07001000\nALIGNED8 static const Texture totwc_seg7_texture_07000000[] = {\n#include \"levels/totwc/0.rgba16.inc.c\"\n};\n\n// 0x07001000 - 0x07001800\nALIGNED8 static const Texture totwc_seg7_texture_07001000[] = {\n#include \"levels/totwc/1.rgba16.inc.c\"\n};\n\n// 0x07001800 - 0x07002000\nALIGNED8 static const Texture totwc_seg7_texture_07001800[] = {\n#include \"levels/totwc/2.rgba16.inc.c\"\n};\n\n// 0x07002000 - 0x07002800\nALIGNED8 static const Texture totwc_seg7_texture_07002000[] = {\n#include \"levels/totwc/3.ia16.inc.c\"\n};\n"
  },
  {
    "path": "levels/ttc/areas/1/1/model.inc.c",
    "content": "// 0x07001000 - 0x07001018\nstatic const Lights1 ttc_seg7_lights_07001000 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07001018 - 0x07001030\nstatic const Lights1 ttc_seg7_lights_07001018 = gdSPDefLights1(\n    0x19, 0x19, 0x19,\n    0x66, 0x66, 0x66, 0x28, 0x28, 0x28\n);\n\n// 0x07001030 - 0x07001048\nstatic const Lights1 ttc_seg7_lights_07001030 = gdSPDefLights1(\n    0x26, 0x26, 0x26,\n    0x99, 0x99, 0x99, 0x28, 0x28, 0x28\n);\n\n// 0x07001048 - 0x07001060\nstatic const Lights1 ttc_seg7_lights_07001048 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07001060 - 0x07001078\nstatic const Lights1 ttc_seg7_lights_07001060 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x07001078 - 0x07001168\nstatic const Vtx ttc_seg7_vertex_07001078[] = {\n    {{{   297,   3318,   2081}, 0, {   479,      0}, {0x30, 0x1e, 0x8f, 0xff}}},\n    {{{   297,   3072,   2081}, 0, {     0,      0}, {0x57, 0x00, 0xa5, 0xff}}},\n    {{{   276,   3072,   2061}, 0, {     0,   2012}, {0x57, 0x00, 0xa5, 0xff}}},\n    {{{   641,   3318,   2081}, 0, {   479,      0}, {0x31, 0x1e, 0x90, 0xff}}},\n    {{{   641,   3072,   2081}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   621,   3072,   2061}, 0, {     0,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   621,   3277,   2061}, 0, {   403,   2012}, {0x31, 0x1e, 0x90, 0xff}}},\n    {{{   641,   3318,   2081}, 0, {     0,      0}, {0x31, 0x1e, 0x90, 0xff}}},\n    {{{   621,   3277,   2061}, 0, {    53,   2012}, {0x31, 0x1e, 0x90, 0xff}}},\n    {{{   416,   3277,   2061}, 0, {   394,   2012}, {0xd0, 0x1e, 0x8f, 0xff}}},\n    {{{   395,   3318,   2081}, 0, {   479,      0}, {0xd0, 0x1e, 0x8f, 0xff}}},\n    {{{   416,   3277,   2061}, 0, {    44,   2012}, {0xd0, 0x1e, 0x8f, 0xff}}},\n    {{{   416,   3072,   2061}, 0, {   479,   2012}, {0xa9, 0x00, 0xa5, 0xff}}},\n    {{{   395,   3072,   2081}, 0, {   479,      0}, {0xa9, 0x00, 0xa5, 0xff}}},\n    {{{   395,   3318,   2081}, 0, {     0,      0}, {0xd0, 0x1e, 0x8f, 0xff}}},\n};\n\n// 0x07001168 - 0x07001258\nstatic const Vtx ttc_seg7_vertex_07001168[] = {\n    {{{   -48,   3318,   2081}, 0, {   479,      0}, {0x30, 0x1e, 0x8f, 0xff}}},\n    {{{   -48,   3072,   2081}, 0, {     0,      0}, {0x57, 0x00, 0xa5, 0xff}}},\n    {{{   -69,   3072,   2061}, 0, {     0,   2012}, {0x57, 0x00, 0xa5, 0xff}}},\n    {{{   297,   3318,   2081}, 0, {   479,      0}, {0x30, 0x1e, 0x8f, 0xff}}},\n    {{{   276,   3072,   2061}, 0, {     0,   2012}, {0x57, 0x00, 0xa5, 0xff}}},\n    {{{   276,   3277,   2061}, 0, {   403,   2012}, {0x30, 0x1e, 0x8f, 0xff}}},\n    {{{   297,   3318,   2081}, 0, {     0,      0}, {0x30, 0x1e, 0x8f, 0xff}}},\n    {{{   276,   3277,   2061}, 0, {    53,   2012}, {0x30, 0x1e, 0x8f, 0xff}}},\n    {{{    71,   3277,   2061}, 0, {   394,   2012}, {0xcf, 0x1e, 0x90, 0xff}}},\n    {{{    51,   3318,   2081}, 0, {   479,      0}, {0xcf, 0x1e, 0x90, 0xff}}},\n    {{{    71,   3277,   2061}, 0, {    44,   2012}, {0xcf, 0x1e, 0x90, 0xff}}},\n    {{{    51,   3072,   2081}, 0, {   479,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{    51,   3318,   2081}, 0, {     0,      0}, {0xcf, 0x1e, 0x90, 0xff}}},\n    {{{    71,   3072,   2061}, 0, {   479,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   -69,   3277,   2061}, 0, {   403,   2012}, {0x30, 0x1e, 0x8f, 0xff}}},\n};\n\n// 0x07001258 - 0x07001348\nstatic const Vtx ttc_seg7_vertex_07001258[] = {\n    {{{  -394,   3318,   2081}, 0, {     0,      0}, {0x31, 0x1e, 0x90, 0xff}}},\n    {{{  -414,   3277,   2061}, 0, {    53,   2012}, {0x31, 0x1e, 0x90, 0xff}}},\n    {{{  -619,   3277,   2061}, 0, {   394,   2012}, {0xd0, 0x1e, 0x8f, 0xff}}},\n    {{{   -48,   3318,   2081}, 0, {     0,      0}, {0x30, 0x1e, 0x8f, 0xff}}},\n    {{{  -273,   3277,   2061}, 0, {   394,   2012}, {0xd0, 0x1e, 0x8f, 0xff}}},\n    {{{  -294,   3318,   2081}, 0, {   479,      0}, {0xd0, 0x1e, 0x8f, 0xff}}},\n    {{{   -69,   3277,   2061}, 0, {    53,   2012}, {0x30, 0x1e, 0x8f, 0xff}}},\n    {{{  -273,   3277,   2061}, 0, {    44,   2012}, {0xd0, 0x1e, 0x8f, 0xff}}},\n    {{{  -294,   3072,   2081}, 0, {   479,      0}, {0xa9, 0x00, 0xa5, 0xff}}},\n    {{{  -294,   3318,   2081}, 0, {     0,      0}, {0xd0, 0x1e, 0x8f, 0xff}}},\n    {{{  -273,   3072,   2061}, 0, {   479,   2012}, {0xa9, 0x00, 0xa5, 0xff}}},\n    {{{  -394,   3318,   2081}, 0, {   479,      0}, {0x31, 0x1e, 0x90, 0xff}}},\n    {{{  -394,   3072,   2081}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -414,   3072,   2061}, 0, {     0,   2012}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -414,   3277,   2061}, 0, {   403,   2012}, {0x31, 0x1e, 0x90, 0xff}}},\n};\n\n// 0x07001348 - 0x07001438\nstatic const Vtx ttc_seg7_vertex_07001348[] = {\n    {{{   296,   1392,   2081}, 0, {   479,      0}, {0x31, 0x1e, 0x90, 0xff}}},\n    {{{   276,   1146,   2061}, 0, {     0,   2012}, {0x31, 0xe2, 0x90, 0xff}}},\n    {{{   276,   1351,   2061}, 0, {   403,   2012}, {0x31, 0x1e, 0x90, 0xff}}},\n    {{{  -394,   3318,   2081}, 0, {     0,      0}, {0x31, 0x1e, 0x90, 0xff}}},\n    {{{  -619,   3277,   2061}, 0, {   394,   2012}, {0xd0, 0x1e, 0x8f, 0xff}}},\n    {{{  -640,   3318,   2081}, 0, {   479,      0}, {0xd0, 0x1e, 0x8f, 0xff}}},\n    {{{  -619,   3277,   2061}, 0, {    44,   2012}, {0xd0, 0x1e, 0x8f, 0xff}}},\n    {{{  -640,   3072,   2081}, 0, {   479,      0}, {0xa9, 0x00, 0xa5, 0xff}}},\n    {{{  -640,   3318,   2081}, 0, {     0,      0}, {0xd0, 0x1e, 0x8f, 0xff}}},\n    {{{  -619,   3072,   2061}, 0, {   479,   2012}, {0xa9, 0x00, 0xa5, 0xff}}},\n    {{{   296,   1392,   2081}, 0, {     0,      0}, {0x31, 0x1e, 0x90, 0xff}}},\n    {{{   276,   1351,   2061}, 0, {    53,   2012}, {0x31, 0x1e, 0x90, 0xff}}},\n    {{{    71,   1351,   2061}, 0, {   394,   2012}, {0xcf, 0x1e, 0x90, 0xff}}},\n    {{{    51,   1392,   2081}, 0, {   479,      0}, {0xcf, 0x1e, 0x90, 0xff}}},\n    {{{   296,   1105,   2081}, 0, {     0,      0}, {0x31, 0xe2, 0x90, 0xff}}},\n};\n\n// 0x07001438 - 0x07001528\nstatic const Vtx ttc_seg7_vertex_07001438[] = {\n    {{{   -48,   1392,   2081}, 0, {   479,      0}, {0x31, 0x1e, 0x90, 0xff}}},\n    {{{   -48,   1105,   2081}, 0, {     0,      0}, {0x31, 0xe2, 0x90, 0xff}}},\n    {{{   -68,   1146,   2061}, 0, {     0,   2012}, {0x31, 0xe2, 0x90, 0xff}}},\n    {{{    71,   1351,   2061}, 0, {    44,   2012}, {0xcf, 0x1e, 0x90, 0xff}}},\n    {{{    71,   1146,   2061}, 0, {   479,   2012}, {0xcf, 0xe2, 0x90, 0xff}}},\n    {{{    51,   1105,   2081}, 0, {   479,      0}, {0xcf, 0xe2, 0x90, 0xff}}},\n    {{{    51,   1392,   2081}, 0, {     0,      0}, {0xcf, 0x1e, 0x90, 0xff}}},\n    {{{    51,   1105,   2081}, 0, {     0,      0}, {0xcf, 0xe2, 0x90, 0xff}}},\n    {{{   276,   1146,   2061}, 0, {   394,   2012}, {0x31, 0xe2, 0x90, 0xff}}},\n    {{{   296,   1105,   2081}, 0, {   479,      0}, {0x31, 0xe2, 0x90, 0xff}}},\n    {{{    71,   1146,   2061}, 0, {    53,   2012}, {0xcf, 0xe2, 0x90, 0xff}}},\n    {{{   -48,   1392,   2081}, 0, {     0,      0}, {0x31, 0x1e, 0x90, 0xff}}},\n    {{{  -273,   1351,   2061}, 0, {   394,   2012}, {0xcf, 0x1e, 0x90, 0xff}}},\n    {{{  -293,   1392,   2081}, 0, {   479,      0}, {0xcf, 0x1e, 0x90, 0xff}}},\n    {{{   -68,   1351,   2061}, 0, {    53,   2012}, {0x31, 0x1e, 0x90, 0xff}}},\n};\n\n// 0x07001528 - 0x07001618\nstatic const Vtx ttc_seg7_vertex_07001528[] = {\n    {{{  -393,   1392,   2081}, 0, {     0,      0}, {0x31, 0x1e, 0x90, 0xff}}},\n    {{{  -618,   1351,   2061}, 0, {   394,   2012}, {0xcf, 0x1e, 0x90, 0xff}}},\n    {{{  -638,   1392,   2081}, 0, {   479,      0}, {0xcf, 0x1e, 0x90, 0xff}}},\n    {{{   -48,   1392,   2081}, 0, {   479,      0}, {0x31, 0x1e, 0x90, 0xff}}},\n    {{{   -68,   1146,   2061}, 0, {     0,   2012}, {0x31, 0xe2, 0x90, 0xff}}},\n    {{{   -68,   1351,   2061}, 0, {   403,   2012}, {0x31, 0x1e, 0x90, 0xff}}},\n    {{{  -273,   1351,   2061}, 0, {    44,   2012}, {0xcf, 0x1e, 0x90, 0xff}}},\n    {{{  -293,   1105,   2081}, 0, {   479,      0}, {0xcf, 0xe2, 0x90, 0xff}}},\n    {{{  -293,   1392,   2081}, 0, {     0,      0}, {0xcf, 0x1e, 0x90, 0xff}}},\n    {{{  -273,   1146,   2061}, 0, {   479,   2012}, {0xcf, 0xe2, 0x90, 0xff}}},\n    {{{  -293,   1105,   2081}, 0, {     0,      0}, {0xcf, 0xe2, 0x90, 0xff}}},\n    {{{  -273,   1146,   2061}, 0, {    53,   2012}, {0xcf, 0xe2, 0x90, 0xff}}},\n    {{{   -68,   1146,   2061}, 0, {   394,   2012}, {0x31, 0xe2, 0x90, 0xff}}},\n    {{{   -48,   1105,   2081}, 0, {   479,      0}, {0x31, 0xe2, 0x90, 0xff}}},\n    {{{  -413,   1351,   2061}, 0, {    53,   2012}, {0x31, 0x1e, 0x90, 0xff}}},\n};\n\n// 0x07001618 - 0x07001708\nstatic const Vtx ttc_seg7_vertex_07001618[] = {\n    {{{ -1435,   2114,  -1506}, 0, {     0,      0}, {0x2c, 0x1f, 0x72, 0xff}}},\n    {{{ -1406,   2073,  -1506}, 0, {    53,   2012}, {0x2c, 0x1f, 0x72, 0xff}}},\n    {{{ -1261,   2073,  -1651}, 0, {   394,   2012}, {0x72, 0x1f, 0x2c, 0xff}}},\n    {{{  -393,   1392,   2081}, 0, {   479,      0}, {0x31, 0x1e, 0x90, 0xff}}},\n    {{{  -413,   1146,   2061}, 0, {     0,   2012}, {0x31, 0xe2, 0x90, 0xff}}},\n    {{{  -413,   1351,   2061}, 0, {   403,   2012}, {0x31, 0x1e, 0x90, 0xff}}},\n    {{{  -393,   1105,   2081}, 0, {     0,      0}, {0x31, 0xe2, 0x90, 0xff}}},\n    {{{  -618,   1351,   2061}, 0, {    44,   2012}, {0xcf, 0x1e, 0x90, 0xff}}},\n    {{{  -618,   1146,   2061}, 0, {   479,   2012}, {0xcf, 0xe2, 0x90, 0xff}}},\n    {{{  -638,   1105,   2081}, 0, {   479,      0}, {0xcf, 0xe2, 0x90, 0xff}}},\n    {{{  -638,   1392,   2081}, 0, {     0,      0}, {0xcf, 0x1e, 0x90, 0xff}}},\n    {{{  -638,   1105,   2081}, 0, {     0,      0}, {0xcf, 0xe2, 0x90, 0xff}}},\n    {{{  -413,   1146,   2061}, 0, {   394,   2012}, {0x31, 0xe2, 0x90, 0xff}}},\n    {{{  -393,   1105,   2081}, 0, {   479,      0}, {0x31, 0xe2, 0x90, 0xff}}},\n    {{{  -618,   1146,   2061}, 0, {    53,   2012}, {0xcf, 0xe2, 0x90, 0xff}}},\n};\n\n// 0x07001708 - 0x070017F8\nstatic const Vtx ttc_seg7_vertex_07001708[] = {\n    {{{ -1261,   1827,  -1680}, 0, {     0,      0}, {0x72, 0xe1, 0x2c, 0xff}}},\n    {{{ -1406,   1868,  -1506}, 0, {   394,   2012}, {0x2c, 0xe1, 0x72, 0xff}}},\n    {{{ -1435,   1827,  -1506}, 0, {   479,      0}, {0x2c, 0xe1, 0x72, 0xff}}},\n    {{{ -1435,   2114,  -1506}, 0, {     0,      0}, {0x2c, 0x1f, 0x72, 0xff}}},\n    {{{ -1261,   2073,  -1651}, 0, {   394,   2012}, {0x72, 0x1f, 0x2c, 0xff}}},\n    {{{ -1261,   2114,  -1680}, 0, {   479,      0}, {0x72, 0x1f, 0x2c, 0xff}}},\n    {{{ -1261,   2073,  -1651}, 0, {    44,   2012}, {0x72, 0x1f, 0x2c, 0xff}}},\n    {{{ -1261,   1868,  -1651}, 0, {   479,   2012}, {0x72, 0xe1, 0x2c, 0xff}}},\n    {{{ -1261,   1827,  -1680}, 0, {   479,      0}, {0x72, 0xe1, 0x2c, 0xff}}},\n    {{{ -1261,   2114,  -1680}, 0, {     0,      0}, {0x72, 0x1f, 0x2c, 0xff}}},\n    {{{ -1435,   2114,  -1506}, 0, {   479,      0}, {0x2c, 0x1f, 0x72, 0xff}}},\n    {{{ -1435,   1827,  -1506}, 0, {     0,      0}, {0x2c, 0xe1, 0x72, 0xff}}},\n    {{{ -1406,   1868,  -1506}, 0, {     0,   2012}, {0x2c, 0xe1, 0x72, 0xff}}},\n    {{{ -1406,   2073,  -1506}, 0, {   403,   2012}, {0x2c, 0x1f, 0x72, 0xff}}},\n    {{{ -1261,   1868,  -1651}, 0, {    53,   2012}, {0x72, 0xe1, 0x2c, 0xff}}},\n};\n\n// 0x070017F8 - 0x070018E8\nstatic const Vtx ttc_seg7_vertex_070017F8[] = {\n    {{{ -1018,   1587,  -1923}, 0, {     0,      0}, {0x72, 0xe1, 0x2c, 0xff}}},\n    {{{ -1018,   1628,  -1894}, 0, {    53,   2012}, {0x72, 0xe1, 0x2c, 0xff}}},\n    {{{ -1163,   1628,  -1750}, 0, {   394,   2012}, {0x2c, 0xe1, 0x72, 0xff}}},\n    {{{ -1192,   1873,  -1750}, 0, {     0,      0}, {0x2c, 0x1f, 0x72, 0xff}}},\n    {{{ -1018,   1832,  -1894}, 0, {   394,   2012}, {0x72, 0x1f, 0x2c, 0xff}}},\n    {{{ -1018,   1873,  -1923}, 0, {   479,      0}, {0x72, 0x1f, 0x2c, 0xff}}},\n    {{{ -1163,   1832,  -1750}, 0, {    53,   2012}, {0x2c, 0x1f, 0x72, 0xff}}},\n    {{{ -1018,   1832,  -1894}, 0, {    44,   2012}, {0x72, 0x1f, 0x2c, 0xff}}},\n    {{{ -1018,   1628,  -1894}, 0, {   479,   2012}, {0x72, 0xe1, 0x2c, 0xff}}},\n    {{{ -1018,   1587,  -1923}, 0, {   479,      0}, {0x72, 0xe1, 0x2c, 0xff}}},\n    {{{ -1018,   1873,  -1923}, 0, {     0,      0}, {0x72, 0x1f, 0x2c, 0xff}}},\n    {{{ -1192,   1873,  -1750}, 0, {   479,      0}, {0x2c, 0x1f, 0x72, 0xff}}},\n    {{{ -1163,   1628,  -1750}, 0, {     0,   2012}, {0x2c, 0xe1, 0x72, 0xff}}},\n    {{{ -1163,   1832,  -1750}, 0, {   403,   2012}, {0x2c, 0x1f, 0x72, 0xff}}},\n    {{{ -1192,   1587,  -1750}, 0, {     0,      0}, {0x2c, 0xe1, 0x72, 0xff}}},\n};\n\n// 0x070018E8 - 0x070019D8\nstatic const Vtx ttc_seg7_vertex_070018E8[] = {\n    {{{ -1437,   1633,  -1505}, 0, {   479,      0}, {0x2c, 0x1f, 0x72, 0xff}}},\n    {{{ -1408,   1387,  -1505}, 0, {     0,   2012}, {0x2c, 0xe1, 0x72, 0xff}}},\n    {{{ -1408,   1592,  -1505}, 0, {   403,   2012}, {0x2c, 0x1f, 0x72, 0xff}}},\n    {{{ -1018,   1587,  -1923}, 0, {     0,      0}, {0x72, 0xe1, 0x2c, 0xff}}},\n    {{{ -1163,   1628,  -1750}, 0, {   394,   2012}, {0x2c, 0xe1, 0x72, 0xff}}},\n    {{{ -1192,   1587,  -1750}, 0, {   479,      0}, {0x2c, 0xe1, 0x72, 0xff}}},\n    {{{ -1437,   1633,  -1505}, 0, {     0,      0}, {0x2c, 0x1f, 0x72, 0xff}}},\n    {{{ -1408,   1592,  -1505}, 0, {    53,   2012}, {0x2c, 0x1f, 0x72, 0xff}}},\n    {{{ -1263,   1592,  -1649}, 0, {   394,   2012}, {0x72, 0x1f, 0x2c, 0xff}}},\n    {{{ -1263,   1633,  -1678}, 0, {   479,      0}, {0x72, 0x1f, 0x2c, 0xff}}},\n    {{{ -1263,   1592,  -1649}, 0, {    44,   2012}, {0x72, 0x1f, 0x2c, 0xff}}},\n    {{{ -1263,   1346,  -1678}, 0, {   479,      0}, {0x72, 0xe1, 0x2c, 0xff}}},\n    {{{ -1263,   1633,  -1678}, 0, {     0,      0}, {0x72, 0x1f, 0x2c, 0xff}}},\n    {{{ -1263,   1387,  -1649}, 0, {   479,   2012}, {0x72, 0xe1, 0x2c, 0xff}}},\n    {{{ -1437,   1346,  -1505}, 0, {     0,      0}, {0x2c, 0xe1, 0x72, 0xff}}},\n};\n\n// 0x070019D8 - 0x07001AC8\nstatic const Vtx ttc_seg7_vertex_070019D8[] = {\n    {{{  -298,  -1207,  -2080}, 0, {   479,      0}, {0xd0, 0x1e, 0x71, 0xff}}},\n    {{{  -298,  -1453,  -2080}, 0, {     0,      0}, {0xa9, 0x00, 0x5b, 0xff}}},\n    {{{  -277,  -1453,  -2060}, 0, {     0,   2012}, {0xa9, 0x00, 0x5b, 0xff}}},\n    {{{ -1263,   1346,  -1678}, 0, {     0,      0}, {0x72, 0xe1, 0x2c, 0xff}}},\n    {{{ -1263,   1387,  -1649}, 0, {    53,   2012}, {0x72, 0xe1, 0x2c, 0xff}}},\n    {{{ -1408,   1387,  -1505}, 0, {   394,   2012}, {0x2c, 0xe1, 0x72, 0xff}}},\n    {{{ -1437,   1346,  -1505}, 0, {   479,      0}, {0x2c, 0xe1, 0x72, 0xff}}},\n    {{{  -298,  -1207,  -2080}, 0, {     0,      0}, {0xd0, 0x1e, 0x71, 0xff}}},\n    {{{  -277,  -1248,  -2060}, 0, {    53,   2012}, {0xd0, 0x1e, 0x71, 0xff}}},\n    {{{   -73,  -1248,  -2060}, 0, {   394,   2012}, {0x30, 0x1e, 0x71, 0xff}}},\n    {{{   -52,  -1207,  -2080}, 0, {   479,      0}, {0x30, 0x1e, 0x71, 0xff}}},\n    {{{   -73,  -1248,  -2060}, 0, {    44,   2012}, {0x30, 0x1e, 0x71, 0xff}}},\n    {{{   -52,  -1453,  -2080}, 0, {   479,      0}, {0x57, 0x00, 0x5b, 0xff}}},\n    {{{   -52,  -1207,  -2080}, 0, {     0,      0}, {0x30, 0x1e, 0x71, 0xff}}},\n    {{{   -73,  -1453,  -2060}, 0, {   479,   2012}, {0x57, 0x00, 0x5b, 0xff}}},\n};\n\n// 0x07001AC8 - 0x07001BB8\nstatic const Vtx ttc_seg7_vertex_07001AC8[] = {\n    {{{  -618,  -2487,   2061}, 0, {    44,   2012}, {0xcf, 0x1e, 0x90, 0xff}}},\n    {{{  -638,  -2692,   2081}, 0, {   479,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -638,  -2446,   2081}, 0, {     0,      0}, {0xcf, 0x1e, 0x90, 0xff}}},\n    {{{  -298,  -1207,  -2080}, 0, {   479,      0}, {0xd0, 0x1e, 0x71, 0xff}}},\n    {{{  -277,  -1453,  -2060}, 0, {     0,   2012}, {0xa9, 0x00, 0x5b, 0xff}}},\n    {{{  -277,  -1248,  -2060}, 0, {   403,   2012}, {0xd0, 0x1e, 0x71, 0xff}}},\n    {{{  -392,  -2446,   2081}, 0, {     0,      0}, {0x30, 0x1e, 0x8f, 0xff}}},\n    {{{  -618,  -2487,   2061}, 0, {   394,   2012}, {0xcf, 0x1e, 0x90, 0xff}}},\n    {{{  -638,  -2446,   2081}, 0, {   479,      0}, {0xcf, 0x1e, 0x90, 0xff}}},\n    {{{  -413,  -2487,   2061}, 0, {    53,   2012}, {0x30, 0x1e, 0x8f, 0xff}}},\n    {{{  -392,  -2446,   2081}, 0, {   479,      0}, {0x30, 0x1e, 0x8f, 0xff}}},\n    {{{  -392,  -2692,   2081}, 0, {     0,      0}, {0x57, 0x00, 0xa5, 0xff}}},\n    {{{  -413,  -2692,   2061}, 0, {     0,   2012}, {0x57, 0x00, 0xa5, 0xff}}},\n    {{{  -413,  -2487,   2061}, 0, {   403,   2012}, {0x30, 0x1e, 0x8f, 0xff}}},\n    {{{  -618,  -2692,   2061}, 0, {   479,   2012}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07001BB8 - 0x07001CB8\nstatic const Vtx ttc_seg7_vertex_07001BB8[] = {\n    {{{  1629,   6037,   1919}, 0, {   479,    480}, {0xb9, 0x9b, 0xe9, 0xff}}},\n    {{{  1629,   6191,   1919}, 0, {   479,      0}, {0xa7, 0x54, 0x1e, 0xff}}},\n    {{{  1919,   6191,   1629}, 0, {     0,      0}, {0x00, 0x2a, 0x89, 0xff}}},\n    {{{  1919,   6037,   1629}, 0, {     0,    480}, {0x00, 0x8e, 0xca, 0xff}}},\n    {{{  1919,   6191,   2208}, 0, {     0,      0}, {0x24, 0x33, 0x6d, 0xff}}},\n    {{{  1919,   6037,   2208}, 0, {     0,    480}, {0xe9, 0x9b, 0x48, 0xff}}},\n    {{{  2208,   6037,   1919}, 0, {   479,    480}, {0x57, 0xa4, 0x00, 0xff}}},\n    {{{  2208,   6191,   1919}, 0, {   479,      0}, {0x49, 0x67, 0x00, 0xff}}},\n    {{{  1970,   6037,   1970}, 0, {   224,    480}, {0x43, 0x9b, 0x21, 0xff}}},\n    {{{  1970,   6037,   1867}, 0, {   314,    480}, {0x21, 0x9b, 0xbd, 0xff}}},\n    {{{  1629,   6191,   1919}, 0, {     0,      0}, {0xa7, 0x54, 0x1e, 0xff}}},\n    {{{  1919,   6037,   2208}, 0, {   479,    480}, {0xe9, 0x9b, 0x48, 0xff}}},\n    {{{  1919,   6191,   2208}, 0, {   479,      0}, {0x24, 0x33, 0x6d, 0xff}}},\n    {{{  1629,   6037,   1919}, 0, {     0,    480}, {0xb9, 0x9b, 0xe9, 0xff}}},\n    {{{  1867,   6037,   1970}, 0, {   223,    480}, {0xdf, 0x9b, 0x43, 0xff}}},\n    {{{  1970,   6037,   1970}, 0, {   314,    480}, {0x43, 0x9b, 0x21, 0xff}}},\n};\n\n// 0x07001CB8 - 0x07001DA8\nstatic const Vtx ttc_seg7_vertex_07001CB8[] = {\n    {{{  1919,   6037,   1629}, 0, {   479,    480}, {0x00, 0x8e, 0xca, 0xff}}},\n    {{{  1919,   6191,   1629}, 0, {   479,      0}, {0x00, 0x2a, 0x89, 0xff}}},\n    {{{  2208,   6037,   1919}, 0, {     0,    480}, {0x57, 0xa4, 0x00, 0xff}}},\n    {{{  1970,   6037,   1867}, 0, {   223,    480}, {0x21, 0x9b, 0xbd, 0xff}}},\n    {{{  1867,   6037,   1867}, 0, {   314,    480}, {0xbd, 0x9b, 0xdf, 0xff}}},\n    {{{  2208,   6191,   1919}, 0, {     0,      0}, {0x49, 0x67, 0x00, 0xff}}},\n    {{{  1867,   5284,   1867}, 0, {    96,   2012}, {0xe9, 0x73, 0xd2, 0xff}}},\n    {{{  1867,   6037,   1867}, 0, {    96,    480}, {0xbd, 0x9b, 0xdf, 0xff}}},\n    {{{  1970,   6037,   1867}, 0, {     0,    480}, {0x21, 0x9b, 0xbd, 0xff}}},\n    {{{  1970,   5284,   1867}, 0, {     0,   2012}, {0x43, 0x65, 0xdf, 0xff}}},\n    {{{  1919,   6037,   1629}, 0, {     0,    480}, {0x00, 0x8e, 0xca, 0xff}}},\n    {{{  1867,   6037,   1867}, 0, {   223,    480}, {0xbd, 0x9b, 0xdf, 0xff}}},\n    {{{  1629,   6037,   1919}, 0, {   479,    480}, {0xb9, 0x9b, 0xe9, 0xff}}},\n    {{{  1867,   5284,   1970}, 0, {   223,   2012}, {0xbd, 0x65, 0x21, 0xff}}},\n    {{{  1867,   6037,   1970}, 0, {   223,    480}, {0xdf, 0x9b, 0x43, 0xff}}},\n};\n\n// 0x07001DA8 - 0x07001E38\nstatic const Vtx ttc_seg7_vertex_07001DA8[] = {\n    {{{  1970,   5284,   1970}, 0, {   351,   2012}, {0x21, 0x65, 0x43, 0xff}}},\n    {{{  1970,   6037,   1970}, 0, {   351,    480}, {0x43, 0x9b, 0x21, 0xff}}},\n    {{{  1867,   6037,   1970}, 0, {   223,    480}, {0xdf, 0x9b, 0x43, 0xff}}},\n    {{{  1867,   5284,   1970}, 0, {   223,   2012}, {0xbd, 0x65, 0x21, 0xff}}},\n    {{{  1970,   5284,   1867}, 0, {   479,   2012}, {0x43, 0x65, 0xdf, 0xff}}},\n    {{{  1970,   6037,   1867}, 0, {   479,    480}, {0x21, 0x9b, 0xbd, 0xff}}},\n    {{{  1867,   6037,   1867}, 0, {   223,    480}, {0xbd, 0x9b, 0xdf, 0xff}}},\n    {{{  1867,   6037,   1970}, 0, {   314,    480}, {0xdf, 0x9b, 0x43, 0xff}}},\n    {{{  1629,   6037,   1919}, 0, {   479,    480}, {0xb9, 0x9b, 0xe9, 0xff}}},\n};\n\n// 0x07001E38 - 0x07001E78\nstatic const Vtx ttc_seg7_vertex_07001E38[] = {\n    {{{ -1052,  -1760,  -1462}, 0, { -7184,  -3780}, {0x59, 0x54, 0x1e, 0xff}}},\n    {{{  -865,  -1760,  -1649}, 0, { -4832,  -3780}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -865,  -1607,  -1649}, 0, { -4832,  -5142}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1052,  -1607,  -1462}, 0, { -7184,  -5142}, {0x78, 0x00, 0xd9, 0xff}}},\n};\n\n// 0x07001E78 - 0x07001F78\nstatic const Vtx ttc_seg7_vertex_07001E78[] = {\n    {{{  -861,   -173,   2081}, 0, { 14378,  -3780}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1011,   -173,   1931}, 0, { 14378,  -5190}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -649,   -173,   1569}, 0, { 10972,  -5190}, {0x10, 0x89, 0xd8, 0xff}}},\n    {{{ -1660,   2524,    162}, 0, {  4056,   4054}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{ -2070,   2524,    162}, 0, { -4118,   4054}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{ -2070,   2524,   -247}, 0, { -4118,  -4120}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{ -1660,   2524,   -247}, 0, {  4056,  -4120}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{  1936,   -173,   1007}, 0, { -3842,   4330}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   862,   -173,   2081}, 0, {  6266,   4330}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -349,   -173,   1569}, 0, {  9560,  -3780}, {0xdb, 0xb0, 0xa5, 0xff}}},\n    {{{  1074,   -173,    145}, 0, { -3842,  -3780}, {0x9d, 0xb7, 0xe6, 0xff}}},\n    {{{ -1011,   -173,   1931}, 0, {  2114,   1962}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1080,   -173,   1718}, 0, {  1434,    636}, {0xe3, 0xac, 0xa7, 0xff}}},\n    {{{  -935,   -173,   1573}, 0, {    70,    636}, {0xc6, 0x92, 0x13, 0xff}}},\n    {{{ -1080,   -173,   1428}, 0, {    70,   -728}, {0x18, 0x9b, 0x48, 0xff}}},\n    {{{ -1080,   -173,   1139}, 0, { -1290,  -2090}, {0x17, 0x9b, 0xb8, 0xff}}},\n};\n\n// 0x07001F78 - 0x07002058\nstatic const Vtx ttc_seg7_vertex_07001F78[] = {\n    {{{  -935,   -173,   1573}, 0, {    70,    636}, {0xc6, 0x92, 0x13, 0xff}}},\n    {{{ -1080,   -173,   1139}, 0, { -1290,  -2090}, {0x17, 0x9b, 0xb8, 0xff}}},\n    {{{  -649,   -173,   1569}, 0, { -1290,   1962}, {0x10, 0x89, 0xd8, 0xff}}},\n    {{{ -1011,   -173,   1931}, 0, {  2114,   1962}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1225,   -173,   1573}, 0, {  1434,   -728}, {0x48, 0x9b, 0xe8, 0xff}}},\n    {{{ -1080,   -173,   1718}, 0, {  1434,    636}, {0xe3, 0xac, 0xa7, 0xff}}},\n    {{{ -1442,   -173,   1501}, 0, {  2114,  -2090}, {0xcf, 0x97, 0xcf, 0xff}}},\n    {{{ -1080,   -173,   1428}, 0, {    70,   -728}, {0x18, 0x9b, 0x48, 0xff}}},\n    {{{  1936,   -173,   1007}, 0, { -3842,   4330}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1074,   -173,   -144}, 0, { -5204,  -5142}, {0xa7, 0xb7, 0xcc, 0xff}}},\n    {{{  1936,   -173,  -1006}, 0, {-13316,  -5142}, {0xd8, 0x8f, 0xd8, 0xff}}},\n    {{{  2081,   -173,   -861}, 0, {-13316,  -3780}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2081,   -173,    862}, 0, { -5204,   4330}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1074,   -173,    145}, 0, { -3842,  -3780}, {0x9d, 0xb7, 0xe6, 0xff}}},\n};\n\n// 0x07002058 - 0x07002158\nstatic const Vtx ttc_seg7_vertex_07002058[] = {\n    {{{  -144,   -173,  -1073}, 0, {  5078,  10186}, {0x1b, 0x8d, 0x2e, 0xff}}},\n    {{{ -1006,   -173,  -1935}, 0, {-19256,  10186}, {0xc1, 0xa7, 0x3f, 0xff}}},\n    {{{  -861,   -173,  -2080}, 0, {-19256,   6098}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   862,   -173,  -2080}, 0, {  5078, -18236}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1007,   -173,  -1935}, 0, {  9166, -18236}, {0x3f, 0xa7, 0x3f, 0xff}}},\n    {{{   145,   -173,  -1073}, 0, {  9166,   6098}, {0x1e, 0xd6, 0x73, 0xff}}},\n    {{{  -144,   -173,  -1073}, 0, { 14276,  -1054}, {0x1b, 0x8d, 0x2e, 0xff}}},\n    {{{ -1218,   -173,      0}, 0, {-16052,  -1054}, {0xdc, 0xcd, 0x6e, 0xff}}},\n    {{{ -1363,   -173,   -144}, 0, {-16052,   3032}, {0xa7, 0xac, 0xe3, 0xff}}},\n    {{{  -289,   -173,  -1218}, 0, { 14276,   3032}, {0x93, 0xcd, 0x24, 0xff}}},\n    {{{ -1244,   -224,   -740}, 0, {  3034,   6098}, {0xed, 0x92, 0x3a, 0xff}}},\n    {{{ -1244,   -224,  -1030}, 0, { -1052,   2010}, {0xe2, 0xac, 0xa7, 0xff}}},\n    {{{  -955,   -224,  -1320}, 0, { -1052,  -6164}, {0x13, 0x92, 0xc6, 0xff}}},\n    {{{  -665,   -224,  -1030}, 0, {  7122,  -6164}, {0x6d, 0xcd, 0x24, 0xff}}},\n    {{{  -810,   -224,   -885}, 0, {  7122,  -2076}, {0xe3, 0xac, 0x59, 0xff}}},\n    {{{  -955,   -224,  -1030}, 0, {  3034,  -2076}, {0x1e, 0xac, 0x59, 0xff}}},\n};\n\n// 0x07002158 - 0x07002248\nstatic const Vtx ttc_seg7_vertex_07002158[] = {\n    {{{ -1244,   -224,   -740}, 0, {  3034,   6098}, {0xed, 0x92, 0x3a, 0xff}}},\n    {{{ -1484,   -224,   -980}, 0, { -3722,   6098}, {0x93, 0xcd, 0xdc, 0xff}}},\n    {{{ -1339,   -224,  -1125}, 0, { -3722,   2010}, {0x1d, 0xac, 0xa7, 0xff}}},\n    {{{ -1244,   -224,  -1030}, 0, { -1052,   2010}, {0xe2, 0xac, 0xa7, 0xff}}},\n    {{{ -1433,   -173,  -1219}, 0, {  4056, -11274}, {0x59, 0xac, 0x1d, 0xff}}},\n    {{{ -1935,   -173,   -716}, 0, {  4056,    990}, {0xdc, 0xcd, 0x6d, 0xff}}},\n    {{{ -2080,   -173,   -861}, 0, {     0,    990}, {0xd8, 0x8f, 0x28, 0xff}}},\n    {{{ -1578,   -173,  -1363}, 0, {     0, -11274}, {0x50, 0xc8, 0xb0, 0xff}}},\n    {{{ -1671,   1413,    162}, 0, {  4056,   4054}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{ -2080,   1413,    162}, 0, { -4118,   4054}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{ -2080,   1413,   -247}, 0, { -4118,  -4120}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{ -1671,   1413,   -247}, 0, {  4056,  -4120}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{  -581,   1054,   -911}, 0, {     0,      0}, {0x6d, 0x33, 0xdc, 0xff}}},\n    {{{  -689,    901,  -1019}, 0, {   990,    990}, {0x24, 0xcd, 0x93, 0xff}}},\n    {{{  -689,   1054,  -1019}, 0, {   990,      0}, {0xe3, 0x54, 0xa7, 0xff}}},\n};\n\n// 0x07002248 - 0x07002348\nstatic const Vtx ttc_seg7_vertex_07002248[] = {\n    {{{  -539,  -1607,  -2080}, 0, {   530, -22644}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -539,  -1607,  -1758}, 0, {  5078, -18096}, {0x76, 0xdb, 0x1a, 0xff}}},\n    {{{  -861,  -1607,  -2080}, 0, { -4016, -18098}, {0x50, 0xc8, 0xb0, 0xff}}},\n    {{{  -689,   1054,  -1019}, 0, {     0,      0}, {0xe3, 0x54, 0xa7, 0xff}}},\n    {{{  -689,   1054,   -802}, 0, {   990,    990}, {0x1e, 0x54, 0x59, 0xff}}},\n    {{{  -581,   1054,   -911}, 0, {   990,      0}, {0x6d, 0x33, 0xdc, 0xff}}},\n    {{{  -798,   1054,   -911}, 0, {     0,    990}, {0x93, 0x33, 0x24, 0xff}}},\n    {{{  -689,   1054,   -802}, 0, {     0,      0}, {0x1e, 0x54, 0x59, 0xff}}},\n    {{{  -689,    901,   -802}, 0, {     0,    990}, {0xdc, 0xcd, 0x6d, 0xff}}},\n    {{{  -581,    901,   -911}, 0, {   990,    990}, {0x59, 0xac, 0x1d, 0xff}}},\n    {{{  -581,   1054,   -911}, 0, {     0,      0}, {0x6d, 0x33, 0xdc, 0xff}}},\n    {{{  -581,    901,   -911}, 0, {     0,    990}, {0x59, 0xac, 0x1d, 0xff}}},\n    {{{  -689,    901,  -1019}, 0, {   990,    990}, {0x24, 0xcd, 0x93, 0xff}}},\n    {{{ -1349,    901,  -1317}, 0, {     0,      0}, {0xe2, 0x54, 0xa7, 0xff}}},\n    {{{ -1457,    901,  -1208}, 0, {     0,    990}, {0x92, 0x33, 0x24, 0xff}}},\n    {{{ -1349,    901,  -1099}, 0, {   990,    990}, {0x00, 0x67, 0x49, 0xff}}},\n};\n\n// 0x07002348 - 0x07002428\nstatic const Vtx ttc_seg7_vertex_07002348[] = {\n    {{{  -798,   1054,   -911}, 0, {     0,      0}, {0x93, 0x33, 0x24, 0xff}}},\n    {{{  -798,    901,   -911}, 0, {     0,    990}, {0xa7, 0xac, 0xe2, 0xff}}},\n    {{{  -689,    901,   -802}, 0, {   990,    990}, {0xdc, 0xcd, 0x6d, 0xff}}},\n    {{{  -689,   1054,   -802}, 0, {   990,      0}, {0x1e, 0x54, 0x59, 0xff}}},\n    {{{  -689,   1054,  -1019}, 0, {     0,      0}, {0xe3, 0x54, 0xa7, 0xff}}},\n    {{{  -798,    901,   -911}, 0, {   990,    990}, {0xa7, 0xac, 0xe2, 0xff}}},\n    {{{  -798,   1054,   -911}, 0, {   990,      0}, {0x93, 0x33, 0x24, 0xff}}},\n    {{{  -689,    901,  -1019}, 0, {     0,    990}, {0x24, 0xcd, 0x93, 0xff}}},\n    {{{  -581,    901,   -911}, 0, {   990,      0}, {0x59, 0xac, 0x1d, 0xff}}},\n    {{{  -689,    901,  -1019}, 0, {   990,    990}, {0x24, 0xcd, 0x93, 0xff}}},\n    {{{  -689,    901,   -802}, 0, {     0,      0}, {0xdc, 0xcd, 0x6d, 0xff}}},\n    {{{ -1457,    901,  -1208}, 0, {     0,      0}, {0x92, 0x33, 0x24, 0xff}}},\n    {{{ -1349,    747,  -1099}, 0, {   990,    990}, {0x00, 0xd6, 0x77, 0xff}}},\n    {{{ -1349,    901,  -1099}, 0, {   990,      0}, {0x00, 0x67, 0x49, 0xff}}},\n};\n\n// 0x07002428 - 0x07002528\nstatic const Vtx ttc_seg7_vertex_07002428[] = {\n    {{{ -1349,    901,  -1317}, 0, {     0,      0}, {0xe2, 0x54, 0xa7, 0xff}}},\n    {{{ -1349,    901,  -1099}, 0, {   990,    990}, {0x00, 0x67, 0x49, 0xff}}},\n    {{{ -1240,    901,  -1208}, 0, {   990,      0}, {0x77, 0x2a, 0x00, 0xff}}},\n    {{{ -1349,    901,  -1099}, 0, {     0,      0}, {0x00, 0x67, 0x49, 0xff}}},\n    {{{ -1349,    747,  -1099}, 0, {     0,    990}, {0x00, 0xd6, 0x77, 0xff}}},\n    {{{ -1240,    747,  -1208}, 0, {   990,    990}, {0x49, 0x99, 0x00, 0xff}}},\n    {{{ -1240,    901,  -1208}, 0, {     0,      0}, {0x77, 0x2a, 0x00, 0xff}}},\n    {{{ -1349,    747,  -1317}, 0, {   990,    990}, {0x24, 0xcd, 0x93, 0xff}}},\n    {{{ -1349,    901,  -1317}, 0, {   990,      0}, {0xe2, 0x54, 0xa7, 0xff}}},\n    {{{ -1240,    747,  -1208}, 0, {     0,    990}, {0x49, 0x99, 0x00, 0xff}}},\n    {{{ -1457,    901,  -1208}, 0, {     0,      0}, {0x92, 0x33, 0x24, 0xff}}},\n    {{{ -1457,    747,  -1208}, 0, {     0,    990}, {0xa6, 0xac, 0xe3, 0xff}}},\n    {{{ -1349,    747,  -1099}, 0, {   990,    990}, {0x00, 0xd6, 0x77, 0xff}}},\n    {{{   938,  -3714,   -932}, 0, {     0,      0}, {0x1e, 0x54, 0x59, 0xff}}},\n    {{{   938,  -3867,   -932}, 0, {     0,    990}, {0xdc, 0xcd, 0x6d, 0xff}}},\n    {{{  1046,  -3867,  -1041}, 0, {   990,    990}, {0x5a, 0xac, 0x1d, 0xff}}},\n};\n\n// 0x07002528 - 0x07002628\nstatic const Vtx ttc_seg7_vertex_07002528[] = {\n    {{{ -1349,    901,  -1317}, 0, {     0,      0}, {0xe2, 0x54, 0xa7, 0xff}}},\n    {{{ -1457,    747,  -1208}, 0, {   990,    990}, {0xa6, 0xac, 0xe3, 0xff}}},\n    {{{ -1457,    901,  -1208}, 0, {   990,      0}, {0x92, 0x33, 0x24, 0xff}}},\n    {{{ -1349,    747,  -1317}, 0, {     0,    990}, {0x24, 0xcd, 0x93, 0xff}}},\n    {{{ -1240,    747,  -1208}, 0, {   990,      0}, {0x49, 0x99, 0x00, 0xff}}},\n    {{{ -1349,    747,  -1099}, 0, {     0,      0}, {0x00, 0xd6, 0x77, 0xff}}},\n    {{{ -1457,    747,  -1208}, 0, {     0,    990}, {0xa6, 0xac, 0xe3, 0xff}}},\n    {{{ -1349,    747,  -1317}, 0, {   990,    990}, {0x24, 0xcd, 0x93, 0xff}}},\n    {{{   938,  -3714,  -1150}, 0, {     0,      0}, {0xe3, 0x54, 0xa7, 0xff}}},\n    {{{   829,  -3714,  -1041}, 0, {     0,    990}, {0x93, 0x33, 0x24, 0xff}}},\n    {{{   938,  -3714,   -932}, 0, {   990,    990}, {0x1e, 0x54, 0x59, 0xff}}},\n    {{{  1046,  -3714,  -1041}, 0, {   990,      0}, {0x6e, 0x33, 0xdc, 0xff}}},\n    {{{   938,  -3867,  -1150}, 0, {     0,    990}, {0x25, 0xcd, 0x93, 0xff}}},\n    {{{   829,  -3867,  -1041}, 0, {   990,    990}, {0xa7, 0xac, 0xe3, 0xff}}},\n    {{{   938,  -3714,   -932}, 0, {     0,      0}, {0x1e, 0x54, 0x59, 0xff}}},\n    {{{  1046,  -3867,  -1041}, 0, {   990,    990}, {0x5a, 0xac, 0x1d, 0xff}}},\n};\n\n// 0x07002628 - 0x07002728\nstatic const Vtx ttc_seg7_vertex_07002628[] = {\n    {{{  1046,  -3714,  -1041}, 0, {     0,      0}, {0x6e, 0x33, 0xdc, 0xff}}},\n    {{{   938,  -3867,  -1150}, 0, {   990,    990}, {0x25, 0xcd, 0x93, 0xff}}},\n    {{{   938,  -3714,  -1150}, 0, {   990,      0}, {0xe3, 0x54, 0xa7, 0xff}}},\n    {{{  1046,  -3867,  -1041}, 0, {     0,    990}, {0x5a, 0xac, 0x1d, 0xff}}},\n    {{{   829,  -3714,  -1041}, 0, {     0,      0}, {0x93, 0x33, 0x24, 0xff}}},\n    {{{   829,  -3867,  -1041}, 0, {     0,    990}, {0xa7, 0xac, 0xe3, 0xff}}},\n    {{{   938,  -3867,   -932}, 0, {   990,    990}, {0xdc, 0xcd, 0x6d, 0xff}}},\n    {{{   938,  -3714,   -932}, 0, {   990,      0}, {0x1e, 0x54, 0x59, 0xff}}},\n    {{{   938,  -3714,  -1150}, 0, {     0,      0}, {0xe3, 0x54, 0xa7, 0xff}}},\n    {{{   829,  -3867,  -1041}, 0, {   990,    990}, {0xa7, 0xac, 0xe3, 0xff}}},\n    {{{   829,  -3714,  -1041}, 0, {   990,      0}, {0x93, 0x33, 0x24, 0xff}}},\n    {{{ -1456,   8192,    603}, 0, { -7130,  -2020}, {0x1f, 0x86, 0xf8, 0xff}}},\n    {{{  1457,   8192,    603}, 0, { 10132,  -2020}, {0xd3, 0x8b, 0xee, 0xff}}},\n    {{{   603,   8192,   1457}, 0, {  5076,  -7076}, {0xe7, 0x94, 0xc4, 0xff}}},\n    {{{  1046,  -3867,  -1041}, 0, {   990,      0}, {0x5a, 0xac, 0x1d, 0xff}}},\n    {{{   938,  -3867,   -932}, 0, {     0,      0}, {0xdc, 0xcd, 0x6d, 0xff}}},\n};\n\n// 0x07002728 - 0x07002828\nstatic const Vtx ttc_seg7_vertex_07002728[] = {\n    {{{ -1080,   -992,   1283}, 0, { -1052,    308}, {0x53, 0xb8, 0xc2, 0xff}}},\n    {{{ -1080,   -992,   1863}, 0, {  1672,   3032}, {0x28, 0x8f, 0x28, 0xff}}},\n    {{{ -1369,   -992,   1573}, 0, {  1672,    308}, {0x22, 0x8b, 0x22, 0xff}}},\n    {{{  -790,   -992,   1573}, 0, { -1052,   3032}, {0x6d, 0xcd, 0x24, 0xff}}},\n    {{{ -1188,  -1095,   1175}, 0, { -1052,   -714}, {0x40, 0x95, 0xee, 0xff}}},\n    {{{ -1478,  -1095,   1464}, 0, {  1672,   -714}, {0x1a, 0x87, 0x1a, 0xff}}},\n    {{{ -1623,  -1095,   1320}, 0, {  1672,  -2076}, {0xc1, 0xa7, 0xc1, 0xff}}},\n    {{{ -1333,  -1095,   1030}, 0, { -1052,  -2076}, {0x24, 0xcd, 0x93, 0xff}}},\n    {{{ -1456,   8192,    603}, 0, { -7130,  -2020}, {0x1f, 0x86, 0xf8, 0xff}}},\n    {{{   603,   8192,   1457}, 0, {  5076,  -7076}, {0xe7, 0x94, 0xc4, 0xff}}},\n    {{{  -602,   8192,   1457}, 0, { -2074,  -7076}, {0x25, 0x99, 0xc1, 0xff}}},\n    {{{  1457,   8192,   -602}, 0, { 10132,   5130}, {0xc7, 0x90, 0x0f, 0xff}}},\n    {{{  1457,   8192,    603}, 0, { 10132,  -2020}, {0xd3, 0x8b, 0xee, 0xff}}},\n    {{{ -1456,   8192,   -602}, 0, { -7130,   5130}, {0x3c, 0x94, 0x19, 0xff}}},\n    {{{  -602,   8192,  -1456}, 0, { -2074,  10186}, {0x19, 0x94, 0x3c, 0xff}}},\n    {{{   603,   8192,  -1456}, 0, {  5076,  10186}, {0xe2, 0x90, 0x33, 0xff}}},\n};\n\n// 0x07002828 - 0x07002928\nstatic const Vtx ttc_seg7_vertex_07002828[] = {\n    {{{  3301,   7475,   2081}, 0, { -7866,   8570}, {0xa7, 0xac, 0xe3, 0xff}}},\n    {{{  2081,   7475,   3301}, 0, { -7866,  -8636}, {0x24, 0xcd, 0x93, 0xff}}},\n    {{{   862,   7475,   2081}, 0, {  9340,  -8636}, {0x04, 0xaf, 0x9f, 0xff}}},\n    {{{  2081,   7475,    862}, 0, {  9342,   8570}, {0x9a, 0xb6, 0x07, 0xff}}},\n    {{{  -944,  -1607,  -1353}, 0, {  3034,  -5142}, {0x78, 0x00, 0x28, 0xff}}},\n    {{{ -1758,  -1607,   -539}, 0, { -7184,  -5142}, {0xe8, 0x00, 0x7c, 0xff}}},\n    {{{ -1758,  -1760,   -539}, 0, { -7184,  -3780}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1351,  -2037,   -946}, 0, { -2074,  -1326}, {0x6d, 0xc1, 0x0e, 0xff}}},\n    {{{  -944,  -2037,  -1353}, 0, {  3034,  -1326}, {0x46, 0xeb, 0x67, 0xff}}},\n    {{{ -1351,  -2446,   -946}, 0, { -2074,   2306}, {0x6c, 0x26, 0x36, 0xff}}},\n    {{{  -944,  -1760,  -1353}, 0, {  3034,  -3780}, {0x77, 0x21, 0x18, 0xff}}},\n    {{{ -1758,  -3104,   -539}, 0, { -7184,   8142}, {0x15, 0xc3, 0x6c, 0xff}}},\n    {{{  -781,  -3104,  -1516}, 0, {  5078,   8142}, {0x31, 0xe9, 0x72, 0xff}}},\n    {{{  -539,  -4822,  -1758}, 0, {  8110,  23382}, {0x77, 0xd6, 0x00, 0xff}}},\n    {{{  -539,  -1760,  -1758}, 0, {  8110,  -3780}, {0x4a, 0x46, 0x4a, 0xff}}},\n    {{{  -944,  -2446,  -1353}, 0, {  3034,   2306}, {0x15, 0x3d, 0x6c, 0xff}}},\n};\n\n// 0x07002928 - 0x07002A28\nstatic const Vtx ttc_seg7_vertex_07002928[] = {\n    {{{  -781,  -3104,  -1516}, 0, {  5078,   8142}, {0x31, 0xe9, 0x72, 0xff}}},\n    {{{  -781,  -4822,  -1516}, 0, {  5078,  23382}, {0xe2, 0xac, 0x59, 0xff}}},\n    {{{  -539,  -4822,  -1758}, 0, {  8110,  23382}, {0x77, 0xd6, 0x00, 0xff}}},\n    {{{  -944,  -2446,  -1353}, 0, {  3034,   2306}, {0x15, 0x3d, 0x6c, 0xff}}},\n    {{{ -1758,  -3104,   -539}, 0, { -7184,   8142}, {0x15, 0xc3, 0x6c, 0xff}}},\n    {{{ -1351,  -2446,   -946}, 0, { -2074,   2306}, {0x6c, 0x26, 0x36, 0xff}}},\n    {{{  -539,  -4822,  -1758}, 0, { -2074,  14184}, {0x77, 0xd6, 0x00, 0xff}}},\n    {{{  -861,  -1607,  -2080}, 0, {  1966, -14340}, {0x50, 0xc8, 0xb0, 0xff}}},\n    {{{  -539,  -1607,  -1758}, 0, { -2074, -14340}, {0x76, 0xdb, 0x1a, 0xff}}},\n    {{{ -1161,  -2139,  -1571}, 0, {  3034,  -1054}, {0x0e, 0xc1, 0x6d, 0xff}}},\n    {{{ -1568,  -2446,  -1163}, 0, { -2074,   1670}, {0x67, 0x49, 0x00, 0xff}}},\n    {{{ -1161,  -2446,  -1571}, 0, {  3034,   1670}, {0x00, 0x49, 0x67, 0xff}}},\n    {{{ -1568,  -2139,  -1163}, 0, { -2074,  -1054}, {0x6d, 0xc1, 0x0e, 0xff}}},\n    {{{  -944,  -2446,  -1353}, 0, {  3034,    256}, {0x15, 0x3d, 0x6c, 0xff}}},\n    {{{ -1161,  -2446,  -1571}, 0, {  3034,  -2470}, {0x00, 0x49, 0x67, 0xff}}},\n    {{{ -1568,  -2446,  -1163}, 0, { -2074,  -2470}, {0x67, 0x49, 0x00, 0xff}}},\n};\n\n// 0x07002A28 - 0x07002B28\nstatic const Vtx ttc_seg7_vertex_07002A28[] = {\n    {{{  -944,  -2446,  -1353}, 0, {  3034,    256}, {0x15, 0x3d, 0x6c, 0xff}}},\n    {{{ -1568,  -2446,  -1163}, 0, { -2074,  -2470}, {0x67, 0x49, 0x00, 0xff}}},\n    {{{ -1351,  -2446,   -946}, 0, { -2074,    256}, {0x6c, 0x26, 0x36, 0xff}}},\n    {{{ -1758,  -3104,   -539}, 0, {  3034,   9164}, {0x15, 0xc3, 0x6c, 0xff}}},\n    {{{ -1758,  -1607,   -539}, 0, {  3034,  -4120}, {0xe8, 0x00, 0x7c, 0xff}}},\n    {{{ -2080,  -1607,   -861}, 0, { -1006,  -4120}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2080,  -3104,   -861}, 0, { -1006,   9164}, {0x24, 0xcd, 0x6d, 0xff}}},\n    {{{  -898,  -4003,  -1634}, 0, {  1560,   2828}, {0xc1, 0x1d, 0x69, 0xff}}},\n    {{{  -781,  -4822,  -1516}, 0, {  3034,  10096}, {0xe2, 0xac, 0x59, 0xff}}},\n    {{{  -781,  -3104,  -1516}, 0, {  3034,  -5142}, {0x31, 0xe9, 0x72, 0xff}}},\n    {{{  -539,  -4822,  -1758}, 0, { -2074,  14184}, {0x77, 0xd6, 0x00, 0xff}}},\n    {{{  -861,  -4822,  -2080}, 0, {  1966,  14184}, {0x22, 0x9f, 0x49, 0xff}}},\n    {{{  -861,  -1607,  -2080}, 0, {  1966, -14340}, {0x50, 0xc8, 0xb0, 0xff}}},\n    {{{ -1103,  -3104,  -1839}, 0, { -5140,   2010}, {0xe3, 0xac, 0x59, 0xff}}},\n    {{{ -1758,  -3104,   -539}, 0, {  7122,  -2030}, {0x15, 0xc3, 0x6c, 0xff}}},\n    {{{ -2080,  -3104,   -861}, 0, {  7122,   2010}, {0x24, 0xcd, 0x6d, 0xff}}},\n};\n\n// 0x07002B28 - 0x07002C28\nstatic const Vtx ttc_seg7_vertex_07002B28[] = {\n    {{{ -1103,  -3104,  -1839}, 0, { -5140,   2010}, {0xe3, 0xac, 0x59, 0xff}}},\n    {{{  -781,  -3104,  -1516}, 0, { -5140,  -2030}, {0x31, 0xe9, 0x72, 0xff}}},\n    {{{ -1758,  -3104,   -539}, 0, {  7122,  -2030}, {0x15, 0xc3, 0x6c, 0xff}}},\n    {{{ -2080,  -3104,   -861}, 0, { -5140,  -4120}, {0x24, 0xcd, 0x6d, 0xff}}},\n    {{{ -1103,  -4003,  -1839}, 0, {  7122,   3850}, {0x1d, 0x54, 0x59, 0xff}}},\n    {{{ -1103,  -3104,  -1839}, 0, {  7122,  -4120}, {0xe3, 0xac, 0x59, 0xff}}},\n    {{{ -2080,  -4003,   -861}, 0, { -5140,   3850}, {0x1c, 0x78, 0x1c, 0xff}}},\n    {{{  -898,  -4003,  -1634}, 0, {  1560,   2828}, {0xc1, 0x1d, 0x69, 0xff}}},\n    {{{  -781,  -3104,  -1516}, 0, {  3034,  -5142}, {0x31, 0xe9, 0x72, 0xff}}},\n    {{{ -1103,  -3104,  -1839}, 0, { -1006,  -5142}, {0xe3, 0xac, 0x59, 0xff}}},\n    {{{ -1103,  -4003,  -1839}, 0, { -1006,   2828}, {0x1d, 0x54, 0x59, 0xff}}},\n    {{{  -898,  -4822,  -1634}, 0, {  1560,  10096}, {0x1d, 0xac, 0x59, 0xff}}},\n    {{{  -781,  -4822,  -1516}, 0, {  3034,  10096}, {0xe2, 0xac, 0x59, 0xff}}},\n    {{{ -1876,  -4022,   -656}, 0, { -6162,   1976}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -898,  -4822,  -1634}, 0, {  6100,   9074}, {0x1d, 0xac, 0x59, 0xff}}},\n    {{{  -898,  -4022,  -1634}, 0, {  6100,   1976}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07002C28 - 0x07002D08\nstatic const Vtx ttc_seg7_vertex_07002C28[] = {\n    {{{ -1876,  -4022,   -656}, 0, { -6162,   1976}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1876,  -4822,   -656}, 0, { -6162,   9074}, {0x00, 0x99, 0x49, 0xff}}},\n    {{{  -898,  -4822,  -1634}, 0, {  6100,   9074}, {0x1d, 0xac, 0x59, 0xff}}},\n    {{{ -2080,  -4156,   -861}, 0, { -1006,  -1940}, {0xc1, 0xa7, 0x3f, 0xff}}},\n    {{{ -2080,  -4822,   -861}, 0, { -1006,   3964}, {0x59, 0xe3, 0x54, 0xff}}},\n    {{{ -1876,  -4156,   -656}, 0, {  1560,  -1940}, {0x1d, 0x9c, 0x47, 0xff}}},\n    {{{ -1876,  -4822,   -656}, 0, {  1560,   3964}, {0x00, 0x99, 0x49, 0xff}}},\n    {{{  -539,  -1760,  -1758}, 0, {  8110,  -3780}, {0x4a, 0x46, 0x4a, 0xff}}},\n    {{{ -1052,  -1760,  -1462}, 0, {  3034,  -5142}, {0x59, 0x54, 0x1e, 0xff}}},\n    {{{  -944,  -1760,  -1353}, 0, {  3034,  -3780}, {0x77, 0x21, 0x18, 0xff}}},\n    {{{  -648,  -1760,  -1867}, 0, {  8110,  -5142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -944,  -1607,  -1353}, 0, {  3034,  -5142}, {0x78, 0x00, 0x28, 0xff}}},\n    {{{ -1052,  -1607,  -1462}, 0, {  4396,  -5142}, {0x78, 0x00, 0xd9, 0xff}}},\n    {{{ -1052,  -1760,  -1462}, 0, {  4396,  -3780}, {0x59, 0x54, 0x1e, 0xff}}},\n};\n\n// 0x07002D08 - 0x07002D88\nstatic const Vtx ttc_seg7_vertex_07002D08[] = {\n    {{{ -1080,   -839,   1863}, 0, { -3436,   6098}, {0x3f, 0x59, 0x3f, 0xff}}},\n    {{{  -790,   -839,   1573}, 0, {  2012,   6098}, {0x6d, 0x33, 0xdc, 0xff}}},\n    {{{ -1080,   -839,   1283}, 0, {  2012,    650}, {0x12, 0x6b, 0xc0, 0xff}}},\n    {{{ -1369,   -839,   1573}, 0, { -3436,    650}, {0xe7, 0x79, 0xe7, 0xff}}},\n    {{{ -1333,   -941,   1030}, 0, {  2012,  -4802}, {0xe3, 0x54, 0xa7, 0xff}}},\n    {{{ -1623,   -941,   1320}, 0, { -3436,  -4802}, {0xc1, 0x59, 0xc1, 0xff}}},\n    {{{ -1478,   -941,   1464}, 0, { -3436,  -2076}, {0xe7, 0x79, 0xe7, 0xff}}},\n    {{{ -1188,   -941,   1175}, 0, {  2012,  -2076}, {0x45, 0x34, 0xa4, 0xff}}},\n};\n\n// 0x07002D88 - 0x07002E88\nstatic const Vtx ttc_seg7_vertex_07002D88[] = {\n    {{{  -649,    -19,   1569}, 0, {  5728,    996}, {0x16, 0x70, 0xca, 0xff}}},\n    {{{ -1011,    -19,   1931}, 0, {  5728,  -5816}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -861,    -19,   2081}, 0, {  2906,  -5816}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1660,   2678,   -247}, 0, {  3034,  -2416}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{ -2070,   2678,    162}, 0, { -2414,   3032}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{ -1660,   2678,    162}, 0, {  3034,   3032}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{ -2070,   2678,   -247}, 0, { -2414,  -2416}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{  1074,    -19,    145}, 0, {  8016,  10186}, {0xa7, 0x49, 0xcc, 0xff}}},\n    {{{  -349,    -19,   1569}, 0, {  8016, -16620}, {0xe7, 0x6c, 0xc3, 0xff}}},\n    {{{  1936,    -19,   1007}, 0, { -8206,  10186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   862,    -19,   2081}, 0, { -8206, -10032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -349,    -19,   1569}, 0, {  2906,   3818}, {0xe7, 0x6c, 0xc3, 0xff}}},\n    {{{   862,    -19,   2081}, 0, {-13316,  10406}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1080,    -19,   1718}, 0, {  -812,  -1388}, {0x18, 0x65, 0xb8, 0xff}}},\n    {{{ -1011,    -19,   1931}, 0, { -3468,  -2750}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -649,    -19,   1569}, 0, { -3468,   4062}, {0x16, 0x70, 0xca, 0xff}}},\n};\n\n// 0x07002E88 - 0x07002F68\nstatic const Vtx ttc_seg7_vertex_07002E88[] = {\n    {{{ -1080,    -19,   1718}, 0, {  -812,  -1388}, {0x18, 0x65, 0xb8, 0xff}}},\n    {{{ -1225,    -19,   1573}, 0, {  1912,  -1388}, {0x3a, 0x6e, 0x13, 0xff}}},\n    {{{ -1011,    -19,   1931}, 0, { -3468,  -2750}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -649,    -19,   1569}, 0, { -3468,   4062}, {0x16, 0x70, 0xca, 0xff}}},\n    {{{  -935,    -19,   1573}, 0, {  -812,   1336}, {0xa7, 0x54, 0xe3, 0xff}}},\n    {{{ -1442,    -19,   1501}, 0, {  4636,  -2750}, {0xd8, 0x71, 0xd8, 0xff}}},\n    {{{ -1080,    -19,   1139}, 0, {  4636,   4062}, {0xe8, 0x65, 0xb8, 0xff}}},\n    {{{ -1080,    -19,   1428}, 0, {  1912,   1336}, {0xe8, 0x65, 0x48, 0xff}}},\n    {{{  1074,    -19,   -144}, 0, {  6654,  -4460}, {0xba, 0x68, 0xee, 0xff}}},\n    {{{  1074,    -19,    145}, 0, {  3928,  -7186}, {0xa7, 0x49, 0xcc, 0xff}}},\n    {{{  1936,    -19,   1007}, 0, {-12294,  -7186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2081,    -19,   -861}, 0, {  3928,  11762}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1936,    -19,  -1006}, 0, {  6654,  11762}, {0xb0, 0x38, 0xb0, 0xff}}},\n    {{{  2081,    -19,    862}, 0, {-12294,  -4460}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07002F68 - 0x07003068\nstatic const Vtx ttc_seg7_vertex_07002F68[] = {\n    {{{  -861,  -1453,  -2080}, 0, { -7184, -19118}, {0x20, 0x45, 0x65, 0xff}}},\n    {{{  -539,  -1453,  -1758}, 0, {  1910, -19118}, {0x63, 0x49, 0x1a, 0xff}}},\n    {{{  -539,  -1453,  -2080}, 0, { -2636, -23666}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -861,    -19,  -2080}, 0, {-10804,   3926}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1007,    -19,  -1935}, 0, {  8144, -12296}, {0x28, 0x71, 0x28, 0xff}}},\n    {{{   862,    -19,  -2080}, 0, {  5418, -12296}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1006,    -19,  -1935}, 0, {-10804,   6652}, {0xb0, 0x38, 0x50, 0xff}}},\n    {{{  -144,    -19,  -1073}, 0, {  5418,   6652}, {0x12, 0x68, 0x46, 0xff}}},\n    {{{   145,    -19,  -1073}, 0, {  8144,   3926}, {0x34, 0x49, 0x59, 0xff}}},\n    {{{ -1671,   1567,   -247}, 0, {  3034,  -2416}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{ -2080,   1567,   -247}, 0, { -2414,  -2416}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{ -2080,   1567,    162}, 0, { -2414,   3032}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{ -1671,   1567,    162}, 0, {  3034,   3032}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{  2866,   5284,   2081}, 0, { -6162,   6098}, {0xc4, 0x6f, 0x00, 0xff}}},\n    {{{  1970,   5284,   1970}, 0, {   948,    562}, {0x21, 0x65, 0x43, 0xff}}},\n    {{{  2081,   5284,   2866}, 0, { -6162,  -4976}, {0x00, 0x78, 0xd9, 0xff}}},\n};\n\n// 0x07003068 - 0x07003158\nstatic const Vtx ttc_seg7_vertex_07003068[] = {\n    {{{ -1478,   -941,   1464}, 0, { -3436,  -2076}, {0xe7, 0x79, 0xe7, 0xff}}},\n    {{{ -1080,   -839,   1283}, 0, {  2012,    650}, {0x12, 0x6b, 0xc0, 0xff}}},\n    {{{ -1188,   -941,   1175}, 0, {  2012,  -2076}, {0x45, 0x34, 0xa4, 0xff}}},\n    {{{ -1369,   -839,   1573}, 0, { -3436,    650}, {0xe7, 0x79, 0xe7, 0xff}}},\n    {{{ -1833,  -3491,    615}, 0, {  2312,  -5378}, {0xe3, 0x55, 0xa7, 0xff}}},\n    {{{ -1593,  -3491,   1349}, 0, { -2338,   3790}, {0x3f, 0x59, 0x3f, 0xff}}},\n    {{{ -1346,  -3491,   1102}, 0, {  2312,   3790}, {0x6d, 0x33, 0xdc, 0xff}}},\n    {{{ -2080,  -3491,    862}, 0, { -2338,  -5378}, {0xb1, 0x3a, 0xb1, 0xff}}},\n    {{{  2208,   6191,   1919}, 0, { -1052,   2010}, {0x49, 0x67, 0x00, 0xff}}},\n    {{{  1919,   6191,   1629}, 0, {  3034,   2010}, {0x00, 0x2a, 0x89, 0xff}}},\n    {{{  1629,   6191,   1919}, 0, {  3034,  -2076}, {0xa7, 0x54, 0x1e, 0xff}}},\n    {{{  1919,   6191,   2208}, 0, { -1052,  -2076}, {0x24, 0x33, 0x6d, 0xff}}},\n    {{{  1079,   5239,   1864}, 0, {  -580,  -5488}, {0xb3, 0xa5, 0xd8, 0xff}}},\n    {{{  1152,   5239,   1430}, 0, {  1936,  -1910}, {0x91, 0xd7, 0xd5, 0xff}}},\n    {{{  1430,   5239,   1152}, 0, {  1936,   2010}, {0xc7, 0xb8, 0xa9, 0xff}}},\n};\n\n// 0x07003158 - 0x07003258\nstatic const Vtx ttc_seg7_vertex_07003158[] = {\n    {{{  1970,   5284,   1970}, 0, {   948,    562}, {0x21, 0x65, 0x43, 0xff}}},\n    {{{  1867,   5284,   1970}, 0, {  1672,   -160}, {0xbd, 0x65, 0x21, 0xff}}},\n    {{{  2081,   5284,   2866}, 0, { -6162,  -4976}, {0x00, 0x78, 0xd9, 0xff}}},\n    {{{  1079,   5284,   1864}, 0, {  7978,  -4976}, {0xc5, 0x51, 0xb3, 0xff}}},\n    {{{  1867,   5284,   1867}, 0, {  2394,    562}, {0xe9, 0x73, 0xd2, 0xff}}},\n    {{{  1152,   5284,   1430}, 0, { 10534,  -1400}, {0xa9, 0x48, 0xc7, 0xff}}},\n    {{{  2866,   5284,   2081}, 0, { -6162,   6098}, {0xc4, 0x6f, 0x00, 0xff}}},\n    {{{  1970,   5284,   1867}, 0, {  1672,   1282}, {0x43, 0x65, 0xdf, 0xff}}},\n    {{{  1864,   5284,   1079}, 0, {  7978,   6098}, {0xb8, 0x54, 0xc3, 0xff}}},\n    {{{  1430,   5284,   1152}, 0, { 10534,   2520}, {0xdb, 0x48, 0x9f, 0xff}}},\n    {{{  1079,   5239,   1864}, 0, {  -580,  -5488}, {0xb3, 0xa5, 0xd8, 0xff}}},\n    {{{  1430,   5239,   1152}, 0, {  1936,   2010}, {0xc7, 0xb8, 0xa9, 0xff}}},\n    {{{  1864,   5239,   1079}, 0, {  -580,   5588}, {0xd5, 0xd7, 0x91, 0xff}}},\n    {{{ -2080,  -1453,   -861}, 0, { -7184,  15296}, {0x58, 0x26, 0x52, 0xff}}},\n    {{{ -1758,  -1453,   -539}, 0, {  1910,  15296}, {0x1d, 0x54, 0x59, 0xff}}},\n    {{{  -861,  -1453,  -2080}, 0, { -7184, -19118}, {0x20, 0x45, 0x65, 0xff}}},\n};\n\n// 0x07003258 - 0x07003288\nstatic const Vtx ttc_seg7_vertex_07003258[] = {\n    {{{ -1758,  -1453,   -539}, 0, {  1910,  15296}, {0x1d, 0x54, 0x59, 0xff}}},\n    {{{  -539,  -1453,  -1758}, 0, {  1910, -19118}, {0x63, 0x49, 0x1a, 0xff}}},\n    {{{  -861,  -1453,  -2080}, 0, { -7184, -19118}, {0x20, 0x45, 0x65, 0xff}}},\n};\n\n// 0x07003288 - 0x07003378\nstatic const Vtx ttc_seg7_vertex_07003288[] = {\n    {{{  1536,   5089,    424}, 0, {     0,      0}, {0x67, 0x44, 0x19, 0xff}}},\n    {{{  1536,   4936,    424}, 0, {     0,    990}, {0x59, 0xa6, 0x02, 0xff}}},\n    {{{  1536,   5243,   -423}, 0, { 16320,    990}, {0x67, 0xbc, 0xe7, 0xff}}},\n    {{{   364,   3860,   -175}, 0, { -1052,      0}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{   876,   3707,   -175}, 0, {  5760,    990}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{   876,   3860,   -175}, 0, {  5760,      0}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{   364,   3707,   -175}, 0, { -1052,    990}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{  -423,   4475,   1024}, 0, { -3096,      0}, {0xc3, 0x55, 0xb9, 0xff}}},\n    {{{  -785,   4321,   1386}, 0, {  3716,    990}, {0x95, 0xc4, 0xe3, 0xff}}},\n    {{{  -785,   4475,   1386}, 0, {  3716,      0}, {0xa8, 0x3c, 0x44, 0xff}}},\n    {{{  -423,   4321,   1024}, 0, { -3096,    990}, {0xf3, 0xb7, 0x9a, 0xff}}},\n    {{{ -1385,   4014,    786}, 0, {  6450,    990}, {0xea, 0xcc, 0x71, 0xff}}},\n    {{{ -1023,   4168,    424}, 0, { 16320,      0}, {0x6a, 0x3c, 0x21, 0xff}}},\n    {{{ -1385,   4168,    786}, 0, {  6452,      0}, {0xee, 0x54, 0x5c, 0xff}}},\n    {{{ -1023,   4014,    424}, 0, { 16320,    990}, {0x3b, 0x9c, 0x30, 0xff}}},\n};\n\n// 0x07003378 - 0x07003468\nstatic const Vtx ttc_seg7_vertex_07003378[] = {\n    {{{  1386,   5243,   -785}, 0, {  6450,    990}, {0x16, 0xcc, 0x8f, 0xff}}},\n    {{{  1024,   5243,   -423}, 0, { 16320,    990}, {0xc5, 0x9c, 0xd0, 0xff}}},\n    {{{  1024,   5396,   -423}, 0, { 16320,      0}, {0x96, 0x3c, 0xdf, 0xff}}},\n    {{{  1536,   5089,    424}, 0, {     0,      0}, {0x67, 0x44, 0x19, 0xff}}},\n    {{{  1536,   5243,   -423}, 0, { 16320,    990}, {0x67, 0xbc, 0xe7, 0xff}}},\n    {{{  1536,   5396,   -423}, 0, { 16320,      0}, {0x59, 0x5a, 0xfe, 0xff}}},\n    {{{  1386,   5089,    786}, 0, {     0,      0}, {0x40, 0x5a, 0x3d, 0xff}}},\n    {{{  1536,   4936,    424}, 0, {  6100,    990}, {0x59, 0xa6, 0x02, 0xff}}},\n    {{{  1536,   5089,    424}, 0, {  6100,      0}, {0x67, 0x44, 0x19, 0xff}}},\n    {{{  1386,   4936,    786}, 0, {     0,    990}, {0x5b, 0xbc, 0x37, 0xff}}},\n    {{{  1536,   5396,   -423}, 0, {     0,      0}, {0x59, 0x5a, 0xfe, 0xff}}},\n    {{{  1386,   5243,   -785}, 0, {  6100,    990}, {0x16, 0xcc, 0x8f, 0xff}}},\n    {{{  1386,   5396,   -785}, 0, {  6100,      0}, {0x12, 0x54, 0xa4, 0xff}}},\n    {{{  1536,   5243,   -423}, 0, {     0,    990}, {0x67, 0xbc, 0xe7, 0xff}}},\n    {{{  1386,   5396,   -785}, 0, {  6452,      0}, {0x12, 0x54, 0xa4, 0xff}}},\n};\n\n// 0x07003468 - 0x07003558\nstatic const Vtx ttc_seg7_vertex_07003468[] = {\n    {{{   786,   6011,  -1385}, 0, {  6450,    990}, {0x71, 0x34, 0xea, 0xff}}},\n    {{{   424,   6011,  -1023}, 0, { 16320,    990}, {0x19, 0x6c, 0x3d, 0xff}}},\n    {{{   424,   5857,  -1023}, 0, { 16320,      0}, {0x2a, 0xc4, 0x67, 0xff}}},\n    {{{  1024,   5396,   -423}, 0, {     0,      0}, {0x96, 0x3c, 0xdf, 0xff}}},\n    {{{  1024,   5243,   -423}, 0, {     0,    990}, {0xc5, 0x9c, 0xd0, 0xff}}},\n    {{{  1024,   4936,    424}, 0, { 16320,    990}, {0xc4, 0x99, 0xd7, 0xff}}},\n    {{{  1024,   5089,    424}, 0, { 16320,      0}, {0xb8, 0x67, 0xf3, 0xff}}},\n    {{{   786,   4782,   1386}, 0, {     0,      0}, {0x37, 0x44, 0x5b, 0xff}}},\n    {{{  1386,   4936,    786}, 0, { 16320,    990}, {0x5b, 0xbc, 0x37, 0xff}}},\n    {{{  1386,   5089,    786}, 0, { 16320,      0}, {0x40, 0x5a, 0x3d, 0xff}}},\n    {{{   786,   4628,   1386}, 0, {     0,    990}, {0x3d, 0xa6, 0x40, 0xff}}},\n    {{{  1024,   5089,    424}, 0, {     0,      0}, {0xb8, 0x67, 0xf3, 0xff}}},\n    {{{   424,   4628,   1024}, 0, { 16320,    990}, {0xf3, 0x99, 0xb8, 0xff}}},\n    {{{   424,   4782,   1024}, 0, { 16320,      0}, {0xd7, 0x67, 0xc4, 0xff}}},\n    {{{  1024,   4936,    424}, 0, {     0,    990}, {0xc4, 0x99, 0xd7, 0xff}}},\n};\n\n// 0x07003558 - 0x07003648\nstatic const Vtx ttc_seg7_vertex_07003558[] = {\n    {{{  -423,   6011,  -1023}, 0, {     0,      0}, {0x12, 0x68, 0x46, 0xff}}},\n    {{{  -423,   5857,  -1023}, 0, {     0,    990}, {0x24, 0x98, 0x3e, 0xff}}},\n    {{{   424,   5857,  -1023}, 0, { 16320,    990}, {0x2a, 0xc4, 0x67, 0xff}}},\n    {{{   786,   6011,  -1385}, 0, {  6450,    990}, {0x71, 0x34, 0xea, 0xff}}},\n    {{{   424,   5857,  -1023}, 0, { 16320,      0}, {0x2a, 0xc4, 0x67, 0xff}}},\n    {{{   786,   5857,  -1385}, 0, {  6452,      0}, {0x5c, 0xac, 0xee, 0xff}}},\n    {{{   786,   6011,  -1385}, 0, {     0,      0}, {0x71, 0x34, 0xea, 0xff}}},\n    {{{   424,   5857,  -1535}, 0, {  6100,    990}, {0x17, 0xa6, 0xab, 0xff}}},\n    {{{   424,   6011,  -1535}, 0, {  6100,      0}, {0x0d, 0x47, 0x98, 0xff}}},\n    {{{   786,   5857,  -1385}, 0, {     0,    990}, {0x5c, 0xac, 0xee, 0xff}}},\n    {{{   424,   4782,   1536}, 0, {     0,      0}, {0x02, 0x5a, 0x59, 0xff}}},\n    {{{   786,   4628,   1386}, 0, {  6100,    990}, {0x3d, 0xa6, 0x40, 0xff}}},\n    {{{   786,   4782,   1386}, 0, {  6100,      0}, {0x37, 0x44, 0x5b, 0xff}}},\n    {{{   424,   4628,   1536}, 0, {     0,    990}, {0x19, 0xbc, 0x67, 0xff}}},\n    {{{   424,   6011,  -1023}, 0, { 16320,      0}, {0x19, 0x6c, 0x3d, 0xff}}},\n};\n\n// 0x07003648 - 0x07003738\nstatic const Vtx ttc_seg7_vertex_07003648[] = {\n    {{{   876,   3860,  -1023}, 0, {     0,      0}, {0x55, 0x5a, 0xe9, 0xff}}},\n    {{{   876,   3707,  -1023}, 0, {     0,    990}, {0x68, 0xb9, 0xf3, 0xff}}},\n    {{{   726,   3707,  -1385}, 0, {  3034,    990}, {0x4e, 0xc4, 0xb2, 0xff}}},\n    {{{   876,   3860,   -175}, 0, {     0,      0}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{   876,   3707,  -1023}, 0, { 16320,    990}, {0x68, 0xb9, 0xf3, 0xff}}},\n    {{{   876,   3860,  -1023}, 0, { 16320,      0}, {0x55, 0x5a, 0xe9, 0xff}}},\n    {{{   876,   3707,   -175}, 0, {     0,    990}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{   424,   6011,  -1535}, 0, {     0,      0}, {0x0d, 0x47, 0x98, 0xff}}},\n    {{{  -423,   5857,  -1535}, 0, { 16320,    990}, {0xf3, 0xb9, 0x98, 0xff}}},\n    {{{  -423,   6011,  -1535}, 0, { 16320,      0}, {0xe9, 0x5a, 0xab, 0xff}}},\n    {{{   424,   5857,  -1535}, 0, {     0,    990}, {0x17, 0xa6, 0xab, 0xff}}},\n    {{{   424,   4782,   1024}, 0, {     0,      0}, {0xd7, 0x67, 0xc4, 0xff}}},\n    {{{  -423,   4321,   1024}, 0, { 16320,    990}, {0xf3, 0xb7, 0x9a, 0xff}}},\n    {{{  -423,   4475,   1024}, 0, { 16320,      0}, {0xc3, 0x55, 0xb9, 0xff}}},\n    {{{   424,   4628,   1024}, 0, {     0,    990}, {0xf3, 0x99, 0xb8, 0xff}}},\n};\n\n// 0x07003738 - 0x07003838\nstatic const Vtx ttc_seg7_vertex_07003738[] = {\n    {{{   364,   3860,  -1023}, 0, {     0,      0}, {0xd2, 0x73, 0x17, 0xff}}},\n    {{{   364,   3707,  -1023}, 0, {     0,    990}, {0xe9, 0x8d, 0x2e, 0xff}}},\n    {{{   364,   3707,   -175}, 0, { 16320,    990}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{   726,   3707,  -1385}, 0, {  3034,    990}, {0x4e, 0xc4, 0xb2, 0xff}}},\n    {{{   364,   3860,  -1535}, 0, {  6100,      0}, {0x16, 0x39, 0x92, 0xff}}},\n    {{{   726,   3860,  -1385}, 0, {  3034,      0}, {0x3c, 0x5d, 0xc4, 0xff}}},\n    {{{   364,   3707,  -1535}, 0, {  6100,    990}, {0x0d, 0x96, 0xbc, 0xff}}},\n    {{{   876,   3860,  -1023}, 0, {     0,      0}, {0x55, 0x5a, 0xe9, 0xff}}},\n    {{{  -423,   4475,   1536}, 0, {     0,      0}, {0xe7, 0x44, 0x67, 0xff}}},\n    {{{   424,   4628,   1536}, 0, { 16320,    990}, {0x19, 0xbc, 0x67, 0xff}}},\n    {{{   424,   4782,   1536}, 0, { 16320,      0}, {0x02, 0x5a, 0x59, 0xff}}},\n    {{{  -423,   4321,   1536}, 0, {     0,    990}, {0xfe, 0xa6, 0x59, 0xff}}},\n    {{{   364,   3860,   -175}, 0, { 16320,      0}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  -785,   4475,   1386}, 0, {     0,      0}, {0xa8, 0x3c, 0x44, 0xff}}},\n    {{{  -423,   4321,   1536}, 0, {  6100,    990}, {0xfe, 0xa6, 0x59, 0xff}}},\n    {{{  -423,   4475,   1536}, 0, {  6100,      0}, {0xe7, 0x44, 0x67, 0xff}}},\n};\n\n// 0x07003838 - 0x07003928\nstatic const Vtx ttc_seg7_vertex_07003838[] = {\n    {{{ -1023,   6011,   -423}, 0, {     0,      0}, {0x00, 0x2a, 0x77, 0xff}}},\n    {{{ -1023,   5857,   -423}, 0, {     0,    990}, {0x00, 0x99, 0x49, 0xff}}},\n    {{{  -423,   5857,  -1023}, 0, { 16320,    990}, {0x24, 0x98, 0x3e, 0xff}}},\n    {{{  -423,   6011,  -1023}, 0, { 16320,      0}, {0x12, 0x68, 0x46, 0xff}}},\n    {{{  -423,   6011,  -1535}, 0, {     0,      0}, {0xe9, 0x5a, 0xab, 0xff}}},\n    {{{  -785,   5857,  -1385}, 0, {  6100,    990}, {0xd4, 0xa6, 0xb3, 0xff}}},\n    {{{  -785,   6011,  -1385}, 0, {  6100,      0}, {0xc0, 0x47, 0xad, 0xff}}},\n    {{{  -423,   5857,  -1535}, 0, {     0,    990}, {0xf3, 0xb9, 0x98, 0xff}}},\n    {{{  -423,   3860,  -1023}, 0, {     0,      0}, {0x12, 0x68, 0x46, 0xff}}},\n    {{{  -423,   3707,  -1023}, 0, {     0,    990}, {0x24, 0x98, 0x3e, 0xff}}},\n    {{{   364,   3707,  -1023}, 0, { 16320,    990}, {0xe9, 0x8d, 0x2e, 0xff}}},\n    {{{   364,   3860,  -1023}, 0, { 16320,      0}, {0xd2, 0x73, 0x17, 0xff}}},\n    {{{ -1385,   5857,   -785}, 0, {  6450,    990}, {0x89, 0xd6, 0x00, 0xff}}},\n    {{{ -1023,   6011,   -423}, 0, { 16320,      0}, {0x00, 0x2a, 0x77, 0xff}}},\n    {{{ -1385,   6011,   -785}, 0, {  6452,      0}, {0xb7, 0x67, 0x00, 0xff}}},\n};\n\n// 0x07003928 - 0x07003A08\nstatic const Vtx ttc_seg7_vertex_07003928[] = {\n    {{{  -785,   4475,   1386}, 0, {     0,      0}, {0xa8, 0x3c, 0x44, 0xff}}},\n    {{{  -785,   4321,   1386}, 0, {     0,    990}, {0x95, 0xc4, 0xe3, 0xff}}},\n    {{{  -423,   4321,   1536}, 0, {  6100,    990}, {0xfe, 0xa6, 0x59, 0xff}}},\n    {{{   364,   3860,  -1535}, 0, {     0,      0}, {0x16, 0x39, 0x92, 0xff}}},\n    {{{   364,   3707,  -1535}, 0, {     0,    990}, {0x0d, 0x96, 0xbc, 0xff}}},\n    {{{  -423,   3707,  -1535}, 0, { 16320,    990}, {0xf3, 0xb9, 0x98, 0xff}}},\n    {{{  -423,   3860,  -1535}, 0, { 16320,      0}, {0xe9, 0x5a, 0xab, 0xff}}},\n    {{{  -785,   6011,  -1385}, 0, {     0,      0}, {0xc0, 0x47, 0xad, 0xff}}},\n    {{{  -785,   5857,  -1385}, 0, {     0,    990}, {0xd4, 0xa6, 0xb3, 0xff}}},\n    {{{ -1385,   5857,   -785}, 0, { 16320,    990}, {0x89, 0xd6, 0x00, 0xff}}},\n    {{{ -1385,   6011,   -785}, 0, { 16320,      0}, {0xb7, 0x67, 0x00, 0xff}}},\n    {{{ -1385,   5857,   -785}, 0, {  6450,    990}, {0x89, 0xd6, 0x00, 0xff}}},\n    {{{ -1023,   5857,   -423}, 0, { 16320,    990}, {0x00, 0x99, 0x49, 0xff}}},\n    {{{ -1023,   6011,   -423}, 0, { 16320,      0}, {0x00, 0x2a, 0x77, 0xff}}},\n};\n\n// 0x07003A08 - 0x07003AF8\nstatic const Vtx ttc_seg7_vertex_07003A08[] = {\n    {{{ -1535,   4168,    424}, 0, {     0,      0}, {0xa7, 0x5a, 0x02, 0xff}}},\n    {{{ -1535,   4014,    424}, 0, {     0,    990}, {0x99, 0xbc, 0x19, 0xff}}},\n    {{{ -1385,   4014,    786}, 0, {  6100,    990}, {0xea, 0xcc, 0x71, 0xff}}},\n    {{{ -1023,   3860,   -423}, 0, {     0,      0}, {0x42, 0x6a, 0x14, 0xff}}},\n    {{{ -1023,   3707,   -423}, 0, {     0,    990}, {0x46, 0x9a, 0x1b, 0xff}}},\n    {{{  -423,   3707,  -1023}, 0, { 16320,    990}, {0x24, 0x98, 0x3e, 0xff}}},\n    {{{  -423,   3860,  -1023}, 0, { 16320,      0}, {0x12, 0x68, 0x46, 0xff}}},\n    {{{ -1023,   4168,    424}, 0, {     0,      0}, {0x6a, 0x3c, 0x21, 0xff}}},\n    {{{ -1023,   3707,   -423}, 0, { 16320,    990}, {0x46, 0x9a, 0x1b, 0xff}}},\n    {{{ -1023,   3860,   -423}, 0, { 16320,      0}, {0x42, 0x6a, 0x14, 0xff}}},\n    {{{ -1023,   4014,    424}, 0, {     0,    990}, {0x3b, 0x9c, 0x30, 0xff}}},\n    {{{  -423,   3860,  -1535}, 0, {     0,      0}, {0xe9, 0x5a, 0xab, 0xff}}},\n    {{{  -423,   3707,  -1535}, 0, {     0,    990}, {0xf3, 0xb9, 0x98, 0xff}}},\n    {{{  -785,   3707,  -1385}, 0, {  6100,    990}, {0xd4, 0xa6, 0xb3, 0xff}}},\n    {{{  -785,   3860,  -1385}, 0, {  6100,      0}, {0xc0, 0x47, 0xad, 0xff}}},\n};\n\n// 0x07003AF8 - 0x07003BE8\nstatic const Vtx ttc_seg7_vertex_07003AF8[] = {\n    {{{ -1385,   3860,   -785}, 0, {     0,      0}, {0xb3, 0x5a, 0xd4, 0xff}}},\n    {{{ -1535,   3707,   -423}, 0, {  6100,    990}, {0xa7, 0xa6, 0xfe, 0xff}}},\n    {{{ -1535,   3860,   -423}, 0, {  6100,      0}, {0x99, 0x44, 0xe7, 0xff}}},\n    {{{ -1535,   4168,    424}, 0, {     0,      0}, {0xa7, 0x5a, 0x02, 0xff}}},\n    {{{ -1385,   4014,    786}, 0, {  6100,    990}, {0xea, 0xcc, 0x71, 0xff}}},\n    {{{ -1385,   4168,    786}, 0, {  6100,      0}, {0xee, 0x54, 0x5c, 0xff}}},\n    {{{  -785,   3860,  -1385}, 0, {     0,      0}, {0xc0, 0x47, 0xad, 0xff}}},\n    {{{  -785,   3707,  -1385}, 0, {     0,    990}, {0xd4, 0xa6, 0xb3, 0xff}}},\n    {{{ -1385,   3707,   -785}, 0, { 16320,    990}, {0xad, 0xb9, 0xc0, 0xff}}},\n    {{{ -1385,   3860,   -785}, 0, { 16320,      0}, {0xb3, 0x5a, 0xd4, 0xff}}},\n    {{{ -1535,   3860,   -423}, 0, {     0,      0}, {0x99, 0x44, 0xe7, 0xff}}},\n    {{{ -1535,   3707,   -423}, 0, {     0,    990}, {0xa7, 0xa6, 0xfe, 0xff}}},\n    {{{ -1535,   4014,    424}, 0, { 16320,    990}, {0x99, 0xbc, 0x19, 0xff}}},\n    {{{ -1535,   4168,    424}, 0, { 16320,      0}, {0xa7, 0x5a, 0x02, 0xff}}},\n    {{{ -1385,   3707,   -785}, 0, {     0,    990}, {0xad, 0xb9, 0xc0, 0xff}}},\n};\n\n// 0x07003BE8 - 0x07003CD8\nstatic const Vtx ttc_seg7_vertex_07003BE8[] = {\n    {{{  -547,   3072,   1672}, 0, { -9228,      0}, {0x25, 0x50, 0xa5, 0xff}}},\n    {{{  -547,   2919,   1672}, 0, { -9228,    990}, {0x19, 0x94, 0xc3, 0xff}}},\n    {{{ -1568,   2919,    650}, 0, {  9998,    990}, {0x4a, 0xa4, 0xd5, 0xff}}},\n    {{{  1536,   3072,   1407}, 0, { -2674,      0}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{  1024,   2919,   1407}, 0, {  4136,    990}, {0xe2, 0xd6, 0x8d, 0xff}}},\n    {{{  1024,   3072,   1407}, 0, {  4136,      0}, {0xc4, 0x2a, 0x99, 0xff}}},\n    {{{  1536,   2919,   1407}, 0, { -2674,    990}, {0x00, 0x8f, 0xc8, 0xff}}},\n    {{{  1024,   3072,   1407}, 0, { -1938,      0}, {0xc4, 0x2a, 0x99, 0xff}}},\n    {{{  1024,   2919,   1407}, 0, { -1938,    990}, {0xe2, 0xd6, 0x8d, 0xff}}},\n    {{{   760,   2919,   1672}, 0, {  3034,    990}, {0xdb, 0xb0, 0xa5, 0xff}}},\n    {{{   760,   3072,   1672}, 0, {  3034,      0}, {0xe7, 0x6c, 0xc3, 0xff}}},\n    {{{   760,   2919,   1672}, 0, { -8230,    990}, {0xdb, 0xb0, 0xa5, 0xff}}},\n    {{{  -547,   2919,   1672}, 0, {  9166,    990}, {0x19, 0x94, 0xc3, 0xff}}},\n    {{{  -547,   3072,   1672}, 0, {  9166,      0}, {0x25, 0x50, 0xa5, 0xff}}},\n    {{{   760,   3072,   1672}, 0, { -8230,      0}, {0xe7, 0x6c, 0xc3, 0xff}}},\n};\n\n// 0x07003CD8 - 0x07003DC8\nstatic const Vtx ttc_seg7_vertex_07003CD8[] = {\n    {{{ -1080,    -19,   1428}, 0, {     0,      0}, {0xe8, 0x65, 0x48, 0xff}}},\n    {{{ -1080,   -173,   1428}, 0, {     0,    990}, {0x18, 0x9b, 0x48, 0xff}}},\n    {{{  -935,   -173,   1573}, 0, {  3034,    990}, {0xc6, 0x92, 0x13, 0xff}}},\n    {{{  -547,   3072,   1672}, 0, { -9228,      0}, {0x25, 0x50, 0xa5, 0xff}}},\n    {{{ -1568,   2919,    650}, 0, {  9998,    990}, {0x4a, 0xa4, 0xd5, 0xff}}},\n    {{{ -1568,   3072,    650}, 0, {  9998,      0}, {0x53, 0x5c, 0xeb, 0xff}}},\n    {{{ -1568,   3072,    650}, 0, {  -262,      0}, {0x53, 0x5c, 0xeb, 0xff}}},\n    {{{ -1568,   2919,    650}, 0, {  -262,    990}, {0x4a, 0xa4, 0xd5, 0xff}}},\n    {{{ -1568,   2919,    548}, 0, {  1098,    990}, {0x54, 0xac, 0xd6, 0xff}}},\n    {{{ -1568,   3072,    548}, 0, {  1098,      0}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{ -1568,   3072,    548}, 0, {     0,      0}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{ -1568,   2919,    548}, 0, {     0,    990}, {0x54, 0xac, 0xd6, 0xff}}},\n    {{{ -2080,   2919,    548}, 0, {  6782,    990}, {0x00, 0xc8, 0x8f, 0xff}}},\n    {{{ -2080,   3072,    548}, 0, {  6782,      0}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{  -935,    -19,   1573}, 0, {  3034,      0}, {0xa7, 0x54, 0xe3, 0xff}}},\n};\n\n// 0x07003DC8 - 0x07003EB8\nstatic const Vtx ttc_seg7_vertex_07003DC8[] = {\n    {{{  1936,    -19,  -1006}, 0, {     0,      0}, {0xb0, 0x38, 0xb0, 0xff}}},\n    {{{  1936,   -173,  -1006}, 0, {     0,    990}, {0xd8, 0x8f, 0xd8, 0xff}}},\n    {{{  1074,   -173,   -144}, 0, { 16320,    990}, {0xa7, 0xb7, 0xcc, 0xff}}},\n    {{{  -935,    -19,   1573}, 0, {     0,      0}, {0xa7, 0x54, 0xe3, 0xff}}},\n    {{{  -935,   -173,   1573}, 0, {     0,    990}, {0xc6, 0x92, 0x13, 0xff}}},\n    {{{ -1080,   -173,   1718}, 0, {  3034,    990}, {0xe3, 0xac, 0xa7, 0xff}}},\n    {{{ -1080,    -19,   1718}, 0, {  3034,      0}, {0x18, 0x65, 0xb8, 0xff}}},\n    {{{ -1225,    -19,   1573}, 0, {     0,      0}, {0x3a, 0x6e, 0x13, 0xff}}},\n    {{{ -1225,   -173,   1573}, 0, {     0,    990}, {0x48, 0x9b, 0xe8, 0xff}}},\n    {{{ -1080,   -173,   1428}, 0, {  3034,    990}, {0x18, 0x9b, 0x48, 0xff}}},\n    {{{ -1080,    -19,   1428}, 0, {  3034,      0}, {0xe8, 0x65, 0x48, 0xff}}},\n    {{{ -1080,    -19,   1718}, 0, {     0,      0}, {0x18, 0x65, 0xb8, 0xff}}},\n    {{{ -1080,   -173,   1718}, 0, {     0,    990}, {0xe3, 0xac, 0xa7, 0xff}}},\n    {{{ -1225,   -173,   1573}, 0, {  3034,    990}, {0x48, 0x9b, 0xe8, 0xff}}},\n    {{{ -1225,    -19,   1573}, 0, {  3034,      0}, {0x3a, 0x6e, 0x13, 0xff}}},\n};\n\n// 0x07003EB8 - 0x07003FA8\nstatic const Vtx ttc_seg7_vertex_07003EB8[] = {\n    {{{ -1363,    -19,   -144}, 0, {     0,      0}, {0xa7, 0x54, 0x1e, 0xff}}},\n    {{{ -1363,   -173,   -144}, 0, {     0,    990}, {0xa7, 0xac, 0xe3, 0xff}}},\n    {{{ -1218,   -173,      0}, 0, {  3034,    990}, {0xdc, 0xcd, 0x6e, 0xff}}},\n    {{{  1936,    -19,  -1006}, 0, {     0,      0}, {0xb0, 0x38, 0xb0, 0xff}}},\n    {{{  1074,   -173,   -144}, 0, { 16320,    990}, {0xa7, 0xb7, 0xcc, 0xff}}},\n    {{{  1074,    -19,   -144}, 0, { 16320,      0}, {0xba, 0x68, 0xee, 0xff}}},\n    {{{   145,    -19,  -1073}, 0, {     0,      0}, {0x34, 0x49, 0x59, 0xff}}},\n    {{{  1007,   -173,  -1935}, 0, { 16320,    990}, {0x3f, 0xa7, 0x3f, 0xff}}},\n    {{{  1007,    -19,  -1935}, 0, { 16320,      0}, {0x28, 0x71, 0x28, 0xff}}},\n    {{{   145,   -173,  -1073}, 0, {     0,    990}, {0x1e, 0xd6, 0x73, 0xff}}},\n    {{{  -810,    -71,   -885}, 0, {     0,      0}, {0x24, 0x33, 0x6d, 0xff}}},\n    {{{  -810,   -224,   -885}, 0, {     0,    990}, {0xe3, 0xac, 0x59, 0xff}}},\n    {{{  -665,   -224,  -1030}, 0, {  3034,    990}, {0x6d, 0xcd, 0x24, 0xff}}},\n    {{{  -665,    -71,  -1030}, 0, {  3034,      0}, {0x59, 0x54, 0xe3, 0xff}}},\n    {{{ -1218,    -19,      0}, 0, {  3034,      0}, {0x24, 0x33, 0x6e, 0xff}}},\n};\n\n// 0x07003FA8 - 0x07004098\nstatic const Vtx ttc_seg7_vertex_07003FA8[] = {\n    {{{   705,  -1453,  -1513}, 0, {     0,      0}, {0x1d, 0x54, 0x59, 0xff}}},\n    {{{   705,  -1607,  -1513}, 0, {     0,    990}, {0xe2, 0xac, 0x59, 0xff}}},\n    {{{   850,  -1607,  -1658}, 0, {  3034,    990}, {0x6d, 0xcd, 0x24, 0xff}}},\n    {{{ -1339,    -71,  -1125}, 0, {     0,      0}, {0xdc, 0x33, 0x93, 0xff}}},\n    {{{ -1339,   -224,  -1125}, 0, {     0,    990}, {0x1d, 0xac, 0xa7, 0xff}}},\n    {{{ -1484,   -224,   -980}, 0, {  3034,    990}, {0x93, 0xcd, 0xdc, 0xff}}},\n    {{{ -1484,    -71,   -980}, 0, {  3034,      0}, {0xa7, 0x54, 0x1d, 0xff}}},\n    {{{  1621,  -2088,    -58}, 0, {     0,      0}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  1621,  -2242,    -58}, 0, {     0,    990}, {0xac, 0xac, 0x2a, 0xff}}},\n    {{{  2081,  -2242,    -58}, 0, {  6100,    990}, {0x00, 0xc8, 0x71, 0xff}}},\n    {{{  2081,  -2088,    -58}, 0, {  6100,      0}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{  1821,  -2088,   -687}, 0, {     0,      0}, {0xe3, 0x54, 0xa7, 0xff}}},\n    {{{  1821,  -2242,   -687}, 0, {     0,    990}, {0x1d, 0xac, 0xa7, 0xff}}},\n    {{{  1495,  -2242,   -361}, 0, {  6100,    990}, {0x93, 0xcd, 0xdc, 0xff}}},\n    {{{  1495,  -2088,   -361}, 0, {  6100,      0}, {0x93, 0x33, 0x25, 0xff}}},\n};\n\n// 0x07004098 - 0x07004188\nstatic const Vtx ttc_seg7_vertex_07004098[] = {\n    {{{ -1080,   -839,   1863}, 0, { -2414,      0}, {0x3f, 0x59, 0x3f, 0xff}}},\n    {{{  -790,   -992,   1573}, 0, {  3034,    990}, {0x6d, 0xcd, 0x24, 0xff}}},\n    {{{  -790,   -839,   1573}, 0, {  3034,      0}, {0x6d, 0x33, 0xdc, 0xff}}},\n    {{{   705,  -1453,  -1513}, 0, {     0,      0}, {0x1d, 0x54, 0x59, 0xff}}},\n    {{{   850,  -1607,  -1658}, 0, {  3034,    990}, {0x6d, 0xcd, 0x24, 0xff}}},\n    {{{   850,  -1453,  -1658}, 0, {  3034,      0}, {0x6d, 0x33, 0xdc, 0xff}}},\n    {{{  -539,  -1453,  -1758}, 0, {     0,      0}, {0x63, 0x49, 0x1a, 0xff}}},\n    {{{  -539,  -1607,  -1758}, 0, {     0,    990}, {0x76, 0xdb, 0x1a, 0xff}}},\n    {{{  -539,  -1607,  -1876}, 0, {  1502,    990}, {0x67, 0xcd, 0x33, 0xff}}},\n    {{{  -539,  -1453,  -1876}, 0, {  1500,      0}, {0x33, 0x33, 0x67, 0xff}}},\n    {{{  -790,   -839,   1573}, 0, { -1392,      0}, {0x6d, 0x33, 0xdc, 0xff}}},\n    {{{ -1080,   -992,   1283}, 0, {  4056,    990}, {0x53, 0xb8, 0xc2, 0xff}}},\n    {{{ -1080,   -839,   1283}, 0, {  4056,      0}, {0x12, 0x6b, 0xc0, 0xff}}},\n    {{{  -790,   -992,   1573}, 0, { -1392,    990}, {0x6d, 0xcd, 0x24, 0xff}}},\n    {{{ -1080,   -992,   1863}, 0, { -2414,    990}, {0x28, 0x8f, 0x28, 0xff}}},\n};\n\n// 0x07004188 - 0x07004278\nstatic const Vtx ttc_seg7_vertex_07004188[] = {\n    {{{ -1671,  -1146,   -691}, 0, {   478,    990}, {0x67, 0xc4, 0x2a, 0xff}}},\n    {{{ -1646,  -1146,   -716}, 0, {   990,    990}, {0x49, 0x99, 0x00, 0xff}}},\n    {{{ -1646,   -992,   -716}, 0, {   990,      0}, {0x77, 0x2a, 0x00, 0xff}}},\n    {{{ -1188,   -941,   1175}, 0, {  1990,      0}, {0x45, 0x34, 0xa4, 0xff}}},\n    {{{ -1080,   -839,   1283}, 0, {     0,      0}, {0x12, 0x6b, 0xc0, 0xff}}},\n    {{{ -1080,   -992,   1283}, 0, {     0,    990}, {0x53, 0xb8, 0xc2, 0xff}}},\n    {{{ -1188,  -1095,   1175}, 0, {  1990,    990}, {0x40, 0x95, 0xee, 0xff}}},\n    {{{ -1333,  -1095,   1030}, 0, {  2100,    990}, {0x24, 0xcd, 0x93, 0xff}}},\n    {{{ -1188,   -941,   1175}, 0, {  -624,      0}, {0x45, 0x34, 0xa4, 0xff}}},\n    {{{ -1188,  -1095,   1175}, 0, {  -624,    990}, {0x40, 0x95, 0xee, 0xff}}},\n    {{{ -1333,   -941,   1030}, 0, {  2100,      0}, {0xe3, 0x54, 0xa7, 0xff}}},\n    {{{ -1333,   -941,   1030}, 0, { -1052,      0}, {0xe3, 0x54, 0xa7, 0xff}}},\n    {{{ -1333,  -1095,   1030}, 0, { -1052,    990}, {0x24, 0xcd, 0x93, 0xff}}},\n    {{{ -1623,  -1095,   1320}, 0, {  4396,    990}, {0xc1, 0xa7, 0xc1, 0xff}}},\n    {{{ -1623,   -941,   1320}, 0, {  4396,      0}, {0xc1, 0x59, 0xc1, 0xff}}},\n};\n\n// 0x07004278 - 0x07004378\nstatic const Vtx ttc_seg7_vertex_07004278[] = {\n    {{{ -1671,  -1453,    657}, 0, {     0,      0}, {0x71, 0x37, 0x09, 0xff}}},\n    {{{ -1671,  -1607,    657}, 0, {     0,    990}, {0x39, 0x91, 0xed, 0xff}}},\n    {{{ -1671,  -1146,   -656}, 0, { 18402,    990}, {0x5a, 0xa8, 0xf7, 0xff}}},\n    {{{ -1671,  -1146,   -691}, 0, {   478,    990}, {0x67, 0xc4, 0x2a, 0xff}}},\n    {{{ -1646,   -992,   -716}, 0, {   990,      0}, {0x77, 0x2a, 0x00, 0xff}}},\n    {{{ -1671,   -992,   -691}, 0, {   478,      0}, {0x3d, 0x6c, 0x19, 0xff}}},\n    {{{ -1671,   -992,   -656}, 0, {     0,      0}, {0x4c, 0x63, 0x10, 0xff}}},\n    {{{ -1671,  -1146,   -656}, 0, {     0,    990}, {0x5a, 0xa8, 0xf7, 0xff}}},\n    {{{ -1646,   -992,   -716}, 0, { -2074,      0}, {0x77, 0x2a, 0x00, 0xff}}},\n    {{{ -1646,  -1146,   -716}, 0, { -2074,    990}, {0x49, 0x99, 0x00, 0xff}}},\n    {{{ -1935,  -1146,  -1006}, 0, {  2012,    990}, {0x50, 0xc8, 0xb0, 0xff}}},\n    {{{ -1935,   -992,  -1006}, 0, {  2012,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1671,   -992,   -656}, 0, { 18402,      0}, {0x4c, 0x63, 0x10, 0xff}}},\n    {{{  -162,  -2692,   2081}, 0, {     0,      0}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  -162,  -2846,   2081}, 0, {     0,    990}, {0x38, 0x8f, 0x00, 0xff}}},\n    {{{  -162,  -2846,   1682}, 0, {  4056,    990}, {0x67, 0xcd, 0xcd, 0xff}}},\n};\n\n// 0x07004378 - 0x07004478\nstatic const Vtx ttc_seg7_vertex_07004378[] = {\n    {{{ -1646,  -1453,    717}, 0, {     0,      0}, {0x59, 0x54, 0xe3, 0xff}}},\n    {{{ -1646,  -1607,    717}, 0, {     0,    990}, {0x59, 0xac, 0x1d, 0xff}}},\n    {{{ -1671,  -1607,    692}, 0, {   478,    990}, {0x67, 0xc4, 0xd6, 0xff}}},\n    {{{ -1671,  -1453,    692}, 0, {   478,      0}, {0x3d, 0x6c, 0xe7, 0xff}}},\n    {{{ -1671,  -1607,    657}, 0, {   990,    990}, {0x39, 0x91, 0xed, 0xff}}},\n    {{{ -1671,  -1453,    657}, 0, {   990,      0}, {0x71, 0x37, 0x09, 0xff}}},\n    {{{ -1935,  -1453,   1007}, 0, { -1052,      0}, {0x50, 0x38, 0x50, 0xff}}},\n    {{{ -1935,  -1607,   1007}, 0, { -1052,    990}, {0x3f, 0xa7, 0x3f, 0xff}}},\n    {{{ -1646,  -1607,    717}, 0, {  3034,    990}, {0x59, 0xac, 0x1d, 0xff}}},\n    {{{ -1646,  -1453,    717}, 0, {  3034,      0}, {0x59, 0x54, 0xe3, 0xff}}},\n    {{{  -162,  -2692,   2081}, 0, {     0,      0}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  -162,  -2846,   1682}, 0, {  4056,    990}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{  -162,  -2692,   1682}, 0, {  4056,      0}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{  -928,  -2692,   1449}, 0, {     0,      0}, {0xe3, 0x54, 0xa7, 0xff}}},\n    {{{  -928,  -2846,   1449}, 0, {     0,    990}, {0x1e, 0xac, 0xa7, 0xff}}},\n    {{{ -1211,  -2846,   1732}, 0, {  4056,    990}, {0xb0, 0xc8, 0xb0, 0xff}}},\n};\n\n// 0x07004478 - 0x07004578\nstatic const Vtx ttc_seg7_vertex_07004478[] = {\n    {{{  -928,  -2692,   1449}, 0, {     0,      0}, {0xe3, 0x54, 0xa7, 0xff}}},\n    {{{ -1211,  -2846,   1732}, 0, {  4056,    990}, {0xb0, 0xc8, 0xb0, 0xff}}},\n    {{{ -1211,  -2692,   1732}, 0, {  4056,      0}, {0xc1, 0x59, 0xc1, 0xff}}},\n    {{{ -1593,  -3491,   1349}, 0, {     0,      0}, {0x3f, 0x59, 0x3f, 0xff}}},\n    {{{ -1346,  -3670,   1102}, 0, {  3034,    990}, {0x59, 0xac, 0x1d, 0xff}}},\n    {{{ -1346,  -3491,   1102}, 0, {  3034,      0}, {0x6d, 0x33, 0xdc, 0xff}}},\n    {{{ -1593,  -3670,   1349}, 0, {     0,    990}, {0x3f, 0xa7, 0x3f, 0xff}}},\n    {{{ -1833,  -3491,    615}, 0, {  -110,      0}, {0xe3, 0x55, 0xa7, 0xff}}},\n    {{{ -1876,  -3516,    657}, 0, {   376,    114}, {0xbf, 0x25, 0x9a, 0xff}}},\n    {{{ -2080,  -3491,    862}, 0, {  2734,      0}, {0xb1, 0x3a, 0xb1, 0xff}}},\n    {{{ -1876,  -3516,    572}, 0, {-10168,      0}, {0x66, 0x4a, 0xf6, 0xff}}},\n    {{{ -1876,  -4156,   -571}, 0, {  4056,    990}, {0x5a, 0xab, 0x17, 0xff}}},\n    {{{ -1876,  -4003,   -571}, 0, {  4056,      0}, {0x4d, 0x62, 0xec, 0xff}}},\n    {{{ -2080,  -3516,    862}, 0, {  2734,    114}, {0xd8, 0x71, 0xd8, 0xff}}},\n    {{{ -1833,  -3670,    615}, 0, {  -110,    990}, {0x00, 0xd6, 0x89, 0xff}}},\n    {{{ -1876,  -3670,    657}, 0, {   376,    990}, {0x5c, 0xba, 0xce, 0xff}}},\n};\n\n// 0x07004578 - 0x07004658\nstatic const Vtx ttc_seg7_vertex_07004578[] = {\n    {{{ -1876,  -3670,    657}, 0, {   168,    990}, {0x5c, 0xba, 0xce, 0xff}}},\n    {{{ -1876,  -3516,    572}, 0, {  1034,      0}, {0x66, 0x4a, 0xf6, 0xff}}},\n    {{{ -1876,  -3516,    657}, 0, {   168,      0}, {0xbf, 0x25, 0x9a, 0xff}}},\n    {{{ -1876,  -3670,    572}, 0, {  1034,    990}, {0x47, 0x98, 0x0d, 0xff}}},\n    {{{ -1876,  -3516,    572}, 0, {-10168,      0}, {0x66, 0x4a, 0xf6, 0xff}}},\n    {{{ -1876,  -3670,    572}, 0, {-10168,    990}, {0x47, 0x98, 0x0d, 0xff}}},\n    {{{ -1876,  -4156,   -571}, 0, {  4056,    990}, {0x5a, 0xab, 0x17, 0xff}}},\n    {{{   862,   5284,   2081}, 0, {   990,    924}, {0xda, 0x00, 0x88, 0xff}}},\n    {{{   862,   5919,   2081}, 0, {   990,      0}, {0x37, 0x11, 0x8f, 0xff}}},\n    {{{  1079,   5284,   1864}, 0, { -2530,      0}, {0xc5, 0x51, 0xb3, 0xff}}},\n    {{{ -1876,  -4003,   -571}, 0, {     0,      0}, {0x4d, 0x62, 0xec, 0xff}}},\n    {{{ -1876,  -4156,   -656}, 0, {   990,    990}, {0x1d, 0x9c, 0x47, 0xff}}},\n    {{{ -1876,  -4003,   -656}, 0, {   990,      0}, {0x4a, 0x5c, 0x2b, 0xff}}},\n    {{{ -1876,  -4156,   -571}, 0, {     0,    990}, {0x5a, 0xab, 0x17, 0xff}}},\n};\n\n// 0x07004658 - 0x07004738\nstatic const Vtx ttc_seg7_vertex_07004658[] = {\n    {{{ -1363,   1228,    145}, 0, { -2074,      0}, {0x67, 0x45, 0xe8, 0xff}}},\n    {{{ -1363,   1075,    145}, 0, { -2074,    990}, {0x75, 0xd9, 0xe5, 0xff}}},\n    {{{ -1647,   1228,    -72}, 0, {  3034,      0}, {0xea, 0x4e, 0x9f, 0xff}}},\n    {{{ -1647,   1075,    -72}, 0, {  3034,    990}, {0xf1, 0x95, 0xbe, 0xff}}},\n    {{{ -1722,   1228,   1062}, 0, { -2074,      0}, {0x02, 0x37, 0x72, 0xff}}},\n    {{{ -1411,   1075,    883}, 0, {  3034,    990}, {0x4e, 0xaf, 0x39, 0xff}}},\n    {{{ -1411,   1228,    883}, 0, {  3034,      0}, {0x61, 0x51, 0x08, 0xff}}},\n    {{{ -1722,   1075,   1062}, 0, { -2074,    990}, {0xb3, 0xc9, 0x53, 0xff}}},\n    {{{  1430,   5284,   1152}, 0, {   920,      0}, {0xdb, 0x48, 0x9f, 0xff}}},\n    {{{  1864,   5284,   1079}, 0, {   206,      0}, {0xb8, 0x54, 0xc3, 0xff}}},\n    {{{  1864,   5239,   1079}, 0, {   206,     56}, {0xd5, 0xd7, 0x91, 0xff}}},\n    {{{  2081,   5919,    862}, 0, {   990,      0}, {0x92, 0x23, 0x34, 0xff}}},\n    {{{  2081,   5284,    862}, 0, {   990,    924}, {0x88, 0x00, 0xda, 0xff}}},\n    {{{  1864,   5284,   1079}, 0, {  4512,      0}, {0xb8, 0x54, 0xc3, 0xff}}},\n};\n\n// 0x07004738 - 0x07004838\nstatic const Vtx ttc_seg7_vertex_07004738[] = {\n    {{{   862,   5239,   2081}, 0, {  3034,     56}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   862,   5284,   2081}, 0, {  3034,      0}, {0xda, 0x00, 0x88, 0xff}}},\n    {{{  1079,   5284,   1864}, 0, {  2420,      0}, {0xc5, 0x51, 0xb3, 0xff}}},\n    {{{  1152,   5239,   1430}, 0, {  1706,     56}, {0x91, 0xd7, 0xd5, 0xff}}},\n    {{{  1079,   5239,   1864}, 0, {  2420,     56}, {0xb3, 0xa5, 0xd8, 0xff}}},\n    {{{  1152,   5284,   1430}, 0, {  1706,      0}, {0xa9, 0x48, 0xc7, 0xff}}},\n    {{{  1430,   5239,   1152}, 0, {   920,     56}, {0xc7, 0xb8, 0xa9, 0xff}}},\n    {{{  1430,   5284,   1152}, 0, {   920,      0}, {0xdb, 0x48, 0x9f, 0xff}}},\n    {{{  1864,   5239,   1079}, 0, {   206,     56}, {0xd5, 0xd7, 0x91, 0xff}}},\n    {{{  1864,   5284,   1079}, 0, {   206,      0}, {0xb8, 0x54, 0xc3, 0xff}}},\n    {{{  2081,   5239,    862}, 0, {  -406,     56}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2081,   5284,    862}, 0, {  -406,      0}, {0x88, 0x00, 0xda, 0xff}}},\n    {{{ -1876,  -4003,   -656}, 0, {     0,      0}, {0x4a, 0x5c, 0x2b, 0xff}}},\n    {{{  -898,  -4022,  -1634}, 0, {   990,     96}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -898,  -4003,  -1634}, 0, {   990,      0}, {0xc1, 0x1d, 0x69, 0xff}}},\n    {{{ -1876,  -4022,   -656}, 0, {     0,     96}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07004838 - 0x07004918\nstatic const Vtx ttc_seg7_vertex_07004838[] = {\n    {{{ -1055,     31,   1587}, 0, {     0,    990}, {0x60, 0x4c, 0x20, 0xff}}},\n    {{{ -1055,      0,   1559}, 0, {   990,      0}, {0x60, 0xb4, 0xe0, 0xff}}},\n    {{{ -1055,     31,   1559}, 0, {     0,      0}, {0x5a, 0x2c, 0xb4, 0xff}}},\n    {{{ -1055,      0,   1587}, 0, {   990,    990}, {0x4d, 0xb4, 0x41, 0xff}}},\n    {{{ -1080,     31,   1544}, 0, {   832,    480}, {0xf3, 0x6a, 0xbc, 0xff}}},\n    {{{ -1055,     31,   1587}, 0, {   302,    -16}, {0x60, 0x4c, 0x20, 0xff}}},\n    {{{ -1055,     31,   1559}, 0, {   656,    -16}, {0x5a, 0x2c, 0xb4, 0xff}}},\n    {{{ -1080,     31,   1602}, 0, {   126,    478}, {0x13, 0x4c, 0x63, 0xff}}},\n    {{{ -1105,     31,   1587}, 0, {   302,    974}, {0xb3, 0x4c, 0x41, 0xff}}},\n    {{{ -1105,     31,   1559}, 0, {   656,    974}, {0x90, 0x2c, 0xda, 0xff}}},\n    {{{ -1055,     31,   1559}, 0, {     0,    990}, {0x5a, 0x2c, 0xb4, 0xff}}},\n    {{{ -1080,      0,   1544}, 0, {   990,      0}, {0x13, 0xb4, 0x9d, 0xff}}},\n    {{{ -1080,     31,   1544}, 0, {     0,      0}, {0xf3, 0x6a, 0xbc, 0xff}}},\n    {{{ -1055,      0,   1559}, 0, {   990,    990}, {0x60, 0xb4, 0xe0, 0xff}}},\n};\n\n// 0x07004918 - 0x07004A08\nstatic const Vtx ttc_seg7_vertex_07004918[] = {\n    {{{ -1105,      0,   1587}, 0, {   302,    974}, {0xbe, 0x97, 0x16, 0xff}}},\n    {{{ -1055,      0,   1587}, 0, {   302,    -16}, {0x4d, 0xb4, 0x41, 0xff}}},\n    {{{ -1080,      0,   1602}, 0, {   126,    478}, {0xe9, 0xd3, 0x74, 0xff}}},\n    {{{ -1080,     31,   1602}, 0, {     0,    990}, {0x13, 0x4c, 0x63, 0xff}}},\n    {{{ -1055,      0,   1587}, 0, {   990,      0}, {0x4d, 0xb4, 0x41, 0xff}}},\n    {{{ -1055,     31,   1587}, 0, {     0,      0}, {0x60, 0x4c, 0x20, 0xff}}},\n    {{{ -1080,      0,   1602}, 0, {   990,    990}, {0xe9, 0xd3, 0x74, 0xff}}},\n    {{{ -1080,     31,   1544}, 0, {     0,    990}, {0xf3, 0x6a, 0xbc, 0xff}}},\n    {{{ -1105,      0,   1559}, 0, {   990,      0}, {0xa6, 0xd4, 0xb4, 0xff}}},\n    {{{ -1105,     31,   1559}, 0, {     0,      0}, {0x90, 0x2c, 0xda, 0xff}}},\n    {{{ -1080,      0,   1544}, 0, {   990,    990}, {0x13, 0xb4, 0x9d, 0xff}}},\n    {{{ -1105,     31,   1587}, 0, {     0,    990}, {0xb3, 0x4c, 0x41, 0xff}}},\n    {{{ -1105,      0,   1587}, 0, {   990,    990}, {0xbe, 0x97, 0x16, 0xff}}},\n    {{{ -1080,      0,   1602}, 0, {   990,      0}, {0xe9, 0xd3, 0x74, 0xff}}},\n    {{{ -1080,     31,   1602}, 0, {     0,      0}, {0x13, 0x4c, 0x63, 0xff}}},\n};\n\n// 0x07004A08 - 0x07004B08\nstatic const Vtx ttc_seg7_vertex_07004A08[] = {\n    {{{ -1055,   -824,   1587}, 0, {     0,    990}, {0x60, 0x4c, 0x20, 0xff}}},\n    {{{ -1055,   -856,   1587}, 0, {   990,    990}, {0x60, 0x00, 0x51, 0xff}}},\n    {{{ -1055,   -856,   1559}, 0, {   990,      0}, {0x78, 0x00, 0xd8, 0xff}}},\n    {{{ -1105,      0,   1587}, 0, {   302,    974}, {0xbe, 0x97, 0x16, 0xff}}},\n    {{{ -1055,      0,   1559}, 0, {   656,    -16}, {0x60, 0xb4, 0xe0, 0xff}}},\n    {{{ -1055,      0,   1587}, 0, {   302,    -16}, {0x4d, 0xb4, 0x41, 0xff}}},\n    {{{ -1080,      0,   1544}, 0, {   832,    480}, {0x13, 0xb4, 0x9d, 0xff}}},\n    {{{ -1105,      0,   1559}, 0, {   656,    974}, {0xa6, 0xd4, 0xb4, 0xff}}},\n    {{{ -1105,     31,   1559}, 0, {     0,    990}, {0x90, 0x2c, 0xda, 0xff}}},\n    {{{ -1105,      0,   1587}, 0, {   990,      0}, {0xbe, 0x97, 0x16, 0xff}}},\n    {{{ -1105,     31,   1587}, 0, {     0,      0}, {0xb3, 0x4c, 0x41, 0xff}}},\n    {{{ -1105,      0,   1559}, 0, {   990,    990}, {0xa6, 0xd4, 0xb4, 0xff}}},\n    {{{ -1055,   -824,   1559}, 0, {     0,      0}, {0x5a, 0x2c, 0xb4, 0xff}}},\n    {{{ -1080,   -824,   1544}, 0, {   832,    480}, {0xf3, 0x6a, 0xbc, 0xff}}},\n    {{{ -1055,   -824,   1587}, 0, {   302,    -16}, {0x60, 0x4c, 0x20, 0xff}}},\n    {{{ -1055,   -824,   1559}, 0, {   656,    -16}, {0x5a, 0x2c, 0xb4, 0xff}}},\n};\n\n// 0x07004B08 - 0x07004C08\nstatic const Vtx ttc_seg7_vertex_07004B08[] = {\n    {{{ -1080,   -824,   1544}, 0, {   832,    480}, {0xf3, 0x6a, 0xbc, 0xff}}},\n    {{{ -1080,   -824,   1602}, 0, {   126,    478}, {0x13, 0x4c, 0x63, 0xff}}},\n    {{{ -1055,   -824,   1587}, 0, {   302,    -16}, {0x60, 0x4c, 0x20, 0xff}}},\n    {{{ -1105,   -824,   1559}, 0, {   656,    974}, {0x90, 0x2c, 0xda, 0xff}}},\n    {{{ -1105,   -824,   1587}, 0, {   302,    974}, {0xb3, 0x4c, 0x41, 0xff}}},\n    {{{ -1055,   -824,   1559}, 0, {     0,    990}, {0x5a, 0x2c, 0xb4, 0xff}}},\n    {{{ -1055,   -856,   1559}, 0, {   990,    990}, {0x78, 0x00, 0xd8, 0xff}}},\n    {{{ -1080,   -856,   1544}, 0, {   990,      0}, {0x18, 0x00, 0x84, 0xff}}},\n    {{{ -1080,   -824,   1544}, 0, {     0,      0}, {0xf3, 0x6a, 0xbc, 0xff}}},\n    {{{ -1080,   -824,   1602}, 0, {     0,    990}, {0x13, 0x4c, 0x63, 0xff}}},\n    {{{ -1055,   -856,   1587}, 0, {   990,      0}, {0x60, 0x00, 0x51, 0xff}}},\n    {{{ -1055,   -824,   1587}, 0, {     0,      0}, {0x60, 0x4c, 0x20, 0xff}}},\n    {{{ -1080,   -856,   1602}, 0, {   990,    990}, {0xe8, 0x00, 0x7c, 0xff}}},\n    {{{ -1080,   -824,   1544}, 0, {     0,    990}, {0xf3, 0x6a, 0xbc, 0xff}}},\n    {{{ -1105,   -856,   1559}, 0, {   990,      0}, {0xa0, 0x00, 0xaf, 0xff}}},\n    {{{ -1105,   -824,   1559}, 0, {     0,      0}, {0x90, 0x2c, 0xda, 0xff}}},\n};\n\n// 0x07004C08 - 0x07004CB8\nstatic const Vtx ttc_seg7_vertex_07004C08[] = {\n    {{{ -1080,   -824,   1544}, 0, {     0,    990}, {0xf3, 0x6a, 0xbc, 0xff}}},\n    {{{ -1080,   -856,   1544}, 0, {   990,    990}, {0x18, 0x00, 0x84, 0xff}}},\n    {{{ -1105,   -856,   1559}, 0, {   990,      0}, {0xa0, 0x00, 0xaf, 0xff}}},\n    {{{ -1105,   -824,   1587}, 0, {     0,    990}, {0xb3, 0x4c, 0x41, 0xff}}},\n    {{{ -1080,   -856,   1602}, 0, {   990,      0}, {0xe8, 0x00, 0x7c, 0xff}}},\n    {{{ -1080,   -824,   1602}, 0, {     0,      0}, {0x13, 0x4c, 0x63, 0xff}}},\n    {{{ -1105,   -856,   1587}, 0, {   990,    990}, {0x88, 0x00, 0x28, 0xff}}},\n    {{{ -1105,   -824,   1559}, 0, {     0,    990}, {0x90, 0x2c, 0xda, 0xff}}},\n    {{{ -1105,   -856,   1559}, 0, {   990,    990}, {0xa0, 0x00, 0xaf, 0xff}}},\n    {{{ -1105,   -856,   1587}, 0, {   990,      0}, {0x88, 0x00, 0x28, 0xff}}},\n    {{{ -1105,   -824,   1587}, 0, {     0,      0}, {0xb3, 0x4c, 0x41, 0xff}}},\n};\n\n// 0x07004CB8 - 0x07004DA8\nstatic const Vtx ttc_seg7_vertex_07004CB8[] = {\n    {{{  2081,   5284,    862}, 0, {  5078,   7120}, {0x88, 0x00, 0xda, 0xff}}},\n    {{{  2081,   7475,   -861}, 0, {   -30,  -2184}, {0x93, 0xd1, 0x2a, 0xff}}},\n    {{{  2081,   5284,   -861}, 0, {   -30,   7120}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{   862,   5919,   2081}, 0, {  5078,   4422}, {0x37, 0x11, 0x8f, 0xff}}},\n    {{{   862,   7475,   2081}, 0, {  5078,  -2184}, {0x04, 0xaf, 0x9f, 0xff}}},\n    {{{  2081,   7475,   3301}, 0, {   -30,  -2184}, {0x24, 0xcd, 0x93, 0xff}}},\n    {{{  2081,   5919,   3301}, 0, {   -30,   4422}, {0xef, 0x2b, 0x8b, 0xff}}},\n    {{{  2081,   5919,   3301}, 0, {  5078,   4422}, {0xef, 0x2b, 0x8b, 0xff}}},\n    {{{  3301,   7475,   2081}, 0, {   -30,  -2184}, {0xa7, 0xac, 0xe3, 0xff}}},\n    {{{  3301,   5919,   2081}, 0, {   -30,   4422}, {0x88, 0x1e, 0x19, 0xff}}},\n    {{{  2081,   7475,   3301}, 0, {  5078,  -2184}, {0x24, 0xcd, 0x93, 0xff}}},\n    {{{  3301,   5919,   2081}, 0, {  5078,   4422}, {0x88, 0x1e, 0x19, 0xff}}},\n    {{{  2081,   7475,    862}, 0, {   -30,  -2184}, {0x9a, 0xb6, 0x07, 0xff}}},\n    {{{  2081,   5919,    862}, 0, {   -30,   4422}, {0x92, 0x23, 0x34, 0xff}}},\n    {{{  3301,   7475,   2081}, 0, {  5078,  -2184}, {0xa7, 0xac, 0xe3, 0xff}}},\n};\n\n// 0x07004DA8 - 0x07004E98\nstatic const Vtx ttc_seg7_vertex_07004DA8[] = {\n    {{{   862,   5284,  -2080}, 0, {  5078,   7120}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  -861,   7475,  -2080}, 0, {   -30,  -2184}, {0x23, 0xda, 0x73, 0xff}}},\n    {{{  -861,   5284,  -2080}, 0, {   -30,   7120}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{  2081,   5284,    862}, 0, {  5078,   7120}, {0x88, 0x00, 0xda, 0xff}}},\n    {{{  2081,   7475,    862}, 0, {  5078,  -2184}, {0x9a, 0xb6, 0x07, 0xff}}},\n    {{{  2081,   7475,   -861}, 0, {   -30,  -2184}, {0x93, 0xd1, 0x2a, 0xff}}},\n    {{{  2081,   5284,   -861}, 0, {  5078,   7120}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{  2081,   7475,   -861}, 0, {  5078,  -2184}, {0x93, 0xd1, 0x2a, 0xff}}},\n    {{{   862,   7475,  -2080}, 0, {   -30,  -2184}, {0xd1, 0xd1, 0x6b, 0xff}}},\n    {{{   862,   5284,  -2080}, 0, {   -30,   7120}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  -861,   5284,   2081}, 0, {  5078,   7120}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{   862,   7475,   2081}, 0, {   -30,  -2184}, {0x04, 0xaf, 0x9f, 0xff}}},\n    {{{   862,   5284,   2081}, 0, {   -30,   7120}, {0xda, 0x00, 0x88, 0xff}}},\n    {{{  -861,   7475,   2081}, 0, {  5078,  -2184}, {0x2f, 0xd1, 0x95, 0xff}}},\n    {{{   862,   7475,  -2080}, 0, {  5078,  -2184}, {0xd1, 0xd1, 0x6b, 0xff}}},\n};\n\n// 0x07004E98 - 0x07004F88\nstatic const Vtx ttc_seg7_vertex_07004E98[] = {\n    {{{  2081,   1915,    862}, 0, {  5078,   7120}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{  2081,   5284,    862}, 0, {  5078,  -7186}, {0x88, 0x00, 0xda, 0xff}}},\n    {{{  2081,   5284,   -861}, 0, {   -30,  -7186}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{ -2080,   5284,    862}, 0, {  5078,   7120}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{  -861,   7475,   2081}, 0, {   -30,  -2184}, {0x2f, 0xd1, 0x95, 0xff}}},\n    {{{  -861,   5284,   2081}, 0, {   -30,   7120}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{ -2080,   7475,    862}, 0, {  5078,  -2184}, {0x6d, 0xd1, 0xd6, 0xff}}},\n    {{{  -861,   5284,  -2080}, 0, {  5078,   7120}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{ -2080,   7475,   -861}, 0, {   -30,  -2184}, {0x66, 0xca, 0x33, 0xff}}},\n    {{{ -2080,   5284,   -861}, 0, {   -30,   7120}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{  -861,   7475,  -2080}, 0, {  5078,  -2184}, {0x23, 0xda, 0x73, 0xff}}},\n    {{{ -2080,   5284,   -861}, 0, {  5078,   7120}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{ -2080,   7475,   -861}, 0, {  5078,  -2184}, {0x66, 0xca, 0x33, 0xff}}},\n    {{{ -2080,   7475,    862}, 0, {     0,  -2184}, {0x6d, 0xd1, 0xd6, 0xff}}},\n    {{{ -2080,   5284,    862}, 0, {     0,   7120}, {0x75, 0x00, 0xd0, 0xff}}},\n};\n\n// 0x07004F88 - 0x07005078\nstatic const Vtx ttc_seg7_vertex_07004F88[] = {\n    {{{  -861,   1915,   2081}, 0, {  5078,   7120}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{   862,   5284,   2081}, 0, {   -30,  -7186}, {0xda, 0x00, 0x88, 0xff}}},\n    {{{   862,   1915,   2081}, 0, {   -30,   7120}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{  2081,   1915,    862}, 0, {  5078,   7120}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{  2081,   5284,   -861}, 0, {   -30,  -7186}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{  2081,   1915,   -861}, 0, {   -30,   7120}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{   862,   1915,   2081}, 0, {  5078,   7120}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{   862,   5239,   2081}, 0, {  5078,  -6998}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2081,   5239,    862}, 0, {   -30,  -6998}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2081,   1915,    862}, 0, {   -30,   7120}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{  2081,   1915,   -861}, 0, {  5078,   7120}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{  2081,   5284,   -861}, 0, {  5078,  -7186}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{   862,   5284,  -2080}, 0, {   -30,  -7186}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{   862,   1915,  -2080}, 0, {   -30,   7120}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  -861,   5284,   2081}, 0, {  5078,  -7186}, {0x30, 0x00, 0x8b, 0xff}}},\n};\n\n// 0x07005078 - 0x07005168\nstatic const Vtx ttc_seg7_vertex_07005078[] = {\n    {{{ -2080,   1915,   -861}, 0, {  5078,   7120}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{ -2080,   5284,   -861}, 0, {  5078,  -7186}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{ -2080,   5284,    862}, 0, {     0,  -7186}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{   862,   1915,  -2080}, 0, {  5078,   7120}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{   862,   5284,  -2080}, 0, {  5078,  -7186}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  -861,   5284,  -2080}, 0, {   -30,  -7186}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{  -861,   1915,  -2080}, 0, {   -30,   7120}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{ -2080,   1915,    862}, 0, {  5078,   7120}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{  -861,   5284,   2081}, 0, {   -30,  -7186}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{  -861,   1915,   2081}, 0, {   -30,   7120}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{ -2080,   5284,    862}, 0, {  5078,  -7186}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{  -861,   1915,  -2080}, 0, {  5078,   7120}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{ -2080,   5284,   -861}, 0, {   -30,  -7186}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{ -2080,   1915,   -861}, 0, {   -30,   7120}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{  -861,   5284,  -2080}, 0, {  5078,  -7186}, {0x30, 0x00, 0x75, 0xff}}},\n};\n\n// 0x07005168 - 0x07005258\nstatic const Vtx ttc_seg7_vertex_07005168[] = {\n    {{{  2081,  -1453,   -861}, 0, {  5078,   7120}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{   862,   1915,  -2080}, 0, {   -30,  -7186}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{   862,  -1453,  -2080}, 0, {   -30,   7120}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{ -2080,   1915,   -861}, 0, {  5078,   7120}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{ -2080,   5284,    862}, 0, {     0,  -7186}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{ -2080,   1915,    862}, 0, {     0,   7120}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{  2081,  -1453,    862}, 0, {  5078,   7120}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{  2081,   1915,    862}, 0, {  5078,  -7186}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{  2081,   1915,   -861}, 0, {   -30,  -7186}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{  2081,  -1453,   -861}, 0, {   -30,   7120}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{   862,  -1453,   2081}, 0, {  5078,   7120}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{  2081,   1915,    862}, 0, {   -30,  -7186}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{  2081,  -1453,    862}, 0, {   -30,   7120}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{   862,   1915,   2081}, 0, {  5078,  -7186}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{  2081,   1915,   -861}, 0, {  5078,  -7186}, {0x8b, 0x00, 0x30, 0xff}}},\n};\n\n// 0x07005258 - 0x07005348\nstatic const Vtx ttc_seg7_vertex_07005258[] = {\n    {{{  -861,  -1453,  -2080}, 0, {  5078,   7120}, {0x20, 0x45, 0x65, 0xff}}},\n    {{{ -2080,   1915,   -861}, 0, {   -30,  -7186}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{ -2080,  -1453,   -861}, 0, {   -30,   7120}, {0x58, 0x26, 0x52, 0xff}}},\n    {{{  -861,  -1453,   2081}, 0, {  5078,   7120}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{   862,   1915,   2081}, 0, {   -30,  -7186}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{   862,  -1453,   2081}, 0, {   -30,   7120}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{  -861,   1915,   2081}, 0, {  5078,  -7186}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{   862,  -1453,  -2080}, 0, {  5078,   7120}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{   862,   1915,  -2080}, 0, {  5078,  -7186}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  -861,   1915,  -2080}, 0, {   -30,  -7186}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{  -861,  -1453,  -2080}, 0, {   -30,   7120}, {0x20, 0x45, 0x65, 0xff}}},\n    {{{ -2080,  -1453,    862}, 0, {  5078,   7120}, {0x67, 0x3c, 0xd6, 0xff}}},\n    {{{ -2080,   1915,    862}, 0, {  5078,  -7186}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{  -861,   1915,   2081}, 0, {   -30,  -7186}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{  -861,  -1453,   2081}, 0, {   -30,   7120}, {0x30, 0x00, 0x8b, 0xff}}},\n};\n\n// 0x07005348 - 0x07005438\nstatic const Vtx ttc_seg7_vertex_07005348[] = {\n    {{{   862,  -4822,   2081}, 0, {  5078,   7120}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{   862,  -1453,   2081}, 0, {  5078,  -7186}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{  2081,  -1453,    862}, 0, {   -30,  -7186}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{  -861,  -1453,  -2080}, 0, {  5078,   7120}, {0x20, 0x45, 0x65, 0xff}}},\n    {{{  -861,   1915,  -2080}, 0, {  5078,  -7186}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{ -2080,   1915,   -861}, 0, {   -30,  -7186}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{ -2080,  -1453,   -861}, 0, {  5078,   7120}, {0x58, 0x26, 0x52, 0xff}}},\n    {{{ -2080,   1915,    862}, 0, {     0,  -7186}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{ -2080,  -1453,    862}, 0, {     0,   7120}, {0x67, 0x3c, 0xd6, 0xff}}},\n    {{{ -2080,   1915,   -861}, 0, {  5078,  -7186}, {0x75, 0x00, 0x30, 0xff}}},\n    {{{  2081,  -4822,    862}, 0, {  5078,   7120}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{  2081,  -1453,   -861}, 0, {   -30,  -7186}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{  2081,  -4822,   -861}, 0, {   -30,   7120}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{  2081,  -1453,    862}, 0, {  5078,  -7186}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{  2081,  -4822,    862}, 0, {   -30,   7120}, {0x8b, 0x00, 0xd0, 0xff}}},\n};\n\n// 0x07005438 - 0x07005528\nstatic const Vtx ttc_seg7_vertex_07005438[] = {\n    {{{ -2080,  -4822,    862}, 0, {  5078,   7120}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{  -861,  -1453,   2081}, 0, {   -30,  -7186}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{  -861,  -4822,   2081}, 0, {   -30,   7120}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{  2081,  -4822,   -861}, 0, {  5078,   7120}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{  2081,  -1453,   -861}, 0, {  5078,  -7186}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{   862,  -1453,  -2080}, 0, {   -30,  -7186}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{   862,  -4822,  -2080}, 0, {   -30,   7120}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  -861,  -4822,   2081}, 0, {  5078,   7120}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{  -861,  -1453,   2081}, 0, {  5078,  -7186}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{   862,  -1453,   2081}, 0, {   -30,  -7186}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{   862,  -4822,   2081}, 0, {   -30,   7120}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{   862,  -4822,  -2080}, 0, {  5078,   7120}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  -861,  -1453,  -2080}, 0, {   -30,  -7186}, {0x20, 0x45, 0x65, 0xff}}},\n    {{{  -861,  -4822,  -2080}, 0, {   -30,   7120}, {0x22, 0x9f, 0x49, 0xff}}},\n    {{{   862,  -1453,  -2080}, 0, {  5078,  -7186}, {0xd0, 0x00, 0x75, 0xff}}},\n};\n\n// 0x07005528 - 0x07005618\nstatic const Vtx ttc_seg7_vertex_07005528[] = {\n    {{{   862,  -8191,   2081}, 0, {  5078,   7120}, {0xc0, 0x00, 0x93, 0xff}}},\n    {{{   862,  -4822,   2081}, 0, {  5078,  -7186}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{  2081,  -4822,    862}, 0, {   -30,  -7186}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{ -2080,  -4822,    862}, 0, {  5078,   7120}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{ -2080,  -1453,    862}, 0, {  5078,  -7186}, {0x67, 0x3c, 0xd6, 0xff}}},\n    {{{  -861,  -1453,   2081}, 0, {   -30,  -7186}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{ -2080,  -4822,   -861}, 0, {  5078,   7120}, {0x59, 0xe3, 0x54, 0xff}}},\n    {{{ -2080,  -1453,   -861}, 0, {  5078,  -7186}, {0x58, 0x26, 0x52, 0xff}}},\n    {{{ -2080,  -1453,    862}, 0, {     0,  -7186}, {0x67, 0x3c, 0xd6, 0xff}}},\n    {{{ -2080,  -4822,    862}, 0, {     0,   7120}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{  2081,  -8191,    862}, 0, {  5078,   7120}, {0x86, 0x00, 0xe0, 0xff}}},\n    {{{  2081,  -4822,    862}, 0, {  5078,  -7186}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{  2081,  -4822,   -861}, 0, {   -30,  -7186}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{  2081,  -8191,   -861}, 0, {   -30,   7120}, {0x93, 0x00, 0x40, 0xff}}},\n    {{{  2081,  -8191,    862}, 0, {   -30,   7120}, {0x86, 0x00, 0xe0, 0xff}}},\n};\n\n// 0x07005618 - 0x07005708\nstatic const Vtx ttc_seg7_vertex_07005618[] = {\n    {{{ -2080,  -8191,    862}, 0, {  5078,   7120}, {0x6d, 0x00, 0xc0, 0xff}}},\n    {{{ -2080,  -4822,    862}, 0, {  5078,  -7186}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{  -861,  -4822,   2081}, 0, {   -30,  -7186}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{  2081,  -8191,   -861}, 0, {  5078,   7120}, {0x93, 0x00, 0x40, 0xff}}},\n    {{{  2081,  -4822,   -861}, 0, {  5078,  -7186}, {0x8b, 0x00, 0x30, 0xff}}},\n    {{{   862,  -4822,  -2080}, 0, {   -30,  -7186}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{   862,  -8191,  -2080}, 0, {   -30,   7120}, {0xe0, 0x00, 0x7a, 0xff}}},\n    {{{  -861,  -8191,   2081}, 0, {  5078,   7120}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{  -861,  -4822,   2081}, 0, {  5078,  -7186}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{   862,  -4822,   2081}, 0, {   -30,  -7186}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{   862,  -8191,   2081}, 0, {   -30,   7120}, {0xc0, 0x00, 0x93, 0xff}}},\n    {{{   862,  -8191,  -2080}, 0, {  5078,   7120}, {0xe0, 0x00, 0x7a, 0xff}}},\n    {{{  -861,  -4822,  -2080}, 0, {   -30,  -7186}, {0x22, 0x9f, 0x49, 0xff}}},\n    {{{  -861,  -8191,  -2080}, 0, {   -30,   7120}, {0x40, 0x00, 0x6d, 0xff}}},\n    {{{   862,  -4822,  -2080}, 0, {  5078,  -7186}, {0xd0, 0x00, 0x75, 0xff}}},\n};\n\n// 0x07005708 - 0x070057B8\nstatic const Vtx ttc_seg7_vertex_07005708[] = {\n    {{{ -2080,  -8191,   -861}, 0, {  5078,   7120}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{ -2080,  -4822,   -861}, 0, {  5078,  -7186}, {0x59, 0xe3, 0x54, 0xff}}},\n    {{{ -2080,  -4822,    862}, 0, {     0,  -7186}, {0x75, 0x00, 0xd0, 0xff}}},\n    {{{ -2080,  -8191,    862}, 0, {  5078,   7120}, {0x6d, 0x00, 0xc0, 0xff}}},\n    {{{  -861,  -4822,   2081}, 0, {   -30,  -7186}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{  -861,  -8191,   2081}, 0, {   -30,   7120}, {0x20, 0x00, 0x86, 0xff}}},\n    {{{  -861,  -8191,  -2080}, 0, {  5078,   7120}, {0x40, 0x00, 0x6d, 0xff}}},\n    {{{  -861,  -4822,  -2080}, 0, {  5078,  -7186}, {0x22, 0x9f, 0x49, 0xff}}},\n    {{{ -2080,  -4822,   -861}, 0, {   -30,  -7186}, {0x59, 0xe3, 0x54, 0xff}}},\n    {{{ -2080,  -8191,   -861}, 0, {   -30,   7120}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{ -2080,  -8191,    862}, 0, {     0,   7120}, {0x6d, 0x00, 0xc0, 0xff}}},\n};\n\n// 0x070057B8 - 0x070058B8\nstatic const Vtx ttc_seg7_vertex_070057B8[] = {\n    {{{   106,   6093,     61}, 0, {     0,    224}, {0x6f, 0x27, 0x2e, 0xff}}},\n    {{{   106,   6052,     61}, 0, {     0,      0}, {0x4c, 0xb4, 0x42, 0xff}}},\n    {{{   106,   6052,    -60}, 0, {   990,      0}, {0x5f, 0xb4, 0xdf, 0xff}}},\n    {{{   106,   6093,    -60}, 0, {   990,    224}, {0x60, 0x27, 0xb8, 0xff}}},\n    {{{     0,   6216,      0}, 0, {   478,    990}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{     0,   6093,    123}, 0, {     0,    224}, {0x0f, 0x28, 0x77, 0xff}}},\n    {{{   106,   6093,     61}, 0, {   990,    224}, {0x6f, 0x27, 0x2e, 0xff}}},\n    {{{     0,   6216,      0}, 0, {   480,    990}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{   106,   6052,     61}, 0, {   990,      0}, {0x4c, 0xb4, 0x42, 0xff}}},\n    {{{     0,   6052,    123}, 0, {     0,      0}, {0xe9, 0xd3, 0x74, 0xff}}},\n    {{{  -105,   6052,     61}, 0, {   990,      0}, {0xbe, 0x97, 0x16, 0xff}}},\n    {{{     0,   6052,    123}, 0, {  1502,      0}, {0xe9, 0xd3, 0x74, 0xff}}},\n    {{{   106,   6093,    -60}, 0, {     0,    224}, {0x60, 0x27, 0xb8, 0xff}}},\n    {{{     0,   6093,   -122}, 0, {   990,    224}, {0xf1, 0x27, 0x89, 0xff}}},\n    {{{     0,   6052,   -122}, 0, {   990,      0}, {0x13, 0xb4, 0x9d, 0xff}}},\n    {{{   106,   6052,    -60}, 0, {     0,      0}, {0x5f, 0xb4, 0xdf, 0xff}}},\n};\n\n// 0x070058B8 - 0x070059A8\nstatic const Vtx ttc_seg7_vertex_070058B8[] = {\n    {{{  -105,   6093,    -60}, 0, {     0,    224}, {0x91, 0x27, 0xd2, 0xff}}},\n    {{{  -105,   6052,     61}, 0, {   990,      0}, {0xbe, 0x97, 0x16, 0xff}}},\n    {{{  -105,   6093,     61}, 0, {   990,    224}, {0xa0, 0x27, 0x48, 0xff}}},\n    {{{  -105,   6052,    -60}, 0, {     0,      0}, {0xa6, 0xd4, 0xb3, 0xff}}},\n    {{{   106,   6052,    -60}, 0, {     0,      0}, {0x5f, 0xb4, 0xdf, 0xff}}},\n    {{{   106,   6052,     61}, 0, {   990,      0}, {0x4c, 0xb4, 0x42, 0xff}}},\n    {{{     0,   6052,   -122}, 0, {  -542,      0}, {0x13, 0xb4, 0x9d, 0xff}}},\n    {{{  -105,   6093,    -60}, 0, {   990,    224}, {0x91, 0x27, 0xd2, 0xff}}},\n    {{{     0,   6216,      0}, 0, {   480,    990}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{     0,   6093,   -122}, 0, {     0,    224}, {0xf1, 0x27, 0x89, 0xff}}},\n    {{{  -105,   6093,     61}, 0, {     0,    224}, {0xa0, 0x27, 0x48, 0xff}}},\n    {{{     0,   6093,    123}, 0, {   990,    224}, {0x0f, 0x28, 0x77, 0xff}}},\n    {{{     0,   6216,      0}, 0, {   478,    990}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{     0,   6052,    123}, 0, {   990,      0}, {0xe9, 0xd3, 0x74, 0xff}}},\n    {{{  -105,   6052,     61}, 0, {     0,      0}, {0xbe, 0x97, 0x16, 0xff}}},\n};\n\n// 0x070059A8 - 0x07005A88\nstatic const Vtx ttc_seg7_vertex_070059A8[] = {\n    {{{     0,   6011,    123}, 0, {     0,    990}, {0x13, 0x4c, 0x63, 0xff}}},\n    {{{     0,   5970,    123}, 0, {     0,    734}, {0xf1, 0xd8, 0x77, 0xff}}},\n    {{{   106,   5970,     61}, 0, {   990,    734}, {0x60, 0xd9, 0x48, 0xff}}},\n    {{{     0,   6093,   -122}, 0, {     0,    224}, {0xf1, 0x27, 0x89, 0xff}}},\n    {{{  -105,   6052,    -60}, 0, {   990,      0}, {0xa6, 0xd4, 0xb3, 0xff}}},\n    {{{  -105,   6093,    -60}, 0, {   990,    224}, {0x91, 0x27, 0xd2, 0xff}}},\n    {{{     0,   6052,   -122}, 0, {     0,      0}, {0x13, 0xb4, 0x9d, 0xff}}},\n    {{{   106,   6011,     61}, 0, {     0,    990}, {0x5f, 0x4c, 0x21, 0xff}}},\n    {{{   106,   5970,    -60}, 0, {   990,    734}, {0x6f, 0xd9, 0xd2, 0xff}}},\n    {{{   106,   6011,    -60}, 0, {   990,    990}, {0x5a, 0x2c, 0xb3, 0xff}}},\n    {{{   106,   5970,     61}, 0, {     0,    734}, {0x60, 0xd9, 0x48, 0xff}}},\n    {{{     0,   5847,      0}, 0, {   480,      0}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{   106,   6011,     61}, 0, {   990,    990}, {0x5f, 0x4c, 0x21, 0xff}}},\n    {{{     0,   5847,      0}, 0, {   478,      0}, {0x00, 0x82, 0x00, 0xff}}},\n};\n\n// 0x07005A88 - 0x07005B88\nstatic const Vtx ttc_seg7_vertex_07005A88[] = {\n    {{{   106,   6011,    -60}, 0, {     0,    990}, {0x5a, 0x2c, 0xb3, 0xff}}},\n    {{{   106,   5970,    -60}, 0, {     0,    734}, {0x6f, 0xd9, 0xd2, 0xff}}},\n    {{{     0,   5970,   -122}, 0, {   990,    734}, {0x0f, 0xd9, 0x89, 0xff}}},\n    {{{     0,   6011,   -122}, 0, {   990,    990}, {0xf3, 0x6a, 0xbc, 0xff}}},\n    {{{     0,   5847,      0}, 0, {   480,      0}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{     0,   6011,   -122}, 0, {     0,    990}, {0xf3, 0x6a, 0xbc, 0xff}}},\n    {{{   106,   6011,     61}, 0, {  1500,    990}, {0x5f, 0x4c, 0x21, 0xff}}},\n    {{{   106,   6011,    -60}, 0, {   990,    990}, {0x5a, 0x2c, 0xb3, 0xff}}},\n    {{{     0,   6011,    123}, 0, {   990,    990}, {0x13, 0x4c, 0x63, 0xff}}},\n    {{{  -105,   6011,     61}, 0, {     0,    990}, {0xb3, 0x4c, 0x41, 0xff}}},\n    {{{  -105,   6011,    -60}, 0, {  -542,    990}, {0x90, 0x2c, 0xda, 0xff}}},\n    {{{     0,   5847,      0}, 0, {   478,      0}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{  -105,   5970,     61}, 0, {   990,    734}, {0x91, 0xd9, 0x2e, 0xff}}},\n    {{{  -105,   5970,    -60}, 0, {     0,    734}, {0xa0, 0xd9, 0xb8, 0xff}}},\n    {{{  -105,   5970,     61}, 0, {     0,    734}, {0x91, 0xd9, 0x2e, 0xff}}},\n    {{{     0,   5970,    123}, 0, {   990,    734}, {0xf1, 0xd8, 0x77, 0xff}}},\n};\n\n// 0x07005B88 - 0x07005C78\nstatic const Vtx ttc_seg7_vertex_07005B88[] = {\n    {{{     0,   6011,   -122}, 0, {     0,    990}, {0xf3, 0x6a, 0xbc, 0xff}}},\n    {{{  -105,   5970,    -60}, 0, {   990,    734}, {0xa0, 0xd9, 0xb8, 0xff}}},\n    {{{  -105,   6011,    -60}, 0, {   990,    990}, {0x90, 0x2c, 0xda, 0xff}}},\n    {{{     0,   5970,   -122}, 0, {     0,    734}, {0x0f, 0xd9, 0x89, 0xff}}},\n    {{{     0,   5847,      0}, 0, {   480,      0}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{     0,  -2283,      0}, 0, {   480,    990}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{   106,  -2405,    -60}, 0, {     0,    224}, {0x60, 0x28, 0xb8, 0xff}}},\n    {{{     0,  -2405,   -122}, 0, {   990,    224}, {0xf1, 0x28, 0x89, 0xff}}},\n    {{{  -105,   6011,    -60}, 0, {     0,    990}, {0x90, 0x2c, 0xda, 0xff}}},\n    {{{  -105,   5970,    -60}, 0, {     0,    734}, {0xa0, 0xd9, 0xb8, 0xff}}},\n    {{{  -105,   5970,     61}, 0, {   990,    734}, {0x91, 0xd9, 0x2e, 0xff}}},\n    {{{  -105,   6011,     61}, 0, {   990,    990}, {0xb3, 0x4c, 0x41, 0xff}}},\n    {{{     0,  -2283,      0}, 0, {   478,    990}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{     0,  -2405,    123}, 0, {     0,    224}, {0x0f, 0x28, 0x77, 0xff}}},\n    {{{   106,  -2405,     61}, 0, {   990,    224}, {0x6f, 0x28, 0x2e, 0xff}}},\n};\n\n// 0x07005C78 - 0x07005D58\nstatic const Vtx ttc_seg7_vertex_07005C78[] = {\n    {{{     0,  -2283,      0}, 0, {   480,    990}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{   106,  -2405,     61}, 0, {     0,    224}, {0x6f, 0x28, 0x2e, 0xff}}},\n    {{{   106,  -2405,    -60}, 0, {   990,    224}, {0x60, 0x28, 0xb8, 0xff}}},\n    {{{  -105,  -2405,    -60}, 0, {   990,    224}, {0x91, 0x27, 0xd2, 0xff}}},\n    {{{     0,  -2405,   -122}, 0, {     0,    224}, {0xf1, 0x28, 0x89, 0xff}}},\n    {{{   106,  -2446,    -60}, 0, {   990,      0}, {0x5f, 0xb4, 0xdf, 0xff}}},\n    {{{   106,  -2446,     61}, 0, {     0,      0}, {0x4c, 0xb4, 0x42, 0xff}}},\n    {{{  -105,  -2405,     61}, 0, {     0,    224}, {0xa0, 0x27, 0x48, 0xff}}},\n    {{{     0,  -2405,    123}, 0, {   990,    224}, {0x0f, 0x28, 0x77, 0xff}}},\n    {{{     0,  -2283,      0}, 0, {   478,    990}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  -105,  -2405,    -60}, 0, {     0,    224}, {0x91, 0x27, 0xd2, 0xff}}},\n    {{{  -105,  -2405,     61}, 0, {   990,    224}, {0xa0, 0x27, 0x48, 0xff}}},\n    {{{  -105,  -2446,    -60}, 0, {     0,      0}, {0xa6, 0xd4, 0xb3, 0xff}}},\n    {{{  -105,  -2446,     61}, 0, {   990,      0}, {0xbe, 0x97, 0x16, 0xff}}},\n};\n\n// 0x07005D58 - 0x07005E48\nstatic const Vtx ttc_seg7_vertex_07005D58[] = {\n    {{{     0,  -2405,    123}, 0, {     0,    224}, {0x0f, 0x28, 0x77, 0xff}}},\n    {{{   106,  -2446,     61}, 0, {   990,      0}, {0x4c, 0xb4, 0x42, 0xff}}},\n    {{{   106,  -2405,     61}, 0, {   990,    224}, {0x6f, 0x28, 0x2e, 0xff}}},\n    {{{     0,  -2446,    123}, 0, {     0,      0}, {0xe9, 0xd3, 0x74, 0xff}}},\n    {{{   106,  -2405,    -60}, 0, {     0,    224}, {0x60, 0x28, 0xb8, 0xff}}},\n    {{{   106,  -2446,    -60}, 0, {     0,      0}, {0x5f, 0xb4, 0xdf, 0xff}}},\n    {{{     0,  -2446,   -122}, 0, {   990,      0}, {0x13, 0xb4, 0x9d, 0xff}}},\n    {{{     0,  -2405,   -122}, 0, {   990,    224}, {0xf1, 0x28, 0x89, 0xff}}},\n    {{{  -105,  -2446,     61}, 0, {   990,      0}, {0xbe, 0x97, 0x16, 0xff}}},\n    {{{     0,  -2446,    123}, 0, {  1502,      0}, {0xe9, 0xd3, 0x74, 0xff}}},\n    {{{     0,  -2446,   -122}, 0, {  -542,      0}, {0x13, 0xb4, 0x9d, 0xff}}},\n    {{{  -105,  -2446,    -60}, 0, {     0,      0}, {0xa6, 0xd4, 0xb3, 0xff}}},\n    {{{   106,  -2487,     61}, 0, {     0,    990}, {0x5f, 0x4c, 0x21, 0xff}}},\n    {{{   106,  -2528,     61}, 0, {     0,    734}, {0x60, 0xd9, 0x48, 0xff}}},\n    {{{   106,  -2528,    -60}, 0, {   990,    734}, {0x6f, 0xd9, 0xd2, 0xff}}},\n};\n\n// 0x07005E48 - 0x07005F28\nstatic const Vtx ttc_seg7_vertex_07005E48[] = {\n    {{{  -105,  -2405,     61}, 0, {     0,    224}, {0xa0, 0x27, 0x48, 0xff}}},\n    {{{     0,  -2446,    123}, 0, {   990,      0}, {0xe9, 0xd3, 0x74, 0xff}}},\n    {{{     0,  -2405,    123}, 0, {   990,    224}, {0x0f, 0x28, 0x77, 0xff}}},\n    {{{  -105,  -2446,     61}, 0, {     0,      0}, {0xbe, 0x97, 0x16, 0xff}}},\n    {{{     0,  -2405,   -122}, 0, {     0,    224}, {0xf1, 0x28, 0x89, 0xff}}},\n    {{{  -105,  -2446,    -60}, 0, {   990,      0}, {0xa6, 0xd4, 0xb3, 0xff}}},\n    {{{  -105,  -2405,    -60}, 0, {   990,    224}, {0x91, 0x27, 0xd2, 0xff}}},\n    {{{     0,  -2446,   -122}, 0, {     0,      0}, {0x13, 0xb4, 0x9d, 0xff}}},\n    {{{  -105,  -2405,    -60}, 0, {     0,    224}, {0x91, 0x27, 0xd2, 0xff}}},\n    {{{  -105,  -2446,     61}, 0, {   990,      0}, {0xbe, 0x97, 0x16, 0xff}}},\n    {{{  -105,  -2405,     61}, 0, {   990,    224}, {0xa0, 0x27, 0x48, 0xff}}},\n    {{{   106,  -2487,     61}, 0, {     0,    990}, {0x5f, 0x4c, 0x21, 0xff}}},\n    {{{   106,  -2528,    -60}, 0, {   990,    734}, {0x6f, 0xd9, 0xd2, 0xff}}},\n    {{{   106,  -2487,    -60}, 0, {   990,    990}, {0x5a, 0x2c, 0xb3, 0xff}}},\n};\n\n// 0x07005F28 - 0x07006018\nstatic const Vtx ttc_seg7_vertex_07005F28[] = {\n    {{{     0,  -2651,      0}, 0, {   480,      0}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{     0,  -2528,   -122}, 0, {   990,    734}, {0x0f, 0xd9, 0x89, 0xff}}},\n    {{{   106,  -2528,    -60}, 0, {     0,    734}, {0x6f, 0xd9, 0xd2, 0xff}}},\n    {{{   106,  -2528,    -60}, 0, {   990,    734}, {0x6f, 0xd9, 0xd2, 0xff}}},\n    {{{   106,  -2528,     61}, 0, {     0,    734}, {0x60, 0xd9, 0x48, 0xff}}},\n    {{{     0,  -2487,    123}, 0, {     0,    990}, {0x13, 0x4c, 0x63, 0xff}}},\n    {{{   106,  -2528,     61}, 0, {   990,    734}, {0x60, 0xd9, 0x48, 0xff}}},\n    {{{   106,  -2487,     61}, 0, {   990,    990}, {0x5f, 0x4c, 0x21, 0xff}}},\n    {{{     0,  -2528,    123}, 0, {     0,    734}, {0xf1, 0xd8, 0x77, 0xff}}},\n    {{{     0,  -2651,      0}, 0, {   478,      0}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{   106,  -2487,    -60}, 0, {     0,    990}, {0x5a, 0x2c, 0xb3, 0xff}}},\n    {{{     0,  -2487,   -122}, 0, {   990,    990}, {0xf3, 0x6a, 0xbc, 0xff}}},\n    {{{     0,  -2487,   -122}, 0, {     0,    990}, {0xf3, 0x6a, 0xbc, 0xff}}},\n    {{{     0,  -2528,   -122}, 0, {     0,    734}, {0x0f, 0xd9, 0x89, 0xff}}},\n    {{{  -105,  -2528,    -60}, 0, {   990,    734}, {0xa0, 0xd9, 0xb8, 0xff}}},\n};\n\n// 0x07006018 - 0x07006118\nstatic const Vtx ttc_seg7_vertex_07006018[] = {\n    {{{     0,  -2487,   -122}, 0, {     0,    990}, {0xf3, 0x6a, 0xbc, 0xff}}},\n    {{{   106,  -2487,     61}, 0, {  1500,    990}, {0x5f, 0x4c, 0x21, 0xff}}},\n    {{{   106,  -2487,    -60}, 0, {   990,    990}, {0x5a, 0x2c, 0xb3, 0xff}}},\n    {{{     0,  -2487,    123}, 0, {   990,    990}, {0x13, 0x4c, 0x63, 0xff}}},\n    {{{  -105,  -2487,     61}, 0, {     0,    990}, {0xb3, 0x4c, 0x41, 0xff}}},\n    {{{  -105,  -2487,    -60}, 0, {  -542,    990}, {0x90, 0x2c, 0xda, 0xff}}},\n    {{{  -105,  -2528,     61}, 0, {     0,    734}, {0x91, 0xd9, 0x2e, 0xff}}},\n    {{{     0,  -2528,    123}, 0, {   990,    734}, {0xf1, 0xd8, 0x77, 0xff}}},\n    {{{     0,  -2651,      0}, 0, {   478,      0}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{  -105,  -2528,    -60}, 0, {   990,    734}, {0xa0, 0xd9, 0xb8, 0xff}}},\n    {{{  -105,  -2487,    -60}, 0, {   990,    990}, {0x90, 0x2c, 0xda, 0xff}}},\n    {{{   862,   7475,   2081}, 0, {   990,      0}, {0x04, 0xaf, 0x9f, 0xff}}},\n    {{{   603,   8192,   1457}, 0, {   836,   2010}, {0xe7, 0x94, 0xc4, 0xff}}},\n    {{{  2081,   7475,    862}, 0, {     0,      0}, {0x9a, 0xb6, 0x07, 0xff}}},\n    {{{     0,  -2528,   -122}, 0, {     0,    734}, {0x0f, 0xd9, 0x89, 0xff}}},\n    {{{     0,  -2651,      0}, 0, {   480,      0}, {0x00, 0x82, 0x00, 0xff}}},\n};\n\n// 0x07006118 - 0x07006208\nstatic const Vtx ttc_seg7_vertex_07006118[] = {\n    {{{  -105,  -2487,    -60}, 0, {     0,    990}, {0x90, 0x2c, 0xda, 0xff}}},\n    {{{  -105,  -2528,    -60}, 0, {     0,    734}, {0xa0, 0xd9, 0xb8, 0xff}}},\n    {{{  -105,  -2528,     61}, 0, {   990,    734}, {0x91, 0xd9, 0x2e, 0xff}}},\n    {{{  -105,  -2487,     61}, 0, {   990,    990}, {0xb3, 0x4c, 0x41, 0xff}}},\n    {{{     0,  -2651,      0}, 0, {   478,      0}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{  2081,   7475,    862}, 0, {   990,      0}, {0x9a, 0xb6, 0x07, 0xff}}},\n    {{{  1457,   8192,    603}, 0, {   836,   2010}, {0xd3, 0x8b, 0xee, 0xff}}},\n    {{{  1457,   8192,   -602}, 0, {   122,   2010}, {0xc7, 0x90, 0x0f, 0xff}}},\n    {{{  2081,   7475,   -861}, 0, {     0,      0}, {0x93, 0xd1, 0x2a, 0xff}}},\n    {{{   862,   7475,  -2080}, 0, {   990,      0}, {0xd1, 0xd1, 0x6b, 0xff}}},\n    {{{  -602,   8192,  -1456}, 0, {   122,   2010}, {0x19, 0x94, 0x3c, 0xff}}},\n    {{{  -861,   7475,  -2080}, 0, {     0,      0}, {0x23, 0xda, 0x73, 0xff}}},\n    {{{   603,   8192,   1457}, 0, {   836,   2010}, {0xe7, 0x94, 0xc4, 0xff}}},\n    {{{  1457,   8192,    603}, 0, {   122,   2010}, {0xd3, 0x8b, 0xee, 0xff}}},\n    {{{  2081,   7475,    862}, 0, {     0,      0}, {0x9a, 0xb6, 0x07, 0xff}}},\n};\n\n// 0x07006208 - 0x070062F8\nstatic const Vtx ttc_seg7_vertex_07006208[] = {\n    {{{  2081,   7475,   -861}, 0, {   990,      0}, {0x93, 0xd1, 0x2a, 0xff}}},\n    {{{  1457,   8192,   -602}, 0, {   836,   2010}, {0xc7, 0x90, 0x0f, 0xff}}},\n    {{{   603,   8192,  -1456}, 0, {   122,   2010}, {0xe2, 0x90, 0x33, 0xff}}},\n    {{{   862,   7475,  -2080}, 0, {     0,      0}, {0xd1, 0xd1, 0x6b, 0xff}}},\n    {{{  -861,   7475,   2081}, 0, {   990,      0}, {0x2f, 0xd1, 0x95, 0xff}}},\n    {{{  -602,   8192,   1457}, 0, {   836,   2010}, {0x25, 0x99, 0xc1, 0xff}}},\n    {{{   603,   8192,   1457}, 0, {   122,   2010}, {0xe7, 0x94, 0xc4, 0xff}}},\n    {{{   862,   7475,   2081}, 0, {     0,      0}, {0x04, 0xaf, 0x9f, 0xff}}},\n    {{{   862,   7475,  -2080}, 0, {   990,      0}, {0xd1, 0xd1, 0x6b, 0xff}}},\n    {{{   603,   8192,  -1456}, 0, {   836,   2010}, {0xe2, 0x90, 0x33, 0xff}}},\n    {{{  -602,   8192,  -1456}, 0, {   122,   2010}, {0x19, 0x94, 0x3c, 0xff}}},\n    {{{ -2080,   7475,    862}, 0, {   990,      0}, {0x6d, 0xd1, 0xd6, 0xff}}},\n    {{{ -1456,   8192,    603}, 0, {   836,   2010}, {0x1f, 0x86, 0xf8, 0xff}}},\n    {{{  -602,   8192,   1457}, 0, {   122,   2010}, {0x25, 0x99, 0xc1, 0xff}}},\n    {{{  -861,   7475,   2081}, 0, {     0,      0}, {0x2f, 0xd1, 0x95, 0xff}}},\n};\n\n// 0x070062F8 - 0x07006378\nstatic const Vtx ttc_seg7_vertex_070062F8[] = {\n    {{{  -861,   7475,  -2080}, 0, {   990,      0}, {0x23, 0xda, 0x73, 0xff}}},\n    {{{  -602,   8192,  -1456}, 0, {   836,   2010}, {0x19, 0x94, 0x3c, 0xff}}},\n    {{{ -2080,   7475,   -861}, 0, {     0,      0}, {0x66, 0xca, 0x33, 0xff}}},\n    {{{ -1456,   8192,   -602}, 0, {   122,   2010}, {0x3c, 0x94, 0x19, 0xff}}},\n    {{{ -2080,   7475,   -861}, 0, {   990,      0}, {0x66, 0xca, 0x33, 0xff}}},\n    {{{ -1456,   8192,   -602}, 0, {   836,   2010}, {0x3c, 0x94, 0x19, 0xff}}},\n    {{{ -1456,   8192,    603}, 0, {   122,   2010}, {0x1f, 0x86, 0xf8, 0xff}}},\n    {{{ -2080,   7475,    862}, 0, {     0,      0}, {0x6d, 0xd1, 0xd6, 0xff}}},\n};\n\n// 0x07006378 - 0x07006468\nstatic const Vtx ttc_seg7_vertex_07006378[] = {\n    {{{ -2070,   2678,   -247}, 0, {     0,      0}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{ -2070,   2524,    162}, 0, {  2012,    990}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{ -2070,   2678,    162}, 0, {  2012,      0}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{ -1660,   2678,    162}, 0, {     0,      0}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{ -1660,   2524,    162}, 0, {     0,    990}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{ -1660,   2524,   -247}, 0, {  2012,    990}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{ -1660,   2678,   -247}, 0, {  2012,      0}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{ -2070,   2678,    162}, 0, {     0,      0}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{ -1660,   2524,    162}, 0, {  2012,    990}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{ -1660,   2678,    162}, 0, {  2012,      0}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{ -2070,   2524,    162}, 0, {     0,    990}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{ -1660,   2678,   -247}, 0, {     0,      0}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{ -2070,   2524,   -247}, 0, {  2012,    990}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{ -2070,   2678,   -247}, 0, {  2012,      0}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{ -1660,   2524,   -247}, 0, {     0,    990}, {0x67, 0xcd, 0xcd, 0xff}}},\n};\n\n// 0x07006468 - 0x07006558\nstatic const Vtx ttc_seg7_vertex_07006468[] = {\n    {{{  -649,    -19,   1569}, 0, {     0,      0}, {0x16, 0x70, 0xca, 0xff}}},\n    {{{ -1080,   -173,   1139}, 0, {  4056,    990}, {0x17, 0x9b, 0xb8, 0xff}}},\n    {{{ -1080,    -19,   1139}, 0, {  4056,      0}, {0xe8, 0x65, 0xb8, 0xff}}},\n    {{{ -2070,   2678,   -247}, 0, {     0,      0}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{ -2070,   2524,   -247}, 0, {     0,    990}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{ -2070,   2524,    162}, 0, {  2012,    990}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{  1074,    -19,    145}, 0, {     0,      0}, {0xa7, 0x49, 0xcc, 0xff}}},\n    {{{  1074,   -173,    145}, 0, {     0,    990}, {0x9d, 0xb7, 0xe6, 0xff}}},\n    {{{  -349,   -173,   1569}, 0, {  8144,    990}, {0xdb, 0xb0, 0xa5, 0xff}}},\n    {{{  -349,    -19,   1569}, 0, {  8144,      0}, {0xe7, 0x6c, 0xc3, 0xff}}},\n    {{{  -349,   -173,   1569}, 0, {     0,    990}, {0xdb, 0xb0, 0xa5, 0xff}}},\n    {{{  -649,   -173,   1569}, 0, {  2012,    990}, {0x10, 0x89, 0xd8, 0xff}}},\n    {{{  -649,    -19,   1569}, 0, {  2012,      0}, {0x16, 0x70, 0xca, 0xff}}},\n    {{{  -349,    -19,   1569}, 0, {     0,      0}, {0xe7, 0x6c, 0xc3, 0xff}}},\n    {{{  -649,   -173,   1569}, 0, {     0,    990}, {0x10, 0x89, 0xd8, 0xff}}},\n};\n\n// 0x07006558 - 0x07006648\nstatic const Vtx ttc_seg7_vertex_07006558[] = {\n    {{{ -1218,    -19,      0}, 0, {     0,      0}, {0x24, 0x33, 0x6e, 0xff}}},\n    {{{ -1218,   -173,      0}, 0, {     0,    990}, {0xdc, 0xcd, 0x6e, 0xff}}},\n    {{{  -144,   -173,  -1073}, 0, {  8144,    990}, {0x1b, 0x8d, 0x2e, 0xff}}},\n    {{{ -1080,    -19,   1139}, 0, {     0,      0}, {0xe8, 0x65, 0xb8, 0xff}}},\n    {{{ -1442,   -173,   1501}, 0, {  3034,    990}, {0xcf, 0x97, 0xcf, 0xff}}},\n    {{{ -1442,    -19,   1501}, 0, {  3034,      0}, {0xd8, 0x71, 0xd8, 0xff}}},\n    {{{ -1080,   -173,   1139}, 0, {     0,    990}, {0x17, 0x9b, 0xb8, 0xff}}},\n    {{{  1074,    -19,   -144}, 0, {     0,      0}, {0xba, 0x68, 0xee, 0xff}}},\n    {{{  1074,   -173,    145}, 0, {  2012,    990}, {0x9d, 0xb7, 0xe6, 0xff}}},\n    {{{  1074,    -19,    145}, 0, {  2012,      0}, {0xa7, 0x49, 0xcc, 0xff}}},\n    {{{  1074,   -173,   -144}, 0, {     0,    990}, {0xa7, 0xb7, 0xcc, 0xff}}},\n    {{{  -144,    -19,  -1073}, 0, {     0,      0}, {0x12, 0x68, 0x46, 0xff}}},\n    {{{  -144,   -173,  -1073}, 0, {     0,    990}, {0x1b, 0x8d, 0x2e, 0xff}}},\n    {{{   145,   -173,  -1073}, 0, {  2012,    990}, {0x1e, 0xd6, 0x73, 0xff}}},\n    {{{   145,    -19,  -1073}, 0, {  2012,      0}, {0x34, 0x49, 0x59, 0xff}}},\n};\n\n// 0x07006648 - 0x07006738\nstatic const Vtx ttc_seg7_vertex_07006648[] = {\n    {{{  -665,    -71,  -1030}, 0, {     0,      0}, {0x59, 0x54, 0xe3, 0xff}}},\n    {{{  -665,   -224,  -1030}, 0, {     0,    990}, {0x6d, 0xcd, 0x24, 0xff}}},\n    {{{  -955,   -224,  -1320}, 0, {  2012,    990}, {0x13, 0x92, 0xc6, 0xff}}},\n    {{{ -1218,    -19,      0}, 0, {     0,      0}, {0x24, 0x33, 0x6e, 0xff}}},\n    {{{  -144,   -173,  -1073}, 0, {  8144,    990}, {0x1b, 0x8d, 0x2e, 0xff}}},\n    {{{  -144,    -19,  -1073}, 0, {  8144,      0}, {0x12, 0x68, 0x46, 0xff}}},\n    {{{  -289,    -19,  -1218}, 0, { -4118,      0}, {0x93, 0x33, 0xdc, 0xff}}},\n    {{{ -1363,   -173,   -144}, 0, {  4056,    990}, {0xa7, 0xac, 0xe3, 0xff}}},\n    {{{ -1363,    -19,   -144}, 0, {  4056,      0}, {0xa7, 0x54, 0x1e, 0xff}}},\n    {{{  -289,   -173,  -1218}, 0, { -4118,    990}, {0x93, 0xcd, 0x24, 0xff}}},\n    {{{ -1006,    -19,  -1935}, 0, {     0,      0}, {0xb0, 0x38, 0x50, 0xff}}},\n    {{{  -289,   -173,  -1218}, 0, {  6100,    990}, {0x93, 0xcd, 0x24, 0xff}}},\n    {{{  -289,    -19,  -1218}, 0, {  6100,      0}, {0x93, 0x33, 0xdc, 0xff}}},\n    {{{ -1006,   -173,  -1935}, 0, {     0,    990}, {0xc1, 0xa7, 0x3f, 0xff}}},\n    {{{  -955,    -71,  -1320}, 0, {  2012,      0}, {0xe8, 0x65, 0xb9, 0xff}}},\n};\n\n// 0x07006738 - 0x07006838\nstatic const Vtx ttc_seg7_vertex_07006738[] = {\n    {{{ -1244,    -71,  -1030}, 0, {  2012,      0}, {0x17, 0x65, 0xb9, 0xff}}},\n    {{{ -1244,   -224,  -1030}, 0, {  2012,    990}, {0xe2, 0xac, 0xa7, 0xff}}},\n    {{{ -1339,   -224,  -1125}, 0, {  2680,    990}, {0x1d, 0xac, 0xa7, 0xff}}},\n    {{{  -955,    -71,  -1030}, 0, {     0,      0}, {0xe9, 0x65, 0x47, 0xff}}},\n    {{{  -955,   -224,  -1030}, 0, {     0,    990}, {0x1e, 0xac, 0x59, 0xff}}},\n    {{{  -810,   -224,   -885}, 0, {   990,    990}, {0xe3, 0xac, 0x59, 0xff}}},\n    {{{  -810,    -71,   -885}, 0, {   990,      0}, {0x24, 0x33, 0x6d, 0xff}}},\n    {{{ -1244,    -71,   -740}, 0, {     0,      0}, {0x18, 0x65, 0x47, 0xff}}},\n    {{{ -1244,   -224,   -740}, 0, {     0,    990}, {0xed, 0x92, 0x3a, 0xff}}},\n    {{{  -955,   -224,  -1030}, 0, {  2012,    990}, {0x1e, 0xac, 0x59, 0xff}}},\n    {{{  -955,    -71,  -1030}, 0, {  2012,      0}, {0xe9, 0x65, 0x47, 0xff}}},\n    {{{  -955,    -71,  -1320}, 0, {     0,      0}, {0xe8, 0x65, 0xb9, 0xff}}},\n    {{{  -955,   -224,  -1320}, 0, {     0,    990}, {0x13, 0x92, 0xc6, 0xff}}},\n    {{{ -1935,    -19,   -716}, 0, {     0,      0}, {0x1e, 0x54, 0x59, 0xff}}},\n    {{{ -1935,   -173,   -716}, 0, {     0,    990}, {0xdc, 0xcd, 0x6d, 0xff}}},\n    {{{ -1433,   -173,  -1219}, 0, {  4056,    990}, {0x59, 0xac, 0x1d, 0xff}}},\n};\n\n// 0x07006838 - 0x07006918\nstatic const Vtx ttc_seg7_vertex_07006838[] = {\n    {{{ -1244,    -71,  -1030}, 0, {  2012,      0}, {0x17, 0x65, 0xb9, 0xff}}},\n    {{{ -1339,   -224,  -1125}, 0, {  2680,    990}, {0x1d, 0xac, 0xa7, 0xff}}},\n    {{{ -1339,    -71,  -1125}, 0, {  2680,      0}, {0xdc, 0x33, 0x93, 0xff}}},\n    {{{ -1484,    -71,   -980}, 0, {     0,      0}, {0xa7, 0x54, 0x1d, 0xff}}},\n    {{{ -1244,   -224,   -740}, 0, {  2012,    990}, {0xed, 0x92, 0x3a, 0xff}}},\n    {{{ -1244,    -71,   -740}, 0, {  2012,      0}, {0x18, 0x65, 0x47, 0xff}}},\n    {{{ -1484,   -224,   -980}, 0, {     0,    990}, {0x93, 0xcd, 0xdc, 0xff}}},\n    {{{ -1433,    -19,  -1219}, 0, {     0,      0}, {0x6d, 0x33, 0xdc, 0xff}}},\n    {{{ -1433,   -173,  -1219}, 0, {     0,    990}, {0x59, 0xac, 0x1d, 0xff}}},\n    {{{ -1578,   -173,  -1363}, 0, {   990,    990}, {0x50, 0xc8, 0xb0, 0xff}}},\n    {{{ -1578,    -19,  -1363}, 0, {   990,      0}, {0x28, 0x71, 0xd8, 0xff}}},\n    {{{ -1935,    -19,   -716}, 0, {     0,      0}, {0x1e, 0x54, 0x59, 0xff}}},\n    {{{ -1433,   -173,  -1219}, 0, {  4056,    990}, {0x59, 0xac, 0x1d, 0xff}}},\n    {{{ -1433,    -19,  -1219}, 0, {  4056,      0}, {0x6d, 0x33, 0xdc, 0xff}}},\n};\n\n// 0x07006918 - 0x07006A08\nstatic const Vtx ttc_seg7_vertex_07006918[] = {\n    {{{ -1671,   1567,   -247}, 0, {     0,      0}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{ -1671,   1413,   -247}, 0, {     0,    990}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{ -2080,   1413,   -247}, 0, {  2012,    990}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{ -2080,    -19,   -861}, 0, {     0,      0}, {0xb0, 0x38, 0x50, 0xff}}},\n    {{{ -2080,   -173,   -861}, 0, {     0,    990}, {0xd8, 0x8f, 0x28, 0xff}}},\n    {{{ -1935,   -173,   -716}, 0, {   990,    990}, {0xdc, 0xcd, 0x6d, 0xff}}},\n    {{{ -1935,    -19,   -716}, 0, {   990,      0}, {0x1e, 0x54, 0x59, 0xff}}},\n    {{{ -1671,   1567,    162}, 0, {     0,      0}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{ -1671,   1413,    162}, 0, {     0,    990}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{ -1671,   1413,   -247}, 0, {  2012,    990}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{ -1671,   1567,   -247}, 0, {  2012,      0}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{ -2080,   1567,    162}, 0, {     0,      0}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{ -1671,   1413,    162}, 0, {  2012,    990}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{ -1671,   1567,    162}, 0, {  2012,      0}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{ -2080,   1413,    162}, 0, {     0,    990}, {0x99, 0xcd, 0x33, 0xff}}},\n};\n\n// 0x07006A08 - 0x07006AF8\nstatic const Vtx ttc_seg7_vertex_07006A08[] = {\n    {{{  1621,  -2088,   -236}, 0, {     0,      0}, {0xad, 0x5c, 0x15, 0xff}}},\n    {{{  1621,  -2242,    -58}, 0, {   990,    990}, {0xac, 0xac, 0x2a, 0xff}}},\n    {{{  1621,  -2088,    -58}, 0, {   990,      0}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{ -1671,   1567,   -247}, 0, {     0,      0}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{ -2080,   1413,   -247}, 0, {  2012,    990}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{ -2080,   1567,   -247}, 0, {  2012,      0}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{ -2080,   1567,   -247}, 0, {     0,      0}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{ -2080,   1413,   -247}, 0, {     0,    990}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{ -2080,   1413,    162}, 0, {  2012,    990}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{ -2080,   1567,    162}, 0, {  2012,      0}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  2081,  -2088,   -427}, 0, {     0,      0}, {0x31, 0x69, 0xcf, 0xff}}},\n    {{{  2081,  -2242,   -427}, 0, {     0,    990}, {0x1c, 0x88, 0xe4, 0xff}}},\n    {{{  1821,  -2242,   -687}, 0, {   990,    990}, {0x1d, 0xac, 0xa7, 0xff}}},\n    {{{  1821,  -2088,   -687}, 0, {   990,      0}, {0xe3, 0x54, 0xa7, 0xff}}},\n    {{{  1621,  -2242,   -236}, 0, {     0,    990}, {0xb6, 0xa4, 0x2b, 0xff}}},\n};\n\n// 0x07006AF8 - 0x07006BE8\nstatic const Vtx ttc_seg7_vertex_07006AF8[] = {\n    {{{  -539,  -1453,  -1876}, 0, {     0,      0}, {0x33, 0x33, 0x67, 0xff}}},\n    {{{   343,  -1607,  -1876}, 0, {  4056,    990}, {0xeb, 0xa4, 0x53, 0xff}}},\n    {{{   343,  -1453,  -1876}, 0, {  4056,      0}, {0xd5, 0x5c, 0x4a, 0xff}}},\n    {{{  1495,  -2088,   -361}, 0, {     0,      0}, {0x93, 0x33, 0x25, 0xff}}},\n    {{{  1621,  -2242,   -236}, 0, {   990,    990}, {0xb6, 0xa4, 0x2b, 0xff}}},\n    {{{  1621,  -2088,   -236}, 0, {   990,      0}, {0xad, 0x5c, 0x15, 0xff}}},\n    {{{  1495,  -2242,   -361}, 0, {     0,    990}, {0x93, 0xcd, 0xdc, 0xff}}},\n    {{{   850,  -1453,  -1658}, 0, {     0,      0}, {0x6d, 0x33, 0xdc, 0xff}}},\n    {{{   850,  -1607,  -1658}, 0, {     0,    990}, {0x6d, 0xcd, 0x24, 0xff}}},\n    {{{   428,  -1607,  -2080}, 0, {  3034,    990}, {0x31, 0x97, 0xcf, 0xff}}},\n    {{{   428,  -1453,  -2080}, 0, {  3034,      0}, {0x1c, 0x78, 0xe4, 0xff}}},\n    {{{   343,  -1453,  -1876}, 0, {     0,      0}, {0xd5, 0x5c, 0x4a, 0xff}}},\n    {{{   705,  -1607,  -1513}, 0, {  3034,    990}, {0xe2, 0xac, 0x59, 0xff}}},\n    {{{   705,  -1453,  -1513}, 0, {  3034,      0}, {0x1d, 0x54, 0x59, 0xff}}},\n    {{{   343,  -1607,  -1876}, 0, {     0,    990}, {0xeb, 0xa4, 0x53, 0xff}}},\n};\n\n// 0x07006BE8 - 0x07006CD8\nstatic const Vtx ttc_seg7_vertex_07006BE8[] = {\n    {{{ -1346,  -3491,   1102}, 0, {     0,      0}, {0x6d, 0x33, 0xdc, 0xff}}},\n    {{{ -1346,  -3670,   1102}, 0, {     0,    990}, {0x59, 0xac, 0x1d, 0xff}}},\n    {{{ -1833,  -3670,    615}, 0, {  4056,    990}, {0x00, 0xd6, 0x89, 0xff}}},\n    {{{  -539,  -1453,  -1876}, 0, {     0,      0}, {0x33, 0x33, 0x67, 0xff}}},\n    {{{  -539,  -1607,  -1876}, 0, {     0,    990}, {0x67, 0xcd, 0x33, 0xff}}},\n    {{{   343,  -1607,  -1876}, 0, {  4056,    990}, {0xeb, 0xa4, 0x53, 0xff}}},\n    {{{  -162,  -2692,   1682}, 0, {     0,      0}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{  -162,  -2846,   1682}, 0, {     0,    990}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{  -696,  -2846,   1682}, 0, {  3034,    990}, {0x15, 0xa4, 0xad, 0xff}}},\n    {{{  -696,  -2692,   1682}, 0, {  3034,      0}, {0x34, 0x49, 0xa7, 0xff}}},\n    {{{  -696,  -2692,   1682}, 0, {     0,      0}, {0x34, 0x49, 0xa7, 0xff}}},\n    {{{  -928,  -2846,   1449}, 0, {  2012,    990}, {0x1e, 0xac, 0xa7, 0xff}}},\n    {{{  -928,  -2692,   1449}, 0, {  2012,      0}, {0xe3, 0x54, 0xa7, 0xff}}},\n    {{{  -696,  -2846,   1682}, 0, {     0,    990}, {0x15, 0xa4, 0xad, 0xff}}},\n    {{{ -1833,  -3491,    615}, 0, {  4056,      0}, {0xe3, 0x55, 0xa7, 0xff}}},\n};\n\n// 0x07006CD8 - 0x07006DC8\nstatic const Vtx ttc_seg7_vertex_07006CD8[] = {\n    {{{ -1722,   1075,   1062}, 0, {  2012,    990}, {0xb3, 0xc9, 0x53, 0xff}}},\n    {{{ -1722,   1228,   1062}, 0, {  2012,      0}, {0x02, 0x37, 0x72, 0xff}}},\n    {{{ -1850,   1228,    684}, 0, {     0,      0}, {0xa9, 0x5a, 0x11, 0xff}}},\n    {{{ -1363,   1075,    145}, 0, {   990,    990}, {0x75, 0xd9, 0xe5, 0xff}}},\n    {{{ -1478,   1228,    378}, 0, {     0,      0}, {0x54, 0x5a, 0x1c, 0xff}}},\n    {{{ -1478,   1075,    378}, 0, {     0,    990}, {0x57, 0xa6, 0x11, 0xff}}},\n    {{{ -1363,   1228,    145}, 0, {   990,      0}, {0x67, 0x45, 0xe8, 0xff}}},\n    {{{ -1824,   1075,    285}, 0, {  2012,    990}, {0xac, 0xa6, 0xe4, 0xff}}},\n    {{{ -1824,   1228,    285}, 0, {  2012,      0}, {0xa9, 0x5a, 0xef, 0xff}}},\n    {{{ -1647,   1228,    -72}, 0, {     0,      0}, {0xea, 0x4e, 0x9f, 0xff}}},\n    {{{ -1647,   1075,    -72}, 0, {     0,    990}, {0xf1, 0x95, 0xbe, 0xff}}},\n    {{{ -1495,   1075,    637}, 0, {   990,    990}, {0x57, 0xa6, 0xef, 0xff}}},\n    {{{ -1411,   1228,    883}, 0, {     0,      0}, {0x61, 0x51, 0x08, 0xff}}},\n    {{{ -1411,   1075,    883}, 0, {     0,    990}, {0x4e, 0xaf, 0x39, 0xff}}},\n    {{{ -1495,   1228,    637}, 0, {   990,      0}, {0x58, 0x5a, 0xfb, 0xff}}},\n};\n\n// 0x07006DC8 - 0x07006EB8\nstatic const Vtx ttc_seg7_vertex_07006DC8[] = {\n    {{{  -539,  -1607,  -1758}, 0, {  6100,    990}, {0x76, 0xdb, 0x1a, 0xff}}},\n    {{{ -1758,  -1453,   -539}, 0, { -5140,    -12}, {0x1d, 0x54, 0x59, 0xff}}},\n    {{{ -1758,  -1607,   -539}, 0, { -5140,    990}, {0xe8, 0x00, 0x7c, 0xff}}},\n    {{{ -1722,   1075,   1062}, 0, {  2012,    990}, {0xb3, 0xc9, 0x53, 0xff}}},\n    {{{ -1850,   1228,    684}, 0, {     0,      0}, {0xa9, 0x5a, 0x11, 0xff}}},\n    {{{ -1850,   1075,    684}, 0, {     0,    990}, {0xa8, 0xa6, 0x05, 0xff}}},\n    {{{ -1478,   1075,    378}, 0, {   990,    990}, {0x57, 0xa6, 0x11, 0xff}}},\n    {{{ -1495,   1228,    637}, 0, {     0,      0}, {0x58, 0x5a, 0xfb, 0xff}}},\n    {{{ -1495,   1075,    637}, 0, {     0,    990}, {0x57, 0xa6, 0xef, 0xff}}},\n    {{{ -1478,   1228,    378}, 0, {   990,      0}, {0x54, 0x5a, 0x1c, 0xff}}},\n    {{{ -1850,   1075,    684}, 0, {  2012,    990}, {0xa8, 0xa6, 0x05, 0xff}}},\n    {{{ -1824,   1228,    285}, 0, {     0,      0}, {0xa9, 0x5a, 0xef, 0xff}}},\n    {{{ -1824,   1075,    285}, 0, {     0,    990}, {0xac, 0xa6, 0xe4, 0xff}}},\n    {{{ -1850,   1228,    684}, 0, {  2012,      0}, {0xa9, 0x5a, 0x11, 0xff}}},\n    {{{  -539,  -1453,  -1758}, 0, {  6100,    -12}, {0x63, 0x49, 0x1a, 0xff}}},\n};\n\n// 0x07006EB8 - 0x07006EF8\nstatic const Vtx ttc_seg7_vertex_07006EB8[] = {\n    {{{ -1758,  -1607,   -539}, 0, {  3000,    990}, {0xe8, 0x00, 0x7c, 0xff}}},\n    {{{ -1758,  -1453,   -539}, 0, {  3000,      0}, {0x1d, 0x54, 0x59, 0xff}}},\n    {{{ -2080,  -1453,   -861}, 0, {     0,      0}, {0x58, 0x26, 0x52, 0xff}}},\n    {{{ -2080,  -1607,   -861}, 0, {     0,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07006EF8 - 0x07006FE8\nstatic const Vtx ttc_seg7_vertex_07006EF8[] = {\n    {{{ -1090,      0,   1583}, 0, { -3990,      0}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -1090,      0,   1563}, 0, { -3862,    990}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -1090,   -839,   1563}, 0, {  6596,    990}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{ -1070,      0,   1563}, 0, { -3990,      0}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{ -1070,   -839,   1583}, 0, {  6596,    990}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{ -1070,   -839,   1563}, 0, {  6468,      0}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{ -1070,      0,   1583}, 0, { -3862,    990}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -1090,      0,   1563}, 0, { -3990,      0}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -1070,   -839,   1563}, 0, {  6596,    990}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{ -1090,   -839,   1563}, 0, {  6468,      0}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{ -1070,      0,   1563}, 0, { -3862,    990}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{ -1070,      0,   1583}, 0, { -3990,      0}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{ -1090,      0,   1583}, 0, { -3862,    990}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -1090,   -839,   1583}, 0, {  6596,    990}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{ -1070,   -839,   1583}, 0, {  6468,      0}, {0x71, 0x00, 0x38, 0xff}}},\n};\n\n// 0x07006FE8 - 0x070070D8\nstatic const Vtx ttc_seg7_vertex_07006FE8[] = {\n    {{{  2866,   5284,   2081}, 0, {  2430,    990}, {0xc4, 0x6f, 0x00, 0xff}}},\n    {{{  2081,   5919,    862}, 0, {  -712,    -66}, {0x92, 0x23, 0x34, 0xff}}},\n    {{{  1864,   5284,   1079}, 0, {  -712,    990}, {0xb8, 0x54, 0xc3, 0xff}}},\n    {{{ -1090,      0,   1583}, 0, { -3990,      0}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -1090,   -839,   1563}, 0, {  6596,    990}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{ -1090,   -839,   1583}, 0, {  6468,      0}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  1079,   5284,   1864}, 0, {  2012,    990}, {0xc5, 0x51, 0xb3, 0xff}}},\n    {{{  2081,   5919,   3301}, 0, { -1810,    -66}, {0xef, 0x2b, 0x8b, 0xff}}},\n    {{{  2081,   5284,   2866}, 0, { -1128,    990}, {0x00, 0x78, 0xd9, 0xff}}},\n    {{{   862,   5919,   2081}, 0, {  2012,    -66}, {0x37, 0x11, 0x8f, 0xff}}},\n    {{{  2081,   5284,   2866}, 0, {  2430,    990}, {0x00, 0x78, 0xd9, 0xff}}},\n    {{{  2081,   5919,   3301}, 0, {  3110,    -66}, {0xef, 0x2b, 0x8b, 0xff}}},\n    {{{  2866,   5284,   2081}, 0, {     0,    990}, {0xc4, 0x6f, 0x00, 0xff}}},\n    {{{  3301,   5919,   2081}, 0, {  -712,    -66}, {0x88, 0x1e, 0x19, 0xff}}},\n    {{{  3301,   5919,   2081}, 0, {  3110,    -66}, {0x88, 0x1e, 0x19, 0xff}}},\n};\n\n// 0x070070D8 - 0x070071D8\nstatic const Vtx ttc_seg7_vertex_070070D8[] = {\n    {{{  -861,  -4822,  -2080}, 0, {  6456,    990}, {0x22, 0x9f, 0x49, 0xff}}},\n    {{{  -539,  -4822,  -1758}, 0, {  6456,   -626}, {0x77, 0xd6, 0x00, 0xff}}},\n    {{{  -781,  -4822,  -1516}, 0, {  4368,   -626}, {0xe2, 0xac, 0x59, 0xff}}},\n    {{{ -1351,  -2037,   -946}, 0, { -2074,  -2242}, {0x6d, 0xc1, 0x0e, 0xff}}},\n    {{{ -1161,  -2139,  -1571}, 0, {  3672,    990}, {0x0e, 0xc1, 0x6d, 0xff}}},\n    {{{  -944,  -2037,  -1353}, 0, {  3672,  -2242}, {0x46, 0xeb, 0x67, 0xff}}},\n    {{{ -1568,  -2139,  -1163}, 0, { -2074,    990}, {0x6d, 0xc1, 0x0e, 0xff}}},\n    {{{  -944,  -2446,  -1353}, 0, {     0,    990}, {0x15, 0x3d, 0x6c, 0xff}}},\n    {{{ -1161,  -2139,  -1571}, 0, {  2888,  -2088}, {0x0e, 0xc1, 0x6d, 0xff}}},\n    {{{ -1161,  -2446,  -1571}, 0, {     0,  -2088}, {0x00, 0x49, 0x67, 0xff}}},\n    {{{  -944,  -2037,  -1353}, 0, {  3862,    990}, {0x46, 0xeb, 0x67, 0xff}}},\n    {{{ -1351,  -2446,   -946}, 0, {     0,  -2078}, {0x6c, 0x26, 0x36, 0xff}}},\n    {{{ -1568,  -2446,  -1163}, 0, {     0,    990}, {0x67, 0x49, 0x00, 0xff}}},\n    {{{ -1351,  -2037,   -946}, 0, {  3848,  -2078}, {0x6d, 0xc1, 0x0e, 0xff}}},\n    {{{ -1568,  -2139,  -1163}, 0, {  2878,    990}, {0x6d, 0xc1, 0x0e, 0xff}}},\n    {{{  -898,  -4822,  -1634}, 0, {  4368,    -36}, {0x1d, 0xac, 0x59, 0xff}}},\n};\n\n// 0x070071D8 - 0x07007218\nstatic const Vtx ttc_seg7_vertex_070071D8[] = {\n    {{{  -861,  -4822,  -2080}, 0, {  6456,    990}, {0x22, 0x9f, 0x49, 0xff}}},\n    {{{  -898,  -4822,  -1634}, 0, {  4368,    -36}, {0x1d, 0xac, 0x59, 0xff}}},\n    {{{ -1876,  -4822,   -656}, 0, {     0,    -36}, {0x00, 0x99, 0x49, 0xff}}},\n    {{{ -2080,  -4822,   -861}, 0, {     0,    990}, {0x59, 0xe3, 0x54, 0xff}}},\n};\n\n// 0x07007218 - 0x07007318\nstatic const Vtx ttc_seg7_vertex_07007218[] = {\n    {{{  1024,   5089,    424}, 0, {     0,    223}, {0xb8, 0x67, 0xf3, 0xff}}},\n    {{{  1536,   5396,   -423}, 0, {  2012,      0}, {0x59, 0x5a, 0xfe, 0xff}}},\n    {{{  1024,   5396,   -423}, 0, {     0,      0}, {0x96, 0x3c, 0xdf, 0xff}}},\n    {{{  1536,   5089,    424}, 0, {  2012,    223}, {0x67, 0x44, 0x19, 0xff}}},\n    {{{  1386,   5089,    786}, 0, {  2012,    223}, {0x40, 0x5a, 0x3d, 0xff}}},\n    {{{  1536,   5089,    424}, 0, {  2012,      0}, {0x67, 0x44, 0x19, 0xff}}},\n    {{{  1536,   5396,   -423}, 0, {  2012,    223}, {0x59, 0x5a, 0xfe, 0xff}}},\n    {{{  1386,   5396,   -785}, 0, {  2012,      0}, {0x12, 0x54, 0xa4, 0xff}}},\n    {{{  1024,   5396,   -423}, 0, {     0,    223}, {0x96, 0x3c, 0xdf, 0xff}}},\n    {{{   424,   4782,   1024}, 0, {     0,    223}, {0xd7, 0x67, 0xc4, 0xff}}},\n    {{{  1386,   5089,    786}, 0, {  2012,      0}, {0x40, 0x5a, 0x3d, 0xff}}},\n    {{{  1024,   5089,    424}, 0, {     0,      0}, {0xb8, 0x67, 0xf3, 0xff}}},\n    {{{   786,   4782,   1386}, 0, {  2012,    223}, {0x37, 0x44, 0x5b, 0xff}}},\n    {{{   786,   6011,  -1385}, 0, {  2012,    223}, {0x71, 0x34, 0xea, 0xff}}},\n    {{{   424,   6011,  -1535}, 0, {  2012,      0}, {0x0d, 0x47, 0x98, 0xff}}},\n    {{{   424,   6011,  -1023}, 0, {     0,    223}, {0x19, 0x6c, 0x3d, 0xff}}},\n};\n\n// 0x07007318 - 0x070073F8\nstatic const Vtx ttc_seg7_vertex_07007318[] = {\n    {{{   424,   4782,   1536}, 0, {  2012,    223}, {0x02, 0x5a, 0x59, 0xff}}},\n    {{{   786,   4782,   1386}, 0, {  2012,      0}, {0x37, 0x44, 0x5b, 0xff}}},\n    {{{   424,   4782,   1024}, 0, {     0,    223}, {0xd7, 0x67, 0xc4, 0xff}}},\n    {{{   424,   6011,  -1023}, 0, {     0,    223}, {0x19, 0x6c, 0x3d, 0xff}}},\n    {{{  -423,   6011,  -1535}, 0, {  2012,      0}, {0xe9, 0x5a, 0xab, 0xff}}},\n    {{{  -423,   6011,  -1023}, 0, {     0,      0}, {0x12, 0x68, 0x46, 0xff}}},\n    {{{   424,   6011,  -1535}, 0, {  2012,    223}, {0x0d, 0x47, 0x98, 0xff}}},\n    {{{   364,   3860,   -175}, 0, {     0,    223}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{   876,   3860,   -175}, 0, {  2012,    223}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{   876,   3860,  -1023}, 0, {  2012,      0}, {0x55, 0x5a, 0xe9, 0xff}}},\n    {{{   364,   3860,  -1023}, 0, {     0,      0}, {0xd2, 0x73, 0x17, 0xff}}},\n    {{{  -423,   6011,  -1023}, 0, {     0,    223}, {0x12, 0x68, 0x46, 0xff}}},\n    {{{  -785,   6011,  -1385}, 0, {  2012,    223}, {0xc0, 0x47, 0xad, 0xff}}},\n    {{{ -1385,   6011,   -785}, 0, {  2012,      0}, {0xb7, 0x67, 0x00, 0xff}}},\n};\n\n// 0x070073F8 - 0x070074E8\nstatic const Vtx ttc_seg7_vertex_070073F8[] = {\n    {{{  -423,   4475,   1024}, 0, {     0,    223}, {0xc3, 0x55, 0xb9, 0xff}}},\n    {{{   424,   4782,   1536}, 0, {  2012,      0}, {0x02, 0x5a, 0x59, 0xff}}},\n    {{{   424,   4782,   1024}, 0, {     0,      0}, {0xd7, 0x67, 0xc4, 0xff}}},\n    {{{  -423,   4475,   1536}, 0, {  2012,    223}, {0xe7, 0x44, 0x67, 0xff}}},\n    {{{   876,   3860,  -1023}, 0, {  2012,    223}, {0x55, 0x5a, 0xe9, 0xff}}},\n    {{{   726,   3860,  -1385}, 0, {  2012,     96}, {0x3c, 0x5d, 0xc4, 0xff}}},\n    {{{   364,   3860,  -1023}, 0, {     0,    223}, {0xd2, 0x73, 0x17, 0xff}}},\n    {{{   364,   3860,  -1535}, 0, {  2012,      0}, {0x16, 0x39, 0x92, 0xff}}},\n    {{{  -423,   6011,  -1535}, 0, {  2012,    223}, {0xe9, 0x5a, 0xab, 0xff}}},\n    {{{  -785,   6011,  -1385}, 0, {  2012,      0}, {0xc0, 0x47, 0xad, 0xff}}},\n    {{{  -423,   6011,  -1023}, 0, {     0,    223}, {0x12, 0x68, 0x46, 0xff}}},\n    {{{ -1385,   6011,   -785}, 0, {  2012,      0}, {0xb7, 0x67, 0x00, 0xff}}},\n    {{{ -1023,   6011,   -423}, 0, {     0,      0}, {0x00, 0x2a, 0x77, 0xff}}},\n    {{{  -785,   4475,   1386}, 0, {  2012,    223}, {0xa8, 0x3c, 0x44, 0xff}}},\n    {{{  -423,   4475,   1536}, 0, {  2012,      0}, {0xe7, 0x44, 0x67, 0xff}}},\n};\n\n// 0x070074E8 - 0x070075E8\nstatic const Vtx ttc_seg7_vertex_070074E8[] = {\n    {{{   364,   3860,  -1023}, 0, {     0,    223}, {0xd2, 0x73, 0x17, 0xff}}},\n    {{{   364,   3860,  -1535}, 0, {  2012,    223}, {0x16, 0x39, 0x92, 0xff}}},\n    {{{  -423,   3860,  -1535}, 0, {  2012,      0}, {0xe9, 0x5a, 0xab, 0xff}}},\n    {{{  -423,   3860,  -1023}, 0, {     0,      0}, {0x12, 0x68, 0x46, 0xff}}},\n    {{{  -423,   3860,  -1535}, 0, {  2012,    223}, {0xe9, 0x5a, 0xab, 0xff}}},\n    {{{  -785,   3860,  -1385}, 0, {  2012,      0}, {0xc0, 0x47, 0xad, 0xff}}},\n    {{{  -423,   3860,  -1023}, 0, {     0,    223}, {0x12, 0x68, 0x46, 0xff}}},\n    {{{  -785,   3860,  -1385}, 0, {  2012,    223}, {0xc0, 0x47, 0xad, 0xff}}},\n    {{{ -1385,   3860,   -785}, 0, {  2012,      0}, {0xb3, 0x5a, 0xd4, 0xff}}},\n    {{{ -1023,   3860,   -423}, 0, {     0,      0}, {0x42, 0x6a, 0x14, 0xff}}},\n    {{{ -1535,   4168,    424}, 0, {  2012,    223}, {0xa7, 0x5a, 0x02, 0xff}}},\n    {{{ -1385,   4168,    786}, 0, {  2012,      0}, {0xee, 0x54, 0x5c, 0xff}}},\n    {{{ -1023,   4168,    424}, 0, {     0,    223}, {0x6a, 0x3c, 0x21, 0xff}}},\n    {{{ -1023,   3860,   -423}, 0, {     0,    223}, {0x42, 0x6a, 0x14, 0xff}}},\n    {{{ -1535,   3860,   -423}, 0, {  2012,    223}, {0x99, 0x44, 0xe7, 0xff}}},\n    {{{ -1535,   4168,    424}, 0, {  2012,      0}, {0xa7, 0x5a, 0x02, 0xff}}},\n};\n\n// 0x070075E8 - 0x070076C8\nstatic const Vtx ttc_seg7_vertex_070075E8[] = {\n    {{{ -1023,   3860,   -423}, 0, {     0,    223}, {0x42, 0x6a, 0x14, 0xff}}},\n    {{{ -1535,   4168,    424}, 0, {  2012,      0}, {0xa7, 0x5a, 0x02, 0xff}}},\n    {{{ -1023,   4168,    424}, 0, {     0,      0}, {0x6a, 0x3c, 0x21, 0xff}}},\n    {{{ -1385,   3860,   -785}, 0, {  2012,    223}, {0xb3, 0x5a, 0xd4, 0xff}}},\n    {{{ -1535,   3860,   -423}, 0, {  2012,      0}, {0x99, 0x44, 0xe7, 0xff}}},\n    {{{  1024,   5243,   -423}, 0, {     0,      0}, {0xc5, 0x9c, 0xd0, 0xff}}},\n    {{{  1536,   5243,   -423}, 0, {  2012,      0}, {0x67, 0xbc, 0xe7, 0xff}}},\n    {{{  1536,   4936,    424}, 0, {  2012,    223}, {0x59, 0xa6, 0x02, 0xff}}},\n    {{{  1024,   4936,    424}, 0, {     0,    990}, {0xc4, 0x99, 0xd7, 0xff}}},\n    {{{   424,   5857,  -1023}, 0, {     0,    223}, {0x2a, 0xc4, 0x67, 0xff}}},\n    {{{   424,   5857,  -1535}, 0, {  2012,      0}, {0x17, 0xa6, 0xab, 0xff}}},\n    {{{   786,   5857,  -1385}, 0, {  2012,    223}, {0x5c, 0xac, 0xee, 0xff}}},\n    {{{  1536,   4936,    424}, 0, {  2012,      0}, {0x59, 0xa6, 0x02, 0xff}}},\n    {{{  1386,   4936,    786}, 0, {  2012,    223}, {0x5b, 0xbc, 0x37, 0xff}}},\n};\n\n// 0x070076C8 - 0x070077C8\nstatic const Vtx ttc_seg7_vertex_070076C8[] = {\n    {{{  1024,   5243,   -423}, 0, {     0,    990}, {0xc5, 0x9c, 0xd0, 0xff}}},\n    {{{  1386,   5243,   -785}, 0, {  2012,      0}, {0x16, 0xcc, 0x8f, 0xff}}},\n    {{{  1536,   5243,   -423}, 0, {  2012,    223}, {0x67, 0xbc, 0xe7, 0xff}}},\n    {{{  1024,   4936,    424}, 0, {     0,      0}, {0xc4, 0x99, 0xd7, 0xff}}},\n    {{{   786,   4628,   1386}, 0, {  2012,    223}, {0x3d, 0xa6, 0x40, 0xff}}},\n    {{{   424,   4628,   1024}, 0, {     0,    990}, {0xf3, 0x99, 0xb8, 0xff}}},\n    {{{  1386,   4936,    786}, 0, {  2012,      0}, {0x5b, 0xbc, 0x37, 0xff}}},\n    {{{   364,   3707,  -1023}, 0, {     0,      0}, {0xe9, 0x8d, 0x2e, 0xff}}},\n    {{{   876,   3707,   -175}, 0, {  2012,    223}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{   364,   3707,   -175}, 0, {     0,    223}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{   786,   4628,   1386}, 0, {  2012,      0}, {0x3d, 0xa6, 0x40, 0xff}}},\n    {{{   424,   4628,   1536}, 0, {  2012,    223}, {0x19, 0xbc, 0x67, 0xff}}},\n    {{{  -423,   5857,  -1023}, 0, {     0,      0}, {0x24, 0x98, 0x3e, 0xff}}},\n    {{{   424,   5857,  -1535}, 0, {  2012,    223}, {0x17, 0xa6, 0xab, 0xff}}},\n    {{{   424,   5857,  -1023}, 0, {     0,    223}, {0x2a, 0xc4, 0x67, 0xff}}},\n    {{{  -423,   5857,  -1535}, 0, {  2012,      0}, {0xf3, 0xb9, 0x98, 0xff}}},\n};\n\n// 0x070077C8 - 0x070078C8\nstatic const Vtx ttc_seg7_vertex_070077C8[] = {\n    {{{   424,   4628,   1024}, 0, {     0,      0}, {0xf3, 0x99, 0xb8, 0xff}}},\n    {{{   424,   4628,   1536}, 0, {  2012,      0}, {0x19, 0xbc, 0x67, 0xff}}},\n    {{{  -423,   4321,   1536}, 0, {  2012,    223}, {0xfe, 0xa6, 0x59, 0xff}}},\n    {{{  -423,   4321,   1024}, 0, {     0,    223}, {0xf3, 0xb7, 0x9a, 0xff}}},\n    {{{   364,   3707,  -1023}, 0, {     0,      0}, {0xe9, 0x8d, 0x2e, 0xff}}},\n    {{{   876,   3707,  -1023}, 0, {  2012,      0}, {0x68, 0xb9, 0xf3, 0xff}}},\n    {{{   876,   3707,   -175}, 0, {  2012,    223}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{   364,   3707,  -1023}, 0, {     0,    990}, {0xe9, 0x8d, 0x2e, 0xff}}},\n    {{{   364,   3707,  -1535}, 0, {  2012,      0}, {0x0d, 0x96, 0xbc, 0xff}}},\n    {{{   726,   3707,  -1385}, 0, {  2012,     96}, {0x4e, 0xc4, 0xb2, 0xff}}},\n    {{{   876,   3707,  -1023}, 0, {  2012,    223}, {0x68, 0xb9, 0xf3, 0xff}}},\n    {{{  -423,   5857,  -1023}, 0, {     0,    990}, {0x24, 0x98, 0x3e, 0xff}}},\n    {{{  -785,   5857,  -1385}, 0, {  2012,      0}, {0xd4, 0xa6, 0xb3, 0xff}}},\n    {{{  -423,   5857,  -1535}, 0, {  2012,    223}, {0xf3, 0xb9, 0x98, 0xff}}},\n    {{{ -1023,   5857,   -423}, 0, {     0,      0}, {0x00, 0x99, 0x49, 0xff}}},\n    {{{  -785,   5857,  -1385}, 0, {  2012,    223}, {0xd4, 0xa6, 0xb3, 0xff}}},\n};\n\n// 0x070078C8 - 0x070079C8\nstatic const Vtx ttc_seg7_vertex_070078C8[] = {\n    {{{ -1023,   5857,   -423}, 0, {     0,      0}, {0x00, 0x99, 0x49, 0xff}}},\n    {{{ -1385,   5857,   -785}, 0, {  2012,      0}, {0x89, 0xd6, 0x00, 0xff}}},\n    {{{  -785,   5857,  -1385}, 0, {  2012,    223}, {0xd4, 0xa6, 0xb3, 0xff}}},\n    {{{  -423,   4321,   1024}, 0, {     0,    223}, {0xf3, 0xb7, 0x9a, 0xff}}},\n    {{{  -423,   4321,   1536}, 0, {  2012,      0}, {0xfe, 0xa6, 0x59, 0xff}}},\n    {{{  -785,   4321,   1386}, 0, {  2012,    223}, {0x95, 0xc4, 0xe3, 0xff}}},\n    {{{  -423,   3707,  -1023}, 0, {     0,      0}, {0x24, 0x98, 0x3e, 0xff}}},\n    {{{  -423,   3707,  -1535}, 0, {  2012,      0}, {0xf3, 0xb9, 0x98, 0xff}}},\n    {{{   364,   3707,  -1535}, 0, {  2012,    223}, {0x0d, 0x96, 0xbc, 0xff}}},\n    {{{   364,   3707,  -1023}, 0, {     0,    990}, {0xe9, 0x8d, 0x2e, 0xff}}},\n    {{{  -423,   3707,  -1023}, 0, {     0,    990}, {0x24, 0x98, 0x3e, 0xff}}},\n    {{{  -785,   3707,  -1385}, 0, {  2012,      0}, {0xd4, 0xa6, 0xb3, 0xff}}},\n    {{{  -423,   3707,  -1535}, 0, {  2012,    223}, {0xf3, 0xb9, 0x98, 0xff}}},\n    {{{ -1023,   3707,   -423}, 0, {     0,      0}, {0x46, 0x9a, 0x1b, 0xff}}},\n    {{{ -1385,   3707,   -785}, 0, {  2012,      0}, {0xad, 0xb9, 0xc0, 0xff}}},\n    {{{  -785,   3707,  -1385}, 0, {  2012,    223}, {0xd4, 0xa6, 0xb3, 0xff}}},\n};\n\n// 0x070079C8 - 0x07007AC8\nstatic const Vtx ttc_seg7_vertex_070079C8[] = {\n    {{{ -1023,   4014,    424}, 0, {     0,    990}, {0x3b, 0x9c, 0x30, 0xff}}},\n    {{{ -1385,   4014,    786}, 0, {  2012,      0}, {0xea, 0xcc, 0x71, 0xff}}},\n    {{{ -1535,   4014,    424}, 0, {  2012,    223}, {0x99, 0xbc, 0x19, 0xff}}},\n    {{{  1536,   3072,   1407}, 0, {  2012,      0}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{   760,   3072,   1672}, 0, {     0,    223}, {0xe7, 0x6c, 0xc3, 0xff}}},\n    {{{   862,   3072,   2081}, 0, {  2012,    223}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,   4014,    424}, 0, {     0,      0}, {0x3b, 0x9c, 0x30, 0xff}}},\n    {{{ -1535,   4014,    424}, 0, {  2012,      0}, {0x99, 0xbc, 0x19, 0xff}}},\n    {{{ -1535,   3707,   -423}, 0, {  2012,    223}, {0xa7, 0xa6, 0xfe, 0xff}}},\n    {{{ -1023,   3707,   -423}, 0, {     0,    990}, {0x46, 0x9a, 0x1b, 0xff}}},\n    {{{ -1535,   3707,   -423}, 0, {  2012,      0}, {0xa7, 0xa6, 0xfe, 0xff}}},\n    {{{ -1385,   3707,   -785}, 0, {  2012,    223}, {0xad, 0xb9, 0xc0, 0xff}}},\n    {{{  1024,   3072,   1407}, 0, {     0,      0}, {0xc4, 0x2a, 0x99, 0xff}}},\n    {{{  -547,   3072,   1672}, 0, {     0,    223}, {0x25, 0x50, 0xa5, 0xff}}},\n    {{{  -861,   3072,   2081}, 0, {  2012,    223}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   862,   3072,   2081}, 0, {  2012,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07007AC8 - 0x07007BA8\nstatic const Vtx ttc_seg7_vertex_07007AC8[] = {\n    {{{   760,   2919,   1672}, 0, {     0,    223}, {0xdb, 0xb0, 0xa5, 0xff}}},\n    {{{  1024,   2919,   1407}, 0, {     0,      0}, {0xe2, 0xd6, 0x8d, 0xff}}},\n    {{{  1536,   2919,   1407}, 0, {  2012,      0}, {0x00, 0x8f, 0xc8, 0xff}}},\n    {{{   862,   2919,   2081}, 0, {  2012,    223}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   760,   3072,   1672}, 0, {     0,      0}, {0xe7, 0x6c, 0xc3, 0xff}}},\n    {{{  -547,   3072,   1672}, 0, {     0,    223}, {0x25, 0x50, 0xa5, 0xff}}},\n    {{{   862,   3072,   2081}, 0, {  2012,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   862,   2919,   2081}, 0, {  2012,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -547,   2919,   1672}, 0, {     0,    223}, {0x19, 0x94, 0xc3, 0xff}}},\n    {{{   760,   2919,   1672}, 0, {     0,      0}, {0xdb, 0xb0, 0xa5, 0xff}}},\n    {{{  -861,   2919,   2081}, 0, {  2012,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2080,   2919,    862}, 0, {  2012,    223}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1568,   2919,    650}, 0, {     0,    223}, {0x4a, 0xa4, 0xd5, 0xff}}},\n    {{{  -861,   2919,   2081}, 0, {  2012,    223}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07007BA8 - 0x07007C88\nstatic const Vtx ttc_seg7_vertex_07007BA8[] = {\n    {{{  -547,   3072,   1672}, 0, {     0,      0}, {0x25, 0x50, 0xa5, 0xff}}},\n    {{{ -1568,   3072,    650}, 0, {     0,    223}, {0x53, 0x5c, 0xeb, 0xff}}},\n    {{{  -861,   3072,   2081}, 0, {  2012,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -861,   2919,   2081}, 0, {  2012,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1568,   2919,    650}, 0, {     0,    223}, {0x4a, 0xa4, 0xd5, 0xff}}},\n    {{{  -547,   2919,   1672}, 0, {     0,      0}, {0x19, 0x94, 0xc3, 0xff}}},\n    {{{ -2080,   3072,    862}, 0, {  2012,    223}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1363,    -19,   -144}, 0, {  2012,      0}, {0xa7, 0x54, 0x1e, 0xff}}},\n    {{{ -1218,    -19,      0}, 0, {     0,      0}, {0x24, 0x33, 0x6e, 0xff}}},\n    {{{  -144,    -19,  -1073}, 0, {     0,    223}, {0x12, 0x68, 0x46, 0xff}}},\n    {{{ -1568,   3072,    650}, 0, {     0,      0}, {0x53, 0x5c, 0xeb, 0xff}}},\n    {{{ -1568,   3072,    548}, 0, {     0,    223}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{ -2080,   3072,    862}, 0, {  2012,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2080,   3072,    548}, 0, {  2012,    223}, {0x00, 0x59, 0xa7, 0xff}}},\n};\n\n// 0x07007C88 - 0x07007D78\nstatic const Vtx ttc_seg7_vertex_07007C88[] = {\n    {{{ -2080,   2919,    862}, 0, {  2012,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1568,   2919,    548}, 0, {     0,    990}, {0x54, 0xac, 0xd6, 0xff}}},\n    {{{ -1568,   2919,    650}, 0, {     0,      0}, {0x4a, 0xa4, 0xd5, 0xff}}},\n    {{{ -2080,   2919,    548}, 0, {  2012,    223}, {0x00, 0xc8, 0x8f, 0xff}}},\n    {{{  -955,    -71,  -1320}, 0, {  2012,    223}, {0xe8, 0x65, 0xb9, 0xff}}},\n    {{{ -1244,    -71,   -740}, 0, {     0,      0}, {0x18, 0x65, 0x47, 0xff}}},\n    {{{  -955,    -71,  -1030}, 0, {     0,    223}, {0xe9, 0x65, 0x47, 0xff}}},\n    {{{  -289,    -19,  -1218}, 0, {  2012,    223}, {0x93, 0x33, 0xdc, 0xff}}},\n    {{{ -1363,    -19,   -144}, 0, {  2012,      0}, {0xa7, 0x54, 0x1e, 0xff}}},\n    {{{  -144,    -19,  -1073}, 0, {     0,    223}, {0x12, 0x68, 0x46, 0xff}}},\n    {{{  -955,    -71,  -1030}, 0, {     0,      0}, {0xe9, 0x65, 0x47, 0xff}}},\n    {{{  -810,    -71,   -885}, 0, {     0,    223}, {0x24, 0x33, 0x6d, 0xff}}},\n    {{{  -665,    -71,  -1030}, 0, {  2012,    223}, {0x59, 0x54, 0xe3, 0xff}}},\n    {{{  -955,    -71,  -1320}, 0, {  2012,      0}, {0xe8, 0x65, 0xb9, 0xff}}},\n    {{{ -1244,    -71,  -1030}, 0, {  2012,      0}, {0x17, 0x65, 0xb9, 0xff}}},\n};\n\n// 0x07007D78 - 0x07007E68\nstatic const Vtx ttc_seg7_vertex_07007D78[] = {\n    {{{   850,  -1453,  -1658}, 0, {  2012,    223}, {0x6d, 0x33, 0xdc, 0xff}}},\n    {{{   428,  -1453,  -2080}, 0, {  2012,      0}, {0x1c, 0x78, 0xe4, 0xff}}},\n    {{{   705,  -1453,  -1513}, 0, {     0,    223}, {0x1d, 0x54, 0x59, 0xff}}},\n    {{{ -1244,    -71,  -1030}, 0, {  2012,    223}, {0x17, 0x65, 0xb9, 0xff}}},\n    {{{ -1484,    -71,   -980}, 0, {     0,      0}, {0xa7, 0x54, 0x1d, 0xff}}},\n    {{{ -1244,    -71,   -740}, 0, {     0,    223}, {0x18, 0x65, 0x47, 0xff}}},\n    {{{ -1339,    -71,  -1125}, 0, {  2012,      0}, {0xdc, 0x33, 0x93, 0xff}}},\n    {{{ -1578,    -19,  -1363}, 0, {  2012,    223}, {0x28, 0x71, 0xd8, 0xff}}},\n    {{{ -2080,    -19,   -861}, 0, {  2012,      0}, {0xb0, 0x38, 0x50, 0xff}}},\n    {{{ -1935,    -19,   -716}, 0, {     0,      0}, {0x1e, 0x54, 0x59, 0xff}}},\n    {{{ -1433,    -19,  -1219}, 0, {     0,    223}, {0x6d, 0x33, 0xdc, 0xff}}},\n    {{{  -539,  -1453,  -1876}, 0, {     0,      0}, {0x33, 0x33, 0x67, 0xff}}},\n    {{{   343,  -1453,  -1876}, 0, {     0,    223}, {0xd5, 0x5c, 0x4a, 0xff}}},\n    {{{  -539,  -1453,  -2080}, 0, {  2012,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   343,  -1453,  -1876}, 0, {     0,      0}, {0xd5, 0x5c, 0x4a, 0xff}}},\n};\n\n// 0x07007E68 - 0x07007F48\nstatic const Vtx ttc_seg7_vertex_07007E68[] = {\n    {{{   705,  -1607,  -1513}, 0, {     0,    990}, {0xe2, 0xac, 0x59, 0xff}}},\n    {{{   428,  -1607,  -2080}, 0, {  2012,      0}, {0x31, 0x97, 0xcf, 0xff}}},\n    {{{   850,  -1607,  -1658}, 0, {  2012,    223}, {0x6d, 0xcd, 0x24, 0xff}}},\n    {{{   343,  -1607,  -1876}, 0, {     0,      0}, {0xeb, 0xa4, 0x53, 0xff}}},\n    {{{   343,  -1453,  -1876}, 0, {     0,    223}, {0xd5, 0x5c, 0x4a, 0xff}}},\n    {{{   428,  -1453,  -2080}, 0, {  2012,    223}, {0x1c, 0x78, 0xe4, 0xff}}},\n    {{{  -539,  -1453,  -2080}, 0, {  2012,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2080,   -992,   -861}, 0, {     0,    223}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1671,   -992,   -691}, 0, {  2012,    223}, {0x3d, 0x6c, 0x19, 0xff}}},\n    {{{ -1936,   -992,  -1006}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -539,  -1607,  -2080}, 0, {  2012,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   428,  -1607,  -2080}, 0, {  2012,    223}, {0x31, 0x97, 0xcf, 0xff}}},\n    {{{   343,  -1607,  -1876}, 0, {     0,    990}, {0xeb, 0xa4, 0x53, 0xff}}},\n    {{{  -539,  -1607,  -1876}, 0, {     0,      0}, {0x67, 0xcd, 0x33, 0xff}}},\n};\n\n// 0x07007F48 - 0x07008038\nstatic const Vtx ttc_seg7_vertex_07007F48[] = {\n    {{{ -1671,   -992,   -656}, 0, {  2012,    223}, {0x4c, 0x63, 0x10, 0xff}}},\n    {{{ -1671,   -992,   -691}, 0, {  2012,      0}, {0x3d, 0x6c, 0x19, 0xff}}},\n    {{{ -2080,   -992,   -861}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2080,   -992,   -656}, 0, {     0,    223}, {0x00, 0x7d, 0x15, 0xff}}},\n    {{{ -2080,  -1453,    862}, 0, {     0,    223}, {0x67, 0x3c, 0xd6, 0xff}}},\n    {{{ -1671,  -1453,    692}, 0, {  2012,    223}, {0x3d, 0x6c, 0xe7, 0xff}}},\n    {{{ -2080,  -1453,    657}, 0, {     0,      0}, {0x00, 0x7d, 0x15, 0xff}}},\n    {{{ -1671,  -1453,    657}, 0, {  2012,    223}, {0x71, 0x37, 0x09, 0xff}}},\n    {{{ -1671,   -992,   -656}, 0, {  2012,   -543}, {0x4c, 0x63, 0x10, 0xff}}},\n    {{{ -2080,  -1453,    657}, 0, {     0,    223}, {0x00, 0x7d, 0x15, 0xff}}},\n    {{{ -2080,   -992,   -656}, 0, {     0,   -543}, {0x00, 0x7d, 0x15, 0xff}}},\n    {{{ -1646,  -1453,    717}, 0, {  2012,    223}, {0x59, 0x54, 0xe3, 0xff}}},\n    {{{ -1671,  -1453,    692}, 0, {  2012,      0}, {0x3d, 0x6c, 0xe7, 0xff}}},\n    {{{ -2080,  -1453,    862}, 0, {     0,      0}, {0x67, 0x3c, 0xd6, 0xff}}},\n    {{{ -1935,  -1453,   1007}, 0, {     0,    223}, {0x50, 0x38, 0x50, 0xff}}},\n};\n\n// 0x07008038 - 0x07008128\nstatic const Vtx ttc_seg7_vertex_07008038[] = {\n    {{{ -1876,  -3670,    572}, 0, {     0,    478}, {0x47, 0x98, 0x0d, 0xff}}},\n    {{{ -1876,  -3670,    657}, 0, {     0,    372}, {0x5c, 0xba, 0xce, 0xff}}},\n    {{{ -2080,  -3670,    862}, 0, {  2012,    223}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1346,  -3670,   1102}, 0, {     0,      0}, {0x59, 0xac, 0x1d, 0xff}}},\n    {{{ -1833,  -3670,    615}, 0, {     0,    223}, {0x00, 0xd6, 0x89, 0xff}}},\n    {{{ -1593,  -3670,   1349}, 0, {  2012,      0}, {0x3f, 0xa7, 0x3f, 0xff}}},\n    {{{ -2080,  -3516,    862}, 0, {  2012,    223}, {0xd8, 0x71, 0xd8, 0xff}}},\n    {{{ -1876,  -3516,    657}, 0, {     0,    372}, {0xbf, 0x25, 0x9a, 0xff}}},\n    {{{ -1876,  -3516,    572}, 0, {     0,    478}, {0x66, 0x4a, 0xf6, 0xff}}},\n    {{{ -2080,  -3516,    572}, 0, {  2012,    223}, {0x00, 0x7a, 0xdf, 0xff}}},\n    {{{ -2080,  -3516,    862}, 0, {  2012,      0}, {0xd8, 0x71, 0xd8, 0xff}}},\n    {{{ -1876,  -3516,    572}, 0, {     0,    223}, {0x66, 0x4a, 0xf6, 0xff}}},\n    {{{ -1876,  -4156,   -571}, 0, {     0,    990}, {0x5a, 0xab, 0x17, 0xff}}},\n    {{{ -1876,  -3670,    572}, 0, {     0,   -798}, {0x47, 0x98, 0x0d, 0xff}}},\n    {{{ -2080,  -3670,    572}, 0, {  2012,   -798}, {0x00, 0x86, 0x21, 0xff}}},\n};\n\n// 0x07008128 - 0x07008208\nstatic const Vtx ttc_seg7_vertex_07008128[] = {\n    {{{ -1876,  -3670,    572}, 0, {     0,    223}, {0x47, 0x98, 0x0d, 0xff}}},\n    {{{ -2080,  -3670,    862}, 0, {  2012,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2080,  -3670,    572}, 0, {  2012,    223}, {0x00, 0x86, 0x21, 0xff}}},\n    {{{ -2080,  -4003,   -571}, 0, {  2012,    223}, {0x00, 0x7c, 0xe7, 0xff}}},\n    {{{ -2080,  -3516,    572}, 0, {  2012,   -798}, {0x00, 0x7a, 0xdf, 0xff}}},\n    {{{ -1876,  -4003,   -571}, 0, {     0,    223}, {0x4d, 0x62, 0xec, 0xff}}},\n    {{{ -1876,  -3516,    572}, 0, {     0,   -798}, {0x66, 0x4a, 0xf6, 0xff}}},\n    {{{  -898,  -4003,  -1634}, 0, {     0,    223}, {0xc1, 0x1d, 0x69, 0xff}}},\n    {{{ -1103,  -4003,  -1839}, 0, {  2012,    223}, {0x1d, 0x54, 0x59, 0xff}}},\n    {{{ -1876,  -4003,   -656}, 0, {     0,      0}, {0x4a, 0x5c, 0x2b, 0xff}}},\n    {{{ -2080,  -4003,   -861}, 0, {  2012,      0}, {0x1c, 0x78, 0x1c, 0xff}}},\n    {{{ -1876,  -4156,   -571}, 0, {     0,    990}, {0x5a, 0xab, 0x17, 0xff}}},\n    {{{ -2080,  -3670,    572}, 0, {  2012,   -798}, {0x00, 0x86, 0x21, 0xff}}},\n    {{{ -2080,  -4156,   -571}, 0, {  2012,    223}, {0x00, 0x83, 0x10, 0xff}}},\n};\n\n// 0x07008208 - 0x070082F8\nstatic const Vtx ttc_seg7_vertex_07008208[] = {\n    {{{ -1411,   1228,    883}, 0, {     0,     57}, {0x61, 0x51, 0x08, 0xff}}},\n    {{{ -1850,   1228,    684}, 0, {  2012,    223}, {0xa9, 0x5a, 0x11, 0xff}}},\n    {{{ -1722,   1228,   1062}, 0, {  2012,      0}, {0x02, 0x37, 0x72, 0xff}}},\n    {{{ -2080,  -4003,   -861}, 0, {  2012,    945}, {0x1c, 0x78, 0x1c, 0xff}}},\n    {{{ -1876,  -4003,   -571}, 0, {     0,    223}, {0x4d, 0x62, 0xec, 0xff}}},\n    {{{ -1876,  -4003,   -656}, 0, {     0,    434}, {0x4a, 0x5c, 0x2b, 0xff}}},\n    {{{ -2080,  -4003,   -571}, 0, {  2012,    223}, {0x00, 0x7c, 0xe7, 0xff}}},\n    {{{ -1876,  -4156,   -656}, 0, {     0,    434}, {0x1d, 0x9c, 0x47, 0xff}}},\n    {{{ -1876,  -4156,   -571}, 0, {     0,    990}, {0x5a, 0xab, 0x17, 0xff}}},\n    {{{ -2080,  -4156,   -571}, 0, {  2012,    223}, {0x00, 0x83, 0x10, 0xff}}},\n    {{{ -2080,  -4156,   -861}, 0, {  2012,    945}, {0xc1, 0xa7, 0x3f, 0xff}}},\n    {{{ -1478,   1228,    378}, 0, {     0,     57}, {0x54, 0x5a, 0x1c, 0xff}}},\n    {{{ -1647,   1228,    -72}, 0, {  2012,    223}, {0xea, 0x4e, 0x9f, 0xff}}},\n    {{{ -1824,   1228,    285}, 0, {  2012,      0}, {0xa9, 0x5a, 0xef, 0xff}}},\n    {{{ -1363,   1228,    145}, 0, {     0,    223}, {0x67, 0x45, 0xe8, 0xff}}},\n};\n\n// 0x070082F8 - 0x07008368\nstatic const Vtx ttc_seg7_vertex_070082F8[] = {\n    {{{ -1495,   1228,    637}, 0, {     0,     57}, {0x58, 0x5a, 0xfb, 0xff}}},\n    {{{ -1478,   1228,    378}, 0, {     0,    223}, {0x54, 0x5a, 0x1c, 0xff}}},\n    {{{ -1824,   1228,    285}, 0, {  2012,    223}, {0xa9, 0x5a, 0xef, 0xff}}},\n    {{{ -1411,   1228,    883}, 0, {     0,     57}, {0x61, 0x51, 0x08, 0xff}}},\n    {{{ -1495,   1228,    637}, 0, {     0,    223}, {0x58, 0x5a, 0xfb, 0xff}}},\n    {{{ -1850,   1228,    684}, 0, {  2012,    223}, {0xa9, 0x5a, 0x11, 0xff}}},\n    {{{ -1850,   1228,    684}, 0, {  2012,      0}, {0xa9, 0x5a, 0x11, 0xff}}},\n};\n\n// 0x07008368 - 0x07008458\nstatic const Vtx ttc_seg7_vertex_07008368[] = {\n    {{{  2081,  -2242,   -427}, 0, {  2012,      0}, {0x1c, 0x88, 0xe4, 0xff}}},\n    {{{  2081,  -2242,    -58}, 0, {  2012,    223}, {0x00, 0xc8, 0x71, 0xff}}},\n    {{{  1621,  -2242,    -58}, 0, {     0,    223}, {0xac, 0xac, 0x2a, 0xff}}},\n    {{{  1621,  -2088,    -58}, 0, {     0,    223}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  2081,  -2088,    -58}, 0, {  2012,    223}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{  2081,  -2088,   -427}, 0, {  2012,      0}, {0x31, 0x69, 0xcf, 0xff}}},\n    {{{  1621,  -2088,   -236}, 0, {     0,      0}, {0xad, 0x5c, 0x15, 0xff}}},\n    {{{  2081,  -2088,   -427}, 0, {  2012,    223}, {0x31, 0x69, 0xcf, 0xff}}},\n    {{{  1821,  -2088,   -687}, 0, {  2012,      0}, {0xe3, 0x54, 0xa7, 0xff}}},\n    {{{  1621,  -2088,   -236}, 0, {     0,    223}, {0xad, 0x5c, 0x15, 0xff}}},\n    {{{  1495,  -2088,   -361}, 0, {     0,      0}, {0x93, 0x33, 0x25, 0xff}}},\n    {{{ -1646,  -1146,   -716}, 0, {  2012,      0}, {0x49, 0x99, 0x00, 0xff}}},\n    {{{ -1671,  -1146,   -691}, 0, {  2012,    223}, {0x67, 0xc4, 0x2a, 0xff}}},\n    {{{ -2080,  -1146,   -861}, 0, {     0,    223}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1621,  -2242,   -236}, 0, {     0,      0}, {0xb6, 0xa4, 0x2b, 0xff}}},\n};\n\n// 0x07008458 - 0x07008558\nstatic const Vtx ttc_seg7_vertex_07008458[] = {\n    {{{  1621,  -2242,   -236}, 0, {     0,    223}, {0xb6, 0xa4, 0x2b, 0xff}}},\n    {{{  1821,  -2242,   -687}, 0, {  2012,      0}, {0x1d, 0xac, 0xa7, 0xff}}},\n    {{{  2081,  -2242,   -427}, 0, {  2012,    223}, {0x1c, 0x88, 0xe4, 0xff}}},\n    {{{  1495,  -2242,   -361}, 0, {     0,      0}, {0x93, 0xcd, 0xdc, 0xff}}},\n    {{{ -1671,   -992,   -691}, 0, {  2012,    223}, {0x3d, 0x6c, 0x19, 0xff}}},\n    {{{ -1646,   -992,   -716}, 0, {  2012,      0}, {0x77, 0x2a, 0x00, 0xff}}},\n    {{{ -1936,   -992,  -1006}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2080,  -1146,   -656}, 0, {     0,   -543}, {0x00, 0x85, 0xe4, 0xff}}},\n    {{{ -1671,  -1146,   -656}, 0, {  2012,   -543}, {0x5a, 0xa8, 0xf7, 0xff}}},\n    {{{ -1671,  -1607,    657}, 0, {  2012,    223}, {0x39, 0x91, 0xed, 0xff}}},\n    {{{ -2080,  -1146,   -861}, 0, {     0,    223}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1671,  -1146,   -691}, 0, {  2012,    223}, {0x67, 0xc4, 0x2a, 0xff}}},\n    {{{ -1671,  -1146,   -656}, 0, {  2012,    478}, {0x5a, 0xa8, 0xf7, 0xff}}},\n    {{{ -2080,  -1146,   -656}, 0, {     0,    223}, {0x00, 0x85, 0xe4, 0xff}}},\n    {{{ -2080,  -1146,   -861}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1671,  -1146,   -656}, 0, {  2012,    223}, {0x5a, 0xa8, 0xf7, 0xff}}},\n};\n\n// 0x07008558 - 0x07008658\nstatic const Vtx ttc_seg7_vertex_07008558[] = {\n    {{{ -1935,  -1146,  -1006}, 0, {     0,    223}, {0x50, 0xc8, 0xb0, 0xff}}},\n    {{{ -1646,  -1146,   -716}, 0, {  2012,    223}, {0x49, 0x99, 0x00, 0xff}}},\n    {{{ -2080,  -1146,   -861}, 0, {     0,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2080,  -1607,    657}, 0, {     0,    223}, {0x00, 0x83, 0xeb, 0xff}}},\n    {{{ -2080,  -1146,   -656}, 0, {     0,   -543}, {0x00, 0x85, 0xe4, 0xff}}},\n    {{{ -1671,  -1607,    657}, 0, {  2012,    223}, {0x39, 0x91, 0xed, 0xff}}},\n    {{{ -2080,  -1607,    862}, 0, {     0,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1671,  -1453,    692}, 0, {  2012,    223}, {0x3d, 0x6c, 0xe7, 0xff}}},\n    {{{ -1671,  -1453,    657}, 0, {  2012,      0}, {0x71, 0x37, 0x09, 0xff}}},\n    {{{ -2080,  -1453,    657}, 0, {     0,      0}, {0x00, 0x7d, 0x15, 0xff}}},\n    {{{ -2080,  -1607,    862}, 0, {     0,    223}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1671,  -1607,    692}, 0, {  2012,    223}, {0x67, 0xc4, 0xd6, 0xff}}},\n    {{{ -1646,  -1607,    717}, 0, {  2012,    478}, {0x59, 0xac, 0x1d, 0xff}}},\n    {{{ -1935,  -1607,   1007}, 0, {     0,    223}, {0x3f, 0xa7, 0x3f, 0xff}}},\n    {{{ -2080,  -1607,    862}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1646,  -1607,    717}, 0, {  2012,    223}, {0x59, 0xac, 0x1d, 0xff}}},\n};\n\n// 0x07008658 - 0x07008748\nstatic const Vtx ttc_seg7_vertex_07008658[] = {\n    {{{ -1671,  -1607,    657}, 0, {  2012,      0}, {0x39, 0x91, 0xed, 0xff}}},\n    {{{ -1671,  -1607,    692}, 0, {  2012,    223}, {0x67, 0xc4, 0xd6, 0xff}}},\n    {{{ -2080,  -1607,    862}, 0, {     0,    223}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -162,  -2692,   1682}, 0, {     0,     28}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{  -696,  -2692,   1682}, 0, {     0,    223}, {0x34, 0x49, 0xa7, 0xff}}},\n    {{{  -861,  -2692,   2081}, 0, {  2012,    223}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -162,  -2692,   2081}, 0, {  2012,      0}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  -162,  -2846,   2081}, 0, {  2012,      0}, {0x38, 0x8f, 0x00, 0xff}}},\n    {{{  -696,  -2846,   1682}, 0, {     0,    223}, {0x15, 0xa4, 0xad, 0xff}}},\n    {{{  -162,  -2846,   1682}, 0, {     0,     28}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{  -861,  -2846,   2081}, 0, {  2012,    223}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -928,  -2692,   1449}, 0, {     0,    478}, {0xe3, 0x54, 0xa7, 0xff}}},\n    {{{ -1211,  -2692,   1732}, 0, {  2012,    223}, {0xc1, 0x59, 0xc1, 0xff}}},\n    {{{  -861,  -2692,   2081}, 0, {  2012,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -928,  -2692,   1449}, 0, {     0,    223}, {0xe3, 0x54, 0xa7, 0xff}}},\n};\n\n// 0x07008748 - 0x07008848\nstatic const Vtx ttc_seg7_vertex_07008748[] = {\n    {{{ -1495,   1075,    637}, 0, {  2012,    223}, {0x57, 0xa6, 0xef, 0xff}}},\n    {{{ -1411,   1075,    883}, 0, {  2012,      0}, {0x4e, 0xaf, 0x39, 0xff}}},\n    {{{ -1850,   1075,    684}, 0, {     0,    223}, {0xa8, 0xa6, 0x05, 0xff}}},\n    {{{  -928,  -2846,   1449}, 0, {     0,    478}, {0x1e, 0xac, 0xa7, 0xff}}},\n    {{{  -696,  -2846,   1682}, 0, {     0,    223}, {0x15, 0xa4, 0xad, 0xff}}},\n    {{{  -861,  -2846,   2081}, 0, {  2012,    223}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -928,  -2846,   1449}, 0, {     0,    223}, {0x1e, 0xac, 0xa7, 0xff}}},\n    {{{  -861,  -2846,   2081}, 0, {  2012,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1211,  -2846,   1732}, 0, {  2012,    223}, {0xb0, 0xc8, 0xb0, 0xff}}},\n    {{{ -1363,   1075,    145}, 0, {  2012,    223}, {0x75, 0xd9, 0xe5, 0xff}}},\n    {{{ -1478,   1075,    378}, 0, {  2012,      0}, {0x57, 0xa6, 0x11, 0xff}}},\n    {{{ -1647,   1075,    -72}, 0, {     0,    223}, {0xf1, 0x95, 0xbe, 0xff}}},\n    {{{ -1647,   1075,    -72}, 0, {     0,    479}, {0xf1, 0x95, 0xbe, 0xff}}},\n    {{{ -1478,   1075,    378}, 0, {  2012,    223}, {0x57, 0xa6, 0x11, 0xff}}},\n    {{{ -1824,   1075,    285}, 0, {     0,    223}, {0xac, 0xa6, 0xe4, 0xff}}},\n    {{{ -1824,   1075,    285}, 0, {     0,    479}, {0xac, 0xa6, 0xe4, 0xff}}},\n};\n\n// 0x07008848 - 0x070088A8\nstatic const Vtx ttc_seg7_vertex_07008848[] = {\n    {{{ -1850,   1075,    684}, 0, {     0,    479}, {0xa8, 0xa6, 0x05, 0xff}}},\n    {{{ -1411,   1075,    883}, 0, {  2012,    223}, {0x4e, 0xaf, 0x39, 0xff}}},\n    {{{ -1722,   1075,   1062}, 0, {     0,    223}, {0xb3, 0xc9, 0x53, 0xff}}},\n    {{{ -1478,   1075,    378}, 0, {  2012,    223}, {0x57, 0xa6, 0x11, 0xff}}},\n    {{{ -1495,   1075,    637}, 0, {  2012,      0}, {0x57, 0xa6, 0xef, 0xff}}},\n    {{{ -1824,   1075,    285}, 0, {     0,    223}, {0xac, 0xa6, 0xe4, 0xff}}},\n};\n\n// 0x070088A8 - 0x070089A8\nstatic const Vtx ttc_seg7_vertex_070088A8[] = {\n    {{{ -1284,    742,  -1230}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1371,    742,  -1143}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1414,    742,  -1186}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1003,  -3872,  -1063}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   872,  -3872,  -1019}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   959,  -3872,  -1106}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   916,  -3872,   -976}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1315,  -3109,  -1057}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1460,  -3109,   -999}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1359,  -3109,  -1101}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1417,  -3109,   -956}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -624,    896,   -932}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -711,    896,   -846}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -755,    896,   -889}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -668,    896,   -976}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1327,    742,  -1273}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x070089A8 - 0x07008CD8\nstatic const Gfx ttc_seg7_dl_070089A8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ttc_seg7_texture_07000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 64 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttc_seg7_lights_07001000.l, 1),\n    gsSPLight(&ttc_seg7_lights_07001000.a, 2),\n    gsSPVertex(ttc_seg7_vertex_07001078, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07001168, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07001258, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07001348, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07001438, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07001528, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07001618, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07001708, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ttc_seg7_vertex_070017F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ttc_seg7_vertex_070018E8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ttc_seg7_vertex_070019D8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07001AC8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008CD8 - 0x07008DD0\nstatic const Gfx ttc_seg7_dl_07008CD8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 64 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttc_seg7_vertex_07001BB8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  8,  9,  6, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0, 15, 11, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07001CB8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 3,  4,  0, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14,  7, 0x0),\n    gsSP1Triangle(13,  7,  6, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07001DA8, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  1,  0, 0x0,  4,  5,  1, 0x0),\n    gsSP1Triangle( 6,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008DD0 - 0x07009278\nstatic const Gfx ttc_seg7_dl_07008DD0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttc_seg7_lights_07001018.l, 1),\n    gsSPLight(&ttc_seg7_lights_07001018.a, 2),\n    gsSPVertex(ttc_seg7_vertex_07001E38, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPLight(&ttc_seg7_lights_07001000.l, 1),\n    gsSPLight(&ttc_seg7_lights_07001000.a, 2),\n    gsSPVertex(ttc_seg7_vertex_07001E78, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  8,  2,  9, 0x0),\n    gsSP2Triangles( 8,  0,  2, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07001F78, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  3,  6,  4, 0x0),\n    gsSP2Triangles( 6,  1,  7, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 8, 11, 12, 0x0,  8, 13,  9, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07002058, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  0,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 13, 14, 0x0),\n    gsSP2Triangles(12, 14, 15, 0x0, 12, 15, 10, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07002158, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07002248, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9,  5, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07002348, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  1,  9, 0x0,  8, 10,  1, 0x0),\n    gsSP1Triangle(11, 12, 13, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07002428, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 4,  5,  2, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  9,  7, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07002528, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 8, 12, 13, 0x0, 14, 15, 11, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07002628, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(14,  5,  1, 0x0, 14, 15,  5, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07002728, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  0,  2, 0x0,  4,  2,  5, 0x0),\n    gsSP2Triangles( 6,  4,  5, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11, 12, 0x0),\n    gsSP2Triangles( 8, 13, 14, 0x0,  8, 14, 15, 0x0),\n    gsSP1Triangle( 8, 15, 11, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07002828, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  9,  7, 0x0,  4,  6, 10, 0x0),\n    gsSP2Triangles(10,  6,  8, 0x0,  6, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14,  8, 12, 0x0),\n    gsSP2Triangles(14, 10,  8, 0x0,  8, 15, 12, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07002928, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 3,  5,  4, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 12, 10, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07002A28, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07002B28, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0,  7, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07002C28, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11,  9, 12, 0x0),\n    gsSP1Triangle( 9, 13, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009278 - 0x07009480\nstatic const Gfx ttc_seg7_dl_07009278[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09008400),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttc_seg7_lights_07001030.l, 1),\n    gsSPLight(&ttc_seg7_lights_07001030.a, 2),\n    gsSPVertex(ttc_seg7_vertex_07002D08, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPLight(&ttc_seg7_lights_07001000.l, 1),\n    gsSPLight(&ttc_seg7_lights_07001000.a, 2),\n    gsSPVertex(ttc_seg7_vertex_07002D88, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11,  0, 12, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07002E88, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 1,  5,  2, 0x0,  3,  6,  7, 0x0),\n    gsSP2Triangles( 3,  7,  4, 0x0,  1,  6,  5, 0x0),\n    gsSP2Triangles( 1,  7,  6, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 8, 11, 12, 0x0,  8, 13, 11, 0x0),\n    gsSP1Triangle( 8, 10, 13, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07002F68, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  3,  8,  4, 0x0),\n    gsSP2Triangles( 3,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07003068, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07003158, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 3,  1,  4, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  0, 0x0,  8,  7,  6, 0x0),\n    gsSP2Triangles( 8,  4,  7, 0x0,  4,  8,  9, 0x0),\n    gsSP2Triangles( 4,  9,  5, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07003258, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009480 - 0x07009A88\nstatic const Gfx ttc_seg7_dl_07009480[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttc_seg7_vertex_07003288, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07003378, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07003468, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07003558, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07003648, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07003738, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  3,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07003838, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07003928, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07003A08, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07003AF8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07003BE8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07003CD8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07003DC8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07003EB8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07003FA8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07004098, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07004188, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07004278, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  6,  7,  3, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07004378, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  2,  5,  3, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07004478, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  8, 13,  9, 0x0),\n    gsSP2Triangles( 7, 14,  8, 0x0, 14, 15,  8, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07004578, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07004658, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07004738, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 2,  5,  3, 0x0,  0,  2,  4, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 7,  8,  6, 0x0,  9, 10,  8, 0x0),\n    gsSP2Triangles( 9, 11, 10, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 15, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009A88 - 0x07009BF0\nstatic const Gfx ttc_seg7_dl_07009A88[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09006800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttc_seg7_vertex_07004838, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 4,  8,  7, 0x0,  4,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07004918, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07004A08, 16, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  3,  6,  4, 0x0),\n    gsSP2Triangles( 3,  7,  6, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 8, 11,  9, 0x0,  0,  2, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07004B08, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07004C08, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle( 7,  9, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009BF0 - 0x07009F00\nstatic const Gfx ttc_seg7_dl_07009BF0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09002800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttc_seg7_vertex_07004CB8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07004DA8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07004E98, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07004F88, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07005078, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07005168, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07005258, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07005348, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07005438, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07005528, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07005618, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07005708, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP1Triangle( 0,  2, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009F00 - 0x0700A2C8\nstatic const Gfx ttc_seg7_dl_07009F00[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttc_seg7_vertex_070057B8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  0,  3, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  5,  9,  8, 0x0),\n    gsSP2Triangles(10,  8, 11, 0x0,  7, 12, 13, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0, 12, 15, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_070058B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  1,  6,  4, 0x0),\n    gsSP2Triangles( 1,  3,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  0,  2,  8, 0x0),\n    gsSP2Triangles(10, 13, 11, 0x0, 10, 14, 13, 0x0),\n    gsSPVertex(ttc_seg7_vertex_070059A8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11,  8, 10, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13,  2,  1, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07005A88, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  2,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  5,  9,  8, 0x0),\n    gsSP2Triangles( 5, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles( 9, 14, 15, 0x0,  9, 15,  8, 0x0),\n    gsSP1Triangle(11, 15, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07005B88, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 3,  4,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07005C78, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 1,  5,  2, 0x0,  1,  6,  5, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0, 10, 11,  0, 0x0),\n    gsSP1Triangle(10, 12, 13, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07005D58, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  1,  9, 0x0,  8,  5,  1, 0x0),\n    gsSP2Triangles( 8, 10,  5, 0x0,  8, 11, 10, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07005E48, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07005F28, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  8,  6, 0x0),\n    gsSP2Triangles( 9,  6,  8, 0x0, 10,  1, 11, 0x0),\n    gsSP2Triangles(10,  2,  1, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07006018, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  0,  5,  4, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  4,  7,  3, 0x0),\n    gsSP2Triangles( 8,  7,  6, 0x0,  0,  9, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 14, 15,  9, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07006118, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  2,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07006208, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_070062F8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A2C8 - 0x0700A600\nstatic const Gfx ttc_seg7_dl_0700A2C8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttc_seg7_vertex_07006378, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07006468, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07006558, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07006648, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07006738, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11,  1,  0, 0x0),\n    gsSP2Triangles(11, 12,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07006838, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07006918, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07006A08, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07006AF8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07006BE8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07006CD8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07006DC8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07006EB8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A600 - 0x0700A700\nstatic const Gfx ttc_seg7_dl_0700A600[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttc_seg7_vertex_07006EF8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07006FE8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ttc_seg7_vertex_070070D8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(ttc_seg7_vertex_070071D8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A700 - 0x0700ACD8\nstatic const Gfx ttc_seg7_dl_0700A700[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 8 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttc_seg7_vertex_07007218, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  0, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 12, 10, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07007318, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ttc_seg7_vertex_070073F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(13, 14,  0, 0x0),\n    gsSPVertex(ttc_seg7_vertex_070074E8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(ttc_seg7_vertex_070075E8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  8, 12, 13, 0x0),\n    gsSPVertex(ttc_seg7_vertex_070076C8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 5, 10, 11, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 15, 13, 0x0),\n    gsSPVertex(ttc_seg7_vertex_070077C8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 15, 11, 0x0),\n    gsSPVertex(ttc_seg7_vertex_070078C8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSP1Triangle(13, 15, 10, 0x0),\n    gsSPVertex(ttc_seg7_vertex_070079C8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  3, 12,  4, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07007AC8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  7, 13,  8, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07007BA8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 1,  6,  2, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07007C88, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 10, 12, 0x0),\n    gsSP1Triangle( 4, 14,  5, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07007D78, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 1, 14,  2, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07007E68, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07007F48, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07008038, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 3,  5,  2, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07008128, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07008208, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ttc_seg7_vertex_070082F8, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  2,  6, 0x0),\n    gsSPLight(&ttc_seg7_lights_07001048.l, 1),\n    gsSPLight(&ttc_seg7_lights_07001048.a, 2),\n    gsSPVertex(ttc_seg7_vertex_07008368, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14,  0,  2, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07008458, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07008558, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07008658, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  5,  4, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07008748, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 15,  0,  2, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07008848, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700ACD8 - 0x0700AD38\nstatic const Gfx ttc_seg7_dl_0700ACD8[] = {\n    gsSPLight(&ttc_seg7_lights_07001060.l, 1),\n    gsSPLight(&ttc_seg7_lights_07001060.a, 2),\n    gsSPVertex(ttc_seg7_vertex_070088A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700AD38 - 0x0700AED8\nconst Gfx ttc_seg7_dl_0700AD38[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(200, 255, 255, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttc_seg7_dl_070089A8),\n    gsSPDisplayList(ttc_seg7_dl_07008CD8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttc_seg7_dl_07008DD0),\n    gsSPDisplayList(ttc_seg7_dl_07009278),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttc_seg7_dl_07009480),\n    gsSPDisplayList(ttc_seg7_dl_07009A88),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttc_seg7_dl_07009BF0),\n    gsSPDisplayList(ttc_seg7_dl_07009F00),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttc_seg7_dl_0700A2C8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttc_seg7_dl_0700A600),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 3, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (8 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttc_seg7_dl_0700A700),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_PASS2),\n    gsSPDisplayList(ttc_seg7_dl_0700ACD8),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttc/areas/1/2/model.inc.c",
    "content": "// 0x0700AED8 - 0x0700AEF0\nstatic const Lights1 ttc_seg7_lights_0700AED8 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700AEF0 - 0x0700AFE0\nstatic const Vtx ttc_seg7_vertex_0700AEF0[] = {\n    {{{  -861,  -8703,   2081}, 0, {  5078,  -5012}, {0x20, 0x00, 0x86, 0x00}}},\n    {{{  -861,  -8191,   2081}, 0, {  5078,  -7186}, {0x40, 0x00, 0x93, 0x32}}},\n    {{{   862,  -8191,   2081}, 0, {   -30,  -7186}, {0xe0, 0x00, 0x86, 0x32}}},\n    {{{  2081,  -8703,    862}, 0, {  5078,  -5012}, {0x86, 0x00, 0xe0, 0x00}}},\n    {{{  2081,  -8191,   -861}, 0, {   -30,  -7186}, {0x86, 0x00, 0x20, 0x32}}},\n    {{{  2081,  -8703,   -861}, 0, {   -30,  -5012}, {0x93, 0x00, 0x40, 0x00}}},\n    {{{  2081,  -8191,    862}, 0, {  5078,  -7186}, {0x93, 0x00, 0xc0, 0x32}}},\n    {{{   862,  -8703,   2081}, 0, {  5078,  -5012}, {0xc0, 0x00, 0x93, 0x00}}},\n    {{{  2081,  -8191,    862}, 0, {   -30,  -7186}, {0x93, 0x00, 0xc0, 0x32}}},\n    {{{  2081,  -8703,    862}, 0, {   -30,  -5012}, {0x86, 0x00, 0xe0, 0x00}}},\n    {{{   862,  -8191,   2081}, 0, {  5078,  -7186}, {0xe0, 0x00, 0x86, 0x32}}},\n    {{{ -2080,  -8703,    862}, 0, {  5078,  -5012}, {0x6d, 0x00, 0xc0, 0x00}}},\n    {{{ -2080,  -8191,    862}, 0, {  5078,  -7186}, {0x7a, 0x00, 0xe0, 0x32}}},\n    {{{  -861,  -8191,   2081}, 0, {   -30,  -7186}, {0x40, 0x00, 0x93, 0x32}}},\n    {{{  -861,  -8703,   2081}, 0, {   -30,  -5012}, {0x20, 0x00, 0x86, 0x00}}},\n};\n\n// 0x0700AFE0 - 0x0700B0D0\nstatic const Vtx ttc_seg7_vertex_0700AFE0[] = {\n    {{{  -861,  -8703,  -2080}, 0, {  5078,  -5012}, {0x40, 0x00, 0x6d, 0x00}}},\n    {{{  -861,  -8191,  -2080}, 0, {  5078,  -7186}, {0x20, 0x00, 0x7a, 0x32}}},\n    {{{ -2080,  -8191,   -861}, 0, {   -30,  -7186}, {0x6d, 0x00, 0x40, 0x32}}},\n    {{{  -861,  -8703,   2081}, 0, {  5078,  -5012}, {0x20, 0x00, 0x86, 0x00}}},\n    {{{   862,  -8191,   2081}, 0, {   -30,  -7186}, {0xe0, 0x00, 0x86, 0x32}}},\n    {{{   862,  -8703,   2081}, 0, {   -30,  -5012}, {0xc0, 0x00, 0x93, 0x00}}},\n    {{{   862,  -8703,  -2080}, 0, {  5078,  -5012}, {0xe0, 0x00, 0x7a, 0x00}}},\n    {{{   862,  -8191,  -2080}, 0, {  5078,  -7186}, {0xc0, 0x00, 0x6d, 0x32}}},\n    {{{  -861,  -8191,  -2080}, 0, {   -30,  -7186}, {0x20, 0x00, 0x7a, 0x32}}},\n    {{{  -861,  -8703,  -2080}, 0, {   -30,  -5012}, {0x40, 0x00, 0x6d, 0x00}}},\n    {{{  2081,  -8703,   -861}, 0, {  5078,  -5012}, {0x93, 0x00, 0x40, 0x00}}},\n    {{{   862,  -8191,  -2080}, 0, {   -30,  -7186}, {0xc0, 0x00, 0x6d, 0x32}}},\n    {{{   862,  -8703,  -2080}, 0, {   -30,  -5012}, {0xe0, 0x00, 0x7a, 0x00}}},\n    {{{  2081,  -8191,   -861}, 0, {  5078,  -7186}, {0x86, 0x00, 0x20, 0x32}}},\n    {{{ -2080,  -8703,   -861}, 0, {   -30,  -5012}, {0x7a, 0x00, 0x20, 0x00}}},\n};\n\n// 0x0700B0D0 - 0x0700B110\nstatic const Vtx ttc_seg7_vertex_0700B0D0[] = {\n    {{{ -2080,  -8703,   -861}, 0, {  5078,  -5012}, {0x7a, 0x00, 0x20, 0x00}}},\n    {{{ -2080,  -8191,    862}, 0, {     0,  -7186}, {0x7a, 0x00, 0xe0, 0x32}}},\n    {{{ -2080,  -8703,    862}, 0, {     0,  -5012}, {0x6d, 0x00, 0xc0, 0x00}}},\n    {{{ -2080,  -8191,   -861}, 0, {  5078,  -7186}, {0x6d, 0x00, 0x40, 0x32}}},\n};\n\n// 0x0700B110 - 0x0700B1D8\nstatic const Gfx ttc_seg7_dl_0700B110[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09002800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttc_seg7_lights_0700AED8.l, 1),\n    gsSPLight(&ttc_seg7_lights_0700AED8.a, 2),\n    gsSPVertex(ttc_seg7_vertex_0700AEF0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700AFE0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700B0D0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700B1D8 - 0x0700B238\nconst Gfx ttc_seg7_dl_0700B1D8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttc_seg7_dl_0700B110),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttc/areas/1/3/model.inc.c",
    "content": "// 0x0700B238 - 0x0700B328\nstatic const Vtx ttc_seg7_vertex_0700B238[] = {\n    {{{  -204,   4475,   -511}, 0, { -1052,  -5142}, {0x66, 0x66, 0x66, 0xff}}},\n    {{{   512,   4475,    205}, 0, {  6100,   2010}, {0x66, 0x66, 0x66, 0xff}}},\n    {{{   512,   4475,   -204}, 0, {  6100,  -2076}, {0x66, 0x66, 0x66, 0xff}}},\n    {{{   205,   4475,    512}, 0, {  3034,   5076}, {0x66, 0x66, 0x66, 0xff}}},\n    {{{   205,   4475,   -511}, 0, {  3034,  -5142}, {0x66, 0x66, 0x66, 0xff}}},\n    {{{  -511,   4475,    205}, 0, { -4118,   2010}, {0x66, 0x66, 0x66, 0xff}}},\n    {{{  -204,   4475,    512}, 0, { -1052,   5076}, {0x66, 0x66, 0x66, 0xff}}},\n    {{{  -511,   4475,   -204}, 0, { -4118,  -2076}, {0x66, 0x66, 0x66, 0xff}}},\n    {{{  2208,   7051,   1919}, 0, { -1052,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2208,   6897,   1919}, 0, { -1052,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1919,   6897,   2208}, 0, {  3034,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2498,   7051,   2208}, 0, { -1052,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2208,   6897,   1919}, 0, {  3034,   1498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2208,   7051,   1919}, 0, {  3034,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2498,   6897,   2208}, 0, { -1052,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700B328 - 0x0700B408\nstatic const Vtx ttc_seg7_vertex_0700B328[] = {\n    {{{  2208,   7051,   2498}, 0, { -1052,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2498,   6897,   2208}, 0, {  3034,   1498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2498,   7051,   2208}, 0, {  3034,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2208,   6897,   2498}, 0, { -1052,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2498,   7051,   2208}, 0, { -1052,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1919,   7051,   2208}, 0, {  3034,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2208,   7051,   2498}, 0, { -1052,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2208,   7051,   1919}, 0, {  3034,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2081,   3860,    339}, 0, { -1052,   3032}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1671,   3860,    339}, 0, {  3034,   3032}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1671,   3860,    749}, 0, {  3034,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2208,   7051,   1919}, 0, { -1052,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1919,   6897,   2208}, 0, {  3034,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1919,   7051,   2208}, 0, {  3034,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700B408 - 0x0700B4E8\nstatic const Vtx ttc_seg7_vertex_0700B408[] = {\n    {{{  1919,   7051,   2208}, 0, { -1052,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2208,   6897,   2498}, 0, {  3034,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2208,   7051,   2498}, 0, {  3034,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1919,   6897,   2208}, 0, { -1052,   1498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2081,   3860,    749}, 0, { -1052,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2081,   3707,    339}, 0, {  3034,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2081,   3860,    339}, 0, {  3034,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2081,   3707,    749}, 0, { -1052,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2081,   3860,    339}, 0, { -1052,   3032}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1671,   3860,    749}, 0, {  3034,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2081,   3860,    749}, 0, { -1052,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1270,   3159,    839}, 0, {  2012,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   999,   3159,    839}, 0, {     0,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   999,   2939,    839}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700B4E8 - 0x0700B5D8\nstatic const Vtx ttc_seg7_vertex_0700B4E8[] = {\n    {{{  1671,   3860,    749}, 0, { -1052,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2081,   3707,    749}, 0, {  3034,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2081,   3860,    749}, 0, {  3034,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1671,   3707,    749}, 0, { -1052,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2081,   3860,    339}, 0, { -1052,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1671,   3707,    339}, 0, {  3034,   1498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1671,   3860,    339}, 0, {  3034,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2081,   3707,    339}, 0, { -1052,   1498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1671,   3860,    339}, 0, { -1052,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1671,   3707,    749}, 0, {  3034,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1671,   3860,    749}, 0, {  3034,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1671,   3707,    339}, 0, { -1052,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   512,   4321,    205}, 0, {  3034,   6610}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   512,   4475,    205}, 0, {  3034,   5076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   205,   4475,    512}, 0, { -1052,   5076}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700B5D8 - 0x0700B6B8\nstatic const Vtx ttc_seg7_vertex_0700B5D8[] = {\n    {{{  1270,   3159,    839}, 0, {  2012,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   999,   2939,    839}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1270,   2939,    839}, 0, {  2012,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   926,   3518,    378}, 0, {  2012,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   655,   3298,    378}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   926,   3298,    378}, 0, {  2012,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   655,   3518,    378}, 0, {     0,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   512,   4321,   -204}, 0, {  3034,   6610}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   512,   4475,    205}, 0, { -1052,   5076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   512,   4321,    205}, 0, { -1052,   6610}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   512,   4475,   -204}, 0, {  3034,   5076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   512,   4321,    205}, 0, {  3034,   6610}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   205,   4475,    512}, 0, { -1052,   5076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   205,   4321,    512}, 0, { -1052,   6610}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700B6B8 - 0x0700B7A8\nstatic const Vtx ttc_seg7_vertex_0700B6B8[] = {\n    {{{  -204,   4321,    512}, 0, {  3034,   6610}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -204,   4475,    512}, 0, {  3034,   5076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -511,   4475,    205}, 0, { -1052,   5076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   205,   4321,   -511}, 0, {  3034,   6610}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   205,   4475,   -511}, 0, {  3034,   5076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   512,   4475,   -204}, 0, { -1052,   5076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   512,   4321,   -204}, 0, { -1052,   6610}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   205,   4321,    512}, 0, {  3034,   6610}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -204,   4475,    512}, 0, { -1052,   5076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -204,   4321,    512}, 0, { -1052,   6610}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   205,   4475,    512}, 0, {  3034,   5076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -204,   4321,   -511}, 0, {  3034,   6610}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   205,   4475,   -511}, 0, { -1052,   5076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   205,   4321,   -511}, 0, { -1052,   6610}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -204,   4475,   -511}, 0, {  3034,   5076}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700B7A8 - 0x0700B898\nstatic const Vtx ttc_seg7_vertex_0700B7A8[] = {\n    {{{   611,   3318,   1672}, 0, { -5140,   2010}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -617,   3318,   1672}, 0, {  7122,   2010}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -617,   3943,   1672}, 0, {  7122,  -4222}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -204,   4321,    512}, 0, {  3034,   6610}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -511,   4475,    205}, 0, { -1052,   5076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -511,   4321,    205}, 0, { -1052,   6610}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -511,   4321,   -204}, 0, {  3034,   6610}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -204,   4475,   -511}, 0, { -1052,   5076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -204,   4321,   -511}, 0, { -1052,   6610}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -511,   4475,   -204}, 0, {  3034,   5076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -511,   4321,    205}, 0, {  3034,   6610}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -511,   4475,   -204}, 0, { -1052,   5076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -511,   4321,   -204}, 0, { -1052,   6610}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -511,   4475,    205}, 0, {  3034,   5076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   611,   3943,   1672}, 0, { -5140,  -4222}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700B898 - 0x0700B988\nstatic const Vtx ttc_seg7_vertex_0700B898[] = {\n    {{{   862,   1351,   1672}, 0, {  3034,   2010}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   453,   1351,   2081}, 0, { -1052,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   862,   1351,   2081}, 0, { -1052,   2010}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -617,   3318,   2081}, 0, { -2074,  -6164}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   611,   3318,   1672}, 0, {  2012,   6098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -617,   3318,   1672}, 0, {  2012,  -6164}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   611,   3318,   2081}, 0, { -2074,   6098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -617,   3943,   2081}, 0, {  3034,  -4222}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -617,   3318,   1672}, 0, { -1052,   2010}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -617,   3318,   2081}, 0, {  3034,   2010}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -617,   3943,   1672}, 0, { -1052,  -4222}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   862,   1351,   2081}, 0, { -1052,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   862,   1197,   1672}, 0, {  3034,   1498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   862,   1351,   1672}, 0, {  3034,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   862,   1197,   2081}, 0, { -1052,   1498}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700B988 - 0x0700BA78\nstatic const Vtx ttc_seg7_vertex_0700B988[] = {\n    {{{  -711,   2114,   -782}, 0, {  2522,   3032}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -711,   2626,   -782}, 0, {  2522,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1073,   2626,   -420}, 0, { -2584,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   862,   1351,   1672}, 0, {  3034,   2010}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   453,   1351,   1672}, 0, {  3034,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   453,   1351,   2081}, 0, { -1052,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   862,   1351,   1672}, 0, { -1052,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   862,   1197,   1672}, 0, { -1052,   1498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   453,   1197,   1672}, 0, {  3034,   1498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   453,   1351,   1672}, 0, {  3034,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   453,   1351,   1672}, 0, { -1052,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   453,   1197,   2081}, 0, {  3034,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   453,   1351,   2081}, 0, {  3034,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   453,   1197,   1672}, 0, { -1052,   1498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1073,   2114,   -420}, 0, { -2586,   3032}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700BA78 - 0x0700BB58\nstatic const Vtx ttc_seg7_vertex_0700BA78[] = {\n    {{{ -1435,   2626,  -1506}, 0, { -5140,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1073,   2626,   -420}, 0, {  5078,   3032}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -711,   2626,   -782}, 0, {  5078,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1797,   2626,  -1144}, 0, { -5140,   3032}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -892,   2319,  -1325}, 0, {  2524,   -544}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1073,   2370,  -1144}, 0, {     0,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1073,   2319,  -1144}, 0, {     0,   -542}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -892,   2370,  -1325}, 0, {  2524,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -711,   2626,   -782}, 0, { -4630,  -1566}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1073,   2370,  -1144}, 0, {   480,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1435,   2370,  -1506}, 0, {  5590,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1073,   2114,  -1144}, 0, {   478,   3542}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -711,   2114,   -782}, 0, { -4630,   3542}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1435,   2626,  -1506}, 0, {  5590,  -1566}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700BB58 - 0x0700BC58\nstatic const Vtx ttc_seg7_vertex_0700BB58[] = {\n    {{{  -892,   2370,  -1325}, 0, { -2586,   -544}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -892,   2319,  -1325}, 0, { -2586,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1254,   2319,  -1687}, 0, {  2522,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1254,   2370,  -1687}, 0, {  2522,   -542}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -892,   2370,  -1325}, 0, {  3034,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1435,   2370,  -1506}, 0, { -2074,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1073,   2370,  -1144}, 0, {  3034,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1254,   2370,  -1687}, 0, { -2074,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1435,   2370,  -1506}, 0, { -2074,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1073,   2114,   -420}, 0, {  5078,   3032}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1073,   2626,   -420}, 0, {  5078,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1797,   2626,  -1144}, 0, { -5140,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1797,   2114,  -1144}, 0, { -5140,   3032}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1218,   1065,      0}, 0, { -8718,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -313,    911,   -904}, 0, {  4056,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -313,   1065,   -904}, 0, {  4056,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700BC58 - 0x0700BD48\nstatic const Vtx ttc_seg7_vertex_0700BC58[] = {\n    {{{ -1435,   2114,  -1506}, 0, { -4118,  -2586}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1073,   2114,   -420}, 0, {  6100,   2520}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -711,   2114,   -782}, 0, {  6100,  -2588}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1797,   2114,  -1144}, 0, { -4118,   2522}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -313,   1065,   -904}, 0, {  7122,   2010}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1175,   1372,  -1766}, 0, { -5044,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1175,   1065,  -1766}, 0, { -5044,   2010}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -313,   1372,   -904}, 0, {  7122,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -313,   1218,   -904}, 0, {  4056,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    12,   1372,  -1230}, 0, {  8656,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -313,   1372,   -904}, 0, {  4056,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    12,   1218,  -1230}, 0, {  8656,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    12,   1372,  -1230}, 0, {  6100,  -8208}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -849,   1372,  -2092}, 0, { -6066,  -8208}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1175,   1372,  -1766}, 0, { -6066,  -3610}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700BD48 - 0x0700BE28\nstatic const Vtx ttc_seg7_vertex_0700BD48[] = {\n    {{{ -1218,   1065,      0}, 0, { -8718,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1182,    911,    -35}, 0, { -8206,   1498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -313,    911,   -904}, 0, {  4056,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    12,   1372,  -1230}, 0, { -4628,   -544}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    12,   1218,  -1230}, 0, { -4628,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -849,   1372,  -2092}, 0, {  7538,   -544}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -849,   1218,  -2092}, 0, {  7538,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1175,   1065,  -1766}, 0, { -6066,  -3610}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2080,   1065,   -861}, 0, { -6066,   9164}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1218,   1065,      0}, 0, {  6100,   9164}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -313,   1065,   -904}, 0, {  6100,  -3610}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    12,   1372,  -1230}, 0, {  6100,  -8208}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1175,   1372,  -1766}, 0, { -6066,  -3610}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -313,   1372,   -904}, 0, {  6100,  -3610}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700BE28 - 0x0700BF18\nstatic const Vtx ttc_seg7_vertex_0700BE28[] = {\n    {{{ -1218,    -19,      0}, 0, {  -540,   4662}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1182,    -19,    -35}, 0, {     0,   4662}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1218,   1065,      0}, 0, {  -542,  -6164}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1182,    911,    -35}, 0, {     0,  -4630}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1935,    -19,   -716}, 0, { -4022,  10794}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1363,   -173,   -144}, 0, {  4056,  12328}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1363,    -19,   -144}, 0, {  4056,  10794}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1935,   -173,   -716}, 0, { -4022,  12328}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2080,   1065,   -861}, 0, { -6066,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2080,    -19,   -861}, 0, { -6066,  10794}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1218,    -19,      0}, 0, {  6100,  10794}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1218,   1065,      0}, 0, {  6100,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1412,   -962,   -859}, 0, { -2074,  -5142}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1699,  -2088,  -1243}, 0, {  2712,   6098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1699,   -962,  -1243}, 0, {  2712,  -5142}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700BF18 - 0x0700C008\nstatic const Vtx ttc_seg7_vertex_0700BF18[] = {\n    {{{ -1227,    287,    702}, 0, {  4056,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1734,    287,   1208}, 0, { -3096,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1444,    287,   1498}, 0, { -3096,   2010}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1412,   -962,   -859}, 0, { -2074,  -5142}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1412,  -2088,   -859}, 0, { -2074,   6098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1699,  -2088,  -1243}, 0, {  2712,   6098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -937,    287,    991}, 0, { -1052,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -937,    133,    991}, 0, { -1052,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1227,    133,    702}, 0, {  3034,   1498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1227,    287,    702}, 0, {  3034,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1444,    287,   1498}, 0, { -3096,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -937,    133,    991}, 0, {  4056,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -937,    287,    991}, 0, {  4056,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1444,    133,   1498}, 0, { -3096,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -937,    287,    991}, 0, {  4056,   2010}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700C008 - 0x0700C108\nstatic const Vtx ttc_seg7_vertex_0700C008[] = {\n    {{{  1037,  -2487,   1906}, 0, { -1052,   -544}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   820,  -2641,   1689}, 0, {  2012,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   820,  -2487,   1689}, 0, {  2012,   -544}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1227,    287,    702}, 0, { -2074,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1734,    133,   1208}, 0, {  5078,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1734,    287,   1208}, 0, {  5078,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1227,    133,    702}, 0, { -2074,   1498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1689,  -2487,    820}, 0, {  2012,   -542}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1906,  -2641,   1037}, 0, { -1052,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1906,  -2487,   1037}, 0, { -1052,   -544}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1689,  -2641,    820}, 0, {  2012,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   820,  -2487,   1689}, 0, {  6100,   -544}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1689,  -2641,    820}, 0, { -6162,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1689,  -2487,    820}, 0, { -6162,   -542}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   820,  -2641,   1689}, 0, {  6100,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1037,  -2641,   1906}, 0, { -1052,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700C108 - 0x0700C208\nstatic const Vtx ttc_seg7_vertex_0700C108[] = {\n    {{{   662,  -2487,    274}, 0, {  5956,   2704}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1689,  -2487,    820}, 0, { -5140,   6098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2081,  -2487,    862}, 0, { -8206,   8570}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   820,  -2487,   1689}, 0, { -5140,  -6164}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1906,  -2487,   1037}, 0, { -8206,   6098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   969,  -2487,    307}, 0, {  3554,   4640}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2081,  -2487,    307}, 0, { -4290,  12486}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   662,  -2487,      0}, 0, {  7890,   4640}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   969,  -2487,      0}, 0, {  5722,   6808}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   274,  -2487,    662}, 0, {  5956,  -2770}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   969,  -2487,      0}, 0, {  7270,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   969,  -2487,    307}, 0, {  4204,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   969,  -2641,      0}, 0, {  7270,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   969,  -2641,    307}, 0, {  4204,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2081,  -2641,    307}, 0, { -6890,   1498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2081,  -2487,    307}, 0, { -6890,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700C208 - 0x0700C308\nstatic const Vtx ttc_seg7_vertex_0700C208[] = {\n    {{{   274,  -2487,    662}, 0, {  5956,  -2770}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   862,  -2487,   2081}, 0, { -8206,  -8636}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   820,  -2487,   1689}, 0, { -5140,  -6164}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1037,  -2487,   1906}, 0, { -8206,  -6164}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,  -2487,   2081}, 0, { -2122, -14720}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   662,  -2487,    274}, 0, { -2262,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   662,  -2641,    274}, 0, { -2262,   1498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   274,  -2641,    662}, 0, {  3212,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   662,  -2487,      0}, 0, {  7270,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   969,  -2641,      0}, 0, {  4204,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   662,  -2641,      0}, 0, {  7270,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   969,  -2487,      0}, 0, {  4204,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   662,  -2487,      0}, 0, {  -916,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   662,  -2641,      0}, 0, {  -916,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   662,  -2641,    274}, 0, {  1818,   1498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   662,  -2487,    274}, 0, {  1818,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700C308 - 0x0700C408\nstatic const Vtx ttc_seg7_vertex_0700C308[] = {\n    {{{   274,  -2487,    662}, 0, {  5956,  -2770}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,  -2487,    662}, 0, {  7890,  -4706}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,  -2487,   2081}, 0, { -2122, -14720}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   662,  -2487,    274}, 0, { -2262,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   274,  -2641,    662}, 0, {  3212,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   274,  -2487,    662}, 0, {  3212,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -708,  -1043,  -1589}, 0, {  4056,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1106,   -992,  -1263}, 0, { -1052,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1070,  -1043,  -1227}, 0, { -1052,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   274,  -2487,    662}, 0, {  -904,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,  -2641,    662}, 0, {  1832,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,  -2487,    662}, 0, {  1832,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   274,  -2641,    662}, 0, {  -904,   1498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,  -2641,   2081}, 0, {  7860,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,  -2487,    662}, 0, { -6300,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,  -2641,    662}, 0, { -6300,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700C408 - 0x0700C508\nstatic const Vtx ttc_seg7_vertex_0700C408[] = {\n    {{{     0,  -2641,   2081}, 0, {  7860,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,  -2487,   2081}, 0, {  7860,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     0,  -2487,    662}, 0, { -6300,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1070,  -1043,  -1227}, 0, {  2524,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -744,   -992,   -901}, 0, { -2074,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -744,  -1043,   -901}, 0, { -2074,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1106,   -992,  -1263}, 0, {  3034,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1070,  -1453,  -1227}, 0, { -1052,   2520}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -708,  -1453,  -1589}, 0, {  4056,   2520}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -708,  -1043,  -1589}, 0, {  4056,  -1564}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -708,  -1043,  -1589}, 0, {  4056,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -744,   -992,  -1625}, 0, {  4056,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1106,   -992,  -1263}, 0, { -1052,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1287,  -1453,   -358}, 0, { -3608,   2522}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -744,   -992,   -901}, 0, {  4056,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1287,   -992,   -358}, 0, { -3608,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700C508 - 0x0700C5F8\nstatic const Vtx ttc_seg7_vertex_0700C508[] = {\n    {{{ -1287,  -1453,   -358}, 0, { -3608,   2522}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -744,  -1453,   -901}, 0, {  4056,   2520}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -744,   -992,   -901}, 0, {  4056,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -744,   -992,   -901}, 0, {  6100,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1106,   -992,  -1263}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1936,   -992,  -1006}, 0, { -3044,   7632}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1287,   -992,   -358}, 0, {  6100,   7632}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1070,  -1453,  -1227}, 0, { -1052,   2520}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -708,  -1043,  -1589}, 0, {  4056,  -1564}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1070,  -1043,  -1227}, 0, { -1052,  -1564}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1030,  -1453,  -1911}, 0, {  1960,   3542}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -708,  -1043,  -1589}, 0, { -2584,   -542}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -708,  -1453,  -1589}, 0, { -2584,   3544}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -744,   -992,  -1625}, 0, { -2074,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1030,   -992,  -1911}, 0, {  1960,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700C5F8 - 0x0700C6D8\nstatic const Vtx ttc_seg7_vertex_0700C5F8[] = {\n    {{{ -1936,   -992,  -1006}, 0, { -3044,   7632}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -744,   -992,  -1625}, 0, {   990,  -5142}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1030,   -992,  -1911}, 0, { -3044,  -5142}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1106,   -992,  -1263}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1646,  -1146,   -716}, 0, {  1960,   -544}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1935,  -1146,  -1006}, 0, {  6048,   -544}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1935,  -1453,  -1006}, 0, {  6048,   2520}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1287,  -1453,   -358}, 0, { -3096,   2520}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1287,   -992,   -358}, 0, { -3096,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1646,   -992,   -716}, 0, {  1960,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -62,  -5211,   1173}, 0, { -3096,   -544}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -62,  -5365,   2081}, 0, {  5966,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -62,  -5211,   2081}, 0, {  5966,   -542}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1613,  -1453,   -684}, 0, {  1502,   2520}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700C6D8 - 0x0700C7B8\nstatic const Vtx ttc_seg7_vertex_0700C6D8[] = {\n    {{{   830,  -4976,    830}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   830,  -5211,    830}, 0, {     0,   3338}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1472,  -4822,   1472}, 0, {  9032,   -544}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1472,  -5211,   1472}, 0, {  9032,   3338}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   486,  -5365,   1173}, 0, {  2774,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   830,  -5211,    830}, 0, { -2074,   -544}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   830,  -5365,    830}, 0, { -2074,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   486,  -5211,   1173}, 0, {  2774,   -544}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   486,  -5211,   1173}, 0, { -1960,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   486,  -5365,   1173}, 0, { -1960,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -62,  -5365,   1173}, 0, {  3514,   1498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -62,  -5211,   1173}, 0, { -3096,   -544}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -62,  -5365,   1173}, 0, { -3096,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -62,  -5365,   2081}, 0, {  5966,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700C7B8 - 0x0700C8B8\nstatic const Vtx ttc_seg7_vertex_0700C7B8[] = {\n    {{{   -62,  -5211,   2081}, 0, {  1518,  11008}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   862,  -5211,   2081}, 0, { -5006,   4482}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   486,  -5211,   1173}, 0, {  4056,    730}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -62,  -5211,   1173}, 0, {  7928,   4600}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1472,  -5211,   1472}, 0, { -5006,  -4120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   830,  -5211,    830}, 0, {  4056,  -4120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   486,  -5211,   1173}, 0, { -1960,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -62,  -5365,   1173}, 0, {  3514,   1498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -62,  -5211,   1173}, 0, {  3514,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1349,  -4822,   -960}, 0, { -4618,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1666,  -4822,  -1277}, 0, { -9084,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1666,  -4976,  -1277}, 0, { -9084,   1498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1472,  -4822,   1472}, 0, {  9032,   -544}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   468,  -4822,    468}, 0, { -5130,   -542}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   468,  -4976,    468}, 0, { -5130,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   830,  -4976,    830}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700C8B8 - 0x0700C9B8\nstatic const Vtx ttc_seg7_vertex_0700C8B8[] = {\n    {{{   662,  -4822,   -273}, 0, {  6090,   7448}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2081,  -4822,    862}, 0, {  4094, -10584}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2081,  -4822,   -861}, 0, { -8072,   1582}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   662,  -4822,    274}, 0, {  9960,   3576}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1666,  -4822,  -1277}, 0, { -8072,   7448}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1472,  -4822,   1472}, 0, { 12698, -10584}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   468,  -4822,    468}, 0, { 12698,   3576}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1349,  -4822,   -960}, 0, { -4618,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1666,  -4976,  -1277}, 0, { -9084,   1498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1349,  -4976,   -960}, 0, { -4618,   1498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   662,  -4822,   -273}, 0, {  4746,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1024,  -4822,   -635}, 0, {  -352,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1024,  -4976,   -635}, 0, {  -352,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1024,  -4822,   -635}, 0, {   990,   7448}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1155,  -4822,  -1154}, 0, { -3608,  10186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   830,  -4822,   -829}, 0, {   990,  10186}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700C9B8 - 0x0700CA98\nstatic const Vtx ttc_seg7_vertex_0700C9B8[] = {\n    {{{  1024,  -4822,   -635}, 0, {   990,   7448}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1349,  -4822,   -960}, 0, { -3608,   7448}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1155,  -4822,  -1154}, 0, { -3608,  10186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1349,  -4822,   -960}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1155,  -4976,  -1154}, 0, {  2706,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1155,  -4822,  -1154}, 0, {  2706,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1349,  -4976,   -960}, 0, {     0,   1498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   830,  -4822,   -829}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1024,  -4976,   -635}, 0, {  2706,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1024,  -4822,   -635}, 0, {  2706,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   830,  -4976,   -829}, 0, {     0,   1498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   662,  -4822,    274}, 0, {  -724,   -544}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   662,  -4976,    274}, 0, {  -724,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   468,  -4976,    468}, 0, {  2012,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700CA98 - 0x0700CB78\nstatic const Vtx ttc_seg7_vertex_0700CA98[] = {\n    {{{   662,  -4822,   -273}, 0, {  4746,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1024,  -4976,   -635}, 0, {  -352,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   662,  -4976,   -273}, 0, {  4746,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   830,  -4822,   -829}, 0, {   -22,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1155,  -4976,  -1154}, 0, { -4618,   1498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   830,  -4976,   -829}, 0, {   -22,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1155,  -4822,  -1154}, 0, { -4618,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   662,  -4822,   -273}, 0, { -2258,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   662,  -4976,    274}, 0, {  3216,   1498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   662,  -4822,    274}, 0, {  3216,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   662,  -4976,   -273}, 0, { -2258,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   662,  -4822,    274}, 0, {  -724,   -544}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   468,  -4976,    468}, 0, {  2012,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   468,  -4822,    468}, 0, {  2012,   -542}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700CB78 - 0x0700CC78\nstatic const Vtx ttc_seg7_vertex_0700CB78[] = {\n    {{{   395,  -4976,   -611}, 0, { -2074,   2126}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   612,  -4546,   -829}, 0, {     0,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   504,  -4546,   -720}, 0, { -1052,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   395,  -4407,   -611}, 0, { -1052,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   214,  -4407,  -1010}, 0, {  2008,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   105,  -4407,   -901}, 0, {  2008,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   504,  -4407,   -720}, 0, { -1052,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   214,  -4546,  -1010}, 0, {  2008,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   504,  -4407,   -720}, 0, { -1052,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   214,  -4407,  -1010}, 0, {  2008,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   323,  -4546,  -1118}, 0, {  2008,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   612,  -4546,   -829}, 0, { -1052,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   323,  -4684,  -1118}, 0, {  2008,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   612,  -4546,   -829}, 0, { -1052,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   612,  -4684,   -829}, 0, { -1052,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   612,  -4684,   -829}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700CC78 - 0x0700CD68\nstatic const Vtx ttc_seg7_vertex_0700CC78[] = {\n    {{{   395,  -4976,   -611}, 0, { -2074,   2126}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   721,  -4684,   -937}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   612,  -4684,   -829}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   721,  -4822,   -937}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1047,  -4822,  -1263}, 0, {  4056,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1047,  -4976,  -1263}, 0, {  4056,   2126}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   504,  -4546,   -720}, 0, { -1052,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   504,  -4407,   -720}, 0, { -1052,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   395,  -4407,   -611}, 0, { -2074,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   323,  -4684,  -1118}, 0, {  2008,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   323,  -4546,  -1118}, 0, {  2008,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   612,  -4546,   -829}, 0, { -1052,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   105,  -4976,   -901}, 0, {  3034,   2126}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   214,  -4546,  -1010}, 0, {  2012,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   323,  -4546,  -1118}, 0, {   990,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700CD68 - 0x0700CE58\nstatic const Vtx ttc_seg7_vertex_0700CD68[] = {\n    {{{   612,  -4684,   -829}, 0, { -1052,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   431,  -4684,  -1227}, 0, {  2008,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   323,  -4684,  -1118}, 0, {  2008,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   721,  -4684,   -937}, 0, { -1052,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   431,  -4822,  -1227}, 0, {  2008,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   721,  -4684,   -937}, 0, { -1052,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   721,  -4822,   -937}, 0, { -1052,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   431,  -4684,  -1227}, 0, {  2008,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   105,  -4976,   -901}, 0, {  3034,   2126}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   214,  -4407,  -1010}, 0, {  2012,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   214,  -4546,  -1010}, 0, {  2012,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   431,  -4684,  -1227}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   431,  -4822,  -1227}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   323,  -4684,  -1118}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   323,  -4546,  -1118}, 0, {   990,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700CE58 - 0x0700CF38\nstatic const Vtx ttc_seg7_vertex_0700CE58[] = {\n    {{{   105,  -4976,   -901}, 0, { -1052,   3148}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   395,  -4976,   -611}, 0, {  2008,   3148}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   395,  -4407,   -611}, 0, {  2008,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   105,  -4976,   -901}, 0, {  3034,   2126}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   431,  -4822,  -1227}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   757,  -4822,  -1553}, 0, { -3096,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   757,  -4976,  -1553}, 0, { -3096,   2126}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   105,  -4407,   -901}, 0, {  3034,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   214,  -4407,  -1010}, 0, {  2012,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   721,  -4822,   -937}, 0, { -1052,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   757,  -4822,  -1553}, 0, {  2008,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   431,  -4822,  -1227}, 0, {  2008,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1047,  -4822,  -1263}, 0, { -1052,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   105,  -4407,   -901}, 0, { -1052,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700CF38 - 0x0700D028\nstatic const Vtx ttc_seg7_vertex_0700CF38[] = {\n    {{{  -861,  -4003,   -803}, 0, { -1564,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1187,  -4156,  -1129}, 0, {  3034,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1187,  -4003,  -1129}, 0, {  3034,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   757,  -4976,  -1553}, 0, {  2008,   2126}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1047,  -4822,  -1263}, 0, { -1052,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1047,  -4976,  -1263}, 0, { -1052,   2126}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   757,  -4822,  -1553}, 0, {  2008,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -861,  -4156,   -803}, 0, {  3034,   1498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1150,  -4003,   -513}, 0, { -1052,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1150,  -4156,   -513}, 0, { -1052,   1498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -861,  -4003,   -803}, 0, {  3034,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1150,  -4003,   -513}, 0, { -1052,   -542}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -861,  -4003,   -803}, 0, {  3034,   -542}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1187,  -4003,  -1129}, 0, {  3034,  -5142}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1476,  -4003,   -839}, 0, { -1052,  -5142}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700D028 - 0x0700D0D8\nstatic const Vtx ttc_seg7_vertex_0700D028[] = {\n    {{{ -1476,  -4003,   -839}, 0, {  3034,   -542}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1187,  -4003,  -1129}, 0, { -1052,   -544}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1187,  -4156,  -1129}, 0, { -1052,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -861,  -4003,   -803}, 0, { -1564,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -861,  -4156,   -803}, 0, { -1564,   1498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1187,  -4156,  -1129}, 0, {  3034,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1150,  -4156,   -513}, 0, {  2514,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1150,  -4003,   -513}, 0, {  2514,   -542}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1476,  -4156,   -839}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1476,  -4003,   -839}, 0, {     0,   -542}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1476,  -4156,   -839}, 0, {  3034,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700D0D8 - 0x0700D1C8\nstatic const Vtx ttc_seg7_vertex_0700D0D8[] = {\n    {{{ -1218,  -3619,    590}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1116,  -3619,    692}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1116,  -3762,    692}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -575,  -4290,   -328}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -676,  -4290,   -227}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -575,  -4433,   -328}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -676,  -4433,   -227}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -966,  -4290,   -517}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -864,  -4433,   -618}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -966,  -4433,   -517}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -864,  -4290,   -618}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1406,  -3619,    981}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1507,  -3619,    880}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1406,  -3762,    981}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1507,  -3762,    880}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700D1C8 - 0x0700D2B8\nstatic const Vtx ttc_seg7_vertex_0700D1C8[] = {\n    {{{ -1218,  -2820,   1155}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1116,  -2963,   1256}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1218,  -2963,   1155}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1218,  -3619,    590}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1116,  -3762,    692}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1218,  -3762,    590}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1225,  -3219,    974}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1124,  -3219,    873}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1225,  -3363,    974}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1124,  -3363,    873}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -834,  -3219,   1162}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -935,  -3219,   1264}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -935,  -3363,   1264}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -834,  -3363,   1162}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1116,  -2820,   1256}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700D2B8 - 0x0700D3A8\nstatic const Vtx ttc_seg7_vertex_0700D2B8[] = {\n    {{{ -1666,   2140,    290}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1666,   2140,    433}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1666,   1997,    433}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1406,  -2820,   1546}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1507,  -2820,   1445}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1406,  -2963,   1546}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1507,  -2963,   1445}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2085,   1838,   -375}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2085,   1838,   -518}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2085,   1695,   -375}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2085,   1695,   -518}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1676,   1838,   -518}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1676,   1838,   -375}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1676,   1695,   -375}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1676,   1695,   -518}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700D3A8 - 0x0700D498\nstatic const Vtx ttc_seg7_vertex_0700D3A8[] = {\n    {{{   968,   5634,   -549}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   867,   5491,   -650}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   968,   5491,   -549}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1666,   2140,    290}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1666,   1997,    433}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1666,   1997,    290}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2075,   2140,    433}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2075,   2140,    290}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2075,   1997,    433}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2075,   1997,    290}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   686,   5839,   -831}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   585,   5839,   -932}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   585,   5695,   -932}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   686,   5695,   -831}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   867,   5634,   -650}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700D498 - 0x0700D588\nstatic const Vtx ttc_seg7_vertex_0700D498[] = {\n    {{{   393,  -4510,   2117}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   454,  -4571,   2117}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   454,  -4510,   2117}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   874,   5839,  -1222}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   976,   5695,  -1121}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   874,   5695,  -1222}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   976,   5839,  -1121}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1157,   5634,   -940}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1258,   5491,   -838}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1157,   5491,   -940}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1258,   5634,   -838}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   454,  -4510,   1800}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   454,  -4571,   1800}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   393,  -4571,   1800}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   393,  -4510,   1800}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700D588 - 0x0700D678\nstatic const Vtx ttc_seg7_vertex_0700D588[] = {\n    {{{   454,  -3895,   1800}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   454,  -3957,   1800}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   393,  -3957,   1800}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   393,  -4510,   2117}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   393,  -4571,   2117}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   454,  -4571,   2117}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1193,  -4817,   1816}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1193,  -4878,   1816}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1236,  -4878,   1772}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1236,  -4817,   1772}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1012,  -4817,   1548}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1012,  -4878,   1548}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   968,  -4878,   1591}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   968,  -4817,   1591}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   393,  -3895,   1800}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700D678 - 0x0700D768\nstatic const Vtx ttc_seg7_vertex_0700D678[] = {\n    {{{   454,  -3281,   1800}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   454,  -3342,   1800}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   393,  -3342,   1800}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   393,  -3895,   2117}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   393,  -3957,   2117}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   454,  -3957,   2117}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   454,  -3895,   2117}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1193,  -4203,   1816}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1193,  -4264,   1816}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1236,  -4264,   1772}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1236,  -4203,   1772}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1012,  -4203,   1548}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1012,  -4264,   1548}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   968,  -4264,   1591}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   968,  -4203,   1591}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700D768 - 0x0700D858\nstatic const Vtx ttc_seg7_vertex_0700D768[] = {\n    {{{  1012,  -3588,   1548}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1012,  -3650,   1548}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   968,  -3650,   1591}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   454,  -3281,   1800}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   393,  -3342,   1800}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   393,  -3281,   1800}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   393,  -3281,   2117}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   454,  -3342,   2117}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   454,  -3281,   2117}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   393,  -3342,   2117}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1193,  -3588,   1816}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1193,  -3650,   1816}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1236,  -3650,   1772}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1236,  -3588,   1772}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   968,  -3588,   1591}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700D858 - 0x0700D948\nstatic const Vtx ttc_seg7_vertex_0700D858[] = {\n    {{{  1012,  -2974,   1548}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1012,  -3035,   1548}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   968,  -3035,   1591}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1491,  -3588,   1069}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1491,  -3650,   1069}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1448,  -3650,   1112}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1448,  -3588,   1112}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1672,  -3588,   1337}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1716,  -3650,   1293}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1716,  -3588,   1293}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1672,  -3650,   1337}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1193,  -2974,   1816}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1193,  -3035,   1816}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1236,  -3035,   1772}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1236,  -2974,   1772}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700D948 - 0x0700DA38\nstatic const Vtx ttc_seg7_vertex_0700D948[] = {\n    {{{ -1128,   4275,    638}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1171,   4214,    681}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1171,   4275,    681}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1012,  -2974,   1548}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   968,  -3035,   1591}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   968,  -2974,   1591}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1494,  -2667,   1066}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1450,  -2728,   1109}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1450,  -2667,   1109}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1494,  -2728,   1066}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1675,  -2667,   1334}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1718,  -2728,   1290}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1718,  -2667,   1290}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1675,  -2728,   1334}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1128,   4214,    638}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700DA38 - 0x0700DB28\nstatic const Vtx ttc_seg7_vertex_0700DA38[] = {\n    {{{  1249,   3866,   -634}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1249,   3804,   -634}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1249,   3804,   -695}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -853,   4378,    913}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -853,   4316,    913}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -896,   4316,    956}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -896,   4378,    956}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -947,   4275,    906}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -904,   4214,    862}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -904,   4275,    862}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -947,   4214,    906}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -672,   4378,   1181}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -672,   4316,   1181}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -628,   4316,   1137}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -628,   4378,   1137}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700DB28 - 0x0700DC18\nstatic const Vtx ttc_seg7_vertex_0700DB28[] = {\n    {{{  1618,   3866,   -327}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1618,   3804,   -327}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1618,   3804,   -388}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1249,   3866,   -634}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1249,   3804,   -695}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1249,   3866,   -695}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   932,   3866,   -695}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   932,   3804,   -695}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   932,   3804,   -634}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   932,   3866,   -634}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1301,   3866,   -388}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1301,   3804,   -388}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1301,   3804,   -327}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1301,   3866,   -327}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1618,   3866,   -388}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700DC18 - 0x0700DC98\nstatic const Vtx ttc_seg7_vertex_0700DC18[] = {\n    {{{  1987,   3866,    -19}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1987,   3804,    -19}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1987,   3804,    -81}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1987,   3866,    -81}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1669,   3866,    -81}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1669,   3804,    -81}, 0, {     0,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1669,   3804,    -19}, 0, {   990,   2012}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1669,   3866,    -19}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700DC98 - 0x0700E530\nstatic const Gfx ttc_seg7_dl_0700DC98[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttc_seg7_vertex_0700B238, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  0,  5,  6, 0x0),\n    gsSP2Triangles( 0,  7,  5, 0x0,  0,  6,  3, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700B328, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700B408, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700B4E8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700B5D8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700B6B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700B7A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700B898, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700B988, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700BA78, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles( 8, 12, 11, 0x0, 10, 13,  8, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700BB58, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700BC58, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700BD48, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700BE28, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9,  4, 0x0,  4, 10, 11, 0x0),\n    gsSP2Triangles( 4, 11,  8, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700BF18, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700C008, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700C108, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  5,  0,  2, 0x0),\n    gsSP2Triangles( 5,  2,  6, 0x0,  7,  5,  8, 0x0),\n    gsSP2Triangles( 7,  0,  5, 0x0,  0,  9,  3, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSP2Triangles(11, 14, 13, 0x0, 11, 15, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700C208, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700C308, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700C408, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700C508, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle(10, 14, 13, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700C5F8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 4,  8,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles( 4, 13,  7, 0x0,  4,  6, 13, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700C6D8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700C7B8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700C8B8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  3,  5,  1, 0x0),\n    gsSP2Triangles( 3,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700C9B8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700CA98, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700CB78, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  2, 0x0),\n    gsSP2Triangles( 7,  9,  8, 0x0,  2, 10,  7, 0x0),\n    gsSP2Triangles( 2, 11, 10, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle( 0, 15,  1, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700CC78, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  0,  5,  4, 0x0),\n    gsSP2Triangles( 0,  6,  7, 0x0,  0,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700CD68, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11, 12, 0x0),\n    gsSP2Triangles( 8, 13, 11, 0x0,  8, 14, 13, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700CE58, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  3,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 12, 10, 0x0),\n    gsSP1Triangle( 0,  2, 13, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700CF38, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700D028, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP1Triangle( 0,  2, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700E530 - 0x0700E878\nstatic const Gfx ttc_seg7_dl_0700E530[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttc_seg7_vertex_0700D0D8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700D1C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700D2B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700D3A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700D498, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700D588, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700D678, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700D768, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700D858, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700D948, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700DA38, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700DB28, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700DC18, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700E878 - 0x0700E950\nconst Gfx ttc_seg7_dl_0700E878[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(200, 255, 255, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttc_seg7_dl_0700DC98),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttc_seg7_dl_0700E530),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttc/areas/1/collision.inc.c",
    "content": "// 0x07012330 - 0x07014F6E\nconst Collision ttc_seg7_collision_level[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x2DA),\n    COL_VERTEX(2253, -8191, -2252),\n    COL_VERTEX(-2252, -8191, 2253),\n    COL_VERTEX(2253, -8191, 2253),\n    COL_VERTEX(-2252, -8191, -2252),\n    COL_VERTEX(1024, 5089, 424),\n    COL_VERTEX(1536, 5089, 424),\n    COL_VERTEX(1536, 5396, -423),\n    COL_VERTEX(1024, 5396, -423),\n    COL_VERTEX(1386, 5089, 786),\n    COL_VERTEX(1386, 5396, -785),\n    COL_VERTEX(424, 4782, 1024),\n    COL_VERTEX(786, 4782, 1386),\n    COL_VERTEX(424, 4782, 1536),\n    COL_VERTEX(786, 6011, -1385),\n    COL_VERTEX(424, 6011, -1023),\n    COL_VERTEX(364, 3860, -175),\n    COL_VERTEX(876, 3860, -175),\n    COL_VERTEX(364, 3707, -1023),\n    COL_VERTEX(876, 3860, -1023),\n    COL_VERTEX(-423, 4475, 1024),\n    COL_VERTEX(-785, 4475, 1386),\n    COL_VERTEX(726, 3860, -1385),\n    COL_VERTEX(364, 3860, -1023),\n    COL_VERTEX(-423, 6011, -1535),\n    COL_VERTEX(-423, 6011, -1023),\n    COL_VERTEX(-423, 3860, -1535),\n    COL_VERTEX(-423, 3860, -1023),\n    COL_VERTEX(-1385, 4014, 786),\n    COL_VERTEX(-1535, 4168, 424),\n    COL_VERTEX(-1023, 3860, -423),\n    COL_VERTEX(-1385, 3860, -785),\n    COL_VERTEX(1386, 5243, -785),\n    COL_VERTEX(424, 6011, -1535),\n    COL_VERTEX(726, 3707, -1385),\n    COL_VERTEX(-423, 4475, 1536),\n    COL_VERTEX(-423, 3707, -1023),\n    COL_VERTEX(-1023, 6011, -423),\n    COL_VERTEX(364, 3860, -1535),\n    COL_VERTEX(-785, 6011, -1385),\n    COL_VERTEX(-1385, 5857, -785),\n    COL_VERTEX(-1023, 4168, 424),\n    COL_VERTEX(-785, 3860, -1385),\n    COL_VERTEX(-1535, 3860, -423),\n    COL_VERTEX(1024, 5243, -423),\n    COL_VERTEX(1024, 4936, 424),\n    COL_VERTEX(424, 4628, 1024),\n    COL_VERTEX(424, 5857, -1023),\n    COL_VERTEX(-423, 5857, -1023),\n    COL_VERTEX(-423, 4321, 1024),\n    COL_VERTEX(-1023, 5857, -423),\n    COL_VERTEX(-1023, 3707, -423),\n    COL_VERTEX(-1023, 4014, 424),\n    COL_VERTEX(1536, 3072, 1407),\n    COL_VERTEX(1024, 3072, 1407),\n    COL_VERTEX(862, 2919, 2081),\n    COL_VERTEX(760, 2919, 1672),\n    COL_VERTEX(760, 3072, 1672),\n    COL_VERTEX(-547, 3072, 1672),\n    COL_VERTEX(-1568, 3072, 650),\n    COL_VERTEX(-861, 2919, 2081),\n    COL_VERTEX(-2080, 2919, 862),\n    COL_VERTEX(-1568, 3072, 548),\n    COL_VERTEX(-1660, 2678, -247),\n    COL_VERTEX(-1660, 2678, 162),\n    COL_VERTEX(-2070, 2678, 162),\n    COL_VERTEX(-2070, 2678, -247),\n    COL_VERTEX(-1660, 2524, 162),\n    COL_VERTEX(1074, -19, 145),\n    COL_VERTEX(-349, -19, 1569),\n    COL_VERTEX(1936, -173, 1007),\n    COL_VERTEX(-649, -19, 1569),\n    COL_VERTEX(-349, -173, 1569),\n    COL_VERTEX(862, -173, 2081),\n    COL_VERTEX(-861, -173, 2081),\n    COL_VERTEX(1074, -19, -144),\n    COL_VERTEX(1936, -19, -1006),\n    COL_VERTEX(-861, -19, -2080),\n    COL_VERTEX(145, -19, -1073),\n    COL_VERTEX(-144, -19, -1073),\n    COL_VERTEX(-289, -19, -1218),\n    COL_VERTEX(-1196, -19, -21),\n    COL_VERTEX(-1341, -19, -166),\n    COL_VERTEX(-1006, -19, -1935),\n    COL_VERTEX(-144, -173, -1073),\n    COL_VERTEX(-955, -71, -1030),\n    COL_VERTEX(-955, -71, -1320),\n    COL_VERTEX(-1244, -71, -740),\n    COL_VERTEX(-810, -71, -885),\n    COL_VERTEX(-665, -71, -1030),\n    COL_VERTEX(-955, -224, -1320),\n    COL_VERTEX(-1244, -224, -740),\n    COL_VERTEX(-1244, -71, -1030),\n    COL_VERTEX(-1484, -71, -980),\n    COL_VERTEX(-1339, -71, -1125),\n    COL_VERTEX(-1433, -19, -1219),\n    COL_VERTEX(-1914, -19, -738),\n    COL_VERTEX(-1578, -19, -1363),\n    COL_VERTEX(-1433, -173, -1219),\n    COL_VERTEX(-1671, 1567, 162),\n    COL_VERTEX(-1671, 1567, -247),\n    COL_VERTEX(-2080, 1567, 162),\n    COL_VERTEX(-2080, 1567, -247),\n    COL_VERTEX(-1671, 1413, 162),\n    COL_VERTEX(1621, -2088, -58),\n    COL_VERTEX(2081, -2088, -427),\n    COL_VERTEX(1821, -2088, -687),\n    COL_VERTEX(1495, -2088, -361),\n    COL_VERTEX(2081, -2242, -427),\n    COL_VERTEX(1621, -2242, -236),\n    COL_VERTEX(1621, -2088, -236),\n    COL_VERTEX(705, -1453, -1513),\n    COL_VERTEX(850, -1453, -1658),\n    COL_VERTEX(428, -1453, -2080),\n    COL_VERTEX(343, -1453, -1876),\n    COL_VERTEX(-539, -1453, -1876),\n    COL_VERTEX(705, -1607, -1513),\n    COL_VERTEX(-539, -1607, -2080),\n    COL_VERTEX(-861, -1453, -2080),\n    COL_VERTEX(-539, -1453, -1758),\n    COL_VERTEX(-581, 1054, -911),\n    COL_VERTEX(-689, 1054, -1019),\n    COL_VERTEX(-798, 1054, -911),\n    COL_VERTEX(-689, 1054, -802),\n    COL_VERTEX(-581, 901, -911),\n    COL_VERTEX(-1349, 901, -1317),\n    COL_VERTEX(-1240, 901, -1208),\n    COL_VERTEX(-1349, 901, -1099),\n    COL_VERTEX(-1457, 901, -1208),\n    COL_VERTEX(-1349, 747, -1099),\n    COL_VERTEX(-1240, 747, -1208),\n    COL_VERTEX(938, -3714, -1150),\n    COL_VERTEX(1046, -3714, -1041),\n    COL_VERTEX(938, -3714, -932),\n    COL_VERTEX(829, -3714, -1041),\n    COL_VERTEX(1046, -3867, -1041),\n    COL_VERTEX(-790, -839, 1573),\n    COL_VERTEX(-1080, -839, 1863),\n    COL_VERTEX(-1188, -941, 1175),\n    COL_VERTEX(-1080, -992, 1283),\n    COL_VERTEX(-1478, -941, 1464),\n    COL_VERTEX(-1333, -1095, 1030),\n    COL_VERTEX(-1188, -1095, 1175),\n    COL_VERTEX(-1333, -941, 1030),\n    COL_VERTEX(-1623, -1095, 1320),\n    COL_VERTEX(-1671, -1146, -691),\n    COL_VERTEX(-1671, -992, -656),\n    COL_VERTEX(-1671, -992, -691),\n    COL_VERTEX(-2080, -992, -861),\n    COL_VERTEX(-1646, -992, -716),\n    COL_VERTEX(-1671, -1607, 692),\n    COL_VERTEX(-1671, -1453, 657),\n    COL_VERTEX(-1671, -1453, 692),\n    COL_VERTEX(-2080, -1453, 862),\n    COL_VERTEX(-1935, -1146, -1006),\n    COL_VERTEX(-1646, -1146, -716),\n    COL_VERTEX(-2080, -1146, -861),\n    COL_VERTEX(-2080, -1146, -656),\n    COL_VERTEX(-1646, -1453, 717),\n    COL_VERTEX(-2080, -1607, 657),\n    COL_VERTEX(-1671, -1607, 657),\n    COL_VERTEX(-1935, -1453, 1007),\n    COL_VERTEX(-1935, -1607, 1007),\n    COL_VERTEX(-2080, -1607, 862),\n    COL_VERTEX(-162, -2692, 2081),\n    COL_VERTEX(-162, -2692, 1682),\n    COL_VERTEX(-162, -2846, 2081),\n    COL_VERTEX(-696, -2692, 1682),\n    COL_VERTEX(-861, -2692, 2081),\n    COL_VERTEX(-1211, -2692, 1732),\n    COL_VERTEX(-928, -2692, 1449),\n    COL_VERTEX(-928, -2846, 1449),\n    COL_VERTEX(-1593, -3491, 1349),\n    COL_VERTEX(-1833, -3491, 615),\n    COL_VERTEX(-1346, -3670, 1102),\n    COL_VERTEX(-1346, -3491, 1102),\n    COL_VERTEX(-1833, -3670, 615),\n    COL_VERTEX(-2080, -3516, 862),\n    COL_VERTEX(-1876, -3670, 657),\n    COL_VERTEX(-1876, -3516, 657),\n    COL_VERTEX(-2080, -3516, 572),\n    COL_VERTEX(-1876, -3516, 572),\n    COL_VERTEX(-2080, -4003, -571),\n    COL_VERTEX(-1876, -3670, 572),\n    COL_VERTEX(-1876, -4156, -571),\n    COL_VERTEX(-1876, -4003, -571),\n    COL_VERTEX(-2080, -4003, -861),\n    COL_VERTEX(-1876, -4156, -656),\n    COL_VERTEX(-898, -4003, -1634),\n    COL_VERTEX(-1103, -4003, -1839),\n    COL_VERTEX(-1363, 1075, 145),\n    COL_VERTEX(-1363, 1228, 145),\n    COL_VERTEX(-1478, 1228, 378),\n    COL_VERTEX(-1647, 1075, -72),\n    COL_VERTEX(-1824, 1075, 285),\n    COL_VERTEX(-1495, 1075, 637),\n    COL_VERTEX(-1411, 1228, 883),\n    COL_VERTEX(-1722, 1228, 1062),\n    COL_VERTEX(-1850, 1075, 684),\n    COL_VERTEX(-1722, 1075, 1062),\n    COL_VERTEX(-1478, 1075, 378),\n    COL_VERTEX(-1495, 1228, 637),\n    COL_VERTEX(395, -4407, -611),\n    COL_VERTEX(876, 3707, -175),\n    COL_VERTEX(364, 3707, -175),\n    COL_VERTEX(876, 3707, -1023),\n    COL_VERTEX(-1385, 6011, -785),\n    COL_VERTEX(-785, 4321, 1386),\n    COL_VERTEX(-1385, 4168, 786),\n    COL_VERTEX(1536, 4936, 424),\n    COL_VERTEX(1536, 5243, -423),\n    COL_VERTEX(1386, 4936, 786),\n    COL_VERTEX(786, 4628, 1386),\n    COL_VERTEX(786, 5857, -1385),\n    COL_VERTEX(424, 5857, -1535),\n    COL_VERTEX(424, 4628, 1536),\n    COL_VERTEX(-423, 5857, -1535),\n    COL_VERTEX(364, 3707, -1535),\n    COL_VERTEX(-423, 4321, 1536),\n    COL_VERTEX(-785, 5857, -1385),\n    COL_VERTEX(-423, 3707, -1535),\n    COL_VERTEX(-785, 3707, -1385),\n    COL_VERTEX(-1535, 4014, 424),\n    COL_VERTEX(-1385, 3707, -785),\n    COL_VERTEX(-1535, 3707, -423),\n    COL_VERTEX(1024, 2919, 1407),\n    COL_VERTEX(1536, 2919, 1407),\n    COL_VERTEX(862, 3072, 2081),\n    COL_VERTEX(-547, 2919, 1672),\n    COL_VERTEX(-861, 3072, 2081),\n    COL_VERTEX(-2080, 3072, 862),\n    COL_VERTEX(-1568, 2919, 650),\n    COL_VERTEX(-1568, 2919, 548),\n    COL_VERTEX(-2080, 3072, 548),\n    COL_VERTEX(-2080, 2919, 548),\n    COL_VERTEX(-1660, 2524, -247),\n    COL_VERTEX(-2070, 2524, -247),\n    COL_VERTEX(-2070, 2524, 162),\n    COL_VERTEX(1074, -173, 145),\n    COL_VERTEX(1936, -19, 1007),\n    COL_VERTEX(862, -19, 2081),\n    COL_VERTEX(-861, -19, 2081),\n    COL_VERTEX(-649, -173, 1569),\n    COL_VERTEX(-1011, -19, 1931),\n    COL_VERTEX(-1011, -173, 1931),\n    COL_VERTEX(2081, -19, 862),\n    COL_VERTEX(2081, -19, -861),\n    COL_VERTEX(1074, -173, -144),\n    COL_VERTEX(2081, -173, -861),\n    COL_VERTEX(2081, -173, 862),\n    COL_VERTEX(1936, -173, -1006),\n    COL_VERTEX(1007, -19, -1935),\n    COL_VERTEX(1007, -173, -1935),\n    COL_VERTEX(145, -173, -1073),\n    COL_VERTEX(862, -19, -2080),\n    COL_VERTEX(-1341, -173, -166),\n    COL_VERTEX(-1196, -173, -21),\n    COL_VERTEX(-289, -173, -1218),\n    COL_VERTEX(-1006, -173, -1935),\n    COL_VERTEX(862, -173, -2080),\n    COL_VERTEX(-861, -173, -2080),\n    COL_VERTEX(-955, -224, -1030),\n    COL_VERTEX(-810, -224, -885),\n    COL_VERTEX(-665, -224, -1030),\n    COL_VERTEX(-1244, -224, -1030),\n    COL_VERTEX(-1339, -224, -1125),\n    COL_VERTEX(-1484, -224, -980),\n    COL_VERTEX(-1578, -173, -1363),\n    COL_VERTEX(-2059, -173, -883),\n    COL_VERTEX(-2059, -19, -883),\n    COL_VERTEX(-1914, -173, -738),\n    COL_VERTEX(-1671, 1413, -247),\n    COL_VERTEX(-2080, 1413, -247),\n    COL_VERTEX(-2080, 1413, 162),\n    COL_VERTEX(2081, -2088, -58),\n    COL_VERTEX(2081, -2242, -58),\n    COL_VERTEX(1621, -2242, -58),\n    COL_VERTEX(1495, -2242, -361),\n    COL_VERTEX(1821, -2242, -687),\n    COL_VERTEX(850, -1607, -1658),\n    COL_VERTEX(428, -1607, -2080),\n    COL_VERTEX(-539, -1453, -2080),\n    COL_VERTEX(343, -1607, -1876),\n    COL_VERTEX(-539, -1607, -1876),\n    COL_VERTEX(-539, -1607, -1758),\n    COL_VERTEX(-861, -1607, -2080),\n    COL_VERTEX(-689, 901, -1019),\n    COL_VERTEX(-798, 901, -911),\n    COL_VERTEX(-689, 901, -802),\n    COL_VERTEX(-1349, 747, -1317),\n    COL_VERTEX(-1457, 747, -1208),\n    COL_VERTEX(938, -3867, -1150),\n    COL_VERTEX(829, -3867, -1041),\n    COL_VERTEX(938, -3867, -932),\n    COL_VERTEX(-1080, -839, 1283),\n    COL_VERTEX(-790, -992, 1573),\n    COL_VERTEX(-1080, -992, 1863),\n    COL_VERTEX(-1369, -839, 1573),\n    COL_VERTEX(-1369, -992, 1573),\n    COL_VERTEX(-1478, -1095, 1464),\n    COL_VERTEX(-1623, -941, 1320),\n    COL_VERTEX(-1671, -1146, -656),\n    COL_VERTEX(-1936, -992, -1006),\n    COL_VERTEX(-2080, -992, -656),\n    COL_VERTEX(-1935, -992, -1006),\n    COL_VERTEX(-2080, -1453, 657),\n    COL_VERTEX(-1646, -1607, 717),\n    COL_VERTEX(-162, -2846, 1682),\n    COL_VERTEX(-696, -2846, 1682),\n    COL_VERTEX(-861, -2846, 2081),\n    COL_VERTEX(-1211, -2846, 1732),\n    COL_VERTEX(-1593, -3670, 1349),\n    COL_VERTEX(-2080, -3491, 862),\n    COL_VERTEX(-2080, -3670, 862),\n    COL_VERTEX(-2080, -3670, 572),\n    COL_VERTEX(-2080, -4156, -571),\n    COL_VERTEX(-1876, -4003, -656),\n    COL_VERTEX(-2080, -4156, -861),\n    COL_VERTEX(-1647, 1228, -72),\n    COL_VERTEX(-1824, 1228, 285),\n    COL_VERTEX(-1411, 1075, 883),\n    COL_VERTEX(-1850, 1228, 684),\n    COL_VERTEX(171, -4407, -1053),\n    COL_VERTEX(62, -4407, -944),\n    COL_VERTEX(504, -4407, -720),\n    COL_VERTEX(-204, 4475, -511),\n    COL_VERTEX(512, 4475, 205),\n    COL_VERTEX(512, 4475, -204),\n    COL_VERTEX(205, 4475, 512),\n    COL_VERTEX(205, 4475, -511),\n    COL_VERTEX(-511, 4475, 205),\n    COL_VERTEX(-204, 4475, 512),\n    COL_VERTEX(-511, 4475, -204),\n    COL_VERTEX(0, 6093, 123),\n    COL_VERTEX(106, 5970, 61),\n    COL_VERTEX(106, 6093, 61),\n    COL_VERTEX(106, 5970, -60),\n    COL_VERTEX(106, 6093, -60),\n    COL_VERTEX(0, 5970, -122),\n    COL_VERTEX(0, 6093, -122),\n    COL_VERTEX(0, 5970, 123),\n    COL_VERTEX(0, 6216, 0),\n    COL_VERTEX(-105, 6093, 61),\n    COL_VERTEX(-105, 6093, -60),\n    COL_VERTEX(-105, 5970, -60),\n    COL_VERTEX(0, 5847, 0),\n    COL_VERTEX(0, -2283, 0),\n    COL_VERTEX(-105, -2405, 61),\n    COL_VERTEX(-105, -2405, -60),\n    COL_VERTEX(0, -2405, 123),\n    COL_VERTEX(106, -2405, 61),\n    COL_VERTEX(106, -2405, -60),\n    COL_VERTEX(0, -2405, -122),\n    COL_VERTEX(0, -2528, -122),\n    COL_VERTEX(0, -2651, 0),\n    COL_VERTEX(-105, 5970, 61),\n    COL_VERTEX(106, -2528, 61),\n    COL_VERTEX(106, -2528, -60),\n    COL_VERTEX(0, -2528, 123),\n    COL_VERTEX(-105, -2528, 61),\n    COL_VERTEX(-105, -2528, -60),\n    COL_VERTEX(2498, 7051, 2208),\n    COL_VERTEX(2208, 6897, 1919),\n    COL_VERTEX(2208, 7051, 1919),\n    COL_VERTEX(1919, 7051, 2208),\n    COL_VERTEX(2498, 6897, 2208),\n    COL_VERTEX(2208, 7051, 2498),\n    COL_VERTEX(2208, 6897, 2498),\n    COL_VERTEX(1919, 6897, 2208),\n    COL_VERTEX(1671, 3860, 749),\n    COL_VERTEX(2081, 3707, 749),\n    COL_VERTEX(2081, 3860, 749),\n    COL_VERTEX(2081, 3707, 339),\n    COL_VERTEX(2081, 3860, 339),\n    COL_VERTEX(1671, 3707, 339),\n    COL_VERTEX(1671, 3860, 339),\n    COL_VERTEX(1671, 3707, 749),\n    COL_VERTEX(1270, 2939, 798),\n    COL_VERTEX(1270, 3159, 798),\n    COL_VERTEX(1270, 3159, 839),\n    COL_VERTEX(926, 3518, 337),\n    COL_VERTEX(926, 3298, 337),\n    COL_VERTEX(926, 3518, 378),\n    COL_VERTEX(999, 2939, 798),\n    COL_VERTEX(655, 3298, 337),\n    COL_VERTEX(512, 4321, -204),\n    COL_VERTEX(512, 4321, 205),\n    COL_VERTEX(205, 4321, -511),\n    COL_VERTEX(205, 4321, 512),\n    COL_VERTEX(-511, 4321, 205),\n    COL_VERTEX(-204, 4321, -511),\n    COL_VERTEX(-204, 4321, 512),\n    COL_VERTEX(-511, 4321, -204),\n    COL_VERTEX(611, 3318, 2081),\n    COL_VERTEX(611, 3277, 2081),\n    COL_VERTEX(611, 3277, 1672),\n    COL_VERTEX(611, 3318, 1713),\n    COL_VERTEX(611, 3943, 1672),\n    COL_VERTEX(-617, 3943, 2081),\n    COL_VERTEX(-617, 3943, 1672),\n    COL_VERTEX(-576, 3318, 1713),\n    COL_VERTEX(-576, 3318, 2081),\n    COL_VERTEX(-576, 3902, 1713),\n    COL_VERTEX(862, 1351, 1672),\n    COL_VERTEX(862, 1351, 2081),\n    COL_VERTEX(453, 1351, 1672),\n    COL_VERTEX(862, 1197, 2081),\n    COL_VERTEX(-711, 2626, -782),\n    COL_VERTEX(-1435, 2063, -1506),\n    COL_VERTEX(-1435, 2114, -1506),\n    COL_VERTEX(-711, 2063, -782),\n    COL_VERTEX(-1435, 2626, -1506),\n    COL_VERTEX(-1073, 2063, -420),\n    COL_VERTEX(-1435, 2370, -1506),\n    COL_VERTEX(-769, 2585, -782),\n    COL_VERTEX(-892, 2370, -1325),\n    COL_VERTEX(-892, 2319, -1325),\n    COL_VERTEX(-1073, 2114, -1144),\n    COL_VERTEX(-1073, 2585, -478),\n    COL_VERTEX(-1102, 2319, -1115),\n    COL_VERTEX(-1464, 2319, -1477),\n    COL_VERTEX(-1102, 2114, -1115),\n    COL_VERTEX(-1768, 2114, -1173),\n    COL_VERTEX(-1073, 2114, -478),\n    COL_VERTEX(1663, -962, -1279),\n    COL_VERTEX(1376, -2088, -895),\n    COL_VERTEX(1412, -962, -859),\n    COL_VERTEX(1663, -2088, -1279),\n    COL_VERTEX(-1444, 287, 1498),\n    COL_VERTEX(-1227, 287, 702),\n    COL_VERTEX(-937, 287, 991),\n    COL_VERTEX(-937, 133, 991),\n    COL_VERTEX(1689, -2487, 820),\n    COL_VERTEX(820, -2487, 1689),\n    COL_VERTEX(662, -2487, 274),\n    COL_VERTEX(969, -2487, 307),\n    COL_VERTEX(2081, -2641, 862),\n    COL_VERTEX(1689, -2641, 820),\n    COL_VERTEX(662, -2487, 0),\n    COL_VERTEX(969, -2487, 0),\n    COL_VERTEX(2081, -2641, 307),\n    COL_VERTEX(969, -2641, 0),\n    COL_VERTEX(862, -2487, 2081),\n    COL_VERTEX(1037, -2487, 1906),\n    COL_VERTEX(274, -2487, 662),\n    COL_VERTEX(820, -2641, 1689),\n    COL_VERTEX(862, -2641, 2081),\n    COL_VERTEX(0, -2641, 2081),\n    COL_VERTEX(-708, -1043, -1589),\n    COL_VERTEX(-1070, -1043, -1227),\n    COL_VERTEX(-744, -992, -901),\n    COL_VERTEX(-744, -1453, -901),\n    COL_VERTEX(-1287, -1453, -358),\n    COL_VERTEX(-781, -1453, -937),\n    COL_VERTEX(-1287, -1043, -430),\n    COL_VERTEX(-1030, -1453, -1911),\n    COL_VERTEX(-1899, -1043, -1042),\n    COL_VERTEX(-1106, -1043, -1263),\n    COL_VERTEX(-1577, -1453, -720),\n    COL_VERTEX(-1070, -1453, -1227),\n    COL_VERTEX(-1067, -1043, -1875),\n    COL_VERTEX(-1899, -1453, -1042),\n    COL_VERTEX(-781, -1453, -1589),\n    COL_VERTEX(-1287, -1453, -430),\n    COL_VERTEX(859, -5365, 801),\n    COL_VERTEX(830, -5211, 830),\n    COL_VERTEX(486, -5365, 1173),\n    COL_VERTEX(830, -4976, 830),\n    COL_VERTEX(1501, -4976, 1443),\n    COL_VERTEX(1501, -5365, 1443),\n    COL_VERTEX(1472, -4822, 1472),\n    COL_VERTEX(-62, -5365, 1173),\n    COL_VERTEX(662, -4822, 274),\n    COL_VERTEX(486, -5211, 1173),\n    COL_VERTEX(-62, -5211, 2081),\n    COL_VERTEX(-62, -5211, 1173),\n    COL_VERTEX(662, -4822, -273),\n    COL_VERTEX(1349, -4822, -960),\n    COL_VERTEX(2081, -4976, -861),\n    COL_VERTEX(1666, -4976, -1277),\n    COL_VERTEX(662, -4976, 274),\n    COL_VERTEX(1024, -4822, -635),\n    COL_VERTEX(830, -4822, -829),\n    COL_VERTEX(830, -4976, -829),\n    COL_VERTEX(-861, -4156, -803),\n    COL_VERTEX(-1150, -4156, -513),\n    COL_VERTEX(-1150, -4003, -513),\n    COL_VERTEX(-1476, -4003, -839),\n    COL_VERTEX(-861, -4003, -803),\n    COL_VERTEX(-1442, -173, 1501),\n    COL_VERTEX(-935, -173, 1573),\n    COL_VERTEX(-1080, -19, 1139),\n    COL_VERTEX(-1225, -19, 1573),\n    COL_VERTEX(-1080, -19, 1718),\n    COL_VERTEX(-935, -19, 1573),\n    COL_VERTEX(-1080, -19, 1428),\n    COL_VERTEX(1867, 5284, 1970),\n    COL_VERTEX(1867, 5284, 1867),\n    COL_VERTEX(1970, 5284, 1867),\n    COL_VERTEX(1970, 5284, 1970),\n    COL_VERTEX(-1153, 911, -1802),\n    COL_VERTEX(-1211, 911, -64),\n    COL_VERTEX(-284, 911, -933),\n    COL_VERTEX(-313, 1372, -904),\n    COL_VERTEX(12, 1218, -1230),\n    COL_VERTEX(-1182, 911, -35),\n    COL_VERTEX(-856, 1372, -2099),\n    COL_VERTEX(12, 1372, -1230),\n    COL_VERTEX(-313, 1065, -904),\n    COL_VERTEX(-1182, 1065, -1773),\n    COL_VERTEX(-1218, -173, 0),\n    COL_VERTEX(-1218, 1065, 0),\n    COL_VERTEX(-2087, -173, -868),\n    COL_VERTEX(-1218, -173, -57),\n    COL_VERTEX(-1211, -173, -64),\n    COL_VERTEX(105, -4684, -901),\n    COL_VERTEX(62, -4684, -944),\n    COL_VERTEX(105, -4976, -901),\n    COL_VERTEX(171, -4546, -1053),\n    COL_VERTEX(431, -4684, -1227),\n    COL_VERTEX(431, -4822, -1227),\n    COL_VERTEX(504, -4546, -720),\n    COL_VERTEX(757, -4976, -1553),\n    COL_VERTEX(395, -4976, -611),\n    COL_VERTEX(279, -4684, -1162),\n    COL_VERTEX(279, -4546, -1162),\n    COL_VERTEX(612, -4684, -829),\n    COL_VERTEX(721, -4822, -937),\n    COL_VERTEX(999, 3159, 798),\n    COL_VERTEX(1270, 2939, 839),\n    COL_VERTEX(999, 2939, 839),\n    COL_VERTEX(926, 3298, 378),\n    COL_VERTEX(655, 3518, 337),\n    COL_VERTEX(655, 3298, 378),\n    COL_VERTEX(999, 3159, 839),\n    COL_VERTEX(655, 3518, 378),\n    COL_VERTEX(-617, 3277, 2081),\n    COL_VERTEX(-617, 3277, 1672),\n    COL_VERTEX(611, 3902, 1713),\n    COL_VERTEX(-576, 3902, 2081),\n    COL_VERTEX(453, 1351, 2081),\n    COL_VERTEX(862, 1197, 1672),\n    COL_VERTEX(453, 1197, 1672),\n    COL_VERTEX(453, 1197, 2081),\n    COL_VERTEX(-1073, 2626, -420),\n    COL_VERTEX(-1797, 2063, -1144),\n    COL_VERTEX(-1797, 2626, -1144),\n    COL_VERTEX(-1073, 2370, -1144),\n    COL_VERTEX(-769, 2114, -782),\n    COL_VERTEX(-1254, 2319, -1687),\n    COL_VERTEX(-1073, 2319, -1144),\n    COL_VERTEX(-1254, 2370, -1687),\n    COL_VERTEX(-1768, 2585, -1173),\n    COL_VERTEX(-1464, 2585, -1477),\n    COL_VERTEX(1699, -962, -1243),\n    COL_VERTEX(1376, -962, -895),\n    COL_VERTEX(1412, -2088, -859),\n    COL_VERTEX(1699, -2088, -1243),\n    COL_VERTEX(-1227, 133, 702),\n    COL_VERTEX(-1734, 133, 1208),\n    COL_VERTEX(-1734, 287, 1208),\n    COL_VERTEX(-1444, 133, 1498),\n    COL_VERTEX(1906, -2487, 1037),\n    COL_VERTEX(2081, -2487, 862),\n    COL_VERTEX(1906, -2641, 1037),\n    COL_VERTEX(274, -2641, 662),\n    COL_VERTEX(662, -2641, 274),\n    COL_VERTEX(2081, -2487, 307),\n    COL_VERTEX(969, -2641, 307),\n    COL_VERTEX(1037, -2641, 1906),\n    COL_VERTEX(662, -2641, 0),\n    COL_VERTEX(0, -2641, 662),\n    COL_VERTEX(0, -2487, 662),\n    COL_VERTEX(0, -2487, 2081),\n    COL_VERTEX(-1106, -992, -1263),\n    COL_VERTEX(-781, -1043, -937),\n    COL_VERTEX(-1287, -992, -358),\n    COL_VERTEX(-744, -992, -1625),\n    COL_VERTEX(-1030, -992, -1911),\n    COL_VERTEX(-708, -1453, -1589),\n    COL_VERTEX(-1106, -1453, -1263),\n    COL_VERTEX(-781, -1043, -1589),\n    COL_VERTEX(-1613, -1453, -684),\n    COL_VERTEX(-1067, -1453, -1875),\n    COL_VERTEX(-1935, -1453, -1006),\n    COL_VERTEX(862, -5365, 2081),\n    COL_VERTEX(859, -4976, 801),\n    COL_VERTEX(1472, -5211, 1472),\n    COL_VERTEX(468, -4976, 468),\n    COL_VERTEX(-62, -5365, 2081),\n    COL_VERTEX(468, -4822, 468),\n    COL_VERTEX(862, -5211, 2081),\n    COL_VERTEX(2081, -4822, 862),\n    COL_VERTEX(2081, -4822, -861),\n    COL_VERTEX(1666, -4822, -1277),\n    COL_VERTEX(1349, -4976, -960),\n    COL_VERTEX(2081, -4976, 862),\n    COL_VERTEX(662, -4976, -273),\n    COL_VERTEX(1155, -4822, -1154),\n    COL_VERTEX(1155, -4976, -1154),\n    COL_VERTEX(1024, -4976, -635),\n    COL_VERTEX(-1476, -4156, -839),\n    COL_VERTEX(-1187, -4003, -1129),\n    COL_VERTEX(-1187, -4156, -1129),\n    COL_VERTEX(-1080, -173, 1139),\n    COL_VERTEX(-1080, -173, 1428),\n    COL_VERTEX(-1442, -19, 1501),\n    COL_VERTEX(-1080, -173, 1718),\n    COL_VERTEX(-1225, -173, 1573),\n    COL_VERTEX(1867, 6037, 1867),\n    COL_VERTEX(1970, 6037, 1867),\n    COL_VERTEX(1970, 6037, 1970),\n    COL_VERTEX(1867, 6037, 1970),\n    COL_VERTEX(-1153, 1218, -1802),\n    COL_VERTEX(-284, 1218, -933),\n    COL_VERTEX(-2058, 911, -897),\n    COL_VERTEX(-856, 1218, -2099),\n    COL_VERTEX(-1218, 911, -57),\n    COL_VERTEX(-1182, 1372, -1773),\n    COL_VERTEX(-1182, -173, -35),\n    COL_VERTEX(-2087, 1065, -868),\n    COL_VERTEX(-2058, -173, -897),\n    COL_VERTEX(323, -4684, -1118),\n    COL_VERTEX(1047, -4976, -1263),\n    COL_VERTEX(612, -4546, -829),\n    COL_VERTEX(757, -4822, -1553),\n    COL_VERTEX(1047, -4822, -1263),\n    COL_VERTEX(721, -4684, -937),\n    COL_VERTEX(2081, 5284, 862),\n    COL_VERTEX(2081, 7475, 862),\n    COL_VERTEX(2081, 7475, -861),\n    COL_VERTEX(1457, 8192, -602),\n    COL_VERTEX(1457, 8192, 603),\n    COL_VERTEX(-1456, 8192, 603),\n    COL_VERTEX(603, 8192, -1456),\n    COL_VERTEX(2081, 5284, -861),\n    COL_VERTEX(603, 8192, 1457),\n    COL_VERTEX(862, 7475, 2081),\n    COL_VERTEX(-602, 8192, 1457),\n    COL_VERTEX(-861, 5284, 2081),\n    COL_VERTEX(-861, 7475, 2081),\n    COL_VERTEX(-602, 8192, -1456),\n    COL_VERTEX(-1456, 8192, -602),\n    COL_VERTEX(-2080, 7475, 862),\n    COL_VERTEX(862, 7475, -2080),\n    COL_VERTEX(862, 5284, -2080),\n    COL_VERTEX(-2080, 5284, 862),\n    COL_VERTEX(-861, 7475, -2080),\n    COL_VERTEX(-861, 5284, -2080),\n    COL_VERTEX(-2080, 7475, -861),\n    COL_VERTEX(-2080, 5284, -861),\n    COL_VERTEX(1919, 6191, 2208),\n    COL_VERTEX(2208, 6191, 1919),\n    COL_VERTEX(1629, 6037, 1919),\n    COL_VERTEX(1629, 6191, 1919),\n    COL_VERTEX(1919, 6037, 2208),\n    COL_VERTEX(2208, 6037, 1919),\n    COL_VERTEX(1919, 6037, 1629),\n    COL_VERTEX(1919, 6191, 1629),\n    COL_VERTEX(862, 5284, 2081),\n    COL_VERTEX(2081, 5919, 862),\n    COL_VERTEX(1079, 5284, 1864),\n    COL_VERTEX(2866, 5284, 2081),\n    COL_VERTEX(2081, 5284, 2866),\n    COL_VERTEX(1864, 5284, 1079),\n    COL_VERTEX(2081, 5919, 3301),\n    COL_VERTEX(1430, 5284, 1152),\n    COL_VERTEX(862, 5919, 2081),\n    COL_VERTEX(3301, 5919, 2081),\n    COL_VERTEX(3301, 7475, 2081),\n    COL_VERTEX(862, 5239, 2081),\n    COL_VERTEX(1079, 5239, 1864),\n    COL_VERTEX(1152, 5284, 1430),\n    COL_VERTEX(862, 1915, 2081),\n    COL_VERTEX(2081, 1915, 862),\n    COL_VERTEX(2081, 1915, -861),\n    COL_VERTEX(-861, 1915, 2081),\n    COL_VERTEX(862, 1915, -2080),\n    COL_VERTEX(-2080, 1915, 862),\n    COL_VERTEX(-861, 1915, -2080),\n    COL_VERTEX(-2080, 1915, -861),\n    COL_VERTEX(2081, -1453, 862),\n    COL_VERTEX(862, -1453, 2081),\n    COL_VERTEX(2081, -1453, -861),\n    COL_VERTEX(-861, -1453, 2081),\n    COL_VERTEX(862, -1453, -2080),\n    COL_VERTEX(-2080, -1453, -861),\n    COL_VERTEX(-1758, -1453, -539),\n    COL_VERTEX(-1758, -1607, -539),\n    COL_VERTEX(862, -4822, 2081),\n    COL_VERTEX(-861, -4822, 2081),\n    COL_VERTEX(862, -4822, -2080),\n    COL_VERTEX(-2080, -4822, 862),\n    COL_VERTEX(-2080, -4822, -861),\n    COL_VERTEX(-781, -3104, -1516),\n    COL_VERTEX(-539, -1760, -1758),\n    COL_VERTEX(-944, -1607, -1353),\n    COL_VERTEX(-1758, -1760, -539),\n    COL_VERTEX(-944, -1760, -1353),\n    COL_VERTEX(-1758, -3104, -539),\n    COL_VERTEX(-944, -2037, -1353),\n    COL_VERTEX(-944, -2446, -1353),\n    COL_VERTEX(-1351, -2037, -946),\n    COL_VERTEX(-1103, -3104, -1839),\n    COL_VERTEX(-539, -4822, -1758),\n    COL_VERTEX(-861, -4822, -2080),\n    COL_VERTEX(-1568, -2446, -1163),\n    COL_VERTEX(-1351, -2446, -946),\n    COL_VERTEX(-1161, -2139, -1571),\n    COL_VERTEX(-1876, -4822, -656),\n    COL_VERTEX(-2080, -3104, -861),\n    COL_VERTEX(-1876, -4022, -656),\n    COL_VERTEX(2081, -8191, 862),\n    COL_VERTEX(862, -8191, 2081),\n    COL_VERTEX(2081, -8191, -861),\n    COL_VERTEX(-861, -8191, 2081),\n    COL_VERTEX(862, -8191, -2080),\n    COL_VERTEX(-2080, -8191, 862),\n    COL_VERTEX(-861, -8191, -2080),\n    COL_VERTEX(-2080, -8191, -861),\n    COL_VERTEX(2081, 7475, 3301),\n    COL_VERTEX(2081, 5239, 862),\n    COL_VERTEX(1864, 5239, 1079),\n    COL_VERTEX(1430, 5239, 1152),\n    COL_VERTEX(1152, 5239, 1430),\n    COL_VERTEX(-2080, -1607, -861),\n    COL_VERTEX(-781, -4822, -1516),\n    COL_VERTEX(-1568, -2139, -1163),\n    COL_VERTEX(-1161, -2446, -1571),\n    COL_VERTEX(-898, -4822, -1634),\n    COL_VERTEX(-898, -4022, -1634),\n    COL_TRI_INIT(SURFACE_DEFAULT, 208),\n    COL_TRI(627, 628, 629),\n    COL_TRI(628, 630, 629),\n    COL_TRI(628, 631, 630),\n    COL_TRI(632, 630, 631),\n    COL_TRI(632, 633, 630),\n    COL_TRI(627, 629, 634),\n    COL_TRI(632, 631, 635),\n    COL_TRI(636, 635, 628),\n    COL_TRI(632, 635, 637),\n    COL_TRI(635, 631, 628),\n    COL_TRI(632, 640, 633),\n    COL_TRI(634, 629, 643),\n    COL_TRI(629, 630, 633),\n    COL_TRI(629, 633, 643),\n    COL_TRI(634, 643, 644),\n    COL_TRI(638, 639, 636),\n    COL_TRI(639, 637, 635),\n    COL_TRI(639, 635, 636),\n    COL_TRI(638, 636, 658),\n    COL_TRI(632, 641, 640),\n    COL_TRI(642, 637, 639),\n    COL_TRI(642, 632, 637),\n    COL_TRI(643, 633, 640),\n    COL_TRI(643, 640, 646),\n    COL_TRI(640, 641, 648),\n    COL_TRI(644, 643, 646),\n    COL_TRI(644, 646, 647),\n    COL_TRI(645, 642, 639),\n    COL_TRI(645, 639, 638),\n    COL_TRI(646, 640, 648),\n    COL_TRI(647, 646, 648),\n    COL_TRI(647, 648, 649),\n    COL_TRI(648, 632, 642),\n    COL_TRI(648, 641, 632),\n    COL_TRI(649, 648, 642),\n    COL_TRI(649, 642, 645),\n    COL_TRI(650, 655, 651),\n    COL_TRI(651, 657, 653),\n    COL_TRI(651, 653, 650),\n    COL_TRI(652, 653, 657),\n    COL_TRI(652, 657, 656),\n    COL_TRI(653, 654, 650),\n    COL_TRI(650, 654, 655),\n    COL_TRI(654, 610, 655),\n    COL_TRI(610, 609, 655),\n    COL_TRI(655, 609, 656),\n    COL_TRI(656, 657, 655),\n    COL_TRI(657, 651, 655),\n    COL_TRI(653, 652, 654),\n    COL_TRI(654, 652, 611),\n    COL_TRI(610, 654, 611),\n    COL_TRI(608, 611, 652),\n    COL_TRI(656, 608, 652),\n    COL_TRI(609, 608, 656),\n    COL_TRI(658, 666, 660),\n    COL_TRI(661, 497, 498),\n    COL_TRI(659, 627, 663),\n    COL_TRI(660, 664, 662),\n    COL_TRI(661, 498, 662),\n    COL_TRI(498, 495, 662),\n    COL_TRI(662, 495, 660),\n    COL_TRI(660, 495, 496),\n    COL_TRI(660, 666, 664),\n    COL_TRI(660, 496, 671),\n    COL_TRI(663, 627, 720),\n    COL_TRI(663, 497, 661),\n    COL_TRI(662, 664, 661),\n    COL_TRI(664, 667, 661),\n    COL_TRI(663, 496, 497),\n    COL_TRI(496, 663, 665),\n    COL_TRI(661, 659, 663),\n    COL_TRI(663, 720, 721),\n    COL_TRI(665, 663, 721),\n    COL_TRI(496, 665, 671),\n    COL_TRI(666, 719, 664),\n    COL_TRI(666, 636, 719),\n    COL_TRI(664, 719, 668),\n    COL_TRI(664, 668, 667),\n    COL_TRI(661, 667, 659),\n    COL_TRI(667, 628, 659),\n    COL_TRI(667, 668, 628),\n    COL_TRI(668, 636, 628),\n    COL_TRI(668, 719, 636),\n    COL_TRI(660, 723, 670),\n    COL_TRI(669, 660, 670),\n    COL_TRI(670, 723, 722),\n    COL_TRI(670, 722, 721),\n    COL_TRI(673, 627, 634),\n    COL_TRI(671, 722, 723),\n    COL_TRI(671, 665, 722),\n    COL_TRI(665, 721, 722),\n    COL_TRI(660, 671, 723),\n    COL_TRI(669, 658, 660),\n    COL_TRI(672, 669, 720),\n    COL_TRI(672, 720, 673),\n    COL_TRI(673, 634, 674),\n    COL_TRI(677, 638, 675),\n    COL_TRI(674, 634, 644),\n    COL_TRI(674, 644, 676),\n    COL_TRI(675, 638, 658),\n    COL_TRI(675, 658, 672),\n    COL_TRI(676, 647, 678),\n    COL_TRI(676, 644, 647),\n    COL_TRI(680, 674, 682),\n    COL_TRI(677, 645, 638),\n    COL_TRI(678, 649, 679),\n    COL_TRI(678, 647, 649),\n    COL_TRI(679, 649, 645),\n    COL_TRI(679, 645, 677),\n    COL_TRI(680, 673, 674),\n    COL_TRI(684, 676, 678),\n    COL_TRI(681, 673, 680),\n    COL_TRI(681, 672, 673),\n    COL_TRI(682, 676, 684),\n    COL_TRI(682, 674, 676),\n    COL_TRI(683, 675, 672),\n    COL_TRI(683, 672, 681),\n    COL_TRI(117, 678, 679),\n    COL_TRI(684, 678, 117),\n    COL_TRI(685, 686, 117),\n    COL_TRI(686, 118, 117),\n    COL_TRI(152, 677, 675),\n    COL_TRI(152, 675, 683),\n    COL_TRI(117, 679, 685),\n    COL_TRI(688, 680, 591),\n    COL_TRI(687, 686, 685),\n    COL_TRI(687, 685, 724),\n    COL_TRI(685, 677, 152),\n    COL_TRI(685, 679, 677),\n    COL_TRI(591, 680, 682),\n    COL_TRI(591, 682, 592),\n    COL_TRI(690, 117, 704),\n    COL_TRI(688, 681, 680),\n    COL_TRI(592, 684, 690),\n    COL_TRI(592, 682, 684),\n    COL_TRI(689, 681, 688),\n    COL_TRI(689, 683, 681),\n    COL_TRI(690, 684, 117),\n    COL_TRI(694, 283, 695),\n    COL_TRI(691, 152, 683),\n    COL_TRI(691, 683, 689),\n    COL_TRI(692, 685, 152),\n    COL_TRI(692, 152, 691),\n    COL_TRI(693, 703, 694),\n    COL_TRI(694, 695, 697),\n    COL_TRI(686, 687, 695),\n    COL_TRI(695, 696, 697),\n    COL_TRI(695, 687, 696),\n    COL_TRI(283, 118, 686),\n    COL_TRI(283, 686, 695),\n    COL_TRI(696, 698, 706),\n    COL_TRI(696, 706, 701),\n    COL_TRI(696, 701, 699),\n    COL_TRI(697, 696, 699),\n    COL_TRI(187, 693, 702),\n    COL_TRI(698, 687, 724),\n    COL_TRI(699, 700, 693),\n    COL_TRI(700, 699, 707),\n    COL_TRI(701, 707, 699),\n    COL_TRI(694, 697, 699),\n    COL_TRI(694, 699, 693),\n    COL_TRI(693, 700, 698),\n    COL_TRI(693, 725, 703),\n    COL_TRI(702, 693, 698),\n    COL_TRI(187, 725, 693),\n    COL_TRI(703, 704, 284),\n    COL_TRI(703, 284, 283),\n    COL_TRI(704, 703, 725),\n    COL_TRI(700, 705, 706),\n    COL_TRI(700, 727, 705),\n    COL_TRI(700, 706, 698),\n    COL_TRI(700, 707, 727),\n    COL_TRI(705, 726, 701),\n    COL_TRI(706, 705, 701),\n    COL_TRI(701, 726, 707),\n    COL_TRI(707, 726, 705),\n    COL_TRI(707, 705, 727),\n    COL_TRI(709, 185, 188),\n    COL_TRI(702, 698, 709),\n    COL_TRI(698, 724, 709),\n    COL_TRI(708, 692, 704),\n    COL_TRI(704, 725, 728),\n    COL_TRI(704, 728, 708),\n    COL_TRI(709, 188, 702),\n    COL_TRI(702, 188, 187),\n    COL_TRI(187, 728, 725),\n    COL_TRI(710, 728, 729),\n    COL_TRI(710, 708, 728),\n    COL_TRI(315, 710, 729),\n    COL_TRI(315, 729, 187),\n    COL_TRI(692, 708, 186),\n    COL_TRI(316, 692, 186),\n    COL_TRI(711, 591, 592),\n    COL_TRI(711, 592, 713),\n    COL_TRI(715, 704, 717),\n    COL_TRI(712, 688, 591),\n    COL_TRI(712, 591, 711),\n    COL_TRI(713, 690, 715),\n    COL_TRI(713, 592, 690),\n    COL_TRI(714, 689, 688),\n    COL_TRI(714, 688, 712),\n    COL_TRI(718, 691, 716),\n    COL_TRI(715, 690, 704),\n    COL_TRI(716, 691, 689),\n    COL_TRI(716, 689, 714),\n    COL_TRI(717, 704, 692),\n    COL_TRI(717, 692, 718),\n    COL_TRI(718, 692, 691),\n    COL_TRI_INIT(SURFACE_DEATH_PLANE, 2),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI_INIT(SURFACE_VERY_SLIPPERY, 48),\n    COL_TRI(332, 333, 334),\n    COL_TRI(334, 335, 336),\n    COL_TRI(334, 333, 335),\n    COL_TRI(336, 335, 337),\n    COL_TRI(336, 337, 338),\n    COL_TRI(332, 339, 333),\n    COL_TRI(340, 336, 338),\n    COL_TRI(340, 332, 334),\n    COL_TRI(340, 334, 336),\n    COL_TRI(341, 332, 340),\n    COL_TRI(342, 341, 340),\n    COL_TRI(342, 340, 338),\n    COL_TRI(341, 339, 332),\n    COL_TRI(341, 354, 339),\n    COL_TRI(338, 337, 343),\n    COL_TRI(338, 343, 342),\n    COL_TRI(342, 354, 341),\n    COL_TRI(342, 343, 354),\n    COL_TRI(337, 344, 343),\n    COL_TRI(344, 339, 354),\n    COL_TRI(344, 337, 335),\n    COL_TRI(344, 333, 339),\n    COL_TRI(344, 354, 343),\n    COL_TRI(344, 335, 333),\n    COL_TRI(345, 348, 349),\n    COL_TRI(345, 349, 350),\n    COL_TRI(345, 350, 351),\n    COL_TRI(346, 348, 345),\n    COL_TRI(347, 346, 345),\n    COL_TRI(347, 345, 351),\n    COL_TRI(348, 355, 349),\n    COL_TRI(349, 355, 356),\n    COL_TRI(349, 356, 350),\n    COL_TRI(350, 356, 352),\n    COL_TRI(353, 357, 358),\n    COL_TRI(350, 352, 351),\n    COL_TRI(348, 357, 355),\n    COL_TRI(346, 357, 348),\n    COL_TRI(346, 358, 357),\n    COL_TRI(351, 352, 359),\n    COL_TRI(351, 359, 347),\n    COL_TRI(347, 358, 346),\n    COL_TRI(347, 359, 358),\n    COL_TRI(352, 353, 359),\n    COL_TRI(353, 358, 359),\n    COL_TRI(353, 352, 356),\n    COL_TRI(353, 356, 355),\n    COL_TRI(353, 355, 357),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 472),\n    COL_TRI(4, 5, 6),\n    COL_TRI(4, 6, 7),\n    COL_TRI(8, 5, 4),\n    COL_TRI(6, 9, 7),\n    COL_TRI(10, 8, 4),\n    COL_TRI(10, 11, 8),\n    COL_TRI(12, 11, 10),\n    COL_TRI(13, 32, 14),\n    COL_TRI(14, 32, 23),\n    COL_TRI(14, 23, 24),\n    COL_TRI(15, 202, 16),\n    COL_TRI(15, 203, 202),\n    COL_TRI(16, 202, 204),\n    COL_TRI(17, 204, 202),\n    COL_TRI(17, 202, 203),\n    COL_TRI(16, 204, 18),\n    COL_TRI(15, 16, 18),\n    COL_TRI(15, 18, 22),\n    COL_TRI(18, 21, 22),\n    COL_TRI(19, 12, 10),\n    COL_TRI(23, 38, 24),\n    COL_TRI(19, 34, 12),\n    COL_TRI(20, 34, 19),\n    COL_TRI(21, 37, 22),\n    COL_TRI(22, 37, 25),\n    COL_TRI(22, 25, 26),\n    COL_TRI(24, 205, 36),\n    COL_TRI(24, 38, 205),\n    COL_TRI(19, 206, 20),\n    COL_TRI(19, 48, 206),\n    COL_TRI(22, 203, 15),\n    COL_TRI(22, 17, 203),\n    COL_TRI(25, 41, 26),\n    COL_TRI(26, 41, 30),\n    COL_TRI(27, 51, 40),\n    COL_TRI(27, 40, 207),\n    COL_TRI(26, 30, 29),\n    COL_TRI(28, 207, 40),\n    COL_TRI(8, 210, 208),\n    COL_TRI(29, 28, 40),\n    COL_TRI(29, 42, 28),\n    COL_TRI(30, 42, 29),\n    COL_TRI(5, 208, 209),\n    COL_TRI(5, 209, 6),\n    COL_TRI(8, 208, 5),\n    COL_TRI(11, 211, 210),\n    COL_TRI(6, 31, 9),\n    COL_TRI(6, 209, 31),\n    COL_TRI(31, 7, 9),\n    COL_TRI(31, 43, 7),\n    COL_TRI(7, 43, 44),\n    COL_TRI(7, 44, 4),\n    COL_TRI(13, 213, 32),\n    COL_TRI(11, 210, 8),\n    COL_TRI(4, 44, 45),\n    COL_TRI(4, 45, 10),\n    COL_TRI(13, 14, 46),\n    COL_TRI(13, 46, 212),\n    COL_TRI(13, 212, 213),\n    COL_TRI(32, 213, 215),\n    COL_TRI(12, 214, 211),\n    COL_TRI(12, 211, 11),\n    COL_TRI(24, 46, 14),\n    COL_TRI(24, 47, 46),\n    COL_TRI(18, 204, 33),\n    COL_TRI(18, 33, 21),\n    COL_TRI(34, 214, 12),\n    COL_TRI(32, 215, 23),\n    COL_TRI(10, 45, 48),\n    COL_TRI(10, 48, 19),\n    COL_TRI(33, 37, 21),\n    COL_TRI(33, 216, 37),\n    COL_TRI(34, 217, 214),\n    COL_TRI(26, 17, 22),\n    COL_TRI(35, 216, 17),\n    COL_TRI(36, 47, 24),\n    COL_TRI(36, 49, 47),\n    COL_TRI(23, 218, 38),\n    COL_TRI(23, 215, 218),\n    COL_TRI(26, 35, 17),\n    COL_TRI(20, 217, 34),\n    COL_TRI(20, 206, 217),\n    COL_TRI(37, 219, 25),\n    COL_TRI(37, 216, 219),\n    COL_TRI(25, 219, 220),\n    COL_TRI(25, 220, 41),\n    COL_TRI(38, 39, 205),\n    COL_TRI(38, 218, 39),\n    COL_TRI(28, 27, 207),\n    COL_TRI(39, 36, 205),\n    COL_TRI(39, 49, 36),\n    COL_TRI(29, 50, 35),\n    COL_TRI(29, 35, 26),\n    COL_TRI(40, 51, 50),\n    COL_TRI(40, 50, 29),\n    COL_TRI(30, 223, 42),\n    COL_TRI(28, 221, 27),\n    COL_TRI(41, 220, 222),\n    COL_TRI(41, 222, 30),\n    COL_TRI(42, 223, 221),\n    COL_TRI(42, 221, 28),\n    COL_TRI(30, 222, 223),\n    COL_TRI(43, 208, 44),\n    COL_TRI(43, 209, 208),\n    COL_TRI(44, 208, 210),\n    COL_TRI(43, 31, 209),\n    COL_TRI(44, 210, 211),\n    COL_TRI(44, 211, 45),\n    COL_TRI(45, 211, 214),\n    COL_TRI(46, 213, 212),\n    COL_TRI(47, 213, 46),\n    COL_TRI(47, 215, 213),\n    COL_TRI(45, 217, 48),\n    COL_TRI(45, 214, 217),\n    COL_TRI(48, 217, 206),\n    COL_TRI(17, 33, 204),\n    COL_TRI(17, 216, 33),\n    COL_TRI(35, 219, 216),\n    COL_TRI(47, 218, 215),\n    COL_TRI(49, 218, 47),\n    COL_TRI(49, 39, 218),\n    COL_TRI(35, 220, 219),\n    COL_TRI(50, 222, 220),\n    COL_TRI(50, 220, 35),\n    COL_TRI(51, 27, 221),\n    COL_TRI(51, 223, 50),\n    COL_TRI(51, 221, 223),\n    COL_TRI(50, 223, 222),\n    COL_TRI(52, 224, 53),\n    COL_TRI(52, 225, 224),\n    COL_TRI(52, 56, 226),\n    COL_TRI(52, 53, 56),\n    COL_TRI(55, 57, 56),\n    COL_TRI(53, 224, 55),\n    COL_TRI(53, 55, 56),\n    COL_TRI(54, 55, 225),\n    COL_TRI(55, 224, 225),\n    COL_TRI(56, 57, 226),\n    COL_TRI(55, 227, 57),\n    COL_TRI(54, 227, 55),\n    COL_TRI(57, 228, 226),\n    COL_TRI(54, 59, 227),\n    COL_TRI(57, 58, 228),\n    COL_TRI(58, 61, 229),\n    COL_TRI(58, 229, 228),\n    COL_TRI(61, 233, 232),\n    COL_TRI(58, 230, 231),\n    COL_TRI(58, 231, 61),\n    COL_TRI(57, 230, 58),\n    COL_TRI(57, 227, 230),\n    COL_TRI(59, 60, 230),\n    COL_TRI(59, 230, 227),\n    COL_TRI(60, 231, 230),\n    COL_TRI(61, 232, 229),\n    COL_TRI(60, 233, 231),\n    COL_TRI(61, 231, 233),\n    COL_TRI(67, 68, 238),\n    COL_TRI(62, 64, 63),\n    COL_TRI(63, 66, 234),\n    COL_TRI(63, 234, 62),\n    COL_TRI(64, 66, 63),\n    COL_TRI(62, 234, 235),\n    COL_TRI(62, 65, 64),\n    COL_TRI(62, 235, 65),\n    COL_TRI(64, 236, 66),\n    COL_TRI(65, 236, 64),\n    COL_TRI(65, 235, 236),\n    COL_TRI(66, 236, 235),\n    COL_TRI(66, 235, 234),\n    COL_TRI(67, 237, 71),\n    COL_TRI(67, 71, 68),\n    COL_TRI(71, 241, 70),\n    COL_TRI(68, 239, 238),\n    COL_TRI(69, 72, 71),\n    COL_TRI(69, 71, 237),\n    COL_TRI(68, 70, 239),\n    COL_TRI(70, 240, 239),\n    COL_TRI(71, 70, 68),\n    COL_TRI(70, 242, 240),\n    COL_TRI(72, 241, 71),\n    COL_TRI(72, 73, 241),\n    COL_TRI(73, 243, 241),\n    COL_TRI(74, 244, 245),\n    COL_TRI(74, 245, 75),\n    COL_TRI(74, 238, 244),\n    COL_TRI(74, 67, 238),\n    COL_TRI(75, 249, 246),\n    COL_TRI(74, 237, 67),\n    COL_TRI(69, 237, 246),\n    COL_TRI(69, 247, 248),\n    COL_TRI(69, 249, 247),\n    COL_TRI(69, 246, 249),\n    COL_TRI(75, 246, 74),\n    COL_TRI(79, 81, 78),\n    COL_TRI(74, 246, 237),\n    COL_TRI(76, 78, 77),\n    COL_TRI(76, 77, 250),\n    COL_TRI(77, 251, 250),\n    COL_TRI(77, 252, 251),\n    COL_TRI(78, 252, 77),\n    COL_TRI(76, 250, 253),\n    COL_TRI(78, 83, 252),\n    COL_TRI(79, 256, 254),\n    COL_TRI(76, 82, 78),\n    COL_TRI(82, 257, 256),\n    COL_TRI(82, 256, 79),\n    COL_TRI(83, 251, 252),\n    COL_TRI(83, 258, 251),\n    COL_TRI(83, 259, 258),\n    COL_TRI(83, 257, 259),\n    COL_TRI(79, 254, 81),\n    COL_TRI(80, 83, 78),\n    COL_TRI(81, 80, 78),\n    COL_TRI(80, 255, 83),\n    COL_TRI(83, 254, 256),\n    COL_TRI(83, 255, 254),\n    COL_TRI(84, 87, 88),\n    COL_TRI(85, 84, 88),\n    COL_TRI(85, 86, 84),\n    COL_TRI(92, 90, 86),\n    COL_TRI(86, 260, 84),\n    COL_TRI(87, 261, 262),\n    COL_TRI(87, 262, 88),\n    COL_TRI(84, 261, 87),\n    COL_TRI(88, 89, 85),\n    COL_TRI(88, 262, 89),\n    COL_TRI(89, 262, 261),\n    COL_TRI(89, 261, 260),\n    COL_TRI(84, 260, 261),\n    COL_TRI(85, 89, 263),\n    COL_TRI(85, 263, 91),\n    COL_TRI(85, 91, 86),\n    COL_TRI(89, 260, 90),\n    COL_TRI(90, 263, 89),\n    COL_TRI(86, 90, 260),\n    COL_TRI(91, 92, 86),\n    COL_TRI(97, 267, 266),\n    COL_TRI(91, 93, 92),\n    COL_TRI(91, 264, 93),\n    COL_TRI(91, 263, 264),\n    COL_TRI(90, 264, 263),\n    COL_TRI(90, 265, 264),\n    COL_TRI(92, 265, 90),\n    COL_TRI(93, 264, 265),\n    COL_TRI(93, 265, 92),\n    COL_TRI(94, 266, 96),\n    COL_TRI(94, 97, 266),\n    COL_TRI(95, 97, 94),\n    COL_TRI(96, 95, 94),\n    COL_TRI(96, 268, 95),\n    COL_TRI(95, 269, 97),\n    COL_TRI(97, 269, 267),\n    COL_TRI(98, 270, 99),\n    COL_TRI(98, 102, 270),\n    COL_TRI(99, 100, 98),\n    COL_TRI(100, 102, 98),\n    COL_TRI(99, 270, 271),\n    COL_TRI(99, 101, 100),\n    COL_TRI(99, 271, 101),\n    COL_TRI(103, 275, 274),\n    COL_TRI(100, 272, 102),\n    COL_TRI(101, 272, 100),\n    COL_TRI(101, 271, 272),\n    COL_TRI(102, 272, 271),\n    COL_TRI(102, 271, 270),\n    COL_TRI(103, 273, 104),\n    COL_TRI(103, 104, 109),\n    COL_TRI(103, 274, 273),\n    COL_TRI(108, 276, 277),\n    COL_TRI(104, 105, 109),\n    COL_TRI(105, 276, 106),\n    COL_TRI(105, 277, 276),\n    COL_TRI(105, 106, 109),\n    COL_TRI(106, 108, 109),\n    COL_TRI(107, 274, 275),\n    COL_TRI(108, 107, 275),\n    COL_TRI(104, 107, 277),\n    COL_TRI(104, 277, 105),\n    COL_TRI(106, 276, 108),\n    COL_TRI(109, 275, 103),\n    COL_TRI(109, 108, 275),\n    COL_TRI(108, 277, 107),\n    COL_TRI(110, 115, 278),\n    COL_TRI(110, 278, 111),\n    COL_TRI(111, 112, 110),\n    COL_TRI(114, 282, 281),\n    COL_TRI(111, 279, 112),\n    COL_TRI(112, 113, 110),\n    COL_TRI(113, 112, 280),\n    COL_TRI(113, 115, 110),\n    COL_TRI(113, 281, 115),\n    COL_TRI(114, 113, 280),\n    COL_TRI(114, 281, 113),\n    COL_TRI(111, 278, 279),\n    COL_TRI(115, 279, 278),\n    COL_TRI(115, 281, 279),\n    COL_TRI(116, 279, 281),\n    COL_TRI(116, 281, 282),\n    COL_TRI(120, 285, 286),\n    COL_TRI(117, 118, 280),\n    COL_TRI(118, 282, 114),\n    COL_TRI(118, 283, 282),\n    COL_TRI(116, 283, 284),\n    COL_TRI(119, 285, 120),\n    COL_TRI(120, 122, 119),\n    COL_TRI(120, 121, 122),\n    COL_TRI(120, 286, 121),\n    COL_TRI(121, 287, 122),\n    COL_TRI(122, 287, 123),\n    COL_TRI(122, 123, 119),\n    COL_TRI(119, 123, 285),\n    COL_TRI(121, 286, 287),\n    COL_TRI(123, 286, 285),\n    COL_TRI(123, 287, 286),\n    COL_TRI(124, 127, 126),\n    COL_TRI(124, 126, 125),\n    COL_TRI(125, 288, 124),\n    COL_TRI(124, 289, 127),\n    COL_TRI(124, 288, 289),\n    COL_TRI(126, 128, 125),\n    COL_TRI(127, 128, 126),\n    COL_TRI(128, 129, 125),\n    COL_TRI(125, 129, 288),\n    COL_TRI(127, 289, 128),\n    COL_TRI(129, 128, 289),\n    COL_TRI(129, 289, 288),\n    COL_TRI(130, 290, 291),\n    COL_TRI(130, 291, 133),\n    COL_TRI(131, 290, 130),\n    COL_TRI(130, 132, 131),\n    COL_TRI(130, 133, 132),\n    COL_TRI(136, 135, 293),\n    COL_TRI(132, 134, 131),\n    COL_TRI(132, 292, 134),\n    COL_TRI(133, 292, 132),\n    COL_TRI(131, 134, 290),\n    COL_TRI(133, 291, 292),\n    COL_TRI(134, 291, 290),\n    COL_TRI(134, 292, 291),\n    COL_TRI(135, 138, 293),\n    COL_TRI(135, 294, 138),\n    COL_TRI(136, 294, 135),\n    COL_TRI(137, 138, 141),\n    COL_TRI(137, 293, 138),\n    COL_TRI(138, 294, 295),\n    COL_TRI(136, 295, 294),\n    COL_TRI(136, 293, 296),\n    COL_TRI(138, 295, 297),\n    COL_TRI(139, 293, 137),\n    COL_TRI(139, 296, 293),\n    COL_TRI(140, 137, 141),\n    COL_TRI(140, 142, 137),\n    COL_TRI(141, 138, 297),\n    COL_TRI(141, 297, 298),\n    COL_TRI(142, 299, 139),\n    COL_TRI(142, 139, 137),\n    COL_TRI(142, 143, 299),\n    COL_TRI(142, 140, 143),\n    COL_TRI(143, 141, 298),\n    COL_TRI(143, 140, 141),\n    COL_TRI(147, 146, 301),\n    COL_TRI(144, 154, 148),\n    COL_TRI(144, 148, 146),\n    COL_TRI(145, 144, 146),\n    COL_TRI(145, 300, 144),\n    COL_TRI(146, 148, 301),\n    COL_TRI(145, 146, 147),\n    COL_TRI(150, 159, 300),\n    COL_TRI(145, 147, 302),\n    COL_TRI(148, 153, 303),\n    COL_TRI(148, 154, 153),\n    COL_TRI(149, 150, 151),\n    COL_TRI(149, 159, 150),\n    COL_TRI(150, 300, 145),\n    COL_TRI(157, 149, 151),\n    COL_TRI(151, 150, 304),\n    COL_TRI(150, 145, 304),\n    COL_TRI(145, 302, 304),\n    COL_TRI(152, 151, 304),\n    COL_TRI(153, 154, 155),\n    COL_TRI(154, 144, 155),\n    COL_TRI(155, 144, 300),\n    COL_TRI(156, 155, 300),\n    COL_TRI(157, 152, 160),\n    COL_TRI(157, 305, 149),\n    COL_TRI(158, 159, 162),\n    COL_TRI(158, 156, 159),\n    COL_TRI(156, 300, 159),\n    COL_TRI(159, 149, 162),\n    COL_TRI(157, 151, 152),\n    COL_TRI(164, 167, 163),\n    COL_TRI(160, 305, 157),\n    COL_TRI(160, 161, 305),\n    COL_TRI(161, 162, 305),\n    COL_TRI(162, 149, 305),\n    COL_TRI(163, 306, 164),\n    COL_TRI(163, 165, 306),\n    COL_TRI(169, 170, 309),\n    COL_TRI(164, 306, 307),\n    COL_TRI(165, 307, 306),\n    COL_TRI(164, 166, 167),\n    COL_TRI(164, 307, 166),\n    COL_TRI(165, 308, 307),\n    COL_TRI(166, 170, 169),\n    COL_TRI(166, 307, 170),\n    COL_TRI(167, 166, 169),\n    COL_TRI(168, 167, 169),\n    COL_TRI(169, 309, 168),\n    COL_TRI(172, 175, 178),\n    COL_TRI(170, 308, 309),\n    COL_TRI(170, 307, 308),\n    COL_TRI(171, 173, 174),\n    COL_TRI(171, 310, 173),\n    COL_TRI(172, 171, 174),\n    COL_TRI(172, 311, 171),\n    COL_TRI(173, 312, 175),\n    COL_TRI(173, 310, 312),\n    COL_TRI(174, 175, 172),\n    COL_TRI(172, 178, 311),\n    COL_TRI(174, 173, 175),\n    COL_TRI(175, 177, 178),\n    COL_TRI(176, 178, 180),\n    COL_TRI(177, 180, 178),\n    COL_TRI(178, 176, 311),\n    COL_TRI(179, 176, 180),\n    COL_TRI(177, 182, 180),\n    COL_TRI(179, 180, 184),\n    COL_TRI(180, 183, 184),\n    COL_TRI(180, 182, 183),\n    COL_TRI(181, 179, 184),\n    COL_TRI(182, 177, 312),\n    COL_TRI(182, 312, 313),\n    COL_TRI(183, 182, 313),\n    COL_TRI(183, 313, 314),\n    COL_TRI(184, 183, 186),\n    COL_TRI(185, 184, 315),\n    COL_TRI(185, 181, 184),\n    COL_TRI(184, 186, 315),\n    COL_TRI(186, 183, 314),\n    COL_TRI(187, 188, 315),\n    COL_TRI(188, 185, 315),\n    COL_TRI(186, 314, 316),\n    COL_TRI(189, 199, 192),\n    COL_TRI(189, 190, 191),\n    COL_TRI(189, 191, 199),\n    COL_TRI(193, 317, 192),\n    COL_TRI(190, 189, 317),\n    COL_TRI(191, 190, 317),\n    COL_TRI(189, 192, 317),\n    COL_TRI(191, 317, 318),\n    COL_TRI(192, 199, 193),\n    COL_TRI(193, 318, 317),\n    COL_TRI(196, 198, 319),\n    COL_TRI(194, 195, 319),\n    COL_TRI(194, 200, 195),\n    COL_TRI(194, 319, 197),\n    COL_TRI(195, 200, 320),\n    COL_TRI(195, 320, 196),\n    COL_TRI(196, 319, 195),\n    COL_TRI(197, 319, 198),\n    COL_TRI(198, 320, 197),\n    COL_TRI(198, 196, 320),\n    COL_TRI(199, 194, 193),\n    COL_TRI(199, 200, 194),\n    COL_TRI(199, 191, 200),\n    COL_TRI(201, 323, 321),\n    COL_TRI(200, 191, 318),\n    COL_TRI(200, 318, 320),\n    COL_TRI(193, 194, 197),\n    COL_TRI(197, 318, 193),\n    COL_TRI(197, 320, 318),\n    COL_TRI(201, 321, 322),\n    COL_TRI_INIT(SURFACE_CAMERA_FREE_ROAM, 6),\n    COL_TRI(324, 325, 326),\n    COL_TRI(324, 327, 325),\n    COL_TRI(324, 326, 328),\n    COL_TRI(324, 329, 330),\n    COL_TRI(324, 331, 329),\n    COL_TRI(324, 330, 327),\n    COL_TRI_INIT(SURFACE_NO_CAM_COLLISION, 414),\n    COL_TRI(360, 361, 362),\n    COL_TRI(360, 362, 363),\n    COL_TRI(360, 364, 361),\n    COL_TRI(365, 364, 360),\n    COL_TRI(360, 363, 365),\n    COL_TRI(366, 361, 364),\n    COL_TRI(366, 367, 361),\n    COL_TRI(362, 361, 367),\n    COL_TRI(362, 367, 363),\n    COL_TRI(365, 366, 364),\n    COL_TRI(363, 366, 365),\n    COL_TRI(363, 367, 366),\n    COL_TRI(368, 369, 370),\n    COL_TRI(370, 371, 372),\n    COL_TRI(370, 369, 371),\n    COL_TRI(372, 368, 370),\n    COL_TRI(377, 378, 528),\n    COL_TRI(372, 371, 373),\n    COL_TRI(372, 373, 374),\n    COL_TRI(372, 374, 368),\n    COL_TRI(368, 375, 369),\n    COL_TRI(374, 375, 368),\n    COL_TRI(374, 373, 375),\n    COL_TRI(369, 375, 373),\n    COL_TRI(369, 373, 371),\n    COL_TRI(376, 527, 377),\n    COL_TRI(377, 528, 376),\n    COL_TRI(380, 530, 532),\n    COL_TRI(378, 529, 528),\n    COL_TRI(376, 528, 529),\n    COL_TRI(376, 382, 527),\n    COL_TRI(376, 529, 382),\n    COL_TRI(379, 381, 530),\n    COL_TRI(379, 530, 380),\n    COL_TRI(380, 531, 379),\n    COL_TRI(381, 532, 530),\n    COL_TRI(380, 532, 383),\n    COL_TRI(380, 383, 531),\n    COL_TRI(382, 533, 527),\n    COL_TRI(382, 529, 533),\n    COL_TRI(378, 533, 529),\n    COL_TRI(381, 534, 532),\n    COL_TRI(383, 532, 534),\n    COL_TRI(383, 534, 531),\n    COL_TRI(384, 325, 385),\n    COL_TRI(384, 326, 325),\n    COL_TRI(388, 391, 389),\n    COL_TRI(385, 325, 327),\n    COL_TRI(385, 327, 387),\n    COL_TRI(386, 326, 384),\n    COL_TRI(386, 328, 326),\n    COL_TRI(387, 330, 390),\n    COL_TRI(387, 327, 330),\n    COL_TRI(390, 330, 329),\n    COL_TRI(388, 387, 390),\n    COL_TRI(388, 385, 387),\n    COL_TRI(388, 384, 385),\n    COL_TRI(388, 386, 384),\n    COL_TRI(388, 389, 386),\n    COL_TRI(389, 328, 386),\n    COL_TRI(389, 324, 328),\n    COL_TRI(390, 329, 388),\n    COL_TRI(393, 536, 394),\n    COL_TRI(391, 331, 324),\n    COL_TRI(391, 324, 389),\n    COL_TRI(388, 331, 391),\n    COL_TRI(388, 329, 331),\n    COL_TRI(392, 393, 394),\n    COL_TRI(393, 535, 536),\n    COL_TRI(394, 536, 398),\n    COL_TRI(395, 394, 396),\n    COL_TRI(392, 394, 395),\n    COL_TRI(396, 394, 398),\n    COL_TRI(397, 536, 535),\n    COL_TRI(395, 396, 537),\n    COL_TRI(398, 537, 396),\n    COL_TRI(398, 401, 537),\n    COL_TRI(399, 537, 401),\n    COL_TRI(399, 395, 537),\n    COL_TRI(397, 398, 536),\n    COL_TRI(401, 398, 397),\n    COL_TRI(400, 392, 395),\n    COL_TRI(400, 399, 401),\n    COL_TRI(401, 397, 538),\n    COL_TRI(400, 401, 538),\n    COL_TRI(400, 395, 399),\n    COL_TRI(402, 539, 403),\n    COL_TRI(403, 540, 402),\n    COL_TRI(403, 405, 540),\n    COL_TRI(402, 540, 541),\n    COL_TRI(402, 404, 539),\n    COL_TRI(402, 541, 404),\n    COL_TRI(404, 542, 539),\n    COL_TRI(404, 541, 542),\n    COL_TRI(405, 541, 540),\n    COL_TRI(405, 542, 541),\n    COL_TRI(406, 409, 416),\n    COL_TRI(407, 408, 409),\n    COL_TRI(408, 416, 409),\n    COL_TRI(409, 543, 411),\n    COL_TRI(409, 406, 543),\n    COL_TRI(410, 543, 406),\n    COL_TRI(410, 545, 543),\n    COL_TRI(411, 543, 545),\n    COL_TRI(409, 411, 544),\n    COL_TRI(411, 545, 544),\n    COL_TRI(412, 410, 406),\n    COL_TRI(406, 546, 412),\n    COL_TRI(406, 416, 546),\n    COL_TRI(413, 547, 422),\n    COL_TRI(413, 422, 417),\n    COL_TRI(417, 552, 413),\n    COL_TRI(414, 415, 548),\n    COL_TRI(415, 546, 549),\n    COL_TRI(415, 414, 546),\n    COL_TRI(414, 412, 546),\n    COL_TRI(416, 418, 549),\n    COL_TRI(414, 550, 412),\n    COL_TRI(414, 548, 550),\n    COL_TRI(417, 551, 552),\n    COL_TRI(416, 420, 418),\n    COL_TRI(413, 420, 547),\n    COL_TRI(413, 418, 420),\n    COL_TRI(413, 419, 418),\n    COL_TRI(413, 552, 419),\n    COL_TRI(418, 419, 415),\n    COL_TRI(419, 548, 415),\n    COL_TRI(409, 544, 407),\n    COL_TRI(408, 421, 422),\n    COL_TRI(420, 416, 408),\n    COL_TRI(420, 408, 422),\n    COL_TRI(421, 417, 422),\n    COL_TRI(421, 551, 417),\n    COL_TRI(422, 547, 420),\n    COL_TRI(423, 425, 553),\n    COL_TRI(423, 554, 425),\n    COL_TRI(423, 424, 554),\n    COL_TRI(424, 425, 554),\n    COL_TRI(428, 557, 558),\n    COL_TRI(424, 555, 425),\n    COL_TRI(425, 556, 553),\n    COL_TRI(426, 556, 555),\n    COL_TRI(425, 555, 556),\n    COL_TRI(426, 555, 424),\n    COL_TRI(423, 426, 424),\n    COL_TRI(427, 430, 429),\n    COL_TRI(428, 427, 429),\n    COL_TRI(429, 430, 557),\n    COL_TRI(429, 557, 428),\n    COL_TRI(433, 432, 431),\n    COL_TRI(428, 558, 559),\n    COL_TRI(428, 559, 427),\n    COL_TRI(427, 560, 430),\n    COL_TRI(430, 560, 558),\n    COL_TRI(430, 558, 557),\n    COL_TRI(431, 561, 562),\n    COL_TRI(431, 563, 561),\n    COL_TRI(432, 436, 431),\n    COL_TRI(433, 431, 562),\n    COL_TRI(431, 436, 563),\n    COL_TRI(434, 562, 566),\n    COL_TRI(434, 433, 562),\n    COL_TRI(435, 563, 436),\n    COL_TRI(432, 444, 436),\n    COL_TRI(435, 436, 565),\n    COL_TRI(436, 564, 565),\n    COL_TRI(436, 444, 564),\n    COL_TRI(434, 439, 567),\n    COL_TRI(434, 566, 439),\n    COL_TRI(437, 433, 434),\n    COL_TRI(439, 435, 567),\n    COL_TRI(435, 565, 567),\n    COL_TRI(433, 564, 443),\n    COL_TRI(433, 565, 564),\n    COL_TRI(433, 443, 432),\n    COL_TRI(437, 565, 433),\n    COL_TRI(440, 567, 565),\n    COL_TRI(441, 442, 432),\n    COL_TRI(442, 444, 432),\n    COL_TRI(443, 441, 432),\n    COL_TRI(444, 445, 564),\n    COL_TRI(444, 568, 445),\n    COL_TRI(442, 568, 444),\n    COL_TRI(440, 565, 569),\n    COL_TRI(443, 570, 571),\n    COL_TRI(443, 564, 570),\n    COL_TRI(443, 572, 441),\n    COL_TRI(443, 571, 572),\n    COL_TRI(437, 434, 438),\n    COL_TRI(437, 569, 565),\n    COL_TRI(437, 440, 569),\n    COL_TRI(437, 438, 440),\n    COL_TRI(438, 434, 440),\n    COL_TRI(434, 567, 440),\n    COL_TRI(445, 570, 564),\n    COL_TRI(445, 446, 570),\n    COL_TRI(449, 451, 450),\n    COL_TRI(446, 571, 570),\n    COL_TRI(446, 572, 571),\n    COL_TRI(447, 573, 448),\n    COL_TRI(448, 449, 574),\n    COL_TRI(448, 573, 449),\n    COL_TRI(449, 573, 301),\n    COL_TRI(449, 301, 575),\n    COL_TRI(447, 576, 573),\n    COL_TRI(449, 575, 451),\n    COL_TRI(450, 452, 449),\n    COL_TRI(452, 574, 449),\n    COL_TRI(451, 462, 452),\n    COL_TRI(453, 452, 462),\n    COL_TRI(453, 574, 452),\n    COL_TRI(451, 452, 450),\n    COL_TRI(454, 576, 447),\n    COL_TRI(454, 577, 576),\n    COL_TRI(455, 456, 453),\n    COL_TRI(456, 574, 453),\n    COL_TRI(457, 462, 451),\n    COL_TRI(458, 578, 447),\n    COL_TRI(458, 447, 448),\n    COL_TRI(448, 579, 458),\n    COL_TRI(454, 447, 578),\n    COL_TRI(448, 456, 579),\n    COL_TRI(459, 456, 455),\n    COL_TRI(460, 455, 453),\n    COL_TRI(459, 580, 456),\n    COL_TRI(456, 580, 461),\n    COL_TRI(456, 461, 579),\n    COL_TRI(301, 576, 577),\n    COL_TRI(461, 459, 582),\n    COL_TRI(461, 580, 459),\n    COL_TRI(301, 573, 576),\n    COL_TRI(154, 581, 451),\n    COL_TRI(154, 451, 575),\n    COL_TRI(457, 451, 581),\n    COL_TRI(154, 583, 581),\n    COL_TRI(154, 153, 583),\n    COL_TRI(154, 575, 148),\n    COL_TRI(462, 460, 453),\n    COL_TRI(463, 468, 584),\n    COL_TRI(463, 584, 465),\n    COL_TRI(463, 464, 585),\n    COL_TRI(464, 586, 469),\n    COL_TRI(465, 472, 464),\n    COL_TRI(465, 464, 463),\n    COL_TRI(466, 464, 469),\n    COL_TRI(464, 466, 585),\n    COL_TRI(467, 468, 585),\n    COL_TRI(468, 463, 585),\n    COL_TRI(469, 587, 466),\n    COL_TRI(470, 584, 588),\n    COL_TRI(470, 465, 584),\n    COL_TRI(469, 589, 587),\n    COL_TRI(471, 479, 587),\n    COL_TRI(471, 587, 589),\n    COL_TRI(474, 470, 588),\n    COL_TRI(471, 589, 469),\n    COL_TRI(472, 590, 586),\n    COL_TRI(472, 586, 464),\n    COL_TRI(473, 590, 472),\n    COL_TRI(473, 472, 474),\n    COL_TRI(474, 588, 473),\n    COL_TRI(472, 465, 470),\n    COL_TRI(472, 470, 474),\n    COL_TRI(475, 592, 593),\n    COL_TRI(475, 471, 591),\n    COL_TRI(475, 591, 592),\n    COL_TRI(471, 469, 591),\n    COL_TRI(476, 478, 594),\n    COL_TRI(476, 593, 478),\n    COL_TRI(480, 597, 481),\n    COL_TRI(477, 595, 479),\n    COL_TRI(477, 479, 596),\n    COL_TRI(478, 477, 596),\n    COL_TRI(479, 585, 466),\n    COL_TRI(479, 467, 585),\n    COL_TRI(466, 587, 479),\n    COL_TRI(479, 595, 467),\n    COL_TRI(480, 476, 597),\n    COL_TRI(481, 597, 598),\n    COL_TRI(476, 594, 598),\n    COL_TRI(476, 598, 597),\n    COL_TRI(481, 482, 599),\n    COL_TRI(481, 599, 480),\n    COL_TRI(475, 480, 599),\n    COL_TRI(475, 599, 596),\n    COL_TRI(483, 485, 484),\n    COL_TRI(481, 598, 482),\n    COL_TRI(482, 598, 594),\n    COL_TRI(482, 594, 599),\n    COL_TRI(475, 479, 471),\n    COL_TRI(475, 596, 479),\n    COL_TRI(483, 487, 485),\n    COL_TRI(483, 484, 600),\n    COL_TRI(484, 485, 600),\n    COL_TRI(485, 487, 601),\n    COL_TRI(485, 601, 486),\n    COL_TRI(485, 486, 600),\n    COL_TRI(486, 601, 602),\n    COL_TRI(487, 602, 601),\n    COL_TRI(487, 483, 602),\n    COL_TRI(483, 600, 602),\n    COL_TRI(486, 602, 600),\n    COL_TRI(70, 603, 490),\n    COL_TRI(70, 241, 603),\n    COL_TRI(488, 603, 604),\n    COL_TRI(489, 604, 603),\n    COL_TRI(489, 603, 241),\n    COL_TRI(490, 603, 488),\n    COL_TRI(491, 494, 490),\n    COL_TRI(491, 490, 605),\n    COL_TRI(70, 490, 494),\n    COL_TRI(490, 488, 605),\n    COL_TRI(70, 493, 492),\n    COL_TRI(492, 491, 242),\n    COL_TRI(492, 242, 70),\n    COL_TRI(493, 606, 492),\n    COL_TRI(492, 606, 607),\n    COL_TRI(492, 607, 491),\n    COL_TRI(491, 605, 242),\n    COL_TRI(70, 494, 493),\n    COL_TRI(491, 607, 604),\n    COL_TRI(491, 604, 494),\n    COL_TRI(493, 489, 606),\n    COL_TRI(494, 489, 493),\n    COL_TRI(494, 604, 489),\n    COL_TRI(488, 604, 607),\n    COL_TRI(497, 610, 498),\n    COL_TRI(243, 606, 489),\n    COL_TRI(489, 241, 243),\n    COL_TRI(243, 607, 606),\n    COL_TRI(243, 488, 607),\n    COL_TRI(495, 608, 496),\n    COL_TRI(496, 608, 609),\n    COL_TRI(496, 609, 497),\n    COL_TRI(497, 609, 610),\n    COL_TRI(495, 611, 608),\n    COL_TRI(498, 611, 495),\n    COL_TRI(498, 610, 611),\n    COL_TRI(499, 612, 613),\n    COL_TRI(499, 613, 501),\n    COL_TRI(500, 614, 499),\n    COL_TRI(500, 499, 501),\n    COL_TRI(501, 613, 502),\n    COL_TRI(502, 613, 503),\n    COL_TRI(503, 613, 612),\n    COL_TRI(508, 507, 617),\n    COL_TRI(501, 502, 507),\n    COL_TRI(504, 501, 507),\n    COL_TRI(504, 500, 501),\n    COL_TRI(503, 612, 615),\n    COL_TRI(502, 503, 506),\n    COL_TRI(505, 502, 506),\n    COL_TRI(506, 503, 615),\n    COL_TRI(506, 615, 505),\n    COL_TRI(505, 617, 502),\n    COL_TRI(507, 502, 617),\n    COL_TRI(512, 618, 509),\n    COL_TRI(504, 513, 500),\n    COL_TRI(504, 618, 513),\n    COL_TRI(509, 618, 504),\n    COL_TRI(510, 504, 507),\n    COL_TRI(509, 504, 510),\n    COL_TRI(507, 508, 619),\n    COL_TRI(507, 619, 510),\n    COL_TRI(511, 509, 510),\n    COL_TRI(511, 510, 619),\n    COL_TRI(511, 512, 509),\n    COL_TRI(511, 620, 512),\n    COL_TRI(512, 513, 618),\n    COL_TRI(512, 620, 614),\n    COL_TRI(512, 614, 616),\n    COL_TRI(513, 512, 616),\n    COL_TRI(513, 616, 500),\n    COL_TRI(500, 616, 614),\n    COL_TRI(514, 515, 621),\n    COL_TRI(515, 514, 322),\n    COL_TRI(516, 514, 621),\n    COL_TRI(520, 524, 517),\n    COL_TRI(515, 523, 621),\n    COL_TRI(517, 523, 515),\n    COL_TRI(322, 517, 515),\n    COL_TRI(518, 519, 621),\n    COL_TRI(519, 516, 621),\n    COL_TRI(517, 524, 523),\n    COL_TRI(322, 321, 517),\n    COL_TRI(201, 322, 514),\n    COL_TRI(517, 323, 520),\n    COL_TRI(517, 321, 323),\n    COL_TRI(520, 623, 524),\n    COL_TRI(519, 521, 516),\n    COL_TRI(516, 522, 514),\n    COL_TRI(516, 521, 622),\n    COL_TRI(516, 622, 522),\n    COL_TRI(519, 624, 521),\n    COL_TRI(521, 624, 625),\n    COL_TRI(521, 625, 622),\n    COL_TRI(522, 520, 323),\n    COL_TRI(522, 323, 201),\n    COL_TRI(522, 623, 520),\n    COL_TRI(522, 201, 514),\n    COL_TRI(522, 525, 623),\n    COL_TRI(522, 626, 525),\n    COL_TRI(522, 526, 626),\n    COL_TRI(522, 622, 625),\n    COL_TRI(522, 625, 526),\n    COL_TRI(523, 524, 621),\n    COL_TRI(524, 623, 525),\n    COL_TRI(524, 525, 621),\n    COL_TRI(525, 518, 621),\n    COL_TRI(525, 626, 518),\n    COL_TRI(526, 624, 519),\n    COL_TRI(519, 518, 626),\n    COL_TRI(519, 626, 526),\n    COL_TRI(526, 625, 624),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(1),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_null_start, /*pos*/ 1046, -4822, -266, /*yaw*/ 192), // unused, probably an early way to set initial position\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/ttc/areas/1/geo.inc.c",
    "content": "// 0x0E0003B8\nconst GeoLayout ttc_geo_0003B8[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND_COLOR(0xC7FF),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 12800, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(2, 0, 2000, 6000, 0, 0, 0, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_ASM(   0, geo_movtex_pause_control),\n                    GEO_ASM(0x1400, geo_movtex_update_horizontal),\n                    GEO_ASM(0x1401, geo_movtex_update_horizontal),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, ttc_seg7_dl_0700AD38),\n                    GEO_DISPLAY_LIST(LAYER_TRANSPARENT, ttc_seg7_dl_0700B1D8),\n                    GEO_DISPLAY_LIST(LAYER_ALPHA, ttc_seg7_dl_0700E878),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(   0, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttc/areas/1/macro.inc.c",
    "content": "// 0x07015B24 - 0x07015F72\nconst MacroObject ttc_seg7_macro_objs[] = {\n    MACRO_OBJECT               (/*preset*/ macro_ttc_rotating_cube,     /*yaw*/  45, /*pos*/ -1032, -3291,  1070),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_rotating_cube,     /*yaw*/  90, /*pos*/ -1881,  1767,  -446),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_rotating_cube,     /*yaw*/  90, /*pos*/ -1870,  2068,   362),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_rotating_cube,     /*yaw*/ 225, /*pos*/  -770, -4361,  -423),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_rotating_cube,     /*yaw*/ 135, /*pos*/ -1314, -3691,   788),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_rotating_cube,     /*yaw*/ 135, /*pos*/ -1314, -2892,  1353),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_rotating_prism,    /*yaw*/ 315, /*pos*/   780,  5767, -1027),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_rotating_prism,    /*yaw*/ 315, /*pos*/  1063,  5562,  -744),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_pendulum,          /*yaw*/  45, /*pos*/ -1350,   748, -1208),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_pendulum,          /*yaw*/  45, /*pos*/  -690,   901,  -910),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_pendulum,          /*yaw*/  45, /*pos*/ -1389, -3030, -1028),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_pendulum,          /*yaw*/  45, /*pos*/   937, -3867, -1041),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_large_treadmill_1, /*yaw*/ 135, /*pos*/  -139, -4408, -1056),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_small_treadmill_1, /*yaw*/  90, /*pos*/   618,  3656,   148),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_small_treadmill_1, /*yaw*/ 270, /*pos*/   963,  3297,   608),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_small_treadmill_1, /*yaw*/  90, /*pos*/  1306,  2939,  1069),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_small_treadmill_1, /*yaw*/ 315, /*pos*/ -1179, -1453,  -792),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_ttc_push_block,        /*yaw*/ 180, /*pos*/   174,  1248,  2040, /*bhvParam*/ 2),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_ttc_push_block,        /*yaw*/  45, /*pos*/ -1321,  1490, -1563, /*bhvParam*/ 0),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_ttc_push_block,        /*yaw*/  45, /*pos*/ -1076,  1730, -1808, /*bhvParam*/ 5),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_ttc_push_block,        /*yaw*/  45, /*pos*/ -1319,  1970, -1564, /*bhvParam*/ 10),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_ttc_push_block,        /*yaw*/ 180, /*pos*/  -517,  3175,  2040, /*bhvParam*/ 0),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_ttc_push_block,        /*yaw*/ 180, /*pos*/  -170,  1248,  2040, /*bhvParam*/ 1),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_ttc_push_block,        /*yaw*/ 180, /*pos*/  -515,  1248,  2040, /*bhvParam*/ 0),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_ttc_push_block,        /*yaw*/   0, /*pos*/  -175, -1351, -2039, /*bhvParam*/ 0),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_ttc_push_block,        /*yaw*/ 180, /*pos*/  -515, -2590,  2040, /*bhvParam*/ 0),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_ttc_push_block,        /*yaw*/ 180, /*pos*/   518,  3175,  2040, /*bhvParam*/ 3),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_ttc_push_block,        /*yaw*/ 180, /*pos*/  -171,  3175,  2040, /*bhvParam*/ 1),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_ttc_push_block,        /*yaw*/ 180, /*pos*/   174,  3175,  2040, /*bhvParam*/ 2),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_rotating_hexagon,  /*yaw*/   0, /*pos*/  1490, -2088,  -873),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_rotating_hexagon,  /*yaw*/   0, /*pos*/  -708, -1606, -1589),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_rotating_hexagon,  /*yaw*/   0, /*pos*/   954, -1627, -1448),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_rotating_hexagon,  /*yaw*/   0, /*pos*/  1215, -1781, -1215),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_rotating_hexagon,  /*yaw*/   0, /*pos*/  1052, -1934,  -769),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_rotating_triangle, /*yaw*/ 225, /*pos*/  -620,  1229,  1233),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_rotating_triangle, /*yaw*/ 315, /*pos*/  1050,   -19, -1037),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_pit_block_1,       /*yaw*/ 315, /*pos*/ -1100,   -71, -1030),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_clock_hand,        /*yaw*/ 225, /*pos*/     0,  6011,     0),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_clock_hand,        /*yaw*/  45, /*pos*/     0, -2487,     0),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_spinner,           /*yaw*/ 135, /*pos*/  1102, -3619,  1682),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_spinner,           /*yaw*/  90, /*pos*/   424, -3312,  1959),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_spinner,           /*yaw*/ 135, /*pos*/  1102, -3004,  1682),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_spinner,           /*yaw*/ 135, /*pos*/  1584, -2697,  1200),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_spinner,           /*yaw*/ 135, /*pos*/  1582, -3619,  1203),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_spinner,           /*yaw*/ 135, /*pos*/  -762,  4347,  1047),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_spinner,           /*yaw*/  90, /*pos*/   424, -3926,  1959),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_spinner,           /*yaw*/ 135, /*pos*/  1102, -4233,  1682),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_spinner,           /*yaw*/ 135, /*pos*/  1102, -4848,  1682),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_spinner,           /*yaw*/  90, /*pos*/   424, -4540,  1959),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_spinner,           /*yaw*/ 315, /*pos*/ -1037,  4244,   772),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_spinner,           /*yaw*/   0, /*pos*/  1828,  3835,   -50),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_spinner,           /*yaw*/   0, /*pos*/  1459,  3835,  -357),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_spinner,           /*yaw*/   0, /*pos*/  1091,  3835,  -665),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_small_gear,        /*yaw*/   0, /*pos*/  1580, -4854,  -825),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_small_gear,        /*yaw*/   0, /*pos*/ -1692,  1022, -1157),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_small_gear,        /*yaw*/   0, /*pos*/  2098,  7007,  2243),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_large_gear,        /*yaw*/   0, /*pos*/  1801, -4843,  -731),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_large_gear,        /*yaw*/   0, /*pos*/ -1477,  1044, -1088),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_large_gear,        /*yaw*/   0, /*pos*/  2268,  7030,  2227),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,              /*yaw*/   0, /*pos*/   800, -4400,  1900),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,              /*yaw*/   0, /*pos*/   800, -3700,  1900),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,              /*yaw*/   0, /*pos*/   800, -3000,  1900),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,              /*yaw*/   0, /*pos*/  1780, -3300,  1000),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,              /*yaw*/   0, /*pos*/  1388, -3300,  1428),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,              /*yaw*/   0, /*pos*/   200, -3000,  2000),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,              /*yaw*/   0, /*pos*/   200, -3700,  2000),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,              /*yaw*/   0, /*pos*/   200, -4400,  2000),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_in_pole,    /*yaw*/   0, /*pos*/ -1080,    90,  1575),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_ttc_elevator_platform, /*yaw*/  45, /*pos*/ -1179,   445,  1413, /*bhvParam*/ 6),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_ttc_elevator_platform, /*yaw*/ 315, /*pos*/ -1524, -1454,  1129, /*bhvParam*/ 2),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_circling_amp,          /*yaw*/   0, /*pos*/  -980,  -700,  1450, /*bhvParam*/ AMP_BP_ROT_RADIUS_300),\n    MACRO_OBJECT               (/*preset*/ macro_blue_coin_switch,      /*yaw*/  45, /*pos*/ -1203,   -19,  -170),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,      /*yaw*/   0, /*pos*/     0,    20, -1400),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,      /*yaw*/   0, /*pos*/  -250,    20, -1700),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,      /*yaw*/   0, /*pos*/   250,    20, -1700),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,      /*yaw*/   0, /*pos*/     0,    20, -2000),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,      /*yaw*/   0, /*pos*/   500,    20, -2000),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,      /*yaw*/   0, /*pos*/  -500,    20, -2000),\n    MACRO_OBJECT               (/*preset*/ macro_heave_ho,              /*yaw*/   0, /*pos*/   880,   -19,  1160),\n    MACRO_OBJECT               (/*preset*/ macro_fire_spitter,          /*yaw*/   0, /*pos*/   800, -2460,   160),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,  /*yaw*/  45, /*pos*/ -1120,  -820,  1320),\n    MACRO_OBJECT               (/*preset*/ macro_fire_spitter,          /*yaw*/   0, /*pos*/  -571,  6020, -1414),\n    MACRO_OBJECT               (/*preset*/ macro_recovery_heart,        /*yaw*/   0, /*pos*/   620, -5150,  1540),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,    /*yaw*/   0, /*pos*/  -520,  1351,  1919),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,    /*yaw*/   0, /*pos*/  -165,  1351,  1919),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,    /*yaw*/   0, /*pos*/   182,  1351,  1919),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_hidden_1up,            /*yaw*/   0, /*pos*/   657,  1368,  1879, /*bhvParam*/ 3),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_circling_amp,          /*yaw*/   0, /*pos*/  -700, -2350,  -700, /*bhvParam*/ AMP_BP_ROT_RADIUS_300),\n    MACRO_OBJECT               (/*preset*/ macro_box_1up,               /*yaw*/   0, /*pos*/  1883,  4150,   550),\n    MACRO_OBJECT               (/*preset*/ macro_recovery_heart,        /*yaw*/   0, /*pos*/ -1333,   350,  1116),\n    MACRO_OBJECT               (/*preset*/ macro_box_1up,               /*yaw*/  45, /*pos*/ -1101,  6316,  -685),\n    MACRO_OBJECT               (/*preset*/ macro_bobomb,                /*yaw*/   0, /*pos*/  1077, -4822,   638),\n    MACRO_OBJECT               (/*preset*/ macro_bobomb,                /*yaw*/   0, /*pos*/  1683, -4822,   189),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,      /*yaw*/   0, /*pos*/     0,    20, -1700),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_rotating_hexagon,  /*yaw*/   0, /*pos*/ -1020,  1229,   537),\n    MACRO_OBJECT               (/*preset*/ macro_box_ten_coins,         /*yaw*/  45, /*pos*/  2350,  5600,  2350),\n    MACRO_OBJECT               (/*preset*/ macro_box_ten_coins,         /*yaw*/   0, /*pos*/     0,  4783,     0),\n    MACRO_OBJECT               (/*preset*/ macro_box_three_coins,       /*yaw*/  45, /*pos*/ -1140, -3720, -1620),\n    MACRO_OBJECT               (/*preset*/ macro_box_three_coins,       /*yaw*/  45, /*pos*/   840, -2200,   860),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,         /*yaw*/   0, /*pos*/  -770, -3800,  -440),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,         /*yaw*/   0, /*pos*/  -770, -3700,  -440),\n    MACRO_OBJECT               (/*preset*/ macro_box_ten_coins,         /*yaw*/   0, /*pos*/   280, -4920,  1660),\n    MACRO_OBJECT               (/*preset*/ macro_box_three_coins,       /*yaw*/  45, /*pos*/  1240,   300,   840),\n    MACRO_OBJECT               (/*preset*/ macro_box_three_coins,       /*yaw*/  45, /*pos*/   520,   300,  1500),\n    MACRO_OBJECT               (/*preset*/ macro_box_ten_coins,         /*yaw*/   0, /*pos*/  -400,  3600,  1880),\n    MACRO_OBJECT               (/*preset*/ macro_box_three_coins,       /*yaw*/   0, /*pos*/   -40,  4160, -1280),\n    MACRO_OBJECT               (/*preset*/ macro_box_three_coins,       /*yaw*/  45, /*pos*/ -1160,  2920,  -840),\n    MACRO_OBJECT               (/*preset*/ macro_box_ten_coins,         /*yaw*/  45, /*pos*/  -780,  6316, -1020),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_large_treadmill_2, /*yaw*/  45, /*pos*/  1313,  6190,  1313),\n    MACRO_OBJECT               (/*preset*/ macro_ttc_small_treadmill_2, /*yaw*/   0, /*pos*/  1851, -2488,   -98),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/ttc/areas/1/movtext.inc.c",
    "content": "// 0x07015F78 - 0x07015F90\nstatic const Lights1 ttc_lights_surface_treadmill = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07015F90 - 0x07016790\nALIGNED8 const Texture ttc_yellow_triangle[] = {\n#include \"levels/ttc/2.rgba16.inc.c\"\n};\n\n// 0x07016790 - 0x07016808\nconst Gfx ttc_dl_surface_treadmill_begin[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(200, 255, 255, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsSPLight(&ttc_lights_surface_treadmill.l, 1),\n    gsSPLight(&ttc_lights_surface_treadmill.a, 2),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x07016808 - 0x07016840\nconst Gfx ttc_dl_surface_treadmill_end[] = {\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x07016840 - 0x07016904\nMovtex ttc_movtex_tris_big_surface_treadmill[] = {\n    MOV_TEX_SPD(     120),\n    MOV_TEX_ROT_TRIS( 230, -86,  549,  0,   0,  127,  0, 0),\n    MOV_TEX_ROT_TRIS( 230, -35,  549,  0,  33,  122,  1, 0),\n    MOV_TEX_ROT_TRIS( 230,   0,  512,  0, 110,   62,  2, 0),\n    MOV_TEX_ROT_TRIS( 230,   0, -511,  0, 123,  -31, 14, 0),\n    MOV_TEX_ROT_TRIS( 230, -35, -547,  0,  65, -108, 15, 0),\n    MOV_TEX_ROT_TRIS( 230, -86, -547,  0,   0, -127, 16, 0),\n    MOV_TEX_ROT_TRIS(-229, -86,  549,  0,   0,  127,  0, 1),\n    MOV_TEX_ROT_TRIS(-229, -35,  549,  0,  66,  108,  1, 1),\n    MOV_TEX_ROT_TRIS(-229,   0,  512,  0, 123,   31,  2, 1),\n    MOV_TEX_ROT_TRIS(-229,   0, -511,  0, 110,  -63, 14, 1),\n    MOV_TEX_ROT_TRIS(-229, -35, -547,  0,  32, -122, 15, 1),\n    MOV_TEX_ROT_TRIS(-229, -86, -547,  0,   0, -127, 16, 1),\n    MOV_TEX_END(),\n};\n\n// 0x07016904 - 0x070169C8\nMovtex ttc_movtex_tris_small_surface_treadmill[] = {\n    MOV_TEX_SPD(     120),\n    MOV_TEX_ROT_TRIS( 230, -86,  344,  0,   0,  127,  0, 0),\n    MOV_TEX_ROT_TRIS( 230, -35,  344,  0,  32,  122,  1, 0),\n    MOV_TEX_ROT_TRIS( 230,   0,  308,  0, 110,   63,  2, 0),\n    MOV_TEX_ROT_TRIS( 230,   0, -306,  0, 123,  -31,  9, 0),\n    MOV_TEX_ROT_TRIS( 230, -35, -342,  0,  65, -108, 10, 0),\n    MOV_TEX_ROT_TRIS( 230, -86, -342,  0,   0, -127, 11, 0),\n    MOV_TEX_ROT_TRIS(-229, -86,  344,  0,   0,  127,  0, 1),\n    MOV_TEX_ROT_TRIS(-229, -35,  344,  0,  65,  108,  1, 1),\n    MOV_TEX_ROT_TRIS(-229,   0,  308,  0, 123,   31,  2, 1),\n    MOV_TEX_ROT_TRIS(-229,   0, -306,  0, 110,  -63,  9, 1),\n    MOV_TEX_ROT_TRIS(-229, -35, -342,  0,  32, -122, 10, 1),\n    MOV_TEX_ROT_TRIS(-229, -86, -342,  0,   0, -127, 11, 1),\n    MOV_TEX_END(),\n};\n\n// 0x070169C8 - 0x07016A20\nconst Gfx ttc_dl_surface_treadmill[] = {\n    gsSP2Triangles( 0,  1,  6, 0x0,  1,  7,  6, 0x0),\n    gsSP2Triangles( 1,  2,  7, 0x0,  2,  8,  7, 0x0),\n    gsSP2Triangles( 2,  3,  8, 0x0,  3,  9,  8, 0x0),\n    gsSP2Triangles( 3,  4,  9, 0x0,  4, 10,  9, 0x0),\n    gsSP2Triangles( 4,  5, 10, 0x0,  5, 11, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttc/clock_hand/collision.inc.c",
    "content": "// 0x070158E0 - 0x070159D0\nconst Collision ttc_seg7_collision_clock_main_rotation[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0xE),\n    COL_VERTEX(86, 0, -81),\n    COL_VERTEX(-85, 41, -81),\n    COL_VERTEX(86, 41, -81),\n    COL_VERTEX(-85, 41, 1336),\n    COL_VERTEX(86, 41, 1336),\n    COL_VERTEX(-85, 0, -81),\n    COL_VERTEX(-85, 0, 1336),\n    COL_VERTEX(-180, 41, 1295),\n    COL_VERTEX(0, 41, 1577),\n    COL_VERTEX(86, 0, 1336),\n    COL_VERTEX(181, 41, 1295),\n    COL_VERTEX(0, 0, 1577),\n    COL_VERTEX(-180, 0, 1295),\n    COL_VERTEX(181, 0, 1295),\n    COL_TRI_INIT(SURFACE_DEFAULT, 24),\n    COL_TRI(0, 1, 2),\n    COL_TRI(2, 3, 4),\n    COL_TRI(2, 1, 3),\n    COL_TRI(0, 5, 1),\n    COL_TRI(6, 3, 1),\n    COL_TRI(3, 7, 8),\n    COL_TRI(8, 4, 3),\n    COL_TRI(0, 2, 4),\n    COL_TRI(0, 4, 9),\n    COL_TRI(8, 10, 4),\n    COL_TRI(3, 12, 7),\n    COL_TRI(3, 6, 12),\n    COL_TRI(9, 6, 5),\n    COL_TRI(11, 6, 9),\n    COL_TRI(11, 12, 6),\n    COL_TRI(7, 12, 11),\n    COL_TRI(7, 11, 8),\n    COL_TRI(11, 9, 13),\n    COL_TRI(8, 11, 13),\n    COL_TRI(8, 13, 10),\n    COL_TRI(10, 13, 9),\n    COL_TRI(10, 9, 4),\n    COL_TRI(9, 5, 0),\n    COL_TRI(6, 1, 5),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/ttc/clock_hand/geo.inc.c",
    "content": "// 0x0E000358\nconst GeoLayout ttc_geo_000358[] = {\n    GEO_CULLING_RADIUS(1700),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, ttc_seg7_dl_07011B38),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttc/clock_hand/model.inc.c",
    "content": "// 0x07011758 - 0x07011770\nstatic const Lights1 ttc_seg7_lights_07011758 = gdSPDefLights1(\n    0x5a, 0x41, 0x23,\n    0xb4, 0x82, 0x46, 0x28, 0x28, 0x28\n);\n\n// 0x07011770 - 0x07011788\nstatic const Lights1 ttc_seg7_lights_07011770 = gdSPDefLights1(\n    0x7f, 0x66, 0x32,\n    0xff, 0xcc, 0x65, 0x28, 0x28, 0x28\n);\n\n// 0x07011788 - 0x070117A0\nstatic const Lights1 ttc_seg7_lights_07011788 = gdSPDefLights1(\n    0x49, 0x00, 0x00,\n    0x93, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x070117A0 - 0x070117B8\nstatic const Lights1 ttc_seg7_lights_070117A0 = gdSPDefLights1(\n    0x7f, 0x00, 0x00,\n    0xff, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x070117B8 - 0x07011838\nstatic const Vtx ttc_seg7_vertex_070117B8[] = {\n    {{{    86,      0,    -81}, 0, {   994,    288}, {0x54, 0xd6, 0xac, 0xff}}},\n    {{{   -85,     41,    -81}, 0, {   994,    670}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{    86,     41,    -81}, 0, {   994,    288}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{   -85,      0,    -81}, 0, {   994,    670}, {0xcd, 0x99, 0xcd, 0xff}}},\n    {{{   -85,      0,   1336}, 0, {   136,    670}, {0xc7, 0x94, 0xdf, 0xff}}},\n    {{{   -85,     41,   1336}, 0, {   136,    670}, {0xfb, 0x73, 0xcc, 0xff}}},\n    {{{    86,     41,   1336}, 0, {   136,    288}, {0x39, 0x6c, 0xdf, 0xff}}},\n    {{{    86,      0,   1336}, 0, {   136,    288}, {0x05, 0x8d, 0xcc, 0xff}}},\n};\n\n// 0x07011838 - 0x070118B8\nstatic const Vtx ttc_seg7_vertex_07011838[] = {\n    {{{    86,     41,    -81}, 0, {   994,    288}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{   -85,     41,    -81}, 0, {   994,    670}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{   -85,     41,   1336}, 0, {   136,    670}, {0xfb, 0x73, 0xcc, 0xff}}},\n    {{{    86,     41,   1336}, 0, {   136,    288}, {0x39, 0x6c, 0xdf, 0xff}}},\n    {{{    86,      0,   1336}, 0, {   136,    288}, {0x05, 0x8d, 0xcc, 0xff}}},\n    {{{   -85,      0,    -81}, 0, {   994,    670}, {0xcd, 0x99, 0xcd, 0xff}}},\n    {{{    86,      0,    -81}, 0, {   994,    288}, {0x54, 0xd6, 0xac, 0xff}}},\n    {{{   -85,      0,   1336}, 0, {   136,    670}, {0xc7, 0x94, 0xdf, 0xff}}},\n};\n\n// 0x070118B8 - 0x07011958\nstatic const Vtx ttc_seg7_vertex_070118B8[] = {\n    {{{   -85,     41,   1336}, 0, {   136,    670}, {0xfb, 0x73, 0xcc, 0xff}}},\n    {{{   -85,      0,   1336}, 0, {   136,    670}, {0xc7, 0x94, 0xdf, 0xff}}},\n    {{{  -180,      0,   1295}, 0, {   160,    880}, {0xfd, 0xb3, 0x9c, 0xff}}},\n    {{{  -180,     41,   1295}, 0, {   160,    880}, {0x9d, 0x4d, 0x0c, 0xff}}},\n    {{{     0,      0,   1577}, 0, {   -10,    478}, {0xe2, 0x94, 0x3a, 0xff}}},\n    {{{     0,     41,   1577}, 0, {   -10,    478}, {0x1e, 0x6c, 0x3a, 0xff}}},\n    {{{   181,      0,   1295}, 0, {   160,     78}, {0x63, 0xb3, 0x0c, 0xff}}},\n    {{{   181,     41,   1295}, 0, {   160,     78}, {0x03, 0x4d, 0x9c, 0xff}}},\n    {{{    86,      0,   1336}, 0, {   136,    288}, {0x05, 0x8d, 0xcc, 0xff}}},\n    {{{    86,     41,   1336}, 0, {   136,    288}, {0x39, 0x6c, 0xdf, 0xff}}},\n};\n\n// 0x07011958 - 0x070119F8\nstatic const Vtx ttc_seg7_vertex_07011958[] = {\n    {{{     0,     41,   1577}, 0, {   -10,    478}, {0x1e, 0x6c, 0x3a, 0xff}}},\n    {{{    86,     41,   1336}, 0, {   136,    288}, {0x39, 0x6c, 0xdf, 0xff}}},\n    {{{   -85,     41,   1336}, 0, {   136,    670}, {0xfb, 0x73, 0xcc, 0xff}}},\n    {{{  -180,     41,   1295}, 0, {   160,    880}, {0x9d, 0x4d, 0x0c, 0xff}}},\n    {{{   181,     41,   1295}, 0, {   160,     78}, {0x03, 0x4d, 0x9c, 0xff}}},\n    {{{     0,      0,   1577}, 0, {   -10,    478}, {0xe2, 0x94, 0x3a, 0xff}}},\n    {{{    86,      0,   1336}, 0, {   136,    288}, {0x05, 0x8d, 0xcc, 0xff}}},\n    {{{   181,      0,   1295}, 0, {   160,     78}, {0x63, 0xb3, 0x0c, 0xff}}},\n    {{{  -180,      0,   1295}, 0, {   160,    880}, {0xfd, 0xb3, 0x9c, 0xff}}},\n    {{{   -85,      0,   1336}, 0, {   136,    670}, {0xc7, 0x94, 0xdf, 0xff}}},\n};\n\n// 0x070119F8 - 0x07011B38\nstatic const Gfx ttc_seg7_dl_070119F8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttc_seg7_lights_07011758.l, 1),\n    gsSPLight(&ttc_seg7_lights_07011758.a, 2),\n    gsSPVertex(ttc_seg7_vertex_070117B8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  1, 0x0,  4,  1,  3, 0x0),\n    gsSP2Triangles( 0,  2,  6, 0x0,  0,  6,  7, 0x0),\n    gsSPLight(&ttc_seg7_lights_07011770.l, 1),\n    gsSPLight(&ttc_seg7_lights_07011770.a, 2),\n    gsSPVertex(ttc_seg7_vertex_07011838, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPLight(&ttc_seg7_lights_07011788.l, 1),\n    gsSPLight(&ttc_seg7_lights_07011788.a, 2),\n    gsSPVertex(ttc_seg7_vertex_070118B8, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  7,  8,  9, 0x0),\n    gsSPLight(&ttc_seg7_lights_070117A0.l, 1),\n    gsSPLight(&ttc_seg7_lights_070117A0.a, 2),\n    gsSPVertex(ttc_seg7_vertex_07011958, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  9, 0x0,  5,  9,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07011B38 - 0x07011BE0\nconst Gfx ttc_seg7_dl_07011B38[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(200, 255, 255, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttc_seg7_dl_070119F8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttc/elevator_platform/collision.inc.c",
    "content": "// 0x0701585C - 0x070158E0\nconst Collision ttc_seg7_collision_clock_platform[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(256, -153, -127),\n    COL_VERTEX(256, 0, -127),\n    COL_VERTEX(256, 0, 128),\n    COL_VERTEX(-255, 0, -127),\n    COL_VERTEX(-255, 0, 128),\n    COL_VERTEX(-255, -153, 128),\n    COL_VERTEX(256, -153, 128),\n    COL_VERTEX(-255, -153, -127),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI(1, 4, 2),\n    COL_TRI(1, 3, 4),\n    COL_TRI(5, 4, 3),\n    COL_TRI(2, 4, 5),\n    COL_TRI(0, 2, 6),\n    COL_TRI(2, 5, 6),\n    COL_TRI(0, 7, 3),\n    COL_TRI(5, 3, 7),\n    COL_TRI(6, 7, 0),\n    COL_TRI(6, 5, 7),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/ttc/elevator_platform/geo.inc.c",
    "content": "// 0x0E000340\nconst GeoLayout ttc_geo_000340[] = {\n    GEO_CULLING_RADIUS(380),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, ttc_seg7_dl_070116A8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttc/elevator_platform/model.inc.c",
    "content": "// 0x07011428 - 0x07011440\nstatic const Lights1 ttc_seg7_lights_07011428 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07011440 - 0x07011530\nstatic const Vtx ttc_seg7_vertex_07011440[] = {\n    {{{   256,   -153,   -127}, 0, {  3034,    990}, {0x54, 0xd6, 0xac, 0xff}}},\n    {{{   256,      0,    128}, 0, { -2074,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{   256,   -153,    128}, 0, { -2074,    990}, {0x33, 0x99, 0x33, 0xff}}},\n    {{{   256,   -153,    128}, 0, {     0,    990}, {0x33, 0x99, 0x33, 0xff}}},\n    {{{  -255,   -153,    128}, 0, {     0,    990}, {0xac, 0xd6, 0x54, 0xff}}},\n    {{{  -255,   -153,   -127}, 0, {  4056,    990}, {0xcd, 0x99, 0xcd, 0xff}}},\n    {{{   256,   -153,   -127}, 0, {  4056,    990}, {0x54, 0xd6, 0xac, 0xff}}},\n    {{{   256,      0,    128}, 0, {  6100,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  -255,   -153,    128}, 0, { -4118,    990}, {0xac, 0xd6, 0x54, 0xff}}},\n    {{{   256,   -153,    128}, 0, {  6100,    990}, {0x33, 0x99, 0x33, 0xff}}},\n    {{{  -255,      0,    128}, 0, { -4118,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{   256,   -153,   -127}, 0, { -5140,    990}, {0x54, 0xd6, 0xac, 0xff}}},\n    {{{  -255,   -153,   -127}, 0, {  5078,    990}, {0xcd, 0x99, 0xcd, 0xff}}},\n    {{{  -255,      0,   -127}, 0, {  5078,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{   256,      0,   -127}, 0, { -5140,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n};\n\n// 0x07011530 - 0x070115A0\nstatic const Vtx ttc_seg7_vertex_07011530[] = {\n    {{{  -255,   -153,    128}, 0, {  3034,    990}, {0xac, 0xd6, 0x54, 0xff}}},\n    {{{  -255,      0,    128}, 0, {  3034,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  -255,      0,   -127}, 0, { -2074,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{   256,   -153,   -127}, 0, {  3034,    990}, {0x54, 0xd6, 0xac, 0xff}}},\n    {{{   256,      0,   -127}, 0, {  3034,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{   256,      0,    128}, 0, { -2074,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  -255,   -153,   -127}, 0, { -2074,    990}, {0xcd, 0x99, 0xcd, 0xff}}},\n};\n\n// 0x070115A0 - 0x070115E0\nstatic const Vtx ttc_seg7_vertex_070115A0[] = {\n    {{{   256,      0,   -127}, 0, {   990,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  -255,      0,    128}, 0, {     0,    990}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{   256,      0,    128}, 0, {   990,    990}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  -255,      0,   -127}, 0, {     0,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n};\n\n// 0x070115E0 - 0x07011670\nstatic const Gfx ttc_seg7_dl_070115E0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttc_seg7_lights_07011428.l, 1),\n    gsSPLight(&ttc_seg7_lights_07011428.a, 2),\n    gsSPVertex(ttc_seg7_vertex_07011440, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07011530, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  2,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07011670 - 0x070116A8\nstatic const Gfx ttc_seg7_dl_07011670[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttc_seg7_vertex_070115A0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070116A8 - 0x07011758\nconst Gfx ttc_seg7_dl_070116A8[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(200, 255, 255, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttc_seg7_dl_070115E0),\n    gsSPDisplayList(ttc_seg7_dl_07011670),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttc/geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"game/level_geo.h\"\n#include \"game/geo_misc.h\"\n#include \"game/camera.h\"\n#include \"game/moving_texture.h\"\n#include \"game/screen_transition.h\"\n#include \"game/paintings.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"levels/ttc/header.h\"\n\n#include \"levels/ttc/rotating_cube/geo.inc.c\"\n#include \"levels/ttc/rotating_prism/geo.inc.c\"\n#include \"levels/ttc/pendulum/geo.inc.c\"\n#include \"levels/ttc/large_treadmill/geo.inc.c\"\n#include \"levels/ttc/small_treadmill/geo.inc.c\"\n#include \"levels/ttc/push_block/geo.inc.c\"\n#include \"levels/ttc/rotating_hexagon/geo.inc.c\"\n#include \"levels/ttc/rotating_triangle/geo.inc.c\"\n#include \"levels/ttc/pit_block/geo.inc.c\"\n#include \"levels/ttc/pit_block_2/geo.inc.c\"\n#include \"levels/ttc/elevator_platform/geo.inc.c\"\n#include \"levels/ttc/clock_hand/geo.inc.c\"\n#include \"levels/ttc/spinner/geo.inc.c\"\n#include \"levels/ttc/small_gear/geo.inc.c\"\n#include \"levels/ttc/large_gear/geo.inc.c\"\n#include \"levels/ttc/areas/1/geo.inc.c\"\n"
  },
  {
    "path": "levels/ttc/header.h",
    "content": "#ifndef TTC_HEADER_H\n#define TTC_HEADER_H\n\n#include \"types.h\"\n\n// geo\nextern const GeoLayout ttc_geo_000240[];\nextern const GeoLayout ttc_geo_000258[];\nextern const GeoLayout ttc_geo_000270[];\nextern const GeoLayout ttc_geo_000288[];\nextern const GeoLayout ttc_geo_0002A8[];\nextern const GeoLayout ttc_geo_0002C8[];\nextern const GeoLayout ttc_geo_0002E0[];\nextern const GeoLayout ttc_geo_0002F8[];\nextern const GeoLayout ttc_geo_000310[];\nextern const GeoLayout ttc_geo_000328[];\nextern const GeoLayout ttc_geo_000340[];\nextern const GeoLayout ttc_geo_000358[];\nextern const GeoLayout ttc_geo_000370[];\nextern const GeoLayout ttc_geo_000388[];\nextern const GeoLayout ttc_geo_0003A0[];\nextern const GeoLayout ttc_geo_0003B8[];\n\n// leveldata\nextern const Gfx ttc_seg7_dl_0700AD38[];\nextern const Gfx ttc_seg7_dl_0700B1D8[];\nextern const Gfx ttc_seg7_dl_0700E878[];\nextern const Gfx ttc_seg7_dl_0700ECB8[];\nextern const Gfx ttc_seg7_dl_0700EFE0[];\nextern const Gfx ttc_seg7_dl_0700F760[];\nextern const Gfx ttc_seg7_dl_0700FBB8[];\nextern const Gfx ttc_seg7_dl_0700FFE8[];\nextern const Gfx ttc_seg7_dl_070102B8[];\nextern const Gfx ttc_seg7_dl_07010868[];\nextern const Gfx ttc_seg7_dl_07010D38[];\nextern const Gfx ttc_seg7_dl_07011040[];\nextern const Gfx ttc_seg7_dl_07011360[];\nextern const Gfx ttc_seg7_dl_070116A8[];\nextern const Gfx ttc_seg7_dl_07011B38[];\nextern const Gfx ttc_seg7_dl_07012028[];\nextern const Gfx ttc_seg7_dl_07012148[];\nextern const Gfx ttc_seg7_dl_07012278[];\nextern const Collision ttc_seg7_collision_level[];\nextern const Collision ttc_seg7_collision_07014F70[];\nextern const Collision ttc_seg7_collision_07015008[];\nextern const Collision ttc_seg7_collision_clock_pendulum[];\nextern const Collision ttc_seg7_collision_070152B4[];\nextern const Collision ttc_seg7_collision_070153E0[];\nextern const Collision ttc_seg7_collision_sliding_surface[];\nextern const Collision ttc_seg7_collision_07015584[];\nextern const Collision ttc_seg7_collision_07015650[];\nextern const Collision ttc_seg7_collision_07015754[];\nextern const Collision ttc_seg7_collision_070157D8[];\nextern const Collision ttc_seg7_collision_clock_platform[];\nextern const Collision ttc_seg7_collision_clock_main_rotation[];\nextern const Collision ttc_seg7_collision_rotating_clock_platform2[];\nextern const MacroObject ttc_seg7_macro_objs[];\nextern const u8 ttc_yellow_triangle[];\nextern const Gfx ttc_dl_surface_treadmill_begin[];\nextern const Gfx ttc_dl_surface_treadmill_end[];\nextern Movtex ttc_movtex_tris_big_surface_treadmill[];\nextern Movtex ttc_movtex_tris_small_surface_treadmill[];\nextern const Gfx ttc_dl_surface_treadmill[];\n\n// script\nextern const LevelScript level_ttc_entry[];\n\n#endif\n"
  },
  {
    "path": "levels/ttc/large_gear/collision.inc.c",
    "content": "// Blank File\n\n"
  },
  {
    "path": "levels/ttc/large_gear/geo.inc.c",
    "content": "// 0x0E0003A0\nconst GeoLayout ttc_geo_0003A0[] = {\n    GEO_CULLING_RADIUS(300),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, ttc_seg7_dl_07012278),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttc/large_gear/model.inc.c",
    "content": "// 0x07012200 - 0x07012240\nstatic const Vtx ttc_seg7_vertex_07012200[] = {\n    {{{   154,      0,   -153}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -153,      0,   -153}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -153,      0,    154}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   154,      0,    154}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07012240 - 0x07012278\nstatic const Gfx ttc_seg7_dl_07012240[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ttc_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttc_seg7_vertex_07012200, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07012278 - 0x07012330\nconst Gfx ttc_seg7_dl_07012278[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(200, 255, 255, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttc_seg7_dl_07012240),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttc/large_treadmill/collision.inc.c",
    "content": "// 0x070152B4 - 0x070153E0\nconst Collision ttc_seg7_collision_070152B4[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x14),\n    COL_VERTEX(-229, -137, -547),\n    COL_VERTEX(230, -86, -547),\n    COL_VERTEX(230, -137, -547),\n    COL_VERTEX(-229, -86, -547),\n    COL_VERTEX(-229, 0, -511),\n    COL_VERTEX(-229, -137, -511),\n    COL_VERTEX(-229, -35, -547),\n    COL_VERTEX(-229, 0, 512),\n    COL_VERTEX(-229, -137, 512),\n    COL_VERTEX(-229, -137, 549),\n    COL_VERTEX(-229, -35, 549),\n    COL_VERTEX(230, -137, -511),\n    COL_VERTEX(230, 0, -511),\n    COL_VERTEX(230, 0, 512),\n    COL_VERTEX(230, -137, 549),\n    COL_VERTEX(230, -35, -547),\n    COL_VERTEX(230, -35, 549),\n    COL_VERTEX(230, -137, 512),\n    COL_VERTEX(-229, -86, 549),\n    COL_VERTEX(230, -86, 549),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 28),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI(4, 0, 5),\n    COL_TRI(4, 6, 0),\n    COL_TRI(5, 7, 4),\n    COL_TRI(5, 8, 7),\n    COL_TRI(8, 9, 10),\n    COL_TRI(8, 10, 7),\n    COL_TRI(2, 14, 9),\n    COL_TRI(11, 15, 12),\n    COL_TRI(11, 2, 15),\n    COL_TRI(12, 17, 11),\n    COL_TRI(12, 13, 17),\n    COL_TRI(13, 14, 17),\n    COL_TRI(13, 16, 14),\n    COL_TRI(14, 18, 9),\n    COL_TRI(14, 19, 18),\n    COL_TRI(16, 10, 18),\n    COL_TRI(2, 9, 0),\n    COL_TRI(15, 4, 12),\n    COL_TRI(15, 6, 4),\n    COL_TRI(1, 3, 6),\n    COL_TRI(1, 6, 15),\n    COL_TRI(16, 18, 19),\n    COL_TRI(13, 10, 16),\n    COL_TRI(13, 7, 10),\n    COL_TRI(12, 7, 13),\n    COL_TRI(12, 4, 7),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/ttc/large_treadmill/geo.inc.c",
    "content": "// 0x0E000288\nconst GeoLayout ttc_geo_000288[] = {\n    GEO_CULLING_RADIUS(720),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, ttc_seg7_dl_0700FBB8),\n        GEO_ASM(0x1400, geo_movtex_draw_colored_no_update),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttc/large_treadmill/model.inc.c",
    "content": "// 0x0700F830 - 0x0700F848\nstatic const Lights1 ttc_seg7_lights_0700F830 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700F848 - 0x0700F860\nstatic const Lights1 ttc_seg7_lights_0700F848 = gdSPDefLights1(\n    0x46, 0x46, 0x46,\n    0x8c, 0x8c, 0x8c, 0x28, 0x28, 0x28\n);\n\n// 0x0700F860 - 0x0700F8E0\nstatic const Vtx ttc_seg7_vertex_0700F860[] = {\n    {{{  -229,   -137,   -511}, 0, {  4810,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -229,      0,    512}, 0, { -2758,    -34}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -229,      0,   -511}, 0, {  4810,    -34}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -229,   -137,    512}, 0, { -2758,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   230,      0,   -511}, 0, {  4810,    -34}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   230,   -137,    512}, 0, { -2758,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   230,   -137,   -511}, 0, {  4810,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   230,      0,    512}, 0, { -2758,    -34}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700F8E0 - 0x0700F9C0\nstatic const Vtx ttc_seg7_vertex_0700F8E0[] = {\n    {{{   230,   -137,   -511}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   230,    -35,   -547}, 0, {   334,    234}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   230,      0,   -511}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -229,   -137,   -547}, 0, {   334,    990}, {0xac, 0xd6, 0xac, 0xff}}},\n    {{{  -229,    -86,   -547}, 0, {   334,    612}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   230,    -86,   -547}, 0, {   334,    612}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   230,   -137,   -547}, 0, {   334,    990}, {0x33, 0x99, 0xcd, 0xff}}},\n    {{{  -229,      0,   -511}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -229,    -35,   -547}, 0, {   334,    234}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -229,   -137,   -511}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -229,   -137,    512}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -229,   -137,    549}, 0, {   334,    990}, {0xcd, 0x99, 0x33, 0xff}}},\n    {{{  -229,    -35,    549}, 0, {   334,    234}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -229,      0,    512}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700F9C0 - 0x0700FA60\nstatic const Vtx ttc_seg7_vertex_0700F9C0[] = {\n    {{{   230,   -137,    549}, 0, {   334,    990}, {0x54, 0xd6, 0x54, 0xff}}},\n    {{{   230,    -86,    549}, 0, {   334,    612}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -229,    -86,    549}, 0, {   334,    612}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   230,   -137,   -511}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   230,   -137,   -547}, 0, {   334,    990}, {0x33, 0x99, 0xcd, 0xff}}},\n    {{{   230,    -35,   -547}, 0, {   334,    234}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   230,      0,    512}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   230,    -35,    549}, 0, {   334,    234}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   230,   -137,    512}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -229,   -137,    549}, 0, {   334,    990}, {0xcd, 0x99, 0x33, 0xff}}},\n};\n\n// 0x0700FA60 - 0x0700FAA0\nstatic const Vtx ttc_seg7_vertex_0700FA60[] = {\n    {{{   230,   -137,   -547}, 0, {     0,      0}, {0x33, 0x99, 0xcd, 0xff}}},\n    {{{   230,   -137,    549}, 0, {     0,      0}, {0x54, 0xd6, 0x54, 0xff}}},\n    {{{  -229,   -137,    549}, 0, {     0,      0}, {0xcd, 0x99, 0x33, 0xff}}},\n    {{{  -229,   -137,   -547}, 0, {     0,      0}, {0xac, 0xd6, 0xac, 0xff}}},\n};\n\n// 0x0700FAA0 - 0x0700FAF8\nstatic const Gfx ttc_seg7_dl_0700FAA0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttc_seg7_lights_0700F830.l, 1),\n    gsSPLight(&ttc_seg7_lights_0700F830.a, 2),\n    gsSPVertex(ttc_seg7_vertex_0700F860, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700FAF8 - 0x0700FB88\nstatic const Gfx ttc_seg7_dl_0700FAF8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09006000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttc_seg7_vertex_0700F8E0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  3, 0x0),\n    gsSP2Triangles( 7,  3,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(10, 12, 13, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700F9C0, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  0, 0x0,  6,  0,  8, 0x0),\n    gsSP1Triangle( 0,  2,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700FB88 - 0x0700FBB8\nstatic const Gfx ttc_seg7_dl_0700FB88[] = {\n    gsSPLight(&ttc_seg7_lights_0700F848.l, 1),\n    gsSPLight(&ttc_seg7_lights_0700F848.a, 2),\n    gsSPVertex(ttc_seg7_vertex_0700FA60, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700FBB8 - 0x0700FC80\nconst Gfx ttc_seg7_dl_0700FBB8[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(200, 255, 255, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttc_seg7_dl_0700FAA0),\n    gsSPDisplayList(ttc_seg7_dl_0700FAF8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_PASS2),\n    gsSPDisplayList(ttc_seg7_dl_0700FB88),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttc/level.yaml",
    "content": "# Tick Tock Clock\nshort-name: ttc\nfull-name: Tick Tock Clock\ntexture-file: [\"/texture.inc.c\"]\narea-count: 1\nobjects: [clock_hand, elevator_platform, large_gear, large_treadmill, pendulum, pit_block, pit_block_2, push_block, rotating_cube, rotating_hexagon, rotating_prism, rotating_triangle, small_gear, small_treadmill, spinner]\nshared-path: []\n# loaded files\nskybox-bin: null\ntexture-bin: machine\neffects: false\nactor-bins: [group1]\ncommon-bin: [common0]\n"
  },
  {
    "path": "levels/ttc/leveldata.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"surface_terrains.h\"\n#include \"moving_texture_macros.h\"\n#include \"level_misc_macros.h\"\n#include \"macro_presets.h\"\n#include \"special_presets.h\"\n#include \"textures.h\"\n\n#include \"make_const_nonconst.h\"\n// LEVEL DATA\n#include \"levels/ttc/texture.inc.c\"\n#include \"levels/ttc/areas/1/1/model.inc.c\"\n#include \"levels/ttc/areas/1/2/model.inc.c\"\n#include \"levels/ttc/areas/1/3/model.inc.c\"\n#include \"levels/ttc/rotating_cube/model.inc.c\"\n#include \"levels/ttc/rotating_prism/model.inc.c\"\n#include \"levels/ttc/pendulum/model.inc.c\"\n#include \"levels/ttc/large_treadmill/model.inc.c\"\n#include \"levels/ttc/small_treadmill/model.inc.c\"\n#include \"levels/ttc/push_block/model.inc.c\"\n#include \"levels/ttc/rotating_hexagon/model.inc.c\"\n#include \"levels/ttc/rotating_triangle/model.inc.c\"\n#include \"levels/ttc/pit_block/model.inc.c\"\n#include \"levels/ttc/pit_block_2/model.inc.c\"\n#include \"levels/ttc/elevator_platform/model.inc.c\"\n#include \"levels/ttc/clock_hand/model.inc.c\"\n#include \"levels/ttc/spinner/model.inc.c\"\n#include \"levels/ttc/small_gear/model.inc.c\"\n#include \"levels/ttc/large_gear/model.inc.c\"\n#include \"levels/ttc/areas/1/collision.inc.c\"\n#include \"levels/ttc/rotating_cube/collision.inc.c\"\n#include \"levels/ttc/rotating_prism/collision.inc.c\"\n#include \"levels/ttc/pendulum/collision.inc.c\"\n#include \"levels/ttc/large_treadmill/collision.inc.c\"\n#include \"levels/ttc/small_treadmill/collision.inc.c\"\n#include \"levels/ttc/push_block/collision.inc.c\"\n#include \"levels/ttc/rotating_hexagon/collision.inc.c\"\n#include \"levels/ttc/rotating_triangle/collision.inc.c\"\n#include \"levels/ttc/pit_block/collision.inc.c\"\n#include \"levels/ttc/pit_block_2/collision.inc.c\"\n#include \"levels/ttc/elevator_platform/collision.inc.c\"\n#include \"levels/ttc/clock_hand/collision.inc.c\"\n#include \"levels/ttc/spinner/collision.inc.c\"\n#include \"levels/ttc/small_gear/collision.inc.c\"\n#include \"levels/ttc/large_gear/collision.inc.c\"\n#include \"levels/ttc/areas/1/macro.inc.c\"\n#include \"levels/ttc/areas/1/movtext.inc.c\"\n"
  },
  {
    "path": "levels/ttc/pendulum/collision.inc.c",
    "content": "// 0x0701508C - 0x070152B4\nconst Collision ttc_seg7_collision_clock_pendulum[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x24),\n    COL_VERTEX(-144, -771, 67),\n    COL_VERTEX(145, -771, 67),\n    COL_VERTEX(106, -704, 67),\n    COL_VERTEX(39, -665, 67),\n    COL_VERTEX(106, -704, -66),\n    COL_VERTEX(39, -665, -66),\n    COL_VERTEX(-105, -916, -66),\n    COL_VERTEX(145, -771, -66),\n    COL_VERTEX(-38, -665, -66),\n    COL_VERTEX(-38, -665, 67),\n    COL_VERTEX(145, -848, 67),\n    COL_VERTEX(145, -848, -66),\n    COL_VERTEX(106, -916, 67),\n    COL_VERTEX(106, -916, -66),\n    COL_VERTEX(39, -954, 67),\n    COL_VERTEX(-38, -954, 67),\n    COL_VERTEX(39, -954, -66),\n    COL_VERTEX(-105, -916, 67),\n    COL_VERTEX(-38, -954, -66),\n    COL_VERTEX(-144, -848, 67),\n    COL_VERTEX(-144, -771, -66),\n    COL_VERTEX(-105, -704, -66),\n    COL_VERTEX(-144, -848, -66),\n    COL_VERTEX(-105, -704, 67),\n    COL_VERTEX(20, -665, 20),\n    COL_VERTEX(-19, -665, 20),\n    COL_VERTEX(-19, -665, -19),\n    COL_VERTEX(20, -665, -19),\n    COL_VERTEX(-14, 0, 15),\n    COL_VERTEX(-19, 0, 20),\n    COL_VERTEX(-19, 0, -19),\n    COL_VERTEX(20, 0, 20),\n    COL_VERTEX(20, 0, -19),\n    COL_VERTEX(15, 0, 15),\n    COL_VERTEX(15, 0, -14),\n    COL_VERTEX(-14, 0, -14),\n    COL_TRI_INIT(SURFACE_NO_CAM_COLLISION, 54),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(2, 4, 5),\n    COL_TRI(2, 5, 3),\n    COL_TRI(1, 4, 2),\n    COL_TRI(6, 5, 4),\n    COL_TRI(6, 4, 7),\n    COL_TRI(1, 7, 4),\n    COL_TRI(6, 8, 5),\n    COL_TRI(8, 3, 5),\n    COL_TRI(0, 3, 9),\n    COL_TRI(8, 9, 3),\n    COL_TRI(0, 10, 1),\n    COL_TRI(7, 1, 10),\n    COL_TRI(6, 7, 11),\n    COL_TRI(7, 10, 11),\n    COL_TRI(0, 12, 10),\n    COL_TRI(12, 11, 10),\n    COL_TRI(22, 0, 20),\n    COL_TRI(6, 11, 13),\n    COL_TRI(12, 13, 11),\n    COL_TRI(0, 14, 12),\n    COL_TRI(13, 12, 14),\n    COL_TRI(6, 13, 16),\n    COL_TRI(13, 14, 16),\n    COL_TRI(0, 15, 14),\n    COL_TRI(16, 14, 15),\n    COL_TRI(6, 16, 18),\n    COL_TRI(16, 15, 18),\n    COL_TRI(0, 17, 15),\n    COL_TRI(18, 15, 17),\n    COL_TRI(18, 17, 6),\n    COL_TRI(0, 19, 17),\n    COL_TRI(6, 17, 19),\n    COL_TRI(6, 20, 21),\n    COL_TRI(6, 21, 8),\n    COL_TRI(6, 22, 20),\n    COL_TRI(6, 19, 22),\n    COL_TRI(22, 19, 0),\n    COL_TRI(0, 9, 23),\n    COL_TRI(20, 0, 23),\n    COL_TRI(20, 23, 21),\n    COL_TRI(21, 23, 9),\n    COL_TRI(21, 9, 8),\n    COL_TRI(24, 29, 25),\n    COL_TRI(25, 29, 30),\n    COL_TRI(25, 30, 26),\n    COL_TRI(24, 31, 29),\n    COL_TRI(26, 30, 32),\n    COL_TRI(28, 34, 35),\n    COL_TRI(26, 32, 27),\n    COL_TRI(27, 32, 31),\n    COL_TRI(27, 31, 24),\n    COL_TRI(28, 33, 34),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/ttc/pendulum/geo.inc.c",
    "content": "// 0x0E000270\nconst GeoLayout ttc_geo_000270[] = {\n    GEO_CULLING_RADIUS(1100),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, ttc_seg7_dl_0700F760),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttc/pendulum/model.inc.c",
    "content": "// 0x0700F090 - 0x0700F0A8\nstatic const Lights1 ttc_seg7_lights_0700F090 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700F0A8 - 0x0700F188\nstatic const Vtx ttc_seg7_vertex_0700F0A8[] = {\n    {{{    20,   -665,     20}, 0, {    95,   1492}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{   -19,      0,     20}, 0, {     0,      0}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{   -19,   -665,     20}, 0, {     0,   1492}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{   -19,   -665,     20}, 0, {   479,   1492}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{   -19,      0,     20}, 0, {   479,      0}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{   -19,      0,    -19}, 0, {   351,      0}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{   -19,   -665,    -19}, 0, {   351,   1492}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{   -19,   -665,    -19}, 0, {   350,   1492}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{    20,      0,    -19}, 0, {   223,      0}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{    20,   -665,    -19}, 0, {   224,   1492}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{   -19,      0,    -19}, 0, {   350,      0}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{    20,      0,     20}, 0, {    96,      0}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{    20,   -665,     20}, 0, {    96,   1492}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{    20,      0,     20}, 0, {    95,      0}, {0x71, 0x00, 0x38, 0xff}}},\n};\n\n// 0x0700F188 - 0x0700F278\nstatic const Vtx ttc_seg7_vertex_0700F188[] = {\n    {{{  -144,   -771,     67}, 0, {     0,    344}, {0xde, 0x06, 0x79, 0xff}}},\n    {{{   106,   -916,     67}, 0, {   852,    856}, {0x50, 0xbd, 0x48, 0xff}}},\n    {{{   145,   -848,     67}, 0, {   990,    618}, {0x67, 0xef, 0x47, 0xff}}},\n    {{{  -105,   -916,    -66}, 0, {   102,    856}, {0xe5, 0xea, 0x87, 0xff}}},\n    {{{  -144,   -848,    -66}, 0, {     0,    618}, {0x8a, 0xec, 0xd7, 0xff}}},\n    {{{  -144,   -771,    -66}, 0, {     0,    344}, {0x9e, 0x24, 0xb9, 0xff}}},\n    {{{  -105,   -704,    -66}, 0, {   102,    106}, {0xbd, 0x50, 0xb9, 0xff}}},\n    {{{   145,   -771,    -66}, 0, {   990,    344}, {0x67, 0x12, 0xb9, 0xff}}},\n    {{{   145,   -848,    -66}, 0, {   990,    618}, {0x62, 0xdd, 0xb9, 0xff}}},\n    {{{   -38,   -665,    -66}, 0, {   340,      0}, {0xee, 0x67, 0xb9, 0xff}}},\n    {{{   106,   -916,    -66}, 0, {   852,    856}, {0x42, 0xb0, 0xb8, 0xff}}},\n    {{{    39,   -954,    -66}, 0, {   614,    990}, {0x11, 0x99, 0xb9, 0xff}}},\n    {{{   -38,   -954,    -66}, 0, {   340,    990}, {0xd8, 0x8f, 0xd7, 0xff}}},\n    {{{    39,   -665,    -66}, 0, {   614,      0}, {0x24, 0x62, 0xb9, 0xff}}},\n    {{{   106,   -704,    -66}, 0, {   852,    106}, {0x50, 0x43, 0xb9, 0xff}}},\n};\n\n// 0x0700F278 - 0x0700F338\nstatic const Vtx ttc_seg7_vertex_0700F278[] = {\n    {{{  -144,   -771,     67}, 0, {     0,    344}, {0xde, 0x06, 0x79, 0xff}}},\n    {{{   -38,   -665,     67}, 0, {   340,      0}, {0xdc, 0x62, 0x47, 0xff}}},\n    {{{  -105,   -704,     67}, 0, {   102,    106}, {0xa4, 0x4d, 0x29, 0xff}}},\n    {{{    39,   -954,     67}, 0, {   614,    990}, {0x23, 0x9e, 0x47, 0xff}}},\n    {{{   106,   -916,     67}, 0, {   852,    856}, {0x50, 0xbd, 0x48, 0xff}}},\n    {{{   145,   -848,     67}, 0, {   990,    618}, {0x67, 0xef, 0x47, 0xff}}},\n    {{{   145,   -771,     67}, 0, {   990,    344}, {0x62, 0x24, 0x47, 0xff}}},\n    {{{    39,   -665,     67}, 0, {   614,      0}, {0x12, 0x67, 0x47, 0xff}}},\n    {{{   106,   -704,     67}, 0, {   852,    106}, {0x43, 0x50, 0x47, 0xff}}},\n    {{{  -144,   -848,     67}, 0, {     0,    618}, {0x90, 0xd7, 0x29, 0xff}}},\n    {{{  -105,   -916,     67}, 0, {   102,    856}, {0xbe, 0xb0, 0x48, 0xff}}},\n    {{{   -38,   -954,     67}, 0, {   340,    990}, {0xef, 0x99, 0x47, 0xff}}},\n};\n\n// 0x0700F338 - 0x0700F438\nstatic const Vtx ttc_seg7_vertex_0700F338[] = {\n    {{{   106,   -916,    -66}, 0, {     0,    694}, {0x42, 0xb0, 0xb8, 0xff}}},\n    {{{   106,   -916,     67}, 0, {   990,    694}, {0x50, 0xbd, 0x48, 0xff}}},\n    {{{    39,   -954,     67}, 0, {   990,    780}, {0x23, 0x9e, 0x47, 0xff}}},\n    {{{   106,   -704,     67}, 0, {   990,    224}, {0x43, 0x50, 0x47, 0xff}}},\n    {{{   106,   -704,    -66}, 0, {     0,    224}, {0x50, 0x43, 0xb9, 0xff}}},\n    {{{    39,   -665,    -66}, 0, {     0,    138}, {0x24, 0x62, 0xb9, 0xff}}},\n    {{{    39,   -665,     67}, 0, {   990,    138}, {0x12, 0x67, 0x47, 0xff}}},\n    {{{   145,   -771,     67}, 0, {   990,    374}, {0x62, 0x24, 0x47, 0xff}}},\n    {{{   145,   -771,    -66}, 0, {     0,    374}, {0x67, 0x12, 0xb9, 0xff}}},\n    {{{   -38,   -665,    -66}, 0, {     0,    138}, {0xee, 0x67, 0xb9, 0xff}}},\n    {{{   -38,   -665,     67}, 0, {   990,    138}, {0xdc, 0x62, 0x47, 0xff}}},\n    {{{   145,   -848,     67}, 0, {   990,    546}, {0x67, 0xef, 0x47, 0xff}}},\n    {{{   145,   -848,    -66}, 0, {     0,    546}, {0x62, 0xdd, 0xb9, 0xff}}},\n    {{{  -144,   -771,    -66}, 0, {     0,    374}, {0x9e, 0x24, 0xb9, 0xff}}},\n    {{{  -105,   -704,     67}, 0, {   990,    224}, {0xa4, 0x4d, 0x29, 0xff}}},\n    {{{  -105,   -704,    -66}, 0, {     0,    224}, {0xbd, 0x50, 0xb9, 0xff}}},\n};\n\n// 0x0700F438 - 0x0700F528\nstatic const Vtx ttc_seg7_vertex_0700F438[] = {\n    {{{   106,   -916,    -66}, 0, {     0,    694}, {0x42, 0xb0, 0xb8, 0xff}}},\n    {{{    39,   -954,     67}, 0, {   990,    780}, {0x23, 0x9e, 0x47, 0xff}}},\n    {{{    39,   -954,    -66}, 0, {     0,    780}, {0x11, 0x99, 0xb9, 0xff}}},\n    {{{   -38,   -954,     67}, 0, {   990,    780}, {0xef, 0x99, 0x47, 0xff}}},\n    {{{   -38,   -954,    -66}, 0, {     0,    780}, {0xd8, 0x8f, 0xd7, 0xff}}},\n    {{{  -105,   -916,     67}, 0, {   990,    694}, {0xbe, 0xb0, 0x48, 0xff}}},\n    {{{  -105,   -916,    -66}, 0, {     0,    694}, {0xe5, 0xea, 0x87, 0xff}}},\n    {{{  -144,   -848,     67}, 0, {   990,    546}, {0x90, 0xd7, 0x29, 0xff}}},\n    {{{  -144,   -848,    -66}, 0, {     0,    546}, {0x8a, 0xec, 0xd7, 0xff}}},\n    {{{  -144,   -771,     67}, 0, {   990,    374}, {0xde, 0x06, 0x79, 0xff}}},\n    {{{  -144,   -771,    -66}, 0, {     0,    374}, {0x9e, 0x24, 0xb9, 0xff}}},\n    {{{  -105,   -704,     67}, 0, {   990,    224}, {0xa4, 0x4d, 0x29, 0xff}}},\n    {{{  -105,   -704,    -66}, 0, {     0,    224}, {0xbd, 0x50, 0xb9, 0xff}}},\n    {{{   -38,   -665,     67}, 0, {   990,    138}, {0xdc, 0x62, 0x47, 0xff}}},\n    {{{   -38,   -665,    -66}, 0, {     0,    138}, {0xee, 0x67, 0xb9, 0xff}}},\n};\n\n// 0x0700F528 - 0x0700F5A0\nstatic const Gfx ttc_seg7_dl_0700F528[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ttc_seg7_texture_07000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 64 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttc_seg7_lights_0700F090.l, 1),\n    gsSPLight(&ttc_seg7_lights_0700F090.a, 2),\n    gsSPVertex(ttc_seg7_vertex_0700F0A8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  9, 11, 12, 0x0),\n    gsSP2Triangles( 9,  8, 11, 0x0,  0, 13,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700F5A0 - 0x0700F670\nstatic const Gfx ttc_seg7_dl_0700F5A0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttc_seg7_vertex_0700F188, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  3,  7,  8, 0x0),\n    gsSP2Triangles( 3,  6,  9, 0x0,  3, 10, 11, 0x0),\n    gsSP2Triangles( 3, 11, 12, 0x0,  3,  8, 10, 0x0),\n    gsSP2Triangles( 3,  9, 13, 0x0,  3, 13, 14, 0x0),\n    gsSP1Triangle( 3, 14,  7, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700F278, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  5,  6, 0x0,  0,  7,  1, 0x0),\n    gsSP2Triangles( 0,  8,  7, 0x0,  0,  6,  8, 0x0),\n    gsSP2Triangles( 0,  9, 10, 0x0,  0, 10, 11, 0x0),\n    gsSP1Triangle( 0, 11,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700F670 - 0x0700F760\nstatic const Gfx ttc_seg7_dl_0700F670[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttc_seg7_vertex_0700F338, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  4,  3, 0x0),\n    gsSP2Triangles( 7,  8,  4, 0x0,  9,  6,  5, 0x0),\n    gsSP2Triangles( 9, 10,  6, 0x0,  8,  7, 11, 0x0),\n    gsSP2Triangles( 8, 11, 12, 0x0,  1, 12, 11, 0x0),\n    gsSP2Triangles( 1,  0, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700F438, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(12, 11, 13, 0x0, 12, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700F760 - 0x0700F830\nconst Gfx ttc_seg7_dl_0700F760[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(200, 255, 255, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 4, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (16 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttc_seg7_dl_0700F528),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttc_seg7_dl_0700F5A0),\n    gsSPDisplayList(ttc_seg7_dl_0700F670),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttc/pit_block/collision.inc.c",
    "content": "// 0x07015754 - 0x070157D8\nconst Collision ttc_seg7_collision_07015754[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-101, 205, -101),\n    COL_VERTEX(-101, 0, 102),\n    COL_VERTEX(-101, 205, 102),\n    COL_VERTEX(-101, 0, -101),\n    COL_VERTEX(102, 205, 102),\n    COL_VERTEX(102, 0, 102),\n    COL_VERTEX(102, 0, -101),\n    COL_VERTEX(102, 205, -101),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI(4, 1, 5),\n    COL_TRI(4, 2, 1),\n    COL_TRI(1, 3, 6),\n    COL_TRI(5, 1, 6),\n    COL_TRI(0, 6, 3),\n    COL_TRI(0, 7, 6),\n    COL_TRI(4, 6, 7),\n    COL_TRI(4, 5, 6),\n    COL_TRI(7, 2, 4),\n    COL_TRI(7, 0, 2),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/ttc/pit_block/geo.inc.c",
    "content": "// 0x0E000310\nconst GeoLayout ttc_geo_000310[] = {\n    GEO_CULLING_RADIUS(250),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, ttc_seg7_dl_07011040),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttc/pit_block/model.inc.c",
    "content": "// 0x07010DE8 - 0x07010E00\nstatic const Lights1 ttc_seg7_lights_07010DE8 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07010E00 - 0x07010E80\nstatic const Vtx ttc_seg7_vertex_07010E00[] = {\n    {{{   102,      0,    102}, 0, {  1982,    960}, {0x49, 0xb7, 0x49, 0xff}}},\n    {{{  -101,      0,    102}, 0, {     0,    960}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{   102,      0,   -101}, 0, {  1982,  -1054}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{  -101,      0,   -101}, 0, {     0,  -1054}, {0xb7, 0xb7, 0xb7, 0xff}}},\n    {{{   102,    205,   -101}, 0, {  1982,  -1054}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  -101,    205,    102}, 0, {     0,    960}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{   102,    205,    102}, 0, {  1982,    960}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  -101,    205,   -101}, 0, {     0,  -1054}, {0xac, 0x2a, 0xac, 0xff}}},\n};\n\n// 0x07010E80 - 0x07010F80\nstatic const Vtx ttc_seg7_vertex_07010E80[] = {\n    {{{   102,    205,    102}, 0, {  2012,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  -101,    205,    102}, 0, {     0,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  -101,      0,    102}, 0, {     0,    990}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{   102,    205,    102}, 0, {     0,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{   102,      0,    102}, 0, {     0,    990}, {0x49, 0xb7, 0x49, 0xff}}},\n    {{{   102,      0,   -101}, 0, {  2012,    990}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{   102,    205,   -101}, 0, {  2012,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  -101,    205,   -101}, 0, {  2012,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{   102,      0,   -101}, 0, {     0,    990}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{  -101,      0,   -101}, 0, {  2012,    990}, {0xb7, 0xb7, 0xb7, 0xff}}},\n    {{{   102,    205,   -101}, 0, {     0,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  -101,    205,   -101}, 0, {     0,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  -101,      0,   -101}, 0, {     0,    990}, {0xb7, 0xb7, 0xb7, 0xff}}},\n    {{{  -101,      0,    102}, 0, {  2012,    990}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{  -101,    205,    102}, 0, {  2012,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{   102,      0,    102}, 0, {  2012,    990}, {0x49, 0xb7, 0x49, 0xff}}},\n};\n\n// 0x07010F80 - 0x07010FD8\nstatic const Gfx ttc_seg7_dl_07010F80[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttc_seg7_lights_07010DE8.l, 1),\n    gsSPLight(&ttc_seg7_lights_07010DE8.a, 2),\n    gsSPVertex(ttc_seg7_vertex_07010E00, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07010FD8 - 0x07011040\nstatic const Gfx ttc_seg7_dl_07010FD8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttc_seg7_vertex_07010E80, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07011040 - 0x07011108\nconst Gfx ttc_seg7_dl_07011040[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(200, 255, 255, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttc_seg7_dl_07010F80),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttc_seg7_dl_07010FD8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttc/pit_block_2/collision.inc.c",
    "content": "// 0x070157D8 - 0x0701585C\nconst Collision ttc_seg7_collision_070157D8[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(102, 205, 102),\n    COL_VERTEX(-101, 0, 102),\n    COL_VERTEX(102, 0, 102),\n    COL_VERTEX(102, 0, -101),\n    COL_VERTEX(-101, 205, -101),\n    COL_VERTEX(-101, 205, 102),\n    COL_VERTEX(-101, 0, -101),\n    COL_VERTEX(102, 205, -101),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(2, 1, 3),\n    COL_TRI(0, 2, 3),\n    COL_TRI(4, 1, 5),\n    COL_TRI(4, 6, 1),\n    COL_TRI(0, 5, 1),\n    COL_TRI(1, 6, 3),\n    COL_TRI(4, 7, 3),\n    COL_TRI(4, 3, 6),\n    COL_TRI(0, 3, 7),\n    COL_TRI(7, 5, 0),\n    COL_TRI(7, 4, 5),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/ttc/pit_block_2/geo.inc.c",
    "content": "// 0x0E000328\nconst GeoLayout ttc_geo_000328[] = {\n    GEO_CULLING_RADIUS(250),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, ttc_seg7_dl_07011360),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttc/pit_block_2/model.inc.c",
    "content": "// 0x07011108 - 0x07011120\nstatic const Lights1 ttc_seg7_lights_07011108 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07011120 - 0x070111A0\nstatic const Vtx ttc_seg7_vertex_07011120[] = {\n    {{{   102,      0,    102}, 0, {  1982,    960}, {0x49, 0xb7, 0x49, 0xff}}},\n    {{{  -101,      0,    102}, 0, {     0,    960}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{   102,      0,   -101}, 0, {  1982,  -1054}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{  -101,      0,   -101}, 0, {     0,  -1054}, {0xb7, 0xb7, 0xb7, 0xff}}},\n    {{{   102,    205,   -101}, 0, {  1982,  -1054}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  -101,    205,    102}, 0, {     0,    960}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{   102,    205,    102}, 0, {  1982,    960}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  -101,    205,   -101}, 0, {     0,  -1054}, {0xac, 0x2a, 0xac, 0xff}}},\n};\n\n// 0x070111A0 - 0x070112A0\nstatic const Vtx ttc_seg7_vertex_070111A0[] = {\n    {{{   102,    205,    102}, 0, {  3034,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  -101,    205,    102}, 0, {     0,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  -101,      0,    102}, 0, {     0,    990}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{   102,    205,    102}, 0, {     0,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{   102,      0,    102}, 0, {     0,    990}, {0x49, 0xb7, 0x49, 0xff}}},\n    {{{   102,      0,   -101}, 0, {  3034,    990}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{   102,    205,   -101}, 0, {  3034,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  -101,    205,   -101}, 0, {  3034,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{   102,      0,   -101}, 0, {     0,    990}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{  -101,      0,   -101}, 0, {  3034,    990}, {0xb7, 0xb7, 0xb7, 0xff}}},\n    {{{   102,    205,   -101}, 0, {     0,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  -101,    205,   -101}, 0, {     0,      0}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  -101,      0,   -101}, 0, {     0,    990}, {0xb7, 0xb7, 0xb7, 0xff}}},\n    {{{  -101,      0,    102}, 0, {  3034,    990}, {0xb7, 0xb7, 0x49, 0xff}}},\n    {{{  -101,    205,    102}, 0, {  3034,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{   102,      0,    102}, 0, {  3034,    990}, {0x49, 0xb7, 0x49, 0xff}}},\n};\n\n// 0x070112A0 - 0x070112F8\nstatic const Gfx ttc_seg7_dl_070112A0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttc_seg7_lights_07011108.l, 1),\n    gsSPLight(&ttc_seg7_lights_07011108.a, 2),\n    gsSPVertex(ttc_seg7_vertex_07011120, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070112F8 - 0x07011360\nstatic const Gfx ttc_seg7_dl_070112F8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttc_seg7_vertex_070111A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07011360 - 0x07011428\nconst Gfx ttc_seg7_dl_07011360[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(200, 255, 255, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttc_seg7_dl_070112A0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttc_seg7_dl_070112F8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttc/push_block/collision.inc.c",
    "content": "// 0x0701550C - 0x07015584\nconst Collision ttc_seg7_collision_sliding_surface[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(102, 102, -450),\n    COL_VERTEX(-101, 102, 10),\n    COL_VERTEX(102, 102, 10),\n    COL_VERTEX(-101, -101, 10),\n    COL_VERTEX(102, -101, 10),\n    COL_VERTEX(102, -101, -450),\n    COL_VERTEX(-101, -101, -450),\n    COL_VERTEX(-101, 102, -450),\n    COL_TRI_INIT(SURFACE_NO_CAM_COLLISION, 10),\n    COL_TRI(0, 1, 2),\n    COL_TRI(2, 1, 3),\n    COL_TRI(2, 3, 4),\n    COL_TRI(2, 4, 5),\n    COL_TRI(2, 5, 0),\n    COL_TRI(4, 6, 5),\n    COL_TRI(4, 3, 6),\n    COL_TRI(0, 7, 1),\n    COL_TRI(7, 6, 3),\n    COL_TRI(7, 3, 1),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/ttc/push_block/geo.inc.c",
    "content": "// 0x0E0002C8\nconst GeoLayout ttc_geo_0002C8[] = {\n    GEO_CULLING_RADIUS(500),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, ttc_seg7_dl_070102B8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttc/push_block/model.inc.c",
    "content": "// 0x070100B0 - 0x070100C8\nstatic const Lights1 ttc_seg7_lights_070100B0 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x070100C8 - 0x070101C8\nstatic const Vtx ttc_seg7_vertex_070100C8[] = {\n    {{{   102,    102,   -450}, 0, {   224,    990}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{  -101,    102,     10}, 0, {  2268,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{   102,    102,     10}, 0, {   224,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{   102,    102,     10}, 0, {  2268,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{   102,   -101,   -450}, 0, {   224,    990}, {0x71, 0xc8, 0x00, 0xff}}},\n    {{{   102,    102,   -450}, 0, {  2268,    990}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{   102,   -101,     10}, 0, {   224,      0}, {0x33, 0x99, 0x33, 0xff}}},\n    {{{  -101,    102,   -450}, 0, { -1308,    990}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  -101,   -101,   -450}, 0, {   734,    990}, {0xc8, 0x8f, 0x00, 0xff}}},\n    {{{  -101,   -101,     10}, 0, {   734,      0}, {0xac, 0xd6, 0x54, 0xff}}},\n    {{{  -101,    102,     10}, 0, { -1308,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{   102,   -101,     10}, 0, {  2268,      0}, {0x33, 0x99, 0x33, 0xff}}},\n    {{{  -101,   -101,     10}, 0, {   224,      0}, {0xac, 0xd6, 0x54, 0xff}}},\n    {{{  -101,   -101,   -450}, 0, {   224,    990}, {0xc8, 0x8f, 0x00, 0xff}}},\n    {{{   102,   -101,   -450}, 0, {  2268,    990}, {0x71, 0xc8, 0x00, 0xff}}},\n    {{{  -101,    102,   -450}, 0, {  2268,    990}, {0x8f, 0x38, 0x00, 0xff}}},\n};\n\n// 0x070101C8 - 0x07010208\nstatic const Vtx ttc_seg7_vertex_070101C8[] = {\n    {{{   102,    102,     10}, 0, {   990,     16}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  -101,   -101,     10}, 0, {     0,    990}, {0xac, 0xd6, 0x54, 0xff}}},\n    {{{   102,   -101,     10}, 0, {   990,    990}, {0x33, 0x99, 0x33, 0xff}}},\n    {{{  -101,    102,     10}, 0, {     0,     16}, {0xcd, 0x67, 0x33, 0xff}}},\n};\n\n// 0x07010208 - 0x07010280\nstatic const Gfx ttc_seg7_dl_07010208[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttc_seg7_lights_070100B0.l, 1),\n    gsSPLight(&ttc_seg7_lights_070100B0.a, 2),\n    gsSPVertex(ttc_seg7_vertex_070100C8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07010280 - 0x070102B8\nstatic const Gfx ttc_seg7_dl_07010280[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttc_seg7_vertex_070101C8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070102B8 - 0x07010380\nconst Gfx ttc_seg7_dl_070102B8[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(200, 255, 255, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttc_seg7_dl_07010208),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttc_seg7_dl_07010280),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttc/rotating_cube/collision.inc.c",
    "content": "// 0x07014F70 - 0x07015006\nconst Collision ttc_seg7_collision_07014F70[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x9),\n    COL_VERTEX(200, -199, 200),\n    COL_VERTEX(0, 0, 200),\n    COL_VERTEX(-199, -199, 200),\n    COL_VERTEX(200, 200, 200),\n    COL_VERTEX(-199, 200, 200),\n    COL_VERTEX(-199, 200, -199),\n    COL_VERTEX(-199, -199, -199),\n    COL_VERTEX(200, 200, -199),\n    COL_VERTEX(200, -199, -199),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 14),\n    COL_TRI(5, 4, 3),\n    COL_TRI(0, 1, 2),\n    COL_TRI(3, 1, 0),\n    COL_TRI(2, 1, 4),\n    COL_TRI(4, 5, 6),\n    COL_TRI(4, 6, 2),\n    COL_TRI(4, 1, 3),\n    COL_TRI(8, 2, 6),\n    COL_TRI(7, 3, 0),\n    COL_TRI(5, 3, 7),\n    COL_TRI(7, 0, 8),\n    COL_TRI(7, 8, 6),\n    COL_TRI(7, 6, 5),\n    COL_TRI(8, 0, 2),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/ttc/rotating_cube/geo.inc.c",
    "content": "// 0x0E000240\nconst GeoLayout ttc_geo_000240[] = {\n    GEO_CULLING_RADIUS(410),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, ttc_seg7_dl_0700ECB8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttc/rotating_cube/model.inc.c",
    "content": "// 0x0700E950 - 0x0700E968\nstatic const Lights1 ttc_seg7_lights_0700E950 = gdSPDefLights1(\n    0x55, 0x55, 0x55,\n    0xaa, 0xaa, 0xaa, 0x28, 0x28, 0x28\n);\n\n// 0x0700E968 - 0x0700E980\nstatic const Lights1 ttc_seg7_lights_0700E968 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700E980 - 0x0700EA20\nstatic const Vtx ttc_seg7_vertex_0700E980[] = {\n    {{{  -199,    200,   -199}, 0, {  2012,      0}, {0xd6, 0x54, 0xac, 0xff}}},\n    {{{     0,      0,   -199}, 0, {   478,   1340}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -199,   -199,   -199}, 0, { -1052,      0}, {0xac, 0xd6, 0xac, 0xff}}},\n    {{{   200,   -199,   -199}, 0, {  2012,      0}, {0x2a, 0xac, 0xac, 0xff}}},\n    {{{   200,    200,   -199}, 0, { -1052,      0}, {0x54, 0x2a, 0xac, 0xff}}},\n    {{{   200,    200,    200}, 0, { -1052,      0}, {0x2a, 0x54, 0x54, 0xff}}},\n    {{{     0,      0,    200}, 0, {   478,   1340}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   200,   -199,    200}, 0, {  2012,      0}, {0x54, 0xd6, 0x54, 0xff}}},\n    {{{  -199,   -199,    200}, 0, { -1052,      0}, {0xd6, 0xac, 0x54, 0xff}}},\n    {{{  -199,    200,    200}, 0, {  2012,      0}, {0xac, 0x2a, 0x54, 0xff}}},\n};\n\n// 0x0700EA20 - 0x0700EAC0\nstatic const Vtx ttc_seg7_vertex_0700EA20[] = {\n    {{{  -199,   -199,   -199}, 0, {  2012,      0}, {0xac, 0xd6, 0xac, 0xff}}},\n    {{{     0,      0,   -199}, 0, {   478,   1340}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   200,   -199,   -199}, 0, { -1052,      0}, {0x2a, 0xac, 0xac, 0xff}}},\n    {{{   200,    200,   -199}, 0, {  2012,      0}, {0x54, 0x2a, 0xac, 0xff}}},\n    {{{  -199,    200,   -199}, 0, { -1052,      0}, {0xd6, 0x54, 0xac, 0xff}}},\n    {{{   200,   -199,    200}, 0, { -1052,      0}, {0x54, 0xd6, 0x54, 0xff}}},\n    {{{     0,      0,    200}, 0, {   478,   1340}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -199,   -199,    200}, 0, {  2012,      0}, {0xd6, 0xac, 0x54, 0xff}}},\n    {{{  -199,    200,    200}, 0, { -1052,      0}, {0xac, 0x2a, 0x54, 0xff}}},\n    {{{   200,    200,    200}, 0, {  2012,      0}, {0x2a, 0x54, 0x54, 0xff}}},\n};\n\n// 0x0700EAC0 - 0x0700EBC0\nstatic const Vtx ttc_seg7_vertex_0700EAC0[] = {\n    {{{   200,   -199,   -199}, 0, {     0,    990}, {0x2a, 0xac, 0xac, 0xff}}},\n    {{{   200,   -199,    200}, 0, {   990,    990}, {0x54, 0xd6, 0x54, 0xff}}},\n    {{{  -199,   -199,    200}, 0, {   990,      0}, {0xd6, 0xac, 0x54, 0xff}}},\n    {{{  -199,    200,   -199}, 0, {     0,    990}, {0xd6, 0x54, 0xac, 0xff}}},\n    {{{  -199,    200,    200}, 0, {   990,    990}, {0xac, 0x2a, 0x54, 0xff}}},\n    {{{   200,    200,    200}, 0, {   990,      0}, {0x2a, 0x54, 0x54, 0xff}}},\n    {{{   200,    200,   -199}, 0, {     0,      0}, {0x54, 0x2a, 0xac, 0xff}}},\n    {{{  -199,    200,    200}, 0, {   990,      0}, {0xac, 0x2a, 0x54, 0xff}}},\n    {{{  -199,   -199,   -199}, 0, {     0,    990}, {0xac, 0xd6, 0xac, 0xff}}},\n    {{{  -199,   -199,    200}, 0, {   990,    990}, {0xd6, 0xac, 0x54, 0xff}}},\n    {{{  -199,    200,   -199}, 0, {     0,      0}, {0xd6, 0x54, 0xac, 0xff}}},\n    {{{   200,    200,   -199}, 0, {     0,    990}, {0x54, 0x2a, 0xac, 0xff}}},\n    {{{   200,   -199,    200}, 0, {   990,      0}, {0x54, 0xd6, 0x54, 0xff}}},\n    {{{   200,   -199,   -199}, 0, {     0,      0}, {0x2a, 0xac, 0xac, 0xff}}},\n    {{{   200,    200,    200}, 0, {   990,    990}, {0x2a, 0x54, 0x54, 0xff}}},\n    {{{  -199,   -199,   -199}, 0, {     0,      0}, {0xac, 0xd6, 0xac, 0xff}}},\n};\n\n// 0x0700EBC0 - 0x0700EC50\nstatic const Gfx ttc_seg7_dl_0700EBC0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttc_seg7_lights_0700E950.l, 1),\n    gsSPLight(&ttc_seg7_lights_0700E950.a, 2),\n    gsSPVertex(ttc_seg7_vertex_0700E980, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  6,  9, 0x0),\n    gsSPLight(&ttc_seg7_lights_0700E968.l, 1),\n    gsSPLight(&ttc_seg7_lights_0700E968.a, 2),\n    gsSPVertex(ttc_seg7_vertex_0700EA20, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  6,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700EC50 - 0x0700ECB8\nstatic const Gfx ttc_seg7_dl_0700EC50[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttc_seg7_vertex_0700EAC0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700ECB8 - 0x0700ED68\nconst Gfx ttc_seg7_dl_0700ECB8[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(200, 255, 255, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttc_seg7_dl_0700EBC0),\n    gsSPDisplayList(ttc_seg7_dl_0700EC50),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttc/rotating_hexagon/collision.inc.c",
    "content": "// 0x07015584 - 0x07015650\nconst Collision ttc_seg7_collision_07015584[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0xC),\n    COL_VERTEX(-153, 0, -265),\n    COL_VERTEX(-306, 0, 0),\n    COL_VERTEX(-153, 0, 266),\n    COL_VERTEX(154, 0, 266),\n    COL_VERTEX(307, 0, 0),\n    COL_VERTEX(154, 0, -265),\n    COL_VERTEX(307, -153, 0),\n    COL_VERTEX(154, -153, -265),\n    COL_VERTEX(154, -153, 266),\n    COL_VERTEX(-153, -153, 266),\n    COL_VERTEX(-306, -153, 0),\n    COL_VERTEX(-153, -153, -265),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 20),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(0, 3, 4),\n    COL_TRI(0, 4, 5),\n    COL_TRI(3, 6, 4),\n    COL_TRI(4, 6, 7),\n    COL_TRI(4, 7, 5),\n    COL_TRI(3, 8, 6),\n    COL_TRI(2, 8, 3),\n    COL_TRI(2, 9, 8),\n    COL_TRI(9, 6, 8),\n    COL_TRI(9, 10, 11),\n    COL_TRI(9, 11, 7),\n    COL_TRI(9, 7, 6),\n    COL_TRI(5, 7, 11),\n    COL_TRI(5, 11, 0),\n    COL_TRI(0, 10, 1),\n    COL_TRI(0, 11, 10),\n    COL_TRI(1, 10, 9),\n    COL_TRI(1, 9, 2),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/ttc/rotating_hexagon/geo.inc.c",
    "content": "// 0x0E0002E0\nconst GeoLayout ttc_geo_0002E0[] = {\n    GEO_CULLING_RADIUS(400),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, ttc_seg7_dl_07010868),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttc/rotating_hexagon/model.inc.c",
    "content": "// 0x07010380 - 0x07010398\nstatic const Lights1 ttc_seg7_lights_07010380 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07010398 - 0x07010488\nstatic const Vtx ttc_seg7_vertex_07010398[] = {\n    {{{  -153,      0,   -265}, 0, { -2074,      0}, {0xbe, 0x4c, 0xb4, 0xff}}},\n    {{{  -306,   -153,      0}, 0, {  4056,    990}, {0x9d, 0xb4, 0xed, 0xff}}},\n    {{{  -306,      0,      0}, 0, {  4056,      0}, {0x9d, 0x4c, 0x13, 0xff}}},\n    {{{  -153,      0,    266}, 0, { -3096,      0}, {0xdf, 0x4c, 0x5f, 0xff}}},\n    {{{   154,   -153,    266}, 0, {  3034,    990}, {0x21, 0xb4, 0x5f, 0xff}}},\n    {{{   154,      0,    266}, 0, {  3034,      0}, {0x42, 0x4c, 0x4c, 0xff}}},\n    {{{  -153,   -153,    266}, 0, { -3096,    990}, {0xbe, 0xb4, 0x4c, 0xff}}},\n    {{{   154,      0,   -265}, 0, { -3096,      0}, {0x21, 0x4c, 0xa1, 0xff}}},\n    {{{  -153,   -153,   -265}, 0, {  3034,    990}, {0xdf, 0xb4, 0xa1, 0xff}}},\n    {{{  -153,      0,   -265}, 0, {  3034,      0}, {0xbe, 0x4c, 0xb4, 0xff}}},\n    {{{   154,   -153,   -265}, 0, { -3096,    990}, {0x42, 0xb4, 0xb4, 0xff}}},\n    {{{   154,      0,    266}, 0, { -2074,      0}, {0x42, 0x4c, 0x4c, 0xff}}},\n    {{{   307,   -153,      0}, 0, {  4056,    990}, {0x63, 0xb4, 0x13, 0xff}}},\n    {{{   307,      0,      0}, 0, {  4056,      0}, {0x63, 0x4c, 0xed, 0xff}}},\n    {{{   154,   -153,    266}, 0, { -2074,    990}, {0x21, 0xb4, 0x5f, 0xff}}},\n};\n\n// 0x07010488 - 0x07010538\nstatic const Vtx ttc_seg7_vertex_07010488[] = {\n    {{{  -306,      0,      0}, 0, { -2074,      0}, {0x9d, 0x4c, 0x13, 0xff}}},\n    {{{  -306,   -153,      0}, 0, { -2074,    990}, {0x9d, 0xb4, 0xed, 0xff}}},\n    {{{  -153,   -153,    266}, 0, {  4056,    990}, {0xbe, 0xb4, 0x4c, 0xff}}},\n    {{{  -153,      0,   -265}, 0, { -2074,      0}, {0xbe, 0x4c, 0xb4, 0xff}}},\n    {{{  -153,   -153,   -265}, 0, { -2074,    990}, {0xdf, 0xb4, 0xa1, 0xff}}},\n    {{{  -306,   -153,      0}, 0, {  4056,    990}, {0x9d, 0xb4, 0xed, 0xff}}},\n    {{{   307,      0,      0}, 0, { -3096,      0}, {0x63, 0x4c, 0xed, 0xff}}},\n    {{{   154,   -153,   -265}, 0, {  3034,    990}, {0x42, 0xb4, 0xb4, 0xff}}},\n    {{{   154,      0,   -265}, 0, {  3034,      0}, {0x21, 0x4c, 0xa1, 0xff}}},\n    {{{   307,   -153,      0}, 0, { -3096,    990}, {0x63, 0xb4, 0x13, 0xff}}},\n    {{{  -153,      0,    266}, 0, {  4056,      0}, {0xdf, 0x4c, 0x5f, 0xff}}},\n};\n\n// 0x07010538 - 0x07010638\nstatic const Vtx ttc_seg7_vertex_07010538[] = {\n    {{{   307,      0,      0}, 0, { -1052,    990}, {0x63, 0x4c, 0xed, 0xff}}},\n    {{{   154,      0,   -265}, 0, {  2012,    990}, {0x21, 0x4c, 0xa1, 0xff}}},\n    {{{     0,      0,      0}, 0, {   478,  -1052}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -153,      0,    266}, 0, {  2012,    990}, {0xdf, 0x4c, 0x5f, 0xff}}},\n    {{{  -306,      0,      0}, 0, { -1052,    990}, {0x9d, 0x4c, 0x13, 0xff}}},\n    {{{  -153,      0,    266}, 0, { -1052,    990}, {0xdf, 0x4c, 0x5f, 0xff}}},\n    {{{   154,      0,    266}, 0, {  2012,    990}, {0x42, 0x4c, 0x4c, 0xff}}},\n    {{{     0,      0,      0}, 0, {   480,  -1056}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,      0,      0}, 0, {   480,  -1052}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -153,      0,   -265}, 0, { -1052,    990}, {0xbe, 0x4c, 0xb4, 0xff}}},\n    {{{  -306,      0,      0}, 0, {  2012,    990}, {0x9d, 0x4c, 0x13, 0xff}}},\n    {{{   154,      0,    266}, 0, { -1052,    990}, {0x42, 0x4c, 0x4c, 0xff}}},\n    {{{   307,      0,      0}, 0, {  2012,    990}, {0x63, 0x4c, 0xed, 0xff}}},\n    {{{  -306,   -153,      0}, 0, {  2012,    990}, {0x9d, 0xb4, 0xed, 0xff}}},\n    {{{  -153,   -153,   -265}, 0, { -1052,    990}, {0xdf, 0xb4, 0xa1, 0xff}}},\n    {{{     0,   -153,      0}, 0, {   480,  -1052}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07010638 - 0x07010738\nstatic const Vtx ttc_seg7_vertex_07010638[] = {\n    {{{   154,      0,   -265}, 0, { -1052,    990}, {0x21, 0x4c, 0xa1, 0xff}}},\n    {{{  -153,      0,   -265}, 0, {  2012,    990}, {0xbe, 0x4c, 0xb4, 0xff}}},\n    {{{     0,      0,      0}, 0, {   480,  -1052}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,   -153,      0}, 0, {   480,  -1052}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   307,   -153,      0}, 0, {  2012,    990}, {0x63, 0xb4, 0x13, 0xff}}},\n    {{{   154,   -153,    266}, 0, { -1052,    990}, {0x21, 0xb4, 0x5f, 0xff}}},\n    {{{     0,   -153,      0}, 0, {   478,  -1052}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   154,   -153,   -265}, 0, {  2012,    990}, {0x42, 0xb4, 0xb4, 0xff}}},\n    {{{   307,   -153,      0}, 0, { -1052,    990}, {0x63, 0xb4, 0x13, 0xff}}},\n    {{{  -153,   -153,   -265}, 0, {  2012,    990}, {0xdf, 0xb4, 0xa1, 0xff}}},\n    {{{   154,   -153,   -265}, 0, { -1052,    990}, {0x42, 0xb4, 0xb4, 0xff}}},\n    {{{     0,   -153,      0}, 0, {   480,  -1056}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   154,   -153,    266}, 0, {  2012,    990}, {0x21, 0xb4, 0x5f, 0xff}}},\n    {{{  -153,   -153,    266}, 0, { -1052,    990}, {0xbe, 0xb4, 0x4c, 0xff}}},\n    {{{  -306,   -153,      0}, 0, { -1052,    990}, {0x9d, 0xb4, 0xed, 0xff}}},\n    {{{  -153,   -153,    266}, 0, {  2012,    990}, {0xbe, 0xb4, 0x4c, 0xff}}},\n};\n\n// 0x07010738 - 0x070107D8\nstatic const Gfx ttc_seg7_dl_07010738[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttc_seg7_lights_07010380.l, 1),\n    gsSPLight(&ttc_seg7_lights_07010380.a, 2),\n    gsSPVertex(ttc_seg7_vertex_07010398, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07010488, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP1Triangle( 0,  2, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070107D8 - 0x07010868\nstatic const Gfx ttc_seg7_dl_070107D8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttc_seg7_vertex_07010538, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(11, 12,  8, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07010638, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  3,  9, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 14,  6, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07010868 - 0x07010930\nconst Gfx ttc_seg7_dl_07010868[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(200, 255, 255, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttc_seg7_dl_07010738),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttc_seg7_dl_070107D8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttc/rotating_prism/collision.inc.c",
    "content": "// 0x07015008 - 0x0701508C\nconst Collision ttc_seg7_collision_07015008[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-199, 116, -199),\n    COL_VERTEX(0, 1, -199),\n    COL_VERTEX(0, -229, -199),\n    COL_VERTEX(200, 116, -199),\n    COL_VERTEX(200, 116, 200),\n    COL_VERTEX(0, 1, 200),\n    COL_VERTEX(0, -229, 200),\n    COL_VERTEX(-199, 116, 200),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 12),\n    COL_TRI(6, 5, 7),\n    COL_TRI(0, 1, 2),\n    COL_TRI(2, 1, 3),\n    COL_TRI(3, 1, 0),\n    COL_TRI(4, 5, 6),\n    COL_TRI(6, 2, 3),\n    COL_TRI(4, 0, 7),\n    COL_TRI(7, 5, 4),\n    COL_TRI(4, 3, 0),\n    COL_TRI(7, 2, 6),\n    COL_TRI(7, 0, 2),\n    COL_TRI(6, 3, 4),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/ttc/rotating_prism/geo.inc.c",
    "content": "// 0x0E000258\nconst GeoLayout ttc_geo_000258[] = {\n    GEO_CULLING_RADIUS(410),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, ttc_seg7_dl_0700EFE0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttc/rotating_prism/model.inc.c",
    "content": "// 0x0700ED68 - 0x0700ED80\nstatic const Lights1 ttc_seg7_lights_0700ED68 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700ED80 - 0x0700EE60\nstatic const Vtx ttc_seg7_vertex_0700ED80[] = {\n    {{{     0,   -229,    200}, 0, { -1052,      0}, {0x29, 0xb8, 0x5f, 0xff}}},\n    {{{     0,      1,    200}, 0, {   478,    762}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -199,    116,    200}, 0, {  2012,      0}, {0xad, 0x00, 0x5f, 0xff}}},\n    {{{  -199,    116,   -199}, 0, { -1052,      0}, {0xd7, 0x48, 0xa1, 0xff}}},\n    {{{     0,      1,   -199}, 0, {   478,    762}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,   -229,   -199}, 0, {  2012,      0}, {0xd7, 0xb8, 0xa1, 0xff}}},\n    {{{     0,   -229,   -199}, 0, { -1052,      0}, {0xd7, 0xb8, 0xa1, 0xff}}},\n    {{{   200,    116,   -199}, 0, {  2012,      0}, {0x53, 0x00, 0xa0, 0xff}}},\n    {{{   200,    116,   -199}, 0, { -1052,      0}, {0x53, 0x00, 0xa0, 0xff}}},\n    {{{  -199,    116,   -199}, 0, {  2012,      0}, {0xd7, 0x48, 0xa1, 0xff}}},\n    {{{   200,    116,    200}, 0, { -1052,      0}, {0x29, 0x47, 0x60, 0xff}}},\n    {{{     0,   -229,    200}, 0, {  2012,      0}, {0x29, 0xb8, 0x5f, 0xff}}},\n    {{{  -199,    116,    200}, 0, { -1052,      0}, {0xad, 0x00, 0x5f, 0xff}}},\n    {{{   200,    116,    200}, 0, {  2012,      0}, {0x29, 0x47, 0x60, 0xff}}},\n};\n\n// 0x0700EE60 - 0x0700EF20\nstatic const Vtx ttc_seg7_vertex_0700EE60[] = {\n    {{{   200,    116,    200}, 0, {   990,      0}, {0x29, 0x47, 0x60, 0xff}}},\n    {{{  -199,    116,   -199}, 0, {     0,    990}, {0xd7, 0x48, 0xa1, 0xff}}},\n    {{{  -199,    116,    200}, 0, {   990,    990}, {0xad, 0x00, 0x5f, 0xff}}},\n    {{{   200,    116,   -199}, 0, {     0,      0}, {0x53, 0x00, 0xa0, 0xff}}},\n    {{{  -199,    116,    200}, 0, {   990,      0}, {0xad, 0x00, 0x5f, 0xff}}},\n    {{{  -199,    116,   -199}, 0, {     0,      0}, {0xd7, 0x48, 0xa1, 0xff}}},\n    {{{     0,   -229,   -199}, 0, {     0,    990}, {0xd7, 0xb8, 0xa1, 0xff}}},\n    {{{     0,   -229,    200}, 0, {   990,    990}, {0x29, 0xb8, 0x5f, 0xff}}},\n    {{{     0,   -229,    200}, 0, {   990,      0}, {0x29, 0xb8, 0x5f, 0xff}}},\n    {{{     0,   -229,   -199}, 0, {     0,      0}, {0xd7, 0xb8, 0xa1, 0xff}}},\n    {{{   200,    116,   -199}, 0, {     0,    990}, {0x53, 0x00, 0xa0, 0xff}}},\n    {{{   200,    116,    200}, 0, {   990,    990}, {0x29, 0x47, 0x60, 0xff}}},\n};\n\n// 0x0700EF20 - 0x0700EF88\nstatic const Gfx ttc_seg7_dl_0700EF20[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttc_seg7_lights_0700ED68.l, 1),\n    gsSPLight(&ttc_seg7_lights_0700ED68.a, 2),\n    gsSPVertex(ttc_seg7_vertex_0700ED80, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  4,  7, 0x0,  8,  4,  9, 0x0),\n    gsSP2Triangles(10,  1, 11, 0x0, 12,  1, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700EF88 - 0x0700EFE0\nstatic const Gfx ttc_seg7_dl_0700EF88[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttc_seg7_vertex_0700EE60, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700EFE0 - 0x0700F090\nconst Gfx ttc_seg7_dl_0700EFE0[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(200, 255, 255, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttc_seg7_dl_0700EF20),\n    gsSPDisplayList(ttc_seg7_dl_0700EF88),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttc/rotating_triangle/collision.inc.c",
    "content": "// 0x07015650 - 0x07015752\nconst Collision ttc_seg7_collision_07015650[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0xF),\n    COL_VERTEX(300, 0, 300),\n    COL_VERTEX(300, -153, 300),\n    COL_VERTEX(75, -153, 0),\n    COL_VERTEX(-299, -153, 300),\n    COL_VERTEX(0, 0, 300),\n    COL_VERTEX(75, 0, 0),\n    COL_VERTEX(-299, 0, 300),\n    COL_VERTEX(-74, -153, 0),\n    COL_VERTEX(0, -153, 75),\n    COL_VERTEX(-74, 0, 0),\n    COL_VERTEX(0, 0, 75),\n    COL_VERTEX(0, -229, 0),\n    COL_VERTEX(0, 77, 0),\n    COL_VERTEX(0, 0, -74),\n    COL_VERTEX(0, -153, -74),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 26),\n    COL_TRI(7, 6, 9),\n    COL_TRI(0, 1, 2),\n    COL_TRI(3, 1, 4),\n    COL_TRI(1, 0, 4),\n    COL_TRI(0, 2, 5),\n    COL_TRI(3, 4, 6),\n    COL_TRI(7, 3, 6),\n    COL_TRI(1, 3, 8),\n    COL_TRI(3, 7, 8),\n    COL_TRI(9, 6, 10),\n    COL_TRI(6, 4, 10),\n    COL_TRI(13, 14, 7),\n    COL_TRI(8, 7, 11),\n    COL_TRI(11, 2, 8),\n    COL_TRI(7, 14, 11),\n    COL_TRI(2, 11, 14),\n    COL_TRI(12, 13, 9),\n    COL_TRI(13, 12, 5),\n    COL_TRI(12, 9, 10),\n    COL_TRI(10, 5, 12),\n    COL_TRI(2, 14, 13),\n    COL_TRI(2, 13, 5),\n    COL_TRI(13, 7, 9),\n    COL_TRI(0, 5, 10),\n    COL_TRI(4, 0, 10),\n    COL_TRI(1, 8, 2),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/ttc/rotating_triangle/geo.inc.c",
    "content": "// 0x0E0002F8\nconst GeoLayout ttc_geo_0002F8[] = {\n    GEO_CULLING_RADIUS(520),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, ttc_seg7_dl_07010D38),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttc/rotating_triangle/model.inc.c",
    "content": "// 0x07010930 - 0x07010948\nstatic const Lights1 ttc_seg7_lights_07010930 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07010948 - 0x07010A28\nstatic const Vtx ttc_seg7_vertex_07010948[] = {\n    {{{     0,      0,    -74}, 0, {  4566,      0}, {0x00, 0x22, 0x86, 0xff}}},\n    {{{     0,     77,      0}, 0, {  4566,   -542}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{    75,      0,      0}, 0, {  5716,      0}, {0x5c, 0x4a, 0xd3, 0xff}}},\n    {{{  -299,   -153,    300}, 0, { -4986,    990}, {0xd9, 0x9e, 0x45, 0xff}}},\n    {{{   300,   -153,    300}, 0, {  6968,    990}, {0x27, 0x9e, 0x45, 0xff}}},\n    {{{     0,      0,    300}, 0, {   990,      0}, {0x00, 0x46, 0x69, 0xff}}},\n    {{{   300,      0,    300}, 0, {  6968,      0}, {0x4f, 0x62, 0xf7, 0xff}}},\n    {{{  -299,      0,    300}, 0, { -4986,      0}, {0xb1, 0x62, 0xf7, 0xff}}},\n    {{{     0,   -153,     75}, 0, {  4566,    990}, {0x00, 0x86, 0x22, 0xff}}},\n    {{{   -74,   -153,      0}, 0, {  3418,    990}, {0x9e, 0xce, 0xc3, 0xff}}},\n    {{{     0,   -229,      0}, 0, {  4566,   1498}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{    75,   -153,      0}, 0, {  5716,    990}, {0x62, 0xce, 0xc2, 0xff}}},\n    {{{     0,   -153,    -74}, 0, {  4566,    990}, {0x00, 0xcd, 0x8c, 0xff}}},\n    {{{   -74,      0,      0}, 0, {  3418,      0}, {0xa4, 0x49, 0xd3, 0xff}}},\n};\n\n// 0x07010A28 - 0x07010B28\nstatic const Vtx ttc_seg7_vertex_07010A28[] = {\n    {{{   300,      0,    300}, 0, { -6482,      0}, {0x4f, 0x62, 0xf7, 0xff}}},\n    {{{    75,   -153,      0}, 0, {   990,    990}, {0x62, 0xce, 0xc2, 0xff}}},\n    {{{    75,      0,      0}, 0, {   990,      0}, {0x5c, 0x4a, 0xd3, 0xff}}},\n    {{{     0,     77,      0}, 0, {  4566,   -542}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{   -74,      0,      0}, 0, {  3418,      0}, {0xa4, 0x49, 0xd3, 0xff}}},\n    {{{     0,      0,     75}, 0, {  4566,      0}, {0x00, 0x7b, 0x1c, 0xff}}},\n    {{{    75,      0,      0}, 0, {  5716,      0}, {0x5c, 0x4a, 0xd3, 0xff}}},\n    {{{     0,      0,    -74}, 0, { -2128,      0}, {0x00, 0x22, 0x86, 0xff}}},\n    {{{     0,   -153,    -74}, 0, { -2128,    990}, {0x00, 0xcd, 0x8c, 0xff}}},\n    {{{   -74,   -153,      0}, 0, {     0,    990}, {0x9e, 0xce, 0xc3, 0xff}}},\n    {{{   -74,      0,      0}, 0, {     0,      0}, {0xa4, 0x49, 0xd3, 0xff}}},\n    {{{  -299,   -153,    300}, 0, {  7442,    990}, {0xd9, 0x9e, 0x45, 0xff}}},\n    {{{  -299,      0,    300}, 0, {  7442,      0}, {0xb1, 0x62, 0xf7, 0xff}}},\n    {{{     0,      0,    -74}, 0, {  3088,      0}, {0x00, 0x22, 0x86, 0xff}}},\n    {{{     0,   -153,    -74}, 0, {  3088,    990}, {0x00, 0xcd, 0x8c, 0xff}}},\n    {{{   300,   -153,    300}, 0, { -6482,    990}, {0x27, 0x9e, 0x45, 0xff}}},\n};\n\n// 0x07010B28 - 0x07010B78\nstatic const Vtx ttc_seg7_vertex_07010B28[] = {\n    {{{   300,   -153,    300}, 0, {  9166,    990}, {0x27, 0x9e, 0x45, 0xff}}},\n    {{{  -299,   -153,    300}, 0, {     0,    990}, {0xd9, 0x9e, 0x45, 0xff}}},\n    {{{     0,   -153,     75}, 0, {  4566,    990}, {0x00, 0x86, 0x22, 0xff}}},\n    {{{   -74,   -153,      0}, 0, {  3418,    990}, {0x9e, 0xce, 0xc3, 0xff}}},\n    {{{    75,   -153,      0}, 0, {  5716,    990}, {0x62, 0xce, 0xc2, 0xff}}},\n};\n\n// 0x07010B78 - 0x07010BF8\nstatic const Vtx ttc_seg7_vertex_07010B78[] = {\n    {{{   300,      0,    300}, 0, {   990,    990}, {0x4f, 0x62, 0xf7, 0xff}}},\n    {{{    75,      0,      0}, 0, {   -76,    990}, {0x5c, 0x4a, 0xd3, 0xff}}},\n    {{{     0,      0,     75}, 0, {   190,   1362}, {0x00, 0x7b, 0x1c, 0xff}}},\n    {{{     0,      0,    300}, 0, {   990,   1842}, {0x00, 0x46, 0x69, 0xff}}},\n    {{{  -299,      0,    300}, 0, {   990,    990}, {0xb1, 0x62, 0xf7, 0xff}}},\n    {{{     0,      0,    300}, 0, {   990,    136}, {0x00, 0x46, 0x69, 0xff}}},\n    {{{     0,      0,     75}, 0, {   190,    616}, {0x00, 0x7b, 0x1c, 0xff}}},\n    {{{   -74,      0,      0}, 0, {   -76,    990}, {0xa4, 0x49, 0xd3, 0xff}}},\n};\n\n// 0x07010BF8 - 0x07010CF0\nstatic const Gfx ttc_seg7_dl_07010BF8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttc_seg7_lights_07010930.l, 1),\n    gsSPLight(&ttc_seg7_lights_07010930.a, 2),\n    gsSPVertex(ttc_seg7_vertex_07010948, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  3,  5,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10, 11,  8, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 11, 10, 12, 0x0),\n    gsSP1Triangle( 1,  0, 13, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07010A28, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  9, 11, 12, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0,  1, 13,  2, 0x0),\n    gsSP2Triangles( 1, 14, 13, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07010B28, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP1Triangle( 0,  2,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07010CF0 - 0x07010D38\nstatic const Gfx ttc_seg7_dl_07010CF0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttc_seg7_vertex_07010B78, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07010D38 - 0x07010DE8\nconst Gfx ttc_seg7_dl_07010D38[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(200, 255, 255, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttc_seg7_dl_07010BF8),\n    gsSPDisplayList(ttc_seg7_dl_07010CF0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttc/script.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"behavior_data.h\"\n#include \"model_ids.h\"\n#include \"seq_ids.h\"\n#include \"segment_symbols.h\"\n#include \"level_commands.h\"\n\n#include \"game/level_update.h\"\n\n#include \"levels/scripts.h\"\n\n#include \"actors/common1.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/ttc/header.h\"\n\nstatic const LevelScript script_func_local_1[] = {\n    OBJECT(/*model*/ MODEL_NONE,   /*pos*/ -1080,  -840,  1573, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(86), /*bhv*/ bhvPoleGrabbing),\n    OBJECT(/*model*/ MODEL_THWOMP, /*pos*/  1919,  6191,  1919, /*angle*/ 0, 225, 0, /*bhvParam*/ BPARAM2(0),  /*bhv*/ bhvThwomp),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_2[] = {\n    OBJECT_WITH_ACTS(/*model*/ MODEL_STAR,   /*pos*/ -1450, -1130, -1050, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_1), /*bhv*/ bhvStar,                 /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_STAR,   /*pos*/ -1850,   300,  -950, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_2), /*bhv*/ bhvStar,                 /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_STAR,   /*pos*/ -1300, -2250, -1300, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_3), /*bhv*/ bhvStar,                 /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_STAR,   /*pos*/  2200,  7300,  2210, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_4), /*bhv*/ bhvStar,                 /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_STAR,   /*pos*/ -1050,  2400,  -790, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_5), /*bhv*/ bhvStar,                 /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_NONE,   /*pos*/  1815, -3200,   800, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_6), /*bhv*/ bhvHiddenRedCoinStar, /*acts*/ ALL_ACTS),\n    RETURN(),\n};\n\nconst LevelScript level_ttc_entry[] = {\n    INIT_LEVEL(),\n    LOAD_MIO0        (/*seg*/ 0x07, _ttc_segment_7SegmentRomStart, _ttc_segment_7SegmentRomEnd),\n    LOAD_MIO0_TEXTURE(/*seg*/ 0x09, _machine_mio0SegmentRomStart, _machine_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x05, _group1_mio0SegmentRomStart, _group1_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0C, _group1_geoSegmentRomStart,  _group1_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x08, _common0_mio0SegmentRomStart, _common0_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0F, _common0_geoSegmentRomStart,  _common0_geoSegmentRomEnd),\n    ALLOC_LEVEL_POOL(),\n    MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),\n    JUMP_LINK(script_func_global_1),\n    JUMP_LINK(script_func_global_2),\n    LOAD_MODEL_FROM_GEO(MODEL_TTC_ROTATING_CUBE,     ttc_geo_000240),\n    LOAD_MODEL_FROM_GEO(MODEL_TTC_ROTATING_PRISM,    ttc_geo_000258),\n    LOAD_MODEL_FROM_GEO(MODEL_TTC_PENDULUM,          ttc_geo_000270),\n    LOAD_MODEL_FROM_GEO(MODEL_TTC_LARGE_TREADMILL,   ttc_geo_000288),\n    LOAD_MODEL_FROM_GEO(MODEL_TTC_SMALL_TREADMILL,   ttc_geo_0002A8),\n    LOAD_MODEL_FROM_GEO(MODEL_TTC_PUSH_BLOCK,        ttc_geo_0002C8),\n    LOAD_MODEL_FROM_GEO(MODEL_TTC_ROTATING_HEXAGON,  ttc_geo_0002E0),\n    LOAD_MODEL_FROM_GEO(MODEL_TTC_ROTATING_TRIANGLE, ttc_geo_0002F8),\n    LOAD_MODEL_FROM_GEO(MODEL_TTC_PIT_BLOCK,         ttc_geo_000310),\n    LOAD_MODEL_FROM_GEO(MODEL_TTC_PIT_BLOCK_UNUSED,  ttc_geo_000328),\n    LOAD_MODEL_FROM_GEO(MODEL_TTC_ELEVATOR_PLATFORM, ttc_geo_000340),\n    LOAD_MODEL_FROM_GEO(MODEL_TTC_CLOCK_HAND,        ttc_geo_000358),\n    LOAD_MODEL_FROM_GEO(MODEL_TTC_SPINNER,           ttc_geo_000370),\n    LOAD_MODEL_FROM_GEO(MODEL_TTC_SMALL_GEAR,        ttc_geo_000388),\n    LOAD_MODEL_FROM_GEO(MODEL_TTC_LARGE_GEAR,        ttc_geo_0003A0),\n\n    AREA(/*index*/ 1, ttc_geo_0003B8),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ 1417, -3822, -548, /*angle*/ 0, 316, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvSpinAirborneWarp),\n        WARP_NODE(/*id*/ WARP_NODE_0A,      /*destLevel*/ LEVEL_TTC,    /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_SUCCESS, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_35, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH,   /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_67, /*flags*/ WARP_NO_CHECKPOINT),\n        JUMP_LINK(script_func_local_1),\n        JUMP_LINK(script_func_local_2),\n        TERRAIN(/*terrainData*/ ttc_seg7_collision_level),\n        MACRO_OBJECTS(/*objList*/ ttc_seg7_macro_objs),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0001, /*seq*/ SEQ_LEVEL_SLIDE),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_STONE),\n    END_AREA(),\n\n    FREE_LEVEL_POOL(),\n    MARIO_POS(/*area*/ 1, /*yaw*/ 316, /*pos*/ 1417, -4822, -548),\n    CALL(/*arg*/ 0, /*func*/ lvl_init_or_update),\n    CALL_LOOP(/*arg*/ 1, /*func*/ lvl_init_or_update),\n    CLEAR_LEVEL(),\n    SLEEP_BEFORE_EXIT(/*frames*/ 1),\n    EXIT(),\n};\n"
  },
  {
    "path": "levels/ttc/small_gear/collision.inc.c",
    "content": "// Blank File\n\n"
  },
  {
    "path": "levels/ttc/small_gear/geo.inc.c",
    "content": "// 0x0E000388\nconst GeoLayout ttc_geo_000388[] = {\n    GEO_CULLING_RADIUS(200),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, ttc_seg7_dl_07012148),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttc/small_gear/model.inc.c",
    "content": "// 0x070120D0 - 0x07012110\nstatic const Vtx ttc_seg7_vertex_070120D0[] = {\n    {{{   102,      0,   -101}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -101,      0,   -101}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -101,      0,    102}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   102,      0,    102}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07012110 - 0x07012148\nstatic const Gfx ttc_seg7_dl_07012110[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ttc_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttc_seg7_vertex_070120D0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07012148 - 0x07012200\nconst Gfx ttc_seg7_dl_07012148[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(200, 255, 255, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_PASS2),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttc_seg7_dl_07012110),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttc/small_treadmill/collision.inc.c",
    "content": "// 0x070153E0 - 0x0701550C\nconst Collision ttc_seg7_collision_070153E0[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x14),\n    COL_VERTEX(-229, 0, -306),\n    COL_VERTEX(-229, -137, 308),\n    COL_VERTEX(-229, 0, 308),\n    COL_VERTEX(-229, -137, -306),\n    COL_VERTEX(230, 0, 308),\n    COL_VERTEX(230, -137, -306),\n    COL_VERTEX(230, 0, -306),\n    COL_VERTEX(230, -137, 308),\n    COL_VERTEX(230, -137, 344),\n    COL_VERTEX(230, -35, 344),\n    COL_VERTEX(230, -137, -342),\n    COL_VERTEX(230, -35, -342),\n    COL_VERTEX(-229, -137, -342),\n    COL_VERTEX(-229, -35, -342),\n    COL_VERTEX(-229, -86, 344),\n    COL_VERTEX(-229, -35, 344),\n    COL_VERTEX(-229, -137, 344),\n    COL_VERTEX(230, -86, 344),\n    COL_VERTEX(230, -86, -342),\n    COL_VERTEX(-229, -86, -342),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 28),\n    COL_TRI(5, 10, 11),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI(4, 5, 6),\n    COL_TRI(4, 7, 5),\n    COL_TRI(4, 8, 7),\n    COL_TRI(4, 9, 8),\n    COL_TRI(0, 13, 12),\n    COL_TRI(5, 11, 6),\n    COL_TRI(8, 14, 16),\n    COL_TRI(8, 17, 14),\n    COL_TRI(1, 15, 2),\n    COL_TRI(1, 16, 15),\n    COL_TRI(0, 12, 3),\n    COL_TRI(13, 11, 18),\n    COL_TRI(12, 18, 10),\n    COL_TRI(12, 19, 18),\n    COL_TRI(10, 16, 12),\n    COL_TRI(10, 8, 16),\n    COL_TRI(0, 11, 13),\n    COL_TRI(0, 6, 11),\n    COL_TRI(2, 4, 6),\n    COL_TRI(13, 18, 19),\n    COL_TRI(14, 9, 15),\n    COL_TRI(14, 17, 9),\n    COL_TRI(15, 4, 2),\n    COL_TRI(15, 9, 4),\n    COL_TRI(2, 6, 0),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/ttc/small_treadmill/geo.inc.c",
    "content": "// 0x0E0002A8\nconst GeoLayout ttc_geo_0002A8[] = {\n    GEO_CULLING_RADIUS(520),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, ttc_seg7_dl_0700FFE8),\n        GEO_ASM(0x1401, geo_movtex_draw_colored_no_update),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttc/small_treadmill/model.inc.c",
    "content": "// 0x0700FC80 - 0x0700FC98\nstatic const Lights1 ttc_seg7_lights_0700FC80 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700FC98 - 0x0700FCB0\nstatic const Lights1 ttc_seg7_lights_0700FC98 = gdSPDefLights1(\n    0x46, 0x46, 0x46,\n    0x8c, 0x8c, 0x8c, 0x28, 0x28, 0x28\n);\n\n// 0x0700FCB0 - 0x0700FD30\nstatic const Vtx ttc_seg7_vertex_0700FCB0[] = {\n    {{{  -229,      0,   -306}, 0, {  4510,    -34}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -229,   -137,   -306}, 0, {  4510,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -229,   -137,    308}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -229,      0,    308}, 0, {     0,    -34}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   230,      0,    308}, 0, {     0,    -34}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   230,   -137,   -306}, 0, {  4510,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   230,      0,   -306}, 0, {  4510,    -34}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   230,   -137,    308}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700FD30 - 0x0700FE30\nstatic const Vtx ttc_seg7_vertex_0700FD30[] = {\n    {{{  -229,   -137,    308}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -229,    -35,    344}, 0, {   334,    234}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -229,      0,    308}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   230,      0,    308}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   230,    -35,    344}, 0, {   334,    234}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   230,   -137,    344}, 0, {   334,    990}, {0x54, 0xd6, 0x54, 0xff}}},\n    {{{   230,   -137,    308}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   230,   -137,   -306}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   230,   -137,   -342}, 0, {   334,    990}, {0x33, 0x99, 0xcd, 0xff}}},\n    {{{   230,    -35,   -342}, 0, {   334,    234}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   230,      0,   -306}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -229,    -86,    344}, 0, {   334,    612}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -229,   -137,    344}, 0, {   334,    990}, {0xcd, 0x99, 0x33, 0xff}}},\n    {{{   230,    -86,    344}, 0, {   334,    612}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -229,   -137,   -342}, 0, {   334,    990}, {0xac, 0xd6, 0xac, 0xff}}},\n    {{{   230,    -86,   -342}, 0, {   334,    612}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700FE30 - 0x0700FE90\nstatic const Vtx ttc_seg7_vertex_0700FE30[] = {\n    {{{  -229,      0,   -306}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -229,    -35,   -342}, 0, {   334,    234}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -229,   -137,   -342}, 0, {   334,    990}, {0xac, 0xd6, 0xac, 0xff}}},\n    {{{  -229,   -137,   -306}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -229,    -86,   -342}, 0, {   334,    612}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   230,    -86,   -342}, 0, {   334,    612}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700FE90 - 0x0700FED0\nstatic const Vtx ttc_seg7_vertex_0700FE90[] = {\n    {{{   230,   -137,   -342}, 0, {     0,      0}, {0x33, 0x99, 0xcd, 0xff}}},\n    {{{  -229,   -137,    344}, 0, {     0,      0}, {0xcd, 0x99, 0x33, 0xff}}},\n    {{{  -229,   -137,   -342}, 0, {     0,      0}, {0xac, 0xd6, 0xac, 0xff}}},\n    {{{   230,   -137,    344}, 0, {     0,      0}, {0x54, 0xd6, 0x54, 0xff}}},\n};\n\n// 0x0700FED0 - 0x0700FF28\nstatic const Gfx ttc_seg7_dl_0700FED0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttc_seg7_lights_0700FC80.l, 1),\n    gsSPLight(&ttc_seg7_lights_0700FC80.a, 2),\n    gsSPVertex(ttc_seg7_vertex_0700FCB0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700FF28 - 0x0700FFB8\nstatic const Gfx ttc_seg7_dl_0700FF28[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09006000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttc_seg7_vertex_0700FD30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  5, 11, 12, 0x0),\n    gsSP2Triangles( 5, 13, 11, 0x0, 14, 15,  8, 0x0),\n    gsSP1Triangle( 0, 12,  1, 0x0),\n    gsSPVertex(ttc_seg7_vertex_0700FE30, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP1Triangle( 2,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700FFB8 - 0x0700FFE8\nstatic const Gfx ttc_seg7_dl_0700FFB8[] = {\n    gsSPLight(&ttc_seg7_lights_0700FC98.l, 1),\n    gsSPLight(&ttc_seg7_lights_0700FC98.a, 2),\n    gsSPVertex(ttc_seg7_vertex_0700FE90, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700FFE8 - 0x070100B0\nconst Gfx ttc_seg7_dl_0700FFE8[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(200, 255, 255, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttc_seg7_dl_0700FED0),\n    gsSPDisplayList(ttc_seg7_dl_0700FF28),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_PASS2),\n    gsSPDisplayList(ttc_seg7_dl_0700FFB8),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttc/spinner/collision.inc.c",
    "content": "// 0x070159D0 - 0x07015B24\nconst Collision ttc_seg7_collision_rotating_clock_platform2[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x14),\n    COL_VERTEX(154, 26, 26),\n    COL_VERTEX(-153, 51, 0),\n    COL_VERTEX(-153, 26, 26),\n    COL_VERTEX(154, 51, 0),\n    COL_VERTEX(-153, 26, -25),\n    COL_VERTEX(154, 26, -25),\n    COL_VERTEX(-153, -25, 26),\n    COL_VERTEX(-153, -50, 0),\n    COL_VERTEX(154, -50, 0),\n    COL_VERTEX(154, -25, 26),\n    COL_VERTEX(154, -25, -25),\n    COL_VERTEX(-153, -25, -25),\n    COL_VERTEX(-153, 26, 307),\n    COL_VERTEX(-153, -25, 307),\n    COL_VERTEX(154, -25, 307),\n    COL_VERTEX(154, 26, 307),\n    COL_VERTEX(-153, 26, -306),\n    COL_VERTEX(154, 26, -306),\n    COL_VERTEX(-153, -25, -306),\n    COL_VERTEX(154, -25, -306),\n    COL_TRI_INIT(SURFACE_DEFAULT, 26),\n    COL_TRI(9, 14, 13),\n    COL_TRI(11, 12, 2),\n    COL_TRI(11, 13, 12),\n    COL_TRI(12, 13, 14),\n    COL_TRI(12, 14, 15),\n    COL_TRI(12, 0, 2),\n    COL_TRI(12, 15, 0),\n    COL_TRI(9, 15, 14),\n    COL_TRI(9, 0, 15),\n    COL_TRI(9, 3, 0),\n    COL_TRI(11, 2, 1),\n    COL_TRI(5, 16, 4),\n    COL_TRI(5, 17, 16),\n    COL_TRI(9, 5, 3),\n    COL_TRI(9, 17, 5),\n    COL_TRI(11, 4, 16),\n    COL_TRI(11, 1, 4),\n    COL_TRI(9, 8, 10),\n    COL_TRI(17, 18, 16),\n    COL_TRI(17, 19, 18),\n    COL_TRI(9, 19, 17),\n    COL_TRI(11, 16, 18),\n    COL_TRI(9, 13, 6),\n    COL_TRI(11, 7, 6),\n    COL_TRI(18, 10, 11),\n    COL_TRI(18, 19, 10),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 8),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI(3, 4, 1),\n    COL_TRI(3, 5, 4),\n    COL_TRI(6, 7, 8),\n    COL_TRI(6, 8, 9),\n    COL_TRI(10, 7, 11),\n    COL_TRI(10, 8, 7),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/ttc/spinner/geo.inc.c",
    "content": "// 0x0E000370\nconst GeoLayout ttc_geo_000370[] = {\n    GEO_CULLING_RADIUS(500),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, ttc_seg7_dl_07012028),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttc/spinner/model.inc.c",
    "content": "// 0x07011BE0 - 0x07011BF8\nstatic const Lights1 ttc_seg7_lights_07011BE0 = gdSPDefLights1(\n    0x46, 0x46, 0x46,\n    0x8c, 0x8c, 0x8c, 0x28, 0x28, 0x28\n);\n\n// 0x07011BF8 - 0x07011C10\nstatic const Lights1 ttc_seg7_lights_07011BF8 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07011C10 - 0x07011D10\nstatic const Vtx ttc_seg7_vertex_07011C10[] = {\n    {{{  -153,    -25,     26}, 0, {   734,    436}, {0xd6, 0x98, 0x3b, 0xff}}},\n    {{{   154,    -50,      0}, 0, {   224,    478}, {0x33, 0x92, 0x22, 0xff}}},\n    {{{   154,    -25,     26}, 0, {   224,    436}, {0x75, 0xd3, 0x0b, 0xff}}},\n    {{{   154,     26,     26}, 0, {   224,    436}, {0x3c, 0x67, 0x29, 0xff}}},\n    {{{  -153,     51,      0}, 0, {   734,    478}, {0xac, 0x5a, 0x1c, 0xff}}},\n    {{{  -153,     26,     26}, 0, {   734,    436}, {0xa3, 0x50, 0x20, 0xff}}},\n    {{{   154,     51,      0}, 0, {   224,    478}, {0x54, 0x59, 0xe2, 0xff}}},\n    {{{   154,     26,    -25}, 0, {   224,    522}, {0x49, 0x63, 0xe6, 0xff}}},\n    {{{  -153,     26,    -25}, 0, {   734,    522}, {0xb7, 0x59, 0xcc, 0xff}}},\n    {{{  -153,    -25,    -25}, 0, {   734,    522}, {0x86, 0xe3, 0xf4, 0xff}}},\n    {{{   154,    -25,   -306}, 0, {   224,    990}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{   154,     26,   -306}, 0, {   224,    990}, {0x54, 0x2a, 0xac, 0xff}}},\n    {{{  -153,    -50,      0}, 0, {   734,    478}, {0xcd, 0x93, 0xdb, 0xff}}},\n    {{{   154,    -25,    -25}, 0, {   224,    522}, {0x21, 0x8f, 0xd2, 0xff}}},\n    {{{   154,     26,    307}, 0, {   224,      0}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{   154,    -25,    307}, 0, {   224,      0}, {0x33, 0xcd, 0x67, 0xff}}},\n};\n\n// 0x07011D10 - 0x07011DC0\nstatic const Vtx ttc_seg7_vertex_07011D10[] = {\n    {{{   154,     26,   -306}, 0, {   224,    990}, {0x54, 0x2a, 0xac, 0xff}}},\n    {{{   154,    -25,   -306}, 0, {   224,    990}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{  -153,    -25,   -306}, 0, {   734,    990}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{  -153,     26,   -306}, 0, {   734,    990}, {0xac, 0x54, 0xd6, 0xff}}},\n    {{{  -153,     26,    307}, 0, {   734,      0}, {0xb7, 0x49, 0x49, 0xff}}},\n    {{{   154,    -25,    307}, 0, {   224,      0}, {0x33, 0xcd, 0x67, 0xff}}},\n    {{{   154,     26,    307}, 0, {   224,      0}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{  -153,    -25,    307}, 0, {   734,      0}, {0xcd, 0x99, 0x33, 0xff}}},\n    {{{  -153,    -25,    -25}, 0, {   734,    522}, {0x86, 0xe3, 0xf4, 0xff}}},\n    {{{  -153,     26,     26}, 0, {   734,    436}, {0xa3, 0x50, 0x20, 0xff}}},\n    {{{  -153,     26,    -25}, 0, {   734,    522}, {0xb7, 0x59, 0xcc, 0xff}}},\n};\n\n// 0x07011DC0 - 0x07011EC0\nstatic const Vtx ttc_seg7_vertex_07011DC0[] = {\n    {{{  -153,    -25,   -306}, 0, {   734,    990}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{   154,    -25,   -306}, 0, {   224,    990}, {0x49, 0xb7, 0xb7, 0xff}}},\n    {{{   154,    -25,    -25}, 0, {   224,    522}, {0x21, 0x8f, 0xd2, 0xff}}},\n    {{{  -153,     26,    307}, 0, {   734,      0}, {0xb7, 0x49, 0x49, 0xff}}},\n    {{{   154,     26,    307}, 0, {   224,      0}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{   154,     26,     26}, 0, {   224,    436}, {0x3c, 0x67, 0x29, 0xff}}},\n    {{{  -153,     26,     26}, 0, {   734,    436}, {0xa3, 0x50, 0x20, 0xff}}},\n    {{{   154,     26,    -25}, 0, {   224,    522}, {0x49, 0x63, 0xe6, 0xff}}},\n    {{{  -153,     26,   -306}, 0, {   734,    990}, {0xac, 0x54, 0xd6, 0xff}}},\n    {{{  -153,     26,    -25}, 0, {   734,    522}, {0xb7, 0x59, 0xcc, 0xff}}},\n    {{{   154,     26,   -306}, 0, {   224,    990}, {0x54, 0x2a, 0xac, 0xff}}},\n    {{{   154,    -25,     26}, 0, {   224,    436}, {0x75, 0xd3, 0x0b, 0xff}}},\n    {{{  -153,    -25,    307}, 0, {   734,      0}, {0xcd, 0x99, 0x33, 0xff}}},\n    {{{  -153,    -25,     26}, 0, {   734,    436}, {0xd6, 0x98, 0x3b, 0xff}}},\n    {{{   154,    -25,    307}, 0, {   224,      0}, {0x33, 0xcd, 0x67, 0xff}}},\n    {{{  -153,    -25,    -25}, 0, {   734,    522}, {0x86, 0xe3, 0xf4, 0xff}}},\n};\n\n// 0x07011EC0 - 0x07012028\nstatic const Gfx ttc_seg7_dl_07011EC0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09006800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttc_seg7_lights_07011BE0.l, 1),\n    gsSPLight(&ttc_seg7_lights_07011BE0.a, 2),\n    gsSPVertex(ttc_seg7_vertex_07011C10, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  2,  6,  3, 0x0),\n    gsSP2Triangles( 2,  7,  6, 0x0,  6,  8,  4, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  5,  4, 0x0),\n    gsSP2Triangles( 9,  4,  8, 0x0,  2, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12,  0, 0x0, 13,  1, 12, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0, 13, 12,  9, 0x0),\n    gsSP2Triangles( 2,  1, 13, 0x0,  2, 14, 15, 0x0),\n    gsSP2Triangles( 2,  3, 14, 0x0,  2, 11,  7, 0x0),\n    gsSPVertex(ttc_seg7_vertex_07011D10, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  7,  4, 0x0,  8,  4,  9, 0x0),\n    gsSP2Triangles( 8, 10,  3, 0x0,  8,  3,  2, 0x0),\n    gsSPLight(&ttc_seg7_lights_07011BF8.l, 1),\n    gsSPLight(&ttc_seg7_lights_07011BF8.a, 2),\n    gsSPVertex(ttc_seg7_vertex_07011DC0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07012028 - 0x070120D0\nconst Gfx ttc_seg7_dl_07012028[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(200, 255, 255, 255),\n    gsSPFogPosition(900, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttc_seg7_dl_07011EC0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttc/texture.inc.c",
    "content": "// 0x07000000 - 0x07000800\nALIGNED8 static const Texture ttc_seg7_texture_07000000[] = {\n#include \"levels/ttc/0.rgba16.inc.c\"\n};\n\n// 0x07000800 - 0x07001000\nALIGNED8 static const Texture ttc_seg7_texture_07000800[] = {\n#include \"levels/ttc/1.rgba16.inc.c\"\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/1/model.inc.c",
    "content": "// 0x07005000 - 0x07005018\nstatic const Lights1 ttm_seg7_lights_07005000 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07005018 - 0x07005030\nstatic const Lights1 ttm_seg7_lights_07005018 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0x99, 0x99, 0x99, 0x28, 0x28, 0x28\n);\n\n// 0x07005030 - 0x07005048\nstatic const Lights1 ttm_seg7_lights_07005030 = gdSPDefLights1(\n    0x5d, 0x5d, 0x5d,\n    0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28\n);\n\n// 0x07005048 - 0x07005060\nstatic const Lights1 ttm_seg7_lights_07005048 = gdSPDefLights1(\n    0x37, 0x29, 0x22,\n    0x6e, 0x52, 0x44, 0x28, 0x28, 0x28\n);\n\n// 0x07005060 - 0x07005160\nstatic const Vtx ttm_seg7_vertex_07005060[] = {\n    {{{ -1535,   1536,    512}, 0, {     0,  -2076}, {0xc9, 0x00, 0x72, 0xff}}},\n    {{{ -1535,      0,    512}, 0, {     0,    990}, {0xc9, 0x00, 0x72, 0xff}}},\n    {{{  1072,   1584,   1774}, 0, {  5752,  -2172}, {0xc9, 0x00, 0x72, 0xff}}},\n    {{{  1072,    560,   1774}, 0, {  5752,   -128}, {0xc9, 0x00, 0x72, 0xff}}},\n    {{{  1072,    560,   1774}, 0, {  5752,   -128}, {0xf2, 0x00, 0x7e, 0xff}}},\n    {{{  1479,    620,   1820}, 0, {  6524,   -248}, {0xf2, 0x00, 0x7e, 0xff}}},\n    {{{  1072,   1584,   1774}, 0, {  5752,  -2172}, {0xf2, 0x00, 0x7e, 0xff}}},\n    {{{ -3849,  -2559,  -2207}, 0, {     0,  -6164}, {0x82, 0x00, 0xfb, 0xff}}},\n    {{{ -3849,  -6143,  -2207}, 0, {     0,    990}, {0x82, 0x00, 0xfb, 0xff}}},\n    {{{ -4095,  -4095,   3072}, 0, { 10518,  -3098}, {0x82, 0x00, 0xfb, 0xff}}},\n    {{{ -4095,  -6143,   3072}, 0, { 10518,    990}, {0x82, 0x00, 0xfb, 0xff}}},\n    {{{ -4095,  -2047,   3072}, 0, { 10518,  -7186}, {0x82, 0x00, 0xfb, 0xff}}},\n    {{{ -4095,  -4095,   3072}, 0, {     0,  -3098}, {0x98, 0x00, 0x48, 0xff}}},\n    {{{ -4095,  -6143,   3072}, 0, {     0,    990}, {0x98, 0x00, 0x48, 0xff}}},\n    {{{ -2047,  -6143,   6043}, 0, {  6794,    990}, {0x98, 0x00, 0x48, 0xff}}},\n    {{{ -2047,  -4505,   6043}, 0, {  6794,  -2280}, {0x98, 0x00, 0x48, 0xff}}},\n};\n\n// 0x07005160 - 0x07005250\nstatic const Vtx ttm_seg7_vertex_07005160[] = {\n    {{{  3587,  -1330,   2859}, 0, {  3800,  -5040}, {0x5e, 0x00, 0x54, 0xff}}},\n    {{{  3587,  -2405,   2859}, 0, {  3800,  -2894}, {0x5e, 0x00, 0x54, 0xff}}},\n    {{{  4096,  -1330,   2287}, 0, {  5206,  -5040}, {0x5e, 0x00, 0x54, 0xff}}},\n    {{{ -2047,  -4505,   6043}, 0, {  6794,  -2280}, {0xe6, 0x00, 0x7c, 0xff}}},\n    {{{ -2047,  -6143,   6043}, 0, {  6794,    990}, {0xe6, 0x00, 0x7c, 0xff}}},\n    {{{   819,  -6143,   6656}, 0, { 12110,    990}, {0xe6, 0x00, 0x7c, 0xff}}},\n    {{{   819,  -4505,   6656}, 0, { 12110,  -2280}, {0xe6, 0x00, 0x7c, 0xff}}},\n    {{{  3506,  -4082,   5556}, 0, {   -34,  -3114}, {0x66, 0x00, 0x4b, 0xff}}},\n    {{{  5325,  -6143,   3072}, 0, {  5738,    994}, {0x66, 0x00, 0x4b, 0xff}}},\n    {{{  5325,  -4607,   3072}, 0, {  5736,  -2070}, {0x66, 0x00, 0x4b, 0xff}}},\n    {{{  3506,  -6138,   5556}, 0, {     0,    990}, {0x66, 0x00, 0x4b, 0xff}}},\n    {{{   819,  -6143,   6656}, 0, {     0,    990}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{  3506,  -6138,   5556}, 0, {  5764,    990}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{  3506,  -4082,   5556}, 0, {  5772,  -3114}, {0x30, 0x00, 0x75, 0xff}}},\n    {{{   819,  -4505,   6656}, 0, {   -26,  -2280}, {0x30, 0x00, 0x75, 0xff}}},\n};\n\n// 0x07005250 - 0x07005330\nstatic const Vtx ttm_seg7_vertex_07005250[] = {\n    {{{  2048,  -4351,   4096}, 0, {  3238,  -1462}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2045,  -4351,   4467}, 0, {  3232,   -722}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2515,  -4351,   3371}, 0, {  4170,  -2910}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3587,  -2405,   2859}, 0, {  3800,  -2894}, {0x5e, 0x00, 0x54, 0xff}}},\n    {{{  3587,  -3798,   2859}, 0, {  3800,   -114}, {0x5e, 0x00, 0x54, 0xff}}},\n    {{{  4096,  -1330,   2287}, 0, {  5206,  -5040}, {0x5e, 0x00, 0x54, 0xff}}},\n    {{{  4096,  -3521,   2287}, 0, {  5206,   -668}, {0x5e, 0x00, 0x54, 0xff}}},\n    {{{  1109,  -2668,   3215}, 0, {   974,  -2960}, {0xc6, 0x4a, 0x54, 0xff}}},\n    {{{  1150,  -1891,   2562}, 0, {  -132,  -4554}, {0xc6, 0x4a, 0x54, 0xff}}},\n    {{{   435,  -2668,   2747}, 0, {  -414,  -3010}, {0xc6, 0x4a, 0x54, 0xff}}},\n    {{{ -3071,  -2047,   1024}, 0, {  6340,  -7186}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3071,      0,   1024}, 0, {  6340, -11274}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3071,   -511,  -2047}, 0, {   214, -10252}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3071,  -2559,  -2047}, 0, {   214,  -6164}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07005330 - 0x07005420\nstatic const Vtx ttm_seg7_vertex_07005330[] = {\n    {{{  2045,  -4082,   4467}, 0, {  3572,    164}, {0xfc, 0x00, 0x82, 0xff}}},\n    {{{  2045,  -4607,   4467}, 0, {  3656,   1206}, {0xfc, 0x00, 0x82, 0xff}}},\n    {{{   589,  -4607,   4520}, 0, {  6396,    990}, {0xfc, 0x00, 0x82, 0xff}}},\n    {{{  2045,  -4351,   4467}, 0, {  3232,   -722}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3587,  -4351,   3371}, 0, {  6310,  -2910}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2515,  -4351,   3371}, 0, {  4170,  -2910}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2748,  -4105,   3010}, 0, {  4634,  -3632}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2515,  -4105,   3371}, 0, {  4170,  -2910}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3587,  -4105,   3371}, 0, {  6310,  -2910}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3587,  -4105,   2859}, 0, {  6310,  -3932}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3075,  -4105,   2859}, 0, {  5288,  -3932}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3587,  -4351,   3371}, 0, {     0,    990}, {0xb7, 0x00, 0x99, 0xff}}},\n    {{{  2045,  -4351,   4467}, 0, {  3614,    700}, {0xb7, 0x00, 0x99, 0xff}}},\n    {{{  2045,  -4082,   4467}, 0, {  3572,    164}, {0xb7, 0x00, 0x99, 0xff}}},\n    {{{  3587,  -3798,   3371}, 0, {  -118,   -110}, {0xb7, 0x00, 0x99, 0xff}}},\n};\n\n// 0x07005420 - 0x07005520\nstatic const Vtx ttm_seg7_vertex_07005420[] = {\n    {{{  -613,  -4664,   3486}, 0, { -2074,  -2680}, {0x00, 0x7e, 0xfb, 0xff}}},\n    {{{ -1992,  -4607,   4788}, 0, { -4826,    -82}, {0x00, 0x7e, 0xfb, 0xff}}},\n    {{{     0,  -4607,   4915}, 0, {  -848,    172}, {0x00, 0x7e, 0xfb, 0xff}}},\n    {{{   614,  -3685,   3686}, 0, {  8232,  -3916}, {0x97, 0x40, 0x1d, 0xff}}},\n    {{{  1811,  -1891,   4028}, 0, { 10552,  -7498}, {0x97, 0x40, 0x1d, 0xff}}},\n    {{{  1109,  -2668,   3215}, 0, {  8458,  -5948}, {0x97, 0x40, 0x1d, 0xff}}},\n    {{{  -613,  -4664,   3486}, 0, {  6028,  -1962}, {0xc1, 0x3d, 0x5b, 0xff}}},\n    {{{   614,  -4607,   4301}, 0, {  8966,  -2076}, {0xc1, 0x3d, 0x5b, 0xff}}},\n    {{{   614,  -3685,   3686}, 0, {  8232,  -3916}, {0xc1, 0x3d, 0x5b, 0xff}}},\n    {{{   614,  -4607,   4301}, 0, {   376,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   589,  -4607,   4520}, 0, {   326,   -616}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2048,  -4607,   4096}, 0, {  3238,  -1462}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2045,  -4607,   4467}, 0, {  3232,   -722}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -613,  -4664,   3486}, 0, { -2074,  -2680}, {0xfd, 0x7e, 0xfd, 0xff}}},\n    {{{     0,  -4607,   4915}, 0, {  -848,    172}, {0xfd, 0x7e, 0xfd, 0xff}}},\n    {{{   614,  -4607,   4301}, 0, {   376,  -1054}, {0xfd, 0x7e, 0xfd, 0xff}}},\n};\n\n// 0x07005520 - 0x07005620\nstatic const Vtx ttm_seg7_vertex_07005520[] = {\n    {{{     0,  -4607,   4915}, 0, {  -848,    172}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   589,  -4607,   4520}, 0, {   326,   -616}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   614,  -4607,   4301}, 0, {   376,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3849,  -6143,  -2207}, 0, {     0,    990}, {0x03, 0x00, 0x82, 0xff}}},\n    {{{ -3849,  -2559,  -2207}, 0, {     0,  -6164}, {0x03, 0x00, 0x82, 0xff}}},\n    {{{ -3216,  -2559,  -2192}, 0, { -1294,  -6164}, {0x03, 0x00, 0x82, 0xff}}},\n    {{{   614,  -3685,   3686}, 0, {   142,   -850}, {0x0e, 0x45, 0x68, 0xff}}},\n    {{{   614,  -4607,   4301}, 0, {     0,    990}, {0x0e, 0x45, 0x68, 0xff}}},\n    {{{  2048,  -4607,   4096}, 0, {  2858,    990}, {0x0e, 0x45, 0x68, 0xff}}},\n    {{{  2048,  -4607,   4096}, 0, { 11012,  -2076}, {0xdd, 0x00, 0x7a, 0xff}}},\n    {{{  2048,  -4351,   4096}, 0, { 11012,  -2588}, {0xdd, 0x00, 0x7a, 0xff}}},\n    {{{  1811,  -1891,   4028}, 0, { 10552,  -7498}, {0xdd, 0x00, 0x7a, 0xff}}},\n    {{{  2048,  -1548,   4096}, 0, { 11012,  -8184}, {0xdd, 0x00, 0x7a, 0xff}}},\n    {{{  2048,  -4607,   4096}, 0, { 11012,  -2076}, {0xde, 0x00, 0x7a, 0xff}}},\n    {{{  1811,  -1891,   4028}, 0, { 10552,  -7498}, {0xde, 0x00, 0x7a, 0xff}}},\n    {{{   614,  -3685,   3686}, 0, {  8232,  -3916}, {0xde, 0x00, 0x7a, 0xff}}},\n};\n\n// 0x07005620 - 0x07005700\nstatic const Vtx ttm_seg7_vertex_07005620[] = {\n    {{{ -1674,  -4682,   2883}, 0, { -4192,  -3884}, {0x00, 0x7e, 0xfc, 0xff}}},\n    {{{ -1992,  -4607,   4788}, 0, { -4826,    -82}, {0x00, 0x7e, 0xfc, 0xff}}},\n    {{{  -613,  -4664,   3486}, 0, { -2074,  -2680}, {0x00, 0x7e, 0xfc, 0xff}}},\n    {{{  3587,  -2405,   2859}, 0, {  3800,  -2894}, {0x00, 0x27, 0x78, 0xff}}},\n    {{{  3494,  -1887,   2692}, 0, {  3738,  -3928}, {0x00, 0x27, 0x78, 0xff}}},\n    {{{  3075,  -2402,   2859}, 0, {  2874,  -2900}, {0x00, 0x27, 0x78, 0xff}}},\n    {{{  3075,  -4105,   2859}, 0, {  2874,    500}, {0x35, 0x00, 0x73, 0xff}}},\n    {{{  3075,  -2402,   2859}, 0, {  2874,  -2900}, {0x35, 0x00, 0x73, 0xff}}},\n    {{{  2748,  -2400,   3010}, 0, {  2154,  -2904}, {0x35, 0x00, 0x73, 0xff}}},\n    {{{  2748,  -4105,   3010}, 0, {  2154,    500}, {0x35, 0x00, 0x73, 0xff}}},\n    {{{  3075,  -4105,   2859}, 0, {  2874,    500}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3587,  -2405,   2859}, 0, {  3800,  -2894}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3075,  -2402,   2859}, 0, {  2874,  -2900}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3587,  -4105,   2859}, 0, {  3800,    500}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07005700 - 0x070057E0\nstatic const Vtx ttm_seg7_vertex_07005700[] = {\n    {{{  3075,  -2402,   2859}, 0, {  2874,  -2900}, {0x36, 0x45, 0x5b, 0xff}}},\n    {{{  2886,  -1937,   2618}, 0, {  2794,  -3824}, {0x36, 0x45, 0x5b, 0xff}}},\n    {{{  2545,  -1881,   2779}, 0, {  2042,  -3936}, {0x36, 0x45, 0x5b, 0xff}}},\n    {{{  3494,  -1887,   2692}, 0, {  3738,  -3928}, {0xee, 0x33, 0x72, 0xff}}},\n    {{{  2886,  -1937,   2618}, 0, {  2794,  -3824}, {0xee, 0x33, 0x72, 0xff}}},\n    {{{  3075,  -2402,   2859}, 0, {  2874,  -2900}, {0xee, 0x33, 0x72, 0xff}}},\n    {{{  2545,  -1881,   2779}, 0, {  2042,  -3936}, {0x2e, 0x3e, 0x64, 0xff}}},\n    {{{  2748,  -2400,   3010}, 0, {  2154,  -2904}, {0x2e, 0x3e, 0x64, 0xff}}},\n    {{{  3075,  -2402,   2859}, 0, {  2874,  -2900}, {0x2e, 0x3e, 0x64, 0xff}}},\n    {{{  2434,  -1548,   3497}, 0, {  1174,  -4606}, {0x6a, 0x00, 0x44, 0xff}}},\n    {{{  2434,  -2162,   3497}, 0, {  1174,  -3380}, {0x6a, 0x00, 0x44, 0xff}}},\n    {{{  2748,  -2400,   3010}, 0, {  2154,  -2904}, {0x6a, 0x00, 0x44, 0xff}}},\n    {{{  2515,  -4105,   3371}, 0, {  1426,    500}, {0x6a, 0x00, 0x44, 0xff}}},\n    {{{  2748,  -4105,   3010}, 0, {  2154,    500}, {0x6a, 0x00, 0x44, 0xff}}},\n};\n\n// 0x070057E0 - 0x070058E0\nstatic const Vtx ttm_seg7_vertex_070057E0[] = {\n    {{{   435,  -2668,   2747}, 0, {  4322,    990}, {0x01, 0x60, 0x52, 0xff}}},\n    {{{  1606,  -1529,   1382}, 0, {  4914,  -3216}, {0x01, 0x60, 0x52, 0xff}}},\n    {{{ -1535,  -2047,   2048}, 0, {     0,    990}, {0x01, 0x60, 0x52, 0xff}}},\n    {{{ -1674,  -4682,   2883}, 0, {  3612,  -1926}, {0xe3, 0x26, 0x75, 0xff}}},\n    {{{   435,  -2668,   2747}, 0, {  6820,  -5948}, {0xe3, 0x26, 0x75, 0xff}}},\n    {{{ -1535,  -2047,   2048}, 0, {  2834,  -7186}, {0xe3, 0x26, 0x75, 0xff}}},\n    {{{ -1674,  -4682,   2883}, 0, {  3612,  -1926}, {0xc9, 0x40, 0x5e, 0xff}}},\n    {{{  -613,  -4664,   3486}, 0, {  6028,  -1962}, {0xc9, 0x40, 0x5e, 0xff}}},\n    {{{   435,  -2668,   2747}, 0, {  6820,  -5948}, {0xc9, 0x40, 0x5e, 0xff}}},\n    {{{ -1535,  -2047,   2048}, 0, {  2834,  -7186}, {0xba, 0x00, 0x69, 0xff}}},\n    {{{ -3071,      0,   1024}, 0, {  -842, -11274}, {0xba, 0x00, 0x69, 0xff}}},\n    {{{ -3071,  -2047,   1024}, 0, {  -842,  -7186}, {0xba, 0x00, 0x69, 0xff}}},\n    {{{ -1535,      0,   2048}, 0, {  2834, -11274}, {0xba, 0x00, 0x69, 0xff}}},\n    {{{  2048,  -4351,   4096}, 0, {     0,    990}, {0x6a, 0x00, 0x44, 0xff}}},\n    {{{  2515,  -4351,   3371}, 0, {  1426,    990}, {0x6a, 0x00, 0x44, 0xff}}},\n    {{{  2515,  -4105,   3371}, 0, {  1426,    500}, {0x6a, 0x00, 0x44, 0xff}}},\n};\n\n// 0x070058E0 - 0x070059E0\nstatic const Vtx ttm_seg7_vertex_070058E0[] = {\n    {{{  2748,  -2400,   3010}, 0, {  2154,  -2904}, {0x6a, 0x00, 0x44, 0xff}}},\n    {{{  2048,  -4351,   4096}, 0, {     0,    990}, {0x6a, 0x00, 0x44, 0xff}}},\n    {{{  2515,  -4105,   3371}, 0, {  1426,    500}, {0x6a, 0x00, 0x44, 0xff}}},\n    {{{  2434,  -2162,   3497}, 0, {  1174,  -3380}, {0x6a, 0x00, 0x44, 0xff}}},\n    {{{  2748,  -1548,   3010}, 0, {  2154,  -4606}, {0x6a, 0x00, 0x44, 0xff}}},\n    {{{  2434,  -1548,   3497}, 0, {  1174,  -4606}, {0x6a, 0x00, 0x44, 0xff}}},\n    {{{  2048,  -2162,   4096}, 0, {     0,  -3380}, {0x6a, 0x00, 0x44, 0xff}}},\n    {{{  2748,  -2400,   3010}, 0, {  -666,   2010}, {0x5f, 0x00, 0xad, 0xff}}},\n    {{{  2545,  -1881,   2779}, 0, {     0,    990}, {0x5f, 0x00, 0xad, 0xff}}},\n    {{{  2748,  -1548,   3010}, 0, {  -626,    310}, {0x5f, 0x00, 0xad, 0xff}}},\n    {{{  1479,  -1842,   1564}, 0, {  3196,    990}, {0x5f, 0x00, 0xad, 0xff}}},\n    {{{  1910,  -1529,   2055}, 0, {  1908,    334}, {0x5f, 0x00, 0xad, 0xff}}},\n    {{{  1606,  -1945,   1382}, 0, {  3534,    990}, {0x73, 0x00, 0xcc, 0xff}}},\n    {{{  1910,  -1529,   2055}, 0, {  2054,    212}, {0x73, 0x00, 0xcc, 0xff}}},\n    {{{  1910,  -1939,   2055}, 0, {  2082,   1028}, {0x73, 0x00, 0xcc, 0xff}}},\n    {{{  1606,  -1529,   1382}, 0, {  3506,    162}, {0x73, 0x00, 0xcc, 0xff}}},\n};\n\n// 0x070059E0 - 0x07005AE0\nstatic const Vtx ttm_seg7_vertex_070059E0[] = {\n    {{{  3083,  -6143,  -5295}, 0, {     0,    990}, {0x16, 0x32, 0x8e, 0xff}}},\n    {{{ -1202,  -6143,  -6131}, 0, {  8524,    990}, {0x16, 0x32, 0x8e, 0xff}}},\n    {{{  -457,  -3448,  -4799}, 0, {  7036,  -4390}, {0x16, 0x32, 0x8e, 0xff}}},\n    {{{ -1202,  -6143,  -6131}, 0, {  8524,    990}, {0xe3, 0x3d, 0x95, 0xff}}},\n    {{{ -1202,  -3448,  -4595}, 0, {  8524,  -4390}, {0xe3, 0x3d, 0x95, 0xff}}},\n    {{{  -457,  -3448,  -4799}, 0, {  7036,  -4390}, {0xe3, 0x3d, 0x95, 0xff}}},\n    {{{  5035,  -6143,  -3735}, 0, {   786,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  5035,  -3993,  -3735}, 0, {   786,  -3302}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  5325,  -3993,  -3445}, 0, {     0,  -3302}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  5325,  -6143,  -3445}, 0, {     0,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  4782,  -3993,  -3482}, 0, {   786,  -3302}, {0x5a, 0x00, 0xa8, 0xff}}},\n    {{{  4782,  -6143,  -3482}, 0, {   786,    990}, {0x5a, 0x00, 0xa8, 0xff}}},\n    {{{  3144,  -6143,  -5164}, 0, {  5472,    990}, {0x5a, 0x00, 0xa8, 0xff}}},\n    {{{  4813,  -6143,  -1473}, 0, {     0,    990}, {0x7a, 0x0c, 0x1f, 0xff}}},\n    {{{  5325,  -6143,  -3445}, 0, {  4036,    990}, {0x7a, 0x0c, 0x1f, 0xff}}},\n    {{{  5035,  -3993,  -3156}, 0, {  3332,  -3302}, {0x7a, 0x0c, 0x1f, 0xff}}},\n};\n\n// 0x07005AE0 - 0x07005BD0\nstatic const Vtx ttm_seg7_vertex_07005AE0[] = {\n    {{{  5325,  -6143,  -3445}, 0, {  4036,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  5325,  -3993,  -3445}, 0, {  4036,  -3302}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  5035,  -3993,  -3156}, 0, {  3332,  -3302}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  4096,  -1330,   2287}, 0, {  1536,  -8616}, {0x5f, 0x00, 0xac, 0xff}}},\n    {{{  3439,  -1330,   1545}, 0, {  3016,  -8616}, {0x5f, 0x00, 0xac, 0xff}}},\n    {{{  3439,    313,   1545}, 0, {  3016, -11898}, {0x5f, 0x00, 0xac, 0xff}}},\n    {{{  3587,  -1330,   2859}, 0, {     0,    990}, {0x58, 0x2f, 0x4e, 0xff}}},\n    {{{  4096,  -1330,   2287}, 0, {  1498,    990}, {0x58, 0x2f, 0x4e, 0xff}}},\n    {{{  3247,    313,   2252}, 0, {   622,  -2464}, {0x58, 0x2f, 0x4e, 0xff}}},\n    {{{  4096,  -1330,   2287}, 0, {  1498,    990}, {0x6d, 0x39, 0x1d, 0xff}}},\n    {{{  3439,    313,   1545}, 0, {  1734,  -2834}, {0x6d, 0x39, 0x1d, 0xff}}},\n    {{{  3247,    313,   2252}, 0, {   622,  -2464}, {0x6d, 0x39, 0x1d, 0xff}}},\n    {{{  3343,  -1048,  -2126}, 0, {  5824, -13884}, {0x04, 0x77, 0x29, 0xff}}},\n    {{{  2835,   -511,  -3621}, 0, {  4808, -16868}, {0x04, 0x77, 0x29, 0xff}}},\n    {{{  2477,   -681,  -3090}, 0, {  4094, -15808}, {0x04, 0x77, 0x29, 0xff}}},\n};\n\n// 0x07005BD0 - 0x07005CD0\nstatic const Vtx ttm_seg7_vertex_07005BD0[] = {\n    {{{  2477,   -681,  -3090}, 0, {  4094, -15808}, {0x31, 0x74, 0x00, 0xff}}},\n    {{{  3230,  -1000,  -1962}, 0, {  5598, -13558}, {0x31, 0x74, 0x00, 0xff}}},\n    {{{  3343,  -1048,  -2126}, 0, {  5824, -13884}, {0x31, 0x74, 0x00, 0xff}}},\n    {{{  2401,   -649,  -2639}, 0, {  3944, -14908}, {0x31, 0x74, 0x00, 0xff}}},\n    {{{  2835,   -511,  -3621}, 0, {  4808, -16868}, {0x16, 0x71, 0x33, 0xff}}},\n    {{{  -574,    -10,  -3212}, 0, { -1994, -16052}, {0x16, 0x71, 0x33, 0xff}}},\n    {{{  2477,   -681,  -3090}, 0, {  4094, -15808}, {0x16, 0x71, 0x33, 0xff}}},\n    {{{  2401,   -649,  -2639}, 0, {  3944, -14908}, {0x1c, 0x7b, 0xfd, 0xff}}},\n    {{{  2477,   -681,  -3090}, 0, {  4094, -15808}, {0x1c, 0x7b, 0xfd, 0xff}}},\n    {{{  -166,    -60,  -2804}, 0, { -1180, -15238}, {0x1c, 0x7b, 0xfd, 0xff}}},\n    {{{  2477,   -681,  -3090}, 0, {  4094, -15808}, {0x1b, 0x7b, 0xf4, 0xff}}},\n    {{{  -574,    -10,  -3212}, 0, { -1994, -16052}, {0x1b, 0x7b, 0xf4, 0xff}}},\n    {{{  -166,    -60,  -2804}, 0, { -1180, -15238}, {0x1b, 0x7b, 0xf4, 0xff}}},\n    {{{  2835,   -511,  -3621}, 0, {  4808, -16868}, {0x16, 0x73, 0x30, 0xff}}},\n    {{{  -786,    205,  -3621}, 0, { -2418, -16868}, {0x16, 0x73, 0x30, 0xff}}},\n    {{{  -574,    -10,  -3212}, 0, { -1994, -16052}, {0x16, 0x73, 0x30, 0xff}}},\n};\n\n// 0x07005CD0 - 0x07005DD0\nstatic const Vtx ttm_seg7_vertex_07005CD0[] = {\n    {{{ -1535,      0,   2048}, 0, {  2834, -11274}, {0xfd, 0x00, 0x7e, 0xff}}},\n    {{{ -1535,   -818,   2048}, 0, {  2834,  -9638}, {0xfd, 0x00, 0x7e, 0xff}}},\n    {{{  1479,    620,   2128}, 0, {  7748, -12512}, {0xfd, 0x00, 0x7e, 0xff}}},\n    {{{  3343,  -1048,  -2126}, 0, {  5824, -13884}, {0xde, 0x6e, 0x33, 0xff}}},\n    {{{  3874,  -1023,  -1825}, 0, {  6882, -13282}, {0xde, 0x6e, 0x33, 0xff}}},\n    {{{  2835,   -511,  -3621}, 0, {  4808, -16868}, {0xde, 0x6e, 0x33, 0xff}}},\n    {{{ -1535,      0,    512}, 0, {  5176, -11274}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1535,   1280,  -1535}, 0, {  1094, -13828}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1535,    512,  -1535}, 0, {  1094, -12296}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1535,   1536,    512}, 0, {  5176, -14340}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1947,    512,  -1672}, 0, {   858, -12296}, {0x83, 0x00, 0xee, 0xff}}},\n    {{{ -1947,   -511,  -1672}, 0, {   858, -10252}, {0x83, 0x00, 0xee, 0xff}}},\n    {{{ -2312,      0,    771}, 0, {  5766, -11274}, {0x83, 0x00, 0xee, 0xff}}},\n    {{{  3072,    313,   1024}, 0, {  9604,  -3260}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3072,   1024,   1024}, 0, {  9674,  -4678}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2560,   1536,   1024}, 0, {  8732,  -5748}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07005DD0 - 0x07005EB0\nstatic const Vtx ttm_seg7_vertex_07005DD0[] = {\n    {{{  3072,   1024,   1024}, 0, {  9674,  -4678}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3072,   1536,   1024}, 0, {  9722,  -5700}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2560,   1536,   1024}, 0, {  8732,  -5748}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2560,    313,   1024}, 0, {  8614,  -3308}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3072,    313,   1024}, 0, {  9604,  -3260}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3072,    768,  -1279}, 0, {   884,   1294}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3072,    922,   -818}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3072,    768,   -818}, 0, {     0,   1294}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3874,  -1023,  -1825}, 0, {  6882, -13282}, {0x03, 0x7e, 0x03, 0xff}}},\n    {{{  3230,  -1000,  -1962}, 0, {  5598, -13558}, {0x03, 0x7e, 0x03, 0xff}}},\n    {{{  3584,  -1023,  -1535}, 0, {  6304, -12704}, {0x03, 0x7e, 0x03, 0xff}}},\n    {{{  3874,  -1023,  -1825}, 0, {  6882, -13282}, {0x0a, 0x7b, 0xe4, 0xff}}},\n    {{{  3343,  -1048,  -2126}, 0, {  5824, -13884}, {0x0a, 0x7b, 0xe4, 0xff}}},\n    {{{  3230,  -1000,  -1962}, 0, {  5598, -13558}, {0x0a, 0x7b, 0xe4, 0xff}}},\n};\n\n// 0x07005EB0 - 0x07005FA0\nstatic const Vtx ttm_seg7_vertex_07005EB0[] = {\n    {{{ -1535,   -818,   2048}, 0, {  2834,  -9638}, {0x0a, 0xe4, 0x7b, 0xff}}},\n    {{{  1910,    466,   2055}, 0, {  8352, -12206}, {0x0a, 0xe4, 0x7b, 0xff}}},\n    {{{  1479,    620,   2128}, 0, {  7748, -12512}, {0x0a, 0xe4, 0x7b, 0xff}}},\n    {{{  1910,    466,   2055}, 0, {  8352, -12206}, {0x15, 0x00, 0x7d, 0xff}}},\n    {{{  1910,    620,   2055}, 0, {  8352, -12512}, {0x15, 0x00, 0x7d, 0xff}}},\n    {{{  1479,    620,   2128}, 0, {  7748, -12512}, {0x15, 0x00, 0x7d, 0xff}}},\n    {{{  3072,    922,  -1279}, 0, {   884,    990}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{  3072,    768,  -1279}, 0, {   884,   1294}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{  3174,    768,  -1535}, 0, {  1412,   1294}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{  3072,    768,  -1279}, 0, {   884,   1294}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3072,    922,  -1279}, 0, {   884,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3072,    922,   -818}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1535,   1280,  -1535}, 0, { -3914, -12704}, {0x23, 0x6b, 0x3a, 0xff}}},\n    {{{ -1342,   1178,  -1465}, 0, { -3530, -12566}, {0x23, 0x6b, 0x3a, 0xff}}},\n    {{{  -162,   1165,  -2161}, 0, { -1174, -13954}, {0x23, 0x6b, 0x3a, 0xff}}},\n};\n\n// 0x07005FA0 - 0x07006080\nstatic const Vtx ttm_seg7_vertex_07005FA0[] = {\n    {{{ -1535,   1280,  -1535}, 0, { -3914, -12704}, {0x21, 0x6d, 0x36, 0xff}}},\n    {{{  -162,   1165,  -2161}, 0, { -1174, -13954}, {0x21, 0x6d, 0x36, 0xff}}},\n    {{{  -285,   1280,  -2317}, 0, { -1418, -14266}, {0x21, 0x6d, 0x36, 0xff}}},\n    {{{ -1342,   1178,  -1465}, 0, { -3530, -12566}, {0x3e, 0x6d, 0xf3, 0xff}}},\n    {{{ -1535,   1280,  -1535}, 0, { -3914, -12704}, {0x3e, 0x6d, 0xf3, 0xff}}},\n    {{{ -1535,   1536,    512}, 0, { -3914,  -8616}, {0x3e, 0x6d, 0xf3, 0xff}}},\n    {{{  3237,    711,   -818}, 0, {     0,    990}, {0x1d, 0x54, 0xa6, 0xff}}},\n    {{{  3072,    768,   -818}, 0, {     0,    642}, {0x1d, 0x54, 0xa6, 0xff}}},\n    {{{  3287,    922,   -605}, 0, {  -634,    948}, {0x1d, 0x54, 0xa6, 0xff}}},\n    {{{  3287,    717,   -605}, 0, {  3248,    184}, {0x7e, 0x00, 0x0c, 0xff}}},\n    {{{  3287,    922,   -605}, 0, {  3248,   -226}, {0x7e, 0x00, 0x0c, 0xff}}},\n    {{{  3226,    614,     -1}, 0, {  2038,    388}, {0x7e, 0x00, 0x0c, 0xff}}},\n    {{{  3226,   1280,     -1}, 0, {  2038,   -940}, {0x7e, 0x00, 0x0c, 0xff}}},\n    {{{  3287,   1280,   -605}, 0, {  3248,   -940}, {0x7e, 0x00, 0x0c, 0xff}}},\n};\n\n// 0x07006080 - 0x07006170\nstatic const Vtx ttm_seg7_vertex_07006080[] = {\n    {{{  3287,    922,   -605}, 0, {  3248,   -226}, {0x7b, 0x00, 0xe3, 0xff}}},\n    {{{  3287,    717,   -605}, 0, {  3248,    184}, {0x7b, 0x00, 0xe3, 0xff}}},\n    {{{  3237,    711,   -818}, 0, {  3662,    196}, {0x7b, 0x00, 0xe3, 0xff}}},\n    {{{  3247,    313,   2252}, 0, {  -412,   2400}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3439,    313,   1545}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2560,    313,   1024}, 0, { -1784,    -50}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3174,    768,  -1535}, 0, {  -558,  -5160}, {0x00, 0x7a, 0x1f, 0xff}}},\n    {{{  3584,    768,  -1535}, 0, {   258,  -5160}, {0x00, 0x7a, 0x1f, 0xff}}},\n    {{{  2377,   1024,  -2521}, 0, { -2150,  -7128}, {0x00, 0x7a, 0x1f, 0xff}}},\n    {{{  3174,    768,  -1535}, 0, {  -558,  -5160}, {0x26, 0x78, 0x00, 0xff}}},\n    {{{  2377,   1024,  -2521}, 0, { -2150,  -7128}, {0x26, 0x78, 0x00, 0xff}}},\n    {{{  2377,   1024,  -2009}, 0, { -2150,  -6106}, {0x26, 0x78, 0x00, 0xff}}},\n    {{{  3072,    768,   -818}, 0, {  -762,  -3728}, {0x28, 0x74, 0x1c, 0xff}}},\n    {{{  3237,    711,   -818}, 0, {  -434,  -3728}, {0x28, 0x74, 0x1c, 0xff}}},\n    {{{  3584,    768,  -1535}, 0, {   258,  -5160}, {0x28, 0x74, 0x1c, 0xff}}},\n};\n\n// 0x07006170 - 0x07006250\nstatic const Vtx ttm_seg7_vertex_07006170[] = {\n    {{{  3584,    768,  -1535}, 0, {   258,  -5160}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3072,    768,  -1279}, 0, {  -762,  -4648}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3072,    768,   -818}, 0, {  -762,  -3728}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3439,    313,   1545}, 0, {     0,    990}, {0x33, 0x72, 0x13, 0xff}}},\n    {{{  3584,    768,  -1535}, 0, {   258,  -5160}, {0x33, 0x72, 0x13, 0xff}}},\n    {{{  3441,    711,   -818}, 0, {   -28,  -3728}, {0x33, 0x72, 0x13, 0xff}}},\n    {{{  3174,    768,  -1535}, 0, {  -558,  -5160}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2377,   1024,  -2009}, 0, { -2150,  -6106}, {0x0c, 0x7e, 0x00, 0xff}}},\n    {{{  2377,   1024,  -2521}, 0, { -2150,  -7128}, {0x0c, 0x7e, 0x00, 0xff}}},\n    {{{  -285,   1280,  -2317}, 0, { -7464,  -6720}, {0x0c, 0x7e, 0x00, 0xff}}},\n    {{{   330,   1219,  -1533}, 0, { -6236,  -5154}, {0x0c, 0x7e, 0x00, 0xff}}},\n    {{{  3072,   1536,    512}, 0, {   984,  -1452}, {0x75, 0x2e, 0x0b, 0xff}}},\n    {{{  3226,   1280,     -1}, 0, {  2038,   -940}, {0x75, 0x2e, 0x0b, 0xff}}},\n    {{{  3287,   1280,   -605}, 0, {  3248,   -940}, {0x75, 0x2e, 0x0b, 0xff}}},\n};\n\n// 0x07006250 - 0x07006340\nstatic const Vtx ttm_seg7_vertex_07006250[] = {\n    {{{  3439,    313,   1545}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3072,    313,   1024}, 0, {  -762,    -50}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2560,    313,   1024}, 0, { -1784,    -50}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3226,    614,     -1}, 0, {  -454,  -2098}, {0x08, 0x79, 0x24, 0xff}}},\n    {{{  2970,    413,    717}, 0, {  -864,   -816}, {0x08, 0x79, 0x24, 0xff}}},\n    {{{  3072,    313,   1024}, 0, {  -762,    -50}, {0x08, 0x79, 0x24, 0xff}}},\n    {{{  3072,    313,   1024}, 0, {  -762,    -50}, {0xd8, 0x75, 0x1c, 0xff}}},\n    {{{  3439,    313,   1545}, 0, {     0,    990}, {0xd8, 0x75, 0x1c, 0xff}}},\n    {{{  3226,    614,     -1}, 0, {  -454,  -2098}, {0xd8, 0x75, 0x1c, 0xff}}},\n    {{{  3441,    711,   -818}, 0, {   -28,  -3728}, {0x00, 0x7e, 0x0a, 0xff}}},\n    {{{  3584,    768,  -1535}, 0, {   258,  -5160}, {0x00, 0x7e, 0x0a, 0xff}}},\n    {{{  3237,    711,   -818}, 0, {  -434,  -3728}, {0x00, 0x7e, 0x0a, 0xff}}},\n    {{{  3441,    711,   -818}, 0, {   -28,  -3728}, {0x00, 0x7e, 0xfd, 0xff}}},\n    {{{  3237,    711,   -818}, 0, {  -434,  -3728}, {0x00, 0x7e, 0xfd, 0xff}}},\n    {{{  3287,    717,   -605}, 0, {  -334,  -3304}, {0x00, 0x7e, 0xfd, 0xff}}},\n};\n\n// 0x07006340 - 0x07006430\nstatic const Vtx ttm_seg7_vertex_07006340[] = {\n    {{{  3441,    711,   -818}, 0, {   -28,  -3728}, {0x25, 0x76, 0x18, 0xff}}},\n    {{{  3287,    717,   -605}, 0, {  -334,  -3304}, {0x25, 0x76, 0x18, 0xff}}},\n    {{{  3226,    614,     -1}, 0, {  -454,  -2098}, {0x25, 0x76, 0x18, 0xff}}},\n    {{{  3439,    313,   1545}, 0, {     0,    990}, {0x17, 0x7b, 0x14, 0xff}}},\n    {{{  3441,    711,   -818}, 0, {   -28,  -3728}, {0x17, 0x7b, 0x14, 0xff}}},\n    {{{  3226,    614,     -1}, 0, {  -454,  -2098}, {0x17, 0x7b, 0x14, 0xff}}},\n    {{{  3226,    614,     -1}, 0, {  -454,  -2098}, {0x0f, 0x77, 0x27, 0xff}}},\n    {{{  2970,    563,    256}, 0, {  -966,  -1582}, {0x0f, 0x77, 0x27, 0xff}}},\n    {{{  2970,    413,    717}, 0, {  -864,   -816}, {0x0f, 0x77, 0x27, 0xff}}},\n    {{{  2970,    973,    717}, 0, {     0,    172}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2970,    563,    256}, 0, {   888,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2970,    973,    256}, 0, {   888,    172}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3174,   1536,   -511}, 0, {  3040,  -1452}, {0x75, 0x2f, 0x0b, 0xff}}},\n    {{{  3072,   1536,    512}, 0, {   984,  -1452}, {0x75, 0x2f, 0x0b, 0xff}}},\n    {{{  3287,   1280,   -605}, 0, {  3248,   -940}, {0x75, 0x2f, 0x0b, 0xff}}},\n};\n\n// 0x07006430 - 0x070064C0\nstatic const Vtx ttm_seg7_vertex_07006430[] = {\n    {{{  2970,    413,    717}, 0, {   570,    790}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2970,    563,    256}, 0, {  1474,    490}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2970,    563,    717}, 0, {   558,    490}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3072,    313,   1024}, 0, {     0,    990}, {0x78, 0x00, 0xd8, 0xff}}},\n    {{{  2970,    413,    717}, 0, {   570,    790}, {0x78, 0x00, 0xd8, 0xff}}},\n    {{{  2970,    563,    717}, 0, {   558,    490}, {0x78, 0x00, 0xd8, 0xff}}},\n    {{{  2970,    973,    717}, 0, {     0,    172}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2970,    563,    717}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2970,    563,    256}, 0, {   888,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070064C0 - 0x070065C0\nstatic const Vtx ttm_seg7_vertex_070064C0[] = {\n    {{{  1852,  -1896,   1209}, 0, {   982,   1058}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  2165,  -1872,   1127}, 0, {  1592,    990}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  2165,  -1512,   1127}, 0, {  1566,    270}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  2560,    313,   1024}, 0, {  2206,  -3400}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  2560,  -1500,   1024}, 0, {  2340,    218}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  1852,   1081,   1209}, 0, {   760,  -4880}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  2165,  -1872,   1127}, 0, {  4288,   3238}, {0xf9, 0x7e, 0x09, 0xff}}},\n    {{{  1852,  -1896,   1209}, 0, {  3666,   3400}, {0xf9, 0x7e, 0x09, 0xff}}},\n    {{{  2418,  -1898,   1689}, 0, {  4712,   4174}, {0xf9, 0x7e, 0x09, 0xff}}},\n    {{{  2886,  -1937,   2618}, 0, {  5728,   6214}, {0xf9, 0x7e, 0x08, 0xff}}},\n    {{{  2418,  -1898,   1689}, 0, {  4712,   4174}, {0xf9, 0x7e, 0x08, 0xff}}},\n    {{{  1852,  -1896,   1209}, 0, {  3666,   3400}, {0xf9, 0x7e, 0x08, 0xff}}},\n    {{{  2733,  -1893,   1872}, 0, {  5424,   4726}, {0xf9, 0x7e, 0x08, 0xff}}},\n    {{{  2733,  -1893,   1872}, 0, {  5424,   4726}, {0xf3, 0x7d, 0x0a, 0xff}}},\n    {{{  2886,  -1937,   2618}, 0, {  5728,   6214}, {0xf3, 0x7d, 0x0a, 0xff}}},\n    {{{  3300,  -1870,   2346}, 0, {  6554,   5670}, {0xf3, 0x7d, 0x0a, 0xff}}},\n};\n\n// 0x070065C0 - 0x070066C0\nstatic const Vtx ttm_seg7_vertex_070065C0[] = {\n    {{{  3300,  -1870,   2346}, 0, {  6554,   5670}, {0xf3, 0x7d, 0x0a, 0xff}}},\n    {{{  3028,  -1860,   1861}, 0, {  6014,   4702}, {0xf3, 0x7d, 0x0a, 0xff}}},\n    {{{  2733,  -1893,   1872}, 0, {  5424,   4726}, {0xf3, 0x7d, 0x0a, 0xff}}},\n    {{{  1479,    620,   1820}, 0, {  6524,   -248}, {0xf2, 0x00, 0x7e, 0xff}}},\n    {{{  1479,   1337,   1820}, 0, {  6524,  -1678}, {0xf2, 0x00, 0x7e, 0xff}}},\n    {{{  1072,   1584,   1774}, 0, {  5752,  -2172}, {0xf2, 0x00, 0x7e, 0xff}}},\n    {{{ -4095,  -2047,   3072}, 0, {     0,  -3098}, {0xae, 0xce, 0x52, 0xff}}},\n    {{{ -3283,  -2354,   3696}, 0, {  1994,  -2484}, {0xae, 0xce, 0x52, 0xff}}},\n    {{{ -2047,  -2047,   5120}, 0, {  5750,  -3098}, {0xae, 0xce, 0x52, 0xff}}},\n    {{{ -3283,  -2354,   3696}, 0, {  1994,  -2484}, {0xcf, 0x9e, 0x3f, 0xff}}},\n    {{{ -2472,  -2354,   4321}, 0, {  4022,  -2484}, {0xcf, 0x9e, 0x3f, 0xff}}},\n    {{{ -2047,  -2047,   5120}, 0, {  5750,  -3098}, {0xcf, 0x9e, 0x3f, 0xff}}},\n    {{{  4096,  -3374,   1701}, 0, {  2706,  -4536}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4096,  -3374,   1496}, 0, {  3114,  -4536}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4096,  -1330,   2287}, 0, {  1536,  -8616}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4096,  -3521,   2287}, 0, {  1536,  -4244}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070066C0 - 0x070067A0\nstatic const Vtx ttm_seg7_vertex_070066C0[] = {\n    {{{  4096,  -3374,   1496}, 0, {  3114,  -4536}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4096,  -4607,   1496}, 0, {  3114,  -2076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4096,  -3374,    614}, 0, {  4874,  -4536}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4096,  -1330,   2287}, 0, {  1536,  -8616}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4096,  -1023,  -2047}, 0, { 10188,  -9230}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4813,  -3374,   1701}, 0, {  8080,  -4532}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4813,  -4607,   3072}, 0, {  5452,  -2070}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4813,  -4607,   1496}, 0, {  8474,  -2072}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4813,  -3374,   1496}, 0, {  8472,  -4534}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4813,  -3583,   3072}, 0, {  5450,  -4114}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4096,  -4607,   1496}, 0, {  2420,  -2076}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4096,  -3374,   1496}, 0, {  2420,  -4536}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4813,  -3374,   1496}, 0, {   990,  -4536}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4813,  -4607,   1496}, 0, {   990,  -2076}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070067A0 - 0x07006880\nstatic const Vtx ttm_seg7_vertex_070067A0[] = {\n    {{{    -2,  -6143,  -4095}, 0, {  9114,    990}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{    -2,  -2719,  -4095}, 0, {  9114,  -5844}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  4096,  -3071,  -2047}, 0, {     0,  -5142}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  4096,  -3374,    614}, 0, {  4874,  -4536}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4096,  -4607,   1496}, 0, {  3114,  -2076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4096,  -4607,    614}, 0, {  4874,  -2076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4096,  -3169,   -800}, 0, {  7698,  -4946}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4096,  -1023,  -2047}, 0, { 10188,  -9230}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    -2,  -2207,  -4095}, 0, {  -854, -17814}, {0x06, 0x86, 0xdf, 0xff}}},\n    {{{  3072,  -2047,  -4095}, 0, {  5282, -17814}, {0x06, 0x86, 0xdf, 0xff}}},\n    {{{  4096,  -2559,  -2047}, 0, {  7326, -13726}, {0x06, 0x86, 0xdf, 0xff}}},\n    {{{  4096,  -2559,  -2047}, 0, {     0,  -6164}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{    -2,  -2207,  -4095}, 0, {  9114,  -6866}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{  4096,  -6143,  -2047}, 0, {     0,    990}, {0x38, 0x00, 0x8f, 0xff}}},\n};\n\n// 0x07006880 - 0x07006970\nstatic const Vtx ttm_seg7_vertex_07006880[] = {\n    {{{  2515,  -4351,   3371}, 0, {  1426,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3587,  -4105,   3371}, 0, {  3364,    500}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2515,  -4105,   3371}, 0, {  1426,    500}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4096,  -3169,   -800}, 0, {  7698,  -4946}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4096,  -3111,  -1473}, 0, {  9042,  -5062}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4096,  -1023,  -2047}, 0, { 10188,  -9230}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4096,  -6143,  -1473}, 0, {  9042,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4096,  -6143,   -800}, 0, {  7698,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4096,  -3071,  -2047}, 0, { 10188,  -5142}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4096,  -2559,  -2047}, 0, { 10188,  -6164}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4096,  -6143,  -1473}, 0, {  2420,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4813,  -3111,  -1473}, 0, {   990,  -5062}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4096,  -3111,  -1473}, 0, {  2420,  -5062}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4813,  -6143,  -1473}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3587,  -4351,   3371}, 0, {  3364,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07006970 - 0x07006A50\nstatic const Vtx ttm_seg7_vertex_07006970[] = {\n    {{{  3587,  -4105,   3371}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3587,  -3798,   3371}, 0, {   990,    376}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3587,  -4105,   2859}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3587,  -3798,   2859}, 0, {     0,    376}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1168,  -2559,  -4240}, 0, {   468,   -978}, {0xbb, 0xa5, 0x35, 0xff}}},\n    {{{ -1714,  -2598,  -5014}, 0, { -1076,  -1710}, {0xbb, 0xa5, 0x35, 0xff}}},\n    {{{  -457,  -3243,  -4490}, 0, {     0,    990}, {0xbb, 0xa5, 0x35, 0xff}}},\n    {{{  -457,  -3243,  -4490}, 0, {     0,    990}, {0xa8, 0xa5, 0x00, 0xff}}},\n    {{{  -457,  -3243,  -4083}, 0, {   782,    990}, {0xa8, 0xa5, 0x00, 0xff}}},\n    {{{ -1168,  -2559,  -4240}, 0, {   468,   -978}, {0xa8, 0xa5, 0x00, 0xff}}},\n    {{{  -457,  -3243,  -4490}, 0, {   -28,    582}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -457,  -3448,  -4492}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -457,  -3448,  -4083}, 0, {   786,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -457,  -3243,  -4083}, 0, {   786,    582}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07006A50 - 0x07006B40\nstatic const Vtx ttm_seg7_vertex_07006A50[] = {\n    {{{  1479,  -1842,   1564}, 0, {  2102,  -6516}, {0x0f, 0x7d, 0xf7, 0xff}}},\n    {{{  2545,  -1881,   2779}, 0, {  4366,  -3938}, {0x0f, 0x7d, 0xf7, 0xff}}},\n    {{{  2886,  -1937,   2618}, 0, {  5046,  -4260}, {0x0f, 0x7d, 0xf7, 0xff}}},\n    {{{  2048,  -4351,   4096}, 0, {     0,    478}, {0x82, 0x00, 0xff, 0xff}}},\n    {{{  2048,  -4607,   4096}, 0, {     0,    990}, {0x82, 0x00, 0xff, 0xff}}},\n    {{{  2045,  -4607,   4467}, 0, {   710,    990}, {0x82, 0x00, 0xff, 0xff}}},\n    {{{  2045,  -4351,   4467}, 0, {   710,    480}, {0x82, 0x00, 0xff, 0xff}}},\n    {{{  4623,  -3071,  -2363}, 0, {     0,  -5142}, {0xbf, 0x00, 0x94, 0xff}}},\n    {{{  4096,  -6143,  -2047}, 0, {  1194,    990}, {0xbf, 0x00, 0x94, 0xff}}},\n    {{{  4096,  -3071,  -2047}, 0, {  1194,  -5142}, {0xbf, 0x00, 0x94, 0xff}}},\n    {{{  4623,  -6143,  -2363}, 0, {     0,    990}, {0xbf, 0x00, 0x94, 0xff}}},\n    {{{    -2,  -2719,  -4095}, 0, {     0,  -5844}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    -2,  -6143,  -4505}, 0, {   786,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    -2,  -2719,  -4505}, 0, {   786,  -5844}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    -2,  -6143,  -4095}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07006B40 - 0x07006C30\nstatic const Vtx ttm_seg7_vertex_07006B40[] = {\n    {{{  2886,  -1937,   2618}, 0, {  5046,  -4260}, {0x0c, 0x7e, 0xfb, 0xff}}},\n    {{{  1852,  -1896,   1209}, 0, {  2848,  -7226}, {0x0c, 0x7e, 0xfb, 0xff}}},\n    {{{  1479,  -1842,   1564}, 0, {  2102,  -6516}, {0x0c, 0x7e, 0xfb, 0xff}}},\n    {{{  5590,  -3071,  -3645}, 0, {  4616,  -2330}, {0x18, 0x86, 0xe8, 0xff}}},\n    {{{  5035,  -3276,  -3156}, 0, {  3508,  -3306}, {0x18, 0x86, 0xe8, 0xff}}},\n    {{{  3072,  -3276,  -5119}, 0, {  -408,    614}, {0x18, 0x86, 0xe8, 0xff}}},\n    {{{  5590,  -3071,  -3645}, 0, {  4616,  -2330}, {0x34, 0xab, 0xb3, 0xff}}},\n    {{{  3072,  -3276,  -5119}, 0, {  -408,    614}, {0x34, 0xab, 0xb3, 0xff}}},\n    {{{  3261,  -2989,  -5308}, 0, {     0,    990}, {0x34, 0xab, 0xb3, 0xff}}},\n    {{{  5590,  -3071,  -3645}, 0, {  4616,  -2330}, {0x39, 0x91, 0x12, 0xff}}},\n    {{{  4813,  -3111,  -1473}, 0, {  3066,  -6666}, {0x39, 0x91, 0x12, 0xff}}},\n    {{{  5035,  -3276,  -3156}, 0, {  3508,  -3306}, {0x39, 0x91, 0x12, 0xff}}},\n    {{{  3261,  -2989,  -5308}, 0, {     0,    990}, {0xf5, 0xc0, 0x94, 0xff}}},\n    {{{  3072,  -3276,  -5119}, 0, {  -408,    614}, {0xf5, 0xc0, 0x94, 0xff}}},\n    {{{ -1714,  -2598,  -5014}, 0, { -9964,    404}, {0xf5, 0xc0, 0x94, 0xff}}},\n};\n\n// 0x07006C30 - 0x07006D30\nstatic const Vtx ttm_seg7_vertex_07006C30[] = {\n    {{{  5035,  -3993,  -3156}, 0, {  3332,  -3302}, {0x7d, 0x00, 0x10, 0xff}}},\n    {{{  5035,  -3276,  -3156}, 0, {  3332,  -4734}, {0x7d, 0x00, 0x10, 0xff}}},\n    {{{  4813,  -3111,  -1473}, 0, {     0,  -5062}, {0x7d, 0x00, 0x10, 0xff}}},\n    {{{  3159,  -2989,  -4796}, 0, {  5918,  -5306}, {0xa8, 0x00, 0x5b, 0xff}}},\n    {{{  4771,  -6143,  -3235}, 0, {  9828,    990}, {0xa8, 0x00, 0x5b, 0xff}}},\n    {{{  4771,  -3071,  -3235}, 0, {  9828,  -5142}, {0xa8, 0x00, 0x5b, 0xff}}},\n    {{{  3072,  -3276,  -5119}, 0, {   -10,  -4734}, {0xea, 0x01, 0x83, 0xff}}},\n    {{{  -457,  -3448,  -4492}, 0, {  7036,  -4390}, {0xea, 0x01, 0x83, 0xff}}},\n    {{{  -457,  -3243,  -4490}, 0, {  7036,  -4798}, {0xea, 0x01, 0x83, 0xff}}},\n    {{{  3072,  -3276,  -5119}, 0, {   -10,  -4734}, {0xea, 0x00, 0x83, 0xff}}},\n    {{{  3072,  -3993,  -5119}, 0, {   -10,  -3302}, {0xea, 0x00, 0x83, 0xff}}},\n    {{{  -457,  -3448,  -4492}, 0, {  7036,  -4390}, {0xea, 0x00, 0x83, 0xff}}},\n    {{{  3072,  -3993,  -5119}, 0, {  5510,  -3302}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  3072,  -3276,  -5119}, 0, {  5510,  -4734}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  5035,  -3276,  -3156}, 0, {     0,  -4734}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  4746,  -3993,  -3445}, 0, {   786,  -3302}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07006D30 - 0x07006E30\nstatic const Vtx ttm_seg7_vertex_07006D30[] = {\n    {{{  5035,  -3276,  -3156}, 0, {     0,  -4734}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  5035,  -3993,  -3156}, 0, {     0,  -3302}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  4746,  -3993,  -3445}, 0, {   786,  -3302}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  3072,  -3276,  -5119}, 0, {  -408,    614}, {0xf1, 0xa0, 0xaf, 0xff}}},\n    {{{  -457,  -3243,  -4490}, 0, { -7454,   -642}, {0xf1, 0xa0, 0xaf, 0xff}}},\n    {{{ -1714,  -2598,  -5014}, 0, { -9964,    404}, {0xf1, 0xa0, 0xaf, 0xff}}},\n    {{{    -2,  -2719,  -4505}, 0, {     0,  -5844}, {0x0b, 0x00, 0x7e, 0xff}}},\n    {{{  3159,  -6143,  -4796}, 0, {  5918,    990}, {0x0b, 0x00, 0x7e, 0xff}}},\n    {{{  3159,  -2989,  -4796}, 0, {  5918,  -5306}, {0x0b, 0x00, 0x7e, 0xff}}},\n    {{{    -2,  -6143,  -4505}, 0, {     0,    990}, {0x0b, 0x00, 0x7e, 0xff}}},\n    {{{  3159,  -2989,  -4796}, 0, {  5918,  -5306}, {0xa8, 0x00, 0x5b, 0xff}}},\n    {{{  3159,  -6143,  -4796}, 0, {  5918,    990}, {0xa8, 0x00, 0x5b, 0xff}}},\n    {{{  4771,  -6143,  -3235}, 0, {  9828,    990}, {0xa8, 0x00, 0x5b, 0xff}}},\n    {{{  4771,  -3071,  -3235}, 0, {     0,  -5142}, {0x83, 0x00, 0xeb, 0xff}}},\n    {{{  4623,  -6143,  -2363}, 0, {  1734,    990}, {0x83, 0x00, 0xeb, 0xff}}},\n    {{{  4623,  -3071,  -2363}, 0, {  1734,  -5142}, {0x83, 0x00, 0xeb, 0xff}}},\n};\n\n// 0x07006E30 - 0x07006F30\nstatic const Vtx ttm_seg7_vertex_07006E30[] = {\n    {{{  4771,  -3071,  -3235}, 0, {     0,  -5142}, {0x83, 0x00, 0xeb, 0xff}}},\n    {{{  4771,  -6143,  -3235}, 0, {     0,    990}, {0x83, 0x00, 0xeb, 0xff}}},\n    {{{  4623,  -6143,  -2363}, 0, {  1734,    990}, {0x83, 0x00, 0xeb, 0xff}}},\n    {{{ -1535,   -818,   2048}, 0, { -3914,  -5550}, {0x26, 0x99, 0x3f, 0xff}}},\n    {{{  1479,      6,   1564}, 0, {  2102,  -6516}, {0x26, 0x99, 0x3f, 0xff}}},\n    {{{  1910,    466,   2055}, 0, {  2962,  -5536}, {0x26, 0x99, 0x3f, 0xff}}},\n    {{{  1852,   1081,   1209}, 0, {  7230,  -4910}, {0x57, 0x00, 0x5b, 0xff}}},\n    {{{  1479,  -1842,   1564}, 0, {  6054,    876}, {0x57, 0x00, 0x5b, 0xff}}},\n    {{{  1852,  -1896,   1209}, 0, {  6942,   1026}, {0x57, 0x00, 0x5b, 0xff}}},\n    {{{  1910,    466,   2055}, 0, {  1920,  -3772}, {0x5f, 0x00, 0xad, 0xff}}},\n    {{{  1479,    620,   1564}, 0, {  3202,  -4122}, {0x5f, 0x00, 0xad, 0xff}}},\n    {{{  1910,    620,   2055}, 0, {  1908,  -4078}, {0x5f, 0x00, 0xad, 0xff}}},\n    {{{  1479,      6,   1564}, 0, {  3244,  -2896}, {0x5f, 0x00, 0xad, 0xff}}},\n    {{{  3439,    313,   1545}, 0, {  3016, -11898}, {0x7e, 0x00, 0x05, 0xff}}},\n    {{{  3439,  -1330,   1545}, 0, {  3016,  -8616}, {0x7e, 0x00, 0x05, 0xff}}},\n    {{{  3584,    768,  -1535}, 0, {  9166, -12806}, {0x7e, 0x00, 0x05, 0xff}}},\n};\n\n// 0x07006F30 - 0x07007030\nstatic const Vtx ttm_seg7_vertex_07006F30[] = {\n    {{{  3439,  -1330,   1545}, 0, {  3016,  -8616}, {0x7e, 0x00, 0x05, 0xff}}},\n    {{{  3584,  -1023,  -1535}, 0, {  9166,  -9230}, {0x7e, 0x00, 0x05, 0xff}}},\n    {{{  3584,    768,  -1535}, 0, {  9166, -12806}, {0x7e, 0x00, 0x05, 0xff}}},\n    {{{  2560,    313,   1024}, 0, {  8614,  -3308}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  2074,   1081,   1151}, 0, {  7686,  -4888}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  1852,   1081,   1209}, 0, {  7230,  -4910}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  1479,  -1842,   1564}, 0, {  6054,    876}, {0x57, 0x00, 0x5b, 0xff}}},\n    {{{  1852,   1081,   1209}, 0, {  7230,  -4910}, {0x57, 0x00, 0x5b, 0xff}}},\n    {{{  1712,   1081,   1343}, 0, {  6894,  -4926}, {0x57, 0x00, 0x5b, 0xff}}},\n    {{{  1852,   1510,   1209}, 0, {  7272,  -5766}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  2074,   1286,   1151}, 0, {  7706,  -5296}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  2560,   1536,   1024}, 0, {  8732,  -5748}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  1479,  -1842,   1564}, 0, {  6054,    876}, {0x57, 0x00, 0x5c, 0xff}}},\n    {{{  1712,   1081,   1343}, 0, {  6894,  -4926}, {0x57, 0x00, 0x5c, 0xff}}},\n    {{{  1479,      6,   1564}, 0, {  6232,  -2810}, {0x57, 0x00, 0x5c, 0xff}}},\n    {{{  1479,    620,   1564}, 0, {  6292,  -4036}, {0x57, 0x00, 0x5c, 0xff}}},\n};\n\n// 0x07007030 - 0x07007120\nstatic const Vtx ttm_seg7_vertex_07007030[] = {\n    {{{  1712,   1081,   1343}, 0, {  6894,  -4926}, {0x57, 0x00, 0x5c, 0xff}}},\n    {{{  1479,   1593,   1564}, 0, {  6386,  -5974}, {0x57, 0x00, 0x5c, 0xff}}},\n    {{{  1479,    620,   1564}, 0, {  6292,  -4036}, {0x57, 0x00, 0x5c, 0xff}}},\n    {{{  1712,   1286,   1343}, 0, {  6914,  -5336}, {0x57, 0x00, 0x5c, 0xff}}},\n    {{{  3072,   1382,   -818}, 0, {     0,     70}, {0x69, 0xba, 0x00, 0xff}}},\n    {{{  3174,   1536,  -1535}, 0, {  1412,   -236}, {0x69, 0xba, 0x00, 0xff}}},\n    {{{  3174,   1536,   -511}, 0, {  -620,   -236}, {0x69, 0xba, 0x00, 0xff}}},\n    {{{  3072,   1382,  -1279}, 0, {   884,     70}, {0x69, 0xba, 0x00, 0xff}}},\n    {{{  2970,    973,    256}, 0, {  1474,   -328}, {0x61, 0xaf, 0x00, 0xff}}},\n    {{{  3226,   1280,     -1}, 0, {  2038,   -940}, {0x61, 0xaf, 0x00, 0xff}}},\n    {{{  2970,    973,    717}, 0, {   558,   -328}, {0x61, 0xaf, 0x00, 0xff}}},\n    {{{  2560,   1536,   1024}, 0, {  8732,  -5748}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  2074,   1286,   1151}, 0, {  7706,  -5296}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  2074,   1081,   1151}, 0, {  7686,  -4888}, {0x20, 0x00, 0x7a, 0xff}}},\n    {{{  2560,    313,   1024}, 0, {  8614,  -3308}, {0x20, 0x00, 0x7a, 0xff}}},\n};\n\n// 0x07007120 - 0x07007200\nstatic const Vtx ttm_seg7_vertex_07007120[] = {\n    {{{  1479,   1593,   1564}, 0, {  6386,  -5974}, {0x57, 0x00, 0x5b, 0xff}}},\n    {{{  1712,   1286,   1343}, 0, {  6914,  -5336}, {0x57, 0x00, 0x5b, 0xff}}},\n    {{{  1852,   1510,   1209}, 0, {  7272,  -5766}, {0x57, 0x00, 0x5b, 0xff}}},\n    {{{  2970,    973,    717}, 0, {   558,   -328}, {0x52, 0xa1, 0xf5, 0xff}}},\n    {{{  3226,   1280,     -1}, 0, {  2038,   -940}, {0x52, 0xa1, 0xf5, 0xff}}},\n    {{{  3072,   1024,   1024}, 0, {     0,   -430}, {0x52, 0xa1, 0xf5, 0xff}}},\n    {{{  3226,   1280,     -1}, 0, {  2038,   -940}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2970,    563,    256}, 0, {  1474,    490}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3226,    614,     -1}, 0, {  2038,    388}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2970,    973,    256}, 0, {  1474,   -328}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3072,   1024,   1024}, 0, {     0,   -430}, {0x78, 0x00, 0xd8, 0xff}}},\n    {{{  2970,    563,    717}, 0, {   558,    490}, {0x78, 0x00, 0xd8, 0xff}}},\n    {{{  2970,    973,    717}, 0, {   558,   -328}, {0x78, 0x00, 0xd8, 0xff}}},\n    {{{  3072,    313,   1024}, 0, {     0,    990}, {0x78, 0x00, 0xd8, 0xff}}},\n};\n\n// 0x07007200 - 0x07007300\nstatic const Vtx ttm_seg7_vertex_07007200[] = {\n    {{{  2560,  -1500,   1024}, 0, {     0,    990}, {0x92, 0x00, 0x3d, 0xff}}},\n    {{{  2828,  -1499,   1504}, 0, {  1066,    990}, {0x92, 0x00, 0x3d, 0xff}}},\n    {{{  2560,    313,   1024}, 0, {   -24,  -2630}, {0x92, 0x00, 0x3d, 0xff}}},\n    {{{  2828,  -1499,   1504}, 0, {  1066,    990}, {0x92, 0x00, 0x3e, 0xff}}},\n    {{{  3247,    313,   2252}, 0, {  2786,  -2624}, {0x92, 0x00, 0x3e, 0xff}}},\n    {{{  2560,    313,   1024}, 0, {   -24,  -2630}, {0x92, 0x00, 0x3e, 0xff}}},\n    {{{  3587,  -1330,   2859}, 0, {  4168,    662}, {0x92, 0x00, 0x3e, 0xff}}},\n    {{{  3028,  -1860,   1861}, 0, {  1882,   1712}, {0x92, 0x00, 0x3e, 0xff}}},\n    {{{  3300,  -1870,   2346}, 0, {  2990,   1734}, {0x92, 0x00, 0x3e, 0xff}}},\n    {{{  2418,  -1898,   1689}, 0, {   986,   1784}, {0x8d, 0x00, 0x34, 0xff}}},\n    {{{  2165,  -1512,   1127}, 0, {  -236,   1010}, {0x8d, 0x00, 0x34, 0xff}}},\n    {{{  2165,  -1872,   1127}, 0, {  -238,   1730}, {0x8d, 0x00, 0x34, 0xff}}},\n    {{{  2418,  -1516,   1689}, 0, {   988,   1022}, {0x8d, 0x00, 0x34, 0xff}}},\n    {{{  2418,  -1516,   1689}, 0, {   988,   1022}, {0xc1, 0x00, 0x6d, 0xff}}},\n    {{{  2418,  -1898,   1689}, 0, {   986,   1784}, {0xc1, 0x00, 0x6d, 0xff}}},\n    {{{  2733,  -1893,   1872}, 0, {  1612,   1776}, {0xc1, 0x00, 0x6d, 0xff}}},\n};\n\n// 0x07007300 - 0x07007400\nstatic const Vtx ttm_seg7_vertex_07007300[] = {\n    {{{ -4095,  -4095,   3072}, 0, {     0,    990}, {0xb3, 0x00, 0x64, 0xff}}},\n    {{{ -3283,  -2969,   3696}, 0, {  1994,  -1258}, {0xb3, 0x00, 0x64, 0xff}}},\n    {{{ -3283,  -2354,   3696}, 0, {  1994,  -2484}, {0xb3, 0x00, 0x64, 0xff}}},\n    {{{  2418,  -1516,   1689}, 0, {  4796,   4360}, {0x26, 0x4d, 0x5c, 0xff}}},\n    {{{  2733,  -1893,   1872}, 0, {  5424,   4726}, {0x26, 0x4d, 0x5c, 0xff}}},\n    {{{  2828,  -1499,   1504}, 0, {  5614,   3990}, {0x26, 0x4d, 0x5c, 0xff}}},\n    {{{  2733,  -1893,   1872}, 0, {  5424,   4726}, {0xfa, 0x57, 0x5b, 0xff}}},\n    {{{  3028,  -1860,   1861}, 0, {  6014,   4702}, {0xfa, 0x57, 0x5b, 0xff}}},\n    {{{  2828,  -1499,   1504}, 0, {  5614,   3990}, {0xfa, 0x57, 0x5b, 0xff}}},\n    {{{ -2472,  -2969,   4321}, 0, {  4022,  -1258}, {0x90, 0x00, 0x3b, 0xff}}},\n    {{{ -2472,  -4255,   4321}, 0, {  4022,   1306}, {0x90, 0x00, 0x3b, 0xff}}},\n    {{{ -2047,  -4300,   5121}, 0, {  5750,   1396}, {0x90, 0x00, 0x3b, 0xff}}},\n    {{{ -2472,  -2354,   4321}, 0, {  4022,  -2484}, {0x90, 0x00, 0x3b, 0xff}}},\n    {{{ -2472,  -4255,   4321}, 0, {  4022,   1306}, {0xb3, 0x00, 0x64, 0xff}}},\n    {{{ -2472,  -2969,   4321}, 0, {  4022,  -1258}, {0xb3, 0x00, 0x64, 0xff}}},\n    {{{ -2047,  -2047,   5120}, 0, {  5750,  -3098}, {0x90, 0x00, 0x3b, 0xff}}},\n};\n\n// 0x07007400 - 0x070074F0\nstatic const Vtx ttm_seg7_vertex_07007400[] = {\n    {{{ -4095,  -2047,   3072}, 0, {     0,  -3098}, {0xb3, 0x00, 0x64, 0xff}}},\n    {{{ -4095,  -4095,   3072}, 0, {     0,    990}, {0xb3, 0x00, 0x64, 0xff}}},\n    {{{ -3283,  -2354,   3696}, 0, {  1994,  -2484}, {0xb3, 0x00, 0x64, 0xff}}},\n    {{{  1606,  -1529,   1382}, 0, { -1802,   -506}, {0xa2, 0x54, 0xf6, 0xff}}},\n    {{{   435,  -2668,   2747}, 0, {  -280,   3048}, {0xa2, 0x54, 0xf6, 0xff}}},\n    {{{  1150,  -1891,   2562}, 0, {     0,    990}, {0xa2, 0x54, 0xf6, 0xff}}},\n    {{{  1150,  -1891,   2562}, 0, {     0,    990}, {0xa4, 0x56, 0xf7, 0xff}}},\n    {{{  1465,  -1548,   2618}, 0, {   328,    136}, {0xa4, 0x56, 0xf7, 0xff}}},\n    {{{  1606,  -1529,   1382}, 0, { -1802,   -506}, {0xa4, 0x56, 0xf7, 0xff}}},\n    {{{  1465,  -1548,   2618}, 0, {   328,    136}, {0xa4, 0x4e, 0x24, 0xff}}},\n    {{{  1150,  -1891,   2562}, 0, {     0,    990}, {0xa4, 0x4e, 0x24, 0xff}}},\n    {{{  2048,  -1548,   4096}, 0, {  3496,    210}, {0xa4, 0x4e, 0x24, 0xff}}},\n    {{{  1150,  -1891,   2562}, 0, {     0,    990}, {0x9b, 0x3d, 0x2d, 0xff}}},\n    {{{  1811,  -1891,   4028}, 0, {  3180,    990}, {0x9b, 0x3d, 0x2d, 0xff}}},\n    {{{  2048,  -1548,   4096}, 0, {  3496,    210}, {0x9b, 0x3d, 0x2d, 0xff}}},\n};\n\n// 0x070074F0 - 0x070075F0\nstatic const Vtx ttm_seg7_vertex_070074F0[] = {\n    {{{  5325,  -4607,    614}, 0, {  4874,  -2076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5325,  -6143,   3072}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5325,  -6143,   -800}, 0, {  7698,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  5325,  -4607,   3072}, 0, {     0,  -2076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1023,  -1023,  -4095}, 0, {  9166,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3072,  -2047,  -4095}, 0, {   990,   3032}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    -2,  -2207,  -4095}, 0, {  7128,   3352}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    -2,  -2719,  -4095}, 0, {  7128,   4374}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -457,  -3448,  -4083}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1202,  -3448,  -4083}, 0, {  1456,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -457,  -3243,  -4083}, 0, {     0,    582}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3072,  -1535,  -4095}, 0, {   990,   2010}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1023,  -2559,  -4095}, 0, {  9166,   4054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3072,  -2047,  -4095}, 0, { 14276,  -7186}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  4096,  -1023,  -2047}, 0, { 10188,  -9230}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  4096,  -2559,  -2047}, 0, { 10188,  -6164}, {0x71, 0x00, 0xc8, 0xff}}},\n};\n\n// 0x070075F0 - 0x070076E0\nstatic const Vtx ttm_seg7_vertex_070075F0[] = {\n    {{{  3072,  -2047,  -4095}, 0, { 14276,  -7186}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  3072,  -1535,  -4095}, 0, { 14276,  -8208}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  4096,  -1023,  -2047}, 0, { 10188,  -9230}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  -457,  -3243,  -4083}, 0, {     0,    582}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1202,  -3448,  -4083}, 0, {  1456,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1202,  -3243,  -4083}, 0, {  1456,    582}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -457,  -3243,  -4083}, 0, {     0,    582}, {0x00, 0xe4, 0x85, 0xff}}},\n    {{{ -1202,  -3243,  -4083}, 0, {  1456,    582}, {0x00, 0xe4, 0x85, 0xff}}},\n    {{{ -1168,  -2559,  -4240}, 0, {  1386,   -784}, {0x00, 0xe4, 0x85, 0xff}}},\n    {{{ -1168,  -2559,  -4240}, 0, {  -268,  -6164}, {0xca, 0xe9, 0x90, 0xff}}},\n    {{{ -1202,  -3243,  -4083}, 0, {     0,  -4798}, {0xca, 0xe9, 0x90, 0xff}}},\n    {{{ -3849,  -6143,  -2207}, 0, {  6444,    990}, {0xca, 0xe9, 0x90, 0xff}}},\n    {{{ -1168,  -2559,  -4240}, 0, {  -268,  -6164}, {0xa7, 0x10, 0xa7, 0xff}}},\n    {{{ -3849,  -6143,  -2207}, 0, {  6444,    990}, {0xa7, 0x10, 0xa7, 0xff}}},\n    {{{ -3216,  -2559,  -2192}, 0, {  5430,  -6164}, {0xa7, 0x10, 0xa7, 0xff}}},\n};\n\n// 0x070076E0 - 0x070077D0\nstatic const Vtx ttm_seg7_vertex_070076E0[] = {\n    {{{ -1202,  -3243,  -4083}, 0, {     0,  -4798}, {0xb7, 0x00, 0x99, 0xff}}},\n    {{{ -1202,  -3448,  -4083}, 0, {     0,  -4390}, {0xb7, 0x00, 0x99, 0xff}}},\n    {{{ -3849,  -6143,  -2207}, 0, {  6444,    990}, {0xb7, 0x00, 0x99, 0xff}}},\n    {{{ -1202,  -6143,  -4083}, 0, {     0,    990}, {0xb7, 0x00, 0x99, 0xff}}},\n    {{{  3144,  -4082,   5194}, 0, {   458,  -3114}, {0x63, 0x00, 0x4e, 0xff}}},\n    {{{  4813,  -4607,   3072}, 0, {  5452,  -2070}, {0x63, 0x00, 0x4e, 0xff}}},\n    {{{  4813,  -3583,   3072}, 0, {  5450,  -4114}, {0x63, 0x00, 0x4e, 0xff}}},\n    {{{ -1535,  -2047,   2048}, 0, {  5310,  -4332}, {0x7d, 0x00, 0x14, 0xff}}},\n    {{{ -2047,  -2047,   5120}, 0, {  -900,  -4090}, {0x7d, 0x00, 0x14, 0xff}}},\n    {{{ -2047,  -4300,   5121}, 0, {  -728,    404}, {0x7d, 0x00, 0x14, 0xff}}},\n    {{{ -1992,  -4607,   4788}, 0, {     0,    990}, {0x7d, 0x00, 0x14, 0xff}}},\n    {{{ -1674,  -4682,   2883}, 0, {  3826,    990}, {0x7d, 0x00, 0x14, 0xff}}},\n    {{{  4782,  -3993,  -3482}, 0, {   684,  -3302}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  5035,  -3993,  -3735}, 0, {     0,  -3302}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  5035,  -6143,  -3735}, 0, {     0,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x070077D0 - 0x070078C0\nstatic const Vtx ttm_seg7_vertex_070077D0[] = {\n    {{{  3300,  -1870,   2346}, 0, {  2992,    976}, {0x92, 0x00, 0x3e, 0xff}}},\n    {{{  3494,  -1887,   2692}, 0, {  3784,    990}, {0x92, 0x00, 0x3e, 0xff}}},\n    {{{  3587,  -1330,   2859}, 0, {  4142,   -130}, {0x92, 0x00, 0x3e, 0xff}}},\n    {{{  3587,  -2405,   2859}, 0, {  4192,   2014}, {0x92, 0x00, 0x3d, 0xff}}},\n    {{{  3587,  -1330,   2859}, 0, {  4142,   -130}, {0x92, 0x00, 0x3d, 0xff}}},\n    {{{  3494,  -1887,   2692}, 0, {  3784,    990}, {0x92, 0x00, 0x3d, 0xff}}},\n    {{{  3494,  -1887,   2692}, 0, {  6094,  -4248}, {0xf5, 0x7d, 0x0c, 0xff}}},\n    {{{  3300,  -1870,   2346}, 0, {  5714,  -4942}, {0xf5, 0x7d, 0x0c, 0xff}}},\n    {{{  2886,  -1937,   2618}, 0, {  5046,  -4260}, {0xf5, 0x7d, 0x0c, 0xff}}},\n    {{{  3144,  -6143,  -5164}, 0, {  5472,    990}, {0x5a, 0x00, 0xa8, 0xff}}},\n    {{{  3144,  -3993,  -5164}, 0, {  5472,  -3302}, {0x5a, 0x00, 0xa8, 0xff}}},\n    {{{  4782,  -3993,  -3482}, 0, {   786,  -3302}, {0x5a, 0x00, 0xa8, 0xff}}},\n    {{{  4813,  -3111,  -1473}, 0, {     0,  -5062}, {0x7d, 0x00, 0x10, 0xff}}},\n    {{{  4813,  -6143,  -1473}, 0, {     0,    990}, {0x7d, 0x00, 0x10, 0xff}}},\n    {{{  5035,  -3993,  -3156}, 0, {  3332,  -3302}, {0x7d, 0x00, 0x10, 0xff}}},\n};\n\n// 0x070078C0 - 0x070079A0\nstatic const Vtx ttm_seg7_vertex_070078C0[] = {\n    {{{  5035,  -6143,  -3735}, 0, {     0,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  4782,  -6143,  -3482}, 0, {   684,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  4782,  -3993,  -3482}, 0, {   684,  -3302}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  3179,  -6143,  -5260}, 0, {  -222,    990}, {0x2b, 0x00, 0x89, 0xff}}},\n    {{{  3083,  -3993,  -5295}, 0, {     0,  -3302}, {0x2b, 0x00, 0x89, 0xff}}},\n    {{{  3179,  -3993,  -5260}, 0, {  -222,  -3302}, {0x2b, 0x00, 0x89, 0xff}}},\n    {{{  3083,  -6143,  -5295}, 0, {     0,    990}, {0x2b, 0x00, 0x89, 0xff}}},\n    {{{  3083,  -3993,  -5295}, 0, {     0,  -3302}, {0xef, 0x00, 0x83, 0xff}}},\n    {{{  3083,  -6143,  -5295}, 0, {     0,    990}, {0xef, 0x00, 0x83, 0xff}}},\n    {{{  -457,  -3448,  -4799}, 0, {  7036,  -4390}, {0xef, 0x00, 0x83, 0xff}}},\n    {{{  3144,  -6143,  -5164}, 0, {  -234,    990}, {0x77, 0x00, 0x2b, 0xff}}},\n    {{{  3179,  -6143,  -5260}, 0, {     0,    990}, {0x77, 0x00, 0x2b, 0xff}}},\n    {{{  3179,  -3993,  -5260}, 0, {     0,  -3302}, {0x77, 0x00, 0x2b, 0xff}}},\n    {{{  3144,  -3993,  -5164}, 0, {  -234,  -3302}, {0x77, 0x00, 0x2b, 0xff}}},\n};\n\n// 0x070079A0 - 0x07007A90\nstatic const Vtx ttm_seg7_vertex_070079A0[] = {\n    {{{  2835,  -1535,  -3621}, 0, { 13328,  -8208}, {0x6d, 0x00, 0xc1, 0xff}}},\n    {{{  2835,   -511,  -3621}, 0, { 13328, -10252}, {0x6d, 0x00, 0xc1, 0xff}}},\n    {{{  3874,  -1023,  -1825}, 0, {  9744,  -9230}, {0x6d, 0x00, 0xc1, 0xff}}},\n    {{{ -1202,  -3448,  -4595}, 0, {  3034,  -4390}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1202,  -6143,  -6131}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1202,  -3448,  -4083}, 0, {  4056,  -4390}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1202,  -6143,  -4083}, 0, {  4056,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1535,   -818,   2048}, 0, {    86,  -1460}, {0x14, 0x00, 0x7d, 0xff}}},\n    {{{  1479,  -1842,   1564}, 0, {  6054,    876}, {0x14, 0x00, 0x7d, 0xff}}},\n    {{{  1479,      6,   1564}, 0, {  6232,  -2810}, {0x14, 0x00, 0x7d, 0xff}}},\n    {{{ -1535,  -2047,   2048}, 0, {     0,    990}, {0x14, 0x00, 0x7d, 0xff}}},\n    {{{  2835,   -511,  -3621}, 0, {  1464,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -786,  -1023,  -3621}, 0, {  8692,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -786,    205,  -3621}, 0, {  8692,  -1462}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2835,  -1535,  -3621}, 0, {  1464,   2010}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07007A90 - 0x07007B80\nstatic const Vtx ttm_seg7_vertex_07007A90[] = {\n    {{{  2377,   -511,  -2521}, 0, {  2378,      0}, {0x50, 0x00, 0x9e, 0xff}}},\n    {{{  3584,    768,  -1535}, 0, {     0,  -2586}, {0x50, 0x00, 0x9e, 0xff}}},\n    {{{  3584,  -1023,  -1535}, 0, {     0,    990}, {0x50, 0x00, 0x9e, 0xff}}},\n    {{{  2377,   1024,  -2521}, 0, {  2378,  -3098}, {0x50, 0x00, 0x9e, 0xff}}},\n    {{{  -285,    205,  -2317}, 0, {  7692,  -1462}, {0xf7, 0x00, 0x82, 0xff}}},\n    {{{  2377,   1024,  -2521}, 0, {  2378,  -3098}, {0xf7, 0x00, 0x82, 0xff}}},\n    {{{  2377,   -511,  -2521}, 0, {  2378,      0}, {0xf7, 0x00, 0x82, 0xff}}},\n    {{{  -285,   1280,  -2317}, 0, {  7692,  -3608}, {0xf7, 0x00, 0x82, 0xff}}},\n    {{{ -1535,    512,  -1535}, 0, { 10188,  -2076}, {0xbd, 0x00, 0x95, 0xff}}},\n    {{{ -1535,   1280,  -1535}, 0, { 10188,  -3608}, {0xbd, 0x00, 0x95, 0xff}}},\n    {{{  -285,   1280,  -2317}, 0, {  7692,  -3608}, {0xbd, 0x00, 0x95, 0xff}}},\n    {{{  -285,    205,  -2317}, 0, {  7692,  -1462}, {0xbd, 0x00, 0x95, 0xff}}},\n    {{{ -1947,    512,  -1672}, 0, { -4736, -12980}, {0x0a, 0x7a, 0xe0, 0xff}}},\n    {{{ -1535,    512,  -1535}, 0, { -3914, -12704}, {0x0a, 0x7a, 0xe0, 0xff}}},\n    {{{  -574,    -10,  -3212}, 0, { -1994, -16052}, {0x0a, 0x7a, 0xe0, 0xff}}},\n};\n\n// 0x07007B80 - 0x07007C70\nstatic const Vtx ttm_seg7_vertex_07007B80[] = {\n    {{{ -1535,    512,  -1535}, 0, { -3914, -12704}, {0x21, 0x79, 0xee, 0xff}}},\n    {{{  -166,    -60,  -2804}, 0, { -1180, -15238}, {0x21, 0x79, 0xee, 0xff}}},\n    {{{  -574,    -10,  -3212}, 0, { -1994, -16052}, {0x21, 0x79, 0xee, 0xff}}},\n    {{{  -285,    205,  -2317}, 0, { -1418, -14266}, {0xf4, 0x6d, 0xc2, 0xff}}},\n    {{{  -166,    -60,  -2804}, 0, { -1180, -15238}, {0xf4, 0x6d, 0xc2, 0xff}}},\n    {{{ -1535,    512,  -1535}, 0, { -3914, -12704}, {0xf4, 0x6d, 0xc2, 0xff}}},\n    {{{  -574,    -10,  -3212}, 0, { -1994, -16052}, {0x41, 0x6a, 0x16, 0xff}}},\n    {{{  -786,    205,  -3621}, 0, { -2418, -16868}, {0x41, 0x6a, 0x16, 0xff}}},\n    {{{ -1947,    512,  -1672}, 0, { -4736, -12980}, {0x41, 0x6a, 0x16, 0xff}}},\n    {{{  2401,   -649,  -2639}, 0, {  3944, -14908}, {0x19, 0x53, 0xa4, 0xff}}},\n    {{{  -166,    -60,  -2804}, 0, { -1180, -15238}, {0x19, 0x53, 0xa4, 0xff}}},\n    {{{  2377,   -511,  -2521}, 0, {  3894, -14674}, {0x19, 0x53, 0xa4, 0xff}}},\n    {{{  -166,    -60,  -2804}, 0, { -1180, -15238}, {0x19, 0x6f, 0xca, 0xff}}},\n    {{{  -285,    205,  -2317}, 0, { -1418, -14266}, {0x19, 0x6f, 0xca, 0xff}}},\n    {{{  2377,   -511,  -2521}, 0, {  3894, -14674}, {0x19, 0x6f, 0xca, 0xff}}},\n};\n\n// 0x07007C70 - 0x07007D60\nstatic const Vtx ttm_seg7_vertex_07007C70[] = {\n    {{{  3584,  -1023,  -1535}, 0, {  6304, -12704}, {0x53, 0x46, 0xbf, 0xff}}},\n    {{{  2401,   -649,  -2639}, 0, {  3944, -14908}, {0x53, 0x46, 0xbf, 0xff}}},\n    {{{  2377,   -511,  -2521}, 0, {  3894, -14674}, {0x53, 0x46, 0xbf, 0xff}}},\n    {{{  3230,  -1000,  -1962}, 0, {  5598, -13558}, {0x53, 0x46, 0xbf, 0xff}}},\n    {{{  1479,    620,   1820}, 0, {  2780,  -4108}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1479,   1593,   1564}, 0, {  3136,  -6062}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1479,   1337,   1820}, 0, {  2732,  -5538}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1947,  -2559,  -1672}, 0, {     0,    990}, {0x28, 0x00, 0x88, 0xff}}},\n    {{{ -3071,   -511,  -2047}, 0, {  3910,  -5824}, {0x28, 0x00, 0x88, 0xff}}},\n    {{{ -1947,   -511,  -1672}, 0, {     0,  -5824}, {0x28, 0x00, 0x88, 0xff}}},\n    {{{ -3071,  -2559,  -2047}, 0, {  3910,    990}, {0x28, 0x00, 0x88, 0xff}}},\n    {{{  -786,  -1023,  -3621}, 0, {  1732,  -4120}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -1023,  -1023,  -4095}, 0, {     0,  -4120}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -1023,  -2559,  -4095}, 0, {     0,    990}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  -786,  -2559,  -3621}, 0, {  1732,    990}, {0x8f, 0x00, 0x38, 0xff}}},\n};\n\n// 0x07007D60 - 0x07007E40\nstatic const Vtx ttm_seg7_vertex_07007D60[] = {\n    {{{  3072,   1382,  -1279}, 0, {   884,     70}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{  3174,    768,  -1535}, 0, {  1412,   1294}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{  3174,   1536,  -1535}, 0, {  1412,   -236}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{  3072,    922,  -1279}, 0, {   884,    990}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{  1479,    620,   1820}, 0, {  2780,  -4108}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1479,    620,   1564}, 0, {  3202,  -4122}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1479,   1593,   1564}, 0, {  3136,  -6062}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2377,   1536,  -2009}, 0, {    62,    -28}, {0xe4, 0x00, 0x85, 0xff}}},\n    {{{  2377,   1024,  -2009}, 0, {     0,    990}, {0xe4, 0x00, 0x85, 0xff}}},\n    {{{   330,   1219,  -1533}, 0, {  4182,    990}, {0xe4, 0x00, 0x85, 0xff}}},\n    {{{  3174,    768,  -1535}, 0, {  1156, -12806}, {0x40, 0x00, 0x93, 0xff}}},\n    {{{  2377,   1536,  -2009}, 0, {  3004, -14340}, {0x40, 0x00, 0x93, 0xff}}},\n    {{{  3174,   1536,  -1535}, 0, {  1156, -14340}, {0x40, 0x00, 0x93, 0xff}}},\n    {{{  2377,   1024,  -2009}, 0, {  3004, -13318}, {0x40, 0x00, 0x93, 0xff}}},\n};\n\n// 0x07007E40 - 0x07007F20\nstatic const Vtx ttm_seg7_vertex_07007E40[] = {\n    {{{  -285,   1280,  -2317}, 0, {  -438,    786}, {0x9d, 0x00, 0x4e, 0xff}}},\n    {{{  -162,   1165,  -2161}, 0, {     0,    990}, {0x9d, 0x00, 0x4e, 0xff}}},\n    {{{   342,   1115,  -1518}, 0, {  1604,    990}, {0x9d, 0x00, 0x4e, 0xff}}},\n    {{{   330,   1219,  -1533}, 0, {  1552,    786}, {0x9d, 0x00, 0x4e, 0xff}}},\n    {{{  3287,   1280,   -605}, 0, {  -410,    274}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  3072,    922,   -818}, 0, {     0,    990}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  3072,   1382,   -818}, 0, {     0,     70}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{   342,   1115,  -1518}, 0, {     0,    990}, {0xa2, 0x00, 0xac, 0xff}}},\n    {{{ -1023,   1434,      0}, 0, {  4092,    844}, {0xa2, 0x00, 0xac, 0xff}}},\n    {{{ -1023,   1536,      0}, 0, {  4116,    642}, {0xa2, 0x00, 0xac, 0xff}}},\n    {{{ -1023,   1536,      0}, 0, {  4116,    642}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1457,   1434,    434}, 0, {  5308,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1535,   1536,    512}, 0, {  5550,    814}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1023,   1434,      0}, 0, {  4092,    844}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07007F20 - 0x07007FC0\nstatic const Vtx ttm_seg7_vertex_07007F20[] = {\n    {{{ -1535,   1536,    512}, 0, { -3914,  -8616}, {0x63, 0x4f, 0xfc, 0xff}}},\n    {{{ -1457,   1434,    434}, 0, { -3758,  -8772}, {0x63, 0x4f, 0xfc, 0xff}}},\n    {{{ -1342,   1178,  -1465}, 0, { -3530, -12566}, {0x63, 0x4f, 0xfc, 0xff}}},\n    {{{  3174,   1536,   -511}, 0, {  -620,   -236}, {0x5b, 0x3f, 0xc3, 0xff}}},\n    {{{  3287,   1280,   -605}, 0, {  -410,    274}, {0x5b, 0x3f, 0xc3, 0xff}}},\n    {{{  3072,   1382,   -818}, 0, {     0,     70}, {0x5b, 0x3f, 0xc3, 0xff}}},\n    {{{  3287,   1280,   -605}, 0, {  -410,    274}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  3287,    922,   -605}, 0, {  -410,    990}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  3072,    922,   -818}, 0, {     0,    990}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  3072,    768,   -818}, 0, {     0,   1294}, {0x59, 0x00, 0xa6, 0xff}}},\n};\n\n// 0x07007FC0 - 0x07008000\nstatic const Vtx ttm_seg7_vertex_07007FC0[] = {\n    {{{  4813,  -3374,   1496}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4096,  -3374,   1496}, 0, {  2352,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4096,  -3374,   1701}, 0, {  2352,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4813,  -3374,   1701}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07008000 - 0x070080F0\nstatic const Vtx ttm_seg7_vertex_07008000[] = {\n    {{{ -1947,   -511,  -1672}, 0, { -3510, -14410}, {0x08, 0x7c, 0xe8, 0xff}}},\n    {{{ -3071,   -511,  -2047}, 0, { -5754, -15158}, {0x08, 0x7c, 0xe8, 0xff}}},\n    {{{ -2312,      0,    771}, 0, { -4238,  -9530}, {0x08, 0x7c, 0xe8, 0xff}}},\n    {{{ -3071,   -511,  -2047}, 0, { -5754, -15158}, {0xfa, 0x7d, 0xec, 0xff}}},\n    {{{ -3071,      0,   1024}, 0, { -5754,  -9026}, {0xfa, 0x7d, 0xec, 0xff}}},\n    {{{ -2312,      0,    771}, 0, { -4238,  -9530}, {0xfa, 0x7d, 0xec, 0xff}}},\n    {{{ -2312,      0,    771}, 0, { -4238,  -9530}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3071,      0,   1024}, 0, { -5754,  -9026}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,      0,   2048}, 0, { -2688,  -6982}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,    512,  -1535}, 0, { -2688, -14136}, {0x0a, 0x7a, 0x1e, 0xff}}},\n    {{{ -2312,      0,    771}, 0, { -4238,  -9530}, {0x0a, 0x7a, 0x1e, 0xff}}},\n    {{{ -1535,      0,    512}, 0, { -2688, -10048}, {0x0a, 0x7a, 0x1e, 0xff}}},\n    {{{ -1535,    512,  -1535}, 0, { -2688, -14136}, {0xf8, 0x7c, 0x18, 0xff}}},\n    {{{ -1947,    512,  -1672}, 0, { -3510, -14410}, {0xf8, 0x7c, 0x18, 0xff}}},\n    {{{ -2312,      0,    771}, 0, { -4238,  -9530}, {0xf8, 0x7c, 0x18, 0xff}}},\n};\n\n// 0x070080F0 - 0x070081F0\nstatic const Vtx ttm_seg7_vertex_070080F0[] = {\n    {{{ -1535,      0,    512}, 0, { -2688, -10048}, {0xe6, 0x7c, 0x00, 0xff}}},\n    {{{ -1535,      0,   2048}, 0, { -2688,  -6982}, {0xe6, 0x7c, 0x00, 0xff}}},\n    {{{  1072,    560,   1774}, 0, {  2518,  -7528}, {0xe6, 0x7c, 0x00, 0xff}}},\n    {{{ -1535,      0,    512}, 0, { -2688, -10048}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2312,      0,    771}, 0, { -4238,  -9530}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,      0,   2048}, 0, { -2688,  -6982}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,      0,   2048}, 0, { -2688,  -6982}, {0xe7, 0x7c, 0x08, 0xff}}},\n    {{{  1479,    620,   2128}, 0, {  3330,  -6822}, {0xe7, 0x7c, 0x08, 0xff}}},\n    {{{  1072,    560,   1774}, 0, {  2518,  -7528}, {0xe7, 0x7c, 0x08, 0xff}}},\n    {{{  1479,    620,   2128}, 0, {  3330,  -6822}, {0xee, 0x7d, 0x00, 0xff}}},\n    {{{  1479,    620,   1820}, 0, {  3330,  -7436}, {0xee, 0x7d, 0x00, 0xff}}},\n    {{{  1072,    560,   1774}, 0, {  2518,  -7528}, {0xee, 0x7d, 0x00, 0xff}}},\n    {{{  1479,    620,   2128}, 0, {  3330,  -6822}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1910,    620,   2055}, 0, {  4190,  -6966}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1479,    620,   1820}, 0, {  3330,  -7436}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1479,    620,   1564}, 0, {  3330,  -7946}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070081F0 - 0x070082E0\nstatic const Vtx ttm_seg7_vertex_070081F0[] = {\n    {{{   589,  -4607,   4520}, 0, {  1554,  -2046}, {0xd6, 0x70, 0xd7, 0xff}}},\n    {{{   819,  -4300,   5120}, 0, {  2012,   -850}, {0xd6, 0x70, 0xd7, 0xff}}},\n    {{{  2045,  -4082,   4467}, 0, {  4458,  -2152}, {0xd6, 0x70, 0xd7, 0xff}}},\n    {{{   589,  -4607,   4520}, 0, {  1554,  -2046}, {0xe1, 0x72, 0xd2, 0xff}}},\n    {{{     0,  -4607,   4915}, 0, {   376,  -1258}, {0xe1, 0x72, 0xd2, 0xff}}},\n    {{{   819,  -4300,   5120}, 0, {  2012,   -850}, {0xe1, 0x72, 0xd2, 0xff}}},\n    {{{     0,  -4607,   4915}, 0, {   376,  -1258}, {0x07, 0x38, 0x8f, 0xff}}},\n    {{{ -1992,  -4607,   4788}, 0, { -3598,  -1512}, {0x07, 0x38, 0x8f, 0xff}}},\n    {{{   819,  -4300,   5120}, 0, {  2012,   -850}, {0x07, 0x38, 0x8f, 0xff}}},\n    {{{ -1992,  -4607,   4788}, 0, { -3598,  -1512}, {0x00, 0x5d, 0xaa, 0xff}}},\n    {{{ -2047,  -4300,   5121}, 0, { -3710,   -846}, {0x00, 0x5d, 0xaa, 0xff}}},\n    {{{   819,  -4300,   5120}, 0, {  2012,   -850}, {0x00, 0x5d, 0xaa, 0xff}}},\n    {{{  3144,  -4082,   5194}, 0, {  6652,   -702}, {0xf4, 0x7d, 0x12, 0xff}}},\n    {{{  2045,  -4082,   4467}, 0, {  4458,  -2152}, {0xf4, 0x7d, 0x12, 0xff}}},\n    {{{   819,  -4300,   5120}, 0, {  2012,   -850}, {0xf4, 0x7d, 0x12, 0xff}}},\n};\n\n// 0x070082E0 - 0x070083D0\nstatic const Vtx ttm_seg7_vertex_070082E0[] = {\n    {{{  4813,  -3583,   3072}, 0, {  9984,  -4938}, {0xeb, 0x7d, 0x02, 0xff}}},\n    {{{  3587,  -3798,   3371}, 0, {  7538,  -4340}, {0xeb, 0x7d, 0x02, 0xff}}},\n    {{{  2045,  -4082,   4467}, 0, {  4458,  -2152}, {0xeb, 0x7d, 0x02, 0xff}}},\n    {{{  4813,  -3583,   3072}, 0, {  9984,  -4938}, {0xf4, 0x7c, 0x13, 0xff}}},\n    {{{  2045,  -4082,   4467}, 0, {  4458,  -2152}, {0xf4, 0x7c, 0x13, 0xff}}},\n    {{{  3144,  -4082,   5194}, 0, {  6652,   -702}, {0xf4, 0x7c, 0x13, 0xff}}},\n    {{{ -2047,  -4505,   6043}, 0, { -3710,    990}, {0xf1, 0x7b, 0x1b, 0xff}}},\n    {{{ -2047,  -4300,   5121}, 0, { -3710,   -846}, {0xf1, 0x7b, 0x1b, 0xff}}},\n    {{{ -4095,  -4095,   3072}, 0, { -7798,  -4938}, {0xf1, 0x7b, 0x1b, 0xff}}},\n    {{{ -2047,  -4300,   5121}, 0, { -3710,   -846}, {0x0b, 0x7e, 0x00, 0xff}}},\n    {{{ -2472,  -4255,   4321}, 0, { -4556,  -2446}, {0x0b, 0x7e, 0x00, 0xff}}},\n    {{{ -4095,  -4095,   3072}, 0, { -7798,  -4938}, {0x0b, 0x7e, 0x00, 0xff}}},\n    {{{ -2047,  -4300,   5121}, 0, { -3710,   -846}, {0x00, 0x7d, 0x13, 0xff}}},\n    {{{  -204,  -4332,   5325}, 0, {     0,   -440}, {0x00, 0x7d, 0x13, 0xff}}},\n    {{{   819,  -4300,   5120}, 0, {  2012,   -850}, {0x00, 0x7d, 0x13, 0xff}}},\n};\n\n// 0x070083D0 - 0x070084C0\nstatic const Vtx ttm_seg7_vertex_070083D0[] = {\n    {{{ -2047,  -4300,   5121}, 0, { -3710,   -846}, {0x00, 0x7b, 0x1b, 0xff}}},\n    {{{ -2047,  -4505,   6043}, 0, { -3710,    990}, {0x00, 0x7b, 0x1b, 0xff}}},\n    {{{  -204,  -4332,   5325}, 0, {     0,   -440}, {0x00, 0x7b, 0x1b, 0xff}}},\n    {{{   819,  -4300,   5120}, 0, {  2012,   -850}, {0xf4, 0x7d, 0x10, 0xff}}},\n    {{{   819,  -4505,   6656}, 0, {  2012,   2214}, {0xf4, 0x7d, 0x10, 0xff}}},\n    {{{  3144,  -4082,   5194}, 0, {  6652,   -702}, {0xf4, 0x7d, 0x10, 0xff}}},\n    {{{  -204,  -4332,   5325}, 0, {  3648,   -444}, {0x00, 0x7d, 0x13, 0xff}}},\n    {{{   410,  -4332,   5325}, 0, {  4874,   -444}, {0x00, 0x7d, 0x13, 0xff}}},\n    {{{   819,  -4300,   5120}, 0, {  5692,   -852}, {0x00, 0x7d, 0x13, 0xff}}},\n    {{{   819,  -4300,   5120}, 0, {  2012,   -850}, {0xfb, 0x7e, 0x08, 0xff}}},\n    {{{   410,  -4332,   5325}, 0, {  1194,   -440}, {0xfb, 0x7e, 0x08, 0xff}}},\n    {{{   458,  -4380,   6090}, 0, {  1290,   1084}, {0xfb, 0x7e, 0x08, 0xff}}},\n    {{{   819,  -4505,   6656}, 0, {  2012,   2214}, {0x11, 0x7c, 0x10, 0xff}}},\n    {{{   819,  -4300,   5120}, 0, {  2012,   -850}, {0x11, 0x7c, 0x10, 0xff}}},\n    {{{   458,  -4380,   6090}, 0, {  1290,   1084}, {0x11, 0x7c, 0x10, 0xff}}},\n};\n\n// 0x070084C0 - 0x070085B0\nstatic const Vtx ttm_seg7_vertex_070084C0[] = {\n    {{{  4813,  -3583,   3072}, 0, {  9984,  -4938}, {0xeb, 0x7d, 0x00, 0xff}}},\n    {{{  3587,  -3798,   2859}, 0, {  7538,  -5362}, {0xeb, 0x7d, 0x00, 0xff}}},\n    {{{  3587,  -3798,   3371}, 0, {  7538,  -4340}, {0xeb, 0x7d, 0x00, 0xff}}},\n    {{{   102,  -4505,   6503}, 0, {   582,   1908}, {0xfa, 0x7a, 0x1f, 0xff}}},\n    {{{   819,  -4505,   6656}, 0, {  2012,   2214}, {0xfa, 0x7a, 0x1f, 0xff}}},\n    {{{   458,  -4380,   6090}, 0, {  1290,   1084}, {0xfa, 0x7a, 0x1f, 0xff}}},\n    {{{ -2047,  -4505,   6043}, 0, { -3710,    990}, {0xf8, 0x77, 0x29, 0xff}}},\n    {{{   102,  -4505,   6503}, 0, {   582,   1908}, {0xf8, 0x77, 0x29, 0xff}}},\n    {{{  -266,  -4394,   6104}, 0, {  -154,   1112}, {0xf8, 0x77, 0x29, 0xff}}},\n    {{{ -2047,  -4505,   6043}, 0, { -3710,    990}, {0xf8, 0x7e, 0x09, 0xff}}},\n    {{{  -266,  -4394,   6104}, 0, {  -154,   1112}, {0xf8, 0x7e, 0x09, 0xff}}},\n    {{{  -204,  -4332,   5325}, 0, {     0,   -440}, {0xf8, 0x7e, 0x09, 0xff}}},\n    {{{   102,  -4505,   6503}, 0, {   582,   1908}, {0xff, 0x79, 0x23, 0xff}}},\n    {{{   458,  -4380,   6090}, 0, {  1290,   1084}, {0xff, 0x79, 0x23, 0xff}}},\n    {{{  -266,  -4394,   6104}, 0, {  -154,   1112}, {0xff, 0x79, 0x23, 0xff}}},\n};\n\n// 0x070085B0 - 0x070086A0\nstatic const Vtx ttm_seg7_vertex_070085B0[] = {\n    {{{   819,  -4505,   6656}, 0, {  2012,   2214}, {0xf2, 0x7d, 0x0e, 0xff}}},\n    {{{  3506,  -4082,   5556}, 0, {  7376,     20}, {0xf2, 0x7d, 0x0e, 0xff}}},\n    {{{  3144,  -4082,   5194}, 0, {  6652,   -702}, {0xf2, 0x7d, 0x0e, 0xff}}},\n    {{{  3144,  -4082,   5194}, 0, {  6652,   -702}, {0x0f, 0x7d, 0xf1, 0xff}}},\n    {{{  3506,  -4082,   5556}, 0, {  7376,     20}, {0x0f, 0x7d, 0xf1, 0xff}}},\n    {{{  5325,  -4607,   3072}, 0, { 11006,  -4938}, {0x0f, 0x7d, 0xf1, 0xff}}},\n    {{{ -3071,  -2047,   1024}, 0, { -2074,  -9028}, {0xf5, 0x7d, 0x11, 0xff}}},\n    {{{ -3621,  -2252,   2123}, 0, { -3170,  -6834}, {0xf5, 0x7d, 0x11, 0xff}}},\n    {{{ -1535,  -2047,   2048}, 0, {   990,  -6984}, {0xf5, 0x7d, 0x11, 0xff}}},\n    {{{  3587,  -3798,   2859}, 0, {  7538,  -5362}, {0xe6, 0x77, 0x21, 0xff}}},\n    {{{  4813,  -3583,   3072}, 0, {  9984,  -4938}, {0xe6, 0x77, 0x21, 0xff}}},\n    {{{  4096,  -3521,   2287}, 0, {  8552,  -6506}, {0xe6, 0x77, 0x21, 0xff}}},\n    {{{  4096,  -3521,   2287}, 0, {  8552,  -6506}, {0xf6, 0x7d, 0x13, 0xff}}},\n    {{{  4813,  -3583,   3072}, 0, {  9984,  -4938}, {0xf6, 0x7d, 0x13, 0xff}}},\n    {{{  4813,  -3374,   1701}, 0, {  9984,  -7674}, {0xf6, 0x7d, 0x13, 0xff}}},\n};\n\n// 0x070086A0 - 0x07008790\nstatic const Vtx ttm_seg7_vertex_070086A0[] = {\n    {{{  4813,  -3374,   1701}, 0, {  9984,  -7674}, {0x00, 0x7b, 0x1e, 0xff}}},\n    {{{  4096,  -3374,   1701}, 0, {  8552,  -7674}, {0x00, 0x7b, 0x1e, 0xff}}},\n    {{{  4096,  -3521,   2287}, 0, {  8552,  -6506}, {0x00, 0x7b, 0x1e, 0xff}}},\n    {{{ -3621,  -2252,   2123}, 0, { -3170,  -6834}, {0xb8, 0x66, 0xef, 0xff}}},\n    {{{ -3071,  -2047,   1024}, 0, { -2074,  -9028}, {0xb8, 0x66, 0xef, 0xff}}},\n    {{{ -3071,  -2559,  -2047}, 0, { -2074, -15160}, {0xb8, 0x66, 0xef, 0xff}}},\n    {{{ -3849,  -2559,  -2207}, 0, { -3626, -15480}, {0x20, 0x7a, 0xf6, 0xff}}},\n    {{{ -4095,  -2047,   3072}, 0, { -4118,  -4940}, {0x20, 0x7a, 0xf6, 0xff}}},\n    {{{ -3621,  -2252,   2123}, 0, { -3170,  -6834}, {0x20, 0x7a, 0xf6, 0xff}}},\n    {{{ -3849,  -2559,  -2207}, 0, { -3626, -15480}, {0x01, 0x7e, 0xf7, 0xff}}},\n    {{{ -3621,  -2252,   2123}, 0, { -3170,  -6834}, {0x01, 0x7e, 0xf7, 0xff}}},\n    {{{ -3071,  -2559,  -2047}, 0, { -2074, -15160}, {0x01, 0x7e, 0xf7, 0xff}}},\n    {{{ -3621,  -2252,   2123}, 0, { -3170,  -6834}, {0x11, 0x7c, 0xef, 0xff}}},\n    {{{ -4095,  -2047,   3072}, 0, { -4118,  -4940}, {0x11, 0x7c, 0xef, 0xff}}},\n    {{{ -2047,  -2047,   5120}, 0, {     0,   -852}, {0x11, 0x7c, 0xef, 0xff}}},\n};\n\n// 0x07008790 - 0x07008880\nstatic const Vtx ttm_seg7_vertex_07008790[] = {\n    {{{ -3621,  -2252,   2123}, 0, { -3170,  -6834}, {0xf4, 0x7e, 0xfe, 0xff}}},\n    {{{ -2047,  -2047,   5120}, 0, {     0,   -852}, {0xf4, 0x7e, 0xfe, 0xff}}},\n    {{{ -1535,  -2047,   2048}, 0, {   990,  -6984}, {0xf4, 0x7e, 0xfe, 0xff}}},\n    {{{ -3071,  -2559,  -2047}, 0, { -2074, -15160}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3216,  -2559,  -2192}, 0, { -2362, -15450}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3849,  -2559,  -2207}, 0, { -3626, -15480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2048,  -1548,   4096}, 0, {  8144,  -2896}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2748,  -1548,   3010}, 0, {  9540,  -5064}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1465,  -1548,   2618}, 0, {  6982,  -5846}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2748,  -1548,   3010}, 0, {  9540,  -5064}, {0xff, 0x7e, 0x03, 0xff}}},\n    {{{  1910,  -1529,   2055}, 0, {  7868,  -6970}, {0xff, 0x7e, 0x03, 0xff}}},\n    {{{  1465,  -1548,   2618}, 0, {  6982,  -5846}, {0xff, 0x7e, 0x03, 0xff}}},\n    {{{  1465,  -1548,   2618}, 0, {  6982,  -5846}, {0xfd, 0x7e, 0x01, 0xff}}},\n    {{{  1910,  -1529,   2055}, 0, {  7868,  -6970}, {0xfd, 0x7e, 0x01, 0xff}}},\n    {{{  1606,  -1529,   1382}, 0, {  7262,  -8314}, {0xfd, 0x7e, 0x01, 0xff}}},\n};\n\n// 0x07008880 - 0x070088E0\nstatic const Vtx ttm_seg7_vertex_07008880[] = {\n    {{{  4096,  -1023,  -2047}, 0, { 12232, -15160}, {0x0d, 0x7d, 0x0d, 0xff}}},\n    {{{  3584,  -1023,  -1535}, 0, { 11210, -14138}, {0x0d, 0x7d, 0x0d, 0xff}}},\n    {{{  3439,  -1330,   1545}, 0, { 10920,  -7990}, {0x0d, 0x7d, 0x0d, 0xff}}},\n    {{{  3439,  -1330,   1545}, 0, { 10920,  -7990}, {0xf6, 0x7e, 0x08, 0xff}}},\n    {{{  4096,  -1330,   2287}, 0, { 12232,  -6508}, {0xf6, 0x7e, 0x08, 0xff}}},\n    {{{  4096,  -1023,  -2047}, 0, { 12232, -15160}, {0xf6, 0x7e, 0x08, 0xff}}},\n};\n\n// 0x070088E0 - 0x070089D0\nstatic const Vtx ttm_seg7_vertex_070088E0[] = {\n    {{{  3072,  -3993,  -5119}, 0, { 10188, -21292}, {0x13, 0x7d, 0x00, 0xff}}},\n    {{{  -457,  -3448,  -4799}, 0, {  3142, -20654}, {0x13, 0x7d, 0x00, 0xff}}},\n    {{{  -457,  -3448,  -4492}, 0, {  3142, -20040}, {0x13, 0x7d, 0x00, 0xff}}},\n    {{{  5325,  -4607,   3072}, 0, { 11006,  -4938}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4096,  -4607,    614}, 0, {  8552,  -9844}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4096,  -4607,   3072}, 0, {  8552,  -4938}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5325,  -4607,    614}, 0, { 11006,  -9844}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3144,  -3993,  -5164}, 0, { 10332, -21382}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3072,  -3993,  -5119}, 0, { 10188, -21292}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4746,  -3993,  -3445}, 0, { 13528, -17952}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3048,  -3993,  -5199}, 0, { 10140, -21452}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4782,  -3993,  -3482}, 0, { 13602, -18024}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3072,  -3993,  -5119}, 0, { 10188, -21292}, {0x12, 0x7d, 0xfb, 0xff}}},\n    {{{  3048,  -3993,  -5199}, 0, { 10140, -21452}, {0x12, 0x7d, 0xfb, 0xff}}},\n    {{{  -457,  -3448,  -4799}, 0, {  3142, -20654}, {0x12, 0x7d, 0xfb, 0xff}}},\n};\n\n// 0x070089D0 - 0x07008A80\nstatic const Vtx ttm_seg7_vertex_070089D0[] = {\n    {{{  -457,  -3448,  -4799}, 0, {  3142, -20654}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1202,  -3448,  -4083}, 0, {  1654, -19224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -457,  -3448,  -4083}, 0, {  3142, -19224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3144,  -3993,  -5164}, 0, { 10332, -21382}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3083,  -3993,  -5295}, 0, { 10210, -21644}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3048,  -3993,  -5199}, 0, { 10140, -21452}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3179,  -3993,  -5260}, 0, { 10402, -21574}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3048,  -3993,  -5199}, 0, { 10140, -21452}, {0x14, 0x7d, 0x07, 0xff}}},\n    {{{  3083,  -3993,  -5295}, 0, { 10210, -21644}, {0x14, 0x7d, 0x07, 0xff}}},\n    {{{  -457,  -3448,  -4799}, 0, {  3142, -20654}, {0x14, 0x7d, 0x07, 0xff}}},\n    {{{ -1202,  -3448,  -4595}, 0, {  1654, -20246}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07008A80 - 0x07008B70\nstatic const Vtx ttm_seg7_vertex_07008A80[] = {\n    {{{  2165,  -1512,   1127}, 0, {  4288,   3238}, {0xfc, 0x7e, 0x02, 0xff}}},\n    {{{  2418,  -1516,   1689}, 0, {  4796,   4360}, {0xfc, 0x7e, 0x02, 0xff}}},\n    {{{  2828,  -1499,   1504}, 0, {  5614,   3990}, {0xfc, 0x7e, 0x02, 0xff}}},\n    {{{  2165,  -1512,   1127}, 0, {  4288,   3238}, {0xfd, 0x7e, 0x01, 0xff}}},\n    {{{  2828,  -1499,   1504}, 0, {  5614,   3990}, {0xfd, 0x7e, 0x01, 0xff}}},\n    {{{  2560,  -1500,   1024}, 0, {  5078,   3032}, {0xfd, 0x7e, 0x01, 0xff}}},\n    {{{  5325,  -4607,   3072}, 0, { 11006,  -4938}, {0x00, 0x7b, 0xe2, 0xff}}},\n    {{{  4813,  -4607,   3072}, 0, {  9984,  -4938}, {0x00, 0x7b, 0xe2, 0xff}}},\n    {{{  3144,  -4082,   5194}, 0, {  6652,   -702}, {0x00, 0x7b, 0xe2, 0xff}}},\n    {{{    -2,  -2719,  -4505}, 0, {  4050, -20066}, {0x0e, 0x7d, 0xf2, 0xff}}},\n    {{{ -1168,  -2559,  -4240}, 0, {  1724, -19538}, {0x0e, 0x7d, 0xf2, 0xff}}},\n    {{{ -1023,  -2559,  -4095}, 0, {  2012, -19248}, {0x0e, 0x7d, 0xf2, 0xff}}},\n    {{{    -2,  -2719,  -4095}, 0, {  4050, -19248}, {0x13, 0x7d, 0x00, 0xff}}},\n    {{{    -2,  -2719,  -4505}, 0, {  4050, -20066}, {0x13, 0x7d, 0x00, 0xff}}},\n    {{{ -1023,  -2559,  -4095}, 0, {  2012, -19248}, {0x13, 0x7d, 0x00, 0xff}}},\n};\n\n// 0x07008B70 - 0x07008C50\nstatic const Vtx ttm_seg7_vertex_07008B70[] = {\n    {{{  3159,  -2989,  -4796}, 0, { 10362, -20648}, {0x0b, 0x7e, 0x02, 0xff}}},\n    {{{  3261,  -2989,  -5308}, 0, { 10566, -21670}, {0x0b, 0x7e, 0x02, 0xff}}},\n    {{{    -2,  -2719,  -4505}, 0, {  4050, -20066}, {0x0b, 0x7e, 0x02, 0xff}}},\n    {{{ -1714,  -2598,  -5014}, 0, {   632, -21084}, {0x0d, 0x7d, 0xf1, 0xff}}},\n    {{{ -1168,  -2559,  -4240}, 0, {  1724, -19538}, {0x0d, 0x7d, 0xf1, 0xff}}},\n    {{{    -2,  -2719,  -4505}, 0, {  4050, -20066}, {0x0d, 0x7d, 0xf1, 0xff}}},\n    {{{ -1023,  -2559,  -4095}, 0, {  2012, -19248}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1168,  -2559,  -4240}, 0, {  1724, -19538}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3216,  -2559,  -2192}, 0, { -2362, -15450}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3071,  -2559,  -2047}, 0, { -2074, -15160}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -786,  -2559,  -3621}, 0, {  2486, -18302}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3072,  -1535,  -4095}, 0, { 10188, -19248}, {0x0f, 0x7d, 0xf9, 0xff}}},\n    {{{ -1023,  -1023,  -4095}, 0, {  2012, -19248}, {0x0f, 0x7d, 0xf9, 0xff}}},\n    {{{  -786,  -1023,  -3621}, 0, {  2486, -18302}, {0x0f, 0x7d, 0xf9, 0xff}}},\n};\n\n// 0x07008C50 - 0x07008D40\nstatic const Vtx ttm_seg7_vertex_07008C50[] = {\n    {{{  2835,  -1535,  -3621}, 0, {  9714, -18302}, {0x11, 0x7d, 0x08, 0xff}}},\n    {{{  3072,  -1535,  -4095}, 0, { 10188, -19248}, {0x11, 0x7d, 0x08, 0xff}}},\n    {{{  -786,  -1023,  -3621}, 0, {  2486, -18302}, {0x11, 0x7d, 0x08, 0xff}}},\n    {{{  3874,  -1023,  -1825}, 0, { 11788, -14716}, {0xe0, 0x79, 0xf0, 0xff}}},\n    {{{  3072,  -1535,  -4095}, 0, { 10188, -19248}, {0xe0, 0x79, 0xf0, 0xff}}},\n    {{{  2835,  -1535,  -3621}, 0, {  9714, -18302}, {0xe0, 0x79, 0xf0, 0xff}}},\n    {{{  3874,  -1023,  -1825}, 0, { 11788, -14716}, {0xec, 0x7b, 0xec, 0xff}}},\n    {{{  4096,  -1023,  -2047}, 0, { 12232, -15160}, {0xec, 0x7b, 0xec, 0xff}}},\n    {{{  3072,  -1535,  -4095}, 0, { 10188, -19248}, {0xec, 0x7b, 0xec, 0xff}}},\n    {{{ -3071,  -2559,  -2047}, 0, { -2074, -15160}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1947,  -2559,  -1672}, 0, {   168, -14412}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -786,  -2559,  -3621}, 0, {  2486, -18302}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4813,  -3111,  -1473}, 0, { 13664, -14014}, {0x03, 0x7e, 0x05, 0xff}}},\n    {{{  4623,  -3071,  -2363}, 0, { 13284, -15792}, {0x03, 0x7e, 0x05, 0xff}}},\n    {{{  4096,  -3071,  -2047}, 0, { 12232, -15160}, {0x03, 0x7e, 0x05, 0xff}}},\n};\n\n// 0x07008D40 - 0x07008E30\nstatic const Vtx ttm_seg7_vertex_07008D40[] = {\n    {{{  4813,  -3111,  -1473}, 0, { 13664, -14014}, {0x00, 0x7e, 0x08, 0xff}}},\n    {{{  4096,  -3071,  -2047}, 0, { 12232, -15160}, {0x00, 0x7e, 0x08, 0xff}}},\n    {{{  4096,  -3111,  -1473}, 0, { 12232, -14014}, {0x00, 0x7e, 0x08, 0xff}}},\n    {{{  3261,  -2989,  -5308}, 0, { 10566, -21670}, {0x09, 0x7e, 0xfe, 0xff}}},\n    {{{ -1714,  -2598,  -5014}, 0, {   632, -21084}, {0x09, 0x7e, 0xfe, 0xff}}},\n    {{{    -2,  -2719,  -4505}, 0, {  4050, -20066}, {0x09, 0x7e, 0xfe, 0xff}}},\n    {{{  3261,  -2989,  -5308}, 0, { 10566, -21670}, {0x03, 0x7e, 0x00, 0xff}}},\n    {{{  3159,  -2989,  -4796}, 0, { 10362, -20648}, {0x03, 0x7e, 0x00, 0xff}}},\n    {{{  5590,  -3071,  -3645}, 0, { 15214, -18350}, {0x03, 0x7e, 0x00, 0xff}}},\n    {{{  3159,  -2989,  -4796}, 0, { 10362, -20648}, {0x02, 0x7e, 0x04, 0xff}}},\n    {{{  4771,  -3071,  -3235}, 0, { 13580, -17532}, {0x02, 0x7e, 0x04, 0xff}}},\n    {{{  5590,  -3071,  -3645}, 0, { 15214, -18350}, {0x02, 0x7e, 0x04, 0xff}}},\n    {{{  4623,  -3071,  -2363}, 0, { 13284, -15792}, {0x05, 0x7e, 0x04, 0xff}}},\n    {{{  4813,  -3111,  -1473}, 0, { 13664, -14014}, {0x05, 0x7e, 0x04, 0xff}}},\n    {{{  5590,  -3071,  -3645}, 0, { 15214, -18350}, {0x05, 0x7e, 0x04, 0xff}}},\n};\n\n// 0x07008E30 - 0x07008E60\nstatic const Vtx ttm_seg7_vertex_07008E30[] = {\n    {{{  4771,  -3071,  -3235}, 0, { 13580, -17532}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4623,  -3071,  -2363}, 0, { 13284, -15792}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  5590,  -3071,  -3645}, 0, { 15214, -18350}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07008E60 - 0x07008F30\nstatic const Vtx ttm_seg7_vertex_07008E60[] = {\n    {{{ -1342,   1178,  -1465}, 0, {  2282,   4914}, {0x03, 0x7c, 0xea, 0xff}}},\n    {{{ -1023,   1434,      0}, 0, {  7160,   3852}, {0x03, 0x7c, 0xea, 0xff}}},\n    {{{   342,   1115,  -1518}, 0, {  2108,   -690}, {0x03, 0x7c, 0xea, 0xff}}},\n    {{{ -1947,  -2559,  -1672}, 0, {  7514,    990}, {0x93, 0x00, 0xc0, 0xff}}},\n    {{{ -1947,    512,  -1672}, 0, {  7514,  -9230}, {0x93, 0x00, 0xc0, 0xff}}},\n    {{{  -786,    205,  -3621}, 0, {     0,  -8208}, {0x93, 0x00, 0xc0, 0xff}}},\n    {{{  -786,  -2559,  -3621}, 0, {     0,    990}, {0x93, 0x00, 0xc0, 0xff}}},\n    {{{  -162,   1165,  -2161}, 0, {     0,    990}, {0x04, 0x7e, 0x05, 0xff}}},\n    {{{ -1342,   1178,  -1465}, 0, {  2282,   4914}, {0x04, 0x7e, 0x05, 0xff}}},\n    {{{   342,   1115,  -1518}, 0, {  2108,   -690}, {0x04, 0x7e, 0x05, 0xff}}},\n    {{{ -1342,   1178,  -1465}, 0, {  2282,   4914}, {0xef, 0x7c, 0xef, 0xff}}},\n    {{{ -1457,   1434,    434}, 0, {  8606,   5296}, {0xef, 0x7c, 0xef, 0xff}}},\n    {{{ -1023,   1434,      0}, 0, {  7160,   3852}, {0xef, 0x7c, 0xef, 0xff}}},\n};\n\n// 0x07008F30 - 0x07009010\nstatic const Vtx ttm_seg7_vertex_07008F30[] = {\n    {{{  2560,    768,   -818}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2560,   1382,  -1279}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2560,   1382,   -818}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3072,    768,   -818}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2560,    768,   -818}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2560,   1382,   -818}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3072,    768,  -1279}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2560,    768,  -1279}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2560,    768,   -818}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3072,    768,   -818}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2560,    768,  -1279}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2560,   1382,  -1279}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2560,    768,  -1279}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3072,    768,  -1279}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07009010 - 0x070090D0\nstatic const Vtx ttm_seg7_vertex_07009010[] = {\n    {{{  3072,   1382,   -818}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2560,   1382,  -1279}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3072,   1382,  -1279}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2560,   1382,   -818}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2560,   1382,  -1279}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3072,    768,  -1279}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3072,    922,  -1279}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3072,   1382,  -1279}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2560,   1382,   -818}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3072,    922,   -818}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3072,    768,   -818}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3072,   1382,   -818}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070090D0 - 0x07009C98\nstatic const Gfx ttm_seg7_dl_070090D0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_07005000.l, 1),\n    gsSPLight(&ttm_seg7_lights_07005000.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07005060, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0,  7,  9, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07005160, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 11, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07005250, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07005330, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 6,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 11, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07005420, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(10, 12, 11, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07005520, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(10, 12, 11, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07005620, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07005700, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 11, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070057E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070058E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  1,  3,  6, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  8, 10,  9, 0x0),\n    gsSP2Triangles(10, 11,  9, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 15, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070059E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  9,  6, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07005AE0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07005BD0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07005CD0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07005DD0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP1Triangle(11, 12, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07005EB0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07005FA0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 11, 10, 0x0, 12, 10, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07006080, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07006170, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07006250, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07006340, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07006430, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  7,  8, 0x0),\n    gsSPLight(&ttm_seg7_lights_07005018.l, 1),\n    gsSPLight(&ttm_seg7_lights_07005018.a, 2),\n    gsSPVertex(ttm_seg7_vertex_070064C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 2,  4,  3, 0x0,  5,  0,  3, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070065C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 15, 12, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070066C0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 2,  4,  3, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 7,  8,  5, 0x0,  9,  6,  5, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070067A0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(11,  2,  1, 0x0, 11,  1, 12, 0x0),\n    gsSP1Triangle( 2, 13,  0, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07006880, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  7,  6, 0x0),\n    gsSP2Triangles( 4,  8,  9, 0x0,  4,  9,  5, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07006970, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07006A50, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07006B40, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07006C30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 15, 12, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07006D30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07006E30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07006F30, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07007030, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 11, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07007120, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPLight(&ttm_seg7_lights_07005030.l, 1),\n    gsSPLight(&ttm_seg7_lights_07005030.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07007200, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0,  3,  7,  6, 0x0),\n    gsSP2Triangles( 7,  8,  6, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07007300, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12,  9, 11, 0x0, 13, 14,  1, 0x0),\n    gsSP2Triangles( 0, 13,  1, 0x0, 15, 12, 11, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07007400, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070074F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  4, 11,  5, 0x0),\n    gsSP2Triangles(12,  4,  7, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070075F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070076E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11,  7, 0x0, 10,  7,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070077D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070078C0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070079A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07007A90, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07007B80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07007C70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07007D60, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07007E40, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07007F20, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009C98 - 0x07009CE0\nstatic const Gfx ttm_seg7_dl_07009C98[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_07005000.l, 1),\n    gsSPLight(&ttm_seg7_lights_07005000.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07007FC0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009CE0 - 0x0700A038\nstatic const Gfx ttm_seg7_dl_07009CE0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttm_seg7_vertex_07008000, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070080F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070081F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070082E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070083D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070084C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070085B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070086A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07008790, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07008880, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPLight(&ttm_seg7_lights_07005018.l, 1),\n    gsSPLight(&ttm_seg7_lights_07005018.a, 2),\n    gsSPVertex(ttm_seg7_vertex_070088E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8,  7, 10, 0x0, 11,  7,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070089D0, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle( 0, 10,  1, 0x0),\n    gsSPLight(&ttm_seg7_lights_07005030.l, 1),\n    gsSPLight(&ttm_seg7_lights_07005030.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07008A80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07008B70, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10,  6, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07008C50, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07008D40, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07008E30, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A038 - 0x0700A098\nstatic const Gfx ttm_seg7_dl_0700A038[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ttm_seg7_texture_07002800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_07005000.l, 1),\n    gsSPLight(&ttm_seg7_lights_07005000.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07008E60, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle(10, 11, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A098 - 0x0700A120\nstatic const Gfx ttm_seg7_dl_0700A098[] = {\n    gsSPLight(&ttm_seg7_lights_07005048.l, 1),\n    gsSPLight(&ttm_seg7_lights_07005048.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07008F30, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 0, 10,  1, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07009010, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A120 - 0x0700A1B0\nconst Gfx ttm_seg7_dl_0700A120[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_070090D0),\n    gsSPDisplayList(ttm_seg7_dl_07009C98),\n    gsSPDisplayList(ttm_seg7_dl_07009CE0),\n    gsSPDisplayList(ttm_seg7_dl_0700A038),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(ttm_seg7_dl_0700A098),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/10/geo.inc.c",
    "content": "// 0x0E000880\nconst GeoLayout ttm_geo_000880[] = {\n    GEO_CULLING_RADIUS(2200),\n    GEO_OPEN_NODE(),\n        GEO_RENDER_RANGE(-3200, 10000),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, ttm_seg7_dl_0700CAE0),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/10/model.inc.c",
    "content": "// 0x0700C488 - 0x0700C4A0\nstatic const Lights1 ttm_seg7_lights_0700C488 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700C4A0 - 0x0700C4B8\nstatic const Lights1 ttm_seg7_lights_0700C4A0 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0x99, 0x99, 0x99, 0x28, 0x28, 0x28\n);\n\n// 0x0700C4B8 - 0x0700C4D0\nstatic const Lights1 ttm_seg7_lights_0700C4B8 = gdSPDefLights1(\n    0x5d, 0x5d, 0x5d,\n    0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28\n);\n\n// 0x0700C4D0 - 0x0700C5D0\nstatic const Vtx ttm_seg7_vertex_0700C4D0[] = {\n    {{{   742,    688,   -836}, 0, {  -414,  -3010}, {0x97, 0x41, 0x1a, 0xff}}},\n    {{{  -306,  -1307,    -97}, 0, {     0,    990}, {0x97, 0x41, 0x1a, 0xff}}},\n    {{{   861,    688,   -362}, 0, {   548,  -2976}, {0x97, 0x41, 0x1a, 0xff}}},\n    {{{   861,    688,   -362}, 0, {   548,  -2976}, {0x93, 0x40, 0x04, 0xff}}},\n    {{{  -306,  -1307,    -97}, 0, {     0,    990}, {0x93, 0x40, 0x04, 0xff}}},\n    {{{   682,    358,     10}, 0, {  1066,  -2296}, {0x93, 0x40, 0x04, 0xff}}},\n    {{{   702,    694,    312}, 0, {  1660,  -2948}, {0x8f, 0xdf, 0x2d, 0xff}}},\n    {{{   682,    358,     10}, 0, {  1066,  -2296}, {0x8f, 0xdf, 0x2d, 0xff}}},\n    {{{   922,   -329,    102}, 0, {  1374,   -912}, {0x8f, 0xdf, 0x2d, 0xff}}},\n    {{{  1124,    688,    -90}, 0, {  1132,    994}, {0x7a, 0x13, 0x1b, 0xff}}},\n    {{{  1043,   1309,   -173}, 0, {  1122,   -244}, {0x7a, 0x13, 0x1b, 0xff}}},\n    {{{   894,   1309,    479}, 0, {     8,   -236}, {0x7a, 0x13, 0x1b, 0xff}}},\n    {{{  1416,    688,   -368}, 0, {  1938,    990}, {0x57, 0x00, 0x5b, 0xff}}},\n    {{{  1124,    688,    -90}, 0, {  1132,    994}, {0x57, 0x00, 0x5b, 0xff}}},\n    {{{   922,   -329,    102}, 0, {   586,   3028}, {0x57, 0x00, 0x5b, 0xff}}},\n    {{{   702,    694,    312}, 0, {     0,    990}, {0x57, 0x00, 0x5b, 0xff}}},\n};\n\n// 0x0700C5D0 - 0x0700C600\nstatic const Vtx ttm_seg7_vertex_0700C5D0[] = {\n    {{{  -306,  -1307,    -97}, 0, {  6028,  -1962}, {0xe6, 0x07, 0x7c, 0xff}}},\n    {{{   922,   -329,    102}, 0, {  8232,  -3916}, {0xe6, 0x07, 0x7c, 0xff}}},\n    {{{   682,    358,     10}, 0, {  7738,  -5288}, {0xe6, 0x07, 0x7c, 0xff}}},\n};\n\n// 0x0700C600 - 0x0700C690\nstatic const Vtx ttm_seg7_vertex_0700C600[] = {\n    {{{   702,    694,    312}, 0, {  1072,    978}, {0xbf, 0xb5, 0xb2, 0xff}}},\n    {{{   387,   1309,    -20}, 0, {  1132,   -250}, {0xbf, 0xb5, 0xb2, 0xff}}},\n    {{{   596,   1309,   -193}, 0, {   590,   -250}, {0xbf, 0xb5, 0xb2, 0xff}}},\n    {{{   596,   1309,   -193}, 0, {   694,  -4210}, {0x83, 0xf9, 0x10, 0xff}}},\n    {{{   682,    358,     10}, 0, {  1066,  -2296}, {0x83, 0xf9, 0x10, 0xff}}},\n    {{{   702,    694,    312}, 0, {  1660,  -2948}, {0x83, 0xf9, 0x10, 0xff}}},\n    {{{   702,    694,    312}, 0, {  1660,  -2948}, {0x95, 0xc0, 0xef, 0xff}}},\n    {{{   354,   1309,    181}, 0, {  1190,  -4192}, {0x95, 0xc0, 0xef, 0xff}}},\n    {{{   387,   1309,    -20}, 0, {   846,  -4204}, {0x95, 0xc0, 0xef, 0xff}}},\n};\n\n// 0x0700C690 - 0x0700C780\nstatic const Vtx ttm_seg7_vertex_0700C690[] = {\n    {{{  1043,   1309,   -173}, 0, {  -394,   -250}, {0x05, 0x23, 0x87, 0xff}}},\n    {{{   861,    688,   -362}, 0, {     0,    990}, {0x05, 0x23, 0x87, 0xff}}},\n    {{{   596,   1309,   -193}, 0, {   498,   -250}, {0x05, 0x23, 0x87, 0xff}}},\n    {{{   702,    694,    312}, 0, {  1660,  -2948}, {0x91, 0xc4, 0x0c, 0xff}}},\n    {{{   428,   1309,    816}, 0, {  2414,  -4148}, {0x91, 0xc4, 0x0c, 0xff}}},\n    {{{   354,   1309,    181}, 0, {  1190,  -4192}, {0x91, 0xc4, 0x0c, 0xff}}},\n    {{{   894,   1309,    479}, 0, {     8,   -236}, {0x50, 0xd0, 0x55, 0xff}}},\n    {{{   702,    694,    312}, 0, {     0,    990}, {0x50, 0xd0, 0x55, 0xff}}},\n    {{{  1124,    688,    -90}, 0, {  1132,    994}, {0x50, 0xd0, 0x55, 0xff}}},\n    {{{   702,    694,    312}, 0, {     0,    990}, {0x45, 0xd1, 0x5f, 0xff}}},\n    {{{   894,   1309,    479}, 0, {     8,   -236}, {0x45, 0xd1, 0x5f, 0xff}}},\n    {{{   428,   1309,    816}, 0, { -1128,   -230}, {0x45, 0xd1, 0x5f, 0xff}}},\n    {{{   596,   1309,   -193}, 0, {   590,   -250}, {0x9a, 0xe8, 0xba, 0xff}}},\n    {{{   861,    688,   -362}, 0, {     0,    990}, {0x9a, 0xe8, 0xba, 0xff}}},\n    {{{   682,    358,     10}, 0, {   718,   1648}, {0x9a, 0xe8, 0xba, 0xff}}},\n};\n\n// 0x0700C780 - 0x0700C7B0\nstatic const Vtx ttm_seg7_vertex_0700C780[] = {\n    {{{  1043,   1309,   -173}, 0, {   200,   -250}, {0x5b, 0x00, 0xa8, 0xff}}},\n    {{{  1124,    688,    -90}, 0, {     0,    990}, {0x5b, 0x00, 0xa8, 0xff}}},\n    {{{   861,    688,   -362}, 0, {   724,    990}, {0x5b, 0x00, 0xa8, 0xff}}},\n};\n\n// 0x0700C7B0 - 0x0700C810\nstatic const Vtx ttm_seg7_vertex_0700C7B0[] = {\n    {{{   387,   1309,    -20}, 0, {  4216,  -3960}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   354,   1309,    181}, 0, {  4150,  -3556}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   428,   1309,    816}, 0, {  4298,  -2288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1043,   1309,   -173}, 0, {  5526,  -4266}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   596,   1309,   -193}, 0, {  4634,  -4304}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   894,   1309,    479}, 0, {  5228,  -2962}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700C810 - 0x0700C850\nstatic const Vtx ttm_seg7_vertex_0700C810[] = {\n    {{{   861,    688,   -362}, 0, {  5162,  -4642}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1124,    688,    -90}, 0, {  5688,  -4100}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1416,    688,   -368}, 0, {  6270,  -4656}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   742,    688,   -836}, 0, {  4924,  -5590}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700C850 - 0x0700C8C0\nstatic const Vtx ttm_seg7_vertex_0700C850[] = {\n    {{{   354,   1309,    181}, 0, {  3648,    990}, {0x7d, 0x00, 0x13, 0xff}}},\n    {{{   354,   1206,    181}, 0, {  3648,    990}, {0x7d, 0x00, 0x13, 0xff}}},\n    {{{   370,   1155,     80}, 0, {  3648,      0}, {0x7d, 0x00, 0x13, 0xff}}},\n    {{{   354,   1309,    181}, 0, {  3648,    990}, {0x7d, 0x00, 0x14, 0xff}}},\n    {{{   387,   1206,    -20}, 0, {  3648,  -1054}, {0x7d, 0x00, 0x14, 0xff}}},\n    {{{   387,   1309,    -20}, 0, {  3648,  -1054}, {0x7d, 0x00, 0x14, 0xff}}},\n    {{{   370,   1155,     80}, 0, {  3648,      0}, {0x7d, 0x00, 0x14, 0xff}}},\n};\n\n// 0x0700C8C0 - 0x0700C900\nstatic const Vtx ttm_seg7_vertex_0700C8C0[] = {\n    {{{   387,   1309,    -20}, 0, {  3648,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1463,   1309,   -121}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   354,   1309,    181}, 0, {  3648,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1430,   1309,   -323}, 0, {     0,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700C900 - 0x0700C9F8\nstatic const Gfx ttm_seg7_dl_0700C900[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_0700C488.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700C488.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700C4D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0700C5D0, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPLight(&ttm_seg7_lights_0700C4A0.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700C4A0.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700C600, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  7,  8, 0x0),\n    gsSPLight(&ttm_seg7_lights_0700C4B8.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700C4B8.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700C690, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0700C780, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700C9F8 - 0x0700CA78\nstatic const Gfx ttm_seg7_dl_0700C9F8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_0700C488.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700C488.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700C7B0, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  5,  3, 0x0,  0,  2,  5, 0x0),\n    gsSPLight(&ttm_seg7_lights_0700C4B8.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700C4B8.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700C810, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700CA78 - 0x0700CAE0\nstatic const Gfx ttm_seg7_dl_0700CA78[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ttm_seg7_texture_07001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttm_seg7_vertex_0700C850, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 3,  6,  4, 0x0),\n    gsSPLight(&ttm_seg7_lights_0700C488.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700C488.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700C8C0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700CAE0 - 0x0700CB60\nconst Gfx ttm_seg7_dl_0700CAE0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_0700C900),\n    gsSPDisplayList(ttm_seg7_dl_0700C9F8),\n    gsSPDisplayList(ttm_seg7_dl_0700CA78),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/11/geo.inc.c",
    "content": "// 0x0E0008A8\nconst GeoLayout ttm_geo_0008A8[] = {\n    GEO_CULLING_RADIUS(750),\n    GEO_OPEN_NODE(),\n        GEO_RENDER_RANGE(-1750, 7000),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, ttm_seg7_dl_0700CD10),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/11/model.inc.c",
    "content": "// 0x0700CB60 - 0x0700CB78\nstatic const Lights1 ttm_seg7_lights_0700CB60 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700CB78 - 0x0700CB90\nstatic const Lights1 ttm_seg7_lights_0700CB78 = gdSPDefLights1(\n    0x5d, 0x5d, 0x5d,\n    0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28\n);\n\n// 0x0700CB90 - 0x0700CBF0\nstatic const Vtx ttm_seg7_vertex_0700CB90[] = {\n    {{{  -323,   -387,    -61}, 0, {  8458,  -5948}, {0x9c, 0xf1, 0x4b, 0xff}}},\n    {{{   -30,    389,    495}, 0, {  9592,  -7498}, {0x9c, 0xf1, 0x4b, 0xff}}},\n    {{{  -224,    389,    235}, 0, {  8972,  -7498}, {0x9c, 0xf1, 0x4b, 0xff}}},\n    {{{  -323,   -387,    -61}, 0, {  8458,  -5948}, {0xc2, 0xd1, 0x63, 0xff}}},\n    {{{   377,    389,    751}, 0, { 10552,  -7498}, {0xc2, 0xd1, 0x63, 0xff}}},\n    {{{   -30,    389,    495}, 0, {  9592,  -7498}, {0xc2, 0xd1, 0x63, 0xff}}},\n};\n\n// 0x0700CBF0 - 0x0700CC20\nstatic const Vtx ttm_seg7_vertex_0700CBF0[] = {\n    {{{  -323,   -387,    -61}, 0, {   974,  -2960}, {0x82, 0x0d, 0x07, 0xff}}},\n    {{{  -224,    389,    235}, 0, {  1654,  -4488}, {0x82, 0x0d, 0x07, 0xff}}},\n    {{{  -282,    389,   -714}, 0, {  -132,  -4554}, {0x82, 0x0d, 0x07, 0xff}}},\n};\n\n// 0x0700CC20 - 0x0700CC60\nstatic const Vtx ttm_seg7_vertex_0700CC20[] = {\n    {{{   377,    389,    751}, 0, {  7672,  -3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -224,    389,    235}, 0, {  6470,  -4062}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -30,    389,    495}, 0, {  6856,  -3544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -282,    389,   -714}, 0, {  6352,  -5960}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700CC60 - 0x0700CCC8\nstatic const Gfx ttm_seg7_dl_0700CC60[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_0700CB60.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700CB60.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700CB90, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPLight(&ttm_seg7_lights_0700CB78.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700CB78.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700CBF0, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700CCC8 - 0x0700CD10\nstatic const Gfx ttm_seg7_dl_0700CCC8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_0700CB60.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700CB60.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700CC20, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700CD10 - 0x0700CD88\nconst Gfx ttm_seg7_dl_0700CD10[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_0700CC60),\n    gsSPDisplayList(ttm_seg7_dl_0700CCC8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/12/geo.inc.c",
    "content": "// 0x0E0008D0\nconst GeoLayout ttm_geo_0008D0[] = {\n    GEO_CULLING_RADIUS(1200),\n    GEO_OPEN_NODE(),\n        GEO_RENDER_RANGE(-2200, 8000),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, ttm_seg7_dl_0700D1D8),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/12/model.inc.c",
    "content": "// 0x0700CD88 - 0x0700CDA0\nstatic const Lights1 ttm_seg7_lights_0700CD88 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700CDA0 - 0x0700CDB8\nstatic const Lights1 ttm_seg7_lights_0700CDA0 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0x99, 0x99, 0x99, 0x28, 0x28, 0x28\n);\n\n// 0x0700CDB8 - 0x0700CDD0\nstatic const Lights1 ttm_seg7_lights_0700CDB8 = gdSPDefLights1(\n    0x5d, 0x5d, 0x5d,\n    0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28\n);\n\n// 0x0700CDD0 - 0x0700CEC0\nstatic const Vtx ttm_seg7_vertex_0700CDD0[] = {\n    {{{  -921,   -307,   -204}, 0, { 11012,  -6956}, {0xbc, 0x00, 0x6b, 0xff}}},\n    {{{   675,   -307,    811}, 0, { 14778,  -6956}, {0xbc, 0x00, 0x6b, 0xff}}},\n    {{{   675,    307,    811}, 0, { 14778,  -8184}, {0xbc, 0x00, 0x6b, 0xff}}},\n    {{{  -302,   -102,   -325}, 0, {     0,   1806}, {0x3b, 0x59, 0xbd, 0xff}}},\n    {{{   733,   -102,    592}, 0, { -2792,   1806}, {0x3b, 0x59, 0xbd, 0xff}}},\n    {{{   945,   -307,    506}, 0, { -2996,   2214}, {0x3b, 0x59, 0xbd, 0xff}}},\n    {{{  -167,   -307,   -477}, 0, {     0,   2214}, {0x3b, 0x59, 0xbd, 0xff}}},\n    {{{   810,    307,    659}, 0, {   372,   -236}, {0x5e, 0x00, 0x54, 0xff}}},\n    {{{   675,    307,    811}, 0, {     0,   -236}, {0x5e, 0x00, 0x54, 0xff}}},\n    {{{   675,   -307,    811}, 0, {     0,    990}, {0x5e, 0x00, 0x54, 0xff}}},\n    {{{   810,      0,    659}, 0, {   372,    376}, {0x5e, 0x00, 0x54, 0xff}}},\n    {{{   810,      0,    659}, 0, {   372,    376}, {0x5f, 0x00, 0x54, 0xff}}},\n    {{{   675,   -307,    811}, 0, {     0,    990}, {0x5f, 0x00, 0x54, 0xff}}},\n    {{{   945,   -307,    506}, 0, {   782,    990}, {0x5f, 0x00, 0x54, 0xff}}},\n    {{{  -921,    307,   -204}, 0, { 11012,  -8184}, {0xbc, 0x00, 0x6b, 0xff}}},\n};\n\n// 0x0700CEC0 - 0x0700CF00\nstatic const Vtx ttm_seg7_vertex_0700CEC0[] = {\n    {{{   945,   -307,    506}, 0, {  6966,    -44}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   675,   -307,    811}, 0, {  6426,    564}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -921,   -307,   -204}, 0, {  3238,  -1462}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -535,   -307,   -802}, 0, {  4008,  -2658}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0700CF00 - 0x0700D000\nstatic const Vtx ttm_seg7_vertex_0700CF00[] = {\n    {{{  -302,    307,   -325}, 0, {   372,   -236}, {0x5e, 0x00, 0x54, 0xff}}},\n    {{{  -302,   -102,   -325}, 0, {   372,    582}, {0x5e, 0x00, 0x54, 0xff}}},\n    {{{  -167,   -307,   -477}, 0, {   782,    582}, {0x5e, 0x00, 0x54, 0xff}}},\n    {{{   810,   -102,    659}, 0, { -2996,   1806}, {0x54, 0x00, 0xa1, 0xff}}},\n    {{{  -302,   -102,   -325}, 0, {     0,   1806}, {0x54, 0x00, 0xa1, 0xff}}},\n    {{{  -302,    307,   -325}, 0, {     0,    990}, {0x54, 0x00, 0xa1, 0xff}}},\n    {{{   810,    307,    659}, 0, { -2996,    990}, {0x54, 0x00, 0xa1, 0xff}}},\n    {{{  -166,    307,   -479}, 0, {     0,    990}, {0x54, 0x00, 0xa1, 0xff}}},\n    {{{  -167,   -307,   -477}, 0, {     0,   2214}, {0x54, 0x00, 0xa1, 0xff}}},\n    {{{  -535,   -307,   -802}, 0, {   948,   2214}, {0x54, 0x00, 0xa1, 0xff}}},\n    {{{  -166,    307,   -479}, 0, {     0,    990}, {0x53, 0x00, 0xa1, 0xff}}},\n    {{{  -535,   -307,   -802}, 0, {   948,   2214}, {0x53, 0x00, 0xa1, 0xff}}},\n    {{{  -535,    307,   -802}, 0, {   948,    990}, {0x53, 0x00, 0xa1, 0xff}}},\n    {{{   810,      0,    659}, 0, { -2996,   1602}, {0x0e, 0x3d, 0x92, 0xff}}},\n    {{{   945,   -307,    506}, 0, { -2996,   2214}, {0x0e, 0x3d, 0x92, 0xff}}},\n    {{{   733,   -102,    592}, 0, { -2792,   1806}, {0x0e, 0x3d, 0x92, 0xff}}},\n};\n\n// 0x0700D000 - 0x0700D030\nstatic const Vtx ttm_seg7_vertex_0700D000[] = {\n    {{{  -302,    307,   -325}, 0, {   372,   -236}, {0x5f, 0x00, 0x54, 0xff}}},\n    {{{  -167,   -307,   -477}, 0, {   782,    582}, {0x5f, 0x00, 0x54, 0xff}}},\n    {{{  -166,    307,   -479}, 0, {   782,   -236}, {0x5f, 0x00, 0x54, 0xff}}},\n};\n\n// 0x0700D030 - 0x0700D090\nstatic const Vtx ttm_seg7_vertex_0700D030[] = {\n    {{{   810,    307,    659}, 0, { 11600,  -1172}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -302,    307,   -325}, 0, {  9380,  -3138}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -921,    307,   -204}, 0, {  8144,  -2896}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -166,    307,   -479}, 0, {  9650,  -3444}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -535,    307,   -802}, 0, {  8914,  -4092}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   675,    307,    811}, 0, { 11332,   -868}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700D090 - 0x0700D180\nstatic const Gfx ttm_seg7_dl_0700D090[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_0700CD88.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700CD88.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700CDD0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPLight(&ttm_seg7_lights_0700CDA0.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700CDA0.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700CEC0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSPLight(&ttm_seg7_lights_0700CDB8.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700CDB8.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700CF00, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0700D000, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700D180 - 0x0700D1D8\nstatic const Gfx ttm_seg7_dl_0700D180[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_0700CD88.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700CD88.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700D030, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  2,  5,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700D1D8 - 0x0700D250\nconst Gfx ttm_seg7_dl_0700D1D8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_0700D090),\n    gsSPDisplayList(ttm_seg7_dl_0700D180),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/13/geo.inc.c",
    "content": "// 0x0E0008F8\nconst GeoLayout ttm_geo_0008F8[] = {\n    GEO_CULLING_RADIUS(1500),\n    GEO_OPEN_NODE(),\n        GEO_RENDER_RANGE(-2100, 8000),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, ttm_seg7_dl_0700D688),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/13/model.inc.c",
    "content": "// 0x0700D250 - 0x0700D268\nstatic const Lights1 ttm_seg7_lights_0700D250 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700D268 - 0x0700D280\nstatic const Lights1 ttm_seg7_lights_0700D268 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0x99, 0x99, 0x99, 0x28, 0x28, 0x28\n);\n\n// 0x0700D280 - 0x0700D298\nstatic const Lights1 ttm_seg7_lights_0700D280 = gdSPDefLights1(\n    0x5d, 0x5d, 0x5d,\n    0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28\n);\n\n// 0x0700D298 - 0x0700D398\nstatic const Vtx ttm_seg7_vertex_0700D298[] = {\n    {{{   -27,   -307,   -665}, 0, { -3812,   5306}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{   -27,    307,   -665}, 0, { -3812,   4080}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{  -204,   -307,     -1}, 0, { -5136,   5306}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{   637,   -307,    746}, 0, {  4784,    990}, {0x5e, 0x00, 0x54, 0xff}}},\n    {{{   637,      0,    746}, 0, {  4784,    376}, {0x5e, 0x00, 0x54, 0xff}}},\n    {{{   501,   -307,    899}, 0, {  4376,    990}, {0x5e, 0x00, 0x54, 0xff}}},\n    {{{  -204,   -307,     -1}, 0, {   786,    990}, {0x54, 0x00, 0xa1, 0xff}}},\n    {{{  -511,   -102,   -272}, 0, {     0,    582}, {0x54, 0x00, 0xa1, 0xff}}},\n    {{{   561,   -102,    678}, 0, {  2830,    582}, {0x54, 0x00, 0xa1, 0xff}}},\n    {{{   561,   -102,    678}, 0, {  2830,    582}, {0x54, 0x00, 0xa2, 0xff}}},\n    {{{   637,   -307,    746}, 0, {  3034,    990}, {0x54, 0x00, 0xa2, 0xff}}},\n    {{{  -204,   -307,     -1}, 0, {   786,    990}, {0x54, 0x00, 0xa2, 0xff}}},\n    {{{   637,      0,    746}, 0, {  3034,    376}, {0x54, 0x00, 0xa2, 0xff}}},\n    {{{  -563,   -307,  -1140}, 0, { -8102,   5306}, {0x54, 0x00, 0xa1, 0xff}}},\n    {{{  -563,    307,  -1140}, 0, { -8102,   4080}, {0x54, 0x00, 0xa1, 0xff}}},\n    {{{   -27,    307,   -665}, 0, { -9172,   4080}, {0x54, 0x00, 0xa1, 0xff}}},\n};\n\n// 0x0700D398 - 0x0700D438\nstatic const Vtx ttm_seg7_vertex_0700D398[] = {\n    {{{  -563,   -307,  -1140}, 0, { -8102,   5306}, {0x54, 0x00, 0xa1, 0xff}}},\n    {{{   -27,    307,   -665}, 0, { -9172,   4080}, {0x54, 0x00, 0xa1, 0xff}}},\n    {{{   -27,   -307,   -665}, 0, { -9172,   5306}, {0x54, 0x00, 0xa1, 0xff}}},\n    {{{   501,   -307,    899}, 0, { -2996,   2214}, {0xc5, 0x59, 0x43, 0xff}}},\n    {{{   561,   -102,    678}, 0, { -2792,   1806}, {0xc5, 0x59, 0x43, 0xff}}},\n    {{{  -511,   -102,   -273}, 0, {    68,   1806}, {0xc5, 0x59, 0x43, 0xff}}},\n    {{{   -27,    307,   -665}, 0, { -3812,   4080}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{  -204,    307,     -1}, 0, { -5136,   4080}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{  -204,   -307,     -1}, 0, { -5136,   5306}, {0x7a, 0x00, 0x20, 0xff}}},\n    {{{  -647,   -307,   -119}, 0, {    68,   2214}, {0xc5, 0x59, 0x43, 0xff}}},\n};\n\n// 0x0700D438 - 0x0700D498\nstatic const Vtx ttm_seg7_vertex_0700D438[] = {\n    {{{   501,   -307,    899}, 0, { -6934,  -9208}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -647,   -307,   -119}, 0, { -4900,  -6914}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -204,   -307,     -1}, 0, { -5136,  -7798}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -27,   -307,   -665}, 0, { -3812,  -8152}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -563,   -307,  -1140}, 0, { -2862,  -7082}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   637,   -307,    746}, 0, { -6628,  -9480}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0700D498 - 0x0700D508\nstatic const Vtx ttm_seg7_vertex_0700D498[] = {\n    {{{  -204,    307,     -1}, 0, {  -748,    990}, {0xac, 0x00, 0x5f, 0xff}}},\n    {{{  -511,    307,   -272}, 0, {    68,    990}, {0xac, 0x00, 0x5f, 0xff}}},\n    {{{  -511,   -102,   -272}, 0, {    68,   1806}, {0xac, 0x00, 0x5f, 0xff}}},\n    {{{   561,   -102,    678}, 0, { -2792,   1806}, {0x95, 0x3d, 0x1b, 0xff}}},\n    {{{   501,   -307,    899}, 0, { -2996,   2214}, {0x95, 0x3d, 0x1b, 0xff}}},\n    {{{   637,      0,    746}, 0, { -2996,   1602}, {0x95, 0x3d, 0x1b, 0xff}}},\n    {{{  -204,   -102,     -1}, 0, {  -748,   1806}, {0xac, 0x00, 0x5f, 0xff}}},\n};\n\n// 0x0700D508 - 0x0700D548\nstatic const Vtx ttm_seg7_vertex_0700D508[] = {\n    {{{  -563,    307,  -1140}, 0, {  8040,   3820}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -204,    307,     -1}, 0, {  8756,   6094}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -27,    307,   -665}, 0, {  9110,   4770}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,    307,   -272}, 0, {  8144,   5552}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700D548 - 0x0700D640\nstatic const Gfx ttm_seg7_dl_0700D548[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_0700D250.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700D250.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700D298, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0700D398, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  3,  5,  9, 0x0),\n    gsSPLight(&ttm_seg7_lights_0700D268.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700D268.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700D438, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  0,  2,  5, 0x0),\n    gsSPLight(&ttm_seg7_lights_0700D280.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700D280.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700D498, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  2,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700D640 - 0x0700D688\nstatic const Gfx ttm_seg7_dl_0700D640[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_0700D250.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700D250.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700D508, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700D688 - 0x0700D700\nconst Gfx ttm_seg7_dl_0700D688[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_0700D548),\n    gsSPDisplayList(ttm_seg7_dl_0700D640),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/14/geo.inc.c",
    "content": "// 0x0E000920\nconst GeoLayout ttm_geo_000920[] = {\n    GEO_CULLING_RADIUS(1650),\n    GEO_OPEN_NODE(),\n        GEO_RENDER_RANGE(-2650, 5500),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, ttm_seg7_dl_0700DF78),\n            GEO_OPEN_NODE(),\n            GEO_CLOSE_NODE(),\n    //! Missing close nodes. Unfortunately not exploitable\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/14/model.inc.c",
    "content": "// 0x0700D700 - 0x0700D718\nstatic const Lights1 ttm_seg7_lights_0700D700 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700D718 - 0x0700D730\nstatic const Lights1 ttm_seg7_lights_0700D718 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0x99, 0x99, 0x99, 0x28, 0x28, 0x28\n);\n\n// 0x0700D730 - 0x0700D748\nstatic const Lights1 ttm_seg7_lights_0700D730 = gdSPDefLights1(\n    0x5d, 0x5d, 0x5d,\n    0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28\n);\n\n// 0x0700D748 - 0x0700D848\nstatic const Vtx ttm_seg7_vertex_0700D748[] = {\n    {{{   717,    227,   -204}, 0, {  5282,  -7594}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,    227,   -511}, 0, {  6406,  -8208}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   717,    227,   -716}, 0, {  5282,  -8616}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   717,    227,   -716}, 0, {  5282,  -8616}, {0x12, 0x72, 0xcd, 0xff}}},\n    {{{  1280,    227,   -511}, 0, {  6406,  -8208}, {0x12, 0x72, 0xcd, 0xff}}},\n    {{{   871,    -28,  -1230}, 0, {  5590,  -9644}, {0x12, 0x72, 0xcd, 0xff}}},\n    {{{   973,    227,      0}, 0, {  5794,  -7186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   614,    126,    303}, 0, {  5078,  -6580}, {0xf9, 0x7a, 0x20, 0xff}}},\n    {{{  1015,    127,    386}, 0, {  5878,  -6416}, {0xf9, 0x7a, 0x20, 0xff}}},\n    {{{   973,    227,      0}, 0, {  5794,  -7186}, {0xf9, 0x7a, 0x20, 0xff}}},\n    {{{   614,    126,    303}, 0, {  5078,  -6580}, {0xf0, 0x7c, 0x15, 0xff}}},\n    {{{   973,    227,      0}, 0, {  5794,  -7186}, {0xf0, 0x7c, 0x15, 0xff}}},\n    {{{   717,    227,   -204}, 0, {  5282,  -7594}, {0xf0, 0x7c, 0x15, 0xff}}},\n    {{{   614,    126,    303}, 0, {  5078,  -6580}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{   681,    127,    442}, 0, {  5210,  -6304}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  1015,    127,    386}, 0, {  5878,  -6416}, {0x00, 0x7e, 0x00, 0xff}}},\n};\n\n// 0x0700D848 - 0x0700D938\nstatic const Vtx ttm_seg7_vertex_0700D848[] = {\n    {{{  -537,    182,   1246}, 0, {  2778,  -4700}, {0x34, 0x73, 0x05, 0xff}}},\n    {{{  -514,    182,   1042}, 0, {  2824,  -5106}, {0x34, 0x73, 0x05, 0xff}}},\n    {{{  -694,    275,    816}, 0, {  2464,  -5558}, {0x34, 0x73, 0x05, 0xff}}},\n    {{{  -944,    275,   1200}, 0, {  1964,  -4792}, {0x1a, 0x7b, 0x11, 0xff}}},\n    {{{  -537,    182,   1246}, 0, {  2778,  -4700}, {0x1a, 0x7b, 0x11, 0xff}}},\n    {{{  -694,    275,    816}, 0, {  2464,  -5558}, {0x1a, 0x7b, 0x11, 0xff}}},\n    {{{  -514,    182,   1042}, 0, {  2824,  -5106}, {0x06, 0x7e, 0x00, 0xff}}},\n    {{{  -537,    182,   1246}, 0, {  2778,  -4700}, {0x06, 0x7e, 0x00, 0xff}}},\n    {{{   681,    127,    442}, 0, {  5210,  -6304}, {0x06, 0x7e, 0x00, 0xff}}},\n    {{{  -514,    182,   1042}, 0, {  2824,  -5106}, {0x04, 0x7e, 0xfd, 0xff}}},\n    {{{   681,    127,    442}, 0, {  5210,  -6304}, {0x04, 0x7e, 0xfd, 0xff}}},\n    {{{   614,    126,    303}, 0, {  5078,  -6580}, {0x04, 0x7e, 0xfd, 0xff}}},\n    {{{ -1125,    275,    973}, 0, {  1604,  -5244}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -944,    275,   1200}, 0, {  1964,  -4792}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -694,    275,    816}, 0, {  2464,  -5558}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700D938 - 0x0700D9F8\nstatic const Vtx ttm_seg7_vertex_0700D938[] = {\n    {{{ -1282,    275,    545}, 0, {  1290,  -6098}, {0xfe, 0x7e, 0x00, 0xff}}},\n    {{{ -1125,    275,    973}, 0, {  1604,  -5244}, {0xfe, 0x7e, 0x00, 0xff}}},\n    {{{  -875,    284,    336}, 0, {  2102,  -6516}, {0xfe, 0x7e, 0x00, 0xff}}},\n    {{{  1015,   -180,    386}, 0, {  -286,   1978}, {0x7e, 0x00, 0xf3, 0xff}}},\n    {{{   973,    227,      0}, 0, {  1302,    990}, {0x7e, 0x00, 0xf3, 0xff}}},\n    {{{  1015,    127,    386}, 0, {     0,    990}, {0x7e, 0x00, 0xf3, 0xff}}},\n    {{{   637,    -77,    350}, 0, {  -294,    348}, {0x87, 0xec, 0xe4, 0xff}}},\n    {{{   614,    126,    303}, 0, {     0,    990}, {0x87, 0xec, 0xe4, 0xff}}},\n    {{{   717,    227,   -204}, 0, {  1726,    990}, {0x87, 0xec, 0xe4, 0xff}}},\n    {{{   637,    -77,    350}, 0, {  -294,    348}, {0x83, 0x00, 0xee, 0xff}}},\n    {{{   717,    227,   -204}, 0, {  1726,    990}, {0x83, 0x00, 0xee, 0xff}}},\n    {{{   717,   -284,   -204}, 0, {  1400,   -682}, {0x83, 0x00, 0xee, 0xff}}},\n};\n\n// 0x0700D9F8 - 0x0700DAE8\nstatic const Vtx ttm_seg7_vertex_0700D9F8[] = {\n    {{{  -694,    275,    816}, 0, {  2142,  -6010}, {0x61, 0xaf, 0x0b, 0xff}}},\n    {{{  -921,     28,    996}, 0, {  2116,  -5516}, {0x61, 0xaf, 0x0b, 0xff}}},\n    {{{  -875,     28,    592}, 0, {  2732,  -5538}, {0x61, 0xaf, 0x0b, 0xff}}},\n    {{{  -875,     28,    592}, 0, {  2732,  -5538}, {0x6f, 0xd6, 0xd6, 0xff}}},\n    {{{  -875,    284,    336}, 0, {  3136,  -6062}, {0x6f, 0xd6, 0xd6, 0xff}}},\n    {{{  -694,    275,    816}, 0, {  2142,  -6010}, {0x6f, 0xd6, 0xd6, 0xff}}},\n    {{{  -921,     28,    996}, 0, {     0,    990}, {0xd5, 0xb2, 0x59, 0xff}}},\n    {{{  -526,    -21,   1145}, 0, {  1384,    990}, {0xd5, 0xb2, 0x59, 0xff}}},\n    {{{  -944,    275,   1200}, 0, {    36,    -48}, {0xd5, 0xb2, 0x59, 0xff}}},\n    {{{  -944,    275,   1200}, 0, {    36,    -48}, {0xe7, 0xc8, 0x6e, 0xff}}},\n    {{{  -526,    -21,   1145}, 0, {  1384,    990}, {0xe7, 0xc8, 0x6e, 0xff}}},\n    {{{  -537,    182,   1246}, 0, {  1384,    232}, {0xe7, 0xc8, 0x6e, 0xff}}},\n    {{{  1280,    227,   -511}, 0, {    32,   -648}, {0x51, 0xa0, 0xf5, 0xff}}},\n    {{{   717,   -284,   -204}, 0, {     0,    990}, {0x51, 0xa0, 0xf5, 0xff}}},\n    {{{   871,    -28,  -1230}, 0, {  1712,   -240}, {0x51, 0xa0, 0xf5, 0xff}}},\n};\n\n// 0x0700DAE8 - 0x0700DBD8\nstatic const Vtx ttm_seg7_vertex_0700DAE8[] = {\n    {{{   717,   -284,   -204}, 0, {  1956,    990}, {0x5b, 0xbc, 0x37, 0xff}}},\n    {{{  1280,    227,   -511}, 0, {  2566,  -1672}, {0x5b, 0xbc, 0x37, 0xff}}},\n    {{{   973,    227,      0}, 0, {   848,   -692}, {0x5b, 0xbc, 0x37, 0xff}}},\n    {{{  -526,    -21,   1145}, 0, {   408,   -356}, {0x17, 0xaa, 0xa7, 0xff}}},\n    {{{  -921,     28,    996}, 0, {     0,    990}, {0x17, 0xaa, 0xa7, 0xff}}},\n    {{{  -694,    275,    816}, 0, {  1234,    990}, {0x17, 0xaa, 0xa7, 0xff}}},\n    {{{  -921,     28,    996}, 0, {     0,    990}, {0xab, 0xc0, 0x44, 0xff}}},\n    {{{  -944,    275,   1200}, 0, {  -106,    314}, {0xab, 0xc0, 0x44, 0xff}}},\n    {{{ -1125,    275,    973}, 0, {  -706,   1064}, {0xab, 0xc0, 0x44, 0xff}}},\n    {{{  -921,     28,    996}, 0, {     0,    990}, {0xa1, 0xb5, 0x23, 0xff}}},\n    {{{ -1125,    275,    973}, 0, {  -706,   1064}, {0xa1, 0xb5, 0x23, 0xff}}},\n    {{{ -1282,    275,    545}, 0, { -1230,   2488}, {0xa1, 0xb5, 0x23, 0xff}}},\n    {{{  -694,    275,    816}, 0, {     0,    990}, {0x51, 0xd1, 0xac, 0xff}}},\n    {{{  -514,    182,   1042}, 0, {   980,    990}, {0x51, 0xd1, 0xac, 0xff}}},\n    {{{  -526,    -21,   1145}, 0, {  1420,    368}, {0x51, 0xd1, 0xac, 0xff}}},\n};\n\n// 0x0700DBD8 - 0x0700DCC8\nstatic const Vtx ttm_seg7_vertex_0700DBD8[] = {\n    {{{   614,    126,    303}, 0, {  4462,    990}, {0xbc, 0xe1, 0x9a, 0xff}}},\n    {{{   637,    -77,    350}, 0, {  4466,    288}, {0xbc, 0xe1, 0x9a, 0xff}}},\n    {{{  -514,    182,   1042}, 0, {     0,    990}, {0xbc, 0xe1, 0x9a, 0xff}}},\n    {{{   637,    -77,    350}, 0, {  4466,    288}, {0xbc, 0xd3, 0xa0, 0xff}}},\n    {{{  -526,    -21,   1145}, 0, {  -222,    258}, {0xbc, 0xd3, 0xa0, 0xff}}},\n    {{{  -514,    182,   1042}, 0, {     0,    990}, {0xbc, 0xd3, 0xa0, 0xff}}},\n    {{{  -526,    -21,   1145}, 0, {     0,    990}, {0x3f, 0xd2, 0x63, 0xff}}},\n    {{{   681,    127,    442}, 0, {  4582,    232}, {0x3f, 0xd2, 0x63, 0xff}}},\n    {{{  -537,    182,   1246}, 0, {  -278,    276}, {0x3f, 0xd2, 0x63, 0xff}}},\n    {{{   973,    227,      0}, 0, {     0,   2896}, {0xf1, 0xa9, 0xa6, 0xff}}},\n    {{{  1015,   -180,    386}, 0, {  1186,   1472}, {0xf1, 0xa9, 0xa6, 0xff}}},\n    {{{   637,    -77,    350}, 0, {     0,    990}, {0xf1, 0xa9, 0xa6, 0xff}}},\n    {{{   717,   -284,   -204}, 0, {  1956,    990}, {0x64, 0xbe, 0x27, 0xff}}},\n    {{{   973,    227,      0}, 0, {   848,   -692}, {0x64, 0xbe, 0x27, 0xff}}},\n    {{{   637,    -77,    350}, 0, {     0,    990}, {0x64, 0xbe, 0x27, 0xff}}},\n};\n\n// 0x0700DCC8 - 0x0700DD28\nstatic const Vtx ttm_seg7_vertex_0700DCC8[] = {\n    {{{  -921,     28,    996}, 0, {     0,    990}, {0xbf, 0x94, 0xf9, 0xff}}},\n    {{{ -1282,    275,    545}, 0, { -1230,   2488}, {0xbf, 0x94, 0xf9, 0xff}}},\n    {{{  -875,     28,    592}, 0, {   120,   2334}, {0xbf, 0x94, 0xf9, 0xff}}},\n    {{{  -526,    -21,   1145}, 0, {     0,    990}, {0x3e, 0xc8, 0x5f, 0xff}}},\n    {{{   637,    -77,    350}, 0, {  4660,    990}, {0x3e, 0xc8, 0x5f, 0xff}}},\n    {{{   681,    127,    442}, 0, {  4582,    232}, {0x3e, 0xc8, 0x5f, 0xff}}},\n};\n\n// 0x0700DD28 - 0x0700DD88\nstatic const Vtx ttm_seg7_vertex_0700DD28[] = {\n    {{{   681,    127,    442}, 0, {  4582,    232}, {0xe9, 0xd2, 0x73, 0xff}}},\n    {{{   637,    -77,    350}, 0, {  4660,    990}, {0xe9, 0xd2, 0x73, 0xff}}},\n    {{{  1015,   -180,    386}, 0, {  5644,    902}, {0xe9, 0xd2, 0x73, 0xff}}},\n    {{{  1015,   -180,    386}, 0, {  5644,    902}, {0x15, 0x00, 0x7d, 0xff}}},\n    {{{  1015,    127,    386}, 0, {  5604,    -14}, {0x15, 0x00, 0x7d, 0xff}}},\n    {{{   681,    127,    442}, 0, {  4582,    232}, {0x15, 0x00, 0x7d, 0xff}}},\n};\n\n// 0x0700DD88 - 0x0700DDB8\nstatic const Vtx ttm_seg7_vertex_0700DD88[] = {\n    {{{ -1125,    275,    973}, 0, {  1604,  -5244}, {0x00, 0x7e, 0x02, 0xff}}},\n    {{{  -694,    275,    816}, 0, {  2464,  -5558}, {0x00, 0x7e, 0x02, 0xff}}},\n    {{{  -875,    284,    336}, 0, {  2102,  -6516}, {0x00, 0x7e, 0x02, 0xff}}},\n};\n\n// 0x0700DDB8 - 0x0700DF78\nstatic const Gfx ttm_seg7_dl_0700DDB8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_0700D700.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700D700.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700D748, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0700D848, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0700D938, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPLight(&ttm_seg7_lights_0700D718.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700D718.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700D9F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0700DAE8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0700DBD8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0700DCC8, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPLight(&ttm_seg7_lights_0700D730.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700D730.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700DD28, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPLight(&ttm_seg7_lights_0700D700.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700D700.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700DD88, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700DF78 - 0x0700DFE8\nconst Gfx ttm_seg7_dl_0700DF78[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_0700DDB8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/15/geo.inc.c",
    "content": "// 0x0E000948\nconst GeoLayout ttm_geo_000948[] = {\n    GEO_CULLING_RADIUS(350),\n    GEO_OPEN_NODE(),\n        GEO_RENDER_RANGE(-1350, 3000),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, ttm_seg7_dl_0700E308),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/15/model.inc.c",
    "content": "// 0x0700DFE8 - 0x0700E000\nstatic const Lights1 ttm_seg7_lights_0700DFE8 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0x99, 0x99, 0x99, 0x28, 0x28, 0x28\n);\n\n// 0x0700E000 - 0x0700E100\nstatic const Vtx ttm_seg7_vertex_0700E000[] = {\n    {{{   -43,     93,   -191}, 0, {     0,    376}, {0xb0, 0xa7, 0x28, 0xff}}},\n    {{{    48,     -9,   -237}, 0, {     0,    582}, {0xb0, 0xa7, 0x28, 0xff}}},\n    {{{   231,     -9,    127}, 0, {   782,    582}, {0xb0, 0xa7, 0x28, 0xff}}},\n    {{{  -317,   -213,    -54}, 0, {     0,    990}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  -317,     -9,    -54}, 0, {     0,    582}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  -130,     -9,    319}, 0, {   802,    582}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  -130,   -213,    319}, 0, {   802,    990}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  -130,     -9,    319}, 0, {   802,    582}, {0x50, 0xa7, 0xd8, 0xff}}},\n    {{{  -317,     -9,    -54}, 0, {     0,    582}, {0x50, 0xa7, 0xd8, 0xff}}},\n    {{{  -226,     93,   -100}, 0, {     0,    376}, {0x50, 0xa7, 0xd8, 0xff}}},\n    {{{  -130,     -9,    319}, 0, {   802,    582}, {0x5a, 0xb1, 0xd8, 0xff}}},\n    {{{  -226,     93,   -100}, 0, {     0,    376}, {0x5a, 0xb1, 0xd8, 0xff}}},\n    {{{     9,    215,    185}, 0, {   688,    132}, {0x5a, 0xb1, 0xd8, 0xff}}},\n    {{{     9,    215,    185}, 0, {   134,    230}, {0x12, 0x88, 0x24, 0xff}}},\n    {{{  -226,     93,   -100}, 0, {     0,    990}, {0x12, 0x88, 0x24, 0xff}}},\n    {{{   -43,     93,   -191}, 0, {   376,    990}, {0x12, 0x88, 0x24, 0xff}}},\n};\n\n// 0x0700E100 - 0x0700E200\nstatic const Vtx ttm_seg7_vertex_0700E100[] = {\n    {{{     9,    215,    185}, 0, {   688,    132}, {0xb0, 0xa7, 0x28, 0xff}}},\n    {{{   -43,     93,   -191}, 0, {     0,    376}, {0xb0, 0xa7, 0x28, 0xff}}},\n    {{{   231,     -9,    127}, 0, {   782,    582}, {0xb0, 0xa7, 0x28, 0xff}}},\n    {{{  -317,     -9,    -54}, 0, {  6732,  -5344}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{    48,   -213,   -237}, 0, {  7510,  -4898}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{    48,     -9,   -237}, 0, {  7530,  -5306}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{   231,     -9,    127}, 0, {   782,    582}, {0x8f, 0x00, 0x39, 0xff}}},\n    {{{    48,     -9,   -237}, 0, {     0,    582}, {0x8f, 0x00, 0x39, 0xff}}},\n    {{{    48,   -213,   -237}, 0, {     0,    990}, {0x8f, 0x00, 0x39, 0xff}}},\n    {{{   231,   -213,    127}, 0, {   782,    990}, {0x8f, 0x00, 0x39, 0xff}}},\n    {{{   231,   -213,    127}, 0, {  3290,  -7342}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    48,   -213,   -237}, 0, {  2926,  -8070}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     9,   -213,    185}, 0, {  2848,  -7226}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -317,   -213,    -54}, 0, {  2194,  -7704}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -130,   -213,    319}, 0, {  2568,  -6958}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -317,   -213,    -54}, 0, {  6712,  -4936}, {0x38, 0x00, 0x71, 0xff}}},\n};\n\n// 0x0700E200 - 0x0700E240\nstatic const Vtx ttm_seg7_vertex_0700E200[] = {\n    {{{  -317,     -9,    -54}, 0, {  6732,  -5344}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{    48,     -9,   -237}, 0, {  7530,  -5306}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{   -43,     93,   -191}, 0, {  7340,  -5520}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  -226,     93,   -100}, 0, {  6942,  -5538}, {0x38, 0x00, 0x71, 0xff}}},\n};\n\n// 0x0700E240 - 0x0700E308\nstatic const Gfx ttm_seg7_dl_0700E240[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_0700DFE8.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700DFE8.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700E000, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0700E100, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 12, 0x0),\n    gsSP2Triangles(11, 13, 12, 0x0,  3, 15,  4, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0700E200, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700E308 - 0x0700E378\nconst Gfx ttm_seg7_dl_0700E308[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_0700E240),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/16/1.inc.c",
    "content": "// 0x0700E378 - 0x0700E390\nstatic const Lights1 ttm_seg7_lights_0700E378 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700E390 - 0x0700E3A8\nstatic const Lights1 ttm_seg7_lights_0700E390 = gdSPDefLights1(\n    0x5d, 0x5d, 0x5d,\n    0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28\n);\n\n// 0x0700E3A8 - 0x0700E3C0\nstatic const Lights1 ttm_seg7_lights_0700E3A8 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x0700E3C0 - 0x0700E4B0\nstatic const Vtx ttm_seg7_vertex_0700E3C0[] = {\n    {{{  1741,   -812,   1126}, 0, {  4260,  -7594}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2253,   -812,   1126}, 0, {  5282,  -7594}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2253,   -812,    614}, 0, {  5282,  -8616}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   578,   -127,   1027}, 0, {   334,   -770}, {0x1a, 0x3c, 0x6c, 0xff}}},\n    {{{  1033,   -838,   1311}, 0, {   958,    874}, {0x1a, 0x3c, 0x6c, 0xff}}},\n    {{{  1741,   -812,   1126}, 0, {  2382,    990}, {0x1a, 0x3c, 0x6c, 0xff}}},\n    {{{   578,   -127,   1027}, 0, {   334,   -770}, {0x2a, 0x54, 0x54, 0xff}}},\n    {{{  1741,   -812,   1126}, 0, {  2382,    990}, {0x2a, 0x54, 0x54, 0xff}}},\n    {{{  1229,    -44,    614}, 0, {  1854,  -1050}, {0x2a, 0x54, 0x54, 0xff}}},\n    {{{  1558,   -812,  -1907}, 0, {     0,    990}, {0xe1, 0x65, 0xbb, 0xff}}},\n    {{{  -488,  -1129,  -1430}, 0, {  4206,    826}, {0xe1, 0x65, 0xbb, 0xff}}},\n    {{{   563,   -454,   -921}, 0, {  2172,   -734}, {0xe1, 0x65, 0xbb, 0xff}}},\n    {{{  -488,  -1129,  -1430}, 0, {  4206,    826}, {0x05, 0x46, 0x97, 0xff}}},\n    {{{   205,    -44,   -665}, 0, {  2810,  -1736}, {0x05, 0x46, 0x97, 0xff}}},\n    {{{   563,   -454,   -921}, 0, {  2172,   -734}, {0x05, 0x46, 0x97, 0xff}}},\n};\n\n// 0x0700E4B0 - 0x0700E590\nstatic const Vtx ttm_seg7_vertex_0700E4B0[] = {\n    {{{  -818,   1235,    102}, 0, {  4606,  -4824}, {0x02, 0x42, 0x94, 0xff}}},\n    {{{   205,    -44,   -665}, 0, {  2810,  -1736}, {0x02, 0x42, 0x94, 0xff}}},\n    {{{  -476,  -1233,  -1415}, 0, {  4230,    990}, {0x02, 0x42, 0x94, 0xff}}},\n    {{{  1741,   -812,   1126}, 0, {  4260,  -7594}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2253,   -812,    614}, 0, {  5282,  -8616}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1997,   -812,   -665}, 0, {  4772, -11172}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2355,   -812,   -409}, 0, {  5486, -10660}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2355,   -812,  -1433}, 0, {  5486, -12704}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1842,   -812,    102}, 0, {     0,    990}, {0xde, 0x11, 0x78, 0xff}}},\n    {{{  -562,    -44,    358}, 0, {  2564,     -6}, {0xde, 0x11, 0x78, 0xff}}},\n    {{{  -818,   1235,    102}, 0, {  3128,  -2312}, {0xde, 0x11, 0x78, 0xff}}},\n    {{{  -562,    -44,    358}, 0, {  2564,     -6}, {0x61, 0x22, 0x49, 0xff}}},\n    {{{   205,    -44,   -665}, 0, {  4596,    990}, {0x61, 0x22, 0x49, 0xff}}},\n    {{{  -818,   1235,    102}, 0, {  3128,  -2312}, {0x61, 0x22, 0x49, 0xff}}},\n};\n\n// 0x0700E590 - 0x0700E680\nstatic const Vtx ttm_seg7_vertex_0700E590[] = {\n    {{{  -562,    -44,    358}, 0, {  2434,   -758}, {0xbd, 0x5f, 0x32, 0xff}}},\n    {{{ -1842,   -812,    102}, 0, {     0,    990}, {0xbd, 0x5f, 0x32, 0xff}}},\n    {{{   205,    -44,   1382}, 0, {  4818,   -234}, {0xbd, 0x5f, 0x32, 0xff}}},\n    {{{ -1842,   -812,    102}, 0, {     0,    990}, {0xbd, 0x00, 0x6b, 0xff}}},\n    {{{   660,   -755,   1667}, 0, {  5862,    990}, {0xbd, 0x00, 0x6b, 0xff}}},\n    {{{   205,    -44,   1382}, 0, {  4818,   -234}, {0xbd, 0x00, 0x6b, 0xff}}},\n    {{{   660,   -755,   1667}, 0, {  2102,  -6516}, {0xff, 0x7e, 0xff, 0xff}}},\n    {{{ -1842,   -812,    102}, 0, { -2892,  -9638}, {0xff, 0x7e, 0xff, 0xff}}},\n    {{{ -2354,   -812,    614}, 0, { -3914,  -8616}, {0xff, 0x7e, 0xff, 0xff}}},\n    {{{  1997,   -812,   -665}, 0, {  3582,    990}, {0x64, 0x4c, 0x0e, 0xff}}},\n    {{{  1229,    -44,    614}, 0, {   836,   -930}, {0x64, 0x4c, 0x0e, 0xff}}},\n    {{{  1741,   -812,   1126}, 0, {     0,    990}, {0x64, 0x4c, 0x0e, 0xff}}},\n    {{{   253,   -764,   1877}, 0, {  1290,  -6098}, {0xfe, 0x7e, 0x00, 0xff}}},\n    {{{   660,   -755,   1667}, 0, {  2102,  -6516}, {0xfe, 0x7e, 0x00, 0xff}}},\n    {{{ -2354,   -812,    614}, 0, { -3914,  -8616}, {0xfe, 0x7e, 0x00, 0xff}}},\n};\n\n// 0x0700E680 - 0x0700E6E0\nstatic const Vtx ttm_seg7_vertex_0700E680[] = {\n    {{{  -488,  -1129,  -1430}, 0, {  1552,    786}, {0xa2, 0x01, 0x54, 0xff}}},\n    {{{  -476,  -1233,  -1415}, 0, {  1604,    990}, {0xa2, 0x01, 0x54, 0xff}}},\n    {{{   205,    -44,   -665}, 0, {  3474,  -1504}, {0xa2, 0x01, 0x54, 0xff}}},\n    {{{  -476,  -1233,  -1415}, 0, {     0,    990}, {0xad, 0x29, 0xaa, 0xff}}},\n    {{{ -1842,   -812,    102}, 0, {  4116,    642}, {0xad, 0x29, 0xaa, 0xff}}},\n    {{{  -818,   1235,    102}, 0, {  3228,  -3582}, {0xad, 0x29, 0xaa, 0xff}}},\n};\n\n// 0x0700E6E0 - 0x0700E720\nstatic const Vtx ttm_seg7_vertex_0700E6E0[] = {\n    {{{   660,   -755,   1667}, 0, {     0,    990}, {0x4e, 0x4c, 0x40, 0xff}}},\n    {{{  1033,   -838,   1311}, 0, {   958,    874}, {0x4e, 0x4c, 0x40, 0xff}}},\n    {{{   578,   -127,   1027}, 0, {   334,   -770}, {0x4e, 0x4c, 0x40, 0xff}}},\n    {{{   205,    -44,   1382}, 0, {  -654,   -654}, {0x4e, 0x4c, 0x40, 0xff}}},\n};\n\n// 0x0700E720 - 0x0700E820\nstatic const Vtx ttm_seg7_vertex_0700E720[] = {\n    {{{  -562,    -44,    358}, 0, {  4568, -10562}, {0xff, 0x7e, 0x01, 0xff}}},\n    {{{   205,    -44,   1382}, 0, {  6100,  -8518}, {0xff, 0x7e, 0x01, 0xff}}},\n    {{{   578,    -34,   1027}, 0, {  6846,  -9228}, {0xff, 0x7e, 0x01, 0xff}}},\n    {{{  2355,   -812,  -1433}, 0, { 10392, -14138}, {0x10, 0x7a, 0xe5, 0xff}}},\n    {{{   563,   -454,   -921}, 0, {  6816, -13116}, {0x10, 0x7a, 0xe5, 0xff}}},\n    {{{  1139,   -423,   -438}, 0, {  7966, -12154}, {0x10, 0x7a, 0xe5, 0xff}}},\n    {{{  2355,   -812,  -1433}, 0, { 10392, -14138}, {0x39, 0x6e, 0x1a, 0xff}}},\n    {{{  1139,   -423,   -438}, 0, {  7966, -12154}, {0x39, 0x6e, 0x1a, 0xff}}},\n    {{{  1997,   -812,   -665}, 0, {  9678, -12606}, {0x39, 0x6e, 0x1a, 0xff}}},\n    {{{  1558,   -812,  -1907}, 0, {  8800, -15086}, {0x10, 0x7a, 0xe5, 0xff}}},\n    {{{  1139,   -423,   -438}, 0, {  7966, -12154}, {0x35, 0x5a, 0xba, 0xff}}},\n    {{{   563,   -454,   -921}, 0, {  6816, -13116}, {0x35, 0x5a, 0xba, 0xff}}},\n    {{{   205,    -44,   -665}, 0, {  6100, -12606}, {0x35, 0x5a, 0xba, 0xff}}},\n    {{{  1997,   -812,   -665}, 0, {  9678, -12606}, {0x27, 0x70, 0xd5, 0xff}}},\n    {{{  1139,   -423,   -438}, 0, {  7966, -12154}, {0x27, 0x70, 0xd5, 0xff}}},\n    {{{  1229,    -44,    614}, 0, {  8144, -10050}, {0x27, 0x70, 0xd5, 0xff}}},\n};\n\n// 0x0700E820 - 0x0700E8B0\nstatic const Vtx ttm_seg7_vertex_0700E820[] = {\n    {{{  1229,    -44,    614}, 0, {  8144, -10050}, {0x35, 0x6a, 0xd5, 0xff}}},\n    {{{  1139,   -423,   -438}, 0, {  7966, -12154}, {0x35, 0x6a, 0xd5, 0xff}}},\n    {{{   205,    -44,   -665}, 0, {  6100, -12606}, {0x35, 0x6a, 0xd5, 0xff}}},\n    {{{  -562,    -44,    358}, 0, {  4568, -10562}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{   578,    -34,   1027}, 0, {  6846,  -9228}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{   205,    -44,   -665}, 0, {  6100, -12606}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{   578,    -34,   1027}, 0, {  6846,  -9228}, {0x01, 0x7e, 0xff, 0xff}}},\n    {{{  1229,    -44,    614}, 0, {  8144, -10050}, {0x01, 0x7e, 0xff, 0xff}}},\n    {{{   205,    -44,   -665}, 0, {  6100, -12606}, {0x01, 0x7e, 0xff, 0xff}}},\n};\n\n// 0x0700E8B0 - 0x0700E910\nstatic const Vtx ttm_seg7_vertex_0700E8B0[] = {\n    {{{   578,    -34,   1027}, 0, {  6846,  -9228}, {0x44, 0x00, 0x6b, 0xff}}},\n    {{{   578,   -127,   1027}, 0, {  6846,  -9228}, {0x44, 0x00, 0x6b, 0xff}}},\n    {{{  1229,    -44,    614}, 0, {  8144, -10050}, {0x44, 0x00, 0x6b, 0xff}}},\n    {{{   578,   -127,   1027}, 0, {  6846,  -9228}, {0x57, 0x00, 0x5b, 0xff}}},\n    {{{   578,    -34,   1027}, 0, {  6846,  -9228}, {0x57, 0x00, 0x5b, 0xff}}},\n    {{{   205,    -44,   1382}, 0, {  6100,  -8518}, {0x57, 0x00, 0x5b, 0xff}}},\n};\n\n// 0x0700E910 - 0x0700EA28\nstatic const Gfx ttm_seg7_dl_0700E910[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_0700E378.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700E378.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700E3C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0700E4B0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  6,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0700E590, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPLight(&ttm_seg7_lights_0700E390.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700E390.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700E680, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPLight(&ttm_seg7_lights_0700E378.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700E378.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700E6E0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700EA28 - 0x0700EAC8\nstatic const Gfx ttm_seg7_dl_0700EA28[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttm_seg7_vertex_0700E720, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  4,  3,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0700E820, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  7,  8, 0x0),\n    gsSPLight(&ttm_seg7_lights_0700E3A8.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700E3A8.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700E8B0, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700EAC8 - 0x0700EB40\nconst Gfx ttm_seg7_dl_0700EAC8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_0700E910),\n    gsSPDisplayList(ttm_seg7_dl_0700EA28),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/16/2.inc.c",
    "content": "// 0x0700EB40 - 0x0700EC00\nstatic const Vtx ttm_seg7_vertex_0700EB40[] = {\n    {{{   205,     57,   1382}, 0, {  -720,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   578,    -34,   1027}, 0, {  4404,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   578,     67,   1027}, 0, {  4424,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   205,    -44,   1382}, 0, {  -740,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   578,    -34,   1027}, 0, {  -246,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1229,     57,    614}, 0, {  7428,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   578,     67,   1027}, 0, {  -258,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1229,    -44,    614}, 0, {  7442,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -562,    -44,    358}, 0, {  -262,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   205,     57,   1382}, 0, { 12512,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -580,     57,    335}, 0, {  -560,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   205,    -44,   1382}, 0, { 12512,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700EC00 - 0x0700EC58\nstatic const Gfx ttm_seg7_dl_0700EC00[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttm_seg7_vertex_0700EB40, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700EC58 - 0x0700ECC8\nconst Gfx ttm_seg7_dl_0700EC58[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_0700EC00),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/16/geo.inc.c",
    "content": "// 0x0E000970\nconst GeoLayout ttm_geo_000970[] = {\n    GEO_CULLING_RADIUS(3200),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, ttm_seg7_dl_0700EAC8),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, ttm_seg7_dl_0700EC58),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/17/1.inc.c",
    "content": "// 0x0700ECC8 - 0x0700ED98\nstatic const Vtx ttm_seg7_vertex_0700ECC8[] = {\n    {{{   262,    151,   -248}, 0, { -1684,    960}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     9,    151,   -286}, 0, {  -770,  -1426}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     8,    202,   -479}, 0, { -2444,  -2382}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   474,    202,   -408}, 0, { -4118,   2010}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -23,    130,     -3}, 0, {   828,   -280}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    -2,    151,    192}, 0, {  2428,    866}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    18,    202,    388}, 0, {  4028,   2010}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -256,    151,    154}, 0, {  3342,  -1520}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -488,    202,    312}, 0, {  5854,  -2760}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   474,    222,   -408}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -488,    222,    312}, 0, {  3778,   4994}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    18,    222,    388}, 0, {  3776,   2438}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     8,    222,   -479}, 0, {     0,   3338}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700ED98 - 0x0700EE88\nstatic const Vtx ttm_seg7_vertex_0700ED98[] = {\n    {{{    -2,    253,    192}, 0, {  -730,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    -2,     99,    192}, 0, {  -730,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   262,     99,   -248}, 0, {  2012,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   474,    151,   -408}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     8,    253,   -479}, 0, {  4670,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   474,    253,   -408}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     8,    151,   -479}, 0, {  4670,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     8,    253,   -479}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -488,    151,    312}, 0, {  8278,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -488,    253,    312}, 0, {  8278,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     8,    151,   -479}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    18,    253,    388}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   474,    151,   -408}, 0, {  8116,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   474,    253,   -408}, 0, {  8116,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    18,    151,    388}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700EE88 - 0x0700EF78\nstatic const Vtx ttm_seg7_vertex_0700EE88[] = {\n    {{{  -254,    253,    152}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -254,     99,    152}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    -2,     99,    192}, 0, {  1664,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    -2,    253,    192}, 0, {  -730,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   262,     99,   -248}, 0, {  2012,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   262,    253,   -248}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     9,    253,   -286}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -254,     99,    152}, 0, {  2694,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -254,    253,    152}, 0, {  2694,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     9,     99,   -286}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   262,    253,   -248}, 0, {   308,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   262,     99,   -248}, 0, {   308,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     9,     99,   -286}, 0, {  2012,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     9,    253,   -286}, 0, {  2012,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    -2,    253,    192}, 0, {  1664,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700EF78 - 0x0700F068\nstatic const Vtx ttm_seg7_vertex_0700EF78[] = {\n    {{{    -2,     99,    192}, 0, {     0,   2010}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    18,     99,    388}, 0, {  1280,   2010}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    18,    253,    388}, 0, {  1280,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   474,     99,   -408}, 0, {  -776,   2010}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   262,     99,   -248}, 0, {   990,   2010}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   474,    253,   -408}, 0, {  -776,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   262,    253,   -248}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     8,    253,   -479}, 0, { -1314,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     8,     99,   -479}, 0, { -1314,   2010}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     9,    253,   -286}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{     9,     99,   -286}, 0, {     0,   2010}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -254,    253,    152}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -254,     99,    152}, 0, {     0,   2010}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -488,     99,    312}, 0, {  1852,   2010}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -488,    253,    312}, 0, {  1852,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700F068 - 0x0700F0D8\nstatic const Vtx ttm_seg7_vertex_0700F068[] = {\n    {{{  -488,    253,    312}, 0, {    16,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -488,    151,    312}, 0, {    16,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    18,    151,    388}, 0, {  5126,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    -2,    253,    192}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    -2,     99,    192}, 0, {     0,   2010}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    18,    253,    388}, 0, {  1280,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    18,    253,    388}, 0, {  5126,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700F0D8 - 0x0700F170\nstatic const Gfx ttm_seg7_dl_0700F0D8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ttm_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttm_seg7_vertex_0700ECC8, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  0,  5,  4, 0x0),\n    gsSP2Triangles( 0,  6,  5, 0x0,  0,  3,  6, 0x0),\n    gsSP2Triangles( 7,  5,  6, 0x0,  7,  4,  5, 0x0),\n    gsSP2Triangles( 1,  4,  7, 0x0,  7,  6,  8, 0x0),\n    gsSP2Triangles( 1,  7,  8, 0x0,  1,  8,  2, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 12, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700F170 - 0x0700F270\nstatic const Gfx ttm_seg7_dl_0700F170[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_0900A000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttm_seg7_vertex_0700ED98, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0700EE88, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0700EF78, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0700F068, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  2,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700F270 - 0x0700F300\nconst Gfx ttm_seg7_dl_0700F270[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_0700F0D8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_0700F170),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/17/2.inc.c",
    "content": "// 0x0700F300 - 0x0700F318\nstatic const Lights1 ttm_seg7_lights_0700F300 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700F318 - 0x0700F418\nstatic const Vtx ttm_seg7_vertex_0700F318[] = {\n    {{{   515,    202,   -402}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   474,    202,   -408}, 0, {   258,    700}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   491,    202,   -385}, 0, {     0,    700}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -31,    202,   -485}, 0, {   258,   1278}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     8,    202,   -479}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    -8,    202,   -502}, 0, {     0,   1278}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -14,    202,   -462}, 0, {   258,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    18,    202,    388}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -22,    202,    382}, 0, {   376,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -28,    202,    422}, 0, {   376,    582}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    12,    202,    429}, 0, {     0,    582}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -488,    202,    312}, 0, {   376,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -453,    202,    359}, 0, {     0,    582}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -447,    202,    318}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -494,    202,    352}, 0, {   376,    582}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   497,    202,   -426}, 0, {   258,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700F418 - 0x0700F508\nstatic const Vtx ttm_seg7_vertex_0700F418[] = {\n    {{{   -14,   -250,   -462}, 0, {  3982,    700}, {0x9a, 0x00, 0x4b, 0xff}}},\n    {{{   -31,    202,   -485}, 0, {     0,    990}, {0x9a, 0x00, 0x4b, 0xff}}},\n    {{{   -31,   -252,   -485}, 0, {  4002,    990}, {0x9a, 0x00, 0x4b, 0xff}}},\n    {{{   -31,   -252,   -485}, 0, {  4002,    700}, {0xb5, 0x00, 0x9a, 0xff}}},\n    {{{   -31,    202,   -485}, 0, {     0,    700}, {0xb5, 0x00, 0x9a, 0xff}}},\n    {{{    -8,    202,   -502}, 0, {     0,    990}, {0xb5, 0x00, 0x9a, 0xff}}},\n    {{{    -8,   -248,   -502}, 0, {  3970,    990}, {0xb5, 0x00, 0x9a, 0xff}}},\n    {{{    -8,   -248,   -502}, 0, {  3970,    700}, {0x68, 0x00, 0xb8, 0xff}}},\n    {{{    -8,    202,   -502}, 0, {     0,    700}, {0x68, 0x00, 0xb8, 0xff}}},\n    {{{     8,    202,   -479}, 0, {     0,    990}, {0x68, 0x00, 0xb8, 0xff}}},\n    {{{     8,   -246,   -479}, 0, {  3950,    990}, {0x68, 0x00, 0xb8, 0xff}}},\n    {{{     8,   -246,   -479}, 0, {  3950,    700}, {0x4d, 0x00, 0x64, 0xff}}},\n    {{{   -14,    202,   -462}, 0, {     0,    990}, {0x4d, 0x00, 0x64, 0xff}}},\n    {{{   -14,   -250,   -462}, 0, {  3982,    990}, {0x4d, 0x00, 0x64, 0xff}}},\n    {{{     8,    202,   -479}, 0, {     0,    700}, {0x4d, 0x00, 0x64, 0xff}}},\n};\n\n// 0x0700F508 - 0x0700F5F8\nstatic const Vtx ttm_seg7_vertex_0700F508[] = {\n    {{{   515,   -171,   -402}, 0, { -2996,    702}, {0x65, 0x00, 0xb4, 0xff}}},\n    {{{   497,   -174,   -426}, 0, { -3018,    990}, {0x65, 0x00, 0xb4, 0xff}}},\n    {{{   497,    202,   -426}, 0, {   238,    990}, {0x65, 0x00, 0xb4, 0xff}}},\n    {{{   -14,   -250,   -462}, 0, {  3982,    700}, {0x9a, 0x00, 0x4b, 0xff}}},\n    {{{   -14,    202,   -462}, 0, {     0,    700}, {0x9a, 0x00, 0x4b, 0xff}}},\n    {{{   -31,    202,   -485}, 0, {     0,    990}, {0x9a, 0x00, 0x4b, 0xff}}},\n    {{{   491,   -175,   -385}, 0, { -2358,   1278}, {0x9a, 0x00, 0x4b, 0xff}}},\n    {{{   491,    202,   -385}, 0, {   990,   1278}, {0x9a, 0x00, 0x4b, 0xff}}},\n    {{{   474,    202,   -408}, 0, {   990,    990}, {0x9a, 0x00, 0x4b, 0xff}}},\n    {{{   474,   -177,   -408}, 0, { -2380,    990}, {0x9a, 0x00, 0x4b, 0xff}}},\n    {{{   497,    202,   -426}, 0, {   990,    700}, {0xb2, 0x00, 0x9c, 0xff}}},\n    {{{   497,   -174,   -426}, 0, { -2266,    702}, {0xb2, 0x00, 0x9c, 0xff}}},\n    {{{   474,   -177,   -408}, 0, { -2302,    990}, {0xb2, 0x00, 0x9c, 0xff}}},\n    {{{   474,    202,   -408}, 0, {   990,    990}, {0xb2, 0x00, 0x9c, 0xff}}},\n    {{{   515,    202,   -402}, 0, {   238,    700}, {0x65, 0x00, 0xb4, 0xff}}},\n};\n\n// 0x0700F5F8 - 0x0700F6E8\nstatic const Vtx ttm_seg7_vertex_0700F5F8[] = {\n    {{{   -28,   -104,    422}, 0, {  -540,   1396}, {0x83, 0x00, 0xee, 0xff}}},\n    {{{   -22,    202,    382}, 0, {  2012,    990}, {0x83, 0x00, 0xee, 0xff}}},\n    {{{   -22,   -104,    382}, 0, {  -540,    990}, {0x83, 0x00, 0xee, 0xff}}},\n    {{{   515,   -171,   -402}, 0, { -2326,   1278}, {0x49, 0x00, 0x67, 0xff}}},\n    {{{   515,    202,   -402}, 0, {   990,   1278}, {0x49, 0x00, 0x67, 0xff}}},\n    {{{   491,    202,   -385}, 0, {   990,    990}, {0x49, 0x00, 0x67, 0xff}}},\n    {{{   491,   -175,   -385}, 0, { -2358,    990}, {0x49, 0x00, 0x67, 0xff}}},\n    {{{    18,   -104,    388}, 0, { -1052,    990}, {0x7d, 0x00, 0x12, 0xff}}},\n    {{{    18,    202,    388}, 0, {  1502,    990}, {0x7d, 0x00, 0x12, 0xff}}},\n    {{{    12,    202,    429}, 0, {  1502,    582}, {0x7d, 0x00, 0x12, 0xff}}},\n    {{{    12,   -104,    429}, 0, { -1052,    582}, {0x7d, 0x00, 0x12, 0xff}}},\n    {{{    12,   -104,    429}, 0, {  -542,   1396}, {0xeb, 0x00, 0x7d, 0xff}}},\n    {{{   -28,    202,    422}, 0, {  2012,    990}, {0xeb, 0x00, 0x7d, 0xff}}},\n    {{{   -28,   -104,    422}, 0, {  -540,    990}, {0xeb, 0x00, 0x7d, 0xff}}},\n    {{{    12,    202,    429}, 0, {  2012,   1396}, {0xeb, 0x00, 0x7d, 0xff}}},\n};\n\n// 0x0700F6E8 - 0x0700F7D8\nstatic const Vtx ttm_seg7_vertex_0700F6E8[] = {\n    {{{  -447,   -104,    318}, 0, {     0,    990}, {0x7d, 0x00, 0x12, 0xff}}},\n    {{{  -447,    202,    318}, 0, {  2524,    990}, {0x7d, 0x00, 0x12, 0xff}}},\n    {{{  -453,    202,    359}, 0, {  2524,    582}, {0x7d, 0x00, 0x12, 0xff}}},\n    {{{   -28,   -104,    422}, 0, {  -540,   1396}, {0x83, 0x00, 0xee, 0xff}}},\n    {{{   -28,    202,    422}, 0, {  2012,   1396}, {0x83, 0x00, 0xee, 0xff}}},\n    {{{   -22,    202,    382}, 0, {  2012,    990}, {0x83, 0x00, 0xee, 0xff}}},\n    {{{   -22,   -104,    382}, 0, { -1052,    990}, {0x12, 0x00, 0x83, 0xff}}},\n    {{{    18,    202,    388}, 0, {  1500,    582}, {0x12, 0x00, 0x83, 0xff}}},\n    {{{    18,   -104,    388}, 0, { -1052,    582}, {0x12, 0x00, 0x83, 0xff}}},\n    {{{   -22,    202,    382}, 0, {  1500,    990}, {0x12, 0x00, 0x83, 0xff}}},\n    {{{  -488,   -104,    312}, 0, { -1052,    990}, {0x12, 0x00, 0x83, 0xff}}},\n    {{{  -447,    202,    318}, 0, {  1500,    582}, {0x12, 0x00, 0x83, 0xff}}},\n    {{{  -447,   -104,    318}, 0, { -1052,    582}, {0x12, 0x00, 0x83, 0xff}}},\n    {{{  -488,    202,    312}, 0, {  1500,    990}, {0x12, 0x00, 0x83, 0xff}}},\n    {{{  -453,   -104,    359}, 0, {     0,    582}, {0x7d, 0x00, 0x12, 0xff}}},\n};\n\n// 0x0700F7D8 - 0x0700F858\nstatic const Vtx ttm_seg7_vertex_0700F7D8[] = {\n    {{{  -453,   -104,    359}, 0, {  -540,   1396}, {0xeb, 0x00, 0x7d, 0xff}}},\n    {{{  -494,    202,    352}, 0, {  2012,    990}, {0xeb, 0x00, 0x7d, 0xff}}},\n    {{{  -494,   -104,    352}, 0, {  -540,    990}, {0xeb, 0x00, 0x7d, 0xff}}},\n    {{{  -453,    202,    359}, 0, {  2012,   1396}, {0xeb, 0x00, 0x7d, 0xff}}},\n    {{{  -494,   -104,    352}, 0, {  2524,    582}, {0x83, 0x00, 0xee, 0xff}}},\n    {{{  -488,    202,    312}, 0, {     0,    990}, {0x83, 0x00, 0xee, 0xff}}},\n    {{{  -488,   -104,    312}, 0, {  2524,    990}, {0x83, 0x00, 0xee, 0xff}}},\n    {{{  -494,    202,    352}, 0, {     0,    582}, {0x83, 0x00, 0xee, 0xff}}},\n};\n\n// 0x0700F858 - 0x0700F8D0\nstatic const Gfx ttm_seg7_dl_0700F858[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ttm_seg7_texture_07001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_0700F300.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700F300.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700F318, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700F8D0 - 0x0700FA18\nstatic const Gfx ttm_seg7_dl_0700F8D0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttm_seg7_vertex_0700F418, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0700F508, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle(14,  0,  2, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0700F5F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0700F6E8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0700F7D8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700FA18 - 0x0700FA90\nconst Gfx ttm_seg7_dl_0700FA18[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_0700F858),\n    gsSPDisplayList(ttm_seg7_dl_0700F8D0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/17/geo.inc.c",
    "content": "// 0x0E000990\nconst GeoLayout ttm_geo_000990[] = {\n    GEO_CULLING_RADIUS(780),\n    GEO_OPEN_NODE(),\n        GEO_RENDER_RANGE(-1780, 5500),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, ttm_seg7_dl_0700F270),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, ttm_seg7_dl_0700FA18),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/18/1.inc.c",
    "content": "// 0x0700FA90 - 0x0700FAA8\nstatic const Lights1 ttm_seg7_lights_0700FA90 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700FAA8 - 0x0700FAC0\nstatic const Lights1 ttm_seg7_lights_0700FAA8 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0x99, 0x99, 0x99, 0x28, 0x28, 0x28\n);\n\n// 0x0700FAC0 - 0x0700FAD8\nstatic const Lights1 ttm_seg7_lights_0700FAC0 = gdSPDefLights1(\n    0x5d, 0x5d, 0x5d,\n    0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28\n);\n\n// 0x0700FAD8 - 0x0700FBB8\nstatic const Vtx ttm_seg7_vertex_0700FAD8[] = {\n    {{{   340,    563,    448}, 0, {     0,  -1736}, {0x43, 0x00, 0x95, 0xff}}},\n    {{{   -84,    563,    183}, 0, {  1632,  -1736}, {0x43, 0x00, 0x95, 0xff}}},\n    {{{   -84,    768,    183}, 0, {  1632,  -2416}, {0x43, 0x00, 0x95, 0xff}}},\n    {{{   340,    768,    448}, 0, {     0,  -2416}, {0x43, 0x00, 0x95, 0xff}}},\n    {{{   742,    256,   -226}, 0, {     0,   -714}, {0x12, 0x00, 0x83, 0xff}}},\n    {{{   541,    563,   -256}, 0, {   592,  -1736}, {0x12, 0x00, 0x83, 0xff}}},\n    {{{   742,    563,   -226}, 0, {     0,  -1736}, {0x12, 0x00, 0x83, 0xff}}},\n    {{{   541,    358,   -256}, 0, {   592,  -1054}, {0x12, 0x00, 0x83, 0xff}}},\n    {{{   794,   -460,   -314}, 0, {  1432,    -86}, {0xaf, 0x3d, 0x4b, 0xff}}},\n    {{{   652,   -460,   -466}, 0, {   746,   -120}, {0xaf, 0x3d, 0x4b, 0xff}}},\n    {{{   385,   -767,   -504}, 0, {     0,    990}, {0xaf, 0x3d, 0x4b, 0xff}}},\n    {{{   794,   -460,   -314}, 0, {  1432,    -86}, {0xb6, 0x28, 0x5e, 0xff}}},\n    {{{   385,   -767,   -504}, 0, {     0,    990}, {0xb6, 0x28, 0x5e, 0xff}}},\n    {{{   741,   -767,   -225}, 0, {  1472,    990}, {0xb6, 0x28, 0x5e, 0xff}}},\n};\n\n// 0x0700FBB8 - 0x0700FCB8\nstatic const Vtx ttm_seg7_vertex_0700FBB8[] = {\n    {{{    60,   -767,    917}, 0, {     0,   2434}, {0xd2, 0x59, 0x4d, 0xff}}},\n    {{{   217,   -460,    653}, 0, {     0,    990}, {0xd2, 0x59, 0x4d, 0xff}}},\n    {{{   130,   -460,    601}, 0, {  -370,    990}, {0xd2, 0x59, 0x4d, 0xff}}},\n    {{{    60,   -767,    917}, 0, {  3716,    990}, {0xa4, 0x47, 0x31, 0xff}}},\n    {{{   130,   -460,    601}, 0, {  2694,      0}, {0xa4, 0x47, 0x31, 0xff}}},\n    {{{  -221,   -767,    391}, 0, {  2694,    990}, {0xa4, 0x47, 0x31, 0xff}}},\n    {{{  -221,   -767,    391}, 0, {  2694,    990}, {0xa7, 0x56, 0x16, 0xff}}},\n    {{{   130,   -460,    601}, 0, {  2694,      0}, {0xa7, 0x56, 0x16, 0xff}}},\n    {{{    58,   -460,    320}, 0, {  2012,      0}, {0xa7, 0x56, 0x16, 0xff}}},\n    {{{   163,   -255,    144}, 0, {     0,   -714}, {0x2d, 0x59, 0xb3, 0xff}}},\n    {{{   111,   -153,    232}, 0, {     0,  -1054}, {0x2d, 0x59, 0xb3, 0xff}}},\n    {{{   427,   -255,    301}, 0, { -1052,   -714}, {0x2d, 0x59, 0xb3, 0xff}}},\n    {{{   375,   -153,    389}, 0, { -1052,  -1054}, {0x2d, 0x59, 0xb3, 0xff}}},\n    {{{    58,   -460,    320}, 0, {  2012,      0}, {0x8b, 0x2e, 0xf1, 0xff}}},\n    {{{   163,   -255,    144}, 0, {  1330,   -714}, {0x8b, 0x2e, 0xf1, 0xff}}},\n    {{{     4,   -767,   -188}, 0, {   650,    990}, {0x8b, 0x2e, 0xf1, 0xff}}},\n};\n\n// 0x0700FCB8 - 0x0700FD48\nstatic const Vtx ttm_seg7_vertex_0700FCB8[] = {\n    {{{   919,   -460,  -1028}, 0, {     0,    150}, {0x8e, 0x00, 0xca, 0xff}}},\n    {{{   919,   -767,  -1028}, 0, {     0,    990}, {0x8e, 0x00, 0xca, 0xff}}},\n    {{{   652,   -460,   -466}, 0, {  1914,   -256}, {0x8e, 0x00, 0xca, 0xff}}},\n    {{{     4,   -767,   -188}, 0, {   650,    990}, {0xa3, 0x41, 0xc9, 0xff}}},\n    {{{   163,   -255,    144}, 0, {  1330,   -714}, {0xa3, 0x41, 0xc9, 0xff}}},\n    {{{   373,   -255,   -207}, 0, {     0,   -714}, {0xa3, 0x41, 0xc9, 0xff}}},\n    {{{   373,   -767,   -207}, 0, {     0,    990}, {0xfa, 0x00, 0x82, 0xff}}},\n    {{{     4,   -767,   -188}, 0, {   650,    990}, {0xfa, 0x00, 0x82, 0xff}}},\n    {{{   373,   -255,   -207}, 0, {     0,   -714}, {0xfa, 0x00, 0x82, 0xff}}},\n};\n\n// 0x0700FD48 - 0x0700FE38\nstatic const Vtx ttm_seg7_vertex_0700FD48[] = {\n    {{{   113,   -255,    829}, 0, {     0,   4940}, {0xfc, 0x93, 0xc0, 0xff}}},\n    {{{  -104,   -460,   1194}, 0, {     0,   6480}, {0xfc, 0x93, 0xc0, 0xff}}},\n    {{{  -150,   -153,    672}, 0, {   990,   4736}, {0xfc, 0x93, 0xc0, 0xff}}},\n    {{{   742,    256,   -226}, 0, {   226,  -2344}, {0xc9, 0x8f, 0xf5, 0xff}}},\n    {{{   427,    358,    301}, 0, {  1272,  -4100}, {0xc9, 0x8f, 0xf5, 0xff}}},\n    {{{   541,    358,   -256}, 0, {   892,  -2244}, {0xc9, 0x8f, 0xf5, 0xff}}},\n    {{{   427,    358,    301}, 0, {  1272,  -4100}, {0x0a, 0x83, 0xef, 0xff}}},\n    {{{   113,    256,    829}, 0, {  2318,  -5856}, {0x0a, 0x83, 0xef, 0xff}}},\n    {{{  -150,    256,    672}, 0, {  3196,  -5332}, {0x0a, 0x83, 0xef, 0xff}}},\n    {{{   427,    358,    301}, 0, {  1272,  -4100}, {0xd7, 0x8b, 0xe8, 0xff}}},\n    {{{   -84,    563,    183}, 0, {  2976,  -3708}, {0xd7, 0x8b, 0xe8, 0xff}}},\n    {{{    73,    563,    -80}, 0, {  2452,  -2830}, {0xd7, 0x8b, 0xe8, 0xff}}},\n    {{{  -150,    256,    672}, 0, {  3196,  -5332}, {0xe7, 0x99, 0xbc, 0xff}}},\n    {{{   -84,    563,    183}, 0, {  2976,  -3708}, {0xe7, 0x99, 0xbc, 0xff}}},\n    {{{   427,    358,    301}, 0, {  1272,  -4100}, {0xe7, 0x99, 0xbc, 0xff}}},\n};\n\n// 0x0700FE38 - 0x0700FF38\nstatic const Vtx ttm_seg7_vertex_0700FE38[] = {\n    {{{   541,    358,   -256}, 0, {   892,  -2244}, {0xca, 0x8e, 0xf5, 0xff}}},\n    {{{   427,    358,    301}, 0, {  1272,  -4100}, {0xca, 0x8e, 0xf5, 0xff}}},\n    {{{    73,    563,    -80}, 0, {  2452,  -2830}, {0xca, 0x8e, 0xf5, 0xff}}},\n    {{{  -451,   -153,   1078}, 0, {     0,   -598}, {0xbd, 0xa1, 0xce, 0xff}}},\n    {{{  -150,   -153,    672}, 0, { -1664,   -200}, {0xbd, 0xa1, 0xce, 0xff}}},\n    {{{  -104,   -460,   1194}, 0, {     0,    990}, {0xbd, 0xa1, 0xce, 0xff}}},\n    {{{   111,   -153,    232}, 0, {     0,  -1054}, {0x3a, 0xc7, 0x9f, 0xff}}},\n    {{{   251,     51,    196}, 0, {  -370,  -1736}, {0x3a, 0xc7, 0x9f, 0xff}}},\n    {{{   427,     51,    301}, 0, { -1052,  -1736}, {0x3a, 0xc7, 0x9f, 0xff}}},\n    {{{   113,    256,    829}, 0, {     0,   -714}, {0x41, 0x00, 0x93, 0xff}}},\n    {{{   113,   -255,    829}, 0, {     0,    990}, {0x41, 0x00, 0x93, 0xff}}},\n    {{{  -150,   -153,    672}, 0, {   990,    650}, {0x41, 0x00, 0x93, 0xff}}},\n    {{{  -150,    256,    672}, 0, {   990,   -714}, {0x41, 0x00, 0x93, 0xff}}},\n    {{{   794,    -50,   -314}, 0, {     0,    990}, {0x26, 0x9b, 0xbf, 0xff}}},\n    {{{   635,    102,   -647}, 0, {   990,    138}, {0x26, 0x9b, 0xbf, 0xff}}},\n    {{{   899,    102,   -489}, 0, {     0,    138}, {0x26, 0x9b, 0xbf, 0xff}}},\n};\n\n// 0x0700FF38 - 0x0700FFF8\nstatic const Vtx ttm_seg7_vertex_0700FF38[] = {\n    {{{   794,    -50,   -314}, 0, {     0,    990}, {0x26, 0x9a, 0xbf, 0xff}}},\n    {{{   530,    -50,   -471}, 0, {   990,    990}, {0x26, 0x9a, 0xbf, 0xff}}},\n    {{{   635,    102,   -647}, 0, {   990,    138}, {0x26, 0x9a, 0xbf, 0xff}}},\n    {{{   689,    102,   -138}, 0, {   990,    990}, {0xda, 0x9a, 0x41, 0xff}}},\n    {{{   530,    -50,   -471}, 0, {     0,   1840}, {0xda, 0x9a, 0x41, 0xff}}},\n    {{{   794,    -50,   -314}, 0, {   990,   1840}, {0xda, 0x9a, 0x41, 0xff}}},\n    {{{   689,    102,   -138}, 0, {   990,    990}, {0xda, 0x9b, 0x41, 0xff}}},\n    {{{   426,    102,   -295}, 0, {     0,    990}, {0xda, 0x9b, 0x41, 0xff}}},\n    {{{   530,    -50,   -471}, 0, {     0,   1840}, {0xda, 0x9b, 0x41, 0xff}}},\n    {{{   375,   -153,    389}, 0, { -1052,  -1054}, {0x3a, 0xc8, 0x9f, 0xff}}},\n    {{{   111,   -153,    232}, 0, {     0,  -1054}, {0x3a, 0xc8, 0x9f, 0xff}}},\n    {{{   427,     51,    301}, 0, { -1052,  -1736}, {0x3a, 0xc8, 0x9f, 0xff}}},\n};\n\n// 0x0700FFF8 - 0x070100F8\nstatic const Vtx ttm_seg7_vertex_0700FFF8[] = {\n    {{{   322,     51,    477}, 0, {   990,   -714}, {0xc0, 0x00, 0x6d, 0xff}}},\n    {{{    58,   -460,    320}, 0, {     0,    990}, {0xc0, 0x00, 0x6d, 0xff}}},\n    {{{   322,   -460,    477}, 0, {   990,    990}, {0xc0, 0x00, 0x6d, 0xff}}},\n    {{{   -84,    768,    183}, 0, {     0,    308}, {0x83, 0x00, 0xf0, 0xff}}},\n    {{{   -84,    563,    183}, 0, {     0,    990}, {0x83, 0x00, 0xf0, 0xff}}},\n    {{{  -150,    256,    672}, 0, {  1476,   2010}, {0x83, 0x00, 0xf0, 0xff}}},\n    {{{    73,    563,    -80}, 0, {  1634,    990}, {0xd4, 0x00, 0x8a, 0xff}}},\n    {{{   541,    563,   -256}, 0, {     0,    990}, {0xd4, 0x00, 0x8a, 0xff}}},\n    {{{   541,    358,   -256}, 0, {     0,   1670}, {0xd4, 0x00, 0x8a, 0xff}}},\n    {{{  -150,    256,    672}, 0, {  6474,  -2416}, {0x9a, 0x00, 0xb5, 0xff}}},\n    {{{  -150,   -153,    672}, 0, {  6474,  -1054}, {0x9a, 0x00, 0xb5, 0xff}}},\n    {{{  -451,   -153,   1078}, 0, {  8134,  -1054}, {0x9a, 0x00, 0xb5, 0xff}}},\n    {{{   530,    -50,   -471}, 0, {  2190,  -1394}, {0x93, 0x00, 0xc0, 0xff}}},\n    {{{   426,    102,   -295}, 0, {  2848,  -1906}, {0x93, 0x00, 0xc0, 0xff}}},\n    {{{   635,    102,   -647}, 0, {  1530,  -1906}, {0x93, 0x00, 0xc0, 0xff}}},\n    {{{    58,     51,    320}, 0, {     0,   -714}, {0xc0, 0x00, 0x6d, 0xff}}},\n};\n\n// 0x070100F8 - 0x070101E8\nstatic const Vtx ttm_seg7_vertex_070100F8[] = {\n    {{{   111,   -153,    232}, 0, {  1672,  -1054}, {0xbd, 0x1b, 0x98, 0xff}}},\n    {{{    58,     51,    320}, 0, {  2012,  -1736}, {0xbd, 0x1b, 0x98, 0xff}}},\n    {{{   251,     51,    196}, 0, {  1330,  -1736}, {0xbd, 0x1b, 0x98, 0xff}}},\n    {{{    58,     51,    320}, 0, {  2012,  -1736}, {0x94, 0x00, 0xbf, 0xff}}},\n    {{{   111,   -153,    232}, 0, {  1672,  -1054}, {0x94, 0x00, 0xbf, 0xff}}},\n    {{{    58,   -460,    320}, 0, {  2012,      0}, {0x94, 0x00, 0xbf, 0xff}}},\n    {{{   163,   -255,    144}, 0, {  1330,   -714}, {0x93, 0x00, 0xc0, 0xff}}},\n    {{{    58,   -460,    320}, 0, {  2012,      0}, {0x93, 0x00, 0xc0, 0xff}}},\n    {{{   111,   -153,    232}, 0, {  1672,  -1054}, {0x93, 0x00, 0xc0, 0xff}}},\n    {{{    58,   -767,    320}, 0, {  2012,    990}, {0xe1, 0x00, 0x85, 0xff}}},\n    {{{  -221,   -767,    391}, 0, {  2694,    990}, {0xe1, 0x00, 0x85, 0xff}}},\n    {{{    58,   -460,    320}, 0, {  2012,      0}, {0xe1, 0x00, 0x85, 0xff}}},\n    {{{   637,   -255,    -50}, 0, { -1052,   -714}, {0x40, 0x00, 0x93, 0xff}}},\n    {{{   637,   -767,    -50}, 0, { -1052,    990}, {0x40, 0x00, 0x93, 0xff}}},\n    {{{   373,   -255,   -207}, 0, {     0,   -714}, {0x40, 0x00, 0x93, 0xff}}},\n};\n\n// 0x070101E8 - 0x07010278\nstatic const Vtx ttm_seg7_vertex_070101E8[] = {\n    {{{   919,   -767,  -1028}, 0, {     0,    990}, {0xb8, 0x48, 0xb6, 0xff}}},\n    {{{   385,   -767,   -504}, 0, {  2458,    990}, {0xb8, 0x48, 0xb6, 0xff}}},\n    {{{   652,   -460,   -466}, 0, {  1914,   -256}, {0xb8, 0x48, 0xb6, 0xff}}},\n    {{{   637,   -767,    -50}, 0, { -1052,    990}, {0x40, 0x00, 0x93, 0xff}}},\n    {{{   373,   -767,   -207}, 0, {     0,    990}, {0x40, 0x00, 0x93, 0xff}}},\n    {{{   373,   -255,   -207}, 0, {     0,   -714}, {0x40, 0x00, 0x93, 0xff}}},\n    {{{    58,   -460,    320}, 0, {  2012,      0}, {0x82, 0x00, 0x0d, 0xff}}},\n    {{{     4,   -767,   -188}, 0, {   650,    990}, {0x82, 0x00, 0x0d, 0xff}}},\n    {{{    58,   -767,    320}, 0, {  2012,    990}, {0x82, 0x00, 0x0d, 0xff}}},\n};\n\n// 0x07010278 - 0x07010378\nstatic const Vtx ttm_seg7_vertex_07010278[] = {\n    {{{   340,    768,    448}, 0, {  1056, -15900}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -84,    768,    183}, 0, {   208, -16430}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1075,    768,    870}, 0, { -1770, -15058}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -590,    768,    107}, 0, {  -800, -16582}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -104,    768,   1194}, 0, {   168, -14412}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1056,    768,   -753}, 0, {  2486, -18302}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   819,    768,  -1228}, 0, {  2012, -19248}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   871,    768,   -442}, 0, {  2116, -17680}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   871,    768,   -442}, 0, {  2116, -17680}, {0xee, 0x7d, 0x01, 0xff}}},\n    {{{   819,    768,  -1228}, 0, {  2012, -19248}, {0xee, 0x7d, 0x01, 0xff}}},\n    {{{  -138,    621,   -803}, 0, {   100, -18400}, {0xee, 0x7d, 0x01, 0xff}}},\n    {{{  -168,    614,   -600}, 0, {    40, -17996}, {0xee, 0x7d, 0x01, 0xff}}},\n    {{{   541,    563,   -256}, 0, {  1458, -17308}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    73,    563,    -80}, 0, {   522, -16956}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   340,    563,    448}, 0, {  1056, -15900}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   742,    563,   -226}, 0, {  1858, -17248}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07010378 - 0x07010468\nstatic const Vtx ttm_seg7_vertex_07010378[] = {\n    {{{    58,   -460,    320}, 0, {   494, -16158}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   130,   -460,    601}, 0, {   636, -15596}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   217,   -460,    653}, 0, {   812, -15492}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    73,    563,    -80}, 0, {   522, -16956}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -84,    563,    183}, 0, {   208, -16430}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   340,    563,    448}, 0, {  1056, -15900}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   899,    102,   -489}, 0, {  2172, -17774}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   426,    102,   -295}, 0, {  1226, -17386}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   689,    102,   -138}, 0, {  1754, -17072}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   635,    102,   -647}, 0, {  1646, -18088}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1056,   -460,   -753}, 0, {  2486, -18302}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   919,   -460,  -1028}, 0, {  2212, -18850}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   652,   -460,   -466}, 0, {  1678, -17726}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   794,   -460,   -314}, 0, {  1962, -17424}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   322,   -460,    477}, 0, {  1020, -15844}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07010468 - 0x070104A8\nstatic const Vtx ttm_seg7_vertex_07010468[] = {\n    {{{   637,   -255,    -50}, 0, {  1648, -16896}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   163,   -255,    144}, 0, {   704, -16508}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   427,   -255,    301}, 0, {  1230, -16194}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   373,   -255,   -207}, 0, {  1122, -17210}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070104A8 - 0x07010568\nstatic const Vtx ttm_seg7_vertex_070104A8[] = {\n    {{{  -590,    768,    107}, 0, {  -800, -16582}, {0x0d, 0xa8, 0xa6, 0xff}}},\n    {{{   -84,    768,    183}, 0, {   208, -16430}, {0x0d, 0xa8, 0xa6, 0xff}}},\n    {{{  -150,    256,    672}, 0, {    76, -15456}, {0x0d, 0xa8, 0xa6, 0xff}}},\n    {{{  -168,    614,   -600}, 0, {    40, -17996}, {0xdd, 0x99, 0x40, 0xff}}},\n    {{{  1056,    102,   -753}, 0, {  2486, -18302}, {0xdd, 0x99, 0x40, 0xff}}},\n    {{{   871,    358,   -442}, 0, {  2116, -17680}, {0xdd, 0x99, 0x40, 0xff}}},\n    {{{  1056,    102,   -753}, 0, {  2486, -18302}, {0xce, 0x8c, 0xf5, 0xff}}},\n    {{{  -168,    614,   -600}, 0, {    40, -17996}, {0xce, 0x8c, 0xf5, 0xff}}},\n    {{{  -138,    621,   -803}, 0, {   100, -18400}, {0xce, 0x8c, 0xf5, 0xff}}},\n    {{{  -150,    256,    672}, 0, {    76, -15456}, {0x06, 0xa5, 0xa9, 0xff}}},\n    {{{  -451,   -153,   1078}, 0, {  -522, -14644}, {0x06, 0xa5, 0xa9, 0xff}}},\n    {{{  -590,    768,    107}, 0, {  -800, -16582}, {0x06, 0xa5, 0xa9, 0xff}}},\n};\n\n// 0x07010568 - 0x07010638\nstatic const Vtx ttm_seg7_vertex_07010568[] = {\n    {{{   427,     51,    301}, 0, {  1230, -16194}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   251,     51,    196}, 0, {   878, -16404}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    58,     51,    320}, 0, {   494, -16158}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -590,    768,    107}, 0, {  -800, -16582}, {0xa8, 0xb8, 0xc9, 0xff}}},\n    {{{  -451,   -153,   1078}, 0, {  -522, -14644}, {0xa8, 0xb8, 0xc9, 0xff}}},\n    {{{ -1075,    768,    870}, 0, { -1770, -15058}, {0xa8, 0xb8, 0xc9, 0xff}}},\n    {{{   819,    768,  -1228}, 0, {  2012, -19248}, {0xe2, 0xb2, 0xa1, 0xff}}},\n    {{{  1056,    102,   -753}, 0, {  2486, -18302}, {0xe2, 0xb2, 0xa1, 0xff}}},\n    {{{  -138,    621,   -803}, 0, {   100, -18400}, {0xe2, 0xb2, 0xa1, 0xff}}},\n    {{{   871,    358,   -442}, 0, {  -226,   2336}, {0xed, 0x00, 0x7d, 0xff}}},\n    {{{   871,    768,   -442}, 0, {     0,    990}, {0xed, 0x00, 0x7d, 0xff}}},\n    {{{  -168,    614,   -600}, 0, { -3566,    990}, {0xed, 0x00, 0x7d, 0xff}}},\n    {{{   322,     51,    477}, 0, {  1020, -15844}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07010638 - 0x07010830\nstatic const Gfx ttm_seg7_dl_07010638[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_0700FA90.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700FA90.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700FAD8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0700FBB8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(10, 12, 11, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0700FCB8, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  7,  8, 0x0),\n    gsSPLight(&ttm_seg7_lights_0700FAA8.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700FAA8.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700FD48, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0700FE38, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0700FF38, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPLight(&ttm_seg7_lights_0700FAC0.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700FAC0.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700FFF8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070100F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070101E8, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07010830 - 0x07010978\nstatic const Gfx ttm_seg7_dl_07010830[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_0700FA90.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700FA90.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07010278, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10, 11,  8, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 15, 12, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07010378, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle(14,  0,  2, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07010468, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPLight(&ttm_seg7_lights_0700FAA8.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700FAA8.a, 2),\n    gsSPVertex(ttm_seg7_vertex_070104A8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPLight(&ttm_seg7_lights_0700FAC0.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700FAC0.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07010568, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle( 0,  2, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07010978 - 0x070109F0\nconst Gfx ttm_seg7_dl_07010978[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_07010638),\n    gsSPDisplayList(ttm_seg7_dl_07010830),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/18/2.inc.c",
    "content": "// 0x070109F0 - 0x07010A30\nstatic const Vtx ttm_seg7_vertex_070109F0[] = {\n    {{{   750,   -767,   -340}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -174,   -767,   1212}, 0, {  5980,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -104,   -562,   1194}, 0, {  5810,    288}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   794,   -562,   -314}, 0, {     0,    288}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07010A30 - 0x07010A68\nstatic const Gfx ttm_seg7_dl_07010A30[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ttm_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttm_seg7_vertex_070109F0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07010A68 - 0x07010AD8\nconst Gfx ttm_seg7_dl_07010A68[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_07010A30),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/18/geo.inc.c",
    "content": "// 0x0E0009C0\nconst GeoLayout ttm_geo_0009C0[] = {\n    GEO_CULLING_RADIUS(1700),\n    GEO_OPEN_NODE(),\n        GEO_RENDER_RANGE(-2700, 5000),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, ttm_seg7_dl_07010978),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, ttm_seg7_dl_07010A68),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/19/geo.inc.c",
    "content": "// 0x0E0009F0\nconst GeoLayout ttm_geo_0009F0[] = {\n    GEO_CULLING_RADIUS(920),\n    GEO_OPEN_NODE(),\n        GEO_RENDER_RANGE(-1920, 5000),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, ttm_seg7_dl_07011128),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/19/model.inc.c",
    "content": "// 0x07010AD8 - 0x07010AF0\nstatic const Lights1 ttm_seg7_lights_07010AD8 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0x99, 0x99, 0x99, 0x28, 0x28, 0x28\n);\n\n// 0x07010AF0 - 0x07010B08\nstatic const Lights1 ttm_seg7_lights_07010AF0 = gdSPDefLights1(\n    0x5d, 0x5d, 0x5d,\n    0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28\n);\n\n// 0x07010B08 - 0x07010B20\nstatic const Lights1 ttm_seg7_lights_07010B08 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07010B20 - 0x07010C10\nstatic const Vtx ttm_seg7_vertex_07010B20[] = {\n    {{{  -406,   -306,    375}, 0, {  2336,  -3000}, {0xd7, 0x8e, 0xde, 0xff}}},\n    {{{  -205,   -306,    137}, 0, {  1666,  -2210}, {0xd7, 0x8e, 0xde, 0xff}}},\n    {{{   -81,   -409,    330}, 0, {  1254,  -2852}, {0xd7, 0x8e, 0xde, 0xff}}},\n    {{{   -81,   -409,    330}, 0, {  1254,  -2852}, {0xe3, 0x8f, 0x31, 0xff}}},\n    {{{  -186,   -306,    506}, 0, {  1604,  -3436}, {0xe3, 0x8f, 0x31, 0xff}}},\n    {{{  -406,   -306,    375}, 0, {  2336,  -3000}, {0xe3, 0x8f, 0x31, 0xff}}},\n    {{{   -81,    205,    330}, 0, {   924,  -3514}, {0xc4, 0x97, 0xdc, 0xff}}},\n    {{{  -188,    410,    -90}, 0, {  1278,  -2114}, {0xc4, 0x97, 0xdc, 0xff}}},\n    {{{   180,    205,   -109}, 0, {    50,  -2052}, {0xc4, 0x97, 0xdc, 0xff}}},\n    {{{   161,    410,   -477}, 0, {   112,   -824}, {0xc6, 0x9d, 0xcc, 0xff}}},\n    {{{   180,    205,   -109}, 0, {    50,  -2052}, {0xc6, 0x9d, 0xcc, 0xff}}},\n    {{{  -188,    410,    -90}, 0, {  1278,  -2114}, {0xc6, 0x9d, 0xcc, 0xff}}},\n    {{{   180,    205,   -109}, 0, {    50,  -2052}, {0xf1, 0x92, 0xc4, 0xff}}},\n    {{{   161,    410,   -477}, 0, {   112,   -824}, {0xf1, 0x92, 0xc4, 0xff}}},\n    {{{   442,    410,   -549}, 0, {  -820,   -588}, {0xf1, 0x92, 0xc4, 0xff}}},\n};\n\n// 0x07010C10 - 0x07010C40\nstatic const Vtx ttm_seg7_vertex_07010C10[] = {\n    {{{   337,   -204,   -373}, 0, {     0,  -1872}, {0x06, 0xac, 0xa2, 0xff}}},\n    {{{   223,   -204,   -381}, 0, {   308,  -1736}, {0x06, 0xac, 0xa2, 0xff}}},\n    {{{   390,   -101,   -461}, 0, {     0,  -2348}, {0x06, 0xac, 0xa2, 0xff}}},\n};\n\n// 0x07010C40 - 0x07010D30\nstatic const Vtx ttm_seg7_vertex_07010C40[] = {\n    {{{   223,   -204,   -381}, 0, {  1194,  -4802}, {0xbe, 0xe5, 0x98, 0xff}}},\n    {{{    56,   -101,   -302}, 0, {  1774,  -5142}, {0xbe, 0xe5, 0x98, 0xff}}},\n    {{{   249,   -101,   -425}, 0, {  1028,  -5142}, {0xbe, 0xe5, 0x98, 0xff}}},\n    {{{   223,   -204,   -381}, 0, {   308,  -1736}, {0xe3, 0xd6, 0x8c, 0xff}}},\n    {{{   249,   -101,   -425}, 0, {   308,  -2076}, {0xe3, 0xd6, 0x8c, 0xff}}},\n    {{{   390,   -101,   -461}, 0, {     0,  -2348}, {0xe3, 0xd6, 0x8c, 0xff}}},\n    {{{   -29,   -306,    242}, 0, {     0,    990}, {0x2d, 0xa7, 0xb3, 0xff}}},\n    {{{  -117,   -306,    190}, 0, {   308,    990}, {0x2d, 0xa7, 0xb3, 0xff}}},\n    {{{   127,      0,    -21}, 0, {     0,   -428}, {0x2d, 0xa7, 0xb3, 0xff}}},\n    {{{  -117,   -306,    190}, 0, {   308,    990}, {0x07, 0xb4, 0x9b, 0xff}}},\n    {{{  -100,      0,    -38}, 0, {   650,   -238}, {0x07, 0xb4, 0x9b, 0xff}}},\n    {{{   127,      0,    -21}, 0, {     0,   -428}, {0x07, 0xb4, 0x9b, 0xff}}},\n    {{{   -81,   -409,    330}, 0, {  1254,  -2852}, {0x2e, 0xa7, 0xb3, 0xff}}},\n    {{{  -205,   -306,    137}, 0, {  1666,  -2210}, {0x2e, 0xa7, 0xb3, 0xff}}},\n    {{{   -29,   -306,    242}, 0, {  1080,  -2558}, {0x2e, 0xa7, 0xb3, 0xff}}},\n};\n\n// 0x07010D30 - 0x07010D60\nstatic const Vtx ttm_seg7_vertex_07010D30[] = {\n    {{{  -100,      0,    -38}, 0, {  2762,  -5482}, {0x82, 0x00, 0xf7, 0xff}}},\n    {{{  -117,   -306,    190}, 0, {  3334,  -4460}, {0x82, 0x00, 0xf7, 0xff}}},\n    {{{  -117,      0,    190}, 0, {  3334,  -5482}, {0x82, 0x00, 0xf7, 0xff}}},\n};\n\n// 0x07010D60 - 0x07010DA0\nstatic const Vtx ttm_seg7_vertex_07010D60[] = {\n    {{{   -29,      0,    242}, 0, {   650,   3032}, {0xc0, 0x00, 0x6d, 0xff}}},\n    {{{  -117,   -306,    190}, 0, {   308,   4054}, {0xc0, 0x00, 0x6d, 0xff}}},\n    {{{   -29,   -306,    242}, 0, {   650,   4054}, {0xc0, 0x00, 0x6d, 0xff}}},\n    {{{  -117,      0,    190}, 0, {   308,   3032}, {0xc0, 0x00, 0x6d, 0xff}}},\n};\n\n// 0x07010DA0 - 0x07010E00\nstatic const Vtx ttm_seg7_vertex_07010DA0[] = {\n    {{{   180,   -101,   -109}, 0, {  1962, -17424}, {0xfd, 0x8a, 0x2c, 0xff}}},\n    {{{   223,   -204,   -381}, 0, {  2048, -17966}, {0xfd, 0x8a, 0x2c, 0xff}}},\n    {{{   337,   -204,   -373}, 0, {  2276, -17950}, {0xfd, 0x8a, 0x2c, 0xff}}},\n    {{{   180,   -101,   -109}, 0, {  1962, -17424}, {0xcc, 0x92, 0x21, 0xff}}},\n    {{{    56,   -101,   -302}, 0, {  1716, -17808}, {0xcc, 0x92, 0x21, 0xff}}},\n    {{{   223,   -204,   -381}, 0, {  2048, -17966}, {0xcc, 0x92, 0x21, 0xff}}},\n};\n\n// 0x07010E00 - 0x07010F00\nstatic const Vtx ttm_seg7_vertex_07010E00[] = {\n    {{{   127,      0,    -21}, 0, {  1858, -17248}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -117,      0,    190}, 0, {  1368, -16826}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -29,      0,    242}, 0, {  1544, -16722}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -406,   -306,    375}, 0, {   792, -16456}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -186,   -306,    506}, 0, {  1230, -16194}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -205,   -306,    137}, 0, {  1192, -16930}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   161,    410,   -477}, 0, {  1926, -18160}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -188,    410,    -90}, 0, {  1226, -17386}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    23,    410,    154}, 0, {  1648, -16896}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -188,    410,    -90}, 0, {  1226, -17386}, {0xbb, 0x57, 0x3c, 0xff}}},\n    {{{   -81,    205,    330}, 0, {  1440, -16546}, {0xbb, 0x57, 0x3c, 0xff}}},\n    {{{    23,    410,    154}, 0, {  1648, -16896}, {0xbb, 0x57, 0x3c, 0xff}}},\n    {{{   442,    410,   -549}, 0, {  2486, -18302}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   390,   -101,   -461}, 0, {  2382, -18126}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   249,   -101,   -425}, 0, {  2102, -18054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    56,   -101,   -302}, 0, {  1716, -17808}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07010F00 - 0x07010F90\nstatic const Vtx ttm_seg7_vertex_07010F00[] = {\n    {{{   390,   -101,   -461}, 0, {  2382, -18126}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    56,   -101,   -302}, 0, {  1716, -17808}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   180,   -101,   -109}, 0, {  1962, -17424}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   127,      0,    -21}, 0, {  1858, -17248}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -100,      0,    -38}, 0, {  1402, -17282}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -117,      0,    190}, 0, {  1368, -16826}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -29,   -306,    242}, 0, {  1544, -16722}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -205,   -306,    137}, 0, {  1192, -16930}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -186,   -306,    506}, 0, {  1230, -16194}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07010F90 - 0x07011078\nstatic const Gfx ttm_seg7_dl_07010F90[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_07010AD8.l, 1),\n    gsSPLight(&ttm_seg7_lights_07010AD8.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07010B20, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07010C10, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPLight(&ttm_seg7_lights_07010AF0.l, 1),\n    gsSPLight(&ttm_seg7_lights_07010AF0.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07010C40, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07010D30, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPLight(&ttm_seg7_lights_07010B08.l, 1),\n    gsSPLight(&ttm_seg7_lights_07010B08.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07010D60, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07011078 - 0x07011128\nstatic const Gfx ttm_seg7_dl_07011078[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_07010AD8.l, 1),\n    gsSPLight(&ttm_seg7_lights_07010AD8.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07010DA0, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPLight(&ttm_seg7_lights_07010B08.l, 1),\n    gsSPLight(&ttm_seg7_lights_07010B08.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07010E00, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12,  6,  8, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07010F00, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07011128 - 0x070111A0\nconst Gfx ttm_seg7_dl_07011128[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_07010F90),\n    gsSPDisplayList(ttm_seg7_dl_07011078),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/2/model.inc.c",
    "content": "// 0x0700A1B0 - 0x0700A1C8\nstatic const Lights1 ttm_seg7_lights_0700A1B0 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700A1C8 - 0x0700A268\nstatic const Vtx ttm_seg7_vertex_0700A1C8[] = {\n    {{{    80,  -2047,   3563}, 0, {  3648,   -852}, {0x14, 0x00, 0x83, 0xff}}},\n    {{{ -1737,  -2149,   3260}, 0, {     0,     -2}, {0x13, 0xd5, 0x8b, 0xff}}},\n    {{{ -1737,  -2047,   3260}, 0, {     0,   -852}, {0x14, 0x00, 0x83, 0xff}}},\n    {{{ -1771,  -2047,   3462}, 0, {     0,   -852}, {0xec, 0x00, 0x7d, 0xff}}},\n    {{{ -1771,  -2149,   3462}, 0, {     0,     -2}, {0xf1, 0xaa, 0x5b, 0xff}}},\n    {{{    46,  -2149,   3765}, 0, {  3648,     -2}, {0xed, 0xd5, 0x75, 0xff}}},\n    {{{    46,  -2047,   3765}, 0, {  3648,   -852}, {0xec, 0x00, 0x7d, 0xff}}},\n    {{{    63,  -2201,   3664}, 0, {  3648,    990}, {0xfd, 0x83, 0x14, 0xff}}},\n    {{{ -1754,  -2201,   3361}, 0, {     0,    990}, {0x03, 0x83, 0xec, 0xff}}},\n    {{{    80,  -2149,   3563}, 0, {  3648,     -2}, {0x0f, 0xaa, 0xa5, 0xff}}},\n};\n\n// 0x0700A268 - 0x0700A2E0\nstatic const Gfx ttm_seg7_dl_0700A268[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_0700A1B0.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700A1B0.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700A1C8, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  5,  4, 0x0),\n    gsSP2Triangles( 7,  4,  8, 0x0,  9,  8,  1, 0x0),\n    gsSP2Triangles( 9,  7,  8, 0x0,  0,  9,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A2E0 - 0x0700A340\nconst Gfx ttm_seg7_dl_0700A2E0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_0700A268),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/20/geo.inc.c",
    "content": "// 0x0E000A18\nconst GeoLayout ttm_geo_000A18[] = {\n    GEO_CULLING_RADIUS(1100),\n    GEO_OPEN_NODE(),\n        GEO_RENDER_RANGE(-2100, 5000),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, ttm_seg7_dl_07011608),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/20/model.inc.c",
    "content": "// 0x070111A0 - 0x070111B8\nstatic const Lights1 ttm_seg7_lights_070111A0 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x070111B8 - 0x070111D0\nstatic const Lights1 ttm_seg7_lights_070111B8 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0x99, 0x99, 0x99, 0x28, 0x28, 0x28\n);\n\n// 0x070111D0 - 0x070111E8\nstatic const Lights1 ttm_seg7_lights_070111D0 = gdSPDefLights1(\n    0x5d, 0x5d, 0x5d,\n    0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28\n);\n\n// 0x070111E8 - 0x07011228\nstatic const Vtx ttm_seg7_vertex_070111E8[] = {\n    {{{   375,   -306,   -295}, 0, {     0,    650}, {0xf3, 0x00, 0x82, 0xff}}},\n    {{{  -133,   -409,   -241}, 0, {  1672,    990}, {0xf3, 0x00, 0x82, 0xff}}},\n    {{{  -133,   -306,   -241}, 0, {  1672,    650}, {0xf3, 0x00, 0x82, 0xff}}},\n    {{{   375,   -409,   -295}, 0, {     0,    990}, {0xf3, 0x00, 0x82, 0xff}}},\n};\n\n// 0x07011228 - 0x070112F8\nstatic const Vtx ttm_seg7_vertex_07011228[] = {\n    {{{  -206,   -409,    682}, 0, {  3042,  -7070}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -498,   -409,    585}, 0, {  4012,  -6746}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -133,   -409,   -241}, 0, {  2798,  -3998}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   168,    205,     53}, 0, {  1796,  -4978}, {0xec, 0x88, 0x22, 0xff}}},\n    {{{  -271,    205,   -208}, 0, {  3258,  -4106}, {0xec, 0x88, 0x22, 0xff}}},\n    {{{   325,    102,   -210}, 0, {  1272,  -4100}, {0xec, 0x88, 0x22, 0xff}}},\n    {{{   325,    102,   -210}, 0, {  1272,  -4100}, {0x1d, 0x8f, 0xd0, 0xff}}},\n    {{{  -185,    205,   -753}, 0, {  2972,  -2294}, {0x1d, 0x8f, 0xd0, 0xff}}},\n    {{{   430,    205,   -386}, 0, {   924,  -3514}, {0x1d, 0x8f, 0xd0, 0xff}}},\n    {{{   325,    102,   -210}, 0, {  1272,  -4100}, {0xeb, 0x83, 0xfd, 0xff}}},\n    {{{  -271,    205,   -208}, 0, {  3258,  -4106}, {0xeb, 0x83, 0xfd, 0xff}}},\n    {{{  -185,    205,   -753}, 0, {  2972,  -2294}, {0xeb, 0x83, 0xfd, 0xff}}},\n    {{{   375,   -409,   -295}, 0, {  1104,  -3818}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x070112F8 - 0x07011378\nstatic const Vtx ttm_seg7_vertex_070112F8[] = {\n    {{{    -7,    205,    -51}, 0, {   308,    990}, {0x93, 0x00, 0xc1, 0xff}}},\n    {{{    44,    410,   -139}, 0, {     0,    308}, {0x93, 0x00, 0xc1, 0xff}}},\n    {{{    44,    205,   -139}, 0, {     0,    990}, {0x93, 0x00, 0xc1, 0xff}}},\n    {{{    -7,    410,    -51}, 0, {   308,    308}, {0x93, 0x00, 0xc1, 0xff}}},\n    {{{  -133,   -306,   -241}, 0, {  5254,  -5824}, {0x8c, 0x00, 0xcd, 0xff}}},\n    {{{  -133,   -409,   -241}, 0, {  5254,  -5482}, {0x8c, 0x00, 0xcd, 0xff}}},\n    {{{  -498,   -409,    585}, 0, {  8046,  -5482}, {0x8c, 0x00, 0xcd, 0xff}}},\n    {{{  -498,   -306,    585}, 0, {  8046,  -5824}, {0x8c, 0x00, 0xcd, 0xff}}},\n};\n\n// 0x07011378 - 0x070113F8\nstatic const Vtx ttm_seg7_vertex_07011378[] = {\n    {{{   168,    205,     53}, 0, {   650,    990}, {0xc0, 0x00, 0x6d, 0xff}}},\n    {{{    -7,    410,    -51}, 0, {     0,    308}, {0xc0, 0x00, 0x6d, 0xff}}},\n    {{{    -7,    205,    -51}, 0, {     0,    990}, {0xc0, 0x00, 0x6d, 0xff}}},\n    {{{   168,    410,     53}, 0, {   650,    308}, {0xc0, 0x00, 0x6d, 0xff}}},\n    {{{    44,    205,   -139}, 0, {   730,    990}, {0x09, 0x00, 0x82, 0xff}}},\n    {{{    44,    410,   -139}, 0, {   730,    308}, {0x09, 0x00, 0x82, 0xff}}},\n    {{{   272,    410,   -122}, 0, {     0,    308}, {0x09, 0x00, 0x82, 0xff}}},\n    {{{   272,    205,   -122}, 0, {     0,    990}, {0x09, 0x00, 0x82, 0xff}}},\n};\n\n// 0x070113F8 - 0x070114B8\nstatic const Vtx ttm_seg7_vertex_070113F8[] = {\n    {{{   272,    410,   -122}, 0, {  1126, -16018}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    44,    410,   -139}, 0, {   670, -16052}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    -7,    410,    -51}, 0, {   564, -15878}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   168,    410,     53}, 0, {   916, -15668}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   375,   -306,   -295}, 0, {  1332, -16364}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -133,   -306,   -241}, 0, {   314, -16256}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -498,   -306,    585}, 0, {  -412, -14606}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -206,   -306,    682}, 0, {   168, -14412}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   430,    205,   -386}, 0, {  1440, -16546}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -185,    205,   -753}, 0, {   210, -17278}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -271,    205,   -208}, 0, {    38, -16192}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   168,    205,     53}, 0, {   916, -15668}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070114B8 - 0x070115B0\nstatic const Gfx ttm_seg7_dl_070114B8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_070111A0.l, 1),\n    gsSPLight(&ttm_seg7_lights_070111A0.a, 2),\n    gsSPVertex(ttm_seg7_vertex_070111E8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPLight(&ttm_seg7_lights_070111B8.l, 1),\n    gsSPLight(&ttm_seg7_lights_070111B8.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07011228, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle( 0,  2, 12, 0x0),\n    gsSPLight(&ttm_seg7_lights_070111D0.l, 1),\n    gsSPLight(&ttm_seg7_lights_070111D0.a, 2),\n    gsSPVertex(ttm_seg7_vertex_070112F8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPLight(&ttm_seg7_lights_070111A0.l, 1),\n    gsSPLight(&ttm_seg7_lights_070111A0.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07011378, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070115B0 - 0x07011608\nstatic const Gfx ttm_seg7_dl_070115B0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttm_seg7_vertex_070113F8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07011608 - 0x07011680\nconst Gfx ttm_seg7_dl_07011608[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_070114B8),\n    gsSPDisplayList(ttm_seg7_dl_070115B0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/21/1.inc.c",
    "content": "// 0x07011680 - 0x07011698\nstatic const Lights1 ttm_seg7_lights_07011680 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07011698 - 0x070116B0\nstatic const Lights1 ttm_seg7_lights_07011698 = gdSPDefLights1(\n    0x5d, 0x5d, 0x5d,\n    0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28\n);\n\n// 0x070116B0 - 0x070116C8\nstatic const Lights1 ttm_seg7_lights_070116B0 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x070116C8 - 0x070117C8\nstatic const Vtx ttm_seg7_vertex_070116C8[] = {\n    {{{  -519,   -306,    -91}, 0, {  2524,    990}, {0x64, 0x00, 0x4d, 0xff}}},\n    {{{  -206,   -306,   -497}, 0, {     0,    990}, {0x64, 0x00, 0x4d, 0xff}}},\n    {{{  -206,    307,   -497}, 0, {     0,  -2076}, {0x64, 0x00, 0x4d, 0xff}}},\n    {{{  -519,    307,    -91}, 0, {   480,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -206,    307,   -497}, 0, {   480,   3542}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   604,    307,    126}, 0, {  5588,   3542}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   292,    307,    532}, 0, {  5588,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   292,    307,    532}, 0, {  2524,  -2076}, {0x9c, 0x00, 0xb3, 0xff}}},\n    {{{   604,   -306,    126}, 0, {     0,    990}, {0x9c, 0x00, 0xb3, 0xff}}},\n    {{{   292,   -306,    532}, 0, {  2522,    990}, {0x9c, 0x00, 0xb3, 0xff}}},\n    {{{   604,    307,    126}, 0, {     0,  -2076}, {0x9c, 0x00, 0xb3, 0xff}}},\n    {{{  -206,    307,   -497}, 0, {     0,  -2076}, {0xb3, 0x00, 0x64, 0xff}}},\n    {{{  -206,   -306,   -497}, 0, {     0,    990}, {0xb3, 0x00, 0x64, 0xff}}},\n    {{{   604,   -306,    126}, 0, {  5078,    990}, {0xb3, 0x00, 0x64, 0xff}}},\n    {{{   604,    307,    126}, 0, {  5078,  -2076}, {0xb3, 0x00, 0x64, 0xff}}},\n    {{{  -519,    307,    -91}, 0, {  2524,  -2076}, {0x64, 0x00, 0x4d, 0xff}}},\n};\n\n// 0x070117C8 - 0x07011808\nstatic const Vtx ttm_seg7_vertex_070117C8[] = {\n    {{{    30,    307,    201}, 0, {     0,      0}, {0xb3, 0x00, 0x64, 0xff}}},\n    {{{   355,    102,    451}, 0, {   990,    990}, {0xb3, 0x00, 0x64, 0xff}}},\n    {{{   355,    307,    451}, 0, {   990,      0}, {0xb3, 0x00, 0x64, 0xff}}},\n    {{{    30,    102,    201}, 0, {     0,    990}, {0xb3, 0x00, 0x64, 0xff}}},\n};\n\n// 0x07011808 - 0x070118F8\nstatic const Vtx ttm_seg7_vertex_07011808[] = {\n    {{{   336,    307,    307}, 0, {   734,      0}, {0x4d, 0x00, 0x9c, 0xff}}},\n    {{{   336,    102,    307}, 0, {   734,    990}, {0x4d, 0x00, 0x9c, 0xff}}},\n    {{{   173,    102,    182}, 0, {   224,    990}, {0x4d, 0x00, 0x9c, 0xff}}},\n    {{{   280,    307,   -123}, 0, {     0,      0}, {0x9c, 0x00, 0xb3, 0xff}}},\n    {{{   280,    102,   -123}, 0, {     0,    990}, {0x9c, 0x00, 0xb3, 0xff}}},\n    {{{    30,    102,    201}, 0, {   990,    990}, {0x9c, 0x00, 0xb3, 0xff}}},\n    {{{    30,    307,    201}, 0, {   990,      0}, {0x9c, 0x00, 0xb3, 0xff}}},\n    {{{   280,    102,   -123}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   173,    102,    182}, 0, {   734,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    30,    102,    201}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   298,    102,     20}, 0, {   224,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   604,    102,    126}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   461,    102,    145}, 0, {   224,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   355,    102,    451}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   173,    307,    182}, 0, {   224,      0}, {0x4d, 0x00, 0x9c, 0xff}}},\n};\n\n// 0x070118F8 - 0x070119F8\nstatic const Vtx ttm_seg7_vertex_070118F8[] = {\n    {{{   173,    307,    182}, 0, {   734,      0}, {0x64, 0x00, 0x4d, 0xff}}},\n    {{{   173,    102,    182}, 0, {   734,    990}, {0x64, 0x00, 0x4d, 0xff}}},\n    {{{   298,    102,     20}, 0, {   224,    990}, {0x64, 0x00, 0x4d, 0xff}}},\n    {{{   461,    307,    145}, 0, {   224,      0}, {0x9c, 0x00, 0xb3, 0xff}}},\n    {{{   461,    102,    145}, 0, {   224,    990}, {0x9c, 0x00, 0xb3, 0xff}}},\n    {{{   336,    102,    307}, 0, {   734,    990}, {0x9c, 0x00, 0xb3, 0xff}}},\n    {{{   336,    307,    307}, 0, {   734,      0}, {0x9c, 0x00, 0xb3, 0xff}}},\n    {{{   355,    102,    451}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   461,    102,    145}, 0, {   224,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   604,    102,    126}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   336,    102,    307}, 0, {   734,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   173,    102,    182}, 0, {   734,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   298,    307,     20}, 0, {   224,      0}, {0xb3, 0x00, 0x64, 0xff}}},\n    {{{   461,    102,    145}, 0, {   734,    990}, {0xb3, 0x00, 0x64, 0xff}}},\n    {{{   461,    307,    145}, 0, {   734,      0}, {0xb3, 0x00, 0x64, 0xff}}},\n    {{{   298,    102,     20}, 0, {   224,    990}, {0xb3, 0x00, 0x64, 0xff}}},\n};\n\n// 0x070119F8 - 0x07011A28\nstatic const Vtx ttm_seg7_vertex_070119F8[] = {\n    {{{   173,    307,    182}, 0, {   734,      0}, {0x64, 0x00, 0x4d, 0xff}}},\n    {{{   298,    102,     20}, 0, {   224,    990}, {0x64, 0x00, 0x4d, 0xff}}},\n    {{{   298,    307,     20}, 0, {   224,      0}, {0x64, 0x00, 0x4d, 0xff}}},\n};\n\n// 0x07011A28 - 0x07011A68\nstatic const Vtx ttm_seg7_vertex_07011A28[] = {\n    {{{   292,   -306,    532}, 0, {  -878,  -2448}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   604,   -306,    126}, 0, {  -254,  -3258}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -206,   -306,   -497}, 0, { -1874,  -4504}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -519,   -306,    -91}, 0, { -2498,  -3694}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07011A68 - 0x07011AA8\nstatic const Vtx ttm_seg7_vertex_07011A68[] = {\n    {{{   298,    297,     20}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   461,    297,    145}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   336,    297,    307}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   173,    297,    182}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07011AA8 - 0x07011B20\nstatic const Gfx ttm_seg7_dl_07011AA8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_07011680.l, 1),\n    gsSPLight(&ttm_seg7_lights_07011680.a, 2),\n    gsSPVertex(ttm_seg7_vertex_070116C8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07011B20 - 0x07011C10\nstatic const Gfx ttm_seg7_dl_07011B20[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_0900A800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttm_seg7_vertex_070117C8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPLight(&ttm_seg7_lights_07011698.l, 1),\n    gsSPLight(&ttm_seg7_lights_07011698.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07011808, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  7, 11, 12, 0x0),\n    gsSP2Triangles( 7, 12, 10, 0x0,  8, 13,  9, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070118F8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 10,  7, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070119F8, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07011C10 - 0x07011C48\nstatic const Gfx ttm_seg7_dl_07011C10[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttm_seg7_vertex_07011A28, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07011C48 - 0x07011C78\nstatic const Gfx ttm_seg7_dl_07011C48[] = {\n    gsSPLight(&ttm_seg7_lights_070116B0.l, 1),\n    gsSPLight(&ttm_seg7_lights_070116B0.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07011A68, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07011C78 - 0x07011D00\nconst Gfx ttm_seg7_dl_07011C78[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_07011AA8),\n    gsSPDisplayList(ttm_seg7_dl_07011B20),\n    gsSPDisplayList(ttm_seg7_dl_07011C10),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(ttm_seg7_dl_07011C48),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/21/2.inc.c",
    "content": "// 0x07011D00 - 0x07011D40\nstatic const Vtx ttm_seg7_vertex_07011D00[] = {\n    {{{  -519,   -204,    -91}, 0, { -4490,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -519,   -306,    -91}, 0, { -4490,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   292,   -306,    532}, 0, {  5728,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   292,   -204,    532}, 0, {  5728,      0}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07011D40 - 0x07011D78\nstatic const Gfx ttm_seg7_dl_07011D40[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttm_seg7_vertex_07011D00, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07011D78 - 0x07011DE8\nconst Gfx ttm_seg7_dl_07011D78[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_07011D40),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/21/geo.inc.c",
    "content": "// 0x0E000A40\nconst GeoLayout ttm_geo_000A40[] = {\n    GEO_CULLING_RADIUS(900),\n    GEO_OPEN_NODE(),\n        GEO_RENDER_RANGE(-1900, 5000),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, ttm_seg7_dl_07011C78),\n            GEO_DISPLAY_LIST(LAYER_ALPHA, ttm_seg7_dl_07011D78),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/3/1.inc.c",
    "content": "// 0x0700A340 - 0x0700A358\nstatic const Lights1 ttm_seg7_lights_0700A340 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700A358 - 0x0700A370\nstatic const Lights1 ttm_seg7_lights_0700A358 = gdSPDefLights1(\n    0x7f, 0x7f, 0x64,\n    0xff, 0xff, 0xc9, 0x28, 0x28, 0x28\n);\n\n// 0x0700A370 - 0x0700A460\nstatic const Vtx ttm_seg7_vertex_0700A370[] = {\n    {{{   442,   1720,    -78}, 0, {   910,    492}, {0x27, 0x78, 0xfb, 0xff}}},\n    {{{   641,   1596,   -121}, 0, {  1122,    476}, {0x76, 0x2a, 0xef, 0xff}}},\n    {{{   400,   1597,   -525}, 0, {   936,     24}, {0x3a, 0x50, 0xb2, 0xff}}},\n    {{{   442,   1720,    -78}, 0, {   346,   -154}, {0x27, 0x78, 0xfb, 0xff}}},\n    {{{   526,   1601,    334}, 0, {  -102,     68}, {0x50, 0x42, 0x48, 0xff}}},\n    {{{   641,   1596,   -121}, 0, {   454,     74}, {0x76, 0x2a, 0xef, 0xff}}},\n    {{{   526,   1352,    334}, 0, {  -104,    332}, {0x57, 0xb1, 0x2d, 0xff}}},\n    {{{   641,   1352,   -121}, 0, {   454,    332}, {0x4b, 0x9b, 0xf6, 0xff}}},\n    {{{   -50,   1720,   -445}, 0, {   458,     40}, {0xfb, 0x7a, 0xde, 0xff}}},\n    {{{    75,   1720,    414}, 0, {   458,    942}, {0x04, 0x79, 0x24, 0xff}}},\n    {{{  -417,   1720,     47}, 0, {     8,    492}, {0xd3, 0x76, 0x06, 0xff}}},\n    {{{  -332,   1603,    460}, 0, {    32,    928}, {0xc7, 0x3e, 0x5e, 0xff}}},\n    {{{   123,   1601,    575}, 0, {   484,   1112}, {0x0f, 0x3b, 0x6f, 0xff}}},\n    {{{   526,   1601,    334}, 0, {   936,    928}, {0x50, 0x42, 0x48, 0xff}}},\n    {{{   -55,   1597,   -640}, 0, {   484,   -162}, {0xef, 0x29, 0x8a, 0xff}}},\n};\n\n// 0x0700A460 - 0x0700A560\nstatic const Vtx ttm_seg7_vertex_0700A460[] = {\n    {{{  -417,   1720,     47}, 0, {  -110,    234}, {0xd3, 0x76, 0x06, 0xff}}},\n    {{{  -574,   1602,     56}, 0, {    18,    292}, {0x89, 0x26, 0x11, 0xff}}},\n    {{{  -332,   1603,    460}, 0, {   174,   -216}, {0xc7, 0x3e, 0x5e, 0xff}}},\n    {{{  -458,   1597,   -399}, 0, {  -130,    802}, {0xaf, 0x4c, 0xc4, 0xff}}},\n    {{{  -459,   1352,   -399}, 0, {   156,    890}, {0xa9, 0xc0, 0xbf, 0xff}}},\n    {{{  -574,   1352,     56}, 0, {   312,    382}, {0xb5, 0x9b, 0x0b, 0xff}}},\n    {{{  -333,   1352,    460}, 0, {   468,   -126}, {0xba, 0xb1, 0x45, 0xff}}},\n    {{{  -417,   1720,     47}, 0, {     8,    492}, {0xd3, 0x76, 0x06, 0xff}}},\n    {{{  -458,   1597,   -399}, 0, {    32,     24}, {0xaf, 0x4c, 0xc4, 0xff}}},\n    {{{  -574,   1602,     56}, 0, {  -154,    476}, {0x89, 0x26, 0x11, 0xff}}},\n    {{{   -50,   1720,   -445}, 0, {   458,     40}, {0xfb, 0x7a, 0xde, 0xff}}},\n    {{{   -55,   1597,   -640}, 0, {   484,   -162}, {0xef, 0x29, 0x8a, 0xff}}},\n    {{{   526,   1352,    334}, 0, {  1068,    752}, {0x57, 0xb1, 0x2d, 0xff}}},\n    {{{   526,   1601,    334}, 0, {  1068,    480}, {0x50, 0x42, 0x48, 0xff}}},\n    {{{   122,   1352,    575}, 0, {   586,    752}, {0x0f, 0xc0, 0x6c, 0xff}}},\n    {{{   123,   1601,    575}, 0, {   586,    480}, {0x0f, 0x3b, 0x6f, 0xff}}},\n};\n\n// 0x0700A560 - 0x0700A640\nstatic const Vtx ttm_seg7_vertex_0700A560[] = {\n    {{{   122,   1352,    575}, 0, {   586,    752}, {0x0f, 0xc0, 0x6c, 0xff}}},\n    {{{  -332,   1603,    460}, 0, {   104,    480}, {0xc7, 0x3e, 0x5e, 0xff}}},\n    {{{  -333,   1352,    460}, 0, {   104,    752}, {0xba, 0xb1, 0x45, 0xff}}},\n    {{{   123,   1601,    575}, 0, {   586,    480}, {0x0f, 0x3b, 0x6f, 0xff}}},\n    {{{  -459,   1352,   -399}, 0, {   810,    684}, {0xa9, 0xc0, 0xbf, 0xff}}},\n    {{{  -458,   1597,   -399}, 0, {   810,    480}, {0xaf, 0x4c, 0xc4, 0xff}}},\n    {{{   -55,   1597,   -640}, 0, {   534,    478}, {0xef, 0x29, 0x8a, 0xff}}},\n    {{{   -55,   1352,   -640}, 0, {   534,    682}, {0xf6, 0x9b, 0xb5, 0xff}}},\n    {{{   400,   1597,   -525}, 0, {   142,    480}, {0x3a, 0x50, 0xb2, 0xff}}},\n    {{{   400,   1352,   -525}, 0, {   142,    684}, {0x41, 0xc0, 0xa9, 0xff}}},\n    {{{   400,   1352,   -525}, 0, {   114,   1692}, {0x41, 0xc0, 0xa9, 0xff}}},\n    {{{   641,   1596,   -121}, 0, {   404,   1134}, {0x76, 0x2a, 0xef, 0xff}}},\n    {{{   641,   1352,   -121}, 0, {   114,   1134}, {0x4b, 0x9b, 0xf6, 0xff}}},\n    {{{   400,   1597,   -525}, 0, {   406,   1692}, {0x3a, 0x50, 0xb2, 0xff}}},\n};\n\n// 0x0700A640 - 0x0700A710\nstatic const Vtx ttm_seg7_vertex_0700A640[] = {\n    {{{    28,   1473,    -46}, 0, {     0,      0}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{  -574,   1352,     56}, 0, {   -52,    986}, {0xb5, 0x9b, 0x0b, 0xff}}},\n    {{{  -459,   1352,   -399}, 0, {   668,    688}, {0xa9, 0xc0, 0xbf, 0xff}}},\n    {{{  -333,   1352,    460}, 0, {   714,    688}, {0xba, 0xb1, 0x45, 0xff}}},\n    {{{  -574,   1352,     56}, 0, {   -10,    986}, {0xb5, 0x9b, 0x0b, 0xff}}},\n    {{{   122,   1352,    575}, 0, {  1012,    -36}, {0x0f, 0xc0, 0x6c, 0xff}}},\n    {{{   526,   1352,    334}, 0, {   714,    694}, {0x57, 0xb1, 0x2d, 0xff}}},\n    {{{   122,   1352,    575}, 0, {  1012,    -28}, {0x0f, 0xc0, 0x6c, 0xff}}},\n    {{{   641,   1352,   -121}, 0, {   -10,    992}, {0x4b, 0x9b, 0xf6, 0xff}}},\n    {{{   400,   1352,   -525}, 0, {   694,    668}, {0x41, 0xc0, 0xa9, 0xff}}},\n    {{{   641,   1352,   -121}, 0, {   994,    -54}, {0x4b, 0x9b, 0xf6, 0xff}}},\n    {{{   -55,   1352,   -640}, 0, {   -28,    968}, {0xf6, 0x9b, 0xb5, 0xff}}},\n    {{{   -55,   1352,   -640}, 0, {   968,    -36}, {0xf6, 0x9b, 0xb5, 0xff}}},\n};\n\n// 0x0700A710 - 0x0700A848\nstatic const Gfx ttm_seg7_dl_0700A710[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_0700A340.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700A340.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700A370, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9,  0, 0x0,  8, 10,  9, 0x0),\n    gsSP2Triangles(10, 11,  9, 0x0,  9, 11, 12, 0x0),\n    gsSP2Triangles( 9, 13,  0, 0x0,  9, 12, 13, 0x0),\n    gsSP2Triangles( 0,  2,  8, 0x0,  8,  2, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0700A460, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  6,  1,  5, 0x0),\n    gsSP2Triangles( 6,  2,  1, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  8,  7, 0x0, 10, 11,  8, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0700A560, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A848 - 0x0700A8C0\nstatic const Gfx ttm_seg7_dl_0700A848[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ttm_seg7_texture_07000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_0700A358.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700A358.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700A640, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  5,  3, 0x0,  0,  6,  7, 0x0),\n    gsSP2Triangles( 0,  8,  6, 0x0,  0,  9, 10, 0x0),\n    gsSP2Triangles(11,  9,  0, 0x0,  0,  2, 12, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A8C0 - 0x0700A928\nconst Gfx ttm_seg7_dl_0700A8C0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_0700A710),\n    gsSPDisplayList(ttm_seg7_dl_0700A848),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/3/2.inc.c",
    "content": "// 0x0700A928 - 0x0700A940\nstatic const Lights1 ttm_seg7_lights_0700A928 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700A940 - 0x0700A9C0\nstatic const Vtx ttm_seg7_vertex_0700A940[] = {\n    {{{    80,    654,   -199}, 0, {   308,    138}, {0x39, 0xf5, 0x70, 0xff}}},\n    {{{   -22,    654,   -199}, 0, {   308,    138}, {0x8f, 0xfb, 0x38, 0xff}}},\n    {{{   -22,  -1719,    -97}, 0, {     0,    990}, {0xc8, 0x04, 0x71, 0xff}}},\n    {{{    80,  -1719,    -97}, 0, {     0,    990}, {0x71, 0x02, 0x38, 0xff}}},\n    {{{    80,    654,   -302}, 0, {   650,    138}, {0x65, 0x03, 0xb5, 0xff}}},\n    {{{   -22,  -1719,   -199}, 0, {   308,    990}, {0xa7, 0xfd, 0xa7, 0xff}}},\n    {{{   -22,    654,   -302}, 0, {   650,    138}, {0xba, 0x0f, 0x98, 0xff}}},\n    {{{    80,  -1719,   -199}, 0, {   308,    990}, {0x59, 0xfd, 0xa7, 0xff}}},\n};\n\n// 0x0700A9C0 - 0x0700AA40\nstatic const Vtx ttm_seg7_vertex_0700A9C0[] = {\n    {{{    80,    654,   -302}, 0, {     0,      0}, {0x65, 0x03, 0xb5, 0xff}}},\n    {{{    80,   1473,      5}, 0, {     0,      0}, {0x71, 0xf3, 0x37, 0xff}}},\n    {{{    80,    654,   -199}, 0, {     0,      0}, {0x39, 0xf5, 0x70, 0xff}}},\n    {{{   -22,   1473,      5}, 0, {     0,      0}, {0xc8, 0xe5, 0x6e, 0xff}}},\n    {{{   -22,    654,   -199}, 0, {     0,      0}, {0x8f, 0xfb, 0x38, 0xff}}},\n    {{{    80,   1473,    -97}, 0, {     0,      0}, {0x38, 0x1b, 0x92, 0xff}}},\n    {{{   -22,   1473,    -97}, 0, {     0,      0}, {0x8f, 0x0d, 0xc9, 0xff}}},\n    {{{   -22,    654,   -302}, 0, {     0,      0}, {0xba, 0x0f, 0x98, 0xff}}},\n};\n\n// 0x0700AA40 - 0x0700AAB8\nstatic const Gfx ttm_seg7_dl_0700AA40[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, ttm_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_0700A928.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700A928.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700A940, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  0,  3, 0x0,  2,  1,  5, 0x0),\n    gsSP2Triangles( 1,  6,  5, 0x0,  7,  4,  3, 0x0),\n    gsSP2Triangles( 5,  6,  4, 0x0,  5,  4,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700AAB8 - 0x0700AB08\nstatic const Gfx ttm_seg7_dl_0700AAB8[] = {\n    gsSPVertex(ttm_seg7_vertex_0700A9C0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 7,  5,  0, 0x0,  7,  6,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700AB08 - 0x0700AB70\nconst Gfx ttm_seg7_dl_0700AB08[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_0700AA40),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(ttm_seg7_dl_0700AAB8),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/3/geo.inc.c",
    "content": "// 0x0E000748\nconst GeoLayout ttm_geo_000748[] = {\n    GEO_CULLING_RADIUS(1800),\n    GEO_OPEN_NODE(),\n        GEO_RENDER_RANGE(-2800, 10000),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, ttm_seg7_dl_0700A8C0),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, ttm_seg7_dl_0700AB08),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/4/1.inc.c",
    "content": "// 0x0700AB70 - 0x0700AB88\nstatic const Lights1 ttm_seg7_lights_0700AB70 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0x99, 0x99, 0x99, 0x28, 0x28, 0x28\n);\n\n// 0x0700AB88 - 0x0700AC78\nstatic const Vtx ttm_seg7_vertex_0700AB88[] = {\n    {{{   214,   1635,     21}, 0, {   910,    492}, {0x27, 0x78, 0xfb, 0xff}}},\n    {{{   330,   1563,     -4}, 0, {  1122,    476}, {0x76, 0x2a, 0xef, 0xff}}},\n    {{{   190,   1564,   -239}, 0, {   936,     24}, {0x3a, 0x50, 0xb2, 0xff}}},\n    {{{   214,   1635,     21}, 0, {   346,   -154}, {0x27, 0x78, 0xfb, 0xff}}},\n    {{{   263,   1566,    261}, 0, {  -102,     68}, {0x50, 0x42, 0x48, 0xff}}},\n    {{{   330,   1563,     -4}, 0, {   454,     74}, {0x76, 0x2a, 0xef, 0xff}}},\n    {{{   263,   1420,    261}, 0, {  -104,    332}, {0x6f, 0x00, 0x3d, 0xff}}},\n    {{{   330,   1420,     -4}, 0, {   454,    332}, {0x7d, 0x00, 0xee, 0xff}}},\n    {{{  -287,   1635,     94}, 0, {     8,    492}, {0xd3, 0x76, 0x06, 0xff}}},\n    {{{  -237,   1567,    335}, 0, {    32,    928}, {0xc7, 0x3e, 0x5e, 0xff}}},\n    {{{     0,   1635,    308}, 0, {   458,    942}, {0x04, 0x79, 0x24, 0xff}}},\n    {{{    28,   1566,    402}, 0, {   484,   1112}, {0x0f, 0x3b, 0x6f, 0xff}}},\n    {{{   263,   1566,    261}, 0, {   936,    928}, {0x50, 0x42, 0x48, 0xff}}},\n    {{{   -73,   1635,   -192}, 0, {   458,     40}, {0xfb, 0x7a, 0xdf, 0xff}}},\n    {{{   -75,   1564,   -306}, 0, {   484,   -162}, {0xef, 0x29, 0x8a, 0xff}}},\n};\n\n// 0x0700AC78 - 0x0700AD78\nstatic const Vtx ttm_seg7_vertex_0700AC78[] = {\n    {{{  -287,   1635,     94}, 0, {  -110,    234}, {0xd3, 0x76, 0x06, 0xff}}},\n    {{{  -378,   1567,    100}, 0, {    18,    292}, {0x89, 0x26, 0x11, 0xff}}},\n    {{{  -237,   1567,    335}, 0, {   174,   -216}, {0xc7, 0x3e, 0x5e, 0xff}}},\n    {{{  -238,   1420,    335}, 0, {   468,   -126}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{  -378,   1420,    100}, 0, {   312,    382}, {0x83, 0x00, 0x12, 0xff}}},\n    {{{  -311,   1564,   -165}, 0, {  -130,    802}, {0xaf, 0x4c, 0xc4, 0xff}}},\n    {{{  -311,   1420,   -165}, 0, {   156,    890}, {0x9b, 0x00, 0xb5, 0xff}}},\n    {{{  -287,   1635,     94}, 0, {     8,    492}, {0xd3, 0x76, 0x06, 0xff}}},\n    {{{  -311,   1564,   -165}, 0, {    32,     24}, {0xaf, 0x4c, 0xc4, 0xff}}},\n    {{{  -378,   1567,    100}, 0, {  -154,    476}, {0x89, 0x26, 0x11, 0xff}}},\n    {{{   -73,   1635,   -192}, 0, {   458,     40}, {0xfb, 0x7a, 0xdf, 0xff}}},\n    {{{   -75,   1564,   -306}, 0, {   484,   -162}, {0xef, 0x29, 0x8a, 0xff}}},\n    {{{   263,   1420,    261}, 0, {  1068,    752}, {0x6f, 0x00, 0x3d, 0xff}}},\n    {{{   263,   1566,    261}, 0, {  1068,    480}, {0x50, 0x42, 0x48, 0xff}}},\n    {{{    27,   1420,    402}, 0, {   586,    752}, {0x12, 0x00, 0x7d, 0xff}}},\n    {{{    28,   1566,    402}, 0, {   586,    480}, {0x0f, 0x3b, 0x6f, 0xff}}},\n};\n\n// 0x0700AD78 - 0x0700AE58\nstatic const Vtx ttm_seg7_vertex_0700AD78[] = {\n    {{{    27,   1420,    402}, 0, {   586,    752}, {0x12, 0x00, 0x7d, 0xff}}},\n    {{{  -237,   1567,    335}, 0, {   104,    480}, {0xc7, 0x3e, 0x5e, 0xff}}},\n    {{{  -238,   1420,    335}, 0, {   104,    752}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{    28,   1566,    402}, 0, {   586,    480}, {0x0f, 0x3b, 0x6f, 0xff}}},\n    {{{  -311,   1420,   -165}, 0, {   810,    684}, {0x9b, 0x00, 0xb5, 0xff}}},\n    {{{   -75,   1564,   -306}, 0, {   534,    478}, {0xef, 0x29, 0x8a, 0xff}}},\n    {{{   -76,   1420,   -306}, 0, {   534,    682}, {0xee, 0x00, 0x83, 0xff}}},\n    {{{  -311,   1564,   -165}, 0, {   810,    480}, {0xaf, 0x4c, 0xc4, 0xff}}},\n    {{{   189,   1420,   -239}, 0, {   142,    684}, {0x4b, 0x00, 0x9b, 0xff}}},\n    {{{   190,   1564,   -239}, 0, {   142,    480}, {0x3a, 0x50, 0xb2, 0xff}}},\n    {{{   189,   1420,   -239}, 0, {   114,   1692}, {0x4b, 0x00, 0x9b, 0xff}}},\n    {{{   330,   1563,     -4}, 0, {   404,   1134}, {0x76, 0x2a, 0xef, 0xff}}},\n    {{{   330,   1420,     -4}, 0, {   114,   1134}, {0x7d, 0x00, 0xee, 0xff}}},\n    {{{   190,   1564,   -239}, 0, {   406,   1692}, {0x3a, 0x50, 0xb2, 0xff}}},\n};\n\n// 0x0700AE58 - 0x0700AF90\nstatic const Gfx ttm_seg7_dl_0700AE58[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_0700AB70.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700AB70.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700AB88, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 12,  0, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(13, 10,  0, 0x0, 13,  8, 10, 0x0),\n    gsSP2Triangles( 0,  2, 13, 0x0, 13,  2, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0700AC78, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  4, 0x0),\n    gsSP2Triangles( 3,  2,  1, 0x0,  1,  5,  6, 0x0),\n    gsSP2Triangles( 1,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  8,  7, 0x0, 10, 11,  8, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0700AD78, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  5,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700AF90 - 0x0700AFF0\nconst Gfx ttm_seg7_dl_0700AF90[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_0700AE58),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/4/2.inc.c",
    "content": "// 0x0700AFF0 - 0x0700B008\nstatic const Lights1 ttm_seg7_lights_0700AFF0 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0x99, 0x99, 0x99, 0x28, 0x28, 0x28\n);\n\n// 0x0700B008 - 0x0700B068\nstatic const Vtx ttm_seg7_vertex_0700B008[] = {\n    {{{   -43,   1523,     95}, 0, {   990,      0}, {0xd3, 0x00, 0x76, 0xff}}},\n    {{{   -58,   1523,      9}, 0, {   510,      0}, {0xeb, 0x00, 0x83, 0xff}}},\n    {{{   -58,  -1634,      9}, 0, {   510,    990}, {0x89, 0x00, 0xd5, 0xff}}},\n    {{{    26,  -1634,     40}, 0, {     0,    990}, {0x7d, 0x00, 0xec, 0xff}}},\n    {{{    26,   1523,     40}, 0, {     0,      0}, {0x7d, 0x00, 0xec, 0xff}}},\n    {{{   -43,  -1634,     95}, 0, {   990,    990}, {0xd3, 0x00, 0x76, 0xff}}},\n};\n\n// 0x0700B068 - 0x0700B0D0\nstatic const Gfx ttm_seg7_dl_0700B068[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, ttm_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_0700AFF0.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700AFF0.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700B008, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 3,  0,  5, 0x0,  5,  0,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700B0D0 - 0x0700B130\nconst Gfx ttm_seg7_dl_0700B0D0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_0700B068),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/4/geo.inc.c",
    "content": "// 0x0E000778\nconst GeoLayout ttm_geo_000778[] = {\n    GEO_CULLING_RADIUS(1700),\n    GEO_OPEN_NODE(),\n        GEO_RENDER_RANGE(-2700, 6500),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, ttm_seg7_dl_0700AF90),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, ttm_seg7_dl_0700B0D0),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/5/1.inc.c",
    "content": "// 0x0700B130 - 0x0700B148\nstatic const Lights1 ttm_seg7_lights_0700B130 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0x99, 0x99, 0x99, 0x28, 0x28, 0x28\n);\n\n// 0x0700B148 - 0x0700B248\nstatic const Vtx ttm_seg7_vertex_0700B148[] = {\n    {{{   189,   1503,   -188}, 0, {   114,   1692}, {0x4b, 0x00, 0x9b, 0xff}}},\n    {{{   288,   1603,    -23}, 0, {   404,   1134}, {0x76, 0x2a, 0xef, 0xff}}},\n    {{{   288,   1503,    -23}, 0, {   114,   1134}, {0x7d, 0x00, 0xee, 0xff}}},\n    {{{   189,   1604,   -188}, 0, {   406,   1692}, {0x3a, 0x51, 0xb2, 0xff}}},\n    {{{  -161,   1503,   -136}, 0, {   810,    684}, {0x9b, 0x00, 0xb5, 0xff}}},\n    {{{     3,   1604,   -235}, 0, {   534,    478}, {0xee, 0x2a, 0x8a, 0xff}}},\n    {{{     3,   1503,   -235}, 0, {   534,    682}, {0xee, 0x00, 0x83, 0xff}}},\n    {{{  -161,   1604,   -136}, 0, {   810,    480}, {0xaf, 0x4d, 0xc4, 0xff}}},\n    {{{   189,   1503,   -188}, 0, {   142,    684}, {0x4b, 0x00, 0x9b, 0xff}}},\n    {{{   189,   1604,   -188}, 0, {   142,    480}, {0x3a, 0x51, 0xb2, 0xff}}},\n    {{{  -144,   1653,     45}, 0, {  -110,    234}, {0xd4, 0x76, 0x06, 0xff}}},\n    {{{  -208,   1606,     49}, 0, {    18,    292}, {0x89, 0x26, 0x11, 0xff}}},\n    {{{  -109,   1606,    214}, 0, {   174,   -216}, {0xc7, 0x3e, 0x5d, 0xff}}},\n    {{{  -161,   1604,   -136}, 0, {  -130,    802}, {0xaf, 0x4d, 0xc4, 0xff}}},\n    {{{  -161,   1503,   -136}, 0, {   156,    890}, {0x9b, 0x00, 0xb5, 0xff}}},\n    {{{  -208,   1503,     49}, 0, {   312,    382}, {0x83, 0x00, 0x12, 0xff}}},\n};\n\n// 0x0700B248 - 0x0700B338\nstatic const Vtx ttm_seg7_vertex_0700B248[] = {\n    {{{  -109,   1503,    214}, 0, {   468,   -126}, {0xa8, 0x00, 0x5a, 0xff}}},\n    {{{  -208,   1606,     49}, 0, {    18,    292}, {0x89, 0x26, 0x11, 0xff}}},\n    {{{  -208,   1503,     49}, 0, {   312,    382}, {0x83, 0x00, 0x12, 0xff}}},\n    {{{  -109,   1606,    214}, 0, {   174,   -216}, {0xc7, 0x3e, 0x5d, 0xff}}},\n    {{{   241,   1503,    162}, 0, {  1068,    752}, {0x6f, 0x00, 0x3d, 0xff}}},\n    {{{   241,   1605,    162}, 0, {  1068,    480}, {0x50, 0x42, 0x48, 0xff}}},\n    {{{    76,   1503,    261}, 0, {   586,    752}, {0x12, 0x00, 0x7d, 0xff}}},\n    {{{    76,   1605,    261}, 0, {   586,    480}, {0x0f, 0x3b, 0x6e, 0xff}}},\n    {{{  -109,   1606,    214}, 0, {   104,    480}, {0xc7, 0x3e, 0x5d, 0xff}}},\n    {{{  -109,   1503,    214}, 0, {   104,    752}, {0xa8, 0x00, 0x5a, 0xff}}},\n    {{{   206,   1653,     -5}, 0, {   346,   -154}, {0x27, 0x78, 0xfb, 0xff}}},\n    {{{   241,   1605,    162}, 0, {  -102,     68}, {0x50, 0x42, 0x48, 0xff}}},\n    {{{   288,   1603,    -23}, 0, {   454,     74}, {0x76, 0x2a, 0xef, 0xff}}},\n    {{{   241,   1503,    162}, 0, {  -104,    332}, {0x6f, 0x00, 0x3d, 0xff}}},\n    {{{   288,   1503,    -23}, 0, {   454,    332}, {0x7d, 0x00, 0xee, 0xff}}},\n};\n\n// 0x0700B338 - 0x0700B3F8\nstatic const Vtx ttm_seg7_vertex_0700B338[] = {\n    {{{     5,   1653,   -155}, 0, {   458,     40}, {0xfb, 0x7a, 0xdf, 0xff}}},\n    {{{  -161,   1604,   -136}, 0, {    32,     24}, {0xaf, 0x4d, 0xc4, 0xff}}},\n    {{{  -144,   1653,     45}, 0, {     8,    492}, {0xd4, 0x76, 0x06, 0xff}}},\n    {{{   189,   1604,   -188}, 0, {   936,     24}, {0x3a, 0x51, 0xb2, 0xff}}},\n    {{{     3,   1604,   -235}, 0, {   484,   -162}, {0xee, 0x2a, 0x8a, 0xff}}},\n    {{{   206,   1653,     -5}, 0, {   910,    492}, {0x27, 0x78, 0xfb, 0xff}}},\n    {{{    57,   1653,    195}, 0, {   458,    942}, {0x04, 0x79, 0x24, 0xff}}},\n    {{{  -109,   1606,    214}, 0, {    32,    928}, {0xc7, 0x3e, 0x5d, 0xff}}},\n    {{{  -208,   1606,     49}, 0, {  -154,    476}, {0x89, 0x26, 0x11, 0xff}}},\n    {{{    76,   1605,    261}, 0, {   484,   1112}, {0x0f, 0x3b, 0x6e, 0xff}}},\n    {{{   241,   1605,    162}, 0, {   936,    928}, {0x50, 0x42, 0x48, 0xff}}},\n    {{{   288,   1603,    -23}, 0, {  1122,    476}, {0x76, 0x2a, 0xef, 0xff}}},\n};\n\n// 0x0700B3F8 - 0x0700B530\nstatic const Gfx ttm_seg7_dl_0700B3F8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_0700B130.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700B130.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700B148, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 5,  8,  6, 0x0,  5,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 14, 0x0),\n    gsSP1Triangle(11, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0700B248, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 11, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0700B338, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 5,  3,  0, 0x0,  0,  6,  5, 0x0),\n    gsSP2Triangles( 0,  2,  6, 0x0,  0,  4,  1, 0x0),\n    gsSP2Triangles( 2,  7,  6, 0x0,  2,  1,  8, 0x0),\n    gsSP2Triangles( 6,  9, 10, 0x0,  6, 10,  5, 0x0),\n    gsSP2Triangles( 6,  7,  9, 0x0,  5, 11,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700B530 - 0x0700B590\nconst Gfx ttm_seg7_dl_0700B530[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_0700B3F8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/5/2.inc.c",
    "content": "// 0x0700B590 - 0x0700B5A8\nstatic const Lights1 ttm_seg7_lights_0700B590 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0x99, 0x99, 0x99, 0x28, 0x28, 0x28\n);\n\n// 0x0700B5A8 - 0x0700B608\nstatic const Vtx ttm_seg7_vertex_0700B5A8[] = {\n    {{{    29,  -1653,     57}, 0, {   990,    990}, {0x9f, 0x00, 0x51, 0xff}}},\n    {{{    14,   1556,    -28}, 0, {   510,      0}, {0x89, 0x00, 0xd5, 0xff}}},\n    {{{    14,  -1653,    -28}, 0, {   510,    990}, {0xea, 0x00, 0x84, 0xff}}},\n    {{{    98,   1556,      2}, 0, {     0,      0}, {0x60, 0x00, 0xae, 0xff}}},\n    {{{    98,  -1653,      2}, 0, {     0,    990}, {0x76, 0x00, 0x2e, 0xff}}},\n    {{{    29,   1556,     57}, 0, {   990,      0}, {0x12, 0x00, 0x7d, 0xff}}},\n};\n\n// 0x0700B608 - 0x0700B670\nstatic const Gfx ttm_seg7_dl_0700B608[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, ttm_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_0700B590.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700B590.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700B5A8, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 2,  1,  3, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 4,  3,  5, 0x0,  4,  5,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700B670 - 0x0700B6D0\nconst Gfx ttm_seg7_dl_0700B670[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_0700B608),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/5/geo.inc.c",
    "content": "// 0x0E0007A8\nconst GeoLayout ttm_geo_0007A8[] = {\n    GEO_CULLING_RADIUS(1700),\n    GEO_OPEN_NODE(),\n        GEO_RENDER_RANGE(-2700, 6500),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, ttm_seg7_dl_0700B530),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, ttm_seg7_dl_0700B670),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/6/1.inc.c",
    "content": "// 0x0700B6D0 - 0x0700B6E8\nstatic const Lights1 ttm_seg7_lights_0700B6D0 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0x99, 0x99, 0x99, 0x28, 0x28, 0x28\n);\n\n// 0x0700B6E8 - 0x0700B7D8\nstatic const Vtx ttm_seg7_vertex_0700B6E8[] = {\n    {{{   -24,   1595,   -186}, 0, {   534,    478}, {0xef, 0x29, 0x8a, 0xff}}},\n    {{{   100,   1595,   -155}, 0, {   142,    480}, {0x3a, 0x50, 0xb1, 0xff}}},\n    {{{   100,   1528,   -155}, 0, {   142,    684}, {0x4b, 0x00, 0x9a, 0xff}}},\n    {{{   112,   1629,    -32}, 0, {   346,   -154}, {0x27, 0x78, 0xfb, 0xff}}},\n    {{{   135,   1596,     80}, 0, {  -102,     68}, {0x50, 0x42, 0x48, 0xff}}},\n    {{{   167,   1595,    -44}, 0, {   454,     74}, {0x76, 0x29, 0xef, 0xff}}},\n    {{{   135,   1528,     80}, 0, {  -104,    332}, {0x6f, 0x00, 0x3d, 0xff}}},\n    {{{   166,   1528,    -44}, 0, {   454,    332}, {0x7d, 0xff, 0xee, 0xff}}},\n    {{{   100,   1528,   -155}, 0, {   114,   1692}, {0x4b, 0x00, 0x9a, 0xff}}},\n    {{{   167,   1595,    -44}, 0, {   404,   1134}, {0x76, 0x29, 0xef, 0xff}}},\n    {{{   166,   1528,    -44}, 0, {   114,   1134}, {0x7d, 0xff, 0xee, 0xff}}},\n    {{{   100,   1595,   -155}, 0, {   406,   1692}, {0x3a, 0x50, 0xb1, 0xff}}},\n    {{{  -135,   1528,   -120}, 0, {   810,    684}, {0x9b, 0x00, 0xb5, 0xff}}},\n    {{{   -24,   1528,   -186}, 0, {   534,    682}, {0xee, 0x00, 0x83, 0xff}}},\n    {{{  -135,   1595,   -120}, 0, {   810,    480}, {0xaf, 0x4c, 0xc4, 0xff}}},\n};\n\n// 0x0700B7D8 - 0x0700B8D8\nstatic const Vtx ttm_seg7_vertex_0700B7D8[] = {\n    {{{    24,   1528,    146}, 0, {   586,    752}, {0x12, 0x00, 0x7d, 0xff}}},\n    {{{    24,   1596,    146}, 0, {   586,    480}, {0x0f, 0x3b, 0x6f, 0xff}}},\n    {{{  -100,   1597,    115}, 0, {   104,    480}, {0xc6, 0x3e, 0x5e, 0xff}}},\n    {{{  -123,   1629,      2}, 0, {  -110,    234}, {0xd3, 0x76, 0x06, 0xff}}},\n    {{{  -166,   1596,      4}, 0, {    18,    292}, {0x89, 0x26, 0x11, 0xff}}},\n    {{{  -100,   1597,    115}, 0, {   174,   -216}, {0xc6, 0x3e, 0x5e, 0xff}}},\n    {{{  -135,   1595,   -120}, 0, {  -130,    802}, {0xaf, 0x4c, 0xc4, 0xff}}},\n    {{{  -135,   1528,   -120}, 0, {   156,    890}, {0x9b, 0x00, 0xb5, 0xff}}},\n    {{{  -100,   1528,    115}, 0, {   468,   -126}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{  -166,   1528,      4}, 0, {   312,    382}, {0x83, 0x00, 0x12, 0xff}}},\n    {{{   135,   1528,     80}, 0, {  1068,    752}, {0x6f, 0x00, 0x3d, 0xff}}},\n    {{{   135,   1596,     80}, 0, {  1068,    480}, {0x50, 0x42, 0x48, 0xff}}},\n    {{{  -100,   1528,    115}, 0, {   104,    752}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{   -22,   1629,   -133}, 0, {   458,     40}, {0xfb, 0x7a, 0xde, 0xff}}},\n    {{{   100,   1595,   -155}, 0, {   936,     24}, {0x3a, 0x50, 0xb1, 0xff}}},\n    {{{   -24,   1595,   -186}, 0, {   484,   -162}, {0xef, 0x29, 0x8a, 0xff}}},\n};\n\n// 0x0700B8D8 - 0x0700B998\nstatic const Vtx ttm_seg7_vertex_0700B8D8[] = {\n    {{{   112,   1629,    -32}, 0, {   910,    492}, {0x27, 0x78, 0xfb, 0xff}}},\n    {{{   100,   1595,   -155}, 0, {   936,     24}, {0x3a, 0x50, 0xb1, 0xff}}},\n    {{{   -22,   1629,   -133}, 0, {   458,     40}, {0xfb, 0x7a, 0xde, 0xff}}},\n    {{{    11,   1629,    102}, 0, {   458,    942}, {0x04, 0x79, 0x25, 0xff}}},\n    {{{  -123,   1629,      2}, 0, {     8,    492}, {0xd3, 0x76, 0x06, 0xff}}},\n    {{{  -135,   1595,   -120}, 0, {    32,     24}, {0xaf, 0x4c, 0xc4, 0xff}}},\n    {{{   -24,   1595,   -186}, 0, {   484,   -162}, {0xef, 0x29, 0x8a, 0xff}}},\n    {{{  -100,   1597,    115}, 0, {    32,    928}, {0xc6, 0x3e, 0x5e, 0xff}}},\n    {{{  -166,   1596,      4}, 0, {  -154,    476}, {0x89, 0x26, 0x11, 0xff}}},\n    {{{    24,   1596,    146}, 0, {   484,   1112}, {0x0f, 0x3b, 0x6f, 0xff}}},\n    {{{   135,   1596,     80}, 0, {   936,    928}, {0x50, 0x42, 0x48, 0xff}}},\n    {{{   167,   1595,    -44}, 0, {  1122,    476}, {0x76, 0x29, 0xef, 0xff}}},\n};\n\n// 0x0700B998 - 0x0700BAD0\nstatic const Gfx ttm_seg7_dl_0700B998[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_0700B6D0.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700B6D0.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700B6E8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12,  0, 13, 0x0, 12, 14,  0, 0x0),\n    gsSP1Triangle( 0,  2, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0700B7D8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  8,  4,  9, 0x0),\n    gsSP2Triangles( 8,  5,  4, 0x0,  4,  7,  9, 0x0),\n    gsSP2Triangles(10, 11,  0, 0x0, 11,  1,  0, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0700B8D8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 2,  4,  3, 0x0,  2,  5,  4, 0x0),\n    gsSP2Triangles( 2,  6,  5, 0x0,  4,  7,  3, 0x0),\n    gsSP2Triangles( 4,  5,  8, 0x0,  3,  9, 10, 0x0),\n    gsSP2Triangles( 3, 10,  0, 0x0,  3,  7,  9, 0x0),\n    gsSP1Triangle( 0, 11,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700BAD0 - 0x0700BB30\nconst Gfx ttm_seg7_dl_0700BAD0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_0700B998),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/6/2.inc.c",
    "content": "// 0x0700BB30 - 0x0700BB48\nstatic const Lights1 ttm_seg7_lights_0700BB30 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0x99, 0x99, 0x99, 0x28, 0x28, 0x28\n);\n\n// 0x0700BB48 - 0x0700BBA8\nstatic const Vtx ttm_seg7_vertex_0700BB48[] = {\n    {{{   -13,  -1627,     28}, 0, {   990,    990}, {0xd3, 0x00, 0x76, 0xff}}},\n    {{{   -28,   1580,    -57}, 0, {   510,      0}, {0xaf, 0x00, 0x9f, 0xff}}},\n    {{{   -28,  -1627,    -57}, 0, {   510,    990}, {0xaf, 0x00, 0x9f, 0xff}}},\n    {{{   -13,   1580,     28}, 0, {   990,      0}, {0xd3, 0x00, 0x76, 0xff}}},\n    {{{    56,  -1627,    -26}, 0, {     0,    990}, {0x61, 0x00, 0xaf, 0xff}}},\n    {{{    56,   1580,    -26}, 0, {     0,      0}, {0x75, 0x00, 0x2f, 0xff}}},\n};\n\n// 0x0700BBA8 - 0x0700BC10\nstatic const Gfx ttm_seg7_dl_0700BBA8[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, ttm_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_0700BB30.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700BB30.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700BB48, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  1,  5,  4, 0x0),\n    gsSP2Triangles( 4,  5,  0, 0x0,  5,  3,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700BC10 - 0x0700BC70\nconst Gfx ttm_seg7_dl_0700BC10[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_0700BBA8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/6/geo.inc.c",
    "content": "// 0x0E0007D8\nconst GeoLayout ttm_geo_0007D8[] = {\n    GEO_CULLING_RADIUS(1700),\n    GEO_OPEN_NODE(),\n        GEO_RENDER_RANGE(-2700, 6500),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, ttm_seg7_dl_0700BAD0),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, ttm_seg7_dl_0700BC10),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/7/geo.inc.c",
    "content": "// 0x0E000808\nconst GeoLayout ttm_geo_000808[] = {\n    GEO_CULLING_RADIUS(650),\n    GEO_OPEN_NODE(),\n        GEO_RENDER_RANGE(-1650, 9500),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, ttm_seg7_dl_0700BE20),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/7/model.inc.c",
    "content": "// 0x0700BC70 - 0x0700BC88\nstatic const Lights1 ttm_seg7_lights_0700BC70 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700BC88 - 0x0700BCA0\nstatic const Lights1 ttm_seg7_lights_0700BC88 = gdSPDefLights1(\n    0x5d, 0x5d, 0x5d,\n    0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28\n);\n\n// 0x0700BCA0 - 0x0700BCE0\nstatic const Vtx ttm_seg7_vertex_0700BCA0[] = {\n    {{{   307,     32,    307}, 0, {     0,   2418}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   307,     32,   -409}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -306,     32,   -409}, 0, { -1256,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -306,     32,    307}, 0, { -1256,   2418}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700BCE0 - 0x0700BDA0\nstatic const Vtx ttm_seg7_vertex_0700BCE0[] = {\n    {{{   307,     32,   -409}, 0, {     0,    990}, {0x58, 0x5a, 0x00, 0xff}}},\n    {{{   307,     32,    307}, 0, {     0,   2418}, {0x58, 0x5a, 0x00, 0xff}}},\n    {{{   355,    -15,    355}, 0, {    64,   2514}, {0x58, 0x5a, 0x00, 0xff}}},\n    {{{   355,    -15,    355}, 0, {    64,   2514}, {0x00, 0x5a, 0x58, 0xff}}},\n    {{{   307,     32,    307}, 0, {     0,   2418}, {0x00, 0x5a, 0x58, 0xff}}},\n    {{{  -369,    -30,    370}, 0, { -1380,   2544}, {0x00, 0x5a, 0x58, 0xff}}},\n    {{{   307,     32,    307}, 0, {     0,   2418}, {0x00, 0x5a, 0x59, 0xff}}},\n    {{{  -306,     32,    307}, 0, { -1256,   2418}, {0x00, 0x5a, 0x59, 0xff}}},\n    {{{  -369,    -30,    370}, 0, { -1380,   2544}, {0x00, 0x5a, 0x59, 0xff}}},\n    {{{  -369,    -30,    370}, 0, { -1380,   2544}, {0xa7, 0x5a, 0x00, 0xff}}},\n    {{{  -306,     32,    307}, 0, { -1256,   2418}, {0xa7, 0x5a, 0x00, 0xff}}},\n    {{{  -306,     32,   -409}, 0, { -1256,    990}, {0xa7, 0x5a, 0x00, 0xff}}},\n};\n\n// 0x0700BDA0 - 0x0700BE20\nstatic const Gfx ttm_seg7_dl_0700BDA0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_0700BC70.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700BC70.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700BCA0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSPLight(&ttm_seg7_lights_0700BC88.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700BC88.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700BCE0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700BE20 - 0x0700BE90\nconst Gfx ttm_seg7_dl_0700BE20[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_0700BDA0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/8/geo.inc.c",
    "content": "// 0x0E000830\nconst GeoLayout ttm_geo_000830[] = {\n    GEO_CULLING_RADIUS(1900),\n    GEO_OPEN_NODE(),\n        GEO_RENDER_RANGE(-2900, 8000),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, ttm_seg7_dl_0700C070),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/8/model.inc.c",
    "content": "// 0x0700BE90 - 0x0700BEA8\nstatic const Lights1 ttm_seg7_lights_0700BE90 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0x99, 0x99, 0x99, 0x28, 0x28, 0x28\n);\n\n// 0x0700BEA8 - 0x0700BEC0\nstatic const Lights1 ttm_seg7_lights_0700BEA8 = gdSPDefLights1(\n    0x5d, 0x5d, 0x5d,\n    0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28\n);\n\n// 0x0700BEC0 - 0x0700BF40\nstatic const Vtx ttm_seg7_vertex_0700BEC0[] = {\n    {{{   614,  -1486,   -697}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -613,  -1486,   -697}, 0, {  2420,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -613,   1487,   -697}, 0, {  2420,  -4946}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   205,   1487,   -697}, 0, {   786,  -4946}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -613,   1282,    717}, 0, {     0,  -1470}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -613,     49,    717}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   614,     49,    717}, 0, {  2420,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   205,   1282,    717}, 0, {  1604,  -1470}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0700BF40 - 0x0700BFE0\nstatic const Vtx ttm_seg7_vertex_0700BF40[] = {\n    {{{   205,   1282,    717}, 0, {  1604,    990}, {0x00, 0x7d, 0x12, 0xff}}},\n    {{{   205,   1487,   -697}, 0, {  1604,  -1864}, {0x00, 0x7d, 0x12, 0xff}}},\n    {{{  -613,   1282,    717}, 0, {     0,    990}, {0x00, 0x7d, 0x12, 0xff}}},\n    {{{  -613,   1487,   -697}, 0, {     0,  -1864}, {0x00, 0x7d, 0x12, 0xff}}},\n    {{{   205,   1282,    717}, 0, {  4874,  -4536}, {0x78, 0x27, 0x05, 0xff}}},\n    {{{   614,     49,    717}, 0, {  4874,  -2076}, {0x78, 0x27, 0x05, 0xff}}},\n    {{{   205,   1487,   -697}, 0, {  7698,  -4946}, {0x78, 0x27, 0x05, 0xff}}},\n    {{{   614,  -1486,   -697}, 0, {  7698,    990}, {0x7c, 0x11, 0xee, 0xff}}},\n    {{{   205,   1487,   -697}, 0, {  7698,  -4946}, {0x7c, 0x11, 0xee, 0xff}}},\n    {{{   614,     49,    717}, 0, {  4874,  -2076}, {0x7c, 0x11, 0xee, 0xff}}},\n};\n\n// 0x0700BFE0 - 0x0700C070\nstatic const Gfx ttm_seg7_dl_0700BFE0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_0700BE90.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700BE90.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700BEC0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  7,  4, 0x0),\n    gsSPLight(&ttm_seg7_lights_0700BEA8.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700BEA8.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700BF40, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700C070 - 0x0700C0E0\nconst Gfx ttm_seg7_dl_0700C070[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_0700BFE0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/9/geo.inc.c",
    "content": "// 0x0E000858\nconst GeoLayout ttm_geo_000858[] = {\n    GEO_CULLING_RADIUS(450),\n    GEO_OPEN_NODE(),\n        GEO_RENDER_RANGE(-1450, 5500),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, ttm_seg7_dl_0700C408),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/9/model.inc.c",
    "content": "// 0x0700C0E0 - 0x0700C0F8\nstatic const Lights1 ttm_seg7_lights_0700C0E0 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700C0F8 - 0x0700C110\nstatic const Lights1 ttm_seg7_lights_0700C0F8 = gdSPDefLights1(\n    0x4c, 0x4c, 0x4c,\n    0x99, 0x99, 0x99, 0x28, 0x28, 0x28\n);\n\n// 0x0700C110 - 0x0700C128\nstatic const Lights1 ttm_seg7_lights_0700C110 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x0700C128 - 0x0700C228\nstatic const Vtx ttm_seg7_vertex_0700C128[] = {\n    {{{   162,    256,     35}, 0, {     0,  -2076}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{    18,   -255,    180}, 0, {   990,    480}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{    18,    256,    180}, 0, {   990,  -2076}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{    18,    256,    180}, 0, {     0,  -1566}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{    18,   -255,    180}, 0, {     0,    990}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{  -126,   -255,     35}, 0, {   990,    990}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{  -126,    256,     35}, 0, {   990,  -1566}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{  -126,    256,     35}, 0, {   990,  -2076}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -126,   -255,     35}, 0, {   990,    480}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{    18,   -255,   -109}, 0, {     0,    478}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{    18,    256,   -109}, 0, {     0,  -2076}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{    18,    256,   -109}, 0, {   990,  -1566}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   162,   -255,     35}, 0, {     0,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   162,    256,     35}, 0, {     0,  -1566}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{    18,   -255,   -109}, 0, {   990,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   162,   -255,     35}, 0, {     0,    478}, {0xa6, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0700C228 - 0x0700C2A8\nstatic const Vtx ttm_seg7_vertex_0700C228[] = {\n    {{{   307,    256,     35}, 0, { 14686, -17952}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    18,    256,   -253}, 0, { 14108, -18530}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   162,    256,     35}, 0, { 14396, -17952}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    18,    256,   -109}, 0, { 14108, -18240}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -126,    256,     35}, 0, { 13818, -17952}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -271,    256,     35}, 0, { 13528, -17952}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    18,    256,    325}, 0, { 14108, -17374}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    18,    256,    180}, 0, { 14108, -17662}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700C2A8 - 0x0700C2E8\nstatic const Vtx ttm_seg7_vertex_0700C2A8[] = {\n    {{{    18,   -255,    180}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   162,   -255,     35}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    18,   -255,   -109}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -126,   -255,     35}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700C2E8 - 0x0700C360\nstatic const Gfx ttm_seg7_dl_0700C2E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_0700C0E0.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700C0E0.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700C128, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700C360 - 0x0700C3D8\nstatic const Gfx ttm_seg7_dl_0700C360[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_0700C0F8.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700C0F8.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700C228, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  3,  1, 0x0,  4,  1,  5, 0x0),\n    gsSP2Triangles( 0,  2,  6, 0x0,  2,  7,  6, 0x0),\n    gsSP2Triangles( 7,  4,  5, 0x0,  7,  5,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700C3D8 - 0x0700C408\nstatic const Gfx ttm_seg7_dl_0700C3D8[] = {\n    gsSPLight(&ttm_seg7_lights_0700C110.l, 1),\n    gsSPLight(&ttm_seg7_lights_0700C110.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0700C2A8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700C408 - 0x0700C488\nconst Gfx ttm_seg7_dl_0700C408[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_0700C2E8),\n    gsSPDisplayList(ttm_seg7_dl_0700C360),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(ttm_seg7_dl_0700C3D8),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/collision.inc.c",
    "content": "// 0x07013814 - 0x07016F16\nconst Collision ttm_seg7_area_1_collision[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x36F),\n    COL_VERTEX(-1471, -665, -3480),\n    COL_VERTEX(-1471, -716, -3480),\n    COL_VERTEX(-1936, -716, -3551),\n    COL_VERTEX(-2472, -2866, 4321),\n    COL_VERTEX(-3283, -2969, 3696),\n    COL_VERTEX(-3283, -2866, 3696),\n    COL_VERTEX(-2472, -2969, 4321),\n    COL_VERTEX(238, 2406, 232),\n    COL_VERTEX(1024, 2406, 1280),\n    COL_VERTEX(256, 2304, 256),\n    COL_VERTEX(1024, 2304, 1280),\n    COL_VERTEX(1397, 2416, 924),\n    COL_VERTEX(1397, 2314, 924),\n    COL_VERTEX(2048, 2304, 512),\n    COL_VERTEX(2048, 2406, 512),\n    COL_VERTEX(1479, 1593, 1564),\n    COL_VERTEX(1397, 2221, 924),\n    COL_VERTEX(5018, -4095, 4915),\n    COL_VERTEX(4915, -4095, 4915),\n    COL_VERTEX(4915, -4095, 5069),\n    COL_VERTEX(5018, -4095, 5069),\n    COL_VERTEX(7373, -3583, 1229),\n    COL_VERTEX(7270, -3583, 1229),\n    COL_VERTEX(7270, -3583, 1382),\n    COL_VERTEX(7373, -3583, 1382),\n    COL_VERTEX(-3299, -2950, -3886),\n    COL_VERTEX(-3196, -2950, -3886),\n    COL_VERTEX(-3299, -2950, -3732),\n    COL_VERTEX(-3196, -2950, -3732),\n    COL_VERTEX(4155, -6143, -2771),\n    COL_VERTEX(4140, -6143, -2857),\n    COL_VERTEX(4224, -6143, -2826),\n    COL_VERTEX(3306, -6143, -3014),\n    COL_VERTEX(3291, -6143, -3100),\n    COL_VERTEX(3375, -6143, -3069),\n    COL_VERTEX(1829, -6143, -3555),\n    COL_VERTEX(1814, -6143, -3641),\n    COL_VERTEX(1899, -6143, -3610),\n    COL_VERTEX(3233, -6143, -4000),\n    COL_VERTEX(3218, -6143, -4086),\n    COL_VERTEX(3303, -6143, -4055),\n    COL_VERTEX(1427, -2985, -4203),\n    COL_VERTEX(1412, -6143, -4289),\n    COL_VERTEX(1412, -2985, -4289),\n    COL_VERTEX(1496, -6143, -4258),\n    COL_VERTEX(1496, -2985, -4258),\n    COL_VERTEX(1427, -6143, -4203),\n    COL_VERTEX(3905, -6143, -3560),\n    COL_VERTEX(3920, -6143, -3474),\n    COL_VERTEX(3990, -6143, -3529),\n    COL_VERTEX(2523, -6143, -3407),\n    COL_VERTEX(2538, -6143, -3321),\n    COL_VERTEX(2607, -6143, -3376),\n    COL_VERTEX(563, -6143, -4119),\n    COL_VERTEX(548, -6143, -4205),\n    COL_VERTEX(633, -6143, -4174),\n    COL_VERTEX(2329, -6222, -4444),\n    COL_VERTEX(2344, -6222, -4358),\n    COL_VERTEX(2413, -6222, -4413),\n    COL_VERTEX(2304, -6263, -3809),\n    COL_VERTEX(2289, -6263, -3895),\n    COL_VERTEX(2373, -3054, -3864),\n    COL_VERTEX(2373, -6263, -3864),\n    COL_VERTEX(2048, -1548, 4096),\n    COL_VERTEX(3779, -1548, 4960),\n    COL_VERTEX(3779, -1855, 4960),\n    COL_VERTEX(3645, -2162, 5112),\n    COL_VERTEX(3703, -1957, 4892),\n    COL_VERTEX(2667, -1957, 3974),\n    COL_VERTEX(2048, -2162, 4096),\n    COL_VERTEX(2667, -1548, 3975),\n    COL_VERTEX(2803, -1548, 3821),\n    COL_VERTEX(3915, -2162, 4807),\n    COL_VERTEX(2434, -2162, 3497),\n    COL_VERTEX(4403, -2162, 2558),\n    COL_VERTEX(4096, -2162, 2287),\n    COL_VERTEX(5169, -1957, 3238),\n    COL_VERTEX(5245, -2162, 3306),\n    COL_VERTEX(5109, -2162, 3459),\n    COL_VERTEX(4580, -1548, 1894),\n    COL_VERTEX(4580, -2162, 1894),\n    COL_VERTEX(4096, -1548, 1465),\n    COL_VERTEX(4403, -1548, 2558),\n    COL_VERTEX(4096, -1548, 2287),\n    COL_VERTEX(3960, -2162, 2440),\n    COL_VERTEX(46, -2047, 3765),\n    COL_VERTEX(80, -2047, 3563),\n    COL_VERTEX(2992, 1230, 1579),\n    COL_VERTEX(3328, 1536, 1229),\n    COL_VERTEX(3072, 1024, 1024),\n    COL_VERTEX(2969, 1435, 1532),\n    COL_VERTEX(2560, 1536, 1024),\n    COL_VERTEX(3072, 1536, 1024),\n    COL_VERTEX(3072, 313, 1024),\n    COL_VERTEX(2970, 563, 717),\n    COL_VERTEX(2970, 973, 717),\n    COL_VERTEX(3635, 1536, 717),\n    COL_VERTEX(3072, 1536, 512),\n    COL_VERTEX(3036, 1436, 1670),\n    COL_VERTEX(3371, 1128, 1615),\n    COL_VERTEX(1660, 1584, 2044),\n    COL_VERTEX(1817, 1490, 2475),\n    COL_VERTEX(1840, 1490, 2271),\n    COL_VERTEX(1828, 1286, 2374),\n    COL_VERTEX(1230, 1584, 2202),\n    COL_VERTEX(1433, 1337, 2225),\n    COL_VERTEX(1072, 1584, 1774),\n    COL_VERTEX(1479, 1337, 1820),\n    COL_VERTEX(1410, 1584, 2428),\n    COL_VERTEX(1479, 620, 1820),\n    COL_VERTEX(1072, 560, 1774),\n    COL_VERTEX(3174, 1536, -818),\n    COL_VERTEX(3174, 1536, -511),\n    COL_VERTEX(3287, 1280, -605),\n    COL_VERTEX(1382, 1894, -1023),\n    COL_VERTEX(3174, 1536, -1535),\n    COL_VERTEX(2377, 1024, -2009),\n    COL_VERTEX(2560, 313, 1024),\n    COL_VERTEX(1852, 1510, 1209),\n    COL_VERTEX(330, 1219, -1533),\n    COL_VERTEX(2377, 1536, -2009),\n    COL_VERTEX(342, 1115, -1518),\n    COL_VERTEX(-285, 1280, -2317),\n    COL_VERTEX(3226, 1280, -1),\n    COL_VERTEX(2970, 973, 256),\n    COL_VERTEX(2970, 563, 256),\n    COL_VERTEX(2970, 413, 717),\n    COL_VERTEX(3287, 717, -605),\n    COL_VERTEX(3287, 922, -605),\n    COL_VERTEX(3237, 711, -818),\n    COL_VERTEX(3072, 1382, -818),\n    COL_VERTEX(2560, 1382, -818),\n    COL_VERTEX(2560, 1382, -1279),\n    COL_VERTEX(3072, 1382, -1279),\n    COL_VERTEX(3072, 922, -1279),\n    COL_VERTEX(3072, 768, -1279),\n    COL_VERTEX(3174, 768, -1535),\n    COL_VERTEX(3072, 768, -818),\n    COL_VERTEX(3072, 768, -972),\n    COL_VERTEX(1525, 1081, 969),\n    COL_VERTEX(1525, 1286, 969),\n    COL_VERTEX(1712, 1081, 1343),\n    COL_VERTEX(1891, 1081, 786),\n    COL_VERTEX(1479, -1842, 1564),\n    COL_VERTEX(1852, 1081, 1209),\n    COL_VERTEX(2074, 1081, 1151),\n    COL_VERTEX(1800, 1388, 832),\n    COL_VERTEX(2074, 1286, 1151),\n    COL_VERTEX(3439, 313, 1545),\n    COL_VERTEX(2560, -1500, 1024),\n    COL_VERTEX(2828, -1499, 1504),\n    COL_VERTEX(3247, 313, 2252),\n    COL_VERTEX(1852, -1896, 1209),\n    COL_VERTEX(2165, -1512, 1127),\n    COL_VERTEX(-1535, -818, 2048),\n    COL_VERTEX(1712, 1286, 1343),\n    COL_VERTEX(2377, -511, -2521),\n    COL_VERTEX(-285, 205, -2317),\n    COL_VERTEX(3439, -1330, 1545),\n    COL_VERTEX(-1535, 512, -1535),\n    COL_VERTEX(-1535, 1280, -1535),\n    COL_VERTEX(-1535, 0, 512),\n    COL_VERTEX(-1342, 1178, -1465),\n    COL_VERTEX(-1535, 1536, 512),\n    COL_VERTEX(-1023, 1536, 0),\n    COL_VERTEX(2560, 768, -818),\n    COL_VERTEX(2165, -1872, 1127),\n    COL_VERTEX(2418, -1898, 1689),\n    COL_VERTEX(3028, -1860, 1861),\n    COL_VERTEX(3300, -1870, 2346),\n    COL_VERTEX(3587, -1330, 2859),\n    COL_VERTEX(3587, -2405, 2859),\n    COL_VERTEX(4096, -1330, 2287),\n    COL_VERTEX(-1535, 0, 2048),\n    COL_VERTEX(1910, 466, 2055),\n    COL_VERTEX(-1535, -2047, 2048),\n    COL_VERTEX(-1674, -4682, 2883),\n    COL_VERTEX(435, -2668, 2747),\n    COL_VERTEX(-1992, -4607, 4788),\n    COL_VERTEX(-3071, -2047, 1024),\n    COL_VERTEX(-3621, -2252, 2123),\n    COL_VERTEX(4096, -1023, -2047),\n    COL_VERTEX(4096, -3374, 614),\n    COL_VERTEX(4096, -3111, -1473),\n    COL_VERTEX(3072, -2047, -4095),\n    COL_VERTEX(4096, -3169, -800),\n    COL_VERTEX(3874, -1023, -1825),\n    COL_VERTEX(2835, -1535, -3621),\n    COL_VERTEX(2835, -511, -3621),\n    COL_VERTEX(-1023, -1023, -4095),\n    COL_VERTEX(3072, -1535, -4095),\n    COL_VERTEX(-2312, 0, 771),\n    COL_VERTEX(-3071, -511, -2047),\n    COL_VERTEX(-1947, 512, -1672),\n    COL_VERTEX(-1947, -511, -1672),\n    COL_VERTEX(2748, -1548, 3010),\n    COL_VERTEX(2434, -1548, 3497),\n    COL_VERTEX(2748, -2400, 3010),\n    COL_VERTEX(2545, -1881, 2779),\n    COL_VERTEX(1606, -1945, 1382),\n    COL_VERTEX(1465, -1548, 2618),\n    COL_VERTEX(1150, -1891, 2562),\n    COL_VERTEX(3083, -6143, -5295),\n    COL_VERTEX(3179, -6143, -5260),\n    COL_VERTEX(3083, -3993, -5295),\n    COL_VERTEX(-1202, -3448, -4595),\n    COL_VERTEX(-1202, -6143, -6131),\n    COL_VERTEX(3072, -3993, -5119),\n    COL_VERTEX(3261, -2989, -5308),\n    COL_VERTEX(5590, -3071, -3645),\n    COL_VERTEX(3159, -2989, -4796),\n    COL_VERTEX(4771, -3071, -3235),\n    COL_VERTEX(4623, -3071, -2363),\n    COL_VERTEX(3072, -3276, -5119),\n    COL_VERTEX(-1168, -2559, -4240),\n    COL_VERTEX(-1714, -2598, -5014),\n    COL_VERTEX(4813, -3111, -1473),\n    COL_VERTEX(5035, -3993, -3156),\n    COL_VERTEX(3144, -6143, -5164),\n    COL_VERTEX(4782, -3993, -3482),\n    COL_VERTEX(3144, -3993, -5164),\n    COL_VERTEX(5035, -3276, -3156),\n    COL_VERTEX(5325, -3993, -3445),\n    COL_VERTEX(5035, -3993, -3301),\n    COL_VERTEX(5325, -6143, -3445),\n    COL_VERTEX(4813, -6143, -1473),\n    COL_VERTEX(4890, -3993, -3445),\n    COL_VERTEX(5035, -3993, -3590),\n    COL_VERTEX(-457, -3243, -4490),\n    COL_VERTEX(5035, -6143, -3735),\n    COL_VERTEX(3048, -3993, -5199),\n    COL_VERTEX(-457, -3448, -4799),\n    COL_VERTEX(-2, -2719, -4095),\n    COL_VERTEX(-2, -2719, -4505),\n    COL_VERTEX(4096, -6143, -1473),\n    COL_VERTEX(-457, -3448, -4083),\n    COL_VERTEX(-1202, -6143, -4083),\n    COL_VERTEX(-4095, -4095, 3072),\n    COL_VERTEX(-4095, -2047, 3072),\n    COL_VERTEX(-3849, -6143, -2207),\n    COL_VERTEX(-3849, -2559, -2207),\n    COL_VERTEX(-2472, -4255, 4321),\n    COL_VERTEX(-3283, -2354, 3696),\n    COL_VERTEX(-2472, -2354, 4321),\n    COL_VERTEX(-2047, -2047, 5120),\n    COL_VERTEX(2886, -1937, 2618),\n    COL_VERTEX(2733, -1893, 1872),\n    COL_VERTEX(1109, -2668, 3215),\n    COL_VERTEX(614, -3685, 3686),\n    COL_VERTEX(1811, -1891, 4028),\n    COL_VERTEX(1606, -1529, 1382),\n    COL_VERTEX(-613, -4664, 3486),\n    COL_VERTEX(395, -2661, 3896),\n    COL_VERTEX(289, -2047, 3390),\n    COL_VERTEX(554, -2668, 3221),\n    COL_VERTEX(4096, -2162, 1465),\n    COL_VERTEX(4096, -3521, 2287),\n    COL_VERTEX(4096, -3374, 1496),\n    COL_VERTEX(5325, -4607, 614),\n    COL_VERTEX(4915, -3169, -800),\n    COL_VERTEX(4915, -3374, 614),\n    COL_VERTEX(4813, -3374, 1701),\n    COL_VERTEX(3587, -3798, 2859),\n    COL_VERTEX(4813, -3374, 1496),\n    COL_VERTEX(4096, -4607, 1496),\n    COL_VERTEX(4813, -4607, 1496),\n    COL_VERTEX(5325, -6143, -800),\n    COL_VERTEX(5325, -4607, 3072),\n    COL_VERTEX(3506, -4082, 5556),\n    COL_VERTEX(4813, -3583, 3072),\n    COL_VERTEX(3144, -4082, 5194),\n    COL_VERTEX(819, -4300, 5120),\n    COL_VERTEX(819, -4505, 6656),\n    COL_VERTEX(-3071, -2559, -2047),\n    COL_VERTEX(-1202, -3243, -4083),\n    COL_VERTEX(-2047, -4505, 6043),\n    COL_VERTEX(819, -6143, 6656),\n    COL_VERTEX(-2, -2207, -4095),\n    COL_VERTEX(4096, -2559, -2047),\n    COL_VERTEX(-457, -3243, -4083),\n    COL_VERTEX(-1023, -2559, -4095),\n    COL_VERTEX(4096, -6143, -800),\n    COL_VERTEX(2048, -4351, 4096),\n    COL_VERTEX(587, -2047, 4063),\n    COL_VERTEX(817, -2668, 3493),\n    COL_VERTEX(736, -2047, 3410),\n    COL_VERTEX(-1947, -2559, -1672),\n    COL_VERTEX(3075, -4105, 2859),\n    COL_VERTEX(2515, -4105, 3371),\n    COL_VERTEX(-1838, -2559, -3056),\n    COL_VERTEX(-1784, -2252, -2546),\n    COL_VERTEX(-1469, -2559, -3074),\n    COL_VERTEX(-1679, -2047, -2722),\n    COL_VERTEX(-1205, -2047, -2917),\n    COL_VERTEX(-1205, -2559, -2917),\n    COL_VERTEX(-1101, -2559, -3093),\n    COL_VERTEX(-1784, -2559, -2546),\n    COL_VERTEX(-1520, -2252, -2389),\n    COL_VERTEX(-1784, -1740, -2546),\n    COL_VERTEX(-2065, -2559, -2475),\n    COL_VERTEX(-1782, -2559, -1949),\n    COL_VERTEX(-1415, -1740, -2565),\n    COL_VERTEX(-1520, -1740, -2389),\n    COL_VERTEX(-1467, -1945, -2477),\n    COL_VERTEX(-1731, -1945, -2634),\n    COL_VERTEX(-1100, -1535, -3093),\n    COL_VERTEX(-1415, -1433, -2565),\n    COL_VERTEX(-1993, -1535, -2195),\n    COL_VERTEX(-1301, -1433, -3123),\n    COL_VERTEX(-1770, -1228, -2947),\n    COL_VERTEX(-1927, -1023, -2683),\n    COL_VERTEX(-1503, -1228, -2418),\n    COL_VERTEX(-2433, -1023, -2759),\n    COL_VERTEX(-1364, -511, -2650),\n    COL_VERTEX(-1947, -613, -1672),\n    COL_VERTEX(-1873, -511, -2596),\n    COL_VERTEX(-2011, -1177, -3467),\n    COL_VERTEX(-971, -1433, -3310),\n    COL_VERTEX(-1048, -409, -3181),\n    COL_VERTEX(-1067, -204, -3549),\n    COL_VERTEX(-786, -204, -3621),\n    COL_VERTEX(-1310, -409, -2741),\n    COL_VERTEX(-1417, -204, -3162),\n    COL_VERTEX(-1346, -921, -2881),\n    COL_VERTEX(-1100, -613, -3093),\n    COL_VERTEX(-1329, -613, -3110),\n    COL_VERTEX(-1258, -613, -2829),\n    COL_VERTEX(-1258, -921, -2829),\n    COL_VERTEX(-1048, -716, -3181),\n    COL_VERTEX(-1005, -818, -3453),\n    COL_VERTEX(-891, -818, -3445),\n    COL_VERTEX(-838, -716, -3533),\n    COL_VERTEX(-1100, -1228, -3093),\n    COL_VERTEX(-1635, -921, -2696),\n    COL_VERTEX(-1310, -1023, -2741),\n    COL_VERTEX(-1415, -101, -2565),\n    COL_VERTEX(-1572, 0, -2301),\n    COL_VERTEX(-1310, 0, -2741),\n    COL_VERTEX(-1696, 0, -2494),\n    COL_VERTEX(-1748, 0, -2406),\n    COL_VERTEX(-1467, 205, -2477),\n    COL_VERTEX(-1467, 0, -2477),\n    COL_VERTEX(-2294, -1945, -1788),\n    COL_VERTEX(-1730, -2047, -2037),\n    COL_VERTEX(-1730, -1535, -2037),\n    COL_VERTEX(-1153, -1689, -3005),\n    COL_VERTEX(-1048, -1842, -3181),\n    COL_VERTEX(-1312, -1842, -3338),\n    COL_VERTEX(-943, -1689, -3357),\n    COL_VERTEX(-786, -2252, -3621),\n    COL_VERTEX(-923, -2252, -3895),\n    COL_VERTEX(-1048, -2252, -3181),\n    COL_VERTEX(-923, -2559, -3896),\n    COL_VERTEX(-1457, -2559, -3371),\n    COL_VERTEX(-2428, -2354, 4096),\n    COL_VERTEX(-2590, -2559, 3971),\n    COL_VERTEX(-2590, -2354, 3971),\n    COL_VERTEX(-2484, -2559, 3665),\n    COL_VERTEX(-2303, -2354, 3934),\n    COL_VERTEX(-2409, -2559, 4240),\n    COL_VERTEX(-2484, -2354, 3665),\n    COL_VERTEX(-2465, -2354, 3809),\n    COL_VERTEX(-2734, -2354, 3990),\n    COL_VERTEX(-2971, -2354, 3291),\n    COL_VERTEX(3041, 768, -972),\n    COL_VERTEX(3041, 768, -1125),\n    COL_VERTEX(2418, -1516, 1689),\n    COL_VERTEX(4915, -7288, 4915),\n    COL_VERTEX(4915, -7288, 5069),\n    COL_VERTEX(5018, -7288, 5069),\n    COL_VERTEX(5018, -7288, 4915),\n    COL_VERTEX(1024, 2304, -767),\n    COL_VERTEX(7270, -6776, 1229),\n    COL_VERTEX(7270, -6776, 1382),\n    COL_VERTEX(7373, -6776, 1382),\n    COL_VERTEX(7373, -6776, 1229),\n    COL_VERTEX(-3299, -6143, -3732),\n    COL_VERTEX(-3299, -6143, -3886),\n    COL_VERTEX(-3196, -6143, -3732),\n    COL_VERTEX(-3196, -6143, -3886),\n    COL_VERTEX(4140, -2985, -2857),\n    COL_VERTEX(4224, -2985, -2826),\n    COL_VERTEX(4155, -2985, -2771),\n    COL_VERTEX(3291, -2934, -3100),\n    COL_VERTEX(3375, -2934, -3069),\n    COL_VERTEX(3306, -2934, -3014),\n    COL_VERTEX(1814, -2935, -3641),\n    COL_VERTEX(1899, -2935, -3610),\n    COL_VERTEX(1829, -2935, -3555),\n    COL_VERTEX(3218, -2985, -4086),\n    COL_VERTEX(3303, -2985, -4055),\n    COL_VERTEX(3233, -2985, -4000),\n    COL_VERTEX(3990, -2934, -3529),\n    COL_VERTEX(3905, -2934, -3560),\n    COL_VERTEX(3920, -2934, -3474),\n    COL_VERTEX(2523, -2933, -3407),\n    COL_VERTEX(2607, -2933, -3376),\n    COL_VERTEX(2538, -2933, -3321),\n    COL_VERTEX(548, -2934, -4205),\n    COL_VERTEX(633, -2934, -4174),\n    COL_VERTEX(563, -2934, -4119),\n    COL_VERTEX(2329, -3014, -4444),\n    COL_VERTEX(2413, -3014, -4413),\n    COL_VERTEX(2344, -3014, -4358),\n    COL_VERTEX(2289, -3054, -3895),\n    COL_VERTEX(2304, -3054, -3809),\n    COL_VERTEX(3645, -1548, 5112),\n    COL_VERTEX(2667, -1548, 3974),\n    COL_VERTEX(2801, -2162, 3823),\n    COL_VERTEX(2667, -1957, 3975),\n    COL_VERTEX(4096, -1957, 2287),\n    COL_VERTEX(5245, -1855, 3306),\n    COL_VERTEX(4096, -1957, 2286),\n    COL_VERTEX(4403, -1957, 2558),\n    COL_VERTEX(63, -2201, 3664),\n    COL_VERTEX(80, -2149, 3563),\n    COL_VERTEX(46, -2149, 3765),\n    COL_VERTEX(-1737, -2047, 3260),\n    COL_VERTEX(-1771, -2047, 3462),\n    COL_VERTEX(3371, 1435, 1615),\n    COL_VERTEX(2816, 1536, -767),\n    COL_VERTEX(3226, 614, -1),\n    COL_VERTEX(3174, 1485, -1535),\n    COL_VERTEX(3174, 1485, -818),\n    COL_VERTEX(1959, 1925, -541),\n    COL_VERTEX(1891, 1286, 786),\n    COL_VERTEX(-162, 1165, -2161),\n    COL_VERTEX(2377, 1024, -2521),\n    COL_VERTEX(3072, 922, -818),\n    COL_VERTEX(3584, 768, -1535),\n    COL_VERTEX(2560, 768, -1279),\n    COL_VERTEX(3041, 768, -818),\n    COL_VERTEX(1479, 620, 1564),\n    COL_VERTEX(1479, 6, 1564),\n    COL_VERTEX(1616, 1388, 923),\n    COL_VERTEX(3584, -1023, -1535),\n    COL_VERTEX(-1457, 1434, 434),\n    COL_VERTEX(-1023, 1434, 0),\n    COL_VERTEX(3494, -1887, 2692),\n    COL_VERTEX(1479, 620, 2128),\n    COL_VERTEX(1910, 620, 2055),\n    COL_VERTEX(-3071, 0, 1024),\n    COL_VERTEX(-2047, -4300, 5121),\n    COL_VERTEX(4096, -3374, 1701),\n    COL_VERTEX(4096, -4607, 614),\n    COL_VERTEX(4096, -3071, -2047),\n    COL_VERTEX(-786, -1023, -3621),\n    COL_VERTEX(-786, 205, -3621),\n    COL_VERTEX(-971, -1023, -3310),\n    COL_VERTEX(1910, -1529, 2055),\n    COL_VERTEX(1910, -1939, 2055),\n    COL_VERTEX(-1202, -3448, -4083),\n    COL_VERTEX(-457, -3448, -4492),\n    COL_VERTEX(3179, -3993, -5260),\n    COL_VERTEX(4746, -3993, -3445),\n    COL_VERTEX(5035, -3993, -3735),\n    COL_VERTEX(5180, -3993, -3445),\n    COL_VERTEX(4782, -6143, -3482),\n    COL_VERTEX(-3216, -2559, -2192),\n    COL_VERTEX(-2047, -6143, 6043),\n    COL_VERTEX(-4095, -6143, 3072),\n    COL_VERTEX(-2971, -2969, 3291),\n    COL_VERTEX(-2160, -2354, 3915),\n    COL_VERTEX(-2160, -2969, 3915),\n    COL_VERTEX(1209, -1891, 3512),\n    COL_VERTEX(1402, -1891, 3772),\n    COL_VERTEX(375, -2998, 3594),\n    COL_VERTEX(121, -2047, 4400),\n    COL_VERTEX(5325, -6143, 3072),\n    COL_VERTEX(4813, -4607, 3072),\n    COL_VERTEX(3587, -3798, 3371),\n    COL_VERTEX(2045, -4082, 4479),\n    COL_VERTEX(3506, -6138, 5556),\n    COL_VERTEX(4096, -4607, 3072),\n    COL_VERTEX(-1713, -2252, -2266),\n    COL_VERTEX(0, -4607, 4915),\n    COL_VERTEX(3075, -2402, 2859),\n    COL_VERTEX(3587, -4105, 2859),\n    COL_VERTEX(2748, -4105, 3010),\n    COL_VERTEX(-1469, -2047, -3074),\n    COL_VERTEX(-1415, -2047, -2565),\n    COL_VERTEX(-1625, -2252, -2213),\n    COL_VERTEX(-1591, -1740, -2670),\n    COL_VERTEX(-1301, -1228, -3123),\n    COL_VERTEX(-1927, -1228, -2683),\n    COL_VERTEX(-1364, -613, -2650),\n    COL_VERTEX(-1873, -613, -2596),\n    COL_VERTEX(-2239, -613, -1770),\n    COL_VERTEX(-2239, -511, -1770),\n    COL_VERTEX(-2919, -1023, -1996),\n    COL_VERTEX(-1503, -1023, -2418),\n    COL_VERTEX(-786, -2559, -3621),\n    COL_VERTEX(-786, -1689, -3621),\n    COL_VERTEX(-1205, -204, -2917),\n    COL_VERTEX(-1346, -613, -2881),\n    COL_VERTEX(-1171, -716, -3374),\n    COL_VERTEX(-979, -716, -3497),\n    COL_VERTEX(-1434, -921, -2934),\n    COL_VERTEX(-1415, -921, -2565),\n    COL_VERTEX(-2012, 0, -2563),\n    COL_VERTEX(-1926, 0, -3108),\n    COL_VERTEX(-1696, 205, -2494),\n    COL_VERTEX(-1748, 205, -2406),\n    COL_VERTEX(-1572, 205, -2301),\n    COL_VERTEX(-1993, -1945, -2195),\n    COL_VERTEX(-1947, -2252, -1672),\n    COL_VERTEX(-1207, -1689, -3514),\n    COL_VERTEX(-1417, -1689, -3162),\n    COL_VERTEX(-1191, -2252, -3333),\n    COL_VERTEX(-2734, -2559, 3990),\n    COL_VERTEX(-2465, -2559, 3809),\n    COL_VERTEX(-2428, -2559, 4096),\n    COL_VERTEX(-2303, -2559, 3934),\n    COL_VERTEX(-2160, -2559, 3915),\n    COL_VERTEX(-2409, -2354, 4240),\n    COL_VERTEX(3072, 768, -1125),\n    COL_VERTEX(3041, 768, -1279),\n    COL_VERTEX(4966, -4095, 5069),\n    COL_VERTEX(4604, -4216, 5575),\n    COL_VERTEX(4363, -4216, 5172),\n    COL_VERTEX(4882, -4216, 4475),\n    COL_VERTEX(5338, -4216, 4590),\n    COL_VERTEX(4478, -4216, 4716),\n    COL_VERTEX(5579, -4216, 4993),\n    COL_VERTEX(5464, -4216, 5449),\n    COL_VERTEX(5060, -4216, 5690),\n    COL_VERTEX(5380, -3848, 5036),\n    COL_VERTEX(5464, -3967, 5449),\n    COL_VERTEX(5579, -3972, 4993),\n    COL_VERTEX(5013, -3848, 5529),\n    COL_VERTEX(4887, -3848, 4670),\n    COL_VERTEX(5338, -3970, 4589),\n    COL_VERTEX(5061, -3967, 5690),\n    COL_VERTEX(4605, -3965, 5575),\n    COL_VERTEX(4520, -3848, 5163),\n    COL_VERTEX(4479, -3970, 4716),\n    COL_VERTEX(4363, -3965, 5172),\n    COL_VERTEX(4882, -3970, 4474),\n    COL_VERTEX(7322, -3583, 1382),\n    COL_VERTEX(7237, -3704, 788),\n    COL_VERTEX(7368, -3336, 1843),\n    COL_VERTEX(7735, -3336, 1350),\n    COL_VERTEX(7242, -3336, 983),\n    COL_VERTEX(7935, -3460, 1307),\n    COL_VERTEX(7819, -3704, 1763),\n    COL_VERTEX(7693, -3704, 903),\n    COL_VERTEX(6875, -3336, 1476),\n    COL_VERTEX(7415, -3704, 2004),\n    COL_VERTEX(6959, -3704, 1889),\n    COL_VERTEX(6718, -3453, 1485),\n    COL_VERTEX(6833, -3704, 1029),\n    COL_VERTEX(7237, -3458, 788),\n    COL_VERTEX(-3247, -2950, -3732),\n    COL_VERTEX(-3332, -3071, -4326),\n    COL_VERTEX(-2834, -2703, -3764),\n    COL_VERTEX(-3201, -2703, -3272),\n    COL_VERTEX(-3327, -2703, -4131),\n    COL_VERTEX(-2634, -2827, -3808),\n    COL_VERTEX(-2750, -3071, -3352),\n    COL_VERTEX(-2876, -3071, -4211),\n    COL_VERTEX(-3693, -2703, -3638),\n    COL_VERTEX(-3154, -3071, -3110),\n    COL_VERTEX(-3610, -3071, -3225),\n    COL_VERTEX(-3851, -2820, -3629),\n    COL_VERTEX(-3736, -3071, -4085),\n    COL_VERTEX(-3331, -2825, -4326),\n    COL_VERTEX(4412, -2873, -2846),\n    COL_VERTEX(4198, -2873, -2558),\n    COL_VERTEX(4125, -2873, -3060),\n    COL_VERTEX(4529, -2945, -2871),\n    COL_VERTEX(4461, -3087, -2605),\n    COL_VERTEX(4388, -3087, -3106),\n    COL_VERTEX(3911, -2873, -2772),\n    COL_VERTEX(4226, -3087, -2464),\n    COL_VERTEX(3960, -3087, -2531),\n    COL_VERTEX(3819, -2941, -2767),\n    COL_VERTEX(3886, -3087, -3033),\n    COL_VERTEX(4122, -2944, -3173),\n    COL_VERTEX(3466, -2986, -3260),\n    COL_VERTEX(3280, -2886, -3307),\n    COL_VERTEX(3282, -2836, -3227),\n    COL_VERTEX(3483, -2836, -3077),\n    COL_VERTEX(3565, -2886, -3095),\n    COL_VERTEX(3115, -2986, -3208),\n    COL_VERTEX(3068, -2884, -3022),\n    COL_VERTEX(3132, -2836, -3026),\n    COL_VERTEX(3167, -2986, -2857),\n    COL_VERTEX(3353, -2986, -2810),\n    COL_VERTEX(3334, -2836, -2876),\n    COL_VERTEX(3518, -2986, -2909),\n    COL_VERTEX(1955, -2886, -3616),\n    COL_VERTEX(1820, -2886, -3717),\n    COL_VERTEX(1854, -2886, -3481),\n    COL_VERTEX(2010, -2920, -3628),\n    COL_VERTEX(1978, -2987, -3503),\n    COL_VERTEX(1943, -2987, -3739),\n    COL_VERTEX(1818, -2920, -3770),\n    COL_VERTEX(1708, -2987, -3704),\n    COL_VERTEX(1676, -2918, -3579),\n    COL_VERTEX(1719, -2886, -3581),\n    COL_VERTEX(1742, -2987, -3468),\n    COL_VERTEX(1867, -2987, -3437),\n    COL_VERTEX(3203, -2873, -4288),\n    COL_VERTEX(3491, -2873, -4074),\n    COL_VERTEX(3277, -2873, -3787),\n    COL_VERTEX(3607, -2945, -4100),\n    COL_VERTEX(3540, -3087, -3834),\n    COL_VERTEX(3466, -3087, -4335),\n    COL_VERTEX(2989, -2873, -4001),\n    COL_VERTEX(3304, -3087, -3693),\n    COL_VERTEX(3038, -3087, -3760),\n    COL_VERTEX(2897, -2941, -3995),\n    COL_VERTEX(2965, -3087, -4261),\n    COL_VERTEX(3200, -2944, -4402),\n    COL_VERTEX(1684, -2872, -4278),\n    COL_VERTEX(1397, -2872, -4492),\n    COL_VERTEX(1470, -2872, -3990),\n    COL_VERTEX(1801, -2944, -4303),\n    COL_VERTEX(1733, -3087, -4037),\n    COL_VERTEX(1734, -2942, -4037),\n    COL_VERTEX(1660, -3087, -4538),\n    COL_VERTEX(1183, -2872, -4204),\n    COL_VERTEX(1498, -3087, -3896),\n    COL_VERTEX(1232, -3087, -3963),\n    COL_VERTEX(1091, -2941, -4199),\n    COL_VERTEX(1158, -3087, -4465),\n    COL_VERTEX(1394, -2944, -4605),\n    COL_VERTEX(4080, -2986, -3721),\n    COL_VERTEX(3894, -2886, -3768),\n    COL_VERTEX(4098, -2836, -3538),\n    COL_VERTEX(3896, -2836, -3688),\n    COL_VERTEX(4179, -2886, -3556),\n    COL_VERTEX(3729, -2986, -3669),\n    COL_VERTEX(3682, -2884, -3483),\n    COL_VERTEX(3747, -2836, -3487),\n    COL_VERTEX(3781, -2986, -3318),\n    COL_VERTEX(3967, -2986, -3271),\n    COL_VERTEX(3948, -2836, -3337),\n    COL_VERTEX(4132, -2986, -3370),\n    COL_VERTEX(2698, -2986, -3567),\n    COL_VERTEX(2512, -2885, -3614),\n    COL_VERTEX(2715, -2835, -3385),\n    COL_VERTEX(2514, -2835, -3534),\n    COL_VERTEX(2797, -2886, -3402),\n    COL_VERTEX(2347, -2986, -3516),\n    COL_VERTEX(2300, -2883, -3329),\n    COL_VERTEX(2364, -2835, -3333),\n    COL_VERTEX(2399, -2986, -3164),\n    COL_VERTEX(2585, -2986, -3118),\n    COL_VERTEX(2566, -2835, -3183),\n    COL_VERTEX(2750, -2986, -3216),\n    COL_VERTEX(723, -2986, -4365),\n    COL_VERTEX(537, -2886, -4412),\n    COL_VERTEX(741, -2836, -4182),\n    COL_VERTEX(539, -2836, -4332),\n    COL_VERTEX(822, -2887, -4200),\n    COL_VERTEX(372, -2986, -4313),\n    COL_VERTEX(325, -2884, -4127),\n    COL_VERTEX(390, -2836, -4131),\n    COL_VERTEX(424, -2986, -3962),\n    COL_VERTEX(610, -2986, -3915),\n    COL_VERTEX(591, -2836, -3981),\n    COL_VERTEX(775, -2986, -4014),\n    COL_VERTEX(2469, -2965, -4419),\n    COL_VERTEX(2334, -2965, -4520),\n    COL_VERTEX(2369, -2965, -4284),\n    COL_VERTEX(2524, -2999, -4431),\n    COL_VERTEX(2492, -3066, -4306),\n    COL_VERTEX(2458, -3066, -4542),\n    COL_VERTEX(2333, -2999, -4573),\n    COL_VERTEX(2222, -3066, -4507),\n    COL_VERTEX(2190, -2997, -4382),\n    COL_VERTEX(2234, -2965, -4385),\n    COL_VERTEX(2257, -3066, -4271),\n    COL_VERTEX(2382, -3066, -4240),\n    COL_VERTEX(2329, -3006, -3736),\n    COL_VERTEX(2429, -3006, -3871),\n    COL_VERTEX(2294, -3006, -3971),\n    COL_VERTEX(2484, -3040, -3883),\n    COL_VERTEX(2452, -3107, -3757),\n    COL_VERTEX(2418, -3107, -3993),\n    COL_VERTEX(2293, -3039, -4025),\n    COL_VERTEX(2182, -3107, -3959),\n    COL_VERTEX(2150, -3038, -3834),\n    COL_VERTEX(2193, -3006, -3836),\n    COL_VERTEX(2216, -3107, -3723),\n    COL_VERTEX(2342, -3107, -3691),\n    COL_VERTEX(3441, 711, -818),\n    COL_VERTEX(2401, -649, -2639),\n    COL_VERTEX(2477, -681, -3090),\n    COL_VERTEX(3343, -1048, -2126),\n    COL_VERTEX(-166, -60, -2804),\n    COL_VERTEX(-574, -10, -3212),\n    COL_VERTEX(102, -4505, 6503),\n    COL_VERTEX(410, -4332, 5325),\n    COL_VERTEX(-266, -4394, 6104),\n    COL_VERTEX(458, -4380, 6090),\n    COL_VERTEX(-204, -4332, 6042),\n    COL_VERTEX(-204, -4332, 5325),\n    COL_VERTEX(589, -4607, 4520),\n    COL_VERTEX(6718, -3704, 1485),\n    COL_VERTEX(7934, -3704, 1307),\n    COL_VERTEX(7820, -3455, 1763),\n    COL_VERTEX(7693, -3458, 903),\n    COL_VERTEX(7416, -3455, 2004),\n    COL_VERTEX(6960, -3453, 1889),\n    COL_VERTEX(6834, -3458, 1029),\n    COL_VERTEX(-3851, -3071, -3629),\n    COL_VERTEX(-3154, -3071, -3111),\n    COL_VERTEX(-2635, -3071, -3808),\n    COL_VERTEX(-2876, -2825, -4211),\n    COL_VERTEX(-2749, -2822, -3352),\n    COL_VERTEX(-3153, -2822, -3111),\n    COL_VERTEX(-3609, -2820, -3226),\n    COL_VERTEX(-3735, -2825, -4085),\n    COL_VERTEX(4462, -2942, -2605),\n    COL_VERTEX(4388, -2944, -3106),\n    COL_VERTEX(4226, -2942, -2464),\n    COL_VERTEX(4528, -3087, -2871),\n    COL_VERTEX(3960, -2941, -2531),\n    COL_VERTEX(3886, -2944, -3033),\n    COL_VERTEX(3819, -3087, -2767),\n    COL_VERTEX(4122, -3087, -3173),\n    COL_VERTEX(3466, -2886, -3260),\n    COL_VERTEX(3564, -2986, -3095),\n    COL_VERTEX(3280, -2986, -3307),\n    COL_VERTEX(3518, -2884, -2909),\n    COL_VERTEX(3115, -2886, -3208),\n    COL_VERTEX(3068, -2986, -3022),\n    COL_VERTEX(3353, -2884, -2810),\n    COL_VERTEX(3167, -2884, -2857),\n    COL_VERTEX(1978, -2919, -3503),\n    COL_VERTEX(1944, -2920, -3739),\n    COL_VERTEX(1867, -2919, -3437),\n    COL_VERTEX(1708, -2920, -3704),\n    COL_VERTEX(1742, -2918, -3468),\n    COL_VERTEX(2010, -2987, -3628),\n    COL_VERTEX(1818, -2987, -3770),\n    COL_VERTEX(1676, -2987, -3579),\n    COL_VERTEX(3466, -2944, -4335),\n    COL_VERTEX(3540, -2942, -3834),\n    COL_VERTEX(3304, -2942, -3693),\n    COL_VERTEX(3607, -3087, -4100),\n    COL_VERTEX(3038, -2941, -3760),\n    COL_VERTEX(2965, -2944, -4261),\n    COL_VERTEX(2897, -3087, -3995),\n    COL_VERTEX(3200, -3087, -4402),\n    COL_VERTEX(1660, -2944, -4538),\n    COL_VERTEX(1498, -2942, -3896),\n    COL_VERTEX(1232, -2941, -3963),\n    COL_VERTEX(1159, -2944, -4465),\n    COL_VERTEX(1800, -3087, -4303),\n    COL_VERTEX(1091, -3087, -4199),\n    COL_VERTEX(1394, -3087, -4605),\n    COL_VERTEX(4081, -2886, -3721),\n    COL_VERTEX(4179, -2986, -3556),\n    COL_VERTEX(3894, -2986, -3768),\n    COL_VERTEX(4132, -2884, -3370),\n    COL_VERTEX(3730, -2886, -3669),\n    COL_VERTEX(3682, -2986, -3483),\n    COL_VERTEX(3781, -2884, -3318),\n    COL_VERTEX(3967, -2884, -3271),\n    COL_VERTEX(2698, -2885, -3567),\n    COL_VERTEX(2796, -2986, -3402),\n    COL_VERTEX(2512, -2986, -3614),\n    COL_VERTEX(2750, -2884, -3216),\n    COL_VERTEX(2347, -2885, -3516),\n    COL_VERTEX(2585, -2884, -3118),\n    COL_VERTEX(2300, -2986, -3329),\n    COL_VERTEX(2399, -2883, -3165),\n    COL_VERTEX(724, -2886, -4365),\n    COL_VERTEX(822, -2986, -4200),\n    COL_VERTEX(537, -2986, -4412),\n    COL_VERTEX(775, -2885, -4014),\n    COL_VERTEX(373, -2886, -4313),\n    COL_VERTEX(325, -2986, -4127),\n    COL_VERTEX(610, -2885, -3915),\n    COL_VERTEX(424, -2884, -3962),\n    COL_VERTEX(2493, -2998, -4306),\n    COL_VERTEX(2458, -2999, -4542),\n    COL_VERTEX(2382, -2998, -4240),\n    COL_VERTEX(2222, -2999, -4507),\n    COL_VERTEX(2257, -2997, -4271),\n    COL_VERTEX(2524, -3066, -4431),\n    COL_VERTEX(2333, -3066, -4573),\n    COL_VERTEX(2190, -3066, -4382),\n    COL_VERTEX(2452, -3039, -3758),\n    COL_VERTEX(2418, -3039, -3993),\n    COL_VERTEX(2342, -3039, -3691),\n    COL_VERTEX(2484, -3107, -3883),\n    COL_VERTEX(2293, -3107, -4025),\n    COL_VERTEX(2182, -3039, -3959),\n    COL_VERTEX(2217, -3038, -3723),\n    COL_VERTEX(2150, -3107, -3834),\n    COL_VERTEX(3237, 768, -1361),\n    COL_VERTEX(3237, 768, -1279),\n    COL_VERTEX(3237, 768, -1049),\n    COL_VERTEX(3230, -1000, -1962),\n    COL_VERTEX(410, -4332, 6042),\n    COL_VERTEX(0, 3584, 0),\n    COL_VERTEX(1947, -4607, 4110),\n    COL_VERTEX(-8191, -8191, 8325),\n    COL_VERTEX(8192, -8191, -8058),\n    COL_VERTEX(-8191, -8191, -8058),\n    COL_VERTEX(8192, -8191, 8325),\n    COL_VERTEX(-2433, -706, -2759),\n    COL_VERTEX(-1969, -787, -3075),\n    COL_VERTEX(-1927, -706, -2683),\n    COL_VERTEX(-1936, -706, -3551),\n    COL_VERTEX(-1471, -706, -3480),\n    COL_VERTEX(3587, -4105, 3371),\n    COL_VERTEX(2357, -4351, 3616),\n    COL_VERTEX(3344, -4351, 3546),\n    COL_VERTEX(2045, -4351, 4479),\n    COL_VERTEX(1943, -4607, 4482),\n    COL_VERTEX(614, -4607, 4301),\n    COL_VERTEX(3237, 768, -1125),\n    COL_VERTEX(3182, 768, -972),\n    COL_VERTEX(3237, 749, -972),\n    COL_VERTEX(2560, 768, -1125),\n    COL_VERTEX(2560, 768, -972),\n    COL_VERTEX(5035, -4505, -3301),\n    COL_VERTEX(5035, -4505, -3590),\n    COL_VERTEX(4890, -4505, -3445),\n    COL_VERTEX(5180, -4505, -3445),\n    COL_VERTEX(-2, -6143, -4095),\n    COL_VERTEX(4771, -6143, -3235),\n    COL_VERTEX(3159, -6143, -4796),\n    COL_VERTEX(-2, -6143, -4505),\n    COL_VERTEX(4623, -6143, -2363),\n    COL_VERTEX(4096, -6143, -2047),\n    COL_VERTEX(-2399, -1023, -2712),\n    COL_VERTEX(-2439, -716, -2719),\n    COL_VERTEX(-2439, -1023, -2719),\n    COL_VERTEX(-2433, -716, -2759),\n    COL_VERTEX(-2399, -716, -2712),\n    COL_VERTEX(-2393, -716, -2753),\n    COL_VERTEX(-2393, -1023, -2753),\n    COL_VERTEX(-1967, -1023, -2689),\n    COL_VERTEX(-1967, -716, -2689),\n    COL_VERTEX(-1927, -716, -2683),\n    COL_VERTEX(-1974, -1023, -2649),\n    COL_VERTEX(-1974, -716, -2649),\n    COL_VERTEX(-1933, -716, -2642),\n    COL_VERTEX(-1933, -1023, -2642),\n    COL_VERTEX(-1430, -1090, -3474),\n    COL_VERTEX(-1430, -716, -3474),\n    COL_VERTEX(-1453, -1094, -3457),\n    COL_VERTEX(-1447, -716, -3498),\n    COL_VERTEX(-1960, -1168, -3534),\n    COL_VERTEX(-1936, -1165, -3551),\n    COL_VERTEX(-1977, -1171, -3557),\n    COL_VERTEX(-1954, -1167, -3574),\n    COL_VERTEX(-1453, -716, -3457),\n    COL_VERTEX(-1447, -1092, -3498),\n    COL_VERTEX(-1471, -1096, -3480),\n    COL_VERTEX(-1960, -716, -3534),\n    COL_VERTEX(-1977, -716, -3557),\n    COL_VERTEX(-1954, -716, -3574),\n    COL_VERTEX(-1981, -1170, -3670),\n    COL_VERTEX(-3071, -8089, 3107),\n    COL_VERTEX(-5119, -8089, -2626),\n    COL_VERTEX(-5119, -8089, 3107),\n    COL_VERTEX(-3890, -8089, -4060),\n    COL_VERTEX(-1637, -8089, -7132),\n    COL_VERTEX(-3071, -8089, -2421),\n    COL_VERTEX(-1228, -8089, -5903),\n    COL_VERTEX(4301, -8089, -6517),\n    COL_VERTEX(-5324, -8089, -4469),\n    COL_VERTEX(3072, -8089, -5289),\n    COL_VERTEX(5325, -8089, -3036),\n    COL_VERTEX(6758, -8089, -4469),\n    COL_VERTEX(4710, -8089, -3650),\n    COL_VERTEX(4506, -8089, -3650),\n    COL_VERTEX(-1936, -665, -3551),\n    COL_VERTEX(-1737, -2149, 3260),\n    COL_VERTEX(-1754, -2201, 3361),\n    COL_VERTEX(-1771, -2149, 3462),\n    COL_VERTEX(-1947, -1023, -1672),\n    COL_TRI_INIT(SURFACE_DEFAULT, 757),\n    COL_TRI(11, 13, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(3, 4, 5),\n    COL_TRI(3, 6, 4),\n    COL_TRI(7, 8, 9),\n    COL_TRI(8, 10, 9),\n    COL_TRI(11, 12, 10),\n    COL_TRI(9, 10, 12),\n    COL_TRI(15, 16, 10),\n    COL_TRI(16, 12, 10),\n    COL_TRI(11, 10, 8),\n    COL_TRI(11, 14, 13),\n    COL_TRI(17, 367, 18),\n    COL_TRI(18, 367, 368),\n    COL_TRI(18, 368, 19),\n    COL_TRI(23, 373, 374),\n    COL_TRI(19, 368, 369),\n    COL_TRI(19, 369, 20),\n    COL_TRI(17, 370, 367),\n    COL_TRI(20, 370, 17),\n    COL_TRI(20, 369, 370),\n    COL_TRI(21, 372, 22),\n    COL_TRI(22, 372, 373),\n    COL_TRI(22, 373, 23),\n    COL_TRI(27, 378, 28),\n    COL_TRI(23, 374, 24),\n    COL_TRI(21, 375, 372),\n    COL_TRI(24, 375, 21),\n    COL_TRI(24, 374, 375),\n    COL_TRI(25, 376, 27),\n    COL_TRI(25, 377, 376),\n    COL_TRI(26, 377, 25),\n    COL_TRI(27, 376, 378),\n    COL_TRI(33, 383, 384),\n    COL_TRI(26, 379, 377),\n    COL_TRI(28, 379, 26),\n    COL_TRI(28, 378, 379),\n    COL_TRI(29, 380, 30),\n    COL_TRI(30, 381, 31),\n    COL_TRI(30, 380, 381),\n    COL_TRI(29, 382, 380),\n    COL_TRI(31, 381, 382),\n    COL_TRI(31, 382, 29),\n    COL_TRI(32, 383, 33),\n    COL_TRI(38, 389, 39),\n    COL_TRI(32, 385, 383),\n    COL_TRI(33, 384, 34),\n    COL_TRI(34, 384, 385),\n    COL_TRI(34, 385, 32),\n    COL_TRI(35, 386, 36),\n    COL_TRI(36, 387, 37),\n    COL_TRI(36, 386, 387),\n    COL_TRI(35, 388, 386),\n    COL_TRI(37, 387, 388),\n    COL_TRI(37, 388, 35),\n    COL_TRI(39, 390, 40),\n    COL_TRI(38, 391, 389),\n    COL_TRI(39, 389, 390),\n    COL_TRI(40, 390, 391),\n    COL_TRI(40, 391, 38),\n    COL_TRI(41, 43, 42),\n    COL_TRI(42, 43, 44),\n    COL_TRI(43, 45, 44),\n    COL_TRI(44, 45, 46),\n    COL_TRI(45, 41, 46),\n    COL_TRI(46, 41, 42),\n    COL_TRI(47, 392, 49),\n    COL_TRI(47, 393, 392),\n    COL_TRI(48, 393, 47),\n    COL_TRI(48, 394, 393),\n    COL_TRI(49, 392, 394),\n    COL_TRI(49, 394, 48),\n    COL_TRI(50, 395, 396),\n    COL_TRI(50, 396, 52),\n    COL_TRI(51, 395, 50),\n    COL_TRI(51, 397, 395),\n    COL_TRI(52, 396, 397),\n    COL_TRI(52, 397, 51),\n    COL_TRI(53, 398, 54),\n    COL_TRI(54, 399, 55),\n    COL_TRI(53, 400, 398),\n    COL_TRI(54, 398, 399),\n    COL_TRI(55, 399, 400),\n    COL_TRI(55, 400, 53),\n    COL_TRI(56, 401, 402),\n    COL_TRI(57, 401, 56),\n    COL_TRI(56, 402, 58),\n    COL_TRI(57, 403, 401),\n    COL_TRI(58, 402, 403),\n    COL_TRI(58, 403, 57),\n    COL_TRI(59, 404, 60),\n    COL_TRI(60, 61, 62),\n    COL_TRI(59, 405, 404),\n    COL_TRI(60, 404, 61),\n    COL_TRI(61, 405, 59),\n    COL_TRI(62, 61, 59),\n    COL_TRI(63, 406, 64),\n    COL_TRI(64, 65, 67),\n    COL_TRI(64, 406, 66),\n    COL_TRI(65, 66, 72),\n    COL_TRI(66, 65, 64),\n    COL_TRI(64, 70, 63),\n    COL_TRI(65, 72, 67),\n    COL_TRI(67, 68, 407),\n    COL_TRI(64, 67, 407),\n    COL_TRI(68, 67, 72),\n    COL_TRI(69, 66, 406),\n    COL_TRI(69, 406, 63),\n    COL_TRI(70, 71, 196),\n    COL_TRI(63, 70, 196),\n    COL_TRI(70, 408, 71),\n    COL_TRI(70, 409, 408),\n    COL_TRI(71, 408, 73),\n    COL_TRI(71, 73, 196),\n    COL_TRI(72, 66, 69),\n    COL_TRI(73, 72, 69),\n    COL_TRI(68, 72, 408),\n    COL_TRI(74, 75, 80),\n    COL_TRI(74, 84, 75),\n    COL_TRI(75, 255, 80),\n    COL_TRI(74, 410, 76),\n    COL_TRI(76, 77, 74),\n    COL_TRI(74, 78, 84),\n    COL_TRI(74, 77, 78),\n    COL_TRI(77, 411, 78),\n    COL_TRI(76, 411, 77),\n    COL_TRI(78, 412, 84),\n    COL_TRI(76, 78, 411),\n    COL_TRI(78, 76, 412),\n    COL_TRI(79, 82, 74),\n    COL_TRI(80, 79, 74),\n    COL_TRI(81, 79, 255),\n    COL_TRI(79, 80, 255),\n    COL_TRI(82, 79, 81),\n    COL_TRI(85, 414, 415),\n    COL_TRI(83, 82, 81),\n    COL_TRI(82, 410, 413),\n    COL_TRI(82, 83, 410),\n    COL_TRI(84, 410, 83),\n    COL_TRI(84, 83, 172),\n    COL_TRI(84, 172, 171),\n    COL_TRI(85, 415, 86),\n    COL_TRI(85, 416, 414),\n    COL_TRI(86, 417, 418),\n    COL_TRI(86, 418, 85),\n    COL_TRI(87, 92, 89),\n    COL_TRI(87, 90, 92),\n    COL_TRI(88, 99, 87),\n    COL_TRI(89, 88, 87),\n    COL_TRI(90, 98, 419),\n    COL_TRI(90, 419, 88),\n    COL_TRI(90, 88, 92),\n    COL_TRI(90, 87, 102),\n    COL_TRI(91, 92, 97),\n    COL_TRI(92, 96, 97),\n    COL_TRI(92, 88, 96),\n    COL_TRI(89, 92, 91),\n    COL_TRI(93, 89, 91),\n    COL_TRI(89, 93, 94),\n    COL_TRI(89, 96, 88),\n    COL_TRI(96, 89, 123),\n    COL_TRI(97, 112, 420),\n    COL_TRI(91, 97, 420),\n    COL_TRI(98, 87, 99),\n    COL_TRI(99, 419, 98),\n    COL_TRI(99, 88, 419),\n    COL_TRI(87, 103, 102),\n    COL_TRI(105, 104, 106),\n    COL_TRI(102, 98, 90),\n    COL_TRI(103, 98, 101),\n    COL_TRI(102, 101, 98),\n    COL_TRI(103, 87, 98),\n    COL_TRI(104, 100, 15),\n    COL_TRI(105, 108, 104),\n    COL_TRI(104, 108, 100),\n    COL_TRI(106, 104, 15),\n    COL_TRI(100, 102, 103),\n    COL_TRI(101, 102, 100),\n    COL_TRI(105, 103, 108),\n    COL_TRI(107, 15, 100),\n    COL_TRI(103, 105, 100),\n    COL_TRI(100, 105, 107),\n    COL_TRI(108, 101, 100),\n    COL_TRI(105, 106, 107),\n    COL_TRI(111, 423, 422),\n    COL_TRI(109, 107, 106),\n    COL_TRI(110, 109, 106),\n    COL_TRI(108, 103, 101),\n    COL_TRI(111, 115, 420),\n    COL_TRI(112, 111, 420),\n    COL_TRI(111, 422, 115),\n    COL_TRI(114, 115, 120),\n    COL_TRI(115, 114, 424),\n    COL_TRI(116, 115, 422),\n    COL_TRI(116, 120, 115),\n    COL_TRI(91, 117, 93),\n    COL_TRI(16, 118, 91),\n    COL_TRI(16, 91, 13),\n    COL_TRI(117, 91, 145),\n    COL_TRI(91, 147, 145),\n    COL_TRI(118, 147, 91),\n    COL_TRI(9, 12, 371),\n    COL_TRI(12, 13, 371),\n    COL_TRI(12, 16, 13),\n    COL_TRI(119, 121, 371),\n    COL_TRI(120, 116, 119),\n    COL_TRI(15, 118, 16),\n    COL_TRI(121, 119, 122),\n    COL_TRI(116, 122, 119),\n    COL_TRI(94, 95, 89),\n    COL_TRI(122, 426, 121),\n    COL_TRI(123, 421, 128),\n    COL_TRI(123, 128, 113),\n    COL_TRI(123, 125, 421),\n    COL_TRI(123, 124, 125),\n    COL_TRI(124, 123, 95),\n    COL_TRI(95, 123, 89),\n    COL_TRI(125, 124, 95),\n    COL_TRI(126, 125, 94),\n    COL_TRI(125, 95, 94),\n    COL_TRI(130, 422, 423),\n    COL_TRI(127, 128, 421),\n    COL_TRI(128, 127, 129),\n    COL_TRI(129, 137, 128),\n    COL_TRI(113, 128, 428),\n    COL_TRI(113, 130, 423),\n    COL_TRI(113, 423, 111),\n    COL_TRI(113, 428, 130),\n    COL_TRI(130, 133, 422),\n    COL_TRI(135, 428, 137),\n    COL_TRI(130, 132, 133),\n    COL_TRI(132, 134, 133),\n    COL_TRI(133, 136, 422),\n    COL_TRI(133, 134, 136),\n    COL_TRI(134, 135, 136),\n    COL_TRI(135, 134, 428),\n    COL_TRI(136, 429, 427),\n    COL_TRI(136, 427, 116),\n    COL_TRI(128, 137, 428),\n    COL_TRI(131, 428, 137),\n    COL_TRI(137, 165, 131),\n    COL_TRI(138, 431, 137),\n    COL_TRI(139, 141, 144),\n    COL_TRI(140, 139, 142),\n    COL_TRI(141, 139, 140),\n    COL_TRI(142, 139, 144),\n    COL_TRI(143, 144, 141),\n    COL_TRI(143, 141, 433),\n    COL_TRI(141, 15, 432),\n    COL_TRI(141, 432, 433),\n    COL_TRI(141, 155, 15),\n    COL_TRI(141, 140, 155),\n    COL_TRI(144, 152, 117),\n    COL_TRI(144, 143, 152),\n    COL_TRI(117, 145, 144),\n    COL_TRI(145, 142, 144),\n    COL_TRI(118, 146, 147),\n    COL_TRI(146, 425, 147),\n    COL_TRI(147, 425, 142),\n    COL_TRI(147, 142, 145),\n    COL_TRI(148, 93, 117),\n    COL_TRI(149, 150, 117),\n    COL_TRI(150, 151, 117),\n    COL_TRI(151, 148, 117),\n    COL_TRI(152, 153, 117),\n    COL_TRI(153, 149, 117),\n    COL_TRI(140, 142, 425),\n    COL_TRI(15, 155, 118),\n    COL_TRI(154, 143, 433),\n    COL_TRI(154, 433, 174),\n    COL_TRI(155, 140, 434),\n    COL_TRI(155, 434, 118),\n    COL_TRI(140, 425, 146),\n    COL_TRI(140, 146, 434),\n    COL_TRI(118, 434, 146),\n    COL_TRI(156, 427, 429),\n    COL_TRI(157, 427, 156),\n    COL_TRI(157, 122, 427),\n    COL_TRI(116, 427, 122),\n    COL_TRI(158, 435, 429),\n    COL_TRI(148, 158, 429),\n    COL_TRI(156, 429, 435),\n    COL_TRI(159, 122, 157),\n    COL_TRI(159, 160, 122),\n    COL_TRI(160, 426, 122),\n    COL_TRI(161, 163, 160),\n    COL_TRI(161, 160, 159),\n    COL_TRI(160, 162, 426),\n    COL_TRI(162, 160, 163),\n    COL_TRI(163, 436, 162),\n    COL_TRI(164, 436, 163),\n    COL_TRI(163, 161, 106),\n    COL_TRI(136, 116, 422),\n    COL_TRI(130, 131, 132),\n    COL_TRI(165, 430, 132),\n    COL_TRI(165, 132, 131),\n    COL_TRI(132, 430, 135),\n    COL_TRI(132, 135, 134),\n    COL_TRI(131, 130, 428),\n    COL_TRI(93, 126, 94),\n    COL_TRI(161, 110, 106),\n    COL_TRI(166, 152, 167),\n    COL_TRI(152, 166, 153),\n    COL_TRI(167, 153, 166),\n    COL_TRI(153, 150, 149),\n    COL_TRI(150, 168, 170),\n    COL_TRI(151, 150, 170),\n    COL_TRI(154, 174, 439),\n    COL_TRI(168, 169, 170),\n    COL_TRI(169, 168, 246),\n    COL_TRI(170, 172, 151),\n    COL_TRI(170, 171, 172),\n    COL_TRI(169, 438, 170),\n    COL_TRI(171, 170, 438),\n    COL_TRI(172, 148, 151),\n    COL_TRI(173, 154, 439),\n    COL_TRI(174, 432, 440),\n    COL_TRI(174, 433, 432),\n    COL_TRI(154, 175, 143),\n    COL_TRI(175, 441, 179),\n    COL_TRI(175, 173, 441),\n    COL_TRI(176, 177, 175),\n    COL_TRI(177, 250, 175),\n    COL_TRI(175, 244, 442),\n    COL_TRI(186, 181, 190),\n    COL_TRI(172, 158, 148),\n    COL_TRI(158, 172, 181),\n    COL_TRI(81, 181, 172),\n    COL_TRI(172, 83, 81),\n    COL_TRI(181, 435, 158),\n    COL_TRI(182, 181, 255),\n    COL_TRI(81, 255, 181),\n    COL_TRI(183, 278, 181),\n    COL_TRI(182, 185, 181),\n    COL_TRI(184, 181, 278),\n    COL_TRI(184, 190, 181),\n    COL_TRI(185, 183, 181),\n    COL_TRI(187, 188, 186),\n    COL_TRI(188, 187, 446),\n    COL_TRI(187, 190, 446),\n    COL_TRI(188, 446, 447),\n    COL_TRI(189, 448, 446),\n    COL_TRI(190, 189, 446),\n    COL_TRI(191, 441, 173),\n    COL_TRI(192, 441, 191),\n    COL_TRI(143, 449, 195),\n    COL_TRI(179, 180, 175),\n    COL_TRI(193, 194, 191),\n    COL_TRI(194, 192, 191),\n    COL_TRI(121, 437, 164),\n    COL_TRI(164, 437, 436),\n    COL_TRI(195, 449, 200),\n    COL_TRI(196, 195, 200),\n    COL_TRI(199, 449, 450),\n    COL_TRI(199, 250, 449),\n    COL_TRI(200, 449, 250),\n    COL_TRI(201, 200, 250),\n    COL_TRI(200, 201, 63),\n    COL_TRI(63, 196, 200),\n    COL_TRI(198, 143, 195),\n    COL_TRI(231, 205, 451),\n    COL_TRI(174, 440, 439),\n    COL_TRI(202, 206, 231),\n    COL_TRI(203, 202, 204),\n    COL_TRI(204, 202, 231),\n    COL_TRI(205, 206, 451),\n    COL_TRI(206, 205, 231),\n    COL_TRI(207, 231, 452),\n    COL_TRI(207, 230, 231),\n    COL_TRI(208, 210, 209),\n    COL_TRI(208, 215, 233),\n    COL_TRI(208, 213, 215),\n    COL_TRI(209, 213, 208),\n    COL_TRI(210, 208, 233),\n    COL_TRI(210, 211, 209),\n    COL_TRI(211, 212, 209),\n    COL_TRI(212, 216, 209),\n    COL_TRI(209, 221, 213),\n    COL_TRI(209, 216, 221),\n    COL_TRI(207, 213, 221),\n    COL_TRI(213, 228, 215),\n    COL_TRI(214, 215, 228),\n    COL_TRI(215, 214, 233),\n    COL_TRI(216, 212, 445),\n    COL_TRI(217, 221, 216),\n    COL_TRI(207, 220, 230),\n    COL_TRI(218, 220, 219),\n    COL_TRI(219, 220, 454),\n    COL_TRI(221, 454, 207),\n    COL_TRI(220, 207, 454),\n    COL_TRI(221, 217, 454),\n    COL_TRI(222, 223, 217),\n    COL_TRI(223, 454, 217),\n    COL_TRI(216, 225, 217),\n    COL_TRI(224, 222, 217),\n    COL_TRI(225, 224, 217),\n    COL_TRI(218, 453, 220),\n    COL_TRI(218, 203, 453),\n    COL_TRI(219, 457, 218),\n    COL_TRI(213, 207, 452),\n    COL_TRI(213, 452, 228),\n    COL_TRI(223, 226, 454),\n    COL_TRI(226, 227, 454),\n    COL_TRI(227, 455, 454),\n    COL_TRI(228, 235, 279),\n    COL_TRI(228, 452, 235),\n    COL_TRI(228, 279, 214),\n    COL_TRI(229, 455, 222),\n    COL_TRI(222, 455, 227),\n    COL_TRI(222, 224, 229),\n    COL_TRI(222, 227, 456),\n    COL_TRI(222, 456, 223),\n    COL_TRI(231, 451, 235),\n    COL_TRI(219, 455, 229),\n    COL_TRI(229, 457, 219),\n    COL_TRI(220, 453, 204),\n    COL_TRI(220, 204, 230),\n    COL_TRI(203, 204, 453),\n    COL_TRI(230, 204, 231),\n    COL_TRI(232, 233, 280),\n    COL_TRI(233, 214, 280),\n    COL_TRI(234, 225, 216),\n    COL_TRI(234, 216, 183),\n    COL_TRI(235, 451, 279),\n    COL_TRI(206, 236, 451),\n    COL_TRI(241, 6, 4),\n    COL_TRI(236, 239, 451),\n    COL_TRI(237, 241, 4),\n    COL_TRI(237, 4, 242),\n    COL_TRI(238, 237, 242),\n    COL_TRI(237, 459, 275),\n    COL_TRI(237, 460, 459),\n    COL_TRI(239, 460, 237),\n    COL_TRI(240, 237, 238),\n    COL_TRI(240, 239, 237),\n    COL_TRI(6, 241, 442),\n    COL_TRI(4, 363, 242),\n    COL_TRI(4, 461, 363),\n    COL_TRI(6, 461, 4),\n    COL_TRI(242, 363, 462),\n    COL_TRI(242, 462, 243),\n    COL_TRI(238, 242, 244),\n    COL_TRI(242, 243, 244),\n    COL_TRI(240, 238, 180),\n    COL_TRI(180, 238, 244),\n    COL_TRI(243, 6, 442),\n    COL_TRI(6, 463, 461),\n    COL_TRI(243, 463, 6),\n    COL_TRI(244, 243, 442),\n    COL_TRI(243, 462, 463),\n    COL_TRI(363, 461, 463),\n    COL_TRI(363, 463, 462),\n    COL_TRI(180, 244, 175),\n    COL_TRI(245, 167, 152),\n    COL_TRI(245, 246, 167),\n    COL_TRI(246, 245, 169),\n    COL_TRI(245, 438, 169),\n    COL_TRI(245, 152, 143),\n    COL_TRI(247, 464, 201),\n    COL_TRI(247, 465, 464),\n    COL_TRI(251, 248, 466),\n    COL_TRI(247, 249, 465),\n    COL_TRI(248, 249, 247),\n    COL_TRI(249, 464, 465),\n    COL_TRI(249, 201, 464),\n    COL_TRI(250, 177, 201),\n    COL_TRI(201, 249, 63),\n    COL_TRI(247, 201, 177),\n    COL_TRI(171, 262, 75),\n    COL_TRI(248, 284, 252),\n    COL_TRI(252, 466, 248),\n    COL_TRI(253, 254, 466),\n    COL_TRI(254, 251, 466),\n    COL_TRI(253, 466, 252),\n    COL_TRI(75, 84, 171),\n    COL_TRI(255, 256, 443),\n    COL_TRI(256, 255, 75),\n    COL_TRI(257, 182, 255),\n    COL_TRI(255, 443, 257),\n    COL_TRI(257, 264, 182),\n    COL_TRI(258, 260, 182),\n    COL_TRI(182, 264, 444),\n    COL_TRI(182, 444, 258),\n    COL_TRI(259, 185, 182),\n    COL_TRI(260, 259, 182),\n    COL_TRI(261, 443, 256),\n    COL_TRI(262, 269, 256),\n    COL_TRI(266, 281, 259),\n    COL_TRI(261, 263, 443),\n    COL_TRI(263, 257, 443),\n    COL_TRI(264, 257, 263),\n    COL_TRI(265, 263, 261),\n    COL_TRI(264, 263, 265),\n    COL_TRI(261, 469, 265),\n    COL_TRI(266, 259, 258),\n    COL_TRI(258, 468, 266),\n    COL_TRI(256, 269, 261),\n    COL_TRI(260, 258, 259),\n    COL_TRI(267, 468, 258),\n    COL_TRI(267, 258, 444),\n    COL_TRI(268, 468, 267),\n    COL_TRI(268, 472, 468),\n    COL_TRI(269, 469, 261),\n    COL_TRI(267, 469, 270),\n    COL_TRI(270, 469, 269),\n    COL_TRI(269, 262, 470),\n    COL_TRI(269, 471, 270),\n    COL_TRI(269, 470, 471),\n    COL_TRI(267, 444, 473),\n    COL_TRI(270, 268, 267),\n    COL_TRI(271, 272, 270),\n    COL_TRI(270, 471, 271),\n    COL_TRI(272, 268, 270),\n    COL_TRI(240, 180, 273),\n    COL_TRI(273, 458, 240),\n    COL_TRI(239, 240, 458),\n    COL_TRI(214, 274, 239),\n    COL_TRI(274, 451, 239),\n    COL_TRI(214, 239, 458),\n    COL_TRI(275, 459, 276),\n    COL_TRI(275, 276, 272),\n    COL_TRI(276, 472, 268),\n    COL_TRI(272, 276, 268),\n    COL_TRI(277, 184, 278),\n    COL_TRI(278, 232, 277),\n    COL_TRI(183, 445, 278),\n    COL_TRI(278, 445, 232),\n    COL_TRI(216, 445, 183),\n    COL_TRI(279, 274, 214),\n    COL_TRI(280, 273, 289),\n    COL_TRI(280, 289, 353),\n    COL_TRI(280, 458, 273),\n    COL_TRI(280, 214, 458),\n    COL_TRI(281, 185, 259),\n    COL_TRI(185, 234, 183),\n    COL_TRI(185, 281, 234),\n    COL_TRI(186, 190, 187),\n    COL_TRI(86, 85, 467),\n    COL_TRI(75, 262, 256),\n    COL_TRI(282, 63, 249),\n    COL_TRI(283, 252, 284),\n    COL_TRI(247, 284, 248),\n    COL_TRI(284, 285, 283),\n    COL_TRI(252, 85, 86),\n    COL_TRI(252, 467, 85),\n    COL_TRI(252, 283, 467),\n    COL_TRI(86, 283, 285),\n    COL_TRI(86, 467, 283),\n    COL_TRI(86, 285, 253),\n    COL_TRI(196, 73, 197),\n    COL_TRI(279, 451, 274),\n    COL_TRI(254, 247, 177),\n    COL_TRI(254, 284, 247),\n    COL_TRI(285, 254, 253),\n    COL_TRI(285, 284, 254),\n    COL_TRI(252, 86, 253),\n    COL_TRI(273, 299, 289),\n    COL_TRI(286, 299, 273),\n    COL_TRI(282, 73, 69),\n    COL_TRI(282, 249, 248),\n    COL_TRI(176, 251, 177),\n    COL_TRI(287, 476, 197),\n    COL_TRI(176, 178, 251),\n    COL_TRI(251, 178, 475),\n    COL_TRI(178, 175, 442),\n    COL_TRI(178, 176, 175),\n    COL_TRI(197, 198, 195),\n    COL_TRI(197, 195, 196),\n    COL_TRI(287, 171, 476),\n    COL_TRI(287, 477, 171),\n    COL_TRI(287, 197, 478),\n    COL_TRI(288, 478, 197),\n    COL_TRI(177, 251, 254),\n    COL_TRI(197, 282, 288),\n    COL_TRI(293, 479, 292),\n    COL_TRI(197, 73, 282),\n    COL_TRI(289, 292, 479),\n    COL_TRI(290, 292, 289),\n    COL_TRI(290, 289, 296),\n    COL_TRI(291, 289, 479),\n    COL_TRI(292, 290, 304),\n    COL_TRI(299, 474, 290),\n    COL_TRI(294, 353, 291),\n    COL_TRI(295, 353, 294),\n    COL_TRI(293, 294, 479),\n    COL_TRI(294, 291, 479),\n    COL_TRI(296, 299, 290),\n    COL_TRI(297, 290, 481),\n    COL_TRI(290, 474, 481),\n    COL_TRI(298, 304, 290),\n    COL_TRI(300, 474, 299),\n    COL_TRI(300, 299, 286),\n    COL_TRI(299, 296, 289),\n    COL_TRI(301, 298, 302),\n    COL_TRI(298, 290, 297),\n    COL_TRI(302, 298, 297),\n    COL_TRI(301, 482, 298),\n    COL_TRI(293, 292, 480),\n    COL_TRI(300, 481, 474),\n    COL_TRI(303, 304, 301),\n    COL_TRI(304, 482, 301),\n    COL_TRI(305, 306, 308),\n    COL_TRI(305, 483, 332),\n    COL_TRI(305, 308, 483),\n    COL_TRI(312, 310, 307),\n    COL_TRI(306, 344, 307),\n    COL_TRI(307, 484, 306),\n    COL_TRI(308, 306, 309),\n    COL_TRI(306, 484, 309),\n    COL_TRI(309, 483, 308),\n    COL_TRI(309, 484, 311),\n    COL_TRI(310, 484, 307),\n    COL_TRI(311, 484, 310),\n    COL_TRI(313, 485, 486),\n    COL_TRI(313, 486, 315),\n    COL_TRI(314, 486, 485),\n    COL_TRI(315, 486, 487),\n    COL_TRI(314, 487, 486),\n    COL_TRI(315, 487, 488),\n    COL_TRI(312, 342, 489),\n    COL_TRI(311, 310, 490),\n    COL_TRI(318, 319, 320),\n    COL_TRI(286, 193, 447),\n    COL_TRI(286, 447, 491),\n    COL_TRI(316, 492, 317),\n    COL_TRI(317, 448, 316),\n    COL_TRI(313, 488, 194),\n    COL_TRI(313, 315, 488),\n    COL_TRI(319, 322, 493),\n    COL_TRI(319, 318, 322),\n    COL_TRI(321, 322, 318),\n    COL_TRI(322, 321, 493),\n    COL_TRI(323, 325, 324),\n    COL_TRI(324, 325, 494),\n    COL_TRI(325, 323, 494),\n    COL_TRI(326, 323, 327),\n    COL_TRI(326, 494, 323),\n    COL_TRI(327, 323, 324),\n    COL_TRI(324, 494, 326),\n    COL_TRI(328, 329, 330),\n    COL_TRI(334, 497, 327),\n    COL_TRI(328, 495, 329),\n    COL_TRI(329, 496, 331),\n    COL_TRI(331, 496, 495),\n    COL_TRI(331, 495, 328),\n    COL_TRI(329, 495, 496),\n    COL_TRI(332, 309, 311),\n    COL_TRI(332, 483, 309),\n    COL_TRI(333, 497, 334),\n    COL_TRI(327, 497, 498),\n    COL_TRI(330, 329, 331),\n    COL_TRI(320, 319, 493),\n    COL_TRI(335, 499, 500),\n    COL_TRI(336, 499, 335),\n    COL_TRI(337, 500, 499),\n    COL_TRI(337, 499, 336),\n    COL_TRI(335, 500, 337),\n    COL_TRI(342, 504, 505),\n    COL_TRI(334, 498, 333),\n    COL_TRI(333, 498, 497),\n    COL_TRI(338, 501, 340),\n    COL_TRI(338, 340, 341),\n    COL_TRI(339, 501, 338),\n    COL_TRI(339, 502, 501),\n    COL_TRI(340, 501, 502),\n    COL_TRI(341, 340, 503),\n    COL_TRI(340, 502, 503),\n    COL_TRI(341, 503, 336),\n    COL_TRI(336, 502, 339),\n    COL_TRI(336, 503, 502),\n    COL_TRI(346, 506, 348),\n    COL_TRI(343, 505, 504),\n    COL_TRI(344, 504, 307),\n    COL_TRI(307, 504, 342),\n    COL_TRI(344, 343, 504),\n    COL_TRI(345, 347, 346),\n    COL_TRI(346, 347, 506),\n    COL_TRI(347, 507, 506),\n    COL_TRI(345, 507, 347),\n    COL_TRI(348, 506, 507),\n    COL_TRI(348, 507, 345),\n    COL_TRI(349, 350, 508),\n    COL_TRI(349, 508, 351),\n    COL_TRI(350, 352, 508),\n    COL_TRI(351, 508, 353),\n    COL_TRI(352, 353, 508),\n    COL_TRI(351, 353, 295),\n    COL_TRI(353, 289, 291),\n    COL_TRI(352, 280, 353),\n    COL_TRI(307, 342, 312),\n    COL_TRI(354, 355, 356),\n    COL_TRI(355, 359, 509),\n    COL_TRI(356, 355, 510),\n    COL_TRI(354, 511, 355),\n    COL_TRI(357, 355, 509),\n    COL_TRI(355, 511, 359),\n    COL_TRI(357, 510, 355),\n    COL_TRI(358, 511, 354),\n    COL_TRI(358, 512, 511),\n    COL_TRI(359, 511, 512),\n    COL_TRI(357, 512, 510),\n    COL_TRI(362, 359, 514),\n    COL_TRI(360, 357, 509),\n    COL_TRI(357, 513, 512),\n    COL_TRI(359, 512, 513),\n    COL_TRI(361, 510, 512),\n    COL_TRI(361, 512, 358),\n    COL_TRI(356, 510, 361),\n    COL_TRI(362, 509, 359),\n    COL_TRI(360, 509, 362),\n    COL_TRI(364, 515, 365),\n    COL_TRI(365, 135, 516),\n    COL_TRI(365, 515, 135),\n    COL_TRI(364, 138, 515),\n    COL_TRI(138, 364, 431),\n    COL_TRI(167, 366, 153),\n    COL_TRI(366, 167, 246),\n    COL_TRI(153, 366, 150),\n    COL_TRI(840, 842, 843),\n    COL_TRI(2, 874, 0),\n    COL_TRI(846, 1, 853),\n    COL_TRI(846, 848, 1),\n    COL_TRI(834, 835, 836),\n    COL_TRI(834, 832, 835),\n    COL_TRI(840, 839, 842),\n    COL_TRI(857, 2, 858),\n    COL_TRI(857, 856, 2),\n    COL_TRI(86, 875, 417),\n    COL_TRI(86, 415, 875),\n    COL_TRI(415, 876, 875),\n    COL_TRI(415, 414, 876),\n    COL_TRI(414, 416, 877),\n    COL_TRI(414, 877, 876),\n    COL_TRI(189, 854, 845),\n    COL_TRI(418, 877, 416),\n    COL_TRI(418, 416, 85),\n    COL_TRI(448, 845, 847),\n    COL_TRI(849, 316, 448),\n    COL_TRI(448, 847, 850),\n    COL_TRI(448, 850, 849),\n    COL_TRI(448, 189, 845),\n    COL_TRI(859, 854, 189),\n    COL_TRI(852, 855, 854),\n    COL_TRI(854, 859, 852),\n    COL_TRI(852, 850, 855),\n    COL_TRI(847, 855, 850),\n    COL_TRI(849, 851, 316),\n    COL_TRI(851, 859, 316),\n    COL_TRI(859, 851, 852),\n    COL_TRI(489, 878, 490),\n    COL_TRI(490, 844, 489),\n    COL_TRI(490, 310, 844),\n    COL_TRI(841, 838, 837),\n    COL_TRI(844, 841, 489),\n    COL_TRI(841, 831, 489),\n    COL_TRI(831, 312, 489),\n    COL_TRI(841, 837, 831),\n    COL_TRI_INIT(SURFACE_HANGABLE, 4),\n    COL_TRI(805, 806, 807),\n    COL_TRI(808, 806, 805),\n    COL_TRI(809, 806, 808),\n    COL_TRI(809, 807, 806),\n    COL_TRI_INIT(SURFACE_DEATH_PLANE, 2),\n    COL_TRI(801, 802, 803),\n    COL_TRI(801, 804, 802),\n    COL_TRI_INIT(SURFACE_FLOWING_WATER, 15),\n    COL_TRI_SPECIAL(282, 813, 811, 0xD5),\n    COL_TRI_SPECIAL(810, 477, 287, 0xEB),\n    COL_TRI_SPECIAL(810, 478, 288, 0xF5),\n    COL_TRI_SPECIAL(811, 810, 288, 0xF5),\n    COL_TRI_SPECIAL(810, 287, 478, 0xE0),\n    COL_TRI_SPECIAL(811, 812, 810, 0xF5),\n    COL_TRI_SPECIAL(813, 812, 811, 0xE0),\n    COL_TRI_SPECIAL(282, 800, 814, 0xC0),\n    COL_TRI_SPECIAL(282, 814, 813, 0xC0),\n    COL_TRI_SPECIAL(699, 814, 800, 0xC0),\n    COL_TRI_SPECIAL(815, 699, 800, 0xD5),\n    COL_TRI_SPECIAL(475, 699, 815, 0x220),\n    COL_TRI_SPECIAL(248, 815, 800, 0xF5),\n    COL_TRI_SPECIAL(251, 815, 248, 0xF5),\n    COL_TRI_SPECIAL(251, 475, 815, 0x220),\n    COL_TRI_INIT(SURFACE_VERY_SLIPPERY, 24),\n    COL_TRI(15, 10, 164),\n    COL_TRI(9, 164, 10),\n    COL_TRI(420, 13, 91),\n    COL_TRI(164, 9, 799),\n    COL_TRI(9, 371, 799),\n    COL_TRI(121, 164, 799),\n    COL_TRI(799, 371, 121),\n    COL_TRI(119, 371, 114),\n    COL_TRI(159, 193, 191),\n    COL_TRI(120, 119, 114),\n    COL_TRI(112, 113, 111),\n    COL_TRI(123, 113, 112),\n    COL_TRI(123, 112, 97),\n    COL_TRI(97, 96, 123),\n    COL_TRI(159, 191, 161),\n    COL_TRI(476, 198, 197),\n    COL_TRI(304, 298, 482),\n    COL_TRI(304, 303, 480),\n    COL_TRI(292, 304, 480),\n    COL_TRI(248, 800, 282),\n    COL_TRI(476, 245, 198),\n    COL_TRI(143, 198, 245),\n    COL_TRI(438, 245, 476),\n    COL_TRI(171, 438, 476),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 474),\n    COL_TRI(526, 531, 530),\n    COL_TRI(517, 518, 519),\n    COL_TRI(520, 521, 517),\n    COL_TRI(517, 522, 520),\n    COL_TRI(517, 519, 522),\n    COL_TRI(517, 521, 523),\n    COL_TRI(517, 523, 524),\n    COL_TRI(517, 524, 525),\n    COL_TRI(517, 525, 518),\n    COL_TRI(526, 527, 528),\n    COL_TRI(529, 527, 526),\n    COL_TRI(530, 529, 526),\n    COL_TRI(526, 528, 531),\n    COL_TRI(524, 532, 525),\n    COL_TRI(524, 527, 532),\n    COL_TRI(529, 532, 527),\n    COL_TRI(528, 527, 524),\n    COL_TRI(521, 531, 528),\n    COL_TRI(521, 528, 523),\n    COL_TRI(528, 524, 523),\n    COL_TRI(529, 533, 532),\n    COL_TRI(534, 533, 529),\n    COL_TRI(530, 534, 529),\n    COL_TRI(525, 532, 533),\n    COL_TRI(518, 533, 536),\n    COL_TRI(534, 536, 533),\n    COL_TRI(534, 535, 536),\n    COL_TRI(530, 535, 534),\n    COL_TRI(518, 536, 519),\n    COL_TRI(536, 535, 522),\n    COL_TRI(536, 522, 519),\n    COL_TRI(522, 535, 537),\n    COL_TRI(530, 537, 535),\n    COL_TRI(530, 531, 537),\n    COL_TRI(522, 537, 520),\n    COL_TRI(537, 531, 521),\n    COL_TRI(537, 521, 520),\n    COL_TRI(525, 533, 518),\n    COL_TRI(541, 703, 542),\n    COL_TRI(538, 548, 700),\n    COL_TRI(538, 700, 550),\n    COL_TRI(538, 547, 548),\n    COL_TRI(538, 544, 547),\n    COL_TRI(538, 701, 544),\n    COL_TRI(538, 545, 701),\n    COL_TRI(539, 545, 538),\n    COL_TRI(538, 550, 539),\n    COL_TRI(540, 702, 541),\n    COL_TRI(541, 702, 543),\n    COL_TRI(541, 543, 703),\n    COL_TRI(542, 540, 541),\n    COL_TRI(544, 704, 547),\n    COL_TRI(540, 704, 702),\n    COL_TRI(543, 702, 544),\n    COL_TRI(544, 702, 704),\n    COL_TRI(543, 544, 701),\n    COL_TRI(545, 543, 701),\n    COL_TRI(545, 703, 543),\n    COL_TRI(540, 705, 704),\n    COL_TRI(546, 705, 540),\n    COL_TRI(542, 546, 540),\n    COL_TRI(547, 704, 705),\n    COL_TRI(546, 549, 705),\n    COL_TRI(548, 705, 549),\n    COL_TRI(546, 706, 549),\n    COL_TRI(542, 706, 546),\n    COL_TRI(548, 549, 700),\n    COL_TRI(549, 706, 550),\n    COL_TRI(549, 550, 700),\n    COL_TRI(542, 551, 706),\n    COL_TRI(550, 706, 551),\n    COL_TRI(542, 703, 551),\n    COL_TRI(551, 545, 539),\n    COL_TRI(551, 703, 545),\n    COL_TRI(550, 551, 539),\n    COL_TRI(547, 705, 548),\n    COL_TRI(556, 555, 554),\n    COL_TRI(552, 562, 707),\n    COL_TRI(552, 708, 562),\n    COL_TRI(552, 558, 708),\n    COL_TRI(552, 709, 558),\n    COL_TRI(552, 559, 709),\n    COL_TRI(552, 707, 564),\n    COL_TRI(552, 564, 553),\n    COL_TRI(553, 559, 552),\n    COL_TRI(554, 557, 710),\n    COL_TRI(554, 710, 556),\n    COL_TRI(554, 711, 557),\n    COL_TRI(555, 711, 554),\n    COL_TRI(558, 712, 561),\n    COL_TRI(555, 712, 711),\n    COL_TRI(557, 711, 558),\n    COL_TRI(558, 711, 712),\n    COL_TRI(559, 557, 709),\n    COL_TRI(559, 710, 557),\n    COL_TRI(557, 558, 709),\n    COL_TRI(560, 713, 555),\n    COL_TRI(555, 713, 712),\n    COL_TRI(556, 560, 555),\n    COL_TRI(561, 712, 713),\n    COL_TRI(560, 563, 713),\n    COL_TRI(562, 713, 563),\n    COL_TRI(560, 714, 563),\n    COL_TRI(556, 714, 560),\n    COL_TRI(563, 714, 564),\n    COL_TRI(563, 564, 707),\n    COL_TRI(562, 563, 707),\n    COL_TRI(564, 714, 565),\n    COL_TRI(556, 565, 714),\n    COL_TRI(556, 710, 565),\n    COL_TRI(564, 565, 553),\n    COL_TRI(565, 710, 559),\n    COL_TRI(565, 559, 553),\n    COL_TRI(561, 713, 562),\n    COL_TRI(566, 715, 569),\n    COL_TRI(567, 715, 566),\n    COL_TRI(566, 716, 568),\n    COL_TRI(568, 567, 566),\n    COL_TRI(566, 569, 716),\n    COL_TRI(567, 717, 715),\n    COL_TRI(569, 715, 570),\n    COL_TRI(570, 715, 717),\n    COL_TRI(571, 569, 718),\n    COL_TRI(571, 716, 569),\n    COL_TRI(569, 570, 718),\n    COL_TRI(567, 719, 717),\n    COL_TRI(572, 719, 567),\n    COL_TRI(568, 572, 567),\n    COL_TRI(573, 717, 719),\n    COL_TRI(574, 719, 575),\n    COL_TRI(572, 575, 719),\n    COL_TRI(572, 720, 575),\n    COL_TRI(568, 720, 572),\n    COL_TRI(574, 575, 721),\n    COL_TRI(575, 720, 576),\n    COL_TRI(575, 576, 721),\n    COL_TRI(576, 720, 577),\n    COL_TRI(568, 577, 720),\n    COL_TRI(568, 716, 577),\n    COL_TRI(573, 719, 574),\n    COL_TRI(576, 577, 722),\n    COL_TRI(577, 716, 571),\n    COL_TRI(577, 571, 722),\n    COL_TRI(570, 717, 573),\n    COL_TRI(578, 723, 582),\n    COL_TRI(578, 582, 724),\n    COL_TRI(579, 723, 578),\n    COL_TRI(579, 578, 725),\n    COL_TRI(584, 583, 728),\n    COL_TRI(580, 723, 579),\n    COL_TRI(581, 723, 580),\n    COL_TRI(581, 582, 723),\n    COL_TRI(581, 726, 582),\n    COL_TRI(582, 726, 589),\n    COL_TRI(582, 589, 724),\n    COL_TRI(583, 579, 725),\n    COL_TRI(583, 727, 579),\n    COL_TRI(580, 579, 727),\n    COL_TRI(584, 727, 583),\n    COL_TRI(580, 585, 588),\n    COL_TRI(580, 727, 585),\n    COL_TRI(585, 727, 584),\n    COL_TRI(586, 730, 584),\n    COL_TRI(586, 584, 728),\n    COL_TRI(585, 584, 730),\n    COL_TRI(587, 730, 586),\n    COL_TRI(585, 730, 588),\n    COL_TRI(588, 730, 729),\n    COL_TRI(587, 729, 730),\n    COL_TRI(589, 729, 587),\n    COL_TRI(592, 731, 590),\n    COL_TRI(588, 729, 726),\n    COL_TRI(589, 726, 729),\n    COL_TRI(588, 726, 581),\n    COL_TRI(580, 588, 581),\n    COL_TRI(590, 731, 593),\n    COL_TRI(591, 592, 590),\n    COL_TRI(590, 732, 591),\n    COL_TRI(590, 593, 732),\n    COL_TRI(593, 731, 594),\n    COL_TRI(594, 731, 733),\n    COL_TRI(592, 733, 731),\n    COL_TRI(595, 732, 593),\n    COL_TRI(595, 593, 736),\n    COL_TRI(593, 594, 736),\n    COL_TRI(596, 732, 595),\n    COL_TRI(596, 595, 737),\n    COL_TRI(591, 732, 596),\n    COL_TRI(597, 734, 596),\n    COL_TRI(597, 596, 737),\n    COL_TRI(591, 596, 734),\n    COL_TRI(591, 599, 592),\n    COL_TRI(598, 734, 597),\n    COL_TRI(598, 597, 738),\n    COL_TRI(591, 734, 599),\n    COL_TRI(599, 734, 598),\n    COL_TRI(600, 735, 598),\n    COL_TRI(600, 598, 738),\n    COL_TRI(599, 598, 735),\n    COL_TRI(601, 735, 600),\n    COL_TRI(599, 735, 592),\n    COL_TRI(592, 735, 733),\n    COL_TRI(594, 733, 601),\n    COL_TRI(601, 733, 735),\n    COL_TRI(602, 604, 603),\n    COL_TRI(603, 739, 602),\n    COL_TRI(603, 605, 739),\n    COL_TRI(603, 740, 605),\n    COL_TRI(604, 740, 603),\n    COL_TRI(605, 740, 606),\n    COL_TRI(606, 740, 741),\n    COL_TRI(604, 741, 740),\n    COL_TRI(605, 606, 742),\n    COL_TRI(607, 605, 742),\n    COL_TRI(607, 739, 605),\n    COL_TRI(608, 743, 604),\n    COL_TRI(604, 743, 741),\n    COL_TRI(602, 608, 604),\n    COL_TRI(609, 741, 743),\n    COL_TRI(608, 611, 743),\n    COL_TRI(610, 743, 611),\n    COL_TRI(608, 744, 611),\n    COL_TRI(602, 744, 608),\n    COL_TRI(610, 611, 745),\n    COL_TRI(611, 744, 612),\n    COL_TRI(611, 612, 745),\n    COL_TRI(602, 613, 744),\n    COL_TRI(612, 744, 613),\n    COL_TRI(602, 739, 613),\n    COL_TRI(609, 743, 610),\n    COL_TRI(614, 747, 615),\n    COL_TRI(612, 613, 746),\n    COL_TRI(613, 739, 607),\n    COL_TRI(613, 607, 746),\n    COL_TRI(606, 741, 609),\n    COL_TRI(614, 619, 617),\n    COL_TRI(615, 616, 614),\n    COL_TRI(614, 617, 747),\n    COL_TRI(616, 619, 614),\n    COL_TRI(616, 748, 619),\n    COL_TRI(617, 619, 618),\n    COL_TRI(618, 619, 622),\n    COL_TRI(619, 748, 622),\n    COL_TRI(620, 747, 617),\n    COL_TRI(620, 617, 751),\n    COL_TRI(617, 618, 751),\n    COL_TRI(615, 621, 616),\n    COL_TRI(621, 749, 616),\n    COL_TRI(616, 749, 748),\n    COL_TRI(622, 748, 749),\n    COL_TRI(621, 624, 749),\n    COL_TRI(623, 749, 624),\n    COL_TRI(615, 750, 621),\n    COL_TRI(621, 750, 624),\n    COL_TRI(624, 625, 752),\n    COL_TRI(624, 750, 625),\n    COL_TRI(623, 624, 752),\n    COL_TRI(625, 750, 626),\n    COL_TRI(615, 626, 750),\n    COL_TRI(615, 747, 626),\n    COL_TRI(622, 749, 623),\n    COL_TRI(625, 626, 753),\n    COL_TRI(626, 747, 620),\n    COL_TRI(626, 620, 753),\n    COL_TRI(627, 754, 631),\n    COL_TRI(627, 631, 755),\n    COL_TRI(628, 754, 627),\n    COL_TRI(628, 627, 756),\n    COL_TRI(629, 754, 630),\n    COL_TRI(629, 631, 754),\n    COL_TRI(630, 754, 628),\n    COL_TRI(629, 757, 631),\n    COL_TRI(631, 757, 638),\n    COL_TRI(631, 638, 755),\n    COL_TRI(630, 628, 758),\n    COL_TRI(632, 758, 628),\n    COL_TRI(632, 628, 756),\n    COL_TRI(633, 758, 632),\n    COL_TRI(633, 632, 759),\n    COL_TRI(634, 758, 633),\n    COL_TRI(630, 758, 634),\n    COL_TRI(637, 757, 629),\n    COL_TRI(634, 633, 760),\n    COL_TRI(635, 760, 633),\n    COL_TRI(635, 633, 759),\n    COL_TRI(636, 760, 635),\n    COL_TRI(634, 760, 637),\n    COL_TRI(637, 760, 761),\n    COL_TRI(638, 761, 636),\n    COL_TRI(636, 761, 760),\n    COL_TRI(637, 761, 757),\n    COL_TRI(638, 757, 761),\n    COL_TRI(630, 637, 629),\n    COL_TRI(630, 634, 637),\n    COL_TRI(639, 762, 643),\n    COL_TRI(639, 643, 763),\n    COL_TRI(640, 762, 639),\n    COL_TRI(640, 639, 764),\n    COL_TRI(641, 762, 642),\n    COL_TRI(641, 643, 762),\n    COL_TRI(642, 762, 640),\n    COL_TRI(643, 765, 650),\n    COL_TRI(643, 650, 763),\n    COL_TRI(641, 765, 643),\n    COL_TRI(642, 646, 649),\n    COL_TRI(644, 640, 764),\n    COL_TRI(644, 766, 640),\n    COL_TRI(642, 640, 766),\n    COL_TRI(645, 766, 644),\n    COL_TRI(645, 644, 768),\n    COL_TRI(642, 766, 646),\n    COL_TRI(646, 766, 645),\n    COL_TRI(647, 769, 645),\n    COL_TRI(647, 645, 768),\n    COL_TRI(646, 645, 769),\n    COL_TRI(648, 769, 647),\n    COL_TRI(646, 769, 649),\n    COL_TRI(649, 769, 767),\n    COL_TRI(648, 767, 769),\n    COL_TRI(652, 651, 772),\n    COL_TRI(649, 767, 765),\n    COL_TRI(650, 765, 767),\n    COL_TRI(650, 767, 648),\n    COL_TRI(649, 765, 641),\n    COL_TRI(642, 649, 641),\n    COL_TRI(651, 770, 655),\n    COL_TRI(651, 655, 771),\n    COL_TRI(652, 770, 651),\n    COL_TRI(657, 656, 775),\n    COL_TRI(653, 770, 654),\n    COL_TRI(653, 655, 770),\n    COL_TRI(654, 770, 652),\n    COL_TRI(655, 773, 662),\n    COL_TRI(655, 662, 771),\n    COL_TRI(653, 773, 655),\n    COL_TRI(656, 652, 772),\n    COL_TRI(654, 652, 774),\n    COL_TRI(656, 774, 652),\n    COL_TRI(657, 774, 656),\n    COL_TRI(654, 658, 661),\n    COL_TRI(654, 774, 658),\n    COL_TRI(658, 774, 657),\n    COL_TRI(659, 777, 657),\n    COL_TRI(659, 657, 775),\n    COL_TRI(658, 657, 777),\n    COL_TRI(660, 777, 659),\n    COL_TRI(658, 777, 661),\n    COL_TRI(661, 777, 776),\n    COL_TRI(662, 776, 660),\n    COL_TRI(660, 776, 777),\n    COL_TRI(665, 778, 663),\n    COL_TRI(661, 776, 773),\n    COL_TRI(662, 773, 776),\n    COL_TRI(661, 773, 653),\n    COL_TRI(654, 661, 653),\n    COL_TRI(663, 778, 666),\n    COL_TRI(663, 666, 779),\n    COL_TRI(663, 779, 664),\n    COL_TRI(664, 665, 663),\n    COL_TRI(666, 778, 667),\n    COL_TRI(667, 778, 780),\n    COL_TRI(665, 780, 778),\n    COL_TRI(668, 666, 783),\n    COL_TRI(668, 779, 666),\n    COL_TRI(666, 667, 783),\n    COL_TRI(669, 668, 784),\n    COL_TRI(669, 779, 668),\n    COL_TRI(664, 779, 669),\n    COL_TRI(664, 669, 781),\n    COL_TRI(670, 781, 669),\n    COL_TRI(670, 669, 784),\n    COL_TRI(664, 672, 665),\n    COL_TRI(671, 670, 785),\n    COL_TRI(671, 781, 670),\n    COL_TRI(672, 781, 671),\n    COL_TRI(664, 781, 672),\n    COL_TRI(672, 671, 782),\n    COL_TRI(673, 671, 785),\n    COL_TRI(673, 782, 671),\n    COL_TRI(674, 782, 673),\n    COL_TRI(665, 782, 780),\n    COL_TRI(672, 782, 665),\n    COL_TRI(667, 780, 674),\n    COL_TRI(674, 780, 782),\n    COL_TRI(675, 786, 676),\n    COL_TRI(676, 786, 678),\n    COL_TRI(676, 787, 677),\n    COL_TRI(676, 678, 787),\n    COL_TRI(677, 675, 676),\n    COL_TRI(675, 788, 786),\n    COL_TRI(678, 786, 679),\n    COL_TRI(679, 786, 788),\n    COL_TRI(680, 787, 678),\n    COL_TRI(678, 679, 789),\n    COL_TRI(680, 678, 789),\n    COL_TRI(681, 680, 790),\n    COL_TRI(681, 787, 680),\n    COL_TRI(677, 787, 681),\n    COL_TRI(677, 684, 675),\n    COL_TRI(682, 791, 681),\n    COL_TRI(682, 681, 790),\n    COL_TRI(677, 681, 791),\n    COL_TRI(683, 682, 793),\n    COL_TRI(683, 791, 682),\n    COL_TRI(677, 791, 684),\n    COL_TRI(684, 791, 683),\n    COL_TRI(684, 683, 792),\n    COL_TRI(685, 683, 793),\n    COL_TRI(685, 792, 683),\n    COL_TRI(686, 792, 685),\n    COL_TRI(684, 792, 675),\n    COL_TRI(675, 792, 788),\n    COL_TRI(686, 788, 792),\n    COL_TRI(136, 135, 794),\n    COL_TRI(679, 788, 686),\n    COL_TRI(420, 424, 13),\n    COL_TRI(115, 424, 420),\n    COL_TRI(13, 424, 371),\n    COL_TRI(424, 114, 371),\n    COL_TRI(429, 136, 794),\n    COL_TRI(421, 125, 126),\n    COL_TRI(135, 795, 794),\n    COL_TRI(148, 429, 687),\n    COL_TRI(429, 795, 796),\n    COL_TRI(429, 794, 795),\n    COL_TRI(129, 429, 796),\n    COL_TRI(421, 126, 93),\n    COL_TRI(689, 688, 797),\n    COL_TRI(93, 148, 421),\n    COL_TRI(148, 687, 421),\n    COL_TRI(687, 127, 421),\n    COL_TRI(687, 429, 129),\n    COL_TRI(687, 129, 127),\n    COL_TRI(688, 689, 691),\n    COL_TRI(689, 692, 691),\n    COL_TRI(188, 692, 689),\n    COL_TRI(690, 188, 689),\n    COL_TRI(689, 797, 690),\n    COL_TRI(193, 159, 692),\n    COL_TRI(188, 447, 692),\n    COL_TRI(688, 691, 156),\n    COL_TRI(691, 157, 156),\n    COL_TRI(435, 688, 156),\n    COL_TRI(435, 797, 688),\n    COL_TRI(159, 691, 692),\n    COL_TRI(157, 691, 159),\n    COL_TRI(692, 447, 193),\n    COL_TRI(690, 186, 188),\n    COL_TRI(186, 690, 797),\n    COL_TRI(186, 797, 435),\n    COL_TRI(178, 442, 271),\n    COL_TRI(275, 442, 237),\n    COL_TRI(442, 241, 237),\n    COL_TRI(180, 179, 273),\n    COL_TRI(693, 696, 695),\n    COL_TRI(275, 693, 695),\n    COL_TRI(693, 272, 696),\n    COL_TRI(272, 271, 696),\n    COL_TRI(694, 798, 696),\n    COL_TRI(695, 697, 698),\n    COL_TRI(696, 697, 695),\n    COL_TRI(696, 798, 697),\n    COL_TRI(697, 798, 694),\n    COL_TRI(697, 694, 698),\n    COL_TRI(275, 695, 698),\n    COL_TRI(271, 694, 696),\n    COL_TRI(366, 246, 150),\n    COL_TRI(442, 698, 271),\n    COL_TRI(442, 275, 698),\n    COL_TRI(698, 694, 271),\n    COL_TRI(699, 271, 471),\n    COL_TRI(699, 475, 271),\n    COL_TRI(475, 178, 271),\n    COL_TRI(246, 168, 150),\n    COL_TRI_INIT(SURFACE_TTM_VINES, 2),\n    COL_TRI(809, 808, 805),\n    COL_TRI(809, 805, 807),\n    COL_TRI_INIT(SURFACE_SHALLOW_QUICKSAND, 3),\n    COL_TRI(162, 437, 121),\n    COL_TRI(426, 162, 121),\n    COL_TRI(162, 436, 437),\n    COL_TRI_INIT(SURFACE_WALL_MISC, 34),\n    COL_TRI(109, 432, 15),\n    COL_TRI(109, 15, 107),\n    COL_TRI(456, 821, 223),\n    COL_TRI(821, 822, 823),\n    COL_TRI(821, 824, 822),\n    COL_TRI(456, 824, 821),\n    COL_TRI(223, 821, 823),\n    COL_TRI(227, 822, 824),\n    COL_TRI(227, 824, 456),\n    COL_TRI(226, 823, 822),\n    COL_TRI(226, 822, 227),\n    COL_TRI(223, 823, 226),\n    COL_TRI(210, 826, 211),\n    COL_TRI(210, 827, 826),\n    COL_TRI(233, 827, 210),\n    COL_TRI(233, 828, 827),\n    COL_TRI(211, 826, 829),\n    COL_TRI(232, 828, 233),\n    COL_TRI(232, 825, 828),\n    COL_TRI(211, 829, 212),\n    COL_TRI(212, 829, 830),\n    COL_TRI(212, 830, 445),\n    COL_TRI(825, 232, 445),\n    COL_TRI(445, 830, 825),\n    COL_TRI(179, 441, 192),\n    COL_TRI(189, 184, 277),\n    COL_TRI(277, 232, 189),\n    COL_TRI(446, 189, 280),\n    COL_TRI(280, 189, 232),\n    COL_TRI(189, 190, 184),\n    COL_TRI(179, 192, 273),\n    COL_TRI(446, 280, 491),\n    COL_TRI(286, 273, 192),\n    COL_TRI(286, 192, 194),\n    COL_TRI_INIT(SURFACE_VERTICAL_WIND, 12),\n    COL_TRI(860, 861, 862),\n    COL_TRI(863, 864, 861),\n    COL_TRI(861, 865, 863),\n    COL_TRI(863, 866, 864),\n    COL_TRI(867, 864, 866),\n    COL_TRI(864, 868, 861),\n    COL_TRI(861, 860, 865),\n    COL_TRI(867, 866, 869),\n    COL_TRI(867, 870, 871),\n    COL_TRI(867, 872, 870),\n    COL_TRI(867, 873, 872),\n    COL_TRI(867, 869, 873),\n    COL_TRI_INIT(SURFACE_CAMERA_ROTATE_LEFT, 8),\n    COL_TRI(106, 15, 163),\n    COL_TRI(15, 164, 163),\n    COL_TRI(439, 440, 109),\n    COL_TRI(440, 432, 109),\n    COL_TRI(161, 191, 173),\n    COL_TRI(161, 173, 110),\n    COL_TRI(173, 439, 110),\n    COL_TRI(439, 109, 110),\n    COL_TRI_INIT(SURFACE_NO_CAM_COLLISION, 42),\n    COL_TRI(841, 839, 838),\n    COL_TRI(831, 832, 833),\n    COL_TRI(833, 832, 834),\n    COL_TRI(833, 834, 312),\n    COL_TRI(831, 835, 832),\n    COL_TRI(312, 834, 836),\n    COL_TRI(312, 836, 837),\n    COL_TRI(837, 835, 831),\n    COL_TRI(837, 836, 835),\n    COL_TRI(838, 839, 840),\n    COL_TRI(838, 840, 310),\n    COL_TRI(841, 842, 839),\n    COL_TRI(310, 840, 843),\n    COL_TRI(310, 843, 844),\n    COL_TRI(844, 842, 841),\n    COL_TRI(844, 843, 842),\n    COL_TRI(845, 853, 847),\n    COL_TRI(845, 846, 853),\n    COL_TRI(846, 845, 848),\n    COL_TRI(850, 2, 856),\n    COL_TRI(847, 853, 1),\n    COL_TRI(847, 1, 855),\n    COL_TRI(845, 854, 848),\n    COL_TRI(848, 854, 855),\n    COL_TRI(848, 855, 1),\n    COL_TRI(849, 856, 857),\n    COL_TRI(849, 857, 851),\n    COL_TRI(850, 856, 849),\n    COL_TRI(851, 857, 858),\n    COL_TRI(852, 2, 850),\n    COL_TRI(852, 858, 2),\n    COL_TRI(851, 858, 852),\n    COL_TRI(189, 492, 859),\n    COL_TRI(492, 316, 859),\n    COL_TRI(699, 471, 813),\n    COL_TRI(813, 814, 699),\n    COL_TRI(812, 813, 471),\n    COL_TRI(471, 810, 812),\n    COL_TRI(470, 810, 471),\n    COL_TRI(470, 262, 477),\n    COL_TRI(477, 810, 470),\n    COL_TRI(282, 811, 288),\n    COL_TRI_INIT(SURFACE_PAINTING_WOBBLE_A6, 3),\n    COL_TRI(138, 137, 817),\n    COL_TRI(817, 137, 129),\n    COL_TRI(818, 817, 129),\n    COL_TRI_INIT(SURFACE_PAINTING_WOBBLE_A7, 4),\n    COL_TRI(515, 138, 817),\n    COL_TRI(515, 817, 796),\n    COL_TRI(515, 796, 816),\n    COL_TRI(796, 817, 818),\n    COL_TRI_INIT(SURFACE_PAINTING_WOBBLE_A8, 2),\n    COL_TRI(135, 816, 795),\n    COL_TRI(135, 515, 816),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_D3, 2),\n    COL_TRI(820, 165, 364),\n    COL_TRI(165, 431, 364),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_D4, 2),\n    COL_TRI(819, 820, 365),\n    COL_TRI(820, 364, 365),\n    COL_TRI_INIT(SURFACE_PAINTING_WARP_D5, 2),\n    COL_TRI(516, 819, 365),\n    COL_TRI(516, 430, 819),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(29),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_null_start,   /*pos*/   102, -4332,  5734, /*yaw*/ 32), // unused, probably an early way to set initial position\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/ -3276, -4423, -3685, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/  7293, -5056,  1429, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_03, /*pos*/  4938, -5568,  5115, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_04, /*pos*/  4198, -4508, -2866, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_04, /*pos*/  1470, -4507, -4298, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_04, /*pos*/  3277, -4508, -4095, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_05, /*pos*/  3891, -4489, -3532, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_05, /*pos*/  3277, -4489, -3071, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_05, /*pos*/  2509, -4489, -3378, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_05, /*pos*/   534, -4490, -4176, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_06, /*pos*/  2358, -4594, -4386, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_06, /*pos*/  1843, -4515, -3583, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_06, /*pos*/  2317, -4635, -3838, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_07, /*pos*/   102, -4363,  5734, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_08, /*pos*/  4710, -4656,  -101, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_09, /*pos*/  5018, -4249, -3481, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0A, /*pos*/  -306, -3356,  3584, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0B, /*pos*/  1434, -2279,  3277, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0C, /*pos*/  2970, -1854,  4301, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0D, /*pos*/  4608, -1854,  2560, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0F, /*pos*/  2355,  1309,  1229, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_10, /*pos*/  1843,  1295,  1024, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_11, /*pos*/   819,  2349,  -101, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_12, /*pos*/ -1945,  -918, -3071, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_13, /*pos*/ -1842, -1791, -2866, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_14, /*pos*/ -1228,  -613, -3071, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_15, /*pos*/ -1740,  -204, -2354, /*yaw*/  0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_16, /*pos*/ -2764, -2661,  3789, /*yaw*/  0),\n    COL_WATER_BOX_INIT(4),\n    COL_WATER_BOX(0, -2047, 2765, 1946, 5069, -4402),\n    COL_WATER_BOX(2, 2358, 2849, 3792, 3474, -3839),\n    COL_WATER_BOX(1, 1972, 3481, 3641, 4505, -4095),\n    COL_WATER_BOX(3, 1586, 898, 3583, 2751, -1637),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/geo.inc.c",
    "content": "// 0x0E000A70\nconst GeoLayout ttm_geo_000A70[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND(BACKGROUND_OCEAN_SKY, geo_skybox_main),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 12800, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(1, 0, 2000, 6000, 0, -2200, 0, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, ttm_seg7_dl_0700A120),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, ttm_seg7_dl_0700A2E0),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(    0, geo_painting_update),\n                    GEO_ASM(PAINTING_ID(0, 2), geo_painting_draw),\n                    GEO_ASM(    0, geo_movtex_pause_control),\n                    GEO_ASM(0x3601, geo_movtex_draw_nocolor),\n                    GEO_ASM(0x3602, geo_movtex_draw_nocolor),\n                    GEO_ASM(0x3603, geo_movtex_draw_nocolor),\n                    GEO_ASM(0x3604, geo_movtex_draw_nocolor),\n                    GEO_ASM(0x3605, geo_movtex_draw_nocolor),\n                    GEO_ASM(0x3601, geo_movtex_draw_water_regions),\n                    GEO_ASM(    0, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_cannon_circle_base),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/macro.inc.c",
    "content": "// 0x07016F18 - 0x070170A0\nconst MacroObject ttm_seg7_area_1_macro_objs[] = {\n    MACRO_OBJECT               (/*preset*/ macro_bobomb_buddy_opens_cannon_1, /*yaw*/   0, /*pos*/   799, -2668,  3320),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_cannon_closed,               /*yaw*/  45, /*pos*/  5035, -3994, -3445, /*bhvParam*/ 0xC0),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/  90, /*pos*/  3644, -1304,  1422, /*bhvParam*/ DIALOG_072),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/   0, /*pos*/   622, -4331,  5466, /*bhvParam*/ DIALOG_094),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  1450, -2750, -4250),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  2550, -2750, -3400),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  4150, -2700, -2800),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -1600, -1650, -2500),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -1200, -1600, -3250),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -1850,   100, -2850),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -1500,  -800, -2750),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/ 180, /*pos*/ -1126, -3448, -4400, /*bhvParam*/ DIALOG_091),\n    MACRO_OBJECT               (/*preset*/ macro_goomba_triplet_spawner,      /*yaw*/   0, /*pos*/  1740, -4236,  5320),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_horizontal,        /*yaw*/   0, /*pos*/  4540, -4607,  1060),\n    MACRO_OBJECT               (/*preset*/ macro_1up,                         /*yaw*/   0, /*pos*/ -3713, -4130,  3530),\n    MACRO_OBJECT               (/*preset*/ macro_bobomb,                      /*yaw*/   0, /*pos*/ -3507, -2480, -1046),\n    MACRO_OBJECT               (/*preset*/ macro_bobomb,                      /*yaw*/   0, /*pos*/ -3538, -2409,   -61),\n    MACRO_OBJECT               (/*preset*/ macro_bobomb,                      /*yaw*/   0, /*pos*/ -3538, -2330,  1046),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,        /*yaw*/  82, /*pos*/  -521, -2047,  3568),\n    MACRO_OBJECT               (/*preset*/ macro_bobomb,                      /*yaw*/   0, /*pos*/  2369, -1451, -3876),\n    MACRO_OBJECT               (/*preset*/ macro_bobomb,                      /*yaw*/   0, /*pos*/   707, -1223, -3846),\n    MACRO_OBJECT               (/*preset*/ macro_1up,                         /*yaw*/   0, /*pos*/ -1010,  -705, -3385),\n    MACRO_OBJECT               (/*preset*/ macro_goomba_triplet_spawner,      /*yaw*/   0, /*pos*/  -584,   195,  1476),\n    MACRO_OBJECT               (/*preset*/ macro_1up,                         /*yaw*/   0, /*pos*/  1530,   620,  1670),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,        /*yaw*/   0, /*pos*/  3476,   708,  -896),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,        /*yaw*/ 125, /*pos*/  2461,  1461,  1960),\n    MACRO_OBJECT               (/*preset*/ macro_box_1up,                     /*yaw*/   0, /*pos*/  3261, -2553, -4092),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal_flying, /*yaw*/ 330, /*pos*/ -1907,  -861, -3138),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_breakable_box,        /*yaw*/  30, /*pos*/  1950,   880,  1321),\n    MACRO_OBJECT               (/*preset*/ macro_floor_switch_hidden_objects, /*yaw*/  50, /*pos*/ -1200,  1543,   460),\n    MACRO_OBJECT               (/*preset*/ macro_goomba_triplet_spawner,      /*yaw*/   0, /*pos*/  -600,  1177, -1340),\n    MACRO_OBJECT               (/*preset*/ macro_fish_spawner_few_blue,       /*yaw*/   0, /*pos*/  -780, -4580,  4440),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_breakable_box,        /*yaw*/  55, /*pos*/  -900,  1540,   580),\n    MACRO_OBJECT               (/*preset*/ macro_chuckya,                     /*yaw*/ 270, /*pos*/ -2676, -2145,  2923),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  1840, -2880, -3600),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_vertical_flying,   /*yaw*/   0, /*pos*/  -880,  1750,   580),\n    MACRO_OBJECT               (/*preset*/ macro_fire_fly_guy,                /*yaw*/   0, /*pos*/  2300, -1384,  3753),\n    MACRO_OBJECT               (/*preset*/ macro_butterfly_triplet,           /*yaw*/   0, /*pos*/  -606,  1186, -1290),\n    MACRO_OBJECT               (/*preset*/ macro_jumping_box,                 /*yaw*/   0, /*pos*/  4980, -4607,  2680),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/movtext.inc.c",
    "content": "// 0x07017104 - 0x07017124\nstatic Movtex ttm_movtex_puddle_data[] = {\n    MOV_TEX_INIT_LOAD(    1),\n    MOV_TEX_ROT_SPEED(  100),\n    MOV_TEX_ROT_SCALE(    3),\n    MOV_TEX_4_BOX_TRIS(-2047,  2765),\n    MOV_TEX_4_BOX_TRIS(-2047,  5069),\n    MOV_TEX_4_BOX_TRIS( 1946,  5069),\n    MOV_TEX_4_BOX_TRIS( 1946,  2765),\n    MOV_TEX_ROT(     ROTATE_CLOCKWISE),\n    MOV_TEX_ALPHA(    0x96),\n    MOV_TEX_DEFINE(  TEXTURE_WATER),\n    MOV_TEX_END(),\n};\n\n// 0x07017124 - 0x07017134\nconst struct MovtexQuadCollection ttm_movtex_puddle[] = {\n    { 0, ttm_movtex_puddle_data},\n    {-1, NULL},\n};\n\n// 0x07017134 - 0x07017174\nMovtex ttm_movtex_tris_begin_waterfall[] = {\n    MOV_TEX_SPD(   35),\n    MOV_TEX_TRIS(2191, -1638,  1188, 0, 0),\n    MOV_TEX_TRIS(2165,  1638,  1145, 3, 0),\n    MOV_TEX_TRIS(1625,  2286,   757, 4, 0),\n    MOV_TEX_TRIS(1756, -1638,  1457, 0, 1),\n    MOV_TEX_TRIS(1729,  1638,  1413, 3, 1),\n    MOV_TEX_TRIS(1221,  2286,  1077, 4, 1),\n    MOV_TEX_END(),\n};\n\n// 0x07017174 - 0x070171A0\nMovtex ttm_movtex_tris_begin_puddle_waterfall[] = {\n    MOV_TEX_SPD(   30),\n    MOV_TEX_TRIS(3583, -1638,  2751, 0, 0),\n    MOV_TEX_TRIS(3583, -1638,   898, 5, 0),\n    MOV_TEX_TRIS(1586, -1638,  2751, 0, 2),\n    MOV_TEX_TRIS(1586, -1638,   898, 5, 2),\n    MOV_TEX_END(),\n};\n\n// 0x070171A0 - 0x070171E0\nMovtex ttm_movtex_tris_end_waterfall[] = {\n    MOV_TEX_SPD(   25),\n    MOV_TEX_TRIS(3583, -3840,  2913, 0, 0),\n    MOV_TEX_TRIS(3583, -1889,  2913, 2, 0),\n    MOV_TEX_TRIS(3583, -1638,  2751, 3, 0),\n    MOV_TEX_TRIS(2559, -3840,  2913, 0, 1),\n    MOV_TEX_TRIS(2559, -1889,  2913, 2, 1),\n    MOV_TEX_TRIS(2457, -1638,  2751, 3, 1),\n    MOV_TEX_END(),\n};\n\n// 0x070171E0 - 0x0701720C\nMovtex ttm_movtex_tris_end_puddle_waterfall[] = {\n    MOV_TEX_SPD(   20),\n    MOV_TEX_TRIS(3640, -3840,  3422, 0, 0),\n    MOV_TEX_TRIS(3792, -3840,  2849, 1, 0),\n    MOV_TEX_TRIS(2358, -3840,  3422, 0, 1),\n    MOV_TEX_TRIS(2358, -3840,  2849, 1, 1),\n    MOV_TEX_END(),\n};\n\n// 0x0701720C - 0x07017260\nMovtex ttm_movtex_tris_puddle_waterfall[] = {\n    MOV_TEX_SPD(   15),\n    MOV_TEX_TRIS(1946, -4403,  4520, 0, 0),\n    MOV_TEX_TRIS(1992, -4096,  4520, 1, 0),\n    MOV_TEX_TRIS(3640, -4096,  3496, 3, 0),\n    MOV_TEX_TRIS(3640, -3840,  3422, 4, 0),\n    MOV_TEX_TRIS(1946, -4403,  4008, 0, 1),\n    MOV_TEX_TRIS(1992, -4096,  4008, 1, 1),\n    MOV_TEX_TRIS(2358, -4096,  3496, 3, 1),\n    MOV_TEX_TRIS(2358, -3840,  3422, 4, 1),\n    MOV_TEX_END(),\n};\n\n// 0x07017260 - 0x07017288\nconst Gfx ttm_dl_waterfall[] = {\n    gsSP2Triangles( 0,  1,  3, 0x0,  3,  1,  4, 0x0),\n    gsSP2Triangles( 1,  2,  4, 0x0,  4,  2,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07017288 - 0x070172A0\nconst Gfx ttm_dl_bottom_waterfall[] = {\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070172A0 - 0x070172D8\nconst Gfx ttm_dl_puddle_waterfall[] = {\n    gsSP2Triangles( 0,  1,  4, 0x0,  4,  1,  5, 0x0),\n    gsSP2Triangles( 1,  2,  5, 0x0,  5,  2,  6, 0x0),\n    gsSP2Triangles( 2,  3,  6, 0x0,  6,  3,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/painting.inc.c",
    "content": "#include \"game/paintings.h\"\n\n// 0x070122F0 - 0x07012308\nstatic const Lights1 ttm_seg7_lights_070122F0 = gdSPDefLights1(\n    0x50, 0x50, 0x50,\n    0xff, 0xff, 0xff, 0x32, 0x32, 0x32\n);\n\n// 0x07012308 - 0x07012388\nstatic const Vtx ttm_seg7_vertex_07012308[] = {\n    {{{     0,      0,      0}, 0, {   -32,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   614,      0,      0}, 0, {  2012,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   614,    307,      0}, 0, {  2012,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,    307,      0}, 0, {   -32,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,    307,      0}, 0, {   -32,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   614,    307,      0}, 0, {  2012,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   614,    614,      0}, 0, {  2012,    -28}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,    614,      0}, 0, {   -32,    -28}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07012388 - 0x070123A0\nconst Gfx ttm_seg7_dl_07012388[] = {\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070123A0 - 0x070123B8\nconst Gfx ttm_seg7_dl_070123A0[] = {\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070123B8 - 0x07012410\nconst Gfx ttm_seg7_dl_070123B8[] = {\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_LIGHTING | G_SHADING_SMOOTH),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPLight(&ttm_seg7_lights_070122F0.l, 1),\n    gsSPLight(&ttm_seg7_lights_070122F0.a, 2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsSPEndDisplayList(),\n};\n\n// 0x07012410 - 0x07012430\nconst Gfx ttm_seg7_dl_07012410[] = {\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x07012430 - 0x07012450\nstatic const Gfx ttm_seg7_painting_dl_07012430[] = {\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPEndDisplayList(),\n};\n\n// 0x07012450 - 0x0701296A\nstatic const PaintingData ttm_seg7_painting_texture_map_bottom_07012450[] = {\n    85, // num mappings\n    // Format:\n    // mesh vtx ID, texture X, texture Y\n      49, 2016,  889,\n      53, 2016,  685,\n      55, 1843,  787,\n      50, 2016,  992,\n      51, 1843,  992,\n      52, 1843,  583,\n      75, 2016,  513,\n      54, 1671,  889,\n      59, 1671,  685,\n      62, 1502,  787,\n      56, 1502,  992,\n      57, 1671,  992,\n      58, 1502,  583,\n      60, 1671,  513,\n      61, 1330,  889,\n      65, 1330,  685,\n      63, 1162,  992,\n      64, 1330,  992,\n      66, 1162,  583,\n      67, 1330,  513,\n      69, 1162,  787,\n      68,  989,  889,\n      70,  821,  992,\n      71,  989,  992,\n      73,  989,  685,\n      72,  821,  583,\n      74,  989,  513,\n      77, 2016,  308,\n      78, 1843,  410,\n      76, 1843,  204,\n      81, 1502,  410,\n      80, 1671,  308,\n      47, 1671,  102,\n      79, 1502,  204,\n      46, 1330,  102,\n      82, 1162,  204,\n      83, 1330,  308,\n      84, 1162,  410,\n      86,  989,  308,\n      85,  821,  204,\n      48,  989,  102,\n      25, 1502,    0,\n      31, 1162,    0,\n      19, 1843,    0,\n      37,  821,    0,\n     120,  821,  787,\n     119,  649,  889,\n     122,  481,  992,\n     121,  649,  992,\n     124,  649,  685,\n     125,  481,  583,\n     123,  649,  513,\n     127,  481,  787,\n     126,  308,  889,\n     129,  140,  992,\n     128,  308,  992,\n     132,  308,  513,\n     131,  308,  685,\n     130,  140,  583,\n     134,  140,  787,\n     133,  -32,  889,\n     135,  -32,  513,\n     136,  821,  410,\n     116,  649,  102,\n     137,  649,  308,\n     114,  481,  204,\n     138,  481,  410,\n     139,  308,  308,\n     118,  140,  204,\n     115,  308,  102,\n     140,  140,  410,\n     117,  -32,  102,\n      99,  481,    0,\n     105,  140,    0,\n     143, 2016,  102,\n     145, 1330,    0,\n     144, 1671,    0,\n     142, 2016,    0,\n     146,  989,    0,\n     155,  -32,  685,\n     156,  -32,  992,\n     154,  -32,  308,\n     151,  308,    0,\n     150,  649,    0,\n     153,  -32,    0,\n\n    132, // num groups\n    // Grouped by 5 + one remainder group,\n    // = 15 vertices per group + a few extra triangles\n    13,  8,  5,\n     0,  1,  2,\n     3,  0,  4,\n     4,  0,  2,\n     5,  2,  1,\n     1,  6,  5,\n     7,  2,  8,\n     5,  8,  2,\n     2,  7,  4,\n     7,  8,  9,\n    10,  7,  9,\n    11,  7, 10,\n     7, 11,  4,\n    12,  9,  8,\n     8, 13, 12,\n    21, 24, 45,\n    14,  9, 15,\n    12, 15,  9,\n     9, 14, 10,\n    16, 14, 20,\n    17, 14, 16,\n    14, 15, 20,\n    14, 17, 10,\n    15, 19, 18,\n    18, 20, 15,\n    19, 15, 12,\n    20, 21, 16,\n    18, 24, 20,\n    21, 20, 24,\n    22, 21, 45,\n    23, 21, 22,\n    21, 23, 16,\n    24, 26, 25,\n    25, 45, 24,\n    26, 24, 18,\n     6, 27, 28,\n     5,  6, 28,\n    29, 28, 27,\n    27, 74, 29,\n    29, 31, 28,\n    13, 28, 31,\n    28, 13,  5,\n    36, 34, 35,\n    12, 13, 30,\n    13, 31, 30,\n    31, 32, 33,\n    32, 31, 29,\n    33, 30, 31,\n    33, 36, 30,\n    30, 19, 12,\n    19, 30, 36,\n    18, 19, 37,\n    19, 36, 37,\n    34, 36, 33,\n    35, 37, 36,\n    37, 26, 18,\n    35, 38, 37,\n    26, 37, 38,\n    25, 26, 62,\n    26, 38, 62,\n    38, 40, 39,\n    39, 62, 38,\n    40, 38, 35,\n    41, 34, 33,\n    33, 32, 41,\n    42, 34, 75,\n    34, 41, 75,\n    35, 34, 42,\n    32, 43, 76,\n    41, 32, 76,\n    43, 32, 29,\n    29, 74, 43,\n    43, 74, 77,\n    46, 49, 52,\n    42, 40, 35,\n    39, 40, 44,\n    40, 42, 78,\n    44, 40, 78,\n    25, 49, 45,\n    45, 46, 22,\n    46, 45, 49,\n    47, 46, 52,\n    48, 46, 47,\n    46, 48, 22,\n    58, 59, 57,\n    49, 51, 50,\n    50, 52, 49,\n    51, 49, 25,\n    50, 57, 52,\n    52, 53, 47,\n    53, 52, 57,\n    53, 55, 47,\n    54, 53, 59,\n    55, 53, 54,\n    53, 57, 59,\n    56, 57, 50,\n    57, 56, 58,\n    58, 79, 59,\n    59, 60, 54,\n    60, 59, 79,\n    60, 80, 54,\n    61, 79, 58,\n    62, 51, 25,\n    39, 64, 62,\n    51, 62, 64,\n    50, 51, 66,\n    51, 64, 66,\n    63, 64, 39,\n    64, 63, 65,\n    65, 66, 64,\n    66, 56, 50,\n    56, 66, 67,\n    65, 67, 66,\n    58, 56, 70,\n    56, 67, 70,\n    67, 69, 68,\n    68, 70, 67,\n    69, 67, 65,\n    70, 61, 58,\n    68, 81, 70,\n    61, 70, 81,\n    71, 73, 84,\n    71, 81, 68,\n    72, 69, 65,\n    65, 63, 72,\n    68, 69, 73,\n    69, 72, 82,\n    73, 69, 82,\n    44, 63, 39,\n    63, 44, 83,\n    72, 63, 83,\n    73, 71, 68,\n};\n\n\n// 0x0701296C - 0x07012E84\nstatic const PaintingData ttm_seg7_painting_top_0701296C[] = {\n    85, // num mappings\n    // Format:\n    // mesh vtx ID, texture X, texture Y\n       0, 2016,   72,\n       1, 2016,    0,\n       2, 1843,    0,\n       3, 1843,  174,\n       4, 2016,  276,\n       5, 1671,   72,\n       6, 1671,    0,\n       8,  989,   72,\n       7,  989,    0,\n      10,  821,    0,\n       9, 1162,    0,\n      11,  821,  174,\n      12,  989,  276,\n      13, 1162,  174,\n      14, 1330,   72,\n      15, 1502,    0,\n      16, 1671,  276,\n      17, 1502,  174,\n      18, 1330,  276,\n      19, 1843,  992,\n      20, 2016,  889,\n      22, 2016,  685,\n      21, 1843,  583,\n      23, 1843,  787,\n      24, 1671,  889,\n      25, 1502,  992,\n      26, 1502,  583,\n      27, 1671,  685,\n      28, 1671,  481,\n      30, 1502,  787,\n      29, 1330,  889,\n      31, 1162,  992,\n      32, 1330,  481,\n      33, 1162,  583,\n      34, 1330,  685,\n      35, 1162,  787,\n      36,  989,  889,\n      37,  821,  992,\n      39,  821,  583,\n      38,  989,  685,\n      40,  989,  481,\n      41, 2016,  481,\n      42, 1843,  378,\n      43, 1502,  378,\n      44, 1162,  378,\n      45,  821,  378,\n      87,  649,   72,\n      88,  -32,    0,\n      90,  140,    0,\n      89,  -32,   72,\n      92,  308,   72,\n      91,  140,  174,\n      94,  481,  174,\n      93,  649,  276,\n      95,  481,    0,\n      96,  308,  276,\n      97,  821,  787,\n      98,  649,  889,\n      99,  481,  992,\n     102,  649,  481,\n     101,  649,  685,\n     100,  481,  583,\n     103,  481,  787,\n     104,  308,  889,\n     105,  140,  992,\n     108,  308,  481,\n     107,  308,  685,\n     106,  140,  583,\n     110,  -32,  889,\n     109,  140,  787,\n     111,  -32,  481,\n     112,  481,  378,\n     113,  140,  378,\n     141, 1330,    0,\n     142, 2016,  992,\n     144, 1671,  992,\n     145, 1330,  992,\n     146,  989,  992,\n     147,  649,    0,\n     148,  -32,  276,\n     149,  308,    0,\n     150,  649,  992,\n     151,  308,  992,\n     152,  -32,  685,\n     153,  -32,  992,\n\n    132, // num groups\n    // Grouped by 5 + one remainder group,\n    // = 15 vertices per group + a few extra triangles\n    10,  7, 13,\n     0,  1,  2,\n     3,  0,  2,\n     4,  0,  3,\n     5,  2,  6,\n     2,  5,  3,\n     7,  8,  9,\n     8,  7, 10,\n    11,  7,  9,\n    12,  7, 11,\n     7, 12, 13,\n    13, 14, 10,\n    14, 73, 10,\n     5,  6, 15,\n     5, 16,  3,\n    16,  5, 17,\n    17,  5, 15,\n    14, 15, 73,\n    15, 14, 17,\n    18, 14, 13,\n    14, 18, 17,\n    19, 74, 20,\n    19, 20, 23,\n    28, 27, 22,\n    21, 41, 22,\n    22, 23, 21,\n    20, 21, 23,\n    23, 24, 19,\n    22, 27, 23,\n    24, 23, 27,\n    19, 24, 75,\n    25, 75, 24,\n    25, 24, 29,\n    24, 27, 29,\n    26, 29, 27,\n    27, 28, 26,\n    31, 36, 77,\n    26, 34, 29,\n    29, 30, 25,\n    30, 29, 34,\n    25, 30, 76,\n    31, 76, 30,\n    31, 30, 35,\n    30, 34, 35,\n    32, 34, 26,\n    33, 35, 34,\n    34, 32, 33,\n    35, 36, 31,\n    33, 39, 35,\n    36, 35, 39,\n    37, 36, 56,\n    36, 39, 56,\n    37, 77, 36,\n    28, 16, 43,\n    38, 56, 39,\n    39, 40, 38,\n    40, 39, 33,\n    22, 41, 42,\n    41,  4, 42,\n     3, 42,  4,\n    42, 28, 22,\n    28, 42, 16,\n     3, 16, 42,\n    26, 28, 43,\n    17, 43, 16,\n    43, 32, 26,\n    32, 43, 18,\n    17, 18, 43,\n    33, 32, 44,\n    32, 18, 44,\n    13, 44, 18,\n    13, 12, 44,\n    44, 40, 33,\n    40, 44, 12,\n    38, 40, 45,\n    40, 12, 45,\n    11, 45, 12,\n     9, 46, 11,\n    46,  9, 78,\n    47, 49, 48,\n    48, 49, 51,\n    49, 79, 51,\n    50, 80, 48,\n    51, 50, 48,\n    57, 56, 60,\n    46, 53, 11,\n    52, 46, 54,\n    53, 46, 52,\n    46, 78, 54,\n    54, 50, 52,\n    50, 54, 80,\n    50, 55, 52,\n    55, 50, 51,\n    38, 60, 56,\n    56, 57, 37,\n    58, 57, 62,\n    57, 60, 62,\n    58, 81, 57,\n    37, 57, 81,\n    59, 60, 38,\n    60, 59, 61,\n    61, 62, 60,\n    62, 63, 58,\n    63, 62, 66,\n    61, 66, 62,\n    63, 66, 69,\n    58, 63, 82,\n    64, 82, 63,\n    64, 63, 69,\n    45, 59, 38,\n    65, 66, 61,\n    66, 65, 67,\n    67, 69, 66,\n    68, 69, 83,\n    69, 68, 64,\n    67, 83, 69,\n    64, 68, 84,\n    70, 83, 67,\n    11, 53, 45,\n    59, 45, 53,\n    59, 53, 71,\n    61, 59, 71,\n    52, 71, 53,\n    52, 55, 71,\n    65, 71, 55,\n    71, 65, 61,\n    65, 55, 72,\n    67, 65, 72,\n    51, 72, 55,\n    70, 72, 79,\n    51, 79, 72,\n    72, 70, 67,\n};\n\n\n// 0x07012E88\nstatic const PaintingData *const ttm_seg7_painting_texture_maps_07012E88[] = {\n    ttm_seg7_painting_texture_map_bottom_07012450,\n    ttm_seg7_painting_top_0701296C,\n};\n\nUNUSED static const u64 ttm_unused_0 = 0x0;\n\n\n// 0x07012E98 - 0x07012EF8\nstatic const Gfx ttm_seg7_painting_dl_07012E98[] = {\n    gsSPDisplayList(ttm_seg7_dl_070123B8),\n    gsSPVertex(ttm_seg7_vertex_07012308, 8, 0),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ttm_seg7_texture_07004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(ttm_seg7_dl_07012388),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ttm_seg7_texture_07003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPDisplayList(ttm_seg7_dl_070123A0),\n    gsSPDisplayList(ttm_seg7_dl_07012410),\n    gsSPEndDisplayList(),\n};\n\n// 0x07012EF8 - 0x07012F78\nALIGNED8 static const Texture *const ttm_seg7_painting_textures_07012EF8[] = {\n    ttm_seg7_texture_07004000, ttm_seg7_texture_07003000,\n};\n\n// 0x07012F00 (PaintingData)\nstruct Painting ttm_slide_painting = {\n    /* id */ 0x0000,\n    /* Image Count */ 0x02,\n    /* Texture Type */ PAINTING_IMAGE,\n    /* Floor Status */ 0x00, 0x00, 0x00 /* which of the painting's nearby special floors Mario's on */,\n    /* Ripple Status */ 0x00,\n    /* Rotation */    0.0f,   90.0f,\n    /* Position */ 3072.0f, 921.6f, -819.2f,\n    /*                         curr   passive     entry */\n    /* Ripple Magnitude */     0.0f,    20.0f,    80.0f,\n    /* Ripple Decay */         1.0f,  0.9608f,  0.9524f,\n    /* Ripple Rate */          0.0f,    0.24f,    0.14f,\n    /* Ripple Dispersion */    0.0f,    40.0f,    30.0f,\n    /* Curr Ripple Timer */    0.0f,\n    /* Curr Ripple x, y */     0.0f,    0.0f,\n    /* Normal DList */ ttm_seg7_painting_dl_07012E98,\n    /* Texture Maps */ ttm_seg7_painting_texture_maps_07012E88,\n    /* Textures */     ttm_seg7_painting_textures_07012EF8,\n    /* Texture w, h */ 64, 32,\n    /* Ripple DList */ ttm_seg7_painting_dl_07012430,\n    /* Ripple Trigger */ RIPPLE_TRIGGER_PROXIMITY,\n    /* Alpha */ 0xFF,\n    /* Mario Below */  0x00, 0x00, 0x00, /* Whether or not Mario is below the painting */\n    /* Size */  460.8f,\n};\n"
  },
  {
    "path": "levels/ttm/areas/1/trajectory.inc.c",
    "content": "// 0x070170A0 - 0x07017102\nconst Trajectory ttm_seg7_trajectory_070170A0[] = {\n    TRAJECTORY_POS(0, /*pos*/ -1541,   514, -2125),\n    TRAJECTORY_POS(1, /*pos*/  -843,   410, -2302),\n    TRAJECTORY_POS(2, /*pos*/  -792,   357, -3132),\n    TRAJECTORY_POS(3, /*pos*/  -211,   189, -3153),\n    TRAJECTORY_POS(4, /*pos*/   474,   -31, -2635),\n    TRAJECTORY_POS(5, /*pos*/   944,  -136, -3098),\n    TRAJECTORY_POS(6, /*pos*/  1391,  -157, -3484),\n    TRAJECTORY_POS(7, /*pos*/  1999,  -378, -3257),\n    TRAJECTORY_POS(8, /*pos*/  2475,  -600, -2692),\n    TRAJECTORY_POS(9, /*pos*/  3445,  -952, -2115),\n    TRAJECTORY_POS(10, /*pos*/  3926,  -984,  -681),\n    TRAJECTORY_POS(11, /*pos*/  4281, -3326,   460),\n    TRAJECTORY_END(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/2/1/model.inc.c",
    "content": "// 0x070172D8 - 0x070172F0\nstatic const Lights1 ttm_seg7_lights_070172D8 = gdSPDefLights1(\n    0x08, 0x08, 0x08,\n    0x22, 0x22, 0x22, 0x28, 0x28, 0x28\n);\n\n// 0x070172F0 - 0x07017308\nstatic const Lights1 ttm_seg7_lights_070172F0 = gdSPDefLights1(\n    0x0c, 0x0c, 0x0c,\n    0x33, 0x33, 0x33, 0x28, 0x28, 0x28\n);\n\n// 0x07017308 - 0x07017320\nstatic const Lights1 ttm_seg7_lights_07017308 = gdSPDefLights1(\n    0x11, 0x11, 0x11,\n    0x44, 0x44, 0x44, 0x28, 0x28, 0x28\n);\n\n// 0x07017320 - 0x07017338\nstatic const Lights1 ttm_seg7_lights_07017320 = gdSPDefLights1(\n    0x15, 0x15, 0x15,\n    0x55, 0x55, 0x55, 0x28, 0x28, 0x28\n);\n\n// 0x07017338 - 0x07017350\nstatic const Lights1 ttm_seg7_lights_07017338 = gdSPDefLights1(\n    0x19, 0x19, 0x19,\n    0x66, 0x66, 0x66, 0x28, 0x28, 0x28\n);\n\n// 0x07017350 - 0x07017368\nstatic const Lights1 ttm_seg7_lights_07017350 = gdSPDefLights1(\n    0x1d, 0x1d, 0x1d,\n    0x77, 0x77, 0x77, 0x28, 0x28, 0x28\n);\n\n// 0x07017368 - 0x07017380\nstatic const Lights1 ttm_seg7_lights_07017368 = gdSPDefLights1(\n    0x2a, 0x2a, 0x2a,\n    0xaa, 0xaa, 0xaa, 0x28, 0x28, 0x28\n);\n\n// 0x07017380 - 0x07017398\nstatic const Lights1 ttm_seg7_lights_07017380 = gdSPDefLights1(\n    0x2e, 0x2e, 0x2e,\n    0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28\n);\n\n// 0x07017398 - 0x070173B0\nstatic const Lights1 ttm_seg7_lights_07017398 = gdSPDefLights1(\n    0x33, 0x33, 0x33,\n    0xcc, 0xcc, 0xcc, 0x28, 0x28, 0x28\n);\n\n// 0x070173B0 - 0x070173C8\nstatic const Lights1 ttm_seg7_lights_070173B0 = gdSPDefLights1(\n    0x37, 0x37, 0x37,\n    0xdd, 0xdd, 0xdd, 0x28, 0x28, 0x28\n);\n\n// 0x070173C8 - 0x070173E0\nstatic const Lights1 ttm_seg7_lights_070173C8 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x070173E0 - 0x070173F8\nstatic const Lights1 ttm_seg7_lights_070173E0 = gdSPDefLights1(\n    0x22, 0x22, 0x22,\n    0x88, 0x88, 0x88, 0x28, 0x28, 0x28\n);\n\n// 0x070173F8 - 0x07017410\nstatic const Lights1 ttm_seg7_lights_070173F8 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x07017410 - 0x07017450\nstatic const Vtx ttm_seg7_vertex_07017410[] = {\n    {{{ -3277,    385,  -3277}, 0, {   894,  -7186}, {0x4a, 0xaa, 0x37, 0xff}}},\n    {{{ -4095,      0,  -4095}, 0, {-11272,  -7186}, {0x35, 0x8d, 0x00, 0xff}}},\n    {{{ -3805,      0,  -4385}, 0, {-11272,    990}, {0x0e, 0x89, 0x29, 0xff}}},\n    {{{ -2987,    385,  -3567}, 0, {   894,    990}, {0x2d, 0xac, 0x53, 0xff}}},\n};\n\n// 0x07017450 - 0x070174D0\nstatic const Vtx ttm_seg7_vertex_07017450[] = {\n    {{{ -3349,    334,  -3205}, 0, { -5404,   -904}, {0x64, 0xc0, 0x2a, 0xff}}},\n    {{{ -4095,      0,  -4095}, 0, {  1120,  -2072}, {0x35, 0x8d, 0x00, 0xff}}},\n    {{{ -3277,    385,  -3277}, 0, { -5492,  -2072}, {0x4a, 0xaa, 0x37, 0xff}}},\n    {{{ -4167,    -51,  -4023}, 0, {  1208,   -904}, {0x4c, 0xa0, 0xe1, 0xff}}},\n    {{{ -2987,    385,  -3567}, 0, {  1312,  -2072}, {0x2d, 0xac, 0x53, 0xff}}},\n    {{{ -3733,    -51,  -4457}, 0, { -5388,   -904}, {0xea, 0x9a, 0x46, 0xff}}},\n    {{{ -2915,    334,  -3639}, 0, {  1224,   -904}, {0x15, 0xb9, 0x66, 0xff}}},\n    {{{ -3805,      0,  -4385}, 0, { -5300,  -2072}, {0x0e, 0x89, 0x29, 0xff}}},\n};\n\n// 0x070174D0 - 0x07017550\nstatic const Vtx ttm_seg7_vertex_070174D0[] = {\n    {{{ -3386,    283,  -3168}, 0, { -5316,   -138}, {0x6f, 0xc5, 0x08, 0xff}}},\n    {{{ -4167,    -51,  -4023}, 0, {  1208,   -904}, {0x4c, 0xa0, 0xe1, 0xff}}},\n    {{{ -3349,    334,  -3205}, 0, { -5404,   -904}, {0x64, 0xc0, 0x2a, 0xff}}},\n    {{{ -4203,   -102,  -3986}, 0, {  1296,   -138}, {0x5a, 0xbd, 0xc6, 0xff}}},\n    {{{ -2915,    334,  -3639}, 0, {  1224,   -904}, {0x15, 0xb9, 0x66, 0xff}}},\n    {{{ -3733,    -51,  -4457}, 0, { -5388,   -904}, {0xea, 0x9a, 0x46, 0xff}}},\n    {{{ -3696,   -102,  -4493}, 0, { -5476,   -138}, {0xce, 0xb3, 0x56, 0xff}}},\n    {{{ -2879,    283,  -3675}, 0, {  1136,   -138}, {0x01, 0xcd, 0x73, 0xff}}},\n};\n\n// 0x07017550 - 0x070175D0\nstatic const Vtx ttm_seg7_vertex_07017550[] = {\n    {{{ -3422,    180,  -3132}, 0, { -5140,    990}, {0x78, 0xe8, 0xe3, 0xff}}},\n    {{{ -4203,   -102,  -3986}, 0, {  1296,   -138}, {0x5a, 0xbd, 0xc6, 0xff}}},\n    {{{ -3386,    283,  -3168}, 0, { -5316,   -138}, {0x6f, 0xc5, 0x08, 0xff}}},\n    {{{ -4240,   -204,  -3950}, 0, {  1470,    990}, {0x5d, 0xe3, 0xb0, 0xff}}},\n    {{{ -2879,    283,  -3675}, 0, {  1136,   -138}, {0x01, 0xcd, 0x73, 0xff}}},\n    {{{ -3696,   -102,  -4493}, 0, { -5476,   -138}, {0xce, 0xb3, 0x56, 0xff}}},\n    {{{ -3660,   -204,  -4529}, 0, { -5650,    990}, {0xb0, 0xe3, 0x5e, 0xff}}},\n    {{{ -2842,    180,  -3712}, 0, {   960,    990}, {0x1e, 0xf1, 0x7a, 0xff}}},\n};\n\n// 0x070175D0 - 0x07017650\nstatic const Vtx ttm_seg7_vertex_070175D0[] = {\n    {{{ -2842,   -279,  -3712}, 0, {  1290,   1308}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{ -2842,    180,  -3712}, 0, {  2026,  -3098}, {0x1e, 0xf1, 0x7a, 0xff}}},\n    {{{ -3660,   -204,  -4529}, 0, { -4118,  -3098}, {0xb0, 0xe3, 0x5e, 0xff}}},\n    {{{ -3660,   -665,  -4529}, 0, { -4852,   1308}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -4240,   -665,  -3950}, 0, {  6848,   4374}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -4240,   -204,  -3950}, 0, {  6114,      0}, {0x5d, 0xe3, 0xb0, 0xff}}},\n    {{{ -3422,    180,  -3132}, 0, {     0,      0}, {0x78, 0xe8, 0xe3, 0xff}}},\n    {{{ -3422,   -279,  -3132}, 0, {   702,   4374}, {0x71, 0x00, 0x38, 0xff}}},\n};\n\n// 0x07017650 - 0x07017690\nstatic const Vtx ttm_seg7_vertex_07017650[] = {\n    {{{ -4240,   -614,  -3950}, 0, {   990,      0}, {0xe4, 0x78, 0xe4, 0xff}}},\n    {{{ -3422,   -228,  -3132}, 0, {     0,      0}, {0x01, 0x72, 0xc9, 0xff}}},\n    {{{ -2842,   -228,  -3712}, 0, {     0,    990}, {0xc9, 0x72, 0x01, 0xff}}},\n    {{{ -3660,   -614,  -4529}, 0, {   990,    990}, {0xbe, 0x69, 0x15, 0xff}}},\n};\n\n// 0x07017690 - 0x07017780\nstatic const Vtx ttm_seg7_vertex_07017690[] = {\n    {{{ -6316,   -560,  -6317}, 0, {   990,      0}, {0x34, 0x00, 0x73, 0xff}}},\n    {{{ -6600,   -663,  -6165}, 0, {   352,    -40}, {0x47, 0x10, 0x68, 0xff}}},\n    {{{ -6316,   -663,  -6317}, 0, {  1018,     26}, {0x2f, 0x14, 0x74, 0xff}}},\n    {{{ -5310,   -560,  -6165}, 0, {     0,    990}, {0xb5, 0x00, 0x66, 0xff}}},\n    {{{ -5594,   -663,  -6317}, 0, {   580,    960}, {0xce, 0x10, 0x73, 0xff}}},\n    {{{ -5310,   -663,  -6165}, 0, {   -12,    932}, {0xb7, 0x1b, 0x63, 0xff}}},\n    {{{ -5594,   -560,  -6317}, 0, {   558,   1014}, {0xd4, 0x00, 0x77, 0xff}}},\n    {{{ -5812,   -663,  -6381}, 0, {  1010,    932}, {0xec, 0x17, 0x7b, 0xff}}},\n    {{{ -5812,   -560,  -6381}, 0, {   990,    990}, {0xf4, 0x00, 0x7e, 0xff}}},\n    {{{ -5812,   -560,  -6381}, 0, {     0,    990}, {0xf4, 0x00, 0x7e, 0xff}}},\n    {{{ -6098,   -560,  -6381}, 0, {   524,   1022}, {0x18, 0x00, 0x7c, 0xff}}},\n    {{{ -6098,   -663,  -6381}, 0, {   548,    966}, {0x11, 0x14, 0x7c, 0xff}}},\n    {{{ -5812,   -663,  -6381}, 0, {    -8,    932}, {0xec, 0x17, 0x7b, 0xff}}},\n    {{{ -6316,   -663,  -6317}, 0, {  1014,    932}, {0x2f, 0x14, 0x74, 0xff}}},\n    {{{ -6316,   -560,  -6317}, 0, {   990,    990}, {0x34, 0x00, 0x73, 0xff}}},\n};\n\n// 0x07017780 - 0x07017870\nstatic const Vtx ttm_seg7_vertex_07017780[] = {\n    {{{ -4416,   -560,  -5285}, 0, {   990,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -4633,   -560,  -5502}, 0, {   710,    -40}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{ -4633,   -663,  -5502}, 0, {   706,     12}, {0xa9, 0x0d, 0x5b, 0xff}}},\n    {{{ -6316,   -560,  -6317}, 0, {   990,      0}, {0x34, 0x00, 0x73, 0xff}}},\n    {{{ -6600,   -560,  -6165}, 0, {   322,    -98}, {0x4f, 0x00, 0x63, 0xff}}},\n    {{{ -6600,   -663,  -6165}, 0, {   352,    -40}, {0x47, 0x10, 0x68, 0xff}}},\n    {{{ -6969,   -663,  -5812}, 0, {  -658,     -8}, {0x55, 0x17, 0x5b, 0xff}}},\n    {{{ -6969,   -560,  -5812}, 0, {  -688,    -68}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{ -6969,   -560,  -5812}, 0, {   990,      0}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{ -7258,   -765,  -5522}, 0, {   724,      6}, {0x54, 0x10, 0x5d, 0xff}}},\n    {{{ -6969,   -663,  -5812}, 0, {   976,     18}, {0x55, 0x17, 0x5b, 0xff}}},\n    {{{ -7258,   -663,  -5522}, 0, {   738,    -44}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -8127,  -1380,  -4653}, 0, {   -72,    120}, {0x3d, 0x38, 0x5f, 0xff}}},\n    {{{ -5310,   -560,  -6165}, 0, {  -154,    -50}, {0xb5, 0x00, 0x66, 0xff}}},\n    {{{ -5310,   -663,  -6165}, 0, {  -158,      0}, {0xb7, 0x1b, 0x63, 0xff}}},\n};\n\n// 0x07017870 - 0x07017960\nstatic const Vtx ttm_seg7_vertex_07017870[] = {\n    {{{ -6316,   -663,  -6317}, 0, {  1018,     26}, {0x2f, 0x14, 0x74, 0xff}}},\n    {{{ -6600,   -663,  -6165}, 0, {   352,    -40}, {0x47, 0x10, 0x68, 0xff}}},\n    {{{ -6570,   -816,  -6124}, 0, {   412,     98}, {0x42, 0x3a, 0x5b, 0xff}}},\n    {{{ -5310,   -663,  -6165}, 0, {   -12,    932}, {0xb7, 0x1b, 0x63, 0xff}}},\n    {{{ -5613,   -816,  -6270}, 0, {   626,    824}, {0xd6, 0x3f, 0x65, 0xff}}},\n    {{{ -5340,   -816,  -6123}, 0, {    58,    800}, {0xc1, 0x42, 0x56, 0xff}}},\n    {{{ -5594,   -663,  -6317}, 0, {   580,    960}, {0xce, 0x10, 0x73, 0xff}}},\n    {{{ -5812,   -663,  -6381}, 0, {  1010,    932}, {0xec, 0x17, 0x7b, 0xff}}},\n    {{{ -5820,   -816,  -6330}, 0, {  1036,    800}, {0xef, 0x47, 0x67, 0xff}}},\n    {{{ -5812,   -663,  -6381}, 0, {    -8,    932}, {0xec, 0x17, 0x7b, 0xff}}},\n    {{{ -6090,   -816,  -6330}, 0, {   602,    832}, {0x0c, 0x46, 0x68, 0xff}}},\n    {{{ -5820,   -816,  -6330}, 0, {    78,    798}, {0xef, 0x47, 0x67, 0xff}}},\n    {{{ -6098,   -663,  -6381}, 0, {   548,    966}, {0x11, 0x14, 0x7c, 0xff}}},\n    {{{ -6316,   -663,  -6317}, 0, {  1014,    932}, {0x2f, 0x14, 0x74, 0xff}}},\n    {{{ -6297,   -816,  -6270}, 0, {  1044,    798}, {0x28, 0x42, 0x64, 0xff}}},\n};\n\n// 0x07017960 - 0x07017A60\nstatic const Vtx ttm_seg7_vertex_07017960[] = {\n    {{{ -4633,   -663,  -5502}, 0, {   706,     12}, {0xa9, 0x0d, 0x5b, 0xff}}},\n    {{{ -5310,   -663,  -6165}, 0, {  -158,      0}, {0xb7, 0x1b, 0x63, 0xff}}},\n    {{{ -4669,   -816,  -5466}, 0, {   702,    140}, {0xb3, 0x30, 0x57, 0xff}}},\n    {{{ -6600,   -663,  -6165}, 0, {   352,    -40}, {0x47, 0x10, 0x68, 0xff}}},\n    {{{ -6969,   -663,  -5812}, 0, {  -658,     -8}, {0x55, 0x17, 0x5b, 0xff}}},\n    {{{ -6570,   -816,  -6124}, 0, {   412,     98}, {0x42, 0x3a, 0x5b, 0xff}}},\n    {{{ -6932,   -816,  -5776}, 0, {  -582,    130}, {0x41, 0x4a, 0x4f, 0xff}}},\n    {{{ -6316,   -663,  -6317}, 0, {  1018,     26}, {0x2f, 0x14, 0x74, 0xff}}},\n    {{{ -6297,   -816,  -6270}, 0, {  1054,    162}, {0x28, 0x42, 0x64, 0xff}}},\n    {{{ -6969,   -663,  -5812}, 0, {   976,     18}, {0x55, 0x17, 0x5b, 0xff}}},\n    {{{ -7222,   -919,  -5486}, 0, {   706,    132}, {0x3b, 0x41, 0x5b, 0xff}}},\n    {{{ -6932,   -816,  -5776}, 0, {   958,    144}, {0x41, 0x4a, 0x4f, 0xff}}},\n    {{{ -7258,   -765,  -5522}, 0, {   724,      6}, {0x54, 0x10, 0x5d, 0xff}}},\n    {{{ -8127,  -1380,  -4653}, 0, {   -72,    120}, {0x3d, 0x38, 0x5f, 0xff}}},\n    {{{ -4416,   -560,  -5285}, 0, {   990,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -4416,   -765,  -5285}, 0, {   984,     70}, {0xad, 0x1a, 0x5b, 0xff}}},\n};\n\n// 0x07017A60 - 0x07017AE0\nstatic const Vtx ttm_seg7_vertex_07017A60[] = {\n    {{{ -5310,   -663,  -6165}, 0, {  -158,      0}, {0xb7, 0x1b, 0x63, 0xff}}},\n    {{{ -5340,   -816,  -6123}, 0, {  -156,    128}, {0xc1, 0x42, 0x56, 0xff}}},\n    {{{ -4669,   -816,  -5466}, 0, {   702,    140}, {0xb3, 0x30, 0x57, 0xff}}},\n    {{{ -4633,   -663,  -5502}, 0, {   706,     12}, {0xa9, 0x0d, 0x5b, 0xff}}},\n    {{{ -4416,   -765,  -5285}, 0, {   984,     70}, {0xad, 0x1a, 0x5b, 0xff}}},\n    {{{ -3660,   -614,  -4529}, 0, {    64,    156}, {0xbe, 0x69, 0x15, 0xff}}},\n    {{{ -4416,   -560,  -5285}, 0, {   990,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -4416,   -765,  -5285}, 0, {  1038,     62}, {0xad, 0x1a, 0x5b, 0xff}}},\n};\n\n// 0x07017AE0 - 0x07017BD0\nstatic const Vtx ttm_seg7_vertex_07017AE0[] = {\n    {{{ -6090,   -816,  -6330}, 0, {   602,    832}, {0x0c, 0x46, 0x68, 0xff}}},\n    {{{ -6297,   -816,  -6270}, 0, {  1044,    798}, {0x28, 0x42, 0x64, 0xff}}},\n    {{{ -6238,   -970,  -6128}, 0, {  1060,    568}, {0x18, 0x6c, 0x3e, 0xff}}},\n    {{{ -4416,   -765,  -5285}, 0, {   984,     70}, {0xad, 0x1a, 0x5b, 0xff}}},\n    {{{ -4669,   -816,  -5466}, 0, {   702,    140}, {0xb3, 0x30, 0x57, 0xff}}},\n    {{{ -4706,   -970,  -5430}, 0, {   698,    268}, {0xc4, 0x55, 0x48, 0xff}}},\n    {{{ -4452,   -919,  -5249}, 0, {   978,    198}, {0xbc, 0x5a, 0x38, 0xff}}},\n    {{{ -5340,   -816,  -6123}, 0, {  -156,    128}, {0xc1, 0x42, 0x56, 0xff}}},\n    {{{ -5430,   -970,  -5999}, 0, {  -136,    356}, {0xd5, 0x65, 0x3f, 0xff}}},\n    {{{ -5613,   -816,  -6270}, 0, {   626,    824}, {0xd6, 0x3f, 0x65, 0xff}}},\n    {{{ -5672,   -970,  -6128}, 0, {   708,    590}, {0xe7, 0x68, 0x43, 0xff}}},\n    {{{ -5430,   -970,  -5999}, 0, {   206,    570}, {0xd5, 0x65, 0x3f, 0xff}}},\n    {{{ -5340,   -816,  -6123}, 0, {    58,    800}, {0xc1, 0x42, 0x56, 0xff}}},\n    {{{ -5820,   -816,  -6330}, 0, {  1036,    800}, {0xef, 0x47, 0x67, 0xff}}},\n    {{{ -5845,   -970,  -6178}, 0, {  1050,    570}, {0xf9, 0x6e, 0x3e, 0xff}}},\n};\n\n// 0x07017BD0 - 0x07017CC0\nstatic const Vtx ttm_seg7_vertex_07017BD0[] = {\n    {{{ -6932,   -816,  -5776}, 0, {   958,    144}, {0x41, 0x4a, 0x4f, 0xff}}},\n    {{{ -7114,  -1072,  -5378}, 0, {   698,    356}, {0x1b, 0x65, 0x47, 0xff}}},\n    {{{ -6824,   -970,  -5667}, 0, {   950,    370}, {0x1e, 0x70, 0x33, 0xff}}},\n    {{{ -5820,   -816,  -6330}, 0, {    78,    798}, {0xef, 0x47, 0x67, 0xff}}},\n    {{{ -6090,   -816,  -6330}, 0, {   602,    832}, {0x0c, 0x46, 0x68, 0xff}}},\n    {{{ -5845,   -970,  -6178}, 0, {   264,    570}, {0xf9, 0x6e, 0x3e, 0xff}}},\n    {{{ -6238,   -970,  -6128}, 0, {  1060,    568}, {0x18, 0x6c, 0x3e, 0xff}}},\n    {{{ -6065,   -970,  -6178}, 0, {   692,    596}, {0x09, 0x6f, 0x3c, 0xff}}},\n    {{{ -6297,   -816,  -6270}, 0, {  1054,    162}, {0x28, 0x42, 0x64, 0xff}}},\n    {{{ -6570,   -816,  -6124}, 0, {   412,     98}, {0x42, 0x3a, 0x5b, 0xff}}},\n    {{{ -6481,   -970,  -5999}, 0, {   504,    336}, {0x2c, 0x66, 0x3c, 0xff}}},\n    {{{ -6238,   -970,  -6128}, 0, {  1074,    392}, {0x18, 0x6c, 0x3e, 0xff}}},\n    {{{ -6932,   -816,  -5776}, 0, {  -582,    130}, {0x41, 0x4a, 0x4f, 0xff}}},\n    {{{ -6824,   -970,  -5667}, 0, {  -440,    366}, {0x1e, 0x70, 0x33, 0xff}}},\n    {{{ -7222,   -919,  -5486}, 0, {   706,    132}, {0x3b, 0x41, 0x5b, 0xff}}},\n};\n\n// 0x07017CC0 - 0x07017D60\nstatic const Vtx ttm_seg7_vertex_07017CC0[] = {\n    {{{ -7222,   -919,  -5486}, 0, {   706,    132}, {0x3b, 0x41, 0x5b, 0xff}}},\n    {{{ -8127,  -1380,  -4653}, 0, {   -72,    120}, {0x3d, 0x38, 0x5f, 0xff}}},\n    {{{ -8019,  -1533,  -4545}, 0, {   -82,    346}, {0x0a, 0x6d, 0x3f, 0xff}}},\n    {{{ -7114,  -1072,  -5378}, 0, {   698,    356}, {0x1b, 0x65, 0x47, 0xff}}},\n    {{{ -4416,   -765,  -5285}, 0, {  1038,     62}, {0xad, 0x1a, 0x5b, 0xff}}},\n    {{{ -4452,   -919,  -5249}, 0, {  1068,    184}, {0xbc, 0x5a, 0x38, 0xff}}},\n    {{{ -3660,   -614,  -4529}, 0, {    64,    156}, {0xbe, 0x69, 0x15, 0xff}}},\n    {{{ -8562,  -1636,  -4219}, 0, {   660,   1002}, {0x02, 0x78, 0x29, 0xff}}},\n    {{{ -8019,  -1533,  -4545}, 0, {    14,    858}, {0x0a, 0x6d, 0x3f, 0xff}}},\n    {{{ -8127,  -1380,  -4653}, 0, {     0,    990}, {0x3d, 0x38, 0x5f, 0xff}}},\n};\n\n// 0x07017D60 - 0x07017E50\nstatic const Vtx ttm_seg7_vertex_07017D60[] = {\n    {{{ -6238,   -970,  -6128}, 0, {  1074,    392}, {0x18, 0x6c, 0x3e, 0xff}}},\n    {{{ -6481,   -970,  -5999}, 0, {   504,    336}, {0x2c, 0x66, 0x3c, 0xff}}},\n    {{{ -6391,  -1021,  -5875}, 0, {   568,    514}, {0x0d, 0x7c, 0x12, 0xff}}},\n    {{{ -5430,   -970,  -5999}, 0, {   206,    570}, {0xd5, 0x65, 0x3f, 0xff}}},\n    {{{ -5731,  -1021,  -5986}, 0, {   768,    414}, {0xf8, 0x7c, 0x15, 0xff}}},\n    {{{ -5521,  -1021,  -5875}, 0, {   332,    396}, {0xf4, 0x7c, 0x13, 0xff}}},\n    {{{ -5672,   -970,  -6128}, 0, {   708,    590}, {0xe7, 0x68, 0x43, 0xff}}},\n    {{{ -5845,   -970,  -6178}, 0, {  1050,    570}, {0xf9, 0x6e, 0x3e, 0xff}}},\n    {{{ -5869,  -1021,  -6027}, 0, {  1042,    398}, {0xfe, 0x7d, 0x10, 0xff}}},\n    {{{ -5845,   -970,  -6178}, 0, {   264,    570}, {0xf9, 0x6e, 0x3e, 0xff}}},\n    {{{ -6065,   -970,  -6178}, 0, {   692,    596}, {0x09, 0x6f, 0x3c, 0xff}}},\n    {{{ -6041,  -1021,  -6027}, 0, {   756,    420}, {0x01, 0x7d, 0x14, 0xff}}},\n    {{{ -5869,  -1021,  -6027}, 0, {   424,    398}, {0xfe, 0x7d, 0x10, 0xff}}},\n    {{{ -6179,  -1021,  -5986}, 0, {  1052,    396}, {0x06, 0x7d, 0x13, 0xff}}},\n    {{{ -6238,   -970,  -6128}, 0, {  1060,    568}, {0x18, 0x6c, 0x3e, 0xff}}},\n};\n\n// 0x07017E50 - 0x07017F30\nstatic const Vtx ttm_seg7_vertex_07017E50[] = {\n    {{{ -3660,   -614,  -4529}, 0, {    64,    156}, {0xbe, 0x69, 0x15, 0xff}}},\n    {{{ -4452,   -919,  -5249}, 0, {  1068,    184}, {0xbc, 0x5a, 0x38, 0xff}}},\n    {{{ -4524,   -970,  -5176}, 0, {  1068,    312}, {0xdf, 0x7a, 0xff, 0xff}}},\n    {{{ -6481,   -970,  -5999}, 0, {   504,    336}, {0x2c, 0x66, 0x3c, 0xff}}},\n    {{{ -6824,   -970,  -5667}, 0, {  -440,    366}, {0x1e, 0x70, 0x33, 0xff}}},\n    {{{ -6391,  -1021,  -5875}, 0, {   568,    514}, {0x0d, 0x7c, 0x12, 0xff}}},\n    {{{ -6715,  -1021,  -5559}, 0, {  -326,    544}, {0xff, 0x7c, 0x18, 0xff}}},\n    {{{ -6238,   -970,  -6128}, 0, {  1074,    392}, {0x18, 0x6c, 0x3e, 0xff}}},\n    {{{ -6179,  -1021,  -5986}, 0, {  1064,    564}, {0x06, 0x7d, 0x13, 0xff}}},\n    {{{ -6824,   -970,  -5667}, 0, {   950,    370}, {0x1e, 0x70, 0x33, 0xff}}},\n    {{{ -7005,  -1124,  -5269}, 0, {   702,    532}, {0xf5, 0x78, 0x27, 0xff}}},\n    {{{ -6715,  -1021,  -5559}, 0, {   954,    544}, {0xff, 0x7c, 0x18, 0xff}}},\n    {{{ -7114,  -1072,  -5378}, 0, {   698,    356}, {0x1b, 0x65, 0x47, 0xff}}},\n    {{{ -8019,  -1533,  -4545}, 0, {   -82,    346}, {0x0a, 0x6d, 0x3f, 0xff}}},\n};\n\n// 0x07017F30 - 0x07017FC0\nstatic const Vtx ttm_seg7_vertex_07017F30[] = {\n    {{{ -8053,  -1636,  -3710}, 0, {   640,    172}, {0xe0, 0x7a, 0xf6, 0xff}}},\n    {{{ -7961,  -1564,  -3611}, 0, {   616,     -8}, {0xd0, 0x6f, 0xdd, 0xff}}},\n    {{{ -7548,  -1533,  -4074}, 0, {    -6,     88}, {0xe5, 0x7b, 0x0a, 0xff}}},\n    {{{ -4452,   -919,  -5249}, 0, {   978,    198}, {0xbc, 0x5a, 0x38, 0xff}}},\n    {{{ -4778,  -1021,  -5357}, 0, {   698,    396}, {0xe8, 0x7b, 0x10, 0xff}}},\n    {{{ -4524,   -970,  -5176}, 0, {   978,    326}, {0xdf, 0x7a, 0xff, 0xff}}},\n    {{{ -4706,   -970,  -5430}, 0, {   698,    268}, {0xc4, 0x55, 0x48, 0xff}}},\n    {{{ -5521,  -1021,  -5875}, 0, {  -114,    534}, {0xf4, 0x7c, 0x13, 0xff}}},\n    {{{ -5430,   -970,  -5999}, 0, {  -136,    356}, {0xd5, 0x65, 0x3f, 0xff}}},\n};\n\n// 0x07017FC0 - 0x070180C0\nstatic const Vtx ttm_seg7_vertex_07017FC0[] = {\n    {{{ -3422,   -228,  -3132}, 0, { -1520,    990}, {0x01, 0x72, 0xc9, 0xff}}},\n    {{{  -141,   1044,  -1010}, 0, {   990,      0}, {0xaa, 0x53, 0x28, 0xff}}},\n    {{{ -2842,   -228,  -3712}, 0, { -1520,      0}, {0xc9, 0x72, 0x01, 0xff}}},\n    {{{  -720,   1044,   -430}, 0, {   990,    990}, {0x31, 0x45, 0xa2, 0xff}}},\n    {{{  -720,   1044,   -430}, 0, {     0,    990}, {0x31, 0x45, 0xa2, 0xff}}},\n    {{{   -68,   1096,   -937}, 0, {    36,      0}, {0x9e, 0x4a, 0x1d, 0xff}}},\n    {{{  -141,   1044,  -1010}, 0, {     0,      0}, {0xaa, 0x53, 0x28, 0xff}}},\n    {{{  -647,   1096,   -358}, 0, {    36,    990}, {0x03, 0x51, 0x9f, 0xff}}},\n    {{{  -575,   1198,   -285}, 0, {   126,    990}, {0x1b, 0x28, 0x8b, 0xff}}},\n    {{{     3,   1198,   -865}, 0, {   126,      0}, {0x8f, 0x38, 0x0e, 0xff}}},\n    {{{  -322,   1915,    -32}, 0, {   600,    990}, {0x0e, 0x37, 0x8f, 0xff}}},\n    {{{   257,   1915,   -611}, 0, {   600,      0}, {0x8b, 0x30, 0x0a, 0xff}}},\n    {{{  -249,   2017,     39}, 0, {   690,    990}, {0x1d, 0x4b, 0x9f, 0xff}}},\n    {{{   329,   2017,   -539}, 0, {   690,      0}, {0x99, 0x45, 0x18, 0xff}}},\n    {{{  -177,   2068,    112}, 0, {   758,    990}, {0x28, 0x53, 0xaa, 0xff}}},\n    {{{   402,   2068,   -466}, 0, {   758,      0}, {0xa7, 0x52, 0x25, 0xff}}},\n};\n\n// 0x070180C0 - 0x070181C0\nstatic const Vtx ttm_seg7_vertex_070180C0[] = {\n    {{{  -177,   2068,    112}, 0, {   758,    990}, {0x28, 0x53, 0xaa, 0xff}}},\n    {{{   510,   2120,   -358}, 0, {   848,      0}, {0xa9, 0x48, 0x37, 0xff}}},\n    {{{   402,   2068,   -466}, 0, {   758,      0}, {0xa7, 0x52, 0x25, 0xff}}},\n    {{{   -68,   2120,    220}, 0, {   848,    990}, {0x1d, 0x65, 0xbb, 0xff}}},\n    {{{    76,   2171,    365}, 0, {   962,    990}, {0x3f, 0x4b, 0xb0, 0xff}}},\n    {{{   655,   2171,   -213}, 0, {   962,      0}, {0xc0, 0x67, 0x22, 0xff}}},\n    {{{    76,   2171,    365}, 0, {  -542,    990}, {0x3f, 0x4b, 0xb0, 0xff}}},\n    {{{   945,   2222,     76}, 0, {  -292,      0}, {0xb7, 0x58, 0x35, 0xff}}},\n    {{{   655,   2171,   -213}, 0, {  -542,      0}, {0xc0, 0x67, 0x22, 0xff}}},\n    {{{   365,   2222,    655}, 0, {  -292,    990}, {0x22, 0x67, 0xc0, 0xff}}},\n    {{{  1089,   2273,    220}, 0, {  -162,      0}, {0xb0, 0x56, 0x2e, 0xff}}},\n    {{{   510,   2273,    800}, 0, {  -162,    990}, {0x38, 0x48, 0xa9, 0xff}}},\n    {{{   619,   2324,    908}, 0, {   -60,    990}, {0x25, 0x51, 0xa7, 0xff}}},\n    {{{  1198,   2324,    329}, 0, {   -60,      0}, {0xaa, 0x53, 0x28, 0xff}}},\n    {{{  2284,   3092,   1415}, 0, {  1004,      0}, {0xa9, 0x52, 0x27, 0xff}}},\n    {{{  1705,   3092,   1994}, 0, {  1004,    990}, {0x2b, 0x55, 0xad, 0xff}}},\n};\n\n// 0x070181C0 - 0x070182C0\nstatic const Vtx ttm_seg7_vertex_070181C0[] = {\n    {{{  1705,   3092,   1994}, 0, {     0,    990}, {0x2b, 0x55, 0xad, 0xff}}},\n    {{{  2429,   3144,   1560}, 0, {    98,      0}, {0xb4, 0x57, 0x32, 0xff}}},\n    {{{  2284,   3092,   1415}, 0, {     0,      0}, {0xa9, 0x52, 0x27, 0xff}}},\n    {{{  1850,   3144,   2139}, 0, {    98,    990}, {0x34, 0x58, 0xb7, 0xff}}},\n    {{{  2719,   3195,   1850}, 0, {   348,      0}, {0xb0, 0x4b, 0x3f, 0xff}}},\n    {{{  2139,   3195,   2429}, 0, {   348,    990}, {0x32, 0x57, 0xb4, 0xff}}},\n    {{{  2284,   3246,   2574}, 0, {   480,    990}, {0x2d, 0x55, 0xae, 0xff}}},\n    {{{  2863,   3246,   1994}, 0, {   480,      0}, {0xb0, 0x56, 0x2e, 0xff}}},\n    {{{  2972,   3297,   2103}, 0, {   580,      0}, {0xb4, 0x62, 0x17, 0xff}}},\n    {{{  2393,   3297,   2682}, 0, {   580,    990}, {0x13, 0x60, 0xb1, 0xff}}},\n    {{{  2465,   3348,   2755}, 0, {   652,    990}, {0x26, 0x3b, 0x97, 0xff}}},\n    {{{  3044,   3348,   2175}, 0, {   652,      0}, {0x9f, 0x4b, 0x1d, 0xff}}},\n    {{{  2646,   3604,   2936}, 0, {   858,    990}, {0x1d, 0x4a, 0x9e, 0xff}}},\n    {{{  3225,   3604,   2356}, 0, {   858,      0}, {0x99, 0x45, 0x18, 0xff}}},\n    {{{  3298,   3656,   2429}, 0, {   928,      0}, {0xa7, 0x51, 0x25, 0xff}}},\n    {{{  2719,   3656,   3008}, 0, {   928,    990}, {0x28, 0x53, 0xaa, 0xff}}},\n};\n\n// 0x070182C0 - 0x070183C0\nstatic const Vtx ttm_seg7_vertex_070182C0[] = {\n    {{{  2719,   3656,   3008}, 0, {   928,    990}, {0x28, 0x53, 0xaa, 0xff}}},\n    {{{  3406,   3707,   2537}, 0, {  1030,      0}, {0xae, 0x55, 0x2d, 0xff}}},\n    {{{  3298,   3656,   2429}, 0, {   928,      0}, {0xa7, 0x51, 0x25, 0xff}}},\n    {{{  2827,   3707,   3117}, 0, {  1030,    990}, {0x1e, 0x65, 0xbb, 0xff}}},\n    {{{  3949,   3963,   4239}, 0, {     0,    990}, {0x26, 0x52, 0xa7, 0xff}}},\n    {{{  4022,   4014,   4311}, 0, {    38,    990}, {0x18, 0x45, 0x99, 0xff}}},\n    {{{  4601,   4014,   3732}, 0, {    38,      0}, {0x9f, 0x4b, 0x1d, 0xff}}},\n    {{{  2827,   3707,   3117}, 0, {     0,    990}, {0x1e, 0x65, 0xbb, 0xff}}},\n    {{{  2972,   3758,   3262}, 0, {   100,    990}, {0x40, 0x4b, 0xb1, 0xff}}},\n    {{{  3551,   3758,   2682}, 0, {   100,      0}, {0xb5, 0x58, 0x33, 0xff}}},\n    {{{  3406,   3707,   2537}, 0, {     0,      0}, {0xae, 0x55, 0x2d, 0xff}}},\n    {{{  3406,   3809,   3696}, 0, {   482,    990}, {0x38, 0x59, 0xba, 0xff}}},\n    {{{  3986,   3809,   3117}, 0, {   482,      0}, {0xbb, 0x59, 0x39, 0xff}}},\n    {{{  4275,   3860,   3406}, 0, {   740,      0}, {0xb6, 0x58, 0x35, 0xff}}},\n    {{{  3696,   3860,   3986}, 0, {   740,    990}, {0x22, 0x67, 0xbf, 0xff}}},\n    {{{  4420,   3912,   3551}, 0, {   872,      0}, {0xb0, 0x56, 0x2e, 0xff}}},\n};\n\n// 0x070183C0 - 0x070184C0\nstatic const Vtx ttm_seg7_vertex_070183C0[] = {\n    {{{  3696,   3860,   3986}, 0, {   740,    990}, {0x22, 0x67, 0xbf, 0xff}}},\n    {{{  3841,   3912,   4130}, 0, {   872,    990}, {0x38, 0x48, 0xa9, 0xff}}},\n    {{{  4420,   3912,   3551}, 0, {   872,      0}, {0xb0, 0x56, 0x2e, 0xff}}},\n    {{{  4529,   3963,   3660}, 0, {   970,      0}, {0xaa, 0x53, 0x28, 0xff}}},\n    {{{  3949,   3963,   4239}, 0, {   970,    990}, {0x26, 0x52, 0xa7, 0xff}}},\n    {{{  4022,   4014,   4311}, 0, {    38,    990}, {0x18, 0x45, 0x99, 0xff}}},\n    {{{  4130,   4168,   4420}, 0, {   160,    990}, {0x1e, 0x4b, 0x9f, 0xff}}},\n    {{{  4710,   4168,   3841}, 0, {   160,      0}, {0x99, 0x45, 0x18, 0xff}}},\n    {{{  4601,   4014,   3732}, 0, {    38,      0}, {0x9f, 0x4b, 0x1d, 0xff}}},\n    {{{  3949,   3963,   4239}, 0, {     0,    990}, {0x26, 0x52, 0xa7, 0xff}}},\n    {{{  4529,   3963,   3660}, 0, {     0,      0}, {0xaa, 0x53, 0x28, 0xff}}},\n    {{{  4782,   4219,   3913}, 0, {   232,      0}, {0xa7, 0x52, 0x26, 0xff}}},\n    {{{  4203,   4219,   4493}, 0, {   232,    990}, {0x17, 0x62, 0xb4, 0xff}}},\n    {{{  4891,   4270,   4022}, 0, {   332,      0}, {0xaf, 0x55, 0x2d, 0xff}}},\n    {{{  4312,   4270,   4601}, 0, {   332,    990}, {0x39, 0x49, 0xaa, 0xff}}},\n    {{{  5036,   4321,   4167}, 0, {   464,      0}, {0xb3, 0x57, 0x31, 0xff}}},\n};\n\n// 0x070184C0 - 0x070185C0\nstatic const Vtx ttm_seg7_vertex_070184C0[] = {\n    {{{  5036,   4321,   4167}, 0, {   464,      0}, {0xb3, 0x57, 0x31, 0xff}}},\n    {{{  4312,   4270,   4601}, 0, {   332,    990}, {0x39, 0x49, 0xaa, 0xff}}},\n    {{{  4456,   4321,   4746}, 0, {   464,    990}, {0x32, 0x57, 0xb4, 0xff}}},\n    {{{  5217,   4372,   4348}, 0, {   626,      0}, {0xb2, 0x57, 0x30, 0xff}}},\n    {{{ -5869,  -1021,  -6027}, 0, {   424,    398}, {0xfe, 0x7d, 0x10, 0xff}}},\n    {{{ -6041,  -1021,  -6027}, 0, {   756,    420}, {0x01, 0x7d, 0x14, 0xff}}},\n    {{{ -5967,  -1021,  -5572}, 0, {   912,    -24}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4637,   4372,   4927}, 0, {   626,    990}, {0x30, 0x56, 0xb1, 0xff}}},\n    {{{  5600,   4781,   5890}, 0, {  1510,    990}, {0x3d, 0x4a, 0xae, 0xff}}},\n    {{{  6179,   4781,   5310}, 0, {  1510,      0}, {0xb4, 0x4b, 0x43, 0xff}}},\n    {{{ -5521,  -1021,  -5875}, 0, {   332,    396}, {0xf4, 0x7c, 0x13, 0xff}}},\n    {{{ -5731,  -1021,  -5986}, 0, {   768,    414}, {0xf8, 0x7c, 0x15, 0xff}}},\n    {{{ -5907,  -1021,  -5560}, 0, {   918,    -28}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5792,  -1021,  -5502}, 0, {   680,    -36}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5943,  -1021,  -5572}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5869,  -1021,  -6027}, 0, {  1042,    398}, {0xfe, 0x7d, 0x10, 0xff}}},\n};\n\n// 0x070185C0 - 0x070186C0\nstatic const Vtx ttm_seg7_vertex_070185C0[] = {\n    {{{ -5869,  -1021,  -6027}, 0, {   424,    398}, {0xfe, 0x7d, 0x10, 0xff}}},\n    {{{ -5967,  -1021,  -5572}, 0, {   912,    -24}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5943,  -1021,  -5572}, 0, {   866,    -28}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6041,  -1021,  -6027}, 0, {   756,    420}, {0x01, 0x7d, 0x14, 0xff}}},\n    {{{ -6179,  -1021,  -5986}, 0, {  1052,    396}, {0x06, 0x7d, 0x13, 0xff}}},\n    {{{ -6003,  -1021,  -5560}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6179,  -1021,  -5986}, 0, {  1064,    564}, {0x06, 0x7d, 0x13, 0xff}}},\n    {{{ -6121,  -1021,  -5501}, 0, {   714,    960}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6003,  -1021,  -5560}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6391,  -1021,  -5875}, 0, {   568,    514}, {0x0d, 0x7c, 0x12, 0xff}}},\n    {{{ -6389,  -1021,  -5233}, 0, {     0,    990}, {0xf9, 0x7e, 0x07, 0xff}}},\n    {{{ -6715,  -1021,  -5559}, 0, {  -326,    544}, {0xff, 0x7c, 0x18, 0xff}}},\n    {{{ -6715,  -1021,  -5559}, 0, {   954,    544}, {0xff, 0x7c, 0x18, 0xff}}},\n    {{{ -6679,  -1124,  -4943}, 0, {   738,    978}, {0xe8, 0x7a, 0x18, 0xff}}},\n    {{{ -6389,  -1021,  -5233}, 0, {   990,    990}, {0xf9, 0x7e, 0x07, 0xff}}},\n    {{{ -7005,  -1124,  -5269}, 0, {   702,    532}, {0xf5, 0x78, 0x27, 0xff}}},\n};\n\n// 0x070186C0 - 0x070187C0\nstatic const Vtx ttm_seg7_vertex_070186C0[] = {\n    {{{ -7548,  -1533,  -4074}, 0, {     0,    990}, {0xe5, 0x7b, 0x0a, 0xff}}},\n    {{{ -6679,  -1124,  -4943}, 0, {   738,    978}, {0xe8, 0x7a, 0x18, 0xff}}},\n    {{{ -7005,  -1124,  -5269}, 0, {   702,    532}, {0xf5, 0x78, 0x27, 0xff}}},\n    {{{ -8019,  -1533,  -4545}, 0, {   -82,    346}, {0x0a, 0x6d, 0x3f, 0xff}}},\n    {{{ -3660,   -614,  -4529}, 0, {    64,    156}, {0xbe, 0x69, 0x15, 0xff}}},\n    {{{ -4524,   -970,  -5176}, 0, {  1068,    312}, {0xdf, 0x7a, 0xff, 0xff}}},\n    {{{ -4995,   -970,  -4706}, 0, {   990,    990}, {0xe9, 0x7a, 0xe9, 0xff}}},\n    {{{ -4240,   -614,  -3950}, 0, {     0,    990}, {0xe4, 0x78, 0xe4, 0xff}}},\n    {{{ -4524,   -970,  -5176}, 0, {   978,    326}, {0xdf, 0x7a, 0xff, 0xff}}},\n    {{{ -5212,  -1021,  -4923}, 0, {   708,   1006}, {0xf7, 0x7e, 0xf7, 0xff}}},\n    {{{ -4778,  -1021,  -5357}, 0, {   698,    396}, {0xe8, 0x7b, 0x10, 0xff}}},\n    {{{ -5521,  -1021,  -5875}, 0, {  -114,    534}, {0xf4, 0x7c, 0x13, 0xff}}},\n    {{{ -5792,  -1021,  -5502}, 0, {   -40,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -7548,  -1533,  -4074}, 0, {    -6,     88}, {0xe5, 0x7b, 0x0a, 0xff}}},\n    {{{ -8562,  -1636,  -4219}, 0, {   660,   1002}, {0x02, 0x78, 0x29, 0xff}}},\n    {{{ -8053,  -1636,  -3710}, 0, {   640,    172}, {0xe0, 0x7a, 0xf6, 0xff}}},\n};\n\n// 0x070187C0 - 0x070187F0\nstatic const Vtx ttm_seg7_vertex_070187C0[] = {\n    {{{ -7548,  -1533,  -4074}, 0, {    -6,     88}, {0xe5, 0x7b, 0x0a, 0xff}}},\n    {{{ -8019,  -1533,  -4545}, 0, {    14,    858}, {0x0a, 0x6d, 0x3f, 0xff}}},\n    {{{ -8562,  -1636,  -4219}, 0, {   660,   1002}, {0x02, 0x78, 0x29, 0xff}}},\n};\n\n// 0x070187F0 - 0x07018830\nstatic const Vtx ttm_seg7_vertex_070187F0[] = {\n    {{{  6541,   4781,   7700}, 0, {-10250, -10252}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  7989,   4781,   6252}, 0, {-10250,  10186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  7265,   4781,   5528}, 0, {     0,  10186}, {0xb0, 0x38, 0xb0, 0xff}}},\n    {{{  5817,   4781,   6976}, 0, {     0, -10252}, {0xc1, 0x59, 0xc1, 0xff}}},\n};\n\n// 0x07018830 - 0x07018870\nstatic const Vtx ttm_seg7_vertex_07018830[] = {\n    {{{  6179,   4781,   5310}, 0, {  9166,   4054}, {0xb4, 0x4b, 0x43, 0xff}}},\n    {{{  5600,   4781,   5890}, 0, {  9166,  -4120}, {0x3d, 0x4a, 0xae, 0xff}}},\n    {{{  6252,   4781,   6541}, 0, {     0,  -4120}, {0x28, 0x71, 0xd8, 0xff}}},\n    {{{  6831,   4781,   5962}, 0, {     0,   4054}, {0xc1, 0x59, 0x3f, 0xff}}},\n};\n\n// 0x07018870 - 0x07018970\nstatic const Vtx ttm_seg7_vertex_07018870[] = {\n    {{{   424,   2733,   -154}, 0, {     0,      0}, {0xf3, 0x83, 0x0d, 0xff}}},\n    {{{   207,   2733,    207}, 0, {  4056,    990}, {0x49, 0xa9, 0x36, 0xff}}},\n    {{{   135,   2733,    135}, 0, {  4056,      0}, {0x1b, 0x88, 0xe5, 0xff}}},\n    {{{  6034,   5242,   5455}, 0, { -1052,      0}, {0xf3, 0x83, 0x0d, 0xff}}},\n    {{{  6107,   5242,   5528}, 0, { -1052,    990}, {0x2d, 0xac, 0x53, 0xff}}},\n    {{{  5817,   5242,   5817}, 0, {  3036,    990}, {0x54, 0xc1, 0x46, 0xff}}},\n    {{{  5745,   5242,   5745}, 0, {  3036,      0}, {0x1b, 0x88, 0xe5, 0xff}}},\n    {{{  3322,   4320,   2743}, 0, {     0,      0}, {0xf3, 0x83, 0x0d, 0xff}}},\n    {{{  3105,   4320,   3105}, 0, {  4056,    990}, {0x3e, 0x99, 0x27, 0xff}}},\n    {{{  3033,   4320,   3032}, 0, {  4056,      0}, {0x1b, 0x88, 0xe5, 0xff}}},\n    {{{  3395,   4320,   2815}, 0, {     0,    990}, {0x2d, 0xac, 0x53, 0xff}}},\n    {{{  6541,   5088,   6397}, 0, {  2012,    990}, {0x46, 0x9d, 0x21, 0xff}}},\n    {{{  6469,   5088,   6324}, 0, {  2012,      0}, {0xf1, 0xa7, 0xa7, 0xff}}},\n    {{{  6614,   5088,   6179}, 0, {     0,      0}, {0xaf, 0xad, 0xce, 0xff}}},\n    {{{  6686,   5088,   6252}, 0, {     0,    990}, {0x22, 0xb6, 0x60, 0xff}}},\n    {{{   497,   2733,    -82}, 0, {     0,    990}, {0x2c, 0xac, 0x53, 0xff}}},\n};\n\n// 0x07018970 - 0x07018A60\nstatic const Vtx ttm_seg7_vertex_07018970[] = {\n    {{{  3033,   4320,   3032}, 0, {     0,      0}, {0x1b, 0x88, 0xe5, 0xff}}},\n    {{{  3105,   4320,   3105}, 0, {     0,    990}, {0x3e, 0x99, 0x27, 0xff}}},\n    {{{  3033,   4269,   3177}, 0, {  1052,    990}, {0x64, 0xc0, 0x2b, 0xff}}},\n    {{{  6107,   5191,   5383}, 0, {  1776,      0}, {0xd0, 0x96, 0x30, 0xff}}},\n    {{{  6179,   5191,   5455}, 0, {  1776,    990}, {0x18, 0xbb, 0x67, 0xff}}},\n    {{{  6107,   5242,   5528}, 0, {  2860,    990}, {0x2d, 0xac, 0x53, 0xff}}},\n    {{{  6034,   5242,   5455}, 0, {  2860,      0}, {0xf3, 0x83, 0x0d, 0xff}}},\n    {{{  5745,   5242,   5745}, 0, { -1048,      0}, {0x1b, 0x88, 0xe5, 0xff}}},\n    {{{  5745,   5191,   5890}, 0, {    28,    990}, {0x62, 0xb6, 0x1d, 0xff}}},\n    {{{  5672,   5191,   5817}, 0, {    32,      0}, {0x38, 0x9e, 0xc8, 0xff}}},\n    {{{  5817,   5242,   5817}, 0, { -1048,    990}, {0x54, 0xc1, 0x46, 0xff}}},\n    {{{  3395,   4269,   2670}, 0, {  1776,      0}, {0xd0, 0x96, 0x30, 0xff}}},\n    {{{  3467,   4269,   2743}, 0, {  1776,    990}, {0x17, 0xbb, 0x67, 0xff}}},\n    {{{  3395,   4320,   2815}, 0, {  2860,    990}, {0x2d, 0xac, 0x53, 0xff}}},\n    {{{  3322,   4320,   2743}, 0, {  2860,      0}, {0xf3, 0x83, 0x0d, 0xff}}},\n};\n\n// 0x07018A60 - 0x07018B10\nstatic const Vtx ttm_seg7_vertex_07018A60[] = {\n    {{{   497,   2681,   -226}, 0, {  1776,      0}, {0xd0, 0x96, 0x30, 0xff}}},\n    {{{   497,   2733,    -82}, 0, {  2860,    990}, {0x2c, 0xac, 0x53, 0xff}}},\n    {{{   424,   2733,   -154}, 0, {  2860,      0}, {0xf3, 0x83, 0x0d, 0xff}}},\n    {{{  3033,   4320,   3032}, 0, {     0,      0}, {0x1b, 0x88, 0xe5, 0xff}}},\n    {{{  3033,   4269,   3177}, 0, {  1052,    990}, {0x64, 0xc0, 0x2b, 0xff}}},\n    {{{  2960,   4269,   3105}, 0, {  1052,      0}, {0x37, 0x9d, 0xc8, 0xff}}},\n    {{{   135,   2733,    135}, 0, {     0,      0}, {0x1b, 0x88, 0xe5, 0xff}}},\n    {{{   207,   2733,    207}, 0, {     0,    990}, {0x49, 0xa9, 0x36, 0xff}}},\n    {{{   135,   2681,    279}, 0, {  1052,    990}, {0x62, 0xb6, 0x1d, 0xff}}},\n    {{{    62,   2681,    207}, 0, {  1052,      0}, {0x38, 0x9e, 0xc8, 0xff}}},\n    {{{   569,   2681,   -154}, 0, {  1776,    990}, {0x26, 0xc6, 0x69, 0xff}}},\n};\n\n// 0x07018B10 - 0x07018C00\nstatic const Vtx ttm_seg7_vertex_07018B10[] = {\n    {{{  2960,   4269,   3105}, 0, {  1052,      0}, {0x37, 0x9d, 0xc8, 0xff}}},\n    {{{  3033,   4269,   3177}, 0, {  1052,    990}, {0x64, 0xc0, 0x2b, 0xff}}},\n    {{{  2996,   4218,   3213}, 0, {  1776,    990}, {0x70, 0xc8, 0x0e, 0xff}}},\n    {{{  6143,   5139,   5347}, 0, {  1052,      0}, {0xba, 0xb1, 0x46, 0xff}}},\n    {{{  6215,   5139,   5419}, 0, {  1052,    990}, {0x1b, 0xd8, 0x75, 0xff}}},\n    {{{  6179,   5191,   5455}, 0, {  1776,    990}, {0x18, 0xbb, 0x67, 0xff}}},\n    {{{  6107,   5191,   5383}, 0, {  1776,      0}, {0xd0, 0x96, 0x30, 0xff}}},\n    {{{  5672,   5191,   5817}, 0, {    32,      0}, {0x38, 0x9e, 0xc8, 0xff}}},\n    {{{  5709,   5139,   5926}, 0, {   752,    990}, {0x71, 0xc9, 0x0e, 0xff}}},\n    {{{  5636,   5139,   5853}, 0, {   752,      0}, {0x4b, 0xbc, 0xb5, 0xff}}},\n    {{{  5745,   5191,   5890}, 0, {    28,    990}, {0x62, 0xb6, 0x1d, 0xff}}},\n    {{{  3431,   4218,   2634}, 0, {  1052,      0}, {0xba, 0xb1, 0x45, 0xff}}},\n    {{{  3503,   4218,   2707}, 0, {  1052,    990}, {0x0a, 0xd0, 0x74, 0xff}}},\n    {{{  3467,   4269,   2743}, 0, {  1776,    990}, {0x17, 0xbb, 0x67, 0xff}}},\n    {{{  3395,   4269,   2670}, 0, {  1776,      0}, {0xd0, 0x96, 0x30, 0xff}}},\n};\n\n// 0x07018C00 - 0x07018CF0\nstatic const Vtx ttm_seg7_vertex_07018C00[] = {\n    {{{    62,   2681,    207}, 0, {  1052,      0}, {0x38, 0x9e, 0xc8, 0xff}}},\n    {{{   135,   2681,    279}, 0, {  1052,    990}, {0x62, 0xb6, 0x1d, 0xff}}},\n    {{{    99,   2630,    316}, 0, {  1776,    990}, {0x6c, 0xbe, 0xf9, 0xff}}},\n    {{{  2960,   4269,   3105}, 0, {  1052,      0}, {0x37, 0x9d, 0xc8, 0xff}}},\n    {{{  2996,   4218,   3213}, 0, {  1776,    990}, {0x70, 0xc8, 0x0e, 0xff}}},\n    {{{  2924,   4218,   3141}, 0, {  1776,      0}, {0x4b, 0xbc, 0xb5, 0xff}}},\n    {{{  6469,   5088,   6324}, 0, {     0,      0}, {0xf1, 0xa7, 0xa7, 0xff}}},\n    {{{  6469,   4986,   6469}, 0, {  1412,    990}, {0x73, 0xcc, 0xf6, 0xff}}},\n    {{{  6396,   4986,   6397}, 0, {  1412,      0}, {0x11, 0xe6, 0x86, 0xff}}},\n    {{{  6541,   5088,   6397}, 0, {     0,    990}, {0x46, 0x9d, 0x21, 0xff}}},\n    {{{  6686,   5088,   6252}, 0, {  1412,    990}, {0x22, 0xb6, 0x60, 0xff}}},\n    {{{  6614,   5088,   6179}, 0, {  1412,      0}, {0xaf, 0xad, 0xce, 0xff}}},\n    {{{  6686,   4986,   6107}, 0, {     0,      0}, {0x8d, 0xcc, 0x0a, 0xff}}},\n    {{{  6759,   4986,   6179}, 0, {     0,    990}, {0x06, 0xeb, 0x7c, 0xff}}},\n    {{{    26,   2630,    243}, 0, {  1776,      0}, {0x4b, 0xbc, 0xb5, 0xff}}},\n};\n\n// 0x07018CF0 - 0x07018D30\nstatic const Vtx ttm_seg7_vertex_07018CF0[] = {\n    {{{   533,   2630,   -263}, 0, {  1052,      0}, {0xba, 0xb1, 0x45, 0xff}}},\n    {{{   569,   2681,   -154}, 0, {  1776,    990}, {0x26, 0xc6, 0x69, 0xff}}},\n    {{{   497,   2681,   -226}, 0, {  1776,      0}, {0xd0, 0x96, 0x30, 0xff}}},\n    {{{   605,   2630,   -190}, 0, {  1052,    990}, {0x0a, 0xd0, 0x75, 0xff}}},\n};\n\n// 0x07018D30 - 0x07018E20\nstatic const Vtx ttm_seg7_vertex_07018D30[] = {\n    {{{  3467,   4115,   2598}, 0, {     0,      0}, {0xab, 0xda, 0x55, 0xff}}},\n    {{{  3503,   4218,   2707}, 0, {  1052,    990}, {0x0a, 0xd0, 0x74, 0xff}}},\n    {{{  3431,   4218,   2634}, 0, {  1052,      0}, {0xba, 0xb1, 0x45, 0xff}}},\n    {{{  6179,   5037,   5310}, 0, {     0,      0}, {0xab, 0xd9, 0x55, 0xff}}},\n    {{{  6252,   5037,   5383}, 0, {     0,    990}, {0xea, 0xf1, 0x7b, 0xff}}},\n    {{{  6215,   5139,   5419}, 0, {  1052,    990}, {0x1b, 0xd8, 0x75, 0xff}}},\n    {{{  6143,   5139,   5347}, 0, {  1052,      0}, {0xba, 0xb1, 0x46, 0xff}}},\n    {{{  5636,   5139,   5853}, 0, {   752,      0}, {0x4b, 0xbc, 0xb5, 0xff}}},\n    {{{  5709,   5139,   5926}, 0, {   752,    990}, {0x71, 0xc9, 0x0e, 0xff}}},\n    {{{  5672,   5037,   5962}, 0, {  1836,    990}, {0x7b, 0xe5, 0x04, 0xff}}},\n    {{{  5600,   5037,   5890}, 0, {  1836,      0}, {0x58, 0xed, 0xa8, 0xff}}},\n    {{{  2924,   4218,   3141}, 0, {  1776,      0}, {0x4b, 0xbc, 0xb5, 0xff}}},\n    {{{  2996,   4218,   3213}, 0, {  1776,    990}, {0x70, 0xc8, 0x0e, 0xff}}},\n    {{{  2960,   4115,   3250}, 0, {  2860,    990}, {0x7c, 0xe6, 0x04, 0xff}}},\n    {{{  2888,   4115,   3177}, 0, {  2860,      0}, {0x59, 0xed, 0xa8, 0xff}}},\n};\n\n// 0x07018E20 - 0x07018ED0\nstatic const Vtx ttm_seg7_vertex_07018E20[] = {\n    {{{    26,   2630,    243}, 0, {  1776,      0}, {0x4b, 0xbc, 0xb5, 0xff}}},\n    {{{    62,   2528,    352}, 0, {  2860,    990}, {0x7a, 0xea, 0x16, 0xff}}},\n    {{{    -9,   2528,    279}, 0, {  2860,      0}, {0x5a, 0xed, 0xa9, 0xff}}},\n    {{{  3467,   4115,   2598}, 0, {     0,      0}, {0xab, 0xda, 0x55, 0xff}}},\n    {{{  3539,   4115,   2670}, 0, {     0,    990}, {0x02, 0xf3, 0x7e, 0xff}}},\n    {{{  3503,   4218,   2707}, 0, {  1052,    990}, {0x0a, 0xd0, 0x74, 0xff}}},\n    {{{   569,   2528,   -299}, 0, {     0,      0}, {0xab, 0xda, 0x55, 0xff}}},\n    {{{   642,   2528,   -226}, 0, {     0,    990}, {0xea, 0xf1, 0x7b, 0xff}}},\n    {{{   605,   2630,   -190}, 0, {  1052,    990}, {0x0a, 0xd0, 0x75, 0xff}}},\n    {{{   533,   2630,   -263}, 0, {  1052,      0}, {0xba, 0xb1, 0x45, 0xff}}},\n    {{{    99,   2630,    316}, 0, {  1776,    990}, {0x6c, 0xbe, 0xf9, 0xff}}},\n};\n\n// 0x07018ED0 - 0x07018FD0\nstatic const Vtx ttm_seg7_vertex_07018ED0[] = {\n    {{{  3539,   4115,   2670}, 0, {  2524,    990}, {0x02, 0xf3, 0x7e, 0xff}}},\n    {{{  3467,   4115,   2598}, 0, {  2524,      0}, {0xab, 0xda, 0x55, 0xff}}},\n    {{{  3467,   3834,   2598}, 0, {  -284,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -141,   1044,  -1010}, 0, { 20752,    990}, {0xaa, 0x53, 0x28, 0xff}}},\n    {{{ -2842,   -120,  -3712}, 0, {-19104,      0}, {0xad, 0x55, 0x2b, 0xff}}},\n    {{{ -2842,   -228,  -3712}, 0, {-19444,    990}, {0xc9, 0x72, 0x01, 0xff}}},\n    {{{  -168,   1139,  -1037}, 0, { 20676,      0}, {0xa7, 0x51, 0x25, 0xff}}},\n    {{{ -3422,   -228,  -3132}, 0, { 20752,    990}, {0x01, 0x72, 0xc9, 0xff}}},\n    {{{ -3422,   -120,  -3132}, 0, { 20408,      0}, {0x43, 0x35, 0xa3, 0xff}}},\n    {{{  -720,   1044,   -430}, 0, {-19448,    990}, {0x31, 0x45, 0xa2, 0xff}}},\n    {{{  -748,   1139,   -458}, 0, {-19372,      0}, {0x16, 0x62, 0xb3, 0xff}}},\n    {{{  2960,   3859,   3250}, 0, {  2012,    990}, {0x50, 0x4a, 0xc1, 0xff}}},\n    {{{  2888,   4115,   3177}, 0, {  -540,      0}, {0x59, 0xed, 0xa8, 0xff}}},\n    {{{  2960,   4115,   3250}, 0, {  -540,    990}, {0x7c, 0xe6, 0x04, 0xff}}},\n    {{{  2888,   3834,   3177}, 0, {  2268,      0}, {0x5a, 0x00, 0xa7, 0xff}}},\n    {{{  3539,   3859,   2670}, 0, {     0,    990}, {0xd7, 0x47, 0x60, 0xff}}},\n};\n\n// 0x07018FD0 - 0x070190B0\nstatic const Vtx ttm_seg7_vertex_07018FD0[] = {\n    {{{  5600,   4781,   5890}, 0, {     0,    990}, {0x3d, 0x4a, 0xae, 0xff}}},\n    {{{  5579,   4879,   5869}, 0, {     0,      0}, {0x38, 0x58, 0xb9, 0xff}}},\n    {{{  5600,   4877,   5890}, 0, {  -304,     72}, {0x2d, 0x71, 0xde, 0xff}}},\n    {{{  -720,   1044,   -430}, 0, {  1112,    990}, {0x31, 0x45, 0xa2, 0xff}}},\n    {{{  -690,   1180,   -401}, 0, {   132,      0}, {0x2b, 0x3f, 0x9b, 0xff}}},\n    {{{  -647,   1096,   -358}, 0, {     0,    990}, {0x03, 0x51, 0x9f, 0xff}}},\n    {{{  -748,   1139,   -458}, 0, {  1036,      0}, {0x16, 0x62, 0xb3, 0xff}}},\n    {{{  -690,   1180,   -401}, 0, {  1248,      0}, {0x2b, 0x3f, 0x9b, 0xff}}},\n    {{{  -634,   1259,   -345}, 0, {   132,      0}, {0xf9, 0x41, 0x94, 0xff}}},\n    {{{  -575,   1198,   -285}, 0, {     0,    990}, {0x1b, 0x28, 0x8b, 0xff}}},\n    {{{  -647,   1096,   -358}, 0, {  1412,    990}, {0x03, 0x51, 0x9f, 0xff}}},\n    {{{  -177,   2068,    112}, 0, {  1584,    990}, {0x28, 0x53, 0xaa, 0xff}}},\n    {{{   -88,   2218,    200}, 0, {   -68,      0}, {0x38, 0x48, 0xa9, 0xff}}},\n    {{{   -68,   2120,    220}, 0, {     0,    990}, {0x1d, 0x65, 0xbb, 0xff}}},\n};\n\n// 0x070190B0 - 0x070191A0\nstatic const Vtx ttm_seg7_vertex_070190B0[] = {\n    {{{  -575,   1198,   -285}, 0, {  7968,    990}, {0x1b, 0x28, 0x8b, 0xff}}},\n    {{{  -634,   1259,   -345}, 0, {  7800,      0}, {0xf9, 0x41, 0x94, 0xff}}},\n    {{{  -381,   1976,    -92}, 0, {  -192,      0}, {0x0b, 0x30, 0x8c, 0xff}}},\n    {{{  -322,   1915,    -32}, 0, {     0,    990}, {0x0e, 0x37, 0x8f, 0xff}}},\n    {{{  -322,   1915,    -32}, 0, {  1412,    990}, {0x0e, 0x37, 0x8f, 0xff}}},\n    {{{  -381,   1976,    -92}, 0, {  1580,      0}, {0x0b, 0x30, 0x8c, 0xff}}},\n    {{{  -292,   2101,     -3}, 0, {  -192,      0}, {0x17, 0x45, 0x99, 0xff}}},\n    {{{  -249,   2017,     39}, 0, {     0,    990}, {0x1d, 0x4b, 0x9f, 0xff}}},\n    {{{  -249,   2017,     39}, 0, {  1112,    990}, {0x1d, 0x4b, 0x9f, 0xff}}},\n    {{{  -205,   2163,     84}, 0, {  -100,      0}, {0x25, 0x52, 0xa7, 0xff}}},\n    {{{  -177,   2068,    112}, 0, {     0,    990}, {0x28, 0x53, 0xaa, 0xff}}},\n    {{{  -292,   2101,     -3}, 0, {  1276,      0}, {0x17, 0x45, 0x99, 0xff}}},\n    {{{   365,   2222,    655}, 0, {  2076,    990}, {0x22, 0x67, 0xc0, 0xff}}},\n    {{{   352,   2323,    642}, 0, {  2012,      0}, {0x3f, 0x4b, 0xb0, 0xff}}},\n    {{{   510,   2273,    800}, 0, {     0,    990}, {0x38, 0x48, 0xa9, 0xff}}},\n};\n\n// 0x070191A0 - 0x07019280\nstatic const Vtx ttm_seg7_vertex_070191A0[] = {\n    {{{  -177,   2068,    112}, 0, {  1584,    990}, {0x28, 0x53, 0xaa, 0xff}}},\n    {{{  -205,   2163,     84}, 0, {  1656,      0}, {0x25, 0x52, 0xa7, 0xff}}},\n    {{{   -88,   2218,    200}, 0, {   -68,      0}, {0x38, 0x48, 0xa9, 0xff}}},\n    {{{   -88,   2218,    200}, 0, {  2116,      0}, {0x38, 0x48, 0xa9, 0xff}}},\n    {{{    62,   2272,    352}, 0, {   -88,      0}, {0x4f, 0x4b, 0xc0, 0xff}}},\n    {{{    76,   2171,    365}, 0, {     0,    990}, {0x3f, 0x4b, 0xb0, 0xff}}},\n    {{{   -68,   2120,    220}, 0, {  2076,    990}, {0x1d, 0x65, 0xbb, 0xff}}},\n    {{{    76,   2171,    365}, 0, {  4088,    990}, {0x3f, 0x4b, 0xb0, 0xff}}},\n    {{{   352,   2323,    642}, 0, {    28,      0}, {0x3f, 0x4b, 0xb0, 0xff}}},\n    {{{   365,   2222,    655}, 0, {     0,    990}, {0x22, 0x67, 0xc0, 0xff}}},\n    {{{    62,   2272,    352}, 0, {  4148,      0}, {0x4f, 0x4b, 0xc0, 0xff}}},\n    {{{   352,   2323,    642}, 0, {  2012,      0}, {0x3f, 0x4b, 0xb0, 0xff}}},\n    {{{   490,   2372,    779}, 0, {     8,      0}, {0x1d, 0x65, 0xba, 0xff}}},\n    {{{   510,   2273,    800}, 0, {     0,    990}, {0x38, 0x48, 0xa9, 0xff}}},\n};\n\n// 0x07019280 - 0x07019370\nstatic const Vtx ttm_seg7_vertex_07019280[] = {\n    {{{  1850,   3144,   2139}, 0, {  4088,    990}, {0x34, 0x58, 0xb7, 0xff}}},\n    {{{  1836,   3245,   2126}, 0, {  4148,      0}, {0x32, 0x58, 0xb4, 0xff}}},\n    {{{  2126,   3296,   2416}, 0, {    28,      0}, {0x35, 0x58, 0xb7, 0xff}}},\n    {{{   510,   2273,    800}, 0, {  1584,    990}, {0x38, 0x48, 0xa9, 0xff}}},\n    {{{   490,   2372,    779}, 0, {  1544,      0}, {0x1d, 0x65, 0xba, 0xff}}},\n    {{{   591,   2419,    880}, 0, {    40,      0}, {0x28, 0x53, 0xaa, 0xff}}},\n    {{{   619,   2324,    908}, 0, {     0,    990}, {0x25, 0x51, 0xa7, 0xff}}},\n    {{{   619,   2324,    908}, 0, { 17108,    990}, {0x25, 0x51, 0xa7, 0xff}}},\n    {{{   591,   2419,    880}, 0, { 17036,      0}, {0x28, 0x53, 0xaa, 0xff}}},\n    {{{  1680,   3189,   1969}, 0, {  -140,      0}, {0x27, 0x52, 0xa9, 0xff}}},\n    {{{  1705,   3092,   1994}, 0, {     0,    990}, {0x2b, 0x55, 0xad, 0xff}}},\n    {{{  1705,   3092,   1994}, 0, {  2076,    990}, {0x2b, 0x55, 0xad, 0xff}}},\n    {{{  1680,   3189,   1969}, 0, {  2188,      0}, {0x27, 0x52, 0xa9, 0xff}}},\n    {{{  1836,   3245,   2126}, 0, {   -88,      0}, {0x32, 0x58, 0xb4, 0xff}}},\n    {{{  1850,   3144,   2139}, 0, {     0,    990}, {0x34, 0x58, 0xb7, 0xff}}},\n};\n\n// 0x07019370 - 0x07019460\nstatic const Vtx ttm_seg7_vertex_07019370[] = {\n    {{{  2393,   3297,   2682}, 0, {  1112,    990}, {0x13, 0x60, 0xb1, 0xff}}},\n    {{{  2365,   3392,   2655}, 0, {  1040,      0}, {0x34, 0x47, 0xa5, 0xff}}},\n    {{{  2465,   3348,   2755}, 0, {     0,    990}, {0x26, 0x3b, 0x97, 0xff}}},\n    {{{  1850,   3144,   2139}, 0, {  4088,    990}, {0x34, 0x58, 0xb7, 0xff}}},\n    {{{  2126,   3296,   2416}, 0, {    28,      0}, {0x35, 0x58, 0xb7, 0xff}}},\n    {{{  2139,   3195,   2429}, 0, {     0,    990}, {0x32, 0x57, 0xb4, 0xff}}},\n    {{{  2139,   3195,   2429}, 0, {  2076,    990}, {0x32, 0x57, 0xb4, 0xff}}},\n    {{{  2264,   3344,   2553}, 0, {     8,      0}, {0x2e, 0x56, 0xb0, 0xff}}},\n    {{{  2284,   3246,   2574}, 0, {     0,    990}, {0x2d, 0x55, 0xae, 0xff}}},\n    {{{  2126,   3296,   2416}, 0, {  2012,      0}, {0x35, 0x58, 0xb7, 0xff}}},\n    {{{  2284,   3246,   2574}, 0, {  1584,    990}, {0x2d, 0x55, 0xae, 0xff}}},\n    {{{  2264,   3344,   2553}, 0, {  1544,      0}, {0x2e, 0x56, 0xb0, 0xff}}},\n    {{{  2365,   3392,   2655}, 0, {    40,      0}, {0x34, 0x47, 0xa5, 0xff}}},\n    {{{  2393,   3297,   2682}, 0, {     0,    990}, {0x13, 0x60, 0xb1, 0xff}}},\n    {{{  2422,   3433,   2712}, 0, {   132,      0}, {0x09, 0x58, 0xa6, 0xff}}},\n};\n\n// 0x07019460 - 0x07019550\nstatic const Vtx ttm_seg7_vertex_07019460[] = {\n    {{{  2827,   3707,   3117}, 0, {  2076,    990}, {0x1e, 0x65, 0xbb, 0xff}}},\n    {{{  2807,   3805,   3096}, 0, {  2116,      0}, {0x38, 0x48, 0xa9, 0xff}}},\n    {{{  2972,   3758,   3262}, 0, {     0,    990}, {0x40, 0x4b, 0xb1, 0xff}}},\n    {{{  2465,   3348,   2755}, 0, {  3580,    990}, {0x26, 0x3b, 0x97, 0xff}}},\n    {{{  2422,   3433,   2712}, 0, {  3416,      0}, {0x09, 0x58, 0xa6, 0xff}}},\n    {{{  2603,   3689,   2893}, 0, {  -192,      0}, {0x18, 0x45, 0x99, 0xff}}},\n    {{{  2646,   3604,   2936}, 0, {     0,    990}, {0x1d, 0x4a, 0x9e, 0xff}}},\n    {{{  2646,   3604,   2936}, 0, {  1112,    990}, {0x1d, 0x4a, 0x9e, 0xff}}},\n    {{{  2603,   3689,   2893}, 0, {  1276,      0}, {0x18, 0x45, 0x99, 0xff}}},\n    {{{  2691,   3751,   2980}, 0, {  -100,      0}, {0x25, 0x51, 0xa7, 0xff}}},\n    {{{  2719,   3656,   3008}, 0, {     0,    990}, {0x28, 0x53, 0xaa, 0xff}}},\n    {{{  2719,   3656,   3008}, 0, {  1584,    990}, {0x28, 0x53, 0xaa, 0xff}}},\n    {{{  2691,   3751,   2980}, 0, {  1656,      0}, {0x25, 0x51, 0xa7, 0xff}}},\n    {{{  2807,   3805,   3096}, 0, {   -68,      0}, {0x38, 0x48, 0xa9, 0xff}}},\n    {{{  2827,   3707,   3117}, 0, {     0,    990}, {0x1e, 0x65, 0xbb, 0xff}}},\n};\n\n// 0x07019550 - 0x07019640\nstatic const Vtx ttm_seg7_vertex_07019550[] = {\n    {{{  3696,   3860,   3986}, 0, {  2076,    990}, {0x22, 0x67, 0xbf, 0xff}}},\n    {{{  3683,   3961,   3972}, 0, {  2012,      0}, {0x3f, 0x4a, 0xb0, 0xff}}},\n    {{{  3841,   3912,   4130}, 0, {     0,    990}, {0x38, 0x48, 0xa9, 0xff}}},\n    {{{  2807,   3805,   3096}, 0, {  2116,      0}, {0x38, 0x48, 0xa9, 0xff}}},\n    {{{  2960,   3859,   3250}, 0, {  -112,      0}, {0x50, 0x4a, 0xc1, 0xff}}},\n    {{{  2972,   3758,   3262}, 0, {     0,    990}, {0x40, 0x4b, 0xb1, 0xff}}},\n    {{{  2972,   3758,   3262}, 0, {  6120,    990}, {0x40, 0x4b, 0xb1, 0xff}}},\n    {{{  3399,   3911,   3689}, 0, {   -12,      0}, {0x39, 0x59, 0xbb, 0xff}}},\n    {{{  3406,   3809,   3696}, 0, {     0,    990}, {0x38, 0x59, 0xba, 0xff}}},\n    {{{  2960,   3859,   3250}, 0, {  6204,      0}, {0x50, 0x4a, 0xc1, 0xff}}},\n    {{{  3406,   3809,   3696}, 0, {  4088,    990}, {0x38, 0x59, 0xba, 0xff}}},\n    {{{  3399,   3911,   3689}, 0, {  4068,      0}, {0x39, 0x59, 0xbb, 0xff}}},\n    {{{  3683,   3961,   3972}, 0, {    28,      0}, {0x3f, 0x4a, 0xb0, 0xff}}},\n    {{{  3696,   3860,   3986}, 0, {     0,    990}, {0x22, 0x67, 0xbf, 0xff}}},\n    {{{  3821,   4010,   4110}, 0, {     8,      0}, {0x1d, 0x65, 0xbb, 0xff}}},\n};\n\n// 0x07019640 - 0x07019730\nstatic const Vtx ttm_seg7_vertex_07019640[] = {\n    {{{  4130,   4168,   4420}, 0, {  1112,    990}, {0x1e, 0x4b, 0x9f, 0xff}}},\n    {{{  4175,   4314,   4465}, 0, {  -100,      0}, {0x34, 0x47, 0xa5, 0xff}}},\n    {{{  4203,   4219,   4493}, 0, {     0,    990}, {0x17, 0x62, 0xb4, 0xff}}},\n    {{{  3841,   3912,   4130}, 0, {  1584,    990}, {0x38, 0x48, 0xa9, 0xff}}},\n    {{{  3922,   4058,   4211}, 0, {    40,      0}, {0x29, 0x53, 0xaa, 0xff}}},\n    {{{  3949,   3963,   4239}, 0, {     0,    990}, {0x26, 0x52, 0xa7, 0xff}}},\n    {{{  3821,   4010,   4110}, 0, {  1544,      0}, {0x1d, 0x65, 0xbb, 0xff}}},\n    {{{  3949,   3963,   4239}, 0, {  1112,    990}, {0x26, 0x52, 0xa7, 0xff}}},\n    {{{  3922,   4058,   4211}, 0, {  1040,      0}, {0x29, 0x53, 0xaa, 0xff}}},\n    {{{  3979,   4098,   4269}, 0, {   132,      0}, {0x1d, 0x4b, 0x9f, 0xff}}},\n    {{{  4022,   4014,   4311}, 0, {     0,    990}, {0x18, 0x45, 0x99, 0xff}}},\n    {{{  4022,   4014,   4311}, 0, {  2136,    990}, {0x18, 0x45, 0x99, 0xff}}},\n    {{{  3979,   4098,   4269}, 0, {  1972,      0}, {0x1d, 0x4b, 0x9f, 0xff}}},\n    {{{  4088,   4252,   4377}, 0, {  -192,      0}, {0x0c, 0x51, 0xa0, 0xff}}},\n    {{{  4130,   4168,   4420}, 0, {     0,    990}, {0x1e, 0x4b, 0x9f, 0xff}}},\n};\n\n// 0x07019730 - 0x07019820\nstatic const Vtx ttm_seg7_vertex_07019730[] = {\n    {{{  4456,   4321,   4746}, 0, {  2572,    990}, {0x32, 0x57, 0xb4, 0xff}}},\n    {{{  4620,   4472,   4909}, 0, {    16,      0}, {0x30, 0x56, 0xb1, 0xff}}},\n    {{{  4637,   4372,   4927}, 0, {     0,    990}, {0x30, 0x56, 0xb1, 0xff}}},\n    {{{  4130,   4168,   4420}, 0, {  1112,    990}, {0x1e, 0x4b, 0x9f, 0xff}}},\n    {{{  4088,   4252,   4377}, 0, {  1276,      0}, {0x0c, 0x51, 0xa0, 0xff}}},\n    {{{  4175,   4314,   4465}, 0, {  -100,      0}, {0x34, 0x47, 0xa5, 0xff}}},\n    {{{  4175,   4314,   4465}, 0, {  1656,      0}, {0x34, 0x47, 0xa5, 0xff}}},\n    {{{  4291,   4368,   4581}, 0, {   -68,      0}, {0x2d, 0x56, 0xaf, 0xff}}},\n    {{{  4312,   4270,   4601}, 0, {     0,    990}, {0x39, 0x49, 0xaa, 0xff}}},\n    {{{  4203,   4219,   4493}, 0, {  1584,    990}, {0x17, 0x62, 0xb4, 0xff}}},\n    {{{  4312,   4270,   4601}, 0, {  2076,    990}, {0x39, 0x49, 0xaa, 0xff}}},\n    {{{  4291,   4368,   4581}, 0, {  2116,      0}, {0x2d, 0x56, 0xaf, 0xff}}},\n    {{{  4440,   4421,   4730}, 0, {   -52,      0}, {0x30, 0x57, 0xb3, 0xff}}},\n    {{{  4456,   4321,   4746}, 0, {     0,    990}, {0x32, 0x57, 0xb4, 0xff}}},\n    {{{  4440,   4421,   4730}, 0, {  2596,      0}, {0x30, 0x57, 0xb3, 0xff}}},\n};\n\n// 0x07019820 - 0x07019910\nstatic const Vtx ttm_seg7_vertex_07019820[] = {\n    {{{  6759,   4986,   6179}, 0, {  2012,    990}, {0x06, 0xeb, 0x7c, 0xff}}},\n    {{{  6686,   4986,   6107}, 0, {  2012,      0}, {0x8d, 0xcc, 0x0a, 0xff}}},\n    {{{  6686,   4781,   6107}, 0, {     0,      0}, {0x88, 0x00, 0x28, 0xff}}},\n    {{{  4620,   4472,   4909}, 0, { 14104,      0}, {0x30, 0x56, 0xb1, 0xff}}},\n    {{{  5579,   4879,   5869}, 0, {     0,      0}, {0x38, 0x58, 0xb9, 0xff}}},\n    {{{  5600,   4781,   5890}, 0, {     0,    990}, {0x3d, 0x4a, 0xae, 0xff}}},\n    {{{  4637,   4372,   4927}, 0, { 14156,    990}, {0x30, 0x56, 0xb1, 0xff}}},\n    {{{  5672,   4781,   5962}, 0, {  2524,    990}, {0x6c, 0x00, 0xbf, 0xff}}},\n    {{{  5600,   5037,   5890}, 0, {     0,      0}, {0x58, 0xed, 0xa8, 0xff}}},\n    {{{  5672,   5037,   5962}, 0, {     0,    990}, {0x7b, 0xe5, 0x04, 0xff}}},\n    {{{  5600,   4781,   5890}, 0, {  2524,      0}, {0x3d, 0x4a, 0xae, 0xff}}},\n    {{{  6179,   4781,   5310}, 0, {     0,      0}, {0xb4, 0x4b, 0x43, 0xff}}},\n    {{{  6252,   5037,   5383}, 0, {  2524,    990}, {0xea, 0xf1, 0x7b, 0xff}}},\n    {{{  6179,   5037,   5310}, 0, {  2524,      0}, {0xab, 0xd9, 0x55, 0xff}}},\n    {{{  6252,   4781,   5383}, 0, {     0,    990}, {0xe8, 0x00, 0x7c, 0xff}}},\n};\n\n// 0x07019910 - 0x07019A00\nstatic const Vtx ttm_seg7_vertex_07019910[] = {\n    {{{    62,   2272,    352}, 0, {  2012,    990}, {0x4f, 0x4b, 0xc0, 0xff}}},\n    {{{    -9,   2246,    279}, 0, {  2268,      0}, {0x5b, 0x00, 0xa8, 0xff}}},\n    {{{    -9,   2528,    279}, 0, {  -540,      0}, {0x5a, 0xed, 0xa9, 0xff}}},\n    {{{  6759,   4986,   6179}, 0, {  2012,    990}, {0x06, 0xeb, 0x7c, 0xff}}},\n    {{{  6686,   4781,   6107}, 0, {     0,      0}, {0x88, 0x00, 0x28, 0xff}}},\n    {{{  6759,   4781,   6179}, 0, {     0,    990}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{  6396,   4986,   6397}, 0, {     0,      0}, {0x11, 0xe6, 0x86, 0xff}}},\n    {{{  6469,   4781,   6469}, 0, {  2012,    990}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{  6396,   4781,   6397}, 0, {  2012,      0}, {0xd8, 0x00, 0x88, 0xff}}},\n    {{{  6469,   4986,   6469}, 0, {     0,    990}, {0x73, 0xcc, 0xf6, 0xff}}},\n    {{{   642,   2528,   -226}, 0, {  2524,    990}, {0xea, 0xf1, 0x7b, 0xff}}},\n    {{{   569,   2246,   -299}, 0, {  -284,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   642,   2272,   -226}, 0, {     0,    990}, {0xcc, 0x3e, 0x61, 0xff}}},\n    {{{   569,   2528,   -299}, 0, {  2524,      0}, {0xab, 0xda, 0x55, 0xff}}},\n    {{{    62,   2528,    352}, 0, {  -540,    990}, {0x7a, 0xea, 0x16, 0xff}}},\n};\n\n// 0x07019A00 - 0x07019B00\nstatic const Vtx ttm_seg7_vertex_07019A00[] = {\n    {{{  5036,   4321,   4167}, 0, {     0,    990}, {0xb3, 0x57, 0x31, 0xff}}},\n    {{{  5020,   4421,   4151}, 0, {   -52,      0}, {0xb3, 0x57, 0x32, 0xff}}},\n    {{{  4871,   4368,   4002}, 0, {  2116,      0}, {0xb7, 0x61, 0x21, 0xff}}},\n    {{{  6179,   4877,   5310}, 0, {  -304,     72}, {0xc7, 0x59, 0x45, 0xff}}},\n    {{{  6158,   4879,   5290}, 0, {     0,      0}, {0xc2, 0x64, 0x2f, 0xff}}},\n    {{{  6179,   4781,   5310}, 0, {     0,    990}, {0xb4, 0x4b, 0x43, 0xff}}},\n    {{{  5217,   4372,   4348}, 0, { 14156,    990}, {0xb2, 0x57, 0x30, 0xff}}},\n    {{{  5199,   4472,   4330}, 0, { 14104,      0}, {0xb2, 0x57, 0x30, 0xff}}},\n    {{{  5217,   4372,   4348}, 0, {     0,    990}, {0xb2, 0x57, 0x30, 0xff}}},\n    {{{  5020,   4421,   4151}, 0, {  2596,      0}, {0xb3, 0x57, 0x32, 0xff}}},\n    {{{  5036,   4321,   4167}, 0, {  2572,    990}, {0xb3, 0x57, 0x31, 0xff}}},\n    {{{  5199,   4472,   4330}, 0, {    16,      0}, {0xb2, 0x57, 0x30, 0xff}}},\n    {{{  4891,   4270,   4022}, 0, {  2076,    990}, {0xaf, 0x55, 0x2d, 0xff}}},\n    {{{  4601,   4014,   3732}, 0, {     0,    990}, {0x9f, 0x4b, 0x1d, 0xff}}},\n    {{{  4558,   4098,   3689}, 0, {   132,      0}, {0x99, 0x45, 0x18, 0xff}}},\n    {{{  4501,   4058,   3632}, 0, {  1040,      0}, {0xa7, 0x52, 0x25, 0xff}}},\n};\n\n// 0x07019B00 - 0x07019BF0\nstatic const Vtx ttm_seg7_vertex_07019B00[] = {\n    {{{  4891,   4270,   4022}, 0, {     0,    990}, {0xaf, 0x55, 0x2d, 0xff}}},\n    {{{  4754,   4314,   3885}, 0, {  1656,      0}, {0xa7, 0x52, 0x25, 0xff}}},\n    {{{  4782,   4219,   3913}, 0, {  1584,    990}, {0xa7, 0x52, 0x26, 0xff}}},\n    {{{  4871,   4368,   4002}, 0, {   -68,      0}, {0xb7, 0x61, 0x21, 0xff}}},\n    {{{  4782,   4219,   3913}, 0, {     0,    990}, {0xa7, 0x52, 0x26, 0xff}}},\n    {{{  4667,   4252,   3798}, 0, {  1276,      0}, {0x99, 0x38, 0x2e, 0xff}}},\n    {{{  4710,   4168,   3841}, 0, {  1112,    990}, {0x99, 0x45, 0x18, 0xff}}},\n    {{{  4754,   4314,   3885}, 0, {  -100,      0}, {0xa7, 0x52, 0x25, 0xff}}},\n    {{{  4710,   4168,   3841}, 0, {     0,    990}, {0x99, 0x45, 0x18, 0xff}}},\n    {{{  4558,   4098,   3689}, 0, {  1972,      0}, {0x99, 0x45, 0x18, 0xff}}},\n    {{{  4601,   4014,   3732}, 0, {  2136,    990}, {0x9f, 0x4b, 0x1d, 0xff}}},\n    {{{  4667,   4252,   3798}, 0, {  -192,      0}, {0x99, 0x38, 0x2e, 0xff}}},\n    {{{  4275,   3860,   3406}, 0, {     0,    990}, {0xb6, 0x58, 0x35, 0xff}}},\n    {{{  4262,   3961,   3393}, 0, {    28,      0}, {0xb4, 0x57, 0x32, 0xff}}},\n    {{{  3978,   3911,   3109}, 0, {  4068,      0}, {0xba, 0x59, 0x38, 0xff}}},\n};\n\n// 0x07019BF0 - 0x07019CD0\nstatic const Vtx ttm_seg7_vertex_07019BF0[] = {\n    {{{  4601,   4014,   3732}, 0, {     0,    990}, {0x9f, 0x4b, 0x1d, 0xff}}},\n    {{{  4501,   4058,   3632}, 0, {  1040,      0}, {0xa7, 0x52, 0x25, 0xff}}},\n    {{{  4529,   3963,   3660}, 0, {  1112,    990}, {0xaa, 0x53, 0x28, 0xff}}},\n    {{{  4529,   3963,   3660}, 0, {     0,    990}, {0xaa, 0x53, 0x28, 0xff}}},\n    {{{  4400,   4010,   3531}, 0, {  1544,      0}, {0xae, 0x55, 0x2c, 0xff}}},\n    {{{  4420,   3912,   3551}, 0, {  1584,    990}, {0xb0, 0x56, 0x2e, 0xff}}},\n    {{{  4501,   4058,   3632}, 0, {    40,      0}, {0xa7, 0x52, 0x25, 0xff}}},\n    {{{  4420,   3912,   3551}, 0, {     0,    990}, {0xb0, 0x56, 0x2e, 0xff}}},\n    {{{  4262,   3961,   3393}, 0, {  2012,      0}, {0xb4, 0x57, 0x32, 0xff}}},\n    {{{  4275,   3860,   3406}, 0, {  2076,    990}, {0xb6, 0x58, 0x35, 0xff}}},\n    {{{  4400,   4010,   3531}, 0, {     8,      0}, {0xae, 0x55, 0x2c, 0xff}}},\n    {{{  4275,   3860,   3406}, 0, {     0,    990}, {0xb6, 0x58, 0x35, 0xff}}},\n    {{{  3978,   3911,   3109}, 0, {  4068,      0}, {0xba, 0x59, 0x38, 0xff}}},\n    {{{  3986,   3809,   3117}, 0, {  4088,    990}, {0xbb, 0x59, 0x39, 0xff}}},\n};\n\n// 0x07019CD0 - 0x07019DC0\nstatic const Vtx ttm_seg7_vertex_07019CD0[] = {\n    {{{  3298,   3656,   2429}, 0, {     0,    990}, {0xa7, 0x51, 0x25, 0xff}}},\n    {{{  3183,   3689,   2314}, 0, {  1276,      0}, {0x9e, 0x4a, 0x1d, 0xff}}},\n    {{{  3225,   3604,   2356}, 0, {  1112,    990}, {0x99, 0x45, 0x18, 0xff}}},\n    {{{  3986,   3809,   3117}, 0, {     0,    990}, {0xbb, 0x59, 0x39, 0xff}}},\n    {{{  3978,   3911,   3109}, 0, {   -12,      0}, {0xba, 0x59, 0x38, 0xff}}},\n    {{{  3539,   3859,   2670}, 0, {  6204,      0}, {0xd7, 0x47, 0x60, 0xff}}},\n    {{{  3551,   3758,   2682}, 0, {  6120,    990}, {0xb5, 0x58, 0x33, 0xff}}},\n    {{{  3551,   3758,   2682}, 0, {     0,    990}, {0xb5, 0x58, 0x33, 0xff}}},\n    {{{  3386,   3805,   2517}, 0, {  2116,      0}, {0xb0, 0x56, 0x2e, 0xff}}},\n    {{{  3406,   3707,   2537}, 0, {  2076,    990}, {0xae, 0x55, 0x2d, 0xff}}},\n    {{{  3539,   3859,   2670}, 0, {  -112,      0}, {0xd7, 0x47, 0x60, 0xff}}},\n    {{{  3406,   3707,   2537}, 0, {     0,    990}, {0xae, 0x55, 0x2d, 0xff}}},\n    {{{  3270,   3751,   2401}, 0, {  1656,      0}, {0xaa, 0x53, 0x28, 0xff}}},\n    {{{  3298,   3656,   2429}, 0, {  1584,    990}, {0xa7, 0x51, 0x25, 0xff}}},\n    {{{  3386,   3805,   2517}, 0, {   -68,      0}, {0xb0, 0x56, 0x2e, 0xff}}},\n};\n\n// 0x07019DC0 - 0x07019EB0\nstatic const Vtx ttm_seg7_vertex_07019DC0[] = {\n    {{{  2972,   3297,   2103}, 0, {     0,    990}, {0xb4, 0x62, 0x17, 0xff}}},\n    {{{  2944,   3392,   2075}, 0, {    40,      0}, {0xa3, 0x45, 0x31, 0xff}}},\n    {{{  2863,   3246,   1994}, 0, {  1584,    990}, {0xb0, 0x56, 0x2e, 0xff}}},\n    {{{  3298,   3656,   2429}, 0, {     0,    990}, {0xa7, 0x51, 0x25, 0xff}}},\n    {{{  3270,   3751,   2401}, 0, {  -100,      0}, {0xaa, 0x53, 0x28, 0xff}}},\n    {{{  3183,   3689,   2314}, 0, {  1276,      0}, {0x9e, 0x4a, 0x1d, 0xff}}},\n    {{{  3225,   3604,   2356}, 0, {     0,    990}, {0x99, 0x45, 0x18, 0xff}}},\n    {{{  3183,   3689,   2314}, 0, {  -192,      0}, {0x9e, 0x4a, 0x1d, 0xff}}},\n    {{{  3002,   3433,   2133}, 0, {  3416,      0}, {0x99, 0x45, 0x18, 0xff}}},\n    {{{  3044,   3348,   2175}, 0, {  3580,    990}, {0x9f, 0x4b, 0x1d, 0xff}}},\n    {{{  3044,   3348,   2175}, 0, {     0,    990}, {0x9f, 0x4b, 0x1d, 0xff}}},\n    {{{  2944,   3392,   2075}, 0, {  1040,      0}, {0xa3, 0x45, 0x31, 0xff}}},\n    {{{  2972,   3297,   2103}, 0, {  1112,    990}, {0xb4, 0x62, 0x17, 0xff}}},\n    {{{  3002,   3433,   2133}, 0, {   132,      0}, {0x99, 0x45, 0x18, 0xff}}},\n    {{{  2843,   3344,   1974}, 0, {  1544,      0}, {0xae, 0x55, 0x2c, 0xff}}},\n};\n\n// 0x07019EB0 - 0x07019FA0\nstatic const Vtx ttm_seg7_vertex_07019EB0[] = {\n    {{{  2284,   3092,   1415}, 0, {     0,    990}, {0xa9, 0x52, 0x27, 0xff}}},\n    {{{  2259,   3189,   1390}, 0, {  -140,      0}, {0xad, 0x54, 0x2b, 0xff}}},\n    {{{  1170,   2419,    301}, 0, { 17036,      0}, {0xa7, 0x52, 0x25, 0xff}}},\n    {{{  2843,   3344,   1974}, 0, {     8,      0}, {0xae, 0x55, 0x2c, 0xff}}},\n    {{{  2705,   3296,   1836}, 0, {  2012,      0}, {0xc0, 0x67, 0x22, 0xff}}},\n    {{{  2719,   3195,   1850}, 0, {  2076,    990}, {0xb0, 0x4b, 0x3f, 0xff}}},\n    {{{  2863,   3246,   1994}, 0, {     0,    990}, {0xb0, 0x56, 0x2e, 0xff}}},\n    {{{  2719,   3195,   1850}, 0, {     0,    990}, {0xb0, 0x4b, 0x3f, 0xff}}},\n    {{{  2705,   3296,   1836}, 0, {    28,      0}, {0xc0, 0x67, 0x22, 0xff}}},\n    {{{  2416,   3245,   1547}, 0, {  4148,      0}, {0xb7, 0x58, 0x35, 0xff}}},\n    {{{  2429,   3144,   1560}, 0, {  4088,    990}, {0xb4, 0x57, 0x32, 0xff}}},\n    {{{  2429,   3144,   1560}, 0, {     0,    990}, {0xb4, 0x57, 0x32, 0xff}}},\n    {{{  2416,   3245,   1547}, 0, {   -88,      0}, {0xb7, 0x58, 0x35, 0xff}}},\n    {{{  2259,   3189,   1390}, 0, {  2188,      0}, {0xad, 0x54, 0x2b, 0xff}}},\n    {{{  2284,   3092,   1415}, 0, {  2076,    990}, {0xa9, 0x52, 0x27, 0xff}}},\n};\n\n// 0x07019FA0 - 0x0701A090\nstatic const Vtx ttm_seg7_vertex_07019FA0[] = {\n    {{{   945,   2222,     76}, 0, {     0,    990}, {0xb7, 0x58, 0x35, 0xff}}},\n    {{{   931,   2323,     62}, 0, {    28,      0}, {0xb4, 0x57, 0x32, 0xff}}},\n    {{{   642,   2272,   -226}, 0, {  4148,      0}, {0xcc, 0x3e, 0x61, 0xff}}},\n    {{{  2284,   3092,   1415}, 0, {     0,    990}, {0xa9, 0x52, 0x27, 0xff}}},\n    {{{  1170,   2419,    301}, 0, { 17036,      0}, {0xa7, 0x52, 0x25, 0xff}}},\n    {{{  1198,   2324,    329}, 0, { 17108,    990}, {0xaa, 0x53, 0x28, 0xff}}},\n    {{{  1198,   2324,    329}, 0, {     0,    990}, {0xaa, 0x53, 0x28, 0xff}}},\n    {{{  1170,   2419,    301}, 0, {    40,      0}, {0xa7, 0x52, 0x25, 0xff}}},\n    {{{  1069,   2372,    200}, 0, {  1544,      0}, {0xaf, 0x56, 0x2d, 0xff}}},\n    {{{  1089,   2273,    220}, 0, {  1584,    990}, {0xb0, 0x56, 0x2e, 0xff}}},\n    {{{  1089,   2273,    220}, 0, {     0,    990}, {0xb0, 0x56, 0x2e, 0xff}}},\n    {{{  1069,   2372,    200}, 0, {     8,      0}, {0xaf, 0x56, 0x2d, 0xff}}},\n    {{{   931,   2323,     62}, 0, {  2012,      0}, {0xb4, 0x57, 0x32, 0xff}}},\n    {{{   945,   2222,     76}, 0, {  2076,    990}, {0xb7, 0x58, 0x35, 0xff}}},\n    {{{   655,   2171,   -213}, 0, {  4088,    990}, {0xc0, 0x67, 0x22, 0xff}}},\n};\n\n// 0x0701A090 - 0x0701A180\nstatic const Vtx ttm_seg7_vertex_0701A090[] = {\n    {{{   329,   2017,   -539}, 0, {     0,    990}, {0x99, 0x45, 0x18, 0xff}}},\n    {{{   286,   2101,   -582}, 0, {  -192,      0}, {0x9f, 0x4b, 0x1d, 0xff}}},\n    {{{   197,   1976,   -671}, 0, {  1580,      0}, {0x90, 0x38, 0x0e, 0xff}}},\n    {{{   655,   2171,   -213}, 0, {     0,    990}, {0xc0, 0x67, 0x22, 0xff}}},\n    {{{   642,   2272,   -226}, 0, {   -88,      0}, {0xcc, 0x3e, 0x61, 0xff}}},\n    {{{   510,   2120,   -358}, 0, {  2076,    990}, {0xa9, 0x48, 0x37, 0xff}}},\n    {{{   490,   2218,   -378}, 0, {  2116,      0}, {0xbb, 0x65, 0x1d, 0xff}}},\n    {{{   402,   2068,   -466}, 0, {     0,    990}, {0xa7, 0x52, 0x25, 0xff}}},\n    {{{   286,   2101,   -582}, 0, {  1276,      0}, {0x9f, 0x4b, 0x1d, 0xff}}},\n    {{{   329,   2017,   -539}, 0, {  1112,    990}, {0x99, 0x45, 0x18, 0xff}}},\n    {{{   374,   2163,   -494}, 0, {  -100,      0}, {0xaa, 0x53, 0x28, 0xff}}},\n    {{{   510,   2120,   -358}, 0, {     0,    990}, {0xa9, 0x48, 0x37, 0xff}}},\n    {{{   490,   2218,   -378}, 0, {   -68,      0}, {0xbb, 0x65, 0x1d, 0xff}}},\n    {{{   374,   2163,   -494}, 0, {  1656,      0}, {0xaa, 0x53, 0x28, 0xff}}},\n    {{{   402,   2068,   -466}, 0, {  1584,    990}, {0xa7, 0x52, 0x25, 0xff}}},\n};\n\n// 0x0701A180 - 0x0701A270\nstatic const Vtx ttm_seg7_vertex_0701A180[] = {\n    {{{   -68,   1096,   -937}, 0, {     0,    990}, {0x9e, 0x4a, 0x1d, 0xff}}},\n    {{{  -168,   1139,  -1037}, 0, {  1036,      0}, {0xa7, 0x51, 0x25, 0xff}}},\n    {{{  -141,   1044,  -1010}, 0, {  1112,    990}, {0xaa, 0x53, 0x28, 0xff}}},\n    {{{   329,   2017,   -539}, 0, {     0,    990}, {0x99, 0x45, 0x18, 0xff}}},\n    {{{   197,   1976,   -671}, 0, {  1580,      0}, {0x90, 0x38, 0x0e, 0xff}}},\n    {{{   257,   1915,   -611}, 0, {  1412,    990}, {0x8b, 0x30, 0x0a, 0xff}}},\n    {{{   257,   1915,   -611}, 0, {     0,    990}, {0x8b, 0x30, 0x0a, 0xff}}},\n    {{{   197,   1976,   -671}, 0, {  -192,      0}, {0x90, 0x38, 0x0e, 0xff}}},\n    {{{   -55,   1259,   -924}, 0, {  7800,      0}, {0x8b, 0x30, 0x0a, 0xff}}},\n    {{{     3,   1198,   -865}, 0, {  7968,    990}, {0x8f, 0x38, 0x0e, 0xff}}},\n    {{{     3,   1198,   -865}, 0, {     0,    990}, {0x8f, 0x38, 0x0e, 0xff}}},\n    {{{   -55,   1259,   -924}, 0, {   132,      0}, {0x8b, 0x30, 0x0a, 0xff}}},\n    {{{  -111,   1180,   -980}, 0, {  1248,      0}, {0x99, 0x45, 0x17, 0xff}}},\n    {{{   -68,   1096,   -937}, 0, {  1412,    990}, {0x9e, 0x4a, 0x1d, 0xff}}},\n    {{{  -111,   1180,   -980}, 0, {   132,      0}, {0x99, 0x45, 0x17, 0xff}}},\n};\n\n// 0x0701A270 - 0x0701A2F0\nstatic const Vtx ttm_seg7_vertex_0701A270[] = {\n    {{{  6252,   4781,   5383}, 0, {  8144,    990}, {0xe8, 0x00, 0x7c, 0xff}}},\n    {{{  6831,   4781,   5962}, 0, {     0,    990}, {0xc1, 0x59, 0x3f, 0xff}}},\n    {{{  6831,   4883,   5962}, 0, {     0,      0}, {0xc1, 0x59, 0x3f, 0xff}}},\n    {{{  6252,   4883,   5383}, 0, {  8144,      0}, {0xc1, 0x59, 0x3f, 0xff}}},\n    {{{  5672,   4883,   5962}, 0, {  8144,      0}, {0x28, 0x71, 0xd8, 0xff}}},\n    {{{  6252,   4883,   6541}, 0, {     0,      0}, {0x50, 0x38, 0xb0, 0xff}}},\n    {{{  5672,   4781,   5962}, 0, {  8144,    990}, {0x6c, 0x00, 0xbf, 0xff}}},\n    {{{  6252,   4781,   6541}, 0, {     0,    990}, {0x28, 0x71, 0xd8, 0xff}}},\n};\n\n// 0x0701A2F0 - 0x0701A330\nstatic const Vtx ttm_seg7_vertex_0701A2F0[] = {\n    {{{  7265,   5600,   5672}, 0, { 12232,   6098}, {0x15, 0xc3, 0x6c, 0xff}}},\n    {{{  7917,   5600,   6324}, 0, { 12232,  -3098}, {0x99, 0xb7, 0x00, 0xff}}},\n    {{{  6614,   5600,   7627}, 0, { -6160,  -3098}, {0x00, 0xb7, 0x99, 0xff}}},\n    {{{  5962,   5600,   6976}, 0, { -6160,   6098}, {0x67, 0xe8, 0x45, 0xff}}},\n};\n\n// 0x0701A330 - 0x0701A410\nstatic const Vtx ttm_seg7_vertex_0701A330[] = {\n    {{{  5817,   5344,   5817}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  5800,   5344,   5834}, 0, {  -148,      0}, {0x1c, 0x64, 0x49, 0xff}}},\n    {{{  5817,   5242,   5817}, 0, {     0,    990}, {0x54, 0xc1, 0x46, 0xff}}},\n    {{{  6107,   5344,   5528}, 0, {  2012,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  6107,   5242,   5528}, 0, {  2012,    990}, {0x2d, 0xac, 0x53, 0xff}}},\n    {{{  6124,   5344,   5511}, 0, {  2132,      0}, {0x4a, 0x57, 0x36, 0xff}}},\n    {{{  6252,   4781,   5383}, 0, {  2524,    990}, {0xe8, 0x00, 0x7c, 0xff}}},\n    {{{  6324,   5061,   5310}, 0, {  -268,      0}, {0x7b, 0x17, 0x15, 0xff}}},\n    {{{  6252,   5037,   5383}, 0, {     0,    990}, {0xea, 0xf1, 0x7b, 0xff}}},\n    {{{  6324,   4781,   5310}, 0, {  2524,      0}, {0x78, 0x00, 0xd8, 0xff}}},\n    {{{  6324,   5061,   5310}, 0, {  2372,      0}, {0x7b, 0x17, 0x15, 0xff}}},\n    {{{  6275,   5200,   5359}, 0, {   824,      0}, {0x6c, 0x42, 0xf9, 0xff}}},\n    {{{  6215,   5139,   5419}, 0, {   992,    990}, {0x1b, 0xd8, 0x75, 0xff}}},\n    {{{  6252,   5037,   5383}, 0, {  2132,    990}, {0xea, 0xf1, 0x7b, 0xff}}},\n};\n\n// 0x0701A410 - 0x0701A500\nstatic const Vtx ttm_seg7_vertex_0701A410[] = {\n    {{{  5745,   5191,   5890}, 0, {   692,    990}, {0x62, 0xb6, 0x1d, 0xff}}},\n    {{{  5702,   5275,   5933}, 0, {   856,      0}, {0x18, 0x45, 0x67, 0xff}}},\n    {{{  5649,   5200,   5985}, 0, {  -192,      0}, {0x0a, 0x30, 0x75, 0xff}}},\n    {{{  6215,   5139,   5419}, 0, {   692,    990}, {0x1b, 0xd8, 0x75, 0xff}}},\n    {{{  6222,   5275,   5412}, 0, {  -192,      0}, {0x61, 0x4b, 0x1d, 0xff}}},\n    {{{  6179,   5191,   5455}, 0, {     0,    990}, {0x18, 0xbb, 0x67, 0xff}}},\n    {{{  6275,   5200,   5359}, 0, {   856,      0}, {0x6c, 0x42, 0xf9, 0xff}}},\n    {{{  6179,   5191,   5455}, 0, {  1112,    990}, {0x18, 0xbb, 0x67, 0xff}}},\n    {{{  6124,   5344,   5511}, 0, {  -268,      0}, {0x4a, 0x57, 0x36, 0xff}}},\n    {{{  6107,   5242,   5528}, 0, {     0,    990}, {0x2d, 0xac, 0x53, 0xff}}},\n    {{{  6222,   5275,   5412}, 0, {  1276,      0}, {0x61, 0x4b, 0x1d, 0xff}}},\n    {{{  5817,   5242,   5817}, 0, {  2132,    990}, {0x54, 0xc1, 0x46, 0xff}}},\n    {{{  5702,   5275,   5933}, 0, {   824,      0}, {0x18, 0x45, 0x67, 0xff}}},\n    {{{  5745,   5191,   5890}, 0, {   988,    990}, {0x62, 0xb6, 0x1d, 0xff}}},\n    {{{  5800,   5344,   5834}, 0, {  2372,      0}, {0x1c, 0x64, 0x49, 0xff}}},\n};\n\n// 0x0701A500 - 0x0701A5F0\nstatic const Vtx ttm_seg7_vertex_0701A500[] = {\n    {{{  2960,   4115,   3250}, 0, {  2524,    990}, {0x7c, 0xe6, 0x04, 0xff}}},\n    {{{  2888,   3859,   3322}, 0, {     0,      0}, {0x2a, 0x6f, 0x2a, 0xff}}},\n    {{{  2960,   3859,   3250}, 0, {     0,    990}, {0x50, 0x4a, 0xc1, 0xff}}},\n    {{{  5745,   5191,   5890}, 0, {   692,    990}, {0x62, 0xb6, 0x1d, 0xff}}},\n    {{{  5649,   5200,   5985}, 0, {  -192,      0}, {0x0a, 0x30, 0x75, 0xff}}},\n    {{{  5709,   5139,   5926}, 0, {     0,    990}, {0x71, 0xc9, 0x0e, 0xff}}},\n    {{{  5709,   5139,   5926}, 0, {  1112,    990}, {0x71, 0xc9, 0x0e, 0xff}}},\n    {{{  5649,   5200,   5985}, 0, {  1276,      0}, {0x0a, 0x30, 0x75, 0xff}}},\n    {{{  5600,   5061,   6034}, 0, {  -268,      0}, {0x02, 0x0d, 0x7e, 0xff}}},\n    {{{  5672,   5037,   5962}, 0, {     0,    990}, {0x7b, 0xe5, 0x04, 0xff}}},\n    {{{  5672,   5037,   5962}, 0, {  2524,    990}, {0x7b, 0xe5, 0x04, 0xff}}},\n    {{{  5600,   4781,   6034}, 0, {     0,      0}, {0x28, 0x00, 0x78, 0xff}}},\n    {{{  5672,   4781,   5962}, 0, {     0,    990}, {0x6c, 0x00, 0xbf, 0xff}}},\n    {{{  5600,   5061,   6034}, 0, {  2764,      0}, {0x02, 0x0d, 0x7e, 0xff}}},\n    {{{  2888,   4140,   3322}, 0, {  2764,      0}, {0x5a, 0x00, 0x59, 0xff}}},\n};\n\n// 0x0701A5F0 - 0x0701A6E0\nstatic const Vtx ttm_seg7_vertex_0701A5F0[] = {\n    {{{  3395,   4320,   2815}, 0, {  3036,    990}, {0x2d, 0xac, 0x53, 0xff}}},\n    {{{  3088,   4423,   3122}, 0, { -1292,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3105,   4320,   3105}, 0, { -1052,    990}, {0x3e, 0x99, 0x27, 0xff}}},\n    {{{  2996,   4218,   3213}, 0, {  1112,    990}, {0x70, 0xc8, 0x0e, 0xff}}},\n    {{{  2888,   4140,   3322}, 0, {  -268,      0}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{  2960,   4115,   3250}, 0, {     0,    990}, {0x7c, 0xe6, 0x04, 0xff}}},\n    {{{  2937,   4278,   3273}, 0, {  1276,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3033,   4269,   3177}, 0, {  1712,    990}, {0x64, 0xc0, 0x2b, 0xff}}},\n    {{{  2937,   4278,   3273}, 0, {   824,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2996,   4218,   3213}, 0, {   992,    990}, {0x70, 0xc8, 0x0e, 0xff}}},\n    {{{  2990,   4353,   3220}, 0, {  1880,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3105,   4320,   3105}, 0, {  1112,    990}, {0x3e, 0x99, 0x27, 0xff}}},\n    {{{  3088,   4423,   3122}, 0, {  1352,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3033,   4269,   3177}, 0, {     0,    990}, {0x64, 0xc0, 0x2b, 0xff}}},\n    {{{  2990,   4353,   3220}, 0, {  -192,      0}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x0701A6E0 - 0x0701A7D0\nstatic const Vtx ttm_seg7_vertex_0701A6E0[] = {\n    {{{  3539,   4115,   2670}, 0, {  2132,    990}, {0x02, 0xf3, 0x7e, 0xff}}},\n    {{{  3612,   4140,   2598}, 0, {  2372,      0}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{  3563,   4278,   2647}, 0, {   824,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3395,   4320,   2815}, 0, {  3036,    990}, {0x2d, 0xac, 0x53, 0xff}}},\n    {{{  3412,   4423,   2798}, 0, {  3276,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3088,   4423,   3122}, 0, { -1292,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3467,   4269,   2743}, 0, {  1112,    990}, {0x17, 0xbb, 0x67, 0xff}}},\n    {{{  3412,   4423,   2798}, 0, {  -268,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3395,   4320,   2815}, 0, {     0,    990}, {0x2d, 0xac, 0x53, 0xff}}},\n    {{{  3510,   4353,   2700}, 0, {  1276,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3503,   4218,   2707}, 0, {  1712,    990}, {0x0a, 0xd0, 0x74, 0xff}}},\n    {{{  3563,   4278,   2647}, 0, {  1880,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3510,   4353,   2700}, 0, {   824,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3467,   4269,   2743}, 0, {   992,    990}, {0x17, 0xbb, 0x67, 0xff}}},\n    {{{  3503,   4218,   2707}, 0, {   992,    990}, {0x0a, 0xd0, 0x74, 0xff}}},\n};\n\n// 0x0701A7D0 - 0x0701A8C0\nstatic const Vtx ttm_seg7_vertex_0701A7D0[] = {\n    {{{   135,   2681,    279}, 0, {  1712,    990}, {0x62, 0xb6, 0x1d, 0xff}}},\n    {{{    39,   2691,    375}, 0, {   824,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{    99,   2630,    316}, 0, {   992,    990}, {0x6c, 0xbe, 0xf9, 0xff}}},\n    {{{  3539,   3859,   2670}, 0, {  2524,    990}, {0xd7, 0x47, 0x60, 0xff}}},\n    {{{  3612,   4140,   2598}, 0, {  -268,      0}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{  3539,   4115,   2670}, 0, {     0,    990}, {0x02, 0xf3, 0x7e, 0xff}}},\n    {{{  3612,   3859,   2598}, 0, {  2524,      0}, {0x0c, 0x7d, 0x0d, 0xff}}},\n    {{{    62,   2528,    352}, 0, {  2524,    990}, {0x7a, 0xea, 0x16, 0xff}}},\n    {{{    -9,   2552,    424}, 0, {  2764,      0}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{    -9,   2272,    424}, 0, {     0,      0}, {0x29, 0x71, 0x28, 0xff}}},\n    {{{    62,   2272,    352}, 0, {     0,    990}, {0x4f, 0x4b, 0xc0, 0xff}}},\n    {{{    39,   2691,    375}, 0, {  1276,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{    -9,   2552,    424}, 0, {  -268,      0}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{    62,   2528,    352}, 0, {     0,    990}, {0x7a, 0xea, 0x16, 0xff}}},\n    {{{    99,   2630,    316}, 0, {  1112,    990}, {0x6c, 0xbe, 0xf9, 0xff}}},\n};\n\n// 0x0701A8C0 - 0x0701A9B0\nstatic const Vtx ttm_seg7_vertex_0701A8C0[] = {\n    {{{   569,   2681,   -154}, 0, {  1112,    990}, {0x26, 0xc6, 0x69, 0xff}}},\n    {{{   612,   2765,   -197}, 0, {  1276,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   514,   2835,    -99}, 0, {  -268,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   135,   2681,    279}, 0, {  1712,    990}, {0x62, 0xb6, 0x1d, 0xff}}},\n    {{{    92,   2765,    322}, 0, {  1880,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{    39,   2691,    375}, 0, {   824,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   207,   2733,    207}, 0, {  1112,    990}, {0x49, 0xa9, 0x36, 0xff}}},\n    {{{    92,   2765,    322}, 0, {  -192,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   135,   2681,    279}, 0, {     0,    990}, {0x62, 0xb6, 0x1d, 0xff}}},\n    {{{   190,   2835,    224}, 0, {  1352,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   497,   2733,    -82}, 0, {  3036,    990}, {0x2c, 0xac, 0x53, 0xff}}},\n    {{{   190,   2835,    224}, 0, { -1292,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   207,   2733,    207}, 0, { -1052,    990}, {0x49, 0xa9, 0x36, 0xff}}},\n    {{{   514,   2835,    -99}, 0, {  3276,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   497,   2733,    -82}, 0, {     0,    990}, {0x2c, 0xac, 0x53, 0xff}}},\n};\n\n// 0x0701A9B0 - 0x0701AA70\nstatic const Vtx ttm_seg7_vertex_0701A9B0[] = {\n    {{{   665,   2691,   -250}, 0, {  1880,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   612,   2765,   -197}, 0, {   824,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   569,   2681,   -154}, 0, {   992,    990}, {0x26, 0xc6, 0x69, 0xff}}},\n    {{{   605,   2630,   -190}, 0, {  1712,    990}, {0x0a, 0xd0, 0x75, 0xff}}},\n    {{{   642,   2528,   -226}, 0, {  2132,    990}, {0xea, 0xf1, 0x7b, 0xff}}},\n    {{{   714,   2552,   -299}, 0, {  2372,      0}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{   605,   2630,   -190}, 0, {   992,    990}, {0x0a, 0xd0, 0x75, 0xff}}},\n    {{{   665,   2691,   -250}, 0, {   824,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   642,   2272,   -226}, 0, {  2524,    990}, {0xcc, 0x3e, 0x61, 0xff}}},\n    {{{   714,   2272,   -299}, 0, {  2524,      0}, {0x0b, 0x7d, 0x0b, 0xff}}},\n    {{{   714,   2552,   -299}, 0, {  -268,      0}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{   642,   2528,   -226}, 0, {     0,    990}, {0xea, 0xf1, 0x7b, 0xff}}},\n};\n\n// 0x0701AA70 - 0x0701AB50\nstatic const Vtx ttm_seg7_vertex_0701AA70[] = {\n    {{{  7265,   5600,   5672}, 0, { 10188,  -3098}, {0x15, 0xc3, 0x6c, 0xff}}},\n    {{{  5962,   5600,   6976}, 0, { -8204,  -3098}, {0x67, 0xe8, 0x45, 0xff}}},\n    {{{  6686,   5088,   6252}, 0, {  2012,   2010}, {0x22, 0xb6, 0x60, 0xff}}},\n    {{{  5962,   4781,   6976}, 0, { -8204,   5076}, {0x78, 0x00, 0xd8, 0xff}}},\n    {{{  6469,   4781,   6469}, 0, { -1052,   5076}, {0x7e, 0x00, 0x00, 0xff}}},\n    {{{  6469,   4986,   6469}, 0, { -1052,   3032}, {0x73, 0xcc, 0xf6, 0xff}}},\n    {{{  6541,   5088,   6397}, 0, {     0,   2010}, {0x46, 0x9d, 0x21, 0xff}}},\n    {{{  6759,   4986,   6179}, 0, {  3032,   3032}, {0x06, 0xeb, 0x7c, 0xff}}},\n    {{{  6759,   4781,   6179}, 0, {  3032,   5076}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{  7265,   4781,   5672}, 0, { 10188,   5076}, {0x28, 0x00, 0x78, 0xff}}},\n    {{{  7917,   4781,   6324}, 0, { -7180,   5076}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  6614,   4781,   7627}, 0, { 11212,   5076}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{  6614,   5600,   7627}, 0, { 11208,  -3098}, {0x00, 0xb7, 0x99, 0xff}}},\n    {{{  7917,   5600,   6324}, 0, { -7184,  -3098}, {0x99, 0xb7, 0x00, 0xff}}},\n};\n\n// 0x0701AB50 - 0x0701ABD0\nstatic const Vtx ttm_seg7_vertex_0701AB50[] = {\n    {{{  7917,   4781,   6324}, 0, {  5076,   4054}, {0x82, 0x00, 0x00, 0xff}}},\n    {{{  7265,   5600,   5672}, 0, { -4116,  -4120}, {0x15, 0xc3, 0x6c, 0xff}}},\n    {{{  7265,   4781,   5672}, 0, { -4116,   4054}, {0x28, 0x00, 0x78, 0xff}}},\n    {{{  7917,   5600,   6324}, 0, {  5076,  -4120}, {0x99, 0xb7, 0x00, 0xff}}},\n    {{{  5962,   4781,   6976}, 0, {  6100,    990}, {0x78, 0x00, 0xd8, 0xff}}},\n    {{{  5962,   5600,   6976}, 0, {  6100,  -7186}, {0x67, 0xe8, 0x45, 0xff}}},\n    {{{  6614,   5600,   7627}, 0, { -3092,  -7186}, {0x00, 0xb7, 0x99, 0xff}}},\n    {{{  6614,   4781,   7627}, 0, { -3092,    990}, {0x00, 0x00, 0x82, 0xff}}},\n};\n\n// 0x0701ABD0 - 0x0701ACC0\nstatic const Vtx ttm_seg7_vertex_0701ABD0[] = {\n    {{{  5728,   5344,   5762}, 0, {     0,      0}, {0xf3, 0x7d, 0x0d, 0xff}}},\n    {{{  5800,   5344,   5834}, 0, {     0,    990}, {0x1c, 0x64, 0x49, 0xff}}},\n    {{{  6124,   5344,   5511}, 0, {  4540,    990}, {0x4a, 0x57, 0x36, 0xff}}},\n    {{{   -96,   1139,  -1110}, 0, {-19444,    990}, {0xe0, 0x76, 0xe0, 0xff}}},\n    {{{ -2770,   -120,  -3784}, 0, { 20336,    990}, {0xe4, 0x78, 0xe4, 0xff}}},\n    {{{ -2842,   -120,  -3712}, 0, { 20336,      0}, {0xad, 0x55, 0x2b, 0xff}}},\n    {{{  -168,   1139,  -1037}, 0, {-19448,      0}, {0xa7, 0x51, 0x25, 0xff}}},\n    {{{  5528,   5061,   5962}, 0, {     0,      0}, {0xab, 0x26, 0x55, 0xff}}},\n    {{{  5649,   5200,   5985}, 0, {  1440,    990}, {0x0a, 0x30, 0x75, 0xff}}},\n    {{{  5577,   5200,   5913}, 0, {  1440,      0}, {0xba, 0x4f, 0x45, 0xff}}},\n    {{{  5600,   5061,   6034}, 0, {     0,    990}, {0x02, 0x0d, 0x7e, 0xff}}},\n    {{{  5702,   5275,   5933}, 0, {  2492,    990}, {0x18, 0x45, 0x67, 0xff}}},\n    {{{  5630,   5275,   5860}, 0, {  2492,      0}, {0xd0, 0x6b, 0x30, 0xff}}},\n    {{{  5800,   5344,   5834}, 0, {  3964,    990}, {0x1c, 0x64, 0x49, 0xff}}},\n    {{{  5728,   5344,   5762}, 0, {  3964,      0}, {0xf3, 0x7d, 0x0d, 0xff}}},\n};\n\n// 0x0701ACC0 - 0x0701ADB0\nstatic const Vtx ttm_seg7_vertex_0701ACC0[] = {\n    {{{  6252,   4877,   5238}, 0, { 14380,      0}, {0x06, 0x7e, 0x06, 0xff}}},\n    {{{  6158,   4879,   5290}, 0, { 14104,    990}, {0xc2, 0x64, 0x2f, 0xff}}},\n    {{{  6179,   4877,   5310}, 0, { 14380,    990}, {0xc7, 0x59, 0x45, 0xff}}},\n    {{{  5728,   5344,   5762}, 0, {     0,      0}, {0xf3, 0x7d, 0x0d, 0xff}}},\n    {{{  6124,   5344,   5511}, 0, {  4540,    990}, {0x4a, 0x57, 0x36, 0xff}}},\n    {{{  6052,   5344,   5438}, 0, {  4540,      0}, {0x1b, 0x79, 0xe5, 0xff}}},\n    {{{  6052,   5344,   5438}, 0, {     0,      0}, {0x1b, 0x79, 0xe5, 0xff}}},\n    {{{  6222,   5275,   5412}, 0, {  1440,    990}, {0x61, 0x4b, 0x1d, 0xff}}},\n    {{{  6150,   5275,   5340}, 0, {  1440,      0}, {0x38, 0x62, 0xc8, 0xff}}},\n    {{{  6124,   5344,   5511}, 0, {     0,    990}, {0x4a, 0x57, 0x36, 0xff}}},\n    {{{  6275,   5200,   5359}, 0, {  2492,    990}, {0x6c, 0x42, 0xf9, 0xff}}},\n    {{{  6203,   5200,   5287}, 0, {  2492,      0}, {0x4b, 0x44, 0xb5, 0xff}}},\n    {{{  6324,   5061,   5310}, 0, {  3964,    990}, {0x7b, 0x17, 0x15, 0xff}}},\n    {{{  6252,   5061,   5238}, 0, {  3964,      0}, {0x58, 0x13, 0xa8, 0xff}}},\n    {{{  6231,   4879,   5217}, 0, { 14104,      0}, {0xf6, 0x7e, 0xf6, 0xff}}},\n};\n\n// 0x0701ADB0 - 0x0701AEA0\nstatic const Vtx ttm_seg7_vertex_0701ADB0[] = {\n    {{{  5600,   4877,   5890}, 0, {  -304,    990}, {0x2d, 0x71, 0xde, 0xff}}},\n    {{{  5507,   4879,   5941}, 0, {     0,      0}, {0xf6, 0x7e, 0xf6, 0xff}}},\n    {{{  5528,   4877,   5962}, 0, {  -304,      0}, {0x06, 0x7e, 0x06, 0xff}}},\n    {{{  5579,   4879,   5869}, 0, {     0,    990}, {0x38, 0x58, 0xb9, 0xff}}},\n    {{{  5271,   4472,   4258}, 0, {     0,      0}, {0xeb, 0x7b, 0xeb, 0xff}}},\n    {{{  6158,   4879,   5290}, 0, { 14104,    990}, {0xc2, 0x64, 0x2f, 0xff}}},\n    {{{  6231,   4879,   5217}, 0, { 14104,      0}, {0xf6, 0x7e, 0xf6, 0xff}}},\n    {{{  5199,   4472,   4330}, 0, {     0,    990}, {0xb2, 0x57, 0x30, 0xff}}},\n    {{{  5271,   4472,   4258}, 0, {  2684,      0}, {0xeb, 0x7b, 0xeb, 0xff}}},\n    {{{  5092,   4421,   4078}, 0, {   112,      0}, {0xec, 0x7b, 0xec, 0xff}}},\n    {{{  5020,   4421,   4151}, 0, {   112,    990}, {0xb3, 0x57, 0x32, 0xff}}},\n    {{{  5199,   4472,   4330}, 0, {  2684,    990}, {0xb2, 0x57, 0x30, 0xff}}},\n    {{{  4943,   4368,   3929}, 0, { -2052,      0}, {0xe7, 0x79, 0xe8, 0xff}}},\n    {{{  4871,   4368,   4002}, 0, { -2052,    990}, {0xb7, 0x61, 0x21, 0xff}}},\n    {{{  4827,   4314,   3813}, 0, { -3780,      0}, {0xe0, 0x76, 0xe0, 0xff}}},\n};\n\n// 0x0701AEA0 - 0x0701AFA0\nstatic const Vtx ttm_seg7_vertex_0701AEA0[] = {\n    {{{  4827,   4314,   3813}, 0, { -3780,      0}, {0xe0, 0x76, 0xe0, 0xff}}},\n    {{{  4739,   4252,   3726}, 0, { -5136,      0}, {0xcc, 0x66, 0xcc, 0xff}}},\n    {{{  4754,   4314,   3885}, 0, { -3780,    990}, {0xa7, 0x52, 0x25, 0xff}}},\n    {{{  4871,   4368,   4002}, 0, { -2052,    990}, {0xb7, 0x61, 0x21, 0xff}}},\n    {{{  4667,   4252,   3798}, 0, { -5136,    990}, {0x99, 0x38, 0x2e, 0xff}}},\n    {{{  4739,   4252,   3726}, 0, { 10268,      0}, {0xcc, 0x66, 0xcc, 0xff}}},\n    {{{  4631,   4098,   3617}, 0, {  8312,      0}, {0xd0, 0x6b, 0xd0, 0xff}}},\n    {{{  4558,   4098,   3689}, 0, {  8312,    990}, {0x99, 0x45, 0x18, 0xff}}},\n    {{{  4667,   4252,   3798}, 0, { 10268,    990}, {0x99, 0x38, 0x2e, 0xff}}},\n    {{{  4501,   4058,   3632}, 0, {  7416,    990}, {0xa7, 0x52, 0x25, 0xff}}},\n    {{{  4573,   4058,   3560}, 0, {  7416,      0}, {0xe0, 0x76, 0xe0, 0xff}}},\n    {{{  3612,   3859,   2598}, 0, {  5284,      0}, {0x0c, 0x7d, 0x0d, 0xff}}},\n    {{{  3459,   3805,   2445}, 0, {  3064,      0}, {0xe7, 0x79, 0xe6, 0xff}}},\n    {{{  3386,   3805,   2517}, 0, {  3064,    990}, {0xb0, 0x56, 0x2e, 0xff}}},\n    {{{  4472,   4010,   3459}, 0, {  5912,      0}, {0xe8, 0x7a, 0xe8, 0xff}}},\n    {{{  4400,   4010,   3531}, 0, {  5912,    990}, {0xae, 0x55, 0x2c, 0xff}}},\n};\n\n// 0x0701AFA0 - 0x0701B0A0\nstatic const Vtx ttm_seg7_vertex_0701AFA0[] = {\n    {{{  4472,   4010,   3459}, 0, {  5912,      0}, {0xe8, 0x7a, 0xe8, 0xff}}},\n    {{{  4262,   3961,   3393}, 0, {  3916,    990}, {0xb4, 0x57, 0x32, 0xff}}},\n    {{{  4400,   4010,   3531}, 0, {  5912,    990}, {0xae, 0x55, 0x2c, 0xff}}},\n    {{{  4334,   3961,   3321}, 0, {  3916,      0}, {0xf2, 0x7d, 0xf2, 0xff}}},\n    {{{  3978,   3911,   3109}, 0, {     0,    990}, {0xba, 0x59, 0x38, 0xff}}},\n    {{{  4051,   3911,   3037}, 0, {     0,      0}, {0xf8, 0x7e, 0xf8, 0xff}}},\n    {{{  4051,   3911,   3037}, 0, {  6184,      0}, {0xf8, 0x7e, 0xf8, 0xff}}},\n    {{{  3539,   3859,   2670}, 0, {     0,    990}, {0xd7, 0x47, 0x60, 0xff}}},\n    {{{  3978,   3911,   3109}, 0, {  6184,    990}, {0xba, 0x59, 0x38, 0xff}}},\n    {{{  3612,   3859,   2598}, 0, {     0,      0}, {0x0c, 0x7d, 0x0d, 0xff}}},\n    {{{  3074,   3433,   2060}, 0, { -1632,      0}, {0xd0, 0x6a, 0xd0, 0xff}}},\n    {{{  3017,   3392,   2003}, 0, { -2532,      0}, {0xe0, 0x76, 0xe0, 0xff}}},\n    {{{  2944,   3392,   2075}, 0, { -2532,    990}, {0xa3, 0x45, 0x31, 0xff}}},\n    {{{  3459,   3805,   2445}, 0, {  3064,      0}, {0xe7, 0x79, 0xe6, 0xff}}},\n    {{{  3270,   3751,   2401}, 0, {  1336,    990}, {0xaa, 0x53, 0x28, 0xff}}},\n    {{{  3386,   3805,   2517}, 0, {  3064,    990}, {0xb0, 0x56, 0x2e, 0xff}}},\n};\n\n// 0x0701B0A0 - 0x0701B1A0\nstatic const Vtx ttm_seg7_vertex_0701B0A0[] = {\n    {{{  3459,   3805,   2445}, 0, {  3064,      0}, {0xe7, 0x79, 0xe6, 0xff}}},\n    {{{  3342,   3751,   2329}, 0, {  1336,      0}, {0xdc, 0x74, 0xdc, 0xff}}},\n    {{{  3270,   3751,   2401}, 0, {  1336,    990}, {0xaa, 0x53, 0x28, 0xff}}},\n    {{{  3612,   3859,   2598}, 0, {  5284,      0}, {0x0c, 0x7d, 0x0d, 0xff}}},\n    {{{  3386,   3805,   2517}, 0, {  3064,    990}, {0xb0, 0x56, 0x2e, 0xff}}},\n    {{{  3539,   3859,   2670}, 0, {  5284,    990}, {0xd7, 0x47, 0x60, 0xff}}},\n    {{{  3183,   3689,   2314}, 0, {     0,    990}, {0x9e, 0x4a, 0x1d, 0xff}}},\n    {{{  3255,   3689,   2241}, 0, {     0,      0}, {0xc8, 0x62, 0xc9, 0xff}}},\n    {{{  3255,   3689,   2241}, 0, {  1664,      0}, {0xc8, 0x62, 0xc9, 0xff}}},\n    {{{  3002,   3433,   2133}, 0, { -1632,    990}, {0x99, 0x45, 0x18, 0xff}}},\n    {{{  3183,   3689,   2314}, 0, {  1664,    990}, {0x9e, 0x4a, 0x1d, 0xff}}},\n    {{{  3074,   3433,   2060}, 0, { -1632,      0}, {0xd0, 0x6a, 0xd0, 0xff}}},\n    {{{  2944,   3392,   2075}, 0, { -2532,    990}, {0xa3, 0x45, 0x31, 0xff}}},\n    {{{  3017,   3392,   2003}, 0, { -2532,      0}, {0xe0, 0x76, 0xe0, 0xff}}},\n    {{{  2843,   3344,   1974}, 0, { -4036,    990}, {0xae, 0x55, 0x2c, 0xff}}},\n    {{{  2916,   3344,   1902}, 0, { -4036,      0}, {0xe9, 0x7a, 0xe8, 0xff}}},\n};\n\n// 0x0701B1A0 - 0x0701B2A0\nstatic const Vtx ttm_seg7_vertex_0701B1A0[] = {\n    {{{  2916,   3344,   1902}, 0, { -4036,      0}, {0xe9, 0x7a, 0xe8, 0xff}}},\n    {{{  2778,   3296,   1764}, 0, { -6028,      0}, {0xf2, 0x7d, 0xf2, 0xff}}},\n    {{{  2705,   3296,   1836}, 0, { -6028,    990}, {0xc0, 0x67, 0x22, 0xff}}},\n    {{{  2843,   3344,   1974}, 0, { -4036,    990}, {0xae, 0x55, 0x2c, 0xff}}},\n    {{{  2416,   3245,   1547}, 0, {-10028,    990}, {0xb7, 0x58, 0x35, 0xff}}},\n    {{{  2488,   3245,   1474}, 0, {-10028,      0}, {0xee, 0x7c, 0xee, 0xff}}},\n    {{{  2331,   3189,   1317}, 0, {-12292,      0}, {0xde, 0x75, 0xde, 0xff}}},\n    {{{  2259,   3189,   1390}, 0, {-12292,    990}, {0xad, 0x54, 0x2b, 0xff}}},\n    {{{  2331,   3189,   1317}, 0, { 17148,      0}, {0xde, 0x75, 0xde, 0xff}}},\n    {{{  1170,   2419,    301}, 0, {     0,    990}, {0xa7, 0x52, 0x25, 0xff}}},\n    {{{  2259,   3189,   1390}, 0, { 17148,    990}, {0xad, 0x54, 0x2b, 0xff}}},\n    {{{  1243,   2419,    229}, 0, {     0,      0}, {0xe1, 0x76, 0xe0, 0xff}}},\n    {{{  1243,   2419,    229}, 0, {  5692,      0}, {0xe1, 0x76, 0xe0, 0xff}}},\n    {{{  1142,   2372,    128}, 0, {  4196,      0}, {0xe9, 0x7a, 0xe8, 0xff}}},\n    {{{  1069,   2372,    200}, 0, {  4196,    990}, {0xaf, 0x56, 0x2d, 0xff}}},\n    {{{  1170,   2419,    301}, 0, {  5692,    990}, {0xa7, 0x52, 0x25, 0xff}}},\n};\n\n// 0x0701B2A0 - 0x0701B3A0\nstatic const Vtx ttm_seg7_vertex_0701B2A0[] = {\n    {{{  1142,   2372,    128}, 0, {  4196,      0}, {0xe9, 0x7a, 0xe8, 0xff}}},\n    {{{   931,   2323,     62}, 0, {  2192,    990}, {0xb4, 0x57, 0x32, 0xff}}},\n    {{{  1069,   2372,    200}, 0, {  4196,    990}, {0xaf, 0x56, 0x2d, 0xff}}},\n    {{{  1004,   2323,     -9}, 0, {  2192,      0}, {0xf2, 0x7d, 0xf2, 0xff}}},\n    {{{   714,   2272,   -299}, 0, { -1908,      0}, {0x0b, 0x7d, 0x0b, 0xff}}},\n    {{{   642,   2272,   -226}, 0, { -1908,    990}, {0xcc, 0x3e, 0x61, 0xff}}},\n    {{{   490,   2218,   -378}, 0, { -4116,    990}, {0xbb, 0x65, 0x1d, 0xff}}},\n    {{{   562,   2218,   -451}, 0, { -4116,      0}, {0xe6, 0x79, 0xe6, 0xff}}},\n    {{{   562,   2218,   -451}, 0, {  1688,      0}, {0xe6, 0x79, 0xe6, 0xff}}},\n    {{{   374,   2163,   -494}, 0, {     0,    990}, {0xaa, 0x53, 0x28, 0xff}}},\n    {{{   490,   2218,   -378}, 0, {  1688,    990}, {0xbb, 0x65, 0x1d, 0xff}}},\n    {{{   446,   2163,   -567}, 0, {     0,      0}, {0xdc, 0x74, 0xdc, 0xff}}},\n    {{{   286,   2101,   -582}, 0, { -1376,    990}, {0x9f, 0x4b, 0x1d, 0xff}}},\n    {{{   359,   2101,   -654}, 0, { -1376,      0}, {0xc9, 0x62, 0xc8, 0xff}}},\n    {{{   197,   1976,   -671}, 0, { -3096,    990}, {0x90, 0x38, 0x0e, 0xff}}},\n    {{{   270,   1976,   -743}, 0, { -3096,      0}, {0xb5, 0x44, 0xb5, 0xff}}},\n};\n\n// 0x0701B3A0 - 0x0701B4A0\nstatic const Vtx ttm_seg7_vertex_0701B3A0[] = {\n    {{{   270,   1976,   -743}, 0, {  2632,      0}, {0xb5, 0x44, 0xb5, 0xff}}},\n    {{{    16,   1259,   -997}, 0, { -5328,      0}, {0xba, 0x4f, 0xbb, 0xff}}},\n    {{{   -55,   1259,   -924}, 0, { -5328,    990}, {0x8b, 0x30, 0x0a, 0xff}}},\n    {{{   197,   1976,   -671}, 0, {  2632,    990}, {0x90, 0x38, 0x0e, 0xff}}},\n    {{{  -111,   1180,   -980}, 0, { -6412,    990}, {0x99, 0x45, 0x17, 0xff}}},\n    {{{   -39,   1180,  -1052}, 0, { -6412,      0}, {0xcf, 0x6a, 0xd0, 0xff}}},\n    {{{  -168,   1139,  -1037}, 0, { -7184,    990}, {0xa7, 0x51, 0x25, 0xff}}},\n    {{{   -96,   1139,  -1110}, 0, { -7184,      0}, {0xe0, 0x76, 0xe0, 0xff}}},\n    {{{  -292,   2101,     -3}, 0, {  3188,    990}, {0x17, 0x45, 0x99, 0xff}}},\n    {{{  -453,   1976,    -19}, 0, {  4860,      0}, {0xba, 0x4f, 0xbb, 0xff}}},\n    {{{  -364,   2101,     69}, 0, {  3188,      0}, {0xd0, 0x6a, 0xd0, 0xff}}},\n    {{{  -634,   1259,   -345}, 0, {     0,    990}, {0xf9, 0x41, 0x94, 0xff}}},\n    {{{  -690,   1180,   -401}, 0, {  1072,    990}, {0x2b, 0x3f, 0x9b, 0xff}}},\n    {{{  -763,   1180,   -328}, 0, {  1072,      0}, {0xc8, 0x62, 0xc8, 0xff}}},\n    {{{  -820,   1139,   -386}, 0, {  1960,      0}, {0xdc, 0x74, 0xdc, 0xff}}},\n    {{{  -748,   1139,   -458}, 0, {  1960,    990}, {0x16, 0x62, 0xb3, 0xff}}},\n};\n\n// 0x0701B4A0 - 0x0701B5A0\nstatic const Vtx ttm_seg7_vertex_0701B4A0[] = {\n    {{{  -634,   1259,   -345}, 0, {     0,    990}, {0xf9, 0x41, 0x94, 0xff}}},\n    {{{  -763,   1180,   -328}, 0, {  1072,      0}, {0xc8, 0x62, 0xc8, 0xff}}},\n    {{{  -707,   1259,   -273}, 0, {     0,      0}, {0xb5, 0x44, 0xb5, 0xff}}},\n    {{{  -381,   1976,    -92}, 0, {     0,    990}, {0x0b, 0x30, 0x8c, 0xff}}},\n    {{{  -707,   1259,   -273}, 0, {  7968,      0}, {0xb5, 0x44, 0xb5, 0xff}}},\n    {{{  -453,   1976,    -19}, 0, {     0,      0}, {0xba, 0x4f, 0xbb, 0xff}}},\n    {{{  -634,   1259,   -345}, 0, {  7968,    990}, {0xf9, 0x41, 0x94, 0xff}}},\n    {{{  -292,   2101,     -3}, 0, {  3188,    990}, {0x17, 0x45, 0x99, 0xff}}},\n    {{{  -381,   1976,    -92}, 0, {  4860,    990}, {0x0b, 0x30, 0x8c, 0xff}}},\n    {{{  -453,   1976,    -19}, 0, {  4860,      0}, {0xba, 0x4f, 0xbb, 0xff}}},\n    {{{  -205,   2163,     84}, 0, {  1804,    990}, {0x25, 0x52, 0xa7, 0xff}}},\n    {{{  -364,   2101,     69}, 0, {  3188,      0}, {0xd0, 0x6a, 0xd0, 0xff}}},\n    {{{   490,   2372,    779}, 0, {  1460,    990}, {0x1d, 0x65, 0xba, 0xff}}},\n    {{{   280,   2323,    714}, 0, {  3464,      0}, {0xee, 0x7c, 0xee, 0xff}}},\n    {{{   417,   2372,    852}, 0, {  1460,      0}, {0xe6, 0x79, 0xe7, 0xff}}},\n    {{{  -277,   2163,    156}, 0, {  1804,      0}, {0xe0, 0x76, 0xe0, 0xff}}},\n};\n\n// 0x0701B5A0 - 0x0701B6A0\nstatic const Vtx ttm_seg7_vertex_0701B5A0[] = {\n    {{{   -88,   2218,    200}, 0, {    88,    990}, {0x38, 0x48, 0xa9, 0xff}}},\n    {{{  -205,   2163,     84}, 0, {  1804,    990}, {0x25, 0x52, 0xa7, 0xff}}},\n    {{{  -277,   2163,    156}, 0, {  1804,      0}, {0xe0, 0x76, 0xe0, 0xff}}},\n    {{{  -161,   2218,    273}, 0, {    88,      0}, {0xe8, 0x7a, 0xe8, 0xff}}},\n    {{{    62,   2272,    352}, 0, { -2072,    990}, {0x4f, 0x4b, 0xc0, 0xff}}},\n    {{{    -9,   2272,    424}, 0, { -2072,      0}, {0x29, 0x71, 0x28, 0xff}}},\n    {{{   490,   2372,    779}, 0, {  1460,    990}, {0x1d, 0x65, 0xba, 0xff}}},\n    {{{   352,   2323,    642}, 0, {  3464,    990}, {0x3f, 0x4b, 0xb0, 0xff}}},\n    {{{   280,   2323,    714}, 0, {  3464,      0}, {0xee, 0x7c, 0xee, 0xff}}},\n    {{{    -9,   2272,    424}, 0, {  7572,      0}, {0x29, 0x71, 0x28, 0xff}}},\n    {{{    62,   2272,    352}, 0, {  7572,    990}, {0x4f, 0x4b, 0xc0, 0xff}}},\n    {{{  1836,   3245,   2126}, 0, {  7572,    990}, {0x32, 0x58, 0xb4, 0xff}}},\n    {{{  1680,   3189,   1969}, 0, {  9852,    990}, {0x27, 0x52, 0xa9, 0xff}}},\n    {{{  1607,   3189,   2042}, 0, {  9852,      0}, {0xe4, 0x78, 0xe4, 0xff}}},\n    {{{   591,   2419,    880}, 0, {     0,    990}, {0x28, 0x53, 0xaa, 0xff}}},\n    {{{   417,   2372,    852}, 0, {  1460,      0}, {0xe6, 0x79, 0xe7, 0xff}}},\n};\n\n// 0x0701B6A0 - 0x0701B7A0\nstatic const Vtx ttm_seg7_vertex_0701B6A0[] = {\n    {{{   591,   2419,    880}, 0, {     0,    990}, {0x28, 0x53, 0xaa, 0xff}}},\n    {{{   417,   2372,    852}, 0, {  1460,      0}, {0xe6, 0x79, 0xe7, 0xff}}},\n    {{{   519,   2419,    953}, 0, {     0,      0}, {0xdc, 0x74, 0xdc, 0xff}}},\n    {{{  1680,   3189,   1969}, 0, {     0,    990}, {0x27, 0x52, 0xa9, 0xff}}},\n    {{{   519,   2419,    953}, 0, { 17148,      0}, {0xdc, 0x74, 0xdc, 0xff}}},\n    {{{  1607,   3189,   2042}, 0, {     0,      0}, {0xe4, 0x78, 0xe4, 0xff}}},\n    {{{   591,   2419,    880}, 0, { 17148,    990}, {0x28, 0x53, 0xaa, 0xff}}},\n    {{{  2126,   3296,   2416}, 0, {  3468,    990}, {0x35, 0x58, 0xb7, 0xff}}},\n    {{{  1836,   3245,   2126}, 0, {  7572,    990}, {0x32, 0x58, 0xb4, 0xff}}},\n    {{{  1764,   3245,   2198}, 0, {  7572,      0}, {0xf2, 0x7d, 0xf2, 0xff}}},\n    {{{  1607,   3189,   2042}, 0, {  9852,      0}, {0xe4, 0x78, 0xe4, 0xff}}},\n    {{{  2603,   3689,   2893}, 0, {  -716,    990}, {0x18, 0x45, 0x99, 0xff}}},\n    {{{  2350,   3433,   2784}, 0, {  2864,      0}, {0xc8, 0x62, 0xc8, 0xff}}},\n    {{{  2531,   3689,   2965}, 0, {  -716,      0}, {0xd0, 0x6a, 0xd0, 0xff}}},\n    {{{  2054,   3296,   2488}, 0, {  3468,      0}, {0xee, 0x7c, 0xee, 0xff}}},\n    {{{  2264,   3344,   2553}, 0, {  1464,    990}, {0x2e, 0x56, 0xb0, 0xff}}},\n};\n\n// 0x0701B7A0 - 0x0701B8A0\nstatic const Vtx ttm_seg7_vertex_0701B7A0[] = {\n    {{{  2264,   3344,   2553}, 0, {  1464,    990}, {0x2e, 0x56, 0xb0, 0xff}}},\n    {{{  2054,   3296,   2488}, 0, {  3468,      0}, {0xee, 0x7c, 0xee, 0xff}}},\n    {{{  2191,   3344,   2626}, 0, {  1464,      0}, {0xe6, 0x79, 0xe6, 0xff}}},\n    {{{  2365,   3392,   2655}, 0, {     0,    990}, {0x34, 0x47, 0xa5, 0xff}}},\n    {{{  2293,   3392,   2727}, 0, {     0,      0}, {0xdc, 0x73, 0xdc, 0xff}}},\n    {{{  2603,   3689,   2893}, 0, {  -716,    990}, {0x18, 0x45, 0x99, 0xff}}},\n    {{{  2422,   3433,   2712}, 0, {  2864,    990}, {0x09, 0x58, 0xa6, 0xff}}},\n    {{{  2350,   3433,   2784}, 0, {  2864,      0}, {0xc8, 0x62, 0xc8, 0xff}}},\n    {{{  2365,   3392,   2655}, 0, {  3752,    990}, {0x34, 0x47, 0xa5, 0xff}}},\n    {{{  2293,   3392,   2727}, 0, {  3752,      0}, {0xdc, 0x73, 0xdc, 0xff}}},\n    {{{  3399,   3911,   3689}, 0, {     0,    990}, {0x39, 0x59, 0xbb, 0xff}}},\n    {{{  2888,   3859,   3322}, 0, {  6184,      0}, {0x2a, 0x6f, 0x2a, 0xff}}},\n    {{{  3327,   3911,   3761}, 0, {     0,      0}, {0xf7, 0x7e, 0xf7, 0xff}}},\n    {{{  2691,   3751,   2980}, 0, { -2072,    990}, {0x25, 0x51, 0xa7, 0xff}}},\n    {{{  2531,   3689,   2965}, 0, {  -716,      0}, {0xd0, 0x6a, 0xd0, 0xff}}},\n    {{{  2618,   3751,   3053}, 0, { -2072,      0}, {0xe0, 0x76, 0xe0, 0xff}}},\n};\n\n// 0x0701B8A0 - 0x0701B990\nstatic const Vtx ttm_seg7_vertex_0701B8A0[] = {\n    {{{  2807,   3805,   3096}, 0, {     0,      0}, {0x38, 0x48, 0xa9, 0xff}}},\n    {{{  2618,   3751,   3053}, 0, {  1696,  -1054}, {0xe0, 0x76, 0xe0, 0xff}}},\n    {{{  2734,   3805,   3169}, 0, {     0,  -1054}, {0xe9, 0x7a, 0xe9, 0xff}}},\n    {{{  2691,   3751,   2980}, 0, {  1696,      0}, {0x25, 0x51, 0xa7, 0xff}}},\n    {{{  2960,   3859,   3250}, 0, {   992,    990}, {0x50, 0x4a, 0xc1, 0xff}}},\n    {{{  2807,   3805,   3096}, 0, {  3220,    990}, {0x38, 0x48, 0xa9, 0xff}}},\n    {{{  2734,   3805,   3169}, 0, {  3220,      0}, {0xe9, 0x7a, 0xe9, 0xff}}},\n    {{{  2888,   3859,   3322}, 0, {   992,      0}, {0x2a, 0x6f, 0x2a, 0xff}}},\n    {{{  3399,   3911,   3689}, 0, {     0,    990}, {0x39, 0x59, 0xbb, 0xff}}},\n    {{{  2960,   3859,   3250}, 0, {  6184,    990}, {0x50, 0x4a, 0xc1, 0xff}}},\n    {{{  2888,   3859,   3322}, 0, {  6184,      0}, {0x2a, 0x6f, 0x2a, 0xff}}},\n    {{{  3683,   3961,   3972}, 0, {     0,    990}, {0x3f, 0x4a, 0xb0, 0xff}}},\n    {{{  3327,   3911,   3761}, 0, {  4004,      0}, {0xf7, 0x7e, 0xf7, 0xff}}},\n    {{{  3610,   3961,   4045}, 0, {     0,      0}, {0xee, 0x7c, 0xee, 0xff}}},\n    {{{  3399,   3911,   3689}, 0, {  4004,    990}, {0x39, 0x59, 0xbb, 0xff}}},\n};\n\n// 0x0701B990 - 0x0701BA90\nstatic const Vtx ttm_seg7_vertex_0701B990[] = {\n    {{{  3821,   4010,   4110}, 0, {     0,    990}, {0x1d, 0x65, 0xbb, 0xff}}},\n    {{{  3610,   3961,   4045}, 0, {  1972,      0}, {0xee, 0x7c, 0xee, 0xff}}},\n    {{{  3748,   4010,   4183}, 0, {     0,      0}, {0xe6, 0x79, 0xe6, 0xff}}},\n    {{{  3683,   3961,   3972}, 0, {  1972,    990}, {0x3f, 0x4a, 0xb0, 0xff}}},\n    {{{  3922,   4058,   4211}, 0, {  4352,    990}, {0x29, 0x53, 0xaa, 0xff}}},\n    {{{  3821,   4010,   4110}, 0, {  5820,    990}, {0x1d, 0x65, 0xbb, 0xff}}},\n    {{{  3748,   4010,   4183}, 0, {  5820,      0}, {0xe6, 0x79, 0xe6, 0xff}}},\n    {{{  4175,   4314,   4465}, 0, {  3864,    990}, {0x34, 0x47, 0xa5, 0xff}}},\n    {{{  4103,   4314,   4537}, 0, {  3864,      0}, {0xdc, 0x74, 0xdc, 0xff}}},\n    {{{  4219,   4368,   4653}, 0, {  2136,      0}, {0xe7, 0x79, 0xe7, 0xff}}},\n    {{{  3979,   4098,   4269}, 0, {  3452,    990}, {0x1d, 0x4b, 0x9f, 0xff}}},\n    {{{  3849,   4058,   4284}, 0, {  4352,      0}, {0xdc, 0x74, 0xdc, 0xff}}},\n    {{{  3907,   4098,   4341}, 0, {  3452,      0}, {0xc8, 0x62, 0xc8, 0xff}}},\n    {{{  4088,   4252,   4377}, 0, {  1344,    990}, {0x0c, 0x51, 0xa0, 0xff}}},\n    {{{  4175,   4314,   4465}, 0, {     0,    990}, {0x34, 0x47, 0xa5, 0xff}}},\n    {{{  4103,   4314,   4537}, 0, {     0,      0}, {0xdc, 0x74, 0xdc, 0xff}}},\n};\n\n// 0x0701BA90 - 0x0701BB90\nstatic const Vtx ttm_seg7_vertex_0701BA90[] = {\n    {{{  4088,   4252,   4377}, 0, {  1344,    990}, {0x0c, 0x51, 0xa0, 0xff}}},\n    {{{  4015,   4252,   4450}, 0, {  1344,      0}, {0xcc, 0x66, 0xcc, 0xff}}},\n    {{{  4103,   4314,   4537}, 0, {     0,      0}, {0xdc, 0x74, 0xdc, 0xff}}},\n    {{{  3907,   4098,   4341}, 0, {  3452,      0}, {0xc8, 0x62, 0xc8, 0xff}}},\n    {{{  4291,   4368,   4581}, 0, {  2136,    990}, {0x2d, 0x56, 0xaf, 0xff}}},\n    {{{  4175,   4314,   4465}, 0, {  3864,    990}, {0x34, 0x47, 0xa5, 0xff}}},\n    {{{  4219,   4368,   4653}, 0, {  2136,      0}, {0xe7, 0x79, 0xe7, 0xff}}},\n    {{{  5528,   4781,   5962}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  5600,   4781,   6034}, 0, {     0,    990}, {0x28, 0x00, 0x78, 0xff}}},\n    {{{  5600,   5061,   6034}, 0, {  2764,    990}, {0x02, 0x0d, 0x7e, 0xff}}},\n    {{{  4440,   4421,   4730}, 0, {     0,    990}, {0x30, 0x57, 0xb3, 0xff}}},\n    {{{  4368,   4421,   4802}, 0, {     0,      0}, {0xed, 0x7c, 0xed, 0xff}}},\n    {{{  4620,   4472,   4909}, 0, {     0,    990}, {0x30, 0x56, 0xb1, 0xff}}},\n    {{{  4440,   4421,   4730}, 0, {  2548,    990}, {0x30, 0x57, 0xb3, 0xff}}},\n    {{{  4368,   4421,   4802}, 0, {  2548,      0}, {0xed, 0x7c, 0xed, 0xff}}},\n    {{{  4547,   4472,   4982}, 0, {     0,      0}, {0xeb, 0x7b, 0xeb, 0xff}}},\n};\n\n// 0x0701BB90 - 0x0701BC90\nstatic const Vtx ttm_seg7_vertex_0701BB90[] = {\n    {{{  4620,   4472,   4909}, 0, { 14104,    990}, {0x30, 0x56, 0xb1, 0xff}}},\n    {{{  5507,   4879,   5941}, 0, {     0,      0}, {0xf6, 0x7e, 0xf6, 0xff}}},\n    {{{  5579,   4879,   5869}, 0, {     0,    990}, {0x38, 0x58, 0xb9, 0xff}}},\n    {{{  4547,   4472,   4982}, 0, { 14104,      0}, {0xeb, 0x7b, 0xeb, 0xff}}},\n    {{{  5817,   5703,   6976}, 0, { 11208,  -4120}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  7265,   5703,   5528}, 0, { -9228,  -4120}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  7265,   4781,   5528}, 0, { -9224,   5076}, {0xb0, 0x38, 0xb0, 0xff}}},\n    {{{  5528,   4781,   5962}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  5600,   5061,   6034}, 0, {  2764,    990}, {0x02, 0x0d, 0x7e, 0xff}}},\n    {{{  5528,   5061,   5962}, 0, {  2764,      0}, {0xab, 0x26, 0x55, 0xff}}},\n    {{{  6324,   4781,   5310}, 0, {  2764,    990}, {0x78, 0x00, 0xd8, 0xff}}},\n    {{{  6252,   4781,   5238}, 0, {  2764,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  6252,   5061,   5238}, 0, {     0,      0}, {0x58, 0x13, 0xa8, 0xff}}},\n    {{{  6324,   5061,   5310}, 0, {     0,    990}, {0x7b, 0x17, 0x15, 0xff}}},\n    {{{  6396,   4986,   6397}, 0, {  3036,   3032}, {0x11, 0xe6, 0x86, 0xff}}},\n    {{{  6396,   4781,   6397}, 0, {  3036,   5076}, {0xd8, 0x00, 0x88, 0xff}}},\n};\n\n// 0x0701BC90 - 0x0701BD90\nstatic const Vtx ttm_seg7_vertex_0701BC90[] = {\n    {{{  6396,   4781,   6397}, 0, {  3036,   5076}, {0xd8, 0x00, 0x88, 0xff}}},\n    {{{  5817,   4781,   6976}, 0, { 11212,   5076}, {0xc1, 0x59, 0xc1, 0xff}}},\n    {{{  5817,   5703,   6976}, 0, { 11208,  -4120}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  6469,   5088,   6324}, 0, {  2012,   2010}, {0xf1, 0xa7, 0xa7, 0xff}}},\n    {{{  6396,   4986,   6397}, 0, {  3036,   3032}, {0x11, 0xe6, 0x86, 0xff}}},\n    {{{  7265,   4781,   5528}, 0, { -9224,   5076}, {0xb0, 0x38, 0xb0, 0xff}}},\n    {{{  6614,   5088,   6179}, 0, {     0,   2010}, {0xaf, 0xad, 0xce, 0xff}}},\n    {{{  6324,   4883,   5310}, 0, {  8144,  10186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6831,   4883,   5962}, 0, {     0,   9164}, {0xc1, 0x59, 0x3f, 0xff}}},\n    {{{  6903,   4883,   5890}, 0, {     0,  10186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6686,   4986,   6107}, 0, { -1048,   3032}, {0x8d, 0xcc, 0x0a, 0xff}}},\n    {{{  6686,   4781,   6107}, 0, { -1048,   5076}, {0x88, 0x00, 0x28, 0xff}}},\n    {{{  -748,   1139,   -458}, 0, {-19444,    990}, {0x16, 0x62, 0xb3, 0xff}}},\n    {{{ -3494,   -120,  -3060}, 0, { 20336,      0}, {0xe4, 0x78, 0xe4, 0xff}}},\n    {{{  -820,   1139,   -386}, 0, {-19444,      0}, {0xdc, 0x74, 0xdc, 0xff}}},\n    {{{ -3422,   -120,  -3132}, 0, { 20336,    990}, {0x43, 0x35, 0xa3, 0xff}}},\n};\n\n// 0x0701BD90 - 0x0701BE00\nstatic const Vtx ttm_seg7_vertex_0701BD90[] = {\n    {{{  5672,   4883,   5962}, 0, {  8144,    990}, {0x28, 0x71, 0xd8, 0xff}}},\n    {{{  5600,   4883,   6034}, 0, {  8144,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6179,   4883,   6614}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6252,   4883,   6541}, 0, {     0,    990}, {0x50, 0x38, 0xb0, 0xff}}},\n    {{{  6324,   4883,   5310}, 0, {  8144,  10186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  6252,   4883,   5383}, 0, {  8144,   9164}, {0xc1, 0x59, 0x3f, 0xff}}},\n    {{{  6831,   4883,   5962}, 0, {     0,   9164}, {0xc1, 0x59, 0x3f, 0xff}}},\n};\n\n// 0x0701BE00 - 0x0701BEE0\nstatic const Vtx ttm_seg7_vertex_0701BE00[] = {\n    {{{ -2155,  -1559,  -4399}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3422,   -279,  -3132}, 0, {     0,      0}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{ -5847,  -1559,   -707}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2842,   -279,  -3712}, 0, {     0,      0}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{ -2842,    180,  -3712}, 0, {     0,      0}, {0x1e, 0xf1, 0x7a, 0xff}}},\n    {{{ -2155,   1409,  -4399}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3422,    180,  -3132}, 0, {     0,      0}, {0x78, 0xe8, 0xe3, 0xff}}},\n    {{{ -5847,   1409,   -707}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3349,    334,  -3205}, 0, {     0,      0}, {0x64, 0xc0, 0x2a, 0xff}}},\n    {{{ -3277,    385,  -3277}, 0, {     0,      0}, {0x4a, 0xaa, 0x37, 0xff}}},\n    {{{ -2987,    385,  -3567}, 0, {     0,      0}, {0x2d, 0xac, 0x53, 0xff}}},\n    {{{ -2915,    334,  -3639}, 0, {     0,      0}, {0x15, 0xb9, 0x66, 0xff}}},\n    {{{ -2879,    283,  -3675}, 0, {     0,      0}, {0x01, 0xcd, 0x73, 0xff}}},\n    {{{ -3386,    283,  -3168}, 0, {     0,      0}, {0x6f, 0xc5, 0x08, 0xff}}},\n};\n\n// 0x0701BEE0 - 0x0701C008\nstatic const Gfx ttm_seg7_dl_0701BEE0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09006800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_070172D8.l, 1),\n    gsSPLight(&ttm_seg7_lights_070172D8.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07017410, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPLight(&ttm_seg7_lights_070172F0.l, 1),\n    gsSPLight(&ttm_seg7_lights_070172F0.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07017450, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPLight(&ttm_seg7_lights_07017308.l, 1),\n    gsSPLight(&ttm_seg7_lights_07017308.a, 2),\n    gsSPVertex(ttm_seg7_vertex_070174D0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPLight(&ttm_seg7_lights_07017320.l, 1),\n    gsSPLight(&ttm_seg7_lights_07017320.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07017550, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPLight(&ttm_seg7_lights_07017338.l, 1),\n    gsSPLight(&ttm_seg7_lights_07017338.a, 2),\n    gsSPVertex(ttm_seg7_vertex_070175D0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701C008 - 0x0701C688\nstatic const Gfx ttm_seg7_dl_0701C008[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_0900B800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_07017350.l, 1),\n    gsSPLight(&ttm_seg7_lights_07017350.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07017650, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPLight(&ttm_seg7_lights_07017368.l, 1),\n    gsSPLight(&ttm_seg7_lights_07017368.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07017690, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle(10, 14, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07017780, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  4,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12,  9, 11, 0x0,  1, 13,  2, 0x0),\n    gsSP1Triangle(13, 14,  2, 0x0),\n    gsSPLight(&ttm_seg7_lights_07017380.l, 1),\n    gsSPLight(&ttm_seg7_lights_07017380.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07017870, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 7,  8,  4, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 14, 10, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07017960, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  5,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 12, 10, 0x0),\n    gsSP2Triangles(10, 12, 13, 0x0, 14,  0, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07017A60, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP1Triangle( 5,  6,  7, 0x0),\n    gsSPLight(&ttm_seg7_lights_07017398.l, 1),\n    gsSPLight(&ttm_seg7_lights_07017398.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07017AE0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 4,  8,  5, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12,  9, 11, 0x0,  9, 13, 10, 0x0),\n    gsSP1Triangle(13, 14, 10, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07017BD0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 12, 13, 10, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07017CC0, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSPLight(&ttm_seg7_lights_070173B0.l, 1),\n    gsSPLight(&ttm_seg7_lights_070173B0.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07017D60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 7,  8,  4, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle(10, 14, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07017E50, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  5,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 12, 10, 0x0),\n    gsSP1Triangle(10, 12, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07017F30, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  6,  7,  4, 0x0),\n    gsSP1Triangle( 6,  8,  7, 0x0),\n    gsSPLight(&ttm_seg7_lights_070173C8.l, 1),\n    gsSPLight(&ttm_seg7_lights_070173C8.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07017FC0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7,  9,  5, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(10, 12, 13, 0x0, 10, 13, 11, 0x0),\n    gsSP2Triangles(12, 14, 15, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070180C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  3,  5,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 13, 10, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0, 12, 15, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070181C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 3,  4,  1, 0x0,  3,  5,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  7,  4, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  6,  9,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 11,  8, 0x0),\n    gsSP2Triangles(10, 12, 13, 0x0, 10, 13, 11, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0, 12, 15, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070182C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  8, 11, 12, 0x0),\n    gsSP2Triangles( 8, 12,  9, 0x0, 11, 13, 12, 0x0),\n    gsSP2Triangles(11, 14, 13, 0x0, 14, 15, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070183C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  9,  8, 10, 0x0),\n    gsSP2Triangles( 6, 11,  7, 0x0,  6, 12, 11, 0x0),\n    gsSP2Triangles(12, 13, 11, 0x0, 12, 14, 13, 0x0),\n    gsSP1Triangle(15, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070184C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  3,  2,  7, 0x0),\n    gsSP2Triangles( 3,  8,  9, 0x0,  3,  7,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0, 11, 15, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070185C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  1, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  9,  7, 0x0,  9, 10,  7, 0x0),\n    gsSP2Triangles( 9, 11, 10, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 15, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070186C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9,  6, 0x0,  8, 10,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12,  9, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070187C0, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701C688 - 0x0701C6F8\nstatic const Gfx ttm_seg7_dl_0701C688[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_0900A800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_07017398.l, 1),\n    gsSPLight(&ttm_seg7_lights_07017398.a, 2),\n    gsSPVertex(ttm_seg7_vertex_070187F0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPLight(&ttm_seg7_lights_070173C8.l, 1),\n    gsSPLight(&ttm_seg7_lights_070173C8.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07018830, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701C6F8 - 0x0701D708\nstatic const Gfx ttm_seg7_dl_0701C6F8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_07017308.l, 1),\n    gsSPLight(&ttm_seg7_lights_07017308.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07018870, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0, 15,  1, 0x0),\n    gsSPLight(&ttm_seg7_lights_07017320.l, 1),\n    gsSPLight(&ttm_seg7_lights_07017320.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07018970, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07018A60, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP1Triangle( 0, 10,  1, 0x0),\n    gsSPLight(&ttm_seg7_lights_07017338.l, 1),\n    gsSPLight(&ttm_seg7_lights_07017338.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07018B10, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07018C00, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07018CF0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPLight(&ttm_seg7_lights_07017350.l, 1),\n    gsSPLight(&ttm_seg7_lights_07017350.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07018D30, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07018E20, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP1Triangle( 0, 10,  1, 0x0),\n    gsSPLight(&ttm_seg7_lights_070173E0.l, 1),\n    gsSPLight(&ttm_seg7_lights_070173E0.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07018ED0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07018FD0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070190B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070191A0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07019280, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07019370, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 1, 14,  2, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07019460, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07019550, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 1, 14,  2, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07019640, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07019730, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07019820, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07019910, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07019A00, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  4,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07019B00, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07019BF0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07019CD0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07019DC0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 1, 14,  2, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07019EB0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07019FA0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701A090, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701A180, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701A270, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSPLight(&ttm_seg7_lights_07017368.l, 1),\n    gsSPLight(&ttm_seg7_lights_07017368.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0701A2F0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPLight(&ttm_seg7_lights_07017380.l, 1),\n    gsSPLight(&ttm_seg7_lights_07017380.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0701A330, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 2,  4,  3, 0x0,  4,  5,  3, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 10, 12, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701A410, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701A500, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701A5F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701A6E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701A7D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 11, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701A8C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701A9B0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPLight(&ttm_seg7_lights_07017398.l, 1),\n    gsSPLight(&ttm_seg7_lights_07017398.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0701AA70, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  1,  5,  6, 0x0),\n    gsSP2Triangles( 1,  6,  2, 0x0,  0,  2,  7, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7,  9,  0, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701AB50, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPLight(&ttm_seg7_lights_070173C8.l, 1),\n    gsSPLight(&ttm_seg7_lights_070173C8.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0701ABD0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  9,  8, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701ACC0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 8,  7, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(11, 10, 12, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701ADB0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 13, 0x0,  9, 13, 10, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701AEA0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 6, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(10, 14, 15, 0x0, 10, 15,  9, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701AFA0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 3,  4,  1, 0x0,  3,  5,  4, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701B0A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 1,  6,  2, 0x0,  1,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(11, 12,  9, 0x0, 13, 14, 12, 0x0),\n    gsSP1Triangle(13, 15, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701B1A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  1,  5,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  7,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701B2A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  3,  5,  1, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  4,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(11, 12,  9, 0x0, 11, 13, 12, 0x0),\n    gsSP2Triangles(13, 14, 12, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701B3A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  1,  5,  4, 0x0),\n    gsSP2Triangles( 5,  6,  4, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0, 12, 15, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701B4A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7, 11, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(10, 11, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701B5A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  0,  3, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles( 7, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14,  6, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701B6A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles( 7,  9, 14, 0x0, 15,  7, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701B7A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 6,  8,  9, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13,  5, 14, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701B8A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701B990, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  4, 11, 0x0,  4,  6, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 10, 12, 0x0),\n    gsSP1Triangle(14, 13, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701BA90, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  4,  6, 0x0, 10,  6, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701BB90, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle(14, 15,  4, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701BC90, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 2,  5,  6, 0x0,  2,  6,  3, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  5, 10,  6, 0x0),\n    gsSP2Triangles( 5, 11, 10, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 15, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701BD90, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP1Triangle( 4,  5,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701D708 - 0x0701D798\nstatic const Gfx ttm_seg7_dl_0701D708[] = {\n    gsSPLight(&ttm_seg7_lights_070173F8.l, 1),\n    gsSPLight(&ttm_seg7_lights_070173F8.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0701BE00, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  3,  0, 0x0,  4,  0,  5, 0x0),\n    gsSP2Triangles( 2,  1,  6, 0x0,  5,  7,  2, 0x0),\n    gsSP2Triangles( 5,  2,  8, 0x0,  5,  9, 10, 0x0),\n    gsSP2Triangles( 5, 10, 11, 0x0,  5, 11, 12, 0x0),\n    gsSP2Triangles( 5, 12,  4, 0x0,  5,  8,  9, 0x0),\n    gsSP2Triangles( 2, 13,  8, 0x0,  2,  6, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701D798 - 0x0701D888\nconst Gfx ttm_seg7_dl_0701D798[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(980, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_0701BEE0),\n    gsSPDisplayList(ttm_seg7_dl_0701C008),\n    gsSPDisplayList(ttm_seg7_dl_0701C688),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_0701C6F8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_PASS2),\n    gsSPDisplayList(ttm_seg7_dl_0701D708),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/2/2/model.inc.c",
    "content": "// 0x0701D888 - 0x0701D8A0\nstatic const Lights1 ttm_seg7_lights_0701D888 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0701D8A0 - 0x0701D9A0\nstatic const Vtx ttm_seg7_vertex_0701D8A0[] = {\n    {{{ -5967,  -1533,  -5572}, 0, {     0,    448}, {0x0d, 0x00, 0x7e, 0xff}}},\n    {{{ -5943,  -1533,  -5572}, 0, {     0,    522}, {0xe5, 0x00, 0x7c, 0xff}}},\n    {{{ -5943,  -1021,  -5572}, 0, {  2012,    522}, {0xf3, 0x00, 0x7e, 0xff}}},\n    {{{ -5907,  -1021,  -5560}, 0, {  2012,    632}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{ -5907,  -1533,  -5560}, 0, {     0,    632}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{ -5967,  -1021,  -5572}, 0, {  2012,    448}, {0x1b, 0x00, 0x7c, 0xff}}},\n    {{{ -6003,  -1533,  -5560}, 0, {     0,    336}, {0x2d, 0x00, 0x76, 0xff}}},\n    {{{ -6121,  -1533,  -5501}, 0, {     0,      0}, {0x44, 0x00, 0x6a, 0xff}}},\n    {{{ -6003,  -1021,  -5560}, 0, {  2012,    336}, {0x33, 0x00, 0x74, 0xff}}},\n    {{{ -6121,  -1021,  -5501}, 0, {  2012,      0}, {0x4f, 0x00, 0x62, 0xff}}},\n    {{{ -7548,  -1533,  -4074}, 0, {  2012,  -3088}, {0x5d, 0x00, 0x56, 0xff}}},\n    {{{ -7548,  -2045,  -4074}, 0, {     0,  -3088}, {0x5b, 0x00, 0x58, 0xff}}},\n    {{{ -6679,  -1124,  -4943}, 0, {  2012,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -6389,  -1533,  -5233}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -6121,  -1021,  -5501}, 0, {  2012,    990}, {0x4f, 0x00, 0x62, 0xff}}},\n    {{{ -6389,  -1021,  -5233}, 0, {  2012,      0}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x0701D9A0 - 0x0701DA80\nstatic const Vtx ttm_seg7_vertex_0701D9A0[] = {\n    {{{ -6389,  -1533,  -5233}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -6121,  -1533,  -5501}, 0, {     0,    990}, {0x44, 0x00, 0x6a, 0xff}}},\n    {{{ -6121,  -1021,  -5501}, 0, {  2012,    990}, {0x4f, 0x00, 0x62, 0xff}}},\n    {{{ -7961,  -2076,  -3611}, 0, {     0,  -1056}, {0x5e, 0x00, 0x54, 0xff}}},\n    {{{ -7548,  -2045,  -4074}, 0, {     0,    990}, {0x5b, 0x00, 0x58, 0xff}}},\n    {{{ -7548,  -1533,  -4074}, 0, {  2012,    990}, {0x5d, 0x00, 0x56, 0xff}}},\n    {{{ -7961,  -1564,  -3611}, 0, {  2012,  -1056}, {0x5e, 0x00, 0x54, 0xff}}},\n    {{{ -5792,  -1533,  -5502}, 0, {     0,    990}, {0xc7, 0x00, 0x71, 0xff}}},\n    {{{ -5792,  -1021,  -5502}, 0, {  2012,    990}, {0xc7, 0x00, 0x71, 0xff}}},\n    {{{ -5907,  -1021,  -5560}, 0, {  2012,    632}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{ -5907,  -1533,  -5560}, 0, {     0,    632}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{ -6679,  -1124,  -4943}, 0, {  2012,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -6679,  -1636,  -4943}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -6389,  -1533,  -5233}, 0, {     0,    990}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x0701DA80 - 0x0701DAE0\nstatic const Vtx ttm_seg7_vertex_0701DA80[] = {\n    {{{ -6679,  -1636,  -4943}, 0, {     0,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -6679,  -1124,  -4943}, 0, {  2012,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -7548,  -2045,  -4074}, 0, {     0,  -3088}, {0x5b, 0x00, 0x58, 0xff}}},\n    {{{ -6389,  -1021,  -5233}, 0, {  2012,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -6679,  -1124,  -4943}, 0, {  2012,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -6389,  -1533,  -5233}, 0, {     0,    990}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x0701DAE0 - 0x0701DBB8\nstatic const Gfx ttm_seg7_dl_0701DAE0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_0701D888.l, 1),\n    gsSPLight(&ttm_seg7_lights_0701D888.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0701D8A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 6,  0,  5, 0x0,  7,  6,  8, 0x0),\n    gsSP2Triangles( 6,  5,  8, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701D9A0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701DA80, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0701DBB8 - 0x0701DC60\nconst Gfx ttm_seg7_dl_0701DBB8[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(980, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_0701DAE0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/2/collision.inc.c",
    "content": "// 0x0702BBD0 - 0x0702D5EC\nconst Collision ttm_seg7_area_2_collision[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x1BC),\n    COL_VERTEX(-4240, -614, -3950),\n    COL_VERTEX(-3827, -419, -3538),\n    COL_VERTEX(-3248, -419, -4117),\n    COL_VERTEX(-3660, -614, -4529),\n    COL_VERTEX(8192, -5017, -8191),\n    COL_VERTEX(-8191, -5017, 8192),\n    COL_VERTEX(8192, -5017, 8192),\n    COL_VERTEX(-8191, -5017, -8191),\n    COL_VERTEX(6179, 4781, 5310),\n    COL_VERTEX(6252, 4781, 6541),\n    COL_VERTEX(6831, 4781, 5962),\n    COL_VERTEX(5600, 4781, 5890),\n    COL_VERTEX(6541, 4781, 7700),\n    COL_VERTEX(7989, 4781, 6252),\n    COL_VERTEX(7265, 4781, 5528),\n    COL_VERTEX(5817, 4781, 6976),\n    COL_VERTEX(6324, 4883, 5310),\n    COL_VERTEX(6252, 4883, 5383),\n    COL_VERTEX(6831, 4883, 5962),\n    COL_VERTEX(6903, 4883, 5890),\n    COL_VERTEX(5672, 4883, 5962),\n    COL_VERTEX(5600, 4883, 6034),\n    COL_VERTEX(6179, 4883, 6614),\n    COL_VERTEX(6252, 4883, 6541),\n    COL_VERTEX(5672, 4781, 5962),\n    COL_VERTEX(6252, 4781, 5383),\n    COL_VERTEX(6107, 5242, 5528),\n    COL_VERTEX(5817, 5242, 5817),\n    COL_VERTEX(6179, 5191, 5455),\n    COL_VERTEX(5817, 5344, 5817),\n    COL_VERTEX(-3422, -228, -3132),\n    COL_VERTEX(-3422, -120, -3132),\n    COL_VERTEX(-68, 1096, -937),\n    COL_VERTEX(-141, 1044, -1010),\n    COL_VERTEX(-96, 1139, -1110),\n    COL_VERTEX(-748, 1139, -458),\n    COL_VERTEX(3, 1198, -865),\n    COL_VERTEX(257, 1915, -611),\n    COL_VERTEX(329, 2017, -539),\n    COL_VERTEX(402, 2068, -466),\n    COL_VERTEX(510, 2120, -358),\n    COL_VERTEX(655, 2171, -213),\n    COL_VERTEX(642, 2272, -226),\n    COL_VERTEX(945, 2222, 76),\n    COL_VERTEX(1089, 2273, 220),\n    COL_VERTEX(1198, 2324, 329),\n    COL_VERTEX(2284, 3092, 1415),\n    COL_VERTEX(2429, 3144, 1560),\n    COL_VERTEX(2719, 3195, 1850),\n    COL_VERTEX(2843, 3344, 1974),\n    COL_VERTEX(2863, 3246, 1994),\n    COL_VERTEX(2972, 3297, 2103),\n    COL_VERTEX(2944, 3392, 2075),\n    COL_VERTEX(3044, 3348, 2175),\n    COL_VERTEX(3225, 3604, 2356),\n    COL_VERTEX(3298, 3656, 2429),\n    COL_VERTEX(3406, 3707, 2537),\n    COL_VERTEX(3551, 3758, 2682),\n    COL_VERTEX(3986, 3809, 3117),\n    COL_VERTEX(4275, 3860, 3406),\n    COL_VERTEX(4420, 3912, 3551),\n    COL_VERTEX(4529, 3963, 3660),\n    COL_VERTEX(4601, 4014, 3732),\n    COL_VERTEX(4710, 4168, 3841),\n    COL_VERTEX(4782, 4219, 3913),\n    COL_VERTEX(4891, 4270, 4022),\n    COL_VERTEX(5036, 4321, 4167),\n    COL_VERTEX(5217, 4372, 4348),\n    COL_VERTEX(6158, 4879, 5290),\n    COL_VERTEX(6179, 4877, 5310),\n    COL_VERTEX(642, 2528, -226),\n    COL_VERTEX(714, 2552, -299),\n    COL_VERTEX(605, 2630, -190),\n    COL_VERTEX(665, 2691, -250),\n    COL_VERTEX(569, 2681, -154),\n    COL_VERTEX(497, 2733, -82),\n    COL_VERTEX(424, 2733, -154),\n    COL_VERTEX(207, 2733, 207),\n    COL_VERTEX(135, 2733, 135),\n    COL_VERTEX(135, 2681, 279),\n    COL_VERTEX(99, 2630, 316),\n    COL_VERTEX(39, 2691, 375),\n    COL_VERTEX(62, 2528, 352),\n    COL_VERTEX(62, 2272, 352),\n    COL_VERTEX(62, 2681, 207),\n    COL_VERTEX(26, 2630, 243),\n    COL_VERTEX(569, 2528, -299),\n    COL_VERTEX(533, 2630, -263),\n    COL_VERTEX(497, 2681, -226),\n    COL_VERTEX(-7548, -1533, -4074),\n    COL_VERTEX(-7961, -2076, -3611),\n    COL_VERTEX(-8053, -1636, -3710),\n    COL_VERTEX(-8019, -1533, -4545),\n    COL_VERTEX(-8191, -1566, -4441),\n    COL_VERTEX(-7222, -919, -5486),\n    COL_VERTEX(-7005, -1124, -5269),\n    COL_VERTEX(-7114, -1072, -5378),\n    COL_VERTEX(-8127, -1380, -4653),\n    COL_VERTEX(-4416, -765, -5285),\n    COL_VERTEX(-4633, -663, -5502),\n    COL_VERTEX(-4416, -560, -5285),\n    COL_VERTEX(-4669, -816, -5466),\n    COL_VERTEX(-5310, -663, -6165),\n    COL_VERTEX(-4452, -919, -5249),\n    COL_VERTEX(-4706, -970, -5430),\n    COL_VERTEX(-5340, -816, -6123),\n    COL_VERTEX(-5613, -816, -6270),\n    COL_VERTEX(-5430, -970, -5999),\n    COL_VERTEX(-5521, -1021, -5875),\n    COL_VERTEX(-4778, -1021, -5357),\n    COL_VERTEX(-5845, -970, -6178),\n    COL_VERTEX(-5672, -970, -6128),\n    COL_VERTEX(-5731, -1021, -5986),\n    COL_VERTEX(-5943, -1533, -5572),\n    COL_VERTEX(-5792, -1533, -5502),\n    COL_VERTEX(-5310, -560, -6165),\n    COL_VERTEX(-4633, -560, -5502),\n    COL_VERTEX(-5594, -560, -6317),\n    COL_VERTEX(-5594, -663, -6317),\n    COL_VERTEX(-5812, -663, -6381),\n    COL_VERTEX(-5820, -816, -6330),\n    COL_VERTEX(-5869, -1021, -6027),\n    COL_VERTEX(-5812, -560, -6381),\n    COL_VERTEX(-6090, -816, -6330),\n    COL_VERTEX(-6041, -1021, -6027),\n    COL_VERTEX(-6065, -970, -6178),\n    COL_VERTEX(-5967, -1533, -5572),\n    COL_VERTEX(-6098, -560, -6381),\n    COL_VERTEX(-6098, -663, -6381),\n    COL_VERTEX(-6179, -1021, -5986),\n    COL_VERTEX(-6238, -970, -6128),\n    COL_VERTEX(-6003, -1533, -5560),\n    COL_VERTEX(-6316, -560, -6317),\n    COL_VERTEX(-6316, -663, -6317),\n    COL_VERTEX(-6297, -816, -6270),\n    COL_VERTEX(-6824, -970, -5667),\n    COL_VERTEX(-6481, -970, -5999),\n    COL_VERTEX(-6391, -1021, -5875),\n    COL_VERTEX(-6121, -1533, -5501),\n    COL_VERTEX(-6600, -560, -6165),\n    COL_VERTEX(-6600, -663, -6165),\n    COL_VERTEX(-6570, -816, -6124),\n    COL_VERTEX(-6969, -663, -5812),\n    COL_VERTEX(-6932, -816, -5776),\n    COL_VERTEX(-6715, -1021, -5559),\n    COL_VERTEX(-6389, -1533, -5233),\n    COL_VERTEX(-6389, -1021, -5233),\n    COL_VERTEX(-6969, -560, -5812),\n    COL_VERTEX(-6679, -1124, -4943),\n    COL_VERTEX(-6679, -1636, -4943),\n    COL_VERTEX(-4524, -970, -5176),\n    COL_VERTEX(-2915, 334, -3639),\n    COL_VERTEX(-2879, 283, -3675),\n    COL_VERTEX(-2842, -279, -3712),\n    COL_VERTEX(-2987, 385, -3567),\n    COL_VERTEX(-3277, 385, -3277),\n    COL_VERTEX(-3349, 334, -3205),\n    COL_VERTEX(-3386, 283, -3168),\n    COL_VERTEX(-3422, 180, -3132),\n    COL_VERTEX(-4240, -665, -3950),\n    COL_VERTEX(-3954, -69, -4099),\n    COL_VERTEX(5962, 4781, 6976),\n    COL_VERTEX(7917, 4781, 6324),\n    COL_VERTEX(6759, 4986, 6179),\n    COL_VERTEX(7265, 5600, 5672),\n    COL_VERTEX(5962, 5600, 6976),\n    COL_VERTEX(5817, 5703, 6976),\n    COL_VERTEX(6396, 4781, 6397),\n    COL_VERTEX(6396, 4986, 6397),\n    COL_VERTEX(6469, 5088, 6324),\n    COL_VERTEX(6686, 5088, 6252),\n    COL_VERTEX(6541, 5088, 6397),\n    COL_VERTEX(6324, 4781, 5310),\n    COL_VERTEX(5528, 4781, 5962),\n    COL_VERTEX(5709, 5139, 5926),\n    COL_VERTEX(5672, 5037, 5962),\n    COL_VERTEX(5528, 5061, 5962),\n    COL_VERTEX(4203, 4219, 4493),\n    COL_VERTEX(4130, 4168, 4420),\n    COL_VERTEX(4022, 4014, 4311),\n    COL_VERTEX(3949, 3963, 4239),\n    COL_VERTEX(3841, 3912, 4130),\n    COL_VERTEX(3696, 3860, 3986),\n    COL_VERTEX(3406, 3809, 3696),\n    COL_VERTEX(2972, 3758, 3262),\n    COL_VERTEX(2827, 3707, 3117),\n    COL_VERTEX(2719, 3656, 3008),\n    COL_VERTEX(2646, 3604, 2936),\n    COL_VERTEX(2465, 3348, 2755),\n    COL_VERTEX(2393, 3297, 2682),\n    COL_VERTEX(2284, 3246, 2574),\n    COL_VERTEX(2139, 3195, 2429),\n    COL_VERTEX(1850, 3144, 2139),\n    COL_VERTEX(1705, 3092, 1994),\n    COL_VERTEX(619, 2324, 908),\n    COL_VERTEX(510, 2273, 800),\n    COL_VERTEX(365, 2222, 655),\n    COL_VERTEX(76, 2171, 365),\n    COL_VERTEX(-68, 2120, 220),\n    COL_VERTEX(-177, 2068, 112),\n    COL_VERTEX(-249, 2017, 39),\n    COL_VERTEX(-322, 1915, -32),\n    COL_VERTEX(-575, 1198, -285),\n    COL_VERTEX(-647, 1096, -358),\n    COL_VERTEX(-720, 1044, -430),\n    COL_VERTEX(-2155, 1409, -4399),\n    COL_VERTEX(-2842, 180, -3712),\n    COL_VERTEX(-5847, -1559, -707),\n    COL_VERTEX(-2155, -1559, -4399),\n    COL_VERTEX(4456, 4321, 4746),\n    COL_VERTEX(4637, 4372, 4927),\n    COL_VERTEX(4620, 4472, 4909),\n    COL_VERTEX(4312, 4270, 4601),\n    COL_VERTEX(4175, 4314, 4465),\n    COL_VERTEX(3683, 3961, 3972),\n    COL_VERTEX(2807, 3805, 3096),\n    COL_VERTEX(2365, 3392, 2655),\n    COL_VERTEX(352, 2323, 642),\n    COL_VERTEX(-88, 2218, 200),\n    COL_VERTEX(-690, 1180, -401),\n    COL_VERTEX(4440, 4421, 4730),\n    COL_VERTEX(4291, 4368, 4581),\n    COL_VERTEX(4088, 4252, 4377),\n    COL_VERTEX(3979, 4098, 4269),\n    COL_VERTEX(3922, 4058, 4211),\n    COL_VERTEX(3821, 4010, 4110),\n    COL_VERTEX(3399, 3911, 3689),\n    COL_VERTEX(2960, 3859, 3250),\n    COL_VERTEX(2691, 3751, 2980),\n    COL_VERTEX(2603, 3689, 2893),\n    COL_VERTEX(2422, 3433, 2712),\n    COL_VERTEX(2264, 3344, 2553),\n    COL_VERTEX(2126, 3296, 2416),\n    COL_VERTEX(1836, 3245, 2126),\n    COL_VERTEX(1680, 3189, 1969),\n    COL_VERTEX(591, 2419, 880),\n    COL_VERTEX(490, 2372, 779),\n    COL_VERTEX(-205, 2163, 84),\n    COL_VERTEX(-292, 2101, -3),\n    COL_VERTEX(-381, 1976, -92),\n    COL_VERTEX(-634, 1259, -345),\n    COL_VERTEX(16, 1259, -997),\n    COL_VERTEX(-39, 1180, -1052),\n    COL_VERTEX(270, 1976, -743),\n    COL_VERTEX(359, 2101, -654),\n    COL_VERTEX(446, 2163, -567),\n    COL_VERTEX(562, 2218, -451),\n    COL_VERTEX(714, 2272, -299),\n    COL_VERTEX(1004, 2323, -9),\n    COL_VERTEX(1142, 2372, 128),\n    COL_VERTEX(1243, 2419, 229),\n    COL_VERTEX(2331, 3189, 1317),\n    COL_VERTEX(2488, 3245, 1474),\n    COL_VERTEX(2778, 3296, 1764),\n    COL_VERTEX(2916, 3344, 1902),\n    COL_VERTEX(3017, 3392, 2003),\n    COL_VERTEX(3074, 3433, 2060),\n    COL_VERTEX(3255, 3689, 2241),\n    COL_VERTEX(3342, 3751, 2329),\n    COL_VERTEX(3459, 3805, 2445),\n    COL_VERTEX(3612, 3859, 2598),\n    COL_VERTEX(4051, 3911, 3037),\n    COL_VERTEX(4334, 3961, 3321),\n    COL_VERTEX(4472, 4010, 3459),\n    COL_VERTEX(4573, 4058, 3560),\n    COL_VERTEX(4631, 4098, 3617),\n    COL_VERTEX(4739, 4252, 3726),\n    COL_VERTEX(4827, 4314, 3813),\n    COL_VERTEX(4943, 4368, 3929),\n    COL_VERTEX(5092, 4421, 4078),\n    COL_VERTEX(5271, 4472, 4258),\n    COL_VERTEX(5600, 4877, 5890),\n    COL_VERTEX(6252, 4877, 5238),\n    COL_VERTEX(3467, 4115, 2598),\n    COL_VERTEX(3539, 4115, 2670),\n    COL_VERTEX(3539, 3859, 2670),\n    COL_VERTEX(3503, 4218, 2707),\n    COL_VERTEX(2924, 4218, 3141),\n    COL_VERTEX(2960, 4269, 3105),\n    COL_VERTEX(3033, 4320, 3032),\n    COL_VERTEX(3322, 4320, 2743),\n    COL_VERTEX(3395, 4320, 2815),\n    COL_VERTEX(3105, 4320, 3105),\n    COL_VERTEX(3431, 4218, 2634),\n    COL_VERTEX(3395, 4269, 2670),\n    COL_VERTEX(3467, 4269, 2743),\n    COL_VERTEX(3088, 4423, 3122),\n    COL_VERTEX(3033, 4269, 3177),\n    COL_VERTEX(2996, 4218, 3213),\n    COL_VERTEX(2960, 4115, 3250),\n    COL_VERTEX(5636, 5139, 5853),\n    COL_VERTEX(5745, 5191, 5890),\n    COL_VERTEX(5577, 5200, 5913),\n    COL_VERTEX(5630, 5275, 5860),\n    COL_VERTEX(6034, 5242, 5455),\n    COL_VERTEX(5745, 5242, 5745),\n    COL_VERTEX(6215, 5139, 5419),\n    COL_VERTEX(6107, 5191, 5383),\n    COL_VERTEX(6150, 5275, 5340),\n    COL_VERTEX(6052, 5344, 5438),\n    COL_VERTEX(6252, 5037, 5383),\n    COL_VERTEX(6324, 5061, 5310),\n    COL_VERTEX(6203, 5200, 5287),\n    COL_VERTEX(6179, 5037, 5310),\n    COL_VERTEX(5672, 5191, 5817),\n    COL_VERTEX(6143, 5139, 5347),\n    COL_VERTEX(5728, 5344, 5762),\n    COL_VERTEX(6124, 5344, 5511),\n    COL_VERTEX(6107, 5344, 5528),\n    COL_VERTEX(6222, 5275, 5412),\n    COL_VERTEX(5800, 5344, 5834),\n    COL_VERTEX(5702, 5275, 5933),\n    COL_VERTEX(-168, 1139, -1037),\n    COL_VERTEX(-2842, -120, -3712),\n    COL_VERTEX(-2842, -228, -3712),\n    COL_VERTEX(-2770, -120, -3784),\n    COL_VERTEX(-111, 1180, -980),\n    COL_VERTEX(-3494, -120, -3060),\n    COL_VERTEX(-820, 1139, -386),\n    COL_VERTEX(-55, 1259, -924),\n    COL_VERTEX(197, 1976, -671),\n    COL_VERTEX(286, 2101, -582),\n    COL_VERTEX(374, 2163, -494),\n    COL_VERTEX(490, 2218, -378),\n    COL_VERTEX(931, 2323, 62),\n    COL_VERTEX(1069, 2372, 200),\n    COL_VERTEX(1170, 2419, 301),\n    COL_VERTEX(2259, 3189, 1390),\n    COL_VERTEX(2416, 3245, 1547),\n    COL_VERTEX(2705, 3296, 1836),\n    COL_VERTEX(3002, 3433, 2133),\n    COL_VERTEX(3183, 3689, 2314),\n    COL_VERTEX(3270, 3751, 2401),\n    COL_VERTEX(3386, 3805, 2517),\n    COL_VERTEX(3978, 3911, 3109),\n    COL_VERTEX(4262, 3961, 3393),\n    COL_VERTEX(4400, 4010, 3531),\n    COL_VERTEX(4501, 4058, 3632),\n    COL_VERTEX(4558, 4098, 3689),\n    COL_VERTEX(4667, 4252, 3798),\n    COL_VERTEX(4754, 4314, 3885),\n    COL_VERTEX(4871, 4368, 4002),\n    COL_VERTEX(5020, 4421, 4151),\n    COL_VERTEX(5199, 4472, 4330),\n    COL_VERTEX(569, 2246, -299),\n    COL_VERTEX(612, 2765, -197),\n    COL_VERTEX(514, 2835, -99),\n    COL_VERTEX(190, 2835, 224),\n    COL_VERTEX(92, 2765, 322),\n    COL_VERTEX(-9, 2552, 424),\n    COL_VERTEX(-9, 2272, 424),\n    COL_VERTEX(-9, 2528, 279),\n    COL_VERTEX(-9, 2246, 279),\n    COL_VERTEX(-8191, -1598, -4166),\n    COL_VERTEX(-8191, -1636, -3848),\n    COL_VERTEX(-7548, -2045, -4074),\n    COL_VERTEX(-7961, -1564, -3611),\n    COL_VERTEX(-8191, -1417, -4590),\n    COL_VERTEX(-7258, -765, -5522),\n    COL_VERTEX(-7258, -663, -5522),\n    COL_VERTEX(-5907, -1021, -5560),\n    COL_VERTEX(-5792, -1021, -5502),\n    COL_VERTEX(-5212, -1021, -4923),\n    COL_VERTEX(-5943, -1021, -5572),\n    COL_VERTEX(-5907, -1533, -5560),\n    COL_VERTEX(-5967, -1021, -5572),\n    COL_VERTEX(-6003, -1021, -5560),\n    COL_VERTEX(-6121, -1021, -5501),\n    COL_VERTEX(-4995, -970, -4706),\n    COL_VERTEX(-3696, -102, -4493),\n    COL_VERTEX(-3660, -204, -4529),\n    COL_VERTEX(-3733, -51, -4457),\n    COL_VERTEX(-3805, 0, -4385),\n    COL_VERTEX(-4095, 0, -4095),\n    COL_VERTEX(-4167, -51, -4023),\n    COL_VERTEX(-3660, -665, -4529),\n    COL_VERTEX(-4203, -102, -3986),\n    COL_VERTEX(-4240, -204, -3950),\n    COL_VERTEX(-3422, -279, -3132),\n    COL_VERTEX(-3809, 32, -4243),\n    COL_VERTEX(-3954, 32, -4099),\n    COL_VERTEX(-3809, -69, -4243),\n    COL_VERTEX(6614, 5600, 7627),\n    COL_VERTEX(6614, 4781, 7627),\n    COL_VERTEX(7917, 5600, 6324),\n    COL_VERTEX(7265, 4781, 5672),\n    COL_VERTEX(6759, 4781, 6179),\n    COL_VERTEX(6469, 4986, 6469),\n    COL_VERTEX(6469, 4781, 6469),\n    COL_VERTEX(7265, 5703, 5528),\n    COL_VERTEX(6614, 5088, 6179),\n    COL_VERTEX(6686, 4986, 6107),\n    COL_VERTEX(6686, 4781, 6107),\n    COL_VERTEX(6252, 5061, 5238),\n    COL_VERTEX(6252, 4781, 5238),\n    COL_VERTEX(5600, 5061, 6034),\n    COL_VERTEX(5600, 4781, 6034),\n    COL_VERTEX(5649, 5200, 5985),\n    COL_VERTEX(5600, 5037, 5890),\n    COL_VERTEX(-5847, 1409, -707),\n    COL_VERTEX(5579, 4879, 5869),\n    COL_VERTEX(5507, 4879, 5941),\n    COL_VERTEX(4547, 4472, 4982),\n    COL_VERTEX(4368, 4421, 4802),\n    COL_VERTEX(4219, 4368, 4653),\n    COL_VERTEX(4103, 4314, 4537),\n    COL_VERTEX(3907, 4098, 4341),\n    COL_VERTEX(4015, 4252, 4450),\n    COL_VERTEX(3849, 4058, 4284),\n    COL_VERTEX(3748, 4010, 4183),\n    COL_VERTEX(3610, 3961, 4045),\n    COL_VERTEX(3327, 3911, 3761),\n    COL_VERTEX(2888, 3859, 3322),\n    COL_VERTEX(2734, 3805, 3169),\n    COL_VERTEX(2618, 3751, 3053),\n    COL_VERTEX(2531, 3689, 2965),\n    COL_VERTEX(2350, 3433, 2784),\n    COL_VERTEX(2293, 3392, 2727),\n    COL_VERTEX(2191, 3344, 2626),\n    COL_VERTEX(2054, 3296, 2488),\n    COL_VERTEX(1764, 3245, 2198),\n    COL_VERTEX(1607, 3189, 2042),\n    COL_VERTEX(519, 2419, 953),\n    COL_VERTEX(417, 2372, 852),\n    COL_VERTEX(280, 2323, 714),\n    COL_VERTEX(-161, 2218, 273),\n    COL_VERTEX(-277, 2163, 156),\n    COL_VERTEX(-364, 2101, 69),\n    COL_VERTEX(-453, 1976, -19),\n    COL_VERTEX(-707, 1259, -273),\n    COL_VERTEX(-763, 1180, -328),\n    COL_VERTEX(6231, 4879, 5217),\n    COL_VERTEX(5528, 4877, 5962),\n    COL_VERTEX(3467, 3834, 2598),\n    COL_VERTEX(3612, 4140, 2598),\n    COL_VERTEX(3563, 4278, 2647),\n    COL_VERTEX(3510, 4353, 2700),\n    COL_VERTEX(2888, 4115, 3177),\n    COL_VERTEX(3412, 4423, 2798),\n    COL_VERTEX(2990, 4353, 3220),\n    COL_VERTEX(2937, 4278, 3273),\n    COL_VERTEX(2888, 4140, 3322),\n    COL_VERTEX(2888, 3834, 3177),\n    COL_VERTEX(6275, 5200, 5359),\n    COL_TRI_INIT(SURFACE_DEFAULT, 658),\n    COL_TRI(25, 10, 18),\n    COL_TRI(16, 17, 18),\n    COL_TRI(16, 18, 19),\n    COL_TRI(20, 21, 22),\n    COL_TRI(20, 22, 23),\n    COL_TRI(20, 23, 24),\n    COL_TRI(23, 9, 24),\n    COL_TRI(25, 18, 17),\n    COL_TRI(26, 307, 308),\n    COL_TRI(27, 26, 308),\n    COL_TRI(28, 307, 26),\n    COL_TRI(28, 309, 307),\n    COL_TRI(27, 308, 29),\n    COL_TRI(29, 310, 27),\n    COL_TRI(27, 310, 311),\n    COL_TRI(30, 31, 204),\n    COL_TRI(31, 35, 204),\n    COL_TRI(32, 312, 33),\n    COL_TRI(33, 312, 313),\n    COL_TRI(33, 313, 314),\n    COL_TRI(34, 313, 312),\n    COL_TRI(34, 315, 313),\n    COL_TRI(32, 316, 312),\n    COL_TRI(39, 321, 38),\n    COL_TRI(35, 317, 318),\n    COL_TRI(35, 31, 317),\n    COL_TRI(36, 316, 32),\n    COL_TRI(36, 319, 316),\n    COL_TRI(37, 319, 36),\n    COL_TRI(37, 320, 319),\n    COL_TRI(38, 320, 37),\n    COL_TRI(38, 321, 320),\n    COL_TRI(45, 326, 325),\n    COL_TRI(39, 322, 321),\n    COL_TRI(40, 322, 39),\n    COL_TRI(40, 323, 322),\n    COL_TRI(41, 42, 40),\n    COL_TRI(42, 323, 40),\n    COL_TRI(43, 42, 41),\n    COL_TRI(43, 324, 42),\n    COL_TRI(44, 324, 43),\n    COL_TRI(44, 325, 324),\n    COL_TRI(45, 325, 44),\n    COL_TRI(53, 52, 51),\n    COL_TRI(46, 326, 45),\n    COL_TRI(46, 327, 326),\n    COL_TRI(47, 327, 46),\n    COL_TRI(47, 328, 327),\n    COL_TRI(48, 328, 47),\n    COL_TRI(48, 329, 328),\n    COL_TRI(49, 329, 48),\n    COL_TRI(50, 49, 48),\n    COL_TRI(51, 52, 50),\n    COL_TRI(52, 49, 50),\n    COL_TRI(58, 334, 275),\n    COL_TRI(53, 330, 52),\n    COL_TRI(54, 330, 53),\n    COL_TRI(54, 331, 330),\n    COL_TRI(55, 331, 54),\n    COL_TRI(55, 332, 331),\n    COL_TRI(56, 332, 55),\n    COL_TRI(56, 333, 332),\n    COL_TRI(57, 333, 56),\n    COL_TRI(57, 275, 333),\n    COL_TRI(58, 275, 57),\n    COL_TRI(64, 339, 63),\n    COL_TRI(59, 334, 58),\n    COL_TRI(59, 335, 334),\n    COL_TRI(60, 335, 59),\n    COL_TRI(60, 336, 335),\n    COL_TRI(61, 336, 60),\n    COL_TRI(61, 337, 336),\n    COL_TRI(62, 337, 61),\n    COL_TRI(62, 338, 337),\n    COL_TRI(63, 338, 62),\n    COL_TRI(63, 339, 338),\n    COL_TRI(64, 340, 339),\n    COL_TRI(65, 340, 64),\n    COL_TRI(65, 341, 340),\n    COL_TRI(66, 341, 65),\n    COL_TRI(66, 342, 341),\n    COL_TRI(67, 342, 66),\n    COL_TRI(67, 343, 342),\n    COL_TRI(8, 68, 67),\n    COL_TRI(68, 343, 67),\n    COL_TRI(69, 68, 8),\n    COL_TRI(70, 344, 42),\n    COL_TRI(42, 247, 71),\n    COL_TRI(42, 71, 70),\n    COL_TRI(70, 71, 72),\n    COL_TRI(71, 73, 72),\n    COL_TRI(72, 73, 74),\n    COL_TRI(73, 345, 74),\n    COL_TRI(74, 345, 346),\n    COL_TRI(74, 346, 75),\n    COL_TRI(75, 346, 347),\n    COL_TRI(76, 75, 77),\n    COL_TRI(75, 347, 77),\n    COL_TRI(77, 347, 348),\n    COL_TRI(76, 77, 78),\n    COL_TRI(78, 77, 79),\n    COL_TRI(77, 348, 79),\n    COL_TRI(79, 348, 81),\n    COL_TRI(79, 81, 80),\n    COL_TRI(80, 81, 82),\n    COL_TRI(81, 349, 82),\n    COL_TRI(82, 349, 350),\n    COL_TRI(82, 350, 83),\n    COL_TRI(70, 86, 344),\n    COL_TRI(83, 351, 82),\n    COL_TRI(83, 352, 351),\n    COL_TRI(84, 80, 85),\n    COL_TRI(85, 82, 351),\n    COL_TRI(85, 80, 82),\n    COL_TRI(84, 79, 80),\n    COL_TRI(78, 79, 84),\n    COL_TRI(86, 72, 87),\n    COL_TRI(86, 70, 72),\n    COL_TRI(87, 72, 74),\n    COL_TRI(87, 74, 88),\n    COL_TRI(88, 75, 76),\n    COL_TRI(88, 74, 75),\n    COL_TRI(89, 92, 353),\n    COL_TRI(89, 353, 354),\n    COL_TRI(89, 354, 91),\n    COL_TRI(90, 355, 89),\n    COL_TRI(90, 89, 356),\n    COL_TRI(91, 356, 89),\n    COL_TRI(89, 355, 148),\n    COL_TRI(92, 93, 353),\n    COL_TRI(93, 92, 97),\n    COL_TRI(94, 97, 92),\n    COL_TRI(100, 99, 98),\n    COL_TRI(93, 97, 357),\n    COL_TRI(97, 358, 359),\n    COL_TRI(94, 358, 97),\n    COL_TRI(98, 101, 104),\n    COL_TRI(98, 104, 103),\n    COL_TRI(3, 100, 98),\n    COL_TRI(98, 103, 3),\n    COL_TRI(99, 101, 98),\n    COL_TRI(105, 106, 107),\n    COL_TRI(101, 105, 107),\n    COL_TRI(102, 105, 101),\n    COL_TRI(99, 102, 101),\n    COL_TRI(101, 107, 104),\n    COL_TRI(103, 104, 109),\n    COL_TRI(104, 107, 108),\n    COL_TRI(104, 108, 109),\n    COL_TRI(3, 103, 150),\n    COL_TRI(103, 109, 150),\n    COL_TRI(102, 106, 105),\n    COL_TRI(106, 111, 107),\n    COL_TRI(107, 111, 112),\n    COL_TRI(107, 112, 108),\n    COL_TRI(108, 112, 360),\n    COL_TRI(108, 360, 361),\n    COL_TRI(109, 108, 361),\n    COL_TRI(110, 121, 112),\n    COL_TRI(111, 110, 112),\n    COL_TRI(112, 363, 360),\n    COL_TRI(112, 121, 363),\n    COL_TRI(113, 364, 360),\n    COL_TRI(113, 360, 363),\n    COL_TRI(114, 361, 360),\n    COL_TRI(109, 361, 362),\n    COL_TRI(115, 117, 118),\n    COL_TRI(115, 118, 102),\n    COL_TRI(115, 102, 99),\n    COL_TRI(116, 115, 99),\n    COL_TRI(117, 122, 119),\n    COL_TRI(117, 119, 118),\n    COL_TRI(118, 119, 106),\n    COL_TRI(102, 118, 106),\n    COL_TRI(106, 120, 111),\n    COL_TRI(119, 120, 106),\n    COL_TRI(120, 110, 111),\n    COL_TRI(121, 365, 363),\n    COL_TRI(121, 124, 365),\n    COL_TRI(110, 124, 121),\n    COL_TRI(122, 127, 128),\n    COL_TRI(122, 128, 119),\n    COL_TRI(127, 133, 128),\n    COL_TRI(119, 128, 123),\n    COL_TRI(119, 123, 120),\n    COL_TRI(120, 123, 110),\n    COL_TRI(123, 125, 110),\n    COL_TRI(110, 125, 124),\n    COL_TRI(124, 366, 365),\n    COL_TRI(124, 129, 366),\n    COL_TRI(125, 129, 124),\n    COL_TRI(126, 363, 365),\n    COL_TRI(127, 132, 133),\n    COL_TRI(132, 140, 133),\n    COL_TRI(128, 134, 123),\n    COL_TRI(128, 133, 134),\n    COL_TRI(123, 134, 130),\n    COL_TRI(123, 130, 125),\n    COL_TRI(125, 130, 129),\n    COL_TRI(129, 367, 366),\n    COL_TRI(129, 137, 367),\n    COL_TRI(130, 137, 129),\n    COL_TRI(131, 365, 366),\n    COL_TRI(132, 139, 140),\n    COL_TRI(133, 140, 141),\n    COL_TRI(133, 141, 134),\n    COL_TRI(134, 141, 136),\n    COL_TRI(134, 136, 130),\n    COL_TRI(130, 136, 137),\n    COL_TRI(135, 144, 137),\n    COL_TRI(136, 135, 137),\n    COL_TRI(137, 146, 367),\n    COL_TRI(137, 144, 146),\n    COL_TRI(138, 366, 367),\n    COL_TRI(146, 148, 145),\n    COL_TRI(139, 147, 142),\n    COL_TRI(139, 142, 140),\n    COL_TRI(140, 142, 141),\n    COL_TRI(141, 143, 136),\n    COL_TRI(142, 143, 141),\n    COL_TRI(143, 135, 136),\n    COL_TRI(144, 148, 146),\n    COL_TRI(144, 95, 148),\n    COL_TRI(135, 95, 144),\n    COL_TRI(145, 367, 146),\n    COL_TRI(96, 94, 92),\n    COL_TRI(89, 95, 92),\n    COL_TRI(147, 359, 358),\n    COL_TRI(147, 358, 142),\n    COL_TRI(142, 358, 94),\n    COL_TRI(142, 94, 143),\n    COL_TRI(143, 94, 96),\n    COL_TRI(143, 96, 135),\n    COL_TRI(135, 96, 95),\n    COL_TRI(89, 148, 95),\n    COL_TRI(95, 96, 92),\n    COL_TRI(148, 149, 145),\n    COL_TRI(149, 148, 355),\n    COL_TRI(152, 369, 370),\n    COL_TRI(3, 150, 368),\n    COL_TRI(3, 368, 0),\n    COL_TRI(100, 116, 99),\n    COL_TRI(150, 109, 362),\n    COL_TRI(150, 362, 368),\n    COL_TRI(151, 369, 152),\n    COL_TRI(151, 371, 369),\n    COL_TRI(152, 370, 206),\n    COL_TRI(153, 206, 370),\n    COL_TRI(154, 371, 151),\n    COL_TRI(154, 372, 371),\n    COL_TRI(155, 372, 154),\n    COL_TRI(155, 373, 372),\n    COL_TRI(156, 373, 155),\n    COL_TRI(156, 374, 373),\n    COL_TRI(157, 374, 156),\n    COL_TRI(157, 376, 374),\n    COL_TRI(158, 376, 157),\n    COL_TRI(158, 377, 376),\n    COL_TRI(159, 377, 158),\n    COL_TRI(159, 158, 378),\n    COL_TRI(153, 370, 375),\n    COL_TRI(126, 113, 363),\n    COL_TRI(131, 126, 365),\n    COL_TRI(138, 131, 366),\n    COL_TRI(145, 138, 367),\n    COL_TRI(114, 360, 364),\n    COL_TRI(160, 379, 380),\n    COL_TRI(162, 383, 382),\n    COL_TRI(160, 381, 379),\n    COL_TRI(161, 382, 383),\n    COL_TRI(161, 165, 382),\n    COL_TRI(162, 382, 384),\n    COL_TRI(162, 384, 164),\n    COL_TRI(162, 164, 385),\n    COL_TRI(163, 385, 164),\n    COL_TRI(164, 170, 163),\n    COL_TRI(164, 165, 170),\n    COL_TRI(165, 171, 170),\n    COL_TRI(163, 386, 385),\n    COL_TRI(165, 387, 171),\n    COL_TRI(165, 388, 387),\n    COL_TRI(165, 161, 388),\n    COL_TRI(14, 392, 391),\n    COL_TRI(166, 389, 14),\n    COL_TRI(167, 15, 166),\n    COL_TRI(166, 169, 168),\n    COL_TRI(166, 390, 169),\n    COL_TRI(166, 14, 390),\n    COL_TRI(168, 167, 166),\n    COL_TRI(169, 387, 168),\n    COL_TRI(168, 388, 167),\n    COL_TRI(168, 387, 388),\n    COL_TRI(14, 391, 390),\n    COL_TRI(164, 384, 382),\n    COL_TRI(170, 390, 391),\n    COL_TRI(170, 391, 163),\n    COL_TRI(163, 391, 392),\n    COL_TRI(163, 392, 386),\n    COL_TRI(171, 390, 170),\n    COL_TRI(171, 169, 390),\n    COL_TRI(169, 171, 387),\n    COL_TRI(164, 382, 165),\n    COL_TRI(176, 397, 292),\n    COL_TRI(172, 393, 301),\n    COL_TRI(172, 394, 393),\n    COL_TRI(173, 395, 176),\n    COL_TRI(173, 396, 395),\n    COL_TRI(174, 395, 175),\n    COL_TRI(174, 397, 395),\n    COL_TRI(175, 395, 396),\n    COL_TRI(176, 395, 397),\n    COL_TRI(8, 25, 300),\n    COL_TRI(8, 300, 303),\n    COL_TRI(24, 398, 175),\n    COL_TRI(24, 11, 398),\n    COL_TRI(67, 66, 209),\n    COL_TRI(67, 209, 210),\n    COL_TRI(67, 11, 8),\n    COL_TRI(67, 210, 11),\n    COL_TRI(181, 180, 61),\n    COL_TRI(66, 212, 209),\n    COL_TRI(66, 65, 212),\n    COL_TRI(177, 212, 65),\n    COL_TRI(177, 65, 64),\n    COL_TRI(178, 177, 64),\n    COL_TRI(178, 64, 63),\n    COL_TRI(179, 178, 63),\n    COL_TRI(179, 63, 62),\n    COL_TRI(180, 179, 62),\n    COL_TRI(180, 62, 61),\n    COL_TRI(186, 56, 55),\n    COL_TRI(181, 61, 60),\n    COL_TRI(182, 181, 60),\n    COL_TRI(182, 60, 59),\n    COL_TRI(183, 182, 59),\n    COL_TRI(183, 59, 58),\n    COL_TRI(184, 183, 58),\n    COL_TRI(184, 58, 57),\n    COL_TRI(185, 184, 57),\n    COL_TRI(185, 57, 56),\n    COL_TRI(186, 185, 56),\n    COL_TRI(192, 191, 48),\n    COL_TRI(187, 186, 55),\n    COL_TRI(187, 55, 54),\n    COL_TRI(188, 187, 54),\n    COL_TRI(188, 54, 53),\n    COL_TRI(189, 188, 53),\n    COL_TRI(189, 53, 51),\n    COL_TRI(190, 189, 51),\n    COL_TRI(190, 51, 50),\n    COL_TRI(191, 190, 50),\n    COL_TRI(191, 50, 48),\n    COL_TRI(196, 44, 43),\n    COL_TRI(192, 48, 47),\n    COL_TRI(193, 192, 47),\n    COL_TRI(194, 193, 46),\n    COL_TRI(193, 47, 46),\n    COL_TRI(194, 46, 45),\n    COL_TRI(195, 194, 45),\n    COL_TRI(195, 45, 44),\n    COL_TRI(196, 195, 44),\n    COL_TRI(202, 201, 37),\n    COL_TRI(197, 196, 43),\n    COL_TRI(197, 43, 41),\n    COL_TRI(198, 197, 41),\n    COL_TRI(198, 41, 40),\n    COL_TRI(199, 198, 40),\n    COL_TRI(199, 40, 39),\n    COL_TRI(200, 199, 39),\n    COL_TRI(200, 39, 38),\n    COL_TRI(201, 38, 37),\n    COL_TRI(201, 200, 38),\n    COL_TRI(202, 37, 36),\n    COL_TRI(203, 202, 36),\n    COL_TRI(203, 36, 32),\n    COL_TRI(204, 203, 32),\n    COL_TRI(204, 32, 33),\n    COL_TRI(30, 204, 33),\n    COL_TRI(30, 33, 314),\n    COL_TRI(205, 207, 156),\n    COL_TRI(206, 208, 205),\n    COL_TRI(205, 156, 155),\n    COL_TRI(205, 152, 206),\n    COL_TRI(205, 151, 152),\n    COL_TRI(206, 153, 208),\n    COL_TRI(205, 154, 151),\n    COL_TRI(205, 155, 154),\n    COL_TRI(207, 157, 156),\n    COL_TRI(207, 158, 157),\n    COL_TRI(207, 378, 158),\n    COL_TRI(205, 399, 207),\n    COL_TRI(208, 153, 378),\n    COL_TRI(208, 378, 207),\n    COL_TRI(209, 211, 210),\n    COL_TRI(210, 211, 11),\n    COL_TRI(209, 220, 211),\n    COL_TRI(211, 400, 11),\n    COL_TRI(211, 401, 400),\n    COL_TRI(212, 220, 209),\n    COL_TRI(212, 221, 220),\n    COL_TRI(213, 221, 212),\n    COL_TRI(177, 213, 212),\n    COL_TRI(178, 213, 177),\n    COL_TRI(178, 222, 213),\n    COL_TRI(179, 222, 178),\n    COL_TRI(179, 223, 222),\n    COL_TRI(180, 223, 179),\n    COL_TRI(180, 224, 223),\n    COL_TRI(181, 224, 180),\n    COL_TRI(181, 225, 224),\n    COL_TRI(182, 214, 181),\n    COL_TRI(214, 225, 181),\n    COL_TRI(188, 229, 187),\n    COL_TRI(183, 214, 182),\n    COL_TRI(183, 226, 214),\n    COL_TRI(184, 226, 183),\n    COL_TRI(184, 227, 226),\n    COL_TRI(215, 227, 184),\n    COL_TRI(185, 215, 184),\n    COL_TRI(186, 215, 185),\n    COL_TRI(186, 228, 215),\n    COL_TRI(187, 228, 186),\n    COL_TRI(187, 229, 228),\n    COL_TRI(193, 234, 233),\n    COL_TRI(188, 230, 229),\n    COL_TRI(189, 216, 188),\n    COL_TRI(216, 230, 188),\n    COL_TRI(190, 216, 189),\n    COL_TRI(190, 231, 216),\n    COL_TRI(191, 231, 190),\n    COL_TRI(191, 232, 231),\n    COL_TRI(192, 232, 191),\n    COL_TRI(192, 233, 232),\n    COL_TRI(193, 233, 192),\n    COL_TRI(199, 218, 198),\n    COL_TRI(194, 234, 193),\n    COL_TRI(194, 235, 234),\n    COL_TRI(195, 235, 194),\n    COL_TRI(195, 236, 235),\n    COL_TRI(196, 217, 195),\n    COL_TRI(217, 236, 195),\n    COL_TRI(197, 217, 196),\n    COL_TRI(197, 83, 217),\n    COL_TRI(198, 218, 197),\n    COL_TRI(218, 83, 197),\n    COL_TRI(204, 35, 219),\n    COL_TRI(199, 237, 218),\n    COL_TRI(200, 237, 199),\n    COL_TRI(200, 238, 237),\n    COL_TRI(201, 238, 200),\n    COL_TRI(201, 239, 238),\n    COL_TRI(202, 239, 201),\n    COL_TRI(202, 240, 239),\n    COL_TRI(219, 240, 202),\n    COL_TRI(203, 219, 202),\n    COL_TRI(204, 219, 203),\n    COL_TRI(211, 402, 401),\n    COL_TRI(211, 403, 402),\n    COL_TRI(211, 220, 403),\n    COL_TRI(220, 404, 403),\n    COL_TRI(220, 221, 404),\n    COL_TRI(221, 213, 404),\n    COL_TRI(213, 222, 405),\n    COL_TRI(213, 405, 404),\n    COL_TRI(225, 214, 410),\n    COL_TRI(222, 223, 406),\n    COL_TRI(222, 406, 407),\n    COL_TRI(222, 407, 405),\n    COL_TRI(223, 408, 406),\n    COL_TRI(223, 224, 408),\n    COL_TRI(224, 409, 408),\n    COL_TRI(224, 225, 409),\n    COL_TRI(225, 410, 409),\n    COL_TRI(229, 416, 415),\n    COL_TRI(214, 411, 410),\n    COL_TRI(214, 226, 411),\n    COL_TRI(226, 412, 411),\n    COL_TRI(226, 227, 412),\n    COL_TRI(227, 413, 412),\n    COL_TRI(227, 215, 413),\n    COL_TRI(215, 414, 413),\n    COL_TRI(215, 228, 414),\n    COL_TRI(228, 415, 414),\n    COL_TRI(228, 229, 415),\n    COL_TRI(233, 234, 421),\n    COL_TRI(229, 230, 416),\n    COL_TRI(230, 417, 416),\n    COL_TRI(230, 216, 417),\n    COL_TRI(216, 418, 417),\n    COL_TRI(216, 231, 418),\n    COL_TRI(231, 419, 418),\n    COL_TRI(231, 232, 419),\n    COL_TRI(232, 420, 419),\n    COL_TRI(232, 233, 420),\n    COL_TRI(233, 421, 420),\n    COL_TRI(218, 426, 425),\n    COL_TRI(234, 422, 421),\n    COL_TRI(234, 235, 422),\n    COL_TRI(235, 423, 422),\n    COL_TRI(235, 236, 423),\n    COL_TRI(236, 424, 423),\n    COL_TRI(236, 217, 424),\n    COL_TRI(217, 350, 424),\n    COL_TRI(217, 83, 350),\n    COL_TRI(83, 425, 350),\n    COL_TRI(83, 218, 425),\n    COL_TRI(219, 35, 318),\n    COL_TRI(218, 237, 426),\n    COL_TRI(237, 427, 426),\n    COL_TRI(237, 238, 427),\n    COL_TRI(238, 428, 427),\n    COL_TRI(238, 239, 428),\n    COL_TRI(239, 429, 428),\n    COL_TRI(239, 240, 429),\n    COL_TRI(240, 430, 429),\n    COL_TRI(240, 219, 430),\n    COL_TRI(219, 318, 430),\n    COL_TRI(246, 245, 322),\n    COL_TRI(241, 242, 316),\n    COL_TRI(242, 34, 312),\n    COL_TRI(242, 312, 316),\n    COL_TRI(241, 316, 319),\n    COL_TRI(243, 241, 319),\n    COL_TRI(243, 319, 320),\n    COL_TRI(244, 243, 320),\n    COL_TRI(244, 320, 321),\n    COL_TRI(245, 244, 321),\n    COL_TRI(245, 321, 322),\n    COL_TRI(251, 326, 327),\n    COL_TRI(246, 322, 323),\n    COL_TRI(247, 246, 323),\n    COL_TRI(247, 323, 42),\n    COL_TRI(248, 247, 42),\n    COL_TRI(248, 42, 324),\n    COL_TRI(249, 248, 324),\n    COL_TRI(249, 324, 325),\n    COL_TRI(250, 249, 325),\n    COL_TRI(250, 325, 326),\n    COL_TRI(251, 250, 326),\n    COL_TRI(257, 256, 330),\n    COL_TRI(252, 251, 327),\n    COL_TRI(252, 327, 328),\n    COL_TRI(253, 252, 328),\n    COL_TRI(253, 328, 329),\n    COL_TRI(254, 253, 329),\n    COL_TRI(254, 329, 49),\n    COL_TRI(255, 254, 49),\n    COL_TRI(255, 49, 52),\n    COL_TRI(256, 255, 52),\n    COL_TRI(256, 52, 330),\n    COL_TRI(262, 334, 335),\n    COL_TRI(257, 330, 331),\n    COL_TRI(258, 257, 331),\n    COL_TRI(258, 331, 332),\n    COL_TRI(259, 258, 332),\n    COL_TRI(259, 332, 333),\n    COL_TRI(260, 259, 333),\n    COL_TRI(260, 333, 275),\n    COL_TRI(261, 260, 275),\n    COL_TRI(261, 275, 334),\n    COL_TRI(262, 261, 334),\n    COL_TRI(263, 262, 335),\n    COL_TRI(263, 335, 336),\n    COL_TRI(264, 263, 336),\n    COL_TRI(264, 336, 337),\n    COL_TRI(265, 264, 337),\n    COL_TRI(265, 337, 338),\n    COL_TRI(266, 265, 338),\n    COL_TRI(266, 339, 340),\n    COL_TRI(267, 266, 340),\n    COL_TRI(266, 338, 339),\n    COL_TRI(268, 267, 341),\n    COL_TRI(267, 340, 341),\n    COL_TRI(269, 268, 341),\n    COL_TRI(269, 341, 342),\n    COL_TRI(270, 269, 342),\n    COL_TRI(270, 342, 343),\n    COL_TRI(270, 68, 431),\n    COL_TRI(270, 343, 68),\n    COL_TRI(273, 276, 283),\n    COL_TRI(11, 400, 271),\n    COL_TRI(271, 400, 401),\n    COL_TRI(271, 401, 432),\n    COL_TRI(272, 68, 69),\n    COL_TRI(272, 431, 68),\n    COL_TRI(273, 274, 276),\n    COL_TRI(274, 433, 275),\n    COL_TRI(275, 434, 274),\n    COL_TRI(275, 260, 434),\n    COL_TRI(274, 434, 435),\n    COL_TRI(274, 435, 276),\n    COL_TRI(276, 435, 436),\n    COL_TRI(276, 436, 285),\n    COL_TRI(274, 273, 433),\n    COL_TRI(277, 289, 437),\n    COL_TRI(277, 288, 289),\n    COL_TRI(278, 288, 277),\n    COL_TRI(278, 287, 288),\n    COL_TRI(279, 287, 278),\n    COL_TRI(279, 282, 287),\n    COL_TRI(280, 282, 279),\n    COL_TRI(281, 286, 282),\n    COL_TRI(282, 286, 287),\n    COL_TRI(280, 281, 282),\n    COL_TRI(283, 285, 284),\n    COL_TRI(283, 276, 285),\n    COL_TRI(284, 285, 281),\n    COL_TRI(284, 281, 280),\n    COL_TRI(281, 438, 286),\n    COL_TRI(285, 438, 281),\n    COL_TRI(285, 436, 438),\n    COL_TRI(286, 439, 287),\n    COL_TRI(287, 440, 288),\n    COL_TRI(287, 439, 440),\n    COL_TRI(290, 174, 175),\n    COL_TRI(288, 440, 441),\n    COL_TRI(288, 441, 289),\n    COL_TRI(289, 441, 412),\n    COL_TRI(289, 412, 227),\n    COL_TRI(227, 437, 289),\n    COL_TRI(227, 442, 437),\n    COL_TRI(175, 396, 24),\n    COL_TRI(290, 175, 398),\n    COL_TRI(291, 397, 174),\n    COL_TRI(291, 311, 397),\n    COL_TRI(292, 397, 311),\n    COL_TRI(27, 311, 291),\n    COL_TRI(293, 311, 310),\n    COL_TRI(292, 311, 293),\n    COL_TRI(294, 26, 27),\n    COL_TRI(294, 27, 295),\n    COL_TRI(295, 27, 291),\n    COL_TRI(296, 309, 28),\n    COL_TRI(297, 26, 294),\n    COL_TRI(297, 28, 26),\n    COL_TRI(298, 309, 443),\n    COL_TRI(299, 309, 298),\n    COL_TRI(299, 307, 309),\n    COL_TRI(296, 443, 309),\n    COL_TRI(300, 301, 296),\n    COL_TRI(301, 443, 296),\n    COL_TRI(298, 443, 302),\n    COL_TRI(302, 443, 301),\n    COL_TRI(303, 296, 305),\n    COL_TRI(303, 300, 296),\n    COL_TRI(25, 301, 300),\n    COL_TRI(25, 172, 301),\n    COL_TRI(304, 174, 290),\n    COL_TRI(304, 291, 174),\n    COL_TRI(295, 291, 304),\n    COL_TRI(305, 28, 297),\n    COL_TRI(305, 296, 28),\n    COL_TRI(302, 301, 393),\n    COL_TRI(306, 307, 299),\n    COL_TRI(306, 310, 307),\n    COL_TRI(293, 310, 306),\n    COL_TRI(30, 314, 2),\n    COL_TRI(30, 2, 1),\n    COL_TRI_INIT(SURFACE_DEATH_PLANE, 2),\n    COL_TRI(4, 5, 6),\n    COL_TRI(4, 7, 5),\n    COL_TRI_INIT(SURFACE_INSTANT_WARP_1D, 2),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI_INIT(SURFACE_NO_CAM_COL_SLIPPERY, 4),\n    COL_TRI(8, 9, 10),\n    COL_TRI(8, 11, 9),\n    COL_TRI(12, 13, 14),\n    COL_TRI(12, 14, 15),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/2/geo.inc.c",
    "content": "// 0x0E000B5C\nconst GeoLayout ttm_geo_000B5C[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND_COLOR(0x0001),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 12800, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(9, 0, 2000, 6000, 0, 0, 0, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, ttm_seg7_dl_0701D798),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, ttm_seg7_dl_0701DBB8),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(0, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/2/macro.inc.c",
    "content": "// 0x070302C8 - 0x07030338\nconst MacroObject ttm_seg7_area_2_macro_objs[] = {\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,   /*yaw*/   0, /*pos*/  6100,  4836,  6981),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,   /*yaw*/   0, /*pos*/  6645,  4800,  7563),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,   /*yaw*/   0, /*pos*/  7845,  4836,  6327),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,   /*yaw*/   0, /*pos*/  7263,  4836,  5745),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_hidden_1up,           /*yaw*/   0, /*pos*/  6936,  4800,  6654, /*bhvParam*/ 4),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  6281,  4836,  6472),\n    MACRO_OBJECT               (/*preset*/ macro_1up,                  /*yaw*/   0, /*pos*/  6754,  4800,  5963),\n    MACRO_OBJECT               (/*preset*/ macro_1up_sliding,          /*yaw*/   0, /*pos*/  1764,  2943,  1480),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal, /*yaw*/  45, /*pos*/  2972,  3963,  2690),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal, /*yaw*/  45, /*pos*/    27,  2145,  -290),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/ -2763,   -37, -2981),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/3/1/model.inc.c",
    "content": "// 0x0701DC60 - 0x0701DC78\nstatic const Lights1 ttm_seg7_lights_0701DC60 = gdSPDefLights1(\n    0x08, 0x08, 0x08,\n    0x22, 0x22, 0x22, 0x28, 0x28, 0x28\n);\n\n// 0x0701DC78 - 0x0701DC90\nstatic const Lights1 ttm_seg7_lights_0701DC78 = gdSPDefLights1(\n    0x0c, 0x0c, 0x0c,\n    0x33, 0x33, 0x33, 0x28, 0x28, 0x28\n);\n\n// 0x0701DC90 - 0x0701DCA8\nstatic const Lights1 ttm_seg7_lights_0701DC90 = gdSPDefLights1(\n    0x11, 0x11, 0x11,\n    0x44, 0x44, 0x44, 0x28, 0x28, 0x28\n);\n\n// 0x0701DCA8 - 0x0701DCC0\nstatic const Lights1 ttm_seg7_lights_0701DCA8 = gdSPDefLights1(\n    0x15, 0x15, 0x15,\n    0x55, 0x55, 0x55, 0x28, 0x28, 0x28\n);\n\n// 0x0701DCC0 - 0x0701DCD8\nstatic const Lights1 ttm_seg7_lights_0701DCC0 = gdSPDefLights1(\n    0x19, 0x19, 0x19,\n    0x66, 0x66, 0x66, 0x28, 0x28, 0x28\n);\n\n// 0x0701DCD8 - 0x0701DCF0\nstatic const Lights1 ttm_seg7_lights_0701DCD8 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0701DCF0 - 0x0701DD08\nstatic const Lights1 ttm_seg7_lights_0701DCF0 = gdSPDefLights1(\n    0x1d, 0x1d, 0x1d,\n    0x77, 0x77, 0x77, 0x28, 0x28, 0x28\n);\n\n// 0x0701DD08 - 0x0701DD20\nstatic const Lights1 ttm_seg7_lights_0701DD08 = gdSPDefLights1(\n    0x22, 0x22, 0x22,\n    0x88, 0x88, 0x88, 0x28, 0x28, 0x28\n);\n\n// 0x0701DD20 - 0x0701DD38\nstatic const Lights1 ttm_seg7_lights_0701DD20 = gdSPDefLights1(\n    0x26, 0x26, 0x26,\n    0x99, 0x99, 0x99, 0x28, 0x28, 0x28\n);\n\n// 0x0701DD38 - 0x0701DD50\nstatic const Lights1 ttm_seg7_lights_0701DD38 = gdSPDefLights1(\n    0x2a, 0x2a, 0x2a,\n    0xaa, 0xaa, 0xaa, 0x28, 0x28, 0x28\n);\n\n// 0x0701DD50 - 0x0701DD68\nstatic const Lights1 ttm_seg7_lights_0701DD50 = gdSPDefLights1(\n    0x2e, 0x2e, 0x2e,\n    0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28\n);\n\n// 0x0701DD68 - 0x0701DD80\nstatic const Lights1 ttm_seg7_lights_0701DD68 = gdSPDefLights1(\n    0x33, 0x33, 0x33,\n    0xcc, 0xcc, 0xcc, 0x28, 0x28, 0x28\n);\n\n// 0x0701DD80 - 0x0701DD98\nstatic const Lights1 ttm_seg7_lights_0701DD80 = gdSPDefLights1(\n    0x37, 0x37, 0x37,\n    0xdd, 0xdd, 0xdd, 0x28, 0x28, 0x28\n);\n\n// 0x0701DD98 - 0x0701DDB0\nstatic const Lights1 ttm_seg7_lights_0701DD98 = gdSPDefLights1(\n    0x3b, 0x3b, 0x3b,\n    0xee, 0xee, 0xee, 0x28, 0x28, 0x28\n);\n\n// 0x0701DDB0 - 0x0701DDC8\nstatic const Lights1 ttm_seg7_lights_0701DDB0 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x0701DDC8 - 0x0701DE08\nstatic const Vtx ttm_seg7_vertex_0701DDC8[] = {\n    {{{  6962,   7554,   6962}, 0, {   894,  -7186}, {0x29, 0x89, 0x0f, 0xff}}},\n    {{{  6433,   7168,   5854}, 0, {-11272,    990}, {0xd3, 0x8b, 0xed, 0xff}}},\n    {{{  7251,   7554,   6672}, 0, {   894,    990}, {0x00, 0x8d, 0x35, 0xff}}},\n    {{{  6144,   7168,   6144}, 0, {-11272,  -7186}, {0xe0, 0xa0, 0xb4, 0xff}}},\n};\n\n// 0x0701DE08 - 0x0701DE88\nstatic const Vtx ttm_seg7_vertex_0701DE08[] = {\n    {{{  6889,   7503,   7034}, 0, { -5404,   -904}, {0x46, 0x99, 0xea, 0xff}}},\n    {{{  6071,   7117,   6216}, 0, {  1208,   -904}, {0x0f, 0xa6, 0xa9, 0xff}}},\n    {{{  6144,   7168,   6144}, 0, {  1120,  -2072}, {0xe0, 0xa0, 0xb4, 0xff}}},\n    {{{  6962,   7554,   6962}, 0, { -5492,  -2072}, {0x29, 0x89, 0x0f, 0xff}}},\n    {{{  7251,   7554,   6672}, 0, {  1312,  -2072}, {0x00, 0x8d, 0x35, 0xff}}},\n    {{{  6506,   7117,   5782}, 0, { -5388,   -904}, {0xb1, 0x9e, 0x09, 0xff}}},\n    {{{  7324,   7503,   6600}, 0, {  1224,   -904}, {0xe0, 0xa1, 0x4d, 0xff}}},\n    {{{  6433,   7168,   5854}, 0, { -5300,  -2072}, {0xd3, 0x8b, 0xed, 0xff}}},\n};\n\n// 0x0701DE88 - 0x0701DF08\nstatic const Vtx ttm_seg7_vertex_0701DE88[] = {\n    {{{  6853,   7452,   7071}, 0, { -5316,   -138}, {0x56, 0xb2, 0xce, 0xff}}},\n    {{{  6071,   7117,   6216}, 0, {  1208,   -904}, {0x0f, 0xa6, 0xa9, 0xff}}},\n    {{{  6889,   7503,   7034}, 0, { -5404,   -904}, {0x46, 0x99, 0xea, 0xff}}},\n    {{{  6035,   7066,   6253}, 0, {  1296,   -138}, {0x1a, 0xc3, 0x95, 0xff}}},\n    {{{  7324,   7503,   6600}, 0, {  1224,   -904}, {0xe0, 0xa1, 0x4d, 0xff}}},\n    {{{  6506,   7117,   5782}, 0, { -5388,   -904}, {0xb1, 0x9e, 0x09, 0xff}}},\n    {{{  6542,   7066,   5746}, 0, { -5476,   -138}, {0x9b, 0xb9, 0x18, 0xff}}},\n    {{{  7360,   7452,   6564}, 0, {  1136,   -138}, {0xc6, 0xbd, 0x5a, 0xff}}},\n};\n\n// 0x0701DF08 - 0x0701DF88\nstatic const Vtx ttm_seg7_vertex_0701DF08[] = {\n    {{{  6817,   7349,   7107}, 0, { -5140,    990}, {0x5d, 0xe4, 0xb0, 0xff}}},\n    {{{  5999,   6964,   6289}, 0, {  1470,    990}, {0x01, 0xec, 0x83, 0xff}}},\n    {{{  6035,   7066,   6253}, 0, {  1296,   -138}, {0x1a, 0xc3, 0x95, 0xff}}},\n    {{{  6853,   7452,   7071}, 0, { -5316,   -138}, {0x56, 0xb2, 0xce, 0xff}}},\n    {{{  7360,   7452,   6564}, 0, {  1136,   -138}, {0xc6, 0xbd, 0x5a, 0xff}}},\n    {{{  6578,   6964,   5710}, 0, { -5650,    990}, {0x8c, 0xe6, 0x2b, 0xff}}},\n    {{{  7396,   7349,   6527}, 0, {   960,    990}, {0xb0, 0xe3, 0x5e, 0xff}}},\n    {{{  6542,   7066,   5746}, 0, { -5476,   -138}, {0x9b, 0xb9, 0x18, 0xff}}},\n};\n\n// 0x0701DF88 - 0x0701E008\nstatic const Vtx ttm_seg7_vertex_0701DF88[] = {\n    {{{  7396,   6888,   6527}, 0, {  1290,   1308}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  6578,   6964,   5710}, 0, { -4118,  -3098}, {0x8c, 0xe6, 0x2b, 0xff}}},\n    {{{  6578,   6503,   5710}, 0, { -4852,   1308}, {0x88, 0x00, 0xd8, 0xff}}},\n    {{{  7396,   7349,   6527}, 0, {  2026,  -3098}, {0xb0, 0xe3, 0x5e, 0xff}}},\n    {{{  5999,   6503,   6289}, 0, {  6848,   4374}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{  6817,   7349,   7107}, 0, {     0,      0}, {0x5d, 0xe4, 0xb0, 0xff}}},\n    {{{  6817,   6888,   7107}, 0, {   702,   4374}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  5999,   6964,   6289}, 0, {  6114,      0}, {0x01, 0xec, 0x83, 0xff}}},\n};\n\n// 0x0701E008 - 0x0701E0F8\nstatic const Vtx ttm_seg7_vertex_0701E008[] = {\n    {{{  -841,  -2285,  -2957}, 0, { -3096,      0}, {0x39, 0x37, 0x9e, 0xff}}},\n    {{{  -840,  -2387,  -2957}, 0, { -3102,    990}, {0x71, 0x01, 0xc8, 0xff}}},\n    {{{ -1659,  -2387,  -2957}, 0, {  5072,    990}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -1660,  -2285,  -2957}, 0, { 12092,    -44}, {0xa6, 0x56, 0xeb, 0xff}}},\n    {{{ -1659,  -2387,  -2957}, 0, { 11820,    942}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -1659,  -2865,  -1220}, 0, { -6162,    942}, {0x8f, 0xff, 0x38, 0xff}}},\n    {{{ -1660,  -2763,  -1220}, 0, { -5892,    -44}, {0xd1, 0x2d, 0x6c, 0xff}}},\n    {{{ -1660,  -2763,  -1220}, 0, { -3102,      0}, {0xd1, 0x2d, 0x6c, 0xff}}},\n    {{{  -840,  -2865,  -1220}, 0, {  5078,    990}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  -841,  -2763,  -1220}, 0, {  5072,      0}, {0x4f, 0x4d, 0x3d, 0xff}}},\n    {{{ -1659,  -2865,  -1220}, 0, { -3096,    990}, {0x8f, 0xff, 0x38, 0xff}}},\n    {{{  -841,  -2763,  -1220}, 0, { -5892,      4}, {0x4f, 0x4d, 0x3d, 0xff}}},\n    {{{  -840,  -2865,  -1220}, 0, { -6162,    990}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  -840,  -2387,  -2957}, 0, { 11820,    990}, {0x71, 0x01, 0xc8, 0xff}}},\n    {{{  -841,  -2285,  -2957}, 0, { 12092,      4}, {0x39, 0x37, 0x9e, 0xff}}},\n};\n\n// 0x0701E0F8 - 0x0701E1E8\nstatic const Vtx ttm_seg7_vertex_0701E0F8[] = {\n    {{{  -790,  -1773,  -3469}, 0, {    32,     26}, {0x62, 0x2f, 0x41, 0xff}}},\n    {{{  -789,  -1090,  -5719}, 0, { 23474,    990}, {0x7e, 0x01, 0x00, 0xff}}},\n    {{{  -790,   -988,  -5719}, 0, { 23810,     26}, {0x1f, 0x72, 0x2b, 0xff}}},\n    {{{  -841,  -2285,  -2957}, 0, { -3096,      0}, {0x39, 0x37, 0x9e, 0xff}}},\n    {{{ -1659,  -2387,  -2957}, 0, {  5072,    990}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{ -1660,  -2285,  -2957}, 0, {  5078,      0}, {0xa6, 0x56, 0xeb, 0xff}}},\n    {{{ -1609,   -988,  -5719}, 0, {-19784,    -24}, {0xba, 0x61, 0x27, 0xff}}},\n    {{{ -1608,  -1090,  -5719}, 0, {-19448,    942}, {0x82, 0xff, 0x00, 0xff}}},\n    {{{ -1608,  -1875,  -3469}, 0, {  4328,    942}, {0x8f, 0xff, 0x38, 0xff}}},\n    {{{ -1609,  -1773,  -3469}, 0, {  3992,    -24}, {0xdb, 0x46, 0x63, 0xff}}},\n    {{{ -1609,  -1773,  -3469}, 0, {   -36,      0}, {0xdb, 0x46, 0x63, 0xff}}},\n    {{{  -789,  -1875,  -3469}, 0, {  8144,    990}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  -790,  -1773,  -3469}, 0, {  8138,      0}, {0x62, 0x2f, 0x41, 0xff}}},\n    {{{ -1608,  -1875,  -3469}, 0, {     0,    990}, {0x8f, 0xff, 0x38, 0xff}}},\n    {{{  -789,  -1875,  -3469}, 0, {  -302,    990}, {0x38, 0x00, 0x71, 0xff}}},\n};\n\n// 0x0701E1E8 - 0x0701E2E8\nstatic const Vtx ttm_seg7_vertex_0701E1E8[] = {\n    {{{  -994,  -3275,   -708}, 0, { -3102,      0}, {0x3b, 0x37, 0x9f, 0xff}}},\n    {{{ -1916,  -3377,   -708}, 0, {  6094,    990}, {0xd2, 0xd5, 0x92, 0xff}}},\n    {{{ -1917,  -3275,   -708}, 0, {  6100,      0}, {0xa3, 0x55, 0xf5, 0xff}}},\n    {{{ -1917,  -3275,   -708}, 0, { -4118,      0}, {0xa3, 0x55, 0xf5, 0xff}}},\n    {{{ -1916,  -3377,   -708}, 0, { -3732,    914}, {0xd2, 0xd5, 0x92, 0xff}}},\n    {{{ -1916,  -4389,   1778}, 0, { 23068,    914}, {0xa4, 0xaa, 0x0a, 0xff}}},\n    {{{ -1917,  -4287,   1778}, 0, { 22682,      0}, {0xd2, 0x2a, 0x6e, 0xff}}},\n    {{{ -1917,  -4287,   1778}, 0, {   -36,      0}, {0xd2, 0x2a, 0x6e, 0xff}}},\n    {{{ -1916,  -4389,   1778}, 0, {     0,    990}, {0xa4, 0xaa, 0x0a, 0xff}}},\n    {{{  -994,  -4389,   1778}, 0, {  9172,    990}, {0x3b, 0xc9, 0x61, 0xff}}},\n    {{{  -994,  -4287,   1778}, 0, {  9166,      0}, {0x4e, 0x48, 0x44, 0xff}}},\n    {{{  -994,  -4287,   1778}, 0, { 22682,     24}, {0x4e, 0x48, 0x44, 0xff}}},\n    {{{  -994,  -4389,   1778}, 0, { 23068,    970}, {0x3b, 0xc9, 0x61, 0xff}}},\n    {{{  -994,  -3377,   -708}, 0, { -3732,    970}, {0x4e, 0xb8, 0xbc, 0xff}}},\n    {{{  -994,  -3275,   -708}, 0, { -4118,     24}, {0x3b, 0x37, 0x9f, 0xff}}},\n    {{{  -994,  -3377,   -708}, 0, { -3108,    990}, {0x4e, 0xb8, 0xbc, 0xff}}},\n};\n\n// 0x0701E2E8 - 0x0701E3E8\nstatic const Vtx ttm_seg7_vertex_0701E2E8[] = {\n    {{{  8192,  -8367,   -100}, 0, {   958,    100}, {0x1d, 0x74, 0xd9, 0xff}}},\n    {{{  8192,  -8265,      1}, 0, {   990,      0}, {0x0d, 0x30, 0x8c, 0xff}}},\n    {{{  9421,  -8640,     25}, 0, {    18,    102}, {0x1c, 0x59, 0xab, 0xff}}},\n    {{{  8192,  -8367,   -100}, 0, {     0,     92}, {0x1d, 0x74, 0xd9, 0xff}}},\n    {{{  6181,  -7986,   -102}, 0, {   982,     98}, {0x14, 0x6e, 0xc5, 0xff}}},\n    {{{  8192,  -8265,      1}, 0, {    16,    -38}, {0x0d, 0x30, 0x8c, 0xff}}},\n    {{{  6194,  -7883,      0}, 0, {   990,      0}, {0xfa, 0x2f, 0x8b, 0xff}}},\n    {{{  8192,  -8265,   -817}, 0, {     0,    990}, {0x0c, 0x2f, 0x75, 0xff}}},\n    {{{  6094,  -7883,   -813}, 0, {   990,    990}, {0x12, 0x30, 0x74, 0xff}}},\n    {{{  8192,  -8367,   -715}, 0, {     0,    864}, {0x1e, 0x6d, 0x37, 0xff}}},\n    {{{  6106,  -7986,   -712}, 0, {   982,    864}, {0x1f, 0x75, 0x24, 0xff}}},\n    {{{  8192,  -8265,   -817}, 0, {   990,    990}, {0x0c, 0x2f, 0x75, 0xff}}},\n    {{{  8192,  -8367,   -715}, 0, {   958,    868}, {0x1e, 0x6d, 0x37, 0xff}}},\n    {{{  9421,  -8801,   -680}, 0, {     0,    990}, {0x1a, 0x54, 0x5b, 0xff}}},\n    {{{  9421,  -8860,   -548}, 0, {   -48,    828}, {0x29, 0x78, 0x03, 0xff}}},\n    {{{  9421,  -8508,     84}, 0, {    58,     20}, {0x03, 0x04, 0x82, 0xff}}},\n};\n\n// 0x0701E3E8 - 0x0701E4E8\nstatic const Vtx ttm_seg7_vertex_0701E3E8[] = {\n    {{{  9421,  -8801,   -680}, 0, {   990,    990}, {0x1a, 0x54, 0x5b, 0xff}}},\n    {{{  9421,  -8860,   -548}, 0, {   960,    862}, {0x29, 0x78, 0x03, 0xff}}},\n    {{{ 10650,  -9276,   -524}, 0, {     0,    990}, {0x22, 0x6c, 0x38, 0xff}}},\n    {{{ 10650,  -9288,   -380}, 0, {   -48,    828}, {0x27, 0x72, 0xdb, 0xff}}},\n    {{{  9421,  -8640,     25}, 0, {   960,     94}, {0x1c, 0x59, 0xab, 0xff}}},\n    {{{  9421,  -8508,     84}, 0, {   990,      0}, {0x03, 0x04, 0x82, 0xff}}},\n    {{{ 10650,  -8893,     90}, 0, {     8,    104}, {0x11, 0x39, 0x91, 0xff}}},\n    {{{ 10650,  -8749,    103}, 0, {    46,     26}, {0xf5, 0xdb, 0x88, 0xff}}},\n    {{{  4688,  -7576,    -32}, 0, {     0,    990}, {0x60, 0x2f, 0x43, 0xff}}},\n    {{{  4430,  -7474,    473}, 0, {   990,    990}, {0x6f, 0x2f, 0x24, 0xff}}},\n    {{{  4771,  -7679,     27}, 0, {   -16,    866}, {0x34, 0x73, 0x06, 0xff}}},\n    {{{  4526,  -7576,    508}, 0, {   958,    864}, {0x34, 0x73, 0xf8, 0xff}}},\n    {{{  5270,  -7679,    386}, 0, {   272,    104}, {0xf1, 0x72, 0xcb, 0xff}}},\n    {{{  5102,  -7576,    721}, 0, {   958,     98}, {0xe1, 0x72, 0xd3, 0xff}}},\n    {{{  5353,  -7576,    446}, 0, {   352,    -26}, {0xa6, 0x2f, 0xb5, 0xff}}},\n    {{{  5198,  -7474,    757}, 0, {   990,      0}, {0x96, 0x2f, 0xcf, 0xff}}},\n};\n\n// 0x0701E4E8 - 0x0701E5E8\nstatic const Vtx ttm_seg7_vertex_0701E4E8[] = {\n    {{{  5087,  -7679,   -431}, 0, {     0,    990}, {0x47, 0x30, 0x5d, 0xff}}},\n    {{{  4688,  -7576,    -32}, 0, {   990,    990}, {0x60, 0x2f, 0x43, 0xff}}},\n    {{{  5147,  -7781,   -348}, 0, {    -8,    866}, {0x30, 0x73, 0x15, 0xff}}},\n    {{{  4771,  -7679,     27}, 0, {   956,    866}, {0x34, 0x73, 0x06, 0xff}}},\n    {{{  5506,  -7781,    150}, 0, {   336,    100}, {0x00, 0x72, 0xc9, 0xff}}},\n    {{{  5270,  -7679,    386}, 0, {   956,    100}, {0xf1, 0x72, 0xcb, 0xff}}},\n    {{{  5566,  -7679,    233}, 0, {   428,    -30}, {0xc3, 0x2f, 0x9c, 0xff}}},\n    {{{  5353,  -7576,    446}, 0, {   990,      0}, {0xa6, 0x2f, 0xb5, 0xff}}},\n    {{{  5593,  -7781,   -689}, 0, {     0,    990}, {0x2d, 0x2f, 0x6c, 0xff}}},\n    {{{  5087,  -7679,   -431}, 0, {   990,    990}, {0x47, 0x30, 0x5d, 0xff}}},\n    {{{  5628,  -7883,   -593}, 0, {   -16,    866}, {0x28, 0x73, 0x22, 0xff}}},\n    {{{  5147,  -7781,   -348}, 0, {   958,    866}, {0x30, 0x73, 0x15, 0xff}}},\n    {{{  5841,  -7883,    -17}, 0, {   272,     96}, {0x0f, 0x72, 0xcb, 0xff}}},\n    {{{  5506,  -7781,    150}, 0, {   958,    100}, {0x00, 0x72, 0xc9, 0xff}}},\n    {{{  5877,  -7781,     78}, 0, {   354,    -36}, {0xe1, 0x2f, 0x8f, 0xff}}},\n    {{{  5566,  -7679,    233}, 0, {   990,      0}, {0xc3, 0x2f, 0x9c, 0xff}}},\n};\n\n// 0x0701E5E8 - 0x0701E668\nstatic const Vtx ttm_seg7_vertex_0701E5E8[] = {\n    {{{  6094,  -7883,   -813}, 0, {     0,    990}, {0x12, 0x30, 0x74, 0xff}}},\n    {{{  5593,  -7781,   -689}, 0, {   990,    990}, {0x2d, 0x2f, 0x6c, 0xff}}},\n    {{{  6106,  -7986,   -712}, 0, {   -26,    866}, {0x1f, 0x75, 0x24, 0xff}}},\n    {{{  5841,  -7883,    -17}, 0, {   950,     98}, {0x0f, 0x72, 0xcb, 0xff}}},\n    {{{  5877,  -7781,     78}, 0, {   990,      0}, {0xe1, 0x2f, 0x8f, 0xff}}},\n    {{{  6194,  -7883,      0}, 0, {   328,    -30}, {0xfa, 0x2f, 0x8b, 0xff}}},\n    {{{  5628,  -7883,   -593}, 0, {   950,    864}, {0x28, 0x73, 0x22, 0xff}}},\n    {{{  6181,  -7986,   -102}, 0, {   244,    100}, {0x14, 0x6e, 0xc5, 0xff}}},\n};\n\n// 0x0701E668 - 0x0701E728\nstatic const Vtx ttm_seg7_vertex_0701E668[] = {\n    {{{ 10650,  -8893,     90}, 0, {   962,     92}, {0x11, 0x39, 0x91, 0xff}}},\n    {{{ 10650,  -8749,    103}, 0, {   990,      0}, {0xf5, 0xdb, 0x88, 0xff}}},\n    {{{ 11864,  -9125,    100}, 0, {     8,    112}, {0x03, 0x10, 0x83, 0xff}}},\n    {{{ 11864,  -8985,     62}, 0, {    42,     42}, {0xe9, 0xb5, 0x9d, 0xff}}},\n    {{{  4430,  -7474,    473}, 0, {     0,    990}, {0x6f, 0x2f, 0x24, 0xff}}},\n    {{{  4306,  -7371,    974}, 0, {   990,    990}, {0x75, 0x2f, 0x09, 0xff}}},\n    {{{  4526,  -7576,    508}, 0, {   -26,    866}, {0x34, 0x73, 0xf8, 0xff}}},\n    {{{  4407,  -7474,    986}, 0, {   950,    866}, {0x31, 0x73, 0xee, 0xff}}},\n    {{{  5102,  -7576,    721}, 0, {   244,     98}, {0xe1, 0x72, 0xd3, 0xff}}},\n    {{{  5017,  -7474,   1061}, 0, {   950,     98}, {0xd7, 0x72, 0xdd, 0xff}}},\n    {{{  5198,  -7474,    757}, 0, {   328,      0}, {0x96, 0x2f, 0xcf, 0xff}}},\n    {{{  5119,  -7371,   1074}, 0, {   990,      0}, {0x8d, 0x30, 0xeb, 0xff}}},\n};\n\n// 0x0701E728 - 0x0701E828\nstatic const Vtx ttm_seg7_vertex_0701E728[] = {\n    {{{ 10650,  -9288,   -380}, 0, {   -48,    828}, {0x27, 0x72, 0xdb, 0xff}}},\n    {{{  9421,  -8640,     25}, 0, {   960,     94}, {0x1c, 0x59, 0xab, 0xff}}},\n    {{{ 10650,  -8893,     90}, 0, {     8,    104}, {0x11, 0x39, 0x91, 0xff}}},\n    {{{  5999,   6554,   6289}, 0, {   990,      0}, {0xe4, 0x78, 0xe4, 0xff}}},\n    {{{  7396,   6940,   6527}, 0, {     0,    990}, {0xe4, 0x78, 0xe4, 0xff}}},\n    {{{  6578,   6554,   5710}, 0, {   990,    990}, {0xbe, 0x69, 0x15, 0xff}}},\n    {{{  6817,   6940,   7107}, 0, {     0,      0}, {0xe4, 0x78, 0xe4, 0xff}}},\n    {{{  8192,  -8367,   -715}, 0, {     0,    864}, {0x1e, 0x6d, 0x37, 0xff}}},\n    {{{  6106,  -7986,   -712}, 0, {   982,    864}, {0x1f, 0x75, 0x24, 0xff}}},\n    {{{  8192,  -8367,   -100}, 0, {     0,     92}, {0x1d, 0x74, 0xd9, 0xff}}},\n    {{{  6181,  -7986,   -102}, 0, {   982,     98}, {0x14, 0x6e, 0xc5, 0xff}}},\n    {{{  9421,  -8860,   -548}, 0, {   -48,    828}, {0x29, 0x78, 0x03, 0xff}}},\n    {{{  8192,  -8367,   -715}, 0, {   958,    868}, {0x1e, 0x6d, 0x37, 0xff}}},\n    {{{  8192,  -8367,   -100}, 0, {   958,    100}, {0x1d, 0x74, 0xd9, 0xff}}},\n    {{{  9421,  -8640,     25}, 0, {    18,    102}, {0x1c, 0x59, 0xab, 0xff}}},\n    {{{  9421,  -8860,   -548}, 0, {   960,    862}, {0x29, 0x78, 0x03, 0xff}}},\n};\n\n// 0x0701E828 - 0x0701E918\nstatic const Vtx ttm_seg7_vertex_0701E828[] = {\n    {{{ 10650,  -9276,   -524}, 0, {   990,    990}, {0x22, 0x6c, 0x38, 0xff}}},\n    {{{ 10650,  -9288,   -380}, 0, {   962,    858}, {0x27, 0x72, 0xdb, 0xff}}},\n    {{{ 11864,  -9695,   -346}, 0, {     0,    990}, {0x26, 0x77, 0x0f, 0xff}}},\n    {{{ 11864,  -9657,   -206}, 0, {   -46,    824}, {0x21, 0x60, 0xb5, 0xff}}},\n    {{{ 13093,  -9365,     48}, 0, {    -2,    114}, {0xf8, 0xe9, 0x84, 0xff}}},\n    {{{ 11864,  -8985,     62}, 0, {   990,      0}, {0xe9, 0xb5, 0x9d, 0xff}}},\n    {{{ 13093,  -9246,    -34}, 0, {    26,     46}, {0xe4, 0x9b, 0xba, 0xff}}},\n    {{{ 11864,  -9125,    100}, 0, {   968,     90}, {0x03, 0x10, 0x83, 0xff}}},\n    {{{  5120,  -7167,   2048}, 0, {   990,      0}, {0x88, 0x26, 0xfb, 0xff}}},\n    {{{  5119,  -7371,   1074}, 0, {    60,    -24}, {0x8d, 0x30, 0xeb, 0xff}}},\n    {{{  5017,  -7269,   2048}, 0, {   972,     96}, {0xd1, 0x74, 0xef, 0xff}}},\n    {{{  5628,  -7883,   -593}, 0, {   -16,    866}, {0x28, 0x73, 0x22, 0xff}}},\n    {{{  5147,  -7781,   -348}, 0, {   958,    866}, {0x30, 0x73, 0x15, 0xff}}},\n    {{{  5506,  -7781,    150}, 0, {   958,    100}, {0x00, 0x72, 0xc9, 0xff}}},\n    {{{  5017,  -7474,   1061}, 0, {    30,    102}, {0xd7, 0x72, 0xdd, 0xff}}},\n};\n\n// 0x0701E918 - 0x0701EA08\nstatic const Vtx ttm_seg7_vertex_0701E918[] = {\n    {{{  4403,  -7269,   2048}, 0, {   972,    862}, {0x30, 0x74, 0xf0, 0xff}}},\n    {{{  4407,  -7474,    986}, 0, {   -36,    864}, {0x31, 0x73, 0xee, 0xff}}},\n    {{{  4300,  -7167,   2048}, 0, {   990,    990}, {0x72, 0x37, 0xf9, 0xff}}},\n    {{{  4306,  -7371,    974}, 0, {     0,    990}, {0x75, 0x2f, 0x09, 0xff}}},\n    {{{  6181,  -7986,   -102}, 0, {   244,    100}, {0x14, 0x6e, 0xc5, 0xff}}},\n    {{{  6106,  -7986,   -712}, 0, {   -26,    866}, {0x1f, 0x75, 0x24, 0xff}}},\n    {{{  5841,  -7883,    -17}, 0, {   950,     98}, {0x0f, 0x72, 0xcb, 0xff}}},\n    {{{  5628,  -7883,   -593}, 0, {   950,    864}, {0x28, 0x73, 0x22, 0xff}}},\n    {{{  5841,  -7883,    -17}, 0, {   272,     96}, {0x0f, 0x72, 0xcb, 0xff}}},\n    {{{  5628,  -7883,   -593}, 0, {   -16,    866}, {0x28, 0x73, 0x22, 0xff}}},\n    {{{  5506,  -7781,    150}, 0, {   958,    100}, {0x00, 0x72, 0xc9, 0xff}}},\n    {{{  5506,  -7781,    150}, 0, {   336,    100}, {0x00, 0x72, 0xc9, 0xff}}},\n    {{{  5147,  -7781,   -348}, 0, {    -8,    866}, {0x30, 0x73, 0x15, 0xff}}},\n    {{{  5270,  -7679,    386}, 0, {   956,    100}, {0xf1, 0x72, 0xcb, 0xff}}},\n    {{{  4771,  -7679,     27}, 0, {   956,    866}, {0x34, 0x73, 0x06, 0xff}}},\n};\n\n// 0x0701EA08 - 0x0701EA48\nstatic const Vtx ttm_seg7_vertex_0701EA08[] = {\n    {{{  5270,  -7679,    386}, 0, {   272,    104}, {0xf1, 0x72, 0xcb, 0xff}}},\n    {{{  4771,  -7679,     27}, 0, {   -16,    866}, {0x34, 0x73, 0x06, 0xff}}},\n    {{{  5102,  -7576,    721}, 0, {   958,     98}, {0xe1, 0x72, 0xd3, 0xff}}},\n    {{{  4526,  -7576,    508}, 0, {   958,    864}, {0x34, 0x73, 0xf8, 0xff}}},\n};\n\n// 0x0701EA48 - 0x0701EB28\nstatic const Vtx ttm_seg7_vertex_0701EA48[] = {\n    {{{ 11864,  -9657,   -206}, 0, {   -46,    824}, {0x21, 0x60, 0xb5, 0xff}}},\n    {{{ 10650,  -9288,   -380}, 0, {   962,    858}, {0x27, 0x72, 0xdb, 0xff}}},\n    {{{ 10650,  -8893,     90}, 0, {   962,     92}, {0x11, 0x39, 0x91, 0xff}}},\n    {{{ 11864,  -9125,    100}, 0, {     8,    112}, {0x03, 0x10, 0x83, 0xff}}},\n    {{{ 13093,  -9365,     48}, 0, {   982,     94}, {0xf8, 0xe9, 0x84, 0xff}}},\n    {{{ 13093,  -9246,    -34}, 0, {   990,      0}, {0xe4, 0x9b, 0xba, 0xff}}},\n    {{{ 14322,  -9596,      1}, 0, {   -30,     88}, {0xf1, 0xc8, 0x90, 0xff}}},\n    {{{  5120,  -7064,   3072}, 0, {   990,      0}, {0xa2, 0x40, 0x38, 0xff}}},\n    {{{  5017,  -7269,   2048}, 0, {   -40,     96}, {0xd1, 0x74, 0xef, 0xff}}},\n    {{{  5017,  -7167,   3072}, 0, {   980,     96}, {0xd4, 0x6a, 0x36, 0xff}}},\n    {{{  5120,  -7167,   2048}, 0, {     0,      0}, {0x88, 0x26, 0xfb, 0xff}}},\n    {{{  4403,  -7269,   2048}, 0, {   -40,    862}, {0x30, 0x74, 0xf0, 0xff}}},\n    {{{  4300,  -7167,   2048}, 0, {     0,    990}, {0x72, 0x37, 0xf9, 0xff}}},\n    {{{  4403,  -7167,   3072}, 0, {   980,    862}, {0x26, 0x70, 0x2d, 0xff}}},\n};\n\n// 0x0701EB28 - 0x0701EB98\nstatic const Vtx ttm_seg7_vertex_0701EB28[] = {\n    {{{  5102,  -7576,    721}, 0, {   244,     98}, {0xe1, 0x72, 0xd3, 0xff}}},\n    {{{  4526,  -7576,    508}, 0, {   -26,    866}, {0x34, 0x73, 0xf8, 0xff}}},\n    {{{  5017,  -7474,   1061}, 0, {   950,     98}, {0xd7, 0x72, 0xdd, 0xff}}},\n    {{{  4300,  -7167,   2048}, 0, {     0,    990}, {0x72, 0x37, 0xf9, 0xff}}},\n    {{{  4300,  -7064,   3072}, 0, {   990,    990}, {0x5c, 0x26, 0x4e, 0xff}}},\n    {{{  4403,  -7167,   3072}, 0, {   980,    862}, {0x26, 0x70, 0x2d, 0xff}}},\n    {{{  4407,  -7474,    986}, 0, {   950,    866}, {0x31, 0x73, 0xee, 0xff}}},\n};\n\n// 0x0701EB98 - 0x0701EC38\nstatic const Vtx ttm_seg7_vertex_0701EB98[] = {\n    {{{ 11864,  -9695,   -346}, 0, {   990,    990}, {0x26, 0x77, 0x0f, 0xff}}},\n    {{{ 11864,  -9657,   -206}, 0, {   968,    856}, {0x21, 0x60, 0xb5, 0xff}}},\n    {{{ 13093, -10053,   -176}, 0, {     0,    990}, {0x20, 0x79, 0xed, 0xff}}},\n    {{{ 13093,  -9970,    -58}, 0, {   -42,    822}, {0x15, 0x45, 0x99, 0xff}}},\n    {{{ 11864,  -9125,    100}, 0, {   968,     90}, {0x03, 0x10, 0x83, 0xff}}},\n    {{{ 13093,  -9365,     48}, 0, {    -2,    114}, {0xf8, 0xe9, 0x84, 0xff}}},\n    {{{  4407,  -7474,    986}, 0, {   -36,    864}, {0x31, 0x73, 0xee, 0xff}}},\n    {{{  4403,  -7269,   2048}, 0, {   972,    862}, {0x30, 0x74, 0xf0, 0xff}}},\n    {{{  5017,  -7269,   2048}, 0, {   972,     96}, {0xd1, 0x74, 0xef, 0xff}}},\n    {{{  5017,  -7474,   1061}, 0, {    30,    102}, {0xd7, 0x72, 0xdd, 0xff}}},\n};\n\n// 0x0701EC38 - 0x0701ED28\nstatic const Vtx ttm_seg7_vertex_0701EC38[] = {\n    {{{  3922,   6607,   3922}, 0, {   990,      0}, {0x34, 0x00, 0x73, 0xff}}},\n    {{{  3638,   6505,   4074}, 0, {   352,    -40}, {0x47, 0x10, 0x67, 0xff}}},\n    {{{  3922,   6505,   3922}, 0, {  1018,     26}, {0x2f, 0x14, 0x74, 0xff}}},\n    {{{  4929,   6607,   4074}, 0, {     0,    990}, {0xb5, 0x00, 0x66, 0xff}}},\n    {{{  4645,   6505,   3922}, 0, {   580,    960}, {0xce, 0x10, 0x73, 0xff}}},\n    {{{  4929,   6505,   4074}, 0, {   -12,    932}, {0xb7, 0x1b, 0x63, 0xff}}},\n    {{{  4645,   6607,   3922}, 0, {   558,   1014}, {0xd4, 0x00, 0x77, 0xff}}},\n    {{{  4427,   6607,   3858}, 0, {   990,    990}, {0xf4, 0x00, 0x7e, 0xff}}},\n    {{{  4427,   6505,   3858}, 0, {  1010,    932}, {0xec, 0x17, 0x7b, 0xff}}},\n    {{{  4427,   6607,   3858}, 0, {     0,    990}, {0xf4, 0x00, 0x7e, 0xff}}},\n    {{{  4140,   6607,   3858}, 0, {   524,   1022}, {0x18, 0x00, 0x7c, 0xff}}},\n    {{{  4140,   6505,   3858}, 0, {   548,    966}, {0x11, 0x14, 0x7c, 0xff}}},\n    {{{  4427,   6505,   3858}, 0, {    -8,    932}, {0xec, 0x17, 0x7b, 0xff}}},\n    {{{  3922,   6505,   3922}, 0, {  1014,    932}, {0x2f, 0x14, 0x74, 0xff}}},\n    {{{  3922,   6607,   3922}, 0, {   990,    990}, {0x34, 0x00, 0x73, 0xff}}},\n};\n\n// 0x0701ED28 - 0x0701EE18\nstatic const Vtx ttm_seg7_vertex_0701ED28[] = {\n    {{{  5823,   6607,   4954}, 0, {   990,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  5605,   6607,   4737}, 0, {   710,    -40}, {0xa7, 0x00, 0x5a, 0xff}}},\n    {{{  5605,   6505,   4737}, 0, {   706,     12}, {0xa9, 0x0d, 0x5b, 0xff}}},\n    {{{  3638,   6607,   4074}, 0, {   322,    -98}, {0x4f, 0x00, 0x63, 0xff}}},\n    {{{  3270,   6505,   4427}, 0, {  -658,     -8}, {0x55, 0x16, 0x5b, 0xff}}},\n    {{{  3638,   6505,   4074}, 0, {   352,    -40}, {0x47, 0x10, 0x67, 0xff}}},\n    {{{  3270,   6607,   4427}, 0, {  -688,    -68}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{  3922,   6607,   3922}, 0, {   990,      0}, {0x34, 0x00, 0x73, 0xff}}},\n    {{{  3270,   6607,   4427}, 0, {   990,      0}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{  2980,   6403,   4717}, 0, {   724,      6}, {0x54, 0x10, 0x5d, 0xff}}},\n    {{{  3270,   6505,   4427}, 0, {   976,     18}, {0x55, 0x16, 0x5b, 0xff}}},\n    {{{  2980,   6505,   4717}, 0, {   738,    -44}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2111,   5788,   5586}, 0, {   -72,    120}, {0x3d, 0x38, 0x5f, 0xff}}},\n    {{{  4929,   6607,   4074}, 0, {  -154,    -50}, {0xb5, 0x00, 0x66, 0xff}}},\n    {{{  4929,   6505,   4074}, 0, {  -158,      0}, {0xb7, 0x1b, 0x63, 0xff}}},\n};\n\n// 0x0701EE18 - 0x0701EE98\nstatic const Vtx ttm_seg7_vertex_0701EE18[] = {\n    {{{ 14322, -10211,      1}, 0, {   -36,    840}, {0x09, 0x26, 0x88, 0xff}}},\n    {{{ 13093,  -9970,    -58}, 0, {   982,    860}, {0x15, 0x45, 0x99, 0xff}}},\n    {{{ 13093,  -9365,     48}, 0, {   982,     94}, {0xf8, 0xe9, 0x84, 0xff}}},\n    {{{ 14322,  -9596,      1}, 0, {   -30,     88}, {0xf1, 0xc8, 0x90, 0xff}}},\n    {{{  5017,  -7167,   3072}, 0, {   980,     96}, {0xd4, 0x6a, 0x36, 0xff}}},\n    {{{  5017,  -7269,   2048}, 0, {   -40,     96}, {0xd1, 0x74, 0xef, 0xff}}},\n    {{{  4403,  -7167,   3072}, 0, {   980,    862}, {0x26, 0x70, 0x2d, 0xff}}},\n    {{{  4403,  -7269,   2048}, 0, {   -40,    862}, {0x30, 0x74, 0xf0, 0xff}}},\n};\n\n// 0x0701EE98 - 0x0701EF88\nstatic const Vtx ttm_seg7_vertex_0701EE98[] = {\n    {{{  3922,   6505,   3922}, 0, {  1018,     26}, {0x2f, 0x14, 0x74, 0xff}}},\n    {{{  3668,   6351,   4115}, 0, {   412,     98}, {0x42, 0x3a, 0x5b, 0xff}}},\n    {{{  3942,   6351,   3969}, 0, {  1054,    162}, {0x28, 0x42, 0x64, 0xff}}},\n    {{{  4929,   6505,   4074}, 0, {   -12,    932}, {0xb7, 0x1b, 0x63, 0xff}}},\n    {{{  4625,   6351,   3969}, 0, {   626,    824}, {0xd6, 0x3f, 0x65, 0xff}}},\n    {{{  4898,   6351,   4116}, 0, {    58,    800}, {0xc1, 0x43, 0x56, 0xff}}},\n    {{{  4645,   6505,   3922}, 0, {   580,    960}, {0xce, 0x10, 0x73, 0xff}}},\n    {{{  4427,   6505,   3858}, 0, {  1010,    932}, {0xec, 0x17, 0x7b, 0xff}}},\n    {{{  4418,   6351,   3909}, 0, {  1036,    800}, {0xef, 0x48, 0x67, 0xff}}},\n    {{{  4427,   6505,   3858}, 0, {    -8,    932}, {0xec, 0x17, 0x7b, 0xff}}},\n    {{{  4140,   6505,   3858}, 0, {   548,    966}, {0x11, 0x14, 0x7c, 0xff}}},\n    {{{  4149,   6351,   3909}, 0, {   602,    832}, {0x0c, 0x46, 0x68, 0xff}}},\n    {{{  4418,   6351,   3909}, 0, {    78,    798}, {0xef, 0x48, 0x67, 0xff}}},\n    {{{  3922,   6505,   3922}, 0, {  1014,    932}, {0x2f, 0x14, 0x74, 0xff}}},\n    {{{  3942,   6351,   3969}, 0, {  1044,    798}, {0x28, 0x42, 0x64, 0xff}}},\n};\n\n// 0x0701EF88 - 0x0701F088\nstatic const Vtx ttm_seg7_vertex_0701EF88[] = {\n    {{{  5605,   6505,   4737}, 0, {   706,     12}, {0xa9, 0x0d, 0x5b, 0xff}}},\n    {{{  4929,   6505,   4074}, 0, {  -158,      0}, {0xb7, 0x1b, 0x63, 0xff}}},\n    {{{  5569,   6351,   4773}, 0, {   702,    140}, {0xb3, 0x30, 0x58, 0xff}}},\n    {{{  3638,   6505,   4074}, 0, {   352,    -40}, {0x47, 0x10, 0x67, 0xff}}},\n    {{{  3270,   6505,   4427}, 0, {  -658,     -8}, {0x55, 0x16, 0x5b, 0xff}}},\n    {{{  3668,   6351,   4115}, 0, {   412,     98}, {0x42, 0x3a, 0x5b, 0xff}}},\n    {{{  3922,   6505,   3922}, 0, {  1018,     26}, {0x2f, 0x14, 0x74, 0xff}}},\n    {{{  3306,   6351,   4463}, 0, {  -582,    130}, {0x41, 0x4a, 0x4f, 0xff}}},\n    {{{  3270,   6505,   4427}, 0, {   976,     18}, {0x55, 0x16, 0x5b, 0xff}}},\n    {{{  3016,   6249,   4753}, 0, {   706,    132}, {0x3b, 0x41, 0x5b, 0xff}}},\n    {{{  3306,   6351,   4463}, 0, {   958,    144}, {0x41, 0x4a, 0x4f, 0xff}}},\n    {{{  2980,   6403,   4717}, 0, {   724,      6}, {0x54, 0x10, 0x5d, 0xff}}},\n    {{{  2111,   5788,   5586}, 0, {   -72,    120}, {0x3d, 0x38, 0x5f, 0xff}}},\n    {{{  5823,   6607,   4954}, 0, {   990,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  5823,   6403,   4954}, 0, {   984,     70}, {0xad, 0x1b, 0x5b, 0xff}}},\n    {{{  4898,   6351,   4116}, 0, {  -156,    128}, {0xc1, 0x43, 0x56, 0xff}}},\n};\n\n// 0x0701F088 - 0x0701F0F8\nstatic const Vtx ttm_seg7_vertex_0701F088[] = {\n    {{{  6578,   6554,   5710}, 0, {    64,    156}, {0xbe, 0x69, 0x15, 0xff}}},\n    {{{  5823,   6607,   4954}, 0, {   990,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  5823,   6403,   4954}, 0, {  1038,     62}, {0xad, 0x1b, 0x5b, 0xff}}},\n    {{{ 13093, -10053,   -176}, 0, {   990,    990}, {0x20, 0x79, 0xed, 0xff}}},\n    {{{ 13093,  -9970,    -58}, 0, {   982,    860}, {0x15, 0x45, 0x99, 0xff}}},\n    {{{ 14322, -10313,   -100}, 0, {     0,    990}, {0x1a, 0x6e, 0xc8, 0xff}}},\n    {{{ 14322, -10211,      1}, 0, {   -36,    840}, {0x09, 0x26, 0x88, 0xff}}},\n};\n\n// 0x0701F0F8 - 0x0701F1E8\nstatic const Vtx ttm_seg7_vertex_0701F0F8[] = {\n    {{{  4418,   6351,   3909}, 0, {    78,    798}, {0xef, 0x48, 0x67, 0xff}}},\n    {{{  4149,   6351,   3909}, 0, {   602,    832}, {0x0c, 0x46, 0x68, 0xff}}},\n    {{{  4394,   6198,   4061}, 0, {   264,    570}, {0xf9, 0x6e, 0x3e, 0xff}}},\n    {{{  5823,   6403,   4954}, 0, {   984,     70}, {0xad, 0x1b, 0x5b, 0xff}}},\n    {{{  5533,   6198,   4809}, 0, {   698,    268}, {0xc4, 0x55, 0x48, 0xff}}},\n    {{{  5786,   6249,   4990}, 0, {   978,    198}, {0xbc, 0x5a, 0x38, 0xff}}},\n    {{{  5569,   6351,   4773}, 0, {   702,    140}, {0xb3, 0x30, 0x58, 0xff}}},\n    {{{  4808,   6198,   4240}, 0, {  -136,    356}, {0xd5, 0x65, 0x3f, 0xff}}},\n    {{{  4898,   6351,   4116}, 0, {  -156,    128}, {0xc1, 0x43, 0x56, 0xff}}},\n    {{{  4625,   6351,   3969}, 0, {   626,    824}, {0xd6, 0x3f, 0x65, 0xff}}},\n    {{{  4418,   6351,   3909}, 0, {  1036,    800}, {0xef, 0x48, 0x67, 0xff}}},\n    {{{  4566,   6198,   4111}, 0, {   708,    590}, {0xe7, 0x68, 0x43, 0xff}}},\n    {{{  4898,   6351,   4116}, 0, {    58,    800}, {0xc1, 0x43, 0x56, 0xff}}},\n    {{{  4808,   6198,   4240}, 0, {   206,    570}, {0xd5, 0x65, 0x3f, 0xff}}},\n    {{{  4394,   6198,   4061}, 0, {  1050,    570}, {0xf9, 0x6e, 0x3e, 0xff}}},\n};\n\n// 0x0701F1E8 - 0x0701F2D8\nstatic const Vtx ttm_seg7_vertex_0701F1E8[] = {\n    {{{  3306,   6351,   4463}, 0, {   958,    144}, {0x41, 0x4a, 0x4f, 0xff}}},\n    {{{  3016,   6249,   4753}, 0, {   706,    132}, {0x3b, 0x41, 0x5b, 0xff}}},\n    {{{  3125,   6095,   4861}, 0, {   698,    356}, {0x1a, 0x65, 0x47, 0xff}}},\n    {{{  4149,   6351,   3909}, 0, {   602,    832}, {0x0c, 0x46, 0x68, 0xff}}},\n    {{{  4173,   6198,   4061}, 0, {   692,    596}, {0x09, 0x6f, 0x3c, 0xff}}},\n    {{{  4394,   6198,   4061}, 0, {   264,    570}, {0xf9, 0x6e, 0x3e, 0xff}}},\n    {{{  3942,   6351,   3969}, 0, {  1044,    798}, {0x28, 0x42, 0x64, 0xff}}},\n    {{{  4001,   6198,   4111}, 0, {  1060,    568}, {0x18, 0x6c, 0x3e, 0xff}}},\n    {{{  3942,   6351,   3969}, 0, {  1054,    162}, {0x28, 0x42, 0x64, 0xff}}},\n    {{{  3758,   6198,   4240}, 0, {   504,    336}, {0x2b, 0x66, 0x3c, 0xff}}},\n    {{{  4001,   6198,   4111}, 0, {  1074,    392}, {0x18, 0x6c, 0x3e, 0xff}}},\n    {{{  3668,   6351,   4115}, 0, {   412,     98}, {0x42, 0x3a, 0x5b, 0xff}}},\n    {{{  3306,   6351,   4463}, 0, {  -582,    130}, {0x41, 0x4a, 0x4f, 0xff}}},\n    {{{  3415,   6198,   4572}, 0, {  -440,    366}, {0x1e, 0x70, 0x32, 0xff}}},\n    {{{  3415,   6198,   4572}, 0, {   950,    370}, {0x1e, 0x70, 0x32, 0xff}}},\n};\n\n// 0x0701F2D8 - 0x0701F3C8\nstatic const Vtx ttm_seg7_vertex_0701F2D8[] = {\n    {{{  1315,   5583,   7251}, 0, {   990,      0}, {0xcd, 0x46, 0xa5, 0xff}}},\n    {{{  1604,   5635,   7106}, 0, {   350,    -44}, {0xc4, 0x46, 0xa9, 0xff}}},\n    {{{  1555,   5481,   7016}, 0, {   424,    124}, {0xcc, 0x5e, 0xbd, 0xff}}},\n    {{{  3016,   6249,   4753}, 0, {   706,    132}, {0x3b, 0x41, 0x5b, 0xff}}},\n    {{{  2111,   5788,   5586}, 0, {   -72,    120}, {0x3d, 0x38, 0x5f, 0xff}}},\n    {{{  2220,   5635,   5694}, 0, {   -82,    346}, {0x0a, 0x6d, 0x3f, 0xff}}},\n    {{{  3125,   6095,   4861}, 0, {   698,    356}, {0x1a, 0x65, 0x47, 0xff}}},\n    {{{  5823,   6403,   4954}, 0, {  1038,     62}, {0xad, 0x1b, 0x5b, 0xff}}},\n    {{{  5786,   6249,   4990}, 0, {  1068,    184}, {0xbc, 0x5a, 0x38, 0xff}}},\n    {{{  6578,   6554,   5710}, 0, {    64,    156}, {0xbe, 0x69, 0x15, 0xff}}},\n    {{{  1677,   5532,   6020}, 0, {   660,   1002}, {0xfc, 0x7b, 0x1d, 0xff}}},\n    {{{  2220,   5635,   5694}, 0, {    14,    858}, {0x0a, 0x6d, 0x3f, 0xff}}},\n    {{{  2111,   5788,   5586}, 0, {     0,    990}, {0x3d, 0x38, 0x5f, 0xff}}},\n    {{{  1902,   5532,   6809}, 0, {  -366,    148}, {0xce, 0x61, 0xc2, 0xff}}},\n    {{{  1966,   5686,   6889}, 0, {  -474,    -16}, {0xc5, 0x46, 0xa9, 0xff}}},\n};\n\n// 0x0701F3C8 - 0x0701F4B8\nstatic const Vtx ttm_seg7_vertex_0701F3C8[] = {\n    {{{   301,   5481,   7396}, 0, {   990,      0}, {0xf1, 0x48, 0x9a, 0xff}}},\n    {{{   301,   5327,   7293}, 0, {   982,    132}, {0xee, 0x61, 0xb1, 0xff}}},\n    {{{  -121,   5329,   7418}, 0, {   702,    -26}, {0xea, 0x60, 0xb1, 0xff}}},\n    {{{  1315,   5583,   7251}, 0, {   990,      0}, {0xcd, 0x46, 0xa5, 0xff}}},\n    {{{  1555,   5481,   7016}, 0, {   424,    124}, {0xcc, 0x5e, 0xbd, 0xff}}},\n    {{{  1276,   5430,   7156}, 0, {  1042,    134}, {0xd6, 0x5b, 0xb4, 0xff}}},\n    {{{   880,   5532,   7396}, 0, {   164,   -102}, {0xe4, 0x4c, 0x9f, 0xff}}},\n    {{{  1315,   5583,   7251}, 0, {  -472,     10}, {0xcd, 0x46, 0xa5, 0xff}}},\n    {{{  1276,   5430,   7156}, 0, {  -388,    172}, {0xd6, 0x5b, 0xb4, 0xff}}},\n    {{{   301,   5481,   7396}, 0, {   998,      0}, {0xf1, 0x48, 0x9a, 0xff}}},\n    {{{   860,   5371,   7271}, 0, {   222,     96}, {0xed, 0x67, 0xb9, 0xff}}},\n    {{{   301,   5327,   7293}, 0, {  1026,    136}, {0xee, 0x61, 0xb1, 0xff}}},\n    {{{  1902,   5532,   6809}, 0, {  1034,    132}, {0xce, 0x61, 0xc2, 0xff}}},\n    {{{  1966,   5686,   6889}, 0, {   990,      0}, {0xc5, 0x46, 0xa9, 0xff}}},\n    {{{  2278,   5604,   6628}, 0, {   616,     -8}, {0xce, 0x65, 0xc7, 0xff}}},\n};\n\n// 0x0701F4B8 - 0x0701F5A8\nstatic const Vtx ttm_seg7_vertex_0701F4B8[] = {\n    {{{ -7451,   3136,   4733}, 0, {   990,      0}, {0x5f, 0x44, 0xd1, 0xff}}},\n    {{{ -7054,   3136,   5465}, 0, {  -152,    362}, {0x3a, 0x5b, 0xbe, 0xff}}},\n    {{{ -7248,   2829,   4708}, 0, {  1118,    316}, {0x49, 0x5a, 0xcd, 0xff}}},\n    {{{ -6226,   4058,   6778}, 0, {   990,      0}, {0x32, 0x45, 0xa3, 0xff}}},\n    {{{ -5567,   3955,   7035}, 0, {  -166,    296}, {0x14, 0x55, 0xa5, 0xff}}},\n    {{{ -6096,   3750,   6620}, 0, {  1116,    320}, {0x20, 0x5b, 0xaf, 0xff}}},\n    {{{ -5609,   4109,   7129}, 0, {  -276,    126}, {0x1e, 0x46, 0x9b, 0xff}}},\n    {{{ -6839,   3750,   6164}, 0, {   990,      0}, {0x3c, 0x45, 0xa9, 0xff}}},\n    {{{ -6096,   3750,   6620}, 0, {   -82,    342}, {0x20, 0x5b, 0xaf, 0xff}}},\n    {{{ -6681,   3443,   6035}, 0, {  1088,    318}, {0x27, 0x5b, 0xb2, 0xff}}},\n    {{{ -6226,   4058,   6778}, 0, {  -230,      0}, {0x32, 0x45, 0xa3, 0xff}}},\n    {{{ -7241,   3443,   5548}, 0, {   990,      0}, {0x4e, 0x45, 0xb9, 0xff}}},\n    {{{ -6681,   3443,   6035}, 0, {  -112,    354}, {0x27, 0x5b, 0xb2, 0xff}}},\n    {{{ -7054,   3136,   5465}, 0, {  1154,    316}, {0x3a, 0x5b, 0xbe, 0xff}}},\n    {{{ -6839,   3750,   6164}, 0, {  -360,     18}, {0x3c, 0x45, 0xa9, 0xff}}},\n};\n\n// 0x0701F5A8 - 0x0701F6A8\nstatic const Vtx ttm_seg7_vertex_0701F5A8[] = {\n    {{{ -7457,   1805,   2276}, 0, {   -86,     98}, {0x1e, 0x74, 0xd9, 0xff}}},\n    {{{ -7508,   2470,   3505}, 0, {   990,      0}, {0x64, 0x43, 0xda, 0xff}}},\n    {{{ -7406,   2317,   3505}, 0, {   962,    124}, {0x4d, 0x59, 0xd3, 0xff}}},\n    {{{ -7451,   3136,   4733}, 0, {   990,      0}, {0x5f, 0x44, 0xd1, 0xff}}},\n    {{{ -7241,   3443,   5548}, 0, {  -362,     30}, {0x4e, 0x45, 0xb9, 0xff}}},\n    {{{ -7054,   3136,   5465}, 0, {  -152,    362}, {0x3a, 0x5b, 0xbe, 0xff}}},\n    {{{ -7508,   2470,   3505}, 0, {  -166,    -54}, {0x64, 0x43, 0xda, 0xff}}},\n    {{{ -7451,   3136,   4733}, 0, {   986,    -36}, {0x5f, 0x44, 0xd1, 0xff}}},\n    {{{ -7248,   2829,   4708}, 0, {   934,    302}, {0x49, 0x5a, 0xcd, 0xff}}},\n    {{{ -7406,   2317,   3505}, 0, {  -182,    118}, {0x4d, 0x59, 0xd3, 0xff}}},\n    {{{ -4795,   4211,   7293}, 0, {  -312,     90}, {0x06, 0x52, 0xa1, 0xff}}},\n    {{{ -5567,   3955,   7035}, 0, {  1062,    154}, {0x14, 0x55, 0xa5, 0xff}}},\n    {{{ -5609,   4109,   7129}, 0, {   990,      0}, {0x1e, 0x46, 0x9b, 0xff}}},\n    {{{ -4241,    -89,  -7202}, 0, {   990,      0}, {0x31, 0x38, 0x66, 0xff}}},\n    {{{ -5478,    115,  -6580}, 0, {  -236,    -10}, {0x4d, 0x38, 0x53, 0xff}}},\n    {{{ -5419,    -89,  -6497}, 0, {  -182,    186}, {0x39, 0x5f, 0x3c, 0xff}}},\n};\n\n// 0x0701F6A8 - 0x0701F798\nstatic const Vtx ttm_seg7_vertex_0701F6A8[] = {\n    {{{ -7208,    525,  -4236}, 0, {   990,      0}, {0x6f, 0x38, 0x17, 0xff}}},\n    {{{ -7453,    730,  -3026}, 0, {  -208,    -20}, {0x71, 0x38, 0x02, 0xff}}},\n    {{{ -7351,    525,  -3016}, 0, {  -152,    176}, {0x5b, 0x57, 0xfc, 0xff}}},\n    {{{ -7111,    320,  -4202}, 0, {  1024,    166}, {0x52, 0x5f, 0x0d, 0xff}}},\n    {{{ -6586,    320,  -5473}, 0, {   990,      0}, {0x63, 0x39, 0x36, 0xff}}},\n    {{{ -7208,    525,  -4236}, 0, {  -236,    -18}, {0x6f, 0x38, 0x17, 0xff}}},\n    {{{ -7111,    320,  -4202}, 0, {  -180,    180}, {0x52, 0x5f, 0x0d, 0xff}}},\n    {{{ -6502,    115,  -5413}, 0, {  1020,    168}, {0x49, 0x60, 0x26, 0xff}}},\n    {{{ -5478,    115,  -6580}, 0, {   990,      0}, {0x4d, 0x38, 0x53, 0xff}}},\n    {{{ -6502,    115,  -5413}, 0, {  -180,    184}, {0x49, 0x60, 0x26, 0xff}}},\n    {{{ -5419,    -89,  -6497}, 0, {  1014,    168}, {0x39, 0x5f, 0x3c, 0xff}}},\n    {{{ -6586,    320,  -5473}, 0, {  -230,    -14}, {0x63, 0x39, 0x36, 0xff}}},\n    {{{  4278,  -6540,   7049}, 0, {  1052,    794}, {0xd9, 0x59, 0xaf, 0xff}}},\n    {{{  3793,  -6437,   7291}, 0, {    78,    794}, {0xf2, 0x59, 0xa7, 0xff}}},\n    {{{  4338,  -6335,   7133}, 0, {   990,    990}, {0xcc, 0x39, 0x9c, 0xff}}},\n};\n\n// 0x0701F798 - 0x0701F898\nstatic const Vtx ttm_seg7_vertex_0701F798[] = {\n    {{{ -4241,    -89,  -7202}, 0, {   990,      0}, {0x31, 0x38, 0x66, 0xff}}},\n    {{{ -5419,    -89,  -6497}, 0, {  -182,    186}, {0x39, 0x5f, 0x3c, 0xff}}},\n    {{{ -4208,   -293,  -7105}, 0, {  1018,    166}, {0x27, 0x5f, 0x49, 0xff}}},\n    {{{ -7457,   1210,     -3}, 0, {     0,     98}, {0x2b, 0x74, 0xe5, 0xff}}},\n    {{{ -7351,    525,  -3016}, 0, {  1004,    164}, {0x5b, 0x57, 0xfc, 0xff}}},\n    {{{ -7453,    730,  -3026}, 0, {   990,      0}, {0x71, 0x38, 0x02, 0xff}}},\n    {{{  3793,  -6437,   7291}, 0, {  1056,    794}, {0xf2, 0x59, 0xa7, 0xff}}},\n    {{{  3314,  -6335,   7411}, 0, {    80,    796}, {0x03, 0x59, 0xa6, 0xff}}},\n    {{{  3829,  -6233,   7387}, 0, {   990,    990}, {0xe8, 0x38, 0x92, 0xff}}},\n    {{{  3327,  -6130,   7513}, 0, {     0,    990}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  3793,  -6437,   7291}, 0, {    78,    794}, {0xf2, 0x59, 0xa7, 0xff}}},\n    {{{  3829,  -6233,   7387}, 0, {     0,    990}, {0xe8, 0x38, 0x92, 0xff}}},\n    {{{  4338,  -6335,   7133}, 0, {   990,    990}, {0xcc, 0x39, 0x9c, 0xff}}},\n    {{{  4656,  -6642,   6671}, 0, {  1052,    794}, {0xc2, 0x59, 0xc0, 0xff}}},\n    {{{  4278,  -6540,   7049}, 0, {    86,    796}, {0xd9, 0x59, 0xaf, 0xff}}},\n    {{{  4739,  -6437,   6731}, 0, {   990,    990}, {0xaf, 0x38, 0xb1, 0xff}}},\n};\n\n// 0x0701F898 - 0x0701F978\nstatic const Vtx ttm_seg7_vertex_0701F898[] = {\n    {{{  4278,  -6540,   7049}, 0, {    86,    796}, {0xd9, 0x59, 0xaf, 0xff}}},\n    {{{  4338,  -6335,   7133}, 0, {     0,    990}, {0xcc, 0x39, 0x9c, 0xff}}},\n    {{{  4739,  -6437,   6731}, 0, {   990,    990}, {0xaf, 0x38, 0xb1, 0xff}}},\n    {{{  4898,  -6745,   6187}, 0, {  1046,    794}, {0xb3, 0x59, 0xd2, 0xff}}},\n    {{{  4656,  -6642,   6671}, 0, {    72,    796}, {0xc2, 0x59, 0xc0, 0xff}}},\n    {{{  4994,  -6540,   6222}, 0, {   990,    990}, {0x9c, 0x38, 0xcb, 0xff}}},\n    {{{  4739,  -6437,   6731}, 0, {     0,    990}, {0xaf, 0x38, 0xb1, 0xff}}},\n    {{{  5018,  -6847,   5707}, 0, {  1058,    794}, {0xb2, 0x5e, 0xe1, 0xff}}},\n    {{{  4898,  -6745,   6187}, 0, {    80,    796}, {0xb3, 0x59, 0xd2, 0xff}}},\n    {{{  5120,  -6642,   5720}, 0, {   990,    990}, {0x93, 0x38, 0xe1, 0xff}}},\n    {{{ -1099,  -5721,   6057}, 0, {  -292,    150}, {0x4b, 0x5b, 0xd4, 0xff}}},\n    {{{ -1545,  -5618,   5163}, 0, {   974,    160}, {0x57, 0x58, 0xe7, 0xff}}},\n    {{{ -1182,  -5516,   6117}, 0, {  -310,    -44}, {0x62, 0x38, 0xc8, 0xff}}},\n    {{{  4994,  -6540,   6222}, 0, {     0,    990}, {0x9c, 0x38, 0xcb, 0xff}}},\n};\n\n// 0x0701F978 - 0x0701FA58\nstatic const Vtx ttm_seg7_vertex_0701F978[] = {\n    {{{  5018,  -6847,   5707}, 0, {    18,    864}, {0xb2, 0x5e, 0xe1, 0xff}}},\n    {{{  5120,  -6642,   5720}, 0, {     0,    990}, {0x93, 0x38, 0xe1, 0xff}}},\n    {{{  5120,  -7052,   4338}, 0, {   990,    990}, {0xd2, 0x75, 0xf3, 0xff}}},\n    {{{ -1545,  -5618,   5163}, 0, {  -274,    152}, {0x57, 0x58, 0xe7, 0xff}}},\n    {{{ -1768,  -5516,   4274}, 0, {   972,    160}, {0x54, 0x5f, 0x00, 0xff}}},\n    {{{ -1641,  -5413,   5198}, 0, {  -288,    -42}, {0x6d, 0x38, 0xe3, 0xff}}},\n    {{{ -1869,  -5311,   4286}, 0, {   990,      0}, {0x71, 0x38, 0xff, 0xff}}},\n    {{{ -1545,  -5618,   5163}, 0, {   974,    160}, {0x57, 0x58, 0xe7, 0xff}}},\n    {{{ -1641,  -5413,   5198}, 0, {   990,      0}, {0x6d, 0x38, 0xe3, 0xff}}},\n    {{{ -1182,  -5516,   6117}, 0, {  -310,    -44}, {0x62, 0x38, 0xc8, 0xff}}},\n    {{{  -414,  -5823,   6742}, 0, {  -368,    146}, {0x3a, 0x5a, 0xbd, 0xff}}},\n    {{{ -1099,  -5721,   6057}, 0, {   974,    158}, {0x4b, 0x5b, 0xd4, 0xff}}},\n    {{{  -473,  -5618,   6825}, 0, {  -396,    -46}, {0x4b, 0x38, 0xac, 0xff}}},\n    {{{ -1182,  -5516,   6117}, 0, {   990,      0}, {0x62, 0x38, 0xc8, 0xff}}},\n};\n\n// 0x0701FA58 - 0x0701FB48\nstatic const Vtx ttm_seg7_vertex_0701FA58[] = {\n    {{{   480,  -5925,   7189}, 0, {  -288,    150}, {0x27, 0x59, 0xb0, 0xff}}},\n    {{{  -414,  -5823,   6742}, 0, {   978,    158}, {0x3a, 0x5a, 0xbd, 0xff}}},\n    {{{   444,  -5721,   7285}, 0, {  -310,    -42}, {0x30, 0x38, 0x9a, 0xff}}},\n    {{{  -473,  -5618,   6825}, 0, {   990,      0}, {0x4b, 0x38, 0xac, 0xff}}},\n    {{{  1369,  -6028,   7411}, 0, {  -274,    152}, {0x15, 0x59, 0xa9, 0xff}}},\n    {{{   480,  -5925,   7189}, 0, {   970,    160}, {0x27, 0x59, 0xb0, 0xff}}},\n    {{{  1356,  -5823,   7513}, 0, {  -288,    -42}, {0x19, 0x38, 0x92, 0xff}}},\n    {{{   444,  -5721,   7285}, 0, {   990,      0}, {0x30, 0x38, 0x9a, 0xff}}},\n    {{{  3327,  -6130,   7513}, 0, {  -144,    -46}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  1369,  -6028,   7411}, 0, {   980,    158}, {0x15, 0x59, 0xa9, 0xff}}},\n    {{{  1356,  -5823,   7513}, 0, {   990,      0}, {0x19, 0x38, 0x92, 0xff}}},\n    {{{  3314,  -6335,   7411}, 0, {  -140,    146}, {0x03, 0x59, 0xa6, 0xff}}},\n    {{{   699,   -959,  -6085}, 0, {  -144,     80}, {0xed, 0x77, 0x27, 0xff}}},\n    {{{  -220,   -601,  -6989}, 0, {   990,      0}, {0xca, 0x38, 0x63, 0xff}}},\n    {{{  -279,   -805,  -6906}, 0, {   992,    164}, {0xe0, 0x66, 0x44, 0xff}}},\n};\n\n// 0x0701FB48 - 0x0701FC38\nstatic const Vtx ttm_seg7_vertex_0701FB48[] = {\n    {{{  -220,   -601,  -6989}, 0, {   990,      0}, {0xca, 0x38, 0x63, 0xff}}},\n    {{{  -860,   -754,  -7202}, 0, {   -20,    276}, {0xea, 0x5f, 0x50, 0xff}}},\n    {{{  -279,   -805,  -6906}, 0, {  1144,    160}, {0xe0, 0x66, 0x44, 0xff}}},\n    {{{  -824,   -549,  -7298}, 0, {  -218,     90}, {0xe1, 0x38, 0x6d, 0xff}}},\n    {{{ -1859,  -4799,    725}, 0, {   990,      0}, {0x71, 0x38, 0x08, 0xff}}},\n    {{{ -1767,  -5106,   1573}, 0, {  -212,    144}, {0x5d, 0x54, 0x0c, 0xff}}},\n    {{{ -1758,  -5004,    742}, 0, {   972,    162}, {0x58, 0x59, 0x0c, 0xff}}},\n    {{{  -824,   -549,  -7298}, 0, {   990,      0}, {0xe1, 0x38, 0x6d, 0xff}}},\n    {{{ -1430,   -703,  -7343}, 0, {  -364,    132}, {0xff, 0x5f, 0x53, 0xff}}},\n    {{{  -860,   -754,  -7202}, 0, {  1052,    128}, {0xea, 0x5f, 0x50, 0xff}}},\n    {{{ -1418,   -498,  -7445}, 0, {  -482,    -26}, {0xfe, 0x38, 0x71, 0xff}}},\n    {{{ -1418,   -498,  -7445}, 0, {   990,      0}, {0xfe, 0x38, 0x71, 0xff}}},\n    {{{ -3032,   -293,  -7447}, 0, {  -162,    -66}, {0x17, 0x38, 0x6f, 0xff}}},\n    {{{ -3022,   -498,  -7345}, 0, {  -144,     92}, {0x15, 0x5f, 0x50, 0xff}}},\n    {{{ -1430,   -703,  -7343}, 0, {   992,    126}, {0xff, 0x5f, 0x53, 0xff}}},\n};\n\n// 0x0701FC38 - 0x0701FCE8\nstatic const Vtx ttm_seg7_vertex_0701FC38[] = {\n    {{{ -3032,   -293,  -7447}, 0, {   990,      0}, {0x17, 0x38, 0x6f, 0xff}}},\n    {{{ -4208,   -293,  -7105}, 0, {  -154,    182}, {0x27, 0x5f, 0x49, 0xff}}},\n    {{{ -3022,   -498,  -7345}, 0, {  1022,    164}, {0x15, 0x5f, 0x50, 0xff}}},\n    {{{ -4241,    -89,  -7202}, 0, {  -208,    -14}, {0x31, 0x38, 0x66, 0xff}}},\n    {{{ -1869,  -5311,   4286}, 0, {   -68,    -38}, {0x71, 0x38, 0xff, 0xff}}},\n    {{{ -1768,  -5516,   4274}, 0, {   -72,    156}, {0x54, 0x5f, 0x00, 0xff}}},\n    {{{ -1767,  -5106,   1573}, 0, {   982,    162}, {0x5d, 0x54, 0x0c, 0xff}}},\n    {{{ -1859,  -4799,    725}, 0, {   990,      0}, {0x71, 0x38, 0x08, 0xff}}},\n    {{{ -1869,  -4901,   1573}, 0, {  -218,    -52}, {0x71, 0x38, 0x08, 0xff}}},\n    {{{ -1767,  -5106,   1573}, 0, {  -212,    144}, {0x5d, 0x54, 0x0c, 0xff}}},\n    {{{ -1869,  -4901,   1573}, 0, {   990,      0}, {0x71, 0x38, 0x08, 0xff}}},\n};\n\n// 0x0701FCE8 - 0x0701FDD8\nstatic const Vtx ttm_seg7_vertex_0701FCE8[] = {\n    {{{  4001,   6198,   4111}, 0, {  1074,    392}, {0x18, 0x6c, 0x3e, 0xff}}},\n    {{{  3848,   6147,   4364}, 0, {   568,    514}, {0x0d, 0x7c, 0x12, 0xff}}},\n    {{{  4059,   6147,   4253}, 0, {  1064,    564}, {0x06, 0x7d, 0x13, 0xff}}},\n    {{{  4808,   6198,   4240}, 0, {   206,    570}, {0xd5, 0x65, 0x3f, 0xff}}},\n    {{{  4566,   6198,   4111}, 0, {   708,    590}, {0xe7, 0x68, 0x43, 0xff}}},\n    {{{  4508,   6147,   4253}, 0, {   768,    414}, {0xf8, 0x7c, 0x15, 0xff}}},\n    {{{  4718,   6147,   4364}, 0, {   332,    396}, {0xf4, 0x7c, 0x13, 0xff}}},\n    {{{  4394,   6198,   4061}, 0, {  1050,    570}, {0xf9, 0x6e, 0x3e, 0xff}}},\n    {{{  4369,   6147,   4212}, 0, {  1042,    398}, {0xfe, 0x7d, 0x10, 0xff}}},\n    {{{  4394,   6198,   4061}, 0, {   264,    570}, {0xf9, 0x6e, 0x3e, 0xff}}},\n    {{{  4173,   6198,   4061}, 0, {   692,    596}, {0x09, 0x6f, 0x3c, 0xff}}},\n    {{{  4198,   6147,   4212}, 0, {   756,    420}, {0x01, 0x7d, 0x14, 0xff}}},\n    {{{  4369,   6147,   4212}, 0, {   424,    398}, {0xfe, 0x7d, 0x10, 0xff}}},\n    {{{  4059,   6147,   4253}, 0, {  1052,    396}, {0x06, 0x7d, 0x13, 0xff}}},\n    {{{  4001,   6198,   4111}, 0, {  1060,    568}, {0x18, 0x6c, 0x3e, 0xff}}},\n};\n\n// 0x0701FDD8 - 0x0701FED8\nstatic const Vtx ttm_seg7_vertex_0701FDD8[] = {\n    {{{  6578,   6554,   5710}, 0, {    64,    156}, {0xbe, 0x69, 0x15, 0xff}}},\n    {{{  5786,   6249,   4990}, 0, {  1068,    184}, {0xbc, 0x5a, 0x38, 0xff}}},\n    {{{  5714,   6198,   5063}, 0, {  1068,    312}, {0xdf, 0x7a, 0xff, 0xff}}},\n    {{{  3758,   6198,   4240}, 0, {   504,    336}, {0x2b, 0x66, 0x3c, 0xff}}},\n    {{{  3415,   6198,   4572}, 0, {  -440,    366}, {0x1e, 0x70, 0x32, 0xff}}},\n    {{{  3848,   6147,   4364}, 0, {   568,    514}, {0x0d, 0x7c, 0x12, 0xff}}},\n    {{{  4001,   6198,   4111}, 0, {  1074,    392}, {0x18, 0x6c, 0x3e, 0xff}}},\n    {{{  3523,   6147,   4680}, 0, {  -326,    544}, {0xff, 0x7c, 0x18, 0xff}}},\n    {{{  3415,   6198,   4572}, 0, {   950,    370}, {0x1e, 0x70, 0x32, 0xff}}},\n    {{{  3234,   6044,   4970}, 0, {   702,    532}, {0xf5, 0x78, 0x27, 0xff}}},\n    {{{  3523,   6147,   4680}, 0, {   954,    544}, {0xff, 0x7c, 0x18, 0xff}}},\n    {{{  3125,   6095,   4861}, 0, {   698,    356}, {0x1a, 0x65, 0x47, 0xff}}},\n    {{{  2220,   5635,   5694}, 0, {   -82,    346}, {0x0a, 0x6d, 0x3f, 0xff}}},\n    {{{   301,   5276,   7191}, 0, {  1032,    272}, {0xf1, 0x7c, 0xeb, 0xff}}},\n    {{{   860,   5371,   7271}, 0, {   222,     96}, {0xed, 0x67, 0xb9, 0xff}}},\n    {{{   839,   5327,   7143}, 0, {   252,    260}, {0xee, 0x7d, 0xf4, 0xff}}},\n};\n\n// 0x0701FED8 - 0x0701FFC8\nstatic const Vtx ttm_seg7_vertex_0701FED8[] = {\n    {{{  5786,   6249,   4990}, 0, {   978,    198}, {0xbc, 0x5a, 0x38, 0xff}}},\n    {{{  5461,   6147,   4882}, 0, {   698,    396}, {0xe8, 0x7b, 0x10, 0xff}}},\n    {{{  5714,   6198,   5063}, 0, {   978,    326}, {0xdf, 0x7a, 0xff, 0xff}}},\n    {{{  5533,   6198,   4809}, 0, {   698,    268}, {0xc4, 0x55, 0x48, 0xff}}},\n    {{{  4808,   6198,   4240}, 0, {  -136,    356}, {0xd5, 0x65, 0x3f, 0xff}}},\n    {{{  4718,   6147,   4364}, 0, {  -114,    534}, {0xf4, 0x7c, 0x13, 0xff}}},\n    {{{  1276,   5430,   7156}, 0, {  1042,    134}, {0xd6, 0x5b, 0xb4, 0xff}}},\n    {{{  1555,   5481,   7016}, 0, {   424,    124}, {0xcc, 0x5e, 0xbd, 0xff}}},\n    {{{  1236,   5379,   7062}, 0, {  1054,    270}, {0xe4, 0x79, 0xeb, 0xff}}},\n    {{{  1506,   5430,   6927}, 0, {   456,    258}, {0xe2, 0x7a, 0xf1, 0xff}}},\n    {{{  1902,   5532,   6809}, 0, {  -366,    148}, {0xce, 0x61, 0xc2, 0xff}}},\n    {{{  1838,   5481,   6729}, 0, {  -300,    280}, {0xe8, 0x7c, 0xf7, 0xff}}},\n    {{{   301,   5327,   7293}, 0, {  1026,    136}, {0xee, 0x61, 0xb1, 0xff}}},\n    {{{   860,   5371,   7271}, 0, {   222,     96}, {0xed, 0x67, 0xb9, 0xff}}},\n    {{{   301,   5276,   7191}, 0, {  1032,    272}, {0xf1, 0x7c, 0xeb, 0xff}}},\n};\n\n// 0x0701FFC8 - 0x070200C8\nstatic const Vtx ttm_seg7_vertex_0701FFC8[] = {\n    {{{   860,   5371,   7271}, 0, {   222,     96}, {0xed, 0x67, 0xb9, 0xff}}},\n    {{{  1236,   5379,   7062}, 0, {  -326,    302}, {0xe4, 0x79, 0xeb, 0xff}}},\n    {{{   839,   5327,   7143}, 0, {   252,    260}, {0xee, 0x7d, 0xf4, 0xff}}},\n    {{{  1276,   5430,   7156}, 0, {  -388,    172}, {0xd6, 0x5b, 0xb4, 0xff}}},\n    {{{  1838,   5481,   6729}, 0, {  1042,    268}, {0xe8, 0x7c, 0xf7, 0xff}}},\n    {{{  1902,   5532,   6809}, 0, {  1034,    132}, {0xce, 0x61, 0xc2, 0xff}}},\n    {{{  2185,   5532,   6529}, 0, {   640,    172}, {0xe0, 0x79, 0xee, 0xff}}},\n    {{{  2278,   5604,   6628}, 0, {   616,     -8}, {0xce, 0x65, 0xc7, 0xff}}},\n    {{{  2690,   5635,   6165}, 0, {    -6,     88}, {0xe5, 0x7b, 0x0a, 0xff}}},\n    {{{  -104,   5225,   7242}, 0, {   708,    210}, {0xef, 0x77, 0xda, 0xff}}},\n    {{{   301,   5327,   7293}, 0, {   982,    132}, {0xee, 0x61, 0xb1, 0xff}}},\n    {{{   301,   5276,   7191}, 0, {   980,    268}, {0xf1, 0x7c, 0xeb, 0xff}}},\n    {{{  -121,   5329,   7418}, 0, {   702,    -26}, {0xea, 0x60, 0xb1, 0xff}}},\n    {{{ -7054,   3136,   5465}, 0, {  1154,    316}, {0x3a, 0x5b, 0xbe, 0xff}}},\n    {{{ -6681,   3443,   6035}, 0, {  -112,    354}, {0x27, 0x5b, 0xb2, 0xff}}},\n    {{{ -6523,   3341,   5905}, 0, {     0,    596}, {0xf7, 0x71, 0xc9, 0xff}}},\n};\n\n// 0x070200C8 - 0x070201A8\nstatic const Vtx ttm_seg7_vertex_070200C8[] = {\n    {{{ -1234,   5123,   7396}, 0, {   -42,     28}, {0xf2, 0x7d, 0xf0, 0xff}}},\n    {{{  -121,   5329,   7418}, 0, {   702,    -26}, {0xea, 0x60, 0xb1, 0xff}}},\n    {{{  -104,   5225,   7242}, 0, {   708,    210}, {0xef, 0x77, 0xda, 0xff}}},\n    {{{ -6096,   3750,   6620}, 0, {  1116,    320}, {0x20, 0x5b, 0xaf, 0xff}}},\n    {{{ -5567,   3955,   7035}, 0, {  -166,    296}, {0x14, 0x55, 0xa5, 0xff}}},\n    {{{ -5485,   3853,   6899}, 0, {  -112,    502}, {0xf1, 0x76, 0xd5, 0xff}}},\n    {{{ -5966,   3648,   6461}, 0, {  1116,    574}, {0xf3, 0x75, 0xd2, 0xff}}},\n    {{{ -6681,   3443,   6035}, 0, {  1088,    318}, {0x27, 0x5b, 0xb2, 0xff}}},\n    {{{ -6096,   3750,   6620}, 0, {   -82,    342}, {0x20, 0x5b, 0xaf, 0xff}}},\n    {{{ -5966,   3648,   6461}, 0, {     0,    590}, {0xf3, 0x75, 0xd2, 0xff}}},\n    {{{ -6523,   3341,   5905}, 0, {  1088,    574}, {0xf7, 0x71, 0xc9, 0xff}}},\n    {{{ -7054,   3136,   5465}, 0, {  1154,    316}, {0x3a, 0x5b, 0xbe, 0xff}}},\n    {{{ -6523,   3341,   5905}, 0, {     0,    596}, {0xf7, 0x71, 0xc9, 0xff}}},\n    {{{ -6866,   3034,   5382}, 0, {  1154,    570}, {0x03, 0x71, 0xc7, 0xff}}},\n};\n\n// 0x070201A8 - 0x07020298\nstatic const Vtx ttm_seg7_vertex_070201A8[] = {\n    {{{ -4795,   4211,   7293}, 0, {  -312,     90}, {0x06, 0x52, 0xa1, 0xff}}},\n    {{{ -4763,   4058,   7142}, 0, {  -200,    336}, {0xef, 0x74, 0xd1, 0xff}}},\n    {{{ -5567,   3955,   7035}, 0, {  1062,    154}, {0x14, 0x55, 0xa5, 0xff}}},\n    {{{ -7248,   2829,   4708}, 0, {  1118,    316}, {0x49, 0x5a, 0xcd, 0xff}}},\n    {{{ -6866,   3034,   5382}, 0, {   -68,    602}, {0x03, 0x71, 0xc7, 0xff}}},\n    {{{ -7044,   2726,   4683}, 0, {  1118,    572}, {0x15, 0x70, 0xca, 0xff}}},\n    {{{ -7054,   3136,   5465}, 0, {  -152,    362}, {0x3a, 0x5b, 0xbe, 0xff}}},\n    {{{ -7406,   2317,   3505}, 0, {  -182,    118}, {0x4d, 0x59, 0xd3, 0xff}}},\n    {{{ -7248,   2829,   4708}, 0, {   934,    302}, {0x49, 0x5a, 0xcd, 0xff}}},\n    {{{ -7044,   2726,   4683}, 0, {   936,    560}, {0x15, 0x70, 0xca, 0xff}}},\n    {{{ -7252,   2214,   3505}, 0, {  -172,    324}, {0x19, 0x71, 0xcf, 0xff}}},\n    {{{ -3975,   4262,   7396}, 0, {  -110,   -112}, {0xe2, 0x78, 0xe8, 0xff}}},\n    {{{ -4763,   4058,   7142}, 0, {  1026,    224}, {0xef, 0x74, 0xd1, 0xff}}},\n    {{{ -4795,   4211,   7293}, 0, {   990,      0}, {0x06, 0x52, 0xa1, 0xff}}},\n    {{{ -5485,   3853,   6899}, 0, {  1064,    384}, {0xf1, 0x76, 0xd5, 0xff}}},\n};\n\n// 0x07020298 - 0x07020388\nstatic const Vtx ttm_seg7_vertex_07020298[] = {\n    {{{ -5419,    -89,  -6497}, 0, {  1014,    168}, {0x39, 0x5f, 0x3c, 0xff}}},\n    {{{ -6502,    115,  -5413}, 0, {  -180,    184}, {0x49, 0x60, 0x26, 0xff}}},\n    {{{ -6253,     13,  -5233}, 0, {  -108,    554}, {0x1a, 0x7c, 0xfe, 0xff}}},\n    {{{ -7252,   2214,   3505}, 0, {   948,    320}, {0x19, 0x71, 0xcf, 0xff}}},\n    {{{ -7457,   1805,   2276}, 0, {   -86,     98}, {0x1e, 0x74, 0xd9, 0xff}}},\n    {{{ -7406,   2317,   3505}, 0, {   962,    124}, {0x4d, 0x59, 0xd3, 0xff}}},\n    {{{ -7111,    320,  -4202}, 0, {  1024,    166}, {0x52, 0x5f, 0x0d, 0xff}}},\n    {{{ -7045,    422,  -2986}, 0, {   -88,    550}, {0x16, 0x7a, 0xe9, 0xff}}},\n    {{{ -6820,    218,  -4103}, 0, {  1022,    544}, {0x19, 0x7b, 0xf4, 0xff}}},\n    {{{ -7351,    525,  -3016}, 0, {  -152,    176}, {0x5b, 0x57, 0xfc, 0xff}}},\n    {{{ -6502,    115,  -5413}, 0, {  1020,    168}, {0x49, 0x60, 0x26, 0xff}}},\n    {{{ -6820,    218,  -4103}, 0, {  -106,    552}, {0x19, 0x7b, 0xf4, 0xff}}},\n    {{{ -6253,     13,  -5233}, 0, {  1018,    546}, {0x1a, 0x7c, 0xfe, 0xff}}},\n    {{{ -7111,    320,  -4202}, 0, {  -180,    180}, {0x52, 0x5f, 0x0d, 0xff}}},\n    {{{ -5239,   -191,  -6248}, 0, {  1012,    546}, {0x1a, 0x7c, 0x05, 0xff}}},\n};\n\n// 0x07020388 - 0x07020478\nstatic const Vtx ttm_seg7_vertex_07020388[] = {\n    {{{ -4208,   -293,  -7105}, 0, {  1018,    166}, {0x27, 0x5f, 0x49, 0xff}}},\n    {{{ -5239,   -191,  -6248}, 0, {  -106,    556}, {0x1a, 0x7c, 0x05, 0xff}}},\n    {{{ -4108,   -396,  -6815}, 0, {  1016,    544}, {0x19, 0x7b, 0x0c, 0xff}}},\n    {{{ -5419,    -89,  -6497}, 0, {  -182,    186}, {0x39, 0x5f, 0x3c, 0xff}}},\n    {{{ -7457,   1210,     -3}, 0, {     0,     98}, {0x2b, 0x74, 0xe5, 0xff}}},\n    {{{ -7045,    422,  -2986}, 0, {  1004,    542}, {0x16, 0x7a, 0xe9, 0xff}}},\n    {{{ -7351,    525,  -3016}, 0, {  1004,    164}, {0x5b, 0x57, 0xfc, 0xff}}},\n    {{{  3722,  -6540,   7099}, 0, {  1066,    530}, {0x0f, 0x78, 0xdc, 0xff}}},\n    {{{  3289,  -6437,   7208}, 0, {   180,    536}, {0x12, 0x79, 0xe1, 0xff}}},\n    {{{  3793,  -6437,   7291}, 0, {  1056,    794}, {0xf2, 0x59, 0xa7, 0xff}}},\n    {{{  3314,  -6335,   7411}, 0, {    80,    796}, {0x03, 0x59, 0xa6, 0xff}}},\n    {{{  4159,  -6642,   6883}, 0, {  1062,    530}, {0x03, 0x79, 0xda, 0xff}}},\n    {{{  3722,  -6540,   7099}, 0, {   182,    534}, {0x0f, 0x78, 0xdc, 0xff}}},\n    {{{  4278,  -6540,   7049}, 0, {  1052,    794}, {0xd9, 0x59, 0xaf, 0xff}}},\n    {{{  3793,  -6437,   7291}, 0, {    78,    794}, {0xf2, 0x59, 0xa7, 0xff}}},\n};\n\n// 0x07020478 - 0x07020568\nstatic const Vtx ttm_seg7_vertex_07020478[] = {\n    {{{  4490,  -6745,   6552}, 0, {  1062,    530}, {0xf9, 0x78, 0xda, 0xff}}},\n    {{{  4159,  -6642,   6883}, 0, {   210,    538}, {0x03, 0x79, 0xda, 0xff}}},\n    {{{  4656,  -6642,   6671}, 0, {  1052,    794}, {0xc2, 0x59, 0xc0, 0xff}}},\n    {{{  4278,  -6540,   7049}, 0, {    86,    796}, {0xd9, 0x59, 0xaf, 0xff}}},\n    {{{  4706,  -6847,   6115}, 0, {  1054,    530}, {0xef, 0x78, 0xde, 0xff}}},\n    {{{  4490,  -6745,   6552}, 0, {   176,    538}, {0xf9, 0x78, 0xda, 0xff}}},\n    {{{  4898,  -6745,   6187}, 0, {  1046,    794}, {0xb3, 0x59, 0xd2, 0xff}}},\n    {{{  4656,  -6642,   6671}, 0, {    72,    796}, {0xc2, 0x59, 0xc0, 0xff}}},\n    {{{  4815,  -6949,   5682}, 0, {  1068,    530}, {0xf1, 0x7b, 0xe8, 0xff}}},\n    {{{  4706,  -6847,   6115}, 0, {   182,    534}, {0xef, 0x78, 0xde, 0xff}}},\n    {{{  5018,  -6847,   5707}, 0, {  1058,    794}, {0xb2, 0x5e, 0xe1, 0xff}}},\n    {{{  -933,  -5823,   5937}, 0, {  -226,    416}, {0x1f, 0x7a, 0xfa, 0xff}}},\n    {{{ -1257,  -5721,   5056}, 0, {   974,    536}, {0x1f, 0x7b, 0x03, 0xff}}},\n    {{{ -1099,  -5721,   6057}, 0, {  -292,    150}, {0x4b, 0x5b, 0xd4, 0xff}}},\n    {{{  4898,  -6745,   6187}, 0, {    80,    796}, {0xb3, 0x59, 0xd2, 0xff}}},\n};\n\n// 0x07020568 - 0x07020648\nstatic const Vtx ttm_seg7_vertex_07020568[] = {\n    {{{  5120,  -7052,   4338}, 0, {   990,    990}, {0xd2, 0x75, 0xf3, 0xff}}},\n    {{{  4815,  -6949,   5682}, 0, {    56,    610}, {0xf1, 0x7b, 0xe8, 0xff}}},\n    {{{  5018,  -6847,   5707}, 0, {    18,    864}, {0xb2, 0x5e, 0xe1, 0xff}}},\n    {{{ -1257,  -5721,   5056}, 0, {  -176,    532}, {0x1f, 0x7b, 0x03, 0xff}}},\n    {{{ -1768,  -5516,   4274}, 0, {   972,    160}, {0x54, 0x5f, 0x00, 0xff}}},\n    {{{ -1545,  -5618,   5163}, 0, {  -274,    152}, {0x57, 0x58, 0xe7, 0xff}}},\n    {{{ -1564,  -5618,   4249}, 0, {   968,    424}, {0x18, 0x7b, 0x0d, 0xff}}},\n    {{{ -1257,  -5721,   5056}, 0, {   974,    536}, {0x1f, 0x7b, 0x03, 0xff}}},\n    {{{ -1545,  -5618,   5163}, 0, {   974,    160}, {0x57, 0x58, 0xe7, 0xff}}},\n    {{{ -1099,  -5721,   6057}, 0, {  -292,    150}, {0x4b, 0x5b, 0xd4, 0xff}}},\n    {{{  -294,  -5925,   6576}, 0, {  -280,    412}, {0x1a, 0x7b, 0xf0, 0xff}}},\n    {{{  -933,  -5823,   5937}, 0, {   970,    420}, {0x1f, 0x7a, 0xfa, 0xff}}},\n    {{{  -414,  -5823,   6742}, 0, {  -368,    146}, {0x3a, 0x5a, 0xbd, 0xff}}},\n    {{{ -1099,  -5721,   6057}, 0, {   974,    158}, {0x4b, 0x5b, 0xd4, 0xff}}},\n};\n\n// 0x07020648 - 0x07020738\nstatic const Vtx ttm_seg7_vertex_07020648[] = {\n    {{{   551,  -6028,   6997}, 0, {  -222,    416}, {0x16, 0x7a, 0xea, 0xff}}},\n    {{{  -294,  -5925,   6576}, 0, {   974,    422}, {0x1a, 0x7b, 0xf0, 0xff}}},\n    {{{   480,  -5925,   7189}, 0, {  -288,    150}, {0x27, 0x59, 0xb0, 0xff}}},\n    {{{  -414,  -5823,   6742}, 0, {   978,    158}, {0x3a, 0x5a, 0xbd, 0xff}}},\n    {{{  1394,  -6130,   7208}, 0, {  -214,    418}, {0x13, 0x7a, 0xe6, 0xff}}},\n    {{{   551,  -6028,   6997}, 0, {   968,    424}, {0x16, 0x7a, 0xea, 0xff}}},\n    {{{  1369,  -6028,   7411}, 0, {  -274,    152}, {0x15, 0x59, 0xa9, 0xff}}},\n    {{{   480,  -5925,   7189}, 0, {   970,    160}, {0x27, 0x59, 0xb0, 0xff}}},\n    {{{  3314,  -6335,   7411}, 0, {  -140,    146}, {0x03, 0x59, 0xa6, 0xff}}},\n    {{{  3289,  -6437,   7208}, 0, {  -114,    414}, {0x12, 0x79, 0xe1, 0xff}}},\n    {{{  1394,  -6130,   7208}, 0, {   978,    422}, {0x13, 0x7a, 0xe6, 0xff}}},\n    {{{  1369,  -6028,   7411}, 0, {   980,    158}, {0x15, 0x59, 0xa9, 0xff}}},\n    {{{  -279,   -805,  -6906}, 0, {   992,    164}, {0xe0, 0x66, 0x44, 0xff}}},\n    {{{  -459,   -908,  -6657}, 0, {   992,    542}, {0xff, 0x7d, 0x13, 0xff}}},\n    {{{   699,   -959,  -6085}, 0, {  -144,     80}, {0xed, 0x77, 0x27, 0xff}}},\n};\n\n// 0x07020738 - 0x07020828\nstatic const Vtx ttm_seg7_vertex_07020738[] = {\n    {{{  -279,   -805,  -6906}, 0, {  1144,    160}, {0xe0, 0x66, 0x44, 0xff}}},\n    {{{  -860,   -754,  -7202}, 0, {   -20,    276}, {0xea, 0x5f, 0x50, 0xff}}},\n    {{{  -966,   -857,  -6914}, 0, {   110,    638}, {0x10, 0x7d, 0x09, 0xff}}},\n    {{{  -459,   -908,  -6657}, 0, {  1132,    538}, {0xff, 0x7d, 0x13, 0xff}}},\n    {{{ -1767,  -5106,   1573}, 0, {  -212,    144}, {0x5d, 0x54, 0x0c, 0xff}}},\n    {{{ -1562,  -5209,   1573}, 0, {  -168,    414}, {0x1c, 0x7a, 0x11, 0xff}}},\n    {{{ -1555,  -5106,    775}, 0, {   970,    426}, {0x25, 0x78, 0x0f, 0xff}}},\n    {{{  -860,   -754,  -7202}, 0, {  1052,    128}, {0xea, 0x5f, 0x50, 0xff}}},\n    {{{ -1430,   -703,  -7343}, 0, {  -364,    132}, {0xff, 0x5f, 0x53, 0xff}}},\n    {{{ -1468,   -805,  -7039}, 0, {  -174,    524}, {0x0d, 0x7e, 0xfb, 0xff}}},\n    {{{  -966,   -857,  -6914}, 0, {  1072,    522}, {0x10, 0x7d, 0x09, 0xff}}},\n    {{{ -1430,   -703,  -7343}, 0, {   992,    126}, {0xff, 0x5f, 0x53, 0xff}}},\n    {{{ -2992,   -601,  -7040}, 0, {   -94,    486}, {0x14, 0x7b, 0x11, 0xff}}},\n    {{{ -1468,   -805,  -7039}, 0, {   992,    518}, {0x0d, 0x7e, 0xfb, 0xff}}},\n    {{{ -3022,   -498,  -7345}, 0, {  -144,     92}, {0x15, 0x5f, 0x50, 0xff}}},\n};\n\n// 0x07020828 - 0x07020908\nstatic const Vtx ttm_seg7_vertex_07020828[] = {\n    {{{ -3022,   -498,  -7345}, 0, {  1022,    164}, {0x15, 0x5f, 0x50, 0xff}}},\n    {{{ -4208,   -293,  -7105}, 0, {  -154,    182}, {0x27, 0x5f, 0x49, 0xff}}},\n    {{{ -4108,   -396,  -6815}, 0, {   -90,    552}, {0x19, 0x7b, 0x0c, 0xff}}},\n    {{{ -2992,   -601,  -7040}, 0, {  1020,    542}, {0x14, 0x7b, 0x11, 0xff}}},\n    {{{ -1758,  -5004,    742}, 0, {   972,    162}, {0x58, 0x59, 0x0c, 0xff}}},\n    {{{ -1767,  -5106,   1573}, 0, {  -212,    144}, {0x5d, 0x54, 0x0c, 0xff}}},\n    {{{ -1555,  -5106,    775}, 0, {   970,    426}, {0x25, 0x78, 0x0f, 0xff}}},\n    {{{ -1768,  -5516,   4274}, 0, {   -72,    156}, {0x54, 0x5f, 0x00, 0xff}}},\n    {{{ -1564,  -5618,   4249}, 0, {   -64,    422}, {0x18, 0x7b, 0x0d, 0xff}}},\n    {{{ -1562,  -5209,   1573}, 0, {   980,    428}, {0x1c, 0x7a, 0x11, 0xff}}},\n    {{{ -1767,  -5106,   1573}, 0, {   982,    162}, {0x5d, 0x54, 0x0c, 0xff}}},\n    {{{ 14322, -10313,   -100}, 0, {     0,    968}, {0x1a, 0x6e, 0xc8, 0xff}}},\n    {{{ 14322, -10313,   -203}, 0, {     0,    990}, {0x1a, 0x7c, 0x00, 0xff}}},\n    {{{ 13093, -10053,   -176}, 0, {   990,    990}, {0x20, 0x79, 0xed, 0xff}}},\n};\n\n// 0x07020908 - 0x07020A08\nstatic const Vtx ttm_seg7_vertex_07020908[] = {\n    {{{  4059,   6147,   4253}, 0, {  1064,    564}, {0x06, 0x7d, 0x13, 0xff}}},\n    {{{  3848,   6147,   4364}, 0, {   568,    514}, {0x0d, 0x7c, 0x12, 0xff}}},\n    {{{  4117,   6147,   4738}, 0, {   714,    960}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4718,   6147,   4364}, 0, {   332,    396}, {0xf4, 0x7c, 0x13, 0xff}}},\n    {{{  4508,   6147,   4253}, 0, {   768,    414}, {0xf8, 0x7c, 0x15, 0xff}}},\n    {{{  4331,   6147,   4679}, 0, {   918,    -28}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4447,   6147,   4737}, 0, {   680,    -36}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4369,   6147,   4212}, 0, {  1042,    398}, {0xfe, 0x7d, 0x10, 0xff}}},\n    {{{  4295,   6147,   4667}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4369,   6147,   4212}, 0, {   424,    398}, {0xfe, 0x7d, 0x10, 0xff}}},\n    {{{  4198,   6147,   4212}, 0, {   756,    420}, {0x01, 0x7d, 0x14, 0xff}}},\n    {{{  4272,   6147,   4667}, 0, {   912,    -24}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4295,   6147,   4667}, 0, {   866,    -28}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4059,   6147,   4253}, 0, {  1052,    396}, {0x06, 0x7d, 0x13, 0xff}}},\n    {{{  4236,   6147,   4679}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3849,   6147,   5006}, 0, {     0,    990}, {0xf9, 0x7e, 0x07, 0xff}}},\n};\n\n// 0x07020A08 - 0x07020AF8\nstatic const Vtx ttm_seg7_vertex_07020A08[] = {\n    {{{  3848,   6147,   4364}, 0, {   568,    514}, {0x0d, 0x7c, 0x12, 0xff}}},\n    {{{  3523,   6147,   4680}, 0, {  -326,    544}, {0xff, 0x7c, 0x18, 0xff}}},\n    {{{  3849,   6147,   5006}, 0, {     0,    990}, {0xf9, 0x7e, 0x07, 0xff}}},\n    {{{  4059,   6147,   4253}, 0, {  1064,    564}, {0x06, 0x7d, 0x13, 0xff}}},\n    {{{  4117,   6147,   4738}, 0, {   714,    960}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4236,   6147,   4679}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3523,   6147,   4680}, 0, {   954,    544}, {0xff, 0x7c, 0x18, 0xff}}},\n    {{{  3234,   6044,   4970}, 0, {   702,    532}, {0xf5, 0x78, 0x27, 0xff}}},\n    {{{  3559,   6044,   5296}, 0, {   738,    978}, {0xe8, 0x7a, 0x18, 0xff}}},\n    {{{  3849,   6147,   5006}, 0, {   990,    990}, {0xf9, 0x7e, 0x07, 0xff}}},\n    {{{  2690,   5635,   6165}, 0, {     0,    990}, {0xe5, 0x7b, 0x0a, 0xff}}},\n    {{{  2220,   5635,   5694}, 0, {   -82,    346}, {0x0a, 0x6d, 0x3f, 0xff}}},\n    {{{  6578,   6554,   5710}, 0, {    64,    156}, {0xbe, 0x69, 0x15, 0xff}}},\n    {{{  5243,   6198,   5533}, 0, {   990,    990}, {0xe9, 0x7a, 0xe9, 0xff}}},\n    {{{  5999,   6554,   6289}, 0, {     0,    990}, {0xe4, 0x78, 0xe4, 0xff}}},\n};\n\n// 0x07020AF8 - 0x07020BF8\nstatic const Vtx ttm_seg7_vertex_07020AF8[] = {\n    {{{   747,   5327,   6577}, 0, {   344,    932}, {0xf0, 0x7d, 0x01, 0xff}}},\n    {{{   839,   5327,   7143}, 0, {   252,    260}, {0xee, 0x7d, 0xf4, 0xff}}},\n    {{{  1000,   5379,   6492}, 0, {     0,    990}, {0xeb, 0x7c, 0x06, 0xff}}},\n    {{{  6578,   6554,   5710}, 0, {    64,    156}, {0xbe, 0x69, 0x15, 0xff}}},\n    {{{  5714,   6198,   5063}, 0, {  1068,    312}, {0xdf, 0x7a, 0xff, 0xff}}},\n    {{{  5243,   6198,   5533}, 0, {   990,    990}, {0xe9, 0x7a, 0xe9, 0xff}}},\n    {{{  5714,   6198,   5063}, 0, {   978,    326}, {0xdf, 0x7a, 0xff, 0xff}}},\n    {{{  5026,   6147,   5316}, 0, {   708,   1006}, {0xf7, 0x7e, 0xf7, 0xff}}},\n    {{{  5461,   6147,   4882}, 0, {   698,    396}, {0xe8, 0x7b, 0x10, 0xff}}},\n    {{{  4718,   6147,   4364}, 0, {  -114,    534}, {0xf4, 0x7c, 0x13, 0xff}}},\n    {{{  4447,   6147,   4737}, 0, {   -40,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1236,   5379,   7062}, 0, {  -326,    302}, {0xe4, 0x79, 0xeb, 0xff}}},\n    {{{  1236,   5379,   7062}, 0, {  1054,    270}, {0xe4, 0x79, 0xeb, 0xff}}},\n    {{{  1506,   5430,   6927}, 0, {   456,    258}, {0xe2, 0x7a, 0xf1, 0xff}}},\n    {{{  1210,   5430,   6387}, 0, {   522,    978}, {0xeb, 0x7c, 0x0a, 0xff}}},\n    {{{  1000,   5379,   6492}, 0, {   990,    990}, {0xeb, 0x7c, 0x06, 0xff}}},\n};\n\n// 0x07020BF8 - 0x07020CD8\nstatic const Vtx ttm_seg7_vertex_07020BF8[] = {\n    {{{  1210,   5430,   6387}, 0, {   522,    978}, {0xeb, 0x7c, 0x0a, 0xff}}},\n    {{{  1506,   5430,   6927}, 0, {   456,    258}, {0xe2, 0x7a, 0xf1, 0xff}}},\n    {{{  1450,   5481,   6244}, 0, {     0,    990}, {0xf0, 0x7d, 0x0b, 0xff}}},\n    {{{ -1234,   5123,   7396}, 0, {   -42,     28}, {0xf2, 0x7d, 0xf0, 0xff}}},\n    {{{  -104,   5225,   6577}, 0, {   718,    990}, {0xf3, 0x7e, 0x00, 0xff}}},\n    {{{ -1234,   5123,   6577}, 0, {     0,    990}, {0xf2, 0x7e, 0x00, 0xff}}},\n    {{{  -104,   5225,   7242}, 0, {   708,    210}, {0xef, 0x77, 0xda, 0xff}}},\n    {{{  1838,   5481,   6729}, 0, {  -300,    280}, {0xe8, 0x7c, 0xf7, 0xff}}},\n    {{{   747,   5327,   6577}, 0, {   344,    932}, {0xf0, 0x7d, 0x01, 0xff}}},\n    {{{   301,   5276,   6577}, 0, {   990,    990}, {0xf1, 0x7e, 0x00, 0xff}}},\n    {{{   301,   5276,   7191}, 0, {  1032,    272}, {0xf1, 0x7c, 0xeb, 0xff}}},\n    {{{   839,   5327,   7143}, 0, {   252,    260}, {0xee, 0x7d, 0xf4, 0xff}}},\n    {{{ -1644,   5071,   7396}, 0, {   474,      0}, {0xec, 0x7d, 0x00, 0xff}}},\n    {{{ -1644,   5071,   6577}, 0, {   474,    990}, {0xe7, 0x7c, 0x00, 0xff}}},\n};\n\n// 0x07020CD8 - 0x07020DC8\nstatic const Vtx ttm_seg7_vertex_07020CD8[] = {\n    {{{  2690,   5635,   6165}, 0, {    -6,     88}, {0xe5, 0x7b, 0x0a, 0xff}}},\n    {{{  2220,   5635,   5694}, 0, {    14,    858}, {0x0a, 0x6d, 0x3f, 0xff}}},\n    {{{  1677,   5532,   6020}, 0, {   660,   1002}, {0xfc, 0x7b, 0x1d, 0xff}}},\n    {{{  2185,   5532,   6529}, 0, {   640,    172}, {0xe0, 0x79, 0xee, 0xff}}},\n    {{{  1450,   5481,   6244}, 0, {   994,    990}, {0xf0, 0x7d, 0x0b, 0xff}}},\n    {{{  1838,   5481,   6729}, 0, {  1042,    268}, {0xe8, 0x7c, 0xf7, 0xff}}},\n    {{{  -104,   5225,   6577}, 0, {   718,    990}, {0xf3, 0x7e, 0x00, 0xff}}},\n    {{{  -104,   5225,   7242}, 0, {   708,    210}, {0xef, 0x77, 0xda, 0xff}}},\n    {{{   301,   5276,   7191}, 0, {   980,    268}, {0xf1, 0x7c, 0xeb, 0xff}}},\n    {{{   301,   5276,   6577}, 0, {   990,    990}, {0xf1, 0x7e, 0x00, 0xff}}},\n    {{{ -1644,   5071,   7396}, 0, {   474,      0}, {0xec, 0x7d, 0x00, 0xff}}},\n    {{{ -1234,   5123,   7396}, 0, {     0,      0}, {0xf2, 0x7d, 0xf0, 0xff}}},\n    {{{ -1234,   5123,   6577}, 0, {     0,    990}, {0xf2, 0x7e, 0x00, 0xff}}},\n    {{{ -2053,   4969,   7396}, 0, {   990,      0}, {0xdd, 0x7a, 0x00, 0xff}}},\n    {{{ -1644,   5071,   6577}, 0, {   474,    990}, {0xe7, 0x7c, 0x00, 0xff}}},\n};\n\n// 0x07020DC8 - 0x07020EB8\nstatic const Vtx ttm_seg7_vertex_07020DC8[] = {\n    {{{ -6492,   3034,   5216}, 0, {   990,    990}, {0xee, 0x71, 0xca, 0xff}}},\n    {{{ -6866,   3034,   5382}, 0, {  1154,    570}, {0x03, 0x71, 0xc7, 0xff}}},\n    {{{ -6206,   3341,   5645}, 0, {     0,    990}, {0xe1, 0x71, 0xd1, 0xff}}},\n    {{{ -2053,   4969,   7396}, 0, {   990,      0}, {0xdd, 0x7a, 0x00, 0xff}}},\n    {{{ -1644,   5071,   6577}, 0, {   474,    990}, {0xe7, 0x7c, 0x00, 0xff}}},\n    {{{ -2053,   4969,   6577}, 0, {   990,    990}, {0xd9, 0x78, 0x00, 0xff}}},\n    {{{ -3975,   4262,   7396}, 0, {   990,      0}, {0xe2, 0x78, 0xe8, 0xff}}},\n    {{{ -2053,   4969,   7396}, 0, {     0,      0}, {0xdd, 0x7a, 0x00, 0xff}}},\n    {{{ -2053,   4969,   6577}, 0, {     0,    990}, {0xd9, 0x78, 0x00, 0xff}}},\n    {{{ -3975,   4262,   6577}, 0, {   990,    990}, {0xdc, 0x79, 0xff, 0xff}}},\n    {{{ -7044,   2726,   4683}, 0, {  1118,    572}, {0x15, 0x70, 0xca, 0xff}}},\n    {{{ -6866,   3034,   5382}, 0, {   -68,    602}, {0x03, 0x71, 0xc7, 0xff}}},\n    {{{ -6492,   3034,   5216}, 0, {     0,    990}, {0xee, 0x71, 0xca, 0xff}}},\n    {{{ -6638,   2726,   4632}, 0, {   990,    990}, {0xfc, 0x73, 0xcb, 0xff}}},\n    {{{ -6523,   3341,   5905}, 0, {     0,    596}, {0xf7, 0x71, 0xc9, 0xff}}},\n};\n\n// 0x07020EB8 - 0x07020FA8\nstatic const Vtx ttm_seg7_vertex_07020EB8[] = {\n    {{{ -4694,   4058,   6577}, 0, {     0,    990}, {0xdd, 0x79, 0xf8, 0xff}}},\n    {{{ -5277,   3853,   6431}, 0, {   990,    990}, {0xdb, 0x77, 0xeb, 0xff}}},\n    {{{ -5485,   3853,   6899}, 0, {  1064,    384}, {0xf1, 0x76, 0xd5, 0xff}}},\n    {{{ -6523,   3341,   5905}, 0, {  1088,    574}, {0xf7, 0x71, 0xc9, 0xff}}},\n    {{{ -5966,   3648,   6461}, 0, {     0,    590}, {0xf3, 0x75, 0xd2, 0xff}}},\n    {{{ -5706,   3648,   6145}, 0, {     0,    990}, {0xde, 0x75, 0xe0, 0xff}}},\n    {{{ -6206,   3341,   5645}, 0, {   990,    990}, {0xe1, 0x71, 0xd1, 0xff}}},\n    {{{ -6638,   2214,   3505}, 0, {     0,    990}, {0x00, 0x77, 0xd4, 0xff}}},\n    {{{ -7252,   2214,   3505}, 0, {  -172,    324}, {0x19, 0x71, 0xcf, 0xff}}},\n    {{{ -6638,   2726,   4632}, 0, {   990,    990}, {0xfc, 0x73, 0xcb, 0xff}}},\n    {{{ -7044,   2726,   4683}, 0, {   936,    560}, {0x15, 0x70, 0xca, 0xff}}},\n    {{{ -5277,   3853,   6431}, 0, {     0,    990}, {0xdb, 0x77, 0xeb, 0xff}}},\n    {{{ -5706,   3648,   6145}, 0, {   990,    990}, {0xde, 0x75, 0xe0, 0xff}}},\n    {{{ -5966,   3648,   6461}, 0, {  1116,    574}, {0xf3, 0x75, 0xd2, 0xff}}},\n    {{{ -5485,   3853,   6899}, 0, {  -112,    502}, {0xf1, 0x76, 0xd5, 0xff}}},\n};\n\n// 0x07020FA8 - 0x07021088\nstatic const Vtx ttm_seg7_vertex_07020FA8[] = {\n    {{{ -7457,   1805,   2276}, 0, {     0,      0}, {0x1e, 0x74, 0xd9, 0xff}}},\n    {{{ -6638,   1805,   2276}, 0, {     0,    990}, {0x00, 0x79, 0xdc, 0xff}}},\n    {{{ -6638,   1210,     -3}, 0, {   990,    990}, {0x00, 0x7a, 0xe0, 0xff}}},\n    {{{ -4763,   4058,   7142}, 0, {  -200,    336}, {0xef, 0x74, 0xd1, 0xff}}},\n    {{{ -4694,   4058,   6577}, 0, {     0,    990}, {0xdd, 0x79, 0xf8, 0xff}}},\n    {{{ -5485,   3853,   6899}, 0, {  1064,    384}, {0xf1, 0x76, 0xd5, 0xff}}},\n    {{{ -3975,   4262,   6577}, 0, {     0,    990}, {0xdc, 0x79, 0xff, 0xff}}},\n    {{{ -4694,   4058,   6577}, 0, {   990,    990}, {0xdd, 0x79, 0xf8, 0xff}}},\n    {{{ -4763,   4058,   7142}, 0, {  1026,    224}, {0xef, 0x74, 0xd1, 0xff}}},\n    {{{ -3975,   4262,   7396}, 0, {  -110,   -112}, {0xe2, 0x78, 0xe8, 0xff}}},\n    {{{ -6638,   2214,   3505}, 0, {   990,    990}, {0x00, 0x77, 0xd4, 0xff}}},\n    {{{ -7457,   1805,   2276}, 0, {   -86,     98}, {0x1e, 0x74, 0xd9, 0xff}}},\n    {{{ -7252,   2214,   3505}, 0, {   948,    320}, {0x19, 0x71, 0xcf, 0xff}}},\n    {{{ -7457,   1210,     -3}, 0, {   990,      0}, {0x2b, 0x74, 0xe5, 0xff}}},\n};\n\n// 0x07021088 - 0x07021178\nstatic const Vtx ttm_seg7_vertex_07021088[] = {\n    {{{ -6820,    218,  -4103}, 0, {  1022,    544}, {0x19, 0x7b, 0xf4, 0xff}}},\n    {{{ -7045,    422,  -2986}, 0, {   -88,    550}, {0x16, 0x7a, 0xe9, 0xff}}},\n    {{{ -6638,    422,  -2946}, 0, {     0,    990}, {0x04, 0x7c, 0xe6, 0xff}}},\n    {{{ -4108,   -396,  -6815}, 0, {  1016,    544}, {0x19, 0x7b, 0x0c, 0xff}}},\n    {{{ -5239,   -191,  -6248}, 0, {  -106,    556}, {0x1a, 0x7c, 0x05, 0xff}}},\n    {{{ -4999,   -191,  -5915}, 0, {     0,    990}, {0x12, 0x7d, 0xf6, 0xff}}},\n    {{{ -3975,   -396,  -6427}, 0, {   990,    990}, {0x16, 0x7c, 0xfb, 0xff}}},\n    {{{ -5239,   -191,  -6248}, 0, {  1012,    546}, {0x1a, 0x7c, 0x05, 0xff}}},\n    {{{ -6253,     13,  -5233}, 0, {  -108,    554}, {0x1a, 0x7c, 0xfe, 0xff}}},\n    {{{ -5921,     13,  -4994}, 0, {     0,    990}, {0x0d, 0x7d, 0xf2, 0xff}}},\n    {{{ -4999,   -191,  -5915}, 0, {   990,    990}, {0x12, 0x7d, 0xf6, 0xff}}},\n    {{{ -6253,     13,  -5233}, 0, {  1018,    546}, {0x1a, 0x7c, 0xfe, 0xff}}},\n    {{{ -6820,    218,  -4103}, 0, {  -106,    552}, {0x19, 0x7b, 0xf4, 0xff}}},\n    {{{ -6433,    218,  -3970}, 0, {     0,    990}, {0x09, 0x7d, 0xec, 0xff}}},\n    {{{ -5921,     13,  -4994}, 0, {   990,    990}, {0x0d, 0x7d, 0xf2, 0xff}}},\n};\n\n// 0x07021178 - 0x07021268\nstatic const Vtx ttm_seg7_vertex_07021178[] = {\n    {{{  4706,  -6847,   6115}, 0, {  1054,    530}, {0xef, 0x78, 0xde, 0xff}}},\n    {{{  4221,  -6847,   5936}, 0, {   990,      0}, {0x08, 0x7a, 0xe0, 0xff}}},\n    {{{  4066,  -6745,   6246}, 0, {   354,    -16}, {0x11, 0x7a, 0xe3, 0xff}}},\n    {{{ -6433,    218,  -3970}, 0, {   990,    990}, {0x09, 0x7d, 0xec, 0xff}}},\n    {{{ -6820,    218,  -4103}, 0, {  1022,    544}, {0x19, 0x7b, 0xf4, 0xff}}},\n    {{{ -6638,    422,  -2946}, 0, {     0,    990}, {0x04, 0x7c, 0xe6, 0xff}}},\n    {{{ -6638,    422,  -2946}, 0, {   990,    990}, {0x04, 0x7c, 0xe6, 0xff}}},\n    {{{ -7045,    422,  -2986}, 0, {  1004,    542}, {0x16, 0x7a, 0xe9, 0xff}}},\n    {{{ -6638,   1210,     -3}, 0, {     0,    990}, {0x00, 0x7a, 0xe0, 0xff}}},\n    {{{ -7457,   1210,     -3}, 0, {     0,     98}, {0x2b, 0x74, 0xe5, 0xff}}},\n    {{{  4815,  -6949,   5682}, 0, {  1068,    530}, {0xf1, 0x7b, 0xe8, 0xff}}},\n    {{{  4221,  -6847,   5936}, 0, {   330,    -16}, {0x08, 0x7a, 0xe0, 0xff}}},\n    {{{  4706,  -6847,   6115}, 0, {   182,    534}, {0xef, 0x78, 0xde, 0xff}}},\n    {{{  4300,  -6949,   5619}, 0, {   990,      0}, {0x02, 0x7c, 0xe8, 0xff}}},\n    {{{  4490,  -6745,   6552}, 0, {   176,    538}, {0xf9, 0x78, 0xda, 0xff}}},\n};\n\n// 0x07021268 - 0x07021358\nstatic const Vtx ttm_seg7_vertex_07021268[] = {\n    {{{  3289,  -6437,   7208}, 0, {  -114,    414}, {0x12, 0x79, 0xe1, 0xff}}},\n    {{{  3226,  -6437,   6693}, 0, {     0,    990}, {0x1c, 0x7b, 0xfa, 0xff}}},\n    {{{  1457,  -6130,   6693}, 0, {   990,    990}, {0x13, 0x7d, 0x00, 0xff}}},\n    {{{  4490,  -6745,   6552}, 0, {  1062,    530}, {0xf9, 0x78, 0xda, 0xff}}},\n    {{{  3853,  -6642,   6459}, 0, {   430,    -12}, {0x19, 0x7a, 0xe9, 0xff}}},\n    {{{  4159,  -6642,   6883}, 0, {   210,    538}, {0x03, 0x79, 0xda, 0xff}}},\n    {{{  4066,  -6745,   6246}, 0, {   990,      0}, {0x11, 0x7a, 0xe3, 0xff}}},\n    {{{  4159,  -6642,   6883}, 0, {  1062,    530}, {0x03, 0x79, 0xda, 0xff}}},\n    {{{  3853,  -6642,   6459}, 0, {   990,      0}, {0x19, 0x7a, 0xe9, 0xff}}},\n    {{{  3543,  -6540,   6614}, 0, {   354,    -16}, {0x1e, 0x7a, 0xf2, 0xff}}},\n    {{{  3722,  -6540,   7099}, 0, {   182,    534}, {0x0f, 0x78, 0xdc, 0xff}}},\n    {{{  3722,  -6540,   7099}, 0, {  1066,    530}, {0x0f, 0x78, 0xdc, 0xff}}},\n    {{{  3226,  -6437,   6693}, 0, {   330,    -16}, {0x1c, 0x7b, 0xfa, 0xff}}},\n    {{{  3289,  -6437,   7208}, 0, {   180,    536}, {0x12, 0x79, 0xe1, 0xff}}},\n    {{{  3543,  -6540,   6614}, 0, {   990,      0}, {0x1e, 0x7a, 0xf2, 0xff}}},\n};\n\n// 0x07021358 - 0x07021448\nstatic const Vtx ttm_seg7_vertex_07021358[] = {\n    {{{  -294,  -5925,   6576}, 0, {  -280,    412}, {0x1a, 0x7b, 0xf0, 0xff}}},\n    {{{    11,  -5925,   6152}, 0, {     0,    990}, {0x0d, 0x7e, 0x08, 0xff}}},\n    {{{  -509,  -5823,   5632}, 0, {   990,    990}, {0x0a, 0x7e, 0x0b, 0xff}}},\n    {{{  3289,  -6437,   7208}, 0, {  -114,    414}, {0x12, 0x79, 0xe1, 0xff}}},\n    {{{  1457,  -6130,   6693}, 0, {   990,    990}, {0x13, 0x7d, 0x00, 0xff}}},\n    {{{  1394,  -6130,   7208}, 0, {   978,    422}, {0x13, 0x7a, 0xe6, 0xff}}},\n    {{{  1394,  -6130,   7208}, 0, {  -214,    418}, {0x13, 0x7a, 0xe6, 0xff}}},\n    {{{  1457,  -6130,   6693}, 0, {     0,    990}, {0x13, 0x7d, 0x00, 0xff}}},\n    {{{   730,  -6028,   6512}, 0, {   990,    990}, {0x0f, 0x7d, 0x04, 0xff}}},\n    {{{   551,  -6028,   6997}, 0, {   968,    424}, {0x16, 0x7a, 0xea, 0xff}}},\n    {{{   551,  -6028,   6997}, 0, {  -222,    416}, {0x16, 0x7a, 0xea, 0xff}}},\n    {{{   730,  -6028,   6512}, 0, {     0,    990}, {0x0f, 0x7d, 0x04, 0xff}}},\n    {{{    11,  -5925,   6152}, 0, {   990,    990}, {0x0d, 0x7e, 0x08, 0xff}}},\n    {{{  -294,  -5925,   6576}, 0, {   974,    422}, {0x1a, 0x7b, 0xf0, 0xff}}},\n    {{{  -933,  -5823,   5937}, 0, {   970,    420}, {0x1f, 0x7a, 0xfa, 0xff}}},\n};\n\n// 0x07021448 - 0x07021528\nstatic const Vtx ttm_seg7_vertex_07021448[] = {\n    {{{  4300,  -7052,   4338}, 0, {     0,      0}, {0x18, 0x7c, 0xf8, 0xff}}},\n    {{{  4403,  -7167,   3072}, 0, {   990,     96}, {0x26, 0x70, 0x2d, 0xff}}},\n    {{{  4300,  -7064,   3072}, 0, {   990,      0}, {0x5c, 0x26, 0x4e, 0xff}}},\n    {{{  -933,  -5823,   5937}, 0, {  -226,    416}, {0x1f, 0x7a, 0xfa, 0xff}}},\n    {{{  -509,  -5823,   5632}, 0, {     0,    990}, {0x0a, 0x7e, 0x0b, 0xff}}},\n    {{{  -868,  -5721,   4912}, 0, {   990,    990}, {0x06, 0x7e, 0x0e, 0xff}}},\n    {{{ -1257,  -5721,   5056}, 0, {   974,    536}, {0x1f, 0x7b, 0x03, 0xff}}},\n    {{{ -1257,  -5721,   5056}, 0, {  -176,    532}, {0x1f, 0x7b, 0x03, 0xff}}},\n    {{{ -1050,  -5618,   4185}, 0, {   990,    990}, {0x03, 0x7d, 0x11, 0xff}}},\n    {{{ -1564,  -5618,   4249}, 0, {   968,    424}, {0x18, 0x7b, 0x0d, 0xff}}},\n    {{{  -868,  -5721,   4912}, 0, {     0,    990}, {0x06, 0x7e, 0x0e, 0xff}}},\n    {{{  5120,  -7052,   4338}, 0, {     0,    990}, {0xd2, 0x75, 0xf3, 0xff}}},\n    {{{  5017,  -7167,   3072}, 0, {   990,    862}, {0xd4, 0x6a, 0x36, 0xff}}},\n    {{{  5120,  -7064,   3072}, 0, {   990,    990}, {0xa2, 0x40, 0x38, 0xff}}},\n};\n\n// 0x07021528 - 0x07021618\nstatic const Vtx ttm_seg7_vertex_07021528[] = {\n    {{{  4300,  -6949,   5619}, 0, {    98,      0}, {0x02, 0x7c, 0xe8, 0xff}}},\n    {{{  4815,  -6949,   5682}, 0, {    56,    610}, {0xf1, 0x7b, 0xe8, 0xff}}},\n    {{{  4300,  -7052,   4338}, 0, {   990,      0}, {0x18, 0x7c, 0xf8, 0xff}}},\n    {{{  5120,  -7052,   4338}, 0, {   990,    990}, {0xd2, 0x75, 0xf3, 0xff}}},\n    {{{   120,   -959,  -5506}, 0, {     0,    990}, {0x05, 0x7e, 0x05, 0xff}}},\n    {{{  -459,   -908,  -6657}, 0, {   992,    542}, {0xff, 0x7d, 0x13, 0xff}}},\n    {{{  -699,   -908,  -6325}, 0, {   990,    990}, {0x1e, 0x7b, 0xfb, 0xff}}},\n    {{{   699,   -959,  -6085}, 0, {  -144,     80}, {0xed, 0x77, 0x27, 0xff}}},\n    {{{ -1518,   -601,  -6632}, 0, {     0,    990}, {0x06, 0x7e, 0x08, 0xff}}},\n    {{{ -1108,   -652,  -6530}, 0, {   990,    990}, {0x23, 0x78, 0xea, 0xff}}},\n    {{{ -1468,   -805,  -7039}, 0, {  -174,    524}, {0x0d, 0x7e, 0xfb, 0xff}}},\n    {{{ -1562,  -5209,   1573}, 0, {  -168,    414}, {0x1c, 0x7a, 0x11, 0xff}}},\n    {{{ -1050,  -5106,    857}, 0, {   990,    990}, {0xff, 0x7d, 0x11, 0xff}}},\n    {{{ -1555,  -5106,    775}, 0, {   970,    426}, {0x25, 0x78, 0x0f, 0xff}}},\n    {{{  -966,   -857,  -6914}, 0, {  1072,    522}, {0x10, 0x7d, 0x09, 0xff}}},\n};\n\n// 0x07021618 - 0x070216F8\nstatic const Vtx ttm_seg7_vertex_07021618[] = {\n    {{{ -1108,   -652,  -6530}, 0, {     0,    990}, {0x23, 0x78, 0xea, 0xff}}},\n    {{{  -699,   -908,  -6325}, 0, {   990,    990}, {0x1e, 0x7b, 0xfb, 0xff}}},\n    {{{  -966,   -857,  -6914}, 0, {   110,    638}, {0x10, 0x7d, 0x09, 0xff}}},\n    {{{  -459,   -908,  -6657}, 0, {  1132,    538}, {0xff, 0x7d, 0x13, 0xff}}},\n    {{{ -1564,  -5618,   4249}, 0, {   -64,    422}, {0x18, 0x7b, 0x0d, 0xff}}},\n    {{{ -1050,  -5618,   4185}, 0, {     0,    990}, {0x03, 0x7d, 0x11, 0xff}}},\n    {{{ -1050,  -5209,   1573}, 0, {   990,    990}, {0x00, 0x7d, 0x12, 0xff}}},\n    {{{ -1562,  -5209,   1573}, 0, {   980,    428}, {0x1c, 0x7a, 0x11, 0xff}}},\n    {{{ -1562,  -5209,   1573}, 0, {  -168,    414}, {0x1c, 0x7a, 0x11, 0xff}}},\n    {{{ -1050,  -5209,   1573}, 0, {     0,    990}, {0x00, 0x7d, 0x12, 0xff}}},\n    {{{ -1050,  -5106,    857}, 0, {   990,    990}, {0xff, 0x7d, 0x11, 0xff}}},\n    {{{  1739,   -939,  -4668}, 0, {   914,   1180}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{  1536,  -1042,  -4466}, 0, {  1322,    670}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{  1536,   -939,  -4466}, 0, {  1152,    586}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x070216F8 - 0x070217F8\nstatic const Vtx ttm_seg7_vertex_070216F8[] = {\n    {{{ -2951,   -601,  -6632}, 0, {   990,    990}, {0x0a, 0x7e, 0xfd, 0xff}}},\n    {{{ -2992,   -601,  -7040}, 0, {  1020,    542}, {0x14, 0x7b, 0x11, 0xff}}},\n    {{{ -3975,   -396,  -6427}, 0, {     0,    990}, {0x16, 0x7c, 0xfb, 0xff}}},\n    {{{ -4108,   -396,  -6815}, 0, {   -90,    552}, {0x19, 0x7b, 0x0c, 0xff}}},\n    {{{ -1518,   -601,  -6632}, 0, {   990,    990}, {0x06, 0x7e, 0x08, 0xff}}},\n    {{{ -1468,   -805,  -7039}, 0, {   992,    518}, {0x0d, 0x7e, 0xfb, 0xff}}},\n    {{{ -2951,   -601,  -6632}, 0, {     0,    990}, {0x0a, 0x7e, 0xfd, 0xff}}},\n    {{{ -2992,   -601,  -7040}, 0, {   -94,    486}, {0x14, 0x7b, 0x11, 0xff}}},\n    {{{  1739,   -939,  -4668}, 0, {   914,   1180}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{  1739,  -1042,  -4668}, 0, {  1084,   1264}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{  1536,  -1042,  -4466}, 0, {  1322,    670}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{  1536,   -939,  -4466}, 0, {  1152,    586}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1811,   -888,  -4741}, 0, {   744,   1350}, {0xa7, 0xff, 0xa7, 0xff}}},\n    {{{   120,   -959,  -5506}, 0, {     0,    990}, {0x05, 0x7e, 0x05, 0xff}}},\n    {{{  1059,  -1061,  -4566}, 0, {   990,    990}, {0x06, 0x7e, 0x06, 0xff}}},\n    {{{  1638,  -1061,  -5145}, 0, {   990,      0}, {0x06, 0x7e, 0x06, 0xff}}},\n};\n\n// 0x070217F8 - 0x07021898\nstatic const Vtx ttm_seg7_vertex_070217F8[] = {\n    {{{  1536,   -939,  -4466}, 0, {  1152,    586}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1464,   -735,  -4393}, 0, {   896,    202}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{  1811,   -735,  -4741}, 0, {   488,   1222}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1811,   -888,  -4741}, 0, {   744,   1350}, {0xa7, 0xff, 0xa7, 0xff}}},\n    {{{  1464,   -888,  -4393}, 0, {  1152,    330}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{  1565,   -581,  -4495}, 0, {   522,    372}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1710,   -581,  -4639}, 0, {   352,    798}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{   120,   -959,  -5506}, 0, {     0,    990}, {0x05, 0x7e, 0x05, 0xff}}},\n    {{{  1638,  -1061,  -5145}, 0, {   990,      0}, {0x06, 0x7e, 0x06, 0xff}}},\n    {{{   699,   -959,  -6085}, 0, {     0,      0}, {0xed, 0x77, 0x27, 0xff}}},\n};\n\n// 0x07021898 - 0x07021988\nstatic const Vtx ttm_seg7_vertex_07021898[] = {\n    {{{  -790,   -988,  -5719}, 0, {  5078,   4054}, {0x1f, 0x72, 0x2b, 0xff}}},\n    {{{ -1518,   -601,  -6632}, 0, { 10016,  -3212}, {0x06, 0x7e, 0x08, 0xff}}},\n    {{{ -1609,   -988,  -5719}, 0, {  5078,  -4120}, {0xba, 0x61, 0x27, 0xff}}},\n    {{{ -2951,   -601,  -6632}, 0, { 10016, -17520}, {0x0a, 0x7e, 0xfd, 0xff}}},\n    {{{ -1609,  -1773,  -3469}, 0, { -6810,  -4120}, {0xdb, 0x46, 0x63, 0xff}}},\n    {{{  -790,  -1773,  -3469}, 0, { -6810,   4054}, {0x62, 0x2f, 0x41, 0xff}}},\n    {{{ -1660,  -2285,  -2957}, 0, {  5384,  -4120}, {0xa6, 0x56, 0xeb, 0xff}}},\n    {{{  -841,  -2763,  -1220}, 0, { -3608,   4054}, {0x4f, 0x4d, 0x3d, 0xff}}},\n    {{{  -841,  -2285,  -2957}, 0, {  5384,   4054}, {0x39, 0x37, 0x9e, 0xff}}},\n    {{{ -1660,  -2763,  -1220}, 0, { -3608,  -4120}, {0xd1, 0x2d, 0x6c, 0xff}}},\n    {{{ -1917,  -3275,   -708}, 0, {  8260,  -4126}, {0xa3, 0x55, 0xf5, 0xff}}},\n    {{{ -1917,  -4287,   1778}, 0, { -5140,  -4126}, {0xd2, 0x2a, 0x6e, 0xff}}},\n    {{{  -994,  -4287,   1778}, 0, { -5140,   5076}, {0x4e, 0x48, 0x44, 0xff}}},\n    {{{  -994,  -3275,   -708}, 0, {  8260,   5076}, {0x3b, 0x37, 0x9f, 0xff}}},\n    {{{ -1108,   -652,  -6530}, 0, {  9450,    876}, {0x23, 0x78, 0xea, 0xff}}},\n};\n\n// 0x07021988 - 0x070219C8\nstatic const Vtx ttm_seg7_vertex_07021988[] = {\n    {{{  -994,  -3377,   -708}, 0, {  8066,   5082}, {0x4e, 0xb8, 0xbc, 0xff}}},\n    {{{ -1916,  -4389,   1778}, 0, { -5332,  -4120}, {0xa4, 0xaa, 0x0a, 0xff}}},\n    {{{ -1916,  -3377,   -708}, 0, {  8066,  -4120}, {0xd2, 0xd5, 0x92, 0xff}}},\n    {{{  -994,  -4389,   1778}, 0, { -5332,   5082}, {0x3b, 0xc9, 0x61, 0xff}}},\n};\n\n// 0x070219C8 - 0x07021AB8\nstatic const Vtx ttm_seg7_vertex_070219C8[] = {\n    {{{  5270,  -6859,    386}, 0, {  1324,     64}, {0xc6, 0x90, 0xff, 0xff}}},\n    {{{  5102,  -6757,    721}, 0, {   636,    -38}, {0xc9, 0x8f, 0x0d, 0xff}}},\n    {{{  4771,  -6859,     27}, 0, {   948,   1134}, {0x17, 0x8e, 0x31, 0xff}}},\n    {{{  8192,  -7548,   -100}, 0, {  2012,      0}, {0xe3, 0x8f, 0xd0, 0xff}}},\n    {{{  6181,  -7167,   -102}, 0, {    40,    -24}, {0xe0, 0x91, 0xce, 0xff}}},\n    {{{  8192,  -7548,   -715}, 0, {  2012,    990}, {0xe4, 0x8e, 0x2f, 0xff}}},\n    {{{  6106,  -7167,   -712}, 0, {     0,    990}, {0xec, 0x8b, 0x2a, 0xff}}},\n    {{{  9421,  -7875,   -267}, 0, {  2012,      0}, {0xda, 0x88, 0xfd, 0xff}}},\n    {{{  8192,  -7548,   -715}, 0, {     0,    990}, {0xe4, 0x8e, 0x2f, 0xff}}},\n    {{{  9421,  -8095,   -841}, 0, {  2012,    990}, {0xe1, 0xa7, 0x54, 0xff}}},\n    {{{  8192,  -7548,   -100}, 0, {    88,      4}, {0xe3, 0x8f, 0xd0, 0xff}}},\n    {{{ 10650,  -8266,   -436}, 0, {  2012,      0}, {0xdb, 0x8d, 0x25, 0xff}}},\n    {{{  9421,  -8095,   -841}, 0, {     0,    990}, {0xe1, 0xa7, 0x54, 0xff}}},\n    {{{ 10650,  -8661,   -906}, 0, {  2012,    990}, {0xec, 0xc7, 0x6f, 0xff}}},\n    {{{  9421,  -7875,   -267}, 0, {    64,     -8}, {0xda, 0x88, 0xfd, 0xff}}},\n};\n\n// 0x07021AB8 - 0x07021B78\nstatic const Vtx ttm_seg7_vertex_07021AB8[] = {\n    {{{  5506,  -6962,    150}, 0, {   548,    -22}, {0xca, 0x8f, 0xee, 0xff}}},\n    {{{  5147,  -6962,   -348}, 0, {     0,    990}, {0x06, 0x8e, 0x36, 0xff}}},\n    {{{  5628,  -7064,   -593}, 0, {  1008,   1088}, {0xf9, 0x8e, 0x36, 0xff}}},\n    {{{  5270,  -6859,    386}, 0, {  1324,     64}, {0xc6, 0x90, 0xff, 0xff}}},\n    {{{  4771,  -6859,     27}, 0, {   948,   1134}, {0x17, 0x8e, 0x31, 0xff}}},\n    {{{  5147,  -6962,   -348}, 0, {  2012,    990}, {0x06, 0x8e, 0x36, 0xff}}},\n    {{{  5102,  -6757,    721}, 0, {   636,    -38}, {0xc9, 0x8f, 0x0d, 0xff}}},\n    {{{  4526,  -6757,    508}, 0, {     0,    990}, {0x24, 0x8e, 0x29, 0xff}}},\n    {{{  5506,  -6962,    150}, 0, {  2012,      0}, {0xca, 0x8f, 0xee, 0xff}}},\n    {{{  6181,  -7167,   -102}, 0, {  2012,      0}, {0xe0, 0x91, 0xce, 0xff}}},\n    {{{  5841,  -7064,    -17}, 0, {  1284,     40}, {0xd2, 0x8f, 0xdf, 0xff}}},\n    {{{  6106,  -7167,   -712}, 0, {  2012,    990}, {0xec, 0x8b, 0x2a, 0xff}}},\n};\n\n// 0x07021B78 - 0x07021BF8\nstatic const Vtx ttm_seg7_vertex_07021B78[] = {\n    {{{ 11864,  -8716,   -609}, 0, {  2012,      0}, {0xe2, 0x9f, 0x4b, 0xff}}},\n    {{{ 10650,  -8661,   -906}, 0, {     0,    990}, {0xec, 0xc7, 0x6f, 0xff}}},\n    {{{ 11864,  -9248,   -916}, 0, {  2012,    990}, {0xfa, 0xf0, 0x7d, 0xff}}},\n    {{{ 10650,  -8266,   -436}, 0, {    48,     -4}, {0xdb, 0x8d, 0x25, 0xff}}},\n    {{{  5102,  -6757,    721}, 0, {  2012,      0}, {0xc9, 0x8f, 0x0d, 0xff}}},\n    {{{  5017,  -6655,   1061}, 0, {  1524,     70}, {0xcd, 0x8f, 0x16, 0xff}}},\n    {{{  4526,  -6757,    508}, 0, {  2012,    990}, {0x24, 0x8e, 0x29, 0xff}}},\n    {{{  4407,  -6655,    986}, 0, {  1340,   1126}, {0x2c, 0x8e, 0x1e, 0xff}}},\n};\n\n// 0x07021BF8 - 0x07021C78\nstatic const Vtx ttm_seg7_vertex_07021BF8[] = {\n    {{{ 13093,  -9223,   -758}, 0, {  2012,      0}, {0xed, 0xba, 0x68, 0xff}}},\n    {{{ 11864,  -8716,   -609}, 0, {    12,     10}, {0xe2, 0x9f, 0x4b, 0xff}}},\n    {{{ 11864,  -9248,   -916}, 0, {     0,    990}, {0xfa, 0xf0, 0x7d, 0xff}}},\n    {{{ 13093,  -9828,   -864}, 0, {  2012,    990}, {0x05, 0x17, 0x7c, 0xff}}},\n    {{{  4403,  -6450,   2048}, 0, {     0,   1002}, {0x3f, 0x94, 0x10, 0xff}}},\n    {{{  4407,  -6655,    986}, 0, {  2012,    990}, {0x2c, 0x8e, 0x1e, 0xff}}},\n    {{{  5017,  -6450,   2048}, 0, {   108,    -26}, {0xe0, 0x87, 0x12, 0xff}}},\n    {{{  5017,  -6655,   1061}, 0, {  2012,      0}, {0xcd, 0x8f, 0x16, 0xff}}},\n};\n\n// 0x07021C78 - 0x07021CF8\nstatic const Vtx ttm_seg7_vertex_07021C78[] = {\n    {{{ 14322,  -9596,   -817}, 0, {  2012,      0}, {0xf7, 0xd9, 0x78, 0xff}}},\n    {{{ 13093,  -9828,   -864}, 0, {     0,    990}, {0x05, 0x17, 0x7c, 0xff}}},\n    {{{ 14322, -10211,   -817}, 0, {  2012,    990}, {0x0c, 0x38, 0x70, 0xff}}},\n    {{{ 13093,  -9223,   -758}, 0, {   -24,    -18}, {0xed, 0xba, 0x68, 0xff}}},\n    {{{  4403,  -6347,   3072}, 0, {     0,    990}, {0x18, 0xa1, 0x50, 0xff}}},\n    {{{  4403,  -6450,   2048}, 0, {  2012,    990}, {0x3f, 0x94, 0x10, 0xff}}},\n    {{{  5017,  -6450,   2048}, 0, {  2012,      0}, {0xe0, 0x87, 0x12, 0xff}}},\n    {{{  5017,  -6347,   3072}, 0, {     0,      0}, {0xd7, 0xb9, 0x60, 0xff}}},\n};\n\n// 0x07021CF8 - 0x07021DF8\nstatic const Vtx ttm_seg7_vertex_07021CF8[] = {\n    {{{  9421,  -7934,   -135}, 0, {   -24,    146}, {0xe3, 0xad, 0xa6, 0xff}}},\n    {{{  8192,  -7548,   -100}, 0, {  2012,      0}, {0xe3, 0x8f, 0xd0, 0xff}}},\n    {{{  9421,  -7875,   -267}, 0, {   -16,     38}, {0xda, 0x88, 0xfd, 0xff}}},\n    {{{  8192,  -7548,   -715}, 0, {  2012,      0}, {0xe4, 0x8e, 0x2f, 0xff}}},\n    {{{  6106,  -7167,   -712}, 0, {   -20,    -36}, {0xec, 0x8b, 0x2a, 0xff}}},\n    {{{  6094,  -7269,   -813}, 0, {     0,    132}, {0x05, 0xca, 0x72, 0xff}}},\n    {{{  8192,  -7651,   -817}, 0, {  2008,    132}, {0xf7, 0xd8, 0x78, 0xff}}},\n    {{{  8192,  -7651,      1}, 0, {   -36,    130}, {0xf3, 0xc9, 0x8f, 0xff}}},\n    {{{  6194,  -7269,      0}, 0, {  2004,    130}, {0xec, 0xda, 0x89, 0xff}}},\n    {{{  6181,  -7167,   -102}, 0, {  2012,      0}, {0xe0, 0x91, 0xce, 0xff}}},\n    {{{  8192,  -7548,   -100}, 0, {   -40,    -36}, {0xe3, 0x8f, 0xd0, 0xff}}},\n    {{{  8192,  -7548,   -715}, 0, {   -28,     34}, {0xe4, 0x8e, 0x2f, 0xff}}},\n    {{{  8192,  -7651,   -817}, 0, {   -28,    144}, {0xf7, 0xd8, 0x78, 0xff}}},\n    {{{  9421,  -8095,   -841}, 0, {  2012,      0}, {0xe1, 0xa7, 0x54, 0xff}}},\n    {{{  9421,  -8227,   -900}, 0, {  2012,    132}, {0x00, 0xfc, 0x7e, 0xff}}},\n    {{{  8192,  -7651,      1}, 0, {  2008,    130}, {0xf3, 0xc9, 0x8f, 0xff}}},\n};\n\n// 0x07021DF8 - 0x07021ED8\nstatic const Vtx ttm_seg7_vertex_07021DF8[] = {\n    {{{ 10650,  -8661,   -906}, 0, {  2012,      0}, {0xec, 0xc7, 0x6f, 0xff}}},\n    {{{  9421,  -8227,   -900}, 0, {   -48,    144}, {0x00, 0xfc, 0x7e, 0xff}}},\n    {{{ 10650,  -8805,   -919}, 0, {  2024,    126}, {0x0e, 0x25, 0x78, 0xff}}},\n    {{{  9421,  -8095,   -841}, 0, {   -64,     36}, {0xe1, 0xa7, 0x54, 0xff}}},\n    {{{ 10650,  -8278,   -291}, 0, {   -44,    136}, {0xdb, 0x95, 0xc8, 0xff}}},\n    {{{  9421,  -7875,   -267}, 0, {  2012,      0}, {0xda, 0x88, 0xfd, 0xff}}},\n    {{{ 10650,  -8266,   -436}, 0, {   -60,     18}, {0xdb, 0x8d, 0x25, 0xff}}},\n    {{{  9421,  -7934,   -135}, 0, {  2024,    134}, {0xe3, 0xad, 0xa6, 0xff}}},\n    {{{ 14322,  -9596,      1}, 0, {   -60,   1138}, {0xf1, 0xc8, 0x90, 0xff}}},\n    {{{ 13093,  -9246,    -34}, 0, {  2012,    990}, {0xe4, 0x9b, 0xba, 0xff}}},\n    {{{ 14322,  -9494,   -100}, 0, {     0,    990}, {0xe3, 0x8b, 0xda, 0xff}}},\n    {{{  5147,  -6962,   -348}, 0, {   716,    -18}, {0x06, 0x8e, 0x36, 0xff}}},\n    {{{  5087,  -7064,   -431}, 0, {   692,    150}, {0x42, 0xd0, 0x60, 0xff}}},\n    {{{  5593,  -7167,   -689}, 0, {  1412,    138}, {0x24, 0xd1, 0x6f, 0xff}}},\n};\n\n// 0x07021ED8 - 0x07021FC8\nstatic const Vtx ttm_seg7_vertex_07021ED8[] = {\n    {{{  4771,  -6859,     27}, 0, {  2012,      0}, {0x17, 0x8e, 0x31, 0xff}}},\n    {{{  4526,  -6757,    508}, 0, {   988,    -20}, {0x24, 0x8e, 0x29, 0xff}}},\n    {{{  4688,  -6962,    -32}, 0, {  2052,    126}, {0x5d, 0xd1, 0x47, 0xff}}},\n    {{{  4430,  -6859,    473}, 0, {   976,    144}, {0x6c, 0xd0, 0x2d, 0xff}}},\n    {{{  5353,  -6962,    446}, 0, {   516,     86}, {0x9c, 0xd1, 0xc3, 0xff}}},\n    {{{  5270,  -6859,    386}, 0, {   468,    -88}, {0xc6, 0x90, 0xff, 0xff}}},\n    {{{  5506,  -6962,    150}, 0, {  -204,    -68}, {0xca, 0x8f, 0xee, 0xff}}},\n    {{{  5198,  -6859,    757}, 0, {  1264,    100}, {0x8f, 0xd1, 0xe1, 0xff}}},\n    {{{  5566,  -7064,    233}, 0, {   -88,    118}, {0xb5, 0xd1, 0xa6, 0xff}}},\n    {{{  5102,  -6757,    721}, 0, {  1272,    -60}, {0xc9, 0x8f, 0x0d, 0xff}}},\n    {{{  5628,  -7064,   -593}, 0, {  1404,    -24}, {0xf9, 0x8e, 0x36, 0xff}}},\n    {{{  5147,  -6962,   -348}, 0, {   716,    -18}, {0x06, 0x8e, 0x36, 0xff}}},\n    {{{  5593,  -7167,   -689}, 0, {  1412,    138}, {0x24, 0xd1, 0x6f, 0xff}}},\n    {{{  4771,  -6859,     27}, 0, {    72,    -54}, {0x17, 0x8e, 0x31, 0xff}}},\n    {{{  5087,  -7064,   -431}, 0, {   692,    150}, {0x42, 0xd0, 0x60, 0xff}}},\n};\n\n// 0x07021FC8 - 0x07022098\nstatic const Vtx ttm_seg7_vertex_07021FC8[] = {\n    {{{  5566,  -7064,    233}, 0, {  1704,    962}, {0xb5, 0xd1, 0xa6, 0xff}}},\n    {{{  5506,  -6962,    150}, 0, {  2012,    990}, {0xca, 0x8f, 0xee, 0xff}}},\n    {{{  5841,  -7064,    -17}, 0, {  2040,    460}, {0xd2, 0x8f, 0xdf, 0xff}}},\n    {{{  4771,  -6859,     27}, 0, {    72,    -54}, {0x17, 0x8e, 0x31, 0xff}}},\n    {{{  4688,  -6962,    -32}, 0, {     8,    122}, {0x5d, 0xd1, 0x47, 0xff}}},\n    {{{  5087,  -7064,   -431}, 0, {   692,    150}, {0x42, 0xd0, 0x60, 0xff}}},\n    {{{  5628,  -7064,   -593}, 0, {  1404,    -24}, {0xf9, 0x8e, 0x36, 0xff}}},\n    {{{  5593,  -7167,   -689}, 0, {  1412,    138}, {0x24, 0xd1, 0x6f, 0xff}}},\n    {{{  6094,  -7269,   -813}, 0, {  2052,    122}, {0x05, 0xca, 0x72, 0xff}}},\n    {{{  6106,  -7167,   -712}, 0, {  2012,      0}, {0xec, 0x8b, 0x2a, 0xff}}},\n    {{{  5877,  -7167,     78}, 0, {  1704,    472}, {0xcf, 0xd1, 0x96, 0xff}}},\n    {{{  6181,  -7167,   -102}, 0, {  2012,      0}, {0xe0, 0x91, 0xce, 0xff}}},\n    {{{  6194,  -7269,      0}, 0, {  1660,     14}, {0xec, 0xda, 0x89, 0xff}}},\n};\n\n// 0x07022098 - 0x07022198\nstatic const Vtx ttm_seg7_vertex_07022098[] = {\n    {{{  5198,  -6859,    757}, 0, {  1264,    100}, {0x8f, 0xd1, 0xe1, 0xff}}},\n    {{{  5119,  -6757,   1074}, 0, {  1952,    118}, {0x8b, 0xd1, 0xfa, 0xff}}},\n    {{{  5102,  -6757,    721}, 0, {  1272,    -60}, {0xc9, 0x8f, 0x0d, 0xff}}},\n    {{{ 11864,  -9248,   -916}, 0, {  2012,      0}, {0xfa, 0xf0, 0x7d, 0xff}}},\n    {{{ 10650,  -8805,   -919}, 0, {   -64,    152}, {0x0e, 0x25, 0x78, 0xff}}},\n    {{{ 11864,  -9388,   -878}, 0, {  2036,    124}, {0x1a, 0x4b, 0x62, 0xff}}},\n    {{{ 10650,  -8661,   -906}, 0, {  -100,     50}, {0xec, 0xc7, 0x6f, 0xff}}},\n    {{{ 11864,  -8678,   -469}, 0, {   -64,    138}, {0xd7, 0x89, 0xf1, 0xff}}},\n    {{{ 10650,  -8266,   -436}, 0, {  2012,      0}, {0xdb, 0x8d, 0x25, 0xff}}},\n    {{{ 11864,  -8716,   -609}, 0, {   -96,     24}, {0xe2, 0x9f, 0x4b, 0xff}}},\n    {{{ 10650,  -8278,   -291}, 0, {  2036,    134}, {0xdb, 0x95, 0xc8, 0xff}}},\n    {{{  4526,  -6757,    508}, 0, {   988,    -20}, {0x24, 0x8e, 0x29, 0xff}}},\n    {{{  4407,  -6655,    986}, 0, {    64,    -46}, {0x2c, 0x8e, 0x1e, 0xff}}},\n    {{{  4430,  -6859,    473}, 0, {   976,    144}, {0x6c, 0xd0, 0x2d, 0xff}}},\n    {{{  4306,  -6757,    974}, 0, {     8,    126}, {0x73, 0xd0, 0x13, 0xff}}},\n    {{{  5017,  -6655,   1061}, 0, {  2012,      0}, {0xcd, 0x8f, 0x16, 0xff}}},\n};\n\n// 0x07022198 - 0x07022298\nstatic const Vtx ttm_seg7_vertex_07022198[] = {\n    {{{  4300,  -6552,   2048}, 0, {   -16,    130}, {0x78, 0xda, 0x05, 0xff}}},\n    {{{  4306,  -6757,    974}, 0, {  2028,    130}, {0x73, 0xd0, 0x13, 0xff}}},\n    {{{  4403,  -6450,   2048}, 0, {    -8,    -36}, {0x3f, 0x94, 0x10, 0xff}}},\n    {{{ 13093,  -9828,   -864}, 0, {  2012,      0}, {0x05, 0x17, 0x7c, 0xff}}},\n    {{{ 11864,  -9388,   -878}, 0, {   -76,    150}, {0x1a, 0x4b, 0x62, 0xff}}},\n    {{{ 13093,  -9946,   -781}, 0, {  2044,    126}, {0x1e, 0x65, 0x45, 0xff}}},\n    {{{ 11864,  -9248,   -916}, 0, {  -120,     46}, {0xfa, 0xf0, 0x7d, 0xff}}},\n    {{{ 13093,  -9139,   -639}, 0, {   -72,    142}, {0xdc, 0x89, 0x17, 0xff}}},\n    {{{ 11864,  -8716,   -609}, 0, {  2012,      0}, {0xe2, 0x9f, 0x4b, 0xff}}},\n    {{{ 13093,  -9223,   -758}, 0, {  -116,     30}, {0xed, 0xba, 0x68, 0xff}}},\n    {{{ 11864,  -8678,   -469}, 0, {  2044,    132}, {0xd7, 0x89, 0xf1, 0xff}}},\n    {{{  5017,  -6450,   2048}, 0, {  2012,      0}, {0xe0, 0x87, 0x12, 0xff}}},\n    {{{  5017,  -6655,   1061}, 0, {   -56,    -36}, {0xcd, 0x8f, 0x16, 0xff}}},\n    {{{  5120,  -6552,   2048}, 0, {  2016,    132}, {0x8e, 0xc9, 0x08, 0xff}}},\n    {{{  5119,  -6757,   1074}, 0, {   -28,    132}, {0x8b, 0xd1, 0xfa, 0xff}}},\n    {{{  4407,  -6655,    986}, 0, {  2012,      0}, {0x2c, 0x8e, 0x1e, 0xff}}},\n};\n\n// 0x07022298 - 0x07022398\nstatic const Vtx ttm_seg7_vertex_07022298[] = {\n    {{{  4300,  -6450,   3072}, 0, {     0,    132}, {0x56, 0xcd, 0x4d, 0xff}}},\n    {{{  4300,  -6552,   2048}, 0, {  2008,    132}, {0x78, 0xda, 0x05, 0xff}}},\n    {{{  4403,  -6450,   2048}, 0, {  2012,      0}, {0x3f, 0x94, 0x10, 0xff}}},\n    {{{ 13093,  -9828,   -864}, 0, {   -64,   -184}, {0x05, 0x17, 0x7c, 0xff}}},\n    {{{ 13093,  -9946,   -781}, 0, {     0,    -18}, {0x1e, 0x65, 0x45, 0xff}}},\n    {{{ 14322, -10211,   -817}, 0, {  2012,      0}, {0x0c, 0x38, 0x70, 0xff}}},\n    {{{ 14322, -10313,   -715}, 0, {  2040,    160}, {0x1d, 0x75, 0x26, 0xff}}},\n    {{{ 14322,  -9494,   -715}, 0, {   -36,    124}, {0xe3, 0x93, 0x38, 0xff}}},\n    {{{ 13093,  -9223,   -758}, 0, {  2012,      0}, {0xed, 0xba, 0x68, 0xff}}},\n    {{{ 14322,  -9596,   -817}, 0, {   -68,    -14}, {0xf7, 0xd9, 0x78, 0xff}}},\n    {{{ 13093,  -9139,   -639}, 0, {  2040,    130}, {0xdc, 0x89, 0x17, 0xff}}},\n    {{{  5017,  -6347,   3072}, 0, {  2012,      0}, {0xd7, 0xb9, 0x60, 0xff}}},\n    {{{  5017,  -6450,   2048}, 0, {     0,      0}, {0xe0, 0x87, 0x12, 0xff}}},\n    {{{  5120,  -6552,   2048}, 0, {   -28,    132}, {0x8e, 0xc9, 0x08, 0xff}}},\n    {{{  5120,  -6450,   3072}, 0, {  2016,    132}, {0xae, 0xeb, 0x5d, 0xff}}},\n    {{{  4403,  -6347,   3072}, 0, {     0,      0}, {0x18, 0xa1, 0x50, 0xff}}},\n};\n\n// 0x07022398 - 0x07022488\nstatic const Vtx ttm_seg7_vertex_07022398[] = {\n    {{{  9421,  -8508,     84}, 0, {     0,    990}, {0x03, 0x04, 0x82, 0xff}}},\n    {{{  8192,  -8265,      1}, 0, {  2012,    990}, {0x0d, 0x30, 0x8c, 0xff}}},\n    {{{  8192,  -7651,      1}, 0, {  2008,    130}, {0xf3, 0xc9, 0x8f, 0xff}}},\n    {{{  8192,  -7651,   -817}, 0, {  2008,    132}, {0xf7, 0xd8, 0x78, 0xff}}},\n    {{{  6094,  -7269,   -813}, 0, {     0,    132}, {0x05, 0xca, 0x72, 0xff}}},\n    {{{  6094,  -7883,   -813}, 0, {     0,    990}, {0x12, 0x30, 0x74, 0xff}}},\n    {{{  8192,  -8265,   -817}, 0, {  2012,    990}, {0x0c, 0x2f, 0x75, 0xff}}},\n    {{{  8192,  -8265,      1}, 0, {     0,    990}, {0x0d, 0x30, 0x8c, 0xff}}},\n    {{{  6194,  -7269,      0}, 0, {  2004,    130}, {0xec, 0xda, 0x89, 0xff}}},\n    {{{  8192,  -7651,      1}, 0, {   -36,    130}, {0xf3, 0xc9, 0x8f, 0xff}}},\n    {{{  6194,  -7883,      0}, 0, {  2012,    990}, {0xfa, 0x2f, 0x8b, 0xff}}},\n    {{{  9421,  -8227,   -900}, 0, {  2012,    132}, {0x00, 0xfc, 0x7e, 0xff}}},\n    {{{  8192,  -7651,   -817}, 0, {   -28,    144}, {0xf7, 0xd8, 0x78, 0xff}}},\n    {{{  8192,  -8265,   -817}, 0, {     0,    990}, {0x0c, 0x2f, 0x75, 0xff}}},\n    {{{  9421,  -8801,   -680}, 0, {  2012,    990}, {0x1a, 0x54, 0x5b, 0xff}}},\n};\n\n// 0x07022488 - 0x07022578\nstatic const Vtx ttm_seg7_vertex_07022488[] = {\n    {{{  4688,  -6962,    -32}, 0, {  2052,    126}, {0x5d, 0xd1, 0x47, 0xff}}},\n    {{{  4430,  -6859,    473}, 0, {   976,    144}, {0x6c, 0xd0, 0x2d, 0xff}}},\n    {{{  4430,  -7474,    473}, 0, {   936,   1008}, {0x6f, 0x2f, 0x24, 0xff}}},\n    {{{  9421,  -8508,     84}, 0, {     0,    990}, {0x03, 0x04, 0x82, 0xff}}},\n    {{{  8192,  -7651,      1}, 0, {  2008,    130}, {0xf3, 0xc9, 0x8f, 0xff}}},\n    {{{  9421,  -7934,   -135}, 0, {   -24,    146}, {0xe3, 0xad, 0xa6, 0xff}}},\n    {{{ 10650,  -8805,   -919}, 0, {  2024,    126}, {0x0e, 0x25, 0x78, 0xff}}},\n    {{{  9421,  -8801,   -680}, 0, {     0,    990}, {0x1a, 0x54, 0x5b, 0xff}}},\n    {{{ 10650,  -9276,   -524}, 0, {  2012,    990}, {0x22, 0x6c, 0x38, 0xff}}},\n    {{{  9421,  -8227,   -900}, 0, {   -48,    144}, {0x00, 0xfc, 0x7e, 0xff}}},\n    {{{ 10650,  -8749,    103}, 0, {     0,    990}, {0xf5, 0xdb, 0x88, 0xff}}},\n    {{{  9421,  -8508,     84}, 0, {  2012,    990}, {0x03, 0x04, 0x82, 0xff}}},\n    {{{  9421,  -7934,   -135}, 0, {  2024,    134}, {0xe3, 0xad, 0xa6, 0xff}}},\n    {{{ 10650,  -8278,   -291}, 0, {   -44,    136}, {0xdb, 0x95, 0xc8, 0xff}}},\n    {{{  4688,  -7576,    -32}, 0, {  2012,    990}, {0x60, 0x2f, 0x43, 0xff}}},\n};\n\n// 0x07022578 - 0x07022678\nstatic const Vtx ttm_seg7_vertex_07022578[] = {\n    {{{  6094,  -7269,   -813}, 0, {  2052,    122}, {0x05, 0xca, 0x72, 0xff}}},\n    {{{  5593,  -7167,   -689}, 0, {  1412,    138}, {0x24, 0xd1, 0x6f, 0xff}}},\n    {{{  5593,  -7781,   -689}, 0, {  1372,   1004}, {0x2d, 0x2f, 0x6c, 0xff}}},\n    {{{  5353,  -7576,    446}, 0, {   576,    958}, {0xa6, 0x2f, 0xb5, 0xff}}},\n    {{{  5198,  -7474,    757}, 0, {  1324,    974}, {0x96, 0x2f, 0xcf, 0xff}}},\n    {{{  5198,  -6859,    757}, 0, {  1264,    100}, {0x8f, 0xd1, 0xe1, 0xff}}},\n    {{{  5353,  -6962,    446}, 0, {   516,     86}, {0x9c, 0xd1, 0xc3, 0xff}}},\n    {{{  5566,  -7679,    233}, 0, {     0,    990}, {0xc3, 0x2f, 0x9c, 0xff}}},\n    {{{  5566,  -7064,    233}, 0, {   -88,    118}, {0xb5, 0xd1, 0xa6, 0xff}}},\n    {{{  5087,  -7064,   -431}, 0, {   692,    150}, {0x42, 0xd0, 0x60, 0xff}}},\n    {{{  4688,  -7576,    -32}, 0, {     0,    990}, {0x60, 0x2f, 0x43, 0xff}}},\n    {{{  5087,  -7679,   -431}, 0, {   652,   1016}, {0x47, 0x30, 0x5d, 0xff}}},\n    {{{  4688,  -6962,    -32}, 0, {     8,    122}, {0x5d, 0xd1, 0x47, 0xff}}},\n    {{{  6194,  -7883,      0}, 0, {   -68,     40}, {0xfa, 0x2f, 0x8b, 0xff}}},\n    {{{  5877,  -7167,     78}, 0, {  1704,    472}, {0xcf, 0xd1, 0x96, 0xff}}},\n    {{{  6194,  -7269,      0}, 0, {  1660,     14}, {0xec, 0xda, 0x89, 0xff}}},\n};\n\n// 0x07022678 - 0x070226F8\nstatic const Vtx ttm_seg7_vertex_07022678[] = {\n    {{{  6094,  -7269,   -813}, 0, {  2052,    122}, {0x05, 0xca, 0x72, 0xff}}},\n    {{{  5593,  -7781,   -689}, 0, {  1372,   1004}, {0x2d, 0x2f, 0x6c, 0xff}}},\n    {{{  6094,  -7883,   -813}, 0, {  2012,    990}, {0x12, 0x30, 0x74, 0xff}}},\n    {{{  5877,  -7781,     78}, 0, {   -28,    498}, {0xe1, 0x2f, 0x8f, 0xff}}},\n    {{{  5566,  -7064,    233}, 0, {  1704,    962}, {0xb5, 0xd1, 0xa6, 0xff}}},\n    {{{  5877,  -7167,     78}, 0, {  1704,    472}, {0xcf, 0xd1, 0x96, 0xff}}},\n    {{{  5566,  -7679,    233}, 0, {     0,    990}, {0xc3, 0x2f, 0x9c, 0xff}}},\n    {{{  6194,  -7883,      0}, 0, {   -68,     40}, {0xfa, 0x2f, 0x8b, 0xff}}},\n};\n\n// 0x070226F8 - 0x070227F8\nstatic const Vtx ttm_seg7_vertex_070226F8[] = {\n    {{{  5198,  -7474,    757}, 0, {  1324,    974}, {0x96, 0x2f, 0xcf, 0xff}}},\n    {{{  5119,  -6757,   1074}, 0, {  1952,    118}, {0x8b, 0xd1, 0xfa, 0xff}}},\n    {{{  5198,  -6859,    757}, 0, {  1264,    100}, {0x8f, 0xd1, 0xe1, 0xff}}},\n    {{{ 11864,  -9388,   -878}, 0, {  2036,    124}, {0x1a, 0x4b, 0x62, 0xff}}},\n    {{{ 10650,  -9276,   -524}, 0, {     0,    990}, {0x22, 0x6c, 0x38, 0xff}}},\n    {{{ 11864,  -9695,   -346}, 0, {  2012,    990}, {0x26, 0x77, 0x0f, 0xff}}},\n    {{{ 10650,  -8805,   -919}, 0, {   -64,    152}, {0x0e, 0x25, 0x78, 0xff}}},\n    {{{ 11864,  -8985,     62}, 0, {     0,    990}, {0xe9, 0xb5, 0x9d, 0xff}}},\n    {{{ 10650,  -8278,   -291}, 0, {  2036,    134}, {0xdb, 0x95, 0xc8, 0xff}}},\n    {{{ 11864,  -8678,   -469}, 0, {   -64,    138}, {0xd7, 0x89, 0xf1, 0xff}}},\n    {{{ 10650,  -8749,    103}, 0, {  2012,    990}, {0xf5, 0xdb, 0x88, 0xff}}},\n    {{{  4430,  -6859,    473}, 0, {   976,    144}, {0x6c, 0xd0, 0x2d, 0xff}}},\n    {{{  4306,  -7371,    974}, 0, {     0,    990}, {0x75, 0x2f, 0x09, 0xff}}},\n    {{{  4430,  -7474,    473}, 0, {   936,   1008}, {0x6f, 0x2f, 0x24, 0xff}}},\n    {{{  4306,  -6757,    974}, 0, {     8,    126}, {0x73, 0xd0, 0x13, 0xff}}},\n    {{{  5119,  -7371,   1074}, 0, {  2012,    990}, {0x8d, 0x30, 0xeb, 0xff}}},\n};\n\n// 0x070227F8 - 0x070228F8\nstatic const Vtx ttm_seg7_vertex_070227F8[] = {\n    {{{  4300,  -7167,   2048}, 0, {     0,    990}, {0x72, 0x37, 0xf9, 0xff}}},\n    {{{  4306,  -7371,    974}, 0, {  2012,    990}, {0x75, 0x2f, 0x09, 0xff}}},\n    {{{  4306,  -6757,    974}, 0, {  2028,    130}, {0x73, 0xd0, 0x13, 0xff}}},\n    {{{ 13093,  -9946,   -781}, 0, {  2044,    126}, {0x1e, 0x65, 0x45, 0xff}}},\n    {{{ 11864,  -9388,   -878}, 0, {   -76,    150}, {0x1a, 0x4b, 0x62, 0xff}}},\n    {{{ 11864,  -9695,   -346}, 0, {     0,    990}, {0x26, 0x77, 0x0f, 0xff}}},\n    {{{ 13093, -10053,   -176}, 0, {  2012,    990}, {0x20, 0x79, 0xed, 0xff}}},\n    {{{ 13093,  -9246,    -34}, 0, {     0,    990}, {0xe4, 0x9b, 0xba, 0xff}}},\n    {{{ 11864,  -8985,     62}, 0, {  2012,    990}, {0xe9, 0xb5, 0x9d, 0xff}}},\n    {{{ 11864,  -8678,   -469}, 0, {  2044,    132}, {0xd7, 0x89, 0xf1, 0xff}}},\n    {{{ 13093,  -9139,   -639}, 0, {   -72,    142}, {0xdc, 0x89, 0x17, 0xff}}},\n    {{{  5120,  -6552,   2048}, 0, {  2016,    132}, {0x8e, 0xc9, 0x08, 0xff}}},\n    {{{  5119,  -6757,   1074}, 0, {   -28,    132}, {0x8b, 0xd1, 0xfa, 0xff}}},\n    {{{  5119,  -7371,   1074}, 0, {     0,    990}, {0x8d, 0x30, 0xeb, 0xff}}},\n    {{{  5120,  -7167,   2048}, 0, {  2012,    990}, {0x88, 0x26, 0xfb, 0xff}}},\n    {{{  4300,  -6552,   2048}, 0, {   -16,    130}, {0x78, 0xda, 0x05, 0xff}}},\n};\n\n// 0x070228F8 - 0x070229F8\nstatic const Vtx ttm_seg7_vertex_070228F8[] = {\n    {{{ 14322, -10313,   -715}, 0, {  2040,    160}, {0x1d, 0x75, 0x26, 0xff}}},\n    {{{ 13093,  -9946,   -781}, 0, {     0,    -18}, {0x1e, 0x65, 0x45, 0xff}}},\n    {{{ 13093, -10053,   -176}, 0, {     0,    990}, {0x20, 0x79, 0xed, 0xff}}},\n    {{{ 14322, -10313,   -203}, 0, {  2012,    990}, {0x1a, 0x7c, 0x00, 0xff}}},\n    {{{ 14322,  -9494,   -100}, 0, {     0,    990}, {0xe3, 0x8b, 0xda, 0xff}}},\n    {{{ 13093,  -9246,    -34}, 0, {  2012,    990}, {0xe4, 0x9b, 0xba, 0xff}}},\n    {{{ 13093,  -9139,   -639}, 0, {  2040,    130}, {0xdc, 0x89, 0x17, 0xff}}},\n    {{{ 14322,  -9494,   -715}, 0, {   -36,    124}, {0xe3, 0x93, 0x38, 0xff}}},\n    {{{  5120,  -6450,   3072}, 0, {  2016,    132}, {0xae, 0xeb, 0x5d, 0xff}}},\n    {{{  5120,  -6552,   2048}, 0, {   -28,    132}, {0x8e, 0xc9, 0x08, 0xff}}},\n    {{{  5120,  -7167,   2048}, 0, {     0,    990}, {0x88, 0x26, 0xfb, 0xff}}},\n    {{{  5120,  -7064,   3072}, 0, {   990,    990}, {0xa2, 0x40, 0x38, 0xff}}},\n    {{{  4300,  -7167,   2048}, 0, {  2012,    990}, {0x72, 0x37, 0xf9, 0xff}}},\n    {{{  4300,  -6552,   2048}, 0, {  2008,    132}, {0x78, 0xda, 0x05, 0xff}}},\n    {{{  4300,  -7064,   3072}, 0, {     0,    990}, {0x5c, 0x26, 0x4e, 0xff}}},\n    {{{  4300,  -6450,   3072}, 0, {     0,    132}, {0x56, 0xcd, 0x4d, 0xff}}},\n};\n\n// 0x070229F8 - 0x07022AF8\nstatic const Vtx ttm_seg7_vertex_070229F8[] = {\n    {{{  -892,  -3468,   1471}, 0, {  1648,   -846}, {0x37, 0x1b, 0x92, 0xff}}},\n    {{{  -994,  -5823,   1471}, 0, {     0,   -726}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -994,  -3570,   1471}, 0, {  1572,   -726}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{  -994,  -3570,   1573}, 0, {  1576,   -604}, {0xc9, 0xe5, 0x6e, 0xff}}},\n    {{{  -892,  -3468,   1573}, 0, {  1648,   -726}, {0x2a, 0x54, 0x54, 0xff}}},\n    {{{ -2018,  -3468,   1573}, 0, {  1648,    600}, {0xc9, 0x1b, 0x6e, 0xff}}},\n    {{{  -892,  -5823,   1573}, 0, {     0,   -726}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -994,  -5823,   1573}, 0, {     0,   -604}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1916,  -3570,   1573}, 0, {  1576,    478}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{ -2018,  -3468,   1471}, 0, {  1648,    478}, {0xdf, 0x43, 0x9b, 0xff}}},\n    {{{ -1916,  -5823,   1573}, 0, {     0,    478}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2018,  -5823,   1471}, 0, {     0,    478}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{ -2018,  -5823,   1573}, 0, {     0,    600}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -892,  -5823,   1471}, 0, {     0,   -846}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1916,  -3570,   1471}, 0, {  1572,    358}, {0x43, 0xdf, 0x9b, 0xff}}},\n    {{{ -1916,  -5823,   1471}, 0, {     0,    358}, {0x38, 0x00, 0x8f, 0xff}}},\n};\n\n// 0x07022AF8 - 0x07022BD8\nstatic const Vtx ttm_seg7_vertex_07022AF8[] = {\n    {{{  5999,   6964,   6289}, 0, {     0,      0}, {0x01, 0xec, 0x83, 0xff}}},\n    {{{  5999,   6503,   6289}, 0, {     0,      0}, {0x00, 0x00, 0x82, 0xff}}},\n    {{{  5637,   7680,   6651}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  5637,   6503,   6651}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  6940,   7680,   5348}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  6144,   7168,   6144}, 0, {     0,      0}, {0xe0, 0xa0, 0xb4, 0xff}}},\n    {{{  6071,   7117,   6216}, 0, {     0,      0}, {0x0f, 0xa6, 0xa9, 0xff}}},\n    {{{  6035,   7066,   6253}, 0, {     0,      0}, {0x1a, 0xc3, 0x95, 0xff}}},\n    {{{  6506,   7117,   5782}, 0, {     0,      0}, {0xb1, 0x9e, 0x09, 0xff}}},\n    {{{  6433,   7168,   5854}, 0, {     0,      0}, {0xd3, 0x8b, 0xed, 0xff}}},\n    {{{  6542,   7066,   5746}, 0, {     0,      0}, {0x9b, 0xb9, 0x18, 0xff}}},\n    {{{  6940,   6503,   5348}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  6578,   6503,   5710}, 0, {     0,      0}, {0x88, 0x00, 0xd8, 0xff}}},\n    {{{  6578,   6964,   5710}, 0, {     0,      0}, {0x8c, 0xe6, 0x2b, 0xff}}},\n};\n\n// 0x07022BD8 - 0x07022CB8\nstatic const Vtx ttm_seg7_vertex_07022BD8[] = {\n    {{{  2969,  -7576,   3072}, 0, {     0,      0}, {0xba, 0x00, 0x69, 0xff}}},\n    {{{  2969,  -2968,    512}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2969,  -7576,    512}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2969,  -2968,   3072}, 0, {     0,      0}, {0xe8, 0x00, 0x7c, 0xff}}},\n    {{{  4300,  -7064,   3072}, 0, {     0,      0}, {0x5c, 0x26, 0x4e, 0xff}}},\n    {{{  4300,  -6450,   3072}, 0, {     0,      0}, {0x56, 0xcd, 0x4d, 0xff}}},\n    {{{  9113,  -2968,   3072}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5017,  -6347,   3072}, 0, {     0,      0}, {0xd7, 0xb9, 0x60, 0xff}}},\n    {{{  4403,  -6347,   3072}, 0, {     0,      0}, {0x18, 0xa1, 0x50, 0xff}}},\n    {{{  4403,  -7167,   3072}, 0, {     0,      0}, {0x26, 0x70, 0x2d, 0xff}}},\n    {{{  9113,  -7576,   3072}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  5017,  -7167,   3072}, 0, {     0,      0}, {0xd4, 0x6a, 0x36, 0xff}}},\n    {{{  5120,  -7064,   3072}, 0, {     0,      0}, {0xa2, 0x40, 0x38, 0xff}}},\n    {{{  5120,  -6450,   3072}, 0, {     0,      0}, {0xae, 0xeb, 0x5d, 0xff}}},\n};\n\n// 0x07022CB8 - 0x07022DA8\nstatic const Vtx ttm_seg7_vertex_07022CB8[] = {\n    {{{  1677,   -955,  -4621}, 0, {     0,      0}, {0xad, 0x00, 0xa1, 0xff}}},\n    {{{  1685,  -1037,  -4628}, 0, {     0,      0}, {0xad, 0x00, 0xa1, 0xff}}},\n    {{{  1677,  -1037,  -4621}, 0, {     0,      0}, {0xad, 0x00, 0xa1, 0xff}}},\n    {{{  2969,  -7576,   3072}, 0, {     0,      0}, {0xba, 0x00, 0x69, 0xff}}},\n    {{{  2969,  -2968,   3072}, 0, {     0,      0}, {0xe8, 0x00, 0x7c, 0xff}}},\n    {{{  2969,  -2968,    512}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1576,   -955,  -4520}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1583,   -955,  -4527}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1583,  -1037,  -4527}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1576,  -1037,  -4520}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1627,   -955,  -4571}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1634,   -955,  -4578}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1634,  -1037,  -4578}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1627,  -1037,  -4571}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1685,   -955,  -4628}, 0, {     0,      0}, {0xad, 0x00, 0xa1, 0xff}}},\n};\n\n// 0x07022DA8 - 0x07022E98\nstatic const Vtx ttm_seg7_vertex_07022DA8[] = {\n    {{{  1648,   -683,  -4592}, 0, {     0,      0}, {0xa6, 0x01, 0xa7, 0xff}}},\n    {{{  1667,   -658,  -4610}, 0, {     0,      0}, {0xa6, 0x05, 0xa8, 0xff}}},\n    {{{  1703,   -658,  -4647}, 0, {     0,      0}, {0xa6, 0x02, 0xa7, 0xff}}},\n    {{{  1630,   -878,  -4574}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1612,   -888,  -4556}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1630,   -837,  -4574}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1648,   -888,  -4592}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1504,   -735,  -4447}, 0, {     0,      0}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{  1558,   -658,  -4502}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1612,   -683,  -4556}, 0, {     0,      0}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{  1504,   -811,  -4447}, 0, {     0,      0}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{  1594,   -658,  -4538}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1612,   -760,  -4556}, 0, {     0,      0}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{  1540,   -863,  -4484}, 0, {     0,      0}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{  1576,   -863,  -4520}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07022E98 - 0x07022F08\nstatic const Vtx ttm_seg7_vertex_07022E98[] = {\n    {{{  1757,   -811,  -4701}, 0, {     0,      0}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{  1721,   -863,  -4665}, 0, {     0,      0}, {0xa5, 0x01, 0xa8, 0xff}}},\n    {{{  1685,   -863,  -4628}, 0, {     0,      0}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{  1648,   -683,  -4592}, 0, {     0,      0}, {0xa6, 0x01, 0xa7, 0xff}}},\n    {{{  1703,   -658,  -4647}, 0, {     0,      0}, {0xa6, 0x02, 0xa7, 0xff}}},\n    {{{  1757,   -735,  -4701}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1648,   -760,  -4592}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07022F08 - 0x07023108\nstatic const Gfx ttm_seg7_dl_07022F08[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09006800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_0701DC60.l, 1),\n    gsSPLight(&ttm_seg7_lights_0701DC60.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0701DDC8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPLight(&ttm_seg7_lights_0701DC78.l, 1),\n    gsSPLight(&ttm_seg7_lights_0701DC78.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0701DE08, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPLight(&ttm_seg7_lights_0701DC90.l, 1),\n    gsSPLight(&ttm_seg7_lights_0701DC90.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0701DE88, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPLight(&ttm_seg7_lights_0701DCA8.l, 1),\n    gsSPLight(&ttm_seg7_lights_0701DCA8.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0701DF08, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPLight(&ttm_seg7_lights_0701DCC0.l, 1),\n    gsSPLight(&ttm_seg7_lights_0701DCC0.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0701DF88, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPLight(&ttm_seg7_lights_0701DCD8.l, 1),\n    gsSPLight(&ttm_seg7_lights_0701DCD8.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0701E008, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701E0F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701E1E8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07023108 - 0x070240F0\nstatic const Gfx ttm_seg7_dl_07023108[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_0900B800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_0701DCA8.l, 1),\n    gsSPLight(&ttm_seg7_lights_0701DCA8.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0701E2E8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(13, 12, 14, 0x0,  2,  1, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701E3E8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701E4E8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701E5E8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 1,  6,  2, 0x0,  7,  3,  5, 0x0),\n    gsSPLight(&ttm_seg7_lights_0701DCC0.l, 1),\n    gsSPLight(&ttm_seg7_lights_0701DCC0.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0701E668, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSPLight(&ttm_seg7_lights_0701DCF0.l, 1),\n    gsSPLight(&ttm_seg7_lights_0701DCF0.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0701E728, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701E828, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  5,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 9, 14, 10, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701E918, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701EA08, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSPLight(&ttm_seg7_lights_0701DD08.l, 1),\n    gsSPLight(&ttm_seg7_lights_0701DD08.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0701EA48, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701EB28, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 1,  6,  2, 0x0),\n    gsSPLight(&ttm_seg7_lights_0701DD20.l, 1),\n    gsSPLight(&ttm_seg7_lights_0701DD20.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0701EB98, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 3,  1,  4, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6,  8, 0x0),\n    gsSPLight(&ttm_seg7_lights_0701DD38.l, 1),\n    gsSPLight(&ttm_seg7_lights_0701DD38.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0701EC38, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  8,  4, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle(10, 14, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701ED28, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  3,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12,  9, 11, 0x0,  1, 13,  2, 0x0),\n    gsSP1Triangle(13, 14,  2, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701EE18, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSPLight(&ttm_seg7_lights_0701DD50.l, 1),\n    gsSPLight(&ttm_seg7_lights_0701DD50.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0701EE98, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 7,  8,  4, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 10, 13, 14, 0x0),\n    gsSP1Triangle(10, 14, 11, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701EF88, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13,  0, 14, 0x0),\n    gsSP2Triangles( 0,  2, 14, 0x0,  1, 15,  2, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701F088, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 5,  4,  6, 0x0),\n    gsSPLight(&ttm_seg7_lights_0701DD68.l, 1),\n    gsSPLight(&ttm_seg7_lights_0701DD68.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0701F0F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12,  9, 13, 0x0,  9, 11, 13, 0x0),\n    gsSP1Triangle(10, 14, 11, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701F1E8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  3,  7,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(11, 12,  9, 0x0, 12, 13,  9, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701F2D8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  1, 13,  2, 0x0),\n    gsSP1Triangle( 1, 14, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701F3C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6, 10, 0x0),\n    gsSP2Triangles( 6,  8, 10, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701F4B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701F5A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701F6A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701F798, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701F898, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  8, 13,  9, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701F978, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701FA58, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701FB48, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701FC38, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle(10,  4,  6, 0x0),\n    gsSPLight(&ttm_seg7_lights_0701DD80.l, 1),\n    gsSPLight(&ttm_seg7_lights_0701DD80.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0701FCE8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 7,  8,  5, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle(10, 14, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701FDD8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701FED8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  3,  5,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 7, 10,  9, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0701FFC8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070200C8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070201A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 2,  1, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07020298, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07020388, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07020478, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 9, 14, 10, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07020568, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07020648, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07020738, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07020828, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0, 11, 12, 13, 0x0),\n    gsSPLight(&ttm_seg7_lights_0701DCD8.l, 1),\n    gsSPLight(&ttm_seg7_lights_0701DCD8.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07020908, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 4,  8,  5, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 10, 13, 14, 0x0),\n    gsSP2Triangles(10, 14, 11, 0x0,  1, 15,  2, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07020A08, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10,  7, 11, 0x0, 10,  8,  7, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07020AF8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  5, 0x0,  6,  8,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10,  7, 0x0),\n    gsSP2Triangles( 1, 11,  2, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(15, 12, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07020BF8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  1,  7,  2, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12,  5, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07020CD8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  2, 0x0,  5,  3,  2, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 10, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07020DC8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 10, 12, 0x0),\n    gsSP1Triangle( 1, 14,  2, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07020EB8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07020FA8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10,  1, 11, 0x0),\n    gsSP1Triangle( 0,  2, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07021088, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 11, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07021178, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07021268, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07021358, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07021448, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  1,  0, 11, 0x0),\n    gsSP2Triangles( 1, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07021528, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(10,  9, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07021618, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070216F8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12,  8, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070217F8, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles( 5,  6,  2, 0x0,  7,  8,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070240F0 - 0x07024178\nstatic const Gfx ttm_seg7_dl_070240F0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttm_seg7_vertex_07021898, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 2,  4,  0, 0x0,  4,  5,  0, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07021988, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07024178 - 0x07024708\nstatic const Gfx ttm_seg7_dl_07024178[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_0701DC90.l, 1),\n    gsSPLight(&ttm_seg7_lights_0701DC90.a, 2),\n    gsSPVertex(ttm_seg7_vertex_070219C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07021AB8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  4, 0x0,  8,  3,  5, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 10,  0,  2, 0x0),\n    gsSP1Triangle(10,  2, 11, 0x0),\n    gsSPLight(&ttm_seg7_lights_0701DCA8.l, 1),\n    gsSPLight(&ttm_seg7_lights_0701DCA8.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07021B78, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSPLight(&ttm_seg7_lights_0701DCC0.l, 1),\n    gsSPLight(&ttm_seg7_lights_0701DCC0.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07021BF8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSPLight(&ttm_seg7_lights_0701DCF0.l, 1),\n    gsSPLight(&ttm_seg7_lights_0701DCF0.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07021C78, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPLight(&ttm_seg7_lights_0701DD08.l, 1),\n    gsSPLight(&ttm_seg7_lights_0701DD08.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07021CF8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(13, 12, 14, 0x0, 15,  1,  0, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07021DF8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  5,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07021ED8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  4,  6, 0x0,  7,  9,  5, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07021FC8, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6,  8, 0x0),\n    gsSP2Triangles(10,  0,  2, 0x0, 10,  2, 11, 0x0),\n    gsSP1Triangle(12, 10, 11, 0x0),\n    gsSPLight(&ttm_seg7_lights_0701DD20.l, 1),\n    gsSPLight(&ttm_seg7_lights_0701DD20.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07022098, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  4,  3, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  8,  7, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0,  1, 15,  2, 0x0),\n    gsSPLight(&ttm_seg7_lights_0701DD38.l, 1),\n    gsSPLight(&ttm_seg7_lights_0701DD38.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07022198, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  4,  3, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  8,  7, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0,  1, 15,  2, 0x0),\n    gsSPLight(&ttm_seg7_lights_0701DD50.l, 1),\n    gsSPLight(&ttm_seg7_lights_0701DD50.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07022298, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  8,  7, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPLight(&ttm_seg7_lights_0701DD68.l, 1),\n    gsSPLight(&ttm_seg7_lights_0701DD68.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07022398, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07022488, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07022578, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  3,  6, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 1,  9, 11, 0x0,  9, 12, 10, 0x0),\n    gsSP2Triangles( 1, 11,  2, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07022678, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  3,  5, 0x0),\n    gsSPLight(&ttm_seg7_lights_0701DD80.l, 1),\n    gsSPLight(&ttm_seg7_lights_0701DD80.a, 2),\n    gsSPVertex(ttm_seg7_vertex_070226F8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPLight(&ttm_seg7_lights_0701DD98.l, 1),\n    gsSPLight(&ttm_seg7_lights_0701DD98.a, 2),\n    gsSPVertex(ttm_seg7_vertex_070227F8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPLight(&ttm_seg7_lights_0701DCD8.l, 1),\n    gsSPLight(&ttm_seg7_lights_0701DCD8.a, 2),\n    gsSPVertex(ttm_seg7_vertex_070228F8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07024708 - 0x070247F0\nstatic const Gfx ttm_seg7_dl_07024708[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttm_seg7_vertex_070229F8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  7,  6, 0x0),\n    gsSP2Triangles( 5,  8,  3, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 2,  3,  8, 0x0,  1,  7,  3, 0x0),\n    gsSP2Triangles( 9,  4,  0, 0x0,  9,  5,  4, 0x0),\n    gsSP2Triangles( 0,  4,  6, 0x0,  5, 10,  8, 0x0),\n    gsSP2Triangles(11, 12,  5, 0x0, 11,  5,  9, 0x0),\n    gsSP2Triangles( 5, 12, 10, 0x0,  0, 13,  1, 0x0),\n    gsSP2Triangles( 0,  6, 13, 0x0,  2,  8, 14, 0x0),\n    gsSP2Triangles(14,  8, 10, 0x0, 14, 10, 15, 0x0),\n    gsSP2Triangles(14,  9,  0, 0x0, 14, 15,  9, 0x0),\n    gsSP2Triangles( 0,  2, 14, 0x0, 15, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070247F0 - 0x070249A0\nstatic const Gfx ttm_seg7_dl_070247F0[] = {\n    gsSPLight(&ttm_seg7_lights_0701DDB0.l, 1),\n    gsSPLight(&ttm_seg7_lights_0701DDB0.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07022AF8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  2,  5,  6, 0x0),\n    gsSP2Triangles( 2,  6,  7, 0x0,  2,  7,  0, 0x0),\n    gsSP2Triangles( 4,  8,  9, 0x0,  4,  9,  5, 0x0),\n    gsSP2Triangles( 4, 10,  8, 0x0,  4, 11, 12, 0x0),\n    gsSP2Triangles( 4, 12, 13, 0x0,  4, 13, 10, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07022BD8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  0,  4, 0x0,  6,  3,  7, 0x0),\n    gsSP2Triangles( 3,  5,  8, 0x0,  3,  8,  7, 0x0),\n    gsSP2Triangles( 9,  4,  0, 0x0, 10, 11,  9, 0x0),\n    gsSP2Triangles( 9,  0, 10, 0x0, 10, 12, 11, 0x0),\n    gsSP2Triangles(13, 12, 10, 0x0, 13, 10,  6, 0x0),\n    gsSP1Triangle( 7, 13,  6, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07022CB8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07022DA8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(10,  9, 12, 0x0, 13, 10, 12, 0x0),\n    gsSP1Triangle(14, 13, 12, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07022E98, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  0,  6, 0x0,  3,  5,  0, 0x0),\n    gsSP1Triangle( 0,  2,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070249A0 - 0x07024AB0\nconst Gfx ttm_seg7_dl_070249A0[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(980, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_07022F08),\n    gsSPDisplayList(ttm_seg7_dl_07023108),\n    gsSPDisplayList(ttm_seg7_dl_070240F0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_07024178),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_07024708),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_PASS2),\n    gsSPDisplayList(ttm_seg7_dl_070247F0),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/3/2/model.inc.c",
    "content": "// 0x07024AB0 - 0x07024B90\nstatic const Vtx ttm_seg7_vertex_07024AB0[] = {\n    {{{ -1475,   -140,  -6832}, 0, {     0,      0}, {0xdf, 0x1f, 0x1f, 0xff}}},\n    {{{ -1475,   -345,  -6832}, 0, {     0,      0}, {0xdf, 0x1f, 0x1f, 0xff}}},\n    {{{ -1528,   -191,  -6582}, 0, {     0,      0}, {0xdf, 0x1f, 0x1f, 0xff}}},\n    {{{ -1433,   -293,  -7033}, 0, {     0,      0}, {0xdf, 0x1f, 0x1f, 0xff}}},\n    {{{ -1475,   -242,  -6832}, 0, {     0,      0}, {0xdf, 0x1f, 0x1f, 0xff}}},\n    {{{ -1433,    -89,  -7033}, 0, {     0,      0}, {0xdf, 0x1f, 0x1f, 0xff}}},\n    {{{ -1475,    -37,  -6832}, 0, {     0,      0}, {0xdf, 0x1f, 0x1f, 0xff}}},\n    {{{ -3196,     13,  -6675}, 0, {     0,      0}, {0xdf, 0x5f, 0x1f, 0xff}}},\n    {{{ -3143,    166,  -6925}, 0, {     0,      0}, {0xdf, 0x5f, 0x1f, 0xff}}},\n    {{{ -3143,     64,  -6925}, 0, {     0,      0}, {0xdf, 0x5f, 0x1f, 0xff}}},\n    {{{ -3101,    115,  -7126}, 0, {     0,      0}, {0xdf, 0x5f, 0x1f, 0xff}}},\n    {{{ -3101,    -89,  -7126}, 0, {     0,      0}, {0xdf, 0x5f, 0x1f, 0xff}}},\n    {{{ -3143,    -37,  -6925}, 0, {     0,      0}, {0xdf, 0x5f, 0x1f, 0xff}}},\n    {{{ -3143,   -140,  -6925}, 0, {     0,      0}, {0xdf, 0x5f, 0x1f, 0xff}}},\n};\n\n// 0x07024B90 - 0x07024C00\nstatic const Vtx ttm_seg7_vertex_07024B90[] = {\n    {{{ -4335,    218,  -6760}, 0, {     0,      0}, {0xff, 0xaa, 0x00, 0xff}}},\n    {{{ -4293,     64,  -6960}, 0, {     0,      0}, {0xff, 0xaa, 0x00, 0xff}}},\n    {{{ -4335,    115,  -6760}, 0, {     0,      0}, {0xff, 0xaa, 0x00, 0xff}}},\n    {{{ -4335,     13,  -6760}, 0, {     0,      0}, {0xff, 0xaa, 0x00, 0xff}}},\n    {{{ -4388,    166,  -6509}, 0, {     0,      0}, {0xff, 0xaa, 0x00, 0xff}}},\n    {{{ -4293,    269,  -6960}, 0, {     0,      0}, {0xff, 0xaa, 0x00, 0xff}}},\n    {{{ -4335,    320,  -6760}, 0, {     0,      0}, {0xff, 0xaa, 0x00, 0xff}}},\n};\n\n// 0x07024C00 - 0x07024C78\nstatic const Gfx ttm_seg7_dl_07024C00[] = {\n    gsSPVertex(ttm_seg7_vertex_07024AB0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  5,  3, 0x0,  2,  6,  0, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0,  9, 13,  7, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07024B90, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  5,  1, 0x0,  4,  6,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07024C78 - 0x07024CA8\nconst Gfx ttm_seg7_dl_07024C78[] = {\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsSPDisplayList(ttm_seg7_dl_07024C00),\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/3/3/model.inc.c",
    "content": "// 0x07024CA8 - 0x07024CC0\nstatic const Lights1 ttm_seg7_lights_07024CA8 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07024CC0 - 0x07024DC0\nstatic const Vtx ttm_seg7_vertex_07024CC0[] = {\n    {{{  4272,   5635,   4667}, 0, {     0,    448}, {0x0d, 0x00, 0x7e, 0xff}}},\n    {{{  4295,   5635,   4667}, 0, {     0,    522}, {0xe5, 0x00, 0x7c, 0xff}}},\n    {{{  4295,   6147,   4667}, 0, {  2012,    522}, {0xf3, 0x00, 0x7e, 0xff}}},\n    {{{  4331,   6147,   4679}, 0, {  2012,    632}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  4331,   5635,   4679}, 0, {     0,    632}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  4236,   5635,   4679}, 0, {     0,    336}, {0x2d, 0x00, 0x76, 0xff}}},\n    {{{  4272,   6147,   4667}, 0, {  2012,    448}, {0x1b, 0x00, 0x7c, 0xff}}},\n    {{{  4236,   6147,   4679}, 0, {  2012,    336}, {0x33, 0x00, 0x74, 0xff}}},\n    {{{  4117,   5635,   4738}, 0, {     0,      0}, {0x44, 0x00, 0x6b, 0xff}}},\n    {{{  4117,   6147,   4738}, 0, {  2012,      0}, {0x4f, 0x00, 0x62, 0xff}}},\n    {{{ -6638,   1293,   2276}, 0, {     0,  -4120}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6638,   2214,   3505}, 0, {  2012,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6638,   1702,   3505}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3849,   5635,   5006}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  4117,   6147,   4738}, 0, {  2012,    990}, {0x4f, 0x00, 0x62, 0xff}}},\n    {{{  3849,   6147,   5006}, 0, {  2012,      0}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07024DC0 - 0x07024EA0\nstatic const Vtx ttm_seg7_vertex_07024DC0[] = {\n    {{{  3849,   5635,   5006}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  4117,   5635,   4738}, 0, {     0,    990}, {0x44, 0x00, 0x6b, 0xff}}},\n    {{{  4117,   6147,   4738}, 0, {  2012,    990}, {0x4f, 0x00, 0x62, 0xff}}},\n    {{{  2278,   5092,   6628}, 0, {     0,  -1056}, {0x58, 0x00, 0x5b, 0xff}}},\n    {{{  2690,   5635,   6165}, 0, {  2012,    990}, {0x5d, 0x00, 0x56, 0xff}}},\n    {{{  2278,   5604,   6628}, 0, {  2012,  -1056}, {0x58, 0x00, 0x5b, 0xff}}},\n    {{{  2690,   5123,   6165}, 0, {     0,    990}, {0x5b, 0x00, 0x58, 0xff}}},\n    {{{  4447,   5635,   4737}, 0, {     0,    990}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{  4331,   6147,   4679}, 0, {  2012,    632}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  4331,   5635,   4679}, 0, {     0,    632}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  4447,   6147,   4737}, 0, {  2012,    990}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{ -6492,   2522,   5216}, 0, {     0,  -1054}, {0x70, 0x00, 0xc7, 0xff}}},\n    {{{ -6492,   3034,   5216}, 0, {  2012,  -1054}, {0x76, 0x00, 0xd4, 0xff}}},\n    {{{ -6206,   3341,   5645}, 0, {  2012,    990}, {0x64, 0x00, 0xb3, 0xff}}},\n};\n\n// 0x07024EA0 - 0x07024F80\nstatic const Vtx ttm_seg7_vertex_07024EA0[] = {\n    {{{ -6638,   1293,   2276}, 0, {     0,  -4120}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6638,   1805,   2276}, 0, {  2012,  -4120}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6638,   2214,   3505}, 0, {  2012,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6638,   1702,   3505}, 0, {     0,  -3090}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6638,   2726,   4632}, 0, {  2012,    990}, {0x7e, 0x00, 0xf6, 0xff}}},\n    {{{ -6638,   2214,   4632}, 0, {     0,    990}, {0x7d, 0x00, 0xec, 0xff}}},\n    {{{ -6638,   2214,   3505}, 0, {  2012,  -3090}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6638,   2214,   4632}, 0, {     0,  -1054}, {0x7d, 0x00, 0xec, 0xff}}},\n    {{{ -6638,   2726,   4632}, 0, {  2012,  -1054}, {0x7e, 0x00, 0xf6, 0xff}}},\n    {{{ -6492,   3034,   5216}, 0, {  2012,    990}, {0x76, 0x00, 0xd4, 0xff}}},\n    {{{ -6492,   2522,   5216}, 0, {     0,    990}, {0x70, 0x00, 0xc7, 0xff}}},\n    {{{ -6492,   2522,   5216}, 0, {     0,  -1054}, {0x70, 0x00, 0xc7, 0xff}}},\n    {{{ -6206,   3341,   5645}, 0, {  2012,    990}, {0x64, 0x00, 0xb3, 0xff}}},\n    {{{ -6206,   2829,   5645}, 0, {     0,    990}, {0x5f, 0x00, 0xad, 0xff}}},\n};\n\n// 0x07024F80 - 0x07025070\nstatic const Vtx ttm_seg7_vertex_07024F80[] = {\n    {{{ -3975,   3750,   6577}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4694,   4058,   6577}, 0, {  2012,  -2078}, {0x0a, 0x00, 0x82, 0xff}}},\n    {{{ -3975,   4262,   6577}, 0, {  2012,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6206,   2829,   5645}, 0, {     0,  -2074}, {0x5f, 0x00, 0xad, 0xff}}},\n    {{{ -5706,   3648,   6145}, 0, {  2012,    990}, {0x53, 0x00, 0xa1, 0xff}}},\n    {{{ -5706,   3136,   6145}, 0, {     0,    990}, {0x4d, 0x00, 0x9c, 0xff}}},\n    {{{ -6206,   3341,   5645}, 0, {  2012,  -2074}, {0x64, 0x00, 0xb3, 0xff}}},\n    {{{ -5277,   3853,   6431}, 0, {  2012,    990}, {0x33, 0x00, 0x8c, 0xff}}},\n    {{{ -5706,   3136,   6145}, 0, {     0,  -1052}, {0x4d, 0x00, 0x9c, 0xff}}},\n    {{{ -5706,   3648,   6145}, 0, {  2012,  -1052}, {0x53, 0x00, 0xa1, 0xff}}},\n    {{{ -5277,   3341,   6431}, 0, {     0,    990}, {0x33, 0x00, 0x8c, 0xff}}},\n    {{{ -5277,   3853,   6431}, 0, {  2012,  -1056}, {0x33, 0x00, 0x8c, 0xff}}},\n    {{{ -4694,   4058,   6577}, 0, {  2012,    990}, {0x0a, 0x00, 0x82, 0xff}}},\n    {{{ -4694,   3546,   6577}, 0, {     0,    990}, {0x14, 0x00, 0x83, 0xff}}},\n    {{{ -5277,   3341,   6431}, 0, {     0,  -1056}, {0x33, 0x00, 0x8c, 0xff}}},\n};\n\n// 0x07025070 - 0x07025150\nstatic const Vtx ttm_seg7_vertex_07025070[] = {\n    {{{ -1644,   4559,   6577}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2053,   4457,   6577}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2053,   4969,   6577}, 0, {  2012,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3975,   3750,   6577}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -4694,   3546,   6577}, 0, {     0,  -2078}, {0x14, 0x00, 0x83, 0xff}}},\n    {{{ -4694,   4058,   6577}, 0, {  2012,  -2078}, {0x0a, 0x00, 0x82, 0xff}}},\n    {{{ -2053,   4969,   6577}, 0, {  2012,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3975,   3750,   6577}, 0, {     0,  -6156}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3975,   4262,   6577}, 0, {  2012,  -6156}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2053,   4457,   6577}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1644,   5071,   6577}, 0, {  2012,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   747,   4815,   6577}, 0, {     0,    990}, {0xf3, 0x00, 0x82, 0xff}}},\n    {{{   301,   4764,   6577}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   301,   5276,   6577}, 0, {  2012,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07025150 - 0x07025240\nstatic const Vtx ttm_seg7_vertex_07025150[] = {\n    {{{  -104,   4713,   6577}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1644,   4559,   6577}, 0, {     0,  -4106}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1234,   5123,   6577}, 0, {  2052,  -2750}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1644,   5071,   6577}, 0, {  2012,  -4106}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -104,   5225,   6577}, 0, {  2012,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   301,   4764,   6577}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -104,   4713,   6577}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   301,   5276,   6577}, 0, {  2012,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -104,   5225,   6577}, 0, {  2012,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   747,   4815,   6577}, 0, {     0,    990}, {0xf3, 0x00, 0x82, 0xff}}},\n    {{{   301,   5276,   6577}, 0, {  2012,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   747,   5327,   6577}, 0, {  2012,    990}, {0xe5, 0x00, 0x84, 0xff}}},\n    {{{ -6638,    -89,  -2946}, 0, {     0,    990}, {0x7e, 0x00, 0x0c, 0xff}}},\n    {{{ -6433,    218,  -3970}, 0, {  2012,  -3094}, {0x78, 0x00, 0x29, 0xff}}},\n    {{{ -6638,    422,  -2946}, 0, {  2012,    990}, {0x7e, 0x00, 0x0c, 0xff}}},\n};\n\n// 0x07025240 - 0x07025330\nstatic const Vtx ttm_seg7_vertex_07025240[] = {\n    {{{  1000,   4867,   6492}, 0, {     0,    990}, {0xd3, 0x00, 0x8a, 0xff}}},\n    {{{   747,   5327,   6577}, 0, {  2012,      0}, {0xe5, 0x00, 0x84, 0xff}}},\n    {{{  1000,   5379,   6492}, 0, {  2012,    990}, {0xcd, 0x00, 0x8c, 0xff}}},\n    {{{   747,   4815,   6577}, 0, {     0,      0}, {0xf3, 0x00, 0x82, 0xff}}},\n    {{{  1210,   4918,   6387}, 0, {     0,    990}, {0xc5, 0x00, 0x90, 0xff}}},\n    {{{  1000,   5379,   6492}, 0, {  2012,      0}, {0xcd, 0x00, 0x8c, 0xff}}},\n    {{{  1210,   5430,   6387}, 0, {  2012,    990}, {0xc2, 0x00, 0x92, 0xff}}},\n    {{{  1000,   4867,   6492}, 0, {     0,      0}, {0xd3, 0x00, 0x8a, 0xff}}},\n    {{{  1450,   4969,   6244}, 0, {     0,    990}, {0xbf, 0x00, 0x93, 0xff}}},\n    {{{  1210,   5430,   6387}, 0, {  2012,      0}, {0xc2, 0x00, 0x92, 0xff}}},\n    {{{  1450,   5481,   6244}, 0, {  2012,    990}, {0xbf, 0x00, 0x93, 0xff}}},\n    {{{  1210,   4918,   6387}, 0, {     0,      0}, {0xc5, 0x00, 0x90, 0xff}}},\n    {{{ -4999,   -703,  -5915}, 0, {     0,    990}, {0x44, 0x00, 0x6a, 0xff}}},\n    {{{ -3975,   -908,  -6427}, 0, {     0,  -3098}, {0x23, 0x00, 0x79, 0xff}}},\n    {{{ -3975,   -396,  -6427}, 0, {  2012,  -3098}, {0x2e, 0x00, 0x76, 0xff}}},\n};\n\n// 0x07025330 - 0x07025410\nstatic const Vtx ttm_seg7_vertex_07025330[] = {\n    {{{ -6638,    -89,  -2946}, 0, {     0,    990}, {0x7e, 0x00, 0x0c, 0xff}}},\n    {{{ -6433,   -293,  -3970}, 0, {     0,  -3094}, {0x78, 0x00, 0x29, 0xff}}},\n    {{{ -6433,    218,  -3970}, 0, {  2012,  -3094}, {0x78, 0x00, 0x29, 0xff}}},\n    {{{ -5921,   -498,  -4994}, 0, {     0,  -3082}, {0x67, 0x00, 0x4a, 0xff}}},\n    {{{ -5921,     13,  -4994}, 0, {  2012,  -3082}, {0x67, 0x00, 0x4a, 0xff}}},\n    {{{ -6433,    218,  -3970}, 0, {  2012,    990}, {0x78, 0x00, 0x29, 0xff}}},\n    {{{ -6433,   -293,  -3970}, 0, {     0,    990}, {0x78, 0x00, 0x29, 0xff}}},\n    {{{ -5921,   -498,  -4994}, 0, {     0,    990}, {0x67, 0x00, 0x4a, 0xff}}},\n    {{{ -4999,   -191,  -5915}, 0, {  2012,  -4114}, {0x4f, 0x00, 0x62, 0xff}}},\n    {{{ -5921,     13,  -4994}, 0, {  2012,    990}, {0x67, 0x00, 0x4a, 0xff}}},\n    {{{ -4999,   -703,  -5915}, 0, {     0,  -4114}, {0x44, 0x00, 0x6a, 0xff}}},\n    {{{ -4999,   -703,  -5915}, 0, {     0,    990}, {0x44, 0x00, 0x6a, 0xff}}},\n    {{{ -3975,   -396,  -6427}, 0, {  2012,  -3098}, {0x2e, 0x00, 0x76, 0xff}}},\n    {{{ -4999,   -191,  -5915}, 0, {  2012,    990}, {0x4f, 0x00, 0x62, 0xff}}},\n};\n\n// 0x07025410 - 0x07025500\nstatic const Vtx ttm_seg7_vertex_07025410[] = {\n    {{{   730,  -6028,   6512}, 0, {  2012,  -2076}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{    11,  -6437,   6152}, 0, {     0,    990}, {0x44, 0x00, 0x96, 0xff}}},\n    {{{    11,  -5925,   6152}, 0, {  2012,    990}, {0x4f, 0x00, 0x9e, 0xff}}},\n    {{{  -868,  -5721,   4912}, 0, {  2012,  -2078}, {0x77, 0x00, 0xd4, 0xff}}},\n    {{{ -1050,  -6130,   4185}, 0, {     0,    990}, {0x7d, 0x00, 0xec, 0xff}}},\n    {{{ -1050,  -5618,   4185}, 0, {  2012,    990}, {0x7e, 0x00, 0xf6, 0xff}}},\n    {{{  -868,  -6233,   4912}, 0, {     0,  -2078}, {0x77, 0x00, 0xd4, 0xff}}},\n    {{{  -509,  -6335,   5632}, 0, {     0,  -2076}, {0x67, 0x00, 0xb6, 0xff}}},\n    {{{  -868,  -5721,   4912}, 0, {  2012,    990}, {0x77, 0x00, 0xd4, 0xff}}},\n    {{{  -509,  -5823,   5632}, 0, {  2012,  -2076}, {0x67, 0x00, 0xb6, 0xff}}},\n    {{{  -868,  -6233,   4912}, 0, {     0,    990}, {0x77, 0x00, 0xd4, 0xff}}},\n    {{{    11,  -5925,   6152}, 0, {  2012,  -2074}, {0x4f, 0x00, 0x9e, 0xff}}},\n    {{{  -509,  -6335,   5632}, 0, {     0,    990}, {0x67, 0x00, 0xb6, 0xff}}},\n    {{{  -509,  -5823,   5632}, 0, {  2012,    990}, {0x67, 0x00, 0xb6, 0xff}}},\n    {{{    11,  -6437,   6152}, 0, {     0,  -2074}, {0x44, 0x00, 0x96, 0xff}}},\n};\n\n// 0x07025500 - 0x070255F0\nstatic const Vtx ttm_seg7_vertex_07025500[] = {\n    {{{  3226,  -6437,   6693}, 0, {  2012,    990}, {0xf1, 0x00, 0x82, 0xff}}},\n    {{{  3543,  -6540,   6614}, 0, {  2012,      0}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{  3543,  -7052,   6614}, 0, {     0,      0}, {0xd9, 0x00, 0x88, 0xff}}},\n    {{{   730,  -6028,   6512}, 0, {  2012,  -2076}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{   730,  -6540,   6512}, 0, {     0,  -2076}, {0x27, 0x00, 0x88, 0xff}}},\n    {{{    11,  -6437,   6152}, 0, {     0,    990}, {0x44, 0x00, 0x96, 0xff}}},\n    {{{  1457,  -6130,   6693}, 0, {  2012,  -2078}, {0x14, 0x00, 0x83, 0xff}}},\n    {{{  1457,  -6642,   6693}, 0, {     0,  -2078}, {0x0a, 0x00, 0x82, 0xff}}},\n    {{{   730,  -6540,   6512}, 0, {     0,    990}, {0x27, 0x00, 0x88, 0xff}}},\n    {{{   730,  -6028,   6512}, 0, {  2012,    990}, {0x30, 0x00, 0x8b, 0xff}}},\n    {{{  3226,  -6437,   6693}, 0, {  2012,  -5126}, {0xf1, 0x00, 0x82, 0xff}}},\n    {{{  1457,  -6642,   6693}, 0, {     0,   1004}, {0x0a, 0x00, 0x82, 0xff}}},\n    {{{  1457,  -6130,   6693}, 0, {  2012,    990}, {0x14, 0x00, 0x83, 0xff}}},\n    {{{  3226,  -6949,   6693}, 0, {     0,  -5110}, {0xf1, 0x00, 0x82, 0xff}}},\n    {{{  3226,  -6949,   6693}, 0, {     0,    990}, {0xf1, 0x00, 0x82, 0xff}}},\n};\n\n// 0x070255F0 - 0x070256F0\nstatic const Vtx ttm_seg7_vertex_070255F0[] = {\n    {{{  4300,  -7461,   5619}, 0, {     0,      0}, {0x82, 0x00, 0xf1, 0xff}}},\n    {{{  4221,  -6847,   5936}, 0, {  2012,    990}, {0x88, 0x00, 0xd9, 0xff}}},\n    {{{  4300,  -6949,   5619}, 0, {  2012,      0}, {0x82, 0x00, 0xf1, 0xff}}},\n    {{{  3543,  -6540,   6614}, 0, {  2012,    990}, {0xd0, 0x00, 0x8b, 0xff}}},\n    {{{  3853,  -7154,   6459}, 0, {     0,      0}, {0xbc, 0x00, 0x96, 0xff}}},\n    {{{  3543,  -7052,   6614}, 0, {     0,    990}, {0xd9, 0x00, 0x88, 0xff}}},\n    {{{  3853,  -6642,   6459}, 0, {  2012,      0}, {0xb1, 0x00, 0x9e, 0xff}}},\n    {{{  4066,  -7257,   6246}, 0, {     0,      0}, {0x9e, 0x00, 0xb1, 0xff}}},\n    {{{  3853,  -6642,   6459}, 0, {  2012,    990}, {0xb1, 0x00, 0x9e, 0xff}}},\n    {{{  4066,  -6745,   6246}, 0, {  2012,      0}, {0x96, 0x00, 0xbc, 0xff}}},\n    {{{  3853,  -7154,   6459}, 0, {     0,    990}, {0xbc, 0x00, 0x96, 0xff}}},\n    {{{  4221,  -7359,   5936}, 0, {     0,      0}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{  4066,  -6745,   6246}, 0, {  2012,    990}, {0x96, 0x00, 0xbc, 0xff}}},\n    {{{  4221,  -6847,   5936}, 0, {  2012,      0}, {0x88, 0x00, 0xd9, 0xff}}},\n    {{{  4066,  -7257,   6246}, 0, {     0,    990}, {0x9e, 0x00, 0xb1, 0xff}}},\n    {{{  4221,  -7359,   5936}, 0, {     0,    990}, {0x8b, 0x00, 0xd0, 0xff}}},\n};\n\n// 0x070256F0 - 0x070257F0\nstatic const Vtx ttm_seg7_vertex_070256F0[] = {\n    {{{  2690,   5635,   6165}, 0, {  2012,  -3088}, {0x5d, 0x00, 0x56, 0xff}}},\n    {{{  2690,   5123,   6165}, 0, {     0,  -3088}, {0x5b, 0x00, 0x58, 0xff}}},\n    {{{  3559,   6044,   5296}, 0, {  2012,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3559,   5532,   5296}, 0, {     0,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3849,   6147,   5006}, 0, {  2012,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3559,   6044,   5296}, 0, {  2012,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3849,   5635,   5006}, 0, {     0,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3559,   5532,   5296}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -6638,   1293,   2276}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6638,   1210,     -3}, 0, {  2012,  -8196}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6638,   1805,   2276}, 0, {  2012,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6638,    698,     -3}, 0, {     0,  -8196}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6638,    -89,  -2946}, 0, {     0,  -9212}, {0x7e, 0x00, 0x0c, 0xff}}},\n    {{{ -6638,    422,  -2946}, 0, {  2012,  -9212}, {0x7e, 0x00, 0x0c, 0xff}}},\n    {{{ -6638,   1210,     -3}, 0, {  2012,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6638,    698,     -3}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070257F0 - 0x070258E0\nstatic const Vtx ttm_seg7_vertex_070257F0[] = {\n    {{{  4300,  -7052,   4338}, 0, {  2012,    990}, {0x82, 0x00, 0xfb, 0xff}}},\n    {{{  4403,  -7167,   3072}, 0, {  2012,  -4104}, {0x82, 0x00, 0xf6, 0xff}}},\n    {{{  4403,  -7679,   3072}, 0, {     0,  -4104}, {0x82, 0x00, 0xf6, 0xff}}},\n    {{{  4300,  -7564,   4338}, 0, {     0,    990}, {0x82, 0x00, 0xfb, 0xff}}},\n    {{{  4300,  -7461,   5619}, 0, {     0,    990}, {0x82, 0x00, 0xf1, 0xff}}},\n    {{{  4300,  -6949,   5619}, 0, {  2012,    990}, {0x82, 0x00, 0xf1, 0xff}}},\n    {{{  4300,  -7052,   4338}, 0, {  2012,  -4118}, {0x82, 0x00, 0xfb, 0xff}}},\n    {{{  1604,   5123,   7106}, 0, {     0,    990}, {0x3b, 0x00, 0x70, 0xff}}},\n    {{{  1604,   5635,   7106}, 0, {  2012,    990}, {0x3e, 0x00, 0x6e, 0xff}}},\n    {{{  1315,   5583,   7251}, 0, {  2012,      0}, {0x33, 0x00, 0x74, 0xff}}},\n    {{{  4300,  -7564,   4338}, 0, {     0,  -4118}, {0x82, 0x00, 0xfb, 0xff}}},\n    {{{  2278,   5092,   6628}, 0, {     0,    990}, {0x58, 0x00, 0x5b, 0xff}}},\n    {{{  1966,   5686,   6889}, 0, {  2012,      0}, {0x4c, 0x00, 0x65, 0xff}}},\n    {{{  1966,   5174,   6889}, 0, {     0,      0}, {0x46, 0x00, 0x69, 0xff}}},\n    {{{  2278,   5604,   6628}, 0, {  2012,    990}, {0x58, 0x00, 0x5b, 0xff}}},\n};\n\n// 0x070258E0 - 0x070259C0\nstatic const Vtx ttm_seg7_vertex_070258E0[] = {\n    {{{  1966,   5174,   6889}, 0, {     0,    990}, {0x46, 0x00, 0x69, 0xff}}},\n    {{{  1604,   5635,   7106}, 0, {  2012,      0}, {0x3e, 0x00, 0x6e, 0xff}}},\n    {{{  1604,   5123,   7106}, 0, {     0,      0}, {0x3b, 0x00, 0x70, 0xff}}},\n    {{{  1966,   5686,   6889}, 0, {  2012,    990}, {0x4c, 0x00, 0x65, 0xff}}},\n    {{{  1604,   5123,   7106}, 0, {     0,    990}, {0x3b, 0x00, 0x70, 0xff}}},\n    {{{  1315,   5583,   7251}, 0, {  2012,      0}, {0x33, 0x00, 0x74, 0xff}}},\n    {{{  1315,   5071,   7251}, 0, {     0,      0}, {0x2d, 0x00, 0x76, 0xff}}},\n    {{{ -1050,  -5618,   4185}, 0, {  2012,  -8204}, {0x7e, 0x00, 0xf6, 0xff}}},\n    {{{ -1050,  -5721,   1573}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1050,  -5209,   1573}, 0, {  2012,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1315,   5071,   7251}, 0, {     0,    990}, {0x2d, 0x00, 0x76, 0xff}}},\n    {{{   880,   5532,   7396}, 0, {  2012,      0}, {0x28, 0x00, 0x78, 0xff}}},\n    {{{   880,   5020,   7396}, 0, {     0,      0}, {0x28, 0x00, 0x78, 0xff}}},\n    {{{  1315,   5583,   7251}, 0, {  2012,    990}, {0x33, 0x00, 0x74, 0xff}}},\n};\n\n// 0x070259C0 - 0x07025AB0\nstatic const Vtx ttm_seg7_vertex_070259C0[] = {\n    {{{  -699,  -1420,  -6325}, 0, {     0,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   120,  -1471,  -5506}, 0, {     0,  -3100}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   120,   -959,  -5506}, 0, {  2012,  -3100}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -699,   -908,  -6325}, 0, {  2012,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -3975,   -908,  -6427}, 0, {     0,    990}, {0x23, 0x00, 0x79, 0xff}}},\n    {{{ -2951,  -1113,  -6632}, 0, {     0,  -3094}, {0x18, 0x00, 0x7c, 0xff}}},\n    {{{ -2951,   -601,  -6632}, 0, {  2012,  -3094}, {0x18, 0x00, 0x7c, 0xff}}},\n    {{{ -3975,   -396,  -6427}, 0, {  2012,    990}, {0x2e, 0x00, 0x76, 0xff}}},\n    {{{ -1050,  -5618,   4185}, 0, {  2012,  -8204}, {0x7e, 0x00, 0xf6, 0xff}}},\n    {{{ -1050,  -6130,   4185}, 0, {     0,  -8204}, {0x7d, 0x00, 0xec, 0xff}}},\n    {{{ -1050,  -5721,   1573}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1050,  -5721,   1573}, 0, {     0,  -2060}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1050,  -5618,    857}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1050,  -5106,    857}, 0, {  2012,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1050,  -5209,   1573}, 0, {  2012,  -2060}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07025AB0 - 0x07025B30\nstatic const Vtx ttm_seg7_vertex_07025AB0[] = {\n    {{{   120,  -1471,  -5506}, 0, {     0,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1059,  -1573,  -4566}, 0, {     0,  -3430}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{  1059,  -1061,  -4566}, 0, {  2012,  -3430}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{   120,   -959,  -5506}, 0, {  2012,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1638,  -1061,  -5145}, 0, {  2012,   4394}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1059,  -1061,  -4566}, 0, {  2012,   1670}, {0x00, 0x00, 0x7e, 0xff}}},\n    {{{  1638,  -1573,  -5145}, 0, {     0,   4394}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1059,  -1573,  -4566}, 0, {     0,   1670}, {0x00, 0x00, 0x7e, 0xff}}},\n};\n\n// 0x07025B30 - 0x07025F48\nstatic const Gfx ttm_seg7_dl_07025B30[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_07024CA8.l, 1),\n    gsSPLight(&ttm_seg7_lights_07024CA8.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07024CC0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  5,  0,  6, 0x0),\n    gsSP2Triangles( 0,  2,  6, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  5,  7, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07024DC0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07024EA0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07024F80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07025070, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 2, 10,  0, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07025150, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  0,  2, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07025240, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07025330, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07025410, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07025500, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070255F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070256F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9,  8, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070257F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  4,  6, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070258E0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070259C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07025AB0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07025F48 - 0x07025FF0\nconst Gfx ttm_seg7_dl_07025F48[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(980, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_07025B30),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/3/collision.inc.c",
    "content": "// 0x0702D5EC - 0x0702F0F8\nconst Collision ttm_seg7_area_3_collision[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x1C5),\n    COL_VERTEX(5999, 6554, 6289),\n    COL_VERTEX(6411, 6748, 6701),\n    COL_VERTEX(6990, 6748, 6122),\n    COL_VERTEX(6578, 6554, 5710),\n    COL_VERTEX(5017, -7217, 2562),\n    COL_VERTEX(5017, -7269, 2048),\n    COL_VERTEX(4403, -7217, 2562),\n    COL_VERTEX(4403, -7269, 2048),\n    COL_VERTEX(5120, -7115, 2562),\n    COL_VERTEX(5120, -7167, 2048),\n    COL_VERTEX(4300, -7167, 2048),\n    COL_VERTEX(4300, -7115, 2562),\n    COL_VERTEX(8192, -10239, -7639),\n    COL_VERTEX(-8191, -10239, 8744),\n    COL_VERTEX(8192, -10239, 8744),\n    COL_VERTEX(-8191, -10239, -7639),\n    COL_VERTEX(-994, -5823, 1471),\n    COL_VERTEX(-994, -5823, 1573),\n    COL_VERTEX(-994, -3570, 1573),\n    COL_VERTEX(-994, -3570, 1471),\n    COL_VERTEX(-892, -3468, 1471),\n    COL_VERTEX(-892, -5823, 1471),\n    COL_VERTEX(-892, -5823, 1573),\n    COL_VERTEX(-892, -3468, 1573),\n    COL_VERTEX(-2018, -3468, 1573),\n    COL_VERTEX(-1916, -3570, 1573),\n    COL_VERTEX(120, -959, -5506),\n    COL_VERTEX(-459, -908, -6657),\n    COL_VERTEX(-699, -908, -6325),\n    COL_VERTEX(-699, -1420, -6325),\n    COL_VERTEX(120, -1471, -5506),\n    COL_VERTEX(699, -959, -6085),\n    COL_VERTEX(-279, -805, -6906),\n    COL_VERTEX(-966, -857, -6914),\n    COL_VERTEX(-1869, -5311, 4286),\n    COL_VERTEX(-1869, -4901, 1573),\n    COL_VERTEX(-1768, -5516, 4274),\n    COL_VERTEX(-1767, -5106, 1573),\n    COL_VERTEX(-1859, -4799, 725),\n    COL_VERTEX(-1758, -5004, 742),\n    COL_VERTEX(-1468, -805, -7039),\n    COL_VERTEX(-1518, -601, -6632),\n    COL_VERTEX(-2992, -601, -7040),\n    COL_VERTEX(-2951, -601, -6632),\n    COL_VERTEX(-3975, -908, -6427),\n    COL_VERTEX(-790, -988, -5719),\n    COL_VERTEX(-3975, -396, -6427),\n    COL_VERTEX(-4108, -396, -6815),\n    COL_VERTEX(-4999, -703, -5915),\n    COL_VERTEX(-1562, -5209, 1573),\n    COL_VERTEX(-1050, -5721, 1573),\n    COL_VERTEX(-1257, -5721, 5056),\n    COL_VERTEX(-1564, -5618, 4249),\n    COL_VERTEX(-1050, -5618, 4185),\n    COL_VERTEX(-868, -5721, 4912),\n    COL_VERTEX(-860, -754, -7202),\n    COL_VERTEX(-1108, -652, -6530),\n    COL_VERTEX(-1430, -703, -7343),\n    COL_VERTEX(-1609, -988, -5719),\n    COL_VERTEX(-1917, -3275, -708),\n    COL_VERTEX(-994, -3275, -708),\n    COL_VERTEX(-994, -4287, 1778),\n    COL_VERTEX(-994, -3377, -708),\n    COL_VERTEX(-1917, -4287, 1778),\n    COL_VERTEX(-1609, -1773, -3469),\n    COL_VERTEX(-790, -1773, -3469),\n    COL_VERTEX(-1660, -2285, -2957),\n    COL_VERTEX(-841, -2763, -1220),\n    COL_VERTEX(-841, -2285, -2957),\n    COL_VERTEX(-1660, -2763, -1220),\n    COL_VERTEX(9113, -7576, 3072),\n    COL_VERTEX(4403, -7167, 3072),\n    COL_VERTEX(4300, -7052, 4338),\n    COL_VERTEX(2969, -2968, 3072),\n    COL_VERTEX(9113, -2968, 3072),\n    COL_VERTEX(5017, -6347, 3072),\n    COL_VERTEX(2969, -7576, 3072),\n    COL_VERTEX(5120, -6450, 3072),\n    COL_VERTEX(-1916, -3570, 1471),\n    COL_VERTEX(-2018, -3468, 1471),\n    COL_VERTEX(-1916, -5823, 1471),\n    COL_VERTEX(-2018, -5823, 1471),\n    COL_VERTEX(-2018, -5823, 1573),\n    COL_VERTEX(-1916, -5823, 1573),\n    COL_VERTEX(-3032, -293, -7447),\n    COL_VERTEX(-1418, -498, -7445),\n    COL_VERTEX(-4208, -293, -7105),\n    COL_VERTEX(-4241, -89, -7202),\n    COL_VERTEX(-3022, -498, -7345),\n    COL_VERTEX(-824, -549, -7298),\n    COL_VERTEX(-220, -601, -6989),\n    COL_VERTEX(6817, 6940, 7107),\n    COL_VERTEX(7263, -8191, -101),\n    COL_VERTEX(6181, -7986, -102),\n    COL_VERTEX(6106, -7986, -712),\n    COL_VERTEX(7805, -8191, 1),\n    COL_VERTEX(7228, -8191, -713),\n    COL_VERTEX(6094, -7883, -813),\n    COL_VERTEX(6094, -7269, -813),\n    COL_VERTEX(7785, -8191, -816),\n    COL_VERTEX(8192, -7548, -715),\n    COL_VERTEX(8192, -7651, 1),\n    COL_VERTEX(5628, -7883, -593),\n    COL_VERTEX(5841, -7883, -17),\n    COL_VERTEX(5147, -7781, -348),\n    COL_VERTEX(5506, -7781, 150),\n    COL_VERTEX(5270, -7679, 386),\n    COL_VERTEX(4771, -7679, 27),\n    COL_VERTEX(4526, -7576, 508),\n    COL_VERTEX(5102, -7576, 721),\n    COL_VERTEX(4407, -7474, 986),\n    COL_VERTEX(5017, -7474, 1061),\n    COL_VERTEX(4430, -6859, 473),\n    COL_VERTEX(4688, -6962, -32),\n    COL_VERTEX(4688, -7576, -32),\n    COL_VERTEX(4430, -7474, 473),\n    COL_VERTEX(4306, -7371, 974),\n    COL_VERTEX(4407, -6655, 986),\n    COL_VERTEX(4526, -6757, 508),\n    COL_VERTEX(4300, -6552, 2048),\n    COL_VERTEX(4306, -6757, 974),\n    COL_VERTEX(5102, -6757, 721),\n    COL_VERTEX(5017, -6655, 1061),\n    COL_VERTEX(4771, -6859, 27),\n    COL_VERTEX(4403, -6450, 2048),\n    COL_VERTEX(5198, -6859, 757),\n    COL_VERTEX(5119, -6757, 1074),\n    COL_VERTEX(5270, -6859, 386),\n    COL_VERTEX(5017, -6450, 2048),\n    COL_VERTEX(5198, -7474, 757),\n    COL_VERTEX(5353, -6962, 446),\n    COL_VERTEX(5353, -7576, 446),\n    COL_VERTEX(5120, -6552, 2048),\n    COL_VERTEX(5119, -7371, 1074),\n    COL_VERTEX(5087, -7679, -431),\n    COL_VERTEX(5087, -7064, -431),\n    COL_VERTEX(5147, -6962, -348),\n    COL_VERTEX(5506, -6962, 150),\n    COL_VERTEX(5566, -7679, 233),\n    COL_VERTEX(5566, -7064, 233),\n    COL_VERTEX(5593, -7167, -689),\n    COL_VERTEX(5593, -7781, -689),\n    COL_VERTEX(5628, -7064, -593),\n    COL_VERTEX(5841, -7064, -17),\n    COL_VERTEX(5877, -7167, 78),\n    COL_VERTEX(5877, -7781, 78),\n    COL_VERTEX(6106, -7167, -712),\n    COL_VERTEX(6181, -7167, -102),\n    COL_VERTEX(6194, -7269, 0),\n    COL_VERTEX(6194, -7883, 0),\n    COL_VERTEX(4403, -6347, 3072),\n    COL_VERTEX(4300, -6450, 3072),\n    COL_VERTEX(8192, -7548, -100),\n    COL_VERTEX(1604, 5123, 7106),\n    COL_VERTEX(1315, 5071, 7251),\n    COL_VERTEX(880, 5532, 7396),\n    COL_VERTEX(301, 5481, 7396),\n    COL_VERTEX(1315, 5583, 7251),\n    COL_VERTEX(1966, 5174, 6889),\n    COL_VERTEX(1604, 5635, 7106),\n    COL_VERTEX(2278, 5092, 6628),\n    COL_VERTEX(1902, 5532, 6809),\n    COL_VERTEX(2185, 5532, 6529),\n    COL_VERTEX(6285, 7098, 6140),\n    COL_VERTEX(4300, -7564, 4338),\n    COL_VERTEX(4300, -7461, 5619),\n    COL_VERTEX(5120, -7052, 4338),\n    COL_VERTEX(4300, -6949, 5619),\n    COL_VERTEX(5823, 6607, 4954),\n    COL_VERTEX(5823, 6403, 4954),\n    COL_VERTEX(5605, 6505, 4737),\n    COL_VERTEX(-6638, -89, -2946),\n    COL_VERTEX(-7045, 422, -2986),\n    COL_VERTEX(-6638, 422, -2946),\n    COL_VERTEX(-6638, 1210, -3),\n    COL_VERTEX(-6638, 1293, 2276),\n    COL_VERTEX(-1644, 4559, 6577),\n    COL_VERTEX(-2053, 4969, 6577),\n    COL_VERTEX(-104, 4713, 6577),\n    COL_VERTEX(-3975, 3750, 6577),\n    COL_VERTEX(3559, 5532, 5296),\n    COL_VERTEX(3559, 6044, 5296),\n    COL_VERTEX(3523, 6147, 4680),\n    COL_VERTEX(2690, 5635, 6165),\n    COL_VERTEX(3849, 6147, 5006),\n    COL_VERTEX(4815, -6949, 5682),\n    COL_VERTEX(-6433, 218, -3970),\n    COL_VERTEX(-6820, 218, -4103),\n    COL_VERTEX(-7457, 1805, 2276),\n    COL_VERTEX(-104, 5225, 6577),\n    COL_VERTEX(301, 4764, 6577),\n    COL_VERTEX(-1644, 5071, 7396),\n    COL_VERTEX(3849, 5635, 5006),\n    COL_VERTEX(3848, 6147, 4364),\n    COL_VERTEX(5018, -6847, 5707),\n    COL_VERTEX(4706, -6847, 6115),\n    COL_VERTEX(4221, -7359, 5936),\n    COL_VERTEX(4490, -6745, 6552),\n    COL_VERTEX(4066, -7257, 6246),\n    COL_VERTEX(4159, -6642, 6883),\n    COL_VERTEX(3543, -6540, 6614),\n    COL_VERTEX(3722, -6540, 7099),\n    COL_VERTEX(3226, -6437, 6693),\n    COL_VERTEX(3289, -6437, 7208),\n    COL_VERTEX(1457, -6130, 6693),\n    COL_VERTEX(1394, -6130, 7208),\n    COL_VERTEX(730, -6028, 6512),\n    COL_VERTEX(551, -6028, 6997),\n    COL_VERTEX(11, -5925, 6152),\n    COL_VERTEX(-294, -5925, 6576),\n    COL_VERTEX(-509, -6335, 5632),\n    COL_VERTEX(-933, -5823, 5937),\n    COL_VERTEX(3314, -6335, 7411),\n    COL_VERTEX(3793, -6437, 7291),\n    COL_VERTEX(3327, -6130, 7513),\n    COL_VERTEX(1369, -6028, 7411),\n    COL_VERTEX(480, -5925, 7189),\n    COL_VERTEX(-414, -5823, 6742),\n    COL_VERTEX(-1099, -5721, 6057),\n    COL_VERTEX(-1545, -5618, 5163),\n    COL_VERTEX(4898, -6745, 6187),\n    COL_VERTEX(4656, -6642, 6671),\n    COL_VERTEX(4278, -6540, 7049),\n    COL_VERTEX(-7457, 1210, -3),\n    COL_VERTEX(-7111, 320, -4202),\n    COL_VERTEX(-7208, 525, -4236),\n    COL_VERTEX(-5419, -89, -6497),\n    COL_VERTEX(-5478, 115, -6580),\n    COL_VERTEX(-6586, 320, -5473),\n    COL_VERTEX(-6502, 115, -5413),\n    COL_VERTEX(5999, 6964, 6289),\n    COL_VERTEX(5637, 7680, 6651),\n    COL_VERTEX(5999, 6503, 6289),\n    COL_VERTEX(6940, 7680, 5348),\n    COL_VERTEX(-5921, -498, -4994),\n    COL_VERTEX(-4999, -191, -5915),\n    COL_VERTEX(-5239, -191, -6248),\n    COL_VERTEX(-5921, 13, -4994),\n    COL_VERTEX(-6253, 13, -5233),\n    COL_VERTEX(1450, 4969, 6244),\n    COL_VERTEX(1210, 4918, 6387),\n    COL_VERTEX(1210, 5430, 6387),\n    COL_VERTEX(1000, 5379, 6492),\n    COL_VERTEX(1236, 5379, 7062),\n    COL_VERTEX(1450, 5481, 6244),\n    COL_VERTEX(1506, 5430, 6927),\n    COL_VERTEX(1000, 4867, 6492),\n    COL_VERTEX(747, 5327, 6577),\n    COL_VERTEX(839, 5327, 7143),\n    COL_VERTEX(747, 4815, 6577),\n    COL_VERTEX(-2053, 4969, 7396),\n    COL_VERTEX(-3975, 4262, 7396),\n    COL_VERTEX(-3975, 4262, 6577),\n    COL_VERTEX(-5277, 3853, 6431),\n    COL_VERTEX(-4694, 4058, 6577),\n    COL_VERTEX(-4763, 4058, 7142),\n    COL_VERTEX(-6206, 2829, 5645),\n    COL_VERTEX(-6206, 3341, 5645),\n    COL_VERTEX(-6523, 3341, 5905),\n    COL_VERTEX(-6492, 2522, 5216),\n    COL_VERTEX(-6492, 3034, 5216),\n    COL_VERTEX(-6866, 3034, 5382),\n    COL_VERTEX(-6638, 2214, 4632),\n    COL_VERTEX(-6638, 2726, 4632),\n    COL_VERTEX(-7044, 2726, 4683),\n    COL_VERTEX(-6638, 1702, 3505),\n    COL_VERTEX(-6638, 2214, 3505),\n    COL_VERTEX(-7252, 2214, 3505),\n    COL_VERTEX(4447, 5635, 4737),\n    COL_VERTEX(4718, 6147, 4364),\n    COL_VERTEX(5461, 6147, 4882),\n    COL_VERTEX(4117, 5635, 4738),\n    COL_VERTEX(4059, 6147, 4253),\n    COL_VERTEX(4236, 5635, 4679),\n    COL_VERTEX(4198, 6147, 4212),\n    COL_VERTEX(4272, 5635, 4667),\n    COL_VERTEX(4369, 6147, 4212),\n    COL_VERTEX(4295, 5635, 4667),\n    COL_VERTEX(4508, 6147, 4253),\n    COL_VERTEX(-7508, 2470, 3505),\n    COL_VERTEX(-7406, 2317, 3505),\n    COL_VERTEX(-4795, 4211, 7293),\n    COL_VERTEX(-5567, 3955, 7035),\n    COL_VERTEX(-6096, 3750, 6620),\n    COL_VERTEX(-6226, 4058, 6778),\n    COL_VERTEX(-6681, 3443, 6035),\n    COL_VERTEX(-7248, 2829, 4708),\n    COL_VERTEX(-7451, 3136, 4733),\n    COL_VERTEX(-7241, 3443, 5548),\n    COL_VERTEX(-7054, 3136, 5465),\n    COL_VERTEX(-6839, 3750, 6164),\n    COL_VERTEX(-1234, 5123, 7396),\n    COL_VERTEX(-104, 5225, 7242),\n    COL_VERTEX(1838, 5481, 6729),\n    COL_VERTEX(1677, 5532, 6020),\n    COL_VERTEX(3234, 6044, 4970),\n    COL_VERTEX(3016, 6249, 4753),\n    COL_VERTEX(3125, 6095, 4861),\n    COL_VERTEX(301, 5276, 7191),\n    COL_VERTEX(301, 5327, 7293),\n    COL_VERTEX(860, 5371, 7271),\n    COL_VERTEX(1555, 5481, 7016),\n    COL_VERTEX(1276, 5430, 7156),\n    COL_VERTEX(2111, 5788, 5586),\n    COL_VERTEX(3270, 6607, 4427),\n    COL_VERTEX(3270, 6505, 4427),\n    COL_VERTEX(3306, 6351, 4463),\n    COL_VERTEX(3415, 6198, 4572),\n    COL_VERTEX(7396, 6888, 6527),\n    COL_VERTEX(7360, 7452, 6564),\n    COL_VERTEX(6817, 7349, 7107),\n    COL_VERTEX(6853, 7452, 7071),\n    COL_VERTEX(6889, 7503, 7034),\n    COL_VERTEX(6962, 7554, 6962),\n    COL_VERTEX(7251, 7554, 6672),\n    COL_VERTEX(7324, 7503, 6600),\n    COL_VERTEX(5533, 6198, 4809),\n    COL_VERTEX(5569, 6351, 4773),\n    COL_VERTEX(5786, 6249, 4990),\n    COL_VERTEX(4808, 6198, 4240),\n    COL_VERTEX(5714, 6198, 5063),\n    COL_VERTEX(4898, 6351, 4116),\n    COL_VERTEX(4625, 6351, 3969),\n    COL_VERTEX(4929, 6505, 4074),\n    COL_VERTEX(5605, 6607, 4737),\n    COL_VERTEX(4929, 6607, 4074),\n    COL_VERTEX(3758, 6198, 4240),\n    COL_VERTEX(3668, 6351, 4115),\n    COL_VERTEX(3638, 6607, 4074),\n    COL_VERTEX(3638, 6505, 4074),\n    COL_VERTEX(3942, 6351, 3969),\n    COL_VERTEX(4001, 6198, 4111),\n    COL_VERTEX(3922, 6505, 3922),\n    COL_VERTEX(3922, 6607, 3922),\n    COL_VERTEX(4173, 6198, 4061),\n    COL_VERTEX(4149, 6351, 3909),\n    COL_VERTEX(4140, 6505, 3858),\n    COL_VERTEX(4140, 6607, 3858),\n    COL_VERTEX(4394, 6198, 4061),\n    COL_VERTEX(4418, 6351, 3909),\n    COL_VERTEX(4427, 6505, 3858),\n    COL_VERTEX(4427, 6607, 3858),\n    COL_VERTEX(4566, 6198, 4111),\n    COL_VERTEX(4645, 6505, 3922),\n    COL_VERTEX(4645, 6607, 3922),\n    COL_VERTEX(5120, -7064, 3072),\n    COL_VERTEX(5017, -7167, 3072),\n    COL_VERTEX(1059, -1061, -4566),\n    COL_VERTEX(1638, -1061, -5145),\n    COL_VERTEX(3549, 1005, -5754),\n    COL_VERTEX(1015, 1005, -3220),\n    COL_VERTEX(-1555, -5106, 775),\n    COL_VERTEX(-2951, -1113, -6632),\n    COL_VERTEX(-1608, -1090, -5719),\n    COL_VERTEX(-1608, -1875, -3469),\n    COL_VERTEX(-1050, -5209, 1573),\n    COL_VERTEX(-1050, -5106, 857),\n    COL_VERTEX(-1050, -5618, 857),\n    COL_VERTEX(-1050, -6130, 4185),\n    COL_VERTEX(-868, -6233, 4912),\n    COL_VERTEX(-1609, -1500, -5719),\n    COL_VERTEX(-789, -1875, -3469),\n    COL_VERTEX(-1916, -3377, -708),\n    COL_VERTEX(-994, -4389, 1778),\n    COL_VERTEX(-1916, -4389, 1778),\n    COL_VERTEX(-789, -1090, -5719),\n    COL_VERTEX(-840, -2387, -2957),\n    COL_VERTEX(-1659, -2387, -2957),\n    COL_VERTEX(-840, -2865, -1220),\n    COL_VERTEX(-1659, -2865, -1220),\n    COL_VERTEX(4300, -7064, 3072),\n    COL_VERTEX(4403, -7679, 3072),\n    COL_VERTEX(2969, -2968, 512),\n    COL_VERTEX(2969, -7576, 512),\n    COL_VERTEX(7396, 6940, 6527),\n    COL_VERTEX(7659, -8191, -26),\n    COL_VERTEX(8192, -8191, 1),\n    COL_VERTEX(7228, -8191, -383),\n    COL_VERTEX(7427, -8191, -751),\n    COL_VERTEX(8192, -8191, -817),\n    COL_VERTEX(8192, -7651, -817),\n    COL_VERTEX(880, 5020, 7396),\n    COL_VERTEX(1966, 5686, 6889),\n    COL_VERTEX(2278, 5604, 6628),\n    COL_VERTEX(2690, 5123, 6165),\n    COL_VERTEX(6430, 7201, 5996),\n    COL_VERTEX(6285, 7201, 6140),\n    COL_VERTEX(6430, 7098, 5996),\n    COL_VERTEX(4221, -6847, 5936),\n    COL_VERTEX(2220, 5635, 5694),\n    COL_VERTEX(4066, -6745, 6246),\n    COL_VERTEX(-6433, -293, -3970),\n    COL_VERTEX(-6638, 698, -3),\n    COL_VERTEX(-6638, 1805, 2276),\n    COL_VERTEX(-1644, 5071, 6577),\n    COL_VERTEX(-1234, 5123, 6577),\n    COL_VERTEX(-2053, 4457, 6577),\n    COL_VERTEX(-7351, 525, -3016),\n    COL_VERTEX(-4694, 3546, 6577),\n    COL_VERTEX(301, 5276, 6577),\n    COL_VERTEX(4117, 6147, 4738),\n    COL_VERTEX(5120, -6642, 5720),\n    COL_VERTEX(4236, 6147, 4679),\n    COL_VERTEX(3853, -6642, 6459),\n    COL_VERTEX(3853, -7154, 6459),\n    COL_VERTEX(3543, -7052, 6614),\n    COL_VERTEX(3226, -6949, 6693),\n    COL_VERTEX(1457, -6642, 6693),\n    COL_VERTEX(730, -6540, 6512),\n    COL_VERTEX(11, -6437, 6152),\n    COL_VERTEX(-509, -5823, 5632),\n    COL_VERTEX(3829, -6233, 7387),\n    COL_VERTEX(4338, -6335, 7133),\n    COL_VERTEX(1356, -5823, 7513),\n    COL_VERTEX(444, -5721, 7285),\n    COL_VERTEX(-473, -5618, 6825),\n    COL_VERTEX(-1182, -5516, 6117),\n    COL_VERTEX(-1641, -5413, 5198),\n    COL_VERTEX(4994, -6540, 6222),\n    COL_VERTEX(4739, -6437, 6731),\n    COL_VERTEX(-7453, 730, -3026),\n    COL_VERTEX(6035, 7066, 6253),\n    COL_VERTEX(6071, 7117, 6216),\n    COL_VERTEX(6144, 7168, 6144),\n    COL_VERTEX(5637, 6503, 6651),\n    COL_VERTEX(6433, 7168, 5854),\n    COL_VERTEX(6506, 7117, 5782),\n    COL_VERTEX(6542, 7066, 5746),\n    COL_VERTEX(6578, 6964, 5710),\n    COL_VERTEX(6578, 6503, 5710),\n    COL_VERTEX(6940, 6503, 5348),\n    COL_VERTEX(-5485, 3853, 6899),\n    COL_VERTEX(-5277, 3341, 6431),\n    COL_VERTEX(-5706, 3136, 6145),\n    COL_VERTEX(-5706, 3648, 6145),\n    COL_VERTEX(-5966, 3648, 6461),\n    COL_VERTEX(4447, 6147, 4737),\n    COL_VERTEX(4331, 6147, 4679),\n    COL_VERTEX(4331, 5635, 4679),\n    COL_VERTEX(5026, 6147, 5316),\n    COL_VERTEX(4272, 6147, 4667),\n    COL_VERTEX(4295, 6147, 4667),\n    COL_VERTEX(-5609, 4109, 7129),\n    COL_VERTEX(-121, 5329, 7418),\n    COL_VERTEX(2980, 6403, 4717),\n    COL_VERTEX(2980, 6505, 4717),\n    COL_VERTEX(7396, 7349, 6527),\n    COL_VERTEX(6817, 6888, 7107),\n    COL_VERTEX(5243, 6198, 5533),\n    COL_VERTEX(1059, -1573, -4566),\n    COL_VERTEX(1638, -1573, -5145),\n    COL_VERTEX(3549, -5138, -5754),\n    COL_VERTEX(1015, -5138, -3220),\n    COL_TRI_INIT(SURFACE_DEFAULT, 687),\n    COL_TRI(16, 17, 18),\n    COL_TRI(16, 18, 19),\n    COL_TRI(20, 21, 16),\n    COL_TRI(20, 16, 19),\n    COL_TRI(18, 17, 22),\n    COL_TRI(18, 23, 24),\n    COL_TRI(24, 25, 18),\n    COL_TRI(18, 22, 23),\n    COL_TRI(19, 18, 25),\n    COL_TRI(26, 27, 28),\n    COL_TRI(29, 30, 26),\n    COL_TRI(29, 26, 28),\n    COL_TRI(20, 23, 22),\n    COL_TRI(20, 22, 21),\n    COL_TRI(37, 36, 49),\n    COL_TRI(32, 27, 31),\n    COL_TRI(31, 90, 32),\n    COL_TRI(26, 31, 27),\n    COL_TRI(32, 33, 27),\n    COL_TRI(33, 28, 27),\n    COL_TRI(34, 36, 37),\n    COL_TRI(35, 34, 37),\n    COL_TRI(36, 52, 49),\n    COL_TRI(41, 43, 58),\n    COL_TRI(38, 35, 37),\n    COL_TRI(38, 37, 39),\n    COL_TRI(39, 37, 351),\n    COL_TRI(37, 49, 351),\n    COL_TRI(40, 42, 43),\n    COL_TRI(41, 40, 43),\n    COL_TRI(42, 47, 46),\n    COL_TRI(43, 42, 46),\n    COL_TRI(44, 352, 43),\n    COL_TRI(44, 43, 46),\n    COL_TRI(49, 356, 351),\n    COL_TRI(45, 56, 41),\n    COL_TRI(45, 41, 58),\n    COL_TRI(41, 56, 40),\n    COL_TRI(46, 47, 235),\n    COL_TRI(47, 236, 235),\n    COL_TRI(48, 46, 235),\n    COL_TRI(48, 44, 46),\n    COL_TRI(49, 355, 356),\n    COL_TRI(50, 357, 356),\n    COL_TRI(50, 356, 355),\n    COL_TRI(51, 53, 52),\n    COL_TRI(52, 355, 49),\n    COL_TRI(52, 53, 355),\n    COL_TRI(51, 54, 53),\n    COL_TRI(53, 50, 355),\n    COL_TRI(53, 358, 50),\n    COL_TRI(54, 358, 53),\n    COL_TRI(54, 359, 358),\n    COL_TRI(55, 40, 33),\n    COL_TRI(32, 55, 33),\n    COL_TRI(58, 354, 64),\n    COL_TRI(56, 28, 33),\n    COL_TRI(40, 56, 33),\n    COL_TRI(55, 57, 40),\n    COL_TRI(57, 42, 40),\n    COL_TRI(43, 360, 58),\n    COL_TRI(43, 352, 360),\n    COL_TRI(58, 64, 45),\n    COL_TRI(58, 353, 354),\n    COL_TRI(59, 61, 60),\n    COL_TRI(60, 62, 362),\n    COL_TRI(60, 362, 59),\n    COL_TRI(61, 62, 60),\n    COL_TRI(61, 363, 62),\n    COL_TRI(62, 363, 364),\n    COL_TRI(62, 364, 362),\n    COL_TRI(59, 362, 364),\n    COL_TRI(59, 63, 61),\n    COL_TRI(59, 364, 63),\n    COL_TRI(63, 363, 61),\n    COL_TRI(63, 364, 363),\n    COL_TRI(64, 65, 45),\n    COL_TRI(65, 361, 365),\n    COL_TRI(65, 365, 45),\n    COL_TRI(64, 361, 65),\n    COL_TRI(71, 76, 70),\n    COL_TRI(64, 354, 361),\n    COL_TRI(66, 67, 68),\n    COL_TRI(67, 366, 68),\n    COL_TRI(68, 366, 367),\n    COL_TRI(68, 367, 66),\n    COL_TRI(67, 368, 366),\n    COL_TRI(66, 367, 369),\n    COL_TRI(66, 69, 67),\n    COL_TRI(66, 369, 69),\n    COL_TRI(69, 368, 67),\n    COL_TRI(69, 369, 368),\n    COL_TRI(70, 346, 71),\n    COL_TRI(76, 73, 372),\n    COL_TRI(71, 370, 76),\n    COL_TRI(73, 76, 370),\n    COL_TRI(73, 370, 151),\n    COL_TRI(73, 151, 150),\n    COL_TRI(74, 73, 75),\n    COL_TRI(73, 150, 75),\n    COL_TRI(75, 77, 74),\n    COL_TRI(76, 372, 373),\n    COL_TRI(81, 24, 79),\n    COL_TRI(77, 345, 70),\n    COL_TRI(77, 70, 74),\n    COL_TRI(70, 345, 346),\n    COL_TRI(20, 19, 78),\n    COL_TRI(19, 25, 78),\n    COL_TRI(78, 79, 20),\n    COL_TRI(79, 23, 20),\n    COL_TRI(79, 24, 23),\n    COL_TRI(78, 80, 79),\n    COL_TRI(80, 81, 79),\n    COL_TRI(24, 82, 83),\n    COL_TRI(24, 83, 25),\n    COL_TRI(81, 82, 24),\n    COL_TRI(78, 25, 83),\n    COL_TRI(78, 83, 80),\n    COL_TRI(84, 87, 86),\n    COL_TRI(85, 84, 88),\n    COL_TRI(84, 86, 88),\n    COL_TRI(86, 226, 236),\n    COL_TRI(86, 236, 47),\n    COL_TRI(87, 226, 86),\n    COL_TRI(88, 86, 47),\n    COL_TRI(91, 374, 2),\n    COL_TRI(57, 88, 42),\n    COL_TRI(85, 88, 57),\n    COL_TRI(88, 47, 42),\n    COL_TRI(87, 227, 226),\n    COL_TRI(89, 85, 57),\n    COL_TRI(89, 57, 55),\n    COL_TRI(90, 89, 55),\n    COL_TRI(90, 55, 32),\n    COL_TRI(91, 2, 1),\n    COL_TRI(92, 93, 375),\n    COL_TRI(93, 95, 375),\n    COL_TRI(93, 149, 95),\n    COL_TRI(94, 93, 92),\n    COL_TRI(95, 101, 376),\n    COL_TRI(95, 148, 101),\n    COL_TRI(95, 149, 148),\n    COL_TRI(96, 94, 377),\n    COL_TRI(94, 92, 377),\n    COL_TRI(97, 94, 96),\n    COL_TRI(98, 97, 99),\n    COL_TRI(99, 97, 378),\n    COL_TRI(98, 99, 379),\n    COL_TRI(97, 96, 378),\n    COL_TRI(98, 379, 380),\n    COL_TRI(100, 98, 380),\n    COL_TRI(100, 146, 98),\n    COL_TRI(101, 147, 152),\n    COL_TRI(101, 148, 147),\n    COL_TRI(94, 102, 103),\n    COL_TRI(93, 94, 103),\n    COL_TRI(102, 104, 105),\n    COL_TRI(103, 102, 105),\n    COL_TRI(104, 107, 106),\n    COL_TRI(105, 104, 106),\n    COL_TRI(106, 107, 109),\n    COL_TRI(107, 108, 109),\n    COL_TRI(108, 110, 111),\n    COL_TRI(109, 108, 111),\n    COL_TRI(110, 7, 5),\n    COL_TRI(111, 110, 5),\n    COL_TRI(112, 116, 115),\n    COL_TRI(113, 115, 114),\n    COL_TRI(113, 112, 115),\n    COL_TRI(114, 115, 107),\n    COL_TRI(115, 108, 107),\n    COL_TRI(115, 116, 108),\n    COL_TRI(121, 118, 123),\n    COL_TRI(116, 110, 108),\n    COL_TRI(112, 120, 116),\n    COL_TRI(110, 116, 10),\n    COL_TRI(10, 116, 120),\n    COL_TRI(7, 110, 10),\n    COL_TRI(117, 120, 112),\n    COL_TRI(118, 117, 112),\n    COL_TRI(118, 112, 113),\n    COL_TRI(10, 120, 119),\n    COL_TRI(119, 120, 124),\n    COL_TRI(120, 117, 124),\n    COL_TRI(121, 122, 118),\n    COL_TRI(122, 117, 118),\n    COL_TRI(123, 118, 113),\n    COL_TRI(124, 117, 128),\n    COL_TRI(117, 122, 128),\n    COL_TRI(125, 126, 121),\n    COL_TRI(126, 122, 121),\n    COL_TRI(127, 121, 123),\n    COL_TRI(125, 121, 127),\n    COL_TRI(128, 122, 132),\n    COL_TRI(122, 126, 132),\n    COL_TRI(129, 126, 125),\n    COL_TRI(130, 125, 127),\n    COL_TRI(131, 129, 125),\n    COL_TRI(131, 125, 130),\n    COL_TRI(129, 133, 126),\n    COL_TRI(132, 126, 133),\n    COL_TRI(109, 111, 129),\n    COL_TRI(111, 133, 129),\n    COL_TRI(109, 129, 131),\n    COL_TRI(133, 111, 5),\n    COL_TRI(132, 133, 9),\n    COL_TRI(9, 133, 5),\n    COL_TRI(106, 109, 131),\n    COL_TRI(134, 114, 104),\n    COL_TRI(114, 107, 104),\n    COL_TRI(135, 114, 134),\n    COL_TRI(105, 106, 138),\n    COL_TRI(135, 113, 114),\n    COL_TRI(123, 113, 135),\n    COL_TRI(136, 123, 135),\n    COL_TRI(127, 123, 136),\n    COL_TRI(137, 127, 136),\n    COL_TRI(130, 127, 137),\n    COL_TRI(138, 130, 139),\n    COL_TRI(138, 131, 130),\n    COL_TRI(139, 130, 137),\n    COL_TRI(106, 131, 138),\n    COL_TRI(140, 135, 134),\n    COL_TRI(140, 134, 141),\n    COL_TRI(134, 104, 102),\n    COL_TRI(141, 134, 102),\n    COL_TRI(136, 135, 140),\n    COL_TRI(137, 136, 142),\n    COL_TRI(142, 136, 140),\n    COL_TRI(139, 137, 143),\n    COL_TRI(143, 137, 142),\n    COL_TRI(144, 139, 143),\n    COL_TRI(145, 138, 139),\n    COL_TRI(145, 139, 144),\n    COL_TRI(143, 142, 146),\n    COL_TRI(105, 138, 145),\n    COL_TRI(103, 105, 145),\n    COL_TRI(98, 141, 97),\n    COL_TRI(97, 141, 94),\n    COL_TRI(141, 102, 94),\n    COL_TRI(98, 140, 141),\n    COL_TRI(142, 140, 98),\n    COL_TRI(146, 142, 98),\n    COL_TRI(77, 9, 345),\n    COL_TRI(147, 143, 146),\n    COL_TRI(144, 143, 147),\n    COL_TRI(148, 144, 147),\n    COL_TRI(149, 145, 144),\n    COL_TRI(149, 144, 148),\n    COL_TRI(103, 145, 149),\n    COL_TRI(93, 103, 149),\n    COL_TRI(77, 132, 9),\n    COL_TRI(75, 132, 77),\n    COL_TRI(75, 128, 132),\n    COL_TRI(150, 124, 128),\n    COL_TRI(150, 128, 75),\n    COL_TRI(151, 124, 150),\n    COL_TRI(151, 119, 124),\n    COL_TRI(10, 119, 370),\n    COL_TRI(119, 151, 370),\n    COL_TRI(152, 147, 100),\n    COL_TRI(147, 146, 100),\n    COL_TRI(158, 382, 159),\n    COL_TRI(153, 157, 154),\n    COL_TRI(154, 155, 381),\n    COL_TRI(154, 157, 155),\n    COL_TRI(155, 157, 302),\n    COL_TRI(155, 302, 300),\n    COL_TRI(156, 155, 300),\n    COL_TRI(157, 159, 301),\n    COL_TRI(157, 301, 302),\n    COL_TRI(153, 159, 157),\n    COL_TRI(158, 159, 153),\n    COL_TRI(159, 382, 161),\n    COL_TRI(159, 161, 301),\n    COL_TRI(160, 382, 158),\n    COL_TRI(161, 382, 383),\n    COL_TRI(160, 383, 382),\n    COL_TRI(160, 183, 383),\n    COL_TRI(160, 384, 183),\n    COL_TRI(162, 383, 183),\n    COL_TRI(161, 383, 162),\n    COL_TRI(163, 385, 386),\n    COL_TRI(163, 387, 385),\n    COL_TRI(164, 165, 72),\n    COL_TRI(167, 185, 72),\n    COL_TRI(165, 196, 388),\n    COL_TRI(165, 388, 167),\n    COL_TRI(165, 167, 72),\n    COL_TRI(71, 72, 166),\n    COL_TRI(164, 72, 371),\n    COL_TRI(72, 71, 370),\n    COL_TRI(72, 71, 371),\n    COL_TRI(166, 72, 185),\n    COL_TRI(171, 173, 174),\n    COL_TRI(3, 168, 169),\n    COL_TRI(168, 324, 170),\n    COL_TRI(168, 170, 169),\n    COL_TRI(169, 317, 316),\n    COL_TRI(169, 316, 318),\n    COL_TRI(169, 318, 3),\n    COL_TRI(170, 317, 169),\n    COL_TRI(171, 186, 173),\n    COL_TRI(171, 391, 186),\n    COL_TRI(171, 174, 392),\n    COL_TRI(176, 396, 177),\n    COL_TRI(172, 223, 174),\n    COL_TRI(173, 172, 174),\n    COL_TRI(174, 175, 392),\n    COL_TRI(175, 174, 393),\n    COL_TRI(175, 266, 265),\n    COL_TRI(175, 393, 266),\n    COL_TRI(176, 394, 395),\n    COL_TRI(177, 394, 176),\n    COL_TRI(183, 181, 295),\n    COL_TRI(177, 396, 179),\n    COL_TRI(179, 254, 252),\n    COL_TRI(179, 398, 254),\n    COL_TRI(177, 179, 252),\n    COL_TRI(180, 181, 384),\n    COL_TRI(181, 180, 192),\n    COL_TRI(182, 181, 184),\n    COL_TRI(182, 295, 181),\n    COL_TRI(188, 393, 174),\n    COL_TRI(183, 384, 181),\n    COL_TRI(185, 167, 388),\n    COL_TRI(186, 187, 173),\n    COL_TRI(187, 172, 173),\n    COL_TRI(193, 182, 184),\n    COL_TRI(178, 189, 399),\n    COL_TRI(189, 178, 395),\n    COL_TRI(190, 178, 399),\n    COL_TRI(178, 176, 395),\n    COL_TRI(191, 395, 394),\n    COL_TRI(191, 291, 395),\n    COL_TRI(192, 400, 184),\n    COL_TRI(193, 184, 400),\n    COL_TRI(194, 401, 166),\n    COL_TRI(192, 271, 400),\n    COL_TRI(184, 181, 192),\n    COL_TRI(183, 294, 162),\n    COL_TRI(183, 389, 294),\n    COL_TRI(71, 166, 346),\n    COL_TRI(166, 345, 346),\n    COL_TRI(202, 200, 405),\n    COL_TRI(195, 388, 390),\n    COL_TRI(185, 388, 195),\n    COL_TRI(196, 390, 388),\n    COL_TRI(196, 198, 390),\n    COL_TRI(197, 390, 403),\n    COL_TRI(195, 390, 197),\n    COL_TRI(198, 403, 390),\n    COL_TRI(198, 404, 403),\n    COL_TRI(197, 403, 199),\n    COL_TRI(199, 403, 200),\n    COL_TRI(200, 403, 404),\n    COL_TRI(200, 404, 405),\n    COL_TRI(201, 200, 202),\n    COL_TRI(199, 200, 201),\n    COL_TRI(206, 409, 208),\n    COL_TRI(202, 405, 406),\n    COL_TRI(203, 202, 204),\n    COL_TRI(201, 202, 203),\n    COL_TRI(202, 407, 204),\n    COL_TRI(202, 406, 407),\n    COL_TRI(204, 407, 408),\n    COL_TRI(203, 204, 205),\n    COL_TRI(205, 204, 206),\n    COL_TRI(204, 408, 206),\n    COL_TRI(206, 408, 409),\n    COL_TRI(207, 206, 208),\n    COL_TRI(205, 206, 207),\n    COL_TRI(208, 409, 210),\n    COL_TRI(209, 208, 410),\n    COL_TRI(207, 208, 209),\n    COL_TRI(208, 210, 410),\n    COL_TRI(210, 54, 410),\n    COL_TRI(210, 359, 54),\n    COL_TRI(211, 410, 54),\n    COL_TRI(209, 410, 211),\n    COL_TRI(211, 54, 51),\n    COL_TRI(212, 214, 411),\n    COL_TRI(213, 212, 411),\n    COL_TRI(203, 212, 213),\n    COL_TRI(212, 205, 215),\n    COL_TRI(205, 207, 215),\n    COL_TRI(212, 203, 205),\n    COL_TRI(207, 216, 215),\n    COL_TRI(214, 215, 413),\n    COL_TRI(214, 212, 215),\n    COL_TRI(215, 216, 413),\n    COL_TRI(201, 203, 213),\n    COL_TRI(216, 414, 413),\n    COL_TRI(216, 217, 414),\n    COL_TRI(209, 217, 216),\n    COL_TRI(207, 209, 216),\n    COL_TRI(51, 52, 36),\n    COL_TRI(217, 415, 414),\n    COL_TRI(217, 218, 415),\n    COL_TRI(211, 218, 217),\n    COL_TRI(209, 211, 217),\n    COL_TRI(218, 416, 415),\n    COL_TRI(51, 219, 218),\n    COL_TRI(211, 51, 218),\n    COL_TRI(218, 219, 416),\n    COL_TRI(219, 417, 416),\n    COL_TRI(51, 36, 219),\n    COL_TRI(219, 36, 417),\n    COL_TRI(36, 34, 417),\n    COL_TRI(222, 412, 419),\n    COL_TRI(185, 195, 194),\n    COL_TRI(166, 185, 194),\n    COL_TRI(194, 220, 401),\n    COL_TRI(195, 220, 194),\n    COL_TRI(220, 418, 401),\n    COL_TRI(220, 221, 418),\n    COL_TRI(197, 221, 220),\n    COL_TRI(195, 197, 220),\n    COL_TRI(221, 419, 418),\n    COL_TRI(199, 222, 221),\n    COL_TRI(197, 199, 221),\n    COL_TRI(221, 222, 419),\n    COL_TRI(222, 213, 412),\n    COL_TRI(201, 213, 222),\n    COL_TRI(199, 201, 222),\n    COL_TRI(213, 411, 412),\n    COL_TRI(223, 172, 397),\n    COL_TRI(223, 397, 420),\n    COL_TRI(224, 397, 172),\n    COL_TRI(225, 420, 397),\n    COL_TRI(225, 397, 224),\n    COL_TRI(224, 172, 187),\n    COL_TRI(226, 229, 238),\n    COL_TRI(226, 238, 236),\n    COL_TRI(227, 229, 226),\n    COL_TRI(227, 228, 229),\n    COL_TRI(228, 224, 229),\n    COL_TRI(229, 187, 238),\n    COL_TRI(229, 224, 187),\n    COL_TRI(228, 225, 224),\n    COL_TRI(230, 232, 231),\n    COL_TRI(231, 421, 230),\n    COL_TRI(231, 422, 421),\n    COL_TRI(231, 423, 422),\n    COL_TRI(234, 48, 235),\n    COL_TRI(233, 425, 423),\n    COL_TRI(231, 233, 423),\n    COL_TRI(233, 426, 425),\n    COL_TRI(233, 427, 426),\n    COL_TRI(233, 428, 427),\n    COL_TRI(233, 429, 428),\n    COL_TRI(233, 430, 429),\n    COL_TRI(232, 424, 231),\n    COL_TRI(235, 236, 237),\n    COL_TRI(234, 235, 237),\n    COL_TRI(234, 186, 391),\n    COL_TRI(234, 237, 186),\n    COL_TRI(236, 238, 237),\n    COL_TRI(237, 238, 186),\n    COL_TRI(238, 187, 186),\n    COL_TRI(239, 241, 244),\n    COL_TRI(239, 240, 241),\n    COL_TRI(240, 242, 241),\n    COL_TRI(241, 245, 244),\n    COL_TRI(242, 243, 241),\n    COL_TRI(247, 298, 248),\n    COL_TRI(244, 293, 294),\n    COL_TRI(245, 293, 244),\n    COL_TRI(240, 246, 242),\n    COL_TRI(246, 247, 242),\n    COL_TRI(247, 248, 242),\n    COL_TRI(248, 243, 242),\n    COL_TRI(246, 249, 247),\n    COL_TRI(249, 399, 247),\n    COL_TRI(249, 190, 399),\n    COL_TRI(189, 298, 399),\n    COL_TRI(189, 292, 298),\n    COL_TRI(250, 394, 177),\n    COL_TRI(250, 191, 394),\n    COL_TRI(251, 250, 177),\n    COL_TRI(251, 177, 252),\n    COL_TRI(251, 252, 255),\n    COL_TRI(258, 435, 434),\n    COL_TRI(252, 254, 255),\n    COL_TRI(253, 254, 398),\n    COL_TRI(254, 253, 431),\n    COL_TRI(255, 254, 431),\n    COL_TRI(253, 398, 432),\n    COL_TRI(253, 432, 433),\n    COL_TRI(253, 433, 434),\n    COL_TRI(253, 435, 431),\n    COL_TRI(253, 434, 435),\n    COL_TRI(256, 434, 433),\n    COL_TRI(256, 257, 434),\n    COL_TRI(257, 258, 434),\n    COL_TRI(259, 257, 256),\n    COL_TRI(259, 260, 257),\n    COL_TRI(260, 261, 257),\n    COL_TRI(261, 258, 257),\n    COL_TRI(262, 260, 259),\n    COL_TRI(262, 263, 260),\n    COL_TRI(263, 264, 260),\n    COL_TRI(264, 261, 260),\n    COL_TRI(265, 263, 262),\n    COL_TRI(265, 266, 263),\n    COL_TRI(266, 267, 263),\n    COL_TRI(267, 264, 263),\n    COL_TRI(266, 188, 267),\n    COL_TRI(266, 393, 188),\n    COL_TRI(268, 436, 437),\n    COL_TRI(268, 437, 438),\n    COL_TRI(269, 437, 436),\n    COL_TRI(270, 436, 439),\n    COL_TRI(270, 269, 436),\n    COL_TRI(271, 273, 402),\n    COL_TRI(275, 277, 441),\n    COL_TRI(271, 402, 400),\n    COL_TRI(272, 400, 402),\n    COL_TRI(272, 193, 400),\n    COL_TRI(273, 275, 440),\n    COL_TRI(273, 440, 402),\n    COL_TRI(274, 272, 402),\n    COL_TRI(274, 402, 440),\n    COL_TRI(275, 441, 440),\n    COL_TRI(188, 279, 280),\n    COL_TRI(276, 274, 440),\n    COL_TRI(276, 440, 441),\n    COL_TRI(277, 437, 441),\n    COL_TRI(277, 438, 437),\n    COL_TRI(269, 278, 437),\n    COL_TRI(278, 441, 437),\n    COL_TRI(278, 276, 441),\n    COL_TRI(188, 174, 223),\n    COL_TRI(284, 442, 282),\n    COL_TRI(267, 188, 280),\n    COL_TRI(279, 287, 286),\n    COL_TRI(279, 286, 280),\n    COL_TRI(280, 286, 264),\n    COL_TRI(280, 264, 267),\n    COL_TRI(281, 255, 282),\n    COL_TRI(251, 255, 281),\n    COL_TRI(282, 255, 431),\n    COL_TRI(283, 282, 431),\n    COL_TRI(284, 282, 283),\n    COL_TRI(289, 285, 258),\n    COL_TRI(283, 431, 435),\n    COL_TRI(281, 282, 442),\n    COL_TRI(285, 283, 435),\n    COL_TRI(285, 435, 258),\n    COL_TRI(286, 261, 264),\n    COL_TRI(287, 289, 286),\n    COL_TRI(286, 289, 261),\n    COL_TRI(289, 258, 261),\n    COL_TRI(287, 288, 289),\n    COL_TRI(288, 285, 289),\n    COL_TRI(288, 290, 285),\n    COL_TRI(290, 283, 285),\n    COL_TRI(290, 284, 283),\n    COL_TRI(291, 443, 292),\n    COL_TRI(291, 189, 395),\n    COL_TRI(291, 292, 189),\n    COL_TRI(293, 162, 294),\n    COL_TRI(292, 443, 299),\n    COL_TRI(156, 299, 443),\n    COL_TRI(292, 299, 298),\n    COL_TRI(156, 300, 299),\n    COL_TRI(293, 161, 162),\n    COL_TRI(245, 161, 293),\n    COL_TRI(294, 389, 303),\n    COL_TRI(295, 297, 389),\n    COL_TRI(183, 295, 389),\n    COL_TRI(296, 303, 389),\n    COL_TRI(297, 296, 389),\n    COL_TRI(298, 300, 248),\n    COL_TRI(299, 300, 298),\n    COL_TRI(247, 399, 298),\n    COL_TRI(300, 243, 248),\n    COL_TRI(243, 301, 245),\n    COL_TRI(301, 161, 245),\n    COL_TRI(300, 302, 243),\n    COL_TRI(302, 301, 243),\n    COL_TRI(243, 245, 241),\n    COL_TRI(296, 444, 303),\n    COL_TRI(303, 444, 445),\n    COL_TRI(304, 445, 444),\n    COL_TRI(304, 444, 305),\n    COL_TRI(305, 444, 296),\n    COL_TRI(306, 296, 297),\n    COL_TRI(305, 296, 306),\n    COL_TRI(307, 297, 295),\n    COL_TRI(306, 297, 307),\n    COL_TRI(307, 295, 182),\n    COL_TRI(308, 446, 428),\n    COL_TRI(308, 428, 429),\n    COL_TRI(311, 422, 312),\n    COL_TRI(309, 428, 446),\n    COL_TRI(232, 310, 447),\n    COL_TRI(232, 230, 310),\n    COL_TRI(310, 421, 311),\n    COL_TRI(310, 230, 421),\n    COL_TRI(311, 421, 422),\n    COL_TRI(316, 319, 269),\n    COL_TRI(312, 422, 423),\n    COL_TRI(312, 423, 313),\n    COL_TRI(313, 423, 425),\n    COL_TRI(313, 425, 314),\n    COL_TRI(314, 425, 426),\n    COL_TRI(314, 426, 315),\n    COL_TRI(315, 426, 427),\n    COL_TRI(315, 427, 309),\n    COL_TRI(309, 427, 428),\n    COL_TRI(316, 269, 270),\n    COL_TRI(319, 278, 269),\n    COL_TRI(318, 270, 320),\n    COL_TRI(318, 316, 270),\n    COL_TRI(320, 270, 439),\n    COL_TRI(317, 321, 319),\n    COL_TRI(319, 342, 278),\n    COL_TRI(321, 322, 319),\n    COL_TRI(322, 342, 319),\n    COL_TRI(317, 319, 316),\n    COL_TRI(323, 321, 317),\n    COL_TRI(170, 323, 317),\n    COL_TRI(323, 322, 321),\n    COL_TRI(3, 318, 320),\n    COL_TRI(324, 325, 170),\n    COL_TRI(325, 323, 170),\n    COL_TRI(325, 343, 323),\n    COL_TRI(323, 343, 322),\n    COL_TRI(325, 344, 343),\n    COL_TRI(320, 439, 448),\n    COL_TRI(3, 448, 0),\n    COL_TRI(3, 320, 448),\n    COL_TRI(326, 307, 193),\n    COL_TRI(307, 182, 193),\n    COL_TRI(306, 307, 326),\n    COL_TRI(327, 306, 326),\n    COL_TRI(305, 306, 327),\n    COL_TRI(328, 304, 305),\n    COL_TRI(329, 305, 327),\n    COL_TRI(328, 305, 329),\n    COL_TRI(330, 327, 326),\n    COL_TRI(330, 326, 331),\n    COL_TRI(331, 326, 193),\n    COL_TRI(331, 193, 272),\n    COL_TRI(332, 327, 330),\n    COL_TRI(332, 329, 327),\n    COL_TRI(333, 328, 329),\n    COL_TRI(333, 329, 332),\n    COL_TRI(334, 331, 272),\n    COL_TRI(335, 331, 334),\n    COL_TRI(335, 330, 331),\n    COL_TRI(334, 272, 274),\n    COL_TRI(336, 330, 335),\n    COL_TRI(336, 332, 330),\n    COL_TRI(337, 332, 336),\n    COL_TRI(337, 333, 332),\n    COL_TRI(338, 334, 274),\n    COL_TRI(335, 334, 338),\n    COL_TRI(338, 274, 276),\n    COL_TRI(339, 335, 338),\n    COL_TRI(340, 335, 339),\n    COL_TRI(340, 336, 335),\n    COL_TRI(341, 336, 340),\n    COL_TRI(341, 337, 336),\n    COL_TRI(342, 338, 278),\n    COL_TRI(338, 276, 278),\n    COL_TRI(339, 338, 342),\n    COL_TRI(322, 339, 342),\n    COL_TRI(340, 339, 322),\n    COL_TRI(343, 340, 322),\n    COL_TRI(344, 340, 343),\n    COL_TRI(344, 341, 340),\n    COL_TRI(345, 8, 4),\n    COL_TRI(345, 4, 346),\n    COL_TRI(347, 449, 450),\n    COL_TRI(346, 4, 71),\n    COL_TRI(4, 6, 71),\n    COL_TRI(6, 11, 71),\n    COL_TRI(11, 370, 71),\n    COL_TRI(30, 449, 347),\n    COL_TRI(30, 347, 26),\n    COL_TRI(350, 349, 452),\n    COL_TRI(26, 347, 348),\n    COL_TRI(348, 347, 450),\n    COL_TRI(26, 348, 31),\n    COL_TRI(349, 451, 452),\n    COL_TRI_INIT(SURFACE_DEATH_PLANE, 2),\n    COL_TRI(12, 13, 14),\n    COL_TRI(12, 15, 13),\n    COL_TRI_INIT(SURFACE_INSTANT_WARP_1D, 2),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI_INIT(SURFACE_INSTANT_WARP_1E, 6),\n    COL_TRI(4, 5, 6),\n    COL_TRI(5, 7, 6),\n    COL_TRI(8, 5, 4),\n    COL_TRI(8, 9, 5),\n    COL_TRI(7, 10, 6),\n    COL_TRI(10, 11, 6),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/3/geo.inc.c",
    "content": "// 0x0E000BEC\nconst GeoLayout ttm_geo_000BEC[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND_COLOR(0x0001),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 12800, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(9, 0, 2000, 6000, 0, 0, 0, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, ttm_seg7_dl_070249A0),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, ttm_seg7_dl_07024C78),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, ttm_seg7_dl_07025F48),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(0, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/3/macro.inc.c",
    "content": "// 0x07030338 - 0x07030416\nconst MacroObject ttm_seg7_area_3_macro_objs[] = {\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/ -5414,  3830,  6571),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/ -6328,  3349,  5771),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/ -6842,  2616,  4400),\n    MACRO_OBJECT(/*preset*/ macro_1up_sliding,          /*yaw*/   0, /*pos*/ -7128,  1807,  2285),\n    MACRO_OBJECT(/*preset*/ macro_coin_line_horizontal, /*yaw*/   0, /*pos*/ -1471, -3646,  1198),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/ -2839,  -618, -6855),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/ -1242, -1448, -4400),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/ -2444,  -618, -6666),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/ -2044,  -680, -6400),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/ -1556,  -850, -6044),\n    MACRO_OBJECT(/*preset*/ macro_moving_blue_coin,     /*yaw*/   0, /*pos*/ -7066,  1199,   -44),\n    MACRO_OBJECT(/*preset*/ macro_moving_blue_coin,     /*yaw*/   0, /*pos*/ -7054,  2372,  3854),\n    MACRO_OBJECT(/*preset*/ macro_moving_blue_coin,     /*yaw*/   0, /*pos*/ -1709,  5054,  7054),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  -618, -5826,  5745),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/   -72, -5923,  6254),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/   690, -6027,  6618),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  3490, -6511,  6727),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  4327, -6849,  5963),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  4036, -6695,  6400),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  4690, -7155,  3200),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/ -3309,  -541, -6981),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/ -1300, -2672, -1550),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/4/1/model.inc.c",
    "content": "// 0x07025FF0 - 0x07026008\nstatic const Lights1 ttm_seg7_lights_07025FF0 = gdSPDefLights1(\n    0x15, 0x15, 0x15,\n    0x55, 0x55, 0x55, 0x28, 0x28, 0x28\n);\n\n// 0x07026008 - 0x07026020\nstatic const Lights1 ttm_seg7_lights_07026008 = gdSPDefLights1(\n    0x19, 0x19, 0x19,\n    0x66, 0x66, 0x66, 0x28, 0x28, 0x28\n);\n\n// 0x07026020 - 0x07026038\nstatic const Lights1 ttm_seg7_lights_07026020 = gdSPDefLights1(\n    0x1d, 0x1d, 0x1d,\n    0x77, 0x77, 0x77, 0x28, 0x28, 0x28\n);\n\n// 0x07026038 - 0x07026050\nstatic const Lights1 ttm_seg7_lights_07026038 = gdSPDefLights1(\n    0x22, 0x22, 0x22,\n    0x88, 0x88, 0x88, 0x28, 0x28, 0x28\n);\n\n// 0x07026050 - 0x07026068\nstatic const Lights1 ttm_seg7_lights_07026050 = gdSPDefLights1(\n    0x26, 0x26, 0x26,\n    0x99, 0x99, 0x99, 0x28, 0x28, 0x28\n);\n\n// 0x07026068 - 0x07026080\nstatic const Lights1 ttm_seg7_lights_07026068 = gdSPDefLights1(\n    0x2a, 0x2a, 0x2a,\n    0xaa, 0xaa, 0xaa, 0x28, 0x28, 0x28\n);\n\n// 0x07026080 - 0x07026098\nstatic const Lights1 ttm_seg7_lights_07026080 = gdSPDefLights1(\n    0x2e, 0x2e, 0x2e,\n    0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28\n);\n\n// 0x07026098 - 0x070260B0\nstatic const Lights1 ttm_seg7_lights_07026098 = gdSPDefLights1(\n    0x33, 0x33, 0x33,\n    0xcc, 0xcc, 0xcc, 0x28, 0x28, 0x28\n);\n\n// 0x070260B0 - 0x070260C8\nstatic const Lights1 ttm_seg7_lights_070260B0 = gdSPDefLights1(\n    0x37, 0x37, 0x37,\n    0xdd, 0xdd, 0xdd, 0x28, 0x28, 0x28\n);\n\n// 0x070260C8 - 0x070260E0\nstatic const Lights1 ttm_seg7_lights_070260C8 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x070260E0 - 0x070260F8\nstatic const Lights1 ttm_seg7_lights_070260E0 = gdSPDefLights1(\n    0x11, 0x11, 0x11,\n    0x44, 0x44, 0x44, 0x28, 0x28, 0x28\n);\n\n// 0x070260F8 - 0x07026110\nstatic const Lights1 ttm_seg7_lights_070260F8 = gdSPDefLights1(\n    0x3b, 0x3b, 0x3b,\n    0xee, 0xee, 0xee, 0x28, 0x28, 0x28\n);\n\n// 0x07026110 - 0x07026128\nstatic const Lights1 ttm_seg7_lights_07026110 = gdSPDefLights1(\n    0x00, 0x00, 0x00,\n    0x00, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x07026128 - 0x07026228\nstatic const Vtx ttm_seg7_vertex_07026128[] = {\n    {{{ -3071,   4944,   2971}, 0, {   958,    100}, {0x1d, 0x74, 0xd9, 0xff}}},\n    {{{ -3071,   5046,   3073}, 0, {   990,      0}, {0x0d, 0x30, 0x8c, 0xff}}},\n    {{{ -1842,   4671,   3097}, 0, {    18,    102}, {0x1c, 0x59, 0xab, 0xff}}},\n    {{{ -3071,   4944,   2971}, 0, {     0,     92}, {0x1d, 0x74, 0xd9, 0xff}}},\n    {{{ -5082,   5325,   2969}, 0, {   982,     98}, {0x14, 0x6e, 0xc5, 0xff}}},\n    {{{ -3071,   5046,   3073}, 0, {    16,    -38}, {0x0d, 0x30, 0x8c, 0xff}}},\n    {{{ -5069,   5428,   3071}, 0, {   990,      0}, {0xfa, 0x2f, 0x8b, 0xff}}},\n    {{{ -3071,   5046,   2254}, 0, {     0,    990}, {0x0c, 0x2f, 0x75, 0xff}}},\n    {{{ -5169,   5428,   2258}, 0, {   990,    990}, {0x12, 0x30, 0x74, 0xff}}},\n    {{{ -3071,   4944,   2356}, 0, {     0,    864}, {0x1e, 0x6d, 0x37, 0xff}}},\n    {{{ -5157,   5325,   2359}, 0, {   982,    864}, {0x1f, 0x75, 0x24, 0xff}}},\n    {{{ -3071,   5046,   2254}, 0, {   990,    990}, {0x0c, 0x2f, 0x75, 0xff}}},\n    {{{ -3071,   4944,   2356}, 0, {   958,    868}, {0x1e, 0x6d, 0x37, 0xff}}},\n    {{{ -1842,   4510,   2391}, 0, {     0,    990}, {0x1a, 0x54, 0x5b, 0xff}}},\n    {{{ -1842,   4451,   2523}, 0, {   -48,    828}, {0x29, 0x77, 0x03, 0xff}}},\n    {{{ -1842,   4803,   3156}, 0, {    58,     20}, {0x02, 0x04, 0x82, 0xff}}},\n};\n\n// 0x07026228 - 0x07026328\nstatic const Vtx ttm_seg7_vertex_07026228[] = {\n    {{{ -1842,   4510,   2391}, 0, {   990,    990}, {0x1a, 0x54, 0x5b, 0xff}}},\n    {{{ -1842,   4451,   2523}, 0, {   960,    862}, {0x29, 0x77, 0x03, 0xff}}},\n    {{{  -613,   4035,   2547}, 0, {     0,    990}, {0x22, 0x6c, 0x38, 0xff}}},\n    {{{  -613,   4023,   2691}, 0, {   -48,    828}, {0x27, 0x72, 0xdb, 0xff}}},\n    {{{  -613,   4418,   3162}, 0, {     8,    104}, {0x11, 0x39, 0x91, 0xff}}},\n    {{{ -1842,   4803,   3156}, 0, {   990,      0}, {0x02, 0x04, 0x82, 0xff}}},\n    {{{  -613,   4562,   3175}, 0, {    46,     26}, {0xf5, 0xdb, 0x88, 0xff}}},\n    {{{ -1842,   4671,   3097}, 0, {   960,     94}, {0x1c, 0x59, 0xab, 0xff}}},\n    {{{ -6575,   5735,   3039}, 0, {     0,    990}, {0x60, 0x30, 0x42, 0xff}}},\n    {{{ -6833,   5837,   3545}, 0, {   990,    990}, {0x6f, 0x30, 0x24, 0xff}}},\n    {{{ -6492,   5632,   3099}, 0, {   -16,    866}, {0x34, 0x73, 0x05, 0xff}}},\n    {{{ -6737,   5735,   3580}, 0, {   958,    864}, {0x34, 0x73, 0xf8, 0xff}}},\n    {{{ -5993,   5632,   3458}, 0, {   272,    104}, {0xf1, 0x72, 0xcb, 0xff}}},\n    {{{ -6161,   5735,   3793}, 0, {   958,     98}, {0xe1, 0x72, 0xd3, 0xff}}},\n    {{{ -5910,   5735,   3518}, 0, {   352,    -26}, {0xa6, 0x2f, 0xb5, 0xff}}},\n    {{{ -6065,   5837,   3829}, 0, {   990,      0}, {0x96, 0x2f, 0xcf, 0xff}}},\n};\n\n// 0x07026328 - 0x07026428\nstatic const Vtx ttm_seg7_vertex_07026328[] = {\n    {{{ -6176,   5632,   2640}, 0, {     0,    990}, {0x47, 0x30, 0x5d, 0xff}}},\n    {{{ -6575,   5735,   3039}, 0, {   990,    990}, {0x60, 0x30, 0x42, 0xff}}},\n    {{{ -6116,   5530,   2723}, 0, {    -8,    866}, {0x30, 0x73, 0x15, 0xff}}},\n    {{{ -6492,   5632,   3099}, 0, {   956,    866}, {0x34, 0x73, 0x05, 0xff}}},\n    {{{ -5757,   5530,   3222}, 0, {   336,    100}, {0x00, 0x72, 0xc9, 0xff}}},\n    {{{ -5993,   5632,   3458}, 0, {   956,    100}, {0xf1, 0x72, 0xcb, 0xff}}},\n    {{{ -5697,   5632,   3305}, 0, {   428,    -30}, {0xc3, 0x2f, 0x9c, 0xff}}},\n    {{{ -5910,   5735,   3518}, 0, {   990,      0}, {0xa6, 0x2f, 0xb5, 0xff}}},\n    {{{ -5670,   5530,   2382}, 0, {     0,    990}, {0x2d, 0x2f, 0x6c, 0xff}}},\n    {{{ -6176,   5632,   2640}, 0, {   990,    990}, {0x47, 0x30, 0x5d, 0xff}}},\n    {{{ -5635,   5428,   2478}, 0, {   -16,    866}, {0x28, 0x73, 0x22, 0xff}}},\n    {{{ -6116,   5530,   2723}, 0, {   958,    866}, {0x30, 0x73, 0x15, 0xff}}},\n    {{{ -5422,   5428,   3054}, 0, {   272,     96}, {0x0f, 0x72, 0xcb, 0xff}}},\n    {{{ -5757,   5530,   3222}, 0, {   958,    100}, {0x00, 0x72, 0xc9, 0xff}}},\n    {{{ -5386,   5530,   3150}, 0, {   354,    -36}, {0xe1, 0x2f, 0x8f, 0xff}}},\n    {{{ -5697,   5632,   3305}, 0, {   990,      0}, {0xc3, 0x2f, 0x9c, 0xff}}},\n};\n\n// 0x07026428 - 0x070264A8\nstatic const Vtx ttm_seg7_vertex_07026428[] = {\n    {{{ -5169,   5428,   2258}, 0, {     0,    990}, {0x12, 0x30, 0x74, 0xff}}},\n    {{{ -5670,   5530,   2382}, 0, {   990,    990}, {0x2d, 0x2f, 0x6c, 0xff}}},\n    {{{ -5157,   5325,   2359}, 0, {   -26,    866}, {0x1f, 0x75, 0x24, 0xff}}},\n    {{{ -5422,   5428,   3054}, 0, {   950,     98}, {0x0f, 0x72, 0xcb, 0xff}}},\n    {{{ -5386,   5530,   3150}, 0, {   990,      0}, {0xe1, 0x2f, 0x8f, 0xff}}},\n    {{{ -5069,   5428,   3071}, 0, {   328,    -30}, {0xfa, 0x2f, 0x8b, 0xff}}},\n    {{{ -5635,   5428,   2478}, 0, {   950,    864}, {0x28, 0x73, 0x22, 0xff}}},\n    {{{ -5082,   5325,   2969}, 0, {   244,    100}, {0x14, 0x6e, 0xc5, 0xff}}},\n};\n\n// 0x070264A8 - 0x07026568\nstatic const Vtx ttm_seg7_vertex_070264A8[] = {\n    {{{   600,   4186,   3172}, 0, {     8,    112}, {0x03, 0x10, 0x83, 0xff}}},\n    {{{  -613,   4562,   3175}, 0, {   990,      0}, {0xf5, 0xdb, 0x88, 0xff}}},\n    {{{   600,   4326,   3134}, 0, {    42,     42}, {0xe9, 0xb5, 0x9d, 0xff}}},\n    {{{  -613,   4418,   3162}, 0, {   962,     92}, {0x11, 0x39, 0x91, 0xff}}},\n    {{{ -6833,   5837,   3545}, 0, {     0,    990}, {0x6f, 0x30, 0x24, 0xff}}},\n    {{{ -6957,   5940,   4046}, 0, {   990,    990}, {0x75, 0x2f, 0x09, 0xff}}},\n    {{{ -6737,   5735,   3580}, 0, {   -26,    866}, {0x34, 0x73, 0xf8, 0xff}}},\n    {{{ -6856,   5837,   4058}, 0, {   950,    866}, {0x31, 0x73, 0xee, 0xff}}},\n    {{{ -6161,   5735,   3793}, 0, {   244,     98}, {0xe1, 0x72, 0xd3, 0xff}}},\n    {{{ -6246,   5837,   4133}, 0, {   950,     98}, {0xd7, 0x72, 0xdd, 0xff}}},\n    {{{ -6065,   5837,   3829}, 0, {   328,      0}, {0x96, 0x2f, 0xcf, 0xff}}},\n    {{{ -6144,   5940,   4146}, 0, {   990,      0}, {0x8d, 0x30, 0xeb, 0xff}}},\n};\n\n// 0x07026568 - 0x07026668\nstatic const Vtx ttm_seg7_vertex_07026568[] = {\n    {{{  -613,   4035,   2547}, 0, {   990,    990}, {0x22, 0x6c, 0x38, 0xff}}},\n    {{{  -613,   4023,   2691}, 0, {   962,    858}, {0x27, 0x72, 0xdb, 0xff}}},\n    {{{   600,   3616,   2725}, 0, {     0,    990}, {0x26, 0x77, 0x0f, 0xff}}},\n    {{{ -3071,   4944,   2356}, 0, {     0,    864}, {0x1e, 0x6d, 0x37, 0xff}}},\n    {{{ -5157,   5325,   2359}, 0, {   982,    864}, {0x1f, 0x75, 0x24, 0xff}}},\n    {{{ -3071,   4944,   2971}, 0, {     0,     92}, {0x1d, 0x74, 0xd9, 0xff}}},\n    {{{ -5082,   5325,   2969}, 0, {   982,     98}, {0x14, 0x6e, 0xc5, 0xff}}},\n    {{{ -1842,   4451,   2523}, 0, {   -48,    828}, {0x29, 0x77, 0x03, 0xff}}},\n    {{{ -3071,   4944,   2356}, 0, {   958,    868}, {0x1e, 0x6d, 0x37, 0xff}}},\n    {{{ -3071,   4944,   2971}, 0, {   958,    100}, {0x1d, 0x74, 0xd9, 0xff}}},\n    {{{ -1842,   4671,   3097}, 0, {    18,    102}, {0x1c, 0x59, 0xab, 0xff}}},\n    {{{  -613,   4023,   2691}, 0, {   -48,    828}, {0x27, 0x72, 0xdb, 0xff}}},\n    {{{ -1842,   4451,   2523}, 0, {   960,    862}, {0x29, 0x77, 0x03, 0xff}}},\n    {{{ -1842,   4671,   3097}, 0, {   960,     94}, {0x1c, 0x59, 0xab, 0xff}}},\n    {{{  -613,   4418,   3162}, 0, {     8,    104}, {0x11, 0x39, 0x91, 0xff}}},\n    {{{   600,   3654,   2865}, 0, {   -46,    824}, {0x21, 0x60, 0xb5, 0xff}}},\n};\n\n// 0x07026668 - 0x07026758\nstatic const Vtx ttm_seg7_vertex_07026668[] = {\n    {{{   600,   4186,   3172}, 0, {   968,     90}, {0x03, 0x10, 0x83, 0xff}}},\n    {{{   600,   4326,   3134}, 0, {   990,      0}, {0xe9, 0xb5, 0x9d, 0xff}}},\n    {{{  1829,   3946,   3120}, 0, {    -2,    114}, {0xf8, 0xe9, 0x84, 0xff}}},\n    {{{  1829,   4065,   3037}, 0, {    26,     46}, {0xe4, 0x9b, 0xba, 0xff}}},\n    {{{ -6143,   6144,   5120}, 0, {   990,      0}, {0x88, 0x26, 0xfb, 0xff}}},\n    {{{ -6144,   5940,   4146}, 0, {    60,    -24}, {0x8d, 0x30, 0xeb, 0xff}}},\n    {{{ -6246,   6042,   5120}, 0, {   972,     96}, {0xd1, 0x74, 0xef, 0xff}}},\n    {{{ -6246,   5837,   4133}, 0, {    30,    102}, {0xd7, 0x72, 0xdd, 0xff}}},\n    {{{ -6860,   6042,   5120}, 0, {   972,    862}, {0x30, 0x74, 0xf0, 0xff}}},\n    {{{ -6856,   5837,   4058}, 0, {   -36,    864}, {0x31, 0x73, 0xee, 0xff}}},\n    {{{ -6963,   6144,   5120}, 0, {   990,    990}, {0x72, 0x37, 0xf9, 0xff}}},\n    {{{ -6116,   5530,   2723}, 0, {    -8,    866}, {0x30, 0x73, 0x15, 0xff}}},\n    {{{ -6492,   5632,   3099}, 0, {   956,    866}, {0x34, 0x73, 0x05, 0xff}}},\n    {{{ -5993,   5632,   3458}, 0, {   956,    100}, {0xf1, 0x72, 0xcb, 0xff}}},\n    {{{ -6957,   5940,   4046}, 0, {     0,    990}, {0x75, 0x2f, 0x09, 0xff}}},\n};\n\n// 0x07026758 - 0x07026848\nstatic const Vtx ttm_seg7_vertex_07026758[] = {\n    {{{ -5157,   5325,   2359}, 0, {   -26,    866}, {0x1f, 0x75, 0x24, 0xff}}},\n    {{{ -5635,   5428,   2478}, 0, {   950,    864}, {0x28, 0x73, 0x22, 0xff}}},\n    {{{ -5422,   5428,   3054}, 0, {   950,     98}, {0x0f, 0x72, 0xcb, 0xff}}},\n    {{{ -5082,   5325,   2969}, 0, {   244,    100}, {0x14, 0x6e, 0xc5, 0xff}}},\n    {{{ -5422,   5428,   3054}, 0, {   272,     96}, {0x0f, 0x72, 0xcb, 0xff}}},\n    {{{ -5635,   5428,   2478}, 0, {   -16,    866}, {0x28, 0x73, 0x22, 0xff}}},\n    {{{ -5757,   5530,   3222}, 0, {   958,    100}, {0x00, 0x72, 0xc9, 0xff}}},\n    {{{ -6116,   5530,   2723}, 0, {   958,    866}, {0x30, 0x73, 0x15, 0xff}}},\n    {{{ -5757,   5530,   3222}, 0, {   336,    100}, {0x00, 0x72, 0xc9, 0xff}}},\n    {{{ -6116,   5530,   2723}, 0, {    -8,    866}, {0x30, 0x73, 0x15, 0xff}}},\n    {{{ -5993,   5632,   3458}, 0, {   956,    100}, {0xf1, 0x72, 0xcb, 0xff}}},\n    {{{ -6492,   5632,   3099}, 0, {   -16,    866}, {0x34, 0x73, 0x05, 0xff}}},\n    {{{ -6737,   5735,   3580}, 0, {   958,    864}, {0x34, 0x73, 0xf8, 0xff}}},\n    {{{ -6161,   5735,   3793}, 0, {   958,     98}, {0xe1, 0x72, 0xd3, 0xff}}},\n    {{{ -5993,   5632,   3458}, 0, {   272,    104}, {0xf1, 0x72, 0xcb, 0xff}}},\n};\n\n// 0x07026848 - 0x07026928\nstatic const Vtx ttm_seg7_vertex_07026848[] = {\n    {{{   600,   3654,   2865}, 0, {   -46,    824}, {0x21, 0x60, 0xb5, 0xff}}},\n    {{{  -613,   4023,   2691}, 0, {   962,    858}, {0x27, 0x72, 0xdb, 0xff}}},\n    {{{  -613,   4418,   3162}, 0, {   962,     92}, {0x11, 0x39, 0x91, 0xff}}},\n    {{{   600,   4186,   3172}, 0, {     8,    112}, {0x03, 0x10, 0x83, 0xff}}},\n    {{{  1829,   3946,   3120}, 0, {   982,     94}, {0xf8, 0xe9, 0x84, 0xff}}},\n    {{{  1829,   4065,   3037}, 0, {   990,      0}, {0xe4, 0x9b, 0xba, 0xff}}},\n    {{{  3058,   3715,   3073}, 0, {   -30,     88}, {0xf9, 0xe6, 0x85, 0xff}}},\n    {{{ -6143,   6247,   6144}, 0, {   990,      0}, {0x93, 0x40, 0xfa, 0xff}}},\n    {{{ -6246,   6042,   5120}, 0, {   -40,     96}, {0xd1, 0x74, 0xef, 0xff}}},\n    {{{ -6246,   6144,   6144}, 0, {   980,     96}, {0xd0, 0x74, 0xf5, 0xff}}},\n    {{{ -6143,   6144,   5120}, 0, {     0,      0}, {0x88, 0x26, 0xfb, 0xff}}},\n    {{{ -6860,   6042,   5120}, 0, {   -40,    862}, {0x30, 0x74, 0xf0, 0xff}}},\n    {{{ -6963,   6144,   5120}, 0, {     0,    990}, {0x72, 0x37, 0xf9, 0xff}}},\n    {{{ -6860,   6144,   6144}, 0, {   980,    862}, {0x30, 0x74, 0xf5, 0xff}}},\n};\n\n// 0x07026928 - 0x07026998\nstatic const Vtx ttm_seg7_vertex_07026928[] = {\n    {{{ -6161,   5735,   3793}, 0, {   244,     98}, {0xe1, 0x72, 0xd3, 0xff}}},\n    {{{ -6737,   5735,   3580}, 0, {   -26,    866}, {0x34, 0x73, 0xf8, 0xff}}},\n    {{{ -6246,   5837,   4133}, 0, {   950,     98}, {0xd7, 0x72, 0xdd, 0xff}}},\n    {{{ -6963,   6144,   5120}, 0, {     0,    990}, {0x72, 0x37, 0xf9, 0xff}}},\n    {{{ -6963,   6247,   6144}, 0, {   990,    990}, {0x7a, 0x20, 0xfd, 0xff}}},\n    {{{ -6860,   6144,   6144}, 0, {   980,    862}, {0x30, 0x74, 0xf5, 0xff}}},\n    {{{ -6856,   5837,   4058}, 0, {   950,    866}, {0x31, 0x73, 0xee, 0xff}}},\n};\n\n// 0x07026998 - 0x07026A38\nstatic const Vtx ttm_seg7_vertex_07026998[] = {\n    {{{   600,   3616,   2725}, 0, {   990,    990}, {0x26, 0x77, 0x0f, 0xff}}},\n    {{{   600,   3654,   2865}, 0, {   968,    856}, {0x21, 0x60, 0xb5, 0xff}}},\n    {{{  1829,   3258,   2895}, 0, {     0,    990}, {0x20, 0x79, 0xed, 0xff}}},\n    {{{  1829,   3341,   3013}, 0, {   -42,    822}, {0x15, 0x46, 0x99, 0xff}}},\n    {{{   600,   4186,   3172}, 0, {   968,     90}, {0x03, 0x10, 0x83, 0xff}}},\n    {{{  1829,   3946,   3120}, 0, {    -2,    114}, {0xf8, 0xe9, 0x84, 0xff}}},\n    {{{ -6856,   5837,   4058}, 0, {   -36,    864}, {0x31, 0x73, 0xee, 0xff}}},\n    {{{ -6860,   6042,   5120}, 0, {   972,    862}, {0x30, 0x74, 0xf0, 0xff}}},\n    {{{ -6246,   6042,   5120}, 0, {   972,     96}, {0xd1, 0x74, 0xef, 0xff}}},\n    {{{ -6246,   5837,   4133}, 0, {    30,    102}, {0xd7, 0x72, 0xdd, 0xff}}},\n};\n\n// 0x07026A38 - 0x07026AB8\nstatic const Vtx ttm_seg7_vertex_07026A38[] = {\n    {{{  3058,   3100,   3073}, 0, {   -36,    840}, {0x09, 0x40, 0x93, 0xff}}},\n    {{{  1829,   3946,   3120}, 0, {   982,     94}, {0xf8, 0xe9, 0x84, 0xff}}},\n    {{{  3058,   3715,   3073}, 0, {   -30,     88}, {0xf9, 0xe6, 0x85, 0xff}}},\n    {{{  1829,   3341,   3013}, 0, {   982,    860}, {0x15, 0x46, 0x99, 0xff}}},\n    {{{ -6246,   6144,   6144}, 0, {   980,     96}, {0xd0, 0x74, 0xf5, 0xff}}},\n    {{{ -6246,   6042,   5120}, 0, {   -40,     96}, {0xd1, 0x74, 0xef, 0xff}}},\n    {{{ -6860,   6144,   6144}, 0, {   980,    862}, {0x30, 0x74, 0xf5, 0xff}}},\n    {{{ -6860,   6042,   5120}, 0, {   -40,    862}, {0x30, 0x74, 0xf0, 0xff}}},\n};\n\n// 0x07026AB8 - 0x07026BA8\nstatic const Vtx ttm_seg7_vertex_07026AB8[] = {\n    {{{  7010,   2588,   2429}, 0, { -1558,     34}, {0xb2, 0x4a, 0xbe, 0xff}}},\n    {{{  6714,   2640,   2724}, 0, {   872,     56}, {0xcb, 0x4a, 0xa8, 0xff}}},\n    {{{  7051,   2691,   2459}, 0, { -1532,    -54}, {0xac, 0x38, 0xb4, 0xff}}},\n    {{{  1829,   3258,   2895}, 0, {   990,    990}, {0x20, 0x79, 0xed, 0xff}}},\n    {{{  1829,   3341,   3013}, 0, {   982,    860}, {0x15, 0x46, 0x99, 0xff}}},\n    {{{  3058,   2998,   2971}, 0, {     0,    990}, {0x15, 0x71, 0xcb, 0xff}}},\n    {{{  3058,   3100,   3073}, 0, {   -36,    840}, {0x09, 0x40, 0x93, 0xff}}},\n    {{{  6317,   2691,   2923}, 0, {  -854,     46}, {0xe5, 0x4a, 0x9d, 0xff}}},\n    {{{  5918,   2742,   3022}, 0, {   928,     58}, {0xfb, 0x36, 0x8e, 0xff}}},\n    {{{  6334,   2793,   2971}, 0, {  -842,    -46}, {0xe4, 0x33, 0x90, 0xff}}},\n    {{{  5925,   2896,   3073}, 0, {   990,      0}, {0xfc, 0x28, 0x88, 0xff}}},\n    {{{  6714,   2640,   2724}, 0, {  -968,     44}, {0xcb, 0x4a, 0xa8, 0xff}}},\n    {{{  6317,   2691,   2923}, 0, {   928,     60}, {0xe5, 0x4a, 0x9d, 0xff}}},\n    {{{  6744,   2742,   2766}, 0, {  -964,    -48}, {0xc9, 0x39, 0x9e, 0xff}}},\n    {{{  6334,   2793,   2971}, 0, {   990,      0}, {0xe4, 0x33, 0x90, 0xff}}},\n};\n\n// 0x07026BA8 - 0x07026C98\nstatic const Vtx ttm_seg7_vertex_07026BA8[] = {\n    {{{  7307,   2435,   1127}, 0, {  -280,     56}, {0x9b, 0x4c, 0xf7, 0xff}}},\n    {{{  7358,   2588,   1639}, 0, {   990,      0}, {0x91, 0x39, 0xec, 0xff}}},\n    {{{  7358,   2537,   1127}, 0, {  -278,    -36}, {0x8f, 0x38, 0xf9, 0xff}}},\n    {{{  6714,   2640,   2724}, 0, {   872,     56}, {0xcb, 0x4a, 0xa8, 0xff}}},\n    {{{  6744,   2742,   2766}, 0, {   990,      0}, {0xc9, 0x39, 0x9e, 0xff}}},\n    {{{  7051,   2691,   2459}, 0, { -1532,    -54}, {0xac, 0x38, 0xb4, 0xff}}},\n    {{{  7010,   2588,   2429}, 0, {   932,     58}, {0xb2, 0x4a, 0xbe, 0xff}}},\n    {{{  7051,   2691,   2459}, 0, {   990,      0}, {0xac, 0x38, 0xb4, 0xff}}},\n    {{{  7256,   2640,   2049}, 0, {  -966,    -46}, {0x9a, 0x38, 0xcf, 0xff}}},\n    {{{  7208,   2537,   2031}, 0, {  -966,     44}, {0xa3, 0x4a, 0xd5, 0xff}}},\n    {{{  7307,   2486,   1633}, 0, {  -854,     46}, {0x9f, 0x4d, 0xe9, 0xff}}},\n    {{{  7208,   2537,   2031}, 0, {   926,     58}, {0xa3, 0x4a, 0xd5, 0xff}}},\n    {{{  7358,   2588,   1639}, 0, {  -842,    -46}, {0x91, 0x39, 0xec, 0xff}}},\n    {{{  7256,   2640,   2049}, 0, {   990,      0}, {0x9a, 0x38, 0xcf, 0xff}}},\n    {{{  7307,   2486,   1633}, 0, {   972,     60}, {0x9f, 0x4d, 0xe9, 0xff}}},\n};\n\n// 0x07026C98 - 0x07026D98\nstatic const Vtx ttm_seg7_vertex_07026C98[] = {\n    {{{  6702,   1667,  -3962}, 0, {   974,     58}, {0xa9, 0x4a, 0x35, 0xff}}},\n    {{{  6744,   1769,  -3992}, 0, {   990,      0}, {0x9e, 0x39, 0x37, 0xff}}},\n    {{{  6130,   1667,  -4606}, 0, {  -472,    -46}, {0xb4, 0x39, 0x54, 0xff}}},\n    {{{  7307,   1872,  -2347}, 0, {  -126,     56}, {0x99, 0x4a, 0x02, 0xff}}},\n    {{{  7307,   2076,  -1124}, 0, {   978,     62}, {0x96, 0x44, 0xf5, 0xff}}},\n    {{{  7358,   1974,  -2353}, 0, {  -118,    -38}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  7358,   2179,  -1124}, 0, {   990,      0}, {0x8f, 0x38, 0xf7, 0xff}}},\n    {{{  7105,   1769,  -3155}, 0, {  -320,     50}, {0x9d, 0x4a, 0x1b, 0xff}}},\n    {{{  7307,   1872,  -2347}, 0, {   976,     60}, {0x99, 0x4a, 0x02, 0xff}}},\n    {{{  7154,   1872,  -3172}, 0, {  -324,    -42}, {0x93, 0x39, 0x1c, 0xff}}},\n    {{{  7358,   1974,  -2353}, 0, {   990,      0}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  6702,   1667,  -3962}, 0, {  -346,     50}, {0xa9, 0x4a, 0x35, 0xff}}},\n    {{{  7105,   1769,  -3155}, 0, {   976,     60}, {0x9d, 0x4a, 0x1b, 0xff}}},\n    {{{  6744,   1769,  -3992}, 0, {  -354,    -42}, {0x9e, 0x39, 0x37, 0xff}}},\n    {{{  7154,   1872,  -3172}, 0, {   990,      0}, {0x93, 0x39, 0x1c, 0xff}}},\n    {{{  6100,   1564,  -4564}, 0, {  -462,     46}, {0xbe, 0x4a, 0x4e, 0xff}}},\n};\n\n// 0x07026D98 - 0x07026E78\nstatic const Vtx ttm_seg7_vertex_07026D98[] = {\n    {{{  5293,   1462,  -4968}, 0, {   974,     60}, {0xd5, 0x4a, 0x5d, 0xff}}},\n    {{{  5310,   1564,  -5016}, 0, {   990,      0}, {0xcf, 0x38, 0x66, 0xff}}},\n    {{{  4491,   1462,  -5220}, 0, {  -324,    -42}, {0xe4, 0x38, 0x6e, 0xff}}},\n    {{{  4485,   1360,  -5170}, 0, {  -320,     50}, {0xe4, 0x4d, 0x60, 0xff}}},\n    {{{  5925,   2896,   3073}, 0, {   -24,    350}, {0xfc, 0x28, 0x88, 0xff}}},\n    {{{  5918,   2742,   3022}, 0, {   -22,    506}, {0xfb, 0x36, 0x8e, 0xff}}},\n    {{{  3058,   3715,   3073}, 0, {   990,      0}, {0xf9, 0xe6, 0x85, 0xff}}},\n    {{{  5310,   1564,  -5016}, 0, {  -354,    -42}, {0xcf, 0x38, 0x66, 0xff}}},\n    {{{  5293,   1462,  -4968}, 0, {  -346,     50}, {0xd5, 0x4a, 0x5d, 0xff}}},\n    {{{  6100,   1564,  -4564}, 0, {   978,     60}, {0xbe, 0x4a, 0x4e, 0xff}}},\n    {{{  6130,   1667,  -4606}, 0, {   990,      0}, {0xb4, 0x39, 0x54, 0xff}}},\n    {{{  3262,   1104,  -5220}, 0, {  -132,     52}, {0xec, 0x77, 0x24, 0xff}}},\n    {{{  4485,   1360,  -5170}, 0, {   986,     60}, {0xe4, 0x4d, 0x60, 0xff}}},\n    {{{  4491,   1462,  -5220}, 0, {   990,      0}, {0xe4, 0x38, 0x6e, 0xff}}},\n};\n\n// 0x07026E78 - 0x07026EB8\nstatic const Vtx ttm_seg7_vertex_07026E78[] = {\n    {{{  7307,   2076,  -1124}, 0, {   -36,     62}, {0x96, 0x44, 0xf5, 0xff}}},\n    {{{  7358,   2537,   1127}, 0, {   990,      0}, {0x8f, 0x38, 0xf9, 0xff}}},\n    {{{  7358,   2179,  -1124}, 0, {     0,      0}, {0x8f, 0x38, 0xf7, 0xff}}},\n    {{{  7307,   2435,   1127}, 0, {   984,     62}, {0x9b, 0x4c, 0xf7, 0xff}}},\n};\n\n// 0x07026EB8 - 0x07026FB8\nstatic const Vtx ttm_seg7_vertex_07026EB8[] = {\n    {{{  7112,   2435,   1996}, 0, {  -896,    194}, {0xc7, 0x6b, 0xde, 0xff}}},\n    {{{  6927,   2486,   2369}, 0, {   884,    206}, {0xd2, 0x6b, 0xd0, 0xff}}},\n    {{{  7208,   2537,   2031}, 0, {  -966,     44}, {0xa3, 0x4a, 0xd5, 0xff}}},\n    {{{  6281,   2588,   2827}, 0, {  -804,    198}, {0xf6, 0x6b, 0xbe, 0xff}}},\n    {{{  5906,   2640,   2921}, 0, {   876,    208}, {0x02, 0x67, 0xb8, 0xff}}},\n    {{{  6317,   2691,   2923}, 0, {  -854,     46}, {0xe5, 0x4a, 0x9d, 0xff}}},\n    {{{  5918,   2742,   3022}, 0, {   928,     58}, {0xfb, 0x36, 0x8e, 0xff}}},\n    {{{  6654,   2537,   2641}, 0, {  -904,    194}, {0xe4, 0x6b, 0xc3, 0xff}}},\n    {{{  6281,   2588,   2827}, 0, {   878,    208}, {0xf6, 0x6b, 0xbe, 0xff}}},\n    {{{  6714,   2640,   2724}, 0, {  -968,     44}, {0xcb, 0x4a, 0xa8, 0xff}}},\n    {{{  6317,   2691,   2923}, 0, {   928,     60}, {0xe5, 0x4a, 0x9d, 0xff}}},\n    {{{  6927,   2486,   2369}, 0, { -1468,    184}, {0xd2, 0x6b, 0xd0, 0xff}}},\n    {{{  6654,   2537,   2641}, 0, {   776,    202}, {0xe4, 0x6b, 0xc3, 0xff}}},\n    {{{  7010,   2588,   2429}, 0, { -1558,     34}, {0xb2, 0x4a, 0xbe, 0xff}}},\n    {{{  6714,   2640,   2724}, 0, {   872,     56}, {0xcb, 0x4a, 0xa8, 0xff}}},\n    {{{  7010,   2588,   2429}, 0, {   932,     58}, {0xb2, 0x4a, 0xbe, 0xff}}},\n};\n\n// 0x07026FB8 - 0x070270B8\nstatic const Vtx ttm_seg7_vertex_07026FB8[] = {\n    {{{  7206,   2384,   1621}, 0, {  -806,    198}, {0xc0, 0x6b, 0xed, 0xff}}},\n    {{{  7112,   2435,   1996}, 0, {   874,    208}, {0xc7, 0x6b, 0xde, 0xff}}},\n    {{{  7307,   2486,   1633}, 0, {  -854,     46}, {0x9f, 0x4d, 0xe9, 0xff}}},\n    {{{  7208,   2537,   2031}, 0, {   926,     58}, {0xa3, 0x4a, 0xd5, 0xff}}},\n    {{{  7205,   2332,   1127}, 0, {  -262,    208}, {0xc7, 0x70, 0xf2, 0xff}}},\n    {{{  7206,   2384,   1621}, 0, {   958,    210}, {0xc0, 0x6b, 0xed, 0xff}}},\n    {{{  7307,   2435,   1127}, 0, {  -280,     56}, {0x9b, 0x4c, 0xf7, 0xff}}},\n    {{{  7307,   2486,   1633}, 0, {   972,     60}, {0x9f, 0x4d, 0xe9, 0xff}}},\n    {{{  7206,   1769,  -2334}, 0, {  -126,    208}, {0xbd, 0x6b, 0xfa, 0xff}}},\n    {{{  7205,   1974,  -1124}, 0, {   968,    214}, {0xb6, 0x65, 0xf0, 0xff}}},\n    {{{  7307,   1872,  -2347}, 0, {  -126,     56}, {0x99, 0x4a, 0x02, 0xff}}},\n    {{{  7307,   2076,  -1124}, 0, {   978,     62}, {0x96, 0x44, 0xf5, 0xff}}},\n    {{{  7009,   1667,  -3119}, 0, {  -296,    202}, {0xbe, 0x6b, 0x0b, 0xff}}},\n    {{{  7206,   1769,  -2334}, 0, {   964,    210}, {0xbd, 0x6b, 0xfa, 0xff}}},\n    {{{  7105,   1769,  -3155}, 0, {  -320,     50}, {0x9d, 0x4a, 0x1b, 0xff}}},\n    {{{  7307,   1872,  -2347}, 0, {   976,     60}, {0x99, 0x4a, 0x02, 0xff}}},\n};\n\n// 0x070270B8 - 0x070271A8\nstatic const Vtx ttm_seg7_vertex_070270B8[] = {\n    {{{  6619,   1564,  -3902}, 0, {  -318,    200}, {0xc4, 0x6b, 0x1d, 0xff}}},\n    {{{  7009,   1667,  -3119}, 0, {   966,    210}, {0xbe, 0x6b, 0x0b, 0xff}}},\n    {{{  6702,   1667,  -3962}, 0, {  -346,     50}, {0xa9, 0x4a, 0x35, 0xff}}},\n    {{{  7105,   1769,  -3155}, 0, {   976,     60}, {0x9d, 0x4a, 0x1b, 0xff}}},\n    {{{  6040,   1462,  -4481}, 0, {  -420,    196}, {0xd0, 0x6b, 0x2e, 0xff}}},\n    {{{  6619,   1564,  -3902}, 0, {   960,    208}, {0xc4, 0x6b, 0x1d, 0xff}}},\n    {{{  6100,   1564,  -4564}, 0, {  -462,     46}, {0xbe, 0x4a, 0x4e, 0xff}}},\n    {{{  5918,   2742,   3022}, 0, {   -22,    506}, {0xfb, 0x36, 0x8e, 0xff}}},\n    {{{  3058,   3100,   3073}, 0, {  1000,    786}, {0x09, 0x40, 0x93, 0xff}}},\n    {{{  3058,   3715,   3073}, 0, {   990,      0}, {0xf9, 0xe6, 0x85, 0xff}}},\n    {{{  6702,   1667,  -3962}, 0, {   974,     58}, {0xa9, 0x4a, 0x35, 0xff}}},\n    {{{  5257,   1360,  -4872}, 0, {  -314,    200}, {0xde, 0x6b, 0x3a, 0xff}}},\n    {{{  6040,   1462,  -4481}, 0, {   968,    208}, {0xd0, 0x6b, 0x2e, 0xff}}},\n    {{{  5293,   1462,  -4968}, 0, {  -346,     50}, {0xd5, 0x4a, 0x5d, 0xff}}},\n    {{{  6100,   1564,  -4564}, 0, {   978,     60}, {0xbe, 0x4a, 0x4e, 0xff}}},\n};\n\n// 0x070271A8 - 0x07027288\nstatic const Vtx ttm_seg7_vertex_070271A8[] = {\n    {{{  4472,   1257,  -5068}, 0, {  -296,    202}, {0xe7, 0x6e, 0x39, 0xff}}},\n    {{{  5257,   1360,  -4872}, 0, {   962,    210}, {0xde, 0x6b, 0x3a, 0xff}}},\n    {{{  4485,   1360,  -5170}, 0, {  -320,     50}, {0xe4, 0x4d, 0x60, 0xff}}},\n    {{{  5293,   1462,  -4968}, 0, {   974,     60}, {0xd5, 0x4a, 0x5d, 0xff}}},\n    {{{  5918,   2742,   3022}, 0, {   -22,    506}, {0xfb, 0x36, 0x8e, 0xff}}},\n    {{{  5906,   2640,   2921}, 0, {   -22,    678}, {0x02, 0x67, 0xb8, 0xff}}},\n    {{{  3058,   3100,   3073}, 0, {  1000,    786}, {0x09, 0x40, 0x93, 0xff}}},\n    {{{  3262,   1104,  -5220}, 0, {  -132,     52}, {0xec, 0x77, 0x24, 0xff}}},\n    {{{  4472,   1257,  -5068}, 0, {   984,    212}, {0xe7, 0x6e, 0x39, 0xff}}},\n    {{{  4485,   1360,  -5170}, 0, {   986,     60}, {0xe4, 0x4d, 0x60, 0xff}}},\n    {{{  7205,   1974,  -1124}, 0, {   -40,    214}, {0xb6, 0x65, 0xf0, 0xff}}},\n    {{{  7205,   2332,   1127}, 0, {   980,    214}, {0xc7, 0x70, 0xf2, 0xff}}},\n    {{{  7307,   2435,   1127}, 0, {   984,     62}, {0x9b, 0x4c, 0xf7, 0xff}}},\n    {{{  7307,   2076,  -1124}, 0, {   -36,     62}, {0x96, 0x44, 0xf5, 0xff}}},\n};\n\n// 0x07027288 - 0x07027388\nstatic const Vtx ttm_seg7_vertex_07027288[] = {\n    {{{  6968,   2384,   1942}, 0, {  -724,    388}, {0xf4, 0x7c, 0xe8, 0xff}}},\n    {{{  6802,   2435,   2279}, 0, {   882,    396}, {0xfc, 0x7b, 0xe5, 0xff}}},\n    {{{  7112,   2435,   1996}, 0, {  -896,    194}, {0xc7, 0x6b, 0xde, 0xff}}},\n    {{{  6228,   2537,   2682}, 0, {  -656,    392}, {0x09, 0x7c, 0xe7, 0xff}}},\n    {{{  5887,   2588,   2768}, 0, {   874,    398}, {0x0d, 0x79, 0xe0, 0xff}}},\n    {{{  6281,   2588,   2827}, 0, {  -804,    198}, {0xf6, 0x6b, 0xbe, 0xff}}},\n    {{{  5906,   2640,   2921}, 0, {   876,    208}, {0x02, 0x67, 0xb8, 0xff}}},\n    {{{  6564,   2486,   2517}, 0, {  -734,    388}, {0x02, 0x7c, 0xe5, 0xff}}},\n    {{{  6228,   2537,   2682}, 0, {   876,    400}, {0x09, 0x7c, 0xe7, 0xff}}},\n    {{{  6654,   2537,   2641}, 0, {  -904,    194}, {0xe4, 0x6b, 0xc3, 0xff}}},\n    {{{  6281,   2588,   2827}, 0, {   878,    208}, {0xf6, 0x6b, 0xbe, 0xff}}},\n    {{{  6802,   2435,   2279}, 0, { -1196,    378}, {0xfc, 0x7b, 0xe5, 0xff}}},\n    {{{  6564,   2486,   2517}, 0, {   770,    392}, {0x02, 0x7c, 0xe5, 0xff}}},\n    {{{  6927,   2486,   2369}, 0, { -1468,    184}, {0xd2, 0x6b, 0xd0, 0xff}}},\n    {{{  6654,   2537,   2641}, 0, {   776,    202}, {0xe4, 0x6b, 0xc3, 0xff}}},\n    {{{  6927,   2486,   2369}, 0, {   884,    206}, {0xd2, 0x6b, 0xd0, 0xff}}},\n};\n\n// 0x07027388 - 0x07027488\nstatic const Vtx ttm_seg7_vertex_07027388[] = {\n    {{{  7053,   2332,   1602}, 0, {  -658,    392}, {0xef, 0x7c, 0xee, 0xff}}},\n    {{{  6968,   2384,   1942}, 0, {   872,    400}, {0xf4, 0x7c, 0xe8, 0xff}}},\n    {{{  7206,   2384,   1621}, 0, {  -806,    198}, {0xc0, 0x6b, 0xed, 0xff}}},\n    {{{  7112,   2435,   1996}, 0, {   874,    208}, {0xc7, 0x6b, 0xde, 0xff}}},\n    {{{  7051,   2281,   1127}, 0, {  -216,    402}, {0xf1, 0x7c, 0xf0, 0xff}}},\n    {{{  7053,   2332,   1602}, 0, {   958,    402}, {0xef, 0x7c, 0xee, 0xff}}},\n    {{{  7205,   2332,   1127}, 0, {  -262,    208}, {0xc7, 0x70, 0xf2, 0xff}}},\n    {{{  7206,   2384,   1621}, 0, {   958,    210}, {0xc0, 0x6b, 0xed, 0xff}}},\n    {{{  7053,   1718,  -2316}, 0, {  -110,    400}, {0xea, 0x7c, 0xf1, 0xff}}},\n    {{{  7051,   1923,  -1124}, 0, {   966,    406}, {0xe9, 0x7b, 0xec, 0xff}}},\n    {{{  7206,   1769,  -2334}, 0, {  -126,    208}, {0xbd, 0x6b, 0xfa, 0xff}}},\n    {{{  7205,   1974,  -1124}, 0, {   968,    214}, {0xb6, 0x65, 0xf0, 0xff}}},\n    {{{  6865,   1616,  -3066}, 0, {  -242,    396}, {0xe8, 0x7c, 0xf9, 0xff}}},\n    {{{  7053,   1718,  -2316}, 0, {   962,    402}, {0xea, 0x7c, 0xf1, 0xff}}},\n    {{{  7009,   1667,  -3119}, 0, {  -296,    202}, {0xbe, 0x6b, 0x0b, 0xff}}},\n    {{{  7206,   1769,  -2334}, 0, {   964,    210}, {0xbd, 0x6b, 0xfa, 0xff}}},\n};\n\n// 0x07027488 - 0x07027588\nstatic const Vtx ttm_seg7_vertex_07027488[] = {\n    {{{  5950,   1411,  -4357}, 0, {  -338,    388}, {0xe8, 0x7c, 0x07, 0xff}}},\n    {{{  6495,   1513,  -3812}, 0, {   960,    398}, {0xe7, 0x7c, 0x00, 0xff}}},\n    {{{  6040,   1462,  -4481}, 0, {  -420,    196}, {0xd0, 0x6b, 0x2e, 0xff}}},\n    {{{  6619,   1564,  -3902}, 0, {   960,    208}, {0xc4, 0x6b, 0x1d, 0xff}}},\n    {{{  5204,   1308,  -4728}, 0, {  -254,    394}, {0xeb, 0x7c, 0x0d, 0xff}}},\n    {{{  5950,   1411,  -4357}, 0, {   968,    398}, {0xe8, 0x7c, 0x07, 0xff}}},\n    {{{  5257,   1360,  -4872}, 0, {  -314,    200}, {0xde, 0x6b, 0x3a, 0xff}}},\n    {{{  6040,   1462,  -4481}, 0, {   968,    208}, {0xd0, 0x6b, 0x2e, 0xff}}},\n    {{{  4454,   1206,  -4916}, 0, {  -242,    396}, {0xee, 0x7c, 0x0d, 0xff}}},\n    {{{  5204,   1308,  -4728}, 0, {   962,    402}, {0xeb, 0x7c, 0x0d, 0xff}}},\n    {{{  4472,   1257,  -5068}, 0, {  -296,    202}, {0xe7, 0x6e, 0x39, 0xff}}},\n    {{{  5257,   1360,  -4872}, 0, {   962,    210}, {0xde, 0x6b, 0x3a, 0xff}}},\n    {{{  3058,   3100,   3073}, 0, {  1000,    786}, {0x09, 0x40, 0x93, 0xff}}},\n    {{{  5906,   2640,   2921}, 0, {   -22,    678}, {0x02, 0x67, 0xb8, 0xff}}},\n    {{{  5887,   2588,   2768}, 0, {   -24,    802}, {0x0d, 0x79, 0xe0, 0xff}}},\n    {{{  3058,   2998,   2971}, 0, {   996,    956}, {0x15, 0x71, 0xcb, 0xff}}},\n};\n\n// 0x07027588 - 0x07027668\nstatic const Vtx ttm_seg7_vertex_07027588[] = {\n    {{{  3058,   2998,   2971}, 0, {     0,    968}, {0x15, 0x71, 0xcb, 0xff}}},\n    {{{  3058,   2998,   2868}, 0, {     0,    990}, {0x16, 0x7d, 0x00, 0xff}}},\n    {{{  1829,   3258,   2895}, 0, {   990,    990}, {0x20, 0x79, 0xed, 0xff}}},\n    {{{  4454,   1206,  -4916}, 0, {   982,    404}, {0xee, 0x7c, 0x0d, 0xff}}},\n    {{{  4472,   1257,  -5068}, 0, {   984,    212}, {0xe7, 0x6e, 0x39, 0xff}}},\n    {{{  3262,   1104,  -5220}, 0, {  -132,     52}, {0xec, 0x77, 0x24, 0xff}}},\n    {{{  6619,   1564,  -3902}, 0, {  -318,    200}, {0xc4, 0x6b, 0x1d, 0xff}}},\n    {{{  6865,   1616,  -3066}, 0, {   966,    402}, {0xe8, 0x7c, 0xf9, 0xff}}},\n    {{{  7009,   1667,  -3119}, 0, {   966,    210}, {0xbe, 0x6b, 0x0b, 0xff}}},\n    {{{  6495,   1513,  -3812}, 0, {  -258,    394}, {0xe7, 0x7c, 0x00, 0xff}}},\n    {{{  7051,   1923,  -1124}, 0, {   -40,    406}, {0xe9, 0x7b, 0xec, 0xff}}},\n    {{{  7205,   2332,   1127}, 0, {   980,    214}, {0xc7, 0x70, 0xf2, 0xff}}},\n    {{{  7205,   1974,  -1124}, 0, {   -40,    214}, {0xb6, 0x65, 0xf0, 0xff}}},\n    {{{  7051,   2281,   1127}, 0, {   980,    406}, {0xf1, 0x7c, 0xf0, 0xff}}},\n};\n\n// 0x07027668 - 0x07027758\nstatic const Vtx ttm_seg7_vertex_07027668[] = {\n    {{{ -5441,  -1865,  -5220}, 0, {     0,      0}, {0xaf, 0x44, 0x45, 0xff}}},\n    {{{ -2217,  -1279,  -4401}, 0, {   990,    990}, {0xe3, 0x6d, 0x38, 0xff}}},\n    {{{ -2217,  -1279,  -5220}, 0, {   990,      0}, {0xe0, 0x7a, 0x00, 0xff}}},\n    {{{  5644,   1411,  -3933}, 0, {     0,    990}, {0xf1, 0x7d, 0xf7, 0xff}}},\n    {{{  6071,   1513,  -3506}, 0, {   990,    990}, {0xf4, 0x7d, 0xf3, 0xff}}},\n    {{{  5950,   1411,  -4357}, 0, {  -338,    388}, {0xe8, 0x7c, 0x07, 0xff}}},\n    {{{  6495,   1513,  -3812}, 0, {   960,    398}, {0xe7, 0x7c, 0x00, 0xff}}},\n    {{{  5024,   1308,  -4243}, 0, {   990,    990}, {0xef, 0x7d, 0xfc, 0xff}}},\n    {{{  5204,   1308,  -4728}, 0, {   962,    402}, {0xeb, 0x7c, 0x0d, 0xff}}},\n    {{{  4454,   1206,  -4916}, 0, {  -242,    396}, {0xee, 0x7c, 0x0d, 0xff}}},\n    {{{  4390,   1206,  -4401}, 0, {     0,    990}, {0xf3, 0x7e, 0xff, 0xff}}},\n    {{{  6539,   1718,  -2252}, 0, {   990,    990}, {0xfd, 0x7d, 0xed, 0xff}}},\n    {{{  6865,   1616,  -3066}, 0, {  -242,    396}, {0xe8, 0x7c, 0xf9, 0xff}}},\n    {{{  6381,   1616,  -2886}, 0, {     0,    990}, {0xf9, 0x7d, 0xf0, 0xff}}},\n    {{{  7053,   1718,  -2316}, 0, {   962,    402}, {0xea, 0x7c, 0xf1, 0xff}}},\n};\n\n// 0x07027758 - 0x07027838\nstatic const Vtx ttm_seg7_vertex_07027758[] = {\n    {{{ -1218,   -799,  -4401}, 0, {   612,    990}, {0xc2, 0x55, 0x46, 0xff}}},\n    {{{  -706,   -390,  -4401}, 0, {   990,    990}, {0x23, 0x4d, 0x5d, 0xff}}},\n    {{{  -706,   -390,  -5220}, 0, {   990,      0}, {0x34, 0x73, 0x00, 0xff}}},\n    {{{ -5441,  -1865,  -5220}, 0, {     0,      0}, {0xaf, 0x44, 0x45, 0xff}}},\n    {{{ -5441,  -1865,  -4401}, 0, {     0,    990}, {0xc5, 0x31, 0x9c, 0xff}}},\n    {{{ -2217,  -1279,  -4401}, 0, {   990,    990}, {0xe3, 0x6d, 0x38, 0xff}}},\n    {{{ -2217,  -1279,  -5220}, 0, {     0,      0}, {0xe0, 0x7a, 0x00, 0xff}}},\n    {{{ -2217,  -1279,  -4401}, 0, {     0,    990}, {0xe3, 0x6d, 0x38, 0xff}}},\n    {{{ -1730,  -1106,  -5220}, 0, {   264,      0}, {0xce, 0x74, 0x00, 0xff}}},\n    {{{ -1730,  -1106,  -4401}, 0, {   264,    990}, {0xd0, 0x5d, 0x46, 0xff}}},\n    {{{ -1218,   -799,  -5220}, 0, {   612,      0}, {0xba, 0x69, 0x00, 0xff}}},\n    {{{  6968,   2384,   1942}, 0, {  -724,    388}, {0xf4, 0x7c, 0xe8, 0xff}}},\n    {{{  6483,   2384,   1763}, 0, {     0,    990}, {0x06, 0x7c, 0xe9, 0xff}}},\n    {{{  6378,   2435,   1973}, 0, {   990,    990}, {0x0d, 0x7c, 0xe9, 0xff}}},\n};\n\n// 0x07027838 - 0x07027928\nstatic const Vtx ttm_seg7_vertex_07027838[] = {\n    {{{  7051,   1923,  -1124}, 0, {   -40,    406}, {0xe9, 0x7b, 0xec, 0xff}}},\n    {{{  6539,   2281,   1127}, 0, {   990,    990}, {0x00, 0x7d, 0xee, 0xff}}},\n    {{{  7051,   2281,   1127}, 0, {   980,    406}, {0xf1, 0x7c, 0xf0, 0xff}}},\n    {{{  6539,   1923,  -1124}, 0, {     0,    990}, {0x00, 0x7d, 0xeb, 0xff}}},\n    {{{  7051,   2281,   1127}, 0, {  -216,    402}, {0xf1, 0x7c, 0xf0, 0xff}}},\n    {{{  6539,   2332,   1539}, 0, {   990,    990}, {0x01, 0x7d, 0xed, 0xff}}},\n    {{{  7053,   2332,   1602}, 0, {   958,    402}, {0xef, 0x7c, 0xee, 0xff}}},\n    {{{  6539,   2281,   1127}, 0, {     0,    990}, {0x00, 0x7d, 0xee, 0xff}}},\n    {{{  7053,   2332,   1602}, 0, {  -658,    392}, {0xef, 0x7c, 0xee, 0xff}}},\n    {{{  6483,   2384,   1763}, 0, {   990,    990}, {0x06, 0x7c, 0xe9, 0xff}}},\n    {{{  6968,   2384,   1942}, 0, {   872,    400}, {0xf4, 0x7c, 0xe8, 0xff}}},\n    {{{  6539,   2332,   1539}, 0, {     0,    990}, {0x01, 0x7d, 0xed, 0xff}}},\n    {{{  6228,   2537,   2682}, 0, {  -656,    392}, {0x09, 0x7c, 0xe7, 0xff}}},\n    {{{  6048,   2537,   2198}, 0, {     0,    990}, {0x15, 0x7c, 0xf6, 0xff}}},\n    {{{  5824,   2588,   2254}, 0, {   990,    990}, {0x14, 0x7d, 0xfc, 0xff}}},\n};\n\n// 0x07027928 - 0x07027A08\nstatic const Vtx ttm_seg7_vertex_07027928[] = {\n    {{{  6968,   2384,   1942}, 0, {  -724,    388}, {0xf4, 0x7c, 0xe8, 0xff}}},\n    {{{  6378,   2435,   1973}, 0, {   990,    990}, {0x0d, 0x7c, 0xe9, 0xff}}},\n    {{{  6802,   2435,   2279}, 0, {   882,    396}, {0xfc, 0x7b, 0xe5, 0xff}}},\n    {{{  6802,   2435,   2279}, 0, { -1196,    378}, {0xfc, 0x7b, 0xe5, 0xff}}},\n    {{{  6259,   2486,   2093}, 0, {   990,    990}, {0x13, 0x7b, 0xed, 0xff}}},\n    {{{  6564,   2486,   2517}, 0, {   770,    392}, {0x02, 0x7c, 0xe5, 0xff}}},\n    {{{  6378,   2435,   1973}, 0, {     0,    990}, {0x0d, 0x7c, 0xe9, 0xff}}},\n    {{{  6564,   2486,   2517}, 0, {  -734,    388}, {0x02, 0x7c, 0xe5, 0xff}}},\n    {{{  6259,   2486,   2093}, 0, {     0,    990}, {0x13, 0x7b, 0xed, 0xff}}},\n    {{{  6048,   2537,   2198}, 0, {   990,    990}, {0x15, 0x7c, 0xf6, 0xff}}},\n    {{{  6228,   2537,   2682}, 0, {   876,    400}, {0x09, 0x7c, 0xe7, 0xff}}},\n    {{{  6228,   2537,   2682}, 0, {  -656,    392}, {0x09, 0x7c, 0xe7, 0xff}}},\n    {{{  5824,   2588,   2254}, 0, {   990,    990}, {0x14, 0x7d, 0xfc, 0xff}}},\n    {{{  5887,   2588,   2768}, 0, {   874,    398}, {0x0d, 0x79, 0xe0, 0xff}}},\n};\n\n// 0x07027A08 - 0x07027AF8\nstatic const Vtx ttm_seg7_vertex_07027A08[] = {\n    {{{  6495,   1513,  -3812}, 0, {  -258,    394}, {0xe7, 0x7c, 0x00, 0xff}}},\n    {{{  6071,   1513,  -3506}, 0, {     0,    990}, {0xf4, 0x7d, 0xf3, 0xff}}},\n    {{{  6381,   1616,  -2886}, 0, {   990,    990}, {0xf9, 0x7d, 0xf0, 0xff}}},\n    {{{  5887,   2588,   2768}, 0, {   -24,    802}, {0x0d, 0x79, 0xe0, 0xff}}},\n    {{{  5824,   2588,   2254}, 0, {     0,    990}, {0x14, 0x7d, 0xfc, 0xff}}},\n    {{{  3058,   2998,   2868}, 0, {   990,    990}, {0x16, 0x7d, 0x00, 0xff}}},\n    {{{  3058,   2998,   2971}, 0, {   996,    956}, {0x15, 0x71, 0xcb, 0xff}}},\n    {{{  3262,   1104,  -5220}, 0, {  -132,     52}, {0xec, 0x77, 0x24, 0xff}}},\n    {{{  4390,   1206,  -4401}, 0, {   990,    990}, {0xf3, 0x7e, 0xff, 0xff}}},\n    {{{  4454,   1206,  -4916}, 0, {   982,    404}, {0xee, 0x7c, 0x0d, 0xff}}},\n    {{{  3262,   1104,  -4401}, 0, {     0,    990}, {0xed, 0x7d, 0x00, 0xff}}},\n    {{{  5204,   1308,  -4728}, 0, {  -254,    394}, {0xeb, 0x7c, 0x0d, 0xff}}},\n    {{{  5024,   1308,  -4243}, 0, {     0,    990}, {0xef, 0x7d, 0xfc, 0xff}}},\n    {{{  5644,   1411,  -3933}, 0, {   990,    990}, {0xf1, 0x7d, 0xf7, 0xff}}},\n    {{{  5950,   1411,  -4357}, 0, {   968,    398}, {0xe8, 0x7c, 0x07, 0xff}}},\n};\n\n// 0x07027AF8 - 0x07027BA8\nstatic const Vtx ttm_seg7_vertex_07027AF8[] = {\n    {{{   907,    592,  -4401}, 0, {     0,    990}, {0xe6, 0x7c, 0x00, 0xff}}},\n    {{{  3262,   1104,  -5220}, 0, {   990,      0}, {0xec, 0x77, 0x24, 0xff}}},\n    {{{   907,    592,  -5220}, 0, {     0,      0}, {0xe6, 0x7c, 0x00, 0xff}}},\n    {{{  6495,   1513,  -3812}, 0, {  -258,    394}, {0xe7, 0x7c, 0x00, 0xff}}},\n    {{{  6381,   1616,  -2886}, 0, {   990,    990}, {0xf9, 0x7d, 0xf0, 0xff}}},\n    {{{  6865,   1616,  -3066}, 0, {   966,    402}, {0xe8, 0x7c, 0xf9, 0xff}}},\n    {{{  7053,   1718,  -2316}, 0, {  -110,    400}, {0xea, 0x7c, 0xf1, 0xff}}},\n    {{{  6539,   1923,  -1124}, 0, {   990,    990}, {0x00, 0x7d, 0xeb, 0xff}}},\n    {{{  7051,   1923,  -1124}, 0, {   966,    406}, {0xe9, 0x7b, 0xec, 0xff}}},\n    {{{  6539,   1718,  -2252}, 0, {     0,    990}, {0xfd, 0x7d, 0xed, 0xff}}},\n    {{{  3262,   1104,  -4401}, 0, {   990,    990}, {0xed, 0x7d, 0x00, 0xff}}},\n};\n\n// 0x07027BA8 - 0x07027BE8\nstatic const Vtx ttm_seg7_vertex_07027BA8[] = {\n    {{{ -7489,  -1865,  -3787}, 0, { -4628,  -4630}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{ -5441,  -1865,  -5835}, 0, {  5588,   5586}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -7489,  -1865,  -5835}, 0, {  5590,  -4630}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{ -5441,  -1865,  -3787}, 0, { -4630,   5586}, {0xac, 0x2a, 0xac, 0xff}}},\n};\n\n// 0x07027BE8 - 0x07027CD8\nstatic const Vtx ttm_seg7_vertex_07027BE8[] = {\n    {{{ -5993,   6452,   3458}, 0, {  1324,     64}, {0xc6, 0x90, 0xff, 0xff}}},\n    {{{ -6161,   6554,   3793}, 0, {   636,    -38}, {0xc9, 0x8f, 0x0d, 0xff}}},\n    {{{ -6492,   6452,   3099}, 0, {   948,   1134}, {0x17, 0x8e, 0x31, 0xff}}},\n    {{{ -3071,   5763,   2971}, 0, {  2012,      0}, {0xe3, 0x8f, 0xd0, 0xff}}},\n    {{{ -5082,   6144,   2969}, 0, {    40,    -24}, {0xe0, 0x91, 0xce, 0xff}}},\n    {{{ -3071,   5763,   2356}, 0, {  2012,    990}, {0xe4, 0x8e, 0x2f, 0xff}}},\n    {{{ -5157,   6144,   2359}, 0, {     0,    990}, {0xec, 0x8b, 0x2a, 0xff}}},\n    {{{ -1842,   5436,   2804}, 0, {  2012,      0}, {0xda, 0x88, 0xfd, 0xff}}},\n    {{{ -3071,   5763,   2356}, 0, {     0,    990}, {0xe4, 0x8e, 0x2f, 0xff}}},\n    {{{ -1842,   5216,   2230}, 0, {  2012,    990}, {0xe1, 0xa7, 0x54, 0xff}}},\n    {{{ -3071,   5763,   2971}, 0, {    88,      4}, {0xe3, 0x8f, 0xd0, 0xff}}},\n    {{{  -613,   5045,   2635}, 0, {  2012,      0}, {0xdb, 0x8d, 0x25, 0xff}}},\n    {{{ -1842,   5436,   2804}, 0, {    64,     -8}, {0xda, 0x88, 0xfd, 0xff}}},\n    {{{ -1842,   5216,   2230}, 0, {     0,    990}, {0xe1, 0xa7, 0x54, 0xff}}},\n    {{{  -613,   4650,   2165}, 0, {  2012,    990}, {0xec, 0xc7, 0x6f, 0xff}}},\n};\n\n// 0x07027CD8 - 0x07027DC8\nstatic const Vtx ttm_seg7_vertex_07027CD8[] = {\n    {{{ -5757,   6349,   3222}, 0, {  2012,      0}, {0xca, 0x8f, 0xee, 0xff}}},\n    {{{ -5993,   6452,   3458}, 0, {  1324,     64}, {0xc6, 0x90, 0xff, 0xff}}},\n    {{{ -6116,   6349,   2723}, 0, {  2012,    990}, {0x06, 0x8e, 0x36, 0xff}}},\n    {{{ -6161,   6554,   3793}, 0, {   636,    -38}, {0xc9, 0x8f, 0x0d, 0xff}}},\n    {{{ -6737,   6554,   3580}, 0, {     0,    990}, {0x24, 0x8e, 0x29, 0xff}}},\n    {{{ -6492,   6452,   3099}, 0, {   948,   1134}, {0x17, 0x8e, 0x31, 0xff}}},\n    {{{ -5422,   6247,   3054}, 0, {  1284,     40}, {0xd2, 0x8f, 0xdf, 0xff}}},\n    {{{ -5635,   6247,   2478}, 0, {  1008,   1088}, {0xf9, 0x8e, 0x36, 0xff}}},\n    {{{ -5157,   6144,   2359}, 0, {  2012,    990}, {0xec, 0x8b, 0x2a, 0xff}}},\n    {{{ -5082,   6144,   2969}, 0, {  2012,      0}, {0xe0, 0x91, 0xce, 0xff}}},\n    {{{ -5757,   6349,   3222}, 0, {   548,    -22}, {0xca, 0x8f, 0xee, 0xff}}},\n    {{{ -6116,   6349,   2723}, 0, {     0,    990}, {0x06, 0x8e, 0x36, 0xff}}},\n    {{{ -3188,   -739,  -5118}, 0, {  2012,    990}, {0x54, 0xa5, 0x17, 0xff}}},\n    {{{ -3188,   -739,  -4504}, 0, {  2012,      0}, {0x6f, 0xc8, 0xe9, 0xff}}},\n    {{{ -5441,  -1148,  -4504}, 0, {     0,      0}, {0xbb, 0x9e, 0xd8, 0xff}}},\n};\n\n// 0x07027DC8 - 0x07027E38\nstatic const Vtx ttm_seg7_vertex_07027DC8[] = {\n    {{{ -5441,   -841,  -3787}, 0, { 10188,  -9230}, {0x9b, 0xbd, 0xdf, 0xff}}},\n    {{{ -7489,   -841,  -5835}, 0, {     0,    990}, {0x33, 0x99, 0x33, 0xff}}},\n    {{{ -5441,   -841,  -5835}, 0, { 10188,    990}, {0x8d, 0xe9, 0x2e, 0xff}}},\n    {{{ -3188,   -739,  -5118}, 0, {  2012,    990}, {0x54, 0xa5, 0x17, 0xff}}},\n    {{{ -5441,  -1148,  -4504}, 0, {     0,      0}, {0xbb, 0x9e, 0xd8, 0xff}}},\n    {{{ -5441,  -1148,  -5118}, 0, {     0,    990}, {0xc2, 0xa1, 0x38, 0xff}}},\n    {{{ -7489,   -841,  -3787}, 0, {     0,  -9230}, {0x54, 0xd6, 0xac, 0xff}}},\n};\n\n// 0x07027E38 - 0x07027EB8\nstatic const Vtx ttm_seg7_vertex_07027E38[] = {\n    {{{   600,   4595,   2462}, 0, {  2012,      0}, {0xe1, 0x9f, 0x4b, 0xff}}},\n    {{{  -613,   4650,   2165}, 0, {     0,    990}, {0xec, 0xc7, 0x6f, 0xff}}},\n    {{{   600,   4063,   2155}, 0, {  2012,    990}, {0xfa, 0xf0, 0x7d, 0xff}}},\n    {{{  -613,   5045,   2635}, 0, {    48,     -4}, {0xdb, 0x8d, 0x25, 0xff}}},\n    {{{ -6161,   6554,   3793}, 0, {  2012,      0}, {0xc9, 0x8f, 0x0d, 0xff}}},\n    {{{ -6246,   6656,   4133}, 0, {  1524,     70}, {0xcd, 0x8f, 0x16, 0xff}}},\n    {{{ -6737,   6554,   3580}, 0, {  2012,    990}, {0x24, 0x8e, 0x29, 0xff}}},\n    {{{ -6856,   6656,   4058}, 0, {  1340,   1126}, {0x2c, 0x8e, 0x1e, 0xff}}},\n};\n\n// 0x07027EB8 - 0x07027FB8\nstatic const Vtx ttm_seg7_vertex_07027EB8[] = {\n    {{{ -5441,  -1148,  -4504}, 0, {  2012,      0}, {0xbb, 0x9e, 0xd8, 0xff}}},\n    {{{ -3188,   -841,  -4401}, 0, {     0,    132}, {0x42, 0xd7, 0x9c, 0xff}}},\n    {{{ -5441,  -1251,  -4401}, 0, {  2008,    132}, {0x96, 0xe6, 0xc1, 0xff}}},\n    {{{  1829,   4088,   2313}, 0, {  2012,      0}, {0xed, 0xba, 0x68, 0xff}}},\n    {{{   600,   4595,   2462}, 0, {    12,     10}, {0xe1, 0x9f, 0x4b, 0xff}}},\n    {{{   600,   4063,   2155}, 0, {     0,    990}, {0xfa, 0xf0, 0x7d, 0xff}}},\n    {{{  1829,   3483,   2207}, 0, {  2012,    990}, {0x05, 0x17, 0x7c, 0xff}}},\n    {{{ -6860,   6861,   5120}, 0, {     0,   1002}, {0x3f, 0x94, 0x10, 0xff}}},\n    {{{ -6856,   6656,   4058}, 0, {  2012,    990}, {0x2c, 0x8e, 0x1e, 0xff}}},\n    {{{ -6246,   6861,   5120}, 0, {   108,    -26}, {0xe0, 0x87, 0x12, 0xff}}},\n    {{{ -6246,   6656,   4133}, 0, {  2012,      0}, {0xcd, 0x8f, 0x16, 0xff}}},\n    {{{ -3188,   -841,  -5220}, 0, {  2016,    132}, {0x42, 0xd7, 0x64, 0xff}}},\n    {{{ -3188,   -739,  -5118}, 0, {  2012,      0}, {0x54, 0xa5, 0x17, 0xff}}},\n    {{{ -5441,  -1148,  -5118}, 0, {     0,      0}, {0xc2, 0xa1, 0x38, 0xff}}},\n    {{{ -5441,  -1251,  -5220}, 0, {   -28,    132}, {0xa6, 0xdf, 0x52, 0xff}}},\n    {{{ -3188,   -739,  -4504}, 0, {     0,      0}, {0x6f, 0xc8, 0xe9, 0xff}}},\n};\n\n// 0x07027FB8 - 0x070280A8\nstatic const Vtx ttm_seg7_vertex_07027FB8[] = {\n    {{{ -5441,   -841,  -3787}, 0, { 10188,  -4120}, {0x9b, 0xbd, 0xdf, 0xff}}},\n    {{{ -5441,   -841,  -5835}, 0, {     0,  -4120}, {0x8d, 0xe9, 0x2e, 0xff}}},\n    {{{ -5441,  -1148,  -4504}, 0, {  6612,  -2586}, {0xbb, 0x9e, 0xd8, 0xff}}},\n    {{{  3058,   3715,   2254}, 0, {  2012,      0}, {0x59, 0xe5, 0x56, 0xff}}},\n    {{{  1829,   3483,   2207}, 0, {     0,    990}, {0x05, 0x17, 0x7c, 0xff}}},\n    {{{  3058,   3100,   2254}, 0, {  2012,    990}, {0x50, 0x2c, 0x57, 0xff}}},\n    {{{  1829,   4088,   2313}, 0, {   -24,    -18}, {0xed, 0xba, 0x68, 0xff}}},\n    {{{ -6860,   6964,   6144}, 0, {     0,    990}, {0x20, 0x86, 0x0c, 0xff}}},\n    {{{ -6860,   6861,   5120}, 0, {  2012,    990}, {0x3f, 0x94, 0x10, 0xff}}},\n    {{{ -6246,   6861,   5120}, 0, {  2012,      0}, {0xe0, 0x87, 0x12, 0xff}}},\n    {{{ -6246,   6964,   6144}, 0, {     0,      0}, {0xc1, 0x93, 0x0a, 0xff}}},\n    {{{ -7489,  -1865,  -5835}, 0, { 10188,    990}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{ -7489,   -841,  -3787}, 0, {     0,  -4120}, {0x54, 0xd6, 0xac, 0xff}}},\n    {{{ -7489,  -1865,  -3787}, 0, {     0,    990}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{ -7489,   -841,  -5835}, 0, { 10188,  -4120}, {0x33, 0x99, 0x33, 0xff}}},\n};\n\n// 0x070280A8 - 0x07028148\nstatic const Vtx ttm_seg7_vertex_070280A8[] = {\n    {{{ -5441,  -1251,  -4401}, 0, {  7120,  -2076}, {0x96, 0xe6, 0xc1, 0xff}}},\n    {{{ -5441,  -1865,  -3787}, 0, { 10188,    990}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{ -5441,   -841,  -3787}, 0, { 10188,  -4120}, {0x9b, 0xbd, 0xdf, 0xff}}},\n    {{{ -5441,   -841,  -5835}, 0, {     0,  -4120}, {0x8d, 0xe9, 0x2e, 0xff}}},\n    {{{ -5441,  -1865,  -5220}, 0, {  3032,    990}, {0xaf, 0x44, 0x45, 0xff}}},\n    {{{ -5441,  -1251,  -5220}, 0, {  3036,  -2076}, {0xa6, 0xdf, 0x52, 0xff}}},\n    {{{ -5441,  -1865,  -5835}, 0, {     0,    990}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -5441,  -1148,  -5118}, 0, {  3544,  -2586}, {0xc2, 0xa1, 0x38, 0xff}}},\n    {{{ -5441,  -1148,  -4504}, 0, {  6612,  -2586}, {0xbb, 0x9e, 0xd8, 0xff}}},\n    {{{ -5441,  -1865,  -4401}, 0, {  7120,    990}, {0xc5, 0x31, 0x9c, 0xff}}},\n};\n\n// 0x07028148 - 0x07028248\nstatic const Vtx ttm_seg7_vertex_07028148[] = {\n    {{{ -1842,   5377,   2936}, 0, {   -24,    146}, {0xe3, 0xad, 0xa6, 0xff}}},\n    {{{ -3071,   5763,   2971}, 0, {  2012,      0}, {0xe3, 0x8f, 0xd0, 0xff}}},\n    {{{ -1842,   5436,   2804}, 0, {   -16,     38}, {0xda, 0x88, 0xfd, 0xff}}},\n    {{{ -3071,   5763,   2356}, 0, {  2012,      0}, {0xe4, 0x8e, 0x2f, 0xff}}},\n    {{{ -5169,   6042,   2258}, 0, {     0,    132}, {0x05, 0xca, 0x72, 0xff}}},\n    {{{ -3071,   5660,   2254}, 0, {  2008,    132}, {0xf7, 0xd8, 0x78, 0xff}}},\n    {{{ -5157,   6144,   2359}, 0, {   -20,    -36}, {0xec, 0x8b, 0x2a, 0xff}}},\n    {{{ -3071,   5660,   3073}, 0, {   -36,    130}, {0xf3, 0xc9, 0x8f, 0xff}}},\n    {{{ -5082,   6144,   2969}, 0, {  2012,      0}, {0xe0, 0x91, 0xce, 0xff}}},\n    {{{ -3071,   5763,   2971}, 0, {   -40,    -36}, {0xe3, 0x8f, 0xd0, 0xff}}},\n    {{{ -5069,   6042,   3071}, 0, {  2004,    130}, {0xec, 0xda, 0x89, 0xff}}},\n    {{{ -1842,   5216,   2230}, 0, {  2012,      0}, {0xe1, 0xa7, 0x54, 0xff}}},\n    {{{ -3071,   5660,   2254}, 0, {   -28,    144}, {0xf7, 0xd8, 0x78, 0xff}}},\n    {{{ -1842,   5084,   2171}, 0, {  2012,    132}, {0x00, 0xfc, 0x7e, 0xff}}},\n    {{{ -3071,   5763,   2356}, 0, {   -28,     34}, {0xe4, 0x8e, 0x2f, 0xff}}},\n    {{{ -3071,   5660,   3073}, 0, {  2008,    130}, {0xf3, 0xc9, 0x8f, 0xff}}},\n};\n\n// 0x07028248 - 0x07028328\nstatic const Vtx ttm_seg7_vertex_07028248[] = {\n    {{{  -613,   4650,   2165}, 0, {  2012,      0}, {0xec, 0xc7, 0x6f, 0xff}}},\n    {{{ -1842,   5084,   2171}, 0, {   -48,    144}, {0x00, 0xfc, 0x7e, 0xff}}},\n    {{{  -613,   4506,   2152}, 0, {  2024,    126}, {0x0e, 0x25, 0x78, 0xff}}},\n    {{{ -1842,   5216,   2230}, 0, {   -64,     36}, {0xe1, 0xa7, 0x54, 0xff}}},\n    {{{  -613,   5033,   2780}, 0, {   -44,    136}, {0xdb, 0x95, 0xc9, 0xff}}},\n    {{{ -1842,   5436,   2804}, 0, {  2012,      0}, {0xda, 0x88, 0xfd, 0xff}}},\n    {{{  -613,   5045,   2635}, 0, {   -60,     18}, {0xdb, 0x8d, 0x25, 0xff}}},\n    {{{ -1842,   5377,   2936}, 0, {  2024,    134}, {0xe3, 0xad, 0xa6, 0xff}}},\n    {{{  3058,   3715,   3073}, 0, {   -60,   1138}, {0xf9, 0xe6, 0x85, 0xff}}},\n    {{{  1829,   4065,   3037}, 0, {  2012,    990}, {0xe4, 0x9b, 0xba, 0xff}}},\n    {{{  3058,   3817,   2971}, 0, {     0,    990}, {0x37, 0x94, 0xdd, 0xff}}},\n    {{{ -5635,   6247,   2478}, 0, {  1404,    -24}, {0xf9, 0x8e, 0x36, 0xff}}},\n    {{{ -6116,   6349,   2723}, 0, {   716,    -18}, {0x06, 0x8e, 0x36, 0xff}}},\n    {{{ -5670,   6144,   2382}, 0, {  1412,    138}, {0x24, 0xd1, 0x6f, 0xff}}},\n};\n\n// 0x07028328 - 0x07028408\nstatic const Vtx ttm_seg7_vertex_07028328[] = {\n    {{{ -6492,   6452,   3099}, 0, {  2012,      0}, {0x17, 0x8e, 0x31, 0xff}}},\n    {{{ -6737,   6554,   3580}, 0, {   988,    -20}, {0x24, 0x8e, 0x29, 0xff}}},\n    {{{ -6575,   6349,   3039}, 0, {  2052,    126}, {0x5d, 0xd0, 0x47, 0xff}}},\n    {{{ -6833,   6452,   3545}, 0, {   976,    144}, {0x6c, 0xd0, 0x2d, 0xff}}},\n    {{{ -5910,   6349,   3518}, 0, {   516,     86}, {0x9c, 0xd1, 0xc3, 0xff}}},\n    {{{ -6065,   6452,   3829}, 0, {  1264,    100}, {0x8f, 0xd1, 0xe1, 0xff}}},\n    {{{ -5993,   6452,   3458}, 0, {   468,    -88}, {0xc6, 0x90, 0xff, 0xff}}},\n    {{{ -5757,   6349,   3222}, 0, {  -204,    -68}, {0xca, 0x8f, 0xee, 0xff}}},\n    {{{ -5697,   6247,   3305}, 0, {   -88,    118}, {0xb5, 0xd1, 0xa6, 0xff}}},\n    {{{ -6161,   6554,   3793}, 0, {  1272,    -60}, {0xc9, 0x8f, 0x0d, 0xff}}},\n    {{{ -6116,   6349,   2723}, 0, {   716,    -18}, {0x06, 0x8e, 0x36, 0xff}}},\n    {{{ -6492,   6452,   3099}, 0, {    72,    -54}, {0x17, 0x8e, 0x31, 0xff}}},\n    {{{ -6176,   6247,   2640}, 0, {   692,    150}, {0x42, 0xd0, 0x60, 0xff}}},\n    {{{ -5670,   6144,   2382}, 0, {  1412,    138}, {0x24, 0xd1, 0x6f, 0xff}}},\n};\n\n// 0x07028408 - 0x07028508\nstatic const Vtx ttm_seg7_vertex_07028408[] = {\n    {{{ -5697,   6247,   3305}, 0, {  1704,    962}, {0xb5, 0xd1, 0xa6, 0xff}}},\n    {{{ -5757,   6349,   3222}, 0, {  2012,    990}, {0xca, 0x8f, 0xee, 0xff}}},\n    {{{ -5422,   6247,   3054}, 0, {  2040,    460}, {0xd2, 0x8f, 0xdf, 0xff}}},\n    {{{ -6492,   6452,   3099}, 0, {    72,    -54}, {0x17, 0x8e, 0x31, 0xff}}},\n    {{{ -6575,   6349,   3039}, 0, {     8,    122}, {0x5d, 0xd0, 0x47, 0xff}}},\n    {{{ -6176,   6247,   2640}, 0, {   692,    150}, {0x42, 0xd0, 0x60, 0xff}}},\n    {{{ -5635,   6247,   2478}, 0, {  1404,    -24}, {0xf9, 0x8e, 0x36, 0xff}}},\n    {{{ -5670,   6144,   2382}, 0, {  1412,    138}, {0x24, 0xd1, 0x6f, 0xff}}},\n    {{{ -5169,   6042,   2258}, 0, {  2052,    122}, {0x05, 0xca, 0x72, 0xff}}},\n    {{{ -5157,   6144,   2359}, 0, {  2012,      0}, {0xec, 0x8b, 0x2a, 0xff}}},\n    {{{ -5069,   6042,   3071}, 0, {  1660,     14}, {0xec, 0xda, 0x89, 0xff}}},\n    {{{ -5386,   6144,   3150}, 0, {  1704,    472}, {0xcf, 0xd1, 0x96, 0xff}}},\n    {{{ -5082,   6144,   2969}, 0, {  2012,      0}, {0xe0, 0x91, 0xce, 0xff}}},\n    {{{ -7489,   -841,  -3787}, 0, { 10188,  -4120}, {0x54, 0xd6, 0xac, 0xff}}},\n    {{{ -5441,  -1865,  -3787}, 0, {     0,    990}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{ -7489,  -1865,  -3787}, 0, { 10188,    990}, {0x33, 0x67, 0xcd, 0xff}}},\n};\n\n// 0x07028508 - 0x07028578\nstatic const Vtx ttm_seg7_vertex_07028508[] = {\n    {{{ -7489,   -841,  -3787}, 0, { 10188,  -4120}, {0x54, 0xd6, 0xac, 0xff}}},\n    {{{ -5441,   -841,  -3787}, 0, {     0,  -4120}, {0x9b, 0xbd, 0xdf, 0xff}}},\n    {{{ -5441,  -1865,  -3787}, 0, {     0,    990}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{ -5441,   -841,  -5835}, 0, {  2012,  -4120}, {0x8d, 0xe9, 0x2e, 0xff}}},\n    {{{ -7489,  -1865,  -5835}, 0, { -8204,    990}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{ -5441,  -1865,  -5835}, 0, {  2012,    990}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -7489,   -841,  -5835}, 0, { -8204,  -4120}, {0x33, 0x99, 0x33, 0xff}}},\n};\n\n// 0x07028578 - 0x07028668\nstatic const Vtx ttm_seg7_vertex_07028578[] = {\n    {{{ -6065,   6452,   3829}, 0, {  1264,    100}, {0x8f, 0xd1, 0xe1, 0xff}}},\n    {{{ -6144,   6554,   4146}, 0, {  1952,    118}, {0x8b, 0xd1, 0xfa, 0xff}}},\n    {{{ -6161,   6554,   3793}, 0, {  1272,    -60}, {0xc9, 0x8f, 0x0d, 0xff}}},\n    {{{  -613,   4650,   2165}, 0, {  -100,     50}, {0xec, 0xc7, 0x6f, 0xff}}},\n    {{{  -613,   4506,   2152}, 0, {   -64,    152}, {0x0e, 0x25, 0x78, 0xff}}},\n    {{{   600,   4063,   2155}, 0, {  2012,      0}, {0xfa, 0xf0, 0x7d, 0xff}}},\n    {{{   600,   3923,   2193}, 0, {  2036,    124}, {0x1a, 0x4b, 0x62, 0xff}}},\n    {{{  -613,   5033,   2780}, 0, {  2036,    134}, {0xdb, 0x95, 0xc9, 0xff}}},\n    {{{  -613,   5045,   2635}, 0, {  2012,      0}, {0xdb, 0x8d, 0x25, 0xff}}},\n    {{{   600,   4633,   2602}, 0, {   -64,    138}, {0xd7, 0x89, 0xf1, 0xff}}},\n    {{{   600,   4595,   2462}, 0, {   -96,     24}, {0xe1, 0x9f, 0x4b, 0xff}}},\n    {{{ -6737,   6554,   3580}, 0, {   988,    -20}, {0x24, 0x8e, 0x29, 0xff}}},\n    {{{ -6856,   6656,   4058}, 0, {    64,    -46}, {0x2c, 0x8e, 0x1e, 0xff}}},\n    {{{ -6833,   6452,   3545}, 0, {   976,    144}, {0x6c, 0xd0, 0x2d, 0xff}}},\n    {{{ -6957,   6554,   4046}, 0, {     8,    126}, {0x73, 0xd0, 0x13, 0xff}}},\n};\n\n// 0x07028668 - 0x07028718\nstatic const Vtx ttm_seg7_vertex_07028668[] = {\n    {{{ -5441,  -1865,  -4401}, 0, {  2012,    990}, {0xc5, 0x31, 0x9c, 0xff}}},\n    {{{ -3188,   -841,  -4401}, 0, {     0,    132}, {0x42, 0xd7, 0x9c, 0xff}}},\n    {{{ -3188,  -1455,  -4401}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -6144,   6554,   4146}, 0, {  1952,    118}, {0x8b, 0xd1, 0xfa, 0xff}}},\n    {{{ -6246,   6656,   4133}, 0, {  2012,      0}, {0xcd, 0x8f, 0x16, 0xff}}},\n    {{{ -6161,   6554,   3793}, 0, {  1272,    -60}, {0xc9, 0x8f, 0x0d, 0xff}}},\n    {{{ -5441,  -1865,  -5220}, 0, {     0,    990}, {0xaf, 0x44, 0x45, 0xff}}},\n    {{{ -3188,   -841,  -5220}, 0, {  2016,    132}, {0x42, 0xd7, 0x64, 0xff}}},\n    {{{ -5441,  -1251,  -5220}, 0, {   -28,    132}, {0xa6, 0xdf, 0x52, 0xff}}},\n    {{{ -3188,  -1455,  -5220}, 0, {  2012,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5441,  -1251,  -4401}, 0, {  2008,    132}, {0x96, 0xe6, 0xc1, 0xff}}},\n};\n\n// 0x07028718 - 0x07028818\nstatic const Vtx ttm_seg7_vertex_07028718[] = {\n    {{{ -6963,   6759,   5120}, 0, {   -16,    130}, {0x78, 0xda, 0x05, 0xff}}},\n    {{{ -6957,   6554,   4046}, 0, {  2028,    130}, {0x73, 0xd0, 0x13, 0xff}}},\n    {{{ -6860,   6861,   5120}, 0, {    -8,    -36}, {0x3f, 0x94, 0x10, 0xff}}},\n    {{{  1829,   3483,   2207}, 0, {  2012,      0}, {0x05, 0x17, 0x7c, 0xff}}},\n    {{{   600,   3923,   2193}, 0, {   -76,    150}, {0x1a, 0x4b, 0x62, 0xff}}},\n    {{{  1829,   3365,   2290}, 0, {  2044,    126}, {0x1e, 0x65, 0x45, 0xff}}},\n    {{{   600,   4063,   2155}, 0, {  -120,     46}, {0xfa, 0xf0, 0x7d, 0xff}}},\n    {{{  1829,   4172,   2432}, 0, {   -72,    142}, {0xdc, 0x89, 0x17, 0xff}}},\n    {{{   600,   4595,   2462}, 0, {  2012,      0}, {0xe1, 0x9f, 0x4b, 0xff}}},\n    {{{  1829,   4088,   2313}, 0, {  -116,     30}, {0xed, 0xba, 0x68, 0xff}}},\n    {{{   600,   4633,   2602}, 0, {  2044,    132}, {0xd7, 0x89, 0xf1, 0xff}}},\n    {{{ -6246,   6861,   5120}, 0, {  2012,      0}, {0xe0, 0x87, 0x12, 0xff}}},\n    {{{ -6246,   6656,   4133}, 0, {   -56,    -36}, {0xcd, 0x8f, 0x16, 0xff}}},\n    {{{ -6143,   6759,   5120}, 0, {  2016,    132}, {0x8e, 0xc9, 0x08, 0xff}}},\n    {{{ -6144,   6554,   4146}, 0, {   -28,    132}, {0x8b, 0xd1, 0xfa, 0xff}}},\n    {{{ -6856,   6656,   4058}, 0, {  2012,      0}, {0x2c, 0x8e, 0x1e, 0xff}}},\n};\n\n// 0x07028818 - 0x07028918\nstatic const Vtx ttm_seg7_vertex_07028818[] = {\n    {{{ -6963,   6861,   6144}, 0, {     0,    132}, {0x6d, 0xc0, 0x06, 0xff}}},\n    {{{ -6860,   6861,   5120}, 0, {  2012,      0}, {0x3f, 0x94, 0x10, 0xff}}},\n    {{{ -6860,   6964,   6144}, 0, {     0,      0}, {0x20, 0x86, 0x0c, 0xff}}},\n    {{{  1829,   3483,   2207}, 0, {   -64,   -184}, {0x05, 0x17, 0x7c, 0xff}}},\n    {{{  1829,   3365,   2290}, 0, {     0,    -18}, {0x1e, 0x65, 0x45, 0xff}}},\n    {{{  3058,   3100,   2254}, 0, {  2012,      0}, {0x50, 0x2c, 0x57, 0xff}}},\n    {{{  3058,   2998,   2356}, 0, {  2040,    160}, {0x57, 0x56, 0x1c, 0xff}}},\n    {{{  3058,   3817,   2356}, 0, {   -36,    124}, {0x52, 0xaa, 0x2c, 0xff}}},\n    {{{  1829,   4088,   2313}, 0, {  2012,      0}, {0xed, 0xba, 0x68, 0xff}}},\n    {{{  3058,   3715,   2254}, 0, {   -68,    -14}, {0x59, 0xe5, 0x56, 0xff}}},\n    {{{  1829,   4172,   2432}, 0, {  2040,    130}, {0xdc, 0x89, 0x17, 0xff}}},\n    {{{ -6246,   6964,   6144}, 0, {  2012,      0}, {0xc1, 0x93, 0x0a, 0xff}}},\n    {{{ -6143,   6759,   5120}, 0, {   -28,    132}, {0x8e, 0xc9, 0x08, 0xff}}},\n    {{{ -6143,   6861,   6144}, 0, {  2016,    132}, {0x86, 0xe0, 0x03, 0xff}}},\n    {{{ -6246,   6861,   5120}, 0, {     0,      0}, {0xe0, 0x87, 0x12, 0xff}}},\n    {{{ -6963,   6759,   5120}, 0, {  2008,    132}, {0x78, 0xda, 0x05, 0xff}}},\n};\n\n// 0x07028918 - 0x07028A08\nstatic const Vtx ttm_seg7_vertex_07028918[] = {\n    {{{ -1842,   4803,   3156}, 0, {     0,    990}, {0x02, 0x04, 0x82, 0xff}}},\n    {{{ -3071,   5046,   3073}, 0, {  2012,    990}, {0x0d, 0x30, 0x8c, 0xff}}},\n    {{{ -3071,   5660,   3073}, 0, {  2008,    130}, {0xf3, 0xc9, 0x8f, 0xff}}},\n    {{{ -3071,   5660,   2254}, 0, {  2008,    132}, {0xf7, 0xd8, 0x78, 0xff}}},\n    {{{ -5169,   6042,   2258}, 0, {     0,    132}, {0x05, 0xca, 0x72, 0xff}}},\n    {{{ -5169,   5428,   2258}, 0, {     0,    990}, {0x12, 0x30, 0x74, 0xff}}},\n    {{{ -3071,   5046,   2254}, 0, {  2012,    990}, {0x0c, 0x2f, 0x75, 0xff}}},\n    {{{ -3071,   5046,   3073}, 0, {     0,    990}, {0x0d, 0x30, 0x8c, 0xff}}},\n    {{{ -5069,   6042,   3071}, 0, {  2004,    130}, {0xec, 0xda, 0x89, 0xff}}},\n    {{{ -3071,   5660,   3073}, 0, {   -36,    130}, {0xf3, 0xc9, 0x8f, 0xff}}},\n    {{{ -5069,   5428,   3071}, 0, {  2012,    990}, {0xfa, 0x2f, 0x8b, 0xff}}},\n    {{{ -1842,   5084,   2171}, 0, {  2012,    132}, {0x00, 0xfc, 0x7e, 0xff}}},\n    {{{ -3071,   5660,   2254}, 0, {   -28,    144}, {0xf7, 0xd8, 0x78, 0xff}}},\n    {{{ -3071,   5046,   2254}, 0, {     0,    990}, {0x0c, 0x2f, 0x75, 0xff}}},\n    {{{ -1842,   4510,   2391}, 0, {  2012,    990}, {0x1a, 0x54, 0x5b, 0xff}}},\n};\n\n// 0x07028A08 - 0x07028AF8\nstatic const Vtx ttm_seg7_vertex_07028A08[] = {\n    {{{ -6575,   6349,   3039}, 0, {  2052,    126}, {0x5d, 0xd0, 0x47, 0xff}}},\n    {{{ -6833,   6452,   3545}, 0, {   976,    144}, {0x6c, 0xd0, 0x2d, 0xff}}},\n    {{{ -6833,   5837,   3545}, 0, {   936,   1008}, {0x6f, 0x30, 0x24, 0xff}}},\n    {{{ -1842,   4803,   3156}, 0, {     0,    990}, {0x02, 0x04, 0x82, 0xff}}},\n    {{{ -3071,   5660,   3073}, 0, {  2008,    130}, {0xf3, 0xc9, 0x8f, 0xff}}},\n    {{{ -1842,   5377,   2936}, 0, {   -24,    146}, {0xe3, 0xad, 0xa6, 0xff}}},\n    {{{  -613,   4506,   2152}, 0, {  2024,    126}, {0x0e, 0x25, 0x78, 0xff}}},\n    {{{ -1842,   5084,   2171}, 0, {   -48,    144}, {0x00, 0xfc, 0x7e, 0xff}}},\n    {{{ -1842,   4510,   2391}, 0, {     0,    990}, {0x1a, 0x54, 0x5b, 0xff}}},\n    {{{  -613,   4035,   2547}, 0, {  2012,    990}, {0x22, 0x6c, 0x38, 0xff}}},\n    {{{  -613,   4562,   3175}, 0, {     0,    990}, {0xf5, 0xdb, 0x88, 0xff}}},\n    {{{ -1842,   4803,   3156}, 0, {  2012,    990}, {0x02, 0x04, 0x82, 0xff}}},\n    {{{ -1842,   5377,   2936}, 0, {  2024,    134}, {0xe3, 0xad, 0xa6, 0xff}}},\n    {{{  -613,   5033,   2780}, 0, {   -44,    136}, {0xdb, 0x95, 0xc9, 0xff}}},\n    {{{ -6575,   5735,   3039}, 0, {  2012,    990}, {0x60, 0x30, 0x42, 0xff}}},\n};\n\n// 0x07028AF8 - 0x07028BF8\nstatic const Vtx ttm_seg7_vertex_07028AF8[] = {\n    {{{ -5169,   6042,   2258}, 0, {  2052,    122}, {0x05, 0xca, 0x72, 0xff}}},\n    {{{ -5670,   6144,   2382}, 0, {  1412,    138}, {0x24, 0xd1, 0x6f, 0xff}}},\n    {{{ -5670,   5530,   2382}, 0, {  1372,   1004}, {0x2d, 0x2f, 0x6c, 0xff}}},\n    {{{ -5910,   5735,   3518}, 0, {   576,    958}, {0xa6, 0x2f, 0xb5, 0xff}}},\n    {{{ -6065,   5837,   3829}, 0, {  1324,    974}, {0x96, 0x2f, 0xcf, 0xff}}},\n    {{{ -6065,   6452,   3829}, 0, {  1264,    100}, {0x8f, 0xd1, 0xe1, 0xff}}},\n    {{{ -5910,   6349,   3518}, 0, {   516,     86}, {0x9c, 0xd1, 0xc3, 0xff}}},\n    {{{ -5697,   5632,   3305}, 0, {     0,    990}, {0xc3, 0x2f, 0x9c, 0xff}}},\n    {{{ -5697,   6247,   3305}, 0, {   -88,    118}, {0xb5, 0xd1, 0xa6, 0xff}}},\n    {{{ -6176,   6247,   2640}, 0, {   692,    150}, {0x42, 0xd0, 0x60, 0xff}}},\n    {{{ -6575,   6349,   3039}, 0, {     8,    122}, {0x5d, 0xd0, 0x47, 0xff}}},\n    {{{ -6575,   5735,   3039}, 0, {     0,    990}, {0x60, 0x30, 0x42, 0xff}}},\n    {{{ -6176,   5632,   2640}, 0, {   652,   1016}, {0x47, 0x30, 0x5d, 0xff}}},\n    {{{ -5069,   5428,   3071}, 0, {   -68,     40}, {0xfa, 0x2f, 0x8b, 0xff}}},\n    {{{ -5386,   6144,   3150}, 0, {  1704,    472}, {0xcf, 0xd1, 0x96, 0xff}}},\n    {{{ -5069,   6042,   3071}, 0, {  1660,     14}, {0xec, 0xda, 0x89, 0xff}}},\n};\n\n// 0x07028BF8 - 0x07028C78\nstatic const Vtx ttm_seg7_vertex_07028BF8[] = {\n    {{{ -5169,   6042,   2258}, 0, {  2052,    122}, {0x05, 0xca, 0x72, 0xff}}},\n    {{{ -5670,   5530,   2382}, 0, {  1372,   1004}, {0x2d, 0x2f, 0x6c, 0xff}}},\n    {{{ -5169,   5428,   2258}, 0, {  2012,    990}, {0x12, 0x30, 0x74, 0xff}}},\n    {{{ -5069,   5428,   3071}, 0, {   -68,     40}, {0xfa, 0x2f, 0x8b, 0xff}}},\n    {{{ -5386,   5530,   3150}, 0, {   -28,    498}, {0xe1, 0x2f, 0x8f, 0xff}}},\n    {{{ -5386,   6144,   3150}, 0, {  1704,    472}, {0xcf, 0xd1, 0x96, 0xff}}},\n    {{{ -5697,   5632,   3305}, 0, {     0,    990}, {0xc3, 0x2f, 0x9c, 0xff}}},\n    {{{ -5697,   6247,   3305}, 0, {  1704,    962}, {0xb5, 0xd1, 0xa6, 0xff}}},\n};\n\n// 0x07028C78 - 0x07028D78\nstatic const Vtx ttm_seg7_vertex_07028C78[] = {\n    {{{ -6065,   5837,   3829}, 0, {  1324,    974}, {0x96, 0x2f, 0xcf, 0xff}}},\n    {{{ -6144,   5940,   4146}, 0, {  2012,    990}, {0x8d, 0x30, 0xeb, 0xff}}},\n    {{{ -6144,   6554,   4146}, 0, {  1952,    118}, {0x8b, 0xd1, 0xfa, 0xff}}},\n    {{{   600,   3923,   2193}, 0, {  2036,    124}, {0x1a, 0x4b, 0x62, 0xff}}},\n    {{{  -613,   4506,   2152}, 0, {   -64,    152}, {0x0e, 0x25, 0x78, 0xff}}},\n    {{{  -613,   4035,   2547}, 0, {     0,    990}, {0x22, 0x6c, 0x38, 0xff}}},\n    {{{   600,   3616,   2725}, 0, {  2012,    990}, {0x26, 0x77, 0x0f, 0xff}}},\n    {{{   600,   4326,   3134}, 0, {     0,    990}, {0xe9, 0xb5, 0x9d, 0xff}}},\n    {{{  -613,   5033,   2780}, 0, {  2036,    134}, {0xdb, 0x95, 0xc9, 0xff}}},\n    {{{   600,   4633,   2602}, 0, {   -64,    138}, {0xd7, 0x89, 0xf1, 0xff}}},\n    {{{  -613,   4562,   3175}, 0, {  2012,    990}, {0xf5, 0xdb, 0x88, 0xff}}},\n    {{{ -6833,   6452,   3545}, 0, {   976,    144}, {0x6c, 0xd0, 0x2d, 0xff}}},\n    {{{ -6957,   5940,   4046}, 0, {     0,    990}, {0x75, 0x2f, 0x09, 0xff}}},\n    {{{ -6833,   5837,   3545}, 0, {   936,   1008}, {0x6f, 0x30, 0x24, 0xff}}},\n    {{{ -6957,   6554,   4046}, 0, {     8,    126}, {0x73, 0xd0, 0x13, 0xff}}},\n    {{{ -6065,   6452,   3829}, 0, {  1264,    100}, {0x8f, 0xd1, 0xe1, 0xff}}},\n};\n\n// 0x07028D78 - 0x07028E78\nstatic const Vtx ttm_seg7_vertex_07028D78[] = {\n    {{{ -6963,   6144,   5120}, 0, {     0,    990}, {0x72, 0x37, 0xf9, 0xff}}},\n    {{{ -6957,   6554,   4046}, 0, {  2028,    130}, {0x73, 0xd0, 0x13, 0xff}}},\n    {{{ -6963,   6759,   5120}, 0, {   -16,    130}, {0x78, 0xda, 0x05, 0xff}}},\n    {{{  1829,   3365,   2290}, 0, {  2044,    126}, {0x1e, 0x65, 0x45, 0xff}}},\n    {{{   600,   3923,   2193}, 0, {   -76,    150}, {0x1a, 0x4b, 0x62, 0xff}}},\n    {{{   600,   3616,   2725}, 0, {     0,    990}, {0x26, 0x77, 0x0f, 0xff}}},\n    {{{  1829,   3258,   2895}, 0, {  2012,    990}, {0x20, 0x79, 0xed, 0xff}}},\n    {{{  1829,   4065,   3037}, 0, {     0,    990}, {0xe4, 0x9b, 0xba, 0xff}}},\n    {{{   600,   4326,   3134}, 0, {  2012,    990}, {0xe9, 0xb5, 0x9d, 0xff}}},\n    {{{   600,   4633,   2602}, 0, {  2044,    132}, {0xd7, 0x89, 0xf1, 0xff}}},\n    {{{  1829,   4172,   2432}, 0, {   -72,    142}, {0xdc, 0x89, 0x17, 0xff}}},\n    {{{ -6143,   6759,   5120}, 0, {  2016,    132}, {0x8e, 0xc9, 0x08, 0xff}}},\n    {{{ -6144,   5940,   4146}, 0, {     0,    990}, {0x8d, 0x30, 0xeb, 0xff}}},\n    {{{ -6143,   6144,   5120}, 0, {  2012,    990}, {0x88, 0x26, 0xfb, 0xff}}},\n    {{{ -6144,   6554,   4146}, 0, {   -28,    132}, {0x8b, 0xd1, 0xfa, 0xff}}},\n    {{{ -6957,   5940,   4046}, 0, {  2012,    990}, {0x75, 0x2f, 0x09, 0xff}}},\n};\n\n// 0x07028E78 - 0x07028F68\nstatic const Vtx ttm_seg7_vertex_07028E78[] = {\n    {{{ -2217,  -1279,  -4401}, 0, { -1756,   2184}, {0xe3, 0x6d, 0x38, 0xff}}},\n    {{{ -3188,  -1455,  -4401}, 0, { -4176,   2626}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -628,  -1967,  -4401}, 0, {  2204,   3902}, {0x2f, 0x02, 0x75, 0xff}}},\n    {{{ -1730,  -1106,  -4401}, 0, {  -540,   1754}, {0xd0, 0x5d, 0x46, 0xff}}},\n    {{{ -3188,  -1967,  -4401}, 0, { -4176,   3902}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -706,   -390,  -4401}, 0, {  2012,      0}, {0x23, 0x4d, 0x5d, 0xff}}},\n    {{{ -1218,   -799,  -4401}, 0, {   736,    990}, {0xc2, 0x55, 0x46, 0xff}}},\n    {{{  -628,  -1967,  -4401}, 0, {     0,   3908}, {0x2f, 0x02, 0x75, 0xff}}},\n    {{{  -706,   -390,  -5220}, 0, {   990,      0}, {0x34, 0x73, 0x00, 0xff}}},\n    {{{  -706,   -390,  -4401}, 0, {     0,      0}, {0x23, 0x4d, 0x5d, 0xff}}},\n    {{{  -628,  -1967,  -5220}, 0, {  2012,   3908}, {0x7e, 0x06, 0x00, 0xff}}},\n    {{{  3058,   2998,   2356}, 0, {  2040,    160}, {0x57, 0x56, 0x1c, 0xff}}},\n    {{{  1829,   3365,   2290}, 0, {     0,    -18}, {0x1e, 0x65, 0x45, 0xff}}},\n    {{{  1829,   3258,   2895}, 0, {     0,    990}, {0x20, 0x79, 0xed, 0xff}}},\n    {{{  3058,   2998,   2868}, 0, {   990,    990}, {0x16, 0x7d, 0x00, 0xff}}},\n};\n\n// 0x07028F68 - 0x07029028\nstatic const Vtx ttm_seg7_vertex_07028F68[] = {\n    {{{  3058,   3817,   2971}, 0, {     0,    990}, {0x37, 0x94, 0xdd, 0xff}}},\n    {{{  1829,   4065,   3037}, 0, {  2012,    990}, {0xe4, 0x9b, 0xba, 0xff}}},\n    {{{  1829,   4172,   2432}, 0, {  2040,    130}, {0xdc, 0x89, 0x17, 0xff}}},\n    {{{  3058,   3817,   2356}, 0, {   -36,    124}, {0x52, 0xaa, 0x2c, 0xff}}},\n    {{{ -6143,   6861,   6144}, 0, {  2016,    132}, {0x86, 0xe0, 0x03, 0xff}}},\n    {{{ -6143,   6759,   5120}, 0, {   -28,    132}, {0x8e, 0xc9, 0x08, 0xff}}},\n    {{{ -6143,   6144,   5120}, 0, {     0,    990}, {0x88, 0x26, 0xfb, 0xff}}},\n    {{{ -6143,   6247,   6144}, 0, {  2012,    990}, {0x93, 0x40, 0xfa, 0xff}}},\n    {{{ -6963,   6144,   5120}, 0, {  2012,    990}, {0x72, 0x37, 0xf9, 0xff}}},\n    {{{ -6963,   6759,   5120}, 0, {  2008,    132}, {0x78, 0xda, 0x05, 0xff}}},\n    {{{ -6963,   6247,   6144}, 0, {     0,    990}, {0x7a, 0x20, 0xfd, 0xff}}},\n    {{{ -6963,   6861,   6144}, 0, {     0,    132}, {0x6d, 0xc0, 0x06, 0xff}}},\n};\n\n// 0x07029028 - 0x07029128\nstatic const Vtx ttm_seg7_vertex_07029028[] = {\n    {{{ -3188,    592,  -5732}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3188,    592,  -3377}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3188,  -1967,  -2353}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3058,   5251,   3687}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3058,   3817,   2971}, 0, {     0,      0}, {0x37, 0x94, 0xdd, 0xff}}},\n    {{{  3058,   3817,   2356}, 0, {     0,      0}, {0x52, 0xaa, 0x2c, 0xff}}},\n    {{{  3058,   3715,   2254}, 0, {     0,      0}, {0x59, 0xe5, 0x56, 0xff}}},\n    {{{  3058,   5251,    615}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3058,   2179,    615}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3058,   3100,   2254}, 0, {     0,      0}, {0x50, 0x2c, 0x57, 0xff}}},\n    {{{ -3188,   1616,  -4708}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3058,   2179,   3687}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3058,   3100,   3175}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3058,   3612,   3175}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3058,   2998,   3073}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3058,   2998,   2356}, 0, {     0,      0}, {0x57, 0x56, 0x1c, 0xff}}},\n};\n\n// 0x07029128 - 0x070291B8\nstatic const Vtx ttm_seg7_vertex_07029128[] = {\n    {{{ -3188,  -1558,  -5220}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3188,  -1967,  -6756}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3188,    592,  -5732}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3188,  -1558,  -4401}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3188,   -841,  -5220}, 0, {     0,      0}, {0x42, 0xd7, 0x64, 0xff}}},\n    {{{ -3188,  -1967,  -2353}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3188,   -739,  -4504}, 0, {     0,      0}, {0x6f, 0xc8, 0xe9, 0xff}}},\n    {{{ -3188,   -739,  -5118}, 0, {     0,      0}, {0x54, 0xa5, 0x17, 0xff}}},\n    {{{ -3188,   -841,  -4401}, 0, {     0,      0}, {0x42, 0xd7, 0x9c, 0xff}}},\n};\n\n// 0x070291B8 - 0x070299D0\nstatic const Gfx ttm_seg7_dl_070291B8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_0900B800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_07025FF0.l, 1),\n    gsSPLight(&ttm_seg7_lights_07025FF0.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07026128, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(13, 12, 14, 0x0,  2,  1, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07026228, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  5,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07026328, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07026428, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 1,  6,  2, 0x0,  7,  3,  5, 0x0),\n    gsSPLight(&ttm_seg7_lights_07026008.l, 1),\n    gsSPLight(&ttm_seg7_lights_07026008.a, 2),\n    gsSPVertex(ttm_seg7_vertex_070264A8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSPLight(&ttm_seg7_lights_07026020.l, 1),\n    gsSPLight(&ttm_seg7_lights_07026020.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07026568, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  2,  1, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07026668, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 9, 14, 10, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07026758, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 11, 13, 0x0),\n    gsSPLight(&ttm_seg7_lights_07026038.l, 1),\n    gsSPLight(&ttm_seg7_lights_07026038.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07026848, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07026928, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 1,  6,  2, 0x0),\n    gsSPLight(&ttm_seg7_lights_07026050.l, 1),\n    gsSPLight(&ttm_seg7_lights_07026050.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07026998, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  4, 0x0),\n    gsSP2Triangles( 2,  1,  3, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6,  8, 0x0),\n    gsSPLight(&ttm_seg7_lights_07026068.l, 1),\n    gsSPLight(&ttm_seg7_lights_07026068.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07026A38, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSPLight(&ttm_seg7_lights_07026080.l, 1),\n    gsSPLight(&ttm_seg7_lights_07026080.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07026AB8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07026BA8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07026C98, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0, 15,  0,  2, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07026D98, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07026E78, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPLight(&ttm_seg7_lights_07026098.l, 1),\n    gsSPLight(&ttm_seg7_lights_07026098.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07026EB8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0,  1, 15,  2, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07026FB8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070270B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 5, 10,  6, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070271A8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPLight(&ttm_seg7_lights_070260B0.l, 1),\n    gsSPLight(&ttm_seg7_lights_070260B0.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07027288, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0,  1, 15,  2, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07027388, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07027488, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 15, 12, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07027588, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPLight(&ttm_seg7_lights_070260C8.l, 1),\n    gsSPLight(&ttm_seg7_lights_070260C8.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07027668, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07027758, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9,  0, 10, 0x0),\n    gsSP2Triangles(10,  0,  2, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07027838, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07027928, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07027A08, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07027AF8, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP1Triangle( 0, 10,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070299D0 - 0x07029A18\nstatic const Gfx ttm_seg7_dl_070299D0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_0900A800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_07026080.l, 1),\n    gsSPLight(&ttm_seg7_lights_07026080.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07027BA8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07029A18 - 0x0702A0D8\nstatic const Gfx ttm_seg7_dl_07029A18[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_070260E0.l, 1),\n    gsSPLight(&ttm_seg7_lights_070260E0.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07027BE8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07027CD8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 1,  5,  2, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9,  6,  8, 0x0,  6, 10,  7, 0x0),\n    gsSP2Triangles(10, 11,  7, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07027DC8, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  6,  1, 0x0),\n    gsSPLight(&ttm_seg7_lights_07025FF0.l, 1),\n    gsSPLight(&ttm_seg7_lights_07025FF0.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07027E38, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSPLight(&ttm_seg7_lights_07026008.l, 1),\n    gsSPLight(&ttm_seg7_lights_07026008.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07027EB8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0, 15,  1, 0x0),\n    gsSPLight(&ttm_seg7_lights_07026020.l, 1),\n    gsSPLight(&ttm_seg7_lights_07026020.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07027FB8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070280A8, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  7,  8, 0x0),\n    gsSP2Triangles( 3,  5,  7, 0x0,  2,  8,  0, 0x0),\n    gsSP1Triangle( 0,  9,  1, 0x0),\n    gsSPLight(&ttm_seg7_lights_07026038.l, 1),\n    gsSPLight(&ttm_seg7_lights_07026038.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07028148, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(14, 12, 11, 0x0, 15,  1,  0, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07028248, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  5,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07028328, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  4,  7, 0x0,  5,  9,  6, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07028408, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11,  2, 12, 0x0),\n    gsSP2Triangles(11,  0,  2, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07028508, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 3,  6,  4, 0x0),\n    gsSPLight(&ttm_seg7_lights_07026050.l, 1),\n    gsSPLight(&ttm_seg7_lights_07026050.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07028578, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07028668, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP1Triangle( 0, 10,  1, 0x0),\n    gsSPLight(&ttm_seg7_lights_07026068.l, 1),\n    gsSPLight(&ttm_seg7_lights_07026068.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07028718, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  4,  3, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  8,  7, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0,  1, 15,  2, 0x0),\n    gsSPLight(&ttm_seg7_lights_07026080.l, 1),\n    gsSPLight(&ttm_seg7_lights_07026080.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07028818, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  8,  7, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPLight(&ttm_seg7_lights_07026098.l, 1),\n    gsSPLight(&ttm_seg7_lights_07026098.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07028918, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07028A08, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07028AF8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  3,  6, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 1,  9, 12, 0x0,  9, 11, 12, 0x0),\n    gsSP2Triangles( 1, 12,  2, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07028BF8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  4,  7,  5, 0x0),\n    gsSPLight(&ttm_seg7_lights_070260B0.l, 1),\n    gsSPLight(&ttm_seg7_lights_070260B0.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07028C78, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0,  2, 15, 0x0),\n    gsSPLight(&ttm_seg7_lights_070260F8.l, 1),\n    gsSPLight(&ttm_seg7_lights_070260F8.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07028D78, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPLight(&ttm_seg7_lights_070260C8.l, 1),\n    gsSPLight(&ttm_seg7_lights_070260C8.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07028E78, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  2,  5,  6, 0x0),\n    gsSP2Triangles( 2,  6,  3, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 11, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07028F68, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0702A0D8 - 0x0702A1B8\nstatic const Gfx ttm_seg7_dl_0702A0D8[] = {\n    gsSPLight(&ttm_seg7_lights_07026110.l, 1),\n    gsSPLight(&ttm_seg7_lights_07026110.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07029028, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  7,  3, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  6,  9,  8, 0x0),\n    gsSP2Triangles( 0, 10,  1, 0x0,  3, 11, 12, 0x0),\n    gsSP2Triangles( 3, 12, 13, 0x0,  3, 13,  4, 0x0),\n    gsSP2Triangles(14, 12, 11, 0x0,  8,  9, 15, 0x0),\n    gsSP2Triangles( 8, 15, 14, 0x0, 14, 11,  8, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07029128, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 4,  0,  2, 0x0,  1,  3,  5, 0x0),\n    gsSP2Triangles( 2,  6,  7, 0x0,  2,  7,  4, 0x0),\n    gsSP2Triangles( 2,  5,  6, 0x0,  5,  3,  8, 0x0),\n    gsSP1Triangle( 5,  8,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0702A1B8 - 0x0702A2A0\nconst Gfx ttm_seg7_dl_0702A1B8[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(980, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_070291B8),\n    gsSPDisplayList(ttm_seg7_dl_070299D0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_07029A18),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_PASS2),\n    gsSPDisplayList(ttm_seg7_dl_0702A0D8),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/4/2/model.inc.c",
    "content": "// 0x0702A2A0 - 0x0702A2B8\nstatic const Lights1 ttm_seg7_lights_0702A2A0 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0702A2B8 - 0x0702A3A8\nstatic const Vtx ttm_seg7_vertex_0702A2B8[] = {\n    {{{   907,    592,  -4401}, 0, {  2012,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   907,     80,  -5220}, 0, {     0,  -3098}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   907,     80,  -4401}, 0, {     0,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  6539,   1206,  -2252}, 0, {     0,    990}, {0x83, 0x00, 0x14, 0xff}}},\n    {{{  6539,   1718,  -2252}, 0, {  2012,    990}, {0x82, 0x00, 0x0a, 0xff}}},\n    {{{  6381,   1616,  -2886}, 0, {  2012,  -3086}, {0x89, 0x00, 0x2c, 0xff}}},\n    {{{  6381,   1104,  -2886}, 0, {     0,  -3086}, {0x89, 0x00, 0x2c, 0xff}}},\n    {{{  5644,    899,  -3933}, 0, {     0,  -3080}, {0xb1, 0x00, 0x62, 0xff}}},\n    {{{  6071,   1001,  -3506}, 0, {     0,    990}, {0x96, 0x00, 0x44, 0xff}}},\n    {{{  6071,   1513,  -3506}, 0, {  2012,    990}, {0x9e, 0x00, 0x4f, 0xff}}},\n    {{{  5644,   1411,  -3933}, 0, {  2012,  -3080}, {0xbc, 0x00, 0x6a, 0xff}}},\n    {{{  4390,    694,  -4401}, 0, {     0,  -3086}, {0xf1, 0x00, 0x7e, 0xff}}},\n    {{{  5024,   1308,  -4243}, 0, {  2012,    990}, {0xd9, 0x00, 0x78, 0xff}}},\n    {{{  4390,   1206,  -4401}, 0, {  2012,  -3086}, {0xf1, 0x00, 0x7e, 0xff}}},\n    {{{  5024,    796,  -4243}, 0, {     0,    990}, {0xd0, 0x00, 0x75, 0xff}}},\n};\n\n// 0x0702A3A8 - 0x0702A498\nstatic const Vtx ttm_seg7_vertex_0702A3A8[] = {\n    {{{  6259,   1974,   2093}, 0, {     0,      0}, {0xbc, 0x00, 0x96, 0xff}}},\n    {{{  6048,   2025,   2198}, 0, {     0,    990}, {0xd5, 0x00, 0x89, 0xff}}},\n    {{{  6048,   2537,   2198}, 0, {  2012,    990}, {0xd5, 0x00, 0x89, 0xff}}},\n    {{{   907,    592,  -4401}, 0, {  2012,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   907,    592,  -5220}, 0, {  2012,  -3098}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   907,     80,  -5220}, 0, {     0,  -3098}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3058,   2486,   2868}, 0, {     0,    990}, {0xe5, 0x00, 0x85, 0xff}}},\n    {{{  3058,   2998,   2868}, 0, {  2012,    970}, {0xe5, 0x00, 0x85, 0xff}}},\n    {{{  5824,   2588,   2254}, 0, {  2012, -13318}, {0xe4, 0x00, 0x85, 0xff}}},\n    {{{  5824,   2076,   2254}, 0, {     0, -13298}, {0xe3, 0x00, 0x85, 0xff}}},\n    {{{  6048,   2537,   2198}, 0, {  2012,      0}, {0xd5, 0x00, 0x89, 0xff}}},\n    {{{  6048,   2025,   2198}, 0, {     0,      0}, {0xd5, 0x00, 0x89, 0xff}}},\n    {{{  5824,   2076,   2254}, 0, {     0,    990}, {0xe3, 0x00, 0x85, 0xff}}},\n    {{{  5824,   2588,   2254}, 0, {  2012,    990}, {0xe4, 0x00, 0x85, 0xff}}},\n    {{{  6259,   2486,   2093}, 0, {  2012,      0}, {0xb1, 0x00, 0x9e, 0xff}}},\n};\n\n// 0x0702A498 - 0x0702A588\nstatic const Vtx ttm_seg7_vertex_0702A498[] = {\n    {{{  6539,   1769,   1127}, 0, {     0,  -1058}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6539,   2332,   1539}, 0, {  2012,    992}, {0x82, 0x00, 0xf6, 0xff}}},\n    {{{  6539,   2281,   1127}, 0, {  2012,  -1054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6378,   1923,   1973}, 0, {     0,      0}, {0x9d, 0x00, 0xb1, 0xff}}},\n    {{{  6259,   2486,   2093}, 0, {  2012,    990}, {0xb1, 0x00, 0x9e, 0xff}}},\n    {{{  6378,   2435,   1973}, 0, {  2012,      0}, {0x96, 0x00, 0xbc, 0xff}}},\n    {{{  6259,   1974,   2093}, 0, {     0,    990}, {0xbc, 0x00, 0x96, 0xff}}},\n    {{{  6483,   1872,   1763}, 0, {     0,      0}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{  6378,   2435,   1973}, 0, {  2012,    990}, {0x96, 0x00, 0xbc, 0xff}}},\n    {{{  6483,   2384,   1763}, 0, {  2012,      0}, {0x88, 0x00, 0xd9, 0xff}}},\n    {{{  6378,   1923,   1973}, 0, {     0,    990}, {0x9d, 0x00, 0xb1, 0xff}}},\n    {{{  6539,   1820,   1539}, 0, {     0,      0}, {0x83, 0x00, 0xec, 0xff}}},\n    {{{  6483,   2384,   1763}, 0, {  2012,    990}, {0x88, 0x00, 0xd9, 0xff}}},\n    {{{  6539,   2332,   1539}, 0, {  2012,      0}, {0x82, 0x00, 0xf6, 0xff}}},\n    {{{  6483,   1872,   1763}, 0, {     0,    990}, {0x8b, 0x00, 0xd0, 0xff}}},\n};\n\n// 0x0702A588 - 0x0702A678\nstatic const Vtx ttm_seg7_vertex_0702A588[] = {\n    {{{  6071,   1001,  -3506}, 0, {     0,  -3098}, {0x96, 0x00, 0x44, 0xff}}},\n    {{{  6381,   1616,  -2886}, 0, {  2012,    990}, {0x89, 0x00, 0x2c, 0xff}}},\n    {{{  6071,   1513,  -3506}, 0, {  2012,  -3098}, {0x9e, 0x00, 0x4f, 0xff}}},\n    {{{  6539,   1769,   1127}, 0, {     0,  -1058}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6539,   1820,   1539}, 0, {     0,    990}, {0x83, 0x00, 0xec, 0xff}}},\n    {{{  6539,   2332,   1539}, 0, {  2012,    992}, {0x82, 0x00, 0xf6, 0xff}}},\n    {{{  6539,   1769,   1127}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6539,   1923,  -1124}, 0, {  2012, -12296}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6539,   1411,  -1124}, 0, {     0, -12324}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6539,   2281,   1127}, 0, {  2012,   1016}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6539,   1718,  -2252}, 0, {  2012,  -6164}, {0x82, 0x00, 0x0a, 0xff}}},\n    {{{  6539,   1206,  -2252}, 0, {     0,  -6160}, {0x83, 0x00, 0x14, 0xff}}},\n    {{{  6539,   1411,  -1124}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6539,   1923,  -1124}, 0, {  2012,    986}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  6381,   1104,  -2886}, 0, {     0,    990}, {0x89, 0x00, 0x2c, 0xff}}},\n};\n\n// 0x0702A678 - 0x0702A738\nstatic const Vtx ttm_seg7_vertex_0702A678[] = {\n    {{{  5024,    796,  -4243}, 0, {     0,  -3098}, {0xd0, 0x00, 0x75, 0xff}}},\n    {{{  5644,    899,  -3933}, 0, {     0,    990}, {0xb1, 0x00, 0x62, 0xff}}},\n    {{{  5644,   1411,  -3933}, 0, {  2012,    990}, {0xbc, 0x00, 0x6a, 0xff}}},\n    {{{  5024,   1308,  -4243}, 0, {  2012,  -3098}, {0xd9, 0x00, 0x78, 0xff}}},\n    {{{  4390,    694,  -4401}, 0, {     0,    990}, {0xf1, 0x00, 0x7e, 0xff}}},\n    {{{  3262,   1104,  -4401}, 0, {  2012,  -5142}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3262,    592,  -4401}, 0, {     0,  -5154}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4390,   1206,  -4401}, 0, {  2012,   1000}, {0xf1, 0x00, 0x7e, 0xff}}},\n    {{{   907,    592,  -4401}, 0, {  2012, -12296}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3262,    592,  -4401}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3262,   1104,  -4401}, 0, {  2012,    992}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   907,     80,  -4401}, 0, {     0, -12300}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x0702A738 - 0x0702A8A0\nstatic const Gfx ttm_seg7_dl_0702A738[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_0702A2A0.l, 1),\n    gsSPLight(&ttm_seg7_lights_0702A2A0.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0702A2B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0702A3A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0702A498, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0702A588, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0702A678, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0702A8A0 - 0x0702A948\nconst Gfx ttm_seg7_dl_0702A8A0[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_2CYCLE),\n    gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2),\n    gsDPSetDepthSource(G_ZS_PIXEL),\n    gsDPSetFogColor(0, 0, 0, 255),\n    gsSPFogPosition(980, 1000),\n    gsSPSetGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_0702A738),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_NOOP2),\n    gsSPClearGeometryMode(G_FOG),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/4/collision.inc.c",
    "content": "// 0x0702F0F8 - 0x0703013C\nconst Collision ttm_seg7_area_4_collision[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0xFF),\n    COL_VERTEX(-6860, 6042, 5120),\n    COL_VERTEX(-6963, 6144, 5120),\n    COL_VERTEX(-6860, 6094, 5634),\n    COL_VERTEX(-6963, 6196, 5634),\n    COL_VERTEX(-6246, 6042, 5120),\n    COL_VERTEX(-6246, 6094, 5634),\n    COL_VERTEX(-6143, 6196, 5634),\n    COL_VERTEX(-6143, 6144, 5120),\n    COL_VERTEX(8192, -6143, -8191),\n    COL_VERTEX(-8191, -6143, 8192),\n    COL_VERTEX(8192, -6143, 8192),\n    COL_VERTEX(-8191, -6143, -8191),\n    COL_VERTEX(-7489, -1865, -3787),\n    COL_VERTEX(-5441, -1865, -5835),\n    COL_VERTEX(-7489, -1865, -5835),\n    COL_VERTEX(-5441, -1865, -3787),\n    COL_VERTEX(-3188, -1967, -6756),\n    COL_VERTEX(-3188, -1558, -5220),\n    COL_VERTEX(-3188, -1558, -4401),\n    COL_VERTEX(-3188, -1967, -2353),\n    COL_VERTEX(-3188, 592, -5732),\n    COL_VERTEX(-3188, -841, -4401),\n    COL_VERTEX(-3188, -739, -4504),\n    COL_VERTEX(-3188, 592, -3377),\n    COL_VERTEX(-3188, -841, -5220),\n    COL_VERTEX(-3188, -739, -5118),\n    COL_VERTEX(-3188, 1616, -4708),\n    COL_VERTEX(6539, 1718, -2252),\n    COL_VERTEX(6539, 1411, -1124),\n    COL_VERTEX(6539, 1923, -1124),\n    COL_VERTEX(6539, 1206, -2252),\n    COL_VERTEX(6381, 1616, -2886),\n    COL_VERTEX(6865, 1616, -3066),\n    COL_VERTEX(7053, 1718, -2316),\n    COL_VERTEX(6619, 1564, -3902),\n    COL_VERTEX(6071, 1001, -3506),\n    COL_VERTEX(6495, 1513, -3812),\n    COL_VERTEX(5644, 1411, -3933),\n    COL_VERTEX(6071, 1513, -3506),\n    COL_VERTEX(5644, 899, -3933),\n    COL_VERTEX(5950, 1411, -4357),\n    COL_VERTEX(5204, 1308, -4728),\n    COL_VERTEX(5024, 796, -4243),\n    COL_VERTEX(4390, 1206, -4401),\n    COL_VERTEX(5024, 1308, -4243),\n    COL_VERTEX(4390, 694, -4401),\n    COL_VERTEX(4454, 1206, -4916),\n    COL_VERTEX(3262, 1104, -5220),\n    COL_VERTEX(907, 592, -4401),\n    COL_VERTEX(-3188, -1455, -4401),\n    COL_VERTEX(-628, -1967, -4401),\n    COL_VERTEX(-2217, -1279, -4401),\n    COL_VERTEX(-2217, -1279, -5220),\n    COL_VERTEX(-1218, -799, -4401),\n    COL_VERTEX(-1218, -799, -5220),\n    COL_VERTEX(-1730, -1106, -5220),\n    COL_VERTEX(-1730, -1106, -4401),\n    COL_VERTEX(-5441, -1865, -5220),\n    COL_VERTEX(-5441, -841, -3787),\n    COL_VERTEX(-5441, -1251, -4401),\n    COL_VERTEX(-5441, -841, -5835),\n    COL_VERTEX(-7489, -841, -3787),\n    COL_VERTEX(-5441, -1148, -4504),\n    COL_VERTEX(-5441, -1865, -4401),\n    COL_VERTEX(-6143, 6247, 6144),\n    COL_VERTEX(-6246, 6144, 6144),\n    COL_VERTEX(3058, 5251, 3687),\n    COL_VERTEX(3058, 3100, 3073),\n    COL_VERTEX(5918, 2742, 3022),\n    COL_VERTEX(3058, 2998, 2971),\n    COL_VERTEX(6040, 1462, -4481),\n    COL_VERTEX(7009, 1667, -3119),\n    COL_VERTEX(5293, 1462, -4968),\n    COL_VERTEX(5310, 1564, -5016),\n    COL_VERTEX(5257, 1360, -4872),\n    COL_VERTEX(4485, 1360, -5170),\n    COL_VERTEX(6100, 1564, -4564),\n    COL_VERTEX(6702, 1667, -3962),\n    COL_VERTEX(7051, 1923, -1124),\n    COL_VERTEX(7051, 2281, 1127),\n    COL_VERTEX(7205, 2332, 1127),\n    COL_VERTEX(7053, 2332, 1602),\n    COL_VERTEX(7205, 1974, -1124),\n    COL_VERTEX(7206, 1769, -2334),\n    COL_VERTEX(7307, 2435, 1127),\n    COL_VERTEX(7206, 2384, 1621),\n    COL_VERTEX(7307, 2076, -1124),\n    COL_VERTEX(7307, 1872, -2347),\n    COL_VERTEX(4472, 1257, -5068),\n    COL_VERTEX(6539, 1769, 1127),\n    COL_VERTEX(5906, 2640, 2921),\n    COL_VERTEX(6281, 2588, 2827),\n    COL_VERTEX(5887, 2588, 2768),\n    COL_VERTEX(6228, 2537, 2682),\n    COL_VERTEX(-5157, 5325, 2359),\n    COL_VERTEX(-5082, 5325, 2969),\n    COL_VERTEX(-5422, 5428, 3054),\n    COL_VERTEX(-5635, 5428, 2478),\n    COL_VERTEX(3058, 2179, 615),\n    COL_VERTEX(6317, 2691, 2923),\n    COL_VERTEX(5925, 2896, 3073),\n    COL_VERTEX(6048, 2537, 2198),\n    COL_VERTEX(3058, 2486, 2868),\n    COL_VERTEX(3058, 2998, 2868),\n    COL_VERTEX(6564, 2486, 2517),\n    COL_VERTEX(6259, 1974, 2093),\n    COL_VERTEX(6378, 1923, 1973),\n    COL_VERTEX(6802, 2435, 2279),\n    COL_VERTEX(6483, 1872, 1763),\n    COL_VERTEX(6968, 2384, 1942),\n    COL_VERTEX(6539, 1820, 1539),\n    COL_VERTEX(1829, 3365, 2290),\n    COL_VERTEX(600, 3616, 2725),\n    COL_VERTEX(1829, 3258, 2895),\n    COL_VERTEX(3058, 2998, 2356),\n    COL_VERTEX(-5757, 5530, 3222),\n    COL_VERTEX(-6116, 5530, 2723),\n    COL_VERTEX(-5993, 5632, 3458),\n    COL_VERTEX(-6492, 5632, 3099),\n    COL_VERTEX(-6737, 5735, 3580),\n    COL_VERTEX(-6161, 5735, 3793),\n    COL_VERTEX(-6246, 5837, 4133),\n    COL_VERTEX(-6856, 5837, 4058),\n    COL_VERTEX(3058, 3715, 2254),\n    COL_VERTEX(-6575, 6349, 3039),\n    COL_VERTEX(-6833, 5837, 3545),\n    COL_VERTEX(-6575, 5735, 3039),\n    COL_VERTEX(-6833, 6452, 3545),\n    COL_VERTEX(-6957, 5940, 4046),\n    COL_VERTEX(-6737, 6554, 3580),\n    COL_VERTEX(-6856, 6656, 4058),\n    COL_VERTEX(-6957, 6554, 4046),\n    COL_VERTEX(-6963, 6759, 5120),\n    COL_VERTEX(-6161, 6554, 3793),\n    COL_VERTEX(-6492, 6452, 3099),\n    COL_VERTEX(-6246, 6656, 4133),\n    COL_VERTEX(-6860, 6861, 5120),\n    COL_VERTEX(-6065, 6452, 3829),\n    COL_VERTEX(-5993, 6452, 3458),\n    COL_VERTEX(-6144, 6554, 4146),\n    COL_VERTEX(-6246, 6861, 5120),\n    COL_VERTEX(-5910, 5735, 3518),\n    COL_VERTEX(-5910, 6349, 3518),\n    COL_VERTEX(-6065, 5837, 3829),\n    COL_VERTEX(-6143, 6759, 5120),\n    COL_VERTEX(-6144, 5940, 4146),\n    COL_VERTEX(-6176, 6247, 2640),\n    COL_VERTEX(-6176, 5632, 2640),\n    COL_VERTEX(-6116, 6349, 2723),\n    COL_VERTEX(-5757, 6349, 3222),\n    COL_VERTEX(-5697, 5632, 3305),\n    COL_VERTEX(-5697, 6247, 3305),\n    COL_VERTEX(-5670, 6144, 2382),\n    COL_VERTEX(-5670, 5530, 2382),\n    COL_VERTEX(-5635, 6247, 2478),\n    COL_VERTEX(-5422, 6247, 3054),\n    COL_VERTEX(-5386, 5530, 3150),\n    COL_VERTEX(-5386, 6144, 3150),\n    COL_VERTEX(-5169, 6042, 2258),\n    COL_VERTEX(-5169, 5428, 2258),\n    COL_VERTEX(-5157, 6144, 2359),\n    COL_VERTEX(-5082, 6144, 2969),\n    COL_VERTEX(-5069, 5428, 3071),\n    COL_VERTEX(-5069, 6042, 3071),\n    COL_VERTEX(-6143, 6861, 6144),\n    COL_VERTEX(-6246, 6964, 6144),\n    COL_VERTEX(-6860, 6964, 6144),\n    COL_VERTEX(-6963, 6861, 6144),\n    COL_VERTEX(-3071, 4944, 2971),\n    COL_VERTEX(-3071, 4944, 2356),\n    COL_VERTEX(-3071, 5046, 3073),\n    COL_VERTEX(-3071, 5046, 2254),\n    COL_VERTEX(-3071, 5660, 2254),\n    COL_VERTEX(-3071, 5763, 2356),\n    COL_VERTEX(-3071, 5763, 2971),\n    COL_VERTEX(-3071, 5660, 3073),\n    COL_VERTEX(-1842, 5084, 2171),\n    COL_VERTEX(-1842, 4510, 2391),\n    COL_VERTEX(-1842, 4451, 2523),\n    COL_VERTEX(-613, 4506, 2152),\n    COL_VERTEX(-1842, 5216, 2230),\n    COL_VERTEX(-613, 4650, 2165),\n    COL_VERTEX(-613, 5045, 2635),\n    COL_VERTEX(-1842, 5436, 2804),\n    COL_VERTEX(-1842, 5377, 2936),\n    COL_VERTEX(-613, 5033, 2780),\n    COL_VERTEX(-613, 4562, 3175),\n    COL_VERTEX(-1842, 4803, 3156),\n    COL_VERTEX(-1842, 4671, 3097),\n    COL_VERTEX(-613, 4418, 3162),\n    COL_VERTEX(-613, 4023, 2691),\n    COL_VERTEX(-613, 4035, 2547),\n    COL_VERTEX(600, 3923, 2193),\n    COL_VERTEX(600, 4063, 2155),\n    COL_VERTEX(600, 4595, 2462),\n    COL_VERTEX(600, 4633, 2602),\n    COL_VERTEX(600, 4326, 3134),\n    COL_VERTEX(600, 4186, 3172),\n    COL_VERTEX(600, 3654, 2865),\n    COL_VERTEX(1829, 3483, 2207),\n    COL_VERTEX(1829, 4088, 2313),\n    COL_VERTEX(1829, 4172, 2432),\n    COL_VERTEX(1829, 4065, 3037),\n    COL_VERTEX(1829, 3946, 3120),\n    COL_VERTEX(1829, 3341, 3013),\n    COL_VERTEX(3058, 3100, 2254),\n    COL_VERTEX(3058, 3817, 2356),\n    COL_VERTEX(3058, 3817, 2971),\n    COL_VERTEX(3058, 3715, 3073),\n    COL_VERTEX(6654, 2537, 2641),\n    COL_VERTEX(6714, 2640, 2724),\n    COL_VERTEX(6927, 2486, 2369),\n    COL_VERTEX(7010, 2588, 2429),\n    COL_VERTEX(7112, 2435, 1996),\n    COL_VERTEX(7208, 2537, 2031),\n    COL_VERTEX(7307, 2486, 1633),\n    COL_VERTEX(7105, 1769, -3155),\n    COL_VERTEX(6381, 1104, -2886),\n    COL_VERTEX(3262, 1104, -4401),\n    COL_VERTEX(3262, 592, -4401),\n    COL_VERTEX(907, 592, -5220),\n    COL_VERTEX(907, 80, -5220),\n    COL_VERTEX(907, 80, -4401),\n    COL_VERTEX(-3188, -1967, -4401),\n    COL_VERTEX(-706, -390, -5220),\n    COL_VERTEX(-706, -390, -4401),\n    COL_VERTEX(-628, -1967, -5220),\n    COL_VERTEX(-7489, -841, -5835),\n    COL_VERTEX(-5441, -1251, -5220),\n    COL_VERTEX(-5441, -1148, -5118),\n    COL_VERTEX(-3188, -1455, -5220),\n    COL_VERTEX(-6860, 6144, 6144),\n    COL_VERTEX(-6963, 6247, 6144),\n    COL_VERTEX(3058, 2179, 3687),\n    COL_VERTEX(6130, 1667, -4606),\n    COL_VERTEX(6744, 1769, -3992),\n    COL_VERTEX(5824, 2588, 2254),\n    COL_VERTEX(4491, 1462, -5220),\n    COL_VERTEX(7154, 1872, -3172),\n    COL_VERTEX(7358, 2588, 1639),\n    COL_VERTEX(7358, 2537, 1127),\n    COL_VERTEX(7358, 1974, -2353),\n    COL_VERTEX(7358, 2179, -1124),\n    COL_VERTEX(6539, 2281, 1127),\n    COL_VERTEX(6334, 2793, 2971),\n    COL_VERTEX(6744, 2742, 2766),\n    COL_VERTEX(5824, 2076, 2254),\n    COL_VERTEX(6048, 2025, 2198),\n    COL_VERTEX(6259, 2486, 2093),\n    COL_VERTEX(6378, 2435, 1973),\n    COL_VERTEX(6483, 2384, 1763),\n    COL_VERTEX(6539, 2332, 1539),\n    COL_VERTEX(3058, 5251, 615),\n    COL_VERTEX(7051, 2691, 2459),\n    COL_VERTEX(7256, 2640, 2049),\n    COL_TRI_INIT(SURFACE_DEFAULT, 425),\n    COL_TRI(16, 17, 18),\n    COL_TRI(16, 18, 19),\n    COL_TRI(17, 16, 20),\n    COL_TRI(19, 18, 21),\n    COL_TRI(20, 19, 22),\n    COL_TRI(20, 23, 19),\n    COL_TRI(19, 21, 22),\n    COL_TRI(24, 17, 20),\n    COL_TRI(20, 22, 25),\n    COL_TRI(20, 25, 24),\n    COL_TRI(20, 26, 23),\n    COL_TRI(27, 28, 29),\n    COL_TRI(30, 27, 31),\n    COL_TRI(27, 32, 31),\n    COL_TRI(27, 33, 32),\n    COL_TRI(33, 29, 78),\n    COL_TRI(33, 27, 29),\n    COL_TRI(32, 33, 71),\n    COL_TRI(34, 32, 71),\n    COL_TRI(34, 36, 32),\n    COL_TRI(30, 31, 217),\n    COL_TRI(35, 217, 31),\n    COL_TRI(35, 31, 38),\n    COL_TRI(36, 38, 31),\n    COL_TRI(37, 38, 40),\n    COL_TRI(38, 36, 40),\n    COL_TRI(39, 35, 38),\n    COL_TRI(39, 38, 37),\n    COL_TRI(36, 34, 70),\n    COL_TRI(40, 36, 70),\n    COL_TRI(41, 37, 40),\n    COL_TRI(42, 37, 44),\n    COL_TRI(42, 39, 37),\n    COL_TRI(41, 44, 37),\n    COL_TRI(43, 44, 46),\n    COL_TRI(44, 41, 46),\n    COL_TRI(45, 42, 44),\n    COL_TRI(45, 44, 43),\n    COL_TRI(27, 30, 28),\n    COL_TRI(46, 41, 88),\n    COL_TRI(46, 88, 47),\n    COL_TRI(45, 43, 218),\n    COL_TRI(47, 218, 43),\n    COL_TRI(47, 43, 46),\n    COL_TRI(45, 218, 219),\n    COL_TRI(48, 218, 47),\n    COL_TRI(50, 56, 51),\n    COL_TRI(48, 47, 220),\n    COL_TRI(48, 221, 222),\n    COL_TRI(48, 220, 221),\n    COL_TRI(48, 222, 219),\n    COL_TRI(49, 223, 50),\n    COL_TRI(50, 224, 225),\n    COL_TRI(50, 226, 224),\n    COL_TRI(51, 49, 50),\n    COL_TRI(52, 51, 55),\n    COL_TRI(51, 56, 55),\n    COL_TRI(53, 225, 224),\n    COL_TRI(50, 225, 53),\n    COL_TRI(54, 53, 224),\n    COL_TRI(50, 53, 56),\n    COL_TRI(55, 56, 54),\n    COL_TRI(56, 53, 54),\n    COL_TRI(57, 51, 52),\n    COL_TRI(57, 63, 51),\n    COL_TRI(48, 219, 218),\n    COL_TRI(58, 62, 59),\n    COL_TRI(59, 15, 58),\n    COL_TRI(58, 60, 62),\n    COL_TRI(58, 61, 227),\n    COL_TRI(58, 227, 60),\n    COL_TRI(60, 227, 14),\n    COL_TRI(14, 227, 61),\n    COL_TRI(60, 13, 57),\n    COL_TRI(60, 57, 228),\n    COL_TRI(60, 228, 229),\n    COL_TRI(60, 229, 62),\n    COL_TRI(14, 61, 12),\n    COL_TRI(61, 58, 15),\n    COL_TRI(61, 15, 12),\n    COL_TRI(60, 14, 13),\n    COL_TRI(57, 24, 228),\n    COL_TRI(24, 25, 229),\n    COL_TRI(25, 22, 62),\n    COL_TRI(25, 62, 229),\n    COL_TRI(62, 22, 21),\n    COL_TRI(62, 21, 59),\n    COL_TRI(24, 229, 228),\n    COL_TRI(63, 59, 21),\n    COL_TRI(63, 21, 49),\n    COL_TRI(59, 63, 15),\n    COL_TRI(57, 230, 24),\n    COL_TRI(66, 233, 67),\n    COL_TRI(64, 5, 65),\n    COL_TRI(64, 6, 5),\n    COL_TRI(65, 5, 231),\n    COL_TRI(5, 2, 231),\n    COL_TRI(2, 3, 231),\n    COL_TRI(3, 232, 231),\n    COL_TRI(70, 34, 76),\n    COL_TRI(67, 90, 92),\n    COL_TRI(68, 90, 67),\n    COL_TRI(68, 67, 208),\n    COL_TRI(69, 67, 92),\n    COL_TRI(69, 67, 233),\n    COL_TRI(66, 67, 208),\n    COL_TRI(34, 71, 77),\n    COL_TRI(34, 77, 76),\n    COL_TRI(76, 77, 234),\n    COL_TRI(33, 83, 71),\n    COL_TRI(71, 216, 77),\n    COL_TRI(71, 83, 216),\n    COL_TRI(72, 73, 237),\n    COL_TRI(73, 76, 234),\n    COL_TRI(73, 72, 76),\n    COL_TRI(70, 76, 72),\n    COL_TRI(74, 70, 72),\n    COL_TRI(75, 72, 237),\n    COL_TRI(74, 72, 75),\n    COL_TRI(77, 235, 234),\n    COL_TRI(33, 78, 83),\n    COL_TRI(78, 82, 83),\n    COL_TRI(78, 79, 80),\n    COL_TRI(78, 80, 82),\n    COL_TRI(79, 81, 80),\n    COL_TRI(80, 85, 84),\n    COL_TRI(81, 85, 80),\n    COL_TRI(82, 80, 84),\n    COL_TRI(82, 86, 87),\n    COL_TRI(83, 82, 87),\n    COL_TRI(82, 84, 86),\n    COL_TRI(84, 239, 240),\n    COL_TRI(84, 215, 239),\n    COL_TRI(85, 215, 84),\n    COL_TRI(86, 84, 240),\n    COL_TRI(87, 86, 241),\n    COL_TRI(86, 242, 241),\n    COL_TRI(86, 240, 242),\n    COL_TRI(41, 74, 88),\n    COL_TRI(88, 74, 75),\n    COL_TRI(47, 88, 75),\n    COL_TRI(47, 75, 237),\n    COL_TRI(89, 29, 28),\n    COL_TRI(89, 243, 29),\n    COL_TRI(90, 68, 99),\n    COL_TRI(91, 90, 99),\n    COL_TRI(92, 90, 91),\n    COL_TRI(93, 92, 91),\n    COL_TRI(92, 236, 103),\n    COL_TRI(100, 68, 208),\n    COL_TRI(94, 97, 96),\n    COL_TRI(95, 94, 96),\n    COL_TRI(96, 97, 115),\n    COL_TRI(97, 116, 115),\n    COL_TRI(69, 233, 98),\n    COL_TRI(98, 114, 69),\n    COL_TRI(68, 100, 244),\n    COL_TRI(99, 68, 244),\n    COL_TRI(69, 103, 113),\n    COL_TRI(66, 208, 207),\n    COL_TRI(93, 236, 92),\n    COL_TRI(93, 101, 236),\n    COL_TRI(101, 246, 236),\n    COL_TRI(102, 236, 246),\n    COL_TRI(102, 103, 236),\n    COL_TRI(92, 103, 69),\n    COL_TRI(103, 114, 113),\n    COL_TRI(108, 249, 250),\n    COL_TRI(101, 247, 246),\n    COL_TRI(104, 248, 101),\n    COL_TRI(104, 101, 93),\n    COL_TRI(105, 101, 248),\n    COL_TRI(105, 247, 101),\n    COL_TRI(106, 105, 248),\n    COL_TRI(107, 248, 104),\n    COL_TRI(107, 249, 248),\n    COL_TRI(106, 248, 249),\n    COL_TRI(108, 106, 249),\n    COL_TRI(109, 249, 107),\n    COL_TRI(109, 250, 249),\n    COL_TRI(110, 108, 250),\n    COL_TRI(81, 251, 250),\n    COL_TRI(81, 250, 109),\n    COL_TRI(110, 250, 251),\n    COL_TRI(89, 110, 251),\n    COL_TRI(79, 251, 81),\n    COL_TRI(79, 243, 251),\n    COL_TRI(89, 251, 243),\n    COL_TRI(78, 243, 79),\n    COL_TRI(78, 29, 243),\n    COL_TRI(111, 112, 113),\n    COL_TRI(112, 198, 113),\n    COL_TRI(98, 205, 114),\n    COL_TRI(36, 31, 32),\n    COL_TRI(115, 116, 117),\n    COL_TRI(116, 118, 117),\n    COL_TRI(117, 118, 120),\n    COL_TRI(118, 119, 120),\n    COL_TRI(119, 122, 121),\n    COL_TRI(120, 119, 121),\n    COL_TRI(124, 127, 125),\n    COL_TRI(66, 207, 206),\n    COL_TRI(121, 122, 4),\n    COL_TRI(122, 0, 4),\n    COL_TRI(123, 98, 252),\n    COL_TRI(123, 205, 98),\n    COL_TRI(124, 125, 126),\n    COL_TRI(125, 119, 118),\n    COL_TRI(1, 128, 131),\n    COL_TRI(122, 128, 1),\n    COL_TRI(125, 128, 119),\n    COL_TRI(127, 128, 125),\n    COL_TRI(127, 131, 128),\n    COL_TRI(128, 122, 119),\n    COL_TRI(0, 122, 1),\n    COL_TRI(129, 127, 124),\n    COL_TRI(130, 131, 127),\n    COL_TRI(129, 130, 127),\n    COL_TRI(1, 131, 132),\n    COL_TRI(131, 130, 136),\n    COL_TRI(132, 131, 136),\n    COL_TRI(133, 129, 134),\n    COL_TRI(134, 129, 124),\n    COL_TRI(135, 130, 129),\n    COL_TRI(133, 135, 129),\n    COL_TRI(130, 135, 140),\n    COL_TRI(136, 130, 140),\n    COL_TRI(137, 133, 138),\n    COL_TRI(138, 133, 134),\n    COL_TRI(139, 135, 133),\n    COL_TRI(137, 139, 133),\n    COL_TRI(135, 139, 144),\n    COL_TRI(140, 135, 144),\n    COL_TRI(141, 137, 142),\n    COL_TRI(141, 143, 137),\n    COL_TRI(142, 137, 138),\n    COL_TRI(143, 139, 137),\n    COL_TRI(146, 124, 126),\n    COL_TRI(144, 139, 145),\n    COL_TRI(143, 145, 139),\n    COL_TRI(120, 143, 141),\n    COL_TRI(120, 121, 143),\n    COL_TRI(121, 145, 143),\n    COL_TRI(144, 145, 7),\n    COL_TRI(145, 121, 4),\n    COL_TRI(7, 145, 4),\n    COL_TRI(117, 120, 141),\n    COL_TRI(146, 126, 147),\n    COL_TRI(126, 118, 116),\n    COL_TRI(126, 125, 118),\n    COL_TRI(134, 124, 146),\n    COL_TRI(148, 134, 146),\n    COL_TRI(138, 134, 148),\n    COL_TRI(142, 138, 149),\n    COL_TRI(149, 138, 148),\n    COL_TRI(150, 142, 151),\n    COL_TRI(150, 141, 142),\n    COL_TRI(151, 142, 149),\n    COL_TRI(117, 141, 150),\n    COL_TRI(115, 117, 150),\n    COL_TRI(147, 126, 116),\n    COL_TRI(152, 147, 153),\n    COL_TRI(152, 146, 147),\n    COL_TRI(147, 116, 97),\n    COL_TRI(153, 147, 97),\n    COL_TRI(148, 146, 152),\n    COL_TRI(149, 148, 154),\n    COL_TRI(154, 148, 152),\n    COL_TRI(151, 149, 155),\n    COL_TRI(155, 149, 154),\n    COL_TRI(156, 150, 151),\n    COL_TRI(157, 151, 155),\n    COL_TRI(156, 151, 157),\n    COL_TRI(115, 150, 156),\n    COL_TRI(96, 115, 156),\n    COL_TRI(158, 153, 159),\n    COL_TRI(158, 152, 153),\n    COL_TRI(153, 97, 94),\n    COL_TRI(159, 153, 94),\n    COL_TRI(154, 152, 158),\n    COL_TRI(164, 144, 7),\n    COL_TRI(155, 154, 160),\n    COL_TRI(160, 154, 158),\n    COL_TRI(157, 155, 161),\n    COL_TRI(161, 155, 160),\n    COL_TRI(162, 156, 157),\n    COL_TRI(163, 157, 161),\n    COL_TRI(162, 157, 163),\n    COL_TRI(96, 156, 162),\n    COL_TRI(95, 96, 162),\n    COL_TRI(164, 7, 64),\n    COL_TRI(94, 95, 168),\n    COL_TRI(165, 144, 164),\n    COL_TRI(165, 140, 144),\n    COL_TRI(166, 136, 140),\n    COL_TRI(166, 140, 165),\n    COL_TRI(167, 136, 166),\n    COL_TRI(167, 132, 136),\n    COL_TRI(132, 167, 232),\n    COL_TRI(1, 132, 232),\n    COL_TRI(168, 95, 170),\n    COL_TRI(169, 94, 168),\n    COL_TRI(173, 160, 158),\n    COL_TRI(95, 162, 170),\n    COL_TRI(170, 163, 175),\n    COL_TRI(170, 162, 163),\n    COL_TRI(159, 94, 169),\n    COL_TRI(171, 159, 169),\n    COL_TRI(172, 159, 171),\n    COL_TRI(172, 158, 159),\n    COL_TRI(173, 158, 172),\n    COL_TRI(178, 169, 168),\n    COL_TRI(161, 160, 173),\n    COL_TRI(174, 161, 173),\n    COL_TRI(175, 161, 174),\n    COL_TRI(175, 163, 161),\n    COL_TRI(171, 169, 177),\n    COL_TRI(176, 171, 177),\n    COL_TRI(176, 172, 171),\n    COL_TRI(177, 169, 178),\n    COL_TRI(177, 178, 191),\n    COL_TRI(179, 177, 191),\n    COL_TRI(179, 176, 177),\n    COL_TRI(180, 176, 181),\n    COL_TRI(181, 176, 179),\n    COL_TRI(180, 172, 176),\n    COL_TRI(173, 172, 180),\n    COL_TRI(182, 183, 180),\n    COL_TRI(182, 180, 181),\n    COL_TRI(183, 173, 180),\n    COL_TRI(183, 174, 173),\n    COL_TRI(184, 183, 185),\n    COL_TRI(185, 183, 182),\n    COL_TRI(184, 174, 183),\n    COL_TRI(191, 178, 190),\n    COL_TRI(175, 174, 184),\n    COL_TRI(186, 187, 184),\n    COL_TRI(186, 184, 185),\n    COL_TRI(187, 175, 184),\n    COL_TRI(187, 170, 175),\n    COL_TRI(188, 187, 189),\n    COL_TRI(189, 187, 186),\n    COL_TRI(188, 170, 187),\n    COL_TRI(168, 170, 188),\n    COL_TRI(178, 168, 188),\n    COL_TRI(190, 178, 188),\n    COL_TRI(190, 188, 189),\n    COL_TRI(196, 185, 195),\n    COL_TRI(192, 179, 191),\n    COL_TRI(192, 191, 112),\n    COL_TRI(191, 190, 112),\n    COL_TRI(193, 179, 192),\n    COL_TRI(181, 179, 193),\n    COL_TRI(194, 182, 181),\n    COL_TRI(194, 181, 193),\n    COL_TRI(185, 182, 195),\n    COL_TRI(195, 182, 194),\n    COL_TRI(196, 186, 185),\n    COL_TRI(189, 186, 197),\n    COL_TRI(197, 186, 196),\n    COL_TRI(198, 190, 189),\n    COL_TRI(198, 189, 197),\n    COL_TRI(112, 190, 198),\n    COL_TRI(111, 192, 112),\n    COL_TRI(193, 192, 199),\n    COL_TRI(199, 192, 111),\n    COL_TRI(200, 194, 193),\n    COL_TRI(200, 193, 199),\n    COL_TRI(113, 198, 204),\n    COL_TRI(114, 111, 113),\n    COL_TRI(195, 194, 201),\n    COL_TRI(201, 194, 200),\n    COL_TRI(202, 196, 195),\n    COL_TRI(202, 195, 201),\n    COL_TRI(197, 196, 203),\n    COL_TRI(203, 196, 202),\n    COL_TRI(204, 197, 203),\n    COL_TRI(204, 198, 197),\n    COL_TRI(199, 111, 205),\n    COL_TRI(205, 111, 114),\n    COL_TRI(123, 200, 199),\n    COL_TRI(123, 199, 205),\n    COL_TRI(201, 200, 206),\n    COL_TRI(206, 200, 123),\n    COL_TRI(207, 202, 201),\n    COL_TRI(207, 201, 206),\n    COL_TRI(203, 202, 208),\n    COL_TRI(208, 202, 207),\n    COL_TRI(67, 203, 208),\n    COL_TRI(67, 204, 203),\n    COL_TRI(69, 204, 67),\n    COL_TRI(113, 204, 69),\n    COL_TRI(206, 123, 252),\n    COL_TRI(66, 206, 252),\n    COL_TRI(93, 91, 209),\n    COL_TRI(104, 93, 209),\n    COL_TRI(91, 99, 210),\n    COL_TRI(209, 91, 210),\n    COL_TRI(210, 99, 245),\n    COL_TRI(99, 244, 245),\n    COL_TRI(104, 209, 211),\n    COL_TRI(107, 104, 211),\n    COL_TRI(209, 210, 212),\n    COL_TRI(211, 209, 212),\n    COL_TRI(210, 245, 253),\n    COL_TRI(212, 210, 253),\n    COL_TRI(107, 211, 213),\n    COL_TRI(109, 107, 213),\n    COL_TRI(211, 212, 214),\n    COL_TRI(213, 211, 214),\n    COL_TRI(212, 253, 254),\n    COL_TRI(214, 212, 254),\n    COL_TRI(109, 213, 85),\n    COL_TRI(81, 109, 85),\n    COL_TRI(216, 238, 235),\n    COL_TRI(213, 214, 215),\n    COL_TRI(85, 213, 215),\n    COL_TRI(214, 254, 239),\n    COL_TRI(215, 214, 239),\n    COL_TRI(83, 87, 216),\n    COL_TRI(216, 87, 238),\n    COL_TRI(87, 241, 238),\n    COL_TRI(77, 216, 235),\n    COL_TRI(40, 70, 74),\n    COL_TRI(41, 40, 74),\n    COL_TRI_INIT(SURFACE_DEATH_PLANE, 2),\n    COL_TRI(8, 9, 10),\n    COL_TRI(8, 11, 9),\n    COL_TRI_INIT(SURFACE_INSTANT_WARP_1E, 6),\n    COL_TRI(0, 1, 2),\n    COL_TRI(1, 3, 2),\n    COL_TRI(4, 0, 2),\n    COL_TRI(5, 4, 2),\n    COL_TRI(6, 4, 5),\n    COL_TRI(6, 7, 4),\n    COL_TRI_INIT(SURFACE_NO_CAM_COL_SLIPPERY, 2),\n    COL_TRI(12, 13, 14),\n    COL_TRI(12, 15, 13),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/4/geo.inc.c",
    "content": "// 0x0E000C84\nconst GeoLayout ttm_geo_000C84[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND_COLOR(0x0001),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 12800, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(9, 0, 2000, 6000, 0, 0, 0, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, ttm_seg7_dl_0702A1B8),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, ttm_seg7_dl_0702A8A0),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(0, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttm/areas/4/macro.inc.c",
    "content": "// 0x07030418 - 0x07030474\nconst MacroObject ttm_seg7_area_4_macro_objs[] = {\n    MACRO_OBJECT(/*preset*/ macro_coin_line_horizontal, /*yaw*/  90, /*pos*/  2128,  1085, -4800),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  5878,  2583,  2430),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  6620,  2348,  1621),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  6642,  1995,  -666),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/ -2000,  4551,  2678),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/   847,  3575,  2621),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  3631,  2914,  2819),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  6472,  1613, -2945),\n    MACRO_OBJECT(/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  5272,  1342, -4254),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/ttm/blue_smiley/geo.inc.c",
    "content": "// 0x0E000D14\nconst GeoLayout ttm_geo_000D14[] = {\n    GEO_CULLING_RADIUS(1000),\n    GEO_OPEN_NODE(),\n        GEO_BILLBOARD(),\n        GEO_OPEN_NODE(),\n            GEO_SCALE(0x00, 32768),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_ALPHA, ttm_seg7_dl_0702A9C0),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttm/blue_smiley/model.inc.c",
    "content": "// 0x0702A948 - 0x0702A988\nstatic const Vtx ttm_seg7_vertex_0702A948[] = {\n    {{{  1024,   2048,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1023,   2048,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1023,      0,      0}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1024,      0,      0}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0702A988 - 0x0702A9C0\nstatic const Gfx ttm_seg7_dl_0702A988[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09002800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttm_seg7_vertex_0702A948, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0702A9C0 - 0x0702AA30\nconst Gfx ttm_seg7_dl_0702A9C0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_0702A988),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"game/level_geo.h\"\n#include \"game/geo_misc.h\"\n#include \"game/camera.h\"\n#include \"game/moving_texture.h\"\n#include \"game/screen_transition.h\"\n#include \"game/paintings.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"levels/ttm/header.h\"\n\n#include \"levels/ttm/star_cage/geo.inc.c\"\n#include \"levels/ttm/rolling_log/geo.inc.c\"\n#include \"levels/ttm/areas/1/3/geo.inc.c\"\n#include \"levels/ttm/areas/1/4/geo.inc.c\"\n#include \"levels/ttm/areas/1/5/geo.inc.c\"\n#include \"levels/ttm/areas/1/6/geo.inc.c\"\n#include \"levels/ttm/areas/1/7/geo.inc.c\"\n#include \"levels/ttm/areas/1/8/geo.inc.c\"\n#include \"levels/ttm/areas/1/9/geo.inc.c\"\n#include \"levels/ttm/areas/1/10/geo.inc.c\"\n#include \"levels/ttm/areas/1/11/geo.inc.c\"\n#include \"levels/ttm/areas/1/12/geo.inc.c\"\n#include \"levels/ttm/areas/1/13/geo.inc.c\"\n#include \"levels/ttm/areas/1/14/geo.inc.c\"\n#include \"levels/ttm/areas/1/15/geo.inc.c\"\n#include \"levels/ttm/areas/1/16/geo.inc.c\"\n#include \"levels/ttm/areas/1/17/geo.inc.c\"\n#include \"levels/ttm/areas/1/18/geo.inc.c\"\n#include \"levels/ttm/areas/1/19/geo.inc.c\"\n#include \"levels/ttm/areas/1/20/geo.inc.c\"\n#include \"levels/ttm/areas/1/21/geo.inc.c\"\n#include \"levels/ttm/areas/1/geo.inc.c\"\n#include \"levels/ttm/areas/2/geo.inc.c\"\n#include \"levels/ttm/areas/3/geo.inc.c\"\n#include \"levels/ttm/areas/4/geo.inc.c\"\n#include \"levels/ttm/blue_smiley/geo.inc.c\"\n#include \"levels/ttm/yellow_smiley/geo.inc.c\"\n#include \"levels/ttm/star_smiley/geo.inc.c\"\n#include \"levels/ttm/moon_smiley/geo.inc.c\"\n#include \"levels/ttm/slide_exit_podium/geo.inc.c\"\n"
  },
  {
    "path": "levels/ttm/header.h",
    "content": "#ifndef TTM_HEADER_H\n#define TTM_HEADER_H\n\n#include \"types.h\"\n#include \"game/moving_texture.h\"\n\n// geo\nextern const GeoLayout ttm_geo_000710[];\nextern const GeoLayout ttm_geo_000730[];\nextern const GeoLayout ttm_geo_000748[];\nextern const GeoLayout ttm_geo_000778[];\nextern const GeoLayout ttm_geo_0007A8[];\nextern const GeoLayout ttm_geo_0007D8[];\nextern const GeoLayout ttm_geo_000808[];\nextern const GeoLayout ttm_geo_000830[];\nextern const GeoLayout ttm_geo_000858[];\nextern const GeoLayout ttm_geo_000880[];\nextern const GeoLayout ttm_geo_0008A8[];\nextern const GeoLayout ttm_geo_0008D0[];\nextern const GeoLayout ttm_geo_0008F8[];\nextern const GeoLayout ttm_geo_000920[];\nextern const GeoLayout ttm_geo_000948[];\nextern const GeoLayout ttm_geo_000970[];\nextern const GeoLayout ttm_geo_000990[];\nextern const GeoLayout ttm_geo_0009C0[];\nextern const GeoLayout ttm_geo_0009F0[];\nextern const GeoLayout ttm_geo_000A18[];\nextern const GeoLayout ttm_geo_000A40[];\nextern const GeoLayout ttm_geo_000A70[];\nextern const GeoLayout ttm_geo_000B5C[];\nextern const GeoLayout ttm_geo_000BEC[];\nextern const GeoLayout ttm_geo_000C84[];\nextern const GeoLayout ttm_geo_000D14[];\nextern const GeoLayout ttm_geo_000D4C[];\nextern const GeoLayout ttm_geo_000D84[];\nextern const GeoLayout ttm_geo_000DBC[];\nextern const GeoLayout ttm_geo_000DF4[];\n\n// leveldata\nextern const Gfx ttm_seg7_dl_0700A120[];\nextern const Gfx ttm_seg7_dl_0700A2E0[];\nextern const Gfx ttm_seg7_dl_0700A8C0[];\nextern const Gfx ttm_seg7_dl_0700AB08[];\nextern const Gfx ttm_seg7_dl_0700AF90[];\nextern const Gfx ttm_seg7_dl_0700B0D0[];\nextern const Gfx ttm_seg7_dl_0700B530[];\nextern const Gfx ttm_seg7_dl_0700B670[];\nextern const Gfx ttm_seg7_dl_0700BAD0[];\nextern const Gfx ttm_seg7_dl_0700BC10[];\nextern const Gfx ttm_seg7_dl_0700BE20[];\nextern const Gfx ttm_seg7_dl_0700C070[];\nextern const Gfx ttm_seg7_dl_0700C408[];\nextern const Gfx ttm_seg7_dl_0700CAE0[];\nextern const Gfx ttm_seg7_dl_0700CD10[];\nextern const Gfx ttm_seg7_dl_0700D1D8[];\nextern const Gfx ttm_seg7_dl_0700D688[];\nextern const Gfx ttm_seg7_dl_0700DF78[];\nextern const Gfx ttm_seg7_dl_0700E308[];\nextern const Gfx ttm_seg7_dl_0700EAC8[];\nextern const Gfx ttm_seg7_dl_0700EC58[];\nextern const Gfx ttm_seg7_dl_0700F270[];\nextern const Gfx ttm_seg7_dl_0700FA18[];\nextern const Gfx ttm_seg7_dl_07010978[];\nextern const Gfx ttm_seg7_dl_07010A68[];\nextern const Gfx ttm_seg7_dl_07011128[];\nextern const Gfx ttm_seg7_dl_07011608[];\nextern const Gfx ttm_seg7_dl_07011C78[];\nextern const Gfx ttm_seg7_dl_07011D78[];\nextern const Gfx ttm_seg7_dl_07012270[];\nextern const Gfx ttm_seg7_dl_07012388[];\nextern const Gfx ttm_seg7_dl_070123A0[];\nextern const Gfx ttm_seg7_dl_070123B8[];\nextern const Gfx ttm_seg7_dl_07012410[];\nextern struct Painting ttm_slide_painting;\nextern const Gfx ttm_seg7_dl_07013430[];\nextern const Gfx ttm_seg7_dl_07013608[];\nextern const Collision ttm_seg7_collision_pitoune_2[];\nextern const Collision ttm_seg7_collision_ukiki_cage[];\nextern const Collision ttm_seg7_area_1_collision[];\nextern const MacroObject ttm_seg7_area_1_macro_objs[];\nextern const Trajectory ttm_seg7_trajectory_070170A0[];\nextern const struct MovtexQuadCollection ttm_movtex_puddle[];\nextern Movtex ttm_movtex_tris_begin_waterfall[];\nextern Movtex ttm_movtex_tris_begin_puddle_waterfall[];\nextern Movtex ttm_movtex_tris_end_waterfall[];\nextern Movtex ttm_movtex_tris_end_puddle_waterfall[];\nextern Movtex ttm_movtex_tris_puddle_waterfall[];\nextern const Gfx ttm_dl_waterfall[];\nextern const Gfx ttm_dl_bottom_waterfall[];\nextern const Gfx ttm_dl_puddle_waterfall[];\nextern const Gfx ttm_seg7_dl_0701D798[];\nextern const Gfx ttm_seg7_dl_0701DBB8[];\nextern const Gfx ttm_seg7_dl_070249A0[];\nextern const Gfx ttm_seg7_dl_07024C78[];\nextern const Gfx ttm_seg7_dl_07025F48[];\nextern const Gfx ttm_seg7_dl_0702A1B8[];\nextern const Gfx ttm_seg7_dl_0702A8A0[];\nextern const Gfx ttm_seg7_dl_0702A9C0[];\nextern const Gfx ttm_seg7_dl_0702AAA8[];\nextern const Gfx ttm_seg7_dl_0702AB90[];\nextern const Gfx ttm_seg7_dl_0702AC78[];\nextern const Gfx ttm_seg7_dl_0702BB60[];\nextern const Collision ttm_seg7_area_2_collision[];\nextern const Collision ttm_seg7_area_3_collision[];\nextern const Collision ttm_seg7_area_4_collision[];\nextern const Collision ttm_seg7_collision_podium_warp[];\nextern const MacroObject ttm_seg7_area_2_macro_objs[];\nextern const MacroObject ttm_seg7_area_3_macro_objs[];\nextern const MacroObject ttm_seg7_area_4_macro_objs[];\n\n// script\nextern const LevelScript level_ttm_entry[];\n\n#endif\n"
  },
  {
    "path": "levels/ttm/level.yaml",
    "content": "# Tall, Tall Mountain\nshort-name: ttm\nfull-name: Tall, Tall Mountain\ntexture-file: [\"/texture.inc.c\"]\narea-count: 4\nobjects: [blue_smiley, moon_smiley, rolling_log, slide_exit_podium, star_cage, star_smiley, yellow_smiley]\nshared-path: []\n# loaded files\nskybox-bin: water\ntexture-bin: mountain\neffects: false\nactor-bins: [group6]\ncommon-bin: [common0]\n"
  },
  {
    "path": "levels/ttm/leveldata.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"surface_terrains.h\"\n#include \"moving_texture_macros.h\"\n#include \"level_misc_macros.h\"\n#include \"macro_presets.h\"\n#include \"special_presets.h\"\n#include \"textures.h\"\n#include \"dialog_ids.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/ttm/texture.inc.c\"\n#include \"levels/ttm/areas/1/1/model.inc.c\"\n#include \"levels/ttm/areas/1/2/model.inc.c\"\n#include \"levels/ttm/areas/1/3/1.inc.c\"\n#include \"levels/ttm/areas/1/3/2.inc.c\"\n#include \"levels/ttm/areas/1/4/1.inc.c\"\n#include \"levels/ttm/areas/1/4/2.inc.c\"\n#include \"levels/ttm/areas/1/5/1.inc.c\"\n#include \"levels/ttm/areas/1/5/2.inc.c\"\n#include \"levels/ttm/areas/1/6/1.inc.c\"\n#include \"levels/ttm/areas/1/6/2.inc.c\"\n#include \"levels/ttm/areas/1/7/model.inc.c\"\n#include \"levels/ttm/areas/1/8/model.inc.c\"\n#include \"levels/ttm/areas/1/9/model.inc.c\"\n#include \"levels/ttm/areas/1/10/model.inc.c\"\n#include \"levels/ttm/areas/1/11/model.inc.c\"\n#include \"levels/ttm/areas/1/12/model.inc.c\"\n#include \"levels/ttm/areas/1/13/model.inc.c\"\n#include \"levels/ttm/areas/1/14/model.inc.c\"\n#include \"levels/ttm/areas/1/15/model.inc.c\"\n#include \"levels/ttm/areas/1/16/1.inc.c\"\n#include \"levels/ttm/areas/1/16/2.inc.c\"\n#include \"levels/ttm/areas/1/17/1.inc.c\"\n#include \"levels/ttm/areas/1/17/2.inc.c\"\n#include \"levels/ttm/areas/1/18/1.inc.c\"\n#include \"levels/ttm/areas/1/18/2.inc.c\"\n#include \"levels/ttm/areas/1/19/model.inc.c\"\n#include \"levels/ttm/areas/1/20/model.inc.c\"\n#include \"levels/ttm/areas/1/21/1.inc.c\"\n#include \"levels/ttm/areas/1/21/2.inc.c\"\n#include \"levels/ttm/rolling_log/model.inc.c\"\n#include \"levels/ttm/areas/1/painting.inc.c\"\n#include \"levels/ttm/star_cage/1.inc.c\"\n#include \"levels/ttm/star_cage/2.inc.c\"\n#include \"levels/ttm/rolling_log/collision.inc.c\"\n#include \"levels/ttm/star_cage/collision.inc.c\"\n#include \"levels/ttm/areas/1/collision.inc.c\"\n#include \"levels/ttm/areas/1/macro.inc.c\"\n#include \"levels/ttm/areas/1/trajectory.inc.c\"\n#include \"levels/ttm/areas/1/movtext.inc.c\"\n#include \"levels/ttm/areas/2/1/model.inc.c\"\n#include \"levels/ttm/areas/2/2/model.inc.c\"\n#include \"levels/ttm/areas/3/1/model.inc.c\"\n#include \"levels/ttm/areas/3/2/model.inc.c\"\n#include \"levels/ttm/areas/3/3/model.inc.c\"\n#include \"levels/ttm/areas/4/1/model.inc.c\"\n#include \"levels/ttm/areas/4/2/model.inc.c\"\n#include \"levels/ttm/blue_smiley/model.inc.c\"\n#include \"levels/ttm/yellow_smiley/model.inc.c\"\n#include \"levels/ttm/star_smiley/model.inc.c\"\n#include \"levels/ttm/moon_smiley/model.inc.c\"\n#include \"levels/ttm/slide_exit_podium/model.inc.c\"\n#include \"levels/ttm/areas/2/collision.inc.c\"\n#include \"levels/ttm/areas/3/collision.inc.c\"\n#include \"levels/ttm/areas/4/collision.inc.c\"\n#include \"levels/ttm/slide_exit_podium/collision.inc.c\"\n#include \"levels/ttm/areas/2/macro.inc.c\"\n#include \"levels/ttm/areas/3/macro.inc.c\"\n#include \"levels/ttm/areas/4/macro.inc.c\"\n"
  },
  {
    "path": "levels/ttm/moon_smiley/geo.inc.c",
    "content": "// 0x0E000DBC\nconst GeoLayout ttm_geo_000DBC[] = {\n    GEO_CULLING_RADIUS(1000),\n    GEO_OPEN_NODE(),\n        GEO_BILLBOARD(),\n        GEO_OPEN_NODE(),\n            GEO_SCALE(0x00, 32768),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_ALPHA, ttm_seg7_dl_0702AC78),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttm/moon_smiley/model.inc.c",
    "content": "// 0x0702AC00 - 0x0702AC40\nstatic const Vtx ttm_seg7_vertex_0702AC00[] = {\n    {{{  1024,   2048,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1023,   2048,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1023,      0,      0}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1024,      0,      0}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0702AC40 - 0x0702AC78\nstatic const Gfx ttm_seg7_dl_0702AC40[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_0900B000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttm_seg7_vertex_0702AC00, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0702AC78 - 0x0702ACE8\nconst Gfx ttm_seg7_dl_0702AC78[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_0702AC40),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/rolling_log/collision.inc.c",
    "content": "// 0x07013678 - 0x07013790\nconst Collision ttm_seg7_collision_pitoune_2[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x10),\n    COL_VERTEX(1105, 237, -96),\n    COL_VERTEX(1106, -235, -97),\n    COL_VERTEX(1106, -97, -236),\n    COL_VERTEX(1105, 98, -235),\n    COL_VERTEX(1105, 236, 98),\n    COL_VERTEX(1105, 98, 237),\n    COL_VERTEX(1105, -97, 236),\n    COL_VERTEX(1106, -236, 98),\n    COL_VERTEX(-1104, 237, -97),\n    COL_VERTEX(-1104, -97, 236),\n    COL_VERTEX(-1104, 98, 237),\n    COL_VERTEX(-1104, -236, 97),\n    COL_VERTEX(-1104, -235, -97),\n    COL_VERTEX(-1104, -97, -236),\n    COL_VERTEX(-1104, 98, -235),\n    COL_VERTEX(-1104, 236, 98),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(8, 14, 13),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(0, 4, 5),\n    COL_TRI(0, 5, 6),\n    COL_TRI(0, 6, 7),\n    COL_TRI(0, 7, 1),\n    COL_TRI(8, 9, 10),\n    COL_TRI(8, 11, 9),\n    COL_TRI(8, 12, 11),\n    COL_TRI(8, 13, 12),\n    COL_TRI(8, 10, 15),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 16),\n    COL_TRI(9, 5, 10),\n    COL_TRI(14, 2, 13),\n    COL_TRI(14, 3, 2),\n    COL_TRI(15, 0, 8),\n    COL_TRI(15, 4, 0),\n    COL_TRI(5, 4, 15),\n    COL_TRI(10, 5, 15),\n    COL_TRI(0, 14, 8),\n    COL_TRI(9, 6, 5),\n    COL_TRI(7, 6, 9),\n    COL_TRI(11, 7, 9),\n    COL_TRI(1, 7, 12),\n    COL_TRI(7, 11, 12),\n    COL_TRI(0, 3, 14),\n    COL_TRI(12, 2, 1),\n    COL_TRI(12, 13, 2),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/ttm/rolling_log/geo.inc.c",
    "content": "// 0x0E000730\nconst GeoLayout ttm_geo_000730[] = {\n    GEO_CULLING_RADIUS(1200),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, ttm_seg7_dl_07012270),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttm/rolling_log/model.inc.c",
    "content": "// 0x07011DE8 - 0x07011E00\nstatic const Lights1 ttm_seg7_lights_07011DE8 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07011E00 - 0x07011F00\nstatic const Vtx ttm_seg7_vertex_07011E00[] = {\n    {{{ -1104,    237,    -97}, 0, {   674,   -100}, {0x87, 0x22, 0xf2, 0xff}}},\n    {{{ -1104,     98,   -235}, 0, {  1018,    246}, {0xdf, 0x2f, 0x8f, 0xff}}},\n    {{{ -1104,    -97,   -236}, 0, {  1018,    734}, {0xa3, 0xe0, 0xb1, 0xff}}},\n    {{{  1105,    237,    -96}, 0, {   674,   -100}, {0x6c, 0x3d, 0xe7, 0xff}}},\n    {{{  1106,   -235,    -97}, 0, {   674,   1078}, {0x5d, 0xb1, 0xdf, 0xff}}},\n    {{{  1106,    -97,   -236}, 0, {  1020,    734}, {0x3c, 0xd6, 0x99, 0xff}}},\n    {{{  1105,     98,   -235}, 0, {  1020,    246}, {0x3c, 0x2b, 0x99, 0xff}}},\n    {{{  1105,    236,     98}, 0, {   186,   -100}, {0x3c, 0x67, 0x2a, 0xff}}},\n    {{{  1105,     98,    237}, 0, {  -158,    246}, {0x3c, 0x2a, 0x67, 0xff}}},\n    {{{  1105,    -97,    236}, 0, {  -158,    734}, {0x5d, 0xe0, 0x4f, 0xff}}},\n    {{{  1106,   -236,     98}, 0, {   186,   1078}, {0x3c, 0x99, 0x2a, 0xff}}},\n    {{{ -1104,    -97,    236}, 0, {  -160,    734}, {0xc4, 0xd6, 0x67, 0xff}}},\n    {{{ -1104,     98,    237}, 0, {  -160,    246}, {0xa3, 0x20, 0x4f, 0xff}}},\n    {{{ -1104,   -236,     97}, 0, {   184,   1078}, {0xa3, 0xb1, 0x20, 0xff}}},\n    {{{ -1104,   -235,    -97}, 0, {   674,   1078}, {0xc4, 0x99, 0xd6, 0xff}}},\n    {{{ -1104,    236,     98}, 0, {   184,   -100}, {0xdf, 0x71, 0x2f, 0xff}}},\n};\n\n// 0x07011F00 - 0x07011FF0\nstatic const Vtx ttm_seg7_vertex_07011F00[] = {\n    {{{ -1104,    -97,    236}, 0, {  4380,    338}, {0xc4, 0xd6, 0x67, 0xff}}},\n    {{{  1105,     98,    237}, 0, {     0,    990}, {0x3c, 0x2a, 0x67, 0xff}}},\n    {{{ -1104,     98,    237}, 0, {  4380,    990}, {0xa3, 0x20, 0x4f, 0xff}}},\n    {{{ -1104,     98,   -235}, 0, {  4380,    990}, {0xdf, 0x2f, 0x8f, 0xff}}},\n    {{{  1106,    -97,   -236}, 0, {     0,    338}, {0x3c, 0xd6, 0x99, 0xff}}},\n    {{{ -1104,    -97,   -236}, 0, {  4380,    338}, {0xa3, 0xe0, 0xb1, 0xff}}},\n    {{{  1105,     98,   -235}, 0, {     0,    990}, {0x3c, 0x2b, 0x99, 0xff}}},\n    {{{ -1104,    236,     98}, 0, {  4380,    990}, {0xdf, 0x71, 0x2f, 0xff}}},\n    {{{  1105,    237,    -96}, 0, {     0,    338}, {0x6c, 0x3d, 0xe7, 0xff}}},\n    {{{ -1104,    237,    -97}, 0, {  4380,    338}, {0x87, 0x22, 0xf2, 0xff}}},\n    {{{  1105,    236,     98}, 0, {     0,    990}, {0x3c, 0x67, 0x2a, 0xff}}},\n    {{{  1105,     98,    237}, 0, {   -30,    338}, {0x3c, 0x2a, 0x67, 0xff}}},\n    {{{  1105,    236,     98}, 0, {   -30,    990}, {0x3c, 0x67, 0x2a, 0xff}}},\n    {{{ -1104,    236,     98}, 0, {  4380,    992}, {0xdf, 0x71, 0x2f, 0xff}}},\n    {{{ -1104,     98,    237}, 0, {  4380,    342}, {0xa3, 0x20, 0x4f, 0xff}}},\n};\n\n// 0x07011FF0 - 0x070120E0\nstatic const Vtx ttm_seg7_vertex_07011FF0[] = {\n    {{{  1105,    237,    -96}, 0, {     0,    990}, {0x6c, 0x3d, 0xe7, 0xff}}},\n    {{{ -1104,     98,   -235}, 0, {  4380,    338}, {0xdf, 0x2f, 0x8f, 0xff}}},\n    {{{ -1104,    237,    -97}, 0, {  4380,    990}, {0x87, 0x22, 0xf2, 0xff}}},\n    {{{ -1104,    -97,    236}, 0, {  4380,    338}, {0xc4, 0xd6, 0x67, 0xff}}},\n    {{{  1105,    -97,    236}, 0, {     0,    338}, {0x5d, 0xe0, 0x4f, 0xff}}},\n    {{{  1105,     98,    237}, 0, {     0,    990}, {0x3c, 0x2a, 0x67, 0xff}}},\n    {{{  1106,   -236,     98}, 0, {     0,    338}, {0x3c, 0x99, 0x2a, 0xff}}},\n    {{{  1105,    -97,    236}, 0, {     0,    990}, {0x5d, 0xe0, 0x4f, 0xff}}},\n    {{{ -1104,    -97,    236}, 0, {  4380,    990}, {0xc4, 0xd6, 0x67, 0xff}}},\n    {{{ -1104,   -236,     97}, 0, {  4380,    338}, {0xa3, 0xb1, 0x20, 0xff}}},\n    {{{  1106,   -235,    -97}, 0, {     0,    338}, {0x5d, 0xb1, 0xdf, 0xff}}},\n    {{{  1106,   -236,     98}, 0, {     0,    990}, {0x3c, 0x99, 0x2a, 0xff}}},\n    {{{ -1104,   -235,    -97}, 0, {  4380,    338}, {0xc4, 0x99, 0xd6, 0xff}}},\n    {{{ -1104,   -236,     97}, 0, {  4380,    990}, {0xa3, 0xb1, 0x20, 0xff}}},\n    {{{  1105,     98,   -235}, 0, {     0,    338}, {0x3c, 0x2b, 0x99, 0xff}}},\n};\n\n// 0x070120E0 - 0x07012120\nstatic const Vtx ttm_seg7_vertex_070120E0[] = {\n    {{{ -1104,   -235,    -97}, 0, {  4382,    342}, {0xc4, 0x99, 0xd6, 0xff}}},\n    {{{  1106,    -97,   -236}, 0, {     0,    990}, {0x3c, 0xd6, 0x99, 0xff}}},\n    {{{  1106,   -235,    -97}, 0, {     0,    338}, {0x5d, 0xb1, 0xdf, 0xff}}},\n    {{{ -1104,    -97,   -236}, 0, {  4382,    992}, {0xa3, 0xe0, 0xb1, 0xff}}},\n};\n\n// 0x07012120 - 0x070121B8\nstatic const Gfx ttm_seg7_dl_07012120[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ttm_seg7_texture_07002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_07011DE8.l, 1),\n    gsSPLight(&ttm_seg7_lights_07011DE8.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07011E00, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  3,  7,  8, 0x0),\n    gsSP2Triangles( 3,  8,  9, 0x0,  3,  9, 10, 0x0),\n    gsSP2Triangles( 3, 10,  4, 0x0,  0, 11, 12, 0x0),\n    gsSP2Triangles( 0, 13, 11, 0x0,  0, 14, 13, 0x0),\n    gsSP2Triangles( 0,  2, 14, 0x0,  0, 12, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070121B8 - 0x07012270\nstatic const Gfx ttm_seg7_dl_070121B8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttm_seg7_vertex_07011F00, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 11, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07011FF0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070120E0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07012270 - 0x070122F0\nconst Gfx ttm_seg7_dl_07012270[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_07012120),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_070121B8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/script.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"behavior_data.h\"\n#include \"model_ids.h\"\n#include \"seq_ids.h\"\n#include \"segment_symbols.h\"\n#include \"level_commands.h\"\n\n#include \"game/level_update.h\"\n\n#include \"levels/scripts.h\"\n\n#include \"actors/common1.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/ttm/header.h\"\n\nstatic const LevelScript script_func_local_1[] = {\n    OBJECT(/*model*/ MODEL_TTM_ROLLING_LOG,    /*pos*/  4360, -1722,  4001, /*angle*/ 0,  48, 0, /*bhvParam*/ 0, /*bhv*/ bhvTTMRollingLog),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_2[] = {\n    OBJECT          (/*model*/ MODEL_NONE,               /*pos*/ -1639,  1146, -1742, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(BBALL_BP_STYPE_TTM), /*bhv*/ bhvTTMBowlingBallSpawner),\n    OBJECT          (/*model*/ MODEL_NONE,               /*pos*/  3295, -3692,  2928, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvWaterfallSoundLoop),\n    OBJECT          (/*model*/ MODEL_NONE,               /*pos*/  2004, -1580,  1283, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvWaterfallSoundLoop),\n    OBJECT          (/*model*/ MODEL_DL_MONTY_MOLE_HOLE, /*pos*/ -2077, -1023, -1969, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvMontyMoleHole),\n    OBJECT          (/*model*/ MODEL_DL_MONTY_MOLE_HOLE, /*pos*/ -2500, -1023, -2157, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvMontyMoleHole),\n    OBJECT          (/*model*/ MODEL_DL_MONTY_MOLE_HOLE, /*pos*/ -2048, -1023, -2307, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvMontyMoleHole),\n    OBJECT          (/*model*/ MODEL_DL_MONTY_MOLE_HOLE, /*pos*/ -2351, -1023, -2416, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvMontyMoleHole),\n    OBJECT          (/*model*/ MODEL_DL_MONTY_MOLE_HOLE, /*pos*/ -2400, -2559, -2185, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvMontyMoleHole),\n    OBJECT          (/*model*/ MODEL_DL_MONTY_MOLE_HOLE, /*pos*/ -1435, -2559, -3118, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvMontyMoleHole),\n    OBJECT          (/*model*/ MODEL_DL_MONTY_MOLE_HOLE, /*pos*/ -1677, -2559, -3507, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvMontyMoleHole),\n    OBJECT          (/*model*/ MODEL_DL_MONTY_MOLE_HOLE, /*pos*/ -1869, -2559, -2704, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvMontyMoleHole),\n    OBJECT          (/*model*/ MODEL_DL_MONTY_MOLE_HOLE, /*pos*/ -2525, -2559, -2626, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvMontyMoleHole),\n    OBJECT          (/*model*/ MODEL_MONTY_MOLE,         /*pos*/     0,     0,     0, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(MONTY_MOLE_BP_NO_ROCK), /*bhv*/ bhvMontyMole),\n    OBJECT          (/*model*/ MODEL_MONTY_MOLE,         /*pos*/     0,     0,     0, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(MONTY_MOLE_BP_GENERIC), /*bhv*/ bhvMontyMole),\n    OBJECT          (/*model*/ MODEL_NONE,               /*pos*/  3625,   560,   165, /*angle*/ 0, 330, 0, /*bhvParam*/ BPARAM2(CLOUD_BP_FWOOSH), /*bhv*/ bhvCloud),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_UKIKI,              /*pos*/   729,  2307,   335, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(UKIKI_BP_CAGE), /*bhv*/ bhvUkiki,       /*acts*/ ACT_2),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_UKIKI,              /*pos*/  1992, -1548,  2944, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(UKIKI_BP_CAP), /*bhv*/ bhvUkiki,       /*acts*/ ALL_ACTS),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_3[] = {\n    OBJECT_WITH_ACTS(/*model*/ MODEL_STAR,           /*pos*/  1200,  2600,   150, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_1), /*bhv*/ bhvStar,              /*acts*/ ACT_1),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_TTM_STAR_CAGE,  /*pos*/  2496,  1670,  1492, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_2), /*bhv*/ bhvUkikiCage,         /*acts*/ ACT_2),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_NONE,           /*pos*/ -3250, -2500, -3700, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_3), /*bhv*/ bhvHiddenRedCoinStar, /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_STAR,           /*pos*/ -2900, -2700,  3650, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_4), /*bhv*/ bhvStar,              /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_STAR,           /*pos*/  1800,  1200,  1050, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_5), /*bhv*/ bhvStar,              /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_STAR,           /*pos*/  7300, -3100,  1300, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_6), /*bhv*/ bhvStar,              /*acts*/ ALL_ACTS),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_4[] = {\n    OBJECT(/*model*/ MODEL_TTM_BLUE_SMILEY,   /*pos*/  4389,  3620,   624, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvStaticObject),\n    OBJECT(/*model*/ MODEL_TTM_YELLOW_SMILEY, /*pos*/ -1251,  2493,  2224, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvStaticObject),\n    OBJECT(/*model*/ MODEL_TTM_STAR_SMILEY,   /*pos*/ -2547,  1365,  -520, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvStaticObject),\n    OBJECT(/*model*/ MODEL_TTM_MOON_SMILEY,   /*pos*/  -324,   989, -4090, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvStaticObject),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_5[] = {\n    OBJECT(/*model*/ MODEL_TTM_BLUE_SMILEY,   /*pos*/  7867,  -959, -6085, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvStaticObject),\n    OBJECT(/*model*/ MODEL_TTM_BLUE_SMILEY,   /*pos*/ -5241,  5329,  9466, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvStaticObject),\n    OBJECT(/*model*/ MODEL_TTM_YELLOW_SMILEY, /*pos*/ -1869, -5311,  7358, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvStaticObject),\n    OBJECT(/*model*/ MODEL_TTM_STAR_SMILEY,   /*pos*/ -9095,  4262,  5348, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvStaticObject),\n    OBJECT(/*model*/ MODEL_TTM_MOON_SMILEY,   /*pos*/ -8477,   730, -7122, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvStaticObject),\n    OBJECT(/*model*/ MODEL_TTM_MOON_SMILEY,   /*pos*/  6160, -6076,  7861, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvStaticObject),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_6[] = {\n    OBJECT(/*model*/ MODEL_TTM_YELLOW_SMILEY, /*pos*/  5157,  1974, -8292, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvStaticObject),\n    OBJECT(/*model*/ MODEL_TTM_STAR_SMILEY,   /*pos*/ 11106,  2588,   381, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvStaticObject),\n    OBJECT(/*model*/ MODEL_TTM_MOON_SMILEY,   /*pos*/    37,  1974, -1124, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvStaticObject),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_7[] = {\n    RETURN(),\n};\n\nconst LevelScript level_ttm_entry[] = {\n    INIT_LEVEL(),\n    LOAD_MIO0        (/*seg*/ 0x07, _ttm_segment_7SegmentRomStart, _ttm_segment_7SegmentRomEnd),\n    LOAD_MIO0_TEXTURE(/*seg*/ 0x09, _mountain_mio0SegmentRomStart, _mountain_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x0A, _water_skybox_mio0SegmentRomStart, _water_skybox_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x05, _group6_mio0SegmentRomStart, _group6_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0C, _group6_geoSegmentRomStart,  _group6_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x08, _common0_mio0SegmentRomStart, _common0_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0F, _common0_geoSegmentRomStart,  _common0_geoSegmentRomEnd),\n    ALLOC_LEVEL_POOL(),\n    MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),\n    JUMP_LINK(script_func_global_1),\n    JUMP_LINK(script_func_global_7),\n    LOAD_MODEL_FROM_GEO(MODEL_TTM_SLIDE_EXIT_PODIUM, ttm_geo_000DF4),\n    LOAD_MODEL_FROM_GEO(MODEL_TTM_ROLLING_LOG,       ttm_geo_000730),\n    LOAD_MODEL_FROM_GEO(MODEL_TTM_STAR_CAGE,         ttm_geo_000710),\n    LOAD_MODEL_FROM_GEO(MODEL_TTM_BLUE_SMILEY,       ttm_geo_000D14),\n    LOAD_MODEL_FROM_GEO(MODEL_TTM_YELLOW_SMILEY,     ttm_geo_000D4C),\n    LOAD_MODEL_FROM_GEO(MODEL_TTM_STAR_SMILEY,       ttm_geo_000D84),\n    LOAD_MODEL_FROM_GEO(MODEL_TTM_MOON_SMILEY,       ttm_geo_000DBC),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_03,     ttm_geo_000748),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_04,     ttm_geo_000778),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_05,     ttm_geo_0007A8),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_06,     ttm_geo_0007D8),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_07,     ttm_geo_000808),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_08,     ttm_geo_000830),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_09,     ttm_geo_000858),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_0A,     ttm_geo_000880),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_0B,     ttm_geo_0008A8),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_0C,     ttm_geo_0008D0),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_0D,     ttm_geo_0008F8),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_0F,     ttm_geo_000920),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_10,     ttm_geo_000948),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_11,     ttm_geo_000970),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_12,     ttm_geo_000990),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_13,     ttm_geo_0009C0),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_14,     ttm_geo_0009F0),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_15,     ttm_geo_000A18),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_16,     ttm_geo_000A40),\n\n    AREA(/*index*/ 1, ttm_geo_000A70),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/   102, -3332,  5734, /*angle*/ 0,   45, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvSpinAirborneWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ -2447, -2457,  3952, /*angle*/ 0, -105, 0, /*bhvParam*/ BPARAM2(WARP_NODE_14), /*bhv*/ bhvAirborneWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/  2267, -3006, -3788, /*angle*/ 0,  148, 0, /*bhvParam*/ BPARAM2(WARP_NODE_15), /*bhv*/ bhvFadingWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/  -557, -3448, -4146, /*angle*/ 0, -168, 0, /*bhvParam*/ BPARAM2(WARP_NODE_16), /*bhv*/ bhvFadingWarp),\n        WARP_NODE(/*id*/ WARP_NODE_0A, /*destLevel*/ LEVEL_TTM, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_14, /*destLevel*/ LEVEL_TTM, /*destArea*/ 1, /*destNode*/ WARP_NODE_14, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_15, /*destLevel*/ LEVEL_TTM, /*destArea*/ 1, /*destNode*/ WARP_NODE_16, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_16, /*destLevel*/ LEVEL_TTM, /*destArea*/ 1, /*destNode*/ WARP_NODE_15, /*flags*/ WARP_NO_CHECKPOINT),\n        PAINTING_WARP_NODE(/*id*/ WARP_NODE_00, /*destLevel*/ LEVEL_TTM, /*destArea*/ 2, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_CHECKPOINT),\n        PAINTING_WARP_NODE(/*id*/ WARP_NODE_01, /*destLevel*/ LEVEL_TTM, /*destArea*/ 2, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_CHECKPOINT),\n        PAINTING_WARP_NODE(/*id*/ WARP_NODE_02, /*destLevel*/ LEVEL_TTM, /*destArea*/ 2, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_SUCCESS,    /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_34, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH,      /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_66, /*flags*/ WARP_NO_CHECKPOINT),\n        JUMP_LINK(script_func_local_1),\n        JUMP_LINK(script_func_local_2),\n        JUMP_LINK(script_func_local_3),\n        TERRAIN(/*terrainData*/ ttm_seg7_area_1_collision),\n        MACRO_OBJECTS(/*objList*/ ttm_seg7_area_1_macro_objs),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0000, /*seq*/ SEQ_LEVEL_GRASS),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_STONE),\n    END_AREA(),\n\n    AREA(/*index*/ 2, ttm_geo_000B5C),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ 7000, 5381, 6750, /*angle*/ 0, 225, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvAirborneWarp),\n        WARP_NODE(/*id*/ WARP_NODE_0A,      /*destLevel*/ LEVEL_TTM,    /*destArea*/ 2, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_SUCCESS, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_34, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH,   /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_66, /*flags*/ WARP_NO_CHECKPOINT),\n        JUMP_LINK(script_func_local_4),\n        TERRAIN(/*terrainData*/ ttm_seg7_area_2_collision),\n        MACRO_OBJECTS(/*objList*/ ttm_seg7_area_2_macro_objs),\n        INSTANT_WARP(/*index*/ 2, /*destArea*/ 3, /*displace*/ 10240, 7168, 10240),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0001, /*seq*/ SEQ_LEVEL_SLIDE),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_SLIDE),\n    END_AREA(),\n\n    AREA(/*index*/ 3, ttm_geo_000BEC),\n        WARP_NODE(/*id*/ WARP_NODE_SUCCESS, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_34, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH,   /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_66, /*flags*/ WARP_NO_CHECKPOINT),\n        JUMP_LINK(script_func_local_5),\n        TERRAIN(/*terrainData*/ ttm_seg7_area_3_collision),\n        MACRO_OBJECTS(/*objList*/ ttm_seg7_area_3_macro_objs),\n        INSTANT_WARP(/*index*/ 3, /*destArea*/ 4, /*displace*/ -11264, 13312, 3072),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0001, /*seq*/ SEQ_LEVEL_SLIDE),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_SLIDE),\n    END_AREA(),\n\n    AREA(/*index*/ 4, ttm_geo_000C84),\n        OBJECT(/*model*/ MODEL_TTM_SLIDE_EXIT_PODIUM, /*pos*/ -7285, -1866, -4812, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvExitPodiumWarp),\n        WARP_NODE(/*id*/ WARP_NODE_0A,      /*destLevel*/ LEVEL_TTM,    /*destArea*/ 1, /*destNode*/ WARP_NODE_14, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_SUCCESS, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_34, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH,   /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_66, /*flags*/ WARP_NO_CHECKPOINT),\n        JUMP_LINK(script_func_local_6),\n        JUMP_LINK(script_func_local_7),\n        TERRAIN(/*terrainData*/ ttm_seg7_area_4_collision),\n        MACRO_OBJECTS(/*objList*/ ttm_seg7_area_4_macro_objs),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0001, /*seq*/ SEQ_LEVEL_SLIDE),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_SLIDE),\n    END_AREA(),\n\n    FREE_LEVEL_POOL(),\n    MARIO_POS(/*area*/ 1, /*yaw*/ 45, /*pos*/ 102, -4332, 5734),\n    CALL(/*arg*/ 0, /*func*/ lvl_init_or_update),\n    CALL_LOOP(/*arg*/ 1, /*func*/ lvl_init_or_update),\n    CLEAR_LEVEL(),\n    SLEEP_BEFORE_EXIT(/*frames*/ 1),\n    EXIT(),\n};\n"
  },
  {
    "path": "levels/ttm/slide_exit_podium/collision.inc.c",
    "content": "// 0x0703013C - 0x070302C8\nconst Collision ttm_seg7_collision_podium_warp[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x1E),\n    COL_VERTEX(-204, 0, -204),\n    COL_VERTEX(-204, 307, -204),\n    COL_VERTEX(1024, 0, -204),\n    COL_VERTEX(-204, 307, 205),\n    COL_VERTEX(-204, 0, 205),\n    COL_VERTEX(1024, 0, 205),\n    COL_VERTEX(-101, 205, 102),\n    COL_VERTEX(-101, 205, -101),\n    COL_VERTEX(205, 205, -204),\n    COL_VERTEX(102, 205, -101),\n    COL_VERTEX(-101, 0, -101),\n    COL_VERTEX(102, 0, -101),\n    COL_VERTEX(-204, 102, 614),\n    COL_VERTEX(205, 0, 205),\n    COL_VERTEX(-204, 0, 614),\n    COL_VERTEX(-204, 102, -613),\n    COL_VERTEX(205, 0, -613),\n    COL_VERTEX(-204, 102, -204),\n    COL_VERTEX(102, 0, 102),\n    COL_VERTEX(205, 205, 205),\n    COL_VERTEX(205, 102, 614),\n    COL_VERTEX(205, 102, 205),\n    COL_VERTEX(-204, 102, 205),\n    COL_VERTEX(205, 0, 614),\n    COL_VERTEX(-204, 0, -613),\n    COL_VERTEX(205, 102, -613),\n    COL_VERTEX(205, 102, -204),\n    COL_VERTEX(205, 0, -204),\n    COL_VERTEX(-101, 0, 102),\n    COL_VERTEX(102, 205, 102),\n    COL_TRI_INIT(SURFACE_DEFAULT, 34),\n    COL_TRI(10, 9, 7),\n    COL_TRI(0, 1, 2),\n    COL_TRI(3, 4, 5),\n    COL_TRI(1, 3, 6),\n    COL_TRI(1, 6, 7),\n    COL_TRI(1, 7, 8),\n    COL_TRI(8, 7, 9),\n    COL_TRI(14, 23, 20),\n    COL_TRI(10, 11, 9),\n    COL_TRI(12, 20, 21),\n    COL_TRI(12, 21, 22),\n    COL_TRI(13, 21, 20),\n    COL_TRI(13, 20, 23),\n    COL_TRI(14, 20, 12),\n    COL_TRI(15, 16, 24),\n    COL_TRI(15, 25, 16),\n    COL_TRI(16, 25, 26),\n    COL_TRI(16, 26, 27),\n    COL_TRI(17, 26, 25),\n    COL_TRI(17, 25, 15),\n    COL_TRI(10, 7, 6),\n    COL_TRI(10, 6, 28),\n    COL_TRI(19, 29, 6),\n    COL_TRI(6, 29, 18),\n    COL_TRI(6, 18, 28),\n    COL_TRI(18, 29, 9),\n    COL_TRI(18, 9, 11),\n    COL_TRI(2, 19, 5),\n    COL_TRI(2, 8, 19),\n    COL_TRI(9, 29, 19),\n    COL_TRI(9, 19, 8),\n    COL_TRI(19, 6, 3),\n    COL_TRI(18, 10, 28),\n    COL_TRI(18, 11, 10),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/ttm/slide_exit_podium/geo.inc.c",
    "content": "// 0x0E000DF4\nconst GeoLayout ttm_geo_000DF4[] = {\n    GEO_CULLING_RADIUS(8000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, ttm_seg7_dl_0702BB60),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttm/slide_exit_podium/model.inc.c",
    "content": "// 0x0702ACE8 - 0x0702AD00\nstatic const Lights1 ttm_seg7_lights_0702ACE8 = gdSPDefLights1(\n    0x0c, 0x0c, 0x0c,\n    0x33, 0x33, 0x33, 0x28, 0x28, 0x28\n);\n\n// 0x0702AD00 - 0x0702AD18\nstatic const Lights1 ttm_seg7_lights_0702AD00 = gdSPDefLights1(\n    0x1d, 0x1d, 0x1d,\n    0x77, 0x77, 0x77, 0x28, 0x28, 0x28\n);\n\n// 0x0702AD18 - 0x0702AD30\nstatic const Lights1 ttm_seg7_lights_0702AD18 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0702AD30 - 0x0702B530\nALIGNED8 static const Texture ttm_seg7_texture_0702AD30[] = {\n#include \"levels/ttm/8.rgba16.inc.c\"\n};\n\n// 0x0702B530 - 0x0702B570\nstatic const Vtx ttm_seg7_vertex_0702B530[] = {\n    {{{   102,     10,    102}, 0, {  4568,  -7698}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -101,     10,   -101}, 0, {  5590,  -8720}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -101,     10,    102}, 0, {  4568,  -8720}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,     10,   -101}, 0, {  5590,  -7698}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0702B570 - 0x0702B670\nstatic const Vtx ttm_seg7_vertex_0702B570[] = {\n    {{{  -101,      0,   -101}, 0, {  5590,  -8720}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,    205,   -101}, 0, {  5590,  -7698}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -101,    205,   -101}, 0, {  5590,  -8720}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,      0,   -101}, 0, {  5590,  -7698}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -101,      0,   -101}, 0, {  5590,  -8720}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -101,    205,    102}, 0, {  4568,  -8720}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -101,      0,    102}, 0, {  4568,  -8720}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -101,    205,   -101}, 0, {  5590,  -8720}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -101,    205,    102}, 0, {  4568,  -8720}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   102,      0,    102}, 0, {  4568,  -7698}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -101,      0,    102}, 0, {  4568,  -8720}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   102,    205,    102}, 0, {  4568,  -7698}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   102,      0,    102}, 0, {  4568,  -7698}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   102,    205,    102}, 0, {  4568,  -7698}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   102,    205,   -101}, 0, {  5590,  -7698}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   102,      0,   -101}, 0, {  5590,  -7698}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0702B670 - 0x0702B770\nstatic const Vtx ttm_seg7_vertex_0702B670[] = {\n    {{{  -204,      0,   -204}, 0, {  6100,  -9230}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -204,    307,   -204}, 0, {  6100,  -9230}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1024,      0,   -204}, 0, {  6100,  -3098}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -204,    307,    205}, 0, {  4056,  -9230}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -204,      0,    205}, 0, {  4056,  -9230}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1024,      0,    205}, 0, {  4056,  -3098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -204,    307,   -204}, 0, {  6100,  -9230}, {0x59, 0x5a, 0x00, 0xff}}},\n    {{{  -204,    307,    205}, 0, {  4056,  -9230}, {0x59, 0x5a, 0x00, 0xff}}},\n    {{{  -101,    205,    102}, 0, {  4568,  -8720}, {0x59, 0x5a, 0x00, 0xff}}},\n    {{{  -101,    205,   -101}, 0, {  5590,  -8720}, {0x59, 0x5a, 0x00, 0xff}}},\n    {{{  -204,    307,   -204}, 0, {  6100,  -9230}, {0x18, 0x64, 0x4a, 0xff}}},\n    {{{  -101,    205,   -101}, 0, {  5590,  -8720}, {0x18, 0x64, 0x4a, 0xff}}},\n    {{{   205,    205,   -204}, 0, {  6100,  -7186}, {0x18, 0x64, 0x4a, 0xff}}},\n    {{{   205,    205,   -204}, 0, {  6100,  -7186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -101,    205,   -101}, 0, {  5590,  -8720}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,    205,   -101}, 0, {  5590,  -7698}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0702B770 - 0x0702B870\nstatic const Vtx ttm_seg7_vertex_0702B770[] = {\n    {{{  -204,    102,    614}, 0, {  2012,  -9230}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   205,    102,    614}, 0, {  2012,  -7186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   205,    102,    205}, 0, {  4056,  -7186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -204,    102,    205}, 0, {  4056,  -9230}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   205,      0,    205}, 0, {  4056,  -7186}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,    102,    205}, 0, {  4056,  -7186}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,    102,    614}, 0, {  2012,  -7186}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,      0,    614}, 0, {  2012,  -7186}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -204,      0,    614}, 0, {  2012,  -9230}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   205,    102,    614}, 0, {  2012,  -7186}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -204,    102,    614}, 0, {  2012,  -9230}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   205,      0,    614}, 0, {  2012,  -7186}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -204,    102,   -613}, 0, {  8144,  -9230}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   205,    102,   -613}, 0, {  8144,  -7186}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   205,      0,   -613}, 0, {  8144,  -7186}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -204,      0,   -613}, 0, {  8144,  -9230}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0702B870 - 0x0702B970\nstatic const Vtx ttm_seg7_vertex_0702B870[] = {\n    {{{   102,    205,   -101}, 0, {  5590,  -7698}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   205,    205,    205}, 0, {  4056,  -7186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   205,    205,   -204}, 0, {  6100,  -7186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   205,      0,   -613}, 0, {  8144,  -7186}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,    102,   -613}, 0, {  8144,  -7186}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,    102,   -204}, 0, {  6100,  -7186}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,      0,   -204}, 0, {  6100,  -7186}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -204,    102,   -204}, 0, {  6100,  -9230}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   205,    102,   -204}, 0, {  6100,  -7186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   205,    102,   -613}, 0, {  8144,  -7186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -204,    102,   -613}, 0, {  8144,  -9230}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,      0,   -204}, 0, {  6100,  -3098}, {0x1e, 0x7b, 0x00, 0xff}}},\n    {{{   205,    205,   -204}, 0, {  6100,  -7186}, {0x1e, 0x7b, 0x00, 0xff}}},\n    {{{   205,    205,    205}, 0, {  4056,  -7186}, {0x1e, 0x7b, 0x00, 0xff}}},\n    {{{  1024,      0,    205}, 0, {  4056,  -3098}, {0x1e, 0x7b, 0x00, 0xff}}},\n    {{{   102,    205,    102}, 0, {  4568,  -7698}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0702B970 - 0x0702B9D0\nstatic const Vtx ttm_seg7_vertex_0702B970[] = {\n    {{{   205,    205,    205}, 0, {  4056,  -7186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,    205,    102}, 0, {  4568,  -7698}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -101,    205,    102}, 0, {  4568,  -8720}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   205,    205,    205}, 0, {  4056,  -7186}, {0x18, 0x64, 0xb6, 0xff}}},\n    {{{  -101,    205,    102}, 0, {  4568,  -8720}, {0x18, 0x64, 0xb6, 0xff}}},\n    {{{  -204,    307,    205}, 0, {  4056,  -9230}, {0x18, 0x64, 0xb6, 0xff}}},\n};\n\n// 0x0702B9D0 - 0x0702BB60\nstatic const Gfx ttm_seg7_dl_0702B9D0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ttm_seg7_texture_0702AD30),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_0702ACE8.l, 1),\n    gsSPLight(&ttm_seg7_lights_0702ACE8.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0702B530, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPLight(&ttm_seg7_lights_0702AD00.l, 1),\n    gsSPLight(&ttm_seg7_lights_0702AD00.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0702B570, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPLight(&ttm_seg7_lights_0702AD18.l, 1),\n    gsSPLight(&ttm_seg7_lights_0702AD18.a, 2),\n    gsSPVertex(ttm_seg7_vertex_0702B670, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0702B770, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0702B870, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(ttm_seg7_vertex_0702B970, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0702BB60 - 0x0702BBD0\nconst Gfx ttm_seg7_dl_0702BB60[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_0702B9D0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/star_cage/1.inc.c",
    "content": "// 0x07012F78 - 0x07012F90\nstatic const Lights1 ttm_seg7_lights_07012F78 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xfe, 0xfe, 0xfe, 0x28, 0x28, 0x28\n);\n\n// 0x07012F90 - 0x07012FA8\nstatic const Lights1 ttm_seg7_lights_07012F90 = gdSPDefLights1(\n    0x7f, 0x7f, 0x7f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07012FA8 - 0x07013028\nstatic const Vtx ttm_seg7_vertex_07012FA8[] = {\n    {{{   -76,    -76,    -76}, 0, {     0,   -714}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    77,    -76,     77}, 0, {  2012,    650}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -76,    -76,     77}, 0, {     0,    650}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    77,    -76,    -76}, 0, {  2012,   -714}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -76,     77,     77}, 0, {     0,    650}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -76,     77,    -76}, 0, {     0,   -714}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    77,     77,    -76}, 0, {  2012,   -714}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    77,     77,     77}, 0, {  2012,    650}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07013028 - 0x07013108\nstatic const Vtx ttm_seg7_vertex_07013028[] = {\n    {{{    77,    -50,     77}, 0, {  2012,    650}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    77,    -50,    -76}, 0, {  2012,   -714}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -76,    -50,    -76}, 0, {     0,   -714}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -76,    102,    -76}, 0, {     0,   -714}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -76,    102,     77}, 0, {     0,    650}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    77,    102,     77}, 0, {  2012,    650}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -76,     77,     77}, 0, {     0,    650}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -76,    102,    -76}, 0, {     0,   -714}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -76,     77,    -76}, 0, {     0,   -714}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -76,    102,     77}, 0, {     0,    650}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    77,    102,    -76}, 0, {  2012,   -714}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -76,     77,    -76}, 0, {     0,   -714}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -76,    102,    -76}, 0, {     0,   -714}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    77,    102,    -76}, 0, {  2012,   -714}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07013108 - 0x070131E8\nstatic const Vtx ttm_seg7_vertex_07013108[] = {\n    {{{    77,     77,     77}, 0, {  2012,    650}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    77,    102,     77}, 0, {  2012,    650}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -76,    102,     77}, 0, {     0,    650}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -76,     77,     77}, 0, {     0,    650}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    77,     77,    -76}, 0, {  2012,   -714}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    77,    102,     77}, 0, {  2012,    650}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    77,     77,     77}, 0, {  2012,    650}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    77,    102,    -76}, 0, {  2012,   -714}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -76,     77,    -76}, 0, {     0,   -714}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    77,    102,    -76}, 0, {  2012,   -714}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    77,     77,    -76}, 0, {  2012,   -714}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    77,    -76,    -76}, 0, {  2012,   -714}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    77,    -50,     77}, 0, {  2012,    650}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    77,    -76,     77}, 0, {  2012,    650}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070131E8 - 0x070132C8\nstatic const Vtx ttm_seg7_vertex_070131E8[] = {\n    {{{    77,    -76,     77}, 0, {  2012,    650}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    77,    -50,     77}, 0, {  2012,    650}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -76,    -50,     77}, 0, {     0,    650}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    77,    -76,    -76}, 0, {  2012,   -714}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    77,    -50,    -76}, 0, {  2012,   -714}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    77,    -50,     77}, 0, {  2012,    650}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    77,    -50,     77}, 0, {  2012,    650}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -76,    -50,    -76}, 0, {     0,   -714}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -76,    -50,     77}, 0, {     0,    650}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -76,    -76,     77}, 0, {     0,    650}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -76,    -76,    -76}, 0, {     0,   -714}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    77,    -50,    -76}, 0, {  2012,   -714}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    77,    -76,    -76}, 0, {  2012,   -714}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -76,    -50,    -76}, 0, {     0,   -714}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070132C8 - 0x07013308\nstatic const Vtx ttm_seg7_vertex_070132C8[] = {\n    {{{   -76,    -76,     77}, 0, {     0,    650}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -76,    -50,     77}, 0, {     0,    650}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -76,    -50,    -76}, 0, {     0,   -714}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -76,    -76,    -76}, 0, {     0,   -714}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07013308 - 0x07013430\nstatic const Gfx ttm_seg7_dl_07013308[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&ttm_seg7_lights_07012F78.l, 1),\n    gsSPLight(&ttm_seg7_lights_07012F78.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07012FA8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPLight(&ttm_seg7_lights_07012F90.l, 1),\n    gsSPLight(&ttm_seg7_lights_07012F90.a, 2),\n    gsSPVertex(ttm_seg7_vertex_07013028, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 3,  5, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_07013108, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070131E8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  0,  2,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(ttm_seg7_vertex_070132C8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07013430 - 0x070134A0\nconst Gfx ttm_seg7_dl_07013430[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_07013308),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/star_cage/2.inc.c",
    "content": "// 0x070134A0 - 0x070135A0\nstatic const Vtx ttm_seg7_vertex_070134A0[] = {\n    {{{   -76,     77,    -76}, 0, {     0,    160}, {0xfe, 0xfe, 0xfe, 0xff}}},\n    {{{    77,    -50,    -76}, 0, {  2290,    990}, {0xfe, 0xfe, 0xfe, 0xff}}},\n    {{{   -76,    -50,    -76}, 0, {     0,    990}, {0xfe, 0xfe, 0xfe, 0xff}}},\n    {{{    77,     77,     77}, 0, {   316,    132}, {0xfe, 0xfe, 0xfe, 0xff}}},\n    {{{    77,    -50,     77}, 0, {   316,    990}, {0xfe, 0xfe, 0xfe, 0xff}}},\n    {{{    77,    -50,    -76}, 0, {  1902,    990}, {0xfe, 0xfe, 0xfe, 0xff}}},\n    {{{    77,     77,    -76}, 0, {  1902,    132}, {0xfe, 0xfe, 0xfe, 0xff}}},\n    {{{   -76,     77,    -76}, 0, {  1902,    132}, {0xfe, 0xfe, 0xfe, 0xff}}},\n    {{{   -76,    -50,    -76}, 0, {  1902,    990}, {0xfe, 0xfe, 0xfe, 0xff}}},\n    {{{   -76,    -50,     77}, 0, {   316,    990}, {0xfe, 0xfe, 0xfe, 0xff}}},\n    {{{   -76,     77,     77}, 0, {   316,    132}, {0xfe, 0xfe, 0xfe, 0xff}}},\n    {{{   -76,    -50,     77}, 0, {     0,    990}, {0xfe, 0xfe, 0xfe, 0xff}}},\n    {{{    77,     77,     77}, 0, {  2290,    160}, {0xfe, 0xfe, 0xfe, 0xff}}},\n    {{{   -76,     77,     77}, 0, {     0,    160}, {0xfe, 0xfe, 0xfe, 0xff}}},\n    {{{    77,    -50,     77}, 0, {  2290,    990}, {0xfe, 0xfe, 0xfe, 0xff}}},\n    {{{    77,     77,    -76}, 0, {  2290,    160}, {0xfe, 0xfe, 0xfe, 0xff}}},\n};\n\n// 0x070135A0 - 0x07013608\nstatic const Gfx ttm_seg7_dl_070135A0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttm_seg7_vertex_070134A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07013608 - 0x07013678\nconst Gfx ttm_seg7_dl_07013608[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_070135A0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/star_cage/collision.inc.c",
    "content": "// 0x07013790 - 0x07013814\nconst Collision ttm_seg7_collision_ukiki_cage[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-76, 102, -76),\n    COL_VERTEX(77, -76, -76),\n    COL_VERTEX(-76, -76, -76),\n    COL_VERTEX(-76, -76, 77),\n    COL_VERTEX(77, -76, 77),\n    COL_VERTEX(77, 102, -76),\n    COL_VERTEX(77, 102, 77),\n    COL_VERTEX(-76, 102, 77),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(2, 4, 3),\n    COL_TRI(2, 1, 4),\n    COL_TRI(0, 5, 1),\n    COL_TRI(6, 4, 1),\n    COL_TRI(6, 1, 5),\n    COL_TRI(3, 4, 6),\n    COL_TRI(0, 3, 7),\n    COL_TRI(3, 6, 7),\n    COL_TRI(0, 7, 6),\n    COL_TRI(0, 6, 5),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/ttm/star_cage/geo.inc.c",
    "content": "// 0x0E000710\nconst GeoLayout ttm_geo_000710[] = {\n    GEO_CULLING_RADIUS(300),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, ttm_seg7_dl_07013430),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, ttm_seg7_dl_07013608),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttm/star_smiley/geo.inc.c",
    "content": "// 0x0E000D84\nconst GeoLayout ttm_geo_000D84[] = {\n    GEO_CULLING_RADIUS(1000),\n    GEO_OPEN_NODE(),\n        GEO_BILLBOARD(),\n        GEO_OPEN_NODE(),\n            GEO_SCALE(0x00, 32768),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_ALPHA, ttm_seg7_dl_0702AB90),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttm/star_smiley/model.inc.c",
    "content": "// 0x0702AB18 - 0x0702AB58\nstatic const Vtx ttm_seg7_vertex_0702AB18[] = {\n    {{{  1024,   2048,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1023,   2048,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1023,      0,      0}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1024,      0,      0}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0702AB58 - 0x0702AB90\nstatic const Gfx ttm_seg7_dl_0702AB58[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09009800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttm_seg7_vertex_0702AB18, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0702AB90 - 0x0702AC00\nconst Gfx ttm_seg7_dl_0702AB90[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_0702AB58),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/ttm/texture.inc.c",
    "content": "// 0x07000000 - 0x07001000\nALIGNED8 static const Texture ttm_seg7_texture_07000000[] = {\n#include \"levels/ttm/0.ia16.inc.c\"\n};\n\n// 0x07000800 - 0x07001800\nALIGNED8 static const Texture ttm_seg7_texture_07000800[] = {\n#include \"levels/ttm/1.rgba16.inc.c\"\n};\n\n// 0x07001000 - 0x07002000\nALIGNED8 static const Texture ttm_seg7_texture_07001000[] = {\n#include \"levels/ttm/2.rgba16.inc.c\"\n};\n\n// 0x07001800 - 0x07002800\nALIGNED8 static const Texture ttm_seg7_texture_07001800[] = {\n#include \"levels/ttm/3.rgba16.inc.c\"\n};\n\n// 0x07002000 - 0x07003000\nALIGNED8 static const Texture ttm_seg7_texture_07002000[] = {\n#include \"levels/ttm/4.rgba16.inc.c\"\n};\n\n// 0x07002800 - 0x07003800\nALIGNED8 static const Texture ttm_seg7_texture_07002800[] = {\n#include \"levels/ttm/5.rgba16.inc.c\"\n};\n\n// 0x07003000 - 0x07004000\nALIGNED8 static const Texture ttm_seg7_texture_07003000[] = {\n#include \"levels/ttm/6.rgba16.inc.c\"\n};\n\n// 0x07004000 - 0x07005000\nALIGNED8 static const Texture ttm_seg7_texture_07004000[] = {\n#include \"levels/ttm/7.rgba16.inc.c\"\n};\n"
  },
  {
    "path": "levels/ttm/yellow_smiley/geo.inc.c",
    "content": "// 0x0E000D4C\nconst GeoLayout ttm_geo_000D4C[] = {\n    GEO_CULLING_RADIUS(1000),\n    GEO_OPEN_NODE(),\n        GEO_BILLBOARD(),\n        GEO_OPEN_NODE(),\n            GEO_SCALE(0x00, 32768),\n            GEO_OPEN_NODE(),\n                GEO_DISPLAY_LIST(LAYER_ALPHA, ttm_seg7_dl_0702AAA8),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/ttm/yellow_smiley/model.inc.c",
    "content": "// 0x0702AA30 - 0x0702AA70\nstatic const Vtx ttm_seg7_vertex_0702AA30[] = {\n    {{{  1024,   2048,      0}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1023,   2048,      0}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1023,      0,      0}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1024,      0,      0}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0702AA70 - 0x0702AAA8\nstatic const Gfx ttm_seg7_dl_0702AA70[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(ttm_seg7_vertex_0702AA30, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0702AAA8 - 0x0702AB18\nconst Gfx ttm_seg7_dl_0702AAA8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(ttm_seg7_dl_0702AA70),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/vcutm/areas/1/1/model.inc.c",
    "content": "// 0x07003000 - 0x07003018\nstatic const Lights1 vcutm_seg7_lights_07003000 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07003018 - 0x07003030\nstatic const Lights1 vcutm_seg7_lights_07003018 = gdSPDefLights1(\n    0x32, 0x3f, 0x37,\n    0xc8, 0xff, 0xdc, 0x28, 0x28, 0x28\n);\n\n// 0x07003030 - 0x07003048\nstatic const Lights1 vcutm_seg7_lights_07003030 = gdSPDefLights1(\n    0x2a, 0x2a, 0x2a,\n    0xaa, 0xaa, 0xaa, 0x28, 0x28, 0x28\n);\n\n// 0x07003048 - 0x07003128\nstatic const Vtx vcutm_seg7_vertex_07003048[] = {\n    {{{ -1653,  -3532,  -2098}, 0, {   122,    479}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2472,  -3532,  -2098}, 0, {  1756,    479}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2472,  -3429,  -2098}, 0, {  1756,    275}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1730,  -3429,  -2098}, 0, {   274,    275}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1730,  -3276,  -2098}, 0, {   274,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1653,  -3276,  -2098}, 0, {   122,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1730,  -3429,  -2098}, 0, {   122,    275}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2472,  -3429,  -2098}, 0, {  1604,    275}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2472,  -3429,  -1996}, 0, {  1604,    275}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1730,  -3429,  -1996}, 0, {   122,    275}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1730,  -3429,  -1996}, 0, {   836,    275}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2472,  -3429,  -1996}, 0, {  -644,    275}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2472,  -3532,  -1996}, 0, {  -644,    479}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1653,  -3532,  -1996}, 0, {   990,    479}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07003128 - 0x07003228\nstatic const Vtx vcutm_seg7_vertex_07003128[] = {\n    {{{ -1653,  -3532,  -1996}, 0, {     0,    479}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2472,  -3532,  -2098}, 0, {  1604,    479}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1653,  -3532,  -2098}, 0, {     0,    479}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2472,  -3532,  -1996}, 0, {  1604,    479}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1730,  -3429,  -1996}, 0, {   836,    275}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1653,  -3532,  -1996}, 0, {   990,    479}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1653,  -3276,  -1996}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1730,  -3276,  -1996}, 0, {   836,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1730,  -3429,  -2098}, 0, {   122,    275}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1730,  -3429,  -1996}, 0, {   122,    275}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1730,  -3276,  -1996}, 0, {   122,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1730,  -3276,  -2098}, 0, {   122,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1730,  -3276,  -1996}, 0, {   122,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1653,  -3276,  -1996}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1653,  -3276,  -2098}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1730,  -3276,  -2098}, 0, {   122,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07003228 - 0x07003308\nstatic const Vtx vcutm_seg7_vertex_07003228[] = {\n    {{{ -1653,  -3276,  -2098}, 0, {   172,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1653,  -3276,  -1996}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1653,  -3532,  -1996}, 0, {     0,    479}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1653,  -3532,  -2098}, 0, {   172,    479}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,  -2073,  -5861}, 0, {   122,    479}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,  -2073,  -6681}, 0, {  1756,    479}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,  -1970,  -6681}, 0, {  1756,    275}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,  -1970,  -5938}, 0, {   274,    275}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,  -1817,  -5938}, 0, {   274,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,  -1817,  -5861}, 0, {   122,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,  -1970,  -5938}, 0, {   122,    275}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,  -1970,  -6681}, 0, {  1604,    275}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,  -1970,  -5938}, 0, {   122,    275}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   205,  -1970,  -6681}, 0, {  1604,    275}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07003308 - 0x070033E8\nstatic const Vtx vcutm_seg7_vertex_07003308[] = {\n    {{{   205,  -1970,  -5938}, 0, {   122,    275}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   102,  -1970,  -5938}, 0, {   122,    275}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   102,  -1817,  -5938}, 0, {   122,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   102,  -1970,  -5938}, 0, {   836,    275}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   102,  -1970,  -6681}, 0, {  -644,    275}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   102,  -2073,  -6681}, 0, {  -644,    479}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   102,  -2073,  -5861}, 0, {   990,    479}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   102,  -2073,  -5861}, 0, {     0,    479}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   102,  -2073,  -6681}, 0, {  1604,    479}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   205,  -2073,  -6681}, 0, {  1604,    479}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   205,  -2073,  -5861}, 0, {     0,    479}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   102,  -1817,  -5861}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   102,  -1817,  -5938}, 0, {   836,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   205,  -1817,  -5938}, 0, {   122,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070033E8 - 0x070034D8\nstatic const Vtx vcutm_seg7_vertex_070033E8[] = {\n    {{{   102,  -1817,  -5938}, 0, {   122,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,  -1817,  -5861}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   205,  -1817,  -5861}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   205,  -1817,  -5938}, 0, {   122,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   205,  -1817,  -5861}, 0, {   172,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,  -1817,  -5861}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   102,  -2073,  -5861}, 0, {     0,    479}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   205,  -2073,  -5861}, 0, {   172,    479}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1202,  -1631,  -6546}, 0, {     0,    -19}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1151,  -1657,  -6597}, 0, {   478,     -6}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1151,  -2559,  -6597}, 0, {   480,    453}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1202,  -2585,  -6546}, 0, {     0,    466}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1202,  -1631,  -6546}, 0, {     0,    -19}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1100,  -1631,  -6546}, 0, {   990,    -19}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1151,  -1606,  -6546}, 0, {   478,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070034D8 - 0x070035D8\nstatic const Vtx vcutm_seg7_vertex_070034D8[] = {\n    {{{ -1151,  -1606,  -6546}, 0, {   478,      0}, {0xd7, 0x54, 0xac, 0xff}}},\n    {{{ -1151,  -1657,  -6597}, 0, {   478,     -6}, {0xd7, 0x54, 0xac, 0xff}}},\n    {{{ -1202,  -1631,  -6546}, 0, {     0,    -19}, {0xd7, 0x54, 0xac, 0xff}}},\n    {{{ -1151,  -1606,  -6546}, 0, {   478,      0}, {0x29, 0x54, 0xac, 0xff}}},\n    {{{ -1100,  -1631,  -6546}, 0, {   990,    -19}, {0x29, 0x54, 0xac, 0xff}}},\n    {{{ -1151,  -1657,  -6597}, 0, {   478,     -6}, {0x29, 0x54, 0xac, 0xff}}},\n    {{{ -1202,  -1631,  -6546}, 0, {     0,    -19}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1100,  -2585,  -6546}, 0, {   990,    466}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1100,  -1631,  -6546}, 0, {   990,    -19}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1100,  -2585,  -6546}, 0, {   990,    466}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1151,  -1657,  -6597}, 0, {   478,     -6}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1100,  -1631,  -6546}, 0, {   990,    -19}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1151,  -2559,  -6597}, 0, {   480,    453}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1151,  -2610,  -6546}, 0, {   480,    479}, {0x29, 0xac, 0xac, 0xff}}},\n    {{{ -1151,  -2559,  -6597}, 0, {   480,    453}, {0x29, 0xac, 0xac, 0xff}}},\n    {{{ -1100,  -2585,  -6546}, 0, {   990,    466}, {0x29, 0xac, 0xac, 0xff}}},\n};\n\n// 0x070035D8 - 0x070036D8\nstatic const Vtx vcutm_seg7_vertex_070035D8[] = {\n    {{{ -1202,  -1631,  -6546}, 0, {     0,    -19}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1151,  -2610,  -6546}, 0, {   480,    479}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1100,  -2585,  -6546}, 0, {   990,    466}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1151,  -2610,  -6546}, 0, {   480,    479}, {0xd7, 0xac, 0xac, 0xff}}},\n    {{{ -1202,  -2585,  -6546}, 0, {     0,    466}, {0xd7, 0xac, 0xac, 0xff}}},\n    {{{ -1151,  -2559,  -6597}, 0, {   480,    453}, {0xd7, 0xac, 0xac, 0xff}}},\n    {{{ -1202,  -2585,  -6546}, 0, {     0,    466}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1151,  -2610,  -5952}, 0, {   480,    479}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1202,  -2585,  -5952}, 0, {     0,    466}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1202,  -1631,  -5952}, 0, {     0,    -19}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1151,  -1606,  -5952}, 0, {   478,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1100,  -1631,  -5952}, 0, {   990,    -19}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1100,  -2585,  -5952}, 0, {   990,    466}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1151,  -2559,  -5901}, 0, {   480,    453}, {0xd7, 0xac, 0x54, 0xff}}},\n    {{{ -1202,  -2585,  -5952}, 0, {     0,    466}, {0xd7, 0xac, 0x54, 0xff}}},\n    {{{ -1151,  -2610,  -5952}, 0, {   480,    479}, {0xd7, 0xac, 0x54, 0xff}}},\n};\n\n// 0x070036D8 - 0x070037D8\nstatic const Vtx vcutm_seg7_vertex_070036D8[] = {\n    {{{ -1100,  -2585,  -5952}, 0, {   990,    466}, {0x29, 0xac, 0x54, 0xff}}},\n    {{{ -1151,  -2559,  -5901}, 0, {   480,    453}, {0x29, 0xac, 0x54, 0xff}}},\n    {{{ -1151,  -2610,  -5952}, 0, {   480,    479}, {0x29, 0xac, 0x54, 0xff}}},\n    {{{ -1100,  -1631,  -5952}, 0, {   990,    -19}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1151,  -2559,  -5901}, 0, {   480,    453}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1100,  -2585,  -5952}, 0, {   990,    466}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1459,  -1791,  -6546}, 0, {   480,    479}, {0xd5, 0xac, 0xac, 0xff}}},\n    {{{  1408,  -1765,  -6546}, 0, {     0,    466}, {0xd5, 0xac, 0xac, 0xff}}},\n    {{{  1459,  -1740,  -6597}, 0, {   480,    453}, {0xd5, 0xac, 0xac, 0xff}}},\n    {{{ -1151,  -1657,  -5901}, 0, {   478,     -6}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1202,  -1631,  -5952}, 0, {     0,    -19}, {0xd7, 0x54, 0x54, 0xff}}},\n    {{{ -1151,  -1657,  -5901}, 0, {   478,     -6}, {0xd7, 0x54, 0x54, 0xff}}},\n    {{{ -1151,  -1606,  -5952}, 0, {   478,      0}, {0xd7, 0x54, 0x54, 0xff}}},\n    {{{ -1151,  -1657,  -5901}, 0, {   478,     -6}, {0x29, 0x54, 0x54, 0xff}}},\n    {{{ -1100,  -1631,  -5952}, 0, {   990,    -19}, {0x29, 0x54, 0x54, 0xff}}},\n    {{{ -1151,  -1606,  -5952}, 0, {   478,      0}, {0x29, 0x54, 0x54, 0xff}}},\n};\n\n// 0x070037D8 - 0x070038D8\nstatic const Vtx vcutm_seg7_vertex_070037D8[] = {\n    {{{ -1202,  -2585,  -5952}, 0, {     0,    466}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1151,  -1657,  -5901}, 0, {   478,     -6}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1202,  -1631,  -5952}, 0, {     0,    -19}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1151,  -2559,  -5901}, 0, {   480,    453}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1408,   -812,  -6546}, 0, {     0,    -19}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1408,  -1765,  -6546}, 0, {     0,    466}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1459,  -1791,  -6546}, 0, {   480,    479}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1510,  -1765,  -6546}, 0, {   990,    466}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1510,   -812,  -6546}, 0, {   990,    -19}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1459,   -786,  -6546}, 0, {   478,      0}, {0xd6, 0x53, 0xab, 0xff}}},\n    {{{  1459,   -838,  -6597}, 0, {   478,     -6}, {0xd6, 0x53, 0xab, 0xff}}},\n    {{{  1408,   -812,  -6546}, 0, {     0,    -19}, {0xd6, 0x53, 0xab, 0xff}}},\n    {{{  1408,   -812,  -6546}, 0, {     0,    -19}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1459,   -838,  -6597}, 0, {   478,     -6}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1459,  -1740,  -6597}, 0, {   480,    453}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1408,  -1765,  -6546}, 0, {     0,    466}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x070038D8 - 0x070039D8\nstatic const Vtx vcutm_seg7_vertex_070038D8[] = {\n    {{{  1408,   -812,  -6546}, 0, {     0,    -19}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1510,   -812,  -6546}, 0, {   990,    -19}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1459,   -786,  -6546}, 0, {   478,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1459,   -786,  -6546}, 0, {   478,      0}, {0x2a, 0x53, 0xab, 0xff}}},\n    {{{  1510,   -812,  -6546}, 0, {   990,    -19}, {0x2a, 0x53, 0xab, 0xff}}},\n    {{{  1459,   -838,  -6597}, 0, {   478,     -6}, {0x2a, 0x53, 0xab, 0xff}}},\n    {{{  1510,  -1765,  -6546}, 0, {   990,    466}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1459,   -838,  -6597}, 0, {   478,     -6}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1510,   -812,  -6546}, 0, {   990,    -19}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1459,  -1791,  -6546}, 0, {   480,    479}, {0x2b, 0xac, 0xac, 0xff}}},\n    {{{  1459,  -1740,  -6597}, 0, {   480,    453}, {0x2b, 0xac, 0xac, 0xff}}},\n    {{{  1510,  -1765,  -6546}, 0, {   990,    466}, {0x2b, 0xac, 0xac, 0xff}}},\n    {{{  1459,  -1740,  -6597}, 0, {   480,    453}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2406,  -2073,  -6546}, 0, {   990,    466}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2355,  -1145,  -6597}, 0, {   478,     -6}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2406,  -1119,  -6546}, 0, {   990,    -19}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x070039D8 - 0x07003AD8\nstatic const Vtx vcutm_seg7_vertex_070039D8[] = {\n    {{{  1510,  -1765,  -5952}, 0, {   990,    466}, {0x2b, 0xac, 0x54, 0xff}}},\n    {{{  1459,  -1740,  -5901}, 0, {   480,    453}, {0x2b, 0xac, 0x54, 0xff}}},\n    {{{  1459,  -1791,  -5952}, 0, {   480,    479}, {0x2b, 0xac, 0x54, 0xff}}},\n    {{{  1459,  -1740,  -5901}, 0, {   480,    453}, {0xd5, 0xac, 0x54, 0xff}}},\n    {{{  1408,  -1765,  -5952}, 0, {     0,    466}, {0xd5, 0xac, 0x54, 0xff}}},\n    {{{  1459,  -1791,  -5952}, 0, {   480,    479}, {0xd5, 0xac, 0x54, 0xff}}},\n    {{{  1459,  -1791,  -5952}, 0, {   480,    479}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1408,  -1765,  -5952}, 0, {     0,    466}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1408,   -812,  -5952}, 0, {     0,    -19}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1459,   -786,  -5952}, 0, {   478,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1510,   -812,  -5952}, 0, {   990,    -19}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1510,  -1765,  -5952}, 0, {   990,    466}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1510,   -812,  -5952}, 0, {   990,    -19}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1459,   -838,  -5901}, 0, {   478,     -6}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1459,  -1740,  -5901}, 0, {   480,    453}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1510,  -1765,  -5952}, 0, {   990,    466}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07003AD8 - 0x07003BD8\nstatic const Vtx vcutm_seg7_vertex_07003AD8[] = {\n    {{{  1459,   -838,  -5901}, 0, {   478,     -6}, {0x2a, 0x53, 0x55, 0xff}}},\n    {{{  1510,   -812,  -5952}, 0, {   990,    -19}, {0x2a, 0x53, 0x55, 0xff}}},\n    {{{  1459,   -786,  -5952}, 0, {   478,      0}, {0x2a, 0x53, 0x55, 0xff}}},\n    {{{  1408,   -812,  -5952}, 0, {     0,    -19}, {0xd6, 0x53, 0x55, 0xff}}},\n    {{{  1459,   -838,  -5901}, 0, {   478,     -6}, {0xd6, 0x53, 0x55, 0xff}}},\n    {{{  1459,   -786,  -5952}, 0, {   478,      0}, {0xd6, 0x53, 0x55, 0xff}}},\n    {{{  1408,  -1765,  -5952}, 0, {     0,    466}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1459,   -838,  -5901}, 0, {   478,     -6}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1408,   -812,  -5952}, 0, {     0,    -19}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1459,  -1740,  -5901}, 0, {   480,    453}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2304,  -1119,  -6546}, 0, {     0,    -19}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2304,  -2073,  -6546}, 0, {     0,    466}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2355,  -2098,  -6546}, 0, {   480,    479}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2406,  -2073,  -6546}, 0, {   990,    466}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2406,  -1119,  -6546}, 0, {   990,    -19}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2355,  -1094,  -6546}, 0, {   478,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07003BD8 - 0x07003CC8\nstatic const Vtx vcutm_seg7_vertex_07003BD8[] = {\n    {{{  2355,  -1094,  -6546}, 0, {   478,      0}, {0xd7, 0x54, 0xac, 0xff}}},\n    {{{  2355,  -1145,  -6597}, 0, {   478,     -6}, {0xd7, 0x54, 0xac, 0xff}}},\n    {{{  2304,  -1119,  -6546}, 0, {     0,    -19}, {0xd7, 0x54, 0xac, 0xff}}},\n    {{{  2355,  -1094,  -6546}, 0, {   478,      0}, {0x29, 0x54, 0xac, 0xff}}},\n    {{{  2406,  -1119,  -6546}, 0, {   990,    -19}, {0x29, 0x54, 0xac, 0xff}}},\n    {{{  2355,  -1145,  -6597}, 0, {   478,     -6}, {0x29, 0x54, 0xac, 0xff}}},\n    {{{  2355,  -2098,  -6546}, 0, {   480,    479}, {0x29, 0xac, 0xac, 0xff}}},\n    {{{  2355,  -2047,  -6597}, 0, {   480,    453}, {0x29, 0xac, 0xac, 0xff}}},\n    {{{  2406,  -2073,  -6546}, 0, {   990,    466}, {0x29, 0xac, 0xac, 0xff}}},\n    {{{  2406,  -2073,  -6546}, 0, {   990,    466}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2355,  -2047,  -6597}, 0, {   480,    453}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2355,  -1145,  -6597}, 0, {   478,     -6}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2355,  -2098,  -6546}, 0, {   480,    479}, {0xd7, 0xac, 0xac, 0xff}}},\n    {{{  2304,  -2073,  -6546}, 0, {     0,    466}, {0xd7, 0xac, 0xac, 0xff}}},\n    {{{  2355,  -2047,  -6597}, 0, {   480,    453}, {0xd7, 0xac, 0xac, 0xff}}},\n};\n\n// 0x07003CC8 - 0x07003DC8\nstatic const Vtx vcutm_seg7_vertex_07003CC8[] = {\n    {{{  2304,  -1119,  -6546}, 0, {     0,    -19}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2355,  -2047,  -6597}, 0, {   480,    453}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2304,  -2073,  -6546}, 0, {     0,    466}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2355,  -1145,  -6597}, 0, {   478,     -6}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  2355,  -2098,  -5952}, 0, {   480,    479}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2355,  -1094,  -5952}, 0, {   478,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2406,  -1119,  -5952}, 0, {   990,    -19}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2406,  -2073,  -5952}, 0, {   990,    466}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2304,  -1119,  -5952}, 0, {     0,    -19}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2406,  -2073,  -5952}, 0, {   990,    466}, {0x29, 0xac, 0x54, 0xff}}},\n    {{{  2355,  -2047,  -5901}, 0, {   480,    453}, {0x29, 0xac, 0x54, 0xff}}},\n    {{{  2355,  -2098,  -5952}, 0, {   480,    479}, {0x29, 0xac, 0x54, 0xff}}},\n    {{{  2355,  -2047,  -5901}, 0, {   480,    453}, {0xd7, 0xac, 0x54, 0xff}}},\n    {{{  2304,  -2073,  -5952}, 0, {     0,    466}, {0xd7, 0xac, 0x54, 0xff}}},\n    {{{  2355,  -2098,  -5952}, 0, {   480,    479}, {0xd7, 0xac, 0x54, 0xff}}},\n    {{{  2304,  -2073,  -5952}, 0, {     0,    466}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07003DC8 - 0x07003EC8\nstatic const Vtx vcutm_seg7_vertex_07003DC8[] = {\n    {{{  2406,  -1119,  -5952}, 0, {   990,    -19}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2355,  -2047,  -5901}, 0, {   480,    453}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2406,  -2073,  -5952}, 0, {   990,    466}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3251,  -1279,  -6546}, 0, {   480,    479}, {0xd5, 0xac, 0xac, 0xff}}},\n    {{{  3200,  -1253,  -6546}, 0, {     0,    466}, {0xd5, 0xac, 0xac, 0xff}}},\n    {{{  3251,  -1228,  -6597}, 0, {   480,    453}, {0xd5, 0xac, 0xac, 0xff}}},\n    {{{  2355,  -1145,  -5901}, 0, {   478,     -6}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  2304,  -1119,  -5952}, 0, {     0,    -19}, {0xd7, 0x54, 0x54, 0xff}}},\n    {{{  2355,  -1145,  -5901}, 0, {   478,     -6}, {0xd7, 0x54, 0x54, 0xff}}},\n    {{{  2355,  -1094,  -5952}, 0, {   478,      0}, {0xd7, 0x54, 0x54, 0xff}}},\n    {{{  2355,  -1145,  -5901}, 0, {   478,     -6}, {0x29, 0x54, 0x54, 0xff}}},\n    {{{  2406,  -1119,  -5952}, 0, {   990,    -19}, {0x29, 0x54, 0x54, 0xff}}},\n    {{{  2355,  -1094,  -5952}, 0, {   478,      0}, {0x29, 0x54, 0x54, 0xff}}},\n    {{{  2304,  -2073,  -5952}, 0, {     0,    466}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2355,  -1145,  -5901}, 0, {   478,     -6}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2304,  -1119,  -5952}, 0, {     0,    -19}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07003EC8 - 0x07003FC8\nstatic const Vtx vcutm_seg7_vertex_07003EC8[] = {\n    {{{  2304,  -2073,  -5952}, 0, {     0,    466}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2355,  -2047,  -5901}, 0, {   480,    453}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  2355,  -1145,  -5901}, 0, {   478,     -6}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3200,   -300,  -6546}, 0, {     0,    -19}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3200,  -1253,  -6546}, 0, {     0,    466}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3251,  -1279,  -6546}, 0, {   480,    479}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3302,  -1253,  -6546}, 0, {   990,    466}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3302,   -300,  -6546}, 0, {   990,    -19}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3251,   -274,  -6546}, 0, {   478,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3200,   -300,  -6546}, 0, {     0,    -19}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  3251,   -326,  -6597}, 0, {   478,     -6}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  3251,  -1228,  -6597}, 0, {   480,    453}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  3200,  -1253,  -6546}, 0, {     0,    466}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  3251,   -274,  -6546}, 0, {   478,      0}, {0xd6, 0x53, 0xab, 0xff}}},\n    {{{  3251,   -326,  -6597}, 0, {   478,     -6}, {0xd6, 0x53, 0xab, 0xff}}},\n    {{{  3200,   -300,  -6546}, 0, {     0,    -19}, {0xd6, 0x53, 0xab, 0xff}}},\n};\n\n// 0x07003FC8 - 0x070040C8\nstatic const Vtx vcutm_seg7_vertex_07003FC8[] = {\n    {{{  3302,  -1253,  -6546}, 0, {   990,    466}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  3251,   -326,  -6597}, 0, {   478,     -6}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  3302,   -300,  -6546}, 0, {   990,    -19}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  3251,   -274,  -6546}, 0, {   478,      0}, {0x2a, 0x53, 0xab, 0xff}}},\n    {{{  3302,   -300,  -6546}, 0, {   990,    -19}, {0x2a, 0x53, 0xab, 0xff}}},\n    {{{  3251,   -326,  -6597}, 0, {   478,     -6}, {0x2a, 0x53, 0xab, 0xff}}},\n    {{{  3251,  -1279,  -6546}, 0, {   480,    479}, {0x2b, 0xac, 0xac, 0xff}}},\n    {{{  3251,  -1228,  -6597}, 0, {   480,    453}, {0x2b, 0xac, 0xac, 0xff}}},\n    {{{  3302,  -1253,  -6546}, 0, {   990,    466}, {0x2b, 0xac, 0xac, 0xff}}},\n    {{{  3251,  -1228,  -6597}, 0, {   480,    453}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1202,  -2535,  -5952}, 0, {   990,      0}, {0x00, 0x5f, 0x53, 0xff}}},\n    {{{ -1637,  -2548,  -5937}, 0, {   274,    224}, {0x00, 0x5f, 0x53, 0xff}}},\n    {{{ -1187,  -2548,  -5937}, 0, {  1020,    224}, {0x00, 0x5f, 0x53, 0xff}}},\n    {{{  3251,  -1279,  -5952}, 0, {   480,    479}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3251,   -274,  -5952}, 0, {   478,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3302,   -300,  -5952}, 0, {   990,    -19}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070040C8 - 0x070041B8\nstatic const Vtx vcutm_seg7_vertex_070040C8[] = {\n    {{{  3251,  -1279,  -5952}, 0, {   480,    479}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3302,   -300,  -5952}, 0, {   990,    -19}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3302,  -1253,  -5952}, 0, {   990,    466}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3302,  -1253,  -5952}, 0, {   990,    466}, {0x2b, 0xac, 0x54, 0xff}}},\n    {{{  3251,  -1228,  -5901}, 0, {   480,    453}, {0x2b, 0xac, 0x54, 0xff}}},\n    {{{  3251,  -1279,  -5952}, 0, {   480,    479}, {0x2b, 0xac, 0x54, 0xff}}},\n    {{{  3251,  -1228,  -5901}, 0, {   480,    453}, {0xd5, 0xac, 0x54, 0xff}}},\n    {{{  3200,  -1253,  -5952}, 0, {     0,    466}, {0xd5, 0xac, 0x54, 0xff}}},\n    {{{  3251,  -1279,  -5952}, 0, {   480,    479}, {0xd5, 0xac, 0x54, 0xff}}},\n    {{{  3200,  -1253,  -5952}, 0, {     0,    466}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3200,   -300,  -5952}, 0, {     0,    -19}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3251,   -274,  -5952}, 0, {   478,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3302,   -300,  -5952}, 0, {   990,    -19}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3251,  -1228,  -5901}, 0, {   480,    453}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3302,  -1253,  -5952}, 0, {   990,    466}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x070041B8 - 0x070042B8\nstatic const Vtx vcutm_seg7_vertex_070041B8[] = {\n    {{{  3251,   -326,  -5901}, 0, {   478,     -6}, {0x2a, 0x53, 0x55, 0xff}}},\n    {{{  3302,   -300,  -5952}, 0, {   990,    -19}, {0x2a, 0x53, 0x55, 0xff}}},\n    {{{  3251,   -274,  -5952}, 0, {   478,      0}, {0x2a, 0x53, 0x55, 0xff}}},\n    {{{  3302,   -300,  -5952}, 0, {   990,    -19}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3251,   -326,  -5901}, 0, {   478,     -6}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3251,  -1228,  -5901}, 0, {   480,    453}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3200,   -300,  -5952}, 0, {     0,    -19}, {0xd6, 0x53, 0x55, 0xff}}},\n    {{{  3251,   -326,  -5901}, 0, {   478,     -6}, {0xd6, 0x53, 0x55, 0xff}}},\n    {{{  3251,   -274,  -5952}, 0, {   478,      0}, {0xd6, 0x53, 0x55, 0xff}}},\n    {{{  3200,  -1253,  -5952}, 0, {     0,    466}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3251,   -326,  -5901}, 0, {   478,     -6}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3200,   -300,  -5952}, 0, {     0,    -19}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3251,  -1228,  -5901}, 0, {   480,    453}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1637,  -2561,  -5952}, 0, {   274,    479}, {0x00, 0xa1, 0x53, 0xff}}},\n    {{{ -1202,  -2561,  -5952}, 0, {   990,    479}, {0x00, 0xa1, 0x53, 0xff}}},\n    {{{ -1187,  -2548,  -5937}, 0, {  1020,    224}, {0x00, 0xa1, 0x53, 0xff}}},\n};\n\n// 0x070042B8 - 0x070043B8\nstatic const Vtx vcutm_seg7_vertex_070042B8[] = {\n    {{{ -1637,  -2561,  -5952}, 0, {   274,    479}, {0x00, 0xa1, 0x53, 0xff}}},\n    {{{ -1187,  -2548,  -5937}, 0, {  1020,    224}, {0x00, 0xa1, 0x53, 0xff}}},\n    {{{ -1637,  -2548,  -5937}, 0, {   274,    224}, {0x00, 0xa1, 0x53, 0xff}}},\n    {{{ -1202,  -2535,  -5952}, 0, {   990,      0}, {0x00, 0x5f, 0x53, 0xff}}},\n    {{{ -1637,  -2535,  -5952}, 0, {   274,      0}, {0x00, 0x5f, 0x53, 0xff}}},\n    {{{ -1637,  -2548,  -5937}, 0, {   274,    224}, {0x00, 0x5f, 0x53, 0xff}}},\n    {{{ -1202,  -2535,  -5952}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1202,  -2561,  -5952}, 0, {   990,    479}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1637,  -2561,  -5952}, 0, {   274,    479}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1637,  -2535,  -5952}, 0, {   274,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1187,  -2548,  -6562}, 0, {  1020,    224}, {0x00, 0x62, 0xb0, 0xff}}},\n    {{{ -1637,  -2548,  -6562}, 0, {   274,    224}, {0x00, 0x62, 0xb0, 0xff}}},\n    {{{ -1637,  -2535,  -6546}, 0, {   274,      0}, {0x00, 0x62, 0xb0, 0xff}}},\n    {{{ -1637,  -2548,  -6562}, 0, {   274,    224}, {0x00, 0x9e, 0xb0, 0xff}}},\n    {{{ -1187,  -2548,  -6562}, 0, {  1020,    224}, {0x00, 0x9e, 0xb0, 0xff}}},\n    {{{ -1637,  -2561,  -6546}, 0, {   274,    479}, {0x00, 0x9e, 0xb0, 0xff}}},\n};\n\n// 0x070043B8 - 0x070044B8\nstatic const Vtx vcutm_seg7_vertex_070043B8[] = {\n    {{{ -1187,  -2548,  -6562}, 0, {  1020,    224}, {0x00, 0x62, 0xb0, 0xff}}},\n    {{{ -1637,  -2535,  -6546}, 0, {   274,      0}, {0x00, 0x62, 0xb0, 0xff}}},\n    {{{ -1202,  -2535,  -6546}, 0, {   990,      0}, {0x00, 0x62, 0xb0, 0xff}}},\n    {{{ -1187,  -2548,  -6562}, 0, {  1020,    224}, {0x00, 0x9e, 0xb0, 0xff}}},\n    {{{ -1202,  -2561,  -6546}, 0, {   990,    479}, {0x00, 0x9e, 0xb0, 0xff}}},\n    {{{ -1637,  -2561,  -6546}, 0, {   274,    479}, {0x00, 0x9e, 0xb0, 0xff}}},\n    {{{ -1637,  -2561,  -6546}, 0, {   274,    479}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1202,  -2561,  -6546}, 0, {   990,    479}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1202,  -2535,  -6546}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3287,   -415,  -6562}, 0, {   -60,    224}, {0x00, 0x9e, 0xb0, 0xff}}},\n    {{{  3738,   -428,  -6546}, 0, {   582,    479}, {0x00, 0x9e, 0xb0, 0xff}}},\n    {{{  3302,   -428,  -6546}, 0, {     0,    479}, {0x00, 0x9e, 0xb0, 0xff}}},\n    {{{ -1637,  -2535,  -6546}, 0, {   274,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3287,  -1234,  -6562}, 0, {   -60,    224}, {0x00, 0x9e, 0xb0, 0xff}}},\n    {{{  3738,  -1247,  -6546}, 0, {   582,    479}, {0x00, 0x9e, 0xb0, 0xff}}},\n    {{{  3302,  -1247,  -6546}, 0, {     0,    479}, {0x00, 0x9e, 0xb0, 0xff}}},\n};\n\n// 0x070044B8 - 0x07004598\nstatic const Vtx vcutm_seg7_vertex_070044B8[] = {\n    {{{  3738,  -1234,  -6562}, 0, {   582,    224}, {0x00, 0x65, 0xb4, 0xff}}},\n    {{{  3287,  -1234,  -6562}, 0, {   -60,    224}, {0x00, 0x65, 0xb4, 0xff}}},\n    {{{  3302,  -1222,  -6546}, 0, {     0,      0}, {0x00, 0x65, 0xb4, 0xff}}},\n    {{{  3287,  -1234,  -6562}, 0, {   -60,    224}, {0x00, 0x9e, 0xb0, 0xff}}},\n    {{{  3738,  -1234,  -6562}, 0, {   582,    224}, {0x00, 0x9e, 0xb0, 0xff}}},\n    {{{  3738,  -1247,  -6546}, 0, {   582,    479}, {0x00, 0x9e, 0xb0, 0xff}}},\n    {{{  3302,  -1222,  -6546}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3302,  -1247,  -6546}, 0, {     0,    479}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3738,  -1247,  -6546}, 0, {   582,    479}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3738,  -1222,  -6546}, 0, {   582,      0}, {0x00, 0x65, 0xb4, 0xff}}},\n    {{{  3738,  -1222,  -6546}, 0, {   582,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3287,   -415,  -6562}, 0, {   -60,    224}, {0x00, 0x9e, 0xb0, 0xff}}},\n    {{{  3738,   -415,  -6562}, 0, {   582,    224}, {0x00, 0x9e, 0xb0, 0xff}}},\n    {{{  3738,   -428,  -6546}, 0, {   582,    479}, {0x00, 0x9e, 0xb0, 0xff}}},\n};\n\n// 0x07004598 - 0x07004688\nstatic const Vtx vcutm_seg7_vertex_07004598[] = {\n    {{{  3302,  -1247,  -5952}, 0, {     0,    479}, {0x00, 0xa1, 0x53, 0xff}}},\n    {{{  3738,  -1234,  -5937}, 0, {   582,    224}, {0x00, 0xa1, 0x53, 0xff}}},\n    {{{  3287,  -1234,  -5937}, 0, {   -60,    224}, {0x00, 0xa1, 0x53, 0xff}}},\n    {{{  3302,   -402,  -6546}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3302,   -428,  -6546}, 0, {     0,    479}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3738,   -428,  -6546}, 0, {   582,    479}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3738,   -415,  -6562}, 0, {   582,    224}, {0x00, 0x62, 0xb0, 0xff}}},\n    {{{  3302,   -402,  -6546}, 0, {     0,      0}, {0x00, 0x62, 0xb0, 0xff}}},\n    {{{  3738,   -402,  -6546}, 0, {   582,      0}, {0x00, 0x62, 0xb0, 0xff}}},\n    {{{  3287,   -415,  -6562}, 0, {   -60,    224}, {0x00, 0x62, 0xb0, 0xff}}},\n    {{{  3738,   -402,  -6546}, 0, {   582,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3738,  -1247,  -5952}, 0, {   582,    479}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3302,  -1247,  -5952}, 0, {     0,    479}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3302,  -1222,  -5952}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3738,  -1247,  -5952}, 0, {   582,    479}, {0x00, 0xa1, 0x53, 0xff}}},\n};\n\n// 0x07004688 - 0x07004778\nstatic const Vtx vcutm_seg7_vertex_07004688[] = {\n    {{{  3738,   -428,  -5952}, 0, {   582,    479}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3302,   -402,  -5952}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3738,   -402,  -5952}, 0, {   582,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3738,  -1222,  -5952}, 0, {   582,      0}, {0x00, 0x63, 0x4f, 0xff}}},\n    {{{  3287,  -1234,  -5937}, 0, {   -60,    224}, {0x00, 0x63, 0x4f, 0xff}}},\n    {{{  3738,  -1234,  -5937}, 0, {   582,    224}, {0x00, 0x63, 0x4f, 0xff}}},\n    {{{  3302,  -1222,  -5952}, 0, {     0,      0}, {0x00, 0x63, 0x4f, 0xff}}},\n    {{{  3738,  -1247,  -5952}, 0, {   582,    479}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3302,  -1222,  -5952}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3738,  -1222,  -5952}, 0, {   582,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3302,   -428,  -5952}, 0, {     0,    479}, {0x00, 0xa1, 0x53, 0xff}}},\n    {{{  3738,   -428,  -5952}, 0, {   582,    479}, {0x00, 0xa1, 0x53, 0xff}}},\n    {{{  3738,   -415,  -5937}, 0, {   582,    224}, {0x00, 0xa1, 0x53, 0xff}}},\n    {{{  3302,   -428,  -5952}, 0, {     0,    479}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3287,   -415,  -5937}, 0, {   -60,    224}, {0x00, 0xa1, 0x53, 0xff}}},\n};\n\n// 0x07004778 - 0x07004858\nstatic const Vtx vcutm_seg7_vertex_07004778[] = {\n    {{{  3738,   -402,  -5952}, 0, {   582,      0}, {0x00, 0x5f, 0x53, 0xff}}},\n    {{{  3287,   -415,  -5937}, 0, {   -60,    224}, {0x00, 0x5f, 0x53, 0xff}}},\n    {{{  3738,   -415,  -5937}, 0, {   582,    224}, {0x00, 0x5f, 0x53, 0xff}}},\n    {{{  3302,   -402,  -5952}, 0, {     0,      0}, {0x00, 0x5f, 0x53, 0xff}}},\n    {{{ -1202,  -2458,  -5952}, 0, {   990,      0}, {0x00, 0x5f, 0x53, 0xff}}},\n    {{{ -1637,  -2471,  -5937}, 0, {   274,    224}, {0x00, 0x5f, 0x53, 0xff}}},\n    {{{ -1187,  -2471,  -5937}, 0, {  1020,    224}, {0x00, 0x5f, 0x53, 0xff}}},\n    {{{ -1637,  -2471,  -6562}, 0, {   274,    224}, {0x00, 0x9e, 0xb0, 0xff}}},\n    {{{ -1187,  -2471,  -6562}, 0, {  1020,    224}, {0x00, 0x9e, 0xb0, 0xff}}},\n    {{{ -1202,  -2484,  -6546}, 0, {   990,    479}, {0x00, 0x9e, 0xb0, 0xff}}},\n    {{{ -1637,  -2484,  -6546}, 0, {   274,    479}, {0x00, 0x9e, 0xb0, 0xff}}},\n    {{{ -1187,  -2471,  -6562}, 0, {  1020,    224}, {0x00, 0x62, 0xb0, 0xff}}},\n    {{{ -1637,  -2471,  -6562}, 0, {   274,    224}, {0x00, 0x62, 0xb0, 0xff}}},\n    {{{ -1637,  -2458,  -6546}, 0, {   274,      0}, {0x00, 0x62, 0xb0, 0xff}}},\n};\n\n// 0x07004858 - 0x07004938\nstatic const Vtx vcutm_seg7_vertex_07004858[] = {\n    {{{ -1637,  -2484,  -6546}, 0, {   274,    479}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1202,  -2484,  -6546}, 0, {   990,    479}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1202,  -2458,  -6546}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1187,  -2471,  -6562}, 0, {  1020,    224}, {0x00, 0x62, 0xb0, 0xff}}},\n    {{{ -1637,  -2458,  -6546}, 0, {   274,      0}, {0x00, 0x62, 0xb0, 0xff}}},\n    {{{ -1202,  -2458,  -6546}, 0, {   990,      0}, {0x00, 0x62, 0xb0, 0xff}}},\n    {{{ -1637,  -2458,  -6546}, 0, {   274,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1637,  -2484,  -5952}, 0, {   274,    479}, {0x00, 0xa1, 0x53, 0xff}}},\n    {{{ -1202,  -2484,  -5952}, 0, {   990,    479}, {0x00, 0xa1, 0x53, 0xff}}},\n    {{{ -1187,  -2471,  -5937}, 0, {  1020,    224}, {0x00, 0xa1, 0x53, 0xff}}},\n    {{{ -1637,  -2471,  -5937}, 0, {   274,    224}, {0x00, 0xa1, 0x53, 0xff}}},\n    {{{ -1202,  -2458,  -5952}, 0, {   990,      0}, {0x00, 0x5f, 0x53, 0xff}}},\n    {{{ -1637,  -2458,  -5952}, 0, {   274,      0}, {0x00, 0x5f, 0x53, 0xff}}},\n    {{{ -1637,  -2471,  -5937}, 0, {   274,    224}, {0x00, 0x5f, 0x53, 0xff}}},\n};\n\n// 0x07004938 - 0x07004A38\nstatic const Vtx vcutm_seg7_vertex_07004938[] = {\n    {{{ -1202,  -2458,  -5952}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1202,  -2484,  -5952}, 0, {   990,    479}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1637,  -2484,  -5952}, 0, {   274,    479}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1637,  -2458,  -5952}, 0, {   274,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1495,  -1158,  -6562}, 0, {   -60,    224}, {0x00, 0x9b, 0xb4, 0xff}}},\n    {{{  2304,  -1170,  -6546}, 0, {   990,    479}, {0x00, 0x9b, 0xb4, 0xff}}},\n    {{{  1510,  -1170,  -6546}, 0, {     0,    479}, {0x00, 0x9b, 0xb4, 0xff}}},\n    {{{  2319,  -1158,  -6562}, 0, {  1020,    224}, {0x00, 0x62, 0xb0, 0xff}}},\n    {{{  1495,  -1158,  -6562}, 0, {   -60,    224}, {0x00, 0x62, 0xb0, 0xff}}},\n    {{{  1510,  -1145,  -6546}, 0, {     0,      0}, {0x00, 0x62, 0xb0, 0xff}}},\n    {{{  2319,  -1158,  -6562}, 0, {  1020,    224}, {0x00, 0x9b, 0xb4, 0xff}}},\n    {{{  1510,  -1145,  -6546}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1510,  -1170,  -6546}, 0, {     0,    479}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2304,  -1170,  -6546}, 0, {   990,    479}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2304,  -1145,  -6546}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2304,  -1145,  -6546}, 0, {   990,      0}, {0x00, 0x62, 0xb0, 0xff}}},\n};\n\n// 0x07004A38 - 0x07004B38\nstatic const Vtx vcutm_seg7_vertex_07004A38[] = {\n    {{{  2319,  -1234,  -6562}, 0, {  1020,    224}, {0x00, 0x65, 0xb4, 0xff}}},\n    {{{  1495,  -1234,  -6562}, 0, {   -60,    224}, {0x00, 0x65, 0xb4, 0xff}}},\n    {{{  1510,  -1222,  -6546}, 0, {     0,      0}, {0x00, 0x65, 0xb4, 0xff}}},\n    {{{  1495,  -1234,  -6562}, 0, {   -60,    224}, {0x00, 0x9e, 0xb0, 0xff}}},\n    {{{  2319,  -1234,  -6562}, 0, {  1020,    224}, {0x00, 0x9e, 0xb0, 0xff}}},\n    {{{  2304,  -1247,  -6546}, 0, {   990,    479}, {0x00, 0x9e, 0xb0, 0xff}}},\n    {{{  1510,  -1222,  -6546}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1510,  -1247,  -6546}, 0, {     0,    479}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2304,  -1247,  -6546}, 0, {   990,    479}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2304,  -1222,  -6546}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1510,  -1247,  -6546}, 0, {     0,    479}, {0x00, 0x9e, 0xb0, 0xff}}},\n    {{{  2304,  -1222,  -6546}, 0, {   990,      0}, {0x00, 0x65, 0xb4, 0xff}}},\n    {{{  2391,  -1234,  -6562}, 0, {   -60,    224}, {0x00, 0x9e, 0xb0, 0xff}}},\n    {{{  3215,  -1234,  -6562}, 0, {  1020,    224}, {0x00, 0x9e, 0xb0, 0xff}}},\n    {{{  3200,  -1247,  -6546}, 0, {   990,    479}, {0x00, 0x9e, 0xb0, 0xff}}},\n    {{{  2406,  -1247,  -6546}, 0, {     0,    479}, {0x00, 0x9e, 0xb0, 0xff}}},\n};\n\n// 0x07004B38 - 0x07004C38\nstatic const Vtx vcutm_seg7_vertex_07004B38[] = {\n    {{{  3215,  -1234,  -6562}, 0, {  1020,    224}, {0x00, 0x65, 0xb4, 0xff}}},\n    {{{  2391,  -1234,  -6562}, 0, {   -60,    224}, {0x00, 0x65, 0xb4, 0xff}}},\n    {{{  2406,  -1222,  -6546}, 0, {     0,      0}, {0x00, 0x65, 0xb4, 0xff}}},\n    {{{  2406,  -1222,  -6546}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2406,  -1247,  -6546}, 0, {     0,    479}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3200,  -1247,  -6546}, 0, {   990,    479}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3200,  -1222,  -6546}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3200,  -1222,  -6546}, 0, {   990,      0}, {0x00, 0x65, 0xb4, 0xff}}},\n    {{{  2391,  -1158,  -6562}, 0, {   -60,    224}, {0x00, 0x9b, 0xb4, 0xff}}},\n    {{{  3215,  -1158,  -6562}, 0, {  1020,    224}, {0x00, 0x9b, 0xb4, 0xff}}},\n    {{{  3200,  -1170,  -6546}, 0, {   990,    479}, {0x00, 0x9b, 0xb4, 0xff}}},\n    {{{  2406,  -1170,  -6546}, 0, {     0,    479}, {0x00, 0x9b, 0xb4, 0xff}}},\n    {{{  2406,  -1145,  -6546}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2406,  -1170,  -6546}, 0, {     0,    479}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3200,  -1170,  -6546}, 0, {   990,    479}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3200,  -1145,  -6546}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07004C38 - 0x07004D38\nstatic const Vtx vcutm_seg7_vertex_07004C38[] = {\n    {{{  3215,  -1158,  -6562}, 0, {  1020,    224}, {0x00, 0x62, 0xb0, 0xff}}},\n    {{{  2406,  -1145,  -6546}, 0, {     0,      0}, {0x00, 0x62, 0xb0, 0xff}}},\n    {{{  3200,  -1145,  -6546}, 0, {   990,      0}, {0x00, 0x62, 0xb0, 0xff}}},\n    {{{  2391,  -1158,  -6562}, 0, {   -60,    224}, {0x00, 0x62, 0xb0, 0xff}}},\n    {{{  1510,  -1170,  -5952}, 0, {     0,    479}, {0x00, 0x9d, 0x4f, 0xff}}},\n    {{{  2304,  -1170,  -5952}, 0, {   990,    479}, {0x00, 0x9d, 0x4f, 0xff}}},\n    {{{  2319,  -1158,  -5937}, 0, {  1020,    224}, {0x00, 0x9d, 0x4f, 0xff}}},\n    {{{  1495,  -1158,  -5937}, 0, {   -60,    224}, {0x00, 0x9d, 0x4f, 0xff}}},\n    {{{  2304,  -1145,  -5952}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1510,  -1170,  -5952}, 0, {     0,    479}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1510,  -1145,  -5952}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2304,  -1170,  -5952}, 0, {   990,    479}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2304,  -1145,  -5952}, 0, {   990,      0}, {0x00, 0x5f, 0x53, 0xff}}},\n    {{{  1495,  -1158,  -5937}, 0, {   -60,    224}, {0x00, 0x5f, 0x53, 0xff}}},\n    {{{  2319,  -1158,  -5937}, 0, {  1020,    224}, {0x00, 0x5f, 0x53, 0xff}}},\n    {{{  1510,  -1145,  -5952}, 0, {     0,      0}, {0x00, 0x5f, 0x53, 0xff}}},\n};\n\n// 0x07004D38 - 0x07004E38\nstatic const Vtx vcutm_seg7_vertex_07004D38[] = {\n    {{{  2304,  -1222,  -5952}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2304,  -1247,  -5952}, 0, {   990,    479}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1510,  -1247,  -5952}, 0, {     0,    479}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1510,  -1222,  -5952}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1510,  -1247,  -5952}, 0, {     0,    479}, {0x00, 0xa1, 0x53, 0xff}}},\n    {{{  2304,  -1247,  -5952}, 0, {   990,    479}, {0x00, 0xa1, 0x53, 0xff}}},\n    {{{  2319,  -1234,  -5937}, 0, {  1020,    224}, {0x00, 0xa1, 0x53, 0xff}}},\n    {{{  2304,  -1222,  -5952}, 0, {   990,      0}, {0x00, 0x63, 0x4f, 0xff}}},\n    {{{  1495,  -1234,  -5937}, 0, {   -60,    224}, {0x00, 0x63, 0x4f, 0xff}}},\n    {{{  2319,  -1234,  -5937}, 0, {  1020,    224}, {0x00, 0x63, 0x4f, 0xff}}},\n    {{{  1495,  -1234,  -5937}, 0, {   -60,    224}, {0x00, 0xa1, 0x53, 0xff}}},\n    {{{  1510,  -1222,  -5952}, 0, {     0,      0}, {0x00, 0x63, 0x4f, 0xff}}},\n    {{{  2406,  -1247,  -5952}, 0, {     0,    479}, {0x00, 0xa1, 0x53, 0xff}}},\n    {{{  3215,  -1234,  -5937}, 0, {  1020,    224}, {0x00, 0xa1, 0x53, 0xff}}},\n    {{{  2391,  -1234,  -5937}, 0, {   -60,    224}, {0x00, 0xa1, 0x53, 0xff}}},\n    {{{  3200,  -1247,  -5952}, 0, {   990,    479}, {0x00, 0xa1, 0x53, 0xff}}},\n};\n\n// 0x07004E38 - 0x07004F18\nstatic const Vtx vcutm_seg7_vertex_07004E38[] = {\n    {{{  3200,  -1222,  -5952}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2406,  -1247,  -5952}, 0, {     0,    479}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2406,  -1222,  -5952}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3200,  -1247,  -5952}, 0, {   990,    479}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3200,  -1222,  -5952}, 0, {   990,      0}, {0x00, 0x63, 0x4f, 0xff}}},\n    {{{  2391,  -1234,  -5937}, 0, {   -60,    224}, {0x00, 0x63, 0x4f, 0xff}}},\n    {{{  3215,  -1234,  -5937}, 0, {  1020,    224}, {0x00, 0x63, 0x4f, 0xff}}},\n    {{{  2406,  -1222,  -5952}, 0, {     0,      0}, {0x00, 0x63, 0x4f, 0xff}}},\n    {{{  2406,  -1170,  -5952}, 0, {     0,    479}, {0x00, 0x9d, 0x4f, 0xff}}},\n    {{{  3200,  -1170,  -5952}, 0, {   990,    479}, {0x00, 0x9d, 0x4f, 0xff}}},\n    {{{  3215,  -1158,  -5937}, 0, {  1020,    224}, {0x00, 0x9d, 0x4f, 0xff}}},\n    {{{  3200,  -1145,  -5952}, 0, {   990,      0}, {0x00, 0x5f, 0x53, 0xff}}},\n    {{{  2406,  -1145,  -5952}, 0, {     0,      0}, {0x00, 0x5f, 0x53, 0xff}}},\n    {{{  2391,  -1158,  -5937}, 0, {   -60,    224}, {0x00, 0x5f, 0x53, 0xff}}},\n};\n\n// 0x07004F18 - 0x07004FB8\nstatic const Vtx vcutm_seg7_vertex_07004F18[] = {\n    {{{  3200,  -1145,  -5952}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2406,  -1170,  -5952}, 0, {     0,    479}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2406,  -1145,  -5952}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3200,  -1170,  -5952}, 0, {   990,    479}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3200,  -1145,  -5952}, 0, {   990,      0}, {0x00, 0x5f, 0x53, 0xff}}},\n    {{{  2391,  -1158,  -5937}, 0, {   -60,    224}, {0x00, 0x5f, 0x53, 0xff}}},\n    {{{  3215,  -1158,  -5937}, 0, {  1020,    224}, {0x00, 0x5f, 0x53, 0xff}}},\n    {{{  2406,  -1170,  -5952}, 0, {     0,    479}, {0x00, 0x9d, 0x4f, 0xff}}},\n    {{{  3215,  -1158,  -5937}, 0, {  1020,    224}, {0x00, 0x9d, 0x4f, 0xff}}},\n    {{{  2391,  -1158,  -5937}, 0, {   -60,    224}, {0x00, 0x9d, 0x4f, 0xff}}},\n};\n\n// 0x07004FB8 - 0x070050A8\nstatic const Vtx vcutm_seg7_vertex_07004FB8[] = {\n    {{{ -5017,   1594,  -2210}, 0, {  -286,   1244}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4402,   1594,  -2210}, 0, {  1246,   1244}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4197,   1594,  -2722}, 0, {  1756,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3993,   -559,  -1156}, 0, {  -796,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3788,   -559,   -644}, 0, {  -286,   1244}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2969,   -559,  -1156}, 0, {  1756,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3173,   -559,   -644}, 0, {  1246,   1244}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5221,   -227,  -1397}, 0, {  -796,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5017,   -227,   -885}, 0, {  -286,   1244}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4197,   -227,  -1397}, 0, {  1756,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4402,   -227,   -885}, 0, {  1246,   1244}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6450,   -393,  -1276}, 0, {  -796,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6245,   -393,   -764}, 0, {  -286,   1244}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5426,   -393,  -1276}, 0, {  1756,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5631,   -393,   -764}, 0, {  1246,   1244}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070050A8 - 0x07005198\nstatic const Vtx vcutm_seg7_vertex_070050A8[] = {\n    {{{ -6245,   4575,  -4378}, 0, {  -286,   1244}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5631,   4575,  -4378}, 0, {  1246,   1244}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5426,   4575,  -4890}, 0, {  1756,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5221,   1594,  -2722}, 0, {  -796,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5017,   1594,  -2210}, 0, {  -286,   1244}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4197,   1594,  -2722}, 0, {  1756,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3993,   2587,  -3445}, 0, {  -796,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3788,   2587,  -2933}, 0, {  -286,   1244}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2969,   2587,  -3445}, 0, {  1756,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3173,   2587,  -2933}, 0, {  1246,   1244}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5221,   3581,  -4167}, 0, {  -796,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -5017,   3581,  -3655}, 0, {  -286,   1244}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4197,   3581,  -4167}, 0, {  1756,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -4402,   3581,  -3655}, 0, {  1246,   1244}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6450,   4575,  -4890}, 0, {  -796,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07005198 - 0x07005288\nstatic const Vtx vcutm_seg7_vertex_07005198[] = {\n    {{{ -5471,   -546,  -1165}, 0, {  1646,    246}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -6245,   -546,   -764}, 0, {  -286,   1244}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -6406,   -546,  -1165}, 0, {  -686,    246}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4782,     26,  -6245}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4229,     26,  -6245}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4506,     26,  -5969}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4506,     26,  -6522}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3013,   -712,  -1044}, 0, {  1646,    246}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3173,   -712,   -644}, 0, {  1246,   1244}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3788,   -712,   -644}, 0, {  -286,   1244}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3948,   -712,  -1044}, 0, {  -686,    246}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -4242,   -381,  -1285}, 0, {  1646,    246}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -4402,   -381,   -885}, 0, {  1246,   1244}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -5017,   -381,   -885}, 0, {  -286,   1244}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -5177,   -381,  -1285}, 0, {  -686,    246}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07005288 - 0x07005378\nstatic const Vtx vcutm_seg7_vertex_07005288[] = {\n    {{{ -4242,   3428,  -4056}, 0, {  1646,    246}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -4402,   3428,  -3655}, 0, {  1246,   1244}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -5017,   3428,  -3655}, 0, {  -286,   1244}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -5471,   -546,  -1165}, 0, {  1646,    246}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -5631,   -546,   -764}, 0, {  1246,   1244}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -6245,   -546,   -764}, 0, {  -286,   1244}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -4242,   1440,  -2610}, 0, {  1646,    246}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -5017,   1440,  -2210}, 0, {  -286,   1244}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -5177,   1440,  -2610}, 0, {  -686,    246}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -4402,   1440,  -2210}, 0, {  1246,   1244}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3013,   2434,  -3333}, 0, {  1646,    246}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3173,   2434,  -2933}, 0, {  1246,   1244}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3788,   2434,  -2933}, 0, {  -286,   1244}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3948,   2434,  -3333}, 0, {  -686,    246}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -5177,   3428,  -4056}, 0, {  -686,    246}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07005378 - 0x07005468\nstatic const Vtx vcutm_seg7_vertex_07005378[] = {\n    {{{ -6041,   7045,  -6245}, 0, {     0,  -1462}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -6041,   6554,  -6041}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -6041,   7045,  -6041}, 0, {   990,  -1462}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -5471,   4421,  -4778}, 0, {  1646,    246}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -6245,   4421,  -4378}, 0, {  -286,   1244}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -6406,   4421,  -4778}, 0, {  -686,    246}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -5631,   4421,  -4378}, 0, {  1246,   1244}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2457,      0,   -967}, 0, {   990,   7966}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -2457,   6554,  -5733}, 0, {   990,  -8208}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -2866,      0,   -967}, 0, {     0,   7966}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -2866,   6554,  -5733}, 0, {     0,  -8208}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -2866,  -2457,    819}, 0, {     0,   2790}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -2457,      0,   -967}, 0, {   990,  -3274}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -2866,      0,   -967}, 0, {     0,  -3274}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -2457,  -2457,    819}, 0, {   990,   2790}, {0x00, 0x4a, 0x66, 0xff}}},\n};\n\n// 0x07005468 - 0x07005558\nstatic const Vtx vcutm_seg7_vertex_07005468[] = {\n    {{{ -6041,   7045,  -6245}, 0, {   990,  -1462}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -6245,   7045,  -6245}, 0, {     0,  -1462}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -6245,   6554,  -6245}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -6041,   7045,  -6245}, 0, {     0,  -1462}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -6041,   6554,  -6245}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -6041,   6554,  -6041}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -6245,   7045,  -6041}, 0, {     0,  -1462}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6245,   6554,  -6245}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6245,   7045,  -6245}, 0, {   990,  -1462}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6245,   6554,  -6041}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -6041,   6554,  -6041}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6245,   7045,  -6041}, 0, {   990,  -1462}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6041,   7045,  -6041}, 0, {     0,  -1462}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6245,   6554,  -6041}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -6041,   6554,  -6245}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07005558 - 0x07005648\nstatic const Vtx vcutm_seg7_vertex_07005558[] = {\n    {{{ -5177,   1440,  -2610}, 0, { -5140,   -320}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -4402,   1117,  -2375}, 0, { -6138,   1610}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -4242,   1440,  -2610}, 0, { -5140,   2010}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -3948,   -712,  -1044}, 0, {  3544,   2744}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -3173,  -1036,   -809}, 0, {  2546,   4676}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -3013,   -712,  -1044}, 0, {  3544,   5076}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -3788,  -1036,   -809}, 0, {  2546,   3144}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -5177,   -381,  -1285}, 0, {  4566,   -320}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -5017,   -704,  -1050}, 0, {  3568,     80}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -4402,   -704,  -1050}, 0, {  3568,   1610}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -4242,   -381,  -1285}, 0, {  4566,   2010}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -6406,   -546,  -1165}, 0, {  4056,  -3386}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -5631,   -870,   -929}, 0, {  3058,  -1454}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -5471,   -546,  -1165}, 0, {  4056,  -1054}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -6245,   -870,   -929}, 0, {  3058,  -2986}, {0x00, 0x4a, 0x66, 0xff}}},\n};\n\n// 0x07005648 - 0x07005738\nstatic const Vtx vcutm_seg7_vertex_07005648[] = {\n    {{{ -6406,   4421,  -4778}, 0, {  4056,  -3386}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -6245,   4098,  -4543}, 0, {  3058,  -2986}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -5631,   4098,  -4543}, 0, {  3058,  -1454}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -5177,   1440,  -2610}, 0, { -5140,   -320}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -5017,   1117,  -2375}, 0, { -6138,     80}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -4402,   1117,  -2375}, 0, { -6138,   1610}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -3948,   2434,  -3333}, 0, { -2074,   2744}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -3788,   2110,  -3098}, 0, { -3072,   3144}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -3173,   2110,  -3098}, 0, { -3072,   4676}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -3013,   2434,  -3333}, 0, { -2074,   5076}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -5177,   3428,  -4056}, 0, {   990,   -320}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -5017,   3104,  -3820}, 0, {    -8,     80}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -4402,   3104,  -3820}, 0, {    -8,   1610}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -4242,   3428,  -4056}, 0, {   990,   2010}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -5471,   4421,  -4778}, 0, {  4056,  -1054}, {0x00, 0x4a, 0x66, 0xff}}},\n};\n\n// 0x07005738 - 0x07005828\nstatic const Vtx vcutm_seg7_vertex_07005738[] = {\n    {{{ -5017,   -704,  -1050}, 0, {  3568,     80}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -5426,   -393,  -1276}, 0, {  4530,   -942}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -5471,   -546,  -1165}, 0, {  4056,  -1054}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -5221,   -227,  -1397}, 0, {  5040,   -432}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -6553,      0,  -1563}, 0, {  5746,  -3754}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -2866,      0,  -1563}, 0, {  5746,   5442}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -4197,   -227,  -1397}, 0, {  5040,   2122}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -5177,   -381,  -1285}, 0, {  4566,   -320}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -4242,   -381,  -1285}, 0, {  4566,   2010}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -2969,   -559,  -1156}, 0, {  4018,   5188}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -2866,  -3276,    819}, 0, { -4362,   5442}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -6450,   -393,  -1276}, 0, {  4530,  -3498}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -6553,  -3276,    819}, 0, { -4362,  -3752}, {0xff, 0x4a, 0x66, 0xff}}},\n    {{{ -6450,   -393,  -1276}, 0, {  4530,  -3498}, {0xff, 0x4a, 0x66, 0xff}}},\n    {{{ -6553,      0,  -1563}, 0, {  5746,  -3754}, {0xff, 0x4a, 0x66, 0xff}}},\n};\n\n// 0x07005828 - 0x07005918\nstatic const Vtx vcutm_seg7_vertex_07005828[] = {\n    {{{ -6553,  -3276,    819}, 0, { -4362,  -3752}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -6245,   -870,   -929}, 0, {  3058,  -2986}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -6406,   -546,  -1165}, 0, {  4056,  -3386}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -6450,   -393,  -1276}, 0, {  4530,  -3498}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -5631,   -870,   -929}, 0, {  3058,  -1454}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -2866,  -3276,    819}, 0, { -4362,   5442}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -5017,   -704,  -1050}, 0, {  3568,     80}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -4402,   -704,  -1050}, 0, {  3568,   1610}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -5471,   -546,  -1165}, 0, {  4056,  -1054}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -3788,  -1036,   -809}, 0, {  2546,   3144}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -3173,  -1036,   -809}, 0, {  2546,   4676}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -3948,   -712,  -1044}, 0, {  3546,   2744}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -4402,   -704,  -1050}, 0, {  3568,   1610}, {0x00, 0x4b, 0x66, 0xff}}},\n    {{{ -3948,   -712,  -1044}, 0, {  3546,   2744}, {0x00, 0x4b, 0x66, 0xff}}},\n    {{{ -3993,   -559,  -1156}, 0, {  4018,   2632}, {0x00, 0x4b, 0x66, 0xff}}},\n};\n\n// 0x07005918 - 0x07005A18\nstatic const Vtx vcutm_seg7_vertex_07005918[] = {\n    {{{ -4242,   -381,  -1285}, 0, {  4566,   2010}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -4402,   -704,  -1050}, 0, {  3568,   1610}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -3993,   -559,  -1156}, 0, {  4018,   2632}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -2969,   -559,  -1156}, 0, {  4018,   5188}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -2969,   -559,  -1156}, 0, {  4018,   5188}, {0x01, 0x4a, 0x66, 0xff}}},\n    {{{ -3013,   -712,  -1044}, 0, {  3544,   5076}, {0x01, 0x4a, 0x66, 0xff}}},\n    {{{ -2866,  -3276,    819}, 0, { -4362,   5442}, {0x01, 0x4a, 0x66, 0xff}}},\n    {{{ -3013,   -712,  -1044}, 0, {  3544,   5076}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -3173,  -1036,   -809}, 0, {  2546,   4676}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -2866,  -3276,    819}, 0, { -4362,   5442}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -6553,      0,  -1563}, 0, { -9582,  -3754}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -6406,   4421,  -4778}, 0, {  4056,  -3386}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -6450,   4575,  -4890}, 0, {  4530,  -3498}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -6553,   5734,  -5733}, 0, {  8106,  -3752}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -5426,   4575,  -4890}, 0, {  4530,   -942}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -2866,   5734,  -5733}, 0, {  8106,   5442}, {0x00, 0x4a, 0x66, 0xff}}},\n};\n\n// 0x07005A18 - 0x07005B18\nstatic const Vtx vcutm_seg7_vertex_07005A18[] = {\n    {{{ -5426,   4575,  -4890}, 0, {  4530,   -942}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -4197,   3581,  -4167}, 0, {  1464,   2122}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -2866,   5734,  -5733}, 0, {  8106,   5442}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -5471,   4421,  -4778}, 0, {  4056,  -1054}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -5221,   1594,  -2722}, 0, { -4666,   -432}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -5631,   4098,  -4543}, 0, {  3058,  -1454}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -6245,   4098,  -4543}, 0, {  3058,  -2986}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -6553,   5734,  -6553}, 0, {  9310,  -3752}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6553,   5734,  -5733}, 0, {  8106,  -3752}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2866,   5734,  -5733}, 0, {  8106,   5442}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2866,   5734,  -6553}, 0, {  9310,   5442}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2969,   2587,  -3445}, 0, { -1600,   5188}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -2866,      0,  -1563}, 0, { -9582,   5442}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -4242,   3428,  -4056}, 0, {   990,   2010}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -3993,   2587,  -3445}, 0, { -1600,   2632}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -5221,   3581,  -4167}, 0, {  1464,   -432}, {0x00, 0x4a, 0x66, 0xff}}},\n};\n\n// 0x07005B18 - 0x07005C18\nstatic const Vtx vcutm_seg7_vertex_07005B18[] = {\n    {{{ -5221,   1594,  -2722}, 0, { -4666,   -432}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -5177,   3428,  -4056}, 0, {   990,   -320}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -5631,   4098,  -4543}, 0, {  3058,  -1454}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -5221,   3581,  -4167}, 0, {  1464,   -432}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -3993,   2587,  -3445}, 0, { -1600,   2632}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -4242,   3428,  -4056}, 0, {   990,   2010}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -4402,   3104,  -3820}, 0, {    -8,   1610}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -4197,   1594,  -2722}, 0, { -4666,   2122}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -3948,   2434,  -3333}, 0, { -2074,   2744}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -5017,   3104,  -3820}, 0, {    -8,     80}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -2866,      0,  -1563}, 0, { -9582,   5442}, {0x01, 0x4a, 0x66, 0xff}}},\n    {{{ -2969,   2587,  -3445}, 0, { -1600,   5188}, {0x01, 0x4a, 0x66, 0xff}}},\n    {{{ -3013,   2434,  -3333}, 0, { -2074,   5076}, {0x01, 0x4a, 0x66, 0xff}}},\n    {{{ -6553,      0,  -1563}, 0, { -9582,  -3754}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -2866,      0,  -1563}, 0, { -9582,   5442}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -4402,   1117,  -2375}, 0, { -6138,   1610}, {0x00, 0x4a, 0x66, 0xff}}},\n};\n\n// 0x07005C18 - 0x07005D18\nstatic const Vtx vcutm_seg7_vertex_07005C18[] = {\n    {{{ -2866,      0,  -1563}, 0, { -9582,   5442}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -4242,   1440,  -2610}, 0, { -5140,   2010}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -4402,   1117,  -2375}, 0, { -6138,   1610}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -3173,   2110,  -3098}, 0, { -3072,   4676}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -4197,   1594,  -2722}, 0, { -4666,   2122}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -3013,   2434,  -3333}, 0, { -2074,   5076}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -6553,      0,  -1563}, 0, { -9582,  -3754}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -5017,   1117,  -2375}, 0, { -6138,     80}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -5177,   1440,  -2610}, 0, { -5140,   -320}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -3788,   2110,  -3098}, 0, { -3072,   3144}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -5017,   3104,  -3820}, 0, {    -8,     80}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -5221,   1594,  -2722}, 0, { -4666,   -432}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -3948,   2434,  -3333}, 0, { -2074,   2744}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -5177,   3428,  -4056}, 0, {   990,   -320}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -6245,   4098,  -4543}, 0, {  3058,  -2986}, {0x00, 0x4a, 0x66, 0xff}}},\n    {{{ -6406,   4421,  -4778}, 0, {  4056,  -3386}, {0x00, 0x4a, 0x66, 0xff}}},\n};\n\n// 0x07005D18 - 0x07005E18\nstatic const Vtx vcutm_seg7_vertex_07005D18[] = {\n    {{{  4403,      0,  -4607}, 0, {   352,    606}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4403,   -101,  -4607}, 0, {   352,    606}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4403,   -101,  -4402}, 0, {   352,    862}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4403,      0,  -4402}, 0, {   352,    862}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4198,      0,  -4607}, 0, {    96,    606}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4403,   -101,  -4607}, 0, {   352,    606}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4403,      0,  -4607}, 0, {   352,    606}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4403,      0,  -4402}, 0, {   352,    862}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4403,   -101,  -4402}, 0, {   352,    862}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4198,   -101,  -4402}, 0, {    96,    862}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4198,      0,  -4402}, 0, {    96,    862}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4198,   -101,  -4607}, 0, {    96,    606}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4198,      0,  -4402}, 0, {    96,    862}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4198,   -101,  -4607}, 0, {    96,    606}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4198,      0,  -4607}, 0, {    96,    606}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4198,   -101,  -4402}, 0, {    96,    862}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07005E18 - 0x07005F18\nstatic const Vtx vcutm_seg7_vertex_07005E18[] = {\n    {{{  4800,      0,  -6227}, 0, {   990,     96}, {0x40, 0x58, 0x40, 0xff}}},\n    {{{  4782,     26,  -6245}, 0, {   990,      0}, {0x40, 0x58, 0x40, 0xff}}},\n    {{{  4524,      0,  -5951}, 0, {     0,     96}, {0x40, 0x58, 0x40, 0xff}}},\n    {{{  4524,      0,  -6540}, 0, {   990,     96}, {0x40, 0x58, 0xc0, 0xff}}},\n    {{{  4506,     26,  -6522}, 0, {   990,      0}, {0x40, 0x58, 0xc0, 0xff}}},\n    {{{  4800,      0,  -6263}, 0, {     0,     96}, {0x40, 0x58, 0xc0, 0xff}}},\n    {{{  4782,     26,  -6245}, 0, {     0,      0}, {0x40, 0x58, 0xc0, 0xff}}},\n    {{{  4211,      0,  -6263}, 0, {   990,     96}, {0xc1, 0x5a, 0xc1, 0xff}}},\n    {{{  4506,     26,  -6522}, 0, {     0,      0}, {0xc1, 0x5a, 0xc1, 0xff}}},\n    {{{  4487,      0,  -6540}, 0, {     0,     96}, {0xc1, 0x5a, 0xc1, 0xff}}},\n    {{{  4211,      0,  -6263}, 0, {   990,     96}, {0xc0, 0x58, 0xc0, 0xff}}},\n    {{{  4229,     26,  -6245}, 0, {   990,      0}, {0xc0, 0x58, 0xc0, 0xff}}},\n    {{{  4506,     26,  -6522}, 0, {     0,      0}, {0xc0, 0x58, 0xc0, 0xff}}},\n    {{{  4488,      0,  -5951}, 0, {   990,     96}, {0xc0, 0x58, 0x40, 0xff}}},\n    {{{  4506,     26,  -5969}, 0, {   990,      0}, {0xc0, 0x58, 0x40, 0xff}}},\n    {{{  4229,     26,  -6245}, 0, {     0,      0}, {0xc0, 0x58, 0x40, 0xff}}},\n};\n\n// 0x07005F18 - 0x07006018\nstatic const Vtx vcutm_seg7_vertex_07005F18[] = {\n    {{{  4488,      0,  -5951}, 0, {   990,     96}, {0xc0, 0x58, 0x40, 0xff}}},\n    {{{  4229,     26,  -6245}, 0, {     0,      0}, {0xc0, 0x58, 0x40, 0xff}}},\n    {{{  4211,      0,  -6227}, 0, {     0,     96}, {0xc0, 0x58, 0x40, 0xff}}},\n    {{{     0,   6554,   6554}, 0, { -1052,  -2076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     0,   6554,      0}, 0, { -1052,   2010}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4915,   6554,      0}, 0, {  2012,   2010}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4782,     26,  -6245}, 0, {   990,      0}, {0x40, 0x58, 0x40, 0xff}}},\n    {{{  4506,     26,  -5969}, 0, {     0,      0}, {0x40, 0x58, 0x40, 0xff}}},\n    {{{  4524,      0,  -5951}, 0, {     0,     96}, {0x40, 0x58, 0x40, 0xff}}},\n    {{{  4915,      0,  -5938}, 0, {   990,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4403,      0,  -4402}, 0, {   352,    862}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4915,      0,  -4300}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4198,      0,  -4402}, 0, {    96,    862}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4096,      0,  -4300}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4198,      0,  -4607}, 0, {    96,    606}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4096,      0,  -5938}, 0, {     0,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07006018 - 0x07006118\nstatic const Vtx vcutm_seg7_vertex_07006018[] = {\n    {{{  4915,      0,  -5938}, 0, {   990,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4403,      0,  -4607}, 0, {   352,    606}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4403,      0,  -4402}, 0, {   352,    862}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4198,      0,  -4607}, 0, {    96,    606}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4096,      0,  -5938}, 0, {     0,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,   6554,   6554}, 0, { -1052,  -2076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4915,   6554,      0}, 0, {  2012,   2010}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4915,   6554,   6554}, 0, {  2012,  -2076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -6553,   6554,   6554}, 0, { -1052,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     0,   6554,      0}, 0, {  3034,   3032}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     0,   6554,   6554}, 0, {  3034,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -6553,   6554,      0}, 0, { -1052,   3032}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4915,   6554,      0}, 0, {  2012,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     0,   6554,      0}, 0, { -1052,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     0,   6554,  -6553}, 0, { -1052,   3032}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4915,   6554,  -6553}, 0, {  2012,   3032}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07006118 - 0x07006198\nstatic const Vtx vcutm_seg7_vertex_07006118[] = {\n    {{{     0,   6554,  -6553}, 0, {  3034,   2010}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -6041,   6554,  -6245}, 0, {  -732,   1818}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -6245,   6554,  -6245}, 0, {  -860,   1818}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -6245,   6554,  -6041}, 0, {  -860,   1690}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -6553,   6554,      0}, 0, { -1052,  -2076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -6553,   6554,  -6553}, 0, { -1052,   2010}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     0,   6554,      0}, 0, {  3034,  -2076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -6041,   6554,  -6041}, 0, {  -732,   1690}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07006198 - 0x07006298\nstatic const Vtx vcutm_seg7_vertex_07006198[] = {\n    {{{  4096,      0,  -5938}, 0, { -8206,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4096,   -101,  -4300}, 0, {  8144,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4096,      0,  -4300}, 0, {  8144,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4096,   -101,  -5938}, 0, { -8206,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4096,      0,  -4300}, 0, { -3096,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4915,   -101,  -4300}, 0, {  5078,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4915,      0,  -4300}, 0, {  5078,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4096,   -101,  -4300}, 0, { -3096,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2969,   -559,  -1156}, 0, {  3886,      0}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{ -3173,   -712,   -644}, 0, {  2522,    990}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{ -3013,   -712,  -1044}, 0, {  3588,    990}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{ -3173,   -559,   -644}, 0, {  2522,      0}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{ -3173,   -712,   -644}, 0, {  2522,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3173,   -559,   -644}, 0, {  2522,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3788,   -559,   -644}, 0, { -1562,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3788,   -712,   -644}, 0, { -1562,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07006298 - 0x07006388\nstatic const Vtx vcutm_seg7_vertex_07006298[] = {\n    {{{ -5426,   -393,  -1276}, 0, {  3886,      0}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{ -5631,   -393,   -764}, 0, {  2522,      0}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{ -5471,   -546,  -1165}, 0, {  3588,    990}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{ -3788,   -712,   -644}, 0, { -1562,    990}, {0x8b, 0x00, 0x2f, 0xff}}},\n    {{{ -3788,   -559,   -644}, 0, { -1562,      0}, {0x8b, 0x00, 0x2f, 0xff}}},\n    {{{ -3993,   -559,  -1156}, 0, { -2926,      0}, {0x8b, 0x00, 0x2f, 0xff}}},\n    {{{ -3948,   -712,  -1044}, 0, { -2628,    990}, {0x8b, 0x00, 0x2f, 0xff}}},\n    {{{ -4197,   -227,  -1397}, 0, {  3886,      0}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{ -4402,   -381,   -885}, 0, {  2522,    990}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{ -4242,   -381,  -1285}, 0, {  3588,    990}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{ -4402,   -227,   -885}, 0, {  2522,      0}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{ -4402,   -381,   -885}, 0, {  2522,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4402,   -227,   -885}, 0, {  2522,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5017,   -227,   -885}, 0, { -1562,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5017,   -381,   -885}, 0, { -1562,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07006388 - 0x07006468\nstatic const Vtx vcutm_seg7_vertex_07006388[] = {\n    {{{ -5017,   -381,   -885}, 0, { -1562,    990}, {0x8b, 0x00, 0x2f, 0xff}}},\n    {{{ -5017,   -227,   -885}, 0, { -1562,      0}, {0x8b, 0x00, 0x2f, 0xff}}},\n    {{{ -5221,   -227,  -1397}, 0, { -2926,      0}, {0x8b, 0x00, 0x2f, 0xff}}},\n    {{{ -5177,   -381,  -1285}, 0, { -2628,    990}, {0x8b, 0x00, 0x2f, 0xff}}},\n    {{{ -4402,   1440,  -2210}, 0, {  2522,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5017,   1594,  -2210}, 0, { -1562,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5017,   1440,  -2210}, 0, { -1562,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5631,   -546,   -764}, 0, {  2522,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5631,   -393,   -764}, 0, {  2522,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -6245,   -393,   -764}, 0, { -1562,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5631,   -393,   -764}, 0, {  2522,      0}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{ -5631,   -546,   -764}, 0, {  2522,    990}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{ -5471,   -546,  -1165}, 0, {  3588,    990}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{ -6245,   -546,   -764}, 0, { -1562,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07006468 - 0x07006548\nstatic const Vtx vcutm_seg7_vertex_07006468[] = {\n    {{{ -6245,   -546,   -764}, 0, { -1562,    990}, {0x8b, 0x00, 0x2f, 0xff}}},\n    {{{ -6245,   -393,   -764}, 0, { -1562,      0}, {0x8b, 0x00, 0x2f, 0xff}}},\n    {{{ -6450,   -393,  -1276}, 0, { -2926,      0}, {0x8b, 0x00, 0x2f, 0xff}}},\n    {{{ -6406,   -546,  -1165}, 0, { -2628,    990}, {0x8b, 0x00, 0x2f, 0xff}}},\n    {{{ -4197,   1594,  -2722}, 0, {  3886,      0}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{ -4402,   1440,  -2210}, 0, {  2522,    990}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{ -4242,   1440,  -2610}, 0, {  3588,    990}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{ -4402,   1594,  -2210}, 0, {  2522,      0}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{ -4402,   1440,  -2210}, 0, {  2522,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4402,   1594,  -2210}, 0, {  2522,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5017,   1594,  -2210}, 0, { -1562,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4197,   3581,  -4167}, 0, {  3886,      0}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{ -4402,   3581,  -3655}, 0, {  2522,      0}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{ -4402,   3428,  -3655}, 0, {  2522,    990}, {0x75, 0x00, 0x2f, 0xff}}},\n};\n\n// 0x07006548 - 0x07006648\nstatic const Vtx vcutm_seg7_vertex_07006548[] = {\n    {{{ -5017,   1594,  -2210}, 0, { -1562,      0}, {0x8b, 0x00, 0x2f, 0xff}}},\n    {{{ -5221,   1594,  -2722}, 0, { -2926,      0}, {0x8b, 0x00, 0x2f, 0xff}}},\n    {{{ -5177,   1440,  -2610}, 0, { -2628,    990}, {0x8b, 0x00, 0x2f, 0xff}}},\n    {{{ -5017,   1440,  -2210}, 0, { -1562,    990}, {0x8b, 0x00, 0x2f, 0xff}}},\n    {{{ -2969,   2587,  -3445}, 0, {  3886,      0}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{ -3173,   2587,  -2933}, 0, {  2522,      0}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{ -3013,   2434,  -3333}, 0, {  3588,    990}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{ -3173,   2434,  -2933}, 0, {  2522,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3173,   2587,  -2933}, 0, {  2522,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3788,   2587,  -2933}, 0, { -1562,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3173,   2434,  -2933}, 0, {  2522,    990}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{ -3788,   2434,  -2933}, 0, { -1562,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3788,   2434,  -2933}, 0, { -1562,    990}, {0x8b, 0x00, 0x2f, 0xff}}},\n    {{{ -3788,   2587,  -2933}, 0, { -1562,      0}, {0x8b, 0x00, 0x2f, 0xff}}},\n    {{{ -3993,   2587,  -3445}, 0, { -2926,      0}, {0x8b, 0x00, 0x2f, 0xff}}},\n    {{{ -3948,   2434,  -3333}, 0, { -2628,    990}, {0x8b, 0x00, 0x2f, 0xff}}},\n};\n\n// 0x07006648 - 0x07006728\nstatic const Vtx vcutm_seg7_vertex_07006648[] = {\n    {{{ -4402,   3428,  -3655}, 0, {  2522,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4402,   3581,  -3655}, 0, {  2522,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5017,   3581,  -3655}, 0, { -1562,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5017,   3428,  -3655}, 0, { -1562,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -4197,   3581,  -4167}, 0, {  3886,      0}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{ -4402,   3428,  -3655}, 0, {  2522,    990}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{ -4242,   3428,  -4056}, 0, {  3588,    990}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{ -5017,   3581,  -3655}, 0, { -1562,      0}, {0x8b, 0x00, 0x2f, 0xff}}},\n    {{{ -5221,   3581,  -4167}, 0, { -2926,      0}, {0x8b, 0x00, 0x2f, 0xff}}},\n    {{{ -5177,   3428,  -4056}, 0, { -2628,    990}, {0x8b, 0x00, 0x2f, 0xff}}},\n    {{{ -5017,   3428,  -3655}, 0, { -1562,    990}, {0x8b, 0x00, 0x2f, 0xff}}},\n    {{{ -5426,   4575,  -4890}, 0, {  3886,      0}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{ -5631,   4575,  -4378}, 0, {  2522,      0}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{ -5471,   4421,  -4778}, 0, {  3588,    990}, {0x75, 0x00, 0x2f, 0xff}}},\n};\n\n// 0x07006728 - 0x070067D8\nstatic const Vtx vcutm_seg7_vertex_07006728[] = {\n    {{{ -5631,   4421,  -4378}, 0, {  2522,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5631,   4575,  -4378}, 0, {  2522,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -6245,   4575,  -4378}, 0, { -1562,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -5631,   4575,  -4378}, 0, {  2522,      0}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{ -5631,   4421,  -4378}, 0, {  2522,    990}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{ -5471,   4421,  -4778}, 0, {  3588,    990}, {0x75, 0x00, 0x2f, 0xff}}},\n    {{{ -6245,   4421,  -4378}, 0, { -1562,    990}, {0x8b, 0x00, 0x2f, 0xff}}},\n    {{{ -6450,   4575,  -4890}, 0, { -2926,      0}, {0x8b, 0x00, 0x2f, 0xff}}},\n    {{{ -6406,   4421,  -4778}, 0, { -2628,    990}, {0x8b, 0x00, 0x2f, 0xff}}},\n    {{{ -6245,   4421,  -4378}, 0, { -1562,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -6245,   4575,  -4378}, 0, { -1562,      0}, {0x8b, 0x00, 0x2f, 0xff}}},\n};\n\n// 0x070067D8 - 0x070068B8\nstatic const Vtx vcutm_seg7_vertex_070067D8[] = {\n    {{{  4487,      0,  -5951}, 0, {  1950,     58}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4211,      0,  -6227}, 0, {   570,   1436}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3738,      0,  -5938}, 0, {  2012,   3798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4915,      0,  -6553}, 0, { -1052,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4524,      0,  -6540}, 0, {  -990,   -122}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4800,      0,  -6263}, 0, {   388,  -1502}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4491,      0,  -6553}, 0, { -1052,     40}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4800,      0,  -6227}, 0, {   570,  -1502}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4915,      0,  -5938}, 0, {  2012,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4524,      0,  -5951}, 0, {  1950,   -122}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4211,      0,  -6263}, 0, {   388,   1436}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4488,      0,  -6540}, 0, {  -990,     58}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3738,      0,  -6553}, 0, { -1052,   3798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4485,      0,  -5938}, 0, {  2012,     72}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070068B8 - 0x070069B8\nstatic const Vtx vcutm_seg7_vertex_070068B8[] = {\n    {{{ -1637,  -2457,  -6553}, 0, { -9228,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2457,  -2457,  -4914}, 0, { -1052,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1637,  -2457,  -4914}, 0, { -1052,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2457,  -3276,  -1177}, 0, { -4884,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2457,  -3276,    819}, 0, {  5078,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1637,  -3276,   1638}, 0, {  9166,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2457,  -2457,  -6553}, 0, { -9228,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6553,  -3276,    819}, 0, { -1052,   9164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1637,  -3276,   1638}, 0, {  3034, -15362}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2457,  -3276,    819}, 0, { -1052, -11274}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -6553,  -3276,   1638}, 0, {  3034,   9164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2457,  -2866,  -4914}, 0, { -1052,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2457,  -2866,  -2917}, 0, {  8910,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1637,  -2866,  -2917}, 0, {  8910,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1637,  -2866,  -4914}, 0, { -1052,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1637,  -3276,  -1177}, 0, { -4884,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070069B8 - 0x07006A98\nstatic const Vtx vcutm_seg7_vertex_070069B8[] = {\n    {{{ -2866,   5734,  -5733}, 0, { -1048,  -3098}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2866,      0,   -967}, 0, { 10840,  11208}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2866,   6554,  -5733}, 0, { -1048,  -5142}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2866,      0,  -1563}, 0, {  9352,  11208}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2866,   6554,  -6553}, 0, { -3092,  -5142}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2866,   5734,  -6553}, 0, { -3092,  -3098}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2866,      0,  -1563}, 0, {  -864,  -3098}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2866,  -3276,    819}, 0, {  5076,   5076}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2866,  -2457,    819}, 0, {  5076,   3032}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2866,      0,   -967}, 0, {   620,  -3098}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2866,  -3276,    819}, 0, {   988,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2457,  -3276,    819}, 0, {  2012,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2457,  -2457,    819}, 0, {  2012,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2866,  -2457,    819}, 0, {   992,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07006A98 - 0x07006AD8\nstatic const Vtx vcutm_seg7_vertex_07006A98[] = {\n    {{{ -6553,   5734,  -6553}, 0, { -4116,   2010}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2866,   6554,  -6553}, 0, {  5080,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -6553,   6554,  -6553}, 0, { -4116,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2866,   5734,  -6553}, 0, {  5080,   2010}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07006AD8 - 0x07006BC8\nstatic const Vtx vcutm_seg7_vertex_07006AD8[] = {\n    {{{  4096,   -101,  -4300}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4403,   -101,  -4402}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4915,   -101,  -4300}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4488,      0,  -6540}, 0, {     0,      0}, {0x00, 0x48, 0x98, 0xff}}},\n    {{{  4506,     26,  -6522}, 0, {     0,      0}, {0x00, 0x48, 0x98, 0xff}}},\n    {{{  4524,      0,  -6540}, 0, {     0,      0}, {0x00, 0x48, 0x98, 0xff}}},\n    {{{  4487,      0,  -5951}, 0, {     0,      0}, {0x00, 0x48, 0x68, 0xff}}},\n    {{{  4524,      0,  -5951}, 0, {     0,      0}, {0x00, 0x48, 0x68, 0xff}}},\n    {{{  4506,     26,  -5969}, 0, {     0,      0}, {0x00, 0x48, 0x68, 0xff}}},\n    {{{  4800,      0,  -6227}, 0, {     0,      0}, {0x68, 0x48, 0x00, 0xff}}},\n    {{{  4800,      0,  -6263}, 0, {     0,      0}, {0x68, 0x48, 0x00, 0xff}}},\n    {{{  4782,     26,  -6245}, 0, {     0,      0}, {0x68, 0x48, 0x00, 0xff}}},\n    {{{  4211,      0,  -6227}, 0, {     0,      0}, {0x98, 0x48, 0x00, 0xff}}},\n    {{{  4229,     26,  -6245}, 0, {     0,      0}, {0x98, 0x48, 0x00, 0xff}}},\n    {{{  4211,      0,  -6263}, 0, {     0,      0}, {0x98, 0x48, 0x00, 0xff}}},\n};\n\n// 0x07006BC8 - 0x07006C48\nstatic const Vtx vcutm_seg7_vertex_07006BC8[] = {\n    {{{  4403,   -101,  -4607}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4096,   -101,  -5938}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4915,   -101,  -5938}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4096,   -101,  -4300}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4198,   -101,  -4402}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4403,   -101,  -4402}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4915,   -101,  -4300}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4198,   -101,  -4607}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07006C48 - 0x070074A0\nstatic const Gfx vcutm_seg7_dl_07006C48[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_0900B000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 16 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&vcutm_seg7_lights_07003000.l, 1),\n    gsSPLight(&vcutm_seg7_lights_07003000.a, 2),\n    gsSPVertex(vcutm_seg7_vertex_07003048, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  0,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07003128, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07003228, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 4,  7,  8, 0x0,  4,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07003308, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  3, 11, 12, 0x0),\n    gsSP2Triangles( 3,  6, 11, 0x0,  0,  2, 13, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_070033E8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_070034D8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_070035D8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  7, 10, 11, 0x0),\n    gsSP2Triangles( 7, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_070036D8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  3,  9,  4, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_070037D8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 4,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_070038D8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 6, 12,  7, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_070039D8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 6,  9, 10, 0x0,  6, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07003AD8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP2Triangles(10, 13, 14, 0x0, 10, 14, 15, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07003BD8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07003CC8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 4,  8,  5, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0,  4, 15,  8, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07003DC8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07003EC8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  3,  6,  7, 0x0),\n    gsSP2Triangles( 3,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07003FC8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  0,  9,  1, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_070040C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  0,  9, 10, 0x0),\n    gsSP2Triangles( 0, 10, 11, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_070041B8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_070042B8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_070043B8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 6,  8, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_070044B8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  0,  2,  9, 0x0),\n    gsSP2Triangles( 6,  8, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07004598, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 3,  5, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07004688, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  0, 13,  1, 0x0),\n    gsSP1Triangle(10, 12, 14, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07004778, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07004858, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  2,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07004938, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 4, 10,  5, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  7,  9, 15, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07004A38, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 3,  5, 10, 0x0,  0,  2, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07004B38, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  0,  2,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07004C38, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07004D38, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 4,  6, 10, 0x0,  7, 11,  8, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07004E38, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07004F18, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070074A0 - 0x07007660\nstatic const Gfx vcutm_seg7_dl_070074A0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09009000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&vcutm_seg7_lights_07003018.l, 1),\n    gsSPLight(&vcutm_seg7_lights_07003018.a, 2),\n    gsSPVertex(vcutm_seg7_vertex_07004FB8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_070050A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSP1Triangle(14,  0,  2, 0x0),\n    gsSPLight(&vcutm_seg7_lights_07003000.l, 1),\n    gsSPLight(&vcutm_seg7_lights_07003000.a, 2),\n    gsSPVertex(vcutm_seg7_vertex_07005198, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07005288, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07005378, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07005468, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007660 - 0x07007940\nstatic const Gfx vcutm_seg7_dl_07007660[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&vcutm_seg7_lights_07003030.l, 1),\n    gsSPLight(&vcutm_seg7_lights_07003030.a, 2),\n    gsSPVertex(vcutm_seg7_vertex_07005558, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07005648, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPLight(&vcutm_seg7_lights_07003000.l, 1),\n    gsSPLight(&vcutm_seg7_lights_07003000.a, 2),\n    gsSPVertex(vcutm_seg7_vertex_07005738, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 4,  3,  5, 0x0,  3,  6,  5, 0x0),\n    gsSP2Triangles( 7,  3,  1, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 9,  5,  6, 0x0,  5,  9, 10, 0x0),\n    gsSP2Triangles(11,  1,  4, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle( 0,  7,  1, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07005828, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 4,  6,  8, 0x0,  4,  0,  5, 0x0),\n    gsSP2Triangles( 1,  0,  4, 0x0,  5,  9,  7, 0x0),\n    gsSP2Triangles(10,  9,  5, 0x0,  9, 11,  7, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07005918, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP2Triangles(12, 14, 13, 0x0, 14, 15, 13, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07005A18, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0,  2, 11, 12, 0x0),\n    gsSP2Triangles( 2,  1, 13, 0x0,  2, 13, 14, 0x0),\n    gsSP2Triangles(14, 11,  2, 0x0,  1,  3,  5, 0x0),\n    gsSP1Triangle( 1,  5, 15, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07005B18, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  4, 0x0),\n    gsSP2Triangles( 7,  4,  6, 0x0,  7,  6,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07005C18, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 5,  3,  0, 0x0,  4,  1,  0, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  3,  9,  4, 0x0),\n    gsSP2Triangles( 4, 10, 11, 0x0,  9, 12,  4, 0x0),\n    gsSP2Triangles( 2,  7,  6, 0x0, 10, 13, 11, 0x0),\n    gsSP2Triangles( 6, 11, 14, 0x0,  8, 11,  6, 0x0),\n    gsSP1Triangle( 6, 14, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007940 - 0x07007AD8\nstatic const Gfx vcutm_seg7_dl_07007940[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, vcutm_seg7_texture_07002800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&vcutm_seg7_lights_07003030.l, 1),\n    gsSPLight(&vcutm_seg7_lights_07003030.a, 2),\n    gsSPVertex(vcutm_seg7_vertex_07005D18, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  4, 11,  5, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPLight(&vcutm_seg7_lights_07003000.l, 1),\n    gsSPLight(&vcutm_seg7_lights_07003000.a, 2),\n    gsSPVertex(vcutm_seg7_vertex_07005E18, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07005F18, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 10, 12, 0x0),\n    gsSP2Triangles(14, 13, 12, 0x0, 14, 15, 13, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07006018, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07006118, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 2,  5,  0, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 0,  6,  7, 0x0,  0,  7,  1, 0x0),\n    gsSP2Triangles( 4,  3,  7, 0x0,  4,  7,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007AD8 - 0x07007CA0\nstatic const Gfx vcutm_seg7_dl_07007AD8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09003000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(vcutm_seg7_vertex_07006198, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07006298, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07006388, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  7,  9, 13, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07006468, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07006548, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 5, 10,  6, 0x0,  7,  9, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07006648, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07006728, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  0,  2,  9, 0x0),\n    gsSP1Triangle( 6, 10,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007CA0 - 0x07007D80\nstatic const Gfx vcutm_seg7_dl_07007CA0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_0900A000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(vcutm_seg7_vertex_070067D8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0,  3,  5,  7, 0x0),\n    gsSP2Triangles( 3,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 1, 10,  2, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles( 2, 10, 12, 0x0,  0,  2, 13, 0x0),\n    gsSP2Triangles(12, 11,  6, 0x0,  8,  9, 13, 0x0),\n    gsSP2Triangles(11,  4,  6, 0x0,  9,  0, 13, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_070068B8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  3,  5, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007D80 - 0x07007E00\nstatic const Gfx vcutm_seg7_dl_07007D80[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, vcutm_seg7_texture_07000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(vcutm_seg7_vertex_070069B8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  0,  2,  4, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07006A98, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007E00 - 0x07007E88\nstatic const Gfx vcutm_seg7_dl_07007E00[] = {\n    gsSPLight(&vcutm_seg7_lights_07003030.l, 1),\n    gsSPLight(&vcutm_seg7_lights_07003030.a, 2),\n    gsSPVertex(vcutm_seg7_vertex_07006AD8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07006BC8, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  5,  0, 0x0,  6,  0,  2, 0x0),\n    gsSP2Triangles( 4,  3,  1, 0x0,  4,  1,  7, 0x0),\n    gsSP1Triangle( 0,  7,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007E88 - 0x07007F90\nconst Gfx vcutm_seg7_dl_07007E88[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 4, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (16 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(vcutm_seg7_dl_07006C48),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(vcutm_seg7_dl_070074A0),\n    gsSPDisplayList(vcutm_seg7_dl_07007660),\n    gsSPDisplayList(vcutm_seg7_dl_07007940),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(vcutm_seg7_dl_07007AD8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(vcutm_seg7_dl_07007CA0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(vcutm_seg7_dl_07007D80),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPDisplayList(vcutm_seg7_dl_07007E00),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/vcutm/areas/1/2/model.inc.c",
    "content": "// 0x07007F90 - 0x07007FA8\nstatic const Lights1 vcutm_seg7_lights_07007F90 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07007FA8 - 0x07008068\nstatic const Vtx vcutm_seg7_vertex_07007FA8[] = {\n    {{{  4915,      0,  -5099}, 0, { -3096,   4054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4116,    819,  -5099}, 0, {  5078,  -4120}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4915,    819,  -5099}, 0, { -3096,  -4120}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4116,      0,  -5099}, 0, {  5078,   4054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4915,    819,  -4320}, 0, {  5078,  -2076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4116,      0,  -4320}, 0, { -3096,   6098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4915,      0,  -4320}, 0, {  5078,   6098}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4116,    819,  -4320}, 0, { -3096,  -2076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4116,    819,  -4320}, 0, {  4056,  -4120}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4116,      0,  -5099}, 0, { -4118,   4054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4116,      0,  -4320}, 0, {  4056,   4054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4116,    819,  -5099}, 0, { -4118,  -4120}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07008068 - 0x070080D0\nstatic const Gfx vcutm_seg7_dl_07008068[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, vcutm_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&vcutm_seg7_lights_07007F90.l, 1),\n    gsSPLight(&vcutm_seg7_lights_07007F90.a, 2),\n    gsSPVertex(vcutm_seg7_vertex_07007FA8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070080D0 - 0x07008140\nconst Gfx vcutm_seg7_dl_070080D0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(vcutm_seg7_dl_07008068),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/vcutm/areas/1/3/model.inc.c",
    "content": "// 0x07008140 - 0x07008220\nstatic const Vtx vcutm_seg7_vertex_07008140[] = {\n    {{{     0,      0,  -6553}, 0, { -6160,   7120}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3738,      0,  -6553}, 0, {  3036,   7120}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3738,   6554,  -6553}, 0, {  3036,  -9230}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{     0,   6554,  -6553}, 0, { -6160,  -9230}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4915,   6554,  -6553}, 0, {  6100,  -9230}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4915,      0,  -6553}, 0, {  6100,   7120}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{ -1637,  -2866,  -4914}, 0, {     0,  -1054}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{ -2457,  -2457,  -4914}, 0, { -2072,  -2076}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{ -2457,  -2866,  -4914}, 0, { -2072,  -1054}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{ -1637,  -2457,  -4914}, 0, {     0,  -2076}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{ -1637,  -4505,  -2917}, 0, {  3172,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{ -1637,  -2866,  -2917}, 0, {  3172,  -4120}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{ -2457,  -2866,  -2917}, 0, {  1128,  -4120}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{ -2457,  -4505,  -2917}, 0, {  1128,      0}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x07008220 - 0x07008300\nstatic const Vtx vcutm_seg7_vertex_07008220[] = {\n    {{{ -1637,  -3276,   1638}, 0, {  4056,  -2076}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{ -6553,  -4505,   1638}, 0, { -8204,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{ -1637,  -4505,   1638}, 0, {  4056,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4096,      0,  -5938}, 0, {  5588,  -7186}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3738,      0,  -5938}, 0, {  4568,  -7186}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3738,   -101,  -5938}, 0, {  4568,  -6930}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4096,   -101,  -5938}, 0, {  5588,  -6930}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3738,  -3276,  -5938}, 0, {  4568,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4915,   -101,  -5938}, 0, {  7632,  -6930}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{ -2457,  -4505,  -1177}, 0, {  2012,   6610}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{ -2457,  -3276,  -1177}, 0, {  2012,   5076}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{ -1637,  -3276,  -1177}, 0, {   992,   5076}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{ -1637,  -4505,  -1177}, 0, {   992,   6610}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{ -6553,  -3276,   1638}, 0, { -8204,  -2076}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x07008300 - 0x070083F0\nstatic const Vtx vcutm_seg7_vertex_07008300[] = {\n    {{{  4915,      0,   6554}, 0, { -6160,  -7186}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{     0,  -4505,   6554}, 0, {  6100,   4054}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{     0,      0,   6554}, 0, {  6100,  -7186}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{ -6553,  -4505,   6554}, 0, { 10188,   4054}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{     0,      0,   6554}, 0, { -6160,  -7186}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{     0,  -4505,   6554}, 0, { -6160,   4054}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{ -6553,      0,   6554}, 0, { 10188,  -7186}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{ -6553,      0,   6554}, 0, { 10188,   8142}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{     0,   6554,   6554}, 0, { -6160,  -8208}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{     0,      0,   6554}, 0, { -6160,   8142}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{ -6553,   6554,   6554}, 0, { 10188,  -8208}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4915,   6554,   6554}, 0, { -6160,  -8208}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4915,      0,   6554}, 0, { -6160,   8142}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{     0,      0,   6554}, 0, {  6100,   8142}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{     0,   6554,   6554}, 0, {  6100,  -8208}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x070083F0 - 0x070084E0\nstatic const Vtx vcutm_seg7_vertex_070083F0[] = {\n    {{{ -2457,   5734,  -6553}, 0, { -2072,  -2076}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{ -2457,      0,  -6553}, 0, { -2072,  12230}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{     0,      0,  -6553}, 0, {  4056,  12230}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4915,      0,   6554}, 0, { -6160,  -7186}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4915,  -4505,   6554}, 0, { -6160,   4054}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{     0,  -4505,   6554}, 0, {  6100,   4054}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{     0,  -3276,  -6553}, 0, {  4056,   4054}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{     0,      0,  -6553}, 0, {  4056,  -4120}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{ -1637,  -2457,  -6553}, 0, {     0,   2010}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{     0,  -4505,  -6553}, 0, {  4056,   7120}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{ -2457,      0,  -6553}, 0, { -2072,  -4120}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{ -2457,  -2457,  -6553}, 0, { -2072,   2010}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{ -1637,  -4505,  -6553}, 0, {     0,   7120}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{     0,   6554,  -6553}, 0, {  4056,  -4120}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{ -2457,   6554,  -6553}, 0, { -2072,  -4120}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x070084E0 - 0x070085D0\nstatic const Vtx vcutm_seg7_vertex_070084E0[] = {\n    {{{  3738,  -3276,  -5938}, 0, {  4568,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4915,  -3276,  -5938}, 0, {  7632,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4915,   -101,  -5938}, 0, {  7632,  -6930}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{     0,  -3276,  -6553}, 0, { -4116,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3738,      0,  -6553}, 0, {  5076,  -7186}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{     0,      0,  -6553}, 0, { -4116,  -7186}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3738,  -3276,  -6553}, 0, {  5076,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3738,  -4505,  -6553}, 0, {  5076,   4054}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{     0,  -4505,  -6553}, 0, { -4116,   4054}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4915,  -4505,  -5938}, 0, {  7632,   4054}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3738,  -4505,  -5938}, 0, {  4568,   4054}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{ -2457,  -2866,  -4914}, 0, {  2012,  -6164}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2457,  -2457,  -4914}, 0, {  2012,  -7186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2457,  -2457,  -2917}, 0, { -2968,  -7186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2457,  -2866,  -2917}, 0, { -2968,  -6164}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070085D0 - 0x070086D0\nstatic const Vtx vcutm_seg7_vertex_070085D0[] = {\n    {{{ -2457,      0,  -6553}, 0, {  6100, -13318}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2457,      0,   -967}, 0, { -7832, -13318}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2457,  -2457,  -2917}, 0, { -2968,  -7186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2457,  -2457,  -6553}, 0, {  6100,  -7186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2457,  -4505,  -2917}, 0, { -2968,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2457,  -3276,  -1177}, 0, { -7308,  -5142}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1637,  -4505,  -4914}, 0, {  2012,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1637,  -2866,  -4914}, 0, {  2012,  -6164}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1637,  -2866,  -2917}, 0, { -2968,  -6164}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1637,  -4505,  -2917}, 0, { -2968,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2457,  -3276,  -1177}, 0, {  2908,  -4120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2457,      0,   -967}, 0, {  2384, -12296}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2457,  -2457,    819}, 0, { -2072,  -6164}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1637,  -2457,  -4914}, 0, {  2012,  -7186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1637,  -4505,  -6553}, 0, {  6100,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1637,  -2457,  -6553}, 0, {  6100,  -7186}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070086D0 - 0x070087D0\nstatic const Vtx vcutm_seg7_vertex_070086D0[] = {\n    {{{ -2457,  -4505,  -2917}, 0, { -2968,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2457,  -3276,  -1177}, 0, { -7308,  -5142}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2457,  -4505,  -1177}, 0, { -7308,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2457,      0,  -6553}, 0, {  6100,   7120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2457,   6554,  -5733}, 0, {  4056,  -9230}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2457,      0,   -967}, 0, { -7832,   7120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2457,   6554,  -6553}, 0, {  6100,  -9230}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2457,  -2457,    819}, 0, { -2072,  -6164}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2457,  -3276,    819}, 0, { -2072,  -4120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2457,  -3276,  -1177}, 0, {  2908,  -4120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6553,  -2149,      0}, 0, {     0,   3288}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6553,      0,  -1563}, 0, {  3872,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6553,      0,      0}, 0, {     0,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6553,      0,      0}, 0, {  8144,   9164}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6553,   6554,   6554}, 0, { -8204,  -7186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6553,      0,   6554}, 0, { -8204,   9164}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070087D0 - 0x070088D0\nstatic const Vtx vcutm_seg7_vertex_070087D0[] = {\n    {{{ -6553,      0,      0}, 0, {  8144,   9164}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6553,   6554,      0}, 0, {  8144,  -7186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6553,   6554,   6554}, 0, { -8204,  -7186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6553,      0,      0}, 0, { -6160,   9164}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6553,      0,  -1563}, 0, { -2256,   9164}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6553,   5734,  -5733}, 0, {  8144,  -5142}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6553,   5734,  -6553}, 0, { 10188,  -5142}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6553,   6554,  -6553}, 0, { 10188,  -7186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6553,   6554,      0}, 0, { -6160,  -7186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3738,      0,  -6553}, 0, { -9228,  -7186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3738,  -3276,  -6553}, 0, { -9228,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3738,  -3276,  -5938}, 0, { -7692,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6553,  -3276,   1638}, 0, {  6100,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6553,      0,   6554}, 0, { -6160,  -7186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6553,  -4505,   6554}, 0, { -6160,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6553,      0,      0}, 0, { 10188,  -7186}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070088D0 - 0x070089D0\nstatic const Vtx vcutm_seg7_vertex_070088D0[] = {\n    {{{ -6553,  -3276,   1638}, 0, {  6100,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6553,  -2149,      0}, 0, { 10188,  -1820}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6553,      0,      0}, 0, { 10188,  -7186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6553,  -3276,    819}, 0, {  8144,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6553,  -4505,   6554}, 0, { -6160,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6553,  -4505,   1638}, 0, {  6100,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1637,  -4505,  -1177}, 0, {  2908,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1637,  -3276,   1638}, 0, { -4116,  -4120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1637,  -4505,   1638}, 0, { -4116,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1637,  -3276,  -1177}, 0, {  2908,  -4120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3738,      0,  -6553}, 0, { -9228,  -7186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3738,  -3276,  -5938}, 0, { -7692,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3738,      0,  -5938}, 0, { -7692,  -7186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4915,      0,   6554}, 0, {  8144,   8142}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4915,   6554,      0}, 0, { -8204,  -8208}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4915,      0,      0}, 0, { -8204,   8142}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070089D0 - 0x07008AC0\nstatic const Vtx vcutm_seg7_vertex_070089D0[] = {\n    {{{  3738,  -3276,  -6553}, 0, { -9228,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3738,  -4505,  -5938}, 0, { -7692,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3738,  -3276,  -5938}, 0, { -7692,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3738,  -4505,  -6553}, 0, { -9228,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4915,  -4505,      0}, 0, {  8144,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4915,      0,      0}, 0, {  8144,  -7186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4915,      0,  -5938}, 0, { -6672,  -7186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4915,  -4505,  -5938}, 0, { -6672,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4915,   6554,  -6553}, 0, { -8204,  -9230}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4915,      0,      0}, 0, {  8144,   7120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4915,   6554,      0}, 0, {  8144,  -9230}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4915,      0,  -6553}, 0, { -8204,   7120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4915,  -4505,   6554}, 0, {  8144,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4915,      0,   6554}, 0, {  8144,  -7186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4915,      0,      0}, 0, { -8204,  -7186}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07008AC0 - 0x07008B20\nstatic const Vtx vcutm_seg7_vertex_07008AC0[] = {\n    {{{  4915,      0,   6554}, 0, {  8144,   8142}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4915,   6554,   6554}, 0, {  8144,  -8208}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4915,   6554,      0}, 0, { -8204,  -8208}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4915,  -4505,   6554}, 0, {  8144,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4915,      0,      0}, 0, { -8204,  -7186}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4915,  -4505,      0}, 0, { -8204,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07008B20 - 0x07008E10\nstatic const Gfx vcutm_seg7_dl_07008B20[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, vcutm_seg7_texture_07000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(vcutm_seg7_vertex_07008140, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  1,  5,  4, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07008220, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  5, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 11, 12, 0x0),\n    gsSP1Triangle( 0, 13,  1, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07008300, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_070083F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6,  8, 0x0),\n    gsSP2Triangles( 8,  7, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 9,  8, 12, 0x0,  0, 13, 14, 0x0),\n    gsSP1Triangle( 0,  2, 13, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_070084E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  3,  8, 0x0),\n    gsSP2Triangles( 7,  6,  3, 0x0,  9,  0, 10, 0x0),\n    gsSP2Triangles( 9,  1,  0, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_070085D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  2,  5, 0x0,  2,  1,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSP1Triangle(13,  6, 14, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_070086D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_070087D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  8,  3, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_070088D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  0, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  9,  7, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_070089D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07008AC0, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008E10 - 0x07008E80\nconst Gfx vcutm_seg7_dl_07008E10[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(vcutm_seg7_dl_07008B20),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/vcutm/areas/1/4/model.inc.c",
    "content": "// 0x07008E80 - 0x07008F70\nstatic const Vtx vcutm_seg7_vertex_07008E80[] = {\n    {{{     0,  -6553,   6554}, 0, { -6160,   9164}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{ -6553,  -6553,   6554}, 0, { 10188,   9164}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{ -6553,  -4505,   6554}, 0, { 10188,   4054}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{ -1637,  -6553,  -2917}, 0, {  3172,   5076}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{ -2457,  -4505,  -2917}, 0, {  1128,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{ -2457,  -6553,  -2917}, 0, {  1128,   5076}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{ -1637,  -4505,  -2917}, 0, {  3172,      0}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{ -2457,  -6553,  -1177}, 0, {  2012,   9164}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{ -1637,  -4505,  -1177}, 0, {   992,   6610}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{ -1637,  -6553,  -1177}, 0, {   992,   9164}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{ -2457,  -4505,  -1177}, 0, {  2012,   6610}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{ -6553,  -4505,   1638}, 0, { -8204,    990}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{ -6553,  -6553,   1638}, 0, { -8204,   6098}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{ -1637,  -6553,   1638}, 0, {  4056,   6098}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{ -1637,  -4505,   1638}, 0, {  4056,    990}, {0x99, 0x99, 0x99, 0xff}}},\n};\n\n// 0x07008F70 - 0x07009060\nstatic const Vtx vcutm_seg7_vertex_07008F70[] = {\n    {{{ -1637,  -6553,  -6553}, 0, {     0,   3032}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{     0,  -4505,  -6553}, 0, {  4056,  -2076}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{ -1637,  -4505,  -6553}, 0, {     0,  -2076}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{     0,  -6553,   6554}, 0, { -6160,   9164}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{ -6553,  -4505,   6554}, 0, { 10188,   4054}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{     0,  -4505,   6554}, 0, { -6160,   4054}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4915,  -4505,   6554}, 0, { -6160,   4054}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4915,  -6553,   6554}, 0, { -6160,   9164}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{     0,  -6553,   6554}, 0, {  6100,   9164}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{     0,  -4505,   6554}, 0, {  6100,   4054}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{     0,  -6553,  -6553}, 0, { -4116,   9164}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  3738,  -6553,  -6553}, 0, {  5076,   9164}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  3738,  -4505,  -6553}, 0, {  5076,   4054}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{     0,  -4505,  -6553}, 0, { -4116,   4054}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{     0,  -6553,  -6553}, 0, {  4056,   3032}, {0x00, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07009060 - 0x07009140\nstatic const Vtx vcutm_seg7_vertex_07009060[] = {\n    {{{  3738,  -6553,  -5938}, 0, {  4568,   9164}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  4915,  -4505,  -5938}, 0, {  7632,   4054}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  3738,  -4505,  -5938}, 0, {  4568,   4054}, {0x99, 0x99, 0x99, 0xff}}},\n    {{{  4915,  -6553,  -5938}, 0, {  7632,   9164}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{ -1637,  -4505,  -4914}, 0, {  2012,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1637,  -6553,  -6553}, 0, {  6100,   3032}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{ -1637,  -4505,  -6553}, 0, {  6100,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1637,  -6553,  -4914}, 0, {  2012,   3032}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{ -1637,  -6553,  -2917}, 0, { -2968,   3032}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{ -1637,  -4505,  -2917}, 0, { -2968,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2457,  -6553,  -1177}, 0, { -7308,   3032}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{ -2457,  -4505,  -2917}, 0, { -2968,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2457,  -4505,  -1177}, 0, { -7308,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2457,  -6553,  -2917}, 0, { -2968,   3032}, {0x00, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07009140 - 0x07009230\nstatic const Vtx vcutm_seg7_vertex_07009140[] = {\n    {{{ -6553,  -6553,   6554}, 0, { -6160,   9164}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{ -6553,  -6553,   1638}, 0, {  6100,   9164}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{ -6553,  -4505,   1638}, 0, {  6100,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -6553,  -4505,   6554}, 0, { -6160,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4915,  -6553,      0}, 0, { -8204,   9164}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  4915,  -4505,   6554}, 0, {  8144,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4915,  -4505,      0}, 0, { -8204,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1637,  -6553,   1638}, 0, { -4116,   4054}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{ -1637,  -6553,  -1177}, 0, {  2908,   4054}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{ -1637,  -4505,  -1177}, 0, {  2908,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1637,  -4505,   1638}, 0, { -4116,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3738,  -4505,  -6553}, 0, { -9228,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3738,  -6553,  -5938}, 0, { -7692,   9164}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  3738,  -4505,  -5938}, 0, { -7692,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3738,  -6553,  -6553}, 0, { -9228,   9164}, {0x00, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07009230 - 0x070092A0\nstatic const Vtx vcutm_seg7_vertex_07009230[] = {\n    {{{  4915,  -6553,  -5938}, 0, { -6672,   9164}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  4915,  -6553,      0}, 0, {  8144,   9164}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  4915,  -4505,      0}, 0, {  8144,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4915,  -4505,  -5938}, 0, { -6672,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4915,  -6553,      0}, 0, { -8204,   9164}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  4915,  -6553,   6554}, 0, {  8144,   9164}, {0x00, 0x00, 0x00, 0xff}}},\n    {{{  4915,  -4505,   6554}, 0, {  8144,   4054}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x070092A0 - 0x070093E8\nstatic const Gfx vcutm_seg7_dl_070092A0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, vcutm_seg7_texture_07000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(vcutm_seg7_vertex_07008E80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07008F70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07009060, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  7,  4, 0x0,  8,  4,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07009140, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07009230, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP1Triangle( 4,  5,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070093E8 - 0x07009458\nconst Gfx vcutm_seg7_dl_070093E8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(vcutm_seg7_dl_070092A0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/vcutm/areas/1/collision.inc.c",
    "content": "// 0x07009750 - 0x0700AB0C\nconst Collision vcutm_seg7_collision[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x13D),\n    COL_VERTEX(-1637, -6553, -2917),\n    COL_VERTEX(-2457, -6553, -1177),\n    COL_VERTEX(-1637, -6553, -1177),\n    COL_VERTEX(-1637, -6553, 1638),\n    COL_VERTEX(3738, -6553, -6553),\n    COL_VERTEX(-2457, -6553, -2917),\n    COL_VERTEX(-1637, -6553, -6553),\n    COL_VERTEX(3738, -6553, -5938),\n    COL_VERTEX(4915, -6553, -5938),\n    COL_VERTEX(4915, -6553, 6554),\n    COL_VERTEX(-6553, -6553, 1638),\n    COL_VERTEX(-6553, -6553, 6554),\n    COL_VERTEX(4488, 0, -6540),\n    COL_VERTEX(4506, 26, -6522),\n    COL_VERTEX(4524, 0, -6540),\n    COL_VERTEX(4487, 0, -5951),\n    COL_VERTEX(4524, 0, -5951),\n    COL_VERTEX(4506, 26, -5969),\n    COL_VERTEX(4800, 0, -6227),\n    COL_VERTEX(4800, 0, -6263),\n    COL_VERTEX(4782, 26, -6245),\n    COL_VERTEX(4211, 0, -6227),\n    COL_VERTEX(4229, 26, -6245),\n    COL_VERTEX(4211, 0, -6263),\n    COL_VERTEX(4488, 0, -5951),\n    COL_VERTEX(4487, 0, -6540),\n    COL_VERTEX(4096, 778, -4300),\n    COL_VERTEX(4137, 819, -4341),\n    COL_VERTEX(4137, 819, -5078),\n    COL_VERTEX(4915, 778, -4300),\n    COL_VERTEX(4915, 819, -4341),\n    COL_VERTEX(4096, 778, -5119),\n    COL_VERTEX(4915, 819, -5078),\n    COL_VERTEX(4915, 778, -5119),\n    COL_VERTEX(4096, 0, -4300),\n    COL_VERTEX(4096, 0, -5119),\n    COL_VERTEX(4915, 0, -5119),\n    COL_VERTEX(4915, 0, -4300),\n    COL_VERTEX(4137, 0, -4341),\n    COL_VERTEX(4137, 0, -5078),\n    COL_VERTEX(4915, 0, -4341),\n    COL_VERTEX(4915, 0, -5078),\n    COL_VERTEX(-1653, -3276, -2098),\n    COL_VERTEX(-1653, -3532, -1996),\n    COL_VERTEX(-1653, -3532, -2098),\n    COL_VERTEX(-2472, -3532, -2098),\n    COL_VERTEX(-2472, -3429, -2098),\n    COL_VERTEX(-1730, -3429, -2098),\n    COL_VERTEX(-1730, -3276, -2098),\n    COL_VERTEX(-2472, -3429, -1996),\n    COL_VERTEX(-1730, -3429, -1996),\n    COL_VERTEX(-2472, -3532, -1996),\n    COL_VERTEX(-1730, -3276, -1996),\n    COL_VERTEX(-1653, -3276, -1996),\n    COL_VERTEX(205, -2073, -5861),\n    COL_VERTEX(102, -2073, -5861),\n    COL_VERTEX(205, -1817, -5861),\n    COL_VERTEX(205, -1970, -5938),\n    COL_VERTEX(102, -1970, -5938),\n    COL_VERTEX(102, -1817, -5938),\n    COL_VERTEX(-1151, -2610, -5952),\n    COL_VERTEX(-1100, -2585, -5952),\n    COL_VERTEX(-1151, -2559, -5901),\n    COL_VERTEX(-1100, -1631, -5952),\n    COL_VERTEX(-1151, -1657, -5901),\n    COL_VERTEX(-1202, -1631, -5952),\n    COL_VERTEX(-1202, -2585, -5952),\n    COL_VERTEX(1459, -1791, -5952),\n    COL_VERTEX(1510, -1765, -5952),\n    COL_VERTEX(1459, -1740, -5901),\n    COL_VERTEX(1510, -812, -5952),\n    COL_VERTEX(1459, -838, -5901),\n    COL_VERTEX(1408, -812, -5952),\n    COL_VERTEX(1408, -1765, -5952),\n    COL_VERTEX(2406, -2073, -5952),\n    COL_VERTEX(2355, -2047, -5901),\n    COL_VERTEX(2355, -2098, -5952),\n    COL_VERTEX(2355, -1145, -5901),\n    COL_VERTEX(2406, -1119, -5952),\n    COL_VERTEX(2304, -1119, -5952),\n    COL_VERTEX(2304, -2073, -5952),\n    COL_VERTEX(3302, -1253, -5952),\n    COL_VERTEX(3251, -1228, -5901),\n    COL_VERTEX(3251, -1279, -5952),\n    COL_VERTEX(3302, -300, -5952),\n    COL_VERTEX(3251, -326, -5901),\n    COL_VERTEX(3200, -300, -5952),\n    COL_VERTEX(3200, -1253, -5952),\n    COL_VERTEX(-1637, -2561, -5952),\n    COL_VERTEX(-1202, -2535, -5952),\n    COL_VERTEX(3302, -1247, -5952),\n    COL_VERTEX(3738, -1247, -5952),\n    COL_VERTEX(3738, -1222, -5952),\n    COL_VERTEX(3738, -428, -5952),\n    COL_VERTEX(3302, -428, -5952),\n    COL_VERTEX(3738, -402, -5952),\n    COL_VERTEX(-1202, -2458, -5952),\n    COL_VERTEX(-1637, -2484, -5952),\n    COL_VERTEX(1510, -1170, -5952),\n    COL_VERTEX(2304, -1145, -5952),\n    COL_VERTEX(1510, -1247, -5952),\n    COL_VERTEX(2304, -1222, -5952),\n    COL_VERTEX(3200, -1222, -5952),\n    COL_VERTEX(2406, -1247, -5952),\n    COL_VERTEX(3200, -1145, -5952),\n    COL_VERTEX(2406, -1170, -5952),\n    COL_VERTEX(-1637, -4505, -4914),\n    COL_VERTEX(-1637, -4505, -2917),\n    COL_VERTEX(-2457, -4505, -2917),\n    COL_VERTEX(-2457, -4505, -1177),\n    COL_VERTEX(-1637, -4505, -1177),\n    COL_VERTEX(-1637, -3276, 1638),\n    COL_VERTEX(-6553, -4505, 6554),\n    COL_VERTEX(-6553, -4505, 1638),\n    COL_VERTEX(-6553, -3276, 1638),\n    COL_VERTEX(0, -6553, 6554),\n    COL_VERTEX(4915, -4505, 6554),\n    COL_VERTEX(4915, 0, 6554),\n    COL_VERTEX(0, -6553, -6553),\n    COL_VERTEX(3738, -4505, -6553),\n    COL_VERTEX(0, -4505, -6553),\n    COL_VERTEX(4915, -4505, -5938),\n    COL_VERTEX(4915, -4505, 0),\n    COL_VERTEX(4915, -6553, 0),\n    COL_VERTEX(4915, 6554, -6553),\n    COL_VERTEX(3738, 0, -6553),\n    COL_VERTEX(4915, 0, -6553),\n    COL_VERTEX(4915, 0, -5938),\n    COL_VERTEX(3738, 0, -5938),\n    COL_VERTEX(0, 0, -6553),\n    COL_VERTEX(0, -3276, -6553),\n    COL_VERTEX(-2457, 5734, -6553),\n    COL_VERTEX(-1637, -2457, -6553),\n    COL_VERTEX(0, 6554, -6553),\n    COL_VERTEX(-6245, 6554, -6245),\n    COL_VERTEX(4915, 6554, 0),\n    COL_VERTEX(-2457, -2866, -4914),\n    COL_VERTEX(-1637, -2866, -4914),\n    COL_VERTEX(-2457, -2457, -6553),\n    COL_VERTEX(-2457, -2457, -2917),\n    COL_VERTEX(-2457, 0, -6553),\n    COL_VERTEX(-1637, -2457, -4914),\n    COL_VERTEX(4096, 0, -5938),\n    COL_VERTEX(3738, -3276, -5938),\n    COL_VERTEX(-2457, -3276, -1177),\n    COL_VERTEX(-2457, -2457, 819),\n    COL_VERTEX(-2457, 0, -967),\n    COL_VERTEX(-2457, 6554, -5733),\n    COL_VERTEX(-2866, -2457, 819),\n    COL_VERTEX(-2866, -3276, 819),\n    COL_VERTEX(-6553, -3276, 819),\n    COL_VERTEX(-6553, 0, 0),\n    COL_VERTEX(-6553, -2149, 0),\n    COL_VERTEX(-6553, 5734, -5733),\n    COL_VERTEX(-6553, 5734, -6553),\n    COL_VERTEX(-6553, 0, -1563),\n    COL_VERTEX(-5426, 4575, -4890),\n    COL_VERTEX(-6450, 4575, -4890),\n    COL_VERTEX(-2866, 5734, -6553),\n    COL_VERTEX(-5177, 1440, -2610),\n    COL_VERTEX(-4402, 1117, -2375),\n    COL_VERTEX(-6450, -393, -1276),\n    COL_VERTEX(-5426, -393, -1276),\n    COL_VERTEX(-5631, -870, -929),\n    COL_VERTEX(-6245, -870, -929),\n    COL_VERTEX(4915, 6554, 6554),\n    COL_VERTEX(-6553, 0, 6554),\n    COL_VERTEX(-6553, 6554, 6554),\n    COL_VERTEX(0, 6554, 6554),\n    COL_VERTEX(3738, -3276, -6553),\n    COL_VERTEX(4403, 0, -4607),\n    COL_VERTEX(4198, 0, -4607),\n    COL_VERTEX(4096, -101, -4300),\n    COL_VERTEX(4403, 0, -4402),\n    COL_VERTEX(4915, -101, -4300),\n    COL_VERTEX(4403, -101, -4607),\n    COL_VERTEX(4198, 0, -4402),\n    COL_VERTEX(4198, -101, -4402),\n    COL_VERTEX(-3013, -712, -1044),\n    COL_VERTEX(-2969, -559, -1156),\n    COL_VERTEX(-3173, -712, -644),\n    COL_VERTEX(-3788, -712, -644),\n    COL_VERTEX(-4402, -704, -1050),\n    COL_VERTEX(-3788, -1036, -809),\n    COL_VERTEX(-3993, -559, -1156),\n    COL_VERTEX(-3788, -559, -644),\n    COL_VERTEX(-4197, -227, -1397),\n    COL_VERTEX(-4242, -381, -1285),\n    COL_VERTEX(-2866, 0, -1563),\n    COL_VERTEX(-5017, -381, -885),\n    COL_VERTEX(-4402, -381, -885),\n    COL_VERTEX(-5177, -381, -1285),\n    COL_VERTEX(-5017, -704, -1050),\n    COL_VERTEX(-5221, -227, -1397),\n    COL_VERTEX(-5017, -227, -885),\n    COL_VERTEX(-5631, -393, -764),\n    COL_VERTEX(-5471, -546, -1165),\n    COL_VERTEX(-5631, -546, -764),\n    COL_VERTEX(-6245, -546, -764),\n    COL_VERTEX(-6245, -393, -764),\n    COL_VERTEX(-4242, 1440, -2610),\n    COL_VERTEX(-4197, 1594, -2722),\n    COL_VERTEX(-5017, 1440, -2210),\n    COL_VERTEX(-4402, 1440, -2210),\n    COL_VERTEX(-5017, 1594, -2210),\n    COL_VERTEX(-5221, 1594, -2722),\n    COL_VERTEX(-3788, 2110, -3098),\n    COL_VERTEX(-3173, 2110, -3098),\n    COL_VERTEX(-5017, 3104, -3820),\n    COL_VERTEX(-3013, 2434, -3333),\n    COL_VERTEX(-3173, 2587, -2933),\n    COL_VERTEX(-2969, 2587, -3445),\n    COL_VERTEX(-3788, 2434, -2933),\n    COL_VERTEX(-3173, 2434, -2933),\n    COL_VERTEX(-3993, 2587, -3445),\n    COL_VERTEX(-3788, 2587, -2933),\n    COL_VERTEX(-2866, 5734, -5733),\n    COL_VERTEX(-4197, 3581, -4167),\n    COL_VERTEX(-4242, 3428, -4056),\n    COL_VERTEX(-5017, 3428, -3655),\n    COL_VERTEX(-4402, 3428, -3655),\n    COL_VERTEX(-5017, 3581, -3655),\n    COL_VERTEX(-5177, 3428, -4056),\n    COL_VERTEX(-5221, 3581, -4167),\n    COL_VERTEX(-5631, 4575, -4378),\n    COL_VERTEX(-5471, 4421, -4778),\n    COL_VERTEX(-5631, 4421, -4378),\n    COL_VERTEX(-6245, 4421, -4378),\n    COL_VERTEX(-6245, 4575, -4378),\n    COL_VERTEX(-3948, -712, -1044),\n    COL_VERTEX(-3173, -1036, -809),\n    COL_VERTEX(-6406, -546, -1165),\n    COL_VERTEX(-3948, 2434, -3333),\n    COL_VERTEX(-6406, 4421, -4778),\n    COL_VERTEX(-6553, 6554, 0),\n    COL_VERTEX(-6245, 7045, -6041),\n    COL_VERTEX(-6041, 7045, -6245),\n    COL_VERTEX(-6041, 6554, -6041),\n    COL_VERTEX(205, -2073, -6681),\n    COL_VERTEX(205, -1970, -6681),\n    COL_VERTEX(205, -1817, -5938),\n    COL_VERTEX(102, -1970, -6681),\n    COL_VERTEX(102, -2073, -6681),\n    COL_VERTEX(102, -1817, -5861),\n    COL_VERTEX(-1151, -1606, -5952),\n    COL_VERTEX(1459, -786, -5952),\n    COL_VERTEX(2355, -1094, -5952),\n    COL_VERTEX(3251, -274, -5952),\n    COL_VERTEX(-1202, -2561, -5952),\n    COL_VERTEX(-1187, -2548, -5937),\n    COL_VERTEX(-1637, -2548, -5937),\n    COL_VERTEX(-1637, -2535, -5952),\n    COL_VERTEX(3738, -1234, -5937),\n    COL_VERTEX(3287, -1234, -5937),\n    COL_VERTEX(3302, -1222, -5952),\n    COL_VERTEX(3302, -402, -5952),\n    COL_VERTEX(3738, -415, -5937),\n    COL_VERTEX(3287, -415, -5937),\n    COL_VERTEX(-1202, -2484, -5952),\n    COL_VERTEX(-1637, -2458, -5952),\n    COL_VERTEX(-1187, -2471, -5937),\n    COL_VERTEX(-1637, -2471, -5937),\n    COL_VERTEX(2304, -1170, -5952),\n    COL_VERTEX(2319, -1158, -5937),\n    COL_VERTEX(1495, -1158, -5937),\n    COL_VERTEX(1510, -1145, -5952),\n    COL_VERTEX(2304, -1247, -5952),\n    COL_VERTEX(2319, -1234, -5937),\n    COL_VERTEX(1495, -1234, -5937),\n    COL_VERTEX(1510, -1222, -5952),\n    COL_VERTEX(2406, -1222, -5952),\n    COL_VERTEX(3200, -1247, -5952),\n    COL_VERTEX(3215, -1234, -5937),\n    COL_VERTEX(2391, -1234, -5937),\n    COL_VERTEX(3200, -1170, -5952),\n    COL_VERTEX(2406, -1145, -5952),\n    COL_VERTEX(3215, -1158, -5937),\n    COL_VERTEX(2391, -1158, -5937),\n    COL_VERTEX(-1637, -2866, -2917),\n    COL_VERTEX(-1637, -6553, -4914),\n    COL_VERTEX(-1637, -4505, -6553),\n    COL_VERTEX(-2457, -2866, -2917),\n    COL_VERTEX(-2457, -2457, -4914),\n    COL_VERTEX(-1637, -3276, -1177),\n    COL_VERTEX(-1637, -4505, 1638),\n    COL_VERTEX(-2457, -3276, 819),\n    COL_VERTEX(0, -4505, 6554),\n    COL_VERTEX(0, 0, 6554),\n    COL_VERTEX(3738, -4505, -5938),\n    COL_VERTEX(4915, -3276, -5938),\n    COL_VERTEX(4915, 0, 0),\n    COL_VERTEX(4915, -101, -5938),\n    COL_VERTEX(4491, 0, -6553),\n    COL_VERTEX(3738, 6554, -6553),\n    COL_VERTEX(4485, 0, -5938),\n    COL_VERTEX(4403, -101, -4402),\n    COL_VERTEX(4198, -101, -4607),\n    COL_VERTEX(4096, -101, -5938),\n    COL_VERTEX(0, 6554, 0),\n    COL_VERTEX(-6041, 6554, -6245),\n    COL_VERTEX(-6553, 6554, -6553),\n    COL_VERTEX(-2457, 6554, -6553),\n    COL_VERTEX(-6245, 6554, -6041),\n    COL_VERTEX(3738, -101, -5938),\n    COL_VERTEX(-2866, 6554, -5733),\n    COL_VERTEX(-2866, 0, -967),\n    COL_VERTEX(-2866, 6554, -6553),\n    COL_VERTEX(-6245, 4098, -4543),\n    COL_VERTEX(-5017, 1117, -2375),\n    COL_VERTEX(-5631, 4098, -4543),\n    COL_VERTEX(-3173, -559, -644),\n    COL_VERTEX(-4402, -227, -885),\n    COL_VERTEX(-4402, 1594, -2210),\n    COL_VERTEX(-4402, 3104, -3820),\n    COL_VERTEX(-4402, 3581, -3655),\n    COL_VERTEX(-6245, 7045, -6245),\n    COL_VERTEX(-6041, 7045, -6041),\n    COL_TRI_INIT(SURFACE_DEFAULT, 479),\n    COL_TRI(52, 42, 48),\n    COL_TRI(42, 43, 44),\n    COL_TRI(44, 45, 46),\n    COL_TRI(44, 46, 47),\n    COL_TRI(43, 45, 44),\n    COL_TRI(44, 47, 48),\n    COL_TRI(44, 48, 42),\n    COL_TRI(47, 46, 49),\n    COL_TRI(47, 49, 50),\n    COL_TRI(43, 51, 45),\n    COL_TRI(50, 49, 51),\n    COL_TRI(50, 51, 43),\n    COL_TRI(47, 52, 48),\n    COL_TRI(56, 55, 54),\n    COL_TRI(42, 53, 43),\n    COL_TRI(52, 53, 42),\n    COL_TRI(47, 50, 52),\n    COL_TRI(50, 43, 53),\n    COL_TRI(50, 53, 52),\n    COL_TRI(54, 238, 239),\n    COL_TRI(54, 239, 57),\n    COL_TRI(54, 57, 240),\n    COL_TRI(54, 240, 56),\n    COL_TRI(55, 238, 54),\n    COL_TRI(59, 243, 56),\n    COL_TRI(57, 239, 241),\n    COL_TRI(57, 241, 58),\n    COL_TRI(55, 242, 238),\n    COL_TRI(58, 241, 242),\n    COL_TRI(58, 242, 55),\n    COL_TRI(57, 59, 240),\n    COL_TRI(59, 56, 240),\n    COL_TRI(56, 243, 55),\n    COL_TRI(66, 62, 64),\n    COL_TRI(57, 58, 59),\n    COL_TRI(58, 243, 59),\n    COL_TRI(58, 55, 243),\n    COL_TRI(60, 63, 61),\n    COL_TRI(61, 62, 60),\n    COL_TRI(62, 66, 60),\n    COL_TRI(60, 66, 65),\n    COL_TRI(60, 65, 244),\n    COL_TRI(60, 244, 63),\n    COL_TRI(63, 64, 62),\n    COL_TRI(63, 62, 61),\n    COL_TRI(64, 63, 244),\n    COL_TRI(65, 64, 244),\n    COL_TRI(66, 64, 65),\n    COL_TRI(78, 75, 74),\n    COL_TRI(67, 72, 245),\n    COL_TRI(67, 245, 70),\n    COL_TRI(67, 70, 68),\n    COL_TRI(67, 73, 72),\n    COL_TRI(68, 69, 67),\n    COL_TRI(69, 73, 67),\n    COL_TRI(70, 71, 69),\n    COL_TRI(70, 69, 68),\n    COL_TRI(71, 70, 245),\n    COL_TRI(72, 71, 245),\n    COL_TRI(73, 71, 72),\n    COL_TRI(73, 69, 71),\n    COL_TRI(74, 75, 76),\n    COL_TRI(75, 80, 76),\n    COL_TRI(76, 80, 79),\n    COL_TRI(76, 79, 246),\n    COL_TRI(76, 246, 78),\n    COL_TRI(76, 78, 74),\n    COL_TRI(77, 78, 246),\n    COL_TRI(78, 77, 75),\n    COL_TRI(79, 77, 246),\n    COL_TRI(80, 77, 79),\n    COL_TRI(80, 75, 77),\n    COL_TRI(81, 82, 83),\n    COL_TRI(82, 87, 83),\n    COL_TRI(83, 87, 86),\n    COL_TRI(83, 86, 247),\n    COL_TRI(83, 247, 84),\n    COL_TRI(83, 84, 81),\n    COL_TRI(84, 82, 81),\n    COL_TRI(85, 84, 247),\n    COL_TRI(84, 85, 82),\n    COL_TRI(86, 85, 247),\n    COL_TRI(87, 85, 86),\n    COL_TRI(87, 82, 85),\n    COL_TRI(88, 248, 249),\n    COL_TRI(88, 249, 250),\n    COL_TRI(89, 88, 251),\n    COL_TRI(89, 248, 88),\n    COL_TRI(89, 250, 249),\n    COL_TRI(89, 251, 250),\n    COL_TRI(90, 91, 252),\n    COL_TRI(90, 252, 253),\n    COL_TRI(92, 253, 252),\n    COL_TRI(92, 254, 253),\n    COL_TRI(91, 254, 92),\n    COL_TRI(91, 90, 254),\n    COL_TRI(93, 94, 255),\n    COL_TRI(94, 93, 256),\n    COL_TRI(94, 256, 257),\n    COL_TRI(95, 257, 256),\n    COL_TRI(95, 255, 257),\n    COL_TRI(93, 255, 95),\n    COL_TRI(96, 258, 97),\n    COL_TRI(96, 97, 259),\n    COL_TRI(97, 258, 260),\n    COL_TRI(96, 261, 260),\n    COL_TRI(97, 260, 261),\n    COL_TRI(96, 259, 261),\n    COL_TRI(98, 262, 263),\n    COL_TRI(98, 263, 264),\n    COL_TRI(99, 262, 98),\n    COL_TRI(99, 98, 265),\n    COL_TRI(99, 264, 263),\n    COL_TRI(99, 265, 264),\n    COL_TRI(100, 266, 267),\n    COL_TRI(100, 267, 268),\n    COL_TRI(101, 100, 269),\n    COL_TRI(101, 268, 267),\n    COL_TRI(101, 269, 268),\n    COL_TRI(101, 266, 100),\n    COL_TRI(102, 103, 270),\n    COL_TRI(103, 271, 272),\n    COL_TRI(103, 272, 273),\n    COL_TRI(102, 271, 103),\n    COL_TRI(102, 273, 272),\n    COL_TRI(102, 270, 273),\n    COL_TRI(104, 274, 105),\n    COL_TRI(106, 6, 280),\n    COL_TRI(104, 105, 275),\n    COL_TRI(105, 274, 276),\n    COL_TRI(104, 277, 276),\n    COL_TRI(105, 276, 277),\n    COL_TRI(104, 275, 277),\n    COL_TRI(106, 137, 278),\n    COL_TRI(106, 278, 107),\n    COL_TRI(0, 279, 106),\n    COL_TRI(0, 106, 107),\n    COL_TRI(106, 279, 6),\n    COL_TRI(6, 120, 280),\n    COL_TRI(6, 118, 120),\n    COL_TRI(0, 107, 108),\n    COL_TRI(0, 108, 5),\n    COL_TRI(107, 278, 281),\n    COL_TRI(107, 281, 108),\n    COL_TRI(1, 5, 108),\n    COL_TRI(1, 108, 109),\n    COL_TRI(1, 110, 2),\n    COL_TRI(1, 109, 110),\n    COL_TRI(108, 139, 144),\n    COL_TRI(108, 144, 109),\n    COL_TRI(109, 144, 283),\n    COL_TRI(109, 283, 110),\n    COL_TRI(110, 283, 111),\n    COL_TRI(110, 111, 284),\n    COL_TRI(3, 110, 284),\n    COL_TRI(3, 2, 110),\n    COL_TRI(11, 10, 113),\n    COL_TRI(11, 113, 112),\n    COL_TRI(111, 113, 284),\n    COL_TRI(113, 10, 3),\n    COL_TRI(113, 3, 284),\n    COL_TRI(144, 111, 283),\n    COL_TRI(112, 287, 286),\n    COL_TRI(111, 114, 113),\n    COL_TRI(112, 113, 114),\n    COL_TRI(114, 166, 112),\n    COL_TRI(115, 112, 286),\n    COL_TRI(116, 9, 115),\n    COL_TRI(116, 115, 286),\n    COL_TRI(115, 11, 112),\n    COL_TRI(112, 166, 287),\n    COL_TRI(119, 130, 120),\n    COL_TRI(117, 116, 286),\n    COL_TRI(117, 286, 287),\n    COL_TRI(118, 4, 119),\n    COL_TRI(118, 119, 120),\n    COL_TRI(119, 4, 7),\n    COL_TRI(119, 7, 288),\n    COL_TRI(120, 130, 132),\n    COL_TRI(120, 132, 280),\n    COL_TRI(7, 8, 121),\n    COL_TRI(7, 121, 288),\n    COL_TRI(121, 289, 143),\n    COL_TRI(121, 143, 288),\n    COL_TRI(8, 123, 122),\n    COL_TRI(8, 122, 121),\n    COL_TRI(116, 290, 122),\n    COL_TRI(122, 290, 127),\n    COL_TRI(122, 127, 121),\n    COL_TRI(123, 116, 122),\n    COL_TRI(123, 9, 116),\n    COL_TRI(116, 117, 290),\n    COL_TRI(124, 126, 290),\n    COL_TRI(125, 126, 124),\n    COL_TRI(126, 14, 19),\n    COL_TRI(14, 126, 292),\n    COL_TRI(126, 18, 127),\n    COL_TRI(126, 19, 18),\n    COL_TRI(15, 128, 294),\n    COL_TRI(127, 18, 16),\n    COL_TRI(15, 21, 128),\n    COL_TRI(21, 23, 128),\n    COL_TRI(23, 12, 125),\n    COL_TRI(125, 143, 128),\n    COL_TRI(128, 23, 125),\n    COL_TRI(127, 16, 294),\n    COL_TRI(125, 169, 143),\n    COL_TRI(125, 12, 292),\n    COL_TRI(127, 142, 171),\n    COL_TRI(127, 171, 170),\n    COL_TRI(127, 170, 173),\n    COL_TRI(127, 173, 37),\n    COL_TRI(130, 125, 129),\n    COL_TRI(12, 14, 292),\n    COL_TRI(16, 15, 294),\n    COL_TRI(20, 13, 22),\n    COL_TRI(20, 22, 17),\n    COL_TRI(129, 125, 293),\n    COL_TRI(129, 293, 133),\n    COL_TRI(131, 133, 301),\n    COL_TRI(125, 124, 293),\n    COL_TRI(133, 298, 237),\n    COL_TRI(133, 237, 299),\n    COL_TRI(133, 299, 134),\n    COL_TRI(134, 300, 133),\n    COL_TRI(135, 298, 133),\n    COL_TRI(135, 133, 124),\n    COL_TRI(131, 129, 133),\n    COL_TRI(140, 146, 139),\n    COL_TRI(130, 169, 125),\n    COL_TRI(124, 290, 135),\n    COL_TRI(136, 281, 278),\n    COL_TRI(136, 278, 137),\n    COL_TRI(136, 139, 281),\n    COL_TRI(136, 282, 139),\n    COL_TRI(137, 282, 136),\n    COL_TRI(138, 140, 139),\n    COL_TRI(132, 138, 282),\n    COL_TRI(132, 282, 141),\n    COL_TRI(137, 141, 282),\n    COL_TRI(141, 106, 280),\n    COL_TRI(141, 280, 132),\n    COL_TRI(142, 128, 303),\n    COL_TRI(142, 303, 297),\n    COL_TRI(143, 291, 303),\n    COL_TRI(131, 140, 129),\n    COL_TRI(130, 129, 132),\n    COL_TRI(132, 129, 140),\n    COL_TRI(132, 140, 138),\n    COL_TRI(144, 285, 111),\n    COL_TRI(145, 285, 144),\n    COL_TRI(144, 146, 145),\n    COL_TRI(140, 301, 147),\n    COL_TRI(140, 147, 146),\n    COL_TRI(139, 146, 144),\n    COL_TRI(146, 147, 305),\n    COL_TRI(147, 304, 305),\n    COL_TRI(148, 145, 146),\n    COL_TRI(149, 285, 145),\n    COL_TRI(149, 145, 148),\n    COL_TRI(150, 111, 285),\n    COL_TRI(148, 146, 305),\n    COL_TRI(153, 154, 300),\n    COL_TRI(151, 167, 166),\n    COL_TRI(151, 234, 167),\n    COL_TRI(152, 155, 151),\n    COL_TRI(151, 155, 153),\n    COL_TRI(153, 234, 151),\n    COL_TRI(114, 151, 166),\n    COL_TRI(114, 152, 151),\n    COL_TRI(153, 300, 234),\n    COL_TRI(154, 153, 216),\n    COL_TRI(155, 157, 153),\n    COL_TRI(156, 216, 153),\n    COL_TRI(157, 156, 153),\n    COL_TRI(154, 306, 300),\n    COL_TRI(134, 234, 300),\n    COL_TRI(158, 154, 216),\n    COL_TRI(154, 158, 306),\n    COL_TRI(155, 205, 307),\n    COL_TRI(159, 205, 155),\n    COL_TRI(155, 233, 157),\n    COL_TRI(155, 307, 233),\n    COL_TRI(155, 188, 160),\n    COL_TRI(216, 306, 158),\n    COL_TRI(114, 150, 152),\n    COL_TRI(150, 114, 111),\n    COL_TRI(163, 150, 149),\n    COL_TRI(150, 161, 155),\n    COL_TRI(150, 231, 161),\n    COL_TRI(150, 164, 231),\n    COL_TRI(164, 150, 163),\n    COL_TRI(165, 117, 287),\n    COL_TRI(165, 287, 168),\n    COL_TRI(166, 168, 287),\n    COL_TRI(143, 289, 291),\n    COL_TRI(166, 167, 168),\n    COL_TRI(167, 298, 168),\n    COL_TRI(168, 298, 135),\n    COL_TRI(168, 135, 165),\n    COL_TRI(167, 234, 298),\n    COL_TRI(119, 169, 130),\n    COL_TRI(171, 175, 170),\n    COL_TRI(169, 288, 143),\n    COL_TRI(169, 119, 288),\n    COL_TRI(117, 135, 290),\n    COL_TRI(117, 165, 135),\n    COL_TRI(170, 295, 173),\n    COL_TRI(170, 175, 295),\n    COL_TRI(34, 174, 37),\n    COL_TRI(172, 295, 174),\n    COL_TRI(173, 295, 177),\n    COL_TRI(172, 177, 295),\n    COL_TRI(174, 295, 175),\n    COL_TRI(173, 177, 176),\n    COL_TRI(37, 173, 176),\n    COL_TRI(171, 296, 175),\n    COL_TRI(174, 175, 291),\n    COL_TRI(175, 296, 297),\n    COL_TRI(175, 297, 291),\n    COL_TRI(176, 296, 171),\n    COL_TRI(171, 142, 34),\n    COL_TRI(171, 34, 176),\n    COL_TRI(176, 177, 296),\n    COL_TRI(177, 297, 296),\n    COL_TRI(37, 176, 34),\n    COL_TRI(177, 172, 297),\n    COL_TRI(34, 172, 174),\n    COL_TRI(142, 297, 172),\n    COL_TRI(142, 172, 34),\n    COL_TRI(149, 183, 182),\n    COL_TRI(178, 180, 181),\n    COL_TRI(179, 180, 178),\n    COL_TRI(178, 181, 229),\n    COL_TRI(178, 230, 149),\n    COL_TRI(179, 178, 149),\n    COL_TRI(180, 185, 181),\n    COL_TRI(181, 185, 184),\n    COL_TRI(181, 184, 229),\n    COL_TRI(182, 229, 184),\n    COL_TRI(183, 229, 182),\n    COL_TRI(179, 310, 180),\n    COL_TRI(180, 310, 185),\n    COL_TRI(184, 185, 179),\n    COL_TRI(185, 310, 179),\n    COL_TRI(186, 187, 179),\n    COL_TRI(187, 184, 179),\n    COL_TRI(179, 188, 186),\n    COL_TRI(188, 179, 149),\n    COL_TRI(187, 182, 184),\n    COL_TRI(230, 183, 149),\n    COL_TRI(186, 190, 187),\n    COL_TRI(187, 190, 189),\n    COL_TRI(187, 189, 191),\n    COL_TRI(189, 194, 193),\n    COL_TRI(190, 194, 189),\n    COL_TRI(189, 193, 191),\n    COL_TRI(191, 193, 162),\n    COL_TRI(192, 191, 162),\n    COL_TRI(186, 311, 190),\n    COL_TRI(190, 311, 194),\n    COL_TRI(193, 194, 186),\n    COL_TRI(194, 311, 186),\n    COL_TRI(193, 186, 188),\n    COL_TRI(162, 193, 155),\n    COL_TRI(155, 193, 188),\n    COL_TRI(195, 197, 196),\n    COL_TRI(162, 195, 196),\n    COL_TRI(192, 162, 196),\n    COL_TRI(201, 200, 188),\n    COL_TRI(161, 162, 155),\n    COL_TRI(196, 197, 198),\n    COL_TRI(197, 199, 198),\n    COL_TRI(198, 199, 161),\n    COL_TRI(198, 161, 231),\n    COL_TRI(196, 198, 231),\n    COL_TRI(197, 195, 199),\n    COL_TRI(161, 199, 162),\n    COL_TRI(199, 195, 162),\n    COL_TRI(200, 202, 159),\n    COL_TRI(200, 203, 202),\n    COL_TRI(201, 203, 200),\n    COL_TRI(155, 308, 159),\n    COL_TRI(202, 204, 159),\n    COL_TRI(203, 204, 202),\n    COL_TRI(204, 205, 159),\n    COL_TRI(203, 312, 204),\n    COL_TRI(201, 312, 203),\n    COL_TRI(205, 204, 201),\n    COL_TRI(204, 312, 201),\n    COL_TRI(201, 208, 205),\n    COL_TRI(201, 313, 208),\n    COL_TRI(201, 214, 313),\n    COL_TRI(201, 232, 214),\n    COL_TRI(206, 232, 201),\n    COL_TRI(207, 206, 201),\n    COL_TRI(209, 207, 188),\n    COL_TRI(205, 309, 307),\n    COL_TRI(205, 222, 309),\n    COL_TRI(208, 222, 205),\n    COL_TRI(209, 212, 232),\n    COL_TRI(210, 213, 209),\n    COL_TRI(211, 210, 209),\n    COL_TRI(209, 213, 212),\n    COL_TRI(188, 211, 209),\n    COL_TRI(212, 214, 232),\n    COL_TRI(212, 215, 214),\n    COL_TRI(213, 215, 212),\n    COL_TRI(213, 210, 215),\n    COL_TRI(214, 215, 211),\n    COL_TRI(215, 210, 211),\n    COL_TRI(216, 211, 188),\n    COL_TRI(214, 211, 216),\n    COL_TRI(214, 218, 313),\n    COL_TRI(216, 218, 214),\n    COL_TRI(217, 220, 218),\n    COL_TRI(218, 220, 219),\n    COL_TRI(218, 219, 222),\n    COL_TRI(216, 217, 218),\n    COL_TRI(219, 221, 222),\n    COL_TRI(220, 221, 219),\n    COL_TRI(221, 223, 222),\n    COL_TRI(222, 223, 309),\n    COL_TRI(220, 314, 221),\n    COL_TRI(217, 314, 220),\n    COL_TRI(223, 221, 217),\n    COL_TRI(221, 314, 217),\n    COL_TRI(217, 309, 223),\n    COL_TRI(217, 225, 309),\n    COL_TRI(217, 156, 225),\n    COL_TRI(156, 217, 216),\n    COL_TRI(224, 226, 225),\n    COL_TRI(156, 224, 225),\n    COL_TRI(225, 226, 227),\n    COL_TRI(225, 227, 233),\n    COL_TRI(226, 228, 227),\n    COL_TRI(227, 228, 157),\n    COL_TRI(227, 157, 233),\n    COL_TRI(226, 224, 228),\n    COL_TRI(157, 228, 156),\n    COL_TRI(228, 224, 156),\n    COL_TRI(229, 183, 230),\n    COL_TRI(229, 230, 178),\n    COL_TRI(191, 182, 187),\n    COL_TRI(191, 192, 182),\n    COL_TRI(188, 200, 160),\n    COL_TRI(160, 308, 155),\n    COL_TRI(149, 182, 192),\n    COL_TRI(163, 192, 196),\n    COL_TRI(163, 149, 192),\n    COL_TRI(231, 164, 163),\n    COL_TRI(231, 163, 196),\n    COL_TRI(159, 308, 160),\n    COL_TRI(159, 160, 200),\n    COL_TRI(233, 309, 225),\n    COL_TRI(232, 206, 207),\n    COL_TRI(232, 207, 209),\n    COL_TRI(188, 207, 201),\n    COL_TRI(222, 208, 313),\n    COL_TRI(222, 313, 218),\n    COL_TRI(233, 307, 309),\n    COL_TRI(216, 188, 305),\n    COL_TRI(188, 148, 305),\n    COL_TRI(188, 149, 148),\n    COL_TRI(216, 305, 304),\n    COL_TRI(216, 304, 306),\n    COL_TRI(234, 302, 237),\n    COL_TRI(234, 237, 298),\n    COL_TRI(134, 302, 234),\n    COL_TRI(235, 134, 315),\n    COL_TRI(235, 302, 134),\n    COL_TRI(236, 299, 237),\n    COL_TRI(236, 237, 316),\n    COL_TRI(237, 302, 235),\n    COL_TRI(237, 235, 316),\n    COL_TRI(235, 315, 316),\n    COL_TRI(236, 316, 315),\n    COL_TRI(236, 315, 134),\n    COL_TRI(236, 134, 299),\n    COL_TRI_INIT(SURFACE_DEATH_PLANE, 9),\n    COL_TRI(3, 11, 9),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 4),\n    COL_TRI(0, 5, 1),\n    COL_TRI(4, 6, 0),\n    COL_TRI(3, 7, 4),\n    COL_TRI(3, 8, 7),\n    COL_TRI(3, 9, 8),\n    COL_TRI(3, 10, 11),\n    COL_TRI_INIT(SURFACE_VERY_SLIPPERY, 6),\n    COL_TRI(26, 27, 28),\n    COL_TRI(27, 29, 30),\n    COL_TRI(27, 26, 29),\n    COL_TRI(26, 28, 31),\n    COL_TRI(31, 28, 32),\n    COL_TRI(31, 32, 33),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 12),\n    COL_TRI(14, 13, 19),\n    COL_TRI(12, 13, 14),\n    COL_TRI(15, 16, 17),\n    COL_TRI(18, 19, 20),\n    COL_TRI(21, 22, 23),\n    COL_TRI(13, 20, 19),\n    COL_TRI(23, 22, 13),\n    COL_TRI(23, 13, 25),\n    COL_TRI(24, 22, 21),\n    COL_TRI(24, 17, 22),\n    COL_TRI(18, 20, 16),\n    COL_TRI(20, 17, 16),\n    COL_TRI_INIT(SURFACE_VANISH_CAP_WALLS, 12),\n    COL_TRI(38, 28, 27),\n    COL_TRI(29, 26, 34),\n    COL_TRI(26, 35, 34),\n    COL_TRI(26, 31, 35),\n    COL_TRI(36, 35, 31),\n    COL_TRI(29, 34, 37),\n    COL_TRI(36, 31, 33),\n    COL_TRI(38, 39, 28),\n    COL_TRI(40, 38, 27),\n    COL_TRI(32, 39, 41),\n    COL_TRI(32, 28, 39),\n    COL_TRI(40, 27, 30),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(1),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_null_start, /*pos*/ -6143, 5734, -6143, /*yaw*/ 0), // unused, probably an early way to set initial position\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/vcutm/areas/1/geo.inc.c",
    "content": "// 0x0E000208\nconst GeoLayout vcutm_geo_000208[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND_COLOR(0x0001),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 25000, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(14, 0, 2000, 6000, 0, 0, 0, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, vcutm_seg7_dl_07007E88),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, vcutm_seg7_dl_07008E10),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, vcutm_seg7_dl_070093E8),\n                    GEO_DISPLAY_LIST(LAYER_ALPHA, vcutm_seg7_dl_070080D0),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(0, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/vcutm/areas/1/macro.inc.c",
    "content": "// 0x0700AB0C - 0x0700AC44\nconst MacroObject vcutm_seg7_macro_objs[] = {\n    MACRO_OBJECT               (/*preset*/ macro_box_1up,              /*yaw*/   0, /*pos*/ -3434,  2951, -3076),\n    MACRO_OBJECT               (/*preset*/ macro_1up,                  /*yaw*/   0, /*pos*/ -4711,  1594, -2532),\n    MACRO_OBJECT               (/*preset*/ macro_1up,                  /*yaw*/   0, /*pos*/ -5952,  -393, -1141),\n    MACRO_OBJECT               (/*preset*/ macro_box_vanish_cap,       /*yaw*/   0, /*pos*/  3980,   300, -6220),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,   /*yaw*/   0, /*pos*/  4200,     0, -4940),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,   /*yaw*/   0, /*pos*/  4740,     0, -4940),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,   /*yaw*/   0, /*pos*/  4740,     0, -4400),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_hidden_1up,           /*yaw*/   0, /*pos*/  4460,     0, -4700, /*bhvParam*/ 3),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  4200,     0, -4940),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  4740,     0, -4940),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_2,        /*yaw*/   0, /*pos*/  4740,     0, -4400),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal, /*yaw*/   0, /*pos*/ -2100, -3276,    20),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_circling_amp,         /*yaw*/   0, /*pos*/ -2100, -2800, -3866, /*bhvParam*/ AMP_BP_ROT_RADIUS_300),\n    MACRO_OBJECT               (/*preset*/ macro_box_three_coins,      /*yaw*/   0, /*pos*/ -2145, -2160, -5963),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,             /*yaw*/   0, /*pos*/ -5920,  4575, -4618),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,             /*yaw*/   0, /*pos*/ -4740,  3581, -3854),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,             /*yaw*/   0, /*pos*/ -4727,  -227, -1161),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,             /*yaw*/   0, /*pos*/ -3418,  -559,  -836),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,             /*yaw*/   0, /*pos*/  -600, -1400, -6300),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,             /*yaw*/   0, /*pos*/   900, -1400, -6300),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,             /*yaw*/   0, /*pos*/  2750,  -800, -6300),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,             /*yaw*/   0, /*pos*/  4509,     0, -5527),\n    MACRO_OBJECT               (/*preset*/ macro_fire_spitter,         /*yaw*/   0, /*pos*/ -1740, -3240,  1580),\n    MACRO_OBJECT               (/*preset*/ macro_fire_spitter,         /*yaw*/   0, /*pos*/ -2400, -3240,   600),\n    MACRO_OBJECT               (/*preset*/ macro_fire_spitter,         /*yaw*/   0, /*pos*/ -1740, -3240,     0),\n    MACRO_OBJECT               (/*preset*/ macro_fire_spitter,         /*yaw*/   0, /*pos*/ -2400, -3240, -1079),\n    MACRO_OBJECT               (/*preset*/ macro_fire_spitter,         /*yaw*/   0, /*pos*/ -2920, -3240,   880),\n    MACRO_OBJECT               (/*preset*/ macro_fire_spitter,         /*yaw*/   0, /*pos*/ -4000, -3240,  1600),\n    MACRO_OBJECT               (/*preset*/ macro_box_vanish_cap,       /*yaw*/   0, /*pos*/ -6020, -2976,  1240),\n    MACRO_OBJECT               (/*preset*/ macro_fire_spitter,         /*yaw*/   0, /*pos*/ -2100, -2840, -3866),\n    MACRO_OBJECT               (/*preset*/ macro_fire_spitter,         /*yaw*/   0, /*pos*/ -4600,  5760, -6140),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/vcutm/geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"game/level_geo.h\"\n#include \"game/geo_misc.h\"\n#include \"game/camera.h\"\n#include \"game/moving_texture.h\"\n#include \"game/screen_transition.h\"\n#include \"game/paintings.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"levels/vcutm/header.h\"\n\n#include \"levels/vcutm/seesaw/geo.inc.c\"\n#include \"levels/vcutm/areas/1/geo.inc.c\"\n"
  },
  {
    "path": "levels/vcutm/header.h",
    "content": "#ifndef VCUTM_HEADER_H\n#define VCUTM_HEADER_H\n\n#include \"types.h\"\n\n// geo\nextern const GeoLayout vcutm_geo_0001F0[];\nextern const GeoLayout vcutm_geo_000208[];\n\n// leveldata\nextern const Gfx vcutm_seg7_dl_07007E88[];\nextern const Gfx vcutm_seg7_dl_070080D0[];\nextern const Gfx vcutm_seg7_dl_07008E10[];\nextern const Gfx vcutm_seg7_dl_070093E8[];\nextern const Gfx vcutm_seg7_dl_070096E0[];\nextern const Collision vcutm_seg7_collision[];\nextern const MacroObject vcutm_seg7_macro_objs[];\nextern const Collision vcutm_seg7_collision_0700AC44[];\n\n// script\nextern const LevelScript level_vcutm_entry[];\n\n#endif\n"
  },
  {
    "path": "levels/vcutm/level.yaml",
    "content": "# Vanish Cap under the Moat\nshort-name: vcutm\nfull-name: Vanish Cap under the Moat\ntexture-file: [\"/texture.inc.c\"]\narea-count: 1\nobjects: [seesaw]\nshared-path: []\n# loaded files\nskybox-bin: null\ntexture-bin: outside\neffects: false\nactor-bins: [group8]\ncommon-bin: [common0]\n"
  },
  {
    "path": "levels/vcutm/leveldata.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"surface_terrains.h\"\n#include \"moving_texture_macros.h\"\n#include \"level_misc_macros.h\"\n#include \"macro_presets.h\"\n#include \"special_presets.h\"\n#include \"textures.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/vcutm/texture.inc.c\"\n#include \"levels/vcutm/areas/1/1/model.inc.c\"\n#include \"levels/vcutm/areas/1/2/model.inc.c\"\n#include \"levels/vcutm/areas/1/3/model.inc.c\"\n#include \"levels/vcutm/areas/1/4/model.inc.c\"\n#include \"levels/vcutm/seesaw/model.inc.c\"\n#include \"levels/vcutm/areas/1/collision.inc.c\"\n#include \"levels/vcutm/areas/1/macro.inc.c\"\n#include \"levels/vcutm/seesaw/collision.inc.c\"\n"
  },
  {
    "path": "levels/vcutm/script.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"behavior_data.h\"\n#include \"model_ids.h\"\n#include \"seq_ids.h\"\n#include \"dialog_ids.h\"\n#include \"segment_symbols.h\"\n#include \"level_commands.h\"\n\n#include \"game/level_update.h\"\n\n#include \"levels/scripts.h\"\n\n#include \"actors/common1.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/vcutm/header.h\"\n\nstatic const LevelScript script_func_local_1[] = {\n    OBJECT(/*model*/ MODEL_VCUTM_SEESAW_PLATFORM, /*pos*/   154, -1919, -6256, /*angle*/ 0, 270, 0, /*bhvParam*/ BPARAM2(0x07), /*bhv*/ bhvSeesawPlatform),\n    OBJECT(/*model*/ MODEL_VCUTM_SEESAW_PLATFORM, /*pos*/ -2047, -3378, -2047, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(0x07), /*bhv*/ bhvSeesawPlatform),\n    //! @bug invalid model IDs - model ID 0x37 isn't loaded\n    OBJECT(/*model*/ MODEL_VCUTM_CHECKERBOARD_PLATFORM_SPAWNER,           /*pos*/  3251, -1082, -6256, /*angle*/ 0, 270, 0, /*bhvParam*/ BPARAM1(1) | BPARAM2(75), /*bhv*/ bhvCheckerboardElevatorGroup),\n    OBJECT(/*model*/ MODEL_VCUTM_CHECKERBOARD_PLATFORM_SPAWNER,           /*pos*/  2355, -1901, -6256, /*angle*/ 0, 270, 0, /*bhvParam*/ BPARAM1(1) | BPARAM2(75), /*bhv*/ bhvCheckerboardElevatorGroup),\n    OBJECT(/*model*/ MODEL_VCUTM_CHECKERBOARD_PLATFORM_SPAWNER,           /*pos*/  1459, -1594, -6256, /*angle*/ 0,  90, 0, /*bhvParam*/ BPARAM1(1) | BPARAM2(75), /*bhv*/ bhvCheckerboardElevatorGroup),\n    OBJECT(/*model*/ MODEL_VCUTM_CHECKERBOARD_PLATFORM_SPAWNER,           /*pos*/ -1151, -2413, -6256, /*angle*/ 0, 270, 0, /*bhvParam*/ BPARAM1(1) | BPARAM2(75), /*bhv*/ bhvCheckerboardElevatorGroup),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_2[] = {\n    OBJECT(/*model*/ MODEL_CAP_SWITCH, /*pos*/ 4506,  26, -6246, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(0x02), /*bhv*/ bhvCapSwitch),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_3[] = {\n    OBJECT(/*model*/ MODEL_NONE,       /*pos*/ 4600, 250, -4500, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_1), /*bhv*/ bhvHiddenRedCoinStar),\n    RETURN(),\n};\n\nconst LevelScript level_vcutm_entry[] = {\n    INIT_LEVEL(),\n    LOAD_MIO0_TEXTURE(/*seg*/ 0x09, _outside_mio0SegmentRomStart, _outside_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x07, _vcutm_segment_7SegmentRomStart, _vcutm_segment_7SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x05, _group8_mio0SegmentRomStart, _group8_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0C, _group8_geoSegmentRomStart,  _group8_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x08, _common0_mio0SegmentRomStart, _common0_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0F, _common0_geoSegmentRomStart,  _common0_geoSegmentRomEnd),\n    ALLOC_LEVEL_POOL(),\n    MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),\n    JUMP_LINK(script_func_global_1),\n    JUMP_LINK(script_func_global_9),\n    LOAD_MODEL_FROM_GEO(MODEL_VCUTM_SEESAW_PLATFORM, vcutm_geo_0001F0),\n    LOAD_MODEL_FROM_GEO(MODEL_VCUTM_WARP_PIPE,       warp_pipe_geo),\n\n    AREA(/*index*/ 1, vcutm_geo_000208),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ -6143, 6734, -6143, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvAirborneWarp),\n        WARP_NODE(/*id*/ WARP_NODE_0A,         /*destLevel*/ LEVEL_VCUTM,          /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_WARP_FLOOR, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 1, /*destNode*/ WARP_NODE_07, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_SUCCESS,    /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 1, /*destNode*/ WARP_NODE_08, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH,      /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 1, /*destNode*/ WARP_NODE_06, /*flags*/ WARP_NO_CHECKPOINT),\n        JUMP_LINK(script_func_local_3),\n        JUMP_LINK(script_func_local_1),\n        JUMP_LINK(script_func_local_2),\n        TERRAIN(/*terrainData*/ vcutm_seg7_collision),\n        MACRO_OBJECTS(/*objList*/ vcutm_seg7_macro_objs),\n        SHOW_DIALOG(/*index*/ 0x00, DIALOG_129),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0000, /*seq*/ SEQ_LEVEL_SLIDE),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_STONE),\n    END_AREA(),\n\n    FREE_LEVEL_POOL(),\n    MARIO_POS(/*area*/ 1, /*yaw*/ 0, /*pos*/ -6143, 5734, -6143),\n    CALL(/*arg*/ 0, /*func*/ lvl_init_or_update),\n    CALL_LOOP(/*arg*/ 1, /*func*/ lvl_init_or_update),\n    CLEAR_LEVEL(),\n    SLEEP_BEFORE_EXIT(/*frames*/ 1),\n    EXIT(),\n};\n"
  },
  {
    "path": "levels/vcutm/seesaw/collision.inc.c",
    "content": "// 0x0700AC44 - 0x0700ACC8\nconst Collision vcutm_seg7_collision_0700AC44[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(307, 0, 768),\n    COL_VERTEX(-306, 102, 819),\n    COL_VERTEX(-306, 0, 768),\n    COL_VERTEX(307, 102, 819),\n    COL_VERTEX(307, 0, -767),\n    COL_VERTEX(307, 102, -818),\n    COL_VERTEX(-306, 102, -818),\n    COL_VERTEX(-306, 0, -767),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(7, 6, 5),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI(4, 3, 0),\n    COL_TRI(5, 6, 1),\n    COL_TRI(5, 1, 3),\n    COL_TRI(4, 5, 3),\n    COL_TRI(0, 2, 7),\n    COL_TRI(0, 7, 4),\n    COL_TRI(2, 6, 7),\n    COL_TRI(7, 5, 4),\n    COL_TRI(2, 1, 6),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/vcutm/seesaw/geo.inc.c",
    "content": "// 0x0E0001F0\nconst GeoLayout vcutm_geo_0001F0[] = {\n    GEO_CULLING_RADIUS(1000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, vcutm_seg7_dl_070096E0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/vcutm/seesaw/model.inc.c",
    "content": "// 0x07009458 - 0x07009470\nstatic const Lights1 vcutm_seg7_lights_07009458 = gdSPDefLights1(\n    0x22, 0x22, 0x22,\n    0x88, 0x88, 0x88, 0x28, 0x28, 0x28\n);\n\n// 0x07009470 - 0x07009488\nstatic const Lights1 vcutm_seg7_lights_07009470 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07009488 - 0x07009578\nstatic const Vtx vcutm_seg7_vertex_07009488[] = {\n    {{{   307,      0,    768}, 0, {     0,   1960}, {0x00, 0xc8, 0x71, 0xff}}},\n    {{{  -306,    102,    819}, 0, {     0,    152}, {0x00, 0xc8, 0x71, 0xff}}},\n    {{{  -306,      0,    768}, 0, {     0,    100}, {0x00, 0xc8, 0x71, 0xff}}},\n    {{{   307,    102,    819}, 0, {     0,   2012}, {0x00, 0xc8, 0x71, 0xff}}},\n    {{{   307,      0,   -767}, 0, {   958,   1960}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   307,    102,    819}, 0, {     0,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   307,      0,    768}, 0, {     0,   1960}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   307,    102,   -818}, 0, {   990,   2012}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   307,      0,    768}, 0, {     0,   1960}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -306,      0,    768}, 0, {     0,    100}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -306,      0,   -767}, 0, {   958,    100}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   307,      0,   -767}, 0, {   958,   1960}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -306,      0,    768}, 0, {     0,    100}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -306,    102,   -818}, 0, {   990,    152}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -306,      0,   -767}, 0, {   958,    100}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07009578 - 0x070095E8\nstatic const Vtx vcutm_seg7_vertex_07009578[] = {\n    {{{  -306,      0,   -767}, 0, {   958,    100}, {0x00, 0xc8, 0x8f, 0xff}}},\n    {{{   307,    102,   -818}, 0, {   990,   2012}, {0x00, 0xc8, 0x8f, 0xff}}},\n    {{{   307,      0,   -767}, 0, {   958,   1960}, {0x00, 0xc8, 0x8f, 0xff}}},\n    {{{  -306,    102,   -818}, 0, {   990,    152}, {0x00, 0xc8, 0x8f, 0xff}}},\n    {{{  -306,      0,    768}, 0, {     0,    100}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -306,    102,    819}, 0, {     0,    152}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -306,    102,   -818}, 0, {   990,    152}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070095E8 - 0x07009628\nstatic const Vtx vcutm_seg7_vertex_070095E8[] = {\n    {{{   307,    102,   -818}, 0, {   990,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -306,    102,   -818}, 0, {   990,    152}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -306,    102,    819}, 0, {     0,    152}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   307,    102,    819}, 0, {     0,   2012}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07009628 - 0x070096E0\nstatic const Gfx vcutm_seg7_dl_07009628[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, vcutm_seg7_texture_07001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&vcutm_seg7_lights_07009458.l, 1),\n    gsSPLight(&vcutm_seg7_lights_07009458.a, 2),\n    gsSPVertex(vcutm_seg7_vertex_07009488, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(vcutm_seg7_vertex_07009578, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP1Triangle( 4,  5,  6, 0x0),\n    gsSPLight(&vcutm_seg7_lights_07009470.l, 1),\n    gsSPLight(&vcutm_seg7_lights_07009470.a, 2),\n    gsSPVertex(vcutm_seg7_vertex_070095E8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070096E0 - 0x07009750\nconst Gfx vcutm_seg7_dl_070096E0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(vcutm_seg7_dl_07009628),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/vcutm/texture.inc.c",
    "content": "// 0x07000000 - 0x07000800\nALIGNED8 static const Texture vcutm_seg7_texture_07000000[] = {\n#include \"levels/vcutm/0.rgba16.inc.c\"\n};\n\n// 0x07000800 - 0x07001800\nALIGNED8 static const Texture vcutm_seg7_texture_07000800[] = {\n#include \"levels/vcutm/1.rgba16.inc.c\"\n};\n\n// 0x07001800 - 0x07002800\nALIGNED8 static const Texture vcutm_seg7_texture_07001800[] = {\n#include \"levels/vcutm/2.rgba16.inc.c\"\n};\n\n// 0x07002800 - 0x07003000\nALIGNED8 static const Texture vcutm_seg7_texture_07002800[] = {\n#include \"levels/vcutm/3.rgba16.inc.c\"\n};\n"
  },
  {
    "path": "levels/wdw/areas/1/1/model.inc.c",
    "content": "// 0x07002800 - 0x07002818\nstatic const Lights1 wdw_seg7_lights_07002800 = gdSPDefLights1(\n    0x99, 0x99, 0x99,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07002818 - 0x07002830\nstatic const Lights1 wdw_seg7_lights_07002818 = gdSPDefLights1(\n    0x3c, 0x3c, 0x3c,\n    0x64, 0x64, 0x64, 0x28, 0x28, 0x28\n);\n\n// 0x07002830 - 0x07002920\nstatic const Vtx wdw_seg7_vertex_07002830[] = {\n    {{{  -511,   3072,  -3327}, 0, {   990,  -1370}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1023,   3072,  -3839}, 0, {  -158,  -1790}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -511,   3072,  -3839}, 0, {  -158,  -1370}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1023,   3072,  -3327}, 0, {   990,  -1790}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -511,   2816,  -3839}, 0, {  -158,  -1370}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,   2816,  -3327}, 0, {   990,  -1790}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,   2816,  -3327}, 0, {   990,  -1370}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,   2816,  -3839}, 0, {  -158,  -1790}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,   2304,  -3839}, 0, {     0,  -2076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2048,   2304,  -3839}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2048,   2304,  -3327}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1280,   2304,  -3327}, 0, {   990,  -2076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1280,   2304,  -3327}, 0, {  7122,   2520}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,   2304,  -3327}, 0, { 10188,   2520}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1280,   3072,  -3327}, 0, {  7122,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07002920 - 0x07002A20\nstatic const Vtx wdw_seg7_vertex_07002920[] = {\n    {{{ -2560,   2304,   -511}, 0, {  2522,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3839,   2304,   -511}, 0, {     0,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3839,   1152,   -511}, 0, {     0,   5332}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2559,   1152,   -511}, 0, {  2522,   5332}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,   1152,   -511}, 0, {  7122,   5332}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,    384,   -511}, 0, {  7122,   6864}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1280,    384,   -511}, 0, { 10188,   6864}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1280,    205,  -2175}, 0, {   990,   4564}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   640,   2304,  -2175}, 0, { -1308,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   640,    205,  -2175}, 0, { -1308,   4564}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1536,   2304,   -511}, 0, {  4566,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1280,   2304,   -511}, 0, { 10188,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1536,   1152,   -511}, 0, {  4566,   5332}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1280,    205,  -1279}, 0, {   990,   4564}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   640,   2304,  -1279}, 0, { -1308,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1280,   2304,  -1279}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07002A20 - 0x07002B20\nstatic const Vtx wdw_seg7_vertex_07002A20[] = {\n    {{{  1280,    205,  -1279}, 0, {   990,   4564}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   640,    205,  -1279}, 0, { -1308,   4564}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   640,   2304,  -1279}, 0, { -1308,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1280,    205,  -2175}, 0, {   990,   4564}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1280,   2304,  -2175}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   640,   2304,  -2175}, 0, { -1308,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1536,   1152,   -511}, 0, {  1012,   1232}, {0x6d, 0x00, 0x3f, 0xff}}},\n    {{{ -1536,   2304,   -511}, 0, {  1012,  -1064}, {0x6d, 0x00, 0x3f, 0xff}}},\n    {{{ -1792,   2304,    -68}, 0, {   -10,  -1064}, {0x6d, 0x00, 0x3f, 0xff}}},\n    {{{   640,    205,  -1279}, 0, {  2012,   4566}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   640,    205,  -2175}, 0, {  3546,   4566}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   640,   2304,  -2175}, 0, {  3546,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   640,   2304,  -1279}, 0, {  2012,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1792,   1152,    -68}, 0, {  4054,   5332}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2304,   2304,    -68}, 0, {  3032,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2304,   1152,    -68}, 0, {  3032,   5332}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07002B20 - 0x07002C20\nstatic const Vtx wdw_seg7_vertex_07002B20[] = {\n    {{{ -1792,   1152,    -68}, 0, {  4054,   5332}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1792,   2304,    -68}, 0, {  4054,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2304,   2304,    -68}, 0, {  3032,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2304,   1152,    -68}, 0, {   990,   2266}, {0x93, 0x00, 0x3f, 0xff}}},\n    {{{ -2304,   2304,    -68}, 0, {   990,      0}, {0x93, 0x00, 0x3f, 0xff}}},\n    {{{ -2560,   2304,   -511}, 0, {     0,      0}, {0x93, 0x00, 0x3f, 0xff}}},\n    {{{ -2304,   1152,    -68}, 0, {   990,   2266}, {0x92, 0x00, 0x3f, 0xff}}},\n    {{{ -2560,   2304,   -511}, 0, {     0,      0}, {0x92, 0x00, 0x3f, 0xff}}},\n    {{{ -2559,   1152,   -511}, 0, {     0,   2266}, {0x92, 0x00, 0x3f, 0xff}}},\n    {{{ -1536,   1152,   -511}, 0, {  1012,   1232}, {0x6d, 0x00, 0x3f, 0xff}}},\n    {{{ -1792,   2304,    -68}, 0, {   -10,  -1064}, {0x6d, 0x00, 0x3f, 0xff}}},\n    {{{ -1792,   1152,    -68}, 0, {   -10,   1232}, {0x6d, 0x00, 0x3f, 0xff}}},\n    {{{   256,   3072,  -3327}, 0, {  5078,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,   2304,  -3327}, 0, {  5078,   2520}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1280,   3072,  -3327}, 0, {  7122,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1280,   2304,  -3327}, 0, {  7122,   2520}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07002C20 - 0x07002D20\nstatic const Vtx wdw_seg7_vertex_07002C20[] = {\n    {{{     0,   3072,  -3327}, 0, {  4568,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,   2816,  -3327}, 0, {  5078,   1498}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,   3072,  -3327}, 0, {  5078,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,   3072,  -3839}, 0, {  3034,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,   3328,  -3327}, 0, {  2012,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,   3072,  -3327}, 0, {  2012,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,   3328,  -3839}, 0, {  3034,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1280,      0,  -2559}, 0, {  3034,   1704}, {0x00, 0x70, 0xc5, 0xff}}},\n    {{{  2048,    205,  -2175}, 0, {     0,      0}, {0x00, 0x70, 0xc5, 0xff}}},\n    {{{  2048,      0,  -2559}, 0, {     0,   1704}, {0x00, 0x70, 0xc5, 0xff}}},\n    {{{  -255,   3328,  -3327}, 0, {  4056,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     0,   3328,  -3327}, 0, {  4568,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,   3328,  -3327}, 0, {  2012,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -255,   3328,  -3839}, 0, {  3034,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -255,   3584,  -3839}, 0, {  3034,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -255,   3584,  -3327}, 0, {  2012,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07002D20 - 0x07002E00\nstatic const Vtx wdw_seg7_vertex_07002D20[] = {\n    {{{  2048,      0,   -895}, 0, {   990,   1704}, {0x00, 0x70, 0x3b, 0xff}}},\n    {{{  2048,    205,  -1279}, 0, {   990,      0}, {0x00, 0x70, 0x3b, 0xff}}},\n    {{{  1280,      0,   -895}, 0, { -2074,   1704}, {0x00, 0x70, 0x3b, 0xff}}},\n    {{{  1280,    205,  -1279}, 0, { -2074,      0}, {0x00, 0x70, 0x3b, 0xff}}},\n    {{{  2432,      0,  -2175}, 0, {  -874,   1664}, {0x36, 0x65, 0xca, 0xff}}},\n    {{{  2048,      0,  -2559}, 0, {  1834,   1664}, {0x36, 0x65, 0xca, 0xff}}},\n    {{{  2048,    205,  -2175}, 0, {   480,      0}, {0x36, 0x65, 0xca, 0xff}}},\n    {{{  1280,      0,  -2559}, 0, {  3034,   1704}, {0x00, 0x70, 0xc5, 0xff}}},\n    {{{  1280,    205,  -2175}, 0, {  3034,      0}, {0x00, 0x70, 0xc5, 0xff}}},\n    {{{  2048,    205,  -2175}, 0, {     0,      0}, {0x00, 0x70, 0xc5, 0xff}}},\n    {{{  2432,      0,  -1279}, 0, {     0,   1704}, {0x3b, 0x70, 0x00, 0xff}}},\n    {{{  2048,    205,  -2175}, 0, {  3034,      0}, {0x3b, 0x70, 0x00, 0xff}}},\n    {{{  2048,    205,  -1279}, 0, {     0,      0}, {0x3b, 0x70, 0x00, 0xff}}},\n    {{{  2432,      0,  -2175}, 0, {  3034,   1704}, {0x3b, 0x70, 0x00, 0xff}}},\n};\n\n// 0x07002E00 - 0x07002F00\nstatic const Vtx wdw_seg7_vertex_07002E00[] = {\n    {{{  2048,      0,   -895}, 0, {  -362,   1664}, {0x36, 0x65, 0x36, 0xff}}},\n    {{{  2432,      0,  -1279}, 0, {  2344,   1664}, {0x36, 0x65, 0x36, 0xff}}},\n    {{{  2048,    205,  -1279}, 0, {   990,      0}, {0x36, 0x65, 0x36, 0xff}}},\n    {{{  1280,   2304,  -3839}, 0, {  6610,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1280,   2304,  -2175}, 0, {  3034,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1280,    205,  -2175}, 0, {  3034,   4156}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1280,      0,  -2559}, 0, {  3800,   4566}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1280,      0,  -3839}, 0, {  6612,   4566}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1280,    205,  -1279}, 0, {  1502,   4156}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1280,      0,   -511}, 0, {     0,   4566}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1280,      0,   -895}, 0, {   734,   4566}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1280,   2304,   -511}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1280,   2304,  -1279}, 0, {  1502,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2303,   3328,  -3327}, 0, {     0,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1023,   3584,  -3327}, 0, {  2524,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2303,   3584,  -3327}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07002F00 - 0x07002FE0\nstatic const Vtx wdw_seg7_vertex_07002F00[] = {\n    {{{ -2303,   3328,  -3327}, 0, {     0,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1023,   3328,  -3327}, 0, {  2524,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1023,   3584,  -3327}, 0, {  2524,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,   3584,  -3327}, 0, {  2012,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,   3328,  -3839}, 0, {  3034,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,   3328,  -3327}, 0, {  2012,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,   3328,  -3327}, 0, {  3546,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,   3584,  -3327}, 0, {  4056,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,   3584,  -3327}, 0, {  3546,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,   3328,  -3327}, 0, {  4056,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1023,   2816,  -3327}, 0, {  2524,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,   3072,  -3327}, 0, {  3546,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1023,   3072,  -3327}, 0, {  2524,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,   2816,  -3327}, 0, {  3546,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07002FE0 - 0x070030C0\nstatic const Vtx wdw_seg7_vertex_07002FE0[] = {\n    {{{ -1023,   3328,  -3327}, 0, {  2012,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1023,   3328,  -3839}, 0, {  3034,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1023,   3584,  -3839}, 0, {  3034,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1023,   3584,  -3327}, 0, {  2012,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2815,   3456,  -2303}, 0, {   -92,   1244}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2431,   3584,  -1919}, 0, {   990,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2815,   3584,  -2303}, 0, {   -92,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -511,   3584,  -3327}, 0, {  2012,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,   3584,  -3839}, 0, {  3034,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,   3328,  -3839}, 0, {  3034,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,   2816,  -3327}, 0, {  2012,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -511,   2816,  -3839}, 0, {  3034,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -511,   3072,  -3839}, 0, {  3034,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -511,   3072,  -3327}, 0, {  2012,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070030C0 - 0x070031A0\nstatic const Vtx wdw_seg7_vertex_070030C0[] = {\n    {{{ -1023,   3072,  -3327}, 0, {  2012,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1023,   2816,  -3839}, 0, {  3034,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1023,   2816,  -3327}, 0, {  2012,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1023,   3072,  -3839}, 0, {  3034,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2815,   3456,  -2303}, 0, {   -92,   1244}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2431,   3456,  -1919}, 0, {   990,   1244}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2431,   3584,  -1919}, 0, {   990,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2303,   2304,  -2303}, 0, {   990,   3542}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2303,   3456,  -2303}, 0, {   990,   1244}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3839,   3456,  -2303}, 0, { -2074,   1244}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1919,   3584,  -2431}, 0, {   -92,    734}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1919,   3456,  -2431}, 0, {   -92,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2303,   3456,  -2815}, 0, {   990,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2303,   3584,  -2815}, 0, {   990,    734}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x070031A0 - 0x07003290\nstatic const Vtx wdw_seg7_vertex_070031A0[] = {\n    {{{ -2121,   3456,  -2229}, 0, {   524,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1919,   3584,  -2431}, 0, {   990,    734}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2121,   3584,  -2229}, 0, {   524,    734}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1919,   3456,  -2431}, 0, {   990,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2431,   3456,  -1919}, 0, {   -92,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2229,   3456,  -2121}, 0, {   372,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2229,   3584,  -2121}, 0, {   372,    734}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2431,   3584,  -1919}, 0, {   -92,    734}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2303,   3456,  -2815}, 0, {   990,    224}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2303,   3584,  -3327}, 0, {  2012,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2303,   3584,  -2815}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2815,   3584,  -2303}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3839,   3584,  -2303}, 0, { -2074,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3839,   3456,  -2303}, 0, { -2074,   1244}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2815,   3456,  -2303}, 0, {     0,   1244}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07003290 - 0x07003380\nstatic const Vtx wdw_seg7_vertex_07003290[] = {\n    {{{ -2303,   2304,  -2303}, 0, {   990,   3542}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3839,   3456,  -2303}, 0, { -2074,   1244}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3839,   2304,  -2303}, 0, { -2074,   3544}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2303,   2304,  -3327}, 0, {  2012,   2520}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2303,   3456,  -3327}, 0, {  2012,    224}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2303,   3456,  -2303}, 0, {     0,    224}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2303,   2304,  -2303}, 0, {     0,   2520}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2303,   3456,  -2815}, 0, {   990,    224}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2303,   3584,  -3327}, 0, {  2012,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2047,   2304,   2432}, 0, {   480,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2175,   1664,   2432}, 0, {   990,   2520}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2175,   2304,   2432}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3839,   3584,  -2303}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3839,   4352,  -2303}, 0, {     0,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3839,   3072,  -2303}, 0, {   990,   2010}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07003380 - 0x07003460\nstatic const Vtx wdw_seg7_vertex_07003380[] = {\n    {{{ -2431,   1664,   3840}, 0, {  -542,   2522}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2047,   2304,   3840}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2431,   2304,   3840}, 0, {  -542,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2047,   1664,   3840}, 0, {   990,   2522}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2175,   2304,   2432}, 0, {     0,      0}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{ -2175,   1664,   2432}, 0, {     0,   2522}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{ -2431,   1664,   2944}, 0, {  2254,   2522}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{ -2431,   2304,   2944}, 0, {  2254,      0}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{ -2047,   2304,   2432}, 0, {   480,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2047,   1664,   2432}, 0, {   478,   2520}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2175,   1664,   2432}, 0, {   990,   2520}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1909,   2304,   -320}, 0, {  1074,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1909,   2816,   -320}, 0, {  1074,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2185,   2816,   -320}, 0, {     0,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07003460 - 0x07003550\nstatic const Vtx wdw_seg7_vertex_07003460[] = {\n    {{{ -2047,   2304,   3840}, 0, { -1052,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2047,   1664,   3840}, 0, { -1052,   3542}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2047,   1664,   2432}, 0, {  5078,   3544}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2047,   2304,   2432}, 0, {  5078,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2431,   1664,   3456}, 0, {   990,   3542}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2431,   1664,   3840}, 0, { -1052,   3542}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2431,   2304,   3840}, 0, { -1052,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2431,   2304,   3456}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2185,   2304,   -320}, 0, {  1074,    990}, {0x88, 0x00, 0x27, 0xff}}},\n    {{{ -2185,   2816,   -320}, 0, {  1074,  -1054}, {0x88, 0x00, 0x27, 0xff}}},\n    {{{ -2271,   2816,   -584}, 0, {     0,  -1054}, {0x88, 0x00, 0x27, 0xff}}},\n    {{{ -2271,   2304,   -584}, 0, {     0,    990}, {0x88, 0x00, 0x27, 0xff}}},\n    {{{ -2271,   2304,   -584}, 0, {  1074,    990}, {0xb6, 0x00, 0x9a, 0xff}}},\n    {{{ -2047,   2816,   -747}, 0, {     0,  -1054}, {0xb6, 0x00, 0x9a, 0xff}}},\n    {{{ -2047,   2304,   -747}, 0, {     0,    990}, {0xb6, 0x00, 0x9a, 0xff}}},\n};\n\n// 0x07003550 - 0x07003630\nstatic const Vtx wdw_seg7_vertex_07003550[] = {\n    {{{ -1909,   2304,   -320}, 0, {  1074,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2185,   2816,   -320}, 0, {     0,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2185,   2304,   -320}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1823,   2304,   -584}, 0, {  1074,    990}, {0x78, 0x00, 0x27, 0xff}}},\n    {{{ -1909,   2816,   -320}, 0, {     0,  -1054}, {0x78, 0x00, 0x27, 0xff}}},\n    {{{ -1909,   2304,   -320}, 0, {     0,    990}, {0x78, 0x00, 0x27, 0xff}}},\n    {{{ -1823,   2816,   -584}, 0, {  1074,  -1054}, {0x78, 0x00, 0x27, 0xff}}},\n    {{{ -2047,   2304,   -747}, 0, {  1074,    990}, {0x4a, 0x00, 0x9a, 0xff}}},\n    {{{ -2047,   2816,   -747}, 0, {  1074,  -1054}, {0x4a, 0x00, 0x9a, 0xff}}},\n    {{{ -1823,   2816,   -584}, 0, {     0,  -1054}, {0x4a, 0x00, 0x9a, 0xff}}},\n    {{{ -1823,   2304,   -584}, 0, {     0,    990}, {0x4a, 0x00, 0x9a, 0xff}}},\n    {{{ -2271,   2304,   -584}, 0, {  1074,    990}, {0xb6, 0x00, 0x9a, 0xff}}},\n    {{{ -2271,   2816,   -584}, 0, {  1074,  -1054}, {0xb6, 0x00, 0x9a, 0xff}}},\n    {{{ -2047,   2816,   -747}, 0, {     0,  -1054}, {0xb6, 0x00, 0x9a, 0xff}}},\n};\n\n// 0x07003630 - 0x07003720\nstatic const Vtx wdw_seg7_vertex_07003630[] = {\n    {{{ -1023,   3328,  -3327}, 0, {   990,  -1790}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2303,   3328,  -3839}, 0, {  -158,  -2842}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1023,   3328,  -3839}, 0, {  -158,  -1790}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2303,   3328,  -3327}, 0, {   990,  -2842}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -255,   3328,  -3327}, 0, {   990,  -1158}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -511,   3328,  -3839}, 0, {  -158,  -1370}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -255,   3328,  -3839}, 0, {  -158,  -1158}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -511,   3328,  -3327}, 0, {   990,  -1370}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2229,   3456,  -2121}, 0, {   372,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2121,   3584,  -2229}, 0, {   524,    734}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2229,   3584,  -2121}, 0, {   372,    734}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2303,   2304,  -3327}, 0, {  2012,   2520}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2303,   2304,  -3839}, 0, {  3034,   2520}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2303,   3328,  -3839}, 0, {  3034,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2303,   3328,  -3327}, 0, {  2012,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07003720 - 0x070037D0\nstatic const Vtx wdw_seg7_vertex_07003720[] = {\n    {{{   256,   2816,  -3327}, 0, {   990,    902}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  -255,   3328,  -3327}, 0, {   990,   -542}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  -255,   3328,  -3839}, 0, {     0,   -542}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{   256,   2816,  -3839}, 0, {     0,    902}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{   256,   2304,  -3327}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   256,   2816,  -3839}, 0, {     0,   -544}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   256,   2304,  -3839}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   256,   2816,  -3327}, 0, {   990,   -544}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2229,   3456,  -2121}, 0, {   372,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2121,   3456,  -2229}, 0, {   524,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2121,   3584,  -2229}, 0, {   524,    734}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x070037D0 - 0x070038C0\nstatic const Vtx wdw_seg7_vertex_070037D0[] = {\n    {{{  2048,    205,  -1279}, 0, {  -542,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2048,    205,  -2175}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   640,    205,  -2175}, 0, {   990,  -2842}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   640,    205,  -1279}, 0, {  -542,  -2842}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2048,   2304,  -3839}, 0, {  3034,   6098}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{  1280,   3072,  -3327}, 0, {  2012,   3032}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{  2048,   2304,  -3327}, 0, {  2012,   6098}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{  1280,   3072,  -3839}, 0, {  3034,   3032}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{ -2303,   2304,  -2303}, 0, {  3034,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3839,   2304,  -2303}, 0, {  3034,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3839,   2304,   -511}, 0, {  -542,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   640,   2304,  -1279}, 0, {   990,   8908}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,   2304,   -511}, 0, {  -542,  10186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,   2304,  -1279}, 0, {   990,  10186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   640,   2304,  -2175}, 0, {  2524,   8908}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070038C0 - 0x070039C0\nstatic const Vtx wdw_seg7_vertex_070038C0[] = {\n    {{{ -2303,   2304,  -3327}, 0, {  5078,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2303,   2304,  -2303}, 0, {  3034,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,   2304,  -3327}, 0, {  5078,  10186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,   2304,  -2175}, 0, {  2524,  10186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   640,   2304,  -2175}, 0, {  2524,   8908}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2560,   2304,   -511}, 0, {   478,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2304,   2304,    -68}, 0, {  -404,    988}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1792,   2304,    -68}, 0, {  -404,   2008}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1536,   2304,   -511}, 0, {   480,   2520}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,   3072,  -3839}, 0, {   990,  10186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,   3072,  -3327}, 0, {     0,   8142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,   3072,  -3327}, 0, {     0,  10186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,   3072,  -3839}, 0, {   990,   8142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,   3584,  -3327}, 0, {     0,   6610}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,   3584,  -3839}, 0, {   990,   7120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,   3584,  -3839}, 0, {   990,   6608}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070039C0 - 0x07003AB0\nstatic const Vtx wdw_seg7_vertex_070039C0[] = {\n    {{{   256,   3072,  -3839}, 0, {   990,   8142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,   3072,  -3327}, 0, {     0,   7632}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,   3072,  -3327}, 0, {     0,   8142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,   3072,  -3839}, 0, {   990,   7630}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,   3328,  -3839}, 0, {   990,   7630}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,   3328,  -3839}, 0, {   990,   7120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,   3328,  -3327}, 0, {     0,   7120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,   3328,  -3327}, 0, {     0,   7632}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2303,   3584,  -3839}, 0, {   990,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2303,   3584,  -3327}, 0, {     0,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,   3584,  -3327}, 0, {     0,   5588}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,   3584,  -3839}, 0, {   990,   5586}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,   3584,  -3327}, 0, {     0,   6610}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,   3584,  -3327}, 0, {     0,   7120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,   3584,  -3839}, 0, {   990,   7120}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07003AB0 - 0x07003BB0\nstatic const Vtx wdw_seg7_vertex_07003AB0[] = {\n    {{{ -1023,   3072,  -3327}, 0, {     0,   5588}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,   3072,  -3839}, 0, {   990,   6608}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,   3072,  -3839}, 0, {   990,   5586}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,   3072,  -3327}, 0, {     0,   6610}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2303,   3456,  -2303}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1919,   3456,  -2431}, 0, {  -286,   1754}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2431,   3456,  -1919}, 0, {   734,    734}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2815,   3456,  -2303}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2303,   3456,  -2815}, 0, { -1052,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2431,   1664,   3840}, 0, {  5588,   -544}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2175,   1664,   2432}, 0, {     0,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2047,   1664,   2432}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2815,   3584,  -2303}, 0, {     0,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2303,   3584,  -2815}, 0, {   990,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3839,   3584,  -3839}, 0, {  3034,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3839,   3584,  -2303}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07003BB0 - 0x07003CB0\nstatic const Vtx wdw_seg7_vertex_07003BB0[] = {\n    {{{ -2815,   3584,  -2303}, 0, {     0,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2229,   3584,  -2121}, 0, {  -394,   3180}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2357,   3584,  -2249}, 0, {  -138,   2924}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2431,   3584,  -1919}, 0, {  -796,   2776}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2249,   3584,  -2357}, 0, {    76,   3140}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2303,   3584,  -2815}, 0, {   990,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2303,   3584,  -3839}, 0, {  3034,   3032}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3839,   3584,  -3839}, 0, {  3034,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1919,   3584,  -2431}, 0, {   224,   3798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2121,   3584,  -2229}, 0, {  -178,   3396}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2431,   1664,   3840}, 0, {  5588,   -544}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2047,   1664,   2432}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2047,   1664,   3840}, 0, {  5588,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2047,   2816,   -747}, 0, {  -112,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2271,   2816,   -584}, 0, {  -762,   3160}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2185,   2816,   -320}, 0, { -1812,   3502}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07003CB0 - 0x07003D70\nstatic const Vtx wdw_seg7_vertex_07003CB0[] = {\n    {{{ -2431,   1664,   3840}, 0, {  5588,   -544}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2431,   1664,   2944}, 0, {  2012,   -544}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2175,   1664,   2432}, 0, {     0,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2175,   2304,   2432}, 0, {  3034,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2047,   2304,   3840}, 0, { -2586,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2047,   2304,   2432}, 0, {  3034,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2431,   2304,   3840}, 0, { -2586,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2431,   2304,   2944}, 0, {   990,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2047,   2816,   -747}, 0, {  -112,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1909,   2816,   -320}, 0, { -1812,   4606}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1823,   2816,   -584}, 0, {  -762,   4948}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2185,   2816,   -320}, 0, { -1812,   3502}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07003D70 - 0x07003E30\nstatic const Vtx wdw_seg7_vertex_07003D70[] = {\n    {{{ -2121,   3584,  -2229}, 0, {  -178,   1352}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2357,   3584,  -2249}, 0, {  -138,    882}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2229,   3584,  -2121}, 0, {  -394,   1136}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2249,   3584,  -2357}, 0, {    76,   1096}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2303,   2304,  -3327}, 0, {  4568,  -6164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,   2304,  -3327}, 0, {  4568,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,   2304,  -3839}, 0, {  5590,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2303,   2304,  -3839}, 0, {  5590,  -6164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,   2816,  -3839}, 0, {   990,   5586}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -511,   2816,  -3327}, 0, {     0,   6610}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1023,   2816,  -3327}, 0, {     0,   5588}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -511,   2816,  -3839}, 0, {   990,   6608}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07003E30 - 0x07003F20\nstatic const Vtx wdw_seg7_vertex_07003E30[] = {\n    {{{ -1023,   2304,   2688}, 0, { -3096,   2520}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -511,   2048,   2688}, 0, { -1052,   3544}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1023,   2048,   2688}, 0, { -3096,   3542}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -511,   2048,   2944}, 0, { -1052,   3544}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,   2304,   2944}, 0, { -1052,   2520}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1023,   2304,   2944}, 0, { -3096,   2520}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1023,   2048,   2944}, 0, { -3096,   3542}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1023,   2048,   2944}, 0, {  3544,   4054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1023,   2304,   2944}, 0, {  3544,   3032}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1023,   2304,   2688}, 0, {  4568,   3032}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1023,   2048,   2688}, 0, {  4568,   4054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,   2048,   2688}, 0, {  4568,   4054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -511,   2304,   2944}, 0, {  3544,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -511,   2048,   2944}, 0, {  3544,   4054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -511,   2304,   2688}, 0, {  4568,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07003F20 - 0x07004010\nstatic const Vtx wdw_seg7_vertex_07003F20[] = {\n    {{{  -511,   2048,   2048}, 0, {  7122,   4054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -511,   2176,   2432}, 0, {  5590,   3542}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -511,   2048,   2432}, 0, {  5590,   4054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1023,   2304,   2688}, 0, { -3096,   2520}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -511,   2304,   2688}, 0, { -1052,   2520}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -511,   2048,   2688}, 0, { -1052,   3544}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1023,   2048,   2432}, 0, {  5590,   4054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1023,   2176,   2048}, 0, {  7122,   3542}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1023,   2048,   2048}, 0, {  7122,   4054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1023,   2176,   2432}, 0, {  5590,   3542}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,   2048,   2432}, 0, { -1052,   3544}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1023,   2176,   2432}, 0, { -3096,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1023,   2048,   2432}, 0, { -3096,   3542}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,   2176,   2432}, 0, { -1052,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,   2176,   2048}, 0, {  7122,   3542}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07004010 - 0x07004100\nstatic const Vtx wdw_seg7_vertex_07004010[] = {\n    {{{   256,   3072,   3840}, 0, {  2012,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,   3200,   3840}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,   3072,   3840}, 0, {     0,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1023,   2048,   2048}, 0, { -3096,   3542}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -511,   2176,   2048}, 0, { -1052,   3032}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -511,   2048,   2048}, 0, { -1052,   3544}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1023,   2176,   2048}, 0, { -3096,   3032}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -255,   3072,   3328}, 0, {     0,    478}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -255,   3200,   3328}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,   3200,   3328}, 0, {  2012,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,   3072,   3328}, 0, {  2012,    478}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,   3072,   3328}, 0, {  2012,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,   3200,   3840}, 0, {     0,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,   3072,   3840}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,   3200,   3328}, 0, {  2012,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07004100 - 0x070041F0\nstatic const Vtx wdw_seg7_vertex_07004100[] = {\n    {{{  1723,   3968,    340}, 0, {  2012,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1211,   4096,    340}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1211,   3968,    340}, 0, {     0,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,   3072,   3840}, 0, {  2012,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,   3200,   3840}, 0, {  2012,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,   3200,   3840}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,   3072,   3840}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,   3200,   3840}, 0, {     0,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,   3200,   3328}, 0, {  2012,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,   3072,   3328}, 0, {  2012,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1211,   3968,    340}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1211,   4096,   -171}, 0, {  2012,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1211,   3968,   -171}, 0, {  2012,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1211,   4096,    340}, 0, {     0,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1723,   4096,    340}, 0, {  2012,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070041F0 - 0x07004270\nstatic const Vtx wdw_seg7_vertex_070041F0[] = {\n    {{{  1723,   3968,   -171}, 0, {  2012,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1723,   4096,    340}, 0, {     0,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1723,   3968,    340}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1723,   4096,   -171}, 0, {  2012,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1211,   3968,   -171}, 0, {     0,    478}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1723,   4096,   -171}, 0, {  2012,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1723,   3968,   -171}, 0, {  2012,    478}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1211,   4096,   -171}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07004270 - 0x07004360\nstatic const Vtx wdw_seg7_vertex_07004270[] = {\n    {{{  -255,   1152,   1152}, 0, {     0,  -2076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -255,    384,   1152}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -255,    384,   -511}, 0, {  6100,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1280,      0,   1024}, 0, {  8760,   1500}, {0x49, 0x00, 0x67, 0xff}}},\n    {{{  -511,    384,   2304}, 0, {     0,      0}, {0x49, 0x00, 0x67, 0xff}}},\n    {{{  -511,      0,   2304}, 0, {     0,   1498}, {0x49, 0x00, 0x67, 0xff}}},\n    {{{  1280,    384,   1024}, 0, {  8760,      0}, {0x49, 0x00, 0x67, 0xff}}},\n    {{{  -511,      0,   2304}, 0, { 13254,   1498}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3839,    384,   2304}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3839,      0,   2304}, 0, {     0,   1498}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,    384,   2304}, 0, { 13254,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -383,   1152,   1280}, 0, {  -454,  -2076}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -383,    384,   1280}, 0, {  -454,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -255,    384,   1152}, 0, {   990,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -255,   1152,   1152}, 0, {   990,  -2076}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07004360 - 0x07004440\nstatic const Vtx wdw_seg7_vertex_07004360[] = {\n    {{{ -3839,   1152,   1280}, 0, {-12294,  -4120}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2354,    691,   1280}, 0, { -6366,  -2280}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2047,    691,   1280}, 0, { -5140,  -2280}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,   1152,   1152}, 0, {     0,  -2076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -255,    384,   -511}, 0, {  6100,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -255,   1152,   -511}, 0, {  6100,  -2076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1280,      0,   1024}, 0, {     0,   1498}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1280,    384,   -511}, 0, {  6100,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1280,    384,   1024}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1280,      0,   -511}, 0, {  6100,   1498}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2047,    384,   1280}, 0, { -5140,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -383,    384,   1280}, 0, {  1500,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3839,    384,   1280}, 0, {-12294,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2354,    384,   1280}, 0, { -6366,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07004440 - 0x07004530\nstatic const Vtx wdw_seg7_vertex_07004440[] = {\n    {{{ -2431,   2304,   4224}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2943,   2304,   3456}, 0, {  5078,   2010}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2431,   2304,   3456}, 0, {  5078,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3839,   1152,   1280}, 0, {-12294,  -4120}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2047,    691,   1280}, 0, { -5140,  -2280}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -383,    384,   1280}, 0, {  1500,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -383,   1152,   1280}, 0, {  1500,  -4120}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2431,      0,   2944}, 0, {     0,  11208}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2943,      0,   2944}, 0, {  2012,  11208}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2943,   3328,   2944}, 0, {  2012,  -2076}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2431,   3328,   2944}, 0, {     0,  -2076}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2431,      0,   3456}, 0, {  2012,   9164}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2943,   2304,   3456}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2943,      0,   3456}, 0, {     0,   9164}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2431,   2304,   3456}, 0, {  2012,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07004530 - 0x07004620\nstatic const Vtx wdw_seg7_vertex_07004530[] = {\n    {{{ -2789,   3328,   3098}, 0, {   376,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2789,   2816,   3098}, 0, {   376,   2010}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2585,   2816,   3098}, 0, {  1194,   2010}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2431,   2304,   4224}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2943,   2304,   4224}, 0, {     0,   2010}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2943,   2304,   3456}, 0, {  5078,   2010}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2943,   3328,   2944}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2943,   2304,   3456}, 0, {  2012,   4054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2943,   3328,   3456}, 0, {  2012,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2943,      0,   3456}, 0, {  2012,  13252}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2943,   2304,   4224}, 0, {  5078,   4054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2789,   3328,   3302}, 0, {  1604,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2789,   2816,   3302}, 0, {  1604,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2789,   2816,   3098}, 0, {   786,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2789,   3328,   3098}, 0, {   786,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07004620 - 0x07004710\nstatic const Vtx wdw_seg7_vertex_07004620[] = {\n    {{{ -2789,   2816,   3302}, 0, {   172,    172}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2585,   2816,   3302}, 0, {   172,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2585,   2816,   3098}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2789,   3328,   3098}, 0, {   376,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2585,   2816,   3098}, 0, {  1194,   2010}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2585,   3328,   3098}, 0, {  1194,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2585,   3328,   3098}, 0, {   786,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2585,   2816,   3098}, 0, {   786,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2585,   2816,   3302}, 0, {  1604,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2585,   3328,   3302}, 0, {  1604,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2585,   3328,   3302}, 0, {  1194,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2585,   2816,   3302}, 0, {  1194,   2010}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2789,   2816,   3302}, 0, {   376,   2010}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2789,   3328,   3302}, 0, {   376,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2789,   2816,   3098}, 0, {   990,    172}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07004710 - 0x070047D0\nstatic const Vtx wdw_seg7_vertex_07004710[] = {\n    {{{ -2431,   3328,   3456}, 0, {     0,  -3098}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2431,   2304,   4224}, 0, { -3096,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2431,   2304,   3456}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2431,   2304,   2944}, 0, {  2012,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2943,   3328,   2944}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2943,      0,   2944}, 0, {     0,  13252}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2943,      0,   3456}, 0, {  2012,  13252}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2431,   3328,   2944}, 0, {  2012,  -3098}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2431,      0,   2944}, 0, {  2136,  13226}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2431,   1664,   2944}, 0, {  2056,   6584}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2431,   1664,   3456}, 0, {    12,   6608}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2431,      0,   3456}, 0, {    92,  13252}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070047D0 - 0x070048D0\nstatic const Vtx wdw_seg7_vertex_070047D0[] = {\n    {{{ -2047,    384,    666}, 0, { -5650,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2354,    691,    666}, 0, { -6878,   1806}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2354,    384,    666}, 0, { -6878,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2354,    384,   1280}, 0, {   480,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2354,    384,    666}, 0, {  1604,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2354,    691,    666}, 0, {  1604,   -748}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2354,    691,   1280}, 0, {   480,   -748}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2047,    691,   1280}, 0, {   480,   -748}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2047,    691,    666}, 0, {  1604,   -748}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2047,    384,    666}, 0, {  1604,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2047,    384,   1280}, 0, {   480,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2354,    691,   1280}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2047,    691,    666}, 0, {   786,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2047,    691,   1280}, 0, {   786,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2354,    691,    666}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2047,    691,    666}, 0, { -5650,   1806}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070048D0 - 0x070049B0\nstatic const Vtx wdw_seg7_vertex_070048D0[] = {\n    {{{  4608,      0,   4608}, 0, {  6610,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3839,   3072,   4608}, 0, {-10250,  -5142}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4608,   3072,   4608}, 0, {  6612,  -5142}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3839,      0,   4608}, 0, {-10250,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3839,      0,   4608}, 0, { 13766,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3839,   2304,   -511}, 0, {  3546,  -4632}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3839,   3072,   4608}, 0, { 13766,  -6164}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3839,      0,   -511}, 0, {  3546,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3839,   3072,  -2303}, 0, {     0,  -6164}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3839,   2304,  -2303}, 0, {     0,  -4632}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1280,   2304,  -3839}, 0, {     0,  -3608}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,   3584,  -3839}, 0, { -3096,  -6164}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2303,   3584,  -3839}, 0, { -7184,  -6164}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2303,   2304,  -3839}, 0, { -7184,  -3608}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070049B0 - 0x07004AA0\nstatic const Vtx wdw_seg7_vertex_070049B0[] = {\n    {{{ -2943,   3328,   2944}, 0, {  2012,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2789,   3328,   3302}, 0, {   582,   -440}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2789,   3328,   3098}, 0, {  1398,   -440}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,   2304,  -3839}, 0, {     0,  -3608}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4608,   3072,  -3839}, 0, {  6612,  -5142}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,   3584,  -3839}, 0, { -3096,  -6164}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1280,      0,  -3839}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4608,      0,  -3839}, 0, {  6610,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4608,      0,   4608}, 0, { 13766,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4608,   3072,   4608}, 0, { 13766,  -6164}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4608,   3072,  -3839}, 0, { -3096,  -6164}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4608,      0,  -3839}, 0, { -3096,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2431,   3328,   3456}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2585,   3328,   3302}, 0, {   582,    376}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2943,   3328,   3456}, 0, {     0,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07004AA0 - 0x07004B40\nstatic const Vtx wdw_seg7_vertex_07004AA0[] = {\n    {{{ -2431,   3328,   3456}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2431,   3328,   2944}, 0, {  2012,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2585,   3328,   3098}, 0, {  1398,    376}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2585,   3328,   3302}, 0, {   582,    376}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2943,   3328,   2944}, 0, {  2012,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2789,   3328,   3098}, 0, {  1398,   -440}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2431,   3328,   3456}, 0, {   990,   1446}, {0x00, 0x4c, 0x65, 0xff}}},\n    {{{ -2943,   2304,   4224}, 0, {     0,   3950}, {0x00, 0x4c, 0x65, 0xff}}},\n    {{{ -2431,   2304,   4224}, 0, {   990,   3950}, {0x00, 0x4c, 0x65, 0xff}}},\n    {{{ -2943,   3328,   3456}, 0, {     0,   1446}, {0x00, 0x4c, 0x65, 0xff}}},\n};\n\n// 0x07004B40 - 0x07004C30\nstatic const Vtx wdw_seg7_vertex_07004B40[] = {\n    {{{ -2357,   3814,  -2249}, 0, {   990,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -511,   3840,   -402}, 0, {     0,  -9434}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2357,   3840,  -2249}, 0, {     0,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -2249,   3814,  -2357}, 0, {   990,    478}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2357,   3814,  -2249}, 0, {   990,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2357,   3840,  -2249}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2249,   3840,  -2357}, 0, {     0,    478}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -511,   3840,   -402}, 0, {   376,    888}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -511,   3814,   -402}, 0, {   376,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -402,   3814,   -511}, 0, {   990,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -402,   3840,   -511}, 0, {   990,    888}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -402,   3840,   -511}, 0, {     0,  -9434}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -402,   3814,   -511}, 0, {   990,  -9434}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2249,   3814,  -2357}, 0, {   990,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2249,   3840,  -2357}, 0, {     0,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07004C30 - 0x07004D20\nstatic const Vtx wdw_seg7_vertex_07004C30[] = {\n    {{{  2304,   1613,   2560}, 0, {  1054,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1024,   1613,   1792}, 0, {     0,    734}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2304,   1613,   1792}, 0, {  1054,    734}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2357,   3814,  -2249}, 0, {   990,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -511,   3814,   -402}, 0, {   990,  -9434}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -511,   3840,   -402}, 0, {     0,  -9434}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -402,   3840,   -511}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2357,   3840,  -2249}, 0, {   786,   1008}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,   3840,   -402}, 0, {   786,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2249,   3840,  -2357}, 0, {     0,   1008}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,   3814,   -402}, 0, { -3200,    112}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2249,   3814,  -2357}, 0, {  7136,   -176}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -402,   3814,   -511}, 0, { -3200,   -176}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2357,   3814,  -2249}, 0, {  7136,    112}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1024,   1613,   2560}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07004D20 - 0x07004E00\nstatic const Vtx wdw_seg7_vertex_07004D20[] = {\n    {{{  3712,   1152,   3649}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3712,   1280,    831}, 0, {   480,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3712,   1280,   3649}, 0, {   480,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3712,   1280,   3712}, 0, {  2524,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3712,   1280,    768}, 0, {  2524,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3072,   1280,    768}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3072,   1280,   3712}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3072,   1152,   3712}, 0, {     0,     70}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3712,   1152,   3712}, 0, {  2524,     70}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3712,   1280,   3712}, 0, {  2524,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3072,   1280,   3712}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3649,   1152,   3712}, 0, {  2270,     70}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3712,      0,   3712}, 0, {  2524,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3712,   1152,    831}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07004E00 - 0x07004EF0\nstatic const Vtx wdw_seg7_vertex_07004E00[] = {\n    {{{  3072,   1152,   3649}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,   1280,   3649}, 0, {   480,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,   1280,    831}, 0, {   480,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,   1152,    831}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,   1152,   3712}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3072,   1152,    768}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3712,   1152,    768}, 0, {  2524,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3712,   1152,   3712}, 0, {  2524,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3712,   1152,    768}, 0, {     0,     70}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3072,   1280,    768}, 0, {  2524,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3712,   1280,    768}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3072,   1152,    768}, 0, {  2524,     70}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3649,      0,    768}, 0, {   222,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3649,   1152,    768}, 0, {   222,     70}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3712,      0,    768}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07004EF0 - 0x07004FF0\nstatic const Vtx wdw_seg7_vertex_07004EF0[] = {\n    {{{  3712,   1280,    831}, 0, {   482,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3712,      0,    768}, 0, {   608,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3712,   1280,    768}, 0, {   608,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3135,   1152,    768}, 0, {  2270,     70}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3135,      0,    768}, 0, {  2270,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3072,      0,    768}, 0, {  2524,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3072,   1152,    768}, 0, {  2524,     70}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3072,   1152,    831}, 0, {   300,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3072,      0,    831}, 0, {   300,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3135,      0,    768}, 0, {   480,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3135,   1152,    768}, 0, {   478,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3072,   1280,    768}, 0, {   224,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,      0,    768}, 0, {   224,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,      0,    831}, 0, {   350,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,   1280,    831}, 0, {   350,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3712,      0,    831}, 0, {   482,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07004FF0 - 0x070050D0\nstatic const Vtx wdw_seg7_vertex_07004FF0[] = {\n    {{{  3649,   1152,    768}, 0, {   480,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3649,      0,    768}, 0, {   480,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3712,      0,    831}, 0, {   658,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3712,   1152,    831}, 0, {   658,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3712,   1280,   3712}, 0, {   352,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3712,      0,   3712}, 0, {   352,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3712,      0,   3649}, 0, {   478,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3712,   1280,   3649}, 0, {   478,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3649,   1152,   3712}, 0, {  2270,     70}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3649,      0,   3712}, 0, {  2270,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3712,      0,   3712}, 0, {  2524,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3072,   1280,   3649}, 0, {   352,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,      0,   3712}, 0, {   480,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,   1280,   3712}, 0, {   480,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070050D0 - 0x070051C0\nstatic const Vtx wdw_seg7_vertex_070050D0[] = {\n    {{{  3712,   1152,   3649}, 0, {   478,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  3649,      0,   3712}, 0, {   658,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  3649,   1152,   3712}, 0, {   658,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  3712,      0,   3649}, 0, {   478,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  3135,   1152,   3712}, 0, {   300,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  3072,      0,   3649}, 0, {   478,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  3072,   1152,   3649}, 0, {   478,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  3135,      0,   3712}, 0, {   300,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  3072,   1152,   3712}, 0, {     0,     70}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3072,      0,   3712}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3135,      0,   3712}, 0, {   222,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3135,   1152,   3712}, 0, {   222,     70}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3072,   1280,   3649}, 0, {   352,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,      0,   3649}, 0, {   352,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,      0,   3712}, 0, {   480,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070051C0 - 0x070052A0\nstatic const Vtx wdw_seg7_vertex_070051C0[] = {\n    {{{  -627,   4143,   1101}, 0, {  1056,  -3330}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{  -593,   4025,   1066}, 0, {  1908,  -3330}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{ -1094,   3731,   1568}, 0, {  1908,   -288}, {0xa6, 0x00, 0xa7, 0xff}}},\n    {{{  -627,   4143,   1101}, 0, {  1056,  -3330}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{ -1094,   3731,   1568}, 0, {  1908,   -288}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{ -1129,   3849,   1602}, 0, {  1056,   -288}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{  -627,   4143,   1101}, 0, {  1056,  -3330}, {0xc4, 0xc6, 0xa2, 0xff}}},\n    {{{ -1129,   3849,   1602}, 0, {  1056,   -288}, {0xc4, 0xc6, 0xa2, 0xff}}},\n    {{{  -740,   4296,   1078}, 0, {   -28,  -3330}, {0xc4, 0xc6, 0xa2, 0xff}}},\n    {{{ -1242,   4003,   1579}, 0, {   -28,   -288}, {0xc4, 0xc6, 0xa2, 0xff}}},\n    {{{  -578,   3820,    961}, 0, {   990,      0}, {0x53, 0x2f, 0xad, 0xff}}},\n    {{{  -759,   3820,    780}, 0, {     0,      0}, {0x53, 0x2f, 0xad, 0xff}}},\n    {{{  -751,   3871,    817}, 0, {    96,    190}, {0x53, 0x2f, 0xad, 0xff}}},\n    {{{  -615,   3871,    953}, 0, {   862,    190}, {0x53, 0x2f, 0xad, 0xff}}},\n};\n\n// 0x070052A0 - 0x07005390\nstatic const Vtx wdw_seg7_vertex_070052A0[] = {\n    {{{  -578,   3820,    961}, 0, {   990,      0}, {0x54, 0x30, 0xae, 0xff}}},\n    {{{  -615,   3871,    953}, 0, {   862,    190}, {0x54, 0x30, 0xae, 0xff}}},\n    {{{  -593,   4025,   1066}, 0, {  1246,    854}, {0x54, 0x30, 0xae, 0xff}}},\n    {{{  -547,   4025,   1111}, 0, {  1500,    854}, {0x51, 0x30, 0xad, 0xff}}},\n    {{{  -578,   3820,    961}, 0, {   990,      0}, {0x51, 0x30, 0xad, 0xff}}},\n    {{{  -593,   4025,   1066}, 0, {  1246,    854}, {0x51, 0x30, 0xad, 0xff}}},\n    {{{  -909,   4025,    749}, 0, {  -540,    854}, {0x52, 0x30, 0xae, 0xff}}},\n    {{{  -864,   4025,    794}, 0, {  -286,    854}, {0x52, 0x30, 0xae, 0xff}}},\n    {{{  -751,   3871,    817}, 0, {    96,    190}, {0x52, 0x30, 0xae, 0xff}}},\n    {{{  -582,   4143,   1146}, 0, {  1502,   1362}, {0x52, 0x2f, 0xac, 0xff}}},\n    {{{  -740,   4296,   1078}, 0, {   862,   2026}, {0x52, 0x2f, 0xac, 0xff}}},\n    {{{  -732,   4348,   1115}, 0, {   990,   2248}, {0x52, 0x2f, 0xac, 0xff}}},\n    {{{  -582,   4143,   1146}, 0, {  1502,   1362}, {0x52, 0x30, 0xae, 0xff}}},\n    {{{  -627,   4143,   1101}, 0, {  1246,   1362}, {0x52, 0x30, 0xae, 0xff}}},\n    {{{  -740,   4296,   1078}, 0, {   862,   2026}, {0x52, 0x30, 0xae, 0xff}}},\n};\n\n// 0x07005390 - 0x07005490\nstatic const Vtx wdw_seg7_vertex_07005390[] = {\n    {{{  -913,   4348,    934}, 0, {     0,   2248}, {0x53, 0x2e, 0xad, 0xff}}},\n    {{{  -732,   4348,   1115}, 0, {   990,   2248}, {0x53, 0x2e, 0xad, 0xff}}},\n    {{{  -740,   4296,   1078}, 0, {   862,   2026}, {0x53, 0x2e, 0xad, 0xff}}},\n    {{{  -876,   4296,    942}, 0, {    96,   2026}, {0x53, 0x2e, 0xad, 0xff}}},\n    {{{  -913,   4348,    934}, 0, {     0,   2248}, {0x54, 0x2f, 0xaf, 0xff}}},\n    {{{  -876,   4296,    942}, 0, {    96,   2026}, {0x54, 0x2f, 0xaf, 0xff}}},\n    {{{  -899,   4143,    829}, 0, {  -286,   1362}, {0x54, 0x2f, 0xaf, 0xff}}},\n    {{{  -944,   4143,    784}, 0, {  -540,   1362}, {0x53, 0x30, 0xad, 0xff}}},\n    {{{  -913,   4348,    934}, 0, {     0,   2248}, {0x53, 0x30, 0xad, 0xff}}},\n    {{{  -899,   4143,    829}, 0, {  -286,   1362}, {0x53, 0x30, 0xad, 0xff}}},\n    {{{  -615,   3871,    953}, 0, {  3068,  -3330}, {0xa1, 0x3a, 0xc4, 0xff}}},\n    {{{ -1117,   3577,   1455}, 0, {  3068,   -288}, {0xa1, 0x3a, 0xc4, 0xff}}},\n    {{{  -593,   4025,   1066}, 0, {  1908,  -3330}, {0xa1, 0x3a, 0xc4, 0xff}}},\n    {{{  -759,   3820,    780}, 0, {     0,      0}, {0x52, 0x2f, 0xad, 0xff}}},\n    {{{  -909,   4025,    749}, 0, {  -540,    854}, {0x52, 0x2f, 0xad, 0xff}}},\n    {{{  -751,   3871,    817}, 0, {    96,    190}, {0x52, 0x2f, 0xad, 0xff}}},\n};\n\n// 0x07005490 - 0x07005580\nstatic const Vtx wdw_seg7_vertex_07005490[] = {\n    {{{  -732,   4348,   1115}, 0, {    12,  -3330}, {0x3c, 0x3a, 0x5e, 0xff}}},\n    {{{ -1234,   4054,   1617}, 0, {    12,   -288}, {0x3c, 0x3a, 0x5e, 0xff}}},\n    {{{ -1084,   3849,   1648}, 0, {  1172,   -288}, {0x3c, 0x3a, 0x5e, 0xff}}},\n    {{{  -582,   4143,   1146}, 0, {  1172,  -3330}, {0x3c, 0x3a, 0x5e, 0xff}}},\n    {{{ -1084,   3849,   1648}, 0, {  1172,   -288}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1049,   3731,   1613}, 0, {  1818,   -288}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -547,   4025,   1111}, 0, {  1818,  -3330}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -582,   4143,   1146}, 0, {  1172,  -3330}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1117,   3577,   1455}, 0, {  3068,   -288}, {0xa1, 0x3a, 0xc4, 0xff}}},\n    {{{ -1094,   3731,   1568}, 0, {  1908,   -288}, {0xa1, 0x3a, 0xc4, 0xff}}},\n    {{{  -593,   4025,   1066}, 0, {  1908,  -3330}, {0xa1, 0x3a, 0xc4, 0xff}}},\n    {{{  -751,   3871,    817}, 0, {  4132,  -3330}, {0xde, 0x75, 0x22, 0xff}}},\n    {{{ -1253,   3577,   1319}, 0, {  4132,   -288}, {0xde, 0x75, 0x22, 0xff}}},\n    {{{  -615,   3871,    953}, 0, {  3068,  -3330}, {0xde, 0x75, 0x22, 0xff}}},\n    {{{ -1117,   3577,   1455}, 0, {  3068,   -288}, {0xde, 0x75, 0x22, 0xff}}},\n};\n\n// 0x07005580 - 0x07005670\nstatic const Vtx wdw_seg7_vertex_07005580[] = {\n    {{{  -547,   4025,   1111}, 0, {  1818,  -3330}, {0x5e, 0xc6, 0x3c, 0xff}}},\n    {{{ -1080,   3526,   1462}, 0, {  3032,   -288}, {0x5e, 0xc6, 0x3c, 0xff}}},\n    {{{  -578,   3820,    961}, 0, {  3032,  -3330}, {0x5e, 0xc6, 0x3c, 0xff}}},\n    {{{ -1049,   3731,   1613}, 0, {  1818,   -288}, {0x5e, 0xc6, 0x3c, 0xff}}},\n    {{{  -578,   3820,    961}, 0, {  3032,  -3330}, {0x22, 0x8b, 0xde, 0xff}}},\n    {{{ -1261,   3526,   1281}, 0, {  4158,   -288}, {0x22, 0x8b, 0xde, 0xff}}},\n    {{{  -759,   3820,    780}, 0, {  4158,  -3330}, {0x22, 0x8b, 0xde, 0xff}}},\n    {{{ -1080,   3526,   1462}, 0, {  3032,   -288}, {0x22, 0x8b, 0xde, 0xff}}},\n    {{{ -1366,   3731,   1296}, 0, {  5266,   -288}, {0x3c, 0x3a, 0x5e, 0xff}}},\n    {{{ -1253,   3577,   1319}, 0, {  4132,   -288}, {0x3c, 0x3a, 0x5e, 0xff}}},\n    {{{  -751,   3871,    817}, 0, {  4132,  -3330}, {0x3c, 0x3a, 0x5e, 0xff}}},\n    {{{  -864,   4025,    794}, 0, {  5266,  -3330}, {0x3c, 0x3a, 0x5e, 0xff}}},\n    {{{  -759,   3820,    780}, 0, {  4158,  -3330}, {0xc4, 0xc6, 0xa1, 0xff}}},\n    {{{ -1261,   3526,   1281}, 0, {  4158,   -288}, {0xc4, 0xc6, 0xa1, 0xff}}},\n    {{{ -1411,   3731,   1251}, 0, {  5352,   -288}, {0xc4, 0xc6, 0xa1, 0xff}}},\n};\n\n// 0x07005670 - 0x07005770\nstatic const Vtx wdw_seg7_vertex_07005670[] = {\n    {{{  -759,   3820,    780}, 0, {  4158,  -3330}, {0xc4, 0xc6, 0xa2, 0xff}}},\n    {{{ -1411,   3731,   1251}, 0, {  5352,   -288}, {0xc4, 0xc6, 0xa2, 0xff}}},\n    {{{  -909,   4025,    749}, 0, {  5352,  -3330}, {0xc4, 0xc6, 0xa2, 0xff}}},\n    {{{ -1378,   4003,   1444}, 0, {  7154,   -288}, {0x5f, 0xc6, 0x3c, 0xff}}},\n    {{{ -1400,   3849,   1331}, 0, {  6086,   -288}, {0x5f, 0xc6, 0x3c, 0xff}}},\n    {{{  -899,   4143,    829}, 0, {  6086,  -3330}, {0x5f, 0xc6, 0x3c, 0xff}}},\n    {{{  -876,   4296,    942}, 0, {  7154,  -3330}, {0x5e, 0xc6, 0x3c, 0xff}}},\n    {{{ -1378,   4003,   1444}, 0, {  7154,   -288}, {0x5e, 0xc6, 0x3c, 0xff}}},\n    {{{  -899,   4143,    829}, 0, {  6086,  -3330}, {0x5e, 0xc6, 0x3c, 0xff}}},\n    {{{ -1400,   3849,   1331}, 0, {  6086,   -288}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1366,   3731,   1296}, 0, {  5266,   -288}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -864,   4025,    794}, 0, {  5266,  -3330}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -899,   4143,    829}, 0, {  6086,  -3330}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1242,   4003,   1579}, 0, {  8148,   -288}, {0x22, 0x8b, 0xde, 0xff}}},\n    {{{ -1378,   4003,   1444}, 0, {  7154,   -288}, {0x22, 0x8b, 0xde, 0xff}}},\n    {{{  -876,   4296,    942}, 0, {  7154,  -3330}, {0x22, 0x8b, 0xde, 0xff}}},\n};\n\n// 0x07005770 - 0x07005870\nstatic const Vtx wdw_seg7_vertex_07005770[] = {\n    {{{  -740,   4296,   1078}, 0, {  8148,  -3330}, {0x22, 0x8b, 0xde, 0xff}}},\n    {{{ -1242,   4003,   1579}, 0, {  8148,   -288}, {0x22, 0x8b, 0xde, 0xff}}},\n    {{{  -876,   4296,    942}, 0, {  7154,  -3330}, {0x22, 0x8b, 0xde, 0xff}}},\n    {{{  -944,   4143,    784}, 0, {  5980,  -3330}, {0xa2, 0x3a, 0xc4, 0xff}}},\n    {{{ -1415,   4054,   1436}, 0, {  7120,   -288}, {0xa2, 0x3a, 0xc4, 0xff}}},\n    {{{  -913,   4348,    934}, 0, {  7120,  -3330}, {0xa2, 0x3a, 0xc4, 0xff}}},\n    {{{  -944,   4143,    784}, 0, {  5980,  -3330}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{ -1411,   3731,   1251}, 0, {  5352,   -288}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{ -1446,   3849,   1285}, 0, {  5980,   -288}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{  -944,   4143,    784}, 0, {  5980,  -3330}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -909,   4025,    749}, 0, {  5352,  -3330}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1411,   3731,   1251}, 0, {  5352,   -288}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1446,   3849,   1285}, 0, {  5980,   -288}, {0xa2, 0x3a, 0xc4, 0xff}}},\n    {{{  -913,   4348,    934}, 0, {  7120,  -3330}, {0xde, 0x75, 0x22, 0xff}}},\n    {{{ -1415,   4054,   1436}, 0, {  7120,   -288}, {0xde, 0x75, 0x22, 0xff}}},\n    {{{ -1234,   4054,   1617}, 0, {  8188,   -288}, {0xde, 0x75, 0x22, 0xff}}},\n};\n\n// 0x07005870 - 0x07005960\nstatic const Vtx wdw_seg7_vertex_07005870[] = {\n    {{{  -913,   4348,    934}, 0, {  7120,  -3330}, {0xde, 0x75, 0x22, 0xff}}},\n    {{{ -1234,   4054,   1617}, 0, {  8188,   -288}, {0xde, 0x75, 0x22, 0xff}}},\n    {{{  -732,   4348,   1115}, 0, {  8188,  -3330}, {0xde, 0x75, 0x22, 0xff}}},\n    {{{ -1242,   4003,   1579}, 0, {   862,   2026}, {0xae, 0xd0, 0x52, 0xff}}},\n    {{{ -1234,   4054,   1617}, 0, {   990,   2248}, {0xae, 0xd0, 0x52, 0xff}}},\n    {{{ -1415,   4054,   1436}, 0, {     0,   2248}, {0xae, 0xd0, 0x52, 0xff}}},\n    {{{ -1378,   4003,   1444}, 0, {    96,   2026}, {0xad, 0xd1, 0x53, 0xff}}},\n    {{{ -1242,   4003,   1579}, 0, {   862,   2026}, {0xad, 0xd1, 0x53, 0xff}}},\n    {{{ -1415,   4054,   1436}, 0, {     0,   2248}, {0xad, 0xd1, 0x53, 0xff}}},\n    {{{ -1400,   3849,   1331}, 0, {  -286,   1362}, {0xae, 0xd0, 0x52, 0xff}}},\n    {{{ -1378,   4003,   1444}, 0, {    96,   2026}, {0xae, 0xd0, 0x52, 0xff}}},\n    {{{ -1446,   3849,   1285}, 0, {  -540,   1362}, {0xae, 0xd0, 0x52, 0xff}}},\n    {{{ -1378,   4003,   1444}, 0, {    96,   2026}, {0xad, 0xd1, 0x52, 0xff}}},\n    {{{ -1415,   4054,   1436}, 0, {     0,   2248}, {0xad, 0xd1, 0x52, 0xff}}},\n    {{{ -1446,   3849,   1285}, 0, {  -540,   1362}, {0xad, 0xd1, 0x52, 0xff}}},\n};\n\n// 0x07005960 - 0x07005A60\nstatic const Vtx wdw_seg7_vertex_07005960[] = {\n    {{{ -1446,   3849,   1285}, 0, {  -540,   1362}, {0xae, 0xd0, 0x52, 0xff}}},\n    {{{ -1411,   3731,   1251}, 0, {  -540,    854}, {0xae, 0xd0, 0x52, 0xff}}},\n    {{{ -1366,   3731,   1296}, 0, {  -286,    854}, {0xae, 0xd0, 0x52, 0xff}}},\n    {{{ -1400,   3849,   1331}, 0, {  -286,   1362}, {0xae, 0xd0, 0x52, 0xff}}},\n    {{{ -1253,   3577,   1319}, 0, {    96,    190}, {0xae, 0xd0, 0x52, 0xff}}},\n    {{{ -1253,   3577,   1319}, 0, {    96,    190}, {0xad, 0xd0, 0x52, 0xff}}},\n    {{{ -1411,   3731,   1251}, 0, {  -540,    854}, {0xad, 0xd0, 0x52, 0xff}}},\n    {{{ -1261,   3526,   1281}, 0, {     0,      0}, {0xad, 0xd0, 0x52, 0xff}}},\n    {{{ -1117,   3577,   1455}, 0, {   862,    190}, {0xae, 0xd0, 0x52, 0xff}}},\n    {{{ -1261,   3526,   1281}, 0, {     0,      0}, {0xae, 0xd0, 0x52, 0xff}}},\n    {{{ -1080,   3526,   1462}, 0, {   990,      0}, {0xae, 0xd0, 0x52, 0xff}}},\n    {{{ -1117,   3577,   1455}, 0, {   862,    190}, {0xae, 0xd0, 0x53, 0xff}}},\n    {{{ -1080,   3526,   1462}, 0, {   990,      0}, {0xae, 0xd0, 0x53, 0xff}}},\n    {{{ -1049,   3731,   1613}, 0, {  1502,    854}, {0xae, 0xd0, 0x53, 0xff}}},\n    {{{ -1094,   3731,   1568}, 0, {  1246,    854}, {0xae, 0xd0, 0x52, 0xff}}},\n    {{{ -1049,   3731,   1613}, 0, {  1502,    854}, {0xae, 0xd0, 0x52, 0xff}}},\n};\n\n// 0x07005A60 - 0x07005B60\nstatic const Vtx wdw_seg7_vertex_07005A60[] = {\n    {{{ -1234,   4054,   1617}, 0, {   990,   2248}, {0xad, 0xd0, 0x52, 0xff}}},\n    {{{ -1242,   4003,   1579}, 0, {   862,   2026}, {0xad, 0xd0, 0x52, 0xff}}},\n    {{{ -1129,   3849,   1602}, 0, {  1246,   1362}, {0xad, 0xd0, 0x52, 0xff}}},\n    {{{ -1234,   4054,   1617}, 0, {   990,   2248}, {0xad, 0xd0, 0x51, 0xff}}},\n    {{{ -1129,   3849,   1602}, 0, {  1246,   1362}, {0xad, 0xd0, 0x51, 0xff}}},\n    {{{ -1084,   3849,   1648}, 0, {  1502,   1362}, {0xad, 0xd0, 0x51, 0xff}}},\n    {{{ -1129,   3849,   1602}, 0, {  1246,   1362}, {0xae, 0xd0, 0x52, 0xff}}},\n    {{{ -1094,   3731,   1568}, 0, {  1246,    854}, {0xae, 0xd0, 0x52, 0xff}}},\n    {{{ -1049,   3731,   1613}, 0, {  1502,    854}, {0xae, 0xd0, 0x52, 0xff}}},\n    {{{ -1129,   3849,   1602}, 0, {  1246,   1362}, {0xad, 0xcf, 0x51, 0xff}}},\n    {{{ -1049,   3731,   1613}, 0, {  1502,    854}, {0xad, 0xcf, 0x51, 0xff}}},\n    {{{ -1084,   3849,   1648}, 0, {  1502,   1362}, {0xad, 0xcf, 0x51, 0xff}}},\n    {{{  -899,   4143,    829}, 0, {  -286,   1362}, {0x52, 0x31, 0xae, 0xff}}},\n    {{{  -864,   4025,    794}, 0, {  -286,    854}, {0x52, 0x31, 0xae, 0xff}}},\n    {{{  -909,   4025,    749}, 0, {  -540,    854}, {0x52, 0x31, 0xae, 0xff}}},\n    {{{  -944,   4143,    784}, 0, {  -540,   1362}, {0x52, 0x31, 0xae, 0xff}}},\n};\n\n// 0x07005B60 - 0x07005C60\nstatic const Vtx wdw_seg7_vertex_07005B60[] = {\n    {{{   512,      0,   3840}, 0, { -1052,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,    640,   3328}, 0, {   990,  -1564}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,      0,   3328}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -582,   4143,   1146}, 0, {  1502,   1362}, {0x51, 0x31, 0xad, 0xff}}},\n    {{{  -547,   4025,   1111}, 0, {  1502,    854}, {0x51, 0x31, 0xad, 0xff}}},\n    {{{  -593,   4025,   1066}, 0, {  1246,    854}, {0x51, 0x31, 0xad, 0xff}}},\n    {{{  -582,   4143,   1146}, 0, {  1502,   1362}, {0x52, 0x30, 0xae, 0xff}}},\n    {{{  -593,   4025,   1066}, 0, {  1246,    854}, {0x52, 0x30, 0xae, 0xff}}},\n    {{{  -627,   4143,   1101}, 0, {  1246,   1362}, {0x52, 0x30, 0xae, 0xff}}},\n    {{{   768,    896,   3584}, 0, {  1502,   1500}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,    896,   3840}, 0, {   480,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   768,    896,   3840}, 0, {   480,   1500}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,    896,   3584}, 0, {  1502,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,    640,   3584}, 0, {   990,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   768,    896,   3584}, 0, {     0,    478}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   768,    640,   3584}, 0, {     0,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07005C60 - 0x07005D60\nstatic const Vtx wdw_seg7_vertex_07005C60[] = {\n    {{{   512,    640,   3584}, 0, {   990,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   512,    896,   3584}, 0, {   990,    478}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   768,    896,   3584}, 0, {     0,    478}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   768,      0,   3584}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   768,    896,   3840}, 0, { -1052,  -2586}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   768,      0,   3840}, 0, { -1052,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,      0,   3840}, 0, { -1052,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,    896,   3584}, 0, {     0,  -2586}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,    640,   3584}, 0, {     0,  -1564}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,    896,   3840}, 0, { -1052,  -2586}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,    640,   3328}, 0, {   990,  -1564}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   768,      0,   3840}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   768,    896,   3840}, 0, {   990,  -2586}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   512,    896,   3840}, 0, {  2012,  -2586}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   512,      0,   3840}, 0, {  2012,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   768,    896,   3584}, 0, {     0,  -2586}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07005D60 - 0x07005E40\nstatic const Vtx wdw_seg7_vertex_07005D60[] = {\n    {{{   768,    640,   3328}, 0, {  2524,   1500}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,    640,   3584}, 0, {  1502,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   768,    640,   3584}, 0, {  1502,   1500}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,    640,   3328}, 0, {  2524,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,      0,   3328}, 0, {  2012,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1024,    384,   3328}, 0, {     0,   -542}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1024,      0,   3328}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   768,    384,   3328}, 0, {   990,   -542}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   768,    640,   3328}, 0, {   990,  -1564}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   512,    640,   3328}, 0, {  2012,  -1564}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   768,    384,   3328}, 0, {   990,   -542}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   768,    640,   3584}, 0, {     0,  -1564}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   768,    384,   3584}, 0, {     0,   -542}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   768,    640,   3328}, 0, {   990,  -1564}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07005E40 - 0x07005F30\nstatic const Vtx wdw_seg7_vertex_07005E40[] = {\n    {{{  3584,    154,   2662}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3072,    154,   3174}, 0, {  4056,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3584,    154,   3174}, 0, {  4056,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,    384,   3328}, 0, {  2524,   2522}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   768,    384,   3584}, 0, {  1502,   1500}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,    384,   3584}, 0, {  1502,   2522}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   768,    384,   3328}, 0, {  2524,   1500}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,      0,   3584}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1024,    384,   3584}, 0, {     0,   -542}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   768,    384,   3584}, 0, {   990,   -542}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   768,      0,   3584}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1024,      0,   3328}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1024,    384,   3584}, 0, {     0,   -542}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1024,      0,   3584}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1024,    384,   3328}, 0, {   990,   -542}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07005F30 - 0x07006020\nstatic const Vtx wdw_seg7_vertex_07005F30[] = {\n    {{{  3584,      0,   3174}, 0, {  3374,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3584,    154,   3174}, 0, {  3374,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3072,    154,   3174}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3584,    154,   2662}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3072,    154,   2662}, 0, {     0,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3072,    154,   3174}, 0, {  4056,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3072,      0,   2662}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3072,    154,   2662}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3584,    154,   2662}, 0, {  3374,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3584,      0,   2662}, 0, {  3374,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3072,      0,   3174}, 0, {  2352,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,    154,   2662}, 0, { -1052,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,      0,   2662}, 0, { -1052,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,    154,   3174}, 0, {  2352,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3072,      0,   3174}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07006020 - 0x07006110\nstatic const Vtx wdw_seg7_vertex_07006020[] = {\n    {{{  1280,   1741,   2560}, 0, { -1052,  -2484}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1024,   1613,   2560}, 0, { -1562,  -2230}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2304,   1613,   2560}, 0, {   990,  -2230}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3584,      0,   2662}, 0, { -1052,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3584,    154,   3174}, 0, {  2352,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3584,      0,   3174}, 0, {  2352,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3584,    154,   2662}, 0, { -1052,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2048,   1741,   1792}, 0, {  1502,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,   1741,   1792}, 0, {     0,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,   1741,   2560}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2048,   1741,   2560}, 0, {  1502,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2048,   1741,   2560}, 0, {  -402,    470}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{  2304,   1613,   2560}, 0, {  -402,    990}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{  2304,   1613,   1792}, 0, {   990,    990}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{  2048,   1741,   1792}, 0, {   990,    470}, {0x38, 0x71, 0x00, 0xff}}},\n};\n\n// 0x07006110 - 0x07006210\nstatic const Vtx wdw_seg7_vertex_07006110[] = {\n    {{{  2304,   1613,   2560}, 0, {   990,  -2230}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2304,      0,   2560}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2304,      0,   1792}, 0, {  -542,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1280,   1741,   2560}, 0, { -1052,  -2484}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2304,   1613,   2560}, 0, {   990,  -2230}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,   1741,   2560}, 0, {   480,  -2484}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,   1741,   1792}, 0, {   480,  -2484}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1024,   1613,   1792}, 0, { -1562,  -2230}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1280,   1741,   1792}, 0, { -1052,  -2484}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2304,   1613,   1792}, 0, {   990,  -2230}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1024,   1613,   1792}, 0, {  -402,    990}, {0xc8, 0x71, 0x00, 0xff}}},\n    {{{  1024,   1613,   2560}, 0, {   990,    990}, {0xc8, 0x71, 0x00, 0xff}}},\n    {{{  1280,   1741,   2560}, 0, {   990,    470}, {0xc8, 0x71, 0x00, 0xff}}},\n    {{{  1280,   1741,   1792}, 0, {  -402,    470}, {0xc8, 0x71, 0x00, 0xff}}},\n    {{{  2304,   1613,   1792}, 0, {  -542,  -2230}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1024,      0,   1792}, 0, { -1564,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07006210 - 0x070062C0\nstatic const Vtx wdw_seg7_vertex_07006210[] = {\n    {{{  2304,   1613,   1792}, 0, {   990,  -2230}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2304,      0,   1792}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1024,      0,   1792}, 0, { -1564,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1024,   1613,   1792}, 0, {  -542,  -2230}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,      0,   1792}, 0, {  -542,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,      0,   2560}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,   1613,   2560}, 0, {   990,  -2230}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,   1613,   2560}, 0, { -1562,  -2230}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1024,      0,   2560}, 0, { -1564,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2304,      0,   2560}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2304,   1613,   2560}, 0, {   990,  -2230}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070062C0 - 0x070063B0\nstatic const Vtx wdw_seg7_vertex_070062C0[] = {\n    {{{ -1023,   2176,   2048}, 0, {     0,  -6164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,   2176,   2432}, 0, {     0,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,   2176,   2432}, 0, {  4056,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,   2048,   2048}, 0, {  2524,   4054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1023,   2048,   2432}, 0, {   480,   2522}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1023,   2048,   2048}, 0, {   480,   4054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -511,   2048,   2432}, 0, {  2524,   2522}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -511,   2048,   2944}, 0, {  2524,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1023,   2048,   2688}, 0, {   480,   1500}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -511,   2048,   2688}, 0, {  2524,   1500}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1023,   2048,   2944}, 0, {   480,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -511,   2304,   2688}, 0, {  4056,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,   2304,   2944}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,   2304,   2944}, 0, {  4056,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,   2304,   2688}, 0, {     0,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070063B0 - 0x070064A0\nstatic const Vtx wdw_seg7_vertex_070063B0[] = {\n    {{{  1723,   3968,   -171}, 0, { -2584,   1498}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1211,   3968,    340}, 0, {  -540,   3542}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1211,   3968,   -171}, 0, {  -540,   1498}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1023,   2176,   2048}, 0, {     0,  -6164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,   2176,   2432}, 0, {  4056,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,   2176,   2048}, 0, {  4056,  -6164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,   3200,   3328}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,   3200,   3840}, 0, {  4056,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,   3200,   3328}, 0, {  4056,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,   3200,   3840}, 0, {     0,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,   3072,   3328}, 0, { -2584,   1498}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -255,   3072,   3840}, 0, {  -540,   3542}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -255,   3072,   3328}, 0, {  -540,   1498}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   256,   3072,   3840}, 0, { -2584,   3542}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1723,   3968,    340}, 0, { -2584,   3542}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x070064A0 - 0x07006580\nstatic const Vtx wdw_seg7_vertex_070064A0[] = {\n    {{{ -3839,   4352,  -4351}, 0, {     0,      0}, {0x00, 0x46, 0x69, 0xff}}},\n    {{{ -3839,   3584,  -3839}, 0, {     0,    978}, {0x00, 0x46, 0x69, 0xff}}},\n    {{{  -255,   3584,  -3839}, 0, {  3890,    978}, {0x00, 0x46, 0x69, 0xff}}},\n    {{{  1211,   4096,   -171}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1211,   4096,    340}, 0, {     0,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1723,   4096,    340}, 0, {  4056,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1723,   4096,   -171}, 0, {  4056,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3839,   4352,  -2303}, 0, {  -370,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3839,   3584,  -3839}, 0, {  1672,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3839,   4352,  -4351}, 0, {  2352,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3839,   3584,  -2303}, 0, {  -370,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3839,   3072,   -511}, 0, { -2756,   1670}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3839,   3072,  -2303}, 0, {  -370,   1670}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -255,   4352,  -4351}, 0, {  3890,      0}, {0x00, 0x46, 0x69, 0xff}}},\n};\n\n// 0x07006580 - 0x070065B0\nstatic const Vtx wdw_seg7_vertex_07006580[] = {\n    {{{  -255,   4352,  -4351}, 0, {  3890,      0}, {0x07, 0x46, 0x69, 0xff}}},\n    {{{  -255,   3584,  -3839}, 0, {  3890,    978}, {0x07, 0x46, 0x69, 0xff}}},\n    {{{  4608,   3072,  -3839}, 0, {  9214,   1676}, {0x07, 0x46, 0x69, 0xff}}},\n};\n\n// 0x070065B0 - 0x070066A0\nstatic const Vtx wdw_seg7_vertex_070065B0[] = {\n    {{{  3584,   -827,  -2854}, 0, {  9166,      0}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{ -2815,   -550,  -3131}, 0, {  8144,   8482}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{  3584,   -550,  -3131}, 0, {  8144,      0}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{  3584,   -827,  -3800}, 0, {  6100,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2815,  -1219,  -3800}, 0, {  5078,   8482}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3584,  -1219,  -3800}, 0, {  5078,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3584,  -1219,  -3800}, 0, {  5078,      0}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -2815,  -1496,  -3523}, 0, {  4056,   8482}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{  3584,  -1496,  -3523}, 0, {  4056,      0}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -2815,  -1219,  -3800}, 0, {  5078,   8482}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -2815,   -827,  -3800}, 0, {  6100,   8482}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3584,  -1496,  -3523}, 0, {  4056,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2815,  -1496,  -3523}, 0, {  4056,   8482}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2815,  -1496,  -3131}, 0, {  3034,   8482}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3584,  -1496,  -3131}, 0, {  3034,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070066A0 - 0x07006790\nstatic const Vtx wdw_seg7_vertex_070066A0[] = {\n    {{{  3584,  -1496,  -3131}, 0, {  3034,      0}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{ -2815,  -1496,  -3131}, 0, {  3034,   8482}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{ -2815,  -1219,  -2854}, 0, {  2012,   8482}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{  3584,  -1219,  -2854}, 0, {  2012,      0}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{  3584,  -1219,  -2854}, 0, {  2012,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2815,  -1219,  -2854}, 0, {  2012,   8482}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2815,   -827,  -2854}, 0, {   990,   8482}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3584,   -827,  -2854}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3584,   -550,  -3131}, 0, {  8144,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2815,   -550,  -3523}, 0, {  7122,   8482}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3584,   -550,  -3523}, 0, {  7122,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3584,   -827,  -2854}, 0, {  9166,      0}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{ -2815,   -827,  -2854}, 0, {  9166,   8482}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{ -2815,   -550,  -3131}, 0, {  8144,   8482}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{ -2815,   -550,  -3131}, 0, {  8144,   8482}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07006790 - 0x07006880\nstatic const Vtx wdw_seg7_vertex_07006790[] = {\n    {{{  3584,   -550,  -3523}, 0, {  7122,      0}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{ -2815,   -550,  -3523}, 0, {  7122,   8482}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{ -2815,   -827,  -3800}, 0, {  6100,   8482}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{  3584,   -827,  -3800}, 0, {  6100,      0}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{ -3131,  -1496,  -2815}, 0, {   990,    990}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{ -2854,  -1219,  -2303}, 0, {  2012,      0}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{ -2854,  -1219,  -2815}, 0, {  2012,    990}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{ -3131,  -1496,  -2303}, 0, {   990,      0}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{ -2854,  -1219,  -2815}, 0, {  2012,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2854,  -1219,  -2303}, 0, {  2012,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2854,   -827,  -2303}, 0, {  3034,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3523,   -550,  -2815}, 0, {  5078,    990}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{ -3523,   -550,  -2303}, 0, {  5078,      0}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{ -3800,   -827,  -2303}, 0, {  6100,      0}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{ -2854,   -827,  -2815}, 0, {  3034,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07006880 - 0x07006970\nstatic const Vtx wdw_seg7_vertex_07006880[] = {\n    {{{ -3523,  -1496,  -2815}, 0, {  8144,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3523,  -1496,  -2303}, 0, {  8144,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3131,  -1496,  -2303}, 0, {  9166,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3800,  -1219,  -2815}, 0, {  7122,    990}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{ -3523,  -1496,  -2303}, 0, {  8144,      0}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{ -3523,  -1496,  -2815}, 0, {  8144,    990}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{ -3131,  -1496,  -2815}, 0, {  9166,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3800,  -1219,  -2303}, 0, {  7122,      0}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{ -3800,   -827,  -2815}, 0, {  6100,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3800,  -1219,  -2303}, 0, {  7122,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3800,  -1219,  -2815}, 0, {  7122,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3800,   -827,  -2303}, 0, {  6100,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3523,   -550,  -2815}, 0, {  5078,    990}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{ -3800,   -827,  -2303}, 0, {  6100,      0}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{ -3800,   -827,  -2815}, 0, {  6100,    990}, {0x59, 0xa7, 0x00, 0xff}}},\n};\n\n// 0x07006970 - 0x07006A50\nstatic const Vtx wdw_seg7_vertex_07006970[] = {\n    {{{ -3131,   -550,  -2815}, 0, {  4056,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3523,   -550,  -2303}, 0, {  5078,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3523,   -550,  -2815}, 0, {  5078,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3131,   -550,  -2303}, 0, {  4056,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2854,   -827,  -2815}, 0, {  3034,    990}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{ -3131,   -550,  -2303}, 0, {  4056,      0}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{ -3131,   -550,  -2815}, 0, {  4056,    990}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{ -2854,   -827,  -2303}, 0, {  3034,      0}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  3900,      0,  -2854}, 0, {  2522,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  3623,   -511,  -3131}, 0, {  3544,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  3623,      0,  -3131}, 0, {  3544,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  4292,      0,  -3800}, 0, {  6610,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  4569,   -511,  -3523}, 0, {  7632,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  4569,      0,  -3523}, 0, {  7632,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07006A50 - 0x07006B40\nstatic const Vtx wdw_seg7_vertex_07006A50[] = {\n    {{{  3900,      0,  -3800}, 0, {  5588,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4292,   -511,  -3800}, 0, {  6610,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4292,      0,  -3800}, 0, {  6610,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4292,      0,  -3800}, 0, {  6610,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  4292,   -511,  -3800}, 0, {  6610,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  4569,   -511,  -3523}, 0, {  7632,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  3900,   -511,  -3800}, 0, {  5588,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4569,      0,  -3523}, 0, {  7632,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4569,   -511,  -3523}, 0, {  7632,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4569,   -511,  -3131}, 0, {  8656,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4569,      0,  -3131}, 0, {  8656,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3623,      0,  -3523}, 0, {  4566,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3900,   -511,  -3800}, 0, {  5588,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3900,      0,  -3800}, 0, {  5588,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3623,   -511,  -3523}, 0, {  4566,      0}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07006B40 - 0x07006C20\nstatic const Vtx wdw_seg7_vertex_07006B40[] = {\n    {{{  3623,      0,  -3131}, 0, {  3544,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3623,   -511,  -3523}, 0, {  4566,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3623,      0,  -3523}, 0, {  4566,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3623,   -511,  -3131}, 0, {  3544,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3833,   -760,  -2854}, 0, {  2160,    448}, {0x38, 0xc5, 0xa0, 0xff}}},\n    {{{  3603,   -530,  -3131}, 0, {  3434,    448}, {0x38, 0xc5, 0xa0, 0xff}}},\n    {{{  3623,   -511,  -3131}, 0, {  3434,    506}, {0x38, 0xc5, 0xa0, 0xff}}},\n    {{{  3900,      0,  -2854}, 0, {  2522,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  3900,   -511,  -2854}, 0, {  2522,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  3623,   -511,  -3131}, 0, {  3544,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  4292,      0,  -2854}, 0, {  1500,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3900,   -511,  -2854}, 0, {  2522,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3900,      0,  -2854}, 0, {  2522,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4292,   -511,  -2854}, 0, {  1500,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07006C20 - 0x07006D10\nstatic const Vtx wdw_seg7_vertex_07006C20[] = {\n    {{{  4569,      0,  -3131}, 0, {   478,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  4292,   -511,  -2854}, 0, {  1500,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  4292,      0,  -2854}, 0, {  1500,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  4569,   -511,  -3131}, 0, {   478,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  3623,   -511,  -3131}, 0, {  3434,    506}, {0x57, 0xa4, 0x00, 0xff}}},\n    {{{  3603,   -530,  -3523}, 0, {  4678,    448}, {0x57, 0xa4, 0x00, 0xff}}},\n    {{{  3623,   -511,  -3523}, 0, {  4678,    506}, {0x57, 0xa4, 0x00, 0xff}}},\n    {{{  3603,   -530,  -3131}, 0, {  3434,    448}, {0x57, 0xa4, 0x00, 0xff}}},\n    {{{  3900,   -511,  -2854}, 0, {  2490,    912}, {0x58, 0xe9, 0xa8, 0xff}}},\n    {{{  3833,   -760,  -2854}, 0, {  2160,    448}, {0x58, 0xe9, 0xa8, 0xff}}},\n    {{{  3623,   -511,  -3131}, 0, {  3434,    506}, {0x58, 0xe9, 0xa8, 0xff}}},\n    {{{  3603,   -530,  -3131}, 0, {  3434,    448}, {0x5c, 0xa9, 0x00, 0xff}}},\n    {{{  3584,   -550,  -3523}, 0, {  4678,    390}, {0x5c, 0xa9, 0x00, 0xff}}},\n    {{{  3603,   -530,  -3523}, 0, {  4678,    448}, {0x5c, 0xa9, 0x00, 0xff}}},\n    {{{  3584,   -550,  -3131}, 0, {  3434,    390}, {0x5c, 0xa9, 0x00, 0xff}}},\n};\n\n// 0x07006D10 - 0x07006E00\nstatic const Vtx wdw_seg7_vertex_07006D10[] = {\n    {{{  3833,   -760,  -2854}, 0, {  2160,    448}, {0x3b, 0xc8, 0xa0, 0xff}}},\n    {{{  3584,   -550,  -3131}, 0, {  3434,    390}, {0x3b, 0xc8, 0xa0, 0xff}}},\n    {{{  3603,   -530,  -3131}, 0, {  3434,    448}, {0x3b, 0xc8, 0xa0, 0xff}}},\n    {{{  3623,   -511,  -3523}, 0, {  4678,    506}, {0x38, 0xc5, 0x60, 0xff}}},\n    {{{  3603,   -530,  -3523}, 0, {  4678,    448}, {0x38, 0xc5, 0x60, 0xff}}},\n    {{{  3833,   -760,  -3800}, 0, {  5952,    448}, {0x38, 0xc5, 0x60, 0xff}}},\n    {{{  3603,   -530,  -3523}, 0, {  4678,    448}, {0x3b, 0xc8, 0x60, 0xff}}},\n    {{{  3584,   -550,  -3523}, 0, {  4678,    390}, {0x3b, 0xc8, 0x60, 0xff}}},\n    {{{  3833,   -760,  -3800}, 0, {  5952,    448}, {0x3b, 0xc8, 0x60, 0xff}}},\n    {{{  3623,   -511,  -3523}, 0, {  4678,    506}, {0x58, 0xe9, 0x58, 0xff}}},\n    {{{  3833,   -760,  -3800}, 0, {  5952,    448}, {0x58, 0xe9, 0x58, 0xff}}},\n    {{{  3900,   -511,  -3800}, 0, {  5622,    912}, {0x58, 0xe9, 0x58, 0xff}}},\n    {{{  3833,   -760,  -2854}, 0, {  2160,    448}, {0x17, 0xa8, 0xa8, 0xff}}},\n    {{{  3584,   -827,  -2854}, 0, {  2490,    -16}, {0x17, 0xa8, 0xa8, 0xff}}},\n    {{{  3584,   -550,  -3131}, 0, {  3434,    390}, {0x17, 0xa8, 0xa8, 0xff}}},\n};\n\n// 0x07006E00 - 0x07006EF0\nstatic const Vtx wdw_seg7_vertex_07006E00[] = {\n    {{{  3584,   -550,  -3523}, 0, {  4678,    390}, {0x17, 0xa8, 0x58, 0xff}}},\n    {{{  3584,   -827,  -3800}, 0, {  5622,    -16}, {0x17, 0xa8, 0x58, 0xff}}},\n    {{{  3833,   -760,  -3800}, 0, {  5952,    448}, {0x17, 0xa8, 0x58, 0xff}}},\n    {{{  3833,   -760,  -3800}, 0, {  5952,    448}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3584,  -1219,  -3800}, 0, {  6358,   -592}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4028,   -955,  -3800}, 0, {  6674,    448}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3584,   -827,  -3800}, 0, {  5622,    -16}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3900,   -511,  -3800}, 0, {  5622,    912}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4292,   -511,  -3800}, 0, {  6358,   1486}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4028,   -955,  -3800}, 0, {  6674,    448}, {0xb3, 0x23, 0x5e, 0xff}}},\n    {{{  4258,  -1185,  -3523}, 0, {  7696,    448}, {0xb3, 0x23, 0x5e, 0xff}}},\n    {{{  4569,   -511,  -3523}, 0, {  7372,   1894}, {0xb3, 0x23, 0x5e, 0xff}}},\n    {{{  4028,   -955,  -3800}, 0, {  6674,    448}, {0xcf, 0x52, 0x52, 0xff}}},\n    {{{  3584,  -1219,  -3800}, 0, {  6358,   -592}, {0xcf, 0x52, 0x52, 0xff}}},\n    {{{  3584,  -1496,  -3523}, 0, {  7372,  -1000}, {0xcf, 0x52, 0x52, 0xff}}},\n};\n\n// 0x07006EF0 - 0x07006FD0\nstatic const Vtx wdw_seg7_vertex_07006EF0[] = {\n    {{{  4292,   -511,  -3800}, 0, {  6358,   1486}, {0xae, 0x31, 0x52, 0xff}}},\n    {{{  4028,   -955,  -3800}, 0, {  6674,    448}, {0xae, 0x31, 0x52, 0xff}}},\n    {{{  4569,   -511,  -3523}, 0, {  7372,   1894}, {0xae, 0x31, 0x52, 0xff}}},\n    {{{  4028,   -955,  -3800}, 0, {  6674,    448}, {0xdd, 0x4d, 0x5e, 0xff}}},\n    {{{  3584,  -1496,  -3523}, 0, {  7372,  -1000}, {0xdd, 0x4d, 0x5e, 0xff}}},\n    {{{  4258,  -1185,  -3523}, 0, {  7696,    448}, {0xdd, 0x4d, 0x5e, 0xff}}},\n    {{{  4258,  -1185,  -3523}, 0, {  7696,    448}, {0xcb, 0x73, 0x00, 0xff}}},\n    {{{  3584,  -1496,  -3131}, 0, {  8916,  -1000}, {0xcb, 0x73, 0x00, 0xff}}},\n    {{{  4258,  -1185,  -3131}, 0, {  8592,    448}, {0xcb, 0x73, 0x00, 0xff}}},\n    {{{  3584,  -1496,  -3523}, 0, {  7372,  -1000}, {0xcb, 0x73, 0x00, 0xff}}},\n    {{{  4569,   -511,  -3131}, 0, {  8916,   1894}, {0x8d, 0x35, 0x00, 0xff}}},\n    {{{  4258,  -1185,  -3523}, 0, {  7696,    448}, {0x8d, 0x35, 0x00, 0xff}}},\n    {{{  4258,  -1185,  -3131}, 0, {  8592,    448}, {0x8d, 0x35, 0x00, 0xff}}},\n    {{{  4569,   -511,  -3523}, 0, {  7372,   1894}, {0x8d, 0x35, 0x00, 0xff}}},\n};\n\n// 0x07006FD0 - 0x070070D0\nstatic const Vtx wdw_seg7_vertex_07006FD0[] = {\n    {{{  4569,   -511,  -3131}, 0, {   740,   1894}, {0xae, 0x31, 0xae, 0xff}}},\n    {{{  4028,   -955,  -2854}, 0, {  1438,    448}, {0xae, 0x31, 0xae, 0xff}}},\n    {{{  4292,   -511,  -2854}, 0, {  1754,   1486}, {0xae, 0x31, 0xae, 0xff}}},\n    {{{  4569,   -511,  -3131}, 0, {   740,   1894}, {0xb3, 0x23, 0xa2, 0xff}}},\n    {{{  4258,  -1185,  -3131}, 0, {   416,    448}, {0xb3, 0x23, 0xa2, 0xff}}},\n    {{{  4028,   -955,  -2854}, 0, {  1438,    448}, {0xb3, 0x23, 0xa2, 0xff}}},\n    {{{  4258,  -1185,  -3131}, 0, {   416,    448}, {0xdd, 0x4d, 0xa2, 0xff}}},\n    {{{  3584,  -1496,  -3131}, 0, {   740,  -1000}, {0xdd, 0x4d, 0xa2, 0xff}}},\n    {{{  4028,   -955,  -2854}, 0, {  1438,    448}, {0xdd, 0x4d, 0xa2, 0xff}}},\n    {{{  4292,   -511,  -2854}, 0, {  1754,   1486}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4028,   -955,  -2854}, 0, {  1438,    448}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3833,   -760,  -2854}, 0, {  2160,    448}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3584,  -1496,  -3131}, 0, {   740,  -1000}, {0xcf, 0x52, 0xae, 0xff}}},\n    {{{  3584,  -1219,  -2854}, 0, {  1754,   -592}, {0xcf, 0x52, 0xae, 0xff}}},\n    {{{  4028,   -955,  -2854}, 0, {  1438,    448}, {0xcf, 0x52, 0xae, 0xff}}},\n    {{{  3584,   -827,  -2854}, 0, {  2490,    -16}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070070D0 - 0x070071D0\nstatic const Vtx wdw_seg7_vertex_070070D0[] = {\n    {{{  4028,   -955,  -2854}, 0, {  1438,    448}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3584,  -1219,  -2854}, 0, {  1754,   -592}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3584,   -827,  -2854}, 0, {  2490,    -16}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3900,   -511,  -2854}, 0, {  2490,    912}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4292,   -511,  -2854}, 0, {  1754,   1486}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3833,   -760,  -2854}, 0, {  2160,    448}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2854,  -1219,  -2815}, 0, {  1446,    814}, {0xa9, 0x00, 0xa4, 0xff}}},\n    {{{ -2834,   -827,  -2834}, 0, {  2578,    872}, {0xa9, 0x00, 0xa4, 0xff}}},\n    {{{ -2834,  -1219,  -2834}, 0, {  1446,    872}, {0xa9, 0x00, 0xa4, 0xff}}},\n    {{{ -2854,   -827,  -2815}, 0, {  2578,    814}, {0xa9, 0x00, 0xa4, 0xff}}},\n    {{{ -2854,  -1219,  -2815}, 0, {  1446,    814}, {0xc3, 0x59, 0xbf, 0xff}}},\n    {{{ -2834,  -1219,  -2834}, 0, {  1446,    872}, {0xc3, 0x59, 0xbf, 0xff}}},\n    {{{ -3030,  -1496,  -3030}, 0, {   354,    872}, {0xc3, 0x59, 0xbf, 0xff}}},\n    {{{ -3131,  -1496,  -2815}, 0, {   546,    406}, {0xab, 0x55, 0xd8, 0xff}}},\n    {{{ -2854,  -1219,  -2815}, 0, {  1446,    814}, {0xab, 0x55, 0xd8, 0xff}}},\n    {{{ -3030,  -1496,  -3030}, 0, {   354,    872}, {0xab, 0x55, 0xd8, 0xff}}},\n};\n\n// 0x070071D0 - 0x070072D0\nstatic const Vtx wdw_seg7_vertex_070071D0[] = {\n    {{{ -3308,  -1496,  -3308}, 0, {  7516,    872}, {0x25, 0x55, 0x55, 0xff}}},\n    {{{ -2815,  -1496,  -3523}, 0, {  8002,   1910}, {0x25, 0x55, 0x55, 0xff}}},\n    {{{ -2815,  -1219,  -3800}, 0, {  6972,   2318}, {0x25, 0x55, 0x55, 0xff}}},\n    {{{ -2854,   -827,  -2815}, 0, {  2578,    814}, {0xc3, 0xa7, 0xbf, 0xff}}},\n    {{{ -3030,   -550,  -3030}, 0, {  3670,    872}, {0xc3, 0xa7, 0xbf, 0xff}}},\n    {{{ -2834,   -827,  -2834}, 0, {  2578,    872}, {0xc3, 0xa7, 0xbf, 0xff}}},\n    {{{ -2854,   -827,  -2815}, 0, {  2578,    814}, {0xab, 0xab, 0xd8, 0xff}}},\n    {{{ -3131,   -550,  -2815}, 0, {  3478,    406}, {0xab, 0xab, 0xd8, 0xff}}},\n    {{{ -3030,   -550,  -3030}, 0, {  3670,    872}, {0xab, 0xab, 0xd8, 0xff}}},\n    {{{ -2834,   -827,  -2834}, 0, {  2578,    872}, {0xa4, 0x00, 0xa9, 0xff}}},\n    {{{ -2815,  -1219,  -2854}, 0, {  1446,    928}, {0xa4, 0x00, 0xa9, 0xff}}},\n    {{{ -2834,  -1219,  -2834}, 0, {  1446,    872}, {0xa4, 0x00, 0xa9, 0xff}}},\n    {{{ -2815,   -827,  -2854}, 0, {  2578,    928}, {0xa4, 0x00, 0xa9, 0xff}}},\n    {{{ -2815,   -827,  -2854}, 0, {  2578,    928}, {0xd8, 0xab, 0xab, 0xff}}},\n    {{{ -3030,   -550,  -3030}, 0, {  3670,    872}, {0xd8, 0xab, 0xab, 0xff}}},\n    {{{ -2815,   -550,  -3131}, 0, {  3478,   1334}, {0xd8, 0xab, 0xab, 0xff}}},\n};\n\n// 0x070072D0 - 0x070073C0\nstatic const Vtx wdw_seg7_vertex_070072D0[] = {\n    {{{ -2815,   -827,  -2854}, 0, {  2578,    928}, {0xbf, 0xa7, 0xc3, 0xff}}},\n    {{{ -2834,   -827,  -2834}, 0, {  2578,    872}, {0xbf, 0xa7, 0xc3, 0xff}}},\n    {{{ -3030,   -550,  -3030}, 0, {  3670,    872}, {0xbf, 0xa7, 0xc3, 0xff}}},\n    {{{ -3030,  -1496,  -3030}, 0, {   354,    872}, {0xd8, 0x55, 0xab, 0xff}}},\n    {{{ -2815,  -1219,  -2854}, 0, {  1446,    928}, {0xd8, 0x55, 0xab, 0xff}}},\n    {{{ -2815,  -1496,  -3131}, 0, {   546,   1334}, {0xd8, 0x55, 0xab, 0xff}}},\n    {{{ -3030,  -1496,  -3030}, 0, {   354,    872}, {0xbf, 0x59, 0xc3, 0xff}}},\n    {{{ -2834,  -1219,  -2834}, 0, {  1446,    872}, {0xbf, 0x59, 0xc3, 0xff}}},\n    {{{ -2815,  -1219,  -2854}, 0, {  1446,    928}, {0xbf, 0x59, 0xc3, 0xff}}},\n    {{{ -3308,  -1496,  -3308}, 0, {  7516,    872}, {0x55, 0x55, 0x25, 0xff}}},\n    {{{ -3800,  -1219,  -2815}, 0, {  6972,   -576}, {0x55, 0x55, 0x25, 0xff}}},\n    {{{ -3523,  -1496,  -2815}, 0, {  8002,   -170}, {0x55, 0x55, 0x25, 0xff}}},\n    {{{ -3308,  -1496,  -3308}, 0, {  7516,    872}, {0x55, 0x56, 0x24, 0xff}}},\n    {{{ -3503,  -1219,  -3503}, 0, {  6566,    872}, {0x55, 0x56, 0x24, 0xff}}},\n    {{{ -3800,  -1219,  -2815}, 0, {  6972,   -576}, {0x55, 0x56, 0x24, 0xff}}},\n};\n\n// 0x070073C0 - 0x070074C0\nstatic const Vtx wdw_seg7_vertex_070073C0[] = {\n    {{{ -3308,  -1496,  -3308}, 0, {  7516,    872}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3523,  -1496,  -2815}, 0, {  8002,   -170}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3030,  -1496,  -3030}, 0, {  8530,    872}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3308,  -1496,  -3308}, 0, {  7516,    872}, {0x24, 0x56, 0x55, 0xff}}},\n    {{{ -2815,  -1219,  -3800}, 0, {  6972,   2318}, {0x24, 0x56, 0x55, 0xff}}},\n    {{{ -3503,  -1219,  -3503}, 0, {  6566,    872}, {0x24, 0x56, 0x55, 0xff}}},\n    {{{ -2815,  -1496,  -3131}, 0, {  8722,   1334}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2815,  -1496,  -3523}, 0, {  8002,   1910}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3131,  -1496,  -2815}, 0, {  8722,    406}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3800,  -1219,  -2815}, 0, {  6972,   -576}, {0x74, 0x00, 0x32, 0xff}}},\n    {{{ -3503,  -1219,  -3503}, 0, {  6566,    872}, {0x74, 0x00, 0x32, 0xff}}},\n    {{{ -3800,   -827,  -2815}, 0, {  5228,   -576}, {0x74, 0x00, 0x32, 0xff}}},\n    {{{ -3503,   -827,  -3503}, 0, {  5634,    872}, {0x74, 0x00, 0x32, 0xff}}},\n    {{{ -2815,  -1219,  -3800}, 0, {  6972,   2318}, {0x32, 0x00, 0x74, 0xff}}},\n    {{{ -3503,   -827,  -3503}, 0, {  5634,    872}, {0x32, 0x00, 0x74, 0xff}}},\n    {{{ -3503,  -1219,  -3503}, 0, {  6566,    872}, {0x32, 0x00, 0x74, 0xff}}},\n};\n\n// 0x070074C0 - 0x070075B0\nstatic const Vtx wdw_seg7_vertex_070074C0[] = {\n    {{{ -2815,  -1219,  -3800}, 0, {  6972,   2318}, {0x32, 0x00, 0x74, 0xff}}},\n    {{{ -2815,   -827,  -3800}, 0, {  5228,   2318}, {0x32, 0x00, 0x74, 0xff}}},\n    {{{ -3503,   -827,  -3503}, 0, {  5634,    872}, {0x32, 0x00, 0x74, 0xff}}},\n    {{{ -2815,   -550,  -3523}, 0, {  4198,   1910}, {0x25, 0xab, 0x55, 0xff}}},\n    {{{ -3308,   -550,  -3308}, 0, {  4684,    872}, {0x25, 0xab, 0x55, 0xff}}},\n    {{{ -2815,   -827,  -3800}, 0, {  5228,   2318}, {0x25, 0xab, 0x55, 0xff}}},\n    {{{ -3308,   -550,  -3308}, 0, {  4684,    872}, {0x24, 0xaa, 0x55, 0xff}}},\n    {{{ -3503,   -827,  -3503}, 0, {  5634,    872}, {0x24, 0xaa, 0x55, 0xff}}},\n    {{{ -2815,   -827,  -3800}, 0, {  5228,   2318}, {0x24, 0xaa, 0x55, 0xff}}},\n    {{{ -3800,   -827,  -2815}, 0, {  5228,   -576}, {0x55, 0xaa, 0x24, 0xff}}},\n    {{{ -3503,   -827,  -3503}, 0, {  5634,    872}, {0x55, 0xaa, 0x24, 0xff}}},\n    {{{ -3308,   -550,  -3308}, 0, {  4684,    872}, {0x55, 0xaa, 0x24, 0xff}}},\n    {{{ -3523,   -550,  -2815}, 0, {  4198,   -170}, {0x55, 0xab, 0x25, 0xff}}},\n    {{{ -3800,   -827,  -2815}, 0, {  5228,   -576}, {0x55, 0xab, 0x25, 0xff}}},\n    {{{ -3308,   -550,  -3308}, 0, {  4684,    872}, {0x55, 0xab, 0x25, 0xff}}},\n};\n\n// 0x070075B0 - 0x070076B0\nstatic const Vtx wdw_seg7_vertex_070075B0[] = {\n    {{{ -3523,   -550,  -2815}, 0, {  4198,   -170}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3308,   -550,  -3308}, 0, {  4684,    872}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3030,   -550,  -3030}, 0, {  3670,    872}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2815,   -550,  -3523}, 0, {  4198,   1910}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3131,   -550,  -2815}, 0, {  3478,    406}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2815,   -550,  -3131}, 0, {  3478,   1334}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  4608,      0,  -2713}, 0, { -1236,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3482,      0,  -2713}, 0, { -1236,  -1238}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,      0,   1024}, 0, { -8718,  -5654}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,      0,   2304}, 0, {-11272,  -9230}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4608,      0,   4608}, 0, {-15872,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3482,      0,  -3839}, 0, {   990,  -1238}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,      0,  -3839}, 0, {   990,  -5654}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3584,      0,  -2815}, 0, { -1032,  -1034}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4608,      0,  -2815}, 0, { -1032,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3900,      0,  -2854}, 0, {  -974,   -424}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070076B0 - 0x070077B0\nstatic const Vtx wdw_seg7_vertex_070076B0[] = {\n    {{{  3584,      0,  -3839}, 0, {   990,  -1034}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3482,      0,  -3839}, 0, {   990,  -1238}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3482,      0,  -2713}, 0, { -1236,  -1238}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4608,      0,  -2713}, 0, { -1236,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4608,      0,  -2815}, 0, { -1032,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3584,      0,  -2815}, 0, { -1032,  -1034}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3900,      0,  -3800}, 0, {   912,   -424}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4292,      0,  -3800}, 0, {   912,    360}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3623,      0,  -3523}, 0, {   360,   -976}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4608,      0,  -3839}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3623,      0,  -3131}, 0, {  -422,   -976}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3900,      0,  -2854}, 0, {  -974,   -424}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,      0,   2304}, 0, {-11272,  -9230}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3839,      0,   2304}, 0, {-11272, -15874}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4608,      0,   4608}, 0, {-15872,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4569,      0,  -3523}, 0, {   360,    912}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070077B0 - 0x07007840\nstatic const Vtx wdw_seg7_vertex_070077B0[] = {\n    {{{  4608,      0,  -3839}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4569,      0,  -3131}, 0, {  -422,    912}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4608,      0,  -2815}, 0, { -1032,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4570,      0,  -3533}, 0, {   378,    914}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4292,      0,  -2854}, 0, {  -974,    360}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3900,      0,  -2854}, 0, {  -974,   -424}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3839,      0,   2304}, 0, {-11272, -15874}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3839,      0,   4608}, 0, {-15872, -15874}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4608,      0,   4608}, 0, {-15872,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07007840 - 0x07007930\nstatic const Vtx wdw_seg7_vertex_07007840[] = {\n    {{{  1280,   2304,  -3071}, 0, { -9228,  16318}, {0xd4, 0x9e, 0xbe, 0xff}}},\n    {{{  1834,   1997,  -2983}, 0, { -4806,  15618}, {0xd4, 0x9e, 0xbe, 0xff}}},\n    {{{  1755,   1869,  -2740}, 0, { -5438,  13674}, {0xd4, 0x9e, 0xbe, 0xff}}},\n    {{{  1280,   2304,  -3071}, 0, { -9228,  16318}, {0xc7, 0x9b, 0xce, 0xff}}},\n    {{{  1755,   1869,  -2740}, 0, { -5438,  13674}, {0xc7, 0x9b, 0xce, 0xff}}},\n    {{{  1280,   2176,  -2815}, 0, { -9228,  14274}, {0xc7, 0x9b, 0xce, 0xff}}},\n    {{{  1834,   1997,  -2983}, 0, { -4806,  15618}, {0xeb, 0x9e, 0xb4, 0xff}}},\n    {{{  2333,   1690,  -2729}, 0, {  -818,  13586}, {0xeb, 0x9e, 0xb4, 0xff}}},\n    {{{  2183,   1562,  -2522}, 0, { -2020,  11932}, {0xeb, 0x9e, 0xb4, 0xff}}},\n    {{{  1834,   1997,  -2983}, 0, { -4806,  15618}, {0xd9, 0x9b, 0xbe, 0xff}}},\n    {{{  2183,   1562,  -2522}, 0, { -2020,  11932}, {0xd9, 0x9b, 0xbe, 0xff}}},\n    {{{  1755,   1869,  -2740}, 0, { -5438,  13674}, {0xd9, 0x9b, 0xbe, 0xff}}},\n    {{{  2183,   1562,  -2522}, 0, { -2020,  11932}, {0xb4, 0x9b, 0x07, 0xff}}},\n    {{{  2032,   1690,  -2315}, 0, { -3220,  10278}, {0xb4, 0x9b, 0x07, 0xff}}},\n    {{{  1755,   1869,  -2740}, 0, { -5438,  13674}, {0xb4, 0x9b, 0x07, 0xff}}},\n};\n\n// 0x07007930 - 0x07007A20\nstatic const Vtx wdw_seg7_vertex_07007930[] = {\n    {{{  1755,   1869,  -2740}, 0, { -5438,  13674}, {0xba, 0x9b, 0x1e, 0xff}}},\n    {{{  1676,   1997,  -2496}, 0, { -6070,  11730}, {0xba, 0x9b, 0x1e, 0xff}}},\n    {{{  1280,   2176,  -2815}, 0, { -9228,  14274}, {0xba, 0x9b, 0x1e, 0xff}}},\n    {{{  2032,   1690,  -2315}, 0, { -3220,  10278}, {0xa9, 0xa6, 0x12, 0xff}}},\n    {{{  1676,   1997,  -2496}, 0, { -6070,  11730}, {0xa9, 0xa6, 0x12, 0xff}}},\n    {{{  1755,   1869,  -2740}, 0, { -5438,  13674}, {0xa9, 0xa6, 0x12, 0xff}}},\n    {{{  1676,   1997,  -2496}, 0, { -6070,  11730}, {0xb3, 0xa6, 0x2d, 0xff}}},\n    {{{  1280,   2304,  -2559}, 0, { -9228,  12230}, {0xb3, 0xa6, 0x2d, 0xff}}},\n    {{{  1280,   2176,  -2815}, 0, { -9228,  14274}, {0xb3, 0xa6, 0x2d, 0xff}}},\n    {{{  3072,    768,  -1279}, 0, {  5078,   2010}, {0x00, 0x8a, 0xd4, 0xff}}},\n    {{{  2560,    768,  -1279}, 0, {   990,   2010}, {0x00, 0x8a, 0xd4, 0xff}}},\n    {{{  2741,    947,  -1754}, 0, {  2434,   5800}, {0x00, 0x8a, 0xd4, 0xff}}},\n    {{{  2560,    768,  -1279}, 0, {   990,   2010}, {0xbe, 0xa6, 0xc5, 0xff}}},\n    {{{  2497,   1075,  -1675}, 0, {   490,   5168}, {0xbe, 0xa6, 0xc5, 0xff}}},\n    {{{  2741,    947,  -1754}, 0, {  2434,   5800}, {0xbe, 0xa6, 0xc5, 0xff}}},\n};\n\n// 0x07007A20 - 0x07007B10\nstatic const Vtx wdw_seg7_vertex_07007A20[] = {\n    {{{  2741,    947,  -1754}, 0, {  2434,   5800}, {0xbf, 0x9b, 0xd9, 0xff}}},\n    {{{  2497,   1075,  -1675}, 0, {   490,   5168}, {0xbf, 0x9b, 0xd9, 0xff}}},\n    {{{  2523,   1254,  -2182}, 0, {   692,   9218}, {0xbf, 0x9b, 0xd9, 0xff}}},\n    {{{  2497,   1075,  -1675}, 0, {   490,   5168}, {0xaf, 0xa6, 0xdc, 0xff}}},\n    {{{  2316,   1382,  -2031}, 0, {  -960,   8018}, {0xaf, 0xa6, 0xdc, 0xff}}},\n    {{{  2523,   1254,  -2182}, 0, {   692,   9218}, {0xaf, 0xa6, 0xdc, 0xff}}},\n    {{{  2730,   1382,  -2332}, 0, {  2346,  10420}, {0x07, 0x9b, 0xb4, 0xff}}},\n    {{{  2741,    947,  -1754}, 0, {  2434,   5800}, {0x07, 0x9b, 0xb4, 0xff}}},\n    {{{  2523,   1254,  -2182}, 0, {   692,   9218}, {0x07, 0x9b, 0xb4, 0xff}}},\n    {{{  2730,   1382,  -2332}, 0, {  2346,  10420}, {0x1b, 0x9e, 0xb6, 0xff}}},\n    {{{  2984,   1075,  -1833}, 0, {  4378,   6432}, {0x1b, 0x9e, 0xb6, 0xff}}},\n    {{{  2741,    947,  -1754}, 0, {  2434,   5800}, {0x1b, 0x9e, 0xb6, 0xff}}},\n    {{{  2984,   1075,  -1833}, 0, {  4378,   6432}, {0x22, 0x98, 0xc1, 0xff}}},\n    {{{  3072,    768,  -1279}, 0, {  5078,   2010}, {0x22, 0x98, 0xc1, 0xff}}},\n    {{{  2741,    947,  -1754}, 0, {  2434,   5800}, {0x22, 0x98, 0xc1, 0xff}}},\n};\n\n// 0x07007B10 - 0x07007C00\nstatic const Vtx wdw_seg7_vertex_07007B10[] = {\n    {{{  2523,   1254,  -2182}, 0, {   692,   9218}, {0xb6, 0x9b, 0xf0, 0xff}}},\n    {{{  2316,   1382,  -2031}, 0, {  -960,   8018}, {0xb6, 0x9b, 0xf0, 0xff}}},\n    {{{  2183,   1562,  -2522}, 0, { -2020,  11932}, {0xb6, 0x9b, 0xf0, 0xff}}},\n    {{{  2316,   1382,  -2031}, 0, {  -960,   8018}, {0xa8, 0xa6, 0xf7, 0xff}}},\n    {{{  2032,   1690,  -2315}, 0, { -3220,  10278}, {0xa8, 0xa6, 0xf7, 0xff}}},\n    {{{  2183,   1562,  -2522}, 0, { -2020,  11932}, {0xa8, 0xa6, 0xf7, 0xff}}},\n    {{{  2333,   1690,  -2729}, 0, {  -818,  13586}, {0x03, 0x9e, 0xb1, 0xff}}},\n    {{{  2730,   1382,  -2332}, 0, {  2346,  10420}, {0x03, 0x9e, 0xb1, 0xff}}},\n    {{{  2523,   1254,  -2182}, 0, {   692,   9218}, {0x03, 0x9e, 0xb1, 0xff}}},\n    {{{  2333,   1690,  -2729}, 0, {  -818,  13586}, {0xf0, 0x9b, 0xb6, 0xff}}},\n    {{{  2523,   1254,  -2182}, 0, {   692,   9218}, {0xf0, 0x9b, 0xb6, 0xff}}},\n    {{{  2183,   1562,  -2522}, 0, { -2020,  11932}, {0xf0, 0x9b, 0xb6, 0xff}}},\n    {{{  -210,   3328,     64}, 0, {  -286,   -288}, {0x00, 0xa2, 0x54, 0xff}}},\n    {{{   -18,   3840,    640}, 0, { -2586,  -1054}, {0x00, 0xa2, 0x54, 0xff}}},\n    {{{  -402,   3840,    640}, 0, { -2586,    478}, {0x00, 0xa2, 0x54, 0xff}}},\n};\n\n// 0x07007C00 - 0x07007CF0\nstatic const Vtx wdw_seg7_vertex_07007C00[] = {\n    {{{  -210,   3328,     64}, 0, {  -286,   -288}, {0x00, 0xa2, 0xac, 0xff}}},\n    {{{  -402,   3840,   -511}, 0, {  2012,    478}, {0x00, 0xa2, 0xac, 0xff}}},\n    {{{   -18,   3840,   -511}, 0, {  2012,  -1054}, {0x00, 0xa2, 0xac, 0xff}}},\n    {{{  -402,   3840,   -511}, 0, {  2012,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -402,   3840,    640}, 0, { -2586,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -18,   3840,    640}, 0, { -2586,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -210,   3328,     64}, 0, {  -286,   -288}, {0xc3, 0xa4, 0xc3, 0xff}}},\n    {{{  -786,   3840,   -127}, 0, {   480,   2010}, {0xc3, 0xa4, 0xc3, 0xff}}},\n    {{{  -402,   3840,   -511}, 0, {  2012,    478}, {0xc3, 0xa4, 0xc3, 0xff}}},\n    {{{  -210,   3328,     64}, 0, {  -286,   -288}, {0x3d, 0xa4, 0x3d, 0xff}}},\n    {{{   365,   3840,    256}, 0, { -1052,  -2588}, {0x3d, 0xa4, 0x3d, 0xff}}},\n    {{{   -18,   3840,    640}, 0, { -2586,  -1054}, {0x3d, 0xa4, 0x3d, 0xff}}},\n    {{{  -210,   3328,     64}, 0, {  -286,   -288}, {0x54, 0xa2, 0x00, 0xff}}},\n    {{{   365,   3840,   -127}, 0, {   480,  -2588}, {0x54, 0xa2, 0x00, 0xff}}},\n    {{{   365,   3840,    256}, 0, { -1052,  -2588}, {0x54, 0xa2, 0x00, 0xff}}},\n};\n\n// 0x07007CF0 - 0x07007DF0\nstatic const Vtx wdw_seg7_vertex_07007CF0[] = {\n    {{{  -210,   3328,     64}, 0, {  -286,   -288}, {0x3d, 0xa4, 0xc3, 0xff}}},\n    {{{   -18,   3840,   -511}, 0, {  2012,  -1054}, {0x3d, 0xa4, 0xc3, 0xff}}},\n    {{{   365,   3840,   -127}, 0, {   480,  -2588}, {0x3d, 0xa4, 0xc3, 0xff}}},\n    {{{  -210,   3328,     64}, 0, {  -286,   -288}, {0xc3, 0xa4, 0x3d, 0xff}}},\n    {{{  -402,   3840,    640}, 0, { -2586,    478}, {0xc3, 0xa4, 0x3d, 0xff}}},\n    {{{  -786,   3840,    256}, 0, { -1052,   2010}, {0xc3, 0xa4, 0x3d, 0xff}}},\n    {{{  -402,   3840,   -511}, 0, {  2012,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -786,   3840,    256}, 0, { -1052,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -402,   3840,    640}, 0, { -2586,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -786,   3840,   -127}, 0, {   480,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -210,   3328,     64}, 0, {  -286,   -288}, {0xac, 0xa2, 0x00, 0xff}}},\n    {{{  -786,   3840,    256}, 0, { -1052,   2010}, {0xac, 0xa2, 0x00, 0xff}}},\n    {{{  -786,   3840,   -127}, 0, {   480,   2010}, {0xac, 0xa2, 0x00, 0xff}}},\n    {{{   -18,   3840,    640}, 0, { -2586,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   365,   3840,    256}, 0, { -1052,  -2588}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   365,   3840,   -127}, 0, {   480,  -2588}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07007DF0 - 0x07007E20\nstatic const Vtx wdw_seg7_vertex_07007DF0[] = {\n    {{{  -402,   3840,   -511}, 0, {  2012,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   365,   3840,   -127}, 0, {   480,  -2588}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -18,   3840,   -511}, 0, {  2012,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07007E20 - 0x07007F00\nstatic const Vtx wdw_seg7_vertex_07007E20[] = {\n    {{{  2032,   1690,  -2315}, 0, { -4242,  -6256}, {0x31, 0x6f, 0x24, 0xff}}},\n    {{{  2730,   1382,  -2332}, 0, {  1324,  -6398}, {0x31, 0x6f, 0x24, 0xff}}},\n    {{{  2333,   1690,  -2729}, 0, { -1840,  -9564}, {0x31, 0x6f, 0x24, 0xff}}},\n    {{{  -255,   1152,   -511}, 0, {   990,  14274}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3839,   1152,   1280}, 0, { -6162,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -383,   1152,   1280}, 0, { -6162,  13252}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,   1152,   1152}, 0, { -5140,  14274}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3839,   1152,   -511}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,   2304,  -2559}, 0, {-10250,  -8208}, {0x3d, 0x6f, 0x00, 0xff}}},\n    {{{  1834,   1997,  -2983}, 0, { -5828, -11596}, {0x3d, 0x6f, 0x00, 0xff}}},\n    {{{  1280,   2304,  -3071}, 0, {-10250, -12296}, {0x3d, 0x6f, 0x00, 0xff}}},\n    {{{  1280,   2304,  -2559}, 0, {-10250,  -8208}, {0x4a, 0x64, 0x18, 0xff}}},\n    {{{  1676,   1997,  -2496}, 0, { -7092,  -7708}, {0x4a, 0x64, 0x18, 0xff}}},\n    {{{  1834,   1997,  -2983}, 0, { -5828, -11596}, {0x4a, 0x64, 0x18, 0xff}}},\n};\n\n// 0x07007F00 - 0x07007FF0\nstatic const Vtx wdw_seg7_vertex_07007F00[] = {\n    {{{  1676,   1997,  -2496}, 0, { -7092,  -7708}, {0x3a, 0x6f, 0x13, 0xff}}},\n    {{{  2333,   1690,  -2729}, 0, { -1840,  -9564}, {0x3a, 0x6f, 0x13, 0xff}}},\n    {{{  1834,   1997,  -2983}, 0, { -5828, -11596}, {0x3a, 0x6f, 0x13, 0xff}}},\n    {{{  1676,   1997,  -2496}, 0, { -7092,  -7708}, {0x3f, 0x64, 0x2d, 0xff}}},\n    {{{  2032,   1690,  -2315}, 0, { -4242,  -6256}, {0x3f, 0x64, 0x2d, 0xff}}},\n    {{{  2333,   1690,  -2729}, 0, { -1840,  -9564}, {0x3f, 0x64, 0x2d, 0xff}}},\n    {{{  2032,   1690,  -2315}, 0, { -4242,  -6256}, {0x2d, 0x64, 0x3e, 0xff}}},\n    {{{  2316,   1382,  -2031}, 0, { -1982,  -3996}, {0x2d, 0x64, 0x3e, 0xff}}},\n    {{{  2730,   1382,  -2332}, 0, {  1324,  -6398}, {0x2d, 0x64, 0x3e, 0xff}}},\n    {{{  -383,    384,   1280}, 0, { -2586,  -2332}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3839,    384,   2304}, 0, { -4630,  -9230}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,    384,   2304}, 0, { -4630,  -2588}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2316,   1382,  -2031}, 0, { -1982,  -3996}, {0x18, 0x64, 0x4a, 0xff}}},\n    {{{  2497,   1075,  -1675}, 0, {  -530,  -1146}, {0x18, 0x64, 0x4a, 0xff}}},\n    {{{  2984,   1075,  -1833}, 0, {  3356,  -2410}, {0x18, 0x64, 0x4a, 0xff}}},\n};\n\n// 0x07007FF0 - 0x070080F0\nstatic const Vtx wdw_seg7_vertex_07007FF0[] = {\n    {{{  2316,   1382,  -2031}, 0, { -1982,  -3996}, {0x24, 0x6f, 0x31, 0xff}}},\n    {{{  2984,   1075,  -1833}, 0, {  3356,  -2410}, {0x24, 0x6f, 0x31, 0xff}}},\n    {{{  2730,   1382,  -2332}, 0, {  1324,  -6398}, {0x24, 0x6f, 0x31, 0xff}}},\n    {{{  2497,   1075,  -1675}, 0, {  -530,  -1146}, {0x00, 0x64, 0x4d, 0xff}}},\n    {{{  2560,    768,  -1279}, 0, {     0,   2010}, {0x00, 0x64, 0x4d, 0xff}}},\n    {{{  3072,    768,  -1279}, 0, {  4056,   2010}, {0x00, 0x64, 0x4d, 0xff}}},\n    {{{  2497,   1075,  -1675}, 0, {  -530,  -1146}, {0x12, 0x6f, 0x3a, 0xff}}},\n    {{{  3072,    768,  -1279}, 0, {  4056,   2010}, {0x12, 0x6f, 0x3a, 0xff}}},\n    {{{  2984,   1075,  -1833}, 0, {  3356,  -2410}, {0x12, 0x6f, 0x3a, 0xff}}},\n    {{{  1280,    384,   1024}, 0, { -2074,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,    384,   -511}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,    384,   -511}, 0, {   990,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,    384,   1152}, 0, { -2330,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -383,    384,   1280}, 0, { -2586,  -2332}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3839,    384,   1280}, 0, { -2586,  -9230}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3839,    384,   2304}, 0, { -4630,  -9230}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070080F0 - 0x07008120\nstatic const Vtx wdw_seg7_vertex_070080F0[] = {\n    {{{  -383,    384,   1280}, 0, { -2586,  -2332}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,    384,   2304}, 0, { -4630,  -2588}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,    384,   1024}, 0, { -2074,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07008120 - 0x07008160\nstatic const Vtx wdw_seg7_vertex_07008120[] = {\n    {{{ -2047,    384,   1280}, 0, {   480,  -2588}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2354,    384,    666}, 0, {  1042,  -3200}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2354,    384,   1280}, 0, {   480,  -3200}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2047,    384,    666}, 0, {  1042,  -2588}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07008160 - 0x07008598\nstatic const Gfx wdw_seg7_dl_07008160[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wdw_seg7_lights_07002800.l, 1),\n    gsSPLight(&wdw_seg7_lights_07002800.a, 2),\n    gsSPVertex(wdw_seg7_vertex_07002830, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07002920, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  6, 11, 0x0, 10,  4,  6, 0x0),\n    gsSP2Triangles(10, 12,  4, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07002A20, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07002B20, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 15, 14, 13, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07002C20, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  0, 11, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(12, 14, 15, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07002D20, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07002E00, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  3,  5,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles( 8, 12, 11, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07002F00, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07002FE0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(wdw_seg7_vertex_070030C0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(wdw_seg7_vertex_070031A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07003290, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  4,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07003380, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07003460, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07003550, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPLight(&wdw_seg7_lights_07002818.l, 1),\n    gsSPLight(&wdw_seg7_lights_07002818.a, 2),\n    gsSPVertex(wdw_seg7_vertex_07003630, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07003720, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP1Triangle( 8,  9, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008598 - 0x070087B8\nstatic const Gfx wdw_seg7_dl_07008598[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wdw_seg7_lights_07002800.l, 1),\n    gsSPLight(&wdw_seg7_lights_07002800.a, 2),\n    gsSPVertex(wdw_seg7_vertex_070037D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(10, 12, 13, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 8, 11, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_070038C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(wdw_seg7_vertex_070039C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07003AB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 4,  8,  5, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07003BB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  0,  2,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  4,  8,  5, 0x0),\n    gsSP2Triangles( 4,  9,  8, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07003CB0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPLight(&wdw_seg7_lights_07002818.l, 1),\n    gsSPLight(&wdw_seg7_lights_07002818.a, 2),\n    gsSPVertex(wdw_seg7_vertex_07003D70, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070087B8 - 0x07008910\nstatic const Gfx wdw_seg7_dl_070087B8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09009000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wdw_seg7_lights_07002800.l, 1),\n    gsSPLight(&wdw_seg7_lights_07002800.a, 2),\n    gsSPVertex(wdw_seg7_vertex_07003E30, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07003F20, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07004010, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07004100, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(wdw_seg7_vertex_070041F0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008910 - 0x07008B00\nstatic const Gfx wdw_seg7_dl_07008910[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wdw_seg7_vertex_07004270, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07004360, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 2, 10, 11, 0x0,  0, 12, 13, 0x0),\n    gsSP1Triangle( 0, 13,  1, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07004440, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07004530, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07004620, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07004710, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  3,  7,  0, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPLight(&wdw_seg7_lights_07002818.l, 1),\n    gsSPLight(&wdw_seg7_lights_07002818.a, 2),\n    gsSPVertex(wdw_seg7_vertex_070047D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008B00 - 0x07008C00\nstatic const Gfx wdw_seg7_dl_07008B00[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wdw_seg7_lights_07002800.l, 1),\n    gsSPLight(&wdw_seg7_lights_07002800.a, 2),\n    gsSPVertex(wdw_seg7_vertex_070048D0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  6,  5, 0x0,  8,  5,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 13, 10, 0x0),\n    gsSPVertex(wdw_seg7_vertex_070049B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  3,  7,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13,  1, 0x0,  0, 14,  1, 0x0),\n    gsSP1Triangle( 1, 14, 12, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07004AA0, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  2,  1, 0x0,  4,  5,  2, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008C00 - 0x07008CA0\nstatic const Gfx wdw_seg7_dl_07008C00[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09006800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wdw_seg7_vertex_07004B40, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07004C30, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008CA0 - 0x07008E08\nstatic const Gfx wdw_seg7_dl_07008CA0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wdw_seg7_texture_07000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wdw_seg7_vertex_07004D20, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12,  8, 0x0),\n    gsSP1Triangle( 0, 13,  1, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07004E00, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles( 8, 12, 13, 0x0,  8, 14, 12, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07004EF0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07004FF0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(wdw_seg7_vertex_070050D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008E08 - 0x07009268\nstatic const Gfx wdw_seg7_dl_07008E08[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wdw_seg7_vertex_070051C0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(wdw_seg7_vertex_070052A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07005390, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07005490, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07005580, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  8, 10, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07005670, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07005770, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 3, 12,  4, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07005870, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07005960, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  2,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  4,  9, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 14,  8, 15, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07005A60, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07005B60, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07005C60, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 6,  8, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  3, 15,  4, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07005D60, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 4,  8,  7, 0x0,  4,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07005E40, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07005F30, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07006020, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07006110, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP2Triangles( 0,  2, 14, 0x0,  9, 15,  7, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07006210, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle( 7,  9, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009268 - 0x07009358\nstatic const Gfx wdw_seg7_dl_07009268[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wdw_seg7_vertex_070062C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(wdw_seg7_vertex_070063B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(wdw_seg7_vertex_070064A0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  7, 11, 12, 0x0),\n    gsSP1Triangle( 0,  2, 13, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07006580, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009358 - 0x07009850\nstatic const Gfx wdw_seg7_dl_07009358[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wdw_seg7_vertex_070065B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 3, 10,  4, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_070066A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 8, 14,  9, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07006790, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 8, 10, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07006880, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  2,  6, 0x0,  3,  7,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07006970, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07006A50, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07006B40, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07006C20, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07006D10, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07006E00, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  3,  5, 0x0),\n    gsSP2Triangles( 7,  5,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07006EF0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07006FD0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 10, 15, 11, 0x0),\n    gsSPVertex(wdw_seg7_vertex_070070D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(wdw_seg7_vertex_070071D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(wdw_seg7_vertex_070072D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_070073C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  6,  7, 0x0,  1,  8,  2, 0x0),\n    gsSP2Triangles( 0,  2,  6, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(10, 12, 11, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(wdw_seg7_vertex_070074C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_070075B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  0,  2, 0x0,  5,  2,  3, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 6,  8, 10, 0x0,  8, 11, 12, 0x0),\n    gsSP2Triangles( 8,  7, 11, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(wdw_seg7_vertex_070076B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 2,  5,  0, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  0, 0x0,  0,  5,  8, 0x0),\n    gsSP2Triangles( 0,  8,  6, 0x0,  7,  9,  0, 0x0),\n    gsSP2Triangles( 5, 10,  8, 0x0,  5, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0,  7, 15,  9, 0x0),\n    gsSPVertex(wdw_seg7_vertex_070077B0, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  2,  4,  5, 0x0),\n    gsSP1Triangle( 6,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009850 - 0x070099B0\nstatic const Gfx wdw_seg7_dl_07009850[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09009800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wdw_seg7_vertex_07007840, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07007930, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07007A20, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07007B10, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07007C00, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07007CF0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  6, 13, 14, 0x0),\n    gsSP1Triangle( 6, 14, 15, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07007DF0, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070099B0 - 0x07009AB0\nstatic const Gfx wdw_seg7_dl_070099B0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wdw_seg7_vertex_07007E20, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  3,  7,  4, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07007F00, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07007FF0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0,  9, 12, 13, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(wdw_seg7_vertex_070080F0, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPLight(&wdw_seg7_lights_07002818.l, 1),\n    gsSPLight(&wdw_seg7_lights_07002818.a, 2),\n    gsSPVertex(wdw_seg7_vertex_07008120, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009AB0 - 0x07009B78\nconst Gfx wdw_seg7_dl_07009AB0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wdw_seg7_dl_07008160),\n    gsSPDisplayList(wdw_seg7_dl_07008598),\n    gsSPDisplayList(wdw_seg7_dl_070087B8),\n    gsSPDisplayList(wdw_seg7_dl_07008910),\n    gsSPDisplayList(wdw_seg7_dl_07008B00),\n    gsSPDisplayList(wdw_seg7_dl_07008C00),\n    gsSPDisplayList(wdw_seg7_dl_07008CA0),\n    gsSPDisplayList(wdw_seg7_dl_07008E08),\n    gsSPDisplayList(wdw_seg7_dl_07009268),\n    gsSPDisplayList(wdw_seg7_dl_07009358),\n    gsSPDisplayList(wdw_seg7_dl_07009850),\n    gsSPDisplayList(wdw_seg7_dl_070099B0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wdw/areas/1/2/model.inc.c",
    "content": "// 0x07009B78 - 0x07009B90\nstatic const Lights1 wdw_seg7_lights_07009B78 = gdSPDefLights1(\n    0x99, 0x99, 0x99,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07009B90 - 0x07009C70\nstatic const Vtx wdw_seg7_vertex_07009B90[] = {\n    {{{ -1023,   1280,   1249}, 0, {  5844,  -4376}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3839,   1152,   1249}, 0, {   478,   1500}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1023,   1152,   1249}, 0, {  6100,  -4120}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3839,   1280,   1249}, 0, {   224,   1244}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -286,   1152,   -511}, 0, {  3546,  -1566}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -286,   1280,   1152}, 0, {   224,   1244}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -286,   1152,   1152}, 0, {   480,   1500}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -286,   1280,   -511}, 0, {  3290,  -1820}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3584,   3072,  -3839}, 0, {  2012,   -714}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3482,   3072,  -3839}, 0, {  1842,   -884}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3482,   3072,  -2713}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3584,   3072,  -2815}, 0, {   308,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4608,   3072,  -2815}, 0, {  2012,   2692}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4608,   3072,  -2713}, 0, {  1842,   2862}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07009C70 - 0x07009D50\nstatic const Vtx wdw_seg7_vertex_07009C70[] = {\n    {{{  3482,      0,  -2713}, 0, {   480,   1498}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4608,      0,  -2713}, 0, {  2352,   -372}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4608,   3072,  -2713}, 0, { -2756,  -5482}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3482,   3072,  -2713}, 0, { -4630,  -3610}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3482,      0,  -3839}, 0, {  -370,   2350}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3482,      0,  -2713}, 0, {  1500,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3482,   3072,  -3839}, 0, { -5480,  -2758}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3482,   3072,  -2713}, 0, { -3606,  -4632}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1229,   2304,  -2175}, 0, { -1026,   2902}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,    404,  -1479}, 0, {   362,   6692}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,    205,  -1479}, 0, {   362,   7092}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,    205,  -2175}, 0, { -1026,   7092}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,    404,  -1279}, 0, {   762,   6692}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,   2304,  -1279}, 0, {   762,   2902}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07009D50 - 0x07009E40\nstatic const Vtx wdw_seg7_vertex_07009D50[] = {\n    {{{   589,   3584,  -2226}, 0, {  -414,   -160}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1229,   2304,  -2226}, 0, {   862,   2394}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   589,   2304,  -2226}, 0, {  -414,   2394}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1229,   2304,  -1228}, 0, {   864,   2902}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,   2304,  -2226}, 0, { -1128,   2902}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,   3584,  -2226}, 0, { -1128,    348}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,   3584,  -1228}, 0, {   864,    348}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1229,   2304,  -1228}, 0, {   864,   2648}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1229,   3584,  -1228}, 0, {   864,     94}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   589,   3584,  -1228}, 0, {  -412,     94}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   589,   2304,  -1228}, 0, {  -412,   2648}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   589,   2304,  -1228}, 0, {   864,   2648}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   589,   3584,  -2226}, 0, { -1128,     94}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   589,   2304,  -2226}, 0, { -1128,   2648}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   589,   3584,  -1228}, 0, {   864,     94}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07009E40 - 0x07009EB0\nstatic const Vtx wdw_seg7_vertex_07009E40[] = {\n    {{{  1229,   3584,  -2226}, 0, {  1116,   -876}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   589,   3584,  -2226}, 0, {  -158,   -876}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   589,   3584,  -1228}, 0, {  -158,   1114}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   589,   3584,  -2226}, 0, {  -414,   -160}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1229,   3584,  -2226}, 0, {   862,   -160}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1229,   2304,  -2226}, 0, {   862,   2394}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1229,   3584,  -1228}, 0, {  1116,   1114}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07009EB0 - 0x07009FB0\nstatic const Vtx wdw_seg7_vertex_07009EB0[] = {\n    {{{  3681,   1280,   3681}, 0, { 23228,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3681,   1408,    768}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3681,   1280,    768}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3103,   1280,   3681}, 0, { 23228,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3103,   1408,   3584}, 0, { 22452,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3103,   1280,   3584}, 0, { 22452,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3103,   1408,   3681}, 0, { 23228,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3103,   1408,   3328}, 0, { 20408,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3103,   1280,    768}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3103,   1280,   3328}, 0, { 20408,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3103,   1408,    768}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3681,   1408,   3681}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3103,   1408,   3681}, 0, {  5078,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3103,   1280,   3681}, 0, {  5078,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3681,   1280,   3681}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3681,   1408,   3681}, 0, { 23228,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07009FB0 - 0x0700A0D0\nstatic const Gfx wdw_seg7_dl_07009FB0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wdw_seg7_lights_07009B78.l, 1),\n    gsSPLight(&wdw_seg7_lights_07009B78.a, 2),\n    gsSPVertex(wdw_seg7_vertex_07009B90, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10, 11,  8, 0x0),\n    gsSP2Triangles(10, 12, 11, 0x0, 10, 13, 12, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07009C70, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10, 11,  8, 0x0),\n    gsSP2Triangles( 8, 12,  9, 0x0,  8, 13, 12, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07009D50, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07009E40, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  2,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A0D0 - 0x0700A138\nstatic const Gfx wdw_seg7_dl_0700A0D0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_0900A000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wdw_seg7_vertex_07009EB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A138 - 0x0700A1B0\nconst Gfx wdw_seg7_dl_0700A138[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wdw_seg7_dl_07009FB0),\n    gsSPDisplayList(wdw_seg7_dl_0700A0D0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wdw/areas/1/3/model.inc.c",
    "content": "// 0x070122C8 - 0x070123A8\nstatic const Vtx wdw_seg7_vertex_070122C8[] = {\n    {{{  3968,    219,  -3829}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  3866,    731,  -3829}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  3866,    475,  -3829}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  3712,    475,  -3829}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  4224,    475,  -3829}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  4070,    475,  -3829}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  4070,    731,  -3829}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -3071,   3200,  -2293}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -3173,   2688,  -2293}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -2969,   2688,  -2293}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -3173,   2944,  -2293}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -3327,   2944,  -2293}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -2969,   2944,  -2293}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -2815,   2944,  -2293}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n};\n\n// 0x070123A8 - 0x070124A8\nstatic const Vtx wdw_seg7_vertex_070123A8[] = {\n    {{{  2314,    447,   2074}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  2314,    447,   1920}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  2314,    703,   2176}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -2048,   1997,    -57}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -1945,   1741,    -57}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -1792,   1741,    -57}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -1945,   1485,    -57}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -2304,   1741,    -57}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -2150,   1741,    -57}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -2150,   1485,    -57}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  2314,    447,   2278}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  2314,    191,   2278}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  2314,    191,   2074}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -2421,   1459,   3200}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -2421,    947,   3302}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -2421,   1203,   3098}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n};\n\n// 0x070124A8 - 0x07012598\nstatic const Vtx wdw_seg7_vertex_070124A8[] = {\n    {{{  2314,    703,   2176}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  2314,    447,   2432}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  2314,    447,   2278}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  2314,   1408,   2176}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  2314,    896,   2278}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  2314,   1152,   2074}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  2314,   1152,   2278}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  2314,    896,   2074}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  2314,   1152,   1920}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  2314,   1152,   2432}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -2421,    947,   3302}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -2421,    947,   3098}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -2421,   1203,   3098}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -2421,   1459,   3200}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -2421,   1203,   3302}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n};\n\n// 0x07012598 - 0x07012658\nstatic const Vtx wdw_seg7_vertex_07012598[] = {\n    {{{ -2421,    703,   3200}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -2421,    447,   3456}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -2421,    447,   3302}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -2421,   1203,   3098}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -2421,   1203,   2944}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -2421,   1459,   3200}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -2421,   1203,   3456}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -2421,   1203,   3302}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -2421,    191,   3302}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -2421,    447,   3098}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -2421,    191,   3098}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -2421,    447,   2944}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n};\n\n// 0x07012658 - 0x07012798\nstatic const Gfx wdw_seg7_dl_07012658[] = {\n    gsSPVertex(wdw_seg7_vertex_070122C8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  0,  5,  6, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  7, 11, 10, 0x0),\n    gsSP2Triangles( 7,  9, 12, 0x0,  7, 12, 13, 0x0),\n    gsSPVertex(wdw_seg7_vertex_070123A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  7,  8, 0x0),\n    gsSP2Triangles( 3,  8,  9, 0x0,  3,  9,  6, 0x0),\n    gsSP2Triangles( 2, 10, 11, 0x0,  2, 11,  0, 0x0),\n    gsSP2Triangles(11, 12,  0, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(wdw_seg7_vertex_070124A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 5,  8,  3, 0x0,  3,  9,  6, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 10, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07012598, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  0,  8,  9, 0x0),\n    gsSP2Triangles( 0,  2,  8, 0x0,  8, 10,  9, 0x0),\n    gsSP1Triangle( 9, 11,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07012798 - 0x070127C8\nconst Gfx wdw_seg7_dl_07012798[] = {\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsSPDisplayList(wdw_seg7_dl_07012658),\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wdw/areas/1/collision.inc.c",
    "content": "// 0x07014150 - 0x070160D6\nconst Collision wdw_seg7_area_1_collision[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x1FA),\n    COL_VERTEX(3072, 1280, 3649),\n    COL_VERTEX(3072, 0, 3712),\n    COL_VERTEX(3072, 1280, 3712),\n    COL_VERTEX(3072, 0, 3649),\n    COL_VERTEX(3135, 1152, 3712),\n    COL_VERTEX(3135, 0, 3712),\n    COL_VERTEX(3072, 1152, 3649),\n    COL_VERTEX(3072, 1152, 3712),\n    COL_VERTEX(3712, 1280, 3712),\n    COL_VERTEX(3072, 1408, 3712),\n    COL_VERTEX(3712, 1152, 3649),\n    COL_VERTEX(3649, 0, 3712),\n    COL_VERTEX(3649, 1152, 3712),\n    COL_VERTEX(3712, 0, 3649),\n    COL_VERTEX(3712, 1280, 3649),\n    COL_VERTEX(3712, 0, 3712),\n    COL_VERTEX(3712, 1408, 3712),\n    COL_VERTEX(3649, 1152, 768),\n    COL_VERTEX(3712, 1152, 768),\n    COL_VERTEX(3712, 1280, 831),\n    COL_VERTEX(3072, 1408, 768),\n    COL_VERTEX(3072, 1280, 768),\n    COL_VERTEX(3135, 1152, 768),\n    COL_VERTEX(3072, 1152, 831),\n    COL_VERTEX(-2271, 2304, -584),\n    COL_VERTEX(-2047, 2816, -747),\n    COL_VERTEX(-2047, 2304, -747),\n    COL_VERTEX(-2185, 2304, -320),\n    COL_VERTEX(-1909, 2304, -320),\n    COL_VERTEX(-1823, 2304, -584),\n    COL_VERTEX(3584, 0, 2662),\n    COL_VERTEX(3072, 0, 2662),\n    COL_VERTEX(3584, 154, 2662),\n    COL_VERTEX(3584, 0, 3174),\n    COL_VERTEX(3072, 0, 3174),\n    COL_VERTEX(256, 3072, 3328),\n    COL_VERTEX(-255, 3072, 3328),\n    COL_VERTEX(256, 3072, 3840),\n    COL_VERTEX(-255, 3072, 3840),\n    COL_VERTEX(-255, 3200, 3328),\n    COL_VERTEX(-1023, 2048, 2432),\n    COL_VERTEX(-1023, 2048, 2048),\n    COL_VERTEX(-511, 2048, 2048),\n    COL_VERTEX(-1023, 2176, 2048),\n    COL_VERTEX(-511, 2048, 2432),\n    COL_VERTEX(-1023, 2304, 2688),\n    COL_VERTEX(-1023, 2048, 2944),\n    COL_VERTEX(-511, 2304, 2688),\n    COL_VERTEX(-511, 2048, 2688),\n    COL_VERTEX(-511, 2048, 2944),\n    COL_VERTEX(-255, 1152, -511),\n    COL_VERTEX(-316, 1280, 1152),\n    COL_VERTEX(-1023, 1280, 1280),\n    COL_VERTEX(-3839, 1152, 1219),\n    COL_VERTEX(-316, 1152, 1152),\n    COL_VERTEX(-1023, 1152, 1219),\n    COL_VERTEX(-1023, 1280, 1219),\n    COL_VERTEX(-1023, 1152, 1280),\n    COL_VERTEX(3482, 3072, -2713),\n    COL_VERTEX(3482, 0, -2713),\n    COL_VERTEX(4608, 3072, -2815),\n    COL_VERTEX(3584, 3072, -3839),\n    COL_VERTEX(3482, 0, -3839),\n    COL_VERTEX(1178, 2304, -2175),\n    COL_VERTEX(1178, 3523, -1279),\n    COL_VERTEX(1178, 3523, -2175),\n    COL_VERTEX(640, 2304, -1279),\n    COL_VERTEX(640, 2304, -2175),\n    COL_VERTEX(1178, 205, -1479),\n    COL_VERTEX(1280, 205, -2175),\n    COL_VERTEX(1280, 404, -1479),\n    COL_VERTEX(1280, 2304, -1177),\n    COL_VERTEX(538, 2304, -2277),\n    COL_VERTEX(1280, 3584, -2277),\n    COL_VERTEX(538, 2304, -1177),\n    COL_VERTEX(1280, 404, -2175),\n    COL_VERTEX(3651, 1280, 3651),\n    COL_VERTEX(3133, 1408, 3584),\n    COL_VERTEX(3651, 1408, 768),\n    COL_VERTEX(3712, 1280, 768),\n    COL_VERTEX(3133, 1280, 768),\n    COL_VERTEX(3072, 1408, 3200),\n    COL_VERTEX(3133, 1408, 3200),\n    COL_VERTEX(3072, 1408, 3584),\n    COL_VERTEX(3133, 1280, 3584),\n    COL_VERTEX(-2457, 2304, 3456),\n    COL_VERTEX(3712, 1152, 3712),\n    COL_VERTEX(3649, 0, 768),\n    COL_VERTEX(3712, 0, 831),\n    COL_VERTEX(3712, 1152, 831),\n    COL_VERTEX(3712, 0, 768),\n    COL_VERTEX(3072, 0, 768),\n    COL_VERTEX(3072, 0, 831),\n    COL_VERTEX(3072, 1280, 831),\n    COL_VERTEX(3072, 1152, 768),\n    COL_VERTEX(3135, 0, 768),\n    COL_VERTEX(3103, 1428, 768),\n    COL_VERTEX(3133, 1408, 768),\n    COL_VERTEX(-2271, 2816, -584),\n    COL_VERTEX(-2185, 2816, -320),\n    COL_VERTEX(-1909, 2816, -320),\n    COL_VERTEX(-1823, 2816, -584),\n    COL_VERTEX(3584, 154, 3174),\n    COL_VERTEX(3072, 154, 2662),\n    COL_VERTEX(3072, 154, 3174),\n    COL_VERTEX(256, 3200, 3328),\n    COL_VERTEX(256, 3200, 3840),\n    COL_VERTEX(-255, 3200, 3840),\n    COL_VERTEX(-511, 2176, 2048),\n    COL_VERTEX(-511, 2176, 2432),\n    COL_VERTEX(-1023, 2176, 2432),\n    COL_VERTEX(-1023, 2048, 2688),\n    COL_VERTEX(-1023, 2304, 2944),\n    COL_VERTEX(-511, 2304, 2944),\n    COL_VERTEX(-255, 1280, 1152),\n    COL_VERTEX(-255, 1152, 1152),\n    COL_VERTEX(-255, 1280, -511),\n    COL_VERTEX(-286, 1300, 1152),\n    COL_VERTEX(-3839, 1280, 1280),\n    COL_VERTEX(-3839, 1152, 1280),\n    COL_VERTEX(-3839, 1280, 1219),\n    COL_VERTEX(-316, 1280, -511),\n    COL_VERTEX(-316, 1152, -511),\n    COL_VERTEX(-1023, 1300, 1249),\n    COL_VERTEX(4608, 3072, -2713),\n    COL_VERTEX(4608, 0, -2713),\n    COL_VERTEX(4608, 0, -2815),\n    COL_VERTEX(3584, 0, -2815),\n    COL_VERTEX(3584, 3072, -2815),\n    COL_VERTEX(3584, 0, -3839),\n    COL_VERTEX(3482, 3072, -3839),\n    COL_VERTEX(640, 3523, -2175),\n    COL_VERTEX(1178, 404, -2175),\n    COL_VERTEX(640, 3523, -1279),\n    COL_VERTEX(1178, 404, -1279),\n    COL_VERTEX(1178, 2304, -1279),\n    COL_VERTEX(1178, 404, -1479),\n    COL_VERTEX(1280, 205, -1479),\n    COL_VERTEX(1178, 205, -2175),\n    COL_VERTEX(1280, 404, -1279),\n    COL_VERTEX(538, 3584, -1177),\n    COL_VERTEX(1280, 3584, -1177),\n    COL_VERTEX(1280, 2304, -2277),\n    COL_VERTEX(538, 3584, -2277),\n    COL_VERTEX(1280, 2304, -1279),\n    COL_VERTEX(1280, 2304, -2175),\n    COL_VERTEX(3651, 1408, 3651),\n    COL_VERTEX(3651, 1280, 768),\n    COL_VERTEX(3133, 1408, 3651),\n    COL_VERTEX(3133, 1280, 3651),\n    COL_VERTEX(3681, 1428, 768),\n    COL_VERTEX(3712, 1408, 768),\n    COL_VERTEX(3072, 1280, 3584),\n    COL_VERTEX(3133, 1280, 3200),\n    COL_VERTEX(3072, 1280, 3200),\n    COL_VERTEX(3103, 1428, 3200),\n    COL_VERTEX(3103, 1428, 3584),\n    COL_VERTEX(-2431, 2278, 3840),\n    COL_VERTEX(-2451, 2304, 3840),\n    COL_VERTEX(-2431, 2278, 3456),\n    COL_VERTEX(384, -1219, -2854),\n    COL_VERTEX(320, -827, -2854),\n    COL_VERTEX(384, -827, -2854),\n    COL_VERTEX(320, -550, -3131),\n    COL_VERTEX(384, -550, -3131),\n    COL_VERTEX(320, -1219, -2854),\n    COL_VERTEX(320, -550, -3523),\n    COL_VERTEX(384, -550, -3523),\n    COL_VERTEX(320, -827, -3800),\n    COL_VERTEX(384, -827, -3800),\n    COL_VERTEX(320, -1219, -3800),\n    COL_VERTEX(384, -1219, -3800),\n    COL_VERTEX(320, -1496, -3523),\n    COL_VERTEX(384, -1496, -3523),\n    COL_VERTEX(384, -1496, -3131),\n    COL_VERTEX(320, -1496, -3131),\n    COL_VERTEX(448, -827, -2854),\n    COL_VERTEX(448, -550, -3131),\n    COL_VERTEX(448, -1219, -2854),\n    COL_VERTEX(448, -550, -3523),\n    COL_VERTEX(448, -827, -3800),\n    COL_VERTEX(448, -1219, -3800),\n    COL_VERTEX(448, -1496, -3523),\n    COL_VERTEX(448, -1496, -3131),\n    COL_VERTEX(-255, 4352, -4351),\n    COL_VERTEX(-255, 3584, -3839),\n    COL_VERTEX(4608, 3072, -3839),\n    COL_VERTEX(-3839, 4352, -4351),\n    COL_VERTEX(-3839, 3584, -3839),\n    COL_VERTEX(-3839, 4352, -2303),\n    COL_VERTEX(-3839, 3584, -2303),\n    COL_VERTEX(-3839, 3072, -511),\n    COL_VERTEX(-3839, 3072, -2303),\n    COL_VERTEX(-2815, -827, -2854),\n    COL_VERTEX(-2815, -550, -3131),\n    COL_VERTEX(-2815, -1219, -2854),\n    COL_VERTEX(-2834, -827, -2834),\n    COL_VERTEX(-3030, -550, -3030),\n    COL_VERTEX(-2854, -827, -2815),\n    COL_VERTEX(-3523, -550, -2815),\n    COL_VERTEX(-3308, -550, -3308),\n    COL_VERTEX(-3131, -550, -2815),\n    COL_VERTEX(-2815, -550, -3523),\n    COL_VERTEX(-2854, -1219, -2815),\n    COL_VERTEX(-2854, -827, -2303),\n    COL_VERTEX(-3131, -550, -2303),\n    COL_VERTEX(-3523, -550, -2303),\n    COL_VERTEX(-3503, -827, -3503),\n    COL_VERTEX(-2815, -827, -3800),\n    COL_VERTEX(-3800, -827, -2815),\n    COL_VERTEX(-3800, -827, -2303),\n    COL_VERTEX(-3503, -1219, -3503),\n    COL_VERTEX(-2815, -1219, -3800),\n    COL_VERTEX(-3800, -1219, -2815),\n    COL_VERTEX(-3308, -1496, -3308),\n    COL_VERTEX(-3523, -1496, -2815),\n    COL_VERTEX(-3131, -1496, -2815),\n    COL_VERTEX(-3030, -1496, -3030),\n    COL_VERTEX(-2834, -1219, -2834),\n    COL_VERTEX(3833, -760, -2854),\n    COL_VERTEX(3900, -511, -2854),\n    COL_VERTEX(4028, -955, -2854),\n    COL_VERTEX(4292, -511, -2854),\n    COL_VERTEX(3584, -1219, -2854),\n    COL_VERTEX(3584, -827, -2854),\n    COL_VERTEX(3584, -550, -3131),\n    COL_VERTEX(3603, -530, -3131),\n    COL_VERTEX(3623, -511, -3131),\n    COL_VERTEX(3900, 0, -2854),\n    COL_VERTEX(3623, 0, -3131),\n    COL_VERTEX(4292, 0, -2854),\n    COL_VERTEX(3584, -1496, -3131),\n    COL_VERTEX(4258, -1185, -3131),\n    COL_VERTEX(4569, -511, -3131),\n    COL_VERTEX(4569, 0, -3131),\n    COL_VERTEX(3584, -1496, -3523),\n    COL_VERTEX(4258, -1185, -3523),\n    COL_VERTEX(4569, 0, -3523),\n    COL_VERTEX(4028, -955, -3800),\n    COL_VERTEX(3584, -1219, -3800),\n    COL_VERTEX(4292, 0, -3800),\n    COL_VERTEX(4292, -511, -3800),\n    COL_VERTEX(3833, -760, -3800),\n    COL_VERTEX(3900, -511, -3800),\n    COL_VERTEX(3584, -827, -3800),\n    COL_VERTEX(3900, 0, -3800),\n    COL_VERTEX(3584, -550, -3523),\n    COL_VERTEX(3603, -530, -3523),\n    COL_VERTEX(3623, -511, -3523),\n    COL_VERTEX(3623, 0, -3523),\n    COL_VERTEX(4608, 0, -3839),\n    COL_VERTEX(1024, 1613, 2560),\n    COL_VERTEX(1024, 1613, 1792),\n    COL_VERTEX(2304, 1613, 2560),\n    COL_VERTEX(2304, 1613, 1792),\n    COL_VERTEX(2048, 1741, 1792),\n    COL_VERTEX(1280, 1741, 2560),\n    COL_VERTEX(2048, 1741, 2560),\n    COL_VERTEX(-2431, 1664, 3840),\n    COL_VERTEX(-2431, 0, 2944),\n    COL_VERTEX(-2431, 1664, 3456),\n    COL_VERTEX(-2175, 2304, 2432),\n    COL_VERTEX(-2431, 3328, 3456),\n    COL_VERTEX(-2431, 2304, 2944),\n    COL_VERTEX(-2047, 2304, 3840),\n    COL_VERTEX(-2431, 2304, 4224),\n    COL_VERTEX(-2047, 2304, 2432),\n    COL_VERTEX(-2431, 0, 3456),\n    COL_VERTEX(-2943, 3328, 2944),\n    COL_VERTEX(-2943, 2304, 3456),\n    COL_VERTEX(-2789, 3328, 3302),\n    COL_VERTEX(-2585, 3328, 3302),\n    COL_VERTEX(-2789, 3328, 3098),\n    COL_VERTEX(-2585, 3328, 3098),\n    COL_VERTEX(-2789, 2816, 3302),\n    COL_VERTEX(-210, 3328, 64),\n    COL_VERTEX(-402, 3840, -511),\n    COL_VERTEX(-511, 3840, -402),\n    COL_VERTEX(-511, 3814, -402),\n    COL_VERTEX(-2357, 3814, -2249),\n    COL_VERTEX(-2249, 3814, -2357),\n    COL_VERTEX(1280, 0, 1024),\n    COL_VERTEX(-511, 0, 2304),\n    COL_VERTEX(-3839, 0, 2304),\n    COL_VERTEX(4608, 0, 4608),\n    COL_VERTEX(-3839, 0, 4608),\n    COL_VERTEX(1280, 2304, -3839),\n    COL_VERTEX(-2303, 3584, -3839),\n    COL_VERTEX(1280, 0, -3839),\n    COL_VERTEX(-2815, 3584, -2303),\n    COL_VERTEX(-2560, 2304, -511),\n    COL_VERTEX(-3839, 2304, -511),\n    COL_VERTEX(-2303, 2304, -2303),\n    COL_VERTEX(-2815, 3456, -2303),\n    COL_VERTEX(-2431, 3456, -1919),\n    COL_VERTEX(-2229, 3456, -2121),\n    COL_VERTEX(-2121, 3584, -2229),\n    COL_VERTEX(-2249, 3584, -2357),\n    COL_VERTEX(-2121, 3456, -2229),\n    COL_VERTEX(-1919, 3584, -2431),\n    COL_VERTEX(-2303, 3584, -2815),\n    COL_VERTEX(-2303, 3456, -2303),\n    COL_VERTEX(-1023, 2816, -3839),\n    COL_VERTEX(-511, 2816, -3839),\n    COL_VERTEX(-1023, 3072, -3327),\n    COL_VERTEX(-511, 2816, -3327),\n    COL_VERTEX(-511, 3584, -3327),\n    COL_VERTEX(-1023, 3328, -3327),\n    COL_VERTEX(-1023, 2816, -3327),\n    COL_VERTEX(-511, 3328, -3327),\n    COL_VERTEX(-511, 3072, -3327),\n    COL_VERTEX(-255, 3328, -3327),\n    COL_VERTEX(-2303, 3328, -3327),\n    COL_VERTEX(1280, 205, -1279),\n    COL_VERTEX(-1536, 2304, -511),\n    COL_VERTEX(2048, 205, -2175),\n    COL_VERTEX(2432, 0, -2175),\n    COL_VERTEX(2048, 205, -1279),\n    COL_VERTEX(2048, 0, -895),\n    COL_VERTEX(2432, 0, -1279),\n    COL_VERTEX(1280, 0, -2559),\n    COL_VERTEX(-2303, 2304, -3327),\n    COL_VERTEX(256, 2304, -3327),\n    COL_VERTEX(256, 2816, -3327),\n    COL_VERTEX(1280, 2304, -3327),\n    COL_VERTEX(256, 3072, -3327),\n    COL_VERTEX(1280, 3072, -3839),\n    COL_VERTEX(0, 3328, -3839),\n    COL_VERTEX(0, 3072, -3327),\n    COL_VERTEX(256, 3072, -3839),\n    COL_VERTEX(0, 3072, -3839),\n    COL_VERTEX(-1536, 1152, -511),\n    COL_VERTEX(-1535, 1152, -511),\n    COL_VERTEX(-1792, 1152, -68),\n    COL_VERTEX(-2304, 1152, -68),\n    COL_VERTEX(-2559, 1152, -511),\n    COL_VERTEX(640, 205, -1279),\n    COL_VERTEX(1280, 384, 1024),\n    COL_VERTEX(-383, 384, 1280),\n    COL_VERTEX(-383, 1152, 1280),\n    COL_VERTEX(-2354, 384, 1280),\n    COL_VERTEX(-2047, 384, 1280),\n    COL_VERTEX(-2047, 691, 1280),\n    COL_VERTEX(-2047, 384, 666),\n    COL_VERTEX(-2354, 691, 1280),\n    COL_VERTEX(1676, 1997, -2496),\n    COL_VERTEX(2032, 1690, -2315),\n    COL_VERTEX(1755, 1869, -2740),\n    COL_VERTEX(1280, 2304, -3071),\n    COL_VERTEX(2183, 1562, -2522),\n    COL_VERTEX(1834, 1997, -2983),\n    COL_VERTEX(2333, 1690, -2729),\n    COL_VERTEX(2523, 1254, -2182),\n    COL_VERTEX(2316, 1382, -2031),\n    COL_VERTEX(2730, 1382, -2332),\n    COL_VERTEX(2741, 947, -1754),\n    COL_VERTEX(2497, 1075, -1675),\n    COL_VERTEX(2984, 1075, -1833),\n    COL_VERTEX(2560, 768, -1279),\n    COL_VERTEX(3072, 768, -1279),\n    COL_VERTEX(512, 0, 3328),\n    COL_VERTEX(1024, 0, 3328),\n    COL_VERTEX(1024, 384, 3328),\n    COL_VERTEX(1024, 0, 3584),\n    COL_VERTEX(768, 384, 3328),\n    COL_VERTEX(768, 0, 3584),\n    COL_VERTEX(512, 0, 3840),\n    COL_VERTEX(768, 640, 3328),\n    COL_VERTEX(512, 640, 3584),\n    COL_VERTEX(768, 0, 3840),\n    COL_VERTEX(768, 896, 3584),\n    COL_VERTEX(1211, 3968, 340),\n    COL_VERTEX(1723, 3968, -171),\n    COL_VERTEX(1211, 3968, -171),\n    COL_VERTEX(1211, 4096, -171),\n    COL_VERTEX(1723, 3968, 340),\n    COL_VERTEX(-578, 3820, 961),\n    COL_VERTEX(-547, 4025, 1111),\n    COL_VERTEX(-582, 4143, 1146),\n    COL_VERTEX(-913, 4348, 934),\n    COL_VERTEX(-944, 4143, 784),\n    COL_VERTEX(-759, 3820, 780),\n    COL_VERTEX(-909, 4025, 749),\n    COL_VERTEX(-732, 4348, 1115),\n    COL_VERTEX(-1234, 4054, 1617),\n    COL_VERTEX(-1084, 3849, 1648),\n    COL_VERTEX(-1129, 3849, 1602),\n    COL_VERTEX(-627, 4143, 1101),\n    COL_VERTEX(-740, 4296, 1078),\n    COL_VERTEX(-615, 3871, 953),\n    COL_VERTEX(-1117, 3577, 1455),\n    COL_VERTEX(-1094, 3731, 1568),\n    COL_VERTEX(-751, 3871, 817),\n    COL_VERTEX(-1253, 3577, 1319),\n    COL_VERTEX(-864, 4025, 794),\n    COL_VERTEX(-1366, 3731, 1296),\n    COL_VERTEX(-1378, 4003, 1444),\n    COL_VERTEX(-876, 4296, 942),\n    COL_VERTEX(-1400, 3849, 1331),\n    COL_VERTEX(-1446, 3849, 1285),\n    COL_VERTEX(-899, 4143, 829),\n    COL_VERTEX(-1242, 4003, 1579),\n    COL_VERTEX(-2854, -1219, -2303),\n    COL_VERTEX(-3800, -1219, -2303),\n    COL_VERTEX(-3523, -1496, -2303),\n    COL_VERTEX(-2815, -1496, -3523),\n    COL_VERTEX(-2815, -1496, -3131),\n    COL_VERTEX(-3131, -1496, -2303),\n    COL_VERTEX(4569, -511, -3523),\n    COL_VERTEX(4570, 0, -3533),\n    COL_VERTEX(1024, 0, 2560),\n    COL_VERTEX(2304, 0, 2560),\n    COL_VERTEX(1024, 0, 1792),\n    COL_VERTEX(2304, 0, 1792),\n    COL_VERTEX(1280, 1741, 1792),\n    COL_VERTEX(-2175, 1664, 2432),\n    COL_VERTEX(-2431, 1664, 2944),\n    COL_VERTEX(-2047, 1664, 2432),\n    COL_VERTEX(-2047, 1664, 3840),\n    COL_VERTEX(-2431, 2304, 3840),\n    COL_VERTEX(-2943, 0, 2944),\n    COL_VERTEX(-2431, 2304, 3456),\n    COL_VERTEX(-2431, 3328, 2944),\n    COL_VERTEX(-2943, 2304, 4224),\n    COL_VERTEX(-2943, 0, 3456),\n    COL_VERTEX(-2943, 3328, 3456),\n    COL_VERTEX(-2789, 2816, 3098),\n    COL_VERTEX(-2585, 2816, 3098),\n    COL_VERTEX(-2585, 2816, 3302),\n    COL_VERTEX(-786, 3840, -127),\n    COL_VERTEX(-786, 3840, 256),\n    COL_VERTEX(-402, 3840, 640),\n    COL_VERTEX(-18, 3840, 640),\n    COL_VERTEX(365, 3840, 256),\n    COL_VERTEX(365, 3840, -127),\n    COL_VERTEX(-18, 3840, -511),\n    COL_VERTEX(-402, 3814, -511),\n    COL_VERTEX(-2357, 3840, -2249),\n    COL_VERTEX(-2249, 3840, -2357),\n    COL_VERTEX(-3839, 3072, 4608),\n    COL_VERTEX(4608, 3072, 4608),\n    COL_VERTEX(-3839, 0, -511),\n    COL_VERTEX(1280, 0, -511),\n    COL_VERTEX(1280, 384, -511),\n    COL_VERTEX(-2303, 2304, -3839),\n    COL_VERTEX(2048, 0, -2559),\n    COL_VERTEX(-3839, 2304, -2303),\n    COL_VERTEX(1280, 2304, -511),\n    COL_VERTEX(-2229, 3584, -2121),\n    COL_VERTEX(-2431, 3584, -1919),\n    COL_VERTEX(-2357, 3584, -2249),\n    COL_VERTEX(-3839, 1152, -511),\n    COL_VERTEX(-2303, 3584, -2303),\n    COL_VERTEX(-2304, 2304, -68),\n    COL_VERTEX(-1792, 2304, -68),\n    COL_VERTEX(-1919, 3456, -2431),\n    COL_VERTEX(-2303, 3456, -2815),\n    COL_VERTEX(-1023, 3072, -3839),\n    COL_VERTEX(-511, 3072, -3839),\n    COL_VERTEX(-511, 3584, -3839),\n    COL_VERTEX(-511, 3328, -3839),\n    COL_VERTEX(-1023, 3328, -3839),\n    COL_VERTEX(-1023, 3584, -3839),\n    COL_VERTEX(-1023, 3584, -3327),\n    COL_VERTEX(-255, 3584, -3327),\n    COL_VERTEX(-255, 3328, -3839),\n    COL_VERTEX(-2303, 3584, -3327),\n    COL_VERTEX(-2303, 3328, -3839),\n    COL_VERTEX(1280, 0, -895),\n    COL_VERTEX(1280, 3072, -3327),\n    COL_VERTEX(640, 205, -2175),\n    COL_VERTEX(256, 2304, -3839),\n    COL_VERTEX(256, 2816, -3839),\n    COL_VERTEX(2048, 2304, -3327),\n    COL_VERTEX(2048, 2304, -3839),\n    COL_VERTEX(0, 3328, -3327),\n    COL_VERTEX(-255, 384, -511),\n    COL_VERTEX(-255, 384, 1152),\n    COL_VERTEX(-511, 384, 2304),\n    COL_VERTEX(-3839, 384, 2304),\n    COL_VERTEX(-3839, 384, 1280),\n    COL_VERTEX(-2354, 384, 666),\n    COL_VERTEX(-2354, 691, 666),\n    COL_VERTEX(-2047, 691, 666),\n    COL_VERTEX(1280, 2304, -2559),\n    COL_VERTEX(1280, 2176, -2815),\n    COL_VERTEX(1024, 384, 3584),\n    COL_VERTEX(768, 384, 3584),\n    COL_VERTEX(768, 640, 3584),\n    COL_VERTEX(768, 896, 3840),\n    COL_VERTEX(512, 640, 3328),\n    COL_VERTEX(512, 896, 3584),\n    COL_VERTEX(512, 896, 3840),\n    COL_VERTEX(1723, 4096, -171),\n    COL_VERTEX(1211, 4096, 340),\n    COL_VERTEX(1723, 4096, 340),\n    COL_VERTEX(-593, 4025, 1066),\n    COL_VERTEX(-1415, 4054, 1436),\n    COL_VERTEX(-1049, 3731, 1613),\n    COL_VERTEX(-1080, 3526, 1462),\n    COL_VERTEX(-1261, 3526, 1281),\n    COL_VERTEX(-1411, 3731, 1251),\n    COL_VERTEX(-286, 1300, -511),\n    COL_VERTEX(-3839, 1300, 1249),\n    COL_VERTEX(3103, 1428, 3681),\n    COL_VERTEX(3681, 1428, 3681),\n    COL_TRI_INIT(SURFACE_DEFAULT, 583),\n    COL_TRI(161, 193, 194),\n    COL_TRI(165, 195, 193),\n    COL_TRI(165, 193, 161),\n    COL_TRI(196, 193, 195),\n    COL_TRI(193, 196, 197),\n    COL_TRI(193, 197, 194),\n    COL_TRI(198, 197, 196),\n    COL_TRI(199, 200, 197),\n    COL_TRI(201, 199, 197),\n    COL_TRI(194, 197, 202),\n    COL_TRI(198, 201, 197),\n    COL_TRI(197, 200, 202),\n    COL_TRI(161, 194, 163),\n    COL_TRI(163, 194, 202),\n    COL_TRI(203, 198, 196),\n    COL_TRI(203, 204, 198),\n    COL_TRI(198, 204, 205),\n    COL_TRI(198, 205, 201),\n    COL_TRI(201, 206, 199),\n    COL_TRI(201, 205, 206),\n    COL_TRI(200, 207, 208),\n    COL_TRI(202, 200, 208),\n    COL_TRI(166, 208, 168),\n    COL_TRI(163, 202, 166),\n    COL_TRI(166, 202, 208),\n    COL_TRI(199, 209, 200),\n    COL_TRI(199, 206, 210),\n    COL_TRI(199, 210, 209),\n    COL_TRI(209, 207, 200),\n    COL_TRI(211, 207, 209),\n    COL_TRI(212, 208, 207),\n    COL_TRI(212, 207, 211),\n    COL_TRI(168, 208, 212),\n    COL_TRI(213, 211, 209),\n    COL_TRI(209, 210, 403),\n    COL_TRI(209, 403, 213),\n    COL_TRI(214, 212, 211),\n    COL_TRI(214, 211, 213),\n    COL_TRI(214, 213, 215),\n    COL_TRI(213, 404, 215),\n    COL_TRI(213, 403, 404),\n    COL_TRI(170, 212, 405),\n    COL_TRI(168, 212, 170),\n    COL_TRI(214, 405, 212),\n    COL_TRI(214, 406, 405),\n    COL_TRI(214, 217, 406),\n    COL_TRI(214, 215, 217),\n    COL_TRI(203, 218, 217),\n    COL_TRI(170, 405, 172),\n    COL_TRI(172, 405, 406),\n    COL_TRI(215, 216, 217),\n    COL_TRI(215, 404, 407),\n    COL_TRI(215, 407, 216),\n    COL_TRI(216, 203, 217),\n    COL_TRI(216, 407, 402),\n    COL_TRI(216, 402, 203),\n    COL_TRI(217, 218, 195),\n    COL_TRI(217, 195, 406),\n    COL_TRI(172, 406, 175),\n    COL_TRI(175, 406, 195),\n    COL_TRI(175, 195, 165),\n    COL_TRI(196, 195, 218),\n    COL_TRI(203, 196, 218),\n    COL_TRI(203, 402, 204),\n    COL_TRI(219, 224, 225),\n    COL_TRI(219, 225, 226),\n    COL_TRI(219, 226, 227),\n    COL_TRI(220, 219, 227),\n    COL_TRI(223, 176, 224),\n    COL_TRI(224, 177, 225),\n    COL_TRI(224, 176, 177),\n    COL_TRI(221, 223, 224),\n    COL_TRI(221, 224, 219),\n    COL_TRI(225, 177, 179),\n    COL_TRI(225, 179, 246),\n    COL_TRI(226, 225, 246),\n    COL_TRI(226, 246, 247),\n    COL_TRI(227, 226, 247),\n    COL_TRI(228, 227, 229),\n    COL_TRI(228, 220, 227),\n    COL_TRI(220, 222, 219),\n    COL_TRI(230, 222, 220),\n    COL_TRI(230, 220, 228),\n    COL_TRI(231, 223, 221),\n    COL_TRI(232, 231, 221),\n    COL_TRI(233, 232, 221),\n    COL_TRI(233, 221, 222),\n    COL_TRI(222, 221, 219),\n    COL_TRI(231, 178, 223),\n    COL_TRI(223, 178, 176),\n    COL_TRI(234, 233, 222),\n    COL_TRI(234, 222, 230),\n    COL_TRI(238, 239, 235),\n    COL_TRI(235, 183, 231),\n    COL_TRI(231, 183, 178),\n    COL_TRI(236, 235, 231),\n    COL_TRI(236, 231, 232),\n    COL_TRI(233, 236, 232),\n    COL_TRI(237, 408, 233),\n    COL_TRI(237, 233, 234),\n    COL_TRI(233, 408, 236),\n    COL_TRI(238, 235, 236),\n    COL_TRI(238, 236, 408),\n    COL_TRI(235, 182, 183),\n    COL_TRI(239, 182, 235),\n    COL_TRI(248, 242, 243),\n    COL_TRI(240, 241, 408),\n    COL_TRI(240, 408, 237),\n    COL_TRI(241, 238, 408),\n    COL_TRI(242, 239, 238),\n    COL_TRI(243, 242, 238),\n    COL_TRI(243, 238, 241),\n    COL_TRI(239, 181, 182),\n    COL_TRI(244, 181, 239),\n    COL_TRI(242, 244, 239),\n    COL_TRI(245, 241, 240),\n    COL_TRI(245, 243, 241),\n    COL_TRI(246, 244, 242),\n    COL_TRI(247, 246, 242),\n    COL_TRI(248, 247, 242),\n    COL_TRI(240, 237, 250),\n    COL_TRI(229, 227, 248),\n    COL_TRI(244, 180, 181),\n    COL_TRI(246, 180, 244),\n    COL_TRI(249, 248, 243),\n    COL_TRI(249, 243, 245),\n    COL_TRI(246, 179, 180),\n    COL_TRI(227, 247, 248),\n    COL_TRI(229, 248, 249),\n    COL_TRI(126, 234, 230),\n    COL_TRI(250, 234, 126),\n    COL_TRI(250, 409, 234),\n    COL_TRI(126, 230, 228),\n    COL_TRI(127, 228, 229),\n    COL_TRI(127, 126, 228),\n    COL_TRI(127, 229, 249),\n    COL_TRI(129, 249, 245),\n    COL_TRI(129, 127, 249),\n    COL_TRI(245, 240, 129),\n    COL_TRI(240, 250, 129),\n    COL_TRI(251, 410, 411),\n    COL_TRI(255, 414, 256),\n    COL_TRI(251, 411, 253),\n    COL_TRI(252, 412, 410),\n    COL_TRI(252, 410, 251),\n    COL_TRI(253, 411, 413),\n    COL_TRI(253, 413, 254),\n    COL_TRI(254, 412, 252),\n    COL_TRI(254, 413, 412),\n    COL_TRI(252, 251, 256),\n    COL_TRI(252, 256, 414),\n    COL_TRI(255, 254, 252),\n    COL_TRI(253, 251, 252),\n    COL_TRI(253, 252, 254),\n    COL_TRI(255, 252, 414),\n    COL_TRI(256, 251, 253),\n    COL_TRI(255, 256, 257),\n    COL_TRI(257, 254, 255),\n    COL_TRI(257, 253, 254),\n    COL_TRI(256, 253, 257),\n    COL_TRI(18, 94, 21),\n    COL_TRI(18, 21, 79),\n    COL_TRI(7, 94, 18),\n    COL_TRI(7, 18, 86),\n    COL_TRI(7, 8, 2),\n    COL_TRI(7, 86, 8),\n    COL_TRI(260, 416, 415),\n    COL_TRI(6, 0, 93),\n    COL_TRI(6, 93, 23),\n    COL_TRI(10, 89, 19),\n    COL_TRI(10, 19, 14),\n    COL_TRI(258, 260, 415),\n    COL_TRI(259, 416, 260),\n    COL_TRI(259, 260, 267),\n    COL_TRI(260, 258, 157),\n    COL_TRI(264, 419, 157),\n    COL_TRI(258, 415, 417),\n    COL_TRI(258, 417, 418),\n    COL_TRI(258, 418, 264),\n    COL_TRI(258, 264, 157),\n    COL_TRI(157, 419, 158),\n    COL_TRI(260, 157, 159),\n    COL_TRI(261, 264, 266),\n    COL_TRI(261, 419, 264),\n    COL_TRI(261, 421, 419),\n    COL_TRI(261, 263, 421),\n    COL_TRI(262, 419, 421),\n    COL_TRI(263, 262, 421),\n    COL_TRI(262, 265, 419),\n    COL_TRI(263, 422, 262),\n    COL_TRI(264, 418, 417),\n    COL_TRI(264, 417, 266),\n    COL_TRI(266, 417, 415),\n    COL_TRI(266, 415, 261),\n    COL_TRI(267, 269, 424),\n    COL_TRI(261, 415, 416),\n    COL_TRI(261, 416, 263),\n    COL_TRI(259, 420, 268),\n    COL_TRI(259, 268, 416),\n    COL_TRI(267, 260, 85),\n    COL_TRI(267, 85, 269),\n    COL_TRI(262, 422, 273),\n    COL_TRI(268, 269, 425),\n    COL_TRI(268, 420, 424),\n    COL_TRI(268, 424, 269),\n    COL_TRI(269, 423, 425),\n    COL_TRI(265, 423, 269),\n    COL_TRI(265, 269, 158),\n    COL_TRI(269, 85, 158),\n    COL_TRI(270, 425, 262),\n    COL_TRI(265, 158, 419),\n    COL_TRI(268, 425, 270),\n    COL_TRI(268, 270, 272),\n    COL_TRI(268, 272, 273),\n    COL_TRI(268, 273, 422),\n    COL_TRI(268, 263, 416),\n    COL_TRI(268, 422, 263),\n    COL_TRI(271, 274, 270),\n    COL_TRI(262, 271, 270),\n    COL_TRI(270, 274, 426),\n    COL_TRI(270, 426, 272),\n    COL_TRI(262, 273, 271),\n    COL_TRI(272, 426, 427),\n    COL_TRI(272, 427, 273),\n    COL_TRI(273, 427, 428),\n    COL_TRI(273, 428, 271),\n    COL_TRI(271, 428, 274),\n    COL_TRI(274, 427, 426),\n    COL_TRI(274, 428, 427),\n    COL_TRI(275, 429, 276),\n    COL_TRI(275, 430, 429),\n    COL_TRI(275, 431, 430),\n    COL_TRI(275, 432, 431),\n    COL_TRI(275, 433, 432),\n    COL_TRI(275, 434, 433),\n    COL_TRI(276, 430, 431),\n    COL_TRI(276, 431, 432),\n    COL_TRI(276, 429, 430),\n    COL_TRI(276, 432, 433),\n    COL_TRI(276, 433, 434),\n    COL_TRI(275, 435, 434),\n    COL_TRI(276, 434, 435),\n    COL_TRI(275, 276, 435),\n    COL_TRI(277, 278, 436),\n    COL_TRI(278, 279, 280),\n    COL_TRI(278, 280, 436),\n    COL_TRI(279, 278, 277),\n    COL_TRI(280, 279, 437),\n    COL_TRI(279, 277, 437),\n    COL_TRI(280, 437, 438),\n    COL_TRI(277, 436, 276),\n    COL_TRI(276, 436, 280),\n    COL_TRI(276, 438, 437),\n    COL_TRI(276, 437, 277),\n    COL_TRI(276, 280, 438),\n    COL_TRI(125, 281, 284),\n    COL_TRI(281, 282, 284),\n    COL_TRI(282, 283, 284),\n    COL_TRI(283, 285, 284),\n    COL_TRI(284, 285, 439),\n    COL_TRI(284, 439, 440),\n    COL_TRI(192, 439, 291),\n    COL_TRI(285, 291, 439),\n    COL_TRI(284, 440, 186),\n    COL_TRI(284, 186, 250),\n    COL_TRI(286, 250, 186),\n    COL_TRI(286, 186, 185),\n    COL_TRI(286, 288, 250),\n    COL_TRI(286, 185, 287),\n    COL_TRI(287, 444, 286),\n    COL_TRI(192, 291, 446),\n    COL_TRI(288, 445, 59),\n    COL_TRI(288, 320, 445),\n    COL_TRI(288, 59, 62),\n    COL_TRI(286, 320, 288),\n    COL_TRI(190, 189, 192),\n    COL_TRI(289, 188, 190),\n    COL_TRI(290, 291, 451),\n    COL_TRI(291, 447, 144),\n    COL_TRI(291, 144, 66),\n    COL_TRI(292, 291, 66),\n    COL_TRI(292, 446, 291),\n    COL_TRI(285, 441, 291),\n    COL_TRI(293, 449, 289),\n    COL_TRI(289, 448, 450),\n    COL_TRI(289, 449, 448),\n    COL_TRI(289, 297, 300),\n    COL_TRI(294, 448, 449),\n    COL_TRI(295, 296, 448),\n    COL_TRI(294, 295, 448),\n    COL_TRI(296, 297, 450),\n    COL_TRI(296, 450, 448),\n    COL_TRI(289, 450, 297),\n    COL_TRI(297, 296, 299),\n    COL_TRI(297, 299, 300),\n    COL_TRI(295, 298, 296),\n    COL_TRI(298, 299, 296),\n    COL_TRI(299, 455, 456),\n    COL_TRI(299, 456, 300),\n    COL_TRI(298, 455, 299),\n    COL_TRI(289, 300, 188),\n    COL_TRI(300, 287, 188),\n    COL_TRI(301, 455, 294),\n    COL_TRI(301, 456, 455),\n    COL_TRI(301, 294, 293),\n    COL_TRI(304, 457, 302),\n    COL_TRI(293, 294, 449),\n    COL_TRI(302, 303, 305),\n    COL_TRI(302, 305, 308),\n    COL_TRI(303, 302, 308),\n    COL_TRI(303, 308, 305),\n    COL_TRI(304, 302, 308),\n    COL_TRI(308, 310, 304),\n    COL_TRI(305, 458, 310),\n    COL_TRI(305, 303, 458),\n    COL_TRI(306, 459, 460),\n    COL_TRI(306, 460, 309),\n    COL_TRI(307, 461, 462),\n    COL_TRI(307, 462, 463),\n    COL_TRI(311, 309, 460),\n    COL_TRI(308, 305, 310),\n    COL_TRI(309, 311, 464),\n    COL_TRI(309, 464, 306),\n    COL_TRI(310, 304, 457),\n    COL_TRI(310, 457, 458),\n    COL_TRI(311, 460, 465),\n    COL_TRI(307, 312, 467),\n    COL_TRI(304, 310, 458),\n    COL_TRI(304, 458, 457),\n    COL_TRI(306, 464, 185),\n    COL_TRI(306, 185, 459),\n    COL_TRI(312, 307, 463),\n    COL_TRI(312, 463, 466),\n    COL_TRI(313, 66, 144),\n    COL_TRI(287, 466, 463),\n    COL_TRI(307, 467, 461),\n    COL_TRI(287, 463, 462),\n    COL_TRI(313, 144, 447),\n    COL_TRI(313, 447, 442),\n    COL_TRI(313, 442, 468),\n    COL_TRI(292, 145, 324),\n    COL_TRI(314, 443, 447),\n    COL_TRI(281, 442, 443),\n    COL_TRI(286, 145, 69),\n    COL_TRI(286, 69, 320),\n    COL_TRI(69, 145, 67),\n    COL_TRI(292, 67, 145),\n    COL_TRI(319, 316, 315),\n    COL_TRI(315, 69, 137),\n    COL_TRI(59, 445, 316),\n    COL_TRI(59, 316, 319),\n    COL_TRI(316, 445, 315),\n    COL_TRI(317, 315, 137),\n    COL_TRI(318, 468, 281),\n    COL_TRI(319, 318, 281),\n    COL_TRI(318, 319, 317),\n    COL_TRI(59, 319, 281),\n    COL_TRI(317, 137, 336),\n    COL_TRI(320, 315, 445),\n    COL_TRI(319, 315, 317),\n    COL_TRI(320, 69, 315),\n    COL_TRI(317, 313, 468),\n    COL_TRI(318, 317, 468),\n    COL_TRI(321, 322, 471),\n    COL_TRI(322, 323, 472),\n    COL_TRI(322, 472, 471),\n    COL_TRI(323, 311, 465),\n    COL_TRI(323, 465, 472),\n    COL_TRI(321, 471, 444),\n    COL_TRI(286, 473, 324),\n    COL_TRI(321, 292, 324),\n    COL_TRI(324, 469, 322),\n    COL_TRI(311, 328, 475),\n    COL_TRI(326, 325, 469),\n    COL_TRI(325, 322, 469),\n    COL_TRI(327, 465, 311),\n    COL_TRI(327, 311, 475),\n    COL_TRI(311, 465, 185),\n    COL_TRI(311, 185, 464),\n    COL_TRI(328, 323, 325),\n    COL_TRI(326, 329, 325),\n    COL_TRI(329, 328, 325),\n    COL_TRI(329, 330, 328),\n    COL_TRI(330, 475, 328),\n    COL_TRI(330, 327, 475),\n    COL_TRI(292, 66, 67),\n    COL_TRI(292, 452, 190),\n    COL_TRI(292, 190, 446),\n    COL_TRI(333, 334, 53),\n    COL_TRI(321, 444, 467),\n    COL_TRI(321, 467, 312),\n    COL_TRI(321, 466, 452),\n    COL_TRI(321, 452, 292),\n    COL_TRI(331, 314, 454),\n    COL_TRI(331, 454, 333),\n    COL_TRI(332, 333, 55),\n    COL_TRI(333, 53, 55),\n    COL_TRI(290, 453, 454),\n    COL_TRI(334, 451, 53),\n    COL_TRI(334, 335, 451),\n    COL_TRI(334, 290, 335),\n    COL_TRI(334, 453, 290),\n    COL_TRI(333, 454, 453),\n    COL_TRI(333, 453, 334),\n    COL_TRI(69, 67, 470),\n    COL_TRI(335, 290, 451),\n    COL_TRI(290, 454, 314),\n    COL_TRI(314, 50, 443),\n    COL_TRI(314, 331, 50),\n    COL_TRI(336, 470, 67),\n    COL_TRI(336, 67, 66),\n    COL_TRI(324, 473, 469),\n    COL_TRI(313, 336, 66),\n    COL_TRI(337, 443, 476),\n    COL_TRI(50, 476, 443),\n    COL_TRI(115, 476, 50),\n    COL_TRI(337, 476, 477),\n    COL_TRI(115, 477, 476),\n    COL_TRI(286, 474, 473),\n    COL_TRI(338, 478, 337),\n    COL_TRI(338, 479, 478),\n    COL_TRI(338, 480, 479),\n    COL_TRI(339, 338, 477),\n    COL_TRI(119, 480, 340),\n    COL_TRI(337, 477, 338),\n    COL_TRI(119, 338, 339),\n    COL_TRI(54, 57, 339),\n    COL_TRI(339, 477, 115),\n    COL_TRI(119, 342, 338),\n    COL_TRI(119, 340, 344),\n    COL_TRI(119, 344, 342),\n    COL_TRI(340, 481, 482),\n    COL_TRI(340, 482, 344),\n    COL_TRI(341, 481, 340),\n    COL_TRI(54, 339, 115),\n    COL_TRI(342, 341, 338),\n    COL_TRI(342, 343, 341),\n    COL_TRI(341, 343, 481),\n    COL_TRI(342, 483, 343),\n    COL_TRI(343, 483, 482),\n    COL_TRI(343, 482, 481),\n    COL_TRI(344, 483, 342),\n    COL_TRI(344, 482, 483),\n    COL_TRI(125, 59, 281),\n    COL_TRI(281, 443, 337),\n    COL_TRI(348, 350, 347),\n    COL_TRI(282, 478, 479),\n    COL_TRI(282, 479, 283),\n    COL_TRI(281, 478, 282),\n    COL_TRI(281, 337, 478),\n    COL_TRI(345, 484, 485),\n    COL_TRI(346, 345, 347),\n    COL_TRI(347, 345, 485),\n    COL_TRI(348, 347, 485),\n    COL_TRI(349, 346, 347),\n    COL_TRI(350, 349, 347),\n    COL_TRI(350, 351, 349),\n    COL_TRI(351, 354, 352),\n    COL_TRI(351, 352, 349),\n    COL_TRI(352, 353, 349),\n    COL_TRI(353, 346, 349),\n    COL_TRI(354, 355, 352),\n    COL_TRI(354, 357, 355),\n    COL_TRI(355, 356, 352),\n    COL_TRI(356, 353, 352),\n    COL_TRI(357, 359, 355),\n    COL_TRI(358, 356, 355),\n    COL_TRI(359, 358, 355),\n    COL_TRI(364, 367, 488),\n    COL_TRI(360, 362, 361),\n    COL_TRI(361, 486, 363),\n    COL_TRI(361, 362, 486),\n    COL_TRI(362, 487, 486),\n    COL_TRI(362, 364, 487),\n    COL_TRI(360, 364, 362),\n    COL_TRI(363, 486, 487),\n    COL_TRI(363, 487, 365),\n    COL_TRI(364, 488, 487),\n    COL_TRI(365, 370, 489),\n    COL_TRI(365, 489, 369),\n    COL_TRI(360, 367, 364),\n    COL_TRI(360, 490, 367),\n    COL_TRI(366, 490, 360),\n    COL_TRI(373, 374, 493),\n    COL_TRI(367, 368, 488),\n    COL_TRI(367, 490, 368),\n    COL_TRI(368, 370, 488),\n    COL_TRI(366, 491, 368),\n    COL_TRI(366, 492, 491),\n    COL_TRI(369, 492, 366),\n    COL_TRI(366, 368, 490),\n    COL_TRI(368, 491, 370),\n    COL_TRI(370, 491, 492),\n    COL_TRI(370, 492, 489),\n    COL_TRI(369, 489, 492),\n    COL_TRI(371, 374, 373),\n    COL_TRI(372, 371, 373),\n    COL_TRI(373, 493, 372),\n    COL_TRI(374, 494, 495),\n    COL_TRI(371, 494, 374),\n    COL_TRI(374, 495, 493),\n    COL_TRI(372, 493, 495),\n    COL_TRI(372, 495, 375),\n    COL_TRI(372, 375, 371),\n    COL_TRI(375, 495, 494),\n    COL_TRI(375, 494, 371),\n    COL_TRI(84, 153, 154),\n    COL_TRI(84, 76, 153),\n    COL_TRI(84, 149, 76),\n    COL_TRI(84, 154, 152),\n    COL_TRI(76, 147, 153),\n    COL_TRI(147, 80, 153),\n    COL_TRI(122, 332, 55),\n    COL_TRI(55, 57, 54),\n    COL_TRI(122, 55, 54),\n    COL_TRI(137, 68, 336),\n    COL_TRI(68, 470, 336),\n    COL_TRI(68, 138, 470),\n    COL_TRI(379, 388, 397),\n    COL_TRI(376, 392, 389),\n    COL_TRI(376, 381, 392),\n    COL_TRI(377, 376, 496),\n    COL_TRI(376, 389, 496),\n    COL_TRI(378, 388, 383),\n    COL_TRI(378, 387, 388),\n    COL_TRI(379, 383, 388),\n    COL_TRI(380, 379, 400),\n    COL_TRI(379, 397, 400),\n    COL_TRI(381, 382, 392),\n    COL_TRI(382, 394, 392),\n    COL_TRI(379, 384, 383),\n    COL_TRI(387, 496, 391),\n    COL_TRI(383, 384, 385),\n    COL_TRI(384, 386, 385),\n    COL_TRI(384, 401, 386),\n    COL_TRI(383, 385, 378),\n    COL_TRI(385, 498, 377),\n    COL_TRI(385, 377, 378),\n    COL_TRI(386, 498, 385),\n    COL_TRI(378, 496, 387),\n    COL_TRI(378, 377, 496),\n    COL_TRI(387, 386, 388),\n    COL_TRI(386, 401, 388),\n    COL_TRI(387, 391, 386),\n    COL_TRI(386, 391, 498),\n    COL_TRI(388, 401, 397),\n    COL_TRI(389, 390, 496),\n    COL_TRI(390, 391, 496),\n    COL_TRI(390, 499, 498),\n    COL_TRI(391, 390, 498),\n    COL_TRI(392, 393, 389),\n    COL_TRI(393, 390, 389),\n    COL_TRI(377, 499, 376),\n    COL_TRI(377, 498, 499),\n    COL_TRI(376, 500, 381),\n    COL_TRI(376, 499, 500),\n    COL_TRI(390, 393, 500),\n    COL_TRI(390, 500, 499),\n    COL_TRI(394, 395, 392),\n    COL_TRI(395, 393, 392),\n    COL_TRI(381, 501, 382),\n    COL_TRI(381, 500, 501),\n    COL_TRI(393, 395, 501),\n    COL_TRI(393, 501, 500),\n    COL_TRI(396, 398, 400),\n    COL_TRI(397, 396, 400),\n    COL_TRI(398, 396, 399),\n    COL_TRI(396, 497, 399),\n    COL_TRI(399, 501, 395),\n    COL_TRI(399, 395, 398),\n    COL_TRI(398, 394, 400),\n    COL_TRI(398, 395, 394),\n    COL_TRI(400, 382, 380),\n    COL_TRI(400, 394, 382),\n    COL_TRI(401, 396, 397),\n    COL_TRI(380, 497, 379),\n    COL_TRI(380, 399, 497),\n    COL_TRI(380, 501, 399),\n    COL_TRI(380, 382, 501),\n    COL_TRI(379, 497, 384),\n    COL_TRI(401, 384, 497),\n    COL_TRI(396, 401, 497),\n    COL_TRI(260, 159, 85),\n    COL_TRI_INIT(SURFACE_VERY_SLIPPERY, 6),\n    COL_TRI(184, 185, 186),\n    COL_TRI(187, 185, 184),\n    COL_TRI(187, 188, 185),\n    COL_TRI(189, 188, 187),\n    COL_TRI(189, 190, 188),\n    COL_TRI(189, 191, 192),\n    COL_TRI_INIT(SURFACE_SLIPPERY, 24),\n    COL_TRI(9, 504, 156),\n    COL_TRI(116, 502, 117),\n    COL_TRI(502, 51, 117),\n    COL_TRI(502, 121, 51),\n    COL_TRI(116, 117, 114),\n    COL_TRI(56, 503, 123),\n    COL_TRI(56, 120, 503),\n    COL_TRI(123, 503, 118),\n    COL_TRI(123, 118, 52),\n    COL_TRI(155, 20, 81),\n    COL_TRI(505, 148, 504),\n    COL_TRI(504, 148, 77),\n    COL_TRI(504, 77, 156),\n    COL_TRI(505, 146, 148),\n    COL_TRI(9, 156, 83),\n    COL_TRI(505, 504, 9),\n    COL_TRI(82, 96, 155),\n    COL_TRI(155, 96, 20),\n    COL_TRI(82, 97, 96),\n    COL_TRI(505, 151, 150),\n    COL_TRI(505, 16, 151),\n    COL_TRI(16, 505, 9),\n    COL_TRI(146, 505, 150),\n    COL_TRI(146, 150, 78),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 14),\n    COL_TRI(356, 359, 357),\n    COL_TRI(262, 423, 265),\n    COL_TRI(262, 425, 423),\n    COL_TRI(474, 326, 469),\n    COL_TRI(474, 469, 473),\n    COL_TRI(356, 358, 359),\n    COL_TRI(353, 356, 357),\n    COL_TRI(484, 350, 348),\n    COL_TRI(353, 357, 354),\n    COL_TRI(346, 353, 354),\n    COL_TRI(346, 354, 351),\n    COL_TRI(345, 346, 351),\n    COL_TRI(345, 351, 350),\n    COL_TRI(484, 345, 350),\n    COL_TRI_INIT(SURFACE_INSTANT_WARP_1B, 16),\n    COL_TRI(181, 171, 173),\n    COL_TRI(176, 164, 177),\n    COL_TRI(176, 162, 164),\n    COL_TRI(178, 162, 176),\n    COL_TRI(178, 160, 162),\n    COL_TRI(177, 164, 167),\n    COL_TRI(177, 167, 179),\n    COL_TRI(179, 169, 180),\n    COL_TRI(180, 171, 181),\n    COL_TRI(180, 169, 171),\n    COL_TRI(179, 167, 169),\n    COL_TRI(182, 173, 174),\n    COL_TRI(181, 173, 182),\n    COL_TRI(183, 160, 178),\n    COL_TRI(183, 174, 160),\n    COL_TRI(182, 174, 183),\n    COL_TRI_INIT(SURFACE_INSTANT_WARP_1C, 16),\n    COL_TRI(171, 170, 172),\n    COL_TRI(160, 161, 162),\n    COL_TRI(162, 161, 163),\n    COL_TRI(162, 163, 164),\n    COL_TRI(160, 165, 161),\n    COL_TRI(164, 163, 166),\n    COL_TRI(164, 166, 167),\n    COL_TRI(167, 168, 169),\n    COL_TRI(169, 170, 171),\n    COL_TRI(169, 168, 170),\n    COL_TRI(167, 166, 168),\n    COL_TRI(173, 172, 175),\n    COL_TRI(171, 172, 173),\n    COL_TRI(174, 165, 160),\n    COL_TRI(174, 175, 165),\n    COL_TRI(173, 175, 174),\n    COL_TRI_INIT(SURFACE_WALL_MISC, 169),\n    COL_TRI(10, 13, 11),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI(4, 5, 3),\n    COL_TRI(4, 3, 6),\n    COL_TRI(7, 1, 5),\n    COL_TRI(8, 9, 2),\n    COL_TRI(7, 5, 4),\n    COL_TRI(10, 11, 12),\n    COL_TRI(8, 13, 14),\n    COL_TRI(8, 15, 13),\n    COL_TRI(12, 11, 15),\n    COL_TRI(12, 15, 86),\n    COL_TRI(8, 16, 9),\n    COL_TRI(17, 87, 88),\n    COL_TRI(17, 88, 89),\n    COL_TRI(18, 87, 17),\n    COL_TRI(18, 90, 87),\n    COL_TRI(19, 88, 90),\n    COL_TRI(19, 90, 79),\n    COL_TRI(20, 80, 21),\n    COL_TRI(21, 91, 92),\n    COL_TRI(21, 92, 93),\n    COL_TRI(22, 91, 94),\n    COL_TRI(22, 95, 91),\n    COL_TRI(23, 92, 95),\n    COL_TRI(23, 95, 22),\n    COL_TRI(24, 98, 25),\n    COL_TRI(25, 99, 100),\n    COL_TRI(25, 98, 99),\n    COL_TRI(24, 25, 26),\n    COL_TRI(26, 25, 101),\n    COL_TRI(25, 100, 101),\n    COL_TRI(27, 99, 98),\n    COL_TRI(27, 98, 24),\n    COL_TRI(28, 100, 99),\n    COL_TRI(28, 99, 27),\n    COL_TRI(34, 103, 31),\n    COL_TRI(29, 100, 28),\n    COL_TRI(29, 101, 100),\n    COL_TRI(26, 101, 29),\n    COL_TRI(30, 32, 102),\n    COL_TRI(30, 102, 33),\n    COL_TRI(31, 32, 30),\n    COL_TRI(31, 103, 32),\n    COL_TRI(32, 103, 104),\n    COL_TRI(32, 104, 102),\n    COL_TRI(33, 102, 104),\n    COL_TRI(33, 104, 34),\n    COL_TRI(34, 104, 103),\n    COL_TRI(35, 37, 38),\n    COL_TRI(35, 38, 36),\n    COL_TRI(35, 105, 106),\n    COL_TRI(35, 106, 37),\n    COL_TRI(36, 105, 35),\n    COL_TRI(37, 106, 107),\n    COL_TRI(37, 107, 38),\n    COL_TRI(38, 107, 39),\n    COL_TRI(38, 39, 36),\n    COL_TRI(36, 39, 105),\n    COL_TRI(39, 106, 105),\n    COL_TRI(39, 107, 106),\n    COL_TRI(40, 43, 41),\n    COL_TRI(41, 43, 108),\n    COL_TRI(41, 108, 42),\n    COL_TRI(42, 40, 41),\n    COL_TRI(47, 45, 112),\n    COL_TRI(43, 109, 108),\n    COL_TRI(43, 110, 109),\n    COL_TRI(40, 110, 43),\n    COL_TRI(42, 108, 109),\n    COL_TRI(42, 109, 44),\n    COL_TRI(42, 44, 40),\n    COL_TRI(44, 109, 110),\n    COL_TRI(44, 110, 40),\n    COL_TRI(45, 47, 48),\n    COL_TRI(45, 48, 111),\n    COL_TRI(46, 45, 111),\n    COL_TRI(46, 112, 45),\n    COL_TRI(51, 115, 114),\n    COL_TRI(47, 112, 113),\n    COL_TRI(48, 47, 113),\n    COL_TRI(49, 111, 48),\n    COL_TRI(48, 113, 49),\n    COL_TRI(49, 46, 111),\n    COL_TRI(49, 113, 112),\n    COL_TRI(49, 112, 46),\n    COL_TRI(50, 114, 115),\n    COL_TRI(50, 116, 114),\n    COL_TRI(51, 114, 117),\n    COL_TRI(54, 121, 122),\n    COL_TRI(51, 54, 115),\n    COL_TRI(52, 118, 119),\n    COL_TRI(52, 119, 57),\n    COL_TRI(53, 56, 55),\n    COL_TRI(53, 120, 56),\n    COL_TRI(54, 51, 121),\n    COL_TRI(60, 127, 128),\n    COL_TRI(55, 56, 52),\n    COL_TRI(56, 123, 52),\n    COL_TRI(57, 55, 52),\n    COL_TRI(58, 59, 124),\n    COL_TRI(59, 125, 124),\n    COL_TRI(60, 126, 127),\n    COL_TRI(61, 128, 127),\n    COL_TRI(61, 127, 129),\n    COL_TRI(62, 59, 130),\n    COL_TRI(59, 58, 130),\n    COL_TRI(58, 128, 61),\n    COL_TRI(61, 130, 58),\n    COL_TRI(58, 60, 128),\n    COL_TRI(58, 124, 60),\n    COL_TRI(67, 131, 133),\n    COL_TRI(63, 65, 131),\n    COL_TRI(64, 65, 132),\n    COL_TRI(65, 64, 133),\n    COL_TRI(65, 133, 131),\n    COL_TRI(64, 132, 134),\n    COL_TRI(66, 133, 64),\n    COL_TRI(66, 64, 135),\n    COL_TRI(67, 133, 66),\n    COL_TRI(68, 70, 136),\n    COL_TRI(68, 137, 70),\n    COL_TRI(68, 132, 138),\n    COL_TRI(68, 136, 132),\n    COL_TRI(69, 70, 137),\n    COL_TRI(70, 134, 136),\n    COL_TRI(70, 139, 134),\n    COL_TRI(67, 63, 131),\n    COL_TRI(71, 140, 74),\n    COL_TRI(71, 141, 140),\n    COL_TRI(71, 73, 141),\n    COL_TRI(71, 142, 73),\n    COL_TRI(72, 73, 142),\n    COL_TRI(72, 143, 73),\n    COL_TRI(73, 140, 141),\n    COL_TRI(73, 143, 140),\n    COL_TRI(74, 143, 72),\n    COL_TRI(74, 140, 143),\n    COL_TRI(76, 149, 148),\n    COL_TRI(69, 75, 70),\n    COL_TRI(75, 144, 139),\n    COL_TRI(75, 145, 144),\n    COL_TRI(76, 146, 78),\n    COL_TRI(76, 78, 147),\n    COL_TRI(76, 148, 146),\n    COL_TRI(79, 16, 8),\n    COL_TRI(77, 149, 84),\n    COL_TRI(77, 148, 149),\n    COL_TRI(78, 150, 151),\n    COL_TRI(78, 79, 147),\n    COL_TRI(78, 151, 79),\n    COL_TRI(79, 151, 16),\n    COL_TRI(20, 96, 97),\n    COL_TRI(20, 97, 80),\n    COL_TRI(80, 97, 82),\n    COL_TRI(80, 82, 153),\n    COL_TRI(81, 21, 154),\n    COL_TRI(81, 20, 21),\n    COL_TRI(82, 154, 153),\n    COL_TRI(82, 81, 154),\n    COL_TRI(82, 155, 81),\n    COL_TRI(83, 156, 77),\n    COL_TRI(84, 152, 83),\n    COL_TRI(84, 83, 77),\n    COL_TRI(2, 83, 152),\n    COL_TRI(2, 9, 83),\n    COL_TRI(85, 157, 158),\n    COL_TRI(85, 159, 157),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(1),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_null_start, /*pos*/ 3395, 1280, 384, /*yaw*/ 128), // unused, probably an early way to set initial position\n    COL_WATER_BOX_INIT(1),\n    COL_WATER_BOX(0, -3839, -3839, 4608, 4608, 31),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/wdw/areas/1/geo.inc.c",
    "content": "// 0x0E000658\nconst GeoLayout wdw_geo_000658[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND(BACKGROUND_UNDERWATER_CITY, geo_skybox_main),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 12800, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(1, 0, 2000, 6000, -4352, 0, -4352, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, wdw_seg7_dl_07009AB0),\n                    GEO_DISPLAY_LIST(LAYER_ALPHA, wdw_seg7_dl_0700A138),\n                    GEO_DISPLAY_LIST(LAYER_TRANSPARENT, wdw_seg7_dl_07012798),\n                    GEO_DISPLAY_LIST(LAYER_TRANSPARENT_DECAL, wdw_seg7_dl_07012908),\n                    GEO_ASM(   0, geo_wdw_set_initial_water_level),\n                    GEO_ASM(   0, geo_movtex_pause_control),\n                    GEO_ASM(0x1101, geo_movtex_draw_water_regions),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(   0, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_cannon_circle_base),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/wdw/areas/1/macro.inc.c",
    "content": "// 0x070160D8 - 0x0701633C\nconst MacroObject wdw_seg7_area_1_macro_objs[] = {\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/   0, /*pos*/ -2077,  2816,  -660, /*bhvParam*/ DIALOG_081),\n    MACRO_OBJECT               (/*preset*/ macro_bobomb_buddy_opens_cannon_1, /*yaw*/   0, /*pos*/    -2,  2944,  3583),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_horizontal,        /*yaw*/   0, /*pos*/ -2057,  2800,  -500),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,        /*yaw*/  90, /*pos*/  1500,  1741,  2191),\n    MACRO_OBJECT               (/*preset*/ macro_blue_coin_switch,            /*yaw*/   0, /*pos*/   500,   384,   250),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/  1124,   400,  -218),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/  1124,   400,   830),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/   832,   400,  1194),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/  1124,   400,   282),\n    MACRO_OBJECT               (/*preset*/ macro_box_star_act_1,              /*yaw*/   0, /*pos*/ -2200,  2600,  3500),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_circling_amp,                /*yaw*/   0, /*pos*/ -1360,  3880, -1340, /*bhvParam*/ AMP_BP_ROT_RADIUS_400),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_circling_amp,                /*yaw*/   0, /*pos*/   640,   700,  3720, /*bhvParam*/ AMP_BP_ROT_RADIUS_400),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_circling_amp,                /*yaw*/   0, /*pos*/ -2100,  2400,  -500, /*bhvParam*/ AMP_BP_ROT_RADIUS_400),\n    MACRO_OBJECT               (/*preset*/ macro_heave_ho,                    /*yaw*/   0, /*pos*/ -2656,  2300, -1352),\n    MACRO_OBJECT               (/*preset*/ macro_heave_ho,                    /*yaw*/   0, /*pos*/ -2909,  1140,   442),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_cannon_closed,               /*yaw*/   0, /*pos*/ -2688,  3328,  3198, /*bhvParam*/ 0x40),\n    MACRO_OBJECT               (/*preset*/ macro_pushable_metal_box,          /*yaw*/   0, /*pos*/ -2200,   384,  1145),\n    MACRO_OBJECT               (/*preset*/ macro_1up,                         /*yaw*/   0, /*pos*/ -1129,  3857,  1404),\n    MACRO_OBJECT               (/*preset*/ macro_1up,                         /*yaw*/   0, /*pos*/  -882,  4018,  1164),\n    MACRO_OBJECT               (/*preset*/ macro_chuckya,                     /*yaw*/   0, /*pos*/ -2963,  3840, -3063),\n    MACRO_OBJECT               (/*preset*/ macro_heave_ho,                    /*yaw*/   0, /*pos*/ -3040,   384,  1840),\n    MACRO_OBJECT               (/*preset*/ macro_pushable_metal_box,          /*yaw*/   0, /*pos*/ -1843,  2304, -3694),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_star_trigger,         /*yaw*/   0, /*pos*/   943,  3830, -1779),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_star_trigger,         /*yaw*/   0, /*pos*/ -2200,   384,  1145),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_star_trigger,         /*yaw*/   0, /*pos*/ -2075,  3000,  -524),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_star_trigger,         /*yaw*/   0, /*pos*/ -3760,   650,  4120),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_circling_amp,                /*yaw*/   0, /*pos*/  -827,  3880,  -827, /*bhvParam*/ AMP_BP_ROT_RADIUS_400),\n    MACRO_OBJECT               (/*preset*/ macro_breakable_box_no_coins,      /*yaw*/   0, /*pos*/  1360,   205, -1384),\n    MACRO_OBJECT               (/*preset*/ macro_floor_switch_hidden_objects, /*yaw*/   0, /*pos*/   920,  2300,  -840),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/   470,  2300, -1310),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/   470,  2500, -1510),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/   470,  2700, -1710),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/   470,  2900, -1910),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/   470,  3100, -2110),\n    MACRO_OBJECT               (/*preset*/ macro_fire_spitter,                /*yaw*/   0, /*pos*/  3140,  1300,  2040),\n    MACRO_OBJECT               (/*preset*/ macro_fire_spitter,                /*yaw*/   0, /*pos*/   -20,   400,  1520),\n    MACRO_OBJECT               (/*preset*/ macro_fire_spitter,                /*yaw*/   0, /*pos*/ -1780,  1160,   -40),\n    MACRO_OBJECT               (/*preset*/ macro_fire_spitter,                /*yaw*/   0, /*pos*/ -2280,  2320, -2280),\n    MACRO_OBJECT               (/*preset*/ macro_fire_spitter,                /*yaw*/   0, /*pos*/  1240,  2340, -3300),\n    MACRO_OBJECT               (/*preset*/ macro_fire_spitter,                /*yaw*/   0, /*pos*/ -2240,  2320,  3820),\n    MACRO_OBJECT               (/*preset*/ macro_fire_spitter,                /*yaw*/   0, /*pos*/  -220,  3860,    60),\n    MACRO_OBJECT               (/*preset*/ macro_fire_spitter,                /*yaw*/   0, /*pos*/  -240,   400,  -440),\n    MACRO_OBJECT               (/*preset*/ macro_breakable_box_three_coins,   /*yaw*/   0, /*pos*/  4509,     0,  3069),\n    MACRO_OBJECT               (/*preset*/ macro_breakable_box_three_coins,   /*yaw*/   0, /*pos*/  4509,     0,  2873),\n    MACRO_OBJECT               (/*preset*/ macro_pushable_metal_box,          /*yaw*/   0, /*pos*/ -3689,     0,  3205),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/   470,  3100, -2310),\n    MACRO_OBJECT               (/*preset*/ macro_breakable_box_giant,         /*yaw*/   0, /*pos*/ -3093,   300,  3300),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_circling_amp,                /*yaw*/   0, /*pos*/ -1500,  2360,  3120, /*bhvParam*/ AMP_BP_ROT_RADIUS_400),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/   420,   400,  1504),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/   -12,   400,  1808),\n    MACRO_OBJECT               (/*preset*/ macro_box_ten_coins,               /*yaw*/   0, /*pos*/ -2075,  3050,  -524),\n    MACRO_OBJECT               (/*preset*/ macro_box_ten_coins,               /*yaw*/   0, /*pos*/   943,  3880, -1779),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_star_trigger,         /*yaw*/   0, /*pos*/ -3689,     0,  3205),\n    MACRO_OBJECT               (/*preset*/ macro_breakable_box_three_coins,   /*yaw*/   0, /*pos*/  4500,     0,  1240),\n    MACRO_OBJECT               (/*preset*/ macro_box_three_coins,             /*yaw*/   0, /*pos*/ -2200,  3060, -3700),\n    MACRO_OBJECT               (/*preset*/ macro_box_ten_coins,               /*yaw*/   0, /*pos*/ -3760,   700,  4120),\n    MACRO_OBJECT               (/*preset*/ macro_box_three_coins,             /*yaw*/   0, /*pos*/  3388,  1600,  1155),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,        /*yaw*/  90, /*pos*/   740,  3072, -3560),\n    MACRO_OBJECT               (/*preset*/ macro_box_star_act_2,              /*yaw*/   0, /*pos*/  1550,  4350,   100),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/   0, /*pos*/   740,  3060, -3680, /*bhvParam*/ DIALOG_053),\n    MACRO_OBJECT               (/*preset*/ macro_breakable_box_three_coins,   /*yaw*/   0, /*pos*/  4500,     0,  1040),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/wdw/areas/1/movtext.inc.c",
    "content": "// 0x07018728\nstatic Movtex wdw_movtex_area1_water_data[] = {\n    MOV_TEX_INIT_LOAD(    1),\n    MOV_TEX_ROT_SPEED(   10),\n    MOV_TEX_ROT_SCALE(   10),\n    MOV_TEX_4_BOX_TRIS(-3839, -3839),\n    MOV_TEX_4_BOX_TRIS(-3839,  4608),\n    MOV_TEX_4_BOX_TRIS( 4608,  4608),\n    MOV_TEX_4_BOX_TRIS( 4608, -3839),\n    MOV_TEX_ROT(     ROTATE_COUNTER_CLOCKWISE),\n    MOV_TEX_ALPHA(    0x96),\n    MOV_TEX_DEFINE(  TEXTURE_WATER),\n    MOV_TEX_END(),\n};\n\n// 0x07018748\nconst struct MovtexQuadCollection wdw_movtex_area1_water[] = {\n    {0, wdw_movtex_area1_water_data},\n    {-1, NULL},\n};\n"
  },
  {
    "path": "levels/wdw/areas/2/1/model.inc.c",
    "content": "// 0x0700A1B0 - 0x0700A1C8\nstatic const Lights1 wdw_seg7_lights_0700A1B0 = gdSPDefLights1(\n    0x99, 0x99, 0x82,\n    0xff, 0xff, 0xd9, 0x28, 0x28, 0x28\n);\n\n// 0x0700A1C8 - 0x0700A1E0\nstatic const Lights1 wdw_seg7_lights_0700A1C8 = gdSPDefLights1(\n    0x99, 0x99, 0x99,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700A1E0 - 0x0700A1F8\nstatic const Lights1 wdw_seg7_lights_0700A1E0 = gdSPDefLights1(\n    0x3c, 0x3c, 0x3c,\n    0x64, 0x64, 0x64, 0x28, 0x28, 0x28\n);\n\n// 0x0700A1F8 - 0x0700A210\nstatic const Lights1 wdw_seg7_lights_0700A1F8 = gdSPDefLights1(\n    0x7b, 0x0d, 0x1f,\n    0xce, 0x16, 0x35, 0x28, 0x28, 0x28\n);\n\n// 0x0700A210 - 0x0700A270\nstatic const Vtx wdw_seg7_vertex_0700A210[] = {\n    {{{  1280,  -1407,   -127}, 0, {     0,   8142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,  -1407,   2176}, 0, { 18364,   8142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2304,  -1407,   2176}, 0, { 18364,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1152,  -1407,      0}, 0, {   990,   9164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1152,  -1407,   2048}, 0, { 17342,   9164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2304,  -1407,   -127}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700A270 - 0x0700A370\nstatic const Vtx wdw_seg7_vertex_0700A270[] = {\n    {{{ -1279,  -2533,  -1791}, 0, { -3096,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,  -2533,  -2047}, 0, {   990,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,  -2533,  -2047}, 0, { -3096,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,  -2533,  -1791}, 0, {   990,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,  -2559,  -1791}, 0, {  4056,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1279,  -2533,  -1791}, 0, {     0,    582}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1279,  -2559,  -1791}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -767,  -2533,  -1791}, 0, {  4056,    582}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1279,  -2508,  -2047}, 0, { -3096,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,  -2508,  -2047}, 0, {   990,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,  -2508,  -2303}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,  -2508,  -2303}, 0, { -3096,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2815,  -2559,  -1791}, 0, {-15360,   4054}, {0xfc, 0x7e, 0x00, 0xff}}},\n    {{{ -1279,  -2508,  -2303}, 0, { -3096,      0}, {0xfc, 0x7e, 0x00, 0xff}}},\n    {{{ -2815,  -2559,  -2303}, 0, {-15360,      0}, {0xfc, 0x7e, 0x00, 0xff}}},\n    {{{ -1279,  -2508,  -1791}, 0, { -3096,   4054}, {0xfc, 0x7e, 0x00, 0xff}}},\n};\n\n// 0x0700A370 - 0x0700A460\nstatic const Vtx wdw_seg7_vertex_0700A370[] = {\n    {{{  1280,  -1279,   2176}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1152,  -1407,   2048}, 0, {  1414,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1152,  -1279,   2048}, 0, {  1414,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -767,  -2533,  -2047}, 0, {  4056,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1279,  -2508,  -2047}, 0, {     0,    582}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1279,  -2533,  -2047}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -767,  -2508,  -2047}, 0, {  4056,    582}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1279,  -2533,  -1791}, 0, {   376,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,  -2508,  -2047}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,  -2508,  -1791}, 0, {     0,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,  -2533,  -2047}, 0, {   376,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2304,  -1279,   2176}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1280,  -1407,   2176}, 0, {  8144,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1280,  -1279,   2176}, 0, {  8144,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2304,  -1407,   2176}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700A460 - 0x0700A550\nstatic const Vtx wdw_seg7_vertex_0700A460[] = {\n    {{{  1280,  -1279,   -127}, 0, {  8144,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2304,  -1407,   -127}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2304,  -1279,   -127}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1280,  -1279,   2176}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1280,  -1407,   2176}, 0, {     0,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1152,  -1407,   2048}, 0, {  1414,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1152,  -1279,   2048}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1152,  -1407,   2048}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1152,  -1407,      0}, 0, { 16320,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1152,  -1279,      0}, 0, { 16320,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1152,  -1279,      0}, 0, {     0,      0}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{  1152,  -1407,      0}, 0, {     0,    990}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{  1280,  -1407,   -127}, 0, {  1414,    990}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{  1280,  -1279,   -127}, 0, {  1414,      0}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{  1280,  -1407,   -127}, 0, {  8144,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0700A550 - 0x0700A640\nstatic const Vtx wdw_seg7_vertex_0700A550[] = {\n    {{{  1024,  -1279,      0}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1152,  -1279,      0}, 0, {   480,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,  -1279,   -127}, 0, {  -542,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2304,  -1279,   2304}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2304,  -1279,   2176}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,  -1279,   2176}, 0, { -7184,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,  -1279,   2304}, 0, { -7184,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,  -1279,   2304}, 0, {  2012,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,  -1279,   2176}, 0, {  1502,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1152,  -1279,   2048}, 0, {   480,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,  -1279,   2048}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,  -1279,   2048}, 0, { 17342,  10186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1152,  -1279,      0}, 0, {   990,   9164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,  -1279,      0}, 0, {   990,  10186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1152,  -1279,   2048}, 0, { 17342,   9164}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700A640 - 0x0700A730\nstatic const Vtx wdw_seg7_vertex_0700A640[] = {\n    {{{  1280,  -2559,   2304}, 0, { 18364,  10186}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1024,  -1279,   2048}, 0, { 16320,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1024,  -2559,   2048}, 0, { 16320,  10186}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1024,  -1279,      0}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,  -1279,   -127}, 0, {  -542,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,  -1279,   -255}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,  -1279,   -255}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,  -1279,   -127}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2304,  -1279,   -127}, 0, { -7184,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2304,  -1279,   -255}, 0, { -7184,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2304,  -2559,   2304}, 0, {     0,   9164}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2304,  -1279,   2304}, 0, {     0,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1280,  -1279,   2304}, 0, {  8144,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1280,  -2559,   2304}, 0, {  8144,   9164}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1280,  -1279,   2304}, 0, { 18364,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x0700A730 - 0x0700A820\nstatic const Vtx wdw_seg7_vertex_0700A730[] = {\n    {{{  1024,  -2303,    947}, 0, {     0,   1070}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1034,  -2303,    947}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1034,  -2303,   1101}, 0, {  1194,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1024,  -2559,      0}, 0, {     0,  10186}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1024,  -1279,      0}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1280,  -1279,   -255}, 0, { -2074,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1280,  -2559,   -255}, 0, { -2074,  10186}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1280,  -2559,   -255}, 0, {  8144,   9164}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2304,  -1279,   -255}, 0, {     0,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2304,  -2559,   -255}, 0, {     0,   9164}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1280,  -1279,   -255}, 0, {  8144,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1024,  -2303,   1101}, 0, {   990,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1034,  -2303,   1101}, 0, {   908,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1034,  -2559,   1101}, 0, {   908,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1024,  -2559,   1101}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700A820 - 0x0700A910\nstatic const Vtx wdw_seg7_vertex_0700A820[] = {\n    {{{  1024,  -2303,   1101}, 0, {  8758,  -1054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,  -2559,   2048}, 0, { 16320,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,  -1279,   2048}, 0, { 16320,  -9230}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,  -2303,    947}, 0, {     0,   1070}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1034,  -2303,   1101}, 0, {  1194,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1024,  -2303,   1101}, 0, {  1194,   1070}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1024,  -2559,    947}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1034,  -2559,    947}, 0, {   908,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1034,  -2303,    947}, 0, {   908,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1024,  -2303,    947}, 0, {   990,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1024,  -1279,      0}, 0, {     0,  -9230}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,  -2303,    947}, 0, {  7530,  -1054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,  -2559,   1101}, 0, {  8758,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,  -2559,      0}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1024,  -2559,    947}, 0, {  7530,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700A910 - 0x0700AA10\nstatic const Vtx wdw_seg7_vertex_0700A910[] = {\n    {{{  -215,   -332,   3584}, 0, {  -620,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -692,   -332,   3714}, 0, {  1282,    470}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -363,   -332,   3840}, 0, {     0,    -34}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -617,   -332,   3584}, 0, {   982,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -692,   -332,   3454}, 0, {  1282,   1506}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -363,   -332,   3200}, 0, {     0,   2522}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1171,   -332,   3200}, 0, {  3192,   2522}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -842,   -332,   3454}, 0, {  1880,   1506}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1171,   -332,   3840}, 0, {  3192,    -34}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1319,   -332,   3584}, 0, {  3784,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -917,   -332,   3584}, 0, {  2180,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -842,   -332,   3714}, 0, {  1880,    470}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -363,   -409,   3840}, 0, {     0,    -34}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -617,   -409,   3584}, 0, {   982,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -215,   -409,   3584}, 0, {  -620,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -692,   -409,   3714}, 0, {  1282,    470}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0700AA10 - 0x0700AB00\nstatic const Vtx wdw_seg7_vertex_0700AA10[] = {\n    {{{  -863,  -1100,   3680}, 0, {  1502,   1192}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -863,   -895,   3680}, 0, {  1502,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -863,   -895,   3488}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -842,   -409,   3714}, 0, {  1880,    470}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1171,   -409,   3840}, 0, {  3192,    -34}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1171,   -409,   3200}, 0, {  3192,   2522}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -215,   -409,   3584}, 0, {  -620,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -692,   -409,   3454}, 0, {  1282,   1506}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -842,   -409,   3454}, 0, {  1880,   1506}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -917,   -409,   3584}, 0, {  2180,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1319,   -409,   3584}, 0, {  3784,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -363,   -409,   3200}, 0, {     0,   2522}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -363,   -409,   3840}, 0, {     0,    -34}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -692,   -409,   3714}, 0, {  1282,    470}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -617,   -409,   3584}, 0, {   982,    990}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0700AB00 - 0x0700ABF0\nstatic const Vtx wdw_seg7_vertex_0700AB00[] = {\n    {{{ -1151,  -1791,   3200}, 0, {     0,   3544}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1151,  -1791,   3840}, 0, {  5078,   3544}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1151,  -1343,   3840}, 0, {  5078,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -863,  -1100,   3680}, 0, {  1502,   1192}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -863,   -895,   3488}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -863,  -1100,   3488}, 0, {     0,   1192}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -863,  -1100,   3488}, 0, {   990,   1192}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -671,   -895,   3488}, 0, {  -542,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -671,  -1100,   3488}, 0, {  -540,   1192}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -863,   -895,   3488}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -671,  -1100,   3488}, 0, {  1502,   1192}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -671,   -895,   3680}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -671,  -1100,   3680}, 0, {     0,   1192}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -671,   -895,   3488}, 0, {  1502,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1151,  -1343,   3200}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700ABF0 - 0x0700ACD0\nstatic const Vtx wdw_seg7_vertex_0700ABF0[] = {\n    {{{ -1023,  -1791,   3200}, 0, {  5078,   3544}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1151,  -1791,   3200}, 0, {  6100,   3544}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1151,  -1343,   3200}, 0, {  6100,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1023,  -1535,   3200}, 0, {  5078,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -383,  -1343,   3200}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -895,  -1407,   3200}, 0, {  4056,    478}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -639,  -1407,   3200}, 0, {  2012,    478}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -383,  -1791,   3200}, 0, {     0,   3544}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -511,  -1791,   3200}, 0, {   990,   3544}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -511,  -1535,   3200}, 0, {   990,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -383,  -1791,   3200}, 0, {   990,   3542}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -383,  -1343,   3840}, 0, { -4118,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -383,  -1791,   3840}, 0, { -4118,   3542}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -383,  -1343,   3200}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700ACD0 - 0x0700AD10\nstatic const Vtx wdw_seg7_vertex_0700ACD0[] = {\n    {{{  -863,  -1100,   3680}, 0, {  -540,   1192}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -671,  -1100,   3680}, 0, {   990,   1192}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -671,   -895,   3680}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -863,   -895,   3680}, 0, {  -540,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0700AD10 - 0x0700AE00\nstatic const Vtx wdw_seg7_vertex_0700AD10[] = {\n    {{{  -511,  -1791,   3200}, 0, {     0,   1498}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,  -1535,   3712}, 0, {  4056,   -542}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,  -1535,   3200}, 0, {     0,   -542}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -895,  -1407,   3200}, 0, {   990,    480}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{  -895,  -1407,   3712}, 0, { -3096,    478}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{ -1023,  -1535,   3712}, 0, { -3096,   1498}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{ -1023,  -1535,   3200}, 0, {   990,   1500}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{ -1023,  -1535,   3200}, 0, {   990,   1500}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1023,  -1535,   3712}, 0, { -3096,   1498}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1023,  -1791,   3712}, 0, { -3096,   3542}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1023,  -1791,   3200}, 0, {   990,   3542}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -639,  -1407,   3200}, 0, { -3096,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -639,  -1407,   3712}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -895,  -1407,   3712}, 0, {   990,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -895,  -1407,   3200}, 0, { -3096,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0700AE00 - 0x0700AED0\nstatic const Vtx wdw_seg7_vertex_0700AE00[] = {\n    {{{  -511,  -1535,   3200}, 0, {     0,   -542}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  -639,  -1407,   3712}, 0, {  4056,  -1564}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  -639,  -1407,   3200}, 0, {     0,  -1564}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  -511,  -1535,   3712}, 0, {  4056,   -542}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{  -511,  -1791,   3712}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -639,  -1407,   3712}, 0, {   990,  -2076}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -511,  -1535,   3712}, 0, {     0,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -511,  -1791,   3200}, 0, {     0,   1498}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,  -1791,   3712}, 0, {  4056,   1500}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,  -1535,   3712}, 0, {  4056,   -542}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1023,  -1535,   3712}, 0, {  4056,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -895,  -1407,   3712}, 0, {  3034,  -2076}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1023,  -1791,   3712}, 0, {  4056,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700AED0 - 0x0700AFB0\nstatic const Vtx wdw_seg7_vertex_0700AED0[] = {\n    {{{ -2815,  -2047,   -767}, 0, { -3096,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2815,  -1996,  -1791}, 0, { -3352,     32}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2815,  -2047,  -1791}, 0, { -3096,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2815,  -1996,   -767}, 0, { -3352,    926}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2815,  -1996,   -767}, 0, { -3352,    926}, {0xbd, 0x6b, 0x00, 0xff}}},\n    {{{ -2175,  -1598,  -1279}, 0, { -5140,    480}, {0xbd, 0x6b, 0x00, 0xff}}},\n    {{{ -2815,  -1996,  -1791}, 0, { -3352,     32}, {0xbd, 0x6b, 0x00, 0xff}}},\n    {{{ -1279,  -2047,  -1791}, 0, { -3096,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,  -1996,   -767}, 0, { -3352,    926}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,  -2047,   -767}, 0, { -3096,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,  -1996,  -1791}, 0, { -3352,     32}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,  -1996,  -1791}, 0, { -3352,     32}, {0x43, 0x6b, 0x00, 0xff}}},\n    {{{ -1919,  -1598,  -1279}, 0, { -5140,    480}, {0x43, 0x6b, 0x00, 0xff}}},\n    {{{ -1279,  -1996,   -767}, 0, { -3352,    926}, {0x43, 0x6b, 0x00, 0xff}}},\n};\n\n// 0x0700AFB0 - 0x0700B0B0\nstatic const Vtx wdw_seg7_vertex_0700AFB0[] = {\n    {{{ -1919,  -1598,  -1279}, 0, { -1048,    990}, {0x00, 0x64, 0xb3, 0xff}}},\n    {{{ -1279,  -1996,  -1791}, 0, {   734,    990}, {0x00, 0x64, 0xb3, 0xff}}},\n    {{{ -2815,  -1996,  -1791}, 0, {   734,   -106}, {0x00, 0x64, 0xb3, 0xff}}},\n    {{{ -2175,  -1598,  -1279}, 0, { -1048,   -106}, {0x00, 0x64, 0xb3, 0xff}}},\n    {{{ -1279,  -1996,  -1791}, 0, {   734,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2815,  -2047,  -1791}, 0, {   990,   -106}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2815,  -1996,  -1791}, 0, {   734,   -106}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1279,  -2047,  -1791}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2815,  -2047,   -767}, 0, {  2008,   -104}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1279,  -1996,   -767}, 0, {  1754,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2815,  -1996,   -767}, 0, {  1754,   -104}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1279,  -2047,   -767}, 0, {  2008,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1279,  -1996,   -767}, 0, {  1754,    990}, {0x00, 0x64, 0x4d, 0xff}}},\n    {{{ -2175,  -1598,  -1279}, 0, {     0,   -106}, {0x00, 0x64, 0x4d, 0xff}}},\n    {{{ -2815,  -1996,   -767}, 0, {  1754,   -104}, {0x00, 0x64, 0x4d, 0xff}}},\n    {{{ -1919,  -1598,  -1279}, 0, {     0,    990}, {0x00, 0x64, 0x4d, 0xff}}},\n};\n\n// 0x0700B0B0 - 0x0700B1A0\nstatic const Vtx wdw_seg7_vertex_0700B0B0[] = {\n    {{{ -1279,  -2559,   -767}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1279,  -2047,   -767}, 0, { -3096,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2815,  -2047,   -767}, 0, { -3096,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2815,  -2559,  -1689}, 0, {    -4,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2805,  -2303,  -1689}, 0, {     0,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2815,  -2303,  -1689}, 0, {    -4,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2805,  -2559,  -1689}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2815,  -2303,  -1535}, 0, {    -4,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2805,  -2303,  -1535}, 0, {     0,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2805,  -2559,  -1535}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2815,  -2559,  -1535}, 0, {    -4,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2815,  -2303,  -1689}, 0, {     0,    888}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2805,  -2303,  -1689}, 0, {  -112,    888}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2805,  -2303,  -1535}, 0, {  -112,    734}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2815,  -2303,  -1535}, 0, {     0,    734}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0700B1A0 - 0x0700B290\nstatic const Vtx wdw_seg7_vertex_0700B1A0[] = {\n    {{{ -2815,  -2303,  -1535}, 0, { -1052,    734}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2815,  -2559,   -767}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2815,  -2047,   -767}, 0, { -3096,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1279,  -2559,   -767}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2815,  -2047,   -767}, 0, { -3096,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2815,  -2559,   -767}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2815,  -2559,  -1791}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2815,  -2047,  -1791}, 0, { -3096,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1279,  -2047,  -1791}, 0, { -3096,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1279,  -2559,  -1791}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1279,  -2559,  -1791}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,  -2047,   -767}, 0, { -3096,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,  -2559,   -767}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,  -2047,  -1791}, 0, { -3096,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2815,  -2559,  -1535}, 0, {   990,    734}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700B290 - 0x0700B370\nstatic const Vtx wdw_seg7_vertex_0700B290[] = {\n    {{{  -665,   -306,   3379}, 0, {  -222,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -665,   -332,   2278}, 0, {  2522,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -665,   -306,   2278}, 0, {  2522,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2815,  -2303,  -1535}, 0, { -1052,    734}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2815,  -2047,   -767}, 0, { -3096,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2815,  -2047,  -1791}, 0, { -3096,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2815,  -2303,  -1689}, 0, { -1052,    888}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2815,  -2559,  -1689}, 0, {   990,    888}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2815,  -2559,  -1791}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -665,   -332,   3379}, 0, {  -222,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -869,   -332,   2278}, 0, {  2522,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -665,   -332,   2278}, 0, {  2522,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -665,   -332,   3379}, 0, {  -222,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -869,   -332,   3379}, 0, {  -222,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0700B370 - 0x0700B470\nstatic const Vtx wdw_seg7_vertex_0700B370[] = {\n    {{{  -869,   -306,   2278}, 0, {  2522,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -869,   -332,   2278}, 0, {  2522,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -869,   -332,   3379}, 0, {  -222,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -665,   -306,   2278}, 0, {  2522,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,   -306,   2278}, 0, {  2522,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,   -306,   3379}, 0, {  -222,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -869,   -306,   3379}, 0, {  -222,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -665,   -306,   2278}, 0, { -4118,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -869,   -332,   2278}, 0, { -4118,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -869,   -306,   2278}, 0, { -4118,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -665,   -332,   2278}, 0, { -4118,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -869,   -306,   3379}, 0, {  4822,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -869,   -332,   3379}, 0, {  4822,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -665,   -332,   3379}, 0, {  4822,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -665,   -306,   3379}, 0, {  4822,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -665,   -306,   3379}, 0, {  -222,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700B470 - 0x0700B570\nstatic const Vtx wdw_seg7_vertex_0700B470[] = {\n    {{{  -780,    256,   3597}, 0, {  2114,   -134}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -754,    256,   3571}, 0, {  2012,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -780,    256,   3571}, 0, {  2114,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -754,    256,   3597}, 0, {  2012,   -134}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -780,   -665,   3571}, 0, {   606,  -2690}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -754,    256,   3571}, 0, {   862,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -754,   -665,   3571}, 0, {   862,  -2690}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -754,   -665,   3571}, 0, {   862,  -2690}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -754,    256,   3597}, 0, {  1118,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -754,   -665,   3597}, 0, {  1118,  -2690}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -754,    256,   3571}, 0, {   862,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -780,    256,   3571}, 0, {   606,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -754,   -665,   3597}, 0, {    96,  -2690}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -780,    256,   3597}, 0, {   352,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -780,   -665,   3597}, 0, {   352,  -2690}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -754,    256,   3597}, 0, {    96,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0700B570 - 0x0700B630\nstatic const Vtx wdw_seg7_vertex_0700B570[] = {\n    {{{  -780,   -665,   3597}, 0, {   352,  -2690}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -780,    256,   3597}, 0, {   352,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -780,    256,   3571}, 0, {   606,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -780,   -665,   3571}, 0, {   606,  -2690}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3839,  -1023,   3328}, 0, {     0,  -3098}, {0x28, 0x78, 0x00, 0xff}}},\n    {{{ -3071,  -1279,   3328}, 0, {     0,   -220}, {0x28, 0x78, 0x00, 0xff}}},\n    {{{ -3071,  -1279,   1792}, 0, {  5444,   -220}, {0x28, 0x78, 0x00, 0xff}}},\n    {{{ -3071,  -1279,   3328}, 0, {     0,   -220}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2815,  -1279,   2048}, 0, {  4530,    664}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3071,  -1279,   1792}, 0, {  5444,   -220}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2815,  -1279,   3072}, 0, {   880,    664}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3839,  -1023,   1792}, 0, {  5444,  -3098}, {0x28, 0x78, 0x00, 0xff}}},\n};\n\n// 0x0700B630 - 0x0700B720\nstatic const Vtx wdw_seg7_vertex_0700B630[] = {\n    {{{  -255,   -332,   2304}, 0, {  4056,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -255,   -588,   2304}, 0, {  4056,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -255,   -588,   1280}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -255,   -332,   1280}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1279,   -588,   1280}, 0, {  4056,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1279,   -332,   1280}, 0, {  4056,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -255,   -588,   1280}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1279,   -332,   1280}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1279,   -588,   2304}, 0, {  4056,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1279,   -332,   2304}, 0, {  4056,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1279,   -588,   1280}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1279,   -332,   2304}, 0, {  4056,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,   -588,   2304}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,   -332,   2304}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1279,   -588,   2304}, 0, {  4056,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0700B720 - 0x0700B810\nstatic const Vtx wdw_seg7_vertex_0700B720[] = {\n    {{{  -863,   -895,   3680}, 0, {  1756,   1396}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -895,   -895,   3712}, 0, {  2012,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -895,   -895,   3456}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -255,   -332,   2304}, 0, {  4056,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -255,   -588,   1280}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -255,   -332,   1280}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3327,  -1407,   1024}, 0, {     0,   1412}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{ -3583,  -1151,      0}, 0, {  4056,      0}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{ -3583,  -1151,   1024}, 0, {     0,      0}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{ -3327,  -1407,      0}, 0, {  4056,   1412}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{ -3583,  -1151,      0}, 0, {  4056,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3839,  -1151,   1024}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3583,  -1151,   1024}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3839,  -1151,      0}, 0, {  4056,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -863,   -895,   3488}, 0, {   224,   1396}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0700B810 - 0x0700B910\nstatic const Vtx wdw_seg7_vertex_0700B810[] = {\n    {{{  -895,   -895,   3456}, 0, {     0,    990}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  -895,   -895,   3712}, 0, {  2012,    990}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  -780,   -665,   3597}, 0, {  1092,   -850}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  -780,   -665,   3571}, 0, {   888,   -850}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  -895,  -1151,   3712}, 0, {  2012,    990}, {0x95, 0x43, 0x00, 0xff}}},\n    {{{  -863,  -1100,   3488}, 0, {   224,    508}, {0x95, 0x43, 0x00, 0xff}}},\n    {{{  -895,  -1151,   3456}, 0, {     0,    990}, {0x95, 0x43, 0x00, 0xff}}},\n    {{{  -863,  -1100,   3680}, 0, {  1756,    508}, {0x95, 0x43, 0x00, 0xff}}},\n    {{{  -863,   -895,   3488}, 0, {  1756,   1396}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -639,   -895,   3456}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -671,   -895,   3488}, 0, {   224,   1396}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -895,   -895,   3456}, 0, {  2012,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -639,   -895,   3456}, 0, {     0,    990}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  -895,   -895,   3456}, 0, {  2012,    990}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  -780,   -665,   3571}, 0, {  1092,   -850}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  -754,   -665,   3571}, 0, {   888,   -850}, {0x00, 0x38, 0x8f, 0xff}}},\n};\n\n// 0x0700B910 - 0x0700BA10\nstatic const Vtx wdw_seg7_vertex_0700B910[] = {\n    {{{  -895,  -1151,   3456}, 0, {  2012,    990}, {0x00, 0x43, 0x95, 0xff}}},\n    {{{  -863,  -1100,   3488}, 0, {  1756,    508}, {0x00, 0x43, 0x95, 0xff}}},\n    {{{  -671,  -1100,   3488}, 0, {   224,    508}, {0x00, 0x43, 0x95, 0xff}}},\n    {{{  -639,  -1151,   3456}, 0, {     0,    990}, {0x00, 0x43, 0x95, 0xff}}},\n    {{{  -671,   -895,   3488}, 0, {  1756,   1396}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -639,   -895,   3712}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -671,   -895,   3680}, 0, {   224,   1396}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -639,   -895,   3456}, 0, {  2012,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -639,   -895,   3712}, 0, {     0,    990}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  -754,   -665,   3571}, 0, {  1092,   -850}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  -754,   -665,   3597}, 0, {   888,   -850}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  -639,   -895,   3456}, 0, {  2012,    990}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  -639,  -1151,   3456}, 0, {  2012,    990}, {0x6b, 0x43, 0x00, 0xff}}},\n    {{{  -671,  -1100,   3680}, 0, {   224,    508}, {0x6b, 0x43, 0x00, 0xff}}},\n    {{{  -639,  -1151,   3712}, 0, {     0,    990}, {0x6b, 0x43, 0x00, 0xff}}},\n    {{{  -671,  -1100,   3488}, 0, {  1756,    508}, {0x6b, 0x43, 0x00, 0xff}}},\n};\n\n// 0x0700BA10 - 0x0700BB00\nstatic const Vtx wdw_seg7_vertex_0700BA10[] = {\n    {{{  -863,   -895,   3680}, 0, {   224,   1396}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -639,   -895,   3712}, 0, {  2012,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -895,   -895,   3712}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1151,  -1343,   3840}, 0, {  5078,    990}, {0x97, 0x46, 0x00, 0xff}}},\n    {{{ -1023,  -1151,   3328}, 0, {   990,   -852}, {0x97, 0x46, 0x00, 0xff}}},\n    {{{ -1151,  -1343,   3200}, 0, {     0,    990}, {0x97, 0x46, 0x00, 0xff}}},\n    {{{ -1023,  -1151,   3840}, 0, {  5078,   -852}, {0x97, 0x46, 0x00, 0xff}}},\n    {{{ -1151,  -1343,   3200}, 0, {  6100,    990}, {0x00, 0x46, 0x97, 0xff}}},\n    {{{  -511,  -1151,   3328}, 0, {   990,   -852}, {0x00, 0x46, 0x97, 0xff}}},\n    {{{  -383,  -1343,   3200}, 0, {     0,    990}, {0x00, 0x46, 0x97, 0xff}}},\n    {{{ -1023,  -1151,   3328}, 0, {  5078,   -852}, {0x00, 0x46, 0x97, 0xff}}},\n    {{{  -383,  -1343,   3200}, 0, {  5078,    990}, {0x69, 0x46, 0x00, 0xff}}},\n    {{{  -511,  -1151,   3840}, 0, {     0,   -852}, {0x69, 0x46, 0x00, 0xff}}},\n    {{{  -383,  -1343,   3840}, 0, {     0,    990}, {0x69, 0x46, 0x00, 0xff}}},\n    {{{  -511,  -1151,   3328}, 0, {  4056,   -852}, {0x69, 0x46, 0x00, 0xff}}},\n};\n\n// 0x0700BB00 - 0x0700BC00\nstatic const Vtx wdw_seg7_vertex_0700BB00[] = {\n    {{{ -1023,  -1151,   3840}, 0, {  2524,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -895,  -1151,   3712}, 0, {  1884,    606}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -895,  -1151,   3456}, 0, {  1884,   1882}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -895,   -895,   3712}, 0, {     0,    990}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -639,   -895,   3712}, 0, {  2012,    990}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -754,   -665,   3597}, 0, {  1092,   -850}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -863,   -895,   3680}, 0, {   224,   1396}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -671,   -895,   3680}, 0, {  1756,   1396}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -639,   -895,   3712}, 0, {  2012,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -780,   -665,   3597}, 0, {   888,   -850}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -639,  -1151,   3712}, 0, {  1246,   1470}, {0x00, 0x43, 0x6b, 0xff}}},\n    {{{  -671,  -1100,   3680}, 0, {   990,    990}, {0x00, 0x43, 0x6b, 0xff}}},\n    {{{  -863,  -1100,   3680}, 0, {  -540,    990}, {0x00, 0x43, 0x6b, 0xff}}},\n    {{{  -895,  -1151,   3712}, 0, {  -796,   1470}, {0x00, 0x43, 0x6b, 0xff}}},\n    {{{  -639,  -1151,   3456}, 0, {   606,   1882}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,  -1151,   3328}, 0, {     0,   2522}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700BC00 - 0x0700BCF0\nstatic const Vtx wdw_seg7_vertex_0700BC00[] = {\n    {{{  1536,  -2559,  -1919}, 0, {  5078,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1536,  -2457,  -1919}, 0, {  5078,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1792,  -2457,  -1919}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -895,  -1151,   3456}, 0, {  1884,   1882}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,  -1151,   3328}, 0, {  2524,   2522}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,  -1151,   3840}, 0, {  2524,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,  -1151,   3328}, 0, {     0,   2522}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -639,  -1151,   3712}, 0, {   606,    606}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -895,  -1151,   3712}, 0, {  1884,    606}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,  -1151,   3840}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -639,  -1151,   3456}, 0, {   606,   1882}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,  -2559,   -639}, 0, { 15298,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1536,  -2457,  -1919}, 0, {-10250,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1536,  -2559,  -1919}, 0, {-10250,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1536,  -2457,   -639}, 0, { 15298,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700BCF0 - 0x0700BDE0\nstatic const Vtx wdw_seg7_vertex_0700BCF0[] = {\n    {{{  1792,  -2457,   -639}, 0, {  2012,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1741,  -2457,   -690}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1587,  -2457,   -690}, 0, { -2074,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,  -2559,  -1919}, 0, {  5078,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1792,  -2457,  -1919}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1792,  -2559,  -1919}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1792,  -2559,  -1919}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1792,  -2457,  -1919}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1792,  -2457,   -639}, 0, {-24558,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1792,  -2559,   -639}, 0, {-24558,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1792,  -2559,   -639}, 0, {  5078,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1536,  -2457,   -639}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1536,  -2559,   -639}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1792,  -2457,   -639}, 0, {  5078,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1536,  -2457,   -639}, 0, { -3096,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700BDE0 - 0x0700BED0\nstatic const Vtx wdw_seg7_vertex_0700BDE0[] = {\n    {{{ -3583,  -2559,   1024}, 0, {  5078,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3583,  -2457,   1024}, 0, {  5078,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3583,  -2457,   1792}, 0, { -2584,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1792,  -2457,  -1919}, 0, { 25518,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1741,  -2457,   -690}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1792,  -2457,   -639}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1741,  -2457,  -1868}, 0, { 24496,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,  -2457,  -1919}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1741,  -2457,  -1868}, 0, { -3096,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1792,  -2457,  -1919}, 0, { -4118,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1587,  -2457,  -1868}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,  -2457,   -639}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1587,  -2457,  -1868}, 0, {-23536,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,  -2457,  -1919}, 0, {-24558,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1587,  -2457,   -690}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700BED0 - 0x0700BF80\nstatic const Vtx wdw_seg7_vertex_0700BED0[] = {\n    {{{ -3583,  -2457,   1792}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3609,  -2457,   1766}, 0, {   480,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3813,  -2457,   1766}, 0, {   480,  -3610}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3583,  -2559,   1024}, 0, {  5078,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3583,  -2457,   1792}, 0, { -2584,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3583,  -2559,   1792}, 0, { -2584,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3609,  -2457,   1050}, 0, { 14788,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3583,  -2457,   1024}, 0, { 15298,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3839,  -2457,   1024}, 0, { 15298,  -4120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3813,  -2457,   1050}, 0, { 14788,  -3608}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3839,  -2457,   1792}, 0, {     0,  -4120}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700BF80 - 0x0700C070\nstatic const Vtx wdw_seg7_vertex_0700BF80[] = {\n    {{{ -2895,  -2559,   3137}, 0, {   -66,   4528}, {0xad, 0x00, 0x5f, 0xff}}},\n    {{{ -2887,  -2303,   3144}, 0, {     0,   3616}, {0xad, 0x00, 0x5f, 0xff}}},\n    {{{ -2895,  -2303,   3137}, 0, {   -66,   3616}, {0xad, 0x00, 0x5f, 0xff}}},\n    {{{ -2887,  -2303,   3144}, 0, {   624,   3616}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2815,  -1279,   3072}, 0, {   990,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3071,  -1279,   3328}, 0, {  -298,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2815,  -2559,   3072}, 0, {   990,   4528}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2887,  -2559,   3144}, 0, {   624,   4528}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2996,  -2303,   3253}, 0, {    78,   3616}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -3071,  -2559,   3328}, 0, {  -298,   4528}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2996,  -2559,   3253}, 0, {    78,   4528}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -2895,  -2303,   3137}, 0, {   516,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2996,  -2303,   3253}, 0, {     0,    954}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3003,  -2303,   3246}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2887,  -2303,   3144}, 0, {   516,    954}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0700C070 - 0x0700C160\nstatic const Vtx wdw_seg7_vertex_0700C070[] = {\n    {{{ -3071,  -2559,   1792}, 0, {  4530,   4528}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -3071,  -1279,   1792}, 0, {  4530,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2815,  -1279,   2048}, 0, {  3618,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2895,  -2559,   3137}, 0, {   -66,   4528}, {0xad, 0x00, 0x5f, 0xff}}},\n    {{{ -2887,  -2559,   3144}, 0, {     0,   4528}, {0xad, 0x00, 0x5f, 0xff}}},\n    {{{ -2887,  -2303,   3144}, 0, {     0,   3616}, {0xad, 0x00, 0x5f, 0xff}}},\n    {{{ -3003,  -2303,   3246}, 0, {   -66,   3616}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2996,  -2559,   3253}, 0, {     0,   4528}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -3003,  -2559,   3246}, 0, {   -66,   4528}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2996,  -2303,   3253}, 0, {     0,   3616}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -3839,  -2559,   1792}, 0, { -1746,   4528}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3839,  -1023,   1792}, 0, { -1746,   -944}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3071,  -1279,   1792}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3071,  -2559,   1792}, 0, {   990,   4528}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2815,  -2559,   2048}, 0, {  3618,   4528}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0700C160 - 0x0700C250\nstatic const Vtx wdw_seg7_vertex_0700C160[] = {\n    {{{ -3748,  -2559,  -1263}, 0, {   960,    990}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{ -3839,   -511,  -1173}, 0, {   778,  -3098}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{ -3839,  -2559,  -1173}, 0, {   778,    990}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{ -2815,  -2559,   2048}, 0, {  3618,   4528}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2815,  -1279,   2048}, 0, {  3618,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2815,  -1279,   3072}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2815,  -2559,   3072}, 0, {     0,   4528}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3071,  -2559,   3328}, 0, {   990,   4528}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3071,  -1279,   3328}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3839,  -1023,   3328}, 0, { -1746,   -944}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3839,  -2559,   3328}, 0, { -1746,   4528}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3748,   -511,  -1263}, 0, {   960,  -3098}, {0x59, 0x00, 0x5a, 0xff}}},\n    {{{ -3748,  -2559,  -1444}, 0, {  1320,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3748,   -511,  -1263}, 0, {   960,  -3098}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3748,  -2559,  -1263}, 0, {   960,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700C250 - 0x0700C330\nstatic const Vtx wdw_seg7_vertex_0700C250[] = {\n    {{{   384,  -2559,   3840}, 0, {   734,   5076}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   384,    256,   3840}, 0, {   734,   -544}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   512,    256,   3712}, 0, {   480,   -544}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -3748,  -2559,  -1444}, 0, {  1320,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3748,   -511,  -1444}, 0, {  1320,  -3098}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3748,   -511,  -1263}, 0, {   960,  -3098}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3839,  -2559,  -1535}, 0, {  1500,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -3748,   -511,  -1444}, 0, {  1320,  -3098}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -3748,  -2559,  -1444}, 0, {  1320,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -3839,   -511,  -1535}, 0, {  1500,  -3098}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   640,  -2559,   3712}, 0, {   224,   5076}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   768,    256,   3840}, 0, {     0,   -544}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   768,  -2559,   3840}, 0, {     0,   5076}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   640,    256,   3712}, 0, {   224,   -544}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0700C330 - 0x0700C410\nstatic const Vtx wdw_seg7_vertex_0700C330[] = {\n    {{{   512,  -2559,   3712}, 0, {   480,   5076}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   640,    256,   3712}, 0, {   224,   -544}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   640,  -2559,   3712}, 0, {   224,   5076}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   512,    256,   3712}, 0, {   480,   -544}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   384,  -2559,   3840}, 0, {   734,   5076}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   512,    256,   3712}, 0, {   480,   -544}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   512,  -2559,   3712}, 0, {   480,   5076}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2175,  -2559,   3712}, 0, {  5844,   5076}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2047,    256,   3712}, 0, {  5590,   -544}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2047,  -2559,   3712}, 0, {  5590,   5076}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2303,  -2559,   3840}, 0, {  6100,   5076}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2175,    256,   3712}, 0, {  5844,   -544}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2175,  -2559,   3712}, 0, {  5844,   5076}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2175,    256,   3712}, 0, {  5844,   -544}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700C410 - 0x0700C480\nstatic const Vtx wdw_seg7_vertex_0700C410[] = {\n    {{{ -2047,  -2559,   3712}, 0, {  5590,   5076}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2047,    256,   3712}, 0, {  5590,   -544}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1919,    256,   3840}, 0, {  5334,   -544}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1919,  -2559,   3840}, 0, {  5334,   5076}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -2303,  -2559,   3840}, 0, {  6100,   5076}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2303,    256,   3840}, 0, {  6100,   -544}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -2175,    256,   3712}, 0, {  5844,   -544}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0700C480 - 0x0700C570\nstatic const Vtx wdw_seg7_vertex_0700C480[] = {\n    {{{   128,  -2559,   1664}, 0, { -6162,   2418}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   128,  -1945,   -127}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   128,  -2559,   -127}, 0, {   990,   2418}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,  -2559,   1792}, 0, {   478,   2418}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -255,  -1945,   2048}, 0, {  -540,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -255,  -2559,   2048}, 0, {  -542,   2418}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -255,  -1945,   1792}, 0, {   478,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -383,  -2559,   2048}, 0, {  -542,   2418}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -383,  -1945,   2048}, 0, {  -540,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -383,  -1945,   1664}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -383,  -2559,   1664}, 0, {   990,   2418}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -383,  -2559,   1664}, 0, {  2012,   2418}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   128,  -1945,   1664}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   128,  -2559,   1664}, 0, {     0,   2418}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -383,  -1945,   1664}, 0, {  2012,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700C570 - 0x0700C660\nstatic const Vtx wdw_seg7_vertex_0700C570[] = {\n    {{{  -511,  -2559,   -255}, 0, {  2522,   2418}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   128,  -1945,   -255}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   128,  -2559,   -255}, 0, {     0,   2418}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   128,  -2559,   1664}, 0, { -6162,   2418}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   128,  -1945,   1664}, 0, { -6162,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   128,  -1945,   -127}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   128,  -2559,   -127}, 0, {     0,   2418}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   128,  -1945,   -127}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,  -1945,   -127}, 0, {  2522,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,  -2559,   -127}, 0, {  2522,   2418}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,  -2559,   -127}, 0, {  8144,   2418}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,  -1945,   -127}, 0, {  8144,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,  -1945,   -255}, 0, {  8654,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,  -2559,   -255}, 0, {  8654,   2418}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,  -1945,   -255}, 0, {  2522,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700C660 - 0x0700C750\nstatic const Vtx wdw_seg7_vertex_0700C660[] = {\n    {{{   128,  -2559,   1792}, 0, {     0,   2418}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   128,  -1945,   1792}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,  -1945,   1792}, 0, {  1500,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   128,  -2559,   -255}, 0, {   990,   2418}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   128,  -1945,   -255}, 0, {   990,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   256,  -1945,   -127}, 0, {   268,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   256,  -2559,   -127}, 0, {   268,   2418}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   256,  -2559,   -127}, 0, {   990,   2418}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,  -1945,   1664}, 0, { -6162,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,  -2559,   1664}, 0, { -6162,   2418}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,  -1945,   -127}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,  -2559,   1664}, 0, {   990,   2418}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   128,  -1945,   1792}, 0, {   268,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   128,  -2559,   1792}, 0, {   268,   2418}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   256,  -1945,   1664}, 0, {   990,      0}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x0700C750 - 0x0700C840\nstatic const Vtx wdw_seg7_vertex_0700C750[] = {\n    {{{ -1279,  -2559,   1792}, 0, {  5588,   2418}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1663,  -1945,   1792}, 0, {  7122,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1663,  -2559,   1792}, 0, {  7122,   2418}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   128,  -2559,   1792}, 0, {     0,   2418}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,  -1945,   1792}, 0, {  1500,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,  -2559,   1792}, 0, {  1500,   2418}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1151,  -2559,   1664}, 0, {   990,   2418}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1151,  -1945,   1664}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1151,  -1945,   2048}, 0, {  -540,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1151,  -2559,   2048}, 0, {  -542,   2418}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,  -2559,   2048}, 0, {  -542,   2418}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1279,  -1945,   2048}, 0, {  -540,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1279,  -1945,   1792}, 0, {   478,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1279,  -2559,   1792}, 0, {   478,   2418}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1279,  -1945,   1792}, 0, {  5588,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0700C840 - 0x0700C930\nstatic const Vtx wdw_seg7_vertex_0700C840[] = {\n    {{{ -1663,  -2559,   -255}, 0, {  7122,   2418}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1023,  -1945,   -255}, 0, {  4566,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1023,  -2559,   -255}, 0, {  4566,   2418}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1663,  -2559,   1792}, 0, {   690,   2418}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1663,  -1945,   1792}, 0, {   690,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1791,  -1945,   1664}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1791,  -2559,   1664}, 0, {     0,   2418}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1791,  -2559,   1664}, 0, { -6162,   2418}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1791,  -1945,   1664}, 0, { -6162,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1791,  -1945,   -127}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1791,  -2559,   -127}, 0, {   990,   2418}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1791,  -2559,   -127}, 0, {   690,   2418}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1791,  -1945,   -127}, 0, {   690,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1663,  -1945,   -255}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1663,  -2559,   -255}, 0, {     0,   2418}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0700C930 - 0x0700CA20\nstatic const Vtx wdw_seg7_vertex_0700C930[] = {\n    {{{ -1663,  -2559,   -127}, 0, {   990,   2418}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1663,  -1945,   -127}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1663,  -1945,   1664}, 0, { -6162,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1663,  -2559,   -255}, 0, {  7122,   2418}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1663,  -1945,   -255}, 0, {  7122,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1023,  -1945,   -255}, 0, {  4566,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1023,  -2559,   -255}, 0, {  8654,   2418}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1023,  -1945,   -255}, 0, {  8654,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1023,  -1945,   -127}, 0, {  8144,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1023,  -2559,   -127}, 0, {  8144,   2418}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1023,  -2559,   -127}, 0, {  4566,   2418}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1663,  -1945,   -127}, 0, {  7122,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1663,  -2559,   -127}, 0, {  7122,   2418}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1023,  -1945,   -127}, 0, {  4566,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1663,  -2559,   1664}, 0, { -6162,   2418}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700CA20 - 0x0700CB20\nstatic const Vtx wdw_seg7_vertex_0700CA20[] = {\n    {{{ -1663,  -1945,   1664}, 0, {  5590,   1500}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1791,  -1945,   -127}, 0, {  6100,   8654}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1791,  -1945,   1664}, 0, {  6100,   1500}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1663,  -2559,   1664}, 0, {  7122,   2418}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1151,  -1945,   1664}, 0, {  5078,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1151,  -2559,   1664}, 0, {  5078,   2418}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1663,  -1945,   1664}, 0, {  7122,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1151,  -1945,   1664}, 0, {  3546,   1500}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,  -1945,   1792}, 0, {  4056,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,  -1945,   2048}, 0, {  4056,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1663,  -1945,   1792}, 0, {  5590,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1151,  -1945,   2048}, 0, {  3546,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1663,  -1945,   -127}, 0, {  5590,   8654}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,  -1945,   1664}, 0, { -2074,   1498}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   128,  -1945,   -127}, 0, { -1564,   8654}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   128,  -1945,   1664}, 0, { -1564,   1498}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700CB20 - 0x0700CC20\nstatic const Vtx wdw_seg7_vertex_0700CB20[] = {\n    {{{ -1663,  -1945,   -127}, 0, {  5590,   8654}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1663,  -1945,   -255}, 0, {  5590,   9164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1791,  -1945,   -127}, 0, {  6100,   8654}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,  -1945,   -127}, 0, {  3034,   8654}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,  -1945,   -255}, 0, {  3034,   9164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,  -1945,   1792}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -383,  -1945,   2048}, 0, {   480,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,  -1945,   2048}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   128,  -1945,   1792}, 0, { -1564,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   128,  -1945,   1664}, 0, { -1564,   1498}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -383,  -1945,   1664}, 0, {   480,   1500}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,  -1945,   1664}, 0, { -2074,   1498}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,  -1945,   -127}, 0, { -2074,   8654}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   128,  -1945,   -127}, 0, { -1564,   8654}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   128,  -1945,   -255}, 0, { -1564,   9164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,  -1945,   -127}, 0, {   990,   8654}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700CC20 - 0x0700CC50\nstatic const Vtx wdw_seg7_vertex_0700CC20[] = {\n    {{{   128,  -1945,   -255}, 0, { -1564,   9164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,  -1945,   -255}, 0, {   990,   9164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,  -1945,   -127}, 0, {   990,   8654}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700CC50 - 0x0700CD30\nstatic const Vtx wdw_seg7_vertex_0700CC50[] = {\n    {{{  2048,  -1330,   3712}, 0, {  1502,  -3916}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,  -1330,   3840}, 0, {  2012,  -3916}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,  -1125,   3840}, 0, {  2012,  -4734}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,  -1125,   3584}, 0, {   990,  -4734}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,  -1586,   3584}, 0, {   990,  -2894}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2048,  -1586,   3712}, 0, {  1502,  -2894}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1792,  -1842,   3584}, 0, {  2012,  -1872}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,  -1586,   3584}, 0, {   990,  -2894}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2304,  -1842,   3584}, 0, {     0,  -1872}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,  -1125,   3584}, 0, {   990,  -4734}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2304,  -1125,   3584}, 0, {     0,  -4734}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1792,  -2559,   3840}, 0, {  2012,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1792,  -1586,   3840}, 0, {  2012,  -2894}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1792,  -2559,   3328}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700CD30 - 0x0700CE20\nstatic const Vtx wdw_seg7_vertex_0700CD30[] = {\n    {{{  1920,  -1586,   3840}, 0, {  2012,  -2894}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1920,  -1330,   3840}, 0, {  2012,  -3916}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1920,  -1330,   3712}, 0, {  1502,  -3916}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1792,  -1586,   3840}, 0, {  2012,  -2894}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1792,  -1842,   3584}, 0, {   990,  -1872}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1792,  -2559,   3328}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1792,  -1586,   3584}, 0, {   990,  -2894}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1792,  -1842,   3328}, 0, {     0,  -1872}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1792,  -2559,   3328}, 0, {  2012,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1792,  -1842,   3328}, 0, {  2012,  -1872}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2304,  -1842,   3328}, 0, {     0,  -1872}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2304,  -2559,   3328}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1792,  -1842,   3584}, 0, {  2012,  -1872}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1792,  -1586,   3584}, 0, {  2012,  -2894}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,  -1586,   3584}, 0, {   990,  -2894}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700CE20 - 0x0700CF10\nstatic const Vtx wdw_seg7_vertex_0700CE20[] = {\n    {{{ -2559,   -511,  -1023}, 0, {  1246,   4820}, {0x78, 0xd8, 0x00, 0xff}}},\n    {{{ -2303,    256,   -767}, 0, {  1502,   4566}, {0x78, 0xd8, 0x00, 0xff}}},\n    {{{ -2303,    256,   3840}, 0, {  1502,      0}, {0x78, 0xd8, 0x00, 0xff}}},\n    {{{  1920,  -1586,   3840}, 0, {  2012,  -2894}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1920,  -1330,   3712}, 0, {  1502,  -3916}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1920,  -1586,   3712}, 0, {  1502,  -2894}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1920,  -1586,   3712}, 0, {  1502,  -2894}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1920,  -1330,   3712}, 0, {  1502,  -3916}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,  -1330,   3712}, 0, {   990,  -3916}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,  -1586,   3712}, 0, {   990,  -2894}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3839,   -511,   3840}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3839,   -511,  -2303}, 0, {     0,   6098}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2559,   -511,  -1023}, 0, {  1246,   4820}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2559,   -511,   3840}, 0, {  1246,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2559,   -511,   3840}, 0, {  1246,      0}, {0x78, 0xd8, 0x00, 0xff}}},\n};\n\n// 0x0700CF10 - 0x0700CFF0\nstatic const Vtx wdw_seg7_vertex_0700CF10[] = {\n    {{{  1024,   -511,  -1023}, 0, {  4822,   4820}, {0x00, 0xd8, 0x78, 0xff}}},\n    {{{ -2303,    256,   -767}, 0, {  1502,   4566}, {0x00, 0xd8, 0x78, 0xff}}},\n    {{{ -2559,   -511,  -1023}, 0, {  1246,   4820}, {0x00, 0xd8, 0x78, 0xff}}},\n    {{{ -3839,   -511,  -2303}, 0, {     0,   6098}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1024,   -511,  -1023}, 0, {  4822,   4820}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2559,   -511,  -1023}, 0, {  1246,   4820}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2304,   -511,  -2303}, 0, {  6100,   6098}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2304,   -511,   3840}, 0, {  6100,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1024,   -511,   3840}, 0, {  4822,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1024,   -511,   3840}, 0, {  4822,      0}, {0x88, 0xd8, 0x00, 0xff}}},\n    {{{   768,    256,   3840}, 0, {  4568,      0}, {0x88, 0xd8, 0x00, 0xff}}},\n    {{{   768,    256,   -767}, 0, {  4568,   4566}, {0x88, 0xd8, 0x00, 0xff}}},\n    {{{  1024,   -511,  -1023}, 0, {  4822,   4820}, {0x88, 0xd8, 0x00, 0xff}}},\n    {{{   768,    256,   -767}, 0, {  4568,   4566}, {0x00, 0xd8, 0x78, 0xff}}},\n};\n\n// 0x0700CFF0 - 0x0700D0E0\nstatic const Vtx wdw_seg7_vertex_0700CFF0[] = {\n    {{{   768,    256,   3840}, 0, {  4568,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2303,    256,   -767}, 0, {  1502,   4566}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   768,    256,   -767}, 0, {  4568,   4566}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2303,    256,   3840}, 0, {  1502,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3506,  -2559,      0}, 0, {   922,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3506,  -2303,     10}, 0, {   990,   -714}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3506,  -2303,      0}, 0, {   922,   -714}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3506,  -2559,     10}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3839,  -1151,   1024}, 0, {  1794,  -4028}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3327,  -1407,   1024}, 0, {     0,  -3116}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3583,  -1151,   1024}, 0, {   880,  -4028}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3660,  -2303,      0}, 0, {    36,   -714}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3660,  -2559,     10}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3660,  -2559,      0}, 0, {    36,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3660,  -2303,     10}, 0, {     0,   -714}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700D0E0 - 0x0700D1E0\nstatic const Vtx wdw_seg7_vertex_0700D0E0[] = {\n    {{{ -3506,  -2303,      0}, 0, {     0,   -100}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3506,  -2303,     10}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3660,  -2303,     10}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3660,  -2303,      0}, 0, {   990,   -100}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3839,  -1151,   1024}, 0, {  1794,  -4028}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3839,  -2559,   1024}, 0, {  1794,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3327,  -2559,   1024}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3327,  -1407,   1024}, 0, {     0,  -3116}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3327,  -2559,   1024}, 0, {  1428,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3327,  -1407,      0}, 0, {  5078,  -3116}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3327,  -1407,   1024}, 0, {  1428,  -3116}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3839,  -1151,      0}, 0, {  1794,  -4028}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3327,  -2559,      0}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3506,  -2303,      0}, 0, {   606,     78}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3660,  -2303,      0}, 0, {  1154,     78}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3660,  -2559,      0}, 0, {  1154,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700D1E0 - 0x0700D2E0\nstatic const Vtx wdw_seg7_vertex_0700D1E0[] = {\n    {{{ -3839,  -1151,      0}, 0, {  1794,  -4028}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3327,  -1407,      0}, 0, {     0,  -3116}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3327,  -2559,      0}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3660,  -2559,      0}, 0, {  1154,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3839,  -2559,      0}, 0, {  1794,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3583,  -1151,      0}, 0, {   880,  -4028}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3506,  -2559,      0}, 0, {   606,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3506,  -2303,      0}, 0, {   606,     78}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3327,  -2559,   1024}, 0, {  1428,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3327,  -2559,      0}, 0, {  5078,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3327,  -1407,      0}, 0, {  5078,  -3116}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1024,  -1791,  -2303}, 0, { 14276,  -8208}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,  -1791,  -2303}, 0, {     0,  -8208}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,  -1791,  -1023}, 0, {     0,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,  -1791,   -767}, 0, {  2012,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   768,  -1791,   -767}, 0, { 12232,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700D2E0 - 0x0700D3E0\nstatic const Vtx wdw_seg7_vertex_0700D2E0[] = {\n    {{{  1024,  -1791,  -2303}, 0, { 14276,  -8208}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   768,  -1791,   -767}, 0, { 12232,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,  -1791,  -1023}, 0, { 14276,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -767,  -1791,  -1023}, 0, {     0,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,  -1791,   -767}, 0, {  2012,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,  -2559,  -2303}, 0, {   990,   6098}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1024,  -1791,  -1023}, 0, { -9228,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1024,  -2559,  -1023}, 0, { -9228,   6098}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1024,  -1791,  -2303}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1024,  -2559,  -1023}, 0, { 12232,   6098}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   768,  -1791,   -767}, 0, { 10188,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   768,  -2559,   -767}, 0, { 10188,   6098}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1024,  -1791,  -1023}, 0, { 12232,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{    51,  -2303,   -767}, 0, {     0,   -114}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   205,  -2303,   -777}, 0, {  1194,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   205,  -2303,   -767}, 0, {  1194,   -114}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0700D3E0 - 0x0700D4D0\nstatic const Vtx wdw_seg7_vertex_0700D3E0[] = {\n    {{{  -511,  -2559,   -767}, 0, {     0,   6098}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -767,  -1791,  -1023}, 0, { -2074,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -767,  -2559,  -1023}, 0, { -2074,   6098}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -511,  -1791,   -767}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -767,  -2559,  -1023}, 0, { -9228,   6098}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -767,  -1791,  -1023}, 0, { -9228,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -767,  -1791,  -2303}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -767,  -2610,  -2303}, 0, {   990,   6098}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    51,  -2559,   -767}, 0, {   908,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    51,  -2559,   -777}, 0, {   990,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    51,  -2303,   -777}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    51,  -2303,   -767}, 0, {   908,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   205,  -2303,   -767}, 0, {  6100,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   768,  -1791,   -767}, 0, { 10188,  -5142}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,  -1791,   -767}, 0, {     0,  -5142}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0700D4D0 - 0x0700D5D0\nstatic const Vtx wdw_seg7_vertex_0700D4D0[] = {\n    {{{    51,  -2303,   -767}, 0, {     0,   -114}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    51,  -2303,   -777}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   205,  -2303,   -777}, 0, {  1194,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   205,  -2303,   -767}, 0, {   908,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   205,  -2559,   -777}, 0, {   990,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   205,  -2559,   -767}, 0, {   908,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   205,  -2303,   -777}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,  -1791,   -767}, 0, {     0,  -5142}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    51,  -2303,   -767}, 0, {  4874,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   205,  -2303,   -767}, 0, {  6100,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   205,  -2559,   -767}, 0, {  6100,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   768,  -2559,   -767}, 0, { 10188,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   768,  -1791,   -767}, 0, { 10188,  -5142}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -383,  -1791,   3200}, 0, { -2586,  -3610}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,  -1791,   2048}, 0, { -2074,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,  -1791,   2944}, 0, { -2074,  -2588}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700D5D0 - 0x0700D6C0\nstatic const Vtx wdw_seg7_vertex_0700D5D0[] = {\n    {{{  -511,  -1791,   -767}, 0, {     0,  -5142}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    51,  -2559,   -767}, 0, {  4874,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    51,  -2303,   -767}, 0, {  4874,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,  -2559,   -767}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1023,  -1791,   2944}, 0, {     0,  -2588}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1151,  -1791,   3200}, 0, {   480,  -3610}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -383,  -1791,   3200}, 0, { -2586,  -3610}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,  -1791,   2048}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,  -1791,   2048}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,  -1791,   2944}, 0, { -2074,  -2588}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1151,  -1791,   3840}, 0, {   480,  -6164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,  -1791,   2048}, 0, { -3096,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,  -1791,   2048}, 0, { -2074,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,  -1791,   3840}, 0, { -4118,  -6164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,  -1791,   2304}, 0, { -4118,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700D6C0 - 0x0700D770\nstatic const Vtx wdw_seg7_vertex_0700D6C0[] = {\n    {{{ -1023,  -2175,   2944}, 0, {  2012,  -2588}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,  -2175,   2944}, 0, {     0,  -2588}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,  -2175,   2048}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -383,  -1791,   3200}, 0, { -2586,  -3610}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -383,  -1791,   3840}, 0, { -2586,  -6164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,  -1791,   3840}, 0, { -4118,  -6164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,  -1791,   2048}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,  -1791,   2304}, 0, {  2012,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,  -1791,   3840}, 0, {  2012,  -6164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1151,  -1791,   3840}, 0, {   480,  -6164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,  -2175,   2048}, 0, {  2012,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700D770 - 0x0700D7B0\nstatic const Vtx wdw_seg7_vertex_0700D770[] = {\n    {{{ -1023,  -1791,   3712}, 0, {  4056,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,  -1791,   3200}, 0, {  2012,   2522}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,  -1791,   3200}, 0, {  4056,   2522}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,  -1791,   3712}, 0, {  2012,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700D7B0 - 0x0700D830\nstatic const Vtx wdw_seg7_vertex_0700D7B0[] = {\n    {{{  -255,   -588,   2304}, 0, {   480,   1500}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1279,   -588,   2304}, 0, {  1502,   1500}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -1279,   -588,   1280}, 0, {  1502,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -255,   -588,   1280}, 0, {   480,    478}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -255,   -332,   1280}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,   -332,   2304}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,   -332,   2304}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1279,   -332,   1280}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700D830 - 0x0700D870\nstatic const Vtx wdw_seg7_vertex_0700D830[] = {\n    {{{  1587,  -2457,   -690}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1741,  -2457,  -1868}, 0, {  7804,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1587,  -2457,  -1868}, 0, {  7804,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1741,  -2457,   -690}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700D870 - 0x0700D960\nstatic const Vtx wdw_seg7_vertex_0700D870[] = {\n    {{{ -3800,   -827,  -2815}, 0, {  6100,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3800,   -827,  -2303}, 0, {  6100,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3800,  -1219,  -2303}, 0, {  7122,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2854,  -1219,  -2815}, 0, {  2012,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2854,   -827,  -2303}, 0, {  3034,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2854,   -827,  -2815}, 0, {  3034,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2854,  -1219,  -2303}, 0, {  2012,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3131,  -1496,  -2815}, 0, {   990,    990}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{ -2854,  -1219,  -2303}, 0, {  2012,      0}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{ -2854,  -1219,  -2815}, 0, {  2012,    990}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{ -3131,  -1496,  -2303}, 0, {   990,      0}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{ -2854,   -827,  -2815}, 0, {  3034,    990}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{ -2854,   -827,  -2303}, 0, {  3034,      0}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{ -3131,   -550,  -2303}, 0, {  4056,      0}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{ -3131,   -550,  -2815}, 0, {  4056,    990}, {0xa7, 0xa7, 0x00, 0xff}}},\n};\n\n// 0x0700D960 - 0x0700DA40\nstatic const Vtx wdw_seg7_vertex_0700D960[] = {\n    {{{ -3131,   -550,  -2815}, 0, {  4056,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3131,   -550,  -2303}, 0, {  4056,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3523,   -550,  -2303}, 0, {  5078,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3523,   -550,  -2815}, 0, {  5078,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3523,   -550,  -2815}, 0, {  5078,    990}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{ -3523,   -550,  -2303}, 0, {  5078,      0}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{ -3800,   -827,  -2303}, 0, {  6100,      0}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{ -3800,   -827,  -2815}, 0, {  6100,    990}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{  3584,   -550,  -3131}, 0, {  8144,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2815,   -550,  -3523}, 0, {  7122,   8482}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3584,   -550,  -3523}, 0, {  7122,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3800,   -827,  -2815}, 0, {  6100,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3800,  -1219,  -2303}, 0, {  7122,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3800,  -1219,  -2815}, 0, {  7122,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700DA40 - 0x0700DB30\nstatic const Vtx wdw_seg7_vertex_0700DA40[] = {\n    {{{ -3800,  -1219,  -2815}, 0, {  7122,    990}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{ -3800,  -1219,  -2303}, 0, {  7122,      0}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{ -3523,  -1496,  -2303}, 0, {  8144,      0}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{ -3523,  -1496,  -2815}, 0, {  8144,    990}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{ -3523,  -1496,  -2815}, 0, {  8144,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3523,  -1496,  -2303}, 0, {  8144,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3131,  -1496,  -2303}, 0, {  9166,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3131,  -1496,  -2815}, 0, {  9166,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3584,   -827,  -2854}, 0, {  9166,      0}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{ -2815,   -550,  -3131}, 0, {  8144,   8482}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{  3584,   -550,  -3131}, 0, {  8144,      0}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{ -2815,   -827,  -2854}, 0, {  9166,   8482}, {0x00, 0xa7, 0xa7, 0xff}}},\n    {{{  3584,   -550,  -3131}, 0, {  8144,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2815,   -550,  -3131}, 0, {  8144,   8482}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2815,   -550,  -3523}, 0, {  7122,   8482}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0700DB30 - 0x0700DC20\nstatic const Vtx wdw_seg7_vertex_0700DB30[] = {\n    {{{  3584,  -1496,  -3131}, 0, {  3034,      0}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{ -2815,  -1219,  -2854}, 0, {  2012,   8482}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{  3584,  -1219,  -2854}, 0, {  2012,      0}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{  3584,   -550,  -3523}, 0, {  7122,      0}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{ -2815,   -827,  -3800}, 0, {  6100,   8482}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{  3584,   -827,  -3800}, 0, {  6100,      0}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{  3584,   -827,  -3800}, 0, {  6100,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2815,  -1219,  -3800}, 0, {  5078,   8482}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3584,  -1219,  -3800}, 0, {  5078,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2815,   -827,  -3800}, 0, {  6100,   8482}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2815,   -550,  -3523}, 0, {  7122,   8482}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{  3584,  -1219,  -3800}, 0, {  5078,      0}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -2815,  -1219,  -3800}, 0, {  5078,   8482}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -2815,  -1496,  -3523}, 0, {  4056,   8482}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{  3584,  -1496,  -3523}, 0, {  4056,      0}, {0x00, 0x59, 0x59, 0xff}}},\n};\n\n// 0x0700DC20 - 0x0700DD00\nstatic const Vtx wdw_seg7_vertex_0700DC20[] = {\n    {{{  3584,  -1219,  -2854}, 0, {  2012,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2815,  -1219,  -2854}, 0, {  2012,   8482}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2815,   -827,  -2854}, 0, {   990,   8482}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3584,   -827,  -2854}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3839,   -511,  -1535}, 0, {  -542,  -3098}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3839,  -2559,   3840}, 0, {-11272,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3839,  -2559,  -1535}, 0, {  -542,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3584,  -1496,  -3131}, 0, {  3034,      0}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{ -2815,  -1496,  -3131}, 0, {  3034,   8482}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{ -2815,  -1219,  -2854}, 0, {  2012,   8482}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{  3584,  -1496,  -3523}, 0, {  4056,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2815,  -1496,  -3131}, 0, {  3034,   8482}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3584,  -1496,  -3131}, 0, {  3034,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2815,  -1496,  -3523}, 0, {  4056,   8482}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700DD00 - 0x0700DE00\nstatic const Vtx wdw_seg7_vertex_0700DD00[] = {\n    {{{  2304,  -2559,   3840}, 0, {-11272,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2304,   -511,   3840}, 0, {-11272,  -3098}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2304,   -511,  -2303}, 0, {   990,  -3098}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2304,  -2559,  -2303}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3839,   -511,  -1535}, 0, {  -542,  -3098}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3839,   -511,   3840}, 0, {-11272,  -3098}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3839,  -2559,   3840}, 0, {-11272,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3839,  -2559,  -2303}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3839,  -1598,  -1535}, 0, {  -542,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3839,  -2559,  -1535}, 0, {  -542,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3839,  -1598,  -2303}, 0, {   990,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2752,  -1598,  -2303}, 0, {    94,   2136}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3839,  -1598,  -2303}, 0, { -2074,   2138}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3839,  -2559,  -2303}, 0, { -2074,   4054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2304,  -2559,  -2303}, 0, { 10188,   4054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2304,   -511,  -2303}, 0, { 10188,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0700DE00 - 0x0700DEE0\nstatic const Vtx wdw_seg7_vertex_0700DE00[] = {\n    {{{ -2752,  -1598,  -2303}, 0, {    94,   2136}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2304,   -511,  -2303}, 0, { 10188,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2752,   -511,  -2303}, 0, {    94,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2304,  -2559,  -2303}, 0, { 10188,   4054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3839,  -2559,  -2303}, 0, { -2074,   4054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2815,   -827,  -2854}, 0, {  2578,    928}, {0xbf, 0xa7, 0xc3, 0xff}}},\n    {{{ -2834,   -827,  -2834}, 0, {  2578,    872}, {0xbf, 0xa7, 0xc3, 0xff}}},\n    {{{ -3030,   -550,  -3030}, 0, {  3670,    872}, {0xbf, 0xa7, 0xc3, 0xff}}},\n    {{{ -2815,   -827,  -2854}, 0, {  2578,    928}, {0xd8, 0xab, 0xab, 0xff}}},\n    {{{ -3030,   -550,  -3030}, 0, {  3670,    872}, {0xd8, 0xab, 0xab, 0xff}}},\n    {{{ -2815,   -550,  -3131}, 0, {  3478,   1334}, {0xd8, 0xab, 0xab, 0xff}}},\n    {{{ -2834,   -827,  -2834}, 0, {  2578,    872}, {0xa4, 0x00, 0xa9, 0xff}}},\n    {{{ -2815,   -827,  -2854}, 0, {  2578,    928}, {0xa4, 0x00, 0xa9, 0xff}}},\n    {{{ -2815,  -1219,  -2854}, 0, {  1446,    928}, {0xa4, 0x00, 0xa9, 0xff}}},\n};\n\n// 0x0700DEE0 - 0x0700DFD0\nstatic const Vtx wdw_seg7_vertex_0700DEE0[] = {\n    {{{ -2854,   -827,  -2815}, 0, {  2578,    814}, {0xc3, 0xa7, 0xbf, 0xff}}},\n    {{{ -3030,   -550,  -3030}, 0, {  3670,    872}, {0xc3, 0xa7, 0xbf, 0xff}}},\n    {{{ -2834,   -827,  -2834}, 0, {  2578,    872}, {0xc3, 0xa7, 0xbf, 0xff}}},\n    {{{ -2815,  -1219,  -3800}, 0, {  6972,   2318}, {0x32, 0x00, 0x74, 0xff}}},\n    {{{ -2815,   -827,  -3800}, 0, {  5228,   2318}, {0x32, 0x00, 0x74, 0xff}}},\n    {{{ -3503,   -827,  -3503}, 0, {  5634,    872}, {0x32, 0x00, 0x74, 0xff}}},\n    {{{ -3131,   -550,  -2815}, 0, {  3478,    406}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3523,   -550,  -2815}, 0, {  4198,   -170}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3030,   -550,  -3030}, 0, {  3670,    872}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3308,   -550,  -3308}, 0, {  4684,    872}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2815,   -550,  -3131}, 0, {  3478,   1334}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2815,   -550,  -3523}, 0, {  4198,   1910}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2854,   -827,  -2815}, 0, {  2578,    814}, {0xab, 0xab, 0xd8, 0xff}}},\n    {{{ -3131,   -550,  -2815}, 0, {  3478,    406}, {0xab, 0xab, 0xd8, 0xff}}},\n    {{{ -3030,   -550,  -3030}, 0, {  3670,    872}, {0xab, 0xab, 0xd8, 0xff}}},\n};\n\n// 0x0700DFD0 - 0x0700E0C0\nstatic const Vtx wdw_seg7_vertex_0700DFD0[] = {\n    {{{ -2854,  -1219,  -2815}, 0, {  1446,    814}, {0xa9, 0x00, 0xa4, 0xff}}},\n    {{{ -2854,   -827,  -2815}, 0, {  2578,    814}, {0xa9, 0x00, 0xa4, 0xff}}},\n    {{{ -2834,   -827,  -2834}, 0, {  2578,    872}, {0xa9, 0x00, 0xa4, 0xff}}},\n    {{{ -3523,   -550,  -2815}, 0, {  4198,   -170}, {0x55, 0xab, 0x25, 0xff}}},\n    {{{ -3800,   -827,  -2815}, 0, {  5228,   -576}, {0x55, 0xab, 0x25, 0xff}}},\n    {{{ -3308,   -550,  -3308}, 0, {  4684,    872}, {0x55, 0xab, 0x25, 0xff}}},\n    {{{ -3800,   -827,  -2815}, 0, {  5228,   -576}, {0x55, 0xaa, 0x24, 0xff}}},\n    {{{ -3503,   -827,  -3503}, 0, {  5634,    872}, {0x55, 0xaa, 0x24, 0xff}}},\n    {{{ -3308,   -550,  -3308}, 0, {  4684,    872}, {0x55, 0xaa, 0x24, 0xff}}},\n    {{{ -2815,   -550,  -3523}, 0, {  4198,   1910}, {0x25, 0xab, 0x55, 0xff}}},\n    {{{ -3308,   -550,  -3308}, 0, {  4684,    872}, {0x25, 0xab, 0x55, 0xff}}},\n    {{{ -2815,   -827,  -3800}, 0, {  5228,   2318}, {0x25, 0xab, 0x55, 0xff}}},\n    {{{ -3308,   -550,  -3308}, 0, {  4684,    872}, {0x24, 0xaa, 0x55, 0xff}}},\n    {{{ -3503,   -827,  -3503}, 0, {  5634,    872}, {0x24, 0xaa, 0x55, 0xff}}},\n    {{{ -2815,   -827,  -3800}, 0, {  5228,   2318}, {0x24, 0xaa, 0x55, 0xff}}},\n};\n\n// 0x0700E0C0 - 0x0700E1C0\nstatic const Vtx wdw_seg7_vertex_0700E0C0[] = {\n    {{{ -3503,  -1219,  -3503}, 0, {  6566,    872}, {0x74, 0x00, 0x32, 0xff}}},\n    {{{ -3503,   -827,  -3503}, 0, {  5634,    872}, {0x74, 0x00, 0x32, 0xff}}},\n    {{{ -3800,   -827,  -2815}, 0, {  5228,   -576}, {0x74, 0x00, 0x32, 0xff}}},\n    {{{ -2815,  -1219,  -3800}, 0, {  6972,   2318}, {0x32, 0x00, 0x74, 0xff}}},\n    {{{ -3503,   -827,  -3503}, 0, {  5634,    872}, {0x32, 0x00, 0x74, 0xff}}},\n    {{{ -3503,  -1219,  -3503}, 0, {  6566,    872}, {0x32, 0x00, 0x74, 0xff}}},\n    {{{ -3030,  -1496,  -3030}, 0, {   354,    872}, {0xbf, 0x59, 0xc3, 0xff}}},\n    {{{ -2834,  -1219,  -2834}, 0, {  1446,    872}, {0xbf, 0x59, 0xc3, 0xff}}},\n    {{{ -2815,  -1219,  -2854}, 0, {  1446,    928}, {0xbf, 0x59, 0xc3, 0xff}}},\n    {{{ -3800,  -1219,  -2815}, 0, {  6972,   -576}, {0x74, 0x00, 0x32, 0xff}}},\n    {{{ -3308,  -1496,  -3308}, 0, {  7516,    872}, {0x24, 0x56, 0x55, 0xff}}},\n    {{{ -2815,  -1219,  -3800}, 0, {  6972,   2318}, {0x24, 0x56, 0x55, 0xff}}},\n    {{{ -3503,  -1219,  -3503}, 0, {  6566,    872}, {0x24, 0x56, 0x55, 0xff}}},\n    {{{ -3308,  -1496,  -3308}, 0, {  7516,    872}, {0x55, 0x56, 0x24, 0xff}}},\n    {{{ -3503,  -1219,  -3503}, 0, {  6566,    872}, {0x55, 0x56, 0x24, 0xff}}},\n    {{{ -3800,  -1219,  -2815}, 0, {  6972,   -576}, {0x55, 0x56, 0x24, 0xff}}},\n};\n\n// 0x0700E1C0 - 0x0700E2B0\nstatic const Vtx wdw_seg7_vertex_0700E1C0[] = {\n    {{{ -3308,  -1496,  -3308}, 0, {  7516,    872}, {0x55, 0x55, 0x25, 0xff}}},\n    {{{ -3800,  -1219,  -2815}, 0, {  6972,   -576}, {0x55, 0x55, 0x25, 0xff}}},\n    {{{ -3523,  -1496,  -2815}, 0, {  8002,   -170}, {0x55, 0x55, 0x25, 0xff}}},\n    {{{ -3308,  -1496,  -3308}, 0, {  7516,    872}, {0x25, 0x55, 0x55, 0xff}}},\n    {{{ -2815,  -1496,  -3523}, 0, {  8002,   1910}, {0x25, 0x55, 0x55, 0xff}}},\n    {{{ -2815,  -1219,  -3800}, 0, {  6972,   2318}, {0x25, 0x55, 0x55, 0xff}}},\n    {{{ -3308,  -1496,  -3308}, 0, {  7516,    872}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3523,  -1496,  -2815}, 0, {  8002,   -170}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3030,  -1496,  -3030}, 0, {  8530,    872}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2815,  -1496,  -3131}, 0, {  8722,   1334}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2815,  -1496,  -3523}, 0, {  8002,   1910}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3131,  -1496,  -2815}, 0, {  8722,    406}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3030,  -1496,  -3030}, 0, {   354,    872}, {0xd8, 0x55, 0xab, 0xff}}},\n    {{{ -2815,  -1219,  -2854}, 0, {  1446,    928}, {0xd8, 0x55, 0xab, 0xff}}},\n    {{{ -2815,  -1496,  -3131}, 0, {   546,   1334}, {0xd8, 0x55, 0xab, 0xff}}},\n};\n\n// 0x0700E2B0 - 0x0700E3A0\nstatic const Vtx wdw_seg7_vertex_0700E2B0[] = {\n    {{{  3833,   -760,  -2854}, 0, {  2160,    448}, {0x38, 0xc5, 0xa0, 0xff}}},\n    {{{  3603,   -530,  -3131}, 0, {  3434,    448}, {0x38, 0xc5, 0xa0, 0xff}}},\n    {{{  3623,   -511,  -3131}, 0, {  3434,    506}, {0x38, 0xc5, 0xa0, 0xff}}},\n    {{{ -2854,  -1219,  -2815}, 0, {  1446,    814}, {0xc3, 0x59, 0xbf, 0xff}}},\n    {{{ -2834,  -1219,  -2834}, 0, {  1446,    872}, {0xc3, 0x59, 0xbf, 0xff}}},\n    {{{ -3030,  -1496,  -3030}, 0, {   354,    872}, {0xc3, 0x59, 0xbf, 0xff}}},\n    {{{ -2834,   -827,  -2834}, 0, {  2578,    872}, {0xa4, 0x00, 0xa9, 0xff}}},\n    {{{ -2815,  -1219,  -2854}, 0, {  1446,    928}, {0xa4, 0x00, 0xa9, 0xff}}},\n    {{{ -2834,  -1219,  -2834}, 0, {  1446,    872}, {0xa4, 0x00, 0xa9, 0xff}}},\n    {{{ -2854,  -1219,  -2815}, 0, {  1446,    814}, {0xa9, 0x00, 0xa4, 0xff}}},\n    {{{ -2834,   -827,  -2834}, 0, {  2578,    872}, {0xa9, 0x00, 0xa4, 0xff}}},\n    {{{ -2834,  -1219,  -2834}, 0, {  1446,    872}, {0xa9, 0x00, 0xa4, 0xff}}},\n    {{{ -3131,  -1496,  -2815}, 0, {   546,    406}, {0xab, 0x55, 0xd8, 0xff}}},\n    {{{ -2854,  -1219,  -2815}, 0, {  1446,    814}, {0xab, 0x55, 0xd8, 0xff}}},\n    {{{ -3030,  -1496,  -3030}, 0, {   354,    872}, {0xab, 0x55, 0xd8, 0xff}}},\n};\n\n// 0x0700E3A0 - 0x0700E480\nstatic const Vtx wdw_seg7_vertex_0700E3A0[] = {\n    {{{  3900,   -511,  -2854}, 0, {  2490,    912}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4292,   -511,  -2854}, 0, {  1754,   1486}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3833,   -760,  -2854}, 0, {  2160,    448}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4028,   -955,  -2854}, 0, {  1438,    448}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3833,   -760,  -2854}, 0, {  2160,    448}, {0x17, 0xa8, 0xa8, 0xff}}},\n    {{{  3584,   -827,  -2854}, 0, {  2490,    -16}, {0x17, 0xa8, 0xa8, 0xff}}},\n    {{{  3584,   -550,  -3131}, 0, {  3434,    390}, {0x17, 0xa8, 0xa8, 0xff}}},\n    {{{  3833,   -760,  -2854}, 0, {  2160,    448}, {0x3b, 0xc8, 0xa0, 0xff}}},\n    {{{  3584,   -550,  -3131}, 0, {  3434,    390}, {0x3b, 0xc8, 0xa0, 0xff}}},\n    {{{  3603,   -530,  -3131}, 0, {  3434,    448}, {0x3b, 0xc8, 0xa0, 0xff}}},\n    {{{  3584,   -827,  -2854}, 0, {  2490,    -16}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3900,   -511,  -2854}, 0, {  2490,    912}, {0x58, 0xe9, 0xa8, 0xff}}},\n    {{{  3833,   -760,  -2854}, 0, {  2160,    448}, {0x58, 0xe9, 0xa8, 0xff}}},\n    {{{  3623,   -511,  -3131}, 0, {  3434,    506}, {0x58, 0xe9, 0xa8, 0xff}}},\n};\n\n// 0x0700E480 - 0x0700E560\nstatic const Vtx wdw_seg7_vertex_0700E480[] = {\n    {{{  4569,   -511,  -3131}, 0, {   740,   1894}, {0xae, 0x31, 0xae, 0xff}}},\n    {{{  4028,   -955,  -2854}, 0, {  1438,    448}, {0xae, 0x31, 0xae, 0xff}}},\n    {{{  4292,   -511,  -2854}, 0, {  1754,   1486}, {0xae, 0x31, 0xae, 0xff}}},\n    {{{  4028,   -955,  -2854}, 0, {  1438,    448}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3584,  -1219,  -2854}, 0, {  1754,   -592}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3584,   -827,  -2854}, 0, {  2490,    -16}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3603,   -530,  -3131}, 0, {  3434,    448}, {0x5c, 0xa9, 0x00, 0xff}}},\n    {{{  3584,   -550,  -3131}, 0, {  3434,    390}, {0x5c, 0xa9, 0x00, 0xff}}},\n    {{{  3584,   -550,  -3523}, 0, {  4678,    390}, {0x5c, 0xa9, 0x00, 0xff}}},\n    {{{  3623,   -511,  -3131}, 0, {  3434,    506}, {0x57, 0xa4, 0x00, 0xff}}},\n    {{{  3603,   -530,  -3131}, 0, {  3434,    448}, {0x57, 0xa4, 0x00, 0xff}}},\n    {{{  3603,   -530,  -3523}, 0, {  4678,    448}, {0x57, 0xa4, 0x00, 0xff}}},\n    {{{  3603,   -530,  -3523}, 0, {  4678,    448}, {0x5c, 0xa9, 0x00, 0xff}}},\n    {{{  3623,   -511,  -3523}, 0, {  4678,    506}, {0x57, 0xa4, 0x00, 0xff}}},\n};\n\n// 0x0700E560 - 0x0700E650\nstatic const Vtx wdw_seg7_vertex_0700E560[] = {\n    {{{  4569,   -511,  -3131}, 0, {   740,   1894}, {0xb3, 0x23, 0xa2, 0xff}}},\n    {{{  4258,  -1185,  -3131}, 0, {   416,    448}, {0xb3, 0x23, 0xa2, 0xff}}},\n    {{{  4028,   -955,  -2854}, 0, {  1438,    448}, {0xb3, 0x23, 0xa2, 0xff}}},\n    {{{  4258,  -1185,  -3131}, 0, {   416,    448}, {0xdd, 0x4d, 0xa2, 0xff}}},\n    {{{  3584,  -1496,  -3131}, 0, {   740,  -1000}, {0xdd, 0x4d, 0xa2, 0xff}}},\n    {{{  4028,   -955,  -2854}, 0, {  1438,    448}, {0xdd, 0x4d, 0xa2, 0xff}}},\n    {{{  3584,  -1496,  -3131}, 0, {   740,  -1000}, {0xcf, 0x52, 0xae, 0xff}}},\n    {{{  3584,  -1219,  -2854}, 0, {  1754,   -592}, {0xcf, 0x52, 0xae, 0xff}}},\n    {{{  4028,   -955,  -2854}, 0, {  1438,    448}, {0xcf, 0x52, 0xae, 0xff}}},\n    {{{  4028,   -955,  -3800}, 0, {  6674,    448}, {0xb3, 0x23, 0x5e, 0xff}}},\n    {{{  4258,  -1185,  -3523}, 0, {  7696,    448}, {0xb3, 0x23, 0x5e, 0xff}}},\n    {{{  4569,   -511,  -3523}, 0, {  7372,   1894}, {0xb3, 0x23, 0x5e, 0xff}}},\n    {{{  4028,   -955,  -3800}, 0, {  6674,    448}, {0xdd, 0x4d, 0x5e, 0xff}}},\n    {{{  3584,  -1496,  -3523}, 0, {  7372,  -1000}, {0xdd, 0x4d, 0x5e, 0xff}}},\n    {{{  4258,  -1185,  -3523}, 0, {  7696,    448}, {0xdd, 0x4d, 0x5e, 0xff}}},\n};\n\n// 0x0700E650 - 0x0700E730\nstatic const Vtx wdw_seg7_vertex_0700E650[] = {\n    {{{  4569,   -511,  -3131}, 0, {  8916,   1894}, {0x8d, 0x35, 0x00, 0xff}}},\n    {{{  4258,  -1185,  -3523}, 0, {  7696,    448}, {0x8d, 0x35, 0x00, 0xff}}},\n    {{{  4258,  -1185,  -3131}, 0, {  8592,    448}, {0x8d, 0x35, 0x00, 0xff}}},\n    {{{  4569,   -511,  -3523}, 0, {  7372,   1894}, {0x8d, 0x35, 0x00, 0xff}}},\n    {{{  4258,  -1185,  -3523}, 0, {  7696,    448}, {0xcb, 0x73, 0x00, 0xff}}},\n    {{{  3584,  -1496,  -3131}, 0, {  8916,  -1000}, {0xcb, 0x73, 0x00, 0xff}}},\n    {{{  4258,  -1185,  -3131}, 0, {  8592,    448}, {0xcb, 0x73, 0x00, 0xff}}},\n    {{{  3584,  -1496,  -3523}, 0, {  7372,  -1000}, {0xcb, 0x73, 0x00, 0xff}}},\n    {{{  4028,   -955,  -3800}, 0, {  6674,    448}, {0xcf, 0x52, 0x52, 0xff}}},\n    {{{  3584,  -1219,  -3800}, 0, {  6358,   -592}, {0xcf, 0x52, 0x52, 0xff}}},\n    {{{  3584,  -1496,  -3523}, 0, {  7372,  -1000}, {0xcf, 0x52, 0x52, 0xff}}},\n    {{{  4292,   -511,  -3800}, 0, {  6358,   1486}, {0xae, 0x31, 0x52, 0xff}}},\n    {{{  4028,   -955,  -3800}, 0, {  6674,    448}, {0xae, 0x31, 0x52, 0xff}}},\n    {{{  4569,   -511,  -3523}, 0, {  7372,   1894}, {0xae, 0x31, 0x52, 0xff}}},\n};\n\n// 0x0700E730 - 0x0700E820\nstatic const Vtx wdw_seg7_vertex_0700E730[] = {\n    {{{  3833,   -760,  -3800}, 0, {  5952,    448}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3584,  -1219,  -3800}, 0, {  6358,   -592}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4028,   -955,  -3800}, 0, {  6674,    448}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3900,   -511,  -3800}, 0, {  5622,    912}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4292,   -511,  -3800}, 0, {  6358,   1486}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3584,   -827,  -3800}, 0, {  5622,    -16}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3623,   -511,  -3523}, 0, {  4678,    506}, {0x38, 0xc5, 0x60, 0xff}}},\n    {{{  3603,   -530,  -3523}, 0, {  4678,    448}, {0x38, 0xc5, 0x60, 0xff}}},\n    {{{  3833,   -760,  -3800}, 0, {  5952,    448}, {0x38, 0xc5, 0x60, 0xff}}},\n    {{{  3603,   -530,  -3523}, 0, {  4678,    448}, {0x3b, 0xc8, 0x60, 0xff}}},\n    {{{  3584,   -550,  -3523}, 0, {  4678,    390}, {0x3b, 0xc8, 0x60, 0xff}}},\n    {{{  3833,   -760,  -3800}, 0, {  5952,    448}, {0x3b, 0xc8, 0x60, 0xff}}},\n    {{{  3584,   -550,  -3523}, 0, {  4678,    390}, {0x17, 0xa8, 0x58, 0xff}}},\n    {{{  3584,   -827,  -3800}, 0, {  5622,    -16}, {0x17, 0xa8, 0x58, 0xff}}},\n    {{{  3833,   -760,  -3800}, 0, {  5952,    448}, {0x17, 0xa8, 0x58, 0xff}}},\n};\n\n// 0x0700E820 - 0x0700E900\nstatic const Vtx wdw_seg7_vertex_0700E820[] = {\n    {{{  3623,   -511,  -3523}, 0, {  4678,    506}, {0x58, 0xe9, 0x58, 0xff}}},\n    {{{  3833,   -760,  -3800}, 0, {  5952,    448}, {0x58, 0xe9, 0x58, 0xff}}},\n    {{{  3900,   -511,  -3800}, 0, {  5622,    912}, {0x58, 0xe9, 0x58, 0xff}}},\n    {{{  3900,      0,  -2854}, 0, {  2522,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  3900,   -511,  -2854}, 0, {  2522,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  3623,   -511,  -3131}, 0, {  3544,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  4292,      0,  -3800}, 0, {  6610,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  4569,   -511,  -3523}, 0, {  7632,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  4569,      0,  -3523}, 0, {  7632,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  4569,      0,  -3523}, 0, {  7632,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4569,   -511,  -3523}, 0, {  7632,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4569,   -511,  -3131}, 0, {  8656,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4569,      0,  -3131}, 0, {  8656,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4292,   -511,  -3800}, 0, {  6610,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x0700E900 - 0x0700E9E0\nstatic const Vtx wdw_seg7_vertex_0700E900[] = {\n    {{{  4569,      0,  -3131}, 0, {   478,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  4292,   -511,  -2854}, 0, {  1500,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  4292,      0,  -2854}, 0, {  1500,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  4569,   -511,  -3131}, 0, {   478,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  4292,      0,  -2854}, 0, {  1500,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4292,   -511,  -2854}, 0, {  1500,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3900,   -511,  -2854}, 0, {  2522,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3900,      0,  -2854}, 0, {  2522,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2559,   -511,   3840}, 0, {  9678,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2303,    256,   3840}, 0, {  9166,  -1566}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   768,    256,   3840}, 0, {  3034,  -1566}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3900,      0,  -2854}, 0, {  2522,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  3623,   -511,  -3131}, 0, {  3544,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  3623,      0,  -3131}, 0, {  3544,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0700E9E0 - 0x0700EAD0\nstatic const Vtx wdw_seg7_vertex_0700E9E0[] = {\n    {{{  3623,      0,  -3131}, 0, {  3544,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3623,   -511,  -3131}, 0, {  3544,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3623,   -511,  -3523}, 0, {  4566,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3623,      0,  -3523}, 0, {  4566,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3623,      0,  -3523}, 0, {  4566,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3623,   -511,  -3523}, 0, {  4566,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3900,   -511,  -3800}, 0, {  5588,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3900,      0,  -3800}, 0, {  5588,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  3900,      0,  -3800}, 0, {  5588,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3900,   -511,  -3800}, 0, {  5588,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4292,   -511,  -3800}, 0, {  6610,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4292,      0,  -3800}, 0, {  6610,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2559,   -511,   3840}, 0, {  9678,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   768,    256,   3840}, 0, {  3034,  -1566}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1024,   -511,   3840}, 0, {  2524,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700EAD0 - 0x0700EBC0\nstatic const Vtx wdw_seg7_vertex_0700EAD0[] = {\n    {{{ -1023,  -2559,   1024}, 0, {  3546,   1108}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  -959,  -2431,    960}, 0, {  3034,      0}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  -959,  -2431,    576}, 0, {     0,      0}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  -895,  -2431,    640}, 0, {     0,    990}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  -895,  -2431,    896}, 0, {  2012,    990}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  -767,  -2175,    768}, 0, {   990,  -1296}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  -639,  -2431,    640}, 0, {     0,    990}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  -895,  -2431,    640}, 0, {  2012,    990}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  -767,  -2175,    768}, 0, {   990,  -1296}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  -639,  -2431,    896}, 0, {     0,    990}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  -639,  -2431,    640}, 0, {  2012,    990}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  -767,  -2175,    768}, 0, {   990,  -1296}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  -895,  -2431,    896}, 0, {     0,    990}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -639,  -2431,    896}, 0, {  2012,    990}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -767,  -2175,    768}, 0, {   990,  -1296}, {0x00, 0x38, 0x71, 0xff}}},\n};\n\n// 0x0700EBC0 - 0x0700ECB0\nstatic const Vtx wdw_seg7_vertex_0700EBC0[] = {\n    {{{  -511,  -2559,   1024}, 0, {  3546,   1108}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{  -959,  -2431,    960}, 0, {     0,      0}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{ -1023,  -2559,   1024}, 0, {  -542,   1108}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{ -1023,  -2559,   1024}, 0, {  3546,   1108}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  -959,  -2431,    576}, 0, {     0,      0}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{ -1023,  -2559,    512}, 0, {  -540,   1108}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{ -1023,  -2559,    512}, 0, {  3544,   1108}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  -575,  -2431,    576}, 0, {     0,      0}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  -511,  -2559,    512}, 0, {  -540,   1108}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  -959,  -2431,    576}, 0, {  3034,      0}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  -511,  -2559,    512}, 0, {  3546,   1108}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  -575,  -2431,    960}, 0, {     0,      0}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  -511,  -2559,   1024}, 0, {  -542,   1108}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  -575,  -2431,    576}, 0, {  3034,      0}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  -575,  -2431,    960}, 0, {  3034,      0}, {0x00, 0x38, 0x71, 0xff}}},\n};\n\n// 0x0700ECB0 - 0x0700EDB0\nstatic const Vtx wdw_seg7_vertex_0700ECB0[] = {\n    {{{ -2752,  -1598,  -1535}, 0, {   990,   2136}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3131,  -1496,  -1535}, 0, {   232,   1932}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3523,  -1496,  -1535}, 0, {  -548,   1932}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -639,  -2431,    896}, 0, {   830,    766}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -575,  -2431,    960}, 0, {   990,    926}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -575,  -2431,    576}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -639,  -2431,    640}, 0, {   830,    128}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -895,  -2431,    896}, 0, {   192,    766}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -959,  -2431,    960}, 0, {    32,    926}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -895,  -2431,    640}, 0, {   192,    128}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -959,  -2431,    576}, 0, {    32,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3800,  -1219,  -1535}, 0, { -1102,   1380}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3839,  -1598,  -1535}, 0, { -1180,   2136}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3839,  -2559,   3840}, 0, { 12232,   4054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3839,   -511,   3840}, 0, { 12232,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2304,   -511,   3840}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700EDB0 - 0x0700EE90\nstatic const Vtx wdw_seg7_vertex_0700EDB0[] = {\n    {{{ -3800,  -1219,  -1535}, 0, { -1102,   1380}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3800,   -827,  -1535}, 0, { -1102,    598}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3839,  -1598,  -1535}, 0, { -1180,   2136}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2752,  -1598,  -1535}, 0, {   990,   2136}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2854,  -1219,  -1535}, 0, {   786,   1380}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3131,  -1496,  -1535}, 0, {   232,   1932}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2752,   -511,  -1535}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2854,   -827,  -1535}, 0, {   786,    600}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3131,   -550,  -1535}, 0, {   232,     46}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3523,   -550,  -1535}, 0, {  -548,     46}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3839,   -511,  -1535}, 0, { -1178,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3839,  -2559,   3840}, 0, { 12232,   4054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2304,   -511,   3840}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2304,  -2559,   3840}, 0, {     0,   4054}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700EE90 - 0x0700EF80\nstatic const Vtx wdw_seg7_vertex_0700EE90[] = {\n    {{{ -2854,   -827,  -2303}, 0, {  2746,   1500}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{ -3131,   -550,  -1535}, 0, {  3740,      0}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{ -3131,   -550,  -2303}, 0, {  3740,   1500}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{ -3131,   -550,  -2303}, 0, {  3740,   1500}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3523,   -550,  -1535}, 0, {  4642,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3523,   -550,  -2303}, 0, {  4642,   1500}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3131,   -550,  -1535}, 0, {  3740,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3523,   -550,  -2303}, 0, {  4642,   1500}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{ -3523,   -550,  -1535}, 0, {  4642,      0}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{ -3800,   -827,  -1535}, 0, {  5514,      0}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{ -3800,   -827,  -2303}, 0, {  5514,   1500}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{ -2854,   -827,  -1535}, 0, {  2746,      0}, {0xa7, 0xa7, 0x00, 0xff}}},\n    {{{ -3800,   -827,  -2303}, 0, {  5514,   1500}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3800,  -1219,  -1535}, 0, {  6416,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3800,  -1219,  -2303}, 0, {  6416,   1500}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700EF80 - 0x0700F080\nstatic const Vtx wdw_seg7_vertex_0700EF80[] = {\n    {{{ -2854,  -1219,  -2303}, 0, {  1604,   1500}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2854,   -827,  -1535}, 0, {  2746,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2854,   -827,  -2303}, 0, {  2746,   1500}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2854,  -1219,  -1535}, 0, {  1604,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -3131,  -1496,  -2303}, 0, {   374,   1500}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{ -2854,  -1219,  -1535}, 0, {  1604,      0}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{ -2854,  -1219,  -2303}, 0, {  1604,   1500}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{ -3131,  -1496,  -1535}, 0, {   374,      0}, {0xa7, 0x59, 0x00, 0xff}}},\n    {{{ -3800,  -1219,  -2303}, 0, {  6416,   1500}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{ -3523,  -1496,  -1535}, 0, {  7410,      0}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{ -3523,  -1496,  -2303}, 0, {  7410,   1500}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{ -3523,  -1496,  -2303}, 0, {  7410,   1500}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3523,  -1496,  -1535}, 0, {  7410,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3131,  -1496,  -1535}, 0, {  8550,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3131,  -1496,  -2303}, 0, {  8550,   1500}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3800,  -1219,  -1535}, 0, {  6416,      0}, {0x59, 0x59, 0x00, 0xff}}},\n};\n\n// 0x0700F080 - 0x0700F130\nstatic const Vtx wdw_seg7_vertex_0700F080[] = {\n    {{{ -2752,   -511,  -2303}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2752,  -1598,  -1535}, 0, {  -542,   2136}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2752,  -1598,  -2303}, 0, {   990,   2136}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3800,   -827,  -2303}, 0, {  5514,   1500}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3800,   -827,  -1535}, 0, {  5514,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3800,  -1219,  -1535}, 0, {  6416,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2752,  -1598,  -2303}, 0, {   990,   1500}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3839,  -1598,  -1535}, 0, { -1178,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -3839,  -1598,  -2303}, 0, { -1178,   1500}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2752,  -1598,  -1535}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{ -2752,   -511,  -1535}, 0, {  -542,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700F130 - 0x0700F220\nstatic const Vtx wdw_seg7_vertex_0700F130[] = {\n    {{{ -2805,  -2149,   3000}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2805,  -2242,   3000}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2805,  -2242,   2724}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2805,  -2149,   2427}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2805,  -2242,   2427}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2805,  -2242,   2150}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2805,  -2149,   2150}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2805,  -1576,   2427}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2805,  -1668,   2150}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2805,  -1576,   2150}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2805,  -1668,   2427}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2805,  -1576,   3000}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2805,  -1668,   2724}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2805,  -1576,   2724}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2805,  -1668,   3000}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700F220 - 0x0700F310\nstatic const Vtx wdw_seg7_vertex_0700F220[] = {\n    {{{ -3317,  -2181,    379}, 0, {  5078,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3317,  -2437,    251}, 0, {  6100,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3317,  -2181,    251}, 0, {  6100,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2805,  -2149,   3000}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2805,  -2242,   2724}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2805,  -2149,   2724}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3317,  -1541,    826}, 0, {  5078,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3317,  -1797,    698}, 0, {  6100,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3317,  -1541,    698}, 0, {  6100,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3317,  -1797,    826}, 0, {  5078,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3317,  -1541,    379}, 0, {  5078,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3317,  -1797,    379}, 0, {  5078,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3317,  -1797,    251}, 0, {  6100,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3317,  -1541,    251}, 0, {  6100,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3317,  -2437,    379}, 0, {  5078,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700F310 - 0x0700F400\nstatic const Vtx wdw_seg7_vertex_0700F310[] = {\n    {{{ -1791,  -2329,   -757}, 0, { 11210,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1893,  -2226,   -757}, 0, { 10188,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1893,  -2329,   -757}, 0, { 10188,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3317,  -2181,    826}, 0, {  5078,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3317,  -2437,    698}, 0, {  6100,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3317,  -2181,    698}, 0, {  6100,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -3317,  -2437,    826}, 0, {  5078,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2201,  -2329,   -757}, 0, {  6100,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2303,  -2226,   -757}, 0, {  5078,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2303,  -2329,   -757}, 0, {  5078,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2201,  -2226,   -757}, 0, {  6100,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2610,  -2329,   -757}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2610,  -2226,   -757}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2713,  -2226,   -757}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2713,  -2329,   -757}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0700F400 - 0x0700F4F0\nstatic const Vtx wdw_seg7_vertex_0700F400[] = {\n    {{{ -2825,  -2226,  -1074}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2825,  -2329,   -972}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2825,  -2226,   -972}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1791,  -2329,   -757}, 0, { 11210,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1791,  -2226,   -757}, 0, { 11210,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1893,  -2226,   -757}, 0, { 10188,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1381,  -2329,   -757}, 0, { 16320,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1381,  -2226,   -757}, 0, { 16320,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1484,  -2226,   -757}, 0, { 15298,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1484,  -2329,   -757}, 0, { 15298,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2825,  -2226,  -1381}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2825,  -2329,  -1381}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2825,  -2329,  -1279}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2825,  -2226,  -1279}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2825,  -2329,  -1074}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700F4F0 - 0x0700F5E0\nstatic const Vtx wdw_seg7_vertex_0700F4F0[] = {\n    {{{   640,  -2303,   -757}, 0, {  4056,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   384,  -2303,   -757}, 0, {  3034,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   384,  -2431,   -757}, 0, {  3034,   4054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1269,  -2226,   -972}, 0, {     0,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1269,  -2329,  -1074}, 0, {   990,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1269,  -2226,  -1074}, 0, {   990,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1269,  -2329,   -972}, 0, {     0,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1269,  -2226,  -1484}, 0, {  5078,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1269,  -2329,  -1586}, 0, {  6100,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1269,  -2226,  -1586}, 0, {  6100,   2010}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1269,  -2329,  -1484}, 0, {  5078,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -127,  -2303,   -757}, 0, {   990,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -383,  -2303,   -757}, 0, {     0,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -383,  -2431,   -757}, 0, {     0,   4054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -127,  -2431,   -757}, 0, {   990,   4054}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0700F5E0 - 0x0700F6D0\nstatic const Vtx wdw_seg7_vertex_0700F5E0[] = {\n    {{{  1014,  -2431,    512}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1014,  -2175,    256}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1014,  -2431,    256}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   640,  -2303,   -757}, 0, {  4056,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   384,  -2431,   -757}, 0, {  3034,   4054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   640,  -2431,   -757}, 0, {  4056,   4054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   640,  -1919,   -757}, 0, {  4056,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   384,  -1919,   -757}, 0, {  3034,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   384,  -2047,   -757}, 0, {  3034,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   640,  -2047,   -757}, 0, {  4056,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -127,  -1919,   -757}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -383,  -2047,   -757}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -127,  -2047,   -757}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -383,  -1919,   -757}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1014,  -2175,    512}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700F6D0 - 0x0700F7D0\nstatic const Vtx wdw_seg7_vertex_0700F6D0[] = {\n    {{{  1014,  -1791,   1152}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1014,  -1535,   1152}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1014,  -1535,    896}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1014,  -2431,   1792}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1014,  -2175,   1792}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1014,  -2175,   1536}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1014,  -2431,   1536}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1014,  -1791,   1792}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1014,  -1535,   1792}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1014,  -1535,   1536}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1014,  -1791,   1536}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1014,  -1791,    512}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1014,  -1535,    512}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1014,  -1535,    256}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1014,  -1791,    256}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1014,  -1791,    896}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700F7D0 - 0x0700F8B0\nstatic const Vtx wdw_seg7_vertex_0700F7D0[] = {\n    {{{  2048,  -1125,   3840}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2304,  -1125,   3584}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2048,  -1125,   3584}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2304,  -1125,   3840}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2304,  -1842,   3584}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2304,  -1842,   3328}, 0, {     0,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1792,  -1842,   3328}, 0, {  2012,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1792,  -1842,   3584}, 0, {  2012,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1792,  -1586,   3584}, 0, {  2012,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1792,  -1586,   3840}, 0, {  2012,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1920,  -1586,   3712}, 0, {  1502,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2048,  -1586,   3584}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1920,  -1586,   3840}, 0, {  1502,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2048,  -1586,   3712}, 0, {   990,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700F8B0 - 0x0700F9A0\nstatic const Vtx wdw_seg7_vertex_0700F8B0[] = {\n    {{{  -363,   -332,   3200}, 0, {     0,    684}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1171,   -409,   3200}, 0, {  1148,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1171,   -332,   3200}, 0, {  1148,    684}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1920,  -1330,   3712}, 0, {  1502,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1920,  -1330,   3840}, 0, {  1502,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2048,  -1330,   3840}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2048,  -1330,   3712}, 0, {   990,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -363,   -332,   3840}, 0, {  -188,    684}, {0x6d, 0x00, 0x3f, 0xff}}},\n    {{{  -363,   -409,   3840}, 0, {  -188,    990}, {0x6d, 0x00, 0x3f, 0xff}}},\n    {{{  -215,   -409,   3584}, 0, {   990,    990}, {0x6d, 0x00, 0x3f, 0xff}}},\n    {{{  -215,   -332,   3584}, 0, {   990,    684}, {0x6d, 0x00, 0x3f, 0xff}}},\n    {{{  -617,   -332,   3584}, 0, {   698,    684}, {0x92, 0x00, 0xc1, 0xff}}},\n    {{{  -617,   -409,   3584}, 0, {   698,    990}, {0x92, 0x00, 0xc1, 0xff}}},\n    {{{  -692,   -409,   3714}, 0, {   100,    990}, {0x92, 0x00, 0xc1, 0xff}}},\n    {{{  -692,   -332,   3714}, 0, {   100,    684}, {0x92, 0x00, 0xc1, 0xff}}},\n};\n\n// 0x0700F9A0 - 0x0700FA90\nstatic const Vtx wdw_seg7_vertex_0700F9A0[] = {\n    {{{  -692,   -332,   3714}, 0, {   260,    684}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -692,   -409,   3714}, 0, {   260,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -842,   -409,   3714}, 0, {   858,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -363,   -332,   3200}, 0, {     0,    684}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -363,   -409,   3200}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1171,   -409,   3200}, 0, {  1148,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -215,   -332,   3584}, 0, {  2170,      0}, {0x76, 0x00, 0xd3, 0xff}}},\n    {{{  -363,   -409,   3200}, 0, {   990,    274}, {0x76, 0x00, 0xd3, 0xff}}},\n    {{{  -363,   -332,   3200}, 0, {   990,      0}, {0x76, 0x00, 0xd3, 0xff}}},\n    {{{  -215,   -409,   3584}, 0, {  2170,    274}, {0x76, 0x00, 0xd3, 0xff}}},\n    {{{  -692,   -332,   3454}, 0, {  1282,      0}, {0x92, 0x00, 0x3f, 0xff}}},\n    {{{  -617,   -409,   3584}, 0, {  1880,    274}, {0x92, 0x00, 0x3f, 0xff}}},\n    {{{  -617,   -332,   3584}, 0, {  1880,      0}, {0x92, 0x00, 0x3f, 0xff}}},\n    {{{  -692,   -409,   3454}, 0, {  1282,    274}, {0x92, 0x00, 0x3f, 0xff}}},\n    {{{  -842,   -332,   3714}, 0, {   858,    684}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700FA90 - 0x0700FB80\nstatic const Vtx wdw_seg7_vertex_0700FA90[] = {\n    {{{  -917,   -332,   3584}, 0, {   100,    684}, {0x6e, 0x00, 0x3f, 0xff}}},\n    {{{  -917,   -409,   3584}, 0, {   100,    990}, {0x6e, 0x00, 0x3f, 0xff}}},\n    {{{  -842,   -409,   3454}, 0, {   698,    990}, {0x6e, 0x00, 0x3f, 0xff}}},\n    {{{ -1319,   -332,   3584}, 0, {   990,      0}, {0x93, 0x00, 0x3f, 0xff}}},\n    {{{ -1319,   -409,   3584}, 0, {   990,    274}, {0x93, 0x00, 0x3f, 0xff}}},\n    {{{ -1171,   -409,   3840}, 0, {  2170,    274}, {0x93, 0x00, 0x3f, 0xff}}},\n    {{{ -1171,   -332,   3840}, 0, {  2170,      0}, {0x93, 0x00, 0x3f, 0xff}}},\n    {{{ -1171,   -332,   3200}, 0, {   990,    684}, {0x8a, 0x00, 0xd3, 0xff}}},\n    {{{ -1319,   -409,   3584}, 0, {  -188,    990}, {0x8a, 0x00, 0xd3, 0xff}}},\n    {{{ -1319,   -332,   3584}, 0, {  -188,    684}, {0x8a, 0x00, 0xd3, 0xff}}},\n    {{{ -1171,   -409,   3200}, 0, {   990,    990}, {0x8a, 0x00, 0xd3, 0xff}}},\n    {{{  -842,   -332,   3454}, 0, {   858,    684}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -842,   -409,   3454}, 0, {   858,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -692,   -409,   3454}, 0, {   260,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -692,   -332,   3454}, 0, {   260,    684}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0700FB80 - 0x0700FC70\nstatic const Vtx wdw_seg7_vertex_0700FB80[] = {\n    {{{     0,  -2559,   2304}, 0, {     0,   1500}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,  -1791,   3840}, 0, {  3034,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,  -2559,   3840}, 0, {  3034,   1500}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -917,   -332,   3584}, 0, {   100,    684}, {0x6e, 0x00, 0x3f, 0xff}}},\n    {{{  -842,   -409,   3454}, 0, {   698,    990}, {0x6e, 0x00, 0x3f, 0xff}}},\n    {{{  -842,   -332,   3454}, 0, {   698,    684}, {0x6e, 0x00, 0x3f, 0xff}}},\n    {{{  -842,   -332,   3714}, 0, {  1880,      0}, {0x6e, 0x00, 0xc1, 0xff}}},\n    {{{  -917,   -409,   3584}, 0, {  1282,    274}, {0x6e, 0x00, 0xc1, 0xff}}},\n    {{{  -917,   -332,   3584}, 0, {  1282,      0}, {0x6e, 0x00, 0xc1, 0xff}}},\n    {{{  -842,   -409,   3714}, 0, {  1880,    274}, {0x6e, 0x00, 0xc1, 0xff}}},\n    {{{  -511,  -2175,   2944}, 0, {     0,    734}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1023,  -2175,   2944}, 0, {   990,    734}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1023,  -1791,   2944}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -511,  -1791,   2944}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,  -1791,   2304}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700FC70 - 0x0700FD60\nstatic const Vtx wdw_seg7_vertex_0700FC70[] = {\n    {{{ -1279,  -2559,   2048}, 0, {  2522,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1023,  -1791,   2048}, 0, {  2012,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1023,  -2559,   2048}, 0, {  2012,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -255,  -2559,   2048}, 0, {   990,   1500}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -255,  -1791,   2048}, 0, {   990,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{     0,  -1791,   2304}, 0, {   268,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{     0,  -2559,   2304}, 0, {   268,   1500}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{ -1535,  -2559,   3840}, 0, {  3034,   1500}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1535,  -1791,   2304}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1535,  -2559,   2304}, 0, {     0,   1500}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1535,  -1791,   3840}, 0, {  3034,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1535,  -2559,   2304}, 0, {   690,   1500}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1279,  -1791,   2048}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1279,  -2559,   2048}, 0, {     0,   1500}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{ -1535,  -1791,   2304}, 0, {   690,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0700FD60 - 0x0700FE40\nstatic const Vtx wdw_seg7_vertex_0700FD60[] = {\n    {{{ -1023,  -2175,   2048}, 0, {  -542,    734}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1023,  -1791,   2048}, 0, {  -542,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1023,  -1791,   2944}, 0, {  1246,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1279,  -2559,   2048}, 0, {  2522,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1279,  -1791,   2048}, 0, {  2522,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1023,  -1791,   2048}, 0, {  2012,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1023,  -2559,   2048}, 0, {  2012,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -511,  -2175,   2048}, 0, {   990,    734}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -511,  -2559,   2048}, 0, {   990,   1500}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1023,  -2175,   2048}, 0, {  2012,    734}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -511,  -1791,   2048}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -255,  -1791,   2048}, 0, {   478,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -255,  -2559,   2048}, 0, {   478,   1498}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1023,  -2175,   2944}, 0, {  1246,    734}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700FE40 - 0x0700FE80\nstatic const Vtx wdw_seg7_vertex_0700FE40[] = {\n    {{{  -511,  -2175,   2048}, 0, {  -542,    734}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,  -1791,   2944}, 0, {  1246,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,  -1791,   2048}, 0, {  -542,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,  -2175,   2944}, 0, {  1246,    734}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700FE80 - 0x0700FF70\nstatic const Vtx wdw_seg7_vertex_0700FE80[] = {\n    {{{    51,  -2559,   -777}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   205,  -2303,   -777}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    51,  -2303,   -777}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2895,  -2303,   3137}, 0, {   990,      0}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{ -3003,  -2303,   3246}, 0, {     0,      0}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{ -3003,  -2559,   3246}, 0, {     0,    990}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{ -2895,  -2559,   3137}, 0, {   990,    990}, {0x5a, 0x00, 0x59, 0xff}}},\n    {{{ -3506,  -2559,     10}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3660,  -2303,     10}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3506,  -2303,     10}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -3660,  -2559,     10}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2805,  -2559,  -1689}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2805,  -2303,  -1535}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2805,  -2303,  -1689}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2805,  -2559,  -1535}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700FF70 - 0x0700FFE0\nstatic const Vtx wdw_seg7_vertex_0700FF70[] = {\n    {{{  1034,  -2303,    947}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1034,  -2559,    947}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1034,  -2559,   1101}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    51,  -2559,   -777}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   205,  -2559,   -777}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   205,  -2303,   -777}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1034,  -2303,   1101}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700FFE0 - 0x07010020\nstatic const Vtx wdw_seg7_vertex_0700FFE0[] = {\n    {{{ -3609,  -2457,   1050}, 0, {  5896,    786}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3813,  -2457,   1766}, 0, {   172,   -850}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3609,  -2457,   1766}, 0, {   172,    786}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3813,  -2457,   1050}, 0, {  5896,   -850}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07010020 - 0x07010120\nstatic const Vtx wdw_seg7_vertex_07010020[] = {\n    {{{  2304,  -2559,  -1791}, 0, { 23474,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3839,  -2559,  -1791}, 0, { -1052,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,  -2559,    512}, 0, { 10188,   9164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2304,  -2559,  -2303}, 0, { 24496,  24494}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,  -2559,  -2303}, 0, { 24496,  19384}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,  -2559,  -1791}, 0, { 22452,  19384}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2304,  -2559,  -1791}, 0, { 22452,  24494}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3839,  -2559,  -2303}, 0, { 24496,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3839,  -2559,  -1791}, 0, { 22452,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2815,  -2559,  -1791}, 0, { 22452,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2815,  -2559,  -2303}, 0, { 24496,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,  -2559,    512}, 0, { 12232,   9164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2304,  -2559,   3840}, 0, { 23474,  22450}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,  -2559,   1024}, 0, { 12232,  11208}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -3839,  -2559,   3840}, 0, { -1052,  22450}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,  -2559,   1024}, 0, { 10188,  11208}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07010120 - 0x07010578\nstatic const Gfx wdw_seg7_dl_07010120[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wdw_seg7_lights_0700A1B0.l, 1),\n    gsSPLight(&wdw_seg7_lights_0700A1B0.a, 2),\n    gsSPVertex(wdw_seg7_vertex_0700A210, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  0,  2,  5, 0x0),\n    gsSPLight(&wdw_seg7_lights_0700A1C8.l, 1),\n    gsSPLight(&wdw_seg7_lights_0700A1C8.a, 2),\n    gsSPVertex(wdw_seg7_vertex_0700A270, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700A370, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700A460, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700A550, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700A640, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700A730, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700A820, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 0,  2, 10, 0x0, 10, 11,  0, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0, 10, 13, 14, 0x0),\n    gsSP1Triangle(10, 14, 11, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700A910, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  6,  9,  8, 0x0),\n    gsSP2Triangles( 8, 10,  7, 0x0,  4,  0,  5, 0x0),\n    gsSP2Triangles( 4,  3,  0, 0x0,  8, 11, 10, 0x0),\n    gsSP2Triangles( 8,  1, 11, 0x0,  8,  2,  1, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700AA10, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 5,  8,  9, 0x0,  4, 10,  5, 0x0),\n    gsSP2Triangles( 5, 11,  6, 0x0,  5,  9,  3, 0x0),\n    gsSP2Triangles( 3, 12,  4, 0x0,  3, 13, 12, 0x0),\n    gsSP1Triangle( 6, 14,  7, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700AB00, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700ABF0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  2,  5,  3, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 4,  8,  9, 0x0,  4,  9,  6, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700ACD0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPLight(&wdw_seg7_lights_0700A1E0.l, 1),\n    gsSPLight(&wdw_seg7_lights_0700A1E0.a, 2),\n    gsSPVertex(wdw_seg7_vertex_0700AD10, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700AE00, 13, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 4, 10, 11, 0x0,  4, 12, 10, 0x0),\n    gsSP1Triangle( 4, 11,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07010578 - 0x07010748\nstatic const Gfx wdw_seg7_dl_07010578[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wdw_seg7_texture_07000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wdw_seg7_lights_0700A1F8.l, 1),\n    gsSPLight(&wdw_seg7_lights_0700A1F8.a, 2),\n    gsSPVertex(wdw_seg7_vertex_0700AED0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700AFB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPLight(&wdw_seg7_lights_0700A1C8.l, 1),\n    gsSPLight(&wdw_seg7_lights_0700A1C8.a, 2),\n    gsSPVertex(wdw_seg7_vertex_0700B0B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700B1A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700B290, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 5,  8,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0,  9, 13, 10, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700B370, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 0,  2,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  3,  5, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07010748 - 0x070107E8\nstatic const Gfx wdw_seg7_dl_07010748[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wdw_seg7_vertex_0700B470, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  4, 11,  5, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700B570, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  4,  6, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070107E8 - 0x07010AB8\nstatic const Gfx wdw_seg7_dl_070107E8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09009000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wdw_seg7_vertex_0700B630, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700B720, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700B810, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700B910, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700BA10, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700BB00, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  3,  5,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 2, 14, 15, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700BC00, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 5,  9,  7, 0x0,  6, 10,  7, 0x0),\n    gsSP2Triangles( 6,  7,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700BCF0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700BDE0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700BED0, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  0,  7, 0x0),\n    gsSP2Triangles( 6,  1,  0, 0x0,  8,  9,  6, 0x0),\n    gsSP2Triangles( 8, 10,  2, 0x0,  8,  2,  9, 0x0),\n    gsSP1Triangle( 0,  2, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07010AB8 - 0x07010C38\nstatic const Gfx wdw_seg7_dl_07010AB8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wdw_seg7_vertex_0700BF80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  7,  6, 0x0),\n    gsSP2Triangles( 5,  8,  3, 0x0,  5,  9, 10, 0x0),\n    gsSP2Triangles( 5, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700C070, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700C160, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  0, 11,  1, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700C250, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700C330, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  7, 13,  8, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700C410, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP1Triangle( 4,  5,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07010C38 - 0x07010EA0\nstatic const Gfx wdw_seg7_dl_07010C38[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wdw_seg7_vertex_0700C480, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700C570, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700C660, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700C750, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700C840, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700C930, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700CA20, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  7,  0, 10, 0x0),\n    gsSP2Triangles( 7,  9, 11, 0x0,  0,  2, 10, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700CB20, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 5,  8,  9, 0x0,  5, 10,  6, 0x0),\n    gsSP2Triangles( 5,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 12, 14, 13, 0x0),\n    gsSP1Triangle(14, 15, 13, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700CC20, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07010EA0 - 0x07011208\nstatic const Gfx wdw_seg7_dl_07010EA0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wdw_seg7_vertex_0700CC50, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  0,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700CD30, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700CE20, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700CF10, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  8,  4, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0,  0, 13,  1, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700CFF0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700D0E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0, 14, 15, 11, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700D1E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 0,  5,  1, 0x0,  2,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 15, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700D2E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  5,  8,  6, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 12, 10, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700D3E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700D4D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700D5D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 4,  8,  7, 0x0,  6,  9,  4, 0x0),\n    gsSP2Triangles( 7, 10,  5, 0x0,  6, 11, 12, 0x0),\n    gsSP2Triangles( 6, 13, 14, 0x0,  6, 14, 11, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700D6C0, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP1Triangle( 0,  2, 10, 0x0),\n    gsSPLight(&wdw_seg7_lights_0700A1E0.l, 1),\n    gsSPLight(&wdw_seg7_lights_0700A1E0.a, 2),\n    gsSPVertex(wdw_seg7_vertex_0700D770, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07011208 - 0x07011260\nstatic const Gfx wdw_seg7_dl_07011208[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wdw_seg7_lights_0700A1C8.l, 1),\n    gsSPLight(&wdw_seg7_lights_0700A1C8.a, 2),\n    gsSPVertex(wdw_seg7_vertex_0700D7B0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07011260 - 0x07011298\nstatic const Gfx wdw_seg7_dl_07011260[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wdw_seg7_vertex_0700D830, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07011298 - 0x07011920\nstatic const Gfx wdw_seg7_dl_07011298[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wdw_seg7_vertex_0700D870, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700D960, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700DA40, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700DB30, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 3, 10,  4, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700DC20, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700DD00, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 15, 11, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700DE00, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP1Triangle(11, 12, 13, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700DEE0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles(10,  8, 11, 0x0,  8,  9, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700DFD0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700E0C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  0,  2, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700E1C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 6,  9, 10, 0x0,  7, 11,  8, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700E2B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700E3A0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 3, 10,  2, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700E480, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 6,  8, 12, 0x0,  9, 11, 13, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700E560, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700E650, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700E730, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700E820, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0,  6, 13,  7, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700E900, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700E9E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700EAD0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700EBC0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700ECB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  3, 0x0,  3,  7,  8, 0x0),\n    gsSP2Triangles( 3,  8,  4, 0x0,  5,  9,  6, 0x0),\n    gsSP2Triangles( 5, 10,  9, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  2, 11, 12, 0x0),\n    gsSP2Triangles( 2, 12,  0, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700EDB0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  6,  9,  8, 0x0),\n    gsSP2Triangles( 6, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles( 2,  1, 10, 0x0,  1,  9, 10, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700EE90, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  0, 11,  1, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700EF80, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  8, 15,  9, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700F080, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP1Triangle( 0, 10,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07011920 - 0x07011B08\nstatic const Gfx wdw_seg7_dl_07011920[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wdw_seg7_texture_07002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wdw_seg7_vertex_0700F130, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700F220, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700F310, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700F400, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700F4F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700F5E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700F6D0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07011B08 - 0x07011D08\nstatic const Gfx wdw_seg7_dl_07011B08[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09009800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wdw_seg7_vertex_0700F7D0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700F8B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700F9A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700FA90, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700FB80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700FC70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700FD60, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12,  8, 0x0),\n    gsSP1Triangle( 0,  2, 13, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700FE40, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07011D08 - 0x07011D88\nstatic const Gfx wdw_seg7_dl_07011D08[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wdw_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wdw_seg7_vertex_0700FE80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(wdw_seg7_vertex_0700FF70, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  2,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07011D88 - 0x07011DC0\nstatic const Gfx wdw_seg7_dl_07011D88[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wdw_seg7_vertex_0700FFE0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07011DC0 - 0x07011E48\nstatic const Gfx wdw_seg7_dl_07011DC0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09003800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wdw_seg7_vertex_07010020, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  0,  2, 11, 0x0),\n    gsSP2Triangles(12,  0, 11, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles( 1, 14, 15, 0x0,  1, 15,  2, 0x0),\n    gsSP2Triangles(14, 12, 13, 0x0, 14, 13, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07011E48 - 0x07011F58\nconst Gfx wdw_seg7_dl_07011E48[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wdw_seg7_dl_07010120),\n    gsSPDisplayList(wdw_seg7_dl_07010578),\n    gsSPDisplayList(wdw_seg7_dl_07010748),\n    gsSPDisplayList(wdw_seg7_dl_070107E8),\n    gsSPDisplayList(wdw_seg7_dl_07010AB8),\n    gsSPDisplayList(wdw_seg7_dl_07010C38),\n    gsSPDisplayList(wdw_seg7_dl_07010EA0),\n    gsSPDisplayList(wdw_seg7_dl_07011208),\n    gsSPDisplayList(wdw_seg7_dl_07011260),\n    gsSPDisplayList(wdw_seg7_dl_07011298),\n    gsSPDisplayList(wdw_seg7_dl_07011920),\n    gsSPDisplayList(wdw_seg7_dl_07011B08),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wdw_seg7_dl_07011D08),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wdw_seg7_dl_07011D88),\n    gsSPDisplayList(wdw_seg7_dl_07011DC0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wdw/areas/2/2/model.inc.c",
    "content": "// 0x07011F58 - 0x07011F70\nstatic const Lights1 wdw_seg7_lights_07011F58 = gdSPDefLights1(\n    0x54, 0x90, 0x88,\n    0x8d, 0xf0, 0xe3, 0x28, 0x28, 0x28\n);\n\n// 0x07011F70 - 0x07011F88\nstatic const Lights1 wdw_seg7_lights_07011F70 = gdSPDefLights1(\n    0x56, 0x57, 0x8e,\n    0x90, 0x92, 0xee, 0x28, 0x28, 0x28\n);\n\n// 0x07011F88 - 0x07011FA0\nstatic const Lights1 wdw_seg7_lights_07011F88 = gdSPDefLights1(\n    0x99, 0x99, 0x99,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07011FA0 - 0x07012020\nstatic const Vtx wdw_seg7_vertex_07011FA0[] = {\n    {{{ -3800,   -827,  -1586}, 0, {  -584,    320}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3800,  -1219,  -1586}, 0, {  -584,   1100}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3523,  -1496,  -1586}, 0, {     0,   1654}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3131,  -1496,  -1586}, 0, {   750,   1654}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2854,  -1219,  -1586}, 0, {  1304,   1100}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2854,   -827,  -1586}, 0, {  1304,    320}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2928,   -753,  -1586}, 0, {  1156,    172}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3726,   -753,  -1586}, 0, {  -436,    172}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07012020 - 0x070120A0\nstatic const Vtx wdw_seg7_vertex_07012020[] = {\n    {{{ -3800,   -827,  -2738}, 0, {  1304,   1100}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3800,  -1219,  -2738}, 0, {  1304,    320}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3726,  -1293,  -2738}, 0, {  1156,    172}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2928,  -1293,  -2738}, 0, {  -436,    172}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2854,  -1219,  -2738}, 0, {  -584,    320}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2854,   -827,  -2738}, 0, {  -584,   1100}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3131,   -550,  -2738}, 0, {     0,   1654}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -3523,   -550,  -2738}, 0, {   750,   1654}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x070120A0 - 0x07012160\nstatic const Vtx wdw_seg7_vertex_070120A0[] = {\n    {{{  1192,  -2559,   3460}, 0, {  1238,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1662,   -511,   2990}, 0, {     0,  -3098}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1662,  -2559,   2990}, 0, {     0,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1662,  -2559,   2990}, 0, {     0,    990}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{  1662,   -511,   2990}, 0, {     0,  -3098}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{  2304,   -511,   2818}, 0, { -1130,  -3098}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{  2304,  -2559,   2818}, 0, { -1130,    990}, {0xe0, 0x00, 0x86, 0xff}}},\n    {{{  1192,   -511,   3460}, 0, {  1238,  -3098}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1024,  -2559,   3840}, 0, {  2338,    990}, {0x8c, 0x00, 0xcd, 0xff}}},\n    {{{  1192,   -511,   3460}, 0, {  1238,  -3098}, {0x8c, 0x00, 0xcd, 0xff}}},\n    {{{  1192,  -2559,   3460}, 0, {  1238,    990}, {0x8c, 0x00, 0xcd, 0xff}}},\n    {{{  1024,   -511,   3840}, 0, {  2338,  -3098}, {0x8c, 0x00, 0xcd, 0xff}}},\n};\n\n// 0x07012160 - 0x07012258\nstatic const Gfx wdw_seg7_dl_07012160[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wdw_seg7_lights_07011F58.l, 1),\n    gsSPLight(&wdw_seg7_lights_07011F58.a, 2),\n    gsSPVertex(wdw_seg7_vertex_07011FA0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  0,  5,  6, 0x0),\n    gsSP2Triangles( 0,  6,  7, 0x0,  0,  4,  5, 0x0),\n    gsSPLight(&wdw_seg7_lights_07011F70.l, 1),\n    gsSPLight(&wdw_seg7_lights_07011F70.a, 2),\n    gsSPVertex(wdw_seg7_vertex_07012020, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  5,  6, 0x0,  0,  6,  7, 0x0),\n    gsSPLight(&wdw_seg7_lights_07011F88.l, 1),\n    gsSPLight(&wdw_seg7_lights_07011F88.a, 2),\n    gsSPVertex(wdw_seg7_vertex_070120A0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  0,  7,  1, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07012258 - 0x070122C8\nconst Gfx wdw_seg7_dl_07012258[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),\n    gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wdw_seg7_dl_07012160),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wdw/areas/2/collision.inc.c",
    "content": "// 0x0701633C - 0x07018222\nconst Collision wdw_seg7_area_2_collision[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x20B),\n    COL_VERTEX(-511, -1791, 3712),\n    COL_VERTEX(-895, -1407, 3712),\n    COL_VERTEX(-639, -1407, 3712),\n    COL_VERTEX(-511, -1535, 3712),\n    COL_VERTEX(-511, -1791, 3200),\n    COL_VERTEX(-1023, -1791, 3712),\n    COL_VERTEX(-1023, -1535, 3712),\n    COL_VERTEX(-1023, -1535, 3200),\n    COL_VERTEX(-1023, -1791, 3200),\n    COL_VERTEX(-895, -1407, 3200),\n    COL_VERTEX(-639, -1407, 3200),\n    COL_VERTEX(-511, -1535, 3200),\n    COL_VERTEX(-3726, -1293, -2789),\n    COL_VERTEX(-2854, -827, -2789),\n    COL_VERTEX(-2854, -1219, -2789),\n    COL_VERTEX(-3131, -550, -2789),\n    COL_VERTEX(-3523, -550, -2789),\n    COL_VERTEX(-3800, -827, -2789),\n    COL_VERTEX(-3800, -1219, -2789),\n    COL_VERTEX(-2928, -1293, -2789),\n    COL_VERTEX(-3800, -827, -2687),\n    COL_VERTEX(-2854, -827, -2687),\n    COL_VERTEX(-3131, -550, -2687),\n    COL_VERTEX(-3800, -1219, -2687),\n    COL_VERTEX(-3726, -1293, -2687),\n    COL_VERTEX(-3523, -550, -2687),\n    COL_VERTEX(-2928, -1293, -2687),\n    COL_VERTEX(-2854, -1219, -2687),\n    COL_VERTEX(-3800, -827, -1535),\n    COL_VERTEX(-2928, -753, -1535),\n    COL_VERTEX(-3800, -827, -1637),\n    COL_VERTEX(-3523, -1496, -1637),\n    COL_VERTEX(-2854, -1219, -1535),\n    COL_VERTEX(-2854, -827, -1535),\n    COL_VERTEX(-3131, -1496, -1535),\n    COL_VERTEX(-3726, -753, -1535),\n    COL_VERTEX(-3523, -1496, -1535),\n    COL_VERTEX(-3800, -1219, -1535),\n    COL_VERTEX(-2928, -753, -1637),\n    COL_VERTEX(-3726, -753, -1637),\n    COL_VERTEX(-3131, -1496, -1637),\n    COL_VERTEX(-3800, -1219, -1637),\n    COL_VERTEX(-2854, -827, -1637),\n    COL_VERTEX(-2854, -1219, -1637),\n    COL_VERTEX(384, -827, -2854),\n    COL_VERTEX(320, -827, -2854),\n    COL_VERTEX(320, -550, -3131),\n    COL_VERTEX(384, -1219, -2854),\n    COL_VERTEX(384, -550, -3131),\n    COL_VERTEX(320, -1219, -2854),\n    COL_VERTEX(320, -550, -3523),\n    COL_VERTEX(384, -550, -3523),\n    COL_VERTEX(320, -827, -3800),\n    COL_VERTEX(384, -827, -3800),\n    COL_VERTEX(320, -1219, -3800),\n    COL_VERTEX(384, -1219, -3800),\n    COL_VERTEX(320, -1496, -3523),\n    COL_VERTEX(384, -1496, -3523),\n    COL_VERTEX(384, -1496, -3131),\n    COL_VERTEX(320, -1496, -3131),\n    COL_VERTEX(448, -827, -2854),\n    COL_VERTEX(448, -550, -3131),\n    COL_VERTEX(448, -1219, -2854),\n    COL_VERTEX(448, -550, -3523),\n    COL_VERTEX(448, -827, -3800),\n    COL_VERTEX(448, -1219, -3800),\n    COL_VERTEX(448, -1496, -3523),\n    COL_VERTEX(448, -1496, -3131),\n    COL_VERTEX(1587, -2508, -690),\n    COL_VERTEX(1741, -2508, -1868),\n    COL_VERTEX(1587, -2508, -1868),\n    COL_VERTEX(1741, -2508, -690),\n    COL_VERTEX(-3609, -2508, 1050),\n    COL_VERTEX(-3813, -2508, 1766),\n    COL_VERTEX(-3609, -2508, 1766),\n    COL_VERTEX(-3813, -2508, 1050),\n    COL_VERTEX(-3523, -550, -2303),\n    COL_VERTEX(-3523, -550, -1535),\n    COL_VERTEX(-3800, -827, -2303),\n    COL_VERTEX(-3131, -550, -2303),\n    COL_VERTEX(-3839, -511, -1535),\n    COL_VERTEX(-3839, -1598, -1535),\n    COL_VERTEX(-3800, -1219, -2303),\n    COL_VERTEX(-2752, -511, -2303),\n    COL_VERTEX(-2752, -1598, -1535),\n    COL_VERTEX(-2752, -1598, -2303),\n    COL_VERTEX(-2752, -511, -1535),\n    COL_VERTEX(-3131, -550, -1535),\n    COL_VERTEX(-3523, -1496, -2303),\n    COL_VERTEX(-3131, -1496, -2303),\n    COL_VERTEX(-2854, -1219, -2303),\n    COL_VERTEX(-2854, -827, -2303),\n    COL_VERTEX(-3583, -2457, 1792),\n    COL_VERTEX(-3609, -2457, 1050),\n    COL_VERTEX(-3839, -2457, 1024),\n    COL_VERTEX(-3583, -2559, 1024),\n    COL_VERTEX(128, -1945, -255),\n    COL_VERTEX(256, -1945, -127),\n    COL_VERTEX(-511, -2559, -255),\n    COL_VERTEX(128, -2559, -255),\n    COL_VERTEX(-511, -2559, -127),\n    COL_VERTEX(128, -2559, -127),\n    COL_VERTEX(256, -1945, 1664),\n    COL_VERTEX(128, -2559, 1664),\n    COL_VERTEX(256, -2559, -127),\n    COL_VERTEX(128, -1945, 1792),\n    COL_VERTEX(256, -2559, 1664),\n    COL_VERTEX(-255, -1945, 1792),\n    COL_VERTEX(-383, -2559, 1664),\n    COL_VERTEX(128, -2559, 1792),\n    COL_VERTEX(-255, -2559, 1792),\n    COL_VERTEX(-383, -2559, 2048),\n    COL_VERTEX(-1663, -1945, 1664),\n    COL_VERTEX(-1663, -1945, -127),\n    COL_VERTEX(-1663, -2559, -127),\n    COL_VERTEX(-1023, -2559, -127),\n    COL_VERTEX(-1023, -2559, -255),\n    COL_VERTEX(-1663, -2559, -255),\n    COL_VERTEX(-1791, -2559, -127),\n    COL_VERTEX(-1791, -2559, 1664),\n    COL_VERTEX(-1151, -1945, 1664),\n    COL_VERTEX(-1663, -2559, 1664),\n    COL_VERTEX(-1663, -2559, 1792),\n    COL_VERTEX(-1279, -2559, 1792),\n    COL_VERTEX(-1151, -2559, 1664),\n    COL_VERTEX(-1279, -2559, 2048),\n    COL_VERTEX(2304, -2559, 2914),\n    COL_VERTEX(1710, -2559, 3073),\n    COL_VERTEX(1275, -2559, 3508),\n    COL_VERTEX(1024, -2559, 3840),\n    COL_VERTEX(1192, -2559, 3460),\n    COL_VERTEX(1662, -2559, 2990),\n    COL_VERTEX(-3839, -1598, -2303),\n    COL_VERTEX(-3609, -2457, 1766),\n    COL_VERTEX(-3813, -2457, 1766),\n    COL_VERTEX(-3839, -2457, 1792),\n    COL_VERTEX(-3583, -2457, 1024),\n    COL_VERTEX(-3813, -2457, 1050),\n    COL_VERTEX(-3583, -2559, 1792),\n    COL_VERTEX(-511, -1945, -127),\n    COL_VERTEX(128, -1945, -127),\n    COL_VERTEX(-511, -1945, -255),\n    COL_VERTEX(128, -1945, 1664),\n    COL_VERTEX(-383, -1945, 1664),\n    COL_VERTEX(-383, -1945, 2048),\n    COL_VERTEX(-255, -1945, 2048),\n    COL_VERTEX(-255, -2559, 2048),\n    COL_VERTEX(-1791, -1945, -127),\n    COL_VERTEX(-1663, -1945, -255),\n    COL_VERTEX(-1023, -1945, -127),\n    COL_VERTEX(-1023, -1945, -255),\n    COL_VERTEX(-1791, -1945, 1664),\n    COL_VERTEX(-1663, -1945, 1792),\n    COL_VERTEX(-1279, -1945, 1792),\n    COL_VERTEX(-1279, -1945, 2048),\n    COL_VERTEX(-1151, -1945, 2048),\n    COL_VERTEX(-1151, -2559, 2048),\n    COL_VERTEX(1710, -511, 3073),\n    COL_VERTEX(2304, -511, 2914),\n    COL_VERTEX(1275, -511, 3508),\n    COL_VERTEX(1120, -511, 3840),\n    COL_VERTEX(1120, -2559, 3840),\n    COL_VERTEX(1192, -511, 3460),\n    COL_VERTEX(1662, -511, 2990),\n    COL_VERTEX(1024, -511, 3840),\n    COL_VERTEX(2304, -511, 2818),\n    COL_VERTEX(2304, -2559, 2818),\n    COL_VERTEX(-1279, -1996, -767),\n    COL_VERTEX(-2175, -1598, -1279),\n    COL_VERTEX(-2815, -1996, -767),\n    COL_VERTEX(-1279, -1996, -1791),\n    COL_VERTEX(-1919, -1598, -1279),\n    COL_VERTEX(-2815, -1996, -1791),\n    COL_VERTEX(-2815, -827, -2854),\n    COL_VERTEX(-2815, -1219, -2854),\n    COL_VERTEX(-2815, -550, -3131),\n    COL_VERTEX(-2834, -827, -2834),\n    COL_VERTEX(-3030, -550, -3030),\n    COL_VERTEX(-2854, -827, -2815),\n    COL_VERTEX(-3523, -550, -2815),\n    COL_VERTEX(-3308, -550, -3308),\n    COL_VERTEX(-3131, -550, -2815),\n    COL_VERTEX(-2815, -550, -3523),\n    COL_VERTEX(-2854, -1219, -2815),\n    COL_VERTEX(-3503, -827, -3503),\n    COL_VERTEX(-2815, -827, -3800),\n    COL_VERTEX(-3800, -827, -2815),\n    COL_VERTEX(-3503, -1219, -3503),\n    COL_VERTEX(-2815, -1219, -3800),\n    COL_VERTEX(-3800, -1219, -2815),\n    COL_VERTEX(-3308, -1496, -3308),\n    COL_VERTEX(-3523, -1496, -2815),\n    COL_VERTEX(-3131, -1496, -2815),\n    COL_VERTEX(-3030, -1496, -3030),\n    COL_VERTEX(-2834, -1219, -2834),\n    COL_VERTEX(4292, -511, -2854),\n    COL_VERTEX(3900, -511, -2854),\n    COL_VERTEX(4028, -955, -2854),\n    COL_VERTEX(3833, -760, -2854),\n    COL_VERTEX(3584, -1219, -2854),\n    COL_VERTEX(3584, -827, -2854),\n    COL_VERTEX(3584, -550, -3131),\n    COL_VERTEX(3603, -530, -3131),\n    COL_VERTEX(3623, -511, -3131),\n    COL_VERTEX(3900, 0, -2854),\n    COL_VERTEX(3623, 0, -3131),\n    COL_VERTEX(4292, 0, -2854),\n    COL_VERTEX(3584, -1496, -3131),\n    COL_VERTEX(4258, -1185, -3131),\n    COL_VERTEX(4569, -511, -3131),\n    COL_VERTEX(4569, 0, -3131),\n    COL_VERTEX(3584, -1496, -3523),\n    COL_VERTEX(4258, -1185, -3523),\n    COL_VERTEX(4569, 0, -3523),\n    COL_VERTEX(4028, -955, -3800),\n    COL_VERTEX(3584, -1219, -3800),\n    COL_VERTEX(4292, 0, -3800),\n    COL_VERTEX(4292, -511, -3800),\n    COL_VERTEX(3833, -760, -3800),\n    COL_VERTEX(3900, -511, -3800),\n    COL_VERTEX(3584, -827, -3800),\n    COL_VERTEX(3900, 0, -3800),\n    COL_VERTEX(3623, -511, -3523),\n    COL_VERTEX(3584, -550, -3523),\n    COL_VERTEX(3603, -530, -3523),\n    COL_VERTEX(3623, 0, -3523),\n    COL_VERTEX(-3839, -2559, -2303),\n    COL_VERTEX(2304, -2559, -2303),\n    COL_VERTEX(-3839, -511, 3840),\n    COL_VERTEX(-3839, -2559, 3840),\n    COL_VERTEX(-3839, -2559, -1791),\n    COL_VERTEX(2304, -2559, 3840),\n    COL_VERTEX(2304, -511, -2303),\n    COL_VERTEX(-3839, -511, -2303),\n    COL_VERTEX(-2047, -2559, 3712),\n    COL_VERTEX(-2175, -2559, 3712),\n    COL_VERTEX(-2303, -2559, 3840),\n    COL_VERTEX(-2559, -511, -1023),\n    COL_VERTEX(-2559, -511, 3840),\n    COL_VERTEX(768, 256, 3840),\n    COL_VERTEX(384, -2559, 3840),\n    COL_VERTEX(512, -2559, 3712),\n    COL_VERTEX(640, -2559, 3712),\n    COL_VERTEX(-3839, -2559, -1535),\n    COL_VERTEX(-3748, -2559, -1444),\n    COL_VERTEX(-3748, -2559, -1263),\n    COL_VERTEX(1536, -2457, -639),\n    COL_VERTEX(1536, -2559, -639),\n    COL_VERTEX(1792, -2559, -639),\n    COL_VERTEX(1792, -2457, -639),\n    COL_VERTEX(1536, -2457, -1919),\n    COL_VERTEX(1536, -2559, -1919),\n    COL_VERTEX(1792, -2457, -1919),\n    COL_VERTEX(1792, -2559, -1919),\n    COL_VERTEX(-895, -1151, 3456),\n    COL_VERTEX(-511, -1151, 3328),\n    COL_VERTEX(-1023, -1151, 3840),\n    COL_VERTEX(-1023, -2559, 2048),\n    COL_VERTEX(-1023, -2175, 2048),\n    COL_VERTEX(-1023, -2175, 2944),\n    COL_VERTEX(-511, -2175, 2048),\n    COL_VERTEX(-511, -1791, 2048),\n    COL_VERTEX(-511, -2175, 2944),\n    COL_VERTEX(-383, -1791, 3200),\n    COL_VERTEX(-1023, -1791, 2944),\n    COL_VERTEX(-383, -1343, 3200),\n    COL_VERTEX(-1535, -2559, 2304),\n    COL_VERTEX(-1279, -1791, 2048),\n    COL_VERTEX(-1535, -2559, 3840),\n    COL_VERTEX(-1151, -1791, 3200),\n    COL_VERTEX(0, -2559, 2304),\n    COL_VERTEX(-863, -1100, 3680),\n    COL_VERTEX(-671, -1100, 3488),\n    COL_VERTEX(-863, -895, 3680),\n    COL_VERTEX(-671, -895, 3488),\n    COL_VERTEX(-1151, -1343, 3200),\n    COL_VERTEX(-863, -1100, 3488),\n    COL_VERTEX(-863, -895, 3488),\n    COL_VERTEX(-692, -332, 3714),\n    COL_VERTEX(-842, -332, 3714),\n    COL_VERTEX(-1171, -409, 3200),\n    COL_VERTEX(-842, -409, 3714),\n    COL_VERTEX(-917, -332, 3584),\n    COL_VERTEX(-842, -332, 3454),\n    COL_VERTEX(-692, -332, 3454),\n    COL_VERTEX(-215, -409, 3584),\n    COL_VERTEX(-363, -332, 3200),\n    COL_VERTEX(-1171, -332, 3200),\n    COL_VERTEX(-1171, -409, 3840),\n    COL_VERTEX(-1319, -332, 3584),\n    COL_VERTEX(-215, -332, 3584),\n    COL_VERTEX(-617, -332, 3584),\n    COL_VERTEX(-363, -409, 3840),\n    COL_VERTEX(-363, -332, 3840),\n    COL_VERTEX(-1171, -332, 3840),\n    COL_VERTEX(-665, -306, 2278),\n    COL_VERTEX(-869, -306, 3379),\n    COL_VERTEX(-665, -306, 3379),\n    COL_VERTEX(-665, -332, 3379),\n    COL_VERTEX(-869, -306, 2278),\n    COL_VERTEX(-639, -2431, 896),\n    COL_VERTEX(-959, -2431, 960),\n    COL_VERTEX(-511, -2559, 1024),\n    COL_VERTEX(-1023, -2559, 1024),\n    COL_VERTEX(-895, -2431, 640),\n    COL_VERTEX(-895, -2431, 896),\n    COL_VERTEX(-575, -2431, 576),\n    COL_VERTEX(-639, -2431, 640),\n    COL_VERTEX(-1023, -2559, 512),\n    COL_VERTEX(-511, -2559, 512),\n    COL_VERTEX(1024, -1279, 0),\n    COL_VERTEX(1024, -2303, 1101),\n    COL_VERTEX(1024, -1279, 2048),\n    COL_VERTEX(1024, -2559, 0),\n    COL_VERTEX(1034, -2303, 947),\n    COL_VERTEX(1024, -2559, 947),\n    COL_VERTEX(1024, -2303, 947),\n    COL_VERTEX(1152, -1279, 0),\n    COL_VERTEX(1280, -1279, -127),\n    COL_VERTEX(1280, -1407, -127),\n    COL_VERTEX(1152, -1279, 2048),\n    COL_VERTEX(1280, -1279, 2176),\n    COL_VERTEX(2304, -1279, 2176),\n    COL_VERTEX(1280, -2559, -255),\n    COL_VERTEX(1280, -1279, -255),\n    COL_VERTEX(2304, -2559, 2304),\n    COL_VERTEX(1280, -2559, 2304),\n    COL_VERTEX(1280, -1279, 2304),\n    COL_VERTEX(2304, -1279, 2304),\n    COL_VERTEX(-511, -2559, -767),\n    COL_VERTEX(1024, -1791, -2303),\n    COL_VERTEX(205, -2303, -767),\n    COL_VERTEX(-511, -1791, -767),\n    COL_VERTEX(51, -2559, -767),\n    COL_VERTEX(51, -2303, -767),\n    COL_VERTEX(1024, -2559, -1023),\n    COL_VERTEX(51, -2559, -777),\n    COL_VERTEX(-767, -2559, -1023),\n    COL_VERTEX(1024, -2559, -2303),\n    COL_VERTEX(-2815, -2047, -767),\n    COL_VERTEX(-1279, -2559, -767),\n    COL_VERTEX(-1279, -2047, -1791),\n    COL_VERTEX(-1279, -2559, -1791),\n    COL_VERTEX(-2815, -2559, -1791),\n    COL_VERTEX(-2815, -2047, -1791),\n    COL_VERTEX(-2815, -2303, -1535),\n    COL_VERTEX(-2815, -2559, -1689),\n    COL_VERTEX(-2815, -2303, -1689),\n    COL_VERTEX(-767, -2559, -1791),\n    COL_VERTEX(-2805, -2559, -1689),\n    COL_VERTEX(-3327, -2559, 1024),\n    COL_VERTEX(-3839, -1151, 1024),\n    COL_VERTEX(-3839, -1151, 0),\n    COL_VERTEX(-3327, -1407, 1024),\n    COL_VERTEX(-3583, -1151, 0),\n    COL_VERTEX(-3660, -2303, 0),\n    COL_VERTEX(-3660, -2559, 0),\n    COL_VERTEX(-3327, -2559, 0),\n    COL_VERTEX(-3506, -2303, 0),\n    COL_VERTEX(-3506, -2559, 0),\n    COL_VERTEX(-3506, -2559, 10),\n    COL_VERTEX(-3839, -1023, 3328),\n    COL_VERTEX(-3071, -2559, 3328),\n    COL_VERTEX(-3071, -1279, 3328),\n    COL_VERTEX(-2887, -2303, 3144),\n    COL_VERTEX(-3839, -2559, 1792),\n    COL_VERTEX(-3071, -2559, 1792),\n    COL_VERTEX(-2815, -2559, 2048),\n    COL_VERTEX(-2895, -2303, 3137),\n    COL_VERTEX(-3003, -2303, 3246),\n    COL_VERTEX(-2895, -2559, 3137),\n    COL_VERTEX(-255, -332, 1280),\n    COL_VERTEX(-1279, -332, 2304),\n    COL_VERTEX(-255, -332, 2304),\n    COL_VERTEX(-255, -588, 2304),\n    COL_VERTEX(-1279, -332, 1280),\n    COL_VERTEX(2304, -2559, -1791),\n    COL_VERTEX(-1279, -2533, -1791),\n    COL_VERTEX(-767, -2533, -2047),\n    COL_VERTEX(-1279, -2508, -2047),\n    COL_VERTEX(1024, -511, -1023),\n    COL_VERTEX(-780, -665, 3571),\n    COL_VERTEX(1792, -1586, 3584),\n    COL_VERTEX(1792, -1586, 3840),\n    COL_VERTEX(1920, -1586, 3712),\n    COL_VERTEX(1920, -1586, 3840),\n    COL_VERTEX(1920, -1330, 3712),\n    COL_VERTEX(1792, -1842, 3584),\n    COL_VERTEX(2304, -1842, 3584),\n    COL_VERTEX(2048, -1586, 3584),\n    COL_VERTEX(1792, -2559, 3328),\n    COL_VERTEX(1792, -2559, 3840),\n    COL_VERTEX(2048, -1330, 3712),\n    COL_VERTEX(2048, -1125, 3840),\n    COL_VERTEX(-2815, -1496, -3523),\n    COL_VERTEX(-2815, -1496, -3131),\n    COL_VERTEX(4569, -511, -3523),\n    COL_VERTEX(-2815, -2559, -2303),\n    COL_VERTEX(2304, -511, 3840),\n    COL_VERTEX(1024, -2559, -1791),\n    COL_VERTEX(-1279, -2508, -2303),\n    COL_VERTEX(-1279, -2508, -1791),\n    COL_VERTEX(-2303, 256, -767),\n    COL_VERTEX(-2303, 256, 3840),\n    COL_VERTEX(-575, -2431, 960),\n    COL_VERTEX(-959, -2431, 576),\n    COL_VERTEX(-2047, 256, 3712),\n    COL_VERTEX(-1919, 256, 3840),\n    COL_VERTEX(-1919, -2559, 3840),\n    COL_VERTEX(1024, -1791, -1023),\n    COL_VERTEX(768, 256, -767),\n    COL_VERTEX(-2175, 256, 3712),\n    COL_VERTEX(512, 256, 3712),\n    COL_VERTEX(384, 256, 3840),\n    COL_VERTEX(640, 256, 3712),\n    COL_VERTEX(768, -2559, 3840),\n    COL_VERTEX(-3748, -511, -1444),\n    COL_VERTEX(-3748, -511, -1263),\n    COL_VERTEX(-3839, -511, -1173),\n    COL_VERTEX(-3839, -2559, -1173),\n    COL_VERTEX(1587, -2457, -690),\n    COL_VERTEX(1587, -2457, -1868),\n    COL_VERTEX(1741, -2457, -690),\n    COL_VERTEX(1741, -2457, -1868),\n    COL_VERTEX(-1023, -1151, 3328),\n    COL_VERTEX(-639, -1151, 3456),\n    COL_VERTEX(-639, -1151, 3712),\n    COL_VERTEX(-511, -1151, 3840),\n    COL_VERTEX(-895, -1151, 3712),\n    COL_VERTEX(-511, -2559, 2048),\n    COL_VERTEX(-1023, -1791, 2048),\n    COL_VERTEX(-511, -1791, 2944),\n    COL_VERTEX(-255, -1791, 2048),\n    COL_VERTEX(0, -1791, 2304),\n    COL_VERTEX(0, -1791, 3840),\n    COL_VERTEX(-383, -1791, 3840),\n    COL_VERTEX(-383, -1343, 3840),\n    COL_VERTEX(-1535, -1791, 2304),\n    COL_VERTEX(-1535, -1791, 3840),\n    COL_VERTEX(-1151, -1791, 3840),\n    COL_VERTEX(-1151, -1343, 3840),\n    COL_VERTEX(0, -2559, 3840),\n    COL_VERTEX(-671, -895, 3680),\n    COL_VERTEX(-671, -1100, 3680),\n    COL_VERTEX(-639, -895, 3712),\n    COL_VERTEX(-895, -895, 3712),\n    COL_VERTEX(-895, -895, 3456),\n    COL_VERTEX(-639, -895, 3456),\n    COL_VERTEX(-917, -409, 3584),\n    COL_VERTEX(-692, -409, 3714),\n    COL_VERTEX(-842, -409, 3454),\n    COL_VERTEX(-692, -409, 3454),\n    COL_VERTEX(-1319, -409, 3584),\n    COL_VERTEX(-363, -409, 3200),\n    COL_VERTEX(-617, -409, 3584),\n    COL_VERTEX(-665, -332, 2278),\n    COL_VERTEX(-869, -332, 3379),\n    COL_VERTEX(-869, -332, 2278),\n    COL_VERTEX(-767, -2175, 768),\n    COL_VERTEX(1024, -2559, 1101),\n    COL_VERTEX(1024, -2559, 2048),\n    COL_VERTEX(1152, -1407, 0),\n    COL_VERTEX(2304, -1407, -127),\n    COL_VERTEX(2304, -1279, -127),\n    COL_VERTEX(1034, -2559, 1101),\n    COL_VERTEX(1034, -2303, 1101),\n    COL_VERTEX(1034, -2559, 947),\n    COL_VERTEX(1152, -1407, 2048),\n    COL_VERTEX(1280, -1407, 2176),\n    COL_VERTEX(2304, -1407, 2176),\n    COL_VERTEX(2304, -1279, -255),\n    COL_VERTEX(2304, -2559, -255),\n    COL_VERTEX(-767, -1791, -1023),\n    COL_VERTEX(768, -1791, -767),\n    COL_VERTEX(51, -2303, -777),\n    COL_VERTEX(205, -2303, -777),\n    COL_VERTEX(205, -2559, -777),\n    COL_VERTEX(205, -2559, -767),\n    COL_VERTEX(768, -2559, -767),\n    COL_VERTEX(-767, -1791, -2303),\n    COL_VERTEX(-767, -2610, -2303),\n    COL_VERTEX(-1279, -2047, -767),\n    COL_VERTEX(-2815, -2559, -767),\n    COL_VERTEX(-2805, -2303, -1689),\n    COL_VERTEX(-2805, -2303, -1535),\n    COL_VERTEX(-2805, -2559, -1535),\n    COL_VERTEX(-2815, -2559, -1535),\n    COL_VERTEX(-767, -2533, -1791),\n    COL_VERTEX(-1279, -2533, -2047),\n    COL_VERTEX(-3327, -1407, 0),\n    COL_VERTEX(-3839, -2559, 1024),\n    COL_VERTEX(-3583, -1151, 1024),\n    COL_VERTEX(-3839, -2559, 0),\n    COL_VERTEX(-3660, -2559, 10),\n    COL_VERTEX(-3660, -2303, 10),\n    COL_VERTEX(-3506, -2303, 10),\n    COL_VERTEX(-3071, -1279, 1792),\n    COL_VERTEX(-3839, -2559, 3328),\n    COL_VERTEX(-3839, -1023, 1792),\n    COL_VERTEX(-2996, -2559, 3253),\n    COL_VERTEX(-2815, -1279, 3072),\n    COL_VERTEX(-2996, -2303, 3253),\n    COL_VERTEX(-2815, -1279, 2048),\n    COL_VERTEX(-2815, -2559, 3072),\n    COL_VERTEX(-2887, -2559, 3144),\n    COL_VERTEX(-3003, -2559, 3246),\n    COL_VERTEX(-255, -588, 1280),\n    COL_VERTEX(-1279, -588, 2304),\n    COL_VERTEX(-1279, -588, 1280),\n    COL_VERTEX(-767, -2508, -2047),\n    COL_VERTEX(-767, -2508, -2303),\n    COL_VERTEX(-780, -665, 3597),\n    COL_VERTEX(-754, -665, 3597),\n    COL_VERTEX(-754, -665, 3571),\n    COL_VERTEX(2048, -1586, 3712),\n    COL_VERTEX(2048, -1330, 3840),\n    COL_VERTEX(1920, -1330, 3840),\n    COL_VERTEX(1792, -1842, 3328),\n    COL_VERTEX(2304, -1842, 3328),\n    COL_VERTEX(2304, -1125, 3584),\n    COL_VERTEX(2048, -1125, 3584),\n    COL_VERTEX(2304, -2559, 3328),\n    COL_VERTEX(2304, -1125, 3840),\n    COL_TRI_INIT(SURFACE_DEFAULT, 558),\n    COL_TRI(49, 173, 45),\n    COL_TRI(49, 174, 173),\n    COL_TRI(45, 173, 175),\n    COL_TRI(176, 173, 174),\n    COL_TRI(173, 176, 177),\n    COL_TRI(173, 177, 175),\n    COL_TRI(178, 177, 176),\n    COL_TRI(179, 180, 177),\n    COL_TRI(181, 179, 177),\n    COL_TRI(175, 177, 182),\n    COL_TRI(178, 181, 177),\n    COL_TRI(177, 180, 182),\n    COL_TRI(46, 175, 182),\n    COL_TRI(45, 175, 46),\n    COL_TRI(183, 178, 176),\n    COL_TRI(183, 91, 178),\n    COL_TRI(178, 91, 79),\n    COL_TRI(178, 79, 181),\n    COL_TRI(181, 79, 76),\n    COL_TRI(181, 76, 179),\n    COL_TRI(180, 184, 185),\n    COL_TRI(182, 180, 185),\n    COL_TRI(52, 185, 188),\n    COL_TRI(46, 182, 50),\n    COL_TRI(50, 182, 185),\n    COL_TRI(179, 186, 180),\n    COL_TRI(179, 78, 186),\n    COL_TRI(179, 76, 78),\n    COL_TRI(186, 184, 180),\n    COL_TRI(187, 184, 186),\n    COL_TRI(188, 185, 184),\n    COL_TRI(188, 184, 187),\n    COL_TRI(50, 185, 52),\n    COL_TRI(189, 187, 186),\n    COL_TRI(186, 78, 82),\n    COL_TRI(186, 82, 189),\n    COL_TRI(190, 188, 187),\n    COL_TRI(190, 187, 189),\n    COL_TRI(190, 189, 191),\n    COL_TRI(189, 82, 88),\n    COL_TRI(189, 88, 191),\n    COL_TRI(54, 188, 394),\n    COL_TRI(52, 188, 54),\n    COL_TRI(190, 394, 188),\n    COL_TRI(190, 193, 395),\n    COL_TRI(190, 395, 394),\n    COL_TRI(190, 191, 193),\n    COL_TRI(183, 194, 193),\n    COL_TRI(54, 394, 56),\n    COL_TRI(56, 394, 395),\n    COL_TRI(191, 192, 193),\n    COL_TRI(191, 88, 89),\n    COL_TRI(191, 89, 192),\n    COL_TRI(192, 183, 193),\n    COL_TRI(192, 89, 90),\n    COL_TRI(192, 90, 183),\n    COL_TRI(193, 194, 174),\n    COL_TRI(193, 174, 395),\n    COL_TRI(197, 200, 198),\n    COL_TRI(59, 395, 174),\n    COL_TRI(56, 395, 59),\n    COL_TRI(59, 174, 49),\n    COL_TRI(176, 174, 194),\n    COL_TRI(183, 176, 194),\n    COL_TRI(183, 90, 91),\n    COL_TRI(195, 197, 198),\n    COL_TRI(196, 195, 198),\n    COL_TRI(203, 224, 222),\n    COL_TRI(198, 200, 201),\n    COL_TRI(199, 60, 200),\n    COL_TRI(200, 60, 61),\n    COL_TRI(200, 61, 201),\n    COL_TRI(197, 199, 200),\n    COL_TRI(201, 61, 63),\n    COL_TRI(201, 63, 223),\n    COL_TRI(198, 201, 202),\n    COL_TRI(202, 201, 223),\n    COL_TRI(198, 202, 203),\n    COL_TRI(202, 223, 224),\n    COL_TRI(203, 202, 224),\n    COL_TRI(204, 203, 205),\n    COL_TRI(205, 203, 222),\n    COL_TRI(204, 196, 203),\n    COL_TRI(196, 198, 203),\n    COL_TRI(206, 195, 196),\n    COL_TRI(206, 196, 204),\n    COL_TRI(207, 199, 197),\n    COL_TRI(208, 207, 197),\n    COL_TRI(209, 208, 197),\n    COL_TRI(209, 197, 195),\n    COL_TRI(199, 62, 60),\n    COL_TRI(207, 62, 199),\n    COL_TRI(210, 209, 195),\n    COL_TRI(210, 195, 206),\n    COL_TRI(207, 67, 62),\n    COL_TRI(211, 67, 207),\n    COL_TRI(212, 211, 207),\n    COL_TRI(212, 207, 208),\n    COL_TRI(209, 212, 208),\n    COL_TRI(213, 209, 210),\n    COL_TRI(213, 396, 209),\n    COL_TRI(209, 396, 212),\n    COL_TRI(214, 211, 212),\n    COL_TRI(214, 212, 396),\n    COL_TRI(215, 66, 211),\n    COL_TRI(211, 66, 67),\n    COL_TRI(214, 215, 211),\n    COL_TRI(216, 217, 396),\n    COL_TRI(216, 396, 213),\n    COL_TRI(217, 214, 396),\n    COL_TRI(218, 215, 214),\n    COL_TRI(219, 218, 214),\n    COL_TRI(219, 214, 217),\n    COL_TRI(215, 65, 66),\n    COL_TRI(220, 65, 215),\n    COL_TRI(218, 220, 215),\n    COL_TRI(223, 63, 64),\n    COL_TRI(221, 217, 216),\n    COL_TRI(221, 219, 217),\n    COL_TRI(222, 218, 219),\n    COL_TRI(223, 220, 218),\n    COL_TRI(224, 223, 218),\n    COL_TRI(222, 224, 218),\n    COL_TRI(223, 64, 220),\n    COL_TRI(220, 64, 65),\n    COL_TRI(225, 222, 219),\n    COL_TRI(225, 219, 221),\n    COL_TRI(205, 222, 225),\n    COL_TRI(226, 230, 343),\n    COL_TRI(226, 343, 397),\n    COL_TRI(226, 132, 81),\n    COL_TRI(226, 81, 243),\n    COL_TRI(85, 132, 226),\n    COL_TRI(227, 85, 226),\n    COL_TRI(80, 229, 243),\n    COL_TRI(80, 228, 229),\n    COL_TRI(228, 233, 237),\n    COL_TRI(228, 237, 238),\n    COL_TRI(229, 228, 398),\n    COL_TRI(230, 229, 303),\n    COL_TRI(229, 231, 302),\n    COL_TRI(229, 302, 303),\n    COL_TRI(229, 398, 231),\n    COL_TRI(231, 376, 309),\n    COL_TRI(231, 309, 302),\n    COL_TRI(231, 398, 232),\n    COL_TRI(231, 232, 227),\n    COL_TRI(234, 407, 408),\n    COL_TRI(232, 398, 164),\n    COL_TRI(232, 164, 380),\n    COL_TRI(233, 232, 380),\n    COL_TRI(85, 232, 83),\n    COL_TRI(227, 232, 85),\n    COL_TRI(227, 338, 399),\n    COL_TRI(227, 399, 376),\n    COL_TRI(234, 406, 407),\n    COL_TRI(235, 411, 406),\n    COL_TRI(235, 406, 234),\n    COL_TRI(236, 403, 411),\n    COL_TRI(236, 411, 235),\n    COL_TRI(237, 402, 403),\n    COL_TRI(237, 403, 238),\n    COL_TRI(238, 403, 239),\n    COL_TRI(239, 403, 402),\n    COL_TRI(240, 412, 241),\n    COL_TRI(240, 413, 412),\n    COL_TRI(243, 416, 244),\n    COL_TRI(241, 412, 414),\n    COL_TRI(241, 414, 242),\n    COL_TRI(242, 414, 239),\n    COL_TRI(242, 239, 415),\n    COL_TRI(238, 239, 164),\n    COL_TRI(239, 402, 410),\n    COL_TRI(164, 239, 410),\n    COL_TRI(243, 80, 416),\n    COL_TRI(244, 416, 417),\n    COL_TRI(244, 417, 245),\n    COL_TRI(245, 417, 418),\n    COL_TRI(245, 418, 419),\n    COL_TRI(246, 420, 421),\n    COL_TRI(246, 421, 250),\n    COL_TRI(247, 246, 250),\n    COL_TRI(248, 246, 247),\n    COL_TRI(249, 420, 246),\n    COL_TRI(248, 249, 246),\n    COL_TRI(249, 422, 420),\n    COL_TRI(250, 421, 423),\n    COL_TRI(250, 423, 252),\n    COL_TRI(251, 250, 252),\n    COL_TRI(247, 250, 251),\n    COL_TRI(252, 423, 422),\n    COL_TRI(253, 252, 249),\n    COL_TRI(252, 422, 249),\n    COL_TRI(251, 252, 253),\n    COL_TRI(253, 249, 248),\n    COL_TRI(254, 255, 424),\n    COL_TRI(254, 425, 255),\n    COL_TRI(125, 430, 257),\n    COL_TRI(255, 425, 426),\n    COL_TRI(256, 426, 428),\n    COL_TRI(255, 426, 427),\n    COL_TRI(256, 427, 426),\n    COL_TRI(256, 428, 254),\n    COL_TRI(254, 424, 256),\n    COL_TRI(257, 258, 260),\n    COL_TRI(257, 260, 429),\n    COL_TRI(258, 430, 264),\n    COL_TRI(258, 264, 259),\n    COL_TRI(259, 260, 258),\n    COL_TRI(260, 431, 261),\n    COL_TRI(260, 262, 431),\n    COL_TRI(259, 262, 260),\n    COL_TRI(261, 146, 429),\n    COL_TRI(262, 259, 264),\n    COL_TRI(262, 264, 431),\n    COL_TRI(263, 261, 431),\n    COL_TRI(263, 432, 261),\n    COL_TRI(261, 432, 146),\n    COL_TRI(264, 430, 267),\n    COL_TRI(125, 267, 430),\n    COL_TRI(5, 4, 8),\n    COL_TRI(5, 0, 4),\n    COL_TRI(265, 4, 11),\n    COL_TRI(265, 263, 4),\n    COL_TRI(8, 269, 275),\n    COL_TRI(7, 8, 275),\n    COL_TRI(264, 267, 269),\n    COL_TRI(264, 269, 263),\n    COL_TRI(263, 435, 434),\n    COL_TRI(266, 267, 125),\n    COL_TRI(267, 437, 438),\n    COL_TRI(267, 438, 439),\n    COL_TRI(267, 439, 269),\n    COL_TRI(266, 437, 267),\n    COL_TRI(268, 438, 437),\n    COL_TRI(268, 437, 266),\n    COL_TRI(269, 440, 275),\n    COL_TRI(263, 433, 432),\n    COL_TRI(263, 434, 433),\n    COL_TRI(263, 431, 264),\n    COL_TRI(263, 436, 435),\n    COL_TRI(270, 434, 441),\n    COL_TRI(270, 433, 434),\n    COL_TRI(146, 432, 433),\n    COL_TRI(146, 433, 270),\n    COL_TRI(271, 442, 273),\n    COL_TRI(271, 443, 442),\n    COL_TRI(272, 442, 443),\n    COL_TRI(273, 442, 444),\n    COL_TRI(272, 274, 442),\n    COL_TRI(274, 444, 442),\n    COL_TRI(273, 444, 445),\n    COL_TRI(271, 273, 277),\n    COL_TRI(273, 445, 446),\n    COL_TRI(273, 446, 277),\n    COL_TRI(274, 447, 444),\n    COL_TRI(263, 265, 436),\n    COL_TRI(277, 447, 274),\n    COL_TRI(277, 446, 447),\n    COL_TRI(276, 277, 274),\n    COL_TRI(275, 265, 9),\n    COL_TRI(265, 11, 10),\n    COL_TRI(275, 9, 7),\n    COL_TRI(265, 10, 9),\n    COL_TRI(269, 439, 440),\n    COL_TRI(276, 274, 272),\n    COL_TRI(282, 448, 450),\n    COL_TRI(271, 277, 276),\n    COL_TRI(278, 281, 279),\n    COL_TRI(279, 281, 448),\n    COL_TRI(279, 448, 282),\n    COL_TRI(280, 448, 281),\n    COL_TRI(278, 449, 281),\n    COL_TRI(281, 292, 288),\n    COL_TRI(281, 288, 280),\n    COL_TRI(281, 449, 292),\n    COL_TRI(280, 450, 448),\n    COL_TRI(282, 450, 283),\n    COL_TRI(280, 451, 450),\n    COL_TRI(283, 450, 451),\n    COL_TRI(283, 451, 284),\n    COL_TRI(280, 285, 451),\n    COL_TRI(284, 451, 454),\n    COL_TRI(285, 454, 451),\n    COL_TRI(284, 454, 291),\n    COL_TRI(286, 280, 287),\n    COL_TRI(287, 280, 452),\n    COL_TRI(287, 452, 289),\n    COL_TRI(291, 454, 285),\n    COL_TRI(293, 285, 290),\n    COL_TRI(286, 453, 280),\n    COL_TRI(288, 452, 280),\n    COL_TRI(280, 453, 285),\n    COL_TRI(289, 452, 288),\n    COL_TRI(289, 288, 294),\n    COL_TRI(290, 453, 286),\n    COL_TRI(290, 285, 453),\n    COL_TRI(291, 285, 290),\n    COL_TRI(292, 449, 454),\n    COL_TRI(292, 454, 285),\n    COL_TRI(293, 292, 285),\n    COL_TRI(291, 454, 449),\n    COL_TRI(294, 282, 283),\n    COL_TRI(291, 449, 278),\n    COL_TRI(287, 289, 294),\n    COL_TRI(284, 286, 287),\n    COL_TRI(287, 294, 283),\n    COL_TRI(287, 283, 284),\n    COL_TRI(294, 293, 278),\n    COL_TRI(294, 278, 279),\n    COL_TRI(294, 279, 282),\n    COL_TRI(296, 298, 297),\n    COL_TRI(284, 290, 286),\n    COL_TRI(284, 291, 290),\n    COL_TRI(290, 291, 278),\n    COL_TRI(290, 278, 293),\n    COL_TRI(295, 299, 296),\n    COL_TRI(295, 296, 297),\n    COL_TRI(297, 298, 455),\n    COL_TRI(298, 456, 457),\n    COL_TRI(298, 457, 455),\n    COL_TRI(296, 456, 298),\n    COL_TRI(295, 455, 457),\n    COL_TRI(297, 455, 295),\n    COL_TRI(295, 457, 299),\n    COL_TRI(299, 456, 296),\n    COL_TRI(299, 457, 456),\n    COL_TRI(300, 305, 301),\n    COL_TRI(300, 301, 404),\n    COL_TRI(301, 305, 304),\n    COL_TRI(301, 304, 405),\n    COL_TRI(302, 404, 301),\n    COL_TRI(302, 301, 303),\n    COL_TRI(304, 305, 458),\n    COL_TRI(305, 300, 458),\n    COL_TRI(306, 304, 307),\n    COL_TRI(306, 405, 304),\n    COL_TRI(307, 304, 458),\n    COL_TRI(303, 405, 308),\n    COL_TRI(303, 301, 405),\n    COL_TRI(308, 405, 306),\n    COL_TRI(306, 307, 300),\n    COL_TRI(300, 404, 306),\n    COL_TRI(309, 306, 404),\n    COL_TRI(308, 306, 309),\n    COL_TRI(300, 307, 458),\n    COL_TRI(309, 404, 302),\n    COL_TRI(313, 310, 324),\n    COL_TRI(230, 303, 308),\n    COL_TRI(310, 316, 311),\n    COL_TRI(310, 313, 315),\n    COL_TRI(310, 315, 316),\n    COL_TRI(311, 312, 310),\n    COL_TRI(312, 317, 310),\n    COL_TRI(310, 318, 324),\n    COL_TRI(310, 317, 318),\n    COL_TRI(316, 314, 465),\n    COL_TRI(311, 459, 460),\n    COL_TRI(311, 460, 312),\n    COL_TRI(314, 464, 465),\n    COL_TRI(314, 466, 464),\n    COL_TRI(315, 314, 316),\n    COL_TRI(315, 466, 314),\n    COL_TRI(316, 465, 311),\n    COL_TRI(311, 465, 464),\n    COL_TRI(311, 464, 459),\n    COL_TRI(317, 319, 318),\n    COL_TRI(317, 461, 319),\n    COL_TRI(318, 319, 462),\n    COL_TRI(319, 467, 468),\n    COL_TRI(319, 468, 469),\n    COL_TRI(319, 469, 462),\n    COL_TRI(319, 461, 467),\n    COL_TRI(324, 463, 470),\n    COL_TRI(320, 467, 461),\n    COL_TRI(320, 461, 317),\n    COL_TRI(321, 468, 467),\n    COL_TRI(321, 467, 320),\n    COL_TRI(322, 468, 321),\n    COL_TRI(322, 469, 468),\n    COL_TRI(318, 462, 463),\n    COL_TRI(323, 324, 470),\n    COL_TRI(323, 470, 471),\n    COL_TRI(324, 318, 463),\n    COL_TRI(313, 324, 323),\n    COL_TRI(325, 327, 326),\n    COL_TRI(326, 327, 312),\n    COL_TRI(326, 312, 460),\n    COL_TRI(327, 321, 320),\n    COL_TRI(327, 320, 312),\n    COL_TRI(328, 321, 327),\n    COL_TRI(325, 328, 327),\n    COL_TRI(312, 320, 317),\n    COL_TRI(328, 322, 321),\n    COL_TRI(329, 332, 472),\n    COL_TRI(330, 472, 332),\n    COL_TRI(330, 332, 473),\n    COL_TRI(331, 473, 332),\n    COL_TRI(332, 329, 333),\n    COL_TRI(332, 333, 334),\n    COL_TRI(332, 334, 331),\n    COL_TRI(329, 472, 337),\n    COL_TRI(333, 474, 334),\n    COL_TRI(333, 336, 474),\n    COL_TRI(334, 474, 475),\n    COL_TRI(334, 475, 331),\n    COL_TRI(331, 476, 477),\n    COL_TRI(331, 475, 476),\n    COL_TRI(331, 478, 473),\n    COL_TRI(331, 477, 478),\n    COL_TRI(336, 475, 474),\n    COL_TRI(336, 476, 475),\n    COL_TRI(339, 169, 172),\n    COL_TRI(335, 473, 478),\n    COL_TRI(335, 409, 473),\n    COL_TRI(330, 473, 409),\n    COL_TRI(337, 479, 480),\n    COL_TRI(337, 472, 479),\n    COL_TRI(330, 479, 472),\n    COL_TRI(338, 409, 335),\n    COL_TRI(338, 330, 409),\n    COL_TRI(339, 481, 167),\n    COL_TRI(339, 167, 169),\n    COL_TRI(339, 172, 344),\n    COL_TRI(341, 167, 481),\n    COL_TRI(340, 481, 339),\n    COL_TRI(342, 341, 481),\n    COL_TRI(342, 481, 340),\n    COL_TRI(341, 170, 167),\n    COL_TRI(170, 341, 344),\n    COL_TRI(170, 344, 172),\n    COL_TRI(343, 341, 342),\n    COL_TRI(343, 344, 341),\n    COL_TRI(344, 343, 346),\n    COL_TRI(344, 346, 347),\n    COL_TRI(344, 347, 345),\n    COL_TRI(345, 339, 344),\n    COL_TRI(346, 483, 347),\n    COL_TRI(347, 483, 484),\n    COL_TRI(347, 484, 345),\n    COL_TRI(345, 485, 486),\n    COL_TRI(345, 484, 485),\n    COL_TRI(345, 486, 482),\n    COL_TRI(345, 482, 339),\n    COL_TRI(348, 377, 342),\n    COL_TRI(350, 489, 353),\n    COL_TRI(340, 339, 482),\n    COL_TRI(343, 400, 397),\n    COL_TRI(343, 401, 400),\n    COL_TRI(349, 484, 483),\n    COL_TRI(346, 349, 483),\n    COL_TRI(349, 485, 484),\n    COL_TRI(356, 492, 352),\n    COL_TRI(350, 357, 489),\n    COL_TRI(352, 489, 357),\n    COL_TRI(353, 489, 354),\n    COL_TRI(352, 354, 489),\n    COL_TRI(353, 354, 491),\n    COL_TRI(351, 350, 353),\n    COL_TRI(351, 353, 491),\n    COL_TRI(354, 352, 351),\n    COL_TRI(354, 351, 491),\n    COL_TRI(355, 356, 352),\n    COL_TRI(352, 357, 358),\n    COL_TRI(352, 358, 355),\n    COL_TRI(358, 495, 494),\n    COL_TRI(351, 490, 350),\n    COL_TRI(357, 359, 358),\n    COL_TRI(355, 493, 356),\n    COL_TRI(355, 494, 493),\n    COL_TRI(358, 494, 355),\n    COL_TRI(359, 495, 358),\n    COL_TRI(363, 501, 364),\n    COL_TRI(359, 360, 495),\n    COL_TRI(360, 494, 495),\n    COL_TRI(360, 493, 494),\n    COL_TRI(361, 363, 496),\n    COL_TRI(362, 361, 497),\n    COL_TRI(361, 496, 498),\n    COL_TRI(362, 363, 361),\n    COL_TRI(363, 362, 499),\n    COL_TRI(364, 500, 363),\n    COL_TRI(363, 499, 501),\n    COL_TRI(368, 364, 501),\n    COL_TRI(365, 496, 366),\n    COL_TRI(365, 498, 496),\n    COL_TRI(366, 496, 502),\n    COL_TRI(363, 502, 496),\n    COL_TRI(364, 503, 500),\n    COL_TRI(367, 502, 500),\n    COL_TRI(367, 500, 503),\n    COL_TRI(363, 500, 502),\n    COL_TRI(366, 502, 367),\n    COL_TRI(364, 504, 503),\n    COL_TRI(368, 501, 369),\n    COL_TRI(369, 501, 499),\n    COL_TRI(371, 372, 373),\n    COL_TRI(369, 499, 505),\n    COL_TRI(368, 505, 370),\n    COL_TRI(368, 369, 505),\n    COL_TRI(370, 504, 364),\n    COL_TRI(370, 364, 368),\n    COL_TRI(371, 375, 372),\n    COL_TRI(377, 487, 378),\n    COL_TRI(372, 374, 373),\n    COL_TRI(373, 374, 506),\n    COL_TRI(373, 506, 371),\n    COL_TRI(374, 507, 508),\n    COL_TRI(374, 508, 506),\n    COL_TRI(372, 507, 374),\n    COL_TRI(371, 506, 508),\n    COL_TRI(371, 508, 375),\n    COL_TRI(375, 507, 372),\n    COL_TRI(375, 508, 507),\n    COL_TRI(376, 308, 309),\n    COL_TRI(376, 230, 308),\n    COL_TRI(348, 487, 377),\n    COL_TRI(377, 378, 488),\n    COL_TRI(377, 488, 379),\n    COL_TRI(378, 379, 488),\n    COL_TRI(379, 510, 400),\n    COL_TRI(378, 509, 379),\n    COL_TRI(379, 509, 510),\n    COL_TRI(377, 379, 401),\n    COL_TRI(380, 402, 237),\n    COL_TRI(233, 380, 237),\n    COL_TRI(385, 386, 384),\n    COL_TRI(380, 410, 402),\n    COL_TRI(164, 410, 380),\n    COL_TRI(381, 511, 512),\n    COL_TRI(381, 512, 513),\n    COL_TRI(382, 384, 389),\n    COL_TRI(383, 385, 384),\n    COL_TRI(382, 383, 384),\n    COL_TRI(384, 514, 389),\n    COL_TRI(387, 389, 388),\n    COL_TRI(386, 515, 392),\n    COL_TRI(386, 516, 515),\n    COL_TRI(384, 386, 392),\n    COL_TRI(385, 516, 386),\n    COL_TRI(384, 392, 514),\n    COL_TRI(387, 382, 389),\n    COL_TRI(388, 517, 387),\n    COL_TRI(388, 518, 517),\n    COL_TRI(390, 518, 521),\n    COL_TRI(390, 517, 518),\n    COL_TRI(387, 517, 390),\n    COL_TRI(383, 387, 390),\n    COL_TRI(391, 383, 390),\n    COL_TRI(383, 382, 387),\n    COL_TRI(392, 515, 393),\n    COL_TRI(392, 393, 520),\n    COL_TRI(393, 522, 519),\n    COL_TRI(393, 519, 520),\n    COL_TRI(389, 520, 519),\n    COL_TRI(389, 519, 388),\n    COL_TRI(392, 520, 389),\n    COL_TRI(392, 389, 514),\n    COL_TRI_INIT(SURFACE_VERY_SLIPPERY, 6),\n    COL_TRI(167, 168, 169),\n    COL_TRI(170, 171, 167),\n    COL_TRI(167, 171, 168),\n    COL_TRI(171, 172, 168),\n    COL_TRI(171, 170, 172),\n    COL_TRI(169, 168, 172),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 22),\n    COL_TRI(425, 443, 426),\n    COL_TRI(445, 512, 511),\n    COL_TRI(445, 444, 512),\n    COL_TRI(446, 445, 511),\n    COL_TRI(444, 447, 513),\n    COL_TRI(444, 513, 512),\n    COL_TRI(446, 511, 381),\n    COL_TRI(447, 446, 381),\n    COL_TRI(447, 381, 513),\n    COL_TRI(426, 271, 428),\n    COL_TRI(426, 443, 271),\n    COL_TRI(254, 276, 272),\n    COL_TRI(425, 272, 443),\n    COL_TRI(428, 271, 276),\n    COL_TRI(428, 276, 254),\n    COL_TRI(265, 427, 436),\n    COL_TRI(265, 255, 427),\n    COL_TRI(275, 255, 265),\n    COL_TRI(275, 424, 255),\n    COL_TRI(254, 272, 425),\n    COL_TRI(440, 424, 275),\n    COL_TRI(440, 256, 424),\n    COL_TRI_INIT(SURFACE_INSTANT_WARP_1B, 16),\n    COL_TRI(65, 55, 57),\n    COL_TRI(60, 48, 61),\n    COL_TRI(62, 44, 60),\n    COL_TRI(60, 44, 48),\n    COL_TRI(62, 47, 44),\n    COL_TRI(61, 48, 51),\n    COL_TRI(61, 51, 63),\n    COL_TRI(64, 53, 55),\n    COL_TRI(63, 53, 64),\n    COL_TRI(64, 55, 65),\n    COL_TRI(63, 51, 53),\n    COL_TRI(66, 57, 58),\n    COL_TRI(65, 57, 66),\n    COL_TRI(67, 47, 62),\n    COL_TRI(67, 58, 47),\n    COL_TRI(66, 58, 67),\n    COL_TRI_INIT(SURFACE_INSTANT_WARP_1C, 16),\n    COL_TRI(55, 54, 56),\n    COL_TRI(44, 45, 46),\n    COL_TRI(47, 45, 44),\n    COL_TRI(44, 46, 48),\n    COL_TRI(47, 49, 45),\n    COL_TRI(48, 46, 50),\n    COL_TRI(48, 50, 51),\n    COL_TRI(51, 52, 53),\n    COL_TRI(53, 54, 55),\n    COL_TRI(53, 52, 54),\n    COL_TRI(51, 50, 52),\n    COL_TRI(57, 56, 59),\n    COL_TRI(55, 56, 57),\n    COL_TRI(58, 49, 47),\n    COL_TRI(58, 59, 49),\n    COL_TRI(57, 59, 58),\n    COL_TRI_INIT(SURFACE_WALL_MISC, 14),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(4, 0, 3),\n    COL_TRI(0, 5, 6),\n    COL_TRI(0, 6, 1),\n    COL_TRI(7, 5, 8),\n    COL_TRI(7, 6, 5),\n    COL_TRI(9, 6, 7),\n    COL_TRI(9, 1, 6),\n    COL_TRI(10, 2, 1),\n    COL_TRI(10, 1, 9),\n    COL_TRI(11, 2, 10),\n    COL_TRI(11, 3, 2),\n    COL_TRI(4, 3, 11),\n    COL_TRI_INIT(SURFACE_NOISE_DEFAULT, 4),\n    COL_TRI(68, 69, 70),\n    COL_TRI(68, 71, 69),\n    COL_TRI(72, 73, 74),\n    COL_TRI(72, 75, 73),\n    COL_TRI_INIT(SURFACE_NO_CAM_COLLISION, 28),\n    COL_TRI(12, 13, 14),\n    COL_TRI(12, 15, 13),\n    COL_TRI(12, 16, 15),\n    COL_TRI(12, 17, 16),\n    COL_TRI(12, 18, 17),\n    COL_TRI(14, 19, 12),\n    COL_TRI(20, 21, 22),\n    COL_TRI(20, 23, 24),\n    COL_TRI(20, 22, 25),\n    COL_TRI(20, 24, 26),\n    COL_TRI(29, 38, 39),\n    COL_TRI(20, 26, 27),\n    COL_TRI(20, 27, 21),\n    COL_TRI(28, 32, 33),\n    COL_TRI(28, 34, 32),\n    COL_TRI(28, 29, 35),\n    COL_TRI(28, 33, 29),\n    COL_TRI(28, 36, 34),\n    COL_TRI(28, 37, 36),\n    COL_TRI(24, 12, 19),\n    COL_TRI(29, 39, 35),\n    COL_TRI(30, 40, 31),\n    COL_TRI(31, 41, 30),\n    COL_TRI(30, 42, 43),\n    COL_TRI(30, 43, 40),\n    COL_TRI(30, 38, 42),\n    COL_TRI(30, 39, 38),\n    COL_TRI(24, 19, 26),\n    COL_TRI_INIT(SURFACE_VANISH_CAP_WALLS, 118),\n    COL_TRI(83, 86, 84),\n    COL_TRI(76, 77, 28),\n    COL_TRI(76, 28, 78),\n    COL_TRI(79, 77, 76),\n    COL_TRI(28, 77, 80),\n    COL_TRI(81, 28, 80),\n    COL_TRI(78, 37, 82),\n    COL_TRI(78, 28, 37),\n    COL_TRI(83, 84, 85),\n    COL_TRI(86, 80, 77),\n    COL_TRI(86, 77, 87),\n    COL_TRI(84, 86, 32),\n    COL_TRI(86, 33, 32),\n    COL_TRI(86, 87, 33),\n    COL_TRI(85, 84, 81),\n    COL_TRI(36, 81, 84),\n    COL_TRI(84, 34, 36),\n    COL_TRI(84, 32, 34),\n    COL_TRI(85, 81, 132),\n    COL_TRI(36, 37, 81),\n    COL_TRI(37, 28, 81),\n    COL_TRI(79, 87, 77),\n    COL_TRI(82, 37, 36),\n    COL_TRI(82, 36, 88),\n    COL_TRI(88, 36, 34),\n    COL_TRI(88, 34, 89),\n    COL_TRI(89, 34, 32),\n    COL_TRI(89, 32, 90),\n    COL_TRI(90, 32, 33),\n    COL_TRI(90, 33, 91),\n    COL_TRI(91, 33, 87),\n    COL_TRI(91, 87, 79),\n    COL_TRI(92, 133, 134),\n    COL_TRI(92, 134, 135),\n    COL_TRI(93, 133, 92),\n    COL_TRI(93, 92, 136),\n    COL_TRI(94, 135, 134),\n    COL_TRI(94, 134, 137),\n    COL_TRI(94, 137, 93),\n    COL_TRI(93, 136, 94),\n    COL_TRI(95, 136, 92),\n    COL_TRI(95, 92, 138),\n    COL_TRI(96, 139, 140),\n    COL_TRI(97, 96, 140),\n    COL_TRI(96, 141, 139),\n    COL_TRI(98, 141, 96),\n    COL_TRI(100, 141, 98),\n    COL_TRI(100, 139, 141),\n    COL_TRI(101, 140, 139),\n    COL_TRI(101, 139, 100),\n    COL_TRI(102, 97, 140),\n    COL_TRI(102, 140, 142),\n    COL_TRI(103, 140, 101),\n    COL_TRI(103, 142, 140),\n    COL_TRI(99, 97, 104),\n    COL_TRI(99, 96, 97),\n    COL_TRI(104, 97, 102),\n    COL_TRI(98, 96, 99),\n    COL_TRI(110, 107, 145),\n    COL_TRI(105, 102, 142),\n    COL_TRI(104, 102, 106),\n    COL_TRI(106, 102, 105),\n    COL_TRI(107, 105, 142),\n    COL_TRI(107, 142, 143),\n    COL_TRI(108, 143, 142),\n    COL_TRI(108, 142, 103),\n    COL_TRI(106, 105, 109),\n    COL_TRI(109, 105, 107),\n    COL_TRI(107, 143, 144),\n    COL_TRI(107, 144, 145),\n    COL_TRI(109, 107, 110),\n    COL_TRI(111, 143, 108),\n    COL_TRI(111, 144, 143),\n    COL_TRI(110, 145, 146),\n    COL_TRI(112, 113, 147),\n    COL_TRI(113, 148, 147),\n    COL_TRI(113, 149, 150),\n    COL_TRI(113, 150, 148),\n    COL_TRI(114, 113, 112),\n    COL_TRI(115, 149, 113),\n    COL_TRI(115, 113, 114),\n    COL_TRI(114, 112, 121),\n    COL_TRI(116, 149, 115),\n    COL_TRI(116, 150, 149),\n    COL_TRI(117, 148, 150),\n    COL_TRI(117, 150, 116),\n    COL_TRI(118, 148, 117),\n    COL_TRI(118, 147, 148),\n    COL_TRI(112, 147, 151),\n    COL_TRI(119, 147, 118),\n    COL_TRI(119, 151, 147),\n    COL_TRI(112, 151, 152),\n    COL_TRI(120, 112, 152),\n    COL_TRI(121, 112, 120),\n    COL_TRI(122, 151, 119),\n    COL_TRI(122, 152, 151),\n    COL_TRI(120, 152, 153),\n    COL_TRI(123, 153, 152),\n    COL_TRI(123, 152, 122),\n    COL_TRI(120, 153, 154),\n    COL_TRI(121, 120, 124),\n    COL_TRI(124, 120, 155),\n    COL_TRI(120, 154, 155),\n    COL_TRI(125, 153, 123),\n    COL_TRI(125, 154, 153),\n    COL_TRI(124, 155, 156),\n    COL_TRI(130, 163, 131),\n    COL_TRI(126, 157, 127),\n    COL_TRI(126, 158, 157),\n    COL_TRI(127, 157, 159),\n    COL_TRI(127, 159, 128),\n    COL_TRI(128, 159, 160),\n    COL_TRI(128, 160, 161),\n    COL_TRI(129, 162, 130),\n    COL_TRI(130, 162, 163),\n    COL_TRI(131, 165, 166),\n    COL_TRI(129, 164, 162),\n    COL_TRI(131, 163, 165),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(2),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree, /*pos*/ 1664, -2457,  -946),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree, /*pos*/ 1664, -2457, -1637),\n    COL_WATER_BOX_INIT(1),\n    COL_WATER_BOX(0, -3839, -3839, 4608, 4608, -127),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/wdw/areas/2/geo.inc.c",
    "content": "// 0x0E000724\nconst GeoLayout wdw_geo_000724[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND_COLOR(0x0001),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 12800, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(1, 0, 2000, 6000, -4352, 0, -4352, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, wdw_seg7_dl_07011E48),\n                    GEO_DISPLAY_LIST(LAYER_ALPHA, wdw_seg7_dl_07012258),\n                    GEO_DISPLAY_LIST(LAYER_TRANSPARENT_DECAL, wdw_seg7_dl_07012908),\n                    GEO_ASM(   0, geo_movtex_pause_control),\n                    GEO_ASM(0x1102, geo_movtex_draw_water_regions),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(   0, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/wdw/areas/2/macro.inc.c",
    "content": "// 0x07018224 - 0x070183C0\nconst MacroObject wdw_seg7_area_2_macro_objs[] = {\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -3720, -1131,   520),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -2930,  -850,  2560),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/   100, -1771, -1500),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  1820, -1387,  1020),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  -370, -1795,  -180),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -1180, -1795,  -180),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  -780, -2155,  2860),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  -780, -1020,  3400),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_horizontal_flying, /*yaw*/   0, /*pos*/  -772, -2320,   772),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,          /*yaw*/   0, /*pos*/  -524, -2560,   524),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,          /*yaw*/   0, /*pos*/ -1034, -2560,   524),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,          /*yaw*/   0, /*pos*/ -1034, -2560,  1034),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,          /*yaw*/   0, /*pos*/  -524, -2560,  1034),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_hidden_1up,                  /*yaw*/   0, /*pos*/  -772, -2180,   772, /*bhvParam*/ 4),\n    MACRO_OBJECT               (/*preset*/ macro_breakable_box_no_coins,      /*yaw*/   0, /*pos*/  -870,  -300,   870),\n    MACRO_OBJECT               (/*preset*/ macro_breakable_box_no_coins,      /*yaw*/   0, /*pos*/  -670,  -300,   870),\n    MACRO_OBJECT               (/*preset*/ macro_breakable_box_no_coins,      /*yaw*/   0, /*pos*/  -670,  -300,   670),\n    MACRO_OBJECT               (/*preset*/ macro_breakable_box_no_coins,      /*yaw*/   0, /*pos*/  -870,  -300,   670),\n    MACRO_OBJECT               (/*preset*/ macro_box_metal_cap,               /*yaw*/   0, /*pos*/  -770,    80,   770),\n    MACRO_OBJECT               (/*preset*/ macro_box_vanish_cap,              /*yaw*/   0, /*pos*/ -1779, -2240,  3644),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,        /*yaw*/   0, /*pos*/  1089, -1279,   968),\n    MACRO_OBJECT               (/*preset*/ macro_skeeter,                     /*yaw*/   0, /*pos*/ -1240,  -520,   540),\n    MACRO_OBJECT               (/*preset*/ macro_skeeter,                     /*yaw*/   0, /*pos*/  -260,  -620,  1560),\n    MACRO_OBJECT               (/*preset*/ macro_floor_switch_hidden_objects, /*yaw*/   0, /*pos*/ -1520, -2516, -1940),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_breakable_box,        /*yaw*/   0, /*pos*/  2200, -2559,  3240),\n    MACRO_OBJECT               (/*preset*/ macro_box_vanish_cap,              /*yaw*/   0, /*pos*/  1300, -2260,  3740),\n    MACRO_OBJECT               (/*preset*/ macro_fire_spitter,                /*yaw*/   0, /*pos*/ -2060, -1580, -1260),\n    MACRO_OBJECT               (/*preset*/ macro_fire_spitter,                /*yaw*/   0, /*pos*/  2240, -1420,  2140),\n    MACRO_OBJECT               (/*preset*/ macro_fire_spitter,                /*yaw*/   0, /*pos*/  2280, -1400,  -100),\n    MACRO_OBJECT               (/*preset*/ macro_fire_spitter,                /*yaw*/   0, /*pos*/ -2280, -2520,  -740),\n    MACRO_OBJECT               (/*preset*/ macro_fire_spitter,                /*yaw*/   0, /*pos*/   720, -2520,  -740),\n    MACRO_OBJECT               (/*preset*/ macro_breakable_box_giant,         /*yaw*/   0, /*pos*/ -2930, -1000,  2560),\n    MACRO_OBJECT               (/*preset*/ macro_breakable_box_giant,         /*yaw*/   0, /*pos*/ -3690, -1151,   520),\n    MACRO_OBJECT               (/*preset*/ macro_breakable_box_giant,         /*yaw*/   0, /*pos*/ -1180, -1945,  -180),\n    MACRO_OBJECT               (/*preset*/ macro_breakable_box_giant,         /*yaw*/   0, /*pos*/  -370, -1945,  -180),\n    MACRO_OBJECT               (/*preset*/ macro_breakable_box_giant,         /*yaw*/   0, /*pos*/   100, -1791, -1500),\n    MACRO_OBJECT               (/*preset*/ macro_breakable_box_giant,         /*yaw*/   0, /*pos*/  1820, -1407,  1020),\n    MACRO_OBJECT               (/*preset*/ macro_breakable_box_giant,         /*yaw*/   0, /*pos*/  -780, -2175,  2810),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,        /*yaw*/  90, /*pos*/   100, -1791, -2100),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,        /*yaw*/   0, /*pos*/  -770,  -320,  2820),\n    MACRO_OBJECT               (/*preset*/ macro_box_1up_running_away,        /*yaw*/   0, /*pos*/  1655, -2160, -1293),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/wdw/areas/2/movtext.inc.c",
    "content": "// 0x07018758\nstatic Movtex wdw_movtex_area2_water_data[] = {\n    MOV_TEX_INIT_LOAD(    1),\n    MOV_TEX_ROT_SPEED(   10),\n    MOV_TEX_ROT_SCALE(   10),\n    MOV_TEX_4_BOX_TRIS(-3839, -3839),\n    MOV_TEX_4_BOX_TRIS(-3839,  4608),\n    MOV_TEX_4_BOX_TRIS( 4608,  4608),\n    MOV_TEX_4_BOX_TRIS( 4608, -3839),\n    MOV_TEX_ROT(     ROTATE_COUNTER_CLOCKWISE),\n    MOV_TEX_ALPHA(    0x96),\n    MOV_TEX_DEFINE(  TEXTURE_WATER),\n    MOV_TEX_END(),\n};\n\n// 0x07018778\nconst struct MovtexQuadCollection wdw_movtex_area2_water[] = {\n    {0, wdw_movtex_area2_water_data},\n    {-1, NULL},\n};\n"
  },
  {
    "path": "levels/wdw/arrow_lift/collision.inc.c",
    "content": "// 0x07018444 - 0x070184C8\nconst Collision wdw_seg7_collision_arrow_lift[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(63, 127, -60),\n    COL_VERTEX(-64, 127, 67),\n    COL_VERTEX(63, 127, 67),\n    COL_VERTEX(63, 0, 67),\n    COL_VERTEX(63, 0, -60),\n    COL_VERTEX(-64, 0, 67),\n    COL_VERTEX(-64, 0, -60),\n    COL_VERTEX(-64, 127, -60),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(2, 3, 4),\n    COL_TRI(2, 4, 0),\n    COL_TRI(1, 3, 2),\n    COL_TRI(3, 5, 6),\n    COL_TRI(3, 6, 4),\n    COL_TRI(1, 5, 3),\n    COL_TRI(0, 4, 6),\n    COL_TRI(0, 6, 7),\n    COL_TRI(0, 7, 1),\n    COL_TRI(7, 5, 1),\n    COL_TRI(7, 6, 5),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/wdw/arrow_lift/geo.inc.c",
    "content": "// 0x0E000598\nconst GeoLayout wdw_geo_000598[] = {\n    GEO_CULLING_RADIUS(350),\n    GEO_OPEN_NODE(),\n        GEO_SHADOW(SHADOW_SQUARE_TOGGLABLE, 0x96, 110),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, wdw_seg7_dl_07012E88),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/wdw/arrow_lift/model.inc.c",
    "content": "// 0x07012C08 - 0x07012C20\nstatic const Lights1 wdw_seg7_lights_07012C08 = gdSPDefLights1(\n    0x99, 0x99, 0x99,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07012C20 - 0x07012C60\nstatic const Vtx wdw_seg7_vertex_07012C20[] = {\n    {{{    63,    127,    -60}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -64,    127,     67}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    63,    127,     67}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -64,    127,    -60}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07012C60 - 0x07012D50\nstatic const Vtx wdw_seg7_vertex_07012C60[] = {\n    {{{    63,    127,    -60}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -64,      0,    -60}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -64,    127,    -60}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    63,    127,     67}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    63,      0,     67}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    63,      0,    -60}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    63,    127,    -60}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -64,    127,     67}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -64,      0,     67}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    63,      0,     67}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    63,    127,     67}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -64,    127,    -60}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -64,      0,    -60}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -64,      0,     67}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -64,    127,     67}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07012D50 - 0x07012DC0\nstatic const Vtx wdw_seg7_vertex_07012D50[] = {\n    {{{    63,      0,     67}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -64,      0,     67}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -64,      0,    -60}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    63,    127,    -60}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    63,      0,    -60}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -64,      0,    -60}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    63,      0,    -60}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07012DC0 - 0x07012E08\nstatic const Gfx wdw_seg7_dl_07012DC0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wdw_seg7_texture_07001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wdw_seg7_lights_07012C08.l, 1),\n    gsSPLight(&wdw_seg7_lights_07012C08.a, 2),\n    gsSPVertex(wdw_seg7_vertex_07012C20, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07012E08 - 0x07012E88\nstatic const Gfx wdw_seg7_dl_07012E08[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wdw_seg7_vertex_07012C60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07012D50, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  2,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07012E88 - 0x07012F18\nconst Gfx wdw_seg7_dl_07012E88[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wdw_seg7_dl_07012DC0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wdw_seg7_dl_07012E08),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wdw/double_arrows/model.inc.c",
    "content": "// 0x070127C8 - 0x070128A8\nstatic const Vtx wdw_seg7_vertex_070127C8[] = {\n    {{{  -895,  -1496,  -3387}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  -895,  -1496,  -3515}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -1151,  -1496,  -3323}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  1536,  -1496,  -3131}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  1536,  -1496,  -3259}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  1280,  -1496,  -3323}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  1536,  -1496,  -3387}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  1920,  -1496,  -3259}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  1536,  -1496,  -3515}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  1920,  -1496,  -3387}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  -895,  -1496,  -3259}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  -511,  -1496,  -3259}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  -895,  -1496,  -3131}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  -511,  -1496,  -3387}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n};\n\n// 0x070128A8 - 0x07012908\nstatic const Gfx wdw_seg7_dl_070128A8[] = {\n    gsSPVertex(wdw_seg7_vertex_070127C8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  4,  7,  6, 0x0),\n    gsSP2Triangles( 6,  8,  5, 0x0,  7,  9,  6, 0x0),\n    gsSP2Triangles(10,  0,  2, 0x0, 10, 11,  0, 0x0),\n    gsSP2Triangles(10,  2, 12, 0x0, 11, 13,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07012908 - 0x07012938\nconst Gfx wdw_seg7_dl_07012908[] = {\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsSPDisplayList(wdw_seg7_dl_070128A8),\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wdw/express_elevator/collision.inc.c",
    "content": "// 0x070185AC - 0x07018630\nconst Collision wdw_seg7_collision_express_elevator_platform[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(512, 0, -64),\n    COL_VERTEX(-357, 0, -64),\n    COL_VERTEX(-357, 51, -64),\n    COL_VERTEX(512, 51, -64),\n    COL_VERTEX(512, 0, 384),\n    COL_VERTEX(-357, 0, 384),\n    COL_VERTEX(512, 51, 384),\n    COL_VERTEX(-357, 51, 384),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(0, 4, 5),\n    COL_TRI(0, 5, 1),\n    COL_TRI(6, 4, 0),\n    COL_TRI(6, 0, 3),\n    COL_TRI(5, 4, 6),\n    COL_TRI(5, 6, 7),\n    COL_TRI(1, 5, 7),\n    COL_TRI(1, 7, 2),\n    COL_TRI(2, 7, 6),\n    COL_TRI(2, 6, 3),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/wdw/express_elevator/geo.inc.c",
    "content": "// 0x0E000610\nconst GeoLayout wdw_geo_000610[] = {\n    GEO_CULLING_RADIUS(800),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, wdw_seg7_dl_07013B70),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/wdw/express_elevator/model.inc.c",
    "content": "// 0x07013500 - 0x07013518\nstatic const Lights1 wdw_seg7_lights_07013500 = gdSPDefLights1(\n    0x99, 0x99, 0x99,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07013518 - 0x07013618\nstatic const Vtx wdw_seg7_vertex_07013518[] = {\n    {{{  -357,      0,    -64}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -357,     51,    384}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -357,     51,    -64}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   195,     51,    384}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   195,      0,    384}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   195,      0,    -64}, 0, {  2158,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   195,     51,    -64}, 0, {  2158,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,     51,    -64}, 0, {  1020,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   256,      0,    -64}, 0, {  1020,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   256,      0,    384}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   256,     51,    384}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,     51,    384}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,      0,    384}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,      0,    -64}, 0, {  1020,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,     51,    -64}, 0, {  1020,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -357,      0,    384}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07013618 - 0x07013708\nstatic const Vtx wdw_seg7_vertex_07013618[] = {\n    {{{   256,     51,    384}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,      0,    384}, 0, {   224,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   512,      0,    384}, 0, {   224,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   195,      0,    -64}, 0, {   990,    618}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -357,      0,    384}, 0, {  -798,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -357,      0,    -64}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   195,      0,    384}, 0, {  -798,    618}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -357,     51,    -64}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   195,     51,    384}, 0, {  -798,    618}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   195,     51,    -64}, 0, {   990,    618}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -357,     51,    384}, 0, {  -798,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,      0,    -64}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   256,      0,    384}, 0, {  -798,    690}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   256,      0,    -64}, 0, {   990,    690}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   512,      0,    384}, 0, {  -798,    990}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07013708 - 0x070137F8\nstatic const Vtx wdw_seg7_vertex_07013708[] = {\n    {{{   195,     38,    109}, 0, {   480,    990}, {0x00, 0x6d, 0x40, 0xff}}},\n    {{{   256,     51,     87}, 0, {   224,     30}, {0x00, 0x6d, 0x40, 0xff}}},\n    {{{   195,     51,     87}, 0, {   224,    990}, {0x00, 0x6d, 0x40, 0xff}}},\n    {{{   256,     51,    384}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   512,      0,    384}, 0, {   224,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   512,     51,    384}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   512,     51,    -64}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,      0,    -64}, 0, {   224,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,     51,    -64}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   512,      0,    -64}, 0, {   224,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,     51,    -64}, 0, {   990,    690}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,     51,    384}, 0, {  -798,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,     51,    -64}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,     51,    384}, 0, {  -798,    690}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,     38,    109}, 0, {   480,     30}, {0x00, 0x6d, 0x40, 0xff}}},\n};\n\n// 0x070137F8 - 0x070138E8\nstatic const Vtx wdw_seg7_vertex_070137F8[] = {\n    {{{   195,     38,     65}, 0, {   224,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,     38,     65}, 0, {   224,     30}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,     13,     65}, 0, {     0,     30}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   195,     13,    109}, 0, {   734,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,     38,    109}, 0, {   478,     30}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   195,     38,    109}, 0, {   478,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,     13,    109}, 0, {   734,     30}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   195,      0,     87}, 0, {   990,    990}, {0x00, 0x93, 0x40, 0xff}}},\n    {{{   256,      0,     87}, 0, {   990,     30}, {0x00, 0x93, 0x40, 0xff}}},\n    {{{   256,     13,    109}, 0, {   734,     30}, {0x00, 0x93, 0x40, 0xff}}},\n    {{{   195,     13,    109}, 0, {   734,    990}, {0x00, 0x93, 0x40, 0xff}}},\n    {{{   195,     13,     65}, 0, {   478,    990}, {0x00, 0x93, 0xc0, 0xff}}},\n    {{{   256,      0,     87}, 0, {   224,     30}, {0x00, 0x93, 0xc0, 0xff}}},\n    {{{   195,      0,     87}, 0, {   224,    990}, {0x00, 0x93, 0xc0, 0xff}}},\n    {{{   256,     13,     65}, 0, {   480,     30}, {0x00, 0x93, 0xc0, 0xff}}},\n};\n\n// 0x070138E8 - 0x070139D8\nstatic const Vtx wdw_seg7_vertex_070138E8[] = {\n    {{{   195,      0,    -64}, 0, {   224,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -357,      0,    -64}, 0, {   224,    -76}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -357,     51,    -64}, 0, {     0,    -76}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   195,     38,     65}, 0, {   224,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,     13,     65}, 0, {     0,     30}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   195,     13,     65}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   195,     51,     87}, 0, {   734,    990}, {0x00, 0x6d, 0xc0, 0xff}}},\n    {{{   256,     38,     65}, 0, {   478,     30}, {0x00, 0x6d, 0xc0, 0xff}}},\n    {{{   195,     38,     65}, 0, {   478,    990}, {0x00, 0x6d, 0xc0, 0xff}}},\n    {{{   256,     51,     87}, 0, {   734,     30}, {0x00, 0x6d, 0xc0, 0xff}}},\n    {{{  -357,      0,    384}, 0, {   224,    -76}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   195,     51,    384}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -357,     51,    384}, 0, {     0,    -76}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   195,      0,    384}, 0, {   224,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   195,     51,    -64}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070139D8 - 0x07013A50\nstatic const Gfx wdw_seg7_dl_070139D8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09006800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wdw_seg7_lights_07013500.l, 1),\n    gsSPLight(&wdw_seg7_lights_07013500.a, 2),\n    gsSPVertex(wdw_seg7_vertex_07013518, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07013A50 - 0x07013B70\nstatic const Gfx wdw_seg7_dl_07013A50[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wdw_seg7_texture_07000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wdw_seg7_vertex_07013618, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07013708, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(wdw_seg7_vertex_070137F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(wdw_seg7_vertex_070138E8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07013B70 - 0x07013BE8\nconst Gfx wdw_seg7_dl_07013B70[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wdw_seg7_dl_070139D8),\n    gsSPDisplayList(wdw_seg7_dl_07013A50),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wdw/geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"game/level_geo.h\"\n#include \"game/geo_misc.h\"\n#include \"game/camera.h\"\n#include \"game/moving_texture.h\"\n#include \"game/screen_transition.h\"\n#include \"game/paintings.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"levels/wdw/header.h\"\n\n#include \"levels/wdw/square_floating_platform/geo.inc.c\"\n#include \"levels/wdw/arrow_lift/geo.inc.c\"\n#include \"levels/wdw/water_level_diamond/geo.inc.c\"\n#include \"levels/wdw/hidden_platform/geo.inc.c\"\n#include \"levels/wdw/express_elevator/geo.inc.c\"\n#include \"levels/wdw/rectangular_floating_platform/geo.inc.c\"\n#include \"levels/wdw/rotating_platform/geo.inc.c\"\n#include \"levels/wdw/areas/1/geo.inc.c\"\n#include \"levels/wdw/areas/2/geo.inc.c\"\n"
  },
  {
    "path": "levels/wdw/header.h",
    "content": "#ifndef WDW_HEADER_H\n#define WDW_HEADER_H\n\n#include \"types.h\"\n#include \"game/moving_texture.h\"\n\n// geo\nextern const GeoLayout wdw_geo_000580[];\nextern const GeoLayout wdw_geo_000598[];\nextern const GeoLayout wdw_geo_0005C0[];\nextern const GeoLayout wdw_geo_0005E8[];\nextern const GeoLayout wdw_geo_000610[];\nextern const GeoLayout wdw_geo_000628[];\nextern const GeoLayout wdw_geo_000640[];\nextern const GeoLayout wdw_geo_000658[];\nextern const GeoLayout wdw_geo_000724[];\n\n// leveldata\nextern const Gfx wdw_seg7_dl_07009AB0[];\nextern const Gfx wdw_seg7_dl_0700A138[];\nextern const Gfx wdw_seg7_dl_07011E48[];\nextern const Gfx wdw_seg7_dl_07012258[];\nextern const Gfx wdw_seg7_dl_07012798[];\nextern const Gfx wdw_seg7_dl_07012908[];\nextern const Gfx wdw_seg7_dl_07012B90[];\nextern const Gfx wdw_seg7_dl_07012E88[];\nextern const Gfx wdw_seg7_dl_070131B8[];\nextern const Gfx wdw_seg7_dl_07013490[];\nextern const Gfx wdw_seg7_dl_07013B70[];\nextern const Gfx wdw_seg7_dl_07013E40[];\nextern const Gfx wdw_seg7_dl_070140E0[];\nextern const Collision wdw_seg7_area_1_collision[];\nextern const MacroObject wdw_seg7_area_1_macro_objs[];\nextern const Collision wdw_seg7_area_2_collision[];\nextern const MacroObject wdw_seg7_area_2_macro_objs[];\nextern const Collision wdw_seg7_collision_square_floating_platform[];\nextern const Collision wdw_seg7_collision_arrow_lift[];\nextern const Collision wdw_seg7_collision_070184C8[];\nextern const Collision wdw_seg7_collision_07018528[];\nextern const Collision wdw_seg7_collision_express_elevator_platform[];\nextern const Collision wdw_seg7_collision_rect_floating_platform[];\nextern const Collision wdw_seg7_collision_070186B4[];\nextern const struct MovtexQuadCollection wdw_movtex_area1_water[];\nextern const struct MovtexQuadCollection wdw_movtex_area2_water[];\n\n// script\nextern const LevelScript level_wdw_entry[];\n\n#endif\n"
  },
  {
    "path": "levels/wdw/hidden_platform/collision.inc.c",
    "content": "// 0x07018528 - 0x070185AC\nconst Collision wdw_seg7_collision_07018528[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(193, 128, -190),\n    COL_VERTEX(-190, 128, -190),\n    COL_VERTEX(-190, 128, 193),\n    COL_VERTEX(193, 128, 193),\n    COL_VERTEX(193, 0, -190),\n    COL_VERTEX(-190, 0, -190),\n    COL_VERTEX(193, 0, 193),\n    COL_VERTEX(-190, 0, 193),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(0, 4, 5),\n    COL_TRI(0, 5, 1),\n    COL_TRI(3, 4, 0),\n    COL_TRI(6, 5, 4),\n    COL_TRI(3, 6, 4),\n    COL_TRI(6, 7, 5),\n    COL_TRI(1, 5, 7),\n    COL_TRI(1, 7, 2),\n    COL_TRI(2, 6, 3),\n    COL_TRI(2, 7, 6),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/wdw/hidden_platform/geo.inc.c",
    "content": "// 0x0E0005E8\nconst GeoLayout wdw_geo_0005E8[] = {\n    GEO_CULLING_RADIUS(420),\n    GEO_OPEN_NODE(),\n        GEO_SHADOW(SHADOW_SQUARE_TOGGLABLE, 0x96, 240),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, wdw_seg7_dl_07013490),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/wdw/hidden_platform/model.inc.c",
    "content": "// 0x07013238 - 0x07013250\nstatic const Lights1 wdw_seg7_lights_07013238 = gdSPDefLights1(\n    0x99, 0x99, 0x99,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07013250 - 0x07013340\nstatic const Vtx wdw_seg7_vertex_07013250[] = {\n    {{{   193,      0,    193}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -190,      0,    193}, 0, {   990,  -2076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -190,      0,   -190}, 0, { -2074,  -2076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   193,    128,   -190}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   193,      0,   -190}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -190,      0,   -190}, 0, {   990,  -2076}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -190,    128,   -190}, 0, {     0,  -2076}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   193,    128,    193}, 0, {   990,  -2076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   193,      0,    193}, 0, {     0,  -2076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   193,      0,   -190}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   193,    128,   -190}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -190,    128,    193}, 0, {     0,  -2076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -190,      0,    193}, 0, {   990,  -2076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   193,      0,    193}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   193,    128,    193}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07013340 - 0x070133F0\nstatic const Vtx wdw_seg7_vertex_07013340[] = {\n    {{{   193,    128,   -190}, 0, { -2074,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -190,    128,    193}, 0, {   990,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   193,    128,    193}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   193,      0,    193}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -190,      0,   -190}, 0, { -2074,  -2076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   193,      0,   -190}, 0, { -2074,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -190,    128,   -190}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -190,      0,    193}, 0, {     0,  -2076}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -190,    128,    193}, 0, {   990,  -2076}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -190,      0,   -190}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -190,    128,   -190}, 0, { -2074,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070133F0 - 0x07013490\nstatic const Gfx wdw_seg7_dl_070133F0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09006800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wdw_seg7_lights_07013238.l, 1),\n    gsSPLight(&wdw_seg7_lights_07013238.a, 2),\n    gsSPVertex(wdw_seg7_vertex_07013250, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07013340, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP1Triangle( 0, 10,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07013490 - 0x07013500\nconst Gfx wdw_seg7_dl_07013490[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wdw_seg7_dl_070133F0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wdw/level.yaml",
    "content": "# Wet-Dry World\nshort-name: wdw\nfull-name: Wet-Dry World\ntexture-file: [\"/texture.inc.c\"]\narea-count: 2\nobjects: [arrow_lift, double_arrows, express_elevator, hidden_platform, rectangular_floating_platform, rotating_platform, square_floating_platform, water_level_diamond]\n# areas 1 and 2 share the double_arrows object and so they need its model data.\nshared-path: [[\"/areas/1/\", \"/double_arrows/\"], [\"/areas/2/\", \"/double_arrows/\"]]\n# loaded files\nskybox-bin: wdw\ntexture-bin: grass\neffects: false\nactor-bins: [group1, group13]\ncommon-bin: [common0]\n"
  },
  {
    "path": "levels/wdw/leveldata.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"surface_terrains.h\"\n#include \"moving_texture_macros.h\"\n#include \"level_misc_macros.h\"\n#include \"macro_presets.h\"\n#include \"special_presets.h\"\n#include \"textures.h\"\n#include \"dialog_ids.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/wdw/texture.inc.c\"\n#include \"levels/wdw/areas/1/1/model.inc.c\"\n#include \"levels/wdw/areas/1/2/model.inc.c\"\n#include \"levels/wdw/areas/2/1/model.inc.c\"\n#include \"levels/wdw/areas/2/2/model.inc.c\"\n#include \"levels/wdw/areas/1/3/model.inc.c\"\n#include \"levels/wdw/double_arrows/model.inc.c\" // This is weird, but the only instance of a shared area object in a level. So we're treating it as a seperate model. It does not have collision anyway so it may have been combined in both areas by some sort of optimizer at compile time.\n#include \"levels/wdw/square_floating_platform/model.inc.c\"\n#include \"levels/wdw/arrow_lift/model.inc.c\"\n#include \"levels/wdw/water_level_diamond/model.inc.c\"\n#include \"levels/wdw/hidden_platform/model.inc.c\"\n#include \"levels/wdw/express_elevator/model.inc.c\"\n#include \"levels/wdw/rectangular_floating_platform/model.inc.c\"\n#include \"levels/wdw/rotating_platform/model.inc.c\"\n#include \"levels/wdw/areas/1/collision.inc.c\"\n#include \"levels/wdw/areas/1/macro.inc.c\"\n#include \"levels/wdw/areas/2/collision.inc.c\"\n#include \"levels/wdw/areas/2/macro.inc.c\"\n#include \"levels/wdw/square_floating_platform/collision.inc.c\"\n#include \"levels/wdw/arrow_lift/collision.inc.c\"\n#include \"levels/wdw/water_level_diamond/collision.inc.c\" // Unused\n#include \"levels/wdw/hidden_platform/collision.inc.c\"\n#include \"levels/wdw/express_elevator/collision.inc.c\"\n#include \"levels/wdw/rectangular_floating_platform/collision.inc.c\"\n#include \"levels/wdw/rotating_platform/collision.inc.c\"\n#include \"levels/wdw/areas/1/movtext.inc.c\"\n#include \"levels/wdw/areas/2/movtext.inc.c\"\n"
  },
  {
    "path": "levels/wdw/rectangular_floating_platform/collision.inc.c",
    "content": "// 0x07018630 - 0x070186B4\nconst Collision wdw_seg7_collision_rect_floating_platform[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(256, -63, 640),\n    COL_VERTEX(-255, -63, 640),\n    COL_VERTEX(-255, -63, -639),\n    COL_VERTEX(256, -63, -639),\n    COL_VERTEX(256, 64, 640),\n    COL_VERTEX(-255, 64, 640),\n    COL_VERTEX(-255, 64, -639),\n    COL_VERTEX(256, 64, -639),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(0, 4, 5),\n    COL_TRI(0, 5, 1),\n    COL_TRI(3, 4, 0),\n    COL_TRI(1, 5, 6),\n    COL_TRI(1, 6, 2),\n    COL_TRI(2, 6, 7),\n    COL_TRI(2, 7, 3),\n    COL_TRI(3, 7, 4),\n    COL_TRI(7, 5, 4),\n    COL_TRI(7, 6, 5),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/wdw/rectangular_floating_platform/geo.inc.c",
    "content": "// 0x0E000628\nconst GeoLayout wdw_geo_000628[] = {\n    GEO_CULLING_RADIUS(900),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, wdw_seg7_dl_07013E40),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/wdw/rectangular_floating_platform/model.inc.c",
    "content": "// 0x07013BE8 - 0x07013C00\nstatic const Lights1 wdw_seg7_lights_07013BE8 = gdSPDefLights1(\n    0x99, 0x99, 0x99,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07013C00 - 0x07013D00\nstatic const Vtx wdw_seg7_vertex_07013C00[] = {\n    {{{   256,    -63,    640}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,     64,    640}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,     64,    640}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,    -63,    640}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,    -63,    640}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,     64,    640}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,     64,   -639}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,    -63,   -639}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,    -63,   -639}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,     64,   -639}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,    -63,   -639}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,    -63,   -639}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,     64,    640}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,    -63,    640}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,     64,   -639}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -255,     64,   -639}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07013D00 - 0x07013D80\nstatic const Vtx wdw_seg7_vertex_07013D00[] = {\n    {{{   256,    -63,    640}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -255,    -63,    640}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -255,    -63,   -639}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   256,    -63,   -639}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   256,     64,   -639}, 0, {   990,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,     64,    640}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,     64,    640}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,     64,   -639}, 0, {     0,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07013D80 - 0x07013DF8\nstatic const Gfx wdw_seg7_dl_07013D80[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wdw_seg7_texture_07000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wdw_seg7_lights_07013BE8.l, 1),\n    gsSPLight(&wdw_seg7_lights_07013BE8.a, 2),\n    gsSPVertex(wdw_seg7_vertex_07013C00, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  8, 15,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07013DF8 - 0x07013E40\nstatic const Gfx wdw_seg7_dl_07013DF8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09006800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wdw_seg7_vertex_07013D00, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07013E40 - 0x07013EB8\nconst Gfx wdw_seg7_dl_07013E40[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wdw_seg7_dl_07013D80),\n    gsSPDisplayList(wdw_seg7_dl_07013DF8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wdw/rotating_platform/collision.inc.c",
    "content": "// 0x070186B4 - 0x07018726\nconst Collision wdw_seg7_collision_070186B4[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x7),\n    COL_VERTEX(0, 0, 0),\n    COL_VERTEX(0, 128, -255),\n    COL_VERTEX(222, 128, -127),\n    COL_VERTEX(-221, 128, -127),\n    COL_VERTEX(-221, 128, 128),\n    COL_VERTEX(0, 128, 256),\n    COL_VERTEX(222, 128, 128),\n    COL_TRI_INIT(SURFACE_DEFAULT, 10),\n    COL_TRI(0, 1, 2),\n    COL_TRI(1, 3, 4),\n    COL_TRI(1, 4, 5),\n    COL_TRI(1, 5, 6),\n    COL_TRI(1, 6, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI(0, 4, 3),\n    COL_TRI(0, 5, 4),\n    COL_TRI(0, 6, 5),\n    COL_TRI(0, 2, 6),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/wdw/rotating_platform/geo.inc.c",
    "content": "// 0x0E000640\nconst GeoLayout wdw_geo_000640[] = {\n    GEO_CULLING_RADIUS(450),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, wdw_seg7_dl_070140E0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/wdw/rotating_platform/model.inc.c",
    "content": "// 0x07013EB8 - 0x07013ED0\nstatic const Lights1 wdw_seg7_lights_07013EB8 = gdSPDefLights1(\n    0x99, 0x99, 0x99,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07013ED0 - 0x07013FC0\nstatic const Vtx wdw_seg7_vertex_07013ED0[] = {\n    {{{     0,      0,      0}, 0, {  1738,      0}, {0x1f, 0x93, 0xc9, 0xff}}},\n    {{{     0,    128,   -255}, 0, {  1738,  -2076}, {0x1f, 0x93, 0xc9, 0xff}}},\n    {{{   222,    128,   -127}, 0, {     0,  -1054}, {0x1f, 0x93, 0xc9, 0xff}}},\n    {{{     0,    128,   -255}, 0, {  1738,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -221,    128,   -127}, 0, {  3508,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -221,    128,    128}, 0, {  3508,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    128,    256}, 0, {  1738,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   222,    128,    128}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   222,    128,   -127}, 0, {     0,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,      0,      0}, 0, {  1738,      0}, {0xe1, 0x93, 0xc9, 0xff}}},\n    {{{  -221,    128,   -127}, 0, {  3508,  -1054}, {0xe1, 0x93, 0xc9, 0xff}}},\n    {{{     0,    128,   -255}, 0, {  1738,  -2076}, {0xe1, 0x93, 0xc9, 0xff}}},\n    {{{     0,      0,      0}, 0, {  1738,      0}, {0xc1, 0x93, 0x00, 0xff}}},\n    {{{  -221,    128,    128}, 0, {  3508,    990}, {0xc1, 0x93, 0x00, 0xff}}},\n    {{{  -221,    128,   -127}, 0, {  3508,  -1054}, {0xc1, 0x93, 0x00, 0xff}}},\n};\n\n// 0x07013FC0 - 0x07014050\nstatic const Vtx wdw_seg7_vertex_07013FC0[] = {\n    {{{     0,      0,      0}, 0, {  1738,      0}, {0xe1, 0x93, 0x36, 0xff}}},\n    {{{     0,    128,    256}, 0, {  1738,   2010}, {0xe1, 0x93, 0x36, 0xff}}},\n    {{{  -221,    128,    128}, 0, {  3508,    990}, {0xe1, 0x93, 0x36, 0xff}}},\n    {{{     0,      0,      0}, 0, {  1738,      0}, {0x1f, 0x93, 0x36, 0xff}}},\n    {{{   222,    128,    128}, 0, {     0,    990}, {0x1f, 0x93, 0x36, 0xff}}},\n    {{{     0,    128,    256}, 0, {  1738,   2010}, {0x1f, 0x93, 0x36, 0xff}}},\n    {{{     0,      0,      0}, 0, {  1738,      0}, {0x3f, 0x92, 0x00, 0xff}}},\n    {{{   222,    128,   -127}, 0, {     0,  -1054}, {0x3f, 0x92, 0x00, 0xff}}},\n    {{{   222,    128,    128}, 0, {     0,    990}, {0x3f, 0x92, 0x00, 0xff}}},\n};\n\n// 0x07014050 - 0x070140E0\nstatic const Gfx wdw_seg7_dl_07014050[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wdw_seg7_lights_07013EB8.l, 1),\n    gsSPLight(&wdw_seg7_lights_07013EB8.a, 2),\n    gsSPVertex(wdw_seg7_vertex_07013ED0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  3,  6,  7, 0x0),\n    gsSP2Triangles( 3,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wdw_seg7_vertex_07013FC0, 9, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 6,  7,  8, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070140E0 - 0x07014150\nconst Gfx wdw_seg7_dl_070140E0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wdw_seg7_dl_07014050),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wdw/script.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"behavior_data.h\"\n#include \"model_ids.h\"\n#include \"seq_ids.h\"\n#include \"segment_symbols.h\"\n#include \"level_commands.h\"\n\n#include \"game/level_update.h\"\n\n#include \"levels/scripts.h\"\n\n#include \"actors/common1.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/wdw/header.h\"\n\nstatic const LevelScript script_func_local_1[] = {\n    OBJECT(/*model*/ MODEL_WDW_SQUARE_FLOATING_PLATFORM,      /*pos*/  3390,    0,   384, /*angle*/ 0, 180, 0, /*bhvParam*/ 0, /*bhv*/ bhvWDWSquareFloatingPlatform),\n    OBJECT(/*model*/ MODEL_WDW_SQUARE_FLOATING_PLATFORM,      /*pos*/  -767,  384,  3584, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvWDWSquareFloatingPlatform),\n    OBJECT(/*model*/ MODEL_WDW_SQUARE_FLOATING_PLATFORM,      /*pos*/  -767,  384,  1536, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvWDWSquareFloatingPlatform),\n    OBJECT(/*model*/ MODEL_WDW_SQUARE_FLOATING_PLATFORM,      /*pos*/  -767, 2304, -1279, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvWDWSquareFloatingPlatform),\n    OBJECT(/*model*/ MODEL_WDW_ARROW_LIFT,                    /*pos*/  -578, 2177,  3009, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvArrowLift),\n    OBJECT(/*model*/ MODEL_WDW_ARROW_LIFT,                    /*pos*/ -1474, 2177,  3393, /*angle*/ 0, 270, 0, /*bhvParam*/ 0, /*bhv*/ bhvArrowLift),\n    OBJECT(/*model*/ MODEL_WDW_ARROW_LIFT,                    /*pos*/ -1602, 2177,  3009, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvArrowLift),\n    OBJECT(/*model*/ MODEL_WDW_ARROW_LIFT,                    /*pos*/ -1090, 2177,  3521, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvArrowLift),\n    OBJECT(/*model*/ MODEL_WDW_ARROW_LIFT,                    /*pos*/  -962, 2177,  3137, /*angle*/ 0,  90, 0, /*bhvParam*/ 0, /*bhv*/ bhvArrowLift),\n    OBJECT(/*model*/ MODEL_NONE,                              /*pos*/     0,    0,     0, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvInitializeChangingWaterLevel),\n    OBJECT(/*model*/ MODEL_WDW_WATER_LEVEL_DIAMOND,           /*pos*/  1920, 2560, -3583, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvWaterLevelDiamond),\n    OBJECT(/*model*/ MODEL_WDW_WATER_LEVEL_DIAMOND,           /*pos*/  3328,  256,  2918, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvWaterLevelDiamond),\n    OBJECT(/*model*/ MODEL_WDW_WATER_LEVEL_DIAMOND,           /*pos*/  2048, 1792,  2176, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvWaterLevelDiamond),\n    OBJECT(/*model*/ MODEL_WDW_WATER_LEVEL_DIAMOND,           /*pos*/   640, 1024,  3712, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvWaterLevelDiamond),\n    OBJECT(/*model*/ MODEL_WDW_WATER_LEVEL_DIAMOND,           /*pos*/  1810,   40, -3118, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvWaterLevelDiamond),\n    OBJECT(/*model*/ MODEL_PURPLE_SWITCH,                     /*pos*/  3360, 1280,  3420, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvFloorSwitchHiddenObjects),\n    OBJECT(/*model*/ MODEL_WDW_HIDDEN_PLATFORM,               /*pos*/  2239, 1126,  3391, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(HIDDEN_OBJECT_BP_WDW_PLATFORM), /*bhv*/ bhvHiddenObject),\n    OBJECT(/*model*/ MODEL_WDW_HIDDEN_PLATFORM,               /*pos*/  1215, 1357,  2751, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(HIDDEN_OBJECT_BP_WDW_PLATFORM), /*bhv*/ bhvHiddenObject),\n    OBJECT(/*model*/ MODEL_WDW_HIDDEN_PLATFORM,               /*pos*/  1215, 1229,  3391, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(HIDDEN_OBJECT_BP_WDW_PLATFORM), /*bhv*/ bhvHiddenObject),\n    OBJECT(/*model*/ MODEL_WDW_HIDDEN_PLATFORM,               /*pos*/  1599, 1101,  3391, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(HIDDEN_OBJECT_BP_WDW_PLATFORM), /*bhv*/ bhvHiddenObject),\n    OBJECT(/*model*/ MODEL_WDW_HIDDEN_PLATFORM,               /*pos*/  2879, 1152,  3391, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(HIDDEN_OBJECT_BP_WDW_PLATFORM), /*bhv*/ bhvHiddenObject),\n    OBJECT(/*model*/ MODEL_WDW_EXPRESS_ELEVATOR,              /*pos*/  1024, 3277, -2112, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(0x32), /*bhv*/ bhvWDWExpressElevatorPlatform),\n    OBJECT(/*model*/ MODEL_WDW_EXPRESS_ELEVATOR,              /*pos*/  1024, 3277, -1663, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(0x32), /*bhv*/ bhvWDWExpressElevator),\n    OBJECT(/*model*/ MODEL_WDW_RECTANGULAR_FLOATING_PLATFORM, /*pos*/  -767, 1152,   128, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvWDWRectangularFloatingPlatform),\n    OBJECT(/*model*/ MODEL_WDW_RECTANGULAR_FLOATING_PLATFORM, /*pos*/  -767, 2304, -2687, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvWDWRectangularFloatingPlatform),\n    OBJECT(/*model*/ MODEL_WDW_ROTATING_PLATFORM,             /*pos*/   734, 3840,    84, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(0x46) | BPARAM2(ROTATING_PLATFORM_BP_WDW), /*bhv*/ bhvRotatingPlatform),\n    OBJECT(/*model*/ MODEL_SKEETER,                           /*pos*/  2956,  288,  -468, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvSkeeter),\n    OBJECT(/*model*/ MODEL_SKEETER,                           /*pos*/   184,  384,   621, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvSkeeter),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_2[] = {\n    OBJECT(/*model*/ MODEL_NONE,                    /*pos*/     0,     0,     0, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvInitializeChangingWaterLevel),\n    OBJECT(/*model*/ MODEL_WDW_WATER_LEVEL_DIAMOND, /*pos*/ -3583, -2508, -2047, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvWaterLevelDiamond),\n    OBJECT(/*model*/ MODEL_WDW_WATER_LEVEL_DIAMOND, /*pos*/  -767,  -127,  1792, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvWaterLevelDiamond),\n    OBJECT(/*model*/ MODEL_NONE,                    /*pos*/  -768,  -665,  3584, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(92), /*bhv*/ bhvPoleGrabbing),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_3[] = {\n    OBJECT_WITH_ACTS(/*model*/ MODEL_NONE, /*pos*/ 3360,  1580,  2660, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_3), /*bhv*/ bhvHiddenStar,          /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_STAR, /*pos*/  890,  3400, -2040, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_4), /*bhv*/ bhvStar,                 /*acts*/ ALL_ACTS),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_4[] = {\n    OBJECT_WITH_ACTS(/*model*/ MODEL_NONE, /*pos*/ -770, -1600,  3600, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_5), /*bhv*/ bhvHiddenRedCoinStar, /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_STAR, /*pos*/ 2180,  -840,  3720, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_6), /*bhv*/ bhvStar,                 /*acts*/ ALL_ACTS),\n    RETURN(),\n};\n\nconst LevelScript level_wdw_entry[] = {\n    INIT_LEVEL(),\n    LOAD_MIO0        (/*seg*/ 0x07, _wdw_segment_7SegmentRomStart, _wdw_segment_7SegmentRomEnd),\n    LOAD_MIO0_TEXTURE(/*seg*/ 0x09, _grass_mio0SegmentRomStart, _grass_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x0A, _wdw_skybox_mio0SegmentRomStart, _wdw_skybox_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x05, _group1_mio0SegmentRomStart, _group1_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0C, _group1_geoSegmentRomStart,  _group1_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x06, _group13_mio0SegmentRomStart, _group13_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0D, _group13_geoSegmentRomStart,  _group13_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x08, _common0_mio0SegmentRomStart, _common0_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0F, _common0_geoSegmentRomStart,  _common0_geoSegmentRomEnd),\n    ALLOC_LEVEL_POOL(),\n    MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),\n    JUMP_LINK(script_func_global_1),\n    JUMP_LINK(script_func_global_2),\n    JUMP_LINK(script_func_global_14),\n    LOAD_MODEL_FROM_GEO(MODEL_WDW_BUBBLY_TREE,                   bubbly_tree_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_WDW_SQUARE_FLOATING_PLATFORM,      wdw_geo_000580),\n    LOAD_MODEL_FROM_GEO(MODEL_WDW_ARROW_LIFT,                    wdw_geo_000598),\n    LOAD_MODEL_FROM_GEO(MODEL_WDW_WATER_LEVEL_DIAMOND,           wdw_geo_0005C0),\n    LOAD_MODEL_FROM_GEO(MODEL_WDW_HIDDEN_PLATFORM,               wdw_geo_0005E8),\n    LOAD_MODEL_FROM_GEO(MODEL_WDW_EXPRESS_ELEVATOR,              wdw_geo_000610),\n    LOAD_MODEL_FROM_GEO(MODEL_WDW_RECTANGULAR_FLOATING_PLATFORM, wdw_geo_000628),\n    LOAD_MODEL_FROM_GEO(MODEL_WDW_ROTATING_PLATFORM,             wdw_geo_000640),\n\n    AREA(/*index*/ 1, wdw_geo_000658),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/  3395, 3580,  384, /*angle*/ 0, 180, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvSpinAirborneWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/   818,    0, 3634, /*angle*/ 0,  45, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0B), /*bhv*/ bhvFadingWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ -2865, 3328, 3065, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0C), /*bhv*/ bhvFadingWarp),\n        WARP_NODE(/*id*/ WARP_NODE_0A, /*destLevel*/ LEVEL_WDW, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_0B, /*destLevel*/ LEVEL_WDW, /*destArea*/ 1, /*destNode*/ WARP_NODE_0C, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_0C, /*destLevel*/ LEVEL_WDW, /*destArea*/ 1, /*destNode*/ WARP_NODE_0B, /*flags*/ WARP_NO_CHECKPOINT),\n        JUMP_LINK(script_func_local_3),\n        JUMP_LINK(script_func_local_1),\n        WARP_NODE(/*id*/ WARP_NODE_SUCCESS, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_32, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH,   /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_64, /*flags*/ WARP_NO_CHECKPOINT),\n        INSTANT_WARP(/*index*/ 1, /*destArea*/ 2, /*displace*/ 0, 0, 0),\n        TERRAIN(/*terrainData*/ wdw_seg7_area_1_collision),\n        MACRO_OBJECTS(/*objList*/ wdw_seg7_area_1_macro_objs),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0003, /*seq*/ SEQ_LEVEL_UNDERGROUND),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_STONE),\n    END_AREA(),\n\n    AREA(/*index*/ 2, wdw_geo_000724),\n        JUMP_LINK(script_func_local_4),\n        JUMP_LINK(script_func_local_2),\n        WARP_NODE(/*id*/ WARP_NODE_SUCCESS, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_32, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH,   /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 2, /*destNode*/ WARP_NODE_64, /*flags*/ WARP_NO_CHECKPOINT),\n        INSTANT_WARP(/*index*/ 0, /*destArea*/ 1, /*displace*/ 0, 0, 0),\n        TERRAIN(/*terrainData*/ wdw_seg7_area_2_collision),\n        MACRO_OBJECTS(/*objList*/ wdw_seg7_area_2_macro_objs),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0003, /*seq*/ SEQ_LEVEL_UNDERGROUND),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_WATER),\n    END_AREA(),\n\n    FREE_LEVEL_POOL(),\n    MARIO_POS(/*area*/ 1, /*yaw*/ 180, /*pos*/ 3395, 2580, 384),\n    CALL(/*arg*/ 0, /*func*/ lvl_init_or_update),\n    CALL_LOOP(/*arg*/ 1, /*func*/ lvl_init_or_update),\n    CLEAR_LEVEL(),\n    SLEEP_BEFORE_EXIT(/*frames*/ 1),\n    EXIT(),\n};\n"
  },
  {
    "path": "levels/wdw/square_floating_platform/collision.inc.c",
    "content": "// 0x070183C0 - 0x07018444\nconst Collision wdw_seg7_collision_square_floating_platform[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(256, -63, 256),\n    COL_VERTEX(-255, -63, 256),\n    COL_VERTEX(-255, -63, -255),\n    COL_VERTEX(256, -63, -255),\n    COL_VERTEX(256, 64, 256),\n    COL_VERTEX(-255, 64, 256),\n    COL_VERTEX(-255, 64, -255),\n    COL_VERTEX(256, 64, -255),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(0, 4, 5),\n    COL_TRI(0, 5, 1),\n    COL_TRI(3, 4, 0),\n    COL_TRI(1, 5, 6),\n    COL_TRI(1, 6, 2),\n    COL_TRI(2, 6, 7),\n    COL_TRI(2, 7, 3),\n    COL_TRI(3, 7, 4),\n    COL_TRI(7, 5, 4),\n    COL_TRI(7, 6, 5),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/wdw/square_floating_platform/geo.inc.c",
    "content": "// 0x0E000580\nconst GeoLayout wdw_geo_000580[] = {\n    GEO_CULLING_RADIUS(550),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, wdw_seg7_dl_07012B90),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/wdw/square_floating_platform/model.inc.c",
    "content": "// 0x07012938 - 0x07012950\nstatic const Lights1 wdw_seg7_lights_07012938 = gdSPDefLights1(\n    0x99, 0x99, 0x99,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07012950 - 0x07012A50\nstatic const Vtx wdw_seg7_vertex_07012950[] = {\n    {{{   256,    -63,    256}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,     64,    256}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,     64,    256}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,    -63,    256}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,    -63,    256}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,     64,    256}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,     64,   -255}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,    -63,   -255}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,    -63,   -255}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,     64,   -255}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,    -63,   -255}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,    -63,   -255}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,     64,    256}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,    -63,    256}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,     64,   -255}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -255,     64,   -255}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07012A50 - 0x07012AD0\nstatic const Vtx wdw_seg7_vertex_07012A50[] = {\n    {{{   256,    -63,    256}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -255,    -63,    256}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -255,    -63,   -255}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   256,    -63,   -255}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   256,     64,   -255}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,     64,    256}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,     64,    256}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,     64,   -255}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07012AD0 - 0x07012B48\nstatic const Gfx wdw_seg7_dl_07012AD0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wdw_seg7_texture_07000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wdw_seg7_lights_07012938.l, 1),\n    gsSPLight(&wdw_seg7_lights_07012938.a, 2),\n    gsSPVertex(wdw_seg7_vertex_07012950, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  8, 15,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07012B48 - 0x07012B90\nstatic const Gfx wdw_seg7_dl_07012B48[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09006800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wdw_seg7_vertex_07012A50, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07012B90 - 0x07012C08\nconst Gfx wdw_seg7_dl_07012B90[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wdw_seg7_dl_07012AD0),\n    gsSPDisplayList(wdw_seg7_dl_07012B48),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wdw/texture.inc.c",
    "content": "// 0x07000000 - 0x07000800\nALIGNED8 static const Texture wdw_seg7_texture_07000000[] = {\n#include \"levels/wdw/0.rgba16.inc.c\"\n};\n\n// 0x07000800 - 0x07001000\nALIGNED8 static const Texture wdw_seg7_texture_07000800[] = {\n#include \"levels/wdw/1.rgba16.inc.c\"\n};\n\n// 0x07001000 - 0x07001800\nALIGNED8 static const Texture wdw_seg7_texture_07001000[] = {\n#include \"levels/wdw/2.rgba16.inc.c\"\n};\n\n// 0x07001800 - 0x07002000\nALIGNED8 static const Texture wdw_seg7_texture_07001800[] = {\n#include \"levels/wdw/3.rgba16.inc.c\"\n};\n\n// 0x07002000 - 0x07002800\nALIGNED8 static const Texture wdw_seg7_texture_07002000[] = {\n#include \"levels/wdw/4.rgba16.inc.c\"\n};\n"
  },
  {
    "path": "levels/wdw/water_level_diamond/collision.inc.c",
    "content": "// Unused collision mapping for the water level diamond.\n\n// 0x070184C8 - 0x07018528\nconst Collision wdw_seg7_collision_070184C8[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x6),\n    COL_VERTEX(51, 50, -50),\n    COL_VERTEX(-50, 50, -50),\n    COL_VERTEX(0, 101, 0),\n    COL_VERTEX(-50, 50, 51),\n    COL_VERTEX(0, 0, 0),\n    COL_VERTEX(51, 50, 51),\n    COL_TRI_INIT(SURFACE_DEFAULT, 8),\n    COL_TRI(0, 1, 2),\n    COL_TRI(3, 1, 4),\n    COL_TRI(1, 0, 4),\n    COL_TRI(1, 3, 2),\n    COL_TRI(5, 3, 4),\n    COL_TRI(3, 5, 2),\n    COL_TRI(5, 0, 2),\n    COL_TRI(0, 5, 4),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/wdw/water_level_diamond/geo.inc.c",
    "content": "// 0x0E0005C0\nconst GeoLayout wdw_geo_0005C0[] = {\n    GEO_CULLING_RADIUS(200),\n    GEO_OPEN_NODE(),\n        GEO_SHADOW(SHADOW_SQUARE_SCALABLE, 0x96, 90),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT, wdw_seg7_dl_070131B8),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/wdw/water_level_diamond/model.inc.c",
    "content": "// 0x07012F18 - 0x07012F30\nstatic const Lights1 wdw_seg7_lights_07012F18 = gdSPDefLights1(\n    0x99, 0x99, 0x00,\n    0xff, 0xff, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x07012F30 - 0x07012F48\nstatic const Lights1 wdw_seg7_lights_07012F30 = gdSPDefLights1(\n    0x00, 0x00, 0x99,\n    0x00, 0x00, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07012F48 - 0x07012F60\nstatic const Lights1 wdw_seg7_lights_07012F48 = gdSPDefLights1(\n    0x00, 0x99, 0x00,\n    0x00, 0xff, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x07012F60 - 0x07012F78\nstatic const Lights1 wdw_seg7_lights_07012F60 = gdSPDefLights1(\n    0x99, 0x00, 0x00,\n    0xff, 0x00, 0x00, 0x28, 0x28, 0x28\n);\n\n// 0x07012F78 - 0x07012FD8\nstatic const Vtx wdw_seg7_vertex_07012F78[] = {\n    {{{   -50,     51,    -50}, 0, {   990,      0}, {0xa6, 0x58, 0x00, 0xff}}},\n    {{{   -50,     51,     51}, 0, {     0,      0}, {0xa6, 0x58, 0x00, 0xff}}},\n    {{{     0,    102,      0}, 0, {   480,    932}, {0xa6, 0x58, 0x00, 0xff}}},\n    {{{    51,     51,    -50}, 0, {   990,      0}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{    51,     51,     51}, 0, {     0,      0}, {0x59, 0xa7, 0x00, 0xff}}},\n    {{{     0,      0,      0}, 0, {   480,    932}, {0x59, 0xa7, 0x00, 0xff}}},\n};\n\n// 0x07012FD8 - 0x07013038\nstatic const Vtx wdw_seg7_vertex_07012FD8[] = {\n    {{{    51,     51,     51}, 0, {   990,      0}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{    51,     51,    -50}, 0, {     0,      0}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{     0,    102,      0}, 0, {   478,    932}, {0x59, 0x59, 0x00, 0xff}}},\n    {{{   -50,     51,     51}, 0, {   990,      0}, {0xa6, 0xa8, 0x00, 0xff}}},\n    {{{   -50,     51,    -50}, 0, {     0,      0}, {0xa6, 0xa8, 0x00, 0xff}}},\n    {{{     0,      0,      0}, 0, {   478,    932}, {0xa6, 0xa8, 0x00, 0xff}}},\n};\n\n// 0x07013038 - 0x07013098\nstatic const Vtx wdw_seg7_vertex_07013038[] = {\n    {{{   -50,     51,     51}, 0, {   990,      0}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{    51,     51,     51}, 0, {     0,      0}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{     0,    102,      0}, 0, {   480,    932}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{   -50,     51,    -50}, 0, {   990,      0}, {0x00, 0xa8, 0xa6, 0xff}}},\n    {{{    51,     51,    -50}, 0, {     0,      0}, {0x00, 0xa8, 0xa6, 0xff}}},\n    {{{     0,      0,      0}, 0, {   480,    932}, {0x00, 0xa8, 0xa6, 0xff}}},\n};\n\n// 0x07013098 - 0x070130F8\nstatic const Vtx wdw_seg7_vertex_07013098[] = {\n    {{{    51,     51,     51}, 0, {   990,      0}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{   -50,     51,     51}, 0, {     0,      0}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{     0,      0,      0}, 0, {   478,    932}, {0x00, 0xa7, 0x59, 0xff}}},\n    {{{    51,     51,    -50}, 0, {   990,      0}, {0x00, 0x58, 0xa6, 0xff}}},\n    {{{   -50,     51,    -50}, 0, {     0,      0}, {0x00, 0x58, 0xa6, 0xff}}},\n    {{{     0,    102,      0}, 0, {   478,    932}, {0x00, 0x58, 0xa6, 0xff}}},\n};\n\n// 0x070130F8 - 0x070131B8\nstatic const Gfx wdw_seg7_dl_070130F8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wdw_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wdw_seg7_lights_07012F18.l, 1),\n    gsSPLight(&wdw_seg7_lights_07012F18.a, 2),\n    gsSPVertex(wdw_seg7_vertex_07012F78, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPLight(&wdw_seg7_lights_07012F30.l, 1),\n    gsSPLight(&wdw_seg7_lights_07012F30.a, 2),\n    gsSPVertex(wdw_seg7_vertex_07012FD8, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPLight(&wdw_seg7_lights_07012F48.l, 1),\n    gsSPLight(&wdw_seg7_lights_07012F48.a, 2),\n    gsSPVertex(wdw_seg7_vertex_07013038, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPLight(&wdw_seg7_lights_07012F60.l, 1),\n    gsSPLight(&wdw_seg7_lights_07012F60.a, 2),\n    gsSPVertex(wdw_seg7_vertex_07013098, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070131B8 - 0x07013238\nconst Gfx wdw_seg7_dl_070131B8[] = {\n    gsDPPipeSync(),\n    gsDPSetEnvColor(255, 255, 255, 200),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wdw_seg7_dl_070130F8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/1/model.inc.c",
    "content": "// 0x07002900 - 0x07002918\nstatic const Lights1 wf_seg7_lights_07002900 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07002918 - 0x07002A18\nstatic const Vtx wf_seg7_vertex_07002918[] = {\n    {{{  4096,   1075,   -511}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3584,      0,   -511}, 0, {   990,   2112}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3584,   1075,   -511}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4096,   1075,   1536}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4096,   1075,   -511}, 0, {  4056,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3584,   1075,   -511}, 0, {  4056,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3584,   1075,   1536}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4096,    256,   -511}, 0, {   990,   1602}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4096,   1075,   -511}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4096,   1075,   1536}, 0, { -3096,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4096,    512,   3840}, 0, { -7696,   1090}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4096,    256,   3072}, 0, { -6162,   1602}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4096,      0,   -511}, 0, {     0,   2112}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   861,   3456,  -2127}, 0, { -1052,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   733,   3456,  -2255}, 0, {     0,   2010}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1117,   3456,  -2639}, 0, {  2012,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07002A18 - 0x07002A78\nstatic const Vtx wf_seg7_vertex_07002A18[] = {\n    {{{  1373,   3456,  -2767}, 0, {  3034,  -2076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1373,   3456,  -2383}, 0, {     0,  -2076}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1245,   3456,  -2511}, 0, {   990,  -1054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   861,   3456,  -2127}, 0, { -1052,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  1117,   3456,  -2639}, 0, {  2012,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   989,   3456,  -2767}, 0, {  3034,    990}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07002A78 - 0x07002B28\nstatic const Vtx wf_seg7_vertex_07002A78[] = {\n    {{{  3021,    922,   4045}, 0, {   862,   4948}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,    922,   1664}, 0, { -4118,   -990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,    922,   3072}, 0, { -5396,   2522}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,    922,   4045}, 0, { -9228,   4948}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,    922,   3072}, 0, { -9228,   2522}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3021,    922,   3840}, 0, {   862,   4438}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3226,    922,   3635}, 0, {  1374,   3926}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2560,    922,   2048}, 0, {  -286,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3021,    922,   3635}, 0, {   862,   3926}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1664,    922,   1024}, 0, { -2522,  -2586}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3072,    922,   2048}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07002B28 - 0x07002C08\nstatic const Vtx wf_seg7_vertex_07002B28[] = {\n    {{{  3226,   2304,   -511}, 0, { 20000,   7120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3226,   2304,  -1023}, 0, { 20000,   5076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2560,   2304,   -511}, 0, { 17342,   7120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2560,   2304,      0}, 0, { 17342,   9164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3226,   2304,  -1023}, 0, { 20000,   5076}, {0x19, 0x77, 0x21, 0xff}}},\n    {{{  2048,   2560,  -1023}, 0, { 15298,   5076}, {0x19, 0x77, 0x21, 0xff}}},\n    {{{  2560,   2304,   -511}, 0, { 17342,   7120}, {0x19, 0x77, 0x21, 0xff}}},\n    {{{  2048,   2560,  -1023}, 0, { 15298,   5076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,   2560,   1024}, 0, { 13254,  13252}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2048,   2560,   1024}, 0, { 15298,  13252}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,   2560,   -511}, 0, { 13254,   7120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2560,   2304,   -511}, 0, { 17342,   7120}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{  2048,   2560,  -1023}, 0, { 15298,   5076}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{  2048,   2560,   -511}, 0, { 15298,   7120}, {0x38, 0x71, 0x00, 0xff}}},\n};\n\n// 0x07002C08 - 0x07002D08\nstatic const Vtx wf_seg7_vertex_07002C08[] = {\n    {{{  2560,   2304,      0}, 0, { 17342,   9164}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{  2048,   2560,      0}, 0, { 15298,   9164}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{  2048,   2560,   1024}, 0, { 15298,  13252}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{ -1535,   2560,   1536}, 0, {   990,  15296}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,   2560,   1536}, 0, {  3034,  15296}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2047,   2560,    512}, 0, { -1052,  11208}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1192,   2560,   2565}, 0, {  2360,  19404}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,   2560,   2565}, 0, {  3034,  19404}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2047,   2560,  -1023}, 0, { -1052,   5076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,   2560,   1664}, 0, { 11210,  15808}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,   2560,   1024}, 0, { 13254,  13252}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,   2560,   1536}, 0, { 11210,  15296}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1664,   2560,   1024}, 0, { 13766,  13252}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2458,   1075,  -4095}, 0, {  4056,  -5550}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2458,   1075,  -3071}, 0, {     0,  -5550}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3226,   1075,  -3071}, 0, {     0,  -2484}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07002D08 - 0x07002DF8\nstatic const Vtx wf_seg7_vertex_07002D08[] = {\n    {{{  1024,   2560,   -511}, 0, { 11210,   7120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -273,   2560,  -2833}, 0, {  6028,  -2148}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -423,   2560,  -1959}, 0, {  5428,   1338}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,   2560,  -1023}, 0, { 13254,   5076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2047,   2560,  -2409}, 0, {  -454,   -456}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,   2560,   -511}, 0, {  3034,   7120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2047,   2560,  -1023}, 0, { -1052,   5076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3226,   2304,   -511}, 0, { 20000,   7120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2560,   2304,      0}, 0, { 17342,   9164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3226,   2304,      0}, 0, { 20000,   9164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4096,   1075,  -4095}, 0, {  4056,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2458,   1075,  -4095}, 0, {  4056,  -5550}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3226,   1075,  -3071}, 0, {     0,  -2484}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4096,   1075,  -3071}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,   2560,   1536}, 0, {  3034,  15296}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07002DF8 - 0x07002E48\nstatic const Vtx wf_seg7_vertex_07002DF8[] = {\n    {{{   512,   2560,   1536}, 0, {  9166,  15296}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,   2560,   1664}, 0, { 11210,  15808}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,   2560,   1536}, 0, { 11210,  15296}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   696,   2560,   2565}, 0, {  9902,  19404}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,   2560,   2565}, 0, {  9166,  19404}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07002E48 - 0x07002F28\nstatic const Vtx wf_seg7_vertex_07002E48[] = {\n    {{{  2560,    922,   2048}, 0, {  -712,   6290}, {0x00, 0x69, 0x47, 0xff}}},\n    {{{  3226,   2304,      0}, 0, {   990,      0}, {0x00, 0x69, 0x47, 0xff}}},\n    {{{  2560,   2304,      0}, 0, {  -712,      0}, {0x00, 0x69, 0x47, 0xff}}},\n    {{{  3072,    922,   2048}, 0, {   596,   6290}, {0x00, 0x69, 0x47, 0xff}}},\n    {{{  3226,   1075,  -3071}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3226,   1076,  -3071}, 0, {  4056,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3226,   2304,   -511}, 0, {-10250,  -3916}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3226,   2304,   -511}, 0, { -1052,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3226,   1076,  -3071}, 0, {  9166,   4870}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3226,   2304,  -1023}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3226,   1584,  -2412}, 0, {  6534,   2842}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2047,   1024,   3072}, 0, {  -864,   6098}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -1023,   1024,   3072}, 0, {  2012,   6098}, {0x00, 0x59, 0x59, 0xff}}},\n    {{{ -1535,   2560,   1536}, 0, {   572,     -8}, {0x00, 0x59, 0x59, 0xff}}},\n};\n\n// 0x07002F28 - 0x07003028\nstatic const Vtx wf_seg7_vertex_07002F28[] = {\n    {{{ -1023,   2560,   2565}, 0, {   990,      0}, {0x00, 0x45, 0x69, 0xff}}},\n    {{{ -1192,   2560,   2565}, 0, {   508,      0}, {0x00, 0x45, 0x69, 0xff}}},\n    {{{ -1023,   1792,   3072}, 0, {   990,   2010}, {0x00, 0x45, 0x69, 0xff}}},\n    {{{ -1023,   2025,   1536}, 0, {  6100,   2100}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1023,   2560,   1536}, 0, {  6100,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1023,   2560,   2565}, 0, {  1992,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1023,   1024,   3072}, 0, {     0,   6098}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1023,    922,   3072}, 0, {     0,   6506}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1023,   1792,   3072}, 0, {     0,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -2047,   2432,  -1023}, 0, { -3096,  -3610}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2047,   1792,    318}, 0, {  2262,  -1054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2047,   2432,    512}, 0, {  3034,  -3610}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2047,   1792,   -833}, 0, { -2336,  -1054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2047,   1024,   3072}, 0, {  9110,   6098}, {0xa0, 0x47, 0x27, 0xff}}},\n    {{{ -1535,   2560,   1536}, 0, {  4538,      0}, {0xa0, 0x47, 0x27, 0xff}}},\n    {{{ -2047,   2432,    512}, 0, {     0,    480}, {0xa0, 0x47, 0x27, 0xff}}},\n};\n\n// 0x07003028 - 0x07003108\nstatic const Vtx wf_seg7_vertex_07003028[] = {\n    {{{ -1535,   2560,   1536}, 0, {  4538,      0}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -2047,   2560,    512}, 0, {     0,      0}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{ -2047,   2432,    512}, 0, {     0,    480}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  2509,   2304,      0}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,   2534,      0}, 0, { 10242,   1434}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,   2560,      0}, 0, { 10490,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2560,   2304,      0}, 0, {  -924,    494}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2509,   2304,   -511}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2560,   2304,   -511}, 0, {  -924,    494}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,   2534,   -511}, 0, { 10242,   1434}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  2048,   2560,   -511}, 0, { 10490,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2047,   1792,   -833}, 0, { -2336,  -1054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2047,   2432,  -1023}, 0, { -3096,  -3610}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2047,   2560,  -2409}, 0, { -8630,  -4120}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07003108 - 0x070031F8\nstatic const Vtx wf_seg7_vertex_07003108[] = {\n    {{{  3584,   1075,  -3071}, 0, { -1052,  -3302}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4096,      0,  -3071}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4096,   1075,  -3071}, 0, {   990,  -3302}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3584,      0,  -3071}, 0, { -1052,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2047,      0,  -4095}, 0, {-15360,   6098}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2047,   1792,   -833}, 0, { -2336,  -1054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2047,   2560,  -2409}, 0, { -8630,  -4120}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2047,   1664,   -833}, 0, { -2336,   -544}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2047,    384,  -1535}, 0, { -5140,   4566}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2047,      0,  -1535}, 0, { -5140,   6098}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,      0,  -4095}, 0, { 10808,  11370}, {0x4e, 0x3e, 0xb2, 0xff}}},\n    {{{  -273,   2560,  -2833}, 0, { 10188,      0}, {0x4e, 0x3e, 0xb2, 0xff}}},\n    {{{  1536,   2560,  -1023}, 0, {     0,      0}, {0x4e, 0x3e, 0xb2, 0xff}}},\n    {{{ -2047,   2432,  -1023}, 0, { -3096,  -3610}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2047,   2560,  -1023}, 0, { -3096,  -4120}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070031F8 - 0x070032D8\nstatic const Vtx wf_seg7_vertex_070031F8[] = {\n    {{{  2458,   1075,  -4095}, 0, {  6508,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   512,      0,  -4095}, 0, { 14276,   4258}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2458,   1203,  -4095}, 0, {  6508,   -542}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4096,      0,  -4095}, 0, {     0,   4258}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   512,      0,  -4095}, 0, {  6100,  14536}, {0xc6, 0x5f, 0xc5, 0xff}}},\n    {{{  1536,   2560,  -1023}, 0, {  2012,      0}, {0xc6, 0x5f, 0xc5, 0xff}}},\n    {{{  2458,   1203,  -4095}, 0, { -1358,   6776}, {0xc6, 0x5f, 0xc5, 0xff}}},\n    {{{ -2047,   1024,   3072}, 0, { 13254,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2047,   2432,    512}, 0, {  3034,  -3610}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2047,   1792,    318}, 0, {  2262,  -1054}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2047,   1664,    318}, 0, {  2262,   -544}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2047,   2560,  -2409}, 0, {  6668,      0}, {0xe5, 0x2f, 0x8e, 0xff}}},\n    {{{  -273,   2560,  -2833}, 0, {     0,      0}, {0xe5, 0x2f, 0x8e, 0xff}}},\n    {{{   512,      0,  -4095}, 0, { -4082,  10644}, {0xe5, 0x2f, 0x8e, 0xff}}},\n};\n\n// 0x070032D8 - 0x070033B8\nstatic const Vtx wf_seg7_vertex_070032D8[] = {\n    {{{  1024,   2560,   1664}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1664,    922,   1024}, 0, {  3582,   6506}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1664,   2560,   1024}, 0, {  3582,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1024,    922,   1664}, 0, {     0,   6506}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   512,      0,  -4095}, 0, { -9192,  10644}, {0x00, 0x45, 0x96, 0xff}}},\n    {{{ -2047,      0,  -4095}, 0, {  1212,  10818}, {0x00, 0x45, 0x96, 0xff}}},\n    {{{ -2047,   2560,  -2409}, 0, {  1558,      0}, {0x00, 0x45, 0x96, 0xff}}},\n    {{{ -2047,   1024,   3072}, 0, { 13254,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2047,   1664,    318}, 0, {  2262,   -544}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2047,    384,    640}, 0, {  3544,   4566}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  4096,   1075,  -4095}, 0, {  4056,  -3302}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4096,   1075,  -3071}, 0, {     0,  -3302}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4096,      0,  -3071}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  4096,      0,  -4095}, 0, {  4056,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070033B8 - 0x070034A8\nstatic const Vtx wf_seg7_vertex_070033B8[] = {\n    {{{  4096,      0,  -4095}, 0, {     0,   4258}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2458,   1075,  -4095}, 0, {  6508,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  4096,   1075,  -4095}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  2048,   2560,   1024}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1664,   2560,   1024}, 0, {  -540,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1664,    922,   1024}, 0, {  -540,   6506}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1192,   2560,   2565}, 0, { -1052,      0}, {0x88, 0x00, 0x28, 0xff}}},\n    {{{ -1535,   2560,   1536}, 0, { -5382,      0}, {0x88, 0x00, 0x28, 0xff}}},\n    {{{ -1023,   1792,   3072}, 0, {  1080,   3032}, {0x88, 0x00, 0x28, 0xff}}},\n    {{{ -2047,   1664,    318}, 0, {  2262,   -544}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2047,    384,  -1535}, 0, { -5140,   4566}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2047,    384,    640}, 0, {  3544,   4566}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1664,    922,   1024}, 0, {  -352,   1040}, {0xa2, 0x16, 0x52, 0xff}}},\n    {{{  2560,    922,   2048}, 0, {  5078,   1040}, {0xa2, 0x16, 0x52, 0xff}}},\n    {{{  2048,   2560,   1024}, 0, {   656,  -5500}, {0xa2, 0x16, 0x52, 0xff}}},\n};\n\n// 0x070034A8 - 0x07003588\nstatic const Vtx wf_seg7_vertex_070034A8[] = {\n    {{{  2560,    922,   2048}, 0, { -1054,   6426}, {0x6a, 0x39, 0x26, 0xff}}},\n    {{{  2560,   2304,      0}, 0, {  3806,      0}, {0x6a, 0x39, 0x26, 0xff}}},\n    {{{  2048,   2560,   1024}, 0, {     0,      0}, {0x6a, 0x39, 0x26, 0xff}}},\n    {{{ -1535,   2560,   1536}, 0, { -5382,      0}, {0x88, 0x00, 0x28, 0xff}}},\n    {{{ -1023,   1024,   3072}, 0, {  1080,   6098}, {0x88, 0x00, 0x28, 0xff}}},\n    {{{ -1023,   1792,   3072}, 0, {  1080,   3032}, {0x88, 0x00, 0x28, 0xff}}},\n    {{{   512,   1792,   3072}, 0, {   464,   2010}, {0x00, 0x45, 0x69, 0xff}}},\n    {{{   696,   2560,   2565}, 0, {   990,      0}, {0x00, 0x45, 0x69, 0xff}}},\n    {{{   512,   2560,   2565}, 0, {   464,      0}, {0x00, 0x45, 0x69, 0xff}}},\n    {{{   512,    922,   3072}, 0, {     0,   6506}, {0x77, 0x00, 0x2b, 0xff}}},\n    {{{   696,   2560,   2565}, 0, {  2122,      0}, {0x77, 0x00, 0x2b, 0xff}}},\n    {{{   512,   1792,   3072}, 0, {     0,   3032}, {0x77, 0x00, 0x2b, 0xff}}},\n    {{{  1024,    922,   1664}, 0, {  5950,   6506}, {0x77, 0x00, 0x2b, 0xff}}},\n    {{{  1024,   2560,   1664}, 0, {  5950,      0}, {0x77, 0x00, 0x2b, 0xff}}},\n};\n\n// 0x07003588 - 0x07003668\nstatic const Vtx wf_seg7_vertex_07003588[] = {\n    {{{   512,    922,   3072}, 0, {   990,   6506}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,   2560,   2565}, 0, { -1032,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,   2025,   1536}, 0, { -5140,   2100}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,   1792,   3072}, 0, {   990,   3032}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   512,   2560,   1536}, 0, { -5140,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  2458,   1203,  -4095}, 0, {  4056,    480}, {0x70, 0x3b, 0x07, 0xff}}},\n    {{{  1536,   2560,  -1023}, 0, { -8206,  -4936}, {0x70, 0x3b, 0x07, 0xff}}},\n    {{{  2458,   1075,  -3071}, 0, {     0,    990}, {0x70, 0x3b, 0x07, 0xff}}},\n    {{{ -2047,   1664,    318}, 0, {  2262,   -544}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2047,   1664,   -833}, 0, { -2336,   -544}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2047,    384,  -1535}, 0, { -5140,   4566}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3226,   1584,  -2412}, 0, {     0,  -2334}, {0x18, 0x6e, 0xc7, 0xff}}},\n    {{{  2048,   2560,  -1023}, 0, {  4668,  -9104}, {0x18, 0x6e, 0xc7, 0xff}}},\n    {{{  3226,   2304,  -1023}, 0, {     0,  -8480}, {0x18, 0x6e, 0xc7, 0xff}}},\n};\n\n// 0x07003668 - 0x07003728\nstatic const Vtx wf_seg7_vertex_07003668[] = {\n    {{{  3226,   1584,  -2412}, 0, {     0,  -2334}, {0x00, 0x67, 0xb7, 0xff}}},\n    {{{  1536,   2560,  -1023}, 0, {  6712,  -9104}, {0x00, 0x67, 0xb7, 0xff}}},\n    {{{  2048,   2560,  -1023}, 0, {  4668,  -9104}, {0x00, 0x67, 0xb7, 0xff}}},\n    {{{  1536,   2560,  -1023}, 0, {  6712,  -9104}, {0xfb, 0x64, 0xb3, 0xff}}},\n    {{{  3226,   1584,  -2412}, 0, {     0,  -2334}, {0xfb, 0x64, 0xb3, 0xff}}},\n    {{{  3226,   1076,  -3071}, 0, {     0,    990}, {0xfb, 0x64, 0xb3, 0xff}}},\n    {{{  1536,   2560,  -1023}, 0, {  6712,  -9104}, {0x00, 0x66, 0xb6, 0xff}}},\n    {{{  3226,   1076,  -3071}, 0, {     0,    990}, {0x00, 0x66, 0xb6, 0xff}}},\n    {{{  2458,   1075,  -3071}, 0, {  3034,    990}, {0x00, 0x66, 0xb6, 0xff}}},\n    {{{  2458,   1075,  -4095}, 0, {  4056,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2458,   1203,  -4095}, 0, {  4056,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  2458,   1075,  -3071}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07003728 - 0x07003768\nstatic const Vtx wf_seg7_vertex_07003728[] = {\n    {{{   512,    922,   3072}, 0, {   990,    990}, {0x00, 0x67, 0x4a, 0xff}}},\n    {{{   512,   2025,   1536}, 0, {   990,  -6330}, {0x00, 0x67, 0x4a, 0xff}}},\n    {{{ -1023,    922,   3072}, 0, { -5140,    990}, {0x00, 0x67, 0x4a, 0xff}}},\n    {{{ -1023,   2025,   1536}, 0, { -5140,  -6330}, {0x00, 0x67, 0x4a, 0xff}}},\n};\n\n// 0x07003768 - 0x07003858\nstatic const Vtx wf_seg7_vertex_07003768[] = {\n    {{{  -127,   2560,   1536}, 0, {  1672,   3542}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -383,   2560,   2099}, 0, {     0,   -202}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -383,   2560,   1536}, 0, {     0,   3542}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -127,   2560,   2099}, 0, {  1936,   1858}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,   2816,   2099}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -383,   2560,   2099}, 0, {    44,   1858}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,   2816,   1536}, 0, {  3716,      0}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  -127,   2560,   2099}, 0, {     0,   1870}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  -127,   2560,   1536}, 0, {  3716,   1870}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  -255,   2816,   2099}, 0, {     0,      0}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{  -383,   2560,   1536}, 0, {     0,    850}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  -255,   2816,   2099}, 0, {  3716,  -1054}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  -255,   2816,   1536}, 0, {     0,  -1054}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  -383,   2560,   2099}, 0, {  3716,    850}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  -127,   2560,   2099}, 0, {  1672,   -202}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07003858 - 0x07003948\nstatic const Vtx wf_seg7_vertex_07003858[] = {\n    {{{ -1740,   1024,   3994}, 0, {     0,  -1566}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1945,    512,   3994}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1945,   1024,   3994}, 0, {   990,  -1566}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1024,   3584,   -511}, 0, {  2012,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -423,   3584,  -1959}, 0, {  7794,   4726}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,   3584,   1536}, 0, { 10188,  -9230}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,   3584,  -1023}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,   3584,   1024}, 0, {     0,  -7186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,   3584,   -511}, 0, { 10188,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,   3584,   1536}, 0, {  2012,  -9230}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1945,    512,   3994}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1740,    512,   3789}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1945,    512,   3789}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1740,    512,   3994}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1740,    512,   3994}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07003948 - 0x07003A08\nstatic const Vtx wf_seg7_vertex_07003948[] = {\n    {{{ -1740,   1024,   3789}, 0, {     0,  -1566}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1740,    512,   3789}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1740,    512,   3994}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1740,   1024,   3994}, 0, {   990,  -1566}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1945,   1024,   3789}, 0, {     0,  -1564}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1740,    512,   3789}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1740,   1024,   3789}, 0, {   990,  -1564}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1945,    512,   3789}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1945,   1024,   3994}, 0, {     0,  -1564}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1945,    512,   3994}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1945,    512,   3789}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1945,   1024,   3789}, 0, {   990,  -1564}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07003A08 - 0x07003AF8\nstatic const Vtx wf_seg7_vertex_07003A08[] = {\n    {{{  1117,   3584,  -2639}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   733,   3456,  -2255}, 0, {  2858,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   733,   3584,  -2255}, 0, {  2858,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  4096,    512,   4096}, 0, {  1706,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3226,    512,   4096}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3226,    256,   4096}, 0, {     0,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  4096,    256,   4096}, 0, {  1706,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   861,   3584,  -2127}, 0, {   144,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   861,   3456,  -2127}, 0, {   144,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1245,   3456,  -2511}, 0, {  3034,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1245,   3584,  -2511}, 0, {  3034,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   733,   3584,  -2255}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   733,   3456,  -2255}, 0, {     0,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   861,   3456,  -2127}, 0, {  1414,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   861,   3584,  -2127}, 0, {  1414,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07003AF8 - 0x07003BE8\nstatic const Vtx wf_seg7_vertex_07003AF8[] = {\n    {{{  1373,   3584,  -2383}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1373,   3456,  -2383}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1373,   3456,  -2767}, 0, {  3034,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1117,   3584,  -2639}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1117,   3456,  -2639}, 0, {     0,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   733,   3456,  -2255}, 0, {  2858,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   989,   3584,  -2767}, 0, { -2920,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   989,   3456,  -2767}, 0, { -2920,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1117,   3456,  -2639}, 0, { -1476,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1117,   3584,  -2639}, 0, { -1476,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1373,   3584,  -2767}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1373,   3456,  -2767}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   989,   3456,  -2767}, 0, {  3034,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   989,   3584,  -2767}, 0, {  3034,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1373,   3584,  -2767}, 0, {  3034,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07003BE8 - 0x07003C28\nstatic const Vtx wf_seg7_vertex_07003BE8[] = {\n    {{{  1245,   3584,  -2511}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1373,   3456,  -2383}, 0, {  1414,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1373,   3584,  -2383}, 0, {  1414,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1245,   3456,  -2511}, 0, {     0,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07003C28 - 0x07003D08\nstatic const Vtx wf_seg7_vertex_07003C28[] = {\n    {{{  -423,   2560,  -1959}, 0, {  4056,   2010}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1024,   3584,   -511}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  1024,   2560,   -511}, 0, {     0,   2010}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -423,   3584,  -1959}, 0, {  4056,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  2048,   2560,  -1023}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1536,   2560,  -1023}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1536,   3584,  -1023}, 0, {   990,  -1054}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1023,   2560,   -511}, 0, {  3034,   2010}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{ -1023,   3584,   -511}, 0, {  3034,      0}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{  -423,   3584,  -1959}, 0, {   144,      0}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{  -423,   2560,  -1959}, 0, {   144,   2010}, {0x8b, 0x00, 0xd0, 0xff}}},\n    {{{  1536,   2560,   1024}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1536,   2560,   -511}, 0, {  3034,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1536,   3584,   1024}, 0, {     0,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07003D08 - 0x07003E08\nstatic const Vtx wf_seg7_vertex_07003D08[] = {\n    {{{  1536,   2560,   1024}, 0, {   990,   2010}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1536,   3584,   1024}, 0, {   990,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1024,   3584,   1536}, 0, {  -454,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1536,   2560,   -511}, 0, {  3034,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1536,   3584,  -1023}, 0, {  4056,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1536,   3584,   1024}, 0, {     0,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1023,   2560,   -511}, 0, {     0,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1023,   2560,   1536}, 0, {  4056,   2010}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1023,   3584,   -511}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1023,   3584,   1536}, 0, {  4056,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1023,   2560,   1536}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   512,   2560,   1536}, 0, {  4056,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1023,   3584,   1536}, 0, {   990,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1024,   2560,   1536}, 0, {  5078,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1024,   3584,   1536}, 0, {  5078,  -1054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1024,   2560,   1536}, 0, {  -454,   2010}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x07003E08 - 0x07003EB8\nstatic const Vtx wf_seg7_vertex_07003E08[] = {\n    {{{  2048,   2560,  -1023}, 0, {  1332,    990}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  1536,   3584,  -1023}, 0, {   650,  -1056}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  1536,   2560,   -511}, 0, {     0,    990}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{   512,   2025,   1536}, 0, {  3034,   3076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   512,   2560,   1536}, 0, {  3034,   2010}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1023,   2025,   1536}, 0, {     0,   3076}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1023,   2560,   1536}, 0, {     0,   2010}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1024,   2560,   -511}, 0, {  1414,   2010}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1024,   3584,   -511}, 0, {  1414,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1536,   3584,  -1023}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  1536,   2560,  -1023}, 0, {     0,   2010}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07003EB8 - 0x07003F98\nstatic const Vtx wf_seg7_vertex_07003EB8[] = {\n    {{{  3226,    922,   3635}, 0, {  7122,    990}, {0x86, 0x1f, 0x0b, 0xff}}},\n    {{{  3226,   2304,      0}, 0, { -7320,  -4704}, {0x86, 0x1f, 0x0b, 0xff}}},\n    {{{  3072,    922,   2048}, 0, {   756,    990}, {0x86, 0x1f, 0x0b, 0xff}}},\n    {{{  3226,    922,   3635}, 0, {  7122,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3226,   1024,   3635}, 0, {  7122,    594}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3226,   2304,      0}, 0, { -7320,  -4704}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3021,    922,   3635}, 0, {  -150,      0}, {0xc8, 0x71, 0x00, 0xff}}},\n    {{{  3226,   1024,   3840}, 0, {   990,    990}, {0xc8, 0x71, 0x00, 0xff}}},\n    {{{  3226,   1024,   3635}, 0, {   990,      0}, {0xc8, 0x71, 0x00, 0xff}}},\n    {{{  3021,    922,   3840}, 0, {  -150,    990}, {0xc8, 0x71, 0x00, 0xff}}},\n    {{{  3226,   1024,   3840}, 0, {     0,    582}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  3021,    922,   4045}, 0, {  1196,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  3021,   1024,   4045}, 0, {  1196,    582}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  3021,    922,   4045}, 0, {  -150,   2010}, {0xc8, 0x71, 0x00, 0xff}}},\n};\n\n// 0x07003F98 - 0x07004098\nstatic const Vtx wf_seg7_vertex_07003F98[] = {\n    {{{  3021,   1024,   4045}, 0, { 15814,    786}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3226,   1024,   4096}, 0, { 16728,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3226,   1024,   3840}, 0, { 16728,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3584,   1024,   3635}, 0, { 18160,   -850}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3226,   1024,   3635}, 0, { 16728,   -850}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3584,   1024,   3840}, 0, { 18160,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3226,    922,   3635}, 0, {   172,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3021,    922,   3635}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3226,   1024,   3635}, 0, {   172,    582}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -2508,   1024,   4096}, 0, {     0,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1740,   1024,   3994}, 0, {  3034,   3646}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1945,   1024,   3994}, 0, {  2216,   3646}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,   1024,   4096}, 0, {  5896,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1945,   1024,   3789}, 0, {  2216,   2828}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2508,   1024,   3072}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,   1024,   3072}, 0, {  5896,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07004098 - 0x07004198\nstatic const Vtx wf_seg7_vertex_07004098[] = {\n    {{{ -1740,   1024,   3994}, 0, {  3034,   3646}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,   1024,   3072}, 0, {  5896,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1740,   1024,   3789}, 0, {  3034,   2828}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3584,    512,   3840}, 0, {-14338,   5280}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3584,   1024,   3635}, 0, {-13520,   3236}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3584,   1024,   3840}, 0, {-14338,   3236}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3584,   1075,   1536}, 0, { -5140,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3584,   2304,      0}, 0, {   990,  -1872}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3584,   1075,  -3071}, 0, { 13254,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3584,   1075,  -3071}, 0, {  9166,   5076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3584,      0,   -511}, 0, { -1052,   9368}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3584,      0,  -3071}, 0, {  9166,   9368}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3584,   1075,   -511}, 0, { -1052,   5076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3584,    512,   3840}, 0, {  1502,   2010}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3226,   1024,   3840}, 0, {    70,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3226,    512,   3840}, 0, {    70,   2010}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07004198 - 0x07004278\nstatic const Vtx wf_seg7_vertex_07004198[] = {\n    {{{  3584,   2304,   -511}, 0, {     0,    494}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3226,   2304,      0}, 0, {  1398,  -1550}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3584,   2304,      0}, 0, {     0,  -1550}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3226,   2304,   -511}, 0, {  1398,    494}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3584,   1075,  -3071}, 0, { 13254,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3584,   2304,   -511}, 0, {  3034,  -1872}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3584,   2304,      0}, 0, {   990,  -1872}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3226,    512,   3840}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3226,   1024,   3840}, 0, {   990,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3226,    512,   4096}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3226,   1024,   4096}, 0, {     0,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  3584,   1024,   3840}, 0, {  1502,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3226,   1024,   3840}, 0, {    70,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3584,    512,   3840}, 0, {  1502,   2010}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07004278 - 0x07004368\nstatic const Vtx wf_seg7_vertex_07004278[] = {\n    {{{  3021,   1024,   4045}, 0, {  -750,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3021,    922,   4045}, 0, {  -750,   1396}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1023,    922,   4045}, 0, { 15298,   1396}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  3226,   1024,   4096}, 0, { 22860,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2508,   1024,   4096}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -2508,      0,   4096}, 0, {     0,   4054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3226,      0,   4096}, 0, { 22860,   4054}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  3584,   1024,   3635}, 0, {  1808,   -850}, {0x00, 0x77, 0x2a, 0xff}}},\n    {{{  3226,   2304,      0}, 0, {   376, -15362}, {0x00, 0x77, 0x2a, 0xff}}},\n    {{{  3226,   1024,   3635}, 0, {   376,   -850}, {0x00, 0x77, 0x2a, 0xff}}},\n    {{{  3584,   2304,      0}, 0, {  1808, -15362}, {0x00, 0x77, 0x2a, 0xff}}},\n    {{{ -1023,   1024,   4045}, 0, {     0,    582}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1023,    922,   3072}, 0, {  3852,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1023,   1024,   3072}, 0, {  3852,    582}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{ -1023,    922,   4045}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07004368 - 0x07004468\nstatic const Vtx wf_seg7_vertex_07004368[] = {\n    {{{ -2508,      0,   3072}, 0, { -3096,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2508,      0,   4096}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -2508,   1024,   4096}, 0, {   990,  -2586}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  3021,   1024,   4045}, 0, {  -750,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1023,    922,   4045}, 0, { 15298,   1396}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1023,   1024,   4045}, 0, { 15298,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{ -1023,   1024,   4045}, 0, {  5896,   3850}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,   1024,   4096}, 0, {  5896,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3226,   1024,   4096}, 0, { 22860,   4054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3021,   1024,   4045}, 0, { 21946,   3850}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1945,   1024,   3789}, 0, {  2216,   2828}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,   1024,   3072}, 0, {  5896,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2047,   1024,   3072}, 0, {  1808,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1740,   1024,   3789}, 0, {  3034,   2828}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2508,   1024,   3072}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -2508,   1024,   3072}, 0, { -3096,  -2002}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07004468 - 0x07004528\nstatic const Vtx wf_seg7_vertex_07004468[] = {\n    {{{  2641,   4095,    330}, 0, {   244,      2}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2641,   4095,     54}, 0, {   796,      2}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2881,   4095,    -83}, 0, {  1072,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2881,   4095,    468}, 0, {     0,    480}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3120,   4095,    330}, 0, {   244,    956}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  3120,   4095,     54}, 0, {   796,    956}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  2881,   4096,    -83}, 0, {  1072,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3120,   4096,    330}, 0, {   244,    956}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3120,   4096,     54}, 0, {   796,    956}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2641,   4096,     54}, 0, {   796,      2}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2641,   4096,    330}, 0, {   244,      2}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  2881,   4096,    468}, 0, {     0,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07004528 - 0x070045A8\nstatic const Vtx wf_seg7_vertex_07004528[] = {\n    {{{   799,   3584,   -735}, 0, {   990,  -3982}, {0x0c, 0x00, 0x82, 0xff}}},\n    {{{   881,   2791,   -727}, 0, {     0,    990}, {0x0c, 0x00, 0x82, 0xff}}},\n    {{{   800,   2791,   -735}, 0, {   990,    990}, {0x0c, 0x00, 0x82, 0xff}}},\n    {{{   881,   3584,   -727}, 0, {     0,  -3982}, {0x0c, 0x00, 0x82, 0xff}}},\n    {{{   881,   3584,   -727}, 0, {   990,  -3982}, {0x7e, 0x00, 0xf4, 0xff}}},\n    {{{   889,   3584,   -646}, 0, {     0,  -3982}, {0x7e, 0x00, 0xf4, 0xff}}},\n    {{{   889,   2791,   -646}, 0, {     0,    990}, {0x7e, 0x00, 0xf4, 0xff}}},\n    {{{   881,   2791,   -727}, 0, {   990,    990}, {0x7e, 0x00, 0xf4, 0xff}}},\n};\n\n// 0x070045A8 - 0x07004608\nstatic const Vtx wf_seg7_vertex_070045A8[] = {\n    {{{   799,   3584,   -735}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   889,   3584,   -646}, 0, {  1552,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   881,   3584,   -727}, 0, {   760,    352}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   800,   2791,   -735}, 0, {  -592,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   881,   2791,   -727}, 0, {   198,    606}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   889,   2791,   -646}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07004608 - 0x070046B8\nstatic const Vtx wf_seg7_vertex_07004608[] = {\n    {{{  4096,    512,   3840}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3226,    512,   3840}, 0, { -2482,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  3226,    512,   4096}, 0, { -2482,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  4096,    512,   4096}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1117,   3584,  -2639}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1373,   3584,  -2767}, 0, {  2012,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   989,   3584,  -2767}, 0, {   480,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1373,   3584,  -2383}, 0, {  2012,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   733,   3584,  -2255}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   861,   3584,  -2127}, 0, {   480,   1500}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1245,   3584,  -2511}, 0, {  1502,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070046B8 - 0x07004758\nstatic const Gfx wf_seg7_dl_070046B8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wf_seg7_lights_07002900.l, 1),\n    gsSPLight(&wf_seg7_lights_07002900.a, 2),\n    gsSPVertex(wf_seg7_vertex_07002918, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10, 11, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(wf_seg7_vertex_07002A18, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  2,  3, 0x0,  4,  5,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07004758 - 0x070047C8\nstatic const Gfx wf_seg7_dl_07004758[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_07002A78, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 2,  4,  3, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 6,  7,  1, 0x0,  5,  8,  1, 0x0),\n    gsSP2Triangles( 7,  9,  1, 0x0,  1,  8,  6, 0x0),\n    gsSP1Triangle( 7,  6, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070047C8 - 0x070048D8\nstatic const Gfx wf_seg7_dl_070047C8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_07002B28, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(wf_seg7_vertex_07002C08, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 5,  4,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(10,  9, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(wf_seg7_vertex_07002D08, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  2, 0x0,  4,  6,  5, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(10, 12, 13, 0x0,  6, 14,  5, 0x0),\n    gsSP1Triangle( 4,  2,  1, 0x0),\n    gsSPVertex(wf_seg7_vertex_07002DF8, 5, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP1Triangle( 3,  1,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070048D8 - 0x07004B30\nstatic const Gfx wf_seg7_dl_070048D8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_07002E48, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(wf_seg7_vertex_07002F28, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  3,  6,  7, 0x0),\n    gsSP2Triangles( 6,  5,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(wf_seg7_vertex_07003028, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(wf_seg7_vertex_07003108, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 4,  8,  7, 0x0,  8,  4,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14,  6, 0x0),\n    gsSPVertex(wf_seg7_vertex_070031F8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(wf_seg7_vertex_070032D8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(wf_seg7_vertex_070033B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wf_seg7_vertex_070034A8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 12, 13, 10, 0x0),\n    gsSPVertex(wf_seg7_vertex_07003588, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(wf_seg7_vertex_07003668, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07004B30 - 0x07004B68\nstatic const Gfx wf_seg7_dl_07004B30[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09009800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_07003728, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07004B68 - 0x07004C50\nstatic const Gfx wf_seg7_dl_07004B68[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_07003768, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(wf_seg7_vertex_07003858, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  7, 0x0,  7,  3,  5, 0x0),\n    gsSP2Triangles( 4,  8,  5, 0x0,  5,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(wf_seg7_vertex_07003948, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07004C50 - 0x07004D08\nstatic const Gfx wf_seg7_dl_07004C50[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_07003A08, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(wf_seg7_vertex_07003AF8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(wf_seg7_vertex_07003BE8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07004D08 - 0x07004DD8\nstatic const Gfx wf_seg7_dl_07004D08[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09008800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_07003C28, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(wf_seg7_vertex_07003D08, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 14, 0x0),\n    gsSP2Triangles(14, 12, 11, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(wf_seg7_vertex_07003E08, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  5,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle(10,  7,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07004DD8 - 0x07004F88\nstatic const Gfx wf_seg7_dl_07004DD8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_07003EB8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13,  7,  9, 0x0),\n    gsSPVertex(wf_seg7_vertex_07003F98, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 3,  2,  5, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 12, 10,  9, 0x0),\n    gsSP2Triangles( 9, 13, 14, 0x0,  9, 11, 13, 0x0),\n    gsSP1Triangle(10, 12, 15, 0x0),\n    gsSPVertex(wf_seg7_vertex_07004098, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(wf_seg7_vertex_07004198, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  9,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(wf_seg7_vertex_07004278, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(wf_seg7_vertex_07004368, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP2Triangles(10, 12, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07004F88 - 0x07004FF0\nstatic const Gfx wf_seg7_dl_07004F88[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09006800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_07004468, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  3,  2, 0x0,  5,  4,  2, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9, 10, 0x0),\n    gsSP2Triangles( 6, 10, 11, 0x0,  6, 11,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07004FF0 - 0x07005038\nstatic const Gfx wf_seg7_dl_07004FF0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wf_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_07004528, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07005038 - 0x07005070\nstatic const Gfx wf_seg7_dl_07005038[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wf_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_070045A8, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07005070 - 0x070050C8\nstatic const Gfx wf_seg7_dl_07005070[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_07004608, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 4,  8,  9, 0x0,  4,  9, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070050C8 - 0x070051C8\nconst Gfx wf_seg7_dl_070050C8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_070046B8),\n    gsSPDisplayList(wf_seg7_dl_07004758),\n    gsSPDisplayList(wf_seg7_dl_070047C8),\n    gsSPDisplayList(wf_seg7_dl_070048D8),\n    gsSPDisplayList(wf_seg7_dl_07004B30),\n    gsSPDisplayList(wf_seg7_dl_07004B68),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_07004C50),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_07004D08),\n    gsSPDisplayList(wf_seg7_dl_07004DD8),\n    gsSPDisplayList(wf_seg7_dl_07004F88),\n    gsSPDisplayList(wf_seg7_dl_07004FF0),\n    gsSPDisplayList(wf_seg7_dl_07005038),\n    gsSPDisplayList(wf_seg7_dl_07005070),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/10/1.inc.c",
    "content": "// 0x07007590 - 0x070075A8\nstatic const Lights1 wf_seg7_lights_07007590 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x070075A8 - 0x070076A8\nstatic const Vtx wf_seg7_vertex_070075A8[] = {\n    {{{  -127,   1741,   -127}, 0, {  1236,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -127,   1997,   -127}, 0, {  1236,    -30}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   128,   1997,   -127}, 0, {   214,    -30}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -127,   1741,    128}, 0, {  1226,    988}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -127,   1997,    128}, 0, {  1226,    -34}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -127,   1997,   -127}, 0, {   204,    -34}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -127,   1741,   -127}, 0, {   204,    988}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   128,   1741,   -127}, 0, {  1244,    996}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   128,   1997,   -127}, 0, {  1244,    -24}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   128,   1997,    128}, 0, {   222,    -24}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   128,   1741,    128}, 0, {   222,    996}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   128,   1741,    128}, 0, {  1244,   1000}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -127,   1997,    128}, 0, {   222,    -20}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -127,   1741,    128}, 0, {   222,   1000}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   128,   1997,    128}, 0, {  1244,    -20}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   128,   1741,   -127}, 0, {   214,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070076A8 - 0x070077A8\nstatic const Vtx wf_seg7_vertex_070076A8[] = {\n    {{{  -263,   1997,    152}, 0, {  1208,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -157,   1997,   -264}, 0, {  -454,    392}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   153,   1997,   -264}, 0, {  -454,   1632}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -183,   1741,   -437}, 0, {  -756,   1722}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -437,   1741,   -183}, 0, {   256,   2736}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -437,   1741,    184}, 0, {  1724,   2736}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -183,   1741,    438}, 0, {  2738,   1722}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   184,   1741,    438}, 0, {  2738,    256}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   438,   1741,    184}, 0, {  1724,   -758}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   438,   1741,   -183}, 0, {   256,   -758}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   184,   1741,   -437}, 0, {  -756,    256}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   260,   1997,   -158}, 0, {     0,   2056}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   260,   1997,    152}, 0, {  1208,   2056}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   171,   1997,    258}, 0, {  1634,   1700}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -157,   1997,    258}, 0, {  1634,    392}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -263,   1997,   -158}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x070077A8 - 0x07007898\nstatic const Vtx wf_seg7_vertex_070077A8[] = {\n    {{{  -214,   1792,   -511}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -214,   1536,   -511}, 0, {     0,   1386}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -511,   1536,   -214}, 0, {  2296,   1386}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   215,   1792,    512}, 0, { -1336,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   512,   1536,    215}, 0, {   990,   1386}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   512,   1792,    215}, 0, {   990,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   215,   1536,    512}, 0, { -1336,   1386}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   512,   1792,    215}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,   1536,    215}, 0, {     0,   1386}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,   1536,   -214}, 0, {  2352,   1386}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,   1792,   -214}, 0, {  2352,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,   1792,   -214}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   215,   1536,   -511}, 0, {  2296,   1386}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   215,   1792,   -511}, 0, {  2296,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   512,   1536,   -214}, 0, {     0,   1386}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07007898 - 0x07007988\nstatic const Vtx wf_seg7_vertex_07007898[] = {\n    {{{  -214,   1792,    512}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   215,   1536,    512}, 0, {  2352,   1386}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   215,   1792,    512}, 0, {  2352,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -214,   1792,   -511}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -511,   1536,   -214}, 0, {  2296,   1386}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -511,   1792,   -214}, 0, {  2296,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -511,   1792,   -214}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,   1536,   -214}, 0, {     0,   1386}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,   1536,    215}, 0, {  2352,   1386}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,   1792,    215}, 0, {  2352,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,   1792,    215}, 0, { -1336,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -511,   1536,    215}, 0, { -1336,   1386}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -214,   1536,    512}, 0, {   990,   1386}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -214,   1792,    512}, 0, {   990,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -214,   1536,    512}, 0, {     0,   1386}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07007988 - 0x07007A78\nstatic const Vtx wf_seg7_vertex_07007988[] = {\n    {{{   260,   1997,   -158}, 0, {  2450,    990}, {0x71, 0x39, 0x00, 0xff}}},\n    {{{     0,   2509,      0}, 0, {  1180,  -3594}, {0x71, 0x39, 0x00, 0xff}}},\n    {{{   260,   1997,    152}, 0, {     0,    990}, {0x71, 0x39, 0x00, 0xff}}},\n    {{{  -263,   1997,   -158}, 0, {     0,    990}, {0x90, 0x3a, 0x00, 0xff}}},\n    {{{  -263,   1997,    152}, 0, {  2450,    990}, {0x90, 0x3a, 0x00, 0xff}}},\n    {{{     0,   2509,      0}, 0, {  1238,  -3610}, {0x90, 0x3a, 0x00, 0xff}}},\n    {{{     0,   2509,      0}, 0, {   558,  -3598}, {0xb3, 0x3f, 0xb3, 0xff}}},\n    {{{  -157,   1997,   -264}, 0, {     0,    990}, {0xb3, 0x3f, 0xb3, 0xff}}},\n    {{{  -263,   1997,   -158}, 0, {  1132,    990}, {0xb3, 0x3f, 0xb3, 0xff}}},\n    {{{     0,   2509,      0}, 0, {  1192,  -3614}, {0x00, 0x3a, 0x90, 0xff}}},\n    {{{   153,   1997,   -264}, 0, {     0,    990}, {0x00, 0x3a, 0x90, 0xff}}},\n    {{{  -157,   1997,   -264}, 0, {  2450,    990}, {0x00, 0x3a, 0x90, 0xff}}},\n    {{{     0,   2509,      0}, 0, {   440,  -2556}, {0xb3, 0x3f, 0x4d, 0xff}}},\n    {{{  -263,   1997,    152}, 0, {  -172,   2010}, {0xb3, 0x3f, 0x4d, 0xff}}},\n    {{{  -157,   1997,    258}, 0, {   990,   2010}, {0xb3, 0x3f, 0x4d, 0xff}}},\n};\n\n// 0x07007A78 - 0x07007B78\nstatic const Vtx wf_seg7_vertex_07007A78[] = {\n    {{{   438,   1792,   -183}, 0, { -1154,    706}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   438,   1741,    184}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   438,   1792,    184}, 0, {   990,    706}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   171,   1997,    258}, 0, {  2012,    990}, {0x00, 0x39, 0x71, 0xff}}},\n    {{{     0,   2509,      0}, 0, {   650,  -3588}, {0x00, 0x39, 0x71, 0xff}}},\n    {{{  -157,   1997,    258}, 0, {  -606,    990}, {0x00, 0x39, 0x71, 0xff}}},\n    {{{   171,   1997,    258}, 0, {   -80,   2010}, {0x54, 0x3f, 0x46, 0xff}}},\n    {{{   260,   1997,    152}, 0, {   990,   2010}, {0x54, 0x3f, 0x46, 0xff}}},\n    {{{     0,   2509,      0}, 0, {   602,  -2566}, {0x54, 0x3f, 0x46, 0xff}}},\n    {{{   260,   1997,   -158}, 0, {     0,    990}, {0x4d, 0x3f, 0xb2, 0xff}}},\n    {{{   153,   1997,   -264}, 0, {  1132,    990}, {0x4d, 0x3f, 0xb2, 0xff}}},\n    {{{     0,   2509,      0}, 0, {   518,  -3586}, {0x4d, 0x3f, 0xb2, 0xff}}},\n    {{{   438,   1741,   -183}, 0, { -1154,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -437,   1792,    184}, 0, { -1154,    706}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -437,   1741,   -183}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -437,   1792,   -183}, 0, {   990,    706}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07007B78 - 0x07007C68\nstatic const Vtx wf_seg7_vertex_07007B78[] = {\n    {{{   184,   1792,   -437}, 0, { -1104,    706}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   184,   1741,   -437}, 0, { -1104,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   438,   1741,   -183}, 0, {   990,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   438,   1792,   -183}, 0, {   990,    706}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -183,   1792,   -437}, 0, { -1154,    706}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   184,   1741,   -437}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   184,   1792,   -437}, 0, {   990,    706}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -183,   1741,   -437}, 0, { -1154,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -437,   1792,   -183}, 0, { -1104,    706}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -183,   1741,   -437}, 0, {   990,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -183,   1792,   -437}, 0, {   990,    706}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -437,   1741,   -183}, 0, { -1104,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   438,   1792,    184}, 0, { -1104,    706}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   184,   1741,    438}, 0, {   990,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   184,   1792,    438}, 0, {   990,    706}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07007C68 - 0x07007D48\nstatic const Vtx wf_seg7_vertex_07007C68[] = {\n    {{{  -437,   1792,    184}, 0, { -1154,    706}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -437,   1741,    184}, 0, { -1154,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -437,   1741,   -183}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -183,   1792,    438}, 0, {  -516,    786}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -437,   1741,    184}, 0, {   990,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -437,   1792,    184}, 0, {   990,    786}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -183,   1741,    438}, 0, {  -516,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   184,   1792,    438}, 0, { -1154,    706}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -183,   1741,    438}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -183,   1792,    438}, 0, {   990,    706}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   184,   1741,    438}, 0, { -1154,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   438,   1792,    184}, 0, { -1104,    706}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   438,   1741,    184}, 0, { -1104,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{   184,   1741,    438}, 0, {   990,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x07007D48 - 0x07007E38\nstatic const Vtx wf_seg7_vertex_07007D48[] = {\n    {{{  -511,   1792,    215}, 0, {  -856,   1000}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -183,   1792,    438}, 0, {  1356,    718}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -437,   1792,    184}, 0, {  -738,    718}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   438,   1792,    184}, 0, {   594,    710}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,   1792,   -214}, 0, {  2858,    992}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   438,   1792,   -183}, 0, {  2740,    710}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,   1792,    215}, 0, {   474,    992}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   215,   1792,    512}, 0, { -1860,    994}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   438,   1792,    184}, 0, {   352,    720}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   184,   1792,    438}, 0, { -1742,    710}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,   1792,    215}, 0, {   466,   1002}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -214,   1792,    512}, 0, {   454,   1000}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   184,   1792,    438}, 0, {  2720,    718}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -183,   1792,    438}, 0, {   572,    718}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   215,   1792,    512}, 0, {  2838,   1000}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07007E38 - 0x07007F28\nstatic const Vtx wf_seg7_vertex_07007E38[] = {\n    {{{   215,   1792,   -511}, 0, {   466,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -214,   1792,   -511}, 0, {  2850,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -183,   1792,   -437}, 0, {  2732,    708}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,   1792,    215}, 0, {  -856,   1000}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -214,   1792,    512}, 0, {  1472,   1000}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -183,   1792,    438}, 0, {  1356,    718}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,   1792,   -214}, 0, {  -534,   1000}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -437,   1792,    184}, 0, {  1730,    718}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -437,   1792,   -183}, 0, {  -414,    718}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,   1792,    215}, 0, {  1850,   1000}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -214,   1792,   -511}, 0, {   466,    994}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,   1792,   -214}, 0, {  2796,    994}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -437,   1792,   -183}, 0, {  2678,    712}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -183,   1792,   -437}, 0, {   584,    712}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   184,   1792,   -437}, 0, {   586,    708}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07007F28 - 0x07007FA8\nstatic const Vtx wf_seg7_vertex_07007F28[] = {\n    {{{   512,   1792,   -214}, 0, {   464,    998}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   184,   1792,   -437}, 0, {  2676,    716}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   438,   1792,   -183}, 0, {   580,    716}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   215,   1792,   -511}, 0, {  2792,    998}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   215,   1792,   -511}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -214,   1536,   -511}, 0, {  2352,   1386}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -214,   1792,   -511}, 0, {  2352,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   215,   1536,   -511}, 0, {     0,   1386}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07007FA8 - 0x070080A8\nstatic const Vtx wf_seg7_vertex_07007FA8[] = {\n    {{{  -214,      0,    512}, 0, {   990,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -511,   1536,    215}, 0, {   -56,  -6674}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -511,      0,    215}, 0, {   -56,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -511,      0,   -214}, 0, {   990,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -511,   1536,   -214}, 0, {   990,  -6674}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -214,   1536,   -511}, 0, {   -56,  -6674}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -214,      0,   -511}, 0, {   -56,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -511,    205,    108}, 0, {   722,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,      0,    215}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,   1536,   -214}, 0, {   -82,  -6674}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,      0,    108}, 0, {   722,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,   1536,    215}, 0, {   990,  -6674}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -214,   1536,    512}, 0, {   990,  -6674}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   215,      0,   -511}, 0, {  1016,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   215,   1536,   -511}, 0, {  1016,  -6676}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   512,   1536,   -214}, 0, {     0,  -6676}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x070080A8 - 0x07008198\nstatic const Vtx wf_seg7_vertex_070080A8[] = {\n    {{{   215,      0,    512}, 0, {  1042,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   215,   1536,    512}, 0, {  1042,  -6674}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -214,   1536,    512}, 0, {     0,  -6674}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -214,      0,    512}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   512,      0,    215}, 0, {  1016,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   215,   1536,    512}, 0, {     0,  -6674}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   215,      0,    512}, 0, {     0,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   512,   1536,    215}, 0, {  1016,  -6674}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   512,      0,   -214}, 0, {  1042,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,   1536,   -214}, 0, {  1042,  -6676}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,   1536,    215}, 0, {     0,  -6676}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,      0,    215}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -511,    205,    108}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -306,      0,    108}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -511,      0,    108}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07008198 - 0x07008288\nstatic const Vtx wf_seg7_vertex_07008198[] = {\n    {{{   215,      0,   -511}, 0, {  1016,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   512,   1536,   -214}, 0, {     0,  -6676}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   512,      0,   -214}, 0, {     0,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -214,      0,   -511}, 0, {  1042,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -214,   1536,   -511}, 0, {  1042,  -6676}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   215,   1536,   -511}, 0, {     0,  -6676}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   215,      0,   -511}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -511,    205,   -107}, 0, {   186,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,    205,    108}, 0, {   722,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,   1536,   -214}, 0, {   -82,  -6674}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,      0,   -107}, 0, {   186,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -511,      0,   -214}, 0, {   -82,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -306,      0,   -107}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -306,      0,    108}, 0, {  1042,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -306,    205,    108}, 0, {  1042,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07008288 - 0x07008368\nstatic const Vtx wf_seg7_vertex_07008288[] = {\n    {{{  -511,    205,    108}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -306,    205,    108}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -306,      0,    108}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -511,    205,   -107}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -306,    205,    108}, 0, {  1042,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -511,    205,    108}, 0, {  1042,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -306,    205,   -107}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -511,      0,   -107}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -306,      0,   -107}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -306,    205,   -107}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,    205,   -107}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -306,      0,   -107}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -306,    205,    108}, 0, {  1042,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -306,    205,   -107}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07008368 - 0x070083E0\nstatic const Gfx wf_seg7_dl_07008368[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wf_seg7_texture_07001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wf_seg7_lights_07007590.l, 1),\n    gsSPLight(&wf_seg7_lights_07007590.a, 2),\n    gsSPVertex(wf_seg7_vertex_070075A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070083E0 - 0x07008468\nstatic const Gfx wf_seg7_dl_070083E0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_070076A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  3,  6,  7, 0x0),\n    gsSP2Triangles( 3,  7,  8, 0x0,  3,  8,  9, 0x0),\n    gsSP2Triangles( 3,  9, 10, 0x0,  0,  2, 11, 0x0),\n    gsSP2Triangles( 0, 11, 12, 0x0,  0, 12, 13, 0x0),\n    gsSP2Triangles( 0, 13, 14, 0x0,  0, 15,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008468 - 0x07008690\nstatic const Gfx wf_seg7_dl_07008468[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09009000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_070077A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(wf_seg7_vertex_07007898, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(wf_seg7_vertex_07007988, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wf_seg7_vertex_07007A78, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(wf_seg7_vertex_07007B78, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wf_seg7_vertex_07007C68, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(wf_seg7_vertex_07007D48, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(wf_seg7_vertex_07007E38, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(wf_seg7_vertex_07007F28, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008690 - 0x070087B0\nstatic const Gfx wf_seg7_dl_07008690[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_07007FA8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(wf_seg7_vertex_070080A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wf_seg7_vertex_07008198, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0,  9, 11, 10, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wf_seg7_vertex_07008288, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070087B0 - 0x07008838\nconst Gfx wf_seg7_dl_070087B0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_07008368),\n    gsSPDisplayList(wf_seg7_dl_070083E0),\n    gsSPDisplayList(wf_seg7_dl_07008468),\n    gsSPDisplayList(wf_seg7_dl_07008690),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/10/2.inc.c",
    "content": "// 0x07008838 - 0x07008850\nstatic const Lights1 wf_seg7_lights_07008838 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07008850 - 0x07008950\nstatic const Vtx wf_seg7_vertex_07008850[] = {\n    {{{   128,   1792,    128}, 0, {  1244,   1000}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   128,   2048,    128}, 0, {  1244,    -20}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -127,   2048,    128}, 0, {   222,    -20}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -127,   1792,   -127}, 0, {  1236,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   128,   2048,   -127}, 0, {   214,    -30}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   128,   1792,   -127}, 0, {   214,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -127,   2048,   -127}, 0, {  1236,    -30}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -127,   1792,    128}, 0, {  1226,    988}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -127,   2048,    128}, 0, {  1226,    -34}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -127,   2048,   -127}, 0, {   204,    -34}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -127,   1792,   -127}, 0, {   204,    988}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   128,   1792,   -127}, 0, {  1244,    996}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   128,   2048,   -127}, 0, {  1244,    -24}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   128,   2048,    128}, 0, {   222,    -24}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   128,   1792,    128}, 0, {   222,    996}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -127,   1792,    128}, 0, {   222,   1000}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07008950 - 0x070089F0\nstatic const Vtx wf_seg7_vertex_07008950[] = {\n    {{{   256,   2048,    256}, 0, {  4056,   4054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -255,   2048,    256}, 0, {  4056,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -255,   2048,   -255}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   256,   2048,   -255}, 0, {     0,   4054}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     0,   1792,   -537}, 0, {  -802,  -1362}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   466,   1792,    269}, 0, {  1056,   1858}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   466,   1792,   -268}, 0, {  1056,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -465,   1792,   -268}, 0, { -2662,   -288}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -465,   1792,    269}, 0, { -2662,   1858}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,   1792,    538}, 0, {  -802,   2932}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070089F0 - 0x07008AF0\nstatic const Vtx wf_seg7_vertex_070089F0[] = {\n    {{{   466,   1536,   -268}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   466,   1792,   -268}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   466,   1792,    269}, 0, {   -82,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -465,   1536,    269}, 0, {  1042,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -465,   1792,   -268}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -465,   1536,   -268}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -465,   1792,    269}, 0, {  1042,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,   1536,    538}, 0, {  1042,    990}, {0xc1, 0x00, 0x6d, 0xff}}},\n    {{{  -465,   1792,    269}, 0, {     0,      0}, {0xc1, 0x00, 0x6d, 0xff}}},\n    {{{  -465,   1536,    269}, 0, {     0,    990}, {0xc1, 0x00, 0x6d, 0xff}}},\n    {{{     0,   1792,    538}, 0, {  1042,      0}, {0xc1, 0x00, 0x6d, 0xff}}},\n    {{{   466,   1536,    269}, 0, {   990,    990}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{     0,   1792,    538}, 0, {   -82,      0}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{     0,   1536,    538}, 0, {   -82,    990}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{   466,   1792,    269}, 0, {   990,      0}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{   466,   1536,    269}, 0, {   -82,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07008AF0 - 0x07008BD0\nstatic const Vtx wf_seg7_vertex_07008AF0[] = {\n    {{{     0,   1536,   -537}, 0, {   990,    990}, {0x3f, 0x00, 0x93, 0xff}}},\n    {{{   466,   1792,   -268}, 0, {   -82,      0}, {0x3f, 0x00, 0x93, 0xff}}},\n    {{{   466,   1536,   -268}, 0, {   -82,    990}, {0x3f, 0x00, 0x93, 0xff}}},\n    {{{     0,   1792,   -537}, 0, {   990,      0}, {0x3f, 0x00, 0x93, 0xff}}},\n    {{{  -465,   1536,   -268}, 0, {  1042,    990}, {0xc1, 0x00, 0x93, 0xff}}},\n    {{{     0,   1792,   -537}, 0, {     0,      0}, {0xc1, 0x00, 0x93, 0xff}}},\n    {{{     0,   1536,   -537}, 0, {     0,    990}, {0xc1, 0x00, 0x93, 0xff}}},\n    {{{  -465,   1792,   -268}, 0, {  1042,      0}, {0xc1, 0x00, 0x93, 0xff}}},\n    {{{   256,   2048,   -255}, 0, { -1052,    990}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  -255,   2048,   -255}, 0, {  3034,    990}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{     0,   2560,      0}, 0, {   990,  -3580}, {0x00, 0x38, 0x8f, 0xff}}},\n    {{{  -255,   2048,    256}, 0, { -2414,    982}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{   256,   2048,    256}, 0, {  1672,    982}, {0x00, 0x38, 0x71, 0xff}}},\n    {{{     0,   2560,      0}, 0, {  -370,  -3588}, {0x00, 0x38, 0x71, 0xff}}},\n};\n\n// 0x07008BD0 - 0x07008C30\nstatic const Vtx wf_seg7_vertex_07008BD0[] = {\n    {{{  -255,   2048,   -255}, 0, {     0,    990}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{  -255,   2048,    256}, 0, {  4056,    990}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{     0,   2560,      0}, 0, {  2012,  -3580}, {0x8f, 0x38, 0x00, 0xff}}},\n    {{{   256,   2048,    256}, 0, {     0,    990}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{   256,   2048,   -255}, 0, {  4056,    990}, {0x71, 0x38, 0x00, 0xff}}},\n    {{{     0,   2560,      0}, 0, {  2012,  -3580}, {0x71, 0x38, 0x00, 0xff}}},\n};\n\n// 0x07008C30 - 0x07008D20\nstatic const Vtx wf_seg7_vertex_07008C30[] = {\n    {{{   466,      0,   -268}, 0, {  1246,   7120}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   466,   1536,    269}, 0, {   -94,   -544}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   466,      0,    269}, 0, {   -94,   7120}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -465,      0,    269}, 0, {  1246,   7120}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -465,   1536,    269}, 0, {  1246,   -542}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -465,   1536,   -268}, 0, {   -94,   -544}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -465,      0,   -268}, 0, {   -94,   7120}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,      0,    538}, 0, {  1246,   7120}, {0xc1, 0x00, 0x6d, 0xff}}},\n    {{{     0,   1536,    538}, 0, {  1246,   -542}, {0xc1, 0x00, 0x6d, 0xff}}},\n    {{{  -465,   1536,    269}, 0, {   -94,   -542}, {0xc1, 0x00, 0x6d, 0xff}}},\n    {{{  -465,      0,    269}, 0, {   -94,   7120}, {0xc1, 0x00, 0x6d, 0xff}}},\n    {{{   466,      0,    269}, 0, {  1246,   7120}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{   466,   1536,    269}, 0, {  1246,   -544}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{     0,   1536,    538}, 0, {   -94,   -544}, {0x3f, 0x00, 0x6d, 0xff}}},\n    {{{     0,      0,    538}, 0, {   -94,   7120}, {0x3f, 0x00, 0x6d, 0xff}}},\n};\n\n// 0x07008D20 - 0x07008DD0\nstatic const Vtx wf_seg7_vertex_07008D20[] = {\n    {{{  -465,      0,   -268}, 0, {  1246,   7120}, {0xc1, 0x00, 0x93, 0xff}}},\n    {{{  -465,   1536,   -268}, 0, {  1246,   -544}, {0xc1, 0x00, 0x93, 0xff}}},\n    {{{     0,   1536,   -537}, 0, {   -94,   -544}, {0xc1, 0x00, 0x93, 0xff}}},\n    {{{   466,      0,   -268}, 0, {  1246,   7120}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   466,   1536,   -268}, 0, {  1246,   -544}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   466,   1536,    269}, 0, {   -94,   -544}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,      0,   -537}, 0, {  1246,   7120}, {0x3f, 0x00, 0x93, 0xff}}},\n    {{{     0,   1536,   -537}, 0, {  1246,   -542}, {0x3f, 0x00, 0x93, 0xff}}},\n    {{{   466,   1536,   -268}, 0, {   -94,   -544}, {0x3f, 0x00, 0x93, 0xff}}},\n    {{{   466,      0,   -268}, 0, {   -94,   7120}, {0x3f, 0x00, 0x93, 0xff}}},\n    {{{     0,      0,   -537}, 0, {   -94,   7120}, {0xc1, 0x00, 0x93, 0xff}}},\n};\n\n// 0x07008DD0 - 0x07008E48\nstatic const Gfx wf_seg7_dl_07008DD0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wf_seg7_texture_07001800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wf_seg7_lights_07008838.l, 1),\n    gsSPLight(&wf_seg7_lights_07008838.a, 2),\n    gsSPVertex(wf_seg7_vertex_07008850, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008E48 - 0x07008EA0\nstatic const Gfx wf_seg7_dl_07008E48[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_07008950, 10, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 4,  8,  9, 0x0,  4,  9,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008EA0 - 0x07008F58\nstatic const Gfx wf_seg7_dl_07008EA0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09009000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_070089F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(wf_seg7_vertex_07008AF0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(wf_seg7_vertex_07008BD0, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008F58 - 0x07008FE8\nstatic const Gfx wf_seg7_dl_07008F58[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_07008C30, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(wf_seg7_vertex_07008D20, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP1Triangle( 0,  2, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07008FE8 - 0x07009070\nconst Gfx wf_seg7_dl_07008FE8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_07008DD0),\n    gsSPDisplayList(wf_seg7_dl_07008E48),\n    gsSPDisplayList(wf_seg7_dl_07008EA0),\n    gsSPDisplayList(wf_seg7_dl_07008F58),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/10/collision.inc.c",
    "content": "// 0x0700FE14 - 0x0701025E\nconst Collision wf_seg7_collision_tower[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x41),\n    COL_VERTEX(-437, 1792, 184),\n    COL_VERTEX(-437, 1741, 184),\n    COL_VERTEX(-437, 1741, -183),\n    COL_VERTEX(-183, 1792, 438),\n    COL_VERTEX(-183, 1741, 438),\n    COL_VERTEX(-127, 1741, -127),\n    COL_VERTEX(-127, 1741, 128),\n    COL_VERTEX(-127, 1997, 128),\n    COL_VERTEX(-127, 1997, -127),\n    COL_VERTEX(128, 1741, 128),\n    COL_VERTEX(184, 1741, 438),\n    COL_VERTEX(128, 1997, -127),\n    COL_VERTEX(128, 1741, -127),\n    COL_VERTEX(-183, 1741, -437),\n    COL_VERTEX(-437, 1792, -183),\n    COL_VERTEX(-183, 1792, -437),\n    COL_VERTEX(184, 1741, -437),\n    COL_VERTEX(128, 1997, 128),\n    COL_VERTEX(438, 1741, -183),\n    COL_VERTEX(184, 1792, -437),\n    COL_VERTEX(438, 1792, -183),\n    COL_VERTEX(438, 1741, 184),\n    COL_VERTEX(438, 1792, 184),\n    COL_VERTEX(184, 1792, 438),\n    COL_VERTEX(-263, 1997, -158),\n    COL_VERTEX(0, 2509, 0),\n    COL_VERTEX(-157, 1997, -264),\n    COL_VERTEX(153, 1997, -264),\n    COL_VERTEX(-157, 1997, 258),\n    COL_VERTEX(-263, 1997, 152),\n    COL_VERTEX(171, 1997, 258),\n    COL_VERTEX(260, 1997, 152),\n    COL_VERTEX(260, 1997, -158),\n    COL_VERTEX(215, 1792, 512),\n    COL_VERTEX(-214, 1792, 512),\n    COL_VERTEX(512, 1792, 215),\n    COL_VERTEX(-511, 0, -214),\n    COL_VERTEX(-511, 0, 215),\n    COL_VERTEX(-214, 0, -511),\n    COL_VERTEX(-511, 205, 108),\n    COL_VERTEX(-214, 0, 512),\n    COL_VERTEX(215, 0, 512),\n    COL_VERTEX(512, 0, 215),\n    COL_VERTEX(512, 0, -214),\n    COL_VERTEX(215, 0, -511),\n    COL_VERTEX(512, 1792, -214),\n    COL_VERTEX(215, 1792, -511),\n    COL_VERTEX(-214, 1792, -511),\n    COL_VERTEX(-511, 1536, -214),\n    COL_VERTEX(-511, 205, -107),\n    COL_VERTEX(-511, 1792, -214),\n    COL_VERTEX(-511, 1792, 215),\n    COL_VERTEX(-511, 0, -107),\n    COL_VERTEX(-306, 0, -107),\n    COL_VERTEX(215, 1536, 512),\n    COL_VERTEX(512, 1536, 215),\n    COL_VERTEX(512, 1536, -214),\n    COL_VERTEX(-214, 1536, 512),\n    COL_VERTEX(-214, 1536, -511),\n    COL_VERTEX(215, 1536, -511),\n    COL_VERTEX(-511, 1536, 215),\n    COL_VERTEX(-511, 0, 108),\n    COL_VERTEX(-306, 0, 108),\n    COL_VERTEX(-306, 205, 108),\n    COL_VERTEX(-306, 205, -107),\n    COL_TRI_INIT(SURFACE_DEFAULT, 116),\n    COL_TRI(13, 5, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(3, 4, 1),\n    COL_TRI(3, 1, 0),\n    COL_TRI(1, 5, 2),\n    COL_TRI(1, 6, 5),\n    COL_TRI(4, 6, 1),\n    COL_TRI(6, 7, 8),\n    COL_TRI(9, 7, 6),\n    COL_TRI(6, 8, 5),\n    COL_TRI(10, 9, 6),\n    COL_TRI(10, 6, 4),\n    COL_TRI(5, 11, 12),\n    COL_TRI(5, 8, 11),\n    COL_TRI(2, 5, 13),\n    COL_TRI(0, 2, 14),\n    COL_TRI(14, 2, 13),\n    COL_TRI(14, 13, 15),\n    COL_TRI(15, 13, 16),\n    COL_TRI(13, 12, 16),\n    COL_TRI(12, 17, 9),\n    COL_TRI(12, 11, 17),\n    COL_TRI(18, 12, 9),\n    COL_TRI(16, 12, 18),\n    COL_TRI(15, 16, 19),\n    COL_TRI(19, 16, 18),\n    COL_TRI(19, 18, 20),\n    COL_TRI(20, 18, 21),\n    COL_TRI(18, 9, 21),\n    COL_TRI(9, 17, 7),\n    COL_TRI(21, 9, 10),\n    COL_TRI(22, 21, 10),\n    COL_TRI(20, 21, 22),\n    COL_TRI(23, 10, 4),\n    COL_TRI(22, 10, 23),\n    COL_TRI(23, 4, 3),\n    COL_TRI(24, 29, 25),\n    COL_TRI(25, 26, 24),\n    COL_TRI(8, 24, 26),\n    COL_TRI(24, 8, 7),\n    COL_TRI(24, 7, 29),\n    COL_TRI(8, 26, 27),\n    COL_TRI(8, 27, 11),\n    COL_TRI(28, 7, 17),\n    COL_TRI(29, 7, 28),\n    COL_TRI(25, 29, 28),\n    COL_TRI(30, 25, 28),\n    COL_TRI(28, 17, 30),\n    COL_TRI(17, 31, 30),\n    COL_TRI(11, 31, 17),\n    COL_TRI(30, 31, 25),\n    COL_TRI(32, 25, 31),\n    COL_TRI(11, 32, 31),\n    COL_TRI(27, 32, 11),\n    COL_TRI(32, 27, 25),\n    COL_TRI(25, 27, 26),\n    COL_TRI(33, 35, 22),\n    COL_TRI(36, 58, 38),\n    COL_TRI(34, 54, 33),\n    COL_TRI(33, 54, 55),\n    COL_TRI(33, 55, 35),\n    COL_TRI(34, 57, 54),\n    COL_TRI(35, 55, 56),\n    COL_TRI(22, 35, 45),\n    COL_TRI(35, 56, 45),\n    COL_TRI(36, 48, 58),\n    COL_TRI(37, 60, 48),\n    COL_TRI(38, 58, 59),\n    COL_TRI(38, 59, 44),\n    COL_TRI(39, 37, 48),\n    COL_TRI(39, 61, 37),\n    COL_TRI(40, 60, 37),\n    COL_TRI(40, 57, 60),\n    COL_TRI(41, 57, 40),\n    COL_TRI(45, 59, 46),\n    COL_TRI(41, 54, 57),\n    COL_TRI(42, 54, 41),\n    COL_TRI(42, 55, 54),\n    COL_TRI(43, 55, 42),\n    COL_TRI(43, 56, 55),\n    COL_TRI(44, 56, 43),\n    COL_TRI(44, 59, 56),\n    COL_TRI(45, 56, 59),\n    COL_TRI(22, 45, 20),\n    COL_TRI(50, 48, 60),\n    COL_TRI(45, 46, 19),\n    COL_TRI(46, 47, 15),\n    COL_TRI(46, 15, 19),\n    COL_TRI(47, 14, 15),\n    COL_TRI(47, 50, 14),\n    COL_TRI(47, 58, 48),\n    COL_TRI(47, 48, 50),\n    COL_TRI(48, 52, 49),\n    COL_TRI(49, 39, 48),\n    COL_TRI(48, 36, 52),\n    COL_TRI(34, 23, 3),\n    COL_TRI(34, 33, 23),\n    COL_TRI(45, 19, 20),\n    COL_TRI(50, 51, 0),\n    COL_TRI(50, 0, 14),\n    COL_TRI(50, 60, 51),\n    COL_TRI(51, 60, 57),\n    COL_TRI(51, 34, 3),\n    COL_TRI(51, 3, 0),\n    COL_TRI(51, 57, 34),\n    COL_TRI(53, 63, 64),\n    COL_TRI(33, 22, 23),\n    COL_TRI(46, 59, 58),\n    COL_TRI(46, 58, 47),\n    COL_TRI(52, 64, 49),\n    COL_TRI(52, 53, 64),\n    COL_TRI(49, 64, 63),\n    COL_TRI(49, 63, 39),\n    COL_TRI(39, 62, 61),\n    COL_TRI(39, 63, 62),\n    COL_TRI(53, 62, 63),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/10/geo.inc.c",
    "content": "// 0x0E0008A8\nconst GeoLayout wf_geo_0008A8[] = {\n    GEO_CULLING_RADIUS(2700),\n    GEO_OPEN_NODE(),\n        GEO_RENDER_RANGE(-2048, 5000),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, wf_seg7_dl_070087B0),\n        GEO_CLOSE_NODE(),\n        GEO_RENDER_RANGE(5000, 32767),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, wf_seg7_dl_07008FE8),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/11/collision.inc.c",
    "content": "// 0x07010260 - 0x070102D8\nconst Collision wf_seg7_collision_bullet_bill_cannon[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-127, 0, -127),\n    COL_VERTEX(128, 256, -127),\n    COL_VERTEX(128, 0, -127),\n    COL_VERTEX(128, 256, 179),\n    COL_VERTEX(128, 0, 179),\n    COL_VERTEX(-127, 256, -127),\n    COL_VERTEX(-127, 256, 179),\n    COL_VERTEX(-127, 0, 179),\n    COL_TRI_INIT(SURFACE_DEFAULT, 10),\n    COL_TRI(0, 1, 2),\n    COL_TRI(2, 1, 3),\n    COL_TRI(2, 3, 4),\n    COL_TRI(0, 5, 1),\n    COL_TRI(5, 3, 1),\n    COL_TRI(5, 6, 3),\n    COL_TRI(4, 3, 6),\n    COL_TRI(4, 6, 7),\n    COL_TRI(7, 6, 5),\n    COL_TRI(7, 5, 0),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/11/geo.inc.c",
    "content": "// 0x0E0008E8\nconst GeoLayout wf_geo_0008E8[] = {\n    GEO_CULLING_RADIUS(400),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, wf_seg7_dl_07009278),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/11/model.inc.c",
    "content": "// 0x07009070 - 0x07009088\nstatic const Lights1 wf_seg7_lights_07009070 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07009088 - 0x070090C8\nstatic const Vtx wf_seg7_vertex_07009088[] = {\n    {{{  -127,      0,   -127}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   128,    256,   -127}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   128,      0,   -127}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -127,    256,   -127}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x070090C8 - 0x070091C8\nstatic const Vtx wf_seg7_vertex_070090C8[] = {\n    {{{  -127,      0,    179}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -127,    256,    179}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -127,    256,   -127}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   128,      0,   -127}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   128,    256,   -127}, 0, {   990,    -30}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   128,    256,    179}, 0, {     0,    -30}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   128,      0,    179}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -127,    256,   -127}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -127,    256,    179}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   128,    256,    179}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   128,    256,   -127}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   128,      0,    179}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -127,    256,    179}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -127,      0,    179}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   128,    256,    179}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -127,      0,   -127}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070091C8 - 0x07009210\nstatic const Gfx wf_seg7_dl_070091C8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wf_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wf_seg7_lights_07009070.l, 1),\n    gsSPLight(&wf_seg7_lights_07009070.a, 2),\n    gsSPVertex(wf_seg7_vertex_07009088, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009210 - 0x07009278\nstatic const Gfx wf_seg7_dl_07009210[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wf_seg7_texture_07001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_070090C8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0,  2, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009278 - 0x070092F0\nconst Gfx wf_seg7_dl_07009278[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_070091C8),\n    gsSPDisplayList(wf_seg7_dl_07009210),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/12/1.inc.c",
    "content": "// 0x070092F0 - 0x07009308\nstatic const Lights1 wf_seg7_lights_070092F0 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07009308 - 0x070093F8\nstatic const Vtx wf_seg7_vertex_07009308[] = {\n    {{{  -255,    282,  -1151}, 0, {  4822,      0}, {0x08, 0x7b, 0x1c, 0xff}}},\n    {{{  -127,    160,   -654}, 0, {  3800,    224}, {0x08, 0x7b, 0x1c, 0xff}}},\n    {{{     0,    180,   -778}, 0, {  4052,    478}, {0x08, 0x7b, 0x1c, 0xff}}},\n    {{{  -255,   -281,   1152}, 0, {    88,      0}, {0x00, 0x7a, 0x22, 0xff}}},\n    {{{   256,   -281,   1152}, 0, {    88,    990}, {0x00, 0x7a, 0x22, 0xff}}},\n    {{{  -127,   -193,    837}, 0, {   740,    224}, {0x00, 0x7a, 0x22, 0xff}}},\n    {{{  -255,   -281,   1152}, 0, {    88,      0}, {0xf6, 0x7a, 0x1e, 0xff}}},\n    {{{  -127,   -193,    837}, 0, {   740,    224}, {0xf6, 0x7a, 0x1e, 0xff}}},\n    {{{  -255,      8,    -32}, 0, {  2524,      0}, {0xf6, 0x7a, 0x1e, 0xff}}},\n    {{{  -127,   -193,    837}, 0, {   740,    224}, {0x2d, 0x72, 0x1e, 0xff}}},\n    {{{     0,    -42,     91}, 0, {  2258,    478}, {0x2d, 0x72, 0x1e, 0xff}}},\n    {{{  -127,      8,     91}, 0, {  2282,    224}, {0x2d, 0x72, 0x1e, 0xff}}},\n    {{{   128,   -194,    713}, 0, {   980,    734}, {0x0d, 0x7b, 0x1b, 0xff}}},\n    {{{     0,    -42,     91}, 0, {  2258,    478}, {0x0d, 0x7b, 0x1b, 0xff}}},\n    {{{  -127,   -193,    837}, 0, {   740,    224}, {0x0d, 0x7b, 0x1b, 0xff}}},\n};\n\n// 0x070093F8 - 0x070094E8\nstatic const Vtx wf_seg7_vertex_070093F8[] = {\n    {{{   256,   -281,   1152}, 0, {    88,    990}, {0x0a, 0x7c, 0x15, 0xff}}},\n    {{{   128,   -194,    713}, 0, {   980,    734}, {0x0a, 0x7c, 0x15, 0xff}}},\n    {{{  -127,   -193,    837}, 0, {   740,    224}, {0x0a, 0x7c, 0x15, 0xff}}},\n    {{{  -127,   -193,    837}, 0, {   740,    224}, {0xe2, 0x76, 0x20, 0xff}}},\n    {{{  -127,      8,     91}, 0, {  2282,    224}, {0xe2, 0x76, 0x20, 0xff}}},\n    {{{  -255,      8,    -32}, 0, {  2524,      0}, {0xe2, 0x76, 0x20, 0xff}}},\n    {{{  -127,    160,   -654}, 0, {  3800,    224}, {0x00, 0x7b, 0x1e, 0xff}}},\n    {{{  -255,    282,  -1151}, 0, {  4822,      0}, {0x00, 0x7b, 0x1e, 0xff}}},\n    {{{  -255,      8,    -32}, 0, {  2524,      0}, {0x00, 0x7b, 0x1e, 0xff}}},\n    {{{  -127,      8,     91}, 0, {  2282,    224}, {0xe9, 0x7a, 0x18, 0xff}}},\n    {{{  -127,    160,   -654}, 0, {  3800,    224}, {0xe9, 0x7a, 0x18, 0xff}}},\n    {{{  -255,      8,    -32}, 0, {  2524,      0}, {0xe9, 0x7a, 0x18, 0xff}}},\n    {{{   256,   -281,   1152}, 0, {    88,    990}, {0xdb, 0x75, 0x1c, 0xff}}},\n    {{{   256,    282,  -1151}, 0, {  4822,    990}, {0xdb, 0x75, 0x1c, 0xff}}},\n    {{{   128,     28,   -281}, 0, {  3014,    734}, {0xdb, 0x75, 0x1c, 0xff}}},\n};\n\n// 0x070094E8 - 0x070095D8\nstatic const Vtx wf_seg7_vertex_070094E8[] = {\n    {{{   256,   -281,   1152}, 0, {    88,    990}, {0xf6, 0x7b, 0x1b, 0xff}}},\n    {{{   128,     28,   -281}, 0, {  3014,    734}, {0xf6, 0x7b, 0x1b, 0xff}}},\n    {{{   128,   -194,    713}, 0, {   980,    734}, {0xf6, 0x7b, 0x1b, 0xff}}},\n    {{{   256,    282,  -1151}, 0, {  4822,    990}, {0x00, 0x7a, 0x21, 0xff}}},\n    {{{  -255,    282,  -1151}, 0, {  4822,      0}, {0x00, 0x7a, 0x21, 0xff}}},\n    {{{     0,    180,   -778}, 0, {  4052,    478}, {0x00, 0x7a, 0x21, 0xff}}},\n    {{{   256,    282,  -1151}, 0, {  4822,    990}, {0x1c, 0x75, 0x26, 0xff}}},\n    {{{     0,     99,   -405}, 0, {  3290,    478}, {0x1c, 0x75, 0x26, 0xff}}},\n    {{{   128,     28,   -281}, 0, {  3014,    734}, {0x1c, 0x75, 0x26, 0xff}}},\n    {{{   256,    282,  -1151}, 0, {  4822,    990}, {0xf6, 0x7b, 0x1a, 0xff}}},\n    {{{     0,    180,   -778}, 0, {  4052,    478}, {0xf6, 0x7b, 0x1a, 0xff}}},\n    {{{     0,     99,   -405}, 0, {  3290,    478}, {0xf6, 0x7b, 0x1a, 0xff}}},\n    {{{     0,     99,   -405}, 0, {  3290,    478}, {0x27, 0x75, 0x1a, 0xff}}},\n    {{{   128,   -194,    713}, 0, {   980,    734}, {0x27, 0x75, 0x1a, 0xff}}},\n    {{{   128,     28,   -281}, 0, {  3014,    734}, {0x27, 0x75, 0x1a, 0xff}}},\n};\n\n// 0x070095D8 - 0x07009698\nstatic const Vtx wf_seg7_vertex_070095D8[] = {\n    {{{  -127,    160,   -654}, 0, {  3800,    224}, {0x06, 0x7b, 0x1a, 0xff}}},\n    {{{     0,     99,   -405}, 0, {  3290,    478}, {0x06, 0x7b, 0x1a, 0xff}}},\n    {{{     0,    180,   -778}, 0, {  4052,    478}, {0x06, 0x7b, 0x1a, 0xff}}},\n    {{{  -127,    160,   -654}, 0, {  3800,    224}, {0xf7, 0x79, 0x22, 0xff}}},\n    {{{     0,    -42,     91}, 0, {  2258,    478}, {0xf7, 0x79, 0x22, 0xff}}},\n    {{{     0,     99,   -405}, 0, {  3290,    478}, {0xf7, 0x79, 0x22, 0xff}}},\n    {{{     0,     99,   -405}, 0, {  3290,    478}, {0xe9, 0x78, 0x22, 0xff}}},\n    {{{     0,    -42,     91}, 0, {  2258,    478}, {0xe9, 0x78, 0x22, 0xff}}},\n    {{{   128,   -194,    713}, 0, {   980,    734}, {0xe9, 0x78, 0x22, 0xff}}},\n    {{{     0,    -42,     91}, 0, {  2258,    478}, {0x2d, 0x74, 0x17, 0xff}}},\n    {{{  -127,    160,   -654}, 0, {  3800,    224}, {0x2d, 0x74, 0x17, 0xff}}},\n    {{{  -127,      8,     91}, 0, {  2282,    224}, {0x2d, 0x74, 0x17, 0xff}}},\n};\n\n// 0x07009698 - 0x07009780\nstatic const Gfx wf_seg7_dl_07009698[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wf_seg7_lights_070092F0.l, 1),\n    gsSPLight(&wf_seg7_lights_070092F0.a, 2),\n    gsSPVertex(wf_seg7_vertex_07009308, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wf_seg7_vertex_070093F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wf_seg7_vertex_070094E8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wf_seg7_vertex_070095D8, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009780 - 0x070097F0\nconst Gfx wf_seg7_dl_07009780[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_07009698),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/12/2.inc.c",
    "content": "// 0x070097F0 - 0x07009808\nstatic const Lights1 wf_seg7_lights_070097F0 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07009808 - 0x07009848\nstatic const Vtx wf_seg7_vertex_07009808[] = {\n    {{{  -255,   -281,   1152}, 0, {     0,   1124}, {0x00, 0x7b, 0x1e, 0xff}}},\n    {{{   256,    282,  -1151}, 0, {   990,  -3608}, {0x00, 0x7b, 0x1e, 0xff}}},\n    {{{  -255,    282,  -1151}, 0, {     0,  -3608}, {0x00, 0x7b, 0x1e, 0xff}}},\n    {{{   256,   -281,   1152}, 0, {   990,   1124}, {0x00, 0x7b, 0x1e, 0xff}}},\n};\n\n// 0x07009848 - 0x07009890\nstatic const Gfx wf_seg7_dl_07009848[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wf_seg7_lights_070097F0.l, 1),\n    gsSPLight(&wf_seg7_lights_070097F0.a, 2),\n    gsSPVertex(wf_seg7_vertex_07009808, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009890 - 0x07009900\nconst Gfx wf_seg7_dl_07009890[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_07009848),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/12/geo.inc.c",
    "content": "// 0x0E000900\nconst GeoLayout wf_geo_000900[] = {\n    GEO_CULLING_RADIUS(1600),\n    GEO_OPEN_NODE(),\n        GEO_RENDER_RANGE(-2048, 5000),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, wf_seg7_dl_07009780),\n        GEO_CLOSE_NODE(),\n        GEO_RENDER_RANGE(5000, 32767),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, wf_seg7_dl_07009890),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/13/geo.inc.c",
    "content": "// 0x0E000940\nconst GeoLayout wf_geo_000940[] = {\n    GEO_CULLING_RADIUS(800),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, wf_seg7_dl_07009DB0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/13/model.inc.c",
    "content": "// 0x07009900 - 0x07009918\nstatic const Lights1 wf_seg7_lights_07009900 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07009918 - 0x07009958\nstatic const Vtx wf_seg7_vertex_07009918[] = {\n    {{{   794,     38,   -255}, 0, { 22452,   6606}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   128,     38,   -255}, 0, { 20408,   6606}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   128,     38,    512}, 0, { 20408,   8650}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   794,     38,    512}, 0, { 22452,   8650}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07009958 - 0x07009A48\nstatic const Vtx wf_seg7_vertex_07009958[] = {\n    {{{   794,    -89,    512}, 0, { -3096,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   128,    -89,   -255}, 0, {   990,  -3098}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   794,    -89,   -255}, 0, { -3096,  -3098}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   794,     38,    512}, 0, {     0,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   794,    -89,    512}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   794,    -89,   -255}, 0, {  2012,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   794,     38,   -255}, 0, {  2012,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   128,     38,    512}, 0, {     0,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   128,    -89,    512}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   794,    -89,    512}, 0, {  2012,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   794,     38,    512}, 0, {  2012,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   128,     38,   -255}, 0, { -1052,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   128,    -89,   -255}, 0, { -1052,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   128,    -89,    512}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   128,     38,    512}, 0, {   990,    478}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07009A48 - 0x07009AB8\nstatic const Vtx wf_seg7_vertex_07009A48[] = {\n    {{{   794,     38,   -255}, 0, {     0,    478}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   128,    -89,   -255}, 0, {  2012,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   128,     38,   -255}, 0, {  2012,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   794,    -89,    512}, 0, { -3096,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   128,    -89,    512}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   128,    -89,   -255}, 0, {   990,  -3098}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   794,    -89,   -255}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07009AB8 - 0x07009BA8\nstatic const Vtx wf_seg7_vertex_07009AB8[] = {\n    {{{  -666,     38,   -178}, 0, {  7122,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -666,     63,   -178}, 0, {  7122,    582}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   358,     63,   -178}, 0, {     0,    582}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -666,     38,    -76}, 0, {   990,    376}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -666,     63,    -76}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -666,     63,   -178}, 0, {   172,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -666,     38,   -178}, 0, {   172,    376}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   358,     63,   -178}, 0, {  4568,  -1310}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -666,     63,   -178}, 0, {-13316,  -1310}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -666,     63,    -76}, 0, {-13316,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   358,     63,    -76}, 0, {  4568,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   358,     38,    -76}, 0, {  2012,   1396}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   358,     63,    -76}, 0, {  2012,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -666,     63,    -76}, 0, { -5140,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -666,     38,    -76}, 0, { -5140,   1396}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x07009BA8 - 0x07009C58\nstatic const Vtx wf_seg7_vertex_07009BA8[] = {\n    {{{   358,     38,   -178}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   358,     63,   -178}, 0, {   990,    582}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   358,     63,    -76}, 0, {     0,    582}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -666,     38,   -178}, 0, {  7122,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   358,     63,   -178}, 0, {     0,    582}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   358,     38,   -178}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   358,     38,    -76}, 0, {  4568,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -666,     38,    -76}, 0, {-13316,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -666,     38,   -178}, 0, {-13316,  -1310}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   358,     38,   -178}, 0, {  4568,  -1310}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   358,     38,    -76}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07009C58 - 0x07009CA0\nstatic const Gfx wf_seg7_dl_07009C58[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wf_seg7_lights_07009900.l, 1),\n    gsSPLight(&wf_seg7_lights_07009900.a, 2),\n    gsSPVertex(wf_seg7_vertex_07009918, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009CA0 - 0x07009D20\nstatic const Gfx wf_seg7_dl_07009CA0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_07009958, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(wf_seg7_vertex_07009A48, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  6,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009D20 - 0x07009DB0\nstatic const Gfx wf_seg7_dl_07009D20[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09006800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_07009AB8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(wf_seg7_vertex_07009BA8, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP1Triangle( 0,  2, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009DB0 - 0x07009E30\nconst Gfx wf_seg7_dl_07009DB0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_07009C58),\n    gsSPDisplayList(wf_seg7_dl_07009CA0),\n    gsSPDisplayList(wf_seg7_dl_07009D20),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/14/geo.inc.c",
    "content": "// 0x0E000AE0\nconst GeoLayout wf_geo_000AE0[] = {\n    GEO_CULLING_RADIUS(2000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, wf_seg7_dl_0700A170),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/14/model.inc.c",
    "content": "// 0x07009E30 - 0x07009E48\nstatic const Lights1 wf_seg7_lights_07009E30 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07009E48 - 0x07009F48\nstatic const Vtx wf_seg7_vertex_07009E48[] = {\n    {{{    15,      0,      0}, 0, {  1502,    990}, {0x6f, 0x00, 0x3c, 0xff}}},\n    {{{     8,   2100,     13}, 0, {   990, -19972}, {0x6f, 0x00, 0x3c, 0xff}}},\n    {{{     8,      0,     13}, 0, {   990,    990}, {0x6f, 0x00, 0x3c, 0xff}}},\n    {{{    -7,   2100,    -12}, 0, {   156,   1020}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -14,   2100,      0}, 0, {   768,   1020}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    -7,   2100,     13}, 0, {  1076,    490}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     8,   2100,     13}, 0, {   768,    -40}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    15,   2100,      0}, 0, {   156,    -40}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     8,   2100,    -12}, 0, {  -150,    490}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     8,      0,     13}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -7,   2100,     13}, 0, {   480, -19972}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -7,      0,     13}, 0, {   480,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -7,      0,     13}, 0, {   480,    990}, {0x91, 0x00, 0x3c, 0xff}}},\n    {{{   -14,   2100,      0}, 0, {     0, -19972}, {0x91, 0x00, 0x3c, 0xff}}},\n    {{{   -14,      0,      0}, 0, {     0,    990}, {0x91, 0x00, 0x3c, 0xff}}},\n    {{{    -7,   2100,     13}, 0, {   480, -19972}, {0x91, 0x00, 0x3c, 0xff}}},\n};\n\n// 0x07009F48 - 0x0700A048\nstatic const Vtx wf_seg7_vertex_07009F48[] = {\n    {{{     8,      0,     13}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{     8,   2100,     13}, 0, {   990, -19972}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -7,   2100,     13}, 0, {   480, -19972}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -14,      0,      0}, 0, {  3034,    990}, {0x93, 0x00, 0xc1, 0xff}}},\n    {{{   -14,   2100,      0}, 0, {  3034, -19972}, {0x93, 0x00, 0xc1, 0xff}}},\n    {{{    -7,   2100,    -12}, 0, {  2524, -19972}, {0x93, 0x00, 0xc1, 0xff}}},\n    {{{    15,      0,      0}, 0, {  1502,    990}, {0x6f, 0x00, 0x3c, 0xff}}},\n    {{{    15,   2100,      0}, 0, {  1502, -19972}, {0x6f, 0x00, 0x3c, 0xff}}},\n    {{{     8,   2100,     13}, 0, {   990, -19972}, {0x6f, 0x00, 0x3c, 0xff}}},\n    {{{     8,      0,    -12}, 0, {  2012,    990}, {0x6d, 0x00, 0xc1, 0xff}}},\n    {{{    15,   2100,      0}, 0, {  1502, -19972}, {0x6d, 0x00, 0xc1, 0xff}}},\n    {{{    15,      0,      0}, 0, {  1502,    990}, {0x6d, 0x00, 0xc1, 0xff}}},\n    {{{     8,   2100,    -12}, 0, {  2012, -19972}, {0x6d, 0x00, 0xc1, 0xff}}},\n    {{{    -7,      0,    -12}, 0, {  2524,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     8,   2100,    -12}, 0, {  2012, -19972}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     8,      0,    -12}, 0, {  2012,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700A048 - 0x0700A0A8\nstatic const Vtx wf_seg7_vertex_0700A048[] = {\n    {{{    -7,      0,    -12}, 0, {  2524,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    -7,   2100,    -12}, 0, {  2524, -19972}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     8,   2100,    -12}, 0, {  2012, -19972}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -14,      0,      0}, 0, {  3034,    990}, {0x93, 0x00, 0xc1, 0xff}}},\n    {{{    -7,   2100,    -12}, 0, {  2524, -19972}, {0x93, 0x00, 0xc1, 0xff}}},\n    {{{    -7,      0,    -12}, 0, {  2524,    990}, {0x93, 0x00, 0xc1, 0xff}}},\n};\n\n// 0x0700A0A8 - 0x0700A170\nstatic const Gfx wf_seg7_dl_0700A0A8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wf_seg7_lights_07009E30.l, 1),\n    gsSPLight(&wf_seg7_lights_07009E30.a, 2),\n    gsSPVertex(wf_seg7_vertex_07009E48, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  3,  6,  7, 0x0),\n    gsSP2Triangles( 3,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(wf_seg7_vertex_07009F48, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(wf_seg7_vertex_0700A048, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A170 - 0x0700A1E0\nconst Gfx wf_seg7_dl_0700A170[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_0700A0A8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/15/1.inc.c",
    "content": "// 0x0700A1E0 - 0x0700A1F8\nstatic const Lights1 wf_seg7_lights_0700A1E0 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700A1F8 - 0x0700A2E8\nstatic const Vtx wf_seg7_vertex_0700A1F8[] = {\n    {{{ -1023,   -153,    768}, 0, {  1414,    478}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1535,    102,    256}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1535,   -153,    256}, 0, {     0,    478}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1536,    102,   -767}, 0, { -7184,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1536,    102,    256}, 0, { -9228,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1536,   -153,    256}, 0, { -9228,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1536,   -153,   -767}, 0, { -7184,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1536,   -153,    256}, 0, {   990,    478}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1536,    102,    256}, 0, {   990,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1024,    102,    768}, 0, {  -454,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1024,   -153,    768}, 0, {  -454,    478}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{ -1535,   -153,    256}, 0, {   990,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1535,    102,   -767}, 0, { -1052,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1535,   -153,   -767}, 0, { -1052,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{ -1535,    102,    256}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700A2E8 - 0x0700A358\nstatic const Vtx wf_seg7_vertex_0700A2E8[] = {\n    {{{  1024,   -153,    768}, 0, {   990,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1023,    102,    768}, 0, { -3096,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1023,   -153,    768}, 0, { -3096,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{ -1023,   -153,    768}, 0, {  1414,    478}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1023,    102,    768}, 0, {  1414,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{ -1535,    102,    256}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1024,    102,    768}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0700A358 - 0x0700A3B8\nstatic const Vtx wf_seg7_vertex_0700A358[] = {\n    {{{  1536,    102,   -767}, 0, {   990,   5076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,    102,    768}, 0, { -2074,   1244}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,    102,    768}, 0, { -2074,   5332}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,    102,    256}, 0, { -1052,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,    102,    256}, 0, { -1052,   6354}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,    102,   -767}, 0, {   990,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700A3B8 - 0x0700A4A8\nstatic const Vtx wf_seg7_vertex_0700A3B8[] = {\n    {{{  -695,    102,    476}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -695,    133,    476}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -695,    133,    292}, 0, {  6100,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  1280,    102,      0}, 0, {  5078,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1280,    154,    256}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1280,    102,    256}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1280,    154,      0}, 0, {  5078,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  1152,    102,   -127}, 0, {  3034,    990}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  1280,    154,      0}, 0, {  -578,      0}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  1280,    102,      0}, 0, {  -578,    990}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  1152,    154,   -127}, 0, {  3034,      0}, {0x59, 0x00, 0xa6, 0xff}}},\n    {{{  1280,    102,    256}, 0, {  3034,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1280,    154,    256}, 0, {  3034,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1152,    154,    384}, 0, {  -578,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  1152,    102,    384}, 0, {  -578,    990}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x0700A4A8 - 0x0700A598\nstatic const Vtx wf_seg7_vertex_0700A4A8[] = {\n    {{{  -419,    102,    200}, 0, {  4304,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -327,    133,    292}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -327,    102,    292}, 0, {     0,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -695,    102,    476}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -695,    133,    292}, 0, {  6100,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -695,    102,    292}, 0, {  6100,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -695,    102,    292}, 0, {  4304,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -695,    133,    292}, 0, {  4304,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -603,    133,    200}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -603,    102,    200}, 0, {     0,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -603,    102,    200}, 0, {  6100,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -603,    133,    200}, 0, {  6100,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -419,    133,    200}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -419,    102,    200}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -419,    133,    200}, 0, {  4304,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0700A598 - 0x0700A688\nstatic const Vtx wf_seg7_vertex_0700A598[] = {\n    {{{  -603,    102,    568}, 0, {     0,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -603,    133,    568}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -695,    133,    476}, 0, {  4304,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -327,    102,    292}, 0, {  6100,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -327,    133,    476}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -327,    102,    476}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -327,    133,    292}, 0, {  6100,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -327,    102,    476}, 0, {     0,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -327,    133,    476}, 0, {     0,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -419,    133,    568}, 0, {  4304,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -419,    102,    568}, 0, {  4304,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -419,    102,    568}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -603,    133,    568}, 0, {  6100,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -603,    102,    568}, 0, {  6100,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -419,    133,    568}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0700A688 - 0x0700A778\nstatic const Vtx wf_seg7_vertex_0700A688[] = {\n    {{{   768,    102,    256}, 0, {  5078,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   768,    154,      0}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   768,    102,      0}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -603,    102,    568}, 0, {     0,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -695,    133,    476}, 0, {  4304,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -695,    102,    476}, 0, {  4304,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   896,    102,   -127}, 0, {  5078,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   896,    154,   -127}, 0, {  5078,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1152,    154,   -127}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  1152,    102,   -127}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   768,    102,      0}, 0, {  3582,    990}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{   768,    154,      0}, 0, {  3582,      0}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{   896,    154,   -127}, 0, {     0,      0}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{   896,    102,   -127}, 0, {     0,    990}, {0xa7, 0x00, 0xa6, 0xff}}},\n    {{{   768,    154,    256}, 0, {  5078,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700A778 - 0x0700A7F8\nstatic const Vtx wf_seg7_vertex_0700A778[] = {\n    {{{   896,    102,    384}, 0, {  3582,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   896,    154,    384}, 0, {  3582,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   768,    154,    256}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   768,    102,    256}, 0, {     0,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  1152,    102,    384}, 0, {  5078,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   896,    154,    384}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   896,    102,    384}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  1152,    154,    384}, 0, {  5078,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0700A7F8 - 0x0700A8F8\nstatic const Vtx wf_seg7_vertex_0700A7F8[] = {\n    {{{  -695,    133,    292}, 0, { -2074,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -419,    133,    568}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -327,    133,    476}, 0, {  2012,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -327,    133,    292}, 0, {  2012,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -419,    133,    200}, 0, {   990,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -603,    133,    200}, 0, { -1052,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -603,    133,    568}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -695,    133,    476}, 0, { -2074,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   768,    154,      0}, 0, {  3034,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   896,    154,    384}, 0, {     0,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1152,    154,    384}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   768,    154,    256}, 0, {   990,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1152,    154,   -127}, 0, {  4056,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   896,    154,   -127}, 0, {  4056,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,    154,      0}, 0, {  3034,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,    154,    256}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700A8F8 - 0x0700A988\nstatic const Gfx wf_seg7_dl_0700A8F8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wf_seg7_lights_0700A1E0.l, 1),\n    gsSPLight(&wf_seg7_lights_0700A1E0.a, 2),\n    gsSPVertex(wf_seg7_vertex_0700A1F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(wf_seg7_vertex_0700A2E8, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  6,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A988 - 0x0700A9D0\nstatic const Gfx wf_seg7_dl_0700A988[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_0700A358, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  0,  5,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700A9D0 - 0x0700AB18\nstatic const Gfx wf_seg7_dl_0700A9D0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09002800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_0700A3B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(wf_seg7_vertex_0700A4A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(wf_seg7_vertex_0700A598, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(wf_seg7_vertex_0700A688, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(wf_seg7_vertex_0700A778, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700AB18 - 0x0700ABA0\nstatic const Gfx wf_seg7_dl_0700AB18[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_0700A7F8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  0,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles( 8, 12, 13, 0x0,  8, 14, 12, 0x0),\n    gsSP2Triangles( 8, 10, 15, 0x0,  8, 15, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700ABA0 - 0x0700AC70\nconst Gfx wf_seg7_dl_0700ABA0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_0700A8F8),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_0700A988),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_0700A9D0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_0700AB18),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/15/2.inc.c",
    "content": "// 0x0700AC70 - 0x0700AC88\nstatic const Lights1 wf_seg7_lights_0700AC70 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700AC88 - 0x0700ACE8\nstatic const Vtx wf_seg7_vertex_0700AC88[] = {\n    {{{  1536,    102,   -767}, 0, {   990,   5076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1023,    102,    768}, 0, { -2074,   1244}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1024,    102,    768}, 0, { -2074,   5332}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,    102,    256}, 0, { -1052,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1536,    102,    256}, 0, { -1052,   6354}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{ -1535,    102,   -767}, 0, {   990,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700ACE8 - 0x0700ADE8\nstatic const Vtx wf_seg7_vertex_0700ACE8[] = {\n    {{{  -695,    133,    292}, 0, { -2074,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -419,    133,    568}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -327,    133,    476}, 0, {  2012,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -327,    133,    292}, 0, {  2012,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -419,    133,    200}, 0, {   990,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -603,    133,    200}, 0, { -1052,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -603,    133,    568}, 0, { -1052,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -695,    133,    476}, 0, { -2074,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   768,    154,      0}, 0, {  3034,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   896,    154,    384}, 0, {     0,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1152,    154,    384}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   768,    154,    256}, 0, {   990,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1152,    154,   -127}, 0, {  4056,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   896,    154,   -127}, 0, {  4056,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,    154,      0}, 0, {  3034,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1280,    154,    256}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700ADE8 - 0x0700AE40\nstatic const Gfx wf_seg7_dl_0700ADE8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wf_seg7_lights_0700AC70.l, 1),\n    gsSPLight(&wf_seg7_lights_0700AC70.a, 2),\n    gsSPVertex(wf_seg7_vertex_0700AC88, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  0,  5,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700AE40 - 0x0700AEC8\nstatic const Gfx wf_seg7_dl_0700AE40[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_0700ACE8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  6,  1, 0x0,  0,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles( 8, 12, 13, 0x0,  8, 14, 12, 0x0),\n    gsSP2Triangles( 8, 10, 15, 0x0,  8, 15, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700AEC8 - 0x0700AF40\nconst Gfx wf_seg7_dl_0700AEC8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_0700ADE8),\n    gsSPDisplayList(wf_seg7_dl_0700AE40),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/15/3.inc.c",
    "content": "// 0x0700AF40 - 0x0700AF80\nstatic const Vtx wf_seg7_vertex_0700AF40[] = {\n    {{{  -818,    102,   -460}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1228,    102,   -460}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1228,    102,    -50}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -818,    102,    -50}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700AF80 - 0x0700AFB8\nstatic const Gfx wf_seg7_dl_0700AF80[] = {\n    gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, grass_0900B000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_0700AF40, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700AFB8 - 0x0700B028\nconst Gfx wf_seg7_dl_0700AFB8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_0700AF80),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/15/geo.inc.c",
    "content": "// 0x0E000958\nconst GeoLayout wf_geo_000958[] = {\n    GEO_CULLING_RADIUS(2000),\n    GEO_OPEN_NODE(),\n        GEO_RENDER_RANGE(-2000, 8000),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, wf_seg7_dl_0700ABA0),\n            GEO_DISPLAY_LIST(LAYER_TRANSPARENT_DECAL, wf_seg7_dl_0700AFB8),\n        GEO_CLOSE_NODE(),\n        GEO_RENDER_RANGE(8000, 20000),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, wf_seg7_dl_0700AEC8),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/16/geo.inc.c",
    "content": "// 0x0E0009A0\nconst GeoLayout wf_geo_0009A0[] = {\n    GEO_CULLING_RADIUS(3000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, wf_seg7_dl_0700BA28),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/16/model.inc.c",
    "content": "// 0x0700B028 - 0x0700B040\nstatic const Lights1 wf_seg7_lights_0700B028 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700B040 - 0x0700B070\nstatic const Vtx wf_seg7_vertex_0700B040[] = {\n    {{{  -511,    256,   2048}, 0, {   310,    134}, {0x43, 0x65, 0xdf, 0xff}}},\n    {{{  -127,      0,   2048}, 0, {     0,    990}, {0x43, 0x65, 0xdf, 0xff}}},\n    {{{  -511,      0,   1280}, 0, {  1682,    990}, {0x43, 0x65, 0xdf, 0xff}}},\n};\n\n// 0x0700B070 - 0x0700B160\nstatic const Vtx wf_seg7_vertex_0700B070[] = {\n    {{{     0,   -255,  -2303}, 0, {   990,    480}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   512,      0,  -1791}, 0, {  -454,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   512,   -255,  -1791}, 0, {  -454,    480}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -511,      0,   2304}, 0, {  1706,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -127,      0,   2304}, 0, {  2472,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,    256,   2304}, 0, {  1706,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -511,    256,   2048}, 0, {   990,      0}, {0x46, 0x69, 0x00, 0xff}}},\n    {{{  -511,    256,   2304}, 0, {   478,      0}, {0x46, 0x69, 0x00, 0xff}}},\n    {{{  -127,      0,   2304}, 0, {   480,    890}, {0x46, 0x69, 0x00, 0xff}}},\n    {{{  -127,      0,   2048}, 0, {   990,    890}, {0x46, 0x69, 0x00, 0xff}}},\n    {{{  -511,   -255,  -2303}, 0, {   990,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -511,      0,  -2303}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,      0,  -2303}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,   -255,  -2303}, 0, {     0,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{     0,      0,  -2303}, 0, {   990,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0700B160 - 0x0700B1A0\nstatic const Vtx wf_seg7_vertex_0700B160[] = {\n    {{{   512,   -255,  -1791}, 0, {   990,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,      0,   2304}, 0, { -7184,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,   -255,   2304}, 0, { -7184,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   512,      0,  -1791}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700B1A0 - 0x0700B210\nstatic const Vtx wf_seg7_vertex_0700B1A0[] = {\n    {{{   512,      0,   2304}, 0, {   990,   6354}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,      0,  -1791}, 0, {  9166,   6354}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -127,      0,   2048}, 0, {  1502,   5076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,      0,  -2303}, 0, { 10188,   5332}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,      0,   1280}, 0, {  3034,   4310}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,      0,  -2303}, 0, { 10188,   4310}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -127,      0,   2304}, 0, {   990,   5332}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700B210 - 0x0700B300\nstatic const Vtx wf_seg7_vertex_0700B210[] = {\n    {{{  -255,      0,   -511}, 0, { 25518,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,     51,   -767}, 0, { 20408,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,      0,   -767}, 0, { 20408,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,      0,  -1535}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,     51,  -1535}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,     51,  -1791}, 0, {  5078,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,      0,  -1791}, 0, {  5078,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   128,      0,  -1919}, 0, {  4056,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   128,     51,  -1919}, 0, {  4056,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   256,     51,  -1791}, 0, {   442,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   256,      0,  -1791}, 0, {   442,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -127,      0,  -1919}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -127,     51,  -1919}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   128,     51,  -1919}, 0, {  5078,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   128,      0,  -1919}, 0, {  5078,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700B300 - 0x0700B3F0\nstatic const Vtx wf_seg7_vertex_0700B300[] = {\n    {{{   128,      0,   -895}, 0, {-11418,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   256,     51,   -767}, 0, {-15030,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   256,      0,   -767}, 0, {-15030,    990}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{  -255,      0,   -511}, 0, { 25518,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,     51,   -511}, 0, { 25518,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,     51,   -767}, 0, { 20408,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -255,      0,   -767}, 0, { 18034,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -255,     51,   -767}, 0, { 18034,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -127,     51,   -895}, 0, { 14422,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -127,      0,   -895}, 0, { 14422,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -127,      0,   -895}, 0, {  5078,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   128,     51,   -895}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   128,      0,   -895}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -127,     51,   -895}, 0, {  5078,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   128,     51,   -895}, 0, {-11418,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0700B3F0 - 0x0700B4E0\nstatic const Vtx wf_seg7_vertex_0700B3F0[] = {\n    {{{  -127,      0,   -383}, 0, {  3582,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -255,     51,   -511}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -255,      0,   -511}, 0, {     0,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   256,      0,   -767}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,     51,   -511}, 0, { -4118,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,      0,   -511}, 0, { -4118,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,     51,   -767}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,      0,   -511}, 0, {  3034,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   256,     51,   -511}, 0, {  3034,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   128,     51,   -383}, 0, {  -578,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   128,      0,   -383}, 0, {  -578,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   128,      0,   -383}, 0, {  5078,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   128,     51,   -383}, 0, {  5078,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -127,     51,   -383}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -127,      0,   -383}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0700B4E0 - 0x0700B5D0\nstatic const Vtx wf_seg7_vertex_0700B4E0[] = {\n    {{{   256,      0,  -1535}, 0, {  4056,    990}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   256,     51,  -1535}, 0, {  4056,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{   128,     51,  -1407}, 0, {   442,      0}, {0x59, 0x00, 0x59, 0xff}}},\n    {{{  -127,      0,   -383}, 0, {  3582,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -127,     51,   -383}, 0, {  3582,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -255,     51,   -511}, 0, {     0,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -127,      0,  -1407}, 0, {   442,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -255,     51,  -1535}, 0, {  4056,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -255,      0,  -1535}, 0, {  4056,    990}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{  -127,     51,  -1407}, 0, {   442,      0}, {0xa7, 0x00, 0x59, 0xff}}},\n    {{{   128,      0,  -1407}, 0, {  5078,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   128,     51,  -1407}, 0, {  5078,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -127,     51,  -1407}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -127,      0,  -1407}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   128,      0,  -1407}, 0, {   442,    990}, {0x59, 0x00, 0x59, 0xff}}},\n};\n\n// 0x0700B5D0 - 0x0700B650\nstatic const Vtx wf_seg7_vertex_0700B5D0[] = {\n    {{{   256,      0,  -1791}, 0, {  5078,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,     51,  -1791}, 0, {  5078,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,     51,  -1535}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,      0,  -1535}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -255,      0,  -1791}, 0, {   442,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -255,     51,  -1791}, 0, {   442,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -127,     51,  -1919}, 0, {  4056,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -127,      0,  -1919}, 0, {  4056,    990}, {0xa7, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0700B650 - 0x0700B750\nstatic const Vtx wf_seg7_vertex_0700B650[] = {\n    {{{  -255,     51,   -767}, 0, {  3034,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -127,     51,   -383}, 0, {     0,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   128,     51,   -383}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   128,     51,   -895}, 0, {  4056,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -127,     51,   -895}, 0, {  4056,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,     51,   -511}, 0, {   990,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,     51,   -511}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,     51,   -767}, 0, {  3034,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,     51,  -1791}, 0, { 11210,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   128,     51,  -1919}, 0, { 12232,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -127,     51,  -1919}, 0, { 12232,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,     51,  -1791}, 0, { 11210,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,     51,  -1535}, 0, {  9166,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -127,     51,  -1407}, 0, {  8144,  -2076}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   128,     51,  -1407}, 0, {  8144,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,     51,  -1535}, 0, {  9166,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700B750 - 0x0700B790\nstatic const Gfx wf_seg7_dl_0700B750[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09004800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wf_seg7_lights_0700B028.l, 1),\n    gsSPLight(&wf_seg7_lights_0700B028.a, 2),\n    gsSPVertex(wf_seg7_vertex_0700B040, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700B790 - 0x0700B808\nstatic const Gfx wf_seg7_dl_0700B790[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_0700B070, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(wf_seg7_vertex_0700B160, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700B808 - 0x0700B858\nstatic const Gfx wf_seg7_dl_0700B808[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_0700B1A0, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  1, 0x0),\n    gsSP2Triangles( 3,  5,  4, 0x0,  4,  2,  1, 0x0),\n    gsSP1Triangle( 0,  2,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700B858 - 0x0700B9A0\nstatic const Gfx wf_seg7_dl_0700B858[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09002800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_0700B210, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(wf_seg7_vertex_0700B300, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(wf_seg7_vertex_0700B3F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(wf_seg7_vertex_0700B4E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(wf_seg7_vertex_0700B5D0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700B9A0 - 0x0700BA28\nstatic const Gfx wf_seg7_dl_0700B9A0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_0700B650, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  5,  1, 0x0,  0,  2,  6, 0x0),\n    gsSP2Triangles( 0,  6,  7, 0x0,  0,  7,  3, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles( 8, 12, 13, 0x0,  8, 13, 14, 0x0),\n    gsSP2Triangles( 8, 15, 11, 0x0,  8, 14, 15, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700BA28 - 0x0700BB18\nconst Gfx wf_seg7_dl_0700BA28[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_0700B750),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_0700B790),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_0700B808),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_0700B858),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_0700B9A0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/17/geo.inc.c",
    "content": "// 0x0E0009B8\nconst GeoLayout wf_geo_0009B8[] = {\n    GEO_CULLING_RADIUS(1100),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, wf_seg7_dl_0700BF50),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/17/model.inc.c",
    "content": "// 0x0700BB18 - 0x0700BB30\nstatic const Lights1 wf_seg7_lights_0700BB18 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700BB30 - 0x0700BC20\nstatic const Vtx wf_seg7_vertex_0700BB30[] = {\n    {{{   443,      0,   -255}, 0, {  1026,      0}, {0x38, 0x90, 0xf1, 0xff}}},\n    {{{   512,      0,      0}, 0, {     0,      0}, {0x38, 0x90, 0xf1, 0xff}}},\n    {{{     0,   -255,      0}, 0, {   498,    988}, {0x38, 0x90, 0xf1, 0xff}}},\n    {{{  -255,      0,   -442}, 0, {   -66,      0}, {0xd7, 0x90, 0xd7, 0xff}}},\n    {{{     0,   -255,      0}, 0, {   460,    988}, {0xd7, 0x90, 0xd7, 0xff}}},\n    {{{  -442,      0,   -255}, 0, {   990,      0}, {0xd7, 0x90, 0xd7, 0xff}}},\n    {{{  -255,      0,   -442}, 0, {   990,      0}, {0xf1, 0x90, 0xc8, 0xff}}},\n    {{{     0,      0,   -511}, 0, {   -66,      0}, {0xf1, 0x90, 0xc8, 0xff}}},\n    {{{     0,   -255,      0}, 0, {   460,    988}, {0xf1, 0x90, 0xc8, 0xff}}},\n    {{{     0,      0,   -511}, 0, {  1026,      0}, {0x0f, 0x90, 0xc8, 0xff}}},\n    {{{   256,      0,   -442}, 0, {     0,      0}, {0x0f, 0x90, 0xc8, 0xff}}},\n    {{{     0,   -255,      0}, 0, {   498,    988}, {0x0f, 0x90, 0xc8, 0xff}}},\n    {{{   256,      0,   -442}, 0, {  1026,      0}, {0x29, 0x90, 0xd7, 0xff}}},\n    {{{   443,      0,   -255}, 0, {     0,      0}, {0x29, 0x90, 0xd7, 0xff}}},\n    {{{     0,   -255,      0}, 0, {   498,    988}, {0x29, 0x90, 0xd7, 0xff}}},\n};\n\n// 0x0700BC20 - 0x0700BD10\nstatic const Vtx wf_seg7_vertex_0700BC20[] = {\n    {{{  -255,      0,    443}, 0, {  1026,      0}, {0xd7, 0x90, 0x29, 0xff}}},\n    {{{  -442,      0,    256}, 0, {     0,      0}, {0xd7, 0x90, 0x29, 0xff}}},\n    {{{     0,   -255,      0}, 0, {   498,    988}, {0xd7, 0x90, 0x29, 0xff}}},\n    {{{   512,      0,      0}, 0, {  1026,      0}, {0x38, 0x90, 0x0f, 0xff}}},\n    {{{   443,      0,    256}, 0, {     0,      0}, {0x38, 0x90, 0x0f, 0xff}}},\n    {{{     0,   -255,      0}, 0, {   498,    988}, {0x38, 0x90, 0x0f, 0xff}}},\n    {{{   443,      0,    256}, 0, {  1026,      0}, {0x29, 0x90, 0x29, 0xff}}},\n    {{{   256,      0,    443}, 0, {     0,      0}, {0x29, 0x90, 0x29, 0xff}}},\n    {{{     0,   -255,      0}, 0, {   498,    988}, {0x29, 0x90, 0x29, 0xff}}},\n    {{{   256,      0,    443}, 0, {  1026,      0}, {0x0f, 0x90, 0x38, 0xff}}},\n    {{{     0,      0,    512}, 0, {     0,      0}, {0x0f, 0x90, 0x38, 0xff}}},\n    {{{     0,   -255,      0}, 0, {   498,    988}, {0x0f, 0x90, 0x38, 0xff}}},\n    {{{     0,      0,    512}, 0, {  1026,      0}, {0xf1, 0x90, 0x38, 0xff}}},\n    {{{  -255,      0,    443}, 0, {     0,      0}, {0xf1, 0x90, 0x38, 0xff}}},\n    {{{     0,   -255,      0}, 0, {   498,    988}, {0xf1, 0x90, 0x38, 0xff}}},\n};\n\n// 0x0700BD10 - 0x0700BD70\nstatic const Vtx wf_seg7_vertex_0700BD10[] = {\n    {{{  -442,      0,    256}, 0, {  1026,      0}, {0xc8, 0x90, 0x0f, 0xff}}},\n    {{{  -511,      0,      0}, 0, {     0,      0}, {0xc8, 0x90, 0x0f, 0xff}}},\n    {{{     0,   -255,      0}, 0, {   498,    988}, {0xc8, 0x90, 0x0f, 0xff}}},\n    {{{  -442,      0,   -255}, 0, {     0,      0}, {0xc8, 0x90, 0xf1, 0xff}}},\n    {{{     0,   -255,      0}, 0, {   498,    988}, {0xc8, 0x90, 0xf1, 0xff}}},\n    {{{  -511,      0,      0}, 0, {  1026,      0}, {0xc8, 0x90, 0xf1, 0xff}}},\n};\n\n// 0x0700BD70 - 0x0700BE30\nstatic const Vtx wf_seg7_vertex_0700BD70[] = {\n    {{{  -442,      0,   -255}, 0, {  -188,   -714}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   443,      0,    256}, 0, {  2170,    650}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   512,      0,      0}, 0, {  2352,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   443,      0,   -255}, 0, {  2170,   -714}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,      0,   -442}, 0, {  1672,  -1212}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,      0,   -511}, 0, {   990,  -1394}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,      0,   -442}, 0, {   308,  -1212}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,      0,    443}, 0, {   308,   1146}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,      0,    512}, 0, {   990,   1328}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -511,      0,      0}, 0, {  -370,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -442,      0,    256}, 0, {  -188,    650}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,      0,    443}, 0, {  1672,   1146}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700BE30 - 0x0700BED8\nstatic const Gfx wf_seg7_dl_0700BE30[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09005000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wf_seg7_lights_0700BB18.l, 1),\n    gsSPLight(&wf_seg7_lights_0700BB18.a, 2),\n    gsSPVertex(wf_seg7_vertex_0700BB30, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wf_seg7_vertex_0700BC20, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wf_seg7_vertex_0700BD10, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700BED8 - 0x0700BF50\nstatic const Gfx wf_seg7_dl_0700BED8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09005800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_0700BD70, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  4,  5, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  5,  6, 0x0,  0,  7,  8, 0x0),\n    gsSP2Triangles( 0,  9, 10, 0x0,  0, 10,  7, 0x0),\n    gsSP2Triangles( 0,  8, 11, 0x0,  0, 11,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700BF50 - 0x0700BFE0\nconst Gfx wf_seg7_dl_0700BF50[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_0700BE30),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_0700BED8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/18/geo.inc.c",
    "content": "// 0x0E0009D0\nconst GeoLayout wf_geo_0009D0[] = {\n    GEO_CULLING_RADIUS(1200),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, wf_seg7_dl_0700D028),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/18/model.inc.c",
    "content": "// 0x0700BFE0 - 0x0700BFF8\nstatic const Lights1 wf_seg7_lights_0700BFE0 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700BFF8 - 0x0700C0E8\nstatic const Vtx wf_seg7_vertex_0700BFF8[] = {\n    {{{    19,    154,      6}, 0, {     0,    990}, {0x69, 0x00, 0xba, 0xff}}},\n    {{{    19,   -460,      6}, 0, { 24662,   2010}, {0x69, 0x00, 0xba, 0xff}}},\n    {{{    11,   -460,     -6}, 0, { 24672,    990}, {0x69, 0x00, 0xba, 0xff}}},\n    {{{    -3,    154,     -6}, 0, {   990,    990}, {0x97, 0x00, 0xba, 0xff}}},\n    {{{    -3,   -460,     -6}, 0, {   990, -23708}, {0x97, 0x00, 0xba, 0xff}}},\n    {{{   -11,   -460,      6}, 0, {     0, -23708}, {0x97, 0x00, 0xba, 0xff}}},\n    {{{   -11,    154,      6}, 0, {     0,    990}, {0x97, 0x00, 0xba, 0xff}}},\n    {{{    11,    154,     -6}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    11,   -460,     -6}, 0, {   990, -23708}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    -3,   -460,     -6}, 0, {     0, -23708}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    -3,    154,     -6}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    11,    154,     19}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -3,    154,     19}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    11,   -460,     19}, 0, { 24666,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    11,    154,     -6}, 0, {   -22,      0}, {0x69, 0x00, 0xba, 0xff}}},\n};\n\n// 0x0700C0E8 - 0x0700C1E8\nstatic const Vtx wf_seg7_vertex_0700C0E8[] = {\n    {{{    11,    154,     19}, 0, {     0,    990}, {0x6c, 0x00, 0x42, 0xff}}},\n    {{{    11,   -460,     19}, 0, { 24666,    990}, {0x6c, 0x00, 0x42, 0xff}}},\n    {{{    19,   -460,      6}, 0, { 24666,      0}, {0x6c, 0x00, 0x42, 0xff}}},\n    {{{    19,    154,      6}, 0, {     0,      0}, {0x6c, 0x00, 0x42, 0xff}}},\n    {{{    -3,    154,     19}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    -3,   -460,     19}, 0, { 24666,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    11,   -460,     19}, 0, { 24666,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -11,    154,      6}, 0, {   990,    990}, {0x94, 0x00, 0x42, 0xff}}},\n    {{{   -11,   -460,      6}, 0, {   990, -23708}, {0x94, 0x00, 0x42, 0xff}}},\n    {{{    -3,   -460,     19}, 0, {     0, -23708}, {0x94, 0x00, 0x42, 0xff}}},\n    {{{    -3,    154,     19}, 0, {     0,    990}, {0x94, 0x00, 0x42, 0xff}}},\n    {{{    -3,    154,     -6}, 0, {     0,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    19,    154,      6}, 0, {   734,     36}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    11,    154,     -6}, 0, {   224,     36}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    -3,    154,     19}, 0, {   734,    922}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    11,    154,     19}, 0, {   990,    480}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700C1E8 - 0x0700C218\nstatic const Vtx wf_seg7_vertex_0700C1E8[] = {\n    {{{    -3,    154,     -6}, 0, {     0,    478}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -11,    154,      6}, 0, {   224,    922}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    -3,    154,     19}, 0, {   734,    922}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700C218 - 0x0700C318\nstatic const Vtx wf_seg7_vertex_0700C218[] = {\n    {{{  -443,      0,    581}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   452,      0,    581}, 0, {   990,  -2588}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    69,      0,     71}, 0, { -1044,  -1058}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -191,   -588,    227}, 0, {  2958,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   452,   -588,   -521}, 0, {     0,  -1578}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   452,   -588,    227}, 0, {  2958,  -1578}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -191,   -588,   -521}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -239,   -460,    275}, 0, {  3148,   1180}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   452,   -460,    275}, 0, {  3148,  -1578}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   452,   -460,   -569}, 0, {  -222,  -1578}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -239,   -460,   -569}, 0, {  -222,   1180}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   452,      0,   -570}, 0, { -3608,  -2588}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    69,      0,    -57}, 0, { -1558,  -1058}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -571,    640,   -761}, 0, { -5140,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   452,    640,   -761}, 0, { -5140,   3074}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   452,    640,    774}, 0, {   990,   3074}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0700C318 - 0x0700C3F8\nstatic const Vtx wf_seg7_vertex_0700C318[] = {\n    {{{   452,      0,   -570}, 0, { -3608,  -2588}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -443,      0,   -570}, 0, { -3606,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    69,      0,    -57}, 0, { -1558,  -1058}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -59,      0,    -57}, 0, { -1558,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -443,      0,    581}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    69,      0,     71}, 0, { -1044,  -1058}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -59,      0,     71}, 0, { -1044,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   452,    768,    774}, 0, {   990,   6098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   452,    768,   -761}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -571,    768,    774}, 0, { -3096,   6098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -571,    768,   -761}, 0, { -3096,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -571,    640,   -761}, 0, { -5140,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   452,    640,    774}, 0, {   990,   3074}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -571,    640,    774}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0700C3F8 - 0x0700C4E8\nstatic const Vtx wf_seg7_vertex_0700C3F8[] = {\n    {{{    69,   -127,     71}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -59,   -127,     71}, 0, {   484,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    69,      0,     71}, 0, {     0,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   452,   -588,   -521}, 0, { -4118,   1058}, {0x00, 0xd4, 0x8a, 0xff}}},\n    {{{  -239,   -460,   -569}, 0, {   990,      0}, {0x00, 0xd4, 0x8a, 0xff}}},\n    {{{   452,   -460,   -569}, 0, { -4118,      0}, {0x00, 0xd4, 0x8a, 0xff}}},\n    {{{  -191,   -588,   -521}, 0, {   606,   1058}, {0x00, 0xd4, 0x8a, 0xff}}},\n    {{{  -239,   -460,    275}, 0, {   990,   1904}, {0x00, 0xd4, 0x76, 0xff}}},\n    {{{   452,   -588,    227}, 0, { -4118,   2726}, {0x00, 0xd4, 0x76, 0xff}}},\n    {{{   452,   -460,    275}, 0, { -4118,   1904}, {0x00, 0xd4, 0x76, 0xff}}},\n    {{{  -191,   -588,    227}, 0, {   606,   2726}, {0x00, 0xd4, 0x76, 0xff}}},\n    {{{  -239,   -460,   -569}, 0, {  -438,      0}, {0x8a, 0xd4, 0x00, 0xff}}},\n    {{{  -191,   -588,    227}, 0, {  4694,   1058}, {0x8a, 0xd4, 0x00, 0xff}}},\n    {{{  -239,   -460,    275}, 0, {  5078,      0}, {0x8a, 0xd4, 0x00, 0xff}}},\n    {{{  -191,   -588,   -521}, 0, {   -56,   1058}, {0x8a, 0xd4, 0x00, 0xff}}},\n};\n\n// 0x0700C4E8 - 0x0700C5D8\nstatic const Vtx wf_seg7_vertex_0700C4E8[] = {\n    {{{    69,   -127,    -57}, 0, {   484,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    69,   -127,     71}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    69,      0,     71}, 0, {     0,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -59,   -127,     71}, 0, {   484,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -59,      0,     71}, 0, {   484,    478}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    69,      0,     71}, 0, {     0,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -59,   -127,     71}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -59,   -127,    -57}, 0, {   484,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -59,      0,    -57}, 0, {   484,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -59,      0,     71}, 0, {     0,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    69,   -127,    -57}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    69,      0,    -57}, 0, {     0,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -59,      0,    -57}, 0, {   484,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -59,   -127,    -57}, 0, {   484,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    69,      0,    -57}, 0, {   484,    478}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700C5D8 - 0x0700C6C8\nstatic const Vtx wf_seg7_vertex_0700C5D8[] = {\n    {{{    68,      0,   -474}, 0, { -2074,   3032}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    68,    640,   -570}, 0, { -2584,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    68,      0,   -570}, 0, { -2584,   3032}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -443,   -127,   -570}, 0, {  3034,   3544}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   452,   -127,   -570}, 0, {  3034,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -59,   -127,    -57}, 0, {   226,   2010}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    69,   -127,    -57}, 0, {   226,   1494}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{    69,   -127,     71}, 0, {  -288,   1494}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   452,   -127,    581}, 0, { -3096,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -443,   -127,    581}, 0, { -3096,   3544}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -59,   -127,     71}, 0, {  -288,   2010}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   196,      0,   -474}, 0, {     0,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   196,    640,   -474}, 0, {     0,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    68,    640,   -474}, 0, {  -540,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    68,      0,   -474}, 0, {  -542,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0700C6C8 - 0x0700C7B8\nstatic const Vtx wf_seg7_vertex_0700C6C8[] = {\n    {{{  -187,      0,   -474}, 0, { -1564,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -315,    640,   -474}, 0, { -2074,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -315,      0,   -474}, 0, { -2074,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    68,      0,   -474}, 0, { -2074,   3032}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    68,    640,   -474}, 0, { -2074,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    68,    640,   -570}, 0, { -2584,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    68,      0,   -570}, 0, {  -542,   3032}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   196,    640,   -570}, 0, {     0,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   196,      0,   -570}, 0, {     0,   3032}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    68,    640,   -570}, 0, {  -540,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   196,      0,   -570}, 0, { -2584,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   196,    640,   -570}, 0, { -2584,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   196,    640,   -474}, 0, { -2074,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   196,      0,   -474}, 0, { -2074,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -187,    640,   -474}, 0, { -1562,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0700C7B8 - 0x0700C8A8\nstatic const Vtx wf_seg7_vertex_0700C7B8[] = {\n    {{{  -187,      0,    581}, 0, {  -542,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -187,    640,    581}, 0, {  -542,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -315,    640,    581}, 0, { -1052,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -315,      0,   -474}, 0, { -2074,   3032}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -315,    640,   -474}, 0, { -2074,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -315,    640,   -570}, 0, { -2586,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -315,      0,   -570}, 0, { -2584,   3032}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -315,      0,   -570}, 0, { -2074,   3032}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -187,    640,   -570}, 0, { -1562,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -187,      0,   -570}, 0, { -1564,   3032}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -315,    640,   -570}, 0, { -2074,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -187,      0,   -570}, 0, { -2586,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -187,    640,   -474}, 0, { -2074,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -187,      0,   -474}, 0, { -2074,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -187,    640,   -570}, 0, { -2586,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700C8A8 - 0x0700C998\nstatic const Vtx wf_seg7_vertex_0700C8A8[] = {\n    {{{  -187,      0,    485}, 0, {  3034,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -187,    640,    485}, 0, {  3034,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -187,    640,    581}, 0, {  3546,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -187,      0,    581}, 0, {  -542,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -315,    640,    581}, 0, { -1052,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -315,      0,    581}, 0, { -1052,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -315,      0,    581}, 0, {  3546,   3032}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -315,    640,    581}, 0, {  3544,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -315,    640,    485}, 0, {  3034,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -315,      0,    485}, 0, {  3034,   3032}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -315,      0,    485}, 0, { -2074,   3032}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -187,    640,    485}, 0, { -1564,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -187,      0,    485}, 0, { -1564,   3032}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -315,    640,    485}, 0, { -2074,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -187,      0,    581}, 0, {  3546,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700C998 - 0x0700CA88\nstatic const Vtx wf_seg7_vertex_0700C998[] = {\n    {{{   196,      0,    485}, 0, {  3034,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   196,    640,    485}, 0, {  3034,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   196,    640,    581}, 0, {  3546,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   196,      0,    581}, 0, {   990,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   196,    640,    581}, 0, {   990,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    68,    640,    581}, 0, {   478,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    68,      0,    581}, 0, {   478,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    68,      0,    581}, 0, {  3546,   3032}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    68,    640,    581}, 0, {  3546,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    68,    640,    485}, 0, {  3034,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    68,      0,    485}, 0, {  3034,   3032}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{    68,      0,    485}, 0, {  -542,   3032}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    68,    640,    485}, 0, {  -542,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   196,    640,    485}, 0, {     0,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   196,      0,    485}, 0, {     0,   3032}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700CA88 - 0x0700CB78\nstatic const Vtx wf_seg7_vertex_0700CA88[] = {\n    {{{  -571,    640,   -761}, 0, { -3096,    480}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -571,    768,   -761}, 0, { -3096,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   452,    768,   -761}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   196,      0,    485}, 0, {  3034,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   196,    640,    581}, 0, {  3546,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   196,      0,    581}, 0, {  3546,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -571,    768,    774}, 0, { -3096,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -571,    640,    774}, 0, { -3096,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   452,    640,    774}, 0, {   990,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   452,    768,    774}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   452,   -127,    581}, 0, {   990,   3544}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   452,      0,    581}, 0, {   990,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -443,      0,    581}, 0, { -2586,   3032}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -443,   -127,    581}, 0, { -2586,   3544}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   452,    640,   -761}, 0, {   990,    480}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700CB78 - 0x0700CC38\nstatic const Vtx wf_seg7_vertex_0700CB78[] = {\n    {{{  -443,   -127,   -570}, 0, { -2586,   3544}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -443,      0,   -570}, 0, { -2586,   3032}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   452,      0,   -570}, 0, {   990,   3032}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   452,   -127,   -570}, 0, {   990,   3544}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -443,   -127,   -570}, 0, {     0,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -443,   -127,    581}, 0, {  6100,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -443,      0,    581}, 0, {  6100,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -443,      0,   -570}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -571,    768,    774}, 0, {  6100,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -571,    640,   -761}, 0, {     0,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -571,    640,    774}, 0, {  6100,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -571,    768,   -761}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700CC38 - 0x0700CD00\nstatic const Gfx wf_seg7_dl_0700CC38[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09007800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wf_seg7_lights_0700BFE0.l, 1),\n    gsSPLight(&wf_seg7_lights_0700BFE0.a, 2),\n    gsSPVertex(wf_seg7_vertex_0700BFF8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14,  0,  2, 0x0),\n    gsSPVertex(wf_seg7_vertex_0700C0E8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 15, 0x0, 11, 15, 12, 0x0),\n    gsSPVertex(wf_seg7_vertex_0700C1E8, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700CD00 - 0x0700CDB0\nstatic const Gfx wf_seg7_dl_0700CD00[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_0700C218, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  1, 11, 12, 0x0),\n    gsSP2Triangles( 1, 12,  2, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(wf_seg7_vertex_0700C318, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  1,  4,  6, 0x0),\n    gsSP2Triangles( 1,  6,  3, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700CDB0 - 0x0700D028\nstatic const Gfx wf_seg7_dl_0700CDB0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_0700C3F8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(wf_seg7_vertex_0700C4E8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 10, 12, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(wf_seg7_vertex_0700C5D8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  4,  7,  6, 0x0),\n    gsSP2Triangles( 4,  8,  7, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 8, 10,  7, 0x0,  9,  3,  5, 0x0),\n    gsSP2Triangles( 9,  5, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(wf_seg7_vertex_0700C6C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(wf_seg7_vertex_0700C7B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(wf_seg7_vertex_0700C8A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(wf_seg7_vertex_0700C998, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(wf_seg7_vertex_0700CA88, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle(14,  0,  2, 0x0),\n    gsSPVertex(wf_seg7_vertex_0700CB78, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700D028 - 0x0700D0A8\nconst Gfx wf_seg7_dl_0700D028[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_0700CC38),\n    gsSPDisplayList(wf_seg7_dl_0700CD00),\n    gsSPDisplayList(wf_seg7_dl_0700CDB0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/19/geo.inc.c",
    "content": "// 0x0E0009E8\nconst GeoLayout wf_geo_0009E8[] = {\n    GEO_CULLING_RADIUS(2700),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, wf_seg7_dl_0700D300),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/19/model.inc.c",
    "content": "// 0x0700D0A8 - 0x0700D0C0\nstatic const Lights1 wf_seg7_lights_0700D0A8 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700D0C0 - 0x0700D1B0\nstatic const Vtx wf_seg7_vertex_0700D0C0[] = {\n    {{{  -613,      0,  -2175}, 0, {-20266,   -542}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -613,   -383,      0}, 0, {-13316,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -613,      0,      0}, 0, {-13316,   -542}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   154,   -383,   2432}, 0, { -3096,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   154,    640,   2432}, 0, { -3096,  -2002}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   154,      0,      0}, 0, {-13316,   -542}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   154,   -383,      0}, 0, {-13316,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   614,    640,   2432}, 0, {     0,      0}, {0x00, 0x7a, 0xe0, 0xff}}},\n    {{{   614,      0,      0}, 0, {     0, -10252}, {0x00, 0x7a, 0xe0, 0xff}}},\n    {{{   154,      0,      0}, 0, { -1870, -10252}, {0x00, 0x7a, 0xe0, 0xff}}},\n    {{{   154,    640,   2432}, 0, { -1870,      0}, {0x00, 0x7a, 0xe0, 0xff}}},\n    {{{   154,   -383,      0}, 0, {  3034,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   154,      0,      0}, 0, {  3034,   -542}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -613,      0,      0}, 0, {   172,   -542}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -613,   -383,      0}, 0, {   172,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0700D1B0 - 0x0700D260\nstatic const Vtx wf_seg7_vertex_0700D1B0[] = {\n    {{{   614,      0,  -2175}, 0, { -3914,   -542}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -613,   -383,  -2175}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -613,      0,  -2175}, 0, {   990,   -542}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -613,      0,  -2175}, 0, {-20266,   -542}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -613,   -383,  -2175}, 0, {-20266,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -613,   -383,      0}, 0, {-13316,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -613,      0,  -2175}, 0, { -3914,  -6164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -613,      0,      0}, 0, { -3914,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   614,      0,      0}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   614,      0,  -2175}, 0, {   990,  -6164}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   614,   -383,  -2175}, 0, { -3914,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700D260 - 0x0700D300\nstatic const Gfx wf_seg7_dl_0700D260[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wf_seg7_lights_0700D0A8.l, 1),\n    gsSPLight(&wf_seg7_lights_0700D0A8.a, 2),\n    gsSPVertex(wf_seg7_vertex_0700D0C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 11, 13, 0x0),\n    gsSPVertex(wf_seg7_vertex_0700D1B0, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP1Triangle( 0, 10,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700D300 - 0x0700D370\nconst Gfx wf_seg7_dl_0700D300[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_0700D260),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/2/model.inc.c",
    "content": "// 0x070051C8 - 0x070051E0\nstatic const Lights1 wf_seg7_lights_070051C8 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x070051E0 - 0x07005260\nstatic const Vtx wf_seg7_vertex_070051E0[] = {\n    {{{   781,   2560,   1728}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   576,   2560,   1728}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   576,   2560,   1933}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   781,   2560,   1933}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1925,   2560,   -204}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1720,   2560,      0}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1925,   2560,      0}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  1720,   2560,   -204}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07005260 - 0x070052B8\nstatic const Gfx wf_seg7_dl_07005260[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wf_seg7_texture_07000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wf_seg7_lights_070051C8.l, 1),\n    gsSPLight(&wf_seg7_lights_070051C8.a, 2),\n    gsSPVertex(wf_seg7_vertex_070051E0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070052B8 - 0x07005328\nconst Gfx wf_seg7_dl_070052B8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_07005260),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/3/model.inc.c",
    "content": "// 0x07005328 - 0x07005418\nstatic const Vtx wf_seg7_vertex_07005328[] = {\n    {{{  3840,   1075,  -1458}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  3661,   1075,  -1100}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  4019,   1075,  -1100}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -2278,    730,   1953}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -2163,    641,   1617}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -2394,    641,   1617}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  3392,   1959,    979}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  3277,   1832,   1341}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  3533,   1832,   1341}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  3277,   1364,   2669}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  3533,   1364,   2669}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  3392,   1492,   2307}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  3840,   1075,  -2482}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  3661,   1075,  -2124}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  4019,   1075,  -2124}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n};\n\n// 0x07005418 - 0x070054D8\nstatic const Vtx wf_seg7_vertex_07005418[] = {\n    {{{  3533,   2304,   -101}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  3533,   2304,   -409}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  3277,   2304,   -255}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -2277,   1024,   3379}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -2149,   1024,   3123}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -2405,   1024,   3123}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -1279,   1024,   3482}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -1279,   1024,   3686}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -1074,   1024,   3584}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  3277,   1165,  -2940}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  3405,   1309,  -2729}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  3533,   1165,  -2940}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n};\n\n// 0x070054D8 - 0x07005538\nstatic const Gfx wf_seg7_dl_070054D8[] = {\n    gsSPVertex(wf_seg7_vertex_07005328, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wf_seg7_vertex_07005418, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07005538 - 0x07005568\nconst Gfx wf_seg7_dl_07005538[] = {\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsSPDisplayList(wf_seg7_dl_070054D8),\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/4/model.inc.c",
    "content": "// 0x07005568 - 0x07005658\nstatic const Vtx wf_seg7_vertex_07005568[] = {\n    {{{  1270,   2944,   -772}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  1343,   2739,   -844}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  1198,   2739,   -699}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  3594,   1459,    870}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  3594,   1587,   1126}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  3594,   1331,   1126}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  3594,   1459,   -511}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  3594,   1587,   -255}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  3594,   1331,   -255}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -1033,   2944,    512}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -1033,   2816,    256}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{ -1033,   2688,    512}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  -824,   2944,  -1017}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  -727,   2816,  -1254}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n    {{{  -824,   2688,  -1017}, 0, {     0,      0}, {0xff, 0xff, 0x00, 0x80}}},\n};\n\n// 0x07005658 - 0x07005690\nstatic const Gfx wf_seg7_dl_07005658[] = {\n    gsSPVertex(wf_seg7_vertex_07005568, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07005690 - 0x070056C0\nconst Gfx wf_seg7_dl_07005690[] = {\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsSPDisplayList(wf_seg7_dl_07005658),\n    gsDPPipeSync(),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/5/1.inc.c",
    "content": "// 0x070056C0 - 0x070056D8\nstatic const Lights1 wf_seg7_lights_070056C0 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x070056D8 - 0x070057C8\nstatic const Vtx wf_seg7_vertex_070056D8[] = {\n    {{{  -153,     77,   -255}, 0, {  2012,  -4734}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -204,     77,   -255}, 0, {  2012,  -4938}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -153,     77,    256}, 0, {     0,  -4734}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -256,    102,    256}, 0, {     0,  -5142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -204,    102,    256}, 0, {     0,  -4938}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -256,    102,   -255}, 0, {  2012,  -5142}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -204,    102,   -255}, 0, {  2012,  -4938}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   255,   -127,   -255}, 0, {  2012,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   204,   -127,   -255}, 0, {  2012,  -3302}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   255,   -127,    256}, 0, {     0,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   204,   -127,    256}, 0, {     0,  -3302}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -256,    128,    256}, 0, {     0,  -2076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -256,    102,    256}, 0, {     0,  -1872}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -256,    128,   -255}, 0, {  4056,  -2076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -256,    102,   -255}, 0, {  4056,  -1872}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070057C8 - 0x070058B8\nstatic const Vtx wf_seg7_vertex_070057C8[] = {\n    {{{  -102,     26,    256}, 0, {     0,  -1258}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -102,     51,   -255}, 0, {  4056,  -1462}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -102,     51,    256}, 0, {     0,  -1462}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -153,     77,    256}, 0, {     0,  -4734}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -204,     77,   -255}, 0, {  2012,  -4938}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -204,     77,    256}, 0, {     0,  -4938}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -204,    102,    256}, 0, {     0,  -1872}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -204,     77,    256}, 0, {     0,  -1668}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -204,    102,   -255}, 0, {  4056,  -1872}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -204,     77,   -255}, 0, {  4056,  -1668}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -153,     51,   -255}, 0, {  4056,  -1462}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -153,     77,   -255}, 0, {  4056,  -1668}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -153,     51,    256}, 0, {     0,  -1462}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -153,     77,    256}, 0, {     0,  -1668}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -102,     26,   -255}, 0, {  4056,  -1258}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x070058B8 - 0x070059A8\nstatic const Vtx wf_seg7_vertex_070058B8[] = {\n    {{{     0,    -25,   -255}, 0, {  4056,   -850}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,      0,   -255}, 0, {  4056,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,    -25,    256}, 0, {     0,   -850}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -153,     51,    256}, 0, {     0,  -4734}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -102,     51,    256}, 0, {     0,  -4528}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -153,     51,   -255}, 0, {  2012,  -4734}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -102,     51,   -255}, 0, {  2012,  -4528}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -51,      0,   -255}, 0, {  4056,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -51,     26,   -255}, 0, {  4056,  -1258}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -51,      0,    256}, 0, {     0,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -51,     26,    256}, 0, {     0,  -1258}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -102,     26,    256}, 0, {     0,  -4528}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -51,     26,    256}, 0, {     0,  -4324}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -102,     26,   -255}, 0, {  2012,  -4528}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -51,     26,   -255}, 0, {  2012,  -4324}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070059A8 - 0x07005A98\nstatic const Vtx wf_seg7_vertex_070059A8[] = {\n    {{{     0,    -25,   -255}, 0, {  2012,  -4120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,    -25,    256}, 0, {     0,  -3916}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,    -25,   -255}, 0, {  2012,  -3916}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,      0,    256}, 0, {     0,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,    -25,    256}, 0, {     0,   -850}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,      0,   -255}, 0, {  4056,  -1054}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   -51,      0,    256}, 0, {     0,  -4324}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,      0,    256}, 0, {     0,  -4120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -51,      0,   -255}, 0, {  2012,  -4324}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,      0,   -255}, 0, {  2012,  -4120}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,    -50,   -255}, 0, {  4056,   -646}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    51,    -25,   -255}, 0, {  4056,   -850}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    51,    -50,    256}, 0, {     0,   -646}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    51,    -25,    256}, 0, {     0,   -850}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,    -25,    256}, 0, {     0,  -4120}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07005A98 - 0x07005B88\nstatic const Vtx wf_seg7_vertex_07005A98[] = {\n    {{{   102,    -76,    256}, 0, {     0,  -3712}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   153,    -76,    256}, 0, {     0,  -3506}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,    -76,   -255}, 0, {  2012,  -3712}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,    -76,   -255}, 0, {  4056,   -440}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,    -50,   -255}, 0, {  4056,   -646}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,    -76,    256}, 0, {     0,   -440}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   102,    -50,    256}, 0, {     0,   -646}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    51,    -50,    256}, 0, {     0,  -3916}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,    -50,    256}, 0, {     0,  -3712}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    51,    -50,   -255}, 0, {  2012,  -3916}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,    -50,   -255}, 0, {  2012,  -3712}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   153,   -101,   -255}, 0, {  4056,   -236}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   153,    -76,   -255}, 0, {  4056,   -440}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   153,   -101,    256}, 0, {     0,   -236}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   153,    -76,    256}, 0, {     0,   -440}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x07005B88 - 0x07005C38\nstatic const Vtx wf_seg7_vertex_07005B88[] = {\n    {{{   153,   -101,   -255}, 0, {  2012,  -3506}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   204,   -101,    256}, 0, {     0,  -3302}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   204,   -101,   -255}, 0, {  2012,  -3302}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   102,    -76,   -255}, 0, {  2012,  -3712}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   153,    -76,    256}, 0, {     0,  -3506}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   153,    -76,   -255}, 0, {  2012,  -3506}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   204,   -127,   -255}, 0, {  4056,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   204,   -101,   -255}, 0, {  4056,   -236}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   204,   -127,    256}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   204,   -101,    256}, 0, {     0,   -236}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   153,   -101,    256}, 0, {     0,  -3506}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07005C38 - 0x07005DD8\nstatic const Gfx wf_seg7_dl_07005C38[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09009800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wf_seg7_lights_070056C0.l, 1),\n    gsSPLight(&wf_seg7_lights_070056C0.a, 2),\n    gsSPVertex(wf_seg7_vertex_070056D8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  9,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(13, 12, 14, 0x0),\n    gsSPVertex(wf_seg7_vertex_070057C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP1Triangle(14,  1,  0, 0x0),\n    gsSPVertex(wf_seg7_vertex_070058B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(13, 12, 14, 0x0),\n    gsSPVertex(wf_seg7_vertex_070059A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP1Triangle(14,  1,  0, 0x0),\n    gsSPVertex(wf_seg7_vertex_07005A98, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  9,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 13, 12, 0x0),\n    gsSPVertex(wf_seg7_vertex_07005B88, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP1Triangle(10,  1,  0, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07005DD8 - 0x07005E48\nconst Gfx wf_seg7_dl_07005DD8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_07005C38),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/5/2.inc.c",
    "content": "// 0x07005E48 - 0x07005E60\nstatic const Lights1 wf_seg7_lights_07005E48 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07005E60 - 0x07005EA0\nstatic const Vtx wf_seg7_vertex_07005E60[] = {\n    {{{   255,   -127,   -255}, 0, {  2012,   2010}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{  -256,    128,    256}, 0, {     0,   -274}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{   255,   -127,    256}, 0, {     0,   2010}, {0x38, 0x71, 0x00, 0xff}}},\n    {{{  -256,    128,   -255}, 0, {  2012,   -274}, {0x38, 0x71, 0x00, 0xff}}},\n};\n\n// 0x07005EA0 - 0x07005EE8\nstatic const Gfx wf_seg7_dl_07005EA0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09009800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wf_seg7_lights_07005E48.l, 1),\n    gsSPLight(&wf_seg7_lights_07005E48.a, 2),\n    gsSPVertex(wf_seg7_vertex_07005E60, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07005EE8 - 0x07005F58\nconst Gfx wf_seg7_dl_07005EE8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_07005EA0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/5/geo.inc.c",
    "content": "// 0x0E0007E0\nconst GeoLayout wf_geo_0007E0[] = {\n    GEO_CULLING_RADIUS(600),\n    GEO_OPEN_NODE(),\n        GEO_RENDER_RANGE(-2048, 5000),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, wf_seg7_dl_07005DD8),\n        GEO_CLOSE_NODE(),\n        GEO_RENDER_RANGE(5000, 32767),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, wf_seg7_dl_07005EE8),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/6/1.inc.c",
    "content": "// 0x07005F58 - 0x07005F70\nstatic const Lights1 wf_seg7_lights_07005F58 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07005F70 - 0x07006060\nstatic const Vtx wf_seg7_vertex_07005F70[] = {\n    {{{   179,    458,    900}, 0, {     0,   2008}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   179,    458,    520}, 0, {     0,   3526}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -178,    458,    520}, 0, {  1398,   3526}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   179,    -88,   -239}, 0, {     0,   6558}, {0x00, 0x7e, 0x02, 0xff}}},\n    {{{   179,    -79,   -620}, 0, {     0,   8080}, {0x00, 0x7e, 0x02, 0xff}}},\n    {{{  -178,    -88,   -239}, 0, {  1398,   6558}, {0x00, 0x7e, 0x02, 0xff}}},\n    {{{  -178,    -79,   -620}, 0, {  1398,   8080}, {0x00, 0x7e, 0x02, 0xff}}},\n    {{{   179,    640,   1280}, 0, {     0,    494}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -178,    640,    900}, 0, {  1398,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -178,    640,   1280}, 0, {  1398,    494}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   179,    640,    900}, 0, {     0,   2010}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   179,    640,    900}, 0, {    70,    262}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -178,    458,    900}, 0, {  1502,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -178,    640,    900}, 0, {  1502,    262}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   179,    458,    900}, 0, {    70,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07006060 - 0x07006150\nstatic const Vtx wf_seg7_vertex_07006060[] = {\n    {{{   179,    275,    140}, 0, {    70,   1708}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   179,     93,    140}, 0, {    70,   2436}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -178,     93,    140}, 0, {  1502,   2436}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   179,    458,    900}, 0, {     0,   2008}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -178,    458,    520}, 0, {  1398,   3526}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -178,    458,    900}, 0, {  1398,   2008}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   179,    458,    520}, 0, {    70,    986}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -178,    275,    520}, 0, {  1502,   1712}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -178,    458,    520}, 0, {  1502,    986}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   179,    275,    520}, 0, {    70,   1712}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   179,    275,    520}, 0, {     0,   3524}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -178,    275,    140}, 0, {  1398,   5044}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -178,    275,    520}, 0, {  1398,   3524}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   179,    275,    140}, 0, {     0,   5044}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -178,    275,    140}, 0, {  1502,   1708}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07006150 - 0x07006250\nstatic const Vtx wf_seg7_vertex_07006150[] = {\n    {{{   179,     93,    140}, 0, {     0,   5042}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -178,     93,   -239}, 0, {  1398,   6560}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -178,     93,    140}, 0, {  1398,   5042}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   179,     93,   -239}, 0, {     0,   6560}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   179,     93,   -239}, 0, {    70,   2432}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -178,    -88,   -239}, 0, {  1502,   3160}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -178,     93,   -239}, 0, {  1502,   2432}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   179,    -88,   -239}, 0, {    70,   3160}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   179,    275,    520}, 0, {  1980,   1626}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   179,    458,    520}, 0, {  1982,    900}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   179,    458,    900}, 0, {   462,    900}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   179,    640,    900}, 0, {   464,    172}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   179,    640,   1280}, 0, { -1052,    172}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -178,   -587,  -1279}, 0, {  1398,   2234}, {0x00, 0x68, 0xb9, 0xff}}},\n    {{{  -178,   -267,   -810}, 0, {  1398,      0}, {0x00, 0x68, 0xb9, 0xff}}},\n    {{{   179,   -267,   -810}, 0, {     0,      0}, {0x00, 0x68, 0xb9, 0xff}}},\n};\n\n// 0x07006250 - 0x07006330\nstatic const Vtx wf_seg7_vertex_07006250[] = {\n    {{{   179,     93,    140}, 0, {  3496,   2354}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   179,    275,    140}, 0, {  3498,   1626}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   179,    275,    520}, 0, {  1980,   1626}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   179,    -88,   -239}, 0, {  5012,   3082}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   179,     93,   -239}, 0, {  5014,   2354}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   179,    -79,   -620}, 0, {  6534,   3046}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   179,   -271,   -620}, 0, {  6534,   3812}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   179,   -271,   -620}, 0, {    70,   3886}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -178,   -271,   -620}, 0, {  1502,   3884}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   179,    -79,   -620}, 0, {    70,   3118}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -178,    -79,   -620}, 0, {  1502,   3118}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   179,   -588,  -1279}, 0, {     0,   2236}, {0x00, 0x68, 0xb9, 0xff}}},\n    {{{  -178,   -587,  -1279}, 0, {  1398,   2234}, {0x00, 0x68, 0xb9, 0xff}}},\n    {{{   179,   -267,   -810}, 0, {     0,      0}, {0x00, 0x68, 0xb9, 0xff}}},\n};\n\n// 0x07006330 - 0x070063A0\nstatic const Vtx wf_seg7_vertex_07006330[] = {\n    {{{   179,   -271,   -620}, 0, {     0,   8080}, {0x00, 0x7e, 0x02, 0xff}}},\n    {{{   179,   -267,   -810}, 0, {     0,   8840}, {0x00, 0x7e, 0x02, 0xff}}},\n    {{{  -178,   -267,   -810}, 0, {  1398,   8840}, {0x00, 0x7e, 0x02, 0xff}}},\n    {{{   179,   -267,   -810}, 0, {  7294,   3794}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   179,   -271,   -620}, 0, {  6534,   3812}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   179,   -588,  -1279}, 0, {  9166,   5076}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -178,   -271,   -620}, 0, {  1398,   8080}, {0x00, 0x7e, 0x02, 0xff}}},\n};\n\n// 0x070063A0 - 0x070064E8\nstatic const Gfx wf_seg7_dl_070063A0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wf_seg7_lights_07005F58.l, 1),\n    gsSPLight(&wf_seg7_lights_07005F58.a, 2),\n    gsSPVertex(wf_seg7_vertex_07005F70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(wf_seg7_vertex_07006060, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(wf_seg7_vertex_07006150, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(wf_seg7_vertex_07006250, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 5,  3,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(wf_seg7_vertex_07006330, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  2,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070064E8 - 0x07006558\nconst Gfx wf_seg7_dl_070064E8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_070063A0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/6/2.inc.c",
    "content": "// 0x07006558 - 0x07006570\nstatic const Lights1 wf_seg7_lights_07006558 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07006570 - 0x070065B0\nstatic const Vtx wf_seg7_vertex_07006570[] = {\n    {{{  -178,    640,   1280}, 0, {     0,   -440}, {0x00, 0x72, 0xca, 0xff}}},\n    {{{   179,    640,   1280}, 0, {     0,    990}, {0x00, 0x72, 0xca, 0xff}}},\n    {{{   179,   -600,  -1304}, 0, { 11414,    990}, {0x00, 0x72, 0xca, 0xff}}},\n    {{{  -178,   -600,  -1304}, 0, { 11414,   -440}, {0x00, 0x72, 0xca, 0xff}}},\n};\n\n// 0x070065B0 - 0x070065F8\nstatic const Gfx wf_seg7_dl_070065B0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wf_seg7_lights_07006558.l, 1),\n    gsSPLight(&wf_seg7_lights_07006558.a, 2),\n    gsSPVertex(wf_seg7_vertex_07006570, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070065F8 - 0x07006668\nconst Gfx wf_seg7_dl_070065F8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_070065B0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/6/geo.inc.c",
    "content": "// 0x0E000820\nconst GeoLayout wf_geo_000820[] = {\n    GEO_CULLING_RADIUS(1800),\n    GEO_OPEN_NODE(),\n        GEO_RENDER_RANGE(-2048, 5000),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, wf_seg7_dl_070064E8),\n        GEO_CLOSE_NODE(),\n        GEO_RENDER_RANGE(5000, 32767),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, wf_seg7_dl_070065F8),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/7/geo.inc.c",
    "content": "// 0x0E000860\nconst GeoLayout wf_geo_000860[] = {\n    GEO_CULLING_RADIUS(1400),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, wf_seg7_dl_07006820),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/7/model.inc.c",
    "content": "// 0x07006668 - 0x07006680\nstatic const Lights1 wf_seg7_lights_07006668 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07006680 - 0x070066C0\nstatic const Vtx wf_seg7_vertex_07006680[] = {\n    {{{   256,   1075,   -255}, 0, { -9228,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,   1075,   -255}, 0, { -9228,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,   1075,    256}, 0, {-11272,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,   1075,    256}, 0, {-11272,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x070066C0 - 0x07006780\nstatic const Vtx wf_seg7_vertex_070066C0[] = {\n    {{{   256,   1075,    256}, 0, {  3034,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,      0,   -255}, 0, {  5078,   4258}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,   1075,   -255}, 0, {  5078,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,      0,    256}, 0, {  3034,   4258}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{  -255,   1075,    256}, 0, { -1052,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,      0,    256}, 0, {   990,   4258}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,   1075,    256}, 0, {   990,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -255,      0,    256}, 0, { -1052,   4258}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   256,   1075,   -255}, 0, { -1052,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -255,      0,   -255}, 0, {   990,   4258}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -255,   1075,   -255}, 0, {   990,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   256,      0,   -255}, 0, { -1052,   4258}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x07006780 - 0x070067C8\nstatic const Gfx wf_seg7_dl_07006780[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wf_seg7_lights_07006668.l, 1),\n    gsSPLight(&wf_seg7_lights_07006668.a, 2),\n    gsSPVertex(wf_seg7_vertex_07006680, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070067C8 - 0x07006820\nstatic const Gfx wf_seg7_dl_070067C8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_070066C0, 12, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07006820 - 0x07006898\nconst Gfx wf_seg7_dl_07006820[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_07006780),\n    gsSPDisplayList(wf_seg7_dl_070067C8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/8/geo.inc.c",
    "content": "// 0x0E000878\nconst GeoLayout wf_geo_000878[] = {\n    GEO_CULLING_RADIUS(9000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_ALPHA, wf_seg7_dl_07007220),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/8/model.inc.c",
    "content": "// 0x07006898 - 0x07006988\nstatic const Vtx wf_seg7_vertex_07006898[] = {\n    {{{ -2508,   1024,   4096}, 0, {  1500,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2508,   1152,   4096}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1023,   1152,   4096}, 0, { -5140,   6098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1023,   1024,   4096}, 0, { -4630,   6610}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1535,   2560,   1536}, 0, { -5304,  -4284}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2047,   2662,    512}, 0, {   918,    918}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1535,   2662,   1536}, 0, { -4792,  -4794}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2047,   2560,    512}, 0, {   408,   1428}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -273,   2560,  -2833}, 0, {   480,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1536,   2560,  -1023}, 0, { 13254, -11274}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1536,   2662,  -1023}, 0, { 12744, -11786}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -273,   2662,  -2833}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3120,   4096,    330}, 0, {  2524,    994}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2881,   4352,    468}, 0, {  1502,    -66}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2881,   4096,    468}, 0, {  1502,    994}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07006988 - 0x07006A68\nstatic const Vtx wf_seg7_vertex_07006988[] = {\n    {{{  3226,   2432,      0}, 0, {  -132,   1090}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2560,   2304,      0}, 0, {  3034,  -1054}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3226,   2304,      0}, 0, {   376,   1602}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2560,   2432,      0}, 0, {  2524,  -1566}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2048,   2688,      0}, 0, {  3546,  -4632}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2048,   2560,      0}, 0, {  4056,  -4120}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2048,   2560,   1024}, 0, { -3096,   5076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2048,   2560,      0}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2048,   2688,      0}, 0, {   478,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2048,   2688,   1024}, 0, { -3606,   4566}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2881,   4096,    468}, 0, {  1502,    994}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2641,   4352,    330}, 0, {   480,    -66}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2641,   4096,    330}, 0, {   480,    994}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2881,   4352,    468}, 0, {  1502,    -66}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07006A68 - 0x07006B58\nstatic const Vtx wf_seg7_vertex_07006A68[] = {\n    {{{ -2047,   2662,  -2409}, 0, {   478,    480}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2047,   2560,  -1023}, 0, { -5966,   7946}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2047,   2560,  -2409}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2641,   4096,    330}, 0, {  6612,    994}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2641,   4352,    330}, 0, {  6612,    -66}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2641,   4352,     54}, 0, {  5590,    -66}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2641,   4096,     54}, 0, {  5590,    994}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2881,   4352,    -83}, 0, {  4568,    -66}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2881,   4096,    -83}, 0, {  4568,    994}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3120,   4352,     54}, 0, {  3546,    -66}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3120,   4096,     54}, 0, {  3546,    994}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3120,   4352,    330}, 0, {  2524,    -66}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3120,   4096,    330}, 0, {  2524,    994}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2881,   4352,    468}, 0, {  1502,    -66}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2047,   2662,  -1023}, 0, { -6476,   7434}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07006B58 - 0x07006C48\nstatic const Vtx wf_seg7_vertex_07006B58[] = {\n    {{{ -3276,    384,  -1535}, 0, {  5078,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2047,    512,  -1535}, 0, {  -336,   1294}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3276,    512,  -1535}, 0, {  4566,  -3608}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2047,   2560,  -2409}, 0, {   478,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -273,   2662,  -2833}, 0, {  8344,  -7386}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2047,   2662,  -2409}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -273,   2560,  -2833}, 0, {  8854,  -6874}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4096,   1075,  -4095}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4096,   1203,  -4095}, 0, {   478,    478}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2458,   1203,  -4095}, 0, { -6060,   7018}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2458,   1075,  -4095}, 0, { -5548,   7528}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2047,   2560,    512}, 0, { -6736,   8716}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2047,   2560,  -1023}, 0, {   926,   1052}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2047,   2662,  -1023}, 0, {   416,    542}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2047,   2662,    512}, 0, { -7248,   8206}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07006C48 - 0x07006D38\nstatic const Vtx wf_seg7_vertex_07006C48[] = {\n    {{{  4096,   1075,  -4095}, 0, {   478,   1498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4096,   1203,  -3071}, 0, {  4056,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4096,   1203,  -4095}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3276,    384,  -1535}, 0, {  5078,  -3098}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2047,    384,  -1535}, 0, {   172,   1806}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2047,    512,  -1535}, 0, {  -336,   1294}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3276,    384,    640}, 0, {   480,   1498}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3276,    512,  -1535}, 0, {  7122,  -6164}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3276,    512,    640}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3276,    384,  -1535}, 0, {  7634,  -5654}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3276,    384,    640}, 0, {  3544,  -1564}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2508,    512,    640}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2508,    384,    640}, 0, {   478,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3276,    512,    640}, 0, {  3034,  -2076}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4096,   1075,  -3071}, 0, {  4566,  -2588}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07006D38 - 0x07006D98\nstatic const Vtx wf_seg7_vertex_07006D38[] = {\n    {{{ -2508,    384,    640}, 0, { 17342, -10252}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2508,   1152,   3072}, 0, {  4786,  -2368}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2508,   1024,   3072}, 0, {  5298,  -1856}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2508,    512,    640}, 0, { 16832, -10762}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2508,   1024,   4096}, 0, {   478,   1500}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2508,   1152,   4096}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07006D98 - 0x07006E88\nstatic const Vtx wf_seg7_vertex_07006D98[] = {\n    {{{  5120,    384,   2816}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5120,    384,      0}, 0, {-21492,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5120,    256,      0}, 0, {-21492,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4608,    256,   5632}, 0, {  1662,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5120,    384,   5120}, 0, { -4118,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5120,    256,   5120}, 0, { -4118,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4608,    384,   5632}, 0, {  1662,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4608,    256,   -511}, 0, {   876,    988}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4096,    384,   -511}, 0, { -3210,    -34}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4096,    256,   -511}, 0, { -3210,    988}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4608,    384,   -511}, 0, {   876,    -34}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5120,    256,      0}, 0, {  5612,    986}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4608,    384,   -511}, 0, {  -168,    -36}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4608,    256,   -511}, 0, {  -168,    986}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5120,    384,      0}, 0, {  5612,    -36}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07006E88 - 0x07006F78\nstatic const Vtx wf_seg7_vertex_07006E88[] = {\n    {{{  2048,    256,   5120}, 0, {  5078,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2048,    384,   5120}, 0, {  5078,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2560,    384,   5632}, 0, {  -702,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5120,    384,   2816}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5120,    256,      0}, 0, {-21492,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5120,    256,   2816}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5120,    256,   5120}, 0, {   990,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5120,    384,   2816}, 0, {-21492,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5120,    256,   2816}, 0, {-21492,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  5120,    384,   5120}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2560,    256,   5632}, 0, { 20408,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4608,    384,   5632}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4608,    256,   5632}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2560,    384,   5632}, 0, { 20408,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2560,    256,   5632}, 0, {  -702,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07006F78 - 0x07006FB8\nstatic const Vtx wf_seg7_vertex_07006F78[] = {\n    {{{  2048,    256,   4096}, 0, { 12232,    990}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2048,    384,   4096}, 0, { 12232,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2048,    384,   5120}, 0, {     0,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2048,    256,   5120}, 0, {     0,    990}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07006FB8 - 0x07007168\nstatic const Gfx wf_seg7_dl_07006FB8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_07006898, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wf_seg7_vertex_07006988, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSPVertex(wf_seg7_vertex_07006A68, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(wf_seg7_vertex_07006B58, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(wf_seg7_vertex_07006C48, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(wf_seg7_vertex_07006D38, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  1,  5,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007168 - 0x07007220\nstatic const Gfx wf_seg7_dl_07007168[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_0900A000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_07006D98, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(wf_seg7_vertex_07006E88, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(wf_seg7_vertex_07006F78, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007220 - 0x07007298\nconst Gfx wf_seg7_dl_07007220[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_07006FB8),\n    gsSPDisplayList(wf_seg7_dl_07007168),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/9/geo.inc.c",
    "content": "// 0x0E000890\nconst GeoLayout wf_geo_000890[] = {\n    GEO_CULLING_RADIUS(1000),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, wf_seg7_dl_07007518),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/9/model.inc.c",
    "content": "// 0x07007298 - 0x070072B0\nstatic const Lights1 wf_seg7_lights_07007298 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x070072B0 - 0x070073A0\nstatic const Vtx wf_seg7_vertex_070072B0[] = {\n    {{{  -255,     65,    256}, 0, { -1308,    338}, {0x00, 0xe7, 0x7c, 0xff}}},\n    {{{   205,    -62,    230}, 0, {   990,    990}, {0x00, 0xe7, 0x7c, 0xff}}},\n    {{{   256,     65,    256}, 0, {  1246,    338}, {0x00, 0xe7, 0x7c, 0xff}}},\n    {{{   256,     65,    256}, 0, {  -158,    302}, {0x75, 0xd1, 0x00, 0xff}}},\n    {{{   205,    -62,   -229}, 0, {  2268,    990}, {0x75, 0xd1, 0x00, 0xff}}},\n    {{{   256,     65,   -255}, 0, {  2396,    302}, {0x75, 0xd1, 0x00, 0xff}}},\n    {{{   205,    -62,    230}, 0, {     0,    990}, {0x75, 0xd1, 0x00, 0xff}}},\n    {{{   256,     65,   -255}, 0, { -1308,    338}, {0x00, 0xe7, 0x84, 0xff}}},\n    {{{   205,    -62,   -229}, 0, { -1052,    990}, {0x00, 0xe7, 0x84, 0xff}}},\n    {{{  -204,    -62,   -229}, 0, {   990,    990}, {0x00, 0xe7, 0x84, 0xff}}},\n    {{{  -255,     65,   -255}, 0, {  1246,    338}, {0x00, 0xe7, 0x84, 0xff}}},\n    {{{  -255,     65,   -255}, 0, { -1562,      0}, {0x8b, 0xd1, 0x00, 0xff}}},\n    {{{  -204,    -62,    230}, 0, {   862,    656}, {0x8b, 0xd1, 0x00, 0xff}}},\n    {{{  -255,     65,    256}, 0, {   990,      0}, {0x8b, 0xd1, 0x00, 0xff}}},\n    {{{  -204,    -62,   -229}, 0, { -1436,    656}, {0x8b, 0xd1, 0x00, 0xff}}},\n};\n\n// 0x070073A0 - 0x07007410\nstatic const Vtx wf_seg7_vertex_070073A0[] = {\n    {{{   205,    -62,    230}, 0, { -1052,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -204,    -62,    230}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -204,    -62,   -229}, 0, {   990,  -1310}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -255,     65,    256}, 0, { -1308,    338}, {0x00, 0xe7, 0x7c, 0xff}}},\n    {{{  -204,    -62,    230}, 0, { -1052,    990}, {0x00, 0xe7, 0x7c, 0xff}}},\n    {{{   205,    -62,    230}, 0, {   990,    990}, {0x00, 0xe7, 0x7c, 0xff}}},\n    {{{   205,    -62,   -229}, 0, { -1052,  -1310}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x07007410 - 0x07007450\nstatic const Vtx wf_seg7_vertex_07007410[] = {\n    {{{   256,     65,   -255}, 0, {   990,  -1566}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,     65,    256}, 0, { -1564,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,     65,    256}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,     65,   -255}, 0, { -1564,  -1566}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x07007450 - 0x070074E0\nstatic const Gfx wf_seg7_dl_07007450[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wf_seg7_lights_07007298.l, 1),\n    gsSPLight(&wf_seg7_lights_07007298.a, 2),\n    gsSPVertex(wf_seg7_vertex_070072B0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(wf_seg7_vertex_070073A0, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  2,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070074E0 - 0x07007518\nstatic const Gfx wf_seg7_dl_070074E0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_07007410, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07007518 - 0x07007590\nconst Gfx wf_seg7_dl_07007518[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_07007450),\n    gsSPDisplayList(wf_seg7_dl_070074E0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/collision.inc.c",
    "content": "// 0x070102D8 - 0x07011C36\nconst Collision wf_seg7_collision_070102D8[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x1A6),\n    COL_VERTEX(3584, 2304, -511),\n    COL_VERTEX(3226, 2304, 0),\n    COL_VERTEX(3584, 2304, 0),\n    COL_VERTEX(3226, 2304, -511),\n    COL_VERTEX(4096, 1075, -4095),\n    COL_VERTEX(3226, 1075, -3071),\n    COL_VERTEX(4096, 1075, -3071),\n    COL_VERTEX(2458, 1075, -4095),\n    COL_VERTEX(2458, 1075, -3071),\n    COL_VERTEX(1536, 3584, -1023),\n    COL_VERTEX(1024, 3584, -511),\n    COL_VERTEX(1536, 3584, 1024),\n    COL_VERTEX(-423, 3584, -1959),\n    COL_VERTEX(-1023, 3584, 1536),\n    COL_VERTEX(-1023, 3584, -511),\n    COL_VERTEX(1024, 3584, 1536),\n    COL_VERTEX(4096, 512, 3840),\n    COL_VERTEX(3226, 512, 3840),\n    COL_VERTEX(3226, 512, 4096),\n    COL_VERTEX(4096, 512, 4096),\n    COL_VERTEX(5120, 256, 4096),\n    COL_VERTEX(2048, 256, 4096),\n    COL_VERTEX(2048, 256, 5120),\n    COL_VERTEX(2560, 256, 5632),\n    COL_VERTEX(4608, 256, 5632),\n    COL_VERTEX(5120, 256, 5120),\n    COL_VERTEX(4608, 256, -511),\n    COL_VERTEX(4096, 256, -511),\n    COL_VERTEX(4096, 256, 3072),\n    COL_VERTEX(5120, 256, 0),\n    COL_VERTEX(4480, 256, 3840),\n    COL_VERTEX(1117, 3584, -2639),\n    COL_VERTEX(4480, 256, 4096),\n    COL_VERTEX(733, 3584, -2255),\n    COL_VERTEX(861, 3584, -2127),\n    COL_VERTEX(1245, 3584, -2511),\n    COL_VERTEX(1373, 3584, -2383),\n    COL_VERTEX(1373, 3584, -2767),\n    COL_VERTEX(989, 3584, -2767),\n    COL_VERTEX(3226, 2432, 0),\n    COL_VERTEX(2560, 2432, 0),\n    COL_VERTEX(2560, 2304, 0),\n    COL_VERTEX(3226, 2432, -40),\n    COL_VERTEX(3226, 2452, -19),\n    COL_VERTEX(2048, 2688, 0),\n    COL_VERTEX(2048, 2560, 0),\n    COL_VERTEX(3226, 2304, -40),\n    COL_VERTEX(2048, 2560, 1024),\n    COL_VERTEX(2048, 2688, 1024),\n    COL_VERTEX(2007, 2560, 1024),\n    COL_VERTEX(2028, 2708, 0),\n    COL_VERTEX(2048, 2708, -19),\n    COL_VERTEX(2007, 2688, 1024),\n    COL_VERTEX(2028, 2708, 1024),\n    COL_VERTEX(2007, 2688, 0),\n    COL_VERTEX(2048, 2560, -40),\n    COL_VERTEX(2560, 2432, -40),\n    COL_VERTEX(2560, 2304, -40),\n    COL_VERTEX(-2047, 2432, -1023),\n    COL_VERTEX(-1945, 1024, 3994),\n    COL_VERTEX(-1945, 512, 3994),\n    COL_VERTEX(-1740, 1024, 3994),\n    COL_VERTEX(-1740, 1024, 3789),\n    COL_VERTEX(-1945, 1024, 3789),\n    COL_VERTEX(-1535, 2560, 1536),\n    COL_VERTEX(-2047, 2560, 512),\n    COL_VERTEX(-2047, 2662, -2409),\n    COL_VERTEX(-3276, 384, -1535),\n    COL_VERTEX(-2508, 1024, 4096),\n    COL_VERTEX(-3276, 384, 640),\n    COL_VERTEX(5120, 384, 2816),\n    COL_VERTEX(-273, 2560, -2833),\n    COL_VERTEX(-2047, 2560, -2409),\n    COL_VERTEX(-2508, 384, 640),\n    COL_VERTEX(-2508, 1152, 3072),\n    COL_VERTEX(-2252, 1792, -737),\n    COL_VERTEX(-2252, 1792, -833),\n    COL_VERTEX(-2380, 1792, -737),\n    COL_VERTEX(-2380, 1792, -833),\n    COL_VERTEX(-2687, 1792, -833),\n    COL_VERTEX(-2687, 1792, -737),\n    COL_VERTEX(-2815, 1792, -737),\n    COL_VERTEX(-2815, 1792, -833),\n    COL_VERTEX(-2687, 1792, 222),\n    COL_VERTEX(-2687, 1792, 318),\n    COL_VERTEX(-2815, 1792, 318),\n    COL_VERTEX(-2815, 1792, 222),\n    COL_VERTEX(-2252, 1792, 318),\n    COL_VERTEX(-2252, 1792, 222),\n    COL_VERTEX(-2380, 1792, 318),\n    COL_VERTEX(-2380, 1792, 222),\n    COL_VERTEX(-2073, 2662, 512),\n    COL_VERTEX(-2073, 2662, -1023),\n    COL_VERTEX(2624, 4352, 340),\n    COL_VERTEX(2624, 4352, 44),\n    COL_VERTEX(2624, 4055, 340),\n    COL_VERTEX(2881, 4352, 489),\n    COL_VERTEX(2881, 4352, 448),\n    COL_VERTEX(3103, 4352, 320),\n    COL_VERTEX(2881, 4096, -63),\n    COL_VERTEX(2659, 4352, 320),\n    COL_VERTEX(3138, 4352, 340),\n    COL_VERTEX(3103, 4352, 64),\n    COL_VERTEX(3138, 4352, 44),\n    COL_VERTEX(2881, 4352, -63),\n    COL_VERTEX(2881, 4352, -104),\n    COL_VERTEX(2659, 4352, 64),\n    COL_VERTEX(2048, 2688, -40),\n    COL_VERTEX(2007, 2560, 0),\n    COL_VERTEX(-2047, 1792, -833),\n    COL_VERTEX(-2047, 1792, 318),\n    COL_VERTEX(-2047, 2432, 512),\n    COL_VERTEX(-1945, 512, 3789),\n    COL_VERTEX(-1740, 512, 3994),\n    COL_VERTEX(-1740, 512, 3789),\n    COL_VERTEX(-2047, 2662, 512),\n    COL_VERTEX(-2047, 2560, -1023),\n    COL_VERTEX(-2047, 2662, -1023),\n    COL_VERTEX(-1535, 2662, 1536),\n    COL_VERTEX(-2047, 384, -1535),\n    COL_VERTEX(-2047, 512, -1535),\n    COL_VERTEX(-3276, 512, -1535),\n    COL_VERTEX(-2508, 1152, 4096),\n    COL_VERTEX(-1023, 1152, 4096),\n    COL_VERTEX(-1023, 1024, 4096),\n    COL_VERTEX(-3276, 512, 640),\n    COL_VERTEX(-2508, 512, 640),\n    COL_VERTEX(4608, 384, 5632),\n    COL_VERTEX(5120, 384, 5120),\n    COL_VERTEX(5120, 256, 2816),\n    COL_VERTEX(2560, 384, 5632),\n    COL_VERTEX(5120, 384, 0),\n    COL_VERTEX(4096, 384, -511),\n    COL_VERTEX(4608, 384, -511),\n    COL_VERTEX(2048, 384, 5120),\n    COL_VERTEX(2048, 384, 4096),\n    COL_VERTEX(4096, 1203, -3071),\n    COL_VERTEX(4096, 1203, -4095),\n    COL_VERTEX(2458, 1203, -4095),\n    COL_VERTEX(1536, 2560, -1023),\n    COL_VERTEX(1536, 2662, -1023),\n    COL_VERTEX(-273, 2662, -2833),\n    COL_VERTEX(-2508, 1024, 3072),\n    COL_VERTEX(-2252, 2432, -737),\n    COL_VERTEX(-2380, 2432, -737),\n    COL_VERTEX(-2380, 2432, -833),\n    COL_VERTEX(-2252, 2432, -833),\n    COL_VERTEX(-2687, 2432, -737),\n    COL_VERTEX(-2815, 2432, -737),\n    COL_VERTEX(-2687, 2432, -833),\n    COL_VERTEX(-2815, 2432, -833),\n    COL_VERTEX(-2687, 2432, 318),\n    COL_VERTEX(-2815, 2432, 318),\n    COL_VERTEX(-2815, 2432, 222),\n    COL_VERTEX(-2687, 2432, 222),\n    COL_VERTEX(-2252, 2432, 318),\n    COL_VERTEX(-2380, 2432, 318),\n    COL_VERTEX(-2380, 2432, 222),\n    COL_VERTEX(-2252, 2432, 222),\n    COL_VERTEX(-2073, 2560, 512),\n    COL_VERTEX(-2073, 2560, -1023),\n    COL_VERTEX(2881, 4055, 489),\n    COL_VERTEX(3138, 4055, 340),\n    COL_VERTEX(2624, 4055, 44),\n    COL_VERTEX(2881, 4055, -104),\n    COL_VERTEX(3138, 4055, 44),\n    COL_VERTEX(2659, 4096, 320),\n    COL_VERTEX(2881, 4096, 448),\n    COL_VERTEX(2659, 4096, 64),\n    COL_VERTEX(3103, 4096, 320),\n    COL_VERTEX(3103, 4096, 64),\n    COL_VERTEX(2560, 2452, -19),\n    COL_VERTEX(2560, 2304, -511),\n    COL_VERTEX(2048, 2560, -1023),\n    COL_VERTEX(2048, 2560, -511),\n    COL_VERTEX(-2690, 1203, -34),\n    COL_VERTEX(-2690, 1203, -783),\n    COL_VERTEX(-2047, 1203, -783),\n    COL_VERTEX(-2738, 1331, 13),\n    COL_VERTEX(-2047, 1203, -34),\n    COL_VERTEX(-2738, 1331, -831),\n    COL_VERTEX(-2047, 1331, -831),\n    COL_VERTEX(-2047, 1331, 13),\n    COL_VERTEX(741, 2560, 2252),\n    COL_VERTEX(1766, 2560, 2252),\n    COL_VERTEX(1766, 2586, 2252),\n    COL_VERTEX(1766, 2560, 2355),\n    COL_VERTEX(2202, 2560, 2175),\n    COL_VERTEX(2202, 2560, 2943),\n    COL_VERTEX(2202, 2432, 2943),\n    COL_VERTEX(1536, 2560, 2175),\n    COL_VERTEX(741, 2560, 2355),\n    COL_VERTEX(1536, 2560, 2943),\n    COL_VERTEX(3226, 922, 3635),\n    COL_VERTEX(3021, 922, 3635),\n    COL_VERTEX(3021, 922, 3840),\n    COL_VERTEX(3021, 922, 4045),\n    COL_VERTEX(3226, 1024, 3840),\n    COL_VERTEX(3021, 1024, 4045),\n    COL_VERTEX(2560, 922, 2048),\n    COL_VERTEX(3584, 1024, 3635),\n    COL_VERTEX(1024, 2560, 1664),\n    COL_VERTEX(1024, 922, 1664),\n    COL_VERTEX(512, 922, 3072),\n    COL_VERTEX(1664, 922, 1024),\n    COL_VERTEX(3226, 1076, -3071),\n    COL_VERTEX(3226, 2304, -1023),\n    COL_VERTEX(-2047, 1024, 3072),\n    COL_VERTEX(-1023, 1024, 3072),\n    COL_VERTEX(-1023, 2025, 1536),\n    COL_VERTEX(-1023, 1024, 4045),\n    COL_VERTEX(-1192, 2560, 2565),\n    COL_VERTEX(-1023, 2560, 1536),\n    COL_VERTEX(-1023, 2560, 2565),\n    COL_VERTEX(512, 2025, 1536),\n    COL_VERTEX(3584, 512, 3840),\n    COL_VERTEX(3584, 1024, 3840),\n    COL_VERTEX(-423, 2560, -1959),\n    COL_VERTEX(-1023, 2560, -511),\n    COL_VERTEX(1024, 2560, -511),\n    COL_VERTEX(2509, 2304, 0),\n    COL_VERTEX(2509, 2304, -511),\n    COL_VERTEX(2048, 2534, 0),\n    COL_VERTEX(2048, 2534, -511),\n    COL_VERTEX(1536, 2560, 1024),\n    COL_VERTEX(1536, 2560, -511),\n    COL_VERTEX(3584, 1075, -3071),\n    COL_VERTEX(4096, 1075, 1536),\n    COL_VERTEX(3712, 954, 2033),\n    COL_VERTEX(3584, 1075, 1536),\n    COL_VERTEX(4096, 1075, -511),\n    COL_VERTEX(3584, 2122, -891),\n    COL_VERTEX(512, 2560, 1536),\n    COL_VERTEX(512, 2560, 2565),\n    COL_VERTEX(696, 2560, 2565),\n    COL_VERTEX(-3071, 2432, -1023),\n    COL_VERTEX(-3071, 2560, 512),\n    COL_VERTEX(-2047, 0, -4095),\n    COL_VERTEX(3226, 1024, 4096),\n    COL_VERTEX(4096, 0, -4095),\n    COL_VERTEX(-2047, 1664, 318),\n    COL_VERTEX(-255, 2816, 1536),\n    COL_VERTEX(-127, 2560, 2099),\n    COL_VERTEX(-127, 2560, 1536),\n    COL_VERTEX(-383, 2560, 1536),\n    COL_VERTEX(512, 1792, 3072),\n    COL_VERTEX(-2508, 0, 640),\n    COL_VERTEX(-2508, 0, 3072),\n    COL_VERTEX(799, 3584, -735),\n    COL_VERTEX(800, 2791, -735),\n    COL_VERTEX(881, 3584, -727),\n    COL_VERTEX(2013, 3584, -2895),\n    COL_VERTEX(2013, 3584, -3407),\n    COL_VERTEX(1501, 3584, -2895),\n    COL_VERTEX(1962, 3456, -2920),\n    COL_VERTEX(1501, 3584, -3407),\n    COL_VERTEX(2099, 2534, 0),\n    COL_VERTEX(2099, 2534, -511),\n    COL_VERTEX(2150, 2509, -511),\n    COL_VERTEX(2150, 2483, 0),\n    COL_VERTEX(2150, 2509, 0),\n    COL_VERTEX(2150, 2483, -511),\n    COL_VERTEX(2202, 2458, 0),\n    COL_VERTEX(2202, 2458, -511),\n    COL_VERTEX(2253, 2432, -511),\n    COL_VERTEX(2253, 2432, 0),\n    COL_VERTEX(2304, 2406, 0),\n    COL_VERTEX(2304, 2406, -511),\n    COL_VERTEX(2304, 2432, 0),\n    COL_VERTEX(2355, 2381, -511),\n    COL_VERTEX(2355, 2381, 0),\n    COL_VERTEX(2406, 2355, 0),\n    COL_VERTEX(2406, 2355, -511),\n    COL_VERTEX(2406, 2381, -511),\n    COL_VERTEX(2458, 2330, 0),\n    COL_VERTEX(2458, 2330, -511),\n    COL_VERTEX(2458, 2355, 0),\n    COL_VERTEX(5120, 0, 0),\n    COL_VERTEX(5120, 0, 5120),\n    COL_VERTEX(4608, 0, 5632),\n    COL_VERTEX(2048, 0, 5120),\n    COL_VERTEX(2560, 0, 5632),\n    COL_VERTEX(2048, 0, 4096),\n    COL_VERTEX(-2508, -3071, 4096),\n    COL_VERTEX(4096, 256, 4096),\n    COL_VERTEX(4096, 0, -511),\n    COL_VERTEX(4608, 0, -511),\n    COL_VERTEX(3712, 599, 3525),\n    COL_VERTEX(3968, 599, 3401),\n    COL_VERTEX(3712, 802, 2779),\n    COL_VERTEX(3840, 893, 2282),\n    COL_VERTEX(3840, 751, 2779),\n    COL_VERTEX(4096, 1075, -2559),\n    COL_VERTEX(3584, 1075, -2047),\n    COL_VERTEX(4096, 1075, -2047),\n    COL_VERTEX(4096, 1075, -1535),\n    COL_VERTEX(4096, 1075, -1023),\n    COL_VERTEX(3584, 1075, -1023),\n    COL_VERTEX(3584, 1757, -2031),\n    COL_VERTEX(3584, 1584, -2412),\n    COL_VERTEX(3584, 1575, -2031),\n    COL_VERTEX(3226, 1392, -2412),\n    COL_VERTEX(3584, 1392, -2412),\n    COL_VERTEX(3584, 2304, -891),\n    COL_VERTEX(3584, 1939, -1271),\n    COL_VERTEX(3584, 2122, -1271),\n    COL_VERTEX(3584, 1757, -1651),\n    COL_VERTEX(3584, 1939, -1651),\n    COL_VERTEX(3584, 1396, -2602),\n    COL_VERTEX(-2430, 1664, -190),\n    COL_VERTEX(-2047, 1664, -833),\n    COL_VERTEX(-2430, 1664, -320),\n    COL_VERTEX(-2943, 1664, 318),\n    COL_VERTEX(-2559, 1664, -190),\n    COL_VERTEX(-2943, 1792, 318),\n    COL_VERTEX(-2943, 1792, -833),\n    COL_VERTEX(-2559, 1664, -320),\n    COL_VERTEX(-2943, 1664, -833),\n    COL_VERTEX(-3276, 0, 640),\n    COL_VERTEX(1925, 2560, -204),\n    COL_VERTEX(1280, 2560, -1023),\n    COL_VERTEX(1373, 3456, -2767),\n    COL_VERTEX(861, 3456, -2127),\n    COL_VERTEX(1117, 3456, -2639),\n    COL_VERTEX(1766, 2586, 2355),\n    COL_VERTEX(741, 2586, 2252),\n    COL_VERTEX(741, 2586, 2355),\n    COL_VERTEX(1536, 2432, 2175),\n    COL_VERTEX(2202, 2432, 2175),\n    COL_VERTEX(1536, 2432, 2943),\n    COL_VERTEX(3226, 1024, 3635),\n    COL_VERTEX(-1023, 922, 4045),\n    COL_VERTEX(-1023, 922, 3072),\n    COL_VERTEX(3072, 922, 2048),\n    COL_VERTEX(1664, 2560, 1024),\n    COL_VERTEX(3226, 1584, -2412),\n    COL_VERTEX(3226, 2304, -891),\n    COL_VERTEX(-1023, 1792, 3072),\n    COL_VERTEX(1024, 2560, 1536),\n    COL_VERTEX(-3071, 2560, -1023),\n    COL_VERTEX(-3071, 2432, 512),\n    COL_VERTEX(3584, 802, 2655),\n    COL_VERTEX(3968, 821, 2406),\n    COL_VERTEX(2509, 2330, -511),\n    COL_VERTEX(2509, 2330, 0),\n    COL_VERTEX(2099, 2509, 0),\n    COL_VERTEX(3584, 0, -511),\n    COL_VERTEX(3584, 0, -3071),\n    COL_VERTEX(3584, 1075, -511),\n    COL_VERTEX(3840, 974, 1909),\n    COL_VERTEX(4096, 0, -3071),\n    COL_VERTEX(3226, 2122, -891),\n    COL_VERTEX(3226, 2122, -1271),\n    COL_VERTEX(-2047, 0, -1535),\n    COL_VERTEX(3226, 256, 4096),\n    COL_VERTEX(512, 0, -4095),\n    COL_VERTEX(-2508, 0, 4096),\n    COL_VERTEX(3226, 0, 4096),\n    COL_VERTEX(-2047, 384, 640),\n    COL_VERTEX(-255, 2816, 2099),\n    COL_VERTEX(-383, 2560, 2099),\n    COL_VERTEX(881, 2791, -727),\n    COL_VERTEX(889, 3584, -646),\n    COL_VERTEX(889, 2791, -646),\n    COL_VERTEX(1962, 3456, -3381),\n    COL_VERTEX(1552, 3456, -2920),\n    COL_VERTEX(1552, 3456, -3381),\n    COL_VERTEX(2099, 2509, -511),\n    COL_VERTEX(2202, 2483, 0),\n    COL_VERTEX(2253, 2458, 0),\n    COL_VERTEX(2202, 2483, -511),\n    COL_VERTEX(2253, 2458, -511),\n    COL_VERTEX(2355, 2406, 0),\n    COL_VERTEX(2355, 2406, -511),\n    COL_VERTEX(2304, 2432, -511),\n    COL_VERTEX(2406, 2381, 0),\n    COL_VERTEX(2458, 2355, -511),\n    COL_VERTEX(5120, 0, 4096),\n    COL_VERTEX(2048, -3071, 4096),\n    COL_VERTEX(3584, 1075, -2559),\n    COL_VERTEX(4096, 0, -2047),\n    COL_VERTEX(4096, 0, -2559),\n    COL_VERTEX(3584, 0, -2559),\n    COL_VERTEX(3584, 0, -2047),\n    COL_VERTEX(3584, 1075, -1535),\n    COL_VERTEX(4096, 0, -1535),\n    COL_VERTEX(4096, 0, -1023),\n    COL_VERTEX(3584, 0, -1535),\n    COL_VERTEX(3584, 0, -1023),\n    COL_VERTEX(3226, 1575, -2031),\n    COL_VERTEX(3226, 1757, -2031),\n    COL_VERTEX(3226, 1939, -1271),\n    COL_VERTEX(3226, 1939, -1651),\n    COL_VERTEX(3226, 1757, -1651),\n    COL_VERTEX(3226, 1396, -2602),\n    COL_VERTEX(-2430, 1792, -190),\n    COL_VERTEX(-2559, 1792, -190),\n    COL_VERTEX(-2559, 1792, -320),\n    COL_VERTEX(-2430, 1792, -320),\n    COL_VERTEX(-3276, 0, -1535),\n    COL_VERTEX(1720, 2560, -204),\n    COL_VERTEX(1720, 2560, 0),\n    COL_VERTEX(1925, 2560, 0),\n    COL_VERTEX(973, 2560, -1023),\n    COL_VERTEX(1126, 2560, -869),\n    COL_VERTEX(1126, 2560, -1177),\n    COL_VERTEX(-2060, 2688, 512),\n    COL_VERTEX(-2060, 2688, -1023),\n    COL_VERTEX(1245, 3456, -2511),\n    COL_VERTEX(1373, 3456, -2383),\n    COL_VERTEX(733, 3456, -2255),\n    COL_VERTEX(989, 3456, -2767),\n    COL_VERTEX(2881, 4372, 468),\n    COL_VERTEX(3120, 4372, 330),\n    COL_VERTEX(3120, 4372, 54),\n    COL_VERTEX(2881, 4372, -83),\n    COL_VERTEX(2641, 4372, 54),\n    COL_VERTEX(2641, 4372, 330),\n    COL_VERTEX(8192, -3071, -8191),\n    COL_VERTEX(-8191, -3071, -8191),\n    COL_VERTEX(8192, -3071, 8192),\n    COL_VERTEX(-8191, -3071, 8192),\n    COL_TRI_INIT(SURFACE_DEFAULT, 409),\n    COL_TRI(175, 176, 177),\n    COL_TRI(178, 175, 179),\n    COL_TRI(175, 177, 179),\n    COL_TRI(180, 175, 178),\n    COL_TRI(180, 176, 175),\n    COL_TRI(177, 176, 180),\n    COL_TRI(177, 180, 181),\n    COL_TRI(178, 179, 182),\n    COL_TRI(178, 182, 181),\n    COL_TRI(178, 181, 180),\n    COL_TRI(191, 326, 325),\n    COL_TRI(183, 185, 184),\n    COL_TRI(184, 324, 186),\n    COL_TRI(184, 185, 324),\n    COL_TRI(185, 325, 326),\n    COL_TRI(183, 325, 185),\n    COL_TRI(185, 326, 324),\n    COL_TRI(186, 324, 326),\n    COL_TRI(186, 326, 191),\n    COL_TRI(187, 327, 190),\n    COL_TRI(187, 328, 327),\n    COL_TRI(188, 328, 187),\n    COL_TRI(191, 325, 183),\n    COL_TRI(188, 189, 328),\n    COL_TRI(189, 327, 328),\n    COL_TRI(190, 327, 329),\n    COL_TRI(189, 329, 327),\n    COL_TRI(190, 329, 192),\n    COL_TRI(186, 183, 184),\n    COL_TRI(186, 191, 183),\n    COL_TRI(192, 189, 188),\n    COL_TRI(192, 329, 189),\n    COL_TRI(193, 194, 330),\n    COL_TRI(196, 203, 331),\n    COL_TRI(194, 197, 330),\n    COL_TRI(194, 195, 197),\n    COL_TRI(196, 195, 202),\n    COL_TRI(195, 194, 202),\n    COL_TRI(197, 196, 198),\n    COL_TRI(196, 197, 195),\n    COL_TRI(198, 196, 331),\n    COL_TRI(196, 202, 203),\n    COL_TRI(193, 330, 1),\n    COL_TRI(199, 193, 333),\n    COL_TRI(200, 330, 197),\n    COL_TRI(193, 199, 202),\n    COL_TRI(199, 204, 202),\n    COL_TRI(201, 202, 204),\n    COL_TRI(202, 194, 193),\n    COL_TRI(204, 199, 47),\n    COL_TRI(3, 206, 172),\n    COL_TRI(3, 172, 41),\n    COL_TRI(205, 335, 206),\n    COL_TRI(3, 205, 206),\n    COL_TRI(0, 336, 3),\n    COL_TRI(173, 139, 9),\n    COL_TRI(173, 225, 224),\n    COL_TRI(173, 224, 47),\n    COL_TRI(173, 9, 225),\n    COL_TRI(206, 173, 172),\n    COL_TRI(5, 205, 3),\n    COL_TRI(207, 208, 64),\n    COL_TRI(208, 213, 337),\n    COL_TRI(208, 209, 213),\n    COL_TRI(209, 208, 332),\n    COL_TRI(210, 332, 208),\n    COL_TRI(61, 208, 62),\n    COL_TRI(61, 124, 208),\n    COL_TRI(63, 208, 207),\n    COL_TRI(63, 62, 208),\n    COL_TRI(64, 208, 337),\n    COL_TRI(212, 211, 213),\n    COL_TRI(207, 64, 111),\n    COL_TRI(64, 65, 111),\n    COL_TRI(64, 212, 65),\n    COL_TRI(211, 64, 337),\n    COL_TRI(212, 64, 211),\n    COL_TRI(209, 212, 213),\n    COL_TRI(213, 211, 337),\n    COL_TRI(214, 232, 209),\n    COL_TRI(212, 209, 232),\n    COL_TRI(212, 232, 13),\n    COL_TRI(210, 331, 332),\n    COL_TRI(203, 332, 331),\n    COL_TRI(65, 116, 236),\n    COL_TRI(65, 236, 111),\n    COL_TRI(65, 212, 116),\n    COL_TRI(124, 61, 68),\n    COL_TRI(68, 61, 59),\n    COL_TRI(68, 59, 63),\n    COL_TRI(68, 63, 142),\n    COL_TRI(215, 16, 287),\n    COL_TRI(215, 287, 341),\n    COL_TRI(216, 197, 215),\n    COL_TRI(215, 197, 17),\n    COL_TRI(215, 229, 200),\n    COL_TRI(215, 200, 216),\n    COL_TRI(217, 10, 219),\n    COL_TRI(200, 197, 216),\n    COL_TRI(2, 229, 226),\n    COL_TRI(2, 200, 229),\n    COL_TRI(217, 12, 10),\n    COL_TRI(218, 12, 217),\n    COL_TRI(72, 217, 71),\n    COL_TRI(219, 10, 9),\n    COL_TRI(219, 71, 217),\n    COL_TRI(219, 139, 71),\n    COL_TRI(139, 219, 9),\n    COL_TRI(218, 14, 12),\n    COL_TRI(41, 220, 45),\n    COL_TRI(220, 222, 45),\n    COL_TRI(220, 41, 221),\n    COL_TRI(116, 212, 218),\n    COL_TRI(45, 222, 174),\n    COL_TRI(222, 256, 223),\n    COL_TRI(174, 222, 223),\n    COL_TRI(172, 221, 41),\n    COL_TRI(221, 172, 223),\n    COL_TRI(172, 174, 223),\n    COL_TRI(223, 256, 257),\n    COL_TRI(221, 343, 220),\n    COL_TRI(212, 13, 14),\n    COL_TRI(218, 212, 14),\n    COL_TRI(224, 225, 11),\n    COL_TRI(224, 201, 334),\n    COL_TRI(224, 11, 15),\n    COL_TRI(224, 15, 338),\n    COL_TRI(201, 224, 338),\n    COL_TRI(225, 9, 11),\n    COL_TRI(47, 334, 204),\n    COL_TRI(201, 204, 334),\n    COL_TRI(200, 1, 330),\n    COL_TRI(72, 218, 217),\n    COL_TRI(226, 346, 347),\n    COL_TRI(226, 348, 346),\n    COL_TRI(72, 116, 218),\n    COL_TRI(3, 41, 1),\n    COL_TRI(200, 2, 1),\n    COL_TRI(227, 349, 290),\n    COL_TRI(227, 229, 349),\n    COL_TRI(16, 227, 342),\n    COL_TRI(227, 290, 342),\n    COL_TRI(227, 348, 229),\n    COL_TRI(227, 230, 348),\n    COL_TRI(228, 229, 341),\n    COL_TRI(229, 228, 349),\n    COL_TRI(27, 230, 227),\n    COL_TRI(27, 227, 16),\n    COL_TRI(27, 16, 28),\n    COL_TRI(228, 290, 349),\n    COL_TRI(230, 346, 348),\n    COL_TRI(230, 285, 346),\n    COL_TRI(226, 347, 350),\n    COL_TRI(226, 350, 6),\n    COL_TRI(4, 6, 350),\n    COL_TRI(226, 0, 2),\n    COL_TRI(231, 303, 0),\n    COL_TRI(0, 303, 336),\n    COL_TRI(15, 13, 232),\n    COL_TRI(232, 201, 338),\n    COL_TRI(232, 338, 15),\n    COL_TRI(233, 232, 214),\n    COL_TRI(234, 201, 232),\n    COL_TRI(234, 232, 233),\n    COL_TRI(109, 58, 72),\n    COL_TRI(235, 339, 116),\n    COL_TRI(58, 235, 116),\n    COL_TRI(236, 116, 339),\n    COL_TRI(58, 116, 72),\n    COL_TRI(237, 109, 72),\n    COL_TRI(119, 237, 353),\n    COL_TRI(237, 310, 109),\n    COL_TRI(237, 119, 310),\n    COL_TRI(17, 197, 18),\n    COL_TRI(238, 18, 197),\n    COL_TRI(19, 18, 354),\n    COL_TRI(7, 355, 138),\n    COL_TRI(239, 355, 7),\n    COL_TRI(203, 233, 214),\n    COL_TRI(207, 111, 110),\n    COL_TRI(207, 110, 240),\n    COL_TRI(238, 356, 357),\n    COL_TRI(238, 68, 356),\n    COL_TRI(19, 354, 284),\n    COL_TRI(4, 350, 239),\n    COL_TRI(239, 7, 4),\n    COL_TRI(7, 138, 8),\n    COL_TRI(207, 240, 358),\n    COL_TRI(240, 119, 358),\n    COL_TRI(198, 331, 210),\n    COL_TRI(210, 124, 238),\n    COL_TRI(198, 238, 197),\n    COL_TRI(210, 238, 198),\n    COL_TRI(63, 207, 142),\n    COL_TRI(241, 359, 242),\n    COL_TRI(241, 242, 243),\n    COL_TRI(242, 359, 360),\n    COL_TRI(243, 242, 360),\n    COL_TRI(244, 360, 359),\n    COL_TRI(244, 359, 241),\n    COL_TRI(243, 360, 244),\n    COL_TRI(203, 245, 233),\n    COL_TRI(203, 202, 234),\n    COL_TRI(203, 234, 245),\n    COL_TRI(202, 201, 234),\n    COL_TRI(245, 234, 233),\n    COL_TRI(240, 310, 119),\n    COL_TRI(251, 254, 364),\n    COL_TRI(246, 247, 142),\n    COL_TRI(247, 356, 68),\n    COL_TRI(247, 68, 142),\n    COL_TRI(246, 142, 73),\n    COL_TRI(248, 250, 361),\n    COL_TRI(248, 361, 249),\n    COL_TRI(248, 362, 250),\n    COL_TRI(249, 361, 363),\n    COL_TRI(250, 363, 361),\n    COL_TRI(250, 362, 363),\n    COL_TRI(251, 364, 252),\n    COL_TRI(252, 253, 251),\n    COL_TRI(254, 365, 366),\n    COL_TRI(254, 366, 364),\n    COL_TRI(253, 365, 254),\n    COL_TRI(253, 254, 251),\n    COL_TRI(252, 364, 366),\n    COL_TRI(252, 366, 255),\n    COL_TRI(252, 255, 253),\n    COL_TRI(255, 366, 365),\n    COL_TRI(255, 365, 253),\n    COL_TRI(256, 345, 257),\n    COL_TRI(257, 345, 367),\n    COL_TRI(258, 367, 260),\n    COL_TRI(259, 258, 260),\n    COL_TRI(260, 367, 345),\n    COL_TRI(266, 372, 267),\n    COL_TRI(259, 368, 261),\n    COL_TRI(261, 258, 259),\n    COL_TRI(262, 369, 263),\n    COL_TRI(263, 370, 262),\n    COL_TRI(262, 370, 368),\n    COL_TRI(261, 368, 370),\n    COL_TRI(264, 371, 265),\n    COL_TRI(265, 268, 264),\n    COL_TRI(265, 371, 369),\n    COL_TRI(263, 369, 371),\n    COL_TRI(273, 269, 375),\n    COL_TRI(267, 372, 373),\n    COL_TRI(268, 266, 374),\n    COL_TRI(264, 268, 374),\n    COL_TRI(267, 374, 266),\n    COL_TRI(269, 373, 270),\n    COL_TRI(270, 375, 269),\n    COL_TRI(270, 373, 372),\n    COL_TRI(271, 276, 272),\n    COL_TRI(272, 273, 271),\n    COL_TRI(271, 273, 375),\n    COL_TRI(274, 344, 275),\n    COL_TRI(275, 344, 343),\n    COL_TRI(275, 376, 274),\n    COL_TRI(272, 276, 376),\n    COL_TRI(276, 274, 376),\n    COL_TRI(220, 343, 344),\n    COL_TRI(277, 20, 377),\n    COL_TRI(20, 278, 377),\n    COL_TRI(20, 25, 278),\n    COL_TRI(277, 29, 20),\n    COL_TRI(278, 24, 279),\n    COL_TRI(278, 25, 24),\n    COL_TRI(279, 24, 23),\n    COL_TRI(279, 23, 281),\n    COL_TRI(280, 21, 282),\n    COL_TRI(280, 22, 21),\n    COL_TRI(281, 22, 280),\n    COL_TRI(282, 356, 283),\n    COL_TRI(283, 378, 282),\n    COL_TRI(281, 23, 22),\n    COL_TRI(286, 26, 29),\n    COL_TRI(16, 30, 28),\n    COL_TRI(284, 32, 19),\n    COL_TRI(16, 32, 30),\n    COL_TRI(16, 19, 32),\n    COL_TRI(285, 26, 286),\n    COL_TRI(285, 27, 26),\n    COL_TRI(286, 29, 277),\n    COL_TRI(287, 289, 341),\n    COL_TRI(16, 288, 287),\n    COL_TRI(288, 291, 287),\n    COL_TRI(287, 291, 289),\n    COL_TRI(289, 228, 341),\n    COL_TRI(16, 342, 288),\n    COL_TRI(290, 288, 342),\n    COL_TRI(290, 291, 288),\n    COL_TRI(228, 291, 290),\n    COL_TRI(291, 228, 289),\n    COL_TRI(292, 293, 294),\n    COL_TRI(295, 384, 297),\n    COL_TRI(292, 379, 293),\n    COL_TRI(293, 380, 294),\n    COL_TRI(294, 380, 381),\n    COL_TRI(294, 381, 292),\n    COL_TRI(292, 381, 382),\n    COL_TRI(292, 382, 379),\n    COL_TRI(293, 383, 380),\n    COL_TRI(295, 297, 296),\n    COL_TRI(296, 385, 295),\n    COL_TRI(296, 386, 385),\n    COL_TRI(297, 386, 296),\n    COL_TRI(295, 385, 387),\n    COL_TRI(295, 387, 384),\n    COL_TRI(297, 388, 386),\n    COL_TRI(298, 300, 389),\n    COL_TRI(299, 300, 302),\n    COL_TRI(300, 298, 306),\n    COL_TRI(300, 299, 335),\n    COL_TRI(301, 335, 299),\n    COL_TRI(300, 335, 389),\n    COL_TRI(302, 301, 299),\n    COL_TRI(303, 351, 336),\n    COL_TRI(303, 231, 351),\n    COL_TRI(231, 352, 351),\n    COL_TRI(304, 305, 231),\n    COL_TRI(231, 305, 352),\n    COL_TRI(226, 205, 308),\n    COL_TRI(305, 391, 352),\n    COL_TRI(305, 304, 391),\n    COL_TRI(304, 392, 391),\n    COL_TRI(306, 307, 304),\n    COL_TRI(304, 307, 392),\n    COL_TRI(307, 393, 392),\n    COL_TRI(307, 306, 393),\n    COL_TRI(306, 390, 393),\n    COL_TRI(306, 298, 390),\n    COL_TRI(298, 389, 390),\n    COL_TRI(310, 311, 316),\n    COL_TRI(205, 394, 308),\n    COL_TRI(308, 394, 301),\n    COL_TRI(302, 308, 301),\n    COL_TRI(308, 302, 226),\n    COL_TRI(240, 313, 309),\n    COL_TRI(309, 313, 395),\n    COL_TRI(310, 240, 309),\n    COL_TRI(310, 309, 311),\n    COL_TRI(311, 309, 395),\n    COL_TRI(240, 312, 313),\n    COL_TRI(312, 316, 313),\n    COL_TRI(313, 396, 395),\n    COL_TRI(110, 109, 398),\n    COL_TRI(110, 398, 395),\n    COL_TRI(314, 110, 395),\n    COL_TRI(314, 395, 396),\n    COL_TRI(311, 395, 398),\n    COL_TRI(315, 396, 397),\n    COL_TRI(315, 314, 396),\n    COL_TRI(313, 397, 396),\n    COL_TRI(109, 315, 397),\n    COL_TRI(109, 397, 398),\n    COL_TRI(311, 398, 397),\n    COL_TRI(316, 311, 397),\n    COL_TRI(313, 316, 397),\n    COL_TRI(312, 317, 316),\n    COL_TRI(317, 310, 316),\n    COL_TRI(317, 315, 109),\n    COL_TRI(317, 109, 310),\n    COL_TRI(236, 340, 111),\n    COL_TRI(240, 110, 314),\n    COL_TRI(240, 314, 312),\n    COL_TRI(236, 339, 235),\n    COL_TRI(318, 73, 69),\n    COL_TRI(236, 235, 340),\n    COL_TRI(235, 58, 111),\n    COL_TRI(235, 111, 340),\n    COL_TRI(315, 317, 314),\n    COL_TRI(317, 312, 314),\n    COL_TRI(318, 246, 73),\n    COL_TRI(67, 399, 318),\n    COL_TRI(67, 318, 69),\n    COL_TRI(119, 399, 67),\n    COL_TRI(119, 353, 399),\n    COL_TRI(67, 358, 119),\n    COL_TRI(67, 69, 358),\n    COL_TRI(319, 400, 401),\n    COL_TRI(319, 401, 402),\n    COL_TRI(160, 92, 117),\n    COL_TRI(320, 403, 404),\n    COL_TRI(320, 405, 403),\n    COL_TRI(91, 159, 115),\n    COL_TRI(159, 65, 115),\n    COL_TRI(91, 115, 406),\n    COL_TRI(92, 407, 117),\n    COL_TRI(160, 117, 116),\n    COL_TRI(33, 322, 34),\n    COL_TRI(34, 322, 408),\n    COL_TRI(34, 408, 35),\n    COL_TRI(321, 409, 408),\n    COL_TRI(321, 408, 322),\n    COL_TRI(35, 408, 409),\n    COL_TRI(35, 409, 36),\n    COL_TRI(322, 410, 323),\n    COL_TRI(321, 322, 323),\n    COL_TRI(33, 410, 322),\n    COL_TRI(36, 409, 321),\n    COL_TRI(31, 410, 33),\n    COL_TRI(31, 323, 410),\n    COL_TRI(38, 323, 31),\n    COL_TRI(38, 411, 323),\n    COL_TRI(323, 411, 321),\n    COL_TRI(37, 411, 38),\n    COL_TRI(37, 321, 411),\n    COL_TRI(36, 321, 37),\n    COL_TRI_INIT(SURFACE_DEATH_PLANE, 2),\n    COL_TRI(418, 419, 420),\n    COL_TRI(420, 419, 421),\n    COL_TRI_INIT(SURFACE_VERY_SLIPPERY, 14),\n    COL_TRI(39, 171, 40),\n    COL_TRI(39, 43, 171),\n    COL_TRI(43, 42, 56),\n    COL_TRI(43, 56, 171),\n    COL_TRI(40, 171, 51),\n    COL_TRI(171, 107, 51),\n    COL_TRI(171, 56, 107),\n    COL_TRI(40, 51, 44),\n    COL_TRI(44, 53, 48),\n    COL_TRI(44, 50, 53),\n    COL_TRI(50, 52, 53),\n    COL_TRI(50, 54, 52),\n    COL_TRI(41, 45, 47),\n    COL_TRI(172, 173, 174),\n    COL_TRI_INIT(SURFACE_SLIPPERY, 43),\n    COL_TRI(203, 214, 332),\n    COL_TRI(1, 199, 333),\n    COL_TRI(199, 1, 41),\n    COL_TRI(199, 41, 47),\n    COL_TRI(193, 1, 333),\n    COL_TRI(355, 237, 72),\n    COL_TRI(355, 139, 138),\n    COL_TRI(355, 71, 139),\n    COL_TRI(72, 71, 355),\n    COL_TRI(332, 214, 209),\n    COL_TRI(335, 173, 206),\n    COL_TRI(335, 139, 173),\n    COL_TRI(139, 335, 205),\n    COL_TRI(138, 139, 8),\n    COL_TRI(139, 205, 8),\n    COL_TRI(92, 91, 406),\n    COL_TRI(92, 406, 407),\n    COL_TRI(412, 101, 413),\n    COL_TRI(406, 115, 407),\n    COL_TRI(115, 117, 407),\n    COL_TRI(96, 412, 417),\n    COL_TRI(412, 97, 100),\n    COL_TRI(412, 100, 417),\n    COL_TRI(96, 417, 93),\n    COL_TRI(98, 97, 412),\n    COL_TRI(98, 412, 413),\n    COL_TRI(412, 96, 101),\n    COL_TRI(102, 98, 413),\n    COL_TRI(413, 103, 414),\n    COL_TRI(102, 413, 414),\n    COL_TRI(413, 101, 103),\n    COL_TRI(102, 414, 415),\n    COL_TRI(414, 105, 415),\n    COL_TRI(414, 103, 105),\n    COL_TRI(100, 416, 417),\n    COL_TRI(104, 102, 415),\n    COL_TRI(415, 105, 416),\n    COL_TRI(106, 415, 416),\n    COL_TRI(106, 104, 415),\n    COL_TRI(105, 94, 416),\n    COL_TRI(100, 106, 416),\n    COL_TRI(416, 93, 417),\n    COL_TRI(416, 94, 93),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 4),\n    COL_TRI(187, 192, 188),\n    COL_TRI(187, 190, 192),\n    COL_TRI(207, 358, 142),\n    COL_TRI(358, 73, 142),\n    COL_TRI_INIT(SURFACE_WALL_MISC, 143),\n    COL_TRI(50, 44, 51),\n    COL_TRI(39, 40, 41),\n    COL_TRI(39, 41, 1),\n    COL_TRI(1, 42, 39),\n    COL_TRI(42, 43, 39),\n    COL_TRI(41, 40, 44),\n    COL_TRI(41, 44, 45),\n    COL_TRI(1, 46, 42),\n    COL_TRI(47, 45, 44),\n    COL_TRI(47, 44, 48),\n    COL_TRI(48, 49, 47),\n    COL_TRI(52, 108, 49),\n    COL_TRI(48, 52, 49),\n    COL_TRI(48, 53, 52),\n    COL_TRI(54, 107, 55),\n    COL_TRI(55, 107, 56),\n    COL_TRI(55, 56, 57),\n    COL_TRI(54, 55, 108),\n    COL_TRI(54, 51, 107),\n    COL_TRI(46, 56, 42),\n    COL_TRI(46, 57, 56),\n    COL_TRI(52, 54, 108),\n    COL_TRI(54, 50, 51),\n    COL_TRI(58, 109, 110),\n    COL_TRI(58, 110, 111),\n    COL_TRI(59, 60, 112),\n    COL_TRI(60, 113, 114),\n    COL_TRI(60, 114, 112),\n    COL_TRI(61, 113, 60),\n    COL_TRI(61, 60, 59),\n    COL_TRI(62, 113, 61),\n    COL_TRI(62, 114, 113),\n    COL_TRI(63, 112, 114),\n    COL_TRI(63, 114, 62),\n    COL_TRI(59, 112, 63),\n    COL_TRI(64, 65, 115),\n    COL_TRI(65, 116, 117),\n    COL_TRI(65, 117, 115),\n    COL_TRI(69, 121, 125),\n    COL_TRI(66, 117, 116),\n    COL_TRI(67, 119, 120),\n    COL_TRI(67, 120, 121),\n    COL_TRI(68, 122, 123),\n    COL_TRI(68, 123, 124),\n    COL_TRI(69, 67, 121),\n    COL_TRI(25, 128, 70),\n    COL_TRI(69, 126, 73),\n    COL_TRI(69, 125, 126),\n    COL_TRI(64, 115, 118),\n    COL_TRI(23, 127, 24),\n    COL_TRI(24, 127, 128),\n    COL_TRI(24, 128, 25),\n    COL_TRI(22, 130, 23),\n    COL_TRI(25, 70, 129),\n    COL_TRI(23, 130, 127),\n    COL_TRI(26, 132, 27),\n    COL_TRI(26, 133, 132),\n    COL_TRI(29, 133, 26),\n    COL_TRI(29, 131, 133),\n    COL_TRI(70, 131, 29),\n    COL_TRI(70, 29, 129),\n    COL_TRI(4, 138, 7),\n    COL_TRI(22, 134, 130),\n    COL_TRI(21, 134, 22),\n    COL_TRI(21, 135, 134),\n    COL_TRI(4, 6, 136),\n    COL_TRI(4, 136, 137),\n    COL_TRI(4, 137, 138),\n    COL_TRI(71, 139, 140),\n    COL_TRI(71, 140, 141),\n    COL_TRI(72, 141, 66),\n    COL_TRI(72, 71, 141),\n    COL_TRI(66, 116, 72),\n    COL_TRI(73, 74, 142),\n    COL_TRI(74, 122, 68),\n    COL_TRI(74, 68, 142),\n    COL_TRI(80, 147, 148),\n    COL_TRI(73, 126, 74),\n    COL_TRI(75, 143, 144),\n    COL_TRI(75, 144, 77),\n    COL_TRI(76, 143, 75),\n    COL_TRI(77, 144, 145),\n    COL_TRI(77, 145, 78),\n    COL_TRI(76, 146, 143),\n    COL_TRI(78, 145, 146),\n    COL_TRI(78, 146, 76),\n    COL_TRI(79, 147, 80),\n    COL_TRI(84, 151, 152),\n    COL_TRI(81, 148, 150),\n    COL_TRI(80, 148, 81),\n    COL_TRI(81, 150, 82),\n    COL_TRI(79, 149, 147),\n    COL_TRI(82, 150, 149),\n    COL_TRI(82, 149, 79),\n    COL_TRI(83, 151, 84),\n    COL_TRI(84, 152, 85),\n    COL_TRI(89, 156, 157),\n    COL_TRI(85, 152, 153),\n    COL_TRI(85, 153, 86),\n    COL_TRI(83, 154, 151),\n    COL_TRI(86, 153, 154),\n    COL_TRI(86, 154, 83),\n    COL_TRI(87, 155, 156),\n    COL_TRI(88, 155, 87),\n    COL_TRI(87, 156, 89),\n    COL_TRI(89, 157, 90),\n    COL_TRI(88, 158, 155),\n    COL_TRI(90, 157, 158),\n    COL_TRI(90, 158, 88),\n    COL_TRI(91, 92, 159),\n    COL_TRI(92, 160, 159),\n    COL_TRI(93, 161, 96),\n    COL_TRI(94, 95, 93),\n    COL_TRI(97, 167, 166),\n    COL_TRI(95, 162, 161),\n    COL_TRI(93, 95, 161),\n    COL_TRI(96, 161, 162),\n    COL_TRI(96, 162, 101),\n    COL_TRI(95, 163, 164),\n    COL_TRI(95, 164, 165),\n    COL_TRI(95, 165, 162),\n    COL_TRI(97, 166, 100),\n    COL_TRI(101, 162, 165),\n    COL_TRI(99, 166, 167),\n    COL_TRI(99, 168, 166),\n    COL_TRI(100, 166, 168),\n    COL_TRI(100, 168, 106),\n    COL_TRI(99, 167, 169),\n    COL_TRI(101, 165, 103),\n    COL_TRI(104, 99, 170),\n    COL_TRI(98, 169, 167),\n    COL_TRI(98, 167, 97),\n    COL_TRI(102, 169, 98),\n    COL_TRI(99, 169, 170),\n    COL_TRI(103, 165, 164),\n    COL_TRI(103, 164, 105),\n    COL_TRI(104, 170, 102),\n    COL_TRI(102, 170, 169),\n    COL_TRI(106, 99, 104),\n    COL_TRI(105, 164, 163),\n    COL_TRI(105, 163, 94),\n    COL_TRI(94, 163, 95),\n    COL_TRI(106, 168, 99),\n    COL_TRI_INIT(SURFACE_NOISE_DEFAULT, 15),\n    COL_TRI(16, 17, 18),\n    COL_TRI(16, 18, 19),\n    COL_TRI(20, 21, 22),\n    COL_TRI(20, 23, 24),\n    COL_TRI(20, 22, 23),\n    COL_TRI(20, 24, 25),\n    COL_TRI(26, 27, 28),\n    COL_TRI(26, 28, 29),\n    COL_TRI(31, 37, 38),\n    COL_TRI(28, 30, 29),\n    COL_TRI(20, 29, 30),\n    COL_TRI(20, 30, 32),\n    COL_TRI(31, 33, 34),\n    COL_TRI(31, 34, 35),\n    COL_TRI(31, 36, 37),\n    COL_TRI_INIT(SURFACE_BOSS_FIGHT_CAMERA, 5),\n    COL_TRI(13, 15, 11),\n    COL_TRI(9, 10, 11),\n    COL_TRI(10, 12, 13),\n    COL_TRI(11, 10, 13),\n    COL_TRI(12, 14, 13),\n    COL_TRI_INIT(SURFACE_CAMERA_MIDDLE, 5),\n    COL_TRI(7, 8, 5),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI(4, 5, 6),\n    COL_TRI(4, 7, 5),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(6),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_null_start,   /*pos*/  2560,  256, 5120, /*yaw*/ 64), // unused, probably an early way to set initial position\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0E, /*pos*/  3584,  154, 4864, /*yaw*/ 0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_0F, /*pos*/  4608,  256, 1792, /*yaw*/ 0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_11, /*pos*/ -2499, 1792, -261, /*yaw*/ 0),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_level_geo_12, /*pos*/ -2661,  384,  640, /*yaw*/ 0),\n    SPECIAL_OBJECT(/*preset*/ special_bubble_tree,  /*pos*/  2560,  256, 4608),\n    COL_WATER_BOX_INIT(1),\n    COL_WATER_BOX(0, -1023, 1024, 3226, 4096, 973),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/geo.inc.c",
    "content": "// 0x0E000BF8\nconst GeoLayout wf_geo_000BF8[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND(BACKGROUND_BELOW_CLOUDS, geo_skybox_main),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 12800, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(1, 0, 2000, 6000, 0, 2000, 0, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, wf_seg7_dl_070050C8),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE_DECAL, wf_seg7_dl_070052B8),\n                    GEO_DISPLAY_LIST(LAYER_TRANSPARENT_DECAL, wf_seg7_dl_07005538),\n                    GEO_DISPLAY_LIST(LAYER_TRANSPARENT, wf_seg7_dl_07005690),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(   0, geo_movtex_pause_control),\n                    GEO_ASM(0x2401, geo_movtex_draw_water_regions),\n                    GEO_ASM(   0, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_cannon_circle_base),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/macro.inc.c",
    "content": "// 0x07011C38 - 0x07011DE8\nconst MacroObject wf_seg7_macro_objs[] = {\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,        /*yaw*/   0, /*pos*/  3760,   960,  2740),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,        /*yaw*/  90, /*pos*/ -1400,  1160,  3900),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,        /*yaw*/  90, /*pos*/  1254,  2586,  2299),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_horizontal,        /*yaw*/   0, /*pos*/ -2500,  1795,  -260),\n    MACRO_OBJECT               (/*preset*/ macro_blue_coin_switch,            /*yaw*/   0, /*pos*/ -2500,   384,  -250),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/ -2500,   450, -1150),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/ -2500,   450,  -900),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/ -2500,   450,  -650),\n    MACRO_OBJECT               (/*preset*/ macro_box_metal_cap,               /*yaw*/   0, /*pos*/  2750,  1370, -3400),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/     0,  2650,  2900),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/  -500,  2650,  2900),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/   250,  2650,  2800),\n    MACRO_OBJECT               (/*preset*/ macro_yellow_coin_1,               /*yaw*/   0, /*pos*/  -750,  2650,  2800),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_in_pole,          /*yaw*/   0, /*pos*/ -2500,  4560,  -256),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,          /*yaw*/   0, /*pos*/     0,  2650,  2900),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_hidden_1up,                  /*yaw*/   0, /*pos*/  -250,  2650,  2400, /*bhvParam*/ 2),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/ 315, /*pos*/  4200,   256,  5160, /*bhvParam*/ DIALOG_018),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/   0, /*pos*/ -2540,  2560,  -900, /*bhvParam*/ DIALOG_036),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/  90, /*pos*/  1600,  2560,  2600, /*bhvParam*/ DIALOG_042),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/ 270, /*pos*/ -2705,  2560,    59, /*bhvParam*/ DIALOG_051),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/ 180, /*pos*/  3460,  2304,   -40, /*bhvParam*/ DIALOG_096),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_cannon_closed,               /*yaw*/   0, /*pos*/ -1844,  1026,  3893, /*bhvParam*/ 0x40),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/ 270, /*pos*/ -2932,   386,  -157, /*bhvParam*/ DIALOG_078),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_trigger,          /*yaw*/   0, /*pos*/  -500,  2650,  2900),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  -250,  2650,  2970),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  1746,  3620, -3120),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  1277,  2600,  1350),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  1585,  2595,   -80),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  3350,  3000, -1520),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  2700,  3600,  -900),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  3770,  1380,   650),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  -270,  1720,  2250),\n    MACRO_OBJECT               (/*preset*/ macro_coin_arrow,                  /*yaw*/ 135, /*pos*/  1215,  3600, -2609),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_blue_coin,            /*yaw*/   0, /*pos*/ -2500,   450, -1400),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_horizontal,        /*yaw*/   0, /*pos*/  4611,   256,   141),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_horizontal,        /*yaw*/   0, /*pos*/  1558,   922,  2329),\n    MACRO_OBJECT               (/*preset*/ macro_coin_line_horizontal,        /*yaw*/   0, /*pos*/  3396,  1380,  3280),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_horizontal_flying, /*yaw*/   0, /*pos*/  3234,  3345, -1787),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/   0, /*pos*/  4800,   256,  3000, /*bhvParam*/ DIALOG_104),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_wooden_signpost,             /*yaw*/  90, /*pos*/  2930,  1075, -3740, /*bhvParam*/ DIALOG_113),\n    MACRO_OBJECT               (/*preset*/ macro_breakable_box_small,         /*yaw*/   0, /*pos*/  4320,   256,  1880),\n    MACRO_OBJECT               (/*preset*/ macro_breakable_box_small,         /*yaw*/   0, /*pos*/ -2940,   384, -1320),\n    MACRO_OBJECT               (/*preset*/ macro_butterfly_triplet_no_bombs,  /*yaw*/   0, /*pos*/  4574,   300,  1130),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/wf/areas/1/movtext.inc.c",
    "content": "// 0x07011DE8\nstatic Movtex wf_movtex_water_data[] = {\n    MOV_TEX_INIT_LOAD(    1),\n    MOV_TEX_ROT_SPEED(   10),\n    MOV_TEX_ROT_SCALE(   10),\n    MOV_TEX_4_BOX_TRIS(-1023, 1024),\n    MOV_TEX_4_BOX_TRIS(-1023, 4096),\n    MOV_TEX_4_BOX_TRIS( 3226, 4096),\n    MOV_TEX_4_BOX_TRIS( 3226, 1024),\n    MOV_TEX_ROT(     ROTATE_CLOCKWISE),\n    MOV_TEX_ALPHA(    0x78),\n    MOV_TEX_DEFINE(  TEXTURE_WATER),\n    MOV_TEX_END(),\n};\n\n// 0x7011E08\nconst struct MovtexQuadCollection wf_movtex_water[] = {\n    {0, wf_movtex_water_data},\n    {-1, NULL},\n};\n"
  },
  {
    "path": "levels/wf/beta_extending_platform/collision.inc.c",
    "content": "// 0x0700FB1C - 0x0700FB94\nconst Collision wf_seg7_collision_trapezoid[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-214, 102, -204),\n    COL_VERTEX(-214, 0, -204),\n    COL_VERTEX(-504, 0, 85),\n    COL_VERTEX(-504, 102, 85),\n    COL_VERTEX(215, 102, -204),\n    COL_VERTEX(505, 0, 85),\n    COL_VERTEX(505, 102, 85),\n    COL_VERTEX(215, 0, -204),\n    COL_TRI_INIT(SURFACE_DEFAULT, 10),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(4, 0, 3),\n    COL_TRI(5, 2, 1),\n    COL_TRI(3, 2, 5),\n    COL_TRI(3, 5, 6),\n    COL_TRI(4, 3, 6),\n    COL_TRI(5, 1, 7),\n    COL_TRI(6, 5, 7),\n    COL_TRI(6, 7, 4),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/wf/beta_extending_platform/geo.inc.c",
    "content": "// 0x0E000AF8\nconst GeoLayout wf_geo_000AF8[] = {\n    GEO_CULLING_RADIUS(650),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, wf_seg7_dl_0700EDC0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/wf/beta_extending_platform/model.inc.c",
    "content": "// 0x0700EBB8 - 0x0700EBD0\nstatic const Lights1 wf_seg7_lights_0700EBB8 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700EBD0 - 0x0700ECC0\nstatic const Vtx wf_seg7_vertex_0700EBD0[] = {\n    {{{   505,      0,     85}, 0, {  -562,    992}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -214,      0,   -204}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   215,      0,   -204}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -214,    102,   -204}, 0, {     0,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -214,      0,   -204}, 0, {     0,    478}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -504,      0,     85}, 0, {  2012,    478}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -504,    102,     85}, 0, {  2012,      0}, {0xa7, 0x00, 0xa7, 0xff}}},\n    {{{  -504,    102,     85}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -504,      0,     85}, 0, {     0,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   505,      0,     85}, 0, {  2012,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   505,    102,     85}, 0, {  2012,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   215,    102,   -204}, 0, {  1502,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -214,    102,   -204}, 0, {   480,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -504,    102,     85}, 0, {   -52,    992}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   505,    102,     85}, 0, {  2034,    992}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700ECC0 - 0x0700ED30\nstatic const Vtx wf_seg7_vertex_0700ECC0[] = {\n    {{{   505,    102,     85}, 0, {     0,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   215,      0,   -204}, 0, {  2012,    478}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   215,    102,   -204}, 0, {  2012,      0}, {0x59, 0x00, 0xa7, 0xff}}},\n    {{{   505,      0,     85}, 0, {  -562,    992}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -504,      0,     85}, 0, {  1522,    992}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -214,      0,   -204}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   505,      0,     85}, 0, {     0,    478}, {0x59, 0x00, 0xa7, 0xff}}},\n};\n\n// 0x0700ED30 - 0x0700EDC0\nstatic const Gfx wf_seg7_dl_0700ED30[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wf_seg7_lights_0700EBB8.l, 1),\n    gsSPLight(&wf_seg7_lights_0700EBB8.a, 2),\n    gsSPVertex(wf_seg7_vertex_0700EBD0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(wf_seg7_vertex_0700ECC0, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP1Triangle( 0,  6,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700EDC0 - 0x0700EE30\nconst Gfx wf_seg7_dl_0700EDC0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_0700ED30),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/breakable_wall_left/collision.inc.c",
    "content": "// 0x0700FC44 - 0x0700FC7A\nconst Collision wf_seg7_collision_breakable_wall_2[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x4),\n    COL_VERTEX(0, -383, 128),\n    COL_VERTEX(0, 384, 128),\n    COL_VERTEX(-168, 384, -378),\n    COL_VERTEX(0, 384, -378),\n    COL_TRI_INIT(SURFACE_DEFAULT, 3),\n    COL_TRI(3, 2, 1),\n    COL_TRI(0, 1, 2),\n    COL_TRI(3, 1, 0),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/wf/breakable_wall_left/geo.inc.c",
    "content": "// 0x0E000B90\nconst GeoLayout wf_geo_000B90[] = {\n    GEO_CULLING_RADIUS(690),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, wf_seg7_dl_0700F340),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/wf/breakable_wall_left/model.inc.c",
    "content": "// 0x0700F220 - 0x0700F238\nstatic const Lights1 wf_seg7_lights_0700F220 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700F238 - 0x0700F268\nstatic const Vtx wf_seg7_vertex_0700F238[] = {\n    {{{     0,    384,   -378}, 0, { 10188,   8162}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -168,    384,   -378}, 0, {  9514,   8162}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    384,    128}, 0, { 10188,  10186}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700F268 - 0x0700F2C8\nstatic const Vtx wf_seg7_vertex_0700F268[] = {\n    {{{     0,   -383,    128}, 0, {  1080,   3032}, {0x88, 0x00, 0x28, 0xff}}},\n    {{{     0,    384,    128}, 0, {  1080,      0}, {0x88, 0x00, 0x28, 0xff}}},\n    {{{  -168,    384,   -378}, 0, { -1052,      0}, {0x88, 0x00, 0x28, 0xff}}},\n    {{{     0,    384,   -378}, 0, {  1992,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,    384,    128}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,   -383,    128}, 0, {     0,   3032}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700F2C8 - 0x0700F308\nstatic const Gfx wf_seg7_dl_0700F2C8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wf_seg7_lights_0700F220.l, 1),\n    gsSPLight(&wf_seg7_lights_0700F220.a, 2),\n    gsSPVertex(wf_seg7_vertex_0700F238, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700F308 - 0x0700F340\nstatic const Gfx wf_seg7_dl_0700F308[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_0700F268, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700F340 - 0x0700F3B8\nconst Gfx wf_seg7_dl_0700F340[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_0700F2C8),\n    gsSPDisplayList(wf_seg7_dl_0700F308),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/breakable_wall_right/collision.inc.c",
    "content": "// 0x0700FC0C - 0x0700FC42\nconst Collision wf_seg7_collision_breakable_wall[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x4),\n    COL_VERTEX(0, 384, 128),\n    COL_VERTEX(184, 384, -378),\n    COL_VERTEX(0, 384, -378),\n    COL_VERTEX(0, -383, 128),\n    COL_TRI_INIT(SURFACE_DEFAULT, 3),\n    COL_TRI(3, 1, 0),\n    COL_TRI(0, 1, 2),\n    COL_TRI(3, 0, 2),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/wf/breakable_wall_right/geo.inc.c",
    "content": "// 0x0E000B78\nconst GeoLayout wf_geo_000B78[] = {\n    GEO_CULLING_RADIUS(750),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, wf_seg7_dl_0700F1A8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/wf/breakable_wall_right/model.inc.c",
    "content": "// 0x0700F088 - 0x0700F0A0\nstatic const Lights1 wf_seg7_lights_0700F088 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700F0A0 - 0x0700F0D0\nstatic const Vtx wf_seg7_vertex_0700F0A0[] = {\n    {{{     0,    384,    128}, 0, { 16320,  10186}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   184,    384,   -378}, 0, { 17056,   8162}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,    384,   -378}, 0, { 16320,   8162}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700F0D0 - 0x0700F130\nstatic const Vtx wf_seg7_vertex_0700F0D0[] = {\n    {{{     0,   -383,    128}, 0, {   990,   3032}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,    384,    128}, 0, {   990,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,    384,   -378}, 0, { -1032,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,   -383,    128}, 0, {     0,   3032}, {0x77, 0x00, 0x2b, 0xff}}},\n    {{{   184,    384,   -378}, 0, {  2122,      0}, {0x77, 0x00, 0x2b, 0xff}}},\n    {{{     0,    384,    128}, 0, {     0,      0}, {0x77, 0x00, 0x2b, 0xff}}},\n};\n\n// 0x0700F130 - 0x0700F170\nstatic const Gfx wf_seg7_dl_0700F130[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wf_seg7_lights_0700F088.l, 1),\n    gsSPLight(&wf_seg7_lights_0700F088.a, 2),\n    gsSPVertex(wf_seg7_vertex_0700F0A0, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700F170 - 0x0700F1A8\nstatic const Gfx wf_seg7_dl_0700F170[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_0700F0D0, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700F1A8 - 0x0700F220\nconst Gfx wf_seg7_dl_0700F1A8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_0700F130),\n    gsSPDisplayList(wf_seg7_dl_0700F170),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/extending_platform/collision.inc.c",
    "content": "// 0x0700FB94 - 0x0700FC0C\nconst Collision wf_seg7_collision_platform[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-214, 102, -204),\n    COL_VERTEX(-214, 0, -204),\n    COL_VERTEX(-214, 0, 205),\n    COL_VERTEX(-214, 102, 205),\n    COL_VERTEX(215, 102, -204),\n    COL_VERTEX(215, 0, 205),\n    COL_VERTEX(215, 102, 205),\n    COL_VERTEX(215, 0, -204),\n    COL_TRI_INIT(SURFACE_DEFAULT, 10),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(4, 0, 3),\n    COL_TRI(5, 2, 1),\n    COL_TRI(3, 2, 5),\n    COL_TRI(3, 5, 6),\n    COL_TRI(4, 3, 6),\n    COL_TRI(5, 1, 7),\n    COL_TRI(6, 5, 7),\n    COL_TRI(6, 7, 4),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/wf/extending_platform/geo.inc.c",
    "content": "// 0x0E000B10\nconst GeoLayout wf_geo_000B10[] = {\n    GEO_CULLING_RADIUS(650),\n    GEO_OPEN_NODE(),\n        GEO_SHADOW(SHADOW_SQUARE_PERMANENT, 0x96, 420),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, wf_seg7_dl_0700F018),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0E000B38\nconst GeoLayout wf_geo_000B38[] = {\n    GEO_CULLING_RADIUS(650),\n    GEO_OPEN_NODE(),\n        GEO_SHADOW(SHADOW_SQUARE_PERMANENT, 0x96, 420),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, wf_seg7_dl_0700F018),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0E000B60\nconst GeoLayout wf_geo_000B60[] = {\n    GEO_CULLING_RADIUS(650),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, wf_seg7_dl_0700F018),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/wf/extending_platform/model.inc.c",
    "content": "// 0x0700EE30 - 0x0700EE48\nstatic const Lights1 wf_seg7_lights_0700EE30 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700EE48 - 0x0700EF48\nstatic const Vtx wf_seg7_vertex_0700EE48[] = {\n    {{{  -214,    102,   -204}, 0, {     0,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -214,      0,   -204}, 0, {     0,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -214,      0,    205}, 0, {  2012,    478}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -214,    102,    205}, 0, {  2012,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -214,    102,    205}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   215,      0,    205}, 0, {  2012,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   215,    102,    205}, 0, {  2012,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -214,      0,    205}, 0, {     0,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   215,    102,    205}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   215,      0,   -204}, 0, {  2012,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   215,    102,   -204}, 0, {  2012,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   215,      0,    205}, 0, {     0,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   215,    102,   -204}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -214,    102,    205}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   215,    102,    205}, 0, {   990,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -214,    102,   -204}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700EF48 - 0x0700EF88\nstatic const Vtx wf_seg7_vertex_0700EF48[] = {\n    {{{   215,      0,    205}, 0, {   990,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -214,      0,    205}, 0, {     0,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -214,      0,   -204}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   215,      0,   -204}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0700EF88 - 0x0700F018\nstatic const Gfx wf_seg7_dl_0700EF88[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wf_seg7_lights_0700EE30.l, 1),\n    gsSPLight(&wf_seg7_lights_0700EE30.a, 2),\n    gsSPVertex(wf_seg7_vertex_0700EE48, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  8, 11,  9, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(wf_seg7_vertex_0700EF48, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700F018 - 0x0700F088\nconst Gfx wf_seg7_dl_0700F018[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_0700EF88),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"game/level_geo.h\"\n#include \"game/geo_misc.h\"\n#include \"game/camera.h\"\n#include \"game/moving_texture.h\"\n#include \"game/screen_transition.h\"\n#include \"game/paintings.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"levels/wf/header.h\"\n\n#include \"levels/wf/areas/1/5/geo.inc.c\"\n#include \"levels/wf/areas/1/6/geo.inc.c\"\n#include \"levels/wf/areas/1/7/geo.inc.c\"\n#include \"levels/wf/areas/1/8/geo.inc.c\"\n#include \"levels/wf/areas/1/9/geo.inc.c\"\n#include \"levels/wf/areas/1/10/geo.inc.c\"\n#include \"levels/wf/areas/1/11/geo.inc.c\"\n#include \"levels/wf/areas/1/12/geo.inc.c\"\n#include \"levels/wf/areas/1/13/geo.inc.c\"\n#include \"levels/wf/areas/1/15/geo.inc.c\"\n#include \"levels/wf/areas/1/16/geo.inc.c\"\n#include \"levels/wf/areas/1/17/geo.inc.c\"\n#include \"levels/wf/areas/1/18/geo.inc.c\"\n#include \"levels/wf/areas/1/19/geo.inc.c\"\n#include \"levels/wf/small_bomp/geo.inc.c\"\n#include \"levels/wf/large_bomp/geo.inc.c\"\n#include \"levels/wf/rotating_wooden_platform/geo.inc.c\"\n#include \"levels/wf/sliding_platform/geo.inc.c\"\n#include \"levels/wf/tumbling_bridge_near/geo.inc.c\"\n#include \"levels/wf/tumbling_bridge_far/geo.inc.c\"\n#include \"levels/wf/areas/1/14/geo.inc.c\"\n#include \"levels/wf/beta_extending_platform/geo.inc.c\"\n#include \"levels/wf/extending_platform/geo.inc.c\"\n#include \"levels/wf/breakable_wall_right/geo.inc.c\"\n#include \"levels/wf/breakable_wall_left/geo.inc.c\"\n#include \"levels/wf/kickable_board/geo.inc.c\"\n#include \"levels/wf/tower_door/geo.inc.c\"\n#include \"levels/wf/areas/1/geo.inc.c\"\n"
  },
  {
    "path": "levels/wf/header.h",
    "content": "#ifndef WF_HEADER_H\n#define WF_HEADER_H\n\n#include \"types.h\"\n#include \"game/moving_texture.h\"\n\n// geo\nextern const GeoLayout wf_geo_0007E0[];\nextern const GeoLayout wf_geo_000820[];\nextern const GeoLayout wf_geo_000860[];\nextern const GeoLayout wf_geo_000878[];\nextern const GeoLayout wf_geo_000890[];\nextern const GeoLayout wf_geo_0008A8[];\nextern const GeoLayout wf_geo_0008E8[];\nextern const GeoLayout wf_geo_000900[];\nextern const GeoLayout wf_geo_000940[];\nextern const GeoLayout wf_geo_000958[];\nextern const GeoLayout wf_geo_0009A0[];\nextern const GeoLayout wf_geo_0009B8[];\nextern const GeoLayout wf_geo_0009D0[];\nextern const GeoLayout wf_geo_0009E8[];\nextern const GeoLayout wf_geo_000A00[];\nextern const GeoLayout wf_geo_000A40[];\nextern const GeoLayout wf_geo_000A58[];\nextern const GeoLayout wf_geo_000A98[];\nextern const GeoLayout wf_geo_000AB0[];\nextern const GeoLayout wf_geo_000AC8[];\nextern const GeoLayout wf_geo_000AE0[];\nextern const GeoLayout wf_geo_000AF8[];\nextern const GeoLayout wf_geo_000B10[];\nextern const GeoLayout wf_geo_000B38[];\nextern const GeoLayout wf_geo_000B60[];\nextern const GeoLayout wf_geo_000B78[];\nextern const GeoLayout wf_geo_000B90[];\nextern const GeoLayout wf_geo_000BA8[];\nextern const GeoLayout wf_geo_000BC8[];\nextern const GeoLayout wf_geo_000BE0[];\nextern const GeoLayout wf_geo_000BF8[];\n\n// leveldata\nextern const Gfx wf_seg7_dl_070050C8[];\nextern const Gfx wf_seg7_dl_070052B8[];\nextern const Gfx wf_seg7_dl_07005538[];\nextern const Gfx wf_seg7_dl_07005690[];\nextern const Gfx wf_seg7_dl_07005DD8[];\nextern const Gfx wf_seg7_dl_07005EE8[];\nextern const Gfx wf_seg7_dl_070064E8[];\nextern const Gfx wf_seg7_dl_070065F8[];\nextern const Gfx wf_seg7_dl_07006820[];\nextern const Gfx wf_seg7_dl_07007220[];\nextern const Gfx wf_seg7_dl_07007518[];\nextern const Gfx wf_seg7_dl_070087B0[];\nextern const Gfx wf_seg7_dl_07008FE8[];\nextern const Gfx wf_seg7_dl_07009278[];\nextern const Gfx wf_seg7_dl_07009780[];\nextern const Gfx wf_seg7_dl_07009890[];\nextern const Gfx wf_seg7_dl_07009DB0[];\nextern const Gfx wf_seg7_dl_0700A170[];\nextern const Gfx wf_seg7_dl_0700ABA0[];\nextern const Gfx wf_seg7_dl_0700AEC8[];\nextern const Gfx wf_seg7_dl_0700AFB8[];\nextern const Gfx wf_seg7_dl_0700BA28[];\nextern const Gfx wf_seg7_dl_0700BF50[];\nextern const Gfx wf_seg7_dl_0700D028[];\nextern const Gfx wf_seg7_dl_0700D300[];\nextern const Gfx wf_seg7_dl_0700D708[];\nextern const Gfx wf_seg7_dl_0700D9F0[];\nextern const Gfx wf_seg7_dl_0700DE20[];\nextern const Gfx wf_seg7_dl_0700E0F0[];\nextern const Gfx wf_seg7_dl_0700E3D0[];\nextern const Gfx wf_seg7_dl_0700E760[];\nextern const Gfx wf_seg7_dl_0700E9B8[];\nextern const Gfx wf_seg7_dl_0700EB40[];\nextern const Gfx wf_seg7_dl_0700EDC0[];\nextern const Gfx wf_seg7_dl_0700F018[];\nextern const Gfx wf_seg7_dl_0700F1A8[];\nextern const Gfx wf_seg7_dl_0700F340[];\nextern const Gfx wf_seg7_dl_0700F610[];\nextern const Gfx wf_seg7_dl_0700F6C0[];\nextern const Gfx wf_seg7_dl_0700F7F8[];\nextern const Collision wf_seg7_collision_small_bomp[];\nextern const Collision wf_seg7_collision_large_bomp[];\nextern const Collision wf_seg7_collision_clocklike_rotation[];\nextern const Collision wf_seg7_collision_sliding_brick_platform[];\nextern const Collision wf_seg7_collision_tumbling_bridge[];\nextern const Collision wf_seg7_collision_trapezoid[];\nextern const Collision wf_seg7_collision_platform[];\nextern const Collision wf_seg7_collision_breakable_wall[];\nextern const Collision wf_seg7_collision_breakable_wall_2[];\nextern const Collision wf_seg7_collision_kickable_board[];\nextern const Collision wf_seg7_collision_tower_door[];\nextern const Collision wf_seg7_collision_rotating_platform[];\nextern const Collision wf_seg7_collision_tower[];\nextern const Collision wf_seg7_collision_bullet_bill_cannon[];\nextern const Collision wf_seg7_collision_070102D8[];\nextern const MacroObject wf_seg7_macro_objs[];\nextern const struct MovtexQuadCollection wf_movtex_water[];\n\n// script\nextern const LevelScript level_wf_entry[];\n\n#endif\n"
  },
  {
    "path": "levels/wf/kickable_board/1.inc.c",
    "content": "// 0x0700F3B8 - 0x0700F3D0\nstatic const Lights1 wf_seg7_lights_0700F3B8 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700F3D0 - 0x0700F4C0\nstatic const Vtx wf_seg7_vertex_0700F3D0[] = {\n    {{{   -96,      0,      0}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -96,   1178,     77}, 0, {     0,    -54}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -96,   1178,      0}, 0, {   990,    -54}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -96,   1178,      0}, 0, {     0,    -54}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    95,   1178,      0}, 0, {   990,    -54}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    95,      0,      0}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   -96,      0,      0}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{    95,   1178,      0}, 0, {   990,    -54}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    95,   1178,     77}, 0, {     0,    -54}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    95,      0,     77}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    95,      0,      0}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{    95,   1178,     77}, 0, {   990,    -54}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -96,   1178,     77}, 0, {     0,    -54}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   -96,      0,     77}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{    95,      0,     77}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0700F4C0 - 0x0700F570\nstatic const Vtx wf_seg7_vertex_0700F4C0[] = {\n    {{{    95,      0,      0}, 0, {  -152,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -96,      0,     77}, 0, {  1122,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -96,      0,      0}, 0, {  1122,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   -96,      0,      0}, 0, {   990,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -96,      0,     77}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -96,   1178,     77}, 0, {     0,    -54}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   -96,   1178,      0}, 0, {  1122,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   -96,   1178,     77}, 0, {  1122,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    95,   1178,     77}, 0, {  -152,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    95,   1178,      0}, 0, {  -152,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{    95,      0,     77}, 0, {  -152,    990}, {0x00, 0x81, 0x00, 0xff}}},\n};\n\n// 0x0700F570 - 0x0700F610\nstatic const Gfx wf_seg7_dl_0700F570[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09006800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wf_seg7_lights_0700F3B8.l, 1),\n    gsSPLight(&wf_seg7_lights_0700F3B8.a, 2),\n    gsSPVertex(wf_seg7_vertex_0700F3D0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(wf_seg7_vertex_0700F4C0, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP1Triangle( 0, 10,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700F610 - 0x0700F680\nconst Gfx wf_seg7_dl_0700F610[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_0700F570),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/kickable_board/2.inc.c",
    "content": "// 0x0700F680 - 0x0700F6C0\nstatic const Vtx wf_seg7_vertex_0700F680[] = {\n    {{{   -96,      0,    300}, 0, {  -480,   -480}, {0x00, 0x00, 0x00, 0x96}}},\n    {{{    95,      0,    300}, 0, {   480,   -480}, {0x00, 0x00, 0x00, 0x96}}},\n    {{{    95,      0,      0}, 0, {   480,    480}, {0x00, 0x00, 0x00, 0x96}}},\n    {{{   -96,      0,      0}, 0, {  -480,    480}, {0x00, 0x00, 0x00, 0x96}}},\n};\n\n// 0x0700F6C0 - 0x0700F758\nconst Gfx wf_seg7_dl_0700F6C0[] = {\n    gsDPPipeSync(),\n    gsSPClearGeometryMode(G_LIGHTING),\n    gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPLoadTextureBlock(wf_seg7_texture_07002800, G_IM_FMT_IA, G_IM_SIZ_8b, 16, 16, 0, G_TX_WRAP | G_TX_MIRROR, G_TX_WRAP | G_TX_MIRROR, 4, 4, G_TX_NOLOD, G_TX_NOLOD),\n    gsSPVertex(wf_seg7_vertex_0700F680, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/kickable_board/collision.inc.c",
    "content": "// 0x0700FC7C - 0x0700FD00\nconst Collision wf_seg7_collision_kickable_board[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x8),\n    COL_VERTEX(-96, 0, 0),\n    COL_VERTEX(-96, 1178, 77),\n    COL_VERTEX(-96, 1178, 0),\n    COL_VERTEX(95, 1178, 77),\n    COL_VERTEX(95, 1178, 0),\n    COL_VERTEX(95, 0, 0),\n    COL_VERTEX(95, 0, 77),\n    COL_VERTEX(-96, 0, 77),\n    COL_TRI_INIT(SURFACE_WALL_MISC, 12),\n    COL_TRI(0, 1, 2),\n    COL_TRI(2, 1, 3),\n    COL_TRI(2, 3, 4),\n    COL_TRI(2, 4, 5),\n    COL_TRI(2, 5, 0),\n    COL_TRI(4, 3, 6),\n    COL_TRI(4, 6, 5),\n    COL_TRI(0, 7, 1),\n    COL_TRI(3, 1, 7),\n    COL_TRI(3, 7, 6),\n    COL_TRI(5, 6, 7),\n    COL_TRI(5, 7, 0),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/wf/kickable_board/geo.inc.c",
    "content": "// 0x0E000BA8\nconst GeoLayout wf_geo_000BA8[] = {\n    GEO_CULLING_RADIUS(1300),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, wf_seg7_dl_0700F610),\n        GEO_DISPLAY_LIST(LAYER_TRANSPARENT_DECAL, wf_seg7_dl_0700F6C0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n\n// 0x0E000BC8\nconst GeoLayout wf_geo_000BC8[] = {\n    GEO_CULLING_RADIUS(1300),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, wf_seg7_dl_0700F610),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/wf/large_bomp/collision.inc.c",
    "content": "// 0x0700F934 - 0x0700FA00\nconst Collision wf_seg7_collision_large_bomp[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0xE),\n    COL_VERTEX(259, 5, -258),\n    COL_VERTEX(195, 210, -258),\n    COL_VERTEX(259, 210, -194),\n    COL_VERTEX(259, 210, 189),\n    COL_VERTEX(259, 5, 253),\n    COL_VERTEX(-252, 210, -258),\n    COL_VERTEX(-252, 5, -258),\n    COL_VERTEX(136, 261, -155),\n    COL_VERTEX(195, 210, 253),\n    COL_VERTEX(136, 261, 151),\n    COL_VERTEX(-252, 5, 253),\n    COL_VERTEX(-252, 261, 151),\n    COL_VERTEX(-252, 261, -155),\n    COL_VERTEX(-252, 210, 253),\n    COL_TRI_INIT(SURFACE_WALL_MISC, 18),\n    COL_TRI(12, 1, 5),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 4),\n    COL_TRI(0, 2, 3),\n    COL_TRI(5, 1, 0),\n    COL_TRI(5, 0, 6),\n    COL_TRI(1, 7, 2),\n    COL_TRI(7, 3, 2),\n    COL_TRI(3, 8, 4),\n    COL_TRI(3, 9, 8),\n    COL_TRI(7, 9, 3),\n    COL_TRI(10, 4, 8),\n    COL_TRI(11, 7, 12),\n    COL_TRI(11, 9, 7),\n    COL_TRI(12, 7, 1),\n    COL_TRI(10, 8, 13),\n    COL_TRI(13, 8, 9),\n    COL_TRI(13, 9, 11),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/wf/large_bomp/geo.inc.c",
    "content": "// 0x0E000A40\nconst GeoLayout wf_geo_000A40[] = {\n    GEO_CULLING_RADIUS(700),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, wf_seg7_dl_0700DE20),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/wf/large_bomp/model.inc.c",
    "content": "// 0x0700DA68 - 0x0700DA80\nstatic const Lights1 wf_seg7_lights_0700DA68 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700DA80 - 0x0700DB70\nstatic const Vtx wf_seg7_vertex_0700DA80[] = {\n    {{{  -252,      5,    253}, 0, { -2074,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   259,      5,    253}, 0, {   762,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   195,    210,    253}, 0, {   408,   -146}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   259,      5,   -258}, 0, {   540,   1116}, {0x57, 0x1b, 0xa9, 0xff}}},\n    {{{   195,    210,   -258}, 0, {   540,    -72}, {0x57, 0x1b, 0xa9, 0xff}}},\n    {{{   259,    210,   -194}, 0, {   156,     34}, {0x57, 0x1b, 0xa9, 0xff}}},\n    {{{   195,    210,   -258}, 0, {   364,    990}, {0x24, 0x74, 0xdc, 0xff}}},\n    {{{   136,    261,   -155}, 0, {   530,    500}, {0x24, 0x74, 0xdc, 0xff}}},\n    {{{   259,    210,   -194}, 0, {     0,    990}, {0x24, 0x74, 0xdc, 0xff}}},\n    {{{   259,    210,    189}, 0, {   764,   -144}, {0x57, 0x1b, 0x57, 0xff}}},\n    {{{   195,    210,    253}, 0, {   368,   -116}, {0x57, 0x1b, 0x57, 0xff}}},\n    {{{   259,      5,    253}, 0, {   764,   1004}, {0x57, 0x1b, 0x57, 0xff}}},\n    {{{   259,    210,    189}, 0, {   990,    990}, {0x24, 0x73, 0x24, 0xff}}},\n    {{{   136,    261,    151}, 0, {   990,   -352}, {0x24, 0x73, 0x24, 0xff}}},\n    {{{   195,    210,    253}, 0, {   520,    452}, {0x24, 0x73, 0x24, 0xff}}},\n};\n\n// 0x0700DB70 - 0x0700DC60\nstatic const Vtx wf_seg7_vertex_0700DB70[] = {\n    {{{  -252,    261,   -155}, 0, {  4056,    412}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{   136,    261,   -155}, 0, {   950,    412}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{   195,    210,   -258}, 0, {   478,    990}, {0x00, 0x71, 0xc8, 0xff}}},\n    {{{  -252,      5,    253}, 0, { -2074,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   195,    210,    253}, 0, {   408,   -146}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -252,    210,    253}, 0, { -2074,   -146}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -252,    210,    253}, 0, { -3096,    990}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{   195,    210,    253}, 0, {   480,    990}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -252,    261,    151}, 0, { -3096,    412}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{   136,    261,    151}, 0, {     8,    412}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -252,    261,    151}, 0, {     0,  -3138}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   136,    261,   -155}, 0, {  1194,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -252,    261,   -155}, 0, {  1194,  -3138}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   136,    261,    151}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -252,    210,   -258}, 0, {  4056,    990}, {0x00, 0x71, 0xc8, 0xff}}},\n};\n\n// 0x0700DC60 - 0x0700DCE0\nstatic const Vtx wf_seg7_vertex_0700DC60[] = {\n    {{{  -252,    210,   -258}, 0, {   762,   -146}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   259,      5,   -258}, 0, { -2074,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -252,      5,   -258}, 0, {   762,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   195,    210,   -258}, 0, { -1720,   -146}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   136,    261,   -155}, 0, {   582,    -72}, {0x30, 0x75, 0x00, 0xff}}},\n    {{{   259,    210,    189}, 0, {  -796,    990}, {0x30, 0x75, 0x00, 0xff}}},\n    {{{   259,    210,   -194}, 0, {   734,    990}, {0x30, 0x75, 0x00, 0xff}}},\n    {{{   136,    261,    151}, 0, {  -644,    -72}, {0x30, 0x75, 0x00, 0xff}}},\n};\n\n// 0x0700DCE0 - 0x0700DD20\nstatic const Vtx wf_seg7_vertex_0700DCE0[] = {\n    {{{   259,      5,   -258}, 0, {  1118,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   259,    210,   -194}, 0, {   958,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   259,    210,    189}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   259,      5,    253}, 0, {  -158,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700DD20 - 0x0700DDE8\nstatic const Gfx wf_seg7_dl_0700DD20[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wf_seg7_lights_0700DA68.l, 1),\n    gsSPLight(&wf_seg7_lights_0700DA68.a, 2),\n    gsSPVertex(wf_seg7_vertex_0700DA80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wf_seg7_vertex_0700DB70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(wf_seg7_vertex_0700DC60, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700DDE8 - 0x0700DE20\nstatic const Gfx wf_seg7_dl_0700DDE8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wf_seg7_texture_07002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_0700DCE0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700DE20 - 0x0700DE98\nconst Gfx wf_seg7_dl_0700DE20[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_0700DD20),\n    gsSPDisplayList(wf_seg7_dl_0700DDE8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/level.yaml",
    "content": "# Whomp's Fortress\nshort-name: wf\nfull-name: Whomp's Fortress\ntexture-bin: grass\ntexture-file: [\"/texture.inc.c\"]\narea-count: 1\nobjects: [beta_extending_platform, breakable_wall_left, breakable_wall_right, extending_platform, kickable_board, large_bomp, rotating_wooden_platform, sliding_platform, small_bomp, tower_door, tumbling_bridge_far, tumbling_bridge_near]\nshared-path: []\n# loaded files\nskybox-bin: cloud_floor\ntexture-bin: grass\neffects: false\nactor-bins: [group1, group14]\ncommon-bin: [common0]"
  },
  {
    "path": "levels/wf/leveldata.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"surface_terrains.h\"\n#include \"moving_texture_macros.h\"\n#include \"level_misc_macros.h\"\n#include \"macro_presets.h\"\n#include \"special_presets.h\"\n#include \"textures.h\"\n#include \"dialog_ids.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/wf/texture.inc.c\"\n#include \"levels/wf/areas/1/1/model.inc.c\"\n#include \"levels/wf/areas/1/2/model.inc.c\"\n#include \"levels/wf/areas/1/3/model.inc.c\"\n#include \"levels/wf/areas/1/4/model.inc.c\"\n#include \"levels/wf/areas/1/5/1.inc.c\"\n#include \"levels/wf/areas/1/5/2.inc.c\"\n#include \"levels/wf/areas/1/6/1.inc.c\"\n#include \"levels/wf/areas/1/6/2.inc.c\"\n#include \"levels/wf/areas/1/7/model.inc.c\"\n#include \"levels/wf/areas/1/8/model.inc.c\"\n#include \"levels/wf/areas/1/9/model.inc.c\"\n#include \"levels/wf/areas/1/10/1.inc.c\"\n#include \"levels/wf/areas/1/10/2.inc.c\"\n#include \"levels/wf/areas/1/11/model.inc.c\"\n#include \"levels/wf/areas/1/12/1.inc.c\"\n#include \"levels/wf/areas/1/12/2.inc.c\"\n#include \"levels/wf/areas/1/13/model.inc.c\"\n#include \"levels/wf/areas/1/14/model.inc.c\"\n#include \"levels/wf/areas/1/15/1.inc.c\"\n#include \"levels/wf/areas/1/15/2.inc.c\"\n#include \"levels/wf/areas/1/15/3.inc.c\"\n#include \"levels/wf/areas/1/16/model.inc.c\"\n#include \"levels/wf/areas/1/17/model.inc.c\"\n#include \"levels/wf/areas/1/18/model.inc.c\"\n#include \"levels/wf/areas/1/19/model.inc.c\"\n#include \"levels/wf/small_bomp/1.inc.c\"\n#include \"levels/wf/small_bomp/2.inc.c\"\n#include \"levels/wf/large_bomp/model.inc.c\"\n#include \"levels/wf/tumbling_bridge_near/model.inc.c\"\n#include \"levels/wf/tumbling_bridge_far/model.inc.c\"\n#include \"levels/wf/rotating_wooden_platform/1.inc.c\"\n#include \"levels/wf/rotating_wooden_platform/2.inc.c\"\n#include \"levels/wf/sliding_platform/model.inc.c\"\n#include \"levels/wf/beta_extending_platform/model.inc.c\"\n#include \"levels/wf/extending_platform/model.inc.c\"\n#include \"levels/wf/breakable_wall_right/model.inc.c\"\n#include \"levels/wf/breakable_wall_left/model.inc.c\"\n#include \"levels/wf/kickable_board/1.inc.c\"\n#include \"levels/wf/kickable_board/2.inc.c\"\n#include \"levels/wf/tower_door/model.inc.c\"\n#include \"levels/wf/small_bomp/collision.inc.c\"\n#include \"levels/wf/large_bomp/collision.inc.c\"\n#include \"levels/wf/rotating_wooden_platform/collision.inc.c\"\n#include \"levels/wf/sliding_platform/collision.inc.c\"\n#include \"levels/wf/tumbling_bridge_near/collision.inc.c\"\n#include \"levels/wf/beta_extending_platform/collision.inc.c\"\n#include \"levels/wf/extending_platform/collision.inc.c\"\n#include \"levels/wf/breakable_wall_right/collision.inc.c\"\n#include \"levels/wf/breakable_wall_left/collision.inc.c\"\n#include \"levels/wf/kickable_board/collision.inc.c\"\n#include \"levels/wf/tower_door/collision.inc.c\"\n#include \"levels/wf/rotating_platform/collision.inc.c\" // This is odd... TODO: investigate this.\n#include \"levels/wf/areas/1/10/collision.inc.c\"\n#include \"levels/wf/areas/1/11/collision.inc.c\"\n#include \"levels/wf/areas/1/collision.inc.c\"\n#include \"levels/wf/areas/1/macro.inc.c\"\n#include \"levels/wf/areas/1/movtext.inc.c\"\n"
  },
  {
    "path": "levels/wf/rotating_platform/collision.inc.c",
    "content": "// 0x0700FD30 - 0x0700FE12\nconst Collision wf_seg7_collision_rotating_platform[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0xD),\n    COL_VERTEX(-442, 0, -255),\n    COL_VERTEX(0, 0, 512),\n    COL_VERTEX(256, 0, 443),\n    COL_VERTEX(-255, 0, 443),\n    COL_VERTEX(-442, 0, 256),\n    COL_VERTEX(-511, 0, 0),\n    COL_VERTEX(443, 0, 256),\n    COL_VERTEX(0, 0, -511),\n    COL_VERTEX(-255, 0, -442),\n    COL_VERTEX(256, 0, -442),\n    COL_VERTEX(443, 0, -255),\n    COL_VERTEX(512, 0, 0),\n    COL_VERTEX(0, -255, 0),\n    COL_TRI_INIT(SURFACE_DEFAULT, 12),\n    COL_TRI(8, 12, 0),\n    COL_TRI(8, 7, 12),\n    COL_TRI(10, 11, 12),\n    COL_TRI(9, 10, 12),\n    COL_TRI(7, 9, 12),\n    COL_TRI(0, 12, 5),\n    COL_TRI(11, 6, 12),\n    COL_TRI(4, 5, 12),\n    COL_TRI(3, 4, 12),\n    COL_TRI(1, 3, 12),\n    COL_TRI(2, 1, 12),\n    COL_TRI(6, 2, 12),\n    COL_TRI_INIT(SURFACE_NOISE_DEFAULT, 10),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI(0, 4, 3),\n    COL_TRI(0, 5, 4),\n    COL_TRI(0, 2, 6),\n    COL_TRI(0, 7, 8),\n    COL_TRI(0, 9, 7),\n    COL_TRI(0, 10, 9),\n    COL_TRI(0, 11, 10),\n    COL_TRI(0, 6, 11),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n\n"
  },
  {
    "path": "levels/wf/rotating_wooden_platform/1.inc.c",
    "content": "// 0x0700E440 - 0x0700E458\nstatic const Lights1 wf_seg7_lights_0700E440 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700E458 - 0x0700E548\nstatic const Vtx wf_seg7_vertex_0700E458[] = {\n    {{{   768,   -127,      0}, 0, {   582,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   768,      0,   -101}, 0, {   172,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   768,      0,    102}, 0, {   990,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{     0,      0,    205}, 0, {   990,      0}, {0x25, 0x99, 0x3f, 0xff}}},\n    {{{     0,   -127,      0}, 0, {   990,    990}, {0x25, 0x99, 0x3f, 0xff}}},\n    {{{   177,      0,    102}, 0, {  1876,    478}, {0x25, 0x99, 0x3f, 0xff}}},\n    {{{  -176,      0,    102}, 0, {   104,    478}, {0xdb, 0x99, 0x3f, 0xff}}},\n    {{{     0,   -127,      0}, 0, {   990,    990}, {0xdb, 0x99, 0x3f, 0xff}}},\n    {{{     0,      0,    205}, 0, {   990,      0}, {0xdb, 0x99, 0x3f, 0xff}}},\n    {{{  -176,      0,   -101}, 0, {   104,   1498}, {0xb6, 0x9a, 0x00, 0xff}}},\n    {{{     0,   -127,      0}, 0, {   990,    990}, {0xb6, 0x9a, 0x00, 0xff}}},\n    {{{  -176,      0,    102}, 0, {   104,    478}, {0xb6, 0x9a, 0x00, 0xff}}},\n    {{{     0,      0,   -204}, 0, {   990,   2010}, {0xdb, 0x99, 0xc0, 0xff}}},\n    {{{     0,   -127,      0}, 0, {   990,    990}, {0xdb, 0x99, 0xc0, 0xff}}},\n    {{{  -176,      0,   -101}, 0, {   104,   1498}, {0xdb, 0x99, 0xc0, 0xff}}},\n};\n\n// 0x0700E548 - 0x0700E638\nstatic const Vtx wf_seg7_vertex_0700E548[] = {\n    {{{   177,      0,   -101}, 0, {  1876,   1500}, {0x25, 0x99, 0xc0, 0xff}}},\n    {{{     0,   -127,      0}, 0, {   990,    990}, {0x25, 0x99, 0xc0, 0xff}}},\n    {{{     0,      0,   -204}, 0, {   990,   2010}, {0x25, 0x99, 0xc0, 0xff}}},\n    {{{     0,   -127,      0}, 0, {   990,    990}, {0x00, 0xb1, 0x63, 0xff}}},\n    {{{   768,   -127,      0}, 0, {  4822,    990}, {0x00, 0xb1, 0x63, 0xff}}},\n    {{{   768,      0,    102}, 0, {  4822,    478}, {0x00, 0xb1, 0x63, 0xff}}},\n    {{{   177,      0,    102}, 0, {  1876,    480}, {0x00, 0xb1, 0x63, 0xff}}},\n    {{{   768,   -127,      0}, 0, {  4822,    990}, {0x00, 0xb1, 0x9d, 0xff}}},\n    {{{     0,   -127,      0}, 0, {   990,    990}, {0x00, 0xb1, 0x9d, 0xff}}},\n    {{{   177,      0,   -101}, 0, {  1876,   1500}, {0x00, 0xb1, 0x9d, 0xff}}},\n    {{{   768,      0,   -101}, 0, {  4822,   1498}, {0x00, 0xb1, 0x9d, 0xff}}},\n    {{{   177,      0,   -101}, 0, {   922,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   177,      0,    102}, 0, {   922,    734}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   768,      0,    102}, 0, {  2396,    734}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   768,      0,   -101}, 0, {  2396,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700E638 - 0x0700E698\nstatic const Vtx wf_seg7_vertex_0700E638[] = {\n    {{{     0,      0,   -204}, 0, {   478,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,      0,    205}, 0, {   480,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   177,      0,    102}, 0, {   922,    734}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -176,      0,   -101}, 0, {    36,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -176,      0,    102}, 0, {    36,    734}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   177,      0,   -101}, 0, {   922,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700E698 - 0x0700E760\nstatic const Gfx wf_seg7_dl_0700E698[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09006800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wf_seg7_lights_0700E440.l, 1),\n    gsSPLight(&wf_seg7_lights_0700E440.a, 2),\n    gsSPVertex(wf_seg7_vertex_0700E458, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wf_seg7_vertex_0700E548, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(wf_seg7_vertex_0700E638, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  4, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  0,  2,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700E760 - 0x0700E7D0\nconst Gfx wf_seg7_dl_0700E760[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_0700E698),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/rotating_wooden_platform/2.inc.c",
    "content": "// 0x0700E7D0 - 0x0700E7E8\nstatic const Lights1 wf_seg7_lights_0700E7D0 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700E7E8 - 0x0700E8E8\nstatic const Vtx wf_seg7_vertex_0700E7E8[] = {\n    {{{   177,      0,   -101}, 0, {   922,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   177,      0,    102}, 0, {   922,    734}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   768,      0,    102}, 0, {  2396,    734}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   768,      0,   -101}, 0, {  2396,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -176,      0,    102}, 0, {  3940,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     0,      0,   -204}, 0, {  3232,   -236}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   177,      0,   -101}, 0, {  2522,    172}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   177,      0,    102}, 0, {  2522,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     0,      0,    205}, 0, {  3232,   1396}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -176,      0,   -101}, 0, {  3940,    172}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   768,      0,   -101}, 0, {   166,    172}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   768,      0,    102}, 0, {   166,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   177,      0,    102}, 0, {  2524,    990}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{     0,      0,   -204}, 0, {   478,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -176,      0,    102}, 0, {    36,    734}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{     0,      0,    205}, 0, {   480,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700E8E8 - 0x0700E918\nstatic const Vtx wf_seg7_vertex_0700E8E8[] = {\n    {{{     0,      0,   -204}, 0, {   478,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -176,      0,   -101}, 0, {    36,    224}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -176,      0,    102}, 0, {    36,    734}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700E918 - 0x0700E9B8\nstatic const Gfx wf_seg7_dl_0700E918[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09006800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wf_seg7_lights_0700E7D0.l, 1),\n    gsSPLight(&wf_seg7_lights_0700E7D0.a, 2),\n    gsSPVertex(wf_seg7_vertex_0700E7E8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 4,  7,  8, 0x0,  4,  9,  5, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12,  6, 0x0),\n    gsSP2Triangles(13,  1,  0, 0x0, 13, 14, 15, 0x0),\n    gsSP1Triangle(13, 15,  1, 0x0),\n    gsSPVertex(wf_seg7_vertex_0700E8E8, 3, 0),\n    gsSP1Triangle( 0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700E9B8 - 0x0700EA28\nconst Gfx wf_seg7_dl_0700E9B8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_0700E918),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/rotating_wooden_platform/collision.inc.c",
    "content": "// 0x0700FA00 - 0x0700FAA2\nconst Collision wf_seg7_collision_clocklike_rotation[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0xA),\n    COL_VERTEX(0, 0, -204),\n    COL_VERTEX(-176, 0, -101),\n    COL_VERTEX(-176, 0, 102),\n    COL_VERTEX(0, 0, 205),\n    COL_VERTEX(177, 0, 102),\n    COL_VERTEX(177, 0, -101),\n    COL_VERTEX(0, -127, 0),\n    COL_VERTEX(768, -127, 0),\n    COL_VERTEX(768, 0, -101),\n    COL_VERTEX(768, 0, 102),\n    COL_TRI_INIT(SURFACE_DEFAULT, 15),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI(0, 3, 4),\n    COL_TRI(0, 4, 5),\n    COL_TRI(3, 6, 4),\n    COL_TRI(2, 6, 3),\n    COL_TRI(1, 6, 2),\n    COL_TRI(0, 6, 1),\n    COL_TRI(8, 7, 5),\n    COL_TRI(5, 6, 0),\n    COL_TRI(6, 7, 9),\n    COL_TRI(4, 6, 9),\n    COL_TRI(5, 4, 9),\n    COL_TRI(5, 9, 8),\n    COL_TRI(7, 6, 5),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/wf/rotating_wooden_platform/geo.inc.c",
    "content": "// 0x0E000A58\nconst GeoLayout wf_geo_000A58[] = {\n    GEO_CULLING_RADIUS(1500),\n    GEO_OPEN_NODE(),\n        GEO_RENDER_RANGE(-2048, 5000),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, wf_seg7_dl_0700E760),\n        GEO_CLOSE_NODE(),\n        GEO_RENDER_RANGE(5000, 32767),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, wf_seg7_dl_0700E9B8),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/wf/script.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"behavior_data.h\"\n#include \"model_ids.h\"\n#include \"seq_ids.h\"\n#include \"dialog_ids.h\"\n#include \"segment_symbols.h\"\n#include \"level_commands.h\"\n\n#include \"game/level_update.h\"\n\n#include \"levels/scripts.h\"\n\n#include \"actors/common1.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/wf/header.h\"\n\n// Unlike most levels, some of the level geometry objects in WF are defined as regular objects instead of terrain objects.\n// Some of them are still terrain objects, however.\nstatic const LevelScript script_func_local_1[] = {\n    OBJECT(/*model*/ MODEL_LEVEL_GEOMETRY_03, /*pos*/  2305, 2432,  -255, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvStaticObject),\n    OBJECT(/*model*/ MODEL_LEVEL_GEOMETRY_04, /*pos*/  3405, 1664, -1791, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvStaticObject),\n    OBJECT(/*model*/ MODEL_LEVEL_GEOMETRY_05, /*pos*/  3840,    0, -2303, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvStaticObject),\n    OBJECT(/*model*/ MODEL_LEVEL_GEOMETRY_05, /*pos*/  3840,    0, -1279, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvStaticObject),\n    OBJECT(/*model*/ MODEL_LEVEL_GEOMETRY_06, /*pos*/     0,    0,     0, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvStaticObject),\n    OBJECT(/*model*/ MODEL_LEVEL_GEOMETRY_07, /*pos*/  1757, 3519, -3151, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvStaticObject),\n    OBJECT(/*model*/ MODEL_LEVEL_GEOMETRY_0A, /*pos*/  3840,  794,  2688, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvStaticObject),\n    OBJECT(/*model*/ MODEL_LEVEL_GEOMETRY_0C, /*pos*/  1408, 2522,  2431, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvStaticObject),\n    OBJECT(/*model*/ MODEL_WF_GIANT_POLE,     /*pos*/ -2560, 2560,  -256, /*angle*/ 0, 0, 0, /*bhvParam*/ 0, /*bhv*/ bhvGiantPole),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_2[] = {\n    OBJECT          (/*model*/ MODEL_WF_SMALL_BOMP,               /*pos*/  3300, 1070,     1, /*angle*/ 0,  90, 0, /*bhvParam*/ 0, /*bhv*/ bhvSmallBomp),\n    OBJECT          (/*model*/ MODEL_WF_SMALL_BOMP,               /*pos*/  3300, 1070,  1281, /*angle*/ 0,  90, 0, /*bhvParam*/ 0, /*bhv*/ bhvSmallBomp),\n    OBJECT          (/*model*/ MODEL_WF_LARGE_BOMP,               /*pos*/  3300, 1070,   641, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvLargeBomp),\n    OBJECT          (/*model*/ MODEL_WF_ROTATING_WOODEN_PLATFORM, /*pos*/  -255, 2560,  2304, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvWFRotatingWoodenPlatform),\n    OBJECT          (/*model*/ MODEL_WF_SLIDING_PLATFORM,         /*pos*/  3328, 1075, -1791, /*angle*/ 0,  90, 0, /*bhvParam*/ BPARAM2(WF_SLID_BRICK_PTFM_BP_MOV_VEL_15), /*bhv*/ bhvWFSlidingPlatform),\n    OBJECT          (/*model*/ MODEL_WF_SLIDING_PLATFORM,         /*pos*/  3328, 1075,  -767, /*angle*/ 0,  90, 0, /*bhvParam*/ BPARAM2(WF_SLID_BRICK_PTFM_BP_MOV_VEL_10), /*bhv*/ bhvWFSlidingPlatform),\n    OBJECT          (/*model*/ MODEL_WF_SLIDING_PLATFORM,         /*pos*/  3328, 1075, -2815, /*angle*/ 0,  90, 0, /*bhvParam*/ BPARAM2(WF_SLID_BRICK_PTFM_BP_MOV_VEL_20), /*bhv*/ bhvWFSlidingPlatform),\n    OBJECT          (/*model*/ MODEL_WF_TUMBLING_BRIDGE,          /*pos*/  1792, 2496,  1600, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(TUMBLING_BRIDGE_BP_WF), /*bhv*/ bhvTumblingBridge),\n    OBJECT          (/*model*/ MODEL_WF_BREAKABLE_WALL_RIGHT,     /*pos*/   512, 2176,  2944, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvWFBreakableWallRight),\n    OBJECT          (/*model*/ MODEL_WF_BREAKABLE_WALL_LEFT,      /*pos*/ -1023, 2176,  2944, /*angle*/ 0,   0, 0, /*bhvParam*/ 0, /*bhv*/ bhvWFBreakableWallLeft),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_WF_KICKABLE_BOARD,           /*pos*/    13, 3584, -1407, /*angle*/ 0, 315, 0, /*bhvParam*/ 0, /*bhv*/ bhvKickableBoard, /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_1UP,                         /*pos*/  -384, 3584,     6, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(ONE_UP_BP_GENERIC), /*bhv*/ bhv1Up,            /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    OBJECT          (/*model*/ MODEL_WF_ROTATING_PLATFORM,        /*pos*/  2304, 3584, -2303, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(0x08) | BPARAM2(ROTATING_PLATFORM_BP_WF), /*bhv*/ bhvRotatingPlatform),\n    OBJECT          (/*model*/ MODEL_WF_ROTATING_PLATFORM,        /*pos*/  3200, 3328, -1791, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(0x08) | BPARAM2(ROTATING_PLATFORM_BP_WF), /*bhv*/ bhvRotatingPlatform),\n    OBJECT          (/*model*/ MODEL_WF_ROTATING_PLATFORM,        /*pos*/  2688, 3584,  -895, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM1(0x08) | BPARAM2(ROTATING_PLATFORM_BP_WF), /*bhv*/ bhvRotatingPlatform),\n    OBJECT          (/*model*/ MODEL_NONE,                        /*pos*/ -2495, 1331,  -256, /*angle*/ 0,   0, 0, /*bhvParam*/ BPARAM2(61), /*bhv*/ bhvPoleGrabbing),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_3[] = {\n    OBJECT          (/*model*/ MODEL_THWOMP,            /*pos*/  3462, 1939, -1545, /*angle*/ 0,  180, 0, /*bhvParam*/ BPARAM2(0), /*bhv*/ bhvThwomp2),\n    OBJECT          (/*model*/ MODEL_THWOMP,            /*pos*/  3462, 1075, -3314, /*angle*/ 0,   90, 0, /*bhvParam*/ BPARAM2(0), /*bhv*/ bhvThwomp),\n    OBJECT          (/*model*/ MODEL_NONE,              /*pos*/  -856,  922,  3819, /*angle*/ 0,    0, 0, /*bhvParam*/ 0, /*bhv*/ bhvBetaFishSplashSpawner),\n    OBJECT          (/*model*/ MODEL_PIRANHA_PLANT,     /*pos*/  1822, 2560,  -101, /*angle*/ 0,   90, 0, /*bhvParam*/ 0, /*bhv*/ bhvPiranhaPlant),\n    OBJECT          (/*model*/ MODEL_PIRANHA_PLANT,     /*pos*/  4625,  256,  5017, /*angle*/ 0,  -90, 0, /*bhvParam*/ 0, /*bhv*/ bhvPiranhaPlant),\n    OBJECT          (/*model*/ MODEL_PIRANHA_PLANT,     /*pos*/   689, 2560,  1845, /*angle*/ 0,   90, 0, /*bhvParam*/ 0, /*bhv*/ bhvPiranhaPlant),\n    OBJECT          (/*model*/ MODEL_WHOMP,             /*pos*/ -1545, 2560,  -286, /*angle*/ 0,    0, 0, /*bhvParam*/ BPARAM2(WHOMP_BP_SMALL), /*bhv*/ bhvSmallWhomp),\n    OBJECT          (/*model*/ MODEL_WHOMP,             /*pos*/   189, 2560, -1857, /*angle*/ 0, -135, 0, /*bhvParam*/ BPARAM2(WHOMP_BP_SMALL), /*bhv*/ bhvSmallWhomp),\n    OBJECT          (/*model*/ MODEL_BUTTERFLY,         /*pos*/  4736,  256,  4992, /*angle*/ 0,    0, 0, /*bhvParam*/ 0, /*bhv*/ bhvButterfly),\n    OBJECT          (/*model*/ MODEL_BUTTERFLY,         /*pos*/  4608,  256,  5120, /*angle*/ 0,    0, 0, /*bhvParam*/ 0, /*bhv*/ bhvButterfly),\n    OBJECT          (/*model*/ MODEL_BUTTERFLY,         /*pos*/  4608,  256,  4992, /*angle*/ 0,    0, 0, /*bhvParam*/ 0, /*bhv*/ bhvButterfly),\n    OBJECT          (/*model*/ MODEL_BUTTERFLY,         /*pos*/  4608,  256,  4864, /*angle*/ 0,    0, 0, /*bhvParam*/ 0, /*bhv*/ bhvButterfly),\n    OBJECT          (/*model*/ MODEL_BUTTERFLY,         /*pos*/  4480,  256,  4992, /*angle*/ 0,    0, 0, /*bhvParam*/ 0, /*bhv*/ bhvButterfly),\n    OBJECT          (/*model*/ MODEL_BUTTERFLY,         /*pos*/  4608,  256,   256, /*angle*/ 0,    0, 0, /*bhvParam*/ 0, /*bhv*/ bhvButterfly),\n    OBJECT          (/*model*/ MODEL_BUTTERFLY,         /*pos*/  4736,  256,   128, /*angle*/ 0,    0, 0, /*bhvParam*/ 0, /*bhv*/ bhvButterfly),\n    OBJECT          (/*model*/ MODEL_BUTTERFLY,         /*pos*/  4480,  256,   128, /*angle*/ 0,    0, 0, /*bhvParam*/ 0, /*bhv*/ bhvButterfly),\n    OBJECT          (/*model*/ MODEL_BUTTERFLY,         /*pos*/  4608,  256,     0, /*angle*/ 0,    0, 0, /*bhvParam*/ 0, /*bhv*/ bhvButterfly),\n    OBJECT          (/*model*/ MODEL_BUTTERFLY,         /*pos*/  4608,  256,   128, /*angle*/ 0,    0, 0, /*bhvParam*/ 0, /*bhv*/ bhvButterfly),\n    OBJECT          (/*model*/ MODEL_NONE,              /*pos*/  1035, 2880,  -900, /*angle*/ 0,   45, 0, /*bhvParam*/ BPARAM1(0) | BPARAM2(0), /*bhv*/ bhvCheckerboardElevatorGroup),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_BULLET_BILL,       /*pos*/  1280, 3712,   968, /*angle*/ 0,  180, 0, /*bhvParam*/ 0, /*bhv*/ bhvBulletBill,               /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_LEVEL_GEOMETRY_08, /*pos*/     0, 3584,     0, /*angle*/ 0,    0, 0, /*bhvParam*/ 0, /*bhv*/ bhvTower,                     /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_LEVEL_GEOMETRY_09, /*pos*/  1280, 3584,   896, /*angle*/ 0,    0, 0, /*bhvParam*/ 0, /*bhv*/ bhvBulletBillCannon,        /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_NONE,              /*pos*/     0, 3483,     0, /*angle*/ 0,    0, 0, /*bhvParam*/ 0, /*bhv*/ bhvTowerPlatformGroup,      /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_WF_TOWER_DOOR,     /*pos*/  -511, 3584,     0, /*angle*/ 0,    0, 0, /*bhvParam*/ 0, /*bhv*/ bhvTowerDoor,                /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_BOBOMB_BUDDY,      /*pos*/ -1700, 1140,  3500, /*angle*/ 0,    0, 0, /*bhvParam*/ 0, /*bhv*/ bhvBobombBuddyOpensCannon, /*acts*/ ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_HOOT,              /*pos*/  2560,  700,  4608, /*angle*/ 0,    0, 0, /*bhvParam*/ 0, /*bhv*/ bhvHoot,                      /*acts*/ ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_4[] = {\n    OBJECT_WITH_ACTS(/*model*/ MODEL_WHOMP, /*pos*/     0, 3584,    0, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_1), /*bhv*/ bhvWhompKingBoss,      /*acts*/ ACT_1),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_STAR,  /*pos*/   300, 5550,    0, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_2), /*bhv*/ bhvStar,                 /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_STAR,  /*pos*/ -2500, 1500, -750, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_3), /*bhv*/ bhvStar,                 /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_NONE,  /*pos*/  4600,  550, 2500, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_4), /*bhv*/ bhvHiddenRedCoinStar, /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_STAR,  /*pos*/  2880, 4300,  190, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_5), /*bhv*/ bhvStar,                 /*acts*/ ALL_ACTS),\n    OBJECT_WITH_ACTS(/*model*/ MODEL_STAR,  /*pos*/   590, 2450, 2650, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_6), /*bhv*/ bhvStar,                 /*acts*/ ALL_ACTS),\n    RETURN(),\n};\n\nconst LevelScript level_wf_entry[] = {\n    INIT_LEVEL(),\n    LOAD_MIO0        (/*seg*/ 0x07, _wf_segment_7SegmentRomStart, _wf_segment_7SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x0A, _cloud_floor_skybox_mio0SegmentRomStart, _cloud_floor_skybox_mio0SegmentRomEnd),\n    LOAD_MIO0_TEXTURE(/*seg*/ 0x09, _grass_mio0SegmentRomStart, _grass_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x05, _group1_mio0SegmentRomStart, _group1_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0C, _group1_geoSegmentRomStart,  _group1_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x06, _group14_mio0SegmentRomStart, _group14_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0D, _group14_geoSegmentRomStart,  _group14_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x08, _common0_mio0SegmentRomStart, _common0_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0F, _common0_geoSegmentRomStart,  _common0_geoSegmentRomEnd),\n    ALLOC_LEVEL_POOL(),\n    MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),\n    JUMP_LINK(script_func_global_1),\n    JUMP_LINK(script_func_global_2),\n    JUMP_LINK(script_func_global_15),\n    LOAD_MODEL_FROM_GEO(MODEL_WF_BUBBLY_TREE,                   bubbly_tree_geo),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_03,                wf_geo_0007E0),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_04,                wf_geo_000820),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_05,                wf_geo_000860),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_06,                wf_geo_000878),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_07,                wf_geo_000890),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_08,                wf_geo_0008A8),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_09,                wf_geo_0008E8),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_0A,                wf_geo_000900),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_0C,                wf_geo_000940),\n    LOAD_MODEL_FROM_GEO(MODEL_WF_GIANT_POLE,                    wf_geo_000AE0),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_0E,                wf_geo_000958),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_0F,                wf_geo_0009A0),\n    LOAD_MODEL_FROM_GEO(MODEL_WF_ROTATING_PLATFORM,             wf_geo_0009B8),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_11,                wf_geo_0009D0),\n    LOAD_MODEL_FROM_GEO(MODEL_LEVEL_GEOMETRY_12,                wf_geo_0009E8),\n    LOAD_MODEL_FROM_GEO(MODEL_WF_SMALL_BOMP,                    wf_geo_000A00),\n    LOAD_MODEL_FROM_GEO(MODEL_WF_LARGE_BOMP,                    wf_geo_000A40),\n    LOAD_MODEL_FROM_GEO(MODEL_WF_ROTATING_WOODEN_PLATFORM,      wf_geo_000A58),\n    LOAD_MODEL_FROM_GEO(MODEL_WF_SLIDING_PLATFORM,              wf_geo_000A98),\n    LOAD_MODEL_FROM_GEO(MODEL_WF_TUMBLING_BRIDGE_PART,          wf_geo_000AB0),\n    LOAD_MODEL_FROM_GEO(MODEL_WF_TUMBLING_BRIDGE,               wf_geo_000AC8),\n    LOAD_MODEL_FROM_GEO(MODEL_WF_TOWER_TRAPEZOID_PLATORM,       wf_geo_000AF8),\n    LOAD_MODEL_FROM_GEO(MODEL_WF_TOWER_SQUARE_PLATORM,          wf_geo_000B10),\n    LOAD_MODEL_FROM_GEO(MODEL_WF_TOWER_SQUARE_PLATORM_UNUSED,   wf_geo_000B38),\n    LOAD_MODEL_FROM_GEO(MODEL_WF_TOWER_SQUARE_PLATORM_ELEVATOR, wf_geo_000B60),\n    LOAD_MODEL_FROM_GEO(MODEL_WF_BREAKABLE_WALL_RIGHT,          wf_geo_000B78),\n    LOAD_MODEL_FROM_GEO(MODEL_WF_BREAKABLE_WALL_LEFT,           wf_geo_000B90),\n    LOAD_MODEL_FROM_GEO(MODEL_WF_KICKABLE_BOARD,                wf_geo_000BA8),\n    LOAD_MODEL_FROM_GEO(MODEL_WF_TOWER_DOOR,                    wf_geo_000BE0),\n    LOAD_MODEL_FROM_GEO(MODEL_WF_KICKABLE_BOARD_FELLED,         wf_geo_000BC8),\n\n    AREA(/*index*/ 1, wf_geo_000BF8),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/  2600, 1256,  5120, /*angle*/ 0, 90, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvSpinAirborneWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ -2925, 2560,  -947, /*angle*/ 0, 19, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0B), /*bhv*/ bhvFadingWarp),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/  2548, 1075, -3962, /*angle*/ 0, 51, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0C), /*bhv*/ bhvFadingWarp),\n        WARP_NODE(/*id*/ WARP_NODE_0A,      /*destLevel*/ LEVEL_WF,     /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_0B,      /*destLevel*/ LEVEL_WF,     /*destArea*/ 1, /*destNode*/ WARP_NODE_0C, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_0C,      /*destLevel*/ LEVEL_WF,     /*destArea*/ 1, /*destNode*/ WARP_NODE_0B, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_SUCCESS, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_34, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH,   /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 1, /*destNode*/ WARP_NODE_66, /*flags*/ WARP_NO_CHECKPOINT),\n        JUMP_LINK(script_func_local_1),\n        JUMP_LINK(script_func_local_2),\n        JUMP_LINK(script_func_local_3),\n        JUMP_LINK(script_func_local_4),\n        TERRAIN(/*terrainData*/ wf_seg7_collision_070102D8),\n        MACRO_OBJECTS(/*objList*/ wf_seg7_macro_objs),\n        SHOW_DIALOG(/*index*/ 0x00, DIALOG_030),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0005, /*seq*/ SEQ_LEVEL_GRASS),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_STONE),\n    END_AREA(),\n\n    FREE_LEVEL_POOL(),\n    MARIO_POS(/*area*/ 1, /*yaw*/ 90, /*pos*/ 2600, 256, 5120),\n    CALL(/*arg*/ 0, /*func*/ lvl_init_or_update),\n    CALL_LOOP(/*arg*/ 1, /*func*/ lvl_init_or_update),\n    CLEAR_LEVEL(),\n    SLEEP_BEFORE_EXIT(/*frames*/ 1),\n    EXIT(),\n};\n"
  },
  {
    "path": "levels/wf/sliding_platform/collision.inc.c",
    "content": "// 0x0700FAA4 - 0x0700FAEC\nconst Collision wf_seg7_collision_sliding_brick_platform[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x6),\n    COL_VERTEX(256, 0, 256),\n    COL_VERTEX(256, -50, -255),\n    COL_VERTEX(256, 0, -255),\n    COL_VERTEX(256, -50, 256),\n    COL_VERTEX(-255, 0, -255),\n    COL_VERTEX(-255, 0, 256),\n    COL_TRI_INIT(SURFACE_DEFAULT, 4),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 1),\n    COL_TRI(0, 4, 5),\n    COL_TRI(0, 2, 4),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/wf/sliding_platform/geo.inc.c",
    "content": "// 0x0E000A98\nconst GeoLayout wf_geo_000A98[] = {\n    GEO_CULLING_RADIUS(500),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, wf_seg7_dl_0700EB40),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/wf/sliding_platform/model.inc.c",
    "content": "// 0x0700EA28 - 0x0700EA40\nstatic const Lights1 wf_seg7_lights_0700EA28 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700EA40 - 0x0700EA80\nstatic const Vtx wf_seg7_vertex_0700EA40[] = {\n    {{{   256,      0,    256}, 0, {     0,   -236}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,    -50,    256}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,    -50,   -255}, 0, {  2012,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   256,      0,   -255}, 0, {  2012,   -236}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700EA80 - 0x0700EAC0\nstatic const Vtx wf_seg7_vertex_0700EA80[] = {\n    {{{   256,      0,    256}, 0, {     0,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,      0,   -255}, 0, {  2012,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -255,      0,    256}, 0, {     0,  -1054}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   256,      0,   -255}, 0, {  2012,    990}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700EAC0 - 0x0700EB08\nstatic const Gfx wf_seg7_dl_0700EAC0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wf_seg7_lights_0700EA28.l, 1),\n    gsSPLight(&wf_seg7_lights_0700EA28.a, 2),\n    gsSPVertex(wf_seg7_vertex_0700EA40, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700EB08 - 0x0700EB40\nstatic const Gfx wf_seg7_dl_0700EB08[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09001000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_0700EA80, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700EB40 - 0x0700EBB8\nconst Gfx wf_seg7_dl_0700EB40[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_0700EAC0),\n    gsSPDisplayList(wf_seg7_dl_0700EB08),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/small_bomp/1.inc.c",
    "content": "// 0x0700D370 - 0x0700D388\nstatic const Lights1 wf_seg7_lights_0700D370 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700D388 - 0x0700D488\nstatic const Vtx wf_seg7_vertex_0700D388[] = {\n    {{{  -252,    261,     75}, 0, {     0,  -3138}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   136,    261,    -77}, 0, {  1194,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -252,    261,    -77}, 0, {  1194,  -3138}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   136,    261,    -77}, 0, {   582,    -72}, {0x30, 0x75, 0x00, 0xff}}},\n    {{{   136,    261,     75}, 0, {  -644,    -72}, {0x30, 0x75, 0x00, 0xff}}},\n    {{{   259,    210,     95}, 0, {  -796,    990}, {0x30, 0x75, 0x00, 0xff}}},\n    {{{   259,    210,    -96}, 0, {   734,    990}, {0x30, 0x75, 0x00, 0xff}}},\n    {{{  -252,    210,   -128}, 0, {   762,   -146}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   259,      5,   -128}, 0, { -2074,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -252,      5,   -128}, 0, {   762,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   195,    210,   -128}, 0, { -1720,   -146}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -252,    261,    -77}, 0, {  4056,    412}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{   195,    210,   -128}, 0, {   478,    990}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{  -252,    210,   -128}, 0, {  4056,    990}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{   136,    261,    -77}, 0, {   950,    412}, {0x00, 0x59, 0xa7, 0xff}}},\n    {{{   136,    261,     75}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700D488 - 0x0700D568\nstatic const Vtx wf_seg7_vertex_0700D488[] = {\n    {{{   195,    210,    127}, 0, {   480,    990}, {0x00, 0x5a, 0x58, 0xff}}},\n    {{{   136,    261,     75}, 0, {     8,    412}, {0x00, 0x5a, 0x58, 0xff}}},\n    {{{  -252,    261,     75}, 0, { -3096,    412}, {0x00, 0x5a, 0x58, 0xff}}},\n    {{{  -252,    210,    127}, 0, { -3096,    990}, {0x00, 0x5a, 0x58, 0xff}}},\n    {{{  -252,      5,    127}, 0, { -2074,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   259,      5,    127}, 0, {   762,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   195,    210,    127}, 0, {   408,   -146}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -252,    210,    127}, 0, { -2074,   -146}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   259,    210,     95}, 0, {   990,    990}, {0x20, 0x68, 0x41, 0xff}}},\n    {{{   136,    261,     75}, 0, {   990,   -352}, {0x20, 0x68, 0x41, 0xff}}},\n    {{{   195,    210,    127}, 0, {   520,    452}, {0x20, 0x68, 0x41, 0xff}}},\n    {{{   259,      5,   -128}, 0, {   540,   1116}, {0x38, 0x11, 0x90, 0xff}}},\n    {{{   195,    210,   -128}, 0, {   540,    -72}, {0x38, 0x11, 0x90, 0xff}}},\n    {{{   259,    210,    -96}, 0, {   156,     34}, {0x38, 0x11, 0x90, 0xff}}},\n};\n\n// 0x0700D568 - 0x0700D5C8\nstatic const Vtx wf_seg7_vertex_0700D568[] = {\n    {{{   259,    210,     95}, 0, {   764,   -144}, {0x38, 0x11, 0x70, 0xff}}},\n    {{{   195,    210,    127}, 0, {   368,   -116}, {0x38, 0x11, 0x70, 0xff}}},\n    {{{   259,      5,    127}, 0, {   764,   1004}, {0x38, 0x11, 0x70, 0xff}}},\n    {{{   195,    210,   -128}, 0, {   364,    990}, {0x20, 0x67, 0xbf, 0xff}}},\n    {{{   136,    261,    -77}, 0, {   530,    500}, {0x20, 0x67, 0xbf, 0xff}}},\n    {{{   259,    210,    -96}, 0, {     0,    990}, {0x20, 0x67, 0xbf, 0xff}}},\n};\n\n// 0x0700D5C8 - 0x0700D608\nstatic const Vtx wf_seg7_vertex_0700D5C8[] = {\n    {{{   259,      5,   -128}, 0, {  1118,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   259,    210,     95}, 0, {     0,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   259,      5,    127}, 0, {  -158,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   259,    210,    -96}, 0, {   958,      0}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700D608 - 0x0700D6D0\nstatic const Gfx wf_seg7_dl_0700D608[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wf_seg7_lights_0700D370.l, 1),\n    gsSPLight(&wf_seg7_lights_0700D370.a, 2),\n    gsSPVertex(wf_seg7_vertex_0700D388, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 14, 12, 0x0,  0, 15,  1, 0x0),\n    gsSPVertex(wf_seg7_vertex_0700D488, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(wf_seg7_vertex_0700D568, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700D6D0 - 0x0700D708\nstatic const Gfx wf_seg7_dl_0700D6D0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wf_seg7_texture_07002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_0700D5C8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700D708 - 0x0700D780\nconst Gfx wf_seg7_dl_0700D708[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_0700D608),\n    gsSPDisplayList(wf_seg7_dl_0700D6D0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/small_bomp/2.inc.c",
    "content": "// 0x0700D780 - 0x0700D798\nstatic const Lights1 wf_seg7_lights_0700D780 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700D798 - 0x0700D898\nstatic const Vtx wf_seg7_vertex_0700D798[] = {\n    {{{  -252,    261,     75}, 0, {     0,  -3138}, {0x0c, 0x7e, 0x00, 0xff}}},\n    {{{   259,    210,    -96}, 0, {  1194,      0}, {0x0c, 0x7e, 0x00, 0xff}}},\n    {{{  -252,    261,    -77}, 0, {  1194,  -3138}, {0x0c, 0x7e, 0x00, 0xff}}},\n    {{{   259,    210,     95}, 0, {     0,      0}, {0x0c, 0x7e, 0x00, 0xff}}},\n    {{{  -252,    210,   -128}, 0, {  2522,    -34}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   259,      5,   -128}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -252,      5,   -128}, 0, {  2520,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -252,    210,   -128}, 0, {  2522,    -34}, {0x07, 0x13, 0x83, 0xff}}},\n    {{{   259,    210,    -96}, 0, {   468,    -34}, {0x07, 0x13, 0x83, 0xff}}},\n    {{{   259,      5,   -128}, 0, {     0,    990}, {0x07, 0x13, 0x83, 0xff}}},\n    {{{  -252,    261,    -77}, 0, {  4056,    412}, {0x05, 0x59, 0xa7, 0xff}}},\n    {{{   259,    210,    -96}, 0, {   478,    990}, {0x05, 0x59, 0xa7, 0xff}}},\n    {{{  -252,    210,   -128}, 0, {  4056,    990}, {0x05, 0x59, 0xa7, 0xff}}},\n    {{{  -252,    210,    127}, 0, { -3096,    990}, {0x05, 0x5a, 0x58, 0xff}}},\n    {{{   259,    210,     95}, 0, {   480,    990}, {0x05, 0x5a, 0x58, 0xff}}},\n    {{{  -252,    261,     75}, 0, { -3096,    412}, {0x05, 0x5a, 0x58, 0xff}}},\n};\n\n// 0x0700D898 - 0x0700D8F8\nstatic const Vtx wf_seg7_vertex_0700D898[] = {\n    {{{  -252,      5,    127}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   259,      5,    127}, 0, {  2012,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -252,    210,    127}, 0, {     0,    182}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   259,      5,    127}, 0, {  2012,    990}, {0x07, 0x13, 0x7d, 0xff}}},\n    {{{   259,    210,     95}, 0, {  2012,    162}, {0x07, 0x13, 0x7d, 0xff}}},\n    {{{  -252,    210,    127}, 0, {     0,    182}, {0x07, 0x13, 0x7d, 0xff}}},\n};\n\n// 0x0700D8F8 - 0x0700D938\nstatic const Vtx wf_seg7_vertex_0700D8F8[] = {\n    {{{   259,      5,   -128}, 0, {   990,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   259,    210,     95}, 0, {    96,    172}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   259,      5,    127}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   259,    210,    -96}, 0, {   862,    172}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700D938 - 0x0700D9B8\nstatic const Gfx wf_seg7_dl_0700D938[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09008000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wf_seg7_lights_0700D780.l, 1),\n    gsSPLight(&wf_seg7_lights_0700D780.a, 2),\n    gsSPVertex(wf_seg7_vertex_0700D798, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(wf_seg7_vertex_0700D898, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700D9B8 - 0x0700D9F0\nstatic const Gfx wf_seg7_dl_0700D9B8[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wf_seg7_texture_07002000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wf_seg7_vertex_0700D8F8, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700D9F0 - 0x0700DA68\nconst Gfx wf_seg7_dl_0700D9F0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_0700D938),\n    gsSPDisplayList(wf_seg7_dl_0700D9B8),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/small_bomp/collision.inc.c",
    "content": "// 0x0700F868 - 0x0700F934\nconst Collision wf_seg7_collision_small_bomp[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0xE),\n    COL_VERTEX(259, 5, -128),\n    COL_VERTEX(195, 210, -128),\n    COL_VERTEX(259, 210, -96),\n    COL_VERTEX(259, 210, 95),\n    COL_VERTEX(259, 5, 127),\n    COL_VERTEX(-252, 210, -128),\n    COL_VERTEX(-252, 5, -128),\n    COL_VERTEX(136, 261, -77),\n    COL_VERTEX(195, 210, 127),\n    COL_VERTEX(136, 261, 75),\n    COL_VERTEX(-252, 5, 127),\n    COL_VERTEX(-252, 261, 75),\n    COL_VERTEX(-252, 261, -77),\n    COL_VERTEX(-252, 210, 127),\n    COL_TRI_INIT(SURFACE_WALL_MISC, 18),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 3, 4),\n    COL_TRI(0, 2, 3),\n    COL_TRI(5, 1, 0),\n    COL_TRI(5, 0, 6),\n    COL_TRI(1, 7, 2),\n    COL_TRI(7, 3, 2),\n    COL_TRI(3, 8, 4),\n    COL_TRI(3, 9, 8),\n    COL_TRI(7, 9, 3),\n    COL_TRI(10, 4, 8),\n    COL_TRI(11, 7, 12),\n    COL_TRI(11, 9, 7),\n    COL_TRI(12, 7, 1),\n    COL_TRI(8, 9, 11),\n    COL_TRI(12, 1, 5),\n    COL_TRI(13, 8, 11),\n    COL_TRI(10, 8, 13),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/wf/small_bomp/geo.inc.c",
    "content": "// 0x0E000A00\nconst GeoLayout wf_geo_000A00[] = {\n    GEO_CULLING_RADIUS(500),\n    GEO_OPEN_NODE(),\n        GEO_RENDER_RANGE(-2048, 5000),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, wf_seg7_dl_0700D708),\n        GEO_CLOSE_NODE(),\n        GEO_RENDER_RANGE(5000, 32767),\n        GEO_OPEN_NODE(),\n            GEO_DISPLAY_LIST(LAYER_OPAQUE, wf_seg7_dl_0700D9F0),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/wf/texture.inc.c",
    "content": "// 0x07000000 - 0x07000800\nALIGNED8 static const Texture wf_seg7_texture_07000000[] = {\n#include \"levels/wf/0.rgba16.inc.c\"\n};\n\n// 0x07000800 - 0x07001000\nALIGNED8 static const Texture wf_seg7_texture_07000800[] = {\n#include \"levels/wf/1.rgba16.inc.c\"\n};\n\n// 0x07001000 - 0x07001800\nALIGNED8 static const Texture wf_seg7_texture_07001000[] = {\n#include \"levels/wf/2.rgba16.inc.c\"\n};\n\n// 0x07001800 - 0x07002000\nALIGNED8 static const Texture wf_seg7_texture_07001800[] = {\n#include \"levels/wf/3.rgba16.inc.c\"\n};\n\n// 0x07002000 - 0x07002800\nALIGNED8 static const Texture wf_seg7_texture_07002000[] = {\n#include \"levels/wf/4.rgba16.inc.c\"\n};\n\n// 0x07002800 - 0x07002900\nALIGNED8 static const Texture wf_seg7_texture_07002800[] = {\n#include \"levels/wf/5.ia8.inc.c\"\n};\n"
  },
  {
    "path": "levels/wf/tower_door/collision.inc.c",
    "content": "// 0x0700FD00 - 0x0700FD30\nconst Collision wf_seg7_collision_tower_door[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x4),\n    COL_VERTEX(0, 0, -107),\n    COL_VERTEX(0, 0, 108),\n    COL_VERTEX(0, 205, 108),\n    COL_VERTEX(0, 205, -107),\n    COL_TRI_INIT(SURFACE_DEFAULT, 2),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/wf/tower_door/geo.inc.c",
    "content": "// 0x0E000BE0\nconst GeoLayout wf_geo_000BE0[] = {\n    GEO_CULLING_RADIUS(320),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, wf_seg7_dl_0700F7F8),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/wf/tower_door/model.inc.c",
    "content": "// 0x0700F758 - 0x0700F770\nstatic const Lights1 wf_seg7_lights_0700F758 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700F770 - 0x0700F7B0\nstatic const Vtx wf_seg7_vertex_0700F770[] = {\n    {{{     0,      0,   -107}, 0, {   186,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,      0,    108}, 0, {   722,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,    205,    108}, 0, {   722,      0}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{     0,    205,   -107}, 0, {   186,      0}, {0x81, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700F7B0 - 0x0700F7F8\nstatic const Gfx wf_seg7_dl_0700F7B0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09007000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wf_seg7_lights_0700F758.l, 1),\n    gsSPLight(&wf_seg7_lights_0700F758.a, 2),\n    gsSPVertex(wf_seg7_vertex_0700F770, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700F7F8 - 0x0700F868\nconst Gfx wf_seg7_dl_0700F7F8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_0700F7B0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/tumbling_bridge_far/geo.inc.c",
    "content": "// 0x0E000AC8\nconst GeoLayout wf_geo_000AC8[] = {\n    GEO_CULLING_RADIUS(800),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, wf_seg7_dl_0700E3D0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/wf/tumbling_bridge_far/model.inc.c",
    "content": "// 0x0700E160 - 0x0700E178\nstatic const Lights1 wf_seg7_lights_0700E160 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700E178 - 0x0700E278\nstatic const Vtx wf_seg7_vertex_0700E178[] = {\n    {{{  -127,     64,   -575}, 0, {     0,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -127,    -63,   -575}, 0, {     0,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -127,    -63,    576}, 0, {  9166,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -127,     64,    576}, 0, {     0,    480}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -127,    -63,    576}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   215,    -63,    576}, 0, {   990,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   215,     64,    576}, 0, {   990,    478}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   215,     64,   -575}, 0, {     0,   1498}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -127,     64,   -575}, 0, {   990,   1498}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -127,     64,    576}, 0, {   990,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   215,     64,      0}, 0, {     0,   -798}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   215,     64,    576}, 0, {     0,  -3098}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -127,     64,    576}, 0, {  9166,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{   215,     64,   -575}, 0, {     0,    478}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   215,    -63,   -575}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -127,    -63,   -575}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n};\n\n// 0x0700E278 - 0x0700E328\nstatic const Vtx wf_seg7_vertex_0700E278[] = {\n    {{{   215,     64,   -575}, 0, {     0,    478}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -127,    -63,   -575}, 0, {   990,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -127,     64,   -575}, 0, {   990,    478}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   215,    -63,    576}, 0, {     0,  -3098}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -127,    -63,    576}, 0, {   990,  -3098}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -127,    -63,   -575}, 0, {   990,   1498}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   215,    -63,   -575}, 0, {     0,   1498}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   215,     64,    576}, 0, {     0,    478}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   215,    -63,    576}, 0, {     0,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   215,    -63,   -575}, 0, {  9166,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   215,     64,   -575}, 0, {  9166,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n};\n\n// 0x0700E328 - 0x0700E3D0\nstatic const Gfx wf_seg7_dl_0700E328[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wf_seg7_lights_0700E160.l, 1),\n    gsSPLight(&wf_seg7_lights_0700E160.a, 2),\n    gsSPVertex(wf_seg7_vertex_0700E178, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9, 10,  7, 0x0,  9, 11, 10, 0x0),\n    gsSP2Triangles( 0,  2, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(wf_seg7_vertex_0700E278, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP1Triangle( 7,  9, 10, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700E3D0 - 0x0700E440\nconst Gfx wf_seg7_dl_0700E3D0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_0700E328),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wf/tumbling_bridge_near/collision.inc.c",
    "content": "// 0x0700FAEC - 0x0700FB1C\nconst Collision wf_seg7_collision_tumbling_bridge[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x4),\n    COL_VERTEX(-127, 64, -63),\n    COL_VERTEX(-127, 64, 64),\n    COL_VERTEX(215, 64, 64),\n    COL_VERTEX(215, 64, -63),\n    COL_TRI_INIT(SURFACE_DEFAULT, 2),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI_STOP(),\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/wf/tumbling_bridge_near/geo.inc.c",
    "content": "// 0x0E000AB0\nconst GeoLayout wf_geo_000AB0[] = {\n    GEO_CULLING_RADIUS(400),\n    GEO_OPEN_NODE(),\n        GEO_DISPLAY_LIST(LAYER_OPAQUE, wf_seg7_dl_0700E0F0),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/wf/tumbling_bridge_near/model.inc.c",
    "content": "// 0x0700DE98 - 0x0700DEB0\nstatic const Lights1 wf_seg7_lights_0700DE98 = gdSPDefLights1(\n    0x66, 0x66, 0x66,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700DEB0 - 0x0700DFA0\nstatic const Vtx wf_seg7_vertex_0700DEB0[] = {\n    {{{  -127,    -63,     64}, 0, {   990,   -542}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   215,    -63,    -63}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   215,    -63,     64}, 0, {     0,   -542}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   215,    -63,     64}, 0, {  5078,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   215,    -63,    -63}, 0, {  6100,    990}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   215,     64,    -63}, 0, {  6100,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   215,     64,     64}, 0, {  5078,    480}, {0x7f, 0x00, 0x00, 0xff}}},\n    {{{   215,     64,    -63}, 0, {   880,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{   215,    -63,    -63}, 0, {   880,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -127,    -63,    -63}, 0, {     0,      0}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -127,     64,    -63}, 0, {     0,    990}, {0x00, 0x00, 0x81, 0xff}}},\n    {{{  -127,     64,    -63}, 0, {   990,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{  -127,     64,     64}, 0, {   990,   -542}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   215,     64,     64}, 0, {     0,   -544}, {0x00, 0x7f, 0x00, 0xff}}},\n    {{{   215,     64,    -63}, 0, {     0,      0}, {0x00, 0x7f, 0x00, 0xff}}},\n};\n\n// 0x0700DFA0 - 0x0700E050\nstatic const Vtx wf_seg7_vertex_0700DFA0[] = {\n    {{{  -127,     64,     64}, 0, {     0,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   215,    -63,     64}, 0, {   880,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{   215,     64,     64}, 0, {   880,    990}, {0x00, 0x00, 0x7f, 0xff}}},\n    {{{  -127,    -63,     64}, 0, {   990,   -542}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -127,    -63,    -63}, 0, {   990,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{   215,    -63,    -63}, 0, {     0,      0}, {0x00, 0x81, 0x00, 0xff}}},\n    {{{  -127,    -63,    -63}, 0, {  3034,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -127,    -63,     64}, 0, {  4056,    990}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -127,     64,     64}, 0, {  4056,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -127,     64,    -63}, 0, {  3034,    480}, {0x81, 0x00, 0x00, 0xff}}},\n    {{{  -127,    -63,     64}, 0, {     0,      0}, {0x00, 0x00, 0x7f, 0xff}}},\n};\n\n// 0x0700E050 - 0x0700E0F0\nstatic const Gfx wf_seg7_dl_0700E050[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09004000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wf_seg7_lights_0700DE98.l, 1),\n    gsSPLight(&wf_seg7_lights_0700DE98.a, 2),\n    gsSPVertex(wf_seg7_vertex_0700DEB0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(wf_seg7_vertex_0700DFA0, 11, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP1Triangle( 0, 10,  1, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700E0F0 - 0x0700E160\nconst Gfx wf_seg7_dl_0700E0F0[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsSPClearGeometryMode(G_SHADING_SMOOTH),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wf_seg7_dl_0700E050),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wmotr/areas/1/collision.inc.c",
    "content": "// 0x07010688 - 0x070136A6\nconst Collision wmotr_seg7_collision[] = {\n    COL_INIT(),\n    COL_VERTEX_INIT(0x2B6),\n    COL_VERTEX(8192, -8191, -8191),\n    COL_VERTEX(-8191, -8191, -8191),\n    COL_VERTEX(-8191, -8191, 8192),\n    COL_VERTEX(8192, -8191, 8192),\n    COL_VERTEX(-2851, 2017, -4091),\n    COL_VERTEX(-3358, 2017, -4101),\n    COL_VERTEX(-2691, 2017, -4040),\n    COL_VERTEX(-3172, 2017, -4261),\n    COL_VERTEX(-2955, 2017, -4241),\n    COL_VERTEX(-3465, 1968, -4172),\n    COL_VERTEX(-3398, 2017, -3950),\n    COL_VERTEX(-2763, 2017, -3982),\n    COL_VERTEX(-2816, 2017, -3921),\n    COL_VERTEX(-2915, 2017, -3739),\n    COL_VERTEX(-3066, 2017, -3665),\n    COL_VERTEX(-3255, 2017, -3709),\n    COL_VERTEX(-3365, 2017, -3821),\n    COL_VERTEX(-2690, 1968, -3915),\n    COL_VERTEX(-2477, 2017, -4439),\n    COL_VERTEX(-2434, 2017, -4266),\n    COL_VERTEX(-2536, 2017, -4122),\n    COL_VERTEX(-2613, 2017, -4548),\n    COL_VERTEX(-2872, 2017, -4417),\n    COL_VERTEX(-2770, 2017, -4532),\n    COL_VERTEX(-2456, 1968, -4039),\n    COL_VERTEX(-3357, 2017, -4585),\n    COL_VERTEX(-2888, 2017, -4606),\n    COL_VERTEX(-2832, 1968, -3655),\n    COL_VERTEX(-3048, 1968, -3549),\n    COL_VERTEX(-3319, 1968, -3612),\n    COL_VERTEX(-3476, 1968, -3771),\n    COL_VERTEX(-3522, 1968, -3956),\n    COL_VERTEX(-2986, 1968, -4801),\n    COL_VERTEX(-2811, 1885, -4660),\n    COL_VERTEX(-2986, 1885, -4801),\n    COL_VERTEX(-2573, 1885, -4686),\n    COL_VERTEX(-2366, 1885, -4520),\n    COL_VERTEX(-2301, 1885, -4258),\n    COL_VERTEX(-2456, 1885, -4039),\n    COL_VERTEX(-2690, 1885, -3915),\n    COL_VERTEX(-3430, 2017, -4449),\n    COL_VERTEX(-3418, 2017, -4322),\n    COL_VERTEX(-3522, 1885, -3956),\n    COL_VERTEX(-3465, 1885, -4172),\n    COL_VERTEX(-3534, 1885, -4279),\n    COL_VERTEX(-3447, 1968, -4653),\n    COL_VERTEX(-3552, 1885, -4460),\n    COL_VERTEX(-3216, 2017, -4679),\n    COL_VERTEX(-3447, 1885, -4653),\n    COL_VERTEX(-3034, 2017, -4688),\n    COL_VERTEX(-3246, 1885, -4788),\n    COL_VERTEX(-2832, 1885, -3655),\n    COL_VERTEX(-3048, 1885, -3549),\n    COL_VERTEX(-3319, 1885, -3612),\n    COL_VERTEX(-3476, 1885, -3771),\n    COL_VERTEX(-2842, 1843, -3693),\n    COL_VERTEX(-3044, 1843, -3594),\n    COL_VERTEX(-3447, 1843, -3803),\n    COL_VERTEX(-3436, 1843, -4179),\n    COL_VERTEX(-3501, 1843, -4280),\n    COL_VERTEX(-2708, 1843, -3938),\n    COL_VERTEX(-2488, 1843, -4054),\n    COL_VERTEX(-2342, 1843, -4260),\n    COL_VERTEX(-2403, 1843, -4507),\n    COL_VERTEX(-2598, 1843, -4663),\n    COL_VERTEX(-2821, 1843, -4639),\n    COL_VERTEX(-3230, 1843, -4759),\n    COL_VERTEX(-3419, 1843, -4632),\n    COL_VERTEX(-3518, 1843, -4450),\n    COL_VERTEX(4233, 174, 207),\n    COL_VERTEX(4393, 174, 258),\n    COL_VERTEX(3619, 124, 127),\n    COL_VERTEX(3726, 174, 198),\n    COL_VERTEX(4393, 124, 383),\n    COL_VERTEX(3911, 174, 38),\n    COL_VERTEX(4211, 174, -118),\n    COL_VERTEX(4196, 174, -306),\n    COL_VERTEX(3726, 174, -285),\n    COL_VERTEX(4470, 174, -249),\n    COL_VERTEX(4607, 174, -140),\n    COL_VERTEX(4650, 174, 33),\n    COL_VERTEX(4547, 174, 177),\n    COL_VERTEX(4268, 174, 377),\n    COL_VERTEX(4168, 174, 560),\n    COL_VERTEX(4017, 174, 633),\n    COL_VERTEX(3828, 174, 589),\n    COL_VERTEX(3718, 174, 478),\n    COL_VERTEX(3608, 124, 527),\n    COL_VERTEX(3561, 124, 342),\n    COL_VERTEX(4273, 41, -360),\n    COL_VERTEX(4098, 41, -502),\n    COL_VERTEX(4098, 124, -502),\n    COL_VERTEX(4510, 41, -386),\n    COL_VERTEX(4717, 41, -221),\n    COL_VERTEX(4783, 41, 41),\n    COL_VERTEX(4627, 41, 260),\n    COL_VERTEX(4393, 41, 383),\n    COL_VERTEX(3653, 174, -150),\n    COL_VERTEX(3665, 174, -23),\n    COL_VERTEX(3619, 41, 127),\n    COL_VERTEX(3561, 41, 342),\n    COL_VERTEX(3550, 41, 20),\n    COL_VERTEX(3637, 124, -354),\n    COL_VERTEX(3532, 41, -161),\n    COL_VERTEX(3867, 174, -379),\n    COL_VERTEX(3637, 41, -354),\n    COL_VERTEX(4049, 174, -388),\n    COL_VERTEX(3838, 41, -488),\n    COL_VERTEX(4251, 41, 644),\n    COL_VERTEX(4035, 41, 749),\n    COL_VERTEX(3765, 41, 686),\n    COL_VERTEX(3608, 41, 527),\n    COL_VERTEX(4242, 0, 606),\n    COL_VERTEX(4039, 0, 705),\n    COL_VERTEX(3637, 0, 496),\n    COL_VERTEX(3647, 0, 119),\n    COL_VERTEX(4375, 0, 360),\n    COL_VERTEX(3582, 0, 19),\n    COL_VERTEX(4595, 0, 244),\n    COL_VERTEX(4742, 0, 38),\n    COL_VERTEX(4680, 0, -208),\n    COL_VERTEX(4486, 0, -363),\n    COL_VERTEX(4262, 0, -339),\n    COL_VERTEX(3853, 0, -459),\n    COL_VERTEX(3664, 0, -333),\n    COL_VERTEX(3565, 0, -151),\n    COL_VERTEX(-1099, -1415, 4467),\n    COL_VERTEX(-495, -1415, 4608),\n    COL_VERTEX(-968, -1415, 4380),\n    COL_VERTEX(-333, -1415, 4944),\n    COL_VERTEX(-978, -1443, 4323),\n    COL_VERTEX(-414, -1415, 4291),\n    COL_VERTEX(-89, -1415, 4576),\n    COL_VERTEX(-841, -1415, 4167),\n    COL_VERTEX(-51, -1415, 4577),\n    COL_VERTEX(-372, -1443, 4066),\n    COL_VERTEX(-72, -1415, 4818),\n    COL_VERTEX(108, -1443, 4571),\n    COL_VERTEX(-378, -1415, 4733),\n    COL_VERTEX(-739, -1415, 4076),\n    COL_VERTEX(-591, -1415, 4058),\n    COL_VERTEX(-369, -1415, 4300),\n    COL_VERTEX(-162, -1415, 4093),\n    COL_VERTEX(-22, -1415, 4138),\n    COL_VERTEX(15, -1443, 4058),\n    COL_VERTEX(78, -1415, 4255),\n    COL_VERTEX(100, -1415, 4389),\n    COL_VERTEX(186, -1443, 4408),\n    COL_VERTEX(140, -1415, 4739),\n    COL_VERTEX(194, -1443, 4719),\n    COL_VERTEX(97, -1415, 4956),\n    COL_VERTEX(-57, -1415, 5074),\n    COL_VERTEX(-232, -1415, 5068),\n    COL_VERTEX(-271, -1443, 5130),\n    COL_VERTEX(-723, -1415, 4770),\n    COL_VERTEX(-932, -1443, 4913),\n    COL_VERTEX(-863, -1415, 4932),\n    COL_VERTEX(-767, -1415, 4775),\n    COL_VERTEX(-1080, -1415, 4791),\n    COL_VERTEX(-1118, -1443, 4835),\n    COL_VERTEX(-1204, -1443, 4626),\n    COL_VERTEX(-416, -1415, 5243),\n    COL_VERTEX(-593, -1415, 5286),\n    COL_VERTEX(-776, -1415, 5205),\n    COL_VERTEX(-857, -1415, 5075),\n    COL_VERTEX(-924, -1489, 5092),\n    COL_VERTEX(-932, -1489, 4913),\n    COL_VERTEX(-823, -1489, 5255),\n    COL_VERTEX(-594, -1489, 5355),\n    COL_VERTEX(-372, -1489, 5301),\n    COL_VERTEX(-271, -1489, 5130),\n    COL_VERTEX(-53, -1489, 5138),\n    COL_VERTEX(-1204, -1489, 4626),\n    COL_VERTEX(-1118, -1489, 4835),\n    COL_VERTEX(-1141, -1489, 4431),\n    COL_VERTEX(-978, -1489, 4323),\n    COL_VERTEX(-372, -1489, 4066),\n    COL_VERTEX(-574, -1489, 3957),\n    COL_VERTEX(-785, -1489, 3983),\n    COL_VERTEX(-932, -1489, 4113),\n    COL_VERTEX(108, -1489, 4571),\n    COL_VERTEX(186, -1489, 4408),\n    COL_VERTEX(155, -1489, 4222),\n    COL_VERTEX(15, -1489, 4058),\n    COL_VERTEX(-178, -1489, 3996),\n    COL_VERTEX(140, -1489, 4990),\n    COL_VERTEX(194, -1489, 4719),\n    COL_VERTEX(-902, -1535, 5067),\n    COL_VERTEX(-909, -1535, 4898),\n    COL_VERTEX(-806, -1535, 5222),\n    COL_VERTEX(-1108, -1535, 4440),\n    COL_VERTEX(-953, -1535, 4337),\n    COL_VERTEX(-1086, -1535, 4824),\n    COL_VERTEX(-588, -1535, 5318),\n    COL_VERTEX(-378, -1535, 5267),\n    COL_VERTEX(-282, -1535, 5104),\n    COL_VERTEX(-75, -1535, 5111),\n    COL_VERTEX(109, -1535, 4971),\n    COL_VERTEX(160, -1535, 4713),\n    COL_VERTEX(79, -1535, 4573),\n    COL_VERTEX(152, -1535, 4418),\n    COL_VERTEX(123, -1535, 4241),\n    COL_VERTEX(-9, -1535, 4086),\n    COL_VERTEX(-193, -1535, 4027),\n    COL_VERTEX(-378, -1535, 4093),\n    COL_VERTEX(-570, -1535, 3990),\n    COL_VERTEX(-770, -1535, 4014),\n    COL_VERTEX(-909, -1535, 4138),\n    COL_VERTEX(-1167, -1535, 4625),\n    COL_VERTEX(-3008, 2017, -4202),\n    COL_VERTEX(-2811, 1968, -4660),\n    COL_VERTEX(-2573, 1968, -4686),\n    COL_VERTEX(-2366, 1968, -4520),\n    COL_VERTEX(-2301, 1968, -4258),\n    COL_VERTEX(-3369, 2017, -4247),\n    COL_VERTEX(-3534, 1968, -4279),\n    COL_VERTEX(-3552, 1968, -4460),\n    COL_VERTEX(-3246, 1968, -4788),\n    COL_VERTEX(-3299, 1843, -3653),\n    COL_VERTEX(-3491, 1843, -3977),\n    COL_VERTEX(-2986, 1843, -4771),\n    COL_VERTEX(4129, 174, 58),\n    COL_VERTEX(4320, 174, 316),\n    COL_VERTEX(3685, 174, 348),\n    COL_VERTEX(4627, 124, 260),\n    COL_VERTEX(4313, 174, -232),\n    COL_VERTEX(4273, 124, -360),\n    COL_VERTEX(4510, 124, -386),\n    COL_VERTEX(4783, 124, 41),\n    COL_VERTEX(4251, 124, 644),\n    COL_VERTEX(4035, 124, 749),\n    COL_VERTEX(3765, 124, 686),\n    COL_VERTEX(4076, 174, 96),\n    COL_VERTEX(3714, 174, 51),\n    COL_VERTEX(4717, 124, -221),\n    COL_VERTEX(3550, 124, 20),\n    COL_VERTEX(3532, 124, -161),\n    COL_VERTEX(3838, 124, -488),\n    COL_VERTEX(3785, 0, 646),\n    COL_VERTEX(3593, 0, 322),\n    COL_VERTEX(4098, 0, -472),\n    COL_VERTEX(-627, -1415, 4720),\n    COL_VERTEX(-258, -1415, 4615),\n    COL_VERTEX(-871, -1415, 4365),\n    COL_VERTEX(-874, -1415, 4314),\n    COL_VERTEX(-356, -1415, 4777),\n    COL_VERTEX(-525, -1415, 4822),\n    COL_VERTEX(-931, -1415, 4853),\n    COL_VERTEX(-1141, -1443, 4431),\n    COL_VERTEX(-1148, -1415, 4623),\n    COL_VERTEX(-450, -1415, 4135),\n    COL_VERTEX(44, -1415, 4507),\n    COL_VERTEX(72, -1415, 4621),\n    COL_VERTEX(-302, -1415, 4143),\n    COL_VERTEX(-932, -1443, 4113),\n    COL_VERTEX(-785, -1443, 3983),\n    COL_VERTEX(-574, -1443, 3957),\n    COL_VERTEX(-178, -1443, 3996),\n    COL_VERTEX(155, -1443, 4222),\n    COL_VERTEX(140, -1443, 4990),\n    COL_VERTEX(-53, -1443, 5138),\n    COL_VERTEX(-335, -1415, 5106),\n    COL_VERTEX(-372, -1443, 5301),\n    COL_VERTEX(-594, -1443, 5355),\n    COL_VERTEX(-823, -1443, 5255),\n    COL_VERTEX(-924, -1443, 5092),\n    COL_VERTEX(-4350, 824, 88),\n    COL_VERTEX(-4197, 824, -321),\n    COL_VERTEX(-4709, 824, -321),\n    COL_VERTEX(-3941, 824, -65),\n    COL_VERTEX(-4350, 824, 293),\n    COL_VERTEX(-4555, 824, 88),\n    COL_VERTEX(-4965, 824, -65),\n    COL_VERTEX(-4555, 824, 293),\n    COL_VERTEX(-3941, 824, 446),\n    COL_VERTEX(-4709, 824, 702),\n    COL_VERTEX(-4197, 824, 702),\n    COL_VERTEX(-4965, 824, 446),\n    COL_VERTEX(3811, -2738, 5302),\n    COL_VERTEX(4631, -2738, 4739),\n    COL_VERTEX(3811, -2738, 5097),\n    COL_VERTEX(4170, -2738, 4278),\n    COL_VERTEX(3248, -2738, 4278),\n    COL_VERTEX(3607, -2738, 5097),\n    COL_VERTEX(2787, -2738, 4739),\n    COL_VERTEX(4631, -2738, 5660),\n    COL_VERTEX(3248, -2738, 6121),\n    COL_VERTEX(4170, -2738, 6121),\n    COL_VERTEX(2787, -2738, 5660),\n    COL_VERTEX(3607, -2738, 5302),\n    COL_VERTEX(-4965, 671, 446),\n    COL_VERTEX(-4965, 671, -65),\n    COL_VERTEX(-4453, 5, 190),\n    COL_VERTEX(-4709, 671, -321),\n    COL_VERTEX(-4197, 671, -321),\n    COL_VERTEX(-4709, 671, 702),\n    COL_VERTEX(-4197, 671, 702),\n    COL_VERTEX(-3941, 671, -65),\n    COL_VERTEX(-3941, 671, 446),\n    COL_VERTEX(-4350, 312, 293),\n    COL_VERTEX(-4555, 312, 293),\n    COL_VERTEX(-4555, 312, 88),\n    COL_VERTEX(-4350, 312, 88),\n    COL_VERTEX(3607, -3250, 5302),\n    COL_VERTEX(4170, -2891, 4278),\n    COL_VERTEX(3248, -2891, 4278),\n    COL_VERTEX(4631, -2891, 4739),\n    COL_VERTEX(3248, -2891, 6121),\n    COL_VERTEX(4170, -2891, 6121),\n    COL_VERTEX(4631, -2891, 5660),\n    COL_VERTEX(3709, -3557, 5200),\n    COL_VERTEX(2787, -2891, 4739),\n    COL_VERTEX(2787, -2891, 5660),\n    COL_VERTEX(3811, -3250, 5302),\n    COL_VERTEX(3607, -3250, 5097),\n    COL_VERTEX(3811, -3250, 5097),\n    COL_VERTEX(-2318, 4403, -3596),\n    COL_VERTEX(-2302, 4468, -3584),\n    COL_VERTEX(-2468, 4468, -3562),\n    COL_VERTEX(-2481, 4403, -3574),\n    COL_VERTEX(-2130, 4403, -3688),\n    COL_VERTEX(-2635, 4468, -3618),\n    COL_VERTEX(-2645, 4403, -3629),\n    COL_VERTEX(-2110, 4468, -3678),\n    COL_VERTEX(-2579, 4468, -3385),\n    COL_VERTEX(-2591, 4403, -3401),\n    COL_VERTEX(-2658, 4468, -3208),\n    COL_VERTEX(-2667, 4403, -3227),\n    COL_VERTEX(-2825, 4468, -3096),\n    COL_VERTEX(-2831, 4403, -3118),\n    COL_VERTEX(-3069, 4468, -3131),\n    COL_VERTEX(-3070, 4403, -3152),\n    COL_VERTEX(-3214, 4403, -3282),\n    COL_VERTEX(-3216, 4468, -3264),\n    COL_VERTEX(-3296, 4403, -3439),\n    COL_VERTEX(-3488, 4403, -3316),\n    COL_VERTEX(-3693, 4403, -3275),\n    COL_VERTEX(-3885, 4468, -3368),\n    COL_VERTEX(-3870, 4403, -3385),\n    COL_VERTEX(-3952, 4403, -3576),\n    COL_VERTEX(-3940, 4403, -3744),\n    COL_VERTEX(-3857, 4403, -3863),\n    COL_VERTEX(-3760, 4403, -3918),\n    COL_VERTEX(-3901, 4403, -3904),\n    COL_VERTEX(-4096, 4403, -3987),\n    COL_VERTEX(-4115, 4468, -3983),\n    COL_VERTEX(-4198, 4403, -4144),\n    COL_VERTEX(-4198, 4403, -4322),\n    COL_VERTEX(-4123, 4403, -4499),\n    COL_VERTEX(-3944, 4403, -4601),\n    COL_VERTEX(-3751, 4403, -4604),\n    COL_VERTEX(-3826, 4403, -4739),\n    COL_VERTEX(-3804, 4403, -4905),\n    COL_VERTEX(-3680, 4403, -5119),\n    COL_VERTEX(-3463, 4403, -5203),\n    COL_VERTEX(-3221, 4403, -5196),\n    COL_VERTEX(-3016, 4403, -5066),\n    COL_VERTEX(-2947, 4403, -4930),\n    COL_VERTEX(-2944, 4468, -4945),\n    COL_VERTEX(-2854, 4403, -5108),\n    COL_VERTEX(-2622, 4403, -5197),\n    COL_VERTEX(-2346, 4403, -5087),\n    COL_VERTEX(-2195, 4403, -4854),\n    COL_VERTEX(-2190, 4468, -4624),\n    COL_VERTEX(-2209, 4403, -4615),\n    COL_VERTEX(-2380, 4403, -4465),\n    COL_VERTEX(-2365, 4468, -4470),\n    COL_VERTEX(-2189, 4403, -4410),\n    COL_VERTEX(-2169, 4468, -4415),\n    COL_VERTEX(-2025, 4403, -4198),\n    COL_VERTEX(-2004, 4403, -3890),\n    COL_VERTEX(-3759, 4537, -4518),\n    COL_VERTEX(-3907, 4537, -4533),\n    COL_VERTEX(-3961, 4468, -4610),\n    COL_VERTEX(-4143, 4468, -4505),\n    COL_VERTEX(-3763, 4468, -4612),\n    COL_VERTEX(-2748, 4537, -4557),\n    COL_VERTEX(-2685, 4537, -4438),\n    COL_VERTEX(-2910, 4537, -4412),\n    COL_VERTEX(-2949, 4537, -4666),\n    COL_VERTEX(-3039, 4537, -4633),\n    COL_VERTEX(-3072, 4537, -4181),\n    COL_VERTEX(-3143, 4537, -4517),\n    COL_VERTEX(-2787, 4537, -4064),\n    COL_VERTEX(-2742, 4537, -4070),\n    COL_VERTEX(-2703, 4537, -4260),\n    COL_VERTEX(-2002, 4468, -4198),\n    COL_VERTEX(-1981, 4468, -3884),\n    COL_VERTEX(-2070, 4537, -3896),\n    COL_VERTEX(-2182, 4537, -3715),\n    COL_VERTEX(-2101, 4537, -4162),\n    COL_VERTEX(-2340, 4537, -3644),\n    COL_VERTEX(-3153, 4537, -4116),\n    COL_VERTEX(-3220, 4537, -4345),\n    COL_VERTEX(-3323, 4537, -4154),\n    COL_VERTEX(-3201, 4537, -3992),\n    COL_VERTEX(-3096, 4537, -4087),\n    COL_VERTEX(-3278, 4537, -3967),\n    COL_VERTEX(-3455, 4537, -4058),\n    COL_VERTEX(-3144, 4537, -3838),\n    COL_VERTEX(-3342, 4537, -3807),\n    COL_VERTEX(-3249, 4509, -3639),\n    COL_VERTEX(-3038, 4538, -3744),\n    COL_VERTEX(-3508, 4537, -3724),\n    COL_VERTEX(-3336, 4537, -3655),\n    COL_VERTEX(-3188, 4542, -3619),\n    COL_VERTEX(-2919, 4537, -3466),\n    COL_VERTEX(-2996, 4537, -3823),\n    COL_VERTEX(-2899, 4537, -3804),\n    COL_VERTEX(-3299, 4468, -3424),\n    COL_VERTEX(-3218, 4542, -3452),\n    COL_VERTEX(-3331, 4537, -3491),\n    COL_VERTEX(-3706, 4537, -4131),\n    COL_VERTEX(-3757, 4537, -3975),\n    COL_VERTEX(-3643, 4537, -4214),\n    COL_VERTEX(-3710, 4537, -3882),\n    COL_VERTEX(-3773, 4468, -3912),\n    COL_VERTEX(-3566, 4537, -3754),\n    COL_VERTEX(-3789, 4537, -3837),\n    COL_VERTEX(-3488, 4537, -3390),\n    COL_VERTEX(-3151, 4542, -3323),\n    COL_VERTEX(-3029, 4537, -4889),\n    COL_VERTEX(-2980, 4496, -4818),\n    COL_VERTEX(-2918, 4537, -4863),\n    COL_VERTEX(-2959, 4537, -4734),\n    COL_VERTEX(-3059, 4534, -4716),\n    COL_VERTEX(-3212, 4537, -4538),\n    COL_VERTEX(-3081, 4537, -5002),\n    COL_VERTEX(-3013, 4468, -5084),\n    COL_VERTEX(-2490, 4537, -3617),\n    COL_VERTEX(-2644, 4537, -3677),\n    COL_VERTEX(-2706, 4537, -3709),\n    COL_VERTEX(-2802, 4542, -3735),\n    COL_VERTEX(-2642, 4542, -3420),\n    COL_VERTEX(-2745, 4537, -3815),\n    COL_VERTEX(-2462, 4537, -4017),\n    COL_VERTEX(-2808, 4537, -3849),\n    COL_VERTEX(-2623, 4537, -4446),\n    COL_VERTEX(-2424, 4537, -4386),\n    COL_VERTEX(-2339, 4537, -4616),\n    COL_VERTEX(-2482, 4537, -4499),\n    COL_VERTEX(-3871, 4468, -3857),\n    COL_VERTEX(-3886, 4537, -3986),\n    COL_VERTEX(-3594, 4537, -3625),\n    COL_VERTEX(-2930, 4537, -3979),\n    COL_VERTEX(-3144, 4537, -4003),\n    COL_VERTEX(-3094, 4537, -3877),\n    COL_VERTEX(-3434, 4537, -4395),\n    COL_VERTEX(-3686, 4537, -4628),\n    COL_VERTEX(-3622, 4537, -4579),\n    COL_VERTEX(-3689, 4537, -4484),\n    COL_VERTEX(-3742, 4537, -4734),\n    COL_VERTEX(-3679, 4537, -4329),\n    COL_VERTEX(-2641, 4537, -4746),\n    COL_VERTEX(-2848, 4468, -5127),\n    COL_VERTEX(-2836, 4537, -5007),\n    COL_VERTEX(-2612, 4468, -5218),\n    COL_VERTEX(-2330, 4468, -5105),\n    COL_VERTEX(-2176, 4468, -4868),\n    COL_VERTEX(-2705, 4542, -3279),\n    COL_VERTEX(-2839, 4542, -3189),\n    COL_VERTEX(-3034, 4542, -3217),\n    COL_VERTEX(-3655, 4537, -3357),\n    COL_VERTEX(-3495, 4468, -3298),\n    COL_VERTEX(-3800, 4537, -3446),\n    COL_VERTEX(-3704, 4468, -3257),\n    COL_VERTEX(-3867, 4537, -3603),\n    COL_VERTEX(-3857, 4537, -3740),\n    COL_VERTEX(-3969, 4468, -3564),\n    COL_VERTEX(-3957, 4468, -3735),\n    COL_VERTEX(-4031, 4537, -4031),\n    COL_VERTEX(-3916, 4468, -3899),\n    COL_VERTEX(-4115, 4537, -4160),\n    COL_VERTEX(-4115, 4537, -4305),\n    COL_VERTEX(-4220, 4468, -4143),\n    COL_VERTEX(-4053, 4537, -4450),\n    COL_VERTEX(-4220, 4468, -4324),\n    COL_VERTEX(-3724, 4537, -4870),\n    COL_VERTEX(-3840, 4468, -4750),\n    COL_VERTEX(-3631, 4535, -5054),\n    COL_VERTEX(-3818, 4468, -4919),\n    COL_VERTEX(-3446, 4537, -5113),\n    COL_VERTEX(-3691, 4468, -5138),\n    COL_VERTEX(-3248, 4537, -5108),\n    COL_VERTEX(-3470, 4468, -5223),\n    COL_VERTEX(-3223, 4468, -5217),\n    COL_VERTEX(-3820, 4537, -4249),\n    COL_VERTEX(-2700, 4537, -4600),\n    COL_VERTEX(941, 1536, 407),\n    COL_VERTEX(753, 1536, 499),\n    COL_VERTEX(590, 1536, 521),\n    COL_VERTEX(426, 1536, 466),\n    COL_VERTEX(480, 1536, 694),\n    COL_VERTEX(404, 1536, 868),\n    COL_VERTEX(246, 1601, 999),\n    COL_VERTEX(240, 1536, 977),\n    COL_VERTEX(1, 1536, 943),\n    COL_VERTEX(-142, 1536, 813),\n    COL_VERTEX(-144, 1601, 831),\n    COL_VERTEX(-224, 1536, 656),\n    COL_VERTEX(-416, 1536, 779),\n    COL_VERTEX(-621, 1536, 820),\n    COL_VERTEX(-813, 1601, 727),\n    COL_VERTEX(-798, 1536, 710),\n    COL_VERTEX(-880, 1536, 519),\n    COL_VERTEX(-868, 1536, 351),\n    COL_VERTEX(-785, 1536, 232),\n    COL_VERTEX(-688, 1536, 177),\n    COL_VERTEX(-829, 1536, 191),\n    COL_VERTEX(-1024, 1536, 108),\n    COL_VERTEX(-1043, 1601, 112),\n    COL_VERTEX(-1126, 1536, -48),\n    COL_VERTEX(-1126, 1536, -226),\n    COL_VERTEX(-1051, 1536, -403),\n    COL_VERTEX(-872, 1536, -505),\n    COL_VERTEX(-679, 1536, -508),\n    COL_VERTEX(-754, 1536, -643),\n    COL_VERTEX(-732, 1536, -809),\n    COL_VERTEX(-608, 1536, -1023),\n    COL_VERTEX(-391, 1536, -1107),\n    COL_VERTEX(-149, 1536, -1100),\n    COL_VERTEX(55, 1536, -970),\n    COL_VERTEX(124, 1536, -834),\n    COL_VERTEX(127, 1601, -849),\n    COL_VERTEX(217, 1536, -1012),\n    COL_VERTEX(449, 1536, -1101),\n    COL_VERTEX(725, 1536, -991),\n    COL_VERTEX(876, 1536, -758),\n    COL_VERTEX(862, 1536, -519),\n    COL_VERTEX(881, 1601, -528),\n    COL_VERTEX(691, 1536, -369),\n    COL_VERTEX(706, 1601, -374),\n    COL_VERTEX(882, 1536, -314),\n    COL_VERTEX(902, 1601, -319),\n    COL_VERTEX(1046, 1536, -102),\n    COL_VERTEX(1067, 1536, 205),\n    COL_VERTEX(-835, 1669, -437),\n    COL_VERTEX(-889, 1601, -514),\n    COL_VERTEX(-687, 1669, -422),\n    COL_VERTEX(-1071, 1601, -409),\n    COL_VERTEX(-691, 1601, -516),\n    COL_VERTEX(323, 1669, -461),\n    COL_VERTEX(386, 1669, -342),\n    COL_VERTEX(161, 1669, -316),\n    COL_VERTEX(0, 1669, -85),\n    COL_VERTEX(-71, 1669, -421),\n    COL_VERTEX(122, 1669, -570),\n    COL_VERTEX(32, 1669, -537),\n    COL_VERTEX(329, 1669, 25),\n    COL_VERTEX(284, 1669, 31),\n    COL_VERTEX(368, 1669, -164),\n    COL_VERTEX(1069, 1601, -102),\n    COL_VERTEX(1090, 1601, 211),\n    COL_VERTEX(1001, 1669, 199),\n    COL_VERTEX(889, 1669, 380),\n    COL_VERTEX(961, 1601, 417),\n    COL_VERTEX(970, 1669, -66),\n    COL_VERTEX(731, 1669, 451),\n    COL_VERTEX(-81, 1669, -20),\n    COL_VERTEX(-148, 1669, -249),\n    COL_VERTEX(-251, 1669, -58),\n    COL_VERTEX(-129, 1669, 103),\n    COL_VERTEX(-24, 1669, 8),\n    COL_VERTEX(-206, 1669, 128),\n    COL_VERTEX(-383, 1669, 37),\n    COL_VERTEX(-72, 1669, 257),\n    COL_VERTEX(-270, 1669, 288),\n    COL_VERTEX(33, 1671, 351),\n    COL_VERTEX(-177, 1641, 456),\n    COL_VERTEX(-436, 1669, 371),\n    COL_VERTEX(-264, 1669, 440),\n    COL_VERTEX(-116, 1675, 476),\n    COL_VERTEX(75, 1669, 272),\n    COL_VERTEX(172, 1669, 291),\n    COL_VERTEX(152, 1669, 629),\n    COL_VERTEX(-227, 1601, 671),\n    COL_VERTEX(-146, 1675, 643),\n    COL_VERTEX(-259, 1669, 604),\n    COL_VERTEX(-634, 1669, -35),\n    COL_VERTEX(-571, 1669, -118),\n    COL_VERTEX(-685, 1669, 120),\n    COL_VERTEX(-638, 1669, 213),\n    COL_VERTEX(-701, 1601, 183),\n    COL_VERTEX(-494, 1669, 341),\n    COL_VERTEX(-717, 1669, 258),\n    COL_VERTEX(-416, 1669, 705),\n    COL_VERTEX(-79, 1675, 772),\n    COL_VERTEX(91, 1629, -722),\n    COL_VERTEX(42, 1670, -793),\n    COL_VERTEX(153, 1669, -767),\n    COL_VERTEX(112, 1669, -638),\n    COL_VERTEX(12, 1667, -620),\n    COL_VERTEX(-140, 1669, -442),\n    COL_VERTEX(-9, 1670, -906),\n    COL_VERTEX(58, 1601, -988),\n    COL_VERTEX(436, 1601, 477),\n    COL_VERTEX(581, 1669, 478),\n    COL_VERTEX(603, 1601, 533),\n    COL_VERTEX(365, 1670, 386),\n    COL_VERTEX(427, 1669, 418),\n    COL_VERTEX(269, 1675, 360),\n    COL_VERTEX(429, 1675, 675),\n    COL_VERTEX(326, 1669, 280),\n    COL_VERTEX(609, 1669, 78),\n    COL_VERTEX(263, 1669, 246),\n    COL_VERTEX(448, 1669, -350),\n    COL_VERTEX(647, 1669, -290),\n    COL_VERTEX(732, 1669, -520),\n    COL_VERTEX(589, 1669, -403),\n    COL_VERTEX(-799, 1601, 238),\n    COL_VERTEX(-814, 1669, 109),\n    COL_VERTEX(-522, 1669, 470),\n    COL_VERTEX(141, 1669, 116),\n    COL_VERTEX(-72, 1669, 92),\n    COL_VERTEX(-22, 1669, 218),\n    COL_VERTEX(-362, 1669, -299),\n    COL_VERTEX(-550, 1669, -483),\n    COL_VERTEX(-614, 1669, -532),\n    COL_VERTEX(-617, 1669, -388),\n    COL_VERTEX(-670, 1670, -638),\n    COL_VERTEX(-607, 1669, -233),\n    COL_VERTEX(430, 1669, -650),\n    COL_VERTEX(235, 1669, -911),\n    COL_VERTEX(223, 1601, -1031),\n    COL_VERTEX(459, 1601, -1122),\n    COL_VERTEX(741, 1601, -1009),\n    COL_VERTEX(895, 1601, -772),\n    COL_VERTEX(769, 1601, 511),\n    COL_VERTEX(366, 1675, 816),\n    COL_VERTEX(492, 1601, 710),\n    COL_VERTEX(232, 1675, 906),\n    COL_VERTEX(413, 1601, 887),\n    COL_VERTEX(37, 1675, 878),\n    COL_VERTEX(2, 1601, 964),\n    COL_VERTEX(-583, 1669, 738),\n    COL_VERTEX(-423, 1601, 797),\n    COL_VERTEX(-728, 1669, 649),\n    COL_VERTEX(-632, 1601, 838),\n    COL_VERTEX(-795, 1669, 492),\n    COL_VERTEX(-785, 1669, 355),\n    COL_VERTEX(-897, 1601, 531),\n    COL_VERTEX(-885, 1601, 360),\n    COL_VERTEX(-959, 1669, 64),\n    COL_VERTEX(-844, 1601, 196),\n    COL_VERTEX(-1043, 1669, -64),\n    COL_VERTEX(-1043, 1669, -209),\n    COL_VERTEX(-1148, 1601, -47),\n    COL_VERTEX(-981, 1669, -354),\n    COL_VERTEX(-1148, 1601, -228),\n    COL_VERTEX(-652, 1670, -774),\n    COL_VERTEX(-768, 1601, -654),\n    COL_VERTEX(-559, 1668, -958),\n    COL_VERTEX(-746, 1601, -823),\n    COL_VERTEX(-374, 1669, -1017),\n    COL_VERTEX(-619, 1601, -1042),\n    COL_VERTEX(-176, 1670, -1012),\n    COL_VERTEX(-398, 1601, -1127),\n    COL_VERTEX(-151, 1601, -1121),\n    COL_VERTEX(-748, 1669, -153),\n    COL_VERTEX(371, 1669, -504),\n    COL_VERTEX(-3705, 4499, -4572),\n    COL_VERTEX(-2859, 4537, -4652),\n    COL_VERTEX(-2880, 4537, -4165),\n    COL_VERTEX(-2847, 4537, -4704),\n    COL_VERTEX(-3142, 4537, -4365),\n    COL_VERTEX(-2895, 4537, -4124),\n    COL_VERTEX(-2579, 4537, -4322),\n    COL_VERTEX(-2252, 4537, -4320),\n    COL_VERTEX(-3491, 4537, -4263),\n    COL_VERTEX(-3392, 4537, -4631),\n    COL_VERTEX(-2687, 4542, -3607),\n    COL_VERTEX(-3735, 4537, -3958),\n    COL_VERTEX(-3690, 4537, -3900),\n    COL_VERTEX(-3386, 4537, -4785),\n    COL_VERTEX(-2646, 4537, -5080),\n    COL_VERTEX(-2438, 4537, -5019),\n    COL_VERTEX(-2312, 4537, -4844),\n    COL_VERTEX(-633, 1632, -476),\n    COL_VERTEX(191, 1669, -69),\n    COL_VERTEX(212, 1669, -556),\n    COL_VERTEX(-70, 1669, -269),\n    COL_VERTEX(176, 1669, -28),\n    COL_VERTEX(224, 1669, -608),\n    COL_VERTEX(492, 1669, -226),\n    COL_VERTEX(819, 1669, -224),\n    COL_VERTEX(-419, 1669, -167),\n    COL_VERTEX(384, 1675, 488),\n    COL_VERTEX(-663, 1669, 137),\n    COL_VERTEX(-618, 1669, 195),\n    COL_VERTEX(-314, 1669, -689),\n    COL_VERTEX(-320, 1669, -535),\n    COL_VERTEX(425, 1669, -984),\n    COL_VERTEX(633, 1669, -923),\n    COL_VERTEX(759, 1669, -748),\n    COL_TRI_INIT(SURFACE_DEFAULT, 68),\n    COL_TRI(290, 272, 291),\n    COL_TRI(292, 290, 291),\n    COL_TRI(268, 291, 272),\n    COL_TRI(268, 293, 291),\n    COL_TRI(291, 293, 292),\n    COL_TRI(293, 294, 292),\n    COL_TRI(268, 294, 293),\n    COL_TRI(295, 290, 292),\n    COL_TRI(296, 295, 292),\n    COL_TRI(294, 297, 292),\n    COL_TRI(297, 298, 292),\n    COL_TRI(298, 296, 292),\n    COL_TRI(273, 299, 300),\n    COL_TRI(273, 300, 301),\n    COL_TRI(269, 294, 267),\n    COL_TRI(266, 302, 299),\n    COL_TRI(266, 301, 302),\n    COL_TRI(300, 302, 301),\n    COL_TRI(300, 299, 302),\n    COL_TRI(273, 301, 271),\n    COL_TRI(266, 271, 301),\n    COL_TRI(266, 299, 270),\n    COL_TRI(273, 270, 299),\n    COL_TRI(268, 267, 294),\n    COL_TRI(269, 297, 294),\n    COL_TRI(289, 303, 314),\n    COL_TRI(274, 298, 297),\n    COL_TRI(274, 297, 269),\n    COL_TRI(276, 298, 274),\n    COL_TRI(276, 296, 298),\n    COL_TRI(276, 295, 296),\n    COL_TRI(277, 295, 275),\n    COL_TRI(277, 290, 295),\n    COL_TRI(276, 275, 295),\n    COL_TRI(290, 277, 272),\n    COL_TRI(289, 313, 303),\n    COL_TRI(280, 314, 315),\n    COL_TRI(280, 315, 313),\n    COL_TRI(303, 313, 315),\n    COL_TRI(303, 315, 314),\n    COL_TRI(280, 283, 314),\n    COL_TRI(289, 314, 283),\n    COL_TRI(289, 278, 313),\n    COL_TRI(280, 313, 278),\n    COL_TRI(282, 281, 304),\n    COL_TRI(282, 304, 305),\n    COL_TRI(279, 306, 304),\n    COL_TRI(304, 306, 310),\n    COL_TRI(279, 304, 281),\n    COL_TRI(305, 304, 310),\n    COL_TRI(285, 309, 306),\n    COL_TRI(285, 306, 279),\n    COL_TRI(306, 309, 310),\n    COL_TRI(307, 312, 310),\n    COL_TRI(308, 307, 310),\n    COL_TRI(309, 308, 310),\n    COL_TRI(310, 312, 311),\n    COL_TRI(311, 305, 310),\n    COL_TRI(287, 308, 309),\n    COL_TRI(287, 309, 285),\n    COL_TRI(287, 307, 308),\n    COL_TRI(287, 286, 307),\n    COL_TRI(288, 307, 286),\n    COL_TRI(288, 312, 307),\n    COL_TRI(312, 284, 311),\n    COL_TRI(312, 288, 284),\n    COL_TRI(282, 305, 311),\n    COL_TRI(282, 311, 284),\n    COL_TRI_INIT(SURFACE_HANGABLE, 38),\n    COL_TRI(507, 530, 491),\n    COL_TRI(507, 522, 530),\n    COL_TRI(507, 515, 522),\n    COL_TRI(507, 491, 499),\n    COL_TRI(507, 511, 515),\n    COL_TRI(507, 509, 511),\n    COL_TRI(499, 506, 507),\n    COL_TRI(507, 508, 509),\n    COL_TRI(491, 497, 499),\n    COL_TRI(491, 496, 497),\n    COL_TRI(530, 490, 491),\n    COL_TRI(491, 492, 493),\n    COL_TRI(499, 501, 503),\n    COL_TRI(499, 500, 501),\n    COL_TRI(499, 503, 504),\n    COL_TRI(499, 504, 505),\n    COL_TRI(499, 505, 506),\n    COL_TRI(530, 489, 490),\n    COL_TRI(530, 532, 534),\n    COL_TRI(530, 534, 535),\n    COL_TRI(530, 535, 488),\n    COL_TRI(530, 488, 489),\n    COL_TRI(511, 514, 515),\n    COL_TRI(515, 521, 522),\n    COL_TRI(522, 528, 530),\n    COL_TRI(522, 524, 525),\n    COL_TRI(522, 525, 526),\n    COL_TRI(522, 526, 527),\n    COL_TRI(522, 527, 528),\n    COL_TRI(515, 520, 521),\n    COL_TRI(515, 519, 520),\n    COL_TRI(515, 518, 519),\n    COL_TRI(515, 517, 518),\n    COL_TRI(515, 516, 517),\n    COL_TRI(511, 512, 513),\n    COL_TRI(511, 513, 514),\n    COL_TRI(491, 495, 496),\n    COL_TRI(491, 493, 495),\n    COL_TRI_INIT(SURFACE_DEATH_PLANE, 2),\n    COL_TRI(0, 1, 2),\n    COL_TRI(0, 2, 3),\n    COL_TRI_INIT(SURFACE_NOT_SLIPPERY, 1220),\n    COL_TRI(5, 10, 16),\n    COL_TRI(4, 5, 6),\n    COL_TRI(4, 7, 5),\n    COL_TRI(4, 8, 7),\n    COL_TRI(6, 8, 4),\n    COL_TRI(5, 9, 10),\n    COL_TRI(9, 5, 7),\n    COL_TRI(5, 11, 6),\n    COL_TRI(5, 12, 11),\n    COL_TRI(5, 13, 12),\n    COL_TRI(5, 14, 13),\n    COL_TRI(5, 15, 14),\n    COL_TRI(5, 16, 15),\n    COL_TRI(17, 6, 11),\n    COL_TRI(6, 18, 21),\n    COL_TRI(6, 19, 18),\n    COL_TRI(6, 20, 19),\n    COL_TRI(6, 21, 23),\n    COL_TRI(6, 22, 8),\n    COL_TRI(6, 23, 22),\n    COL_TRI(6, 17, 24),\n    COL_TRI(6, 24, 20),\n    COL_TRI(7, 209, 8),\n    COL_TRI(20, 213, 19),\n    COL_TRI(25, 22, 26),\n    COL_TRI(25, 8, 22),\n    COL_TRI(22, 23, 210),\n    COL_TRI(26, 22, 210),\n    COL_TRI(21, 210, 23),\n    COL_TRI(18, 211, 21),\n    COL_TRI(21, 211, 210),\n    COL_TRI(18, 212, 211),\n    COL_TRI(19, 212, 18),\n    COL_TRI(19, 213, 212),\n    COL_TRI(16, 29, 15),\n    COL_TRI(20, 24, 213),\n    COL_TRI(12, 17, 11),\n    COL_TRI(13, 17, 12),\n    COL_TRI(13, 27, 17),\n    COL_TRI(14, 27, 13),\n    COL_TRI(14, 28, 27),\n    COL_TRI(15, 28, 14),\n    COL_TRI(15, 29, 28),\n    COL_TRI(30, 16, 10),\n    COL_TRI(16, 30, 29),\n    COL_TRI(31, 30, 10),\n    COL_TRI(9, 31, 10),\n    COL_TRI(32, 26, 210),\n    COL_TRI(33, 210, 211),\n    COL_TRI(34, 210, 33),\n    COL_TRI(34, 32, 210),\n    COL_TRI(35, 211, 212),\n    COL_TRI(33, 211, 35),\n    COL_TRI(40, 215, 41),\n    COL_TRI(35, 212, 36),\n    COL_TRI(36, 212, 213),\n    COL_TRI(36, 213, 37),\n    COL_TRI(37, 213, 24),\n    COL_TRI(37, 24, 38),\n    COL_TRI(38, 24, 17),\n    COL_TRI(39, 17, 27),\n    COL_TRI(38, 17, 39),\n    COL_TRI(25, 41, 214),\n    COL_TRI(25, 40, 41),\n    COL_TRI(42, 31, 9),\n    COL_TRI(43, 9, 215),\n    COL_TRI(42, 9, 43),\n    COL_TRI(7, 214, 9),\n    COL_TRI(41, 9, 214),\n    COL_TRI(41, 215, 9),\n    COL_TRI(25, 214, 7),\n    COL_TRI(43, 215, 44),\n    COL_TRI(44, 215, 216),\n    COL_TRI(40, 216, 215),\n    COL_TRI(25, 45, 40),\n    COL_TRI(45, 216, 40),\n    COL_TRI(44, 216, 46),\n    COL_TRI(46, 216, 45),\n    COL_TRI(25, 26, 49),\n    COL_TRI(25, 7, 8),\n    COL_TRI(25, 49, 47),\n    COL_TRI(47, 45, 25),\n    COL_TRI(46, 45, 48),\n    COL_TRI(47, 217, 45),\n    COL_TRI(48, 45, 217),\n    COL_TRI(49, 217, 47),\n    COL_TRI(49, 32, 217),\n    COL_TRI(48, 217, 50),\n    COL_TRI(50, 217, 32),\n    COL_TRI(32, 49, 26),\n    COL_TRI(54, 30, 31),\n    COL_TRI(50, 32, 34),\n    COL_TRI(39, 27, 51),\n    COL_TRI(51, 27, 28),\n    COL_TRI(51, 28, 52),\n    COL_TRI(52, 28, 29),\n    COL_TRI(52, 29, 53),\n    COL_TRI(53, 29, 30),\n    COL_TRI(53, 30, 54),\n    COL_TRI(59, 55, 58),\n    COL_TRI(54, 31, 42),\n    COL_TRI(55, 56, 58),\n    COL_TRI(56, 218, 57),\n    COL_TRI(56, 219, 58),\n    COL_TRI(56, 57, 219),\n    COL_TRI(55, 52, 56),\n    COL_TRI(56, 53, 218),\n    COL_TRI(56, 52, 53),\n    COL_TRI(57, 42, 219),\n    COL_TRI(42, 58, 219),\n    COL_TRI(58, 43, 44),\n    COL_TRI(42, 43, 58),\n    COL_TRI(58, 44, 59),\n    COL_TRI(53, 54, 57),\n    COL_TRI(57, 54, 42),\n    COL_TRI(53, 57, 218),\n    COL_TRI(59, 44, 46),\n    COL_TRI(59, 60, 55),\n    COL_TRI(60, 51, 55),\n    COL_TRI(59, 220, 65),\n    COL_TRI(59, 66, 220),\n    COL_TRI(59, 67, 66),\n    COL_TRI(59, 68, 67),\n    COL_TRI(59, 65, 64),\n    COL_TRI(59, 61, 60),\n    COL_TRI(59, 62, 61),\n    COL_TRI(59, 63, 62),\n    COL_TRI(59, 64, 63),\n    COL_TRI(59, 46, 68),\n    COL_TRI(65, 33, 35),\n    COL_TRI(61, 39, 60),\n    COL_TRI(60, 39, 51),\n    COL_TRI(62, 38, 61),\n    COL_TRI(61, 38, 39),\n    COL_TRI(63, 37, 62),\n    COL_TRI(62, 37, 38),\n    COL_TRI(64, 36, 63),\n    COL_TRI(63, 36, 37),\n    COL_TRI(65, 35, 64),\n    COL_TRI(64, 35, 36),\n    COL_TRI(34, 65, 220),\n    COL_TRI(34, 33, 65),\n    COL_TRI(69, 74, 72),\n    COL_TRI(66, 34, 220),\n    COL_TRI(66, 50, 34),\n    COL_TRI(67, 50, 66),\n    COL_TRI(68, 48, 67),\n    COL_TRI(67, 48, 50),\n    COL_TRI(68, 46, 48),\n    COL_TRI(55, 51, 52),\n    COL_TRI(69, 72, 70),\n    COL_TRI(71, 72, 74),\n    COL_TRI(72, 222, 70),\n    COL_TRI(72, 223, 86),\n    COL_TRI(72, 82, 222),\n    COL_TRI(72, 83, 82),\n    COL_TRI(72, 84, 83),\n    COL_TRI(72, 85, 84),\n    COL_TRI(72, 86, 85),\n    COL_TRI(72, 71, 223),\n    COL_TRI(73, 70, 222),\n    COL_TRI(70, 224, 81),\n    COL_TRI(70, 73, 224),\n    COL_TRI(82, 73, 222),\n    COL_TRI(83, 73, 82),\n    COL_TRI(70, 225, 75),\n    COL_TRI(69, 221, 74),\n    COL_TRI(74, 232, 221),\n    COL_TRI(70, 221, 69),\n    COL_TRI(70, 75, 221),\n    COL_TRI(75, 225, 226),\n    COL_TRI(76, 75, 226),\n    COL_TRI(77, 221, 75),\n    COL_TRI(77, 75, 76),\n    COL_TRI(77, 74, 221),\n    COL_TRI(70, 78, 225),\n    COL_TRI(70, 79, 78),\n    COL_TRI(70, 80, 79),\n    COL_TRI(70, 81, 80),\n    COL_TRI(78, 226, 225),\n    COL_TRI(78, 227, 226),\n    COL_TRI(79, 227, 78),\n    COL_TRI(79, 234, 227),\n    COL_TRI(80, 234, 79),\n    COL_TRI(81, 228, 80),\n    COL_TRI(80, 228, 234),\n    COL_TRI(81, 224, 228),\n    COL_TRI(83, 229, 73),\n    COL_TRI(84, 229, 83),\n    COL_TRI(90, 91, 226),\n    COL_TRI(84, 230, 229),\n    COL_TRI(85, 230, 84),\n    COL_TRI(86, 231, 85),\n    COL_TRI(85, 231, 230),\n    COL_TRI(86, 87, 231),\n    COL_TRI(87, 86, 223),\n    COL_TRI(88, 87, 223),\n    COL_TRI(71, 88, 223),\n    COL_TRI(89, 226, 227),\n    COL_TRI(90, 226, 89),\n    COL_TRI(97, 235, 98),\n    COL_TRI(92, 227, 234),\n    COL_TRI(89, 227, 92),\n    COL_TRI(92, 234, 93),\n    COL_TRI(93, 234, 228),\n    COL_TRI(93, 228, 94),\n    COL_TRI(94, 228, 224),\n    COL_TRI(94, 224, 95),\n    COL_TRI(95, 224, 73),\n    COL_TRI(95, 73, 96),\n    COL_TRI(96, 73, 229),\n    COL_TRI(98, 235, 71),\n    COL_TRI(98, 71, 233),\n    COL_TRI(77, 98, 233),\n    COL_TRI(74, 233, 71),\n    COL_TRI(99, 71, 235),\n    COL_TRI(100, 71, 99),\n    COL_TRI(100, 88, 71),\n    COL_TRI(77, 233, 74),\n    COL_TRI(97, 236, 235),\n    COL_TRI(101, 235, 236),\n    COL_TRI(99, 235, 101),\n    COL_TRI(77, 102, 97),\n    COL_TRI(102, 236, 97),\n    COL_TRI(77, 97, 98),\n    COL_TRI(107, 91, 90),\n    COL_TRI(91, 76, 226),\n    COL_TRI(101, 236, 103),\n    COL_TRI(103, 236, 102),\n    COL_TRI(104, 102, 77),\n    COL_TRI(77, 106, 104),\n    COL_TRI(77, 76, 106),\n    COL_TRI(105, 102, 237),\n    COL_TRI(104, 237, 102),\n    COL_TRI(103, 102, 105),\n    COL_TRI(106, 237, 104),\n    COL_TRI(107, 237, 91),\n    COL_TRI(105, 237, 107),\n    COL_TRI(106, 91, 237),\n    COL_TRI(91, 106, 76),\n    COL_TRI(112, 108, 109),\n    COL_TRI(108, 229, 230),\n    COL_TRI(96, 229, 108),\n    COL_TRI(109, 230, 231),\n    COL_TRI(108, 230, 109),\n    COL_TRI(109, 231, 110),\n    COL_TRI(110, 231, 87),\n    COL_TRI(110, 87, 111),\n    COL_TRI(111, 87, 88),\n    COL_TRI(111, 88, 100),\n    COL_TRI(112, 109, 113),\n    COL_TRI(113, 110, 238),\n    COL_TRI(113, 109, 110),\n    COL_TRI(117, 112, 115),\n    COL_TRI(113, 239, 115),\n    COL_TRI(114, 100, 239),\n    COL_TRI(100, 115, 239),\n    COL_TRI(113, 114, 239),\n    COL_TRI(115, 101, 117),\n    COL_TRI(100, 99, 115),\n    COL_TRI(115, 99, 101),\n    COL_TRI(114, 111, 100),\n    COL_TRI(110, 114, 238),\n    COL_TRI(110, 111, 114),\n    COL_TRI(113, 238, 114),\n    COL_TRI(116, 108, 112),\n    COL_TRI(117, 116, 112),\n    COL_TRI(112, 113, 115),\n    COL_TRI(117, 122, 121),\n    COL_TRI(117, 101, 103),\n    COL_TRI(117, 103, 125),\n    COL_TRI(117, 123, 240),\n    COL_TRI(117, 124, 123),\n    COL_TRI(117, 125, 124),\n    COL_TRI(117, 240, 122),\n    COL_TRI(117, 118, 116),\n    COL_TRI(117, 119, 118),\n    COL_TRI(117, 120, 119),\n    COL_TRI(117, 121, 120),\n    COL_TRI(90, 89, 122),\n    COL_TRI(116, 96, 108),\n    COL_TRI(118, 96, 116),\n    COL_TRI(119, 95, 118),\n    COL_TRI(118, 95, 96),\n    COL_TRI(120, 94, 119),\n    COL_TRI(119, 94, 95),\n    COL_TRI(121, 93, 120),\n    COL_TRI(120, 93, 94),\n    COL_TRI(121, 92, 93),\n    COL_TRI(122, 92, 121),\n    COL_TRI(122, 89, 92),\n    COL_TRI(90, 122, 240),\n    COL_TRI(123, 90, 240),\n    COL_TRI(124, 107, 123),\n    COL_TRI(123, 107, 90),\n    COL_TRI(125, 105, 124),\n    COL_TRI(124, 105, 107),\n    COL_TRI(125, 103, 105),\n    COL_TRI(126, 241, 127),\n    COL_TRI(127, 242, 132),\n    COL_TRI(127, 138, 242),\n    COL_TRI(128, 126, 127),\n    COL_TRI(127, 243, 128),\n    COL_TRI(127, 244, 243),\n    COL_TRI(130, 243, 244),\n    COL_TRI(128, 243, 130),\n    COL_TRI(128, 130, 126),\n    COL_TRI(131, 133, 244),\n    COL_TRI(127, 132, 244),\n    COL_TRI(132, 131, 244),\n    COL_TRI(133, 130, 244),\n    COL_TRI(132, 136, 134),\n    COL_TRI(132, 134, 131),\n    COL_TRI(131, 140, 139),\n    COL_TRI(131, 250, 140),\n    COL_TRI(131, 139, 133),\n    COL_TRI(134, 141, 131),\n    COL_TRI(134, 145, 143),\n    COL_TRI(134, 146, 145),\n    COL_TRI(134, 251, 146),\n    COL_TRI(136, 252, 134),\n    COL_TRI(134, 143, 142),\n    COL_TRI(134, 253, 141),\n    COL_TRI(134, 142, 253),\n    COL_TRI(137, 251, 134),\n    COL_TRI(134, 252, 137),\n    COL_TRI(136, 148, 252),\n    COL_TRI(136, 150, 148),\n    COL_TRI(136, 151, 150),\n    COL_TRI(137, 146, 251),\n    COL_TRI(138, 245, 242),\n    COL_TRI(129, 242, 245),\n    COL_TRI(129, 132, 242),\n    COL_TRI(126, 246, 241),\n    COL_TRI(126, 154, 246),\n    COL_TRI(126, 157, 154),\n    COL_TRI(126, 247, 157),\n    COL_TRI(126, 158, 247),\n    COL_TRI(130, 248, 126),\n    COL_TRI(126, 248, 160),\n    COL_TRI(129, 246, 154),\n    COL_TRI(129, 241, 246),\n    COL_TRI(142, 135, 253),\n    COL_TRI(133, 254, 130),\n    COL_TRI(139, 254, 133),\n    COL_TRI(140, 255, 139),\n    COL_TRI(139, 255, 254),\n    COL_TRI(135, 140, 250),\n    COL_TRI(135, 256, 140),\n    COL_TRI(140, 256, 255),\n    COL_TRI(135, 250, 131),\n    COL_TRI(131, 141, 135),\n    COL_TRI(141, 253, 135),\n    COL_TRI(142, 257, 135),\n    COL_TRI(143, 144, 142),\n    COL_TRI(144, 257, 142),\n    COL_TRI(145, 144, 143),\n    COL_TRI(146, 147, 145),\n    COL_TRI(147, 258, 145),\n    COL_TRI(145, 258, 144),\n    COL_TRI(137, 147, 146),\n    COL_TRI(148, 149, 252),\n    COL_TRI(149, 137, 252),\n    COL_TRI(129, 245, 138),\n    COL_TRI(136, 152, 151),\n    COL_TRI(150, 149, 148),\n    COL_TRI(151, 259, 150),\n    COL_TRI(150, 259, 149),\n    COL_TRI(152, 260, 151),\n    COL_TRI(151, 260, 259),\n    COL_TRI(136, 129, 152),\n    COL_TRI(153, 152, 129),\n    COL_TRI(152, 153, 260),\n    COL_TRI(153, 129, 261),\n    COL_TRI(129, 136, 132),\n    COL_TRI(154, 261, 129),\n    COL_TRI(129, 127, 241),\n    COL_TRI(155, 154, 157),\n    COL_TRI(156, 154, 155),\n    COL_TRI(154, 161, 261),\n    COL_TRI(154, 162, 161),\n    COL_TRI(154, 163, 162),\n    COL_TRI(154, 164, 163),\n    COL_TRI(154, 156, 164),\n    COL_TRI(157, 247, 155),\n    COL_TRI(155, 164, 156),\n    COL_TRI(158, 159, 247),\n    COL_TRI(159, 155, 247),\n    COL_TRI(160, 159, 158),\n    COL_TRI(160, 158, 249),\n    COL_TRI(126, 249, 158),\n    COL_TRI(126, 160, 249),\n    COL_TRI(129, 138, 127),\n    COL_TRI(161, 153, 261),\n    COL_TRI(166, 155, 159),\n    COL_TRI(161, 262, 153),\n    COL_TRI(162, 262, 161),\n    COL_TRI(162, 263, 262),\n    COL_TRI(163, 263, 162),\n    COL_TRI(164, 264, 163),\n    COL_TRI(163, 264, 263),\n    COL_TRI(164, 265, 264),\n    COL_TRI(155, 265, 164),\n    COL_TRI(165, 155, 166),\n    COL_TRI(165, 265, 155),\n    COL_TRI(172, 160, 248),\n    COL_TRI(167, 265, 165),\n    COL_TRI(167, 264, 265),\n    COL_TRI(168, 264, 167),\n    COL_TRI(168, 263, 264),\n    COL_TRI(169, 262, 263),\n    COL_TRI(169, 263, 168),\n    COL_TRI(170, 262, 169),\n    COL_TRI(170, 153, 262),\n    COL_TRI(171, 153, 170),\n    COL_TRI(171, 260, 153),\n    COL_TRI(173, 159, 160),\n    COL_TRI(173, 160, 172),\n    COL_TRI(172, 248, 174),\n    COL_TRI(174, 248, 130),\n    COL_TRI(166, 159, 173),\n    COL_TRI(175, 130, 254),\n    COL_TRI(174, 130, 175),\n    COL_TRI(176, 135, 257),\n    COL_TRI(177, 256, 135),\n    COL_TRI(177, 135, 176),\n    COL_TRI(178, 256, 177),\n    COL_TRI(178, 255, 256),\n    COL_TRI(179, 255, 178),\n    COL_TRI(179, 254, 255),\n    COL_TRI(175, 254, 179),\n    COL_TRI(180, 137, 149),\n    COL_TRI(181, 147, 137),\n    COL_TRI(181, 137, 180),\n    COL_TRI(182, 147, 181),\n    COL_TRI(182, 258, 147),\n    COL_TRI(186, 149, 259),\n    COL_TRI(183, 258, 182),\n    COL_TRI(183, 144, 258),\n    COL_TRI(184, 144, 183),\n    COL_TRI(184, 257, 144),\n    COL_TRI(176, 257, 184),\n    COL_TRI(185, 259, 260),\n    COL_TRI(185, 260, 171),\n    COL_TRI(186, 259, 185),\n    COL_TRI(192, 190, 191),\n    COL_TRI(180, 149, 186),\n    COL_TRI(187, 166, 188),\n    COL_TRI(188, 173, 192),\n    COL_TRI(188, 166, 173),\n    COL_TRI(189, 187, 188),\n    COL_TRI(188, 191, 189),\n    COL_TRI(188, 192, 191),\n    COL_TRI(190, 175, 191),\n    COL_TRI(191, 179, 207),\n    COL_TRI(191, 175, 179),\n    COL_TRI(194, 168, 193),\n    COL_TRI(191, 193, 189),\n    COL_TRI(191, 194, 193),\n    COL_TRI(193, 167, 189),\n    COL_TRI(189, 165, 187),\n    COL_TRI(189, 167, 165),\n    COL_TRI(192, 172, 208),\n    COL_TRI(192, 173, 172),\n    COL_TRI(192, 208, 190),\n    COL_TRI(187, 165, 166),\n    COL_TRI(193, 168, 167),\n    COL_TRI(199, 186, 198),\n    COL_TRI(191, 199, 198),\n    COL_TRI(191, 198, 197),\n    COL_TRI(194, 169, 168),\n    COL_TRI(195, 169, 194),\n    COL_TRI(191, 195, 194),\n    COL_TRI(196, 170, 195),\n    COL_TRI(195, 170, 169),\n    COL_TRI(191, 196, 195),\n    COL_TRI(197, 171, 196),\n    COL_TRI(196, 171, 170),\n    COL_TRI(191, 197, 196),\n    COL_TRI(198, 185, 197),\n    COL_TRI(197, 185, 171),\n    COL_TRI(198, 186, 185),\n    COL_TRI(204, 184, 203),\n    COL_TRI(191, 204, 203),\n    COL_TRI(191, 200, 199),\n    COL_TRI(191, 201, 200),\n    COL_TRI(191, 202, 201),\n    COL_TRI(191, 203, 202),\n    COL_TRI(199, 180, 186),\n    COL_TRI(200, 180, 199),\n    COL_TRI(201, 181, 200),\n    COL_TRI(200, 181, 180),\n    COL_TRI(202, 182, 201),\n    COL_TRI(201, 182, 181),\n    COL_TRI(202, 183, 182),\n    COL_TRI(203, 183, 202),\n    COL_TRI(203, 184, 183),\n    COL_TRI(191, 205, 204),\n    COL_TRI(191, 206, 205),\n    COL_TRI(191, 207, 206),\n    COL_TRI(204, 176, 184),\n    COL_TRI(205, 176, 204),\n    COL_TRI(206, 177, 205),\n    COL_TRI(205, 177, 176),\n    COL_TRI(206, 178, 177),\n    COL_TRI(207, 178, 206),\n    COL_TRI(207, 179, 178),\n    COL_TRI(190, 174, 175),\n    COL_TRI(208, 174, 190),\n    COL_TRI(208, 172, 174),\n    COL_TRI(327, 326, 328),\n    COL_TRI(316, 317, 318),\n    COL_TRI(316, 318, 319),\n    COL_TRI(320, 317, 316),\n    COL_TRI(319, 318, 321),\n    COL_TRI(319, 321, 322),\n    COL_TRI(320, 323, 317),\n    COL_TRI(322, 321, 324),\n    COL_TRI(322, 324, 325),\n    COL_TRI(325, 324, 326),\n    COL_TRI(325, 326, 327),\n    COL_TRI(335, 465, 336),\n    COL_TRI(327, 328, 329),\n    COL_TRI(328, 330, 331),\n    COL_TRI(329, 328, 331),\n    COL_TRI(331, 330, 333),\n    COL_TRI(331, 333, 332),\n    COL_TRI(332, 333, 334),\n    COL_TRI(333, 409, 334),\n    COL_TRI(334, 409, 463),\n    COL_TRI(334, 463, 335),\n    COL_TRI(335, 463, 465),\n    COL_TRI(342, 416, 471),\n    COL_TRI(336, 465, 337),\n    COL_TRI(336, 337, 338),\n    COL_TRI(337, 468, 339),\n    COL_TRI(338, 337, 339),\n    COL_TRI(339, 468, 469),\n    COL_TRI(339, 469, 340),\n    COL_TRI(340, 469, 441),\n    COL_TRI(340, 441, 341),\n    COL_TRI(341, 441, 416),\n    COL_TRI(341, 416, 342),\n    COL_TRI(348, 373, 349),\n    COL_TRI(342, 471, 343),\n    COL_TRI(343, 471, 345),\n    COL_TRI(343, 345, 344),\n    COL_TRI(344, 345, 346),\n    COL_TRI(345, 474, 346),\n    COL_TRI(346, 474, 476),\n    COL_TRI(346, 476, 347),\n    COL_TRI(347, 476, 374),\n    COL_TRI(347, 374, 348),\n    COL_TRI(348, 374, 373),\n    COL_TRI(354, 484, 485),\n    COL_TRI(349, 373, 375),\n    COL_TRI(349, 375, 350),\n    COL_TRI(350, 375, 478),\n    COL_TRI(350, 478, 351),\n    COL_TRI(351, 478, 480),\n    COL_TRI(351, 480, 352),\n    COL_TRI(352, 480, 482),\n    COL_TRI(352, 482, 353),\n    COL_TRI(353, 482, 484),\n    COL_TRI(353, 484, 354),\n    COL_TRI(360, 457, 361),\n    COL_TRI(354, 485, 355),\n    COL_TRI(355, 485, 428),\n    COL_TRI(355, 428, 356),\n    COL_TRI(356, 428, 358),\n    COL_TRI(356, 358, 357),\n    COL_TRI(357, 358, 359),\n    COL_TRI(358, 454, 359),\n    COL_TRI(359, 454, 456),\n    COL_TRI(359, 456, 360),\n    COL_TRI(360, 456, 457),\n    COL_TRI(361, 457, 458),\n    COL_TRI(361, 458, 362),\n    COL_TRI(362, 458, 363),\n    COL_TRI(362, 363, 364),\n    COL_TRI(363, 366, 365),\n    COL_TRI(364, 363, 365),\n    COL_TRI(365, 366, 367),\n    COL_TRI(366, 368, 367),\n    COL_TRI(367, 368, 369),\n    COL_TRI(368, 386, 369),\n    COL_TRI(369, 386, 387),\n    COL_TRI(369, 387, 370),\n    COL_TRI(370, 387, 323),\n    COL_TRI(370, 323, 320),\n    COL_TRI(334, 341, 342),\n    COL_TRI(342, 343, 344),\n    COL_TRI(342, 344, 346),\n    COL_TRI(342, 346, 350),\n    COL_TRI(342, 350, 357),\n    COL_TRI(342, 357, 365),\n    COL_TRI(342, 365, 322),\n    COL_TRI(342, 322, 334),\n    COL_TRI(334, 336, 338),\n    COL_TRI(365, 319, 322),\n    COL_TRI(322, 325, 327),\n    COL_TRI(322, 327, 329),\n    COL_TRI(322, 329, 331),\n    COL_TRI(322, 331, 332),\n    COL_TRI(322, 332, 334),\n    COL_TRI(334, 339, 340),\n    COL_TRI(334, 340, 341),\n    COL_TRI(334, 338, 339),\n    COL_TRI(334, 335, 336),\n    COL_TRI(350, 356, 357),\n    COL_TRI(365, 370, 320),\n    COL_TRI(365, 320, 316),\n    COL_TRI(365, 316, 319),\n    COL_TRI(365, 369, 370),\n    COL_TRI(357, 364, 365),\n    COL_TRI(365, 367, 369),\n    COL_TRI(357, 360, 361),\n    COL_TRI(357, 361, 362),\n    COL_TRI(357, 362, 364),\n    COL_TRI(357, 359, 360),\n    COL_TRI(350, 352, 353),\n    COL_TRI(350, 353, 354),\n    COL_TRI(350, 354, 355),\n    COL_TRI(350, 355, 356),\n    COL_TRI(350, 351, 352),\n    COL_TRI(346, 349, 350),\n    COL_TRI(346, 347, 348),\n    COL_TRI(346, 348, 349),\n    COL_TRI(371, 372, 486),\n    COL_TRI(372, 475, 486),\n    COL_TRI(377, 487, 376),\n    COL_TRI(373, 372, 375),\n    COL_TRI(372, 371, 375),\n    COL_TRI(371, 486, 452),\n    COL_TRI(371, 452, 450),\n    COL_TRI(371, 450, 660),\n    COL_TRI(375, 371, 660),\n    COL_TRI(375, 660, 448),\n    COL_TRI(375, 448, 478),\n    COL_TRI(374, 372, 373),\n    COL_TRI(376, 487, 661),\n    COL_TRI(378, 376, 661),\n    COL_TRI(379, 378, 661),\n    COL_TRI(376, 378, 662),\n    COL_TRI(380, 378, 379),\n    COL_TRI(381, 378, 664),\n    COL_TRI(381, 662, 378),\n    COL_TRI(382, 378, 380),\n    COL_TRI(378, 382, 664),\n    COL_TRI(377, 662, 385),\n    COL_TRI(377, 376, 662),\n    COL_TRI(383, 662, 665),\n    COL_TRI(383, 384, 662),\n    COL_TRI(384, 385, 662),\n    COL_TRI(381, 665, 662),\n    COL_TRI(435, 666, 384),\n    COL_TRI(377, 437, 487),\n    COL_TRI(385, 437, 377),\n    COL_TRI(385, 666, 437),\n    COL_TRI(384, 666, 385),\n    COL_TRI(386, 390, 388),\n    COL_TRI(386, 388, 387),\n    COL_TRI(368, 390, 386),\n    COL_TRI(387, 388, 389),\n    COL_TRI(388, 390, 435),\n    COL_TRI(389, 388, 435),\n    COL_TRI(323, 387, 389),\n    COL_TRI(368, 667, 390),\n    COL_TRI(390, 667, 435),\n    COL_TRI(389, 391, 317),\n    COL_TRI(323, 389, 317),\n    COL_TRI(391, 389, 435),\n    COL_TRI(392, 393, 394),\n    COL_TRI(393, 392, 381),\n    COL_TRI(394, 393, 447),\n    COL_TRI(393, 426, 447),\n    COL_TRI(395, 392, 394),\n    COL_TRI(381, 392, 396),\n    COL_TRI(392, 445, 396),\n    COL_TRI(392, 395, 445),\n    COL_TRI(393, 381, 664),\n    COL_TRI(396, 665, 381),\n    COL_TRI(397, 395, 394),\n    COL_TRI(394, 447, 668),\n    COL_TRI(398, 394, 668),\n    COL_TRI(397, 394, 398),\n    COL_TRI(406, 432, 402),\n    COL_TRI(399, 395, 397),\n    COL_TRI(395, 399, 446),\n    COL_TRI(395, 446, 445),\n    COL_TRI(399, 397, 400),\n    COL_TRI(400, 397, 398),\n    COL_TRI(401, 399, 400),\n    COL_TRI(402, 399, 401),\n    COL_TRI(399, 407, 446),\n    COL_TRI(399, 402, 407),\n    COL_TRI(400, 404, 401),\n    COL_TRI(403, 400, 398),\n    COL_TRI(404, 400, 403),\n    COL_TRI(405, 402, 401),\n    COL_TRI(406, 402, 405),\n    COL_TRI(412, 413, 671),\n    COL_TRI(409, 401, 411),\n    COL_TRI(401, 404, 411),\n    COL_TRI(409, 410, 401),\n    COL_TRI(410, 405, 401),\n    COL_TRI(411, 404, 443),\n    COL_TRI(404, 403, 443),\n    COL_TRI(410, 406, 405),\n    COL_TRI(412, 671, 672),\n    COL_TRI(413, 412, 486),\n    COL_TRI(398, 412, 672),\n    COL_TRI(411, 419, 463),\n    COL_TRI(415, 672, 671),\n    COL_TRI(416, 671, 413),\n    COL_TRI(416, 415, 671),\n    COL_TRI(415, 417, 672),\n    COL_TRI(417, 398, 672),\n    COL_TRI(415, 418, 443),\n    COL_TRI(415, 443, 417),\n    COL_TRI(418, 415, 416),\n    COL_TRI(419, 411, 443),\n    COL_TRI(409, 411, 463),\n    COL_TRI(425, 426, 380),\n    COL_TRI(420, 410, 409),\n    COL_TRI(333, 420, 409),\n    COL_TRI(410, 420, 406),\n    COL_TRI(358, 421, 422),\n    COL_TRI(421, 425, 422),\n    COL_TRI(422, 425, 424),\n    COL_TRI(423, 358, 422),\n    COL_TRI(424, 423, 422),\n    COL_TRI(421, 673, 425),\n    COL_TRI(425, 673, 669),\n    COL_TRI(426, 425, 669),\n    COL_TRI(424, 425, 380),\n    COL_TRI(423, 424, 453),\n    COL_TRI(424, 379, 663),\n    COL_TRI(424, 663, 453),\n    COL_TRI(424, 380, 379),\n    COL_TRI(421, 427, 673),\n    COL_TRI(427, 421, 358),\n    COL_TRI(358, 423, 454),\n    COL_TRI(428, 427, 358),\n    COL_TRI(423, 453, 455),\n    COL_TRI(423, 455, 454),\n    COL_TRI(435, 384, 434),\n    COL_TRI(318, 429, 321),\n    COL_TRI(429, 430, 321),\n    COL_TRI(321, 431, 670),\n    COL_TRI(321, 430, 431),\n    COL_TRI(321, 670, 433),\n    COL_TRI(321, 433, 324),\n    COL_TRI(430, 435, 434),\n    COL_TRI(431, 430, 434),\n    COL_TRI(430, 429, 435),\n    COL_TRI(432, 431, 434),\n    COL_TRI(432, 670, 431),\n    COL_TRI(433, 670, 406),\n    COL_TRI(406, 670, 432),\n    COL_TRI(434, 383, 436),\n    COL_TRI(434, 384, 383),\n    COL_TRI(434, 436, 432),\n    COL_TRI(435, 667, 438),\n    COL_TRI(436, 408, 432),\n    COL_TRI(408, 402, 432),\n    COL_TRI(437, 666, 438),\n    COL_TRI(435, 438, 666),\n    COL_TRI(437, 453, 487),\n    COL_TRI(437, 440, 453),\n    COL_TRI(438, 366, 437),\n    COL_TRI(366, 440, 437),\n    COL_TRI(366, 438, 368),\n    COL_TRI(438, 667, 368),\n    COL_TRI(363, 439, 366),\n    COL_TRI(439, 440, 366),\n    COL_TRI(440, 439, 453),\n    COL_TRI(416, 413, 471),\n    COL_TRI(441, 418, 416),\n    COL_TRI(442, 413, 486),\n    COL_TRI(413, 442, 471),\n    COL_TRI(403, 398, 417),\n    COL_TRI(443, 403, 417),\n    COL_TRI(444, 383, 665),\n    COL_TRI(444, 436, 383),\n    COL_TRI(444, 408, 436),\n    COL_TRI(445, 444, 396),\n    COL_TRI(444, 665, 396),\n    COL_TRI(446, 444, 445),\n    COL_TRI(407, 444, 446),\n    COL_TRI(444, 407, 408),\n    COL_TRI(407, 402, 408),\n    COL_TRI(449, 450, 447),\n    COL_TRI(382, 393, 664),\n    COL_TRI(426, 382, 380),\n    COL_TRI(382, 426, 393),\n    COL_TRI(447, 426, 669),\n    COL_TRI(379, 661, 663),\n    COL_TRI(448, 449, 673),\n    COL_TRI(449, 669, 673),\n    COL_TRI(449, 447, 669),\n    COL_TRI(450, 449, 660),\n    COL_TRI(449, 448, 660),\n    COL_TRI(455, 674, 456),\n    COL_TRI(414, 398, 668),\n    COL_TRI(451, 448, 673),\n    COL_TRI(448, 451, 478),\n    COL_TRI(452, 447, 450),\n    COL_TRI(414, 447, 452),\n    COL_TRI(414, 668, 447),\n    COL_TRI(453, 674, 455),\n    COL_TRI(454, 455, 456),\n    COL_TRI(453, 675, 674),\n    COL_TRI(456, 674, 675),\n    COL_TRI(456, 675, 457),\n    COL_TRI(453, 676, 675),\n    COL_TRI(457, 675, 676),\n    COL_TRI(457, 676, 458),\n    COL_TRI(453, 439, 676),\n    COL_TRI(458, 676, 439),\n    COL_TRI(458, 439, 363),\n    COL_TRI(317, 391, 318),\n    COL_TRI(391, 429, 318),\n    COL_TRI(429, 391, 435),\n    COL_TRI(459, 433, 406),\n    COL_TRI(324, 433, 326),\n    COL_TRI(433, 459, 326),\n    COL_TRI(460, 459, 406),\n    COL_TRI(326, 459, 460),\n    COL_TRI(326, 460, 328),\n    COL_TRI(461, 460, 406),\n    COL_TRI(460, 461, 330),\n    COL_TRI(328, 460, 330),\n    COL_TRI(420, 461, 406),\n    COL_TRI(330, 461, 420),\n    COL_TRI(330, 420, 333),\n    COL_TRI(462, 419, 443),\n    COL_TRI(463, 419, 462),\n    COL_TRI(463, 462, 465),\n    COL_TRI(464, 462, 443),\n    COL_TRI(465, 462, 337),\n    COL_TRI(462, 464, 337),\n    COL_TRI(466, 464, 443),\n    COL_TRI(337, 464, 466),\n    COL_TRI(337, 466, 468),\n    COL_TRI(467, 466, 443),\n    COL_TRI(466, 467, 469),\n    COL_TRI(468, 466, 469),\n    COL_TRI(418, 467, 443),\n    COL_TRI(469, 467, 418),\n    COL_TRI(469, 418, 441),\n    COL_TRI(470, 442, 486),\n    COL_TRI(477, 451, 673),\n    COL_TRI(471, 442, 470),\n    COL_TRI(471, 470, 345),\n    COL_TRI(472, 470, 486),\n    COL_TRI(470, 472, 474),\n    COL_TRI(345, 470, 474),\n    COL_TRI(473, 472, 486),\n    COL_TRI(474, 472, 473),\n    COL_TRI(474, 473, 476),\n    COL_TRI(475, 473, 486),\n    COL_TRI(476, 473, 374),\n    COL_TRI(473, 475, 374),\n    COL_TRI(374, 475, 372),\n    COL_TRI(478, 477, 480),\n    COL_TRI(478, 451, 477),\n    COL_TRI(479, 477, 673),\n    COL_TRI(480, 477, 479),\n    COL_TRI(480, 479, 482),\n    COL_TRI(481, 479, 673),\n    COL_TRI(482, 479, 484),\n    COL_TRI(479, 481, 484),\n    COL_TRI(483, 481, 673),\n    COL_TRI(484, 481, 485),\n    COL_TRI(481, 483, 485),\n    COL_TRI(427, 483, 673),\n    COL_TRI(485, 483, 427),\n    COL_TRI(485, 427, 428),\n    COL_TRI(398, 414, 412),\n    COL_TRI(414, 486, 412),\n    COL_TRI(486, 414, 452),\n    COL_TRI(487, 453, 663),\n    COL_TRI(487, 663, 661),\n    COL_TRI(488, 627, 489),\n    COL_TRI(489, 597, 490),\n    COL_TRI(489, 627, 597),\n    COL_TRI(493, 494, 495),\n    COL_TRI(490, 597, 595),\n    COL_TRI(490, 595, 491),\n    COL_TRI(488, 555, 627),\n    COL_TRI(491, 595, 629),\n    COL_TRI(491, 629, 492),\n    COL_TRI(492, 629, 631),\n    COL_TRI(492, 631, 493),\n    COL_TRI(493, 631, 494),\n    COL_TRI(501, 637, 502),\n    COL_TRI(494, 633, 496),\n    COL_TRI(495, 494, 496),\n    COL_TRI(496, 498, 497),\n    COL_TRI(496, 633, 498),\n    COL_TRI(497, 498, 499),\n    COL_TRI(498, 575, 499),\n    COL_TRI(499, 635, 500),\n    COL_TRI(499, 575, 635),\n    COL_TRI(500, 635, 637),\n    COL_TRI(500, 637, 501),\n    COL_TRI(507, 643, 508),\n    COL_TRI(501, 502, 503),\n    COL_TRI(502, 640, 504),\n    COL_TRI(503, 502, 504),\n    COL_TRI(504, 641, 505),\n    COL_TRI(504, 640, 641),\n    COL_TRI(505, 641, 609),\n    COL_TRI(505, 609, 506),\n    COL_TRI(506, 609, 582),\n    COL_TRI(506, 582, 507),\n    COL_TRI(507, 582, 643),\n    COL_TRI(514, 537, 540),\n    COL_TRI(508, 643, 510),\n    COL_TRI(508, 510, 509),\n    COL_TRI(509, 510, 511),\n    COL_TRI(510, 646, 511),\n    COL_TRI(511, 648, 512),\n    COL_TRI(511, 646, 648),\n    COL_TRI(512, 648, 539),\n    COL_TRI(512, 539, 513),\n    COL_TRI(513, 539, 537),\n    COL_TRI(513, 537, 514),\n    COL_TRI(519, 657, 520),\n    COL_TRI(514, 540, 515),\n    COL_TRI(515, 540, 650),\n    COL_TRI(515, 650, 516),\n    COL_TRI(516, 650, 652),\n    COL_TRI(516, 652, 517),\n    COL_TRI(517, 652, 654),\n    COL_TRI(517, 654, 518),\n    COL_TRI(518, 654, 656),\n    COL_TRI(518, 656, 519),\n    COL_TRI(519, 656, 657),\n    COL_TRI(526, 625, 626),\n    COL_TRI(520, 657, 594),\n    COL_TRI(520, 594, 521),\n    COL_TRI(521, 594, 523),\n    COL_TRI(521, 523, 522),\n    COL_TRI(522, 523, 524),\n    COL_TRI(523, 623, 524),\n    COL_TRI(524, 624, 525),\n    COL_TRI(524, 623, 624),\n    COL_TRI(525, 624, 625),\n    COL_TRI(525, 625, 526),\n    COL_TRI(534, 551, 552),\n    COL_TRI(526, 626, 527),\n    COL_TRI(527, 626, 529),\n    COL_TRI(527, 529, 528),\n    COL_TRI(528, 529, 530),\n    COL_TRI(529, 531, 530),\n    COL_TRI(530, 531, 532),\n    COL_TRI(531, 533, 532),\n    COL_TRI(532, 533, 534),\n    COL_TRI(533, 551, 534),\n    COL_TRI(534, 552, 535),\n    COL_TRI(535, 552, 555),\n    COL_TRI(535, 555, 488),\n    COL_TRI(536, 538, 540),\n    COL_TRI(537, 536, 540),\n    COL_TRI(536, 647, 658),\n    COL_TRI(538, 536, 658),\n    COL_TRI(539, 647, 536),\n    COL_TRI(539, 536, 537),\n    COL_TRI(538, 620, 618),\n    COL_TRI(538, 658, 620),\n    COL_TRI(538, 618, 677),\n    COL_TRI(540, 538, 677),\n    COL_TRI(547, 543, 546),\n    COL_TRI(540, 677, 617),\n    COL_TRI(540, 617, 650),\n    COL_TRI(541, 543, 678),\n    COL_TRI(542, 541, 678),\n    COL_TRI(541, 659, 679),\n    COL_TRI(543, 541, 679),\n    COL_TRI(542, 659, 541),\n    COL_TRI(543, 545, 680),\n    COL_TRI(544, 678, 543),\n    COL_TRI(544, 543, 680),\n    COL_TRI(545, 543, 547),\n    COL_TRI(546, 543, 679),\n    COL_TRI(548, 550, 678),\n    COL_TRI(542, 678, 550),\n    COL_TRI(549, 548, 678),\n    COL_TRI(549, 678, 681),\n    COL_TRI(544, 681, 678),\n    COL_TRI(550, 605, 542),\n    COL_TRI(542, 605, 659),\n    COL_TRI(548, 683, 550),\n    COL_TRI(550, 683, 605),\n    COL_TRI(551, 553, 552),\n    COL_TRI(551, 556, 553),\n    COL_TRI(533, 556, 551),\n    COL_TRI(559, 558, 544),\n    COL_TRI(552, 553, 554),\n    COL_TRI(553, 556, 603),\n    COL_TRI(554, 553, 603),\n    COL_TRI(555, 552, 554),\n    COL_TRI(556, 684, 603),\n    COL_TRI(533, 684, 556),\n    COL_TRI(557, 554, 603),\n    COL_TRI(554, 557, 627),\n    COL_TRI(555, 554, 627),\n    COL_TRI(558, 559, 560),\n    COL_TRI(564, 560, 685),\n    COL_TRI(559, 544, 680),\n    COL_TRI(561, 558, 560),\n    COL_TRI(558, 561, 613),\n    COL_TRI(558, 613, 562),\n    COL_TRI(544, 558, 562),\n    COL_TRI(562, 681, 544),\n    COL_TRI(563, 561, 560),\n    COL_TRI(563, 560, 564),\n    COL_TRI(560, 559, 615),\n    COL_TRI(560, 615, 685),\n    COL_TRI(573, 567, 600),\n    COL_TRI(565, 561, 563),\n    COL_TRI(561, 614, 613),\n    COL_TRI(561, 565, 614),\n    COL_TRI(565, 563, 566),\n    COL_TRI(566, 563, 564),\n    COL_TRI(567, 565, 568),\n    COL_TRI(568, 565, 566),\n    COL_TRI(565, 567, 572),\n    COL_TRI(565, 572, 614),\n    COL_TRI(566, 570, 568),\n    COL_TRI(569, 566, 564),\n    COL_TRI(570, 566, 569),\n    COL_TRI(571, 567, 568),\n    COL_TRI(572, 567, 573),\n    COL_TRI(564, 578, 688),\n    COL_TRI(568, 570, 577),\n    COL_TRI(575, 568, 577),\n    COL_TRI(576, 571, 568),\n    COL_TRI(575, 576, 568),\n    COL_TRI(570, 569, 611),\n    COL_TRI(577, 570, 611),\n    COL_TRI(574, 567, 571),\n    COL_TRI(576, 574, 571),\n    COL_TRI(578, 687, 688),\n    COL_TRI(578, 580, 687),\n    COL_TRI(577, 585, 635),\n    COL_TRI(581, 688, 687),\n    COL_TRI(582, 581, 687),\n    COL_TRI(582, 687, 580),\n    COL_TRI(583, 564, 688),\n    COL_TRI(581, 583, 688),\n    COL_TRI(581, 584, 611),\n    COL_TRI(581, 611, 583),\n    COL_TRI(584, 581, 582),\n    COL_TRI(585, 577, 611),\n    COL_TRI(575, 577, 635),\n    COL_TRI(590, 591, 547),\n    COL_TRI(586, 576, 575),\n    COL_TRI(498, 586, 575),\n    COL_TRI(576, 586, 574),\n    COL_TRI(587, 591, 590),\n    COL_TRI(588, 591, 587),\n    COL_TRI(523, 588, 587),\n    COL_TRI(589, 523, 587),\n    COL_TRI(590, 589, 587),\n    COL_TRI(588, 689, 591),\n    COL_TRI(591, 689, 690),\n    COL_TRI(592, 591, 690),\n    COL_TRI(591, 592, 547),\n    COL_TRI(590, 546, 682),\n    COL_TRI(590, 682, 621),\n    COL_TRI(589, 590, 621),\n    COL_TRI(590, 547, 546),\n    COL_TRI(588, 593, 689),\n    COL_TRI(593, 588, 523),\n    COL_TRI(594, 593, 523),\n    COL_TRI(523, 589, 623),\n    COL_TRI(589, 621, 622),\n    COL_TRI(589, 622, 623),\n    COL_TRI(603, 548, 602),\n    COL_TRI(595, 599, 598),\n    COL_TRI(595, 598, 686),\n    COL_TRI(595, 601, 629),\n    COL_TRI(596, 599, 595),\n    COL_TRI(597, 596, 595),\n    COL_TRI(595, 686, 601),\n    COL_TRI(598, 599, 602),\n    COL_TRI(599, 596, 603),\n    COL_TRI(599, 603, 602),\n    COL_TRI(600, 686, 598),\n    COL_TRI(600, 598, 602),\n    COL_TRI(574, 686, 600),\n    COL_TRI(601, 686, 574),\n    COL_TRI(602, 604, 600),\n    COL_TRI(602, 548, 549),\n    COL_TRI(602, 549, 604),\n    COL_TRI(605, 621, 659),\n    COL_TRI(604, 573, 600),\n    COL_TRI(574, 600, 567),\n    COL_TRI(603, 683, 548),\n    COL_TRI(605, 683, 606),\n    COL_TRI(603, 606, 683),\n    COL_TRI(606, 531, 605),\n    COL_TRI(531, 608, 605),\n    COL_TRI(605, 608, 621),\n    COL_TRI(603, 684, 606),\n    COL_TRI(531, 606, 533),\n    COL_TRI(606, 684, 533),\n    COL_TRI(607, 608, 531),\n    COL_TRI(529, 607, 531),\n    COL_TRI(608, 607, 621),\n    COL_TRI(609, 584, 582),\n    COL_TRI(582, 580, 643),\n    COL_TRI(610, 580, 658),\n    COL_TRI(580, 578, 658),\n    COL_TRI(580, 610, 643),\n    COL_TRI(569, 564, 583),\n    COL_TRI(564, 579, 578),\n    COL_TRI(579, 564, 685),\n    COL_TRI(611, 569, 583),\n    COL_TRI(612, 549, 681),\n    COL_TRI(612, 604, 549),\n    COL_TRI(579, 658, 578),\n    COL_TRI(592, 545, 547),\n    COL_TRI(545, 592, 559),\n    COL_TRI(545, 559, 680),\n    COL_TRI(612, 573, 604),\n    COL_TRI(613, 612, 562),\n    COL_TRI(612, 681, 562),\n    COL_TRI(612, 572, 573),\n    COL_TRI(572, 612, 614),\n    COL_TRI(614, 612, 613),\n    COL_TRI(617, 619, 650),\n    COL_TRI(615, 592, 690),\n    COL_TRI(559, 592, 615),\n    COL_TRI(546, 679, 682),\n    COL_TRI(616, 615, 690),\n    COL_TRI(616, 690, 689),\n    COL_TRI(617, 616, 689),\n    COL_TRI(618, 616, 677),\n    COL_TRI(616, 617, 677),\n    COL_TRI(616, 618, 615),\n    COL_TRI(619, 617, 689),\n    COL_TRI(625, 692, 693),\n    COL_TRI(620, 615, 618),\n    COL_TRI(579, 685, 615),\n    COL_TRI(579, 615, 620),\n    COL_TRI(621, 691, 622),\n    COL_TRI(622, 691, 624),\n    COL_TRI(623, 622, 624),\n    COL_TRI(621, 692, 691),\n    COL_TRI(624, 691, 692),\n    COL_TRI(624, 692, 625),\n    COL_TRI(621, 693, 692),\n    COL_TRI(601, 628, 631),\n    COL_TRI(625, 693, 626),\n    COL_TRI(621, 607, 693),\n    COL_TRI(626, 693, 607),\n    COL_TRI(626, 607, 529),\n    COL_TRI(596, 557, 603),\n    COL_TRI(557, 596, 597),\n    COL_TRI(627, 557, 597),\n    COL_TRI(628, 601, 574),\n    COL_TRI(629, 601, 631),\n    COL_TRI(630, 628, 574),\n    COL_TRI(631, 628, 630),\n    COL_TRI(631, 630, 494),\n    COL_TRI(632, 630, 574),\n    COL_TRI(630, 632, 633),\n    COL_TRI(494, 630, 633),\n    COL_TRI(586, 632, 574),\n    COL_TRI(633, 632, 586),\n    COL_TRI(633, 586, 498),\n    COL_TRI(634, 585, 611),\n    COL_TRI(635, 585, 634),\n    COL_TRI(635, 634, 637),\n    COL_TRI(636, 634, 611),\n    COL_TRI(634, 636, 502),\n    COL_TRI(637, 634, 502),\n    COL_TRI(638, 636, 611),\n    COL_TRI(502, 636, 638),\n    COL_TRI(502, 638, 640),\n    COL_TRI(639, 638, 611),\n    COL_TRI(638, 639, 641),\n    COL_TRI(640, 638, 641),\n    COL_TRI(584, 639, 611),\n    COL_TRI(641, 639, 584),\n    COL_TRI(641, 584, 609),\n    COL_TRI(642, 610, 658),\n    COL_TRI(650, 619, 649),\n    COL_TRI(643, 642, 510),\n    COL_TRI(643, 610, 642),\n    COL_TRI(644, 642, 658),\n    COL_TRI(642, 644, 646),\n    COL_TRI(510, 642, 646),\n    COL_TRI(645, 644, 658),\n    COL_TRI(646, 644, 645),\n    COL_TRI(646, 645, 648),\n    COL_TRI(647, 645, 658),\n    COL_TRI(648, 645, 539),\n    COL_TRI(645, 647, 539),\n    COL_TRI(649, 619, 689),\n    COL_TRI(650, 649, 652),\n    COL_TRI(651, 649, 689),\n    COL_TRI(652, 649, 651),\n    COL_TRI(652, 651, 654),\n    COL_TRI(653, 651, 689),\n    COL_TRI(651, 653, 656),\n    COL_TRI(654, 651, 656),\n    COL_TRI(655, 653, 689),\n    COL_TRI(656, 653, 657),\n    COL_TRI(653, 655, 657),\n    COL_TRI(593, 655, 689),\n    COL_TRI(657, 655, 593),\n    COL_TRI(657, 593, 594),\n    COL_TRI(658, 579, 620),\n    COL_TRI(659, 621, 682),\n    COL_TRI(659, 682, 679),\n    COL_TRI_INIT(SURFACE_HARD_NOT_SLIPPERY, 24),\n    COL_TRI(278, 279, 280),\n    COL_TRI(266, 267, 268),\n    COL_TRI(266, 269, 267),\n    COL_TRI(270, 269, 266),\n    COL_TRI(266, 268, 271),\n    COL_TRI(271, 268, 272),\n    COL_TRI(272, 273, 271),\n    COL_TRI(270, 274, 269),\n    COL_TRI(275, 270, 273),\n    COL_TRI(276, 274, 270),\n    COL_TRI(275, 276, 270),\n    COL_TRI(277, 275, 273),\n    COL_TRI(272, 277, 273),\n    COL_TRI(284, 288, 289),\n    COL_TRI(280, 279, 281),\n    COL_TRI(280, 282, 283),\n    COL_TRI(280, 281, 282),\n    COL_TRI(283, 282, 284),\n    COL_TRI(284, 289, 283),\n    COL_TRI(278, 285, 279),\n    COL_TRI(286, 278, 289),\n    COL_TRI(287, 285, 278),\n    COL_TRI(286, 287, 278),\n    COL_TRI(288, 286, 289),\n    COL_TRI_STOP(),\n    COL_SPECIAL_INIT(1),\n    SPECIAL_OBJECT_WITH_YAW(/*preset*/ special_null_start, /*pos*/ -67, 1669, -16, /*yaw*/ 192), // unused, probably an early way to set initial position\n    COL_END(),\n};\n"
  },
  {
    "path": "levels/wmotr/areas/1/geo.inc.c",
    "content": "// 0x0E0001F0\nconst GeoLayout wmotr_geo_0001F0[] = {\n    GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),\n    GEO_OPEN_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_NODE_ORTHO(100),\n            GEO_OPEN_NODE(),\n                GEO_BACKGROUND(BACKGROUND_BELOW_CLOUDS, geo_skybox_main),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(1),\n        GEO_OPEN_NODE(),\n            GEO_CAMERA_FRUSTUM_WITH_FUNC(45, 100, 20000, geo_camera_fov),\n            GEO_OPEN_NODE(),\n                GEO_CAMERA(16, 0, 2000, 6000, 0, 0, 0, geo_camera_main),\n                GEO_OPEN_NODE(),\n                    GEO_DISPLAY_LIST(LAYER_OPAQUE, wmotr_seg7_dl_0700C1F8),\n                    GEO_DISPLAY_LIST(LAYER_TRANSPARENT, wmotr_seg7_dl_0700EFD8),\n                    GEO_DISPLAY_LIST(LAYER_TRANSPARENT, wmotr_seg7_dl_07010608),\n                    GEO_RENDER_OBJ(),\n                    GEO_ASM(0, geo_envfx_main),\n                GEO_CLOSE_NODE(),\n            GEO_CLOSE_NODE(),\n        GEO_CLOSE_NODE(),\n        GEO_ZBUFFER(0),\n        GEO_OPEN_NODE(),\n            GEO_ASM(0, geo_cannon_circle_base),\n        GEO_CLOSE_NODE(),\n    GEO_CLOSE_NODE(),\n    GEO_END(),\n};\n"
  },
  {
    "path": "levels/wmotr/areas/1/macro.inc.c",
    "content": "// 0x070136A8 - 0x070137AE\nconst MacroObject wmotr_seg7_macro_objs[] = {\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_cannon_closed,               /*yaw*/   0, /*pos*/ -4456,   827,   191, /*bhvParam*/ 0x00),\n    MACRO_OBJECT_WITH_BHV_PARAM(/*preset*/ macro_cannon_closed,               /*yaw*/   0, /*pos*/  3712, -2740,  5200, /*bhvParam*/ 0x80),\n    MACRO_OBJECT               (/*preset*/ macro_bobomb_buddy_opens_cannon_1, /*yaw*/   0, /*pos*/  3684, -2712,  4660),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_horizontal_flying, /*yaw*/   0, /*pos*/ -3050,  2100, -4200),\n    MACRO_OBJECT               (/*preset*/ macro_box_1up,                     /*yaw*/   0, /*pos*/ -2744,  4899, -4439),\n    MACRO_OBJECT               (/*preset*/ macro_hidden_1up_in_pole,          /*yaw*/   0, /*pos*/  3995, -1850,  5478),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -2980,  3990, -4248),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  2735,  3140, -3085),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -3640,  4600, -4200),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  4400,   240,    80),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  3440, -2680,  5240),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/  -600, -1360,  5040),\n    MACRO_OBJECT               (/*preset*/ macro_box_wing_cap,                /*yaw*/   0, /*pos*/  -400,  1960,  -120),\n    MACRO_OBJECT               (/*preset*/ macro_box_wing_cap,                /*yaw*/   0, /*pos*/  -240, -1080,  4520),\n    MACRO_OBJECT               (/*preset*/ macro_box_wing_cap,                /*yaw*/   0, /*pos*/  3600, -2480,  5440),\n    MACRO_OBJECT               (/*preset*/ macro_box_wing_cap,                /*yaw*/   0, /*pos*/  3960,   520,   440),\n    MACRO_OBJECT               (/*preset*/ macro_box_wing_cap,                /*yaw*/   0, /*pos*/ -3200,  4880, -4040),\n    MACRO_OBJECT               (/*preset*/ macro_box_wing_cap,                /*yaw*/   0, /*pos*/ -2760,  2320, -4080),\n    MACRO_OBJECT               (/*preset*/ macro_1up,                         /*yaw*/   0, /*pos*/ -3630,  -430,  3180),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/   320,  1725,    40),\n    MACRO_OBJECT               (/*preset*/ macro_red_coin,                    /*yaw*/   0, /*pos*/ -2560,  4600, -4800),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_vertical_flying,   /*yaw*/   0, /*pos*/   -50,  2180,  1900),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_vertical_flying,   /*yaw*/  40, /*pos*/ -2850,  1550,  2280),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_vertical_flying,   /*yaw*/  85, /*pos*/  1710,  -650,  4850),\n    MACRO_OBJECT               (/*preset*/ macro_coin_ring_vertical_flying,   /*yaw*/   0, /*pos*/  2350,  2300,   240),\n    MACRO_OBJECT               (/*preset*/ macro_1up,                         /*yaw*/   0, /*pos*/ -3260,  3370, -3945),\n    MACRO_OBJECT_END(),\n};\n"
  },
  {
    "path": "levels/wmotr/areas/1/model.inc.c",
    "content": "// 0x07001800 - 0x07001818\nstatic const Lights1 wmotr_seg7_lights_07001800 = gdSPDefLights1(\n    0xbf, 0xbf, 0xbf,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x07001818 - 0x07001830\nstatic const Lights1 wmotr_seg7_lights_07001818 = gdSPDefLights1(\n    0x72, 0x72, 0x72,\n    0x99, 0x99, 0x99, 0x28, 0x28, 0x28\n);\n\n// 0x07001830 - 0x07001920\nstatic const Vtx wmotr_seg7_vertex_07001830[] = {\n    {{{ -3302,   3656,  -4488}, 0, {   223,   5076}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{ -3276,   4403,  -4488}, 0, {     0,  -2382}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{ -3276,   3656,  -4488}, 0, {     0,   5076}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{ -3276,   3656,  -4488}, 0, {   223,   5076}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{ -3276,   4403,  -4463}, 0, {     0,  -2382}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{ -3276,   3656,  -4463}, 0, {     0,   5076}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{ -3276,   4403,  -4488}, 0, {   223,  -2382}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{ -3276,   3656,  -4463}, 0, {   223,   5076}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{ -3302,   4403,  -4463}, 0, {     0,  -2382}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{ -3302,   3656,  -4463}, 0, {     0,   5076}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{ -3276,   4403,  -4463}, 0, {   223,  -2382}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{ -3302,   3656,  -4463}, 0, {   223,   5076}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{ -3302,   4403,  -4488}, 0, {     0,  -2382}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{ -3302,   3656,  -4488}, 0, {     0,   5076}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{ -3302,   4403,  -4463}, 0, {   223,  -2382}, {0xc8, 0x00, 0x71, 0xff}}},\n};\n\n// 0x07001920 - 0x07001A10\nstatic const Vtx wmotr_seg7_vertex_07001920[] = {\n    {{{ -2966,   4068,  -4234}, 0, {   223,   5076}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{ -2966,   4403,  -4234}, 0, {   223,   1734}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{ -2992,   4403,  -4234}, 0, {     0,   1734}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{ -3302,   3656,  -4488}, 0, {   223,   5076}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{ -3302,   4403,  -4488}, 0, {   223,  -2382}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{ -3276,   4403,  -4488}, 0, {     0,  -2382}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{ -3276,   3656,  -4463}, 0, {     0,  -3098}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{ -3302,   3656,  -4463}, 0, {   223,  -3098}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{ -3302,   3656,  -4488}, 0, {   223,  -3098}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{ -3276,   3656,  -4488}, 0, {     0,  -3098}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{ -2966,   4068,  -4259}, 0, {   223,   5076}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{ -2966,   4403,  -4234}, 0, {     0,   1734}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{ -2966,   4068,  -4234}, 0, {     0,   5076}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{ -2966,   4403,  -4259}, 0, {   223,   1734}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{ -2992,   4068,  -4234}, 0, {     0,   5076}, {0x99, 0xcd, 0x33, 0xff}}},\n};\n\n// 0x07001A10 - 0x07001B00\nstatic const Vtx wmotr_seg7_vertex_07001A10[] = {\n    {{{ -2625,   3174,  -4381}, 0, {   223,   5076}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{ -2625,   4403,  -4356}, 0, {     0,  -7186}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{ -2625,   3174,  -4356}, 0, {     0,   5076}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{ -2992,   4068,  -4234}, 0, {   223,   5076}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{ -2992,   4403,  -4259}, 0, {     0,   1734}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{ -2992,   4068,  -4259}, 0, {     0,   5076}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{ -2992,   4403,  -4234}, 0, {   223,   1734}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{ -2992,   4068,  -4259}, 0, {   223,   5076}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{ -2966,   4403,  -4259}, 0, {     0,   1734}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{ -2966,   4068,  -4259}, 0, {     0,   5076}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{ -2992,   4403,  -4259}, 0, {   223,   1734}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{ -2966,   4068,  -4234}, 0, {     0,  -3098}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{ -2992,   4068,  -4259}, 0, {   223,  -3098}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{ -2966,   4068,  -4259}, 0, {     0,  -3098}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{ -2992,   4068,  -4234}, 0, {   223,  -3098}, {0x99, 0xcd, 0x33, 0xff}}},\n};\n\n// 0x07001B00 - 0x07001BF0\nstatic const Vtx wmotr_seg7_vertex_07001B00[] = {\n    {{{ -2651,   3174,  -4381}, 0, {   223,   5076}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{ -2651,   4403,  -4381}, 0, {   223,  -7186}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{ -2625,   4403,  -4381}, 0, {     0,  -7186}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{ -2625,   3174,  -4381}, 0, {   223,   5076}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{ -2625,   4403,  -4381}, 0, {   223,  -7186}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{ -2625,   4403,  -4356}, 0, {     0,  -7186}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{ -2625,   3174,  -4356}, 0, {   223,   5076}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{ -2625,   4403,  -4356}, 0, {   223,  -7186}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{ -2651,   4403,  -4356}, 0, {     0,  -7186}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{ -2651,   3174,  -4356}, 0, {     0,   5076}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{ -2651,   3174,  -4356}, 0, {   223,   5076}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{ -2651,   4403,  -4381}, 0, {     0,  -7186}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{ -2651,   3174,  -4381}, 0, {     0,   5076}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{ -2651,   4403,  -4356}, 0, {   223,  -7186}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{ -2625,   3174,  -4381}, 0, {     0,   5076}, {0x67, 0xcd, 0xcd, 0xff}}},\n};\n\n// 0x07001BF0 - 0x07001CE0\nstatic const Vtx wmotr_seg7_vertex_07001BF0[] = {\n    {{{ -3271,   3379,  -3933}, 0, {   223,   5076}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{ -3271,   4403,  -3959}, 0, {     0,  -5142}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{ -3271,   3379,  -3959}, 0, {     0,   5076}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{ -2625,   3174,  -4356}, 0, {     0,  -7186}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{ -2651,   3174,  -4381}, 0, {   223,  -7186}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{ -2625,   3174,  -4381}, 0, {     0,  -7186}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{ -2651,   3174,  -4356}, 0, {   223,  -7186}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{ -3245,   3379,  -3959}, 0, {   223,   5076}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{ -3245,   4403,  -3959}, 0, {   223,  -5142}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{ -3245,   4403,  -3933}, 0, {     0,  -5142}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{ -3245,   3379,  -3933}, 0, {     0,   5076}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{ -3245,   3379,  -3933}, 0, {   223,   5076}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{ -3271,   4403,  -3933}, 0, {     0,  -5142}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{ -3271,   3379,  -3933}, 0, {     0,   5076}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{ -3245,   4403,  -3933}, 0, {   223,  -5142}, {0x71, 0x00, 0x38, 0xff}}},\n};\n\n// 0x07001CE0 - 0x07001DD0\nstatic const Vtx wmotr_seg7_vertex_07001CE0[] = {\n    {{{ -2898,   3584,  -3978}, 0, {   223,   5076}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{ -2898,   4403,  -3978}, 0, {   223,  -3098}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{ -2898,   4403,  -3953}, 0, {     0,  -3098}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{ -3271,   3379,  -3933}, 0, {   223,   5076}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{ -3271,   4403,  -3933}, 0, {   223,  -5142}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{ -3271,   4403,  -3959}, 0, {     0,  -5142}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{ -3271,   3379,  -3959}, 0, {   223,   5076}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{ -3245,   4403,  -3959}, 0, {     0,  -5142}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{ -3245,   3379,  -3959}, 0, {     0,   5076}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{ -3271,   4403,  -3959}, 0, {   223,  -5142}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{ -3245,   3379,  -3933}, 0, {     0,  -5142}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{ -3271,   3379,  -3933}, 0, {   223,  -5142}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{ -3271,   3379,  -3959}, 0, {   223,  -5142}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{ -3245,   3379,  -3959}, 0, {     0,  -5142}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{ -2898,   3584,  -3953}, 0, {     0,   5076}, {0x2a, 0xac, 0x54, 0xff}}},\n};\n\n// 0x07001DD0 - 0x07001EC0\nstatic const Vtx wmotr_seg7_vertex_07001DD0[] = {\n    {{{ -2898,   3584,  -3953}, 0, {     0,  -3098}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{ -2924,   3584,  -3978}, 0, {   223,  -3098}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{ -2898,   3584,  -3978}, 0, {     0,  -3098}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{ -2898,   3584,  -3953}, 0, {   223,   5076}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{ -2924,   4403,  -3953}, 0, {     0,  -3098}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{ -2924,   3584,  -3953}, 0, {     0,   5076}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{ -2898,   4403,  -3953}, 0, {   223,  -3098}, {0x71, 0x00, 0x38, 0xff}}},\n    {{{ -2924,   3584,  -3953}, 0, {   223,   5076}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{ -2924,   4403,  -3978}, 0, {     0,  -3098}, {0x8f, 0x00, 0xc8, 0xff}}},\n    {{{ -2924,   3584,  -3978}, 0, {     0,   5076}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{ -2924,   4403,  -3953}, 0, {   223,  -3098}, {0xc8, 0x00, 0x71, 0xff}}},\n    {{{ -2924,   3584,  -3978}, 0, {   223,   5076}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{ -2898,   4403,  -3978}, 0, {     0,  -3098}, {0x38, 0x00, 0x8f, 0xff}}},\n    {{{ -2898,   3584,  -3978}, 0, {     0,   5076}, {0x67, 0xcd, 0xcd, 0xff}}},\n    {{{ -2924,   4403,  -3978}, 0, {   223,  -3098}, {0x8f, 0x00, 0xc8, 0xff}}},\n};\n\n// 0x07001EC0 - 0x07001FB0\nstatic const Vtx wmotr_seg7_vertex_07001EC0[] = {\n    {{{  3983,  -2738,   5490}, 0, {   223,   5076}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  3983,  -1919,   5490}, 0, {   223,  -3098}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  3983,  -1919,   5465}, 0, {     0,  -3098}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{ -2898,   3584,  -3953}, 0, {     0,  -3098}, {0x2a, 0xac, 0x54, 0xff}}},\n    {{{ -2924,   3584,  -3953}, 0, {   223,  -3098}, {0x99, 0xcd, 0x33, 0xff}}},\n    {{{ -2924,   3584,  -3978}, 0, {   223,  -3098}, {0xd6, 0xac, 0xac, 0xff}}},\n    {{{  4009,  -2738,   5465}, 0, {   223,   5076}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  4009,  -1919,   5490}, 0, {     0,  -3098}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{  4009,  -2738,   5490}, 0, {     0,   5076}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  4009,  -1919,   5465}, 0, {   223,  -3098}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{  4009,  -2738,   5490}, 0, {   223,   5076}, {0x38, 0x00, 0x71, 0xff}}},\n    {{{  4009,  -1919,   5490}, 0, {   223,  -3098}, {0x67, 0x33, 0x33, 0xff}}},\n    {{{  3983,  -1919,   5490}, 0, {     0,  -3098}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  3983,  -2738,   5490}, 0, {     0,   5076}, {0x8f, 0x00, 0x38, 0xff}}},\n    {{{  3983,  -2738,   5465}, 0, {     0,   5076}, {0xc8, 0x00, 0x8f, 0xff}}},\n};\n\n// 0x07001FB0 - 0x07002010\nstatic const Vtx wmotr_seg7_vertex_07001FB0[] = {\n    {{{  3983,  -2738,   5465}, 0, {   223,   5076}, {0xc8, 0x00, 0x8f, 0xff}}},\n    {{{  4009,  -1919,   5465}, 0, {     0,  -3098}, {0x2a, 0x54, 0xac, 0xff}}},\n    {{{  4009,  -2738,   5465}, 0, {     0,   5076}, {0x71, 0x00, 0xc8, 0xff}}},\n    {{{  3983,  -1919,   5465}, 0, {   223,  -3098}, {0x99, 0x33, 0xcd, 0xff}}},\n    {{{  3983,  -1919,   5490}, 0, {   223,  -3098}, {0xd6, 0x54, 0x54, 0xff}}},\n    {{{  4009,  -1919,   5490}, 0, {     0,  -3098}, {0x67, 0x33, 0x33, 0xff}}},\n};\n\n// 0x07002010 - 0x07002100\nstatic const Vtx wmotr_seg7_vertex_07002010[] = {\n    {{{ -3941,    824,    -65}, 0, {  -122,      0}, {0x4a, 0x5c, 0xd5, 0xff}}},\n    {{{ -3941,    671,    -65}, 0, {  -122,    479}, {0x74, 0xdd, 0xdc, 0xff}}},\n    {{{ -4197,    671,   -321}, 0, {  1082,    479}, {0x2f, 0xe3, 0x8e, 0xff}}},\n    {{{ -4965,    824,    446}, 0, {  -122,      0}, {0xa7, 0x49, 0x34, 0xff}}},\n    {{{ -4709,    671,    702}, 0, {  1080,    479}, {0xd1, 0xe3, 0x72, 0xff}}},\n    {{{ -4709,    824,    702}, 0, {  1080,      0}, {0xe7, 0x6c, 0x3d, 0xff}}},\n    {{{ -4965,    671,    446}, 0, {  -122,    479}, {0x8c, 0xdd, 0x24, 0xff}}},\n    {{{ -4709,    824,   -321}, 0, {  -122,      0}, {0xdb, 0x50, 0xa5, 0xff}}},\n    {{{ -4965,    671,    -65}, 0, {  1080,    479}, {0x94, 0xdd, 0xc8, 0xff}}},\n    {{{ -4965,    824,    -65}, 0, {  1080,      0}, {0xad, 0x5c, 0xeb, 0xff}}},\n    {{{ -4709,    671,   -321}, 0, {  -122,    479}, {0xd3, 0xd4, 0x93, 0xff}}},\n    {{{ -4197,    824,    702}, 0, {  -122,      0}, {0x2a, 0x3c, 0x67, 0xff}}},\n    {{{ -4197,    671,    702}, 0, {  -122,    479}, {0x2d, 0xd4, 0x6d, 0xff}}},\n    {{{ -3941,    671,    446}, 0, {  1080,    479}, {0x6c, 0xdd, 0x38, 0xff}}},\n    {{{ -3941,    824,    446}, 0, {  1080,      0}, {0x63, 0x49, 0x1a, 0xff}}},\n};\n\n// 0x07002100 - 0x070021F0\nstatic const Vtx wmotr_seg7_vertex_07002100[] = {\n    {{{ -3941,    824,    446}, 0, {  -124,      0}, {0x63, 0x49, 0x1a, 0xff}}},\n    {{{ -3941,    671,    446}, 0, {  -124,    479}, {0x6c, 0xdd, 0x38, 0xff}}},\n    {{{ -3941,    671,    -65}, 0, {  1578,    479}, {0x74, 0xdd, 0xdc, 0xff}}},\n    {{{ -3941,    824,    -65}, 0, {  -122,      0}, {0x4a, 0x5c, 0xd5, 0xff}}},\n    {{{ -4197,    671,   -321}, 0, {  1082,    479}, {0x2f, 0xe3, 0x8e, 0xff}}},\n    {{{ -4197,    824,   -321}, 0, {  1082,      0}, {0x20, 0x5d, 0xb1, 0xff}}},\n    {{{ -4709,    824,   -321}, 0, {  1582,      0}, {0xdb, 0x50, 0xa5, 0xff}}},\n    {{{ -4197,    671,   -321}, 0, {  -120,    479}, {0x2f, 0xe3, 0x8e, 0xff}}},\n    {{{ -4709,    671,   -321}, 0, {  1582,    479}, {0xd3, 0xd4, 0x93, 0xff}}},\n    {{{ -4197,    824,   -321}, 0, {  -120,      0}, {0x20, 0x5d, 0xb1, 0xff}}},\n    {{{ -4197,    824,    702}, 0, {  1584,      0}, {0x2a, 0x3c, 0x67, 0xff}}},\n    {{{ -4709,    671,    702}, 0, {  -118,    479}, {0xd1, 0xe3, 0x72, 0xff}}},\n    {{{ -4197,    671,    702}, 0, {  1584,    479}, {0x2d, 0xd4, 0x6d, 0xff}}},\n    {{{ -4709,    824,    702}, 0, {  -118,      0}, {0xe7, 0x6c, 0x3d, 0xff}}},\n    {{{ -3941,    824,    -65}, 0, {  1578,      0}, {0x4a, 0x5c, 0xd5, 0xff}}},\n};\n\n// 0x070021F0 - 0x070022E0\nstatic const Vtx wmotr_seg7_vertex_070021F0[] = {\n    {{{  4170,  -2738,   6121}, 0, {  -594,      0}, {0x2a, 0x3c, 0x67, 0xff}}},\n    {{{  4631,  -2891,   5660}, 0, {  1572,    479}, {0x67, 0xcf, 0x37, 0xff}}},\n    {{{  4631,  -2738,   5660}, 0, {  1572,      0}, {0x63, 0x49, 0x1a, 0xff}}},\n    {{{ -4965,    671,    446}, 0, {  1586,    479}, {0x8c, 0xdd, 0x24, 0xff}}},\n    {{{ -4965,    824,    -65}, 0, {  -116,      0}, {0xad, 0x5c, 0xeb, 0xff}}},\n    {{{ -4965,    671,    -65}, 0, {  -116,    479}, {0x94, 0xdd, 0xc8, 0xff}}},\n    {{{ -4965,    824,    446}, 0, {  1586,      0}, {0xa7, 0x49, 0x34, 0xff}}},\n    {{{  2787,  -2738,   5660}, 0, {  -604,      0}, {0xa7, 0x49, 0x34, 0xff}}},\n    {{{  3248,  -2891,   6121}, 0, {  1562,    479}, {0xd3, 0xd7, 0x6f, 0xff}}},\n    {{{  3248,  -2738,   6121}, 0, {  1562,      0}, {0xe7, 0x6c, 0x3d, 0xff}}},\n    {{{  2787,  -2891,   5660}, 0, {  -604,    479}, {0x91, 0xcf, 0x21, 0xff}}},\n    {{{  3248,  -2738,   4278}, 0, {  -602,      0}, {0xdb, 0x50, 0xa5, 0xff}}},\n    {{{  2787,  -2891,   4739}, 0, {  1564,    479}, {0x99, 0xcf, 0xc9, 0xff}}},\n    {{{  2787,  -2738,   4739}, 0, {  1564,      0}, {0xad, 0x5c, 0xeb, 0xff}}},\n    {{{  3248,  -2891,   4278}, 0, {  -602,    479}, {0xd6, 0xc2, 0x9a, 0xff}}},\n};\n\n// 0x070022E0 - 0x070023D0\nstatic const Vtx wmotr_seg7_vertex_070022E0[] = {\n    {{{  4170,  -2738,   6121}, 0, {  2014,      0}, {0x2a, 0x3c, 0x67, 0xff}}},\n    {{{  3248,  -2738,   6121}, 0, { -1050,      0}, {0xe7, 0x6c, 0x3d, 0xff}}},\n    {{{  3248,  -2891,   6121}, 0, { -1050,    479}, {0xd3, 0xd7, 0x6f, 0xff}}},\n    {{{  4170,  -2738,   6121}, 0, {  -594,      0}, {0x2a, 0x3c, 0x67, 0xff}}},\n    {{{  4170,  -2891,   6121}, 0, {  -594,    479}, {0x2a, 0xc2, 0x66, 0xff}}},\n    {{{  4631,  -2891,   5660}, 0, {  1572,    479}, {0x67, 0xcf, 0x37, 0xff}}},\n    {{{  4631,  -2738,   4739}, 0, {  -598,      0}, {0x4a, 0x5c, 0xd5, 0xff}}},\n    {{{  4631,  -2891,   4739}, 0, {  -598,    479}, {0x6f, 0xcf, 0xdf, 0xff}}},\n    {{{  4170,  -2891,   4278}, 0, {  1568,    479}, {0x2d, 0xd7, 0x91, 0xff}}},\n    {{{  4170,  -2738,   4278}, 0, {  1568,      0}, {0x20, 0x5d, 0xb1, 0xff}}},\n    {{{  3248,  -2738,   4278}, 0, {  2012,      0}, {0xdb, 0x50, 0xa5, 0xff}}},\n    {{{  4170,  -2891,   4278}, 0, { -1052,    479}, {0x2d, 0xd7, 0x91, 0xff}}},\n    {{{  3248,  -2891,   4278}, 0, {  2012,    479}, {0xd6, 0xc2, 0x9a, 0xff}}},\n    {{{  4170,  -2738,   4278}, 0, { -1052,      0}, {0x20, 0x5d, 0xb1, 0xff}}},\n    {{{  4170,  -2891,   6121}, 0, {  2014,    479}, {0x2a, 0xc2, 0x66, 0xff}}},\n};\n\n// 0x070023D0 - 0x07002450\nstatic const Vtx wmotr_seg7_vertex_070023D0[] = {\n    {{{  4631,  -2738,   5660}, 0, { -1052,      0}, {0x63, 0x49, 0x1a, 0xff}}},\n    {{{  4631,  -2891,   5660}, 0, { -1052,    479}, {0x67, 0xcf, 0x37, 0xff}}},\n    {{{  4631,  -2891,   4739}, 0, {  2012,    479}, {0x6f, 0xcf, 0xdf, 0xff}}},\n    {{{  4631,  -2738,   4739}, 0, {  2012,      0}, {0x4a, 0x5c, 0xd5, 0xff}}},\n    {{{  2787,  -2891,   5660}, 0, {  2020,    479}, {0x91, 0xcf, 0x21, 0xff}}},\n    {{{  2787,  -2738,   4739}, 0, { -1044,      0}, {0xad, 0x5c, 0xeb, 0xff}}},\n    {{{  2787,  -2891,   4739}, 0, { -1044,    479}, {0x99, 0xcf, 0xc9, 0xff}}},\n    {{{  2787,  -2738,   5660}, 0, {  2020,      0}, {0xa7, 0x49, 0x34, 0xff}}},\n};\n\n// 0x07002450 - 0x07002540\nstatic const Vtx wmotr_seg7_vertex_07002450[] = {\n    {{{ -4350,    824,     88}, 0, {   650,    308}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -4555,    312,     88}, 0, {     0,   2010}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{ -4350,    312,     88}, 0, {   650,   2010}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -4350,    824,     88}, 0, {     0,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -4350,    312,     88}, 0, {     0,   1670}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -4350,    312,    293}, 0, {   650,   1670}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{ -4350,    824,    293}, 0, {   650,      0}, {0xe8, 0x7a, 0xe8, 0xff}}},\n    {{{ -4555,    824,    293}, 0, {   308,    308}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{ -4555,    312,    293}, 0, {   308,   2010}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{ -4555,    312,     88}, 0, {   990,   2010}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{ -4555,    824,     88}, 0, {   990,    308}, {0x26, 0x72, 0x26, 0xff}}},\n    {{{ -4555,    824,    293}, 0, {   650,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{ -4350,    824,    293}, 0, {     0,      0}, {0xe8, 0x7a, 0xe8, 0xff}}},\n    {{{ -4350,    312,    293}, 0, {     0,   1670}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{ -4555,    312,    293}, 0, {   650,   1670}, {0x33, 0x67, 0xcd, 0xff}}},\n};\n\n// 0x07002540 - 0x07002630\nstatic const Vtx wmotr_seg7_vertex_07002540[] = {\n    {{{  3607,  -2738,   5302}, 0, {   650,      0}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  3811,  -3250,   5302}, 0, {     0,   1670}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  3607,  -3250,   5302}, 0, {   650,   1670}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{ -4350,    824,     88}, 0, {   650,    308}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -4555,    824,     88}, 0, {     0,    308}, {0x26, 0x72, 0x26, 0xff}}},\n    {{{ -4555,    312,     88}, 0, {     0,   2010}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  3811,  -2738,   5097}, 0, {     0,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  3811,  -3250,   5097}, 0, {     0,   1670}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  3811,  -3250,   5302}, 0, {   650,   1670}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  3811,  -2738,   5302}, 0, {   650,      0}, {0xe8, 0x7a, 0xe8, 0xff}}},\n    {{{  3607,  -2738,   5302}, 0, {   308,    308}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  3607,  -3250,   5302}, 0, {   308,   2010}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  3607,  -3250,   5097}, 0, {   990,   2010}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  3607,  -2738,   5097}, 0, {   990,    308}, {0x26, 0x72, 0x26, 0xff}}},\n    {{{  3811,  -2738,   5302}, 0, {     0,      0}, {0xe8, 0x7a, 0xe8, 0xff}}},\n};\n\n// 0x07002630 - 0x07002670\nstatic const Vtx wmotr_seg7_vertex_07002630[] = {\n    {{{  3811,  -2738,   5097}, 0, {   650,    308}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  3607,  -2738,   5097}, 0, {     0,    308}, {0x26, 0x72, 0x26, 0xff}}},\n    {{{  3607,  -3250,   5097}, 0, {     0,   2010}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  3811,  -3250,   5097}, 0, {   650,   2010}, {0xcd, 0x67, 0x33, 0xff}}},\n};\n\n// 0x07002670 - 0x07002770\nstatic const Vtx wmotr_seg7_vertex_07002670[] = {\n    {{{ -4350,    824,    293}, 0, {   990,    376}, {0xe8, 0x7a, 0xe8, 0xff}}},\n    {{{ -3941,    824,    446}, 0, {  1808,    684}, {0x63, 0x49, 0x1a, 0xff}}},\n    {{{ -3941,    824,    -65}, 0, {  1808,   -338}, {0x4a, 0x5c, 0xd5, 0xff}}},\n    {{{ -4555,    312,    293}, 0, {   582,    376}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{ -4350,    312,    293}, 0, {   990,    376}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{ -4350,    312,     88}, 0, {   990,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -4555,    312,     88}, 0, {   582,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{ -4350,    824,     88}, 0, {   990,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{ -4197,    824,   -321}, 0, {  1296,   -850}, {0x20, 0x5d, 0xb1, 0xff}}},\n    {{{ -4709,    824,   -321}, 0, {   274,   -850}, {0xdb, 0x50, 0xa5, 0xff}}},\n    {{{ -4555,    824,     88}, 0, {   582,      0}, {0x26, 0x72, 0x26, 0xff}}},\n    {{{ -4965,    824,    -65}, 0, {  -234,   -338}, {0xad, 0x5c, 0xeb, 0xff}}},\n    {{{ -4555,    824,    293}, 0, {   582,    376}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{ -4709,    824,    702}, 0, {   274,   1192}, {0xe7, 0x6c, 0x3d, 0xff}}},\n    {{{ -4197,    824,    702}, 0, {  1296,   1192}, {0x2a, 0x3c, 0x67, 0xff}}},\n    {{{ -4965,    824,    446}, 0, {  -234,    684}, {0xa7, 0x49, 0x34, 0xff}}},\n};\n\n// 0x07002770 - 0x07002870\nstatic const Vtx wmotr_seg7_vertex_07002770[] = {\n    {{{  3607,  -3250,   5302}, 0, {   582,    376}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  3811,  -3250,   5302}, 0, {   990,    376}, {0xac, 0x2a, 0xac, 0xff}}},\n    {{{  3811,  -3250,   5097}, 0, {   990,      0}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  3607,  -3250,   5097}, 0, {   582,      0}, {0x54, 0x2a, 0x54, 0xff}}},\n    {{{  3811,  -2738,   5097}, 0, {   376,   -134}, {0xcd, 0x67, 0x33, 0xff}}},\n    {{{  3248,  -2738,   4278}, 0, {  -746,  -1770}, {0xdb, 0x50, 0xa5, 0xff}}},\n    {{{  3607,  -2738,   5097}, 0, {     0,   -134}, {0x26, 0x72, 0x26, 0xff}}},\n    {{{  2787,  -2738,   4739}, 0, { -1666,   -850}, {0xad, 0x5c, 0xeb, 0xff}}},\n    {{{  2787,  -2738,   5660}, 0, { -1666,    990}, {0xa7, 0x49, 0x34, 0xff}}},\n    {{{  3607,  -2738,   5302}, 0, {     0,    274}, {0x33, 0x67, 0xcd, 0xff}}},\n    {{{  4631,  -2738,   4739}, 0, {  2012,   -850}, {0x4a, 0x5c, 0xd5, 0xff}}},\n    {{{  4170,  -2738,   4278}, 0, {  1092,  -1770}, {0x20, 0x5d, 0xb1, 0xff}}},\n    {{{  3811,  -2738,   5302}, 0, {   376,    274}, {0xe8, 0x7a, 0xe8, 0xff}}},\n    {{{  4631,  -2738,   5660}, 0, {  2012,    990}, {0x63, 0x49, 0x1a, 0xff}}},\n    {{{  3248,  -2738,   6121}, 0, {  -746,   1908}, {0xe7, 0x6c, 0x3d, 0xff}}},\n    {{{  4170,  -2738,   6121}, 0, {  1092,   1908}, {0x2a, 0x3c, 0x67, 0xff}}},\n};\n\n// 0x07002870 - 0x07002970\nstatic const Vtx wmotr_seg7_vertex_07002870[] = {\n    {{{ -4197,    671,   -321}, 0, {  1502,  -1394}, {0x2f, 0xe3, 0x8e, 0xff}}},\n    {{{ -3941,    671,    -65}, 0, {  2352,   -544}, {0x74, 0xdd, 0xdc, 0xff}}},\n    {{{ -4453,      5,    190}, 0, {   650,    308}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{ -4709,    671,   -321}, 0, {  -200,  -1394}, {0xd3, 0xd4, 0x93, 0xff}}},\n    {{{ -3941,    671,    446}, 0, {  2352,   1158}, {0x6c, 0xdd, 0x38, 0xff}}},\n    {{{ -4197,    671,    702}, 0, {  1502,   2010}, {0x2d, 0xd4, 0x6d, 0xff}}},\n    {{{ -4709,    671,    702}, 0, {  -200,   2010}, {0xd1, 0xe3, 0x72, 0xff}}},\n    {{{ -4965,    671,    446}, 0, { -1052,   1158}, {0x8c, 0xdd, 0x24, 0xff}}},\n    {{{ -4965,    671,    -65}, 0, { -1052,   -544}, {0x94, 0xdd, 0xc8, 0xff}}},\n    {{{  3248,  -2891,   4278}, 0, {  -200,  -1394}, {0xd6, 0xc2, 0x9a, 0xff}}},\n    {{{  4170,  -2891,   4278}, 0, {  1502,  -1394}, {0x2d, 0xd7, 0x91, 0xff}}},\n    {{{  3709,  -3557,   5200}, 0, {   650,    308}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{  4631,  -2891,   4739}, 0, {  2352,   -544}, {0x6f, 0xcf, 0xdf, 0xff}}},\n    {{{  4631,  -2891,   5660}, 0, {  2352,   1158}, {0x67, 0xcf, 0x37, 0xff}}},\n    {{{  3248,  -2891,   6121}, 0, {  -200,   2010}, {0xd3, 0xd7, 0x6f, 0xff}}},\n    {{{  2787,  -2891,   5660}, 0, { -1052,   1158}, {0x91, 0xcf, 0x21, 0xff}}},\n};\n\n// 0x07002970 - 0x07002A50\nstatic const Vtx wmotr_seg7_vertex_07002970[] = {\n    {{{  3709,  -3557,   5200}, 0, {   650,    308}, {0x00, 0x82, 0x00, 0xff}}},\n    {{{  2787,  -2891,   5660}, 0, { -1052,   1158}, {0x91, 0xcf, 0x21, 0xff}}},\n    {{{  2787,  -2891,   4739}, 0, { -1052,   -544}, {0x99, 0xcf, 0xc9, 0xff}}},\n    {{{  3248,  -2891,   4278}, 0, {  -200,  -1394}, {0xd6, 0xc2, 0x9a, 0xff}}},\n    {{{  4170,  -2891,   6121}, 0, {  1502,   2010}, {0x2a, 0xc2, 0x66, 0xff}}},\n    {{{  3248,  -2891,   6121}, 0, {  -200,   2010}, {0xd3, 0xd7, 0x6f, 0xff}}},\n    {{{  4631,  -2891,   5660}, 0, {  2352,   1158}, {0x67, 0xcf, 0x37, 0xff}}},\n    {{{ -2690,   1889,  -3915}, 0, {   496,    618}, {0x56, 0xdd, 0x56, 0xff}}},\n    {{{ -2708,   1843,  -3938}, 0, {   460,    572}, {0x38, 0x98, 0x2e, 0xff}}},\n    {{{ -2488,   1843,  -4054}, 0, {   900,    340}, {0x29, 0x97, 0x38, 0xff}}},\n    {{{ -2456,   1889,  -4039}, 0, {   964,    372}, {0x4e, 0xd9, 0x5b, 0xff}}},\n    {{{ -2832,   1981,  -3655}, 0, {   212,   1136}, {0x50, 0x38, 0x50, 0xff}}},\n    {{{ -2832,   1889,  -3655}, 0, {   212,   1136}, {0x53, 0xda, 0x57, 0xff}}},\n    {{{ -2690,   1981,  -3915}, 0, {   496,    618}, {0x4a, 0x4a, 0x47, 0xff}}},\n};\n\n// 0x07002A50 - 0x07002B50\nstatic const Vtx wmotr_seg7_vertex_07002A50[] = {\n    {{{ -2456,   1981,  -4039}, 0, {   964,    372}, {0x4a, 0x3e, 0x51, 0xff}}},\n    {{{ -2301,   1889,  -4258}, 0, {  1274,    -66}, {0x73, 0xd2, 0x18, 0xff}}},\n    {{{ -2301,   1981,  -4258}, 0, {  1274,    -66}, {0x6a, 0x43, 0x0f, 0xff}}},\n    {{{ -2456,   1889,  -4039}, 0, {   964,    372}, {0x4e, 0xd9, 0x5b, 0xff}}},\n    {{{ -2488,   1843,  -4054}, 0, {   900,    340}, {0x29, 0x97, 0x38, 0xff}}},\n    {{{ -2342,   1843,  -4260}, 0, {  1192,    -70}, {0x3a, 0x92, 0x15, 0xff}}},\n    {{{ -3501,   1843,  -4280}, 0, { -1120,   -110}, {0xeb, 0x83, 0x05, 0xff}}},\n    {{{ -2708,   1843,  -3938}, 0, {   460,    572}, {0x38, 0x98, 0x2e, 0xff}}},\n    {{{ -2690,   1981,  -3915}, 0, {   496,    618}, {0x4a, 0x4a, 0x47, 0xff}}},\n    {{{ -2832,   1889,  -3655}, 0, {   212,   1136}, {0x53, 0xda, 0x57, 0xff}}},\n    {{{ -2842,   1843,  -3693}, 0, {   194,   1060}, {0x29, 0x94, 0x33, 0xff}}},\n    {{{ -2403,   1843,  -4507}, 0, {  1070,   -564}, {0x38, 0x92, 0xe4, 0xff}}},\n    {{{ -2366,   1889,  -4520}, 0, {  1144,   -590}, {0x65, 0xd6, 0xc1, 0xff}}},\n    {{{ -2573,   1981,  -4686}, 0, {   730,   -920}, {0x18, 0x45, 0x99, 0xff}}},\n    {{{ -2811,   1889,  -4660}, 0, {   256,   -868}, {0x18, 0xe9, 0x86, 0xff}}},\n    {{{ -2811,   1981,  -4660}, 0, {   256,   -868}, {0x1e, 0x56, 0xa9, 0xff}}},\n};\n\n// 0x07002B50 - 0x07002C50\nstatic const Vtx wmotr_seg7_vertex_07002B50[] = {\n    {{{ -2366,   1889,  -4520}, 0, {  1144,   -590}, {0x65, 0xd6, 0xc1, 0xff}}},\n    {{{ -2403,   1843,  -4507}, 0, {  1070,   -564}, {0x38, 0x92, 0xe4, 0xff}}},\n    {{{ -2598,   1843,  -4663}, 0, {   680,   -874}, {0x1b, 0x96, 0xc0, 0xff}}},\n    {{{ -3501,   1843,  -4280}, 0, { -1120,   -110}, {0xeb, 0x83, 0x05, 0xff}}},\n    {{{ -2573,   1889,  -4686}, 0, {   730,   -920}, {0x22, 0xe0, 0x8b, 0xff}}},\n    {{{ -2301,   1981,  -4258}, 0, {  1274,    -66}, {0x6a, 0x43, 0x0f, 0xff}}},\n    {{{ -2366,   1981,  -4520}, 0, {  1144,   -590}, {0x58, 0x43, 0xc3, 0xff}}},\n    {{{ -2821,   1843,  -4639}, 0, {   236,   -826}, {0x17, 0xa2, 0xae, 0xff}}},\n    {{{ -2811,   1889,  -4660}, 0, {   256,   -868}, {0x18, 0xe9, 0x86, 0xff}}},\n    {{{ -2573,   1981,  -4686}, 0, {   730,   -920}, {0x18, 0x45, 0x99, 0xff}}},\n    {{{ -2986,   1843,  -4771}, 0, {   -92,  -1090}, {0x13, 0x91, 0xc7, 0xff}}},\n    {{{ -2986,   1889,  -4801}, 0, {   -92,  -1150}, {0x2c, 0xd9, 0x90, 0xff}}},\n    {{{ -2811,   1981,  -4660}, 0, {   256,   -868}, {0x1e, 0x56, 0xa9, 0xff}}},\n    {{{ -3230,   1843,  -4759}, 0, {  -580,  -1066}, {0xf1, 0x96, 0xbd, 0xff}}},\n    {{{ -3246,   1889,  -4788}, 0, {  -610,  -1124}, {0xdc, 0xd9, 0x8d, 0xff}}},\n    {{{ -2986,   1981,  -4801}, 0, {   -92,  -1150}, {0x1d, 0x40, 0x97, 0xff}}},\n};\n\n// 0x07002C50 - 0x07002D50\nstatic const Vtx wmotr_seg7_vertex_07002C50[] = {\n    {{{ -3246,   1889,  -4788}, 0, {  -610,  -1124}, {0xdc, 0xd9, 0x8d, 0xff}}},\n    {{{ -3230,   1843,  -4759}, 0, {  -580,  -1066}, {0xf1, 0x96, 0xbd, 0xff}}},\n    {{{ -3419,   1843,  -4632}, 0, {  -958,   -814}, {0xd3, 0x95, 0xcf, 0xff}}},\n    {{{ -3501,   1843,  -4280}, 0, { -1120,   -110}, {0xeb, 0x83, 0x05, 0xff}}},\n    {{{ -3447,   1889,  -4653}, 0, { -1012,   -856}, {0xa8, 0xd8, 0xaf, 0xff}}},\n    {{{ -3246,   1981,  -4788}, 0, {  -610,  -1124}, {0xdb, 0x3d, 0x98, 0xff}}},\n    {{{ -2986,   1981,  -4801}, 0, {   -92,  -1150}, {0x1d, 0x40, 0x97, 0xff}}},\n    {{{ -3518,   1843,  -4450}, 0, { -1154,   -450}, {0xb3, 0x9f, 0xe9, 0xff}}},\n    {{{ -3552,   1889,  -4460}, 0, { -1222,   -470}, {0x8b, 0xd8, 0xe8, 0xff}}},\n    {{{ -3447,   1981,  -4653}, 0, { -1012,   -856}, {0xad, 0x3d, 0xb7, 0xff}}},\n    {{{ -3534,   1889,  -4279}, 0, { -1186,   -108}, {0x8e, 0xdc, 0x27, 0xff}}},\n    {{{ -3552,   1981,  -4460}, 0, { -1222,   -470}, {0x94, 0x3f, 0xee, 0xff}}},\n    {{{ -3436,   1843,  -4179}, 0, {  -990,     92}, {0xb3, 0x9d, 0x0b, 0xff}}},\n    {{{ -3044,   1843,  -3594}, 0, {  -208,   1258}, {0x00, 0x87, 0x24, 0xff}}},\n    {{{ -2842,   1843,  -3693}, 0, {   194,   1060}, {0x29, 0x94, 0x33, 0xff}}},\n    {{{ -3465,   1889,  -4172}, 0, { -1048,    106}, {0x89, 0xe3, 0x1e, 0xff}}},\n};\n\n// 0x07002D50 - 0x07002E50\nstatic const Vtx wmotr_seg7_vertex_07002D50[] = {\n    {{{ -3534,   1981,  -4279}, 0, { -1186,   -108}, {0x9a, 0x3f, 0x26, 0xff}}},\n    {{{ -3534,   1889,  -4279}, 0, { -1186,   -108}, {0x8e, 0xdc, 0x27, 0xff}}},\n    {{{ -3465,   1889,  -4172}, 0, { -1048,    106}, {0x89, 0xe3, 0x1e, 0xff}}},\n    {{{ -3552,   1981,  -4460}, 0, { -1222,   -470}, {0x94, 0x3f, 0xee, 0xff}}},\n    {{{ -3436,   1843,  -4179}, 0, {  -990,     92}, {0xb3, 0x9d, 0x0b, 0xff}}},\n    {{{ -3522,   1889,  -3956}, 0, { -1162,    536}, {0x89, 0xd6, 0xfa, 0xff}}},\n    {{{ -3491,   1843,  -3977}, 0, { -1100,    496}, {0xc5, 0x90, 0xff, 0xff}}},\n    {{{ -3044,   1843,  -3594}, 0, {  -208,   1258}, {0x00, 0x87, 0x24, 0xff}}},\n    {{{ -3465,   1981,  -4172}, 0, { -1048,    106}, {0xa2, 0x53, 0x0d, 0xff}}},\n    {{{ -3048,   1889,  -3549}, 0, {  -216,   1348}, {0x0b, 0xd1, 0x75, 0xff}}},\n    {{{ -2842,   1843,  -3693}, 0, {   194,   1060}, {0x29, 0x94, 0x33, 0xff}}},\n    {{{ -3447,   1843,  -3803}, 0, { -1012,    842}, {0xc4, 0x96, 0x20, 0xff}}},\n    {{{ -3476,   1889,  -3771}, 0, { -1070,    906}, {0x93, 0xdc, 0x34, 0xff}}},\n    {{{ -3522,   1981,  -3956}, 0, { -1162,    536}, {0x94, 0x41, 0x04, 0xff}}},\n    {{{ -3299,   1843,  -3653}, 0, {  -716,   1140}, {0xe1, 0x93, 0x37, 0xff}}},\n    {{{ -3319,   1889,  -3612}, 0, {  -756,   1222}, {0xc4, 0xc9, 0x60, 0xff}}},\n};\n\n// 0x07002E50 - 0x07002F50\nstatic const Vtx wmotr_seg7_vertex_07002E50[] = {\n    {{{ -3522,   1981,  -3956}, 0, { -1162,    536}, {0x94, 0x41, 0x04, 0xff}}},\n    {{{ -3476,   1889,  -3771}, 0, { -1070,    906}, {0x93, 0xdc, 0x34, 0xff}}},\n    {{{ -3476,   1981,  -3771}, 0, { -1070,    906}, {0x9d, 0x2d, 0x40, 0xff}}},\n    {{{ -3319,   1889,  -3612}, 0, {  -756,   1222}, {0xc4, 0xc9, 0x60, 0xff}}},\n    {{{ -3299,   1843,  -3653}, 0, {  -716,   1140}, {0xe1, 0x93, 0x37, 0xff}}},\n    {{{ -3044,   1843,  -3594}, 0, {  -208,   1258}, {0x00, 0x87, 0x24, 0xff}}},\n    {{{ -3048,   1889,  -3549}, 0, {  -216,   1348}, {0x0b, 0xd1, 0x75, 0xff}}},\n    {{{ -3319,   1981,  -3612}, 0, {  -756,   1222}, {0xcb, 0x37, 0x64, 0xff}}},\n    {{{ -2816,   2074,  -3921}, 0, {   246,    606}, {0x32, 0x74, 0x06, 0xff}}},\n    {{{ -2690,   1981,  -3915}, 0, {   496,    618}, {0x4a, 0x4a, 0x47, 0xff}}},\n    {{{ -2763,   2039,  -3982}, 0, {   352,    484}, {0x30, 0x75, 0x04, 0xff}}},\n    {{{ -2842,   1843,  -3693}, 0, {   194,   1060}, {0x29, 0x94, 0x33, 0xff}}},\n    {{{ -2832,   1889,  -3655}, 0, {   212,   1136}, {0x53, 0xda, 0x57, 0xff}}},\n    {{{ -3048,   1981,  -3549}, 0, {  -216,   1348}, {0x0f, 0x38, 0x70, 0xff}}},\n    {{{ -2832,   1981,  -3655}, 0, {   212,   1136}, {0x50, 0x38, 0x50, 0xff}}},\n    {{{ -2691,   2051,  -4040}, 0, {   496,    368}, {0x0f, 0x77, 0x28, 0xff}}},\n};\n\n// 0x07002F50 - 0x07003050\nstatic const Vtx wmotr_seg7_vertex_07002F50[] = {\n    {{{ -2456,   1981,  -4039}, 0, {   964,    372}, {0x4a, 0x3e, 0x51, 0xff}}},\n    {{{ -2691,   2051,  -4040}, 0, {   496,    368}, {0x0f, 0x77, 0x28, 0xff}}},\n    {{{ -2690,   1981,  -3915}, 0, {   496,    618}, {0x4a, 0x4a, 0x47, 0xff}}},\n    {{{ -2915,   2074,  -3739}, 0, {    48,    970}, {0x2b, 0x70, 0x26, 0xff}}},\n    {{{ -2832,   1981,  -3655}, 0, {   212,   1136}, {0x50, 0x38, 0x50, 0xff}}},\n    {{{ -2816,   2074,  -3921}, 0, {   246,    606}, {0x32, 0x74, 0x06, 0xff}}},\n    {{{ -2536,   2051,  -4122}, 0, {   804,    206}, {0x23, 0x74, 0x23, 0xff}}},\n    {{{ -2301,   1981,  -4258}, 0, {  1274,    -66}, {0x6a, 0x43, 0x0f, 0xff}}},\n    {{{ -2366,   1981,  -4520}, 0, {  1144,   -590}, {0x58, 0x43, 0xc3, 0xff}}},\n    {{{ -2434,   2051,  -4266}, 0, {  1008,    -82}, {0x2c, 0x76, 0x03, 0xff}}},\n    {{{ -2477,   2051,  -4439}, 0, {   922,   -428}, {0x22, 0x77, 0xe6, 0xff}}},\n    {{{ -2573,   1981,  -4686}, 0, {   730,   -920}, {0x18, 0x45, 0x99, 0xff}}},\n    {{{ -2811,   1981,  -4660}, 0, {   256,   -868}, {0x1e, 0x56, 0xa9, 0xff}}},\n    {{{ -2613,   2051,  -4548}, 0, {   650,   -646}, {0x07, 0x77, 0xd7, 0xff}}},\n    {{{ -2770,   2051,  -4532}, 0, {   338,   -612}, {0xef, 0x78, 0xdd, 0xff}}},\n    {{{ -2872,   2053,  -4417}, 0, {   134,   -384}, {0x11, 0x7d, 0xf4, 0xff}}},\n};\n\n// 0x07003050 - 0x07003150\nstatic const Vtx wmotr_seg7_vertex_07003050[] = {\n    {{{ -2888,   2036,  -4606}, 0, {   102,   -760}, {0x2e, 0x71, 0xdf, 0xff}}},\n    {{{ -2872,   2053,  -4417}, 0, {   134,   -384}, {0x11, 0x7d, 0xf4, 0xff}}},\n    {{{ -2811,   1981,  -4660}, 0, {   256,   -868}, {0x1e, 0x56, 0xa9, 0xff}}},\n    {{{ -2986,   1981,  -4801}, 0, {   -92,  -1150}, {0x1d, 0x40, 0x97, 0xff}}},\n    {{{ -3246,   1981,  -4788}, 0, {  -610,  -1124}, {0xdb, 0x3d, 0x98, 0xff}}},\n    {{{ -3034,   2053,  -4688}, 0, {  -188,   -924}, {0x0b, 0x76, 0xd5, 0xff}}},\n    {{{ -3447,   1981,  -4653}, 0, { -1012,   -856}, {0xad, 0x3d, 0xb7, 0xff}}},\n    {{{ -3216,   2053,  -4679}, 0, {  -552,   -906}, {0xee, 0x75, 0xd4, 0xff}}},\n    {{{ -3357,   2053,  -4585}, 0, {  -832,   -718}, {0xdb, 0x75, 0xe3, 0xff}}},\n    {{{ -3552,   1981,  -4460}, 0, { -1222,   -470}, {0x94, 0x3f, 0xee, 0xff}}},\n    {{{ -3430,   2053,  -4449}, 0, {  -980,   -448}, {0xd4, 0x76, 0xfb, 0xff}}},\n    {{{ -3534,   1981,  -4279}, 0, { -1186,   -108}, {0x9a, 0x3f, 0x26, 0xff}}},\n    {{{ -3465,   1981,  -4172}, 0, { -1048,    106}, {0xa2, 0x53, 0x0d, 0xff}}},\n    {{{ -3418,   2053,  -4322}, 0, {  -954,   -194}, {0xd7, 0x76, 0x11, 0xff}}},\n    {{{ -3172,   2066,  -4261}, 0, {  -464,    -72}, {0xf9, 0x7e, 0x02, 0xff}}},\n    {{{ -3369,   2053,  -4247}, 0, {  -858,    -44}, {0xed, 0x77, 0x26, 0xff}}},\n};\n\n// 0x07003150 - 0x07003240\nstatic const Vtx wmotr_seg7_vertex_07003150[] = {\n    {{{ -3522,   1981,  -3956}, 0, { -1162,    536}, {0x94, 0x41, 0x04, 0xff}}},\n    {{{ -3358,   2074,  -4101}, 0, {  -834,    248}, {0xd6, 0x74, 0xe7, 0xff}}},\n    {{{ -3465,   1981,  -4172}, 0, { -1048,    106}, {0xa2, 0x53, 0x0d, 0xff}}},\n    {{{ -3398,   2074,  -3950}, 0, {  -914,    548}, {0xcc, 0x73, 0x00, 0xff}}},\n    {{{ -3476,   1981,  -3771}, 0, { -1070,    906}, {0x9d, 0x2d, 0x40, 0xff}}},\n    {{{ -3365,   2074,  -3821}, 0, {  -850,    808}, {0xcb, 0x6e, 0x1e, 0xff}}},\n    {{{ -3319,   1981,  -3612}, 0, {  -756,   1222}, {0xcb, 0x37, 0x64, 0xff}}},\n    {{{ -3255,   2074,  -3709}, 0, {  -630,   1028}, {0xe7, 0x6f, 0x37, 0xff}}},\n    {{{ -3048,   1981,  -3549}, 0, {  -216,   1348}, {0x0f, 0x38, 0x70, 0xff}}},\n    {{{ -3066,   2074,  -3665}, 0, {  -252,   1116}, {0x0c, 0x70, 0x39, 0xff}}},\n    {{{ -2832,   1981,  -3655}, 0, {   212,   1136}, {0x50, 0x38, 0x50, 0xff}}},\n    {{{ -2915,   2074,  -3739}, 0, {    48,    970}, {0x2b, 0x70, 0x26, 0xff}}},\n    {{{ -3172,   2066,  -4261}, 0, {  -464,    -72}, {0xf9, 0x7e, 0x02, 0xff}}},\n    {{{ -3204,   2074,  -4195}, 0, {  -528,     60}, {0xfa, 0x7d, 0xec, 0xff}}},\n    {{{ -3136,   2129,  -3920}, 0, {  -392,    610}, {0xfe, 0x7e, 0x01, 0xff}}},\n};\n\n// 0x07003240 - 0x07003340\nstatic const Vtx wmotr_seg7_vertex_07003240[] = {\n    {{{ -3369,   2053,  -4247}, 0, {  -858,    -44}, {0xed, 0x77, 0x26, 0xff}}},\n    {{{ -3172,   2066,  -4261}, 0, {  -464,    -72}, {0xf9, 0x7e, 0x02, 0xff}}},\n    {{{ -3164,   2084,  -4404}, 0, {  -446,   -358}, {0xfc, 0x7e, 0x00, 0xff}}},\n    {{{ -3136,   2129,  -3920}, 0, {  -392,    610}, {0xfe, 0x7e, 0x01, 0xff}}},\n    {{{ -2816,   2074,  -3921}, 0, {   246,    606}, {0x32, 0x74, 0x06, 0xff}}},\n    {{{ -2872,   2077,  -4068}, 0, {   134,    312}, {0x2b, 0x73, 0xe4, 0xff}}},\n    {{{ -2915,   2074,  -3739}, 0, {    48,    970}, {0x2b, 0x70, 0x26, 0xff}}},\n    {{{ -3204,   2074,  -4195}, 0, {  -528,     60}, {0xfa, 0x7d, 0xec, 0xff}}},\n    {{{ -3008,   2074,  -4202}, 0, {  -136,     46}, {0x0b, 0x7b, 0xe4, 0xff}}},\n    {{{ -2955,   2051,  -4241}, 0, {     0,      0}, {0x14, 0x7d, 0xfc, 0xff}}},\n    {{{ -2851,   2051,  -4091}, 0, {   176,    268}, {0x18, 0x7c, 0xf7, 0xff}}},\n    {{{ -2763,   2039,  -3982}, 0, {   352,    484}, {0x30, 0x75, 0x04, 0xff}}},\n    {{{ -3418,   2053,  -4322}, 0, {  -954,   -194}, {0xd7, 0x76, 0x11, 0xff}}},\n    {{{ -3034,   2053,  -4688}, 0, {  -188,   -924}, {0x0b, 0x76, 0xd5, 0xff}}},\n    {{{ -3216,   2053,  -4679}, 0, {  -552,   -906}, {0xee, 0x75, 0xd4, 0xff}}},\n    {{{ -2951,   2067,  -4561}, 0, {   -24,   -672}, {0x19, 0x7b, 0xf0, 0xff}}},\n};\n\n// 0x07003340 - 0x07003440\nstatic const Vtx wmotr_seg7_vertex_07003340[] = {\n    {{{ -3216,   2053,  -4679}, 0, {  -552,   -906}, {0xee, 0x75, 0xd4, 0xff}}},\n    {{{ -3357,   2053,  -4585}, 0, {  -832,   -718}, {0xdb, 0x75, 0xe3, 0xff}}},\n    {{{ -3164,   2084,  -4404}, 0, {  -446,   -358}, {0xfc, 0x7e, 0x00, 0xff}}},\n    {{{ -2935,   2075,  -4416}, 0, {     8,   -380}, {0x18, 0x7c, 0x06, 0xff}}},\n    {{{ -2999,   2067,  -4276}, 0, {  -118,   -102}, {0x09, 0x7c, 0x17, 0xff}}},\n    {{{ -3172,   2066,  -4261}, 0, {  -464,    -72}, {0xf9, 0x7e, 0x02, 0xff}}},\n    {{{ -3430,   2053,  -4449}, 0, {  -980,   -448}, {0xd4, 0x76, 0xfb, 0xff}}},\n    {{{ -3418,   2053,  -4322}, 0, {  -954,   -194}, {0xd7, 0x76, 0x11, 0xff}}},\n    {{{ -2951,   2067,  -4561}, 0, {   -24,   -672}, {0x19, 0x7b, 0xf0, 0xff}}},\n    {{{ -2955,   2051,  -4241}, 0, {     0,      0}, {0x14, 0x7d, 0xfc, 0xff}}},\n    {{{ -2872,   2053,  -4417}, 0, {   134,   -384}, {0x11, 0x7d, 0xf4, 0xff}}},\n    {{{ -2888,   2036,  -4606}, 0, {   102,   -760}, {0x2e, 0x71, 0xdf, 0xff}}},\n    {{{ -3034,   2053,  -4688}, 0, {  -188,   -924}, {0x0b, 0x76, 0xd5, 0xff}}},\n    {{{ -2652,   2090,  -4294}, 0, {   572,   -138}, {0x01, 0x7e, 0x00, 0xff}}},\n    {{{ -2851,   2051,  -4091}, 0, {   176,    268}, {0x18, 0x7c, 0xf7, 0xff}}},\n    {{{ -2770,   2051,  -4532}, 0, {   338,   -612}, {0xef, 0x78, 0xdd, 0xff}}},\n};\n\n// 0x07003440 - 0x07003540\nstatic const Vtx wmotr_seg7_vertex_07003440[] = {\n    {{{ -2652,   2090,  -4294}, 0, {   572,   -138}, {0x01, 0x7e, 0x00, 0xff}}},\n    {{{ -2613,   2051,  -4548}, 0, {   650,   -646}, {0x07, 0x77, 0xd7, 0xff}}},\n    {{{ -2770,   2051,  -4532}, 0, {   338,   -612}, {0xef, 0x78, 0xdd, 0xff}}},\n    {{{ -2477,   2051,  -4439}, 0, {   922,   -428}, {0x22, 0x77, 0xe6, 0xff}}},\n    {{{ -2434,   2051,  -4266}, 0, {  1008,    -82}, {0x2c, 0x76, 0x03, 0xff}}},\n    {{{ -2851,   2051,  -4091}, 0, {   176,    268}, {0x18, 0x7c, 0xf7, 0xff}}},\n    {{{ -2691,   2051,  -4040}, 0, {   496,    368}, {0x0f, 0x77, 0x28, 0xff}}},\n    {{{ -2536,   2051,  -4122}, 0, {   804,    206}, {0x23, 0x74, 0x23, 0xff}}},\n    {{{ -2763,   2039,  -3982}, 0, {   352,    484}, {0x30, 0x75, 0x04, 0xff}}},\n    {{{  4251,    138,    644}, 0, {   212,   1136}, {0x50, 0x38, 0x50, 0xff}}},\n    {{{  4251,     46,    644}, 0, {   212,   1136}, {0x53, 0xdb, 0x57, 0xff}}},\n    {{{  4393,     46,    383}, 0, {   496,    618}, {0x56, 0xdd, 0x55, 0xff}}},\n    {{{  4393,    138,    383}, 0, {   496,    618}, {0x4a, 0x4a, 0x47, 0xff}}},\n    {{{  4627,    138,    260}, 0, {   964,    372}, {0x4a, 0x3e, 0x51, 0xff}}},\n    {{{  4783,     46,     41}, 0, {  1274,    -66}, {0x73, 0xd2, 0x18, 0xff}}},\n    {{{  4783,    138,     41}, 0, {  1274,    -66}, {0x6a, 0x43, 0x0f, 0xff}}},\n};\n\n// 0x07003540 - 0x07003620\nstatic const Vtx wmotr_seg7_vertex_07003540[] = {\n    {{{  4393,     46,    383}, 0, {   496,    618}, {0x56, 0xdd, 0x55, 0xff}}},\n    {{{  4375,      0,    360}, 0, {   460,    572}, {0x38, 0x99, 0x2e, 0xff}}},\n    {{{  4595,      0,    244}, 0, {   900,    340}, {0x29, 0x97, 0x38, 0xff}}},\n    {{{  4627,     46,    260}, 0, {   964,    372}, {0x4e, 0xd9, 0x5b, 0xff}}},\n    {{{  3582,      0,     19}, 0, { -1120,   -110}, {0xeb, 0x83, 0x05, 0xff}}},\n    {{{  4742,      0,     38}, 0, {  1192,    -70}, {0x3a, 0x92, 0x15, 0xff}}},\n    {{{  4783,     46,     41}, 0, {  1274,    -66}, {0x73, 0xd2, 0x18, 0xff}}},\n    {{{  4393,    138,    383}, 0, {   496,    618}, {0x4a, 0x4a, 0x47, 0xff}}},\n    {{{  4627,    138,    260}, 0, {   964,    372}, {0x4a, 0x3e, 0x51, 0xff}}},\n    {{{  4242,      0,    606}, 0, {   194,   1060}, {0x29, 0x94, 0x33, 0xff}}},\n    {{{  4251,     46,    644}, 0, {   212,   1136}, {0x53, 0xdb, 0x57, 0xff}}},\n    {{{  4680,      0,   -208}, 0, {  1070,   -564}, {0x38, 0x92, 0xe4, 0xff}}},\n    {{{  4783,    138,     41}, 0, {  1274,    -66}, {0x6a, 0x43, 0x0f, 0xff}}},\n    {{{  4717,     46,   -221}, 0, {  1144,   -590}, {0x65, 0xd6, 0xc1, 0xff}}},\n};\n\n// 0x07003620 - 0x07003720\nstatic const Vtx wmotr_seg7_vertex_07003620[] = {\n    {{{  4273,    138,   -360}, 0, {   256,   -868}, {0x1e, 0x56, 0xa9, 0xff}}},\n    {{{  4273,     46,   -360}, 0, {   256,   -868}, {0x18, 0xe9, 0x86, 0xff}}},\n    {{{  4098,     46,   -502}, 0, {   -92,  -1150}, {0x2c, 0xd9, 0x90, 0xff}}},\n    {{{  3582,      0,     19}, 0, { -1120,   -110}, {0xeb, 0x83, 0x05, 0xff}}},\n    {{{  4486,      0,   -363}, 0, {   680,   -874}, {0x1b, 0x97, 0xc0, 0xff}}},\n    {{{  4680,      0,   -208}, 0, {  1070,   -564}, {0x38, 0x92, 0xe4, 0xff}}},\n    {{{  4717,     46,   -221}, 0, {  1144,   -590}, {0x65, 0xd6, 0xc1, 0xff}}},\n    {{{  4717,    138,   -221}, 0, {  1144,   -590}, {0x58, 0x43, 0xc3, 0xff}}},\n    {{{  4510,     46,   -386}, 0, {   730,   -920}, {0x22, 0xe0, 0x8b, 0xff}}},\n    {{{  4783,    138,     41}, 0, {  1274,    -66}, {0x6a, 0x43, 0x0f, 0xff}}},\n    {{{  4262,      0,   -339}, 0, {   236,   -826}, {0x17, 0xa2, 0xaf, 0xff}}},\n    {{{  4510,    138,   -386}, 0, {   730,   -920}, {0x18, 0x45, 0x99, 0xff}}},\n    {{{  4098,      0,   -472}, 0, {   -92,  -1090}, {0x13, 0x91, 0xc7, 0xff}}},\n    {{{  4098,    138,   -502}, 0, {   -92,  -1150}, {0x1d, 0x41, 0x97, 0xff}}},\n    {{{  3838,     46,   -488}, 0, {  -610,  -1124}, {0xdc, 0xda, 0x8d, 0xff}}},\n    {{{  3853,      0,   -459}, 0, {  -580,  -1066}, {0xf1, 0x96, 0xbc, 0xff}}},\n};\n\n// 0x07003720 - 0x07003820\nstatic const Vtx wmotr_seg7_vertex_07003720[] = {\n    {{{  3838,     46,   -488}, 0, {  -610,  -1124}, {0xdc, 0xda, 0x8d, 0xff}}},\n    {{{  3853,      0,   -459}, 0, {  -580,  -1066}, {0xf1, 0x96, 0xbc, 0xff}}},\n    {{{  3664,      0,   -333}, 0, {  -958,   -814}, {0xd2, 0x95, 0xcf, 0xff}}},\n    {{{  3582,      0,     19}, 0, { -1120,   -110}, {0xeb, 0x83, 0x05, 0xff}}},\n    {{{  3838,    138,   -488}, 0, {  -610,  -1124}, {0xdb, 0x3d, 0x98, 0xff}}},\n    {{{  3637,     46,   -354}, 0, { -1012,   -856}, {0xa8, 0xd8, 0xae, 0xff}}},\n    {{{  4098,    138,   -502}, 0, {   -92,  -1150}, {0x1d, 0x41, 0x97, 0xff}}},\n    {{{  3565,      0,   -151}, 0, { -1154,   -450}, {0xb2, 0xa0, 0xe8, 0xff}}},\n    {{{  3637,    138,   -354}, 0, { -1012,   -856}, {0xad, 0x3d, 0xb7, 0xff}}},\n    {{{  3532,     46,   -161}, 0, { -1222,   -470}, {0x8b, 0xd8, 0xe8, 0xff}}},\n    {{{  3532,    138,   -161}, 0, { -1222,   -470}, {0x94, 0x3f, 0xee, 0xff}}},\n    {{{  3550,     46,     20}, 0, { -1186,   -108}, {0x8d, 0xdc, 0x27, 0xff}}},\n    {{{  4242,      0,    606}, 0, {   194,   1060}, {0x29, 0x94, 0x33, 0xff}}},\n    {{{  4039,      0,    705}, 0, {  -208,   1258}, {0x00, 0x87, 0x24, 0xff}}},\n    {{{  3647,      0,    119}, 0, {  -990,     92}, {0xb3, 0x9d, 0x0b, 0xff}}},\n    {{{  3550,    138,     20}, 0, { -1186,   -108}, {0x9a, 0x3f, 0x26, 0xff}}},\n};\n\n// 0x07003820 - 0x07003920\nstatic const Vtx wmotr_seg7_vertex_07003820[] = {\n    {{{  3550,    138,     20}, 0, { -1186,   -108}, {0x9a, 0x3f, 0x26, 0xff}}},\n    {{{  3550,     46,     20}, 0, { -1186,   -108}, {0x8d, 0xdc, 0x27, 0xff}}},\n    {{{  3619,     46,    127}, 0, { -1048,    106}, {0x88, 0xe4, 0x1e, 0xff}}},\n    {{{  3647,      0,    119}, 0, {  -990,     92}, {0xb3, 0x9d, 0x0b, 0xff}}},\n    {{{  4039,      0,    705}, 0, {  -208,   1258}, {0x00, 0x87, 0x24, 0xff}}},\n    {{{  3593,      0,    322}, 0, { -1100,    496}, {0xc6, 0x90, 0xff, 0xff}}},\n    {{{  3561,     46,    342}, 0, { -1162,    536}, {0x89, 0xd6, 0xfa, 0xff}}},\n    {{{  3619,    138,    127}, 0, { -1048,    106}, {0xa2, 0x53, 0x0d, 0xff}}},\n    {{{  4035,     46,    749}, 0, {  -216,   1348}, {0x0b, 0xd2, 0x75, 0xff}}},\n    {{{  4242,      0,    606}, 0, {   194,   1060}, {0x29, 0x94, 0x33, 0xff}}},\n    {{{  3561,    138,    342}, 0, { -1162,    536}, {0x94, 0x41, 0x04, 0xff}}},\n    {{{  3608,     46,    527}, 0, { -1070,    906}, {0x93, 0xdd, 0x35, 0xff}}},\n    {{{  3637,      0,    496}, 0, { -1012,    842}, {0xc4, 0x96, 0x21, 0xff}}},\n    {{{  3785,      0,    646}, 0, {  -716,   1140}, {0xe1, 0x93, 0x38, 0xff}}},\n    {{{  3765,     46,    686}, 0, {  -756,   1222}, {0xc4, 0xca, 0x61, 0xff}}},\n    {{{  3608,    138,    527}, 0, { -1070,    906}, {0x9d, 0x2c, 0x40, 0xff}}},\n};\n\n// 0x07003920 - 0x07003A20\nstatic const Vtx wmotr_seg7_vertex_07003920[] = {\n    {{{  3765,    138,    686}, 0, {  -756,   1222}, {0xcb, 0x37, 0x64, 0xff}}},\n    {{{  3765,     46,    686}, 0, {  -756,   1222}, {0xc4, 0xca, 0x61, 0xff}}},\n    {{{  4035,     46,    749}, 0, {  -216,   1348}, {0x0b, 0xd2, 0x75, 0xff}}},\n    {{{  3608,    138,    527}, 0, { -1070,    906}, {0x9d, 0x2c, 0x40, 0xff}}},\n    {{{  3785,      0,    646}, 0, {  -716,   1140}, {0xe1, 0x93, 0x38, 0xff}}},\n    {{{  4039,      0,    705}, 0, {  -208,   1258}, {0x00, 0x87, 0x24, 0xff}}},\n    {{{  4268,    231,    377}, 0, {   246,    606}, {0x32, 0x74, 0x06, 0xff}}},\n    {{{  4393,    138,    383}, 0, {   496,    618}, {0x4a, 0x4a, 0x47, 0xff}}},\n    {{{  4320,    196,    316}, 0, {   352,    484}, {0x2f, 0x75, 0x04, 0xff}}},\n    {{{  4035,    138,    749}, 0, {  -216,   1348}, {0x0f, 0x38, 0x70, 0xff}}},\n    {{{  4251,     46,    644}, 0, {   212,   1136}, {0x53, 0xdb, 0x57, 0xff}}},\n    {{{  4242,      0,    606}, 0, {   194,   1060}, {0x29, 0x94, 0x33, 0xff}}},\n    {{{  4251,    138,    644}, 0, {   212,   1136}, {0x50, 0x38, 0x50, 0xff}}},\n    {{{  4393,    208,    258}, 0, {   496,    368}, {0x0f, 0x77, 0x28, 0xff}}},\n    {{{  4627,    138,    260}, 0, {   964,    372}, {0x4a, 0x3e, 0x51, 0xff}}},\n    {{{  4168,    231,    560}, 0, {    48,    970}, {0x2b, 0x70, 0x26, 0xff}}},\n};\n\n// 0x07003A20 - 0x07003B20\nstatic const Vtx wmotr_seg7_vertex_07003A20[] = {\n    {{{  4783,    138,     41}, 0, {  1274,    -66}, {0x6a, 0x43, 0x0f, 0xff}}},\n    {{{  4547,    208,    177}, 0, {   804,    206}, {0x23, 0x74, 0x23, 0xff}}},\n    {{{  4627,    138,    260}, 0, {   964,    372}, {0x4a, 0x3e, 0x51, 0xff}}},\n    {{{  4393,    208,    258}, 0, {   496,    368}, {0x0f, 0x77, 0x28, 0xff}}},\n    {{{  4650,    208,     33}, 0, {  1008,    -82}, {0x2c, 0x76, 0x03, 0xff}}},\n    {{{  4717,    138,   -221}, 0, {  1144,   -590}, {0x58, 0x43, 0xc3, 0xff}}},\n    {{{  4510,    138,   -386}, 0, {   730,   -920}, {0x18, 0x45, 0x99, 0xff}}},\n    {{{  4607,    208,   -140}, 0, {   922,   -428}, {0x22, 0x77, 0xe6, 0xff}}},\n    {{{  4273,    138,   -360}, 0, {   256,   -868}, {0x1e, 0x56, 0xa9, 0xff}}},\n    {{{  4470,    208,   -249}, 0, {   650,   -646}, {0x07, 0x77, 0xd7, 0xff}}},\n    {{{  4196,    193,   -306}, 0, {   102,   -760}, {0x2e, 0x71, 0xdf, 0xff}}},\n    {{{  4211,    210,   -118}, 0, {   134,   -384}, {0x11, 0x7d, 0xf3, 0xff}}},\n    {{{  4313,    208,   -232}, 0, {   338,   -612}, {0xef, 0x78, 0xdd, 0xff}}},\n    {{{  4098,    138,   -502}, 0, {   -92,  -1150}, {0x1d, 0x41, 0x97, 0xff}}},\n    {{{  4049,    210,   -388}, 0, {  -188,   -924}, {0x0b, 0x76, 0xd6, 0xff}}},\n    {{{  3838,    138,   -488}, 0, {  -610,  -1124}, {0xdb, 0x3d, 0x98, 0xff}}},\n};\n\n// 0x07003B20 - 0x07003C20\nstatic const Vtx wmotr_seg7_vertex_07003B20[] = {\n    {{{  3838,    138,   -488}, 0, {  -610,  -1124}, {0xdb, 0x3d, 0x98, 0xff}}},\n    {{{  3867,    210,   -379}, 0, {  -552,   -906}, {0xee, 0x75, 0xd4, 0xff}}},\n    {{{  4049,    210,   -388}, 0, {  -188,   -924}, {0x0b, 0x76, 0xd6, 0xff}}},\n    {{{  3637,    138,   -354}, 0, { -1012,   -856}, {0xad, 0x3d, 0xb7, 0xff}}},\n    {{{  3726,    210,   -285}, 0, {  -832,   -718}, {0xdb, 0x75, 0xe3, 0xff}}},\n    {{{  3532,    138,   -161}, 0, { -1222,   -470}, {0x94, 0x3f, 0xee, 0xff}}},\n    {{{  3550,    138,     20}, 0, { -1186,   -108}, {0x9a, 0x3f, 0x26, 0xff}}},\n    {{{  3653,    210,   -150}, 0, {  -980,   -448}, {0xd3, 0x76, 0xfb, 0xff}}},\n    {{{  3665,    210,    -23}, 0, {  -954,   -194}, {0xd7, 0x76, 0x11, 0xff}}},\n    {{{  3619,    138,    127}, 0, { -1048,    106}, {0xa2, 0x53, 0x0d, 0xff}}},\n    {{{  3911,    223,     38}, 0, {  -464,    -72}, {0xf9, 0x7e, 0x02, 0xff}}},\n    {{{  3714,    210,     51}, 0, {  -858,    -44}, {0xed, 0x77, 0x26, 0xff}}},\n    {{{  3561,    138,    342}, 0, { -1162,    536}, {0x94, 0x41, 0x04, 0xff}}},\n    {{{  3726,    231,    198}, 0, {  -834,    248}, {0xd6, 0x74, 0xe6, 0xff}}},\n    {{{  3685,    231,    348}, 0, {  -914,    548}, {0xcc, 0x73, 0x00, 0xff}}},\n    {{{  3718,    231,    478}, 0, {  -850,    808}, {0xca, 0x6e, 0x1e, 0xff}}},\n};\n\n// 0x07003C20 - 0x07003D10\nstatic const Vtx wmotr_seg7_vertex_07003C20[] = {\n    {{{  3608,    138,    527}, 0, { -1070,    906}, {0x9d, 0x2c, 0x40, 0xff}}},\n    {{{  3718,    231,    478}, 0, {  -850,    808}, {0xca, 0x6e, 0x1e, 0xff}}},\n    {{{  3561,    138,    342}, 0, { -1162,    536}, {0x94, 0x41, 0x04, 0xff}}},\n    {{{  3765,    138,    686}, 0, {  -756,   1222}, {0xcb, 0x37, 0x64, 0xff}}},\n    {{{  3828,    231,    589}, 0, {  -630,   1028}, {0xe7, 0x6f, 0x37, 0xff}}},\n    {{{  4035,    138,    749}, 0, {  -216,   1348}, {0x0f, 0x38, 0x70, 0xff}}},\n    {{{  4251,    138,    644}, 0, {   212,   1136}, {0x50, 0x38, 0x50, 0xff}}},\n    {{{  4017,    231,    633}, 0, {  -252,   1116}, {0x0b, 0x70, 0x3a, 0xff}}},\n    {{{  4168,    231,    560}, 0, {    48,    970}, {0x2b, 0x70, 0x26, 0xff}}},\n    {{{  3726,    231,    198}, 0, {  -834,    248}, {0xd6, 0x74, 0xe6, 0xff}}},\n    {{{  3947,    286,    379}, 0, {  -392,    610}, {0xfe, 0x7e, 0x01, 0xff}}},\n    {{{  3879,    231,    104}, 0, {  -528,     60}, {0xf9, 0x7d, 0xec, 0xff}}},\n    {{{  3685,    231,    348}, 0, {  -914,    548}, {0xcc, 0x73, 0x00, 0xff}}},\n    {{{  3911,    223,     38}, 0, {  -464,    -72}, {0xf9, 0x7e, 0x02, 0xff}}},\n    {{{  3619,    138,    127}, 0, { -1048,    106}, {0xa2, 0x53, 0x0d, 0xff}}},\n};\n\n// 0x07003D10 - 0x07003E00\nstatic const Vtx wmotr_seg7_vertex_07003D10[] = {\n    {{{  3714,    210,     51}, 0, {  -858,    -44}, {0xed, 0x77, 0x26, 0xff}}},\n    {{{  3911,    223,     38}, 0, {  -464,    -72}, {0xf9, 0x7e, 0x02, 0xff}}},\n    {{{  3920,    240,   -105}, 0, {  -446,   -358}, {0xfc, 0x7e, 0x00, 0xff}}},\n    {{{  3947,    286,    379}, 0, {  -392,    610}, {0xfe, 0x7e, 0x01, 0xff}}},\n    {{{  4076,    231,     96}, 0, {  -136,     46}, {0x0b, 0x7b, 0xe4, 0xff}}},\n    {{{  3879,    231,    104}, 0, {  -528,     60}, {0xf9, 0x7d, 0xec, 0xff}}},\n    {{{  4129,    208,     58}, 0, {     0,      0}, {0x14, 0x7d, 0xfc, 0xff}}},\n    {{{  4211,    234,    230}, 0, {   134,    312}, {0x2b, 0x73, 0xe4, 0xff}}},\n    {{{  4268,    231,    377}, 0, {   246,    606}, {0x32, 0x74, 0x06, 0xff}}},\n    {{{  4233,    208,    207}, 0, {   176,    268}, {0x17, 0x7c, 0xf7, 0xff}}},\n    {{{  4320,    196,    316}, 0, {   352,    484}, {0x2f, 0x75, 0x04, 0xff}}},\n    {{{  4168,    231,    560}, 0, {    48,    970}, {0x2b, 0x70, 0x26, 0xff}}},\n    {{{  3665,    210,    -23}, 0, {  -954,   -194}, {0xd7, 0x76, 0x11, 0xff}}},\n    {{{  3867,    210,   -379}, 0, {  -552,   -906}, {0xee, 0x75, 0xd4, 0xff}}},\n    {{{  3726,    210,   -285}, 0, {  -832,   -718}, {0xdb, 0x75, 0xe3, 0xff}}},\n};\n\n// 0x07003E00 - 0x07003EF0\nstatic const Vtx wmotr_seg7_vertex_07003E00[] = {\n    {{{  4133,    223,   -262}, 0, {   -24,   -672}, {0x19, 0x7b, 0xf0, 0xff}}},\n    {{{  3920,    240,   -105}, 0, {  -446,   -358}, {0xfc, 0x7e, 0x00, 0xff}}},\n    {{{  4149,    232,   -116}, 0, {     8,   -380}, {0x18, 0x7c, 0x06, 0xff}}},\n    {{{  4085,    224,     23}, 0, {  -118,   -102}, {0x09, 0x7c, 0x17, 0xff}}},\n    {{{  4049,    210,   -388}, 0, {  -188,   -924}, {0x0b, 0x76, 0xd6, 0xff}}},\n    {{{  3867,    210,   -379}, 0, {  -552,   -906}, {0xee, 0x75, 0xd4, 0xff}}},\n    {{{  3911,    223,     38}, 0, {  -464,    -72}, {0xf9, 0x7e, 0x02, 0xff}}},\n    {{{  3726,    210,   -285}, 0, {  -832,   -718}, {0xdb, 0x75, 0xe3, 0xff}}},\n    {{{  3653,    210,   -150}, 0, {  -980,   -448}, {0xd3, 0x76, 0xfb, 0xff}}},\n    {{{  3665,    210,    -23}, 0, {  -954,   -194}, {0xd7, 0x76, 0x11, 0xff}}},\n    {{{  4129,    208,     58}, 0, {     0,      0}, {0x14, 0x7d, 0xfc, 0xff}}},\n    {{{  4211,    210,   -118}, 0, {   134,   -384}, {0x11, 0x7d, 0xf3, 0xff}}},\n    {{{  4196,    193,   -306}, 0, {   102,   -760}, {0x2e, 0x71, 0xdf, 0xff}}},\n    {{{  4431,    247,      4}, 0, {   572,   -138}, {0x01, 0x7e, 0x00, 0xff}}},\n    {{{  4233,    208,    207}, 0, {   176,    268}, {0x17, 0x7c, 0xf7, 0xff}}},\n};\n\n// 0x07003EF0 - 0x07003FD0\nstatic const Vtx wmotr_seg7_vertex_07003EF0[] = {\n    {{{  4607,    208,   -140}, 0, {   922,   -428}, {0x22, 0x77, 0xe6, 0xff}}},\n    {{{  4470,    208,   -249}, 0, {   650,   -646}, {0x07, 0x77, 0xd7, 0xff}}},\n    {{{  4431,    247,      4}, 0, {   572,   -138}, {0x01, 0x7e, 0x00, 0xff}}},\n    {{{  4650,    208,     33}, 0, {  1008,    -82}, {0x2c, 0x76, 0x03, 0xff}}},\n    {{{  4313,    208,   -232}, 0, {   338,   -612}, {0xef, 0x78, 0xdd, 0xff}}},\n    {{{  4211,    210,   -118}, 0, {   134,   -384}, {0x11, 0x7d, 0xf3, 0xff}}},\n    {{{  4547,    208,    177}, 0, {   804,    206}, {0x23, 0x74, 0x23, 0xff}}},\n    {{{  4393,    208,    258}, 0, {   496,    368}, {0x0f, 0x77, 0x28, 0xff}}},\n    {{{  4233,    208,    207}, 0, {   176,    268}, {0x17, 0x7c, 0xf7, 0xff}}},\n    {{{  4320,    196,    316}, 0, {   352,    484}, {0x2f, 0x75, 0x04, 0xff}}},\n    {{{    15,  -1484,   4058}, 0, {  2010,  -1128}, {0x43, 0xda, 0x9c, 0xff}}},\n    {{{    -9,  -1535,   4086}, 0, {  1960,  -1074}, {0x2a, 0x95, 0xcb, 0xff}}},\n    {{{  -193,  -1535,   4027}, 0, {  1592,  -1192}, {0x06, 0x98, 0xb9, 0xff}}},\n    {{{  -178,  -1484,   3996}, 0, {  1622,  -1252}, {0xff, 0xe0, 0x86, 0xff}}},\n};\n\n// 0x07003FD0 - 0x070040C0\nstatic const Vtx wmotr_seg7_vertex_07003FD0[] = {\n    {{{  -178,  -1433,   3996}, 0, {  1622,  -1252}, {0xfb, 0x3f, 0x92, 0xff}}},\n    {{{  -372,  -1484,   4066}, 0, {  1234,  -1112}, {0x07, 0xe1, 0x86, 0xff}}},\n    {{{  -372,  -1433,   4066}, 0, {  1234,  -1112}, {0x00, 0x64, 0xb3, 0xff}}},\n    {{{   155,  -1484,   4222}, 0, {  2290,   -802}, {0x6d, 0xd9, 0xcf, 0xff}}},\n    {{{    -9,  -1535,   4086}, 0, {  1960,  -1074}, {0x2a, 0x95, 0xcb, 0xff}}},\n    {{{    15,  -1484,   4058}, 0, {  2010,  -1128}, {0x43, 0xda, 0x9c, 0xff}}},\n    {{{    15,  -1433,   4058}, 0, {  2010,  -1128}, {0x3b, 0x3b, 0xa2, 0xff}}},\n    {{{  -178,  -1484,   3996}, 0, {  1622,  -1252}, {0xff, 0xe0, 0x86, 0xff}}},\n    {{{  -193,  -1535,   4027}, 0, {  1592,  -1192}, {0x06, 0x98, 0xb9, 0xff}}},\n    {{{  -378,  -1535,   4093}, 0, {  1224,  -1058}, {0xfb, 0x9b, 0xb4, 0xff}}},\n    {{{  -953,  -1535,   4337}, 0, {    76,   -572}, {0xf2, 0x83, 0xf9, 0xff}}},\n    {{{   123,  -1535,   4241}, 0, {  2226,   -764}, {0x40, 0x96, 0xea, 0xff}}},\n    {{{  -570,  -1535,   3990}, 0, {   842,  -1264}, {0x15, 0x99, 0xba, 0xff}}},\n    {{{  -574,  -1484,   3957}, 0, {   832,  -1330}, {0x17, 0xdd, 0x89, 0xff}}},\n    {{{  -770,  -1535,   4014}, 0, {   442,  -1216}, {0xea, 0x97, 0xbe, 0xff}}},\n};\n\n// 0x070040C0 - 0x070041C0\nstatic const Vtx wmotr_seg7_vertex_070040C0[] = {\n    {{{  -574,  -1433,   3957}, 0, {   832,  -1330}, {0x0b, 0x3b, 0x91, 0xff}}},\n    {{{  -574,  -1484,   3957}, 0, {   832,  -1330}, {0x17, 0xdd, 0x89, 0xff}}},\n    {{{  -785,  -1484,   3983}, 0, {   412,  -1278}, {0xd0, 0xdb, 0x91, 0xff}}},\n    {{{  -770,  -1535,   4014}, 0, {   442,  -1216}, {0xea, 0x97, 0xbe, 0xff}}},\n    {{{  -372,  -1433,   4066}, 0, {  1234,  -1112}, {0x00, 0x64, 0xb3, 0xff}}},\n    {{{  -909,  -1535,   4138}, 0, {   164,   -970}, {0xba, 0xa4, 0xcd, 0xff}}},\n    {{{  -953,  -1535,   4337}, 0, {    76,   -572}, {0xf2, 0x83, 0xf9, 0xff}}},\n    {{{  -785,  -1433,   3983}, 0, {   412,  -1278}, {0xd2, 0x4a, 0xa5, 0xff}}},\n    {{{  -932,  -1484,   4113}, 0, {   118,  -1020}, {0x97, 0xde, 0xc2, 0xff}}},\n    {{{  -932,  -1433,   4113}, 0, {   118,  -1020}, {0xa6, 0x4b, 0xd1, 0xff}}},\n    {{{  -978,  -1484,   4323}, 0, {    26,   -600}, {0x9b, 0xe0, 0xbc, 0xff}}},\n    {{{ -1108,  -1535,   4440}, 0, {  -232,   -366}, {0xcb, 0x99, 0xcd, 0xff}}},\n    {{{ -1086,  -1535,   4824}, 0, {  -188,    400}, {0xd2, 0x90, 0x24, 0xff}}},\n    {{{  -978,  -1433,   4323}, 0, {    26,   -600}, {0xbc, 0x53, 0xbe, 0xff}}},\n    {{{ -1141,  -1484,   4431}, 0, {  -298,   -384}, {0xa1, 0xdc, 0xb6, 0xff}}},\n    {{{ -1167,  -1535,   4625}, 0, {  -350,      2}, {0xad, 0xa1, 0xfa, 0xff}}},\n};\n\n// 0x070041C0 - 0x070042C0\nstatic const Vtx wmotr_seg7_vertex_070041C0[] = {\n    {{{  -978,  -1433,   4323}, 0, {    26,   -600}, {0xbc, 0x53, 0xbe, 0xff}}},\n    {{{ -1141,  -1484,   4431}, 0, {  -298,   -384}, {0xa1, 0xdc, 0xb6, 0xff}}},\n    {{{ -1141,  -1433,   4431}, 0, {  -298,   -384}, {0xa1, 0x2d, 0xbb, 0xff}}},\n    {{{ -1167,  -1535,   4625}, 0, {  -350,      2}, {0xad, 0xa1, 0xfa, 0xff}}},\n    {{{ -1204,  -1484,   4626}, 0, {  -422,      4}, {0x88, 0xd9, 0x03, 0xff}}},\n    {{{ -1086,  -1535,   4824}, 0, {  -188,    400}, {0xd2, 0x90, 0x24, 0xff}}},\n    {{{ -1204,  -1433,   4626}, 0, {  -422,      4}, {0x8d, 0x34, 0x0b, 0xff}}},\n    {{{ -1118,  -1484,   4835}, 0, {  -252,    422}, {0xa9, 0xe0, 0x56, 0xff}}},\n    {{{  -909,  -1535,   4898}, 0, {   164,    548}, {0xd6, 0x92, 0x2d, 0xff}}},\n    {{{  -953,  -1535,   4337}, 0, {    76,   -572}, {0xf2, 0x83, 0xf9, 0xff}}},\n    {{{  -588,  -1535,   5318}, 0, {   804,   1384}, {0xf3, 0x95, 0x42, 0xff}}},\n    {{{  -806,  -1535,   5222}, 0, {   370,   1194}, {0xd6, 0x90, 0x27, 0xff}}},\n    {{{  -932,  -1484,   4913}, 0, {   118,    578}, {0x9c, 0xe1, 0x47, 0xff}}},\n    {{{ -1118,  -1433,   4835}, 0, {  -252,    422}, {0xb2, 0x25, 0x5c, 0xff}}},\n    {{{  -902,  -1535,   5067}, 0, {   178,    886}, {0xa5, 0xab, 0x13, 0xff}}},\n    {{{  -924,  -1484,   5092}, 0, {   134,    934}, {0x8b, 0xdf, 0x23, 0xff}}},\n};\n\n// 0x070042C0 - 0x070043C0\nstatic const Vtx wmotr_seg7_vertex_070042C0[] = {\n    {{{ -1118,  -1433,   4835}, 0, {  -252,    422}, {0xb2, 0x25, 0x5c, 0xff}}},\n    {{{  -932,  -1484,   4913}, 0, {   118,    578}, {0x9c, 0xe1, 0x47, 0xff}}},\n    {{{  -932,  -1433,   4913}, 0, {   118,    578}, {0xb8, 0x57, 0x39, 0xff}}},\n    {{{  -924,  -1484,   5092}, 0, {   134,    934}, {0x8b, 0xdf, 0x23, 0xff}}},\n    {{{  -902,  -1535,   5067}, 0, {   178,    886}, {0xa5, 0xab, 0x13, 0xff}}},\n    {{{  -806,  -1535,   5222}, 0, {   370,   1194}, {0xd6, 0x90, 0x27, 0xff}}},\n    {{{  -823,  -1484,   5255}, 0, {   336,   1258}, {0xb0, 0xd9, 0x5a, 0xff}}},\n    {{{  -924,  -1433,   5092}, 0, {   134,    934}, {0x91, 0x2c, 0x2a, 0xff}}},\n    {{{  -588,  -1535,   5318}, 0, {   804,   1384}, {0xf3, 0x95, 0x42, 0xff}}},\n    {{{  -271,  -1484,   5130}, 0, {  1436,   1010}, {0x3c, 0xe0, 0x6a, 0xff}}},\n    {{{  -282,  -1535,   5104}, 0, {  1416,    960}, {0x30, 0x9a, 0x39, 0xff}}},\n    {{{   -75,  -1535,   5111}, 0, {  1830,    972}, {0x0d, 0x99, 0x48, 0xff}}},\n    {{{  -953,  -1535,   4337}, 0, {    76,   -572}, {0xf2, 0x83, 0xf9, 0xff}}},\n    {{{  -378,  -1535,   5267}, 0, {  1224,   1282}, {0x23, 0x97, 0x3d, 0xff}}},\n    {{{  -594,  -1484,   5355}, 0, {   792,   1458}, {0xf5, 0xd9, 0x78, 0xff}}},\n    {{{  -823,  -1433,   5255}, 0, {   336,   1258}, {0xb8, 0x37, 0x57, 0xff}}},\n};\n\n// 0x070043C0 - 0x070044C0\nstatic const Vtx wmotr_seg7_vertex_070043C0[] = {\n    {{{  -594,  -1484,   5355}, 0, {   792,   1458}, {0xf5, 0xd9, 0x78, 0xff}}},\n    {{{  -378,  -1535,   5267}, 0, {  1224,   1282}, {0x23, 0x97, 0x3d, 0xff}}},\n    {{{  -372,  -1484,   5301}, 0, {  1234,   1350}, {0x49, 0xe0, 0x62, 0xff}}},\n    {{{  -594,  -1433,   5355}, 0, {   792,   1458}, {0xf9, 0x37, 0x71, 0xff}}},\n    {{{  -823,  -1433,   5255}, 0, {   336,   1258}, {0xb8, 0x37, 0x57, 0xff}}},\n    {{{  -282,  -1535,   5104}, 0, {  1416,    960}, {0x30, 0x9a, 0x39, 0xff}}},\n    {{{  -271,  -1484,   5130}, 0, {  1436,   1010}, {0x3c, 0xe0, 0x6a, 0xff}}},\n    {{{  -372,  -1433,   5301}, 0, {  1234,   1350}, {0x46, 0x39, 0x58, 0xff}}},\n    {{{   194,  -1484,   4719}, 0, {  2366,    190}, {0x78, 0xde, 0xed, 0xff}}},\n    {{{   160,  -1535,   4713}, 0, {  2300,    178}, {0x46, 0x97, 0xfd, 0xff}}},\n    {{{    79,  -1535,   4573}, 0, {  2138,   -102}, {0x48, 0x99, 0xf1, 0xff}}},\n    {{{  -953,  -1535,   4337}, 0, {    76,   -572}, {0xf2, 0x83, 0xf9, 0xff}}},\n    {{{   109,  -1535,   4971}, 0, {  2198,    692}, {0x35, 0x95, 0x2b, 0xff}}},\n    {{{   -75,  -1535,   5111}, 0, {  1830,    972}, {0x0d, 0x99, 0x48, 0xff}}},\n    {{{   -53,  -1484,   5138}, 0, {  1872,   1024}, {0x23, 0xdc, 0x74, 0xff}}},\n    {{{  -271,  -1433,   5130}, 0, {  1436,   1010}, {0x2b, 0x52, 0x56, 0xff}}},\n};\n\n// 0x070044C0 - 0x070045C0\nstatic const Vtx wmotr_seg7_vertex_070044C0[] = {\n    {{{   -53,  -1484,   5138}, 0, {  1872,   1024}, {0x23, 0xdc, 0x74, 0xff}}},\n    {{{   109,  -1535,   4971}, 0, {  2198,    692}, {0x35, 0x95, 0x2b, 0xff}}},\n    {{{   140,  -1484,   4990}, 0, {  2260,    732}, {0x65, 0xd9, 0x41, 0xff}}},\n    {{{  -271,  -1433,   5130}, 0, {  1436,   1010}, {0x2b, 0x52, 0x56, 0xff}}},\n    {{{   -53,  -1433,   5138}, 0, {  1872,   1024}, {0x26, 0x39, 0x6a, 0xff}}},\n    {{{   160,  -1535,   4713}, 0, {  2300,    178}, {0x46, 0x97, 0xfd, 0xff}}},\n    {{{   194,  -1484,   4719}, 0, {  2366,    190}, {0x78, 0xde, 0xed, 0xff}}},\n    {{{   140,  -1433,   4990}, 0, {  2260,    732}, {0x63, 0x35, 0x3a, 0xff}}},\n    {{{   186,  -1433,   4408}, 0, {  2352,   -430}, {0x75, 0x30, 0x07, 0xff}}},\n    {{{   155,  -1484,   4222}, 0, {  2290,   -802}, {0x6d, 0xd9, 0xcf, 0xff}}},\n    {{{   155,  -1433,   4222}, 0, {  2290,   -802}, {0x64, 0x3b, 0xcf, 0xff}}},\n    {{{  -953,  -1535,   4337}, 0, {    76,   -572}, {0xf2, 0x83, 0xf9, 0xff}}},\n    {{{   152,  -1535,   4418}, 0, {  2284,   -410}, {0x47, 0x99, 0x12, 0xff}}},\n    {{{    79,  -1535,   4573}, 0, {  2138,   -102}, {0x48, 0x99, 0xf1, 0xff}}},\n    {{{   123,  -1535,   4241}, 0, {  2226,   -764}, {0x40, 0x96, 0xea, 0xff}}},\n    {{{   108,  -1484,   4571}, 0, {  2196,   -104}, {0x7a, 0xdf, 0xfa, 0xff}}},\n};\n\n// 0x070045C0 - 0x070046C0\nstatic const Vtx wmotr_seg7_vertex_070045C0[] = {\n    {{{   194,  -1433,   4719}, 0, {  2366,    190}, {0x71, 0x35, 0xeb, 0xff}}},\n    {{{   194,  -1484,   4719}, 0, {  2366,    190}, {0x78, 0xde, 0xed, 0xff}}},\n    {{{   108,  -1484,   4571}, 0, {  2196,   -104}, {0x7a, 0xdf, 0xfa, 0xff}}},\n    {{{   140,  -1433,   4990}, 0, {  2260,    732}, {0x63, 0x35, 0x3a, 0xff}}},\n    {{{    79,  -1535,   4573}, 0, {  2138,   -102}, {0x48, 0x99, 0xf1, 0xff}}},\n    {{{   152,  -1535,   4418}, 0, {  2284,   -410}, {0x47, 0x99, 0x12, 0xff}}},\n    {{{   186,  -1484,   4408}, 0, {  2352,   -430}, {0x78, 0xdc, 0x12, 0xff}}},\n    {{{   108,  -1433,   4571}, 0, {  2196,   -104}, {0x5e, 0x55, 0x01, 0xff}}},\n    {{{   123,  -1535,   4241}, 0, {  2226,   -764}, {0x40, 0x96, 0xea, 0xff}}},\n    {{{   155,  -1484,   4222}, 0, {  2290,   -802}, {0x6d, 0xd9, 0xcf, 0xff}}},\n    {{{   186,  -1433,   4408}, 0, {  2352,   -430}, {0x75, 0x30, 0x07, 0xff}}},\n    {{{   155,  -1433,   4222}, 0, {  2290,   -802}, {0x64, 0x3b, 0xcf, 0xff}}},\n    {{{    15,  -1484,   4058}, 0, {  2010,  -1128}, {0x43, 0xda, 0x9c, 0xff}}},\n    {{{    15,  -1433,   4058}, 0, {  2010,  -1128}, {0x3b, 0x3b, 0xa2, 0xff}}},\n    {{{  -178,  -1433,   3996}, 0, {  1622,  -1252}, {0xfb, 0x3f, 0x92, 0xff}}},\n    {{{   -22,  -1374,   4138}, 0, {  1934,   -970}, {0x19, 0x74, 0xd4, 0xff}}},\n};\n\n// 0x070046C0 - 0x070047C0\nstatic const Vtx wmotr_seg7_vertex_070046C0[] = {\n    {{{    15,  -1433,   4058}, 0, {  2010,  -1128}, {0x3b, 0x3b, 0xa2, 0xff}}},\n    {{{    78,  -1374,   4255}, 0, {  2136,   -736}, {0x2d, 0x73, 0xe7, 0xff}}},\n    {{{   155,  -1433,   4222}, 0, {  2290,   -802}, {0x64, 0x3b, 0xcf, 0xff}}},\n    {{{   -22,  -1374,   4138}, 0, {  1934,   -970}, {0x19, 0x74, 0xd4, 0xff}}},\n    {{{  -178,  -1433,   3996}, 0, {  1622,  -1252}, {0xfb, 0x3f, 0x92, 0xff}}},\n    {{{  -162,  -1374,   4093}, 0, {  1656,  -1058}, {0xfc, 0x75, 0xd2, 0xff}}},\n    {{{  -372,  -1433,   4066}, 0, {  1234,  -1112}, {0x00, 0x64, 0xb3, 0xff}}},\n    {{{  -414,  -1402,   4291}, 0, {  1152,   -662}, {0xf9, 0x7d, 0xf0, 0xff}}},\n    {{{  -369,  -1374,   4300}, 0, {  1242,   -646}, {0xd3, 0x76, 0xf6, 0xff}}},\n    {{{  -450,  -1396,   4135}, 0, {  1080,   -976}, {0x1d, 0x7a, 0xf2, 0xff}}},\n    {{{  -302,  -1374,   4143}, 0, {  1376,   -958}, {0xe5, 0x78, 0xe3, 0xff}}},\n    {{{  -591,  -1396,   4058}, 0, {   798,  -1128}, {0x06, 0x7a, 0xdf, 0xff}}},\n    {{{  -574,  -1433,   3957}, 0, {   832,  -1330}, {0x0b, 0x3b, 0x91, 0xff}}},\n    {{{ -1204,  -1433,   4626}, 0, {  -422,      4}, {0x8d, 0x34, 0x0b, 0xff}}},\n    {{{ -1099,  -1371,   4467}, 0, {  -212,   -312}, {0xc6, 0x6b, 0xdd, 0xff}}},\n    {{{ -1141,  -1433,   4431}, 0, {  -298,   -384}, {0xa1, 0x2d, 0xbb, 0xff}}},\n};\n\n// 0x070047C0 - 0x070048B0\nstatic const Vtx wmotr_seg7_vertex_070047C0[] = {\n    {{{  -785,  -1433,   3983}, 0, {   412,  -1278}, {0xd2, 0x4a, 0xa5, 0xff}}},\n    {{{  -591,  -1396,   4058}, 0, {   798,  -1128}, {0x06, 0x7a, 0xdf, 0xff}}},\n    {{{  -574,  -1433,   3957}, 0, {   832,  -1330}, {0x0b, 0x3b, 0x91, 0xff}}},\n    {{{  -932,  -1433,   4113}, 0, {   118,  -1020}, {0xa6, 0x4b, 0xd1, 0xff}}},\n    {{{  -739,  -1396,   4076}, 0, {   504,  -1092}, {0xf1, 0x7a, 0xe5, 0xff}}},\n    {{{  -841,  -1396,   4167}, 0, {   298,   -910}, {0xe4, 0x7b, 0xf3, 0xff}}},\n    {{{  -978,  -1433,   4323}, 0, {    26,   -600}, {0xbc, 0x53, 0xbe, 0xff}}},\n    {{{ -1141,  -1433,   4431}, 0, {  -298,   -384}, {0xa1, 0x2d, 0xbb, 0xff}}},\n    {{{  -968,  -1371,   4380}, 0, {    46,   -486}, {0xf2, 0x6b, 0xbf, 0xff}}},\n    {{{  -874,  -1396,   4314}, 0, {   234,   -618}, {0xe9, 0x7c, 0x05, 0xff}}},\n    {{{  -871,  -1400,   4365}, 0, {   240,   -516}, {0x02, 0x74, 0xce, 0xff}}},\n    {{{ -1099,  -1371,   4467}, 0, {  -212,   -312}, {0xc6, 0x6b, 0xdd, 0xff}}},\n    {{{  -823,  -1433,   5255}, 0, {   336,   1258}, {0xb8, 0x37, 0x57, 0xff}}},\n    {{{  -857,  -1378,   5075}, 0, {   268,    900}, {0xc7, 0x6f, 0x11, 0xff}}},\n    {{{  -924,  -1433,   5092}, 0, {   134,    934}, {0x91, 0x2c, 0x2a, 0xff}}},\n};\n\n// 0x070048B0 - 0x070049B0\nstatic const Vtx wmotr_seg7_vertex_070048B0[] = {\n    {{{ -1118,  -1433,   4835}, 0, {  -252,    422}, {0xb2, 0x25, 0x5c, 0xff}}},\n    {{{ -1080,  -1371,   4791}, 0, {  -176,    334}, {0xce, 0x69, 0x31, 0xff}}},\n    {{{ -1204,  -1433,   4626}, 0, {  -422,      4}, {0x8d, 0x34, 0x0b, 0xff}}},\n    {{{ -1148,  -1371,   4623}, 0, {  -312,     -2}, {0xc5, 0x70, 0x02, 0xff}}},\n    {{{ -1099,  -1371,   4467}, 0, {  -212,   -312}, {0xc6, 0x6b, 0xdd, 0xff}}},\n    {{{  -932,  -1433,   4913}, 0, {   118,    578}, {0xb8, 0x57, 0x39, 0xff}}},\n    {{{  -931,  -1371,   4853}, 0, {   120,    458}, {0x01, 0x71, 0x39, 0xff}}},\n    {{{  -924,  -1433,   5092}, 0, {   134,    934}, {0x91, 0x2c, 0x2a, 0xff}}},\n    {{{  -857,  -1378,   5075}, 0, {   268,    900}, {0xc7, 0x6f, 0x11, 0xff}}},\n    {{{  -863,  -1378,   4932}, 0, {   256,    616}, {0xd3, 0x75, 0xf0, 0xff}}},\n    {{{  -723,  -1378,   4770}, 0, {   536,    292}, {0xfb, 0x7d, 0x0f, 0xff}}},\n    {{{  -767,  -1369,   4775}, 0, {   448,    302}, {0x15, 0x73, 0x2f, 0xff}}},\n    {{{  -823,  -1433,   5255}, 0, {   336,   1258}, {0xb8, 0x37, 0x57, 0xff}}},\n    {{{  -776,  -1378,   5205}, 0, {   430,   1160}, {0xdf, 0x71, 0x2e, 0xff}}},\n    {{{  -594,  -1433,   5355}, 0, {   792,   1458}, {0xf9, 0x37, 0x71, 0xff}}},\n    {{{  -593,  -1378,   5286}, 0, {   794,   1320}, {0x00, 0x71, 0x38, 0xff}}},\n};\n\n// 0x070049B0 - 0x07004AB0\nstatic const Vtx wmotr_seg7_vertex_070049B0[] = {\n    {{{  -372,  -1433,   5301}, 0, {  1234,   1350}, {0x46, 0x39, 0x58, 0xff}}},\n    {{{  -593,  -1378,   5286}, 0, {   794,   1320}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -594,  -1433,   5355}, 0, {   792,   1458}, {0xf9, 0x37, 0x71, 0xff}}},\n    {{{  -271,  -1433,   5130}, 0, {  1436,   1010}, {0x2b, 0x52, 0x56, 0xff}}},\n    {{{  -416,  -1378,   5243}, 0, {  1148,   1234}, {0x25, 0x72, 0x27, 0xff}}},\n    {{{  -335,  -1378,   5106}, 0, {  1310,    962}, {0x31, 0x74, 0x08, 0xff}}},\n    {{{  -333,  -1385,   4944}, 0, {  1312,    640}, {0x10, 0x7d, 0x02, 0xff}}},\n    {{{  -232,  -1385,   5068}, 0, {  1516,    888}, {0xf1, 0x75, 0x2e, 0xff}}},\n    {{{   -53,  -1433,   5138}, 0, {  1872,   1024}, {0x26, 0x39, 0x6a, 0xff}}},\n    {{{   140,  -1433,   4990}, 0, {  2260,    732}, {0x63, 0x35, 0x3a, 0xff}}},\n    {{{   -57,  -1385,   5074}, 0, {  1864,    898}, {0x17, 0x71, 0x33, 0xff}}},\n    {{{   155,  -1433,   4222}, 0, {  2290,   -802}, {0x64, 0x3b, 0xcf, 0xff}}},\n    {{{    78,  -1374,   4255}, 0, {  2136,   -736}, {0x2d, 0x73, 0xe7, 0xff}}},\n    {{{   100,  -1374,   4389}, 0, {  2180,   -468}, {0x35, 0x72, 0x07, 0xff}}},\n    {{{   194,  -1433,   4719}, 0, {  2366,    190}, {0x71, 0x35, 0xeb, 0xff}}},\n    {{{    97,  -1385,   4956}, 0, {  2174,    662}, {0x36, 0x6f, 0x19, 0xff}}},\n};\n\n// 0x07004AB0 - 0x07004BB0\nstatic const Vtx wmotr_seg7_vertex_07004AB0[] = {\n    {{{   194,  -1433,   4719}, 0, {  2366,    190}, {0x71, 0x35, 0xeb, 0xff}}},\n    {{{   140,  -1385,   4739}, 0, {  2260,    230}, {0x38, 0x70, 0xf2, 0xff}}},\n    {{{    97,  -1385,   4956}, 0, {  2174,    662}, {0x36, 0x6f, 0x19, 0xff}}},\n    {{{   108,  -1433,   4571}, 0, {  2196,   -104}, {0x5e, 0x55, 0x01, 0xff}}},\n    {{{   -51,  -1385,   4577}, 0, {  1876,    -94}, {0x0f, 0x7d, 0xfc, 0xff}}},\n    {{{    72,  -1385,   4621}, 0, {  2124,     -6}, {0x1f, 0x75, 0xdb, 0xff}}},\n    {{{    44,  -1374,   4507}, 0, {  2068,   -232}, {0x17, 0x78, 0x20, 0xff}}},\n    {{{   100,  -1374,   4389}, 0, {  2180,   -468}, {0x35, 0x72, 0x07, 0xff}}},\n    {{{   186,  -1433,   4408}, 0, {  2352,   -430}, {0x75, 0x30, 0x07, 0xff}}},\n    {{{   155,  -1433,   4222}, 0, {  2290,   -802}, {0x64, 0x3b, 0xcf, 0xff}}},\n    {{{  -723,  -1378,   4770}, 0, {   536,    292}, {0xfb, 0x7d, 0x0f, 0xff}}},\n    {{{  -627,  -1366,   4720}, 0, {   726,    192}, {0xf5, 0x7c, 0x16, 0xff}}},\n    {{{  -767,  -1369,   4775}, 0, {   448,    302}, {0x15, 0x73, 0x2f, 0xff}}},\n    {{{  -667,  -1371,   4600}, 0, {   646,    -46}, {0x06, 0x7e, 0xf2, 0xff}}},\n    {{{  -525,  -1367,   4822}, 0, {   930,    396}, {0x04, 0x7e, 0x05, 0xff}}},\n    {{{  -522,  -1352,   4782}, 0, {   938,    316}, {0x00, 0x7b, 0x1d, 0xff}}},\n};\n\n// 0x07004BB0 - 0x07004CA0\nstatic const Vtx wmotr_seg7_vertex_07004BB0[] = {\n    {{{  -522,  -1352,   4782}, 0, {   938,    316}, {0x00, 0x7b, 0x1d, 0xff}}},\n    {{{  -495,  -1343,   4608}, 0, {   990,      0}, {0xfd, 0x7e, 0xf7, 0xff}}},\n    {{{  -627,  -1366,   4720}, 0, {   726,    192}, {0xf5, 0x7c, 0x16, 0xff}}},\n    {{{  -667,  -1371,   4600}, 0, {   646,    -46}, {0x06, 0x7e, 0xf2, 0xff}}},\n    {{{  -571,  -1390,   4462}, 0, {   838,   -322}, {0xfb, 0x7e, 0xf8, 0xff}}},\n    {{{  -696,  -1396,   4485}, 0, {   590,   -276}, {0x19, 0x7a, 0xed, 0xff}}},\n    {{{  -902,  -1333,   4612}, 0, {   178,    -24}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  -778,  -1370,   4435}, 0, {   426,   -376}, {0x21, 0x6f, 0xce, 0xff}}},\n    {{{  -767,  -1369,   4775}, 0, {   448,    302}, {0x15, 0x73, 0x2f, 0xff}}},\n    {{{  -931,  -1371,   4853}, 0, {   120,    458}, {0x01, 0x71, 0x39, 0xff}}},\n    {{{  -863,  -1378,   4932}, 0, {   256,    616}, {0xd3, 0x75, 0xf0, 0xff}}},\n    {{{  -588,  -1338,   5008}, 0, {   806,    766}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  -723,  -1378,   4770}, 0, {   536,    292}, {0xfb, 0x7d, 0x0f, 0xff}}},\n    {{{  -525,  -1367,   4822}, 0, {   930,    396}, {0x04, 0x7e, 0x05, 0xff}}},\n    {{{  -731,  -1391,   4441}, 0, {   520,   -364}, {0x12, 0x7d, 0xf8, 0xff}}},\n};\n\n// 0x07004CA0 - 0x07004DA0\nstatic const Vtx wmotr_seg7_vertex_07004CA0[] = {\n    {{{  -357,  -1376,   4909}, 0, {  1266,    570}, {0x28, 0x76, 0xee, 0xff}}},\n    {{{  -365,  -1390,   4856}, 0, {  1250,    464}, {0x19, 0x7b, 0xf1, 0xff}}},\n    {{{  -525,  -1367,   4822}, 0, {   930,    396}, {0x04, 0x7e, 0x05, 0xff}}},\n    {{{  -356,  -1385,   4777}, 0, {  1266,    306}, {0x08, 0x7d, 0x12, 0xff}}},\n    {{{  -522,  -1352,   4782}, 0, {   938,    316}, {0x00, 0x7b, 0x1d, 0xff}}},\n    {{{  -588,  -1338,   5008}, 0, {   806,    766}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  -447,  -1384,   4448}, 0, {  1086,   -350}, {0xfe, 0x7a, 0xe1, 0xff}}},\n    {{{  -420,  -1396,   4345}, 0, {  1140,   -556}, {0xfb, 0x7e, 0xfb, 0xff}}},\n    {{{  -571,  -1390,   4462}, 0, {   838,   -322}, {0xfb, 0x7e, 0xf8, 0xff}}},\n    {{{  -495,  -1343,   4608}, 0, {   990,      0}, {0xfd, 0x7e, 0xf7, 0xff}}},\n    {{{  -645,  -1368,   4292}, 0, {   690,   -662}, {0xfe, 0x7e, 0x00, 0xff}}},\n    {{{  -731,  -1391,   4441}, 0, {   520,   -364}, {0x12, 0x7d, 0xf8, 0xff}}},\n    {{{  -696,  -1396,   4485}, 0, {   590,   -276}, {0x19, 0x7a, 0xed, 0xff}}},\n    {{{  -778,  -1370,   4435}, 0, {   426,   -376}, {0x21, 0x6f, 0xce, 0xff}}},\n    {{{  -341,  -1360,   4521}, 0, {  1298,   -204}, {0x17, 0x7b, 0xec, 0xff}}},\n    {{{  -307,  -1374,   4503}, 0, {  1366,   -240}, {0xfe, 0x7e, 0xff, 0xff}}},\n};\n\n// 0x07004DA0 - 0x07004EA0\nstatic const Vtx wmotr_seg7_vertex_07004DA0[] = {\n    {{{  -307,  -1374,   4503}, 0, {  1366,   -240}, {0xfe, 0x7e, 0xff, 0xff}}},\n    {{{  -369,  -1374,   4300}, 0, {  1242,   -646}, {0xd3, 0x76, 0xf6, 0xff}}},\n    {{{  -420,  -1396,   4345}, 0, {  1140,   -556}, {0xfb, 0x7e, 0xfb, 0xff}}},\n    {{{  -414,  -1402,   4291}, 0, {  1152,   -662}, {0xf9, 0x7d, 0xf0, 0xff}}},\n    {{{  -450,  -1396,   4135}, 0, {  1080,   -976}, {0x1d, 0x7a, 0xf2, 0xff}}},\n    {{{  -121,  -1372,   4556}, 0, {  1736,   -136}, {0x03, 0x7b, 0x1e, 0xff}}},\n    {{{  -222,  -1381,   4595}, 0, {  1536,    -58}, {0x01, 0x7b, 0x1e, 0xff}}},\n    {{{  -258,  -1385,   4615}, 0, {  1462,    -16}, {0x14, 0x7c, 0x08, 0xff}}},\n    {{{  -341,  -1360,   4521}, 0, {  1298,   -204}, {0x17, 0x7b, 0xec, 0xff}}},\n    {{{   -72,  -1352,   4818}, 0, {  1834,    388}, {0x01, 0x7e, 0xfe, 0xff}}},\n    {{{  -356,  -1385,   4777}, 0, {  1266,    306}, {0x08, 0x7d, 0x12, 0xff}}},\n    {{{  -302,  -1374,   4143}, 0, {  1376,   -958}, {0xe5, 0x78, 0xe3, 0xff}}},\n    {{{  -145,  -1340,   4333}, 0, {  1690,   -580}, {0x01, 0x7e, 0xff, 0xff}}},\n    {{{   -89,  -1384,   4576}, 0, {  1800,    -94}, {0x06, 0x7c, 0x15, 0xff}}},\n    {{{   -51,  -1385,   4577}, 0, {  1876,    -94}, {0x0f, 0x7d, 0xfc, 0xff}}},\n    {{{    44,  -1374,   4507}, 0, {  2068,   -232}, {0x17, 0x78, 0x20, 0xff}}},\n};\n\n// 0x07004EA0 - 0x07004FA0\nstatic const Vtx wmotr_seg7_vertex_07004EA0[] = {\n    {{{  -258,  -1385,   4615}, 0, {  1462,    -16}, {0x14, 0x7c, 0x08, 0xff}}},\n    {{{  -341,  -1360,   4521}, 0, {  1298,   -204}, {0x17, 0x7b, 0xec, 0xff}}},\n    {{{  -309,  -1367,   4614}, 0, {  1360,    -20}, {0x1d, 0x7b, 0x06, 0xff}}},\n    {{{  -378,  -1364,   4733}, 0, {  1224,    218}, {0x1d, 0x79, 0x16, 0xff}}},\n    {{{  -356,  -1385,   4777}, 0, {  1266,    306}, {0x08, 0x7d, 0x12, 0xff}}},\n    {{{  -495,  -1343,   4608}, 0, {   990,      0}, {0xfd, 0x7e, 0xf7, 0xff}}},\n    {{{  -522,  -1352,   4782}, 0, {   938,    316}, {0x00, 0x7b, 0x1d, 0xff}}},\n    {{{  -357,  -1376,   4909}, 0, {  1266,    570}, {0x28, 0x76, 0xee, 0xff}}},\n    {{{  -333,  -1385,   4944}, 0, {  1312,    640}, {0x10, 0x7d, 0x02, 0xff}}},\n    {{{  -365,  -1390,   4856}, 0, {  1250,    464}, {0x19, 0x7b, 0xf1, 0xff}}},\n    {{{   -72,  -1352,   4818}, 0, {  1834,    388}, {0x01, 0x7e, 0xfe, 0xff}}},\n    {{{  -335,  -1378,   5106}, 0, {  1310,    962}, {0x31, 0x74, 0x08, 0xff}}},\n    {{{  -588,  -1338,   5008}, 0, {   806,    766}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{    44,  -1374,   4507}, 0, {  2068,   -232}, {0x17, 0x78, 0x20, 0xff}}},\n    {{{   100,  -1374,   4389}, 0, {  2180,   -468}, {0x35, 0x72, 0x07, 0xff}}},\n    {{{  -145,  -1340,   4333}, 0, {  1690,   -580}, {0x01, 0x7e, 0xff, 0xff}}},\n};\n\n// 0x07004FA0 - 0x070050A0\nstatic const Vtx wmotr_seg7_vertex_07004FA0[] = {\n    {{{    72,  -1385,   4621}, 0, {  2124,     -6}, {0x1f, 0x75, 0xdb, 0xff}}},\n    {{{   -51,  -1385,   4577}, 0, {  1876,    -94}, {0x0f, 0x7d, 0xfc, 0xff}}},\n    {{{   -72,  -1352,   4818}, 0, {  1834,    388}, {0x01, 0x7e, 0xfe, 0xff}}},\n    {{{  -232,  -1385,   5068}, 0, {  1516,    888}, {0xf1, 0x75, 0x2e, 0xff}}},\n    {{{   -57,  -1385,   5074}, 0, {  1864,    898}, {0x17, 0x71, 0x33, 0xff}}},\n    {{{  -333,  -1385,   4944}, 0, {  1312,    640}, {0x10, 0x7d, 0x02, 0xff}}},\n    {{{   140,  -1385,   4739}, 0, {  2260,    230}, {0x38, 0x70, 0xf2, 0xff}}},\n    {{{   -89,  -1384,   4576}, 0, {  1800,    -94}, {0x06, 0x7c, 0x15, 0xff}}},\n    {{{  -258,  -1385,   4615}, 0, {  1462,    -16}, {0x14, 0x7c, 0x08, 0xff}}},\n    {{{    97,  -1385,   4956}, 0, {  2174,    662}, {0x36, 0x6f, 0x19, 0xff}}},\n    {{{  -162,  -1374,   4093}, 0, {  1656,  -1058}, {0xfc, 0x75, 0xd2, 0xff}}},\n    {{{  -302,  -1374,   4143}, 0, {  1376,   -958}, {0xe5, 0x78, 0xe3, 0xff}}},\n    {{{  -145,  -1340,   4333}, 0, {  1690,   -580}, {0x01, 0x7e, 0xff, 0xff}}},\n    {{{  -450,  -1396,   4135}, 0, {  1080,   -976}, {0x1d, 0x7a, 0xf2, 0xff}}},\n    {{{  -591,  -1396,   4058}, 0, {   798,  -1128}, {0x06, 0x7a, 0xdf, 0xff}}},\n    {{{  -645,  -1368,   4292}, 0, {   690,   -662}, {0xfe, 0x7e, 0x00, 0xff}}},\n};\n\n// 0x070050A0 - 0x07005190\nstatic const Vtx wmotr_seg7_vertex_070050A0[] = {\n    {{{  -420,  -1396,   4345}, 0, {  1140,   -556}, {0xfb, 0x7e, 0xfb, 0xff}}},\n    {{{  -450,  -1396,   4135}, 0, {  1080,   -976}, {0x1d, 0x7a, 0xf2, 0xff}}},\n    {{{  -645,  -1368,   4292}, 0, {   690,   -662}, {0xfe, 0x7e, 0x00, 0xff}}},\n    {{{  -731,  -1391,   4441}, 0, {   520,   -364}, {0x12, 0x7d, 0xf8, 0xff}}},\n    {{{  -763,  -1392,   4410}, 0, {   454,   -426}, {0x06, 0x7c, 0xea, 0xff}}},\n    {{{  -778,  -1370,   4435}, 0, {   426,   -376}, {0x21, 0x6f, 0xce, 0xff}}},\n    {{{  -874,  -1396,   4314}, 0, {   234,   -618}, {0xe9, 0x7c, 0x05, 0xff}}},\n    {{{  -814,  -1396,   4393}, 0, {   352,   -460}, {0x07, 0x78, 0xda, 0xff}}},\n    {{{  -591,  -1396,   4058}, 0, {   798,  -1128}, {0x06, 0x7a, 0xdf, 0xff}}},\n    {{{  -739,  -1396,   4076}, 0, {   504,  -1092}, {0xf1, 0x7a, 0xe5, 0xff}}},\n    {{{  -841,  -1396,   4167}, 0, {   298,   -910}, {0xe4, 0x7b, 0xf3, 0xff}}},\n    {{{  -902,  -1333,   4612}, 0, {   178,    -24}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  -968,  -1371,   4380}, 0, {    46,   -486}, {0xf2, 0x6b, 0xbf, 0xff}}},\n    {{{  -871,  -1400,   4365}, 0, {   240,   -516}, {0x02, 0x74, 0xce, 0xff}}},\n    {{{ -1099,  -1371,   4467}, 0, {  -212,   -312}, {0xc6, 0x6b, 0xdd, 0xff}}},\n};\n\n// 0x07005190 - 0x07005290\nstatic const Vtx wmotr_seg7_vertex_07005190[] = {\n    {{{  -863,  -1378,   4932}, 0, {   256,    616}, {0xd3, 0x75, 0xf0, 0xff}}},\n    {{{  -857,  -1378,   5075}, 0, {   268,    900}, {0xc7, 0x6f, 0x11, 0xff}}},\n    {{{  -588,  -1338,   5008}, 0, {   806,    766}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{ -1080,  -1371,   4791}, 0, {  -176,    334}, {0xce, 0x69, 0x31, 0xff}}},\n    {{{  -931,  -1371,   4853}, 0, {   120,    458}, {0x01, 0x71, 0x39, 0xff}}},\n    {{{  -902,  -1333,   4612}, 0, {   178,    -24}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  -416,  -1378,   5243}, 0, {  1148,   1234}, {0x25, 0x72, 0x27, 0xff}}},\n    {{{  -335,  -1378,   5106}, 0, {  1310,    962}, {0x31, 0x74, 0x08, 0xff}}},\n    {{{   -22,  -1374,   4138}, 0, {  1934,   -970}, {0x19, 0x74, 0xd4, 0xff}}},\n    {{{  -162,  -1374,   4093}, 0, {  1656,  -1058}, {0xfc, 0x75, 0xd2, 0xff}}},\n    {{{  -145,  -1340,   4333}, 0, {  1690,   -580}, {0x01, 0x7e, 0xff, 0xff}}},\n    {{{    78,  -1374,   4255}, 0, {  2136,   -736}, {0x2d, 0x73, 0xe7, 0xff}}},\n    {{{   100,  -1374,   4389}, 0, {  2180,   -468}, {0x35, 0x72, 0x07, 0xff}}},\n    {{{  -776,  -1378,   5205}, 0, {   430,   1160}, {0xdf, 0x71, 0x2e, 0xff}}},\n    {{{ -1099,  -1371,   4467}, 0, {  -212,   -312}, {0xc6, 0x6b, 0xdd, 0xff}}},\n    {{{ -1148,  -1371,   4623}, 0, {  -312,     -2}, {0xc5, 0x70, 0x02, 0xff}}},\n};\n\n// 0x07005290 - 0x07005390\nstatic const Vtx wmotr_seg7_vertex_07005290[] = {\n    {{{  -593,  -1378,   5286}, 0, {   794,   1320}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  -416,  -1378,   5243}, 0, {  1148,   1234}, {0x25, 0x72, 0x27, 0xff}}},\n    {{{  -588,  -1338,   5008}, 0, {   806,    766}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  -776,  -1378,   5205}, 0, {   430,   1160}, {0xdf, 0x71, 0x2e, 0xff}}},\n    {{{ -2667,   4403,  -3227}, 0, {  1960,   1740}, {0x3e, 0xa5, 0x3e, 0xff}}},\n    {{{ -2658,   4468,  -3208}, 0, {  1978,   1778}, {0x5e, 0x2d, 0x46, 0xff}}},\n    {{{ -2825,   4468,  -3096}, 0, {  1644,   2002}, {0x1c, 0x07, 0x7b, 0xff}}},\n    {{{ -2130,   4403,  -3688}, 0, {  3032,    822}, {0x34, 0xa6, 0x47, 0xff}}},\n    {{{ -2302,   4468,  -3584}, 0, {  2688,   1026}, {0x2a, 0x10, 0x76, 0xff}}},\n    {{{ -2318,   4403,  -3596}, 0, {  2656,   1004}, {0x16, 0xaa, 0x5a, 0xff}}},\n    {{{ -2468,   4468,  -3562}, 0, {  2358,   1072}, {0xfe, 0x12, 0x7d, 0xff}}},\n    {{{ -2481,   4403,  -3574}, 0, {  2330,   1048}, {0xf0, 0xaf, 0x5f, 0xff}}},\n    {{{ -2635,   4468,  -3618}, 0, {  2024,    962}, {0x29, 0x47, 0x60, 0xff}}},\n    {{{ -2645,   4403,  -3629}, 0, {  2004,    940}, {0x18, 0x84, 0x07, 0xff}}},\n    {{{ -2110,   4468,  -3678}, 0, {  3072,    842}, {0x5a, 0x03, 0x59, 0xff}}},\n    {{{ -2579,   4468,  -3385}, 0, {  2134,   1426}, {0x7c, 0x17, 0x01, 0xff}}},\n};\n\n// 0x07005390 - 0x07005490\nstatic const Vtx wmotr_seg7_vertex_07005390[] = {\n    {{{ -2645,   4403,  -3629}, 0, {  2004,    940}, {0x18, 0x84, 0x07, 0xff}}},\n    {{{ -2579,   4468,  -3385}, 0, {  2134,   1426}, {0x7c, 0x17, 0x01, 0xff}}},\n    {{{ -2591,   4403,  -3401}, 0, {  2112,   1394}, {0x6b, 0xc1, 0x15, 0xff}}},\n    {{{ -2658,   4468,  -3208}, 0, {  1978,   1778}, {0x5e, 0x2d, 0x46, 0xff}}},\n    {{{ -2667,   4403,  -3227}, 0, {  1960,   1740}, {0x3e, 0xa5, 0x3e, 0xff}}},\n    {{{ -3488,   4403,  -3316}, 0, {   322,   1562}, {0x22, 0xc1, 0x68, 0xff}}},\n    {{{ -3704,   4468,  -3257}, 0, {  -108,   1682}, {0xf6, 0x12, 0x7d, 0xff}}},\n    {{{ -3693,   4403,  -3275}, 0, {   -86,   1644}, {0xe6, 0xa4, 0x52, 0xff}}},\n    {{{ -2825,   4468,  -3096}, 0, {  1644,   2002}, {0x1c, 0x07, 0x7b, 0xff}}},\n    {{{ -2831,   4403,  -3118}, 0, {  1632,   1958}, {0x0f, 0x97, 0x45, 0xff}}},\n    {{{ -3069,   4468,  -3131}, 0, {  1158,   1932}, {0xd2, 0x40, 0x62, 0xff}}},\n    {{{ -3070,   4403,  -3152}, 0, {  1154,   1890}, {0xd7, 0xaf, 0x58, 0xff}}},\n    {{{ -3216,   4468,  -3264}, 0, {   864,   1668}, {0x9d, 0x12, 0x4c, 0xff}}},\n    {{{ -3214,   4403,  -3282}, 0, {   868,   1630}, {0xc1, 0x9e, 0x31, 0xff}}},\n    {{{ -3299,   4468,  -3424}, 0, {   698,   1348}, {0xe5, 0x59, 0x56, 0xff}}},\n    {{{ -3296,   4403,  -3439}, 0, {   704,   1316}, {0xf7, 0x87, 0x24, 0xff}}},\n};\n\n// 0x07005490 - 0x07005590\nstatic const Vtx wmotr_seg7_vertex_07005490[] = {\n    {{{ -3296,   4403,  -3439}, 0, {   704,   1316}, {0xf7, 0x87, 0x24, 0xff}}},\n    {{{ -3495,   4468,  -3298}, 0, {   308,   1598}, {0x31, 0x25, 0x6e, 0xff}}},\n    {{{ -3488,   4403,  -3316}, 0, {   322,   1562}, {0x22, 0xc1, 0x68, 0xff}}},\n    {{{ -3299,   4468,  -3424}, 0, {   698,   1348}, {0xe5, 0x59, 0x56, 0xff}}},\n    {{{ -3704,   4468,  -3257}, 0, {  -108,   1682}, {0xf6, 0x12, 0x7d, 0xff}}},\n    {{{ -3760,   4403,  -3918}, 0, {  -220,    364}, {0xfc, 0x83, 0x11, 0xff}}},\n    {{{ -3773,   4468,  -3912}, 0, {  -246,    374}, {0xa0, 0x50, 0xec, 0xff}}},\n    {{{ -3916,   4468,  -3899}, 0, {  -532,    402}, {0xf3, 0x30, 0x74, 0xff}}},\n    {{{ -3693,   4403,  -3275}, 0, {   -86,   1644}, {0xe6, 0xa4, 0x52, 0xff}}},\n    {{{ -3885,   4468,  -3368}, 0, {  -470,   1458}, {0xa3, 0x20, 0x50, 0xff}}},\n    {{{ -3870,   4403,  -3385}, 0, {  -440,   1426}, {0xca, 0x98, 0x2e, 0xff}}},\n    {{{ -3952,   4403,  -3576}, 0, {  -604,   1044}, {0xa0, 0xb0, 0x10, 0xff}}},\n    {{{ -3969,   4468,  -3564}, 0, {  -636,   1068}, {0x87, 0x20, 0x14, 0xff}}},\n    {{{ -3957,   4468,  -3735}, 0, {  -612,    728}, {0x8e, 0x28, 0xdc, 0xff}}},\n    {{{ -3940,   4403,  -3744}, 0, {  -580,    710}, {0xaa, 0xad, 0xd8, 0xff}}},\n    {{{ -3871,   4468,  -3857}, 0, {  -442,    486}, {0xa9, 0x15, 0xa8, 0xff}}},\n};\n\n// 0x07005590 - 0x07005690\nstatic const Vtx wmotr_seg7_vertex_07005590[] = {\n    {{{ -3940,   4403,  -3744}, 0, {  -580,    710}, {0xaa, 0xad, 0xd8, 0xff}}},\n    {{{ -3871,   4468,  -3857}, 0, {  -442,    486}, {0xa9, 0x15, 0xa8, 0xff}}},\n    {{{ -3857,   4403,  -3863}, 0, {  -412,    472}, {0xc2, 0xb5, 0xb0, 0xff}}},\n    {{{ -3773,   4468,  -3912}, 0, {  -246,    374}, {0xa0, 0x50, 0xec, 0xff}}},\n    {{{ -3760,   4403,  -3918}, 0, {  -220,    364}, {0xfc, 0x83, 0x11, 0xff}}},\n    {{{ -4123,   4403,  -4499}, 0, {  -946,   -796}, {0xc5, 0xa7, 0xbe, 0xff}}},\n    {{{ -3961,   4468,  -4610}, 0, {  -620,  -1018}, {0xd9, 0x17, 0x8a, 0xff}}},\n    {{{ -3944,   4403,  -4601}, 0, {  -588,  -1000}, {0xf0, 0xad, 0xa2, 0xff}}},\n    {{{ -3916,   4468,  -3899}, 0, {  -532,    402}, {0xf3, 0x30, 0x74, 0xff}}},\n    {{{ -3901,   4403,  -3904}, 0, {  -500,    390}, {0xe6, 0xca, 0x6f, 0xff}}},\n    {{{ -4115,   4468,  -3983}, 0, {  -930,    234}, {0xb0, 0x0d, 0x61, 0xff}}},\n    {{{ -4096,   4403,  -3987}, 0, {  -890,    226}, {0xcf, 0x9c, 0x3b, 0xff}}},\n    {{{ -4220,   4468,  -4143}, 0, { -1138,    -86}, {0x96, 0x3e, 0x20, 0xff}}},\n    {{{ -4198,   4403,  -4144}, 0, { -1094,    -88}, {0xc3, 0x93, 0x12, 0xff}}},\n    {{{ -4220,   4468,  -4324}, 0, { -1138,   -448}, {0x84, 0x12, 0xed, 0xff}}},\n    {{{ -4198,   4403,  -4322}, 0, { -1094,   -442}, {0x9c, 0xb8, 0xe5, 0xff}}},\n};\n\n// 0x07005690 - 0x07005790\nstatic const Vtx wmotr_seg7_vertex_07005690[] = {\n    {{{ -4198,   4403,  -4322}, 0, { -1094,   -442}, {0x9c, 0xb8, 0xe5, 0xff}}},\n    {{{ -4220,   4468,  -4324}, 0, { -1138,   -448}, {0x84, 0x12, 0xed, 0xff}}},\n    {{{ -4143,   4468,  -4505}, 0, {  -986,   -810}, {0xa5, 0x30, 0xb7, 0xff}}},\n    {{{ -4123,   4403,  -4499}, 0, {  -946,   -796}, {0xc5, 0xa7, 0xbe, 0xff}}},\n    {{{ -3961,   4468,  -4610}, 0, {  -620,  -1018}, {0xd9, 0x17, 0x8a, 0xff}}},\n    {{{ -3463,   4403,  -5203}, 0, {   372,  -2200}, {0xf7, 0xa5, 0xa9, 0xff}}},\n    {{{ -3470,   4468,  -5223}, 0, {   358,  -2242}, {0xe5, 0x2b, 0x8c, 0xff}}},\n    {{{ -3223,   4468,  -5217}, 0, {   850,  -2230}, {0x1b, 0x3a, 0x93, 0xff}}},\n    {{{ -3944,   4403,  -4601}, 0, {  -588,  -1000}, {0xf0, 0xad, 0xa2, 0xff}}},\n    {{{ -3763,   4468,  -4612}, 0, {  -226,  -1022}, {0xc9, 0x53, 0xb3, 0xff}}},\n    {{{ -3751,   4403,  -4604}, 0, {  -202,  -1006}, {0xe9, 0x84, 0x00, 0xff}}},\n    {{{ -3840,   4468,  -4750}, 0, {  -380,  -1298}, {0x93, 0x39, 0x1b, 0xff}}},\n    {{{ -3826,   4403,  -4739}, 0, {  -352,  -1274}, {0x92, 0xc3, 0x09, 0xff}}},\n    {{{ -3818,   4468,  -4919}, 0, {  -336,  -1636}, {0x8f, 0x2d, 0xdd, 0xff}}},\n    {{{ -3804,   4403,  -4905}, 0, {  -308,  -1606}, {0xad, 0xa7, 0xde, 0xff}}},\n    {{{ -3691,   4468,  -5138}, 0, {   -82,  -2072}, {0xa8, 0x19, 0xa9, 0xff}}},\n};\n\n// 0x07005790 - 0x07005890\nstatic const Vtx wmotr_seg7_vertex_07005790[] = {\n    {{{ -3804,   4403,  -4905}, 0, {  -308,  -1606}, {0xad, 0xa7, 0xde, 0xff}}},\n    {{{ -3691,   4468,  -5138}, 0, {   -82,  -2072}, {0xa8, 0x19, 0xa9, 0xff}}},\n    {{{ -3680,   4403,  -5119}, 0, {   -60,  -2034}, {0xd0, 0xa4, 0xb9, 0xff}}},\n    {{{ -3470,   4468,  -5223}, 0, {   358,  -2242}, {0xe5, 0x2b, 0x8c, 0xff}}},\n    {{{ -3463,   4403,  -5203}, 0, {   372,  -2200}, {0xf7, 0xa5, 0xa9, 0xff}}},\n    {{{ -2622,   4403,  -5197}, 0, {  2050,  -2190}, {0x0b, 0xa3, 0xab, 0xff}}},\n    {{{ -2330,   4468,  -5105}, 0, {  2634,  -2006}, {0x4a, 0x24, 0xa0, 0xff}}},\n    {{{ -2346,   4403,  -5087}, 0, {  2600,  -1970}, {0x3c, 0xa2, 0xc5, 0xff}}},\n    {{{ -3223,   4468,  -5217}, 0, {   850,  -2230}, {0x1b, 0x3a, 0x93, 0xff}}},\n    {{{ -3221,   4403,  -5196}, 0, {   854,  -2188}, {0x22, 0xa7, 0xae, 0xff}}},\n    {{{ -3013,   4468,  -5084}, 0, {  1268,  -1964}, {0x56, 0x1f, 0xa8, 0xff}}},\n    {{{ -3016,   4403,  -5066}, 0, {  1264,  -1928}, {0x4b, 0xac, 0xc8, 0xff}}},\n    {{{ -2944,   4468,  -4945}, 0, {  1408,  -1686}, {0x02, 0x58, 0xa5, 0xff}}},\n    {{{ -2947,   4403,  -4930}, 0, {  1400,  -1656}, {0x00, 0x82, 0xf3, 0xff}}},\n    {{{ -2848,   4468,  -5127}, 0, {  1598,  -2050}, {0xaa, 0x2b, 0xae, 0xff}}},\n    {{{ -2854,   4403,  -5108}, 0, {  1588,  -2012}, {0xb3, 0xce, 0xaa, 0xff}}},\n};\n\n// 0x07005890 - 0x07005990\nstatic const Vtx wmotr_seg7_vertex_07005890[] = {\n    {{{ -2854,   4403,  -5108}, 0, {  1588,  -2012}, {0xb3, 0xce, 0xaa, 0xff}}},\n    {{{ -2848,   4468,  -5127}, 0, {  1598,  -2050}, {0xaa, 0x2b, 0xae, 0xff}}},\n    {{{ -2612,   4468,  -5218}, 0, {  2070,  -2232}, {0xf7, 0x32, 0x8d, 0xff}}},\n    {{{ -2622,   4403,  -5197}, 0, {  2050,  -2190}, {0x0b, 0xa3, 0xab, 0xff}}},\n    {{{ -2330,   4468,  -5105}, 0, {  2634,  -2006}, {0x4a, 0x24, 0xa0, 0xff}}},\n    {{{ -2346,   4403,  -5087}, 0, {  2600,  -1970}, {0x3c, 0xa2, 0xc5, 0xff}}},\n    {{{ -2176,   4468,  -4868}, 0, {  2940,  -1534}, {0x74, 0x27, 0xdf, 0xff}}},\n    {{{ -2195,   4403,  -4854}, 0, {  2902,  -1506}, {0x56, 0xa4, 0xf4, 0xff}}},\n    {{{ -2190,   4468,  -4624}, 0, {  2912,  -1046}, {0x6f, 0x13, 0x39, 0xff}}},\n    {{{ -2209,   4403,  -4615}, 0, {  2874,  -1028}, {0x45, 0x9c, 0x22, 0xff}}},\n    {{{ -2380,   4403,  -4465}, 0, {  2532,   -728}, {0x15, 0x84, 0x07, 0xff}}},\n    {{{ -2365,   4468,  -4470}, 0, {  2564,   -740}, {0x5a, 0x56, 0xe8, 0xff}}},\n    {{{ -2189,   4403,  -4410}, 0, {  2914,   -618}, {0x33, 0xc3, 0x9e, 0xff}}},\n    {{{ -2169,   4468,  -4415}, 0, {  2954,   -628}, {0x48, 0x29, 0xa0, 0xff}}},\n    {{{ -2025,   4403,  -4198}, 0, {  3242,   -196}, {0x59, 0xad, 0xde, 0xff}}},\n    {{{ -2002,   4468,  -4198}, 0, {  3288,   -196}, {0x72, 0x26, 0xdb, 0xff}}},\n};\n\n// 0x07005990 - 0x07005A90\nstatic const Vtx wmotr_seg7_vertex_07005990[] = {\n    {{{ -2025,   4403,  -4198}, 0, {  3242,   -196}, {0x59, 0xad, 0xde, 0xff}}},\n    {{{ -1981,   4468,  -3884}, 0, {  3330,    430}, {0x7a, 0x12, 0x1d, 0xff}}},\n    {{{ -2004,   4403,  -3890}, 0, {  3284,    418}, {0x50, 0xa3, 0x1d, 0xff}}},\n    {{{ -2002,   4468,  -4198}, 0, {  3288,   -196}, {0x72, 0x26, 0xdb, 0xff}}},\n    {{{ -2110,   4468,  -3678}, 0, {  3072,    842}, {0x5a, 0x03, 0x59, 0xff}}},\n    {{{ -2130,   4403,  -3688}, 0, {  3032,    822}, {0x34, 0xa6, 0x47, 0xff}}},\n    {{{ -3760,   4403,  -3918}, 0, {  -220,    364}, {0xfc, 0x83, 0x11, 0xff}}},\n    {{{ -4096,   4403,  -3987}, 0, {  -890,    226}, {0xcf, 0x9c, 0x3b, 0xff}}},\n    {{{ -4198,   4403,  -4144}, 0, { -1094,    -88}, {0xc3, 0x93, 0x12, 0xff}}},\n    {{{ -3751,   4403,  -4604}, 0, {  -202,  -1006}, {0xe9, 0x84, 0x00, 0xff}}},\n    {{{ -2947,   4403,  -4930}, 0, {  1400,  -1656}, {0x00, 0x82, 0xf3, 0xff}}},\n    {{{ -2380,   4403,  -4465}, 0, {  2532,   -728}, {0x15, 0x84, 0x07, 0xff}}},\n    {{{ -3901,   4403,  -3904}, 0, {  -500,    390}, {0xe6, 0xca, 0x6f, 0xff}}},\n    {{{ -3296,   4403,  -3439}, 0, {   704,   1316}, {0xf7, 0x87, 0x24, 0xff}}},\n    {{{ -3857,   4403,  -3863}, 0, {  -412,    472}, {0xc2, 0xb5, 0xb0, 0xff}}},\n    {{{ -2645,   4403,  -3629}, 0, {  2004,    940}, {0x18, 0x84, 0x07, 0xff}}},\n};\n\n// 0x07005A90 - 0x07005B80\nstatic const Vtx wmotr_seg7_vertex_07005A90[] = {\n    {{{ -3296,   4403,  -3439}, 0, {   704,   1316}, {0xf7, 0x87, 0x24, 0xff}}},\n    {{{ -3488,   4403,  -3316}, 0, {   322,   1562}, {0x22, 0xc1, 0x68, 0xff}}},\n    {{{ -3693,   4403,  -3275}, 0, {   -86,   1644}, {0xe6, 0xa4, 0x52, 0xff}}},\n    {{{ -2645,   4403,  -3629}, 0, {  2004,    940}, {0x18, 0x84, 0x07, 0xff}}},\n    {{{ -2591,   4403,  -3401}, 0, {  2112,   1394}, {0x6b, 0xc1, 0x15, 0xff}}},\n    {{{ -2667,   4403,  -3227}, 0, {  1960,   1740}, {0x3e, 0xa5, 0x3e, 0xff}}},\n    {{{ -2831,   4403,  -3118}, 0, {  1632,   1958}, {0x0f, 0x97, 0x45, 0xff}}},\n    {{{ -3070,   4403,  -3152}, 0, {  1154,   1890}, {0xd7, 0xaf, 0x58, 0xff}}},\n    {{{ -3214,   4403,  -3282}, 0, {   868,   1630}, {0xc1, 0x9e, 0x31, 0xff}}},\n    {{{ -2380,   4403,  -4465}, 0, {  2532,   -728}, {0x15, 0x84, 0x07, 0xff}}},\n    {{{ -2481,   4403,  -3574}, 0, {  2330,   1048}, {0xf0, 0xaf, 0x5f, 0xff}}},\n    {{{ -3870,   4403,  -3385}, 0, {  -440,   1426}, {0xca, 0x98, 0x2e, 0xff}}},\n    {{{ -3952,   4403,  -3576}, 0, {  -604,   1044}, {0xa0, 0xb0, 0x10, 0xff}}},\n    {{{ -3940,   4403,  -3744}, 0, {  -580,    710}, {0xaa, 0xad, 0xd8, 0xff}}},\n    {{{ -3857,   4403,  -3863}, 0, {  -412,    472}, {0xc2, 0xb5, 0xb0, 0xff}}},\n};\n\n// 0x07005B80 - 0x07005C70\nstatic const Vtx wmotr_seg7_vertex_07005B80[] = {\n    {{{ -3751,   4403,  -4604}, 0, {  -202,  -1006}, {0xe9, 0x84, 0x00, 0xff}}},\n    {{{ -3016,   4403,  -5066}, 0, {  1264,  -1928}, {0x4b, 0xac, 0xc8, 0xff}}},\n    {{{ -2947,   4403,  -4930}, 0, {  1400,  -1656}, {0x00, 0x82, 0xf3, 0xff}}},\n    {{{ -2209,   4403,  -4615}, 0, {  2874,  -1028}, {0x45, 0x9c, 0x22, 0xff}}},\n    {{{ -2380,   4403,  -4465}, 0, {  2532,   -728}, {0x15, 0x84, 0x07, 0xff}}},\n    {{{ -2189,   4403,  -4410}, 0, {  2914,   -618}, {0x33, 0xc3, 0x9e, 0xff}}},\n    {{{ -2025,   4403,  -4198}, 0, {  3242,   -196}, {0x59, 0xad, 0xde, 0xff}}},\n    {{{ -2004,   4403,  -3890}, 0, {  3284,    418}, {0x50, 0xa3, 0x1d, 0xff}}},\n    {{{ -2130,   4403,  -3688}, 0, {  3032,    822}, {0x34, 0xa6, 0x47, 0xff}}},\n    {{{ -2318,   4403,  -3596}, 0, {  2656,   1004}, {0x16, 0xaa, 0x5a, 0xff}}},\n    {{{ -2481,   4403,  -3574}, 0, {  2330,   1048}, {0xf0, 0xaf, 0x5f, 0xff}}},\n    {{{ -2854,   4403,  -5108}, 0, {  1588,  -2012}, {0xb3, 0xce, 0xaa, 0xff}}},\n    {{{ -2622,   4403,  -5197}, 0, {  2050,  -2190}, {0x0b, 0xa3, 0xab, 0xff}}},\n    {{{ -2346,   4403,  -5087}, 0, {  2600,  -1970}, {0x3c, 0xa2, 0xc5, 0xff}}},\n    {{{ -2195,   4403,  -4854}, 0, {  2902,  -1506}, {0x56, 0xa4, 0xf4, 0xff}}},\n};\n\n// 0x07005C70 - 0x07005D60\nstatic const Vtx wmotr_seg7_vertex_07005C70[] = {\n    {{{ -3751,   4403,  -4604}, 0, {  -202,  -1006}, {0xe9, 0x84, 0x00, 0xff}}},\n    {{{ -3826,   4403,  -4739}, 0, {  -352,  -1274}, {0x92, 0xc3, 0x09, 0xff}}},\n    {{{ -3804,   4403,  -4905}, 0, {  -308,  -1606}, {0xad, 0xa7, 0xde, 0xff}}},\n    {{{ -3680,   4403,  -5119}, 0, {   -60,  -2034}, {0xd0, 0xa4, 0xb9, 0xff}}},\n    {{{ -3463,   4403,  -5203}, 0, {   372,  -2200}, {0xf7, 0xa5, 0xa9, 0xff}}},\n    {{{ -3221,   4403,  -5196}, 0, {   854,  -2188}, {0x22, 0xa7, 0xae, 0xff}}},\n    {{{ -3016,   4403,  -5066}, 0, {  1264,  -1928}, {0x4b, 0xac, 0xc8, 0xff}}},\n    {{{ -4198,   4403,  -4144}, 0, { -1094,    -88}, {0xc3, 0x93, 0x12, 0xff}}},\n    {{{ -3944,   4403,  -4601}, 0, {  -588,  -1000}, {0xf0, 0xad, 0xa2, 0xff}}},\n    {{{ -4198,   4403,  -4322}, 0, { -1094,   -442}, {0x9c, 0xb8, 0xe5, 0xff}}},\n    {{{ -4123,   4403,  -4499}, 0, {  -946,   -796}, {0xc5, 0xa7, 0xbe, 0xff}}},\n    {{{ -4143,   4468,  -4505}, 0, {  -986,   -810}, {0xa5, 0x30, 0xb7, 0xff}}},\n    {{{ -4053,   4555,  -4450}, 0, {  -806,   -698}, {0xdb, 0x74, 0xde, 0xff}}},\n    {{{ -3907,   4555,  -4533}, 0, {  -514,   -864}, {0xf1, 0x6c, 0xc0, 0xff}}},\n    {{{ -3961,   4468,  -4610}, 0, {  -620,  -1018}, {0xd9, 0x17, 0x8a, 0xff}}},\n};\n\n// 0x07005D60 - 0x07005E50\nstatic const Vtx wmotr_seg7_vertex_07005D60[] = {\n    {{{ -3759,   4558,  -4518}, 0, {  -218,   -834}, {0x0e, 0x73, 0xcd, 0xff}}},\n    {{{ -3907,   4555,  -4533}, 0, {  -514,   -864}, {0xf1, 0x6c, 0xc0, 0xff}}},\n    {{{ -3820,   4595,  -4249}, 0, {  -340,   -298}, {0xff, 0x7e, 0x01, 0xff}}},\n    {{{ -3763,   4468,  -4612}, 0, {  -226,  -1022}, {0xc9, 0x53, 0xb3, 0xff}}},\n    {{{ -3705,   4499,  -4572}, 0, {  -110,   -942}, {0xda, 0x76, 0xea, 0xff}}},\n    {{{ -3689,   4555,  -4484}, 0, {   -78,   -766}, {0xf6, 0x79, 0xdd, 0xff}}},\n    {{{ -3679,   4573,  -4329}, 0, {   -58,   -458}, {0x01, 0x7e, 0xf8, 0xff}}},\n    {{{ -3686,   4551,  -4628}, 0, {   -72,  -1054}, {0xc9, 0x6d, 0x21, 0xff}}},\n    {{{ -3840,   4468,  -4750}, 0, {  -380,  -1298}, {0x93, 0x39, 0x1b, 0xff}}},\n    {{{ -3961,   4468,  -4610}, 0, {  -620,  -1018}, {0xd9, 0x17, 0x8a, 0xff}}},\n    {{{ -2748,   4611,  -4557}, 0, {  1798,   -912}, {0x16, 0x7c, 0xf7, 0xff}}},\n    {{{ -2700,   4588,  -4600}, 0, {  1894,   -998}, {0x19, 0x7b, 0xf2, 0xff}}},\n    {{{ -2859,   4614,  -4652}, 0, {  1578,  -1102}, {0x11, 0x79, 0xe1, 0xff}}},\n    {{{ -2910,   4633,  -4412}, 0, {  1476,   -622}, {0xf8, 0x7e, 0x00, 0xff}}},\n    {{{ -2685,   4607,  -4438}, 0, {  1924,   -676}, {0x27, 0x78, 0x00, 0xff}}},\n};\n\n// 0x07005E50 - 0x07005F50\nstatic const Vtx wmotr_seg7_vertex_07005E50[] = {\n    {{{ -2685,   4607,  -4438}, 0, {  1924,   -676}, {0x27, 0x78, 0x00, 0xff}}},\n    {{{ -2880,   4609,  -4165}, 0, {  1534,   -128}, {0x0c, 0x7e, 0xfe, 0xff}}},\n    {{{ -2703,   4591,  -4260}, 0, {  1888,   -320}, {0x0b, 0x7e, 0x02, 0xff}}},\n    {{{ -3039,   4601,  -4633}, 0, {  1218,  -1064}, {0xd4, 0x6f, 0xd7, 0xff}}},\n    {{{ -2910,   4633,  -4412}, 0, {  1476,   -622}, {0xf8, 0x7e, 0x00, 0xff}}},\n    {{{ -2949,   4615,  -4666}, 0, {  1398,  -1130}, {0xf8, 0x77, 0xd7, 0xff}}},\n    {{{ -3143,   4588,  -4517}, 0, {  1010,   -832}, {0xd1, 0x74, 0xf3, 0xff}}},\n    {{{ -3142,   4590,  -4365}, 0, {  1010,   -528}, {0xdc, 0x79, 0x08, 0xff}}},\n    {{{ -3072,   4582,  -4181}, 0, {  1152,   -160}, {0xeb, 0x7c, 0xf7, 0xff}}},\n    {{{ -2859,   4614,  -4652}, 0, {  1578,  -1102}, {0x11, 0x79, 0xe1, 0xff}}},\n    {{{ -2748,   4611,  -4557}, 0, {  1798,   -912}, {0x16, 0x7c, 0xf7, 0xff}}},\n    {{{ -2787,   4600,  -4064}, 0, {  1720,     70}, {0x1a, 0x7c, 0xfc, 0xff}}},\n    {{{ -2895,   4617,  -4124}, 0, {  1504,    -48}, {0x02, 0x7e, 0xf1, 0xff}}},\n    {{{ -2742,   4584,  -4070}, 0, {  1810,     60}, {0x04, 0x7e, 0xfd, 0xff}}},\n    {{{ -2462,   4649,  -4017}, 0, {  2368,    166}, {0x00, 0x7e, 0x03, 0xff}}},\n    {{{ -2579,   4609,  -4322}, 0, {  2136,   -444}, {0xf2, 0x7c, 0xef, 0xff}}},\n};\n\n// 0x07005F50 - 0x07006050\nstatic const Vtx wmotr_seg7_vertex_07005F50[] = {\n    {{{ -2703,   4591,  -4260}, 0, {  1888,   -320}, {0x0b, 0x7e, 0x02, 0xff}}},\n    {{{ -2623,   4571,  -4446}, 0, {  2048,   -690}, {0x15, 0x7d, 0xfd, 0xff}}},\n    {{{ -2685,   4607,  -4438}, 0, {  1924,   -676}, {0x27, 0x78, 0x00, 0xff}}},\n    {{{ -2700,   4588,  -4600}, 0, {  1894,   -998}, {0x19, 0x7b, 0xf2, 0xff}}},\n    {{{ -2579,   4609,  -4322}, 0, {  2136,   -444}, {0xf2, 0x7c, 0xef, 0xff}}},\n    {{{ -2742,   4584,  -4070}, 0, {  1810,     60}, {0x04, 0x7e, 0xfd, 0xff}}},\n    {{{ -2169,   4468,  -4415}, 0, {  2954,   -628}, {0x48, 0x29, 0xa0, 0xff}}},\n    {{{ -2101,   4586,  -4162}, 0, {  3090,   -124}, {0x3b, 0x6b, 0xe3, 0xff}}},\n    {{{ -2002,   4468,  -4198}, 0, {  3288,   -196}, {0x72, 0x26, 0xdb, 0xff}}},\n    {{{ -2070,   4584,  -3896}, 0, {  3152,    406}, {0x46, 0x69, 0x09, 0xff}}},\n    {{{ -1981,   4468,  -3884}, 0, {  3330,    430}, {0x7a, 0x12, 0x1d, 0xff}}},\n    {{{ -2182,   4589,  -3715}, 0, {  2928,    768}, {0x36, 0x60, 0x3e, 0xff}}},\n    {{{ -2462,   4649,  -4017}, 0, {  2368,    166}, {0x00, 0x7e, 0x03, 0xff}}},\n    {{{ -3220,   4554,  -4345}, 0, {   856,   -490}, {0xeb, 0x7d, 0xfe, 0xff}}},\n    {{{ -3072,   4582,  -4181}, 0, {  1152,   -160}, {0xeb, 0x7c, 0xf7, 0xff}}},\n    {{{ -3142,   4590,  -4365}, 0, {  1010,   -528}, {0xdc, 0x79, 0x08, 0xff}}},\n};\n\n// 0x07006050 - 0x07006150\nstatic const Vtx wmotr_seg7_vertex_07006050[] = {\n    {{{ -2110,   4468,  -3678}, 0, {  3072,    842}, {0x5a, 0x03, 0x59, 0xff}}},\n    {{{ -1981,   4468,  -3884}, 0, {  3330,    430}, {0x7a, 0x12, 0x1d, 0xff}}},\n    {{{ -2182,   4589,  -3715}, 0, {  2928,    768}, {0x36, 0x60, 0x3e, 0xff}}},\n    {{{ -2169,   4468,  -4415}, 0, {  2954,   -628}, {0x48, 0x29, 0xa0, 0xff}}},\n    {{{ -2252,   4596,  -4320}, 0, {  2788,   -440}, {0x20, 0x71, 0xd1, 0xff}}},\n    {{{ -2101,   4586,  -4162}, 0, {  3090,   -124}, {0x3b, 0x6b, 0xe3, 0xff}}},\n    {{{ -2462,   4649,  -4017}, 0, {  2368,    166}, {0x00, 0x7e, 0x03, 0xff}}},\n    {{{ -2302,   4468,  -3584}, 0, {  2688,   1026}, {0x2a, 0x10, 0x76, 0xff}}},\n    {{{ -2340,   4586,  -3644}, 0, {  2614,    910}, {0x10, 0x60, 0x50, 0xff}}},\n    {{{ -3143,   4588,  -4517}, 0, {  1010,   -832}, {0xd1, 0x74, 0xf3, 0xff}}},\n    {{{ -3220,   4554,  -4345}, 0, {   856,   -490}, {0xeb, 0x7d, 0xfe, 0xff}}},\n    {{{ -3142,   4590,  -4365}, 0, {  1010,   -528}, {0xdc, 0x79, 0x08, 0xff}}},\n    {{{ -3212,   4537,  -4538}, 0, {   872,   -876}, {0xe7, 0x79, 0xe7, 0xff}}},\n    {{{ -3144,   4557,  -3838}, 0, {  1008,    522}, {0xf5, 0x7b, 0x1b, 0xff}}},\n    {{{ -3201,   4565,  -3992}, 0, {   894,    214}, {0xe4, 0x7b, 0x0a, 0xff}}},\n    {{{ -3278,   4563,  -3967}, 0, {   740,    266}, {0x0c, 0x7e, 0x00, 0xff}}},\n};\n\n// 0x07006150 - 0x07006240\nstatic const Vtx wmotr_seg7_vertex_07006150[] = {\n    {{{ -3323,   4557,  -4154}, 0, {   650,   -108}, {0x06, 0x7e, 0x00, 0xff}}},\n    {{{ -3220,   4554,  -4345}, 0, {   856,   -490}, {0xeb, 0x7d, 0xfe, 0xff}}},\n    {{{ -3434,   4603,  -4395}, 0, {   428,   -590}, {0x02, 0x7e, 0xfe, 0xff}}},\n    {{{ -3072,   4582,  -4181}, 0, {  1152,   -160}, {0xeb, 0x7c, 0xf7, 0xff}}},\n    {{{ -3153,   4586,  -4116}, 0, {   990,      0}, {0xe5, 0x7b, 0xf8, 0xff}}},\n    {{{ -3096,   4606,  -4087}, 0, {  1104,     26}, {0xeb, 0x7c, 0xf5, 0xff}}},\n    {{{ -3144,   4589,  -4003}, 0, {  1008,    194}, {0xde, 0x79, 0x0a, 0xff}}},\n    {{{ -3201,   4565,  -3992}, 0, {   894,    214}, {0xe4, 0x7b, 0x0a, 0xff}}},\n    {{{ -2895,   4617,  -4124}, 0, {  1504,    -48}, {0x02, 0x7e, 0xf1, 0xff}}},\n    {{{ -3455,   4602,  -4058}, 0, {   386,     84}, {0x08, 0x7e, 0xfb, 0xff}}},\n    {{{ -3491,   4579,  -4263}, 0, {   314,   -326}, {0x05, 0x7e, 0x03, 0xff}}},\n    {{{ -3278,   4563,  -3967}, 0, {   740,    266}, {0x0c, 0x7e, 0x00, 0xff}}},\n    {{{ -3094,   4583,  -3877}, 0, {  1108,    444}, {0xe3, 0x78, 0x19, 0xff}}},\n    {{{ -3144,   4557,  -3838}, 0, {  1008,    522}, {0xf5, 0x7b, 0x1b, 0xff}}},\n    {{{ -3342,   4569,  -3807}, 0, {   612,    584}, {0x1c, 0x7b, 0x05, 0xff}}},\n};\n\n// 0x07006240 - 0x07006330\nstatic const Vtx wmotr_seg7_vertex_07006240[] = {\n    {{{ -3144,   4557,  -3838}, 0, {  1008,    522}, {0xf5, 0x7b, 0x1b, 0xff}}},\n    {{{ -3038,   4538,  -3744}, 0, {  1220,    710}, {0xf2, 0x7c, 0x12, 0xff}}},\n    {{{ -2996,   4584,  -3823}, 0, {  1304,    554}, {0xf1, 0x77, 0x29, 0xff}}},\n    {{{ -3094,   4583,  -3877}, 0, {  1108,    444}, {0xe3, 0x78, 0x19, 0xff}}},\n    {{{ -3249,   4509,  -3639}, 0, {   798,    920}, {0x0e, 0x7e, 0x04, 0xff}}},\n    {{{ -3342,   4569,  -3807}, 0, {   612,    584}, {0x1c, 0x7b, 0x05, 0xff}}},\n    {{{ -3508,   4597,  -3724}, 0, {   280,    750}, {0x0f, 0x7e, 0xfe, 0xff}}},\n    {{{ -3455,   4602,  -4058}, 0, {   386,     84}, {0x08, 0x7e, 0xfb, 0xff}}},\n    {{{ -3336,   4577,  -3655}, 0, {   626,    888}, {0x2b, 0x77, 0xfd, 0xff}}},\n    {{{ -2919,   4582,  -3466}, 0, {  1458,   1264}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{ -2802,   4542,  -3735}, 0, {  1690,    728}, {0x01, 0x7b, 0x1c, 0xff}}},\n    {{{ -3188,   4542,  -3619}, 0, {   920,    960}, {0xe0, 0x79, 0xec, 0xff}}},\n    {{{ -2899,   4583,  -3804}, 0, {  1498,    590}, {0xff, 0x76, 0x2e, 0xff}}},\n    {{{ -3706,   4575,  -4131}, 0, {  -112,    -62}, {0xf4, 0x7e, 0x03, 0xff}}},\n    {{{ -3690,   4591,  -3900}, 0, {   -80,    398}, {0xcd, 0x73, 0x06, 0xff}}},\n};\n\n// 0x07006330 - 0x07006420\nstatic const Vtx wmotr_seg7_vertex_07006330[] = {\n    {{{ -3299,   4468,  -3424}, 0, {   698,   1348}, {0xe5, 0x59, 0x56, 0xff}}},\n    {{{ -3218,   4542,  -3452}, 0, {   860,   1292}, {0xcc, 0x73, 0x06, 0xff}}},\n    {{{ -3249,   4509,  -3639}, 0, {   798,    920}, {0x0e, 0x7e, 0x04, 0xff}}},\n    {{{ -3188,   4542,  -3619}, 0, {   920,    960}, {0xe0, 0x79, 0xec, 0xff}}},\n    {{{ -3331,   4573,  -3491}, 0, {   634,   1214}, {0x3c, 0x66, 0x2a, 0xff}}},\n    {{{ -3336,   4577,  -3655}, 0, {   626,    888}, {0x2b, 0x77, 0xfd, 0xff}}},\n    {{{ -3594,   4613,  -3625}, 0, {   108,    948}, {0xff, 0x7e, 0x00, 0xff}}},\n    {{{ -3508,   4597,  -3724}, 0, {   280,    750}, {0x0f, 0x7e, 0xfe, 0xff}}},\n    {{{ -2919,   4582,  -3466}, 0, {  1458,   1264}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{ -3757,   4555,  -3975}, 0, {  -214,    248}, {0xfa, 0x6f, 0x3d, 0xff}}},\n    {{{ -3706,   4575,  -4131}, 0, {  -112,    -62}, {0xf4, 0x7e, 0x03, 0xff}}},\n    {{{ -3820,   4595,  -4249}, 0, {  -340,   -298}, {0xff, 0x7e, 0x01, 0xff}}},\n    {{{ -3455,   4602,  -4058}, 0, {   386,     84}, {0x08, 0x7e, 0xfb, 0xff}}},\n    {{{ -3643,   4571,  -4214}, 0, {    12,   -226}, {0x00, 0x7e, 0x01, 0xff}}},\n    {{{ -3488,   4573,  -3390}, 0, {   322,   1414}, {0x18, 0x6d, 0x3b, 0xff}}},\n};\n\n// 0x07006420 - 0x07006500\nstatic const Vtx wmotr_seg7_vertex_07006420[] = {\n    {{{ -3773,   4468,  -3912}, 0, {  -246,    374}, {0xa0, 0x50, 0xec, 0xff}}},\n    {{{ -3735,   4550,  -3958}, 0, {  -170,    282}, {0xb9, 0x64, 0x1c, 0xff}}},\n    {{{ -3757,   4555,  -3975}, 0, {  -214,    248}, {0xfa, 0x6f, 0x3d, 0xff}}},\n    {{{ -3710,   4573,  -3882}, 0, {  -120,    436}, {0xc2, 0x6d, 0xf3, 0xff}}},\n    {{{ -3706,   4575,  -4131}, 0, {  -112,    -62}, {0xf4, 0x7e, 0x03, 0xff}}},\n    {{{ -3690,   4591,  -3900}, 0, {   -80,    398}, {0xcd, 0x73, 0x06, 0xff}}},\n    {{{ -3566,   4600,  -3754}, 0, {   164,    690}, {0xf5, 0x7e, 0x03, 0xff}}},\n    {{{ -3455,   4602,  -4058}, 0, {   386,     84}, {0x08, 0x7e, 0xfb, 0xff}}},\n    {{{ -3789,   4573,  -3837}, 0, {  -278,    526}, {0xca, 0x60, 0xc3, 0xff}}},\n    {{{ -3594,   4613,  -3625}, 0, {   108,    948}, {0xff, 0x7e, 0x00, 0xff}}},\n    {{{ -3331,   4573,  -3491}, 0, {   634,   1214}, {0x3c, 0x66, 0x2a, 0xff}}},\n    {{{ -3488,   4573,  -3390}, 0, {   322,   1414}, {0x18, 0x6d, 0x3b, 0xff}}},\n    {{{ -3495,   4468,  -3298}, 0, {   308,   1598}, {0x31, 0x25, 0x6e, 0xff}}},\n    {{{ -3299,   4468,  -3424}, 0, {   698,   1348}, {0xe5, 0x59, 0x56, 0xff}}},\n};\n\n// 0x07006500 - 0x07006600\nstatic const Vtx wmotr_seg7_vertex_07006500[] = {\n    {{{ -3029,   4537,  -4889}, 0, {  1236,  -1574}, {0x32, 0x74, 0xfd, 0xff}}},\n    {{{ -3386,   4576,  -4785}, 0, {   524,  -1368}, {0x00, 0x7e, 0xff, 0xff}}},\n    {{{ -3059,   4534,  -4716}, 0, {  1178,  -1228}, {0xf7, 0x7c, 0xe7, 0xff}}},\n    {{{ -3216,   4468,  -3264}, 0, {   864,   1668}, {0x9d, 0x12, 0x4c, 0xff}}},\n    {{{ -3151,   4542,  -3323}, 0, {   994,   1548}, {0xcf, 0x6e, 0x26, 0xff}}},\n    {{{ -3299,   4468,  -3424}, 0, {   698,   1348}, {0xe5, 0x59, 0x56, 0xff}}},\n    {{{ -3218,   4542,  -3452}, 0, {   860,   1292}, {0xcc, 0x73, 0x06, 0xff}}},\n    {{{ -2919,   4582,  -3466}, 0, {  1458,   1264}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{ -2980,   4496,  -4818}, 0, {  1336,  -1434}, {0xe2, 0x75, 0xdb, 0xff}}},\n    {{{ -2959,   4573,  -4734}, 0, {  1378,  -1266}, {0xd7, 0x6e, 0xd2, 0xff}}},\n    {{{ -2944,   4468,  -4945}, 0, {  1408,  -1686}, {0x02, 0x58, 0xa5, 0xff}}},\n    {{{ -2918,   4576,  -4863}, 0, {  1460,  -1522}, {0xb2, 0x5d, 0xdd, 0xff}}},\n    {{{ -3212,   4537,  -4538}, 0, {   872,   -876}, {0xe7, 0x79, 0xe7, 0xff}}},\n    {{{ -3039,   4601,  -4633}, 0, {  1218,  -1064}, {0xd4, 0x6f, 0xd7, 0xff}}},\n    {{{ -3392,   4554,  -4631}, 0, {   512,  -1060}, {0x08, 0x7e, 0xff, 0xff}}},\n    {{{ -2949,   4615,  -4666}, 0, {  1398,  -1130}, {0xf8, 0x77, 0xd7, 0xff}}},\n};\n\n// 0x07006600 - 0x070066F0\nstatic const Vtx wmotr_seg7_vertex_07006600[] = {\n    {{{ -2918,   4576,  -4863}, 0, {  1460,  -1522}, {0xb2, 0x5d, 0xdd, 0xff}}},\n    {{{ -2959,   4573,  -4734}, 0, {  1378,  -1266}, {0xd7, 0x6e, 0xd2, 0xff}}},\n    {{{ -2641,   4613,  -4746}, 0, {  2012,  -1290}, {0xff, 0x7e, 0x01, 0xff}}},\n    {{{ -2949,   4615,  -4666}, 0, {  1398,  -1130}, {0xf8, 0x77, 0xd7, 0xff}}},\n    {{{ -2847,   4587,  -4704}, 0, {  1600,  -1206}, {0x04, 0x7a, 0xe0, 0xff}}},\n    {{{ -3029,   4537,  -4889}, 0, {  1236,  -1574}, {0x32, 0x74, 0xfd, 0xff}}},\n    {{{ -3081,   4537,  -5002}, 0, {  1134,  -1800}, {0x26, 0x74, 0xde, 0xff}}},\n    {{{ -3386,   4576,  -4785}, 0, {   524,  -1368}, {0x00, 0x7e, 0xff, 0xff}}},\n    {{{ -2944,   4468,  -4945}, 0, {  1408,  -1686}, {0x02, 0x58, 0xa5, 0xff}}},\n    {{{ -2848,   4468,  -5127}, 0, {  1598,  -2050}, {0xaa, 0x2b, 0xae, 0xff}}},\n    {{{ -3013,   4468,  -5084}, 0, {  1268,  -1964}, {0x56, 0x1f, 0xa8, 0xff}}},\n    {{{ -2836,   4573,  -5007}, 0, {  1622,  -1810}, {0xdc, 0x6e, 0xcd, 0xff}}},\n    {{{ -2745,   4585,  -3815}, 0, {  1804,    568}, {0xf3, 0x7a, 0x1d, 0xff}}},\n    {{{ -2787,   4600,  -4064}, 0, {  1720,     70}, {0x1a, 0x7c, 0xfc, 0xff}}},\n    {{{ -2808,   4593,  -3849}, 0, {  1678,    500}, {0x06, 0x7b, 0x1c, 0xff}}},\n};\n\n// 0x070066F0 - 0x070067F0\nstatic const Vtx wmotr_seg7_vertex_070066F0[] = {\n    {{{ -2635,   4468,  -3618}, 0, {  2024,    962}, {0x29, 0x47, 0x60, 0xff}}},\n    {{{ -2642,   4542,  -3420}, 0, {  2010,   1354}, {0x48, 0x67, 0x05, 0xff}}},\n    {{{ -2579,   4468,  -3385}, 0, {  2134,   1426}, {0x7c, 0x17, 0x01, 0xff}}},\n    {{{ -2687,   4542,  -3607}, 0, {  1920,    984}, {0x34, 0x72, 0xf1, 0xff}}},\n    {{{ -2468,   4468,  -3562}, 0, {  2358,   1072}, {0xfe, 0x12, 0x7d, 0xff}}},\n    {{{ -2490,   4573,  -3617}, 0, {  2314,    964}, {0xef, 0x5d, 0x54, 0xff}}},\n    {{{ -2644,   4575,  -3677}, 0, {  2006,    844}, {0xd0, 0x5f, 0x44, 0xff}}},\n    {{{ -2706,   4537,  -3709}, 0, {  1882,    780}, {0xf2, 0x74, 0x30, 0xff}}},\n    {{{ -2462,   4649,  -4017}, 0, {  2368,    166}, {0x00, 0x7e, 0x03, 0xff}}},\n    {{{ -2745,   4585,  -3815}, 0, {  1804,    568}, {0xf3, 0x7a, 0x1d, 0xff}}},\n    {{{ -2802,   4542,  -3735}, 0, {  1690,    728}, {0x01, 0x7b, 0x1c, 0xff}}},\n    {{{ -2919,   4582,  -3466}, 0, {  1458,   1264}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{ -2742,   4584,  -4070}, 0, {  1810,     60}, {0x04, 0x7e, 0xfd, 0xff}}},\n    {{{ -2808,   4593,  -3849}, 0, {  1678,    500}, {0x06, 0x7b, 0x1c, 0xff}}},\n    {{{ -2787,   4600,  -4064}, 0, {  1720,     70}, {0x1a, 0x7c, 0xfc, 0xff}}},\n    {{{ -2899,   4583,  -3804}, 0, {  1498,    590}, {0xff, 0x76, 0x2e, 0xff}}},\n};\n\n// 0x070067F0 - 0x070068E0\nstatic const Vtx wmotr_seg7_vertex_070067F0[] = {\n    {{{ -2462,   4649,  -4017}, 0, {  2368,    166}, {0x00, 0x7e, 0x03, 0xff}}},\n    {{{ -2424,   4591,  -4386}, 0, {  2446,   -570}, {0x0f, 0x6c, 0xc1, 0xff}}},\n    {{{ -2579,   4609,  -4322}, 0, {  2136,   -444}, {0xf2, 0x7c, 0xef, 0xff}}},\n    {{{ -2623,   4571,  -4446}, 0, {  2048,   -690}, {0x15, 0x7d, 0xfd, 0xff}}},\n    {{{ -2641,   4613,  -4746}, 0, {  2012,  -1290}, {0xff, 0x7e, 0x01, 0xff}}},\n    {{{ -2700,   4588,  -4600}, 0, {  1894,   -998}, {0x19, 0x7b, 0xf2, 0xff}}},\n    {{{ -2482,   4574,  -4499}, 0, {  2328,   -798}, {0x1e, 0x6e, 0x37, 0xff}}},\n    {{{ -2365,   4468,  -4470}, 0, {  2564,   -740}, {0x5a, 0x56, 0xe8, 0xff}}},\n    {{{ -2252,   4596,  -4320}, 0, {  2788,   -440}, {0x20, 0x71, 0xd1, 0xff}}},\n    {{{ -2169,   4468,  -4415}, 0, {  2954,   -628}, {0x48, 0x29, 0xa0, 0xff}}},\n    {{{ -2190,   4468,  -4624}, 0, {  2912,  -1046}, {0x6f, 0x13, 0x39, 0xff}}},\n    {{{ -2339,   4573,  -4616}, 0, {  2614,  -1030}, {0x35, 0x6f, 0x1e, 0xff}}},\n    {{{ -3871,   4468,  -3857}, 0, {  -442,    486}, {0xa9, 0x15, 0xa8, 0xff}}},\n    {{{ -3789,   4573,  -3837}, 0, {  -278,    526}, {0xca, 0x60, 0xc3, 0xff}}},\n    {{{ -3773,   4468,  -3912}, 0, {  -246,    374}, {0xa0, 0x50, 0xec, 0xff}}},\n};\n\n// 0x070068E0 - 0x070069E0\nstatic const Vtx wmotr_seg7_vertex_070068E0[] = {\n    {{{ -3773,   4468,  -3912}, 0, {  -246,    374}, {0xa0, 0x50, 0xec, 0xff}}},\n    {{{ -3757,   4555,  -3975}, 0, {  -214,    248}, {0xfa, 0x6f, 0x3d, 0xff}}},\n    {{{ -3916,   4468,  -3899}, 0, {  -532,    402}, {0xf3, 0x30, 0x74, 0xff}}},\n    {{{ -3886,   4555,  -3986}, 0, {  -470,    226}, {0xf6, 0x72, 0x36, 0xff}}},\n    {{{ -3820,   4595,  -4249}, 0, {  -340,   -298}, {0xff, 0x7e, 0x01, 0xff}}},\n    {{{ -3643,   4571,  -4214}, 0, {    12,   -226}, {0x00, 0x7e, 0x01, 0xff}}},\n    {{{ -3455,   4602,  -4058}, 0, {   386,     84}, {0x08, 0x7e, 0xfb, 0xff}}},\n    {{{ -3491,   4579,  -4263}, 0, {   314,   -326}, {0x05, 0x7e, 0x03, 0xff}}},\n    {{{ -3508,   4597,  -3724}, 0, {   280,    750}, {0x0f, 0x7e, 0xfe, 0xff}}},\n    {{{ -3566,   4600,  -3754}, 0, {   164,    690}, {0xf5, 0x7e, 0x03, 0xff}}},\n    {{{ -3594,   4613,  -3625}, 0, {   108,    948}, {0xff, 0x7e, 0x00, 0xff}}},\n    {{{ -2930,   4618,  -3979}, 0, {  1436,    242}, {0xfd, 0x7e, 0x0d, 0xff}}},\n    {{{ -2787,   4600,  -4064}, 0, {  1720,     70}, {0x1a, 0x7c, 0xfc, 0xff}}},\n    {{{ -2895,   4617,  -4124}, 0, {  1504,    -48}, {0x02, 0x7e, 0xf1, 0xff}}},\n    {{{ -2808,   4593,  -3849}, 0, {  1678,    500}, {0x06, 0x7b, 0x1c, 0xff}}},\n    {{{ -2899,   4583,  -3804}, 0, {  1498,    590}, {0xff, 0x76, 0x2e, 0xff}}},\n};\n\n// 0x070069E0 - 0x07006AE0\nstatic const Vtx wmotr_seg7_vertex_070069E0[] = {\n    {{{ -3144,   4589,  -4003}, 0, {  1008,    194}, {0xde, 0x79, 0x0a, 0xff}}},\n    {{{ -2930,   4618,  -3979}, 0, {  1436,    242}, {0xfd, 0x7e, 0x0d, 0xff}}},\n    {{{ -3096,   4606,  -4087}, 0, {  1104,     26}, {0xeb, 0x7c, 0xf5, 0xff}}},\n    {{{ -2895,   4617,  -4124}, 0, {  1504,    -48}, {0x02, 0x7e, 0xf1, 0xff}}},\n    {{{ -2996,   4584,  -3823}, 0, {  1304,    554}, {0xf1, 0x77, 0x29, 0xff}}},\n    {{{ -3094,   4583,  -3877}, 0, {  1108,    444}, {0xe3, 0x78, 0x19, 0xff}}},\n    {{{ -2899,   4583,  -3804}, 0, {  1498,    590}, {0xff, 0x76, 0x2e, 0xff}}},\n    {{{ -3212,   4537,  -4538}, 0, {   872,   -876}, {0xe7, 0x79, 0xe7, 0xff}}},\n    {{{ -3143,   4588,  -4517}, 0, {  1010,   -832}, {0xd1, 0x74, 0xf3, 0xff}}},\n    {{{ -3039,   4601,  -4633}, 0, {  1218,  -1064}, {0xd4, 0x6f, 0xd7, 0xff}}},\n    {{{ -3220,   4554,  -4345}, 0, {   856,   -490}, {0xeb, 0x7d, 0xfe, 0xff}}},\n    {{{ -3434,   4603,  -4395}, 0, {   428,   -590}, {0x02, 0x7e, 0xfe, 0xff}}},\n    {{{ -3392,   4554,  -4631}, 0, {   512,  -1060}, {0x08, 0x7e, 0xff, 0xff}}},\n    {{{ -2949,   4615,  -4666}, 0, {  1398,  -1130}, {0xf8, 0x77, 0xd7, 0xff}}},\n    {{{ -2859,   4614,  -4652}, 0, {  1578,  -1102}, {0x11, 0x79, 0xe1, 0xff}}},\n    {{{ -2847,   4587,  -4704}, 0, {  1600,  -1206}, {0x04, 0x7a, 0xe0, 0xff}}},\n};\n\n// 0x07006AE0 - 0x07006BE0\nstatic const Vtx wmotr_seg7_vertex_07006AE0[] = {\n    {{{ -3689,   4555,  -4484}, 0, {   -78,   -766}, {0xf6, 0x79, 0xdd, 0xff}}},\n    {{{ -3622,   4552,  -4579}, 0, {    52,   -956}, {0xe6, 0x7c, 0x00, 0xff}}},\n    {{{ -3705,   4499,  -4572}, 0, {  -110,   -942}, {0xda, 0x76, 0xea, 0xff}}},\n    {{{ -3686,   4551,  -4628}, 0, {   -72,  -1054}, {0xc9, 0x6d, 0x21, 0xff}}},\n    {{{ -3434,   4603,  -4395}, 0, {   428,   -590}, {0x02, 0x7e, 0xfe, 0xff}}},\n    {{{ -3386,   4576,  -4785}, 0, {   524,  -1368}, {0x00, 0x7e, 0xff, 0xff}}},\n    {{{ -3392,   4554,  -4631}, 0, {   512,  -1060}, {0x08, 0x7e, 0xff, 0xff}}},\n    {{{ -3742,   4537,  -4734}, 0, {  -184,  -1266}, {0xd3, 0x76, 0x01, 0xff}}},\n    {{{ -3840,   4468,  -4750}, 0, {  -380,  -1298}, {0x93, 0x39, 0x1b, 0xff}}},\n    {{{ -3679,   4573,  -4329}, 0, {   -58,   -458}, {0x01, 0x7e, 0xf8, 0xff}}},\n    {{{ -3643,   4571,  -4214}, 0, {    12,   -226}, {0x00, 0x7e, 0x01, 0xff}}},\n    {{{ -3491,   4579,  -4263}, 0, {   314,   -326}, {0x05, 0x7e, 0x03, 0xff}}},\n    {{{ -2848,   4468,  -5127}, 0, {  1598,  -2050}, {0xaa, 0x2b, 0xae, 0xff}}},\n    {{{ -2836,   4573,  -5007}, 0, {  1622,  -1810}, {0xdc, 0x6e, 0xcd, 0xff}}},\n    {{{ -2612,   4468,  -5218}, 0, {  2070,  -2232}, {0xf7, 0x32, 0x8d, 0xff}}},\n    {{{ -2646,   4573,  -5080}, 0, {  2002,  -1956}, {0xff, 0x75, 0xd1, 0xff}}},\n};\n\n// 0x07006BE0 - 0x07006CD0\nstatic const Vtx wmotr_seg7_vertex_07006BE0[] = {\n    {{{ -2641,   4613,  -4746}, 0, {  2012,  -1290}, {0xff, 0x7e, 0x01, 0xff}}},\n    {{{ -2646,   4573,  -5080}, 0, {  2002,  -1956}, {0xff, 0x75, 0xd1, 0xff}}},\n    {{{ -2836,   4573,  -5007}, 0, {  1622,  -1810}, {0xdc, 0x6e, 0xcd, 0xff}}},\n    {{{ -2612,   4468,  -5218}, 0, {  2070,  -2232}, {0xf7, 0x32, 0x8d, 0xff}}},\n    {{{ -2438,   4570,  -5019}, 0, {  2416,  -1834}, {0x1b, 0x73, 0xd3, 0xff}}},\n    {{{ -2330,   4468,  -5105}, 0, {  2634,  -2006}, {0x4a, 0x24, 0xa0, 0xff}}},\n    {{{ -2312,   4571,  -4844}, 0, {  2668,  -1486}, {0x31, 0x73, 0xee, 0xff}}},\n    {{{ -2176,   4468,  -4868}, 0, {  2940,  -1534}, {0x74, 0x27, 0xdf, 0xff}}},\n    {{{ -2339,   4573,  -4616}, 0, {  2614,  -1030}, {0x35, 0x6f, 0x1e, 0xff}}},\n    {{{ -2190,   4468,  -4624}, 0, {  2912,  -1046}, {0x6f, 0x13, 0x39, 0xff}}},\n    {{{ -2302,   4468,  -3584}, 0, {  2688,   1026}, {0x2a, 0x10, 0x76, 0xff}}},\n    {{{ -2340,   4586,  -3644}, 0, {  2614,    910}, {0x10, 0x60, 0x50, 0xff}}},\n    {{{ -2468,   4468,  -3562}, 0, {  2358,   1072}, {0xfe, 0x12, 0x7d, 0xff}}},\n    {{{ -2490,   4573,  -3617}, 0, {  2314,    964}, {0xef, 0x5d, 0x54, 0xff}}},\n    {{{ -2462,   4649,  -4017}, 0, {  2368,    166}, {0x00, 0x7e, 0x03, 0xff}}},\n};\n\n// 0x07006CD0 - 0x07006DD0\nstatic const Vtx wmotr_seg7_vertex_07006CD0[] = {\n    {{{ -2642,   4542,  -3420}, 0, {  2010,   1354}, {0x48, 0x67, 0x05, 0xff}}},\n    {{{ -2705,   4542,  -3279}, 0, {  1884,   1638}, {0x29, 0x73, 0x22, 0xff}}},\n    {{{ -2658,   4468,  -3208}, 0, {  1978,   1778}, {0x5e, 0x2d, 0x46, 0xff}}},\n    {{{ -2579,   4468,  -3385}, 0, {  2134,   1426}, {0x7c, 0x17, 0x01, 0xff}}},\n    {{{ -2919,   4582,  -3466}, 0, {  1458,   1264}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{ -2839,   4542,  -3189}, 0, {  1618,   1816}, {0x0d, 0x70, 0x3a, 0xff}}},\n    {{{ -2825,   4468,  -3096}, 0, {  1644,   2002}, {0x1c, 0x07, 0x7b, 0xff}}},\n    {{{ -3069,   4468,  -3131}, 0, {  1158,   1932}, {0xd2, 0x40, 0x62, 0xff}}},\n    {{{ -3034,   4542,  -3217}, 0, {  1228,   1760}, {0xeb, 0x74, 0x2d, 0xff}}},\n    {{{ -3151,   4542,  -3323}, 0, {   994,   1548}, {0xcf, 0x6e, 0x26, 0xff}}},\n    {{{ -3216,   4468,  -3264}, 0, {   864,   1668}, {0x9d, 0x12, 0x4c, 0xff}}},\n    {{{ -3495,   4468,  -3298}, 0, {   308,   1598}, {0x31, 0x25, 0x6e, 0xff}}},\n    {{{ -3488,   4573,  -3390}, 0, {   322,   1414}, {0x18, 0x6d, 0x3b, 0xff}}},\n    {{{ -3655,   4573,  -3357}, 0, {   -12,   1482}, {0xf6, 0x6b, 0x43, 0xff}}},\n    {{{ -3594,   4613,  -3625}, 0, {   108,    948}, {0xff, 0x7e, 0x00, 0xff}}},\n    {{{ -3704,   4468,  -3257}, 0, {  -108,   1682}, {0xf6, 0x12, 0x7d, 0xff}}},\n};\n\n// 0x07006DD0 - 0x07006EB0\nstatic const Vtx wmotr_seg7_vertex_07006DD0[] = {\n    {{{ -3704,   4468,  -3257}, 0, {  -108,   1682}, {0xf6, 0x12, 0x7d, 0xff}}},\n    {{{ -3655,   4573,  -3357}, 0, {   -12,   1482}, {0xf6, 0x6b, 0x43, 0xff}}},\n    {{{ -3885,   4468,  -3368}, 0, {  -470,   1458}, {0xa3, 0x20, 0x50, 0xff}}},\n    {{{ -3800,   4573,  -3446}, 0, {  -300,   1302}, {0xd8, 0x72, 0x23, 0xff}}},\n    {{{ -3594,   4613,  -3625}, 0, {   108,    948}, {0xff, 0x7e, 0x00, 0xff}}},\n    {{{ -3867,   4573,  -3603}, 0, {  -434,    990}, {0xbd, 0x6b, 0x0a, 0xff}}},\n    {{{ -3969,   4468,  -3564}, 0, {  -636,   1068}, {0x87, 0x20, 0x14, 0xff}}},\n    {{{ -3957,   4468,  -3735}, 0, {  -612,    728}, {0x8e, 0x28, 0xdc, 0xff}}},\n    {{{ -3857,   4573,  -3740}, 0, {  -414,    720}, {0xc8, 0x6f, 0xec, 0xff}}},\n    {{{ -3789,   4573,  -3837}, 0, {  -278,    526}, {0xca, 0x60, 0xc3, 0xff}}},\n    {{{ -3871,   4468,  -3857}, 0, {  -442,    486}, {0xa9, 0x15, 0xa8, 0xff}}},\n    {{{ -3916,   4468,  -3899}, 0, {  -532,    402}, {0xf3, 0x30, 0x74, 0xff}}},\n    {{{ -3886,   4555,  -3986}, 0, {  -470,    226}, {0xf6, 0x72, 0x36, 0xff}}},\n    {{{ -4031,   4555,  -4031}, 0, {  -760,    136}, {0xd9, 0x6d, 0x33, 0xff}}},\n};\n\n// 0x07006EB0 - 0x07006FB0\nstatic const Vtx wmotr_seg7_vertex_07006EB0[] = {\n    {{{ -3840,   4468,  -4750}, 0, {  -380,  -1298}, {0x93, 0x39, 0x1b, 0xff}}},\n    {{{ -3742,   4537,  -4734}, 0, {  -184,  -1266}, {0xd3, 0x76, 0x01, 0xff}}},\n    {{{ -3724,   4537,  -4870}, 0, {  -148,  -1536}, {0xd1, 0x75, 0xf4, 0xff}}},\n    {{{ -4031,   4555,  -4031}, 0, {  -760,    136}, {0xd9, 0x6d, 0x33, 0xff}}},\n    {{{ -3886,   4555,  -3986}, 0, {  -470,    226}, {0xf6, 0x72, 0x36, 0xff}}},\n    {{{ -3820,   4595,  -4249}, 0, {  -340,   -298}, {0xff, 0x7e, 0x01, 0xff}}},\n    {{{ -3916,   4468,  -3899}, 0, {  -532,    402}, {0xf3, 0x30, 0x74, 0xff}}},\n    {{{ -4115,   4468,  -3983}, 0, {  -930,    234}, {0xb0, 0x0d, 0x61, 0xff}}},\n    {{{ -4220,   4468,  -4143}, 0, { -1138,    -86}, {0x96, 0x3e, 0x20, 0xff}}},\n    {{{ -4115,   4555,  -4160}, 0, {  -928,   -120}, {0xd0, 0x74, 0x0e, 0xff}}},\n    {{{ -4115,   4555,  -4305}, 0, {  -928,   -410}, {0xc5, 0x6f, 0xf4, 0xff}}},\n    {{{ -4220,   4468,  -4324}, 0, { -1138,   -448}, {0x84, 0x12, 0xed, 0xff}}},\n    {{{ -4143,   4468,  -4505}, 0, {  -986,   -810}, {0xa5, 0x30, 0xb7, 0xff}}},\n    {{{ -4053,   4555,  -4450}, 0, {  -806,   -698}, {0xdb, 0x74, 0xde, 0xff}}},\n    {{{ -3907,   4555,  -4533}, 0, {  -514,   -864}, {0xf1, 0x6c, 0xc0, 0xff}}},\n    {{{ -3386,   4576,  -4785}, 0, {   524,  -1368}, {0x00, 0x7e, 0xff, 0xff}}},\n};\n\n// 0x07006FB0 - 0x070070A0\nstatic const Vtx wmotr_seg7_vertex_07006FB0[] = {\n    {{{ -3840,   4468,  -4750}, 0, {  -380,  -1298}, {0x93, 0x39, 0x1b, 0xff}}},\n    {{{ -3724,   4537,  -4870}, 0, {  -148,  -1536}, {0xd1, 0x75, 0xf4, 0xff}}},\n    {{{ -3818,   4468,  -4919}, 0, {  -336,  -1636}, {0x8f, 0x2d, 0xdd, 0xff}}},\n    {{{ -3631,   4535,  -5054}, 0, {    36,  -1904}, {0xe0, 0x74, 0xdb, 0xff}}},\n    {{{ -3386,   4576,  -4785}, 0, {   524,  -1368}, {0x00, 0x7e, 0xff, 0xff}}},\n    {{{ -3691,   4468,  -5138}, 0, {   -82,  -2072}, {0xa8, 0x19, 0xa9, 0xff}}},\n    {{{ -3446,   4537,  -5113}, 0, {   406,  -2022}, {0xfc, 0x76, 0xd2, 0xff}}},\n    {{{ -3470,   4468,  -5223}, 0, {   358,  -2242}, {0xe5, 0x2b, 0x8c, 0xff}}},\n    {{{ -3248,   4537,  -5108}, 0, {   800,  -2012}, {0x0c, 0x78, 0xd9, 0xff}}},\n    {{{ -3223,   4468,  -5217}, 0, {   850,  -2230}, {0x1b, 0x3a, 0x93, 0xff}}},\n    {{{ -3081,   4537,  -5002}, 0, {  1134,  -1800}, {0x26, 0x74, 0xde, 0xff}}},\n    {{{ -3013,   4468,  -5084}, 0, {  1268,  -1964}, {0x56, 0x1f, 0xa8, 0xff}}},\n    {{{   590,   1536,    521}, 0, {  2168,   1176}, {0xf0, 0xaf, 0x5f, 0xff}}},\n    {{{   603,   1601,    533}, 0, {  2196,   1200}, {0xfe, 0x12, 0x7d, 0xff}}},\n    {{{   436,   1601,    477}, 0, {  1860,   1090}, {0x29, 0x47, 0x60, 0xff}}},\n};\n\n// 0x070070A0 - 0x070071A0\nstatic const Vtx wmotr_seg7_vertex_070070A0[] = {\n    {{{ -3820,   4595,  -4249}, 0, {  -340,   -298}, {0xff, 0x7e, 0x01, 0xff}}},\n    {{{ -3643,   4571,  -4214}, 0, {    12,   -226}, {0x00, 0x7e, 0x01, 0xff}}},\n    {{{ -3679,   4573,  -4329}, 0, {   -58,   -458}, {0x01, 0x7e, 0xf8, 0xff}}},\n    {{{ -2700,   4588,  -4600}, 0, {  1894,   -998}, {0x19, 0x7b, 0xf2, 0xff}}},\n    {{{ -2641,   4613,  -4746}, 0, {  2012,  -1290}, {0xff, 0x7e, 0x01, 0xff}}},\n    {{{ -2847,   4587,  -4704}, 0, {  1600,  -1206}, {0x04, 0x7a, 0xe0, 0xff}}},\n    {{{ -2859,   4614,  -4652}, 0, {  1578,  -1102}, {0x11, 0x79, 0xe1, 0xff}}},\n    {{{   941,   1536,    407}, 0, {  2868,    950}, {0x34, 0xa6, 0x47, 0xff}}},\n    {{{   769,   1601,    511}, 0, {  2526,   1156}, {0x2a, 0x10, 0x76, 0xff}}},\n    {{{   753,   1536,    499}, 0, {  2494,   1132}, {0x16, 0xaa, 0x5a, 0xff}}},\n    {{{   603,   1601,    533}, 0, {  2196,   1200}, {0xfe, 0x12, 0x7d, 0xff}}},\n    {{{   590,   1536,    521}, 0, {  2168,   1176}, {0xf0, 0xaf, 0x5f, 0xff}}},\n    {{{   436,   1601,    477}, 0, {  1860,   1090}, {0x29, 0x47, 0x60, 0xff}}},\n    {{{   426,   1536,    466}, 0, {  1840,   1066}, {0x18, 0x84, 0x07, 0xff}}},\n    {{{   961,   1601,    417}, 0, {  2910,    970}, {0x5a, 0x03, 0x59, 0xff}}},\n    {{{   492,   1601,    710}, 0, {  1972,   1554}, {0x7c, 0x17, 0x01, 0xff}}},\n};\n\n// 0x070071A0 - 0x070072A0\nstatic const Vtx wmotr_seg7_vertex_070071A0[] = {\n    {{{   426,   1536,    466}, 0, {  1840,   1066}, {0x18, 0x84, 0x07, 0xff}}},\n    {{{   492,   1601,    710}, 0, {  1972,   1554}, {0x7c, 0x17, 0x01, 0xff}}},\n    {{{   480,   1536,    694}, 0, {  1950,   1522}, {0x6b, 0xc1, 0x15, 0xff}}},\n    {{{   413,   1601,    887}, 0, {  1816,   1908}, {0x5e, 0x2d, 0x46, 0xff}}},\n    {{{   404,   1536,    868}, 0, {  1798,   1868}, {0x3e, 0xa5, 0x3e, 0xff}}},\n    {{{   246,   1601,    999}, 0, {  1482,   2130}, {0x1c, 0x07, 0x7b, 0xff}}},\n    {{{   240,   1536,    977}, 0, {  1470,   2088}, {0x0f, 0x97, 0x45, 0xff}}},\n    {{{     1,   1536,    943}, 0, {   992,   2018}, {0xd7, 0xaf, 0x58, 0xff}}},\n    {{{     2,   1601,    964}, 0, {   994,   2060}, {0xd2, 0x40, 0x62, 0xff}}},\n    {{{  -144,   1601,    831}, 0, {   702,   1796}, {0x9d, 0x12, 0x4c, 0xff}}},\n    {{{  -142,   1536,    813}, 0, {   706,   1760}, {0xc1, 0x9e, 0x30, 0xff}}},\n    {{{  -224,   1536,    656}, 0, {   542,   1446}, {0xf7, 0x87, 0x24, 0xff}}},\n    {{{  -227,   1601,    671}, 0, {   536,   1476}, {0xe5, 0x59, 0x56, 0xff}}},\n    {{{  -423,   1601,    797}, 0, {   146,   1726}, {0x31, 0x25, 0x6e, 0xff}}},\n    {{{  -416,   1536,    779}, 0, {   160,   1692}, {0x22, 0xc1, 0x68, 0xff}}},\n    {{{  -632,   1601,    838}, 0, {  -270,   1810}, {0xf6, 0x12, 0x7d, 0xff}}},\n};\n\n// 0x070072A0 - 0x070073A0\nstatic const Vtx wmotr_seg7_vertex_070072A0[] = {\n    {{{  -416,   1536,    779}, 0, {   160,   1692}, {0x22, 0xc1, 0x68, 0xff}}},\n    {{{  -632,   1601,    838}, 0, {  -270,   1810}, {0xf6, 0x12, 0x7d, 0xff}}},\n    {{{  -621,   1536,    820}, 0, {  -248,   1774}, {0xe6, 0xa4, 0x52, 0xff}}},\n    {{{  -813,   1601,    727}, 0, {  -632,   1588}, {0xa3, 0x20, 0x50, 0xff}}},\n    {{{  -798,   1536,    710}, 0, {  -602,   1554}, {0xca, 0x98, 0x2e, 0xff}}},\n    {{{  -880,   1536,    519}, 0, {  -766,   1172}, {0xa0, 0xb0, 0x10, 0xff}}},\n    {{{  -897,   1601,    531}, 0, {  -800,   1198}, {0x87, 0x20, 0x14, 0xff}}},\n    {{{  -885,   1601,    360}, 0, {  -774,    858}, {0x8e, 0x28, 0xdc, 0xff}}},\n    {{{  -868,   1536,    351}, 0, {  -742,    840}, {0xaa, 0xad, 0xd8, 0xff}}},\n    {{{  -799,   1601,    238}, 0, {  -604,    614}, {0xa9, 0x15, 0xa8, 0xff}}},\n    {{{  -785,   1536,    232}, 0, {  -576,    602}, {0xc2, 0xb5, 0xb0, 0xff}}},\n    {{{  -701,   1601,    183}, 0, {  -408,    504}, {0xa0, 0x50, 0xec, 0xff}}},\n    {{{  -688,   1536,    177}, 0, {  -382,    492}, {0xfc, 0x83, 0x11, 0xff}}},\n    {{{  -844,   1601,    196}, 0, {  -694,    530}, {0xf3, 0x30, 0x74, 0xff}}},\n    {{{  -829,   1536,    191}, 0, {  -662,    520}, {0xe6, 0xca, 0x6f, 0xff}}},\n    {{{ -1043,   1601,    112}, 0, { -1092,    364}, {0xb0, 0x0d, 0x61, 0xff}}},\n};\n\n// 0x070073A0 - 0x070074A0\nstatic const Vtx wmotr_seg7_vertex_070073A0[] = {\n    {{{  -829,   1536,    191}, 0, {  -662,    520}, {0xe6, 0xca, 0x6f, 0xff}}},\n    {{{ -1043,   1601,    112}, 0, { -1092,    364}, {0xb0, 0x0d, 0x61, 0xff}}},\n    {{{ -1024,   1536,    108}, 0, { -1052,    356}, {0xcf, 0x9c, 0x3b, 0xff}}},\n    {{{ -1148,   1601,    -47}, 0, { -1300,     42}, {0x97, 0x3e, 0x20, 0xff}}},\n    {{{ -1126,   1536,    -48}, 0, { -1258,     42}, {0xc3, 0x93, 0x12, 0xff}}},\n    {{{  -754,   1536,   -643}, 0, {  -514,  -1146}, {0x92, 0xc3, 0x09, 0xff}}},\n    {{{  -768,   1601,   -654}, 0, {  -542,  -1168}, {0x93, 0x39, 0x1b, 0xff}}},\n    {{{  -746,   1601,   -823}, 0, {  -498,  -1506}, {0x8f, 0x2d, 0xdd, 0xff}}},\n    {{{ -1148,   1601,   -228}, 0, { -1300,   -320}, {0x84, 0x12, 0xed, 0xff}}},\n    {{{ -1126,   1536,   -226}, 0, { -1258,   -314}, {0x9c, 0xb8, 0xe5, 0xff}}},\n    {{{ -1071,   1601,   -409}, 0, { -1148,   -680}, {0xa5, 0x30, 0xb7, 0xff}}},\n    {{{ -1051,   1536,   -403}, 0, { -1108,   -668}, {0xc5, 0xa7, 0xbe, 0xff}}},\n    {{{  -889,   1601,   -514}, 0, {  -782,   -888}, {0xd9, 0x17, 0x8a, 0xff}}},\n    {{{  -872,   1536,   -505}, 0, {  -750,   -872}, {0xf0, 0xad, 0xa2, 0xff}}},\n    {{{  -691,   1601,   -516}, 0, {  -388,   -894}, {0xc9, 0x53, 0xb3, 0xff}}},\n    {{{  -679,   1536,   -508}, 0, {  -364,   -876}, {0xe9, 0x84, 0x00, 0xff}}},\n};\n\n// 0x070074A0 - 0x07007590\nstatic const Vtx wmotr_seg7_vertex_070074A0[] = {\n    {{{    55,   1536,   -970}, 0, {  1102,  -1800}, {0x4b, 0xac, 0xc8, 0xff}}},\n    {{{   127,   1601,   -849}, 0, {  1246,  -1558}, {0x02, 0x58, 0xa5, 0xff}}},\n    {{{   124,   1536,   -834}, 0, {  1238,  -1528}, {0x00, 0x82, 0xf3, 0xff}}},\n    {{{  -754,   1536,   -643}, 0, {  -514,  -1146}, {0x92, 0xc3, 0x09, 0xff}}},\n    {{{  -746,   1601,   -823}, 0, {  -498,  -1506}, {0x8f, 0x2d, 0xdd, 0xff}}},\n    {{{  -732,   1536,   -809}, 0, {  -470,  -1478}, {0xad, 0xa7, 0xde, 0xff}}},\n    {{{  -619,   1601,  -1042}, 0, {  -244,  -1944}, {0xa8, 0x19, 0xa9, 0xff}}},\n    {{{  -608,   1536,  -1023}, 0, {  -222,  -1904}, {0xd0, 0xa4, 0xb9, 0xff}}},\n    {{{  -398,   1601,  -1127}, 0, {   196,  -2114}, {0xe5, 0x2b, 0x8d, 0xff}}},\n    {{{  -391,   1536,  -1107}, 0, {   208,  -2072}, {0xf7, 0xa5, 0xa9, 0xff}}},\n    {{{  -151,   1601,  -1121}, 0, {   688,  -2100}, {0x1b, 0x3a, 0x93, 0xff}}},\n    {{{  -149,   1536,  -1100}, 0, {   692,  -2060}, {0x22, 0xa7, 0xae, 0xff}}},\n    {{{    58,   1601,   -988}, 0, {  1106,  -1836}, {0x56, 0x1f, 0xa9, 0xff}}},\n    {{{   223,   1601,  -1031}, 0, {  1436,  -1922}, {0xaa, 0x2b, 0xae, 0xff}}},\n    {{{   217,   1536,  -1012}, 0, {  1424,  -1884}, {0xb3, 0xce, 0xaa, 0xff}}},\n};\n\n// 0x07007590 - 0x07007690\nstatic const Vtx wmotr_seg7_vertex_07007590[] = {\n    {{{   217,   1536,  -1012}, 0, {  1424,  -1884}, {0xb3, 0xce, 0xaa, 0xff}}},\n    {{{   459,   1601,  -1122}, 0, {  1908,  -2102}, {0xf7, 0x32, 0x8d, 0xff}}},\n    {{{   449,   1536,  -1101}, 0, {  1888,  -2062}, {0x0b, 0xa3, 0xab, 0xff}}},\n    {{{   223,   1601,  -1031}, 0, {  1436,  -1922}, {0xaa, 0x2b, 0xae, 0xff}}},\n    {{{   741,   1601,  -1009}, 0, {  2470,  -1878}, {0x4a, 0x24, 0xa0, 0xff}}},\n    {{{   725,   1536,   -991}, 0, {  2438,  -1840}, {0x3c, 0xa2, 0xc5, 0xff}}},\n    {{{   895,   1601,   -772}, 0, {  2778,  -1404}, {0x74, 0x27, 0xdf, 0xff}}},\n    {{{   876,   1536,   -758}, 0, {  2738,  -1376}, {0x56, 0xa4, 0xf4, 0xff}}},\n    {{{   881,   1601,   -528}, 0, {  2750,   -916}, {0x6f, 0x13, 0x39, 0xff}}},\n    {{{   862,   1536,   -519}, 0, {  2712,   -900}, {0x45, 0x9c, 0x22, 0xff}}},\n    {{{   691,   1536,   -369}, 0, {  2370,   -600}, {0x15, 0x84, 0x07, 0xff}}},\n    {{{   706,   1601,   -374}, 0, {  2402,   -610}, {0x5a, 0x56, 0xe9, 0xff}}},\n    {{{  -224,   1536,    656}, 0, {   542,   1446}, {0xf7, 0x87, 0x24, 0xff}}},\n    {{{  -785,   1536,    232}, 0, {  -576,    602}, {0xc2, 0xb5, 0xb0, 0xff}}},\n    {{{  -688,   1536,    177}, 0, {  -382,    492}, {0xfc, 0x83, 0x11, 0xff}}},\n    {{{   882,   1536,   -314}, 0, {  2752,   -490}, {0x33, 0xc3, 0x9e, 0xff}}},\n};\n\n// 0x07007690 - 0x07007790\nstatic const Vtx wmotr_seg7_vertex_07007690[] = {\n    {{{   706,   1601,   -374}, 0, {  2402,   -610}, {0x5a, 0x56, 0xe9, 0xff}}},\n    {{{   902,   1601,   -319}, 0, {  2792,   -500}, {0x48, 0x29, 0xa0, 0xff}}},\n    {{{   882,   1536,   -314}, 0, {  2752,   -490}, {0x33, 0xc3, 0x9e, 0xff}}},\n    {{{  1046,   1536,   -102}, 0, {  3080,    -66}, {0x59, 0xad, 0xde, 0xff}}},\n    {{{  1069,   1601,   -102}, 0, {  3126,    -68}, {0x72, 0x27, 0xdb, 0xff}}},\n    {{{  1090,   1601,    211}, 0, {  3168,    560}, {0x7a, 0x12, 0x1d, 0xff}}},\n    {{{  1067,   1536,    205}, 0, {  3120,    548}, {0x50, 0xa3, 0x1d, 0xff}}},\n    {{{   961,   1601,    417}, 0, {  2910,    970}, {0x5a, 0x03, 0x59, 0xff}}},\n    {{{   941,   1536,    407}, 0, {  2868,    950}, {0x34, 0xa6, 0x47, 0xff}}},\n    {{{  -688,   1536,    177}, 0, {  -382,    492}, {0xfc, 0x83, 0x11, 0xff}}},\n    {{{   426,   1536,    466}, 0, {  1840,   1066}, {0x18, 0x84, 0x07, 0xff}}},\n    {{{  -224,   1536,    656}, 0, {   542,   1446}, {0xf7, 0x87, 0x24, 0xff}}},\n    {{{   691,   1536,   -369}, 0, {  2370,   -600}, {0x15, 0x84, 0x07, 0xff}}},\n    {{{  -416,   1536,    779}, 0, {   160,   1692}, {0x22, 0xc1, 0x68, 0xff}}},\n    {{{  -621,   1536,    820}, 0, {  -248,   1774}, {0xe6, 0xa4, 0x52, 0xff}}},\n    {{{  -142,   1536,    813}, 0, {   706,   1760}, {0xc1, 0x9e, 0x30, 0xff}}},\n};\n\n// 0x07007790 - 0x07007890\nstatic const Vtx wmotr_seg7_vertex_07007790[] = {\n    {{{   426,   1536,    466}, 0, {  1840,   1066}, {0x18, 0x84, 0x07, 0xff}}},\n    {{{     1,   1536,    943}, 0, {   992,   2018}, {0xd7, 0xaf, 0x58, 0xff}}},\n    {{{  -142,   1536,    813}, 0, {   706,   1760}, {0xc1, 0x9e, 0x30, 0xff}}},\n    {{{   240,   1536,    977}, 0, {  1470,   2088}, {0x0f, 0x97, 0x45, 0xff}}},\n    {{{   404,   1536,    868}, 0, {  1798,   1868}, {0x3e, 0xa5, 0x3e, 0xff}}},\n    {{{   480,   1536,    694}, 0, {  1950,   1522}, {0x6b, 0xc1, 0x15, 0xff}}},\n    {{{   691,   1536,   -369}, 0, {  2370,   -600}, {0x15, 0x84, 0x07, 0xff}}},\n    {{{   590,   1536,    521}, 0, {  2168,   1176}, {0xf0, 0xaf, 0x5f, 0xff}}},\n    {{{  -224,   1536,    656}, 0, {   542,   1446}, {0xf7, 0x87, 0x24, 0xff}}},\n    {{{  -868,   1536,    351}, 0, {  -742,    840}, {0xaa, 0xad, 0xd8, 0xff}}},\n    {{{  -785,   1536,    232}, 0, {  -576,    602}, {0xc2, 0xb5, 0xb0, 0xff}}},\n    {{{  -880,   1536,    519}, 0, {  -766,   1172}, {0xa0, 0xb0, 0x10, 0xff}}},\n    {{{  -798,   1536,    710}, 0, {  -602,   1554}, {0xca, 0x98, 0x2e, 0xff}}},\n    {{{  -621,   1536,    820}, 0, {  -248,   1774}, {0xe6, 0xa4, 0x52, 0xff}}},\n    {{{  -688,   1536,    177}, 0, {  -382,    492}, {0xfc, 0x83, 0x11, 0xff}}},\n    {{{   124,   1536,   -834}, 0, {  1238,  -1528}, {0x00, 0x82, 0xf3, 0xff}}},\n};\n\n// 0x07007890 - 0x07007980\nstatic const Vtx wmotr_seg7_vertex_07007890[] = {\n    {{{  -688,   1536,    177}, 0, {  -382,    492}, {0xfc, 0x83, 0x11, 0xff}}},\n    {{{  -679,   1536,   -508}, 0, {  -364,   -876}, {0xe9, 0x84, 0x00, 0xff}}},\n    {{{   124,   1536,   -834}, 0, {  1238,  -1528}, {0x00, 0x82, 0xf3, 0xff}}},\n    {{{   691,   1536,   -369}, 0, {  2370,   -600}, {0x15, 0x84, 0x07, 0xff}}},\n    {{{   941,   1536,    407}, 0, {  2868,    950}, {0x34, 0xa6, 0x47, 0xff}}},\n    {{{   753,   1536,    499}, 0, {  2494,   1132}, {0x16, 0xaa, 0x5a, 0xff}}},\n    {{{  1067,   1536,    205}, 0, {  3120,    548}, {0x50, 0xa3, 0x1d, 0xff}}},\n    {{{  1046,   1536,   -102}, 0, {  3080,    -66}, {0x59, 0xad, 0xde, 0xff}}},\n    {{{   882,   1536,   -314}, 0, {  2752,   -490}, {0x33, 0xc3, 0x9e, 0xff}}},\n    {{{   862,   1536,   -519}, 0, {  2712,   -900}, {0x45, 0x9c, 0x22, 0xff}}},\n    {{{   590,   1536,    521}, 0, {  2168,   1176}, {0xf0, 0xaf, 0x5f, 0xff}}},\n    {{{   725,   1536,   -991}, 0, {  2438,  -1840}, {0x3c, 0xa2, 0xc5, 0xff}}},\n    {{{   876,   1536,   -758}, 0, {  2738,  -1376}, {0x56, 0xa4, 0xf4, 0xff}}},\n    {{{   449,   1536,  -1101}, 0, {  1888,  -2062}, {0x0b, 0xa3, 0xab, 0xff}}},\n    {{{   217,   1536,  -1012}, 0, {  1424,  -1884}, {0xb3, 0xce, 0xaa, 0xff}}},\n};\n\n// 0x07007980 - 0x07007A60\nstatic const Vtx wmotr_seg7_vertex_07007980[] = {\n    {{{  -688,   1536,    177}, 0, {  -382,    492}, {0xfc, 0x83, 0x11, 0xff}}},\n    {{{ -1024,   1536,    108}, 0, { -1052,    356}, {0xcf, 0x9c, 0x3b, 0xff}}},\n    {{{ -1126,   1536,    -48}, 0, { -1258,     42}, {0xc3, 0x93, 0x12, 0xff}}},\n    {{{  -679,   1536,   -508}, 0, {  -364,   -876}, {0xe9, 0x84, 0x00, 0xff}}},\n    {{{    55,   1536,   -970}, 0, {  1102,  -1800}, {0x4b, 0xac, 0xc8, 0xff}}},\n    {{{   124,   1536,   -834}, 0, {  1238,  -1528}, {0x00, 0x82, 0xf3, 0xff}}},\n    {{{  -608,   1536,  -1023}, 0, {  -222,  -1904}, {0xd0, 0xa4, 0xb9, 0xff}}},\n    {{{  -391,   1536,  -1107}, 0, {   208,  -2072}, {0xf7, 0xa5, 0xa9, 0xff}}},\n    {{{  -732,   1536,   -809}, 0, {  -470,  -1478}, {0xad, 0xa7, 0xde, 0xff}}},\n    {{{  -754,   1536,   -643}, 0, {  -514,  -1146}, {0x92, 0xc3, 0x09, 0xff}}},\n    {{{  -872,   1536,   -505}, 0, {  -750,   -872}, {0xf0, 0xad, 0xa2, 0xff}}},\n    {{{  -149,   1536,  -1100}, 0, {   692,  -2060}, {0x22, 0xa7, 0xae, 0xff}}},\n    {{{ -1051,   1536,   -403}, 0, { -1108,   -668}, {0xc5, 0xa7, 0xbe, 0xff}}},\n    {{{ -1126,   1536,   -226}, 0, { -1258,   -314}, {0x9c, 0xb8, 0xe5, 0xff}}},\n};\n\n// 0x07007A60 - 0x07007B60\nstatic const Vtx wmotr_seg7_vertex_07007A60[] = {\n    {{{  -691,   1601,   -516}, 0, {  -388,   -894}, {0xc9, 0x53, 0xb3, 0xff}}},\n    {{{  -687,   1691,   -422}, 0, {  -380,   -706}, {0x0e, 0x73, 0xcd, 0xff}}},\n    {{{  -633,   1632,   -476}, 0, {  -272,   -814}, {0xda, 0x76, 0xea, 0xff}}},\n    {{{  -688,   1536,    177}, 0, {  -382,    492}, {0xfc, 0x83, 0x11, 0xff}}},\n    {{{  -829,   1536,    191}, 0, {  -662,    520}, {0xe6, 0xca, 0x6f, 0xff}}},\n    {{{ -1024,   1536,    108}, 0, { -1052,    356}, {0xcf, 0x9c, 0x3b, 0xff}}},\n    {{{  -835,   1688,   -437}, 0, {  -676,   -736}, {0xf1, 0x6c, 0xc0, 0xff}}},\n    {{{  -889,   1601,   -514}, 0, {  -782,   -888}, {0xd9, 0x17, 0x8a, 0xff}}},\n    {{{  -748,   1728,   -153}, 0, {  -502,   -168}, {0xff, 0x7e, 0x01, 0xff}}},\n    {{{  -981,   1688,   -354}, 0, {  -968,   -570}, {0xdb, 0x74, 0xde, 0xff}}},\n    {{{ -1071,   1601,   -409}, 0, { -1148,   -680}, {0xa5, 0x30, 0xb7, 0xff}}},\n    {{{  -607,   1705,   -233}, 0, {  -220,   -330}, {0x01, 0x7e, 0xf8, 0xff}}},\n    {{{  -617,   1688,   -388}, 0, {  -240,   -638}, {0xf5, 0x79, 0xde, 0xff}}},\n    {{{     0,   1715,    -85}, 0, {   990,      0}, {0xeb, 0x7c, 0xf7, 0xff}}},\n    {{{   191,   1742,    -69}, 0, {  1372,      0}, {0x0c, 0x7e, 0xfe, 0xff}}},\n    {{{   161,   1765,   -316}, 0, {  1314,   -494}, {0xf8, 0x7e, 0x00, 0xff}}},\n};\n\n// 0x07007B60 - 0x07007C60\nstatic const Vtx wmotr_seg7_vertex_07007B60[] = {\n    {{{  -691,   1601,   -516}, 0, {  -388,   -894}, {0xc9, 0x53, 0xb3, 0xff}}},\n    {{{  -614,   1684,   -532}, 0, {  -234,   -924}, {0xc9, 0x6d, 0x21, 0xff}}},\n    {{{  -768,   1601,   -654}, 0, {  -542,  -1168}, {0x93, 0x39, 0x1b, 0xff}}},\n    {{{  -633,   1632,   -476}, 0, {  -272,   -814}, {0xda, 0x76, 0xea, 0xff}}},\n    {{{   323,   1744,   -461}, 0, {  1636,   -784}, {0x16, 0x7c, 0xf8, 0xff}}},\n    {{{   161,   1765,   -316}, 0, {  1314,   -494}, {0xf8, 0x7e, 0x00, 0xff}}},\n    {{{   191,   1742,    -69}, 0, {  1372,      0}, {0x0c, 0x7e, 0xfe, 0xff}}},\n    {{{   386,   1739,   -342}, 0, {  1762,   -546}, {0x26, 0x78, 0x00, 0xff}}},\n    {{{   212,   1747,   -556}, 0, {  1414,   -974}, {0x11, 0x79, 0xe1, 0xff}}},\n    {{{   371,   1721,   -504}, 0, {  1732,   -870}, {0x19, 0x7b, 0xf2, 0xff}}},\n    {{{   122,   1747,   -570}, 0, {  1236,  -1000}, {0xf8, 0x77, 0xd8, 0xff}}},\n    {{{    32,   1734,   -537}, 0, {  1056,   -934}, {0xd4, 0x6f, 0xd8, 0xff}}},\n    {{{   -71,   1720,   -421}, 0, {   848,   -702}, {0xd0, 0x74, 0xf3, 0xff}}},\n    {{{   -70,   1723,   -269}, 0, {   848,   -400}, {0xdb, 0x79, 0x08, 0xff}}},\n    {{{     0,   1715,    -85}, 0, {   990,      0}, {0xeb, 0x7c, 0xf7, 0xff}}},\n    {{{   368,   1724,   -164}, 0, {  1726,   -192}, {0x0a, 0x7e, 0x02, 0xff}}},\n};\n\n// 0x07007C60 - 0x07007D50\nstatic const Vtx wmotr_seg7_vertex_07007C60[] = {\n    {{{   329,   1717,     25}, 0, {  1648,    188}, {0x04, 0x7e, 0xfd, 0xff}}},\n    {{{   368,   1724,   -164}, 0, {  1726,   -192}, {0x0a, 0x7e, 0x02, 0xff}}},\n    {{{   191,   1742,    -69}, 0, {  1372,      0}, {0x0c, 0x7e, 0xfe, 0xff}}},\n    {{{     0,   1715,    -85}, 0, {   990,      0}, {0xeb, 0x7c, 0xf7, 0xff}}},\n    {{{   176,   1750,    -28}, 0, {  1342,     80}, {0x01, 0x7e, 0xf1, 0xff}}},\n    {{{   284,   1733,     31}, 0, {  1558,    200}, {0x1a, 0x7c, 0xfc, 0xff}}},\n    {{{   386,   1739,   -342}, 0, {  1762,   -546}, {0x26, 0x78, 0x00, 0xff}}},\n    {{{   448,   1704,   -350}, 0, {  1884,   -562}, {0x15, 0x7d, 0xfc, 0xff}}},\n    {{{   371,   1721,   -504}, 0, {  1732,   -870}, {0x19, 0x7b, 0xf2, 0xff}}},\n    {{{   492,   1742,   -226}, 0, {  1972,   -314}, {0xf3, 0x7c, 0xef, 0xff}}},\n    {{{  1069,   1601,   -102}, 0, {  3126,    -68}, {0x72, 0x27, 0xdb, 0xff}}},\n    {{{  1001,   1716,    199}, 0, {  2988,    536}, {0x46, 0x69, 0x09, 0xff}}},\n    {{{  1090,   1601,    211}, 0, {  3168,    560}, {0x7a, 0x12, 0x1d, 0xff}}},\n    {{{   970,   1719,    -66}, 0, {  2928,      6}, {0x3b, 0x6b, 0xe3, 0xff}}},\n    {{{   902,   1601,   -319}, 0, {  2792,   -500}, {0x48, 0x29, 0xa0, 0xff}}},\n};\n\n// 0x07007D50 - 0x07007E50\nstatic const Vtx wmotr_seg7_vertex_07007D50[] = {\n    {{{   -81,   1719,    -20}, 0, {   828,     96}, {0xe5, 0x7b, 0xf8, 0xff}}},\n    {{{  -148,   1686,   -249}, 0, {   694,   -360}, {0xeb, 0x7d, 0xfe, 0xff}}},\n    {{{  -251,   1689,    -58}, 0, {   488,     22}, {0x05, 0x7e, 0x00, 0xff}}},\n    {{{  1090,   1601,    211}, 0, {  3168,    560}, {0x7a, 0x12, 0x1d, 0xff}}},\n    {{{  1001,   1716,    199}, 0, {  2988,    536}, {0x46, 0x69, 0x09, 0xff}}},\n    {{{   889,   1722,    380}, 0, {  2766,    898}, {0x36, 0x60, 0x3e, 0xff}}},\n    {{{   970,   1719,    -66}, 0, {  2928,      6}, {0x3b, 0x6b, 0xe3, 0xff}}},\n    {{{   609,   1782,     78}, 0, {  2206,    294}, {0x00, 0x7e, 0x03, 0xff}}},\n    {{{   961,   1601,    417}, 0, {  2910,    970}, {0x5a, 0x03, 0x59, 0xff}}},\n    {{{   902,   1601,   -319}, 0, {  2792,   -500}, {0x48, 0x29, 0xa0, 0xff}}},\n    {{{   819,   1729,   -224}, 0, {  2624,   -312}, {0x20, 0x71, 0xd1, 0xff}}},\n    {{{   731,   1719,    451}, 0, {  2452,   1036}, {0x10, 0x60, 0x50, 0xff}}},\n    {{{   769,   1601,    511}, 0, {  2526,   1156}, {0x2a, 0x10, 0x76, 0xff}}},\n    {{{     0,   1715,    -85}, 0, {   990,      0}, {0xeb, 0x7c, 0xf7, 0xff}}},\n    {{{  -383,   1735,     37}, 0, {   224,    214}, {0x08, 0x7e, 0xfb, 0xff}}},\n    {{{  -419,   1712,   -167}, 0, {   152,   -198}, {0x05, 0x7e, 0x03, 0xff}}},\n};\n\n// 0x07007E50 - 0x07007F50\nstatic const Vtx wmotr_seg7_vertex_07007E50[] = {\n    {{{  -251,   1689,    -58}, 0, {   488,     22}, {0x05, 0x7e, 0x00, 0xff}}},\n    {{{  -148,   1686,   -249}, 0, {   694,   -360}, {0xeb, 0x7d, 0xfe, 0xff}}},\n    {{{  -362,   1736,   -299}, 0, {   266,   -462}, {0x02, 0x7e, 0xfe, 0xff}}},\n    {{{     0,   1715,    -85}, 0, {   990,      0}, {0xeb, 0x7c, 0xf7, 0xff}}},\n    {{{   -70,   1723,   -269}, 0, {   848,   -400}, {0xdb, 0x79, 0x08, 0xff}}},\n    {{{  -129,   1698,    103}, 0, {   732,    344}, {0xe4, 0x7b, 0x0a, 0xff}}},\n    {{{   -81,   1719,    -20}, 0, {   828,     96}, {0xe5, 0x7b, 0xf8, 0xff}}},\n    {{{   -72,   1722,     92}, 0, {   846,    322}, {0xde, 0x79, 0x0a, 0xff}}},\n    {{{   -24,   1738,      8}, 0, {   940,    154}, {0xec, 0x7c, 0xf5, 0xff}}},\n    {{{   176,   1750,    -28}, 0, {  1342,     80}, {0x01, 0x7e, 0xf1, 0xff}}},\n    {{{  -206,   1695,    128}, 0, {   578,    394}, {0x0b, 0x7e, 0x00, 0xff}}},\n    {{{  -383,   1735,     37}, 0, {   224,    214}, {0x08, 0x7e, 0xfb, 0xff}}},\n    {{{  -419,   1712,   -167}, 0, {   152,   -198}, {0x05, 0x7e, 0x03, 0xff}}},\n    {{{  -116,   1675,    476}, 0, {   756,   1086}, {0xe0, 0x78, 0xeb, 0xff}}},\n    {{{    33,   1671,    351}, 0, {  1058,    838}, {0xf1, 0x7c, 0x12, 0xff}}},\n    {{{  -177,   1641,    456}, 0, {   636,   1046}, {0x0d, 0x7e, 0x03, 0xff}}},\n};\n\n// 0x07007F50 - 0x07008040\nstatic const Vtx wmotr_seg7_vertex_07007F50[] = {\n    {{{   -72,   1689,    257}, 0, {   846,    652}, {0xf4, 0x7b, 0x1b, 0xff}}},\n    {{{  -129,   1698,    103}, 0, {   732,    344}, {0xe4, 0x7b, 0x0a, 0xff}}},\n    {{{  -206,   1695,    128}, 0, {   578,    394}, {0x0b, 0x7e, 0x00, 0xff}}},\n    {{{   -22,   1716,    218}, 0, {   946,    574}, {0xe3, 0x78, 0x19, 0xff}}},\n    {{{   -72,   1722,     92}, 0, {   846,    322}, {0xde, 0x79, 0x0a, 0xff}}},\n    {{{  -270,   1701,    288}, 0, {   450,    714}, {0x1c, 0x7b, 0x04, 0xff}}},\n    {{{  -383,   1735,     37}, 0, {   224,    214}, {0x08, 0x7e, 0xfb, 0xff}}},\n    {{{  -177,   1641,    456}, 0, {   636,   1046}, {0x0d, 0x7e, 0x03, 0xff}}},\n    {{{    33,   1671,    351}, 0, {  1058,    838}, {0xf1, 0x7c, 0x12, 0xff}}},\n    {{{    75,   1717,    272}, 0, {  1142,    682}, {0xf0, 0x77, 0x29, 0xff}}},\n    {{{  -436,   1730,    371}, 0, {   118,    878}, {0x0f, 0x7e, 0xfe, 0xff}}},\n    {{{  -264,   1710,    440}, 0, {   464,   1016}, {0x2b, 0x77, 0xfd, 0xff}}},\n    {{{   152,   1715,    629}, 0, {  1294,   1392}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{   269,   1675,    360}, 0, {  1528,    858}, {0x01, 0x7b, 0x1c, 0xff}}},\n    {{{  -116,   1675,    476}, 0, {   756,   1086}, {0xe0, 0x78, 0xeb, 0xff}}},\n};\n\n// 0x07008040 - 0x07008140\nstatic const Vtx wmotr_seg7_vertex_07008040[] = {\n    {{{  -383,   1735,     37}, 0, {   224,    214}, {0x08, 0x7e, 0xfb, 0xff}}},\n    {{{  -634,   1708,    -35}, 0, {  -274,     66}, {0xf4, 0x7e, 0x03, 0xff}}},\n    {{{  -618,   1723,    195}, 0, {  -244,    528}, {0xce, 0x74, 0x05, 0xff}}},\n    {{{  -177,   1641,    456}, 0, {   636,   1046}, {0x0d, 0x7e, 0x03, 0xff}}},\n    {{{  -264,   1710,    440}, 0, {   464,   1016}, {0x2b, 0x77, 0xfd, 0xff}}},\n    {{{  -259,   1706,    604}, 0, {   472,   1342}, {0x3d, 0x66, 0x2a, 0xff}}},\n    {{{  -227,   1601,    671}, 0, {   536,   1476}, {0xe5, 0x59, 0x56, 0xff}}},\n    {{{  -146,   1675,    643}, 0, {   698,   1420}, {0xcc, 0x73, 0x06, 0xff}}},\n    {{{  -116,   1675,    476}, 0, {   756,   1086}, {0xe0, 0x78, 0xeb, 0xff}}},\n    {{{  -436,   1730,    371}, 0, {   118,    878}, {0x0f, 0x7e, 0xfe, 0xff}}},\n    {{{  -522,   1745,    470}, 0, {   -52,   1076}, {0xff, 0x7e, 0x00, 0xff}}},\n    {{{   152,   1715,    629}, 0, {  1294,   1392}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  -685,   1688,    120}, 0, {  -376,    378}, {0xfa, 0x6f, 0x3d, 0xff}}},\n    {{{  -748,   1728,   -153}, 0, {  -502,   -168}, {0xff, 0x7e, 0x01, 0xff}}},\n    {{{  -571,   1704,   -118}, 0, {  -148,    -98}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  -416,   1706,    705}, 0, {   160,   1544}, {0x18, 0x6d, 0x3a, 0xff}}},\n};\n\n// 0x07008140 - 0x07008220\nstatic const Vtx wmotr_seg7_vertex_07008140[] = {\n    {{{  -701,   1601,    183}, 0, {  -408,    504}, {0xa0, 0x50, 0xec, 0xff}}},\n    {{{  -638,   1706,    213}, 0, {  -282,    564}, {0xc3, 0x6e, 0xf3, 0xff}}},\n    {{{  -663,   1683,    137}, 0, {  -332,    412}, {0xb9, 0x65, 0x1c, 0xff}}},\n    {{{  -685,   1688,    120}, 0, {  -376,    378}, {0xfa, 0x6f, 0x3d, 0xff}}},\n    {{{  -634,   1708,    -35}, 0, {  -274,     66}, {0xf4, 0x7e, 0x03, 0xff}}},\n    {{{  -618,   1723,    195}, 0, {  -244,    528}, {0xce, 0x74, 0x05, 0xff}}},\n    {{{  -494,   1733,    341}, 0, {     2,    820}, {0xf5, 0x7e, 0x03, 0xff}}},\n    {{{  -383,   1735,     37}, 0, {   224,    214}, {0x08, 0x7e, 0xfb, 0xff}}},\n    {{{  -717,   1706,    258}, 0, {  -440,    654}, {0xca, 0x60, 0xc3, 0xff}}},\n    {{{  -522,   1745,    470}, 0, {   -52,   1076}, {0xff, 0x7e, 0x00, 0xff}}},\n    {{{  -259,   1706,    604}, 0, {   472,   1342}, {0x3d, 0x66, 0x2a, 0xff}}},\n    {{{  -416,   1706,    705}, 0, {   160,   1544}, {0x18, 0x6d, 0x3a, 0xff}}},\n    {{{  -423,   1601,    797}, 0, {   146,   1726}, {0x31, 0x25, 0x6e, 0xff}}},\n    {{{  -227,   1601,    671}, 0, {   536,   1476}, {0xe5, 0x59, 0x56, 0xff}}},\n};\n\n// 0x07008220 - 0x07008320\nstatic const Vtx wmotr_seg7_vertex_07008220[] = {\n    {{{   112,   1706,   -638}, 0, {  1216,  -1136}, {0xd7, 0x6e, 0xd3, 0xff}}},\n    {{{    12,   1667,   -620}, 0, {  1014,  -1100}, {0xf7, 0x7c, 0xe8, 0xff}}},\n    {{{    32,   1734,   -537}, 0, {  1056,   -934}, {0xd4, 0x6f, 0xd8, 0xff}}},\n    {{{   -79,   1675,    772}, 0, {   832,   1676}, {0xcf, 0x6e, 0x26, 0xff}}},\n    {{{  -146,   1675,    643}, 0, {   698,   1420}, {0xcc, 0x73, 0x06, 0xff}}},\n    {{{  -227,   1601,    671}, 0, {   536,   1476}, {0xe5, 0x59, 0x56, 0xff}}},\n    {{{  -144,   1601,    831}, 0, {   702,   1796}, {0x9d, 0x12, 0x4c, 0xff}}},\n    {{{   152,   1715,    629}, 0, {  1294,   1392}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{   153,   1709,   -767}, 0, {  1298,  -1394}, {0xb2, 0x5d, 0xdd, 0xff}}},\n    {{{    91,   1629,   -722}, 0, {  1174,  -1304}, {0xe2, 0x75, 0xdb, 0xff}}},\n    {{{   127,   1601,   -849}, 0, {  1246,  -1558}, {0x02, 0x58, 0xa5, 0xff}}},\n    {{{    42,   1670,   -793}, 0, {  1074,  -1446}, {0x32, 0x74, 0xfd, 0xff}}},\n    {{{  -140,   1669,   -442}, 0, {   710,   -746}, {0xe7, 0x79, 0xe7, 0xff}}},\n    {{{  -320,   1687,   -535}, 0, {   350,   -932}, {0x08, 0x7e, 0xff, 0xff}}},\n    {{{  -314,   1709,   -689}, 0, {   362,  -1238}, {0x00, 0x7e, 0xff, 0xff}}},\n    {{{   430,   1745,   -650}, 0, {  1850,  -1160}, {0xff, 0x7e, 0x01, 0xff}}},\n};\n\n// 0x07008320 - 0x07008420\nstatic const Vtx wmotr_seg7_vertex_07008320[] = {\n    {{{   112,   1706,   -638}, 0, {  1216,  -1136}, {0xd7, 0x6e, 0xd3, 0xff}}},\n    {{{   224,   1720,   -608}, 0, {  1438,  -1078}, {0x04, 0x7a, 0xdf, 0xff}}},\n    {{{   430,   1745,   -650}, 0, {  1850,  -1160}, {0xff, 0x7e, 0x01, 0xff}}},\n    {{{   122,   1747,   -570}, 0, {  1236,  -1000}, {0xf8, 0x77, 0xd8, 0xff}}},\n    {{{    32,   1734,   -537}, 0, {  1056,   -934}, {0xd4, 0x6f, 0xd8, 0xff}}},\n    {{{    42,   1670,   -793}, 0, {  1074,  -1446}, {0x32, 0x74, 0xfd, 0xff}}},\n    {{{    -9,   1670,   -906}, 0, {   972,  -1672}, {0x26, 0x73, 0xde, 0xff}}},\n    {{{  -314,   1709,   -689}, 0, {   362,  -1238}, {0x00, 0x7e, 0xff, 0xff}}},\n    {{{   127,   1601,   -849}, 0, {  1246,  -1558}, {0x02, 0x58, 0xa5, 0xff}}},\n    {{{    58,   1601,   -988}, 0, {  1106,  -1836}, {0x56, 0x1f, 0xa9, 0xff}}},\n    {{{   153,   1709,   -767}, 0, {  1298,  -1394}, {0xb2, 0x5d, 0xdd, 0xff}}},\n    {{{   223,   1601,  -1031}, 0, {  1436,  -1922}, {0xaa, 0x2b, 0xae, 0xff}}},\n    {{{   235,   1706,   -911}, 0, {  1460,  -1682}, {0xdc, 0x6e, 0xce, 0xff}}},\n    {{{   326,   1718,    280}, 0, {  1642,    698}, {0xf3, 0x7a, 0x1d, 0xff}}},\n    {{{   263,   1726,    246}, 0, {  1516,    630}, {0x06, 0x7b, 0x1c, 0xff}}},\n    {{{   269,   1675,    360}, 0, {  1528,    858}, {0x01, 0x7b, 0x1c, 0xff}}},\n};\n\n// 0x07008420 - 0x07008510\nstatic const Vtx wmotr_seg7_vertex_07008420[] = {\n    {{{   581,   1706,    478}, 0, {  2152,   1092}, {0xef, 0x5d, 0x54, 0xff}}},\n    {{{   427,   1708,    418}, 0, {  1844,    972}, {0xd0, 0x5f, 0x44, 0xff}}},\n    {{{   436,   1601,    477}, 0, {  1860,   1090}, {0x29, 0x47, 0x60, 0xff}}},\n    {{{   603,   1601,    533}, 0, {  2196,   1200}, {0xfe, 0x12, 0x7d, 0xff}}},\n    {{{   384,   1675,    488}, 0, {  1758,   1112}, {0x34, 0x72, 0xf1, 0xff}}},\n    {{{   429,   1675,    675}, 0, {  1848,   1484}, {0x48, 0x67, 0x05, 0xff}}},\n    {{{   492,   1601,    710}, 0, {  1972,   1554}, {0x7c, 0x17, 0x01, 0xff}}},\n    {{{   365,   1670,    386}, 0, {  1720,    910}, {0xf2, 0x74, 0x30, 0xff}}},\n    {{{   609,   1782,     78}, 0, {  2206,    294}, {0x00, 0x7e, 0x03, 0xff}}},\n    {{{   326,   1718,    280}, 0, {  1642,    698}, {0xf3, 0x7a, 0x1d, 0xff}}},\n    {{{   269,   1675,    360}, 0, {  1528,    858}, {0x01, 0x7b, 0x1c, 0xff}}},\n    {{{   152,   1715,    629}, 0, {  1294,   1392}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{   329,   1717,     25}, 0, {  1648,    188}, {0x04, 0x7e, 0xfd, 0xff}}},\n    {{{   284,   1733,     31}, 0, {  1558,    200}, {0x1a, 0x7c, 0xfc, 0xff}}},\n    {{{   263,   1726,    246}, 0, {  1516,    630}, {0x06, 0x7b, 0x1c, 0xff}}},\n};\n\n// 0x07008510 - 0x07008610\nstatic const Vtx wmotr_seg7_vertex_07008510[] = {\n    {{{   647,   1723,   -290}, 0, {  2284,   -442}, {0x0f, 0x6c, 0xc1, 0xff}}},\n    {{{   706,   1601,   -374}, 0, {  2402,   -610}, {0x5a, 0x56, 0xe9, 0xff}}},\n    {{{   448,   1704,   -350}, 0, {  1884,   -562}, {0x15, 0x7d, 0xfc, 0xff}}},\n    {{{   172,   1716,    291}, 0, {  1336,    720}, {0xff, 0x76, 0x2e, 0xff}}},\n    {{{    33,   1671,    351}, 0, {  1058,    838}, {0xf1, 0x7c, 0x12, 0xff}}},\n    {{{   269,   1675,    360}, 0, {  1528,    858}, {0x01, 0x7b, 0x1c, 0xff}}},\n    {{{   263,   1726,    246}, 0, {  1516,    630}, {0x06, 0x7b, 0x1c, 0xff}}},\n    {{{   609,   1782,     78}, 0, {  2206,    294}, {0x00, 0x7e, 0x03, 0xff}}},\n    {{{   492,   1742,   -226}, 0, {  1972,   -314}, {0xf3, 0x7c, 0xef, 0xff}}},\n    {{{   329,   1717,     25}, 0, {  1648,    188}, {0x04, 0x7e, 0xfd, 0xff}}},\n    {{{   589,   1707,   -403}, 0, {  2166,   -668}, {0x1e, 0x6e, 0x37, 0xff}}},\n    {{{   430,   1745,   -650}, 0, {  1850,  -1160}, {0xff, 0x7e, 0x01, 0xff}}},\n    {{{   371,   1721,   -504}, 0, {  1732,   -870}, {0x19, 0x7b, 0xf2, 0xff}}},\n    {{{   902,   1601,   -319}, 0, {  2792,   -500}, {0x48, 0x29, 0xa0, 0xff}}},\n    {{{   819,   1729,   -224}, 0, {  2624,   -312}, {0x20, 0x71, 0xd1, 0xff}}},\n    {{{   732,   1706,   -520}, 0, {  2452,   -902}, {0x35, 0x6f, 0x1e, 0xff}}},\n};\n\n// 0x07008610 - 0x07008700\nstatic const Vtx wmotr_seg7_vertex_07008610[] = {\n    {{{   881,   1601,   -528}, 0, {  2750,   -916}, {0x6f, 0x13, 0x39, 0xff}}},\n    {{{   732,   1706,   -520}, 0, {  2452,   -902}, {0x35, 0x6f, 0x1e, 0xff}}},\n    {{{   706,   1601,   -374}, 0, {  2402,   -610}, {0x5a, 0x56, 0xe9, 0xff}}},\n    {{{   589,   1707,   -403}, 0, {  2166,   -668}, {0x1e, 0x6e, 0x37, 0xff}}},\n    {{{   430,   1745,   -650}, 0, {  1850,  -1160}, {0xff, 0x7e, 0x01, 0xff}}},\n    {{{  -701,   1601,    183}, 0, {  -408,    504}, {0xa0, 0x50, 0xec, 0xff}}},\n    {{{  -685,   1688,    120}, 0, {  -376,    378}, {0xfa, 0x6f, 0x3d, 0xff}}},\n    {{{  -844,   1601,    196}, 0, {  -694,    530}, {0xf3, 0x30, 0x74, 0xff}}},\n    {{{  -799,   1601,    238}, 0, {  -604,    614}, {0xa9, 0x15, 0xa8, 0xff}}},\n    {{{  -717,   1706,    258}, 0, {  -440,    654}, {0xca, 0x60, 0xc3, 0xff}}},\n    {{{   141,   1751,    116}, 0, {  1272,    370}, {0xfd, 0x7e, 0x0d, 0xff}}},\n    {{{   284,   1733,     31}, 0, {  1558,    200}, {0x1a, 0x7c, 0xfc, 0xff}}},\n    {{{   176,   1750,    -28}, 0, {  1342,     80}, {0x01, 0x7e, 0xf1, 0xff}}},\n    {{{  -814,   1688,    109}, 0, {  -634,    356}, {0xf6, 0x72, 0x36, 0xff}}},\n    {{{  -748,   1728,   -153}, 0, {  -502,   -168}, {0xff, 0x7e, 0x01, 0xff}}},\n};\n\n// 0x07008700 - 0x07008800\nstatic const Vtx wmotr_seg7_vertex_07008700[] = {\n    {{{  -571,   1704,   -118}, 0, {  -148,    -98}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  -383,   1735,     37}, 0, {   224,    214}, {0x08, 0x7e, 0xfb, 0xff}}},\n    {{{  -419,   1712,   -167}, 0, {   152,   -198}, {0x05, 0x7e, 0x03, 0xff}}},\n    {{{  -436,   1730,    371}, 0, {   118,    878}, {0x0f, 0x7e, 0xfe, 0xff}}},\n    {{{  -494,   1733,    341}, 0, {     2,    820}, {0xf5, 0x7e, 0x03, 0xff}}},\n    {{{  -522,   1745,    470}, 0, {   -52,   1076}, {0xff, 0x7e, 0x00, 0xff}}},\n    {{{   141,   1751,    116}, 0, {  1272,    370}, {0xfd, 0x7e, 0x0d, 0xff}}},\n    {{{   263,   1726,    246}, 0, {  1516,    630}, {0x06, 0x7b, 0x1c, 0xff}}},\n    {{{   284,   1733,     31}, 0, {  1558,    200}, {0x1a, 0x7c, 0xfc, 0xff}}},\n    {{{   172,   1716,    291}, 0, {  1336,    720}, {0xff, 0x76, 0x2e, 0xff}}},\n    {{{   176,   1750,    -28}, 0, {  1342,     80}, {0x01, 0x7e, 0xf1, 0xff}}},\n    {{{   -24,   1738,      8}, 0, {   940,    154}, {0xec, 0x7c, 0xf5, 0xff}}},\n    {{{   -72,   1722,     92}, 0, {   846,    322}, {0xde, 0x79, 0x0a, 0xff}}},\n    {{{   -22,   1716,    218}, 0, {   946,    574}, {0xe3, 0x78, 0x19, 0xff}}},\n    {{{    75,   1717,    272}, 0, {  1142,    682}, {0xf0, 0x77, 0x29, 0xff}}},\n    {{{    33,   1671,    351}, 0, {  1058,    838}, {0xf1, 0x7c, 0x12, 0xff}}},\n};\n\n// 0x07008800 - 0x070088F0\nstatic const Vtx wmotr_seg7_vertex_07008800[] = {\n    {{{   -71,   1720,   -421}, 0, {   848,   -702}, {0xd0, 0x74, 0xf3, 0xff}}},\n    {{{  -148,   1686,   -249}, 0, {   694,   -360}, {0xeb, 0x7d, 0xfe, 0xff}}},\n    {{{   -70,   1723,   -269}, 0, {   848,   -400}, {0xdb, 0x79, 0x08, 0xff}}},\n    {{{  -140,   1669,   -442}, 0, {   710,   -746}, {0xe7, 0x79, 0xe7, 0xff}}},\n    {{{    32,   1734,   -537}, 0, {  1056,   -934}, {0xd4, 0x6f, 0xd8, 0xff}}},\n    {{{  -614,   1684,   -532}, 0, {  -234,   -924}, {0xc9, 0x6d, 0x21, 0xff}}},\n    {{{  -670,   1670,   -638}, 0, {  -346,  -1138}, {0xd3, 0x76, 0x01, 0xff}}},\n    {{{  -768,   1601,   -654}, 0, {  -542,  -1168}, {0x93, 0x39, 0x1b, 0xff}}},\n    {{{  -362,   1736,   -299}, 0, {   266,   -462}, {0x02, 0x7e, 0xfe, 0xff}}},\n    {{{  -320,   1687,   -535}, 0, {   350,   -932}, {0x08, 0x7e, 0xff, 0xff}}},\n    {{{   122,   1747,   -570}, 0, {  1236,  -1000}, {0xf8, 0x77, 0xd8, 0xff}}},\n    {{{   212,   1747,   -556}, 0, {  1414,   -974}, {0x11, 0x79, 0xe1, 0xff}}},\n    {{{   224,   1720,   -608}, 0, {  1438,  -1078}, {0x04, 0x7a, 0xdf, 0xff}}},\n    {{{  -550,   1685,   -483}, 0, {  -108,   -826}, {0xe6, 0x7c, 0x00, 0xff}}},\n    {{{  -314,   1709,   -689}, 0, {   362,  -1238}, {0x00, 0x7e, 0xff, 0xff}}},\n};\n\n// 0x070088F0 - 0x070089F0\nstatic const Vtx wmotr_seg7_vertex_070088F0[] = {\n    {{{  -617,   1688,   -388}, 0, {  -240,   -638}, {0xf5, 0x79, 0xde, 0xff}}},\n    {{{  -550,   1685,   -483}, 0, {  -108,   -826}, {0xe6, 0x7c, 0x00, 0xff}}},\n    {{{  -633,   1632,   -476}, 0, {  -272,   -814}, {0xda, 0x76, 0xea, 0xff}}},\n    {{{  -614,   1684,   -532}, 0, {  -234,   -924}, {0xc9, 0x6d, 0x21, 0xff}}},\n    {{{  -362,   1736,   -299}, 0, {   266,   -462}, {0x02, 0x7e, 0xfe, 0xff}}},\n    {{{  -670,   1670,   -638}, 0, {  -346,  -1138}, {0xd3, 0x76, 0x01, 0xff}}},\n    {{{  -314,   1709,   -689}, 0, {   362,  -1238}, {0x00, 0x7e, 0xff, 0xff}}},\n    {{{   741,   1601,  -1009}, 0, {  2470,  -1878}, {0x4a, 0x24, 0xa0, 0xff}}},\n    {{{   633,   1703,   -923}, 0, {  2254,  -1706}, {0x1b, 0x73, 0xd3, 0xff}}},\n    {{{   759,   1704,   -748}, 0, {  2506,  -1356}, {0x30, 0x73, 0xee, 0xff}}},\n    {{{  -607,   1705,   -233}, 0, {  -220,   -330}, {0x01, 0x7e, 0xf8, 0xff}}},\n    {{{  -571,   1704,   -118}, 0, {  -148,    -98}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  -419,   1712,   -167}, 0, {   152,   -198}, {0x05, 0x7e, 0x03, 0xff}}},\n    {{{   430,   1745,   -650}, 0, {  1850,  -1160}, {0xff, 0x7e, 0x01, 0xff}}},\n    {{{   425,   1706,   -984}, 0, {  1840,  -1826}, {0xff, 0x75, 0xd1, 0xff}}},\n    {{{   235,   1706,   -911}, 0, {  1460,  -1682}, {0xdc, 0x6e, 0xce, 0xff}}},\n};\n\n// 0x070089F0 - 0x07008AD0\nstatic const Vtx wmotr_seg7_vertex_070089F0[] = {\n    {{{   235,   1706,   -911}, 0, {  1460,  -1682}, {0xdc, 0x6e, 0xce, 0xff}}},\n    {{{   425,   1706,   -984}, 0, {  1840,  -1826}, {0xff, 0x75, 0xd1, 0xff}}},\n    {{{   459,   1601,  -1122}, 0, {  1908,  -2102}, {0xf7, 0x32, 0x8d, 0xff}}},\n    {{{   223,   1601,  -1031}, 0, {  1436,  -1922}, {0xaa, 0x2b, 0xae, 0xff}}},\n    {{{   430,   1745,   -650}, 0, {  1850,  -1160}, {0xff, 0x7e, 0x01, 0xff}}},\n    {{{   633,   1703,   -923}, 0, {  2254,  -1706}, {0x1b, 0x73, 0xd3, 0xff}}},\n    {{{   741,   1601,  -1009}, 0, {  2470,  -1878}, {0x4a, 0x24, 0xa0, 0xff}}},\n    {{{   759,   1704,   -748}, 0, {  2506,  -1356}, {0x30, 0x73, 0xee, 0xff}}},\n    {{{   429,   1675,    675}, 0, {  1848,   1484}, {0x48, 0x67, 0x05, 0xff}}},\n    {{{   366,   1675,    816}, 0, {  1722,   1766}, {0x29, 0x73, 0x22, 0xff}}},\n    {{{   413,   1601,    887}, 0, {  1816,   1908}, {0x5e, 0x2d, 0x46, 0xff}}},\n    {{{   895,   1601,   -772}, 0, {  2778,  -1404}, {0x74, 0x27, 0xdf, 0xff}}},\n    {{{   732,   1706,   -520}, 0, {  2452,   -902}, {0x35, 0x6f, 0x1e, 0xff}}},\n    {{{   881,   1601,   -528}, 0, {  2750,   -916}, {0x6f, 0x13, 0x39, 0xff}}},\n};\n\n// 0x07008AD0 - 0x07008BD0\nstatic const Vtx wmotr_seg7_vertex_07008AD0[] = {\n    {{{   731,   1719,    451}, 0, {  2452,   1036}, {0x10, 0x60, 0x50, 0xff}}},\n    {{{   581,   1706,    478}, 0, {  2152,   1092}, {0xef, 0x5d, 0x54, 0xff}}},\n    {{{   603,   1601,    533}, 0, {  2196,   1200}, {0xfe, 0x12, 0x7d, 0xff}}},\n    {{{   769,   1601,    511}, 0, {  2526,   1156}, {0x2a, 0x10, 0x76, 0xff}}},\n    {{{   609,   1782,     78}, 0, {  2206,    294}, {0x00, 0x7e, 0x03, 0xff}}},\n    {{{   492,   1601,    710}, 0, {  1972,   1554}, {0x7c, 0x17, 0x01, 0xff}}},\n    {{{   429,   1675,    675}, 0, {  1848,   1484}, {0x48, 0x67, 0x05, 0xff}}},\n    {{{   413,   1601,    887}, 0, {  1816,   1908}, {0x5e, 0x2d, 0x46, 0xff}}},\n    {{{   366,   1675,    816}, 0, {  1722,   1766}, {0x29, 0x73, 0x22, 0xff}}},\n    {{{   232,   1675,    906}, 0, {  1456,   1944}, {0x0d, 0x70, 0x3a, 0xff}}},\n    {{{   152,   1715,    629}, 0, {  1294,   1392}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{   246,   1601,    999}, 0, {  1482,   2130}, {0x1c, 0x07, 0x7b, 0xff}}},\n    {{{    37,   1675,    878}, 0, {  1066,   1888}, {0xeb, 0x74, 0x2d, 0xff}}},\n    {{{     2,   1601,    964}, 0, {   994,   2060}, {0xd2, 0x40, 0x62, 0xff}}},\n    {{{   -79,   1675,    772}, 0, {   832,   1676}, {0xcf, 0x6e, 0x26, 0xff}}},\n    {{{  -144,   1601,    831}, 0, {   702,   1796}, {0x9d, 0x12, 0x4c, 0xff}}},\n};\n\n// 0x07008BD0 - 0x07008CD0\nstatic const Vtx wmotr_seg7_vertex_07008BD0[] = {\n    {{{  -423,   1601,    797}, 0, {   146,   1726}, {0x31, 0x25, 0x6e, 0xff}}},\n    {{{  -416,   1706,    705}, 0, {   160,   1544}, {0x18, 0x6d, 0x3a, 0xff}}},\n    {{{  -583,   1706,    738}, 0, {  -172,   1610}, {0xf6, 0x6b, 0x43, 0xff}}},\n    {{{  -522,   1745,    470}, 0, {   -52,   1076}, {0xff, 0x7e, 0x00, 0xff}}},\n    {{{  -632,   1601,    838}, 0, {  -270,   1810}, {0xf6, 0x12, 0x7d, 0xff}}},\n    {{{  -728,   1706,    649}, 0, {  -462,   1432}, {0xd8, 0x73, 0x23, 0xff}}},\n    {{{  -813,   1601,    727}, 0, {  -632,   1588}, {0xa3, 0x20, 0x50, 0xff}}},\n    {{{  -795,   1706,    492}, 0, {  -596,   1120}, {0xbd, 0x6b, 0x0a, 0xff}}},\n    {{{  -897,   1601,    531}, 0, {  -800,   1198}, {0x87, 0x20, 0x14, 0xff}}},\n    {{{  -785,   1706,    355}, 0, {  -576,    848}, {0xc8, 0x70, 0xec, 0xff}}},\n    {{{  -885,   1601,    360}, 0, {  -774,    858}, {0x8e, 0x28, 0xdc, 0xff}}},\n    {{{  -717,   1706,    258}, 0, {  -440,    654}, {0xca, 0x60, 0xc3, 0xff}}},\n    {{{  -799,   1601,    238}, 0, {  -604,    614}, {0xa9, 0x15, 0xa8, 0xff}}},\n    {{{  -959,   1688,     64}, 0, {  -922,    266}, {0xd9, 0x6d, 0x33, 0xff}}},\n    {{{  -814,   1688,    109}, 0, {  -634,    356}, {0xf6, 0x72, 0x36, 0xff}}},\n    {{{  -748,   1728,   -153}, 0, {  -502,   -168}, {0xff, 0x7e, 0x01, 0xff}}},\n};\n\n// 0x07008CD0 - 0x07008DD0\nstatic const Vtx wmotr_seg7_vertex_07008CD0[] = {\n    {{{  -768,   1601,   -654}, 0, {  -542,  -1168}, {0x93, 0x39, 0x1b, 0xff}}},\n    {{{  -670,   1670,   -638}, 0, {  -346,  -1138}, {0xd3, 0x76, 0x01, 0xff}}},\n    {{{  -652,   1670,   -774}, 0, {  -310,  -1408}, {0xd1, 0x75, 0xf4, 0xff}}},\n    {{{  -844,   1601,    196}, 0, {  -694,    530}, {0xf3, 0x30, 0x74, 0xff}}},\n    {{{  -814,   1688,    109}, 0, {  -634,    356}, {0xf6, 0x72, 0x36, 0xff}}},\n    {{{  -959,   1688,     64}, 0, {  -922,    266}, {0xd9, 0x6d, 0x33, 0xff}}},\n    {{{ -1043,   1601,    112}, 0, { -1092,    364}, {0xb0, 0x0d, 0x61, 0xff}}},\n    {{{ -1043,   1688,    -64}, 0, { -1090,     10}, {0xd0, 0x74, 0x0e, 0xff}}},\n    {{{  -748,   1728,   -153}, 0, {  -502,   -168}, {0xff, 0x7e, 0x01, 0xff}}},\n    {{{ -1148,   1601,    -47}, 0, { -1300,     42}, {0x97, 0x3e, 0x20, 0xff}}},\n    {{{ -1043,   1688,   -209}, 0, { -1090,   -280}, {0xc5, 0x6f, 0xf4, 0xff}}},\n    {{{ -1148,   1601,   -228}, 0, { -1300,   -320}, {0x84, 0x12, 0xed, 0xff}}},\n    {{{  -981,   1688,   -354}, 0, {  -968,   -570}, {0xdb, 0x74, 0xde, 0xff}}},\n    {{{ -1071,   1601,   -409}, 0, { -1148,   -680}, {0xa5, 0x30, 0xb7, 0xff}}},\n    {{{  -314,   1709,   -689}, 0, {   362,  -1238}, {0x00, 0x7e, 0xff, 0xff}}},\n    {{{  -746,   1601,   -823}, 0, {  -498,  -1506}, {0x8f, 0x2d, 0xdd, 0xff}}},\n};\n\n// 0x07008DD0 - 0x07008EB0\nstatic const Vtx wmotr_seg7_vertex_07008DD0[] = {\n    {{{  -559,   1668,   -958}, 0, {  -124,  -1774}, {0xe0, 0x74, 0xdb, 0xff}}},\n    {{{  -652,   1670,   -774}, 0, {  -310,  -1408}, {0xd1, 0x75, 0xf4, 0xff}}},\n    {{{  -314,   1709,   -689}, 0, {   362,  -1238}, {0x00, 0x7e, 0xff, 0xff}}},\n    {{{  -746,   1601,   -823}, 0, {  -498,  -1506}, {0x8f, 0x2d, 0xdd, 0xff}}},\n    {{{  -619,   1601,  -1042}, 0, {  -244,  -1944}, {0xa8, 0x19, 0xa9, 0xff}}},\n    {{{  -374,   1669,  -1017}, 0, {   244,  -1894}, {0xfc, 0x76, 0xd2, 0xff}}},\n    {{{  -398,   1601,  -1127}, 0, {   196,  -2114}, {0xe5, 0x2b, 0x8d, 0xff}}},\n    {{{  -176,   1670,  -1012}, 0, {   638,  -1882}, {0x0b, 0x78, 0xd9, 0xff}}},\n    {{{  -151,   1601,  -1121}, 0, {   688,  -2100}, {0x1b, 0x3a, 0x93, 0xff}}},\n    {{{    -9,   1670,   -906}, 0, {   972,  -1672}, {0x26, 0x73, 0xde, 0xff}}},\n    {{{    58,   1601,   -988}, 0, {  1106,  -1836}, {0x56, 0x1f, 0xa9, 0xff}}},\n    {{{  -748,   1728,   -153}, 0, {  -502,   -168}, {0xff, 0x7e, 0x01, 0xff}}},\n    {{{  -571,   1704,   -118}, 0, {  -148,    -98}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  -607,   1705,   -233}, 0, {  -220,   -330}, {0x01, 0x7e, 0xf8, 0xff}}},\n};\n\n// 0x07008EB0 - 0x07008EF0\nstatic const Vtx wmotr_seg7_vertex_07008EB0[] = {\n    {{{   371,   1721,   -504}, 0, {  1732,   -870}, {0x19, 0x7b, 0xf2, 0xff}}},\n    {{{   430,   1745,   -650}, 0, {  1850,  -1160}, {0xff, 0x7e, 0x01, 0xff}}},\n    {{{   224,   1720,   -608}, 0, {  1438,  -1078}, {0x04, 0x7a, 0xdf, 0xff}}},\n    {{{   212,   1747,   -556}, 0, {  1414,   -974}, {0x11, 0x79, 0xe1, 0xff}}},\n};\n\n// 0x07008EF0 - 0x07009148\nstatic const Gfx wmotr_seg7_dl_07008EF0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wmotr_seg7_texture_07001600),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 8 * 32 - 1, CALC_DXT(8, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wmotr_seg7_lights_07001800.l, 1),\n    gsSPLight(&wmotr_seg7_lights_07001800.a, 2),\n    gsSPVertex(wmotr_seg7_vertex_07001830, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07001920, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07001A10, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07001B00, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07001BF0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07001CE0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07001DD0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07001EC0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07001FB0, 6, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  1,  3,  4, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009148 - 0x070092A0\nstatic const Gfx wmotr_seg7_dl_07009148[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wmotr_seg7_texture_07000800),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 16 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wmotr_seg7_lights_07001818.l, 1),\n    gsSPLight(&wmotr_seg7_lights_07001818.a, 2),\n    gsSPVertex(wmotr_seg7_vertex_07002010, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07002100, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_070021F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_070022E0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_070023D0, 8, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x070092A0 - 0x07009458\nstatic const Gfx wmotr_seg7_dl_070092A0[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wmotr_seg7_texture_07000000),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wmotr_seg7_vertex_07002450, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07002540, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07002630, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPLight(&wmotr_seg7_lights_07001800.l, 1),\n    gsSPLight(&wmotr_seg7_lights_07001800.a, 2),\n    gsSPVertex(wmotr_seg7_vertex_07002670, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 0,  2,  7, 0x0,  7,  2,  8, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(11, 12, 10, 0x0, 13, 14,  0, 0x0),\n    gsSP2Triangles(13,  0, 12, 0x0, 14,  1,  0, 0x0),\n    gsSP2Triangles(15, 13, 12, 0x0, 11, 15, 12, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07002770, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 4, 10, 11, 0x0,  4, 11,  5, 0x0),\n    gsSP2Triangles( 6,  5,  7, 0x0,  7,  9,  6, 0x0),\n    gsSP2Triangles(12, 10,  4, 0x0, 12, 13, 10, 0x0),\n    gsSP2Triangles(14, 15, 12, 0x0, 15, 13, 12, 0x0),\n    gsSP2Triangles(14, 12,  9, 0x0,  8, 14,  9, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07009458 - 0x0700C1F8\nstatic const Gfx wmotr_seg7_dl_07009458[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wmotr_seg7_texture_07000C00),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wmotr_seg7_vertex_07002870, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  4,  5,  2, 0x0),\n    gsSP2Triangles( 5,  6,  2, 0x0,  6,  7,  2, 0x0),\n    gsSP2Triangles( 2,  7,  8, 0x0,  8,  3,  2, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 10, 12, 11, 0x0),\n    gsSP2Triangles(12, 13, 11, 0x0, 14, 15, 11, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07002970, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  0, 0x0),\n    gsSP2Triangles( 4,  5,  0, 0x0,  6,  4,  0, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles(11, 12,  7, 0x0, 11,  7, 13, 0x0),\n    gsSP2Triangles(12,  8,  7, 0x0, 13,  7, 10, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07002A50, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  4,  7, 0x0,  6,  5,  4, 0x0),\n    gsSP2Triangles( 3,  5,  1, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 8,  3,  0, 0x0,  9, 10,  7, 0x0),\n    gsSP2Triangles( 6,  7, 10, 0x0,  1,  5, 11, 0x0),\n    gsSP2Triangles( 6, 11,  5, 0x0,  1, 11, 12, 0x0),\n    gsSP2Triangles( 2,  1, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07002B50, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  5,  0,  6, 0x0),\n    gsSP2Triangles( 6,  0,  4, 0x0,  4,  2,  7, 0x0),\n    gsSP2Triangles( 3,  7,  2, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 6,  4,  9, 0x0,  9,  4,  8, 0x0),\n    gsSP2Triangles( 7, 10, 11, 0x0,  8,  7, 11, 0x0),\n    gsSP2Triangles( 3, 10,  7, 0x0, 12,  8, 11, 0x0),\n    gsSP2Triangles(11, 10, 13, 0x0, 11, 13, 14, 0x0),\n    gsSP2Triangles(15, 11, 14, 0x0, 12, 11, 15, 0x0),\n    gsSP1Triangle( 3, 13, 10, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07002C50, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  5,  0,  4, 0x0),\n    gsSP2Triangles( 6,  0,  5, 0x0,  4,  2,  7, 0x0),\n    gsSP2Triangles( 3,  7,  2, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 9,  4,  8, 0x0,  5,  4,  9, 0x0),\n    gsSP2Triangles( 8,  7,  3, 0x0,  8,  3, 10, 0x0),\n    gsSP2Triangles( 9,  8, 11, 0x0, 11,  8, 10, 0x0),\n    gsSP2Triangles(10,  3, 12, 0x0, 13, 12,  3, 0x0),\n    gsSP2Triangles( 3, 14, 13, 0x0, 10, 12, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07002D50, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  4,  6,  5, 0x0),\n    gsSP2Triangles( 7,  6,  4, 0x0,  8,  2,  5, 0x0),\n    gsSP2Triangles( 0,  2,  8, 0x0,  9,  7, 10, 0x0),\n    gsSP2Triangles( 5, 11, 12, 0x0,  5,  6, 11, 0x0),\n    gsSP2Triangles( 8,  5, 13, 0x0, 13,  5, 12, 0x0),\n    gsSP2Triangles( 7, 11,  6, 0x0, 11, 14, 15, 0x0),\n    gsSP2Triangles(12, 11, 15, 0x0,  7, 14, 11, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07002E50, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  3,  5,  6, 0x0),\n    gsSP2Triangles( 2,  3,  7, 0x0,  7,  3,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  6, 11, 12, 0x0),\n    gsSP2Triangles(13,  6, 12, 0x0,  7,  6, 13, 0x0),\n    gsSP2Triangles(13, 12, 14, 0x0,  9, 15, 10, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07002F50, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 2,  5,  3, 0x0,  0,  6,  1, 0x0),\n    gsSP2Triangles( 7,  6,  0, 0x0,  8,  9,  7, 0x0),\n    gsSP2Triangles( 7,  9,  6, 0x0,  8, 10,  9, 0x0),\n    gsSP2Triangles(11, 10,  8, 0x0, 12, 13, 11, 0x0),\n    gsSP2Triangles(11, 13, 10, 0x0, 12, 14, 13, 0x0),\n    gsSP1Triangle(15, 14, 12, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07003050, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  3, 0x0,  3,  5,  0, 0x0),\n    gsSP2Triangles( 6,  7,  4, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  9,  8,  6, 0x0),\n    gsSP2Triangles( 9, 10,  8, 0x0, 11, 10,  9, 0x0),\n    gsSP2Triangles(12, 13, 11, 0x0, 11, 13, 10, 0x0),\n    gsSP2Triangles(14, 15, 12, 0x0, 12, 15, 13, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07003150, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  0, 0x0,  5,  3,  0, 0x0),\n    gsSP2Triangles( 6,  5,  4, 0x0,  6,  7,  5, 0x0),\n    gsSP2Triangles( 8,  7,  6, 0x0,  8,  9,  7, 0x0),\n    gsSP2Triangles(10,  9,  8, 0x0, 10, 11,  9, 0x0),\n    gsSP2Triangles( 2,  1, 12, 0x0,  1, 13, 12, 0x0),\n    gsSP2Triangles( 1,  3, 14, 0x0,  1, 14, 13, 0x0),\n    gsSP2Triangles( 9, 11, 14, 0x0,  7,  9, 14, 0x0),\n    gsSP2Triangles( 3,  5, 14, 0x0,  5,  7, 14, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07003240, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  1,  7,  8, 0x0),\n    gsSP2Triangles( 3,  8,  7, 0x0,  1,  8,  9, 0x0),\n    gsSP2Triangles( 9,  8,  5, 0x0,  3,  5,  8, 0x0),\n    gsSP2Triangles( 9,  5, 10, 0x0,  5,  4, 11, 0x0),\n    gsSP2Triangles(10,  5, 11, 0x0,  0,  2, 12, 0x0),\n    gsSP2Triangles(13, 14,  2, 0x0, 13,  2, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07003340, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 5,  4,  2, 0x0,  2,  1,  6, 0x0),\n    gsSP2Triangles( 2,  6,  7, 0x0,  8,  2,  3, 0x0),\n    gsSP2Triangles( 5,  9,  4, 0x0,  9,  3,  4, 0x0),\n    gsSP2Triangles( 9, 10,  3, 0x0, 10,  8,  3, 0x0),\n    gsSP2Triangles(10, 11,  8, 0x0, 11, 12,  8, 0x0),\n    gsSP2Triangles( 9, 13, 10, 0x0,  9, 14, 13, 0x0),\n    gsSP1Triangle(13, 15, 10, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07003440, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  3,  0, 0x0,  5,  6,  0, 0x0),\n    gsSP2Triangles( 6,  7,  0, 0x0,  7,  4,  0, 0x0),\n    gsSP2Triangles( 6,  5,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07003540, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  2,  1, 0x0,  4,  5,  2, 0x0),\n    gsSP2Triangles( 3,  2,  5, 0x0,  3,  5,  6, 0x0),\n    gsSP2Triangles( 7,  3,  8, 0x0,  8,  3,  6, 0x0),\n    gsSP2Triangles( 7,  0,  3, 0x0,  4,  1,  9, 0x0),\n    gsSP2Triangles(10,  9,  1, 0x0, 10,  1,  0, 0x0),\n    gsSP2Triangles( 4, 11,  5, 0x0,  6,  5, 11, 0x0),\n    gsSP2Triangles(12,  6, 13, 0x0,  6, 11, 13, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07003620, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  5,  4, 0x0,  7,  6,  8, 0x0),\n    gsSP2Triangles( 6,  4,  8, 0x0,  9,  6,  7, 0x0),\n    gsSP2Triangles( 3, 10,  4, 0x0,  8,  4, 10, 0x0),\n    gsSP2Triangles(11,  8,  1, 0x0,  7,  8, 11, 0x0),\n    gsSP2Triangles( 8, 10,  1, 0x0, 10, 12,  2, 0x0),\n    gsSP2Triangles( 1, 10,  2, 0x0,  3, 12, 10, 0x0),\n    gsSP2Triangles(11,  1,  0, 0x0,  0,  2, 13, 0x0),\n    gsSP2Triangles(13,  2, 14, 0x0,  2, 12, 15, 0x0),\n    gsSP2Triangles( 2, 15, 14, 0x0,  3, 15, 12, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07003720, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 4,  0,  5, 0x0,  6,  0,  4, 0x0),\n    gsSP2Triangles( 0,  2,  5, 0x0,  5,  2,  7, 0x0),\n    gsSP2Triangles( 3,  7,  2, 0x0,  4,  5,  8, 0x0),\n    gsSP2Triangles( 5,  7,  9, 0x0,  8,  5,  9, 0x0),\n    gsSP2Triangles( 9,  7,  3, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(10,  9, 11, 0x0,  9,  3, 11, 0x0),\n    gsSP2Triangles( 3, 12, 13, 0x0, 13, 14,  3, 0x0),\n    gsSP2Triangles(11,  3, 14, 0x0, 10, 11, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07003820, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  3, 0x0,  3,  5,  6, 0x0),\n    gsSP2Triangles( 2,  3,  6, 0x0,  0,  2,  7, 0x0),\n    gsSP2Triangles( 7,  2,  6, 0x0,  8,  4,  9, 0x0),\n    gsSP2Triangles( 7,  6, 10, 0x0, 10,  6, 11, 0x0),\n    gsSP2Triangles( 6, 12, 11, 0x0,  6,  5, 12, 0x0),\n    gsSP2Triangles( 4, 12,  5, 0x0,  4, 13, 12, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 11, 12, 14, 0x0),\n    gsSP2Triangles(10, 11, 15, 0x0, 15, 11, 14, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07003920, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 1,  4,  5, 0x0,  1,  5,  2, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  0,  2,  9, 0x0),\n    gsSP2Triangles( 9,  2, 10, 0x0,  2, 11, 10, 0x0),\n    gsSP2Triangles( 9, 10, 12, 0x0,  7, 13,  8, 0x0),\n    gsSP2Triangles(14, 13,  7, 0x0,  7, 15, 12, 0x0),\n    gsSP1Triangle( 7,  6, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07003A20, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  5,  4,  0, 0x0),\n    gsSP2Triangles( 6,  7,  5, 0x0,  5,  7,  4, 0x0),\n    gsSP2Triangles( 8,  9,  6, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11,  8, 0x0, 11, 12,  8, 0x0),\n    gsSP2Triangles( 8, 12,  9, 0x0, 13, 10,  8, 0x0),\n    gsSP2Triangles(13, 14, 10, 0x0, 15, 14, 13, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07003B20, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 3,  4,  1, 0x0,  5,  4,  3, 0x0),\n    gsSP2Triangles( 6,  7,  5, 0x0,  5,  7,  4, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  9,  8,  6, 0x0),\n    gsSP2Triangles(10, 11,  9, 0x0,  9, 11,  8, 0x0),\n    gsSP2Triangles(12, 13,  9, 0x0, 12, 14, 13, 0x0),\n    gsSP1Triangle(15, 14, 12, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07003C20, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 3,  4,  1, 0x0,  5,  4,  3, 0x0),\n    gsSP2Triangles( 6,  7,  5, 0x0,  5,  7,  4, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0,  9, 11, 13, 0x0),\n    gsSP2Triangles(14,  9, 13, 0x0,  7,  8, 10, 0x0),\n    gsSP2Triangles( 4,  7, 10, 0x0,  1,  4, 10, 0x0),\n    gsSP1Triangle(12,  1, 10, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07003D10, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 1,  5,  4, 0x0,  1,  4,  6, 0x0),\n    gsSP2Triangles( 3,  7,  4, 0x0,  6,  4,  7, 0x0),\n    gsSP2Triangles( 3,  8,  7, 0x0,  6,  7,  9, 0x0),\n    gsSP2Triangles( 9,  7, 10, 0x0,  7,  8, 10, 0x0),\n    gsSP2Triangles( 3, 11,  8, 0x0,  0,  2, 12, 0x0),\n    gsSP1Triangle(13, 14,  2, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07003E00, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  5,  1, 0x0,  4,  1,  0, 0x0),\n    gsSP2Triangles( 6,  3,  1, 0x0,  1,  7,  8, 0x0),\n    gsSP2Triangles( 1,  8,  9, 0x0,  6, 10,  3, 0x0),\n    gsSP2Triangles(10, 11,  2, 0x0, 10,  2,  3, 0x0),\n    gsSP2Triangles(11,  0,  2, 0x0, 11, 12,  0, 0x0),\n    gsSP2Triangles(12,  4,  0, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle(10, 14, 13, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07003EF0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  2,  1,  4, 0x0),\n    gsSP2Triangles( 6,  3,  2, 0x0,  7,  6,  2, 0x0),\n    gsSP2Triangles( 8,  7,  2, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07003FD0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  5,  7, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  9,  8, 0x0, 10,  8,  4, 0x0),\n    gsSP2Triangles( 7,  9,  1, 0x0,  0,  7,  1, 0x0),\n    gsSP2Triangles( 6,  7,  0, 0x0,  3, 11,  4, 0x0),\n    gsSP2Triangles(10,  4, 11, 0x0,  1,  9, 12, 0x0),\n    gsSP2Triangles(10, 12,  9, 0x0,  2,  1, 13, 0x0),\n    gsSP2Triangles( 1, 12, 13, 0x0, 13, 12, 14, 0x0),\n    gsSP1Triangle(10, 14, 12, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_070040C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  1,  0, 0x0,  2,  3,  5, 0x0),\n    gsSP2Triangles( 6,  5,  3, 0x0,  7,  2,  8, 0x0),\n    gsSP2Triangles( 0,  2,  7, 0x0,  2,  5,  8, 0x0),\n    gsSP2Triangles( 8,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0,  8,  6, 10, 0x0),\n    gsSP2Triangles(10,  6, 11, 0x0, 12, 11,  6, 0x0),\n    gsSP2Triangles(13, 10, 14, 0x0,  9, 10, 13, 0x0),\n    gsSP2Triangles(10, 11, 14, 0x0, 14, 11, 15, 0x0),\n    gsSP1Triangle(12, 15, 11, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_070041C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 2,  4,  6, 0x0,  4,  5,  7, 0x0),\n    gsSP2Triangles( 6,  4,  7, 0x0,  7,  5,  8, 0x0),\n    gsSP2Triangles( 8,  5,  9, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 8,  9, 11, 0x0,  7,  8, 12, 0x0),\n    gsSP2Triangles(13,  7, 12, 0x0,  6,  7, 13, 0x0),\n    gsSP2Triangles(12,  8, 14, 0x0, 11, 14,  8, 0x0),\n    gsSP1Triangle(12, 14, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_070042C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  3,  5,  6, 0x0),\n    gsSP2Triangles( 2,  3,  7, 0x0,  7,  3,  6, 0x0),\n    gsSP2Triangles( 6,  5,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 11, 10, 0x0, 12, 10, 13, 0x0),\n    gsSP2Triangles( 6,  8, 14, 0x0, 15,  6, 14, 0x0),\n    gsSP2Triangles( 7,  6, 15, 0x0, 14,  8, 13, 0x0),\n    gsSP1Triangle(12, 13,  8, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_070043C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  0,  3, 0x0,  2,  1,  5, 0x0),\n    gsSP2Triangles( 2,  5,  6, 0x0,  3,  2,  7, 0x0),\n    gsSP2Triangles( 7,  2,  6, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(11, 10,  9, 0x0, 11,  9, 12, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0,  6, 13, 14, 0x0),\n    gsSP2Triangles(15,  6, 14, 0x0,  7,  6, 15, 0x0),\n    gsSP1Triangle(14, 13, 12, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_070044C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 4,  0,  2, 0x0,  2,  1,  5, 0x0),\n    gsSP2Triangles( 2,  5,  6, 0x0,  4,  2,  7, 0x0),\n    gsSP2Triangles( 7,  2,  6, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 14, 12, 0x0),\n    gsSP1Triangle( 6, 13, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_070045C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  2,  5,  6, 0x0),\n    gsSP2Triangles( 0,  2,  7, 0x0,  7,  2,  6, 0x0),\n    gsSP2Triangles( 6,  5,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 7,  6, 10, 0x0, 10,  6,  9, 0x0),\n    gsSP2Triangles(11,  9, 12, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 15, 13, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_070046C0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  3, 0x0,  6,  5,  4, 0x0),\n    gsSP2Triangles( 7,  8,  6, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles( 8, 10,  6, 0x0, 11,  9,  6, 0x0),\n    gsSP2Triangles(12, 11,  6, 0x0,  6, 10,  5, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_070047C0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  3,  5,  4, 0x0),\n    gsSP2Triangles( 6,  5,  3, 0x0,  7,  8,  6, 0x0),\n    gsSP2Triangles( 6,  9,  5, 0x0,  8, 10,  6, 0x0),\n    gsSP2Triangles( 6, 10,  9, 0x0,  7, 11,  8, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_070048B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  5,  1,  0, 0x0),\n    gsSP2Triangles( 5,  6,  1, 0x0,  7,  8,  5, 0x0),\n    gsSP2Triangles( 8,  9,  5, 0x0,  9, 10,  5, 0x0),\n    gsSP2Triangles( 5, 10, 11, 0x0, 11,  6,  5, 0x0),\n    gsSP2Triangles(12, 13,  8, 0x0, 14, 13, 12, 0x0),\n    gsSP1Triangle(14, 15, 13, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_070049B0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  3,  5,  4, 0x0),\n    gsSP2Triangles( 3,  6,  5, 0x0,  3,  7,  6, 0x0),\n    gsSP2Triangles( 8,  7,  3, 0x0,  9, 10,  8, 0x0),\n    gsSP2Triangles( 8, 10,  7, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(14, 15,  9, 0x0,  9, 15, 10, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07004AB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 4,  5,  3, 0x0,  3,  6,  4, 0x0),\n    gsSP2Triangles( 7,  6,  3, 0x0,  8,  7,  3, 0x0),\n    gsSP2Triangles( 3,  5,  1, 0x0,  9,  7,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSP2Triangles(14, 11, 10, 0x0, 14, 15, 11, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07004BB0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  3, 0x0,  1,  4,  3, 0x0),\n    gsSP2Triangles( 6,  3,  7, 0x0,  8,  3,  6, 0x0),\n    gsSP2Triangles( 7,  3,  5, 0x0,  9,  8,  6, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSP1Triangle( 4, 14,  5, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07004CA0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  6,  8, 0x0),\n    gsSP2Triangles( 8,  7, 10, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles(12, 11, 13, 0x0,  6,  9, 14, 0x0),\n    gsSP2Triangles(15,  6, 14, 0x0, 15,  7,  6, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07004DA0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 4,  2,  3, 0x0,  5,  0,  6, 0x0),\n    gsSP2Triangles( 0,  7,  6, 0x0,  7,  0,  8, 0x0),\n    gsSP2Triangles( 9,  7, 10, 0x0, 11,  1, 12, 0x0),\n    gsSP2Triangles( 1,  0, 12, 0x0, 13,  6,  7, 0x0),\n    gsSP2Triangles(13,  5,  6, 0x0, 14, 13,  9, 0x0),\n    gsSP2Triangles( 5, 13, 15, 0x0, 14, 15, 13, 0x0),\n    gsSP2Triangles(15, 12,  5, 0x0,  0,  5, 12, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07004EA0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  0,  3, 0x0,  3,  5,  6, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  8,  4,  9, 0x0),\n    gsSP2Triangles( 4,  3,  6, 0x0, 10,  4,  8, 0x0),\n    gsSP2Triangles(11,  7, 12, 0x0, 11,  8,  7, 0x0),\n    gsSP2Triangles( 2,  5,  3, 0x0,  1,  5,  2, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07004FA0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 3,  2,  5, 0x0,  6,  0,  2, 0x0),\n    gsSP2Triangles( 2,  7,  8, 0x0,  4,  9,  2, 0x0),\n    gsSP2Triangles( 9,  6,  2, 0x0, 10, 11, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_070050A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  3,  2, 0x0,  6,  4,  2, 0x0),\n    gsSP2Triangles( 5,  4,  7, 0x0,  6,  7,  4, 0x0),\n    gsSP2Triangles( 8,  9,  2, 0x0,  2, 10,  6, 0x0),\n    gsSP2Triangles( 2,  9, 10, 0x0, 11,  5, 12, 0x0),\n    gsSP2Triangles(12,  5, 13, 0x0, 13,  5,  7, 0x0),\n    gsSP2Triangles( 6, 13,  7, 0x0, 14, 11, 12, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07005190, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  2, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(11,  8, 10, 0x0, 12, 11, 10, 0x0),\n    gsSP2Triangles( 1, 13,  2, 0x0, 14, 15,  5, 0x0),\n    gsSP1Triangle(15,  3,  5, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07005290, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(11, 10, 12, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles( 7, 14,  8, 0x0, 13, 12, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07005390, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 4,  8,  9, 0x0,  8, 10, 11, 0x0),\n    gsSP2Triangles( 9,  8, 11, 0x0, 11, 10, 12, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 12, 14, 15, 0x0),\n    gsSP1Triangle(13, 12, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07005490, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  4,  9, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(10,  9, 11, 0x0,  9, 12, 11, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 13, 14, 0x0),\n    gsSP1Triangle(14, 13, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07005590, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 4,  8,  9, 0x0,  9,  8, 10, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 10, 12, 13, 0x0),\n    gsSP2Triangles(11, 10, 13, 0x0, 13, 12, 14, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07005690, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  4,  9, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles(10,  9, 11, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(12, 11, 13, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(14, 13, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07005790, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 4,  8,  9, 0x0,  9,  8, 10, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 11, 10, 12, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 12, 14, 15, 0x0),\n    gsSP1Triangle(13, 12, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07005890, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 3,  2,  4, 0x0,  5,  4,  6, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  7,  6,  8, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  9,  8, 10, 0x0),\n    gsSP2Triangles( 8, 11, 10, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(11, 13, 12, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(13, 15, 14, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07005990, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 6,  9, 10, 0x0,  6, 10, 11, 0x0),\n    gsSP2Triangles( 6, 12,  7, 0x0, 13, 14,  6, 0x0),\n    gsSP2Triangles( 6, 11, 15, 0x0,  6, 15, 13, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07005A90, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  3,  6,  7, 0x0),\n    gsSP2Triangles( 3,  7,  8, 0x0,  3,  8,  0, 0x0),\n    gsSP2Triangles( 9, 10,  3, 0x0,  0,  2, 11, 0x0),\n    gsSP2Triangles( 0, 11, 12, 0x0,  0, 12, 13, 0x0),\n    gsSP1Triangle( 0, 13, 14, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07005B80, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  3,  4, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 4,  7,  8, 0x0,  4,  8,  9, 0x0),\n    gsSP2Triangles( 4,  9, 10, 0x0,  2, 11, 12, 0x0),\n    gsSP2Triangles( 2, 12, 13, 0x0,  2, 13, 14, 0x0),\n    gsSP1Triangle( 2, 14,  3, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07005C70, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  0,  4,  5, 0x0),\n    gsSP2Triangles( 0,  5,  6, 0x0,  7,  8,  0, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  7, 10,  8, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 13, 14, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07005D60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 0,  5,  4, 0x0,  0,  2,  6, 0x0),\n    gsSP2Triangles( 0,  6,  5, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 3,  7,  8, 0x0,  3,  4,  7, 0x0),\n    gsSP2Triangles( 9,  1,  3, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles(13, 10, 12, 0x0, 14, 11, 10, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07005E50, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  4,  3, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  1,  4, 0x0,  8,  4,  7, 0x0),\n    gsSP2Triangles( 5,  4,  9, 0x0, 10,  4,  1, 0x0),\n    gsSP2Triangles(11,  1, 12, 0x0, 11, 13,  1, 0x0),\n    gsSP2Triangles(13,  2,  1, 0x0,  8, 12,  1, 0x0),\n    gsSP2Triangles( 0, 10,  1, 0x0, 14, 15, 13, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07005F50, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  5,  4,  0, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  9, 12, 0x0),\n    gsSP2Triangles( 9,  7, 12, 0x0, 10,  9, 11, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07006050, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  0,  2,  7, 0x0),\n    gsSP2Triangles( 2,  8,  7, 0x0,  8,  2,  6, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9, 12, 10, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07006150, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  4,  7,  6, 0x0),\n    gsSP2Triangles( 7,  4,  0, 0x0,  4,  1,  0, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  5,  8,  3, 0x0),\n    gsSP2Triangles( 9,  0, 10, 0x0,  0,  2, 10, 0x0),\n    gsSP2Triangles(11,  0,  9, 0x0, 11,  7,  0, 0x0),\n    gsSP2Triangles( 7, 12,  6, 0x0,  7, 13, 12, 0x0),\n    gsSP2Triangles(14, 11,  9, 0x0, 13, 11, 14, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07006240, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 1,  0,  4, 0x0,  4,  0,  5, 0x0),\n    gsSP2Triangles( 6,  5,  7, 0x0,  8,  5,  6, 0x0),\n    gsSP2Triangles( 5,  8,  4, 0x0,  9, 10,  1, 0x0),\n    gsSP2Triangles( 9,  1, 11, 0x0,  2,  1, 12, 0x0),\n    gsSP2Triangles(12,  1, 10, 0x0, 11,  1,  4, 0x0),\n    gsSP1Triangle( 7, 13, 14, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07006330, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  2,  5,  4, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 1,  8,  3, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12, 13, 10, 0x0, 13, 11, 10, 0x0),\n    gsSP1Triangle(14,  4,  6, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07006420, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  2,  1, 0x0,  3,  5,  1, 0x0),\n    gsSP2Triangles( 4,  1,  5, 0x0,  6,  7,  5, 0x0),\n    gsSP2Triangles( 3,  6,  5, 0x0,  8,  3,  0, 0x0),\n    gsSP2Triangles( 3,  8,  9, 0x0,  3,  9,  6, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 10, 12, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07006500, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  6,  4,  7, 0x0),\n    gsSP2Triangles( 0,  2,  8, 0x0,  8,  2,  9, 0x0),\n    gsSP2Triangles(10,  0,  8, 0x0,  9, 11,  8, 0x0),\n    gsSP2Triangles(11, 10,  8, 0x0,  2, 12, 13, 0x0),\n    gsSP2Triangles( 9,  2, 13, 0x0, 12,  2, 14, 0x0),\n    gsSP2Triangles( 2,  1, 14, 0x0,  9, 13, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07006600, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 6,  5,  8, 0x0,  8,  0,  9, 0x0),\n    gsSP2Triangles(10,  6,  8, 0x0,  0, 11,  9, 0x0),\n    gsSP2Triangles( 0,  2, 11, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_070066F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  0, 0x0,  5,  6,  0, 0x0),\n    gsSP2Triangles( 0,  7,  3, 0x0,  0,  6,  7, 0x0),\n    gsSP2Triangles( 6,  5,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 7,  6,  9, 0x0, 10,  7,  9, 0x0),\n    gsSP2Triangles(10,  3,  7, 0x0,  1,  3, 11, 0x0),\n    gsSP2Triangles(11,  3, 10, 0x0,  8, 12,  9, 0x0),\n    gsSP2Triangles( 9, 13, 10, 0x0,  9, 12, 14, 0x0),\n    gsSP1Triangle(13, 15, 10, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_070067F0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  3,  6,  4, 0x0),\n    gsSP2Triangles( 7,  6,  3, 0x0,  1,  7,  3, 0x0),\n    gsSP2Triangles( 1,  8,  9, 0x0,  7,  1,  9, 0x0),\n    gsSP2Triangles( 0,  8,  1, 0x0, 10, 11,  7, 0x0),\n    gsSP2Triangles(11,  6,  7, 0x0,  6, 11,  4, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_070068E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 3,  1,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  6,  9, 0x0, 10,  8,  9, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 11, 14, 12, 0x0),\n    gsSP1Triangle(11, 15, 14, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_070069E0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  1,  5, 0x0,  1,  4,  6, 0x0),\n    gsSP2Triangles( 5,  1,  0, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10,  7, 11, 0x0, 11,  7, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07006AE0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 1,  0,  4, 0x0,  3,  1,  5, 0x0),\n    gsSP2Triangles( 1,  6,  5, 0x0,  1,  4,  6, 0x0),\n    gsSP2Triangles( 3,  7,  8, 0x0,  7,  3,  5, 0x0),\n    gsSP2Triangles( 9,  4,  0, 0x0, 10,  4,  9, 0x0),\n    gsSP2Triangles(10, 11,  4, 0x0, 12, 13, 14, 0x0),\n    gsSP1Triangle(13, 15, 14, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07006BE0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  4, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  0,  6,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  7,  6,  8, 0x0),\n    gsSP2Triangles( 0,  8,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSP1Triangle(13, 11, 14, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07006CD0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 1,  0,  4, 0x0,  2,  1,  5, 0x0),\n    gsSP2Triangles( 5,  1,  4, 0x0,  2,  5,  6, 0x0),\n    gsSP2Triangles( 6,  5,  7, 0x0,  5,  8,  7, 0x0),\n    gsSP2Triangles( 8,  5,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9,  8,  4, 0x0,  7,  9, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 13, 12, 14, 0x0),\n    gsSP1Triangle(11, 13, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07006DD0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 3,  1,  4, 0x0,  2,  3,  5, 0x0),\n    gsSP2Triangles( 5,  3,  4, 0x0,  2,  5,  6, 0x0),\n    gsSP2Triangles( 6,  5,  7, 0x0,  5,  8,  7, 0x0),\n    gsSP2Triangles( 8,  5,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9,  8,  4, 0x0,  7,  9, 10, 0x0),\n    gsSP1Triangle(11, 12, 13, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07006EB0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  7, 0x0,  7,  3,  8, 0x0),\n    gsSP2Triangles( 3,  9,  8, 0x0,  9,  3,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9,  5, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0, 11, 10, 12, 0x0),\n    gsSP2Triangles(10, 13, 12, 0x0, 13, 10,  5, 0x0),\n    gsSP2Triangles(14, 13,  5, 0x0,  2,  1, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07006FB0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 3,  1,  4, 0x0,  2,  3,  5, 0x0),\n    gsSP2Triangles( 6,  3,  4, 0x0,  5,  3,  7, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  8,  6,  4, 0x0),\n    gsSP2Triangles( 7,  6,  9, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10,  8,  4, 0x0,  9,  8, 10, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 12, 13, 14, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_070070A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0,  9,  8, 10, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0,  7, 14,  8, 0x0),\n    gsSP1Triangle(13, 12, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_070071A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 5,  8,  7, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles( 9, 12, 11, 0x0, 11, 13, 14, 0x0),\n    gsSP2Triangles(11, 12, 13, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_070072A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  4,  3,  5, 0x0),\n    gsSP2Triangles( 3,  6,  5, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  7,  9, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_070073A0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 4,  8,  9, 0x0,  4,  3,  8, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(11, 10, 12, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(13, 12, 14, 0x0, 13, 14, 15, 0x0),\n    gsSP2Triangles(15, 14,  6, 0x0, 15,  6,  5, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_070074A0, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(11, 10, 12, 0x0, 11, 12,  0, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0,  1, 13, 14, 0x0),\n    gsSP1Triangle( 2,  1, 14, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07007590, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 5,  4,  6, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 7,  6,  8, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0,  8, 11, 10, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 10, 11, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07007690, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 1,  4,  3, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 9, 12, 10, 0x0, 11, 13, 14, 0x0),\n    gsSP1Triangle(10, 15, 11, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07007790, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  0,  5,  4, 0x0),\n    gsSP2Triangles( 6,  7,  0, 0x0,  8,  9, 10, 0x0),\n    gsSP2Triangles( 8, 11,  9, 0x0,  8, 12, 11, 0x0),\n    gsSP2Triangles( 8, 13, 12, 0x0, 14, 15,  6, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07007890, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  3,  7,  6, 0x0),\n    gsSP2Triangles( 3,  8,  7, 0x0,  2,  9,  3, 0x0),\n    gsSP2Triangles( 3,  5, 10, 0x0,  2, 11, 12, 0x0),\n    gsSP2Triangles( 2, 13, 11, 0x0,  2, 14, 13, 0x0),\n    gsSP1Triangle( 2, 12,  9, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07007980, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  7, 0x0,  3,  8,  6, 0x0),\n    gsSP2Triangles( 3,  9,  8, 0x0,  2, 10,  3, 0x0),\n    gsSP2Triangles( 3,  7, 11, 0x0,  3, 11,  4, 0x0),\n    gsSP2Triangles( 0,  2,  3, 0x0,  2, 12, 10, 0x0),\n    gsSP1Triangle( 2, 13, 12, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07007A60, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  1,  0, 0x0,  7,  6,  0, 0x0),\n    gsSP2Triangles( 1,  6,  8, 0x0,  6,  9,  8, 0x0),\n    gsSP2Triangles(10,  9,  6, 0x0, 10,  6,  7, 0x0),\n    gsSP2Triangles( 1,  8, 11, 0x0,  1, 11, 12, 0x0),\n    gsSP2Triangles( 1, 12,  2, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07007B60, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  4,  6, 0x0),\n    gsSP2Triangles( 5,  4,  8, 0x0,  4,  9,  8, 0x0),\n    gsSP2Triangles( 7,  9,  4, 0x0, 10,  5,  8, 0x0),\n    gsSP2Triangles(11,  5, 10, 0x0, 12,  5, 11, 0x0),\n    gsSP2Triangles( 5, 12, 13, 0x0, 14,  5, 13, 0x0),\n    gsSP1Triangle( 7,  6, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07007C60, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  2, 0x0),\n    gsSP2Triangles( 5,  0,  2, 0x0,  5,  2,  4, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  1,  7,  6, 0x0),\n    gsSP2Triangles( 0,  9,  1, 0x0,  1,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),\n    gsSP1Triangle(14, 13, 10, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07007D50, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  7, 0x0,  5,  4,  7, 0x0),\n    gsSP2Triangles( 8,  3,  5, 0x0,  9, 10,  6, 0x0),\n    gsSP2Triangles( 6, 10,  7, 0x0,  5, 11, 12, 0x0),\n    gsSP2Triangles( 8,  5, 12, 0x0, 11,  5,  7, 0x0),\n    gsSP2Triangles( 1,  0, 13, 0x0, 14,  2, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07007E50, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  4, 0x0),\n    gsSP2Triangles( 5,  6,  0, 0x0,  6,  5,  7, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  3,  6,  8, 0x0),\n    gsSP2Triangles( 8,  9,  3, 0x0, 10,  0, 11, 0x0),\n    gsSP2Triangles(10,  5,  0, 0x0,  0,  2, 12, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07007F50, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 1,  3,  4, 0x0,  5,  2,  6, 0x0),\n    gsSP2Triangles( 0,  2,  5, 0x0,  7,  0,  5, 0x0),\n    gsSP2Triangles( 8,  0,  7, 0x0,  0,  9,  3, 0x0),\n    gsSP2Triangles( 0,  8,  9, 0x0, 10,  5,  6, 0x0),\n    gsSP2Triangles(11,  5, 10, 0x0,  5, 11,  7, 0x0),\n    gsSP2Triangles(12, 13,  8, 0x0, 12,  8, 14, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07008040, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  3, 0x0),\n    gsSP2Triangles( 6,  7,  3, 0x0,  4,  9, 10, 0x0),\n    gsSP2Triangles( 5,  4, 10, 0x0,  7, 11,  8, 0x0),\n    gsSP2Triangles(12,  1, 13, 0x0,  0, 14,  1, 0x0),\n    gsSP2Triangles(14, 13,  1, 0x0, 15,  5, 10, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07008140, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  3,  2, 0x0,  4,  2,  5, 0x0),\n    gsSP2Triangles( 1,  5,  2, 0x0,  6,  7,  5, 0x0),\n    gsSP2Triangles( 1,  6,  5, 0x0,  1,  8,  9, 0x0),\n    gsSP2Triangles( 1,  9,  6, 0x0,  8,  1,  0, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 10, 12, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07008220, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  4,  3,  7, 0x0),\n    gsSP2Triangles( 0,  8,  9, 0x0,  8, 10,  9, 0x0),\n    gsSP2Triangles( 9,  1,  0, 0x0, 11,  1,  9, 0x0),\n    gsSP2Triangles(10, 11,  9, 0x0, 12,  1, 13, 0x0),\n    gsSP2Triangles( 1, 14, 13, 0x0, 11, 14,  1, 0x0),\n    gsSP2Triangles( 1, 12,  2, 0x0,  8,  0, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07008320, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 0,  4,  3, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 6,  5,  8, 0x0,  9,  6,  8, 0x0),\n    gsSP2Triangles( 8, 10, 11, 0x0, 10,  2, 12, 0x0),\n    gsSP2Triangles(10, 12, 11, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07008420, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  2,  5,  6, 0x0),\n    gsSP2Triangles( 2,  1,  7, 0x0,  2,  7,  4, 0x0),\n    gsSP2Triangles( 1,  8,  9, 0x0,  1,  0,  8, 0x0),\n    gsSP2Triangles( 7,  1,  9, 0x0, 10,  7,  9, 0x0),\n    gsSP2Triangles(10,  4,  7, 0x0,  5,  4, 11, 0x0),\n    gsSP2Triangles(11,  4, 10, 0x0,  8, 12,  9, 0x0),\n    gsSP2Triangles( 9, 12, 13, 0x0,  9, 13, 14, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07008510, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  3,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  0,  8, 0x0,  2,  8,  0, 0x0),\n    gsSP2Triangles( 1, 10,  2, 0x0,  2, 10, 11, 0x0),\n    gsSP2Triangles( 2, 11, 12, 0x0,  1,  0, 13, 0x0),\n    gsSP2Triangles( 0, 14, 13, 0x0,  7, 14,  0, 0x0),\n    gsSP1Triangle(15, 10,  1, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07008610, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  4, 0x0),\n    gsSP2Triangles( 5,  6,  7, 0x0,  8,  9,  5, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13,  6, 14, 0x0),\n    gsSP1Triangle( 6, 13,  7, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07008700, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  4, 0x0),\n    gsSP2Triangles( 5,  3,  4, 0x0,  6,  7,  8, 0x0),\n    gsSP2Triangles( 6,  9,  7, 0x0,  6, 10, 11, 0x0),\n    gsSP2Triangles(12,  6, 11, 0x0, 13,  6, 12, 0x0),\n    gsSP2Triangles( 6, 14,  9, 0x0, 14,  6, 13, 0x0),\n    gsSP1Triangle(14, 15,  9, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07008800, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 0,  3,  1, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 1,  3,  8, 0x0,  8,  3,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13,  9, 14, 0x0),\n    gsSP2Triangles(13,  8,  9, 0x0,  5, 13, 14, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_070088F0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 1,  0,  4, 0x0,  5,  3,  6, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0, 10,  4,  0, 0x0),\n    gsSP2Triangles(11,  4, 10, 0x0, 11, 12,  4, 0x0),\n    gsSP1Triangle(13, 14, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_070089F0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  5,  1, 0x0,  2,  1,  5, 0x0),\n    gsSP2Triangles( 2,  5,  6, 0x0,  4,  7,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  6,  7, 11, 0x0),\n    gsSP2Triangles( 4, 12,  7, 0x0, 11,  7, 12, 0x0),\n    gsSP1Triangle(11, 12, 13, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07008AD0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 1,  0,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  8,  6, 10, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0,  7,  9, 11, 0x0),\n    gsSP2Triangles( 9, 12, 13, 0x0, 11,  9, 13, 0x0),\n    gsSP2Triangles(12,  9, 10, 0x0, 13, 12, 14, 0x0),\n    gsSP2Triangles(14, 12, 10, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07008BD0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  2,  5,  6, 0x0),\n    gsSP2Triangles( 4,  2,  6, 0x0,  5,  2,  3, 0x0),\n    gsSP2Triangles( 6,  5,  7, 0x0,  7,  5,  3, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9,  7,  3, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0,  8,  7, 10, 0x0),\n    gsSP2Triangles(11,  9,  3, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07008CD0, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  5,  8, 0x0),\n    gsSP2Triangles( 5,  7,  9, 0x0,  6,  5,  9, 0x0),\n    gsSP2Triangles(10,  7,  8, 0x0,  9,  7, 10, 0x0),\n    gsSP2Triangles( 9, 10, 11, 0x0, 12, 10,  8, 0x0),\n    gsSP2Triangles(10, 12, 13, 0x0, 11, 10, 13, 0x0),\n    gsSP2Triangles( 2,  1, 14, 0x0,  0,  2, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07008DD0, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 3,  0,  4, 0x0,  5,  0,  2, 0x0),\n    gsSP2Triangles( 0,  5,  6, 0x0,  4,  0,  6, 0x0),\n    gsSP2Triangles( 7,  5,  2, 0x0,  5,  7,  8, 0x0),\n    gsSP2Triangles( 6,  5,  8, 0x0,  9,  7,  2, 0x0),\n    gsSP2Triangles( 8,  7,  9, 0x0,  8,  9, 10, 0x0),\n    gsSP1Triangle(11, 12, 13, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07008EB0, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700C1F8 - 0x0700C2A0\nconst Gfx wmotr_seg7_dl_0700C1F8[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 2, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 3, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (8 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wmotr_seg7_dl_07008EF0),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 4, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (16 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wmotr_seg7_dl_07009148),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wmotr_seg7_dl_070092A0),\n    gsSPDisplayList(wmotr_seg7_dl_07009458),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700C2A0 - 0x0700C2B8\nstatic const Lights1 wmotr_seg7_lights_0700C2A0 = gdSPDefLights1(\n    0x3f, 0x3f, 0x3f,\n    0xff, 0xff, 0xff, 0x28, 0x28, 0x28\n);\n\n// 0x0700C2B8 - 0x0700C3B8\nstatic const Vtx wmotr_seg7_vertex_0700C2B8[] = {\n    {{{  3227,   3174,  -3457}, 0, {  2290,   -802}, {0x64, 0x3b, 0xcf, 0xff}}},\n    {{{  3227,   3123,  -3457}, 0, {  2290,   -802}, {0x6d, 0xd9, 0xcf, 0xff}}},\n    {{{  3087,   3123,  -3621}, 0, {  2010,  -1128}, {0x43, 0xd9, 0x9c, 0xff}}},\n    {{{  3087,   3174,  -3621}, 0, {  2010,  -1128}, {0x3b, 0x3b, 0xa2, 0xff}}},\n    {{{  3062,   3072,  -3593}, 0, {  1960,  -1074}, {0x2a, 0x95, 0xcc, 0xff}}},\n    {{{  2878,   3072,  -3652}, 0, {  1592,  -1192}, {0x05, 0x98, 0xb9, 0xff}}},\n    {{{  2893,   3123,  -3683}, 0, {  1622,  -1252}, {0xfe, 0xe0, 0x86, 0xff}}},\n    {{{  2118,   3072,  -3342}, 0, {    76,   -572}, {0xf2, 0x83, 0xf9, 0xff}}},\n    {{{  2693,   3072,  -3586}, 0, {  1224,  -1058}, {0xfb, 0x9b, 0xb4, 0xff}}},\n    {{{  2699,   3123,  -3613}, 0, {  1234,  -1112}, {0x07, 0xe1, 0x86, 0xff}}},\n    {{{  2893,   3174,  -3683}, 0, {  1622,  -1252}, {0xfb, 0x3f, 0x92, 0xff}}},\n    {{{  3195,   3072,  -3438}, 0, {  2226,   -764}, {0x40, 0x96, 0xea, 0xff}}},\n    {{{  2501,   3072,  -3689}, 0, {   842,  -1264}, {0x15, 0x99, 0xba, 0xff}}},\n    {{{  2139,   3123,  -3566}, 0, {   118,  -1020}, {0x97, 0xde, 0xc2, 0xff}}},\n    {{{  2093,   3123,  -3356}, 0, {    26,   -600}, {0x9b, 0xe0, 0xbc, 0xff}}},\n    {{{  2497,   3123,  -3722}, 0, {   832,  -1330}, {0x17, 0xdd, 0x89, 0xff}}},\n};\n\n// 0x0700C3B8 - 0x0700C4B8\nstatic const Vtx wmotr_seg7_vertex_0700C3B8[] = {\n    {{{  2699,   3174,  -3613}, 0, {  1234,  -1112}, {0x00, 0x64, 0xb3, 0xff}}},\n    {{{  2699,   3123,  -3613}, 0, {  1234,  -1112}, {0x07, 0xe1, 0x86, 0xff}}},\n    {{{  2497,   3123,  -3722}, 0, {   832,  -1330}, {0x17, 0xdd, 0x89, 0xff}}},\n    {{{  2893,   3174,  -3683}, 0, {  1622,  -1252}, {0xfb, 0x3f, 0x92, 0xff}}},\n    {{{  2501,   3072,  -3689}, 0, {   842,  -1264}, {0x15, 0x99, 0xba, 0xff}}},\n    {{{  2301,   3072,  -3665}, 0, {   442,  -1216}, {0xea, 0x97, 0xbe, 0xff}}},\n    {{{  2118,   3072,  -3342}, 0, {    76,   -572}, {0xf2, 0x83, 0xf9, 0xff}}},\n    {{{  2286,   3123,  -3696}, 0, {   412,  -1278}, {0xd0, 0xdb, 0x91, 0xff}}},\n    {{{  2497,   3174,  -3722}, 0, {   832,  -1330}, {0x0b, 0x3b, 0x91, 0xff}}},\n    {{{  2162,   3072,  -3541}, 0, {   164,   -970}, {0xba, 0xa4, 0xcd, 0xff}}},\n    {{{  2286,   3174,  -3696}, 0, {   412,  -1278}, {0xd2, 0x4a, 0xa5, 0xff}}},\n    {{{  2139,   3123,  -3566}, 0, {   118,  -1020}, {0x97, 0xde, 0xc2, 0xff}}},\n    {{{  2139,   3174,  -3566}, 0, {   118,  -1020}, {0xa6, 0x4b, 0xd1, 0xff}}},\n    {{{  2093,   3123,  -3356}, 0, {    26,   -600}, {0x9b, 0xe0, 0xbc, 0xff}}},\n    {{{  1985,   3072,  -2855}, 0, {  -188,    400}, {0xd2, 0x90, 0x24, 0xff}}},\n    {{{  1963,   3072,  -3239}, 0, {  -232,   -366}, {0xcb, 0x99, 0xcd, 0xff}}},\n};\n\n// 0x0700C4B8 - 0x0700C5A8\nstatic const Vtx wmotr_seg7_vertex_0700C4B8[] = {\n    {{{  2118,   3072,  -3342}, 0, {    76,   -572}, {0xf2, 0x83, 0xf9, 0xff}}},\n    {{{  3232,   3072,  -2966}, 0, {  2300,    178}, {0x46, 0x97, 0xfd, 0xff}}},\n    {{{  3181,   3072,  -2708}, 0, {  2198,    692}, {0x35, 0x95, 0x2b, 0xff}}},\n    {{{  2996,   3072,  -2568}, 0, {  1830,    972}, {0x0c, 0x99, 0x48, 0xff}}},\n    {{{  2789,   3072,  -2575}, 0, {  1416,    960}, {0x30, 0x9a, 0x39, 0xff}}},\n    {{{  2693,   3072,  -2412}, 0, {  1224,   1282}, {0x23, 0x97, 0x3d, 0xff}}},\n    {{{  2483,   3072,  -2361}, 0, {   804,   1384}, {0xf3, 0x95, 0x42, 0xff}}},\n    {{{  3151,   3072,  -3106}, 0, {  2138,   -102}, {0x48, 0x99, 0xf1, 0xff}}},\n    {{{  3195,   3072,  -3438}, 0, {  2226,   -764}, {0x40, 0x96, 0xea, 0xff}}},\n    {{{  3224,   3072,  -3261}, 0, {  2284,   -410}, {0x47, 0x99, 0x12, 0xff}}},\n    {{{  2265,   3072,  -2457}, 0, {   370,   1194}, {0xd6, 0x90, 0x27, 0xff}}},\n    {{{  2162,   3072,  -2781}, 0, {   164,    548}, {0xd6, 0x92, 0x2d, 0xff}}},\n    {{{  1985,   3072,  -2855}, 0, {  -188,    400}, {0xd2, 0x90, 0x24, 0xff}}},\n    {{{  2093,   3123,  -3356}, 0, {    26,   -600}, {0x9b, 0xe0, 0xbc, 0xff}}},\n    {{{  1963,   3072,  -3239}, 0, {  -232,   -366}, {0xcb, 0x99, 0xcd, 0xff}}},\n};\n\n// 0x0700C5A8 - 0x0700C6A8\nstatic const Vtx wmotr_seg7_vertex_0700C5A8[] = {\n    {{{  2093,   3174,  -3356}, 0, {    26,   -600}, {0xbc, 0x53, 0xbe, 0xff}}},\n    {{{  2093,   3123,  -3356}, 0, {    26,   -600}, {0x9b, 0xe0, 0xbc, 0xff}}},\n    {{{  1930,   3123,  -3248}, 0, {  -298,   -384}, {0xa1, 0xdc, 0xb6, 0xff}}},\n    {{{  2139,   3174,  -3566}, 0, {   118,  -1020}, {0xa6, 0x4b, 0xd1, 0xff}}},\n    {{{  1963,   3072,  -3239}, 0, {  -232,   -366}, {0xcb, 0x99, 0xcd, 0xff}}},\n    {{{  1904,   3072,  -3054}, 0, {  -350,      2}, {0xad, 0xa1, 0xfa, 0xff}}},\n    {{{  1985,   3072,  -2855}, 0, {  -188,    400}, {0xd2, 0x90, 0x24, 0xff}}},\n    {{{  1930,   3174,  -3248}, 0, {  -298,   -384}, {0xa1, 0x2d, 0xbb, 0xff}}},\n    {{{  1867,   3123,  -3053}, 0, {  -422,      4}, {0x88, 0xd9, 0x03, 0xff}}},\n    {{{  1867,   3174,  -3053}, 0, {  -422,      4}, {0x8d, 0x34, 0x0b, 0xff}}},\n    {{{  1953,   3123,  -2844}, 0, {  -252,    422}, {0xa9, 0xe0, 0x56, 0xff}}},\n    {{{  2162,   3072,  -2781}, 0, {   164,    548}, {0xd6, 0x92, 0x2d, 0xff}}},\n    {{{  1953,   3174,  -2844}, 0, {  -252,    422}, {0xb2, 0x25, 0x5c, 0xff}}},\n    {{{  2139,   3123,  -2766}, 0, {   118,    578}, {0x9c, 0xe1, 0x47, 0xff}}},\n    {{{  2265,   3072,  -2457}, 0, {   370,   1194}, {0xd6, 0x90, 0x27, 0xff}}},\n    {{{  2169,   3072,  -2612}, 0, {   178,    886}, {0xa5, 0xab, 0x13, 0xff}}},\n};\n\n// 0x0700C6A8 - 0x0700C7A8\nstatic const Vtx wmotr_seg7_vertex_0700C6A8[] = {\n    {{{  2139,   3174,  -2766}, 0, {   118,    578}, {0xb8, 0x57, 0x39, 0xff}}},\n    {{{  2139,   3123,  -2766}, 0, {   118,    578}, {0x9c, 0xe1, 0x47, 0xff}}},\n    {{{  2147,   3123,  -2587}, 0, {   134,    934}, {0x8b, 0xdf, 0x23, 0xff}}},\n    {{{  1953,   3174,  -2844}, 0, {  -252,    422}, {0xb2, 0x25, 0x5c, 0xff}}},\n    {{{  2169,   3072,  -2612}, 0, {   178,    886}, {0xa5, 0xab, 0x13, 0xff}}},\n    {{{  2265,   3072,  -2457}, 0, {   370,   1194}, {0xd6, 0x90, 0x27, 0xff}}},\n    {{{  2147,   3174,  -2587}, 0, {   134,    934}, {0x91, 0x2c, 0x2a, 0xff}}},\n    {{{  2248,   3123,  -2424}, 0, {   336,   1258}, {0xb0, 0xd9, 0x5a, 0xff}}},\n    {{{  2483,   3072,  -2361}, 0, {   804,   1384}, {0xf3, 0x95, 0x42, 0xff}}},\n    {{{  2248,   3174,  -2424}, 0, {   336,   1258}, {0xb8, 0x37, 0x57, 0xff}}},\n    {{{  2477,   3123,  -2324}, 0, {   792,   1458}, {0xf5, 0xd9, 0x78, 0xff}}},\n    {{{  2693,   3072,  -2412}, 0, {  1224,   1282}, {0x23, 0x97, 0x3d, 0xff}}},\n    {{{  3018,   3123,  -2541}, 0, {  1872,   1024}, {0x23, 0xdc, 0x74, 0xff}}},\n    {{{  3181,   3072,  -2708}, 0, {  2198,    692}, {0x35, 0x95, 0x2b, 0xff}}},\n    {{{  3212,   3123,  -2689}, 0, {  2260,    732}, {0x65, 0xd9, 0x41, 0xff}}},\n    {{{  2477,   3174,  -2324}, 0, {   792,   1458}, {0xf9, 0x37, 0x71, 0xff}}},\n};\n\n// 0x0700C7A8 - 0x0700C8A8\nstatic const Vtx wmotr_seg7_vertex_0700C7A8[] = {\n    {{{  2477,   3174,  -2324}, 0, {   792,   1458}, {0xf9, 0x37, 0x71, 0xff}}},\n    {{{  2477,   3123,  -2324}, 0, {   792,   1458}, {0xf5, 0xd9, 0x78, 0xff}}},\n    {{{  2699,   3123,  -2378}, 0, {  1234,   1350}, {0x49, 0xe0, 0x62, 0xff}}},\n    {{{  2693,   3072,  -2412}, 0, {  1224,   1282}, {0x23, 0x97, 0x3d, 0xff}}},\n    {{{  2789,   3072,  -2575}, 0, {  1416,    960}, {0x30, 0x9a, 0x39, 0xff}}},\n    {{{  2699,   3174,  -2378}, 0, {  1234,   1350}, {0x46, 0x39, 0x58, 0xff}}},\n    {{{  2800,   3123,  -2549}, 0, {  1436,   1010}, {0x3c, 0xe0, 0x6a, 0xff}}},\n    {{{  2996,   3072,  -2568}, 0, {  1830,    972}, {0x0c, 0x99, 0x48, 0xff}}},\n    {{{  2800,   3174,  -2549}, 0, {  1436,   1010}, {0x2b, 0x52, 0x56, 0xff}}},\n    {{{  3018,   3123,  -2541}, 0, {  1872,   1024}, {0x23, 0xdc, 0x74, 0xff}}},\n    {{{  3181,   3072,  -2708}, 0, {  2198,    692}, {0x35, 0x95, 0x2b, 0xff}}},\n    {{{  3018,   3174,  -2541}, 0, {  1872,   1024}, {0x25, 0x39, 0x6a, 0xff}}},\n    {{{  3212,   3123,  -2689}, 0, {  2260,    732}, {0x65, 0xd9, 0x41, 0xff}}},\n    {{{  3258,   3123,  -3271}, 0, {  2352,   -430}, {0x78, 0xdc, 0x12, 0xff}}},\n    {{{  3224,   3072,  -3261}, 0, {  2284,   -410}, {0x47, 0x99, 0x12, 0xff}}},\n    {{{  3195,   3072,  -3438}, 0, {  2226,   -764}, {0x40, 0x96, 0xea, 0xff}}},\n};\n\n// 0x0700C8A8 - 0x0700C9A8\nstatic const Vtx wmotr_seg7_vertex_0700C8A8[] = {\n    {{{  3212,   3123,  -2689}, 0, {  2260,    732}, {0x65, 0xd9, 0x41, 0xff}}},\n    {{{  3181,   3072,  -2708}, 0, {  2198,    692}, {0x35, 0x95, 0x2b, 0xff}}},\n    {{{  3232,   3072,  -2966}, 0, {  2300,    178}, {0x46, 0x97, 0xfd, 0xff}}},\n    {{{  3018,   3174,  -2541}, 0, {  1872,   1024}, {0x25, 0x39, 0x6a, 0xff}}},\n    {{{  3212,   3174,  -2689}, 0, {  2260,    732}, {0x63, 0x35, 0x3a, 0xff}}},\n    {{{  3266,   3123,  -2960}, 0, {  2366,    190}, {0x78, 0xde, 0xed, 0xff}}},\n    {{{  3151,   3072,  -3106}, 0, {  2138,   -102}, {0x48, 0x99, 0xf1, 0xff}}},\n    {{{  3266,   3174,  -2960}, 0, {  2366,    190}, {0x71, 0x35, 0xeb, 0xff}}},\n    {{{  3180,   3123,  -3108}, 0, {  2196,   -104}, {0x7a, 0xdf, 0xfa, 0xff}}},\n    {{{  3224,   3072,  -3261}, 0, {  2284,   -410}, {0x47, 0x99, 0x12, 0xff}}},\n    {{{  3180,   3174,  -3108}, 0, {  2196,   -104}, {0x5e, 0x55, 0x01, 0xff}}},\n    {{{  3258,   3123,  -3271}, 0, {  2352,   -430}, {0x78, 0xdc, 0x12, 0xff}}},\n    {{{  2480,   3211,  -3621}, 0, {   798,  -1128}, {0x06, 0x7a, 0xdf, 0xff}}},\n    {{{  2621,   3211,  -3544}, 0, {  1080,   -976}, {0x1d, 0x7a, 0xf2, 0xff}}},\n    {{{  2699,   3174,  -3613}, 0, {  1234,  -1112}, {0x00, 0x64, 0xb3, 0xff}}},\n    {{{  3258,   3174,  -3271}, 0, {  2352,   -430}, {0x75, 0x30, 0x07, 0xff}}},\n};\n\n// 0x0700C9A8 - 0x0700CA98\nstatic const Vtx wmotr_seg7_vertex_0700C9A8[] = {\n    {{{  3258,   3174,  -3271}, 0, {  2352,   -430}, {0x75, 0x30, 0x07, 0xff}}},\n    {{{  3258,   3123,  -3271}, 0, {  2352,   -430}, {0x78, 0xdc, 0x12, 0xff}}},\n    {{{  3227,   3123,  -3457}, 0, {  2290,   -802}, {0x6d, 0xd9, 0xcf, 0xff}}},\n    {{{  3195,   3072,  -3438}, 0, {  2226,   -764}, {0x40, 0x96, 0xea, 0xff}}},\n    {{{  3227,   3174,  -3457}, 0, {  2290,   -802}, {0x64, 0x3b, 0xcf, 0xff}}},\n    {{{  3087,   3174,  -3621}, 0, {  2010,  -1128}, {0x3b, 0x3b, 0xa2, 0xff}}},\n    {{{  3150,   3233,  -3424}, 0, {  2136,   -736}, {0x2d, 0x73, 0xe7, 0xff}}},\n    {{{  2893,   3174,  -3683}, 0, {  1622,  -1252}, {0xfb, 0x3f, 0x92, 0xff}}},\n    {{{  3049,   3233,  -3541}, 0, {  1934,   -970}, {0x18, 0x74, 0xd4, 0xff}}},\n    {{{  2909,   3233,  -3586}, 0, {  1656,  -1058}, {0xfc, 0x75, 0xd2, 0xff}}},\n    {{{  2699,   3174,  -3613}, 0, {  1234,  -1112}, {0x00, 0x64, 0xb3, 0xff}}},\n    {{{  2769,   3233,  -3536}, 0, {  1376,   -958}, {0xe5, 0x78, 0xe3, 0xff}}},\n    {{{  2497,   3174,  -3722}, 0, {   832,  -1330}, {0x0b, 0x3b, 0x91, 0xff}}},\n    {{{  2480,   3211,  -3621}, 0, {   798,  -1128}, {0x06, 0x7a, 0xdf, 0xff}}},\n    {{{  2286,   3174,  -3696}, 0, {   412,  -1278}, {0xd2, 0x4a, 0xa5, 0xff}}},\n};\n\n// 0x0700CA98 - 0x0700CB98\nstatic const Vtx wmotr_seg7_vertex_0700CA98[] = {\n    {{{  2139,   3174,  -3566}, 0, {   118,  -1020}, {0xa6, 0x4b, 0xd1, 0xff}}},\n    {{{  2332,   3211,  -3603}, 0, {   504,  -1092}, {0xf1, 0x7a, 0xe5, 0xff}}},\n    {{{  2286,   3174,  -3696}, 0, {   412,  -1278}, {0xd2, 0x4a, 0xa5, 0xff}}},\n    {{{  2480,   3211,  -3621}, 0, {   798,  -1128}, {0x06, 0x7a, 0xdf, 0xff}}},\n    {{{  2093,   3174,  -3356}, 0, {    26,   -600}, {0xbc, 0x53, 0xbe, 0xff}}},\n    {{{  2230,   3211,  -3512}, 0, {   298,   -910}, {0xe4, 0x7b, 0xf3, 0xff}}},\n    {{{  2103,   3236,  -3299}, 0, {    46,   -486}, {0xf2, 0x6b, 0xbf, 0xff}}},\n    {{{  2200,   3207,  -3314}, 0, {   240,   -516}, {0x02, 0x74, 0xce, 0xff}}},\n    {{{  2197,   3211,  -3365}, 0, {   234,   -618}, {0xe9, 0x7c, 0x05, 0xff}}},\n    {{{  1930,   3174,  -3248}, 0, {  -298,   -384}, {0xa1, 0x2d, 0xbb, 0xff}}},\n    {{{  1867,   3174,  -3053}, 0, {  -422,      4}, {0x8d, 0x34, 0x0b, 0xff}}},\n    {{{  1972,   3236,  -3212}, 0, {  -212,   -312}, {0xc6, 0x6b, 0xdd, 0xff}}},\n    {{{  1991,   3236,  -2888}, 0, {  -176,    334}, {0xce, 0x69, 0x31, 0xff}}},\n    {{{  1923,   3236,  -3056}, 0, {  -312,     -2}, {0xc5, 0x70, 0x02, 0xff}}},\n    {{{  1953,   3174,  -2844}, 0, {  -252,    422}, {0xb2, 0x25, 0x5c, 0xff}}},\n    {{{  2139,   3174,  -2766}, 0, {   118,    578}, {0xb8, 0x57, 0x39, 0xff}}},\n};\n\n// 0x0700CB98 - 0x0700CC98\nstatic const Vtx wmotr_seg7_vertex_0700CB98[] = {\n    {{{  2214,   3229,  -2604}, 0, {   268,    900}, {0xc7, 0x6f, 0x11, 0xff}}},\n    {{{  2208,   3229,  -2747}, 0, {   256,    616}, {0xd3, 0x75, 0xf0, 0xff}}},\n    {{{  2139,   3174,  -2766}, 0, {   118,    578}, {0xb8, 0x57, 0x39, 0xff}}},\n    {{{  2147,   3174,  -2587}, 0, {   134,    934}, {0x91, 0x2c, 0x2a, 0xff}}},\n    {{{  2348,   3229,  -2909}, 0, {   536,    292}, {0xfb, 0x7d, 0x0f, 0xff}}},\n    {{{  2304,   3238,  -2904}, 0, {   448,    302}, {0x15, 0x73, 0x2f, 0xff}}},\n    {{{  2140,   3236,  -2826}, 0, {   120,    458}, {0x01, 0x71, 0x39, 0xff}}},\n    {{{  1991,   3236,  -2888}, 0, {  -176,    334}, {0xce, 0x69, 0x31, 0xff}}},\n    {{{  2800,   3174,  -2549}, 0, {  1436,   1010}, {0x2b, 0x52, 0x56, 0xff}}},\n    {{{  2736,   3229,  -2573}, 0, {  1310,    962}, {0x31, 0x74, 0x08, 0xff}}},\n    {{{  2655,   3229,  -2436}, 0, {  1148,   1234}, {0x25, 0x72, 0x27, 0xff}}},\n    {{{  2248,   3174,  -2424}, 0, {   336,   1258}, {0xb8, 0x37, 0x57, 0xff}}},\n    {{{  2295,   3229,  -2474}, 0, {   430,   1160}, {0xdf, 0x71, 0x2e, 0xff}}},\n    {{{  2477,   3174,  -2324}, 0, {   792,   1458}, {0xf9, 0x37, 0x71, 0xff}}},\n    {{{  2478,   3229,  -2393}, 0, {   794,   1320}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  2699,   3174,  -2378}, 0, {  1234,   1350}, {0x46, 0x39, 0x58, 0xff}}},\n};\n\n// 0x0700CC98 - 0x0700CD98\nstatic const Vtx wmotr_seg7_vertex_0700CC98[] = {\n    {{{  3018,   3174,  -2541}, 0, {  1872,   1024}, {0x25, 0x39, 0x6a, 0xff}}},\n    {{{  2839,   3222,  -2611}, 0, {  1516,    888}, {0xf1, 0x75, 0x2e, 0xff}}},\n    {{{  2800,   3174,  -2549}, 0, {  1436,   1010}, {0x2b, 0x52, 0x56, 0xff}}},\n    {{{  2738,   3222,  -2735}, 0, {  1312,    640}, {0x10, 0x7d, 0x02, 0xff}}},\n    {{{  2736,   3229,  -2573}, 0, {  1310,    962}, {0x31, 0x74, 0x08, 0xff}}},\n    {{{  3020,   3222,  -3102}, 0, {  1876,    -94}, {0x0f, 0x7d, 0xfc, 0xff}}},\n    {{{  3144,   3222,  -3058}, 0, {  2124,     -6}, {0x1f, 0x75, 0xdb, 0xff}}},\n    {{{  3180,   3174,  -3108}, 0, {  2196,   -104}, {0x5e, 0x55, 0x01, 0xff}}},\n    {{{  3212,   3174,  -2689}, 0, {  2260,    732}, {0x63, 0x35, 0x3a, 0xff}}},\n    {{{  3014,   3222,  -2605}, 0, {  1864,    898}, {0x17, 0x71, 0x33, 0xff}}},\n    {{{  3169,   3222,  -2723}, 0, {  2174,    662}, {0x36, 0x6f, 0x19, 0xff}}},\n    {{{  3266,   3174,  -2960}, 0, {  2366,    190}, {0x71, 0x35, 0xeb, 0xff}}},\n    {{{  3212,   3222,  -2940}, 0, {  2260,    230}, {0x38, 0x70, 0xf2, 0xff}}},\n    {{{  3172,   3233,  -3290}, 0, {  2180,   -468}, {0x35, 0x72, 0x07, 0xff}}},\n    {{{  3116,   3233,  -3172}, 0, {  2068,   -232}, {0x17, 0x78, 0x20, 0xff}}},\n    {{{  3258,   3174,  -3271}, 0, {  2352,   -430}, {0x75, 0x30, 0x07, 0xff}}},\n};\n\n// 0x0700CD98 - 0x0700CE98\nstatic const Vtx wmotr_seg7_vertex_0700CD98[] = {\n    {{{  2576,   3264,  -3071}, 0, {   990,      0}, {0xfd, 0x7e, 0xf7, 0xff}}},\n    {{{  2500,   3217,  -3217}, 0, {   838,   -322}, {0xfb, 0x7e, 0xf8, 0xff}}},\n    {{{  2404,   3236,  -3079}, 0, {   646,    -46}, {0x06, 0x7e, 0xf2, 0xff}}},\n    {{{  3227,   3174,  -3457}, 0, {  2290,   -802}, {0x64, 0x3b, 0xcf, 0xff}}},\n    {{{  3172,   3233,  -3290}, 0, {  2180,   -468}, {0x35, 0x72, 0x07, 0xff}}},\n    {{{  3258,   3174,  -3271}, 0, {  2352,   -430}, {0x75, 0x30, 0x07, 0xff}}},\n    {{{  3150,   3233,  -3424}, 0, {  2136,   -736}, {0x2d, 0x73, 0xe7, 0xff}}},\n    {{{  2348,   3229,  -2909}, 0, {   536,    292}, {0xfb, 0x7d, 0x0f, 0xff}}},\n    {{{  2444,   3241,  -2959}, 0, {   726,    192}, {0xf5, 0x7c, 0x16, 0xff}}},\n    {{{  2304,   3238,  -2904}, 0, {   448,    302}, {0x15, 0x73, 0x2f, 0xff}}},\n    {{{  2546,   3240,  -2857}, 0, {   930,    396}, {0x04, 0x7e, 0x05, 0xff}}},\n    {{{  2549,   3255,  -2897}, 0, {   938,    316}, {0x00, 0x7b, 0x1d, 0xff}}},\n    {{{  2169,   3274,  -3067}, 0, {   178,    -24}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  2293,   3237,  -3244}, 0, {   426,   -376}, {0x21, 0x6f, 0xce, 0xff}}},\n    {{{  2375,   3211,  -3194}, 0, {   590,   -276}, {0x19, 0x7a, 0xed, 0xff}}},\n    {{{  2140,   3236,  -2826}, 0, {   120,    458}, {0x01, 0x71, 0x39, 0xff}}},\n};\n\n// 0x0700CE98 - 0x0700CF88\nstatic const Vtx wmotr_seg7_vertex_0700CE98[] = {\n    {{{  2483,   3269,  -2671}, 0, {   806,    766}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  2546,   3240,  -2857}, 0, {   930,    396}, {0x04, 0x7e, 0x05, 0xff}}},\n    {{{  2348,   3229,  -2909}, 0, {   536,    292}, {0xfb, 0x7d, 0x0f, 0xff}}},\n    {{{  2208,   3229,  -2747}, 0, {   256,    616}, {0xd3, 0x75, 0xf0, 0xff}}},\n    {{{  2714,   3231,  -2770}, 0, {  1266,    570}, {0x28, 0x76, 0xee, 0xff}}},\n    {{{  2706,   3217,  -2823}, 0, {  1250,    464}, {0x19, 0x7b, 0xf1, 0xff}}},\n    {{{  2715,   3222,  -2902}, 0, {  1266,    306}, {0x08, 0x7d, 0x12, 0xff}}},\n    {{{  2549,   3255,  -2897}, 0, {   938,    316}, {0x00, 0x7b, 0x1d, 0xff}}},\n    {{{  2500,   3217,  -3217}, 0, {   838,   -322}, {0xfb, 0x7e, 0xf8, 0xff}}},\n    {{{  2651,   3211,  -3334}, 0, {  1140,   -556}, {0xfb, 0x7e, 0xfb, 0xff}}},\n    {{{  2426,   3239,  -3387}, 0, {   690,   -662}, {0xfe, 0x7e, 0x00, 0xff}}},\n    {{{  2624,   3223,  -3231}, 0, {  1086,   -350}, {0xfe, 0x7a, 0xe1, 0xff}}},\n    {{{  2340,   3216,  -3238}, 0, {   520,   -364}, {0x12, 0x7d, 0xf8, 0xff}}},\n    {{{  2375,   3211,  -3194}, 0, {   590,   -276}, {0x19, 0x7a, 0xed, 0xff}}},\n    {{{  2293,   3237,  -3244}, 0, {   426,   -376}, {0x21, 0x6f, 0xce, 0xff}}},\n};\n\n// 0x0700CF88 - 0x0700D088\nstatic const Vtx wmotr_seg7_vertex_0700CF88[] = {\n    {{{  2764,   3233,  -3176}, 0, {  1366,   -240}, {0xfe, 0x7e, 0xff, 0xff}}},\n    {{{  2624,   3223,  -3231}, 0, {  1086,   -350}, {0xfe, 0x7a, 0xe1, 0xff}}},\n    {{{  2730,   3247,  -3158}, 0, {  1298,   -204}, {0x17, 0x7b, 0xec, 0xff}}},\n    {{{  2576,   3264,  -3071}, 0, {   990,      0}, {0xfd, 0x7e, 0xf7, 0xff}}},\n    {{{  2651,   3211,  -3334}, 0, {  1140,   -556}, {0xfb, 0x7e, 0xfb, 0xff}}},\n    {{{  2500,   3217,  -3217}, 0, {   838,   -322}, {0xfb, 0x7e, 0xf8, 0xff}}},\n    {{{  2702,   3233,  -3379}, 0, {  1242,   -646}, {0xd3, 0x76, 0xf6, 0xff}}},\n    {{{  2621,   3211,  -3544}, 0, {  1080,   -976}, {0x1d, 0x7a, 0xf2, 0xff}}},\n    {{{  2657,   3205,  -3388}, 0, {  1152,   -662}, {0xf9, 0x7d, 0xf0, 0xff}}},\n    {{{  2926,   3267,  -3346}, 0, {  1690,   -580}, {0x01, 0x7e, 0xff, 0xff}}},\n    {{{  2950,   3235,  -3123}, 0, {  1736,   -136}, {0x03, 0x7b, 0x1e, 0xff}}},\n    {{{  2849,   3226,  -3084}, 0, {  1536,    -58}, {0x01, 0x7b, 0x1e, 0xff}}},\n    {{{  2813,   3222,  -3064}, 0, {  1462,    -16}, {0x14, 0x7c, 0x08, 0xff}}},\n    {{{  2769,   3233,  -3536}, 0, {  1376,   -958}, {0xe5, 0x78, 0xe3, 0xff}}},\n    {{{  2699,   3174,  -3613}, 0, {  1234,  -1112}, {0x00, 0x64, 0xb3, 0xff}}},\n    {{{  2982,   3223,  -3103}, 0, {  1800,    -94}, {0x06, 0x7c, 0x15, 0xff}}},\n};\n\n// 0x0700D088 - 0x0700D188\nstatic const Vtx wmotr_seg7_vertex_0700D088[] = {\n    {{{  3020,   3222,  -3102}, 0, {  1876,    -94}, {0x0f, 0x7d, 0xfc, 0xff}}},\n    {{{  2982,   3223,  -3103}, 0, {  1800,    -94}, {0x06, 0x7c, 0x15, 0xff}}},\n    {{{  2999,   3255,  -2861}, 0, {  1834,    388}, {0x01, 0x7e, 0xfe, 0xff}}},\n    {{{  2950,   3235,  -3123}, 0, {  1736,   -136}, {0x03, 0x7b, 0x1e, 0xff}}},\n    {{{  3116,   3233,  -3172}, 0, {  2068,   -232}, {0x17, 0x78, 0x20, 0xff}}},\n    {{{  2926,   3267,  -3346}, 0, {  1690,   -580}, {0x01, 0x7e, 0xff, 0xff}}},\n    {{{  2736,   3229,  -2573}, 0, {  1310,    962}, {0x31, 0x74, 0x08, 0xff}}},\n    {{{  2738,   3222,  -2735}, 0, {  1312,    640}, {0x10, 0x7d, 0x02, 0xff}}},\n    {{{  2714,   3231,  -2770}, 0, {  1266,    570}, {0x28, 0x76, 0xee, 0xff}}},\n    {{{  2813,   3222,  -3064}, 0, {  1462,    -16}, {0x14, 0x7c, 0x08, 0xff}}},\n    {{{  2715,   3222,  -2902}, 0, {  1266,    306}, {0x08, 0x7d, 0x12, 0xff}}},\n    {{{  2693,   3243,  -2946}, 0, {  1224,    218}, {0x1d, 0x79, 0x16, 0xff}}},\n    {{{  2762,   3240,  -3065}, 0, {  1360,    -20}, {0x1d, 0x7b, 0x06, 0xff}}},\n    {{{  2730,   3247,  -3158}, 0, {  1298,   -204}, {0x17, 0x7b, 0xec, 0xff}}},\n    {{{  2706,   3217,  -2823}, 0, {  1250,    464}, {0x19, 0x7b, 0xf1, 0xff}}},\n    {{{  2549,   3255,  -2897}, 0, {   938,    316}, {0x00, 0x7b, 0x1d, 0xff}}},\n};\n\n// 0x0700D188 - 0x0700D288\nstatic const Vtx wmotr_seg7_vertex_0700D188[] = {\n    {{{  2736,   3229,  -2573}, 0, {  1310,    962}, {0x31, 0x74, 0x08, 0xff}}},\n    {{{  2714,   3231,  -2770}, 0, {  1266,    570}, {0x28, 0x76, 0xee, 0xff}}},\n    {{{  2483,   3269,  -2671}, 0, {   806,    766}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  2730,   3247,  -3158}, 0, {  1298,   -204}, {0x17, 0x7b, 0xec, 0xff}}},\n    {{{  2576,   3264,  -3071}, 0, {   990,      0}, {0xfd, 0x7e, 0xf7, 0xff}}},\n    {{{  2762,   3240,  -3065}, 0, {  1360,    -20}, {0x1d, 0x7b, 0x06, 0xff}}},\n    {{{  2693,   3243,  -2946}, 0, {  1224,    218}, {0x1d, 0x79, 0x16, 0xff}}},\n    {{{  2549,   3255,  -2897}, 0, {   938,    316}, {0x00, 0x7b, 0x1d, 0xff}}},\n    {{{  3116,   3233,  -3172}, 0, {  2068,   -232}, {0x17, 0x78, 0x20, 0xff}}},\n    {{{  3172,   3233,  -3290}, 0, {  2180,   -468}, {0x35, 0x72, 0x07, 0xff}}},\n    {{{  2926,   3267,  -3346}, 0, {  1690,   -580}, {0x01, 0x7e, 0xff, 0xff}}},\n    {{{  3144,   3222,  -3058}, 0, {  2124,     -6}, {0x1f, 0x75, 0xdb, 0xff}}},\n    {{{  3020,   3222,  -3102}, 0, {  1876,    -94}, {0x0f, 0x7d, 0xfc, 0xff}}},\n    {{{  2999,   3255,  -2861}, 0, {  1834,    388}, {0x01, 0x7e, 0xfe, 0xff}}},\n    {{{  3014,   3222,  -2605}, 0, {  1864,    898}, {0x17, 0x71, 0x33, 0xff}}},\n    {{{  3169,   3222,  -2723}, 0, {  2174,    662}, {0x36, 0x6f, 0x19, 0xff}}},\n};\n\n// 0x0700D288 - 0x0700D378\nstatic const Vtx wmotr_seg7_vertex_0700D288[] = {\n    {{{  3169,   3222,  -2723}, 0, {  2174,    662}, {0x36, 0x6f, 0x19, 0xff}}},\n    {{{  3212,   3222,  -2940}, 0, {  2260,    230}, {0x38, 0x70, 0xf2, 0xff}}},\n    {{{  2999,   3255,  -2861}, 0, {  1834,    388}, {0x01, 0x7e, 0xfe, 0xff}}},\n    {{{  3144,   3222,  -3058}, 0, {  2124,     -6}, {0x1f, 0x75, 0xdb, 0xff}}},\n    {{{  2197,   3211,  -3365}, 0, {   234,   -618}, {0xe9, 0x7c, 0x05, 0xff}}},\n    {{{  2308,   3215,  -3269}, 0, {   454,   -426}, {0x06, 0x7c, 0xea, 0xff}}},\n    {{{  2426,   3239,  -3387}, 0, {   690,   -662}, {0xfe, 0x7e, 0x00, 0xff}}},\n    {{{  2909,   3233,  -3586}, 0, {  1656,  -1058}, {0xfc, 0x75, 0xd2, 0xff}}},\n    {{{  2769,   3233,  -3536}, 0, {  1376,   -958}, {0xe5, 0x78, 0xe3, 0xff}}},\n    {{{  2926,   3267,  -3346}, 0, {  1690,   -580}, {0x01, 0x7e, 0xff, 0xff}}},\n    {{{  2651,   3211,  -3334}, 0, {  1140,   -556}, {0xfb, 0x7e, 0xfb, 0xff}}},\n    {{{  2621,   3211,  -3544}, 0, {  1080,   -976}, {0x1d, 0x7a, 0xf2, 0xff}}},\n    {{{  2480,   3211,  -3621}, 0, {   798,  -1128}, {0x06, 0x7a, 0xdf, 0xff}}},\n    {{{  2699,   3174,  -3613}, 0, {  1234,  -1112}, {0x00, 0x64, 0xb3, 0xff}}},\n    {{{  2657,   3205,  -3388}, 0, {  1152,   -662}, {0xf9, 0x7d, 0xf0, 0xff}}},\n};\n\n// 0x0700D378 - 0x0700D468\nstatic const Vtx wmotr_seg7_vertex_0700D378[] = {\n    {{{  2340,   3216,  -3238}, 0, {   520,   -364}, {0x12, 0x7d, 0xf8, 0xff}}},\n    {{{  2308,   3215,  -3269}, 0, {   454,   -426}, {0x06, 0x7c, 0xea, 0xff}}},\n    {{{  2293,   3237,  -3244}, 0, {   426,   -376}, {0x21, 0x6f, 0xce, 0xff}}},\n    {{{  2426,   3239,  -3387}, 0, {   690,   -662}, {0xfe, 0x7e, 0x00, 0xff}}},\n    {{{  2257,   3211,  -3286}, 0, {   352,   -460}, {0x07, 0x78, 0xda, 0xff}}},\n    {{{  2197,   3211,  -3365}, 0, {   234,   -618}, {0xe9, 0x7c, 0x05, 0xff}}},\n    {{{  2200,   3207,  -3314}, 0, {   240,   -516}, {0x02, 0x74, 0xce, 0xff}}},\n    {{{  2500,   3217,  -3217}, 0, {   838,   -322}, {0xfb, 0x7e, 0xf8, 0xff}}},\n    {{{  2332,   3211,  -3603}, 0, {   504,  -1092}, {0xf1, 0x7a, 0xe5, 0xff}}},\n    {{{  2230,   3211,  -3512}, 0, {   298,   -910}, {0xe4, 0x7b, 0xf3, 0xff}}},\n    {{{  2480,   3211,  -3621}, 0, {   798,  -1128}, {0x06, 0x7a, 0xdf, 0xff}}},\n    {{{  2169,   3274,  -3067}, 0, {   178,    -24}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  2103,   3236,  -3299}, 0, {    46,   -486}, {0xf2, 0x6b, 0xbf, 0xff}}},\n    {{{  1991,   3236,  -2888}, 0, {  -176,    334}, {0xce, 0x69, 0x31, 0xff}}},\n    {{{  2140,   3236,  -2826}, 0, {   120,    458}, {0x01, 0x71, 0x39, 0xff}}},\n};\n\n// 0x0700D468 - 0x0700D558\nstatic const Vtx wmotr_seg7_vertex_0700D468[] = {\n    {{{  2839,   3222,  -2611}, 0, {  1516,    888}, {0xf1, 0x75, 0x2e, 0xff}}},\n    {{{  2999,   3255,  -2861}, 0, {  1834,    388}, {0x01, 0x7e, 0xfe, 0xff}}},\n    {{{  2738,   3222,  -2735}, 0, {  1312,    640}, {0x10, 0x7d, 0x02, 0xff}}},\n    {{{  2197,   3211,  -3365}, 0, {   234,   -618}, {0xe9, 0x7c, 0x05, 0xff}}},\n    {{{  2200,   3207,  -3314}, 0, {   240,   -516}, {0x02, 0x74, 0xce, 0xff}}},\n    {{{  2257,   3211,  -3286}, 0, {   352,   -460}, {0x07, 0x78, 0xda, 0xff}}},\n    {{{  1972,   3236,  -3212}, 0, {  -212,   -312}, {0xc6, 0x6b, 0xdd, 0xff}}},\n    {{{  2169,   3274,  -3067}, 0, {   178,    -24}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  2103,   3236,  -3299}, 0, {    46,   -486}, {0xf2, 0x6b, 0xbf, 0xff}}},\n    {{{  2208,   3229,  -2747}, 0, {   256,    616}, {0xd3, 0x75, 0xf0, 0xff}}},\n    {{{  2214,   3229,  -2604}, 0, {   268,    900}, {0xc7, 0x6f, 0x11, 0xff}}},\n    {{{  2483,   3269,  -2671}, 0, {   806,    766}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  3014,   3222,  -2605}, 0, {  1864,    898}, {0x17, 0x71, 0x33, 0xff}}},\n    {{{  2655,   3229,  -2436}, 0, {  1148,   1234}, {0x25, 0x72, 0x27, 0xff}}},\n    {{{  2736,   3229,  -2573}, 0, {  1310,    962}, {0x31, 0x74, 0x08, 0xff}}},\n};\n\n// 0x0700D558 - 0x0700D638\nstatic const Vtx wmotr_seg7_vertex_0700D558[] = {\n    {{{  3049,   3233,  -3541}, 0, {  1934,   -970}, {0x18, 0x74, 0xd4, 0xff}}},\n    {{{  2909,   3233,  -3586}, 0, {  1656,  -1058}, {0xfc, 0x75, 0xd2, 0xff}}},\n    {{{  2926,   3267,  -3346}, 0, {  1690,   -580}, {0x01, 0x7e, 0xff, 0xff}}},\n    {{{  3150,   3233,  -3424}, 0, {  2136,   -736}, {0x2d, 0x73, 0xe7, 0xff}}},\n    {{{  3172,   3233,  -3290}, 0, {  2180,   -468}, {0x35, 0x72, 0x07, 0xff}}},\n    {{{  1972,   3236,  -3212}, 0, {  -212,   -312}, {0xc6, 0x6b, 0xdd, 0xff}}},\n    {{{  1923,   3236,  -3056}, 0, {  -312,     -2}, {0xc5, 0x70, 0x02, 0xff}}},\n    {{{  2169,   3274,  -3067}, 0, {   178,    -24}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  1991,   3236,  -2888}, 0, {  -176,    334}, {0xce, 0x69, 0x31, 0xff}}},\n    {{{  2478,   3229,  -2393}, 0, {   794,   1320}, {0x00, 0x71, 0x38, 0xff}}},\n    {{{  2655,   3229,  -2436}, 0, {  1148,   1234}, {0x25, 0x72, 0x27, 0xff}}},\n    {{{  2483,   3269,  -2671}, 0, {   806,    766}, {0x00, 0x7e, 0x00, 0xff}}},\n    {{{  2295,   3229,  -2474}, 0, {   430,   1160}, {0xdf, 0x71, 0x2e, 0xff}}},\n    {{{  2214,   3229,  -2604}, 0, {   268,    900}, {0xc7, 0x6f, 0x11, 0xff}}},\n};\n\n// 0x0700D638 - 0x0700D728\nstatic const Vtx wmotr_seg7_vertex_0700D638[] = {\n    {{{ -3428,   -465,   3716}, 0, {  1322,   1206}, {0x53, 0xdb, 0x57, 0xff}}},\n    {{{ -3304,   -511,   3432}, 0, {  1570,    642}, {0x38, 0x99, 0x2e, 0xff}}},\n    {{{ -3286,   -465,   3455}, 0, {  1606,    688}, {0x56, 0xdd, 0x55, 0xff}}},\n    {{{ -3286,   -373,   3455}, 0, {  1606,    688}, {0x4a, 0x4a, 0x47, 0xff}}},\n    {{{ -3052,   -465,   3332}, 0, {  2072,    442}, {0x4e, 0xd9, 0x5b, 0xff}}},\n    {{{ -3084,   -511,   3316}, 0, {  2010,    410}, {0x29, 0x97, 0x38, 0xff}}},\n    {{{ -3428,   -373,   3716}, 0, {  1322,   1206}, {0x50, 0x38, 0x50, 0xff}}},\n    {{{ -2896,   -465,   3113}, 0, {  2384,      4}, {0x73, 0xd2, 0x18, 0xff}}},\n    {{{ -2999,   -511,   2863}, 0, {  2178,   -494}, {0x38, 0x92, 0xe4, 0xff}}},\n    {{{ -2962,   -465,   2850}, 0, {  2252,   -520}, {0x65, 0xd6, 0xc1, 0xff}}},\n    {{{ -2937,   -511,   3110}, 0, {  2302,      0}, {0x3a, 0x92, 0x15, 0xff}}},\n    {{{ -4097,   -511,   3091}, 0, {   -14,    -40}, {0xeb, 0x83, 0x05, 0xff}}},\n    {{{ -3052,   -373,   3332}, 0, {  2072,    442}, {0x4a, 0x3e, 0x51, 0xff}}},\n    {{{ -3437,   -511,   3678}, 0, {  1304,   1130}, {0x29, 0x94, 0x33, 0xff}}},\n    {{{ -2896,   -373,   3113}, 0, {  2384,      4}, {0x6a, 0x43, 0x0f, 0xff}}},\n};\n\n// 0x0700D728 - 0x0700D828\nstatic const Vtx wmotr_seg7_vertex_0700D728[] = {\n    {{{ -3169,   -373,   2685}, 0, {  1840,   -850}, {0x18, 0x45, 0x99, 0xff}}},\n    {{{ -3406,   -465,   2711}, 0, {  1366,   -798}, {0x18, 0xe9, 0x86, 0xff}}},\n    {{{ -3406,   -373,   2711}, 0, {  1366,   -798}, {0x1e, 0x56, 0xa9, 0xff}}},\n    {{{ -2962,   -465,   2850}, 0, {  2252,   -520}, {0x65, 0xd6, 0xc1, 0xff}}},\n    {{{ -2999,   -511,   2863}, 0, {  2178,   -494}, {0x38, 0x92, 0xe4, 0xff}}},\n    {{{ -3193,   -511,   2708}, 0, {  1790,   -804}, {0x1b, 0x97, 0xc0, 0xff}}},\n    {{{ -4097,   -511,   3091}, 0, {   -14,    -40}, {0xeb, 0x83, 0x05, 0xff}}},\n    {{{ -2896,   -373,   3113}, 0, {  2384,      4}, {0x6a, 0x43, 0x0f, 0xff}}},\n    {{{ -2962,   -373,   2850}, 0, {  2252,   -520}, {0x58, 0x43, 0xc3, 0xff}}},\n    {{{ -3169,   -465,   2685}, 0, {  1840,   -850}, {0x22, 0xe0, 0x8b, 0xff}}},\n    {{{ -3417,   -511,   2732}, 0, {  1344,   -756}, {0x17, 0xa2, 0xaf, 0xff}}},\n    {{{ -3581,   -511,   2599}, 0, {  1016,  -1020}, {0x13, 0x91, 0xc7, 0xff}}},\n    {{{ -3581,   -465,   2569}, 0, {  1016,  -1080}, {0x2c, 0xd9, 0x90, 0xff}}},\n    {{{ -3826,   -511,   2612}, 0, {   528,   -996}, {0xf1, 0x96, 0xbc, 0xff}}},\n    {{{ -3841,   -465,   2583}, 0, {   498,  -1054}, {0xdc, 0xda, 0x8d, 0xff}}},\n    {{{ -3581,   -373,   2569}, 0, {  1016,  -1080}, {0x1d, 0x41, 0x97, 0xff}}},\n};\n\n// 0x0700D828 - 0x0700D928\nstatic const Vtx wmotr_seg7_vertex_0700D828[] = {\n    {{{ -3841,   -465,   2583}, 0, {   498,  -1054}, {0xdc, 0xda, 0x8d, 0xff}}},\n    {{{ -3826,   -511,   2612}, 0, {   528,   -996}, {0xf1, 0x96, 0xbc, 0xff}}},\n    {{{ -4015,   -511,   2738}, 0, {   150,   -744}, {0xd2, 0x95, 0xcf, 0xff}}},\n    {{{ -4097,   -511,   3091}, 0, {   -14,    -40}, {0xeb, 0x83, 0x05, 0xff}}},\n    {{{ -4042,   -465,   2717}, 0, {    96,   -786}, {0xa8, 0xd8, 0xae, 0xff}}},\n    {{{ -3841,   -373,   2583}, 0, {   498,  -1054}, {0xdb, 0x3d, 0x98, 0xff}}},\n    {{{ -3581,   -373,   2569}, 0, {  1016,  -1080}, {0x1d, 0x41, 0x97, 0xff}}},\n    {{{ -4114,   -511,   2920}, 0, {   -44,   -380}, {0xb2, 0xa0, 0xe8, 0xff}}},\n    {{{ -4147,   -465,   2910}, 0, {  -112,   -400}, {0x8b, 0xd8, 0xe8, 0xff}}},\n    {{{ -4042,   -373,   2717}, 0, {    96,   -786}, {0xad, 0x3d, 0xb7, 0xff}}},\n    {{{ -4129,   -465,   3092}, 0, {   -76,    -38}, {0x8d, 0xdc, 0x27, 0xff}}},\n    {{{ -4147,   -373,   2910}, 0, {  -112,   -400}, {0x94, 0x3f, 0xee, 0xff}}},\n    {{{ -4032,   -511,   3191}, 0, {   116,    160}, {0xb3, 0x9d, 0x0b, 0xff}}},\n    {{{ -3437,   -511,   3678}, 0, {  1304,   1130}, {0x29, 0x94, 0x33, 0xff}}},\n    {{{ -3640,   -511,   3777}, 0, {   898,   1328}, {0x00, 0x87, 0x24, 0xff}}},\n    {{{ -4060,   -465,   3199}, 0, {    60,    176}, {0x88, 0xe4, 0x1e, 0xff}}},\n};\n\n// 0x0700D928 - 0x0700DA28\nstatic const Vtx wmotr_seg7_vertex_0700D928[] = {\n    {{{ -4147,   -373,   2910}, 0, {  -112,   -400}, {0x94, 0x3f, 0xee, 0xff}}},\n    {{{ -4129,   -465,   3092}, 0, {   -76,    -38}, {0x8d, 0xdc, 0x27, 0xff}}},\n    {{{ -4129,   -373,   3092}, 0, {   -76,    -38}, {0x9a, 0x3f, 0x26, 0xff}}},\n    {{{ -4060,   -465,   3199}, 0, {    60,    176}, {0x88, 0xe4, 0x1e, 0xff}}},\n    {{{ -4032,   -511,   3191}, 0, {   116,    160}, {0xb3, 0x9d, 0x0b, 0xff}}},\n    {{{ -4086,   -511,   3394}, 0, {     8,    566}, {0xc6, 0x90, 0xff, 0xff}}},\n    {{{ -4118,   -465,   3414}, 0, {   -54,    606}, {0x89, 0xd6, 0xfa, 0xff}}},\n    {{{ -3640,   -511,   3777}, 0, {   898,   1328}, {0x00, 0x87, 0x24, 0xff}}},\n    {{{ -4060,   -373,   3199}, 0, {    60,    176}, {0xa2, 0x53, 0x0d, 0xff}}},\n    {{{ -3644,   -465,   3821}, 0, {   892,   1416}, {0x0b, 0xd2, 0x75, 0xff}}},\n    {{{ -3437,   -511,   3678}, 0, {  1304,   1130}, {0x29, 0x94, 0x33, 0xff}}},\n    {{{ -4042,   -511,   3568}, 0, {    96,    912}, {0xc4, 0x96, 0x21, 0xff}}},\n    {{{ -4071,   -465,   3599}, 0, {    38,    976}, {0x93, 0xdd, 0x35, 0xff}}},\n    {{{ -4118,   -373,   3414}, 0, {   -54,    606}, {0x94, 0x41, 0x04, 0xff}}},\n    {{{ -3894,   -511,   3718}, 0, {   390,   1210}, {0xe1, 0x93, 0x38, 0xff}}},\n    {{{ -3914,   -465,   3758}, 0, {   352,   1290}, {0xc4, 0xca, 0x61, 0xff}}},\n};\n\n// 0x0700DA28 - 0x0700DB28\nstatic const Vtx wmotr_seg7_vertex_0700DA28[] = {\n    {{{ -4118,   -373,   3414}, 0, {   -54,    606}, {0x94, 0x41, 0x04, 0xff}}},\n    {{{ -4071,   -465,   3599}, 0, {    38,    976}, {0x93, 0xdd, 0x35, 0xff}}},\n    {{{ -4071,   -373,   3599}, 0, {    38,    976}, {0x9d, 0x2c, 0x40, 0xff}}},\n    {{{ -3914,   -465,   3758}, 0, {   352,   1290}, {0xc4, 0xca, 0x61, 0xff}}},\n    {{{ -3640,   -511,   3777}, 0, {   898,   1328}, {0x00, 0x87, 0x24, 0xff}}},\n    {{{ -3644,   -465,   3821}, 0, {   892,   1416}, {0x0b, 0xd2, 0x75, 0xff}}},\n    {{{ -3894,   -511,   3718}, 0, {   390,   1210}, {0xe1, 0x93, 0x38, 0xff}}},\n    {{{ -3914,   -373,   3758}, 0, {   352,   1290}, {0xcb, 0x37, 0x64, 0xff}}},\n    {{{ -3286,   -373,   3455}, 0, {  1606,    688}, {0x4a, 0x4a, 0x47, 0xff}}},\n    {{{ -3511,   -280,   3632}, 0, {  1158,   1038}, {0x2b, 0x70, 0x26, 0xff}}},\n    {{{ -3428,   -373,   3716}, 0, {  1322,   1206}, {0x50, 0x38, 0x50, 0xff}}},\n    {{{ -3437,   -511,   3678}, 0, {  1304,   1130}, {0x29, 0x94, 0x33, 0xff}}},\n    {{{ -3428,   -465,   3716}, 0, {  1322,   1206}, {0x53, 0xdb, 0x57, 0xff}}},\n    {{{ -3644,   -373,   3821}, 0, {   892,   1416}, {0x0f, 0x38, 0x70, 0xff}}},\n    {{{ -3286,   -303,   3330}, 0, {  1604,    438}, {0x0f, 0x77, 0x28, 0xff}}},\n    {{{ -3359,   -315,   3388}, 0, {  1460,    554}, {0x2f, 0x75, 0x04, 0xff}}},\n};\n\n// 0x0700DB28 - 0x0700DC28\nstatic const Vtx wmotr_seg7_vertex_0700DB28[] = {\n    {{{ -3052,   -373,   3332}, 0, {  2072,    442}, {0x4a, 0x3e, 0x51, 0xff}}},\n    {{{ -3286,   -303,   3330}, 0, {  1604,    438}, {0x0f, 0x77, 0x28, 0xff}}},\n    {{{ -3286,   -373,   3455}, 0, {  1606,    688}, {0x4a, 0x4a, 0x47, 0xff}}},\n    {{{ -3411,   -280,   3449}, 0, {  1356,    676}, {0x32, 0x74, 0x06, 0xff}}},\n    {{{ -3359,   -315,   3388}, 0, {  1460,    554}, {0x2f, 0x75, 0x04, 0xff}}},\n    {{{ -3511,   -280,   3632}, 0, {  1158,   1038}, {0x2b, 0x70, 0x26, 0xff}}},\n    {{{ -2896,   -373,   3113}, 0, {  2384,      4}, {0x6a, 0x43, 0x0f, 0xff}}},\n    {{{ -3132,   -303,   3249}, 0, {  1912,    276}, {0x23, 0x74, 0x23, 0xff}}},\n    {{{ -2962,   -373,   2850}, 0, {  2252,   -520}, {0x58, 0x43, 0xc3, 0xff}}},\n    {{{ -3029,   -303,   3105}, 0, {  2118,    -12}, {0x2c, 0x76, 0x03, 0xff}}},\n    {{{ -3169,   -373,   2685}, 0, {  1840,   -850}, {0x18, 0x45, 0x99, 0xff}}},\n    {{{ -3072,   -303,   2931}, 0, {  2032,   -358}, {0x22, 0x77, 0xe6, 0xff}}},\n    {{{ -3406,   -373,   2711}, 0, {  1366,   -798}, {0x1e, 0x56, 0xa9, 0xff}}},\n    {{{ -3209,   -303,   2822}, 0, {  1760,   -576}, {0x07, 0x77, 0xd7, 0xff}}},\n    {{{ -3581,   -373,   2569}, 0, {  1016,  -1080}, {0x1d, 0x41, 0x97, 0xff}}},\n    {{{ -3483,   -318,   2765}, 0, {  1212,   -690}, {0x2e, 0x71, 0xdf, 0xff}}},\n};\n\n// 0x0700DC28 - 0x0700DD28\nstatic const Vtx wmotr_seg7_vertex_0700DC28[] = {\n    {{{ -3406,   -373,   2711}, 0, {  1366,   -798}, {0x1e, 0x56, 0xa9, 0xff}}},\n    {{{ -3366,   -303,   2839}, 0, {  1446,   -542}, {0xef, 0x78, 0xdd, 0xff}}},\n    {{{ -3209,   -303,   2822}, 0, {  1760,   -576}, {0x07, 0x77, 0xd7, 0xff}}},\n    {{{ -3483,   -318,   2765}, 0, {  1212,   -690}, {0x2e, 0x71, 0xdf, 0xff}}},\n    {{{ -3468,   -301,   2953}, 0, {  1242,   -314}, {0x11, 0x7d, 0xf3, 0xff}}},\n    {{{ -3841,   -373,   2583}, 0, {   498,  -1054}, {0xdb, 0x3d, 0x98, 0xff}}},\n    {{{ -3630,   -301,   2683}, 0, {   918,   -854}, {0x0b, 0x76, 0xd6, 0xff}}},\n    {{{ -3581,   -373,   2569}, 0, {  1016,  -1080}, {0x1d, 0x41, 0x97, 0xff}}},\n    {{{ -3812,   -301,   2692}, 0, {   556,   -836}, {0xee, 0x75, 0xd4, 0xff}}},\n    {{{ -4042,   -373,   2717}, 0, {    96,   -786}, {0xad, 0x3d, 0xb7, 0xff}}},\n    {{{ -4147,   -373,   2910}, 0, {  -112,   -400}, {0x94, 0x3f, 0xee, 0xff}}},\n    {{{ -3953,   -301,   2786}, 0, {   274,   -648}, {0xdb, 0x75, 0xe3, 0xff}}},\n    {{{ -4129,   -373,   3092}, 0, {   -76,    -38}, {0x9a, 0x3f, 0x26, 0xff}}},\n    {{{ -4026,   -301,   2921}, 0, {   128,   -378}, {0xd3, 0x76, 0xfb, 0xff}}},\n    {{{ -4014,   -301,   3048}, 0, {   152,   -124}, {0xd7, 0x76, 0x11, 0xff}}},\n    {{{ -4060,   -373,   3199}, 0, {    60,    176}, {0xa2, 0x53, 0x0d, 0xff}}},\n};\n\n// 0x0700DD28 - 0x0700DE18\nstatic const Vtx wmotr_seg7_vertex_0700DD28[] = {\n    {{{ -3768,   -288,   3110}, 0, {   644,     -2}, {0xf9, 0x7e, 0x02, 0xff}}},\n    {{{ -3965,   -301,   3123}, 0, {   250,     26}, {0xed, 0x77, 0x26, 0xff}}},\n    {{{ -4060,   -373,   3199}, 0, {    60,    176}, {0xa2, 0x53, 0x0d, 0xff}}},\n    {{{ -4014,   -301,   3048}, 0, {   152,   -124}, {0xd7, 0x76, 0x11, 0xff}}},\n    {{{ -4118,   -373,   3414}, 0, {   -54,    606}, {0x94, 0x41, 0x04, 0xff}}},\n    {{{ -3953,   -280,   3270}, 0, {   274,    318}, {0xd6, 0x74, 0xe6, 0xff}}},\n    {{{ -3994,   -280,   3420}, 0, {   194,    618}, {0xcc, 0x73, 0x00, 0xff}}},\n    {{{ -3961,   -280,   3550}, 0, {   258,    876}, {0xca, 0x6e, 0x1e, 0xff}}},\n    {{{ -4071,   -373,   3599}, 0, {    38,    976}, {0x9d, 0x2c, 0x40, 0xff}}},\n    {{{ -3914,   -373,   3758}, 0, {   352,   1290}, {0xcb, 0x37, 0x64, 0xff}}},\n    {{{ -3644,   -373,   3821}, 0, {   892,   1416}, {0x0f, 0x38, 0x70, 0xff}}},\n    {{{ -3851,   -280,   3661}, 0, {   478,   1098}, {0xe7, 0x6f, 0x37, 0xff}}},\n    {{{ -3428,   -373,   3716}, 0, {  1322,   1206}, {0x50, 0x38, 0x50, 0xff}}},\n    {{{ -3662,   -280,   3705}, 0, {   856,   1186}, {0x0b, 0x70, 0x3a, 0xff}}},\n    {{{ -3511,   -280,   3632}, 0, {  1158,   1038}, {0x2b, 0x70, 0x26, 0xff}}},\n};\n\n// 0x0700DE18 - 0x0700DF18\nstatic const Vtx wmotr_seg7_vertex_0700DE18[] = {\n    {{{ -3953,   -280,   3270}, 0, {   274,    318}, {0xd6, 0x74, 0xe6, 0xff}}},\n    {{{ -3732,   -225,   3451}, 0, {   716,    678}, {0xfe, 0x7e, 0x01, 0xff}}},\n    {{{ -3800,   -280,   3176}, 0, {   580,    130}, {0xf9, 0x7d, 0xec, 0xff}}},\n    {{{ -3768,   -288,   3110}, 0, {   644,     -2}, {0xf9, 0x7e, 0x02, 0xff}}},\n    {{{ -4060,   -373,   3199}, 0, {    60,    176}, {0xa2, 0x53, 0x0d, 0xff}}},\n    {{{ -3994,   -280,   3420}, 0, {   194,    618}, {0xcc, 0x73, 0x00, 0xff}}},\n    {{{ -3662,   -280,   3705}, 0, {   856,   1186}, {0x0b, 0x70, 0x3a, 0xff}}},\n    {{{ -3511,   -280,   3632}, 0, {  1158,   1038}, {0x2b, 0x70, 0x26, 0xff}}},\n    {{{ -3851,   -280,   3661}, 0, {   478,   1098}, {0xe7, 0x6f, 0x37, 0xff}}},\n    {{{ -3961,   -280,   3550}, 0, {   258,    876}, {0xca, 0x6e, 0x1e, 0xff}}},\n    {{{ -3965,   -301,   3123}, 0, {   250,     26}, {0xed, 0x77, 0x26, 0xff}}},\n    {{{ -3759,   -271,   2966}, 0, {   660,   -288}, {0xfc, 0x7e, 0x00, 0xff}}},\n    {{{ -4014,   -301,   3048}, 0, {   152,   -124}, {0xd7, 0x76, 0x11, 0xff}}},\n    {{{ -3411,   -280,   3449}, 0, {  1356,    676}, {0x32, 0x74, 0x06, 0xff}}},\n    {{{ -3468,   -277,   3302}, 0, {  1242,    382}, {0x2b, 0x73, 0xe4, 0xff}}},\n    {{{ -3603,   -280,   3168}, 0, {   972,    114}, {0x0b, 0x7b, 0xe4, 0xff}}},\n};\n\n// 0x0700DF18 - 0x0700E018\nstatic const Vtx wmotr_seg7_vertex_0700DF18[] = {\n    {{{ -3768,   -288,   3110}, 0, {   644,     -2}, {0xf9, 0x7e, 0x02, 0xff}}},\n    {{{ -3603,   -280,   3168}, 0, {   972,    114}, {0x0b, 0x7b, 0xe4, 0xff}}},\n    {{{ -3550,   -303,   3130}, 0, {  1078,     38}, {0x14, 0x7d, 0xfc, 0xff}}},\n    {{{ -3468,   -277,   3302}, 0, {  1242,    382}, {0x2b, 0x73, 0xe4, 0xff}}},\n    {{{ -3411,   -280,   3449}, 0, {  1356,    676}, {0x32, 0x74, 0x06, 0xff}}},\n    {{{ -3359,   -315,   3388}, 0, {  1460,    554}, {0x2f, 0x75, 0x04, 0xff}}},\n    {{{ -3446,   -303,   3279}, 0, {  1286,    336}, {0x17, 0x7c, 0xf7, 0xff}}},\n    {{{ -3965,   -301,   3123}, 0, {   250,     26}, {0xed, 0x77, 0x26, 0xff}}},\n    {{{ -3759,   -271,   2966}, 0, {   660,   -288}, {0xfc, 0x7e, 0x00, 0xff}}},\n    {{{ -3812,   -301,   2692}, 0, {   556,   -836}, {0xee, 0x75, 0xd4, 0xff}}},\n    {{{ -3953,   -301,   2786}, 0, {   274,   -648}, {0xdb, 0x75, 0xe3, 0xff}}},\n    {{{ -3630,   -301,   2683}, 0, {   918,   -854}, {0x0b, 0x76, 0xd6, 0xff}}},\n    {{{ -3594,   -287,   3095}, 0, {   990,      0}, {0x09, 0x7c, 0x17, 0xff}}},\n    {{{ -4026,   -301,   2921}, 0, {   128,   -378}, {0xd3, 0x76, 0xfb, 0xff}}},\n    {{{ -4014,   -301,   3048}, 0, {   152,   -124}, {0xd7, 0x76, 0x11, 0xff}}},\n    {{{ -3530,   -279,   2955}, 0, {  1118,   -312}, {0x18, 0x7c, 0x06, 0xff}}},\n};\n\n// 0x0700E018 - 0x0700E118\nstatic const Vtx wmotr_seg7_vertex_0700E018[] = {\n    {{{ -3630,   -301,   2683}, 0, {   918,   -854}, {0x0b, 0x76, 0xd6, 0xff}}},\n    {{{ -3759,   -271,   2966}, 0, {   660,   -288}, {0xfc, 0x7e, 0x00, 0xff}}},\n    {{{ -3546,   -288,   2809}, 0, {  1086,   -602}, {0x19, 0x7b, 0xf0, 0xff}}},\n    {{{ -3530,   -279,   2955}, 0, {  1118,   -312}, {0x18, 0x7c, 0x06, 0xff}}},\n    {{{ -3768,   -288,   3110}, 0, {   644,     -2}, {0xf9, 0x7e, 0x02, 0xff}}},\n    {{{ -3550,   -303,   3130}, 0, {  1078,     38}, {0x14, 0x7d, 0xfc, 0xff}}},\n    {{{ -3594,   -287,   3095}, 0, {   990,      0}, {0x09, 0x7c, 0x17, 0xff}}},\n    {{{ -3468,   -301,   2953}, 0, {  1242,   -314}, {0x11, 0x7d, 0xf3, 0xff}}},\n    {{{ -3483,   -318,   2765}, 0, {  1212,   -690}, {0x2e, 0x71, 0xdf, 0xff}}},\n    {{{ -3446,   -303,   3279}, 0, {  1286,    336}, {0x17, 0x7c, 0xf7, 0xff}}},\n    {{{ -3248,   -264,   3076}, 0, {  1682,    -68}, {0x01, 0x7e, 0x00, 0xff}}},\n    {{{ -3286,   -303,   3330}, 0, {  1604,    438}, {0x0f, 0x77, 0x28, 0xff}}},\n    {{{ -3209,   -303,   2822}, 0, {  1760,   -576}, {0x07, 0x77, 0xd7, 0xff}}},\n    {{{ -3366,   -303,   2839}, 0, {  1446,   -542}, {0xef, 0x78, 0xdd, 0xff}}},\n    {{{ -3132,   -303,   3249}, 0, {  1912,    276}, {0x23, 0x74, 0x23, 0xff}}},\n    {{{ -3072,   -303,   2931}, 0, {  2032,   -358}, {0x22, 0x77, 0xe6, 0xff}}},\n};\n\n// 0x0700E118 - 0x0700E188\nstatic const Vtx wmotr_seg7_vertex_0700E118[] = {\n    {{{ -3029,   -303,   3105}, 0, {  2118,    -12}, {0x2c, 0x76, 0x03, 0xff}}},\n    {{{ -3072,   -303,   2931}, 0, {  2032,   -358}, {0x22, 0x77, 0xe6, 0xff}}},\n    {{{ -3248,   -264,   3076}, 0, {  1682,    -68}, {0x01, 0x7e, 0x00, 0xff}}},\n    {{{ -3132,   -303,   3249}, 0, {  1912,    276}, {0x23, 0x74, 0x23, 0xff}}},\n    {{{ -3286,   -303,   3330}, 0, {  1604,    438}, {0x0f, 0x77, 0x28, 0xff}}},\n    {{{ -3446,   -303,   3279}, 0, {  1286,    336}, {0x17, 0x7c, 0xf7, 0xff}}},\n    {{{ -3359,   -315,   3388}, 0, {  1460,    554}, {0x2f, 0x75, 0x04, 0xff}}},\n};\n\n// 0x0700E188 - 0x0700EFD8\nstatic const Gfx wmotr_seg7_dl_0700E188[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wmotr_seg7_texture_07000C00),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPLight(&wmotr_seg7_lights_0700C2A0.l, 1),\n    gsSPLight(&wmotr_seg7_lights_0700C2A0.a, 2),\n    gsSPVertex(wmotr_seg7_vertex_0700C2B8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  2,  5,  6, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  3,  2,  6, 0x0),\n    gsSP2Triangles( 7,  8,  5, 0x0,  7,  5,  4, 0x0),\n    gsSP2Triangles( 6,  5,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles( 3,  6, 10, 0x0, 10,  6,  9, 0x0),\n    gsSP2Triangles( 7,  4, 11, 0x0,  1, 11,  4, 0x0),\n    gsSP2Triangles( 7, 12,  8, 0x0,  9,  8, 12, 0x0),\n    gsSP2Triangles(13,  7, 14, 0x0,  9, 12, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700C3B8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 2,  4,  5, 0x0,  6,  5,  4, 0x0),\n    gsSP2Triangles( 2,  5,  7, 0x0,  8,  2,  7, 0x0),\n    gsSP2Triangles( 0,  2,  8, 0x0,  7,  5,  9, 0x0),\n    gsSP2Triangles( 6,  9,  5, 0x0, 10,  7, 11, 0x0),\n    gsSP2Triangles( 7,  9, 11, 0x0,  8,  7, 10, 0x0),\n    gsSP2Triangles(11,  9,  6, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 14, 15,  6, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700C4B8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 0,  3,  4, 0x0,  0,  4,  5, 0x0),\n    gsSP2Triangles( 0,  5,  6, 0x0,  0,  7,  1, 0x0),\n    gsSP2Triangles( 0,  8,  9, 0x0,  0,  9,  7, 0x0),\n    gsSP2Triangles( 0,  6, 10, 0x0, 11, 12,  0, 0x0),\n    gsSP2Triangles(11,  0, 10, 0x0, 13,  0, 14, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700C5A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 6,  5,  4, 0x0,  0,  2,  7, 0x0),\n    gsSP2Triangles( 7,  2,  8, 0x0,  2,  5,  8, 0x0),\n    gsSP2Triangles( 8,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 9,  8, 10, 0x0,  8,  6, 10, 0x0),\n    gsSP2Triangles(10,  6, 11, 0x0, 12, 10, 13, 0x0),\n    gsSP2Triangles( 9, 10, 12, 0x0, 10, 11, 13, 0x0),\n    gsSP2Triangles(14, 15, 11, 0x0, 13, 11, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700C6A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  0, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 6,  2,  7, 0x0,  0,  2,  6, 0x0),\n    gsSP2Triangles( 2,  5,  7, 0x0,  7,  5,  8, 0x0),\n    gsSP2Triangles( 9,  7, 10, 0x0,  6,  7,  9, 0x0),\n    gsSP2Triangles( 7,  8, 10, 0x0, 10,  8, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0,  9, 10, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700C7A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 5,  2,  6, 0x0,  2,  4,  6, 0x0),\n    gsSP2Triangles( 6,  4,  7, 0x0,  8,  6,  9, 0x0),\n    gsSP2Triangles( 5,  6,  8, 0x0,  6,  7,  9, 0x0),\n    gsSP2Triangles( 9,  7, 10, 0x0, 11,  9, 12, 0x0),\n    gsSP2Triangles( 8,  9, 11, 0x0, 13, 14, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700C8A8, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  4, 0x0),\n    gsSP2Triangles( 4,  0,  5, 0x0,  0,  2,  5, 0x0),\n    gsSP2Triangles( 5,  2,  6, 0x0,  4,  5,  7, 0x0),\n    gsSP2Triangles( 7,  5,  8, 0x0,  5,  6,  8, 0x0),\n    gsSP2Triangles( 8,  6,  9, 0x0, 10,  8, 11, 0x0),\n    gsSP2Triangles( 7,  8, 10, 0x0,  8,  9, 11, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 10, 11, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700C9A8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  5,  6,  4, 0x0),\n    gsSP2Triangles( 7,  8,  5, 0x0,  5,  8,  6, 0x0),\n    gsSP2Triangles( 7,  9,  8, 0x0, 10,  9,  7, 0x0),\n    gsSP2Triangles(10, 11,  9, 0x0, 12, 13, 10, 0x0),\n    gsSP1Triangle(14, 13, 12, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700CA98, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  5,  0, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 6,  7,  4, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 4,  8,  5, 0x0,  9,  6,  4, 0x0),\n    gsSP2Triangles(10, 11,  9, 0x0,  9, 11,  6, 0x0),\n    gsSP2Triangles(12, 13, 10, 0x0, 14, 12, 10, 0x0),\n    gsSP2Triangles(10, 13, 11, 0x0, 15, 12, 14, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700CB98, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 1,  4,  2, 0x0,  2,  4,  5, 0x0),\n    gsSP2Triangles( 5,  6,  2, 0x0,  2,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  0,  3, 0x0),\n    gsSP2Triangles(11, 12,  0, 0x0, 13, 12, 11, 0x0),\n    gsSP2Triangles(13, 14, 12, 0x0, 15, 14, 13, 0x0),\n    gsSP2Triangles(15, 10, 14, 0x0,  8, 10, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700CC98, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 2,  3,  4, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9,  0, 0x0,  0,  9,  1, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 10,  8, 0x0),\n    gsSP2Triangles(11, 12, 10, 0x0,  7, 12, 11, 0x0),\n    gsSP2Triangles( 7,  6, 12, 0x0, 13, 14,  7, 0x0),\n    gsSP2Triangles(15, 13,  7, 0x0,  7, 14,  5, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700CD98, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  6,  4, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8,  2,  9, 0x0, 10,  8,  7, 0x0),\n    gsSP2Triangles(10, 11,  8, 0x0, 11,  0,  8, 0x0),\n    gsSP2Triangles( 0,  2,  8, 0x0, 12,  2, 13, 0x0),\n    gsSP2Triangles( 9,  2, 12, 0x0,  1, 14,  2, 0x0),\n    gsSP2Triangles(13,  2, 14, 0x0, 15,  9, 12, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700CE98, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  1,  0, 0x0,  4,  5,  1, 0x0),\n    gsSP2Triangles( 5,  6,  1, 0x0,  1,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11,  9,  8, 0x0),\n    gsSP2Triangles( 8, 12, 13, 0x0, 13, 12, 14, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700CF88, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  3,  1,  5, 0x0),\n    gsSP2Triangles( 0,  6,  4, 0x0,  7,  4,  8, 0x0),\n    gsSP2Triangles( 8,  4,  6, 0x0,  6,  0,  9, 0x0),\n    gsSP2Triangles( 0, 10,  9, 0x0, 10,  0, 11, 0x0),\n    gsSP2Triangles(12,  0,  2, 0x0,  0, 12, 11, 0x0),\n    gsSP2Triangles(13,  6,  9, 0x0,  6, 13, 14, 0x0),\n    gsSP2Triangles( 8,  6, 14, 0x0, 15, 11, 12, 0x0),\n    gsSP1Triangle(15, 10, 11, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700D088, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  1,  4, 0x0),\n    gsSP2Triangles( 0,  4,  1, 0x0,  4,  5,  3, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  2,  9, 10, 0x0),\n    gsSP2Triangles( 2,  1,  9, 0x0, 10,  9, 11, 0x0),\n    gsSP2Triangles( 9, 12, 11, 0x0,  9, 13, 12, 0x0),\n    gsSP2Triangles( 8,  7, 14, 0x0,  7, 10, 14, 0x0),\n    gsSP2Triangles( 2, 10,  7, 0x0, 10, 11, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700D188, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  4,  7, 0x0,  5,  4,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(14, 15, 13, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700D288, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  3,  2, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles(10, 11,  6, 0x0, 11, 12,  6, 0x0),\n    gsSP1Triangle(13, 11, 14, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700D378, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  1,  0,  3, 0x0),\n    gsSP2Triangles( 2,  1,  4, 0x0,  5,  4,  1, 0x0),\n    gsSP2Triangles( 6,  2,  4, 0x0,  7,  3,  0, 0x0),\n    gsSP2Triangles( 3,  8,  9, 0x0, 10,  8,  3, 0x0),\n    gsSP2Triangles( 3,  9,  5, 0x0, 11,  2, 12, 0x0),\n    gsSP2Triangles(12,  2,  6, 0x0, 13, 14, 11, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700D468, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles( 0, 12,  1, 0x0, 13, 14, 11, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700D558, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP2Triangles( 4,  3,  2, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 6,  8,  7, 0x0,  9, 10, 11, 0x0),\n    gsSP2Triangles(12,  9, 11, 0x0, 13, 12, 11, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700D638, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 2,  1,  5, 0x0,  2,  5,  4, 0x0),\n    gsSP2Triangles( 6,  2,  3, 0x0,  6,  0,  2, 0x0),\n    gsSP2Triangles( 7,  8,  9, 0x0,  4,  5, 10, 0x0),\n    gsSP2Triangles(11, 10,  5, 0x0, 11,  5,  1, 0x0),\n    gsSP2Triangles( 3,  4, 12, 0x0, 12,  4,  7, 0x0),\n    gsSP2Triangles( 4, 10,  7, 0x0,  0, 13,  1, 0x0),\n    gsSP2Triangles(11,  1, 13, 0x0,  7, 10,  8, 0x0),\n    gsSP2Triangles(11,  8, 10, 0x0, 14,  7,  9, 0x0),\n    gsSP1Triangle(12,  7, 14, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700D728, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  5,  4, 0x0,  7,  3,  8, 0x0),\n    gsSP2Triangles( 8,  3,  9, 0x0,  3,  5,  9, 0x0),\n    gsSP2Triangles( 9,  5, 10, 0x0,  6, 10,  5, 0x0),\n    gsSP2Triangles( 8,  9,  0, 0x0,  0,  9,  1, 0x0),\n    gsSP2Triangles( 9, 10,  1, 0x0, 10, 11, 12, 0x0),\n    gsSP2Triangles( 1, 10, 12, 0x0,  6, 11, 10, 0x0),\n    gsSP2Triangles( 2,  1, 12, 0x0, 12, 11, 13, 0x0),\n    gsSP2Triangles(12, 13, 14, 0x0, 15, 12, 14, 0x0),\n    gsSP2Triangles( 2, 12, 15, 0x0,  6, 13, 11, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700D828, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  1, 0x0),\n    gsSP2Triangles( 0,  2,  4, 0x0,  5,  0,  4, 0x0),\n    gsSP2Triangles( 6,  0,  5, 0x0,  4,  2,  7, 0x0),\n    gsSP2Triangles( 3,  7,  2, 0x0,  4,  7,  8, 0x0),\n    gsSP2Triangles( 9,  4,  8, 0x0,  5,  4,  9, 0x0),\n    gsSP2Triangles( 8,  7,  3, 0x0,  8,  3, 10, 0x0),\n    gsSP2Triangles(11,  8, 10, 0x0,  9,  8, 11, 0x0),\n    gsSP2Triangles(10,  3, 12, 0x0,  3, 13, 14, 0x0),\n    gsSP2Triangles(14, 12,  3, 0x0, 10, 12, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700D928, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  3,  4,  6, 0x0),\n    gsSP2Triangles( 7,  5,  4, 0x0,  2,  3,  8, 0x0),\n    gsSP2Triangles( 8,  3,  6, 0x0,  9,  7, 10, 0x0),\n    gsSP2Triangles( 6,  5, 11, 0x0,  6, 11, 12, 0x0),\n    gsSP2Triangles(13,  6, 12, 0x0,  8,  6, 13, 0x0),\n    gsSP2Triangles( 7, 11,  5, 0x0, 11, 14, 15, 0x0),\n    gsSP2Triangles(12, 11, 15, 0x0,  7, 14, 11, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700DA28, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  3,  6,  4, 0x0),\n    gsSP2Triangles( 2,  3,  7, 0x0,  7,  3,  5, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  5, 11, 12, 0x0),\n    gsSP2Triangles(13,  5, 12, 0x0,  7,  5, 13, 0x0),\n    gsSP2Triangles(13, 12, 10, 0x0,  8, 14, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700DB28, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  2,  4, 0x0),\n    gsSP2Triangles( 2,  3,  5, 0x0,  6,  7,  0, 0x0),\n    gsSP2Triangles( 0,  7,  1, 0x0,  8,  9,  6, 0x0),\n    gsSP2Triangles( 6,  9,  7, 0x0, 10, 11,  8, 0x0),\n    gsSP2Triangles( 8, 11,  9, 0x0, 12, 13, 10, 0x0),\n    gsSP2Triangles(10, 13, 11, 0x0, 14, 15, 12, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700DC28, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  0, 0x0),\n    gsSP2Triangles( 4,  1,  0, 0x0,  5,  6,  7, 0x0),\n    gsSP2Triangles( 7,  6,  3, 0x0,  5,  8,  6, 0x0),\n    gsSP2Triangles( 9,  8,  5, 0x0, 10, 11,  9, 0x0),\n    gsSP2Triangles( 9, 11,  8, 0x0, 12, 13, 10, 0x0),\n    gsSP2Triangles(10, 13, 11, 0x0, 12, 14, 13, 0x0),\n    gsSP1Triangle(15, 14, 12, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700DD28, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  5,  2, 0x0,  4,  6,  5, 0x0),\n    gsSP2Triangles( 7,  6,  4, 0x0,  8,  7,  4, 0x0),\n    gsSP2Triangles( 9,  7,  8, 0x0, 10, 11,  9, 0x0),\n    gsSP2Triangles( 9, 11,  7, 0x0, 12, 13, 10, 0x0),\n    gsSP2Triangles(10, 13, 11, 0x0, 12, 14, 13, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700DE18, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  0,  3, 0x0,  0,  5,  1, 0x0),\n    gsSP2Triangles( 6,  7,  1, 0x0,  8,  6,  1, 0x0),\n    gsSP2Triangles( 9,  8,  1, 0x0,  5,  9,  1, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0,  1, 13, 14, 0x0),\n    gsSP2Triangles( 1, 14, 15, 0x0,  1, 15,  2, 0x0),\n    gsSP2Triangles( 1,  7, 13, 0x0,  3,  2, 15, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700DF18, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 3,  4,  5, 0x0,  6,  3,  5, 0x0),\n    gsSP2Triangles( 2,  3,  6, 0x0,  7,  0,  8, 0x0),\n    gsSP2Triangles( 9, 10,  8, 0x0, 11,  9,  8, 0x0),\n    gsSP2Triangles( 0, 12,  8, 0x0,  8, 10, 13, 0x0),\n    gsSP2Triangles( 8, 13, 14, 0x0, 15,  8, 12, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700E018, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  2,  1,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  3, 0x0),\n    gsSP2Triangles( 5,  3,  6, 0x0,  7,  2,  3, 0x0),\n    gsSP2Triangles( 7,  8,  2, 0x0,  8,  0,  2, 0x0),\n    gsSP2Triangles( 5,  9, 10, 0x0,  5, 10,  7, 0x0),\n    gsSP2Triangles( 9, 11, 10, 0x0, 10, 12, 13, 0x0),\n    gsSP2Triangles(10, 13,  7, 0x0, 11, 14, 10, 0x0),\n    gsSP1Triangle(15, 12, 10, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700E118, 7, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  0,  2, 0x0),\n    gsSP1Triangle( 4,  5,  6, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700EFD8 - 0x0700F048\nconst Gfx wmotr_seg7_dl_0700EFD8[] = {\n    gsDPPipeSync(),\n    gsDPSetEnvColor(255, 255, 255, 180),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wmotr_seg7_dl_0700E188),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n\n// 0x0700F048 - 0x0700F138\nstatic const Vtx wmotr_seg7_vertex_0700F048[] = {\n    {{{  1013,   -770,   4834}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   342,   -641,   4824}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   577,   -982,   4828}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4113,  -2764,   4879}, 0, {     0,    -89}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3991,  -2170,   4877}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3595,  -2279,   4872}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3695,  -2764,   4873}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   249,  -1289,   4823}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -68,  -1027,   4818}, 0, {     0,   -394}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   133,  -1475,   4821}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -350,  -1475,   4814}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   577,   -982,   4828}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   342,   -641,   4824}, 0, {     0,    -97}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   249,  -1289,   4823}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -68,  -1027,   4818}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700F138 - 0x0700F228\nstatic const Vtx wmotr_seg7_vertex_0700F138[] = {\n    {{{  2492,   -809,   4856}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2068,   -264,   4849}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2011,   -673,   4849}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1013,   -770,   4834}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   882,   -379,   4832}, 0, {     0,    -92}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   342,   -641,   4824}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1509,   -672,   4841}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1469,   -262,   4841}, 0, {     0,    -79}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   882,   -379,   4832}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1013,   -770,   4834}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2011,   -673,   4849}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2068,   -264,   4849}, 0, {     0,    -81}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1509,   -672,   4841}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1469,   -262,   4841}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2665,   -432,   4858}, 0, {     0,    -93}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700F228 - 0x0700F318\nstatic const Vtx wmotr_seg7_vertex_0700F228[] = {\n    {{{  3595,  -2279,   4872}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3991,  -2170,   4877}, 0, {     0,    -67}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3819,  -1678,   4875}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2887,  -1069,   4861}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3153,   -754,   4865}, 0, {     0,    -92}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2665,   -432,   4858}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2492,   -809,   4856}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3187,  -1389,   4866}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3519,  -1145,   4870}, 0, {     0,    -89}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3153,   -754,   4865}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2887,  -1069,   4861}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3445,  -1847,   4869}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3819,  -1678,   4875}, 0, {     0,    -74}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3519,  -1145,   4870}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3187,  -1389,   4866}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700F318 - 0x0700F408\nstatic const Vtx wmotr_seg7_vertex_0700F318[] = {\n    {{{ -3829,   1198,   1098}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4251,   1217,    578}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4064,    921,    798}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3595,  -2279,   4872}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3819,  -1678,   4875}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3445,  -1847,   4869}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -791,  -1495,   4743}, 0, {     0,   -107}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -899,   -927,   4631}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1059,  -1495,   4413}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1142,  -1056,   4326}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4064,    921,    798}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4251,   1217,    578}, 0, {     0,    -70}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4209,    607,    607}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -4419,    856,    358}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3968,   1552,    940}, 0, {     0,    -85}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700F408 - 0x0700F508\nstatic const Vtx wmotr_seg7_vertex_0700F408[] = {\n    {{{ -2522,   1402,   2717}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2450,   1794,   2820}, 0, {     0,    -69}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2894,   1522,   2263}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3561,   1403,   1436}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3652,   1793,   1338}, 0, {     0,    -77}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3968,   1552,    940}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3829,   1198,   1098}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3240,   1516,   1836}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3652,   1793,   1338}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3561,   1403,   1436}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3277,   1926,   1806}, 0, {     0,    -75}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2894,   1522,   2263}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2876,   1932,   2300}, 0, {     0,    -72}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3277,   1926,   1806}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -3240,   1516,   1836}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2876,   1932,   2300}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700F508 - 0x0700F5F8\nstatic const Vtx wmotr_seg7_vertex_0700F508[] = {\n    {{{ -2167,   1154,   3145}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2041,   1509,   3314}, 0, {     0,    -71}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2450,   1794,   2820}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2522,   1402,   2717}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1880,    812,   3486}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1707,   1109,   3711}, 0, {     0,    -74}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2167,   1154,   3145}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2041,   1509,   3314}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1623,    344,   3785}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1421,    591,   4044}, 0, {     0,    -60}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1880,    812,   3486}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1142,  -1056,   4326}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1023,   -461,   4495}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1257,   -625,   4201}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1707,   1109,   3711}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700F5F8 - 0x0700F6D8\nstatic const Vtx wmotr_seg7_vertex_0700F5F8[] = {\n    {{{ -1415,   -129,   4024}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1194,     73,   4305}, 0, {     0,    -55}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1421,    591,   4044}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1623,    344,   3785}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1257,   -625,   4201}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1023,   -461,   4495}, 0, {     0,    -52}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1415,   -129,   4024}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1194,     73,   4305}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1142,  -1056,   4326}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -899,   -927,   4631}, 0, {     0,    -52}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1023,   -461,   4495}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    87,   2403,   1061}, 0, {     0,   -112}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   156,   2111,    638}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   110,   1811,    922}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700F6D8 - 0x0700F7C8\nstatic const Vtx wmotr_seg7_vertex_0700F6D8[] = {\n    {{{  -469,  -1463,   4481}, 0, {     0,    -42}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -464,   -663,   4450}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -399,   -695,   4047}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -404,  -1463,   4077}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   138,   1576,    749}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   110,   1811,    922}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   156,   2111,    638}, 0, {     0,   -323}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   216,   1608,    269}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   207,   1576,    322}, 0, {   124,    252}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    57,   2033,   1244}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    87,   2403,   1061}, 0, {     0,   -112}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   110,   1811,    922}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -234,   1932,   3037}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -273,   2270,   3274}, 0, {     0,    -99}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -185,   2547,   2738}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700F7C8 - 0x0700F8B8\nstatic const Vtx wmotr_seg7_vertex_0700F7C8[] = {\n    {{{   -15,   2190,   1691}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    87,   2403,   1061}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    57,   2033,   1244}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    -1,   2594,   1609}, 0, {     0,    -89}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -88,   2223,   2140}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -90,   2635,   2155}, 0, {     0,    -87}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{    -1,   2594,   1609}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -15,   2190,   1691}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -165,   2151,   2614}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -185,   2547,   2738}, 0, {     0,    -91}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -88,   2223,   2140}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   -90,   2635,   2155}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -364,    677,   3835}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -392,   1387,   4007}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -333,   1201,   3644}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700F8B8 - 0x0700F998\nstatic const Vtx wmotr_seg7_vertex_0700F8B8[] = {\n    {{{  -234,   1932,   3037}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -185,   2547,   2738}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -165,   2151,   2614}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -292,   1588,   3392}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -343,   1852,   3705}, 0, {     0,    -86}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -273,   2270,   3274}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -234,   1932,   3037}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -333,   1201,   3644}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -392,   1387,   4007}, 0, {     0,    -83}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -292,   1588,   3392}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -343,   1852,   3705}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -364,    677,   3835}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -427,    791,   4224}, 0, {     0,    -67}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -392,   1387,   4007}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700F998 - 0x0700FA88\nstatic const Vtx wmotr_seg7_vertex_0700F998[] = {\n    {{{  4122,     63,     18}, 0, {     0,    -35}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4122,   1558,     18}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3773,   1540,   -195}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -385,     68,   3961}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -450,    134,   4360}, 0, {     0,    -52}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -427,    791,   4224}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -364,    677,   3835}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -399,   -695,   4047}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -464,   -663,   4450}, 0, {     0,    -43}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -385,     68,   3961}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -450,    134,   4360}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2463,   4636,  -4017}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2769,   4841,  -4205}, 0, {     0,   -356}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2890,   4474,  -4279}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2516,   4474,  -4050}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700FA88 - 0x0700FB78\nstatic const Vtx wmotr_seg7_vertex_0700FA88[] = {\n    {{{ -1119,   5845,  -3194}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1896,   5830,  -3670}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1707,   5484,  -3554}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4122,     63,     18}, 0, {     0,    -35}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3773,   1540,   -195}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3773,     63,   -195}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2175,   5061,  -3841}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2422,   5355,  -3993}, 0, {     0,    -85}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2769,   4841,  -4205}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2463,   4636,  -4017}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1707,   5484,  -3554}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1896,   5830,  -3670}, 0, {     0,    -63}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2422,   5355,  -3993}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -2175,   5061,  -3841}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1249,   6228,  -3273}, 0, {     0,    -58}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700FB78 - 0x0700FC68\nstatic const Vtx wmotr_seg7_vertex_0700FB78[] = {\n    {{{  1631,   5869,  -1507}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1772,   6248,  -1421}, 0, {     0,    -64}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   969,   6085,  -1913}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -494,   6051,  -2811}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -556,   6456,  -2849}, 0, {     0,    -59}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1249,   6228,  -3273}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{ -1119,   5845,  -3194}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   277,   6125,  -2337}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   272,   6535,  -2341}, 0, {     0,    -50}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -556,   6456,  -2849}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  -494,   6051,  -2811}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   969,   6085,  -1913}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   272,   6535,  -2341}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   277,   6125,  -2337}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1025,   6492,  -1879}, 0, {     0,    -55}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700FC68 - 0x0700FD58\nstatic const Vtx wmotr_seg7_vertex_0700FC68[] = {\n    {{{  3265,   3961,   -506}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3574,   4157,   -317}, 0, {     0,    -52}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3090,   4990,   -613}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1772,   6248,  -1421}, 0, {     0,    -64}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1025,   6492,  -1879}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   969,   6085,  -1913}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2276,   5407,  -1112}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2499,   5728,   -976}, 0, {     0,    -64}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1772,   6248,  -1421}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1631,   5869,  -1507}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2817,   4733,   -781}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3090,   4990,   -613}, 0, {     0,    -56}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2499,   5728,   -976}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2276,   5407,  -1112}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2817,   4733,   -781}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700FD58 - 0x0700FE48\nstatic const Vtx wmotr_seg7_vertex_0700FD58[] = {\n    {{{  4293,     55,    379}, 0, {     0,     56}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4252,    586,    376}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3883,     55,    346}, 0, {   990,     77}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3557,   3145,   -327}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3891,   3270,   -122}, 0, {     0,    -54}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3574,   4157,   -317}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3265,   3961,   -506}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3713,   2323,   -231}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4059,   2386,    -19}, 0, {     0,    -51}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3557,   3145,   -327}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3891,   3270,   -122}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3773,   1540,   -195}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4122,   1558,     18}, 0, {     0,    -46}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4059,   2386,    -19}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3713,   2323,   -231}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700FE48 - 0x0700FF38\nstatic const Vtx wmotr_seg7_vertex_0700FE48[] = {\n    {{{  1583,   2187,    157}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1058,   2349,    114}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1313,   2025,    135}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4252,    586,    376}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3847,    519,    343}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3883,     55,    346}, 0, {   990,     77}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1103,   1811,    118}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   759,   2043,     90}, 0, {     0,   -142}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   609,   1697,     78}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   998,   1569,    110}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1313,   2025,    135}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1058,   2349,    114}, 0, {     0,   -141}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1103,   1811,    118}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{   759,   2043,     90}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1425,   2570,    144}, 0, {     0,   -123}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x0700FF38 - 0x07010028\nstatic const Vtx wmotr_seg7_vertex_0700FF38[] = {\n    {{{  3038,   2006,    276}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3279,   2341,    295}, 0, {     0,   -108}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2706,   2184,    249}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1911,   2269,    184}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1861,   2679,    180}, 0, {     0,   -116}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1583,   2187,    157}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1425,   2570,    144}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2310,   2269,    216}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2353,   2679,    220}, 0, {     0,    -92}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1911,   2269,    184}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  1861,   2679,    180}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2706,   2184,    249}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2848,   2573,    260}, 0, {     0,    -95}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2353,   2679,    220}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2310,   2269,    216}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07010028 - 0x07010118\nstatic const Vtx wmotr_seg7_vertex_07010028[] = {\n    {{{  3729,    992,    333}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3911,   1596,    347}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3552,   1397,    318}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3279,   2341,    295}, 0, {     0,   -108}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2848,   2573,    260}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  2706,   2184,    249}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3321,   1739,    299}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3279,   2341,    295}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3038,   2006,    276}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3633,   2006,    324}, 0, {     0,    -97}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3552,   1397,    318}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3911,   1596,    347}, 0, {     0,    -83}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3321,   1739,    299}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3633,   2006,    324}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4116,   1125,    364}, 0, {     0,    -73}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07010118 - 0x07010158\nstatic const Vtx wmotr_seg7_vertex_07010118[] = {\n    {{{  3847,    519,    343}, 0, {   990,      0}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4252,    586,    376}, 0, {     0,    -68}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  4116,   1125,    364}, 0, {     0,    223}, {0xff, 0xff, 0xff, 0xff}}},\n    {{{  3729,    992,    333}, 0, {   990,    223}, {0xff, 0xff, 0xff, 0xff}}},\n};\n\n// 0x07010158 - 0x07010608\nstatic const Gfx wmotr_seg7_dl_07010158[] = {\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wmotr_seg7_texture_07001400),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 8 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsSPVertex(wmotr_seg7_vertex_0700F048, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(12, 14, 13, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700F138, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700F228, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700F318, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  7,  9,  8, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700F408, 16, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7, 10,  8, 0x0, 11, 12, 13, 0x0),\n    gsSP2Triangles(11, 13, 14, 0x0,  1, 15,  2, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700F508, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle( 9, 14, 10, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700F5F8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  5,  7,  6, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700F6D8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 4,  7,  8, 0x0,  9, 10, 11, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700F7C8, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  3,  1, 0x0),\n    gsSP2Triangles( 4,  5,  6, 0x0,  4,  6,  7, 0x0),\n    gsSP2Triangles( 8,  9, 10, 0x0,  9, 11, 10, 0x0),\n    gsSP1Triangle(12, 13, 14, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700F8B8, 14, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700F998, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700FA88, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700FB78, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 7,  9, 10, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 14, 12, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700FC68, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),\n    gsSP1Triangle( 0,  2, 14, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700FD58, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 3,  5,  6, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700FE48, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  8,  9, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_0700FF38, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 4,  6,  5, 0x0,  7,  8,  9, 0x0),\n    gsSP2Triangles( 8, 10,  9, 0x0, 11, 12, 13, 0x0),\n    gsSP1Triangle(11, 13, 14, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07010028, 15, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  3,  4,  5, 0x0),\n    gsSP2Triangles( 6,  7,  8, 0x0,  6,  9,  7, 0x0),\n    gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),\n    gsSP1Triangle( 0, 14,  1, 0x0),\n    gsSPVertex(wmotr_seg7_vertex_07010118, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPEndDisplayList(),\n};\n\n// 0x07010608 - 0x07010688\nconst Gfx wmotr_seg7_dl_07010608[] = {\n    gsDPPipeSync(),\n    gsDPSetEnvColor(255, 255, 255, 128),\n    gsDPSetCombineMode(G_CC_MODULATERGBFADEA, G_CC_MODULATERGBFADEA),\n    gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPTileSync(),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 3, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (8 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPDisplayList(wmotr_seg7_dl_07010158),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsSPSetGeometryMode(G_LIGHTING | G_CULL_BACK),\n    gsDPSetEnvColor(255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n"
  },
  {
    "path": "levels/wmotr/geo.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"geo_commands.h\"\n\n#include \"game/level_geo.h\"\n#include \"game/geo_misc.h\"\n#include \"game/camera.h\"\n#include \"game/moving_texture.h\"\n#include \"game/screen_transition.h\"\n#include \"game/paintings.h\"\n\n#include \"make_const_nonconst.h\"\n\n#include \"levels/wmotr/header.h\"\n\n#include \"levels/wmotr/areas/1/geo.inc.c\"\n"
  },
  {
    "path": "levels/wmotr/header.h",
    "content": "#ifndef WMOTR_HEADER_H\n#define WMOTR_HEADER_H\n\n#include \"types.h\"\n\n// geo\nextern const GeoLayout wmotr_geo_0001F0[];\n\n// leveldata\nextern const Gfx wmotr_seg7_dl_0700C1F8[];\nextern const Gfx wmotr_seg7_dl_0700EFD8[];\nextern const Gfx wmotr_seg7_dl_07010608[];\nextern const Collision wmotr_seg7_collision[];\nextern const MacroObject wmotr_seg7_macro_objs[];\n\n// script\nextern const LevelScript level_wmotr_entry[];\n\n#endif\n"
  },
  {
    "path": "levels/wmotr/level.yaml",
    "content": "# Wing Mario over the Rainbow\nshort-name: wmotr\nfull-name: Wing Mario over the Rainbow\ntexture-file: [\"/texture.inc.c\"]\narea-count: 1\nobjects: []\nshared-path: []\n# loaded files\nskybox-bin: cloud_floor\ntexture-bin: sky\neffects: false\nactor-bins: [group2, group17]\ncommon-bin: [common0]"
  },
  {
    "path": "levels/wmotr/leveldata.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"surface_terrains.h\"\n#include \"moving_texture_macros.h\"\n#include \"level_misc_macros.h\"\n#include \"macro_presets.h\"\n#include \"special_presets.h\"\n#include \"textures.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/wmotr/texture.inc.c\"\n#include \"levels/wmotr/areas/1/model.inc.c\"\n#include \"levels/wmotr/areas/1/collision.inc.c\"\n#include \"levels/wmotr/areas/1/macro.inc.c\"\n"
  },
  {
    "path": "levels/wmotr/script.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"behavior_data.h\"\n#include \"model_ids.h\"\n#include \"seq_ids.h\"\n#include \"segment_symbols.h\"\n#include \"level_commands.h\"\n\n#include \"game/level_update.h\"\n\n#include \"levels/scripts.h\"\n\n#include \"actors/common1.h\"\n\n#include \"make_const_nonconst.h\"\n#include \"levels/wmotr/header.h\"\n\nstatic const LevelScript script_func_local_1[] = {\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/  3996, -2739,  5477, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(82),  /*bhv*/ bhvPoleGrabbing),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -2911,  3564, -3967, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(84),  /*bhv*/ bhvPoleGrabbing),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -3258,  3359, -3946, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(105), /*bhv*/ bhvPoleGrabbing),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -2639,  3154, -4369, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(125), /*bhv*/ bhvPoleGrabbing),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -2980,  4048, -4248, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(36),  /*bhv*/ bhvPoleGrabbing),\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -3290,  3636, -4477, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM2(77),  /*bhv*/ bhvPoleGrabbing),\n    RETURN(),\n};\n\nstatic const LevelScript script_func_local_2[] = {\n    OBJECT(/*model*/ MODEL_NONE, /*pos*/ -160, 1950, -470, /*angle*/ 0, 0, 0, /*bhvParam*/ BPARAM1(STAR_INDEX_ACT_1), /*bhv*/ bhvHiddenRedCoinStar),\n    RETURN(),\n};\n\nconst LevelScript level_wmotr_entry[] = {\n    INIT_LEVEL(),\n    LOAD_MIO0        (/*seg*/ 0x07, _wmotr_segment_7SegmentRomStart, _wmotr_segment_7SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x0A, _cloud_floor_skybox_mio0SegmentRomStart, _cloud_floor_skybox_mio0SegmentRomEnd),\n    LOAD_MIO0_TEXTURE(/*seg*/ 0x09, _sky_mio0SegmentRomStart, _sky_mio0SegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x05, _group2_mio0SegmentRomStart, _group2_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0C, _group2_geoSegmentRomStart,  _group2_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x06, _group17_mio0SegmentRomStart, _group17_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0D, _group17_geoSegmentRomStart,  _group17_geoSegmentRomEnd),\n    LOAD_MIO0        (/*seg*/ 0x08, _common0_mio0SegmentRomStart, _common0_mio0SegmentRomEnd),\n    LOAD_RAW         (/*seg*/ 0x0F, _common0_geoSegmentRomStart,  _common0_geoSegmentRomEnd),\n    ALLOC_LEVEL_POOL(),\n    MARIO(/*model*/ MODEL_MARIO, /*bhvParam*/ BPARAM4(0x01), /*bhv*/ bhvMario),\n    JUMP_LINK(script_func_global_1),\n    JUMP_LINK(script_func_global_3),\n    JUMP_LINK(script_func_global_18),\n\n    AREA(/*index*/ 1, wmotr_geo_0001F0),\n        OBJECT(/*model*/ MODEL_NONE, /*pos*/ -67, 2669, -16, /*angle*/ 0, 270, 0, /*bhvParam*/ BPARAM2(WARP_NODE_0A), /*bhv*/ bhvAirborneWarp),\n        WARP_NODE(/*id*/ WARP_NODE_0A,         /*destLevel*/ LEVEL_WMOTR,          /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_SUCCESS,    /*destLevel*/ LEVEL_CASTLE,         /*destArea*/ 2, /*destNode*/ WARP_NODE_38, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_DEATH,      /*destLevel*/ LEVEL_CASTLE,         /*destArea*/ 2, /*destNode*/ WARP_NODE_6D, /*flags*/ WARP_NO_CHECKPOINT),\n        WARP_NODE(/*id*/ WARP_NODE_WARP_FLOOR, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 1, /*destNode*/ WARP_NODE_0A, /*flags*/ WARP_NO_CHECKPOINT),\n        JUMP_LINK(script_func_local_1),\n        JUMP_LINK(script_func_local_2),\n        TERRAIN(/*terrainData*/ wmotr_seg7_collision),\n        MACRO_OBJECTS(/*objList*/ wmotr_seg7_macro_objs),\n        SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0000, /*seq*/ SEQ_LEVEL_SLIDE),\n        TERRAIN_TYPE(/*terrainType*/ TERRAIN_SNOW),\n    END_AREA(),\n\n    FREE_LEVEL_POOL(),\n    MARIO_POS(/*area*/ 1, /*yaw*/ 270, /*pos*/ -67, 1669, -16),\n    CALL(/*arg*/ 0, /*func*/ lvl_init_or_update),\n    CALL_LOOP(/*arg*/ 1, /*func*/ lvl_init_or_update),\n    CLEAR_LEVEL(),\n    SLEEP_BEFORE_EXIT(/*frames*/ 1),\n    EXIT(),\n};\n"
  },
  {
    "path": "levels/wmotr/texture.inc.c",
    "content": "// 0x07000000 - 0x07000800\nALIGNED8 static const Texture wmotr_seg7_texture_07000000[] = {\n#include \"levels/wmotr/0.rgba16.inc.c\"\n};\n\n// 0x07000800 - 0x07000C00\nALIGNED8 static const Texture wmotr_seg7_texture_07000800[] = {\n#include \"levels/wmotr/1.rgba16.inc.c\"\n};\n\n// 0x07000C00 - 0x07001400\nALIGNED8 static const Texture wmotr_seg7_texture_07000C00[] = {\n#include \"levels/wmotr/2.rgba16.inc.c\"\n};\n\n// 0x07001400 - 0x07001600\nALIGNED8 static const Texture wmotr_seg7_texture_07001400[] = {\n#include \"levels/wmotr/3.rgba16.inc.c\"\n};\n\n// 0x07001600 - 0x07001800\nALIGNED8 static const Texture wmotr_seg7_texture_07001600[] = {\n#include \"levels/wmotr/4.rgba16.inc.c\"\n};\n"
  },
  {
    "path": "lib/asm/__osDisableInt.s",
    "content": ".set noreorder // don't insert nops after branches\n\n#include \"macros.inc\"\n\n#include <PR/R4300.h>\n\n\n.section .text, \"ax\"\n\n\nglabel __osDisableInt\n#ifdef VERSION_CN\n    la    $t2, __OSGlobalIntMask\n    lw    $t3, ($t2)\n    andi  $t3, $t3, SR_IMASK\n#endif\n    mfc0  $t0, C0_SR\n    and   $t1, $t0, ~SR_IE\n    mtc0  $t1, C0_SR\n    andi  $v0, $t0, SR_IE\n#ifdef VERSION_CN\n    lw    $t0, ($t2)\n    andi  $t0, $t0, SR_IMASK\n    beq   $t0, $t3, .Lret\n     lui   $t2, %hi(__osRunningThread)\n    addiu $t2, %lo(__osRunningThread)\n    lw    $t1, 0x118($t2)\n    andi  $t2, $t1, SR_IMASK\n    and   $t2, $t2, $t0\n    and   $t1, $t1, ~SR_IMASK\n    or    $t1, $t1, $t2\n    and   $t1, $t1, ~SR_IE\n    mtc0  $t1, $12\n    nop\n#endif\n    nop\n.Lret:\n    jr    $ra\n     nop\n\n"
  },
  {
    "path": "lib/asm/__osExceptionPreamble.s",
    "content": ".set noat      // allow manual use of $at\n.set noreorder // don't insert nops after branches\n\n#include \"macros.inc\"\n\n#include <PR/R4300.h>\n#include <PR/rcp.h>\n#include <PR/ique.h>\n\n#if defined(VERSION_EU) || defined(VERSION_SH)\n#define VERSION_EU_SH\n#endif\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n#define VERSION_EU_SH_CN\n#endif\n\n.section .text, \"ax\"\n\n#ifdef AVOID_UB\n.set __osThreadTail, __osThreadTail_fix\n#endif\n\nglabel __osExceptionPreamble\n    la    $k0, __osException\n    jr    $k0\n     nop\n\nglabel __osException\n    la    $k0, __osThreadSave\n    sd    $at, 0x20($k0)\n    mfc0  $k1, $12\n    sw    $k1, 0x118($k0)\n    li    $at, -4\n    and   $k1, $k1, $at\n    mtc0  $k1, $12\n    sd    $t0, 0x58($k0)\n    sd    $t1, 0x60($k0)\n    sd    $t2, 0x68($k0)\n    sw    $zero, 0x18($k0)\n    mfc0  $t0, $13\n#ifndef VERSION_EU_SH_CN\n    andi  $t1, $t0, 0x7c\n    li    $t2, 0\n    bne   $t1, $t2, .L80326750\n     nop\n    and   $t1, $k1, $t0\n    andi  $t2, $t1, 0x4000\n    beqz  $t2, .L80326734\n     nop\n    li    $t1, 1\n    lui   $at, %hi(D_80334934)\n    b     .L80326794\n     sw    $t1, %lo(D_80334934)($at)\n.L80326734:\n    andi  $t2, $t1, 0x2000\n    beqz  $t2, .L80326750\n     nop\n    li    $t1, 1\n    lui   $at, %hi(D_80334938)\n    b     .L80326794\n     sw    $t1, %lo(D_80334938)($at)\n.L80326750:\n    lui   $at, %hi(D_80334934)\n    sw    $zero, %lo(D_80334934)($at)\n    lui   $at, %hi(D_80334938)\n#endif\n    move  $t0, $k0\n#ifndef VERSION_EU_SH_CN\n    sw    $zero, %lo(D_80334938)($at)\n#endif\n    lui   $k0, %hi(__osThreadTail + 0x10)\n    lw    $k0, %lo(__osThreadTail + 0x10)($k0)\n    ld    $t1, 0x20($t0)\n    sd    $t1, 0x20($k0)\n    ld    $t1, 0x118($t0)\n    sd    $t1, 0x118($k0)\n    ld    $t1, 0x58($t0)\n    sd    $t1, 0x58($k0)\n    ld    $t1, 0x60($t0)\n    sd    $t1, 0x60($k0)\n    ld    $t1, 0x68($t0)\n    sd    $t1, 0x68($k0)\n#ifdef VERSION_EU_SH\n    lw    $k1, 0x118($k0)\n#else\n.L80326794:\n#endif\n#ifndef VERSION_CN\n    mflo  $t0\n    sd    $t0, 0x108($k0)\n    mfhi  $t0\n#endif\n#ifdef VERSION_EU_SH\n    andi  $t1, $k1, 0xff00\n#endif\n    sd    $v0, 0x28($k0)\n    sd    $v1, 0x30($k0)\n    sd    $a0, 0x38($k0)\n    sd    $a1, 0x40($k0)\n    sd    $a2, 0x48($k0)\n    sd    $a3, 0x50($k0)\n    sd    $t3, 0x70($k0)\n    sd    $t4, 0x78($k0)\n    sd    $t5, 0x80($k0)\n    sd    $t6, 0x88($k0)\n    sd    $t7, 0x90($k0)\n    sd    $s0, 0x98($k0)\n    sd    $s1, 0xa0($k0)\n    sd    $s2, 0xa8($k0)\n    sd    $s3, 0xb0($k0)\n    sd    $s4, 0xb8($k0)\n    sd    $s5, 0xc0($k0)\n    sd    $s6, 0xc8($k0)\n    sd    $s7, 0xd0($k0)\n    sd    $t8, 0xd8($k0)\n    sd    $t9, 0xe0($k0)\n    sd    $gp, 0xe8($k0)\n    sd    $sp, 0xf0($k0)\n    sd    $fp, 0xf8($k0)\n    sd    $ra, 0x100($k0)\n#ifdef VERSION_EU_SH_CN\n#ifdef VERSION_CN\n    mflo  $t0\n    sd    $t0, 0x108($k0)\n    mfhi  $t0\n    sd    $t0, 0x110($k0)\n    lw    $k1, 0x118($k0)\n    andi  $t1, $k1, SR_IMASK\n    beqz  $t1, savercp\n     nop\n    la    $t0, __OSGlobalIntMask\n    lw    $t0, ($t0)\n    lui   $at, (0xFFFFFFFF >> 16)\n    ori   $at, (0xFFFFFFFF & 0xFFFF)\n    xor   $t2, $t0, $at\n    andi  $t2, $t2, SR_IMASK\n    or    $t4, $t1, $t2\n    lui   $at, (~SR_IMASK >> 16) & 0xFFFF\n    ori   $at, (~SR_IMASK & 0xFFFF)\n    and   $t3, $k1, $at\n    or    $t3, $t3, $t4\n    sw    $t3, 0x118($k0)\n    andi  $t0, $t0, SR_IMASK\n    and   $t1, $t1, $t0\n    lui   $at, (~SR_IMASK >> 16) & 0xFFFF\n    ori   $at, (~SR_IMASK & 0xFFFF)\n    and   $k1, $k1, $at\n    or    $k1, $k1, $t1\n#else\n    beqz  $t1, savercp\n     sd    $t0, 0x110($k0)\n    la    $t0, __OSGlobalIntMask\n    lw    $t0, ($t0)\n    li    $at, -1\n#ifdef VERSION_EU\n    xor   $t0, $t0, $at\n#else\n    xor   $t2, $t0, $at\n#endif\n    lui   $at, (~SR_IMASK >> 16) & 0xFFFF\n#ifdef VERSION_EU\n    andi  $t0, $t0, SR_IMASK\n#else\n    andi  $t2, $t2, SR_IMASK\n#endif\n    ori   $at, (~SR_IMASK & 0xFFFF)\n#ifdef VERSION_EU\n    or    $t1, $t1, $t0\n    and   $k1, $k1, $at\n    or    $k1, $k1, $t1\n    sw    $k1, 0x118($k0)\n#else\n    or    $t4, $t1, $t2\n    and   $t3, $k1, $at\n    andi  $t0, $t0, SR_IMASK\n    or    $t3, $t3, $t4\n    and   $t1, $t1, $t0\n    and   $k1, $k1, $at\n    sw    $t3, 0x118($k0)\n    or    $k1, $k1, $t1\n#endif\n#endif\n\nsavercp:\n    lui   $t1, %hi(PHYS_TO_K1(MI_INTR_MASK_REG))\n    lw    $t1, %lo(PHYS_TO_K1(MI_INTR_MASK_REG))($t1)\n    beqz  $t1, endrcp\n     nop\n    la    $t0, __OSGlobalIntMask\n    lw    $t0, ($t0)\n#ifdef VERSION_CN\n    srl   $t0, $t0, 0x10\n    li    $at, 0xFFFFFFFF\n#else\n    lw    $t4, 0x128($k0)\n    li    $at, 0xFFFFFFFF\n    srl   $t0, $t0, 0x10\n#endif\n    xor   $t0, $t0, $at\n    andi  $t0, $t0, 0x3f\n#ifdef VERSION_CN\n    lw    $t4, 0x128($k0)\n#endif\n    and   $t0, $t0, $t4\n    or    $t1, $t1, $t0\nendrcp:\n    sw    $t1, 0x128($k0)\n#else\n    sd    $t0, 0x110($k0)\n#endif\n    mfc0  $t0, C0_EPC\n    sw    $t0, 0x11c($k0)\n    lw    $t0, 0x18($k0)\n    beqz  $t0, .L80326868\n     nop\n    cfc1  $t0, $31\n    nop\n    sw    $t0, 0x12c($k0)\n    sdc1  $f0, 0x130($k0)\n    sdc1  $f2, 0x138($k0)\n    sdc1  $f4, 0x140($k0)\n    sdc1  $f6, 0x148($k0)\n    sdc1  $f8, 0x150($k0)\n    sdc1  $f10, 0x158($k0)\n    sdc1  $f12, 0x160($k0)\n    sdc1  $f14, 0x168($k0)\n    sdc1  $f16, 0x170($k0)\n    sdc1  $f18, 0x178($k0)\n    sdc1  $f20, 0x180($k0)\n    sdc1  $f22, 0x188($k0)\n    sdc1  $f24, 0x190($k0)\n    sdc1  $f26, 0x198($k0)\n    sdc1  $f28, 0x1a0($k0)\n    sdc1  $f30, 0x1a8($k0)\n.L80326868:\n    mfc0  $t0, C0_CAUSE\n    sw    $t0, 0x120($k0)\n#ifndef VERSION_EU_SH_CN\n    lui   $t1, %hi(PHYS_TO_K1(MI_INTR_MASK_REG))\n    lw    $t1, %lo(PHYS_TO_K1(MI_INTR_MASK_REG))($t1)\n    sw    $t1, 0x128($k0)\n#endif\n    li    $t1, 2\n    sh    $t1, 0x10($k0)\n#ifndef VERSION_EU_SH_CN\n    lui   $t1, %hi(D_80334934)\n    lw    $t1, %lo(D_80334934)($t1)\n    beqz  $t1, .L803268B4\n     nop\n    lui   $t2, %hi(D_C0000008)\n    sw    $zero, %lo(D_C0000008)($t2)\n    lui   $a0, %hi(D_C0000000)\n    addiu $t2, %lo(D_C0000008)\n    jal   kdebugserver\n     lw    $a0, %lo(D_C0000000)($a0)\n    b     .L80326E08\n     nop\n.L803268B4:\n    lui   $t1, %hi(D_80334938)\n    lw    $t1, %lo(D_80334938)($t1)\n    beqz  $t1, .L80326900\n     nop\n    lui   $t2, %hi(D_C000000C)\n    sw    $zero, %lo(D_C000000C)($t2)\n    lui   $t1, %hi(__osRdbSendMessage)\n    lw    $t1, %lo(__osRdbSendMessage)($t1)\n    addiu $t2, %lo(D_C000000C)\n    beqz  $t1, .L803268E8\n     nop\n    jal   send_mesg\n     li    $a0, 120\n.L803268E8:\n    lui   $t1, %hi(__osRdbWriteOK)\n    lw    $t1, %lo(__osRdbWriteOK)($t1)\n    lui   $at, %hi(__osRdbWriteOK)\n    addi  $t1, $t1, 1\n    b     .L80326E08\n     sw    $t1, %lo(__osRdbWriteOK)($at)\n.L80326900:\n#endif\n    andi  $t1, $t0, CAUSE_EXCMASK\n    li    $t2, EXC_BREAK\n    beq   $t1, $t2, handle_break\n     nop\n    li    $t2, EXC_CPU\n    beq   $t1, $t2, handle_CpU\n     nop\n    li    $t2, EXC_INT\n    bne   $t1, $t2, panic\n     nop\n    and   $s0, $k1, $t0\nnext_interrupt:\n    andi  $t1, $s0, SR_IMASK\n    srl   $t2, $t1, 0xc\n    bnez  $t2, .L80326944\n     nop\n    srl   $t2, $t1, 8\n    addi  $t2, $t2, 0x10\n.L80326944:\n    // TODO: Get rid of noat\n.set at\n    lbu   $t2, __osIntOffTable($t2)\n    lw    $t2, __osIntTable($t2)\n.set noat\n    jr    $t2\n     nop\n#ifdef VERSION_EU_SH_CN\nglabel IP6_Hdlr\n    li    $at, ~CAUSE_IP6\n    b     next_interrupt\n     and   $s0, $s0, $at\nglabel IP7_Hdlr\n    li    $at, ~CAUSE_IP7\n    b     next_interrupt\n     and   $s0, $s0, $at\n#endif\nglabel counter\n    mfc0  $t1, C0_COMPARE\n    mtc0  $t1, C0_COMPARE\n#ifdef VERSION_CN\n    li    $a0, 24\n    jal   send_mesg\n     nop\n#else\n    jal   send_mesg\n     li    $a0, 24\n#endif\n    lui   $at, (~CAUSE_IP8 >> 16) & 0xFFFF\n    ori   $at, (~CAUSE_IP8 & 0xFFFF)\n    b     next_interrupt\n     and   $s0, $s0, $at\n\nglabel cart\n#ifdef VERSION_EU_SH_CN\n    li    $at, ~CAUSE_IP4\n    and   $s0, $s0, $at\n#endif\n#ifdef VERSION_CN\n    la    $t1, __osHwIntTable\n    addi  $t1, $t1, 4 * 2\n    lw    $t2, ($t1)\n    beqz  $t2, .L80307480\n     nop\n    jalr  $t2\n     lw   $sp, 4($t1)\n    beqz  $v0, .L80307480\n     nop\n    b     redispatch\n     nop\n.L80307480:\n    lui   $s1, %hi(PHYS_TO_K1(MI_HW_INTR_REG))\n    lw    $s1, %lo(PHYS_TO_K1(MI_HW_INTR_REG))($s1)\n    andi  $t1, $s1, 0x40\n    beqz  $t1, .L803074AC\n     nop\n    andi  $s1, $s1, 0x3F80\n    li    $t1, 0\n    lui   $at, %hi(PHYS_TO_K1(PI_CARD_ADDR_REG))\n    sw    $t1, %lo(PHYS_TO_K1(PI_CARD_ADDR_REG))($at)\n    jal   send_mesg\n     li    $a0, 184\n.L803074AC:\n    andi  $t1, $s1, 0x2000\n    beqz  $t1, .L803074D0\n     nop\n    andi  $s1, $s1, 0x1FC0\n    li    $t1, 0x2000\n    lui   $at, %hi(PHYS_TO_K1(MI_HW_INTR_REG))\n    sw    $t1, %lo(PHYS_TO_K1(MI_HW_INTR_REG))($at)\n    jal   send_mesg\n     li    $a0, 240\n.L803074D0:\n    andi  $t1, $s1, 0x80\n    beqz  $t1, .L803074F4\n     nop\n    andi  $s1, $s1, 0x3F40\n    li    $t1, 0x4000\n    lui   $at, %hi(PHYS_TO_K1(MI_HW_INTR_MASK_REG))\n    sw    $t1, %lo(PHYS_TO_K1(MI_HW_INTR_MASK_REG))($at)\n    jal   send_mesg\n     li    $a0, 192\n.L803074F4:\n    andi  $t1, $s1, 0x100\n    beqz  $t1, .L80307518\n     nop\n    andi  $s1, $s1, 0x3EC0\n    lui   $t1, 1\n    lui   $at, %hi(PHYS_TO_K1(MI_HW_INTR_MASK_REG))\n    sw    $t1, %lo(PHYS_TO_K1(MI_HW_INTR_MASK_REG))($at)\n    jal   send_mesg\n     li    $a0, 200\n.L80307518:\n    andi  $t1, $s1, 0x200\n    beqz  $t1, .L8030753C\n     nop\n    andi  $s1, $s1, 0x3DC0\n    lui   $t1, 4\n    lui   $at, %hi(PHYS_TO_K1(MI_HW_INTR_MASK_REG))\n    sw    $t1, %lo(PHYS_TO_K1(MI_HW_INTR_MASK_REG))($at)\n    jal   send_mesg\n     li    $a0, 208\n.L8030753C:\n    andi  $t1, $s1, 0x400\n    beqz  $t1, .L80307560\n     nop\n    andi  $s1, $s1, 0x3BC0\n    lui   $t1, 0x10\n    lui   $at, %hi(PHYS_TO_K1(MI_HW_INTR_MASK_REG))\n    sw    $t1, %lo(PHYS_TO_K1(MI_HW_INTR_MASK_REG))($at)\n    jal   send_mesg\n     li    $a0, 216\n.L80307560:\n    andi  $t1, $s1, 0x800\n    beqz  $t1, .L80307584\n     nop\n    andi  $s1, $s1, 0x37C0\n    lui   $t1, 0x40\n    lui   $at, %hi(PHYS_TO_K1(MI_HW_INTR_MASK_REG))\n    sw    $t1, %lo(PHYS_TO_K1(MI_HW_INTR_MASK_REG))($at)\n    jal   send_mesg\n     li    $a0, 224\n.L80307584:\n    b     next_interrupt\n     nop\n#else\n    li    $t2, 4\n    lui   $at, %hi(__osHwIntTable)\n    addu  $at, $at, $t2\n    lw    $t2, %lo(__osHwIntTable)($at)\n#ifdef VERSION_EU_SH\n    la    $sp, leoDiskStack\n    li    $a0, 16\n    beqz  $t2, .L803269A4\n     addiu $sp, $sp, 0xff0\n#else\n    beqz  $t2, .L803269A4\n     nop\n#endif\n    jalr  $t2\n     nop\n#ifdef VERSION_EU_SH\n    beqz  $v0, .L803269A4\n#ifdef VERSION_SH\n     li    $a0, 0x10\n#else\n     nop\n#endif\n    b     redispatch\n     nop\n#endif\n.L803269A4:\n    jal   send_mesg\n#ifdef VERSION_EU_SH\n     nop\n    b     next_interrupt\n     nop\n#else\n     li    $a0, 16\n    li    $at, -2049\n    b     next_interrupt\n     and   $s0, $s0, $at\n#endif\n#endif\nglabel rcp\n#ifdef VERSION_EU_SH\n    la    $t0, __OSGlobalIntMask\n    lw    $t0, ($t0)\n#endif\n    lui   $s1, %hi(PHYS_TO_K1(MI_INTR_REG))\n    lw    $s1, %lo(PHYS_TO_K1(MI_INTR_REG))($s1)\n#ifdef VERSION_CN\n    la    $t0, __OSGlobalIntMask\n    lw    $t0, ($t0)\n#endif\n#ifdef VERSION_EU_SH_CN\n    srl   $t0, $t0, 0x10\n    and   $s1, $s1, $t0\n#else\n    andi  $s1, $s1, 0x3f\n#endif\n    andi  $t1, $s1, MI_INTR_SP\n    beqz  $t1, vi\n     nop\n#ifdef VERSION_CN\n    andi  $s1, $s1, 0x3e\n#endif\n    lui   $t4, %hi(PHYS_TO_K1(SP_STATUS_REG))\n    lw    $t4, %lo(PHYS_TO_K1(SP_STATUS_REG))($t4)\n#ifdef VERSION_CN\n    li    $t1, SP_CLR_INTR | SP_CLR_SIG3\n#else\n    li    $t1, SP_CLR_INTR\n#endif\n    lui   $at, %hi(PHYS_TO_K1(SP_STATUS_REG))\n#ifdef VERSION_CN\n    sw    $t1, %lo(PHYS_TO_K1(SP_STATUS_REG))($at)\n    andi  $t4, $t4, 0x300\n    beqz  $t4, sp_other_break\n     nop\n#else\n    andi  $t4, $t4, 0x300\n    andi  $s1, $s1, 0x3e\n    beqz  $t4, sp_other_break\n     sw    $t1, %lo(PHYS_TO_K1(SP_STATUS_REG))($at)\n#endif\n    jal   send_mesg\n     li    $a0, 32\n    beqz  $s1, no_more_rcp_ints\n     nop\n    b     vi\n     nop\nsp_other_break:\n    jal   send_mesg\n     li    $a0, 88\n    beqz  $s1, no_more_rcp_ints\n     nop\nvi:\n    andi  $t1, $s1, 8\n    beqz  $t1, ai\n#ifdef VERSION_CN\n     nop\n    andi  $s1, $s1, 0x37\n    lui   $at, %hi(PHYS_TO_K1(VI_CURRENT_REG))\n#else\n     lui   $at, %hi(PHYS_TO_K1(VI_CURRENT_REG))\n    andi  $s1, $s1, 0x37\n#endif\n    sw    $zero, %lo(PHYS_TO_K1(VI_CURRENT_REG))($at)\n    jal   send_mesg\n     li    $a0, 56\n    beqz  $s1, no_more_rcp_ints\n     nop\nai:\n    andi  $t1, $s1, 4\n    beqz  $t1, si\n     nop\n#ifdef VERSION_CN\n    andi  $s1, $s1, 0x3b\n#endif\n    li    $t1, 1\n    lui   $at, %hi(PHYS_TO_K1(AI_STATUS_REG))\n#ifndef VERSION_CN\n    andi  $s1, $s1, 0x3b\n#endif\n    sw    $t1, %lo(PHYS_TO_K1(AI_STATUS_REG))($at)\n    jal   send_mesg\n     li    $a0, 48\n    beqz  $s1, no_more_rcp_ints\n     nop\nsi:\n    andi  $t1, $s1, 2\n    beqz  $t1, pi\n#ifdef VERSION_CN\n    nop\n#else\n     lui   $at, %hi(PHYS_TO_K1(SI_STATUS_REG))\n#endif\n    andi  $s1, $s1, 0x3d\n#ifdef VERSION_CN\n     lui   $at, %hi(PHYS_TO_K1(SI_STATUS_REG))\n#endif\n    sw    $zero, %lo(PHYS_TO_K1(SI_STATUS_REG))($at)\n    jal   send_mesg\n     li    $a0, 40\n    beqz  $s1, no_more_rcp_ints\n     nop\npi:\n    andi  $t1, $s1, 0x10\n    beqz  $t1, dp\n     nop\n#ifdef VERSION_CN\n    andi  $s1, $s1, 0x2f\n    li    $t1, 2\n    lui   $at, %hi(PHYS_TO_K1(PI_STATUS_REG))\n    sw    $t1, %lo(PHYS_TO_K1(PI_STATUS_REG))($at)\n    la    $t1, D_CN_80319658\n    lw    $t2, ($t1)\n    beqz  $t2, .L803076C0\n     nop\n    lw    $sp, 4($t1)\n    jalr  $t2\n    move  $a0, $v0\n    bnez  $v0, .L803076C8\n     nop\n.L803076C0:\n#else\n    li    $t1, 2\n    lui   $at, %hi(PHYS_TO_K1(PI_STATUS_REG))\n    andi  $s1, $s1, 0x2f\n    sw    $t1, %lo(PHYS_TO_K1(PI_STATUS_REG))($at)\n#endif\n    jal   send_mesg\n     li    $a0, 64\n.L803076C8:\n    beqz  $s1, no_more_rcp_ints\n     nop\ndp:\n    andi  $t1, $s1, 0x20\n    beqz  $t1, no_more_rcp_ints\n     nop\n#ifdef VERSION_CN\n    andi  $s1, $s1, 0x1f\n#endif\n    li    $t1, MI_CLR_DP_INTR\n    lui   $at, %hi(PHYS_TO_K1(MI_MODE_REG))\n#ifndef VERSION_CN\n    andi  $s1, $s1, 0x1f\n#endif\n    sw    $t1, %lo(PHYS_TO_K1(MI_MODE_REG))($at)\n    jal   send_mesg\n     li    $a0, 72\nno_more_rcp_ints:\n    li    $at, -1025\n    b     next_interrupt\n     and   $s0, $s0, $at\nglabel prenmi\n    lw    $k1, 0x118($k0)\n    li    $at, -4097\n#ifdef VERSION_CN\n    and   $k1, $k1, $at\n    sw    $k1, 0x118($k0)\n    la    $t1, __osShutdown\n#else\n    lui   $t1, %hi(__osShutdown)\n    and   $k1, $k1, $at\n    sw    $k1, 0x118($k0)\n    addiu $t1, %lo(__osShutdown)\n#endif\n    lw    $t2, ($t1)\n    beqz  $t2, firstnmi\n#ifdef VERSION_CN\n     nop\n#endif\n     li    $at, -4097\n    b     redispatch\n     and   $s0, $s0, $at\nfirstnmi:\n    li    $t2, 1\n    sw    $t2, ($t1)\n    jal   send_mesg\n     li    $a0, 112\n#ifdef VERSION_CN\n    li    $at, -4097\n    and   $s0, $s0, $at\n#endif\n    lui   $t2, %hi(__osThreadTail + 0x8)\n    lw    $t2, %lo(__osThreadTail + 0x8)($t2)\n#ifndef VERSION_CN\n    li    $at, -4097\n    and   $s0, $s0, $at\n#endif\n    lw    $k1, 0x118($t2)\n#ifdef VERSION_CN\n    li    $at, -4097\n#endif\n    and   $k1, $k1, $at\n    b     redispatch\n     sw    $k1, 0x118($t2)\nglabel sw2\n    li    $at, -513\n    and   $t0, $t0, $at\n    mtc0  $t0, $13\n#ifdef VERSION_CN\n    li    $a0, 8\n    jal   send_mesg\n     nop\n#else\n    jal   send_mesg\n     li    $a0, 8\n#endif\n    li    $at, -513\n    b     next_interrupt\n     and   $s0, $s0, $at\nglabel sw1\n    li    $at, -257\n    and   $t0, $t0, $at\n    mtc0  $t0, $13\n#ifdef VERSION_CN\n    li    $a0, 0\n    jal   send_mesg\n     nop\n#else\n    jal   send_mesg\n     li    $a0, 0\n#endif\n    li    $at, -257\n    b     next_interrupt\n     and   $s0, $s0, $at\nhandle_break:\n    li    $t1, 1\n    sh    $t1, 0x12($k0)\n    jal   send_mesg\n     li    $a0, 80\n    b     redispatch\n     nop\n\nglabel redispatch\n#ifdef VERSION_CN\n    lw    $t1, 4($k0)\n    lui   $t2, %hi(__osThreadTail + 0x8)\n    lw    $t2, %lo(__osThreadTail + 0x8)($t2)\n    lw    $t3, 4($t2)\n    slt   $at, $t1, $t3\n    beqz  $at, enqueue_running\n     nop\n    move  $a1, $k0\n    la    $a0, __osThreadTail + 0x8\n    jal   __osEnqueueThread\n     nop\n#else\n    lui   $t2, %hi(__osThreadTail + 0x8)\n    lw    $t2, %lo(__osThreadTail + 0x8)($t2)\n    lw    $t1, 4($k0)\n    lw    $t3, 4($t2)\n    slt   $at, $t1, $t3\n    beqz  $at, enqueue_running\n     nop\n    lui   $a0, %hi(__osThreadTail + 0x8)\n    move  $a1, $k0\n    jal   __osEnqueueThread\n     addiu $a0, %lo(__osThreadTail + 0x8)\n#endif\n    j     __osDispatchThread\n     nop\n\nenqueue_running:\n    la    $t1, __osThreadTail + 0x8\n    lw    $t2, ($t1)\n    sw    $t2, ($k0)\n    j     __osDispatchThread\n     sw    $k0, ($t1)\n\nglabel panic\n    lui   $at, %hi(__osThreadTail + 0x14)\n    sw    $k0, %lo(__osThreadTail + 0x14)($at)\n    li    $t1, 1\n    sh    $t1, 0x10($k0)\n    li    $t1, 2\n    sh    $t1, 0x12($k0)\n    mfc0  $t2, $8\n    sw    $t2, 0x124($k0)\n    jal   send_mesg\n     li    $a0, 96\n    j     __osDispatchThread\n     nop\n\nglabel send_mesg\n#ifdef VERSION_CN\n    move  $s2, $ra\n#endif\n    la    $t2, __osEventStateTab\n    addu  $t2, $t2, $a0\n    lw    $t1, ($t2)\n#ifndef VERSION_CN\n    move  $s2, $ra\n#endif\n    beqz  $t1, .L80326CC4\n     nop\n    lw    $t3, 8($t1)\n    lw    $t4, 0x10($t1)\n    slt   $at, $t3, $t4\n    beqz  $at, .L80326CC4\n     nop\n    lw    $t5, 0xc($t1)\n    addu  $t5, $t5, $t3\n#ifdef VERSION_CN\n    bnez  $t4, .L80326C60\n     div   $zero, $t5, $t4\n#else\n    div   $zero, $t5, $t4\n    bnez  $t4, .L80326C60\n     nop\n#endif\n    break 7\n.L80326C60:\n    li    $at, -1\n    bne   $t4, $at, .L80326C78\n     lui   $at, 0x8000\n    bne   $t5, $at, .L80326C78\n     nop\n    break 6\n.L80326C78:\n#ifdef VERSION_CN\n    mfhi  $t5\n    lw    $t4, 0x14($t1)\n    li    $at, 4\n    mult  $t5, $at\n    mflo  $t5\n#else\n    lw    $t4, 0x14($t1)\n    mfhi  $t5\n    sll   $t5, $t5, 2\n#endif\n    addu  $t4, $t4, $t5\n    lw    $t5, 4($t2)\n#ifdef VERSION_CN\n    sw    $t5, ($t4)\n    addiu $t2, $t3, 1\n#else\n    addiu $t2, $t3, 1\n    sw    $t5, ($t4)\n#endif\n    sw    $t2, 8($t1)\n    lw    $t2, ($t1)\n    lw    $t3, ($t2)\n    beqz  $t3, .L80326CC4\n     nop\n    jal   __osPopThread\n     move  $a0, $t1\n    move  $t2, $v0\n#ifdef VERSION_CN\n    move  $a1, $t2\n    la    $a0, __osThreadTail + 0x8\n    jal   __osEnqueueThread\n     nop\n#else\n    lui   $a0, %hi(__osThreadTail + 0x8)\n    move  $a1, $t2\n    jal   __osEnqueueThread\n     addiu $a0, %lo(__osThreadTail + 0x8)\n#endif\n.L80326CC4:\n    jr    $s2\n     nop\nhandle_CpU: // coprocessor error\n    lui   $at, 0x3000\n    and   $t1, $t0, $at\n    srl   $t1, $t1, 0x1c\n    li    $t2, 1\n    bne   $t1, $t2, panic\n     nop\n#ifdef VERSION_CN\n    li    $t1, 1\n    sw    $t1, 0x18($k0)\n    lw    $k1, 0x118($k0)\n    lui   $at, 0x2000\n    or    $k1, $k1, $at\n#else\n    lw    $k1, 0x118($k0)\n    lui   $at, 0x2000\n    li    $t1, 1\n    or    $k1, $k1, $at\n    sw    $t1, 0x18($k0)\n#endif\n    b     enqueue_running\n     sw    $k1, 0x118($k0)\n\n\nglabel __osEnqueueAndYield\n    lui   $a1, %hi(__osThreadTail + 0x10)\n    lw    $a1, %lo(__osThreadTail + 0x10)($a1)\n    mfc0  $t0, $12\n#ifndef VERSION_CN\n    lw    $k1, 0x18($a1)\n#endif\n    ori   $t0, $t0, 2\n    sw    $t0, 0x118($a1)\n    sd    $s0, 0x98($a1)\n    sd    $s1, 0xa0($a1)\n    sd    $s2, 0xa8($a1)\n    sd    $s3, 0xb0($a1)\n    sd    $s4, 0xb8($a1)\n    sd    $s5, 0xc0($a1)\n    sd    $s6, 0xc8($a1)\n    sd    $s7, 0xd0($a1)\n    sd    $gp, 0xe8($a1)\n    sd    $sp, 0xf0($a1)\n    sd    $fp, 0xf8($a1)\n    sd    $ra, 0x100($a1)\n#ifdef VERSION_CN\n    sw    $ra, 0x11c($a1)\n    lw    $k1, 0x18($a1)\n    beqz  $k1, .L80326D70\n     nop\n    cfc1  $k1, $31\n    sw    $k1, 0x12c($a1)\n#else\n    beqz  $k1, .L80326D70\n     sw    $ra, 0x11c($a1)\n    cfc1  $k1, $31\n#endif\n    sdc1  $f20, 0x180($a1)\n    sdc1  $f22, 0x188($a1)\n    sdc1  $f24, 0x190($a1)\n    sdc1  $f26, 0x198($a1)\n    sdc1  $f28, 0x1a0($a1)\n    sdc1  $f30, 0x1a8($a1)\n#ifndef VERSION_CN\n    sw    $k1, 0x12c($a1)\n#endif\n\n.L80326D70:\n#ifdef VERSION_EU_SH_CN\n    lw    $k1, 0x118($a1)\n    andi  $t1, $k1, 0xff00\n    beqz  $t1, .L802F3FBC\n     nop\n    la    $t0, __OSGlobalIntMask\n    lw    $t0, ($t0)\n    li    $at, 0xFFFFFFFF\n    xor   $t0, $t0, $at\n#ifdef VERSION_CN\n    andi  $t0, $t0, SR_IMASK\n    or    $t1, $t1, $t0\n    li    $at, ~SR_IMASK\n#else\n    lui   $at, (~SR_IMASK >> 16) & 0xFFFF\n    andi  $t0, $t0, SR_IMASK\n    ori   $at, (~SR_IMASK & 0xFFFF)\n    or    $t1, $t1, $t0\n#endif\n    and   $k1, $k1, $at\n    or    $k1, $k1, $t1\n    sw    $k1, 0x118($a1)\n.L802F3FBC:\n#endif\n    lui   $k1, %hi(PHYS_TO_K1(MI_INTR_MASK_REG))\n    lw    $k1, %lo(PHYS_TO_K1(MI_INTR_MASK_REG))($k1)\n#ifdef VERSION_EU_SH_CN\n    beqz  $k1, .L802F3FF4\n     nop\n    la    $k0, __OSGlobalIntMask\n    lw    $k0, ($k0)\n#ifdef VERSION_CN\n    srl   $k0, $k0, 0x10\n    li    $at, 0xFFFFFFFF\n    xor   $k0, $k0, $at\n    andi  $k0, $k0, 0x3f\n    lw    $t0, 0x128($a1)\n#else\n    lw    $t0, 0x128($a1)\n    li    $at, 0xFFFFFFFF\n    srl   $k0, $k0, 0x10\n    xor   $k0, $k0, $at\n    andi  $k0, $k0, 0x3f\n#endif\n    and   $k0, $k0, $t0\n    or    $k1, $k1, $k0\n.L802F3FF4:\n#endif\n    beqz  $a0, .L80326D88\n     sw    $k1, 0x128($a1)\n    jal   __osEnqueueThread\n     nop\n.L80326D88:\n    j     __osDispatchThread\n     nop\n\n// enqueue and pop look like compiled functions?  but there's no easy way to extract them\nglabel __osEnqueueThread\n#ifdef VERSION_CN\n    move  $t9, $a0\n#endif\n    lw    $t8, ($a0)\n    lw    $t7, 4($a1)\n#ifndef VERSION_CN\n    move  $t9, $a0\n#endif\n    lw    $t6, 4($t8)\n    slt   $at, $t6, $t7\n    bnez  $at, .L80326DC4\n     nop\n.L80326DAC:\n    move  $t9, $t8\n    lw    $t8, ($t8)\n    lw    $t6, 4($t8)\n    slt   $at, $t6, $t7\n    beqz  $at, .L80326DAC\n     nop\n.L80326DC4:\n    lw    $t8, ($t9)\n    sw    $t8, ($a1)\n    sw    $a1, ($t9)\n    jr    $ra\n     sw    $a0, 8($a1)\n\nglabel __osPopThread\n    lw    $v0, ($a0)\n    lw    $t9, ($v0)\n    jr    $ra\n     sw    $t9, ($a0)\n\n#ifdef VERSION_CN\nfunc_unused:\n    jr    $ra\n     nop\n#endif\n\nglabel __osDispatchThread\n#ifdef VERSION_CN\n    la    $a0, __osThreadTail + 0x8\n    jal   __osPopThread\n    nop\n#else\n    lui   $a0, %hi(__osThreadTail + 0x8)\n    jal   __osPopThread\n     addiu $a0, %lo(__osThreadTail + 0x8)\n#endif\n    lui   $at, %hi(__osThreadTail + 0x10)\n    sw    $v0, %lo(__osThreadTail + 0x10)($at)\n    li    $t0, 4\n    sh    $t0, 0x10($v0)\n    move  $k0, $v0\n#ifdef VERSION_EU_SH_CN\n#ifdef VERSION_CN\n    lw    $k1, 0x118($k0)\n    la    $t0, __OSGlobalIntMask\n    lw    $t0, ($t0)\n    andi  $t0, $t0, SR_IMASK\n    andi  $t1, $k1, SR_IMASK\n    and   $t1, $t1, $t0\n    li    $at, ~SR_IMASK\n#else\n    lui   $t0, %hi(__OSGlobalIntMask)\n    lw    $k1, 0x118($k0)\n    addiu $t0, %lo(__OSGlobalIntMask)\n    lw    $t0, ($t0)\n    lui   $at, (~SR_IMASK >> 16) & 0xFFFF\n    andi  $t1, $k1, SR_IMASK\n    ori   $at, (~SR_IMASK & 0xFFFF)\n    andi  $t0, $t0, SR_IMASK\n    and   $t1, $t1, $t0\n#endif\n    and   $k1, $k1, $at\n    or    $k1, $k1, $t1\n    mtc0  $k1, $12\n#endif\n.L80326E08:\n#ifndef VERSION_CN\n    ld    $k1, 0x108($k0)\n#endif\n    ld    $at, 0x20($k0)\n    ld    $v0, 0x28($k0)\n#ifndef VERSION_CN\n    mtlo  $k1\n    ld    $k1, 0x110($k0)\n#endif\n    ld    $v1, 0x30($k0)\n    ld    $a0, 0x38($k0)\n    ld    $a1, 0x40($k0)\n    ld    $a2, 0x48($k0)\n    ld    $a3, 0x50($k0)\n    ld    $t0, 0x58($k0)\n    ld    $t1, 0x60($k0)\n    ld    $t2, 0x68($k0)\n    ld    $t3, 0x70($k0)\n    ld    $t4, 0x78($k0)\n    ld    $t5, 0x80($k0)\n    ld    $t6, 0x88($k0)\n    ld    $t7, 0x90($k0)\n    ld    $s0, 0x98($k0)\n    ld    $s1, 0xa0($k0)\n    ld    $s2, 0xa8($k0)\n    ld    $s3, 0xb0($k0)\n    ld    $s4, 0xb8($k0)\n    ld    $s5, 0xc0($k0)\n    ld    $s6, 0xc8($k0)\n    ld    $s7, 0xd0($k0)\n    ld    $t8, 0xd8($k0)\n    ld    $t9, 0xe0($k0)\n    ld    $gp, 0xe8($k0)\n#ifndef VERSION_CN\n    mthi  $k1\n#endif\n    ld    $sp, 0xf0($k0)\n    ld    $fp, 0xf8($k0)\n    ld    $ra, 0x100($k0)\n#ifdef VERSION_CN\n    ld    $k1, 0x108($k0)\n    mtlo  $k1\n    ld    $k1, 0x110($k0)\n    mthi  $k1\n#endif\n    lw    $k1, 0x11c($k0)\n    mtc0  $k1, $14\n#ifndef VERSION_EU_SH_CN\n    lw    $k1, 0x118($k0)\n    mtc0  $k1, $12\n#endif\n    lw    $k1, 0x18($k0)\n    beqz  $k1, .L80326EF0\n     nop\n    lw    $k1, 0x12c($k0)\n    ctc1  $k1, $31\n    ldc1  $f0, 0x130($k0)\n    ldc1  $f2, 0x138($k0)\n    ldc1  $f4, 0x140($k0)\n    ldc1  $f6, 0x148($k0)\n    ldc1  $f8, 0x150($k0)\n    ldc1  $f10, 0x158($k0)\n    ldc1  $f12, 0x160($k0)\n    ldc1  $f14, 0x168($k0)\n    ldc1  $f16, 0x170($k0)\n    ldc1  $f18, 0x178($k0)\n    ldc1  $f20, 0x180($k0)\n    ldc1  $f22, 0x188($k0)\n    ldc1  $f24, 0x190($k0)\n    ldc1  $f26, 0x198($k0)\n    ldc1  $f28, 0x1a0($k0)\n    ldc1  $f30, 0x1a8($k0)\n.L80326EF0:\n    lw    $k1, 0x128($k0)\n#ifdef VERSION_EU_SH_CN\n    la    $k0, __OSGlobalIntMask\n    lw    $k0, ($k0)\n    srl   $k0, $k0, 0x10\n    and   $k1, $k1, $k0\n#endif\n    sll   $k1, $k1, 1\n    la    $k0, __osRcpImTable\n    addu  $k1, $k1, $k0\n    lhu   $k1, ($k1)\n#ifdef VERSION_CN\n    li    $k0, PHYS_TO_K1(MI_INTR_MASK_REG)\n#else\n    // TODO: is this an la?\n    lui   $k0, %hi(PHYS_TO_K1(MI_INTR_MASK_REG))\n    addiu $k0, %lo(PHYS_TO_K1(MI_INTR_MASK_REG))\n#endif\n    sw    $k1, ($k0)\n    nop\n    nop\n    nop\n    nop\n    eret\nglabel __osCleanupThread\n    jal   osDestroyThread\n     move  $a0, $zero\n\n.section .data\n\nglabel __osHwIntTable\n    .word 0\n    .word 0\n    .word 0\n    .word 0\n    .word 0\n#ifdef VERSION_CN\n    // CN: table is now 2 words per entry (handler, sp)\n    .word 0\n    .word 0\n    .word 0\n    .word 0\n    .word 0\n\n// Is this part of __osHwIntTable?\nglabel D_CN_80319658\n    .word 0\n#endif\n\n#ifndef VERSION_EU_SH_CN\nglabel D_80334934\n    .word 0\n\nglabel D_80334938\n    .word 0\n    .word 0\n#endif\n\n.section .rodata\n\nglabel __osIntOffTable\n    .byte 0x00,0x14,0x18,0x18,0x1C,0x1C,0x1C,0x1C,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x04,0x08,0x08,0x0C,0x0C,0x0C,0x0C,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10\n\nglabel __osIntTable\n    .word redispatch\n    .word sw1\n    .word sw2\n    .word rcp\n    .word cart\n    .word prenmi\n#ifdef VERSION_EU_SH_CN\n    .word IP6_Hdlr\n    .word IP7_Hdlr\n#else\n    .word panic\n    .word panic\n#endif\n    .word counter\n    .word 0\n    .word 0\n    .word 0\n"
  },
  {
    "path": "lib/asm/__osGetCause.s",
    "content": ".set noreorder // don't insert nops after branches\n\n#include \"macros.inc\"\n\n\n.section .text, \"ax\"\n\nglabel __osGetCause\n    mfc0  $v0, $13\n    jr    $ra\n     nop\n\n    nop\n\n"
  },
  {
    "path": "lib/asm/__osGetSR.s",
    "content": ".set noreorder // don't insert nops after branches\n\n#include \"macros.inc\"\n\n\n.section .text, \"ax\"\n\nglabel __osGetSR\n    mfc0  $v0, $12\n    jr    $ra\n     nop\n\n    nop\n\n"
  },
  {
    "path": "lib/asm/__osProbeTLB.s",
    "content": ".set noat      // allow manual use of $at\n.set noreorder // don't insert nops after branches\n\n#include \"macros.inc\"\n\n\n.section .text, \"ax\"\n\nglabel __osProbeTLB\n    mfc0  $t0, $10\n    andi  $t1, $t0, 0xff\n    li    $at, 0xFFFFE000\n    and   $t2, $a0, $at\n    or    $t1, $t1, $t2\n    mtc0  $t1, $10\n    nop\n    nop\n    nop\n    tlbp\n    nop\n    nop\n    mfc0  $t3, $0\n    lui   $at, 0x8000\n    and   $t3, $t3, $at\n    bnez  $t3, .L8032A0D8\n     nop\n    tlbr\n    nop\n    nop\n    nop\n    mfc0  $t3, $5\n    addi  $t3, $t3, 0x2000\n    srl   $t3, $t3, 1\n    and   $t4, $t3, $a0\n    bnez  $t4, .L8032A0A8\n     addi  $t3, $t3, -1\n    mfc0  $v0, $2\n    b     .L8032A0AC\n     nop\n.L8032A0A8:\n    mfc0  $v0, $3\n.L8032A0AC:\n    andi  $t5, $v0, 2\n    beqz  $t5, .L8032A0D8\n     nop\n    lui   $at, (0x3FFFFFC0 >> 16) // lui $at, 0x3fff\n    ori   $at, (0x3FFFFFC0 & 0xFFFF) // ori $at, $at, 0xffc0\n    and   $v0, $v0, $at\n    sll   $v0, $v0, 6\n    and   $t5, $a0, $t3\n    add   $v0, $v0, $t5\n    b     .L8032A0DC\n     nop\n.L8032A0D8:\n    li    $v0, -1\n.L8032A0DC:\n    mtc0  $t0, $10\n    jr    $ra\n     nop\n"
  },
  {
    "path": "lib/asm/__osRestoreInt.s",
    "content": ".set noreorder // don't insert nops after branches\n\n#include \"macros.inc\"\n\n#include <PR/R4300.h>\n\n.section .text, \"ax\"\n\nglabel __osRestoreInt\n    mfc0  $t0, C0_SR\n    or    $t0, $t0, $a0\n    mtc0  $t0, C0_SR\n    nop\n    nop\n    jr    $ra\n     nop\n"
  },
  {
    "path": "lib/asm/__osSetCompare.s",
    "content": ".set noat\n.set noreorder // don't insert nops after branches\n\n#include \"macros.inc\"\n\n#include <PR/R4300.h>\n\n\n.section .text, \"ax\"\n\n#ifdef VERSION_CN\n\nglabel __osSetCompare\n    addiu $sp, $sp, -0x38\n    sd    $ra, 0x30($sp)\n    sd    $fp, 0x28($sp)\n    move  $fp, $sp\n    sw    $a0, 0x3c($fp)\n    lw    $v0, 0x3c($fp)\n    beqz  $v0, .L8030A25C\n     nop\n    jal   __osDisableInt\n     nop\n    sw    $v0, 0x20($fp)\n    lw    $v0, 0x3c($fp)\n    lui   $v1, %hi(sLastHighestCount2) # $v1, 0x8032\n    lw    $v1, %lo(sLastHighestCount2)($v1)\n    sltu  $v0, $v0, $v1\n    lui   $v1, %hi(sNumCountOverflows2) # $v1, 0x8032\n    lw    $v1, %lo(sNumCountOverflows2)($v1)\n    addu  $v0, $v0, $v1\n    sw    $v0, 0x24($fp)\n    lwu   $v0, 0x24($fp)\n    dsll32 $v1, $v0, 0\n    lwu   $a0, 0x3c($fp)\n    or    $v0, $v1, $a0\n    move  $a0, $v0\n    dsll  $v1, $a0, 1\n    daddu $v1, $v1, $v0\n    dsll  $a0, $v1, 6\n    li    $at, 125\n    ddivu $zero, $a0, $at\n    mflo  $v0\n    dsll32 $v0, $v0, 0\n    dsra32 $v0, $v0, 0\n    sw    $v0, 0x3c($fp)\n    jal   __osRestoreInt\n     lw    $a0, 0x20($fp)\n.L8030A25C:\n    lw    $a1, 0x3c($fp)\n    mtc0  $a1, C0_COMPARE\n    move  $sp, $fp\n    ld    $ra, 0x30($sp)\n    ld    $fp, 0x28($sp)\n    jr    $ra\n     addiu $sp, $sp, 0x38\n\n#else\n\nglabel __osSetCompare\n    mtc0  $a0, C0_COMPARE\n    jr    $ra\n     nop\n\n#endif\n"
  },
  {
    "path": "lib/asm/__osSetFpcCsr.s",
    "content": ".set noreorder // don't insert nops after branches\n\n#include \"macros.inc\"\n\n\n.section .text, \"ax\"\n\nglabel __osSetFpcCsr\n    cfc1  $v0, $31\n    ctc1  $a0, $31\n    jr    $ra\n     nop\n\n"
  },
  {
    "path": "lib/asm/__osSetSR.s",
    "content": ".set noreorder // don't insert nops after branches\n\n#include \"macros.inc\"\n\n\n.section .text, \"ax\"\n\nglabel __osSetSR\n    mtc0  $a0, $12\n    nop\n    jr    $ra\n     nop\n\n"
  },
  {
    "path": "lib/asm/__osSetWatchLo.s",
    "content": ".set noreorder // don't insert nops after branches\n\n#include \"macros.inc\"\n\n\n.section .text, \"ax\"\n\nglabel __osSetWatchLo\n    mtc0  $a0, $18\n    nop\n    jr    $ra\n     nop\n\n"
  },
  {
    "path": "lib/asm/__os_eu_802ef550.s",
    "content": ".set noat\n.set noreorder // don't insert nops after branches\n\n#include \"macros.inc\"\n\n\n.section .text, \"ax\"\n// cache related\nglabel __os_eu_802ef550\n    lui     $t0,0x8000\n    li      $t2,0x2000\n    addu    $t1,$t0,$t2\n    addiu   $t1,$t1,-0x10\n.L:    cache   0x1,0($t0)\n    sltu    $at,$t0,$t1\n    bnez    $at,.L\n    addiu   $t0,$t0,0x10\n    jr      $ra\n    nop\n    nop\n    nop\n"
  },
  {
    "path": "lib/asm/bcopy.s",
    "content": ".set noat      // allow manual use of $at\n.set noreorder // don't insert nops after branches\n\n#include \"macros.inc\"\n\n\n.section .text, \"ax\"\n\n//TODO There seem to be patterns in these iQue diffs. Can we figure out what's causing them? Could this have been written in C?\n//also ifdef hell lol\n\nglabel bcopy\n    beqz  $a2, .L80323A4C\n     move  $a3, $a1\n#ifdef VERSION_CN\n    beq   $a0, $a1, .L80323A4C\n     nop\n    slt   $at, $a1, $a0\n    bnez  $at, .L80323A14\n     nop\n    add   $v0, $a0, $a2\n    slt   $at, $a1, $v0\n    beqz   $at, .L80323A14\n     nop\n    b     .L80323B78\n     nop\n.L80323A14:\n    slti  $at, $a2, 0x10\n#else\n    beq   $a0, $a1, .L80323A4C\n     slt   $at, $a1, $a0\n    bnezl $at, .L80323A14\n     slti  $at, $a2, 0x10\n    add   $v0, $a0, $a2\n    slt   $at, $a1, $v0\n    beqzl  $at, .L80323A14\n     slti  $at, $a2, 0x10\n    b     .L80323B78\n     slti  $at, $a2, 0x10\n    slti  $at, $a2, 0x10\n.L80323A14:\n#endif\n    bnez  $at, .L80323A2C\n     nop\n    andi  $v0, $a0, 3\n    andi  $v1, $a1, 3\n    beq   $v0, $v1, .L80323A54\n     nop\n.L80323A2C:\n    beqz  $a2, .L80323A4C\n     nop\n    addu  $v1, $a0, $a2\n.L80323A38:\n    lb    $v0, ($a0)\n    addiu $a0, $a0, 1\n#ifdef VERSION_CN\n    sb    $v0, ($a1)\n    bne   $a0, $v1, .L80323A38\n     addiu $a1, $a1, 1\n#else\n    addiu $a1, $a1, 1\n    bne   $a0, $v1, .L80323A38\n     sb    $v0, -1($a1)\n#endif\n.L80323A4C:\n    jr    $ra\n     move  $v0, $a3\n\n.L80323A54:\n#ifdef VERSION_CN\n    beqz  $v0, .L80323AB8\n     nop\n    li    $at, 1\n    beq   $v0, $at, .L80323A9C\n     nop\n    li    $at, 2\n    beq   $v0, $at, .L80323A88\n     nop\n    lb    $v0, ($a0)\n    addiu $a0, $a0, 1\n    sb    $v0, ($a1)\n    addiu $a1, $a1, 1\n    b     .L80323AB8\n     addiu $a2, $a2, -1\n.L80323A88:\n    lh    $v0, ($a0)\n#else\n    beqz  $v0, .L80323AB8\n     li    $at, 1\n    beq   $v0, $at, .L80323A9C\n     li    $at, 2\n    beql  $v0, $at, .L80323A88\n     lh    $v0, ($a0)\n    lb    $v0, ($a0)\n    addiu $a0, $a0, 1\n    addiu $a1, $a1, 1\n    addiu $a2, $a2, -1\n    b     .L80323AB8\n     sb    $v0, -1($a1)\n    lh    $v0, ($a0)\n.L80323A88:\n#endif\n    addiu $a0, $a0, 2\n#ifdef VERSION_CN\n    sh    $v0, ($a1)\n    addiu $a1, $a1, 2\n    b     .L80323AB8\n     addiu $a2, $a2, -2\n#else\n    addiu $a1, $a1, 2\n    addiu $a2, $a2, -2\n    b     .L80323AB8\n     sh    $v0, -2($a1)\n#endif\n.L80323A9C:\n    lb    $v0, ($a0)\n    lh    $v1, 1($a0)\n    addiu $a0, $a0, 3\n#ifdef VERSION_CN\n    sb    $v0, ($a1)\n    sh    $v1, 1($a1)\n#endif\n    addiu $a1, $a1, 3\n    addiu $a2, $a2, -3\n#ifndef VERSION_CN\n    sb    $v0, -3($a1)\n    sh    $v1, -2($a1)\n#endif\n.L80323AB8:\n    slti  $at, $a2, 0x20\n#ifdef VERSION_CN\n    bnez  $at, .L80323B14\n     nop\n#else\n    bnezl $at, .L80323B18\n     slti  $at, $a2, 0x10\n#endif\n    lw    $v0, ($a0)\n    lw    $v1, 4($a0)\n    lw    $t0, 8($a0)\n    lw    $t1, 0xc($a0)\n    lw    $t2, 0x10($a0)\n    lw    $t3, 0x14($a0)\n    lw    $t4, 0x18($a0)\n    lw    $t5, 0x1c($a0)\n    addiu $a0, $a0, 0x20\n#ifdef VERSION_CN\n    sw    $v0, ($a1)\n    sw    $v1, 4($a1)\n    sw    $t0, 8($a1)\n    sw    $t1, 0xc($a1)\n    sw    $t2, 0x10($a1)\n    sw    $t3, 0x14($a1)\n    sw    $t4, 0x18($a1)\n    sw    $t5, 0x1c($a1)\n#endif\n    addiu $a1, $a1, 0x20\n#ifndef VERSION_CN\n    addiu $a2, $a2, -0x20\n    sw    $v0, -0x20($a1)\n    sw    $v1, -0x1c($a1)\n    sw    $t0, -0x18($a1)\n    sw    $t1, -0x14($a1)\n    sw    $t2, -0x10($a1)\n    sw    $t3, -0xc($a1)\n    sw    $t4, -8($a1)\n#endif\n    b     .L80323AB8\n#ifdef VERSION_CN\n     addiu $a2, $a2, -0x20\n#else\n     sw    $t5, -4($a1)\n#endif\n.L80323B14:\n    slti  $at, $a2, 0x10\n.L80323B18:\n#ifdef VERSION_CN\n    bnez  $at, .L80323B50\n\t nop\n#else\n    bnezl $at, .L80323B54\n     slti  $at, $a2, 4\n#endif\n    lw    $v0, ($a0)\n    lw    $v1, 4($a0)\n    lw    $t0, 8($a0)\n    lw    $t1, 0xc($a0)\n    addiu $a0, $a0, 0x10\n#ifdef VERSION_CN\n    sw    $v0, ($a1)\n    sw    $v1, 4($a1)\n    sw    $t0, 8($a1)\n    sw    $t1, 0xc($a1)\n#endif\n    addiu $a1, $a1, 0x10\n#ifndef VERSION_CN\n    addiu $a2, $a2, -0x10\n    sw    $v0, -0x10($a1)\n    sw    $v1, -0xc($a1)\n    sw    $t0, -8($a1)\n#endif\n    b     .L80323B14\n#ifdef VERSION_CN\n     addiu $a2, $a2, -0x10\n#else\n     sw    $t1, -4($a1)\n#endif\n.L80323B50:\n    slti  $at, $a2, 4\n.L80323B54:\n    bnez  $at, .L80323A2C\n     nop\n    lw    $v0, ($a0)\n    addiu $a0, $a0, 4\n#ifdef VERSION_CN\n    sw    $v0, ($a1)\n#endif\n    addiu $a1, $a1, 4\n#ifndef VERSION_CN\n    addiu $a2, $a2, -4\n#endif\n    b     .L80323B50\n#ifdef VERSION_CN\n     addiu $a2, $a2, -4\n#else\n     sw    $v0, -4($a1)\n    slti  $at, $a2, 0x10\n#endif\n.L80323B78:\n    add   $a0, $a0, $a2\n#ifdef VERSION_CN\n    add   $a1, $a1, $a2\n    slti  $at, $a2, 0x10\n#endif\n    bnez  $at, .L80323B94\n#ifdef VERSION_CN\n     nop\n#else\n     add   $a1, $a1, $a2\n#endif\n    andi  $v0, $a0, 3\n    andi  $v1, $a1, 3\n    beq   $v0, $v1, .L80323BC4\n     nop\n.L80323B94:\n    beqz  $a2, .L80323A4C\n     nop\n    addiu $a0, $a0, -1\n    addiu $a1, $a1, -1\n    subu  $v1, $a0, $a2\n.L80323BA8:\n    lb    $v0, ($a0)\n    addiu $a0, $a0, -1\n#ifdef VERSION_CN\n    sb    $v0, 0($a1)\n#else\n    addiu $a1, $a1, -1\n#endif\n    bne   $a0, $v1, .L80323BA8\n#ifdef VERSION_CN\n     addiu $a1, $a1, -1\n#else\n     sb    $v0, 1($a1)\n#endif\n    jr    $ra\n     move  $v0, $a3\n\n.L80323BC4:\n    beqz  $v0, .L80323C28\n#ifdef VERSION_CN\n     nop\n#endif\n     li    $at, 3\n    beq   $v0, $at, .L80323C0C\n#ifdef VERSION_CN\n     nop\n#endif\n     li    $at, 2\n#ifdef VERSION_CN\n    beq   $v0, $at, .L80323BF4\n\t nop\n#else\n    beql  $v0, $at, .L80323BF8\n     lh    $v0, -2($a0)\n#endif\n    lb    $v0, -1($a0)\n    addiu $a0, $a0, -1\n#ifdef VERSION_CN\n    sb    $v0, -1($a1)\n#endif\n    addiu $a1, $a1, -1\n#ifndef VERSION_CN\n    addiu $a2, $a2, -1\n#endif\n    b     .L80323C28\n#ifdef VERSION_CN\n     addiu $a2, $a2, -1\n#else\n     sb    $v0, ($a1)\n#endif\n.L80323BF4:\n    lh    $v0, -2($a0)\n.L80323BF8:\n    addiu $a0, $a0, -2\n#ifdef VERSION_CN\n    sh    $v0, -2($a1)\n#endif\n    addiu $a1, $a1, -2\n#ifndef VERSION_CN\n    addiu $a2, $a2, -2\n#endif\n    b     .L80323C28\n#ifdef VERSION_CN\n     addiu $a2, $a2, -2\n#else\n     sh    $v0, ($a1)\n#endif\n.L80323C0C:\n    lb    $v0, -1($a0)\n    lh    $v1, -3($a0)\n    addiu $a0, $a0, -3\n#ifdef VERSION_CN\n    sb    $v0, -1($a1)\n    sh    $v1, -3($a1)\n    addiu $a1, $a1, -3\n    addiu $a2, $a2, -3\n#else\n    addiu $a1, $a1, -3\n    addiu $a2, $a2, -3\n    sb    $v0, 2($a1)\n    sh    $v1, ($a1)\n#endif\n.L80323C28:\n    slti  $at, $a2, 0x20\n#ifdef VERSION_CN\n    bnez  $at, .L80323C84\n\t nop\n#else\n    bnezl $at, .L80323C88\n     slti  $at, $a2, 0x10\n#endif\n    lw    $v0, -4($a0)\n    lw    $v1, -8($a0)\n    lw    $t0, -0xc($a0)\n    lw    $t1, -0x10($a0)\n    lw    $t2, -0x14($a0)\n    lw    $t3, -0x18($a0)\n    lw    $t4, -0x1c($a0)\n    lw    $t5, -0x20($a0)\n    addiu $a0, $a0, -0x20\n#ifdef VERSION_CN\n    sw    $v0, -4($a1)\n    sw    $v1, -8($a1)\n    sw    $t0, -0xc($a1)\n    sw    $t1, -0x10($a1)\n    sw    $t2, -0x14($a1)\n    sw    $t3, -0x18($a1)\n    sw    $t4, -0x1c($a1)\n    sw    $t5, -0x20($a1)\n    addiu $a1, $a1, -0x20\n#else\n    addiu $a1, $a1, -0x20\n    addiu $a2, $a2, -0x20\n    sw    $v0, 0x1c($a1)\n    sw    $v1, 0x18($a1)\n    sw    $t0, 0x14($a1)\n    sw    $t1, 0x10($a1)\n    sw    $t2, 0xc($a1)\n    sw    $t3, 8($a1)\n    sw    $t4, 4($a1)\n#endif\n    b     .L80323C28\n#ifdef VERSION_CN\n     addiu  $a2, $a2, -0x20\n#else\n     sw    $t5, ($a1)\n#endif\n.L80323C84:\n    slti  $at, $a2, 0x10\n.L80323C88:\n#ifdef VERSION_CN\n    bnez $at, .L80323CC0\n     nop\n#else\n    bnezl $at, .L80323CC4\n     slti  $at, $a2, 4\n#endif\n    lw    $v0, -4($a0)\n    lw    $v1, -8($a0)\n    lw    $t0, -0xc($a0)\n    lw    $t1, -0x10($a0)\n    addiu $a0, $a0, -0x10\n#ifdef VERSION_CN\n    sw    $v0, -4($a1)\n    sw    $v1, -8($a1)\n    sw    $t0, -0xc($a1)\n    sw    $t1, -0x10($a1)\n    addiu $a1, $a1, -0x10\n#else\n    addiu $a1, $a1, -0x10\n    addiu $a2, $a2, -0x10\n    sw    $v0, 0xc($a1)\n    sw    $v1, 8($a1)\n    sw    $t0, 4($a1)\n#endif\n    b     .L80323C84\n#ifdef VERSION_CN\n     addiu $a2, $a2, -0x10\n#else\n     sw    $t1, ($a1)\n#endif\n.L80323CC0:\n    slti  $at, $a2, 4\n.L80323CC4:\n    bnez  $at, .L80323B94\n     nop\n    lw    $v0, -4($a0)\n    addiu $a0, $a0, -4\n#ifdef VERSION_CN\n    sw    $v0, -4($a1)\n#endif\n    addiu $a1, $a1, -4\n#ifndef VERSION_CN\n    addiu $a2, $a2, -4\n#endif\n    b     .L80323CC0\n#ifdef VERSION_CN\n     addiu $a2, $a2, -4\n#else\n     sw    $v0, ($a1)\n    nop\n    nop\n    nop\n#endif\n"
  },
  {
    "path": "lib/asm/bzero.s",
    "content": ".set noreorder // don't insert nops after branches\n\n#include \"macros.inc\"\n\n// this file is probably handwritten\n\n//TODO There seem to be patterns in these iQue diffs. Can we figure out what's causing them? Could this have been written in C? See also bcopy.s.\n\n.section .text, \"ax\"\n\nglabel bzero\n\n#ifdef VERSION_CN\n    negu  $v1, $a0\n    blt  $a1, 0xc, .L80303790\n     nop\n    andi  $v1, $v1, 3\n    beqz  $v1, .L80303734\n     subu  $a1, $a1, $v1\n    swl   $zero, ($a0)\n    addu  $a0, $a0, $v1\n.L80303734:\n    and   $a3, $a1, -32\n    beqz  $a3, .L80303770\n     subu  $a1, $a1, $a3\n    addu  $a3, $a3, $a0\n.L80303748:\n    sw    $zero, ($a0)\n    sw    $zero, 4($a0)\n    sw    $zero, 8($a0)\n    sw    $zero, 0xc($a0)\n    addiu $a0, $a0, 0x20\n    sw    $zero, -0x10($a0)\n    sw    $zero, -0xc($a0)\n    sw    $zero, -8($a0)\n    bne   $a0, $a3, .L80303748\n     sw    $zero, -4($a0)\n.L80303770:\n    and   $a3, $a1, -4\n    beqz  $a3, .L80303790\n     subu  $a1, $a1, $a3\n    addu  $a3, $a3, $a0\n.L80303784:\n    addiu $a0, $a0, 4\n    bne   $a0, $a3, .L80303784\n     sw    $zero, -4($a0)\n.L80303790:\n    blez  $a1, .L803037A8\n     nop\n    addu  $a1, $a1, $a0\n.L8030379C:\n    addiu $a0, $a0, 1\n    bne   $a0, $a1, .L8030379C\n     sb    $zero, -1($a0)\n.L803037A8:\n    jr    $ra\n     nop\n#else\n    blt  $a1, 0xc, .L803236BC\n     negu  $v1, $a0\n    andi  $v1, $v1, 3\n    beqz  $v1, .L80323660\n     subu  $a1, $a1, $v1\n    swl   $zero, ($a0)\n    addu  $a0, $a0, $v1\n.L80323660:\n    and   $a3, $a1, -32\n    beqz  $a3, .L8032369C\n     subu  $a1, $a1, $a3\n    addu  $a3, $a3, $a0\n.L80323674:\n    addiu $a0, $a0, 0x20\n    sw    $zero, -0x20($a0)\n    sw    $zero, -0x1c($a0)\n    sw    $zero, -0x18($a0)\n    sw    $zero, -0x14($a0)\n    sw    $zero, -0x10($a0)\n    sw    $zero, -0xc($a0)\n    sw    $zero, -8($a0)\n    bne   $a0, $a3, .L80323674\n     sw    $zero, -4($a0)\n.L8032369C:\n    and   $a3, $a1, -4\n    beqz  $a3, .L803236BC\n     subu  $a1, $a1, $a3\n    addu  $a3, $a3, $a0\n.L803236B0:\n    addiu $a0, $a0, 4\n    bne   $a0, $a3, .L803236B0\n     sw    $zero, -4($a0)\n.L803236BC:\n    blez  $a1, .L803236D4\n     nop\n    addu  $a1, $a1, $a0\n.L803236C8:\n    addiu $a0, $a0, 1\n    bne   $a0, $a1, .L803236C8\n     sb    $zero, -1($a0)\n.L803236D4:\n    jr    $ra\n#endif\n\n"
  },
  {
    "path": "lib/asm/guMtxF2L.s",
    "content": ".set noat\n.set noreorder // don't insert nops after branches\n\n#include \"macros.inc\"\n\n\n.section .text, \"ax\"\n\n#ifdef VERSION_CN\n\n.balign 32\n\nglabel guMtxF2L\n    li    $at, 0x47800000 // 65536.000000\n    mtc1  $at, $f0\n    lui   $t9, 0xffff\n    addiu $t8, $a1, 0x20\n.L80306C70:\n    lwc1  $f4, ($a0)\n    mul.s $f6, $f4, $f0\n    trunc.w.s $f8, $f6\n    lwc1  $f10, 4($a0)\n    mul.s $f16, $f10, $f0\n    trunc.w.s $f18, $f16\n    mfc1  $t0, $f8\n    mfc1  $t1, $f18\n    and   $t2, $t0, $t9\n    srl   $t3, $t1, 0x10\n    or    $t4, $t2, $t3\n    sw    $t4, ($a1)\n    sll   $t5, $t0, 0x10\n    andi  $t6, $t1, 0xffff\n    or    $t7, $t5, $t6\n    sw    $t7, 0x20($a1)\n    addiu $a1, $a1, 4\n    bne   $a1, $t8, .L80306C70\n     addiu $a0, $a0, 8\n    jr    $ra\n     nop\n\n    nop\n    nop\n    nop\n    nop\n\n#endif\n"
  },
  {
    "path": "lib/asm/guMtxIdentF.s",
    "content": ".set noreorder // don't insert nops after branches\n\n#include \"macros.inc\"\n\n\n.section .text, \"ax\"\n\n#ifdef VERSION_CN\n\n.balign 32\n\nglabel guMtxIdentF\n    lui   $t0, 0x3f80\n    sw    $t0, ($a0)\n    sw    $zero, 4($a0)\n    sw    $zero, 8($a0)\n    sw    $zero, 0xc($a0)\n    sw    $zero, 0x10($a0)\n    sw    $t0, 0x14($a0)\n    sw    $zero, 0x18($a0)\n    sw    $zero, 0x1c($a0)\n    sw    $zero, 0x20($a0)\n    sw    $zero, 0x24($a0)\n    sw    $t0, 0x28($a0)\n    sw    $zero, 0x2c($a0)\n    sw    $zero, 0x30($a0)\n    sw    $zero, 0x34($a0)\n    sw    $zero, 0x38($a0)\n    jr    $ra\n     sw    $t0, 0x3c($a0)\n\n#endif\n"
  },
  {
    "path": "lib/asm/guNormalize.s",
    "content": ".set noreorder // don't insert nops after branches\n\n#include \"macros.inc\"\n\n\n.section .text, \"ax\"\n\n#ifdef VERSION_CN\n\nglabel guNormalize\n    lwc1  $f4, ($a0)\n    lwc1  $f6, ($a1)\n    lwc1  $f8, ($a2)\n    mul.s $f10, $f4, $f4\n    li    $t0, 0x3F800000 # 1.000000\n    mul.s $f16, $f6, $f6\n    add.s $f18, $f10, $f16\n    mul.s $f16, $f8, $f8\n    add.s $f10, $f16, $f18\n    mtc1  $t0, $f18\n    sqrt.s $f16, $f10\n    div.s $f10, $f18, $f16\n    mul.s $f16, $f4, $f10\n    nop\n    mul.s $f18, $f6, $f10\n    nop\n    mul.s $f4, $f8, $f10\n    swc1  $f16, ($a0)\n    swc1  $f18, ($a1)\n    jr    $ra\n     swc1  $f4, ($a2)\n\n#endif\n"
  },
  {
    "path": "lib/asm/guScale.s",
    "content": ".set noat\n.set noreorder // don't insert nops after branches\n\n#include \"macros.inc\"\n\n\n.section .text, \"ax\"\n\n#ifdef VERSION_CN\n\n.balign 32\n\nglabel guScale\n    li    $at, 0x47800000 // 65536.000000\n    mtc1  $at, $f4\n    mtc1  $a1, $f6\n    mul.s $f8, $f6, $f4\n    trunc.w.s $f10, $f8\n    mfc1  $t1, $f10\n    srl   $t2, $t1, 0x10\n    sll   $t0, $t2, 0x10\n    sw    $t0, ($a0)\n    sll   $t2, $t1, 0x10\n    sw    $t2, 0x20($a0)\n    mtc1  $a2, $f6\n    mul.s $f8, $f6, $f4\n    trunc.w.s $f10, $f8\n    mfc1  $t1, $f10\n    srl   $t0, $t1, 0x10\n    sw    $t0, 8($a0)\n    andi  $t2, $t1, 0xffff\n    sw    $t2, 0x28($a0)\n    mtc1  $a3, $f6\n    mul.s $f8, $f6, $f4\n    trunc.w.s $f10, $f8\n    mfc1  $t1, $f10\n    srl   $t2, $t1, 0x10\n    sll   $t0, $t2, 0x10\n    sw    $t0, 0x14($a0)\n    sll   $t2, $t1, 0x10\n    sw    $t2, 0x34($a0)\n    li    $t0, 1\n    sw    $t0, 0x1c($a0)\n    sw    $zero, 4($a0)\n    sw    $zero, 0xc($a0)\n    sw    $zero, 0x10($a0)\n    sw    $zero, 0x18($a0)\n    sw    $zero, 0x24($a0)\n    sw    $zero, 0x2c($a0)\n    sw    $zero, 0x30($a0)\n    sw    $zero, 0x38($a0)\n    jr    $ra\n     sw    $zero, 0x3c($a0)\n\n#endif\n"
  },
  {
    "path": "lib/asm/guTranslate.s",
    "content": ".set noat\n.set noreorder // don't insert nops after branches\n\n#include \"macros.inc\"\n\n\n.section .text, \"ax\"\n\n#ifdef VERSION_CN\n\n.balign 16\n\nglabel guTranslate\n    li    $at, 0x47800000 // 65536.000000\n    mtc1  $at, $f4\n    mtc1  $a1, $f6\n    mul.s $f8, $f6, $f4\n    trunc.w.s $f10, $f8\n    mfc1  $t1, $f10\n    mtc1  $a2, $f6\n    mul.s $f8, $f6, $f4\n    trunc.w.s $f10, $f8\n    mfc1  $t3, $f10\n    srl   $t2, $t1, 0x10\n    sll   $t0, $t2, 0x10\n    srl   $t2, $t3, 0x10\n    or    $t0, $t0, $t2\n    sw    $t0, 0x18($a0)\n    sll   $t0, $t1, 0x10\n    sll   $t2, $t3, 0x10\n    srl   $t2, $t2, 0x10\n    or    $t0, $t0, $t2\n    sw    $t0, 0x38($a0)\n    mtc1  $a3, $f6\n    mul.s $f8, $f6, $f4\n    trunc.w.s $f10, $f8\n    mfc1  $t1, $f10\n    srl   $t2, $t1, 0x10\n    sll   $t0, $t2, 0x10\n    addiu $t0, $t0, 1\n    sw    $t0, 0x1c($a0)\n    sll   $t2, $t1, 0x10\n    sw    $t2, 0x3c($a0)\n    sw    $zero, ($a0)\n    sw    $zero, 4($a0)\n    sw    $zero, 8($a0)\n    sw    $zero, 0xc($a0)\n    sw    $zero, 0x10($a0)\n    sw    $zero, 0x14($a0)\n    sw    $zero, 0x20($a0)\n    sw    $zero, 0x24($a0)\n    sw    $zero, 0x28($a0)\n    sw    $zero, 0x2c($a0)\n    sw    $zero, 0x30($a0)\n    sw    $zero, 0x34($a0)\n    lui   $t0, 1\n    ori   $t0, $t0, 0\n    sw    $t0, ($a0)\n    sw    $t0, 0x14($a0)\n    lui   $t0, (0x00000001 >> 16) # lui $t0, 0\n    ori   $t0, (0x00000001 & 0xFFFF) # ori $t0, $t0, 1\n    jr    $ra\n     sw    $t0, 8($a0)\n\n#endif\n"
  },
  {
    "path": "lib/asm/iQueKernelCalls.s",
    "content": ".set noat\n.set noreorder // don't insert nops after branches\n\n#include \"macros.inc\"\n\n.macro def label, num\n    glabel \\label\n        li    $v0, \\num\n        lui   $t0, (0xA4300014 >> 16)\n        ori   $t0, (0xA4300014 & 0xFFFF)\n        lw    $t1, ($t0) // traps the iQue OS and performs the function\n        nop\n        jr $ra\n         nop\n.endm\n\n\n.section .text, \"ax\"\n\ndef skGetId, 0x0\ndef skLaunchSetup, 0x1\ndef skLaunch, 0x2\ndef skRecryptListValid, 0x3\ndef skRecryptBegin, 0x4\ndef skRecryptData, 0x5\ndef skRecryptComputeState, 0x6\ndef skRecryptEnd, 0x7\ndef skSignHash, 0x8\ndef skVerifyHash, 0x9\ndef skGetConsumption, 0xa\ndef skAdvanceTicketWindow, 0xb\ndef skSetLimit, 0xc\ndef skExit, 0xd\ndef skKeepAlive, 0xe\n\n// developer calls\ndef sk0f, 0x0f\ndef sk10, 0x10\ndef sk11, 0x11\ndef sk12, 0x12\ndef sk13, 0x13\ndef sk14, 0x14\n"
  },
  {
    "path": "lib/asm/llmuldiv_gcc.s",
    "content": "// assembler directives\n.set noat      // allow manual use of $at\n.set noreorder // don't insert nops after branches\n\n#include \"macros.inc\"\n\n#ifndef VERSION_CN\n\n\n.section .text, \"ax\"\n\n/* -------------------------------------------------------------------------------------- */\n/* need to asm these functions because lib32gcc-7-dev-mips-cross does not exist so we     */\n/* cannot naturally link a libgcc variant for this target given this architecture and     */\n/* compiler. Until we have a good workaround with a gcc target that doesn't involve       */\n/* assuming a 32-bit to 64-bit change, we have to encode these functions as raw assembly  */\n/* for it to compile.                                                                     */\n/* -------------------------------------------------------------------------------------- */\n\n/* TODO: Is there a non-insane way to fix this hack that doesn't involve the user compiling */\n/* a library themselves?                                                                    */\nglabel __umoddi3\n    sw    $a0, ($sp)\n    sw    $a1, 4($sp)\n    sw    $a2, 8($sp)\n    sw    $a3, 0xc($sp)\n    ld    $t7, 8($sp)\n    ld    $t6, ($sp)\n    ddivu $zero, $t6, $t7\n    bnez  $t7, .L80324144\n     nop\n    break 7\n.L80324144:\n    mfhi  $v0\n    dsll32 $v1, $v0, 0\n    dsra32 $v1, $v1, 0\n    jr    $ra\n     dsra32 $v0, $v0, 0\n\nglabel __udivdi3\n    sw    $a0, ($sp)\n    sw    $a1, 4($sp)\n    sw    $a2, 8($sp)\n    sw    $a3, 0xc($sp)\n    ld    $t7, 8($sp)\n    ld    $t6, ($sp)\n    ddivu $zero, $t6, $t7\n    bnez  $t7, .L80324180\n     nop\n    break 7\n.L80324180:\n    mflo  $v0\n    dsll32 $v1, $v0, 0\n    dsra32 $v1, $v1, 0\n    jr    $ra\n     dsra32 $v0, $v0, 0\n\nglabel __moddi3\n    sw    $a0, ($sp)\n    sw    $a1, 4($sp)\n    sw    $a2, 8($sp)\n    sw    $a3, 0xc($sp)\n    ld    $t7, 8($sp)\n    ld    $t6, ($sp)\n    ddivu $zero, $t6, $t7\n    bnez  $t7, .L803241E8\n     nop\n    break 7\n.L803241E8:\n    mfhi  $v0\n    dsll32 $v1, $v0, 0\n    dsra32 $v1, $v1, 0\n    jr    $ra\n     dsra32 $v0, $v0, 0\n\nglabel __divdi3\n    sw    $a0, ($sp)\n    sw    $a1, 4($sp)\n    sw    $a2, 8($sp)\n    sw    $a3, 0xc($sp)\n    ld    $t7, 8($sp)\n    ld    $t6, ($sp)\n    ddiv  $zero, $t6, $t7\n    nop\n    bnez  $t7, .L80324228\n     nop\n    break 7\n.L80324228:\n    daddiu $at, $zero, -1\n    bne   $t7, $at, .L80324244\n     daddiu $at, $zero, 1\n    dsll32 $at, $at, 0x1f\n    bne   $t6, $at, .L80324244\n     nop\n    break 6\n.L80324244:\n    mflo  $v0\n    dsll32 $v1, $v0, 0\n    dsra32 $v1, $v1, 0\n    jr    $ra\n     dsra32 $v0, $v0, 0\n\n#endif\n"
  },
  {
    "path": "lib/asm/osGetCount.s",
    "content": ".set noreorder // don't insert nops after branches\n\n#include \"macros.inc\"\n\n.section .text, \"ax\"\n\n#ifdef VERSION_CN\n\nglabel osGetCount\n    addiu $sp, $sp, -0x38\n    sd    $ra, 0x30($sp)\n    sd    $fp, 0x28($sp)\n    jal   __osDisableInt\n     move  $fp, $sp\n    sw    $v0, 0x24($fp)\n    mfc0  $a1, $9\n    sw    $a1, 0x20($fp)\n    lw    $v0, 0x20($fp)\n    lui   $v1, %hi(sLastHighestCount) # $v1, 0x8032\n    lw    $v1, %lo(sLastHighestCount)($v1)\n    sltu  $v0, $v0, $v1\n    beqz  $v0, .L80304FCC\n     nop\n    lui   $v0, %hi(sNumCountOverflows) # $v0, 0x8032\n    lw    $v0, %lo(sNumCountOverflows)($v0)\n    addiu $v1, $v0, 1\n    sw    $v1, sNumCountOverflows\n.L80304FCC:\n    lw    $v0, 0x20($fp)\n    sw    $v0, sLastHighestCount\n    lui   $v0, %hi(sNumCountOverflows) // $v0, 0x8032\n    lwu   $v0, %lo(sNumCountOverflows)($v0)\n    dsll32 $v1, $v0, 0\n    lwu   $a0, 0x20($fp)\n    or    $v0, $v1, $a0\n    move  $a0, $v0\n    dsll  $v1, $a0, 5\n    dsubu $v1, $v1, $v0\n    dsll  $a0, $v1, 2\n    daddu $a0, $a0, $v0\n.set noat // gas seems to add an extra mflo $zero after, if we don't manually use $at\n    li $at, 192\n    ddivu $zero, $a0, $at\n.set at\n    mflo  $v0\n    dsll32 $v0, $v0, 0\n    dsra32 $v0, $v0, 0\n    sw    $v0, 0x20($fp)\n    lw    $v0, 0x20($fp)\n    lui   $v1, %hi(sLastHighestCount2) // $v1, 0x8032\n    lw    $v1, %lo(sLastHighestCount2)($v1)\n    sltu  $v0, $v0, $v1\n    beqz  $v0, .L80305044\n     nop\n    lui   $v0, %hi(sNumCountOverflows2) // $v0, 0x8032\n    lw    $v0, %lo(sNumCountOverflows2)($v0)\n    addiu $v1, $v0, 1\n    sw    $v1, sNumCountOverflows2\n.L80305044:\n    lw    $v0, 0x20($fp)\n    sw    $v0, sLastHighestCount2\n    jal   __osRestoreInt\n     lw    $a0, 0x24($fp)\n    lw    $v1, 0x20($fp)\n    j     .L80305064\n     move  $v0, $v1\n.L80305064:\n    move  $sp, $fp\n    ld    $ra, 0x30($sp)\n    ld    $fp, 0x28($sp)\n    jr    $ra\n     addiu $sp, $sp, 0x38\n\n#else\n\nglabel osGetCount\n    mfc0  $v0, $9\n    jr    $ra\n     nop\n\n    nop\n\n#endif\n"
  },
  {
    "path": "lib/asm/osInvalDCache.s",
    "content": ".set noat      // allow manual use of $at\n.set noreorder // don't insert nops after branches\n\n#include \"macros.inc\"\n\n\n.section .text, \"ax\"\n\nglabel osInvalDCache\n    blez  $a1, .L80323500\n     nop\n    li    $t3, 8192\n    sltu  $at, $a1, $t3\n    beqz  $at, .L80323508\n     nop\n    move  $t0, $a0\n    addu  $t1, $a0, $a1\n    sltu  $at, $t0, $t1\n    beqz  $at, .L80323500\n     nop\n#ifdef VERSION_CN\n    addiu $t1, $t1, -0x10\n    andi  $t2, $t0, 0xf\n    beqz  $t2, .L803234D0\n     nop\n#else\n    andi  $t2, $t0, 0xf\n    beqz  $t2, .L803234D0\n     addiu $t1, $t1, -0x10\n#endif\n    subu  $t0, $t0, $t2\n    cache 0x15, ($t0)\n    sltu  $at, $t0, $t1\n    beqz  $at, .L80323500\n     nop\n    addiu $t0, $t0, 0x10\n.L803234D0:\n    andi  $t2, $t1, 0xf\n    beqz  $t2, .L803234F0\n     nop\n    subu  $t1, $t1, $t2\n    cache 0x15, 0x10($t1)\n    sltu  $at, $t1, $t0\n    bnez  $at, .L80323500\n     nop\n.L803234F0:\n    cache 0x11, ($t0)\n    sltu  $at, $t0, $t1\n    bnez  $at, .L803234F0\n     addiu $t0, $t0, 0x10\n.L80323500:\n    jr    $ra\n     nop\n\n.L80323508:\n    li    $t0, K0BASE\n    addu  $t1, $t0, $t3\n    addiu $t1, $t1, -0x10\n.L80323514:\n    cache 1, ($t0)\n    sltu  $at, $t0, $t1\n    bnez  $at, .L80323514\n     addiu $t0, $t0, 0x10\n    jr    $ra\n     nop\n"
  },
  {
    "path": "lib/asm/osInvalICache.s",
    "content": ".set noat      // allow manual use of $at\n.set noreorder // don't insert nops after branches\n\n#include \"macros.inc\"\n\n\n.section .text, \"ax\"\n\nglabel osInvalICache\n    blez  $a1, .L80323728\n     nop\n    li    $t3, 16384\n    sltu  $at, $a1, $t3\n    beqz  $at, .L80323730\n     nop\n    move  $t0, $a0\n    addu  $t1, $a0, $a1\n    sltu  $at, $t0, $t1\n    beqz  $at, .L80323728\n     nop\n#ifdef VERSION_CN\n    addiu $t1, $t1, -0x20\n    andi  $t2, $t0, 0x1f\n#else\n    andi  $t2, $t0, 0x1f\n    addiu $t1, $t1, -0x20\n#endif\n    subu  $t0, $t0, $t2\n.L80323718:\n    cache 0x10, ($t0)\n    sltu  $at, $t0, $t1\n    bnez  $at, .L80323718\n     addiu $t0, $t0, 0x20\n.L80323728:\n    jr    $ra\n     nop\n\n.L80323730:\n    li    $t0, K0BASE\n    addu  $t1, $t0, $t3\n    addiu $t1, $t1, -0x20\n.L8032373C:\n    cache 0, ($t0)\n    sltu  $at, $t0, $t1\n    bnez  $at, .L8032373C\n     addiu $t0, $t0, 0x20\n    jr    $ra\n     nop\n"
  },
  {
    "path": "lib/asm/osMapTLB.s",
    "content": ".set noreorder // don't insert nops after branches\n\n#include \"macros.inc\"\n\n\n.section .text, \"ax\"\n\n// This file is handwritten\n\n// void osMapTLB(s32 index, OSPageMask pm, void *vaddr, u32 evenpaddr, u32 oddpaddr, s32 asid);\nglabel osMapTLB\n    mfc0  $t0, $10\n    mtc0  $a0, $0\n    mtc0  $a1, $5\n    lw    $t1, 0x14($sp) #asid\n    beq   $t1, -1, .L803214D8\n    li    $t4, 1\n    li    $t2, 30\n    b     .L803214DC\n    or    $a2, $a2, $t1 #vaddr\n.L803214D8:\n    li    $t2, 31\n.L803214DC:\n    mtc0  $a2, $10 #vaddr\n    beq   $a3, -1, .L80321500 #even paddr\n    nop\n    srl   $t3, $a3, 6   #evenpaddr\n    or    $t3, $t3, $t2\n    mtc0  $t3, $2\n    b     .L80321504\n    nop\n.L80321500:\n    mtc0  $t4, $2\n.L80321504:\n    lw    $t3, 0x10($sp) #oddpaddr\n    beq   $t3, -1, .L80321528\n    nop\n    srl   $t3, $t3, 6\n    or    $t3, $t3, $t2\n    mtc0  $t3, $3\n    b     .L80321540\n    nop\n.L80321528:\n    mtc0  $t4, $3\n    bne   $a3, -1, .L80321540 #evenpaddr\n    nop\n    lui   $t3, 0x8000\n    mtc0  $t3, $10\n.L80321540:\n    nop\n    tlbwi\n    nop\n    nop\n    nop\n    nop\n    mtc0  $t0, $10\n    jr    $ra\n    nop   #file gets padded but\n    nop\n    nop\n    nop\n\n"
  },
  {
    "path": "lib/asm/osMapTLBRdb.s",
    "content": ".set noat      // allow manual use of $at\n.set noreorder // don't insert nops after branches\n\n#include \"macros.inc\"\n\n\n.section .text, \"ax\"\n\nglabel osMapTLBRdb\n    mfc0  $t0, $10\n    li    $t1, 31\n    mtc0  $t1, $0\n    mtc0  $zero, $5\n    li    $t2, 23\n    lui   $t1, 0xc000\n    mtc0  $t1, $10\n    lui   $t1, 0x8000\n    srl   $t3, $t1, 6\n    or    $t3, $t3, $t2\n    mtc0  $t3, $2\n    li    $t1, 1\n    mtc0  $t1, $3\n    nop\n    tlbwi\n    nop\n    nop\n    nop\n    nop\n    mtc0  $t0, $10\n    jr    $ra\n     nop\n\n    nop\n    nop\n\n"
  },
  {
    "path": "lib/asm/osSetIntMask.s",
    "content": ".set noat      // allow manual use of $at\n.set noreorder // don't insert nops after branches\n\n#include \"macros.inc\"\n\n#include <PR/R4300.h>\n#include <PR/rcp.h>\n#include <PR/os.h>\n\n.section .text, \"ax\"\n\nglabel osSetIntMask\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    mfc0  $t4, $12\n    andi  $v0, $t4, OS_IM_CPU\n    lui   $t0, %hi(__OSGlobalIntMask) // $t0, 0x8030\n    addiu $t0, %lo(__OSGlobalIntMask) // addiu $t0, $t0, 0x208c\n    lw    $t3, ($t0)\n    li    $at, 0xFFFFFFFF\n    xor   $t0, $t3, $at\n    andi  $t0, $t0, SR_IMASK\n    or    $v0, $v0, $t0\n#else\n    mfc0  $t1, $12\n    andi  $v0, $t1, OS_IM_CPU\n#endif\n    lui   $t2, %hi(PHYS_TO_K1(MI_INTR_MASK_REG)) // $t2, 0xa430\n    lw    $t2, %lo(PHYS_TO_K1(MI_INTR_MASK_REG))($t2)\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    beqz  $t2, .L80200074\n    srl   $t1, $t3, 0x10\n    li    $at, 0xFFFFFFFF\n    xor   $t1, $t1, $at\n    andi  $t1, $t1, 0x3f\n    or    $t2, $t2, $t1\n.L80200074:\n#endif\n    sll   $t2, $t2, 0x10\n    or    $v0, $v0, $t2\n    lui   $at, 0x3f\n    and   $t0, $a0, $at\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    and   $t0, $t0, $t3\n#endif\n    srl   $t0, $t0, 0xf\n    lui   $t2, %hi(__osRcpImTable)\n    addu  $t2, $t2, $t0\n    lhu   $t2, %lo(__osRcpImTable)($t2)\n    lui   $at, %hi(PHYS_TO_K1(MI_INTR_MASK_REG)) // $at, 0xa430\n    sw    $t2, %lo(PHYS_TO_K1(MI_INTR_MASK_REG))($at)\n    andi  $t0, $a0, OS_IM_CPU\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    andi  $t1, $t3, 0xff00\n    and   $t0, $t0, $t1\n#endif\n    lui   $at, (0xFFFF00FF >> 16) // lui $at, 0xffff\n    ori   $at, (0xFFFF00FF & 0xFFFF) // ori $at, $at, 0xff\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    and   $t4, $t4, $at\n    or    $t4, $t4, $t0\n    mtc0  $t4, $12\n#else\n    and   $t1, $t1, $at\n    or    $t1, $t1, $t0\n    mtc0  $t1, $12\n#endif\n    nop\n    nop\n    jr    $ra\n     nop\n\n\n.section .rodata\n\nglabel __osRcpImTable\n.half 0x0555\n.half 0x0556\n.half 0x0559\n.half 0x055A\n.half 0x0565\n.half 0x0566\n.half 0x0569\n.half 0x056A\n.half 0x0595\n.half 0x0596\n.half 0x0599\n.half 0x059A\n.half 0x05A5\n.half 0x05A6\n.half 0x05A9\n.half 0x05AA\n.half 0x0655\n.half 0x0656\n.half 0x0659\n.half 0x065A\n.half 0x0665\n.half 0x0666\n.half 0x0669\n.half 0x066A\n.half 0x0695\n.half 0x0696\n.half 0x0699\n.half 0x069A\n.half 0x06A5\n.half 0x06A6\n.half 0x06A9\n.half 0x06AA\n.half 0x0955\n.half 0x0956\n.half 0x0959\n.half 0x095A\n.half 0x0965\n.half 0x0966\n.half 0x0969\n.half 0x096A\n.half 0x0995\n.half 0x0996\n.half 0x0999\n.half 0x099A\n.half 0x09A5\n.half 0x09A6\n.half 0x09A9\n.half 0x09AA\n.half 0x0A55\n.half 0x0A56\n.half 0x0A59\n.half 0x0A5A\n.half 0x0A65\n.half 0x0A66\n.half 0x0A69\n.half 0x0A6A\n.half 0x0A95\n.half 0x0A96\n.half 0x0A99\n.half 0x0A9A\n.half 0x0AA5\n.half 0x0AA6\n.half 0x0AA9\n.half 0x0AAA\n"
  },
  {
    "path": "lib/asm/osUnmapTLBAll.s",
    "content": ".set noreorder // don't insert nops after branches\n\n#include \"macros.inc\"\n\n\n.section .text, \"ax\"\n\nglabel osUnmapTLBAll\n    mfc0  $t0, $10\n#ifdef VERSION_CN\n    li    $t1, 30\n#else\n    li    $t1, 31\n#endif\n    lui   $t2, 0x8000\n    mtc0  $t2, $10\n    mtc0  $zero, $2\n    mtc0  $zero, $3\n.L80321588:\n    mtc0  $t1, $0\n    nop\n    tlbwi\n    nop\n    nop\n    addi  $t1, $t1, -1\n#ifdef VERSION_CN\n    bgez  $t1, .L80321588\n#else\n    bnezl $t1, .L80321588  #bnezl, bnez but with likely hint\n#endif\n     nop\n    mtc0  $t0, $10\n    jr    $ra\n     nop\n"
  },
  {
    "path": "lib/asm/osWritebackDCache.s",
    "content": ".set noreorder // don't insert nops after branches\n\n#include \"macros.inc\"\n\n\n.section .text, \"ax\"\n\nglabel osWritebackDCache\n    blez  $a1, .osWritebackDCacheReturn\n     nop\n    li    $t3, 8192\n    bgeu  $a1, $t3, .L80324E40\n     nop\n    move  $t0, $a0\n    addu  $t1, $a0, $a1\n    bgeu  $t0, $t1, .osWritebackDCacheReturn\n     nop\n#ifdef VERSION_CN\n    addiu $t1, $t1, -0x10\n    andi  $t2, $t0, 0xf\n#else\n    andi  $t2, $t0, 0xf\n    addiu $t1, $t1, -0x10\n#endif\n    subu  $t0, $t0, $t2\n.L80324E28:\n    cache 0x19, ($t0)\n    bltu  $t0, $t1, .L80324E28\n     addiu $t0, $t0, 0x10\n.osWritebackDCacheReturn:\n    jr    $ra\n     nop\n\n.L80324E40:\n    lui   $t0, 0x8000\n    addu  $t1, $t0, $t3\n    addiu $t1, $t1, -0x10\n.L80324E4C:\n    cache 1, ($t0)\n    bltu  $t0, $t1, .L80324E4C\n     addiu $t0, 0x10 // addiu $t0, $t0, 0x10\n    jr    $ra\n     nop\n"
  },
  {
    "path": "lib/asm/osWritebackDCacheAll.s",
    "content": ".set noat      // allow manual use of $at\n.set noreorder // don't insert nops after branches\n\n#include \"macros.inc\"\n\n\n.section .text, \"ax\"\n\nglabel osWritebackDCacheAll\n    li    $t0, K0BASE\n    li    $t2, 8192\n    addu  $t1, $t0, $t2\n    addiu $t1, $t1, -0x10\n.L80322020:\n    cache 1, ($t0)\n    sltu  $at, $t0, $t1\n    bnez  $at, .L80322020\n     addiu $t0, $t0, 0x10\n    jr    $ra\n     nop\n\n    nop\n    nop\n"
  },
  {
    "path": "lib/asm/parameters.s",
    "content": ".macro gsymbol sym addr\n.global \\sym\n.equ \\sym, \\addr\n#ifndef VERSION_JP\nnop\nnop\n#endif\n.endm\n\n.text\ngsymbol osTvType 0x80000300\ngsymbol osRomType 0x80000304\ngsymbol osRomBase 0x80000308\ngsymbol osResetType 0x8000030C\ngsymbol osCiCId 0x80000310\ngsymbol osVersion 0x80000314\ngsymbol osMemSize 0x80000318\ngsymbol osAppNmiBuffer 0x8000031C\n#if defined(VERSION_SH) || defined(VERSION_CN)\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\n#ifdef VERSION_CN\nnop\nnop\nnop\nnop\n#endif\n#endif\n"
  },
  {
    "path": "lib/asm/sqrtf.s",
    "content": ".set noat      // allow manual use of $at\n.set noreorder // don't insert nops after branches\n\n#include \"macros.inc\"\n\n.section .text, \"ax\"\n\nglabel sqrtf\n    jr $ra\n     sqrt.s $f0, $f12\n"
  },
  {
    "path": "lib/rsp.s",
    "content": "#include \"macros.inc\"\n.set UCODE_SIZE, 0x800\n\n.section .text\n\n.balign 16\nglabel rspF3DBootStart\n    .incbin \"rsp/rspboot.bin\"\n.balign 16\nglabel rspF3DBootEnd\n\n.balign 16\n#ifndef F3DEX_GBI_SHARED\nglabel rspF3DStart /* Use regular Fast3D bins (default) */\n    .incbin \"rsp/fast3d.bin\"\nglabel rspF3DEnd\n\n#else /* Use one of the Fast3DEX series grucodes. */\nglabel rspF3DStart\n    #ifdef F3DZEX_GBI_2\n        .incbin \"lib/PR/f3dex2/F3DZEX_NoN.bin\"\n    #elif defined(F3DEX_GBI)\n        .incbin \"lib/PR/f3dex/F3DEX.bin\"\n    #elif defined(F3DEX_GBI_2)\n        .incbin \"lib/PR/f3dex2/F3DEX2.bin\"\n    #endif\nglabel rspF3DEnd\n#endif\n\n/* Audio Bins */\n\n.balign 16\nglabel rspAspMainStart\n    .incbin \"rsp/audio.bin\"\nglabel rspAspMainEnd\n\n/*\n * LESS COMMON MICROCODES\n * These are setup to be loaded by G_LOAD_UCODE\n */\n\n/* Fast3DEX NoN Text */\n#ifdef F3DEX_NON_GBI\nglabel rspF3DEXNoNStart\n    .balign 16\n    .incbin \"lib/PR/f3dex/F3DEX_NoN.bin\"\nglabel rspF3DEXNoNEnd\n#endif\n\n/* Fast3DLX Text */\n#ifdef F3DLX_GBI\nglabel rspF3DLXStart\n    .incbin \"lib/PR/f3dex/F3DLX.bin\"\nglabel rspF3DLXEnd\n#endif\n\n/* Fast3DLX NoN Text */\n#ifdef F3DLX_NON_GBI\nglabel rspF3DLXNoNStart\n    .balign 16\n    .incbin \"lib/PR/f3dex/F3DLX_NoN.bin\"\nglabel rspF3DLXNoNEnd\n#endif\n\n/* Fast3DLX Rej Text */\n#ifdef F3DLX_REJ_GBI\nglabel rspF3DLXRejStart\n    .balign 16\n    .incbin \"lib/PR/f3dex/F3DLX_Rej.bin\"\nglabel rspF3DLXRejEnd\n#endif\n\n/* Line3DEX Text */\n#ifdef L3DEX_GBI\nglabel rspL3DEXStart\n    .balign 16\n    .incbin \"lib/PR/f3dex/L3DEX.bin\"\nglabel rspL3DEXEnd\n#endif\n\n/* S2DEX Text */\n#ifdef S2DEX_GBI\nglabel rspS2DEXStart\n    .balign 16\n    .incbin \"lib/PR/s2dex/S2DEX.bin\"\nglabel rspS2DEXEnd\n#endif\n\n/* Fast3DEX2 series */\n\n/* Fast3DEX2 NoN Text */\n#ifdef F3DEX2_NON_GBI\n.balign 16\nglabel rspF3DEX2NoNStart\n    .incbin \"lib/PR/f3dex2/F3DEX2_NoN.bin\"\nglabel rspF3DEX2NoNEnd\n#endif\n\n/* Fast3DEX2 Rej Text */\n#ifdef F3DEX2_REJ_GBI\n.balign 16\nglabel rspF3DEX2RejStart\n    .incbin \"lib/PR/f3dex2/F3DEX2_Rej.bin\"\nglabel rspF3DEX2RejEnd\n#endif\n\n/* Line3DEX2 Text */\n#ifdef L3DEX2_GBI\n.balign 16\nglabel rspL3DEX2Start\n    .incbin \"lib/PR/f3dex2/L3DEX2.bin\"\nglabel rspL3DEX2End\n#endif\n\n/* S2DEX2 Text */\n#ifdef S2DEX_GBI_2\n.balign 16\nglabel rspS2DEXStart\n    .incbin \"lib/PR/s2dex/S2DEX2.bin\"\nglabel rspS2DEXEnd\n#endif\n\n/* DATA SECTION START */\n\n.section .rodata\n\n.balign 16\n#ifndef F3DEX_GBI_SHARED /* Use regular Fast3D data (default) */\nglabel rspF3DDataStart\n    .incbin \"rsp/fast3d_data.bin\"\nglabel rspF3DDataEnd\n\n#else /* Using one of the Fast3DEX series grucodes */\nglabel rspF3DDataStart\n    #ifdef F3DZEX_GBI_2\n        .incbin \"lib/PR/f3dex2/F3DZEX_NoN_data.bin\"\n    #elif defined(F3DEX_GBI)\n        .incbin \"lib/PR/f3dex/F3DEX_data.bin\"\n    #elif defined(F3DEX_GBI_2)\n        .incbin \"lib/PR/f3dex2/F3DEX2_data.bin\"\n    #endif\nglabel rspF3DDataEnd\n#endif\n\n/* Audio Data */\n\n.balign 16\nglabel rspAspMainDataStart\n    .incbin \"rsp/audio_data.bin\"\nglabel rspAspMainDataEnd\n\n/* LESS COMMON MICROCODES */\n\n/* Fast3DEX Series */\n\n/* Fast3DEX NoN Data */\n#ifdef F3DEX_NON_GBI\n.balign 16\nglabel rspF3DEXNoNDataStart\n    .incbin \"lib/PR/f3dex/F3DEX_NoN_data.bin\"\nglabel rspF3DEXNoNDataEnd\n#endif\n\n/* Fast3DLX Data */\n#ifdef F3DLX_GBI\n.balign 16\nglabel rspF3DLXDataStart\n    .incbin \"lib/PR/f3dex/F3DLX_data.bin\"\nglabel rspF3DLXDataEnd\n#endif\n\n/* Fast3DLX NoN Data */\n#ifdef F3DLX_NON_GBI\n.balign 16\nglabel rspF3DLXNoNDataStart\n    .incbin \"lib/PR/f3dex/F3DLX_NoN_data.bin\"\nglabel rspF3DLXNoNDataEnd\n#endif\n\n/* Fast3DLX Rej Data */\n#ifdef F3DLX_REJ_GBI\n.balign 16\nglabel rspF3DLXRejDataStart\n    .incbin \"lib/PR/f3dex/F3DLX_Rej_data.bin\"\nglabel rspF3DLXRejDataEnd\n#endif\n\n/* Line3DEX Data */\n#ifdef L3DEX_GBI\n.balign 16\nglabel rspL3DEXDataStart\n    .incbin \"lib/PR/f3dex/L3DEX_data.bin\"\nglabel rspL3DEXDataEnd\n#endif\n\n/* S2DEX Data */\n#ifdef S2DEX_GBI\n.balign 16\nglabel rspS2DEXDataStart\n    .incbin \"lib/PR/s2dex/S2DEX_data.bin\"\nglabel rspS2DEXDataEnd\n#endif\n\n/* Fast3DEX2 Series */\n\n/* Fast3DEX2 NoN Data */\n#ifdef F3DEX2_NON_GBI\n.balign 16\nglabel rspF3DEX2NoNStart\n    .incbin \"lib/PR/f3dex2/F3DEX2_NoN_data.bin\"\nglabel rspF3DEX2NoNEnd\n#endif\n\n/* Fast3DEX2 Rej Data */\n#ifdef F3DEX2_REJ_GBI\n.balign 16\nglabel rspF3DEX2RejStart\n    .incbin \"lib/PR/f3dex2/F3DEX2_Rej_data.bin\"\nglabel rspF3DEX2RejEnd\n#endif\n\n/* Line3DEX2 Data */\n#ifdef L3DEX2_GBI\n.balign 16\nglabel rspL3DEX2Start\n    .incbin \"lib/PR/f3dex2/L3DEX2_data.bin\"\nglabel rspL3DEX2End\n#endif\n\n/* S2DEX2 Data */\n#ifdef S2DEX_GBI_2\n.balign 16\nglabel rspS2DEXStart\n    .incbin \"lib/PR/s2dex/S2DEX2_data.bin\"\nglabel rspS2DEXEnd\n#endif\n"
  },
  {
    "path": "lib/src/NaN.c",
    "content": "typedef union {\n    int i;\n    float f;\n} fu;\nconst fu NAN = { 0x7f810000 };\n"
  },
  {
    "path": "lib/src/_Ldtob.c",
    "content": "#include \"libultra_internal.h\"\n#include <macros.h>\n#include <stdlib.h>\n#include <string.h>\n#include \"printf.h\"\n\n#define BUFF_LEN 0x20\n\nstatic s16 _Ldunscale(s16 *, printf_struct *);\nstatic void _Genld(printf_struct *, fmt_type, fmt_type *, s16, s16);\n\nconst double pows[] = { 10e0L, 10e1L, 10e3L, 10e7L, 10e15L, 10e31L, 10e63L, 10e127L, 10e255L };\n\n/* float properties */\n#define _D0 0\n#define _DBIAS 0x3ff\n#define _DLONG 1\n#define _DOFF 4\n#define _FBIAS 0x7e\n#define _FOFF 7\n#define _FRND 1\n#define _LBIAS 0x3ffe\n#define _LOFF 15\n/* integer properties */\n#define _C2 1\n#define _CSIGN 1\n#define _ILONG 0\n#define _MBMAX 8\n#define NAN 2\n#define INF 1\n#define FINITE -1\n#define _DFRAC ((1 << _DOFF) - 1)\n#define _DMASK (0x7fff & ~_DFRAC)\n#define _DMAX ((1 << (15 - _DOFF)) - 1)\n#define _DNAN (0x8000 | _DMAX << _DOFF | 1 << (_DOFF - 1))\n#define _DSIGN 0x8000\n#if _D0 == 3\n#define _D1 2 /* little-endian order */\n#define _D2 1\n#define _D3 0\n#else\n#define _D1 1 /* big-endian order */\n#define _D2 2\n#define _D3 3\n#endif\n\nvoid _Ldtob(printf_struct *args, fmt_type type) {\n    fmt_type buff[BUFF_LEN];\n    fmt_type *ptr;\n    f64 val;\n    /* maybe struct? */\n    s16 err;\n    s16 nsig;\n    s16 exp;\n\n    s32 i;\n    s32 n;\n    f64 factor;\n    s32 gen;\n    s32 j;\n\n    ptr = buff;\n    val = args->value.f64;\n    if (args->precision < 0) {\n        args->precision = 6;\n    } else {\n        if (args->precision == 0 && (type == 'g' || type == 'G')) {\n            args->precision = 1;\n        }\n    }\n    err = _Ldunscale(&exp, args);\n    if (err > 0) {\n        memcpy(args->buff, err == 2 ? \"NaN\" : \"Inf\", args->part2_len = 3);\n        return;\n    }\n    if (err == 0) {\n        nsig = 0;\n        exp = 0;\n    } else {\n        if (val < 0) {\n            val = -val;\n        }\n        exp = exp * 30103 / 0x000186A0 - 4;\n        if (exp < 0) {\n            n = (-exp + 3) & ~3;\n            exp = -n;\n            for (i = 0; n > 0; n >>= 1, i++) {\n                if ((n & 1) != 0) {\n                    val *= pows[i];\n                }\n            }\n        } else {\n            if (exp > 0) {\n                factor = 1;\n                exp &= ~3;\n                for (n = exp, i = 0; n > 0; n >>= 1, i++) {\n                    if ((n & 1) != 0) {\n                        factor *= pows[i];\n                    }\n                }\n                val /= factor;\n            }\n        }\n        gen = args->precision + ((type == 'f') ? exp + 10 : 6);\n        if (gen > 0x13) {\n            gen = 0x13;\n        }\n        *ptr++ = '0';\n        while (gen > 0 && 0 < val) {\n            s32 lo = val;\n            if ((gen -= 8) > 0) {\n                val = (val - lo) * 1.0e8;\n            }\n            ptr = ptr + 8;\n            for (j = 8; lo > 0 && --j >= 0;) {\n                ldiv_t qr = ldiv(lo, 10);\n                *--ptr = qr.rem + '0';\n                lo = qr.quot;\n            }\n            while (--j >= 0) {\n                ptr--;\n                *ptr = '0';\n            }\n            ptr += 8;\n        }\n\n        gen = ptr - &buff[1];\n        for (ptr = &buff[1], exp += 7; *ptr == '0'; ptr++) {\n            --gen, --exp;\n        }\n\n        nsig = args->precision + ((type == 'f') ? exp + 1 : ((type == 'e' || type == 'E') ? 1 : 0));\n        if (gen < nsig) {\n            nsig = gen;\n        }\n        if (nsig > 0) {\n            fmt_type drop = (nsig < gen && ptr[nsig] > '4') ? '9' : '0';\n            s32 n2;\n\n            for (n2 = nsig; ptr[--n2] == drop;) {\n                nsig--;\n            }\n            if (drop == '9') {\n                ptr[n2]++;\n            }\n            if (n2 < 0) {\n                --ptr, ++nsig, ++exp;\n            }\n        }\n    }\n    _Genld(args, type, ptr, nsig, exp);\n}\n\nstatic s16 _Ldunscale(s16 *pex, printf_struct *px) {\n\n    unsigned short *ps = (unsigned short *) px;\n    short xchar = (ps[_D0] & _DMASK) >> _DOFF;\n    if (xchar == _DMAX) { /* NaN or INF */\n        *pex = 0;\n        return (s16)(ps[_D0] & _DFRAC || ps[_D1] || ps[_D2] || ps[_D3] ? NAN : INF);\n    } else if (0 < xchar) {\n        ps[_D0] = (ps[_D0] & ~_DMASK) | (_DBIAS << _DOFF);\n        *pex = xchar - (_DBIAS - 1);\n        return (FINITE);\n    }\n    if (0 > xchar) {\n        return NAN;\n    } else {\n        *pex = 0;\n        return (0);\n    }\n}\n\nstatic void _Genld(printf_struct *px, fmt_type code, fmt_type *p, s16 nsig, s16 xexp) {\n    const fmt_type point = '.';\n    if (nsig <= 0) {\n        nsig = 1,\n\n        p = (fmt_type *) \"0\";\n    }\n\n    if (code == 'f'\n        || ((code == 'g' || code == 'G') && (-4 <= xexp) && (xexp < px->precision))) { /* 'f' format */\n        ++xexp;            /* change to leading digit count */\n        if (code != 'f') { /* fixup for 'g' */\n            if (!(px->flags & FLAGS_HASH) && nsig < px->precision) {\n                px->precision = nsig;\n            }\n            if ((px->precision -= xexp) < 0) {\n                px->precision = 0;\n            }\n        }\n        if (xexp <= 0) { /* digits only to right of point */\n            px->buff[px->part2_len++] = '0';\n            if (0 < px->precision || px->flags & FLAGS_HASH) {\n                px->buff[px->part2_len++] = point;\n            }\n            if (px->precision < -xexp) {\n                xexp = -px->precision;\n            }\n            px->num_mid_zeros = -xexp;\n            px->precision += xexp;\n            if (px->precision < nsig) {\n                nsig = px->precision;\n            }\n            memcpy(&px->buff[px->part2_len], p, px->part3_len = nsig);\n            px->num_trailing_zeros = px->precision - nsig;\n        } else if (nsig < xexp) { /* zeros before point */\n            memcpy(&px->buff[px->part2_len], p, nsig);\n            px->part2_len += nsig;\n            px->num_mid_zeros = xexp - nsig;\n            if (0 < px->precision || px->flags & FLAGS_HASH) {\n                px->buff[px->part2_len] = point, ++px->part3_len;\n            }\n            px->num_trailing_zeros = px->precision;\n        } else { /* enough digits before point */\n            memcpy(&px->buff[px->part2_len], p, xexp);\n            px->part2_len += xexp;\n            nsig -= xexp;\n            if (0 < px->precision || px->flags & FLAGS_HASH) {\n                px->buff[px->part2_len++] = point;\n            }\n            if (px->precision < nsig) {\n                nsig = px->precision;\n            }\n            memcpy(&px->buff[px->part2_len], p + xexp, nsig);\n            px->part2_len += nsig;\n            px->num_mid_zeros = px->precision - nsig;\n        }\n    } else {                              /* 'e' format */\n        if (code == 'g' || code == 'G') { /* fixup for 'g' */\n            if (nsig < px->precision) {\n                px->precision = nsig;\n            }\n            if (--px->precision < 0) {\n                px->precision = 0;\n            }\n            code = code == 'g' ? 'e' : 'E';\n        }\n        px->buff[px->part2_len++] = *p++;\n        if (0 < px->precision || px->flags & FLAGS_HASH) {\n            px->buff[px->part2_len++] = point;\n        }\n        if (0 < px->precision) { /* put fraction digits */\n            if (px->precision < --nsig) {\n                nsig = px->precision;\n            }\n            memcpy(&px->buff[px->part2_len], p, nsig);\n            px->part2_len += nsig;\n            px->num_mid_zeros = px->precision - nsig;\n        }\n        p = (fmt_type *) &px->buff[px->part2_len]; /* put exponent */\n        *p++ = code;\n        if (0 <= xexp) {\n            *p++ = '+';\n        } else { /* negative exponent */\n            *p++ = '-';\n            xexp = -xexp;\n        }\n        if (100 <= xexp) { /* put oversize exponent */\n            if (1000 <= xexp) {\n                *p++ = xexp / 1000 + '0', xexp %= 1000;\n            }\n            *p++ = xexp / 100 + '0', xexp %= 100;\n        }\n        *p++ = xexp / 10 + '0', xexp %= 10;\n        *p++ = xexp + '0';\n        px->part3_len = p - (fmt_type *) &px->buff[px->part2_len];\n    }\n    if ((px->flags & (FLAGS_ZERO | FLAGS_MINUS)) == FLAGS_ZERO) { /* pad with leading zeros */\n        int n =\n            px->part1_len + px->part2_len + px->num_mid_zeros + px->part3_len + px->num_trailing_zeros;\n\n        if (n < px->width) {\n            px->num_leading_zeros = px->width - n;\n        }\n    }\n}\n"
  },
  {
    "path": "lib/src/_Litob.c",
    "content": "#include \"libultra_internal.h\"\n#include <stdlib.h>\n#include <string.h>\n#include \"printf.h\"\n\n#define BUFF_LEN 0x18\n\nstatic u8 ldigs[] = \"0123456789abcdef\";\nstatic u8 udigs[] = \"0123456789ABCDEF\";\n\nvoid _Litob(printf_struct *args, fmt_type type) {\n    u8 buff[BUFF_LEN];\n    const u8 *num_map;\n    s32 base;\n    s32 buff_ind;\n    u64 num;\n    lldiv_t quotrem;\n\n    if (type == 'X') {\n        num_map = udigs;\n    } else {\n        num_map = ldigs;\n    }\n\n    base = (type == 'o') ? 8 : ((type != 'x' && type != 'X') ? 10 : 16);\n    buff_ind = BUFF_LEN;\n    num = args->value.s64;\n\n    if ((type == 'd' || type == 'i') && args->value.s64 < 0) {\n        num = -num;\n    }\n\n    if (num != 0 || args->precision != 0) {\n        buff[--buff_ind] = num_map[num % base];\n    }\n\n    args->value.s64 = num / base;\n\n    while (args->value.s64 > 0 && buff_ind > 0) {\n        quotrem = lldiv(args->value.s64, base);\n        args->value.s64 = quotrem.quot;\n        buff[--buff_ind] = num_map[quotrem.rem];\n    }\n\n    args->part2_len = BUFF_LEN - buff_ind;\n\n    memcpy(args->buff, buff + buff_ind, args->part2_len);\n\n    if (args->part2_len < args->precision) {\n        args->num_leading_zeros = args->precision - args->part2_len;\n    }\n\n    if (args->precision < 0 && (args->flags & (FLAGS_ZERO | FLAGS_MINUS)) == FLAGS_ZERO) {\n        buff_ind = args->width - args->part1_len - args->num_leading_zeros - args->part2_len;\n        if (buff_ind > 0) {\n            args->num_leading_zeros += buff_ind;\n        }\n    }\n}\n"
  },
  {
    "path": "lib/src/_Printf.c",
    "content": "#include \"libultra_internal.h\"\n#include <stdarg.h>\n#include <string.h>\n#include \"printf.h\"\n\n#define ATOI(i, a)                                                                                     \\\n    for (i = 0; *a >= '0' && *a <= '9'; a++)                                                           \\\n        if (i < 999)                                                                                   \\\n            i = i * 10 + *a - '0';\n#define _PROUT(dst, fmt, _size)                                                                        \\\n    if (_size > 0) {                                                                                   \\\n        dst = prout(dst, fmt, _size);                                                                  \\\n        if (dst != 0)                                                                                  \\\n            sp78.size += _size;                                                                        \\\n        else                                                                                           \\\n            return sp78.size;                                                                          \\\n    }\n#define _PAD(i, m, c, src, extracond)                                                                  \\\n    if (extracond && m > 0)                                                                            \\\n        for (i = m; i > 0; i -= c) {                                                                   \\\n            if ((u32) i > 32)                                                                          \\\n                c = 32;                                                                                \\\n            else                                                                                       \\\n                c = i;                                                                                 \\\n            _PROUT(dst, src, c);                                                                       \\\n        }\n\nchar spaces[] = \"                                \";\nchar zeroes[] = \"00000000000000000000000000000000\";\n\nstatic void _Putfld(printf_struct *, va_list *, fmt_type, fmt_type *);\n\ns32 _Printf(char *(*prout)(char *, const char *, size_t), char *dst, const char *fmt, va_list args) {\n    static const char flags_str[] = \" +-#0\";\n    static const u32 flags_arr[] = { FLAGS_SPACE, FLAGS_PLUS, FLAGS_MINUS, FLAGS_HASH, FLAGS_ZERO, 0 };\n\n    printf_struct sp78;\n    const fmt_type *fmt_ptr;\n    fmt_type c;\n    const char *flag_index;\n    fmt_type sp4c[0x20]; // probably a buffer?\n    s32 sp48, sp44, sp40, sp3c, sp38, sp34, sp30, sp2c, sp28, sp24;\n    sp78.size = 0;\n    while (TRUE) {\n        fmt_ptr = (fmt_type *) fmt;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        // new version: don't point fmt_ptr beyond NUL character\n        while ((c = *fmt_ptr) != 0 && c != '%') {\n            fmt_ptr++;\n        }\n#else\n        while ((c = *fmt_ptr++) > 0) {\n            if (c == '%') {\n                fmt_ptr--;\n                break;\n            }\n        }\n#endif\n        _PROUT(dst, fmt, fmt_ptr - (fmt_type *) fmt);\n        if (c == 0) {\n            return sp78.size;\n        }\n        fmt = (char *) ++fmt_ptr;\n        sp78.flags = 0;\n        for (; (flag_index = strchr(flags_str, *fmt_ptr)) != NULL; fmt_ptr++) {\n            sp78.flags |= flags_arr[flag_index - flags_str];\n        }\n        if (*fmt_ptr == '*') {\n            sp78.width = va_arg(args, s32);\n            if (sp78.width < 0) {\n                sp78.width = -sp78.width;\n                sp78.flags |= FLAGS_MINUS;\n            }\n            fmt_ptr++;\n        } else {\n            ATOI(sp78.width, fmt_ptr);\n        }\n        if (*fmt_ptr != '.') {\n            sp78.precision = -1;\n        } else {\n            fmt_ptr++;\n            if (*fmt_ptr == '*') {\n                sp78.precision = va_arg(args, s32);\n                fmt_ptr++;\n            } else {\n                ATOI(sp78.precision, fmt_ptr);\n            }\n        }\n        sp78.length = strchr(\"hlL\", *fmt_ptr) != NULL ? *fmt_ptr++ : '\\0';\n\n        if (sp78.length == 'l' && *fmt_ptr == 'l') {\n            sp78.length = 'L';\n            fmt_ptr++;\n        }\n        _Putfld(&sp78, &args, *fmt_ptr, sp4c);\n        sp78.width -= sp78.part1_len + sp78.num_leading_zeros + sp78.part2_len + sp78.num_mid_zeros\n                      + sp78.part3_len + sp78.num_trailing_zeros;\n        _PAD(sp44, sp78.width, sp48, spaces, !(sp78.flags & FLAGS_MINUS));\n        _PROUT(dst, (char *) sp4c, sp78.part1_len);\n        _PAD(sp3c, sp78.num_leading_zeros, sp40, zeroes, 1);\n        _PROUT(dst, sp78.buff, sp78.part2_len);\n        _PAD(sp34, sp78.num_mid_zeros, sp38, zeroes, 1);\n        _PROUT(dst, (char *) (&sp78.buff[sp78.part2_len]), sp78.part3_len)\n        _PAD(sp2c, sp78.num_trailing_zeros, sp30, zeroes, 1);\n        _PAD(sp24, sp78.width, sp28, spaces, sp78.flags & FLAGS_MINUS);\n        fmt = (char *) fmt_ptr + 1;\n    }\n}\n\nstatic void _Putfld(printf_struct *a0, va_list *args, fmt_type type, fmt_type *buff) {\n    a0->part1_len = a0->num_leading_zeros = a0->part2_len = a0->num_mid_zeros = a0->part3_len =\n        a0->num_trailing_zeros = 0;\n\n    switch (type) {\n\n        case 'c':\n            buff[a0->part1_len++] = va_arg(*args, u32);\n            break;\n\n        case 'd':\n        case 'i':\n            if (a0->length == 'l') {\n                a0->value.s64 = va_arg(*args, s32);\n            } else if (a0->length == 'L') {\n                a0->value.s64 = va_arg(*args, s64);\n            } else {\n                a0->value.s64 = va_arg(*args, s32);\n            }\n\n            if (a0->length == 'h') {\n                a0->value.s64 = (s16) a0->value.s64;\n            }\n\n            if (a0->value.s64 < 0) {\n                buff[a0->part1_len++] = '-';\n            } else if (a0->flags & FLAGS_PLUS) {\n                buff[a0->part1_len++] = '+';\n            } else if (a0->flags & FLAGS_SPACE) {\n                buff[a0->part1_len++] = ' ';\n            }\n\n            a0->buff = (char *) &buff[a0->part1_len];\n\n            _Litob(a0, type);\n            break;\n\n        case 'x':\n        case 'X':\n        case 'u':\n        case 'o':\n            if (a0->length == 'l') {\n                a0->value.s64 = va_arg(*args, s32);\n            } else if (a0->length == 'L') {\n                a0->value.s64 = va_arg(*args, s64);\n            } else {\n                a0->value.s64 = va_arg(*args, s32);\n            }\n\n            if (a0->length == 'h') {\n                a0->value.s64 = (u16) a0->value.s64;\n            } else if (a0->length == 0) {\n                a0->value.s64 = (u32) a0->value.s64;\n            }\n\n            if (a0->flags & FLAGS_HASH) {\n                buff[a0->part1_len++] = '0';\n                if (type == 'x' || type == 'X') {\n\n                    buff[a0->part1_len++] = type;\n                }\n            }\n            a0->buff = (char *) &buff[a0->part1_len];\n            _Litob(a0, type);\n            break;\n\n        case 'e':\n        case 'f':\n        case 'g':\n        case 'E':\n        case 'G':\n            //... okay?\n            a0->value.f64 = a0->length == 'L' ? va_arg(*args, f64) : va_arg(*args, f64);\n\n            if (a0->value.u16 & 0x8000) {\n                buff[a0->part1_len++] = '-';\n            } else {\n                if (a0->flags & FLAGS_PLUS) {\n                    buff[a0->part1_len++] = '+';\n                } else if (a0->flags & FLAGS_SPACE) {\n                    buff[a0->part1_len++] = ' ';\n                }\n            }\n\n            a0->buff = (char *) &buff[a0->part1_len];\n            _Ldtob(a0, type);\n            break;\n\n        case 'n':\n            if (a0->length == 'h') {\n                *(va_arg(*args, u16 *)) = a0->size;\n            } else if (a0->length == 'l') {\n                *va_arg(*args, u32 *) = a0->size;\n            } else if (a0->length == 'L') {\n                *va_arg(*args, u64 *) = a0->size;\n            } else {\n                *va_arg(*args, u32 *) = a0->size;\n            }\n            break;\n\n        case 'p':\n            a0->value.s64 = (intptr_t) va_arg(*args, void *);\n            a0->buff = (char *) &buff[a0->part1_len];\n            _Litob(a0, 'x');\n            break;\n\n        case 's':\n            a0->buff = va_arg(*args, char *);\n            a0->part2_len = strlen(a0->buff);\n            if (a0->precision >= 0 && a0->part2_len > a0->precision) {\n                a0->part2_len = a0->precision;\n            }\n            break;\n\n        case '%':\n            buff[a0->part1_len++] = '%';\n            break;\n\n        default:\n            buff[a0->part1_len++] = type;\n            break;\n    }\n}\n"
  },
  {
    "path": "lib/src/__osAiDeviceBusy.c",
    "content": "#include \"libultra_internal.h\"\n#include \"PR/rcp.h\"\n\ns32 __osAiDeviceBusy(void) {\n    register s32 status = IO_READ(AI_STATUS_REG);\n    if (status & AI_STATUS_FIFO_FULL) {\n        return 1;\n    } else {\n        return 0;\n    }\n}\n"
  },
  {
    "path": "lib/src/__osAtomicDec.c",
    "content": "#include \"libultra_internal.h\"\n\ns32 __osAtomicDec(u32 *a0) {\n    s32 sp1c;\n    s32 sp18;\n    sp1c = __osDisableInt();\n\n    if (*a0 != 0) {\n        (*a0)--;\n        sp18 = 1;\n    } else {\n        sp18 = 0;\n    }\n\n    __osRestoreInt(sp1c);\n    return sp18;\n}\n"
  },
  {
    "path": "lib/src/__osDequeueThread.c",
    "content": "#include \"libultra_internal.h\"\n\n// these don't feel like they belong here\n// but it makes the most logical since there was printf data before\n#ifndef AVOID_UB\nOSThread *__osThreadTail = NULL;\nu32 D_80334894 = -1;\nOSThread *__osRunQueue = (OSThread *) &__osThreadTail;\nOSThread *__osActiveQueue = (OSThread *) &__osThreadTail;\nOSThread *__osRunningThread = { 0 };\nOSThread *__osFaultedThread = { 0 };\n#else\nOSThread_ListHead __osThreadTail_fix = {NULL, -1, (OSThread *) &__osThreadTail_fix, (OSThread *) &__osThreadTail_fix, NULL, 0};\n#endif\n\nvoid __osDequeueThread(register OSThread **queue, register OSThread *thread) {\n    register OSThread **a2;\n    register OSThread *a3;\n    a2 = queue;\n    a3 = *a2;\n    while (a3 != NULL) {\n        if (a3 == thread) {\n            *a2 = thread->next;\n            return;\n        }\n        a2 = &a3->next;\n        a3 = *a2;\n    }\n}\n"
  },
  {
    "path": "lib/src/__osDevMgrMain.c",
    "content": "#include \"libultra_internal.h\"\n#include \"macros.h\"\n#include \"PR/os.h\"\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n#include \"new_func.h\"\n#include \"PR/rcp.h\"\n#include \"PR/ique.h\"\n\n#define ALIGN16(val) (((val) + 0xF) & ~0xF)\n\nvoid __osDevMgrMain(void *args) {\n#ifdef VERSION_CN\n    s32 loadedToTempBuffer = FALSE;\n#endif\n    OSIoMesg *mb;\n    OSMesg em;\n    OSMesg dummy;\n    s32 ret;\n    OSMgrArgs *sp34;\n#ifdef VERSION_EU\n    UNUSED u32 sp30;\n#endif\n    u32 sp2c;\n    __OSBlockInfo *sp28;\n    __OSTranxInfo *sp24;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    u32 tmp;\n#endif\n#ifdef VERSION_EU\n    sp30 = 0;\n#endif\n    sp2c = 0;\n    mb = NULL;\n    ret = 0;\n    sp34 = (OSMgrArgs *) args;\n    while (TRUE) {\n        osRecvMesg(sp34->cmdQueue, (OSMesg) &mb, OS_MESG_BLOCK);\n        if (mb->piHandle != NULL && mb->piHandle->type == 2\n            && (mb->piHandle->transferInfo.cmdType == 0\n                || mb->piHandle->transferInfo.cmdType == 1)) {\n            sp24 = &mb->piHandle->transferInfo;\n            sp28 = &sp24->block[sp24->blockNum];\n            sp24->sectorNum = -1;\n            if (sp24->transferMode != 3) {\n                sp28->dramAddr = (void *) ((u32) sp28->dramAddr - sp28->sectorSize);\n            }\n            if (sp24->transferMode == 2 && mb->piHandle->transferInfo.cmdType == 0) {\n                sp2c = 1;\n            } else {\n                sp2c = 0;\n            }\n            osRecvMesg(sp34->accessQueue, &dummy, OS_MESG_BLOCK);\n            __osResetGlobalIntMask(OS_IM_PI);\n            osEPiRawWriteIo(mb->piHandle, 0x05000510, (sp24->bmCtlShadow | 0x80000000));\nl1:\n            osRecvMesg(sp34->eventQueue, &em, OS_MESG_BLOCK);\n#if defined(VERSION_SH) || defined(VERSION_CN)\n            sp24 = &mb->piHandle->transferInfo;\n            sp28 = &sp24->block[sp24->blockNum];\n            if (sp28->errStatus == 0x1D) {\n                osEPiRawWriteIo(mb->piHandle, 0x5000510, sp24->bmCtlShadow | 0x10000000);\n                osEPiRawWriteIo(mb->piHandle, 0x5000510, sp24->bmCtlShadow);\n                osEPiRawReadIo(mb->piHandle, 0x5000508, &tmp);\n                if ((tmp & 0x2000000) != 0) {\n                    osEPiRawWriteIo(mb->piHandle, 0x5000510, sp24->bmCtlShadow | 0x1000000);\n                }\n                sp28->errStatus = 4;\n                IO_WRITE(PI_STATUS_REG, PI_STATUS_CLR_INTR);\n                __osSetGlobalIntMask(0x100C01);\n            }\n\n            osSendMesg(mb->hdr.retQueue, mb, OS_MESG_NOBLOCK);\n\n            if (sp2c == 1 && mb->piHandle->transferInfo.block[0].errStatus == 0) {\n                sp2c = 0;\n                goto l1;\n            }\n#else\n            sp30 = osSendMesg(mb->hdr.retQueue, mb, OS_MESG_NOBLOCK);\n\n            if (sp2c == 1 && mb->piHandle->transferInfo.errStatus == 0) {\n                sp2c = 0;\n                goto l1;\n            }\n#endif\n            osSendMesg(sp34->accessQueue, NULL, OS_MESG_NOBLOCK);\n\n            if (mb->piHandle->transferInfo.blockNum == 1) {\n                osYieldThread();\n            }\n        } else {\n            switch (mb->hdr.type) {\n                case 11:\n                    osRecvMesg(sp34->accessQueue, &dummy, OS_MESG_BLOCK);\n#ifdef VERSION_CN\n                    if (__osBbIsBb == 1 && ((uintptr_t) mb->dramAddr & 0x7f) >= 0x60) {\n                        loadedToTempBuffer = TRUE;\n                        ret = sp34->dma_func(OS_READ, mb->devAddr, (void *) 0x80600000, mb->size);\n                    } else\n#endif\n                        ret = sp34->dma_func(OS_READ, mb->devAddr, mb->dramAddr, mb->size);\n                    break;\n                case 12:\n                    osRecvMesg(sp34->accessQueue, &dummy, OS_MESG_BLOCK);\n                    ret = sp34->dma_func(OS_WRITE, mb->devAddr, mb->dramAddr, mb->size);\n                    break;\n                case 15:\n                    osRecvMesg(sp34->accessQueue, &dummy, OS_MESG_BLOCK);\n#ifdef VERSION_CN\n                    if (__osBbIsBb == 1 && ((uintptr_t) mb->dramAddr & 0x7f) >= 0x60) {\n                        loadedToTempBuffer = TRUE;\n                        ret = sp34->edma_func(mb->piHandle, OS_READ, mb->devAddr, (void *) 0x80600000,\n                                               mb->size);\n                    } else\n#endif\n                        ret = sp34->edma_func(mb->piHandle, OS_READ, mb->devAddr, mb->dramAddr,\n                                               mb->size);\n                    break;\n                case 16:\n                    osRecvMesg(sp34->accessQueue, &dummy, OS_MESG_BLOCK);\n                    ret = sp34->edma_func(mb->piHandle, OS_WRITE, mb->devAddr, mb->dramAddr,\n                                           mb->size);\n                    break;\n                case 10:\n                    osSendMesg(mb->hdr.retQueue, mb, OS_MESG_NOBLOCK);\n                    ret = -1;\n                    break;\n                    break;\n                default:\n                    ret = -1;\n                    break;\n            }\n            if (ret == 0) {\n                osRecvMesg(sp34->eventQueue, &em, OS_MESG_BLOCK);\n#ifdef VERSION_CN\n                if (__osBbIsBb == 1 && loadedToTempBuffer) {\n                    osInvalDCache((void *) 0x80600000, ALIGN16(mb->size));\n                    bcopy((void *) 0x80600000, mb->dramAddr, mb->size);\n                    osWritebackDCache(mb->dramAddr, mb->size);\n                    loadedToTempBuffer = FALSE;\n                }\n#endif\n#ifdef VERSION_EU\n                sp30 =\n#endif\n                osSendMesg(mb->hdr.retQueue, mb, OS_MESG_NOBLOCK);\n                osSendMesg(sp34->accessQueue, NULL, OS_MESG_NOBLOCK);\n            }\n        }\n    }\n}\n#else\nvoid __osDevMgrMain(void *args) {\n    OSIoMesg *sp34;\n    OSMesg sp30;\n    OSMesg sp2c;\n    s32 sp28;\n    OSMgrArgs *sp24;\n    sp34 = NULL;\n    sp28 = 0;\n    sp24 = (OSMgrArgs *) args;\n    while (TRUE) {\n        osRecvMesg(sp24->cmdQueue, (OSMesg) &sp34, OS_MESG_BLOCK);\n        switch (sp34->hdr.type) {\n            case 11:\n                osRecvMesg(sp24->accessQueue, &sp2c, OS_MESG_BLOCK);\n                sp28 = sp24->dma_func(OS_READ, sp34->devAddr, sp34->dramAddr, sp34->size);\n                break;\n            case 12:\n                osRecvMesg(sp24->accessQueue, &sp2c, OS_MESG_BLOCK);\n                sp28 = sp24->dma_func(OS_WRITE, sp34->devAddr, sp34->dramAddr, sp34->size);\n                break;\n            case 10:\n                osSendMesg(sp34->hdr.retQueue, sp34, OS_MESG_NOBLOCK);\n                sp28 = -1;\n                break;\n            default:\n                sp28 = -1;\n                break;\n        }\n        if (sp28 == 0) {\n            osRecvMesg(sp24->eventQueue, &sp30, OS_MESG_BLOCK);\n            osSendMesg(sp34->hdr.retQueue, sp34, OS_MESG_NOBLOCK);\n            osSendMesg(sp24->accessQueue, NULL, OS_MESG_NOBLOCK);\n        }\n    }\n}\n#endif\n"
  },
  {
    "path": "lib/src/__osGetCurrFaultedThread.c",
    "content": "#include \"libultra_internal.h\"\n\nOSThread *__osGetCurrFaultedThread() {\n    return __osActiveQueue;\n}\n"
  },
  {
    "path": "lib/src/__osPiCreateAccessQueue.c",
    "content": "#include \"libultra_internal.h\"\n\n#include \"macros.h\"\n\n#define PIAccessQueueSize 2\n\nFORCE_BSS OSMesg osPiMesgBuff[PIAccessQueueSize];\nOSMesgQueue gOsPiMessageQueue;\nu32 gOsPiAccessQueueCreated = 0;\n\nvoid __osPiCreateAccessQueue(void) {\n    gOsPiAccessQueueCreated = 1;\n    osCreateMesgQueue(&gOsPiMessageQueue, &osPiMesgBuff[0], PIAccessQueueSize - 1);\n    osSendMesg(&gOsPiMessageQueue, NULL, OS_MESG_NOBLOCK);\n}\n\nvoid __osPiGetAccess(void) {\n    OSMesg sp1c;\n    if (!gOsPiAccessQueueCreated) {\n        __osPiCreateAccessQueue();\n    }\n    osRecvMesg(&gOsPiMessageQueue, &sp1c, OS_MESG_BLOCK);\n}\n\nvoid __osPiRelAccess(void) {\n    osSendMesg(&gOsPiMessageQueue, NULL, OS_MESG_NOBLOCK);\n}\n"
  },
  {
    "path": "lib/src/__osResetGlobalIntMask.c",
    "content": "#include \"libultra_internal.h\"\n#include \"PR/os.h\"\n\nvoid __osResetGlobalIntMask(u32 mask) {\n    register u32 prev;\n    prev = __osDisableInt();\n    __OSGlobalIntMask &= ~(-0x402 & mask);\n    __osRestoreInt(prev);\n}\n"
  },
  {
    "path": "lib/src/__osSetGlobalIntMask.c",
    "content": "#include \"libultra_internal.h\"\n#include \"PR/os.h\"\n\nvoid __osSetGlobalIntMask(s32 mask) {\n    register u32 saveMask = __osDisableInt();\n    __OSGlobalIntMask |= mask;\n    __osRestoreInt(saveMask);\n}\n"
  },
  {
    "path": "lib/src/__osSetHWintrRoutine.c",
    "content": "#include \"libultra_internal.h\"\n\nextern s32 (*__osHwIntTable[])(void) ;\n\nvoid __osSetHWIntrRoutine(OSHWIntr interrupt, s32 (*handler)(void)) {\n    register u32 saveMask;\n    saveMask = __osDisableInt();\n    __osHwIntTable[interrupt] = handler;\n    __osRestoreInt(saveMask);\n}\n"
  },
  {
    "path": "lib/src/__osSiCreateAccessQueue.c",
    "content": "#include \"libultra_internal.h\"\n\n#include \"macros.h\"\n\n#define SIAccessQueueSize 2\n\nFORCE_BSS OSMesg osSiMesgBuff[SIAccessQueueSize];\nOSMesgQueue gOsSiMessageQueue;\nu32 gOsSiAccessQueueCreated = 0;\n\nvoid __osSiCreateAccessQueue() {\n    gOsSiAccessQueueCreated = 1;\n    osCreateMesgQueue(&gOsSiMessageQueue, &osSiMesgBuff[0], SIAccessQueueSize - 1);\n    osSendMesg(&gOsSiMessageQueue, NULL, OS_MESG_NOBLOCK);\n}\n\nvoid __osSiGetAccess(void) {\n    OSMesg sp1c;\n    if (!gOsSiAccessQueueCreated) {\n        __osSiCreateAccessQueue();\n    }\n    osRecvMesg(&gOsSiMessageQueue, &sp1c, OS_MESG_BLOCK);\n}\n\nvoid __osSiRelAccess(void) {\n    osSendMesg(&gOsSiMessageQueue, NULL, OS_MESG_NOBLOCK);\n}\n"
  },
  {
    "path": "lib/src/__osSiDeviceBusy.c",
    "content": "#include \"libultra_internal.h\"\n#include \"PR/rcp.h\"\n\ns32 __osSiDeviceBusy() {\n    register u32 status;\n    status = IO_READ(SI_STATUS_REG);\n    if (status & (SI_STATUS_DMA_BUSY | SI_STATUS_RD_BUSY)) {\n        return 1;\n    } else {\n        return 0;\n    }\n}\n"
  },
  {
    "path": "lib/src/__osSiRawReadIo.c",
    "content": "#include \"libultra_internal.h\"\n#include \"PR/rcp.h\"\n\ns32 __osSiRawReadIo(u32 devAddr, u32 *data) {\n    if (__osSiDeviceBusy()) {\n        return -1;\n    }\n    *data = IO_READ(devAddr);\n    return 0;\n}\n"
  },
  {
    "path": "lib/src/__osSiRawStartDma.c",
    "content": "#include \"libultra_internal.h\"\n#include \"PR/rcp.h\"\n#include \"PR/ique.h\"\n\ns32 __osSiRawStartDma(s32 dir, void *addr) {\n#ifdef VERSION_CN\n    if (IO_READ(SI_STATUS_REG) & (SI_STATUS_DMA_BUSY | SI_STATUS_RD_BUSY)) {\n        return -1;\n    }\n#else\n    if (__osSiDeviceBusy()) {\n        return -1;\n    }\n#endif\n\n    if (dir == OS_WRITE) {\n        osWritebackDCache(addr, 64);\n    }\n\n    IO_WRITE(SI_DRAM_ADDR_REG, osVirtualToPhysical(addr));\n\n    if (dir == OS_READ) {\n#ifdef VERSION_CN\n        if (__osBbIsBb != 0) {\n            u32 prev = __osDisableInt();\n            skKeepAlive();\n            __osRestoreInt(prev);\n        }\n#endif\n        IO_WRITE(SI_PIF_ADDR_RD64B_REG, 0x1FC007C0);\n    } else {\n        IO_WRITE(SI_PIF_ADDR_WR64B_REG, 0x1FC007C0);\n    }\n\n    if (dir == OS_READ) {\n        osInvalDCache(addr, 64);\n    }\n    return 0;\n}\n"
  },
  {
    "path": "lib/src/__osSiRawWriteIo.c",
    "content": "#include \"libultra_internal.h\"\n#include \"PR/rcp.h\"\n\ns32 __osSiRawWriteIo(u32 devAddr, u32 data) {\n    if (__osSiDeviceBusy()) {\n        return -1;\n    }\n    IO_WRITE(devAddr, data);\n    return 0;\n}\n"
  },
  {
    "path": "lib/src/__osSpDeviceBusy.c",
    "content": "#include \"libultra_internal.h\"\n#include \"PR/rcp.h\"\n\ns32 __osSpDeviceBusy() {\n    register u32 status = IO_READ(SP_STATUS_REG);\n\n    if (status & (SPSTATUS_IO_FULL | SPSTATUS_DMA_FULL | SPSTATUS_DMA_BUSY)) {\n        return 1;\n    }\n\n    return 0;\n}\n"
  },
  {
    "path": "lib/src/__osSpGetStatus.c",
    "content": "#include \"libultra_internal.h\"\n#include \"PR/rcp.h\"\n\nu32 __osSpGetStatus() {\n    return IO_READ(SP_STATUS_REG);\n}\n"
  },
  {
    "path": "lib/src/__osSpRawStartDma.c",
    "content": "#include \"libultra_internal.h\"\n#include \"PR/rcp.h\"\n\ns32 __osSpRawStartDma(u32 dir, void *sp_ptr, void *dram_ptr, size_t size) {\n    if (__osSpDeviceBusy()) {\n        return -1;\n    }\n\n    IO_WRITE(SP_MEM_ADDR_REG, sp_ptr);\n    IO_WRITE(SP_DRAM_ADDR_REG, osVirtualToPhysical(dram_ptr));\n\n    if (dir == 0) {\n        IO_WRITE(SP_WR_LEN_REG, size - 1);\n    } else {\n        IO_WRITE(SP_RD_LEN_REG, size - 1);\n    }\n    return 0;\n}\n"
  },
  {
    "path": "lib/src/__osSpSetPc.c",
    "content": "#include \"libultra_internal.h\"\n#include \"PR/rcp.h\"\n\ns32 __osSpSetPc(void *pc) {\n    register u32 status = IO_READ(SP_STATUS_REG);\n    if (!(status & SPSTATUS_HALT)) {\n        return -1;\n    } else {\n        IO_WRITE(SP_PC_REG, pc);\n        return 0;\n    }\n}\n"
  },
  {
    "path": "lib/src/__osSpSetStatus.c",
    "content": "#include \"libultra_internal.h\"\n#include \"PR/rcp.h\"\n\nvoid __osSpSetStatus(u32 status) {\n    IO_WRITE(SP_STATUS_REG, status);\n}\n"
  },
  {
    "path": "lib/src/__osSyncPutChars.c",
    "content": "#include \"libultra_internal.h\"\n#include \"PR/rdb.h\"\n#include \"PR/R4300.h\"\n\nu32 __osRdbSendMessage = 0;\nu32 __osRdbWriteOK = 1;\n\nvoid __osSyncPutChars(s32 type, s32 length, u8 *buf) {\n    rdbPacket packet;\n    s32 i;\n    u32 mask;\n    packet.type = type;\n    packet.length = length;\n\n    for (i = 0; i < length; i++) {\n        packet.buf[i] = buf[i];\n    }\n\n    while (!__osAtomicDec(&__osRdbWriteOK)) {\n        ;\n    }\n\n    mask = __osDisableInt();\n\n    *(u32 *) RDB_BASE_REG = *(u32 *) &packet;\n    while (!(__osGetCause() & CAUSE_IP6)) {\n        ;\n    }\n    *(u32 *) RDB_READ_INTR_REG = 0;\n    __osRdbWriteOK++;\n\n    __osRestoreInt(mask);\n}\n"
  },
  {
    "path": "lib/src/__osViGetCurrentContext.c",
    "content": "#include \"libultra_internal.h\"\n\nextern OSViContext *__osViCurr;\n\nOSViContext *__osViGetCurrentContext() {\n    return __osViCurr;\n}\n"
  },
  {
    "path": "lib/src/__osViInit.c",
    "content": "#include \"libultra_internal.h\"\n#include \"PR/rcp.h\"\n#include \"PR/os.h\"\n\nOSViContext sViContexts[2] = { 0 };\nOSViContext *__osViCurr = &sViContexts[0];\nOSViContext *__osViNext = &sViContexts[1];\n\n#ifdef VERSION_EU\nu32 osViClock = VI_NTSC_CLOCK;\nu32 sTvType = TV_TYPE_PAL;\n#elif !defined(VERSION_SH) && !defined(VERSION_CN)\nu32 sTvType = TV_TYPE_NTSC;\nu32 osViClock = VI_NTSC_CLOCK;\n#endif\n\nextern OSViMode osViModePalLan1;\nextern OSViMode osViModeMpalLan1;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\nextern OSViMode osViModeNtscLan1;\n#endif\n\nvoid __osViInit(void) {\n#ifdef VERSION_US\n    sTvType = osTvType;\n#endif\n\n    bzero(sViContexts, sizeof(sViContexts));\n    __osViCurr = &sViContexts[0];\n    __osViNext = &sViContexts[1];\n    __osViNext->retraceCount = 1;\n    __osViCurr->retraceCount = 1;\n\n#if defined(VERSION_JP)\n    if (sTvType != TV_TYPE_PAL) {\n        __osViNext->modep = &osViModePalLan1;\n        osViClock = VI_NTSC_CLOCK;\n    } else {\n        __osViNext->modep = &osViModeMpalLan1;\n        osViClock = VI_PAL_CLOCK;\n    }\n#elif defined(VERSION_US)\n    if (sTvType == TV_TYPE_NTSC) {\n        __osViNext->modep = &osViModePalLan1;\n        osViClock = VI_NTSC_CLOCK;\n    } else {\n        __osViNext->modep = &osViModeMpalLan1;\n        osViClock = VI_MPAL_CLOCK;\n    }\n#elif defined(VERSION_EU)\n    if (osTvType == TV_TYPE_PAL) {\n        __osViNext->modep = &osViModePalLan1;\n        osViClock = VI_PAL_CLOCK;\n    } else if (osTvType == TV_TYPE_MPAL) {\n        __osViNext->modep = &osViModeMpalLan1;\n        osViClock = VI_MPAL_CLOCK;\n    } else {\n        __osViNext->modep = &osViModeNtscLan1;\n        osViClock = VI_NTSC_CLOCK;\n    }\n#else\n    __osViNext->buffer = (void *) 0x80000000;\n    __osViCurr->buffer = (void *) 0x80000000;\n    if (osTvType == TV_TYPE_PAL) {\n        __osViNext->modep = &osViModePalLan1;\n    } else if (osTvType == TV_TYPE_MPAL) {\n        __osViNext->modep = &osViModeMpalLan1;\n    } else {\n        __osViNext->modep = &osViModeNtscLan1;\n    }\n\n#endif\n\n    __osViNext->unk00 = VI_STATE_BLACK;\n    __osViNext->features = __osViNext->modep->comRegs.ctrl;\n\n#ifndef VERSION_JP\n    while (IO_READ(VI_CURRENT_REG) > 10) {\n        ;\n    }\n    IO_WRITE(VI_STATUS_REG, 0);\n#endif\n    __osViSwapContext();\n}\n"
  },
  {
    "path": "lib/src/__osViSwapContext.c",
    "content": "#include \"libultra_internal.h\"\n#include \"PR/rcp.h\"\n\nextern OSViContext *__osViNext;\nextern OSViContext *__osViCurr;\n\nextern u32 __additional_scanline;\n\nvoid __osViSwapContext() {\n    register OSViMode *viMode;\n    register OSViContext *s1;\n    u32 origin;\n    u32 hStart;\n#ifdef VERSION_CN\n    u32 vStart;\n#endif\n    u32 sp34;\n    u32 field;\n    field = 0;\n    s1 = __osViNext;\n    viMode = s1->modep;\n    field = IO_READ(VI_V_CURRENT_LINE_REG) & 1;\n    origin = osVirtualToPhysical(s1->buffer) + viMode->fldRegs[field].origin;\n    if (s1->unk00 & 2) {\n        s1->unk20 |= viMode->comRegs.xScale & ~0xfff;\n    } else {\n        s1->unk20 = viMode->comRegs.xScale;\n    }\n    if (s1->unk00 & 4) {\n        sp34 = (u32)(viMode->fldRegs[field].yScale & 0xfff);\n        s1->unk2c = s1->unk24 * sp34;\n        s1->unk2c |= viMode->fldRegs[field].yScale & ~0xfff;\n    } else {\n        s1->unk2c = viMode->fldRegs[field].yScale;\n    }\n\n#ifdef VERSION_CN\n    vStart = viMode->fldRegs[field].vStart - (__additional_scanline << 0x10) + __additional_scanline;\n#endif\n    hStart = viMode->comRegs.hStart;\n\n    if (s1->unk00 & 0x20) {\n        hStart = 0;\n    }\n    if (s1->unk00 & 0x40) {\n        s1->unk2c = 0;\n        origin = osVirtualToPhysical(s1->buffer);\n    }\n    if (s1->unk00 & 0x80) {\n        s1->unk2c = (s1->unk28 << 0x10) & 0x3ff0000;\n        origin = osVirtualToPhysical(s1->buffer);\n    }\n    IO_WRITE(VI_ORIGIN_REG, origin);\n    IO_WRITE(VI_WIDTH_REG, viMode->comRegs.width);\n    IO_WRITE(VI_BURST_REG, viMode->comRegs.burst);\n    IO_WRITE(VI_V_SYNC_REG, viMode->comRegs.vSync);\n    IO_WRITE(VI_H_SYNC_REG, viMode->comRegs.hSync);\n    IO_WRITE(VI_LEAP_REG, viMode->comRegs.leap);\n    IO_WRITE(VI_H_START_REG, hStart);\n#ifdef VERSION_CN\n    IO_WRITE(VI_V_START_REG, vStart);\n#else\n    IO_WRITE(VI_V_START_REG, viMode->fldRegs[field].vStart);\n#endif\n    IO_WRITE(VI_V_BURST_REG, viMode->fldRegs[field].vBurst);\n    IO_WRITE(VI_INTR_REG, viMode->fldRegs[field].vIntr);\n    IO_WRITE(VI_X_SCALE_REG, s1->unk20);\n    IO_WRITE(VI_Y_SCALE_REG, s1->unk2c);\n    IO_WRITE(VI_CONTROL_REG, s1->features);\n    __osViNext = __osViCurr;\n    __osViCurr = s1;\n    *__osViNext = *__osViCurr;\n}\n"
  },
  {
    "path": "lib/src/alBnkfNew.c",
    "content": "#include \"libultra_internal.h\"\n#include \"libaudio_internal.h\"\n\n#define PATCH(SRC, BASE, TYPE) SRC = (TYPE)((uintptr_t) SRC + (uintptr_t) BASE)\n\nvoid alSeqFileNew(ALSeqFile *f, u8 *base) {\n    int i;\n    for (i = 0; i < f->seqCount; i++) {\n        PATCH(f->seqArray[i].offset, base, u8 *);\n    }\n}\n\nstatic void _bnkfPatchBank(ALInstrument *inst, ALBankFile *f, u8 *table) {\n    int i;\n    ALSound *sound;\n    ALWaveTable *wavetable;\n    u8 *table2;\n\n    if (inst->flags) {\n        return;\n    }\n\n    inst->flags = 1;\n\n    for (i = 0; i < inst->soundCount; i++) {\n        PATCH(inst->soundArray[i], f, ALSound *);\n        sound = inst->soundArray[i];\n        if (sound->flags) {\n            continue;\n        }\n\n        table2 = table;\n\n        sound->flags = 1;\n        PATCH(sound->envelope, f, ALEnvelope *);\n        PATCH(sound->keyMap, f, ALKeyMap *);\n        PATCH(sound->wavetable, f, ALWaveTable *);\n        wavetable = sound->wavetable;\n        if (wavetable->flags) {\n            continue;\n        }\n\n        wavetable->flags = 1;\n        PATCH(wavetable->base, table2, u8 *);\n        if (wavetable->type == 0) {\n            PATCH(wavetable->waveInfo.adpcmWave.book, f, ALADPCMBook *);\n            if (wavetable->waveInfo.adpcmWave.loop != NULL) {\n                PATCH(wavetable->waveInfo.adpcmWave.loop, f, ALADPCMloop *);\n            }\n        } else if (wavetable->type == 1) {\n            if (wavetable->waveInfo.rawWave.loop != NULL) {\n                PATCH(wavetable->waveInfo.rawWave.loop, f, ALRawLoop *);\n            }\n        }\n    }\n}\n\n// Force adding another jr $ra.  Has to be called or it doesn't get put in the\n// right place.\nstatic void unused(void) {\n}\n\nvoid alBnkfNew(ALBankFile *f, u8 *table) {\n    ALBank *bank;\n    int i;\n    int j;\n    unused();\n    if (f->revision != AL_BANK_VERSION) {\n        return;\n    }\n\n    for (i = 0; i < f->bankCount; i++) {\n        PATCH(f->bankArray[i], f, ALBank *);\n        if (f->bankArray[i] == NULL) {\n            continue;\n        }\n\n        bank = f->bankArray[i];\n        if (bank->flags == 0) {\n            bank->flags = 1;\n            if (bank->percussion != NULL) {\n                PATCH(bank->percussion, f, ALInstrument *);\n                _bnkfPatchBank(bank->percussion, f, table);\n            }\n            for (j = 0; j < bank->instCount; j++) {\n                PATCH(bank->instArray[j], f, ALInstrument *);\n                if (bank->instArray[j] != NULL) {\n                    _bnkfPatchBank(bank->instArray[j], f, table);\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "lib/src/bstring.h",
    "content": "#ifndef __BSTRING_H__\n#define __BSTRING_H__\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/*\n * bstring(3C) -- byte string operations\n *\n * Copyright 1990, Silicon Graphics, Inc. \n * All Rights Reserved.\n *\n * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;\n * the contents of this file may not be disclosed to third parties, copied or \n * duplicated in any form, in whole or in part, without the prior written \n * permission of Silicon Graphics, Inc.\n *\n * RESTRICTED RIGHTS LEGEND:\n * Use, duplication or disclosure by the Government is subject to restrictions \n * as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data\n * and Computer Software clause at DFARS 252.227-7013, and/or in similar or \n * successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - \n * rights reserved under the Copyright Laws of the United States.\n */\n\n#ident \"$Revision: 1.4 $\"\n\nextern void    bcopy(const void *, void *, size_t);\nextern int    bcmp(const void *, const void *, int);\nextern void    bzero(void *, size_t);\nextern void    blkclr(void *, int);\n\n#ifdef __cplusplus\n}\n#endif\n#endif /* !__BSTRING_H__ */\n"
  },
  {
    "path": "lib/src/contramread.c",
    "content": "#include \"libultra_internal.h\"\n#include \"PR/rcp.h\"\n#include \"controller.h\"\n#include \"macros.h\"\n\nextern s32 __osPfsGetStatus(OSMesgQueue *, s32);\nvoid __osPackRamReadData(int channel, u16 address);\n\ns32 __osContRamRead(OSMesgQueue *mq, int channel, u16 address, u8 *buffer) {\n    s32 ret;\n    int i;\n    u8 *ptr;\n    __OSContRamReadFormat ramreadformat;\n    int retry;\n    ret = 0;\n    ptr = (u8 *)&__osPfsPifRam;\n    retry = 2;\n    __osSiGetAccess();\n    __osContLastCmd = CONT_CMD_READ_MEMPACK;\n    __osPackRamReadData(channel, address);\n    ret = __osSiRawStartDma(OS_WRITE, &__osPfsPifRam);\n    osRecvMesg(mq, NULL, OS_MESG_BLOCK);\n    do {\n        ret = __osSiRawStartDma(OS_READ, &__osPfsPifRam);\n        osRecvMesg(mq, NULL, OS_MESG_BLOCK);\n        ptr = (u8 *)&__osPfsPifRam;\n        if (channel != 0) {\n            for (i = 0; i < channel; i++) {\n                ptr++;\n            }\n        }\n        ramreadformat = *(__OSContRamReadFormat *)ptr;\n        ret = CHNL_ERR(ramreadformat);\n        if (ret == 0) {\n            u8 c;\n            c = __osContDataCrc((u8*)&ramreadformat.data);\n            if (c != ramreadformat.datacrc) {\n                ret = __osPfsGetStatus(mq, channel);\n                if (ret != 0) {\n                    __osSiRelAccess();\n                    return ret;\n                }\n                ret = PFS_ERR_CONTRFAIL;\n            } else {\n                for (i = 0; i < ARRAY_COUNT(ramreadformat.data); i++) {\n                    *buffer++ = ramreadformat.data[i];\n                }\n            }\n        } else {\n            ret = PFS_ERR_NOPACK;\n        }\n        if (ret != PFS_ERR_CONTRFAIL) {\n            break;\n        }\n    } while (retry-- >= 0);\n    __osSiRelAccess();\n    return ret;\n}\n\nvoid __osPackRamReadData(int channel, u16 address) {\n    u8 *ptr;\n    __OSContRamReadFormat ramreadformat;\n    int i;\n\n    ptr = (u8 *)__osPfsPifRam.ramarray;\n\n    for (i = 0; i < ARRAY_COUNT(__osPfsPifRam.ramarray) + 1; i++) {\n        __osPfsPifRam.ramarray[i] = 0;\n    }\n\n    __osPfsPifRam.pifstatus = CONT_CMD_EXE;\n    ramreadformat.dummy = CONT_CMD_NOP;\n    ramreadformat.txsize = CONT_CMD_READ_MEMPACK_TX;\n    ramreadformat.rxsize = CONT_CMD_READ_MEMPACK_RX;\n    ramreadformat.cmd = CONT_CMD_READ_MEMPACK;\n    ramreadformat.address = (address << 0x5) | __osContAddressCrc(address);\n    ramreadformat.datacrc = CONT_CMD_NOP;\n    for (i = 0; i < ARRAY_COUNT(ramreadformat.data); i++) {\n        ramreadformat.data[i] = CONT_CMD_NOP;\n    }\n    if (channel != 0) {\n        for (i = 0; i < channel; i++) {\n            *ptr++ = 0;\n        }\n    }\n    *(__OSContRamReadFormat *)ptr = ramreadformat;\n    ptr += sizeof(__OSContRamReadFormat);\n    ptr[0] = CONT_CMD_END;\n}\n"
  },
  {
    "path": "lib/src/contramwrite.c",
    "content": "#include \"libultra_internal.h\"\n#include \"PR/rcp.h\"\n#include \"controller.h\"\n#include \"macros.h\"\n\nextern s32 __osPfsGetStatus(OSMesgQueue *, s32);\nvoid __osPackRamWriteData(s32 channel, u16 address, u8 *buffer);\n\ns32 __osContRamWrite(OSMesgQueue *mq, s32 channel, u16 address, u8 *buffer, s32 force) {\n    s32 ret;\n    s32 i;\n    u8 *ptr;\n    __OSContRamReadFormat ramreadformat;\n    s32 retry;\n\n    ret = 0;\n    ptr = (u8 *)&__osPfsPifRam;\n    retry = 2;\n    if (force != 1 && address < 7 && address != 0) {\n        return 0;\n    }\n    __osSiGetAccess();\n    __osContLastCmd = CONT_CMD_WRITE_MEMPACK;\n    __osPackRamWriteData(channel, address, buffer);\n    ret = __osSiRawStartDma(OS_WRITE, &__osPfsPifRam);\n    osRecvMesg(mq, NULL, OS_MESG_BLOCK);\n    do {\n        ret = __osSiRawStartDma(OS_READ, &__osPfsPifRam);\n        osRecvMesg(mq, NULL, OS_MESG_BLOCK);\n        ptr = (u8 *)&__osPfsPifRam;\n        if (channel != 0) {\n            for (i = 0; i < channel; i++) {\n                ptr++;\n            }\n        }\n\n        ramreadformat = *(__OSContRamReadFormat *)ptr;\n\n        ret = CHNL_ERR(ramreadformat);\n        if (ret == 0) {\n            if (__osContDataCrc(buffer) != ramreadformat.datacrc) {\n                ret = __osPfsGetStatus(mq, channel);\n                if (ret != 0) {\n                    __osSiRelAccess();\n                    return ret;\n                }\n                ret = PFS_ERR_CONTRFAIL;\n            }\n        } else {\n            ret = PFS_ERR_NOPACK;\n        }\n        if (ret != PFS_ERR_CONTRFAIL) {\n            break;\n        }\n    } while ((retry-- >= 0));\n    __osSiRelAccess();\n    return ret;\n}\n\nvoid __osPackRamWriteData(int channel, u16 address, u8 *buffer) {\n    u8 *ptr;\n    __OSContRamReadFormat ramreadformat;\n    int i;\n\n    ptr = (u8 *)__osPfsPifRam.ramarray;\n\n    for (i = 0; i < ARRAY_COUNT(__osPfsPifRam.ramarray) + 1; i++) {\n        __osPfsPifRam.ramarray[i] = 0;\n    }\n\n    __osPfsPifRam.pifstatus = CONT_CMD_EXE;\n    ramreadformat.dummy = CONT_CMD_NOP;\n    ramreadformat.txsize = CONT_CMD_WRITE_MEMPACK_TX;\n    ramreadformat.rxsize = CONT_CMD_WRITE_MEMPACK_RX;\n    ramreadformat.cmd = CONT_CMD_WRITE_MEMPACK;\n    ramreadformat.address = (address << 0x5) | __osContAddressCrc(address);\n    ramreadformat.datacrc = CONT_CMD_NOP;\n    for (i = 0; i < ARRAY_COUNT(ramreadformat.data); i++) {\n        ramreadformat.data[i] = *buffer++;\n    }\n    if (channel != 0) {\n        for (i = 0; i < channel; i++) {\n            *ptr++ = 0;\n        }\n    }\n    *(__OSContRamReadFormat *)ptr = ramreadformat;\n    ptr += sizeof(__OSContRamReadFormat);\n    ptr[0] = CONT_CMD_END;\n}\n"
  },
  {
    "path": "lib/src/controller.h",
    "content": "#ifndef _CONTROLLER_H\n#define _CONTROLLER_H\n#include \"PR/os_internal.h\"\n#include \"PR/os.h\"\n#include \"PR/rcp.h\"\n\n//should go somewhere else but\n#define CHNL_ERR(format) ((format.rxsize & CHNL_ERR_MASK) >> 4)\n\ntypedef struct {\n    /* 0x00 */ u32 ramarray[15];\n    /* 0x3C */ u32 pifstatus;\n} OSPifRam;\n\ntypedef struct {\n    /* 0x0 */ u8 dummy;\n    /* 0x1 */ u8 txsize;\n    /* 0x2 */ u8 rxsize;\n    /* 0x3 */ u8 cmd;\n    /* 0x4 */ u16 button;\n    /* 0x6 */ s8 stick_x;\n    /* 0x7 */ s8 stick_y;\n} __OSContReadFormat;\n\ntypedef struct  {\n    /* 0x0 */ u8 dummy;\n    /* 0x1 */ u8 txsize;\n    /* 0x2 */ u8 rxsize;\n    /* 0x3 */ u8 cmd;\n    /* 0x4 */ u8 typeh;\n    /* 0x5 */ u8 typel;\n    /* 0x6 */ u8 status;\n    /* 0x7 */ u8 dummy1;\n} __OSContRequesFormat;\n\ntypedef struct {\n    /* 0x0 */ u8 txsize;\n    /* 0x1 */ u8 rxsize;\n    /* 0x2 */ u8 cmd;\n    /* 0x3 */ u8 typeh;\n    /* 0x4 */ u8 typel;\n    /* 0x5 */ u8 status;\n} __OSContRequesFormatShort;\n\ntypedef struct {\n    /* 0x0 */ u8 dummy;\n    /* 0x1 */ u8 txsize;\n    /* 0x2 */ u8 rxsize;\n    /* 0x3 */ u8 cmd;\n    /* 0x4 */ u16 address;\n    /* 0x6 */ u8 data[BLOCKSIZE];\n    /* 0x26 */ u8 datacrc;\n} __OSContRamReadFormat;\n\ntypedef union {\n    /* 0x0 */ struct\n    {\n        /* 0x0 */ u8 bank;\n        /* 0x1 */ u8 page;\n    } inode_t;\n    /* 0x0 */ u16 ipage;\n} __OSInodeUnit;\n\ntypedef struct {\n    /* 0x0 */ u32 game_code;\n    /* 0x4 */ u16 company_code;\n    /* 0x6 */ __OSInodeUnit start_page;\n    /* 0x8 */ u8 status;\n    /* 0x9 */ s8 reserved;\n    /* 0xA */ u16 data_sum;\n    /* 0xC */ u8 ext_name[PFS_FILE_EXT_LEN];\n    /* 0x10 */ u8 game_name[PFS_FILE_NAME_LEN];\n} __OSDir;\n\ntypedef struct {\n    /* 0x0 */ __OSInodeUnit inode_page[128];\n} __OSInode;\n\ntypedef struct {\n    /* 0x0 */ u32 repaired;\n    /* 0x4 */ u32 random;\n    /* 0x8 */ u64 serial_mid;\n    /* 0x10 */ u64 serial_low;\n    /* 0x18 */ u16 deviceid;\n    /* 0x1A */ u8 banks;\n    /* 0x1B */ u8 version;\n    /* 0x1C */ u16 checksum;\n    /* 0x1E */ u16 inverted_checksum;\n} __OSPackId;\n\ntypedef struct {\n    /* 0x0 */ u8 txsize;\n    /* 0x1 */ u8 rxsize;\n    /* 0x2 */ u8 cmd;\n    /* 0x3 */ u8 address;\n    /* 0x4 */ u8 data[EEPROM_BLOCK_SIZE];\n} __OSContEepromFormat;\n\n//from: http://en64.shoutwiki.com/wiki/SI_Registers_Detailed#CONT_CMD_Usage\n#define CONT_CMD_REQUEST_STATUS 0\n#define CONT_CMD_READ_BUTTON 1\n#define CONT_CMD_READ_MEMPACK 2\n#define CONT_CMD_WRITE_MEMPACK 3\n#define CONT_CMD_READ_EEPROM 4\n#define CONT_CMD_WRITE_EEPROM 5\n#define CONT_CMD_RESET 0xff\n\n#define CONT_CMD_REQUEST_STATUS_TX 1\n#define CONT_CMD_READ_BUTTON_TX 1\n#define CONT_CMD_READ_MEMPACK_TX 3\n#define CONT_CMD_WRITE_MEMPACK_TX 35\n#define CONT_CMD_READ_EEPROM_TX 2\n#define CONT_CMD_WRITE_EEPROM_TX 10\n#define CONT_CMD_RESET_TX 1\n\n#define CONT_CMD_REQUEST_STATUS_RX 3\n#define CONT_CMD_READ_BUTTON_RX 4\n#define CONT_CMD_READ_MEMPACK_RX 33\n#define CONT_CMD_WRITE_MEMPACK_RX 1\n#define CONT_CMD_READ_EEPROM_RX 8\n#define CONT_CMD_WRITE_EEPROM_RX 1\n#define CONT_CMD_RESET_RX 3\n\n#define CONT_CMD_NOP 0xff\n#define CONT_CMD_END 0xfe //indicates end of a command\n#define CONT_CMD_EXE 1    //set pif ram status byte to this to do a command\n\n#define DIR_STATUS_EMPTY 0\n#define DIR_STATUS_UNKNOWN 1\n#define DIR_STATUS_OCCUPIED 2\n\n\ntypedef struct\n{\n    /* 0x0 */ __OSInode inode;\n    /* 0x100 */ u8 bank;\n    /* 0x101 */ u8 map[256];\n} __OSInodeCache;\n\nextern s32 __osEepStatus(OSMesgQueue *, OSContStatus *);\nu16 __osSumcalc(u8 *ptr, int length);\ns32 __osIdCheckSum(u16 *ptr, u16 *csum, u16 *icsum);\ns32 __osRepairPackId(OSPfs *pfs, __OSPackId *badid, __OSPackId *newid);\ns32 __osCheckPackId(OSPfs *pfs, __OSPackId *temp);\ns32 __osGetId(OSPfs *pfs);\ns32 __osCheckId(OSPfs *pfs);\ns32 __osPfsRWInode(OSPfs *pfs, __OSInode *inode, u8 flag, u8 bank);\ns32 __osPfsSelectBank(OSPfs *pfs);\ns32 __osPfsDeclearPage(OSPfs *pfs, __OSInode *inode, int file_size_in_pages, int *first_page, u8 bank, int *decleared, int *last_page);\ns32 __osPfsReleasePages(OSPfs *pfs, __OSInode *inode, u8 start_page, u16 *sum, u8 bank, __OSInodeUnit *last_page, int flag);\ns32 __osBlockSum(OSPfs *pfs, u8 page_no, u16 *sum, u8 bank);\ns32 __osContRamRead(OSMesgQueue *mq, int channel, u16 address, u8 *buffer);\ns32 __osContRamWrite(OSMesgQueue *mq, s32 channel, u16 address, u8 *buffer, s32 force);\nvoid __osContGetInitData(u8 *pattern, OSContStatus *data);\nvoid __osPackRequestData(u8 cmd);\nvoid __osPfsRequestData(u8 cmd);\nvoid __osPfsGetInitData(u8* pattern, OSContStatus* data);\nu8 __osContAddressCrc(u16 addr);\nu8 __osContDataCrc(u8 *data);\ns32 __osPfsGetStatus(OSMesgQueue *queue, int channel);\n\nextern u8 __osContLastCmd;\nextern OSTimer __osEepromTimer;\nextern OSMesg __osEepromTimerMsg[4];\nextern OSMesgQueue __osEepromTimerQ;\nextern OSPifRam __osEepPifRam;\nextern OSPifRam __osContPifRam;\nextern OSPifRam __osPfsPifRam;\nextern u8 __osMaxControllers;\n\n//some version of this almost certainly existed since there's plenty of times where it's used right before a return 0\n#define ERRCK(fn) \\\n    ret = fn;     \\\n    if (ret != 0) \\\n        return ret;\n\n#define SET_ACTIVEBANK_TO_ZERO        \\\n    if (pfs->activebank != 0)         \\\n    {                                 \\\n        pfs->activebank = 0;          \\\n        ERRCK(__osPfsSelectBank(pfs)) \\\n    }\n\n#define PFS_CHECK_ID                              \\\n    if (__osCheckId(pfs) == PFS_ERR_NEW_PACK) \\\n        return PFS_ERR_NEW_PACK;\n#endif\n\n#define PFS_CHECK_STATUS                          \\\n    if ((pfs->status & PFS_INITIALIZED) == 0) \\\n        return PFS_ERR_INVALID;\n\n#define PFS_GET_STATUS                      \\\n    __osSiGetAccess();                      \\\n    ret = __osPfsGetStatus(queue, channel); \\\n    __osSiRelAccess();                      \\\n    if (ret != 0)                           \\\n        return ret;\n"
  },
  {
    "path": "lib/src/crc.c",
    "content": "#include \"libultra_internal.h\"\n\nu8 __osContAddressCrc(u16 addr) {\n    u8 temp;\n    u8 temp2;\n    int i;\n    temp = 0;\n    for (i = 0; i < 16; i++) {\n        if (temp & 0x10) {\n            temp2 = 21;\n        } else {\n            temp2 = 0;\n        }\n\n        temp <<= 1;\n        temp |= (u8)((addr & 0x400) ? 1 : 0);\n        addr <<= 1;\n        temp ^= temp2;\n    }\n    return temp & 0x1f;\n}\n\nu8 __osContDataCrc(u8 *data) {\n    u8 temp;\n    u8 temp2;\n    int i;\n    int j;\n    temp = 0;\n    for (i = 0; i <= 32; i++, data++) {\n        for (j = 7; j >= 0; j--) {\n            if (temp & 0x80) {\n                temp2 = 133;\n            } else {\n                temp2 = 0;\n            }\n            temp <<= 1;\n            if (i == 32) {\n                temp &= -1;\n            } else {\n                temp |= ((*data & (1 << j)) ? 1 : 0);\n            }\n            temp ^= temp2;\n        }\n    }\n    return temp;\n}\n"
  },
  {
    "path": "lib/src/epidma.c",
    "content": "#if defined(VERSION_SH) || defined(VERSION_CN)\n\n#include \"PR/os_internal.h\"\n#include \"piint.h\"\n\ns32 osEPiStartDma(OSPiHandle *pihandle, OSIoMesg *mb, s32 direction) {\n    register s32 ret;\n\n    if (!__osPiDevMgr.active) {\n        return -1;\n    }\n    mb->piHandle = pihandle;\n    if (direction == OS_READ) {\n        mb->hdr.type = OS_MESG_TYPE_EDMAREAD;\n    } else {\n        mb->hdr.type = OS_MESG_TYPE_EDMAWRITE;\n    }\n    if (mb->hdr.pri == OS_MESG_PRI_HIGH) {\n        ret = osJamMesg(osPiGetCmdQueue(), mb, OS_MESG_NOBLOCK);\n    } else {\n        ret = osSendMesg(osPiGetCmdQueue(), mb, OS_MESG_NOBLOCK);\n    }\n    return ret;\n}\n\n#endif\n"
  },
  {
    "path": "lib/src/guLookAtRef.c",
    "content": "/*\n * This file originates from the standard Nintendo 64 SDK libultra src\n * directory, and it used exclusively when building with the Fast3DEX2\n * microcode. Not not using it breaks environment mapping.\n *\n * Apart from the modifications listed below, this file is unmodified.\n */\n\n/**************************************************************************\n *                                                                        *\n *         Copyright (C) 1994, Silicon Graphics, Inc.                     *\n *                                                                        *\n *  These coded instructions, statements, and computer programs  contain  *\n *  unpublished  proprietary  information of Silicon Graphics, Inc., and  *\n *  are protected by Federal copyright law.  They  may  not be disclosed  *\n *  to  third  parties  or copied or duplicated in any form, in whole or  *\n *  in part, without the prior written consent of Silicon Graphics, Inc.  *\n *                                                                        *\n **************************************************************************/\n\n/* Minor modifications */\n#include <ultra64.h>\n#define FTOFRAC8(x) ((int) MIN(((x) * (128.0)), 127.0) & 0xff)\n\nvoid guLookAtReflectF(float mf[4][4], LookAt *l, float xEye, float yEye, float zEye, float xAt,\n                      float yAt, float zAt, float xUp, float yUp, float zUp) {\n    float len, xLook, yLook, zLook, xRight, yRight, zRight;\n\n    guMtxIdentF(mf);\n\n    xLook = xAt - xEye;\n    yLook = yAt - yEye;\n    zLook = zAt - zEye;\n\n    /* Negate because positive Z is behind us: */\n    len = -1.0 / sqrtf(xLook * xLook + yLook * yLook + zLook * zLook);\n    xLook *= len;\n    yLook *= len;\n    zLook *= len;\n\n    /* Right = Up x Look */\n\n    xRight = yUp * zLook - zUp * yLook;\n    yRight = zUp * xLook - xUp * zLook;\n    zRight = xUp * yLook - yUp * xLook;\n    len = 1.0 / sqrtf(xRight * xRight + yRight * yRight + zRight * zRight);\n    xRight *= len;\n    yRight *= len;\n    zRight *= len;\n\n    /* Up = Look x Right */\n\n    xUp = yLook * zRight - zLook * yRight;\n    yUp = zLook * xRight - xLook * zRight;\n    zUp = xLook * yRight - yLook * xRight;\n    len = 1.0 / sqrtf(xUp * xUp + yUp * yUp + zUp * zUp);\n    xUp *= len;\n    yUp *= len;\n    zUp *= len;\n\n    /* reflectance vectors = Up and Right */\n\n    l->l[0].l.dir[0] = FTOFRAC8(xRight);\n    l->l[0].l.dir[1] = FTOFRAC8(yRight);\n    l->l[0].l.dir[2] = FTOFRAC8(zRight);\n    l->l[1].l.dir[0] = FTOFRAC8(xUp);\n    l->l[1].l.dir[1] = FTOFRAC8(yUp);\n    l->l[1].l.dir[2] = FTOFRAC8(zUp);\n    l->l[0].l.col[0] = 0x00;\n    l->l[0].l.col[1] = 0x00;\n    l->l[0].l.col[2] = 0x00;\n    l->l[0].l.pad1 = 0x00;\n    l->l[0].l.colc[0] = 0x00;\n    l->l[0].l.colc[1] = 0x00;\n    l->l[0].l.colc[2] = 0x00;\n    l->l[0].l.pad2 = 0x00;\n    l->l[1].l.col[0] = 0x00;\n    l->l[1].l.col[1] = 0x80;\n    l->l[1].l.col[2] = 0x00;\n    l->l[1].l.pad1 = 0x00;\n    l->l[1].l.colc[0] = 0x00;\n    l->l[1].l.colc[1] = 0x80;\n    l->l[1].l.colc[2] = 0x00;\n    l->l[1].l.pad2 = 0x00;\n\n    mf[0][0] = xRight;\n    mf[1][0] = yRight;\n    mf[2][0] = zRight;\n    mf[3][0] = -(xEye * xRight + yEye * yRight + zEye * zRight);\n\n    mf[0][1] = xUp;\n    mf[1][1] = yUp;\n    mf[2][1] = zUp;\n    mf[3][1] = -(xEye * xUp + yEye * yUp + zEye * zUp);\n\n    mf[0][2] = xLook;\n    mf[1][2] = yLook;\n    mf[2][2] = zLook;\n    mf[3][2] = -(xEye * xLook + yEye * yLook + zEye * zLook);\n\n    mf[0][3] = 0;\n    mf[1][3] = 0;\n    mf[2][3] = 0;\n    mf[3][3] = 1;\n}\n\nvoid guLookAtReflect(Mtx *m, LookAt *l, float xEye, float yEye, float zEye, float xAt, float yAt,\n                     float zAt, float xUp, float yUp, float zUp) {\n    float mf[4][4];\n\n    guLookAtReflectF(mf, l, xEye, yEye, zEye, xAt, yAt, zAt, xUp, yUp, zUp);\n\n    guMtxF2L(mf, m);\n}\n"
  },
  {
    "path": "lib/src/guMtxF2L.c",
    "content": "#include \"libultra_internal.h\"\n#ifdef GBI_FLOATS\n#include <string.h>\n#endif\n\n#if !defined(VERSION_CN) || !defined(TARGET_N64)\n\n#ifndef GBI_FLOATS\nvoid guMtxF2L(float mf[4][4], Mtx *m) {\n    int r, c;\n    s32 tmp1;\n    s32 tmp2;\n    s32 *m1 = &m->m[0][0];\n    s32 *m2 = &m->m[2][0];\n    for (r = 0; r < 4; r++) {\n        for (c = 0; c < 2; c++) {\n            tmp1 = mf[r][2 * c] * 65536.0f;\n            tmp2 = mf[r][2 * c + 1] * 65536.0f;\n            *m1++ = (tmp1 & 0xffff0000) | ((tmp2 >> 0x10) & 0xffff);\n            *m2++ = ((tmp1 << 0x10) & 0xffff0000) | (tmp2 & 0xffff);\n        }\n    }\n}\n\nvoid guMtxL2F(float mf[4][4], Mtx *m) {\n    int r, c;\n    u32 tmp1;\n    u32 tmp2;\n    u32 *m1;\n    u32 *m2;\n    s32 stmp1, stmp2;\n    m1 = (u32 *) &m->m[0][0];\n    m2 = (u32 *) &m->m[2][0];\n    for (r = 0; r < 4; r++) {\n        for (c = 0; c < 2; c++) {\n            tmp1 = (*m1 & 0xffff0000) | ((*m2 >> 0x10) & 0xffff);\n            tmp2 = ((*m1++ << 0x10) & 0xffff0000) | (*m2++ & 0xffff);\n            stmp1 = *(s32 *) &tmp1;\n            stmp2 = *(s32 *) &tmp2;\n            mf[r][c * 2 + 0] = stmp1 / 65536.0f;\n            mf[r][c * 2 + 1] = stmp2 / 65536.0f;\n        }\n    }\n}\n#else\nvoid guMtxF2L(float mf[4][4], Mtx *m) {\n    memcpy(m, mf, sizeof(Mtx));\n}\n#endif\n\nvoid guMtxIdentF(float mf[4][4]) {\n    int r, c;\n    for (r = 0; r < 4; r++) {\n        for (c = 0; c < 4; c++) {\n            if (r == c) {\n                mf[r][c] = 1.0f;\n            } else {\n                mf[r][c] = 0.0f;\n            }\n        }\n    }\n}\n\nvoid guMtxIdent(Mtx *m) {\n#ifndef GBI_FLOATS\n    float mf[4][4];\n    guMtxIdentF(mf);\n    guMtxF2L(mf, m);\n#else\n    guMtxIdentF(m->m);\n#endif\n}\n\n#endif\n"
  },
  {
    "path": "lib/src/guNormalize.c",
    "content": "#include \"libultra_internal.h\"\n\n#if !defined(VERSION_CN) || !defined(TARGET_N64)\n\nvoid guNormalize(f32 *x, f32 *y, f32 *z) {\n    f32 tmp = 1.0f / sqrtf(*x * *x + *y * *y + *z * *z);\n    *x = *x * tmp;\n    *y = *y * tmp;\n    *z = *z * tmp;\n}\n\n#endif\n"
  },
  {
    "path": "lib/src/guOrthoF.c",
    "content": "#include \"libultra_internal.h\"\n\nvoid guOrthoF(float m[4][4], float left, float right, float bottom, float top, float near, float far,\n              float scale) {\n    int row;\n    int col;\n    guMtxIdentF(m);\n    m[0][0] = 2 / (right - left);\n    m[1][1] = 2 / (top - bottom);\n    m[2][2] = -2 / (far - near);\n    m[3][0] = -(right + left) / (right - left);\n    m[3][1] = -(top + bottom) / (top - bottom);\n    m[3][2] = -(far + near) / (far - near);\n    m[3][3] = 1;\n    for (row = 0; row < 4; row++) {\n        for (col = 0; col < 4; col++) {\n            m[row][col] *= scale;\n        }\n    }\n}\n\nvoid guOrtho(Mtx *m, float left, float right, float bottom, float top, float near, float far,\n             float scale) {\n    float sp28[4][4];\n    guOrthoF(sp28, left, right, bottom, top, near, far, scale);\n    guMtxF2L(sp28, m);\n}\n"
  },
  {
    "path": "lib/src/guPerspectiveF.c",
    "content": "#include \"libultra_internal.h\"\n\nvoid guPerspectiveF(float mf[4][4], u16 *perspNorm, float fovy, float aspect, float near, float far,\n                    float scale) {\n    float yscale;\n    int row;\n    int col;\n    guMtxIdentF(mf);\n    fovy *= GU_PI / 180.0;\n    yscale = cosf(fovy / 2) / sinf(fovy / 2);\n    mf[0][0] = yscale / aspect;\n    mf[1][1] = yscale;\n    mf[2][2] = (near + far) / (near - far);\n    mf[2][3] = -1;\n    mf[3][2] = 2 * near * far / (near - far);\n    mf[3][3] = 0.0f;\n    for (row = 0; row < 4; row++) {\n        for (col = 0; col < 4; col++) {\n            mf[row][col] *= scale;\n        }\n    }\n    if (perspNorm != NULL) {\n        if (near + far <= 2.0) {\n            *perspNorm = 65535;\n        } else {\n            *perspNorm = (double) (1 << 17) / (near + far);\n            if (*perspNorm <= 0) {\n                *perspNorm = 1;\n            }\n        }\n    }\n}\n\nvoid guPerspective(Mtx *m, u16 *perspNorm, float fovy, float aspect, float near, float far,\n                   float scale) {\n    float mat[4][4];\n    guPerspectiveF(mat, perspNorm, fovy, aspect, near, far, scale);\n    guMtxF2L(mat, m);\n}\n"
  },
  {
    "path": "lib/src/guRotateF.c",
    "content": "#include \"libultra_internal.h\"\n\nvoid guRotateF(float m[4][4], float a, float x, float y, float z) {\n    static f32 pi_180 = GU_PI / 180.0f;\n    f32 sin_a;\n    f32 cos_a;\n    f32 ab;\n    f32 bc;\n    f32 ca;\n    f32 t;\n#ifdef VERSION_CN\n    f32 xs;\n    f32 ys;\n    f32 zs;\n#else\n    f32 xx, yy, zz;\n#endif\n\n    guNormalize(&x, &y, &z);\n\n    a = a * pi_180;\n\n    sin_a = sinf(a);\n    cos_a = cosf(a);\n    t = 1 - cos_a;\n\n    ab = x * y * t;\n    bc = y * z * t;\n    ca = z * x * t;\n\n    guMtxIdentF(m);\n\n    // TODO: Merge IDO/GCC\n#ifdef VERSION_CN\n    xs = x * sin_a;\n    t = x * x;\n    m[0][0] = t + cos_a * (1 - t);\n    m[2][1] = bc - xs;\n    m[1][2] = bc + xs;\n\n    ys = y * sin_a;\n    t = y * y;\n    m[1][1] = t + cos_a * (1 - t);\n    m[2][0] = ca + ys;\n    m[0][2] = ca - ys;\n\n    zs = z * sin_a;\n    t = z * z;\n    m[2][2] = t + cos_a * (1 - t);\n    m[1][0] = ab - zs;\n    m[0][1] = ab + zs;\n#else\n    xx = x * x;\n    m[0][0] = xx + cos_a * (1 - xx);\n    m[2][1] = bc - (x * sin_a);\n    m[1][2] = bc + (x * sin_a);\n\n    yy = y * y;\n    m[1][1] = yy + cos_a * (1 - yy);\n    m[2][0] = ca + (y * sin_a);\n    m[0][2] = ca - (y * sin_a);\n\n    zz = z * z;\n    m[2][2] = zz + cos_a * (1 - zz);\n    m[1][0] = ab - (z * sin_a);\n    m[0][1] = ab + (z * sin_a);\n#endif\n}\n\nvoid guRotate(Mtx *m, float a, float x, float y, float z) {\n    float mf[4][4];\n    guRotateF(mf, a, x, y, z);\n    guMtxF2L(mf, m);\n}\n"
  },
  {
    "path": "lib/src/guScaleF.c",
    "content": "#include \"libultra_internal.h\"\n\n#if !defined(VERSION_CN) || !defined(TARGET_N64)\n\nvoid guScaleF(float mf[4][4], float x, float y, float z) {\n    guMtxIdentF(mf);\n    mf[0][0] = x;\n    mf[1][1] = y;\n    mf[2][2] = z;\n    mf[3][3] = 1.0;\n}\n\nvoid guScale(Mtx *m, float x, float y, float z) {\n    float mf[4][4];\n    guScaleF(mf, x, y, z);\n    guMtxF2L(mf, m);\n}\n\n#endif\n"
  },
  {
    "path": "lib/src/guTranslateF.c",
    "content": "#include \"libultra_internal.h\"\n\n#if !defined(VERSION_CN) || !defined(TARGET_N64)\n\nvoid guTranslateF(float m[4][4], float x, float y, float z) {\n    guMtxIdentF(m);\n    m[3][0] = x;\n    m[3][1] = y;\n    m[3][2] = z;\n}\n\nvoid guTranslate(Mtx *m, float x, float y, float z) {\n    float mf[4][4];\n    guTranslateF(mf, x, y, z);\n    guMtxF2L(mf, m);\n}\n\n#endif\n"
  },
  {
    "path": "lib/src/kdebugserver.c",
    "content": "#include \"libultra_internal.h\"\n#include \"PR/rdb.h\"\n\n#ifndef VERSION_CN\nstatic s32 debugState = 0;\nstatic s32 numChars = 0;\nstatic s32 numCharsToReceive = 0;\n#endif\n\nextern u8 debugBuffer[0x100];\n\nOSThread __osThreadSave;\n\n#ifndef VERSION_CN\nvoid u32_to_string(u32 i, u8 *str) {\n    str[0] = (i >> 0x18) & 0xff;\n    str[1] = (i >> 0x10) & 0xff;\n    str[2] = (i >> 0x8) & 0xff;\n    str[3] = i & 0xff;\n}\n\nu32 string_to_u32(u8 *str) {\n    u32 i;\n    i = (str[0] & 0xff) << 0x18;\n    i |= (str[1] & 0xff) << 0x10;\n    i |= (str[2] & 0xff) << 0x8;\n    i |= (str[3] & 0xff);\n    return i;\n}\n\nvoid send_packet(u8 *a0, s32 a1) {\n    rdbPacket pkt;\n    s32 i;\n    pkt.type = 2;\n    for (pkt.length = a1, i = 0; i < a1; i++) {\n        pkt.buf[i] = a0[i];\n    }\n    *(volatile u32 *) RDB_BASE_REG = *(u32 *) &pkt;\n    while (!(__osGetCause() & 0x2000)) {\n        ;\n    }\n    *(volatile u32 *) RDB_READ_INTR_REG = 0;\n}\n\nvoid send(u8 *buff, s32 len) {\n    s32 i;\n    s32 end;\n    s32 rem;\n    if (!__osRdbWriteOK) {\n        while (!(__osGetCause() & 0x2000)) {\n            ;\n        }\n        *(volatile u32 *) RDB_READ_INTR_REG = 0;\n        __osRdbWriteOK = 1;\n    }\n    i = 0;\n    rem = len % 3;\n    end = len - rem;\n    for (; i < end; i += 3) {\n        send_packet(&buff[i], 3);\n    }\n    if (rem > 0) {\n        send_packet(&buff[end], rem);\n    }\n}\n\nvoid process_command_memory(void) {\n    u32 sp1c;\n    u32 sp18;\n    sp1c = string_to_u32(&debugBuffer[1]);\n    sp18 = string_to_u32(&debugBuffer[5]);\n    send((u8 *) (uintptr_t) sp1c, sp18);\n}\n\nvoid process_command_register(void) {\n    send((u8 *) &__osThreadSave.context, sizeof(__OSThreadContext));\n}\n\nvoid kdebugserver(u32 a0) {\n    u32 sp2c;\n    rdbPacket pkt;\n    *(u32 *) &pkt = a0;\n    for (sp2c = 0; sp2c < pkt.length; sp2c++) {\n        debugBuffer[numChars] = pkt.buf[sp2c];\n        numChars++;\n    }\n    numCharsToReceive -= pkt.length;\n    switch (debugState) {\n        case 0:\n            switch (pkt.buf[0]) {\n                case 1:\n                    debugState = 1;\n                    numCharsToReceive = 9 - pkt.length;\n                    break;\n                case 2:\n                    process_command_register();\n                    debugState = 0;\n                    numChars = 0;\n                    numCharsToReceive = 0;\n                    break;\n                default:\n                    debugState = 0;\n                    numChars = 0;\n                    numCharsToReceive = 0;\n                    break;\n            }\n            break;\n        case 1:\n            if (numCharsToReceive <= 0) {\n                if (debugBuffer[0] == 1) {\n                    process_command_memory();\n                    debugState = 0;\n                    numChars = 0;\n                    numCharsToReceive = 0;\n                } else {\n                    debugState = 0;\n                    numChars = 0;\n                    numCharsToReceive = 0;\n                }\n            }\n            break;\n        default:\n            debugState = 0;\n            numChars = 0;\n            numCharsToReceive = 0;\n            break;\n    }\n}\n#endif\n"
  },
  {
    "path": "lib/src/kdebugserver_stack.c",
    "content": "#include \"libultra_internal.h\"\n\n#if defined(VERSION_JP) || defined(VERSION_US)\nu8 debugBuffer[0x100];\n#endif\n"
  },
  {
    "path": "lib/src/ldiv.c",
    "content": "#include \"libultra_internal.h\"\n#include <stdlib.h>\n\n// for some reason the order of the functions has been swapped\n\n#ifdef VERSION_CN\nldiv_t ldiv(long num, long denom) {\n    ldiv_t ret;\n\n    ret.quot = num / denom;\n    ret.rem = num - denom * ret.quot;\n    if (ret.quot < 0 && ret.rem > 0) {\n        ret.quot++;\n        ret.rem -= denom;\n    }\n\n    return ret;\n}\n#endif\n\nlldiv_t lldiv(long long num, long long denom) {\n    lldiv_t ret;\n\n    ret.quot = num / denom;\n    ret.rem = num - denom * ret.quot;\n    if (ret.quot < 0 && ret.rem > 0) {\n        ret.quot++;\n        ret.rem -= denom;\n    }\n\n    return ret;\n}\n\n#ifndef VERSION_CN\nldiv_t ldiv(long num, long denom) {\n    ldiv_t ret;\n\n    ret.quot = num / denom;\n    ret.rem = num - denom * ret.quot;\n    if (ret.quot < 0 && ret.rem > 0) {\n        ret.quot++;\n        ret.rem -= denom;\n    }\n\n    return ret;\n}\n#endif\n"
  },
  {
    "path": "lib/src/leointerrupt.c",
    "content": "#include \"libultra_internal.h\"\n#include \"PR/rcp.h\"\n#include \"bstring.h\"\n#include \"new_func.h\"\n#include \"macros.h\"\n#include \"piint.h\"\n#include \"osint.h\"\n\nu8 leoDiskStack[OS_PIM_STACKSIZE]; // technically should have a OS_LEO_STACKSIZE or something..\n\nstatic void __osLeoResume(void);\nstatic void __osLeoAbnormalResume(void);\n\ns32 __osLeoInterrupt(void) {\n    u32 stat;\n#ifdef VERSION_EU\n    u32 pi_stat;\n#else // VERSION_SH\n    volatile u32 pi_stat;\n#endif\n    u32 bm_stat;\n    __OSTranxInfo *info;\n    __OSBlockInfo *blockInfo;\n\n#ifdef VERSION_EU\n    if (!osDDActive) {\n        return 0;\n    }\n#else // VERSION_SH\n    stat = 0;\n#endif\n\n    info = &__osDiskHandle->transferInfo;\n    blockInfo = &info->block[info->blockNum];\n    pi_stat = IO_READ(PI_STATUS_REG);\n    if (pi_stat & PI_STATUS_DMA_BUSY) {\n#ifdef VERSION_EU\n        IO_WRITE(PI_STATUS_REG, PI_STATUS_RESET | PI_STATUS_CLR_INTR);\n        WAIT_ON_LEO_IO_BUSY(pi_stat);\n        stat = IO_READ(LEO_STATUS);\n        if (stat & LEO_STATUS_MECHANIC_INTERRUPT) {\n            WAIT_ON_LEO_IO_BUSY(pi_stat);\n            IO_WRITE(LEO_BM_CTL, info->bmCtlShadow | LEO_BM_CTL_CLR_MECHANIC_INTR);\n        }\n        info->errStatus = LEO_ERROR_75;\n        __osLeoAbnormalResume();\n#else // VERSION_SH\n        __OSGlobalIntMask = __OSGlobalIntMask & ~SR_IBIT4; //cartridge interrupt\n        blockInfo->errStatus = LEO_ERROR_29;\n        __osLeoResume();\n#endif\n        return 1;\n    }\n    WAIT_ON_LEO_IO_BUSY(pi_stat);\n    stat = IO_READ(LEO_STATUS);\n    if (stat & LEO_STATUS_MECHANIC_INTERRUPT) {\n        WAIT_ON_LEO_IO_BUSY(pi_stat);\n        IO_WRITE(LEO_BM_CTL, info->bmCtlShadow | LEO_BM_CTL_CLR_MECHANIC_INTR);\n#ifdef VERSION_EU\n        info->errStatus = LEO_ERROR_GOOD;\n#else // VERSION_SH\n        blockInfo->errStatus = LEO_ERROR_GOOD;\n#endif\n        return 0;\n    }\n\n#ifdef VERSION_SH\n    if (info->cmdType == LEO_CMD_TYPE_2) {\n        return 1;\n    }\n#endif\n\n    if (stat & LEO_STATUS_BUFFER_MANAGER_ERROR) {\n#ifdef VERSION_EU\n        info->errStatus = LEO_ERROR_3;\n        __osLeoAbnormalResume();\n#else //VERSION_SH\n        WAIT_ON_LEO_IO_BUSY(pi_stat);\n        stat = IO_READ(LEO_STATUS);\n        blockInfo->errStatus = LEO_ERROR_22;\n        __osLeoResume();\n        IO_WRITE(PI_STATUS_REG, PI_STATUS_CLR_INTR);\n        __OSGlobalIntMask |= OS_IM_PI;\n#endif\n        return 1;\n    }\n\n    if (info->cmdType == LEO_CMD_TYPE_1) {\n        if ((stat & LEO_STATUS_DATA_REQUEST) == 0) {\n            if (info->sectorNum + 1 != info->transferMode * 85) {\n#ifdef VERSION_EU\n                info->errStatus = LEO_ERROR_6;\n#else // VERSION_SH\n                blockInfo->errStatus = LEO_ERROR_24;\n#endif\n                __osLeoAbnormalResume();\n                return 1;\n            }\n            IO_WRITE(PI_STATUS_REG, PI_STATUS_CLR_INTR);\n            __OSGlobalIntMask |= OS_IM_PI;\n#ifdef VERSION_EU\n            info->errStatus = LEO_ERROR_GOOD;\n#else // VERSION_SH\n            blockInfo->errStatus = LEO_ERROR_GOOD;\n#endif\n            __osLeoResume();\n            return 1;\n        }\n        blockInfo->dramAddr = (void *) ((u32)blockInfo->dramAddr + blockInfo->sectorSize);\n        info->sectorNum++;\n        osEPiRawStartDma(__osDiskHandle, OS_WRITE, LEO_SECTOR_BUFF, blockInfo->dramAddr, blockInfo->sectorSize);\n        return 1;\n    }\n    if (info->cmdType == LEO_CMD_TYPE_0) {\n        if (info->transferMode == LEO_SECTOR_MODE) {\n            if ((s32)blockInfo->C1ErrNum + 17 < info->sectorNum) {\n#ifdef VERSION_EU\n                info->errStatus = LEO_ERROR_GOOD;\n#else // VERSION_SH\n                blockInfo->errStatus = LEO_ERROR_GOOD;\n#endif\n                __osLeoAbnormalResume();\n                return 1;\n            }\n            if ((stat & LEO_STATUS_DATA_REQUEST) == 0) {\n#ifdef VERSION_EU\n                info->errStatus = LEO_ERROR_17;\n#else // VERSION_SH\n                blockInfo->errStatus = LEO_ERROR_23;\n#endif\n                __osLeoAbnormalResume();\n                return 1;\n            }\n        } else {\n            blockInfo->dramAddr = (void *)((u32)blockInfo->dramAddr + blockInfo->sectorSize);\n        }\n        bm_stat = IO_READ(LEO_BM_STATUS);\n        if ((bm_stat & LEO_BM_STATUS_C1SINGLE && bm_stat & LEO_BM_STATUS_C1DOUBLE) || bm_stat & LEO_BM_STATUS_MICRO) {\n            if (blockInfo->C1ErrNum > 3) {\n                if (info->transferMode != LEO_SECTOR_MODE || info->sectorNum > 0x52) {\n#ifdef VERSION_EU\n                info->errStatus = LEO_ERROR_17;\n#else // VERSION_SH\n                blockInfo->errStatus = LEO_ERROR_23;\n#endif\n                    __osLeoAbnormalResume();\n                    return 1;\n                }\n            } else {\n                s32 errNum = blockInfo->C1ErrNum;\n                blockInfo->C1ErrSector[errNum] = info->sectorNum + 1;\n            }\n            blockInfo->C1ErrNum++;\n        }\n\n        if (stat & LEO_STATUS_C2_TRANSFER) {\n            if (info->sectorNum != 87) {\n#ifdef VERSION_EU\n                info->errStatus = LEO_ERROR_6;\n#else // VERSION_SH\n                blockInfo->errStatus = LEO_ERROR_24;\n#endif\n                __osLeoAbnormalResume();\n            }\n            if (info->transferMode == LEO_TRACK_MODE && info->blockNum == 0) {\n                info->blockNum = 1;\n                info->sectorNum = -1;\n                info->block[1].dramAddr = (void *)((u32)info->block[1].dramAddr - info->block[1].sectorSize);\n#ifdef VERSION_SH\n                blockInfo->errStatus = LEO_ERROR_22;\n#endif\n            } else {\n                IO_WRITE(PI_STATUS_REG, PI_STATUS_CLR_INTR);\n                __OSGlobalIntMask |= OS_IM_PI;\n#ifdef VERSION_SH\n                info->cmdType = LEO_CMD_TYPE_2;\n                blockInfo->errStatus = LEO_ERROR_GOOD;\n#endif\n            }\n            osEPiRawStartDma(__osDiskHandle, OS_READ, LEO_C2_BUFF, blockInfo->C2Addr, blockInfo->sectorSize * 4);\n#ifdef VERSION_EU\n            info->errStatus = LEO_ERROR_GOOD;\n#endif\n            return 1;\n        }\n        if (info->sectorNum == -1 && info->transferMode == LEO_TRACK_MODE && info->blockNum == 1) {\n            __OSBlockInfo *bptr = &info->block[0];\n            if (bptr->C1ErrNum == 0) {\n                if (((u32 *)bptr->C2Addr)[0] | ((u32 *)bptr->C2Addr)[1] | ((u32 *)bptr->C2Addr)[2] | ((u32 *)bptr->C2Addr)[3]) {\n#ifdef VERSION_EU\n                info->errStatus = LEO_ERROR_6;\n#else // VERSION_SH\n                bptr->errStatus = LEO_ERROR_24;\n#endif\n                    __osLeoAbnormalResume();\n                    return 1;\n                }\n            }\n#ifdef VERSION_EU\n                info->errStatus = LEO_ERROR_GOOD;\n#else // VERSION_SH\n                bptr->errStatus = LEO_ERROR_GOOD;\n#endif\n            __osLeoResume();\n        }\n        info->sectorNum++;\n        if (stat & LEO_STATUS_DATA_REQUEST) {\n            if (info->sectorNum > 0x54) {\n#ifdef VERSION_EU\n                info->errStatus = LEO_ERROR_6;\n#else // VERSION_SH\n                blockInfo->errStatus = LEO_ERROR_24;\n#endif\n                __osLeoAbnormalResume();\n                return 1;\n            }\n            osEPiRawStartDma(__osDiskHandle, 0, LEO_SECTOR_BUFF, blockInfo->dramAddr, blockInfo->sectorSize);\n#ifdef VERSION_EU\n                info->errStatus = LEO_ERROR_GOOD;\n#else // VERSION_SH\n                blockInfo->errStatus = LEO_ERROR_GOOD;\n#endif\n            return 1;\n        }\n        if (info->sectorNum <= 0x54) {\n#ifdef VERSION_EU\n            info->errStatus = LEO_ERROR_6;\n#else // VERSION_SH\n            blockInfo->errStatus = LEO_ERROR_24;\n#endif\n            __osLeoAbnormalResume();\n            return 1;\n        }\n        return 1;\n    }\n#ifdef VERSION_EU\n    info->errStatus = LEO_ERROR_75;\n#else // VERSION_SH\n    blockInfo->errStatus = LEO_ERROR_4;\n#endif\n\n    __osLeoAbnormalResume();\n    return 1;\n}\n\nstatic void __osLeoAbnormalResume(void) {\n    __OSTranxInfo *info;\n    u32 pi_stat;\n    info = &__osDiskHandle->transferInfo;\n    WAIT_ON_LEO_IO_BUSY(pi_stat);\n    IO_WRITE(LEO_BM_CTL, info->bmCtlShadow | LEO_BM_CTL_RESET);\n    WAIT_ON_LEO_IO_BUSY(pi_stat);\n    IO_WRITE(LEO_BM_CTL, info->bmCtlShadow);\n    __osLeoResume();\n    IO_WRITE(PI_STATUS_REG, PI_STATUS_CLR_INTR);\n    __OSGlobalIntMask |= OS_IM_PI;\n}\n\nstatic void __osLeoResume(void) {\n    __OSEventState *es;\n    OSMesgQueue *mq;\n    s32 last;\n    es = &__osEventStateTab[OS_EVENT_PI];\n    mq = es->messageQueue;\n    if (mq == NULL || MQ_IS_FULL(mq)) {\n        return;\n    }\n    last = (mq->first + mq->validCount) % mq->msgCount;\n    mq->msg[last] = es->message;\n    mq->validCount++;\n    if (mq->mtqueue->next != NULL) {\n        __osEnqueueThread(&__osRunQueue, __osPopThread(&mq->mtqueue));\n    }\n}\n"
  },
  {
    "path": "lib/src/libaudio_internal.h",
    "content": "#ifndef _LIBAUDIO_INTERNAL_H_\n#define _LIBAUDIO_INTERNAL_H_\n#include <ultra64.h>\n#define AL_BANK_VERSION 0x4231 /* 'B1' */\n\ntypedef u8 ALPan;\ntypedef s32 ALMicroTime;\n\n/* Possible wavetable types */\nenum\n{\n    AL_ADPCM_WAVE = 0,\n    AL_RAW16_WAVE\n};\n\ntypedef struct\n{\n    u32 start;\n    u32 end;\n    u32 count;\n} ALRawLoop;\n\ntypedef struct\n{\n    u32 start;\n    u32 end;\n    u32 count;\n    ADPCM_STATE state;\n} ALADPCMloop;\n\ntypedef struct\n{\n    s32 order;\n    s32 npredictors;\n    s16 book[1]; // variable size, 8-byte aligned\n} ALADPCMBook;\n\ntypedef struct\n{\n    ALMicroTime attackTime;\n    ALMicroTime decayTime;\n    ALMicroTime releaseTime;\n    u8 attackVolume;\n    u8 decayVolume;\n} ALEnvelope;\n\ntypedef struct\n{\n    u8 velocityMin;\n    u8 velocityMax;\n    u8 keyMin;\n    u8 keyMax;\n    u8 keyBase;\n    s8 detune;\n} ALKeyMap;\n\ntypedef struct\n{\n    ALADPCMloop *loop;\n    ALADPCMBook *book;\n} ALADPCMWaveInfo;\n\ntypedef struct\n{\n    ALRawLoop *loop;\n} ALRAWWaveInfo;\n\ntypedef struct ALWaveTable_s\n{\n    u8 *base; /* ptr to start of wave data    */\n    s32 len;  /* length of data in bytes      */\n    u8 type;  /* compression type             */\n    u8 flags; /* offset/address flags         */\n    union {\n        ALADPCMWaveInfo adpcmWave;\n        ALRAWWaveInfo rawWave;\n    } waveInfo;\n} ALWaveTable;\n\ntypedef struct ALSound_s\n{\n    ALEnvelope *envelope;\n    ALKeyMap *keyMap;\n    ALWaveTable *wavetable; /* offset to wavetable struct           */\n    ALPan samplePan;\n    u8 sampleVolume;\n    u8 flags;\n} ALSound;\n\ntypedef struct\n{\n    u8 volume;   /* overall volume for this instrument   */\n    ALPan pan;   /* 0 = hard left, 127 = hard right      */\n    u8 priority; /* voice priority for this instrument   */\n    u8 flags;\n    u8 tremType;    /* the type of tremelo osc. to use      */\n    u8 tremRate;    /* the rate of the tremelo osc.         */\n    u8 tremDepth;   /* the depth of the tremelo osc         */\n    u8 tremDelay;   /* the delay for the tremelo osc        */\n    u8 vibType;     /* the type of tremelo osc. to use      */\n    u8 vibRate;     /* the rate of the tremelo osc.         */\n    u8 vibDepth;    /* the depth of the tremelo osc         */\n    u8 vibDelay;    /* the delay for the tremelo osc        */\n    s16 bendRange;  /* pitch bend range in cents            */\n    s16 soundCount; /* number of sounds in this array       */\n    ALSound *soundArray[1];\n} ALInstrument;\n\ntypedef struct ALBank_s\n{\n    s16 instCount; /* number of programs in this bank */\n    u8 flags;\n    u8 pad;\n    s32 sampleRate;             /* e.g. 44100, 22050, etc...       */\n    ALInstrument *percussion;   /* default percussion for GM       */\n    ALInstrument *instArray[1]; /* ARRAY of instruments            */\n} ALBank;\n\ntypedef struct\n{                         /* Note: sizeof won't be correct        */\n    s16 revision;         /* format revision of this file         */\n    s16 bankCount;        /* number of banks                      */\n    ALBank *bankArray[1]; /* ARRAY of bank offsets                */\n} ALBankFile;\n\nvoid alBnkfNew(ALBankFile *f, u8 *table);\n#endif\n"
  },
  {
    "path": "lib/src/libgcc/_cmpdi2.c",
    "content": "#define L_cmpdi2\n#include \"libgcc2.inc\"\n"
  },
  {
    "path": "lib/src/libgcc/_divdi3.c",
    "content": "#define L_divdi3\n#include \"libgcc2.inc\"\n"
  },
  {
    "path": "lib/src/libgcc/_fixdfdi.c",
    "content": "#define L_fixdfdi\n#include \"libgcc2.inc\"\n"
  },
  {
    "path": "lib/src/libgcc/_fixsfdi.c",
    "content": "#define L_fixsfdi\n#include \"libgcc2.inc\"\n"
  },
  {
    "path": "lib/src/libgcc/_fixunsdfdi.c",
    "content": "#define L_fixunsdfdi\n#include \"libgcc2.inc\"\n"
  },
  {
    "path": "lib/src/libgcc/_fixunssfdi.c",
    "content": "#define L_fixunssfdi\n#include \"libgcc2.inc\"\n"
  },
  {
    "path": "lib/src/libgcc/_floatdidf.c",
    "content": "#define L_floatdidf\n#include \"libgcc2.inc\"\n"
  },
  {
    "path": "lib/src/libgcc/_floatdisf.c",
    "content": "#define L_floatdisf\n#include \"libgcc2.inc\"\n"
  },
  {
    "path": "lib/src/libgcc/_moddi3.c",
    "content": "#define L_moddi3\n#include \"libgcc2.inc\"\n"
  },
  {
    "path": "lib/src/libgcc/_udivdi3.c",
    "content": "#define L_udivdi3\n#include \"libgcc2.inc\"\n"
  },
  {
    "path": "lib/src/libgcc/_umoddi3.c",
    "content": "#define L_umoddi3\n#include \"libgcc2.inc\"\n"
  },
  {
    "path": "lib/src/libgcc/libgcc2.inc",
    "content": "// This file is copied from gcc 2.95.2\n// tconfig.h, machmode.h, defaults.h and stddef.h have been un-included\n\n#define LIBGCC2_WORDS_BIG_ENDIAN 1\n#define BITS_PER_UNIT 8\n#define inhibit_libc\n\n/* More subroutines needed by GCC output code on some machines.  */\n/* Compile this one with gcc.  */\n/* Copyright (C) 1989, 92-98, 1999 Free Software Foundation, Inc.\n\nThis file is part of GNU CC.\n\nGNU CC is free software; you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation; either version 2, or (at your option)\nany later version.\n\nGNU CC is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with GNU CC; see the file COPYING.  If not, write to\nthe Free Software Foundation, 59 Temple Place - Suite 330,\nBoston, MA 02111-1307, USA.  */\n\n/* As a special exception, if you link this library with other files,\n   some of which are compiled with GCC, to produce an executable,\n   this library does not by itself cause the resulting executable\n   to be covered by the GNU General Public License.\n   This exception does not however invalidate any other reasons why\n   the executable file might be covered by the GNU General Public License.  */\n\n/* It is incorrect to include config.h here, because this file is being\n   compiled for the target, and hence definitions concerning only the host\n   do not apply.  */\n\n//#include \"tconfig.h\"\n\n/* We disable this when inhibit_libc, so that gcc can still be built without\n   needing header files first.  */\n/* ??? This is not a good solution, since prototypes may be required in\n   some cases for correct code.  See also frame.c.  */\n#ifndef inhibit_libc\n/* fixproto guarantees these system headers exist. */\n#include <stdlib.h>\n#include <unistd.h>\n#endif\n\n//#include \"machmode.h\"\n//#include \"defaults.h\"\n#ifndef L_trampoline\n//#include <stddef.h>\n#endif\n\n/* Don't use `fancy_abort' here even if config.h says to use it.  */\n#ifdef abort\n#undef abort\n#endif\n\n#if (SUPPORTS_WEAK == 1) && (defined (ASM_OUTPUT_DEF) || defined (ASM_OUTPUT_WEAK_ALIAS))\n#define WEAK_ALIAS\n#endif\n\n/* In a cross-compilation situation, default to inhibiting compilation\n   of routines that use libc.  */\n\n#if defined(CROSS_COMPILE) && !defined(inhibit_libc)\n#define inhibit_libc\n#endif\n\n/* Permit the tm.h file to select the endianness to use just for this\n   file.  This is used when the endianness is determined when the\n   compiler is run.  */\n\n#ifndef LIBGCC2_WORDS_BIG_ENDIAN\n#define LIBGCC2_WORDS_BIG_ENDIAN WORDS_BIG_ENDIAN\n#endif\n\n#ifndef LIBGCC2_LONG_DOUBLE_TYPE_SIZE\n#define LIBGCC2_LONG_DOUBLE_TYPE_SIZE LONG_DOUBLE_TYPE_SIZE\n#endif\n\n/* In the first part of this file, we are interfacing to calls generated\n   by the compiler itself.  These calls pass values into these routines\n   which have very specific modes (rather than very specific types), and\n   these compiler-generated calls also expect any return values to have\n   very specific modes (rather than very specific types).  Thus, we need\n   to avoid using regular C language type names in this part of the file\n   because the sizes for those types can be configured to be anything.\n   Instead we use the following special type names.  */\n\ntypedef unsigned int UQItype\t__attribute__ ((mode (QI)));\ntypedef \t int SItype\t__attribute__ ((mode (SI)));\ntypedef unsigned int USItype\t__attribute__ ((mode (SI)));\ntypedef\t\t int DItype\t__attribute__ ((mode (DI)));\ntypedef unsigned int UDItype\t__attribute__ ((mode (DI)));\n\ntypedef \tfloat SFtype\t__attribute__ ((mode (SF)));\ntypedef\t\tfloat DFtype\t__attribute__ ((mode (DF)));\n\n#if LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 96\ntypedef\t\tfloat XFtype\t__attribute__ ((mode (XF)));\n#endif\n#if LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 128\ntypedef\t\tfloat TFtype\t__attribute__ ((mode (TF)));\n#endif\n\ntypedef int word_type __attribute__ ((mode (__word__)));\n\n/* Make sure that we don't accidentally use any normal C language built-in\n   type names in the first part of this file.  Instead we want to use *only*\n   the type names defined above.  The following macro definitions insure\n   that if we *do* accidentally use some normal C language built-in type name,\n   we will get a syntax error.  */\n\n#define char bogus_type\n#define short bogus_type\n#define int bogus_type\n#define long bogus_type\n#define unsigned bogus_type\n#define float bogus_type\n#define double bogus_type\n\n#define SI_TYPE_SIZE (sizeof (SItype) * BITS_PER_UNIT)\n\n/* DIstructs are pairs of SItype values in the order determined by\n   LIBGCC2_WORDS_BIG_ENDIAN.  */\n\n#if LIBGCC2_WORDS_BIG_ENDIAN\n  struct DIstruct {SItype high, low;};\n#else\n  struct DIstruct {SItype low, high;};\n#endif\n\n/* We need this union to unpack/pack DImode values, since we don't have\n   any arithmetic yet.  Incoming DImode parameters are stored into the\n   `ll' field, and the unpacked result is read from the struct `s'.  */\n\ntypedef union\n{\n  struct DIstruct s;\n  DItype ll;\n} DIunion;\n\n#if (defined (L_udivmoddi4) || defined (L_muldi3) || defined (L_udiv_w_sdiv)\\\n     || defined (L_divdi3) || defined (L_udivdi3) \\\n     || defined (L_moddi3) || defined (L_umoddi3))\n\n#include \"longlong.h\"\n\n#endif /* udiv or mul */\n\nextern DItype __fixunssfdi (SFtype a);\nextern DItype __fixunsdfdi (DFtype a);\n#if LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 96\nextern DItype __fixunsxfdi (XFtype a);\n#endif\n#if LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 128\nextern DItype __fixunstfdi (TFtype a);\n#endif\n\f\n#if defined (L_negdi2) || defined (L_divdi3) || defined (L_moddi3)\n#if defined (L_divdi3) || defined (L_moddi3)\nstatic inline\n#endif\nDItype\n__negdi2 (DItype u)\n{\n  DIunion w;\n  DIunion uu;\n\n  uu.ll = u;\n\n  w.s.low = -uu.s.low;\n  w.s.high = -uu.s.high - ((USItype) w.s.low > 0);\n\n  return w.ll;\n}\n#endif\n\f\n/* Unless shift functions are defined whith full ANSI prototypes,\n   parameter b will be promoted to int if word_type is smaller than an int.  */\n#ifdef L_lshrdi3\nDItype\n__lshrdi3 (DItype u, word_type b)\n{\n  DIunion w;\n  word_type bm;\n  DIunion uu;\n\n  if (b == 0)\n    return u;\n\n  uu.ll = u;\n\n  bm = (sizeof (SItype) * BITS_PER_UNIT) - b;\n  if (bm <= 0)\n    {\n      w.s.high = 0;\n      w.s.low = (USItype)uu.s.high >> -bm;\n    }\n  else\n    {\n      USItype carries = (USItype)uu.s.high << bm;\n      w.s.high = (USItype)uu.s.high >> b;\n      w.s.low = ((USItype)uu.s.low >> b) | carries;\n    }\n\n  return w.ll;\n}\n#endif\n\n#ifdef L_ashldi3\nDItype\n__ashldi3 (DItype u, word_type b)\n{\n  DIunion w;\n  word_type bm;\n  DIunion uu;\n\n  if (b == 0)\n    return u;\n\n  uu.ll = u;\n\n  bm = (sizeof (SItype) * BITS_PER_UNIT) - b;\n  if (bm <= 0)\n    {\n      w.s.low = 0;\n      w.s.high = (USItype)uu.s.low << -bm;\n    }\n  else\n    {\n      USItype carries = (USItype)uu.s.low >> bm;\n      w.s.low = (USItype)uu.s.low << b;\n      w.s.high = ((USItype)uu.s.high << b) | carries;\n    }\n\n  return w.ll;\n}\n#endif\n\n#ifdef L_ashrdi3\nDItype\n__ashrdi3 (DItype u, word_type b)\n{\n  DIunion w;\n  word_type bm;\n  DIunion uu;\n\n  if (b == 0)\n    return u;\n\n  uu.ll = u;\n\n  bm = (sizeof (SItype) * BITS_PER_UNIT) - b;\n  if (bm <= 0)\n    {\n      /* w.s.high = 1..1 or 0..0 */\n      w.s.high = uu.s.high >> (sizeof (SItype) * BITS_PER_UNIT - 1);\n      w.s.low = uu.s.high >> -bm;\n    }\n  else\n    {\n      USItype carries = (USItype)uu.s.high << bm;\n      w.s.high = uu.s.high >> b;\n      w.s.low = ((USItype)uu.s.low >> b) | carries;\n    }\n\n  return w.ll;\n}\n#endif\n\f\n#ifdef L_ffsdi2\nDItype\n__ffsdi2 (DItype u)\n{\n  DIunion uu, w;\n  uu.ll = u;\n  w.s.high = 0;\n  w.s.low = ffs (uu.s.low);\n  if (w.s.low != 0)\n    return w.ll;\n  w.s.low = ffs (uu.s.high);\n  if (w.s.low != 0)\n    {\n      w.s.low += BITS_PER_UNIT * sizeof (SItype);\n      return w.ll;\n    }\n  return w.ll;\n}\n#endif\n\f\n#ifdef L_muldi3\nDItype\n__muldi3 (DItype u, DItype v)\n{\n  DIunion w;\n  DIunion uu, vv;\n\n  uu.ll = u,\n  vv.ll = v;\n\n  w.ll = __umulsidi3 (uu.s.low, vv.s.low);\n  w.s.high += ((USItype) uu.s.low * (USItype) vv.s.high\n\t       + (USItype) uu.s.high * (USItype) vv.s.low);\n\n  return w.ll;\n}\n#endif\n\f\n#ifdef L_udiv_w_sdiv\n#if defined (sdiv_qrnnd)\nUSItype\n__udiv_w_sdiv (USItype *rp, USItype a1, USItype a0, USItype d)\n{\n  USItype q, r;\n  USItype c0, c1, b1;\n\n  if ((SItype) d >= 0)\n    {\n      if (a1 < d - a1 - (a0 >> (SI_TYPE_SIZE - 1)))\n\t{\n\t  /* dividend, divisor, and quotient are nonnegative */\n\t  sdiv_qrnnd (q, r, a1, a0, d);\n\t}\n      else\n\t{\n\t  /* Compute c1*2^32 + c0 = a1*2^32 + a0 - 2^31*d */\n\t  sub_ddmmss (c1, c0, a1, a0, d >> 1, d << (SI_TYPE_SIZE - 1));\n\t  /* Divide (c1*2^32 + c0) by d */\n\t  sdiv_qrnnd (q, r, c1, c0, d);\n\t  /* Add 2^31 to quotient */\n\t  q += (USItype) 1 << (SI_TYPE_SIZE - 1);\n\t}\n    }\n  else\n    {\n      b1 = d >> 1;\t\t\t/* d/2, between 2^30 and 2^31 - 1 */\n      c1 = a1 >> 1;\t\t\t/* A/2 */\n      c0 = (a1 << (SI_TYPE_SIZE - 1)) + (a0 >> 1);\n\n      if (a1 < b1)\t\t\t/* A < 2^32*b1, so A/2 < 2^31*b1 */\n\t{\n\t  sdiv_qrnnd (q, r, c1, c0, b1); /* (A/2) / (d/2) */\n\n\t  r = 2*r + (a0 & 1);\t\t/* Remainder from A/(2*b1) */\n\t  if ((d & 1) != 0)\n\t    {\n\t      if (r >= q)\n\t\tr = r - q;\n\t      else if (q - r <= d)\n\t\t{\n\t\t  r = r - q + d;\n\t\t  q--;\n\t\t}\n\t      else\n\t\t{\n\t\t  r = r - q + 2*d;\n\t\t  q -= 2;\n\t\t}\n\t    }\n\t}\n      else if (c1 < b1)\t\t\t/* So 2^31 <= (A/2)/b1 < 2^32 */\n\t{\n\t  c1 = (b1 - 1) - c1;\n\t  c0 = ~c0;\t\t\t/* logical NOT */\n\n\t  sdiv_qrnnd (q, r, c1, c0, b1); /* (A/2) / (d/2) */\n\n\t  q = ~q;\t\t\t/* (A/2)/b1 */\n\t  r = (b1 - 1) - r;\n\n\t  r = 2*r + (a0 & 1);\t\t/* A/(2*b1) */\n\n\t  if ((d & 1) != 0)\n\t    {\n\t      if (r >= q)\n\t\tr = r - q;\n\t      else if (q - r <= d)\n\t\t{\n\t\t  r = r - q + d;\n\t\t  q--;\n\t\t}\n\t      else\n\t\t{\n\t\t  r = r - q + 2*d;\n\t\t  q -= 2;\n\t\t}\n\t    }\n\t}\n      else\t\t\t\t/* Implies c1 = b1 */\n\t{\t\t\t\t/* Hence a1 = d - 1 = 2*b1 - 1 */\n\t  if (a0 >= -d)\n\t    {\n\t      q = -1;\n\t      r = a0 + d;\n\t    }\n\t  else\n\t    {\n\t      q = -2;\n\t      r = a0 + 2*d;\n\t    }\n\t}\n    }\n\n  *rp = r;\n  return q;\n}\n#else\n/* If sdiv_qrnnd doesn't exist, define dummy __udiv_w_sdiv.  */\nUSItype\n__udiv_w_sdiv (USItype *rp __attribute__ ((__unused__)),\n\t       USItype a1 __attribute__ ((__unused__)),\n\t       USItype a0 __attribute__ ((__unused__)),\n\t       USItype d __attribute__ ((__unused__)))\n{\n  return 0;\n}\n#endif\n#endif\n\f\n#if (defined (L_udivdi3) || defined (L_divdi3) || \\\n     defined (L_umoddi3) || defined (L_moddi3))\n#define L_udivmoddi4\n#endif\n\n#ifdef L_udivmoddi4\nstatic const UQItype __clz_tab[] =\n{\n  0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,\n  6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,\n  7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,\n  7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,\n  8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,\n  8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,\n  8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,\n  8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,\n};\n\n#if (defined (L_udivdi3) || defined (L_divdi3) || \\\n     defined (L_umoddi3) || defined (L_moddi3))\nstatic inline\n#endif\nUDItype\n__udivmoddi4 (UDItype n, UDItype d, UDItype *rp)\n{\n  DIunion ww;\n  DIunion nn, dd;\n  DIunion rr;\n  USItype d0, d1, n0, n1, n2;\n  USItype q0, q1;\n  USItype b, bm;\n\n  nn.ll = n;\n  dd.ll = d;\n\n  d0 = dd.s.low;\n  d1 = dd.s.high;\n  n0 = nn.s.low;\n  n1 = nn.s.high;\n\n#if !UDIV_NEEDS_NORMALIZATION\n  if (d1 == 0)\n    {\n      if (d0 > n1)\n\t{\n\t  /* 0q = nn / 0D */\n\n\t  udiv_qrnnd (q0, n0, n1, n0, d0);\n\t  q1 = 0;\n\n\t  /* Remainder in n0.  */\n\t}\n      else\n\t{\n\t  /* qq = NN / 0d */\n\n\t  if (d0 == 0)\n\t    d0 = 1 / d0;\t/* Divide intentionally by zero.  */\n\n\t  udiv_qrnnd (q1, n1, 0, n1, d0);\n\t  udiv_qrnnd (q0, n0, n1, n0, d0);\n\n\t  /* Remainder in n0.  */\n\t}\n\n      if (rp != 0)\n\t{\n\t  rr.s.low = n0;\n\t  rr.s.high = 0;\n\t  *rp = rr.ll;\n\t}\n    }\n\n#else /* UDIV_NEEDS_NORMALIZATION */\n\n  if (d1 == 0)\n    {\n      if (d0 > n1)\n\t{\n\t  /* 0q = nn / 0D */\n\n\t  count_leading_zeros (bm, d0);\n\n\t  if (bm != 0)\n\t    {\n\t      /* Normalize, i.e. make the most significant bit of the\n\t\t denominator set.  */\n\n\t      d0 = d0 << bm;\n\t      n1 = (n1 << bm) | (n0 >> (SI_TYPE_SIZE - bm));\n\t      n0 = n0 << bm;\n\t    }\n\n\t  udiv_qrnnd (q0, n0, n1, n0, d0);\n\t  q1 = 0;\n\n\t  /* Remainder in n0 >> bm.  */\n\t}\n      else\n\t{\n\t  /* qq = NN / 0d */\n\n\t  if (d0 == 0)\n\t    d0 = 1 / d0;\t/* Divide intentionally by zero.  */\n\n\t  count_leading_zeros (bm, d0);\n\n\t  if (bm == 0)\n\t    {\n\t      /* From (n1 >= d0) /\\ (the most significant bit of d0 is set),\n\t\t conclude (the most significant bit of n1 is set) /\\ (the\n\t\t leading quotient digit q1 = 1).\n\n\t\t This special case is necessary, not an optimization.\n\t\t (Shifts counts of SI_TYPE_SIZE are undefined.)  */\n\n\t      n1 -= d0;\n\t      q1 = 1;\n\t    }\n\t  else\n\t    {\n\t      /* Normalize.  */\n\n\t      b = SI_TYPE_SIZE - bm;\n\n\t      d0 = d0 << bm;\n\t      n2 = n1 >> b;\n\t      n1 = (n1 << bm) | (n0 >> b);\n\t      n0 = n0 << bm;\n\n\t      udiv_qrnnd (q1, n1, n2, n1, d0);\n\t    }\n\n\t  /* n1 != d0...  */\n\n\t  udiv_qrnnd (q0, n0, n1, n0, d0);\n\n\t  /* Remainder in n0 >> bm.  */\n\t}\n\n      if (rp != 0)\n\t{\n\t  rr.s.low = n0 >> bm;\n\t  rr.s.high = 0;\n\t  *rp = rr.ll;\n\t}\n    }\n#endif /* UDIV_NEEDS_NORMALIZATION */\n\n  else\n    {\n      if (d1 > n1)\n\t{\n\t  /* 00 = nn / DD */\n\n\t  q0 = 0;\n\t  q1 = 0;\n\n\t  /* Remainder in n1n0.  */\n\t  if (rp != 0)\n\t    {\n\t      rr.s.low = n0;\n\t      rr.s.high = n1;\n\t      *rp = rr.ll;\n\t    }\n\t}\n      else\n\t{\n\t  /* 0q = NN / dd */\n\n\t  count_leading_zeros (bm, d1);\n\t  if (bm == 0)\n\t    {\n\t      /* From (n1 >= d1) /\\ (the most significant bit of d1 is set),\n\t\t conclude (the most significant bit of n1 is set) /\\ (the\n\t\t quotient digit q0 = 0 or 1).\n\n\t\t This special case is necessary, not an optimization.  */\n\n\t      /* The condition on the next line takes advantage of that\n\t\t n1 >= d1 (true due to program flow).  */\n\t      if (n1 > d1 || n0 >= d0)\n\t\t{\n\t\t  q0 = 1;\n\t\t  sub_ddmmss (n1, n0, n1, n0, d1, d0);\n\t\t}\n\t      else\n\t\tq0 = 0;\n\n\t      q1 = 0;\n\n\t      if (rp != 0)\n\t\t{\n\t\t  rr.s.low = n0;\n\t\t  rr.s.high = n1;\n\t\t  *rp = rr.ll;\n\t\t}\n\t    }\n\t  else\n\t    {\n\t      USItype m1, m0;\n\t      /* Normalize.  */\n\n\t      b = SI_TYPE_SIZE - bm;\n\n\t      d1 = (d1 << bm) | (d0 >> b);\n\t      d0 = d0 << bm;\n\t      n2 = n1 >> b;\n\t      n1 = (n1 << bm) | (n0 >> b);\n\t      n0 = n0 << bm;\n\n\t      udiv_qrnnd (q0, n1, n2, n1, d1);\n\t      umul_ppmm (m1, m0, q0, d0);\n\n\t      if (m1 > n1 || (m1 == n1 && m0 > n0))\n\t\t{\n\t\t  q0--;\n\t\t  sub_ddmmss (m1, m0, m1, m0, d1, d0);\n\t\t}\n\n\t      q1 = 0;\n\n\t      /* Remainder in (n1n0 - m1m0) >> bm.  */\n\t      if (rp != 0)\n\t\t{\n\t\t  sub_ddmmss (n1, n0, n1, n0, m1, m0);\n\t\t  rr.s.low = (n1 << b) | (n0 >> bm);\n\t\t  rr.s.high = n1 >> bm;\n\t\t  *rp = rr.ll;\n\t\t}\n\t    }\n\t}\n    }\n\n  ww.s.low = q0;\n  ww.s.high = q1;\n  return ww.ll;\n}\n#endif\n\n#ifdef L_divdi3\nUDItype __udivmoddi4 ();\n\nDItype\n__divdi3 (DItype u, DItype v)\n{\n  word_type c = 0;\n  DIunion uu, vv;\n  DItype w;\n\n  uu.ll = u;\n  vv.ll = v;\n\n  if (uu.s.high < 0)\n    c = ~c,\n    uu.ll = __negdi2 (uu.ll);\n  if (vv.s.high < 0)\n    c = ~c,\n    vv.ll = __negdi2 (vv.ll);\n\n  w = __udivmoddi4 (uu.ll, vv.ll, (UDItype *) 0);\n  if (c)\n    w = __negdi2 (w);\n\n  return w;\n}\n#endif\n\n#ifdef L_moddi3\nUDItype __udivmoddi4 ();\nDItype\n__moddi3 (DItype u, DItype v)\n{\n  word_type c = 0;\n  DIunion uu, vv;\n  DItype w;\n\n  uu.ll = u;\n  vv.ll = v;\n\n  if (uu.s.high < 0)\n    c = ~c,\n    uu.ll = __negdi2 (uu.ll);\n  if (vv.s.high < 0)\n    vv.ll = __negdi2 (vv.ll);\n\n  (void) __udivmoddi4 (uu.ll, vv.ll, &w);\n  if (c)\n    w = __negdi2 (w);\n\n  return w;\n}\n#endif\n\n#ifdef L_umoddi3\nUDItype __udivmoddi4 ();\nUDItype\n__umoddi3 (UDItype u, UDItype v)\n{\n  UDItype w;\n\n  (void) __udivmoddi4 (u, v, &w);\n\n  return w;\n}\n#endif\n\n#ifdef L_udivdi3\nUDItype __udivmoddi4 ();\nUDItype\n__udivdi3 (UDItype n, UDItype d)\n{\n  return __udivmoddi4 (n, d, (UDItype *) 0);\n}\n#endif\n\f\n#ifdef L_cmpdi2\nword_type\n__cmpdi2 (DItype a, DItype b)\n{\n  DIunion au, bu;\n\n  au.ll = a, bu.ll = b;\n\n  if (au.s.high < bu.s.high)\n    return 0;\n  else if (au.s.high > bu.s.high)\n    return 2;\n  if ((USItype) au.s.low < (USItype) bu.s.low)\n    return 0;\n  else if ((USItype) au.s.low > (USItype) bu.s.low)\n    return 2;\n  return 1;\n}\n#endif\n\n#ifdef L_ucmpdi2\nword_type\n__ucmpdi2 (DItype a, DItype b)\n{\n  DIunion au, bu;\n\n  au.ll = a, bu.ll = b;\n\n  if ((USItype) au.s.high < (USItype) bu.s.high)\n    return 0;\n  else if ((USItype) au.s.high > (USItype) bu.s.high)\n    return 2;\n  if ((USItype) au.s.low < (USItype) bu.s.low)\n    return 0;\n  else if ((USItype) au.s.low > (USItype) bu.s.low)\n    return 2;\n  return 1;\n}\n#endif\n\f\n#if defined(L_fixunstfdi) && (LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 128)\n#define WORD_SIZE (sizeof (SItype) * BITS_PER_UNIT)\n#define HIGH_WORD_COEFF (((UDItype) 1) << WORD_SIZE)\n\nDItype\n__fixunstfdi (TFtype a)\n{\n  TFtype b;\n  UDItype v;\n\n  if (a < 0)\n    return 0;\n\n  /* Compute high word of result, as a flonum.  */\n  b = (a / HIGH_WORD_COEFF);\n  /* Convert that to fixed (but not to DItype!),\n     and shift it into the high word.  */\n  v = (USItype) b;\n  v <<= WORD_SIZE;\n  /* Remove high part from the TFtype, leaving the low part as flonum.  */\n  a -= (TFtype)v;\n  /* Convert that to fixed (but not to DItype!) and add it in.\n     Sometimes A comes out negative.  This is significant, since\n     A has more bits than a long int does.  */\n  if (a < 0)\n    v -= (USItype) (- a);\n  else\n    v += (USItype) a;\n  return v;\n}\n#endif\n\n#if defined(L_fixtfdi) && (LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 128)\nDItype\n__fixtfdi (TFtype a)\n{\n  if (a < 0)\n    return - __fixunstfdi (-a);\n  return __fixunstfdi (a);\n}\n#endif\n\n#if defined(L_fixunsxfdi) && (LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 96)\n#define WORD_SIZE (sizeof (SItype) * BITS_PER_UNIT)\n#define HIGH_WORD_COEFF (((UDItype) 1) << WORD_SIZE)\n\nDItype\n__fixunsxfdi (XFtype a)\n{\n  XFtype b;\n  UDItype v;\n\n  if (a < 0)\n    return 0;\n\n  /* Compute high word of result, as a flonum.  */\n  b = (a / HIGH_WORD_COEFF);\n  /* Convert that to fixed (but not to DItype!),\n     and shift it into the high word.  */\n  v = (USItype) b;\n  v <<= WORD_SIZE;\n  /* Remove high part from the XFtype, leaving the low part as flonum.  */\n  a -= (XFtype)v;\n  /* Convert that to fixed (but not to DItype!) and add it in.\n     Sometimes A comes out negative.  This is significant, since\n     A has more bits than a long int does.  */\n  if (a < 0)\n    v -= (USItype) (- a);\n  else\n    v += (USItype) a;\n  return v;\n}\n#endif\n\n#if defined(L_fixxfdi) && (LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 96)\nDItype\n__fixxfdi (XFtype a)\n{\n  if (a < 0)\n    return - __fixunsxfdi (-a);\n  return __fixunsxfdi (a);\n}\n#endif\n\n#ifdef L_fixunsdfdi\n#define WORD_SIZE (sizeof (SItype) * BITS_PER_UNIT)\n#define HIGH_WORD_COEFF (((UDItype) 1) << WORD_SIZE)\n\nDItype\n__fixunsdfdi (DFtype a)\n{\n  DFtype b;\n  UDItype v;\n\n  if (a < 0)\n    return 0;\n\n  /* Compute high word of result, as a flonum.  */\n  b = (a / HIGH_WORD_COEFF);\n  /* Convert that to fixed (but not to DItype!),\n     and shift it into the high word.  */\n  v = (USItype) b;\n  v <<= WORD_SIZE;\n  /* Remove high part from the DFtype, leaving the low part as flonum.  */\n  a -= (DFtype)v;\n  /* Convert that to fixed (but not to DItype!) and add it in.\n     Sometimes A comes out negative.  This is significant, since\n     A has more bits than a long int does.  */\n  if (a < 0)\n    v -= (USItype) (- a);\n  else\n    v += (USItype) a;\n  return v;\n}\n#endif\n\n#ifdef L_fixdfdi\nDItype\n__fixdfdi (DFtype a)\n{\n  if (a < 0)\n    return - __fixunsdfdi (-a);\n  return __fixunsdfdi (a);\n}\n#endif\n\n#ifdef L_fixunssfdi\n#define WORD_SIZE (sizeof (SItype) * BITS_PER_UNIT)\n#define HIGH_WORD_COEFF (((UDItype) 1) << WORD_SIZE)\n\nDItype\n__fixunssfdi (SFtype original_a)\n{\n  /* Convert the SFtype to a DFtype, because that is surely not going\n     to lose any bits.  Some day someone else can write a faster version\n     that avoids converting to DFtype, and verify it really works right.  */\n  DFtype a = original_a;\n  DFtype b;\n  UDItype v;\n\n  if (a < 0)\n    return 0;\n\n  /* Compute high word of result, as a flonum.  */\n  b = (a / HIGH_WORD_COEFF);\n  /* Convert that to fixed (but not to DItype!),\n     and shift it into the high word.  */\n  v = (USItype) b;\n  v <<= WORD_SIZE;\n  /* Remove high part from the DFtype, leaving the low part as flonum.  */\n  a -= (DFtype)v;\n  /* Convert that to fixed (but not to DItype!) and add it in.\n     Sometimes A comes out negative.  This is significant, since\n     A has more bits than a long int does.  */\n  if (a < 0)\n    v -= (USItype) (- a);\n  else\n    v += (USItype) a;\n  return v;\n}\n#endif\n\n#ifdef L_fixsfdi\nDItype\n__fixsfdi (SFtype a)\n{\n  if (a < 0)\n    return - __fixunssfdi (-a);\n  return __fixunssfdi (a);\n}\n#endif\n\n#if defined(L_floatdixf) && (LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 96)\n#define WORD_SIZE (sizeof (SItype) * BITS_PER_UNIT)\n#define HIGH_HALFWORD_COEFF (((UDItype) 1) << (WORD_SIZE / 2))\n#define HIGH_WORD_COEFF (((UDItype) 1) << WORD_SIZE)\n\nXFtype\n__floatdixf (DItype u)\n{\n  XFtype d;\n\n  d = (SItype) (u >> WORD_SIZE);\n  d *= HIGH_HALFWORD_COEFF;\n  d *= HIGH_HALFWORD_COEFF;\n  d += (USItype) (u & (HIGH_WORD_COEFF - 1));\n\n  return d;\n}\n#endif\n\n#if defined(L_floatditf) && (LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 128)\n#define WORD_SIZE (sizeof (SItype) * BITS_PER_UNIT)\n#define HIGH_HALFWORD_COEFF (((UDItype) 1) << (WORD_SIZE / 2))\n#define HIGH_WORD_COEFF (((UDItype) 1) << WORD_SIZE)\n\nTFtype\n__floatditf (DItype u)\n{\n  TFtype d;\n\n  d = (SItype) (u >> WORD_SIZE);\n  d *= HIGH_HALFWORD_COEFF;\n  d *= HIGH_HALFWORD_COEFF;\n  d += (USItype) (u & (HIGH_WORD_COEFF - 1));\n\n  return d;\n}\n#endif\n\n#ifdef L_floatdidf\n#define WORD_SIZE (sizeof (SItype) * BITS_PER_UNIT)\n#define HIGH_HALFWORD_COEFF (((UDItype) 1) << (WORD_SIZE / 2))\n#define HIGH_WORD_COEFF (((UDItype) 1) << WORD_SIZE)\n\nDFtype\n__floatdidf (DItype u)\n{\n  DFtype d;\n\n  d = (SItype) (u >> WORD_SIZE);\n  d *= HIGH_HALFWORD_COEFF;\n  d *= HIGH_HALFWORD_COEFF;\n  d += (USItype) (u & (HIGH_WORD_COEFF - 1));\n\n  return d;\n}\n#endif\n\n#ifdef L_floatdisf\n#define WORD_SIZE (sizeof (SItype) * BITS_PER_UNIT)\n#define HIGH_HALFWORD_COEFF (((UDItype) 1) << (WORD_SIZE / 2))\n#define HIGH_WORD_COEFF (((UDItype) 1) << WORD_SIZE)\n#define DI_SIZE (sizeof (DItype) * BITS_PER_UNIT)\n\n/* Define codes for all the float formats that we know of.  Note\n   that this is copied from real.h.  */\n   \n#define UNKNOWN_FLOAT_FORMAT 0\n#define IEEE_FLOAT_FORMAT 1\n#define VAX_FLOAT_FORMAT 2\n#define IBM_FLOAT_FORMAT 3\n\n/* Default to IEEE float if not specified.  Nearly all machines use it.  */\n#ifndef HOST_FLOAT_FORMAT\n#define\tHOST_FLOAT_FORMAT\tIEEE_FLOAT_FORMAT\n#endif\n\n#if HOST_FLOAT_FORMAT == IEEE_FLOAT_FORMAT\n#define DF_SIZE 53\n#define SF_SIZE 24\n#endif\n\n#if HOST_FLOAT_FORMAT == IBM_FLOAT_FORMAT\n#define DF_SIZE 56\n#define SF_SIZE 24\n#endif\n\n#if HOST_FLOAT_FORMAT == VAX_FLOAT_FORMAT\n#define DF_SIZE 56\n#define SF_SIZE 24\n#endif\n\nSFtype\n__floatdisf (DItype u)\n{\n  /* Do the calculation in DFmode\n     so that we don't lose any of the precision of the high word\n     while multiplying it.  */\n  DFtype f;\n\n  /* Protect against double-rounding error.\n     Represent any low-order bits, that might be truncated in DFmode,\n     by a bit that won't be lost.  The bit can go in anywhere below the\n     rounding position of the SFmode.  A fixed mask and bit position\n     handles all usual configurations.  It doesn't handle the case\n     of 128-bit DImode, however.  */\n  if (DF_SIZE < DI_SIZE\n      && DF_SIZE > (DI_SIZE - DF_SIZE + SF_SIZE))\n    {\n#define REP_BIT ((USItype) 1 << (DI_SIZE - DF_SIZE))\n      if (! (- ((DItype) 1 << DF_SIZE) < u\n\t     && u < ((DItype) 1 << DF_SIZE)))\n\t{\n\t  if ((USItype) u & (REP_BIT - 1))\n\t    u |= REP_BIT;\n\t}\n    }\n  f = (SItype) (u >> WORD_SIZE);\n  f *= HIGH_HALFWORD_COEFF;\n  f *= HIGH_HALFWORD_COEFF;\n  f += (USItype) (u & (HIGH_WORD_COEFF - 1));\n\n  return (SFtype) f;\n}\n#endif\n\n#if defined(L_fixunsxfsi) && LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 96\n/* Reenable the normal types, in case limits.h needs them.  */\n#undef char\n#undef short\n#undef int\n#undef long\n#undef unsigned\n#undef float\n#undef double\n#undef MIN\n#undef MAX\n#include <limits.h>\n\nUSItype\n__fixunsxfsi (XFtype a)\n{\n  if (a >= - (DFtype) LONG_MIN)\n    return (SItype) (a + LONG_MIN) - LONG_MIN;\n  return (SItype) a;\n}\n#endif\n\n#ifdef L_fixunsdfsi\n/* Reenable the normal types, in case limits.h needs them.  */\n#undef char\n#undef short\n#undef int\n#undef long\n#undef unsigned\n#undef float\n#undef double\n#undef MIN\n#undef MAX\n#include <limits.h>\n\nUSItype\n__fixunsdfsi (DFtype a)\n{\n  if (a >= - (DFtype) LONG_MIN)\n    return (SItype) (a + LONG_MIN) - LONG_MIN;\n  return (SItype) a;\n}\n#endif\n\n#ifdef L_fixunssfsi\n/* Reenable the normal types, in case limits.h needs them.  */\n#undef char\n#undef short\n#undef int\n#undef long\n#undef unsigned\n#undef float\n#undef double\n#undef MIN\n#undef MAX\n#include <limits.h>\n\nUSItype\n__fixunssfsi (SFtype a)\n{\n  if (a >= - (SFtype) LONG_MIN)\n    return (SItype) (a + LONG_MIN) - LONG_MIN;\n  return (SItype) a;\n}\n#endif\n\f\n/* From here on down, the routines use normal data types.  */\n\n#define SItype bogus_type\n#define USItype bogus_type\n#define DItype bogus_type\n#define UDItype bogus_type\n#define SFtype bogus_type\n#define DFtype bogus_type\n\n#undef char\n#undef short\n#undef int\n#undef long\n#undef unsigned\n#undef float\n#undef double\n\f\n#ifdef L__gcc_bcmp\n\n/* Like bcmp except the sign is meaningful.\n   Result is negative if S1 is less than S2,\n   positive if S1 is greater, 0 if S1 and S2 are equal.  */\n\nint\n__gcc_bcmp (unsigned char *s1, unsigned char *s2, size_t size)\n{\n  while (size > 0)\n    {\n      unsigned char c1 = *s1++, c2 = *s2++;\n      if (c1 != c2)\n\treturn c1 - c2;\n      size--;\n    }\n  return 0;\n}\n\n#endif\n\f\f\n#ifdef L__dummy\nvoid\n__dummy () {}\n#endif\n\n#ifdef L_varargs\n#ifdef __i860__\n#if defined(__svr4__) || defined(__alliant__)\n\tasm (\"\t.text\");\n\tasm (\"\t.align\t4\");\n\n/* The Alliant needs the added underscore.  */\n\tasm (\".globl\t__builtin_saveregs\");\nasm (\"__builtin_saveregs:\");\n\tasm (\".globl\t___builtin_saveregs\");\nasm (\"___builtin_saveregs:\");\n\n        asm (\"\tandnot\t0x0f,%sp,%sp\");\t/* round down to 16-byte boundary */\n\tasm (\"\tadds\t-96,%sp,%sp\");  /* allocate stack space for reg save\n\t\t\t\t\t   area and also for a new va_list\n\t\t\t\t\t   structure */\n\t/* Save all argument registers in the arg reg save area.  The\n\t   arg reg save area must have the following layout (according\n\t   to the svr4 ABI):\n\n\t\tstruct {\n\t\t  union  {\n\t\t    float freg[8];\n\t\t    double dreg[4];\n\t\t  } float_regs;\n\t\t  long\tireg[12];\n\t\t};\n\t*/\n\n\tasm (\"\tfst.q\t%f8,  0(%sp)\"); /* save floating regs (f8-f15)  */\n\tasm (\"\tfst.q\t%f12,16(%sp)\"); \n\n\tasm (\"\tst.l\t%r16,32(%sp)\"); /* save integer regs (r16-r27) */\n\tasm (\"\tst.l\t%r17,36(%sp)\"); \n\tasm (\"\tst.l\t%r18,40(%sp)\");\n\tasm (\"\tst.l\t%r19,44(%sp)\");\n\tasm (\"\tst.l\t%r20,48(%sp)\");\n\tasm (\"\tst.l\t%r21,52(%sp)\");\n\tasm (\"\tst.l\t%r22,56(%sp)\");\n\tasm (\"\tst.l\t%r23,60(%sp)\");\n\tasm (\"\tst.l\t%r24,64(%sp)\");\n\tasm (\"\tst.l\t%r25,68(%sp)\");\n\tasm (\"\tst.l\t%r26,72(%sp)\");\n\tasm (\"\tst.l\t%r27,76(%sp)\");\n\n\tasm (\"\tadds\t80,%sp,%r16\");  /* compute the address of the new\n\t\t\t\t\t   va_list structure.  Put in into\n\t\t\t\t\t   r16 so that it will be returned\n\t\t\t\t\t   to the caller.  */\n\n\t/* Initialize all fields of the new va_list structure.  This\n\t   structure looks like:\n\n\t\ttypedef struct {\n\t\t    unsigned long\tireg_used;\n\t\t    unsigned long\tfreg_used;\n\t\t    long\t\t*reg_base;\n\t\t    long\t\t*mem_ptr;\n\t\t} va_list;\n\t*/\n\n\tasm (\"\tst.l\t%r0, 0(%r16)\"); /* nfixed */\n\tasm (\"\tst.l\t%r0, 4(%r16)\"); /* nfloating */\n\tasm (\"  st.l    %sp, 8(%r16)\"); /* __va_ctl points to __va_struct.  */\n\tasm (\"\tbri\t%r1\");\t\t/* delayed return */\n\tasm (\"\tst.l\t%r28,12(%r16)\"); /* pointer to overflow args */\n\n#else /* not __svr4__ */\n#if defined(__PARAGON__)\n\t/*\n\t *\twe'll use SVR4-ish varargs but need SVR3.2 assembler syntax,\n\t *\tand we stand a better chance of hooking into libraries\n\t *\tcompiled by PGI.  [andyp@ssd.intel.com]\n\t */\n\tasm (\"\t.text\");\n\tasm (\"\t.align\t4\");\n\tasm (\".globl\t__builtin_saveregs\");\nasm (\"__builtin_saveregs:\");\n\tasm (\".globl\t___builtin_saveregs\");\nasm (\"___builtin_saveregs:\");\n\n        asm (\"\tandnot\t0x0f,sp,sp\");\t/* round down to 16-byte boundary */\n\tasm (\"\tadds\t-96,sp,sp\");\t/* allocate stack space for reg save\n\t\t\t\t\t   area and also for a new va_list\n\t\t\t\t\t   structure */\n\t/* Save all argument registers in the arg reg save area.  The\n\t   arg reg save area must have the following layout (according\n\t   to the svr4 ABI):\n\n\t\tstruct {\n\t\t  union  {\n\t\t    float freg[8];\n\t\t    double dreg[4];\n\t\t  } float_regs;\n\t\t  long\tireg[12];\n\t\t};\n\t*/\n\n\tasm (\"\tfst.q\tf8,  0(sp)\");\n\tasm (\"\tfst.q\tf12,16(sp)\"); \n\tasm (\"\tst.l\tr16,32(sp)\");\n\tasm (\"\tst.l\tr17,36(sp)\"); \n\tasm (\"\tst.l\tr18,40(sp)\");\n\tasm (\"\tst.l\tr19,44(sp)\");\n\tasm (\"\tst.l\tr20,48(sp)\");\n\tasm (\"\tst.l\tr21,52(sp)\");\n\tasm (\"\tst.l\tr22,56(sp)\");\n\tasm (\"\tst.l\tr23,60(sp)\");\n\tasm (\"\tst.l\tr24,64(sp)\");\n\tasm (\"\tst.l\tr25,68(sp)\");\n\tasm (\"\tst.l\tr26,72(sp)\");\n\tasm (\"\tst.l\tr27,76(sp)\");\n\n\tasm (\"\tadds\t80,sp,r16\");  /* compute the address of the new\n\t\t\t\t\t   va_list structure.  Put in into\n\t\t\t\t\t   r16 so that it will be returned\n\t\t\t\t\t   to the caller.  */\n\n\t/* Initialize all fields of the new va_list structure.  This\n\t   structure looks like:\n\n\t\ttypedef struct {\n\t\t    unsigned long\tireg_used;\n\t\t    unsigned long\tfreg_used;\n\t\t    long\t\t*reg_base;\n\t\t    long\t\t*mem_ptr;\n\t\t} va_list;\n\t*/\n\n\tasm (\"\tst.l\tr0, 0(r16)\"); /* nfixed */\n\tasm (\"\tst.l\tr0, 4(r16)\"); /* nfloating */\n\tasm (\"  st.l    sp, 8(r16)\"); /* __va_ctl points to __va_struct.  */\n\tasm (\"\tbri\tr1\");\t\t/* delayed return */\n\tasm (\"\t st.l\tr28,12(r16)\"); /* pointer to overflow args */\n#else /* not __PARAGON__ */\n\tasm (\"\t.text\");\n\tasm (\"\t.align\t4\");\n\n\tasm (\".globl\t___builtin_saveregs\");\n\tasm (\"___builtin_saveregs:\");\n\tasm (\"\tmov\tsp,r30\");\n\tasm (\"\tandnot\t0x0f,sp,sp\");\n\tasm (\"\tadds\t-96,sp,sp\");  /* allocate sufficient space on the stack */\n\n/* Fill in the __va_struct.  */\n\tasm (\"\tst.l\tr16, 0(sp)\"); /* save integer regs (r16-r27) */\n\tasm (\"\tst.l\tr17, 4(sp)\"); /* int\tfixed[12] */\n\tasm (\"\tst.l\tr18, 8(sp)\");\n\tasm (\"\tst.l\tr19,12(sp)\");\n\tasm (\"\tst.l\tr20,16(sp)\");\n\tasm (\"\tst.l\tr21,20(sp)\");\n\tasm (\"\tst.l\tr22,24(sp)\");\n\tasm (\"\tst.l\tr23,28(sp)\");\n\tasm (\"\tst.l\tr24,32(sp)\");\n\tasm (\"\tst.l\tr25,36(sp)\");\n\tasm (\"\tst.l\tr26,40(sp)\");\n\tasm (\"\tst.l\tr27,44(sp)\");\n\n\tasm (\"\tfst.q\tf8, 48(sp)\"); /* save floating regs (f8-f15) */\n\tasm (\"\tfst.q\tf12,64(sp)\"); /* int floating[8] */\n\n/* Fill in the __va_ctl.  */\n\tasm (\"  st.l    sp, 80(sp)\"); /* __va_ctl points to __va_struct.  */\n\tasm (\"\tst.l\tr28,84(sp)\"); /* pointer to more args */\n\tasm (\"\tst.l\tr0, 88(sp)\"); /* nfixed */\n\tasm (\"\tst.l\tr0, 92(sp)\"); /* nfloating */\n\n\tasm (\"\tadds\t80,sp,r16\");  /* return address of the __va_ctl.  */\n\tasm (\"\tbri\tr1\");\n\tasm (\"\tmov\tr30,sp\");\n\t\t\t\t/* recover stack and pass address to start \n\t\t\t\t   of data.  */\n#endif /* not __PARAGON__ */\n#endif /* not __svr4__ */\n#else /* not __i860__ */\n#ifdef __sparc__\n\tasm (\".global __builtin_saveregs\");\n\tasm (\"__builtin_saveregs:\");\n\tasm (\".global ___builtin_saveregs\");\n\tasm (\"___builtin_saveregs:\");\n#ifdef NEED_PROC_COMMAND\n\tasm (\".proc 020\");\n#endif\n\tasm (\"st %i0,[%fp+68]\");\n\tasm (\"st %i1,[%fp+72]\");\n\tasm (\"st %i2,[%fp+76]\");\n\tasm (\"st %i3,[%fp+80]\");\n\tasm (\"st %i4,[%fp+84]\");\n\tasm (\"retl\");\n\tasm (\"st %i5,[%fp+88]\");\n#ifdef NEED_TYPE_COMMAND\n\tasm (\".type __builtin_saveregs,#function\");\n\tasm (\".size __builtin_saveregs,.-__builtin_saveregs\");\n#endif\n#else /* not __sparc__ */\n#if defined(__MIPSEL__) | defined(__R3000__) | defined(__R2000__) | defined(__mips__)\n\n  asm (\"\t.text\");\n#ifdef __mips16\n  asm (\"\t.set nomips16\");\n#endif\n  asm (\"\t.ent __builtin_saveregs\");\n  asm (\"\t.globl __builtin_saveregs\");\n  asm (\"__builtin_saveregs:\");\n  asm (\"\tsw\t$4,0($30)\");\n  asm (\"\tsw\t$5,4($30)\");\n  asm (\"\tsw\t$6,8($30)\");\n  asm (\"\tsw\t$7,12($30)\");\n  asm (\"\tj\t$31\");\n  asm (\"\t.end __builtin_saveregs\");\n#else /* not __mips__, etc.  */\n\nvoid *\n__builtin_saveregs ()\n{\n  abort ();\n}\n\n#endif /* not __mips__ */\n#endif /* not __sparc__ */\n#endif /* not __i860__ */\n#endif\n\f\n#ifdef L_eprintf\n#ifndef inhibit_libc\n\n#undef NULL /* Avoid errors if stdio.h and our stddef.h mismatch.  */\n#include <stdio.h>\n/* This is used by the `assert' macro.  */\nextern void __eprintf (const char *, const char *, unsigned int, const char *)\n  __attribute__ ((__noreturn__));\n\nvoid\n__eprintf (const char *string, const char *expression,\n\t   unsigned int line, const char *filename)\n{\n  fprintf (stderr, string, expression, line, filename);\n  fflush (stderr);\n  abort ();\n}\n\n#endif\n#endif\n\n#ifdef L_bb\n\n/* Structure emitted by -a  */\nstruct bb\n{\n  long zero_word;\n  const char *filename;\n  long *counts;\n  long ncounts;\n  struct bb *next;\n  const unsigned long *addresses;\n\n  /* Older GCC's did not emit these fields.  */\n  long nwords;\n  const char **functions;\n  const long *line_nums;\n  const char **filenames;\n  char *flags;\n};\n\n#ifdef BLOCK_PROFILER_CODE\nBLOCK_PROFILER_CODE\n#else\n#ifndef inhibit_libc\n\n/* Simple minded basic block profiling output dumper for\n   systems that don't provide tcov support.  At present,\n   it requires atexit and stdio.  */\n\n#undef NULL /* Avoid errors if stdio.h and our stddef.h mismatch.  */\n#include <stdio.h>\nchar *ctime ();\n\n#include \"gbl-ctors.h\"\n#include \"gcov-io.h\"\n#include <string.h>\n\nstatic struct bb *bb_head;\n\n/* Return the number of digits needed to print a value */\n/* __inline__ */ static int num_digits (long value, int base)\n{\n  int minus = (value < 0 && base != 16);\n  unsigned long v = (minus) ? -value : value;\n  int ret = minus;\n\n  do\n    {\n      v /= base;\n      ret++;\n    }\n  while (v);\n\n  return ret;\n}\n\nvoid\n__bb_exit_func (void)\n{\n  FILE *da_file, *file;\n  long time_value;\n  int i;\n\n  if (bb_head == 0)\n    return;\n\n  i = strlen (bb_head->filename) - 3;\n\n  if (!strcmp (bb_head->filename+i, \".da\"))\n    {\n      /* Must be -fprofile-arcs not -a.\n\t Dump data in a form that gcov expects.  */\n\n      struct bb *ptr;\n\n      for (ptr = bb_head; ptr != (struct bb *) 0; ptr = ptr->next)\n\t{\n\t  /* If the file exists, and the number of counts in it is the same,\n\t     then merge them in.  */\n\t     \n\t  if ((da_file = fopen (ptr->filename, \"r\")) != 0)\n\t    {\n\t      long n_counts = 0;\n\t      \n\t      if (__read_long (&n_counts, da_file, 8) != 0)\n\t\t{\n\t\t  fprintf (stderr, \"arc profiling: Can't read output file %s.\\n\",\n\t\t\t   ptr->filename);\n\t\t  continue;\n\t\t}\n\n\t      if (n_counts == ptr->ncounts)\n\t\t{\n\t\t  int i;\n\n\t\t  for (i = 0; i < n_counts; i++)\n\t\t    {\n\t\t      long v = 0;\n\n\t\t      if (__read_long (&v, da_file, 8) != 0)\n\t\t\t{\n\t\t\t  fprintf (stderr, \"arc profiling: Can't read output file %s.\\n\",\n\t\t\t\t   ptr->filename);\n\t\t\t  break;\n\t\t\t}\n\t\t      ptr->counts[i] += v;\n\t\t    }\n\t\t}\n\n\t      if (fclose (da_file) == EOF)\n\t\tfprintf (stderr, \"arc profiling: Error closing output file %s.\\n\",\n\t\t\t ptr->filename);\n\t    }\n\t  if ((da_file = fopen (ptr->filename, \"w\")) == 0)\n\t    {\n\t      fprintf (stderr, \"arc profiling: Can't open output file %s.\\n\",\n\t\t       ptr->filename);\n\t      continue;\n\t    }\n\n\t  /* ??? Should first write a header to the file.  Preferably, a 4 byte\n\t     magic number, 4 bytes containing the time the program was\n\t     compiled, 4 bytes containing the last modification time of the\n\t     source file, and 4 bytes indicating the compiler options used.\n\n\t     That way we can easily verify that the proper source/executable/\n\t     data file combination is being used from gcov.  */\n\n\t  if (__write_long (ptr->ncounts, da_file, 8) != 0)\n\t    {\n\t      \n\t      fprintf (stderr, \"arc profiling: Error writing output file %s.\\n\",\n\t\t       ptr->filename);\n\t    }\n\t  else\n\t    {\n\t      int j;\n\t      long *count_ptr = ptr->counts;\n\t      int ret = 0;\n\t      for (j = ptr->ncounts; j > 0; j--)\n\t\t{\n\t\t  if (__write_long (*count_ptr, da_file, 8) != 0)\n\t\t    {\n\t\t      ret=1;\n\t\t      break;\n\t\t    }\n\t\t  count_ptr++;\n\t\t}\n\t      if (ret)\n\t\tfprintf (stderr, \"arc profiling: Error writing output file %s.\\n\",\n\t\t\t ptr->filename);\n\t    }\n\t  \n\t  if (fclose (da_file) == EOF)\n\t    fprintf (stderr, \"arc profiling: Error closing output file %s.\\n\",\n\t\t     ptr->filename);\n\t}\n\n      return;\n    }\n\n  /* Must be basic block profiling.  Emit a human readable output file.  */\n\n  file = fopen (\"bb.out\", \"a\");\n\n  if (!file)\n    perror (\"bb.out\");\n\n  else\n    {\n      struct bb *ptr;\n\n      /* This is somewhat type incorrect, but it avoids worrying about\n\t exactly where time.h is included from.  It should be ok unless\n\t a void * differs from other pointer formats, or if sizeof (long)\n\t is < sizeof (time_t).  It would be nice if we could assume the\n\t use of rationale standards here.  */\n\n      time ((void *) &time_value);\n      fprintf (file, \"Basic block profiling finished on %s\\n\", ctime ((void *) &time_value));\n\n      /* We check the length field explicitly in order to allow compatibility\n\t with older GCC's which did not provide it.  */\n\n      for (ptr = bb_head; ptr != (struct bb *) 0; ptr = ptr->next)\n\t{\n\t  int i;\n\t  int func_p\t= (ptr->nwords >= sizeof (struct bb)\n\t\t\t   && ptr->nwords <= 1000\n\t\t\t   && ptr->functions);\n\t  int line_p\t= (func_p && ptr->line_nums);\n\t  int file_p\t= (func_p && ptr->filenames);\n\t  int addr_p\t= (ptr->addresses != 0);\n\t  long ncounts\t= ptr->ncounts;\n\t  long cnt_max  = 0;\n\t  long line_max = 0;\n\t  long addr_max = 0;\n\t  int file_len\t= 0;\n\t  int func_len\t= 0;\n\t  int blk_len\t= num_digits (ncounts, 10);\n\t  int cnt_len;\n\t  int line_len;\n\t  int addr_len;\n\n\t  fprintf (file, \"File %s, %ld basic blocks \\n\\n\",\n\t\t   ptr->filename, ncounts);\n\n\t  /* Get max values for each field.  */\n\t  for (i = 0; i < ncounts; i++)\n\t    {\n\t      const char *p;\n\t      int len;\n\n\t      if (cnt_max < ptr->counts[i])\n\t\tcnt_max = ptr->counts[i];\n\n\t      if (addr_p && addr_max < ptr->addresses[i])\n\t\taddr_max = ptr->addresses[i];\n\n\t      if (line_p && line_max < ptr->line_nums[i])\n\t\tline_max = ptr->line_nums[i];\n\n\t      if (func_p)\n\t\t{\n\t\t  p = (ptr->functions[i]) ? (ptr->functions[i]) : \"<none>\";\n\t\t  len = strlen (p);\n\t\t  if (func_len < len)\n\t\t    func_len = len;\n\t\t}\n\n\t      if (file_p)\n\t\t{\n\t\t  p = (ptr->filenames[i]) ? (ptr->filenames[i]) : \"<none>\";\n\t\t  len = strlen (p);\n\t\t  if (file_len < len)\n\t\t    file_len = len;\n\t\t}\n\t    }\n\n\t  addr_len = num_digits (addr_max, 16);\n\t  cnt_len  = num_digits (cnt_max, 10);\n\t  line_len = num_digits (line_max, 10);\n\n\t  /* Now print out the basic block information.  */\n\t  for (i = 0; i < ncounts; i++)\n\t    {\n\t      fprintf (file,\n\t\t       \"    Block #%*d: executed %*ld time(s)\",\n\t\t       blk_len, i+1,\n\t\t       cnt_len, ptr->counts[i]);\n\n\t      if (addr_p)\n\t\tfprintf (file, \" address= 0x%.*lx\", addr_len,\n\t\t\t ptr->addresses[i]);\n\n\t      if (func_p)\n\t\tfprintf (file, \" function= %-*s\", func_len,\n\t\t\t (ptr->functions[i]) ? ptr->functions[i] : \"<none>\");\n\n\t      if (line_p)\n\t\tfprintf (file, \" line= %*ld\", line_len, ptr->line_nums[i]);\n\n\t      if (file_p)\n\t\tfprintf (file, \" file= %s\",\n\t\t\t (ptr->filenames[i]) ? ptr->filenames[i] : \"<none>\");\n\n\t      fprintf (file, \"\\n\");\n\t    }\n\n\t  fprintf (file, \"\\n\");\n\t  fflush (file);\n\t}\n\n      fprintf (file, \"\\n\\n\");\n      fclose (file);\n    }\n}\n\nvoid\n__bb_init_func (struct bb *blocks)\n{\n  /* User is supposed to check whether the first word is non-0,\n     but just in case....  */\n\n  if (blocks->zero_word)\n    return;\n\n#ifdef ON_EXIT\n  /* Initialize destructor.  */\n  if (!bb_head)\n    ON_EXIT (__bb_exit_func, 0);\n#endif\n\n  /* Set up linked list.  */\n  blocks->zero_word = 1;\n  blocks->next = bb_head;\n  bb_head = blocks;\n}\n\n#ifndef MACHINE_STATE_SAVE\n#define MACHINE_STATE_SAVE(ID)\n#endif\n#ifndef MACHINE_STATE_RESTORE\n#define MACHINE_STATE_RESTORE(ID)\n#endif\n\n/* Number of buckets in hashtable of basic block addresses.  */\n\n#define BB_BUCKETS 311\n\n/* Maximum length of string in file bb.in.  */\n\n#define BBINBUFSIZE 500\n\n/* BBINBUFSIZE-1 with double quotes. We could use #BBINBUFSIZE or\n   \"BBINBUFSIZE\" but want to avoid trouble with preprocessors.  */\n\n#define BBINBUFSIZESTR \"499\"\n\nstruct bb_edge\n{\n  struct bb_edge *next;\n  unsigned long src_addr;\n  unsigned long dst_addr;\n  unsigned long count;\n};\n\nenum bb_func_mode\n{\n  TRACE_KEEP = 0, TRACE_ON = 1, TRACE_OFF = 2\n};\n\nstruct bb_func\n{\n  struct bb_func *next;\n  char *funcname;\n  char *filename;\n  enum bb_func_mode mode;\n};\n\n/* This is the connection to the outside world.\n   The BLOCK_PROFILER macro must set __bb.blocks\n   and __bb.blockno.  */\n\nstruct {\n  unsigned long blockno;\n  struct bb *blocks;\n} __bb;\n\n/* Vars to store addrs of source and destination basic blocks \n   of a jump.  */\n\nstatic unsigned long bb_src = 0;\nstatic unsigned long bb_dst = 0;\n\nstatic FILE *bb_tracefile = (FILE *) 0;\nstatic struct bb_edge **bb_hashbuckets = (struct bb_edge **) 0;\nstatic struct bb_func *bb_func_head = (struct bb_func *) 0;\nstatic unsigned long bb_callcount = 0;\nstatic int bb_mode = 0;\n\nstatic unsigned long *bb_stack = (unsigned long *) 0;\nstatic size_t bb_stacksize = 0;\n\nstatic int reported = 0;\n\n/* Trace modes:\nAlways             :   Print execution frequencies of basic blocks\n                       to file bb.out.\nbb_mode & 1 != 0   :   Dump trace of basic blocks to file bbtrace[.gz]\nbb_mode & 2 != 0   :   Print jump frequencies to file bb.out.\nbb_mode & 4 != 0   :   Cut call instructions from basic block flow.\nbb_mode & 8 != 0   :   Insert return instructions in basic block flow.\n*/\n\n#ifdef HAVE_POPEN\n\n/*#include <sys/types.h>*/\n#include <sys/stat.h>\n/*#include <malloc.h>*/\n\n/* Commands executed by gopen.  */\n\n#define GOPENDECOMPRESS \"gzip -cd \"\n#define GOPENCOMPRESS \"gzip -c >\"\n\n/* Like fopen but pipes through gzip.  mode may only be \"r\" or \"w\".\n   If it does not compile, simply replace gopen by fopen and delete\n   '.gz' from any first parameter to gopen.  */\n\nstatic FILE *\ngopen (char *fn, char *mode)\n{\n  int use_gzip;\n  char *p;\n\n  if (mode[1])\n    return (FILE *) 0;\n\n  if (mode[0] != 'r' && mode[0] != 'w') \n    return (FILE *) 0;\n\n  p = fn + strlen (fn)-1;\n  use_gzip = ((p[-1] == '.' && (p[0] == 'Z' || p[0] == 'z'))\n\t      || (p[-2] == '.' && p[-1] == 'g' && p[0] == 'z'));\n\n  if (use_gzip)\n    {\n      if (mode[0]=='r')\n        {\n          FILE *f;\n          char *s = (char *) malloc (sizeof (char) * strlen (fn)\n\t\t\t\t     + sizeof (GOPENDECOMPRESS));\n          strcpy (s, GOPENDECOMPRESS);\n          strcpy (s + (sizeof (GOPENDECOMPRESS)-1), fn);\n          f = popen (s, mode);\n          free (s);\n          return f;\n        }\n\n      else\n        {\n          FILE *f;\n          char *s = (char *) malloc (sizeof (char) * strlen (fn)\n\t\t\t\t     + sizeof (GOPENCOMPRESS));\n          strcpy (s, GOPENCOMPRESS);\n          strcpy (s + (sizeof (GOPENCOMPRESS)-1), fn);\n          if (!(f = popen (s, mode)))\n            f = fopen (s, mode);\n          free (s);\n          return f;\n        }\n    }\n\n  else\n    return fopen (fn, mode);\n}\n\nstatic int\ngclose (FILE *f)\n{\n  struct stat buf;\n\n  if (f != 0)\n    {\n      if (!fstat (fileno (f), &buf) && S_ISFIFO (buf.st_mode))\n        return pclose (f);\n\n      return fclose (f);\n    }\n  return 0;\n}\n\n#endif /* HAVE_POPEN */\n\n/* Called once per program.  */\n\nstatic void\n__bb_exit_trace_func ()\n{\n  FILE *file = fopen (\"bb.out\", \"a\");\n  struct bb_func *f;\n  struct bb *b;\n        \n  if (!file)\n    perror (\"bb.out\");\n\n  if (bb_mode & 1)\n    {\n      if (!bb_tracefile)\n        perror (\"bbtrace\");\n      else\n#ifdef HAVE_POPEN\n        gclose (bb_tracefile);\n#else\n        fclose (bb_tracefile);\n#endif /* HAVE_POPEN */\n    }\n\n  /* Check functions in `bb.in'.  */\n\n  if (file)\n    {\n      long time_value;\n      const struct bb_func *p;\n      int printed_something = 0;\n      struct bb *ptr;\n      long blk;\n\n      /* This is somewhat type incorrect.  */\n      time ((void *) &time_value);\n\n      for (p = bb_func_head; p != (struct bb_func *) 0; p = p->next)\n        {\n          for (ptr = bb_head; ptr != (struct bb *) 0; ptr = ptr->next)\n            {\n              if (!ptr->filename || (p->filename != (char *) 0 && strcmp (p->filename, ptr->filename)))\n                continue;\n              for (blk = 0; blk < ptr->ncounts; blk++)\n                {\n                  if (!strcmp (p->funcname, ptr->functions[blk]))\n                    goto found;\n                }\n            }\n  \n          if (!printed_something)\n            {\n              fprintf (file, \"Functions in `bb.in' not executed during basic block profiling on %s\\n\", ctime ((void *) &time_value));\n              printed_something = 1;\n            }\n\n          fprintf (file, \"\\tFunction %s\", p->funcname);\n          if (p->filename)\n              fprintf (file, \" of file %s\", p->filename);\n          fprintf (file, \"\\n\" );\n  \nfound:        ;\n        }\n\n      if (printed_something)\n       fprintf (file, \"\\n\");\n\n    }\n\n  if (bb_mode & 2)\n    {\n      if (!bb_hashbuckets)\n        {\n          if (!reported)\n            {\n              fprintf (stderr, \"Profiler: out of memory\\n\");\n              reported = 1;\n            }\n          return;\n        }\n    \n      else if (file)\n        {\n          long time_value;\n          int i;\n          unsigned long addr_max = 0;\n          unsigned long cnt_max  = 0;\n          int cnt_len;\n          int addr_len;\n    \n          /* This is somewhat type incorrect, but it avoids worrying about\n             exactly where time.h is included from.  It should be ok unless\n             a void * differs from other pointer formats, or if sizeof (long)\n             is < sizeof (time_t).  It would be nice if we could assume the\n             use of rationale standards here.  */\n    \n          time ((void *) &time_value);\n          fprintf (file, \"Basic block jump tracing\");\n\n          switch (bb_mode & 12)\n            {\n              case 0:\n                fprintf (file, \" (with call)\");\n              break;\n\n              case 4:\n\t\t/* Print nothing.  */\n              break;\n\n              case 8:\n                fprintf (file, \" (with call & ret)\");\n              break;\n\n              case 12:\n                fprintf (file, \" (with ret)\");\n              break;\n            }\n\n          fprintf (file, \" finished on %s\\n\", ctime ((void *) &time_value));\n    \n          for (i = 0; i < BB_BUCKETS; i++)\n            {\n               struct bb_edge *bucket = bb_hashbuckets[i];\n               for ( ; bucket; bucket = bucket->next )\n                 {\n                   if (addr_max < bucket->src_addr) \n                     addr_max = bucket->src_addr;\n                   if (addr_max < bucket->dst_addr) \n                     addr_max = bucket->dst_addr;\n                   if (cnt_max < bucket->count) \n                     cnt_max = bucket->count;\n                 }\n            }\n          addr_len = num_digits (addr_max, 16);\n          cnt_len  = num_digits (cnt_max, 10);\n    \n          for ( i = 0; i < BB_BUCKETS; i++)\n            {\n               struct bb_edge *bucket = bb_hashbuckets[i];\n               for ( ; bucket; bucket = bucket->next )\n                 {\n                   fprintf (file, \"Jump from block 0x%.*lx to \"\n                                  \"block 0x%.*lx executed %*lu time(s)\\n\", \n                            addr_len, bucket->src_addr, \n                            addr_len, bucket->dst_addr, \n                            cnt_len, bucket->count);\n                 }\n            }\n  \n          fprintf (file, \"\\n\");\n\n        }\n    }\n\n   if (file)\n     fclose (file);\n\n   /* Free allocated memory.  */\n\n   f = bb_func_head;\n   while (f)\n     {\n       struct bb_func *old = f;\n\n       f = f->next;\n       if (old->funcname) free (old->funcname);\n       if (old->filename) free (old->filename);\n       free (old);\n     }\n\n   if (bb_stack)\n     free (bb_stack);\n\n   if (bb_hashbuckets)\n     {\n       int i;\n\n       for (i = 0; i < BB_BUCKETS; i++)\n         {\n           struct bb_edge *old, *bucket = bb_hashbuckets[i];\n\n           while (bucket)\n             {\n               old = bucket;\n               bucket = bucket->next;\n               free (old);\n             }\n         }\n       free (bb_hashbuckets);\n     }\n\n   for (b = bb_head; b; b = b->next)\n     if (b->flags) free (b->flags);\n}\n\n/* Called once per program.  */\n\nstatic void\n__bb_init_prg ()\n{\n\n  FILE *file;\n  char buf[BBINBUFSIZE];\n  const char *p;\n  const char *pos;\n  enum bb_func_mode m;\n\n#ifdef ON_EXIT\n  /* Initialize destructor.  */\n  ON_EXIT (__bb_exit_func, 0);\n#endif\n\n  if (!(file = fopen (\"bb.in\", \"r\")))\n    return;\n\n  while(fscanf (file, \" %\" BBINBUFSIZESTR \"s \", buf) != EOF)\n    {\n      p = buf;\n      if (*p == '-') \n        { \n          m = TRACE_OFF; \n          p++; \n        }\n      else \n        { \n          m = TRACE_ON; \n        }\n      if (!strcmp (p, \"__bb_trace__\"))\n        bb_mode |= 1;\n      else if (!strcmp (p, \"__bb_jumps__\"))\n        bb_mode |= 2;\n      else if (!strcmp (p, \"__bb_hidecall__\"))\n        bb_mode |= 4;\n      else if (!strcmp (p, \"__bb_showret__\"))\n        bb_mode |= 8;\n      else \n        {\n          struct bb_func *f = (struct bb_func *) malloc (sizeof (struct bb_func));\n          if (f)\n            {\n              unsigned long l;\n              f->next = bb_func_head;\n              if ((pos = strchr (p, ':')))\n                {\n                  if (!(f->funcname = (char *) malloc (strlen (pos+1)+1)))\n                    continue;\n                  strcpy (f->funcname, pos+1);\n                  l = pos-p;\n                  if ((f->filename = (char *) malloc (l+1)))\n                    {\n                      strncpy (f->filename, p, l);\n                      f->filename[l] = '\\0';\n                    }\n                  else\n                    f->filename = (char *) 0;\n                }\n              else\n                {\n                  if (!(f->funcname = (char *) malloc (strlen (p)+1)))\n                    continue;\n                  strcpy (f->funcname, p);\n                  f->filename = (char *) 0;\n                }\n              f->mode = m;\n              bb_func_head = f;\n\t    }\n         }\n    }\n  fclose (file);\n\n#ifdef HAVE_POPEN \n\n  if (bb_mode & 1)\n      bb_tracefile = gopen (\"bbtrace.gz\", \"w\");\n\n#else\n\n  if (bb_mode & 1)\n      bb_tracefile = fopen (\"bbtrace\", \"w\");\n\n#endif /* HAVE_POPEN */\n\n  if (bb_mode & 2)\n    {\n      bb_hashbuckets = (struct bb_edge **) \n                   malloc (BB_BUCKETS * sizeof (struct bb_edge *));\n      if (bb_hashbuckets)\n        memset (bb_hashbuckets, 0, BB_BUCKETS * sizeof (struct bb_edge *));\n    }\n\n  if (bb_mode & 12)\n    {\n      bb_stacksize = 10;\n      bb_stack = (unsigned long *) malloc (bb_stacksize * sizeof (*bb_stack));\n    }\n\n#ifdef ON_EXIT\n      /* Initialize destructor.  */\n      ON_EXIT (__bb_exit_trace_func, 0);\n#endif\n\n}\n\n/* Called upon entering a basic block.  */\n\nvoid\n__bb_trace_func ()\n{\n  struct bb_edge *bucket;\n\n  MACHINE_STATE_SAVE(\"1\")\n\n  if (!bb_callcount || (__bb.blocks->flags && (__bb.blocks->flags[__bb.blockno] & TRACE_OFF)))\n    goto skip;\n\n  bb_dst = __bb.blocks->addresses[__bb.blockno];\n  __bb.blocks->counts[__bb.blockno]++;\n\n  if (bb_tracefile)\n    {\n      fwrite (&bb_dst, sizeof (unsigned long), 1, bb_tracefile);\n    }\n\n  if (bb_hashbuckets)\n    {\n      struct bb_edge **startbucket, **oldnext;\n\n      oldnext = startbucket\n\t= & bb_hashbuckets[ (((int) bb_src*8) ^ (int) bb_dst) % BB_BUCKETS ];\n      bucket = *startbucket;\n\n      for (bucket = *startbucket; bucket; \n           oldnext = &(bucket->next), bucket = *oldnext)\n        {\n          if (bucket->src_addr == bb_src\n\t      && bucket->dst_addr == bb_dst)\n            {\n              bucket->count++;\n              *oldnext = bucket->next;\n              bucket->next = *startbucket;\n              *startbucket = bucket;\n              goto ret;\n            }\n        }\n\n      bucket = (struct bb_edge *) malloc (sizeof (struct bb_edge));\n\n      if (!bucket)\n        {\n          if (!reported)\n            {\n              fprintf (stderr, \"Profiler: out of memory\\n\");\n              reported = 1;\n            }\n        }\n\n      else\n        {\n          bucket->src_addr = bb_src;\n          bucket->dst_addr = bb_dst;\n          bucket->next = *startbucket;\n          *startbucket = bucket;\n          bucket->count = 1;\n        }\n    }\n\nret:\n  bb_src = bb_dst;\n\nskip:\n  ;\n\n  MACHINE_STATE_RESTORE(\"1\")\n\n}\n\n/* Called when returning from a function and `__bb_showret__' is set.  */\n\nstatic void\n__bb_trace_func_ret ()\n{\n  struct bb_edge *bucket;\n\n  if (!bb_callcount || (__bb.blocks->flags && (__bb.blocks->flags[__bb.blockno] & TRACE_OFF)))\n    goto skip;\n\n  if (bb_hashbuckets)\n    {\n      struct bb_edge **startbucket, **oldnext;\n\n      oldnext = startbucket\n\t= & bb_hashbuckets[ (((int) bb_dst * 8) ^ (int) bb_src) % BB_BUCKETS ];\n      bucket = *startbucket;\n\n      for (bucket = *startbucket; bucket; \n           oldnext = &(bucket->next), bucket = *oldnext)\n        {\n          if (bucket->src_addr == bb_dst\n\t       && bucket->dst_addr == bb_src)\n            {\n              bucket->count++;\n              *oldnext = bucket->next;\n              bucket->next = *startbucket;\n              *startbucket = bucket;\n              goto ret;\n            }\n        }\n\n      bucket = (struct bb_edge *) malloc (sizeof (struct bb_edge));\n\n      if (!bucket)\n        {\n          if (!reported)\n            {\n              fprintf (stderr, \"Profiler: out of memory\\n\");\n              reported = 1;\n            }\n        }\n\n      else\n        {\n          bucket->src_addr = bb_dst;\n          bucket->dst_addr = bb_src;\n          bucket->next = *startbucket;\n          *startbucket = bucket;\n          bucket->count = 1;\n        }\n    }\n\nret:\n  bb_dst = bb_src;\n\nskip:\n  ;\n\n}\n\n/* Called upon entering the first function of a file.  */\n\nstatic void\n__bb_init_file (struct bb *blocks)\n{\n\n  const struct bb_func *p;\n  long blk, ncounts = blocks->ncounts;\n  const char **functions = blocks->functions;\n\n  /* Set up linked list.  */\n  blocks->zero_word = 1;\n  blocks->next = bb_head;\n  bb_head = blocks;\n\n  blocks->flags = 0;\n  if (!bb_func_head\n      || !(blocks->flags = (char *) malloc (sizeof (char) * blocks->ncounts)))\n    return;\n\n  for (blk = 0; blk < ncounts; blk++)\n    blocks->flags[blk] = 0;\n\n  for (blk = 0; blk < ncounts; blk++)\n    {\n      for (p = bb_func_head; p; p = p->next)\n        {\n          if (!strcmp (p->funcname, functions[blk])\n\t      && (!p->filename || !strcmp (p->filename, blocks->filename)))\n            {\n              blocks->flags[blk] |= p->mode;\n            }\n        }\n    }\n\n}\n\n/* Called when exiting from a function.  */\n\nvoid\n__bb_trace_ret ()\n{\n\n  MACHINE_STATE_SAVE(\"2\")\n\n  if (bb_callcount)\n    {\n      if ((bb_mode & 12) && bb_stacksize > bb_callcount)\n        {\n          bb_src = bb_stack[bb_callcount];\n          if (bb_mode & 8)\n            __bb_trace_func_ret ();\n        }\n\n      bb_callcount -= 1;\n    }\n\n  MACHINE_STATE_RESTORE(\"2\")\n\n}\n\n/* Called when entering a function.  */\n\nvoid\n__bb_init_trace_func (struct bb *blocks, unsigned long blockno)\n{\n  static int trace_init = 0;\n\n  MACHINE_STATE_SAVE(\"3\")\n\n  if (!blocks->zero_word)\n    { \n      if (!trace_init)\n        { \n          trace_init = 1;\n          __bb_init_prg ();\n        }\n      __bb_init_file (blocks);\n    }\n\n  if (bb_callcount)\n    {\n\n      bb_callcount += 1;\n\n      if (bb_mode & 12)\n        {\n          if (bb_callcount >= bb_stacksize)\n            {\n              size_t newsize = bb_callcount + 100;\n\n              bb_stack = (unsigned long *) realloc (bb_stack, newsize);\n              if (! bb_stack)\n                {\n                  if (!reported)\n                    {\n                      fprintf (stderr, \"Profiler: out of memory\\n\");\n                      reported = 1;\n                    }\n                  bb_stacksize = 0;\n                  goto stack_overflow;\n                }\n\t      bb_stacksize = newsize;\n            }\n          bb_stack[bb_callcount] = bb_src;\n\n          if (bb_mode & 4)\n            bb_src = 0;\n\n        }\n\nstack_overflow:;\n\n    }\n\n  else if (blocks->flags && (blocks->flags[blockno] & TRACE_ON))\n    {\n      bb_callcount = 1;\n      bb_src = 0;\n\n      if (bb_stack)\n          bb_stack[bb_callcount] = bb_src;\n    }\n\n  MACHINE_STATE_RESTORE(\"3\")\n}\n\n#endif /* not inhibit_libc */\n#endif /* not BLOCK_PROFILER_CODE */\n#endif /* L_bb */\n\f\n#ifdef L_shtab\nunsigned int __shtab[] = {\n    0x00000001, 0x00000002, 0x00000004, 0x00000008,\n    0x00000010, 0x00000020, 0x00000040, 0x00000080,\n    0x00000100, 0x00000200, 0x00000400, 0x00000800,\n    0x00001000, 0x00002000, 0x00004000, 0x00008000,\n    0x00010000, 0x00020000, 0x00040000, 0x00080000,\n    0x00100000, 0x00200000, 0x00400000, 0x00800000,\n    0x01000000, 0x02000000, 0x04000000, 0x08000000,\n    0x10000000, 0x20000000, 0x40000000, 0x80000000\n  };\n#endif\n\f\n#ifdef L_clear_cache\n/* Clear part of an instruction cache.  */\n\n#define INSN_CACHE_PLANE_SIZE (INSN_CACHE_SIZE / INSN_CACHE_DEPTH)\n\nvoid\n__clear_cache (char *beg, char *end)\n{\n#ifdef CLEAR_INSN_CACHE \n  CLEAR_INSN_CACHE (beg, end);\n#else\n#ifdef INSN_CACHE_SIZE\n  static char array[INSN_CACHE_SIZE + INSN_CACHE_PLANE_SIZE + INSN_CACHE_LINE_WIDTH];\n  static int initialized;\n  int offset;\n  void *start_addr\n  void *end_addr;\n  typedef (*function_ptr) ();\n\n#if (INSN_CACHE_SIZE / INSN_CACHE_LINE_WIDTH) < 16\n  /* It's cheaper to clear the whole cache.\n     Put in a series of jump instructions so that calling the beginning\n     of the cache will clear the whole thing.  */\n\n  if (! initialized)\n    {\n      int ptr = (((int) array + INSN_CACHE_LINE_WIDTH - 1)\n\t\t & -INSN_CACHE_LINE_WIDTH);\n      int end_ptr = ptr + INSN_CACHE_SIZE;\n\n      while (ptr < end_ptr)\n\t{\n\t  *(INSTRUCTION_TYPE *)ptr\n\t    = JUMP_AHEAD_INSTRUCTION + INSN_CACHE_LINE_WIDTH;\n\t  ptr += INSN_CACHE_LINE_WIDTH;\n\t}\n      *(INSTRUCTION_TYPE *) (ptr - INSN_CACHE_LINE_WIDTH) = RETURN_INSTRUCTION;\n\n      initialized = 1;\n    }\n\n  /* Call the beginning of the sequence.  */\n  (((function_ptr) (((int) array + INSN_CACHE_LINE_WIDTH - 1)\n\t\t    & -INSN_CACHE_LINE_WIDTH))\n   ());\n\n#else /* Cache is large.  */\n\n  if (! initialized)\n    {\n      int ptr = (((int) array + INSN_CACHE_LINE_WIDTH - 1)\n\t\t & -INSN_CACHE_LINE_WIDTH);\n\n      while (ptr < (int) array + sizeof array)\n\t{\n\t  *(INSTRUCTION_TYPE *)ptr = RETURN_INSTRUCTION;\n\t  ptr += INSN_CACHE_LINE_WIDTH;\n\t}\n\n      initialized = 1;\n    }\n\n  /* Find the location in array that occupies the same cache line as BEG.  */\n\n  offset = ((int) beg & -INSN_CACHE_LINE_WIDTH) & (INSN_CACHE_PLANE_SIZE - 1);\n  start_addr = (((int) (array + INSN_CACHE_PLANE_SIZE - 1)\n\t\t & -INSN_CACHE_PLANE_SIZE)\n\t\t+ offset);\n\n  /* Compute the cache alignment of the place to stop clearing.  */\n#if 0  /* This is not needed for gcc's purposes.  */\n  /* If the block to clear is bigger than a cache plane,\n     we clear the entire cache, and OFFSET is already correct.  */ \n  if (end < beg + INSN_CACHE_PLANE_SIZE)\n#endif\n    offset = (((int) (end + INSN_CACHE_LINE_WIDTH - 1)\n\t       & -INSN_CACHE_LINE_WIDTH)\n\t      & (INSN_CACHE_PLANE_SIZE - 1));\n\n#if INSN_CACHE_DEPTH > 1\n  end_addr = (start_addr & -INSN_CACHE_PLANE_SIZE) + offset;\n  if (end_addr <= start_addr)\n    end_addr += INSN_CACHE_PLANE_SIZE;\n\n  for (plane = 0; plane < INSN_CACHE_DEPTH; plane++)\n    {\n      int addr = start_addr + plane * INSN_CACHE_PLANE_SIZE;\n      int stop = end_addr + plane * INSN_CACHE_PLANE_SIZE;\n\n      while (addr != stop)\n\t{\n\t  /* Call the return instruction at ADDR.  */\n\t  ((function_ptr) addr) ();\n\n\t  addr += INSN_CACHE_LINE_WIDTH;\n\t}\n    }\n#else /* just one plane */\n  do\n    {\n      /* Call the return instruction at START_ADDR.  */\n      ((function_ptr) start_addr) ();\n\n      start_addr += INSN_CACHE_LINE_WIDTH;\n    }\n  while ((start_addr % INSN_CACHE_SIZE) != offset);\n#endif /* just one plane */\n#endif /* Cache is large */\n#endif /* Cache exists */\n#endif /* CLEAR_INSN_CACHE */\n}\n\n#endif /* L_clear_cache */\n\f\n#ifdef L_trampoline\n\n/* Jump to a trampoline, loading the static chain address.  */\n\n#if defined(WINNT) && ! defined(__CYGWIN__) && ! defined (_UWIN)\n\nlong getpagesize()\n{\n#ifdef _ALPHA_\n  return 8192;\n#else\n  return 4096;\n#endif\n}\n\n#ifdef i386\nextern int VirtualProtect (char *, int, int, int *) __attribute__((stdcall));\n#endif\n\nint\nmprotect (char *addr, int len, int prot)\n{\n  int np, op;\n\n  if (prot == 7)\n    np = 0x40;\n  else if (prot == 5)\n    np = 0x20;\n  else if (prot == 4)\n    np = 0x10;\n  else if (prot == 3)\n    np = 0x04;\n  else if (prot == 1)\n    np = 0x02;\n  else if (prot == 0)\n    np = 0x01;\n\n  if (VirtualProtect (addr, len, np, &op))\n    return 0;\n  else\n    return -1;\n}\n\n#endif /* WINNT && ! __CYGWIN__ && ! _UWIN */\n\n#ifdef TRANSFER_FROM_TRAMPOLINE \nTRANSFER_FROM_TRAMPOLINE \n#endif\n\n#if defined (NeXT) && defined (__MACH__)\n\n/* Make stack executable so we can call trampolines on stack.\n   This is called from INITIALIZE_TRAMPOLINE in next.h.  */\n#ifdef NeXTStep21\n #include <mach.h>\n#else\n #include <mach/mach.h>\n#endif\n\nvoid\n__enable_execute_stack (char *addr)\n{\n  kern_return_t r;\n  char *eaddr = addr + TRAMPOLINE_SIZE;\n  vm_address_t a = (vm_address_t) addr;\n\n  /* turn on execute access on stack */\n  r = vm_protect (task_self (), a, TRAMPOLINE_SIZE, FALSE, VM_PROT_ALL);\n  if (r != KERN_SUCCESS)\n    {\n      mach_error(\"vm_protect VM_PROT_ALL\", r);\n      exit(1);\n    }\n\n  /* We inline the i-cache invalidation for speed */\n\n#ifdef CLEAR_INSN_CACHE\n  CLEAR_INSN_CACHE (addr, eaddr);\n#else\n  __clear_cache ((int) addr, (int) eaddr);\n#endif\n} \n\n#endif /* defined (NeXT) && defined (__MACH__) */\n\n#ifdef __convex__\n\n/* Make stack executable so we can call trampolines on stack.\n   This is called from INITIALIZE_TRAMPOLINE in convex.h.  */\n\n#include <sys/mman.h>\n#include <sys/vmparam.h>\n#include <machine/machparam.h>\n\nvoid\n__enable_execute_stack ()\n{\n  int fp;\n  static unsigned lowest = USRSTACK;\n  unsigned current = (unsigned) &fp & -NBPG;\n\n  if (lowest > current)\n    {\n      unsigned len = lowest - current;\n      mremap (current, &len, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE);\n      lowest = current;\n    }\n\n  /* Clear instruction cache in case an old trampoline is in it.  */\n  asm (\"pich\");\n}\n#endif /* __convex__ */\n\n#ifdef __sysV88__\n\n/* Modified from the convex -code above.  */\n\n#include <sys/param.h>\n#include <errno.h>\n#include <sys/m88kbcs.h>\n\nvoid\n__enable_execute_stack ()\n{\n  int save_errno;\n  static unsigned long lowest = USRSTACK;\n  unsigned long current = (unsigned long) &save_errno & -NBPC;\n  \n  /* Ignore errno being set. memctl sets errno to EINVAL whenever the\n     address is seen as 'negative'. That is the case with the stack.   */\n\n  save_errno=errno;\n  if (lowest > current)\n    {\n      unsigned len=lowest-current;\n      memctl(current,len,MCT_TEXT);\n      lowest = current;\n    }\n  else\n    memctl(current,NBPC,MCT_TEXT);\n  errno=save_errno;\n}\n\n#endif /* __sysV88__ */\n\n#ifdef __sysV68__\n\n#include <sys/signal.h>\n#include <errno.h>\n\n/* Motorola forgot to put memctl.o in the libp version of libc881.a,\n   so define it here, because we need it in __clear_insn_cache below */\n/* On older versions of this OS, no memctl or MCT_TEXT are defined;\n   hence we enable this stuff only if MCT_TEXT is #define'd.  */\n\n#ifdef MCT_TEXT\nasm(\"\\n\\\n\tglobal memctl\\n\\\nmemctl:\\n\\\n\tmovq &75,%d0\\n\\\n\ttrap &0\\n\\\n\tbcc.b noerror\\n\\\n\tjmp cerror%\\n\\\nnoerror:\\n\\\n\tmovq &0,%d0\\n\\\n\trts\");\n#endif\n\n/* Clear instruction cache so we can call trampolines on stack.\n   This is called from FINALIZE_TRAMPOLINE in mot3300.h.  */\n\nvoid\n__clear_insn_cache ()\n{\n#ifdef MCT_TEXT\n  int save_errno;\n\n  /* Preserve errno, because users would be surprised to have\n  errno changing without explicitly calling any system-call. */\n  save_errno = errno;\n\n  /* Keep it simple : memctl (MCT_TEXT) always fully clears the insn cache. \n     No need to use an address derived from _start or %sp, as 0 works also. */\n  memctl(0, 4096, MCT_TEXT);\n  errno = save_errno;\n#endif\n}\n\n#endif /* __sysV68__ */\n\n#ifdef __pyr__\n\n#undef NULL /* Avoid errors if stdio.h and our stddef.h mismatch.  */\n#include <stdio.h>\n#include <sys/mman.h>\n#include <sys/types.h>\n#include <sys/param.h>\n#include <sys/vmmac.h>\n\n/* Modified from the convex -code above.\n   mremap promises to clear the i-cache.  */\n\nvoid\n__enable_execute_stack ()\n{\n  int fp;\n  if (mprotect (((unsigned int)&fp/PAGSIZ)*PAGSIZ, PAGSIZ,\n\t\tPROT_READ|PROT_WRITE|PROT_EXEC))\n    {\n      perror (\"mprotect in __enable_execute_stack\");\n      fflush (stderr);\n      abort ();\n    }\n}\n#endif /* __pyr__ */\n\n#if defined (sony_news) && defined (SYSTYPE_BSD)\n\n#include <stdio.h>\n#include <sys/types.h>\n#include <sys/param.h>\n#include <syscall.h>\n#include <machine/sysnews.h>\n\n/* cacheflush function for NEWS-OS 4.2.\n   This function is called from trampoline-initialize code\n   defined in config/mips/mips.h.  */\n\nvoid\ncacheflush (char *beg, int size, int flag)\n{\n  if (syscall (SYS_sysnews, NEWS_CACHEFLUSH, beg, size, FLUSH_BCACHE))\n    {\n      perror (\"cache_flush\");\n      fflush (stderr);\n      abort ();\n    }\n}\n\n#endif /* sony_news */\n#endif /* L_trampoline */\n\f\n#ifndef __CYGWIN__\n#ifdef L__main\n\n#include \"gbl-ctors.h\"\n/* Some systems use __main in a way incompatible with its use in gcc, in these\n   cases use the macros NAME__MAIN to give a quoted symbol and SYMBOL__MAIN to\n   give the same symbol without quotes for an alternative entry point.  You\n   must define both, or neither.  */\n#ifndef NAME__MAIN\n#define NAME__MAIN \"__main\"\n#define SYMBOL__MAIN __main\n#endif\n\n#ifdef INIT_SECTION_ASM_OP\n#undef HAS_INIT_SECTION\n#define HAS_INIT_SECTION\n#endif\n\n#if !defined (HAS_INIT_SECTION) || !defined (OBJECT_FORMAT_ELF)\n/* Run all the global destructors on exit from the program.  */\n\nvoid\n__do_global_dtors ()\n{\n#ifdef DO_GLOBAL_DTORS_BODY\n  DO_GLOBAL_DTORS_BODY;\n#else\n  static func_ptr *p = __DTOR_LIST__ + 1;\n  while (*p)\n    {\n      p++;\n      (*(p-1)) ();\n    }\n#endif\n}\n#endif\n\n#ifndef HAS_INIT_SECTION\n/* Run all the global constructors on entry to the program.  */\n\n#ifndef ON_EXIT\n#define ON_EXIT(a, b)\n#else\n/* Make sure the exit routine is pulled in to define the globals as\n   bss symbols, just in case the linker does not automatically pull\n   bss definitions from the library.  */\n\nextern int _exit_dummy_decl;\nint *_exit_dummy_ref = &_exit_dummy_decl;\n#endif /* ON_EXIT */\n\nvoid\n__do_global_ctors ()\n{\n  DO_GLOBAL_CTORS_BODY;\n  ON_EXIT (__do_global_dtors, 0);\n}\n#endif /* no HAS_INIT_SECTION */\n\n#if !defined (HAS_INIT_SECTION) || defined (INVOKE__main)\n/* Subroutine called automatically by `main'.\n   Compiling a global function named `main'\n   produces an automatic call to this function at the beginning.\n\n   For many systems, this routine calls __do_global_ctors.\n   For systems which support a .init section we use the .init section\n   to run __do_global_ctors, so we need not do anything here.  */\n\nvoid\nSYMBOL__MAIN ()\n{\n  /* Support recursive calls to `main': run initializers just once.  */\n  static int initialized;\n  if (! initialized)\n    {\n      initialized = 1;\n      __do_global_ctors ();\n    }\n}\n#endif /* no HAS_INIT_SECTION or INVOKE__main */\n\n#endif /* L__main */\n#endif /* __CYGWIN__ */\n\f\n#ifdef L_ctors\n\n#include \"gbl-ctors.h\"\n\n/* Provide default definitions for the lists of constructors and\n   destructors, so that we don't get linker errors.  These symbols are\n   intentionally bss symbols, so that gld and/or collect will provide\n   the right values.  */\n\n/* We declare the lists here with two elements each,\n   so that they are valid empty lists if no other definition is loaded.\n\n   If we are using the old \"set\" extensions to have the gnu linker\n   collect ctors and dtors, then we __CTOR_LIST__ and __DTOR_LIST__\n   must be in the bss/common section.\n\n   Long term no port should use those extensions.  But many still do.  */\n#if !defined(INIT_SECTION_ASM_OP) && !defined(CTOR_LISTS_DEFINED_EXTERNALLY)\n#if defined (ASM_OUTPUT_CONSTRUCTOR) || defined (USE_COLLECT2)\nfunc_ptr __CTOR_LIST__[2] = {0, 0};\nfunc_ptr __DTOR_LIST__[2] = {0, 0};\n#else\nfunc_ptr __CTOR_LIST__[2];\nfunc_ptr __DTOR_LIST__[2];\n#endif\n#endif /* no INIT_SECTION_ASM_OP and not CTOR_LISTS_DEFINED_EXTERNALLY */\n#endif /* L_ctors */\n\f\n#ifdef L_exit\n\n#include \"gbl-ctors.h\"\n\n#ifdef NEED_ATEXIT\n# ifdef ON_EXIT\n#  undef ON_EXIT\n# endif\nint _exit_dummy_decl = 0;\t/* prevent compiler & linker warnings */\n#endif\n\n#ifndef ON_EXIT\n\n#ifdef NEED_ATEXIT\n# include <errno.h>\n\nstatic func_ptr *atexit_chain = 0;\nstatic long atexit_chain_length = 0;\nstatic volatile long last_atexit_chain_slot = -1;\n\nint atexit (func_ptr func)\n{\n  if (++last_atexit_chain_slot == atexit_chain_length)\n    {\n      atexit_chain_length += 32;\n      if (atexit_chain)\n\tatexit_chain = (func_ptr *) realloc (atexit_chain, atexit_chain_length\n\t\t\t\t\t     * sizeof (func_ptr));\n      else\n\tatexit_chain = (func_ptr *) malloc (atexit_chain_length\n\t\t\t\t\t    * sizeof (func_ptr));\n      if (! atexit_chain)\n\t{\n\t  atexit_chain_length = 0;\n\t  last_atexit_chain_slot = -1;\n\t  errno = ENOMEM;\n\t  return (-1);\n\t}\n    }\n  atexit_chain[last_atexit_chain_slot] = func;\n  return (0);\n}\n#endif /* NEED_ATEXIT */\n\n/* If we have no known way of registering our own __do_global_dtors\n   routine so that it will be invoked at program exit time, then we\n   have to define our own exit routine which will get this to happen.  */\n\nextern void __do_global_dtors ();\nextern void __bb_exit_func ();\nextern void _cleanup ();\nextern void _exit () __attribute__ ((noreturn));\n\nvoid \nexit (int status)\n{\n#if !defined (INIT_SECTION_ASM_OP) || !defined (OBJECT_FORMAT_ELF)\n#ifdef NEED_ATEXIT\n  if (atexit_chain)\n    {\n      for ( ; last_atexit_chain_slot-- >= 0; )\n\t{\n\t  (*atexit_chain[last_atexit_chain_slot + 1]) ();\n\t  atexit_chain[last_atexit_chain_slot + 1] = 0;\n\t}\n      free (atexit_chain);\n      atexit_chain = 0;\n    }\n#else /* No NEED_ATEXIT */\n  __do_global_dtors ();\n#endif /* No NEED_ATEXIT */\n#endif /* !defined (INIT_SECTION_ASM_OP) || !defined (OBJECT_FORMAT_ELF) */\n/* In gbl-ctors.h, ON_EXIT is defined if HAVE_ATEXIT is defined.  In\n   __bb_init_func and _bb_init_prg, __bb_exit_func is registered with\n   ON_EXIT if ON_EXIT is defined.  Thus we must not call __bb_exit_func here\n   if HAVE_ATEXIT is defined. */\n#ifndef HAVE_ATEXIT\n#ifndef inhibit_libc\n  __bb_exit_func ();\n#endif\n#endif /* !HAVE_ATEXIT */\n#ifdef EXIT_BODY\n  EXIT_BODY;\n#else\n  _cleanup ();\n#endif\n  _exit (status);\n}\n\n#else /* ON_EXIT defined */\nint _exit_dummy_decl = 0;\t/* prevent compiler & linker warnings */\n\n# ifndef HAVE_ATEXIT\n/* Provide a fake for atexit() using ON_EXIT.  */\nint atexit (func_ptr func)\n{\n  return ON_EXIT (func, NULL);\n}\n# endif /* HAVE_ATEXIT */\n#endif /* ON_EXIT defined */\n\n#endif /* L_exit */\n\f\n#ifdef L_eh\n\n#include \"gthr.h\"\n\n/* Shared exception handling support routines.  */\n\nextern void __default_terminate (void) __attribute__ ((__noreturn__));\n\nvoid\n__default_terminate ()\n{\n  abort ();\n}\n\nvoid (*__terminate_func)() = __default_terminate;\n\nvoid\n__terminate ()\n{\n  (*__terminate_func)();\n}\n\nvoid *\n__throw_type_match (void *catch_type, void *throw_type, void *obj)\n{\n#if 0\n printf (\"__throw_type_match (): catch_type = %s, throw_type = %s\\n\",\n\t catch_type, throw_type);\n#endif\n if (strcmp ((const char *)catch_type, (const char *)throw_type) == 0)\n   return obj;\n return 0;\n}\n\nvoid\n__empty ()\n{\n}\n\f\n\n/* Include definitions of EH context and table layout */\n\n#include \"eh-common.h\"\n#ifndef inhibit_libc\n#include <stdio.h>\n#endif\n\n/* Allocate and return a new EH context structure. */\n\nextern void __throw ();\n\nstatic void *\nnew_eh_context ()\n{\n  struct eh_full_context {\n    struct eh_context c;\n    void *top_elt[2];\n  } *ehfc = (struct eh_full_context *) malloc (sizeof *ehfc);\n\n  if (! ehfc)\n    __terminate ();\n\n  memset (ehfc, 0, sizeof *ehfc);\n\n  ehfc->c.dynamic_handler_chain = (void **) ehfc->top_elt;\n\n  /* This should optimize out entirely.  This should always be true,\n     but just in case it ever isn't, don't allow bogus code to be\n     generated.  */\n\n  if ((void*)(&ehfc->c) != (void*)ehfc)\n    __terminate ();\n\n  return &ehfc->c;\n}\n\n#if __GTHREADS\nstatic __gthread_key_t eh_context_key;\n\n/* Destructor for struct eh_context. */\nstatic void\neh_context_free (void *ptr)\n{\n  __gthread_key_dtor (eh_context_key, ptr);\n  if (ptr)\n    free (ptr);\n}\n#endif\n\n/* Pointer to function to return EH context. */\n\nstatic struct eh_context *eh_context_initialize ();\nstatic struct eh_context *eh_context_static ();\n#if __GTHREADS\nstatic struct eh_context *eh_context_specific ();\n#endif\n\nstatic struct eh_context *(*get_eh_context) () = &eh_context_initialize;\n\n/* Routine to get EH context.\n   This one will simply call the function pointer. */\n\nvoid *\n__get_eh_context ()\n{\n  return (void *) (*get_eh_context) ();\n}\n\n/* Get and set the language specific info pointer. */\n\nvoid **\n__get_eh_info ()\n{\n  struct eh_context *eh = (*get_eh_context) ();\n  return &eh->info;\n}\n\f\n#if __GTHREADS\nstatic void\neh_threads_initialize ()\n{\n  /* Try to create the key.  If it fails, revert to static method,\n     otherwise start using thread specific EH contexts. */\n  if (__gthread_key_create (&eh_context_key, &eh_context_free) == 0)\n    get_eh_context = &eh_context_specific;\n  else\n    get_eh_context = &eh_context_static;\n}\n#endif /* no __GTHREADS */\n\n/* Initialize EH context.\n   This will be called only once, since we change GET_EH_CONTEXT\n   pointer to another routine. */\n\nstatic struct eh_context *\neh_context_initialize ()\n{\n#if __GTHREADS\n\n  static __gthread_once_t once = __GTHREAD_ONCE_INIT;\n  /* Make sure that get_eh_context does not point to us anymore.\n     Some systems have dummy thread routines in their libc that\n     return a success (Solaris 2.6 for example). */\n  if (__gthread_once (&once, eh_threads_initialize) != 0\n      || get_eh_context == &eh_context_initialize)\n    {\n      /* Use static version of EH context. */\n      get_eh_context = &eh_context_static;\n    }\n\n#else /* no __GTHREADS */\n\n  /* Use static version of EH context. */\n  get_eh_context = &eh_context_static;\n\n#endif /* no __GTHREADS */\n\n  return (*get_eh_context) ();\n}\n\n/* Return a static EH context. */\n\nstatic struct eh_context *\neh_context_static ()\n{\n  static struct eh_context eh;\n  static int initialized;\n  static void *top_elt[2];\n\n  if (! initialized)\n    {\n      initialized = 1;\n      memset (&eh, 0, sizeof eh);\n      eh.dynamic_handler_chain = top_elt;\n    }\n  return &eh;\n}\n\n#if __GTHREADS\n/* Return a thread specific EH context. */\n\nstatic struct eh_context *\neh_context_specific ()\n{\n  struct eh_context *eh;\n  eh = (struct eh_context *) __gthread_getspecific (eh_context_key);\n  if (! eh)\n    {\n      eh = new_eh_context ();\n      if (__gthread_setspecific (eh_context_key, (void *) eh) != 0)\n\t__terminate ();\n    }\n\n  return eh;\n}\n#endif __GTHREADS\n\f\n/* Support routines for setjmp/longjmp exception handling.  */\n\n/* Calls to __sjthrow are generated by the compiler when an exception\n   is raised when using the setjmp/longjmp exception handling codegen\n   method.  */\n\n#ifdef DONT_USE_BUILTIN_SETJMP\nextern void longjmp (void *, int);\n#endif\n\n/* Routine to get the head of the current thread's dynamic handler chain\n   use for exception handling. */\n\nvoid ***\n__get_dynamic_handler_chain ()\n{\n  struct eh_context *eh = (*get_eh_context) ();\n  return &eh->dynamic_handler_chain;\n}\n\n/* This is used to throw an exception when the setjmp/longjmp codegen\n   method is used for exception handling.\n\n   We call __terminate if there are no handlers left.  Otherwise we run the\n   cleanup actions off the dynamic cleanup stack, and pop the top of the\n   dynamic handler chain, and use longjmp to transfer back to the associated\n   handler.  */\n\nextern void __sjthrow (void) __attribute__ ((__noreturn__));\n\nvoid\n__sjthrow ()\n{\n  struct eh_context *eh = (*get_eh_context) ();\n  void ***dhc = &eh->dynamic_handler_chain;\n  void *jmpbuf;\n  void (*func)(void *, int);\n  void *arg;\n  void ***cleanup;\n\n  /* The cleanup chain is one word into the buffer.  Get the cleanup\n     chain.  */\n  cleanup = (void***)&(*dhc)[1];\n\n  /* If there are any cleanups in the chain, run them now.  */\n  if (cleanup[0])\n    {\n      double store[200];\n      void **buf = (void**)store;\n      buf[1] = 0;\n      buf[0] = (*dhc);\n\n      /* try { */\n#ifdef DONT_USE_BUILTIN_SETJMP\n      if (! setjmp (&buf[2]))\n#else\n      if (! __builtin_setjmp (&buf[2]))\n#endif\n\t{\n\t  *dhc = buf;\n\t  while (cleanup[0])\n\t    {\n\t      func = (void(*)(void*, int))cleanup[0][1];\n\t      arg = (void*)cleanup[0][2];\n\n\t      /* Update this before running the cleanup.  */\n\t      cleanup[0] = (void **)cleanup[0][0];\n\n\t      (*func)(arg, 2);\n\t    }\n\t  *dhc = buf[0];\n\t}\n      /* catch (...) */\n      else\n\t{\n\t  __terminate ();\n\t}\n    }\n  \n  /* We must call terminate if we try and rethrow an exception, when\n     there is no exception currently active and when there are no\n     handlers left.  */\n  if (! eh->info || (*dhc)[0] == 0)\n    __terminate ();\n    \n  /* Find the jmpbuf associated with the top element of the dynamic\n     handler chain.  The jumpbuf starts two words into the buffer.  */\n  jmpbuf = &(*dhc)[2];\n\n  /* Then we pop the top element off the dynamic handler chain.  */\n  *dhc = (void**)(*dhc)[0];\n\n  /* And then we jump to the handler.  */\n\n#ifdef DONT_USE_BUILTIN_SETJMP\n  longjmp (jmpbuf, 1);\n#else\n  __builtin_longjmp (jmpbuf, 1);\n#endif\n}\n\n/* Run cleanups on the dynamic cleanup stack for the current dynamic\n   handler, then pop the handler off the dynamic handler stack, and\n   then throw.  This is used to skip the first handler, and transfer\n   control to the next handler in the dynamic handler stack.  */\n\nextern void __sjpopnthrow (void) __attribute__ ((__noreturn__));\n\nvoid\n__sjpopnthrow ()\n{\n  struct eh_context *eh = (*get_eh_context) ();\n  void ***dhc = &eh->dynamic_handler_chain;\n  void (*func)(void *, int);\n  void *arg;\n  void ***cleanup;\n\n  /* The cleanup chain is one word into the buffer.  Get the cleanup\n     chain.  */\n  cleanup = (void***)&(*dhc)[1];\n\n  /* If there are any cleanups in the chain, run them now.  */\n  if (cleanup[0])\n    {\n      double store[200];\n      void **buf = (void**)store;\n      buf[1] = 0;\n      buf[0] = (*dhc);\n\n      /* try { */\n#ifdef DONT_USE_BUILTIN_SETJMP\n      if (! setjmp (&buf[2]))\n#else\n      if (! __builtin_setjmp (&buf[2]))\n#endif\n\t{\n\t  *dhc = buf;\n\t  while (cleanup[0])\n\t    {\n\t      func = (void(*)(void*, int))cleanup[0][1];\n\t      arg = (void*)cleanup[0][2];\n\n\t      /* Update this before running the cleanup.  */\n\t      cleanup[0] = (void **)cleanup[0][0];\n\n\t      (*func)(arg, 2);\n\t    }\n\t  *dhc = buf[0];\n\t}\n      /* catch (...) */\n      else\n\t{\n\t  __terminate ();\n\t}\n    }\n\n  /* Then we pop the top element off the dynamic handler chain.  */\n  *dhc = (void**)(*dhc)[0];\n\n  __sjthrow ();\n}\n\f\n/* Support code for all exception region-based exception handling.  */\n\nint\n__eh_rtime_match (void *rtime)\n{\n  void *info;\n  __eh_matcher matcher;\n  void *ret;\n\n  info = *(__get_eh_info ());\n  matcher = ((__eh_info *)info)->match_function;\n  if (! matcher)\n    {\n#ifndef inhibit_libc\n      fprintf (stderr, \"Internal Compiler Bug: No runtime type matcher.\");\n#endif\n      return 0;\n    }\n  ret = (*matcher) (info, rtime, (void *)0);\n  return (ret != NULL);\n}\n\n/* This value identifies the place from which an exception is being\n   thrown.  */\n\n#ifdef EH_TABLE_LOOKUP\n\nEH_TABLE_LOOKUP\n\n#else\n\n#ifdef DWARF2_UNWIND_INFO\n\n\n/* Return the table version of an exception descriptor */\n\nshort \n__get_eh_table_version (exception_descriptor *table) \n{\n  return table->lang.version;\n}\n\n/* Return the originating table language of an exception descriptor */\n\nshort \n__get_eh_table_language (exception_descriptor *table)\n{\n  return table->lang.language;\n}\n\n/* This routine takes a PC and a pointer to the exception region TABLE for\n   its translation unit, and returns the address of the exception handler\n   associated with the closest exception table handler entry associated\n   with that PC, or 0 if there are no table entries the PC fits in.\n\n   In the advent of a tie, we have to give the last entry, as it represents\n   an inner block.  */\n\nstatic void *\nold_find_exception_handler (void *pc, old_exception_table *table)\n{\n  if (table)\n    {\n      int pos;\n      int best = -1;\n\n      /* We can't do a binary search because the table isn't guaranteed\n         to be sorted from function to function.  */\n      for (pos = 0; table[pos].start_region != (void *) -1; ++pos)\n        {\n          if (table[pos].start_region <= pc && table[pos].end_region > pc)\n            {\n              /* This can apply.  Make sure it is at least as small as\n                 the previous best.  */\n              if (best == -1 || (table[pos].end_region <= table[best].end_region\n                        && table[pos].start_region >= table[best].start_region))\n                best = pos;\n            }\n          /* But it is sorted by starting PC within a function.  */\n          else if (best >= 0 && table[pos].start_region > pc)\n            break;\n        }\n      if (best != -1)\n        return table[best].exception_handler;\n    }\n\n  return (void *) 0;\n}\n\n/* find_exception_handler finds the correct handler, if there is one, to\n   handle an exception.\n   returns a pointer to the handler which controlled should be transferred\n   to, or NULL if there is nothing left.\n   Parameters:\n   PC - pc where the exception originates. If this is a rethrow, \n        then this starts out as a pointer to the exception table\n\tentry we wish to rethrow out of.\n   TABLE - exception table for the current module.\n   EH_INFO - eh info pointer for this exception.\n   RETHROW - 1 if this is a rethrow. (see incoming value of PC).\n   CLEANUP - returned flag indicating whether this is a cleanup handler.\n*/\nstatic void *\nfind_exception_handler (void *pc, exception_descriptor *table, \n                        __eh_info *eh_info, int rethrow, int *cleanup)\n{\n\n  void *retval = NULL;\n  *cleanup = 1;\n  if (table)\n    {\n      int pos = 0;\n      /* The new model assumed the table is sorted inner-most out so the\n         first region we find which matches is the correct one */\n\n      exception_table *tab = &(table->table[0]);\n\n      /* Subtract 1 from the PC to avoid hitting the next region */\n      if (rethrow) \n        {\n          /* pc is actually the region table entry to rethrow out of */\n          pos = ((exception_table *) pc) - tab;\n          pc = ((exception_table *) pc)->end_region - 1;\n\n          /* The label is always on the LAST handler entry for a region, \n             so we know the next entry is a different region, even if the\n             addresses are the same. Make sure its not end of table tho. */\n          if (tab[pos].start_region != (void *) -1)\n            pos++;\n        }\n      else\n        pc--;\n      \n      /* We can't do a binary search because the table is in inner-most\n         to outermost address ranges within functions */\n      for ( ; tab[pos].start_region != (void *) -1; pos++)\n        { \n          if (tab[pos].start_region <= pc && tab[pos].end_region > pc)\n            {\n              if (tab[pos].match_info)\n                {\n                  __eh_matcher matcher = eh_info->match_function;\n                  /* match info but no matcher is NOT a match */\n                  if (matcher) \n                    {\n                      void *ret = (*matcher)((void *) eh_info, \n                                             tab[pos].match_info, table);\n                      if (ret) \n                        {\n                          if (retval == NULL)\n                            retval = tab[pos].exception_handler;\n                          *cleanup = 0;\n                          break;\n                        }\n                    }\n                }\n              else\n                {\n                  if (retval == NULL)\n                    retval = tab[pos].exception_handler;\n                }\n            }\n        }\n    }\n  return retval;\n}\n#endif /* DWARF2_UNWIND_INFO */\n#endif /* EH_TABLE_LOOKUP */\n\f\n#ifdef DWARF2_UNWIND_INFO\n/* Support code for exception handling using static unwind information.  */\n\n#include \"frame.h\"\n\n/* This type is used in get_reg and put_reg to deal with ABIs where a void*\n   is smaller than a word, such as the Irix 6 n32 ABI.  We cast twice to\n   avoid a warning about casting between int and pointer of different\n   sizes.  */\n\ntypedef int ptr_type __attribute__ ((mode (pointer)));\n\n#ifdef INCOMING_REGNO\n/* Is the saved value for register REG in frame UDATA stored in a register\n   window in the previous frame?  */\n\n/* ??? The Sparc INCOMING_REGNO references TARGET_FLAT.  This allows us\n   to use the macro here.  One wonders, though, that perhaps TARGET_FLAT\n   compiled functions won't work with the frame-unwind stuff here.  \n   Perhaps the entireity of in_reg_window should be conditional on having\n   seen a DW_CFA_GNU_window_save?  */\n#define target_flags 0\n\nstatic int\nin_reg_window (int reg, frame_state *udata)\n{\n  if (udata->saved[reg] == REG_SAVED_REG)\n    return INCOMING_REGNO (reg) == reg;\n  if (udata->saved[reg] != REG_SAVED_OFFSET)\n    return 0;\n\n#ifdef STACK_GROWS_DOWNWARD\n  return udata->reg_or_offset[reg] > 0;\n#else\n  return udata->reg_or_offset[reg] < 0;\n#endif\n}\n#else\nstatic inline int in_reg_window (int reg, frame_state *udata) { return 0; }\n#endif /* INCOMING_REGNO */\n\n/* Get the address of register REG as saved in UDATA, where SUB_UDATA is a\n   frame called by UDATA or 0.  */\n\nstatic word_type *\nget_reg_addr (unsigned reg, frame_state *udata, frame_state *sub_udata)\n{\n  while (udata->saved[reg] == REG_SAVED_REG)\n    {\n      reg = udata->reg_or_offset[reg];\n      if (in_reg_window (reg, udata))\n\t{\n          udata = sub_udata;\n\t  sub_udata = NULL;\n\t}\n    }\n  if (udata->saved[reg] == REG_SAVED_OFFSET)\n    return (word_type *)(udata->cfa + udata->reg_or_offset[reg]);\n  else\n    abort ();\n}\n\n/* Get the value of register REG as saved in UDATA, where SUB_UDATA is a\n   frame called by UDATA or 0.  */\n\nstatic inline void *\nget_reg (unsigned reg, frame_state *udata, frame_state *sub_udata)\n{\n  return (void *)(ptr_type) *get_reg_addr (reg, udata, sub_udata);\n}\n\n/* Overwrite the saved value for register REG in frame UDATA with VAL.  */\n\nstatic inline void\nput_reg (unsigned reg, void *val, frame_state *udata)\n{\n  *get_reg_addr (reg, udata, NULL) = (word_type)(ptr_type) val;\n}\n\n/* Copy the saved value for register REG from frame UDATA to frame\n   TARGET_UDATA.  Unlike the previous two functions, this can handle\n   registers that are not one word large.  */\n\nstatic void\ncopy_reg (unsigned reg, frame_state *udata, frame_state *target_udata)\n{\n  word_type *preg = get_reg_addr (reg, udata, NULL);\n  word_type *ptreg = get_reg_addr (reg, target_udata, NULL);\n\n  memcpy (ptreg, preg, __builtin_dwarf_reg_size (reg));\n}\n\n/* Retrieve the return address for frame UDATA.  */\n\nstatic inline void *\nget_return_addr (frame_state *udata, frame_state *sub_udata)\n{\n  return __builtin_extract_return_addr\n    (get_reg (udata->retaddr_column, udata, sub_udata));\n}\n\n/* Overwrite the return address for frame UDATA with VAL.  */\n\nstatic inline void\nput_return_addr (void *val, frame_state *udata)\n{\n  val = __builtin_frob_return_addr (val);\n  put_reg (udata->retaddr_column, val, udata);\n}\n\n/* Given the current frame UDATA and its return address PC, return the\n   information about the calling frame in CALLER_UDATA.  */\n\nstatic void *\nnext_stack_level (void *pc, frame_state *udata, frame_state *caller_udata)\n{\n  caller_udata = __frame_state_for (pc, caller_udata);\n  if (! caller_udata)\n    return 0;\n\n  /* Now go back to our caller's stack frame.  If our caller's CFA register\n     was saved in our stack frame, restore it; otherwise, assume the CFA\n     register is SP and restore it to our CFA value.  */\n  if (udata->saved[caller_udata->cfa_reg])\n    caller_udata->cfa = get_reg (caller_udata->cfa_reg, udata, 0);\n  else\n    caller_udata->cfa = udata->cfa;\n  caller_udata->cfa += caller_udata->cfa_offset;\n\n  return caller_udata;\n}\n\n/* Hook to call before __terminate if only cleanup handlers remain. */\nvoid \n__unwinding_cleanup ()\n{\n}\n\n/* throw_helper performs some of the common grunt work for a throw. This\n   routine is called by throw and rethrows. This is pretty much split \n   out from the old __throw routine. An addition has been added which allows\n   for a dummy call to a routine __unwinding_cleanup() when there are nothing\n   but cleanups remaining. This allows a debugger to examine the state\n   at which the throw was executed, before any cleanups, rather than\n   at the terminate point after the stack has been unwound.\n\n   EH is the current eh_context structure.\n   PC is the address of the call to __throw.\n   MY_UDATA is the unwind information for __throw.\n   OFFSET_P is where we return the SP adjustment offset.  */\n\nstatic void *\nthrow_helper (eh, pc, my_udata, offset_p)\n     struct eh_context *eh;\n     void *pc;\n     frame_state *my_udata;\n     long *offset_p;\n{\n  frame_state ustruct2, *udata = &ustruct2;\n  frame_state ustruct;\n  frame_state *sub_udata = &ustruct;\n  void *saved_pc = pc;\n  void *handler;\n  void *handler_p;\n  void *pc_p;\n  frame_state saved_ustruct;\n  int new_eh_model;\n  int cleanup = 0;\n  int only_cleanup = 0;\n  int rethrow = 0;\n  int saved_state = 0;\n  long args_size;\n  __eh_info *eh_info = (__eh_info *)eh->info;\n\n  /* Do we find a handler based on a re-throw PC? */\n  if (eh->table_index != (void *) 0)\n    rethrow = 1;\n\n  memcpy (udata, my_udata, sizeof (*udata));\n\n  handler = (void *) 0;\n  for (;;)\n    { \n      frame_state *p = udata;\n      udata = next_stack_level (pc, udata, sub_udata);\n      sub_udata = p;\n\n      /* If we couldn't find the next frame, we lose.  */\n      if (! udata)\n\tbreak;\n\n      if (udata->eh_ptr == NULL)\n        new_eh_model = 0;\n      else\n        new_eh_model = (((exception_descriptor *)(udata->eh_ptr))->\n                                          runtime_id_field == NEW_EH_RUNTIME);\n\n      if (rethrow) \n        {\n          rethrow = 0;\n          handler = find_exception_handler (eh->table_index, udata->eh_ptr, \n                                          eh_info, 1, &cleanup);\n          eh->table_index = (void *)0;\n        }\n      else\n        if (new_eh_model)\n          handler = find_exception_handler (pc, udata->eh_ptr, eh_info, \n                                            0, &cleanup);\n        else\n          handler = old_find_exception_handler (pc, udata->eh_ptr);\n\n      /* If we found one, we can stop searching, if its not a cleanup. \n         for cleanups, we save the state, and keep looking. This allows\n         us to call a debug hook if there are nothing but cleanups left. */\n      if (handler)\n\t{\n\t  if (cleanup)\n\t    {\n\t      if (!saved_state)\n\t\t{\n\t\t  saved_ustruct = *udata;\n\t\t  handler_p = handler;\n\t\t  pc_p = pc;\n\t\t  saved_state = 1;\n\t\t  only_cleanup = 1;\n\t\t}\n\t    }\n\t  else\n\t    {\n\t      only_cleanup = 0;\n\t      break;\n\t    }\n\t}\n\n      /* Otherwise, we continue searching.  We subtract 1 from PC to avoid\n\t hitting the beginning of the next region.  */\n      pc = get_return_addr (udata, sub_udata) - 1;\n    }\n\n  if (saved_state) \n    {\n      udata = &saved_ustruct;\n      handler = handler_p;\n      pc = pc_p;\n      if (only_cleanup)\n        __unwinding_cleanup ();\n    }\n\n  /* If we haven't found a handler by now, this is an unhandled\n     exception.  */\n  if (! handler) \n    __terminate();\n\n  eh->handler_label = handler;\n\n  args_size = udata->args_size;\n\n  if (pc == saved_pc)\n    /* We found a handler in the throw context, no need to unwind.  */\n    udata = my_udata;\n  else\n    {\n      int i;\n\n      /* Unwind all the frames between this one and the handler by copying\n\t their saved register values into our register save slots.  */\n\n      /* Remember the PC where we found the handler.  */\n      void *handler_pc = pc;\n\n      /* Start from the throw context again.  */\n      pc = saved_pc;\n      memcpy (udata, my_udata, sizeof (*udata));\n\n      while (pc != handler_pc)\n\t{\n\t  frame_state *p = udata;\n\t  udata = next_stack_level (pc, udata, sub_udata);\n\t  sub_udata = p;\n\n\t  for (i = 0; i < FIRST_PSEUDO_REGISTER; ++i)\n\t    if (i != udata->retaddr_column && udata->saved[i])\n\t      {\n\t\t/* If you modify the saved value of the return address\n\t\t   register on the SPARC, you modify the return address for\n\t\t   your caller's frame.  Don't do that here, as it will\n\t\t   confuse get_return_addr.  */\n\t\tif (in_reg_window (i, udata)\n\t\t    && udata->saved[udata->retaddr_column] == REG_SAVED_REG\n\t\t    && udata->reg_or_offset[udata->retaddr_column] == i)\n\t\t  continue;\n\t\tcopy_reg (i, udata, my_udata);\n\t      }\n\n\t  pc = get_return_addr (udata, sub_udata) - 1;\n\t}\n\n      /* But we do need to update the saved return address register from\n\t the last frame we unwind, or the handler frame will have the wrong\n\t return address.  */\n      if (udata->saved[udata->retaddr_column] == REG_SAVED_REG)\n\t{\n\t  i = udata->reg_or_offset[udata->retaddr_column];\n\t  if (in_reg_window (i, udata))\n\t    copy_reg (i, udata, my_udata);\n\t}\n    }\n  /* udata now refers to the frame called by the handler frame.  */\n\n  /* We adjust SP by the difference between __throw's CFA and the CFA for\n     the frame called by the handler frame, because those CFAs correspond\n     to the SP values at the two call sites.  We need to further adjust by\n     the args_size of the handler frame itself to get the handler frame's\n     SP from before the args were pushed for that call.  */\n#ifdef STACK_GROWS_DOWNWARD\n  *offset_p = udata->cfa - my_udata->cfa + args_size;\n#else\n  *offset_p = my_udata->cfa - udata->cfa - args_size;\n#endif\n\t\t       \n  return handler;\n}\n\n\n/* We first search for an exception handler, and if we don't find\n   it, we call __terminate on the current stack frame so that we may\n   use the debugger to walk the stack and understand why no handler\n   was found.\n\n   If we find one, then we unwind the frames down to the one that\n   has the handler and transfer control into the handler.  */\n\n/*extern void __throw(void) __attribute__ ((__noreturn__));*/\n\nvoid\n__throw ()\n{\n  struct eh_context *eh = (*get_eh_context) ();\n  void *pc, *handler;\n  long offset;\n\n  /* XXX maybe make my_ustruct static so we don't have to look it up for\n     each throw.  */\n  frame_state my_ustruct, *my_udata = &my_ustruct;\n\n  /* This is required for C++ semantics.  We must call terminate if we\n     try and rethrow an exception, when there is no exception currently\n     active.  */\n  if (! eh->info)\n    __terminate ();\n    \n  /* Start at our stack frame.  */\nlabel:\n  my_udata = __frame_state_for (&&label, my_udata);\n  if (! my_udata)\n    __terminate ();\n\n  /* We need to get the value from the CFA register. */\n  my_udata->cfa = __builtin_dwarf_cfa ();\n\n  /* Do any necessary initialization to access arbitrary stack frames.\n     On the SPARC, this means flushing the register windows.  */\n  __builtin_unwind_init ();\n\n  /* Now reset pc to the right throw point.  */\n  pc = __builtin_extract_return_addr (__builtin_return_address (0)) - 1;\n\n  handler = throw_helper (eh, pc, my_udata, &offset);\n\n  /* Now go!  */\n\n  __builtin_eh_return ((void *)eh, offset, handler);\n\n  /* Epilogue:  restore the handler frame's register values and return\n     to the stub.  */\n}\n\n/*extern void __rethrow(void *) __attribute__ ((__noreturn__));*/\n\nvoid\n__rethrow (index)\n     void *index;\n{\n  struct eh_context *eh = (*get_eh_context) ();\n  void *pc, *handler;\n  long offset;\n\n  /* XXX maybe make my_ustruct static so we don't have to look it up for\n     each throw.  */\n  frame_state my_ustruct, *my_udata = &my_ustruct;\n\n  /* This is required for C++ semantics.  We must call terminate if we\n     try and rethrow an exception, when there is no exception currently\n     active.  */\n  if (! eh->info)\n    __terminate ();\n\n  /* This is the table index we want to rethrow from. The value of\n     the END_REGION label is used for the PC of the throw, and the\n     search begins with the next table entry. */\n  eh->table_index = index;\n    \n  /* Start at our stack frame.  */\nlabel:\n  my_udata = __frame_state_for (&&label, my_udata);\n  if (! my_udata)\n    __terminate ();\n\n  /* We need to get the value from the CFA register. */\n  my_udata->cfa = __builtin_dwarf_cfa ();\n\n  /* Do any necessary initialization to access arbitrary stack frames.\n     On the SPARC, this means flushing the register windows.  */\n  __builtin_unwind_init ();\n\n  /* Now reset pc to the right throw point.  */\n  pc = __builtin_extract_return_addr (__builtin_return_address (0)) - 1;\n\n  handler = throw_helper (eh, pc, my_udata, &offset);\n\n  /* Now go!  */\n\n  __builtin_eh_return ((void *)eh, offset, handler);\n\n  /* Epilogue:  restore the handler frame's register values and return\n     to the stub.  */\n}\n#endif /* DWARF2_UNWIND_INFO */\n\n#endif /* L_eh */\n\f\n#ifdef L_pure\n#ifndef inhibit_libc\n/* This gets us __GNU_LIBRARY__.  */\n#undef NULL /* Avoid errors if stdio.h and our stddef.h mismatch.  */\n#include <stdio.h>\n\n#ifdef __GNU_LIBRARY__\n  /* Avoid forcing the library's meaning of `write' on the user program\n     by using the \"internal\" name (for use within the library)  */\n#define write(fd, buf, n)\t__write((fd), (buf), (n))\n#endif\n#endif /* inhibit_libc */\n\n#define MESSAGE \"pure virtual method called\\n\"\n\nvoid\n__pure_virtual ()\n{\n#ifndef inhibit_libc\n  write (2, MESSAGE, sizeof (MESSAGE) - 1);\n#endif\n  __terminate ();\n}\n#endif\n"
  },
  {
    "path": "lib/src/libgcc/longlong.h",
    "content": "// This file is copied from gcc 2.95.2\n// Asm code except mips has been removed\n\n/* longlong.h -- definitions for mixed size 32/64 bit arithmetic.\n   Copyright (C) 1991, 92, 94, 95, 96, 1997, 1998 Free Software Foundation, Inc.\n\n   This definition file is free software; you can redistribute it\n   and/or modify it under the terms of the GNU General Public\n   License as published by the Free Software Foundation; either\n   version 2, or (at your option) any later version.\n\n   This definition file is distributed in the hope that it will be\n   useful, but WITHOUT ANY WARRANTY; without even the implied\n   warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n   See the GNU General Public License for more details.\n\n   You should have received a copy of the GNU General Public License\n   along with this program; if not, write to the Free Software\n   Foundation, Inc., 59 Temple Place - Suite 330,\n   Boston, MA 02111-1307, USA.  */\n\n#ifndef SI_TYPE_SIZE\n#define SI_TYPE_SIZE 32\n#endif\n\n#define __BITS4 (SI_TYPE_SIZE / 4)\n#define __ll_B (1L << (SI_TYPE_SIZE / 2))\n#define __ll_lowpart(t) ((USItype) (t) % __ll_B)\n#define __ll_highpart(t) ((USItype) (t) / __ll_B)\n\n/* Define auxiliary asm macros.\n\n   1) umul_ppmm(high_prod, low_prod, multipler, multiplicand)\n   multiplies two USItype integers MULTIPLER and MULTIPLICAND,\n   and generates a two-part USItype product in HIGH_PROD and\n   LOW_PROD.\n\n   2) __umulsidi3(a,b) multiplies two USItype integers A and B,\n   and returns a UDItype product.  This is just a variant of umul_ppmm.\n\n   3) udiv_qrnnd(quotient, remainder, high_numerator, low_numerator,\n   denominator) divides a two-word unsigned integer, composed by the\n   integers HIGH_NUMERATOR and LOW_NUMERATOR, by DENOMINATOR and\n   places the quotient in QUOTIENT and the remainder in REMAINDER.\n   HIGH_NUMERATOR must be less than DENOMINATOR for correct operation.\n   If, in addition, the most significant bit of DENOMINATOR must be 1,\n   then the pre-processor symbol UDIV_NEEDS_NORMALIZATION is defined to 1.\n\n   4) sdiv_qrnnd(quotient, remainder, high_numerator, low_numerator,\n   denominator).  Like udiv_qrnnd but the numbers are signed.  The\n   quotient is rounded towards 0.\n\n   5) count_leading_zeros(count, x) counts the number of zero-bits from\n   the msb to the first non-zero bit.  This is the number of steps X\n   needs to be shifted left to set the msb.  Undefined for X == 0.\n\n   6) add_ssaaaa(high_sum, low_sum, high_addend_1, low_addend_1,\n   high_addend_2, low_addend_2) adds two two-word unsigned integers,\n   composed by HIGH_ADDEND_1 and LOW_ADDEND_1, and HIGH_ADDEND_2 and\n   LOW_ADDEND_2 respectively.  The result is placed in HIGH_SUM and\n   LOW_SUM.  Overflow (i.e. carry out) is not stored anywhere, and is\n   lost.\n\n   7) sub_ddmmss(high_difference, low_difference, high_minuend,\n   low_minuend, high_subtrahend, low_subtrahend) subtracts two\n   two-word unsigned integers, composed by HIGH_MINUEND_1 and\n   LOW_MINUEND_1, and HIGH_SUBTRAHEND_2 and LOW_SUBTRAHEND_2\n   respectively.  The result is placed in HIGH_DIFFERENCE and\n   LOW_DIFFERENCE.  Overflow (i.e. carry out) is not stored anywhere,\n   and is lost.\n\n   If any of these macros are left undefined for a particular CPU,\n   C macros are used.  */\n\n/* The CPUs come in alphabetical order below.\n\n   Please add support for more CPUs here, or improve the current support\n   for the CPUs below!\n   (E.g. WE32100, IBM360.)  */\n\n#if defined (__GNUC__) && !defined (NO_ASM)\n\n/* We sometimes need to clobber \"cc\" with gcc2, but that would not be\n   understood by gcc1.  Use cpp to avoid major code duplication.  */\n#if __GNUC__ < 2\n#define __CLOBBER_CC\n#define __AND_CLOBBER_CC\n#else /* __GNUC__ >= 2 */\n#define __CLOBBER_CC : \"cc\"\n#define __AND_CLOBBER_CC , \"cc\"\n#endif /* __GNUC__ < 2 */\n\n#if defined (__mips__)\n#define umul_ppmm(w1, w0, u, v) \\\n  __asm__ (\"multu %2,%3\"\t\t\t\t\t\t\\\n\t   : \"=l\" ((USItype) (w0)),\t\t\t\t\t\\\n\t     \"=h\" ((USItype) (w1))\t\t\t\t\t\\\n\t   : \"d\" ((USItype) (u)),\t\t\t\t\t\\\n\t     \"d\" ((USItype) (v)))\n#define UMUL_TIME 10\n#define UDIV_TIME 100\n#endif /* __mips__ */\n\n#endif /* __GNUC__ */\n\n/* If this machine has no inline assembler, use C macros.  */\n\n#if !defined (add_ssaaaa)\n#define add_ssaaaa(sh, sl, ah, al, bh, bl) \\\n  do {\t\t\t\t\t\t\t\t\t\\\n    USItype __x;\t\t\t\t\t\t\t\\\n    __x = (al) + (bl);\t\t\t\t\t\t\t\\\n    (sh) = (ah) + (bh) + (__x < (al));\t\t\t\t\t\\\n    (sl) = __x;\t\t\t\t\t\t\t\t\\\n  } while (0)\n#endif\n\n#if !defined (sub_ddmmss)\n#define sub_ddmmss(sh, sl, ah, al, bh, bl) \\\n  do {\t\t\t\t\t\t\t\t\t\\\n    USItype __x;\t\t\t\t\t\t\t\\\n    __x = (al) - (bl);\t\t\t\t\t\t\t\\\n    (sh) = (ah) - (bh) - (__x > (al));\t\t\t\t\t\\\n    (sl) = __x;\t\t\t\t\t\t\t\t\\\n  } while (0)\n#endif\n\n#if !defined (umul_ppmm)\n#define umul_ppmm(w1, w0, u, v)\t\t\t\t\t\t\\\n  do {\t\t\t\t\t\t\t\t\t\\\n    USItype __x0, __x1, __x2, __x3;\t\t\t\t\t\\\n    USItype __ul, __vl, __uh, __vh;\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n    __ul = __ll_lowpart (u);\t\t\t\t\t\t\\\n    __uh = __ll_highpart (u);\t\t\t\t\t\t\\\n    __vl = __ll_lowpart (v);\t\t\t\t\t\t\\\n    __vh = __ll_highpart (v);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n    __x0 = (USItype) __ul * __vl;\t\t\t\t\t\\\n    __x1 = (USItype) __ul * __vh;\t\t\t\t\t\\\n    __x2 = (USItype) __uh * __vl;\t\t\t\t\t\\\n    __x3 = (USItype) __uh * __vh;\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n    __x1 += __ll_highpart (__x0);/* this can't give carry */\t\t\\\n    __x1 += __x2;\t\t/* but this indeed can */\t\t\\\n    if (__x1 < __x2)\t\t/* did we get it? */\t\t\t\\\n      __x3 += __ll_B;\t\t/* yes, add it in the proper pos. */\t\\\n\t\t\t\t\t\t\t\t\t\\\n    (w1) = __x3 + __ll_highpart (__x1);\t\t\t\t\t\\\n    (w0) = __ll_lowpart (__x1) * __ll_B + __ll_lowpart (__x0);\t\t\\\n  } while (0)\n#endif\n\n#if !defined (__umulsidi3)\n#define __umulsidi3(u, v) \\\n  ({DIunion __w;\t\t\t\t\t\t\t\\\n    umul_ppmm (__w.s.high, __w.s.low, u, v);\t\t\t\t\\\n    __w.ll; })\n#endif\n\n/* Define this unconditionally, so it can be used for debugging.  */\n#define __udiv_qrnnd_c(q, r, n1, n0, d) \\\n  do {\t\t\t\t\t\t\t\t\t\\\n    USItype __d1, __d0, __q1, __q0;\t\t\t\t\t\\\n    USItype __r1, __r0, __m;\t\t\t\t\t\t\\\n    __d1 = __ll_highpart (d);\t\t\t\t\t\t\\\n    __d0 = __ll_lowpart (d);\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n    __r1 = (n1) % __d1;\t\t\t\t\t\t\t\\\n    __q1 = (n1) / __d1;\t\t\t\t\t\t\t\\\n    __m = (USItype) __q1 * __d0;\t\t\t\t\t\\\n    __r1 = __r1 * __ll_B | __ll_highpart (n0);\t\t\t\t\\\n    if (__r1 < __m)\t\t\t\t\t\t\t\\\n      {\t\t\t\t\t\t\t\t\t\\\n\t__q1--, __r1 += (d);\t\t\t\t\t\t\\\n\tif (__r1 >= (d)) /* i.e. we didn't get carry when adding to __r1 */\\\n\t  if (__r1 < __m)\t\t\t\t\t\t\\\n\t    __q1--, __r1 += (d);\t\t\t\t\t\\\n      }\t\t\t\t\t\t\t\t\t\\\n    __r1 -= __m;\t\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n    __r0 = __r1 % __d1;\t\t\t\t\t\t\t\\\n    __q0 = __r1 / __d1;\t\t\t\t\t\t\t\\\n    __m = (USItype) __q0 * __d0;\t\t\t\t\t\\\n    __r0 = __r0 * __ll_B | __ll_lowpart (n0);\t\t\t\t\\\n    if (__r0 < __m)\t\t\t\t\t\t\t\\\n      {\t\t\t\t\t\t\t\t\t\\\n\t__q0--, __r0 += (d);\t\t\t\t\t\t\\\n\tif (__r0 >= (d))\t\t\t\t\t\t\\\n\t  if (__r0 < __m)\t\t\t\t\t\t\\\n\t    __q0--, __r0 += (d);\t\t\t\t\t\\\n      }\t\t\t\t\t\t\t\t\t\\\n    __r0 -= __m;\t\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n    (q) = (USItype) __q1 * __ll_B | __q0;\t\t\t\t\\\n    (r) = __r0;\t\t\t\t\t\t\t\t\\\n  } while (0)\n\n/* If the processor has no udiv_qrnnd but sdiv_qrnnd, go through\n   __udiv_w_sdiv (defined in libgcc or elsewhere).  */\n#if !defined (udiv_qrnnd) && defined (sdiv_qrnnd)\n#define udiv_qrnnd(q, r, nh, nl, d) \\\n  do {\t\t\t\t\t\t\t\t\t\\\n    USItype __r;\t\t\t\t\t\t\t\\\n    (q) = __udiv_w_sdiv (&__r, nh, nl, d);\t\t\t\t\\\n    (r) = __r;\t\t\t\t\t\t\t\t\\\n  } while (0)\n#endif\n\n/* If udiv_qrnnd was not defined for this processor, use __udiv_qrnnd_c.  */\n#if !defined (udiv_qrnnd)\n#define UDIV_NEEDS_NORMALIZATION 1\n#define udiv_qrnnd __udiv_qrnnd_c\n#endif\n\n#if !defined (count_leading_zeros)\n//extern const UQItype __clz_tab[];\n#define count_leading_zeros(count, x) \\\n  do {\t\t\t\t\t\t\t\t\t\\\n    USItype __xr = (x);\t\t\t\t\t\t\t\\\n    USItype __a;\t\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n    if (SI_TYPE_SIZE <= 32)\t\t\t\t\t\t\\\n      {\t\t\t\t\t\t\t\t\t\\\n\t__a = __xr < ((USItype)1<<2*__BITS4)\t\t\t\t\\\n\t  ? (__xr < ((USItype)1<<__BITS4) ? 0 : __BITS4)\t\t\\\n\t  : (__xr < ((USItype)1<<3*__BITS4) ?  2*__BITS4 : 3*__BITS4);\t\\\n      }\t\t\t\t\t\t\t\t\t\\\n    else\t\t\t\t\t\t\t\t\\\n      {\t\t\t\t\t\t\t\t\t\\\n\tfor (__a = SI_TYPE_SIZE - 8; __a > 0; __a -= 8)\t\t\t\\\n\t  if (((__xr >> __a) & 0xff) != 0)\t\t\t\t\\\n\t    break;\t\t\t\t\t\t\t\\\n      }\t\t\t\t\t\t\t\t\t\\\n\t\t\t\t\t\t\t\t\t\\\n    (count) = SI_TYPE_SIZE - (__clz_tab[__xr >> __a] + __a);\t\t\\\n  } while (0)\n#endif\n\n#ifndef UDIV_NEEDS_NORMALIZATION\n#define UDIV_NEEDS_NORMALIZATION 0\n#endif\n"
  },
  {
    "path": "lib/src/libultra_internal.h",
    "content": "#ifndef _LIBULTRA_INTERNAL_H_\n#define _LIBULTRA_INTERNAL_H_\n#include <ultra64.h>\n\n/*\n * This define is needed because the original definitions in __osDequeueThread.c are declared\n * seperately instead of part of a single struct, however some code alises over this memory\n * assuming a unified structure. To fix this, we declare the full type here and then alias the\n * symbol names to the correct members in AVOID_UB.\n */\n#ifdef AVOID_UB\ntypedef struct OSThread_ListHead_s\n{\n    /*0x00*/ struct OSThread_s *next;\n    /*0x04*/ OSPri priority;\n    /*0x08*/ struct OSThread_s *queue;\n    /*0x0C*/ struct OSThread_s *tlnext;\n    /*0x10*/ struct OSThread_s *unk10;\n    /*0x14*/ u32 unk14;\n} OSThread_ListHead;\n\n// Now fix the symbols to the new one.\nextern OSThread_ListHead __osThreadTail_fix;\n\n#define __osThreadTail __osThreadTail_fix.next\n#define D_80334894 __osThreadTail_fix.priority\n#define __osRunQueue __osThreadTail_fix.queue\n#define __osActiveQueue __osThreadTail_fix.tlnext\n#define __osRunningThread __osThreadTail_fix.unk10\n#else\n// Original OSThread_ListHead definitions\nextern OSThread *__osThreadTail;\nextern u32 D_80334894;\nextern OSThread *__osRunQueue;\nextern OSThread *__osActiveQueue;\nextern OSThread *__osRunningThread;\n#endif\n\ntypedef struct {\n    u32 initialized; // probably something like initialized?\n    OSThread *mgrThread;\n    OSMesgQueue *cmdQueue;\n    OSMesgQueue *eventQueue;\n    OSMesgQueue *accessQueue;\n    s32 (*dma_func)(s32, u32, void *, size_t);\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    s32 (*edma_func)(OSPiHandle*, s32, u32, void *, size_t);\n#else\n    u64 force_align;\n#endif\n} OSMgrArgs;\n\ns32 __osDisableInt(void);\nvoid __osRestoreInt(s32);\nvoid __osEnqueueAndYield(OSThread **);\nvoid __osDequeueThread(OSThread **, OSThread *);\nvoid __osEnqueueThread(OSThread **, OSThread *);\nOSThread *__osPopThread(OSThread **);\ns32 __osSiRawStartDma(s32, void *);\nvoid __osSiCreateAccessQueue(void);\nvoid __osSiGetAccess(void);\nvoid __osSiRelAccess(void);\nu32 __osProbeTLB(void *);\nvoid __osPiCreateAccessQueue(void);\nvoid __osPiGetAccess(void);\nvoid __osSetSR(u32);\nu32 __osGetSR(void);\nvoid __osSetFpcCsr(u32);\ns32 __osSiRawReadIo(u32, u32 *);\ns32 __osSiRawWriteIo(u32, u32);\ns32 osPiRawReadIo(u32, u32 *);\nvoid __osSpSetStatus(u32);\nu32 __osSpGetStatus(void);\ns32 __osSpSetPc(void *);\ns32 __osSpDeviceBusy(void);\ns32 __osSiDeviceBusy(void);\ns32 __osSpRawStartDma(u32 dir, void *sp_ptr, void *dram_ptr, size_t size);\nvoid __osViInit(void);\nOSViContext *__osViGetCurrentContext(void);\nOSViContext *__osViGetCurrentContext2(void);\nvoid __osViSwapContext(void);\nvoid __osSetTimerIntr(u64);\nu64 __osInsertTimer(OSTimer *);\nvoid __osSetCompare(u32);\ns32 __osAiDeviceBusy(void);\nvoid __osDispatchThread(void);\nu32 __osGetCause(void);\ns32 __osAtomicDec(u32 *);\nvoid __osSetHWIntrRoutine(OSHWIntr interrupt, s32 (*handler)(void));\n#endif\n"
  },
  {
    "path": "lib/src/math/cosf.c",
    "content": "\n// These unions are necessary to put the constants in .rodata rather than .data.\n// TODO: is it possible to remove them somehow?\n\ntypedef union {\n\t/* 0x0 */ double d;\n\t/* 0x0 */ struct\n\t{\n\t\t/* 0x0 */ unsigned int hi;\n\t\t/* 0x4 */ unsigned int lo;\n\t} word;\n} du;\n\ntypedef union {\n\t/* 0x0 */ float f;\n\t/* 0x0 */ unsigned int i;\n} fu;\n\nstatic const du P[5] = {{1.0},\n\t\t\t\t\t\t{-0.16666659550427756},\n\t\t\t\t\t\t{0.008333066246082155},\n\t\t\t\t\t\t{-1.980960290193795E-4},\n\t\t\t\t\t\t{2.605780637968037E-6}};\n\nstatic const du rpi = {0.3183098861837907};\n\nstatic const du pihi = {\n\t3.1415926218032837};\n\nstatic const du pilo = {\n\t3.178650954705639E-8};\n\nstatic const fu zero = {0.0};\nextern const fu NAN;\n\nfloat cosf(float x)\n{\n\tdouble dx;  // double x\n\tdouble xsq; // x squared\n\tdouble poly;\n\tdouble dn;\n\tfloat xabs;\n\tint n;\n\tdouble result;\n\tint ix; // int x\n\tint xpt;\n\tix = *(int *)&x;\n\txpt = (ix >> 22) & 0x1FF;\n\n\tif (xpt < 310)\n\t{\n\t\tif (0 < x)\n\t\t\txabs = x;\n\t\telse\n\t\t\txabs = -x;\n\t\tdx = xabs;\n\n\t\tdn = dx * rpi.d + .5;\n\t\tif (0 <= dn)\n\t\t{\n\t\t\tn = dn + .5;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tn = dn - .5;\n\t\t}\n\t\tdn = n;\n\n\t\tdn -= .5;\n\t\tdx -= dn * pihi.d;\n\t\tdx -= dn * pilo.d;\n\n\t\txsq = dx * dx;\n\n\t\tpoly = (((((P[4].d * xsq) + P[3].d) * xsq) + P[2].d) * xsq) + P[1].d;\n\n\t\tresult = dx + ((dx * xsq) * poly);\n\n\t\tif ((n & 0x1) == 0)\n\t\t{\n\t\t\treturn result;\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn -(float)result;\n\t\t}\n\t}\n\n\tif (x != x)\n\t{\n\t\treturn NAN.f;\n\t}\n\n\treturn zero.f;\n}\n"
  },
  {
    "path": "lib/src/math/llconv.c",
    "content": "typedef signed long long int s64;\ntypedef unsigned long long int u64;\ns64 __d_to_ll(double d)\n{\n    return d;\n}\ns64 __f_to_ll(float f)\n{\n    return f;\n}\nu64 __d_to_ull(double d)\n{\n    return d;\n}\nu64 __f_to_ull(float f)\n{\n    return f;\n}\ndouble __ll_to_d(s64 s)\n{\n    return s;\n}\nfloat __ll_to_f(s64 s)\n{\n    return s;\n}\ndouble __ull_to_d(u64 u)\n{\n    return u;\n}\nfloat __ull_to_f(u64 u)\n{\n    return u;\n}\n"
  },
  {
    "path": "lib/src/math/llmuldiv.c",
    "content": "unsigned long long __ull_rshift(unsigned long long a0, unsigned long long a1)\n{\n    return a0 >> a1;\n}\nunsigned long long __ull_rem(unsigned long long a0, unsigned long long a1)\n{\n    return a0 % a1;\n}\nunsigned long long __ull_div(unsigned long long a0, unsigned long long a1)\n{\n    return a0 / a1;\n}\n\nunsigned long long __ll_lshift(unsigned long long a0, unsigned long long a1)\n{\n    return a0 << a1;\n}\n\nlong long __ll_rem(unsigned long long a0, long long a1)\n{\n    return a0 % a1;\n}\n\nlong long __ll_div(long long a0, long long a1)\n{\n    return a0 / a1;\n}\n\nunsigned long long __ll_mul(unsigned long long a0, unsigned long long a1)\n{\n    return a0 * a1;\n}\n\nvoid __ull_divremi(unsigned long long *div, unsigned long long *rem, unsigned long long a2, unsigned short a3)\n{\n    *div = a2 / a3;\n    *rem = a2 % a3;\n}\nlong long __ll_mod(long long a0, long long a1)\n{\n    long long tmp = a0 % a1;\n    if ((tmp < 0 && a1 > 0) || (tmp > 0 && a1 < 0))\n    {\n\n        tmp += a1;\n    }\n    return tmp;\n}\n\nlong long __ll_rshift(long long a0, long long a1)\n{\n    return a0 >> a1;\n}\n"
  },
  {
    "path": "lib/src/math/sinf.c",
    "content": "\n// These unions are necessary to put the constants in .rodata rather than .data.\n// TODO: is it possible to remove them somehow?\n\ntypedef union {\n\t/* 0x0 */ double d;\n\t/* 0x0 */ struct\n\t{\n\t\t/* 0x0 */ unsigned int hi;\n\t\t/* 0x4 */ unsigned int lo;\n\t} word;\n} du;\n\ntypedef union {\n\t/* 0x0 */ float f;\n\t/* 0x0 */ unsigned int i;\n} fu;\n\nstatic const du P[5] = {{1.0},\n\t\t\t\t\t\t{-0.16666659550427756},\n\t\t\t\t\t\t{0.008333066246082155},\n\t\t\t\t\t\t{-1.980960290193795E-4},\n\t\t\t\t\t\t{2.605780637968037E-6}};\n\nstatic const du rpi = {0.3183098861837907};\n\nstatic const du pihi = {\n\t3.1415926218032837};\n\nstatic const du pilo = {\n\t3.178650954705639E-8};\n\nstatic const fu zero = {0.0};\nextern const fu NAN;\n\nfloat sinf(float x)\n{\n\tdouble dx;  // double x\n\tdouble xsq; // x squared\n\tdouble poly;\n\tdouble dn;\n\tint n;\n\tdouble result;\n\tint ix; // int x\n\tint xpt;\n\n\tix = *(int *)&x;\n\txpt = (ix >> 22) & 0x1FF;\n\n\tif (xpt < 255)\n\t{\n\t\tdx = x;\n\t\tif (xpt >= 230)\n\t\t{\n\t\t\txsq = dx * dx;\n\n\t\t\tpoly = (((((P[4].d * xsq) + P[3].d) * xsq) + P[2].d) * xsq) + P[1].d;\n\n\t\t\tresult = dx + ((dx * xsq) * poly);\n\n\t\t\treturn result;\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn x;\n\t\t}\n\t}\n\n\tif (xpt < 310)\n\t{\n\t\tdx = x;\n\n\t\tdn = dx * rpi.d;\n\n\t\tif (dn >= 0)\n\t\t{\n\t\t\tn = dn + 0.5;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tn = dn - 0.5;\n\t\t}\n\n\t\tdn = n;\n\n\t\tdx -= dn * pihi.d;\n\t\tdx -= dn * pilo.d;\n\n\t\txsq = dx * dx;\n\n\t\tpoly = (((((P[4].d * xsq) + P[3].d) * xsq) + P[2].d) * xsq) + P[1].d;\n\n\t\tresult = dx + ((dx * xsq) * poly);\n\n\t\tif ((n & 0x1) == 0)\n\t\t{\n\t\t\treturn result;\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn -(float)result;\n\t\t}\n\t}\n\n\tif (x != x)\n\t{\n\t\treturn NAN.f;\n\t}\n\n\treturn zero.f;\n}\n"
  },
  {
    "path": "lib/src/motor.c",
    "content": "#include \"PR/os_message.h\"\n#include \"PR/os_pi.h\"\n#include \"libultra_internal.h\"\n#include \"controller.h\"\n#include \"macros.h\"\n\n#ifdef VERSION_CN\n\ns32 __osMotorAccess(UNUSED OSPfs *pfs, UNUSED s32 action) {\n    return PFS_ERR_INVALID;\n}\n\ns32 osMotorInit(UNUSED OSMesgQueue *mq, UNUSED OSPfs *pfs, UNUSED int channel) {\n    return PFS_ERR_DEVICE;\n}\n\n#else\n\nvoid _MakeMotorData(int channel, u16 address, u8 *buffer, OSPifRam *mdata);\nu32 __osMotorinitialized[MAXCONTROLLERS] = { 0, 0, 0, 0 };\nOSPifRam _MotorStopData[MAXCONTROLLERS];\nOSPifRam _MotorStartData[MAXCONTROLLERS];\nu8 _motorstopbuf[32];\nu8 _motorstartbuf[32];\n\ns32 osMotorStop(OSPfs *pfs) {\n    int i;\n    s32 ret;\n    u8 *ptr;\n    __OSContRamReadFormat ramreadformat;\n    ptr = (u8 *) &__osPfsPifRam;\n\n    if (!__osMotorinitialized[pfs->channel]) {\n        return PFS_ERR_INVALID;\n    }\n    __osSiGetAccess();\n\n    __osContLastCmd = CONT_CMD_WRITE_MEMPACK;\n    __osSiRawStartDma(OS_WRITE, &_MotorStopData[pfs->channel]);\n    osRecvMesg(pfs->queue, NULL, OS_MESG_BLOCK);\n    ret = __osSiRawStartDma(OS_READ, &__osPfsPifRam);\n    osRecvMesg(pfs->queue, NULL, OS_MESG_BLOCK);\n    ptr = (u8 *) &__osPfsPifRam;\n\n    if (pfs->channel != 0) {\n        for (i = 0; i < pfs->channel; i++) {\n            ptr++;\n        }\n    }\n\n    ramreadformat = *(__OSContRamReadFormat *) ptr;\n    ret = CHNL_ERR(ramreadformat);\n    if (ret == 0 && ramreadformat.datacrc != __osContDataCrc((u8 *) &_motorstopbuf)) {\n        ret = PFS_ERR_CONTRFAIL;\n    }\n    __osSiRelAccess();\n    return ret;\n}\n\ns32 osMotorStart(OSPfs *pfs) {\n    int i;\n    s32 ret;\n    u8 *ptr;\n    __OSContRamReadFormat ramreadformat;\n\n    ptr = (u8 *) &__osPfsPifRam;\n\n    if (!__osMotorinitialized[pfs->channel]) {\n        return PFS_ERR_INVALID;\n    }\n\n    __osSiGetAccess();\n\n    __osContLastCmd = CONT_CMD_WRITE_MEMPACK;\n    __osSiRawStartDma(OS_WRITE, &_MotorStartData[pfs->channel]);\n    osRecvMesg(pfs->queue, NULL, OS_MESG_BLOCK);\n    ret = __osSiRawStartDma(OS_READ, &__osPfsPifRam);\n    osRecvMesg(pfs->queue, NULL, OS_MESG_BLOCK);\n    ptr = (u8 *) &__osPfsPifRam;\n\n    if (pfs->channel != 0) {\n        for (i = 0; i < pfs->channel; i++) {\n            ptr++;\n        }\n    }\n\n    ramreadformat = *(__OSContRamReadFormat *) ptr;\n    ret = CHNL_ERR(ramreadformat);\n    if (ret == 0 && ramreadformat.datacrc != __osContDataCrc((u8 *) &_motorstartbuf)) {\n        ret = PFS_ERR_CONTRFAIL;\n    }\n    __osSiRelAccess();\n    return ret;\n}\n\nvoid _MakeMotorData(int channel, u16 address, u8 *buffer, OSPifRam *mdata) {\n    u8 *ptr;\n    __OSContRamReadFormat ramreadformat;\n    int i;\n\n    ptr = (u8 *) mdata->ramarray;\n    for (i = 0; i < ARRAY_COUNT(mdata->ramarray); i++) {\n        mdata->ramarray[i] = 0;\n    }\n    mdata->pifstatus = CONT_CMD_EXE;\n    ramreadformat.dummy = CONT_CMD_NOP;\n    ramreadformat.txsize = CONT_CMD_WRITE_MEMPACK_TX;\n    ramreadformat.rxsize = CONT_CMD_WRITE_MEMPACK_RX;\n    ramreadformat.cmd = CONT_CMD_WRITE_MEMPACK;\n\n    ramreadformat.address = (address << 0x5) | __osContAddressCrc(address);\n    ramreadformat.datacrc = CONT_CMD_NOP;\n    for (i = 0; i < ARRAY_COUNT(ramreadformat.data); i++) {\n        ramreadformat.data[i] = *buffer++;\n    }\n    if (channel != 0) {\n        for (i = 0; i < channel; i++) {\n            *ptr++ = 0;\n        }\n    }\n    *(__OSContRamReadFormat *) ptr = ramreadformat;\n    ptr += sizeof(__OSContRamReadFormat);\n    ptr[0] = CONT_CMD_END;\n}\n\ns32 osMotorInit(OSMesgQueue *mq, OSPfs *pfs, int channel) {\n    int i;\n    s32 ret;\n    u8 temp[32];\n    pfs->queue = mq;\n    pfs->channel = channel;\n    pfs->status = 0;\n    pfs->activebank = 128;\n\n    for (i = 0; i < ARRAY_COUNT(temp); i++) {\n        temp[i] = 254;\n    }\n\n    ret = __osContRamWrite(mq, channel, 1024, temp, FALSE);\n    if (ret == 2) { // TODO: remove magic constant\n        ret = __osContRamWrite(mq, channel, 1024, temp, FALSE);\n    }\n    if (ret != 0) {\n        return ret;\n    }\n\n    ret = __osContRamRead(mq, channel, 1024, temp);\n    if (ret == 2) {\n        ret = PFS_ERR_CONTRFAIL; // is this right?\n    }\n    if (ret != 0) {\n        return ret;\n    }\n    if (temp[31] == 254) {\n        return PFS_ERR_DEVICE;\n    }\n\n    for (i = 0; i < ARRAY_COUNT(temp); i++) {\n        temp[i] = 128;\n    }\n\n    ret = __osContRamWrite(mq, channel, 1024, temp, FALSE);\n    if (ret == 2) {\n        ret = __osContRamWrite(mq, channel, 1024, temp, FALSE);\n    }\n    if (ret != 0) {\n        return ret;\n    }\n\n    ret = __osContRamRead(mq, channel, 1024, temp);\n    if (ret == 2) {\n        ret = PFS_ERR_CONTRFAIL;\n    }\n    if (ret != 0) {\n        return ret;\n    }\n    if (temp[31] != 128) {\n        return PFS_ERR_DEVICE;\n    }\n\n    if (!__osMotorinitialized[channel]) {\n        for (i = 0; i < ARRAY_COUNT(_motorstartbuf); i++) {\n            _motorstartbuf[i] = 1;\n            _motorstopbuf[i] = 0;\n        }\n        _MakeMotorData(channel, 1536, _motorstartbuf, &_MotorStartData[channel]);\n        _MakeMotorData(channel, 1536, _motorstopbuf, &_MotorStopData[channel]);\n        __osMotorinitialized[channel] = 1;\n    }\n    return 0;\n}\n\n#endif\n"
  },
  {
    "path": "lib/src/new_func.h",
    "content": "#ifndef NEW_FUNC_H\n#define NEW_FUNC_H\n\n#include \"libultra_internal.h\"\n\nextern u32 osDDActive;\n\nvoid __osResetGlobalIntMask(u32 mask);\nvoid osYieldThread(void);\n#if defined(VERSION_SH) || defined(VERSION_CN)\nvoid __osSetGlobalIntMask(s32 arg0);\n#endif\n\n#endif\n"
  },
  {
    "path": "lib/src/osAi.h",
    "content": "#ifndef _OSAI_H_\n#define _OSAI_H_\n\ns32 osAiSetFrequency(u32);\ns32 osAiSetNextBuffer(void *, u32);\nu32 osAiGetLength(void);\n#endif\n"
  },
  {
    "path": "lib/src/osAiGetLength.c",
    "content": "#include \"libultra_internal.h\"\n#include \"PR/rcp.h\"\n\nu32 osAiGetLength() {\n    return IO_READ(AI_LEN_REG);\n}\n"
  },
  {
    "path": "lib/src/osAiSetFrequency.c",
    "content": "#include \"libultra_internal.h\"\n#include \"PR/rcp.h\"\n#include \"osint.h\"\n#include \"macros.h\"\n\ns32 osAiSetFrequency(u32 freq) {\n    register u32 dacRate;\n#ifdef VERSION_CN\n    register u32 bitRate;\n#else\n    register s32 bitRate;\n#endif\n    register float ftmp;\n    ftmp = osViClock / (float) freq + .5f;\n\n    dacRate = ftmp;\n\n    if (dacRate < AI_MIN_DAC_RATE) {\n        return -1;\n    }\n\n    bitRate = (dacRate / 66) & 0xff;\n    if (bitRate > AI_MAX_BIT_RATE) {\n        bitRate = AI_MAX_BIT_RATE;\n    }\n\n    IO_WRITE(AI_DACRATE_REG, dacRate - 1);\n    IO_WRITE(AI_BITRATE_REG, bitRate - 1);\n#ifndef VERSION_CN\n    IO_WRITE(AI_CONTROL_REG, AI_CONTROL_DMA_ON);\n#endif\n    return osViClock / (s32) dacRate;\n}\n\n#if !defined(VERSION_SH) && !defined(VERSION_CN)\n// put some extra jr $ra's down there please\nUNUSED static void filler1(void) {\n}\n\nUNUSED static void filler2(void) {\n}\n#endif\n"
  },
  {
    "path": "lib/src/osAiSetNextBuffer.c",
    "content": "#include \"libultra_internal.h\"\n#include \"PR/rcp.h\"\n\n/**\n * It is worth noting that a previous hardware bug has been fixed by a software\n * patch in osAiSetNextBuffer. This bug occurred when the address of the end of the\n * buffer specified by osAiSetNextBuffer was at a specific value. This value\n * occurred when the following was true:\n *\n *     (vaddr + nbytes) & 0x00003FFF == 0x00002000\n *\n * (when the buffer ends with address of lower 14 bits 0x2000) In this case, the\n * DMA transfer does not complete successfully. This can cause clicks and pops in\n * the audio output. This bug no longer requires special handling by the application\n * because it is now patched by osAiSetNextBuffer.\n */\n\ns32 osAiSetNextBuffer(void *buff, u32 len) {\n    static u8 hdwrBugFlag = 0;\n    char *bptr;\n\n#ifdef VERSION_CN\n    if (__osAiDeviceBusy()) {\n        return -1;\n    }\n#endif\n\n    bptr = buff;\n\n    if (hdwrBugFlag != 0) {\n        bptr -= 0x2000;\n    }\n\n#ifdef VERSION_CN\n    if ((((uintptr_t) buff + len) & 0x1fff) == 0) {\n#else\n    if ((((uintptr_t) buff + len) & 0x3fff) == 0x2000) {\n#endif\n        hdwrBugFlag = 1;\n    } else {\n        hdwrBugFlag = 0;\n    }\n\n#ifndef VERSION_CN\n    if (__osAiDeviceBusy()) {\n        return -1;\n    }\n#endif\n\n    IO_WRITE(AI_DRAM_ADDR_REG, osVirtualToPhysical(bptr));\n    IO_WRITE(AI_LEN_REG, len);\n    return 0;\n}\n"
  },
  {
    "path": "lib/src/osCartRomInit.c",
    "content": "#include \"PR/os_internal.h\"\n#include \"PR/R4300.h\"\n#include \"PR/rcp.h\"\n#include \"PR/os_pi.h\"\n#include \"PR/os.h\"\n#include \"libultra_internal.h\"\n#include \"piint.h\"\n\nOSPiHandle __Dom1SpeedParam;\n\n#ifdef VERSION_CN\n\nOSPiHandle __CartRomHandle;\n\nOSPiHandle* osCartRomInit(void) {\n    register u32 a;\n    register s32 status;\n    register u32 prevInt;\n    register u32 lastLatency;\n    register u32 lastPageSize;\n    register u32 lastRelDuration;\n    register u32 lastPulse;\n\n    static u32 notInitialized = 1;\n\n    __osPiGetAccess();\n\n    if (!notInitialized) {\n        __osPiRelAccess();\n        return &__CartRomHandle;\n    }\n\n    notInitialized = 0;\n    __CartRomHandle.type = DEVICE_TYPE_CART;\n    __CartRomHandle.baseAddress = PHYS_TO_K1(PI_DOM1_ADDR2);\n    __CartRomHandle.domain = 0;\n    __CartRomHandle.speed = 0;\n    bzero(&__CartRomHandle.transferInfo, sizeof(__OSTranxInfo));\n\n    WAIT_ON_IO_BUSY(status);\n\n    lastLatency = IO_READ(PI_BSD_DOM1_LAT_REG);\n    lastPageSize = IO_READ(PI_BSD_DOM1_PGS_REG);\n    lastRelDuration = IO_READ(PI_BSD_DOM1_RLS_REG);\n    lastPulse = IO_READ(PI_BSD_DOM1_PWD_REG);\n\n    IO_WRITE(PI_BSD_DOM1_LAT_REG, 0xff);\n    IO_WRITE(PI_BSD_DOM1_PGS_REG, 0);\n    IO_WRITE(PI_BSD_DOM1_RLS_REG, 3);\n    IO_WRITE(PI_BSD_DOM1_PWD_REG, 0xff);\n\n    a = IO_READ(__CartRomHandle.baseAddress);\n    __CartRomHandle.latency = a & 0xFF;\n    __CartRomHandle.pageSize = (a >> 0x10) & 0xF;\n    __CartRomHandle.relDuration = (a >> 0x14) & 0xF;\n    __CartRomHandle.pulse = (a >> 8) & 0xFF;\n\n    IO_WRITE(PI_BSD_DOM1_LAT_REG, lastLatency);\n    IO_WRITE(PI_BSD_DOM1_PGS_REG, lastPageSize);\n    IO_WRITE(PI_BSD_DOM1_RLS_REG, lastRelDuration);\n    IO_WRITE(PI_BSD_DOM1_PWD_REG, lastPulse);\n\n    prevInt = __osDisableInt();\n    __CartRomHandle.next = __osPiTable;\n    __osPiTable = &__CartRomHandle;\n    __osRestoreInt(prevInt);\n    __osPiRelAccess();\n\n    return &__CartRomHandle;\n}\n\n#else\n\nOSPiHandle *osCartRomInit(void) {\n    u32 domain;\n    u32 saveMask;\n\n    domain = 0;\n\n    if (__Dom1SpeedParam.baseAddress == PHYS_TO_K1(PI_DOM1_ADDR2)) {\n        return &__Dom1SpeedParam;\n    }\n\n    __Dom1SpeedParam.type = DEVICE_TYPE_CART;\n    __Dom1SpeedParam.baseAddress = PHYS_TO_K1(PI_DOM1_ADDR2);\n    osPiRawReadIo(0, &domain);\n    __Dom1SpeedParam.latency = domain & 0xff;\n    __Dom1SpeedParam.pulse = (domain >> 8) & 0xff;\n    __Dom1SpeedParam.pageSize = (domain >> 0x10) & 0xf;\n    __Dom1SpeedParam.relDuration = (domain >> 0x14) & 0xf;\n    __Dom1SpeedParam.domain = PI_DOMAIN1;\n    //__Dom1SpeedParam.speed = 0;\n\n    bzero(&__Dom1SpeedParam.transferInfo, sizeof(__OSTranxInfo));\n\n    saveMask = __osDisableInt();\n    __Dom1SpeedParam.next = __osPiTable;\n    __osPiTable = &__Dom1SpeedParam;\n    __osRestoreInt(saveMask);\n\n    return &__Dom1SpeedParam;\n}\n\n#endif\n"
  },
  {
    "path": "lib/src/osContInit.c",
    "content": "#include \"libultra_internal.h\"\n#include \"osContInternal.h\"\n#include \"PR/os.h\"\n#include \"controller.h\"\n#include \"PR/ique.h\"\n\nvoid __osPackRequestData(u8);\nvoid __osContGetInitData(u8 *, OSContStatus *);\n\nu32 _osContInitialized = 0; // probably initialized\n\n#ifdef VERSION_CN\n#define CLOCK_RATE (62500000ULL * 3 / 4)\n#else\n#define CLOCK_RATE osClockRate\n#endif\n\n// these probably belong in EEPROMlongread or something\nu8 __osContLastCmd;\nu8 __osMaxControllers;\nOSTimer __osEepromTimer;\nOSMesgQueue __osEepromTimerQ;\nOSMesg __osEepromTimerMsg[4];\n\ns32 osContInit(OSMesgQueue *mq, u8 *bitpattern, OSContStatus *status) {\n    OSMesg mesg;\n    u32 ret = 0;\n    OSTime currentTime;\n    OSTimer timer;\n    OSMesgQueue timerMesgQueue;\n\n    if (_osContInitialized) {\n        return 0;\n    }\n    _osContInitialized = 1;\n    currentTime = osGetTime();\n    if (500000 * CLOCK_RATE / 1000000 > currentTime) {\n        osCreateMesgQueue(&timerMesgQueue, &mesg, 1);\n        osSetTimer(&timer, 500000 * CLOCK_RATE / 1000000 - currentTime, 0, &timerMesgQueue, &mesg);\n        osRecvMesg(&timerMesgQueue, &mesg, OS_MESG_BLOCK);\n    }\n    __osMaxControllers = MAXCONTROLLERS;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    __osPackRequestData(0);\n#else\n    __osPackRequestData(255);\n#endif\n    ret = __osSiRawStartDma(OS_WRITE, __osContPifRam.ramarray);\n    osRecvMesg(mq, &mesg, OS_MESG_BLOCK);\n    ret = __osSiRawStartDma(OS_READ, __osContPifRam.ramarray);\n    osRecvMesg(mq, &mesg, OS_MESG_BLOCK);\n    __osContGetInitData(bitpattern, status);\n#if defined(VERSION_EU) || defined(VERSION_SH)\n    __osContLastCmd = CONT_CMD_REQUEST_STATUS;\n#elif defined(VERSION_CN)\n    __osContLastCmd = 0xfd;\n#else\n    __osContLastCmd = CONT_CMD_RESET;\n#endif\n    __osSiCreateAccessQueue();\n    osCreateMesgQueue(&__osEepromTimerQ, __osEepromTimerMsg, 1);\n    return ret;\n}\n\nvoid __osContGetInitData(u8 *bitpattern, OSContStatus *status) {\n    u8 *cmdBufPtr;\n    OSContPackedRequest response;\n    s32 i;\n    u8 sp7;\n\n    sp7 = 0;\n    cmdBufPtr = (u8 *) __osContPifRam.ramarray;\n    for (i = 0; i < __osMaxControllers; i++, cmdBufPtr += sizeof(OSContPackedRequest), status++) {\n        response = *(OSContPackedRequest *) cmdBufPtr;\n        status->errnum = (response.rxLen & 0xc0) >> 4;\n        if (status->errnum == 0) {\n            status->type = response.data2 << 8 | response.data1;\n#ifdef VERSION_CN\n            status->status = __osBbPakAddress[i] != NULL ? 1 : 0;\n#else\n            status->status = response.data3;\n#endif\n\n            sp7 |= 1 << i;\n        }\n    }\n#ifdef VERSION_CN\n    if (__osBbIsBb != 0 && __osBbHackFlags != 0) {\n        OSContStatus tmp;\n        status -= __osMaxControllers;\n        sp7 = (sp7 & ~((1 << __osBbHackFlags) | 1)) |\n                ((sp7 & 1) << __osBbHackFlags) |\n                ((sp7 & (1 << __osBbHackFlags)) >> __osBbHackFlags);\n        tmp = *status;\n        *status = status[__osBbHackFlags];\n        status[__osBbHackFlags] = tmp;\n    }\n#endif\n    *bitpattern = sp7;\n}\n\nvoid __osPackRequestData(u8 command) {\n    u8 *cmdBufPtr;\n    OSContPackedRequest request;\n    s32 i;\n\n#ifdef VERSION_CN\n    for (i = 0; i < ARRAY_COUNT(__osContPifRam.ramarray); i++) {\n#else\n    for (i = 0; i < ARRAY_COUNT(__osContPifRam.ramarray) + 1; i++) {\n#endif\n        __osContPifRam.ramarray[i] = 0;\n    }\n\n    __osContPifRam.pifstatus = 1;\n    cmdBufPtr = (u8 *) __osContPifRam.ramarray;\n    request.padOrEnd = 255;\n    request.txLen = 1;\n    request.rxLen = 3;\n    request.command = command;\n    request.data1 = 255;\n    request.data2 = 255;\n    request.data3 = 255;\n    request.data4 = 255;\n\n    for (i = 0; i < __osMaxControllers; i++) {\n        * (OSContPackedRequest *) cmdBufPtr = request;\n        cmdBufPtr += sizeof(OSContPackedRequest);\n    }\n    *cmdBufPtr = 254;\n}\n"
  },
  {
    "path": "lib/src/osContInternal.h",
    "content": "#ifndef _ULTRA64_CONTROLLER_INTERNAL_H_\n#define _ULTRA64_CONTROLLER_INTERNAL_H_\n\n#include <types.h>\n\ntypedef struct\n{\n    u8 padOrEnd;\n    u8 txLen;\n    u8 rxLen; //includes errno\n    u8 command;\n    u16 button;\n    s8 rawStickX;\n    s8 rawStickY;\n} OSContPackedRead;\n\ntypedef struct\n{\n    u8 padOrEnd;\n    u8 txLen;\n    u8 rxLen;\n    u8 command;\n    u8 data1;\n    u8 data2;\n    u8 data3;\n    u8 data4;\n} OSContPackedRequest;\n\ntypedef union {\n    OSContPackedRead read;\n    OSContPackedRequest request;\n    u32 as_raw[2];\n} OSContPackedStruct;\n\n#endif\n"
  },
  {
    "path": "lib/src/osContStartReadData.c",
    "content": "#include \"libultra_internal.h\"\n#include \"osContInternal.h\"\n#include \"PR/ique.h\"\n#include <macros.h>\n#include \"controller.h\"\n\nALIGNED8 OSPifRam __osContPifRam;\n\nextern u8 __osContLastCmd;\nextern u8 __osMaxControllers;\n\nvoid __osPackReadData(void);\n\ns32 osContStartReadData(OSMesgQueue *mesg) {\n#ifdef VERSION_CN\n    s32 ret;\n#else\n    s32 ret = 0;\n    s32 i;\n#endif\n    __osSiGetAccess();\n    if (__osContLastCmd != CONT_CMD_READ_BUTTON) {\n        __osPackReadData();\n        ret = __osSiRawStartDma(OS_WRITE, __osContPifRam.ramarray);\n        osRecvMesg(mesg, NULL, OS_MESG_BLOCK);\n    }\n#ifndef VERSION_CN\n    for (i = 0; i < ARRAY_COUNT(__osContPifRam.ramarray) + 1; i++) {\n        __osContPifRam.ramarray[i] = 0xff;\n    }\n    __osContPifRam.pifstatus = 0;\n#endif\n\n    ret = __osSiRawStartDma(OS_READ, __osContPifRam.ramarray);\n#ifdef VERSION_CN\n    __osContLastCmd = 0xfd;\n#else\n    __osContLastCmd = CONT_CMD_READ_BUTTON;\n#endif\n    __osSiRelAccess();\n    return ret;\n}\n\nvoid osContGetReadData(OSContPad *pad) {\n    u8 *cmdBufPtr;\n    OSContPackedRead response;\n    s32 i;\n    cmdBufPtr = (u8 *) __osContPifRam.ramarray;\n    for (i = 0; i < __osMaxControllers; i++, cmdBufPtr += sizeof(OSContPackedRead), pad++) {\n        response = * (OSContPackedRead *) cmdBufPtr;\n        pad->errnum = (response.rxLen & 0xc0) >> 4;\n        if (pad->errnum == 0) {\n            pad->button = response.button;\n            pad->stick_x = response.rawStickX;\n            pad->stick_y = response.rawStickY;\n        }\n    }\n#ifdef VERSION_CN\n    if (__osBbIsBb != 0 && __osBbHackFlags != 0) {\n        OSContPad tmp;\n        pad -= __osMaxControllers;\n        tmp = *pad;\n        *pad = pad[__osBbHackFlags];\n        pad[__osBbHackFlags] = tmp;\n    }\n#endif\n}\n\nvoid __osPackReadData() {\n    u8 *cmdBufPtr;\n    OSContPackedRead request;\n    s32 i;\n    cmdBufPtr = (u8 *) __osContPifRam.ramarray;\n\n#ifdef VERSION_CN\n    for (i = 0; i < ARRAY_COUNT(__osContPifRam.ramarray); i++) {\n#else\n    for (i = 0; i < ARRAY_COUNT(__osContPifRam.ramarray) + 1; i++) {\n#endif\n        __osContPifRam.ramarray[i] = 0;\n    }\n\n    __osContPifRam.pifstatus = 1;\n    request.padOrEnd = 255;\n    request.txLen = 1;\n    request.rxLen = 4;\n    request.command = 1;\n    request.button = 65535;\n    request.rawStickX = -1;\n    request.rawStickY = -1;\n    for (i = 0; i < __osMaxControllers; i++) {\n        * (OSContPackedRead *) cmdBufPtr = request;\n        cmdBufPtr += sizeof(OSContPackedRead);\n    }\n    *cmdBufPtr = 254;\n}\n"
  },
  {
    "path": "lib/src/osCreateMesgQueue.c",
    "content": "#include \"libultra_internal.h\"\n\nvoid osCreateMesgQueue(OSMesgQueue *mq, OSMesg *msgBuf, s32 count) {\n    mq->mtqueue = (OSThread *) &__osThreadTail;\n    mq->fullqueue = (OSThread *) &__osThreadTail;\n    mq->validCount = 0;\n    mq->first = 0;\n    mq->msgCount = count;\n    mq->msg = msgBuf;\n}\n"
  },
  {
    "path": "lib/src/osCreatePiManager.c",
    "content": "#include \"libultra_internal.h\"\n#include \"PR/os.h\"\n#include \"piint.h\"\n\n#include \"macros.h\"\n\n#define OS_PI_MGR_MESG_BUFF_SIZE 1\n\nOSDevMgr __osPiDevMgr = { 0 };\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\nOSPiHandle *__osPiTable = NULL;\n#endif\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\nOSPiHandle *__osCurrentHandle[2] = { &__Dom1SpeedParam, &__Dom2SpeedParam };\n#endif\n\nFORCE_BSS OSThread piMgrThread;\nFORCE_BSS u32 piMgrStack[0x400]; // stack bottom\nFORCE_BSS OSMesgQueue piEventQueue;\nFORCE_BSS OSMesg piEventBuf[OS_PI_MGR_MESG_BUFF_SIZE + 1];\n\nextern u32 gOsPiAccessQueueCreated;\nextern OSMesgQueue gOsPiMessageQueue;\nvoid __osDevMgrMain(void *);\n\nvoid osCreatePiManager(OSPri pri, OSMesgQueue *cmdQ, OSMesg *cmdBuf, s32 cmdMsgCnt) {\n    u32 int_disabled;\n    OSPri newPri;\n    OSPri currentPri;\n\n    if (!__osPiDevMgr.active) {\n        osCreateMesgQueue(cmdQ, cmdBuf, cmdMsgCnt);\n        osCreateMesgQueue(&piEventQueue, &piEventBuf[0], OS_PI_MGR_MESG_BUFF_SIZE);\n        if (!gOsPiAccessQueueCreated) {\n            __osPiCreateAccessQueue();\n        } // what is this constant geez\n        osSetEventMesg(OS_EVENT_PI, &piEventQueue, (void *) 0x22222222);\n        newPri = -1;\n        currentPri = osGetThreadPri(NULL);\n        if (currentPri < pri) {\n            newPri = currentPri;\n            osSetThreadPri(NULL, pri);\n        }\n        int_disabled = __osDisableInt();\n        __osPiDevMgr.active = TRUE;\n        __osPiDevMgr.thread = &piMgrThread;\n        __osPiDevMgr.cmdQueue = cmdQ;\n        __osPiDevMgr.evtQueue = &piEventQueue;\n        __osPiDevMgr.acsQueue = &gOsPiMessageQueue;\n        __osPiDevMgr.dma = osPiRawStartDma;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n        __osPiDevMgr.edma = osEPiRawStartDma;\n#endif\n        osCreateThread(&piMgrThread, 0, __osDevMgrMain, (void *) &__osPiDevMgr, &piMgrStack[0x400], pri);\n        osStartThread(&piMgrThread);\n        __osRestoreInt(int_disabled);\n        if (newPri != -1) {\n            osSetThreadPri(NULL, newPri);\n        }\n    }\n}\n"
  },
  {
    "path": "lib/src/osCreateThread.c",
    "content": "#include \"libultra_internal.h\"\n#include <PR/R4300.h>\n\nvoid __osCleanupThread(void);\n\n// Don't warn about pointer->u64 cast\n#pragma GCC diagnostic push\n#pragma GCC diagnostic ignored \"-Wpointer-to-int-cast\"\n\nvoid osCreateThread(OSThread *thread, OSId id, void (*entry)(void *), void *arg, void *sp, OSPri pri) {\n    register u32 saveMask;\n    OSIntMask mask;\n\n    thread->id = id;\n    thread->priority = pri;\n    thread->next = NULL;\n    thread->queue = NULL;\n    thread->context.pc = (u32) entry;\n    thread->context.a0 = (u64) arg;\n    thread->context.sp = (u64) sp - 16;\n    thread->context.ra = (u64) __osCleanupThread;\n\n    mask = OS_IM_ALL;\n    thread->context.sr = (mask & OS_IM_CPU) | SR_EXL;\n    thread->context.rcp = (mask & RCP_IMASK) >> RCP_IMASKSHIFT;\n    thread->context.fpcsr = (u32) (FPCSR_FS | FPCSR_EV);\n    thread->fp = 0;\n    thread->state = OS_STATE_STOPPED;\n    thread->flags = 0;\n    saveMask = __osDisableInt();\n    thread->tlnext = __osActiveQueue;\n\n    __osActiveQueue = thread;\n    __osRestoreInt(saveMask);\n}\n\n#pragma GCC diagnostic pop\n"
  },
  {
    "path": "lib/src/osCreateViManager.c",
    "content": "#include \"libultra_internal.h\"\n\n#define OS_VI_MANAGER_MESSAGE_BUFF_SIZE 5\n\nOSMgrArgs viMgrMainArgs = { 0 };\nstatic OSThread viMgrThread;\nstatic u32 viMgrStack[0x400]; // stack bottom\nstatic OSMesgQueue __osViMesgQueue;\nstatic OSMesg viMgrMesgBuff[OS_VI_MANAGER_MESSAGE_BUFF_SIZE];\n\nstatic OSIoMesg viEventViMesg;\nstatic OSIoMesg viEventCounterMesg;\n\nextern void __osTimerServicesInit(void);\nextern void __osTimerInterrupt(void);\nextern OSTime __osCurrentTime;\nextern u32 __osBaseCounter;\nextern u32 __osViIntrCount;\nvoid viMgrMain(void *);\n\n#ifdef VERSION_CN\nu32 __additional_scanline = 0;\n#endif\n\nvoid osCreateViManager(OSPri pri) {\n    u32 int_disabled;\n    OSPri newPri;\n    OSPri currentPri;\n    if (!viMgrMainArgs.initialized) {\n        __osTimerServicesInit();\n#ifdef VERSION_CN\n        __additional_scanline = 0;\n#endif\n        osCreateMesgQueue(&__osViMesgQueue, &viMgrMesgBuff[0], OS_VI_MANAGER_MESSAGE_BUFF_SIZE);\n        viEventViMesg.hdr.type = 13;\n        viEventViMesg.hdr.pri = 0;\n        viEventViMesg.hdr.retQueue = 0;\n        viEventCounterMesg.hdr.type = 14;\n        viEventCounterMesg.hdr.pri = 0;\n        viEventCounterMesg.hdr.retQueue = 0;\n        osSetEventMesg(OS_EVENT_VI, &__osViMesgQueue, &viEventViMesg);\n        osSetEventMesg(OS_EVENT_COUNTER, &__osViMesgQueue, &viEventCounterMesg);\n        newPri = -1;\n        currentPri = osGetThreadPri(NULL);\n        if (currentPri < pri) {\n            newPri = currentPri;\n            osSetThreadPri(NULL, pri);\n        }\n        int_disabled = __osDisableInt();\n        viMgrMainArgs.initialized = TRUE;\n        viMgrMainArgs.mgrThread = &viMgrThread;\n        viMgrMainArgs.cmdQueue = &__osViMesgQueue;\n        viMgrMainArgs.eventQueue = &__osViMesgQueue;\n        viMgrMainArgs.accessQueue = NULL;\n        viMgrMainArgs.dma_func = NULL;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n        viMgrMainArgs.edma_func = NULL;\n#endif\n\n        osCreateThread(&viMgrThread, 0, viMgrMain, (void *) &viMgrMainArgs, &viMgrStack[0x400], pri);\n        __osViInit();\n        osStartThread(&viMgrThread);\n        __osRestoreInt(int_disabled);\n        if (newPri != -1) {\n            osSetThreadPri(NULL, newPri);\n        }\n    }\n}\n\nvoid viMgrMain(void *vargs) {\n    static u16 retrace;\n    OSViContext *context;\n    OSMgrArgs *args;\n    OSMesg mesg;\n    u32 sp28; // always 0\n    u32 sp24; // time related\n    mesg = NULL;\n    sp28 = FALSE;\n    context = __osViGetCurrentContext();\n\n    if ((retrace = context->retraceCount) == 0) {\n        retrace = 1;\n    }\n\n    args = (OSMgrArgs *) vargs;\n\n    while (TRUE) {\n        osRecvMesg(args->eventQueue, &mesg, OS_MESG_BLOCK);\n        switch (*(u16 *) mesg) {\n            case 13:\n                __osViSwapContext();\n                if (!--retrace) {\n                    context = __osViGetCurrentContext();\n                    if (context->mq != NULL) {\n                        osSendMesg(context->mq, context->msg, OS_MESG_NOBLOCK);\n                    }\n                    retrace = context->retraceCount;\n                }\n                __osViIntrCount++;\n                if (sp28) {\n                    sp24 = osGetCount();\n                    __osCurrentTime = sp24;\n                    sp28 = 0;\n                }\n                sp24 = __osBaseCounter;\n                __osBaseCounter = osGetCount();\n                sp24 = __osBaseCounter - sp24;\n                __osCurrentTime = __osCurrentTime + sp24;\n                break;\n\n            case 14:\n                __osTimerInterrupt();\n                break;\n        }\n    }\n}\n"
  },
  {
    "path": "lib/src/osDestroyThread.c",
    "content": "#include \"libultra_internal.h\"\n\nvoid osDestroyThread(OSThread *thread) {\n    register s32 int_disabled;\n    register OSThread *s1;\n    register OSThread *s2;\n\n    int_disabled = __osDisableInt();\n\n    if (thread == NULL) {\n        thread = __osRunningThread;\n    } else if (thread->state != OS_STATE_STOPPED) {\n        __osDequeueThread(thread->queue, thread);\n    }\n\n    if (__osActiveQueue == thread) {\n        __osActiveQueue = __osActiveQueue->tlnext;\n    } else {\n        s1 = __osActiveQueue;\n#ifdef VERSION_CN\n        while (s1->priority != -1) {\n            s2 = s1->tlnext;\n            if (s2 == thread) {\n                s1->tlnext = thread->tlnext;\n                break;\n            }\n            s1 = s2;\n        }\n#else\n        s2 = s1->tlnext;\n        while (s2 != NULL) {\n            if (s2 == thread) {\n                s1->tlnext = thread->tlnext;\n                break;\n            }\n            s1 = s2;\n            s2 = s1->tlnext;\n        }\n#endif\n    }\n\n    if (thread == __osRunningThread) {\n        __osDispatchThread();\n    }\n\n    __osRestoreInt(int_disabled);\n}\n"
  },
  {
    "path": "lib/src/osDriveRomInit.c",
    "content": "#include \"libultra_internal.h\"\n#include \"PR/os_pi.h\"\n#include \"PR/rcp.h\"\n#include \"bstring.h\"\n#include <sm64.h>\n\nextern OSPiHandle *__osPiTable;\nextern OSPiHandle DriveRomHandle;\n\nOSPiHandle *osDriveRomInit(void) { // Why is this compiled with -g???\n    UNUSED s32 sp1c = 0;\n    u32 saveMask;\n\n    DriveRomHandle.type = DEVICE_TYPE_BULK;\n    DriveRomHandle.baseAddress = PHYS_TO_K1(PI_DOM1_ADDR1);\n    DriveRomHandle.latency = 64;\n    DriveRomHandle.pulse = 7;\n    DriveRomHandle.pageSize = 7;\n    DriveRomHandle.relDuration = 2;\n\n    IO_WRITE(PI_BSD_DOM1_LAT_REG, DriveRomHandle.latency);\n    IO_WRITE(PI_BSD_DOM1_PWD_REG, DriveRomHandle.pulse);\n    IO_WRITE(PI_BSD_DOM1_PGS_REG, DriveRomHandle.pageSize);\n    IO_WRITE(PI_BSD_DOM1_RLS_REG, DriveRomHandle.relDuration);\n\n    bzero(&DriveRomHandle.transferInfo, sizeof(__OSTranxInfo));\n\n    saveMask = __osDisableInt();\n    DriveRomHandle.next = __osPiTable;\n    __osPiTable = &DriveRomHandle;\n    __osRestoreInt(saveMask);\n\n    return &DriveRomHandle;\n}\n"
  },
  {
    "path": "lib/src/osEPiRawReadIo.c",
    "content": "#include \"libultra_internal.h\"\n#include \"PR/rcp.h\"\n#include \"piint.h\"\n\ns32 osEPiRawReadIo(OSPiHandle *pihandle, u32 devAddr, u32 *data) {\n    register s32 stat;\n#ifdef VERSION_CN\n    u32 domain;\n#endif\n\n#ifdef VERSION_CN\n    EPI_SYNC(pihandle, stat, domain);\n#else\n    WAIT_ON_IO_BUSY(stat);\n#endif\n\n    *data = IO_READ(pihandle->baseAddress | devAddr);\n\n    return 0;\n}\n"
  },
  {
    "path": "lib/src/osEPiRawStartDma.c",
    "content": "#include \"libultra_internal.h\"\n#include \"PR/rcp.h\"\n#include \"PR/ique.h\"\n#include \"new_func.h\"\n#include \"PR/R4300.h\"\n#include \"piint.h\"\n\n// TODO: This define is from os.h, but including that causes problems...\n#define PI_DOMAIN1 0\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\nextern OSPiHandle *__osCurrentHandle[2];\n#endif\n\ns32 osEPiRawStartDma(OSPiHandle *pihandle, s32 dir, u32 devAddr, void *dram_addr, u32 size) {\n#ifdef VERSION_CN\n    u64 dummyBuf[2];\n    u32 status;\n    u32 domain;\n    u32 buf;\n    u32 mask;\n    u16 *tmp;\n    u32 i;\n    u32 end;\n#elif defined(VERSION_SH)\n    u32 status;\n    u32 domain;\n#else\n    register u32 status;\n#endif\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    EPI_SYNC(pihandle, status, domain);\n#else\n    WAIT_ON_IO_BUSY(status);\n#endif\n\n#ifdef VERSION_CN\n    if (dir == OS_READ) {\n        mask = 1;\n\n        for (i = 1; i <= pihandle->pageSize + 2; i++) {\n            mask *= 2;\n        }\n\n        if ((devAddr & (mask - 1)) == mask - 2) {\n            osEPiRawReadIo(pihandle, devAddr - 2, &buf);\n\n            tmp = (u16 *) PHYS_TO_K1(dram_addr);\n            *(tmp++) = (u16) buf;\n\n            devAddr += 2;\n            dram_addr = tmp;\n            size -= 2;\n\n            if (size >= 4) {\n                osEPiRawReadIo(pihandle, devAddr, &buf);\n\n                tmp = (u16 *) dram_addr;\n                *(tmp++) = buf >> 16;\n                *(tmp++) = (u16) buf;\n\n                devAddr += 4;\n                dram_addr = tmp;\n                size -= 4;\n\n                if (size != 0) {\n                    osEPiRawReadIo(pihandle, devAddr, &buf);\n\n                    tmp = (u16 *) PHYS_TO_K1(dram_addr);\n                    *(tmp++) = buf >> 16;\n\n                    devAddr += 2;\n                    dram_addr = tmp;\n                    size -= 2;\n                }\n            }\n        }\n\n        end = devAddr + size;\n\n        if (((end & (mask - 1)) == 2) | (size == 2)) {\n            if (end & 2) {\n                osEPiRawReadIo(pihandle, end - 2, &buf);\n                tmp = (u16 *) PHYS_TO_K1(dram_addr) + (size - 2) / 2;\n                *tmp = buf >> 16;\n            } else {\n                osEPiRawReadIo(pihandle, end - 4, &buf);\n                tmp = (u16 *) PHYS_TO_K1(dram_addr) + (size - 2) / 2;\n                *tmp = (u16) buf;\n            }\n\n            size -= 2;\n        }\n\n        if (size == 0) {\n            size = 8;\n            dram_addr = dummyBuf;\n            devAddr = 0;\n        }\n    }\n#endif\n\n    IO_WRITE(PI_DRAM_ADDR_REG, osVirtualToPhysical(dram_addr));\n    IO_WRITE(PI_CART_ADDR_REG, K1_TO_PHYS(pihandle->baseAddress | devAddr));\n\n#ifdef VERSION_CN\n    if ((u32) dir >= 2U) {\n        return -1;\n    }\n\n    if ((pihandle->baseAddress | devAddr) <= 0x400) {\n        IO_WRITE(dir == OS_READ ? PI_EX_WR_LEN_REG : PI_EX_RD_LEN_REG, size - 1);\n    } else {\n        IO_WRITE(dir == OS_READ ? PI_WR_LEN_REG : PI_RD_LEN_REG, size - 1);\n    }\n#else\n    switch (dir) {\n        case OS_READ:\n            IO_WRITE(PI_WR_LEN_REG, size - 1);\n            break;\n        case OS_WRITE:\n            IO_WRITE(PI_RD_LEN_REG, size - 1);\n            break;\n        default:\n            return -1;\n    }\n#endif\n    return 0;\n}\n\n"
  },
  {
    "path": "lib/src/osEPiRawWriteIo.c",
    "content": "#include \"libultra_internal.h\"\n#include \"PR/rcp.h\"\n#include \"piint.h\"\n\ns32 osEPiRawWriteIo(OSPiHandle *pihandle, u32 devAddr, u32 data) {\n    register u32 stat;\n#ifdef VERSION_CN\n    u32 domain;\n#endif\n\n#ifdef VERSION_CN\n    EPI_SYNC(pihandle, stat, domain);\n#else\n    WAIT_ON_IO_BUSY(stat);\n#endif\n\n    IO_WRITE(pihandle->baseAddress | devAddr, data);\n\n    return 0;\n}\n"
  },
  {
    "path": "lib/src/osEepromLongRead.c",
    "content": "#include \"libultra_internal.h\"\n#include \"controller.h\"\n\ns32 osEepromLongRead(OSMesgQueue *mq, u8 address, u8 *buffer, s32 nbytes) {\n    s32 status = 0;\n\n#ifndef VERSION_CN\n    if (address > 0x40) {\n        return -1;\n    }\n#endif\n\n    while (nbytes > 0) {\n        status = osEepromRead(mq, address, buffer);\n        if (status != 0) {\n            return status;\n        }\n\n        nbytes -= EEPROM_BLOCK_SIZE;\n        address++;\n        buffer += EEPROM_BLOCK_SIZE;\n#ifndef VERSION_CN\n        osSetTimer(&__osEepromTimer, 12000 * osClockRate / 1000000, 0, &__osEepromTimerQ, __osEepromTimerMsg);\n        osRecvMesg(&__osEepromTimerQ, NULL, OS_MESG_BLOCK);\n#endif\n    }\n\n    return status;\n}\n"
  },
  {
    "path": "lib/src/osEepromLongWrite.c",
    "content": "#include \"libultra_internal.h\"\n#include \"controller.h\"\n\n#ifdef VERSION_CN\n#define CLOCK_RATE (62500000ULL * 3 / 4)\n#else\n#define CLOCK_RATE osClockRate\n#endif\n\ns32 osEepromLongWrite(OSMesgQueue *mq, u8 address, u8 *buffer, int nbytes) {\n    s32 result = 0;\n#ifndef VERSION_CN\n    if (address > 0x40) {\n        return -1;\n    }\n#endif\n\n    while (nbytes > 0) {\n        result = osEepromWrite(mq, address, buffer);\n        if (result != 0) {\n            return result;\n        }\n\n        nbytes -= EEPROM_BLOCK_SIZE;\n        address++;\n        buffer += EEPROM_BLOCK_SIZE;\n        osSetTimer(&__osEepromTimer, 12000 * CLOCK_RATE / 1000000, 0, &__osEepromTimerQ, __osEepromTimerMsg);\n        osRecvMesg(&__osEepromTimerQ, NULL, OS_MESG_BLOCK);\n    }\n\n    return result;\n}\n"
  },
  {
    "path": "lib/src/osEepromProbe.c",
    "content": "#include \"macros.h\"\n#include \"libultra_internal.h\"\n\nextern u32 __osBbEepromSize;\n\ns32 __osEepStatus(OSMesgQueue *, OSContStatus *);\ns32 osEepromProbe(UNUSED OSMesgQueue *mq) {\n    s32 ret = 0;\n#ifndef VERSION_CN\n    OSContStatus status;\n#endif\n\n    __osSiGetAccess();\n#ifdef VERSION_CN\n    if (__osBbEepromSize == 0x200) {\n        ret = EEPROM_TYPE_4K;\n    } else if (__osBbEepromSize == 0x800) {\n        ret = EEPROM_TYPE_16K;\n    }\n#else\n    ret = __osEepStatus(mq, &status);\n    ret = (ret == 0 && (status.type & CONT_EEPROM) != 0) ? EEPROM_TYPE_4K : 0;\n#endif\n    __osSiRelAccess();\n    return ret;\n}\n"
  },
  {
    "path": "lib/src/osEepromRead.c",
    "content": "#include \"libultra_internal.h\"\n#include \"PR/ique.h\"\n#include \"controller.h\"\n#include \"macros.h\"\n\n#ifdef VERSION_CN\n\ns32 osEepromRead(UNUSED OSMesgQueue *mq, u8 address, u8 *buffer) {\n    s32 ret = 0;\n    s32 i;\n\n    __osSiGetAccess();\n\n    if (__osBbEepromSize == 0x200) {\n        if (address >= 0x200 / 8) {\n            ret = -1;\n        }\n    } else if (__osBbEepromSize != 0x800) {\n        ret = 8;\n    }\n\n    if (ret == 0) {\n        for (i = 0; i < 8; i++) {\n            buffer[i] = (__osBbEepromAddress + address * 8)[i];\n        }\n    }\n\n    __osSiRelAccess();\n    return ret;\n}\n\n#else\n\nvoid __osPackEepReadData(u8);\n\ns32 osEepromRead(OSMesgQueue *mq, u8 address, u8 *buffer) {\n    s32 ret = 0;\n    s32 i = 0;\n    u8 *ptr = (u8 *) &__osEepPifRam.ramarray;\n    OSContStatus sdata;\n    __OSContEepromFormat eepromformat;\n\n    if (address > EEPROM_MAXBLOCKS) {\n        return -1;\n    }\n\n    __osSiGetAccess();\n    ret = __osEepStatus(mq, &sdata);\n    if (ret != 0 || sdata.type != CONT_EEPROM) {\n\n        return CONT_NO_RESPONSE_ERROR;\n    }\n\n    while (sdata.status & CONT_EEPROM_BUSY) {\n        __osEepStatus(mq, &sdata);\n    }\n    __osPackEepReadData(address);\n\n    ret = __osSiRawStartDma(OS_WRITE, &__osEepPifRam);\n    osRecvMesg(mq, NULL, OS_MESG_BLOCK);\n\n    for (i = 0; i < ARRAY_COUNT(__osEepPifRam.ramarray) + 1; i++) {\n        __osEepPifRam.ramarray[i] = CONT_CMD_NOP;\n    }\n    __osEepPifRam.pifstatus = 0;\n\n    ret = __osSiRawStartDma(OS_READ, &__osEepPifRam);\n    __osContLastCmd = CONT_CMD_READ_EEPROM;\n    osRecvMesg(mq, NULL, OS_MESG_BLOCK);\n\n    for (i = 0; i < 4; i++) {\n        ptr++;\n    }\n\n    eepromformat = *(__OSContEepromFormat *) ptr;\n    ret = CHNL_ERR(eepromformat);\n\n    if (ret == 0) {\n        for (i = 0; i < 8; i++) {\n            *buffer++ = eepromformat.data[i];\n        }\n    }\n\n    __osSiRelAccess();\n    return ret;\n}\n\nvoid __osPackEepReadData(u8 address) {\n    u8 *ptr = (u8 *) &__osEepPifRam.ramarray;\n    __OSContEepromFormat eepromformat;\n    s32 i;\n    \n    for (i = 0; i < ARRAY_COUNT(__osEepPifRam.ramarray) + 1; i++) {\n        __osEepPifRam.ramarray[i] = CONT_CMD_NOP;\n    }\n    __osEepPifRam.pifstatus = CONT_CMD_EXE;\n\n    eepromformat.txsize = CONT_CMD_READ_EEPROM_TX;\n    eepromformat.rxsize = CONT_CMD_READ_EEPROM_RX;\n    eepromformat.cmd = CONT_CMD_READ_EEPROM;\n    eepromformat.address = address;\n    for (i = 0; i < ARRAY_COUNT(eepromformat.data); i++) {\n        eepromformat.data[i] = 0;\n    }\n\n    for (i = 0; i < 4; i++) {\n        *ptr++ = 0;\n    }\n\n    *(__OSContEepromFormat *) ptr = eepromformat;\n    ptr += sizeof(__OSContEepromFormat);\n    *ptr = CONT_CMD_END;\n}\n\n#endif\n"
  },
  {
    "path": "lib/src/osEepromWrite.c",
    "content": "#include \"libultra_internal.h\"\n#include \"osContInternal.h\"\n#include \"PR/ique.h\"\n#include \"controller.h\"\n#include \"macros.h\"\n\n#ifdef VERSION_CN\n\ns32 osEepromWrite(UNUSED OSMesgQueue *mq, u8 address, u8 *buffer) {\n    s32 ret = 0;\n    s32 i;\n\n    __osSiGetAccess();\n\n    if (__osBbEepromSize == 0x200) {\n        if (address >= 0x200 / 8) {\n            ret = -1;\n        }\n    } else if (__osBbEepromSize != 0x800) {\n        ret = 8;\n    }\n\n    if (ret == 0) {\n        for (i = 0; i < 8; i++) {\n            (__osBbEepromAddress + address * 8)[i] = buffer[i];\n        }\n    }\n\n    __osSiRelAccess();\n    return ret;\n}\n\n#else\n\nOSPifRam __osEepPifRam;\n\nvoid __osPackEepWriteData(u8, u8 *);\n\ns32 osEepromWrite(OSMesgQueue *mq, u8 address, u8 *buffer) {\n    s32 ret = 0;\n    s32 i;\n    u8 *ptr = (u8 *) &__osEepPifRam.ramarray;\n    __OSContEepromFormat eepromformat;\n    OSContStatus sdata;\n\n    if (address > EEPROM_MAXBLOCKS) {\n        return -1;\n    }\n\n    __osSiGetAccess();\n    ret = __osEepStatus(mq, &sdata);\n\n    if (ret != 0 || sdata.type != CONT_EEPROM) {\n        return CONT_NO_RESPONSE_ERROR;\n    }\n\n    while (sdata.status & CONT_EEPROM_BUSY) {\n        __osEepStatus(mq, &sdata);\n    }\n\n    __osPackEepWriteData(address, buffer);\n\n    ret = __osSiRawStartDma(OS_WRITE, &__osEepPifRam);\n    osRecvMesg(mq, NULL, OS_MESG_BLOCK);\n\n    for (i = 0; i < ARRAY_COUNT(__osEepPifRam.ramarray) + 1; i++) {\n        __osEepPifRam.ramarray[i] = CONT_CMD_NOP;\n    }\n\n    __osEepPifRam.pifstatus = 0;\n    ret = __osSiRawStartDma(OS_READ, &__osEepPifRam);\n    __osContLastCmd = CONT_CMD_WRITE_EEPROM;\n    osRecvMesg(mq, NULL, OS_MESG_BLOCK);\n\n    for (i = 0; i < 4; i++) {\n        ptr++;\n    }\n\n    eepromformat = *(__OSContEepromFormat *) ptr;\n    ret = CHNL_ERR(eepromformat);\n    __osSiRelAccess();\n    return ret;\n}\n\nvoid __osPackEepWriteData(u8 address, u8 *buffer) {\n    u8 *ptr = (u8 *) &__osEepPifRam.ramarray;\n    __OSContEepromFormat eepromformat;\n    s32 i;\n\n    for (i = 0; i < ARRAY_COUNT(__osEepPifRam.ramarray) + 1; i++) {\n        __osEepPifRam.ramarray[i] = CONT_CMD_NOP;\n    }\n    __osEepPifRam.pifstatus = CONT_CMD_EXE;\n\n    eepromformat.txsize = CONT_CMD_WRITE_EEPROM_TX;\n    eepromformat.rxsize = CONT_CMD_WRITE_EEPROM_RX;\n    eepromformat.cmd = CONT_CMD_WRITE_EEPROM;\n    eepromformat.address = address;\n\n    for (i = 0; i < ARRAY_COUNT(eepromformat.data); i++) {\n        eepromformat.data[i] = *buffer++;\n    }\n\n    for (i = 0; i < 4; i++) {\n        *ptr++ = 0;\n    }\n    *(__OSContEepromFormat *) ptr = eepromformat;\n    ptr += sizeof(__OSContEepromFormat);\n    *ptr = CONT_CMD_END;\n}\n\ns32 __osEepStatus(OSMesgQueue *mq, OSContStatus *data) {\n    u32 ret = 0;\n    s32 i;\n    u8 *ptr = (u8 *) __osEepPifRam.ramarray;\n    __OSContRequesFormat requestformat;\n\n    for (i = 0; i < ARRAY_COUNT(__osEepPifRam.ramarray) + 1; i++) {\n        __osEepPifRam.ramarray[i] = 0;\n    }\n    __osEepPifRam.pifstatus = CONT_CMD_EXE;\n\n    ptr = (u8 *) __osEepPifRam.ramarray;\n    for (i = 0; i < 4; i++) {\n        *ptr++ = 0;\n    }\n\n    requestformat.dummy = CONT_CMD_NOP;\n    requestformat.txsize = CONT_CMD_REQUEST_STATUS_TX;\n    requestformat.rxsize = CONT_CMD_REQUEST_STATUS_RX;\n    requestformat.cmd = CONT_CMD_REQUEST_STATUS;\n    requestformat.typeh = CONT_CMD_NOP;\n    requestformat.typel = CONT_CMD_NOP;\n    requestformat.status = CONT_CMD_NOP;\n    requestformat.dummy1 = CONT_CMD_NOP;\n    *(__OSContRequesFormat *) ptr = requestformat;\n\n    ptr += sizeof(__OSContRequesFormat);\n    *ptr = CONT_CMD_END;\n\n    ret = __osSiRawStartDma(OS_WRITE, &__osEepPifRam);\n    osRecvMesg(mq, NULL, OS_MESG_BLOCK);\n\n    __osContLastCmd = CONT_CMD_WRITE_EEPROM;\n\n    ret = __osSiRawStartDma(OS_READ, &__osEepPifRam);\n    osRecvMesg(mq, NULL, OS_MESG_BLOCK);\n\n    if (ret != 0) {\n        return ret;\n    }\n\n    ptr = (u8 *) __osEepPifRam.ramarray;\n    for (i = 0; i < 4; i++) {\n        *ptr++ = 0;\n    }\n\n    requestformat = *(__OSContRequesFormat *) ptr;\n    data->errnum = CHNL_ERR(requestformat);\n    data->type = (requestformat.typel << 8) | requestformat.typeh;\n    data->status = requestformat.status;\n    if (data->errnum != 0) {\n        return data->errnum;\n    }\n    return 0;\n}\n\n#endif\n"
  },
  {
    "path": "lib/src/osGetThreadPri.c",
    "content": "#include \"libultra_internal.h\"\n\nOSPri osGetThreadPri(OSThread *thread) {\n    if (thread == NULL) {\n        thread = __osRunningThread;\n    }\n    return thread->priority;\n}\n"
  },
  {
    "path": "lib/src/osGetTime.c",
    "content": "#include \"libultra_internal.h\"\n\nextern OSTime __osCurrentTime;\nextern u32 __osBaseCounter;\n\nOSTime osGetTime() {\n    u32 tmpTime;\n    u32 elapseCount;\n    OSTime currentCount;\n    register u32 saveMask;\n\n    saveMask = __osDisableInt();\n    tmpTime = osGetCount();\n    elapseCount = tmpTime - __osBaseCounter;\n    currentCount = __osCurrentTime;\n    __osRestoreInt(saveMask);\n    return currentCount + elapseCount;\n}\n"
  },
  {
    "path": "lib/src/osInitialize.c",
    "content": "#include \"libultra_internal.h\"\n#include \"PR/R4300.h\"\n#include \"piint.h\"\n#include \"PR/rcp.h\"\n#include \"PR/ique.h\"\n#include <macros.h>\n\ntypedef struct {\n    u32 inst1;\n    u32 inst2;\n    u32 inst3;\n    u32 inst4;\n} __osExceptionVector;\nextern __osExceptionVector __osExceptionPreamble;\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\nextern u32 __osSetHWintrRoutine(OSHWIntr, s32 (*));\nextern s32 __osLeoInterrupt(void);\n#endif\n\nu32 __osFinalrom; // maybe initialized?\nu64 osClockRate = OS_CLOCK_RATE;\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\nu32 osViClock = VI_NTSC_CLOCK;\n#endif\n\nu32 __osShutdown = 0; // used in __osException\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\nu32 EU_D_80336C40;\nu32 EU_D_80336C44;\n\nu32 __OSGlobalIntMask = OS_IM_ALL;\nu32 osDDActive = 0;\nu8 EU_unusedZeroes[8] = { 0 };\n#endif\n\n\n#ifdef VERSION_CN\n\nvoid __createSpeedParam(void) {\n    __Dom1SpeedParam.type = DEVICE_TYPE_INIT;\n    __Dom1SpeedParam.latency = IO_READ(PI_BSD_DOM1_LAT_REG);\n    __Dom1SpeedParam.pulse = IO_READ(PI_BSD_DOM1_PWD_REG);\n    __Dom1SpeedParam.pageSize = IO_READ(PI_BSD_DOM1_PGS_REG);\n    __Dom1SpeedParam.relDuration = IO_READ(PI_BSD_DOM1_RLS_REG);\n\n    __Dom2SpeedParam.type = DEVICE_TYPE_INIT;\n    __Dom2SpeedParam.latency = IO_READ(PI_BSD_DOM2_LAT_REG);\n    __Dom2SpeedParam.pulse = IO_READ(PI_BSD_DOM2_PWD_REG);\n    __Dom2SpeedParam.pageSize = IO_READ(PI_BSD_DOM2_PGS_REG);\n    __Dom2SpeedParam.relDuration = IO_READ(PI_BSD_DOM2_RLS_REG);\n}\n#endif\n\n#ifdef VERSION_CN\nvoid __osInitialize_common(void)\n#else\nvoid osInitialize(void)\n#endif\n{\n    u32 pifdata;\n#ifndef VERSION_CN\n    u32 clock = 0;\n#endif\n#ifdef VERSION_CN\n    u32 intrMask1, intrMask2;\n#endif\n\n#ifdef VERSION_EU\n    u32 leoStatus;\n    u32 status;\n#endif\n\n    UNUSED u32 ptr;\n\n    __osFinalrom = TRUE;\n    __osSetSR(__osGetSR() | SR_CU1);\n    __osSetFpcCsr(FPCSR_FS | FPCSR_EV);\n#ifdef VERSION_CN\n    __osSetWatchLo(0x4900000);\n    intrMask1 = IO_WRITE(MI_HW_INTR_MASK_REG, 0x22000);\n    intrMask2 = IO_WRITE(MI_HW_INTR_MASK_REG, 0x11000);\n    __osBbIsBb = (intrMask1 & 0x140) == 0x140 && (intrMask2 & 0x140) == 0 ? 1 : 0;\n    if (__osBbIsBb != 0 && (IO_READ(PI_MISC_REG) & 0xC0000000) != 0) {\n        __osBbIsBb = 2;\n    }\n    if (__osBbIsBb != 0) {\n        osTvType = TV_TYPE_NTSC;\n        osRomType = DEVICE_TYPE_CART;\n        osResetType = RESET_TYPE_COLD_RESET;\n        osVersion = 1;\n        osMemSize = 4 * 1024 * 1024;\n    }\n    if (__osBbIsBb == 0) {\n#endif\n        while (__osSiRawReadIo(PIF_RAM_END - 3, &pifdata)) {\n            ;\n        }\n        while (__osSiRawWriteIo(PIF_RAM_END - 3, pifdata | 8)) {\n            ;\n        }\n#ifdef VERSION_CN\n    }\n#endif\n    *(__osExceptionVector *) UT_VEC = __osExceptionPreamble;\n    *(__osExceptionVector *) XUT_VEC = __osExceptionPreamble;\n    *(__osExceptionVector *) ECC_VEC = __osExceptionPreamble;\n    *(__osExceptionVector *) E_VEC = __osExceptionPreamble;\n    osWritebackDCache((void *) UT_VEC, E_VEC - UT_VEC + sizeof(__osExceptionVector));\n    osInvalICache((void *) UT_VEC, E_VEC - UT_VEC + sizeof(__osExceptionVector));\n#ifdef VERSION_CN\n    __createSpeedParam();\n    osUnmapTLBAll();\n#endif\n    osMapTLBRdb();\n#ifndef VERSION_CN\n    osPiRawReadIo(4, &clock);\n    clock &= ~0xf;\n    if (clock) {\n        osClockRate = clock;\n    }\n#endif\n    osClockRate = osClockRate * 3 / 4;\n    if (osResetType == RESET_TYPE_COLD_RESET) {\n        bzero(osAppNmiBuffer, sizeof(osAppNmiBuffer));\n    }\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    if (osTvType == TV_TYPE_PAL) {\n        osViClock = VI_PAL_CLOCK;\n    } else if (osTvType == TV_TYPE_MPAL) {\n        osViClock = VI_MPAL_CLOCK;\n    } else {\n        osViClock = VI_NTSC_CLOCK;\n    }\n#elif defined(VERSION_EU)\n    WAIT_ON_IO_BUSY(status);\n\n    if (!((leoStatus = IO_READ(LEO_STATUS)) & LEO_STATUS_PRESENCE_MASK)) {\n        osDDActive = 1;\n        __osSetHWIntrRoutine(1, __osLeoInterrupt);\n    } else {\n        osDDActive = 0;\n    }\n#endif\n\n#ifdef VERSION_CN\n    if (__osGetCause() & 0x1000) {\n        while (TRUE) {\n        }\n    }\n    if (__osBbIsBb == 0) {\n        __osBbEepromSize = 0x200;\n        __osBbPakSize = 0x8000;\n        __osBbFlashSize = 0x20000;\n        __osBbEepromAddress = (u8 *) 0x803FFE00;\n        __osBbPakAddress[0] = (u32 *) 0x803F7E00;\n        __osBbPakAddress[1] = NULL;\n        __osBbPakAddress[2] = NULL;\n        __osBbPakAddress[3] = NULL;\n        __osBbFlashAddress = 0x803E0000;\n        __osBbSramSize = __osBbFlashSize;\n        __osBbSramAddress = __osBbFlashAddress;\n    }\n    if (__osBbIsBb != 0) {\n        IO_WRITE(PI_BASE_REG+0x64, IO_READ(PI_BASE_REG+0x64) & 0x7FFFFFFF);\n        IO_WRITE(MI_HW_INTR_MASK_REG, 0x20000);\n        IO_WRITE(SI_BASE_REG+0x0C, 0); // a \"reserved\" register\n        IO_WRITE(SI_BASE_REG+0x1C, (IO_READ(SI_BASE_REG+0x1C) & 0x80FFFFFF) | 0x2F400000);\n    }\n\n    IO_WRITE(AI_CONTROL_REG, 1);\n    IO_WRITE(AI_DACRATE_REG, 0x3fff);\n    IO_WRITE(AI_BITRATE_REG, 0xf);\n#endif\n}\n\n#ifdef VERSION_CN\nvoid __osInitialize_autodetect(void) {\n}\n#endif\n"
  },
  {
    "path": "lib/src/osInitializeIQueWrapper.c",
    "content": "#include \"ultra64.h\"\n#include \"PR/os.h\"\n\n#ifdef VERSION_CN\ns32 osMotorStart(OSPfs *pfs) {\n    return __osMotorAccess(pfs, MOTOR_START);\n}\n\ns32 osMotorStop(OSPfs *pfs) {\n    return __osMotorAccess(pfs, MOTOR_STOP);\n}\n\nstatic void osInitializeWrapper(void) {\n    __osInitialize_common();\n    __osInitialize_autodetect();\n}\n\nvoid osInitialize(void) {\n    osInitializeWrapper();\n}\n#endif\n"
  },
  {
    "path": "lib/src/osJamMesg.c",
    "content": "#include \"libultra_internal.h\"\n\ns32 osJamMesg(OSMesgQueue *mq, OSMesg msg, s32 flag) {\n    register s32 int_disabled;\n    int_disabled = __osDisableInt();\n    while (MQ_IS_FULL(mq)) {\n        if (flag == OS_MESG_BLOCK) {\n            __osRunningThread->state = OS_STATE_WAITING;\n            __osEnqueueAndYield(&mq->fullqueue);\n        } else {\n            __osRestoreInt(int_disabled);\n            return -1;\n        }\n    }\n\n    mq->first = (mq->first + mq->msgCount - 1) % mq->msgCount;\n    mq->msg[mq->first] = msg;\n    mq->validCount++;\n    if (mq->mtqueue->next != NULL) {\n        osStartThread(__osPopThread(&mq->mtqueue));\n    }\n    __osRestoreInt(int_disabled);\n    return 0;\n}\n"
  },
  {
    "path": "lib/src/osLeoDiskInit.c",
    "content": "#include \"libultra_internal.h\"\n#include \"PR/rcp.h\"\n#include \"PR/os.h\"\n\nOSPiHandle __Dom2SpeedParam;\nOSPiHandle *__osDiskHandle;\n\nOSPiHandle *osLeoDiskInit(void) {\n    s32 saveMask;\n\n    __Dom2SpeedParam.type = DEVICE_TYPE_64DD;\n    __Dom2SpeedParam.baseAddress = PHYS_TO_K1(PI_DOM2_ADDR1);\n    __Dom2SpeedParam.latency = 3;\n    __Dom2SpeedParam.pulse = 6;\n    __Dom2SpeedParam.pageSize = 6;\n    __Dom2SpeedParam.relDuration = 2;\n#ifdef VERSION_SH\n    __Dom2SpeedParam.domain = 1;\n#endif\n    IO_WRITE(PI_BSD_DOM2_LAT_REG, __Dom2SpeedParam.latency);\n    IO_WRITE(PI_BSD_DOM2_PWD_REG, __Dom2SpeedParam.pulse);\n    IO_WRITE(PI_BSD_DOM2_PGS_REG, __Dom2SpeedParam.pageSize);\n    IO_WRITE(PI_BSD_DOM2_RLS_REG, __Dom2SpeedParam.relDuration);\n    bzero(&__Dom2SpeedParam.transferInfo, sizeof(__OSTranxInfo));\n    saveMask = __osDisableInt();\n    __Dom2SpeedParam.next = __osPiTable;\n    __osPiTable = &__Dom2SpeedParam;\n    __osDiskHandle = &__Dom2SpeedParam;\n    __osRestoreInt(saveMask);\n    return &__Dom2SpeedParam;\n}\n"
  },
  {
    "path": "lib/src/osPfsIsPlug.c",
    "content": "#include \"PR/os_pi.h\"\n#include \"libultra_internal.h\"\n#include \"controller.h\"\n#include \"macros.h\"\n\nOSPifRam __osPfsPifRam;\n\ns32 osPfsIsPlug(OSMesgQueue *queue, u8 *pattern) {\n    s32 ret;\n    OSMesg dummy;\n    u8 bitpattern;\n    OSContStatus data[MAXCONTROLLERS];\n    int channel;\n    u8 bits;\n    int crc_error_cnt;\n    ret = 0;\n    bits = 0;\n    crc_error_cnt = 3;\n    __osSiGetAccess();\n    while (TRUE) {\n        __osPfsRequestData(CONT_CMD_REQUEST_STATUS);\n        ret = __osSiRawStartDma(OS_WRITE, &__osPfsPifRam);\n        osRecvMesg(queue, &dummy, OS_MESG_BLOCK);\n        ret = __osSiRawStartDma(OS_READ, &__osPfsPifRam);\n        osRecvMesg(queue, &dummy, OS_MESG_BLOCK);\n        __osPfsGetInitData(&bitpattern, data);\n        for (channel = 0; channel < __osMaxControllers; channel++) {\n            if ((data[channel].status & CONT_ADDR_CRC_ER) == 0) {\n                crc_error_cnt--;\n                break;\n            }\n        }\n        if (__osMaxControllers == channel) {\n            crc_error_cnt = 0;\n        }\n        if (crc_error_cnt < 1) {\n            for (channel = 0; channel < __osMaxControllers; channel++) {\n                if (data[channel].errnum == 0 && (data[channel].status & CONT_CARD_ON) != 0) {\n                    bits |= 1 << channel;\n                }\n            }\n            __osSiRelAccess();\n            *pattern = bits;\n            return ret;\n        }\n    }\n}\n\nvoid __osPfsRequestData(u8 cmd) {\n    u8 *ptr;\n    __OSContRequesFormat requestformat;\n    int i;\n\n    __osContLastCmd = cmd;\n\n    for (i = 0; i < ARRAY_COUNT(__osPfsPifRam.ramarray) + 1; i++) { // also clear pifstatus\n        __osPfsPifRam.ramarray[i] = 0;\n    }\n\n    __osPfsPifRam.pifstatus = CONT_CMD_EXE;\n\n    ptr = (u8 *)&__osPfsPifRam;\n    requestformat.dummy = CONT_CMD_NOP;\n    requestformat.txsize = CONT_CMD_REQUEST_STATUS_TX;\n    requestformat.rxsize = CONT_CMD_REQUEST_STATUS_RX;\n    requestformat.cmd = cmd;\n    requestformat.typeh = CONT_CMD_NOP;\n    requestformat.typel = CONT_CMD_NOP;\n    requestformat.status = CONT_CMD_NOP;\n    requestformat.dummy1 = CONT_CMD_NOP;\n    for (i = 0; i < __osMaxControllers; i++) {\n        *(__OSContRequesFormat *)ptr = requestformat;\n        ptr += sizeof(__OSContRequesFormat);\n    }\n    *ptr = CONT_CMD_END;\n}\n\nvoid __osPfsGetInitData(u8 *pattern, OSContStatus *data) {\n    u8 *ptr;\n    __OSContRequesFormat requestformat;\n    int i;\n    u8 bits;\n    bits = 0;\n    ptr = (u8 *)&__osPfsPifRam;\n    for (i = 0; i < __osMaxControllers; i++, ptr += sizeof(__OSContRequesFormat)) {\n        requestformat = *(__OSContRequesFormat *)ptr;\n        data->errnum = CHNL_ERR(requestformat);\n        if (data->errnum == 0) {\n            data->type = (requestformat.typel << 8) | (requestformat.typeh);\n            data->status = requestformat.status;\n            bits |= 1 << i;\n        }\n        data++;\n    }\n    *pattern = bits;\n}\n"
  },
  {
    "path": "lib/src/osPiGetCmdQueue.c",
    "content": "#include \"libultra_internal.h\"\n#include \"piint.h\"\n\nOSMesgQueue *osPiGetCmdQueue(void) {\n    if (!__osPiDevMgr.active) {\n        return NULL;\n    }\n    return __osPiDevMgr.cmdQueue;\n}\n"
  },
  {
    "path": "lib/src/osPiRawReadIo.c",
    "content": "#include \"libultra_internal.h\"\n#include \"PR/rcp.h\"\n#include \"piint.h\"\n\ns32 osPiRawReadIo(u32 devAddr, u32 *data) {\n    register u32 status;\n\n    WAIT_ON_IO_BUSY(status);\n    *data = IO_READ(osRomBase | devAddr);\n    return 0;\n}\n"
  },
  {
    "path": "lib/src/osPiRawStartDma.c",
    "content": "#include \"libultra_internal.h\"\n#include \"PR/rcp.h\"\n#include \"piint.h\"\n\ns32 osPiRawStartDma(s32 dir, u32 cart_addr, void *dram_addr, size_t size) {\n    register u32 status;\n\n    WAIT_ON_IO_BUSY(status);\n\n    IO_WRITE(PI_DRAM_ADDR_REG, osVirtualToPhysical(dram_addr));\n\n    IO_WRITE(PI_CART_ADDR_REG, K1_TO_PHYS((uintptr_t) osRomBase | cart_addr));\n\n    switch (dir) {\n        case OS_READ:\n            IO_WRITE(PI_WR_LEN_REG, size - 1);\n            break;\n        case OS_WRITE:\n            IO_WRITE(PI_RD_LEN_REG, size - 1);\n            break;\n        default:\n            return -1;\n    }\n    return 0;\n}\n"
  },
  {
    "path": "lib/src/osPiStartDma.c",
    "content": "#include \"libultra_internal.h\"\n#include \"piint.h\"\n\ns32 osPiStartDma(OSIoMesg *mb, s32 priority, s32 direction, uintptr_t devAddr, void *vAddr,\n                 size_t nbytes, OSMesgQueue *mq) {\n    register s32 result;\n    register OSMesgQueue *cmdQueue;\n    if (!__osPiDevMgr.active) {\n        return -1;\n    }\n\n    // TODO: name magic constants\n    if (direction == OS_READ) {\n        mb->hdr.type = 11;\n    } else {\n        mb->hdr.type = 12;\n    }\n\n    mb->hdr.pri = priority;\n    mb->hdr.retQueue = mq;\n    mb->dramAddr = vAddr;\n    mb->devAddr = devAddr;\n    mb->size = nbytes;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    mb->piHandle = NULL;\n#endif\n\n    if (priority == OS_MESG_PRI_HIGH) {\n        cmdQueue = osPiGetCmdQueue();\n        result = osJamMesg(cmdQueue, mb, OS_MESG_NOBLOCK);\n    } else {\n        cmdQueue = osPiGetCmdQueue();\n        result = osSendMesg(cmdQueue, mb, OS_MESG_NOBLOCK);\n    }\n    return result;\n}\n"
  },
  {
    "path": "lib/src/osRecvMesg.c",
    "content": "#include \"libultra_internal.h\"\n\ns32 osRecvMesg(OSMesgQueue *mq, OSMesg *msg, s32 flag) {\n    register u32 int_disabled;\n    int_disabled = __osDisableInt();\n\n    while (!mq->validCount) {\n        if (!flag) {\n            __osRestoreInt(int_disabled);\n            return -1;\n        } else {\n            __osRunningThread->state = OS_STATE_WAITING;\n            __osEnqueueAndYield(&mq->mtqueue);\n        }\n    }\n\n    if (msg != NULL) {\n        *msg = *(mq->first + mq->msg);\n    }\n\n    mq->first = (mq->first + 1) % mq->msgCount;\n    mq->validCount--;\n\n    if (mq->fullqueue->next != NULL) {\n        osStartThread(__osPopThread(&mq->fullqueue));\n    }\n\n    __osRestoreInt(int_disabled);\n    return 0;\n}\n"
  },
  {
    "path": "lib/src/osSendMesg.c",
    "content": "#include \"libultra_internal.h\"\n\ns32 osSendMesg(OSMesgQueue *mq, OSMesg msg, s32 flag) {\n    register u32 int_disabled;\n    register s32 index;\n    int_disabled = __osDisableInt();\n\n    while (MQ_IS_FULL(mq)) {\n        if (flag == OS_MESG_BLOCK) {\n            __osRunningThread->state = 8;\n            __osEnqueueAndYield(&mq->fullqueue);\n        } else {\n            __osRestoreInt(int_disabled);\n            return -1;\n        }\n    }\n\n    index = (mq->first + mq->validCount) % mq->msgCount;\n    mq->msg[index] = msg;\n    mq->validCount++;\n\n    if (mq->mtqueue->next != NULL) {\n        osStartThread(__osPopThread(&mq->mtqueue));\n    }\n\n    __osRestoreInt(int_disabled);\n    return 0;\n}\n"
  },
  {
    "path": "lib/src/osSetEventMesg.c",
    "content": "#include \"libultra_internal.h\"\n#include \"osint.h\"\n\n__OSEventState __osEventStateTab[OS_NUM_EVENTS];\n\n#ifdef VERSION_CN\nu32 __osPreNMI = 0;\n#endif\n\nvoid osSetEventMesg(OSEvent e, OSMesgQueue *mq, OSMesg msg) {\n    register u32 int_disabled;\n    __OSEventState *msgs;\n    int_disabled = __osDisableInt();\n\n    msgs = __osEventStateTab + e;\n    msgs->messageQueue = mq;\n    msgs->message = msg;\n\n#ifdef VERSION_CN\n    if (e == OS_EVENT_PRENMI) {\n        if (__osShutdown && !__osPreNMI) {\n            osSendMesg(mq, msg, OS_MESG_NOBLOCK);\n        }\n\n        __osPreNMI = TRUE;\n    }\n#endif\n\n    __osRestoreInt(int_disabled);\n}\n"
  },
  {
    "path": "lib/src/osSetThreadPri.c",
    "content": "#include \"libultra_internal.h\"\n\nvoid osSetThreadPri(OSThread *thread, OSPri pri) {\n    register u32 int_disabled = __osDisableInt();\n    if (thread == NULL) {\n        thread = __osRunningThread;\n    }\n\n    if (thread->priority != pri) {\n        thread->priority = pri;\n        if (thread != __osRunningThread) {\n            if (thread->state != OS_STATE_STOPPED) {\n                __osDequeueThread(thread->queue, thread);\n                __osEnqueueThread(thread->queue, thread);\n            }\n        }\n        if (__osRunningThread->priority < __osRunQueue->priority) {\n            __osRunningThread->state = OS_STATE_RUNNABLE;\n            __osEnqueueAndYield(&__osRunQueue);\n        }\n    }\n\n    __osRestoreInt(int_disabled);\n}\n"
  },
  {
    "path": "lib/src/osSetTime.c",
    "content": "#include \"libultra_internal.h\"\n\nextern OSTime __osCurrentTime;\n\nvoid osSetTime(OSTime time) {\n    __osCurrentTime = time;\n}\n"
  },
  {
    "path": "lib/src/osSetTimer.c",
    "content": "#include \"libultra_internal.h\"\n#include \"osint.h\"\n\n#pragma GCC diagnostic ignored \"-Wunused-but-set-variable\"\n\nu32 osSetTimer(OSTimer *timer, OSTime countdown, OSTime interval, OSMesgQueue *mq, OSMesg msg) {\n    OSTime time;\n#ifdef VERSION_CN\n    OSTimer *next;\n    u32 count;\n    u32 remaining;\n    u32 prevInt;\n#endif\n\n    timer->next = NULL;\n    timer->prev = NULL;\n    timer->interval = interval;\n    timer->remaining = countdown != 0 ? countdown : interval;\n    timer->mq = mq;\n    timer->msg = msg;\n\n#ifdef VERSION_CN\n    prevInt = __osDisableInt();\n    if (__osTimerList->next == __osTimerList) {\n    } else {\n        next = __osTimerList->next;\n        count = osGetCount();\n        remaining = count - __osTimerCounter;\n\n        if (remaining < next->remaining) {\n            next->remaining -= remaining;\n        } else {\n            next->remaining = 1;\n        }\n    }\n\n    time = __osInsertTimer(timer);\n    __osSetTimerIntr(__osTimerList->next->remaining);\n\n    __osRestoreInt(prevInt);\n#else\n    time = __osInsertTimer(timer);\n    if (__osTimerList->next == timer) {\n        __osSetTimerIntr(time);\n    }\n#endif\n\n    return 0;\n}\n"
  },
  {
    "path": "lib/src/osSpTaskLoadGo.c",
    "content": "#include \"libultra_internal.h\"\n#include \"PR/rcp.h\"\n#include <macros.h>\n\n#define _osVirtualToPhysical(ptr)                                                                      \\\n    if (ptr != NULL) {                                                                                 \\\n        ptr = (void *) osVirtualToPhysical(ptr);                                                       \\\n    }\n\nFORCE_BSS OSTask tmpTask;\n\nOSTask *_VirtualToPhysicalTask(OSTask *task) {\n    OSTask *physicalTask;\n    physicalTask = &tmpTask;\n    bcopy(task, physicalTask, sizeof(OSTask));\n    _osVirtualToPhysical(physicalTask->t.ucode);\n    _osVirtualToPhysical(physicalTask->t.ucode_data);\n    _osVirtualToPhysical(physicalTask->t.dram_stack);\n    _osVirtualToPhysical(physicalTask->t.output_buff);\n    _osVirtualToPhysical(physicalTask->t.output_buff_size);\n    _osVirtualToPhysical(physicalTask->t.data_ptr);\n    _osVirtualToPhysical(physicalTask->t.yield_data_ptr);\n    return physicalTask;\n}\n\nvoid osSpTaskLoad(OSTask *task) {\n    OSTask *physicalTask;\n    physicalTask = _VirtualToPhysicalTask(task);\n    if (physicalTask->t.flags & M_TASK_FLAG0) {\n        physicalTask->t.ucode_data = physicalTask->t.yield_data_ptr;\n        physicalTask->t.ucode_data_size = physicalTask->t.yield_data_size;\n        task->t.flags &= ~M_TASK_FLAG0;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        if (physicalTask->t.flags & M_TASK_FLAG2) {\n            physicalTask->t.ucode = (u64 *) IO_READ((uintptr_t)task->t.yield_data_ptr + 0xBFC);\n        }\n#endif\n    }\n    osWritebackDCache(physicalTask, sizeof(OSTask));\n    __osSpSetStatus(SPSTATUS_CLEAR_SIGNAL0 | SPSTATUS_CLEAR_SIGNAL1 | SPSTATUS_CLEAR_SIGNAL2\n                    | SPSTATUS_SET_INTR_ON_BREAK);\n    while (__osSpSetPc((void *) SP_IMEM_START) == -1) {\n        ;\n    }\n    while (__osSpRawStartDma(1, (void *) (SP_IMEM_START - sizeof(*physicalTask)), physicalTask,\n                             sizeof(OSTask))\n           == -1) {\n        ;\n    }\n    while (__osSpDeviceBusy()) {\n        ;\n    }\n    while (__osSpRawStartDma(1, (void *) SP_IMEM_START, physicalTask->t.ucode_boot,\n                             physicalTask->t.ucode_boot_size)\n           == -1) {\n        ;\n    }\n}\n\nvoid osSpTaskStartGo(UNUSED OSTask *task) {\n    while (__osSpDeviceBusy()) {\n        ;\n    }\n    __osSpSetStatus(SPSTATUS_SET_INTR_ON_BREAK | SPSTATUS_CLEAR_SSTEP | SPSTATUS_CLEAR_BROKE\n                    | SPSTATUS_CLEAR_HALT);\n}\n"
  },
  {
    "path": "lib/src/osSpTaskYield.c",
    "content": "#include \"libultra_internal.h\"\n\nvoid osSpTaskYield(void) {\n    __osSpSetStatus(SPSTATUS_SET_SIGNAL0);\n}\n"
  },
  {
    "path": "lib/src/osSpTaskYielded.c",
    "content": "#include \"libultra_internal.h\"\n\nOSYieldResult osSpTaskYielded(OSTask *task) {\n    s32 status;\n    u32 int_disabledult;\n    status = __osSpGetStatus();\n    int_disabledult = (status & SPSTATUS_SIGNAL1_SET) != 0 ? 1 : 0;\n    if (status & SPSTATUS_SIGNAL0_SET) {\n        task->t.flags |= int_disabledult;\n        task->t.flags &= ~(M_TASK_FLAG1);\n    }\n    return int_disabledult;\n}\n"
  },
  {
    "path": "lib/src/osStartThread.c",
    "content": "#include \"libultra_internal.h\"\n\nvoid osStartThread(OSThread *thread) {\n    register u32 int_disabled;\n    int_disabled = __osDisableInt();\n\n    switch (thread->state) {\n        case OS_STATE_WAITING:\n            thread->state = OS_STATE_RUNNABLE;\n            __osEnqueueThread(&__osRunQueue, thread);\n            break;\n        case OS_STATE_STOPPED:\n            if (thread->queue == NULL || thread->queue == &__osRunQueue) {\n                thread->state = OS_STATE_RUNNABLE;\n\n                __osEnqueueThread(&__osRunQueue, thread);\n            } else {\n                thread->state = OS_STATE_WAITING;\n                __osEnqueueThread(thread->queue, thread);\n                __osEnqueueThread(&__osRunQueue, __osPopThread(thread->queue));\n            }\n            break;\n    }\n\n    if (__osRunningThread == NULL) {\n        __osDispatchThread();\n    } else {\n        if (__osRunningThread->priority < __osRunQueue->priority) {\n            __osRunningThread->state = OS_STATE_RUNNABLE;\n            __osEnqueueAndYield(&__osRunQueue);\n        }\n    }\n\n    __osRestoreInt(int_disabled);\n}\n"
  },
  {
    "path": "lib/src/osSyncPrintf.c",
    "content": "#include \"macros.h\"\n\n#ifdef VERSION_CN\n\n// ?\nvoid func_cn_80304B30(void) {}\n\nvoid osSyncPrintf(UNUSED const char *fmt, ...) {}\nvoid osAsyncPrintf(UNUSED const char *fmt, ...) {}\n\n#endif\n"
  },
  {
    "path": "lib/src/osTimer.c",
    "content": "#include \"libultra_internal.h\"\n\nOSTimer __osBaseTimer;\nOSTimer *__osTimerList = &__osBaseTimer;\nOSTime __osCurrentTime;\nu32 __osBaseCounter;\nu32 __osViIntrCount;\nu32 __osTimerCounter;\n\nvoid __osTimerServicesInit(void) {\n    __osCurrentTime = 0;\n    __osBaseCounter = 0;\n    __osViIntrCount = 0;\n    __osTimerList->next = __osTimerList->prev = __osTimerList;\n    __osTimerList->interval = __osTimerList->remaining = 0;\n    __osTimerList->mq = NULL;\n    __osTimerList->msg = NULL;\n}\n\nvoid __osTimerInterrupt(void) {\n    OSTimer *t;\n    u32 count;\n    u32 elapsedCycles;\n\n    if (__osTimerList->next == __osTimerList) {\n        return;\n    }\n\n    for (;;) {\n        t = __osTimerList->next;\n        if (t == __osTimerList) {\n            __osSetCompare(0);\n            __osTimerCounter = 0;\n            break;\n        }\n        count = osGetCount();\n        elapsedCycles = count - __osTimerCounter;\n        __osTimerCounter = count;\n        if (elapsedCycles < t->remaining) {\n            t->remaining -= elapsedCycles;\n            __osSetTimerIntr(t->remaining);\n            break;\n        }\n        t->prev->next = t->next;\n        t->next->prev = t->prev;\n        t->next = NULL;\n        t->prev = NULL;\n        if (t->mq != NULL) {\n            osSendMesg(t->mq, t->msg, OS_MESG_NOBLOCK);\n        }\n        if (t->interval != 0) {\n            t->remaining = t->interval;\n            __osInsertTimer(t);\n        }\n    }\n}\n\nvoid __osSetTimerIntr(OSTime time) {\n    OSTime newTime;\n    s32 savedMask;\n#ifdef VERSION_CN\n    if (time < 468) {\n        time = 468;\n    }\n#endif\n    savedMask = __osDisableInt();\n    __osTimerCounter = osGetCount();\n    newTime = __osTimerCounter + time;\n    __osSetCompare(newTime);\n    __osRestoreInt(savedMask);\n}\n\nOSTime __osInsertTimer(OSTimer *t) {\n    OSTimer *timep;\n    OSTime time;\n    s32 savedMask;\n\n    savedMask = __osDisableInt();\n    for (timep = __osTimerList->next, time = t->remaining; timep != __osTimerList && time > timep->remaining;\n         time -= timep->remaining, timep = timep->next) {\n        ;\n    }\n    t->remaining = time;\n    if (timep != __osTimerList) {\n        timep->remaining -= time;\n    }\n    t->next = timep;\n    t->prev = timep->prev;\n    timep->prev->next = t;\n    timep->prev = t;\n    __osRestoreInt(savedMask);\n    return time;\n}\n"
  },
  {
    "path": "lib/src/osViBlack.c",
    "content": "#include \"libultra_internal.h\"\n\nextern OSViContext *__osViNext;\n\n// TODO: name magic constants\nvoid osViBlack(u8 active) {\n    register u32 int_disabled = __osDisableInt();\n    if (active) {\n        __osViNext->unk00 |= 0x20;\n    } else {\n        __osViNext->unk00 &= ~0x20;\n    }\n    __osRestoreInt(int_disabled);\n}\n"
  },
  {
    "path": "lib/src/osViData.c",
    "content": "#include \"libultra_internal.h\"\n\n#ifdef VERSION_CN\n\nOSViMode osViModeNtscLan1 = {\n    /*type*/ 2,\n    /*comRegs*/\n    { /*ctrl*/ 4382,\n      /*width*/ 320,\n      /*burst*/ 65348153,\n      /*vSync*/ 525,\n      /*hSync*/ 3093,\n      /*leap*/ 202705941,\n      /*hStart*/ 7078636,\n      /*xScale*/ 512,\n      /*vCurrent*/ 0 },\n    /*fldRegs*/\n    { { /*origin*/ 640,\n        /*yScale*/ 1024,\n        /*vStart*/ 2425343,\n        /*vBurst*/ 918020,\n        /*vIntr*/ 2 },\n      { /*origin*/ 640,\n        /*yScale*/ 1024,\n        /*vStart*/ 2425343,\n        /*vBurst*/ 918020,\n        /*vIntr*/ 2 } }\n};\n\nOSViMode osViModePalLan1 = {\n    /*type*/ 16,\n    /*comRegs*/\n    { /*ctrl*/ 4382,\n      /*width*/ 320,\n      /*burst*/ 72621626,\n      /*vSync*/ 625,\n      /*hSync*/ 1510505,\n      /*leap*/ 208604269,\n      /*hStart*/ 8389376,\n      /*xScale*/ 512,\n      /*vCurrent*/ 0 },\n    /*fldRegs*/\n    { { /*origin*/ 640,\n        /*yScale*/ 1024,\n        /*vStart*/ 6226489,\n        /*vBurst*/ 590443,\n        /*vIntr*/ 2 },\n      { /*origin*/ 640,\n        /*yScale*/ 1024,\n        /*vStart*/ 6226489,\n        /*vBurst*/ 590443,\n        /*vIntr*/ 2 } }\n};\n\nOSViMode osViModeMpalLan1 = {\n    /*type*/ 30,\n    /*comRegs*/\n    { /*ctrl*/ 4382,\n      /*width*/ 320,\n      /*burst*/ 73735737,\n      /*vSync*/ 525,\n      /*hSync*/ 265233,\n      /*leap*/ 202968090,\n      /*hStart*/ 7078636,\n      /*xScale*/ 512,\n      /*vCurrent*/ 0 },\n    /*fldRegs*/\n    { { /*origin*/ 640,\n        /*yScale*/ 1024,\n        /*vStart*/ 2425343,\n        /*vBurst*/ 918020,\n        /*vIntr*/ 2 },\n      { /*origin*/ 640,\n        /*yScale*/ 1024,\n        /*vStart*/ 2425343,\n        /*vBurst*/ 918020,\n        /*vIntr*/ 2 } }\n};\n\n#elif defined(VERSION_EU) || defined(VERSION_SH)\n\nOSViMode osViModePalLan1 = {\n    /*type*/ 16,\n    /*comRegs*/\n    { /*ctrl*/ 12574,\n      /*width*/ 320,\n#ifdef VERSION_EU\n      /*burst*/ 67380026,\n#else\n      /*burst*/ 72621626,\n#endif\n      /*vSync*/ 625,\n#ifdef VERSION_EU\n      /*hSync*/ 1379433,\n      /*leap*/ 208604270,\n#else\n      /*hSync*/ 1510505,\n      /*leap*/ 208604269,\n#endif\n      /*hStart*/ 8389376,\n      /*xScale*/ 512,\n      /*vCurrent*/ 0 },\n    /*fldRegs*/\n    { { /*origin*/ 640,\n        /*yScale*/ 1024,\n        /*vStart*/ 6226489,\n        /*vBurst*/ 590443,\n        /*vIntr*/ 2 },\n      { /*origin*/ 640,\n        /*yScale*/ 1024,\n        /*vStart*/ 6226489,\n        /*vBurst*/ 590443,\n        /*vIntr*/ 2 } }\n};\n\nOSViMode osViModeMpalLan1 = {\n    /*type*/ 30, //osViModePalLan1\n    /*comRegs*/\n    { /*ctrl*/ 12574,\n      /*width*/ 320,\n      /*burst*/ 73735737,\n      /*vSync*/ 525,\n      /*hSync*/ 265233,\n      /*leap*/ 202968090,\n      /*hStart*/ 7078636,\n      /*xScale*/ 512,\n      /*vCurrent*/ 0 },\n    /*fldRegs*/\n    { { /*origin*/ 640,\n        /*yScale*/ 1024,\n        /*vStart*/ 2425343,\n        /*vBurst*/ 918020,\n        /*vIntr*/ 2 },\n      { /*origin*/ 640,\n        /*yScale*/ 1024,\n        /*vStart*/ 2425343,\n        /*vBurst*/ 918020,\n        /*vIntr*/ 2 } }\n};\n\nOSViMode osViModeNtscLan1 = {\n    /*type*/ 2,\n    /*comRegs*/\n    { /*ctrl*/ 12574,\n      /*width*/ 320,\n      /*burst*/ 65348153,\n      /*vSync*/ 525,\n      /*hSync*/ 3093,\n      /*leap*/ 202705941,\n      /*hStart*/ 7078636,\n      /*xScale*/ 512,\n      /*vCurrent*/ 0 },\n    /*fldRegs*/\n    { { /*origin*/ 640,\n        /*yScale*/ 1024,\n        /*vStart*/ 2425343,\n        /*vBurst*/ 918020,\n        /*vIntr*/ 2 },\n      { /*origin*/ 640,\n        /*yScale*/ 1024,\n        /*vStart*/ 2425343,\n        /*vBurst*/ 918020,\n        /*vIntr*/ 2 } }\n};\n\n#else\n\nOSViMode osViModePalLan1 = {\n    /*type*/ 2,\n    /*comRegs*/\n    { /*ctrl*/ 12574,\n      /*width*/ 320,\n      /*burst*/ 65348153,\n      /*vSync*/ 525,\n      /*hSync*/ 3093,\n      /*leap*/ 202705941,\n      /*hStart*/ 7078636,\n      /*xScale*/ 512,\n      /*vCurrent*/ 0 },\n    /*fldRegs*/\n    { { /*origin*/ 640,\n        /*yScale*/ 1024,\n        /*vStart*/ 2425343,\n        /*vBurst*/ 918020,\n        /*vIntr*/ 2 },\n      { /*origin*/ 640,\n        /*yScale*/ 1024,\n        /*vStart*/ 2425343,\n        /*vBurst*/ 918020,\n        /*vIntr*/ 2 } }\n};\n\nOSViMode osViModeMpalLan1 = {\n    /*type*/ 16,\n    /*comRegs*/\n    { /*ctrl*/ 12574,\n      /*width*/ 320,\n      /*burst*/ 67380026,\n      /*vSync*/ 625,\n      /*hSync*/ 1379433,\n      /*leap*/ 208604270,\n      /*hStart*/ 8389376,\n      /*xScale*/ 512,\n      /*vCurrent*/ 0 },\n    /*fldRegs*/\n    { { /*origin*/ 640,\n        /*yScale*/ 1024,\n        /*vStart*/ 6226489,\n        /*vBurst*/ 590443,\n        /*vIntr*/ 2 },\n      { /*origin*/ 640,\n        /*yScale*/ 1024,\n        /*vStart*/ 6226489,\n        /*vBurst*/ 590443,\n        /*vIntr*/ 2 } }\n};\n#endif\n"
  },
  {
    "path": "lib/src/osViSetEvent.c",
    "content": "#include \"libultra_internal.h\"\n\nextern OSViContext *__osViNext;\n\nvoid osViSetEvent(OSMesgQueue *mq, OSMesg msg, u32 retraceCount) {\n    register u32 int_disabled = __osDisableInt();\n    (__osViNext)->mq = mq;\n    (__osViNext)->msg = msg;\n    (__osViNext)->retraceCount = retraceCount;\n    __osRestoreInt(int_disabled);\n}\n"
  },
  {
    "path": "lib/src/osViSetMode.c",
    "content": "#include \"libultra_internal.h\"\n\nextern u32 __osBbIsBb;\n\nextern OSViContext *__osViNext;\n\nvoid osViSetMode(OSViMode *mode) {\n    register u32 int_disabled = __osDisableInt();\n#ifdef VERSION_CN\n    if (__osBbIsBb != 0) {\n        mode->comRegs.ctrl &= ~0x2000;\n    }\n#endif\n    __osViNext->modep = mode;\n    __osViNext->unk00 = 1;\n    __osViNext->features = __osViNext->modep->comRegs.ctrl;\n    __osRestoreInt(int_disabled);\n}\n"
  },
  {
    "path": "lib/src/osViSetSpecialFeatures.c",
    "content": "#include \"libultra_internal.h\"\n\nextern OSViContext *__osViNext;\n\nvoid osViSetSpecialFeatures(u32 func) {\n    register u32 int_disabled = __osDisableInt();\n    if (func & OS_VI_GAMMA_ON) {\n        __osViNext->features |= OS_VI_GAMMA;\n    }\n    if (func & OS_VI_GAMMA_OFF) {\n        __osViNext->features &= ~OS_VI_GAMMA;\n    }\n    if (func & OS_VI_GAMMA_DITHER_ON) {\n        __osViNext->features |= OS_VI_GAMMA_DITHER;\n    }\n    if (func & OS_VI_GAMMA_DITHER_OFF) {\n        __osViNext->features &= ~OS_VI_GAMMA_DITHER;\n    }\n    if (func & OS_VI_DIVOT_ON) {\n        __osViNext->features |= OS_VI_DIVOT;\n    }\n    if (func & OS_VI_DIVOT_OFF) {\n        __osViNext->features &= ~OS_VI_DIVOT;\n    }\n    if (func & OS_VI_DITHER_FILTER_ON) {\n        __osViNext->features |= OS_VI_DITHER_FILTER;\n        __osViNext->features &= ~(OS_VI_UNK200 | OS_VI_UNK100);\n    }\n    if (func & OS_VI_DITHER_FILTER_OFF) {\n        __osViNext->features &= ~OS_VI_DITHER_FILTER;\n        __osViNext->features |= __osViNext->modep->comRegs.ctrl & (OS_VI_UNK200 | OS_VI_UNK100);\n    }\n    __osViNext->unk00 |= 8;\n    __osRestoreInt(int_disabled);\n}\n"
  },
  {
    "path": "lib/src/osViSwapBuffer.c",
    "content": "#include \"libultra_internal.h\"\n\nextern OSViContext *__osViNext;\n\nvoid osViSwapBuffer(void *vaddr) {\n    u32 int_disabled = __osDisableInt();\n    __osViNext->buffer = vaddr;\n    __osViNext->unk00 |= 0x10; // TODO: figure out what this flag means\n    __osRestoreInt(int_disabled);\n}\n"
  },
  {
    "path": "lib/src/osViTable.c",
    "content": "#include \"libultra_internal.h\"\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n#define COMMON_BURST 72621626\n#define COMMON_HSYNC 1510505\n#define COMMON_LEAP 208604269\n#else\n#define COMMON_BURST 67380026\n#define COMMON_HSYNC 1379433\n#define COMMON_LEAP 208604270\n#endif\n\n#ifdef VERSION_CN\n#define CN_SUB 8192\n#else\n#define CN_SUB 0\n#endif\n\nOSViMode osViModeTable[] = {\n    /*osViModeNtscLpn1*/\n    { /*type*/ 0,\n      /*comRegs*/\n      { /*ctrl*/ 12814 - CN_SUB,\n        /*width*/ 320,\n        /*burst*/ 65348153,\n        /*vSync*/ 525,\n        /*hSync*/ 3093,\n        /*leap*/ 202705941,\n        /*hStart*/ 7078636,\n        /*xScale*/ 512,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 640,\n          /*yScale*/ 1024,\n          /*vStart*/ 2425343,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 },\n        { /*origin*/ 640,\n          /*yScale*/ 1024,\n          /*vStart*/ 2425343,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 } } },\n    /*osViModeNtscLpf1*/\n    { /*type*/ 1,\n      /*comRegs*/\n      { /*ctrl*/ 12878 - CN_SUB,\n        /*width*/ 320,\n        /*burst*/ 65348153,\n        /*vSync*/ 524,\n        /*hSync*/ 3093,\n        /*leap*/ 202705941,\n        /*hStart*/ 7078636,\n        /*xScale*/ 512,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 640,\n          /*yScale*/ 16778240,\n          /*vStart*/ 2294269,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 },\n        { /*origin*/ 640,\n          /*yScale*/ 50332672,\n          /*vStart*/ 2425343,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 } } },\n    /*osViModeNtscLan1*/\n    { /*type*/ 2,\n      /*comRegs*/\n      { /*ctrl*/ 12574 - CN_SUB,\n        /*width*/ 320,\n        /*burst*/ 65348153,\n        /*vSync*/ 525,\n        /*hSync*/ 3093,\n        /*leap*/ 202705941,\n        /*hStart*/ 7078636,\n        /*xScale*/ 512,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 640,\n          /*yScale*/ 1024,\n          /*vStart*/ 2425343,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 },\n        { /*origin*/ 640,\n          /*yScale*/ 1024,\n          /*vStart*/ 2425343,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 } } },\n    /*osViModeNtscLaf1*/\n    { /*type*/ 3,\n      /*comRegs*/\n      { /*ctrl*/ 12382 - CN_SUB,\n        /*width*/ 320,\n        /*burst*/ 65348153,\n        /*vSync*/ 524,\n        /*hSync*/ 3093,\n        /*leap*/ 202705941,\n        /*hStart*/ 7078636,\n        /*xScale*/ 512,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 640,\n          /*yScale*/ 16778240,\n          /*vStart*/ 2294269,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 },\n        { /*origin*/ 640,\n          /*yScale*/ 50332672,\n          /*vStart*/ 2425343,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 } } },\n    /*osViModeNtscLpn2*/\n    { /*type*/ 4,\n      /*comRegs*/\n      { /*ctrl*/ 13071 - CN_SUB,\n        /*width*/ 320,\n        /*burst*/ 65348153,\n        /*vSync*/ 525,\n        /*hSync*/ 3093,\n        /*leap*/ 202705941,\n        /*hStart*/ 7078636,\n        /*xScale*/ 512,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 1280,\n          /*yScale*/ 1024,\n          /*vStart*/ 2425343,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 },\n        { /*origin*/ 1280,\n          /*yScale*/ 1024,\n          /*vStart*/ 2425343,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 } } },\n    /*osViModeNtscLpf2*/\n    { /*type*/ 5,\n      /*comRegs*/\n      { /*ctrl*/ 12879 - CN_SUB,\n        /*width*/ 320,\n        /*burst*/ 65348153,\n        /*vSync*/ 524,\n        /*hSync*/ 3093,\n        /*leap*/ 202705941,\n        /*hStart*/ 7078636,\n        /*xScale*/ 512,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 1280,\n          /*yScale*/ 16778240,\n          /*vStart*/ 2294269,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 },\n        { /*origin*/ 1280,\n          /*yScale*/ 50332672,\n          /*vStart*/ 2425343,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 } } },\n    /*osViModeNtscLan2*/\n    { /*type*/ 6,\n      /*comRegs*/\n      { /*ctrl*/ 12319 - CN_SUB,\n        /*width*/ 320,\n        /*burst*/ 65348153,\n        /*vSync*/ 525,\n        /*hSync*/ 3093,\n        /*leap*/ 202705941,\n        /*hStart*/ 7078636,\n        /*xScale*/ 512,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 1280,\n          /*yScale*/ 1024,\n          /*vStart*/ 2425343,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 },\n        { /*origin*/ 1280,\n          /*yScale*/ 1024,\n          /*vStart*/ 2425343,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 } } },\n    /*osViModeNtscLaf2*/\n    { /*type*/ 7,\n      /*comRegs*/\n      { /*ctrl*/ 12383 - CN_SUB,\n        /*width*/ 320,\n        /*burst*/ 65348153,\n        /*vSync*/ 524,\n        /*hSync*/ 3093,\n        /*leap*/ 202705941,\n        /*hStart*/ 7078636,\n        /*xScale*/ 512,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 1280,\n          /*yScale*/ 16778240,\n          /*vStart*/ 2294269,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 },\n        { /*origin*/ 1280,\n          /*yScale*/ 50332672,\n          /*vStart*/ 2425343,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 } } },\n    /*osViModeNtscHpn1*/\n    { /*type*/ 8,\n      /*comRegs*/\n      { /*ctrl*/ 12878 - CN_SUB,\n        /*width*/ 1280,\n        /*burst*/ 65348153,\n        /*vSync*/ 524,\n        /*hSync*/ 3093,\n        /*leap*/ 202705941,\n        /*hStart*/ 7078636,\n        /*xScale*/ 1024,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 1280,\n          /*yScale*/ 1024,\n          /*vStart*/ 2294269,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 },\n        { /*origin*/ 2560,\n          /*yScale*/ 1024,\n          /*vStart*/ 2425343,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 } } },\n    /*osViModeNtscHpf1*/\n    { /*type*/ 9,\n      /*comRegs*/\n      { /*ctrl*/ 12878 - CN_SUB,\n        /*width*/ 640,\n        /*burst*/ 65348153,\n        /*vSync*/ 524,\n        /*hSync*/ 3093,\n        /*leap*/ 202705941,\n        /*hStart*/ 7078636,\n        /*xScale*/ 1024,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 1280,\n          /*yScale*/ 33556480,\n          /*vStart*/ 2294269,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 },\n        { /*origin*/ 2560,\n          /*yScale*/ 33556480,\n          /*vStart*/ 2425343,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 } } },\n    /*osViModeNtscHan1*/\n    { /*type*/ 10,\n      /*comRegs*/\n      { /*ctrl*/ 12382 - CN_SUB,\n        /*width*/ 1280,\n        /*burst*/ 65348153,\n        /*vSync*/ 524,\n        /*hSync*/ 3093,\n        /*leap*/ 202705941,\n        /*hStart*/ 7078636,\n        /*xScale*/ 1024,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 1280,\n          /*yScale*/ 1024,\n          /*vStart*/ 2294269,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 },\n        { /*origin*/ 2560,\n          /*yScale*/ 1024,\n          /*vStart*/ 2425343,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 } } },\n    /*osViModeNtscHaf1*/\n    { /*type*/ 11,\n      /*comRegs*/\n      { /*ctrl*/ 12382 - CN_SUB,\n        /*width*/ 640,\n        /*burst*/ 65348153,\n        /*vSync*/ 524,\n        /*hSync*/ 3093,\n        /*leap*/ 202705941,\n        /*hStart*/ 7078636,\n        /*xScale*/ 1024,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 1280,\n          /*yScale*/ 33556480,\n          /*vStart*/ 2294269,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 },\n        { /*origin*/ 2560,\n          /*yScale*/ 33556480,\n          /*vStart*/ 2425343,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 } } },\n    /*osViModeNtscHpn2*/\n    { /*type*/ 12,\n      /*comRegs*/\n      { /*ctrl*/ 13135 - CN_SUB,\n        /*width*/ 1280,\n        /*burst*/ 65348153,\n        /*vSync*/ 524,\n        /*hSync*/ 3093,\n        /*leap*/ 202705941,\n        /*hStart*/ 7078636,\n        /*xScale*/ 1024,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 2560,\n          /*yScale*/ 1024,\n          /*vStart*/ 2294269,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 },\n        { /*origin*/ 5120,\n          /*yScale*/ 1024,\n          /*vStart*/ 2425343,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 } } },\n    /*osViModeNtscHpf2*/\n    { /*type*/ 13,\n      /*comRegs*/\n      { /*ctrl*/ 12879 - CN_SUB,\n        /*width*/ 640,\n        /*burst*/ 65348153,\n        /*vSync*/ 524,\n        /*hSync*/ 3093,\n        /*leap*/ 202705941,\n        /*hStart*/ 7078636,\n        /*xScale*/ 1024,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 2560,\n          /*yScale*/ 33556480,\n          /*vStart*/ 2294269,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 },\n        { /*origin*/ 5120,\n          /*yScale*/ 33556480,\n          /*vStart*/ 2425343,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 } } },\n\n#ifndef VERSION_US\n    /*osViModePalLpn1*/\n    { /*type*/ 14,\n      /*comRegs*/\n      { /*ctrl*/ 12814 - CN_SUB,\n        /*width*/ 320,\n        /*burst*/ COMMON_BURST,\n        /*vSync*/ 625,\n        /*hSync*/ COMMON_HSYNC,\n        /*leap*/ COMMON_LEAP,\n        /*hStart*/ 8389376,\n        /*xScale*/ 512,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 640,\n          /*yScale*/ 1024,\n          /*vStart*/ 6226489,\n          /*vBurst*/ 590443,\n          /*vIntr*/ 2 },\n        { /*origin*/ 640,\n          /*yScale*/ 1024,\n          /*vStart*/ 6226489,\n          /*vBurst*/ 590443,\n          /*vIntr*/ 2 } } },\n    /*osViModePalLpf1*/\n    { /*type*/ 15,\n      /*comRegs*/\n      { /*ctrl*/ 12878 - CN_SUB,\n        /*width*/ 320,\n        /*burst*/ COMMON_BURST,\n        /*vSync*/ 624,\n        /*hSync*/ COMMON_HSYNC,\n        /*leap*/ COMMON_LEAP,\n        /*hStart*/ 8389376,\n        /*xScale*/ 512,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 640,\n          /*yScale*/ 16778240,\n          /*vStart*/ 6095415,\n          /*vBurst*/ 590443,\n          /*vIntr*/ 2 },\n        { /*origin*/ 640,\n          /*yScale*/ 50332672,\n          /*vStart*/ 6226489,\n          /*vBurst*/ 852585,\n          /*vIntr*/ 2 } } },\n    /*osViModePalLan1*/\n    { /*type*/ 16,\n      /*comRegs*/\n      { /*ctrl*/ 12574 - CN_SUB,\n        /*width*/ 320,\n        /*burst*/ COMMON_BURST,\n        /*vSync*/ 625,\n        /*hSync*/ COMMON_HSYNC,\n        /*leap*/ COMMON_LEAP,\n        /*hStart*/ 8389376,\n        /*xScale*/ 512,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 640,\n          /*yScale*/ 1024,\n          /*vStart*/ 6226489,\n          /*vBurst*/ 590443,\n          /*vIntr*/ 2 },\n        { /*origin*/ 640,\n          /*yScale*/ 1024,\n          /*vStart*/ 6226489,\n          /*vBurst*/ 590443,\n          /*vIntr*/ 2 } } },\n    /*osViModePalLaf1*/\n    { /*type*/ 17,\n      /*comRegs*/\n      { /*ctrl*/ 12382 - CN_SUB,\n        /*width*/ 320,\n        /*burst*/ COMMON_BURST,\n        /*vSync*/ 624,\n        /*hSync*/ COMMON_HSYNC,\n        /*leap*/ COMMON_LEAP,\n        /*hStart*/ 8389376,\n        /*xScale*/ 512,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 640,\n          /*yScale*/ 16778240,\n          /*vStart*/ 6095415,\n          /*vBurst*/ 590443,\n          /*vIntr*/ 2 },\n        { /*origin*/ 640,\n          /*yScale*/ 50332672,\n          /*vStart*/ 6226489,\n          /*vBurst*/ 852585,\n          /*vIntr*/ 2 } } },\n    /*osViModePalLpn2*/\n    { /*type*/ 18,\n      /*comRegs*/\n      { /*ctrl*/ 13071 - CN_SUB,\n        /*width*/ 320,\n        /*burst*/ COMMON_BURST,\n        /*vSync*/ 625,\n        /*hSync*/ COMMON_HSYNC,\n        /*leap*/ COMMON_LEAP,\n        /*hStart*/ 8389376,\n        /*xScale*/ 512,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 1280,\n          /*yScale*/ 1024,\n          /*vStart*/ 6226489,\n          /*vBurst*/ 590443,\n          /*vIntr*/ 2 },\n        { /*origin*/ 1280,\n          /*yScale*/ 1024,\n          /*vStart*/ 6226489,\n          /*vBurst*/ 590443,\n          /*vIntr*/ 2 } } },\n    /*osViModePalLpf2*/\n    { /*type*/ 19,\n      /*comRegs*/\n      { /*ctrl*/ 12879 - CN_SUB,\n        /*width*/ 320,\n        /*burst*/ COMMON_BURST,\n        /*vSync*/ 624,\n        /*hSync*/ COMMON_HSYNC,\n        /*leap*/ COMMON_LEAP,\n        /*hStart*/ 8389376,\n        /*xScale*/ 512,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 1280,\n          /*yScale*/ 16778240,\n          /*vStart*/ 6095415,\n          /*vBurst*/ 590443,\n          /*vIntr*/ 2 },\n        { /*origin*/ 1280,\n          /*yScale*/ 50332672,\n          /*vStart*/ 6226489,\n          /*vBurst*/ 852585,\n          /*vIntr*/ 2 } } },\n    /*osViModePalLan2*/\n    { /*type*/ 20,\n      /*comRegs*/\n      { /*ctrl*/ 12319 - CN_SUB,\n        /*width*/ 320,\n        /*burst*/ COMMON_BURST,\n        /*vSync*/ 625,\n        /*hSync*/ COMMON_HSYNC,\n        /*leap*/ COMMON_LEAP,\n        /*hStart*/ 8389376,\n        /*xScale*/ 512,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 1280,\n          /*yScale*/ 1024,\n          /*vStart*/ 6226489,\n          /*vBurst*/ 590443,\n          /*vIntr*/ 2 },\n        { /*origin*/ 1280,\n          /*yScale*/ 1024,\n          /*vStart*/ 6226489,\n          /*vBurst*/ 590443,\n          /*vIntr*/ 2 } } },\n    /*osViModePalLaf2*/\n    { /*type*/ 21,\n      /*comRegs*/\n      { /*ctrl*/ 12383 - CN_SUB,\n        /*width*/ 320,\n        /*burst*/ COMMON_BURST,\n        /*vSync*/ 624,\n        /*hSync*/ COMMON_HSYNC,\n        /*leap*/ COMMON_LEAP,\n        /*hStart*/ 8389376,\n        /*xScale*/ 512,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 1280,\n          /*yScale*/ 16778240,\n          /*vStart*/ 6095415,\n          /*vBurst*/ 590443,\n          /*vIntr*/ 2 },\n        { /*origin*/ 1280,\n          /*yScale*/ 50332672,\n          /*vStart*/ 6226489,\n          /*vBurst*/ 852585,\n          /*vIntr*/ 2 } } },\n    /*osViModePalHpn1*/\n    { /*type*/ 22,\n      /*comRegs*/\n      { /*ctrl*/ 12878 - CN_SUB,\n        /*width*/ 1280,\n        /*burst*/ COMMON_BURST,\n        /*vSync*/ 624,\n        /*hSync*/ COMMON_HSYNC,\n        /*leap*/ COMMON_LEAP,\n        /*hStart*/ 8389376,\n        /*xScale*/ 1024,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 1280,\n          /*yScale*/ 1024,\n          /*vStart*/ 6095415,\n          /*vBurst*/ 590443,\n          /*vIntr*/ 2 },\n        { /*origin*/ 2560,\n          /*yScale*/ 1024,\n          /*vStart*/ 6226489,\n          /*vBurst*/ 852585,\n          /*vIntr*/ 2 } } },\n    /*osViModePalHpf1*/\n    { /*type*/ 23,\n      /*comRegs*/\n      { /*ctrl*/ 12878 - CN_SUB,\n        /*width*/ 640,\n        /*burst*/ COMMON_BURST,\n        /*vSync*/ 624,\n        /*hSync*/ COMMON_HSYNC,\n        /*leap*/ COMMON_LEAP,\n        /*hStart*/ 8389376,\n        /*xScale*/ 1024,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 1280,\n          /*yScale*/ 33556480,\n          /*vStart*/ 6095415,\n          /*vBurst*/ 590443,\n          /*vIntr*/ 2 },\n        { /*origin*/ 2560,\n          /*yScale*/ 33556480,\n          /*vStart*/ 6226489,\n          /*vBurst*/ 852585,\n          /*vIntr*/ 2 } } },\n    /*osViModePalHan1*/\n    { /*type*/ 24,\n      /*comRegs*/\n      { /*ctrl*/ 12382 - CN_SUB,\n        /*width*/ 1280,\n        /*burst*/ COMMON_BURST,\n        /*vSync*/ 624,\n        /*hSync*/ COMMON_HSYNC,\n        /*leap*/ COMMON_LEAP,\n        /*hStart*/ 8389376,\n        /*xScale*/ 1024,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 1280,\n          /*yScale*/ 1024,\n          /*vStart*/ 6095415,\n          /*vBurst*/ 590443,\n          /*vIntr*/ 2 },\n        { /*origin*/ 2560,\n          /*yScale*/ 1024,\n          /*vStart*/ 6226489,\n          /*vBurst*/ 852585,\n          /*vIntr*/ 2 } } },\n    /*osViModePalHaf1*/\n    { /*type*/ 25,\n      /*comRegs*/\n      { /*ctrl*/ 12382 - CN_SUB,\n        /*width*/ 640,\n        /*burst*/ COMMON_BURST,\n        /*vSync*/ 624,\n        /*hSync*/ COMMON_HSYNC,\n        /*leap*/ COMMON_LEAP,\n        /*hStart*/ 8389376,\n        /*xScale*/ 1024,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 1280,\n          /*yScale*/ 33556480,\n          /*vStart*/ 6095415,\n          /*vBurst*/ 590443,\n          /*vIntr*/ 2 },\n        { /*origin*/ 2560,\n          /*yScale*/ 33556480,\n          /*vStart*/ 6226489,\n          /*vBurst*/ 852585,\n          /*vIntr*/ 2 } } },\n    /*osViModePalHpn2*/\n    { /*type*/ 26,\n      /*comRegs*/\n      { /*ctrl*/ 13135 - CN_SUB,\n        /*width*/ 1280,\n        /*burst*/ COMMON_BURST,\n        /*vSync*/ 624,\n        /*hSync*/ COMMON_HSYNC,\n        /*leap*/ COMMON_LEAP,\n        /*hStart*/ 8389376,\n        /*xScale*/ 1024,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 2560,\n          /*yScale*/ 1024,\n          /*vStart*/ 6095415,\n          /*vBurst*/ 590443,\n          /*vIntr*/ 2 },\n        { /*origin*/ 5120,\n          /*yScale*/ 1024,\n          /*vStart*/ 6226489,\n          /*vBurst*/ 852585,\n          /*vIntr*/ 2 } } },\n    /*osViModePalHpf2*/\n    { /*type*/ 27,\n      /*comRegs*/\n      { /*ctrl*/ 12879 - CN_SUB,\n        /*width*/ 640,\n        /*burst*/ COMMON_BURST,\n        /*vSync*/ 624,\n        /*hSync*/ COMMON_HSYNC,\n        /*leap*/ COMMON_LEAP,\n        /*hStart*/ 8389376,\n        /*xScale*/ 1024,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 2560,\n          /*yScale*/ 33556480,\n          /*vStart*/ 6095415,\n          /*vBurst*/ 590443,\n          /*vIntr*/ 2 },\n        { /*origin*/ 5120,\n          /*yScale*/ 33556480,\n          /*vStart*/ 6226489,\n          /*vBurst*/ 852585,\n          /*vIntr*/ 2 } } },\n#endif\n\n#ifndef VERSION_JP\n    /*osViModePalLpn1*/\n    { /*type*/ 28,\n      /*comRegs*/\n      { /*ctrl*/ 12814 - CN_SUB,\n        /*width*/ 320,\n        /*burst*/ 73735737,\n        /*vSync*/ 525,\n        /*hSync*/ 265233,\n        /*leap*/ 202968090,\n        /*hStart*/ 7078636,\n        /*xScale*/ 512,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 640,\n          /*yScale*/ 1024,\n          /*vStart*/ 2425343,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 },\n        { /*origin*/ 640,\n          /*yScale*/ 1024,\n          /*vStart*/ 2425343,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 } } },\n    /*osViModePalLpf1*/\n    { /*type*/ 29,\n      /*comRegs*/\n      { /*ctrl*/ 12878 - CN_SUB,\n        /*width*/ 320,\n        /*burst*/ 73735737,\n        /*vSync*/ 524,\n        /*hSync*/ 3088,\n        /*leap*/ 203164700,\n        /*hStart*/ 7078636,\n        /*xScale*/ 512,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 640,\n          /*yScale*/ 16778240,\n          /*vStart*/ 2294269,\n          /*vBurst*/ 721410,\n          /*vIntr*/ 2 },\n        { /*origin*/ 640,\n          /*yScale*/ 50332672,\n          /*vStart*/ 2425343,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 } } },\n    /*osViModePalLan1*/\n    { /*type*/ 30,\n      /*comRegs*/\n      { /*ctrl*/ 12574 - CN_SUB,\n        /*width*/ 320,\n        /*burst*/ 73735737,\n        /*vSync*/ 525,\n        /*hSync*/ 265233,\n        /*leap*/ 202968090,\n        /*hStart*/ 7078636,\n        /*xScale*/ 512,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 640,\n          /*yScale*/ 1024,\n          /*vStart*/ 2425343,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 },\n        { /*origin*/ 640,\n          /*yScale*/ 1024,\n          /*vStart*/ 2425343,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 } } },\n    /*osViModePalLaf1*/\n    { /*type*/ 31,\n      /*comRegs*/\n      { /*ctrl*/ 12382 - CN_SUB,\n        /*width*/ 320,\n        /*burst*/ 73735737,\n        /*vSync*/ 524,\n        /*hSync*/ 3088,\n        /*leap*/ 203164700,\n        /*hStart*/ 7078636,\n        /*xScale*/ 512,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 640,\n          /*yScale*/ 16778240,\n          /*vStart*/ 2294269,\n          /*vBurst*/ 721410,\n          /*vIntr*/ 2 },\n        { /*origin*/ 640,\n          /*yScale*/ 50332672,\n          /*vStart*/ 2425343,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 } } },\n    /*osViModePalLpn2*/\n    { /*type*/ 32,\n      /*comRegs*/\n      { /*ctrl*/ 13071 - CN_SUB,\n        /*width*/ 320,\n        /*burst*/ 73735737,\n        /*vSync*/ 525,\n        /*hSync*/ 265233,\n        /*leap*/ 202968090,\n        /*hStart*/ 7078636,\n        /*xScale*/ 512,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 1280,\n          /*yScale*/ 1024,\n          /*vStart*/ 2425343,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 },\n        { /*origin*/ 1280,\n          /*yScale*/ 1024,\n          /*vStart*/ 2425343,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 } } },\n    /*osViModePalLpf2*/\n    { /*type*/ 33,\n      /*comRegs*/\n      { /*ctrl*/ 12879 - CN_SUB,\n        /*width*/ 320,\n        /*burst*/ 73735737,\n        /*vSync*/ 524,\n        /*hSync*/ 3088,\n        /*leap*/ 203164700,\n        /*hStart*/ 7078636,\n        /*xScale*/ 512,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 1280,\n          /*yScale*/ 16778240,\n          /*vStart*/ 2294269,\n          /*vBurst*/ 721410,\n          /*vIntr*/ 2 },\n        { /*origin*/ 1280,\n          /*yScale*/ 50332672,\n          /*vStart*/ 2425343,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 } } },\n    /*osViModePalLan2*/\n    { /*type*/ 34,\n      /*comRegs*/\n      { /*ctrl*/ 12319 - CN_SUB,\n        /*width*/ 320,\n        /*burst*/ 73735737,\n        /*vSync*/ 525,\n        /*hSync*/ 265233,\n        /*leap*/ 202968090,\n        /*hStart*/ 7078636,\n        /*xScale*/ 512,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 1280,\n          /*yScale*/ 1024,\n          /*vStart*/ 2425343,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 },\n        { /*origin*/ 1280,\n          /*yScale*/ 1024,\n          /*vStart*/ 2425343,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 } } },\n    /*osViModePalLaf2*/\n    { /*type*/ 35,\n      /*comRegs*/\n      { /*ctrl*/ 12383 - CN_SUB,\n        /*width*/ 320,\n        /*burst*/ 73735737,\n        /*vSync*/ 524,\n        /*hSync*/ 3088,\n        /*leap*/ 203164700,\n        /*hStart*/ 7078636,\n        /*xScale*/ 512,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 1280,\n          /*yScale*/ 16778240,\n          /*vStart*/ 2294269,\n          /*vBurst*/ 721410,\n          /*vIntr*/ 2 },\n        { /*origin*/ 1280,\n          /*yScale*/ 50332672,\n          /*vStart*/ 2425343,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 } } },\n    /*osViModePalHpn1*/\n    { /*type*/ 36,\n      /*comRegs*/\n      { /*ctrl*/ 12878 - CN_SUB,\n        /*width*/ 1280,\n        /*burst*/ 73735737,\n        /*vSync*/ 524,\n        /*hSync*/ 3088,\n        /*leap*/ 203164700,\n        /*hStart*/ 7078636,\n        /*xScale*/ 1024,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 1280,\n          /*yScale*/ 1024,\n          /*vStart*/ 2294269,\n          /*vBurst*/ 721410,\n          /*vIntr*/ 2 },\n        { /*origin*/ 2560,\n          /*yScale*/ 1024,\n          /*vStart*/ 2425343,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 } } },\n    /*osViModePalHpf1*/\n    { /*type*/ 37,\n      /*comRegs*/\n      { /*ctrl*/ 12878 - CN_SUB,\n        /*width*/ 640,\n        /*burst*/ 73735737,\n        /*vSync*/ 524,\n        /*hSync*/ 3088,\n        /*leap*/ 203164700,\n        /*hStart*/ 7078636,\n        /*xScale*/ 1024,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 1280,\n          /*yScale*/ 33556480,\n          /*vStart*/ 2294269,\n          /*vBurst*/ 721410,\n          /*vIntr*/ 2 },\n        { /*origin*/ 2560,\n          /*yScale*/ 33556480,\n          /*vStart*/ 2425343,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 } } },\n    /*osViModePalHan1*/\n    { /*type*/ 38,\n      /*comRegs*/\n      { /*ctrl*/ 12382 - CN_SUB,\n        /*width*/ 1280,\n        /*burst*/ 73735737,\n        /*vSync*/ 524,\n        /*hSync*/ 3088,\n        /*leap*/ 203164700,\n        /*hStart*/ 7078636,\n        /*xScale*/ 1024,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 1280,\n          /*yScale*/ 1024,\n          /*vStart*/ 2294269,\n          /*vBurst*/ 721410,\n          /*vIntr*/ 2 },\n        { /*origin*/ 2560,\n          /*yScale*/ 1024,\n          /*vStart*/ 2425343,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 } } },\n    /*osViModePalHaf1*/\n    { /*type*/ 39,\n      /*comRegs*/\n      { /*ctrl*/ 12382 - CN_SUB,\n        /*width*/ 640,\n        /*burst*/ 73735737,\n        /*vSync*/ 524,\n        /*hSync*/ 3088,\n        /*leap*/ 203164700,\n        /*hStart*/ 7078636,\n        /*xScale*/ 1024,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 1280,\n          /*yScale*/ 33556480,\n          /*vStart*/ 2294269,\n          /*vBurst*/ 721410,\n          /*vIntr*/ 2 },\n        { /*origin*/ 2560,\n          /*yScale*/ 33556480,\n          /*vStart*/ 2425343,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 } } },\n    /*osViModePalHpn2*/\n    { /*type*/ 40,\n      /*comRegs*/\n      { /*ctrl*/ 13135 - CN_SUB,\n        /*width*/ 1280,\n        /*burst*/ 73735737,\n        /*vSync*/ 524,\n        /*hSync*/ 3088,\n        /*leap*/ 203164700,\n        /*hStart*/ 7078636,\n        /*xScale*/ 1024,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 2560,\n          /*yScale*/ 1024,\n          /*vStart*/ 2294269,\n          /*vBurst*/ 721410,\n          /*vIntr*/ 2 },\n        { /*origin*/ 5120,\n          /*yScale*/ 1024,\n          /*vStart*/ 2425343,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 } } },\n    /*osViModePalHpf2*/\n    { /*type*/ 41,\n      /*comRegs*/\n      { /*ctrl*/ 12879 - CN_SUB,\n        /*width*/ 640,\n        /*burst*/ 73735737,\n        /*vSync*/ 524,\n        /*hSync*/ 3088,\n        /*leap*/ 203164700,\n        /*hStart*/ 7078636,\n        /*xScale*/ 1024,\n        /*vCurrent*/ 0 },\n      /*fldRegs*/\n      { { /*origin*/ 2560,\n          /*yScale*/ 33556480,\n          /*vStart*/ 2294269,\n          /*vBurst*/ 721410,\n          /*vIntr*/ 2 },\n        { /*origin*/ 5120,\n          /*yScale*/ 33556480,\n          /*vStart*/ 2425343,\n          /*vBurst*/ 918020,\n          /*vIntr*/ 2 } } }\n#endif\n};\n\n#ifdef VERSION_CN\ns8 unk_cn_803191c0[] = {0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x0E, 0x00, 0x00, 0x01, 0x40, 0x04, 0x54, 0x1E, 0x3A, 0x00, 0x00, 0x02, 0x71, 0x00, 0x17, 0x0C, 0x69, 0x0C, 0x6F, 0x0C, 0x6D, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x2F, 0x02, 0x69, 0x00, 0x09, 0x02, 0x6B, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x2F, 0x02, 0x69, 0x00, 0x09, 0x02, 0x6B, 0x00, 0x00, 0x00, 0x02, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x4E, 0x00, 0x00, 0x01, 0x40, 0x04, 0x54, 0x1E, 0x3A, 0x00, 0x00, 0x02, 0x70, 0x00, 0x17, 0x0C, 0x69, 0x0C, 0x6F, 0x0C, 0x6D, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x01, 0x00, 0x04, 0x00, 0x00, 0x2D, 0x02, 0x67, 0x00, 0x09, 0x02, 0x6B, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x03, 0x00, 0x04, 0x00, 0x00, 0x2F, 0x02, 0x69, 0x00, 0x0D, 0x02, 0x69, 0x00, 0x00, 0x00, 0x02, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x1E, 0x00, 0x00, 0x01, 0x40, 0x04, 0x54, 0x1E, 0x3A, 0x00, 0x00, 0x02, 0x71, 0x00, 0x17, 0x0C, 0x69, 0x0C, 0x6F, 0x0C, 0x6D, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x2F, 0x02, 0x69, 0x00, 0x09, 0x02, 0x6B, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x2F, 0x02, 0x69, 0x00, 0x09, 0x02, 0x6B, 0x00, 0x00, 0x00, 0x02, 0x2D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x5E, 0x00, 0x00, 0x01, 0x40, 0x04, 0x54, 0x1E, 0x3A, 0x00, 0x00, 0x02, 0x70, 0x00, 0x17, 0x0C, 0x69, 0x0C, 0x6F, 0x0C, 0x6D, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x01, 0x00, 0x04, 0x00, 0x00, 0x2D, 0x02, 0x67, 0x00, 0x09, 0x02, 0x6B, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x80, 0x03, 0x00, 0x04, 0x00, 0x00, 0x2F, 0x02, 0x69, 0x00, 0x0D, 0x02, 0x69, 0x00, 0x00, 0x00, 0x02, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x0F, 0x00, 0x00, 0x01, 0x40, 0x04, 0x54, 0x1E, 0x3A, 0x00, 0x00, 0x02, 0x71, 0x00, 0x17, 0x0C, 0x69, 0x0C, 0x6F, 0x0C, 0x6D, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x2F, 0x02, 0x69, 0x00, 0x09, 0x02, 0x6B, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x2F, 0x02, 0x69, 0x00, 0x09, 0x02, 0x6B, 0x00, 0x00, 0x00, 0x02, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x4F, 0x00, 0x00, 0x01, 0x40, 0x04, 0x54, 0x1E, 0x3A, 0x00, 0x00, 0x02, 0x70, 0x00, 0x17, 0x0C, 0x69, 0x0C, 0x6F, 0x0C, 0x6D, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x2D, 0x02, 0x67, 0x00, 0x09, 0x02, 0x6B, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x2F, 0x02, 0x69, 0x00, 0x0D, 0x02, 0x69, 0x00, 0x00, 0x00, 0x02, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x1F, 0x00, 0x00, 0x01, 0x40, 0x04, 0x54, 0x1E, 0x3A, 0x00, 0x00, 0x02, 0x71, 0x00, 0x17, 0x0C, 0x69, 0x0C, 0x6F, 0x0C, 0x6D, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x2F, 0x02, 0x69, 0x00, 0x09, 0x02, 0x6B, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x2F, 0x02, 0x69, 0x00, 0x09, 0x02, 0x6B, 0x00, 0x00, 0x00, 0x02, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x5F, 0x00, 0x00, 0x01, 0x40, 0x04, 0x54, 0x1E, 0x3A, 0x00, 0x00, 0x02, 0x70, 0x00, 0x17, 0x0C, 0x69, 0x0C, 0x6F, 0x0C, 0x6D, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x2D, 0x02, 0x67, 0x00, 0x09, 0x02, 0x6B, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x2F, 0x02, 0x69, 0x00, 0x0D, 0x02, 0x69, 0x00, 0x00, 0x00, 0x02, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x4E, 0x00, 0x00, 0x05, 0x00, 0x04, 0x54, 0x1E, 0x3A, 0x00, 0x00, 0x02, 0x70, 0x00, 0x17, 0x0C, 0x69, 0x0C, 0x6F, 0x0C, 0x6D, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x2D, 0x02, 0x67, 0x00, 0x09, 0x02, 0x6B, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x2F, 0x02, 0x69, 0x00, 0x0D, 0x02, 0x69, 0x00, 0x00, 0x00, 0x02, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x4E, 0x00, 0x00, 0x02, 0x80, 0x04, 0x54, 0x1E, 0x3A, 0x00, 0x00, 0x02, 0x70, 0x00, 0x17, 0x0C, 0x69, 0x0C, 0x6F, 0x0C, 0x6D, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00, 0x2D, 0x02, 0x67, 0x00, 0x09, 0x02, 0x6B, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0A, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00, 0x2F, 0x02, 0x69, 0x00, 0x0D, 0x02, 0x69, 0x00, 0x00, 0x00, 0x02, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x5E, 0x00, 0x00, 0x05, 0x00, 0x04, 0x54, 0x1E, 0x3A, 0x00, 0x00, 0x02, 0x70, 0x00, 0x17, 0x0C, 0x69, 0x0C, 0x6F, 0x0C, 0x6D, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x2D, 0x02, 0x67, 0x00, 0x09, 0x02, 0x6B, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x2F, 0x02, 0x69, 0x00, 0x0D, 0x02, 0x69, 0x00, 0x00, 0x00, 0x02, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x5E, 0x00, 0x00, 0x02, 0x80, 0x04, 0x54, 0x1E, 0x3A, 0x00, 0x00, 0x02, 0x70, 0x00, 0x17, 0x0C, 0x69, 0x0C, 0x6F, 0x0C, 0x6D, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00, 0x2D, 0x02, 0x67, 0x00, 0x09, 0x02, 0x6B, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0A, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00, 0x2F, 0x02, 0x69, 0x00, 0x0D, 0x02, 0x69, 0x00, 0x00, 0x00, 0x02, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x4F, 0x00, 0x00, 0x05, 0x00, 0x04, 0x54, 0x1E, 0x3A, 0x00, 0x00, 0x02, 0x70, 0x00, 0x17, 0x0C, 0x69, 0x0C, 0x6F, 0x0C, 0x6D, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x2D, 0x02, 0x67, 0x00, 0x09, 0x02, 0x6B, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x2F, 0x02, 0x69, 0x00, 0x0D, 0x02, 0x69, 0x00, 0x00, 0x00, 0x02, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x4F, 0x00, 0x00, 0x02, 0x80, 0x04, 0x54, 0x1E, 0x3A, 0x00, 0x00, 0x02, 0x70, 0x00, 0x17, 0x0C, 0x69, 0x0C, 0x6F, 0x0C, 0x6D, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00, 0x2D, 0x02, 0x67, 0x00, 0x09, 0x02, 0x6B, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00, 0x2F, 0x02, 0x69, 0x00, 0x0D, 0x02, 0x69, 0x00, 0x00, 0x00, 0x02};\n#endif\n"
  },
  {
    "path": "lib/src/osVirtualToPhysical.c",
    "content": "#include \"libultra_internal.h\"\n#include \"PR/R4300.h\"\n\nuintptr_t osVirtualToPhysical(void *addr) {\n    if (IS_KSEG0(addr)) {\n        return K0_TO_PHYS(addr);\n    } else if (IS_KSEG1(addr)) {\n        return (K1_TO_PHYS(addr));\n    } else {\n        return __osProbeTLB(addr);\n    }\n}\n"
  },
  {
    "path": "lib/src/osYieldThread.c",
    "content": "#include \"libultra_internal.h\"\n\nvoid osYieldThread(void) {\n    register u32 saveMask = __osDisableInt();\n    __osRunningThread->state = OS_STATE_RUNNABLE;\n    __osEnqueueAndYield(&__osRunQueue);\n    __osRestoreInt(saveMask);\n}\n"
  },
  {
    "path": "lib/src/osint.h",
    "content": "#ifndef _OSINT_H\n#define _OSINT_H\n#include \"libultra_internal.h\"\n\ntypedef struct __OSEventState\n{\n    OSMesgQueue *messageQueue;\n    OSMesg message;\n} __OSEventState;\n\n//maybe should be in exceptasm.h?\nextern void __osEnqueueAndYield(OSThread **);\nextern void __osDequeueThread(OSThread **, OSThread *);\nextern void __osEnqueueThread(OSThread **, OSThread *);\nextern OSThread *__osPopThread(OSThread **);\nextern void __osDispatchThread(void);\n\nextern void __osSetTimerIntr(OSTime);\nextern OSTime __osInsertTimer(OSTimer *);\nextern void __osTimerInterrupt(void);\nextern u32 __osProbeTLB(void *);\nextern int     __osSpDeviceBusy(void);\n\n#ifdef AVOID_UB\nextern OSThread_ListHead __osThreadTail_fix;\n#else\nextern OSThread *__osRunningThread;\nextern OSThread *__osActiveQueue;\nextern OSThread *__osFaultedThread;\nextern OSThread *__osRunQueue;\n#endif\n\nextern OSTimer *__osTimerList;\nextern OSTimer __osBaseTimer;\nextern OSTime __osCurrentTime;\nextern u32 __osBaseCounter;\nextern u32 __osViIntrCount;\nextern u32 __osTimerCounter;\n\nextern __OSEventState __osEventStateTab[OS_NUM_EVENTS];\n\n\n//not sure if this should be here\nextern s32 osViClock;\nextern u32 __osShutdown;\nextern void __osTimerServicesInit(void);\nextern s32 __osAiDeviceBusy(void);\nextern int __osDpDeviceBusy(void);\n#endif\n"
  },
  {
    "path": "lib/src/pfsgetstatus.c",
    "content": "#include \"libultra_internal.h\"\n#include \"controller.h\"\n\ns32 __osPfsGetStatus(OSMesgQueue *queue, s32 channel) {\n    s32 ret = 0;\n    OSMesg dummy;\n    u8 pattern;\n    OSContStatus data[4];\n\n    __osPfsRequestData(CONT_CMD_REQUEST_STATUS);\n    ret = __osSiRawStartDma(OS_WRITE, &__osPfsPifRam);\n    osRecvMesg(queue, &dummy, OS_MESG_BLOCK);\n    ret = __osSiRawStartDma(OS_READ, &__osPfsPifRam);\n    osRecvMesg(queue, &dummy, OS_MESG_BLOCK);\n    __osPfsGetInitData(&pattern, data);\n    if (data[channel].status & CONT_CARD_ON && data[channel].status & CONT_CARD_PULL) {\n        return PFS_ERR_NEW_PACK;\n    }\n    if (data[channel].errnum || !(data[channel].status & CONT_CARD_ON)) {\n        return PFS_ERR_NOPACK;\n    }\n    if (data[channel].status & CONT_ADDR_CRC_ER) {\n        return PFS_ERR_CONTRFAIL;\n    }\n    return ret;\n}\n"
  },
  {
    "path": "lib/src/piint.h",
    "content": "#ifndef _PIINT_H\n#define _PIINT_H\n#include \"PR/os_internal.h\"\n#include \"PR/rcp.h\"\n#include \"PR/os_pi.h\"\n#include \"PR/os.h\"\n\n//https://github.com/LuigiBlood/64dd/wiki/Memory-Map\n\n#define LEO_BASE_REG 0x05000000\n\n#define LEO_CMD (LEO_BASE_REG + 0x508)\n#define LEO_STATUS (LEO_BASE_REG + 0x508)\n\n#define LEO_BM_CTL (LEO_BASE_REG + 0x510)\n#define LEO_BM_STATUS (LEO_BASE_REG + 0x510)\n\n#define LEO_SEQ_CTL (LEO_BASE_REG + 0x518)\n#define LEO_SEQ_STATUS (LEO_BASE_REG + 0x518)\n\n#define LEO_C2_BUFF (LEO_BASE_REG + 0x000)      //C2 Sector Buffer\n#define LEO_SECTOR_BUFF (LEO_BASE_REG + 0x400)  //Data Sector Buffer\n#define LEO_DATA (LEO_BASE_REG + 0x500)         //Data\n#define LEO_MISC_REG (LEO_BASE_REG + 0x504)     //Misc Register\n#define LEO_CUR_TK (LEO_BASE_REG + 0x50C)       //Current Track\n#define LEO_ERR_SECTOR (LEO_BASE_REG + 0x514)   //Sector Error Status\n#define LEO_CUR_SECTOR (LEO_BASE_REG + 0x51C)   //Current Sector\n#define LEO_HARD_RESET (LEO_BASE_REG + 0x520)   //Hard Reset\n#define LEO_C1_S0 (LEO_BASE_REG + 0x524)        //C1\n#define LEO_HOST_SECBYTE (LEO_BASE_REG + 0x528) //Sector Size (in bytes)\n#define LEO_C1_S2 (LEO_BASE_REG + 0x52C)        //C1\n#define LEO_SEC_BYTE (LEO_BASE_REG + 0x530)     //Sectors per Block, Full Size\n#define LEO_C1_S4 (LEO_BASE_REG + 0x534)        //C1\n#define LEO_C1_S6 (LEO_BASE_REG + 0x538)        //C1\n#define LEO_CUR_ADDR (LEO_BASE_REG + 0x53C)     //Current Address?\n#define LEO_ID_REG (LEO_BASE_REG + 0x540)       //ID\n#define LEO_TEST_REG (LEO_BASE_REG + 0x544)     //Test Read\n#define LEO_TEST_PIN_SEL (LEO_BASE_REG + 0x548) //Test Write\n#define LEO_RAM_ADDR (LEO_BASE_REG + 0x580)     //Microsequencer RAM\n\n#define LEO_STATUS_PRESENCE_MASK 0xFFFF\n\n#define LEO_STATUS_DATA_REQUEST 0x40000000\n#define LEO_STATUS_C2_TRANSFER 0x10000000\n#define LEO_STATUS_BUFFER_MANAGER_ERROR 0x08000000\n#define LEO_STATUS_BUFFER_MANAGER_INTERRUPT 0x04000000\n#define LEO_STATUS_MECHANIC_INTERRUPT 0x02000000\n#define LEO_STATUS_DISK_PRESENT 0x01000000\n#define LEO_STATUS_BUSY_STATE 0x00800000\n#define LEO_STATUS_RESET_STATE 0x00400000\n#define LEO_STATUS_MOTOR_NOT_SPINNING 0x00100000\n#define LEO_STATUS_HEAD_RETRACTED 0x00080000\n#define LEO_STATUS_WRITE_PROTECT_ERROR 0x00040000\n#define LEO_STATUS_MECHANIC_ERROR 0x00020000\n#define LEO_STATUS_DISK_CHANGE 0x00010000\n\n#define LEO_STATUS_MODE_MASK (LEO_STATUS_MOTOR_NOT_SPINNING | LEO_STATUS_HEAD_RETRACTED)\n#define LEO_STATUS_MODE_SLEEP (LEO_STATUS_MOTOR_NOT_SPINNING | LEO_STATUS_HEAD_RETRACTED)\n#define LEO_STATUS_MODE_STANDBY (LEO_STATUS_HEAD_RETRACTED)\n#define LEO_STATUS_MODE_ACTIVE 0\n\n#define LEO_CUR_TK_INDEX_LOCK 0x60000000\n\n#define LEO_BM_STATUS_RUNNING 0x80000000      //Running\n#define LEO_BM_STATUS_ERROR 0x04000000        //Error\n#define LEO_BM_STATUS_MICRO 0x02000000        //Micro Status?\n#define LEO_BM_STATUS_BLOCK 0x01000000        //Block Transfer\n#define LEO_BM_STATUS_C1CORRECTION 0x00800000 //C1 Correction\n#define LEO_BM_STATUS_C1DOUBLE 0x00400000     //C1 Double\n#define LEO_BM_STATUS_C1SINGLE 0x00200000     //C1 Single\n#define LEO_BM_STATUS_C1ERROR 0x00010000      //C1 Error\n\n#define LEO_BM_CTL_START 0x80000000             //Start Buffer Manager\n#define LEO_BM_CTL_MODE 0x40000000              //Buffer Manager Mode\n#define LEO_BM_CTL_IMASK 0x20000000             //BM Interrupt Mask\n#define LEO_BM_CTL_RESET 0x10000000             //Buffer Manager Reset\n#define LEO_BM_CTL_DISABLE_OR 0x08000000        //Disable OR Check?\n#define LEO_BM_CTL_DISABLE_C1 0x04000000        //Disable C1 Correction\n#define LEO_BM_CTL_BLOCK 0x02000000             //Block Transfer\n#define LEO_BM_CTL_CLR_MECHANIC_INTR 0x01000000 //Mechanic Interrupt Reset\n\n#define LEO_BM_CTL_CONTROL_MASK 0xFF000000\n#define LEO_BM_CTL_SECTOR_MASK 0x00FF0000\n#define LEO_BM_CTL_SECTOR_SHIFT 16\n\n#define LEO_CMD_TYPE_0 0 //TODO: name\n#define LEO_CMD_TYPE_1 1 //TODO: name\n#define LEO_CMD_TYPE_2 2 //TODO: name\n\n#define LEO_ERROR_GOOD 0\n#define LEO_ERROR_3 3 //\n#define LEO_ERROR_4 4   //maybe busy?\n#define LEO_ERROR_6 6 //\n#define LEO_ERROR_17 17 //\n#define LEO_ERROR_22 22 //\n#define LEO_ERROR_23 23 //unrecovered read error?\n#define LEO_ERROR_24 24 //no reference position found?\n#define LEO_ERROR_29 29 //\n#define LEO_ERROR_75 75 //\n\nextern OSDevMgr __osPiDevMgr;\nextern OSPiHandle *__osCurrentHandle[2];\nextern OSPiHandle __Dom1SpeedParam;\nextern OSPiHandle __Dom2SpeedParam;\nextern OSMesgQueue __osPiAccessQueue;\nextern u32 __osPiAccessQueueEnabled;\n\nint __osPiDeviceBusy(void);\nvoid __osDevMgrMain(void *);\nvoid __osPiCreateAccessQueue(void);\nvoid __osPiRelAccess(void);\nvoid __osPiGetAccess(void);\nOSMesgQueue *osPiGetCmdQueue(void);\n\n#define OS_RAMROM_STACKSIZE 1024\n\n#define WAIT_ON_IO_BUSY(stat)                               \\\n    stat = IO_READ(PI_STATUS_REG);                          \\\n    while (stat & (PI_STATUS_IO_BUSY | PI_STATUS_DMA_BUSY)) \\\n        stat = IO_READ(PI_STATUS_REG);\n\n#ifdef VERSION_EU\n#define WAIT_ON_LEO_IO_BUSY(stat)    \\\n    stat = IO_READ(PI_STATUS_REG);   \\\n    while (stat & PI_STATUS_IO_BUSY) \\\n        stat = IO_READ(PI_STATUS_REG);\n#else\n#define WAIT_ON_LEO_IO_BUSY WAIT_ON_IO_BUSY\n#endif\n\n#define UPDATE_REG(reg, var)           \\\n    if (cHandle->var != pihandle->var) \\\n        IO_WRITE(reg, pihandle->var);\n\n#ifdef VERSION_CN\n#define EPI_SYNC(pihandle, stat, domain)                   \\\n                                                           \\\n    WAIT_ON_IO_BUSY(stat)                                  \\\n                                                           \\\n    domain = pihandle->domain;                             \\\n    if (__osCurrentHandle[domain]->type != pihandle->type) \\\n    {                                                      \\\n        OSPiHandle *cHandle = __osCurrentHandle[domain];   \\\n        if (domain == PI_DOMAIN1)                          \\\n        {                                                  \\\n            UPDATE_REG(PI_BSD_DOM1_LAT_REG, latency);      \\\n            UPDATE_REG(PI_BSD_DOM1_PGS_REG, pageSize);     \\\n            UPDATE_REG(PI_BSD_DOM1_RLS_REG, relDuration);  \\\n            UPDATE_REG(PI_BSD_DOM1_PWD_REG, pulse);        \\\n        }                                                  \\\n        else                                               \\\n        {                                                  \\\n            UPDATE_REG(PI_BSD_DOM2_LAT_REG, latency);      \\\n            UPDATE_REG(PI_BSD_DOM2_PGS_REG, pageSize);     \\\n            UPDATE_REG(PI_BSD_DOM2_RLS_REG, relDuration);  \\\n            UPDATE_REG(PI_BSD_DOM2_PWD_REG, pulse);        \\\n        }                                                  \\\n        cHandle->type = pihandle->type;                    \\\n        cHandle->latency = pihandle->latency;              \\\n        cHandle->pageSize = pihandle->pageSize;            \\\n        cHandle->relDuration = pihandle->relDuration;      \\\n        cHandle->pulse = pihandle->pulse;                  \\\n    }\n#else\n#define EPI_SYNC(pihandle, stat, domain)                   \\\n                                                           \\\n    WAIT_ON_IO_BUSY(stat)                                  \\\n                                                           \\\n    domain = pihandle->domain;                             \\\n    if (__osCurrentHandle[domain] != pihandle)             \\\n    {                                                      \\\n        OSPiHandle *cHandle = __osCurrentHandle[domain];   \\\n        if (domain == PI_DOMAIN1)                          \\\n        {                                                  \\\n            UPDATE_REG(PI_BSD_DOM1_LAT_REG, latency);      \\\n            UPDATE_REG(PI_BSD_DOM1_PGS_REG, pageSize);     \\\n            UPDATE_REG(PI_BSD_DOM1_RLS_REG, relDuration);  \\\n            UPDATE_REG(PI_BSD_DOM1_PWD_REG, pulse);        \\\n        }                                                  \\\n        else                                               \\\n        {                                                  \\\n            UPDATE_REG(PI_BSD_DOM2_LAT_REG, latency);      \\\n            UPDATE_REG(PI_BSD_DOM2_PGS_REG, pageSize);     \\\n            UPDATE_REG(PI_BSD_DOM2_RLS_REG, relDuration);  \\\n            UPDATE_REG(PI_BSD_DOM2_PWD_REG, pulse);        \\\n        }                                                  \\\n        __osCurrentHandle[domain] = pihandle;              \\\n    }\n#endif\n\n#endif\n"
  },
  {
    "path": "lib/src/printf.h",
    "content": "#ifndef _PRINTF_H_\n#define _PRINTF_H_\n#include <stdarg.h>\n\n#ifdef VERSION_CN\ntypedef char fmt_type;\n#else\ntypedef u8 fmt_type;\n#endif\n\ntypedef struct\n{\n    union {\n        /* 00 */ s64 s64;\n        u64 u64;\n        f64 f64;\n        u32 u32;\n        u16 u16;\n    } value;\n    /* 08 */ char *buff;\n    /* 0c */ s32 part1_len;\n    /* 10 */ s32 num_leading_zeros;\n    /* 14 */ s32 part2_len;\n    /* 18 */ s32 num_mid_zeros;\n    /* 1c */ s32 part3_len;\n    /* 20 */ s32 num_trailing_zeros;\n    /* 24 */ s32 precision;\n    /* 28 */ s32 width;\n    /* 2c */ u32 size;\n    /* 30 */ u32 flags;\n    /* 34 */ fmt_type length;\n} printf_struct;\n\n#define FLAGS_SPACE 1\n#define FLAGS_PLUS 2\n#define FLAGS_MINUS 4\n#define FLAGS_HASH 8\n#define FLAGS_ZERO 16\ns32 _Printf(char *(*prout)(char *, const char *, size_t), char *dst, const char *fmt, va_list args);\nvoid _Litob(printf_struct *args, fmt_type type);\nvoid _Ldtob(printf_struct *args, fmt_type type);\n#endif\n"
  },
  {
    "path": "lib/src/sprintf.c",
    "content": "#include <stdarg.h>\n#include \"libultra_internal.h\"\n#include \"printf.h\"\n#include <string.h>\n\nchar *proutSprintf(char *dst, const char *src, size_t count);\n\nint sprintf(char *dst, const char *fmt, ...) {\n    s32 written;\n    va_list args;\n    va_start(args, fmt);\n    written = _Printf(proutSprintf, dst, fmt, args);\n    if (written >= 0) {\n        dst[written] = 0;\n    }\n    return written;\n}\n\nchar *proutSprintf(char *dst, const char *src, size_t count) {\n    return (char *) memcpy((u8 *) dst, (u8 *) src, count) + count;\n}\n"
  },
  {
    "path": "lib/src/string.c",
    "content": "#include \"libultra_internal.h\"\n#include <string.h>\n\n#ifdef VERSION_CN\n\nchar *strchr(const char *str, s32 ch) {\n    char c = ch;\n    while (*str != c) {\n        if (*str == 0) {\n            return NULL;\n        }\n        str++;\n    }\n    return (char *) str;\n}\n\nsize_t strlen(const char *str) {\n    const char *ptr = str;\n    while (*ptr) {\n        ptr++;\n    }\n    return ptr - str;\n}\n\n#endif\n\nvoid *memcpy(void *dst, const void *src, size_t size) {\n    u8 *_dst = dst;\n    const u8 *_src = src;\n    while (size > 0) {\n        *_dst++ = *_src++;\n        size--;\n    }\n    return dst;\n}\n\n#ifndef VERSION_CN\n\nsize_t strlen(const char *str) {\n    const u8 *ptr = (const u8 *) str;\n    while (*ptr) {\n        ptr++;\n    }\n    return (const char *) ptr - str;\n}\n\nchar *strchr(const char *str, s32 ch) {\n    u8 c = ch;\n    while (*(u8 *)str != c) {\n        if (*(u8 *)str == 0) {\n            return NULL;\n        }\n        str++;\n    }\n    return (char *) str;\n}\n\n#endif\n"
  },
  {
    "path": "rename_sym.sh",
    "content": "#!/bin/bash\n\nshopt -s globstar\n\nif [ \"$#\" -ne \"2\" ];\nthen\n    echo \"usage: $0 old_name new_name\"\n    exit 1\nfi\n\n#echo \"Replace $1 with $2?\"\n#read\ngrep -rl \"$1\" text/**/*.{c,h} assets/**/*.c enhancements/*.patch lib/**/*.{c,h,s} asm/**/*.s bin/**/*.c data/*.c levels/**/*.{c,h} actors/**/*.{c,h} src/**/*.{c,h} include/**/*.{h,in} undefined_syms.txt | xargs sed -i \"s/\\b$1\\b/$2/g\"\n"
  },
  {
    "path": "rsp/audio.s",
    "content": ".rsp\n\n.include \"rsp/rsp_defs.inc\"\n\n// This file assumes DATA_FILE and CODE_FILE are set on the command line\n\n.if version() < 110\n    .error \"armips 0.11 or newer is required\"\n.endif\n\n.ifdef VERSION_SH\n.definelabel VERSION_SH_CN, 1\n.elseifdef VERSION_CN\n.definelabel VERSION_SH_CN, 1\n.endif\n\n.macro jumpTableEntry, addr\n  .dh addr & 0xFFFF\n.endmacro\n\n// Audio flags\nA_INIT     equ 0x01\nA_CONTINUE equ 0x00\nA_LOOP     equ 0x02\nA_OUT      equ 0x02\nA_LEFT     equ 0x02\nA_RIGHT    equ 0x00\nA_VOL      equ 0x04\nA_RATE     equ 0x00\nA_AUX      equ 0x08\nA_NOAUX    equ 0x00\nA_MAIN     equ 0x00\nA_MIX      equ 0x10\n\n.create DATA_FILE, 0x0000\n\n.dh 0x0000, 0x0001, 0x0002, 0xffff, 0x0020, 0x0800, 0x7fff, 0x4000 // 0x00000000\n\n// 0x10 - 0x1F: command dispatch table\ndispatchTable:\n  jumpTableEntry cmd_SPNOOP\n  jumpTableEntry cmd_ADPCM\n  jumpTableEntry cmd_CLEARBUFF\n.ifdef VERSION_SH_CN\n  jumpTableEntry cmd_SPNOOP\n\n  jumpTableEntry cmd_ADDMIXER\n  jumpTableEntry cmd_RESAMPLE\n  jumpTableEntry cmd_RESAMPLE_ZOH\n  jumpTableEntry cmd_SPNOOP\n\n  jumpTableEntry cmd_SETBUFF\n  jumpTableEntry cmd_SPNOOP\n  jumpTableEntry cmd_DMEMMOVE\n  jumpTableEntry cmd_LOADADPCM\n\n  jumpTableEntry cmd_MIXER\n  jumpTableEntry cmd_INTERLEAVE\n  jumpTableEntry cmd_SPNOOP\n  jumpTableEntry cmd_SETLOOP\n\n  jumpTableEntry cmd_DMEMMOVE2\n  jumpTableEntry cmd_DOWNSAMPLE_HALF\n  jumpTableEntry cmd_ENVSETUP1\n  jumpTableEntry cmd_ENVMIXER\n\n  jumpTableEntry cmd_LOADBUFF\n  jumpTableEntry cmd_SAVEBUFF\n  jumpTableEntry cmd_ENVSETUP2\n  jumpTableEntry cmd_S8DEC\n\n  jumpTableEntry cmd_HILOGAIN\n  jumpTableEntry cmd_1c7c\n  jumpTableEntry cmd_DUPLICATE\n  jumpTableEntry cmd_FILTER\n\n  jumpTableEntry cmd_SPNOOP\n  jumpTableEntry cmd_SPNOOP\n  jumpTableEntry cmd_SPNOOP\n  jumpTableEntry cmd_SPNOOP\n.else\n  jumpTableEntry cmd_ENVMIXER\n  jumpTableEntry cmd_LOADBUFF\n  jumpTableEntry cmd_RESAMPLE\n  jumpTableEntry cmd_SAVEBUFF\n  jumpTableEntry cmd_SEGMENT\n  jumpTableEntry cmd_SETBUFF\n  jumpTableEntry cmd_SETVOL\n  jumpTableEntry cmd_DMEMMOVE\n  jumpTableEntry cmd_LOADADPCM\n  jumpTableEntry cmd_MIXER\n  jumpTableEntry cmd_INTERLEAVE\n  jumpTableEntry cmd_POLEF\n  jumpTableEntry cmd_SETLOOP\n.endif\n\n.dh 0xf000, 0x0f00, 0x00f0, 0x000f, 0x0001, 0x0010, 0x0100, 0x1000 // 0x00000030\ndata0040:\n.dh 0x0002, 0x0004, 0x0006, 0x0008, 0x000a, 0x000c, 0x000e, 0x0010 // 0x00000040\n.dh 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001 // 0x00000050\n.dh 0x0000, 0x0001, 0x0002, 0x0004, 0x0008, 0x0010, 0x0100, 0x0200 // 0x00000060\n.dh 0x0001, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000 // 0x00000070\n.dh 0x0000, 0x0001, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000 // 0x00000080\n.dh 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000 // 0x00000090\n.dh 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000, 0x0001 // 0x000000a0\n.dh 0x2000, 0x4000, 0x6000, 0x8000, 0xa000, 0xc000, 0xe000, 0xffff // 0x000000b0\n.ifdef VERSION_SH_CN\n.dh 0x0000, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000\n.dh 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000\n.endif\n.dh 0x0c39, 0x66ad, 0x0d46, 0xffdf, 0x0b39, 0x6696, 0x0e5f, 0xffd8 // 0x000000c0\n.dh 0x0a44, 0x6669, 0x0f83, 0xffd0, 0x095a, 0x6626, 0x10b4, 0xffc8 // 0x000000d0\n.dh 0x087d, 0x65cd, 0x11f0, 0xffbf, 0x07ab, 0x655e, 0x1338, 0xffb6 // 0x000000e0\n.dh 0x06e4, 0x64d9, 0x148c, 0xffac, 0x0628, 0x643f, 0x15eb, 0xffa1 // 0x000000f0\n.dh 0x0577, 0x638f, 0x1756, 0xff96, 0x04d1, 0x62cb, 0x18cb, 0xff8a // 0x00000100\n.dh 0x0435, 0x61f3, 0x1a4c, 0xff7e, 0x03a4, 0x6106, 0x1bd7, 0xff71 // 0x00000110\n.dh 0x031c, 0x6007, 0x1d6c, 0xff64, 0x029f, 0x5ef5, 0x1f0b, 0xff56 // 0x00000120\n.dh 0x022a, 0x5dd0, 0x20b3, 0xff48, 0x01be, 0x5c9a, 0x2264, 0xff3a // 0x00000130\n.dh 0x015b, 0x5b53, 0x241e, 0xff2c, 0x0101, 0x59fc, 0x25e0, 0xff1e // 0x00000140\n.dh 0x00ae, 0x5896, 0x27a9, 0xff10, 0x0063, 0x5720, 0x297a, 0xff02 // 0x00000150\n.dh 0x001f, 0x559d, 0x2b50, 0xfef4, 0xffe2, 0x540d, 0x2d2c, 0xfee8 // 0x00000160\n.dh 0xffac, 0x5270, 0x2f0d, 0xfedb, 0xff7c, 0x50c7, 0x30f3, 0xfed0 // 0x00000170\n.dh 0xff53, 0x4f14, 0x32dc, 0xfec6, 0xff2e, 0x4d57, 0x34c8, 0xfebd // 0x00000180\n.dh 0xff0f, 0x4b91, 0x36b6, 0xfeb6, 0xfef5, 0x49c2, 0x38a5, 0xfeb0 // 0x00000190\n.dh 0xfedf, 0x47ed, 0x3a95, 0xfeac, 0xfece, 0x4611, 0x3c85, 0xfeab // 0x000001a0\n.dh 0xfec0, 0x4430, 0x3e74, 0xfeac, 0xfeb6, 0x424a, 0x4060, 0xfeaf // 0x000001b0\n.dh 0xfeaf, 0x4060, 0x424a, 0xfeb6, 0xfeac, 0x3e74, 0x4430, 0xfec0 // 0x000001c0\n.dh 0xfeab, 0x3c85, 0x4611, 0xfece, 0xfeac, 0x3a95, 0x47ed, 0xfedf // 0x000001d0\n.dh 0xfeb0, 0x38a5, 0x49c2, 0xfef5, 0xfeb6, 0x36b6, 0x4b91, 0xff0f // 0x000001e0\n.dh 0xfebd, 0x34c8, 0x4d57, 0xff2e, 0xfec6, 0x32dc, 0x4f14, 0xff53 // 0x000001f0\n.dh 0xfed0, 0x30f3, 0x50c7, 0xff7c, 0xfedb, 0x2f0d, 0x5270, 0xffac // 0x00000200\n.dh 0xfee8, 0x2d2c, 0x540d, 0xffe2, 0xfef4, 0x2b50, 0x559d, 0x001f // 0x00000210\n.dh 0xff02, 0x297a, 0x5720, 0x0063, 0xff10, 0x27a9, 0x5896, 0x00ae // 0x00000220\n.dh 0xff1e, 0x25e0, 0x59fc, 0x0101, 0xff2c, 0x241e, 0x5b53, 0x015b // 0x00000230\n.dh 0xff3a, 0x2264, 0x5c9a, 0x01be, 0xff48, 0x20b3, 0x5dd0, 0x022a // 0x00000240\n.dh 0xff56, 0x1f0b, 0x5ef5, 0x029f, 0xff64, 0x1d6c, 0x6007, 0x031c // 0x00000250\n.dh 0xff71, 0x1bd7, 0x6106, 0x03a4, 0xff7e, 0x1a4c, 0x61f3, 0x0435 // 0x00000260\n.dh 0xff8a, 0x18cb, 0x62cb, 0x04d1, 0xff96, 0x1756, 0x638f, 0x0577 // 0x00000270\n.dh 0xffa1, 0x15eb, 0x643f, 0x0628, 0xffac, 0x148c, 0x64d9, 0x06e4 // 0x00000280\n.dh 0xffb6, 0x1338, 0x655e, 0x07ab, 0xffbf, 0x11f0, 0x65cd, 0x087d // 0x00000290\n.dh 0xffc8, 0x10b4, 0x6626, 0x095a, 0xffd0, 0x0f83, 0x6669, 0x0a44 // 0x000002a0\n.dh 0xffd8, 0x0e5f, 0x6696, 0x0b39, 0xffdf, 0x0d46, 0x66ad, 0x0c39 // 0x000002b0\n.ifdef VERSION_SH_CN\n.dh 0xFFFF, 0xDFFF, 0xBFFF, 0x9FFF, 0x7FFF, 0x5FFF, 0x3FFF, 0x1FFF\n.dh 0x0000, 0x2000, 0x4000, 0x6000, 0x8000, 0xA000, 0xC000, 0xE000\n.dh 0x0000, 0x0002, 0x0004, 0x0006, 0x0008, 0x000A, 0x000C, 0x000E\n.endif\n\n.definelabel segmentTable, 0x320\n\n.ifdef VERSION_SH_CN\n.definelabel audioStruct, 0x320\n.else\n.definelabel audioStruct, 0x360\n.endif\naudio_in_buf        equ 0x00 // 0x360\naudio_out_buf       equ 0x02 // 0x362\naudio_count         equ 0x04 // 0x364\naudio_vol_left      equ 0x06 // 0x366\naudio_vol_right     equ 0x08 // 0x366\naudio_aux_buf0      equ 0x0a // 0x36a\naudio_aux_buf1      equ 0x0c // 0x36c\naudio_aux_buf2      equ 0x0e // 0x36e\naudio_loop_value    equ 0x10 // 0x370 (shared)\naudio_target_left   equ 0x10 // 0x370 (shared)\naudio_rate_hi_left  equ 0x12 // 0x372 (shared)\naudio_rate_lo_left  equ 0x14 // 0x374\naudio_target_right  equ 0x16 // 0x376\naudio_rate_hi_right equ 0x18 // 0x378\n.ifdef VERSION_SH_CN\n.definelabel audio_rate_lo_right, 0x04 // 0x37a\n.else\n.definelabel audio_rate_lo_right, 0x1a // 0x37a\n.endif\naudio_dry_gain      equ 0x1c // 0x37c\naudio_wet_gain      equ 0x1e // 0x37e\n\n.ifdef VERSION_SH_CN\n.definelabel nextTaskEntry, 0x340\n.definelabel adpcmTable,    0x3c0\n.else\n.definelabel nextTaskEntry, 0x380 // next task entries (0x140 bytes)\n.definelabel adpcmTable,    0x4c0 // (16*8 16-bit entries)\n.endif\n\n.definelabel dmemBase,      0x5c0 // all samples stored that is transferred to DMEM\n.definelabel tmpData,       0xF90 // temporary area\n\n.close // DATA_FILE\n\n\n.create CODE_FILE, 0x04001080\n\n    addi  $24, $zero, audioStruct\n    addi  $23, $zero, tmpData\n    lw    $28, 0x30($1)        // task_data\n    lw    $27, 0x34($1)        // task_data_size\n    mfc0  $5, DPC_STATUS\n    andi  $4, $5, DPC_STATUS_XBUS_DMA\n    beqz  $4, @@audio_040010b4\n     andi  $4, $5, DPC_STATUS_DMA_BUSY\n    beqz  $4, @@audio_040010b4\n     nop\n@@dpc_dma_busy:\n    mfc0  $4, DPC_STATUS\n    andi  $4, $4, DPC_STATUS_DMA_BUSY\n    bgtz  $4, @@dpc_dma_busy\n@@audio_040010b4:\n     nop\n    jal   audio_04001150\n     nop\n.ifndef VERSION_SH_CN\n    addi  $2, $zero, 0x000f\n    addi  $1, $zero, segmentTable\n@@audio_040010c8:\n    sw    $zero, 0x00($1)\n    bgtz  $2, @@audio_040010c8\n     addi  $2, $2, -1\n.endif\n\ndma_busy:\n    mfc0  $2, SP_DMA_BUSY\n    bnez  $2, dma_busy\n     addi  $29, $zero, nextTaskEntry\n    mtc0  $zero, SP_SEMAPHORE  // release semaphore\naudio_040010e4:\n    lw    $26, 0x00($29)       // first word of command\n    lw    $25, 0x04($29)       // second word of command\n    srl   $1, $26, 23          // cmd byte << 1\n    andi  $1, $1, 0x00fe\n    addi  $28, $28, 8\n    addi  $27, $27, -8\n    addi  $29, $29, 8\n    addi  $30, $30, -8\n    add   $2, $zero, $1\n    lh    $2, (dispatchTable)($2)\n    jr    $2\n     nop\n    break\n\ncmd_SPNOOP:\n    bgtz  $30, audio_040010e4\n     nop\n    blez  $27, @@audio_04001138\n     nop\n    jal   audio_04001150\n     nop\n    j     dma_busy\n     nop\n@@audio_04001138:\n    ori   $1, $zero, 0x4000\n    mtc0  $1, SP_STATUS\n    break\n    nop\n@@forever:\n    b     @@forever\n     nop\n\naudio_04001150:\n    addi  $5, $ra, 0x0000\n    add   $2, $zero, $28\n    addi  $3, $27, 0x0000\n.ifdef VERSION_SH_CN\n    addi  $4, $3, -0x80\n.else\n    addi  $4, $3, -0x0140\n.endif\n    blez  $4, @@audio_0400116c\n     addi  $1, $zero, nextTaskEntry\n.ifdef VERSION_SH_CN\n    addi  $3, $zero, 0x80\n.else\n    addi  $3, $zero, 0x0140\n.endif\n@@audio_0400116c:\n    addi  $30, $3, 0x0000\n    jal   dma_read_start\n     addi  $3, $3, -1\n    addi  $29, $zero, nextTaskEntry\n    jr    $5\n     nop\n\ndma_read_start:\n    mfc0  $4, SP_SEMAPHORE\n    bnez  $4, dma_read_start\n     nop\n@@dma_not_full:\n    mfc0  $4, SP_DMA_FULL\n    bnez  $4, @@dma_not_full\n     nop\n    mtc0  $1, SP_MEM_ADDR\n    mtc0  $2, SP_DRAM_ADDR\n    mtc0  $3, SP_RD_LEN\n    jr    $ra\n     nop\n\ndma_write_start:\n    mfc0  $4, SP_SEMAPHORE\n    bnez  $4, dma_write_start\n     nop\n@@dma_not_full:\n    mfc0  $4, SP_DMA_FULL\n    bnez  $4, @@dma_not_full\n     nop\n    mtc0  $1, SP_MEM_ADDR\n    mtc0  $2, SP_DRAM_ADDR\n    mtc0  $3, SP_WR_LEN\n    jr    $ra\n     nop\n\ncmd_CLEARBUFF:\n    andi  $3, $25, 0xffff\n    beqz  $3, cmd_SPNOOP\n.ifndef VERSION_SH_CN\n     addi  $4, $zero, dmemBase\n.endif\n    andi  $2, $26, 0xffff\n.ifndef VERSION_SH_CN\n    add   $2, $2, $4\n.endif\n.ifdef VERSION_SH_CN\n    vxor  $v0, $v0, $v0\n.else\n    vxor  $v1, $v1, $v1\n.endif\n    addi  $3, $3, -0x10\n@@audio_040011f8:\n.ifdef VERSION_SH_CN\n    sdv   $v0[0], 0x0($2)\n    sdv   $v0[0], 0x8($2)\n.else\n    sdv   $v1[0], 0x0($2)\n    sdv   $v1[0], 0x8($2)\n.endif\n    addi  $2, $2, 0x10\n    bgtz  $3, @@audio_040011f8\n     addi  $3, $3, -0x10\n    j     cmd_SPNOOP\n     nop\n\n.ifndef VERSION_SH_CN\ncmd_LOADBUFF:\n    lhu   $3, (audio_count)($24)\n    beqz  $3, cmd_SPNOOP\n     sll   $2, $25, 8\n    srl   $2, $2, 8\n    srl   $4, $25, 24\n    sll   $4, $4, 2\n    lw    $5, (segmentTable)($4)\n    add   $2, $2, $5\n    lhu   $1, (audio_in_buf)($24)\n    jal   dma_read_start\n     addi  $3, $3, -1\n@@dma_read_busy:\n    mfc0  $1, SP_DMA_BUSY\n    bnez  $1, @@dma_read_busy\n     nop\n    j     cmd_SPNOOP\n     mtc0  $zero, SP_SEMAPHORE\n\ncmd_SAVEBUFF:\n    lhu   $3, (audio_count)($24)\n    beqz  $3, cmd_SPNOOP\n     sll   $2, $25, 8\n    srl   $2, $2, 8\n    srl   $4, $25, 24\n    sll   $4, $4, 2\n    lw    $5, (segmentTable)($4)\n    add   $2, $2, $5\n    lhu   $1, (audio_out_buf)($24)\n    jal   dma_write_start\n     addi  $3, $3, -1\n@@dma_write_busy:\n    mfc0  $1, SP_DMA_BUSY\n    bnez  $1, @@dma_write_busy\n     nop\n    j     cmd_SPNOOP\n     mtc0  $zero, SP_SEMAPHORE\n\ncmd_LOADADPCM:\n    sll   $2, $25, 8\n    srl   $2, $2, 8\n    srl   $4, $25, 24\n    sll   $4, $4, 2\n    lw    $5, (segmentTable)($4)\n    add   $2, $2, $5\n    addi  $1, $zero, adpcmTable\n    andi  $3, $26, 0xffff\n    jal   dma_read_start\n     addi  $3, $3, -1\n@@dma_read_busy:\n    mfc0  $1, SP_DMA_BUSY\n    bnez  $1, @@dma_read_busy\n     nop\n    j     cmd_SPNOOP\n     mtc0  $zero, SP_SEMAPHORE\n.endif\ncmd_SEGMENT:\n.ifndef VERSION_SH_CN\n    sll   $3, $25, 8           // Least significant 24-bits offset\n    srl   $3, $3, 8\n    srl   $2, $25, 24          // Most significant 8-bits segment number\n    sll   $2, $2, 2\n    add   $4, $zero, $2\n    j     cmd_SPNOOP\n     sw    $3, (segmentTable)($4)\n.endif\n\n.ifndef VERSION_SH_CN\ncmd_SETBUFF:\n    addi  $1, $26, dmemBase\n    srl   $2, $25, 16\n    addi  $2, $2, dmemBase\n    srl   $4, $26, 16\n    andi  $4, $4, A_AUX\n    bgtz  $4, @@audio_04001318\n     addi  $3, $25, dmemBase\n    sh    $1, (audio_in_buf)($24)\n    sh    $2, (audio_out_buf)($24)\n    j     cmd_SPNOOP\n     sh    $25, (audio_count)($24)\n@@audio_04001318:\n    sh    $3, (audio_aux_buf2)($24)\n    sh    $1, (audio_aux_buf0)($24)\n    j     cmd_SPNOOP\n     sh    $2, (audio_aux_buf1)($24)\n.endif\n\n.ifdef VERSION_SH_CN\ncmd_SETBUFF:\n    srl   $2, $25, 16\n    sh    $26, 0($24)\n    sh    $2, 2($24)\n.else\ncmd_SETVOL:\n    srl   $2, $26, 16\n    andi  $1, $2, A_AUX\n    beqz  $1, @@audio_04001344\n     andi  $1, $2, A_VOL\n    sh    $26, (audio_dry_gain)($24)\n    j     cmd_SPNOOP\n     sh    $25, (audio_wet_gain)($24)\n@@audio_04001344:\n    beqz  $1, @@audio_04001364\n     andi  $1, $2, A_LEFT\n    beqz  $1, @@audio_0400135c\n     nop\n    j     cmd_SPNOOP\n     sh    $26, (audio_vol_left)($24)\n@@audio_0400135c:\n    j     cmd_SPNOOP\n     sh    $26, (audio_vol_right)($24)\n@@audio_04001364:\n    beqz  $1, @@audio_0400137c\n     srl   $1, $25, 16\n    sh    $26, (audio_target_left)($24)\n    sh    $1, (audio_rate_hi_left)($24)\n    j     cmd_SPNOOP\n     sh    $25, (audio_rate_lo_left)($24)\n@@audio_0400137c:\n    sh    $26, (audio_target_right)($24)\n    sh    $1, (audio_rate_hi_right)($24)\n.endif\n    j     cmd_SPNOOP\n     sh    $25, (audio_rate_lo_right)($24)\n\ncmd_INTERLEAVE:\n.ifdef VERSION_SH_CN\n    andi  $a0, $k0, 0xffff\n    srl   $at, $k0, 12\n    andi  $at, $at, 0xff0\n    andi  $v1, $t9, 0xffff\n    srl   $v0, $t9, 16\n@@audio_040013a8:\n    ldv   $v1[0], 0x0($2)\n    ldv   $v2[0], 0x0($3)\n    addi  $at, $at, -8\n    addi  $a0, $a0, 16\n    ssv   $v1[0], 0xF0($4)\n    ssv   $v1[2], 0xF4($4)\n    addi  $v0, $v0, 8\n    ssv   $v1[4], 0xF8($4)\n    ssv   $v1[6], 0xFC($4)\n    ssv   $v2[0], 0xF2($4)\n    addi  $v1, $v1, 8\n    ssv   $v2[2], 0xF6($4)\n    ssv   $v2[4], 0xFA($4)\n.else\n    lhu   $1, (audio_count)($24)\n    lhu   $4, (audio_out_buf)($24)\n    beqz  $1, cmd_SPNOOP\n     andi  $3, $25, 0xffff\n    addi  $3, $3, dmemBase\n    srl   $2, $25, 16\n    addi  $2, $2, dmemBase\n@@audio_040013a8:\n    lqv   $v1[0], 0x00($2)\n    lqv   $v2[0], 0x00($3)\n    ssv   $v1[0], 0x00($4)\n    ssv   $v2[0], 0x02($4)\n    ssv   $v1[2], 0x04($4)\n    ssv   $v2[2], 0x06($4)\n    ssv   $v1[4], 0x08($4)\n    ssv   $v2[4], 0x0a($4)\n    ssv   $v1[6], 0x0c($4)\n    ssv   $v2[6], 0x0e($4)\n    ssv   $v1[8], 0x10($4)\n    ssv   $v2[8], 0x12($4)\n    ssv   $v1[10], 0x14($4)\n    ssv   $v2[10], 0x16($4)\n    ssv   $v1[12], 0x18($4)\n    ssv   $v2[12], 0x1a($4)\n    ssv   $v1[14], 0x1c($4)\n    ssv   $v2[14], 0x1e($4)\n    addi  $1, $1, -0x10\n    addi  $2, $2, 0x10\n    addi  $3, $3, 0x10\n.endif\n    bgtz  $1, @@audio_040013a8\n.ifdef VERSION_SH_CN\n     ssv   $v2[6], 0xFE($a0)\n.else\n     addi  $4, $4, 0x20\n.endif\n    j     cmd_SPNOOP\n     nop\n\ncmd_DMEMMOVE:\n    andi  $1, $25, 0xffff\n    beqz  $1, cmd_SPNOOP\n     andi  $2, $26, 0xffff\n.ifndef VERSION_SH_CN\n    addi  $2, $2, dmemBase\n.endif\n    srl   $3, $25, 16\n.ifndef VERSION_SH_CN\n    addi  $3, $3, dmemBase\n.endif\n@@audio_04001424:\n    ldv   $v1[0], 0x0($2)\n    ldv   $v2[0], 0x8($2)\n    addi  $1, $1, -0x10\n    addi  $2, $2, 0x10\n    sdv   $v1[0], 0x0($3)\n    sdv   $v2[0], 0x8($3)\n    bgtz  $1, @@audio_04001424\n     addi  $3, $3, 0x10\n    j     cmd_SPNOOP\n     nop\n\ncmd_SETLOOP:\n    sll   $1, $25, 8\n    srl   $1, $1, 8\n.ifndef VERSION_SH_CN\n    srl   $3, $25, 24\n    sll   $3, $3, 2\n    lw    $2, (segmentTable)($3)\n    add   $1, $1, $2\n    sw    $1, (audio_loop_value)($24)\n.endif\n    j     cmd_SPNOOP\n.ifdef VERSION_SH_CN\n     sw    $at, 0x10($t8)\n.else\n     nop\n.endif\n\ncmd_ADPCM:\n    lqv   $v31[0], 0x00($zero)\n    vxor  $v27, $v27, $v27\n    lhu   $21, (audio_in_buf)($24)\n    vxor  $v25, $v25, $v25\n    vxor  $v24, $v24, $v24\n    addi  $20, $21, 1\n    lhu   $19, (audio_out_buf)($24)\n    vxor  $v13, $v13, $v13\n    vxor  $v14, $v14, $v14\n    lhu   $18, (audio_count)($24)\n    vxor  $v15, $v15, $v15\n.ifndef VERSION_SH_CN\n    lui   $1, 0x00ff\n.endif\n    vxor  $v16, $v16, $v16\n.ifdef VERSION_SH_CN\n    sll   $s1, $t9, 8\n.else\n    ori   $1, $1, 0xffff\n.endif\n    vxor  $v17, $v17, $v17\n.ifndef VERSION_SH_CN\n    and   $17, $25, $1\n.endif\n    vxor  $v18, $v18, $v18\n.ifdef VERSION_SH_CN\n    srl   $s1, $s1, 8\n.else\n    srl   $2, $25, 24\n.endif\n    vxor  $v19, $v19, $v19\n.ifndef VERSION_SH_CN\n    sll   $2, $2, 2\n    lw    $3, (segmentTable)($2)\n    add   $17, $17, $3          // last frame addr\n.endif\n    sqv   $v27[0], 0x00($19)\n    sqv   $v27[0], 0x10($19)\n    srl   $1, $26, 16\n    andi  $1, $1, A_INIT\n    bgtz  $1, @@audio_0400150c\n     srl   $1, $26, 16\n    andi  $1, $1, A_LOOP\n    beq   $zero, $1, @@audio_040014f0\n     addi  $2, $17, 0x00\n    lw    $2, (audio_loop_value)($24)\n@@audio_040014f0:\n    addi  $1, $19, 0x0000\n    jal   dma_read_start\n     addi  $3, $zero, 0x1f\n@@dma_read_busy:\n    mfc0  $5, SP_DMA_BUSY\n    bnez  $5, @@dma_read_busy\n     nop\n    mtc0  $zero, SP_SEMAPHORE\n@@audio_0400150c:\n.ifdef VERSION_SH_CN\n    addi  $16, $zero, 0x0050\n.else\n    addi  $16, $zero, 0x0030\n.endif\n    addi  $15, $zero, adpcmTable\n    ldv   $v25[0], 0x00($16)\n    ldv   $v24[8], 0x00($16)\n    ldv   $v23[0], 0x08($16)\n    ldv   $v23[8], 0x08($16)\n    lqv   $v27[0], 0x10($19)    // last 8 frames\n    addi  $19, $19, 0x20\n    beqz  $18, @@audio_040016e8\n     ldv   $v1[0], 0x00($20)\n    lbu   $1, 0x00($21)\n    andi  $11, $1, 0x000f\n    sll   $11, $11, 5\n    vand  $v3, $v25, $v1[0]\n    add   $13, $11, $15\n    vand  $v4, $v24, $v1[1]\n    srl   $14, $1, 4\n    vand  $v5, $v25, $v1[2]\n    addi  $2, $zero, 12\n    vand  $v6, $v24, $v1[3]\n    sub   $14, $2, $14\n    addi  $2, $14, -1\n    addi  $3, $zero, 1\n    sll   $3, $3, 15\n    srlv  $4, $3, $2\n    mtc2  $4, $v22[0]\n    lqv   $v21[0], 0x00($13)\n    lqv   $v20[0], 0x10($13)\n    addi  $13, $13, -2\n    lrv   $v19[0], 0x20($13)\n    addi  $13, $13, -2\n    lrv   $v18[0], 0x20($13)\n    addi  $13, $13, -2\n    lrv   $v17[0], 0x20($13)\n    addi  $13, $13, -2\n    lrv   $v16[0], 0x20($13)\n    addi  $13, $13, -2\n    lrv   $v15[0], 0x20($13)\n    addi  $13, $13, -2\n    lrv   $v14[0], 0x20($13)\n    addi  $13, $13, -2\n    lrv   $v13[0], 0x20($13)\n@@audio_040015b4:\n    addi  $20, $20, 9\n    vmudn $v30, $v3, $v23\n    addi  $21, $21, 9\n    vmadn $v30, $v4, $v23\n    ldv   $v1[0], 0x00($20)\n    vmudn $v29, $v5, $v23\n    lbu   $1, 0x00($21)\n    vmadn $v29, $v6, $v23\n    blez  $14, @@audio_040015e4\n     andi  $11, $1, 0x000f\n    vmudm $v30, $v30, $v22[0]\n    vmudm $v29, $v29, $v22[0]\n@@audio_040015e4:\n    sll   $11, $11, 5\n    vand  $v3, $v25, $v1[0]\n    add   $13, $11, $15\n    vand  $v4, $v24, $v1[1]\n    vand  $v5, $v25, $v1[2]\n    vand  $v6, $v24, $v1[3]\n    srl   $14, $1, 4\n    vmudh $v2, $v21, $v27[6]\n    addi  $2, $zero, 12\n    vmadh $v2, $v20, $v27[7]\n    sub   $14, $2, $14\n    vmadh $v2, $v19, $v30[0]\n    addi  $2, $14, -1\n    vmadh $v2, $v18, $v30[1]\n    addi  $3, $zero, 1\n    vmadh $v2, $v17, $v30[2]\n    sll   $3, $3, 15\n    vmadh $v2, $v16, $v30[3]\n    srlv  $4, $3, $2\n    vmadh $v28, $v15, $v30[4]\n    mtc2  $4, $v22[0]\n    vmadh $v2, $v14, $v30[5]\n    vmadh $v2, $v13, $v30[6]\n    vmadh $v2, $v30, $v31[5]\n    vsar  $v26, $v7, $v28[1]\n    vsar  $v28, $v7, $v28[0]\n    vmudn $v2, $v26, $v31[4]\n    vmadh $v28, $v28, $v31[4]\n    vmudh $v2, $v19, $v29[0]\n    addi  $12, $13, -2\n    vmadh $v2, $v18, $v29[1]\n    lrv   $v19[0], 0x20($12)\n    vmadh $v2, $v17, $v29[2]\n    addi  $12, $12, -2\n    vmadh $v2, $v16, $v29[3]\n    lrv   $v18[0], 0x20($12)\n    vmadh $v2, $v15, $v29[4]\n    addi  $12, $12, -2\n    vmadh $v2, $v14, $v29[5]\n    lrv   $v17[0], 0x20($12)\n    vmadh $v2, $v13, $v29[6]\n    addi  $12, $12, -2\n    vmadh $v2, $v29, $v31[5]\n    lrv   $v16[0], 0x20($12)\n    vmadh $v2, $v21, $v28[6]\n    addi  $12, $12, -2\n    vmadh $v2, $v20, $v28[7]\n    lrv   $v15[0], 0x20($12)\n    vsar  $v26, $v7, $v27[1]\n    addi  $12, $12, -2\n    vsar  $v27, $v7, $v27[0]\n    lrv   $v14[0], 0x20($12)\n    addi  $12, $12, -2\n    lrv   $v13[0], 0x20($12)\n    lqv   $v21[0], 0x00($13)\n    vmudn $v2, $v26, $v31[4]\n    lqv   $v20[0], 0x10($13)\n    vmadh $v27, $v27, $v31[4]\n    addi  $18, $18, -0x20\n    sdv   $v28[0], 0x00($19)\n    sdv   $v28[8], 0x08($19)\n    sdv   $v27[0], 0x10($19)\n    sdv   $v27[8], 0x18($19)\n    bgtz  $18, @@audio_040015b4\n     addi  $19, $19, 0x20\n@@audio_040016e8:\n    addi  $1, $19, -0x20\n    addi  $2, $17, 0x00\n    jal   dma_write_start\n     addi  $3, $zero, 0x1f\n@@dma_write_busy:\n    mfc0  $5, SP_DMA_BUSY\n    bnez  $5, @@dma_write_busy\n     nop\n    j     cmd_SPNOOP\n     mtc0  $zero, SP_SEMAPHORE\n\ncmd_POLEF: // unused by SM64\n.ifndef VERSION_SH_CN\n    lqv   $v31[0], 0x0000($zero)\n    vxor  $v28, $v28, $v28\n    lhu   $21, (audio_in_buf)($24)\n    vxor  $v17, $v17, $v17\n    lhu   $20, (audio_out_buf)($24)\n    vxor  $v18, $v18, $v18\n    lhu   $19, (audio_count)($24)\n    vxor  $v19, $v19, $v19\n    beqz  $19, @@audio_04001874\n     andi  $14, $26, 0xffff\n    mtc2  $14, $v31[10]\n    sll   $14, $14, 2\n    mtc2  $14, $v16[0]\n    lui   $1, 0x00ff\n    vxor  $v20, $v20, $v20\n    ori   $1, $1, 0xffff\n    vxor  $v21, $v21, $v21\n    and   $18, $25, $1\n    vxor  $v22, $v22, $v22\n    srl   $2, $25, 24\n    vxor  $v23, $v23, $v23\n    sll   $2, $2, 2\n    lw    $3, (segmentTable)($2)\n    add   $18, $18, $3\n    slv   $v28[0], 0x00($23)\n    srl   $1, $26, 16\n    andi  $1, $1, 0x0001\n    bgtz  $1, @@audio_040017a0\n     nop\n    addi  $1, $23, 0x0000\n    addi  $2, $18, 0x0000\n    jal   dma_read_start\n     addi  $3, $zero, 7\n.endif\n@@dma_read_busy:\n.ifndef VERSION_SH_CN\n    mfc0  $5, SP_DMA_BUSY\n    bnez  $5, @@dma_read_busy\n     nop\n    mtc0  $zero, SP_SEMAPHORE\n.endif\n@@audio_040017a0:\n.ifndef VERSION_SH_CN\n    addi  $13, $zero, adpcmTable\n    addi  $1, $zero, 0x0004\n    mtc2  $1, $v14[0]\n    lqv   $v24[0], 0x0010($13)\n    vmudm $v16, $v24, $v16[0]\n    ldv   $v28[8], 0x00($23)\n    sqv   $v16[0], 0x10($13)\n    lqv   $v25[0], 0x00($13)\n    addi  $13, $13, -2\n    lrv   $v23[0], 0x20($13)\n    addi  $13, $13, -2\n    lrv   $v22[0], 0x20($13)\n    addi  $13, $13, -2\n    lrv   $v21[0], 0x20($13)\n    addi  $13, $13, -2\n    lrv   $v20[0], 0x20($13)\n    addi  $13, $13, -2\n    lrv   $v19[0], 0x20($13)\n    addi  $13, $13, -2\n    lrv   $v18[0], 0x20($13)\n    addi  $13, $13, -2\n    lrv   $v17[0], 0x20($13)\n    ldv   $v30[0], 0x00($21)\n    ldv   $v30[8], 0x08($21)\n.endif\n@@audio_04001800:\n.ifndef VERSION_SH_CN\n    vmudh $v16, $v25, $v28[6]\n    addi  $21, $21, 0x10\n    vmadh $v16, $v24, $v28[7]\n    addi  $19, $19, -0x10\n    vmadh $v16, $v23, $v30[0]\n    vmadh $v16, $v22, $v30[1]\n    vmadh $v16, $v21, $v30[2]\n    vmadh $v16, $v20, $v30[3]\n    vmadh $v28, $v19, $v30[4]\n    vmadh $v16, $v18, $v30[5]\n    vmadh $v16, $v17, $v30[6]\n    vmadh $v16, $v30, $v31[5]\n    ldv   $v30[0], 0x00($21)\n    vsar  $v26, $v15, $v28[1]\n    ldv   $v30[8], 0x08($21)\n    vsar  $v28, $v15, $v28[0]\n    vmudn $v16, $v26, $v14[0]\n    vmadh $v28, $v28, $v14[0]\n    sdv   $v28[0], 0x00($20)\n    sdv   $v28[8], 0x08($20)\n    bgtz  $19, @@audio_04001800\n     addi  $20, $20, 0x10\n    addi  $1, $20, -8\n    addi  $2, $18, 0x00\n    jal   dma_write_start\n     addi  $3, $zero, 7\n.endif\n@@dma_write_busy:\n.ifndef VERSION_SH_CN\n    mfc0  $5, SP_DMA_BUSY\n    bnez  $5, @@dma_write_busy\n     nop\n.endif\n@@audio_04001874:\n.ifndef VERSION_SH_CN\n    j     cmd_SPNOOP\n     mtc0  $zero, SP_SEMAPHORE\n.endif\n\ncmd_RESAMPLE:\n    lh    $8, (audio_in_buf)($24)\n    lh    $19, (audio_out_buf)($24)\n    lh    $18, (audio_count)($24)\n.ifdef VERSION_SH_CN\n    sll   $v0, $t9, 8\n    srl   $v0, $v0, 8\n.else\n    lui   $4, 0x00ff\n    ori   $4, $4, 0xffff\n    and   $2, $25, $4\n    srl   $5, $25, 24\n    sll   $5, $5, 2\n    lw    $6, (segmentTable)($5)\n    add   $2, $2, $6          // physical address of state_addr\n.endif\n    addi  $1, $23, 0x0000\n    sw    $2, 0x40($23)       // overwrite TASK_UCODE ptr\n    addi  $3, $zero, 0x1f\n    srl   $7, $26, 16\n    andi  $10, $7, A_INIT\n    bgtz  $10, @@audio_040018dc\n     nop\n    jal   dma_read_start\n     nop\n@@dma_read_busy:\n    mfc0  $1, SP_DMA_BUSY\n    bnez  $1, @@dma_read_busy\n     nop\n    j     @@audio_040018e8\n     mtc0  $zero, SP_SEMAPHORE\n@@audio_040018dc:\n    sh    $zero, 0x08($23)\n    vxor  $v16, $v16, $v16\n    sdv   $v16[0], 0x00($23)\n@@audio_040018e8:\n    andi  $10, $7, 0x02      // A_LOOP? A_OUT?\n    beqz  $10, @@audio_04001908\n.ifdef VERSION_SH_CN\n     ldv   $v16[0], 0x00($23)\n    addi  $t0, $t0, -4\n    ssv   $v16[0], 0x00($t0)\n    ssv   $v16[4], 0x02($t0)\n    j     @@audio_c410c\n     nop\n.else\n     nop\n    lh    $11, 0x0a($23)\n    lqv   $v3[0], 0x10($23)\n    sdv   $v3[0], -0x10($8)\n    sdv   $v3[8], -0x08($8)\n    sub   $8, $8, $11\n.endif\n\n@@audio_04001908:\n.ifdef VERSION_SH_CN\n    andi  $t2, $a3, 4\n    beqz  $t2, @@audio_c4104\n     nop\n    addi  $t0, $t0, -16\n    ssv   $v16[0], 0x00($t0)\n    ssv   $v16[0], 0x02($t0)\n    ssv   $v16[2], 0x04($t0)\n    ssv   $v16[2], 0x06($t0)\n    ssv   $v16[4], 0x08($t0)\n    ssv   $v16[4], 0x0a($t0)\n    ssv   $v16[6], 0x0c($t0)\n    ssv   $v16[6], 0x0e($t0)\n    j     @@audio_c410c\n     nop\n@@audio_c4104:\n.endif\n    addi  $8, $8, -8\n.ifdef VERSION_SH_CN\n    sdv   $v16[0], 0x00($8)\n.endif\n@@audio_c410c:\n    lsv   $v23[14], 0x08($23)   // saved pitch_accumulator\n.ifdef VERSION_SH_CN\n    ldv   $v16[0], 0x00($8)\n.else\n    ldv   $v16[0], 0x00($23)    // saved next 4 unprocessed samples\n    sdv   $v16[0], 0x00($8)     // store them before the input samples\n.endif\n    mtc2  $8, $v18[4]\n.ifdef VERSION_SH_CN\n    addi  $10, $zero, 0x100\n.else\n    addi  $10, $zero, 0xc0\n.endif\n    mtc2  $10, $v18[6]\n    mtc2  $26, $v18[8]          // pitch\n    addi  $10, $zero, 0x40\n    mtc2  $10, $v18[10]\n.ifdef VERSION_SH_CN\n    addi  $9, $zero, 0x60\n.else\n    addi  $9, $zero, data0040\n.endif\n    lqv   $v31[0], 0x10($9)     // 0x50\n    lqv   $v25[0], 0x00($9)     // 0x40\n    vsub  $v25, $v25, $v31\n    lqv   $v30[0], 0x20($9)     // 0x60\n    lqv   $v29[0], 0x30($9)     // 0x70\n    lqv   $v28[0], 0x40($9)     // 0x80\n    lqv   $v27[0], 0x50($9)     // 0x90\n    lqv   $v26[0], 0x60($9)     // 0xA0\n    vsub  $v25, $v25, $v31\n    lqv   $v24[0], 0x70($9)     // 0xB0\n    addi  $21, $23, 0x20\n    addi  $20, $23, 0x30\n    vxor  $v22, $v22, $v22\n    vmudm $v23, $v31, $v23[7]   // load pitch_accumulator into every vector element\n    vmadm $v22, $v25, $v18[4]   // (accumulate with pitch times index) >> 16\n    vmadn $v23, $v31, $v30[0]   // result & 0xffff\n    vmudn $v21, $v31, $v18[2]   // load the in address into every vector element\n    vmadn $v21, $v22, $v30[2]   // accumulate with 2 * $v22\n    vmudl $v17, $v23, $v18[5]   // 64 * $v23 >> 16\n    vmudn $v17, $v17, $v30[4]   // * 8\n    vmadn $v17, $v31, $v18[3]   // += 0x00c0 (resample lookup table address)\n    lqv   $v25[0], 0x00($9)\n    sqv   $v21[0], 0x00($21)\n    sqv   $v17[0], 0x00($20)\n    ssv   $v23[7], 0x08($23)\n    lh    $17, 0x00($21)\n    lh    $9, 0x00($20)\n    lh    $13, 0x08($21)\n    lh    $5, 0x08($20)\n    lh    $16, 0x02($21)\n    lh    $8, 0x02($20)\n    lh    $12, 0x0a($21)\n    lh    $4, 0x0a($20)\n    lh    $15, 0x04($21)\n    lh    $7, 0x04($20)\n    lh    $11, 0x0c($21)\n    lh    $3, 0x0c($20)\n    lh    $14, 0x06($21)\n    lh    $6, 0x06($20)\n    lh    $10, 0x0e($21)\n    lh    $2, 0x0e($20)\n@@audio_040019d8:\n    ldv   $v16[0], 0x00($17)\n    vmudm $v23, $v31, $v23[7]\n    ldv   $v15[0], 0x00($9)\n    vmadh $v23, $v31, $v22[7]\n    ldv   $v16[8], 0x00($13)\n    vmadm $v22, $v25, $v18[4]\n    ldv   $v15[8], 0x00($5)\n    vmadn $v23, $v31, $v30[0]\n    ldv   $v14[0], 0x00($16)\n    vmudn $v21, $v31, $v18[2]\n    ldv   $v13[0], 0x00($8)\n    vmadn $v21, $v22, $v30[2]\n    ldv   $v14[8], 0x00($12)\n    vmudl $v17, $v23, $v18[5]\n    ldv   $v13[8], 0x00($4)\n    ldv   $v12[0], 0x00($15)\n    ldv   $v11[0], 0x00($7)\n    ldv   $v12[8], 0x00($11)\n    vmudn $v17, $v17, $v30[4]\n    ldv   $v11[8], 0x00($3)\n    ldv   $v10[0], 0x00($14)\n    ldv   $v9[0], 0x00($6)\n    vmadn $v17, $v31, $v18[3]\n    ldv   $v10[8], 0x00($10)\n    vmulf $v8, $v16, $v15\n    ldv   $v9[8], 0x00($2)\n    vmulf $v7, $v14, $v13\n    sqv   $v21[0], 0x00($21)\n    vmulf $v6, $v12, $v11\n    sqv   $v17[0], 0x00($20)\n    lh    $17, 0x00($21)\n    vmulf $v5, $v10, $v9\n    lh    $9, 0x00($20)\n    vadd  $v8, $v8, $v8[1q]\n    lh    $13, 0x08($21)\n    vadd  $v7, $v7, $v7[1q]\n    lh    $5, 0x08($20)\n    vadd  $v6, $v6, $v6[1q]\n    lh    $16, 0x02($21)\n    vadd  $v5, $v5, $v5[1q]\n    lh    $8, 0x02($20)\n    vadd  $v8, $v8, $v8[2h]\n    lh    $12, 0x0a($21)\n    vadd  $v7, $v7, $v7[2h]\n    lh    $4, 0x0a($20)\n    vadd  $v6, $v6, $v6[2h]\n    lh    $15, 0x04($21)\n    vadd  $v5, $v5, $v5[2h]\n    lh    $7, 0x04($20)\n    vmudn $v4, $v29, $v8[0h]\n    lh    $11, 0x0c($21)\n    vmadn $v4, $v28, $v7[0h]\n    lh    $3, 0x0c($20)\n    vmadn $v4, $v27, $v6[0h]\n    lh    $14, 0x06($21)\n    vmadn $v4, $v26, $v5[0h]\n    lh    $6, 0x06($20)\n    lh    $10, 0x0e($21)\n    addi  $18, $18, -0x10\n    sqv   $v4[0], 0x00($19)\n    blez  $18, @@audio_04001ad8\n     lh    $2, 0x0e($20)\n    j     @@audio_040019d8\n     addi  $19, $19, 0x0010\n@@audio_04001ad8:\n    ssv   $v23[0], 0x08($23)\n    ldv   $v16[0], 0x00($17)\n    sdv   $v16[0], 0x00($23)\n.ifndef VERSION_SH_CN\n    lh    $6, (audio_in_buf)($24)\n    addi  $17, $17, 8\n    sub   $5, $17, $6\n    andi  $4, $5, 0x000f\n    sub   $17, $17, $4\n    beqz  $4, @@audio_04001b04\n     addi $7, $zero, 0x10\n    sub   $4, $7, $4\n@@audio_04001b04:\n    sh    $4, 0x0a($23)\n    ldv   $v3[0], 0x00($17)\n    ldv   $v3[8], 0x08($17)\n    sqv   $v3[0], 0x10($23)\n.endif\n    lw    $2, 0x40($23)\n    addi  $1, $23, 0x00\n    jal   dma_write_start\n     addi  $3, $zero, 0x1f\n@@dma_write_busy:\n    mfc0  $5, SP_DMA_BUSY\n    bnez  $5, @@dma_write_busy\n     nop\n    j     cmd_SPNOOP\n     mtc0  $zero, SP_SEMAPHORE\n\n.ifdef VERSION_SH_CN\ncmd_DMEMMOVE2:\n    srl   $t7, $k0, 16\n    andi  $t7, $t7, 0xff\n    andi  $t5, $k0, 0xffff\n    srl   $t6, $t9, 0x10\n@@audio_30C314:\n    addi  $t7, $t7, -1\n    andi  $t4, $t9, 0xffff\n@@audio_30C31C:\n    lqv   $v1[0], 0x00($t5)\n    lqv   $v2[0], 0x10($t5)\n    addi  $t4, $t4, -0x20\n    addi  $t5, $t5, 0x20\n    sqv   $v1[0], 0x00($t6)\n    sqv   $v2[0], 0x10($t6)\n    bgtz  $t4, @@audio_30C31C\n     addi  $t6, $t6, 0x20\n    bgtz  $t7, @@audio_30C314\n     nop\n    j cmd_SPNOOP\n     nop\n\ncmd_DUPLICATE:\n    srl   $t7, $k0, 0x10\n    andi  $t7, $t7, 0xff\n    andi  $t5, $k0, 0xffff\n    srl   $t6, $t9, 0x10\n    lqv   $v1[0], 0x00($t5)\n    lqv   $v2[0], 0x10($t5)\n    lqv   $v3[0], 0x20($t5)\n    lqv   $v4[0], 0x30($t5)\n    lqv   $v5[0], 0x40($t5)\n    lqv   $v6[0], 0x50($t5)\n    lqv   $v7[0], 0x60($t5)\n    lqv   $v8[0], 0x70($t5)\n@@audio_30C37C:\n    addi  $t7, $t7, -1\n    sqv   $v1[0], 0x00($t6)\n    sqv   $v2[0], 0x10($t6)\n    sqv   $v3[0], 0x20($t6)\n    sqv   $v4[0], 0x30($t6)\n    sqv   $v5[0], 0x40($t6)\n    sqv   $v6[0], 0x50($t6)\n    sqv   $v7[0], 0x60($t6)\n    sqv   $v8[0], 0x70($t6)\n    bgtz  $t7, @@audio_30C37C\n     addi $t6, $t6, 0x80\n    j cmd_SPNOOP\n     nop\n\ncmd_DOWNSAMPLE_HALF:\n    andi  $t4, $k0, 0xffff\n    andi  $t6, $t9, 0xffff\n    srl   $t5, $t9, 0x10\n@@audio_30C3BC:\n    lsv   $v1[0], 0x00($t5)\n    lsv   $v2[0], 0x08($t5)\n    lsv   $v3[0], 0x10($t5)\n    lsv   $v4[0], 0x18($t5)\n    lsv   $v1[2], 0x04($t5)\n    lsv   $v2[2], 0x0c($t5)\n    lsv   $v3[2], 0x14($t5)\n    lsv   $v4[2], 0x1c($t5)\n    addi  $t5, $t5, 0x20\n    slv   $v1[0], 0x00($t6)\n    slv   $v2[0], 0x04($t6)\n    slv   $v3[0], 0x08($t6)\n    addi  $t4, $t4, -8\n    slv   $v4[0], 0x0c($t6)\n    bgtz  $t4, @@audio_30C3BC\n     addi $t6, $t6, 0x10\n    j cmd_SPNOOP\n     nop\n.endif\n\n.ifndef VERSION_SH_CN\ncmd_ENVMIXER:\n    lui   $4, 0x00ff\n    ori   $4, $4, 0xffff\n    and   $2, $25, $4\n    srl   $5, $25, 24\n    sll   $5, $5, 2\n    lw    $6, (segmentTable)($5)\n    add   $2, $2, $6\n    addi  $1, $23, 0x00\n    addi  $3, $zero, 0x4f\n    vxor  $v0, $v0, $v0\n    addi  $11, $zero, 0x40\n    lqv   $v31[0], 0x10($11)    // all 0001\n    lqv   $v10[0], 0x00($zero)  // element 6 is 0x7fff\n    srl   $12, $26, 16\n    andi  $10, $12, A_INIT\n    beqz  $10, @@audio_04001b84\n     lqv   $v24[0], 0x10($24)\n    j     @@audio_04001bb0\n     nop\n@@audio_04001b84:\n    jal   dma_read_start\n     nop\n@@dma_read_busy:\n    mfc0  $5, SP_DMA_BUSY\n    bnez  $5, @@dma_read_busy\n     nop\n    mtc0  $zero, SP_SEMAPHORE\n    lqv   $v20[0], 0x00($23)\n    lqv   $v21[0], 0x10($23)\n    lqv   $v18[0], 0x20($23)\n    lqv   $v19[0], 0x30($23)\n    lqv   $v24[0], 0x40($23)\n@@audio_04001bb0:\n    lh    $13, (audio_in_buf)($24)\n    lh    $19, (audio_out_buf)($24)\n    lh    $18, (audio_aux_buf0)($24)\n    lh    $17, (audio_aux_buf1)($24)\n    lh    $16, (audio_aux_buf2)($24)\n    lh    $14, (audio_count)($24)\n    addi  $15, $zero, 0x10\n    mfc2  $21, $v24[2]\n    mfc2  $20, $v24[8]\n    andi  $9, $12, 0x0008\n    bgtz  $9, @@audio_04001bec\n     nop\n    addi  $17, $23, 0x50\n    add   $16, $zero, $17\n    addi  $15, $zero, 0\n@@audio_04001bec:\n    beqz  $10, @@audio_04001cf0\n     lqv   $v30[0], 0x70($11)\n    lqv   $v17[0], 0x00($13)\n    lqv   $v29[0], 0x00($19)\n    lqv   $v27[0], 0x00($17)\n    vxor  $v21, $v21, $v21\n    lsv   $v20[14], 0x06($24)\n    vmudm $v23, $v20, $v24[2]\n    vmadh $v22, $v20, $v24[1]\n    vmadn $v23, $v31, $v0[0]\n    vsubc $v23, $v23, $v21\n    vsub  $v22, $v22, $v20\n    vmudl $v23, $v30, $v23[7]\n    vmadn $v23, $v30, $v22[7]\n    vmadm $v22, $v31, $v0[0]\n    vmadm $v21, $v31, $v21[7]\n    vmadh $v20, $v31, $v20[7]\n    bgtz  $21, @@audio_04001c44\n     vmadn $v21, $v31, $v0[0]\n    vge   $v20, $v20, $v24[0]\n    j     @@audio_04001c48\n     nop\n@@audio_04001c44:\n    vcl   $v20, $v20, $v24[0]\n@@audio_04001c48:\n    vmulf $v16, $v20, $v24[6]\n    vmulf $v15, $v20, $v24[7]\n    vmulf $v29, $v29, $v10[6]\n    vmacf $v29, $v17, $v16\n    vmulf $v27, $v27, $v10[6]\n    vmacf $v27, $v17, $v15\n    sqv   $v29[0], 0x00($19)\n    sqv   $v27[0], 0x00($17)\n    lqv   $v28[0], 0x00($18)\n    lqv   $v26[0], 0x00($16)\n    vxor  $v19, $v19, $v19\n    lsv   $v18[14], 0x08($24)\n    vmudm $v23, $v18, $v24[5]\n    vmadh $v22, $v18, $v24[4]\n    vmadn $v23, $v31, $v0[0]\n    vsubc $v23, $v23, $v19\n    vsub  $v22, $v22, $v18\n    vmudl $v23, $v30, $v23[7]\n    vmadn $v23, $v30, $v22[7]\n    vmadm $v22, $v31, $v0[0]\n    vmadm $v19, $v31, $v19[7]\n    vmadh $v18, $v31, $v18[7]\n    bgtz  $20, @@audio_04001cb4\n     vmadn $v19, $v31, $v0[0]\n    vge   $v18, $v18, $v24[3]\n    j     @@audio_04001cb8\n     nop\n@@audio_04001cb4:\n    vcl   $v18, $v18, $v24[3]\n@@audio_04001cb8:\n    vmulf $v16, $v18, $v24[6]\n    vmulf $v15, $v18, $v24[7]\n    vmulf $v28, $v28, $v10[6]\n    vmacf $v28, $v17, $v16\n    vmulf $v26, $v26, $v10[6]\n    vmacf $v26, $v17, $v15\n    sqv   $v28[0], 0x00($18)\n    sqv   $v26[0], 0x00($16)\n    addi  $14, $14, -0x10\n    addi  $13, $13, 0x10\n    addi  $19, $19, 0x10\n    addi  $18, $18, 0x10\n    add   $17, $17, $15\n    add   $16, $16, $15\n@@audio_04001cf0:\n    vmudl $v23, $v21, $v24[2]\n    vmadm $v23, $v20, $v24[2]\n    vmadn $v23, $v21, $v24[1]\n    vmadh $v20, $v20, $v24[1]\n    vmadn $v21, $v31, $v0[0]\n@@audio_04001d04:\n    bgtz  $21, @@audio_04001d30\n     lqv   $v17[0], 0x00($13)\n    vge   $v20, $v20, $v24[0]\n    vmudl $v23, $v19, $v24[5]\n    vmadm $v23, $v18, $v24[5]\n    vmadn $v23, $v19, $v24[4]\n    lqv   $v29[0], 0x00($19)\n    vmadh $v18, $v18, $v24[4]\n    lqv   $v27[0], 0x00($17)\n    j     @@audio_04001d50\n     vmadn $v19, $v31, $v0[0]\n@@audio_04001d30:\n    vcl   $v20, $v20, $v24[0]\n    vmudl $v23, $v19, $v24[5]\n    vmadm $v23, $v18, $v24[5]\n    vmadn $v23, $v19, $v24[4]\n    lqv   $v29[0], 0x00($19)\n    vmadh $v18, $v18, $v24[4]\n    lqv   $v27[0], 0x00($17)\n    vmadn $v19, $v31, $v0[0]\n@@audio_04001d50:\n    vmulf $v16, $v20, $v24[6]\n    sqv   $v20[0], 0x00($23)\n    vmulf $v15, $v20, $v24[7]\n    sqv   $v21[0], 0x10($23)\n    vmulf $v29, $v29, $v10[6]\n    vmacf $v29, $v17, $v16\n    lqv   $v28[0], 0x00($18)\n    vmulf $v27, $v27, $v10[6]\n    lqv   $v26[0], 0x00($16)\n    vmacf $v27, $v17, $v15\n    bgtz  $20, @@audio_04001da0\n     sqv   $v29[0], 0x00($19)\n    vge   $v18, $v18, $v24[3]\n    vmudl $v23, $v21, $v24[2]\n    sqv   $v27[0], 0x00($17)\n    vmadm $v23, $v20, $v24[2]\n    vmadn $v23, $v21, $v24[1]\n    vmadh $v20, $v20, $v24[1]\n    j     @@audio_04001dbc\n     vmadn $v21, $v31, $v0[0]\n@@audio_04001da0:\n    vcl   $v18, $v18, $v24[3]\n    vmudl $v23, $v21, $v24[2]\n    sqv   $v27[0], 0x00($17)\n    vmadm $v23, $v20, $v24[2]\n    vmadn $v23, $v21, $v24[1]\n    vmadh $v20, $v20, $v24[1]\n    vmadn $v21, $v31, $v0[0]\n@@audio_04001dbc:\n    vmulf $v16, $v18, $v24[6]\n    addi  $14, $14, -0x10\n    vmulf $v15, $v18, $v24[7]\n    addi  $19, $19, 0x10\n    vmulf $v28, $v28, $v10[6]\n    add   $17, $17, $15\n    vmacf $v28, $v17, $v16\n    addi  $13, $13, 0x10\n    vmulf $v26, $v26, $v10[6]\n    vmacf $v26, $v17, $v15\n    sqv   $v28[0], 0x00($18)\n    addi  $18, $18, 0x10\n    blez  $14, @@audio_04001dfc\n     sqv   $v26[0], 0x00($16)\n    j     @@audio_04001d04\n     add   $16, $16, $15\n@@audio_04001dfc:\n    sqv   $v18[0], 0x20($23)\n    sqv   $v19[0], 0x30($23)\n    sqv   $v24[0], 0x40($23)\n    jal   dma_write_start\n     addi  $3, $zero, 0x004f\n@@dma_write_busy:\n    mfc0  $5, SP_DMA_BUSY\n    bnez  $5, @@dma_write_busy\n     nop\n    j     cmd_SPNOOP\n     mtc0  $zero, SP_SEMAPHORE\n\ncmd_MIXER:\n    lqv   $v31[0], 0x00($zero)   // element 6 is 0x7fff\n    lhu   $18, (audio_count)($24)\n    beqz  $18, @@cmd_mixer_done  // skip operation when count is 0\n     nop\n    andi  $19, $25, 0xffff\n    addi  $19, $19, dmemBase     // dmemout + DMEM_BASE\n    srl   $20, $25, 16\n    addi  $20, $20, dmemBase     // dmemin + DMEM_BASE\n    andi  $17, $26, 0xffff\n    mtc2  $17, $v30[0]\n    lqv   $v27[0], 0x00($19)\n    lqv   $v29[0], 0x00($20)\n    lqv   $v26[0], 0x10($19)\n    lqv   $v28[0], 0x10($20)\n@@audio_04001e5c:\n    vmulf $v27, $v27, $v31[6]\n    addi  $18, $18, -0x20\n    vmacf $v27, $v29, $v30[0]\n    addi  $20, $20, 0x20\n    sqv   $v27[0], 0x00($19)\n    vmulf $v26, $v26, $v31[6]\n    lqv   $v29[0], 0x00($20)\n    vmacf $v26, $v28, $v30[0]\n    lqv   $v28[0], 0x10($20)\n    sqv   $v26[0], 0x10($19)\n    addi  $19, $19, 0x20\n    lqv   $v27[0], 0x00($19)\n    bgtz  $18, @@audio_04001e5c\n     lqv   $v26[0], 0x10($19)\n@@cmd_mixer_done:\n    j     cmd_SPNOOP\n     nop\n    nop\n.endif\n\n.ifdef VERSION_SH_CN\ncmd_ENVMIXER:\n    vxor  $v4, $v4, $v4\n    vxor  $v0, $v0, $v0\n    lqv   $v3[0], 0x0(r0)\n    add   $21, $21, $21\n    mtc2  $21, $v4[0]\n    mtc2  $21, $v4[2]\n    srl   $12, $26, 12\n    andi  $19, $12, 0xff0\n    add   $22, $22, $22\n    mtc2  $22, $v4[4]\n    mtc2  $22, $v4[6]\n    srl   $12, $25, 20\n    andi  $14, $12, 0xff0\n    add   $11, $11, $11\n    mtc2  $11, $v4[8]\n    mtc2  $11, $v4[10]\n    srl   $12, $25, 12\n    andi  $15, $12, 0xff0\n    srl   $12, $25, 4\n    andi  $16, $12, 0xff0\n    sll   $12, $25, 4\n    andi  $17, $12, 0xff0\n    andi  $12, $26, 0x2\n    lhu   $12, 0xe0(r12)\n    mtc2  $12, $v2[0]\n    andi  $12, $26, 0x1\n    sll   $12, $12, 1\n    lhu   $12, 0xe0(r12)\n    mtc2  $12, $v2[2]\n    srl   $12, $26, 8\n    andi  $20, $12, 0xff\n    vadd  $v0, $v0, $v0\n    andi  $10, $26, 0x4\n    lqv   $v8[0], 0x0(r19)\n\n@audio_400196c:\n    lqv   $v15[0], 0x10(r19)\n    addi  $19, $19, 0x20\n    vmudm $v9, $v8, $v1[0]\n    vmudm $v10, $v8, $v1[2]\n    addi  $20, $20, 0xfff0\n    lqv   $v11[0], 0x0(r14)\n    lqv   $v12[0], 0x0(r15)\n    vmudm $v16, $v15, $v1[1]\n    vmudm $v17, $v15, $v1[3]\n    lqv   $v18[0], 0x10(r14)\n    lqv   $v19[0], 0x10(r15)\n    vxor  $v9, $v9, $v2[0]\n    vxor  $v10, $v10, $v2[1]\n    lqv   $v13[0], 0x0(r16)\n    lqv   $v14[0], 0x0(r17)\n    vadd  $v11, $v11, $v9\n    vadd  $v12, $v12, $v10\n    vmudm $v9, $v9, $v1[4]\n    vmudm $v10, $v10, $v1[4]\n    vxor  $v16, $v16, $v2[0]\n    vxor  $v17, $v17, $v2[1]\n    lqv   $v20[0], 0x10(r16)\n    lqv   $v21[0], 0x10(r17)\n    vadd  $v18, $v18, $v16\n    vadd  $v19, $v19, $v17\n    vmudm $v16, $v16, $v1[5]\n    vmudm $v17, $v17, $v1[5]\n    sqv   $v11[0], 0x0(r14)\n    bne   $10, $0, @audio_4001a34\n    sqv   $v12[0], 0x0(r15)\n    vadd  $v13, $v13, $v9\n    vadd  $v14, $v14, $v10\n    sqv   $v18[0], 0x10(r14)\n    sqv   $v19[0], 0x10(r15)\n    vadd  $v20, $v20, $v16\n    vadd  $v21, $v21, $v17\n@audio_40019fc:\n    addi  $14, $14, 0x20\n    sqv   $v13[0], 0x0(r16)\n    sqv   $v14[0], 0x0(r17)\n    addi  $15, $15, 0x20\n    lqv   $v8[0], 0x0(r19)\n    sqv   $v20[0], 0x10(r16)\n    sqv   $v21[0], 0x10(r17)\n    addi  $16, $16, 0x20\n    vaddc $v1, $v1, $v4\n    addi  $17, $17, 0x20\n    bgtz  $20, @audio_400196c\n    vadd  $v0, $v0, $v0\n    j     cmd_SPNOOP\n     vxor $v0, $v0, $v0\n@audio_4001a34:\n    vadd  $v13, $v13, $v10\n    vadd  $v14, $v14, $v9\n    sqv   $v18[0], 0x10(r14)\n    sqv   $v19[0], 0x10(r15)\n    vadd  $v20, $v20, $v17\n    j     @audio_40019fc\n     vadd $v21, $v21, $v16\n\ncmd_ENVSETUP1:\n    vxor  $v1, $v1, $v1\n    andi  $11, $26, 0xffff\n    srl   $12, $26, 8\n    andi  $12, $12, 0xff00\n    mtc2  $12, $v1[8]\n    add   $12, $12, $11\n    mtc2  $12, $v1[10]\n    srl   $21, $25, 16\n    j     cmd_SPNOOP\n     andi $22, $25, 0xffff\n\ncmd_ENVSETUP2:\n    srl   $12, $25, 16\n    mtc2  $12, $v1[0]\n    add   $12, $12, $21\n    mtc2  $12, $v1[2]\n    andi  $12, $25, 0xffff\n    mtc2  $12, $v1[4]\n    add   $12, $12, $22\n    j     cmd_SPNOOP\n     mtc2  $12, $v1[6]\n\n@audio_4001a9c:\n    srl   $3, $26, 12\n    andi  $3, $3, 0xff0\n    andi  $1, $26, 0xffff\n@audio_4001aa8:\n    sll   $2, $25, 8\n    jr    $31\n     srl  $2, $2, 8\n\ncmd_LOADBUFF:\n    jal   @audio_4001a9c\n     nop\n    jal   dma_read_start\n     addi $3, $3, 0xffff\n@audio_4001ac4:\n    mfc0  $1, sp_dma_busy\n    bne   $1, $0, @audio_4001ac4\n     nop\n    j     cmd_SPNOOP\n     mtc0 $0, sp_semaphore\n\ncmd_SAVEBUFF:\n    jal   @audio_4001a9c\n     nop\n    jal   dma_write_start\n     addi $3, $3, 0xffff\n    j     @audio_4001ac4\n     nop\n\ncmd_LOADADPCM:\n    jal   @audio_4001aa8\n     addi $1, $0, adpcmTable\n    andi  $3, $26, 0xffff\n    jal   dma_read_start\n     addi $3, $3, 0xffff\n    j     @audio_4001ac4\n     nop\n\ncmd_MIXER:\n    lqv   $v31[0], 0x0(r0)\n    srl   $18, $26, 12\n    andi  $18, $18, 0xff0\n    andi  $19, $25, 0xffff\n    srl   $20, $25, 16\n    andi  $17, $26, 0xffff\n    mtc2  $17, $v30[0]\n    lqv   $v27[0], 0x0(r19)\n    lqv   $v29[0], 0x0(r20)\n    lqv   $v26[0], 0x10(r19)\n    lqv   $v28[0], 0x10(r20)\n@audio_4001b38:\n    vmulf $v27, $v27, $v31[6]\n    addi  $18, $18, 0xffe0\n    vmacf $v27, $v29, $v30[0]\n    addi  $20, $20, 0x20\n    vmulf $v26, $v26, $v31[6]\n    vmacf $v26, $v28, $v30[0]\n    lqv   $v29[0], 0x0(r20)\n    sqv   $v27[0], 0x0(r19)\n    lqv   $v27[0], 0x20(r19)\n    lqv   $v28[0], 0x10(r20)\n    sqv   $v26[0], 0x10(r19)\n    addi  $19, $19, 0x20\n    bgtz  $18, @audio_4001b38\n     lqv  $v26[0], 0x10(r19)\n    j cmd_SPNOOP\n     nop\n\ncmd_S8DEC:\n    lhu   $13, (audio_in_buf)(r24)\n    vxor  $v2, $v2, $v2\n    lhu   $14, (audio_out_buf)(r24)\n    vxor  $v3, $v3, $v3\n    lhu   $12, (audio_count)(r24)\n    sll   $17, $25, 8\n    srl   $17, $17, 8                   // state addr\n    sqv   $v2[0], 0x0(r14)              // store 0 to first 16 samples if A_INIT\n    sqv   $v3[0], 0x10(r14)\n    srl   $1, $26, 16\n    andi  $1, $1, 0x1\n    bgtz  $1, @audio_4001bd8            // A_INIT\n     srl  $1, $26, 16\n    andi  $1, $1, 0x2\n    beq   $0, $1, @audio_4001bbc        // A_LOOP\n     addi $2, $17, 0x0\n    lw    $2, (audio_loop_value)(r24)\n@audio_4001bbc:\n    addi  $1, $14, 0x0\n    jal   dma_read_start\n     addi $3, $0, 0x1f\n@audio_4001bc8:\n    mfc0  $5, sp_dma_busy\n    bne   $5, $0, @audio_4001bc8\n     nop\n    mtc0  $0, sp_semaphore\n@audio_4001bd8:\n    addi  $14, $14, 0x20\n    beq   $12, $0, @audio_4001c04       // this of very few ops allows count=0\n     nop\n@audio_4001be4:\n    lpv   $v2[0], 0x0(r13)              // load each byte to upper 8 bits per elem\n    lpv   $v3[0], 0x8(r13)\n    addi  $13, $13, 0x10\n    addi  $12, $12, 0xffe0\n    sqv   $v2[0], 0x0(r14)\n    sqv   $v3[0], 0x10(r14)\n    bgtz  $12, @audio_4001be4\n     addi $14, $14, 0x20\n@audio_4001c04:\n    addi  $1, $14, 0xffe0               // write last 16 samples to the state\n    addi  $2, $17, 0x0\n    jal   dma_write_start\n     addi  $3, $0, 0x1f\n@audio_4001c14:\n    mfc0  $5, sp_dma_busy\n    bne   $5, $0, @audio_4001c14\n     nop\n    j     cmd_SPNOOP\n     mtc0 $0, sp_semaphore\n\ncmd_HILOGAIN:\n    andi  $12, $26, 0xffff\n    srl   $13, $25, 16\n    srl   $15, $26, 4\n    andi  $15, $15, 0xf000\n    mtc2  $15, $v3[2]\n    srl   $15, $26, 20\n    andi  $15, $15, 0xf\n    mtc2  $15, $v3[0]\n@audio_4001c48:\n    lqv   $v1[0], 0x0(r13)\n    lqv   $v2[0], 0x10(r13)\n    vmudm $v4, $v1, $v3[1]\n    vmadh $v4, $v1, $v3[0]\n    vmudm $v5, $v2, $v3[1]\n    vmadh $v5, $v2, $v3[0]\n    sqv   $v4[0], 0x0(r13)\n    sqv   $v5[0], 0x10(r13)\n    addi  $12, $12, 0xffe0\n    bgtz  $12, @audio_4001c48\n    addi  $13, $13, 0x20\n    j     cmd_SPNOOP\n     vxor $v0, $v0, $v0\n\ncmd_1c7c:\n    andi  $12, $26, 0xffff\n    srl   $13, $25, 16\n    addi  $14, $13, 0x0\n    andi  $15, $25, 0xffff\n    srl   $11, $26, 16\n    andi  $11, $11, 0xff\n    add   $15, $15, $11\n    ldv   $v11[0], 0x0(r15)\n    ldv   $v12[0], 0x10(r15)\n    ldv   $v13[0], 0x20(r15)\n    ldv   $v14[0], 0x30(r15)\n    ldv   $v11[8], 0x8(r15)\n    ldv   $v12[8], 0x18(r15)\n    ldv   $v13[8], 0x28(r15)\n    ldv   $v14[8], 0x38(r15)\n@audio_4001cb8:\n    lqv   $v3[0], 0x0(r13)\n    lqv   $v4[0], 0x10(r13)\n    lqv   $v5[0], 0x20(r13)\n    lqv   $v6[0], 0x30(r13)\n    vmudh $v3, $v3, $v11\n    vmudh $v4, $v4, $v12\n    vmudh $v5, $v5, $v13\n    vmudh $v6, $v6, $v14\n    sqv   $v3[0], 0x0(r13)\n    sqv   $v4[0], 0x10(r13)\n    sqv   $v5[0], 0x20(r13)\n    sqv   $v6[0], 0x30(r13)\n    addi  $12, $12, 0xffc0\n    bgtz  $12, @audio_4001cb8\n     addi  $13, $13, 0x40\n    j     cmd_SPNOOP\n     nop\n\ncmd_FILTER:\n    addi  $13, $23, 0x0\n    vxor  $v0, $v0, $v0\n    addi  $14, $23, 0x10\n    sqv   $v0[0], 0x0(r13)\n    sll   $2, $25, 8\n    srl   $2, $2, 8\n    srl   $12, $26, 16\n    andi  $12, $12, 0xff\n    beq   $12, $0, @audio_4001d68\n     nop\n    addi  $12, $12, 0xffff\n    beq   $12, $0, @audio_4001d88\n     nop\n    andi  $15, $26, 0xffff\n    vxor  $v0, $v0, $v0\n    sqv   $v0[0], 0x0(r14)\n    sqv   $v0[0], 0x20(r14)\n    addi  $1, $14, 0x10\n    addi  $3, $0, 0xf\n    jal   dma_read_start\n     nop\n    mfc0  $5, sp_dma_busy\n    bne   $5, $0, 0x4001d50\n    nop\n    mtc0  $0, sp_semaphore\n    j     cmd_SPNOOP\n     nop\n@audio_4001d68:\n    add   $1, $13, $0\n    addi  $3, $0, 0xf\n    jal   dma_read_start\n    nop\n@audio_4001d78:\n    mfc0  $5, sp_dma_busy\n    bne   $5, $0, 0x4001d78\n     nop\n    mtc0  $0, sp_semaphore\n@audio_4001d88:\n    add   $1, $13, $0\n    andi  $11, $26, 0xffff\n    lqv   $v24[0], 0x10(r14)\n    ldv   $v28[0], 0x8(r14)\n    ldv   $v28[8], 0x10(r14)\n    ldv   $v20[0], 0x18(r14)\n    ldv   $v20[8], 0x20(r14)\n    addi  $14, $14, 0x2\n    ldv   $v31[0], 0x0(r14)\n    ldv   $v31[8], 0x8(r14)\n    ldv   $v17[0], 0x10(r14)\n    ldv   $v17[8], 0x18(r14)\n    ldv   $v27[0], 0x8(r14)\n    ldv   $v27[8], 0x10(r14)\n    ldv   $v21[0], 0x18(r14)\n    ldv   $v21[8], 0x20(r14)\n    addi  $14, $14, 0x2\n    ldv   $v30[0], 0x0(r14)\n    ldv   $v30[8], 0x8(r14)\n    ldv   $v26[0], 0x8(r14)\n    ldv   $v26[8], 0x10(r14)\n    ldv   $v18[0], 0x10(r14)\n    ldv   $v18[8], 0x18(r14)\n    ldv   $v22[0], 0x18(r14)\n    ldv   $v22[8], 0x20(r14)\n    addi  $14, $14, 0x2\n    ldv   $v29[0], 0x0(r14)\n    ldv   $v29[8], 0x8(r14)\n    ldv   $v25[0], 0x8(r14)\n    ldv   $v25[8], 0x10(r14)\n    ldv   $v19[0], 0x10(r14)\n    ldv   $v19[8], 0x18(r14)\n    ldv   $v23[0], 0x18(r14)\n    ldv   $v23[8], 0x20(r14)\n    lqv   $v15[0], 0x0(r13)\n@audio_4001e14:\n    lqv   $v16[0], 0x0(r11)\n    vxor  $v14, $v14, $v14\n    vmulf $v0, $v0, $v0\n    vmacf $v14, $v23, $v15[1]\n    vmacf $v14, $v22, $v15[2]\n    vmacf $v14, $v21, $v15[3]\n    vmacf $v14, $v20, $v15[4]\n    vmacf $v14, $v19, $v15[5]\n    vmacf $v14, $v18, $v15[6]\n    vmacf $v14, $v17, $v15[7]\n    vmacf $v14, $v24, $v16[0]\n    vmacf $v14, $v25, $v16[1]\n    vmacf $v14, $v26, $v16[2]\n    vmacf $v14, $v27, $v16[3]\n    vmacf $v14, $v28, $v16[4]\n    vmacf $v14, $v29, $v16[5]\n    vmacf $v14, $v30, $v16[6]\n    vmacf $v14, $v31, $v16[7]\n    addi  $15, $15, 0xfff0\n    sqv   $v14[0], 0x0(r11)\n    addi  $11, $11, 0x10\n    bgtz  $15, @audio_4001e14\n     vaddc $v15, $v0, $v16\n    sqv   $v16[0], 0x0(r13)\n    addi  $3, $0, 0xf\n    jal   dma_write_start\n     nop\n@audio_4001e80:\n    mfc0 $5, sp_dma_busy\n    bne  $5, $0, @audio_4001e80\n    nop\n    mtc0 $0, sp_semaphore\n    j    cmd_SPNOOP\n     nop\n\ncmd_ADDMIXER:\n    vaddc $v31, $v31, $v31\n    srl   $18, $26, 12\n    andi  $18, $18, 0xff0\n    andi  $19, $25, 0xffff\n    srl   $20, $25, 16\n    lqv   $v27[0], 0x0(r19)\n@audio_4001eb0:\n    lqv   $v29[0], 0x0(r20)\n    lqv   $v26[0], 0x10(r19)\n    lqv   $v28[0], 0x10(r20)\n    lqv   $v25[0], 0x20(r19)\n    lqv   $v23[0], 0x20(r20)\n    lqv   $v24[0], 0x30(r19)\n    lqv   $v22[0], 0x30(r20)\n    addi  $20, $20, 0x40\n    vadd  $v27, $v27, $v29\n    vadd  $v26, $v26, $v28\n    vadd  $v25, $v25, $v23\n    vadd  $v24, $v24, $v22\n    addi  $18, $18, 0xffc0\n    sqv   $v27[0], 0x0(r19)\n    sqv   $v26[0], 0x10(r19)\n    sqv   $v25[0], 0x20(r19)\n    sqv   $v24[0], 0x30(r19)\n    addi  $19, $19, 0x40\n    bgtz  $18, @audio_4001eb0\n     lqv  $v27[0], 0x0(r19)\n    j     cmd_SPNOOP\n     nop\n\ncmd_RESAMPLE_ZOH:\n    lh    $14, 0x0(r24)\n    lh    $15, 0x2(r24)\n    lh    $13, 0x4(r24)\n    andi  $12, $26, 0xffff\n    sll   $12, $12, 2\n    andi  $10, $25, 0xffff\n    sll   $14, $14, 16\n    or    $10, $10, $14\n@audio_4001f28:\n    srl   $11, $10, 16\n    andi  $11, $11, 0xfffe\n    lsv   $v1[0], 0x0(r11)\n    add   $10, $10, $12\n    srl   $11, $10, 16\n    andi  $11, $11, 0xfffe\n    lsv   $v1[2], 0x0(r11)\n    add   $10, $10, $12\n    srl   $11, $10, 16\n    andi  $11, $11, 0xfffe\n    lsv   $v1[4], 0x0(r11)\n    add   $10, $10, $12\n    srl   $11, $10, 16\n    andi  $11, $11, 0xfffe\n    lsv   $v1[6], 0x0(r11)\n    add   $10, $10, $12\n    addi  $13, $13, 0xfff8\n    sdv   $v1[0], 0x0(r15)\n    addi  $15, $15, 0x8\n    bgtz  $13, @audio_4001f28\n     nop\n    jal   cmd_SPNOOP\n     nop\n.endif\n\n.close // CODE_FILE\n"
  },
  {
    "path": "rsp/fast3d.s",
    "content": ".rsp\n\n.include \"rsp/rsp_defs.inc\"\n.include \"rsp/gbi.inc\"\n\n// This file assumes DATA_FILE and CODE_FILE are set on the command line\n\n.if version() < 110\n    .error \"armips 0.11 or newer is required\"\n.endif\n\n// Overlay table data member offsets\noverlay_load equ 0x0000\noverlay_len  equ 0x0004\noverlay_imem equ 0x0006\n.macro OverlayEntry, loadStart, loadEnd, imemAddr\n  .dw loadStart\n  .dh (loadEnd - loadStart - 1) & 0xFFFF\n  .dh (imemAddr) & 0xFFFF\n.endmacro\n\n.macro jumpTableEntry, addr\n  .dh addr & 0xFFFF\n.endmacro\n\n// RSP DMEM\n.create DATA_FILE, 0x0000\n\n// 0x0000-0x0027: Overlay Table\noverlayInfo0:\n  OverlayEntry orga(Overlay0Address), orga(Overlay0End), Overlay0Address\noverlayInfo1:\n  OverlayEntry orga(Overlay1Address), orga(Overlay1End), Overlay1Address\noverlayInfo2:\n  OverlayEntry orga(Overlay2Address), orga(Overlay2End), Overlay2Address\noverlayInfo3:\n  OverlayEntry orga(Overlay3Address), orga(Overlay3End), Overlay3Address\noverlayInfo4:\n  OverlayEntry orga(Overlay4Address), orga(Overlay4End), Overlay4Address\n\n// 0x0028-0x009F: ??\n.dw 0x0FFAF006\n.dw 0x7FFF0000\n.dw 0x00000001\n.dw 0x0002FFFF\n.dw 0x40000004\n.dw 0x06330200\n.dw 0x7FFFFFF8\n.dw 0x00080040\n.dw 0x00208000\n.dw 0x01CCCCCC\n.dw 0x0001FFFF\n.dw 0x00010001\n.dw 0x0001FFFF\n.dw 0x00010001\n.dw 0x00020002\n.dw 0x00020002\n\n// 0x0068\n.dw 0x00020002\n.dw 0x00020002\n\ndata0070:\n.dw 0x00010000\n\n// 0x0074\n.dh 0x0000\n// 0x0076\n.dh 0x0001\n\n// 0x0078\n.dw 0x00000001\n.dw 0x00000001\n.dw 0x00010000\n.dw 0x0000FFFF\n.dw 0x00000001\n.dw 0x0000FFFF\n.dw 0x00000000\n.dw 0x0001FFFF\n.dw 0x00000000\n.dw 0x00010001\n\n// 0x00A0-0x00A1\nlightEntry:\n  jumpTableEntry load_lighting\n\n// 0x00A2-0x00A3: ??\n.dh 0x7FFF\n\n// 0x00A4-0x00B3: ??\n.dw 0x571D3A0C\n.dw 0x00010002\n.dw 0x01000200\n.dw 0x40000040\n\n// 0x00B4\n.dh 0x0000\n\n// 0x00B6-0x00B7\ntaskDoneEntry:\n  jumpTableEntry overlay_4_entry\n\n// 0x00B8\nlower24Mask:\n.dw 0x00FFFFFF\n\n// 0x00BC: Operation Types\noperationJumpTable:\n  jumpTableEntry dispatch_dma // cmds 0x00-0x3f\nspNoopEntry:\n  jumpTableEntry SP_NOOP      // cmds 0x40-0x7f\n  jumpTableEntry dispatch_imm // cmds 0x80-0xbf\n  jumpTableEntry dispatch_rdp // cmds 0xc0-0xff\n\n// 0x00C4: DMA operations\ndmaJumpTable:\n  jumpTableEntry SP_NOOP      // 0x00\n  jumpTableEntry dma_MTX      // 0x01\n  jumpTableEntry SP_NOOP      // 0x02\n  jumpTableEntry dma_MOVEMEM  // 0x03\n  jumpTableEntry dma_VTX      // 0x04\n  jumpTableEntry SP_NOOP      // 0x05\n  jumpTableEntry dma_DL       // 0x06\n  jumpTableEntry SP_NOOP      // 0x07\n  jumpTableEntry SP_NOOP      // 0x08\n  jumpTableEntry SP_NOOP      // 0x09\n\n// 0x00D8: Immediate operations\nimmediateJumpTableBase equ (immediateJumpTable - ((0xB2 << 1) & 0xFE))\n.ifdef F3D_OLD\n  jumpTableEntry imm_UNKNOWN\n.endif\nimmediateJumpTable:\n  jumpTableEntry imm_RDPHALF_CONT      // 0xB2\n  jumpTableEntry imm_RDPHALF_2         // 0xB3\n  jumpTableEntry imm_RDPHALF_1         // 0xB4\n  jumpTableEntry SP_NOOP               // 0xB5?\n  jumpTableEntry imm_CLEARGEOMETRYMODE // 0xB6\n  jumpTableEntry imm_SETGEOMETRYMODE   // 0xB7\n  jumpTableEntry imm_ENDDL             // 0xB8\n  jumpTableEntry imm_SETOTHERMODE_L    // 0xB9\n  jumpTableEntry imm_SETOTHERMODE_H    // 0xBA\n  jumpTableEntry imm_TEXTURE           // 0xBB\n  jumpTableEntry imm_MOVEWORD          // 0xBC\n  jumpTableEntry imm_POPMTX            // 0xBD\n  jumpTableEntry imm_CULLDL            // 0xBE\n  jumpTableEntry imm_TRI1              // 0xBF\n\n// 0x00F6: Label constants\nlabelLUT:\n  jumpTableEntry found_in\nfoundOutEntry:\n  jumpTableEntry found_out\n  jumpTableEntry found_first_in\n  jumpTableEntry found_first_out\nclipDrawEntry:\n  jumpTableEntry clip_draw_loop\nperformClipEntry:\n  jumpTableEntry perform_clip\nnextClipEntry:\n  jumpTableEntry next_clip\nDMAWaitEntry:\n  jumpTableEntry dma_wait_dl\n\n// 0x0106: ??\ndata0106:\n.dh 0x0000\n\n.ifdef F3D_NEW\n.dh 0x0000\n.endif\n\n// 0x0108: DRAM pointer\ndramPtr:\n.dw 0x00000000\n.dh 0x0000     // 0x10C: RDPHALF_2\n\n.dh 0x0000\n\n// 0x110: display list stack size\ndisplayListStackSize:\n.dh 0x0000\n.dh 0xFFFF     // 0x112: RDPHALF_1\n\n.dw 0x00000000 // 0x114: geometrymode (bit 1 is texture ON)\n.dw 0xEF080CFF // 0x118: othermode\n.dw 0x00000000\n.dw 0x00000000 // 0x120: texture max mipmap levels, tile descriptor enable/disable\n.dh 0x0000     // 0x124: texture scaling factor S axis (horizontal) U16 fraction\n.dh 0x0000     // 0x126: texture scaling factor T axis (vertical)\n.dw 0x00000000 // 0x128: some dpc dma address state\n\nnumLights:\n.dw 0x80000040 // 0x12c: num lights, bit 31 = needs init, bits 11:0 = (num_lights+1)*32\n.dw 0x00000000 // 0x130: dram stack pointer 1\n.dw 0x00000000 // 0x134: dram stack pointer modelview matrices\n\ndata0138:\n.dw 0x40004000 // 0x138: txtatt (unused?)\n\n.dw 0x00000000\n.dw 0x00000000\n.dw 0x00000000\n.dw 0x00000000\n.dw 0x00000000\n\n.dw 0x00000000 // 0x150: output buffer\n\n.dw 0x00000000 // 0x154: output buffer size\n\ndata0158:\n.dh 0x0000     // 0x158: ??\n.dh 0x0000\n.dw 0x00000000 // 0x15c: dram stack end?\n\n// 0x160-0x19f: RSP memory segment table\nsegmentTable:\n.fill 0x40, 0\n\n// 0x1a0: Lights\n.dw 0x80000000\n.dw 0x80000000\n.dw 0x00000000\n.dw 0x00000000\n\nlookAtY:       // 0x1b0: lookaty\n.dw 0x00800000, 0x00800000, 0x7F000000, 0x00000000\n.dw 0x00000000, 0x00000000, 0x00000000, 0x00000000\n\nlookAtX:       // 0x1d0: lookatx\n.dw 0x00000000, 0x00000000, 0x007F0000, 0x00000000\n.dw 0x00000000, 0x00000000, 0x00000000, 0x00000000\n\n// 0x1f0: L0..L7 light info (32 bytes each)\nlightInfo0: // 0x1f0\n.dw 0x00000000, 0x00000000, 0x00000000, 0x00000000\n.dw 0x00000000, 0x00000000, 0xE0011FFF, 0x00040000\n\nlightInfo1: // 0x210\n.dw 0xFF000000, 0xFF000000, 0x00000000, 0x00000000\n.dw 0x00000000, 0x00000000, 0x00000000, 0x00000000\n\nlightInfo2: // 0x230\n.dw 0x00000000, 0x00000000, 0x00000000, 0x00000000\n.dw 0x00000000, 0x00000000, 0x00000000, 0x00000000\n\nlightInfo3: // 0x250\n.dw 0x00000000, 0x00000000, 0x00000000, 0x00000000\n.dw 0x00000000, 0x00000000, 0x00000000, 0x00000000\n\nlightInfo4: // 0x270\n\n// L4-L7 overlap with version string\n.definelabel lightInfo5, lightInfo4 + 0x20 // 0x290\n.definelabel lightInfo6, lightInfo5 + 0x20 // 0x2b0\n.definelabel lightInfo7, lightInfo6 + 0x20 // 0x2d0\n\n.if defined(F3D_OLD) || defined(VERSION_EU)\n  .asciiz \"RSP SW Version: 2.0D, 04-01-96\"\n.elseif defined(F3D_NEW)\n  .asciiz \"RSP SW Version: 2.0H, 02-12-97\"\n.endif\n.asciiz \"SGI U64 GFX SW TEAM: S Anderson, S Carr, H Cheng, K Luster, R Moore, N Pooley, A Srinivasan\", 0x0A\n\n.dw 0x00000000\n\n// 0x2f0-0x31f: DMEM table\ndmemTableOffset equ (dmemTable - 0x80)\ndmemTable:\n  .dh viewport,   lookAtY,    lookAtX,      lightInfo0, lightInfo1,    lightInfo2,    lightInfo3,    lightInfo4\n  .dh lightInfo5, lightInfo6, lightInfo7,   data0138,   mpMatrix+0x10, mpMatrix+0x20, mpMatrix+0x30, mpMatrix\n  .dh numLights,  data0070,   segmentTable, fogFactors, lightInfo0,    pointsBuffer\n.ifdef F3D_NEW\n  .dh displayListStackSize, 0x0000\n.else\n  .dh 0x0000, 0x0000\n.endif\n\n// 0x320: Viewport (0x010 bytes)\nviewport:\n.dw 0x00000000, 0x00000000, 0x00000000, 0x00000000\n\n// 0x330: fog factors (three 16-bit integers: mul, add, min)\nfogFactors:\n.dh 0x0100, 0x0000, 0x00FF\n\n// 0x336: display list stack (return addresses)\ndisplayListStack: // this is not 4-byte aligned\n.fill 0x2a, 0\n\n// 0x360-0x39f: Modelview matrix top of stack (0x40 bytes)\nmodelViewMatrixStack:\n.fill 0x40, 0\n\n// 0x3a0-0x3df Projection Matrix top of stack (0x40 bytes)\nprojectionMatrixStack:\n.fill 0x40, 0\n\n// 0x3e0-0x41f: MP matrix (Modelview * Projection)\nmpMatrix:\n.fill 0x40, 0\n\n// 0x420: Points buffer (0x280 bytes)\npointsBuffer:\n.fill 0x280, 0\n\n// 0x6a0-0x7df: input display list buffer\ninputDisplayList:\n.fill 0x140, 0\n\n// 0x7E0-0x7ff: input data\ninputData:\n.fill (0x800 - 0x7E0), 0\n\n.close // DATA_FILE\n\n// uninitialized variables\n.definelabel setupTemp, 0x08E0\n.definelabel data08e4, 0x08E4\n.definelabel data08e8, 0x08E8\n.definelabel data08ec, 0x08EC\n.definelabel data08f0, 0x08F0\n.definelabel clipTemp, 0x0940\n.definelabel data0942, 0x0942\n.definelabel data0944, 0x0944\n.definelabel data0946, 0x0946\n.definelabel rdpOutput, 0x09E0\n.definelabel scratchSpace, 0x0DE0\n.definelabel data0DE4, 0x0DE4\n.definelabel data0DE8, 0x0DE8\n\n.create CODE_FILE, 0x04001080\n\n// Overlay 0\nOverlay0Address:\n    j     f3d_04001780\n     addi  $29, $zero, displayListStackSize\n    jal   segmented_to_physical\n     add   $19, $24, $zero\n    add   $20, $zero, $22\n    jal   dma_read_write\n     addi  $17, $zero, 0x00\n\n// $1 = most significant 2 bits of cmd byte << 1\n// $25 = first command word\ndispatch_task:\n    lh    $2, (operationJumpTable)($1)\n    jr    $2\n     srl   $2, $25, 23        // $2 = MSbyte << 1\n\nSP_NOOP:\n    mfc0  $2, SP_STATUS\n    andi  $2, $2, 0x0080\n    bne   $2, $zero, f3d_040010cc\n     lh    $21, 0x26($zero)\nf3d_040010b8:\n    bgtz  $28, read_next_task_entry\n     nop\n    j     load_display_list_dma\n     lh    $ra, DMAWaitEntry\nf3d_040010c8:\n    lh    $21, taskDoneEntry\nf3d_040010cc:\n    j     load_overlay\n     ori   $30, $zero, overlayInfo4\n\nload_display_list_dma:\n    addi  $28, $zero, 0x0140    // size of display list\n    add   $21, $zero, $ra\n    addi  $20, $zero, inputDisplayList\n    add   $19, $zero, $26       // TASK_DATA_PTR\n    addi  $18, $zero, 0x013f\n    jal   dma_read_write\n     addi  $17, $zero, 0x00\n    jr    $21\n     addi  $27, $zero, inputDisplayList // initial pointer\n\n// load overlay into IMEM\n// $30 = offset into overlay table\n// $21 = return address\nload_overlay_fcn:\n    add   $21, $zero, $ra\nload_overlay:\n    lw    $19, overlay_load($30)\n    lh    $18, overlay_len($30)\n    lh    $20, overlay_imem($30)\n    jal   dma_read_write\n     addi  $17, $zero, 0x00\n    jal   wait_while_dma_busy\n     nop\n    jr    $21\n\nsegmented_to_physical:\n     lw    $11, lower24Mask\n    srl   $12, $19, 22\n    andi  $12, $12, 0x3c\n    and   $19, $19, $11\n    add   $13, $zero, $12\n    lw    $12, 0x0160($13)\n    jr    $ra\n     add   $19, $19, $12\n\n// $20 = SP_MEM address\n// $19 = DRAM address\n// $18 = length - 1\n// $17 = 1:write, 0:read\ndma_read_write:\n@@dma_full:\n    mfc0  $11, SP_DMA_FULL\n    bne   $11, $zero, @@dma_full\n     nop\n    mtc0  $20, SP_MEM_ADDR\n    bgtz  $17, @@dma_write\n     mtc0  $19, SP_DRAM_ADDR\n    jr    $ra\n     mtc0  $18, SP_RD_LEN\n@@dma_write:\n    jr    $ra\n     mtc0  $18, SP_WR_LEN\n\nwait_while_dma_busy:\n    mfc0  $11, SP_DMA_BUSY\n    bne   $11, $zero, wait_while_dma_busy\n     nop\n    jr    $ra\n     nop\n\nf3d_04001178:                // sends stuff to RDP\n    add   $21, $zero, $ra\n    lw    $19, 0x18($29)\n    addi  $18, $23, -0x09e0\n    lw    $23, 0x44($29)\n    blez  $18, f3d_040011f4\n     add   $20, $19, $18\n    sub   $20, $23, $20\n    bgez  $20, f3d_040011b8\nf3d_04001198:\n     mfc0  $20, DPC_STATUS\n    andi  $20, $20, DPC_STATUS_START_VALID\n    bne   $20, $zero, f3d_04001198\nf3d_040011a4:\n     mfc0  $23, DPC_CURRENT\n    lw    $19, 0x40($29)\n    beq   $23, $19, f3d_040011a4\n     nop\n    mtc0  $19, DPC_START\nf3d_040011b8:\n    mfc0  $23, DPC_CURRENT\n    sub   $20, $19, $23\n    bgez  $20, f3d_040011d4\n     add   $20, $19, $18\n    sub   $20, $20, $23\n    bgez  $20, f3d_040011b8\n     nop\nf3d_040011d4:\n    add   $23, $19, $18\n    addi  $18, $18, -0x01\n    addi  $20, $zero, rdpOutput   // output to RDP\n    jal   dma_read_write\n     addi  $17, $zero, 0x01\n    jal   wait_while_dma_busy\n     sw    $23, 0x18($29)\n    mtc0  $23, DPC_END\nf3d_040011f4:\n    jr    $21\n     addi  $23, $zero, rdpOutput\n\n// codes 0x80-0xBF\n// $2 = immediate cmd byte << 1\ndispatch_imm:\n    andi  $2, $2, 0x00fe\n    lh    $2, (immediateJumpTableBase)($2) // data IMM offset\n    jr    $2\n     lbu   $1, -0x01($27)\n\nimm_TRI1:\n    lbu   $5, -0x04($27)\n    lbu   $1, -0x03($27)\n    lbu   $2, -0x02($27)\n    lbu   $3, -0x01($27)\n    sll   $5, $5, 2\n    sll   $1, $1, 2\n    sll   $2, $2, 2\n    sll   $3, $3, 2\n    addi  $1, $1, pointsBuffer\n    addi  $2, $2, pointsBuffer\n    addi  $3, $3, pointsBuffer\n    sw    $1, scratchSpace\n    sw    $2, data0DE4\n    sw    $3, data0DE8\n    lw    $4, (scratchSpace)($5)\n    j     f3d_04001998\n     lh    $30, spNoopEntry\n\nimm_POPMTX:\n.ifdef F3D_NEW\n    sbv   $v31[6], 0x1c($29)\n.endif\n    lw    $19, 0x24($29)\n    lw    $3, 0x4c($29)\n    addi  $20, $zero, modelViewMatrixStack\n    addi  $18, $zero, 0x3f\n    sub   $3, $3, $19\n    addi  $3, $3, -0x0280\n    bgez  $3, SP_NOOP          // stop if stack is empty\n     addi  $19, $19, -0x40\n    jal   dma_read_write       // read new top from DRAM\n     addi  $17, $zero, 0x00\n    jal   wait_while_dma_busy\n     addi  $3, $zero, mpMatrix // MP matrix (modelview * projection)\n    j     f3d_04001444         // recompute MP matrix\n     sw    $19, 0x24($29)\n\nimm_MOVEWORD:\n    lbu   $1, -0x05($27)\n    lhu   $2, -0x07($27)\n    lh    $5, 0x030e($1)\n    add   $5, $5, $2\n    j     SP_NOOP\n     sw    $24, 0x00($5)\n\nimm_TEXTURE:\n    sw    $25, 0x10($29)\n    sw    $24, 0x14($29)\n    lh    $2, 0x06($29)\n    andi  $2, $2, 0xfffd\n    andi  $3, $25, 0x0001\n    sll   $3, $3, 1\n    or    $2, $2, $3\n    j     SP_NOOP\n     sh    $2, 0x06($29)\n\nimm_SETOTHERMODE_H:\n    j     @f3d_040012d0\n     addi  $7, $29, 8\nimm_SETOTHERMODE_L:\n    addi  $7, $29, 0x0c\n@f3d_040012d0:\n    lw    $3, 0x00($7)\n    addi  $8, $zero, -1\n    lbu   $5, -0x05($27)\n    lbu   $6, -0x06($27)\n    addi  $2, $zero, 1\n    sllv  $2, $2, $5\n    addi  $2, $2, -1\n    sllv  $2, $2, $6\n    xor   $2, $2, $8\n    and   $2, $2, $3\n    or    $3, $2, $24\n    sw    $3, 0x00($7)\n    lw    $25, 0x08($29)\n    j     f3d_040013a8\n     lw    $24, 0x0c($29)\n\nimm_CULLDL:\n    andi  $25, $25, 0x03ff\n.ifdef F3D_OLD\n    ori   $2, $zero, 0xffff\n.else\n    ori   $2, $zero, 0x7070\n.endif\n@@f3d_04001314:\n    lh    $3, 0x0444($25)\n    addi  $25, $25, 0x28\n    bne   $25, $24, @@f3d_04001314\n     and   $2, $2, $3\n    beq   $2, $zero, SP_NOOP\n\nDL_STACK_SIZE_OFFSET equ (defined(F3D_OLD) ? 0x00 : 0x4A)\n\nimm_ENDDL:\n     lb    $2, (DL_STACK_SIZE_OFFSET)($29)\n    addi  $2, $2, -4\n    bltz  $2, f3d_040010c8\n     addi  $3, $2, displayListStack\n    lw    $26, 0x00($3)\n    sb    $2, (DL_STACK_SIZE_OFFSET)($29)\n    j     SP_NOOP\n     addi  $28, $zero, 0\n\nimm_SETGEOMETRYMODE:\n    lw    $2, 0x04($29)\n    or    $2, $2, $24\n    j     SP_NOOP\n     sw    $2, 0x04($29)\n\nimm_CLEARGEOMETRYMODE:\n    lw    $2, 0x04($29)\n    addi  $3, $zero, -1\n    xor   $3, $3, $24\n    and   $2, $2, $3\n    j     SP_NOOP\n     sw    $2, 0x04($29)\n\n.ifdef F3D_OLD\nimm_RDPHALF_1:\n    j     SP_NOOP\n     sh    $24, 0x02($29)\nimm_RDPHALF_2:\n.else\nimm_RDPHALF_1:\n.endif\n    j     f3d_040010b8\n     sw    $24, -0x04($29)\n\n.ifdef F3D_OLD\nimm_UNKNOWN:\n.else\nimm_RDPHALF_CONT:\n.endif\n    ori   $2, $zero, 0x0000\n.ifdef F3D_OLD\nimm_RDPHALF_CONT:\n.else\nimm_RDPHALF_2:\n.endif\n    j     f3d_040013a8\n     lw    $25, -0x04($29)\n\n// codes 0xC0-0xFF\ndispatch_rdp:\n    sra   $2, $25, 24\n    addi  $2, $2, 3\n    bltz  $2, f3d_040013a8\n     addi  $2, $2, 0x18\n    jal   segmented_to_physical\n     add   $19, $24, $zero\n    add   $24, $19, $zero\nf3d_040013a8:\n    sw    $25, 0x00($23)\n    sw    $24, 0x04($23)\n    jal   f3d_04001178\n     addi  $23, $23, 0x08\n    bgtz  $2, SP_NOOP\n     nop\n    j     f3d_040010b8\n\ndispatch_dma:\n     andi  $2, $2, 0x01fe\n    lh    $2, (dmaJumpTable)($2)\n    jal   wait_while_dma_busy\n     lbu   $1, -0x07($27)\n    jr    $2\n     andi  $6, $1, 0x000f\n\ndma_MTX:\n    sbv   $v31[6], 0x1c($29)     // lights need re-init\n    andi  $8, $1, 0x0001         // 1=projection, 0=modelview\n    bne   $8, $zero, f3d_04001454\n     andi  $7, $1, 0x0002        // 1=load, 0=multiply\n    addi  $20, $zero, modelViewMatrixStack\n    andi  $8, $1, 0x0004         // 1=push, 0=no push\n    beq   $8, $zero, f3d_04001420\n     lqv   $v26[0], 0x30($22)\n    lw    $19, 0x24($29)         // DRAM stack pointer 2\n    lw    $8, 0x4c($29)          // DRAM stack end\n    addi  $17, $zero, 1\n    addi  $1, $19, 0x40\n    beq   $19, $8, f3d_04001420\n     addi  $12, $zero, 0x3f      // BUG: wrong register, should be $18\n    jal   dma_read_write\n     sw    $1, 0x24($29)\n    jal   wait_while_dma_busy\nf3d_04001420:\n     lqv   $v28[0], 0x10($22)\n    beq   $7, $zero, f3d_04001460\n     lqv   $v27[0], 0x20($22)\n    sqv   $v26[0], 0x30($20)\n    lqv   $v29[0], 0x00($22)\n    sqv   $v28[0], 0x10($20)\nf3d_04001438:\n    addi  $3, $zero, mpMatrix\n    sqv   $v27[0], 0x20($20)\n    sqv   $v29[0], 0x00($20)\nf3d_04001444:\n    addi  $1, $zero, modelViewMatrixStack\n    addi  $2, $zero, projectionMatrixStack\n    j     f3d_04001484\n     lh    $ra, spNoopEntry\nf3d_04001454:\n    lqv   $v26[0], 0x30($22)\n    j     f3d_04001420\n     addi  $20, $zero, projectionMatrixStack\nf3d_04001460:\n    addiu $3, $zero, scratchSpace\n    addu  $1, $zero, $22         // input matrix from user\n    jal   f3d_04001484\n     addu  $2, $zero, $20        // current P matrix or M top\n    sqv   $v6[0], 0x30($20)      // store result to P or M\n    sqv   $v5[0], 0x10($20)\n    lqv   $v27[0], 0x00($3)\n    j     f3d_04001438\n     lqv   $v29[0], -0x20($3)\nf3d_04001484:\n    addi  $19, $3, 0x10\nf3d_04001488:\n    vmudh $v5, $v31, $v31[0]     // clear accumulator and $v5\n    addi  $18, $1, 8\nf3d_04001490:\n    ldv   $v3[0], 0x00($2)\n    ldv   $v4[0], 0x20($2)\n    lqv   $v1[0], 0x00($1)\n    lqv   $v2[0], 0x20($1)\n    ldv   $v3[8], 0x00($2)\n    ldv   $v4[8], 0x20($2)\n    vmadl $v6, $v4, $v2[0h]\n    addi  $1, $1, 2\n    vmadm $v6, $v3, $v2[0h]\n    addi  $2, $2, 8\n    vmadn $v6, $v4, $v1[0h]\n    vmadh $v5, $v3, $v1[0h]\n    bne   $1, $18, f3d_04001490\n     vmadn $v6, $v31, $v31[0]\n    addi  $2, $2, -0x20\n    addi  $1, $1, 8\n    sqv   $v5[0], 0x00($3)\n    sqv   $v6[0], 0x20($3)\n    bne   $3, $19, f3d_04001488\n     addi  $3, $3, 0x10\n    jr    $ra\n     nop\nf3d_040014e8:\n    addi  $8, $zero, viewport\n    lqv   $v3[0], 0x50($zero)\n    lsv   $v19[0], 0x02($29)     // RDPHALF_1, contains persp normalize\n    lh    $3, 0x04($29)          // geometrymode\n    ldv   $v0[0], 0x00($8)       // viewport scale\n    ldv   $v1[0], 0x08($8)       // viewport translate\n    ldv   $v0[8], 0x00($8)\n    ldv   $v1[8], 0x08($8)\n    jr    $ra\n     vmudh $v0, $v0, $v3         // negate Y?\n\nload_mp_matrix:\n    addi  $8, $zero, mpMatrix\n    ldv   $v11[0], 0x18($8)      // load into $v8-v15, dup lower half and higher half\n    ldv   $v11[8], 0x18($8)      // $v8-v11 integer parts, $v12-v15 frac parts\n    ldv   $v15[0], 0x38($8)\n    ldv   $v15[8], 0x38($8)\nf3d_04001524:\n    ldv   $v8[0], 0x00($8)\n    ldv   $v9[0], 0x08($8)\n    ldv   $v10[0], 0x10($8)\n    ldv   $v12[0], 0x20($8)\n    ldv   $v13[0], 0x28($8)\n    ldv   $v14[0], 0x30($8)\n    ldv   $v8[8], 0x00($8)\n    ldv   $v9[8], 0x08($8)\n    ldv   $v10[8], 0x10($8)\n    ldv   $v12[8], 0x20($8)\n    ldv   $v13[8], 0x28($8)\n    jr    $ra\n     ldv   $v14[8], 0x30($8)\n\ndma_MOVEMEM:\n    lqv   $v0[0], 0x00($22)\n    lh    $5, (dmemTableOffset)($1)\n    j     SP_NOOP\n     sqv   $v0[0], 0x00($5)\n\ndma_VTX:\n    lh    $8, spNoopEntry\n    sh    $8, data0106\n    srl   $1, $1, 4\n    addi  $5, $1, 1              // num vertex\n    addi  $9, $5, 0\n    ldv   $v2[0], 0x00($22)      // input data\n    ldv   $v2[8], 0x10($22)      // load 2nd vertex (assuming it exists)\n    addi  $7, $zero, pointsBuffer\n    sll   $8, $6, 5              // dest index\n    sll   $6, $6, 3\n    add   $8, $6, $8             // 40 bytes per vertex\n    jal   f3d_040014e8\n     add   $7, $7, $8\n    llv   $v17[0], 0x14($29)     // texture scaling\n    jal   load_mp_matrix\n     llv   $v17[8], 0x14($29)\n@f3d_040015a8:\n    vmudn $v28, $v12, $v2[0h]    // x * first row frac\n    llv   $v18[0], 0x08($22)\n    vmadh $v28, $v8, $v2[0h]     // x * first row int\n    lw    $15, 0x0c($22)         // XR, YG, ZB, AA\n    vmadn $v28, $v13, $v2[1h]    // y * second row frac\n    lw    $16, 0x1c($22)\n    vmadh $v28, $v9, $v2[1h]     // y * second row int\n    andi  $1, $3, G_LIGHTING_H\n    vmadn $v28, $v14, $v2[2h]    // z * third row frac\n    vmadh $v28, $v10, $v2[2h]    // z * third row int\n    vmadn $v28, $v15, $v31[1]    // 1 * fourth row frac\n    llv   $v18[8], 0x18($22)\n    vmadh $v29, $v11, $v31[1]    // 1 * fourth row int\n    bne   $1, $zero, load_lighting\n     addi  $22, $22, 0x20        // next 2 vertices\n@f3d_040015e4:\n    vmudm $v18, $v18, $v17       // U *= S scale, V *= T scale (result >> 16)\n@f3d_040015e8:\n    lsv   $v21[0], 0x76($zero)\n    vmudn $v20, $v28, $v21[0]\n    vmadh $v21, $v29, $v21[0]\n    vch   $v3, $v29, $v29[3h]    // do trivial clip rejection\n    vcl   $v3, $v28, $v28[3h]    // by comparing xyz with w\n    cfc2  $13, vcc\n    vch   $v3, $v29, $v21[3h]\n    vcl   $v3, $v28, $v20[3h]\n    andi  $8, $13, 0x0707        // filter out xyz clip result for 1st vertex\n    andi  $13, $13, 0x7070       // filter out xyz clip result for 2nd vertex\n    sll   $8, $8, 4\n    sll   $13, $13, 16\n    or    $13, $13, $8\n    cfc2  $14, vcc\n    andi  $8, $14, 0x0707\n    vadd  $v21, $v29, $v31[0]\n    andi  $14, $14, 0x7070\n    vadd  $v20, $v28, $v31[0]\n    sll   $14, $14, 12\n    vmudl $v28, $v28, $v19[0]    // persp normalize, used to improve precision\n    or    $8, $8, $14\n    vmadm $v29, $v29, $v19[0]\n    or    $8, $8, $13\n    vmadn $v28, $v31, $v31[0]\n    sh    $8, 0x24($7)\n    jal   f3d_04001000           // compute 1/w\n     lh    $13, -0x1a($22)       // $13 unused?\n    vge   $v6, $v27, $v31[0]     // 1/w >= 0?\n    sdv   $v21[0], 0x00($7)      // store xyzw int\n    vmrg  $v6, $v27, $v30[0]\n    sdv   $v20[0], 0x08($7)      // store xyzw frac\n    vmudl $v5, $v20, $v26[3h]    // mul xyzw with 1/w\n    vmadm $v5, $v21, $v26[3h]\n    vmadn $v5, $v20, $v6[3h]\n    vmadh $v4, $v21, $v6[3h]\n    addi  $9, $9, -1             // decrement vertex input count\n    vmudl $v5, $v5, $v19[0]      // take away persp normalize factor\n    vmadm $v4, $v4, $v19[0]\n    vmadn $v5, $v31, $v31[0]\n    andi  $12, $3, G_FOG_H\n    ldv   $v2[0], 0x00($22)      // pre-load next vertices from input\n    vmudh $v7, $v1, $v31[1]      // viewport translate * 0001\n    ldv   $v2[8], 0x10($22)\n    vmadn $v7, $v5, $v0          // viewport scale\n    ldv   $v29[0], 0x28($zero)\n    vmadh $v6, $v4, $v0\n    ldv   $v29[8], 0x28($zero)\n    vmadn $v7, $v31, $v31[0]     // $v6$v7 contains vertex results after viewport\n    vge   $v6, $v6, $v29[1q]     // some saturating 0FFA-F006\n    sw    $15, 0x10($7)\n    beq   $12, $zero, @@f3d_040016e0 // skip fog?\n     vlt   $v6, $v6, $v29[0q]\n    lqv   $v3[0], 0x0330($zero)\n    vmudn $v5, $v5, $v3[0]       // mul fog factor (default 1)\n    vmadh $v4, $v4, $v3[0]\n    vadd  $v4, $v4, $v3[1]       // add parameter (default 0)\n    vge   $v4, $v4, $v31[0]\n    vlt   $v4, $v4, $v3[2]       // min parameter (default 0xff)\n    sbv   $v4[5], 0x13($7)       // high z for 1st vertex, store in AA\n    sw    $16, 0x18($7)\n    sbv   $v4[13], 0x1b($7)      // high z for 2nd vertex, store in AA\n    lw    $16, 0x18($7)\n@@f3d_040016e0:\n    slv   $v18[0], 0x14($7)      // texture coordinates, 1st vertex\n    sdv   $v6[0], 0x18($7)       // xyz_int after viewport\n    ssv   $v7[4], 0x1e($7)       // z_frac after viewport\n    ssv   $v27[6], 0x20($7)      // 1/w\n    ssv   $v26[6], 0x22($7)\n    blez  $9, @@f3d_04001728\n     addi  $9, $9, -1            // decrement vertex input counter again\n    sdv   $v21[8], 0x28($7)\n    sdv   $v20[8], 0x30($7)\n    slv   $v18[8], 0x3c($7)      // texture coordinates, 2nd vertex\n    sw    $16, 0x38($7)\n    sdv   $v6[8], 0x40($7)\n    ssv   $v7[12], 0x46($7)\n    ssv   $v27[14], 0x48($7)\n    ssv   $v26[14], 0x4a($7)\n    sw    $8, 0x4c($7)           // puts high hword first\n    addi  $7, $7, 0x50\n    bgtz  $9, @f3d_040015a8\n@@f3d_04001728:\n     lh    $8, data0106\n    jr    $8\n     nop\n\ndma_DL:\n    bgtz  $1, @@f3d_04001754     // 0=store ret addr, 1=end DL after branch\n     lb    $2, (DL_STACK_SIZE_OFFSET)($29)\n    addi  $4, $2, -0x24          // DL stack full?\n    bgtz  $4, SP_NOOP\n     addi  $3, $2, displayListStack\n    addi  $2, $2, 4\n    sw    $26, 0x00($3)          // store return address on DL stack\n    sb    $2, (DL_STACK_SIZE_OFFSET)($29)\n@@f3d_04001754:\n    jal   segmented_to_physical\n     add   $19, $24, $zero\n    add   $26, $19, $zero\n    j     SP_NOOP\n     addi  $28, $zero, 0x00\n\n// Overlays 2-4 will overwrite the following code\n.org 0x04001768\nf3d_04001768:\n    ori   $30, $zero, overlayInfo2\n    b     load_overlay\n     lh    $21, performClipEntry\n\nload_lighting:\n    ori   $30, $zero, overlayInfo3\n    b     load_overlay\n     lh    $21, lightEntry\n\nf3d_04001780:\n    ori   $2, $zero, 0x2800      // clear yielded, clear taskdone\n    mtc0  $2, SP_STATUS\n    lqv   $v31[0], 0x30($zero)\n    lqv   $v30[0], 0x40($zero)\n    lw    $4, OSTask_addr + OSTask_flags\n    andi  $4, $4, 0x0001\n    bne   $4, $zero, @@f3d_04001870\n     nop\n    lw    $23, 0x28($1)          // task output buff\n    lw    $3, 0x2c($1)           // task output buff size\n    sw    $23, 0x40($29)\n    sw    $3, 0x44($29)\n    mfc0  $4, DPC_STATUS\n    andi  $4, $4, DPC_STATUS_XBUS_DMA\n    bne   $4, $zero, @@f3d_040017e4\n     mfc0  $4, DPC_END\n    sub   $23, $23, $4\n    bgtz  $23, @@f3d_040017e4\n     mfc0  $5, DPC_CURRENT\n    beq   $5, $zero, @@f3d_040017e4\n     nop\n    beq   $5, $4, @@f3d_040017e4\n     nop\n    j     @@f3d_04001800\n     ori   $3, $4, 0x0000\n@@f3d_040017e4:\n    mfc0  $4, DPC_STATUS\n    andi  $4, $4, DPC_STATUS_START_VALID\n    bne   $4, $zero, @@f3d_040017e4\n     addi  $4, $zero, DPC_STATUS_CLR_XBUS\n    mtc0  $4, DPC_STATUS\n    mtc0  $3, DPC_START\n    mtc0  $3, DPC_END\n@@f3d_04001800:\n    sw    $3, 0x18($29)\n    addi  $23, $zero, rdpOutput\n    lw    $5, 0x10($1)           // TASK_UCODE (DRAM address)\n    lw    $2, overlayInfo1\n    lw    $3, overlayInfo2\n    lw    $4, overlayInfo3\n    lw    $6, overlayInfo4\n    add   $2, $2, $5             // apply DRAM offset\n    add   $3, $3, $5\n    add   $4, $4, $5\n    add   $6, $6, $5\n    sw    $2, overlayInfo1       // store back with DRAM offsets\n    sw    $3, overlayInfo2\n    sw    $4, overlayInfo3\n    sw    $6, overlayInfo4\n    jal   load_overlay_fcn\n     addi  $30, $zero, overlayInfo1\n    jal   load_display_list_dma\n     lw    $26, 0x30($1)         // TASK_DATA_PTR\n    lw    $2, 0x20($1)           // TASK_DRAM_STACK\n    sw    $2, 0x20($29)\n    sw    $2, 0x24($29)\n    addi  $2, $2, 0x0280         // end of stack?\n    sw    $2, 0x4c($29)\n    lw    $2, -0x08($zero)       // TASK_YIELD_DATA_PTR\n    sw    $2, dramPtr\n    j     dma_wait_dl\n     nop\n@@f3d_04001870:\n    jal   load_overlay_fcn\n     addi  $30, $zero, overlayInfo1\n    lw    $23, data08F0\n    lw    $28, data08E4\n    lw    $27, data08E8\n    j     SP_NOOP\n     lw    $26, data08EC\n\n// 0x0400188c-0x04001987: bunch of nops\n.fill 0xfc, 0\n.ifdef F3D_OLD\n  .fill 16, 0\n.endif\n\n// from G_TRI1\nf3d_04001998:\n    lh    $11, 0x24($3)\n    lh    $8, 0x24($2)\n    lh    $9, 0x24($1)\n    and   $12, $11, $8\n    or    $11, $11, $8\n    and   $12, $12, $9\n    andi  $12, $12, 0x7070\n    bne   $12, $zero, SP_NOOP    // all vertices outside screen, return\n     or    $11, $11, $9\n    andi  $11, $11, 0x4343\n    bne   $11, $zero, f3d_04001768   // halfway outside, so trigger clipping routine\nf3d_040019c4:\n     llv   $v13[0], 0x18($1)     // xy_int after viewport\n    llv   $v14[0], 0x18($2)\n    llv   $v15[0], 0x18($3)\n    lw    $13, 0x04($29)         // geometrymode\n    addi  $8, $zero, setupTemp   // setup temp area\n    lsv   $v21[0], 0x02($29)\n    lsv   $v5[0], 0x06($1)       // w_int p1\n    vsub  $v10, $v14, $v13       // p2-p1\n    lsv   $v6[0], 0x0e($1)       // w_frac p1\n    vsub  $v9, $v15, $v13        // p3-p1\n    lsv   $v5[2], 0x06($2)\n    vsub  $v12, $v13, $v14       // p1-p2\n    lsv   $v6[2], 0x0e($2)\n    lsv   $v5[4], 0x06($3)\n    lsv   $v6[4], 0x0e($3)\n    vmudh $v16, $v9, $v10[1]     // (p3-p1)*((p2-p1)_y)\n    lh    $9, 0x1a($1)           // y_int after viewport\n    vsar  $v18, $v18, $v18[1]    // high into $v18\n    lh    $10, 0x1a($2)\n    vsar  $v17, $v17, $v17[0]    // bits 47..31 of ACC\n    lh    $11, 0x1a($3)\n    vmudh $v16, $v12, $v9[1]     // (p1-p2)*((p3-p1)_y)\n    andi  $14, $13, G_CULL_FRONT\n    vsar  $v20, $v20, $v20[1]\n    andi  $15, $13, G_CULL_BACK\n    vsar  $v19, $v19, $v19[0]\n    addi  $12, $zero, 0         // now sort p1,p2,p3 by y\n@@sort_points_loop:\n    slt   $7, $10, $9\n    blez  $7, @@f3d_04001a58\n     add   $7, $10, $zero       // y2_int < y1_int (after viewport)\n    add   $10, $9, $zero        // swap $9/$10 and swap $1/$2\n    add   $9, $7, $zero\n    addu  $7, $2, $zero\n    addu  $2, $1, $zero\n    addu  $1, $7, $zero\n    xori  $12, $12, 0x0001       // xor that we swapped p1 and p2\n    nop                          // interesting place for NOP\n@@f3d_04001a58:\n    vaddc $v28, $v18, $v20\n    slt   $7, $11, $10\n    vadd  $v29, $v17, $v19\n    blez  $7, @@f3d_04001a88\n     add   $7, $11, $zero        // y3_int < y2_int?\n    add   $11, $10, $zero        // swap p2, p3\n    add   $10, $7, $zero\n    addu  $7, $3, $zero\n    addu  $3, $2, $zero\n    addu  $2, $7, $zero\n    j     @@sort_points_loop     // go back to test y1 and new y2\n     xori  $12, $12, 0x0001      // xor that we swapped p2 and p3\n@@f3d_04001a88:\n    vlt   $v27, $v29, $v31[0]\n    llv   $v15[0], 0x18($3)      // xy_int after viewport for new p3\n    vor   $v26, $v29, $v28\n    llv   $v14[0], 0x18($2)\n    llv   $v13[0], 0x18($1)\n    blez  $12, @@f3d_04001ab0    // skip if even number of swaps\n     vsub  $v4, $v15, $v14       // p3-p2\n    vmudn $v28, $v28, $v31[3]\n    vmadh $v29, $v29, $v31[3]\n    vmadn $v28, $v31, $v31[0]\n@@f3d_04001ab0:\n    vsub  $v10, $v14, $v13       // p2-p1\n    mfc2  $17, $v27[0]\n    vsub  $v9, $v15, $v13        // p3-p1\n    mfc2  $16, $v26[0]\n    sra   $17, $17, 31\n    vmov  $v29[3], $v29[0]\n    and   $15, $15, $17\n    vmov  $v28[3], $v28[0]\n    vmov  $v4[2], $v10[0]\n    beq   $16, $zero, @@f3d_04001fd0 // skip this triangle?\n     xori  $17, $17, 0xffff\n    vlt   $v27, $v29, $v31[0]\n    and   $14, $14, $17\n    vmov  $v4[3], $v10[1]\n    or    $16, $15, $14\n    vmov  $v4[4], $v9[0]\n    bgtz  $16, @@f3d_04001fd0\n     vmov  $v4[5], $v9[1]\n    mfc2  $7, $v27[0]\n    jal   f3d_04001000\n     addi  $6, $zero, 0x80       // left major flag\n    bltz  $7, @@f3d_04001b10\n     lb    $5, 0x07($29)         // low byte for geometrymode\n    addi  $6, $zero, 0\n@@f3d_04001b10:\n    vmudm $v9, $v4, $v31[4]\n    vmadn $v10, $v31, $v31[0]\n    vrcp  $v8[1], $v4[1]\n    vrcph $v7[1], $v31[0]\n    ori   $5, $5, 0x00c8         // OR with RDP command code\n    lb    $7, 0x12($29)          // mpmap level and tile ID\n    vrcp  $v8[3], $v4[3]\n    vrcph $v7[3], $v31[0]\n    vrcp  $v8[5], $v4[5]\n    vrcph $v7[5], $v31[0]\n    or    $6, $6, $7\n    vmudl $v8, $v8, $v30[4]\n    sb    $5, 0x00($23)\n    vmadm $v7, $v7, $v30[4]\n    sb    $6, 0x01($23)\n    vmadn $v8, $v31, $v31[0]\n    vmudh $v4, $v4, $v31[5]\n    lsv   $v12[0], 0x18($2)\n    vmudl $v6, $v6, $v21[0]\n    lsv   $v12[4], 0x18($1)\n    vmadm $v5, $v5, $v21[0]\n    lsv   $v12[8], 0x18($1)\n    vmadn $v6, $v31, $v31[0]\n    sll   $7, $9, 14\n    vmudl $v1, $v8, $v10[0q]\n    vmadm $v1, $v7, $v10[0q]\n    vmadn $v1, $v8, $v9[0q]\n    vmadh $v0, $v7, $v9[0q]\n    mtc2  $7, $v2[0]\n    vmadn $v1, $v31, $v31[0]\n    sw    $3, 0x00($8)\n    vmudl $v8, $v8, $v31[4]\n    vmadm $v7, $v7, $v31[4]\n    vmadn $v8, $v31, $v31[0]\n    vmudl $v1, $v1, $v31[4]\n    vmadm $v0, $v0, $v31[4]\n    vmadn $v1, $v31, $v31[0]\n    sh    $11, 0x02($23)         // YL\n    vand  $v16, $v1, $v30[1]\n    sh    $9, 0x06($23)          // YH\n    vmudm $v12, $v12, $v31[4]\n    sw    $2, 0x04($8)\n    vmadn $v13, $v31, $v31[0]\n    sw    $1, 0x08($8)\n    sh    $10, 0x04($23)         // YM\n    vcr   $v0, $v0, $v30[6]\n    ssv   $v12[0], 0x08($23)     // XL\n    vmudl $v11, $v16, $v2[0]\n    ssv   $v13[0], 0x0a($23)     // XL, frac\n    vmadm $v10, $v0, $v2[0]\n    ssv   $v0[2], 0x0c($23)      // DxLDy\n    vmadn $v11, $v31, $v31[0]\n    ssv   $v1[2], 0x0e($23)      // DxLDy, frac\n    andi  $7, $5, G_TEXTURE_ENABLE\n    addi  $15, $8, 8\n    addi  $16, $8, 0x10\n    vsubc $v3, $v13, $v11[1q]\n    ssv   $v0[10], 0x14($23)     // DxHDy\n    vsub  $v9, $v12, $v10[1q]\n    ssv   $v1[10], 0x16($23)     // DxHDy, frac\n    vsubc $v21, $v6, $v6[1]\n    ssv   $v0[6], 0x1c($23)      // DxMDy\n    vlt   $v19, $v5, $v5[1]\n    ssv   $v1[6], 0x1e($23)      // DxMDy, frac\n    vmrg  $v20, $v6, $v6[1]\n    ssv   $v9[8], 0x10($23)      // XH\n    vsubc $v21, $v20, $v6[2]\n    ssv   $v3[8], 0x12($23)      // XH, frac\n    vlt   $v19, $v19, $v5[2]\n    ssv   $v9[4], 0x18($23)      // XM\n    vmrg  $v20, $v20, $v6[2]\n    ssv   $v3[4], 0x1a($23)      // XM, frac\n    addi  $23, $23, 0x20\n    blez  $7, @@f3d_04001cfc     // no texture?\n     vmudl $v20, $v20, $v30[5]\n    lw    $14, 0x00($15)\n    vmadm $v19, $v19, $v30[5]\n    lw    $17, -0x04($15)\n    vmadn $v20, $v31, $v31[0]\n    lw    $18, -0x08($15)\n    llv   $v9[0], 0x14($14)\n    llv   $v9[8], 0x14($17)\n    llv   $v22[0], 0x14($18)\n    lsv   $v11[0], 0x22($14)\n    lsv   $v12[0], 0x20($14)\n    lsv   $v11[8], 0x22($17)\n    vmov  $v9[2], $v30[0]\n    lsv   $v12[8], 0x20($17)\n    vmov  $v9[6], $v30[0]\n    lsv   $v24[0], 0x22($18)\n    vmov  $v22[2], $v30[0]\n    lsv   $v25[0], 0x20($18)\n    vmudl $v6, $v11, $v20[0]\n    vmadm $v6, $v12, $v20[0]\n    ssv   $v19[0], 0x44($8)\n    vmadn $v6, $v11, $v19[0]\n    ssv   $v20[0], 0x4c($8)\n    vmadh $v5, $v12, $v19[0]\n    vmudl $v16, $v24, $v20[0]\n    vmadm $v16, $v25, $v20[0]\n    vmadn $v20, $v24, $v19[0]\n    vmadh $v19, $v25, $v19[0]\n    vmudm $v16, $v9, $v6[0h]\n    vmadh $v9, $v9, $v5[0h]\n    vmadn $v10, $v31, $v31[0]\n    vmudm $v16, $v22, $v20[0]\n    vmadh $v22, $v22, $v19[0]\n    vmadn $v23, $v31, $v31[0]\n    sdv   $v9[8], 0x10($16)\n    sdv   $v10[8], 0x18($16)\n    sdv   $v9[0], 0x00($16)\n    sdv   $v10[0], 0x08($16)\n    sdv   $v22[0], 0x20($16)\n    sdv   $v23[0], 0x28($16)\n    vabs  $v9, $v9, $v9\n    llv   $v19[0], 0x10($16)\n    vabs  $v22, $v22, $v22\n    llv   $v20[0], 0x18($16)\n    vabs  $v19, $v19, $v19\n    vge   $v17, $v9, $v22\n    vmrg  $v18, $v10, $v23\n    vge   $v17, $v17, $v19\n    vmrg  $v18, $v18, $v20\n@@f3d_04001cfc:\n    slv   $v17[0], 0x40($8)\n    slv   $v18[0], 0x48($8)\n    andi  $7, $5, (G_SHADE | G_TEXTURE_ENABLE | G_ZBUFFER)\n    blez  $7, @@f3d_04001fcc     // skip code below if no bits set\n     vxor  $v18, $v31, $v31\n    luv   $v25[0], 0x10($3)\n    vadd  $v16, $v18, $v30[5]\n    luv   $v15[0], 0x10($1)\n    vadd  $v24, $v18, $v30[5]\n    andi  $7, $13, 0x0200\n    vadd  $v5, $v18, $v30[5]\n    bgtz  $7, @@f3d_04001d3c\n     luv   $v23[0], 0x10($2)\n    luv   $v25[0], 0x10($4)\n    luv   $v15[0], 0x10($4)\n    luv   $v23[0], 0x10($4)\n@@f3d_04001d3c:\n    vmudm $v25, $v25, $v31[7]\n    vmudm $v15, $v15, $v31[7]\n    vmudm $v23, $v23, $v31[7]\n    ldv   $v16[8], 0x18($8)\n    ldv   $v15[8], 0x10($8)\n    ldv   $v24[8], 0x28($8)\n    ldv   $v23[8], 0x20($8)\n    ldv   $v5[8], 0x38($8)\n    ldv   $v25[8], 0x30($8)\n    lsv   $v16[14], 0x1e($1)\n    lsv   $v15[14], 0x1c($1)\n    lsv   $v24[14], 0x1e($2)\n    lsv   $v23[14], 0x1c($2)\n    lsv   $v5[14], 0x1e($3)\n    lsv   $v25[14], 0x1c($3)\n    vsubc $v12, $v24, $v16\n    vsub  $v11, $v23, $v15\n    vsubc $v20, $v16, $v5\n    vsub  $v19, $v15, $v25\n    vsubc $v10, $v5, $v16\n    vsub  $v9, $v25, $v15\n    vsubc $v22, $v16, $v24\n    vsub  $v21, $v15, $v23\n    vmudn $v6, $v10, $v4[3]\n    vmadh $v6, $v9, $v4[3]\n    vmadn $v6, $v22, $v4[5]\n    vmadh $v6, $v21, $v4[5]\n    vsar  $v9, $v9, $v9[0]\n    vsar  $v10, $v10, $v10[1]\n    vmudn $v6, $v12, $v4[4]\n    vmadh $v6, $v11, $v4[4]\n    vmadn $v6, $v20, $v4[2]\n    vmadh $v6, $v19, $v4[2]\n    vsar  $v11, $v11, $v11[0]\n    vsar  $v12, $v12, $v12[1]\n    vmudl $v6, $v10, $v26[3]\n    vmadm $v6, $v9, $v26[3]\n    vmadn $v10, $v10, $v27[3]\n    vmadh $v9, $v9, $v27[3]\n    vmudl $v6, $v12, $v26[3]\n    vmadm $v6, $v11, $v26[3]\n    vmadn $v12, $v12, $v27[3]\n    sdv   $v9[0], 0x08($23)\n    vmadh $v11, $v11, $v27[3]\n    sdv   $v10[0], 0x18($23)\n    vmudn $v6, $v12, $v31[1]\n    vmadh $v6, $v11, $v31[1]\n    vmadl $v6, $v10, $v1[5]\n    vmadm $v6, $v9, $v1[5]\n    vmadn $v14, $v10, $v0[5]\n    sdv   $v11[0], 0x28($23)\n    vmadh $v13, $v9, $v0[5]\n    sdv   $v12[0], 0x38($23)\n    vmudl $v28, $v14, $v2[0]\n    sdv   $v13[0], 0x20($23)\n    vmadm $v6, $v13, $v2[0]\n    sdv   $v14[0], 0x30($23)\n    vmadn $v28, $v31, $v31[0]\n    vsubc $v18, $v16, $v28\n    vsub  $v17, $v15, $v6\n    andi  $7, $5, G_SHADE\n    blez  $7, @@f3d_04001e44\n     andi  $7, $5, G_TEXTURE_ENABLE\n    addi  $23, $23, 0x40\n    sdv   $v17[0], -0x40($23)\n    sdv   $v18[0], -0x30($23)\n@@f3d_04001e44:\n    blez  $7, @@f3d_04001f48\n     andi  $7, $5, G_ZBUFFER\n    addi  $16, $zero, 0x0800\n    mtc2  $16, $v19[0]\n    vabs  $v24, $v9, $v9\n    ldv   $v20[8], 0x40($8)\n    vabs  $v25, $v11, $v11\n    ldv   $v21[8], 0x48($8)\n    vmudm $v24, $v24, $v19[0]\n    vmadn $v26, $v31, $v31[0]\n    vmudm $v25, $v25, $v19[0]\n    vmadn $v27, $v31, $v31[0]\n    vmudl $v21, $v21, $v19[0]\n    vmadm $v20, $v20, $v19[0]\n    vmadn $v21, $v31, $v31[0]\n    vmudn $v26, $v26, $v31[2]\n    vmadh $v24, $v24, $v31[2]\n    vmadn $v26, $v31, $v31[0]\n    vmadn $v23, $v27, $v31[1]\n    vmadh $v22, $v25, $v31[1]\n    addi  $16, $zero, 0x40\n    vmadn $v6, $v21, $v31[1]\n    mtc2  $16, $v19[0]\n    vmadh $v5, $v20, $v31[1]\n    vsubc $v23, $v6, $v6[5]\n    vge   $v5, $v5, $v5[5]\n    vmrg  $v6, $v6, $v6[5]\n    vsubc $v23, $v6, $v6[6]\n    vge   $v5, $v5, $v5[6]\n    vmrg  $v6, $v6, $v6[6]\n    vmudl $v6, $v6, $v19[0]\n    vmadm $v5, $v5, $v19[0]\n    vmadn $v6, $v31, $v31[0]\n    vrcph $v23[0], $v5[4]\n    vrcpl $v6[0], $v6[4]\n    vrcph $v5[0], $v31[0]\n    vmudn $v6, $v6, $v31[2]\n    vmadh $v5, $v5, $v31[2]\n    vlt   $v5, $v5, $v31[1]\n    vmrg  $v6, $v6, $v31[0]\n    vmudl $v20, $v18, $v6[0]\n    vmadm $v20, $v17, $v6[0]\n    vmadn $v20, $v18, $v5[0]\n    vmadh $v19, $v17, $v5[0]\n    vmudl $v22, $v10, $v6[0]\n    vmadm $v22, $v9, $v6[0]\n    vmadn $v22, $v10, $v5[0]\n    sdv   $v19[8], 0x00($23)\n    vmadh $v21, $v9, $v5[0]\n    sdv   $v20[8], 0x10($23)\n    vmudl $v24, $v12, $v6[0]\n    vmadm $v24, $v11, $v6[0]\n    vmadn $v24, $v12, $v5[0]\n    sdv   $v21[8], 0x08($23)\n    vmadh $v23, $v11, $v5[0]\n    sdv   $v22[8], 0x18($23)\n    vmudl $v26, $v14, $v6[0]\n    vmadm $v26, $v13, $v6[0]\n    vmadn $v26, $v14, $v5[0]\n    sdv   $v23[8], 0x28($23)\n    vmadh $v25, $v13, $v5[0]\n    sdv   $v24[8], 0x38($23)\n    addi  $23, $23, 0x40\n    sdv   $v25[8], -0x20($23)\n    sdv   $v26[8], -0x10($23)\n@@f3d_04001f48:\n    blez  $7, @@f3d_04001fcc\n     vmudn $v14, $v14, $v30[4]\n    vmadh $v13, $v13, $v30[4]\n    vmadn $v14, $v31, $v31[0]\n    vmudn $v16, $v16, $v30[4]\n    vmadh $v15, $v15, $v30[4]\n    vmadn $v16, $v31, $v31[0]\n    ssv   $v13[14], 0x08($23)\n    vmudn $v10, $v10, $v30[4]\n    ssv   $v14[14], 0x0a($23)\n    vmadh $v9, $v9, $v30[4]\n    vmadn $v10, $v31, $v31[0]\n    vmudn $v12, $v12, $v30[4]\n    vmadh $v11, $v11, $v30[4]\n    vmadn $v12, $v31, $v31[0]\n    lbu   $7, 0x11($29)\n    sub   $7, $zero, $7\n    beq   $7, $zero, @@f3d_04001f9c\n     mtc2  $7, $v6[0]\n    vch   $v11, $v11, $v6[0]\n    vcl   $v12, $v12, $v31[0]\n@@f3d_04001f9c:\n    ssv   $v9[14], 0x04($23)\n    vmudl $v28, $v14, $v2[0]\n    ssv   $v10[14], 0x06($23)\n    vmadm $v6, $v13, $v2[0]\n    ssv   $v11[14], 0x0c($23)\n    vmadn $v28, $v31, $v31[0]\n    ssv   $v12[14], 0x0e($23)\n    vsubc $v18, $v16, $v28\n    vsub  $v17, $v15, $v6\n    addi  $23, $23, 0x10\n    ssv   $v17[14], -0x10($23)\n    ssv   $v18[14], -0x0e($23)\n@@f3d_04001fcc:\n    jal   f3d_04001178\n@@f3d_04001fd0:\n     nop\n    jr    $30\n     nop\n    nop\nOverlay0End:\n\n// Overlay 1\n.headersize 0x04001000 - orga()\n.definelabel Overlay1LoadStart, orga()\n// reciprocal method, see RSP Programmers Guide page 79\n// $v29[3]=s_int, $v28[3]=s_frac, $v29[7]=t_int, $v28[7]=t_frac\n// out: $v27[3,7]=s,t int, $v26[3,7]=s,t frac\nOverlay1Address:\nf3d_04001000:\n    vrcph $v27[3], $v29[3]\n    vrcpl $v26[3], $v28[3]\n    vrcph $v27[3], $v29[7]\n    vrcpl $v26[7], $v28[7]\n    vrcph $v27[7], $v31[0]\n    vmudn $v26, $v26, $v31[2] // 0002, << 1 since input is S15.16\n    vmadh $v27, $v27, $v31[2]\n    vmadn $v26, $v31, $v31[0]\n    // $v27[3]=sres_int, $v26[3]=sres_frac, $v27[7]=tres_int, $v26[7]=tres_frac\n    lqv   $v23[0], 0x60($zero)\n    vxor  $v22, $v31, $v31    // (1/w)*w\n    vmudl $v24, $v26, $v28\n    vmadm $v24, $v27, $v28\n    vmadn $v24, $v26, $v29\n    vmadh $v25, $v27, $v29\n    // $v24=frac, $v25=int, should be very close to 1.0\n    vsubc $v24, $v22, $v24    // take 2.0-result (better rounding?)\n    vsub  $v25, $v23, $v25\n    vmudl $v22, $v26, $v24    // (2.0-(1/w)*w)*(1/w)\n    vmadm $v23, $v27, $v24\n    vmadn $v26, $v26, $v25\n    vmadh $v27, $v27, $v25\n    jr    $ra\n     nop\n\ndma_wait_dl:\n    jal   wait_while_dma_busy\n     addi  $27, $zero, inputDisplayList\n\nread_next_task_entry:\n    lw    $25, 0x00($27)     // first command word\n    lw    $24, 0x04($27)     // second command word\n    srl   $1, $25, 29\n    andi  $1, $1, 0x0006     // $1 = (two MSbits) << 1\n    addi  $26, $26, 8        // increase next task in DRAM ptr\n    addi  $27, $27, 8        // increase next task in DMEM ptr\n    addi  $28, $28, -8       // decrease task count left in DMEM\n    bgtz  $1, dispatch_task\n     andi  $18, $25, 0x01ff\n    addi  $22, $zero, inputData  // command that loads data input\nOverlay1End:\n\n\n// Overlay 2\n.headersize 0x04001768 - orga()\nOverlay2Address:\n    b     perform_clip\n     sh    $ra, data0158\n    nop\n    nop\n    ori   $30, $zero, overlayInfo3\n    b     load_overlay\n     lh    $21, lightEntry\n\nperform_clip:\n    sh    $3, clipTemp\n    sh    $2, data0942\n    sh    $1, data0944\n    sh    $zero, data0946\n    ori   $7, $zero, 0x0db8\n    ori   $30, $zero, clipTemp\n    ori   $6, $zero, 0x000c\nnext_clip:\n    or    $5, $30, $30\n    xori  $30, $30, 0x0014\nf3d_040017a8:\n    beq   $6, $zero, @f3d_04001954\n     lh    $11, 0xa6($6)\n    addi  $6, $6, -2\n    ori   $17, $zero, 0x0000\n    or    $18, $zero, $zero\n\nfound_in:\n    ori   $2, $5, 0x0000\n\nfound_out:\n    j     f3d_040017d4\n     addi  $14, $30, 2\nf3d_040017c8:\n    and   $8, $8, $11\n    beq   $8, $18, f3d_o2_04001804\n     addi  $2, $2, 2\nf3d_040017d4:\n    or    $20, $10, $zero\n    sh    $10, 0x00($14)\n    addi  $14, $14, 2\nf3d_040017e0:\n    lh    $10, 0x00($2)\n    bne   $10, $zero, f3d_040017c8\n     lh    $8, 0x24($10)\n    addi  $8, $17, -2\n    bgtz  $8, f3d_040017e0\n     ori   $2, $5, 0x0000\n    beq   $8, $zero, f3d_040017a8\n     nop\n    j     f3d_04001980\nf3d_o2_04001804:\n     xor   $18, $18, $11\n    lh    $8, lo(labelLUT)($17)\n    addi  $17, $17, 2\n    jr    $8\n     lh    $8, nextClipEntry\n\nfound_first_in:\n    mtc2  $10, $v13[0]\n    or    $10, $20, $zero\n    mfc2  $20, $v13[0]\n    ori   $14, $30, 0x0000\n    lh    $8, foundOutEntry\n\nfound_first_out:\n    sh    $8, data0106\n    addi  $7, $7, 0x28\n    sh    $7, 0x00($14)\n    sh    $zero, 0x02($14)\n    ldv   $v9[0], 0x00($10)\n    ldv   $v10[0], 0x08($10)\n    ldv   $v4[0], 0x00($20)\n    ldv   $v5[0], 0x08($20)\n    sll   $8, $6, 2\n    ldv   $v1[0], 0x70($8)\n    vmudh $v0, $v1, $v31[3]\n    vmudn $v12, $v5, $v1\n    vmadh $v11, $v4, $v1\n    vmadn $v12, $v31, $v31[0]\n    vmadn $v28, $v10, $v0\n    vmadh $v29, $v9, $v0\n    vmadn $v28, $v31, $v31[0]\n    vaddc $v26, $v28, $v28[0q]\n    vadd  $v27, $v29, $v29[0q]\n    vaddc $v28, $v26, $v26[1h]\n    vadd  $v29, $v27, $v27[1h]\n    mfc2  $8, $v29[6]\n    vrcph $v7[3], $v29[3]\n    vrcpl $v3[3], $v28[3]\n    vrcph $v7[3], $v31[0]\n    vmudn $v3, $v3, $v31[2]\n    bgez  $8, f3d_040018a4\n     vmadh $v7, $v7, $v31[2]\n    vmudn $v3, $v3, $v31[3]\n    vmadh $v7, $v7, $v31[3]\nf3d_040018a4:\n    veq   $v7, $v7, $v31[0]\n    vmrg  $v3, $v3, $v31[3]\n    vmudl $v28, $v28, $v3[3]\n    vmadm $v29, $v29, $v3[3]\n    jal   f3d_04001000\n     vmadn $v28, $v31, $v31[0]\n    vaddc $v28, $v12, $v12[0q]\n    vadd  $v29, $v11, $v11[0q]\n    vaddc $v12, $v28, $v28[1h]\n    vadd  $v11, $v29, $v29[1h]\n    vmudl $v15, $v12, $v26\n    vmadm $v15, $v11, $v26\n    vmadn $v15, $v12, $v27\n    vmadh $v8, $v11, $v27\n    vmudl $v28, $v31, $v31[5]\n    vmadl $v15, $v15, $v3[3]\n    vmadm $v8, $v8, $v3[3]\n    vmadn $v15, $v31, $v31[0]\n    veq   $v8, $v8, $v31[0]\n    vmrg  $v15, $v15, $v31[3]\n    vne   $v15, $v15, $v31[0]\n    vmrg  $v15, $v15, $v31[1]\n    vnxor $v8, $v15, $v31[0]\n    vaddc $v8, $v8, $v31[1]\n    vadd  $v29, $v29, $v29\n    vmudl $v28, $v5, $v8[3h]\n    vmadm $v29, $v4, $v8[3h]\n    vmadl $v28, $v10, $v15[3h]\n    vmadm $v29, $v9, $v15[3h]\n    vmadn $v28, $v31, $v31[0]\n    luv   $v12[0], 0x10($10)\n    luv   $v11[0], 0x10($20)\n    llv   $v12[8], 0x14($10)\n    llv   $v11[8], 0x14($20)\n    vmudm $v18, $v12, $v15[3]\n    vmadm $v18, $v11, $v8[3]\n    suv   $v18[0], 0x00($7)\n    sdv   $v18[8], 0x08($7)\n    ldv   $v18[0], 0x08($7)\n    jal   f3d_040014e8\n     lw    $15, 0x00($7)\n    mfc2  $10, $v13[0]\n    j     @f3d_040015e8\n     ori   $9, $zero, 0x0001\n@f3d_04001954:\n    lh    $8, 0x00($5)\n    sh    $8, 0xb4($zero)\n    sh    $5, data0106\n    lh    $30, clipDrawEntry\n\nclip_draw_loop:\n    lh    $8, data0106\n    lh    $3, 0xb4($zero)\n    lh    $2, 0x02($8)\n    lh    $1, 0x04($8)\n    addi  $8, $8, 2\n    bne   $1, $zero, f3d_040019c4\n     sh    $8, data0106\nf3d_04001980:\n    j     SP_NOOP\n     nop\nOverlay2End:\n\n// Overlay 3\n.headersize 0x04001768 - orga()\nOverlay3Address:\n    ori   $30, $zero, overlayInfo2\n    b     load_overlay\n     lh    $21, performClipEntry\n    lw    $1, numLights\n    sw    $15, 0x00($7)        // normal vector 1st vertex\n    sw    $16, 0x04($7)        // normal vector 2nd vertex\n    bltz  $1, @init_lights\n     lpv   $v4[0], 0x00($7)\n    luv   $v7[0], 0x01d0($1)   // ambient RGB\n    vxor  $v27, $v27, $v27\n@@f3d_04001790:\n    vge   $v7, $v7, $v31[0]    // max(0, $v7)\n    lpv   $v5[0], 0x01c0($1)   // calculated light\n    vadd  $v27, $v27, $v7\n    luv   $v7[0], 0x01b0($1)   // light's RGB\n    vor   $v20, $v6, $v31[0]\n    vmulf $v6, $v4, $v5        // mul normal vector\n    vadd  $v3, $v6, $v6[1q]\n    vadd  $v6, $v3, $v6[2h]\n    vmulf $v7, $v7, $v6[0h]    // $v6[0] and $v6[4] contain dot product\n    bgtz  $1, @@f3d_04001790\n     addi  $1, $1, -0x20\n    suv   $v27[0], 0x00($7)\n    andi  $8, $3, G_TEXTURE_GEN_H\n    sb    $15, 0x03($7)\n    sb    $16, 0x07($7)\n    lw    $15, 0x00($7)\n    beq   $8, $zero, @f3d_040015e4\n     lw    $16, 0x04($7)\n    andi  $8, $3, G_TEXTURE_GEN_LINEAR_H // not used in SM64\n    lpv   $v7[0], 0x90($29)\n    ldv   $v6[0], 0xa0($zero)\n    vmadn $v20, $v7, $v20[0h]\n    beq   $8, $zero, @@f3d_o3_04001804\n     vmadm $v18, $v31, $v31[0]\n    vmulf $v7, $v18, $v18\n    vmulf $v7, $v7, $v18\n    vmulf $v20, $v7, $v6[1]\n    vmacf $v20, $v7, $v6[3]\n    vmacf $v18, $v18, $v6[2]\n@@f3d_o3_04001804:\n    j     @f3d_040015e4\n     vadd  $v18, $v18, $v31[4]\n\n@init_lights:\n    andi  $1, $1, 0x0fff\n    sw    $1, numLights\n    jal   f3d_04001524\n     addi  $8, $zero, modelViewMatrixStack\n    ori   $8, $zero, scratchSpace\n    stv   $v8[2], 0x10($8)     // transpose\n    stv   $v8[4], 0x20($8)\n    stv   $v8[12], 0x30($8)\n    stv   $v8[14], 0x40($8)\n    ltv   $v8[14], 0x10($8)\n    ltv   $v8[12], 0x20($8)\n    ltv   $v8[4], 0x30($8)\n    ltv   $v8[2], 0x40($8)\n    sdv   $v12[8], 0x10($8)\n    sdv   $v13[8], 0x20($8)\n    sdv   $v14[8], 0x30($8)\n    ldv   $v12[0], 0x10($8)\n    ldv   $v13[0], 0x20($8)\n    ldv   $v14[0], 0x30($8)\nf3d_04001858:\n    lpv   $v5[0], 0x01b8($1)   // this light's dir vector\n    vmulf $v5, $v5, $v31[4]\n    vmudn $v6, $v12, $v5[0h]\n    vmadn $v6, $v13, $v5[1h]\n    vmadn $v6, $v14, $v5[2h]\n    vmadm $v3, $v31, $v31[0]\n    vmudm $v6, $v3, $v31[2]\n    vmacf $v3, $v8, $v5[0h]\n    vmacf $v3, $v9, $v5[1h]\n    vmacf $v3, $v10, $v5[2h]\n    vmadn $v6, $v31, $v31[0]\n    vmudl $v5, $v6, $v6\n    vmadm $v5, $v3, $v6\n    vmadn $v5, $v6, $v3\n    vmadh $v26, $v3, $v3\n    vaddc $v7, $v5, $v5[1q]\n    vadd  $v4, $v26, $v26[1q]\n    vaddc $v7, $v5, $v7[0h]\n    vadd  $v4, $v26, $v4[0h]\n    vrsqh $v11[0], $v4[2]      // normalize vector\n    vrsql $v15[0], $v7[2]\n    vrsqh $v11[0], $v31[0]\n    vmudl $v15, $v15, $v30[3]\n    vmadm $v11, $v11, $v30[3]\n    vmadn $v15, $v31, $v31[0]\n    vmudl $v7, $v6, $v15[0]\n    vmadm $v7, $v3, $v15[0]\n    vmadn $v7, $v6, $v11[0]\n    vmadh $v4, $v3, $v11[0]\n    vmadn $v7, $v31, $v31[0]\n    ldv   $v2[0], 0xf8($29)\n    vge   $v7, $v7, $v2[0]\n    vlt   $v7, $v7, $v2[1]\n    vmudn $v7, $v7, $v2[2]\n    spv   $v7[0], 0x01c0($1)\n    lw    $8, 0x01c0($1)\n    sw    $8, 0x01c4($1)\n    bgtz  $1, f3d_04001858\n     addi  $1, $1, -0x20\n    j     load_mp_matrix\n     lh    $ra, lightEntry\n    nop\nOverlay3End:\n\n// Overlay 4\n.headersize 0x04001768 - orga()\nOverlay4Address:\n    j     f3d_04001788\n     nop\noverlay_4_entry:\n    nop\n    jal   wait_while_dma_busy\n     ori   $2, $zero, 0x4000\n    mtc0  $2, SP_STATUS\n    break\n    nop\nf3d_04001788:\n    ori   $2, $zero, 0x1000\n    sw    $28, data08E4\n    sw    $27, data08E8\n    sw    $26, data08EC\n    sw    $23, data08F0\n    lw    $19, dramPtr\n    ori   $20, $zero, 0x0000\n    ori   $18, $zero, 0x08ff\n    jal   dma_read_write\n     ori   $17, $zero, 0x0001\n    jal   wait_while_dma_busy\n     nop\n    j     f3d_040010c8\n     mtc0  $2, SP_STATUS\n    nop\n    nop\n    addiu $zero, $zero, 0xbeef\n    nop\nOverlay4End:\n\n.close // CODE_FILE\n"
  },
  {
    "path": "rsp/gbi.inc",
    "content": "// GBI: Graphics Binary Interface\n\nG_FOG                  equ 0x00010000\nG_LIGHTING             equ 0x00020000\nG_TEXTURE_GEN          equ 0x00040000\nG_TEXTURE_GEN_LINEAR   equ 0x00080000\n\nG_FOG_H                equ (G_FOG/0x10000)\nG_LIGHTING_H           equ (G_LIGHTING/0x10000)\nG_TEXTURE_GEN_H        equ (G_TEXTURE_GEN/0x10000)\nG_TEXTURE_GEN_LINEAR_H equ(G_TEXTURE_GEN_LINEAR/0x10000)\n\n\nG_CULL_BACK  equ 0x00002000\nG_CULL_FRONT equ 0x00001000\n\nG_ZBUFFER        equ 0x00000001\nG_TEXTURE_ENABLE equ 0x00000002\nG_SHADE          equ 0x00000004\n"
  },
  {
    "path": "rsp/rsp_defs.inc",
    "content": "// RSP definitions\n\n// OSTask placed at end of DMEM (IMEM_START - sizeof(OSTask))\n.definelabel OSTask_addr, 0xFC0\n// OSTask data member offsets\nOSTask_flags           equ 0x04\nOSTask_ucode           equ 0x10\nOSTask_ucode_size      equ 0x14 // ucode_size is ignored\nOSTask_ucode_data      equ 0x18\nOSTask_ucode_data_size equ 0x1C\n// flags\nOS_TASK_DP_WAIT equ 0x0002\n\n// RDP Status read flags\nDPC_STATUS_XBUS_DMA    equ 0x0001\nDPC_STATUS_DMA_BUSY    equ 0x0100\nDPC_STATUS_START_VALID equ 0x0400\n\n// RDP Status write flags\nDPC_STATUS_CLR_XBUS    equ 0x0001\n"
  },
  {
    "path": "rsp/rspboot.s",
    "content": ".rsp\n\n.include \"rsp/rsp_defs.inc\"\n\n// This file assumes CODE_FILE is set on the command line\n.create CODE_FILE, 0x04001000\n\n.if defined(VERSION_JP) || defined(VERSION_US)\n    ori   $1, $1, 0x0001\n.endif\n    j     boot_04001068\n     addi  $1, $zero, OSTask_addr\nboot_load_ucode:\n    lw    $2, OSTask_ucode($1)\n    addi  $3, $zero, 0x0f7f    // hard-coded length = 0xF80\n    addi  $7, $zero, 0x1080    // hard-coded address = 0x1080\n    mtc0  $7, SP_MEM_ADDR\n    mtc0  $2, SP_DRAM_ADDR\n    mtc0  $3, SP_RD_LEN\nboot_ucode_dma_busy:\n    mfc0  $4, SP_DMA_BUSY\n    bne   $4, $zero, boot_ucode_dma_busy\n     nop\n    jal   check_yielded\n     nop\n    jr    $7                   // jump to the loaded ucode\n     mtc0  $zero, SP_SEMAPHORE // clear semaphore\n\ncheck_yielded:\n    mfc0  $8, SP_STATUS\n    andi  $8, $8, 0x0080       // yield signal is set\n    bne   $8, $zero, boot_04001054\n     nop\n    jr    ra\nboot_04001054:\n     mtc0  $zero, SP_SEMAPHORE // clear semaphore\n    ori   $8, $zero, 0x5200    // clear yield, set yielded, set taskdone?\n    mtc0  $8, SP_STATUS\n    break                      // halt RSP and set SP_STATUS_BROKE\n    nop\n\nboot_04001068:\n    lw    $2, OSTask_flags($1)\n    andi  $2, $2, OS_TASK_DP_WAIT\n    beq   $2, $zero, boot_load_data\n     nop\n    jal   check_yielded\n     nop\n    mfc0  $2, DPC_STATUS\n    andi  $2, $2, DPC_STATUS_DMA_BUSY\n    bgtz  $2, check_yielded\n     nop\nboot_load_data:\n    lw    $2, OSTask_ucode_data($1)\n    lw    $3, OSTask_ucode_data_size($1)\n    addi  $3, $3, -1\nboot_dma_not_full:\n    mfc0  $30, SP_DMA_FULL\n    bne   $30, $zero, boot_dma_not_full\n     nop\n    mtc0  $zero, SP_MEM_ADDR   // ucode_data store at base of DMEM\n    mtc0  $2, SP_DRAM_ADDR\n    mtc0  $3, SP_RD_LEN\nboot_data_dma_busy:\n    mfc0  $4, SP_DMA_BUSY\n    bne   $4, $zero, boot_data_dma_busy\n     nop\n    jal   check_yielded\n     nop\n    j     boot_load_ucode\n     nop\n\n.close // CODE_FILE\n"
  },
  {
    "path": "sm64.cn.sha1",
    "content": "2e1db2780985a1f068077dc0444b685f39cd90ec  build/cn/sm64.cn.z64\n"
  },
  {
    "path": "sm64.eu.sha1",
    "content": "4ac5721683d0e0b6bbb561b58a71740845dceea9  build/eu/sm64.eu.z64\n"
  },
  {
    "path": "sm64.jp.sha1",
    "content": "8a20a5c83d6ceb0f0506cfc9fa20d8f438cafe51  build/jp/sm64.jp.z64\n"
  },
  {
    "path": "sm64.ld",
    "content": "OUTPUT_ARCH (mips)\n\n/* include/segments.h defines SEG_POOL_START, SEG_POOL_END, SEG_BUFFERS,\n * SEG_GODDARD, SEG_ENGINE, SEG_FRAMEBUFFERS */\n#include \"segments.h\"\n#include \"config.h\"\n\n#ifndef USE_EXT_RAM\n#define ADDR_OR_ALIGN(addr) (addr)\n#else\n#define ADDR_OR_ALIGN(addr) ALIGN(0x1000)\n#endif\n\n#define BEGIN_SEG(name, addr) \\\n    _##name##SegmentStart = ADDR(.name); \\\n    _##name##SegmentRomStart = __romPos; \\\n    .name (addr) : AT(__romPos)\n\n#define END_SEG(name) \\\n    _##name##SegmentEnd = ADDR(.name) + SIZEOF(.name); \\\n    _##name##SegmentRomEnd = __romPos + SIZEOF(.name); \\\n    __romPos += SIZEOF(.name);\n\n#define BEGIN_NOLOAD(name) \\\n    _##name##SegmentNoloadStart = ADDR(.name.noload); \\\n    .name.noload (NOLOAD) :\n\n#define END_NOLOAD(name) \\\n    _##name##SegmentNoloadEnd = ADDR(.name.noload) + SIZEOF(.name.noload);\n\n#define MIO0_SEG(name, segAddr) \\\n    BEGIN_SEG(name##_mio0, segAddr) \\\n    { \\\n        BUILD_DIR/bin/name.mio0.o(.data); \\\n        . = ALIGN(0x10); \\\n    } \\\n    END_SEG(name##_mio0)\n\n#define MIO0_EU_SEG(name, segAddr) \\\n    BEGIN_SEG(name##_mio0, segAddr) \\\n    { \\\n        BUILD_DIR/bin/eu/name.mio0.o(.data); \\\n        . = ALIGN(0x10); \\\n    } \\\n    END_SEG(name##_mio0)\n\n#define STANDARD_LEVEL(name) \\\n    BEGIN_SEG(name##_segment_7, 0x07000000) \\\n    { \\\n        BUILD_DIR/levels/name/leveldata.mio0.o(.data); \\\n        . = ALIGN(0x10); \\\n    } \\\n    END_SEG(name##_segment_7) \\\n    BEGIN_SEG(name, 0x0E000000) \\\n    { \\\n        BUILD_DIR/levels/name/script.o(.data); \\\n        BUILD_DIR/levels/name/geo.o(.data); \\\n    } \\\n    END_SEG(name)\n\n#define STANDARD_OBJECTS(name, segAddr, geoAddr) \\\n    BEGIN_SEG(name##_mio0, segAddr) \\\n    { \\\n        BUILD_DIR/actors/name.mio0.o(.data); \\\n        . = ALIGN(0x10); \\\n    } \\\n    END_SEG(name##_mio0) \\\n    BEGIN_SEG(name##_geo, geoAddr) \\\n    { \\\n        BUILD_DIR/actors/name##_geo.o(.data); \\\n    } \\\n    END_SEG(name##_geo)\n\n#define CREATE_LO_HI_PAIR(name, value) \\\n    name##Hi = (value) >> 16; \\\n    name##Lo = (value) & 0xffff;\n\nSECTIONS\n{\n    __romPos = 0;\n\n    BEGIN_SEG(boot, 0x04000000)\n    {\n        BUILD_DIR/asm/rom_header.o(.text);\n        BUILD_DIR/asm/boot.o(.text);\n        BUILD_DIR/asm/ipl3_font.o(.text);\n    }\n    END_SEG(boot)\n\n    . = 0x80000400;\n    BEGIN_NOLOAD(zbuffer) {\n        BUILD_DIR/src/buffers/zbuffer.o(.bss*);\n    }\n\n#ifdef VERSION_CN\n    gZBufferEnd = .;\n#endif\n\n    . = SEG_BUFFERS;\n    BEGIN_NOLOAD(buffers)\n    {\n        BUILD_DIR/src/buffers/buffers.o(.bss*);\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        BUILD_DIR/src/audio/port_sh.o(.bss*);\n#else\n        BUILD_DIR/src/audio/globals_start.o(.bss*);\n        BUILD_DIR/src/audio/synthesis.o(.bss*);\n        BUILD_DIR/src/audio/heap.o(.bss*);\n        BUILD_DIR/src/audio/load.o(.bss*);\n        BUILD_DIR/src/audio/data.o(.bss*);\n#endif\n\n#ifdef VERSION_EU\n        . = ALIGN(0x200);\n#else\n        . = ALIGN(0x1000);\n#endif\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        . += 0xB000;\n#endif\n        BUILD_DIR/src/buffers/gfx_output_buffer.o(.bss*);\n    }\n    END_NOLOAD(buffers)\n\n    /* lib/src/__osDevMgrMain.c and lib/src/osCreateViManager.c contain infinite\n     * loops compiled without -g, which cause the return statements and the .o\n     * files themselves to be aligned to 32-byte boundaries. But the linker\n     * Nintendo used did not respect .o file alignment, and aligned the files\n     * only to 16 bytes, in some cases misaligning them. We force the same to\n     * happen using the SUBALIGN directive. This is harmless; the alignment is\n     * just an optimization. */\n    BEGIN_SEG(main, )\n#ifndef VERSION_CN\n        SUBALIGN(16)\n#endif\n    {\n        BUILD_DIR/asm/entry.o(.text);\n        BUILD_DIR/src/game/crash_screen.o(.text);\n        BUILD_DIR/src/game/main.o(.text);\n        BUILD_DIR/src/game/game_init.o(.text);\n#ifdef VERSION_CN\n        . += 0x10;\n#endif\n        BUILD_DIR/src/game/sound_init.o(.text);\n#if ENABLE_RUMBLE\n        BUILD_DIR/src/game/rumble_init.o(.text);\n#endif\n        BUILD_DIR/src/game/level_update.o(.text);\n        BUILD_DIR/src/game/interaction.o(.text);\n        BUILD_DIR/src/game/mario.o(.text);\n        BUILD_DIR/src/game/mario_step.o(.text);\n        BUILD_DIR/src/game/mario_actions_cutscene.o(.text);\n        BUILD_DIR/src/game/mario_actions_automatic.o(.text);\n        BUILD_DIR/src/game/mario_actions_stationary.o(.text);\n        BUILD_DIR/src/game/mario_actions_moving.o(.text);\n        BUILD_DIR/src/game/mario_actions_airborne.o(.text);\n        BUILD_DIR/src/game/mario_actions_submerged.o(.text);\n        BUILD_DIR/src/game/mario_actions_object.o(.text);\n        BUILD_DIR/src/game/level_geo.o(.text);\n        BUILD_DIR/src/game/mario_misc.o(.text);\n        BUILD_DIR/src/game/memory.o(.text);\n        BUILD_DIR/src/game/save_file.o(.text);\n        BUILD_DIR/src/game/area.o(.text);\n        BUILD_DIR/src/game/rendering_graph_node.o(.text);\n        BUILD_DIR/src/game/profiler.o(.text);\n        BUILD_DIR/asm/decompress.o(.text);\n        BUILD_DIR/src/game/camera.o(.text);\n        BUILD_DIR/src/game/debug_course.o(.text);\n        BUILD_DIR/src/game/object_list_processor.o(.text);\n#ifndef VERSION_EU\n        BUILD_DIR/src/game/object_helpers.o(.text);\n#endif\n        BUILD_DIR/src/game/behavior_actions.o(.text);\n        BUILD_DIR/src/game/platform_displacement.o(.text);\n#ifndef VERSION_EU\n        BUILD_DIR/src/game/object_collision.o(.text);\n        BUILD_DIR/src/game/spawn_object.o(.text);\n#endif\n        BUILD_DIR/src/game/spawn_sound.o(.text);\n        BUILD_DIR/src/game/debug.o(.text);\n        BUILD_DIR/src/game/screen_transition.o(.text);\n        BUILD_DIR/src/game/shadow.o(.text);\n        BUILD_DIR/src/game/skybox.o(.text);\n        BUILD_DIR/src/game/moving_texture.o(.text);\n        BUILD_DIR/src/game/geo_misc.o(.text);\n        BUILD_DIR/src/game/paintings.o(.text);\n        BUILD_DIR/src/game/print.o(.text);\n        BUILD_DIR/src/game/ingame_menu.o(.text);\n        BUILD_DIR/src/game/envfx_snow.o(.text);\n        BUILD_DIR/src/game/envfx_bubbles.o(.text);\n        BUILD_DIR/src/game/macro_special_objects.o(.text);\n        BUILD_DIR/src/game/hud.o(.text);\n        BUILD_DIR/src/game/obj_behaviors.o(.text);\n        BUILD_DIR/src/game/obj_behaviors_2.o(.text);\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        BUILD_DIR/src/audio/synthesis_sh.o(.text);\n#else\n        BUILD_DIR/src/audio/synthesis.o(.text);\n#endif\n        BUILD_DIR/src/audio/heap.o(.text);\n        BUILD_DIR/src/audio/load.o(.text);\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        BUILD_DIR/src/audio/load_sh.o(.text);\n        BUILD_DIR/src/audio/port_sh.o(.text);\n#endif\n        BUILD_DIR/src/audio/playback.o(.text);\n        BUILD_DIR/src/audio/effects.o(.text);\n        BUILD_DIR/src/audio/seqplayer.o(.text);\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        BUILD_DIR/libultra.a:osDriveRomInit.o(.text);\n#endif\n        BUILD_DIR/src/audio/external.o(.text);\n        BUILD_DIR/src/audio/port_eu.o(.text);\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n#ifdef VERSION_CN\n        BUILD_DIR/libultra.a:osInitializeIQueWrapper.o(.text);\n        BUILD_DIR/libultra.a:osAiGetLength.o(.text);\n        BUILD_DIR/libultra.a:osAiSetFrequency.o(.text);\n        BUILD_DIR/libultra.a:osAiSetNextBuffer.o(.text);\n        BUILD_DIR/libultra.a:osInvalDCache.o(.text);\n        BUILD_DIR/libultra.a:osInvalICache.o(.text);\n        BUILD_DIR/libultra.a:osWritebackDCacheAll.o(.text);\n        BUILD_DIR/libultra.a:osContStartReadData.o(.text);\n        BUILD_DIR/libultra.a:osContInit.o(.text);\n        BUILD_DIR/libultra.a:osVirtualToPhysical.o(.text);\n        BUILD_DIR/libultra.a:sqrtf.o(.text);\n        BUILD_DIR/libultra.a:cosf.o(.text);\n        BUILD_DIR/libultra.a:guOrthoF.o(.text);\n        BUILD_DIR/libultra.a:guPerspectiveF.o(.text);\n        BUILD_DIR/libultra.a:sinf.o(.text);\n        BUILD_DIR/libultra.a:bcopy.o(.text);\n        BUILD_DIR/libultra.a:bzero.o(.text);\n        BUILD_DIR/libultra.a:llmuldiv.o(.text);\n        BUILD_DIR/libultra.a:llconv.o(.text);\n#endif\n        BUILD_DIR/libultra.a:string.o(.text);\n        BUILD_DIR/libultra.a:_Printf.o(.text);\n#ifdef VERSION_CN\n        BUILD_DIR/libultra.a:sprintf.o(.text);\n        BUILD_DIR/libultra.a:osSyncPrintf.o(.text);\n        BUILD_DIR/libultra.a:osCreateMesgQueue.o(.text);\n        BUILD_DIR/libultra.a:osRecvMesg.o(.text);\n        BUILD_DIR/libultra.a:osSendMesg.o(.text);\n        BUILD_DIR/libultra.a:osSetEventMesg.o(.text);\n        BUILD_DIR/libultra.a:osGetCount.o(.text);\n        BUILD_DIR/libultra.a:osSpTaskLoadGo.o(.text);\n        BUILD_DIR/libultra.a:osSpTaskYield.o(.text);\n        BUILD_DIR/libultra.a:osSpTaskYielded.o(.text);\n        BUILD_DIR/libultra.a:__osSiRawStartDma.o(.text);\n        BUILD_DIR/libultra.a:__osSiCreateAccessQueue.o(.text);\n        BUILD_DIR/libultra.a:osCreateThread.o(.text);\n        BUILD_DIR/libultra.a:osSetThreadPri.o(.text);\n        BUILD_DIR/libultra.a:osStartThread.o(.text);\n        BUILD_DIR/libultra.a:__osDequeueThread.o(.text);\n        BUILD_DIR/libultra.a:__osGetCurrFaultedThread.o(.text);\n        BUILD_DIR/libultra.a:osGetTime.o(.text);\n        BUILD_DIR/libultra.a:osSetTime.o(.text);\n        BUILD_DIR/libultra.a:osSetTimer.o(.text);\n        BUILD_DIR/libultra.a:osTimer.o(.text);\n        BUILD_DIR/libultra.a:osMapTLB.o(.text);\n        BUILD_DIR/libultra.a:__osProbeTLB.o(.text);\n        BUILD_DIR/libultra.a:osUnmapTLBAll.o(.text);\n        BUILD_DIR/libultra.a:osCreateViManager.o(.text);\n        BUILD_DIR/libultra.a:osViSetEvent.o(.text);\n        BUILD_DIR/libultra.a:osViSetMode.o(.text);\n        BUILD_DIR/libultra.a:osViSetSpecialFeatures.o(.text);\n        BUILD_DIR/libultra.a:osViSwapBuffer.o(.text);\n        BUILD_DIR/libultra.a:__osViSwapContext.o(.text);\n        BUILD_DIR/libultra.a:osViBlack.o(.text);\n        BUILD_DIR/libultra.a:guMtxIdentF.o(.text);\n        BUILD_DIR/libultra.a:guMtxF2L.o(.text);\n        BUILD_DIR/libultra.a:guScale.o(.text);\n        BUILD_DIR/libultra.a:guTranslate.o(.text);\n        BUILD_DIR/libultra.a:guRotateF.o(.text);\n        BUILD_DIR/libultra.a:osEepromProbe.o(.text);\n        BUILD_DIR/libultra.a:osEepromLongWrite.o(.text);\n        BUILD_DIR/libultra.a:osEepromLongRead.o(.text);\n        BUILD_DIR/libultra.a:__osExceptionPreamble.o(.text);\n        BUILD_DIR/libultra.a:__osDisableInt.o(.text);\n        BUILD_DIR/libultra.a:__osRestoreInt.o(.text);\n        BUILD_DIR/libultra.a:osSetIntMask.o(.text);\n        BUILD_DIR/libultra.a:osCreatePiManager.o(.text);\n        BUILD_DIR/libultra.a:osEPiRawStartDma.o(.text);\n        BUILD_DIR/libultra.a:epidma.o(.text);\n        BUILD_DIR/libultra.a:osCartRomInit.o(.text);\n        BUILD_DIR/libultra.a:__osDevMgrMain.o(.text);\n        BUILD_DIR/libultra.a:__osPiCreateAccessQueue.o(.text);\n        BUILD_DIR/libultra.a:osPiStartDma.o(.text);\n        BUILD_DIR/libultra.a:iQueKernelCalls.o(.text);\n        BUILD_DIR/libultra.a:motor.o(.text);\n        BUILD_DIR/libultra.a:parameters.o(.text);\n        BUILD_DIR/libultra.a:osInitialize.o(.text);\n        BUILD_DIR/libultra.a:__osAiDeviceBusy.o(.text);\n        BUILD_DIR/libultra.a:osWritebackDCache.o(.text);\n        BUILD_DIR/libultra.a:_Litob.o(.text);\n        BUILD_DIR/libultra.a:_Ldtob.o(.text);\n        BUILD_DIR/libultra.a:osJamMesg.o(.text);\n        BUILD_DIR/libultra.a:__osGetCause.o(.text);\n        BUILD_DIR/libultra.a:__osGetSR.o(.text);\n        BUILD_DIR/libultra.a:__osSetFpcCsr.o(.text);\n        BUILD_DIR/libultra.a:__osSetSR.o(.text);\n        BUILD_DIR/libultra.a:__osSetWatchLo.o(.text);\n        BUILD_DIR/libultra.a:__osSetCompare.o(.text);\n        BUILD_DIR/libultra.a:__osSpDeviceBusy.o(.text);\n        BUILD_DIR/libultra.a:__osSpGetStatus.o(.text);\n        BUILD_DIR/libultra.a:__osSpSetStatus.o(.text);\n        BUILD_DIR/libultra.a:__osSpSetPc.o(.text);\n        BUILD_DIR/libultra.a:__osSpRawStartDma.o(.text);\n        BUILD_DIR/libultra.a:__osSiRawReadIo.o(.text);\n        BUILD_DIR/libultra.a:__osSiRawWriteIo.o(.text);\n        BUILD_DIR/libultra.a:osDestroyThread.o(.text);\n        BUILD_DIR/libultra.a:osGetThreadPri.o(.text);\n        BUILD_DIR/libultra.a:osYieldThread.o(.text);\n        BUILD_DIR/libultra.a:osMapTLBRdb.o(.text);\n        BUILD_DIR/libultra.a:__osViInit.o(.text);\n        BUILD_DIR/libultra.a:__osViGetCurrentContext.o(.text);\n        BUILD_DIR/libultra.a:guNormalize.o(.text);\n        BUILD_DIR/libultra.a:osEepromRead.o(.text);\n        BUILD_DIR/libultra.a:osEepromWrite.o(.text);\n        BUILD_DIR/libultra.a:__osSetGlobalIntMask.o(.text);\n        BUILD_DIR/libultra.a:__osResetGlobalIntMask.o(.text);\n        BUILD_DIR/libultra.a:osPiRawStartDma.o(.text);\n        BUILD_DIR/libultra.a:osPiGetCmdQueue.o(.text);\n        BUILD_DIR/libultra.a:osEPiRawReadIo.o(.text);\n        BUILD_DIR/libultra.a:osEPiRawWriteIo.o(.text);\n        BUILD_DIR/libultra.a:ldiv.o(.text);\n        BUILD_DIR/libultra.a:__osSiDeviceBusy.o(.text);\n#endif\n#ifndef VERSION_CN\n        BUILD_DIR/libultra.a:llmuldiv.o(.text);\n        BUILD_DIR/libultra.a:osInitialize.o(.text);\n        BUILD_DIR/libultra.a:osSetTime.o(.text);\n        BUILD_DIR/libultra.a:osGetTime.o(.text);\n        BUILD_DIR/libultra.a:osWritebackDCacheAll.o(.text);\n        BUILD_DIR/libultra.a:osViBlack.o(.text);\n        BUILD_DIR/libultra.a:osViSwapBuffer.o(.text);\n        BUILD_DIR/libultra.a:__osGetCurrFaultedThread.o(.text);\n        BUILD_DIR/libultra.a:osSetEventMesg.o(.text);\n        BUILD_DIR/libultra.a:osRecvMesg.o(.text);\n        BUILD_DIR/libultra.a:parameters.o(.text);\n        BUILD_DIR/libultra.a:osCreateMesgQueue.o(.text);\n        BUILD_DIR/libultra.a:osCreateThread.o(.text);\n        BUILD_DIR/libultra.a:osStartThread.o(.text);\n        BUILD_DIR/libultra.a:osMapTLB.o(.text);\n        BUILD_DIR/libultra.a:osUnmapTLBAll.o(.text);\n        BUILD_DIR/libultra.a:sprintf.o(.text);\n        BUILD_DIR/libultra.a:osViSetEvent.o(.text);\n        BUILD_DIR/libultra.a:osSpTaskLoadGo.o(.text);\n        BUILD_DIR/libultra.a:osSpTaskYield.o(.text);\n        BUILD_DIR/libultra.a:osSendMesg.o(.text);\n        BUILD_DIR/libultra.a:osSpTaskYielded.o(.text);\n        BUILD_DIR/libultra.a:osCreateViManager.o(.text);\n        BUILD_DIR/libultra.a:osViSetMode.o(.text);\n        BUILD_DIR/libultra.a:osViSetSpecialFeatures.o(.text);\n        BUILD_DIR/libultra.a:osCreatePiManager.o(.text);\n        BUILD_DIR/libultra.a:osSetThreadPri.o(.text);\n        BUILD_DIR/libultra.a:sqrtf.o(.text);\n        BUILD_DIR/libultra.a:osContStartReadData.o(.text);\n        BUILD_DIR/libultra.a:osContInit.o(.text);\n        BUILD_DIR/libultra.a:osEepromProbe.o(.text);\n#if ENABLE_RUMBLE\n        BUILD_DIR/libultra.a:motor.o(.text);\n#endif\n        BUILD_DIR/libultra.a:osInvalDCache.o(.text);\n        BUILD_DIR/libultra.a:osPiStartDma.o(.text);\n        BUILD_DIR/libultra.a:bzero.o(.text);\n        BUILD_DIR/libultra.a:osInvalICache.o(.text);\n        BUILD_DIR/libultra.a:osEepromLongRead.o(.text);\n        BUILD_DIR/libultra.a:osEepromLongWrite.o(.text);\n        BUILD_DIR/libultra.a:bcopy.o(.text);\n        BUILD_DIR/libultra.a:guOrthoF.o(.text);\n        BUILD_DIR/libultra.a:guPerspectiveF.o(.text);\n        BUILD_DIR/libultra.a:llconv.o(.text);\n        BUILD_DIR/libultra.a:cosf.o(.text);\n        BUILD_DIR/libultra.a:sinf.o(.text);\n        BUILD_DIR/libultra.a:guTranslateF.o(.text);\n        BUILD_DIR/libultra.a:guRotateF.o(.text);\n        BUILD_DIR/libultra.a:guScaleF.o(.text);\n        BUILD_DIR/libultra.a:osAiSetFrequency.o(.text);\n#endif\n#ifdef VERSION_SH\n        BUILD_DIR/libultra.a:osCartRomInit.o(.text);\n        BUILD_DIR/libultra.a:epidma.o(.text);\n#endif\n#ifdef VERSION_EU\n        BUILD_DIR/libultra.a:alBnkfNew.o(.text);\n#endif\n#ifndef VERSION_CN\n        BUILD_DIR/libultra.a:osAiGetLength.o(.text);\n        BUILD_DIR/libultra.a:osAiSetNextBuffer.o(.text);\n#endif\n#ifdef VERSION_SH\n        BUILD_DIR/libultra.a:osGetCount.o(.text);\n        BUILD_DIR/libultra.a:__osDisableInt.o(.text);\n        BUILD_DIR/libultra.a:__osRestoreInt.o(.text);\n#endif\n#ifndef VERSION_CN\n        BUILD_DIR/libultra.a:_Litob.o(.text);\n        BUILD_DIR/libultra.a:_Ldtob.o(.text);\n        BUILD_DIR/libultra.a:__osSetSR.o(.text);\n        BUILD_DIR/libultra.a:__osGetSR.o(.text);\n        BUILD_DIR/libultra.a:__osSetFpcCsr.o(.text);\n        BUILD_DIR/libultra.a:__osSiRawReadIo.o(.text);\n        BUILD_DIR/libultra.a:__osSiRawWriteIo.o(.text);\n        BUILD_DIR/libultra.a:__osExceptionPreamble.o(.text);\n        BUILD_DIR/libultra.a:osWritebackDCache.o(.text);\n        BUILD_DIR/libultra.a:osMapTLBRdb.o(.text);\n#endif\n        BUILD_DIR/libultra.a:osPiRawReadIo.o(.text);\n        BUILD_DIR/libultra.a:__osSetHWintrRoutine.o(.text);\n#ifdef VERSION_EU\n        BUILD_DIR/libultra.a:leointerrupt.o(.text);\n#endif\n#ifndef VERSION_CN\n        BUILD_DIR/libultra.a:osTimer.o(.text);\n#endif\n#ifdef VERSION_EU\n        BUILD_DIR/libultra.a:__osDisableInt.o(.text);\n        BUILD_DIR/libultra.a:__osRestoreInt.o(.text);\n        BUILD_DIR/libultra.a:osGetCount.o(.text);\n#endif\n#ifndef VERSION_CN\n        BUILD_DIR/libultra.a:__osViInit.o(.text);\n        BUILD_DIR/libultra.a:__osDequeueThread.o(.text);\n        BUILD_DIR/libultra.a:osVirtualToPhysical.o(.text);\n        BUILD_DIR/libultra.a:__osSpSetStatus.o(.text);\n        BUILD_DIR/libultra.a:__osSpSetPc.o(.text);\n        BUILD_DIR/libultra.a:__osSpRawStartDma.o(.text);\n        BUILD_DIR/libultra.a:__osSpDeviceBusy.o(.text);\n        BUILD_DIR/libultra.a:__osSpGetStatus.o(.text);\n        BUILD_DIR/libultra.a:osGetThreadPri.o(.text);\n        BUILD_DIR/libultra.a:__osViGetCurrentContext.o(.text);\n        BUILD_DIR/libultra.a:__osViSwapContext.o(.text);\n#ifdef VERSION_SH\n        BUILD_DIR/libultra.a:osLeoDiskInit.o(.text);\n#endif\n        BUILD_DIR/libultra.a:__osPiCreateAccessQueue.o(.text);\n        BUILD_DIR/libultra.a:osPiRawStartDma.o(.text);\n        BUILD_DIR/libultra.a:osEPiRawStartDma.o(.text);\n        BUILD_DIR/libultra.a:__osDevMgrMain.o(.text);\n        BUILD_DIR/libultra.a:__osSiCreateAccessQueue.o(.text);\n        BUILD_DIR/libultra.a:__osSiRawStartDma.o(.text);\n        BUILD_DIR/libultra.a:osSetTimer.o(.text);\n        BUILD_DIR/libultra.a:osEepromWrite.o(.text);\n#endif\n#if ENABLE_RUMBLE\n        BUILD_DIR/libultra.a:osPfsIsPlug.o(.text);\n        BUILD_DIR/libultra.a:crc.o(.text);\n        BUILD_DIR/libultra.a:contramwrite.o(.text);\n        BUILD_DIR/libultra.a:contramread.o(.text);\n#endif\n#ifndef VERSION_CN\n        BUILD_DIR/libultra.a:osJamMesg.o(.text);\n        BUILD_DIR/libultra.a:osPiGetCmdQueue.o(.text);\n        BUILD_DIR/libultra.a:osEepromRead.o(.text);\n        BUILD_DIR/libultra.a:guMtxF2L.o(.text);\n        BUILD_DIR/libultra.a:guNormalize.o(.text);\n        BUILD_DIR/libultra.a:__osAiDeviceBusy.o(.text);\n        BUILD_DIR/libultra.a:ldiv.o(.text);\n        BUILD_DIR/libultra.a:__osSiDeviceBusy.o(.text);\n#endif\n#ifdef VERSION_SH\n        BUILD_DIR/libultra.a:leointerrupt.o(.text);\n#endif\n        BUILD_DIR/libultra.a:osSetIntMask.o(.text);\n#ifndef VERSION_CN\n        BUILD_DIR/libultra.a:osDestroyThread.o(.text);\n#endif\n#ifdef VERSION_EU\n        BUILD_DIR/libultra.a:osLeoDiskInit.o(.text);\n#endif\n#ifndef VERSION_CN\n        BUILD_DIR/libultra.a:__osSetCompare.o(.text);\n        BUILD_DIR/libultra.a:__osProbeTLB.o(.text);\n        BUILD_DIR/libultra.a:__osResetGlobalIntMask.o(.text);\n        BUILD_DIR/libultra.a:osEPiRawWriteIo.o(.text);\n#endif\n#ifdef VERSION_SH\n        BUILD_DIR/libultra.a:osEPiRawReadIo.o(.text);\n        BUILD_DIR/libultra.a:__osSetGlobalIntMask.o(.text);\n#endif\n#ifndef VERSION_CN\n        BUILD_DIR/libultra.a:osYieldThread.o(.text);\n#endif\n#if ENABLE_RUMBLE\n        BUILD_DIR/libultra.a:pfsgetstatus.o(.text);\n#endif\n#ifdef VERSION_CN\n        BUILD_DIR/libgcc.a:_divdi3.o(.text);\n        BUILD_DIR/libgcc.a:_moddi3.o(.text);\n        BUILD_DIR/libgcc.a:_udivdi3.o(.text);\n        BUILD_DIR/libgcc.a:_umoddi3.o(.text);\n        BUILD_DIR/libgcc.a:_cmpdi2.o(.text);\n        BUILD_DIR/libgcc.a:_floatdidf.o(.text);\n        BUILD_DIR/libgcc.a:_floatdisf.o(.text);\n        BUILD_DIR/libgcc.a:_fixunsdfdi.o(.text);\n        BUILD_DIR/libgcc.a:_fixdfdi.o(.text);\n        BUILD_DIR/libgcc.a:_fixunssfdi.o(.text);\n        BUILD_DIR/libgcc.a:_fixsfdi.o(.text);\n#endif\n        BUILD_DIR/lib/rsp.o(.text);\n#else\n        BUILD_DIR/src/game*.o(.text);\n        BUILD_DIR/src/audio*.o(.text);\n        BUILD_DIR/libultra.a:parameters.o(.text);\n        BUILD_DIR/libultra.a:osSetTime.o(.text);\n        BUILD_DIR/libultra.a:osMapTLB.o(.text);\n        BUILD_DIR/libultra.a:osUnmapTLBAll.o(.text);\n        BUILD_DIR/libultra.a:sprintf.o(.text);\n        BUILD_DIR/libultra.a:osCreateMesgQueue.o(.text);\n        BUILD_DIR/libultra.a:osSetEventMesg.o(.text);\n        BUILD_DIR/libultra.a:osViSetEvent.o(.text);\n        BUILD_DIR/libultra.a:osCreateThread.o(.text);\n        BUILD_DIR/libultra.a:osRecvMesg.o(.text);\n        BUILD_DIR/libultra.a:osSpTaskLoadGo.o(.text);\n        BUILD_DIR/libultra.a:osSpTaskYield.o(.text);\n        BUILD_DIR/libultra.a:osSendMesg.o(.text);\n        BUILD_DIR/libultra.a:osSpTaskYielded.o(.text);\n        BUILD_DIR/libultra.a:osStartThread.o(.text);\n        BUILD_DIR/libultra.a:osWritebackDCacheAll.o(.text);\n        BUILD_DIR/libultra.a:osCreateViManager.o(.text);\n        BUILD_DIR/libultra.a:osViSetMode.o(.text);\n        BUILD_DIR/libultra.a:osViBlack.o(.text);\n        BUILD_DIR/libultra.a:osViSetSpecialFeatures.o(.text);\n        BUILD_DIR/libultra.a:osCreatePiManager.o(.text);\n        BUILD_DIR/libultra.a:osSetThreadPri.o(.text);\n        BUILD_DIR/libultra.a:osInitialize.o(.text);\n        BUILD_DIR/libultra.a:osViSwapBuffer.o(.text);\n        BUILD_DIR/libultra.a:sqrtf.o(.text);\n        BUILD_DIR/libultra.a:osContStartReadData.o(.text);\n        BUILD_DIR/libultra.a:osContInit.o(.text);\n        BUILD_DIR/libultra.a:osEepromProbe.o(.text);\n#if ENABLE_RUMBLE\n        BUILD_DIR/libultra.a:motor.o(.text);\n#endif\n        BUILD_DIR/libultra.a:llmuldiv.o(.text);\n        BUILD_DIR/libultra.a:llmuldiv_gcc.o(.text);\n        BUILD_DIR/libultra.a:osInvalDCache.o(.text);\n        BUILD_DIR/libultra.a:osPiStartDma.o(.text);\n        BUILD_DIR/libultra.a:bzero.o(.text);\n        BUILD_DIR/libultra.a:osInvalICache.o(.text);\n        BUILD_DIR/libultra.a:osEepromLongRead.o(.text);\n        BUILD_DIR/libultra.a:osEepromLongWrite.o(.text);\n        BUILD_DIR/libultra.a:bcopy.o(.text);\n        BUILD_DIR/libultra.a:guOrthoF.o(.text);\n        BUILD_DIR/libultra.a:guPerspectiveF.o(.text);\n        BUILD_DIR/libultra.a:osGetTime.o(.text);\n        BUILD_DIR/libultra.a:llconv.o(.text);\n        BUILD_DIR/libultra.a:cosf.o(.text);\n        BUILD_DIR/libultra.a:sinf.o(.text);\n        BUILD_DIR/libultra.a:guTranslateF.o(.text);\n        BUILD_DIR/libultra.a:guRotateF.o(.text);\n        BUILD_DIR/libultra.a:guScaleF.o(.text);\n        BUILD_DIR/libultra.a:osAiSetFrequency.o(.text);\n        BUILD_DIR/libultra.a:alBnkfNew.o(.text);\n        BUILD_DIR/libultra.a:osWritebackDCache.o(.text);\n        BUILD_DIR/libultra.a:osAiGetLength.o(.text);\n        BUILD_DIR/libultra.a:osAiSetNextBuffer.o(.text);\n        BUILD_DIR/libultra.a:osTimer.o(.text);\n        BUILD_DIR/libultra.a:_Printf.o(.text);\n        BUILD_DIR/libultra.a:string.o(.text);\n        BUILD_DIR/libultra.a:__osDequeueThread.o(.text);\n        BUILD_DIR/libultra.a:__osDisableInt.o(.text);\n        BUILD_DIR/libultra.a:__osRestoreInt.o(.text);\n        BUILD_DIR/libultra.a:__osViInit.o(.text);\n        BUILD_DIR/libultra.a:__osExceptionPreamble.o(.text);\n        BUILD_DIR/libultra.a:osVirtualToPhysical.o(.text);\n        BUILD_DIR/libultra.a:__osSpSetStatus.o(.text);\n        BUILD_DIR/libultra.a:__osSpSetPc.o(.text);\n        BUILD_DIR/libultra.a:__osSpRawStartDma.o(.text);\n        BUILD_DIR/libultra.a:__osSpDeviceBusy.o(.text);\n        BUILD_DIR/libultra.a:__osSpGetStatus.o(.text);\n        BUILD_DIR/libultra.a:osGetThreadPri.o(.text);\n        BUILD_DIR/libultra.a:__osViGetCurrentContext.o(.text);\n        BUILD_DIR/libultra.a:__osViSwapContext.o(.text);\n        BUILD_DIR/libultra.a:osGetCount.o(.text);\n        BUILD_DIR/libultra.a:__osPiCreateAccessQueue.o(.text);\n        BUILD_DIR/libultra.a:osPiRawStartDma.o(.text);\n        BUILD_DIR/libultra.a:__osDevMgrMain.o(.text);\n        BUILD_DIR/libultra.a:__osSetSR.o(.text);\n        BUILD_DIR/libultra.a:__osGetSR.o(.text);\n        BUILD_DIR/libultra.a:__osSetFpcCsr.o(.text);\n        BUILD_DIR/libultra.a:__osSiRawReadIo.o(.text);\n        BUILD_DIR/libultra.a:__osSiRawWriteIo.o(.text);\n        BUILD_DIR/libultra.a:osMapTLBRdb.o(.text);\n        BUILD_DIR/libultra.a:osPiRawReadIo.o(.text);\n#ifdef VERSION_JP\n        . += 0x40;\n#endif\n        BUILD_DIR/libultra.a:__osSiCreateAccessQueue.o(.text);\n        BUILD_DIR/libultra.a:__osSiRawStartDma.o(.text);\n        BUILD_DIR/libultra.a:osSetTimer.o(.text);\n        BUILD_DIR/libultra.a:osEepromWrite.o(.text);\n#if ENABLE_RUMBLE\n        BUILD_DIR/libultra.a:osPfsIsPlug.o(.text);\n        BUILD_DIR/libultra.a:crc.o(.text);\n        BUILD_DIR/libultra.a:contramwrite.o(.text);\n        BUILD_DIR/libultra.a:contramread.o(.text);\n#endif\n        BUILD_DIR/libultra.a:osJamMesg.o(.text);\n        BUILD_DIR/libultra.a:osPiGetCmdQueue.o(.text);\n        BUILD_DIR/libultra.a:osEepromRead.o(.text);\n        BUILD_DIR/libultra.a:guMtxF2L.o(.text);\n        BUILD_DIR/libultra.a:guMtxIdentF.o(.text);\n        BUILD_DIR/libultra.a:guNormalize.o(.text);\n        BUILD_DIR/libultra.a:__osAiDeviceBusy.o(.text);\n        BUILD_DIR/libultra.a:__osSetCompare.o(.text);\n        BUILD_DIR/libultra.a:_Litob.o(.text);\n        BUILD_DIR/libultra.a:_Ldtob.o(.text);\n        BUILD_DIR/libultra.a:kdebugserver.o(.text);\n        BUILD_DIR/libultra.a:__osSyncPutChars.o(.text);\n        BUILD_DIR/libultra.a:osSetIntMask.o(.text);\n        BUILD_DIR/libultra.a:osDestroyThread.o(.text);\n        BUILD_DIR/libultra.a:__osProbeTLB.o(.text);\n        BUILD_DIR/libultra.a:__osSiDeviceBusy.o(.text);\n        BUILD_DIR/libultra.a:ldiv.o(.text);\n        BUILD_DIR/libultra.a:__osGetCause.o(.text);\n        BUILD_DIR/libultra.a:__osAtomicDec.o(.text);\n        BUILD_DIR/libultra.a:guLookAtRef.o(.text); /* Fast3DEX2 only */\n#if ENABLE_RUMBLE\n        BUILD_DIR/libultra.a:pfsgetstatus.o(.text);\n#endif\n        BUILD_DIR/lib/rsp.o(.text);\n#endif\n\n        /* data */\n        BUILD_DIR/src/game/crash_screen.o(.data*);\n        BUILD_DIR/src/game/main.o(.data*);\n        BUILD_DIR/src/game/game_init.o(.data*);\n        BUILD_DIR/src/game/sound_init.o(.data*);\n#if ENABLE_RUMBLE\n        BUILD_DIR/src/game/rumble_init.o(.data*);\n#endif\n        BUILD_DIR/src/game/level_update.o(.data*);\n        BUILD_DIR/src/game/interaction.o(.data*);\n        BUILD_DIR/src/game/mario.o(.data*);\n        BUILD_DIR/src/game/mario_step.o(.data*);\n        BUILD_DIR/src/game/mario_actions_cutscene.o(.data*);\n        BUILD_DIR/src/game/mario_actions_moving.o(.data*);\n        BUILD_DIR/src/game/mario_actions_submerged.o(.data*);\n        BUILD_DIR/src/game/mario_actions_object.o(.data*);\n        BUILD_DIR/src/game/mario_misc.o(.data*);\n        BUILD_DIR/src/game/memory.o(.data*);\n        BUILD_DIR/src/game/save_file.o(.data*);\n        BUILD_DIR/src/game/area.o(.data*);\n        BUILD_DIR/src/game/rendering_graph_node.o(.data*);\n        BUILD_DIR/src/game/profiler.o(.data*);\n        BUILD_DIR/src/game/camera.o(.data*);\n        BUILD_DIR/src/game/object_list_processor.o(.data*);\n#ifndef VERSION_EU\n        BUILD_DIR/src/game/object_helpers.o(.data*);\n#endif\n        BUILD_DIR/src/game/behavior_actions.o(.data*);\n        BUILD_DIR/src/game/platform_displacement.o(.data*);\n        BUILD_DIR/src/game/spawn_sound.o(.data*);\n        BUILD_DIR/src/game/debug.o(.data*);\n        BUILD_DIR/src/game/screen_transition.o(.data*);\n        BUILD_DIR/src/game/shadow.o(.data*);\n        BUILD_DIR/src/game/skybox.o(.data*);\n        BUILD_DIR/src/game/moving_texture.o(.data*);\n        BUILD_DIR/src/game/geo_misc.o(.data*);\n        BUILD_DIR/src/game/paintings.o(.data*);\n        BUILD_DIR/src/game/print.o(.data*);\n        BUILD_DIR/src/game/ingame_menu.o(.data*);\n        BUILD_DIR/src/game/envfx_snow.o(.data*);\n        BUILD_DIR/src/game/envfx_bubbles.o(.data*);\n        BUILD_DIR/src/game/macro_special_objects.o(.data*);\n        BUILD_DIR/src/game/hud.o(.data*);\n        BUILD_DIR/src/game/obj_behaviors.o(.data*);\n        BUILD_DIR/src/game/obj_behaviors_2.o(.data*);\n#ifndef VERSION_EU\n        /* wildcard doesn't match on EU due to files being moved to engine/ */\n        BUILD_DIR/src/game*.o(.data*);\n#endif\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        BUILD_DIR/src/audio/synthesis_sh.o(.data*);\n#else\n        BUILD_DIR/src/audio/synthesis.o(.data*);\n#endif\n        BUILD_DIR/src/audio/heap.o(.data*);\n        BUILD_DIR/src/audio/load.o(.data*);\n        BUILD_DIR/src/audio/playback.o(.data*);\n        BUILD_DIR/src/audio/effects.o(.data*);\n        BUILD_DIR/src/audio/seqplayer.o(.data*);\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        BUILD_DIR/src/audio/data.o(.data*);\n        BUILD_DIR/src/audio/shindou_debug_prints.o(.data*);\n        BUILD_DIR/src/audio/port_sh.o(.data*);\n        BUILD_DIR/src/audio/external.o(.data*);\n        BUILD_DIR/src/audio/audio_session_presets_sh.o(.data*);\n#else\n        BUILD_DIR/src/audio/external.o(.data*);\n        BUILD_DIR/src/audio/port_eu.o(.data*);\n        BUILD_DIR/src/audio/data.o(.data*);\n#endif\n\n#ifdef VERSION_CN\n        BUILD_DIR/libultra.a:osAiSetNextBuffer.o(.data*);\n        BUILD_DIR/libultra.a:osContInit.o(.data*);\n        BUILD_DIR/libultra.a:_Printf.o(.data*);\n        BUILD_DIR/libultra.a:osSetEventMesg.o(.data*);\n        BUILD_DIR/libultra.a:__osSiCreateAccessQueue.o(.data*);\n        BUILD_DIR/libultra.a:__osDequeueThread.o(.data*);\n        BUILD_DIR/libultra.a:osTimer.o(.data*);\n        BUILD_DIR/libultra.a:osCreateViManager.o(.data*);\n        BUILD_DIR/libultra.a:osViTable.o(.data*);\n        BUILD_DIR/libultra.a:guRotateF.o(.data*);\n        BUILD_DIR/libultra.a:__osExceptionPreamble.o(.data*);\n        BUILD_DIR/libultra.a:osCreatePiManager.o(.data*);\n        BUILD_DIR/libultra.a:osCartRomInit.o(.data*);\n        BUILD_DIR/libultra.a:__osPiCreateAccessQueue.o(.data*);\n        BUILD_DIR/libultra.a:osInitialize.o(.data*);\n        BUILD_DIR/libultra.a:_Litob.o(.data*);\n        BUILD_DIR/libultra.a:__osViInit.o(.data*);\n        BUILD_DIR/libultra.a:osViData.o(.data*);\n#endif\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n        BUILD_DIR/libultra.a:_Printf.o(.data*);\n        BUILD_DIR/libultra.a:osInitialize.o(.data*);\n        BUILD_DIR/libultra.a:osCreateViManager.o(.data*);\n        BUILD_DIR/libultra.a:osViTable.o(.data*);\n        BUILD_DIR/libultra.a:osCreatePiManager.o(.data*);\n        BUILD_DIR/libultra.a:osContInit.o(.data*);\n#if ENABLE_RUMBLE\n        BUILD_DIR/libultra.a:motor.o(.data*);\n#endif\n        BUILD_DIR/libultra.a:osAiSetNextBuffer.o(.data*);\n        BUILD_DIR/libultra.a:_Litob.o(.data*);\n        BUILD_DIR/libultra.a:__osExceptionPreamble.o(.data*);\n        BUILD_DIR/libultra.a:osTimer.o(.data*);\n        BUILD_DIR/libultra.a:__osViInit.o(.data*);\n        BUILD_DIR/libultra.a:__osDequeueThread.o(.data*);\n        BUILD_DIR/libultra.a:__osPiCreateAccessQueue.o(.data*);\n        BUILD_DIR/libultra.a:__osSiCreateAccessQueue.o(.data*);\n        BUILD_DIR/libultra.a:osViData.o(.data*);\n#else\n        BUILD_DIR/libultra.a:osViTable.o(.data*);\n        BUILD_DIR/libultra.a:osCreateViManager.o(.data*);\n        BUILD_DIR/libultra.a:osCreatePiManager.o(.data*);\n        BUILD_DIR/libultra.a:osInitialize.o(.data*);\n        BUILD_DIR/libultra.a:osContInit.o(.data*);\n#if ENABLE_RUMBLE\n        BUILD_DIR/libultra.a:motor.o(.data*);\n#endif\n        BUILD_DIR/libultra.a:osAiSetNextBuffer.o(.data*);\n        BUILD_DIR/libultra.a:osTimer.o(.data*);\n        BUILD_DIR/libultra.a:_Printf.o(.data*);\n        BUILD_DIR/libultra.a:__osDequeueThread.o(.data*);\n        BUILD_DIR/libultra.a:__osViInit.o(.data*);\n        BUILD_DIR/libultra.a:__osExceptionPreamble.o(.data*);\n        BUILD_DIR/libultra.a:__osPiCreateAccessQueue.o(.data*);\n        BUILD_DIR/libultra.a:__osSiCreateAccessQueue.o(.data*);\n        BUILD_DIR/libultra.a:_Litob.o(.data*);\n        BUILD_DIR/libultra.a:_Ldtob.o(.data*);\n        BUILD_DIR/libultra.a:osViData.o(.data*);\n        BUILD_DIR/libultra.a:kdebugserver.o(.data*);\n        BUILD_DIR/libultra.a:__osSyncPutChars.o(.data*);\n        BUILD_DIR/libultra.a:guRotateF.o(.data*);\n        BUILD_DIR/libultra.a:*.o(.data*);\n#endif\n\n        /* rodata */\n        BUILD_DIR/src/game/crash_screen.o(.rodata*);\n        BUILD_DIR/src/game/main.o(.rodata*);\n        BUILD_DIR/src/game/game_init.o(.rodata*);\n        BUILD_DIR/src/game/sound_init.o(.rodata*);\n        BUILD_DIR/src/game/rumble_init.o(.rodata*);\n        BUILD_DIR/src/game/level_update.o(.rodata*);\n        BUILD_DIR/src/game/interaction.o(.rodata*);\n        BUILD_DIR/src/game/mario.o(.rodata*);\n        BUILD_DIR/src/game/mario_step.o(.rodata*);\n        BUILD_DIR/src/game/mario_actions_cutscene.o(.rodata*);\n        BUILD_DIR/src/game/mario_actions_automatic.o(.rodata*);\n        BUILD_DIR/src/game/mario_actions_stationary.o(.rodata*);\n        BUILD_DIR/src/game/mario_actions_moving.o(.rodata*);\n        BUILD_DIR/src/game/mario_actions_airborne.o(.rodata*);\n        BUILD_DIR/src/game/mario_actions_submerged.o(.rodata*);\n        BUILD_DIR/src/game/mario_actions_object.o(.rodata*);\n        BUILD_DIR/src/game/mario_misc.o(.rodata*);\n        BUILD_DIR/src/game/memory.o(.rodata*);\n        BUILD_DIR/src/game/area.o(.rodata*);\n        BUILD_DIR/src/game/rendering_graph_node.o(.rodata*);\n        BUILD_DIR/src/game/camera.o(.rodata*);\n        BUILD_DIR/src/game/object_list_processor.o(.rodata*);\n#ifndef VERSION_EU\n        BUILD_DIR/src/game/object_helpers.o(.rodata*);\n#endif\n        BUILD_DIR/src/game/behavior_actions.o(.rodata*);\n#ifndef VERSION_EU\n        BUILD_DIR/src/game/object_collision.o(.rodata*);\n        BUILD_DIR/src/game/spawn_object.o(.rodata*);\n#endif\n        BUILD_DIR/libultra.a:__osDisableInt.o(.text);\n        BUILD_DIR/libultra.a:__osRestoreInt.o(.text);\n        BUILD_DIR/src/game/spawn_sound.o(.rodata*);\n        BUILD_DIR/src/game/debug.o(.rodata*);\n        BUILD_DIR/src/game/screen_transition.o(.rodata*);\n        BUILD_DIR/src/game/shadow.o(.rodata*);\n        BUILD_DIR/src/game/skybox.o(.rodata*);\n        BUILD_DIR/src/game/moving_texture.o(.rodata*);\n        BUILD_DIR/src/game/geo_misc.o(.rodata*);\n        BUILD_DIR/src/game/paintings.o(.rodata*);\n        BUILD_DIR/src/game/print.o(.rodata*);\n        BUILD_DIR/src/game/ingame_menu.o(.rodata*);\n        BUILD_DIR/src/game/envfx_snow.o(.rodata*);\n        BUILD_DIR/src/game/envfx_bubbles.o(.rodata*);\n        BUILD_DIR/src/game/macro_special_objects.o(.rodata*);\n        BUILD_DIR/src/game/hud.o(.rodata*);\n        BUILD_DIR/src/game/obj_behaviors.o(.rodata*);\n        BUILD_DIR/src/game/obj_behaviors_2.o(.rodata*);\n#if defined(VERSION_JP) || defined(VERSION_US)\n        BUILD_DIR/src/game*.o(.rodata*);\n#endif\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        BUILD_DIR/src/audio/synthesis_sh.o(.rodata*);\n        BUILD_DIR/src/audio/heap.o(.rodata*);\n        BUILD_DIR/src/audio/load_sh.o(.rodata*);\n        BUILD_DIR/src/audio/port_sh.o(.rodata*);\n#else\n        BUILD_DIR/src/audio/synthesis.o(.rodata*);\n        BUILD_DIR/src/audio/heap.o(.rodata*);\n        BUILD_DIR/src/audio/load.o(.rodata*);\n#endif\n        BUILD_DIR/src/audio/playback.o(.rodata*);\n        BUILD_DIR/src/audio/effects.o(.rodata*);\n        BUILD_DIR/src/audio/seqplayer.o(.rodata*);\n        BUILD_DIR/src/audio/external.o(.rodata*);\n        BUILD_DIR/src/audio/port_eu.o(.rodata*);\n        BUILD_DIR/src/audio*.o(.rodata*);\n\n#if defined(VERSION_EU) || defined(VERSION_SH)\n        BUILD_DIR/libultra.a:_Printf.o(.rodata*);\n#endif\n\n#ifndef VERSION_CN\n        BUILD_DIR/libultra.a:guPerspectiveF.o(.rodata*);\n#endif\n        BUILD_DIR/libultra.a:llconv.o(.rodata*);\n        BUILD_DIR/libultra.a:cosf.o(.rodata*);\n#ifdef VERSION_CN\n        BUILD_DIR/libultra.a:guPerspectiveF.o(.rodata*);\n#endif\n        BUILD_DIR/libultra.a:sinf.o(.rodata*);\n        BUILD_DIR/libultra.a:guRotateF.o(.rodata*);\n\n#if defined(VERSION_EU) || defined(VERSION_SH)\n        BUILD_DIR/libultra.a:_Litob.o(.rodata*);\n        BUILD_DIR/libultra.a:_Ldtob.o(.rodata*);\n        BUILD_DIR/libultra.a:__osExceptionPreamble.o(.rodata*);\n        BUILD_DIR/libultra.a:__osDevMgrMain.o(.rodata*);\n        BUILD_DIR/libultra.a:NaN.o(.rodata*);\n#else\n        BUILD_DIR/libultra.a:_Printf.o(.rodata*);\n        BUILD_DIR/libultra.a:__osExceptionPreamble.o(.rodata*);\n#ifdef VERSION_CN\n        BUILD_DIR/libultra.a:osSetIntMask.o(.rodata*);\n        BUILD_DIR/libultra.a:__osDevMgrMain.o(.rodata*);\n#endif\n        BUILD_DIR/libultra.a:NaN.o(.rodata*);\n        BUILD_DIR/libultra.a:_Litob.o(.rodata*);\n        BUILD_DIR/libultra.a:_Ldtob.o(.rodata*);\n#endif\n\n        BUILD_DIR/libultra.a:osSetIntMask.o(.rodata*);\n        BUILD_DIR/libultra.a:guLookAtRef.o(.rodata*); /* Fast3DEX2 only */\n\n#ifdef VERSION_CN\n        BUILD_DIR/libgcc.a:_divdi3.o(.rodata*);\n        BUILD_DIR/libgcc.a:_moddi3.o(.rodata*);\n        BUILD_DIR/libgcc.a:_udivdi3.o(.rodata*);\n        BUILD_DIR/libgcc.a:_umoddi3.o(.rodata*);\n        BUILD_DIR/libgcc.a:_cmpdi2.o(.rodata*);\n        BUILD_DIR/libgcc.a:_floatdidf.o(.rodata*);\n        BUILD_DIR/libgcc.a:_floatdisf.o(.rodata*);\n        BUILD_DIR/libgcc.a:_fixunsdfdi.o(.rodata*);\n        BUILD_DIR/libgcc.a:_fixdfdi.o(.rodata*);\n        BUILD_DIR/libgcc.a:_fixunssfdi.o(.rodata*);\n        BUILD_DIR/libgcc.a:_fixsfdi.o(.rodata*);\n#endif\n#ifndef VERSION_EU\n        BUILD_DIR/libultra.a:*.o(.rodata*);\n#endif\n        /* audio blobs, should really be moved into a separate file */\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        BUILD_DIR/src/audio/load_sh.o(.data*);\n#endif\n        BUILD_DIR/lib/rsp.o(.rodata*);\n    }\n    END_SEG(main)\n\n    BEGIN_NOLOAD(main)\n    {\n        BUILD_DIR/src/game/cn_common_syms_1.o(.bss*);\n        BUILD_DIR/src/game/crash_screen.o(.bss*);\n        BUILD_DIR/src/game/main.o(.bss*);\n        BUILD_DIR/src/game/game_init.o(.bss*);\n        BUILD_DIR/src/game/sound_init.o(.bss*);\n#if ENABLE_RUMBLE\n        BUILD_DIR/src/game/rumble_init.o(.bss*);\n#endif\n        BUILD_DIR/src/game/level_update.o(.bss*);\n        BUILD_DIR/src/game/interaction.o(.bss*);\n        BUILD_DIR/src/game/mario.o(.bss*);\n        BUILD_DIR/src/game/mario_actions_cutscene.o(.bss*);\n        BUILD_DIR/src/game/mario_actions_moving.o(.bss*);\n        BUILD_DIR/src/game/mario_actions_submerged.o(.bss*);\n        BUILD_DIR/src/game/mario_misc.o(.bss*);\n        BUILD_DIR/src/game/memory.o(.bss*);\n        BUILD_DIR/src/game/save_file.o(.bss*);\n        BUILD_DIR/src/game/area.o(.bss*);\n        BUILD_DIR/src/game/rendering_graph_node.o(.bss*);\n        BUILD_DIR/src/game/profiler.o(.bss*);\n        BUILD_DIR/src/game/camera.o(.bss*);\n        BUILD_DIR/src/game/object_list_processor.o(.bss*);\n#ifndef VERSION_EU\n        BUILD_DIR/src/game/object_helpers.o(.bss*);\n#endif\n        BUILD_DIR/src/game/behavior_actions.o(.bss*);\n        BUILD_DIR/src/game/debug.o(.bss*);\n        BUILD_DIR/src/game/shadow.o(.bss*);\n        BUILD_DIR/src/game/skybox.o(.bss*);\n        BUILD_DIR/src/game/moving_texture.o(.bss*);\n        BUILD_DIR/src/game/geo_misc.o(.bss*);\n        BUILD_DIR/src/game/paintings.o(.bss*);\n        BUILD_DIR/src/game/print.o(.bss*);\n        BUILD_DIR/src/game/ingame_menu.o(.bss*);\n        BUILD_DIR/src/game/envfx_snow.o(.bss*);\n        BUILD_DIR/src/game/envfx_bubbles.o(.bss*);\n        BUILD_DIR/src/game/macro_special_objects.o(.bss*);\n        BUILD_DIR/src/game/hud.o(.bss*);\n        BUILD_DIR/src/game/obj_behaviors.o(.bss*);\n        BUILD_DIR/src/game/obj_behaviors_2.o(.bss*);\n#if !defined(VERSION_EU) && !defined(VERSION_CN)\n        BUILD_DIR/src/game*.o(.bss*);\n#endif\n        BUILD_DIR/src/audio/external.o(.bss*);\n#ifdef VERSION_EU\n        BUILD_DIR/src/audio/port_eu.o(.bss*);\n#endif\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        BUILD_DIR/src/audio/globals_start.o(.bss*);\n        BUILD_DIR/src/audio/synthesis_sh.o(.bss*);\n        BUILD_DIR/src/audio/heap.o(.bss*);\n        BUILD_DIR/src/audio/load_sh.o(.bss*);\n        BUILD_DIR/src/audio/data.o(.bss*);\n#endif\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n        BUILD_DIR/libultra.a:osInitialize.o(.bss*);\n        BUILD_DIR/libultra.a:osSetEventMesg.o(.bss*);\n        BUILD_DIR/libultra.a:osSpTaskLoadGo.o(.bss*);\n#ifdef VERSION_CN\n        BUILD_DIR/libultra.a:__osSiCreateAccessQueue.o(.bss*);\n#endif\n        BUILD_DIR/libultra.a:osCreateViManager.o(.bss*);\n        BUILD_DIR/libultra.a:osCreatePiManager.o(.bss*);\n        BUILD_DIR/libultra.a:osContStartReadData.o(.bss*);\n        BUILD_DIR/libultra.a:osContInit.o(.bss*);\n#if ENABLE_RUMBLE\n        BUILD_DIR/libultra.a:motor.o(.bss*);\n#endif\n        BUILD_DIR/libultra.a:guRotateF.o(.bss*);\n#ifdef VERSION_SH\n        BUILD_DIR/libultra.a:osCartRomInit.o(.bss*);\n#endif\n#ifdef VERSION_EU\n        BUILD_DIR/libultra.a:leointerrupt.o(.bss*);\n#endif\n        BUILD_DIR/libultra.a:osTimer.o(.bss*);\n#ifdef VERSION_SH\n        BUILD_DIR/libultra.a:osLeoDiskInit.o(.bss*);\n#endif\n        BUILD_DIR/libultra.a:__osPiCreateAccessQueue.o(.bss*);\n#ifndef VERSION_CN\n        BUILD_DIR/libultra.a:__osSiCreateAccessQueue.o(.bss*);\n#endif\n#if ENABLE_RUMBLE\n        BUILD_DIR/libultra.a:osPfsIsPlug.o(.bss*);\n#endif\n        BUILD_DIR/libultra.a:osEepromWrite.o(.bss*);\n        BUILD_DIR/libultra.a:kdebugserver.o(.bss*);\n#ifdef VERSION_SH\n        BUILD_DIR/libultra.a:leointerrupt.o(.bss*);\n#endif\n#ifdef VERSION_EU\n        BUILD_DIR/libultra.a:osLeoDiskInit.o(.bss*);\n#endif\n        BUILD_DIR/libultra.a:_Printf.o(.bss*);\n        BUILD_DIR/libultra.a:osAiSetNextBuffer.o(.bss*);\n        BUILD_DIR/libultra.a:__osSetHWintrRoutine.o(.bss*);\n#else\n        BUILD_DIR/libultra.a:osSetEventMesg.o(.bss*);\n        BUILD_DIR/libultra.a:osSpTaskLoadGo.o(.bss*);\n        BUILD_DIR/libultra.a:osCreateViManager.o(.bss*);\n        BUILD_DIR/libultra.a:osCreatePiManager.o(.bss*);\n        BUILD_DIR/libultra.a:osInitialize.o(.bss*);\n        BUILD_DIR/libultra.a:osContStartReadData.o(.bss*);\n        BUILD_DIR/libultra.a:osContInit.o(.bss*);\n#if ENABLE_RUMBLE\n        BUILD_DIR/libultra.a:motor.o(.bss*);\n#endif\n        BUILD_DIR/libultra.a:guRotateF.o(.bss*);\n        BUILD_DIR/libultra.a:osTimer.o(.bss*);\n        BUILD_DIR/libultra.a:_Printf.o(.bss*);\n        BUILD_DIR/libultra.a:__osPiCreateAccessQueue.o(.bss*);\n        BUILD_DIR/libultra.a:__osSiCreateAccessQueue.o(.bss*);\n#if ENABLE_RUMBLE\n        BUILD_DIR/libultra.a:osPfsIsPlug.o(.bss*);\n#endif\n        BUILD_DIR/libultra.a:osEepromWrite.o(.bss*);\n        BUILD_DIR/libultra.a:kdebugserver_stack.o(.bss*);\n        BUILD_DIR/libultra.a:kdebugserver.o(.bss*);\n#endif\n\n        BUILD_DIR/libultra.a:*.o(.bss*);\n\n        BUILD_DIR/src/game/cn_common_syms_2.o(.bss*);\n\n        . = ALIGN(0x8);\n    }\n    END_NOLOAD(main)\n\n#ifdef VERSION_CN\n    // Hack for CN to make asm/entry.s match, since we aren't using\n    // the original assembler and so can't get lui/ori from la pseudo\n    CREATE_LO_HI_PAIR(_mainSegmentNoloadStart, ADDR (.main.noload))\n    CREATE_LO_HI_PAIR(gIdleThreadStack, gIdleThreadStack)\n    CREATE_LO_HI_PAIR(main_func, main_func)\n#endif\n\n    CREATE_LO_HI_PAIR(_mainSegmentNoloadSize, SIZEOF (.main.noload))\n\n    BEGIN_SEG(engine, ADDR_OR_ALIGN(SEG_ENGINE))\n    {\n        BUILD_DIR/src/engine/math_util.o(.text);\n        BUILD_DIR/src/engine/graph_node.o(.text);\n        BUILD_DIR/src/engine/graph_node_manager.o(.text);\n        BUILD_DIR/src/engine/geo_layout.o(.text);\n        BUILD_DIR/src/engine/level_script.o(.text);\n        BUILD_DIR/src/engine/surface_collision.o(.text);\n        BUILD_DIR/src/engine/surface_load.o(.text);\n        BUILD_DIR/src/engine/behavior_script.o(.text);\n#ifdef VERSION_EU\n        BUILD_DIR/src/game/object_collision.o(.text);\n        BUILD_DIR/src/game/spawn_object.o(.text);\n        BUILD_DIR/src/game/object_helpers.o(.text);\n#endif\n        BUILD_DIR/src/engine*.o(.text);\n        /* data */\n        BUILD_DIR/src/engine/graph_node.o(.data*);\n        BUILD_DIR/src/engine/graph_node_manager.o(.data*);\n        BUILD_DIR/src/engine/math_util.o(.data*);\n        BUILD_DIR/src/engine/geo_layout.o(.data*);\n        BUILD_DIR/src/engine/level_script.o(.data*);\n        BUILD_DIR/src/engine/behavior_script.o(.data*);\n#ifdef VERSION_EU\n        BUILD_DIR/src/game/object_collision.o(.data*);\n        BUILD_DIR/src/game/spawn_object.o(.data*);\n        BUILD_DIR/src/game/object_helpers.o(.data*);\n#endif\n        BUILD_DIR/src/engine*.o(.data*);\n        /* rodata */\n        BUILD_DIR/src/engine/math_util.o(.rodata*);\n        BUILD_DIR/src/engine/level_script.o(.rodata*);\n        BUILD_DIR/src/engine/surface_collision.o(.rodata*);\n        BUILD_DIR/src/engine/surface_load.o(.rodata*);\n#ifdef VERSION_EU\n        BUILD_DIR/src/game/object_collision.o(.rodata*);\n        BUILD_DIR/src/game/spawn_object.o(.rodata*);\n        BUILD_DIR/src/game/object_helpers.o(.rodata*);\n#endif\n#ifdef VERSION_CN\n        BUILD_DIR/src/engine/stub.o(.rodata*);\n#endif\n        BUILD_DIR/src/engine*.o(.rodata*);\n    }\n    END_SEG(engine)\n    BEGIN_NOLOAD(engine)\n    {\n        BUILD_DIR/src/engine/math_util.o(.bss*);\n        BUILD_DIR/src/engine/geo_layout.o(.bss*);\n        BUILD_DIR/src/engine/level_script.o(.bss*);\n        BUILD_DIR/src/engine/surface_collision.o(.bss*);\n        BUILD_DIR/src/engine/surface_load.o(.bss*);\n        BUILD_DIR/src/engine/behavior_script.o(.bss*);\n#ifdef VERSION_EU\n        BUILD_DIR/src/game/object_collision.o(.bss*);\n        BUILD_DIR/src/game/spawn_object.o(.bss*);\n        BUILD_DIR/src/game/object_helpers.o(.bss*);\n#endif\n        BUILD_DIR/src/engine*.o(.bss*);\n    }\n    END_NOLOAD(engine)\n\n    . = ADDR_OR_ALIGN(SEG_FRAMEBUFFERS);\n    BEGIN_NOLOAD(framebuffers)\n    {\n        BUILD_DIR/src/buffers/framebuffers.o(.bss*);\n    }\n    END_NOLOAD(framebuffers)\n\n    BEGIN_SEG(entry, 0x10000000)\n    {\n        BUILD_DIR/levels/entry.o(.data);\n    }\n    END_SEG(entry)\n\n    /* load MIO0 and level data */\n    MIO0_SEG(segment2, 0x02000000)\n#ifdef VERSION_EU\n    MIO0_EU_SEG(translation_en, 0x19000000)\n    MIO0_EU_SEG(translation_fr, 0x19000000)\n    MIO0_EU_SEG(translation_de, 0x19000000)\n#endif\n\n    /* mario actor group */\n    STANDARD_OBJECTS(group0,  0x04000000, 0x17000000)\n\n    /* load the other actor groups */\n    STANDARD_OBJECTS(group1,  0x05000000, 0x0C000000)\n    STANDARD_OBJECTS(group2,  0x05000000, 0x0C000000)\n    STANDARD_OBJECTS(group3,  0x05000000, 0x0C000000)\n    STANDARD_OBJECTS(group4,  0x05000000, 0x0C000000)\n    STANDARD_OBJECTS(group5,  0x05000000, 0x0C000000)\n    STANDARD_OBJECTS(group6,  0x05000000, 0x0C000000)\n    STANDARD_OBJECTS(group7,  0x05000000, 0x0C000000)\n    STANDARD_OBJECTS(group8,  0x05000000, 0x0C000000)\n    STANDARD_OBJECTS(group9,  0x05000000, 0x0C000000)\n    STANDARD_OBJECTS(group10, 0x05000000, 0x0C000000)\n    STANDARD_OBJECTS(group11, 0x05000000, 0x0C000000)\n    STANDARD_OBJECTS(group12, 0x06000000, 0x0D000000)\n    STANDARD_OBJECTS(group13, 0x06000000, 0x0D000000)\n    STANDARD_OBJECTS(group14, 0x06000000, 0x0D000000)\n    STANDARD_OBJECTS(group15, 0x06000000, 0x0D000000)\n    STANDARD_OBJECTS(group16, 0x06000000, 0x0D000000)\n    STANDARD_OBJECTS(group17, 0x06000000, 0x0D000000)\n\n    /* load the common actor groups */\n    STANDARD_OBJECTS(common0, 0x08000000, 0x0F000000)\n    STANDARD_OBJECTS(common1, 0x03000000, 0x16000000)\n\n    /* use segmented addressing for behaviors */\n    BEGIN_SEG(behavior, 0x13000000)\n    {\n        BUILD_DIR/data/behavior_data.o(.data);\n    }\n    END_SEG(behavior)\n\n    /* 0x8016F000 21D7D0-255EC0 [386F0] */\n    BEGIN_SEG(goddard, SEG_GODDARD)\n    {\n        BUILD_DIR/src/menu/title_screen.o(.text);\n        BUILD_DIR/src/menu/intro_geo.o(.text);\n        BUILD_DIR/src/menu/file_select.o(.text);\n        BUILD_DIR/src/menu/star_select.o(.text);\n        BUILD_DIR/src/menu*.o(.text);\n        BUILD_DIR/libgoddard.a:gd_main.o(.text);\n        BUILD_DIR/libgoddard.a:gd_memory.o(.text);\n        BUILD_DIR/libgoddard.a:sfx.o(.text);\n        BUILD_DIR/libgoddard.a:draw_objects.o(.text);\n        BUILD_DIR/libgoddard.a:objects.o(.text);\n        BUILD_DIR/libgoddard.a:skin_movement.o(.text);\n        BUILD_DIR/libgoddard.a:particles.o(.text);\n        BUILD_DIR/libgoddard.a:dynlist_proc.o(.text);\n        BUILD_DIR/libgoddard.a:old_menu.o(.text);\n        BUILD_DIR/libgoddard.a:debug_utils.o(.text);\n        BUILD_DIR/libgoddard.a:joints.o(.text);\n        BUILD_DIR/libgoddard.a:skin.o(.text);\n        BUILD_DIR/libgoddard.a:gd_math.o(.text);\n        BUILD_DIR/libgoddard.a:shape_helper.o(.text);\n        BUILD_DIR/libgoddard.a:renderer.o(.text);\n        BUILD_DIR/libgoddard.a:*.o(.text);\n        /* data, rodata, per file */\n        BUILD_DIR/src/menu/title_screen.o(.data*);\n        BUILD_DIR/src/menu/title_screen.o(.rodata*);\n        BUILD_DIR/src/menu/intro_geo.o(.data*);\n        BUILD_DIR/src/menu/file_select.o(.data*);\n        BUILD_DIR/src/menu/file_select.o(.rodata*);\n        BUILD_DIR/src/menu/star_select.o(.data*);\n        BUILD_DIR/src/menu/star_select.o(.rodata*);\n        BUILD_DIR/src/menu*.o(.data*);\n        BUILD_DIR/src/menu*.o(.rodata*);\n        /* goddard subsystem data */\n        BUILD_DIR/libgoddard.a:gd_main.o(.data*);\n        BUILD_DIR/libgoddard.a:draw_objects.o(.data*);\n        BUILD_DIR/libgoddard.a:objects.o(.data*);\n        BUILD_DIR/libgoddard.a:particles.o(.data*);\n        BUILD_DIR/libgoddard.a:dynlist_proc.o(.data*);\n        BUILD_DIR/libgoddard.a:debug_utils.o(.data*);\n        BUILD_DIR/libgoddard.a:joints.o(.data*);\n        BUILD_DIR/libgoddard.a:shape_helper.o(.data*);\n        BUILD_DIR/libgoddard.a:renderer.o(.data*);\n        /* goddard subsystem rodata */\n        BUILD_DIR/libgoddard.a:gd_main.o(.rodata*);\n        BUILD_DIR/libgoddard.a:gd_memory.o(.rodata*);\n        BUILD_DIR/libgoddard.a:draw_objects.o(.rodata*);\n        BUILD_DIR/libgoddard.a:objects.o(.rodata*);\n        BUILD_DIR/libgoddard.a:skin_movement.o(.rodata*);\n        BUILD_DIR/libgoddard.a:particles.o(.rodata*);\n        BUILD_DIR/libgoddard.a:dynlist_proc.o(.rodata*);\n        BUILD_DIR/libgoddard.a:old_menu.o(.rodata*);\n        BUILD_DIR/libgoddard.a:debug_utils.o(.rodata*);\n        BUILD_DIR/libgoddard.a:joints.o(.rodata*);\n        BUILD_DIR/libgoddard.a:skin.o(.rodata*);\n        BUILD_DIR/libgoddard.a:gd_math.o(.rodata*);\n        BUILD_DIR/libgoddard.a:shape_helper.o(.rodata*);\n        BUILD_DIR/libgoddard.a:renderer.o(.rodata*);\n    }\n    END_SEG(goddard)\n    BEGIN_NOLOAD(goddard)\n    {\n        BUILD_DIR/src/menu/intro_geo.o(.bss*);\n        BUILD_DIR/src/menu/file_select.o(.bss*);\n        BUILD_DIR/src/menu/star_select.o(.bss*);\n        BUILD_DIR/src/menu*.o(.bss*);\n        BUILD_DIR/libgoddard.a:gd_main.o(.bss*);\n        BUILD_DIR/libgoddard.a:gd_memory.o(.bss*);\n        BUILD_DIR/libgoddard.a:sfx.o(.bss*);\n        BUILD_DIR/libgoddard.a:draw_objects.o(.bss*);\n        BUILD_DIR/libgoddard.a:objects.o(.bss*);\n        BUILD_DIR/libgoddard.a:skin_movement.o(.bss*);\n        BUILD_DIR/libgoddard.a:particles.o(.bss*);\n        BUILD_DIR/libgoddard.a:dynlist_proc.o(.bss*);\n        BUILD_DIR/libgoddard.a:old_menu.o(.bss*);\n        BUILD_DIR/libgoddard.a:debug_utils.o(.bss*);\n        BUILD_DIR/libgoddard.a:joints.o(.bss*);\n        BUILD_DIR/libgoddard.a:skin.o(.bss*);\n        BUILD_DIR/libgoddard.a:shape_helper.o(.bss*);\n        BUILD_DIR/libgoddard.a:renderer.o(.bss*);\n        BUILD_DIR/libgoddard.a:*.o(.bss*);\n    }\n    END_NOLOAD(goddard)\n\n    /* 0x268020 0x268020-0 [0] */\n    BEGIN_SEG(intro, 0x14000000)\n    {\n        BUILD_DIR/levels/intro/script.o(.data);\n        BUILD_DIR/levels/intro/geo.o(.data);\n    }\n    END_SEG(intro)\n    BEGIN_SEG(intro_segment_7, 0x07000000)\n    {\n        BUILD_DIR/levels/intro/leveldata.mio0.o(.data);\n        . = ALIGN(0x10);\n    }\n    END_SEG(intro_segment_7)\n\n    MIO0_SEG(debug_level_select, 0x07000000)\n    MIO0_SEG(title_screen_bg, 0x0A000000)\n\n    /* 271B20-2A42A0 [32780] */\n    BEGIN_SEG(gd_dynlists, 0x04000000)\n    {\n        BUILD_DIR/libgoddard.a:dynlist_test_cube.o(.data);\n        BUILD_DIR/libgoddard.a:dynlist_unused.o(.data);\n        BUILD_DIR/libgoddard.a:dynlist_mario_face.o(.data);\n        BUILD_DIR/libgoddard.a:dynlists_mario_eyes.o(.data);\n        BUILD_DIR/libgoddard.a:dynlists_mario_eyebrows_mustache.o(.data);\n        BUILD_DIR/libgoddard.a:dynlist_mario_master.o(.data);\n        BUILD_DIR/libgoddard.a:anim_mario_mustache_right.o(.data);\n        BUILD_DIR/libgoddard.a:anim_mario_mustache_left.o(.data);\n        BUILD_DIR/libgoddard.a:anim_mario_lips_1.o(.data);\n        BUILD_DIR/libgoddard.a:anim_mario_lips_2.o(.data);\n        BUILD_DIR/libgoddard.a:anim_mario_eyebrows_1.o(.data);\n        BUILD_DIR/libgoddard.a:anim_group_1.o(.data);\n        BUILD_DIR/libgoddard.a:anim_group_2.o(.data);\n        BUILD_DIR/libgoddard.a:dynlist_test_cube.o(.rodata*);\n        BUILD_DIR/libgoddard.a:dynlist_unused.o(.rodata*);\n        BUILD_DIR/libgoddard.a:*.o(.data);\n        BUILD_DIR/libgoddard.a:*.o(.rodata);\n    }\n    END_SEG(gd_dynlists)\n\n    gMainLevels = __romPos;\n\n    BEGIN_SEG(menu, 0x14000000)\n    {\n        BUILD_DIR/levels/menu/script.o(.data);\n        BUILD_DIR/levels/menu/geo.o(.data);\n    }\n    END_SEG(menu)\n    BEGIN_SEG(menu_segment_7, 0x07000000)\n    {\n        BUILD_DIR/levels/menu/leveldata.mio0.o(.data);\n        . = ALIGN(0x10);\n    }\n    END_SEG(menu_segment_7)\n\n    BEGIN_SEG(scripts, 0x15000000)\n    {\n        BUILD_DIR/levels/scripts.o(.data);\n    }\n    END_SEG(scripts)\n\n    MIO0_SEG(water_skybox, 0x0A000000)\n    MIO0_SEG(ccm_skybox, 0x0A000000)\n    MIO0_SEG(clouds_skybox, 0x0A000000)\n    MIO0_SEG(bitfs_skybox, 0x0A000000)\n    MIO0_SEG(wdw_skybox, 0x0A000000)\n    MIO0_SEG(cloud_floor_skybox, 0x0A000000)\n    MIO0_SEG(ssl_skybox, 0x0A000000)\n    MIO0_SEG(bbh_skybox, 0x0A000000)\n    MIO0_SEG(bidw_skybox, 0x0A000000)\n    MIO0_SEG(bits_skybox, 0x0A000000)\n\n    // Texture bins\n    MIO0_SEG(fire, 0x09000000)\n    MIO0_SEG(spooky, 0x09000000)\n    MIO0_SEG(generic, 0x09000000)\n    MIO0_SEG(water, 0x09000000)\n    MIO0_SEG(sky, 0x09000000)\n    MIO0_SEG(snow, 0x09000000)\n    MIO0_SEG(cave, 0x09000000)\n    MIO0_SEG(machine, 0x09000000)\n    MIO0_SEG(mountain, 0x09000000)\n    MIO0_SEG(grass, 0x09000000)\n    MIO0_SEG(outside, 0x09000000)\n    MIO0_SEG(inside, 0x09000000)\n    MIO0_SEG(effect, 0x0B000000)\n\n#define STUB_LEVEL(_0, _1, _2, _3, _4, _5, _6, _7, _8)\n#define DEFINE_LEVEL(_0, _1, _2, folder, _4, _5, _6, _7, _8, _9, _10) STANDARD_LEVEL(folder)\n\n    #include \"levels/level_defines.h\"\n\n#undef STUB_LEVEL\n#undef DEFINE_LEVEL\n\n    /* 4E9FA0-? [?] */\n    BEGIN_SEG(assets, __romPos)\n    {\n        BUILD_DIR/assets/mario_anim_data.o(.data);\n        BUILD_DIR/assets/mario_anim_data.o(.rodata);\n        BUILD_DIR/assets/demo_data.o(.data);\n        BUILD_DIR/sound/sound_data.o(.data);\n    }\n    END_SEG(assets)\n\n    /* Discard everything not specifically mentioned above. */\n    /DISCARD/ :\n    {\n        *(*);\n    }\n\n    ASSERT((_goddardSegmentNoloadEnd <= SEG_POOL_END), \"Error: menu segment extended past pool end\")\n    ASSERT((_mainSegmentNoloadEnd <= _engineSegmentStart), \"Error: main segment extended into engine.\")\n    ASSERT((_engineSegmentNoloadEnd <= _framebuffersSegmentNoloadStart), \"Error: engine segment extended into framebuffers.\")\n    ASSERT((_framebuffersSegmentNoloadEnd <= RDRAM_END), \"Error: framebuffers segment extended past RDRAM end\")\n}\n"
  },
  {
    "path": "sm64.sh.sha1",
    "content": "3f319ae697533a255a1003d09202379d78d5a2e0  build/sh/sm64.sh.z64\n"
  },
  {
    "path": "sm64.us.sha1",
    "content": "9bef1128717f958171a4afac3ed78ee2bb4e86ce  build/us/sm64.us.z64\n"
  },
  {
    "path": "sound/README.md",
    "content": "Sound in SM64 consists of three parts: samples, sound banks, and sequences.\n\nSamples represent raw sound data, given as AIFF files with a custom ADPCM-based\ncompression format that reduces file sizes by ~70% compared to uncompressed\nAIFF (with 16-bit samples). The build system automatically converts\nuncompressed AIFF files into this format.\n\nSamples are collected into banks, given by directories. The order in which each\nbank's samples end up in the final binary is determined by their file names.\nThus, to keep the ROM OK, sample files should be prefixed by a number to\nmaintain sort order. (Bank directories are ordered by their usages in way\nthat automatically makes the ROM match.)\n\nSamples cannot be referred to directly from sequence files. Instead, there is\nan indirect step in the form of sound banks. Each sound bank refers to a single\nsample bank, and amends it with extra information in the form of a JSON file.\nThis JSON file contains a set of \"instruments\", which describe how note values\n(pitches) map to samples, which pitch corrections to perform, and what ADSR\nenvelopes to use. The `instrument_list` key maps indices to instruments; these\nindices are what sequence files can refer to. A special instrument `percussion`\nis also supported, as an array with (usually) 64 different entries, covering\nnote values 0..63. It is referred to as instrument ID 0x7f.\n\nC-style comments are supported in the JSON. Similar to samples, the sound banks\ncome in alphabetical order in the ROM, so they should be prefixed to maintain\nsort order.\n\nSequence files are what actually controls the audio. The are in .m64 format,\nwhich is similar to MIDI, but Turing complete. An .m64 file has a sequence\nscript that can spawn channels, which have channel scripts that can spawn\nlayers, which have layer scripts that can play notes. Each note is performed\nusing an instrument from a sound bank. A sequence file can use multiple banks;\n`sequences.json` describes the mapping from sequences to sound banks. Channels\ncan switch between banks using a command. However, in practice most sequences\nlimit themselves to a single sound bank. The main exception is sequence 0,\nwhich is responsible for sound effects.\n\nLike samples and sound banks, sequence files are included in the ROM in\nalphabetical file name order. They can be located in either `sound/sequences/`\nor `sound/sequences/<version>/`, and can optionally be given in disassembled\nform -- see `include/seq_macros.inc` for more details on the format.\n\nThe repo gitignores .m64 and .aiff files by default, unless they include\n\"custom\" somewhere in the name (including in a directory name). Thus, for new\ncustom-made samples and sequences it is advisable to include that substring\nin the file name (this also helps distinguish custom sounds from ones from\nthe game). `git add -f` also works for adding edited existing files to git.\n"
  },
  {
    "path": "sound/sequences/00_sound_player.s",
    "content": "#include \"seq_macros.inc\"\n\n.section .rodata\n.align 0\n\nsequence_start:\nseq_setmutebhv 0x60\nseq_setmutescale 0\n#if defined(VERSION_SH) || defined(VERSION_CN)\n  seq_setvol 100\n#else\n  seq_setvol 127\n#endif\nseq_settempo 120\nseq_initchannels 0x3ff\nseq_startchannel 0, .channel0\nseq_startchannel 1, .channel1\nseq_startchannel 2, .channel2\nseq_startchannel 3, .channel38\nseq_startchannel 4, .channel4\nseq_startchannel 5, .channel59\nseq_startchannel 6, .channel6\nseq_startchannel 7, .channel7\nseq_startchannel 8, .channel38\nseq_startchannel 9, .channel59\n.seq_loop:\nseq_delay 20000\nseq_jump .seq_loop\n\n.channel0:\nchan_largenoteson\nchan_setinstr 0\nchan_setpanmix 127\nchan_setnotepriority 14\nchan_setval 0\nchan_iowriteval 5\nchan_stereoheadseteffects 1\nchan_setdyntable .channel0_table\nchan_jump .main_loop_023589\n\n.channel2:\nchan_largenoteson\nchan_setinstr 0\nchan_setpanmix 127\nchan_setnotepriority 14\nchan_setval 0\nchan_iowriteval 5\nchan_stereoheadseteffects 1\nchan_setdyntable .channel2_table\nchan_jump .main_loop_023589\n\n.channel38:\nchan_largenoteson\nchan_setinstr 0\nchan_setpanmix 127\nchan_setnotepriority 14\nchan_setval 0\nchan_iowriteval 5\nchan_stereoheadseteffects 1\nchan_setdyntable .channel38_table\nchan_jump .main_loop_023589\n\n.channel59:\nchan_largenoteson\nchan_setinstr 0\nchan_setpanmix 127\nchan_setnotepriority 14\nchan_setval 0\nchan_iowriteval 5\nchan_stereoheadseteffects 1\nchan_setdyntable .channel59_table\nchan_jump .main_loop_023589\n\n// Main loop for standard, non-continuous sound effects\n.main_loop_023589:\nchan_delay1\nchan_ioreadval 0\nchan_bltz .main_loop_023589\n.start_playing_023589:\nchan_freelayer 0\nchan_freelayer 1\nchan_freelayer 2\nchan_setval 0\nchan_iowriteval 5\nchan_ioreadval 4\nchan_dyncall\n\n// keep looping until layer 0 finishes or we are told to stop or to play something else\n.poll_023589:\nchan_delay1\nchan_ioreadval 0\nchan_bltz .skip_023589 // if we have a signal:\n  chan_beqz .force_stop_023589 // told to stop\n  chan_jump .start_playing_023589 // told to play something else\n.skip_023589:\nchan_testlayerfinished 0\nchan_beqz .poll_023589 // if layer 0 hasn't finished, keep polling\nchan_jump .main_loop_023589 // otherwise go back to the main loop\n.force_stop_023589:\nchan_freelayer 0\nchan_freelayer 1\nchan_freelayer 2\nchan_jump .main_loop_023589\n\n.channel1:\nchan_largenoteson\nchan_setinstr 0\nchan_setpanmix 127\nchan_setnotepriority 14\nchan_setval 0\nchan_iowriteval 5\nchan_setmutebhv 0x20\nchan_stereoheadseteffects 1\nchan_setdyntable .channel1_table\nchan_jump .main_loop_146\n\n.channel4:\nchan_largenoteson\nchan_setinstr 0\nchan_setpanmix 127\nchan_setnotepriority 14\nchan_setval 0\nchan_iowriteval 5\nchan_setmutebhv 0x20\nchan_stereoheadseteffects 1\nchan_setdyntable .channel4_table\nchan_jump .main_loop_146\n\n.channel6:\nchan_largenoteson\nchan_setinstr 0\nchan_setpanmix 127\nchan_setnotepriority 14\nchan_setval 0\nchan_iowriteval 5\nchan_setmutebhv 0x20\nchan_stereoheadseteffects 1\nchan_setdyntable .channel6_table\nchan_jump .main_loop_146\n\n// Main loop for moving, env and air sound effects, which play continuously\n.main_loop_146:\nchan_delay1\nchan_ioreadval 0\nchan_bltz .main_loop_146\n.start_playing_146:\nchan_freelayer 0\nchan_freelayer 1\nchan_freelayer 2\nchan_setvolscale 127\nchan_setval 0\nchan_iowriteval 5\nchan_ioreadval 4\nchan_dyncall\n\n// keep looping until we are told to stop or to play something else\n.poll_146:\nchan_delay1\nchan_ioreadval 0\nchan_bltz .poll_146\nchan_beqz .force_stop_146\nchan_jump .start_playing_146\n.force_stop_146:\nchan_freelayer 0\nchan_freelayer 1\nchan_freelayer 2\nchan_jump .main_loop_146\n\n.channel7:\nchan_largenoteson\nchan_setinstr 0\nchan_setnotepriority 14\nchan_setval 0\nchan_iowriteval 5\nchan_stereoheadseteffects 1\nchan_setdyntable .channel7_table\n\n// Loop for menu sound effects\n.main_loop_7:\nchan_delay1\nchan_ioreadval 0\nchan_bltz .main_loop_7\n.start_playing_7:\nchan_freelayer 0\nchan_freelayer 1\nchan_freelayer 2\nchan_setval 0\nchan_iowriteval 5\nchan_setreverb 0\nchan_setpan 64\nchan_setpanmix 127\nchan_ioreadval 4\nchan_dyncall\n\n// keep looping until layer 0 finishes or we are told to stop or to play something else\n.poll_7:\nchan_delay1\nchan_ioreadval 0\nchan_bltz .skip_7 // if we have a signal:\n  chan_beqz .force_stop_7 // told to stop\n  chan_unreservenotes\n  chan_jump .start_playing_7 // told to play something else\n.skip_7:\nchan_testlayerfinished 0\nchan_beqz .poll_7 // if layer 0 hasn't finished, keep polling\nchan_unreservenotes\nchan_jump .main_loop_7 // otherwise go back to the main loop\n.force_stop_7:\nchan_freelayer 0\nchan_freelayer 1\nchan_freelayer 2\nchan_unreservenotes\nchan_jump .main_loop_7\n\n// Delay for a number of ticks (1-255) in an interruptible manner.\n.delay:\nchan_writeseq_nextinstr 0, 1\nchan_loop 20\nchan_delay1\nchan_ioreadval 0\nchan_iowriteval 1\nchan_bgez .delay_interrupt\nchan_loopend\nchan_end\n\n.delay_interrupt:\nchan_setpanmix 127\nchan_setvolscale 127\nchan_setvibratoextent 0\nchan_ioreadval 1 // IO slots 0-3 are reset to -1 when read; restore the value\nchan_iowriteval 0\nchan_break // break out of the loop\nchan_break // force the caller to return immediately\nchan_end\n\n// Set reverb in way that takes area echo level and volume into account. This\n// is done by writing to IO slot 5 and letting get_sound_reverb in external.c\n// do the necessary math.\n.set_reverb:\nchan_writeseq_nextinstr 0, 1\nchan_setreverb 10\nchan_iowriteval 5\nchan_end\n\n.channel0_table:\nsound_ref .sound_action_jump_default\nsound_ref .sound_action_jump_grass\nsound_ref .sound_action_jump_water\nsound_ref .sound_action_jump_stone\nsound_ref .sound_action_jump_spooky\nsound_ref .sound_action_jump_snow\nsound_ref .sound_action_jump_ice\nsound_ref .sound_action_jump_sand\nsound_ref .sound_action_landing_default\nsound_ref .sound_action_landing_grass\nsound_ref .sound_action_landing_water\nsound_ref .sound_action_landing_stone\nsound_ref .sound_action_landing_spooky\nsound_ref .sound_action_landing_snow\nsound_ref .sound_action_landing_ice\nsound_ref .sound_action_landing_sand\nsound_ref .sound_action_step_default\nsound_ref .sound_action_step_grass\nsound_ref .sound_action_step_water\nsound_ref .sound_action_step_stone\nsound_ref .sound_action_step_spooky\nsound_ref .sound_action_step_snow\nsound_ref .sound_action_step_ice\nsound_ref .sound_action_step_sand\nsound_ref .sound_action_body_hit_ground_default\nsound_ref .sound_action_body_hit_ground_grass\nsound_ref .sound_action_body_hit_ground_water\nsound_ref .sound_action_body_hit_ground_stone\nsound_ref .sound_action_body_hit_ground_spooky\nsound_ref .sound_action_body_hit_ground_snow\nsound_ref .sound_action_body_hit_ground_ice\nsound_ref .sound_action_body_hit_ground_sand\nsound_ref .sound_action_step_tiptoe_default\nsound_ref .sound_action_step_tiptoe_grass\nsound_ref .sound_action_step_tiptoe_water\nsound_ref .sound_action_step_tiptoe_stone\nsound_ref .sound_action_step_tiptoe_spooky\nsound_ref .sound_action_step_tiptoe_snow\nsound_ref .sound_action_step_tiptoe_ice\nsound_ref .sound_action_step_tiptoe_sand\nsound_ref .sound_action_metal_jump\nsound_ref .sound_action_metal_landing\nsound_ref .sound_action_metal_step\nsound_ref .sound_action_metal_heavy_landing\nsound_ref .sound_action_clap_hands_cold\nsound_ref .sound_action_hanging_step\nsound_ref .sound_action_quicksand_step\nsound_ref .sound_action_metal_step_tiptoe\nsound_ref .chan_4E5\nsound_ref .chan_4F1\nsound_ref .chan_4FD\nsound_ref .sound_action_swim\nsound_ref .chan_522\nsound_ref .sound_action_throw\nsound_ref .sound_action_key_swish\nsound_ref .sound_action_spin\nsound_ref .sound_action_spin\nsound_ref .sound_action_spin\nsound_ref .sound_action_climb_up_tree\nsound_ref .sound_action_climb_down_tree\nsound_ref .chan_582\nsound_ref .chan_591\nsound_ref .chan_5A3\nsound_ref .sound_action_pat_back\nsound_ref .sound_action_brush_hair\nsound_ref .sound_action_climb_up_pole\nsound_ref .sound_action_metal_bonk\nsound_ref .sound_action_unstuck_from_ground\nsound_ref .sound_action_hit\nsound_ref .sound_action_bonk\nsound_ref .sound_action_enter_bbh\nsound_ref .sound_action_swim_fast\nsound_ref .sound_action_stuck_in_ground_default\nsound_ref .sound_action_stuck_in_ground_default\nsound_ref .sound_action_stuck_in_ground_default\nsound_ref .sound_action_stuck_in_ground_default\nsound_ref .sound_action_stuck_in_ground_default\nsound_ref .sound_action_stuck_in_ground_snow\nsound_ref .sound_action_stuck_in_ground_sand\nsound_ref .sound_action_stuck_in_ground_sand\nsound_ref .sound_action_metal_jump_water\nsound_ref .sound_action_metal_land_water\nsound_ref .sound_action_metal_step_water\nsound_ref .chan_731\nsound_ref .chan_743\nsound_ref .chan_756\nsound_ref .sound_action_flying_fast\nsound_ref .sound_action_teleport\nsound_ref .chan_7A5\nsound_ref .sound_action_bounce_off_object\nsound_ref .chan_7ED\nsound_ref .sound_action_read_sign\nsound_ref .chan_810\n#ifdef VERSION_JP\n  sound_ref .sound_action_jump_default\n  sound_ref .sound_action_jump_default\n  sound_ref .sound_action_jump_default\n#else\n  sound_ref .chan_828\n  sound_ref .sound_action_intro_unk45e\n  sound_ref .sound_action_intro_unk45f\n#endif\nsound_ref .sound_action_heavy_landing_default\nsound_ref .sound_action_heavy_landing_grass\nsound_ref .sound_action_heavy_landing_water\nsound_ref .sound_action_heavy_landing_stone\nsound_ref .sound_action_heavy_landing_spooky\nsound_ref .sound_action_heavy_landing_snow\nsound_ref .sound_action_heavy_landing_ice\nsound_ref .sound_action_heavy_landing_sand\nsound_ref .sound_action_jump_default\nsound_ref .sound_action_jump_default\nsound_ref .sound_action_jump_default\nsound_ref .sound_action_jump_default\nsound_ref .sound_action_jump_default\nsound_ref .sound_action_jump_default\nsound_ref .sound_action_jump_default\nsound_ref .sound_action_jump_default\n\n.sound_action_jump_default:\nchan_setbank 1\nchan_setinstr 0\nchan_setlayer 0, .layer_234\nchan_end\n\n.layer_234:\nlayer_note1 41, 0xc, 117\nlayer_note1 46, 0x18, 117\nlayer_end\n\n.sound_action_jump_grass:\nchan_setbank 1\nchan_setinstr 1\nchan_setlayer 0, .layer_243\nchan_end\n\n.layer_243:\nlayer_note1 41, 0xc, 120\nlayer_note1 50, 0x18, 120\nlayer_end\n\n.sound_action_jump_water:\nchan_setbank 2\nchan_setinstr 1\nchan_setlayer 0, .layer_252\nchan_end\n\n.layer_252:\nlayer_note1 41, 0x6, 80\nlayer_note1 50, 0x18, 80\nlayer_end\n\n.sound_action_jump_stone:\nchan_setbank 1\nchan_setinstr 3\nchan_setlayer 0, .layer_261\nchan_end\n\n.layer_261:\nlayer_note1 41, 0xc, 127\nlayer_note1 50, 0x18, 127\nlayer_end\n\n.sound_action_jump_spooky:\nchan_setbank 1\nchan_setinstr 4\nchan_setlayer 0, .layer_270\nchan_end\n\n.layer_270:\nlayer_note1 41, 0xc, 90\nlayer_note1 50, 0x18, 90\nlayer_end\n\n.sound_action_jump_snow:\nchan_setbank 1\nchan_setinstr 5\nchan_setlayer 0, .layer_27F\nchan_end\n\n.layer_27F:\nlayer_note1 41, 0xc, 80\nlayer_note1 50, 0x18, 80\nlayer_end\n\n.sound_action_jump_ice:\nchan_setbank 1\nchan_setinstr 6\nchan_setlayer 0, .layer_28E\nchan_end\n\n.layer_28E:\nlayer_note1 29, 0xc, 127\nlayer_note1 38, 0x18, 127\nlayer_end\n\n.sound_action_jump_sand:\nchan_setbank 1\nchan_setinstr 8\nchan_setlayer 0, .layer_29D\nchan_end\n\n.layer_29D:\nlayer_note0 34, 0xc, 100, 127\nlayer_note0 43, 0x24, 100, 127\nlayer_end\n\n.sound_action_landing_default:\nchan_setbank 1\nchan_setinstr 0\nchan_setlayer 0, .layer_2AE\nchan_end\n\n.layer_2AE:\nlayer_note1 46, 0xc, 117\nlayer_note1 41, 0x18, 117\nlayer_end\n\n.sound_action_landing_grass:\nchan_setbank 1\nchan_setinstr 1\nchan_setlayer 0, .layer_2BD\nchan_end\n\n.layer_2BD:\nlayer_note1 50, 0xc, 120\nlayer_note1 41, 0x18, 120\nlayer_end\n\n.sound_action_landing_water:\nchan_setbank 2\nchan_setinstr 1\nchan_setlayer 0, .layer_2CC\nchan_end\n\n.layer_2CC:\nlayer_note1 50, 0xc, 80\nlayer_note1 41, 0x18, 80\nlayer_end\n\n.sound_action_landing_stone:\nchan_setbank 1\nchan_setinstr 3\nchan_setlayer 0, .layer_2DB\nchan_end\n\n.layer_2DB:\nlayer_note1 50, 0xc, 127\nlayer_note1 41, 0x18, 127\nlayer_end\n\n.sound_action_landing_spooky:\nchan_setbank 1\nchan_setinstr 4\nchan_setlayer 0, .layer_2EA\nchan_end\n\n.layer_2EA:\nlayer_note1 50, 0xc, 90\nlayer_note1 41, 0x18, 90\nlayer_end\n\n.sound_action_landing_snow:\nchan_setbank 1\nchan_setinstr 5\nchan_setlayer 0, .layer_2F9\nchan_end\n\n.layer_2F9:\nlayer_note1 50, 0xc, 80\nlayer_note1 41, 0x18, 80\nlayer_end\n\n.sound_action_landing_ice:\nchan_setbank 1\nchan_setinstr 6\nchan_setlayer 0, .layer_308\nchan_end\n\n.layer_308:\nlayer_note1 38, 0xc, 127\nlayer_note1 29, 0x18, 127\nlayer_end\n\n.sound_action_landing_sand:\nchan_setbank 1\nchan_setinstr 8\nchan_setlayer 0, .layer_317\nchan_end\n\n.layer_317:\nlayer_note0 43, 0xc, 100, 127\nlayer_note0 34, 0x24, 100, 127\nlayer_end\n\n.sound_action_step_default:\nchan_setbank 1\nchan_setinstr 0\nchan_setlayer 0, .layer_328\nchan_end\n\n.layer_328:\nlayer_note1 39, 0x18, 85\nlayer_end\n\n.sound_action_step_grass:\nchan_setbank 1\nchan_setinstr 1\nchan_setlayer 0, .layer_334\nchan_end\n\n.layer_334:\nlayer_note1 39, 0x18, 100\nlayer_end\n\n.sound_action_step_water:\nchan_setbank 2\nchan_setinstr 1\nchan_setlayer 0, .layer_340\nchan_end\n\n.layer_340:\nlayer_note1 43, 0x18, 63\nlayer_end\n\n.sound_action_step_stone:\nchan_setbank 1\nchan_setinstr 3\nchan_setlayer 0, .layer_34C\nchan_end\n\n.layer_34C:\nlayer_note1 39, 0x18, 77\nlayer_end\n\n.sound_action_step_spooky:\nchan_setbank 1\nchan_setinstr 4\nchan_setlayer 0, .layer_358\nchan_end\n\n.layer_358:\nlayer_note1 39, 0x18, 70\nlayer_end\n\n.sound_action_step_snow:\nchan_setbank 1\nchan_setinstr 5\nchan_setlayer 0, .layer_364\nchan_end\n\n.layer_364:\nlayer_note1 39, 0x18, 68\nlayer_end\n\n.sound_action_step_ice:\nchan_setbank 1\nchan_setinstr 6\nchan_setlayer 0, .layer_370\nchan_end\n\n.layer_370:\nlayer_note1 39, 0x18, 100\nlayer_end\n\n.sound_action_step_sand:\nchan_setbank 1\nchan_setinstr 8\nchan_setlayer 0, .layer_37C\nchan_end\n\n.layer_37C:\nlayer_note1 39, 0x18, 70\nlayer_end\n\n.sound_action_body_hit_ground_default:\nchan_setbank 1\nchan_setinstr 0\nchan_setlayer 0, .layer_388\nchan_end\n\n.layer_388:\nlayer_note1 17, 0xc, 117\nlayer_note1 19, 0x18, 117\nlayer_end\n\n.sound_action_body_hit_ground_grass:\nchan_setbank 1\nchan_setinstr 1\nchan_setlayer 0, .layer_397\nchan_end\n\n.layer_397:\nlayer_note1 29, 0xc, 120\nlayer_note1 31, 0x18, 120\nlayer_end\n\n.sound_action_body_hit_ground_water:\nchan_setbank 2\nchan_setinstr 1\nchan_setlayer 0, .layer_3A6\nchan_end\n\n.layer_3A6:\nlayer_note1 34, 0xc, 80\nlayer_note1 39, 0x18, 80\nlayer_end\n\n.sound_action_body_hit_ground_stone:\nchan_setbank 1\nchan_setinstr 3\nchan_setlayer 0, .layer_3B5\nchan_end\n\n.layer_3B5:\nlayer_note1 29, 0xc, 115\nlayer_note1 31, 0xc, 115\nlayer_end\n\n.sound_action_body_hit_ground_spooky:\nchan_setbank 1\nchan_setinstr 4\nchan_setlayer 0, .layer_3C4\nchan_end\n\n.layer_3C4:\nlayer_note1 29, 0xc, 90\nlayer_note1 31, 0x18, 90\nlayer_end\n\n.sound_action_body_hit_ground_snow:\nchan_setbank 1\nchan_setinstr 5\nchan_setlayer 0, .layer_3D3\nchan_end\n\n.layer_3D3:\nlayer_note1 34, 0xc, 80\nlayer_note1 36, 0x18, 80\nlayer_end\n\n.sound_action_body_hit_ground_ice:\nchan_setbank 1\nchan_setinstr 6\nchan_setlayer 0, .layer_3E2\nchan_end\n\n.layer_3E2:\nlayer_note1 29, 0xc, 127\nlayer_note1 31, 0x18, 127\nlayer_end\n\n.sound_action_body_hit_ground_sand:\nchan_setbank 1\nchan_setinstr 8\nchan_setlayer 0, .layer_3F1\nchan_end\n\n.layer_3F1:\nlayer_note0 31, 0xc, 100, 127\nlayer_note0 32, 0x24, 100, 127\nlayer_end\n\n.sound_action_step_tiptoe_default:\nchan_setbank 1\nchan_setinstr 0\nchan_setlayer 0, .layer_402\nchan_end\n\n.layer_402:\nlayer_note1 37, 0x18, 63\nlayer_end\n\n.sound_action_step_tiptoe_grass:\nchan_setbank 1\nchan_setinstr 1\nchan_setlayer 0, .layer_40E\nchan_end\n\n.layer_40E:\nlayer_note1 37, 0x18, 57\nlayer_end\n\n.sound_action_step_tiptoe_water:\nchan_setbank 2\nchan_setinstr 1\nchan_setlayer 0, .layer_41A\nchan_end\n\n.layer_41A:\nlayer_note1 39, 0x18, 39\nlayer_end\n\n.sound_action_step_tiptoe_stone:\nchan_setbank 1\nchan_setinstr 3\nchan_setlayer 0, .layer_426\nchan_end\n\n.layer_426:\nlayer_note1 37, 0x18, 49\nlayer_end\n\n.sound_action_step_tiptoe_spooky:\nchan_setbank 1\nchan_setinstr 4\nchan_setlayer 0, .layer_432\nchan_end\n\n.layer_432:\nlayer_note1 37, 0x18, 39\nlayer_end\n\n.sound_action_step_tiptoe_snow:\nchan_setbank 1\nchan_setinstr 5\nchan_setlayer 0, .layer_43E\nchan_end\n\n.layer_43E:\nlayer_note1 37, 0x18, 39\nlayer_end\n\n.sound_action_step_tiptoe_ice:\nchan_setbank 1\nchan_setinstr 6\nchan_setlayer 0, .layer_44A\nchan_end\n\n.layer_44A:\nlayer_note1 37, 0x18, 70\nlayer_end\n\n.sound_action_step_tiptoe_sand:\nchan_setbank 1\nchan_setinstr 8\nchan_setlayer 0, .layer_456\nchan_end\n\n.layer_456:\nlayer_note1 35, 0x18, 49\nlayer_end\n\n.sound_action_metal_jump:\nchan_setbank 1\nchan_setinstr 7\nchan_setlayer 0, .layer_462\nchan_end\n\n.layer_462:\nlayer_note1 29, 0xc, 100\nlayer_note1 38, 0x12, 100\nlayer_end\n\n.sound_action_metal_landing:\nchan_setbank 1\nchan_setinstr 7\nchan_setlayer 0, .layer_471\nchan_end\n\n.layer_471:\nlayer_note1 38, 0xc, 100\nlayer_note1 29, 0x18, 100\nlayer_end\n\n.sound_action_metal_step:\nchan_setbank 1\nchan_setinstr 7\nchan_setlayer 0, .layer_480\nchan_end\n\n.layer_480:\nlayer_portamento 0x85, 27, 255\nlayer_note1 31, 0x10, 100\nlayer_end\n\n.sound_action_metal_heavy_landing:\nchan_setbank 1\nchan_setinstr 7\nchan_setlayer 0, .layer_490\nchan_end\n\n.layer_490:\nlayer_note1 20, 0xc, 100\nlayer_note1 24, 0x18, 100\nlayer_end\n\n.sound_action_clap_hands_cold:\nchan_setbank 3\nchan_setinstr 6\nchan_setenvelope .envelope_3304\nchan_setlayer 0, .layer_4A2\nchan_end\n\n.layer_4A2:\nlayer_note1 62, 0x6, 90\nlayer_note1 58, 0x7, 90\nlayer_end\n\n.sound_action_hanging_step:\nchan_setbank 0\nchan_setinstr 2\nchan_setlayer 0, .layer_4BD\nchan_setval 1\nchan_call .delay\nchan_setbank 3\nchan_setinstr 1\nchan_setenvelope .envelope_32D4\nchan_end\n\n.layer_4BD:\nlayer_note1 62, 0x4, 127\nlayer_note0 56, 0x3, 127, 80\nlayer_end\n\n.sound_action_quicksand_step:\nchan_setbank 1\nchan_setinstr 8\nchan_setlayer 0, .layer_4CD\nchan_end\n\n.layer_4CD:\nlayer_portamento 0x1, 29, 0x12\nlayer_note1 24, 0x12, 115\nlayer_end\n\n.sound_action_metal_step_tiptoe:\nchan_setbank 1\nchan_setinstr 7\nchan_setlayer 0, .layer_4DD\nchan_end\n\n.layer_4DD:\nlayer_portamento 0x85, 25, 255\nlayer_note1 29, 0x10, 70\nlayer_end\n\n.chan_4E5:\nchan_setbank 2\nchan_setinstr 0\nchan_setlayer 0, .layer_4ED\nchan_end\n\n.layer_4ED:\nlayer_note1 39, 0x7f, 100\nlayer_end\n\n.chan_4F1:\nchan_setbank 2\nchan_setinstr 1\nchan_setlayer 0, .layer_4F9\nchan_end\n\n.layer_4F9:\nlayer_note1 36, 0x64, 90\nlayer_end\n\n.chan_4FD:\nchan_setbank 2\nchan_setlayer 0, .layer_503\nchan_end\n\n.layer_503:\nlayer_setinstr 2\nlayer_note1 36, 0xa, 80\nlayer_setinstr 0\nlayer_portamento 0x81, 36, 255\nlayer_note1 50, 0x32, 80\nlayer_end\n\n.sound_action_swim:\nchan_setbank 2\nchan_setinstr 2\nchan_setlayer 0, .layer_51A\nchan_end\n\n.layer_51A:\nlayer_portamento 0x81, 35, 255\nlayer_note1 30, 0x3c, 110\nlayer_end\n\n.chan_522:\nchan_setbank 2\nchan_setinstr 2\nchan_setlayer 0, .layer_52A\nchan_end\n\n.layer_52A:\nlayer_note1 39, 0x7f, 115\nlayer_end\n\n.sound_action_throw:\nchan_setbank 0\nchan_setinstr 0\nchan_setlayer 0, .layer_538\nchan_end\n\n.layer_536:\nlayer_transpose 1\n\n.layer_538:\nlayer_portamento 0x81, 46, 255\nlayer_note1 31, 0xf, 100\nlayer_end\n\n.sound_action_key_swish:\nchan_setbank 0\nchan_setinstr 0\nchan_setlayer 0, .layer_548\nchan_end\n\n.layer_548:\nlayer_note1 39, 0x12, 100\nlayer_end\n\n.sound_action_spin:\nchan_setbank 0\nchan_setinstr 0\nchan_setdecayrelease 30\nchan_setlayer 0, .layer_556\nchan_end\n\n.layer_556:\nlayer_portamento 0x81, 34, 255\nlayer_note1 41, 0xc, 127\nlayer_end\n\n.sound_action_climb_up_tree:\nchan_setbank 0\nchan_setinstr 1\nchan_setlayer 0, .layer_566\nchan_end\n\n.layer_566:\nlayer_note1 37, 0xa, 105\nlayer_portamento 0x81, 42, 255\nlayer_note1 37, 0x1e, 105\nlayer_end\n\n.sound_action_climb_down_tree: // unused\nchan_setbank 0\nchan_setinstr 1\nchan_setlayer 0, .layer_579\nchan_end\n\n.layer_579:\nlayer_portamento 0x81, 44, 255\nlayer_note1 40, 0xb4, 100\nlayer_end\n\n.chan_582: // unused\nchan_setbank 0\nchan_setinstr 2\nchan_setlayer 0, .layer_58A\nchan_end\n\n.layer_58A:\nlayer_note1 39, 0x4, 127\nlayer_note1 41, 0x12, 127\nlayer_end\n\n.chan_591:\nchan_setbank 1\nchan_setinstr 1\nchan_setenvelope .envelope_32C4\nchan_setlayer 0, .layer_59C\nchan_end\n\n.layer_59C:\nlayer_note1 38, 0x6, 127\nlayer_note1 41, 0x6, 127\nlayer_end\n\n.chan_5A3:\nchan_setbank 1\nchan_setinstr 1\nchan_setenvelope .envelope_32C4\nchan_setlayer 0, .layer_5AE\nchan_end\n\n.layer_5AE:\nlayer_note1 41, 0x6, 127\nlayer_note1 38, 0x6, 127\nlayer_end\n\n.sound_action_pat_back:\nchan_setbank 0\nchan_setinstr 2\nchan_setlayer 0, .layer_5BD\nchan_end\n\n.layer_5BD:\nlayer_note1 32, 0xa, 127\nlayer_end\n\n.sound_action_brush_hair:\nchan_setbank 0\nchan_setinstr 1\nchan_setenvelope .envelope_32C4\nchan_setlayer 0, .layer_5CC\nchan_end\n\n.layer_5CC:\nlayer_note1 39, 0x8, 90\nlayer_note1 41, 0x8, 90\nlayer_end\n\n.sound_action_climb_up_pole:\nchan_setbank 3\nchan_setinstr 1\nchan_setenvelope .envelope_32E4\nchan_setlayer 0, .layer_5DE\nchan_end\n\n.layer_5DE:\nlayer_portamento 0x85, 53, 255\nlayer_note1 55, 0xc, 127\nlayer_note1 53, 0x18, 127\nlayer_end\n\n.sound_action_metal_bonk:\nchan_setbank 1\nchan_setinstr 7\nchan_setlayer 0, .layer_5F1\nchan_end\n\n.layer_5F1:\nlayer_note1 39, 0x7, 100\nlayer_note1 20, 0x18, 115\nlayer_end\n\n.sound_action_unstuck_from_ground:\nchan_setbank 0\nchan_setinstr 4\nchan_setlayer 0, .layer_600\nchan_end\n\n.layer_600:\nlayer_note1 37, 0x48, 127\nlayer_end\n\n.sound_action_hit:\nchan_setbank 7\nchan_setinstr 3\nchan_setlayer 0, .layer_618\nchan_setval 1\nchan_call .delay\nchan_setbank 6\nchan_setinstr 10\nchan_setenvelope .envelope_3314\nchan_end\n\n.layer_618:\nlayer_portamento 0x81, 27, 255\nlayer_note1 46, 0xb, 127\n.layer_61F:\nlayer_somethingon\nlayer_portamento 0x85, 32, 255\nlayer_note1 44, 0x5, 100\nlayer_call .layer_fn_64A\nlayer_transpose 1\nlayer_call .layer_fn_64A\nlayer_transpose 3\nlayer_call .layer_fn_64A\nlayer_transpose 4\nlayer_call .layer_fn_64A\nlayer_transpose 6\nlayer_call .layer_fn_64A\nlayer_transpose 7\nlayer_call .layer_fn_64A\nlayer_transpose 9\nlayer_call .layer_fn_64A\nlayer_transpose 10\n\n.layer_fn_64A:\nlayer_note1 20, 0x5, 115\nlayer_note1 32, 0x5, 115\nlayer_end\n\n.sound_action_bonk:\nchan_setbank 7\nchan_setinstr 3\nchan_setlayer 0, .layer_659\nchan_end\n\n.layer_659:\nlayer_portamento 0x82, 19, 255\nlayer_note1 34, 0x5, 110\nlayer_note1 39, 0x2, 110\nlayer_end\n\n.sound_action_enter_bbh:\nchan_setbank 3\nchan_setinstr 3\nchan_setval 50\nchan_call .set_reverb\nchan_setenvelope .envelope_3324\nchan_setlayer 0, .layer_68F\nchan_delay 1\nchan_setlayer 1, .layer_6A1\nchan_setbank 9\nchan_setinstr 1\nchan_setenvelope .envelope_32D4\nchan_setdecayrelease 20\nchan_delay 1\nchan_setlayer 2, .layer_699\nchan_setbank 4\nchan_setinstr 14\nchan_setdecayrelease 12\nchan_setvibratoextent 10\nchan_end\n\n.layer_68F:\nlayer_transpose 36\nlayer_portamento 0x81, 62, 255\nlayer_note1 38, 0x7f, 127\nlayer_end\n\n.layer_699:\nlayer_portamento 0x81, 39, 255\nlayer_note1 15, 0x7f, 127\nlayer_end\n\n.layer_6A1:\nlayer_portamento 0x81, 62, 255\nlayer_note1 38, 0x7f, 100\nlayer_end\n\n.sound_action_swim_fast:\nchan_setbank 2\nchan_setinstr 2\nchan_setval 20\nchan_call .set_reverb\nchan_setlayer 0, .layer_6C1\nchan_setlayer 1, .layer_6B9\nchan_end\n\n.layer_6B9:\nlayer_portamento 0x81, 23, 255\nlayer_note1 59, 0x30, 120\nlayer_end\n\n.layer_6C1:\nlayer_portamento 0x81, 35, 255\nlayer_note1 42, 0x3c, 110\nlayer_end\n\n.sound_action_stuck_in_ground_default:\nchan_setbank 1\nchan_setinstr 0\nchan_setlayer 0, .layer_6D1\nchan_end\n\n.layer_6D1:\nlayer_note1 17, 0x6, 127\nlayer_portamento 0x81, 31, 255\nlayer_note1 7, 0xc, 127\nlayer_end\n\n.sound_action_stuck_in_ground_snow:\nchan_setbank 1\nchan_setinstr 5\nchan_setlayer 0, .layer_6E4\nchan_end\n\n.layer_6E4:\nlayer_note1 23, 0x6, 127\nlayer_note1 25, 0xc, 127\nlayer_end\n\n.sound_action_stuck_in_ground_sand:\nchan_setbank 1\nchan_setinstr 8\nchan_setlayer 0, .layer_6F3\nchan_end\n\n.layer_6F3:\nlayer_note1 17, 0x6, 127\nlayer_note1 19, 0xc, 127\nlayer_end\n\n.sound_action_metal_jump_water:\nchan_setbank 1\nchan_setinstr 7\nchan_setenvelope .envelope_3314\nchan_setlayer 0, .layer_705\nchan_end\n\n.layer_705:\nlayer_note1 20, 0xf, 90\nlayer_note1 29, 0x17, 90\nlayer_end\n\n.sound_action_metal_land_water:\nchan_setbank 1\nchan_setinstr 7\nchan_setenvelope .envelope_3314\nchan_setlayer 0, .layer_717\nchan_end\n\n.layer_717:\nlayer_note1 29, 0xf, 90\nlayer_note1 20, 0x1f, 90\nlayer_end\n\n.sound_action_metal_step_water:\nchan_setbank 1\nchan_setinstr 7\nchan_setenvelope .envelope_3314\nchan_setlayer 0, .layer_729\nchan_end\n\n.layer_729:\nlayer_portamento 0x85, 18, 255\nlayer_note1 22, 0x15, 90\nlayer_end\n\n.chan_731:\nchan_setbank 1\nchan_setinstr 7\nchan_setenvelope .envelope_3314\nchan_setlayer 0, .layer_73C\nchan_end\n\n.layer_73C:\nlayer_note1 11, 0xf, 90\nlayer_note1 15, 0x1f, 90\nlayer_end\n\n.chan_743:\nchan_setbank 1\nchan_setinstr 7\nchan_setenvelope .envelope_3314\nchan_setlayer 0, .layer_74E\nchan_end\n\n.layer_74E:\nlayer_portamento 0x85, 18, 255\nlayer_note1 22, 0x10, 90\nlayer_end\n\n.chan_756:\nchan_setbank 6\nchan_setinstr 10\nchan_setenvelope .envelope_3314\nchan_setlayer 0, .layer_761\nchan_end\n\n.layer_761:\nlayer_transpose 8\nlayer_jump .layer_61F\n\n.sound_action_flying_fast:\nchan_setbank 5\nchan_setinstr 6\nchan_setenvelope .envelope_33AC\nchan_setlayer 0, .layer_774\nchan_setlayer 1, .layer_776\nchan_end\n\n.layer_774:\nlayer_transpose 12\n\n.layer_776:\nlayer_somethingon\nlayer_portamento 0x85, 27, 255\nlayer_note1 51, 0x14, 127\nlayer_note1 36, 0x5a, 127\nlayer_end\n\n.sound_action_teleport:\nchan_setbank 9\nchan_setinstr 3\nchan_setvibratoextent 60\nchan_setvibratorate 60\nchan_setenvelope .envelope_32E4\nchan_setlayer 0, .layer_79D\nchan_setlayer 1, .layer_79B\nchan_setval 36\nchan_call .delay\nchan_setvibratoextent 0\nchan_end\n\n.layer_79B:\nlayer_transpose 1\n\n.layer_79D:\nlayer_portamento 0x81, 20, 100\nlayer_note1 27, 0x30, 127\nlayer_end\n\n.chan_7A5:\nchan_setbank 1\nchan_setinstr 7\nchan_setenvelope .envelope_3344\nchan_setlayer 0, .layer_7B9\nchan_setval 4\nchan_call .delay\nchan_setbank 9\nchan_setinstr 3\nchan_end\n\n.layer_7B9:\nlayer_note1 43, 0x3, 115\nlayer_note1 48, 0x5, 115\nlayer_transpose 12\nlayer_note1 55, 0x6, 80\nlayer_end\n\n.sound_action_bounce_off_object:\nchan_setbank 7\nchan_setinstr 3\nchan_setlayer 0, .layer_7D9\nchan_setval 1\nchan_call .delay\nchan_setbank 6\nchan_setinstr 10\nchan_setenvelope .envelope_3314\nchan_end\n\n.layer_7D9:\nlayer_portamento 0x81, 27, 255\nlayer_note1 41, 0xb, 127\nlayer_somethingon\nlayer_transpose -4\nlayer_portamento 0x85, 32, 255\nlayer_note1 44, 0x5, 100\nlayer_jump .layer_fn_64A\n\n.chan_7ED:\nchan_setbank 0\nchan_setinstr 3\nchan_setdecayrelease 30\nchan_setlayer 0, .layer_7F7\nchan_end\n\n.layer_7F7:\nlayer_setinstr 0\nlayer_portamento 0x81, 32, 255\nlayer_note1 39, 0x24, 127\nlayer_end\n\n.sound_action_read_sign:\nchan_jump .sound_menu_read_sign\n\n.heavy_landing_common:\nchan_setbank 0\nchan_setinstr 5\nchan_setlayer 0, .layer_80C\nchan_end\n\n.layer_80C:\nlayer_note1 41, 0x3c, 127\nlayer_end\n\n.chan_810:\nchan_setbank 1\nchan_setinstr 1\nchan_setenvelope .envelope_32C4\nchan_setlayer 0, .layer_81B\nchan_end\n\n.layer_81B:\nlayer_note1 38, 0x8, 127\nlayer_note1 41, 0x9, 127\nlayer_note1 39, 0xa, 127\nlayer_note1 42, 0x8, 127\nlayer_end\n\n#ifndef VERSION_JP\n  .chan_828: // unused\n  chan_setbank 7\n  chan_setinstr 3\n  chan_setlayer 0, .layer_83C\n  chan_setval 1\n  chan_call .delay\n  chan_setbank 6\n  chan_setinstr 10\n  chan_setenvelope .envelope_3314\n  chan_end\n\n  .layer_83C:\n  layer_portamento 0x81, 27, 255\n  layer_note1 46, 0x7, 127\n  layer_portamento 0x85, 3, 255\n  layer_note1 39, 0xf, 100\n  layer_end\n\n  .sound_action_intro_unk45e:\n  chan_setbank 5\n  chan_setinstr 6\n  chan_setenvelope .envelope_33AC\n  chan_setlayer 0, .layer_859\n  chan_setlayer 1, .layer_85B\n  chan_end\n\n  .layer_859:\n  layer_transpose 12\n\n  .layer_85B:\n  layer_portamento 0x85, 26, 240\n  layer_note1 51, 0x53, 127\n  layer_end\n\n  .sound_action_intro_unk45f:\n  chan_setbank 5\n  chan_setinstr 6\n  chan_setenvelope .envelope_33AC\n  chan_setlayer 0, .layer_871\n  chan_setlayer 1, .layer_776\n  chan_end\n\n  .layer_871:\n  layer_transpose 8\n  layer_jump .layer_776\n#endif\n\n.sound_action_heavy_landing_default:\nchan_call .heavy_landing_common\nchan_setval 1\nchan_call .delay\nchan_setbank 1\nchan_setinstr 0\nchan_setlayer 1, .layer_388\nchan_end\n\n.sound_action_heavy_landing_grass:\nchan_call .heavy_landing_common\nchan_setval 1\nchan_call .delay\nchan_setbank 1\nchan_setinstr 1\nchan_setlayer 1, .layer_397\nchan_end\n\n.sound_action_heavy_landing_water:\nchan_call .heavy_landing_common\nchan_setval 1\nchan_call .delay\nchan_setbank 2\nchan_setinstr 1\nchan_setlayer 1, .layer_3A6\nchan_end\n\n.sound_action_heavy_landing_stone:\nchan_call .heavy_landing_common\nchan_setval 1\nchan_call .delay\nchan_setbank 1\nchan_setinstr 3\nchan_setlayer 1, .layer_3B5\nchan_end\n\n.sound_action_heavy_landing_spooky:\nchan_call .heavy_landing_common\nchan_setval 1\nchan_call .delay\nchan_setbank 1\nchan_setinstr 4\nchan_setlayer 1, .layer_3C4\nchan_end\n\n.sound_action_heavy_landing_snow:\nchan_call .heavy_landing_common\nchan_setval 1\nchan_call .delay\nchan_setbank 1\nchan_setinstr 5\nchan_setlayer 1, .layer_3D3\nchan_end\n\n.sound_action_heavy_landing_ice:\nchan_call .heavy_landing_common\nchan_setval 1\nchan_call .delay\nchan_setbank 1\nchan_setinstr 6\nchan_setlayer 1, .layer_3E2\nchan_end\n\n.sound_action_heavy_landing_sand:\nchan_call .heavy_landing_common\nchan_setval 1\nchan_call .delay\nchan_setbank 1\nchan_setinstr 8\nchan_setlayer 1, .layer_3F1\nchan_end\n\n.channel1_table:\nsound_ref .sound_moving_slide_default\nsound_ref .sound_moving_slide_grass\nsound_ref .sound_moving_slide_water\nsound_ref .sound_moving_slide_stone\nsound_ref .sound_moving_slide_spooky\nsound_ref .sound_moving_slide_snow\nsound_ref .sound_moving_slide_ice\nsound_ref .sound_moving_slide_sand\nsound_ref .sound_moving_slide_default\nsound_ref .sound_moving_slide_grass\nsound_ref .sound_moving_slide_water\nsound_ref .sound_moving_slide_stone\nsound_ref .sound_moving_slide_spooky\nsound_ref .sound_moving_slide_snow\nsound_ref .sound_moving_slide_ice\nsound_ref .sound_moving_slide_sand\nsound_ref .sound_moving_lava_burn\nsound_ref .sound_moving_slide_down_pole\nsound_ref .sound_moving_slide_down_tree\nsound_ref .sound_general_coin\nsound_ref .sound_moving_quicksand_death\nsound_ref .sound_general_coin\nsound_ref .sound_moving_shocked\nsound_ref .sound_moving_flying\nsound_ref .sound_moving_almost_drowning\nsound_ref .sound_moving_aim_cannon\nsound_ref .chan_AC3\nsound_ref .sound_moving_slide_stone\nsound_ref .sound_moving_slide_spooky\nsound_ref .sound_moving_slide_snow\nsound_ref .sound_moving_slide_ice\nsound_ref .sound_moving_slide_sand\nsound_ref .sound_moving_riding_shell_default\nsound_ref .sound_moving_riding_shell_grass\nsound_ref .sound_moving_riding_shell_water\nsound_ref .sound_moving_riding_shell_stone\nsound_ref .sound_moving_riding_shell_spooky\nsound_ref .sound_moving_riding_shell_snow\nsound_ref .sound_moving_riding_shell_ice\nsound_ref .sound_moving_riding_shell_sand\nsound_ref .sound_moving_riding_shell_lava\nsound_ref .sound_moving_riding_shell_grass\nsound_ref .sound_moving_riding_shell_water\nsound_ref .sound_moving_riding_shell_stone\nsound_ref .sound_moving_riding_shell_spooky\nsound_ref .sound_moving_riding_shell_snow\nsound_ref .sound_moving_riding_shell_ice\nsound_ref .sound_moving_riding_shell_sand\nsound_ref .sound_moving_riding_shell_default\nsound_ref .sound_moving_riding_shell_grass\nsound_ref .sound_moving_riding_shell_water\nsound_ref .sound_moving_riding_shell_stone\nsound_ref .sound_moving_riding_shell_spooky\nsound_ref .sound_moving_riding_shell_snow\nsound_ref .sound_moving_riding_shell_ice\nsound_ref .sound_moving_riding_shell_sand\n\n.sound_moving_slide_default:\nchan_setbank 3\nchan_setinstr 0\nchan_setlayer 0, .layer_96E\nchan_end\n\n.layer_96E:\nlayer_somethingon\n.layer_96F:\nlayer_note1 39, 0x12c, 80\nlayer_jump .layer_96F\nlayer_end\n\n.sound_moving_slide_grass:\nchan_setbank 1\nchan_setinstr 1\nchan_setlayer 0, .layer_988\nchan_setval 1\nchan_call .delay\nchan_setbank 3\nchan_setinstr 1\nchan_end\n\n.layer_988:\nlayer_note1 41, 0x8, 105\nlayer_somethingon\n.layer_98C:\nlayer_note1 39, 0x12c, 70\nlayer_jump .layer_98C\nlayer_end\n\n.sound_moving_slide_water:\nchan_setbank 2\nchan_setinstr 1\nchan_setlayer 0, .layer_9A8\nchan_setlayer 1, .layer_9B3\nchan_setval 1\nchan_call .delay\nchan_setbank 3\nchan_setinstr 2\nchan_end\n\n.layer_9A8:\nlayer_delay 1\nlayer_somethingon\n.layer_9AB:\nlayer_note1 39, 0x12c, 88\nlayer_jump .layer_9AB\nlayer_end\n\n.layer_9B3:\nlayer_portamento 0x81, 39, 255\nlayer_note1 48, 0x32, 80\nlayer_end\n\n.sound_moving_slide_stone:\nchan_setbank 3\nchan_setinstr 3\nchan_setlayer 0, .layer_9C3\nchan_end\n\n.layer_9C3:\nlayer_somethingon\n.layer_9C4:\nlayer_note1 39, 0x12c, 68\nlayer_jump .layer_9C4\nlayer_end\n\n.sound_moving_slide_spooky:\nchan_setbank 1\nchan_setinstr 4\nchan_setlayer 0, .layer_9DD\nchan_setval 1\nchan_call .delay\nchan_setbank 3\nchan_setinstr 4\nchan_end\n\n.layer_9DD:\nlayer_note1 42, 0xc, 75\nlayer_somethingon\n.layer_9E1:\nlayer_note1 39, 0x12c, 76\nlayer_jump .layer_9E1\nlayer_end\n\n.sound_moving_slide_snow:\nchan_setbank 3\nchan_setinstr 5\nchan_setlayer 0, .layer_9F1\nchan_end\n\n.layer_9F1:\nlayer_somethingon\n.layer_9F2:\nlayer_note1 39, 0x12c, 80\nlayer_jump .layer_9F2\nlayer_end\n\n.sound_moving_slide_ice:\nchan_setbank 3\nchan_setinstr 6\nchan_setlayer 0, .layer_A02\nchan_end\n\n.layer_A02:\nlayer_somethingon\n.layer_A03:\nlayer_note1 39, 0x12c, 100\nlayer_jump .layer_A03\nlayer_end\n\n.sound_moving_slide_sand:\nchan_setbank 1\nchan_setinstr 8\nchan_setlayer 0, .layer_A1C\nchan_setval 1\nchan_call .delay\nchan_setbank 3\nchan_setinstr 7\nchan_end\n\n.layer_A1C:\nlayer_note1 42, 0xc, 100\nlayer_somethingon\n.layer_A20:\nlayer_note1 39, 0x12c, 81\nlayer_jump .layer_A20\nlayer_end\n\n.sound_moving_lava_burn:\nchan_setbank 3\nchan_setinstr 8\nchan_setlayer 0, .layer_A30\nchan_end\n\n.layer_A30:\nlayer_somethingon\n.layer_A31:\nlayer_note1 39, 0x12c, 120\nlayer_jump .layer_A31\nlayer_end\n\n.sound_moving_slide_down_pole:\nchan_setbank 3\nchan_setinstr 1\nchan_setenvelope .envelope_32D4\nchan_setlayer 0, .layer_A44\nchan_end\n\n.layer_A44:\nlayer_somethingon\n.layer_A45:\nlayer_note1 43, 0x12c, 80\nlayer_jump .layer_A45\nlayer_end\n\n.sound_moving_slide_down_tree:\nchan_setbank 0\nchan_setinstr 1\nchan_setlayer 0, .layer_A55\nchan_end\n\n.layer_A55:\nlayer_portamento 0x81, 44, 255\n.layer_A59:\nlayer_somethingon\nlayer_note1 40, 0xb4, 100\nlayer_jump .layer_A59\nlayer_end\n\n.sound_moving_quicksand_death:\nchan_setbank 3\nchan_setinstr 7\nchan_setlayer 0, .layer_A6A\nchan_end\n\n.layer_A6A:\nlayer_somethingon\nlayer_portamento 0x85, 37, 255\n.layer_A6F:\nlayer_note1 34, 0xc8, 127\nlayer_jump .layer_A6F\nlayer_end\n\n.sound_moving_shocked:\nchan_setbank 3\nchan_setinstr 9\nchan_setlayer 0, .layer_A84\nchan_setlayer 1, .layer_A82\nchan_end\n\n.layer_A82:\nlayer_transpose 24\n\n.layer_A84:\nlayer_note1_long 43, 0x6, 127\nlayer_jump .layer_A84\nlayer_end\n\n.sound_moving_flying:\nchan_setbank 5\nchan_setinstr 6\nchan_setlayer 0, .layer_A9B\nchan_setlayer 1, .layer_A97\nchan_end\n\n.layer_A97:\nlayer_setinstr 13\nlayer_transpose -12\n\n.layer_A9B:\nlayer_somethingon\n.layer_A9C:\nlayer_note1 43, 0x12c, 105\nlayer_jump .layer_A9C\n\n.sound_moving_almost_drowning:\nchan_setbank 9\nchan_setinstr 3\nchan_setval 40\nchan_call .set_reverb\nchan_setenvelope .envelope_3344\nchan_setlayer 0, .layer_AB3\nchan_end\n\n.layer_AB3:\nlayer_transpose 12\n.layer_AB5:\nlayer_note0 60, 0xc, 100, 127\nlayer_note0 60, 0x30, 100, 127\nlayer_jump .layer_AB5\n\n.sound_moving_aim_cannon:\nchan_jump .chan_29C2\n\n.chan_AC3:\nchan_setbank 9\nchan_setinstr 3\nchan_setenvelope .envelope_3368\nchan_setlayer 0, .layer_AD8\nchan_setlayer 1, .layer_AD6\nchan_setlayer 2, .layer_AD4\nchan_end\n\n.layer_AD4:\nlayer_delay 0x4\n\n.layer_AD6:\nlayer_delay 0x4\n\n.layer_AD8:\nlayer_transpose 24\n.layer_ADA:\nlayer_portamento 0x85, 32, 40\nlayer_note1 39, 0x9, 100\nlayer_note1 44, 0x6, 50\nlayer_note1 51, 0x3, 20\nlayer_jump .layer_ADA\n\n.sound_moving_riding_shell_default:\nchan_setbank 3\nchan_setinstr 0\nchan_setlayer 0, .layer_AF2\nchan_end\n\n.layer_AF2:\nlayer_transpose 4\nlayer_jump .layer_96E\n\n.sound_moving_riding_shell_grass:\nchan_setbank 1\nchan_setinstr 1\nchan_setlayer 0, .layer_B08\nchan_setval 1\nchan_call .delay\nchan_setbank 3\nchan_setinstr 1\nchan_end\n\n.layer_B08:\nlayer_transpose 4\nlayer_jump .layer_988\n\n.sound_moving_riding_shell_water:\nchan_setbank 2\nchan_setinstr 1\nchan_setlayer 0, .layer_B21\nchan_setlayer 1, .layer_B26\nchan_setval 1\nchan_call .delay\nchan_setbank 3\nchan_setinstr 2\nchan_end\n\n.layer_B21:\nlayer_transpose 4\nlayer_jump .layer_9A8\n\n.layer_B26:\nlayer_transpose 4\nlayer_jump .layer_9B3\n\n.sound_moving_riding_shell_stone:\nchan_setbank 3\nchan_setinstr 3\nchan_setlayer 0, .layer_B33\nchan_end\n\n.layer_B33:\nlayer_transpose 4\nlayer_jump .layer_9C3\n\n.sound_moving_riding_shell_spooky:\nchan_setbank 1\nchan_setinstr 4\nchan_setlayer 0, .layer_B49\nchan_setval 1\nchan_call .delay\nchan_setbank 3\nchan_setinstr 4\nchan_end\n\n.layer_B49:\nlayer_transpose 4\nlayer_jump .layer_9DD\n\n.sound_moving_riding_shell_snow:\nchan_setbank 3\nchan_setinstr 5\nchan_setlayer 0, .layer_B56\nchan_end\n\n.layer_B56:\nlayer_transpose 4\nlayer_jump .layer_9F1\n\n.sound_moving_riding_shell_ice:\nchan_setbank 3\nchan_setinstr 6\nchan_setlayer 0, .layer_B63\nchan_end\n\n.layer_B63:\nlayer_transpose 4\nlayer_jump .layer_A02\n\n.sound_moving_riding_shell_sand:\nchan_setbank 1\nchan_setinstr 8\nchan_setlayer 0, .layer_B79\nchan_setval 1\nchan_call .delay\nchan_setbank 3\nchan_setinstr 7\nchan_end\n\n.layer_B79:\nlayer_transpose 4\nlayer_jump .layer_A1C\n\n.sound_moving_riding_shell_lava:\nchan_setlayer 0, .layer_B9F\nchan_setlayer 1, .layer_BA8\n.chan_B84:\nchan_setbank 3\nchan_setinstr 2\nchan_setval 1\nchan_call .delay\nchan_setdecayrelease 30\nchan_setbank 2\nchan_setinstr 1\nchan_setenvelope .envelope_3334\nchan_setval 1\nchan_call .delay\nchan_jump .chan_B84\nchan_end\n\n.layer_B9F:\nlayer_somethingon\n.layer_BA0:\nlayer_note1 42, 0x12c, 88\nlayer_jump .layer_BA0\nlayer_end\n\n.layer_BA8:\nlayer_delay 1\n.layer_BAA:\nlayer_portamento 0x81, 41, 255\nlayer_note1 56, 0xa, 127\nlayer_jump .layer_BAA\n\n.channel2_table:\nsound_ref .sound_mario_jump_yah\nsound_ref .sound_mario_jump_wah\nsound_ref .sound_mario_jump_hoo\nsound_ref .sound_mario_hoohoo\nsound_ref .sound_mario_yahoo\nsound_ref .sound_mario_uh\nsound_ref .sound_mario_hrmm\nsound_ref .sound_mario_wah2\nsound_ref .sound_mario_whoa\nsound_ref .sound_mario_eeuh\nsound_ref .sound_mario_attacked\nsound_ref .sound_mario_ooof\nsound_ref .sound_mario_here_we_go\nsound_ref .sound_mario_yawning\nsound_ref .sound_mario_snoring1\nsound_ref .sound_mario_snoring2\nsound_ref .sound_mario_waaaooow\nsound_ref .sound_mario_haha\nsound_ref .sound_mario_panting1\nsound_ref .sound_mario_uh2\nsound_ref .sound_mario_on_fire\nsound_ref .sound_mario_dying\nsound_ref .sound_mario_panting_cold\nsound_ref .sound_mario_coughing3\nsound_ref .sound_mario_panting1\nsound_ref .sound_mario_panting2\nsound_ref .sound_mario_panting3\nsound_ref .sound_mario_coughing1\nsound_ref .sound_mario_coughing2\nsound_ref .sound_mario_coughing3\nsound_ref .sound_mario_punch_yah\nsound_ref .sound_mario_punch_hoo\nsound_ref .sound_mario_mama_mia\nsound_ref .sound_mario_okey_dokey\nsound_ref .sound_mario_ground_pound_wah\nsound_ref .sound_mario_drowning\nsound_ref .sound_mario_punch_wah\nsound_ref .sound_mario_uh\nsound_ref .sound_mario_hrmm\nsound_ref .sound_mario_wah2\n#ifdef VERSION_JP\n  sound_ref .sound_mario_jump_hoo\n  sound_ref .sound_mario_jump_hoo\n  sound_ref .sound_mario_jump_hoo\n  sound_ref .sound_mario_jump_hoo\n  sound_ref .sound_mario_jump_hoo\n  sound_ref .sound_mario_jump_hoo\n  sound_ref .sound_mario_jump_hoo\n  sound_ref .sound_mario_jump_hoo\n  sound_ref .sound_mario_jump_hoo\n  sound_ref .sound_mario_jump_hoo\n  sound_ref .sound_mario_jump_hoo\n  sound_ref .sound_mario_jump_hoo\n  sound_ref .sound_mario_jump_hoo\n  sound_ref .sound_mario_jump_hoo\n  sound_ref .sound_mario_jump_hoo\n  sound_ref .sound_mario_jump_hoo\n#else\n  sound_ref .sound_peach_dear_mario\n  sound_ref .sound_mario_jump_hoo\n  sound_ref .sound_mario_jump_hoo\n  sound_ref .sound_mario_yahoo\n  sound_ref .sound_mario_yahoo\n  sound_ref .sound_mario_yahoo\n  sound_ref .sound_mario_waha\n  sound_ref .sound_mario_yippee\n  sound_ref .sound_mario_doh\n  sound_ref .sound_mario_game_over\n  sound_ref .sound_mario_hello\n  sound_ref .sound_mario_press_start_to_play\n  sound_ref .sound_mario_twirl_bounce\n  sound_ref .sound_mario_snoring3\n  sound_ref .sound_mario_so_longa_bowser\n  sound_ref .sound_mario_ima_tired\n  sound_ref .sound_peach_mario\n  sound_ref .sound_peach_power_of_the_stars\n  sound_ref .sound_peach_thanks_to_you\n  sound_ref .sound_peach_thank_you_mario\n  sound_ref .sound_peach_something_special\n  sound_ref .sound_peach_bake_a_cake\n  sound_ref .sound_peach_for_mario\n  sound_ref .sound_peach_mario2\n#endif\n\n.sound_mario_jump_hoo:\nchan_setbank 8\nchan_setinstr 0\nchan_setlayer 0, .layer_C3C\nchan_end\n\n.layer_C3C:\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n  layer_transpose 2\n#endif\nlayer_portamento 0x82, 41, 127\nlayer_note1 37, 0x14, 127\nlayer_end\n\n.sound_mario_jump_wah:\nchan_setbank 8\nchan_setinstr 1\nchan_setlayer 0, .layer_C4C\nchan_end\n\n.layer_C4C:\nlayer_transpose -2\n.layer_C4E:\nlayer_note1 38, 0x18, 127\nlayer_end\n\n.sound_mario_jump_yah:\nchan_setbank 10\nchan_setinstr 9\nchan_setlayer 0, .layer_C5A\nchan_end\n\n.layer_C5A:\nlayer_transpose -2\n.layer_C5C:\nlayer_portamento 0x82, 39, 200\nlayer_note1 38, 0x24, 120\nlayer_end\n\n.sound_mario_hoohoo:\nchan_setbank 10\nchan_setinstr 1\nchan_setlayer 0, .layer_C6C\nchan_end\n\n.layer_C6C:\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n  layer_transpose 1\n#endif\nlayer_portamento 0x82, 44, 200\nlayer_note1 39, 0x30, 127\nlayer_end\n\n.sound_mario_yahoo:\nchan_setbank 8\nchan_setinstr 4\nchan_setlayer 0, .layer_C7C\nchan_end\n\n.layer_C7C:\nlayer_transpose -2\nlayer_somethingon\nlayer_portamento 0x85, 39, 255\nlayer_note1 42, 0x1e, 110\nlayer_note1 39, 0x41, 110\nlayer_end\n\n.sound_mario_uh:\nchan_setbank 8\nchan_setinstr 5\nchan_setlayer 0, .layer_C92\nchan_end\n\n.layer_C92:\nlayer_transpose -2\nlayer_portamento 0x81, 41, 255\nlayer_note1 38, 0x2b, 115\nlayer_end\n\n.sound_mario_hrmm:\nchan_setbank 8\nchan_setinstr 6\nchan_setlayer 0, .layer_CA4\nchan_end\n\n.layer_CA4:\nlayer_transpose -2\nlayer_note1 44, 0x1e, 110\nlayer_end\n\n.sound_mario_wah2:\nchan_setbank 8\nchan_setinstr 7\nchan_setlayer 0, .layer_CB2\nchan_end\n\n.layer_CB2:\nlayer_transpose -3\nlayer_note1 39, 0x1c, 127\nlayer_end\n\n.sound_mario_whoa:\nchan_setbank 8\nchan_setinstr 8\nchan_setlayer 0, .layer_CC0\nchan_end\n\n.layer_CC0:\nlayer_transpose -2\nlayer_note1 40, 0x30, 110\nlayer_end\n\n.sound_mario_eeuh:\nchan_setbank 8\nchan_setinstr 9\nchan_setlayer 0, .layer_CCE\nchan_end\n\n.layer_CCE:\nlayer_transpose -2\nlayer_note1 40, 0x44, 105\nlayer_end\n\n.sound_mario_attacked:\nchan_setbank 8\nchan_setinstr 10\nchan_setlayer 0, .layer_CDC\nchan_end\n\n.layer_CDC:\nlayer_transpose -2\nlayer_note1 41, 0x30, 120\nlayer_end\n\n.sound_mario_ooof:\nchan_setbank 8\nchan_setinstr 11\nchan_setlayer 0, .layer_CEA\nchan_end\n\n.layer_CEA:\nlayer_transpose -2\nlayer_note1 38, 0x30, 127\nlayer_end\n\n.sound_mario_here_we_go:\nchan_setbank 8\nchan_setinstr 12\nchan_setlayer 0, .layer_CF8\nchan_end\n\n.layer_CF8:\nlayer_portamento 0x81, 38, 200\nlayer_note1 41, 0x85, 127\nlayer_end\n\n.sound_mario_yawning:\nchan_setbank 8\nchan_setinstr 13\nchan_setlayer 0, .layer_D09\nchan_end\n\n.layer_D09:\nlayer_transpose -2\nlayer_note1 39, 0x7f, 105\nlayer_end\n\n.sound_mario_snoring1:\nchan_setbank 8\nchan_setinstr 14\nchan_setlayer 0, .layer_D17\nchan_end\n\n.layer_D17:\nlayer_transpose -2\nlayer_note1 39, 0x60, 64\nlayer_end\n\n.sound_mario_snoring2:\nchan_setbank 8\nchan_setinstr 15\nchan_setlayer 0, .layer_D25\nchan_end\n\n.layer_D25:\nlayer_transpose -2\nlayer_note1 39, 0x5c, 52\nlayer_end\n\n.sound_mario_waaaooow:\nchan_setbank 10\nchan_setinstr 0\nchan_setlayer 0, .layer_D33\nchan_end\n\n.layer_D33:\nlayer_transpose -2\nlayer_note1 39, 0xaa, 127\nlayer_end\n\n.sound_mario_haha:\nchan_setbank 8\nchan_setinstr 3\nchan_setlayer 0, .layer_D42\nchan_end\n\n.layer_D42:\nlayer_transpose -1\nlayer_note1 39, 0x4d, 120\nlayer_end\n\n.sound_mario_uh2:\nchan_setbank 10\nchan_setinstr 6\nchan_setlayer 0, .layer_D50\nchan_end\n\n.layer_D50:\nlayer_transpose -2\nlayer_note1 43, 0x1e, 105\nlayer_end\n\n.sound_mario_on_fire:\nchan_setbank 10\nchan_setinstr 5\nchan_setlayer 0, .layer_D5E\nchan_end\n\n.layer_D5E:\nlayer_transpose -2\nlayer_note1 39, 0xc8, 127\nlayer_end\n\n.sound_mario_dying:\nchan_setbank 10\nchan_setinstr 4\nchan_setlayer 0, .layer_D6D\nchan_end\n\n.layer_D6D:\nlayer_transpose -2\nlayer_note1 39, 0x8c, 110\nlayer_end\n\n.sound_mario_panting_cold:\nchan_setbank 10\nchan_setinstr 2\nchan_setlayer 0, .layer_D7C\nchan_end\n\n.layer_D7C:\nlayer_transpose -2\nlayer_portamento 0x82, 35, 255\nlayer_note1 38, 0x30, 127\nlayer_end\n\n.sound_mario_panting1:\nchan_setbank 10\nchan_setinstr 2\nchan_setlayer 0, .layer_D8E\nchan_end\n\n.layer_D8E:\nlayer_transpose -2\nlayer_note1 39, 0x3c, 100\nlayer_end\n\n.sound_mario_panting2:\nchan_setbank 10\nchan_setinstr 2\nchan_setlayer 0, .layer_D9C\nchan_end\n\n.layer_D9C:\nlayer_transpose -2\nlayer_delay 0x4\nlayer_note1 38, 0x3c, 100\nlayer_end\n\n.sound_mario_panting3:\nchan_setbank 10\nchan_setinstr 2\nchan_setlayer 0, .layer_DAC\nchan_end\n\n.layer_DAC:\nlayer_transpose -2\nlayer_delay 0x8\nlayer_note1 40, 0x3c, 100\nlayer_end\n\n.sound_mario_coughing1:\nchan_setbank 10\nchan_setinstr 7\nchan_setlayer 0, .layer_DBC\nchan_end\n\n.layer_DBC:\nlayer_transpose -2\nlayer_note1 39, 0x10, 115\nlayer_end\n\n.sound_mario_coughing2:\nchan_setbank 10\nchan_setinstr 7\nchan_setlayer 0, .layer_DCA\nchan_end\n\n.layer_DCA:\nlayer_transpose -2\nlayer_portamento 0x81, 38, 255\nlayer_note1 41, 0x18, 115\nlayer_end\n\n.sound_mario_coughing3:\nchan_setbank 10\nchan_setinstr 7\nchan_setlayer 0, .layer_DDC\nchan_end\n\n.layer_DDC:\nlayer_transpose -2\nlayer_somethingon\nlayer_portamento 0x85, 38, 255\nlayer_note1 41, 0xc, 115\nlayer_note1 35, 0x12, 115\nlayer_end\n\n.sound_mario_punch_yah:\nchan_setbank 10\nchan_setinstr 9\nchan_setlayer 0, .layer_DFE\nchan_setval 1\nchan_call .delay\nchan_setbank 0\nchan_setinstr 0\nchan_setlayer 1, .layer_538\nchan_end\n\n.layer_DFE:\nlayer_transpose -2\nlayer_jump .layer_C5C\n\n.sound_mario_punch_hoo:\nchan_setbank 10\nchan_setinstr 10\nchan_setlayer 0, .layer_E17\nchan_setval 1\nchan_call .delay\nchan_setbank 0\nchan_setinstr 0\nchan_setlayer 1, .layer_548\nchan_end\n\n.layer_E17:\nlayer_transpose -2\nlayer_portamento 0x81, 42, 255\nlayer_note1 38, 0x30, 115\nlayer_end\n\n.sound_mario_mama_mia:\nchan_setbank 10\nchan_setinstr 11\nchan_setlayer 0, .layer_E29\nchan_end\n\n.layer_E29:\nlayer_portamento 0x81, 38, 255\nlayer_note1 36, 0x8c, 115\nlayer_end\n\n.sound_mario_okey_dokey:\nchan_setbank 10\nchan_setinstr 12\nchan_setlayer 0, .layer_E3A\nchan_end\n\n.layer_E3A:\nlayer_note1 39, 0x60, 115\nlayer_end\n\n.sound_mario_ground_pound_wah:\nchan_jump .sound_mario_wah2\n\n.sound_mario_drowning:\nchan_setbank 10\nchan_setinstr 13\nchan_setlayer 0, .layer_E49\nchan_end\n\n.layer_E49:\nlayer_note1 38, 0x91, 127\nlayer_end\n\n.sound_mario_punch_wah:\nchan_setbank 8\nchan_setinstr 1\nchan_setlayer 0, .layer_E62\nchan_setval 1\nchan_call .delay\nchan_setbank 0\nchan_setinstr 0\nchan_setlayer 1, .layer_536\nchan_end\n\n.layer_E62:\nlayer_transpose -1\nlayer_jump .layer_C4E\n\n#ifndef VERSION_JP\n  .sound_peach_dear_mario:\n  chan_setbank 10\n  chan_setinstr 15\n  chan_setlayer 0, .layer_E6F\n  chan_end\n\n  .layer_E6F:\n  layer_note1 39, 0x2bc, 127\n  layer_end\n\n  .sound_mario_waha:\n  chan_setbank 8\n  chan_setinstr 24\n  chan_setlayer 0, .layer_E7C\n  chan_end\n\n  .layer_E7C:\n  layer_note1 39, 0x5a, 127\n  layer_end\n\n  .sound_mario_yippee:\n  chan_setbank 8\n  chan_setinstr 25\n  chan_setlayer 0, .layer_E88\n  chan_end\n\n  .layer_E88:\n  layer_note1 39, 0x5a, 97\n  layer_end\n\n  .sound_mario_doh:\n  chan_setbank 8\n  chan_setinstr 16\n  chan_setlayer 0, .layer_E94\n  chan_end\n\n  .layer_E94:\n  layer_note1 41, 0x46, 127\n  layer_end\n\n  .sound_mario_game_over:\n  chan_setbank 8\n  chan_setinstr 17\n  chan_setlayer 0, .layer_EA0\n  chan_end\n\n  .layer_EA0:\n  layer_note1 39, 0x55, 110\n  layer_end\n\n  .sound_mario_hello:\n  chan_setbank 8\n  chan_setinstr 18\n  chan_setlayer 0, .layer_EAC\n  chan_end\n\n  .layer_EAC:\n  layer_note1 39, 0x46, 127\n  layer_end\n\n  .sound_mario_press_start_to_play:\n  chan_setbank 8\n  chan_setinstr 19\n  chan_setlayer 0, .layer_EB8\n  chan_end\n\n  .layer_EB8:\n  layer_note1 39, 0x12c, 127\n  layer_end\n\n  .sound_mario_twirl_bounce:\n  chan_setbank 8\n  chan_setinstr 20\n  chan_setlayer 0, .layer_EC5\n  chan_end\n\n  .layer_EC5:\n  layer_note1 39, 0x30, 127\n  layer_end\n\n  .sound_mario_snoring3:\n  chan_setbank 8\n  chan_setlayer 0, .layer_ECF\n  chan_end\n\n  .layer_ECF:\n  layer_delay 0x4e\n  .layer_ED1:\n  layer_loop 50\n  layer_call .layer_fn_EE1\n  layer_loopend\n  layer_setinstr 21\n  layer_note1 39, 0x44c, 127\n  layer_jump .layer_ED1\n  layer_end\n\n  .layer_fn_EE1:\n  layer_setinstr 21\n  layer_note1 37, 0x53, 127\n  layer_setinstr 15\n  layer_note1 37, 0x4e, 64\n  layer_end\n\n  .sound_mario_so_longa_bowser:\n  chan_setbank 8\n  chan_setinstr 22\n  chan_setlayer 0, .layer_EF7\n  chan_setlayer 1, .layer_EF7\n  chan_end\n\n  .layer_EF7:\n  layer_portamento 0x82, 42, 200\n  layer_note1 39, 0xc8, 110\n  layer_end\n\n  .sound_mario_ima_tired:\n  chan_setbank 8\n  chan_setinstr 23\n  chan_setlayer 0, .layer_F08\n  chan_end\n\n  .layer_F08:\n  layer_note1 39, 0x96, 110\n  layer_end\n\n  .sound_peach_mario:\n  chan_setbank 10\n  chan_setinstr 16\n  chan_setlayer 0, .layer_F18\n  chan_setlayer 1, .layer_F18\n  chan_end\n\n  .layer_F18:\n  layer_note1 39, 0x46, 127\n  layer_end\n\n  .sound_peach_power_of_the_stars:\n  chan_setbank 10\n  chan_setinstr 17\n  chan_setlayer 0, .layer_F27\n  chan_setlayer 1, .layer_F27\n  chan_end\n\n  .layer_F27:\n  layer_note1 39, 0x15e, 127\n  layer_end\n\n  .sound_peach_thanks_to_you:\n  chan_setbank 10\n  chan_setinstr 18\n  chan_setlayer 0, .layer_F37\n  chan_setlayer 1, .layer_F37\n  chan_end\n\n  .layer_F37:\n  layer_note1 39, 0xb4, 127\n  layer_end\n\n  .sound_peach_thank_you_mario:\n  chan_setbank 10\n  chan_setinstr 19\n  chan_setlayer 0, .layer_F47\n  chan_setlayer 1, .layer_F47\n  chan_end\n\n  .layer_F47:\n  layer_note1 39, 0x64, 127\n  layer_end\n\n  .sound_peach_something_special:\n  chan_setbank 10\n  chan_setinstr 20\n  chan_setlayer 0, .layer_F56\n  chan_setlayer 1, .layer_F56\n  chan_end\n\n  .layer_F56:\n  layer_note1 39, 0xdc, 127\n  layer_end\n\n  .sound_peach_bake_a_cake:\n  chan_setbank 10\n  chan_setinstr 21\n  chan_setlayer 0, .layer_F66\n  chan_setlayer 1, .layer_F66\n  chan_end\n\n  .layer_F66:\n  layer_note1 39, 0x190, 127\n  layer_end\n\n  .sound_peach_for_mario:\n  chan_setbank 10\n  chan_setinstr 22\n  chan_setlayer 0, .layer_F76\n  chan_setlayer 1, .layer_F76\n  chan_end\n\n  .layer_F76:\n  layer_note1 39, 0x50, 127\n  layer_end\n\n  .sound_peach_mario2:\n  chan_setbank 10\n  chan_setinstr 23\n  chan_setval 20\n  chan_call .set_reverb\n  chan_setlayer 0, .layer_F8A\n  chan_setlayer 1, .layer_F8A\n  chan_end\n\n  .layer_F8A:\n  layer_note1 39, 0x50, 127\n  layer_end\n#endif\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n  .chan_unused_F9A_eu:\n  chan_setbank 8\n  chan_setinstr 0\n  chan_setlayer 0, .layer_FA2_eu\n  chan_end\n\n  .layer_FA2_eu:\n  layer_delay 0x5\n  layer_end\n#endif\n\n.channel38_table:\nsound_ref .sound_general_activate_cap_switch\nsound_ref .sound_menu_enter_hole\nsound_ref .sound_menu_enter_hole\nsound_ref .sound_general_flame_out\nsound_ref .sound_general_open_wood_door\nsound_ref .sound_general_close_wood_door\nsound_ref .sound_general_open_iron_door\nsound_ref .sound_general_close_iron_door\nsound_ref .sound_general_bubbles\nsound_ref .sound_general_moving_water\nsound_ref .sound_general_swish_water\nsound_ref .sound_general_quiet_bubble\nsound_ref .sound_general_volcano_explosion\nsound_ref .sound_general_quiet_bubble2\nsound_ref .sound_general_castle_trap_open\nsound_ref .sound_general_wall_explosion\nsound_ref .sound_general_coin\nsound_ref .sound_general_coin\nsound_ref .sound_general_coin_water\nsound_ref .sound_general_coin_water\nsound_ref .sound_general_coin_water\nsound_ref .sound_general_coin_water\nsound_ref .sound_general_short_star\nsound_ref .sound_general_big_clock\nsound_ref .sound_general_loud_pound\nsound_ref .sound_general_loud_pound\nsound_ref .sound_general_short_pound\nsound_ref .sound_general_short_pound\nsound_ref .sound_general_short_pound\nsound_ref .sound_general_short_pound\nsound_ref .sound_general_short_pound\nsound_ref .sound_general_short_pound\nsound_ref .sound_general_open_chest\nsound_ref .sound_general_open_chest\nsound_ref .sound_general_clam_shell1\nsound_ref .sound_general_clam_shell1\nsound_ref .sound_general_box_landing\nsound_ref .chan_12EB\nsound_ref .sound_general_clam_shell2\nsound_ref .sound_general_clam_shell3\nsound_ref .sound_general_painting_eject\nsound_ref .sound_general_painting_eject\nsound_ref .sound_general_painting_eject\nsound_ref .sound_general_painting_eject\nsound_ref .sound_menu_star_sound\nsound_ref .sound_general_platform\nsound_ref .sound_general_bobomb_explosion\nsound_ref .sound_general_bowser_bomb_explosion\nsound_ref .sound_general_coin_spurt\nsound_ref .sound_general_explosion6\nsound_ref .chan_13D4\nsound_ref .sound_general_coin\nsound_ref .sound_general_boat_tilt1\nsound_ref .sound_general_boat_tilt2\nsound_ref .sound_general_coin_drop\nsound_ref .chan_1429\nsound_ref .sound_general_pendulum_swing\nsound_ref .sound_general_chain_chomp1\nsound_ref .sound_general_chain_chomp2\nsound_ref .sound_general_door_turn_key\nsound_ref .sound_general_moving_in_sand\nsound_ref .chan_1519\nsound_ref .sound_general_moving_platform_switch\nsound_ref .sound_general_cage_open\nsound_ref .sound_general_quiet_pound1\nsound_ref .sound_general_break_box\nsound_ref .sound_general_door_insert_key\nsound_ref .sound_general_quiet_pound2\nsound_ref .sound_general_big_pound\nsound_ref .chan_15CD\nsound_ref .chan_15DA\nsound_ref .sound_general_cannon_up\nsound_ref .sound_general_grindel_spindel_roll\nsound_ref .sound_general_explosion7\nsound_ref .sound_general_shake_coffin\nsound_ref .sound_general_pyramid_top_spin\nsound_ref .sound_general_pyramid_top_explosion\nsound_ref .sound_general_race_gun_shot\nsound_ref .sound_general_star_door_open\nsound_ref .sound_general_star_door_close\nsound_ref .sound_general_bird_chirp2\nsound_ref .sound_obj_bird_chirp3\nsound_ref .sound_obj_bird_chirp1\nsound_ref .sound_air_castle_outdoors_ambient\nsound_ref .sound_general_switch_tick_fast\nsound_ref .sound_general_switch_tick_slow\nsound_ref .sound_general_pound_rock\nsound_ref .sound_general_star_appears\nsound_ref .sound_general_collect_1up\nsound_ref .sound_general_rotating_block_alert\nsound_ref .sound_general_button_press\nsound_ref .sound_general_elevator_move\nsound_ref .sound_general_swish_air\nsound_ref .sound_general_haunted_chair\nsound_ref .sound_general_soft_landing\nsound_ref .sound_general_haunted_chair_move\nsound_ref .sound_general_bowser_explode\nsound_ref .sound_general_bowser_key\nsound_ref .sound_general_bowser_platform\nsound_ref .sound_general_1up_appear\nsound_ref .sound_general_heart_spin\nsound_ref .sound_general_pound_wood_post\nsound_ref .sound_general_water_level_trig\nsound_ref .sound_general_switch_door_open\nsound_ref .sound_general_red_coin\nsound_ref .sound_general_birds_fly_away\nsound_ref .sound_general_right_answer\nsound_ref .sound_general_metal_pound\nsound_ref .sound_general_boing1\nsound_ref .sound_general_boing2\nsound_ref .sound_general_yoshi_walk\nsound_ref .sound_general_enemy_alert1\nsound_ref .sound_general_yoshi_talk\nsound_ref .sound_general_splattering\nsound_ref .sound_general_boing3\nsound_ref .sound_general_grand_star\nsound_ref .sound_general_grand_star_jump\nsound_ref .sound_general_boat_rock\n#ifdef VERSION_JP\n  sound_ref .sound_menu_enter_hole\n  sound_ref .sound_menu_enter_hole\n  sound_ref .sound_menu_enter_hole\n  sound_ref .sound_general_open_wood_door\n  sound_ref .sound_general_close_wood_door\n  sound_ref .sound_general_open_iron_door\n  sound_ref .sound_general_close_iron_door\n  sound_ref .sound_general_bubbles\n  sound_ref .sound_menu_enter_hole\n  sound_ref .sound_menu_enter_hole\n#else\n  sound_ref .sound_general_vanish_sfx\n  sound_ref .sound_menu_enter_hole\n  sound_ref .sound_general_red_coin\n  sound_ref .sound_general_birds_fly_away\n  sound_ref .sound_general_right_answer\n  sound_ref .sound_general_metal_pound\n  sound_ref .sound_general_boing1\n  sound_ref .sound_general_boing2\n  sound_ref .sound_general_yoshi_walk\n  sound_ref .sound_general_enemy_alert1\n#endif\n\n.sound_general_activate_cap_switch:\nchan_setbank 5\nchan_setinstr 7\nchan_setlayer 0, .layer_109F\nchan_delay 1\nchan_setbank 4\nchan_setinstr 9\nchan_setlayer 1, .layer_1537\nchan_end\n\n.layer_109F:\nlayer_portamento 0x1, 27, 0x28\nlayer_note1 37, 0x7f, 120\nlayer_end\n\n.sound_menu_enter_hole:\nchan_setbank 4\nchan_setinstr 0\nchan_setlayer 0, .layer_10AF\nchan_end\n\n.layer_10AF:\nlayer_note1 39, 0x30, 85\nlayer_end\n\n.sound_general_flame_out:\nchan_setbank 3\nchan_setinstr 8\nchan_setenvelope .envelope_3314\nchan_setlayer 0, .layer_10BE\nchan_end\n\n.layer_10BE:\nlayer_somethingon\nlayer_portamento 0x85, 34, 255\nlayer_note1 43, 0x8, 127\nlayer_note1 27, 0x7f, 127\nlayer_end\n\n.sound_general_open_wood_door:\nchan_setbank 4\nchan_setinstr 1\nchan_setlayer 0, .layer_10D2\nchan_end\n\n.layer_10D2:\nlayer_note1 39, 0x18, 100\nlayer_setinstr 2\nlayer_note1 39, 0x48, 60\nlayer_end\n\n.sound_general_close_wood_door:\nchan_setbank 4\nchan_setinstr 1\nchan_setlayer 0, .layer_10E3\nchan_end\n\n.layer_10E3:\nlayer_note1 37, 0x6, 100\nlayer_note1 34, 0x18, 100\nlayer_end\n\n.sound_general_open_iron_door:\nchan_setbank 4\nchan_setinstr 4\nchan_setlayer 0, .layer_10FE\nchan_setlayer 1, .layer_1108\nchan_setval 6\nchan_call .delay\nchan_setbank 4\nchan_setinstr 3\nchan_end\n\n.layer_10FE:\nlayer_delay 0xf\nlayer_portamento 0x81, 39, 255\nlayer_note1 44, 0x38, 115\nlayer_end\n\n.layer_1108:\nlayer_portamento 0x81, 44, 255\nlayer_note1 34, 0x2c, 85\nlayer_end\n\n.sound_general_close_iron_door:\nchan_setbank 4\nchan_setinstr 4\nchan_setlayer 0, .layer_1118\nchan_end\n\n.layer_1118:\nlayer_note1 39, 0x30, 115\nlayer_end\n\n.sound_general_bubbles:\nchan_setbank 4\nchan_setinstr 6\nchan_setlayer 0, .layer_1124\nchan_end\n\n.layer_1124:\nlayer_transpose 24\nlayer_note1 39, 0xa, 65\nlayer_note1 39, 0x9, 70\nlayer_note1 39, 0x8, 75\nlayer_end\n\n.sound_general_moving_water:\nchan_setbank 4\nchan_setinstr 5\nchan_setlayer 0, .layer_1138\nchan_end\n\n.layer_1138:\nlayer_note1 39, 0x91, 127\nlayer_end\n\n.sound_obj_sushi_shark_water_sound:\nchan_setbank 4\nchan_setinstr 5\nchan_setlayer 0, .layer_1145\nchan_end\n\n.layer_1145:\nlayer_portamento 0x81, 27, 255\nlayer_note1 32, 0x60, 127\nlayer_end\n\n.sound_general_quiet_bubble:\nchan_setbank 4\nchan_setinstr 6\nchan_setlayer 0, .layer_1155\nchan_end\n\n.layer_1155:\nlayer_note1 39, 0x14, 70\nlayer_end\n\n.sound_general_volcano_explosion:\nchan_setbank 4\nchan_setinstr 15\nchan_setlayer 0, .layer_1161\nchan_end\n\n.layer_1161:\nlayer_note1 32, 0x18, 127\nlayer_portamento 0x81, 41, 255\nlayer_note1 27, 0x96, 127\nlayer_end\n\n.sound_general_quiet_bubble2:\nchan_setbank 4\nchan_setinstr 6\nchan_setlayer 0, .layer_1175\nchan_end\n\n.layer_1175:\nlayer_portamento 0x81, 34, 255\nlayer_note1 37, 0x18, 80\nlayer_end\n\n.sound_general_castle_trap_open:\nchan_setbank 4\nchan_setinstr 8\nchan_setlayer 0, .layer_1185\nchan_end\n\n.layer_1185:\nlayer_note1 39, 0x40, 120\nlayer_end\n\n.sound_general_wall_explosion:\nchan_setbank 5\nchan_setinstr 7\nchan_setlayer 0, .layer_109F\nchan_setval 1\nchan_call .delay\nchan_setbank 4\nchan_setinstr 9\nchan_setlayer 1, .layer_119D\nchan_end\n\n.layer_119D:\nlayer_transpose -12\n\n.layer_fn_119F:\nlayer_portamento 0x83, 27, 255\nlayer_note0 55, 0x4, 127, 64\nlayer_note0 51, 0x5, 127, 64\nlayer_note0 48, 0x4, 127, 64\nlayer_note0 44, 0x6, 127, 64\nlayer_note0 41, 0x9, 127, 64\nlayer_note0 39, 0x6, 127, 64\n.layer_11BB:\nlayer_note0 37, 0x7, 127, 64\nlayer_note0 34, 0x5, 127, 64\nlayer_note0 31, 0x8, 127, 64\nlayer_note0 29, 0x9, 127, 64\nlayer_note0 24, 0x8, 127, 64\nlayer_end\n\n.sound_general_coin:\nchan_setbank 9\nchan_setinstr 3\nchan_setenvelope .envelope_3358\nchan_setvibratoextent 3\nchan_setvibratorate 60\nchan_setval 25\nchan_call .set_reverb\nchan_setlayer 0, .layer_11E4\nchan_end\n\n.layer_11E4:\nlayer_transpose 24\n\n.layer_fn_11E6:\nlayer_note1 25, 0x2, 40\nlayer_note1 37, 0x7, 85\nlayer_note1 30, 0x5, 40\nlayer_note1 42, 0x37, 85\nlayer_end\n\n.sound_general_coin_water:\nchan_setbank 9\nchan_setinstr 3\nchan_setenvelope .envelope_3358\nchan_setvibratoextent 12\nchan_setval 25\nchan_call .set_reverb\nchan_setlayer 0, .layer_1242\nchan_setlayer 1, .layer_1254\nchan_setval 1\nchan_call .delay\nchan_setbank 4\nchan_setinstr 6\nchan_setval 1\nchan_call .delay\nchan_setbank 9\nchan_setinstr 3\nchan_setenvelope .envelope_3358\nchan_setval 9\nchan_call .delay\nchan_setbank 4\nchan_setinstr 6\nchan_setval 3\nchan_call .delay\nchan_setbank 9\nchan_setinstr 3\nchan_setenvelope .envelope_3358\nchan_setval 6\nchan_call .delay\nchan_setbank 4\nchan_setinstr 6\nchan_setval 49\nchan_call .delay\nchan_setvibratoextent 0\nchan_end\n\n.layer_1242:\nlayer_delay 1\nlayer_setinstr 6\nlayer_transpose 22\nlayer_note1 39, 0xa, 55\nlayer_note1 39, 0x9, 60\nlayer_note1 39, 0x8, 65\nlayer_delay 0x29\nlayer_end\n\n.layer_1254:\nlayer_transpose 23\nlayer_call .layer_fn_11E6\nlayer_end\n\n.sound_general_short_star:\nchan_setbank 4\nchan_setinstr 14\nchan_setenvelope .envelope_33FC\nchan_setlayer 0, .layer_1265\nchan_end\n\n.layer_1265:\nlayer_portamento 0x81, 34, 127\nlayer_note1 38, 0x30, 127\nlayer_delay 0x30\nlayer_end\n\n.sound_general_big_clock:\nchan_setbank 4\nchan_setinstr 9\nchan_setlayer 0, .layer_1277\nchan_end\n\n.layer_1277:\nlayer_note1 37, 0xa, 100\nlayer_note1 26, 0x12, 120\nlayer_end\n\n.sound_general_loud_pound:\nchan_setbank 4\nchan_setinstr 10\nchan_setlayer 0, .layer_1286\nchan_end\n\n.layer_1286:\nlayer_note1 39, 0xf, 120\nlayer_end\n\n.sound_general_short_pound:\nchan_setbank 4\nchan_setinstr 10\nchan_setlayer 0, .layer_1292\nchan_end\n\n.layer_1292:\nlayer_note1 37, 0x12, 120\nlayer_end\n\n.sound_general_open_chest:\nchan_setbank 7\nchan_setinstr 1\nchan_setval 25\nchan_call .set_reverb\nchan_setlayer 0, .layer_12AF\nchan_setlayer 1, .layer_12AF\nchan_setval 6\nchan_call .delay\nchan_setbank 4\nchan_setinstr 4\nchan_end\n\n.layer_12AF:\nlayer_note1 43, 0x5, 127\nlayer_note1 62, 0x9, 127\nlayer_setinstr 2\nlayer_portamento 0x81, 27, 255\nlayer_note1 25, 0x5a, 108\nlayer_end\n\n.sound_general_clam_shell1:\nchan_setbank 4\nchan_setinstr 11\nchan_setlayer 0, .layer_12C7\nchan_end\n\n.layer_12C7:\nlayer_note1 24, 0xa, 110\n.layer_12CA:\nlayer_setinstr 5\nlayer_portamento 0x82, 27, 255\nlayer_note1 32, 0x73, 127\nlayer_end\n\n.sound_general_box_landing:\nchan_setbank 4\nchan_setinstr 1\nchan_setenvelope .envelope_33CC\nchan_setlayer 0, .layer_12DF\nchan_end\n\n.layer_12DF:\nlayer_somethingon\nlayer_note1 39, 0x4, 127\nlayer_portamento 0x82, 36, 255\nlayer_note1 27, 0x9, 115\nlayer_end\n\n.chan_12EB:\nchan_setbank 4\nchan_setinstr 2\nchan_setenvelope .envelope_3454\nchan_setlayer 0, .layer_12F9\nchan_setlayer 1, .layer_12FB\nchan_end\n\n.layer_12F9:\nlayer_transpose 3\n\n.layer_12FB:\nlayer_portamento 0x2, 17, 0x28\nlayer_note1 5, 0x60, 127\nlayer_end\n\n.sound_general_clam_shell2:\nchan_setbank 4\nchan_setinstr 11\nchan_setlayer 0, .layer_130B\nchan_end\n\n.layer_130B:\nlayer_note1 19, 0x6, 110\nlayer_note1 31, 0x6, 110\nlayer_transpose 8\nlayer_jump .layer_12CA\n\n.sound_general_clam_shell3:\nchan_setbank 4\nchan_setinstr 5\nchan_setlayer 0, .layer_131E\nchan_end\n\n.layer_131E:\nlayer_setinstr 11\nlayer_note1 31, 0x6, 127\nlayer_note1 19, 0x6, 127\nlayer_setinstr 5\nlayer_portamento 0x82, 20, 255\nlayer_note1 32, 0x5a, 127\nlayer_end\n\n.sound_general_painting_eject:\nchan_setbank 4\nchan_setinstr 13\nchan_setlayer 0, .layer_1338\nchan_end\n\n.layer_1338:\nlayer_note1 39, 0x73, 95\nlayer_end\n\n.sound_menu_star_sound:\nchan_setbank 4\nchan_setinstr 14\nchan_setlayer 0, .layer_1344\nchan_end\n\n.layer_1344:\nlayer_note1 39, 0x7f, 115\nlayer_end\n\n.sound_general_platform:\nchan_setbank 4\nchan_setinstr 15\nchan_setlayer 0, .layer_1350\nchan_end\n\n.layer_1350:\nlayer_note0 36, 0xd, 115, 20\nlayer_note0 34, 0xe, 115, 20\nlayer_note0 32, 0xd, 115, 20\nlayer_note0 31, 0xa, 115, 20\nlayer_note0 30, 0x7, 115, 20\nlayer_note0 29, 0x60, 115, 20\nlayer_end\n\n.sound_general_bobomb_explosion:\nchan_setbank 4\nchan_setinstr 15\nchan_setenvelope .envelope_33EC\nchan_setlayer 0, .layer_137B\nchan_setlayer 1, .layer_1377\nchan_end\n\n.layer_1377:\nlayer_note1 15, 0x7f, 127\nlayer_end\n\n.layer_137B:\nlayer_note1 55, 0x6, 115\nlayer_note1 43, 0xc, 115\nlayer_note1 34, 0x7f, 127\nlayer_end\n\n.sound_general_bowser_bomb_explosion:\nchan_setbank 4\nchan_setinstr 15\nchan_setlayer 0, .layer_1395\nchan_setlayer 1, .layer_13A0\nchan_setlayer 2, .layer_1393\nchan_end\n\n.layer_1393:\nlayer_transpose 6\n\n.layer_1395:\nlayer_note1 44, 0x7, 127\nlayer_note1 39, 0x8, 127\nlayer_note1 36, 0x96, 127\nlayer_end\n\n.layer_13A0:\nlayer_note1 22, 0x96, 127\nlayer_end\n\n.sound_general_coin_spurt:\nchan_setbank 9\nchan_setinstr 3\nchan_setval 20\nchan_call .set_reverb\nchan_setlayer 0, .layer_13B2\nchan_end\n\n.layer_13B2:\nlayer_portamento 0x81, 36, 255\nlayer_note1 48, 0x6, 80\nlayer_end\n\n.sound_general_explosion6:\nchan_setbank 4\nchan_setinstr 15\nchan_setenvelope .envelope_33EC\nchan_setlayer 0, .layer_13C8\nchan_setlayer 1, .layer_13D0\nchan_end\n\n.layer_13C8:\nlayer_portamento 0x81, 56, 255\nlayer_note1 20, 0x78, 80\nlayer_end\n\n.layer_13D0:\nlayer_note1 15, 0x78, 127\nlayer_end\n\n.chan_13D4:\nchan_setbank 4\nchan_setinstr 6\nchan_setlayer 0, .layer_13DC\nchan_end\n\n.layer_13DC:\nlayer_portamento 0x81, 37, 255\nlayer_note1 39, 0x8, 127\nlayer_setinstr 5\nlayer_portamento 0x81, 20, 255\nlayer_note1 25, 0x60, 127\nlayer_end\n\n.sound_general_boat_tilt1:\nchan_setbank 4\nchan_setinstr 2\nchan_setlayer 0, .layer_13F5\nchan_end\n\n.layer_13F5:\nlayer_portamento 0x81, 12, 255\nlayer_note1 13, 0x6e, 127\nlayer_end\n\n.sound_general_boat_tilt2:\nchan_setbank 4\nchan_setinstr 2\nchan_setlayer 0, .layer_1405\nchan_end\n\n.layer_1405:\nlayer_portamento 0x81, 15, 255\nlayer_note1 11, 0x6e, 127\nlayer_end\n\n.sound_general_coin_drop:\nchan_setbank 9\nchan_setinstr 3\nchan_setval 40\nchan_call .set_reverb\n#if defined(VERSION_SH) || defined(VERSION_CN)\n  chan_setreverb 40\n#endif\nchan_setlayer 0, .layer_141A\nchan_end\n\n.layer_141A:\nlayer_transpose 24\n#if defined(VERSION_SH) || defined(VERSION_CN)\n  layer_note1 51, 0xc, 90\n#endif\nlayer_note1 39, 0x4, 90\nlayer_note1 51, 0xc, 90\nlayer_note1 39, 0x4, 50\nlayer_note1 51, 0xc, 50\nlayer_end\n\n.chan_1429:\nchan_setbank 9\nchan_setinstr 3\nchan_setval 40\nchan_call .set_reverb\nchan_setlayer 0, .layer_1436\nchan_end\n\n.layer_1436:\nlayer_transpose 12\nlayer_note1 39, 0x3, 90\nlayer_note1 51, 0x3, 90\nlayer_note1 27, 0xa, 115\nlayer_note1 39, 0x3, 50\nlayer_note1 51, 0x3, 50\nlayer_note1 27, 0xa, 75\nlayer_end\n\n.sound_general_pendulum_swing:\nchan_setbank 4\nchan_setinstr 9\nchan_setval 50\nchan_call .set_reverb\nchan_setlayer 0, .layer_1463\nchan_setval 13\nchan_call .delay\nchan_setdecayrelease 30\nchan_setbank 4\nchan_setinstr 2\nchan_end\n\n.layer_1463:\nlayer_note1 33, 0xc, 100\nlayer_note1 25, 0x28, 120\nlayer_portamento 0x81, 22, 255\nlayer_note1 15, 0x48, 80\nlayer_end\n\n.sound_general_chain_chomp1:\nchan_setbank 1\nchan_setinstr 1\nchan_setval 15\nchan_call .set_reverb\nchan_setlayer 0, .layer_148A\nchan_setval 1\nchan_call .delay\nchan_setbank 1\nchan_setinstr 7\nchan_setenvelope .envelope_3368\nchan_end\n\n.layer_148A:\nlayer_note1 29, 0xc, 120\nlayer_transpose 12\nlayer_portamento 0x81, 51, 255\nlayer_note1 53, 0x6, 118\nlayer_portamento 0x81, 52, 255\nlayer_note1 54, 0x9, 118\nlayer_end\n\n.sound_general_chain_chomp2:\nchan_setbank 7\n#ifdef VERSION_JP\n  chan_setinstr 8\n#else\n  chan_setinstr 14\n#endif\nchan_setval 15\nchan_call .set_reverb\nchan_setlayer 0, .layer_14C6\nchan_setlayer 1, .layer_14E3\n#ifndef VERSION_JP\n  chan_setlayer 2, .layer_14E3\n#endif\nchan_setval 1\nchan_call .delay\nchan_setenvelope .envelope_3368\nchan_setbank 1\nchan_setinstr 7\nchan_setval 13\nchan_call .delay\nchan_setbank 7\n#ifdef VERSION_JP\n  chan_setinstr 8\n#else\n  chan_setinstr 14\n#endif\nchan_end\n\n.layer_14C6:\nlayer_delay 1\nlayer_transpose 12\nlayer_portamento 0x81, 54, 255\nlayer_note0 55, 0x6, 118, 127\nlayer_portamento 0x81, 55, 255\nlayer_note0 56, 0x5, 118, 127\nlayer_portamento 0x81, 57, 255\nlayer_note0 58, 0xc, 118, 127\nlayer_end\n\n.layer_14E3:\nlayer_loop 2\n#ifdef VERSION_JP\n  layer_portamento 0x81, 36, 255\n  layer_note1 24, 0x18, 127\n#else\n  layer_note1 34, 0x19, 100\n#endif\nlayer_loopend\nlayer_end\n\n.sound_general_door_turn_key:\nchan_setbank 4\nchan_setinstr 9\nchan_setlayer 0, .layer_14F2\nchan_end\n\n.layer_14F2:\nlayer_note0 31, 0x12, 80, 80\nlayer_portamento 0x82, 53, 255\nlayer_note1 44, 0x7, 88\nlayer_end\n\n.sound_general_moving_in_sand:\nchan_setbank 3\nchan_setinstr 5\nchan_setenvelope .envelope_32D4\nchan_setval 10\nchan_call .set_reverb\nchan_setlayer 0, .layer_150E\nchan_end\n\n.layer_150E:\nlayer_note1 41, 0x4, 100\nlayer_note0 34, 0x14, 100, 100\nlayer_note1 29, 0x6, 115\nlayer_end\n\n.chan_1519:\nchan_setval 10\nchan_call .set_reverb\nchan_setlayer 0, .layer_152B\nchan_setlayer 1, .layer_1529\nchan_setbank 4\nchan_setinstr 1\nchan_end\n\n.layer_1529:\nlayer_transpose 1\n\n.layer_152B:\nlayer_note1 15, 0x2c, 127\nlayer_end\n\n.sound_general_moving_platform_switch:\nchan_setbank 4\nchan_setinstr 9\nchan_setlayer 0, .layer_1539\nchan_end\n\n.layer_1537:\nlayer_transpose -3\n\n.layer_1539:\nlayer_note1 39, 0x6, 120\nlayer_portamento 0x81, 15, 255\nlayer_note1 8, 0xc, 120\nlayer_portamento 0x81, 27, 255\nlayer_note1 3, 0x18, 120\nlayer_end\n\n.sound_general_cage_open:\nchan_setbank 4\nchan_setinstr 3\nchan_setval 30\nchan_call .set_reverb\nchan_setlayer 0, .layer_1558\nchan_end\n\n.layer_1558:\nlayer_portamento 0x81, 19, 40\nlayer_note1 22, 0xb4, 115\nlayer_end\n\n.sound_general_quiet_pound1:\nchan_setbank 5\nchan_setinstr 5\nchan_setenvelope .envelope_3344\nchan_setval 20\nchan_call .set_reverb\nchan_setlayer 0, .layer_1571\nchan_end\n\n.layer_1571:\nlayer_note1 14, 0x34, 110\nlayer_delay 0x14\nlayer_end\n\n.sound_general_break_box:\nchan_setbank 5\nchan_setinstr 7\nchan_setlayer 0, .layer_1582\nchan_setlayer 1, .layer_1582\nchan_end\n\n.layer_1582:\nlayer_somethingon\nlayer_portamento 0x85, 39, 255\nlayer_note1 36, 0x14, 110\nlayer_note1 38, 0x10, 110\nlayer_note1 27, 0x64, 110\nlayer_end\n\n.sound_general_door_insert_key:\nchan_setbank 4\nchan_setinstr 9\nchan_setlayer 0, .layer_1599\nchan_end\n\n.layer_1599:\nlayer_note0 36, 0xa, 80, 80\nlayer_note0 24, 0xa, 80, 80\nlayer_end\n\n.sound_general_quiet_pound2:\nchan_setbank 6\nchan_setinstr 15\nchan_setlayer 0, .layer_15AA\nchan_end\n\n.layer_15AA:\nlayer_somethingon\nlayer_portamento 0x85, 35, 255\nlayer_note1 34, 0x60, 127\nlayer_note1 32, 0x60, 127\nlayer_note1 32, 0x30, 127\nlayer_end\n\n.sound_general_big_pound:\nchan_setbank 6\nchan_setinstr 1\nchan_setval 55\nchan_call .set_reverb\nchan_setlayer 0, .layer_15C6\nchan_end\n\n.layer_15C6:\nlayer_note1 32, 0xc, 127\nlayer_note1 27, 0x30, 127\nlayer_end\n\n.chan_15CD:\nchan_setbank 6\nchan_setinstr 15\nchan_setlayer 0, .layer_15D5\nchan_end\n\n.layer_15D5:\nlayer_note1 31, 0xc0, 127\nlayer_end\n\n.chan_15DA:\nchan_setbank 7\nchan_setinstr 1\nchan_setlayer 0, .layer_15EB\nchan_setval 1\nchan_call .delay\nchan_setbank 5\nchan_setinstr 5\nchan_end\n\n.layer_15EB:\nlayer_note1 24, 0xc, 127\nlayer_note1 22, 0x48, 127\nlayer_end\n\n.sound_general_cannon_up:\nchan_setbank 6\nchan_setinstr 10\nchan_setlayer 0, .layer_15FA\nchan_end\n\n.layer_15FA:\nlayer_note1 44, 0xfa, 127\nlayer_end\n\n.sound_general_grindel_spindel_roll:\nchan_setbank 6\nchan_setinstr 1\nchan_setval 25\nchan_call .set_reverb\nchan_setlayer 0, .layer_160C\nchan_end\n\n.layer_160C:\nlayer_note1 29, 0xc, 120\nlayer_note1 24, 0x24, 120\nlayer_end\n\n.sound_general_explosion7:\nchan_setbank 3\nchan_setinstr 5\nchan_setenvelope .envelope_3358\nchan_setlayer 0, .layer_162D\nchan_setlayer 1, .layer_1637\nchan_setval 1\nchan_call .delay\nchan_setbank 4\nchan_setinstr 15\nchan_setenvelope .envelope_3358\nchan_end\n\n.layer_162D:\nlayer_delay 1\nlayer_note1 36, 0xc, 127\nlayer_note1 32, 0x96, 127\nlayer_end\n\n.layer_1637:\nlayer_note1 24, 0x60, 127\nlayer_end\n\n.sound_general_shake_coffin:\nchan_setbank 6\nchan_setinstr 15\nchan_setenvelope .envelope_3304\nchan_setlayer 0, .layer_1646\nchan_end\n\n.layer_1646:\nlayer_note1 31, 0xa, 127\nlayer_note1 43, 0x10, 127\nlayer_end\n\n.sound_general_pyramid_top_spin:\nchan_setbank 4\nchan_setinstr 15\nchan_setval 30\nchan_call .set_reverb\nchan_setlayer 0, .layer_1660\nchan_setlayer 1, .layer_1669\nchan_setlayer 2, .layer_1665\nchan_end\n\n.layer_1660:\nlayer_note1 20, 0x226, 0\nlayer_end\n\n.layer_1665:\nlayer_delay 0x4\nlayer_transpose -12\n\n.layer_1669:\nlayer_note1 27, 0x4f, 93\nlayer_note1 28, 0x41, 99\nlayer_note1 29, 0x36, 101\nlayer_note1 30, 0x31, 109\nlayer_note1 36, 0xe, 113\nlayer_note1 38, 0x3b, 123\nlayer_note1 32, 0x27, 105\nlayer_note1 35, 0x60, 92\nlayer_note1 32, 0xe, 100\nlayer_note1 36, 0xb, 105\nlayer_note1 39, 0x31, 116\nlayer_end\n\n.sound_general_pyramid_top_explosion:\nchan_setbank 4\nchan_setinstr 15\nchan_setval 30\nchan_call .set_reverb\nchan_setenvelope .envelope_338C\nchan_setlayer 0, .layer_16A1\nchan_setlayer 1, .layer_16AA\nchan_setlayer 2, .layer_16A6\nchan_end\n\n.layer_16A1:\nlayer_note1 24, 0x12c, 127\nlayer_end\n\n.layer_16A6:\nlayer_delay 0x4\nlayer_transpose -12\n\n.layer_16AA:\nlayer_note1 46, 0xe, 116\nlayer_note1 44, 0xb, 121\nlayer_note1 48, 0x12, 101\nlayer_note1 41, 0xf, 109\nlayer_note1 43, 0xfa, 113\nlayer_end\n\n.sound_general_race_gun_shot:\nchan_setbank 5\nchan_setinstr 0\nchan_setval 127\nchan_call .set_reverb\nchan_setlayer 0, .layer_16CE\nchan_setlayer 1, .layer_16CE\nchan_setlayer 2, .layer_16D2\nchan_end\n\n.layer_16CE:\nlayer_note1 49, 0x3a, 127\nlayer_end\n\n.layer_16D2:\nlayer_delay 0xa\nlayer_note1 48, 0x30, 85\nlayer_end\n\n.sound_general_star_door_open:\nchan_setbank 6\nchan_setinstr 10\nchan_setenvelope .envelope_32D4\nchan_setlayer 0, .layer_16E3\nchan_end\n\n.layer_16E3:\nlayer_portamento 0x81, 51, 96\nlayer_note1 58, 0x40, 100\nlayer_end\n\n.sound_general_star_door_close:\nchan_setbank 6\nchan_setinstr 10\nchan_setenvelope .envelope_32D4\nchan_setlayer 0, .layer_16F6\nchan_end\n\n.layer_16F6:\nlayer_portamento 0x82, 51, 96\nlayer_note1 58, 0x40, 100\nlayer_end\n\n.sound_general_pound_rock:\nchan_setbank 6\nchan_setinstr 1\nchan_setval 55\nchan_call .set_reverb\nchan_setlayer 0, .layer_170B\nchan_end\n\n.layer_170B:\nlayer_note1 27, 0x7, 127\nlayer_note1 15, 0x12, 127\nlayer_end\n\n.sound_general_star_appears:\nchan_setbank 4\nchan_setinstr 14\nchan_setlayer 0, .layer_171A\nchan_end\n\n.layer_171A:\nlayer_portamento 0x81, 43, 127\nlayer_note1 31, 0x7f, 115\nlayer_end\n\n.sound_general_collect_1up:\nchan_setbank 9\nchan_setinstr 3\nchan_setenvelope .envelope_3358\nchan_setlayer 0, .layer_1734\nchan_setdecayrelease 50\nchan_setlayer 1, .layer_1732\nchan_end\n\n.layer_1732:\nlayer_delay 0x4\n\n.layer_1734:\nlayer_transpose 24\nlayer_note1 31, 0xc, 100\nlayer_note1 34, 0xc, 100\nlayer_note1 43, 0xc, 100\nlayer_note1 39, 0xc, 100\nlayer_note1 41, 0xc, 100\nlayer_note1 46, 0x18, 100\nlayer_end\n\n.sound_general_rotating_block_alert:\nchan_setbank 4\nchan_setinstr 9\nchan_setlayer 0, .layer_1751\nchan_end\n\n.layer_1751:\nlayer_call .layer_fn_1756\nlayer_transpose -4\n\n.layer_fn_1756:\nlayer_note1 27, 0x5, 105\nlayer_portamento 0x81, 15, 255\nlayer_note1 8, 0xa, 100\nlayer_end\n\n.sound_general_button_press:\nchan_setbank 4\nchan_setinstr 9\nchan_setlayer 0, .layer_1769\nchan_end\n\n.layer_1769:\nlayer_note1 8, 0x5, 127\nlayer_note1 18, 0x12, 127\nlayer_end\n\n.sound_general_elevator_move:\nchan_setbank 4\nchan_setinstr 9\nchan_setenvelope .envelope_33BC\nchan_setlayer 0, .layer_177B\nchan_end\n\n.layer_177B:\nlayer_portamento 0x82, 5, 255\nlayer_note1 8, 0xa, 127\nlayer_end\n\n.sound_general_swish_air:\nchan_setbank 0\nchan_setinstr 0\nchan_setlayer 0, .layer_178B\nchan_end\n\n.layer_178B:\nlayer_note1 44, 0x6, 100\nlayer_portamento 0x81, 44, 255\nlayer_note1 32, 0x12, 100\nlayer_end\n\n.sound_general_haunted_chair:\nchan_setbank 9\nchan_setinstr 3\nchan_setenvelope .envelope_3428\nchan_setlayer 0, .layer_17A1\nchan_end\n\n.layer_17A1:\nlayer_transpose 12\nlayer_portamento 0x85, 62, 255\nlayer_note1 38, 0x78, 93\nlayer_end\n\n.sound_general_soft_landing:\nchan_setbank 1\nchan_setinstr 1\nchan_setlayer 0, .layer_17B3\nchan_end\n\n.layer_17B3:\nlayer_note1 29, 0xc, 127\nlayer_end\n\n.sound_general_haunted_chair_move:\nchan_setbank 4\nchan_setinstr 1\nchan_setlayer 0, .layer_17C4\nchan_setlayer 1, .layer_17C2\nchan_end\n\n.layer_17C2:\nlayer_delay 1\n\n.layer_17C4:\nlayer_note1 34, 0x6, 127\nlayer_note1 33, 0x7, 127\nlayer_note1 33, 0x6, 127\nlayer_note1 34, 0x6, 127\nlayer_end\n\n.sound_general_bowser_explode:\nchan_setbank 6\nchan_setenvelope .envelope_32D4\nchan_setlayer 0, .layer_17E8\nchan_setval 1\nchan_call .delay\nchan_setenvelope .envelope_32D4\nchan_setlayer 1, .layer_17F3\nchan_setlayer 2, .layer_17EF\nchan_end\n\n.layer_17E8:\nlayer_setinstr 10\nlayer_transpose 24\nlayer_jump .layer_17F5\n\n.layer_17EF:\nlayer_delay 0x2\nlayer_transpose 12\n\n.layer_17F3:\nlayer_setinstr 0\n.layer_17F5:\nlayer_portamento 0x83, 3, 255\nlayer_note1 15, 0x30, 100\nlayer_note1 17, 0x2c, 100\nlayer_note1 19, 0x28, 100\nlayer_note1 20, 0x24, 100\nlayer_note1 22, 0x20, 100\nlayer_note1 24, 0x1c, 100\nlayer_note1 26, 0x18, 100\nlayer_note1 27, 0x14, 100\nlayer_note1 29, 0x11, 100\nlayer_note1 31, 0xe, 100\nlayer_note1 32, 0xc, 100\n.layer_181A:\nlayer_note1 34, 0xa, 100\nlayer_jump .layer_181A\nlayer_end\n\n.sound_general_bowser_key:\nchan_setbank 4\nchan_setinstr 14\nchan_setlayer 0, .layer_171A\nchan_setval 1\nchan_call .delay\nchan_setbank 4\nchan_setinstr 15\nchan_setenvelope .envelope_33EC\nchan_setlayer 1, .layer_137B\nchan_setval 100\nchan_call .delay\nchan_setbank 4\nchan_setinstr 14\nchan_setlayer 0, .layer_1844\nchan_end\n\n.layer_1844:\nlayer_transpose -6\nlayer_portamento 0x81, 43, 127\nlayer_note1 31, 0xfa, 115\nlayer_end\n\n.sound_general_bowser_platform:\nchan_setbank 4\nchan_setinstr 15\nchan_setlayer 0, .layer_185C\nchan_setlayer 1, .layer_185A\nchan_end\n\n.layer_185A:\nlayer_transpose 2\n\n.layer_185C:\nlayer_note1 39, 0xc, 127\nlayer_jump .layer_1350\n\n.sound_general_1up_appear:\nchan_setbank 4\nchan_setinstr 14\nchan_setlayer 0, .layer_186A\nchan_end\n\n.layer_186A:\nlayer_portamento 0x83, 39, 128\nlayer_note1 42, 0x2d, 115\nlayer_note1 42, 0x2d, 115\nlayer_note1 42, 0x2d, 115\nlayer_note1 44, 0x7f, 115\nlayer_end\n\n.sound_general_heart_spin:\nchan_setbank 9\nchan_setinstr 3\nchan_setval 30\nchan_call .set_reverb\nchan_setlayer 0, .layer_1888\nchan_end\n\n.layer_1888:\nlayer_transpose 12\nlayer_portamento 0x83, 3, 255\nlayer_note1 27, 0xa, 85\nlayer_note1 32, 0xa, 85\nlayer_note1 39, 0xa, 85\nlayer_note1 44, 0xa, 85\nlayer_note1 51, 0xa, 85\nlayer_note1 56, 0xa, 85\nlayer_note1 51, 0xa, 45\nlayer_note1 56, 0xa, 35\nlayer_end\n\n.sound_general_pound_wood_post:\nchan_setbank 5\nchan_setinstr 7\nchan_setlayer 0, .layer_18B8\nchan_delay 1\nchan_setbank 4\nchan_setinstr 9\nchan_setlayer 1, .layer_1537\nchan_end\n\n.layer_18B8:\nlayer_portamento 0x1, 27, 0x28\nlayer_note1 32, 0x32, 120\nlayer_end\n\n.sound_general_water_level_trig:\nchan_setbank 6\nchan_setinstr 11\nchan_setlayer 0, .layer_2DBF\nchan_setval 9\nchan_call .delay\nchan_setbank 9\nchan_setinstr 3\nchan_setenvelope .envelope_3454\nchan_setlayer 0, .layer_2D26\nchan_end\n\n.sound_general_switch_door_open:\nchan_setbank 4\nchan_setinstr 9\nchan_setlayer 0, .layer_1539\nchan_setval 12\nchan_call .delay\nchan_setbank 6\nchan_setinstr 1\nchan_setlayer 0, .layer_18EB\nchan_end\n\n.layer_18EB:\nlayer_portamento 0x82, 15, 255\nlayer_note1 31, 0x14, 127\nlayer_end\n\n.sound_general_red_coin:\n#ifdef VERSION_JP\n  chan_setbank 9\n  chan_setinstr 3\n  chan_setlayer 0, .layer_1909\n  chan_setlayer 1, .layer_1902\n  chan_setlayer 2, .layer_1907\n#else\n  #if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    chan_setbank 9\n    chan_setinstr 3\n  #else\n    chan_setinstr 128\n  #endif\n  chan_setenvelope .envelope_3378\n  // Small bugfix: .main_loop_023589 expects layer 0 to live the longest.\n  // I don't think this actually makes any audible difference given the\n  // silence at the end.\n  chan_setlayer 0, .layer_1907\n  chan_setlayer 1, .layer_1902\n  chan_setlayer 2, .layer_1909\n#endif\nchan_end\n\n.layer_1902:\nlayer_transpose 7\nlayer_jump .layer_190B\n\n.layer_1907:\nlayer_delay 0x6\n\n.layer_1909:\nlayer_transpose 12\n.layer_190B:\nlayer_note0 46, 0xc, 90, 20\nlayer_note0 45, 0xc, 90, 20\nlayer_note0 46, 0xc, 90, 20\nlayer_note0 58, 0x10, 100, 80\nlayer_note0 58, 0x10, 60, 80\nlayer_note0 58, 0x10, 40, 80\nlayer_note0 58, 0x10, 25, 80\n// This small delay should not have any effect, but decreases the probability of\n// encountering double red coin glitch. Without it, layer 0 finishes in 1.04\n// seconds, and with some bad luck around scheduling/lag the sound spawner with\n// a lifetime of 30 frames that creates the sound may deactivate on the same\n// frame. That leads to double sound glitch on JP, see src/audio/external.c.\n// With the delay, the same thing can still happen but requires more CPU lag.\nlayer_delay 0xa\nlayer_end\n\n.sound_general_birds_fly_away:\nchan_setbank 5\nchan_setinstr 13\nchan_setenvelope .envelope_33DC\nchan_setval 20\nchan_call .set_reverb\nchan_setval 127\nchan_iowriteval 7\nchan_setlayer 0, .layer_195F\nchan_setlayer 1, .layer_1986\nchan_setlayer 2, .layer_1982\n.chan_1942:\nchan_setval 4\nchan_call .delay\nchan_ioreadval 7\nchan_subtract 1\nchan_beqz .chan_1957\nchan_iowriteval 7\nchan_writeseq_nextinstr 0, 1\nchan_setvolscale 127\nchan_jump .chan_1942\n.chan_1957:\nchan_setval 127\nchan_call .delay\nchan_jump .chan_1957\n\n.layer_195F:\nlayer_setinstr 9\nlayer_note1 40, 0x6, 122\nlayer_note1 41, 0x4, 112\nlayer_note1 43, 0x5, 109\nlayer_note1 44, 0x6, 124\nlayer_note1 44, 0x4, 116\nlayer_note1 45, 0x7, 114\nlayer_delay 0x19\n.layer_1975:\nlayer_note1 43, 0x7f, 122\nlayer_note1 43, 0xa, 127\nlayer_note1 43, 0x64, 114\nlayer_jump .layer_1975\nlayer_end\n\n.layer_1982:\nlayer_transpose 4\nlayer_delay 0x2\n\n.layer_1986:\nlayer_portamento 0x83, 39, 255\nlayer_loop 2\nlayer_note1 55, 0x6, 120\nlayer_note1 60, 0x9, 112\nlayer_delay 0x4\nlayer_loopend\nlayer_note1 56, 0x5, 125\nlayer_note1 62, 0xa, 109\nlayer_delay 0x5\nlayer_note1 56, 0x6, 123\nlayer_note1 62, 0x7, 119\nlayer_delay 0x8\n.layer_19A5:\nlayer_loop 10\nlayer_note1 57, 0x5, 120\nlayer_note1 62, 0x8, 120\nlayer_delay 0x5\nlayer_loopend\nlayer_loop 10\nlayer_note1 59, 0x7, 115\nlayer_note1 60, 0x7, 113\nlayer_delay 0x2\nlayer_loopend\nlayer_loop 10\nlayer_note1 55, 0x8, 115\nlayer_note1 58, 0x6, 113\nlayer_delay 0x5\nlayer_loopend\nlayer_jump .layer_19A5\nlayer_end\n\n.sound_general_right_answer:\nchan_setbank 9\nchan_setinstr 3\nchan_setval 40\nchan_call .set_reverb\nchan_setenvelope .envelope_3344\nchan_setlayer 0, .layer_19DA\nchan_end\n\n.layer_19DA:\nlayer_loop 2\nlayer_note1 62, 0x6, 110\nlayer_note1 62, 0x2, 45\nlayer_note1 58, 0x6, 110\nlayer_note1 58, 0x2, 45\nlayer_loopend\nlayer_end\n\n.sound_general_metal_pound:\nchan_setbank 7\nchan_setinstr 1\nchan_setlayer 0, .layer_1A00\nchan_setlayer 1, .layer_19FE\nchan_setval 1\nchan_call .delay\nchan_setbank 5\nchan_setinstr 5\nchan_end\n\n.layer_19FE:\nlayer_transpose -6\n\n.layer_1A00:\nlayer_note1 15, 0xc, 127\nlayer_note1 17, 0x3a, 127\nlayer_end\n\n.sound_general_boing1:\nchan_setbank 5\nchan_setinstr 14\nchan_setlayer 0, .layer_1A0F\nchan_end\n\n.layer_1A0F:\nlayer_portamento 0x82, 40, 127\nlayer_note1 38, 0x28, 100\nlayer_end\n\n.sound_general_boing2:\nchan_setbank 5\nchan_setinstr 14\nchan_setlayer 0, .layer_1A1F\nchan_end\n\n.layer_1A1F:\nlayer_portamento 0x82, 43, 127\nlayer_note1 39, 0x36, 100\nlayer_end\n\n.sound_general_yoshi_walk:\nchan_jump .sound_obj_koopa_the_quick_walk\n\n.sound_general_enemy_alert1:\nchan_jump .sound_obj_goomba_alert\n\n.sound_general_yoshi_talk:\nchan_setbank 0\nchan_setinstr 3\nchan_setlayer 0, .layer_1A35\nchan_end\n\n.layer_1A35:\nlayer_note1 39, 0x32, 127\nlayer_end\n\n.sound_general_splattering:\nchan_setbank 6\nchan_setinstr 2\nchan_setlayer 0, .layer_1A44\nchan_setlayer 1, .layer_1A44\nchan_end\n\n.layer_1A44:\nlayer_transpose 7\nlayer_call .layer_fn_1A4B\nlayer_transpose -2\n\n.layer_fn_1A4B:\nlayer_portamento 0x83, 31, 255\nlayer_note1 51, 0x6, 127\nlayer_note1 56, 0xc, 127\nlayer_end\n\n.sound_general_boing3:\nchan_setbank 9\nchan_setinstr 6\nchan_setval 10\nchan_call .set_reverb\nchan_setlayer 0, .layer_1A66\nchan_setlayer 1, .layer_1A66\nchan_end\n\n.layer_1A66:\nlayer_portamento 0x82, 39, 255\nlayer_note1 31, 0x60, 100\nlayer_end\n\n.sound_general_grand_star:\nchan_setbank 4\nchan_setinstr 14\nchan_setlayer 0, .layer_1A79\nchan_setlayer 1, .layer_1A7D\nchan_end\n\n.layer_1A79:\nlayer_transpose 3\nlayer_delay 0x5\n\n.layer_1A7D:\nlayer_somethingon\nlayer_portamento 0x85, 31, 255\nlayer_note1 34, 0x12c, 127\nlayer_end\n\n.sound_general_grand_star_jump:\nchan_setbank 4\nchan_setinstr 14\nchan_setenvelope .envelope_3358\nchan_setlayer 0, .layer_1AA0\nchan_setval 1\nchan_call .delay\nchan_setenvelope .envelope_3358\nchan_setlayer 1, .layer_1AAA\nchan_setlayer 2, .layer_1AA8\nchan_end\n\n.layer_1AA0:\nlayer_portamento 0x81, 32, 64\nlayer_note1 38, 0x46, 127\nlayer_end\n\n.layer_1AA8:\nlayer_delay 0x4\n\n.layer_1AAA:\nlayer_delay 0x4\nlayer_portamento 0x81, 36, 40\nlayer_note1 41, 0xc, 127\nlayer_end\n\n#ifdef VERSION_JP\n  .sound_general_boat_rock:\n  chan_setbank 9\n  chan_setinstr 0\n  chan_setenvelope .envelope_3438\n  chan_setvibratorate 25\n  chan_setvibratoextent 110\n  chan_setlayer 0, .layer_1943_jp\n  chan_setval 40\n  chan_call .delay\n  chan_end\n\n  .layer_1943_jp:\n  layer_portamento 0x1, 32, 0x7f\n  layer_note1 60, 0x28, 100\n  layer_end\n#else\n  .sound_general_boat_rock:\n  chan_setbank 4\n  chan_setinstr 2\n  chan_setlayer 0, .layer_1AC1\n  chan_setlayer 1, .layer_1ABF\n  chan_end\n\n  .layer_1ABF:\n  layer_transpose 12\n\n  .layer_1AC1:\n  layer_portamento 0x81, 7, 255\n  layer_note1 15, 0x3c, 127\n  layer_portamento 0x81, 20, 200\n  layer_note1 7, 0x5a, 127\n  layer_end\n\n  .sound_general_vanish_sfx:\n  chan_setbank 9\n  chan_setinstr 3\n  chan_setvibratoextent 70\n  chan_setvibratorate 70\n  chan_setenvelope .envelope_32E4\n  chan_setlayer 0, .layer_1AEB\n  chan_setlayer 1, .layer_1AE9\n  chan_setval 35\n  chan_call .delay\n  chan_setvibratoextent 0\n  chan_end\n\n  .layer_1AE9:\n  layer_transpose 1\n\n  .layer_1AEB:\n  layer_portamento 0x81, 19, 255\n  layer_note1 31, 0x32, 115\n  layer_end\n#endif\n\n.channel4_table:\nsound_ref .sound_env_waterfall1\nsound_ref .sound_env_waterfall1\nsound_ref .sound_env_elevator1\nsound_ref .sound_env_droning1\nsound_ref .sound_env_droning1\nsound_ref .sound_env_wind1\nsound_ref .sound_env_moving_sand_snow\nsound_ref .chan_1BE5\nsound_ref .sound_env_elevator2\nsound_ref .sound_env_water\nsound_ref .chan_1C46\nsound_ref .sound_env_boat_rocking1\nsound_ref .sound_env_elevator3\nsound_ref .sound_env_elevator4\nsound_ref .sound_env_movingsand\nsound_ref .sound_env_merry_go_round_creaking\nsound_ref .sound_env_wind2\nsound_ref .sound_air_rough_slide\nsound_ref .chan_1D42\nsound_ref .sound_env_sliding\nsound_ref .sound_env_star\nsound_ref .chan_1D81\nsound_ref .sound_env_water_drain\nsound_ref .sound_env_metal_box_push\nsound_ref .sound_env_sink_quicksand\nsound_ref .sound_air_peach_twinkle\nsound_ref .sound_env_elevator1\nsound_ref .sound_env_droning1\nsound_ref .sound_env_waterfall1\nsound_ref .sound_env_waterfall1\nsound_ref .sound_env_waterfall1\nsound_ref .sound_env_waterfall1\nsound_ref .sound_menu_enter_hole\nsound_ref .sound_general_elevator_move\nsound_ref .sound_env_elevator1\nsound_ref .sound_env_droning1\nsound_ref .sound_env_waterfall1\nsound_ref .sound_env_waterfall1\nsound_ref .sound_env_waterfall1\nsound_ref .sound_env_waterfall1\n\n.sound_env_waterfall1:\nchan_setbank 5\nchan_setinstr 1\nchan_setval 25\nchan_call .set_reverb\n#ifdef VERSION_JP\n  chan_setenvelope .envelope_32E4\n#else\n  chan_setenvelope .envelope_32C4\n#endif\nchan_setlayer 0, .layer_1B53\nchan_end\n\n.layer_1B53:\nlayer_somethingon\n#ifdef VERSION_JP\n  layer_delay 0x6\n#else\n  layer_delay 0x4\n#endif\n.layer_1B56:\nlayer_note1 41, 0x12c, 95\nlayer_jump .layer_1B56\n\n.sound_env_elevator1:\nchan_setbank 5\nchan_setinstr 2\nchan_setlayer 0, .layer_1B65\nchan_end\n\n.layer_1B65:\nlayer_somethingon\n.layer_1B66:\nlayer_note1 39, 0x12c, 90\nlayer_jump .layer_1B66\n\n.sound_env_droning1:\nchan_setbank 5\nchan_setinstr 3\nchan_setlayer 0, .layer_1B75\nchan_end\n\n.layer_1B75:\nlayer_somethingon\n.layer_1B76:\nlayer_note1 44, 0x12c, 105\nlayer_jump .layer_1B76\n\n.sound_env_wind1:\nchan_setbank 5\nchan_setinstr 6\nchan_setdecayrelease 13\nchan_setlayer 0, .layer_1B8A\nchan_setlayer 1, .layer_1B8C\nchan_end\n\n.layer_1B8A:\nlayer_transpose -12\n\n.layer_1B8C:\nlayer_somethingon\nlayer_portamento 0x85, 39, 255\n.layer_1B91:\nlayer_note1 44, 0x18, 110\nlayer_note1 38, 0x3c, 110\nlayer_note1 47, 0xa, 110\nlayer_note1 49, 0x32, 110\nlayer_note1 40, 0x4b, 110\nlayer_note1 37, 0x14, 110\nlayer_note1 46, 0xc, 110\nlayer_note1 48, 0x1f, 110\nlayer_note1 55, 0x18, 110\nlayer_note1 46, 0x40, 110\nlayer_note1 36, 0xc, 110\nlayer_note1 39, 0xa, 110\nlayer_note1 36, 0xe, 110\nlayer_note1 39, 0xc, 110\nlayer_note1 32, 0x54, 110\nlayer_note1 39, 0xa, 110\nlayer_note1 36, 0x2b, 110\nlayer_note1 41, 0x60, 110\nlayer_note1 39, 0x22, 110\nlayer_jump .layer_1B91\n\n.sound_env_moving_sand_snow:\nchan_setbank 3\nchan_setinstr 2\nchan_setlayer 0, .layer_1BD5\nchan_end\n\n.layer_1BD5:\nlayer_somethingon\nlayer_portamento 0x85, 36, 255\n.layer_1BDA:\nlayer_note1 34, 0x12c, 95\nlayer_note1 36, 0x12c, 95\nlayer_jump .layer_1BDA\n\n.chan_1BE5:\nchan_setbank 6\nchan_setinstr 15\nchan_setlayer 0, .layer_1BED\nchan_end\n\n.layer_1BED:\nlayer_somethingon\nlayer_note1 43, 0xc, 127\nlayer_portamento 0x81, 44, 255\nlayer_note1 43, 0x50, 127\n.layer_1BF8:\nlayer_note1 43, 0x12c, 127\nlayer_jump .layer_1BF8\n\n.sound_env_elevator2:\nchan_setbank 5\nchan_setinstr 2\nchan_setlayer 0, .layer_1C07\nchan_end\n\n.layer_1C07:\nlayer_somethingon\n.layer_1C08:\nlayer_note1 27, 0x12c, 100\nlayer_jump .layer_1C08\n\n.sound_env_water:\nchan_setbank 4\nchan_setinstr 5\nchan_setenvelope .envelope_32E4\nchan_setdecayrelease 25\nchan_setlayer 0, .layer_1C1C\nchan_end\n\n.layer_1C1C:\nlayer_transpose 6\nlayer_portamento 0x85, 39, 255\n.layer_1C22:\nlayer_note1 39, 0x18, 127\nlayer_note1 31, 0x36, 127\nlayer_note1 43, 0xc, 127\nlayer_note1 36, 0x32, 127\nlayer_note1 27, 0x50, 127\nlayer_note1 36, 0x37, 127\nlayer_note1 34, 0x40, 127\nlayer_note1 32, 0x3d, 127\nlayer_note1 29, 0x4a, 127\nlayer_note1 32, 0x31, 127\nlayer_note1 38, 0x1f, 127\nlayer_jump .layer_1C22\n\n.chan_1C46:\nchan_setbank 6\nchan_setinstr 15\nchan_setlayer 0, .layer_1C4E\nchan_end\n\n.layer_1C4E:\nlayer_somethingon\nlayer_portamento 0x85, 39, 255\nlayer_note1 42, 0x3c, 127\n.layer_1C56:\nlayer_note1 41, 0x3c, 127\nlayer_note1 42, 0x3c, 127\nlayer_jump .layer_1C56\n\n.sound_env_boat_rocking1:\nchan_setbank 4\nchan_setinstr 2\nchan_setdecayrelease 30\nchan_setlayer 0, .layer_1C69\nchan_end\n\n.layer_1C69:\nlayer_portamento 0x81, 15, 255\n#ifdef VERSION_JP\n  layer_note1 11, 0x1f4, 100\n#else\n  layer_note1 11, 0x1f4, 127\n#endif\nlayer_end\n\n.sound_env_elevator3:\nchan_setbank 5\nchan_setinstr 5\nchan_setenvelope .envelope_3368\nchan_setval 45\nchan_call .set_reverb\nchan_setlayer 0, .layer_1C82\nchan_end\n\n.layer_1C82:\nlayer_call .layer_fn_1CA3\nlayer_delay 0xb\nlayer_call .layer_fn_1CA3\nlayer_delay 0x9\nlayer_call .layer_fn_1CA3\nlayer_delay 0x8\nlayer_call .layer_fn_1CA3\nlayer_delay 0x6\nlayer_call .layer_fn_1CA3\nlayer_delay 0x5\n.layer_1C9B:\nlayer_call .layer_fn_1CA3\nlayer_delay 0x3\nlayer_jump .layer_1C9B\n\n.layer_fn_1CA3:\nlayer_transpose 0\nlayer_setinstr 4\nlayer_note1 22, 0x6, 127\nlayer_transpose 36\nlayer_setinstr 5\nlayer_somethingon\nlayer_portamento 0x85, 51, 255\nlayer_note1 41, 0x5, 77\nlayer_delay 0x4\nlayer_disableportamento\nlayer_somethingoff\nlayer_end\n\n.sound_env_elevator4:\nchan_setbank 4\nchan_setinstr 2\nchan_setlayer 0, .layer_1CC3\nchan_end\n\n.layer_1CC3:\nlayer_portamento 0x81, 19, 10\nlayer_note1 8, 0x9, 127\nlayer_jump .layer_1CC3\n\n.sound_env_movingsand:\nchan_setbank 3\nchan_setinstr 7\nchan_setdecayrelease 5\nchan_setlayer 0, .layer_1CE2\nchan_setlayer 1, .layer_1CDA\nchan_end\n\n.layer_1CDA:\nlayer_somethingon\n.layer_1CDB:\nlayer_note1 47, 0x1f4, 90\nlayer_jump .layer_1CDB\n\n.layer_1CE2:\nlayer_somethingon\n.layer_1CE3:\nlayer_note1 46, 0x1f4, 90\nlayer_jump .layer_1CE3\n\n.sound_env_merry_go_round_creaking:\nchan_setbank 4\nchan_setinstr 2\nchan_setdecayrelease 30\nchan_setlayer 0, .layer_1CF9\nchan_setlayer 1, .layer_1CF7\nchan_end\n\n.layer_1CF7:\nlayer_transpose 6\n\n.layer_1CF9:\nlayer_portamento 0x85, 7, 255\nlayer_note1_long 13, 0x46, 120\nlayer_jump .layer_1CF9\n\n.sound_env_wind2:\nchan_setbank 5\nchan_setinstr 6\nchan_setdecayrelease 13\nchan_setlayer 0, .layer_1D11\nchan_setlayer 1, .layer_1D13\nchan_end\n\n.layer_1D11:\nlayer_transpose -6\n\n.layer_1D13:\nlayer_somethingon\nlayer_portamento 0x85, 34, 255\n.layer_1D18:\nlayer_note1 51, 0x18, 110\nlayer_note1 43, 0x63, 110\nlayer_note1 47, 0xa, 110\nlayer_note1 49, 0x32, 110\nlayer_note1 41, 0x4b, 110\nlayer_note1 46, 0xc, 110\nlayer_note1 48, 0x1f, 110\nlayer_note1 55, 0x7f, 110\nlayer_note1 46, 0x63, 110\nlayer_note1 43, 0xa, 110\nlayer_note1 39, 0xc, 110\nlayer_note1 41, 0x60, 110\nlayer_note1 39, 0x22, 110\nlayer_jump .layer_1D18\n\n.chan_1D42:\nchan_setbank 4\nchan_setinstr 2\nchan_setbank 6\nchan_setenvelope .envelope_3314\nchan_setdecayrelease 200\nchan_setlayer 0, .layer_1D51\nchan_end\n\n.layer_1D51:\nlayer_transpose 3\n.layer_1D53:\nlayer_note0 62, 0x2, 127, 127\nlayer_jump .layer_1D53\n\n.sound_env_sliding:\nchan_setbank 3\nchan_setinstr 1\nchan_setenvelope .envelope_32E4\nchan_setdecayrelease 15\nchan_setlayer 0, .layer_1D67\nchan_end\n\n.layer_1D67:\nlayer_somethingon\n.layer_1D68:\nlayer_note1 44, 0x12c, 95\nlayer_jump .layer_1D68\n\n.sound_env_star:\nchan_setbank 4\nchan_setinstr 14\nchan_setlayer 0, .layer_1D77\nchan_end\n\n.layer_1D77:\nlayer_portamento 0x81, 38, 127\nlayer_note1 39, 0x9, 127\nlayer_jump .layer_1D77\n\n.chan_1D81:\nchan_setval 50\nchan_call .set_reverb\nchan_setbank 4\nchan_setinstr 15\nchan_setlayer 0, .layer_1DA5\nchan_setval 1\nchan_call .delay\nchan_setbank 6\nchan_setinstr 15\nchan_setlayer 1, .layer_1DAD\nchan_setval 1\nchan_call .delay\nchan_setbank 4\nchan_setinstr 15\nchan_setdecayrelease 10\nchan_end\n\n.layer_1DA5:\nlayer_note1 21, 0xc, 127\nlayer_note1 18, 0x226, 127\nlayer_end\n\n.layer_1DAD:\nlayer_transpose 24\nlayer_portamento 0x82, 19, 255\nlayer_note1 20, 0x1f4, 127\nlayer_end\n\n.sound_env_water_drain:\nchan_setbank 3\nchan_setinstr 2\nchan_setenvelope .envelope_32E4\nchan_setlayer 0, .layer_1DD4\nchan_setval 1\nchan_call .delay\nchan_setbank 4\nchan_setinstr 5\nchan_setdecayrelease 20\nchan_setlayer 1, .layer_1DE4\nchan_setlayer 2, .layer_1DE2\nchan_end\n\n.layer_1DD4:\nlayer_transpose -12\nlayer_somethingon\nlayer_portamento 0x82, 39, 255\n.layer_1DDB:\nlayer_note1 46, 0x2710, 80\nlayer_jump .layer_1DDB\n\n.layer_1DE2:\nlayer_transpose 6\n\n.layer_1DE4:\nlayer_portamento 0x83, 20, 255\nlayer_note1 15, 0x5a, 127\nlayer_note1 32, 0x2d, 127\nlayer_note1 29, 0x46, 127\nlayer_note1 24, 0x78, 127\nlayer_note1 32, 0x44, 127\nlayer_note1 24, 0x74, 127\nlayer_transpose 7\nlayer_jump .layer_1DE4\n\n.sound_env_metal_box_push:\nchan_setbank 6\nchan_setinstr 1\nchan_setlayer 0, .layer_1E0C\nchan_setlayer 1, .layer_1E12\nchan_setdecayrelease 127\nchan_end\n\n.layer_1E0C:\nlayer_note1 24, 0xc, 85\nlayer_jump .layer_1E0C\n\n.layer_1E12:\nlayer_setinstr 15\n.layer_1E14:\nlayer_note1 39, 0x10, 115\nlayer_jump .layer_1E14\n\n.sound_env_sink_quicksand:\nchan_setbank 3\nchan_setinstr 6\nchan_setenvelope .envelope_32E4\nchan_setlayer 0, .layer_1E28\nchan_setlayer 1, .layer_1E28\nchan_end\n\n.layer_1E28:\nlayer_portamento 0x81, 38, 80\nlayer_somethingon\n.layer_1E2D:\nlayer_note1 35, 0x12c, 100\nlayer_jump .layer_1E2D\nlayer_end\n\n.sound_air_peach_twinkle:\nchan_setbank 5\nchan_setinstr 15\nchan_setenvelope .envelope_32E4\nchan_setdecayrelease 8\nchan_setlayer 0, .layer_1E42\nchan_end\n\n.layer_1E42:\nlayer_somethingon\nlayer_portamento 0x82, 20, 255\n.layer_1E47:\nlayer_note1 43, 0x1b58, 63\nlayer_jump .layer_1E47\n\n.channel59_table:\nsound_ref .sound_obj_sushi_shark_water_sound\nsound_ref .sound_obj_mri_shoot\nsound_ref .sound_obj_baby_penguin_walk\nsound_ref .sound_obj_bowser_walk\nsound_ref .sound_obj_bowser_roar\nsound_ref .sound_obj_bowser_tail_pickup\nsound_ref .sound_obj_bowser_defeated\nsound_ref .sound_obj_bowser_spinning\nsound_ref .sound_obj_bowser_inhaling\nsound_ref .sound_obj_big_penguin_walk\nsound_ref .sound_obj_boo_bounce_top\nsound_ref .sound_obj_boo_laugh_short\nsound_ref .sound_obj_thwomp\nsound_ref .sound_obj_cannon1\nsound_ref .sound_obj_cannon2\nsound_ref .sound_obj_cannon3\nsound_ref .sound_obj_piranha_plant_bite\nsound_ref .sound_obj_piranha_plant_dying\nsound_ref .sound_obj_jump_walk_water\nsound_ref .chan_20B2\nsound_ref .sound_obj_mri_death\nsound_ref .sound_obj_pounding1\nsound_ref .sound_obj_king_bobomb\nsound_ref .sound_obj_bully_metal\nsound_ref .sound_obj_bully_explode\nsound_ref .sound_obj_bowser_puzzle_piece_move\nsound_ref .sound_obj_pounding_cannon\nsound_ref .sound_obj_bully_walk\nsound_ref .sound_obj_bully_attacked\nsound_ref .chan_2177\nsound_ref .chan_218E\nsound_ref .sound_obj_baby_penguin_dive\nsound_ref .sound_obj_goomba_walk\nsound_ref .sound_obj_ukiki_chatter_long\nsound_ref .sound_obj_monty_mole_lakitu_attack\nsound_ref .chan_21FF\nsound_ref .sound_obj_dying_enemy1\nsound_ref .sound_obj_cannon4\nsound_ref .sound_obj_dying_enemy2\nsound_ref .sound_obj_bobomb_walk\nsound_ref .sound_obj_something_landing\nsound_ref .sound_obj_diving_in_water\nsound_ref .sound_obj_snow_sand1\nsound_ref .sound_obj_snow_sand2\nsound_ref .sound_obj_default_death\nsound_ref .sound_obj_big_penguin_yell\nsound_ref .sound_obj_water_bomb_bouncing\nsound_ref .sound_obj_goomba_alert\nsound_ref .sound_obj_stomped\nsound_ref .chan_233D\nsound_ref .sound_obj_diving_into_water\nsound_ref .sound_obj_piranha_plant_shrink\nsound_ref .sound_obj_koopa_the_quick_walk\nsound_ref .sound_obj_koopa_walk\nsound_ref .sound_obj_bully_walking\nsound_ref .sound_obj_dorrie\nsound_ref .sound_obj_bowser_laugh\nsound_ref .sound_obj_ukiki_chatter_short\nsound_ref .sound_obj_ukiki_chatter_idle\nsound_ref .sound_obj_ukiki_step_default\nsound_ref .sound_obj_ukiki_step_leaves\nsound_ref .sound_obj_koopa_talk\nsound_ref .sound_obj_koopa_damage\nsound_ref .sound_obj_klepto1\nsound_ref .sound_obj_klepto2\nsound_ref .sound_obj_king_bobomb_talk\nsound_ref .sound_obj_king_bobomb_damage\nsound_ref .sound_obj_scuttlebug_walk\nsound_ref .sound_obj_scuttlebug_alert\nsound_ref .sound_obj_baby_penguin_yell\nsound_ref .sound_obj_king_bobomb_jump\nsound_ref .sound_obj_king_whomp_death\nsound_ref .sound_obj_boo_laugh_long\nsound_ref .sound_obj_swoop\nsound_ref .sound_obj_eel\nsound_ref .sound_obj_eyerok_show_eye\nsound_ref .sound_obj_mr_blizzard_alert\nsound_ref .sound_obj_snufit_shoot\nsound_ref .sound_obj_skeeter_walk\nsound_ref .sound_obj_walking_water\nsound_ref .sound_general_bird_chirp2\nsound_ref .sound_obj_bird_chirp3\nsound_ref .sound_obj_bird_chirp1\nsound_ref .sound_air_castle_outdoors_ambient\nsound_ref .sound_obj_piranha_plant_appear\nsound_ref .sound_obj_flame_blown\nsound_ref .sound_obj_mad_piano_chomping\nsound_ref .sound_obj_large_bully_attacked\nsound_ref .sound_obj_bobomb_buddy_talk\nsound_ref .chan_26A9\nsound_ref .sound_obj_eyerok_sound_short\nsound_ref .sound_obj_eyerok_sound_long\nsound_ref .sound_obj_wiggler_high_pitch\nsound_ref .sound_obj_heaveho_tossed\nsound_ref .sound_obj_wiggler_death\nsound_ref .sound_obj_bowser_intro_laugh\nsound_ref .sound_obj_enemy_death_high\nsound_ref .sound_obj_enemy_death_low\nsound_ref .sound_obj_swoop_death\nsound_ref .sound_obj_koopa_flyguy_pokey_death\nsound_ref .sound_obj_snowman_bounce\nsound_ref .sound_obj_snowman_explode\nsound_ref .sound_obj_bowser_teleport\nsound_ref .sound_obj_monty_mole_appear\nsound_ref .sound_obj_pounding_loud\nsound_ref .sound_obj_boss_dialog_grunt\nsound_ref .sound_obj_mips_rabbit\nsound_ref .sound_obj_mri_spinning\nsound_ref .sound_obj_mips_rabbit_water\nsound_ref .sound_obj_eyerok_explode\nsound_ref .sound_obj_chuckya_death\nsound_ref .sound_obj_wiggler_talk\nsound_ref .sound_obj_wiggler_attacked\nsound_ref .sound_obj_wiggler_low_pitch\nsound_ref .sound_obj_snufit_skeeter_death\nsound_ref .sound_obj_bubba_chomp\nsound_ref .sound_obj_enemy_defeat_shrink\nsound_ref .sound_obj_bowser_tail_pickup\nsound_ref .sound_obj_bowser_defeated\nsound_ref .sound_obj_bowser_spinning\nsound_ref .sound_obj_klepto2\nsound_ref .sound_obj_king_bobomb_talk\nsound_ref .sound_obj_baby_penguin_walk\nsound_ref .sound_obj_bowser_walk\nsound_ref .sound_obj_bowser_roar\nsound_ref .sound_obj_bowser_tail_pickup\nsound_ref .sound_obj_bowser_defeated\nsound_ref .sound_obj_bowser_spinning\n\n.sound_general_swish_water:\nchan_setbank 6\nchan_setinstr 5\nchan_setlayer 0, .layer_1F56\nchan_end\n\n.layer_1F56:\nlayer_note1 27, 0x8, 90\nlayer_portamento 0x81, 43, 255\nlayer_note1 27, 0x21, 90\nlayer_end\n\n.sound_obj_mri_shoot:\nchan_setbank 7\nchan_setinstr 3\nchan_setlayer 0, .layer_1F72\nchan_setval 1\nchan_call .delay\nchan_setbank 6\nchan_setinstr 0\nchan_end\n\n.layer_1F72:\nlayer_note1 43, 0xf, 90\nlayer_portamento 0x82, 27, 255\nlayer_note1 36, 0xb, 90\nlayer_end\n\n.sound_obj_baby_penguin_walk:\nchan_setbank 6\nchan_setinstr 7\nchan_setlayer 0, .layer_1F85\nchan_end\n\n.layer_1F85:\nlayer_portamento 0x81, 43, 255\nlayer_note1 48, 0x30, 110\nlayer_end\n\n.sound_obj_bowser_walk:\nchan_setbank 6\nchan_setinstr 1\nchan_setval 60\nchan_call .set_reverb\nchan_setlayer 0, .layer_1F9D\nchan_setlayer 1, .layer_1FA6\nchan_end\n\n.layer_1F9D:\nlayer_note1 36, 0x8, 120\nlayer_note1 35, 0x28, 120\nlayer_delay 0x30\nlayer_end\n\n.layer_1FA6:\nlayer_delay 0x18\nlayer_note1 0, 0x1e, 95\nlayer_end\n\n.sound_obj_bowser_roar:\nchan_setbank 6\nchan_setinstr 2\nchan_setval 10\nchan_call .set_reverb\nchan_setlayer 0, .layer_1FC0\nchan_setlayer 1, .layer_1FBC\nchan_end\n\n.layer_1FBC:\nlayer_delay 0x3\nlayer_transpose 5\n\n.layer_1FC0:\nlayer_note1 39, 0x7f, 127\nlayer_end\n\n.sound_obj_bowser_tail_pickup:\nchan_setbank 6\nchan_setinstr 2\nchan_setval 10\nchan_call .set_reverb\nchan_setlayer 0, .layer_1FD8\nchan_setlayer 1, .layer_1FD4\nchan_end\n\n.layer_1FD4:\nlayer_delay 0x3\nlayer_transpose 5\n\n.layer_1FD8:\nlayer_portamento 0x81, 45, 255\nlayer_note1 33, 0x30, 127\nlayer_end\n\n.sound_obj_bowser_defeated:\nchan_setbank 6\nchan_setinstr 4\nchan_setval 10\nchan_call .set_reverb\nchan_setlayer 0, .layer_1FED\nchan_end\n\n.layer_1FED:\nlayer_note1 32, 0x104, 127\nlayer_end\n\n.sound_obj_bowser_spinning:\nchan_setbank 6\nchan_setinstr 5\nchan_setlayer 0, .layer_1FFA\nchan_end\n\n.layer_1FFA:\nlayer_note1 32, 0x28, 127\nlayer_end\n\n.sound_obj_bowser_inhaling:\nchan_setbank 6\nchan_setinstr 6\nchan_setlayer 0, .layer_2006\nchan_end\n\n.layer_2006:\nlayer_note1 36, 0x5a, 127\nlayer_end\n\n.sound_obj_big_penguin_walk:\nchan_setbank 6\nchan_setinstr 7\nchan_setlayer 0, .layer_2012\nchan_end\n\n.layer_2012:\nlayer_portamento 0x81, 39, 255\nlayer_note1 36, 0x26, 100\nlayer_end\n\n.sound_obj_boo_bounce_top:\nchan_setbank 6\nchan_setinstr 8\nchan_setlayer 0, .layer_2022\nchan_end\n\n.layer_2022:\nlayer_note1 39, 0x18, 127\nlayer_end\n\n.sound_obj_boo_laugh_short:\nchan_setbank 6\nchan_setinstr 9\nchan_setlayer 0, .layer_202E\nchan_end\n\n.layer_202E:\nlayer_note1 50, 0xa, 127\nlayer_note1 55, 0xa, 127\nlayer_end\n\n.sound_obj_thwomp:\nchan_setbank 7\nchan_setinstr 12\nchan_setval 55\nchan_call .set_reverb\nchan_setlayer 0, .layer_2055\nchan_setval 1\nchan_call .delay\nchan_setbank 6\nchan_setinstr 1\nchan_setlayer 1, .layer_204E\nchan_end\n\n.layer_204E:\nlayer_note1 37, 0xc, 127\nlayer_note1 31, 0x1e, 127\nlayer_end\n\n.layer_2055:\nlayer_note1 31, 0x2a, 127\nlayer_end\n\n.sound_obj_cannon1:\nchan_setbank 6\nchan_setinstr 10\nchan_setlayer 0, .layer_2061\nchan_end\n\n.layer_2061:\nlayer_note1 39, 0xd2, 127\nlayer_end\n\n.sound_obj_cannon2:\nchan_setbank 6\nchan_setinstr 11\nchan_setlayer 0, .layer_206E\nchan_end\n\n.layer_206E:\nlayer_note1 39, 0xd2, 127\nlayer_end\n\n.sound_obj_cannon3:\nchan_setbank 6\nchan_setinstr 12\nchan_setlayer 0, .layer_207B\nchan_end\n\n.layer_207B:\nlayer_note1 39, 0x24, 127\nlayer_end\n\n.sound_obj_piranha_plant_bite:\nchan_setbank 6\nchan_setinstr 11\nchan_setlayer 0, .layer_2087\nchan_end\n\n.layer_2087:\nlayer_portamento 0x81, 33, 255\nlayer_note1 57, 0x4, 127\nlayer_transpose -4\nlayer_portamento 0x81, 57, 255\nlayer_note1 33, 0x6, 127\nlayer_delay 0x14\nlayer_end\n\n.sound_obj_piranha_plant_dying:\nchan_setbank 6\nchan_setinstr 14\nchan_setlayer 0, .layer_20A2\nchan_end\n\n.layer_20A2:\nlayer_note1 39, 0x48, 110\nlayer_end\n\n.sound_obj_jump_walk_water:\nchan_setbank 4\nchan_setinstr 5\nchan_setlayer 0, .layer_20AE\nchan_end\n\n.layer_20AE:\nlayer_note1 59, 0x24, 105\nlayer_end\n\n.chan_20B2:\nchan_setbank 6\nchan_setinstr 15\nchan_setlayer 0, .layer_20BA\nchan_end\n\n.layer_20BA:\nlayer_note1 39, 0x4c, 127\nlayer_end\n\n.sound_obj_mri_death:\nchan_setbank 7\nchan_setinstr 0\nchan_setlayer 0, .layer_20C6\nchan_end\n\n.layer_20C6:\nlayer_note1 39, 0x18, 105\nlayer_end\n\n.sound_obj_pounding1:\nchan_setbank 6\nchan_setinstr 1\nchan_setlayer 0, .layer_20D2\nchan_end\n\n.layer_20D2:\nlayer_portamento 0x81, 44, 255\n#ifdef VERSION_JP\n  layer_note1 36, 0x18, 90\n#else\n  layer_note1 36, 0x18, 115\n#endif\nlayer_delay 0x32\nlayer_end\n\n.sound_obj_king_bobomb:\nchan_setbank 7\nchan_setinstr 12\nchan_setlayer 0, .layer_20F0\nchan_setval 1\nchan_call .delay\nchan_setbank 6\nchan_setinstr 1\nchan_setlayer 1, .layer_20F4\nchan_end\n\n.layer_20F0:\nlayer_note1 31, 0x26, 127\nlayer_end\n\n.layer_20F4:\n#ifdef VERSION_JP\n  layer_note1 38, 0x8, 120\n  layer_note1 33, 0x1e, 120\n#else\n  layer_note1 38, 0x8, 127\n  layer_note1 33, 0x1e, 127\n#endif\nlayer_end\n\n.sound_obj_bully_metal:\nchan_setbank 7\nchan_setinstr 1\nchan_setlayer 0, .layer_2103\nchan_end\n\n.layer_2103:\nlayer_note1 39, 0x24, 120\nlayer_end\n\n.sound_obj_bully_explode:\nchan_setbank 4\nchan_setinstr 15\nchan_setenvelope .envelope_33EC\nchan_setlayer 0, .layer_211C\nchan_setlayer 1, .layer_2126\nchan_setlayer 2, .layer_2124\nchan_setval 1\nchan_setdecayrelease 10\nchan_end\n\n.layer_211C:\nlayer_portamento 0x81, 51, 255\nlayer_note1 20, 0x2e, 115\nlayer_end\n\n.layer_2124:\nlayer_transpose 3\n\n.layer_2126:\nlayer_setinstr 5\nlayer_delay 0xa\nlayer_note1 48, 0x23, 127\nlayer_end\n\n.sound_obj_bowser_puzzle_piece_move:\nchan_setbank 7\nchan_setinstr 2\nchan_setlayer 0, .layer_2136\nchan_end\n\n.layer_2136:\nlayer_note1 39, 0xc, 105\nlayer_end\n\n.sound_obj_pounding_cannon:\nchan_setbank 7\nchan_setinstr 3\nchan_setlayer 0, .layer_2142\nchan_end\n\n.layer_2142:\nlayer_note1 39, 0x68, 127\nlayer_end\n\n.sound_obj_bully_walk:\nchan_setbank 7\nchan_setinstr 3\nchan_setlayer 0, .layer_214E\nchan_end\n\n.layer_214E:\nlayer_portamento 0x82, 38, 127\nlayer_note1 51, 0x4, 80\nlayer_delay 0x1e\nlayer_end\n\n.sound_obj_bully_attacked:\nchan_setbank 7\nchan_setinstr 12\nchan_setlayer 0, .layer_2160\nchan_end\n\n.layer_2160:\nlayer_portamento 0x83, 33, 255\nlayer_note0 40, 0xf, 127, 127\nlayer_note1 26, 0x20, 127\nlayer_end\n\n.layer_unused_216C:\nlayer_portamento 0x83, 27, 255\nlayer_note1 22, 0x9, 127\nlayer_note1 24, 0x1c, 127\nlayer_end\n\n.chan_2177:\nchan_setbank 7\nchan_setinstr 3\nchan_setlayer 0, .layer_217F\nchan_end\n\n.layer_217F:\nlayer_portamento 0x81, 27, 255\nlayer_note1 48, 0x9, 100\nlayer_portamento 0x81, 27, 255\nlayer_note1 48, 0x5, 100\nlayer_end\n\n.chan_218E:\nchan_setbank 6\nchan_setinstr 5\nchan_setlayer 0, .layer_2196\nchan_end\n\n.layer_2196:\nlayer_note1 36, 0x8, 90\nlayer_portamento 0x81, 43, 255\nlayer_note1 27, 0x14, 90\nlayer_end\n\n.sound_obj_baby_penguin_dive:\nchan_setbank 6\nchan_setinstr 7\nchan_setlayer 0, .layer_21A9\nchan_end\n\n.layer_21A9:\nlayer_portamento 0x81, 39, 255\nlayer_note1 44, 0xc, 110\nlayer_portamento 0x81, 46, 255\nlayer_note1 58, 0x30, 110\nlayer_end\n\n.sound_obj_goomba_walk:\nchan_setbank 6\nchan_setinstr 12\nchan_setlayer 0, .layer_21C9\nchan_setval 1\nchan_call .delay\nchan_setbank 0\nchan_setinstr 4\nchan_end\n\n.layer_21C9:\nlayer_portamento 0x82, 24, 255\nlayer_note1 12, 0x4, 100\nlayer_note1 51, 0x8, 80\nlayer_delay 0x1e\nlayer_end\n\n.sound_obj_ukiki_chatter_long:\nchan_setbank 7\nchan_setinstr 7\nchan_setdecayrelease 15\nchan_setlayer 0, .layer_21E0\nchan_end\n\n.layer_21E0:\nlayer_note1 39, 0x30, 127\nlayer_end\n\n.sound_obj_monty_mole_lakitu_attack:\nchan_setbank 9\nchan_setinstr 3\nchan_setenvelope .envelope_3428\nchan_setval 10\nchan_call .set_reverb\nchan_setlayer 0, .layer_21F4\nchan_end\n\n.layer_21F4:\nlayer_portamento 0x85, 48, 255\nlayer_note1 60, 0x7, 115\nlayer_note1 39, 0x23, 115\nlayer_end\n\n.chan_21FF:\nchan_setbank 4\nchan_setinstr 13\nchan_setlayer 0, .layer_2207\nchan_end\n\n.layer_2207:\nlayer_portamento 0x81, 27, 255\nlayer_note1 3, 0x14, 115\nlayer_delay 0x1e\nlayer_end\n\n.sound_obj_dying_enemy1:\nchan_setbank 7\nchan_setinstr 0\nchan_setlayer 0, .layer_2219\nchan_end\n\n.layer_2219:\nlayer_note1 43, 0x6, 105\nlayer_portamento 0x81, 32, 255\nlayer_note1 44, 0x18, 105\nlayer_end\n\n.sound_obj_cannon4:\nchan_setbank 7\nchan_setinstr 3\nchan_setval 15\nchan_call .set_reverb\nchan_setlayer 0, .layer_2231\nchan_end\n\n.layer_2231:\nlayer_note1 48, 0x55, 127\nlayer_end\n\n.sound_obj_dying_enemy2:\nchan_setbank 7\nchan_setinstr 8\nchan_setlayer 0, .layer_223D\nchan_end\n\n.layer_223D:\nlayer_note1 44, 0xc, 100\nlayer_portamento 0x81, 44, 255\nlayer_note1 32, 0x18, 105\nlayer_end\n\n.sound_obj_bobomb_walk:\nchan_setbank 9\nchan_setinstr 1\nchan_setenvelope .envelope_32D4\nchan_setlayer 0, .layer_2253\nchan_end\n\n.layer_2253:\nlayer_portamento 0x83, 46, 255\nlayer_note1 27, 0x5, 127\nlayer_note1 32, 0x3, 127\nlayer_delay 0x22\nlayer_end\n\n.sound_obj_something_landing:\nchan_setbank 9\nchan_setinstr 3\nchan_setenvelope .envelope_3428\nchan_setlayer 0, .layer_226B\nchan_end\n\n.layer_226B:\nlayer_somethingon\nlayer_portamento 0x85, 62, 255\nlayer_note1 50, 0x24, 93\nlayer_note1 26, 0x3c, 93\nlayer_end\n\n.sound_obj_diving_in_water:\nchan_setbank 4\nchan_setinstr 5\nchan_setlayer 0, .layer_2288\nchan_setval 1\nchan_call .delay\nchan_setbank 2\nchan_setinstr 0\nchan_end\n\n.layer_2288:\nlayer_note1 62, 0x4, 105\nlayer_portamento 0x81, 43, 200\nlayer_note1 36, 0x4e, 127\nlayer_end\n\n.sound_obj_snow_sand1:\nchan_setbank 3\nchan_setinstr 5\nchan_setenvelope .envelope_32D4\nchan_setlayer 0, .layer_229E\nchan_end\n\n.layer_229E:\nlayer_note1 41, 0x6, 100\nlayer_note1 24, 0x1c, 100\nlayer_end\n\n.sound_obj_snow_sand2:\nchan_setbank 3\nchan_setinstr 5\nchan_setenvelope .envelope_32D4\nchan_setlayer 0, .layer_22B0\nchan_end\n\n.layer_22B0:\nlayer_note1 36, 0x5, 100\nlayer_note1 44, 0x18, 100\nlayer_end\n\n.sound_obj_default_death:\nchan_setbank 0\nchan_setinstr 4\nchan_setenvelope .envelope_32D4\nchan_setval 25\nchan_call .set_reverb\nchan_setlayer 0, .layer_22C7\nchan_end\n\n.layer_22C7:\nlayer_somethingon\nlayer_portamento 0x81, 39, 255\nlayer_note1 62, 0x1b, 107\nlayer_delay 0x12\nlayer_end\n\n.sound_obj_big_penguin_yell:\nchan_setbank 7\nchan_setinstr 10\nchan_setlayer 0, .layer_22DA\nchan_end\n\n.layer_22DA:\nlayer_somethingon\nlayer_portamento 0x85, 41, 255\nlayer_note1 45, 0x28, 127\nlayer_note1 41, 0xf, 127\nlayer_end\n\n.sound_obj_water_bomb_bouncing:\nchan_setbank 7\nchan_setinstr 11\nchan_setenvelope .envelope_32D4\nchan_setlayer 0, .layer_22F3\nchan_end\n\n.layer_unused_22F1:\nlayer_transpose -12\n\n.layer_22F3:\nlayer_somethingon\nlayer_portamento 0x85, 39, 255\nlayer_note1 32, 0xc, 127\nlayer_note1 39, 0x60, 127\nlayer_end\n\n.sound_obj_goomba_alert:\nchan_setbank 9\nchan_setinstr 3\nchan_setval 20\nchan_call .set_reverb\nchan_setenvelope .envelope_33EC\nchan_setlayer 0, .layer_230F\nchan_end\n\n.layer_230F:\nlayer_transpose -24\nlayer_somethingon\nlayer_portamento 0x85, 25, 255\nlayer_note1 3, 0xf, 85\nlayer_transpose 0\nlayer_note1 51, 0x1c, 85\nlayer_delay 0x19\nlayer_end\n\n.sound_obj_stomped:\nchan_setbank 9\nchan_setinstr 3\nchan_setenvelope .envelope_3428\nchan_setlayer 0, .layer_232C\nchan_end\n\n.layer_232C:\nlayer_transpose -3\nlayer_somethingon\nlayer_portamento 0x85, 24, 255\nlayer_note1 17, 0xa, 100\nlayer_note1 32, 0xa, 100\nlayer_note1 27, 0x6, 100\nlayer_end\n\n.chan_233D:\nchan_setbank 6\nchan_setinstr 5\nchan_setenvelope .envelope_32D4\nchan_setlayer 0, .layer_2348\nchan_end\n\n.layer_2348:\nlayer_transpose 10\nlayer_call .layer_fn_2353\nlayer_call .layer_fn_2353\nlayer_delay 0x14\nlayer_end\n\n.layer_fn_2353:\nlayer_portamento 0x85, 52, 255\nlayer_note1 48, 0x4, 115\nlayer_note1 52, 0x2, 115\nlayer_delay 0x2\nlayer_disableportamento\nlayer_end\n\n.sound_obj_diving_into_water:\nchan_setbank 2\nchan_setlayer 0, .layer_236A\nchan_setlayer 1, .layer_2374\nchan_end\n\n.layer_236A:\nlayer_setinstr 0\nlayer_portamento 0x82, 44, 255\nlayer_note1 43, 0x54, 100\nlayer_end\n\n.layer_2374:\nlayer_setinstr 1\nlayer_portamento 0x82, 32, 255\nlayer_note1 31, 0x54, 100\nlayer_end\n\n.sound_obj_piranha_plant_shrink:\nchan_setbank 3\nchan_setinstr 0\nchan_setenvelope .envelope_3324\nchan_setlayer 0, .layer_2389\nchan_end\n\n.layer_2389:\nlayer_portamento 0x81, 62, 255\nlayer_note1 38, 0x7f, 117\nlayer_end\n\n.sound_obj_koopa_the_quick_walk:\nchan_setbank 7\nchan_setinstr 3\nchan_setlayer 0, .layer_2399\nchan_end\n\n.layer_2399:\nlayer_note1 27, 0x6, 100\nlayer_note1 29, 0x3, 70\nlayer_delay 0x1e\nlayer_end\n\n.sound_obj_koopa_walk:\nchan_setbank 7\nchan_setinstr 3\nchan_setlayer 0, .layer_23AA\nchan_end\n\n.layer_23AA:\nlayer_note1 20, 0x4, 100\nlayer_delay 0x1e\nlayer_end\n\n.sound_obj_bully_walking:\nchan_setbank 7\nchan_setinstr 3\nchan_setlayer 0, .layer_23B8\nchan_end\n\n.layer_23B8:\nlayer_portamento 0x82, 29, 255\nlayer_note1 46, 0xc, 80\nlayer_end\n\n.sound_obj_dorrie:\nchan_setbank 6\nchan_setinstr 4\nchan_setenvelope .envelope_32F4\nchan_setlayer 0, .layer_23CD\nchan_end\n\n.layer_unused_23CB:\nlayer_transpose 12\n\n.layer_23CD:\nlayer_somethingon\nlayer_portamento 0x85, 36, 255\nlayer_note1 48, 0x8, 100\nlayer_note1 45, 0x4, 100\nlayer_note1 48, 0xa, 100\nlayer_note1 41, 0x48, 100\nlayer_end\n\n.sound_obj_bowser_laugh:\nchan_setbank 6\nchan_setinstr 9\nchan_setval 25\nchan_call .set_reverb\nchan_setlayer 0, .layer_23EF\nchan_setlayer 1, .layer_23EF\nchan_end\n\n.layer_23EF:\nlayer_portamento 0x81, 20, 255\nlayer_note1 26, 0x12c, 127\nlayer_end\n\n.sound_obj_ukiki_chatter_short:\nchan_setbank 7\nchan_setinstr 7\nchan_setlayer 0, .layer_2400\nchan_end\n\n.layer_2400:\nlayer_portamento 0x81, 32, 221\nlayer_note1 34, 0xa, 115\nlayer_end\n\n.sound_obj_ukiki_chatter_idle:\nchan_setbank 7\nchan_setinstr 7\nchan_setlayer 0, .layer_2410\nchan_end\n\n.layer_2410:\nlayer_portamento 0x81, 34, 221\nlayer_note1 38, 0xc, 127\nlayer_portamento 0x82, 34, 221\nlayer_note1 39, 0x12, 127\nlayer_end\n\n.sound_obj_ukiki_step_default:\nchan_setbank 1\nchan_setinstr 1\nchan_setlayer 0, .layer_2427\nchan_end\n\n.layer_2427:\nlayer_portamento 0x81, 58, 255\nlayer_note1 52, 0x6, 105\nlayer_end\n\n.sound_obj_ukiki_step_leaves:\nchan_setbank 0\nchan_setinstr 1\nchan_setenvelope .envelope_32D4\nchan_setlayer 0, .layer_243A\nchan_end\n\n.layer_243A:\nlayer_note1 43, 0x6, 90\nlayer_note1 44, 0x6, 90\nlayer_end\n\n.sound_obj_koopa_talk:\nchan_setbank 7\nchan_setinstr 8\nchan_setlayer 0, .layer_2449\nchan_end\n\n.layer_2449:\nlayer_transpose -8\nlayer_call .layer_fn_244E\n\n.layer_fn_244E:\nlayer_portamento 0x85, 44, 255\nlayer_note1 51, 0x9, 100\nlayer_note1 39, 0xc, 100\nlayer_end\n\n.sound_obj_koopa_damage:\nchan_setbank 7\nchan_setinstr 8\nchan_setlayer 0, .layer_2461\nchan_end\n\n.layer_2461:\nlayer_transpose 10\nlayer_portamento 0x83, 32, 255\nlayer_note1 39, 0x6, 105\nlayer_note1 27, 0x12, 105\nlayer_end\n\n.sound_obj_klepto1:\nchan_setbank 7\nchan_setinstr 9\nchan_setlayer 0, .layer_2476\nchan_end\n\n.layer_2476:\nlayer_somethingon\nlayer_portamento 0x83, 39, 255\nlayer_note1 41, 0x6, 127\nlayer_note1 37, 0x24, 127\nlayer_end\n\n.sound_obj_klepto2:\nchan_setbank 7\nchan_setinstr 9\nchan_setlayer 0, .layer_248A\nchan_end\n\n.layer_248A:\nlayer_portamento 0x81, 48, 255\nlayer_note1 40, 0x24, 127\nlayer_end\n\n.sound_obj_king_bobomb_talk:\nchan_setbank 7\nchan_setinstr 9\nchan_setval 20\nchan_call .set_reverb\nchan_setlayer 0, .layer_249F\nchan_end\n\n.layer_249F:\nlayer_transpose -5\nlayer_call .layer_fn_24AF\nlayer_delay 0xb\nlayer_transpose -8\nlayer_call .layer_fn_24AF\nlayer_delay 0xa\nlayer_transpose -10\n\n.layer_fn_24AF:\nlayer_portamento 0x85, 29, 255\nlayer_note1 24, 0x2, 127\nlayer_note1 41, 0x10, 127\nlayer_end\n\n.sound_obj_king_bobomb_damage:\nchan_setbank 7\nchan_setinstr 9\nchan_setval 20\nchan_call .set_reverb\nchan_setlayer 0, .layer_24C7\nchan_end\n\n.layer_24C7:\nlayer_transpose -12\nlayer_portamento 0x85, 25, 255\nlayer_note1 39, 0x4, 127\nlayer_note1 29, 0x30, 127\nlayer_end\n\n.sound_obj_scuttlebug_walk:\nchan_setbank 7\nchan_setinstr 2\nchan_setlayer 0, .layer_24DC\nchan_end\n\n.layer_24DC:\nlayer_note1 44, 0x4, 127\nlayer_delay 0x14\nlayer_end\n\n.sound_obj_scuttlebug_alert:\nchan_setbank 9\nchan_setinstr 3\nchan_setlayer 0, .layer_24EA\nchan_end\n\n.layer_24EA:\nlayer_portamento 0x81, 24, 255\nlayer_note1 53, 0x12, 80\nlayer_end\n\n.sound_obj_baby_penguin_yell:\nchan_setbank 7\nchan_setinstr 10\nchan_setenvelope .envelope_3344\nchan_setlayer 0, .layer_24FD\nchan_end\n\n.layer_24FD:\nlayer_note1 50, 0x8, 105\nlayer_portamento 0x82, 46, 255\nlayer_note1 50, 0x30, 105\nlayer_end\n\n.sound_obj_king_bobomb_jump:\nchan_setbank 6\nchan_setinstr 1\nchan_setlayer 0, .layer_2510\nchan_end\n\n.layer_2510:\nlayer_portamento 0x81, 27, 255\nlayer_note1 43, 0x1e, 127\nlayer_end\n\n.sound_obj_king_whomp_death:\nchan_setbank 5\nchan_setinstr 7\nchan_setlayer 0, .layer_252C\nchan_setval 1\nchan_call .delay\nchan_setbank 7\nchan_setinstr 12\nchan_setlayer 1, .layer_26D7\nchan_end\n\n.layer_252C:\nlayer_note1 34, 0xaf, 127\nlayer_end\n\n.sound_obj_boo_laugh_long:\nchan_setbank 6\nchan_setinstr 9\nchan_setval 25\nchan_call .set_reverb\nchan_setlayer 0, .layer_253E\nchan_end\n\n.layer_253E:\nlayer_note1 55, 0x32, 127\nlayer_end\n\n.sound_obj_swoop:\nchan_setbank 7\nchan_setinstr 7\nchan_setlayer 0, .layer_254A\nchan_end\n\n.layer_254A:\nlayer_portamento 0x82, 51, 127\nlayer_note1 48, 0x6, 127\nlayer_end\n\n.sound_obj_eel:\nchan_setbank 6\nchan_setinstr 2\nchan_setval 25\nchan_call .set_reverb\nchan_setlayer 0, .layer_2564\nchan_setlayer 1, .layer_2562\nchan_end\n\n.layer_2562:\nlayer_delay 0x4\n\n.layer_2564:\nlayer_somethingon\nlayer_portamento 0x85, 31, 255\nlayer_note1 34, 0x18, 127\nlayer_note1 17, 0x48, 127\nlayer_end\n\n.sound_obj_eyerok_show_eye:\nchan_setbank 4\nchan_setinstr 15\nchan_setlayer 0, .layer_257D\nchan_setlayer 1, .layer_257B\nchan_end\n\n.layer_257B:\nlayer_transpose 4\n\n.layer_257D:\nlayer_jump .layer_11BB\n\n.sound_obj_mr_blizzard_alert:\nchan_setbank 9\nchan_setinstr 3\nchan_setval 24\nchan_call .set_reverb\nchan_setenvelope .envelope_3428\nchan_setvibratoextent 80\nchan_setvibratorate 60\nchan_setlayer 0, .layer_259B\nchan_setval 30\nchan_call .delay\nchan_setvibratoextent 0\nchan_end\n\n.layer_259B:\nlayer_somethingon\nlayer_portamento 0x85, 15, 255\nlayer_note1 3, 0x7, 100\nlayer_note1 36, 0x18, 100\nlayer_end\n\n.sound_obj_snufit_shoot:\nchan_setbank 6\nchan_setinstr 0\nchan_setenvelope .envelope_32D4\nchan_setlayer 0, .layer_25B2\nchan_end\n\n.layer_25B2:\nlayer_somethingon\nlayer_portamento 0x81, 44, 255\nlayer_note1 51, 0x8, 118\nlayer_end\n\n.sound_obj_skeeter_walk:\nchan_setbank 6\nchan_setinstr 7\nchan_setlayer 0, .layer_25CC\nchan_setval 1\nchan_call .delay\nchan_setbank 7\nchan_setinstr 2\nchan_end\n\n.layer_25CC:\nlayer_portamento 0x81, 3, 255\nlayer_note1 39, 0x5, 127\nlayer_portamento 0x81, 27, 255\nlayer_note1 49, 0x6, 127\nlayer_end\n\n.sound_obj_walking_water:\nchan_setbank 6\nchan_setinstr 7\nchan_setlayer 0, .layer_25EC\nchan_setval 1\nchan_call .delay\nchan_setbank 2\nchan_setinstr 1\nchan_end\n\n.layer_25EC:\nlayer_portamento 0x81, 3, 255\nlayer_note1 39, 0x5, 127\nlayer_portamento 0x83, 36, 255\nlayer_note1 48, 0x6, 92\nlayer_note1 55, 0x30, 92\nlayer_end\n\n.sound_obj_piranha_plant_appear:\nchan_setbank 3\nchan_setinstr 0\nchan_setenvelope .envelope_3324\nchan_setlayer 0, .layer_2609\nchan_end\n\n.layer_2609:\nlayer_portamento 0x82, 62, 255\nlayer_note1 38, 0x60, 117\nlayer_end\n\n.sound_obj_flame_blown:\nchan_setbank 7\nchan_setinstr 5\nchan_setenvelope .envelope_32F4\nchan_setlayer 0, .layer_261C\nchan_end\n\n.layer_261C:\nlayer_portamento 0x85, 41, 255\nlayer_note1 36, 0x18, 127\nlayer_end\n\n.sound_obj_mad_piano_chomping:\nchan_call .sound_obj_piranha_plant_bite\nchan_setval 1\nchan_call .delay\nchan_setbank 7\nchan_setinstr 13\nchan_setlayer 1, .layer_2655\nchan_setlayer 2, .layer_2659\nchan_setval 11\nchan_call .delay\nchan_call .sound_general_elevator_move\nchan_setval 20\nchan_call .delay\nchan_setbank 1\nchan_setinstr 4\nchan_setlayer 0, .layer_264B\nchan_end\n\n.layer_264B:\nlayer_note1 37, 0x8, 96\nlayer_note1 41, 0x6, 96\nlayer_note1 32, 0x18, 96\nlayer_end\n\n.layer_2655:\nlayer_note1 46, 0x32, 127\nlayer_end\n\n.layer_2659:\nlayer_note1 39, 0x32, 127\nlayer_end\n\n.sound_obj_large_bully_attacked:\nchan_setbank 7\nchan_setinstr 12\nchan_setlayer 0, .layer_2665\nchan_end\n\n.layer_2665:\nlayer_portamento 0x83, 27, 255\nlayer_note0 34, 0x12, 127, 127\nlayer_note1 20, 0x28, 127\nlayer_end\n\n.sound_obj_bobomb_buddy_talk:\nchan_setbank 8\nchan_setinstr 12\nchan_setvibratoextent 80\nchan_setvibratorate 5\nchan_setlayer 0, .layer_2684\nchan_setval 88\nchan_call .delay\nchan_setvibratoextent 0\nchan_end\n\n.layer_2684:\nlayer_portamento 0x83, 44, 200\nlayer_note0 49, 0xc, 127, 127\nlayer_note0 40, 0x12, 127, 155\nlayer_note0 39, 0xb, 127, 127\nlayer_portamento 0x83, 41, 200\nlayer_note0 51, 0xa, 127, 127\nlayer_note0 48, 0x12, 127, 80\nlayer_note0 46, 0xa, 127, 127\nlayer_note0 48, 0xb, 127, 127\nlayer_end\n\n.chan_26A9:\nchan_setbank 9\nchan_setinstr 3\nchan_setlayer 0, .layer_26B1\nchan_end\n\n.layer_26B1:\nlayer_portamento 0x85, 31, 255\nlayer_note1 8, 0x6, 100\nlayer_note1 32, 0xc, 100\nlayer_end\n\n.sound_obj_eyerok_sound_short:\nchan_setbank 7\nchan_setinstr 12\nchan_setlayer 0, .layer_26C7\nchan_setlayer 1, .layer_26C7\nchan_end\n\n.layer_26C7:\nlayer_portamento 0x81, 32, 255\nlayer_note1 22, 0x24, 110\nlayer_end\n\n.sound_obj_eyerok_sound_long:\nchan_setbank 7\nchan_setinstr 12\nchan_setlayer 0, .layer_26D7\nchan_end\n\n.layer_26D7:\nlayer_portamento 0x81, 26, 255\nlayer_note1 19, 0x60, 127\nlayer_end\n\n.sound_obj_wiggler_high_pitch:\nchan_setbank 6\nchan_setinstr 7\nchan_setlayer 0, .layer_26E7\nchan_end\n\n.layer_26E7:\nlayer_transpose 3\nlayer_note0 31, 0x8, 127, 70\nlayer_note0 30, 0x9, 127, 70\nlayer_note0 29, 0x8, 127, 70\nlayer_note0 28, 0x9, 127, 70\nlayer_end\n\n.sound_obj_heaveho_tossed:\nchan_setbank 6\nchan_setinstr 11\nchan_setlayer 0, .layer_2702\nchan_end\n\n.layer_2702:\nlayer_portamento 0x81, 12, 255\nlayer_note1 51, 0x24, 127\nlayer_end\n\n.sound_obj_bowser_intro_laugh:\nchan_setbank 6\nchan_setinstr 9\nchan_setval 25\nchan_call .set_reverb\nchan_setlayer 0, .layer_271A\nchan_setlayer 1, .layer_271A\nchan_end\n\n.layer_271A:\nlayer_delay 0xdc\n\n.layer_271D:\nlayer_portamento 0x81, 20, 255\nlayer_note1 26, 0xc8, 110\nlayer_end\n\n.sound_obj_enemy_death_high:\nchan_call .sound_obj_default_death\nchan_setval 1\nchan_call .delay\nchan_setbank 7\nchan_setinstr 8\nchan_setlayer 1, .layer_223D\nchan_end\n\n.sound_obj_enemy_death_low:\nchan_call .sound_obj_default_death\nchan_setval 1\nchan_call .delay\nchan_setbank 7\nchan_setinstr 8\nchan_setlayer 1, .layer_2746\nchan_end\n\n.layer_2746:\nlayer_note1 39, 0xe, 100\nlayer_portamento 0x81, 39, 255\nlayer_note1 27, 0x1c, 105\nlayer_end\n\n.sound_obj_swoop_death:\nchan_call .sound_obj_default_death\nchan_setval 1\nchan_call .delay\nchan_setbank 7\nchan_setinstr 7\nchan_setlayer 1, .layer_254A\nchan_end\n\n.sound_obj_koopa_flyguy_pokey_death:\nchan_call .sound_obj_default_death\nchan_setval 1\nchan_call .delay\nchan_setbank 7\nchan_setinstr 8\nchan_setlayer 1, .layer_2461\nchan_end\n\n.sound_obj_wiggler_death:\nchan_call .sound_obj_default_death\nchan_setval 1\nchan_call .delay\nchan_setbank 7\nchan_setinstr 0\nchan_setlayer 1, .layer_2219\nchan_end\n\n.sound_obj_snowman_bounce:\nchan_call .sound_obj_water_bomb_bouncing\nchan_setlayer 1, .layer_22F3\nchan_end\n\n.sound_obj_snowman_explode:\nchan_call .sound_general_explosion7\nchan_setval 12\nchan_call .delay\nchan_setbank 6\nchan_setinstr 1\nchan_setlayer 2, .layer_2798\nchan_end\n\n.layer_2798:\nlayer_note1 24, 0x46, 127\nlayer_end\n\n.sound_obj_bowser_teleport:\nchan_setbank 9\nchan_setinstr 3\nchan_setvibratoextent 80\nchan_setvibratorate 60\nchan_setenvelope .envelope_32E4\nchan_setlayer 0, .layer_27B7\nchan_setlayer 1, .layer_27B5\nchan_setval 56\nchan_call .delay\nchan_setvibratoextent 0\nchan_end\n\n.layer_27B5:\nlayer_transpose 1\n\n.layer_27B7:\nlayer_note1 15, 0x48, 127\nlayer_end\n\n.sound_obj_monty_mole_appear:\nchan_setbank 4\nchan_setinstr 15\nchan_setval 40\nchan_call .set_reverb\nchan_setenvelope .envelope_33BC\nchan_setlayer 0, .layer_27CB\nchan_end\n\n.layer_27CB:\nlayer_portamento 0x84, 3, 255\nlayer_note1 39, 0x7, 127\nlayer_note1 44, 0x8, 127\nlayer_note1 51, 0x7, 127\nlayer_note1 56, 0x8, 127\nlayer_end\n\n.sound_obj_pounding_loud:\nchan_setbank 6\nchan_setinstr 1\nchan_setval 55\nchan_call .set_reverb\nchan_setlayer 0, .layer_204E\nchan_end\n\n.sound_obj_boss_dialog_grunt:\nchan_setbank 7\nchan_setinstr 12\nchan_setlayer 0, .layer_27F1\nchan_end\n\n.layer_27F1:\nlayer_note1 29, 0x7, 127\nlayer_note0 31, 0x18, 127, 127\nlayer_note1 27, 0x26, 127\nlayer_end\n\n.sound_obj_mips_rabbit:\nchan_setbank 6\nchan_setinstr 0\nchan_setlayer 0, .layer_2804\nchan_end\n\n.layer_2804:\nlayer_somethingon\nlayer_portamento 0x85, 32, 255\nlayer_note1 46, 0x9, 80\nlayer_note1 36, 0xa, 90\nlayer_end\n\n.sound_obj_mri_spinning:\nchan_setbank 6\nchan_setinstr 11\nchan_setenvelope .envelope_3304\nchan_setlayer 0, .layer_281B\nchan_end\n\n.layer_281B:\nlayer_somethingon\nlayer_portamento 0x85, 19, 255\nlayer_note1 31, 0xe, 127\nlayer_note1 62, 0x8, 127\nlayer_end\n\n.sound_obj_mips_rabbit_water:\nchan_setbank 2\nchan_setinstr 1\nchan_setenvelope .envelope_32C4\nchan_setlayer 0, .layer_283E\nchan_setval 1\nchan_call .delay\nchan_setbank 6\nchan_setinstr 0\nchan_setlayer 1, .layer_2804\nchan_end\n\n.layer_283E:\nlayer_portamento 0x81, 47, 255\nlayer_note1 50, 0x18, 115\nlayer_end\n\n.sound_obj_eyerok_explode:\nchan_setbank 4\nchan_setinstr 9\nchan_setenvelope .envelope_32C4\nchan_setlayer 0, .layer_2854\nchan_setlayer 1, .layer_2856\nchan_end\n\n.layer_2854:\nlayer_setinstr 15\n\n.layer_2856:\nlayer_transpose 6\nlayer_call .layer_fn_119F\nlayer_transpose -9\nlayer_call .layer_fn_119F\nlayer_transpose -20\nlayer_jump .layer_fn_119F\n\n.sound_obj_chuckya_death:\nchan_call .sound_obj_king_whomp_death\nchan_setlayer 1, .layer_288B\nchan_setval 2\nchan_call .delay\nchan_setbank 8\nchan_setinstr 10\nchan_setlayer 2, .layer_2878\nchan_end\n\n.layer_2878:\nlayer_portamento 0x83, 43, 255\nlayer_note1 46, 0x9, 115\nlayer_somethingon\nlayer_portamento 0x85, 48, 255\nlayer_note1 50, 0x8, 127\nlayer_note1 44, 0x1e, 127\nlayer_end\n\n.layer_288B:\nlayer_transpose 2\nlayer_jump .layer_252C\n\n.sound_obj_wiggler_talk:\nchan_setbank 7\nchan_setinstr 10\nchan_setenvelope .envelope_3344\nchan_setlayer 0, .layer_289B\nchan_end\n\n.layer_289B:\nlayer_transpose 3\nlayer_portamento 0x81, 46, 255\nlayer_note1 55, 0xa, 105\nlayer_call .layer_fn_28BF\nlayer_delay 0xf\nlayer_portamento 0x81, 44, 255\nlayer_note0 53, 0xf, 105, 127\nlayer_portamento 0x81, 43, 255\nlayer_note1 51, 0xc, 105\nlayer_portamento 0x81, 46, 255\nlayer_note1 43, 0xe, 105\n\n.layer_fn_28BF:\nlayer_portamento 0x81, 43, 255\nlayer_note1 51, 0xc, 105\nlayer_end\n\n.sound_obj_wiggler_attacked:\nchan_setbank 7\nchan_setinstr 10\nchan_setenvelope .envelope_3344\nchan_setlayer 0, .layer_28D2\nchan_end\n\n.layer_28D2:\nlayer_transpose 6\nlayer_portamento 0x83, 53, 255\nlayer_note1 48, 0x8, 105\nlayer_note0 60, 0x9, 105, 100\nlayer_note1 39, 0xb, 105\nlayer_end\n\n.sound_obj_wiggler_low_pitch:\nchan_setbank 6\nchan_setinstr 7\nchan_setlayer 0, .layer_28EB\nchan_end\n\n.layer_28EB:\nlayer_transpose -2\nlayer_note0 31, 0xa, 127, 70\nlayer_note0 30, 0xb, 127, 70\nlayer_note0 29, 0xa, 127, 70\nlayer_note0 28, 0xc, 127, 70\nlayer_end\n\n.sound_obj_snufit_skeeter_death:\nchan_call .sound_obj_default_death\nchan_setval 1\nchan_call .delay\nchan_setbank 7\nchan_setinstr 10\nchan_setenvelope .envelope_3344\nchan_setlayer 1, .layer_2911\nchan_end\n\n.layer_2911:\nlayer_transpose 12\nlayer_portamento 0x83, 53, 255\nlayer_note1 48, 0x8, 105\nlayer_note0 60, 0x9, 105, 100\nlayer_note1 39, 0x14, 105\nlayer_end\n\n.sound_obj_bubba_chomp:\nchan_call .sound_obj_piranha_plant_bite\nchan_setval 10\nchan_call .delay\nchan_setbank 9\nchan_setinstr 0\nchan_setenvelope .envelope_340C\nchan_setlayer 0, .layer_2935\nchan_end\n\n.layer_2935:\nlayer_transpose 6\nlayer_portamento 0x85, 12, 255\nlayer_note1 0, 0x12, 127\nlayer_note1 10, 0x14, 127\nlayer_end\n\n.sound_obj_enemy_defeat_shrink:\nchan_setbank 7\nchan_setinstr 0\nchan_setlayer 0, .layer_2951\nchan_setlayer 1, .layer_294D\nchan_end\n\n.layer_294D:\nlayer_transpose 5\nlayer_delay 0x3\n\n.layer_2951:\nlayer_note1 43, 0x6, 105\nlayer_portamento 0x81, 32, 255\nlayer_note1 44, 0x8, 105\nlayer_portamento 0x81, 29, 255\nlayer_note1 41, 0xa, 105\nlayer_portamento 0x81, 26, 255\nlayer_note1 38, 0xd, 105\nlayer_portamento 0x81, 22, 255\nlayer_note1 34, 0x10, 105\nlayer_end\n\n.channel6_table:\nsound_ref .sound_air_bowser_spit_fire\nsound_ref .chan_29C2\nsound_ref .sound_air_lakitu_fly\nsound_ref .sound_air_amp_buzz\nsound_ref .sound_air_blow_fire\nsound_ref .sound_air_rough_slide\nsound_ref .sound_air_heaveho_move\nsound_ref .chan_2A3D\nsound_ref .sound_air_bobomb_lit_fuse\nsound_ref .sound_air_howling_wind\nsound_ref .sound_air_chuckya_move\nsound_ref .sound_air_peach_twinkle\nsound_ref .sound_air_bowser_spit_fire\nsound_ref .sound_air_bowser_spit_fire\nsound_ref .sound_air_bowser_spit_fire\nsound_ref .sound_air_bowser_spit_fire\nsound_ref .sound_air_castle_outdoors_ambient\nsound_ref .chan_29C2\nsound_ref .sound_air_bowser_spit_fire\nsound_ref .sound_air_bowser_spit_fire\nsound_ref .sound_air_bowser_spit_fire\nsound_ref .sound_air_bowser_spit_fire\nsound_ref .sound_air_bowser_spit_fire\nsound_ref .sound_air_bowser_spit_fire\nsound_ref .sound_air_bowser_spit_fire\nsound_ref .chan_29C2\nsound_ref .sound_air_bowser_spit_fire\nsound_ref .sound_air_bowser_spit_fire\nsound_ref .sound_air_bowser_spit_fire\nsound_ref .sound_air_bowser_spit_fire\nsound_ref .sound_air_bowser_spit_fire\nsound_ref .sound_air_bowser_spit_fire\n\n.sound_air_bowser_spit_fire:\nchan_setbank 7\nchan_setinstr 5\nchan_setlayer 0, .layer_29B9\nchan_end\n\n.layer_29B9:\nlayer_somethingon\n.layer_29BA:\nlayer_note1 39, 0x12c, 127\nlayer_jump .layer_29BA\nlayer_end\n\n.chan_29C2:\nchan_setbank 7\nchan_setinstr 6\nchan_setlayer 0, .layer_29CA\nchan_end\n\n.layer_29CA:\nlayer_somethingon\n.layer_29CB:\nlayer_note1 39, 0x12c, 90\nlayer_jump .layer_29CB\nlayer_end\n\n.sound_air_lakitu_fly:\nchan_setbank 9\nchan_setinstr 3\nchan_setenvelope .envelope_32E4\nchan_setlayer 0, .layer_29DE\nchan_end\n\n.layer_29DE:\nlayer_transpose 12\nlayer_somethingon\nlayer_portamento 0x85, 27, 255\n.layer_29E5:\nlayer_note1 51, 0x16, 50\nlayer_note1 27, 0x16, 50\nlayer_jump .layer_29E5\nlayer_end\n\n.sound_air_amp_buzz:\nchan_setbank 3\nchan_setinstr 9\nchan_setenvelope .envelope_32E4\nchan_setlayer 0, .layer_29FA\nchan_end\n\n.layer_29FA:\nlayer_somethingon\n.layer_29FB:\nlayer_note1 46, 0xc8, 92\nlayer_jump .layer_29FB\nlayer_end\n\n.sound_air_blow_fire:\nchan_setbank 7\nchan_setinstr 5\nchan_setenvelope .envelope_32E4\nchan_setlayer 0, .layer_2A0E\nchan_end\n\n.layer_2A0E:\nlayer_somethingon\n.layer_2A0F:\nlayer_note1 44, 0x12c, 127\nlayer_jump .layer_2A0F\nlayer_end\n\n.sound_air_rough_slide:\nchan_setbank 3\nchan_setinstr 6\nchan_setenvelope .envelope_32E4\nchan_setlayer 0, .layer_2A22\nchan_end\n\n.layer_2A22:\nlayer_somethingon\n.layer_2A23:\nlayer_note1 35, 0x12c, 127\nlayer_jump .layer_2A23\nlayer_end\n\n.sound_air_heaveho_move:\nchan_setbank 5\nchan_setinstr 5\nchan_setlayer 0, .layer_2A33\nchan_end\n\n.layer_2A33:\nlayer_note1 56, 0x4, 62\nlayer_note1 32, 0x3, 62\nlayer_jump .layer_2A33\nlayer_end\n\n.chan_2A3D:\nchan_setbank 9\nchan_setinstr 3\nchan_setlayer 0, .layer_2A45\nchan_end\n\n.layer_2A45:\nlayer_portamento 0x81, 24, 255\nlayer_note1 56, 0x10, 55\nlayer_jump .layer_2A45\nlayer_end\n\n.sound_air_bobomb_lit_fuse:\nchan_setbank 3\nchan_setinstr 5\nchan_setlayer 0, .layer_2A61\nchan_setval 1\nchan_call .delay\nchan_setbank 3\nchan_setinstr 8\nchan_end\n\n.layer_2A61:\nlayer_note1 48, 0x6, 100\nlayer_somethingon\n.layer_2A65:\nlayer_note1 44, 0x12c, 127\nlayer_jump .layer_2A65\nlayer_end\n\n.chan_unused_2A6D:\nchan_setbank 3\nchan_setinstr 6\nchan_setenvelope .envelope_32E4\nchan_setlayer 0, .layer_2A78\nchan_end\n\n.layer_2A78:\nlayer_somethingon\nlayer_note1 35, 0x12c, 100\nlayer_jump .layer_2A23\nlayer_end\n\n.sound_air_howling_wind:\nchan_setlayer 0, .layer_2AA7\nchan_setlayer 1, .layer_2AB7\nchan_setpanmix 0\n.chan_2A89:\nchan_setbank 5\nchan_setinstr 6\nchan_setdecayrelease 3\nchan_setval 1\nchan_call .delay\nchan_setbank 6\nchan_setinstr 9\nchan_setdecayrelease 3\nchan_setval 199\nchan_call .delay\nchan_setval 100\nchan_call .delay\nchan_jump .chan_2A89\n\n.layer_2AA7:\nlayer_somethingon\nlayer_portamento 0x85, 38, 255\n.layer_2AAC:\nlayer_note1 41, 0x12c, 127\nlayer_note1 38, 0x12c, 127\nlayer_jump .layer_2AAC\n\n.layer_2AB7:\nlayer_delay 1\nlayer_setpan 30\nlayer_note1 56, 0xc, 10\nlayer_delay 0x6c\nlayer_setpan 90\nlayer_note1 55, 0x1e, 35\nlayer_delay 0x3b\nlayer_setpan 55\nlayer_note1 56, 0x2e, 68\nlayer_delay 0x2d\nlayer_note1 58, 0x25, 34\nlayer_delay 0x2b\nlayer_setpan 91\nlayer_note1 53, 0x6, 55\nlayer_note1 55, 0x18, 70\nlayer_delay 0x2b\nlayer_setpan 21\nlayer_note1 56, 0x28, 52\nlayer_delay 0x1b\nlayer_note1 57, 0x18, 65\nlayer_delay 0x38\nlayer_setpan 75\nlayer_note1 53, 0x22, 67\nlayer_delay 0x4c\nlayer_setpan 105\nlayer_note1 53, 0x3, 54\nlayer_note1 55, 0x17, 61\nlayer_delay 0x43\nlayer_setpan 64\nlayer_note1 52, 0x28, 45\nlayer_delay 0x38\nlayer_jump .layer_2AB7\n\n.sound_air_chuckya_move:\nchan_setbank 5\nchan_setinstr 5\nchan_setenvelope .envelope_32C4\nchan_setlayer 0, .layer_2B0F\nchan_end\n\n.layer_2B0F:\nlayer_portamento 0x81, 56, 255\nlayer_note1 44, 0x3, 85\nlayer_note1 20, 0x2, 85\nlayer_jump .layer_2B0F\nlayer_end\n\n.channel7_table:\nsound_ref .sound_menu_change_select\nsound_ref .sound_menu_reverse_pause\nsound_ref .sound_menu_pause\nsound_ref .sound_menu_pause\nsound_ref .sound_menu_message_appear\nsound_ref .sound_menu_message_disappear\nsound_ref .sound_menu_camera_zoom_in\nsound_ref .sound_menu_camera_zoom_out\nsound_ref .sound_menu_pinch_mario_face\nsound_ref .sound_menu_let_go_mario_face\nsound_ref .sound_menu_hand_appear\nsound_ref .sound_menu_hand_disappear\nsound_ref .chan_2D18\nsound_ref .sound_menu_power_meter\nsound_ref .sound_menu_camera_buzz\nsound_ref .sound_menu_camera_turn\nsound_ref .chan_2DA8\nsound_ref .sound_menu_click_file_select\nsound_ref .sound_menu_read_sign\nsound_ref .sound_menu_message_next_page\nsound_ref .sound_menu_coin_its_a_me_mario\nsound_ref .sound_menu_yoshi_gain_lives\nsound_ref .sound_menu_enter_pipe\nsound_ref .sound_menu_exit_pipe\nsound_ref .sound_menu_bowser_laugh\nsound_ref .sound_menu_enter_hole\nsound_ref .sound_menu_click_change_view\nsound_ref .sound_menu_camera_unused1\nsound_ref .sound_menu_camera_unused2\nsound_ref .sound_menu_mario_castle_warp\nsound_ref .sound_menu_star_sound\nsound_ref .sound_menu_thank_you_playing_my_game\nsound_ref .sound_menu_read_a_sign\nsound_ref .sound_menu_exit_a_sign\nsound_ref .sound_menu_mario_castle_warp2\n#ifdef VERSION_JP\n  sound_ref .sound_menu_message_next_page\n  sound_ref .sound_menu_coin_its_a_me_mario\n  sound_ref .sound_menu_yoshi_gain_lives\n  sound_ref .sound_menu_enter_pipe\n  sound_ref .sound_menu_exit_pipe\n  sound_ref .sound_menu_bowser_laugh\n  sound_ref .sound_menu_enter_hole\n  sound_ref .sound_menu_click_change_view\n  sound_ref .sound_menu_camera_unused1\n  sound_ref .sound_menu_camera_unused2\n  sound_ref .sound_menu_mario_castle_warp\n  sound_ref .sound_menu_star_sound\n  sound_ref .sound_menu_change_select\n#else\n  sound_ref .sound_menu_star_sound_okey_dokey\n  sound_ref .sound_menu_star_sound_lets_a_go\n  sound_ref .sound_menu_yoshi_gain_lives\n  sound_ref .sound_menu_enter_pipe\n  sound_ref .sound_menu_exit_pipe\n  sound_ref .sound_menu_collect_red_coin\n  sound_ref .sound_menu_collect_red_coin\n  sound_ref .sound_menu_collect_red_coin\n  sound_ref .sound_menu_collect_red_coin\n  sound_ref .sound_menu_collect_red_coin\n  sound_ref .sound_menu_collect_red_coin\n  sound_ref .sound_menu_collect_red_coin\n  sound_ref .sound_menu_collect_red_coin\n  sound_ref .sound_menu_collect_secret\n  sound_ref .sound_menu_collect_secret\n  sound_ref .sound_menu_collect_secret\n  sound_ref .sound_menu_collect_secret\n  sound_ref .sound_menu_collect_secret\n  sound_ref .sound_menu_collect_secret\n  sound_ref .sound_menu_collect_secret\n  sound_ref .sound_menu_collect_secret\n  sound_ref .sound_menu_pinch_mario_face\n  sound_ref .sound_menu_let_go_mario_face\n  sound_ref .sound_menu_hand_appear\n  sound_ref .sound_menu_hand_disappear\n  sound_ref .chan_2D18\n  sound_ref .sound_menu_power_meter\n  sound_ref .sound_menu_camera_buzz\n  sound_ref .sound_menu_camera_turn\n#endif\n\n.sound_menu_change_select:\nchan_setbank 9\nchan_setinstr 1\nchan_setmutebhv 0x0\nchan_setnotepriority 14\nchan_setpanmix 0\nchan_setenvelope .envelope_340C\nchan_setlayer 0, .layer_2BB0\nchan_setlayer 1, .layer_2BBD\nchan_end\n\n.layer_2BB0:\nlayer_portamento 0x1, 35, 0xa\nlayer_note1 41, 0xa, 80\nlayer_setpan 0\nlayer_note1 41, 0xa, 80\nlayer_end\n\n.layer_2BBD:\nlayer_setpan 127\nlayer_delay 0xc\nlayer_note1 41, 0xa, 80\nlayer_end\n\n.sound_menu_reverse_pause:\nchan_setbank 9\nchan_setinstr 1\nchan_setmutebhv 0x0\nchan_setnotepriority 14\nchan_setpanmix 0\nchan_setlayer 0, .layer_2BD5\nchan_setlayer 1, .layer_2BEC\nchan_end\n\n.layer_2BD5:\nlayer_setpan 34\n.layer_2BD7:\nlayer_note0 45, 0xc, 80, 63\nlayer_note0 41, 0xc, 80, 63\nlayer_note0 48, 0xc, 80, 63\nlayer_note0 41, 0xc, 38, 63\nlayer_note0 48, 0xc, 38, 63\nlayer_end\n\n.layer_2BEC:\nlayer_setpan 94\nlayer_delay 0x2\nlayer_jump .layer_2BD7\n\n.sound_menu_pause:\nchan_setbank 9\nchan_setinstr 1\nchan_setmutebhv 0x0\nchan_setnotepriority 14\nchan_setpanmix 0\nchan_setlayer 0, .layer_2C03\nchan_setlayer 1, .layer_2C10\nchan_end\n\n.layer_2C03:\nlayer_note1 43, 0x9, 95\nlayer_note1 39, 0x9, 90\nlayer_note1 43, 0x9, 95\nlayer_note1 39, 0x9, 90\nlayer_end\n\n.layer_2C10:\nlayer_delay 0x8\nlayer_setpan 40\nlayer_note1 43, 0x9, 35\nlayer_setpan 88\nlayer_note1 39, 0x9, 35\nlayer_setpan 36\nlayer_note1 43, 0x9, 30\nlayer_setpan 92\nlayer_note1 39, 0x9, 30\nlayer_setpan 28\nlayer_note1 43, 0x9, 25\nlayer_setpan 100\nlayer_note1 39, 0x9, 25\nlayer_end\n\n.sound_menu_message_appear:\nchan_setbank 9\nchan_setnotepriority 14\nchan_setinstr 2\nchan_setlayer 0, .layer_2C3A\nchan_end\n\n.layer_2C3A:\nlayer_portamento 0x1, 32, 0x7f\nlayer_note1 56, 0x1e, 102\nlayer_end\n\n.sound_menu_message_disappear:\nchan_setnotepriority 14\nchan_setbank 9\nchan_setinstr 0\nchan_setenvelope .envelope_3438\nchan_setlayer 0, .layer_2C4E\nchan_end\n\n.layer_2C4E:\nlayer_portamento 0x1, 32, 0x7f\nlayer_note1 53, 0x1e, 78\nlayer_end\n\n.sound_menu_camera_zoom_out:\nchan_setmutebhv 0x0\nchan_setnotepriority 14\nchan_setbank 9\nchan_setinstr 3\nchan_setenvelope .envelope_341C\nchan_setlayer 0, .layer_2C64\nchan_end\n\n.layer_2C64:\nlayer_portamento 0x1, 32, 0x8\nlayer_note1 27, 0x8, 127\nlayer_portamento 0x81, 39, 255\nlayer_note1 20, 0x28, 127\nlayer_end\n\n.sound_menu_camera_zoom_in:\nchan_setmutebhv 0x0\nchan_setnotepriority 14\nchan_setbank 9\nchan_setinstr 3\nchan_setenvelope .envelope_3428\nchan_setlayer 0, .layer_2C81\nchan_end\n\n.layer_2C81:\nlayer_portamento 0x1, 27, 0x8\nlayer_note1 32, 0x8, 93\nlayer_portamento 0x81, 20, 255\nlayer_note1 39, 0x28, 93\nlayer_end\n\n.sound_menu_pinch_mario_face:\nchan_setbank 9\nchan_setnotepriority 14\nchan_setinstr 1\nchan_setenvelope .envelope_3444\nchan_setvibratorate 1\nchan_setvibratoextent 100\nchan_setlayer 0, .layer_2CA0\nchan_end\n\n.layer_2CA0:\nlayer_somethingon\nlayer_portamento 0x85, 27, 255\nlayer_note1 15, 0x6, 127\nlayer_note1 34, 0xc, 127\nlayer_end\n\n.sound_menu_let_go_mario_face:\nchan_setbank 9\nchan_setnotepriority 14\nchan_setinstr 1\nchan_setenvelope .envelope_3454\nchan_setvibratorate 25\nchan_setvibratoextent 80\nchan_setlayer 0, .layer_2CDA\nchan_setlayer 1, .layer_2CD6\nchan_setval 5\nchan_call .delay\nchan_setvibratorate 35\nchan_setvibratoextent 115\nchan_setval 55\nchan_call .delay\nchan_setvibratoextent 80\nchan_setval 67\nchan_call .delay\nchan_setvibratoextent 0\nchan_end\n\n.layer_2CD6:\nlayer_transpose 12\nlayer_delay 0x3\n\n.layer_2CDA:\nlayer_portamento 0x85, 24, 255\nlayer_note1 28, 0x5, 110\nlayer_note1 28, 0x78, 110\nlayer_end\n\n.sound_menu_hand_appear:\nchan_setbank 9\nchan_setnotepriority 14\nchan_setinstr 3\nchan_setlayer 0, .layer_2CF3\nchan_setlayer 1, .layer_2CF1\nchan_end\n\n.layer_2CF1:\nlayer_delay 0x2\n\n.layer_2CF3:\nlayer_portamento 0x85, 47, 255\nlayer_note1 35, 0x8, 90\nlayer_note1 47, 0x10, 90\nlayer_end\n\n.sound_menu_hand_disappear:\nchan_setbank 9\nchan_setnotepriority 14\nchan_setinstr 3\nchan_setlayer 0, .layer_2D0C\nchan_setlayer 1, .layer_2D0A\nchan_end\n\n.layer_2D0A:\nlayer_delay 0x2\n\n.layer_2D0C:\nlayer_portamento 0x85, 35, 255\nlayer_note1 47, 0x8, 90\nlayer_note1 35, 0x10, 90\nlayer_disableportamento\nlayer_end\n\n.chan_2D18:\nchan_setbank 9\nchan_setnotepriority 14\nchan_setpanmix 0\nchan_setinstr 3\nchan_setenvelope .envelope_3454\nchan_setlayer 0, .layer_2D26\nchan_end\n\n.layer_2D26:\nlayer_note1 45, 0x6, 100\nlayer_note1 57, 0x6, 100\nlayer_note1 57, 0xc, 100\nlayer_setpan 10\nlayer_note1 57, 0x6, 57\nlayer_note1 57, 0xc, 57\nlayer_setpan 117\nlayer_note1 57, 0x6, 38\nlayer_note1 57, 0xc, 38\nlayer_end\n\n.sound_menu_power_meter:\nchan_setbank 9\nchan_setnotepriority 14\nchan_setpanmix 0\nchan_setinstr 3\nchan_setenvelope .envelope_3454\nchan_setval 25\nchan_call .set_reverb\nchan_setlayer 0, .layer_2D53\nchan_end\n\n.layer_2D53:\nlayer_setpan 30\nlayer_note1 44, 0x5, 105\nlayer_setpan 50\nlayer_note1 47, 0x5, 105\nlayer_setpan 77\nlayer_note1 52, 0x5, 105\nlayer_setpan 97\nlayer_note1 56, 0xa, 105\nlayer_setpan 30\nlayer_note1 52, 0x5, 45\nlayer_setpan 97\nlayer_note1 56, 0xa, 45\nlayer_setpan 30\nlayer_note1 52, 0x5, 32\nlayer_setpan 97\nlayer_note1 56, 0xa, 32\nlayer_end\n\n.sound_menu_camera_buzz:\nchan_setmutebhv 0x0\nchan_setnotepriority 14\nchan_setbank 9\nchan_setinstr 4\nchan_setlayer 0, .layer_2D87\nchan_end\n\n.layer_2D87:\nlayer_note1 39, 0x18, 105\nlayer_end\n\n.sound_menu_camera_turn:\nchan_setmutebhv 0x0\nchan_setnotepriority 14\nchan_setbank 9\nchan_setinstr 3\nchan_setenvelope .envelope_3428\nchan_setlayer 0, .layer_2D99\nchan_end\n\n.layer_2D99:\nlayer_portamento 0x81, 23, 255\nlayer_note1 35, 0x9, 96\nlayer_portamento 0x81, 36, 255\nlayer_note1 43, 0x44, 100\nlayer_end\n\n.chan_2DA8:\nchan_setnotepriority 14\nchan_setbank 9\nchan_setinstr 3\nchan_setlayer 0, .layer_2DB1\nchan_end\n\n.layer_2DB1:\nlayer_delay 1\nlayer_end\n\n.sound_menu_click_file_select:\nchan_setmutebhv 0x0\nchan_setnotepriority 14\nchan_setbank 6\nchan_setinstr 11\nchan_setlayer 0, .layer_2DBF\nchan_end\n\n.layer_2DBF:\nlayer_portamento 0x81, 32, 255\nlayer_note0 39, 0x5, 115, 255\nlayer_portamento 0x81, 44, 255\nlayer_note0 51, 0x3, 115, 255\nlayer_end\n\n.sound_menu_read_sign:\nchan_setmutebhv 0x0\nchan_setbank 9\nchan_setinstr 1\nchan_setval 60\nchan_call .set_reverb\nchan_setlayer 0, .layer_2DDF\nchan_end\n\n.layer_2DDF:\nlayer_note1 46, 0x3, 90\nlayer_note1 46, 0x3, 30\nlayer_note1 58, 0x3, 90\nlayer_note1 58, 0x3, 30\nlayer_note1 46, 0x3, 90\nlayer_note1 46, 0x3, 30\nlayer_end\n\n.sound_menu_message_next_page:\nchan_setbank 9\nchan_setinstr 0\nchan_setenvelope .envelope_32C4\nchan_setlayer 0, .layer_2DFD\nchan_end\n\n.layer_2DFD:\nlayer_portamento 0x81, 15, 255\nlayer_note1 51, 0x5, 73\nlayer_end\n\n.sound_menu_coin_its_a_me_mario:\nchan_setbank 9\nchan_setinstr 3\nchan_setenvelope .envelope_3358\nchan_setvibratoextent 3\nchan_setvibratorate 60\nchan_setval 25\nchan_call .set_reverb\nchan_setlayer 0, .layer_2E28\nchan_setlayer 1, .layer_2E3D\nchan_setlayer 2, .layer_2E34\nchan_setval 70\nchan_call .delay\nchan_setbank 10\nchan_setinstr 8\nchan_end\n\n.layer_2E28:\nlayer_call .layer_11E4\nlayer_delay 0x12\nlayer_transpose 0\nlayer_note1 39, 0xc8, 120\nlayer_end\n\n.layer_2E34:\nlayer_delay 0x6e\nlayer_transpose 0\nlayer_note1 39, 0xc8, 31\nlayer_end\n\n.layer_2E3D:\nlayer_transpose 24\nlayer_delay 0x1e\nlayer_note1 25, 0x2, 18\nlayer_note1 37, 0x7, 36\nlayer_note1 30, 0x5, 18\nlayer_note1 42, 0x37, 36\nlayer_end\n\n.sound_menu_yoshi_gain_lives:\nchan_setbank 9\nchan_setnotepriority 14\nchan_setpanmix 0\nchan_setinstr 3\nchan_setenvelope .envelope_3454\nchan_setval 25\nchan_call .set_reverb\nchan_setpanmix 0\nchan_stereoheadseteffects 1\nchan_setlayer 0, .layer_2E65\nchan_end\n\n.layer_2E65:\nlayer_note1 46, 0x5, 105\nlayer_note1 53, 0x5, 105\nlayer_note1 58, 0x5, 105\nlayer_setpan 30\nlayer_note1 53, 0x5, 50\nlayer_setpan 98\nlayer_note1 58, 0x5, 50\nlayer_setpan 20\nlayer_note1 53, 0x5, 20\nlayer_setpan 108\nlayer_note1 58, 0x5, 20\nlayer_end\n\n.sound_menu_enter_pipe:\nchan_reservenotes 4\nchan_setbank 9\nchan_setinstr 2\nchan_setpanmix 0\nchan_stereoheadseteffects 1\nchan_setval 30\nchan_call .set_reverb\nchan_setenvelope .envelope_33BC\nchan_setdecayrelease 220\nchan_setlayer 0, .layer_2EA3\nchan_setlayer 1, .layer_2E9E\nchan_end\n\n.layer_2E9E:\nlayer_transpose -12\nlayer_jump .layer_2EA5\n\n.layer_2EA3:\nlayer_transpose -24\n.layer_2EA5:\nlayer_call .layer_fn_2EAB\nlayer_call .layer_fn_2EAB\n\n.layer_fn_2EAB:\nlayer_portamento 0x85, 60, 192\nlayer_setpan 117\nlayer_note1 60, 0x3, 126\nlayer_setpan 105\nlayer_note1 58, 0x3, 126\nlayer_setpan 93\nlayer_note1 55, 0x3, 126\nlayer_setpan 81\nlayer_note1 51, 0x3, 126\nlayer_setpan 46\nlayer_note1 50, 0x3, 126\nlayer_setpan 34\nlayer_note1 46, 0x3, 126\nlayer_setpan 22\nlayer_note1 44, 0x3, 126\nlayer_setpan 10\nlayer_note1 41, 0x3, 126\nlayer_end\n\n.sound_menu_exit_pipe:\nchan_reservenotes 4\nchan_setbank 9\nchan_setinstr 2\n#if defined(VERSION_SH) || defined(VERSION_CN)\n  chan_setval 15\n  .set EXIT_PIPE_NOTE_VELOCITY, 106\n#else\n  chan_setval 30\n  .set EXIT_PIPE_NOTE_VELOCITY, 126\n#endif\nchan_call .set_reverb\nchan_setenvelope .envelope_3464\nchan_setdecayrelease 220\nchan_setlayer 0, .layer_2EF4\nchan_setlayer 1, .layer_2EEF\nchan_end\n\n.layer_2EEF:\nlayer_transpose 24\nlayer_jump .layer_2EF6\n\n.layer_2EF4:\nlayer_transpose 12\n.layer_2EF6:\nlayer_portamento 0x85, 15, 128\nlayer_note1 15, 0x3, EXIT_PIPE_NOTE_VELOCITY\nlayer_note1 19, 0x3, EXIT_PIPE_NOTE_VELOCITY\nlayer_note1 22, 0x3, EXIT_PIPE_NOTE_VELOCITY\nlayer_note1 27, 0x3, EXIT_PIPE_NOTE_VELOCITY\nlayer_note1 22, 0x3, EXIT_PIPE_NOTE_VELOCITY\nlayer_note1 27, 0x3, EXIT_PIPE_NOTE_VELOCITY\nlayer_note1 31, 0x3, EXIT_PIPE_NOTE_VELOCITY\nlayer_note1 34, 0x3, EXIT_PIPE_NOTE_VELOCITY\nlayer_note1 39, 0x3, EXIT_PIPE_NOTE_VELOCITY\nlayer_note1 34, 0x3, EXIT_PIPE_NOTE_VELOCITY\nlayer_note1 23, 0x3, EXIT_PIPE_NOTE_VELOCITY\nlayer_note1 27, 0x3, EXIT_PIPE_NOTE_VELOCITY\nlayer_note1 30, 0x3, EXIT_PIPE_NOTE_VELOCITY\nlayer_note1 35, 0x3, EXIT_PIPE_NOTE_VELOCITY\nlayer_note1 30, 0x3, EXIT_PIPE_NOTE_VELOCITY\nlayer_note1 35, 0x3, EXIT_PIPE_NOTE_VELOCITY\nlayer_note1 39, 0x3, EXIT_PIPE_NOTE_VELOCITY\nlayer_note1 42, 0x3, EXIT_PIPE_NOTE_VELOCITY\nlayer_note1 47, 0x3, EXIT_PIPE_NOTE_VELOCITY\nlayer_note1 42, 0x3, EXIT_PIPE_NOTE_VELOCITY\nlayer_note1 25, 0x3, EXIT_PIPE_NOTE_VELOCITY\nlayer_note1 29, 0x3, EXIT_PIPE_NOTE_VELOCITY\nlayer_note1 32, 0x3, EXIT_PIPE_NOTE_VELOCITY\nlayer_note1 37, 0x3, EXIT_PIPE_NOTE_VELOCITY\nlayer_note1 32, 0x3, EXIT_PIPE_NOTE_VELOCITY\nlayer_note1 37, 0x3, EXIT_PIPE_NOTE_VELOCITY\nlayer_note1 41, 0x3, EXIT_PIPE_NOTE_VELOCITY\nlayer_note1 44, 0x3, EXIT_PIPE_NOTE_VELOCITY\nlayer_note1 49, 0x3, EXIT_PIPE_NOTE_VELOCITY\nlayer_note1 44, 0x3, EXIT_PIPE_NOTE_VELOCITY\nlayer_end\n\n.sound_menu_bowser_laugh:\nchan_setbank 6\nchan_setinstr 9\nchan_setval 25\nchan_call .set_reverb\nchan_setlayer 0, .layer_271D\nchan_setlayer 1, .layer_271D\nchan_end\n\n.sound_menu_click_change_view:\nchan_setbank 9\nchan_setinstr 5\nchan_setlayer 0, .layer_2F6D\nchan_end\n\n.layer_2F6D:\nlayer_note1 39, 0x30, 127\nlayer_end\n\n.sound_menu_camera_unused1:\nchan_setbank 9\nchan_setinstr 3\nchan_setenvelope .envelope_32D4\nchan_setlayer 0, .layer_2F7C\nchan_end\n\n.layer_2F7C:\nlayer_transpose -12\nlayer_portamento 0x83, 3, 255\nlayer_note1 15, 0xa, 127\nlayer_somethingon\nlayer_transpose 0\nlayer_note1 46, 0x64, 127\nlayer_end\n\n.sound_menu_camera_unused2:\nchan_setbank 9\nchan_setinstr 3\nchan_setlayer 0, .layer_2F97\nchan_setenvelope .envelope_32D4\nchan_end\n\n.layer_2F97:\nlayer_portamento 0x81, 3, 255\nlayer_note1 15, 0xc, 127\nlayer_portamento 0x81, 39, 255\nlayer_note1 3, 0x64, 127\nlayer_end\n\n.sound_menu_mario_castle_warp:\nchan_setbank 9\nchan_setnotepriority 14\nchan_setpanmix 0\nchan_setinstr 3\nchan_setenvelope .envelope_340C\nchan_setreverb 30\nchan_setlayer 0, .layer_3032\nchan_setlayer 1, .layer_2FB9\nchan_end\n\n.layer_2FB9:\nlayer_transpose -24\nlayer_setpan 24\nlayer_call .layer_fn_300D\nlayer_transpose -12\nlayer_setpan 44\nlayer_call .layer_fn_300D\nlayer_transpose 0\n\n.layer_2FC9:\nlayer_setpan 64\nlayer_call .layer_fn_300D\nlayer_transpose 12\nlayer_setpan 84\nlayer_call .layer_fn_300D\nlayer_transpose 24\nlayer_setpan 104\nlayer_call .layer_fn_300D\nlayer_setpan 24\nlayer_note1 56, 0x2, 100\nlayer_note1 56, 0x1, 50\nlayer_setpan 104\nlayer_note1 60, 0x14, 70\nlayer_note1 60, 0xa, 30\nlayer_setpan 24\nlayer_note1 56, 0x2, 50\nlayer_note1 56, 0x1, 20\nlayer_setpan 104\nlayer_note1 60, 0x14, 30\nlayer_note1 60, 0xa, 10\nlayer_setpan 24\nlayer_note1 56, 0x2, 30\nlayer_note1 56, 0x1, 10\nlayer_setpan 104\nlayer_note1 60, 0x14, 20\nlayer_note1 60, 0xa, 7\nlayer_end\n\n.layer_fn_300D:\nlayer_note1 51, 0x2, 50\nlayer_note1 39, 0x1, 40\nlayer_note1 39, 0x2, 20\nlayer_note1 55, 0x2, 50\nlayer_note1 43, 0x1, 40\nlayer_note1 43, 0x2, 20\nlayer_note1 56, 0x2, 50\nlayer_note1 44, 0x1, 40\nlayer_note1 44, 0x2, 20\nlayer_note1 60, 0x2, 50\nlayer_note1 48, 0x1, 40\nlayer_note1 48, 0x2, 20\nlayer_end\n\n.layer_3032:\nlayer_transpose -24\nlayer_call .layer_fn_3072\nlayer_transpose -12\nlayer_call .layer_fn_3072\nlayer_transpose 0\nlayer_call .layer_fn_3072\n\n.layer_3041:\nlayer_transpose 12\nlayer_call .layer_fn_3072\nlayer_transpose 24\nlayer_call .layer_fn_3072\nlayer_setpan 64\nlayer_note1 44, 0x1, 100\nlayer_note1 56, 0x2, 50\nlayer_note1 48, 0xa, 70\nlayer_note1 60, 0x14, 30\nlayer_note1 44, 0x1, 50\nlayer_note1 56, 0x2, 20\nlayer_note1 48, 0xa, 30\nlayer_note1 60, 0x14, 10\nlayer_note1 44, 0x1, 30\nlayer_note1 56, 0x2, 10\nlayer_note1 48, 0xa, 20\nlayer_note1 60, 0x14, 7\nlayer_end\n\n.layer_fn_3072:\nlayer_setpan 54\nlayer_note1 39, 0x3, 100\nlayer_note1 51, 0x1, 50\nlayer_note1 51, 0x1, 20\nlayer_setpan 74\nlayer_note1 43, 0x3, 100\nlayer_note1 55, 0x1, 50\nlayer_note1 55, 0x1, 20\nlayer_setpan 54\nlayer_note1 44, 0x3, 100\nlayer_note1 56, 0x1, 50\nlayer_note1 56, 0x1, 20\nlayer_setpan 74\nlayer_note1 48, 0x3, 100\nlayer_note1 60, 0x1, 50\nlayer_note1 60, 0x1, 20\nlayer_end\n\n.sound_menu_thank_you_playing_my_game:\nchan_setbank 10\nchan_setinstr 14\nchan_setlayer 0, .layer_30AA\nchan_setlayer 1, .layer_30AF\nchan_end\n\n.layer_30AA:\nlayer_note1 39, 0xfa, 127\nlayer_end\n\n.layer_30AF:\nlayer_delay 0x9\nlayer_note1 39, 0xf1, 45\nlayer_end\n\n.sound_menu_read_a_sign:\nchan_setbank 9\nchan_setinstr 1\nchan_setlayer 0, .layer_30BE\nchan_end\n\n.layer_30BE:\nlayer_note1 46, 0x3, 90\nlayer_note1 46, 0x3, 30\nlayer_note1 58, 0x3, 90\nlayer_note1 58, 0x3, 30\nlayer_end\n\n.sound_menu_exit_a_sign:\nchan_setbank 9\nchan_setinstr 1\nchan_setlayer 0, .layer_30D3\nchan_end\n\n.layer_30D3:\nlayer_note1 58, 0x3, 90\nlayer_note1 58, 0x3, 30\nlayer_note1 46, 0x3, 90\nlayer_note1 46, 0x3, 30\nlayer_end\n\n.sound_menu_mario_castle_warp2:\nchan_reservenotes 6\nchan_setbank 9\nchan_setnotepriority 14\nchan_setpanmix 0\nchan_setinstr 3\nchan_setenvelope .envelope_340C\nchan_setreverb 30\nchan_setlayer 0, .layer_3041\nchan_setlayer 1, .layer_2FC9\nchan_end\n\n#ifndef VERSION_JP\n  .sound_menu_star_sound_okey_dokey:\n  chan_setbank 4\n  chan_setinstr 14\n  chan_setlayer 0, .layer_1344\n  chan_setval 1\n  chan_call .delay\n  chan_setbank 10\n  chan_setinstr 12\n  chan_setlayer 1, .layer_E3A\n  chan_end\n\n  .sound_menu_star_sound_lets_a_go:\n  chan_setbank 8\n  chan_setinstr 26\n  chan_setlayer 0, .layer_311D\n  chan_setval 1\n  chan_call .delay\n  chan_setbank 4\n  chan_setinstr 14\n  chan_setlayer 1, .layer_1344\n  chan_end\n\n  .layer_311D:\n  layer_note1 39, 0xb4, 127\n  layer_end\n\n  .sound_menu_collect_red_coin:\n  chan_setinstr 128\n  chan_setnotepriority 14\n  chan_setpanmix 0\n  chan_setenvelope .envelope_3378\n  chan_ioreadval 4\n  chan_subtract 0x28\n  chan_readseq .major_scale\n  chan_writeseq 0, .transpose_by_coin_index, 1\n  chan_setlayer 0, .layer_3146\n  chan_setlayer 1, .layer_3168\n  chan_setlayer 2, .layer_3148\n  chan_end\n\n  .major_scale:\n  .byte 0\n  .byte 2\n  .byte 4\n  .byte 5\n  .byte 7\n  .byte 9\n  .byte 11\n  .byte 12\n\n  .layer_3146:\n  layer_delay 0x6\n\n  #if defined(VERSION_SH) || defined(VERSION_CN)\n    .set RED_COIN_NOTE_VELOCITY_SUB, 10\n  #else\n    .set RED_COIN_NOTE_VELOCITY_SUB, 0\n  #endif\n\n  .layer_3148:\n  layer_call .transpose_by_coin_index\n  layer_note0 46, 0xc, (75 - RED_COIN_NOTE_VELOCITY_SUB), 20\n  layer_note0 45, 0xc, (75 - RED_COIN_NOTE_VELOCITY_SUB), 20\n  layer_note0 46, 0xc, (75 - RED_COIN_NOTE_VELOCITY_SUB), 20\n  layer_note0 58, 0x10, (80 - RED_COIN_NOTE_VELOCITY_SUB), 80\n  layer_note0 58, 0x10, (45 - RED_COIN_NOTE_VELOCITY_SUB), 80\n  layer_note0 58, 0x10, (20 - RED_COIN_NOTE_VELOCITY_SUB), 80\n  layer_note0 58, 0x10, (15 - RED_COIN_NOTE_VELOCITY_SUB), 80\n\n  layer_end\n\n  .layer_3168:\n  layer_call .transpose_by_coin_index\n  layer_note0 41, 0xc, (75 - RED_COIN_NOTE_VELOCITY_SUB), 20\n  layer_note0 40, 0xc, (75 - RED_COIN_NOTE_VELOCITY_SUB), 20\n  layer_note0 41, 0xc, (75 - RED_COIN_NOTE_VELOCITY_SUB), 20\n  layer_note0 53, 0x10, (80 - RED_COIN_NOTE_VELOCITY_SUB), 80\n  layer_note0 53, 0x10, (45 - RED_COIN_NOTE_VELOCITY_SUB), 80\n  layer_note0 53, 0x10, (20 - RED_COIN_NOTE_VELOCITY_SUB), 80\n  layer_note0 53, 0x10, (15 - RED_COIN_NOTE_VELOCITY_SUB), 80\n  layer_end\n\n  .transpose_by_coin_index:\n  layer_transpose 0\n  layer_end\n\n  .sound_menu_collect_secret:\n  chan_setbank 4\n  chan_setinstr 14\n  chan_setnotepriority 14\n  chan_setpanmix 0\n  chan_ioreadval 4\n  chan_subtract 0x30\n  chan_readseq .major_scale\n  chan_writeseq 0, .layer_31A0, 1\n  chan_setlayer 0, .layer_31A0\n  chan_end\n\n  .layer_31A0:\n  layer_transpose 0\n  layer_note1 32, 0x7f, 115\n  layer_end\n#endif\n\n.sound_general_bird_chirp2:\nchan_setbank 5\nchan_setinstr 9\nchan_setval 40\nchan_call .set_reverb\nchan_setlayer 0, .layer_31B3\nchan_end\n\n.layer_31B3:\nlayer_delay 0x4b\nlayer_note0 39, 0xf5, 100, 127\nlayer_note0 39, 0xa, 85, 127\nlayer_note0 40, 0x123, 98, 127\nlayer_note0 39, 0x91, 75, 127\nlayer_note0 41, 0xbd, 84, 127\nlayer_note0 39, 0x4b, 73, 127\nlayer_note0 39, 0x96, 94, 127\nlayer_note0 36, 0x74, 78, 127\nlayer_jump .layer_31B3\nlayer_end\n\n.sound_obj_bird_chirp3:\nchan_setbank 5\nchan_setinstr 10\nchan_setval 60\nchan_call .set_reverb\nchan_setlayer 0, .layer_31EB\nchan_end\n\n.layer_31EB:\nlayer_delay 0x14\nlayer_note1 39, 0x71, 70\nlayer_note1 37, 0xd3, 62\nlayer_note1 39, 0x48, 84\nlayer_note1 40, 0x71, 49\nlayer_note1 39, 0xa8, 65\nlayer_note1 41, 0x86, 59\nlayer_note1 41, 0x31, 54\nlayer_note1 38, 0x6f, 51\nlayer_note1 39, 0xc7, 79\nlayer_note1 35, 0xe9, 74\nlayer_jump .layer_31EB\nlayer_end\n\n.sound_obj_bird_chirp1:\nchan_setbank 5\nchan_setinstr 12\nchan_setval 30\nchan_call .set_reverb\nchan_setlayer 0, .layer_3221\nchan_end\n\n.layer_3221:\nlayer_delay 0x32\nlayer_note1 41, 0x31, 66\nlayer_delay 0x9f\nlayer_note1 39, 0x31, 51\nlayer_delay 0xf9\nlayer_note1 38, 0x1d, 60\nlayer_note1 41, 0x4c, 77\nlayer_delay_long 0x64\nlayer_note1 42, 0x31, 59\nlayer_delay 0x159\nlayer_note1 36, 0x4f, 61\nlayer_delay 0xc6\nlayer_jump .layer_3221\nlayer_end\n\n.sound_air_castle_outdoors_ambient:\nchan_setbank 5\nchan_setval 15\nchan_call .set_reverb\nchan_setlayer 0, .layer_3259\nchan_setlayer 1, .layer_327F\nchan_setlayer 2, .layer_3281\nchan_end\n\n.layer_3259:\nlayer_setinstr 8\nlayer_delay 0x18\nlayer_note1 41, 0x9, 26\nlayer_note1 37, 0xbc, 22\nlayer_note1 39, 0x71, 33\nlayer_note1 40, 0xd7, 33\nlayer_note1 39, 0x54, 39\nlayer_note1 39, 0x6f, 31\nlayer_note1 43, 0xa8, 26\nlayer_note1 40, 0xe1, 22\nlayer_note1 38, 0x74, 31\nlayer_jump .layer_3259\n\n.layer_327F:\nlayer_transpose 12\n\n.layer_3281:\nlayer_setinstr 13\nlayer_somethingon\nlayer_delay 0xf\n.layer_3286:\nlayer_note1 39, 0x12c, 25\nlayer_jump .layer_3286\n\n.sound_general_switch_tick_slow:\nchan_setval 18\nchan_jump .chan_3294\n\n.sound_general_switch_tick_fast:\nchan_setval 42\n.chan_3294:\nchan_writeseq 0, .layer_32BF, 1\nchan_reservenotes 4\nchan_setbank 4\nchan_setinstr 2\nchan_setenvelope .envelope_3314\nchan_setdecayrelease 15\nchan_setlayer 0, .layer_32B7\nchan_setlayer 1, .layer_32B3\n.chan_32A9:\nchan_delay1\nchan_ioreadval 0\nchan_iowriteval 0\nchan_subtract 255\nchan_beqz .chan_32A9\nchan_unreservenotes\nchan_end\n\n.layer_32B3:\nlayer_setinstr 9\nlayer_transpose 12\n\n.layer_32B7:\nlayer_note0 50, 0x3, 127, 127\nlayer_note0 38, 0x3, 127, 127\n.layer_32BF:\nlayer_delay 0x2a\nlayer_jump .layer_32B7\n\n.align 2, 0\n.envelope_32C4:\nenvelope_line 7 20000\nenvelope_line 6 32700\nenvelope_line 32700 32700\nenvelope_goto 2\n\n.envelope_32D4:\nenvelope_line 9 15000\nenvelope_line 7 32700\nenvelope_line 32700 32700\nenvelope_goto 2\n\n.envelope_32E4:\nenvelope_line 10 10000\nenvelope_line 100 32700\nenvelope_line 32700 32700\nenvelope_goto 2\n\n.envelope_32F4:\nenvelope_line 35 32700\nenvelope_line 10 32700\nenvelope_line 300 0\nenvelope_goto 2\n\n.envelope_3304:\nenvelope_line 15 20000\nenvelope_line 5 32700\nenvelope_line 32700 32700\nenvelope_goto 2\n\n.envelope_3314:\nenvelope_line 8 32700\nenvelope_line 50 32700\nenvelope_line 300 0\nenvelope_goto 2\n\n.envelope_3324:\nenvelope_line 100 25000\nenvelope_line 35 32700\nenvelope_line 300 5000\nenvelope_goto 2\n\n.envelope_3334:\nenvelope_line 25 32700\nenvelope_line 4 22500\nenvelope_line 35 32700\nenvelope_goto 2\n\n.envelope_3344:\nenvelope_line 1 32700\nenvelope_line 10 30000\nenvelope_line 50 30000\nenvelope_line 100 0\nenvelope_goto 3\n\n.envelope_3358:\nenvelope_line 4 32700\nenvelope_line 100 15000\nenvelope_line 1000 0\nenvelope_goto 2\n\n.envelope_3368:\nenvelope_line 10 32700\nenvelope_line 1 32700\nenvelope_line 10 0\nenvelope_goto 2\n\n#ifndef VERSION_JP\n  .envelope_3378:\n  envelope_line 3 32700\n  envelope_line 10 30000\n  envelope_line 10 10000\n  envelope_line 100 0\n  envelope_goto 3\n#endif\n\n.envelope_338C:\nenvelope_line 1 32700\nenvelope_line 20 32700\nenvelope_line 600 6000\nenvelope_goto 2\n\n.envelope_unused_339C:\nenvelope_line 1 32700\nenvelope_line 20 32700\nenvelope_line 100 18000\nenvelope_goto 2\n\n.envelope_33AC:\nenvelope_line 1 32700\nenvelope_line 20 32700\nenvelope_line 300 6000\nenvelope_goto 2\n\n.envelope_33BC:\nenvelope_line 7 18000\nenvelope_line 4 32760\nenvelope_line 30 0\nenvelope_goto 2\n\n.envelope_33CC:\nenvelope_line 19 32700\nenvelope_line 5 32700\nenvelope_line 15 0\nenvelope_goto 2\n\n.envelope_33DC:\nenvelope_line 25 32700\nenvelope_line 9 32700\nenvelope_line 9 0\nenvelope_goto 2\n\n.envelope_33EC:\nenvelope_line 1 32700\nenvelope_line 100 32760\nenvelope_line 300 0\nenvelope_goto 2\n\n.envelope_33FC:\nenvelope_line 22 32700\nenvelope_line 50 32760\nenvelope_line 70 0\nenvelope_goto 2\n\n.envelope_340C:\nenvelope_line 5 32760\nenvelope_line 192 0\nenvelope_line 1000 1000\nenvelope_goto 2\n\n.envelope_341C:\nenvelope_line 25 32760\nenvelope_line 60 10000\n#if defined(VERSION_SH) || defined(VERSION_CN)\n  envelope_hang\n#else\n  envelope_goto 2\n#endif\n\n.envelope_3428:\nenvelope_line 1 10000\nenvelope_line 1 10000\nenvelope_line 40 32760\nenvelope_goto 2\n\n.envelope_3438:\nenvelope_line 23 32760\nenvelope_line 80 15000\nenvelope_goto 2\n\n.envelope_3444:\nenvelope_line 22 32760\nenvelope_line 50 32760\nenvelope_line 100 25000\nenvelope_goto 2\n\n.envelope_3454:\nenvelope_line 13 32760\nenvelope_line 50 32760\nenvelope_line 200 0\nenvelope_goto 2\n\n.envelope_3464:\nenvelope_line 6 12000\nenvelope_line 4 32760\nenvelope_line 50 32760\nenvelope_line 200 0\nenvelope_goto 2\n\n.envelope_unused_3478:\nenvelope_line 1 32700\nenvelope_line 1000 32700\nenvelope_line 10 16000\nenvelope_line 200 32760\nenvelope_goto 3\n"
  },
  {
    "path": "sound/sequences.json",
    "content": "{\n    \"comment\": \"This file lists all sequences together with the sound banks they use. If a sequence uses multiple banks, the first bank will be used by default, and it can switch between them using the chan_setbank command; e.g. chan_setbank 0 will switch to the first bank in the given list.\",\n    \"00_sound_player\": [\"00\", \"01_terrain\", \"02_water\", \"03\", \"04\", \"05\", \"06\", \"07\", \"08_mario\", \"09\", \"0A_mario_peach\"],\n    \"01_cutscene_collect_star\": [\"22\"],\n    \"02_menu_title_screen\": [\"11\"],\n    \"03_level_grass\": [\"22\"],\n    \"04_level_inside_castle\": [\"0E\"],\n    \"05_level_water\": [\"13\"],\n    \"06_level_hot\": [\"0F\"],\n    \"07_level_boss_koopa\": [\"12\"],\n    \"08_level_snow\": [\"0B\"],\n    \"09_level_slide\": [\"0D\"],\n    \"0A_level_spooky\": [\"10\", \"21\"],\n    \"0B_event_piranha_plant\": [\"14_piranha_music_box\"],\n    \"0C_level_underground\": [\"15\"],\n    \"0D_menu_star_select\": [\"16_course_start\"],\n    \"0E_event_powerup\": [\"17\"],\n    \"0F_event_metal_cap\": [\"18\"],\n    \"10_event_koopa_message\": [\"12\"],\n    \"11_level_koopa_road\": [\"19\"],\n    \"12_event_high_score\": [\"1F\"],\n    \"13_event_merry_go_round\": [\"21\"],\n    \"14_event_race\": [\"1A\"],\n    \"15_cutscene_star_spawn\": [\"0E\"],\n    \"16_event_boss\": [\"1B\"],\n    \"17_cutscene_collect_key\": [\"1A\"],\n    \"18_event_endless_stairs\": [\"1C_endless_stairs\"],\n    \"19_level_boss_koopa_final\": [\"1D_bowser_organ\"],\n    \"1A_cutscene_credits\": [\"25\"],\n    \"1B_event_solve_puzzle\": [\"14_piranha_music_box\"],\n    \"1C_event_toad_message\": [\"20\"],\n    \"1D_event_peach_message\": [\"1E\"],\n    \"1E_cutscene_intro\": [\"1B\"],\n    \"1F_cutscene_victory\": [\"1A\"],\n    \"20_cutscene_ending\": [\"23\"],\n    \"21_menu_file_select\": [\"24\"],\n    \"22_cutscene_lakitu\": {\"ifdef\": [\"VERSION_US\", \"VERSION_EU\", \"VERSION_SH\", \"VERSION_CN\"], \"banks\": [\"1B\"]}\n}\n"
  },
  {
    "path": "sound/sound_banks/00.json",
    "content": "{\n    \"date\": \"1996-02-14\",\n    \"sample_bank\": \"sfx_1\",\n    \"envelopes\": {\n        \"envelope0\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ]\n    },\n    \"instruments\": {\n        \"inst0\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"00_twirl\"\n        },\n        \"inst1\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"01_brushing\"\n        },\n        \"inst2\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"02_hand_touch\"\n        },\n        \"inst3\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"03_yoshi\"\n        },\n        \"inst4\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"04_plop\"\n        },\n        \"inst5\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"05_heavy_landing\"\n        }\n    },\n    \"instrument_list\": [\n        \"inst0\",\n        \"inst1\",\n        \"inst2\",\n        \"inst3\",\n        \"inst4\",\n        \"inst5\"\n    ]\n}\n"
  },
  {
    "path": "sound/sound_banks/01_terrain.json",
    "content": "{\n    \"date\": \"1996-02-14\",\n    \"sample_bank\": \"sfx_terrain\",\n    \"envelopes\": {\n        \"envelope0\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope1\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ]\n    },\n    \"instruments\": {\n        \"inst0\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"00_step_default\"\n        },\n        \"inst1\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"01_step_grass\"\n        },\n        \"inst2\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"02_step_stone\"\n        },\n        \"inst3\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"03_step_spooky\"\n        },\n        \"inst4\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"04_step_snow\"\n        },\n        \"inst5\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"05_step_ice\"\n        },\n        \"inst6\": {\n            \"release_rate\": 48,\n            \"envelope\": \"envelope1\",\n            \"sound\": \"06_step_metal\"\n        },\n        \"inst7\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"07_step_sand\"\n        }\n    },\n    \"instrument_list\": [\n        \"inst0\",\n        \"inst1\",\n        null,\n        \"inst2\",\n        \"inst3\",\n        \"inst4\",\n        \"inst5\",\n        \"inst6\",\n        \"inst7\"\n    ]\n}\n"
  },
  {
    "path": "sound/sound_banks/02_water.json",
    "content": "{\n    \"date\": \"1996-02-14\",\n    \"sample_bank\": \"sfx_water\",\n    \"envelopes\": {\n        \"envelope0\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ]\n    },\n    \"instruments\": {\n        \"inst0\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"00_plunge\"\n        },\n        \"inst1\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"01_splash\"\n        },\n        \"inst2\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"02_swim\"\n        }\n    },\n    \"instrument_list\": [\n        \"inst0\",\n        \"inst1\",\n        \"inst2\"\n    ]\n}\n"
  },
  {
    "path": "sound/sound_banks/03.json",
    "content": "{\n    \"date\": \"1996-02-14\",\n    \"sample_bank\": \"sfx_4\",\n    \"envelopes\": {\n        \"envelope0\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ]\n    },\n    \"instruments\": {\n        \"inst0\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"00\"\n        },\n        \"inst1\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"01\"\n        },\n        \"inst2\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"02\"\n        },\n        \"inst3\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"03\"\n        },\n        \"inst4\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"04\"\n        },\n        \"inst5\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"05\"\n        },\n        \"inst6\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"06\"\n        },\n        \"inst7\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"07\"\n        },\n        \"inst8\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"08\"\n        },\n        \"inst9\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"09\"\n        }\n    },\n    \"instrument_list\": [\n        \"inst0\",\n        \"inst1\",\n        \"inst2\",\n        \"inst3\",\n        \"inst4\",\n        \"inst5\",\n        \"inst6\",\n        \"inst7\",\n        \"inst8\",\n        \"inst9\"\n    ]\n}\n"
  },
  {
    "path": "sound/sound_banks/04.json",
    "content": "{\n    \"date\": \"1996-02-14\",\n    \"sample_bank\": \"sfx_5\",\n    \"envelopes\": {\n        \"envelope0\": [\n            [2, 32700],\n            [10, 29000],\n            [32700, 26430],\n            \"hang\"\n        ],\n        \"envelope1_unused\": [\n            \"stop\",\n            [1, 0],\n            [1, 32700],\n            [1, 32700],\n            [32700, 29430],\n            [\"goto\", 3]\n        ],\n        \"envelope2\": [\n            [2, 32700],\n            [10, 29000],\n            [32700, 26430],\n            \"hang\"\n        ],\n        \"envelope3\": [\n            [2, 32700],\n            [10, 29000],\n            [32700, 26430],\n            \"hang\"\n        ],\n        \"envelope4\": [\n            [2, 32700],\n            [10, 29000],\n            [32700, 26430],\n            \"hang\"\n        ],\n        \"envelope5\": [\n            [2, 32700],\n            [10, 29000],\n            [32700, 26430],\n            \"hang\"\n        ],\n        \"envelope6\": [\n            [2, 32700],\n            [10, 29000],\n            [32700, 26430],\n            \"hang\"\n        ],\n        \"envelope7_unused\": [\n            \"stop\",\n            [1, 0],\n            [3, 32700],\n            [10, 29000],\n            [32700, 26430],\n            [\"goto\", 3]\n        ],\n        \"envelope8\": [\n            [1, 0],\n            [3, 32700],\n            [10, 29000],\n            [32700, 26430],\n            \"hang\"\n        ],\n        \"envelope9\": [\n            [2, 32700],\n            [10, 29000],\n            [32700, 26430],\n            \"hang\"\n        ],\n        \"envelope10\": [\n            [2, 32700],\n            [10, 29000],\n            [32700, 26430],\n            \"hang\"\n        ]\n    },\n    \"instruments\": {\n        \"inst0\": {\n            \"release_rate\": 123,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"00\"\n        },\n        \"inst1\": {\n            \"release_rate\": 137,\n            \"envelope\": \"envelope2\",\n            \"sound\": \"01\"\n        },\n        \"inst2\": {\n            \"release_rate\": 142,\n            \"envelope\": \"envelope3\",\n            \"sound\": \"02\"\n        },\n        \"inst3\": {\n            \"release_rate\": 114,\n            \"envelope\": \"envelope4\",\n            \"sound\": \"03\"\n        },\n        \"inst4\": {\n            \"release_rate\": 137,\n            \"envelope\": \"envelope2\",\n            \"sound\": \"04\"\n        },\n        \"inst5\": {\n            \"release_rate\": 128,\n            \"envelope\": \"envelope5\",\n            \"sound\": \"05\"\n        },\n        \"inst6\": {\n            \"release_rate\": 119,\n            \"envelope\": \"envelope6\",\n            \"sound\": \"06\"\n        },\n        \"inst7\": {\n            \"release_rate\": 123,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"07\"\n        },\n        \"inst8\": {\n            \"release_rate\": 161,\n            \"envelope\": \"envelope8\",\n            \"sound\": \"08\"\n        },\n        \"inst9\": {\n            \"release_rate\": 114,\n            \"envelope\": \"envelope4\",\n            \"sound\": \"09\"\n        },\n        \"inst10\": {\n            \"release_rate\": 128,\n            \"envelope\": \"envelope5\",\n            \"sound\": \"0A\"\n        },\n        \"inst11\": {\n            \"release_rate\": 137,\n            \"envelope\": \"envelope2\",\n            \"sound\": \"0B\"\n        },\n        \"inst12\": {\n            \"release_rate\": 133,\n            \"envelope\": \"envelope9\",\n            \"sound\": \"0C\"\n        },\n        \"inst13\": {\n            \"release_rate\": 152,\n            \"envelope\": \"envelope10\",\n            \"sound\": \"0D\"\n        }\n    },\n    \"instrument_list\": [\n        \"inst0\",\n        \"inst1\",\n        \"inst2\",\n        \"inst3\",\n        \"inst4\",\n        \"inst5\",\n        \"inst6\",\n        null,\n        \"inst7\",\n        \"inst8\",\n        \"inst9\",\n        \"inst10\",\n        null,\n        \"inst11\",\n        \"inst12\",\n        \"inst13\"\n    ]\n}\n"
  },
  {
    "path": "sound/sound_banks/05.json",
    "content": "{\n    \"date\": \"1996-02-14\",\n    \"sample_bank\": \"sfx_5\",\n    \"envelopes\": {\n        \"envelope0\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope1\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ]\n    },\n    \"instruments\": {\n        \"inst0\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"0E\"\n        },\n        \"inst1\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"0F\"\n        },\n        \"inst2\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"10\"\n        },\n        \"inst3\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"11\"\n        },\n        \"inst4\": {\n            \"release_rate\": 142,\n            \"envelope\": \"envelope1\",\n            \"sound\": \"02\"\n        },\n        \"inst5\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"12\"\n        },\n        \"inst6\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"13\"\n        },\n        \"inst7\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"14\"\n        },\n        \"inst8\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"15\"\n        },\n        \"inst9\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"16\"\n        },\n        \"inst10\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"17\"\n        },\n        \"inst11\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"18\"\n        },\n        \"inst12\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"19\"\n        },\n        \"inst13\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"1A\"\n        },\n        \"inst14\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"1B\"\n        },\n        \"inst15\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"1C\"\n        }\n    },\n    \"instrument_list\": [\n        \"inst0\",\n        \"inst1\",\n        \"inst2\",\n        \"inst3\",\n        \"inst4\",\n        \"inst5\",\n        \"inst6\",\n        \"inst7\",\n        \"inst8\",\n        \"inst9\",\n        \"inst10\",\n        \"inst11\",\n        \"inst12\",\n        \"inst13\",\n        \"inst14\",\n        \"inst15\"\n    ]\n}\n"
  },
  {
    "path": "sound/sound_banks/06.json",
    "content": "{\n    \"date\": \"1996-02-14\",\n    \"sample_bank\": \"sfx_6\",\n    \"envelopes\": {\n        \"envelope0\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope1\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope2\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope3\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope4\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope5\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope6\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope7\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope8\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope9\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ]\n    },\n    \"instruments\": {\n        \"inst0\": {\n            \"release_rate\": 62,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"00\"\n        },\n        \"inst1\": {\n            \"release_rate\": 57,\n            \"envelope\": \"envelope1\",\n            \"sound\": \"01\"\n        },\n        \"inst2\": {\n            \"release_rate\": 133,\n            \"envelope\": \"envelope2\",\n            \"sound\": \"02\"\n        },\n        \"inst3\": {\n            \"release_rate\": 48,\n            \"envelope\": \"envelope3\",\n            \"sound\": \"03\"\n        },\n        \"inst4\": {\n            \"release_rate\": 43,\n            \"envelope\": \"envelope4\",\n            \"sound\": \"04\"\n        },\n        \"inst5\": {\n            \"release_rate\": 19,\n            \"envelope\": \"envelope5\",\n            \"sound\": \"05\"\n        },\n        \"inst6\": {\n            \"release_rate\": 43,\n            \"envelope\": \"envelope4\",\n            \"sound\": \"06\"\n        },\n        \"inst7\": {\n            \"release_rate\": 38,\n            \"envelope\": \"envelope6\",\n            \"sound\": \"07\"\n        },\n        \"inst8\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope7\",\n            \"sound\": \"08\"\n        },\n        \"inst9\": {\n            \"release_rate\": 57,\n            \"envelope\": \"envelope1\",\n            \"sound\": \"09\"\n        },\n        \"inst10\": {\n            \"release_rate\": 53,\n            \"envelope\": \"envelope8\",\n            \"sound\": \"0A\"\n        },\n        \"inst11\": {\n            \"release_rate\": 62,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"0B\"\n        },\n        \"inst12\": {\n            \"release_rate\": 29,\n            \"envelope\": \"envelope9\",\n            \"sound\": \"0C\"\n        },\n        \"inst13\": {\n            \"release_rate\": 48,\n            \"envelope\": \"envelope3\",\n            \"sound\": \"0D\"\n        }\n    },\n    \"instrument_list\": [\n        \"inst0\",\n        \"inst1\",\n        \"inst2\",\n        null,\n        \"inst3\",\n        \"inst4\",\n        \"inst5\",\n        \"inst6\",\n        \"inst7\",\n        \"inst8\",\n        \"inst9\",\n        \"inst10\",\n        \"inst11\",\n        null,\n        \"inst12\",\n        \"inst13\"\n    ]\n}\n"
  },
  {
    "path": "sound/sound_banks/07.json",
    "content": "{\n    \"date\": \"1996-02-14\",\n    \"sample_bank\": \"sfx_7\",\n    \"envelopes\": {\n        \"envelope0\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope1\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope2\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope3\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope4\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope5\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ]\n    },\n    \"instruments\": {\n        \"inst0\": {\n            \"release_rate\": 29,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"00\"\n        },\n        \"inst1\": {\n            \"release_rate\": 48,\n            \"envelope\": \"envelope1\",\n            \"sound\": \"01\"\n        },\n        \"inst2\": {\n            \"release_rate\": 90,\n            \"envelope\": \"envelope2\",\n            \"sound\": \"02\"\n        },\n        \"inst3\": {\n            \"release_rate\": 48,\n            \"envelope\": \"envelope1\",\n            \"sound\": \"03\"\n        },\n        \"inst4\": {\n            \"release_rate\": 24,\n            \"envelope\": \"envelope3\",\n            \"sound\": \"04\"\n        },\n        \"inst5\": {\n            \"release_rate\": 109,\n            \"envelope\": \"envelope4\",\n            \"sound\": \"05\"\n        },\n        \"inst6\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope5\",\n            \"sound\": \"06\"\n        },\n        \"inst7\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope5\",\n            \"sound\": \"07\"\n        },\n        \"inst8\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope5\",\n            \"sound\": \"08\"\n        },\n        \"inst9\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope5\",\n            \"sound\": \"09\"\n        },\n        \"inst10\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope5\",\n            \"sound\": \"0A\"\n        },\n        \"inst11\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope5\",\n            \"sound\": \"0B\"\n        },\n        \"inst12\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope5\",\n            \"sound\": \"0C\"\n        },\n        \"inst13\": {\n            \"ifdef\": [\"VERSION_US\", \"VERSION_EU\", \"VERSION_SH\", \"VERSION_CN\"],\n            \"release_rate\": 208,\n            \"envelope\": \"envelope5\",\n            \"sound\": \"0D_chain_chomp_bark\"\n        }\n    },\n    \"instrument_list\": [\n        \"inst0\",\n        \"inst1\",\n        \"inst2\",\n        \"inst3\",\n        null,\n        \"inst4\",\n        \"inst5\",\n        \"inst6\",\n        \"inst7\",\n        \"inst8\",\n        \"inst9\",\n        \"inst10\",\n        \"inst11\",\n        \"inst12\",\n        \"inst13\"\n    ]\n}\n"
  },
  {
    "path": "sound/sound_banks/08_mario.json",
    "content": "{\n    \"date\": \"1996-02-14\",\n    \"sample_bank\": \"sfx_mario\",\n    \"envelopes\": {\n        \"envelope0\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ]\n    },\n    \"instruments\": {\n        \"inst0\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"00_mario_jump_hoo\"\n        },\n        \"inst1\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"01_mario_jump_wah\"\n        },\n        \"inst2\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"02_mario_yah\"\n        },\n        \"inst3\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"03_mario_haha\"\n        },\n        \"inst4\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"04_mario_yahoo\"\n        },\n        \"inst5\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"05_mario_uh\"\n        },\n        \"inst6\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"06_mario_hrmm\"\n        },\n        \"inst7\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"07_mario_wah2\"\n        },\n        \"inst8\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"08_mario_whoa\"\n        },\n        \"inst9\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"09_mario_eeuh\"\n        },\n        \"inst10\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"0A_mario_attacked\"\n        },\n        \"inst11\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"0B_mario_ooof\"\n        },\n        \"inst12\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"0C_mario_here_we_go\"\n        },\n        \"inst13\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"0D_mario_yawning\"\n        },\n        \"inst14\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"0E_mario_snoring1\"\n        },\n        \"inst15\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"0F_mario_snoring2\"\n        },\n        \"inst16\": {\n            \"ifdef\": [\"VERSION_US\", \"VERSION_EU\", \"VERSION_SH\", \"VERSION_CN\"],\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"10_mario_doh\"\n        },\n        \"inst17\": {\n            \"ifdef\": [\"VERSION_US\", \"VERSION_EU\", \"VERSION_SH\", \"VERSION_CN\"],\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"11_mario_game_over\"\n        },\n        \"inst18\": {\n            \"ifdef\": [\"VERSION_US\", \"VERSION_EU\", \"VERSION_SH\", \"VERSION_CN\"],\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"12_mario_hello\"\n        },\n        \"inst19\": {\n            \"ifdef\": [\"VERSION_US\", \"VERSION_EU\", \"VERSION_SH\", \"VERSION_CN\"],\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"13_mario_press_start_to_play\"\n        },\n        \"inst20\": {\n            \"ifdef\": [\"VERSION_US\", \"VERSION_EU\", \"VERSION_SH\", \"VERSION_CN\"],\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"14_mario_twirl_bounce\"\n        },\n        \"inst21\": {\n            \"ifdef\": [\"VERSION_US\", \"VERSION_EU\", \"VERSION_SH\", \"VERSION_CN\"],\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"15_mario_snoring3\"\n        },\n        \"inst22\": {\n            \"ifdef\": [\"VERSION_US\", \"VERSION_EU\", \"VERSION_SH\", \"VERSION_CN\"],\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": {\"ifdef\": [\"VERSION_SH\", \"VERSION_CN\"], \"then\": \"16_mario_bye_bye\", \"else\": \"16_mario_so_longa_bowser\"}\n        },\n        \"inst23\": {\n            \"ifdef\": [\"VERSION_US\", \"VERSION_EU\", \"VERSION_SH\", \"VERSION_CN\"],\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"17_mario_ima_tired\"\n        },\n        \"inst24\": {\n            \"ifdef\": [\"VERSION_US\", \"VERSION_EU\", \"VERSION_SH\", \"VERSION_CN\"],\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"18_mario_waha\"\n        },\n        \"inst25\": {\n            \"ifdef\": [\"VERSION_US\", \"VERSION_EU\", \"VERSION_SH\", \"VERSION_CN\"],\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"19_mario_yippee\"\n        },\n        \"inst26\": {\n            \"ifdef\": [\"VERSION_US\", \"VERSION_EU\", \"VERSION_SH\", \"VERSION_CN\"],\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"1A_mario_lets_a_go\"\n        }\n    },\n    \"instrument_list\": [\n        \"inst0\",\n        \"inst1\",\n        \"inst2\",\n        \"inst3\",\n        \"inst4\",\n        \"inst5\",\n        \"inst6\",\n        \"inst7\",\n        \"inst8\",\n        \"inst9\",\n        \"inst10\",\n        \"inst11\",\n        \"inst12\",\n        \"inst13\",\n        \"inst14\",\n        \"inst15\",\n        \"inst16\",\n        \"inst17\",\n        \"inst18\",\n        \"inst19\",\n        \"inst20\",\n        \"inst21\",\n        \"inst22\",\n        \"inst23\",\n        \"inst24\",\n        \"inst25\",\n        \"inst26\"\n    ]\n}\n"
  },
  {
    "path": "sound/sound_banks/09.json",
    "content": "{\n    \"date\": \"1996-02-14\",\n    \"sample_bank\": \"sfx_9\",\n    \"envelopes\": {\n        \"envelope0\": [\n            [1, 0],\n            [1, 32700],\n            [1, 32700],\n            [32700, 29430],\n            [\"goto\", 2]\n        ],\n        \"envelope1\": [\n            [1, 0],\n            [1, 32700],\n            [1, 32700],\n            [32700, 19620],\n            [\"goto\", 2]\n        ],\n        \"envelope2\": [\n            [1, 0],\n            [1, 10000],\n            [30, 10000],\n            [30, 32700],\n            [\"goto\", 2]\n        ]\n    },\n    \"instruments\": {\n        \"inst0\": {\n            \"release_rate\": 208,\n            \"normal_range_hi\": 50,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"00\",\n            \"sound_hi\": \"01\"\n        },\n        \"inst1\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope1\",\n            \"sound\": \"02\"\n        },\n        \"inst2\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope2\",\n            \"sound\": \"00\"\n        },\n        \"inst3\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"03\"\n        },\n        \"inst4\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"04_camera_buzz\"\n        },\n        \"inst5\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"05_camera_shutter\"\n        },\n        \"inst6\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"06\"\n        }\n    },\n    \"instrument_list\": [\n        \"inst0\",\n        \"inst1\",\n        \"inst2\",\n        \"inst3\",\n        \"inst4\",\n        \"inst5\",\n        \"inst6\"\n    ]\n}\n"
  },
  {
    "path": "sound/sound_banks/0A_mario_peach.json",
    "content": "{\n    \"date\": \"1996-02-14\",\n    \"sample_bank\": \"sfx_mario_peach\",\n    \"envelopes\": {\n        \"envelope0\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ]\n    },\n    \"instruments\": {\n        \"inst0\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"00_mario_waaaooow\"\n        },\n        \"inst1\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"01_mario_hoohoo\"\n        },\n        \"inst2\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"02_mario_panting\"\n        },\n        \"inst3\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"03_mario_dying\"\n        },\n        \"inst4\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"04_mario_on_fire\"\n        },\n        \"inst5\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"05_mario_uh2\"\n        },\n        \"inst6\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"06_mario_coughing\"\n        },\n        \"inst7\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"07_mario_its_a_me_mario\"\n        },\n        \"inst8\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"08_mario_punch_yah\"\n        },\n        \"inst9\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"09_mario_punch_hoo\"\n        },\n        \"inst10\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"0A_mario_mama_mia\"\n        },\n        \"inst11\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"0B_mario_okey_dokey\"\n        },\n        \"inst12\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"0C_mario_drowning\"\n        },\n        \"inst13\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"0D_mario_thank_you_playing_my_game\"\n        },\n        \"inst14\": {\n            \"ifdef\": [\"VERSION_US\", \"VERSION_EU\", \"VERSION_SH\", \"VERSION_CN\"],\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"0E_peach_dear_mario\"\n        },\n        \"inst15\": {\n            \"ifdef\": [\"VERSION_US\", \"VERSION_EU\", \"VERSION_SH\", \"VERSION_CN\"],\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"0F_peach_mario\"\n        },\n        \"inst16\": {\n            \"ifdef\": [\"VERSION_US\", \"VERSION_EU\", \"VERSION_SH\", \"VERSION_CN\"],\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"10_peach_power_of_the_stars\"\n        },\n        \"inst17\": {\n            \"ifdef\": [\"VERSION_US\", \"VERSION_EU\", \"VERSION_SH\", \"VERSION_CN\"],\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"11_peach_thanks_to_you\"\n        },\n        \"inst18\": {\n            \"ifdef\": [\"VERSION_US\", \"VERSION_EU\", \"VERSION_SH\", \"VERSION_CN\"],\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"12_peach_thank_you_mario\"\n        },\n        \"inst19\": {\n            \"ifdef\": [\"VERSION_US\", \"VERSION_EU\", \"VERSION_SH\", \"VERSION_CN\"],\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"13_peach_something_special\"\n        },\n        \"inst20\": {\n            \"ifdef\": [\"VERSION_US\", \"VERSION_EU\", \"VERSION_SH\", \"VERSION_CN\"],\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"14_peach_bake_a_cake\"\n        },\n        \"inst21\": {\n            \"ifdef\": [\"VERSION_US\", \"VERSION_EU\", \"VERSION_SH\", \"VERSION_CN\"],\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"15_peach_for_mario\"\n        },\n        \"inst22\": {\n            \"ifdef\": [\"VERSION_US\", \"VERSION_EU\", \"VERSION_SH\", \"VERSION_CN\"],\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"16_peach_mario2\"\n        }\n    },\n    \"instrument_list\": [\n        \"inst0\",\n        \"inst1\",\n        \"inst2\",\n        null,\n        \"inst3\",\n        \"inst4\",\n        \"inst5\",\n        \"inst6\",\n        \"inst7\",\n        \"inst8\",\n        \"inst9\",\n        \"inst10\",\n        \"inst11\",\n        \"inst12\",\n        \"inst13\",\n        \"inst14\",\n        \"inst15\",\n        \"inst16\",\n        \"inst17\",\n        \"inst18\",\n        \"inst19\",\n        \"inst20\",\n        \"inst21\",\n        \"inst22\"\n    ]\n}\n"
  },
  {
    "path": "sound/sound_banks/0B.json",
    "content": "{\n    \"date\": \"1996-03-19\",\n    \"sample_bank\": \"instruments\",\n    \"envelopes\": {\n        \"envelope0\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope1\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope2\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope3\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope4\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope5\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope6\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ]\n    },\n    \"instruments\": {\n        \"inst0\": {\n            \"release_rate\": 19,\n            \"normal_range_lo\": 29,\n            \"normal_range_hi\": 63,\n            \"envelope\": \"envelope0\",\n            \"sound_lo\": \"3B_acoustic_guitar_A1\",\n            \"sound\": \"3C_acoustic_guitar_E3\",\n            \"sound_hi\": \"3D_acoustic_guitar_B6\"\n        },\n        \"inst1\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope1\",\n            \"sound\": \"2E_accordion_C4\"\n        },\n        \"inst2\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope2\",\n            \"sound\": \"2E_accordion_C4\"\n        },\n        \"inst3\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope3\",\n            \"sound\": \"16_french_horns_C3\"\n        },\n        \"inst4\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope4\",\n            \"sound\": \"16_french_horns_C3\"\n        },\n        \"inst5\": {\n            \"release_rate\": 10,\n            \"normal_range_lo\": 24,\n            \"envelope\": \"envelope5\",\n            \"sound_lo\": \"0E_hihat_closed\",\n            \"sound\": \"0F_hihat_open\"\n        },\n        \"inst6\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope6\",\n            \"sound\": \"2F_sleigh_bells\"\n        }\n    },\n    \"instrument_list\": [\n        \"inst0\",\n        \"inst1\",\n        \"inst2\",\n        null,\n        null,\n        null,\n        \"inst3\",\n        \"inst4\",\n        null,\n        null,\n        \"inst5\",\n        \"inst6\"\n    ]\n}\n"
  },
  {
    "path": "sound/sound_banks/0C.json",
    "content": "{\n    \"date\": \"1996-03-19\",\n    \"sample_bank\": \"instruments\",\n    \"envelopes\": {\n        \"envelope0\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope1\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope2\": [\n            [2, 32700],\n            [205, 1651],\n            [211, 0],\n            \"hang\"\n        ],\n        \"envelope3\": [\n            [2, 32700],\n            [205, 1651],\n            [211, 0],\n            \"hang\"\n        ],\n        \"envelope4\": [\n            [2, 32700],\n            [205, 1651],\n            [211, 0],\n            \"hang\"\n        ],\n        \"envelope5\": [\n            [2, 32700],\n            [205, 1651],\n            [211, 0],\n            \"hang\"\n        ],\n        \"envelope6\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope7\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope8\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope9\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope10\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope11\": [\n            [2, 32700],\n            [55, 32700],\n            [127, 0],\n            \"hang\"\n        ],\n        \"envelope12\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope13\": [\n            [2, 32700],\n            [103, 24112],\n            [409, 0],\n            \"hang\"\n        ]\n    },\n    \"instruments\": {\n        \"inst0\": {\n            \"release_rate\": 19,\n            \"normal_range_lo\": 29,\n            \"normal_range_hi\": 63,\n            \"envelope\": \"envelope0\",\n            \"sound_lo\": \"3B_acoustic_guitar_A1\",\n            \"sound\": \"3C_acoustic_guitar_E3\",\n            \"sound_hi\": \"3D_acoustic_guitar_B6\"\n        },\n        \"inst1\": {\n            \"release_rate\": 24,\n            \"normal_range_lo\": 29,\n            \"normal_range_hi\": 61,\n            \"envelope\": \"envelope1\",\n            \"sound_lo\": \"3B_acoustic_guitar_A1\",\n            \"sound\": \"3C_acoustic_guitar_E3\",\n            \"sound_hi\": \"3D_acoustic_guitar_B6\"\n        },\n        \"inst2\": {\n            \"release_rate\": 38,\n            \"normal_range_lo\": 29,\n            \"normal_range_hi\": 61,\n            \"envelope\": \"envelope2\",\n            \"sound_lo\": \"3B_acoustic_guitar_A1\",\n            \"sound\": \"3C_acoustic_guitar_E3\",\n            \"sound_hi\": \"3D_acoustic_guitar_B6\"\n        },\n        \"inst3\": {\n            \"release_rate\": 38,\n            \"normal_range_lo\": 29,\n            \"normal_range_hi\": 61,\n            \"envelope\": \"envelope3\",\n            \"sound_lo\": \"3B_acoustic_guitar_A1\",\n            \"sound\": \"3C_acoustic_guitar_E3\",\n            \"sound_hi\": \"3D_acoustic_guitar_B6\"\n        },\n        \"inst4\": {\n            \"release_rate\": 38,\n            \"normal_range_lo\": 29,\n            \"normal_range_hi\": 61,\n            \"envelope\": \"envelope4\",\n            \"sound_lo\": \"3B_acoustic_guitar_A1\",\n            \"sound\": \"3C_acoustic_guitar_E3\",\n            \"sound_hi\": \"3D_acoustic_guitar_B6\"\n        },\n        \"inst5\": {\n            \"release_rate\": 38,\n            \"normal_range_lo\": 29,\n            \"normal_range_hi\": 61,\n            \"envelope\": \"envelope5\",\n            \"sound_lo\": \"3B_acoustic_guitar_A1\",\n            \"sound\": \"3C_acoustic_guitar_E3\",\n            \"sound_hi\": \"3D_acoustic_guitar_B6\"\n        },\n        \"inst6\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope6\",\n            \"sound\": \"21_sine_bass_Bb2\"\n        },\n        \"inst7\": {\n            \"release_rate\": 114,\n            \"envelope\": \"envelope7\",\n            \"sound\": \"34_alto_flute_A4\"\n        },\n        \"inst8\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope8\",\n            \"sound\": \"34_alto_flute_A4\"\n        },\n        \"percussion\": [\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.210224}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.2227245}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.2359685}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.25}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.264866}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.2806155}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.297302}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.3149805}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.33371}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.3535535}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.374577}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.3968505}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.4204485}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.4454495}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.4719375}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.5}},\n            {\"release_rate\": 10, \"pan\": 57, \"envelope\": \"envelope9\", \"sound\": \"07_rimshot\"},\n            {\"release_rate\": 10, \"pan\": 65, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"08\", \"tuning\": 1.1905508}},\n            {\"release_rate\": 10, \"pan\": 66, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"08\", \"tuning\": 0.8418465}},\n            {\"release_rate\": 10, \"pan\": 66, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"08\", \"tuning\": 0.8919052}},\n            {\"release_rate\": 10, \"pan\": 6, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.471937}},\n            {\"release_rate\": 10, \"pan\": 6, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.5}},\n            {\"release_rate\": 10, \"pan\": 27, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.66742}},\n            {\"release_rate\": 10, \"pan\": 27, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.707107}},\n            {\"release_rate\": 10, \"pan\": 45, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.793701}},\n            {\"release_rate\": 10, \"pan\": 45, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.840897}},\n            {\"release_rate\": 10, \"pan\": 53, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.0}},\n            {\"release_rate\": 10, \"pan\": 53, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.059463}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.189207}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.259921}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.33484}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.414214}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.498307}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.189207}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.259921}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.33484}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.414214}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.498307}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.587401}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.681793}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.781798}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.5469096}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.5794306}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.61388505}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.65038884}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.6890625}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.7300362}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.77344644}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.81943786}},\n            {\"release_rate\": 10, \"pan\": 70, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0B\", \"tuning\": 1.5468929}},\n            {\"release_rate\": 10, \"pan\": 70, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0B\", \"tuning\": 1.6388757}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.793701}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.840897}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.890899}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.943875}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.0}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.059463}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.122462}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.189207}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.259921}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.33484}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.414214}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.498307}},\n            {\"release_rate\": 10, \"pan\": 128, \"envelope\": \"envelope9\", \"sound\": \"0D_clave\"}\n        ],\n        \"inst9\": {\n            \"release_rate\": 10,\n            \"normal_range_lo\": 28,\n            \"normal_range_hi\": 28,\n            \"envelope\": \"envelope10\",\n            \"sound_lo\": \"10_cymbal_bell\",\n            \"sound\": \"11_splash_cymbal\",\n            \"sound_hi\": \"10_cymbal_bell\"\n        },\n        \"inst10\": {\n            \"release_rate\": 10,\n            \"normal_range_lo\": 18,\n            \"envelope\": \"envelope11\",\n            \"sound_lo\": \"12_snare_drum_1\",\n            \"sound\": \"13_snare_drum_2\"\n        },\n        \"inst11\": {\n            \"release_rate\": 208,\n            \"normal_range_lo\": 60,\n            \"normal_range_hi\": 60,\n            \"envelope\": \"envelope12\",\n            \"sound_lo\": \"1E_closed_triangle\",\n            \"sound\": \"1F_open_triangle\",\n            \"sound_hi\": \"20_cabasa\"\n        },\n        \"inst12\": {\n            \"release_rate\": 10,\n            \"envelope\": \"envelope13\",\n            \"sound\": \"42_vibraphone_F#4\"\n        }\n    },\n    \"instrument_list\": [\n        \"inst0\",\n        \"inst1\",\n        \"inst2\",\n        \"inst3\",\n        \"inst4\",\n        \"inst5\",\n        \"inst6\",\n        \"inst7\",\n        \"inst8\",\n        null,\n        null,\n        \"inst9\",\n        \"inst10\",\n        \"inst11\",\n        null,\n        \"inst12\"\n    ]\n}\n"
  },
  {
    "path": "sound/sound_banks/0D.json",
    "content": "{\n    \"date\": \"1996-03-19\",\n    \"sample_bank\": \"instruments\",\n    \"envelopes\": {\n        \"envelope0\": [\n            [2, 32700],\n            [130, 4954],\n            [523, 0],\n            \"hang\"\n        ],\n        \"envelope1\": [\n            [2, 32700],\n            [130, 4954],\n            [523, 0],\n            \"hang\"\n        ],\n        \"envelope2\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope3\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope4\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope5\": [\n            [2, 32700],\n            [205, 0],\n            [1, 0],\n            \"hang\"\n        ],\n        \"envelope6\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope7\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope8\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope9\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope10\": [\n            [2, 32700],\n            [55, 32700],\n            [127, 0],\n            \"hang\"\n        ]\n    },\n    \"instruments\": {\n        \"inst0\": {\n            \"release_rate\": 100,\n            \"normal_range_lo\": 41,\n            \"envelope\": \"envelope0\",\n            \"sound_lo\": \"00_banjo_D2\",\n            \"sound\": \"01_banjo_A2\"\n        },\n        \"inst1\": {\n            \"release_rate\": 100,\n            \"normal_range_lo\": 41,\n            \"envelope\": \"envelope1\",\n            \"sound_lo\": \"00_banjo_D2\",\n            \"sound\": \"01_banjo_A2\"\n        },\n        \"inst2\": {\n            \"release_rate\": 180,\n            \"envelope\": \"envelope2\",\n            \"sound\": \"02_violin_B2\"\n        },\n        \"inst3\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope3\",\n            \"sound\": \"02_violin_B2\"\n        },\n        \"inst4\": {\n            \"release_rate\": 76,\n            \"envelope\": \"envelope4\",\n            \"sound\": \"03_human_whistle_C3\"\n        },\n        \"inst5\": {\n            \"release_rate\": 53,\n            \"envelope\": \"envelope5\",\n            \"sound\": \"04_bright_piano_G#3\"\n        },\n        \"inst6\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope6\",\n            \"sound\": \"05_acoustic_bass_A1\"\n        },\n        \"percussion\": [\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.210224}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.2227245}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.2359685}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.25}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.264866}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.2806155}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.297302}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.3149805}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.33371}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.3535535}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.374577}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.3968505}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.4204485}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.4454495}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.4719375}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.5}},\n            {\"release_rate\": 10, \"pan\": 57, \"envelope\": \"envelope7\", \"sound\": \"07_rimshot\"},\n            {\"release_rate\": 10, \"pan\": 65, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"08\", \"tuning\": 1.1905508}},\n            {\"release_rate\": 10, \"pan\": 66, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"08\", \"tuning\": 0.8418465}},\n            {\"release_rate\": 10, \"pan\": 66, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"08\", \"tuning\": 0.8919052}},\n            {\"release_rate\": 10, \"pan\": 6, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.471937}},\n            {\"release_rate\": 10, \"pan\": 6, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.5}},\n            {\"release_rate\": 10, \"pan\": 27, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.66742}},\n            {\"release_rate\": 10, \"pan\": 27, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.707107}},\n            {\"release_rate\": 10, \"pan\": 45, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.793701}},\n            {\"release_rate\": 10, \"pan\": 45, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.840897}},\n            {\"release_rate\": 10, \"pan\": 53, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.0}},\n            {\"release_rate\": 10, \"pan\": 53, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.059463}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.189207}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.259921}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.33484}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.414214}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.498307}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.189207}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.259921}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.33484}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.414214}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.498307}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.587401}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.681793}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.781798}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.5469096}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.5794306}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.61388505}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.65038884}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.6890625}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.7300362}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.77344644}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.81943786}},\n            {\"release_rate\": 10, \"pan\": 70, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0B\", \"tuning\": 1.5468929}},\n            {\"release_rate\": 10, \"pan\": 70, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0B\", \"tuning\": 1.6388757}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.793701}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.840897}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.890899}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.943875}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.0}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.059463}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.122462}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.189207}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.259921}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.33484}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.414214}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.498307}},\n            {\"release_rate\": 10, \"pan\": 128, \"envelope\": \"envelope7\", \"sound\": \"0D_clave\"}\n        ],\n        \"inst7\": {\n            \"release_rate\": 10,\n            \"normal_range_lo\": 24,\n            \"envelope\": \"envelope8\",\n            \"sound_lo\": \"0E_hihat_closed\",\n            \"sound\": \"0F_hihat_open\"\n        },\n        \"inst8\": {\n            \"release_rate\": 10,\n            \"normal_range_lo\": 28,\n            \"normal_range_hi\": 28,\n            \"envelope\": \"envelope9\",\n            \"sound_lo\": \"10_cymbal_bell\",\n            \"sound\": \"11_splash_cymbal\",\n            \"sound_hi\": \"10_cymbal_bell\"\n        },\n        \"inst9\": {\n            \"release_rate\": 10,\n            \"normal_range_lo\": 18,\n            \"envelope\": \"envelope10\",\n            \"sound_lo\": \"12_snare_drum_1\",\n            \"sound\": \"13_snare_drum_2\"\n        }\n    },\n    \"instrument_list\": [\n        \"inst0\",\n        \"inst1\",\n        \"inst2\",\n        \"inst3\",\n        \"inst4\",\n        \"inst5\",\n        \"inst6\",\n        null,\n        null,\n        null,\n        \"inst7\",\n        \"inst8\",\n        \"inst9\"\n    ]\n}\n"
  },
  {
    "path": "sound/sound_banks/0E.json",
    "content": "{\n    \"date\": \"1996-03-19\",\n    \"sample_bank\": \"instruments\",\n    \"envelopes\": {\n        \"envelope0\": [\n            [6, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope1\": [\n            [6, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope2\": [\n            [6, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope3\": [\n            [2, 32700],\n            [136, 0],\n            [32700, 0],\n            \"hang\"\n        ],\n        \"envelope4\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope5\": [\n            [6, 32700],\n            [298, 0],\n            [1, 0],\n            \"hang\"\n        ],\n        \"envelope6\": [\n            [3, 32700],\n            [298, 0],\n            [1, 0],\n            \"hang\"\n        ]\n    },\n    \"instruments\": {\n        \"inst0\": {\n            \"release_rate\": 15,\n            \"normal_range_lo\": 27,\n            \"normal_range_hi\": 46,\n            \"envelope\": \"envelope0\",\n            \"sound_lo\": \"23_strings_Eb2\",\n            \"sound\": \"24_strings_G#2\",\n            \"sound_hi\": \"25_strings_F#3\"\n        },\n        \"inst1\": {\n            \"release_rate\": 15,\n            \"normal_range_lo\": 27,\n            \"normal_range_hi\": 46,\n            \"envelope\": \"envelope1\",\n            \"sound_lo\": \"23_strings_Eb2\",\n            \"sound\": \"24_strings_G#2\",\n            \"sound_hi\": \"25_strings_F#3\"\n        },\n        \"inst2\": {\n            \"release_rate\": 15,\n            \"normal_range_lo\": 27,\n            \"normal_range_hi\": 46,\n            \"envelope\": \"envelope2\",\n            \"sound_lo\": \"23_strings_Eb2\",\n            \"sound\": \"24_strings_G#2\",\n            \"sound_hi\": \"25_strings_F#3\"\n        },\n        \"inst3\": {\n            \"release_rate\": 43,\n            \"normal_range_hi\": 47,\n            \"envelope\": \"envelope3\",\n            \"sound\": \"46_pizzicato_strings_Bb2\",\n            \"sound_hi\": \"47_pizzicato_strings_Bb3\"\n        },\n        \"inst4\": {\n            \"release_rate\": 119,\n            \"envelope\": \"envelope4\",\n            \"sound\": \"2D_trombone_Bb2\"\n        },\n        \"inst5\": {\n            \"release_rate\": 10,\n            \"envelope\": \"envelope5\",\n            \"sound\": \"26_crystal_rhodes_C4\"\n        },\n        \"inst6\": {\n            \"release_rate\": 10,\n            \"envelope\": \"envelope6\",\n            \"sound\": \"26_crystal_rhodes_C4\"\n        }\n    },\n    \"instrument_list\": [\n        \"inst0\",\n        \"inst1\",\n        \"inst2\",\n        \"inst3\",\n        \"inst4\",\n        \"inst5\",\n        \"inst6\"\n    ]\n}\n"
  },
  {
    "path": "sound/sound_banks/0F.json",
    "content": "{\n    \"date\": \"1996-03-19\",\n    \"sample_bank\": \"instruments\",\n    \"envelopes\": {\n        \"envelope0\": [\n            [2, 32700],\n            [187, 0],\n            [32700, 0],\n            \"hang\"\n        ],\n        \"envelope1\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope2\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope3\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ]\n    },\n    \"instruments\": {\n        \"inst0\": {\n            \"release_rate\": 100,\n            \"normal_range_lo\": 55,\n            \"normal_range_hi\": 56,\n            \"envelope\": \"envelope0\",\n            \"sound_lo\": \"2A_tabla_riff_1\",\n            \"sound\": \"2B_tabla_riff_2\",\n            \"sound_hi\": \"2C_tabla_riff_3\"\n        },\n        \"inst1\": {\n            \"release_rate\": 10,\n            \"envelope\": \"envelope1\",\n            \"sound\": \"22_boys_choir_Bb4\"\n        },\n        \"inst2\": {\n            \"release_rate\": 90,\n            \"envelope\": \"envelope2\",\n            \"sound\": \"28_sitar_1_A2\"\n        },\n        \"inst3\": {\n            \"release_rate\": 10,\n            \"envelope\": \"envelope3\",\n            \"sound\": \"39_sitar_2_C#3\"\n        }\n    },\n    \"instrument_list\": [\n        \"inst0\",\n        \"inst1\",\n        \"inst2\",\n        \"inst3\"\n    ]\n}\n"
  },
  {
    "path": "sound/sound_banks/10.json",
    "content": "{\n    \"date\": \"1996-03-19\",\n    \"sample_bank\": \"instruments\",\n    \"envelopes\": {\n        \"envelope0\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope1\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope2\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope3\": [\n            [2, 32700],\n            [145, 7597],\n            [343, 0],\n            \"hang\"\n        ],\n        \"envelope4\": [\n            [2, 32700],\n            [154, 7597],\n            [295, 0],\n            \"hang\"\n        ],\n        \"envelope5\": [\n            [2, 32700],\n            [145, 8257],\n            [325, 0],\n            \"hang\"\n        ],\n        \"envelope6\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ]\n    },\n    \"instruments\": {\n        \"inst0\": {\n            \"release_rate\": 10,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"3E_monk_choir_B2\"\n        },\n        \"inst1\": {\n            \"release_rate\": 10,\n            \"envelope\": \"envelope1\",\n            \"sound\": \"3E_monk_choir_B2\"\n        },\n        \"inst2\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope2\",\n            \"sound\": \"3F_small_gamelan\"\n        },\n        \"inst3\": {\n            \"release_rate\": 10,\n            \"envelope\": \"envelope3\",\n            \"sound\": \"40_fu_yin_gong_C4\"\n        },\n        \"inst4\": {\n            \"release_rate\": 10,\n            \"envelope\": \"envelope4\",\n            \"sound\": \"40_fu_yin_gong_C4\"\n        },\n        \"inst5\": {\n            \"release_rate\": 10,\n            \"envelope\": \"envelope5\",\n            \"sound\": \"40_fu_yin_gong_C4\"\n        },\n        \"percussion\": [\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.210224}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.2227245}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.2359685}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.25}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.264866}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.2806155}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.297302}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.3149805}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.33371}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.3535535}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.374577}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.3968505}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.4204485}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.4454495}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.4719375}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.5}},\n            {\"release_rate\": 10, \"pan\": 57, \"envelope\": \"envelope6\", \"sound\": \"07_rimshot\"},\n            {\"release_rate\": 10, \"pan\": 65, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"08\", \"tuning\": 1.1905508}},\n            {\"release_rate\": 10, \"pan\": 66, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"08\", \"tuning\": 0.8418465}},\n            {\"release_rate\": 10, \"pan\": 66, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"08\", \"tuning\": 0.8919052}},\n            {\"release_rate\": 10, \"pan\": 6, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.471937}},\n            {\"release_rate\": 10, \"pan\": 6, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.5}},\n            {\"release_rate\": 10, \"pan\": 27, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.66742}},\n            {\"release_rate\": 10, \"pan\": 27, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.707107}},\n            {\"release_rate\": 10, \"pan\": 45, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.793701}},\n            {\"release_rate\": 10, \"pan\": 45, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.840897}},\n            {\"release_rate\": 10, \"pan\": 53, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.0}},\n            {\"release_rate\": 10, \"pan\": 53, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.059463}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.189207}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.259921}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.33484}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.414214}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.498307}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.189207}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.259921}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.33484}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.414214}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.498307}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.587401}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.681793}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.781798}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.5469096}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.5794306}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.61388505}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.65038884}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.6890625}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.7300362}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.77344644}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.81943786}},\n            {\"release_rate\": 10, \"pan\": 70, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"0B\", \"tuning\": 1.5468929}},\n            {\"release_rate\": 10, \"pan\": 70, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"0B\", \"tuning\": 1.6388757}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.793701}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.840897}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.890899}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.943875}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.0}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.059463}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.122462}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.189207}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.259921}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.33484}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.414214}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope6\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.498307}},\n            {\"release_rate\": 10, \"pan\": 128, \"envelope\": \"envelope6\", \"sound\": \"0D_clave\"}\n        ]\n    },\n    \"instrument_list\": [\n        \"inst0\",\n        \"inst1\",\n        \"inst2\",\n        null,\n        \"inst3\",\n        \"inst4\",\n        \"inst5\",\n        null,\n        null,\n        null\n    ]\n}\n"
  },
  {
    "path": "sound/sound_banks/11.json",
    "content": "{\n    \"date\": \"1996-03-19\",\n    \"sample_bank\": \"instruments\",\n    \"envelopes\": {\n        \"envelope0\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope1\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope2\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope3\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope4\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope5\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope6\": [\n            [2, 32700],\n            [205, 19818],\n            [535, 0],\n            \"hang\"\n        ],\n        \"envelope7\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope8\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope9\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope10\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope11\": [\n            [2, 32700],\n            [55, 32700],\n            [127, 0],\n            \"hang\"\n        ],\n        \"envelope12\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ]\n    },\n    \"instruments\": {\n        \"inst0\": {\n            \"release_rate\": 10,\n            \"normal_range_lo\": 19,\n            \"normal_range_hi\": 19,\n            \"envelope\": \"envelope0\",\n            \"sound_lo\": \"38_electric_kick_drum\",\n            \"sound\": {\"sample\": \"08\", \"tuning\": 2.121321},\n            \"sound_hi\": \"38_electric_kick_drum\"\n        },\n        \"inst1\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope1\",\n            \"sound\": \"21_sine_bass_Bb2\"\n        },\n        \"inst2\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope2\",\n            \"sound\": \"35_gospel_organ_F4\"\n        },\n        \"inst3\": {\n            \"release_rate\": 10,\n            \"envelope\": \"envelope3\",\n            \"sound\": \"48_steel_drum_C#3\"\n        },\n        \"inst4\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope4\",\n            \"sound\": \"19_brass_Eb3\"\n        },\n        \"inst5\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope5\",\n            \"sound\": \"1A_slap_bass_G#2\"\n        },\n        \"inst6\": {\n            \"release_rate\": 128,\n            \"envelope\": \"envelope6\",\n            \"sound\": \"1B_percussive_synth_Eb3\"\n        },\n        \"inst7\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope7\",\n            \"sound\": \"1C_les_paul_guitar_E2\"\n        },\n        \"percussion\": [\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.210224}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.2227245}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.2359685}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.25}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.264866}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.2806155}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.297302}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.3149805}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.33371}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.3535535}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.374577}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.3968505}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.4204485}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.4454495}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.4719375}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.5}},\n            {\"release_rate\": 10, \"pan\": 57, \"envelope\": \"envelope8\", \"sound\": \"07_rimshot\"},\n            {\"release_rate\": 10, \"pan\": 65, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"08\", \"tuning\": 1.1905508}},\n            {\"release_rate\": 10, \"pan\": 66, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"08\", \"tuning\": 0.8418465}},\n            {\"release_rate\": 10, \"pan\": 66, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"08\", \"tuning\": 0.8919052}},\n            {\"release_rate\": 10, \"pan\": 6, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.471937}},\n            {\"release_rate\": 10, \"pan\": 6, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.5}},\n            {\"release_rate\": 10, \"pan\": 27, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.66742}},\n            {\"release_rate\": 10, \"pan\": 27, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.707107}},\n            {\"release_rate\": 10, \"pan\": 45, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.793701}},\n            {\"release_rate\": 10, \"pan\": 45, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.840897}},\n            {\"release_rate\": 10, \"pan\": 53, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.0}},\n            {\"release_rate\": 10, \"pan\": 53, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.059463}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.189207}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.259921}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.33484}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.414214}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.498307}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.189207}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.259921}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.33484}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.414214}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.498307}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.587401}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.681793}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.781798}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.5469096}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.5794306}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.61388505}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.65038884}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.6890625}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.7300362}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.77344644}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.81943786}},\n            {\"release_rate\": 10, \"pan\": 70, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0B\", \"tuning\": 1.5468929}},\n            {\"release_rate\": 10, \"pan\": 70, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0B\", \"tuning\": 1.6388757}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.793701}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.840897}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.890899}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.943875}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.0}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.059463}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.122462}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.189207}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.259921}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.33484}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.414214}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.498307}},\n            {\"release_rate\": 10, \"pan\": 128, \"envelope\": \"envelope8\", \"sound\": \"0D_clave\"}\n        ],\n        \"inst8\": {\n            \"release_rate\": 10,\n            \"normal_range_lo\": 24,\n            \"envelope\": \"envelope9\",\n            \"sound_lo\": \"0E_hihat_closed\",\n            \"sound\": \"0F_hihat_open\"\n        },\n        \"inst9\": {\n            \"release_rate\": 10,\n            \"normal_range_lo\": 28,\n            \"normal_range_hi\": 28,\n            \"envelope\": \"envelope10\",\n            \"sound_lo\": \"10_cymbal_bell\",\n            \"sound\": \"11_splash_cymbal\",\n            \"sound_hi\": \"10_cymbal_bell\"\n        },\n        \"inst10\": {\n            \"release_rate\": 10,\n            \"normal_range_lo\": 18,\n            \"envelope\": \"envelope11\",\n            \"sound_lo\": \"12_snare_drum_1\",\n            \"sound\": \"13_snare_drum_2\"\n        },\n        \"inst11\": {\n            \"release_rate\": 208,\n            \"normal_range_lo\": 60,\n            \"normal_range_hi\": 60,\n            \"envelope\": \"envelope12\",\n            \"sound_lo\": \"1E_closed_triangle\",\n            \"sound\": \"1F_open_triangle\",\n            \"sound_hi\": \"20_cabasa\"\n        }\n    },\n    \"instrument_list\": [\n        \"inst0\",\n        \"inst1\",\n        null,\n        \"inst2\",\n        \"inst3\",\n        \"inst4\",\n        \"inst5\",\n        \"inst6\",\n        \"inst7\",\n        null,\n        \"inst8\",\n        \"inst9\",\n        \"inst10\",\n        \"inst11\"\n    ]\n}\n"
  },
  {
    "path": "sound/sound_banks/12.json",
    "content": "{\n    \"date\": \"1996-03-19\",\n    \"sample_bank\": \"instruments\",\n    \"envelopes\": {\n        \"envelope0\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope1\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope2\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope3\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope4\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope5\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope6\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope7\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope8\": [\n            [6, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ]\n    },\n    \"instruments\": {\n        \"inst0\": {\n            \"release_rate\": 10,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"30_rarefaction-lahna_E4\"\n        },\n        \"inst1\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope1\",\n            \"sound\": \"31_rarefaction-convolution_Eb2\"\n        },\n        \"inst2\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope2\",\n            \"sound\": \"31_rarefaction-convolution_Eb2\"\n        },\n        \"inst3\": {\n            \"release_rate\": 10,\n            \"normal_range_lo\": 14,\n            \"normal_range_hi\": 15,\n            \"envelope\": \"envelope3\",\n            \"sound_lo\": {\"sample\": \"32_metal_rimshot\", \"tuning\": 2.244924},\n            \"sound\": \"33_kick_drum_2\",\n            \"sound_hi\": {\"sample\": \"32_metal_rimshot\", \"tuning\": 2.828428}\n        },\n        \"inst4\": {\n            \"release_rate\": 10,\n            \"normal_range_lo\": 24,\n            \"envelope\": \"envelope4\",\n            \"sound_lo\": \"0E_hihat_closed\",\n            \"sound\": \"0F_hihat_open\"\n        },\n        \"inst5\": {\n            \"release_rate\": 10,\n            \"normal_range_lo\": 28,\n            \"normal_range_hi\": 28,\n            \"envelope\": \"envelope5\",\n            \"sound_lo\": \"10_cymbal_bell\",\n            \"sound\": \"11_splash_cymbal\",\n            \"sound_hi\": \"10_cymbal_bell\"\n        },\n        \"inst6\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope6\",\n            \"sound\": \"29_orchestra_hit_C3\"\n        },\n        \"inst7\": {\n            \"release_rate\": 114,\n            \"envelope\": \"envelope7\",\n            \"sound\": \"34_alto_flute_A4\"\n        },\n        \"inst8\": {\n            \"release_rate\": 15,\n            \"normal_range_lo\": 27,\n            \"normal_range_hi\": 46,\n            \"envelope\": \"envelope8\",\n            \"sound_lo\": \"23_strings_Eb2\",\n            \"sound\": \"24_strings_G#2\",\n            \"sound_hi\": \"25_strings_F#3\"\n        }\n    },\n    \"instrument_list\": [\n        \"inst0\",\n        \"inst1\",\n        \"inst2\",\n        \"inst6\",\n        \"inst7\",\n        null,\n        \"inst8\",\n        null,\n        \"inst3\",\n        null,\n        \"inst4\",\n        \"inst5\"\n    ]\n}\n"
  },
  {
    "path": "sound/sound_banks/13.json",
    "content": "{\n    \"date\": \"1996-03-19\",\n    \"sample_bank\": \"instruments\",\n    \"envelopes\": {\n        \"envelope0\": [\n            [6, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope1\": [\n            [6, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope2\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope3\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope4\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope5\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope6\": [\n            [6, 32700],\n            [298, 0],\n            [1, 0],\n            \"hang\"\n        ],\n        \"envelope7\": [\n            [3, 32700],\n            [298, 0],\n            [1, 0],\n            \"hang\"\n        ]\n    },\n    \"instruments\": {\n        \"inst0\": {\n            \"release_rate\": 15,\n            \"normal_range_lo\": 27,\n            \"normal_range_hi\": 46,\n            \"envelope\": \"envelope0\",\n            \"sound_lo\": \"23_strings_Eb2\",\n            \"sound\": \"24_strings_G#2\",\n            \"sound_hi\": \"25_strings_F#3\"\n        },\n        \"inst1\": {\n            \"release_rate\": 15,\n            \"normal_range_lo\": 27,\n            \"normal_range_hi\": 46,\n            \"envelope\": \"envelope1\",\n            \"sound_lo\": \"23_strings_Eb2\",\n            \"sound\": \"24_strings_G#2\",\n            \"sound_hi\": \"25_strings_F#3\"\n        },\n        \"inst2\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope2\",\n            \"sound\": \"21_sine_bass_Bb2\"\n        },\n        \"percussion\": [\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.210224}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.2227245}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.2359685}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.25}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.264866}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.2806155}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.297302}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.3149805}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.33371}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.3535535}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.374577}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.3968505}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.4204485}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.4454495}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.4719375}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.5}},\n            {\"release_rate\": 10, \"pan\": 57, \"envelope\": \"envelope3\", \"sound\": \"07_rimshot\"},\n            {\"release_rate\": 10, \"pan\": 65, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"08\", \"tuning\": 1.1905508}},\n            {\"release_rate\": 10, \"pan\": 66, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"08\", \"tuning\": 0.8418465}},\n            {\"release_rate\": 10, \"pan\": 66, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"08\", \"tuning\": 0.8919052}},\n            {\"release_rate\": 10, \"pan\": 6, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.471937}},\n            {\"release_rate\": 10, \"pan\": 6, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.5}},\n            {\"release_rate\": 10, \"pan\": 27, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.66742}},\n            {\"release_rate\": 10, \"pan\": 27, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.707107}},\n            {\"release_rate\": 10, \"pan\": 45, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.793701}},\n            {\"release_rate\": 10, \"pan\": 45, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.840897}},\n            {\"release_rate\": 10, \"pan\": 53, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.0}},\n            {\"release_rate\": 10, \"pan\": 53, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.059463}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.189207}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.259921}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.33484}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.414214}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.498307}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.189207}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.259921}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.33484}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.414214}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.498307}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.587401}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.681793}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.781798}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.5469096}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.5794306}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.61388505}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.65038884}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.6890625}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.7300362}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.77344644}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.81943786}},\n            {\"release_rate\": 10, \"pan\": 70, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"0B\", \"tuning\": 1.5468929}},\n            {\"release_rate\": 10, \"pan\": 70, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"0B\", \"tuning\": 1.6388757}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.793701}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.840897}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.890899}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.943875}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.0}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.059463}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.122462}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.189207}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.259921}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.33484}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.414214}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope3\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.498307}},\n            {\"release_rate\": 10, \"pan\": 128, \"envelope\": \"envelope3\", \"sound\": \"0D_clave\"}\n        ],\n        \"inst3\": {\n            \"release_rate\": 10,\n            \"normal_range_lo\": 24,\n            \"envelope\": \"envelope4\",\n            \"sound_lo\": \"0E_hihat_closed\",\n            \"sound\": \"0F_hihat_open\"\n        },\n        \"inst4\": {\n            \"release_rate\": 10,\n            \"normal_range_lo\": 28,\n            \"normal_range_hi\": 28,\n            \"envelope\": \"envelope5\",\n            \"sound_lo\": \"10_cymbal_bell\",\n            \"sound\": \"11_splash_cymbal\",\n            \"sound_hi\": \"10_cymbal_bell\"\n        },\n        \"inst5\": {\n            \"release_rate\": 10,\n            \"envelope\": \"envelope6\",\n            \"sound\": \"26_crystal_rhodes_C4\"\n        },\n        \"inst6\": {\n            \"release_rate\": 10,\n            \"envelope\": \"envelope7\",\n            \"sound\": \"26_crystal_rhodes_C4\"\n        }\n    },\n    \"instrument_list\": [\n        \"inst0\",\n        \"inst1\",\n        null,\n        null,\n        null,\n        null,\n        \"inst2\",\n        null,\n        null,\n        null,\n        \"inst3\",\n        \"inst4\",\n        null,\n        null,\n        \"inst5\",\n        \"inst6\"\n    ]\n}\n"
  },
  {
    "path": "sound/sound_banks/14_piranha_music_box.json",
    "content": "{\n    \"date\": \"1996-03-19\",\n    \"sample_bank\": {\"ifdef\": [\"VERSION_SH\", \"VERSION_CN\"], \"then\": \"instruments\", \"else\": \"piranha_music_box\"},\n    \"envelopes\": {\n        \"envelope0\": [\n            [6, 32700],\n            [298, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope1\": [\n            [6, 32700],\n            [298, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope2\": [\n            [6, 32700],\n            [298, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope3\": [\n            [6, 32700],\n            [298, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope4\": [\n            [6, 32700],\n            [298, 32700],\n            [32700, 29430],\n            \"hang\"\n        ]\n    },\n    \"instruments\": {\n        \"inst0\": {\n            \"release_rate\": 119,\n            \"envelope\": \"envelope0\",\n            \"sound\": {\"ifdef\": [\"VERSION_SH\", \"VERSION_CN\"], \"then\": \"3A_music_box_C5\", \"else\": \"00_music_box_C5\"}\n        },\n        \"inst1\": {\n            \"release_rate\": 119,\n            \"envelope\": \"envelope1\",\n            \"sound\": {\"ifdef\": [\"VERSION_SH\", \"VERSION_CN\"], \"then\": \"3A_music_box_C5\", \"else\": \"00_music_box_C5\"}\n        },\n        \"inst2\": {\n            \"release_rate\": 119,\n            \"envelope\": \"envelope2\",\n            \"sound\": {\"ifdef\": [\"VERSION_SH\", \"VERSION_CN\"], \"then\": \"3A_music_box_C5\", \"else\": \"00_music_box_C5\"}\n        },\n        \"inst3\": {\n            \"release_rate\": 119,\n            \"envelope\": \"envelope3\",\n            \"sound\": {\"ifdef\": [\"VERSION_SH\", \"VERSION_CN\"], \"then\": \"3A_music_box_C5\", \"else\": \"00_music_box_C5\"}\n        },\n        \"inst4\": {\n            \"release_rate\": 119,\n            \"envelope\": \"envelope4\",\n            \"sound\": {\"ifdef\": [\"VERSION_SH\", \"VERSION_CN\"], \"then\": \"3A_music_box_C5\", \"else\": \"00_music_box_C5\"}\n        }\n    },\n    \"instrument_list\": [\n        \"inst0\",\n        \"inst1\",\n        \"inst2\",\n        \"inst3\",\n        \"inst4\"\n    ]\n}\n"
  },
  {
    "path": "sound/sound_banks/15.json",
    "content": "{\n    \"date\": \"1996-03-19\",\n    \"sample_bank\": \"instruments\",\n    \"envelopes\": {\n        \"envelope0\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope1\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope2\": [\n            [2, 32700],\n            [205, 18167],\n            [205, 0],\n            \"hang\"\n        ],\n        \"envelope3\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope4\": [\n            [2, 32700],\n            [205, 18167],\n            [205, 0],\n            \"hang\"\n        ],\n        \"envelope5\": [\n            [2, 32700],\n            [205, 0],\n            [1, 0],\n            \"hang\"\n        ],\n        \"envelope6\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope7\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope8\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope9\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ]\n    },\n    \"instruments\": {\n        \"inst0\": {\n            \"release_rate\": 34,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"1D\"\n        },\n        \"inst1\": {\n            \"release_rate\": 208,\n            \"normal_range_lo\": 60,\n            \"normal_range_hi\": 60,\n            \"envelope\": \"envelope1\",\n            \"sound_lo\": \"1E_closed_triangle\",\n            \"sound\": \"1F_open_triangle\",\n            \"sound_hi\": \"20_cabasa\"\n        },\n        \"inst2\": {\n            \"release_rate\": 10,\n            \"envelope\": \"envelope2\",\n            \"sound\": \"21_sine_bass_Bb2\"\n        },\n        \"inst3\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope3\",\n            \"sound\": \"1A_slap_bass_G#2\"\n        },\n        \"inst4\": {\n            \"release_rate\": 114,\n            \"envelope\": \"envelope4\",\n            \"sound\": \"21_sine_bass_Bb2\"\n        },\n        \"inst5\": {\n            \"release_rate\": 53,\n            \"envelope\": \"envelope5\",\n            \"sound\": \"04_bright_piano_G#3\"\n        },\n        \"inst6\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope6\",\n            \"sound\": \"1D\"\n        },\n        \"inst7\": {\n            \"release_rate\": 10,\n            \"envelope\": \"envelope7\",\n            \"sound\": \"22_boys_choir_Bb4\"\n        },\n        \"inst8\": {\n            \"release_rate\": 10,\n            \"envelope\": \"envelope8\",\n            \"sound\": \"22_boys_choir_Bb4\"\n        },\n        \"percussion\": [\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.210224}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.2227245}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.2359685}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.25}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.264866}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.2806155}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.297302}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.3149805}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.33371}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.3535535}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.374577}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.3968505}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.4204485}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.4454495}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.4719375}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.5}},\n            {\"release_rate\": 10, \"pan\": 57, \"envelope\": \"envelope9\", \"sound\": \"07_rimshot\"},\n            {\"release_rate\": 10, \"pan\": 65, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"08\", \"tuning\": 1.1905508}},\n            {\"release_rate\": 10, \"pan\": 66, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"08\", \"tuning\": 0.8418465}},\n            {\"release_rate\": 10, \"pan\": 66, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"08\", \"tuning\": 0.8919052}},\n            {\"release_rate\": 10, \"pan\": 6, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.471937}},\n            {\"release_rate\": 10, \"pan\": 6, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.5}},\n            {\"release_rate\": 10, \"pan\": 27, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.66742}},\n            {\"release_rate\": 10, \"pan\": 27, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.707107}},\n            {\"release_rate\": 10, \"pan\": 45, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.793701}},\n            {\"release_rate\": 10, \"pan\": 45, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.840897}},\n            {\"release_rate\": 10, \"pan\": 53, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.0}},\n            {\"release_rate\": 10, \"pan\": 53, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.059463}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.189207}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.259921}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.33484}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.414214}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.498307}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.189207}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.259921}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.33484}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.414214}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.498307}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.587401}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.681793}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.781798}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.5469096}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.5794306}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.61388505}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.65038884}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.6890625}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.7300362}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.77344644}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.81943786}},\n            {\"release_rate\": 10, \"pan\": 70, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0B\", \"tuning\": 1.5468929}},\n            {\"release_rate\": 10, \"pan\": 70, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0B\", \"tuning\": 1.6388757}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.793701}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.840897}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.890899}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.943875}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.0}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.059463}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.122462}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.189207}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.259921}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.33484}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.414214}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope9\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.498307}},\n            {\"release_rate\": 10, \"pan\": 128, \"envelope\": \"envelope9\", \"sound\": \"0D_clave\"}\n        ]\n    },\n    \"instrument_list\": [\n        \"inst0\",\n        \"inst1\",\n        \"inst2\",\n        \"inst3\",\n        \"inst4\",\n        \"inst5\",\n        \"inst6\",\n        \"inst7\",\n        \"inst8\",\n        null\n    ]\n}\n"
  },
  {
    "path": "sound/sound_banks/16_course_start.json",
    "content": "{\n    \"date\": \"1996-03-19\",\n    \"sample_bank\": {\"ifdef\": [\"VERSION_SH\", \"VERSION_CN\"], \"then\": \"instruments\", \"else\": \"course_start\"},\n    \"envelopes\": {\n        \"envelope0\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope1\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ]\n    },\n    \"instruments\": {\n        \"inst0\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": {\"ifdef\": [\"VERSION_SH\", \"VERSION_CN\"], \"then\": \"45b_la_E3\", \"else\": \"00_la_E3\"}\n        },\n        \"inst1\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope1\",\n            \"sound\": {\"ifdef\": [\"VERSION_SH\", \"VERSION_CN\"], \"then\": \"45b_la_E3\", \"else\": \"00_la_E3\"}\n        }\n    },\n    \"instrument_list\": [\n        \"inst0\",\n        \"inst1\"\n    ]\n}\n"
  },
  {
    "path": "sound/sound_banks/17.json",
    "content": "{\n    \"date\": \"1996-03-19\",\n    \"sample_bank\": \"instruments\",\n    \"envelopes\": {\n        \"envelope0\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope1\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope2\": [\n            [6, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope3\": [\n            [6, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope4\": [\n            [6, 32700],\n            [298, 0],\n            [1, 0],\n            \"hang\"\n        ],\n        \"envelope5\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope6\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope7\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope8\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ]\n    },\n    \"instruments\": {\n        \"inst0\": {\n            \"release_rate\": 19,\n            \"normal_range_lo\": 29,\n            \"normal_range_hi\": 63,\n            \"envelope\": \"envelope0\",\n            \"sound_lo\": \"3B_acoustic_guitar_A1\",\n            \"sound\": \"3C_acoustic_guitar_E3\",\n            \"sound_hi\": \"3D_acoustic_guitar_B6\"\n        },\n        \"inst1\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope1\",\n            \"sound\": \"05_acoustic_bass_A1\"\n        },\n        \"inst2\": {\n            \"release_rate\": 15,\n            \"normal_range_lo\": 27,\n            \"normal_range_hi\": 46,\n            \"envelope\": \"envelope2\",\n            \"sound_lo\": \"23_strings_Eb2\",\n            \"sound\": \"24_strings_G#2\",\n            \"sound_hi\": \"25_strings_F#3\"\n        },\n        \"inst3\": {\n            \"release_rate\": 15,\n            \"normal_range_lo\": 27,\n            \"normal_range_hi\": 46,\n            \"envelope\": \"envelope3\",\n            \"sound_lo\": \"23_strings_Eb2\",\n            \"sound\": \"24_strings_G#2\",\n            \"sound_hi\": \"25_strings_F#3\"\n        },\n        \"inst4\": {\n            \"release_rate\": 10,\n            \"envelope\": \"envelope4\",\n            \"sound\": \"26_crystal_rhodes_C4\"\n        },\n        \"percussion\": [\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.210224}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.2227245}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.2359685}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.25}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.264866}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.2806155}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.297302}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.3149805}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.33371}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.3535535}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.374577}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.3968505}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.4204485}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.4454495}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.4719375}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.5}},\n            {\"release_rate\": 10, \"pan\": 57, \"envelope\": \"envelope5\", \"sound\": \"07_rimshot\"},\n            {\"release_rate\": 10, \"pan\": 65, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"08\", \"tuning\": 1.1905508}},\n            {\"release_rate\": 10, \"pan\": 66, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"08\", \"tuning\": 0.8418465}},\n            {\"release_rate\": 10, \"pan\": 66, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"08\", \"tuning\": 0.8919052}},\n            {\"release_rate\": 10, \"pan\": 6, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.471937}},\n            {\"release_rate\": 10, \"pan\": 6, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.5}},\n            {\"release_rate\": 10, \"pan\": 27, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.66742}},\n            {\"release_rate\": 10, \"pan\": 27, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.707107}},\n            {\"release_rate\": 10, \"pan\": 45, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.793701}},\n            {\"release_rate\": 10, \"pan\": 45, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.840897}},\n            {\"release_rate\": 10, \"pan\": 53, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.0}},\n            {\"release_rate\": 10, \"pan\": 53, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.059463}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.189207}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.259921}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.33484}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.414214}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.498307}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.189207}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.259921}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.33484}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.414214}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.498307}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.587401}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.681793}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.781798}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.5469096}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.5794306}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.61388505}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.65038884}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.6890625}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.7300362}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.77344644}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.81943786}},\n            {\"release_rate\": 10, \"pan\": 70, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"0B\", \"tuning\": 1.5468929}},\n            {\"release_rate\": 10, \"pan\": 70, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"0B\", \"tuning\": 1.6388757}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.793701}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.840897}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.890899}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.943875}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.0}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.059463}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.122462}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.189207}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.259921}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.33484}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.414214}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope5\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.498307}},\n            {\"release_rate\": 10, \"pan\": 128, \"envelope\": \"envelope5\", \"sound\": \"0D_clave\"}\n        ],\n        \"inst5\": {\n            \"release_rate\": 10,\n            \"normal_range_lo\": 24,\n            \"envelope\": \"envelope6\",\n            \"sound_lo\": \"0E_hihat_closed\",\n            \"sound\": \"0F_hihat_open\"\n        },\n        \"inst6\": {\n            \"release_rate\": 10,\n            \"normal_range_lo\": 28,\n            \"normal_range_hi\": 28,\n            \"envelope\": \"envelope7\",\n            \"sound_lo\": \"10_cymbal_bell\",\n            \"sound\": \"11_splash_cymbal\",\n            \"sound_hi\": \"10_cymbal_bell\"\n        },\n        \"inst7\": {\n            \"release_rate\": 208,\n            \"normal_range_lo\": 60,\n            \"normal_range_hi\": 60,\n            \"envelope\": \"envelope8\",\n            \"sound_lo\": \"1E_closed_triangle\",\n            \"sound\": \"1F_open_triangle\",\n            \"sound_hi\": \"20_cabasa\"\n        }\n    },\n    \"instrument_list\": [\n        \"inst0\",\n        \"inst1\",\n        \"inst2\",\n        \"inst3\",\n        \"inst4\",\n        null,\n        null,\n        null,\n        null,\n        null,\n        \"inst5\",\n        \"inst6\",\n        \"inst7\"\n    ]\n}\n"
  },
  {
    "path": "sound/sound_banks/18.json",
    "content": "{\n    \"date\": \"1996-03-19\",\n    \"sample_bank\": \"instruments\",\n    \"envelopes\": {\n        \"envelope0\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope1\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope2\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope3\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope4\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope5\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope6\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope7\": [\n            [2, 32700],\n            [55, 32700],\n            [127, 0],\n            \"hang\"\n        ],\n        \"envelope8\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ]\n    },\n    \"instruments\": {\n        \"inst0\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"35_gospel_organ_F4\"\n        },\n        \"inst1\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope1\",\n            \"sound\": \"36_sawtooth_synth_Eb1\"\n        },\n        \"inst2\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope2\",\n            \"sound\": \"37_square_synth_C5\"\n        },\n        \"inst3\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope3\",\n            \"sound\": \"29_orchestra_hit_C3\"\n        },\n        \"percussion\": [\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.210224}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.2227245}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.2359685}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.25}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.264866}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.2806155}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.297302}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.3149805}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.33371}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.3535535}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.374577}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.3968505}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.4204485}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.4454495}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.4719375}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.5}},\n            {\"release_rate\": 10, \"pan\": 57, \"envelope\": \"envelope4\", \"sound\": \"07_rimshot\"},\n            {\"release_rate\": 10, \"pan\": 65, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"08\", \"tuning\": 1.1905508}},\n            {\"release_rate\": 10, \"pan\": 66, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"08\", \"tuning\": 0.8418465}},\n            {\"release_rate\": 10, \"pan\": 66, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"08\", \"tuning\": 0.8919052}},\n            {\"release_rate\": 10, \"pan\": 6, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.471937}},\n            {\"release_rate\": 10, \"pan\": 6, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.5}},\n            {\"release_rate\": 10, \"pan\": 27, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.66742}},\n            {\"release_rate\": 10, \"pan\": 27, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.707107}},\n            {\"release_rate\": 10, \"pan\": 45, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.793701}},\n            {\"release_rate\": 10, \"pan\": 45, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.840897}},\n            {\"release_rate\": 10, \"pan\": 53, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.0}},\n            {\"release_rate\": 10, \"pan\": 53, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.059463}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.189207}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.259921}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.33484}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.414214}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.498307}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.189207}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.259921}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.33484}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.414214}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.498307}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.587401}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.681793}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.781798}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.5469096}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.5794306}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.61388505}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.65038884}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.6890625}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.7300362}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.77344644}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.81943786}},\n            {\"release_rate\": 10, \"pan\": 70, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0B\", \"tuning\": 1.5468929}},\n            {\"release_rate\": 10, \"pan\": 70, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0B\", \"tuning\": 1.6388757}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.793701}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.840897}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.890899}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.943875}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.0}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.059463}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.122462}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.189207}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.259921}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.33484}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.414214}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.498307}},\n            {\"release_rate\": 10, \"pan\": 128, \"envelope\": \"envelope4\", \"sound\": \"0D_clave\"}\n        ],\n        \"inst4\": {\n            \"release_rate\": 10,\n            \"normal_range_lo\": 24,\n            \"envelope\": \"envelope5\",\n            \"sound_lo\": \"0E_hihat_closed\",\n            \"sound\": \"0F_hihat_open\"\n        },\n        \"inst5\": {\n            \"release_rate\": 208,\n            \"normal_range_lo\": 60,\n            \"normal_range_hi\": 60,\n            \"envelope\": \"envelope6\",\n            \"sound_lo\": \"1E_closed_triangle\",\n            \"sound\": \"1F_open_triangle\",\n            \"sound_hi\": \"20_cabasa\"\n        },\n        \"inst6\": {\n            \"release_rate\": 10,\n            \"normal_range_lo\": 18,\n            \"envelope\": \"envelope7\",\n            \"sound_lo\": \"12_snare_drum_1\",\n            \"sound\": \"13_snare_drum_2\"\n        },\n        \"inst7\": {\n            \"release_rate\": 10,\n            \"normal_range_lo\": 19,\n            \"normal_range_hi\": 19,\n            \"envelope\": \"envelope8\",\n            \"sound_lo\": \"38_electric_kick_drum\",\n            \"sound\": {\"sample\": \"08\", \"tuning\": 2.121321},\n            \"sound_hi\": \"38_electric_kick_drum\"\n        }\n    },\n    \"instrument_list\": [\n        \"inst0\",\n        \"inst1\",\n        \"inst2\",\n        \"inst3\",\n        null,\n        null,\n        null,\n        null,\n        null,\n        null,\n        \"inst4\",\n        null,\n        \"inst5\",\n        \"inst6\",\n        \"inst7\"\n    ]\n}\n"
  },
  {
    "path": "sound/sound_banks/19.json",
    "content": "{\n    \"date\": \"1996-03-19\",\n    \"sample_bank\": \"instruments\",\n    \"envelopes\": {\n        \"envelope0\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope1\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope2\": [\n            [6, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope3\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope4\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope5\": [\n            [2, 32700],\n            [187, 0],\n            [32700, 0],\n            \"hang\"\n        ],\n        \"envelope6\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope7\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope8\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope9\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope10\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope11\": [\n            [2, 32700],\n            [55, 32700],\n            [127, 0],\n            \"hang\"\n        ]\n    },\n    \"instruments\": {\n        \"inst0\": {\n            \"release_rate\": 10,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"22_boys_choir_Bb4\"\n        },\n        \"inst1\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope1\",\n            \"sound\": \"19_brass_Eb3\"\n        },\n        \"inst2\": {\n            \"release_rate\": 15,\n            \"normal_range_lo\": 27,\n            \"normal_range_hi\": 46,\n            \"envelope\": \"envelope2\",\n            \"sound_lo\": \"23_strings_Eb2\",\n            \"sound\": \"24_strings_G#2\",\n            \"sound_hi\": \"25_strings_F#3\"\n        },\n        \"inst3\": {\n            \"release_rate\": 90,\n            \"envelope\": \"envelope3\",\n            \"sound\": \"28_sitar_1_A2\"\n        },\n        \"inst4\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope4\",\n            \"sound\": \"29_orchestra_hit_C3\"\n        },\n        \"inst5\": {\n            \"release_rate\": 100,\n            \"normal_range_lo\": 55,\n            \"normal_range_hi\": 56,\n            \"envelope\": \"envelope5\",\n            \"sound_lo\": \"2A_tabla_riff_1\",\n            \"sound\": \"2B_tabla_riff_2\",\n            \"sound_hi\": \"2C_tabla_riff_3\"\n        },\n        \"inst6\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope6\",\n            \"sound\": \"19_brass_Eb3\"\n        },\n        \"inst7\": {\n            \"release_rate\": 10,\n            \"envelope\": \"envelope7\",\n            \"sound\": \"22_boys_choir_Bb4\"\n        },\n        \"percussion\": [\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.210224}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.2227245}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.2359685}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.25}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.264866}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.2806155}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.297302}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.3149805}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.33371}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.3535535}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.374577}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.3968505}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.4204485}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.4454495}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.4719375}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.5}},\n            {\"release_rate\": 10, \"pan\": 57, \"envelope\": \"envelope8\", \"sound\": \"07_rimshot\"},\n            {\"release_rate\": 10, \"pan\": 65, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"08\", \"tuning\": 1.1905508}},\n            {\"release_rate\": 10, \"pan\": 66, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"08\", \"tuning\": 0.8418465}},\n            {\"release_rate\": 10, \"pan\": 66, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"08\", \"tuning\": 0.8919052}},\n            {\"release_rate\": 10, \"pan\": 6, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.471937}},\n            {\"release_rate\": 10, \"pan\": 6, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.5}},\n            {\"release_rate\": 10, \"pan\": 27, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.66742}},\n            {\"release_rate\": 10, \"pan\": 27, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.707107}},\n            {\"release_rate\": 10, \"pan\": 45, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.793701}},\n            {\"release_rate\": 10, \"pan\": 45, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.840897}},\n            {\"release_rate\": 10, \"pan\": 53, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.0}},\n            {\"release_rate\": 10, \"pan\": 53, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.059463}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.189207}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.259921}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.33484}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.414214}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.498307}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.189207}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.259921}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.33484}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.414214}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.498307}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.587401}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.681793}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.781798}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.5469096}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.5794306}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.61388505}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.65038884}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.6890625}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.7300362}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.77344644}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.81943786}},\n            {\"release_rate\": 10, \"pan\": 70, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0B\", \"tuning\": 1.5468929}},\n            {\"release_rate\": 10, \"pan\": 70, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0B\", \"tuning\": 1.6388757}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.793701}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.840897}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.890899}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.943875}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.0}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.059463}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.122462}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.189207}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.259921}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.33484}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.414214}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope8\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.498307}},\n            {\"release_rate\": 10, \"pan\": 128, \"envelope\": \"envelope8\", \"sound\": \"0D_clave\"}\n        ],\n        \"inst8\": {\n            \"release_rate\": 10,\n            \"normal_range_lo\": 28,\n            \"normal_range_hi\": 28,\n            \"envelope\": \"envelope9\",\n            \"sound_lo\": \"10_cymbal_bell\",\n            \"sound\": \"11_splash_cymbal\",\n            \"sound_hi\": \"10_cymbal_bell\"\n        },\n        \"inst9\": {\n            \"release_rate\": 10,\n            \"envelope\": \"envelope10\",\n            \"sound\": \"18_timpani\"\n        },\n        \"inst10\": {\n            \"release_rate\": 10,\n            \"normal_range_lo\": 18,\n            \"envelope\": \"envelope11\",\n            \"sound_lo\": \"12_snare_drum_1\",\n            \"sound\": \"13_snare_drum_2\"\n        }\n    },\n    \"instrument_list\": [\n        \"inst0\",\n        \"inst1\",\n        \"inst2\",\n        \"inst3\",\n        \"inst4\",\n        \"inst5\",\n        \"inst6\",\n        \"inst7\",\n        null,\n        null,\n        \"inst10\",\n        \"inst8\",\n        \"inst9\"\n    ]\n}\n"
  },
  {
    "path": "sound/sound_banks/1A.json",
    "content": "{\n    \"date\": \"1996-03-19\",\n    \"sample_bank\": \"instruments\",\n    \"envelopes\": {\n        \"envelope0\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope1\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope2\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope3\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope4\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope5\": [\n            [6, 32700],\n            [298, 0],\n            [1, 0],\n            \"hang\"\n        ],\n        \"envelope6\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope7\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope8\": [\n            [2, 32700],\n            [55, 32700],\n            [127, 0],\n            \"hang\"\n        ]\n    },\n    \"instruments\": {\n        \"inst0\": {\n            \"release_rate\": 67,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"17_trumpet_C#3\"\n        },\n        \"inst1\": {\n            \"release_rate\": 119,\n            \"envelope\": \"envelope1\",\n            \"sound\": \"2D_trombone_Bb2\"\n        },\n        \"inst2\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope2\",\n            \"sound\": \"16_french_horns_C3\"\n        },\n        \"inst3\": {\n            \"release_rate\": 24,\n            \"normal_range_lo\": 42,\n            \"envelope\": \"envelope3\",\n            \"sound_lo\": \"14_strings_Eb2\",\n            \"sound\": \"15_strings_B3\"\n        },\n        \"inst4\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope4\",\n            \"sound\": \"19_brass_Eb3\"\n        },\n        \"inst5\": {\n            \"release_rate\": 10,\n            \"envelope\": \"envelope5\",\n            \"sound\": \"26_crystal_rhodes_C4\"\n        },\n        \"inst6\": {\n            \"release_rate\": 10,\n            \"envelope\": \"envelope6\",\n            \"sound\": \"18_timpani\"\n        },\n        \"inst7\": {\n            \"release_rate\": 10,\n            \"normal_range_lo\": 28,\n            \"normal_range_hi\": 28,\n            \"envelope\": \"envelope7\",\n            \"sound_lo\": \"10_cymbal_bell\",\n            \"sound\": \"11_splash_cymbal\",\n            \"sound_hi\": \"10_cymbal_bell\"\n        },\n        \"inst8\": {\n            \"release_rate\": 10,\n            \"normal_range_lo\": 18,\n            \"envelope\": \"envelope8\",\n            \"sound_lo\": \"12_snare_drum_1\",\n            \"sound\": \"13_snare_drum_2\"\n        }\n    },\n    \"instrument_list\": [\n        \"inst0\",\n        \"inst1\",\n        \"inst2\",\n        \"inst3\",\n        \"inst4\",\n        \"inst5\",\n        null,\n        null,\n        null,\n        null,\n        \"inst6\",\n        \"inst7\",\n        \"inst8\"\n    ]\n}\n"
  },
  {
    "path": "sound/sound_banks/1B.json",
    "content": "{\n    \"date\": \"1996-03-19\",\n    \"sample_bank\": \"instruments\",\n    \"envelopes\": {\n        \"envelope0\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope1\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope2\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope3\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope4\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope5\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope6\": [\n            [2, 32700],\n            [55, 32700],\n            [127, 0],\n            \"hang\"\n        ],\n        \"envelope7\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope8\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ]\n    },\n    \"instruments\": {\n        \"inst0\": {\n            \"release_rate\": 24,\n            \"normal_range_lo\": 42,\n            \"envelope\": \"envelope0\",\n            \"sound_lo\": \"14_strings_Eb2\",\n            \"sound\": \"15_strings_B3\"\n        },\n        \"inst1\": {\n            \"release_rate\": 24,\n            \"normal_range_lo\": 42,\n            \"envelope\": \"envelope1\",\n            \"sound_lo\": \"14_strings_Eb2\",\n            \"sound\": \"15_strings_B3\"\n        },\n        \"inst2\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope2\",\n            \"sound\": \"16_french_horns_C3\"\n        },\n        \"inst3\": {\n            \"release_rate\": 67,\n            \"envelope\": \"envelope3\",\n            \"sound\": \"17_trumpet_C#3\"\n        },\n        \"inst4\": {\n            \"release_rate\": 24,\n            \"normal_range_lo\": 42,\n            \"envelope\": \"envelope4\",\n            \"sound_lo\": \"14_strings_Eb2\",\n            \"sound\": \"15_strings_B3\"\n        },\n        \"inst5\": {\n            \"release_rate\": 10,\n            \"envelope\": \"envelope5\",\n            \"sound\": \"18_timpani\"\n        },\n        \"inst6\": {\n            \"release_rate\": 10,\n            \"normal_range_lo\": 18,\n            \"envelope\": \"envelope6\",\n            \"sound_lo\": \"12_snare_drum_1\",\n            \"sound\": \"13_snare_drum_2\"\n        },\n        \"percussion\": [\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.210224}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.2227245}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.2359685}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.25}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.264866}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.2806155}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.297302}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.3149805}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.33371}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.3535535}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.374577}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.3968505}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.4204485}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.4454495}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.4719375}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.5}},\n            {\"release_rate\": 10, \"pan\": 57, \"envelope\": \"envelope7\", \"sound\": \"07_rimshot\"},\n            {\"release_rate\": 10, \"pan\": 65, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"08\", \"tuning\": 1.1905508}},\n            {\"release_rate\": 10, \"pan\": 66, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"08\", \"tuning\": 0.8418465}},\n            {\"release_rate\": 10, \"pan\": 66, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"08\", \"tuning\": 0.8919052}},\n            {\"release_rate\": 10, \"pan\": 6, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.471937}},\n            {\"release_rate\": 10, \"pan\": 6, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.5}},\n            {\"release_rate\": 10, \"pan\": 27, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.66742}},\n            {\"release_rate\": 10, \"pan\": 27, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.707107}},\n            {\"release_rate\": 10, \"pan\": 45, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.793701}},\n            {\"release_rate\": 10, \"pan\": 45, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.840897}},\n            {\"release_rate\": 10, \"pan\": 53, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.0}},\n            {\"release_rate\": 10, \"pan\": 53, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.059463}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.189207}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.259921}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.33484}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.414214}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.498307}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.189207}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.259921}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.33484}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.414214}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.498307}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.587401}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.681793}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.781798}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.5469096}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.5794306}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.61388505}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.65038884}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.6890625}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.7300362}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.77344644}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.81943786}},\n            {\"release_rate\": 10, \"pan\": 70, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0B\", \"tuning\": 1.5468929}},\n            {\"release_rate\": 10, \"pan\": 70, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0B\", \"tuning\": 1.6388757}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.793701}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.840897}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.890899}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.943875}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.0}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.059463}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.122462}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.189207}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.259921}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.33484}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.414214}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope7\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.498307}},\n            {\"release_rate\": 10, \"pan\": 128, \"envelope\": \"envelope7\", \"sound\": \"0D_clave\"}\n        ],\n        \"inst7\": {\n            \"release_rate\": 10,\n            \"normal_range_lo\": 28,\n            \"normal_range_hi\": 28,\n            \"envelope\": \"envelope8\",\n            \"sound_lo\": \"10_cymbal_bell\",\n            \"sound\": \"11_splash_cymbal\",\n            \"sound_hi\": \"10_cymbal_bell\"\n        }\n    },\n    \"instrument_list\": [\n        \"inst0\",\n        \"inst1\",\n        \"inst2\",\n        \"inst3\",\n        \"inst4\",\n        null,\n        null,\n        \"inst5\",\n        \"inst6\",\n        null,\n        null,\n        \"inst7\"\n    ]\n}\n"
  },
  {
    "path": "sound/sound_banks/1C_endless_stairs.json",
    "content": "{\n    \"date\": \"1996-03-19\",\n    \"sample_bank\": \"instruments\",\n    \"envelopes\": {\n        \"envelope0\": [\n            [6, 32700],\n            [298, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope1\": [\n            [6, 32700],\n            [298, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope2\": [\n            [6, 32700],\n            [298, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope3\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope4\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope5\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ]\n    },\n    \"instruments\": {\n        \"inst0\": {\n            \"release_rate\": 119,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"3A_music_box_C5\"\n        },\n        \"inst1\": {\n            \"release_rate\": 119,\n            \"envelope\": \"envelope1\",\n            \"sound\": \"3A_music_box_C5\"\n        },\n        \"inst2\": {\n            \"release_rate\": 119,\n            \"envelope\": \"envelope2\",\n            \"sound\": \"3A_music_box_C5\"\n        },\n        \"inst3\": {\n            \"release_rate\": 24,\n            \"normal_range_lo\": 42,\n            \"envelope\": \"envelope3\",\n            \"sound_lo\": \"14_strings_Eb2\",\n            \"sound\": \"15_strings_B3\"\n        },\n        \"inst4\": {\n            \"release_rate\": 24,\n            \"normal_range_lo\": 42,\n            \"envelope\": \"envelope4\",\n            \"sound_lo\": \"14_strings_Eb2\",\n            \"sound\": \"15_strings_B3\"\n        },\n        \"inst5\": {\n            \"release_rate\": 24,\n            \"normal_range_lo\": 42,\n            \"envelope\": \"envelope5\",\n            \"sound_lo\": \"14_strings_Eb2\",\n            \"sound\": \"15_strings_B3\"\n        }\n    },\n    \"instrument_list\": [\n        \"inst0\",\n        \"inst1\",\n        \"inst2\",\n        null,\n        \"inst3\",\n        \"inst4\",\n        \"inst5\"\n    ]\n}\n"
  },
  {
    "path": "sound/sound_banks/1D_bowser_organ.json",
    "content": "{\n    \"date\": \"1996-03-19\",\n    \"sample_bank\": {\"ifdef\": [\"VERSION_SH\", \"VERSION_CN\"], \"then\": \"instruments\", \"else\": \"bowser_organ\"},\n    \"envelopes\": {\n        \"envelope0\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope1\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope2\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope3\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope4\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope5\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ]\n    },\n    \"instruments\": {\n        \"inst0\": {\n            \"release_rate\": 19,\n            \"normal_range_hi\": 50,\n            \"envelope\": \"envelope0\",\n            \"sound\": {\"ifdef\": [\"VERSION_SH\", \"VERSION_CN\"], \"then\": \"34b_organ_C3\", \"else\": \"00_organ_C3\"},\n            \"sound_hi\": {\"ifdef\": [\"VERSION_SH\", \"VERSION_CN\"], \"then\": \"34c_organ_C4\", \"else\": \"01_organ_C4\"}\n        },\n        \"inst1\": {\n            \"release_rate\": 19,\n            \"normal_range_hi\": 50,\n            \"envelope\": \"envelope1\",\n            \"sound\": {\"ifdef\": [\"VERSION_SH\", \"VERSION_CN\"], \"then\": \"34b_organ_C3\", \"else\": \"00_organ_C3\"},\n            \"sound_hi\": {\"ifdef\": [\"VERSION_SH\", \"VERSION_CN\"], \"then\": \"34c_organ_C4\", \"else\": \"01_organ_C4\"}\n        },\n        \"inst2\": {\n            \"release_rate\": 19,\n            \"normal_range_hi\": 50,\n            \"envelope\": \"envelope2\",\n            \"sound\": {\"ifdef\": [\"VERSION_SH\", \"VERSION_CN\"], \"then\": \"34b_organ_C3\", \"else\": \"00_organ_C3\"},\n            \"sound_hi\": {\"ifdef\": [\"VERSION_SH\", \"VERSION_CN\"], \"then\": \"34c_organ_C4\", \"else\": \"01_organ_C4\"}\n        },\n        \"inst3\": {\n            \"release_rate\": 19,\n            \"normal_range_hi\": 50,\n            \"envelope\": \"envelope3\",\n            \"sound\": {\"ifdef\": [\"VERSION_SH\", \"VERSION_CN\"], \"then\": \"34b_organ_C3\", \"else\": \"00_organ_C3\"},\n            \"sound_hi\": {\"ifdef\": [\"VERSION_SH\", \"VERSION_CN\"], \"then\": \"34c_organ_C4\", \"else\": \"01_organ_C4\"}\n        },\n        \"inst4\": {\n            \"release_rate\": 19,\n            \"normal_range_hi\": 50,\n            \"envelope\": \"envelope4\",\n            \"sound\": {\"ifdef\": [\"VERSION_SH\", \"VERSION_CN\"], \"then\": \"34b_organ_C3\", \"else\": \"00_organ_C3\"},\n            \"sound_hi\": {\"ifdef\": [\"VERSION_SH\", \"VERSION_CN\"], \"then\": \"34c_organ_C4\", \"else\": \"01_organ_C4\"}\n        },\n        \"inst5\": {\n            \"release_rate\": 10,\n            \"envelope\": \"envelope5\",\n            \"sound\": {\"ifdef\": [\"VERSION_SH\", \"VERSION_CN\"], \"then\": \"22_boys_choir_Bb4\", \"else\": \"02_boys_choir_Bb4\"}\n        }\n    },\n    \"instrument_list\": [\n        \"inst0\",\n        \"inst1\",\n        \"inst2\",\n        \"inst3\",\n        \"inst4\",\n        \"inst5\"\n    ]\n}\n"
  },
  {
    "path": "sound/sound_banks/1E.json",
    "content": "{\n    \"date\": \"1996-03-19\",\n    \"sample_bank\": \"instruments\",\n    \"envelopes\": {\n        \"envelope0\": [\n            [2, 32700],\n            [202, 0],\n            [1, 0],\n            \"hang\"\n        ],\n        \"envelope1\": [\n            [2, 32700],\n            [82, 0],\n            [1, 0],\n            \"hang\"\n        ],\n        \"envelope2\": [\n            [6, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope3\": [\n            [6, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ]\n    },\n    \"instruments\": {\n        \"inst0\": {\n            \"release_rate\": 255,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"27_harpsichord_F3\"\n        },\n        \"inst1\": {\n            \"release_rate\": 255,\n            \"envelope\": \"envelope1\",\n            \"sound\": \"27_harpsichord_F3\"\n        },\n        \"inst2\": {\n            \"release_rate\": 15,\n            \"normal_range_lo\": 27,\n            \"normal_range_hi\": 46,\n            \"envelope\": \"envelope2\",\n            \"sound_lo\": \"23_strings_Eb2\",\n            \"sound\": \"24_strings_G#2\",\n            \"sound_hi\": \"25_strings_F#3\"\n        },\n        \"inst3\": {\n            \"release_rate\": 15,\n            \"normal_range_lo\": 27,\n            \"normal_range_hi\": 46,\n            \"envelope\": \"envelope3\",\n            \"sound_lo\": \"23_strings_Eb2\",\n            \"sound\": \"24_strings_G#2\",\n            \"sound_hi\": \"25_strings_F#3\"\n        }\n    },\n    \"instrument_list\": [\n        \"inst0\",\n        \"inst1\",\n        \"inst2\",\n        \"inst3\"\n    ]\n}\n"
  },
  {
    "path": "sound/sound_banks/1F.json",
    "content": "{\n    \"date\": \"1996-03-19\",\n    \"sample_bank\": \"instruments\",\n    \"envelopes\": {\n        \"envelope0\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope1\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope2\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope3\": [\n            [2, 32700],\n            [55, 32700],\n            [127, 0],\n            \"hang\"\n        ]\n    },\n    \"instruments\": {\n        \"inst0\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"2E_accordion_C4\"\n        },\n        \"inst1\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope1\",\n            \"sound\": \"2E_accordion_C4\"\n        },\n        \"inst2\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope2\",\n            \"sound\": \"2F_sleigh_bells\"\n        },\n        \"inst3\": {\n            \"release_rate\": 10,\n            \"normal_range_lo\": 18,\n            \"envelope\": \"envelope3\",\n            \"sound_lo\": \"12_snare_drum_1\",\n            \"sound\": \"13_snare_drum_2\"\n        }\n    },\n    \"instrument_list\": [\n        \"inst0\",\n        null,\n        \"inst1\",\n        null,\n        null,\n        null,\n        null,\n        null,\n        null,\n        null,\n        null,\n        \"inst2\",\n        \"inst3\"\n    ]\n}\n"
  },
  {
    "path": "sound/sound_banks/20.json",
    "content": "{\n    \"date\": \"1996-03-19\",\n    \"sample_bank\": \"instruments\",\n    \"envelopes\": {\n        \"envelope0\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope1\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope2\": [\n            [6, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ]\n    },\n    \"instruments\": {\n        \"inst0\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"16_french_horns_C3\"\n        },\n        \"inst1\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope1\",\n            \"sound\": \"16_french_horns_C3\"\n        },\n        \"inst2\": {\n            \"release_rate\": 15,\n            \"normal_range_lo\": 27,\n            \"normal_range_hi\": 46,\n            \"envelope\": \"envelope2\",\n            \"sound_lo\": \"23_strings_Eb2\",\n            \"sound\": \"24_strings_G#2\",\n            \"sound_hi\": \"25_strings_F#3\"\n        }\n    },\n    \"instrument_list\": [\n        \"inst0\",\n        null,\n        null,\n        null,\n        null,\n        null,\n        null,\n        \"inst1\",\n        \"inst2\"\n    ]\n}\n"
  },
  {
    "path": "sound/sound_banks/21.json",
    "content": "{\n    \"date\": \"1996-03-19\",\n    \"sample_bank\": \"instruments\",\n    \"envelopes\": {\n        \"envelope0\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope1\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope2\": [\n            [6, 32700],\n            [298, 0],\n            [1, 0],\n            \"hang\"\n        ]\n    },\n    \"instruments\": {\n        \"inst0\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"2E_accordion_C4\"\n        },\n        \"inst1\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope1\",\n            \"sound\": \"2E_accordion_C4\"\n        },\n        \"inst2\": {\n            \"release_rate\": 10,\n            \"envelope\": \"envelope2\",\n            \"sound\": \"26_crystal_rhodes_C4\"\n        }\n    },\n    \"instrument_list\": [\n        \"inst0\",\n        null,\n        \"inst1\",\n        \"inst2\"\n    ]\n}\n"
  },
  {
    "path": "sound/sound_banks/22.json",
    "content": "{\n    \"date\": \"1996-03-19\",\n    \"sample_bank\": \"instruments\",\n    \"envelopes\": {\n        \"envelope0\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope1\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope2\": [\n            [2, 32700],\n            [205, 19818],\n            [535, 0],\n            \"hang\"\n        ],\n        \"envelope3\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope4\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope5\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope6\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ]\n    },\n    \"instruments\": {\n        \"inst0\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"19_brass_Eb3\"\n        },\n        \"inst1\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope1\",\n            \"sound\": \"1A_slap_bass_G#2\"\n        },\n        \"inst2\": {\n            \"release_rate\": 128,\n            \"envelope\": \"envelope2\",\n            \"sound\": \"1B_percussive_synth_Eb3\"\n        },\n        \"inst3\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope3\",\n            \"sound\": \"1C_les_paul_guitar_E2\"\n        },\n        \"percussion\": [\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.210224}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.2227245}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.2359685}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.25}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.264866}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.2806155}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.297302}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.3149805}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.33371}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.3535535}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.374577}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.3968505}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.4204485}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.4454495}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.4719375}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.5}},\n            {\"release_rate\": 10, \"pan\": 57, \"envelope\": \"envelope4\", \"sound\": \"07_rimshot\"},\n            {\"release_rate\": 10, \"pan\": 65, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"08\", \"tuning\": 1.1905508}},\n            {\"release_rate\": 10, \"pan\": 66, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"08\", \"tuning\": 0.8418465}},\n            {\"release_rate\": 10, \"pan\": 66, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"08\", \"tuning\": 0.8919052}},\n            {\"release_rate\": 10, \"pan\": 6, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.471937}},\n            {\"release_rate\": 10, \"pan\": 6, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.5}},\n            {\"release_rate\": 10, \"pan\": 27, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.66742}},\n            {\"release_rate\": 10, \"pan\": 27, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.707107}},\n            {\"release_rate\": 10, \"pan\": 45, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.793701}},\n            {\"release_rate\": 10, \"pan\": 45, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.840897}},\n            {\"release_rate\": 10, \"pan\": 53, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.0}},\n            {\"release_rate\": 10, \"pan\": 53, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.059463}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.189207}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.259921}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.33484}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.414214}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.498307}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.189207}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.259921}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.33484}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.414214}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.498307}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.587401}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.681793}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.781798}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.5469096}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.5794306}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.61388505}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.65038884}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.6890625}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.7300362}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.77344644}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.81943786}},\n            {\"release_rate\": 10, \"pan\": 70, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0B\", \"tuning\": 1.5468929}},\n            {\"release_rate\": 10, \"pan\": 70, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0B\", \"tuning\": 1.6388757}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.793701}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.840897}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.890899}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.943875}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.0}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.059463}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.122462}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.189207}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.259921}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.33484}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.414214}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope4\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.498307}},\n            {\"release_rate\": 10, \"pan\": 128, \"envelope\": \"envelope4\", \"sound\": \"0D_clave\"}\n        ],\n        \"inst4\": {\n            \"release_rate\": 10,\n            \"normal_range_lo\": 24,\n            \"envelope\": \"envelope5\",\n            \"sound_lo\": \"0E_hihat_closed\",\n            \"sound\": \"0F_hihat_open\"\n        },\n        \"inst5\": {\n            \"release_rate\": 10,\n            \"normal_range_lo\": 28,\n            \"normal_range_hi\": 28,\n            \"envelope\": \"envelope6\",\n            \"sound_lo\": \"10_cymbal_bell\",\n            \"sound\": \"11_splash_cymbal\",\n            \"sound_hi\": \"10_cymbal_bell\"\n        }\n    },\n    \"instrument_list\": [\n        \"inst0\",\n        null,\n        null,\n        null,\n        null,\n        null,\n        \"inst1\",\n        \"inst2\",\n        \"inst3\",\n        null,\n        \"inst4\",\n        \"inst5\"\n    ]\n}\n"
  },
  {
    "path": "sound/sound_banks/23.json",
    "content": "{\n    \"date\": \"1996-03-19\",\n    \"sample_bank\": \"instruments\",\n    \"envelopes\": {\n        \"envelope0\": [\n            [6, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope1\": [\n            [6, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope2\": [\n            [6, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope3\": [\n            [6, 32700],\n            [298, 0],\n            [1, 0],\n            \"hang\"\n        ],\n        \"envelope4\": [\n            [3, 32700],\n            [298, 0],\n            [1, 0],\n            \"hang\"\n        ],\n        \"envelope5\": [\n            [2, 32700],\n            [202, 0],\n            [1, 0],\n            \"hang\"\n        ]\n    },\n    \"instruments\": {\n        \"inst0\": {\n            \"release_rate\": 15,\n            \"normal_range_lo\": 27,\n            \"normal_range_hi\": 46,\n            \"envelope\": \"envelope0\",\n            \"sound_lo\": \"23_strings_Eb2\",\n            \"sound\": \"24_strings_G#2\",\n            \"sound_hi\": \"25_strings_F#3\"\n        },\n        \"inst1\": {\n            \"release_rate\": 15,\n            \"normal_range_lo\": 27,\n            \"normal_range_hi\": 46,\n            \"envelope\": \"envelope1\",\n            \"sound_lo\": \"23_strings_Eb2\",\n            \"sound\": \"24_strings_G#2\",\n            \"sound_hi\": \"25_strings_F#3\"\n        },\n        \"inst2\": {\n            \"release_rate\": 15,\n            \"normal_range_lo\": 27,\n            \"normal_range_hi\": 46,\n            \"envelope\": \"envelope2\",\n            \"sound_lo\": \"23_strings_Eb2\",\n            \"sound\": \"24_strings_G#2\",\n            \"sound_hi\": \"25_strings_F#3\"\n        },\n        \"inst3\": {\n            \"release_rate\": 10,\n            \"envelope\": \"envelope3\",\n            \"sound\": \"26_crystal_rhodes_C4\"\n        },\n        \"inst4\": {\n            \"release_rate\": 10,\n            \"envelope\": \"envelope4\",\n            \"sound\": \"26_crystal_rhodes_C4\"\n        },\n        \"inst5\": {\n            \"release_rate\": 255,\n            \"envelope\": \"envelope5\",\n            \"sound\": \"27_harpsichord_F3\"\n        }\n    },\n    \"instrument_list\": [\n        \"inst0\",\n        \"inst1\",\n        \"inst2\",\n        null,\n        null,\n        \"inst3\",\n        \"inst4\",\n        \"inst5\"\n    ]\n}\n"
  },
  {
    "path": "sound/sound_banks/24.json",
    "content": "{\n    \"date\": \"1996-03-19\",\n    \"sample_bank\": \"instruments\",\n    \"envelopes\": {\n        \"envelope0\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope1\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope2\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope3\": [\n            [26, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope4\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ]\n    },\n    \"instruments\": {\n        \"inst0\": {\n            \"release_rate\": 43,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"41_pan_flute_C3\"\n        },\n        \"inst1\": {\n            \"release_rate\": 24,\n            \"normal_range_lo\": 42,\n            \"envelope\": \"envelope1\",\n            \"sound_lo\": \"14_strings_Eb2\",\n            \"sound\": \"15_strings_B3\"\n        },\n        \"inst2\": {\n            \"release_rate\": 43,\n            \"envelope\": \"envelope3\",\n            \"sound\": \"41_pan_flute_C3\"\n        },\n        \"percussion\": [\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.210224}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.2227245}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.2359685}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.25}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.264866}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.2806155}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.297302}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.3149805}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.33371}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.3535535}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.374577}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.3968505}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.4204485}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.4454495}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.4719375}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.5}},\n            {\"release_rate\": 10, \"pan\": 57, \"envelope\": \"envelope2\", \"sound\": \"07_rimshot\"},\n            {\"release_rate\": 10, \"pan\": 65, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"08\", \"tuning\": 1.1905508}},\n            {\"release_rate\": 10, \"pan\": 66, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"08\", \"tuning\": 0.8418465}},\n            {\"release_rate\": 10, \"pan\": 66, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"08\", \"tuning\": 0.8919052}},\n            {\"release_rate\": 10, \"pan\": 6, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.471937}},\n            {\"release_rate\": 10, \"pan\": 6, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.5}},\n            {\"release_rate\": 10, \"pan\": 27, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.66742}},\n            {\"release_rate\": 10, \"pan\": 27, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.707107}},\n            {\"release_rate\": 10, \"pan\": 45, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.793701}},\n            {\"release_rate\": 10, \"pan\": 45, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.840897}},\n            {\"release_rate\": 10, \"pan\": 53, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.0}},\n            {\"release_rate\": 10, \"pan\": 53, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.059463}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.189207}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.259921}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.33484}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.414214}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.498307}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.189207}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.259921}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.33484}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.414214}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.498307}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.587401}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.681793}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.781798}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.5469096}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.5794306}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.61388505}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.65038884}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.6890625}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.7300362}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.77344644}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.81943786}},\n            {\"release_rate\": 10, \"pan\": 70, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"0B\", \"tuning\": 1.5468929}},\n            {\"release_rate\": 10, \"pan\": 70, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"0B\", \"tuning\": 1.6388757}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.793701}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.840897}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.890899}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.943875}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.0}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.059463}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.122462}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.189207}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.259921}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.33484}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.414214}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope2\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.498307}},\n            {\"release_rate\": 10, \"pan\": 128, \"envelope\": \"envelope2\", \"sound\": \"0D_clave\"}\n        ],\n        \"inst3\": {\n            \"release_rate\": 10,\n            \"envelope\": \"envelope4\",\n            \"sound\": \"22_boys_choir_Bb4\"\n        }\n    },\n    \"instrument_list\": [\n        \"inst0\",\n        \"inst2\",\n        \"inst1\",\n        \"inst3\",\n        null,\n        null,\n        null,\n        null,\n        null,\n        null\n    ]\n}\n"
  },
  {
    "path": "sound/sound_banks/25.json",
    "content": "{\n    \"date\": \"1996-03-19\",\n    \"sample_bank\": \"instruments\",\n    \"envelopes\": {\n        \"envelope0\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope1\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope2\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope3\": [\n            [6, 32700],\n            [298, 0],\n            [1, 0],\n            \"hang\"\n        ],\n        \"envelope4\": [\n            [2, 32700],\n            [205, 0],\n            [1, 0],\n            \"hang\"\n        ],\n        \"envelope5\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope6\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope7\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope8\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope9\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope10\": [\n            [6, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope11\": [\n            [2, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ],\n        \"envelope12\": [\n            [2, 32700],\n            [205, 0],\n            [1, 0],\n            \"hang\"\n        ],\n        \"envelope13\": [\n            [3, 32700],\n            [298, 0],\n            [1, 0],\n            \"hang\"\n        ],\n        \"envelope14\": [\n            [11, 32700],\n            [1, 32700],\n            [32700, 29430],\n            \"hang\"\n        ]\n    },\n    \"instruments\": {\n        \"inst0\": {\n            \"release_rate\": 19,\n            \"envelope\": \"envelope0\",\n            \"sound\": \"43_harmonica_C4\"\n        },\n        \"inst1\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope1\",\n            \"sound\": \"1A_slap_bass_G#2\"\n        },\n        \"inst2\": {\n            \"release_rate\": 208,\n            \"envelope\": \"envelope2\",\n            \"sound\": \"1C_les_paul_guitar_E2\"\n        },\n        \"inst3\": {\n            \"release_rate\": 10,\n            \"envelope\": \"envelope3\",\n            \"sound\": \"26_crystal_rhodes_C4\"\n        },\n        \"inst4\": {\n            \"release_rate\": 34,\n            \"envelope\": \"envelope4\",\n            \"sound\": \"44_grand_piano_F#5\"\n        },\n        \"inst5\": {\n            \"release_rate\": 53,\n            \"normal_range_hi\": 50,\n            \"envelope\": \"envelope5\",\n            \"sound\": \"16_french_horns_C3\",\n            \"sound_hi\": \"45_french_horns_C4\"\n        },\n        \"inst6\": {\n            \"release_rate\": 10,\n            \"normal_range_lo\": 24,\n            \"envelope\": \"envelope6\",\n            \"sound_lo\": \"0E_hihat_closed\",\n            \"sound\": \"0F_hihat_open\"\n        },\n        \"inst7\": {\n            \"release_rate\": 10,\n            \"normal_range_lo\": 28,\n            \"normal_range_hi\": 28,\n            \"envelope\": \"envelope7\",\n            \"sound_lo\": \"10_cymbal_bell\",\n            \"sound\": \"11_splash_cymbal\",\n            \"sound_hi\": \"10_cymbal_bell\"\n        },\n        \"inst8\": {\n            \"release_rate\": 208,\n            \"normal_range_lo\": 60,\n            \"normal_range_hi\": 60,\n            \"envelope\": \"envelope8\",\n            \"sound_lo\": \"1E_closed_triangle\",\n            \"sound\": \"1F_open_triangle\",\n            \"sound_hi\": \"20_cabasa\"\n        },\n        \"inst9\": {\n            \"release_rate\": 43,\n            \"envelope\": \"envelope9\",\n            \"sound\": \"41_pan_flute_C3\"\n        },\n        \"inst10\": {\n            \"release_rate\": 15,\n            \"normal_range_lo\": 27,\n            \"normal_range_hi\": 46,\n            \"envelope\": \"envelope10\",\n            \"sound_lo\": \"23_strings_Eb2\",\n            \"sound\": \"24_strings_G#2\",\n            \"sound_hi\": \"25_strings_F#3\"\n        },\n        \"inst11\": {\n            \"release_rate\": 10,\n            \"envelope\": \"envelope12\",\n            \"sound\": \"44_grand_piano_F#5\"\n        },\n        \"inst12\": {\n            \"release_rate\": 10,\n            \"envelope\": \"envelope13\",\n            \"sound\": \"26_crystal_rhodes_C4\"\n        },\n        \"inst13\": {\n            \"release_rate\": 34,\n            \"envelope\": \"envelope14\",\n            \"sound\": \"43_harmonica_C4\"\n        },\n        \"percussion\": [\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.210224}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.2227245}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.2359685}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.25}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.264866}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.2806155}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.297302}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.3149805}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.33371}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.3535535}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.374577}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.3968505}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.4204485}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.4454495}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.4719375}},\n            {\"release_rate\": 10, \"pan\": 62, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"06_kick_drum_1\", \"tuning\": 0.5}},\n            {\"release_rate\": 10, \"pan\": 57, \"envelope\": \"envelope11\", \"sound\": \"07_rimshot\"},\n            {\"release_rate\": 10, \"pan\": 65, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"08\", \"tuning\": 1.1905508}},\n            {\"release_rate\": 10, \"pan\": 66, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"08\", \"tuning\": 0.8418465}},\n            {\"release_rate\": 10, \"pan\": 66, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"08\", \"tuning\": 0.8919052}},\n            {\"release_rate\": 10, \"pan\": 6, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.471937}},\n            {\"release_rate\": 10, \"pan\": 6, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.5}},\n            {\"release_rate\": 10, \"pan\": 27, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.66742}},\n            {\"release_rate\": 10, \"pan\": 27, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.707107}},\n            {\"release_rate\": 10, \"pan\": 45, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.793701}},\n            {\"release_rate\": 10, \"pan\": 45, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"09\", \"tuning\": 0.840897}},\n            {\"release_rate\": 10, \"pan\": 53, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.0}},\n            {\"release_rate\": 10, \"pan\": 53, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.059463}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.189207}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.259921}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.33484}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.414214}},\n            {\"release_rate\": 10, \"pan\": 83, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"09\", \"tuning\": 1.498307}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.189207}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.259921}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.33484}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.414214}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.498307}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.587401}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.681793}},\n            {\"release_rate\": 10, \"pan\": 35, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"0A_tambourine\", \"tuning\": 1.781798}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.5469096}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.5794306}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.61388505}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.65038884}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.6890625}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.7300362}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.77344644}},\n            {\"release_rate\": 10, \"pan\": 54, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"0B\", \"tuning\": 0.81943786}},\n            {\"release_rate\": 10, \"pan\": 70, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"0B\", \"tuning\": 1.5468929}},\n            {\"release_rate\": 10, \"pan\": 70, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"0B\", \"tuning\": 1.6388757}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.793701}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.840897}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.890899}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 0.943875}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.0}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.059463}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.122462}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.189207}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.259921}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.33484}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.414214}},\n            {\"release_rate\": 10, \"pan\": 82, \"envelope\": \"envelope11\", \"sound\": {\"sample\": \"0C_conga_stick\", \"tuning\": 1.498307}},\n            {\"release_rate\": 10, \"pan\": 128, \"envelope\": \"envelope11\", \"sound\": \"0D_clave\"}\n        ]\n    },\n    \"instrument_list\": [\n        \"inst0\",\n        \"inst1\",\n        \"inst2\",\n        \"inst3\",\n        \"inst4\",\n        \"inst5\",\n        \"inst9\",\n        \"inst10\",\n        \"inst12\",\n        null,\n        \"inst6\",\n        \"inst7\",\n        \"inst8\",\n        null,\n        \"inst13\",\n        \"inst11\"\n    ]\n}\n"
  },
  {
    "path": "sound/sound_data.c",
    "content": "unsigned char gSoundDataADSR[] = {\n#include \"sound/sound_data.ctl.inc.c\"\n};\n\nunsigned char gSoundDataRaw[] = {\n#include \"sound/sound_data.tbl.inc.c\"\n};\n\nunsigned char gMusicData[] = {\n#include \"sound/sequences.bin.inc.c\"\n};\n\n#if !defined(VERSION_SH) && !defined(VERSION_CN)\nunsigned char gBankSetsData[] = {\n#include \"sound/bank_sets.inc.c\"\n};\n#endif\n"
  },
  {
    "path": "src/audio/audio_session_presets_sh.c",
    "content": "#include \"internal.h\"\n#include \"data.h\"\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n\nstruct ReverbSettingsEU sReverbSettings[] = {\n    {0x01, 0x30, 0x2fff, 0x0000, 0x0000, -1, 0x3000, 0x0000, 0x0000},\n    {0x01, 0x28, 0x47ff, 0x0000, 0x0000, -1, 0x3000, 0x0000, 0x0000},\n    {0x01, 0x40, 0x2fff, 0x0000, 0x0000, -1, 0x3000, 0x0000, 0x0000},\n    {0x01, 0x38, 0x3fff, 0x0000, 0x0000, -1, 0x3000, 0x0000, 0x0000},\n    {0x01, 0x30, 0x4fff, 0x0000, 0x0000, -1, 0x3000, 0x0000, 0x0000},\n    {0x01, 0x28, 0x37ff, 0x0000, 0x0000, -1, 0x3000, 0x0000, 0x0000},\n};\n\nstruct AudioSessionSettingsEU gAudioSessionPresets[] = {\n    { 0x00007d00, 0x01, 0x10, 0x01, 0x00, &sReverbSettings[0], 0x7fff, 0x0000, 0x00003a40, 0x00006d00,\n      0x00000000, 0x00004400, 0x00002a00, 0x00000000, 0x00000000, 0x00000000 },\n    { 0x00007d00, 0x01, 0x10, 0x01, 0x00, &sReverbSettings[1], 0x7fff, 0x0000, 0x00003a40, 0x00006d00,\n      0x00000000, 0x00004400, 0x00002a00, 0x00000000, 0x00000000, 0x00000000 },\n    { 0x00007d00, 0x01, 0x10, 0x01, 0x00, &sReverbSettings[2], 0x7fff, 0x0000, 0x00003a40, 0x00006d00,\n      0x00000000, 0x00004400, 0x00002a00, 0x00000000, 0x00000000, 0x00000000 },\n    { 0x00007d00, 0x01, 0x10, 0x01, 0x00, &sReverbSettings[3], 0x7fff, 0x0000, 0x00003a40, 0x00006d00,\n      0x00000000, 0x00004400, 0x00002a00, 0x00000000, 0x00000000, 0x00000000 },\n    { 0x00007d00, 0x01, 0x10, 0x01, 0x00, &sReverbSettings[4], 0x7fff, 0x0000, 0x00003a40, 0x00006d00,\n      0x00000000, 0x00004400, 0x00002a00, 0x00000000, 0x00000000, 0x00000000 },\n    { 0x00007d00, 0x01, 0x10, 0x01, 0x00, &sReverbSettings[0], 0x7fff, 0x0000, 0x00004000, 0x00006e00,\n      0x00000000, 0x00003f00, 0x00002a00, 0x00000000, 0x00000000, 0x00000000 },\n    { 0x00007d00, 0x01, 0x10, 0x01, 0x00, &sReverbSettings[1], 0x7fff, 0x0000, 0x00004100, 0x00006e00,\n      0x00000000, 0x00004400, 0x00002a80, 0x00000000, 0x00000000, 0x00000000 },\n    { 0x00007d00, 0x01, 0x14, 0x01, 0x00, &sReverbSettings[5], 0x7fff, 0x0000, 0x00003500, 0x00006280,\n      0x00000000, 0x00004000, 0x00001b00, 0x00000000, 0x00000000, 0x00000000 }\n};\n\ns8 gUnusedCount80333EE8 = UNUSED_COUNT_80333EE8;\ns16 gTatumsPerBeat = TATUMS_PER_BEAT;\ns32 gAudioHeapSize = DOUBLE_SIZE_ON_64_BIT(AUDIO_HEAP_SIZE);\ns32 gAudioInitPoolSize = DOUBLE_SIZE_ON_64_BIT(AUDIO_INIT_POOL_SIZE);\n\n// Used in audio_init:\nu32 D_SH_80315EF0 = 0;\nu16 D_SH_80315EF4 = 0;\nu16 D_SH_80315EF8 = 0;\nu16 D_SH_80315EFC = 0;\n\n#endif\n"
  },
  {
    "path": "src/audio/copt/seq_channel_layer_process_script_copt.inc.c",
    "content": "//! Copt inlining for US/JP. Here be dragons\n// This version is basically identical to EU\n\n#include <ultra64.h>\n#include <macros.h>\n\n#include \"audio/heap.h\"\n#include \"audio/data.h\"\n#include \"audio/load.h\"\n#include \"audio/seqplayer.h\"\n#include \"audio/external.h\"\n#include \"audio/effects.h\"\n\n#define PORTAMENTO_IS_SPECIAL(x) ((x).mode & 0x80)\n#define PORTAMENTO_MODE(x) ((x).mode & ~0x80)\n#define PORTAMENTO_MODE_1 1\n#define PORTAMENTO_MODE_2 2\n#define PORTAMENTO_MODE_3 3\n#define PORTAMENTO_MODE_4 4\n#define PORTAMENTO_MODE_5 5\n\n#define COPT 0\n#if COPT\n#define M64_READ_U8(state, dst) \\\n    dst = m64_read_u8(state);\n#else\n#define M64_READ_U8(state, dst) \\\n{                               \\\n    u8 * _ptr_pc;               \\\n    u8  _pc;                    \\\n    _ptr_pc = (*state).pc;      \\\n    ((*state).pc)++;            \\\n    _pc = *_ptr_pc;             \\\n    dst = _pc;                  \\\n}\n#endif\n\n\n#if COPT\n#define M64_READ_S16(state, dst) \\\n    dst = m64_read_s16(state);\n#else\n#define M64_READ_S16(state, dst)    \\\n{                                   \\\n    s16 _ret;                       \\\n    _ret = *(*state).pc << 8;       \\\n    ((*state).pc)++;                \\\n    _ret = *(*state).pc | _ret;     \\\n    ((*state).pc)++;                \\\n    dst = _ret;                     \\\n}\n#endif\n#if COPT\n#define M64_READ_COMPRESSED_U16(state, dst) \\\n    dst = m64_read_compressed_u16(state);\n#else\n#define M64_READ_COMPRESSED_U16(state, dst) \\\n{                                           \\\n    u16 ret = *(state->pc++);               \\\n    if (ret & 0x80) {                       \\\n        ret = (ret << 8) & 0x7f00;          \\\n        ret = *(state->pc++) | ret;         \\\n    }                                       \\\n    dst = ret;                              \\\n}\n#endif\n\n#if COPT\n#define GET_INSTRUMENT(seqChannel, instId, _instOut, _adsr, dst, l) \\\n    dst = get_instrument(seqChannel, instId, _instOut, _adsr);\n#else\n#define GET_INSTRUMENT(seqChannel, instId, _instOut, _adsr, dst, l) \\\n{ \\\nstruct AdsrSettings *adsr = _adsr; \\\nstruct Instrument **instOut = _instOut;\\\n    u8 _instId = instId; \\\n    struct Instrument *inst; \\\n    UNUSED u32 pad; \\\n        /* copt inlines instId here  */ \\\n    if (instId >= gCtlEntries[(*seqChannel).bankId].numInstruments) { \\\n        _instId = gCtlEntries[(*seqChannel).bankId].numInstruments; \\\n        if (_instId == 0) { \\\n            dst = 0; \\\n            goto ret ## l; \\\n        } \\\n        _instId--; \\\n    } \\\n    inst = gCtlEntries[(*seqChannel).bankId].instruments[_instId]; \\\n    if (inst == NULL) { \\\n        while (_instId != 0xff) { \\\n            inst = gCtlEntries[(*seqChannel).bankId].instruments[_instId]; \\\n            if (inst != NULL) { \\\n                goto gi ## l; \\\n            } \\\n            _instId--; \\\n        } \\\n        gi ## l:; \\\n    } \\\n    if (((uintptr_t) gBankLoadedPool.persistent.pool.start <= (uintptr_t) inst \\\n         && (uintptr_t) inst <= (uintptr_t)(gBankLoadedPool.persistent.pool.start \\\n                                          + gBankLoadedPool.persistent.pool.size)) \\\n        || ((uintptr_t) gBankLoadedPool.temporary.pool.start <= (uintptr_t) inst \\\n            && (uintptr_t) inst <= (uintptr_t)(gBankLoadedPool.temporary.pool.start \\\n                                             + gBankLoadedPool.temporary.pool.size))) { \\\n        (*adsr).envelope = (*inst).envelope; \\\n        (*adsr).releaseRate = (*inst).releaseRate; \\\n        *instOut = inst; \\\n        _instId++; \\\n        goto ret ## l; \\\n    } \\\n    gAudioErrorFlags = _instId + 0x20000; \\\n    *instOut = NULL; \\\n    ret ## l: ; \\\n}\n#endif\n\nvoid seq_channel_layer_process_script(struct SequenceChannelLayer *layer) {\n    struct SequencePlayer *seqPlayer;   // sp5C, t4\n    struct SequenceChannel *seqChannel; // sp58, t5\n    struct M64ScriptState *state;\n    struct Portamento *portamento;\n    struct AudioBankSound *sound;\n    struct Instrument *instrument;\n    struct Drum *drum;\n    s32 temp_a0_5;\n    u8 sameSound;\n    u8 cmd;                             // a0 sp3E, EU s2\n    u8 cmdSemitone;                     // sp3D, t0\n    u16 sp3A;                           // t2, a0, a1\n    f32 tuning;                         // f0\n    s32 vel;                            // sp30, t3\n    s32 usedSemitone;                   // a1\n    f32 freqScale;                      // sp28, f0\n    f32 sp24;\n    f32 temp_f12;\n    f32 temp_f2;\n\n//! Copt: manually inline these functions in the scope of this routine\n#ifdef __sgi\n#pragma inline routine(m64_read_u8)\n#pragma inline routine(m64_read_compressed_u16)\n#pragma inline routine(m64_read_s16)\n#pragma inline routine(get_instrument)\n#endif\n\n    sameSound = TRUE;\n    if ((*layer).enabled == FALSE) {\n        return;\n    }\n\n    if ((*layer).delay > 1) {\n        (*layer).delay--;\n        if (!layer->stopSomething && layer->delay <= layer->duration) {\n            seq_channel_layer_note_decay(layer);\n            layer->stopSomething = TRUE;\n        }\n        return;\n    }\n\n    if (!layer->continuousNotes) {\n        seq_channel_layer_note_decay(layer);\n    }\n\n    if (PORTAMENTO_MODE(layer->portamento) == PORTAMENTO_MODE_1 ||\n        PORTAMENTO_MODE(layer->portamento) == PORTAMENTO_MODE_2) {\n        layer->portamento.mode = 0;\n    }\n\n    seqChannel = (*layer).seqChannel;\n    seqPlayer = (*seqChannel).seqPlayer;\n    for (;;) {\n        state = &layer->scriptState;\n        //M64_READ_U8(state, cmd);\n        {\n            u8 *_ptr_pc;\n            _ptr_pc = (*state).pc++;\n            cmd = *_ptr_pc;\n        }\n\n        if (cmd <= 0xc0) {\n            break;\n        }\n\n        switch (cmd) {\n            case 0xff: // layer_end; function return or end of script\n                if (state->depth == 0) {\n                    // N.B. this function call is *not* inlined even though it's\n                    // within the same file, unlike in the rest of this function.\n                    seq_channel_layer_disable(layer);\n                    return;\n                }\n                state->depth--, state->pc = state->stack[state->depth];\n                break;\n\n            case 0xfc: // layer_call\n                M64_READ_S16(state, sp3A);\n                state->depth++, state->stack[state->depth - 1] = state->pc;\n                state->pc = seqPlayer->seqData + sp3A;\n                break;\n\n            case 0xf8: // layer_loop; loop start, N iterations (or 256 if N = 0)\n                M64_READ_U8(state, state->remLoopIters[state->depth]);\n                state->depth++, state->stack[state->depth - 1] = state->pc;\n                break;\n\n            case 0xf7: // layer_loopend\n                if (--state->remLoopIters[state->depth - 1] != 0) {\n                    state->pc = state->stack[state->depth - 1];\n                } else {\n                    state->depth--;\n                }\n                break;\n\n            case 0xfb: // layer_jump\n                M64_READ_S16(state, sp3A);\n                state->pc = seqPlayer->seqData + sp3A;\n                break;\n\n            case 0xc1: // layer_setshortnotevelocity\n            case 0xca: // layer_setpan\n                temp_a0_5 = *(state->pc++);\n                if (cmd == 0xc1) {\n                    layer->velocitySquare = (f32)(temp_a0_5 * temp_a0_5);\n                } else {\n                    layer->pan = (f32) temp_a0_5 / US_FLOAT(128.0);\n                }\n                break;\n\n            case 0xc2: // layer_transpose; set transposition in semitones\n            case 0xc9: // layer_setshortnoteduration\n                temp_a0_5 = *(state->pc++);\n                if (cmd == 0xc9) {\n                    layer->noteDuration = temp_a0_5;\n                } else {\n                    layer->transposition = temp_a0_5;\n                }\n                break;\n\n            case 0xc4: // layer_somethingon\n            case 0xc5: // layer_somethingoff\n                //! copt needs a ternary:\n                //layer->continuousNotes = (cmd == 0xc4) ? TRUE : FALSE;\n                {\n                    u8 setting;\n                    if (cmd == 0xc4) {\n                        setting = TRUE;\n                    } else {\n                        setting = FALSE;\n                    }\n                    layer->continuousNotes = setting;\n                    seq_channel_layer_note_decay(layer);\n                }\n                break;\n\n            case 0xc3: // layer_setshortnotedefaultplaypercentage\n                M64_READ_COMPRESSED_U16(state, sp3A);\n                layer->shortNoteDefaultPlayPercentage = sp3A;\n                break;\n\n            case 0xc6: // layer_setinstr\n                M64_READ_U8(state, cmdSemitone);\n\n                if (cmdSemitone < 127) {\n                    GET_INSTRUMENT(seqChannel, cmdSemitone, &(*layer).instrument, &(*layer).adsr, cmdSemitone, 1);\n                }\n                break;\n\n            case 0xc7: // layer_portamento\n                M64_READ_U8(state, (*layer).portamento.mode);\n                M64_READ_U8(state, cmdSemitone);\n\n                cmdSemitone = cmdSemitone + (*seqChannel).transposition;\n                cmdSemitone += (*layer).transposition;\n                cmdSemitone += (*seqPlayer).transposition;\n\n                if (cmdSemitone >= 0x80) {\n                    cmdSemitone = 0;\n                }\n                layer->portamentoTargetNote = cmdSemitone;\n\n                // If special, the next param is u8 instead of var\n                if (PORTAMENTO_IS_SPECIAL((*layer).portamento)) {\n                    layer->portamentoTime = *((state)->pc++);\n                    break;\n                }\n\n                M64_READ_COMPRESSED_U16(state, sp3A);\n                layer->portamentoTime = sp3A;\n                break;\n\n            case 0xc8: // layer_disableportamento\n                layer->portamento.mode = 0;\n                break;\n\n            default:\n                switch (cmd & 0xf0) {\n                    case 0xd0: // layer_setshortnotevelocityfromtable\n                        sp3A = seqPlayer->shortNoteVelocityTable[cmd & 0xf];\n                        (*layer).velocitySquare = (f32)(sp3A * sp3A);\n                        break;\n                    case 0xe0: // layer_setshortnotedurationfromtable\n                        (*layer).noteDuration = seqPlayer->shortNoteDurationTable[cmd & 0xf];\n                        break;\n                }\n        }\n    }\n\n    if (cmd == 0xc0) { // layer_delay\n        M64_READ_COMPRESSED_U16(state, layer->delay);\n        layer->stopSomething = TRUE;\n    } else {\n        layer->stopSomething = FALSE;\n\n        if (seqChannel->largeNotes == TRUE) {\n            switch (cmd & 0xc0) {\n                case 0x00: // layer_note0 (play percentage, velocity, duration)\n                    M64_READ_COMPRESSED_U16(state, sp3A);\n                    vel = *((*state).pc++);\n                    layer->noteDuration = *((*state).pc++);\n                    layer->playPercentage = sp3A;\n                    goto l1090;\n\n                case 0x40: // layer_note1 (play percentage, velocity)\n                    M64_READ_COMPRESSED_U16(state, sp3A);\n                    vel = *((*state).pc++);\n                    layer->noteDuration = 0;\n                    layer->playPercentage = sp3A;\n                    goto l1090;\n\n                case 0x80: // layer_note2 (velocity, duration; uses last play percentage)\n                    sp3A = layer->playPercentage;\n                    vel = *((*state).pc++);\n                    layer->noteDuration = *((*state).pc++);\n                    goto l1090;\n            }\nl1090:\n            cmdSemitone = cmd - (cmd & 0xc0);\n            layer->velocitySquare = vel * vel;\n        } else {\n            switch (cmd & 0xc0) {\n                case 0x00: // play note, type 0 (play percentage)\n                    M64_READ_COMPRESSED_U16(state, sp3A);\n                    layer->playPercentage = sp3A;\n                    goto l1138;\n\n                case 0x40: // play note, type 1 (uses default play percentage)\n                    sp3A = layer->shortNoteDefaultPlayPercentage;\n                    goto l1138;\n\n                case 0x80: // play note, type 2 (uses last play percentage)\n                    sp3A = layer->playPercentage;\n                    goto l1138;\n            }\nl1138:\n\n            cmdSemitone = cmd - (cmd & 0xc0);\n        }\n\n        layer->delay = sp3A;\n        layer->duration = layer->noteDuration * sp3A / 256;\n        if ((seqPlayer->muted && (seqChannel->muteBehavior & MUTE_BEHAVIOR_STOP_NOTES) != 0)\n            || seqChannel->stopSomething2\n            || !seqChannel->hasInstrument\n        ) {\n            layer->stopSomething = TRUE;\n        } else {\n            if (seqChannel->instOrWave == 0) { // drum\n                cmdSemitone += (*seqChannel).transposition + (*layer).transposition;\n                if (cmdSemitone >= gCtlEntries[seqChannel->bankId].numDrums) {\n                    cmdSemitone = gCtlEntries[seqChannel->bankId].numDrums;\n                    if (cmdSemitone == 0) {\n                        // this goto looks a bit like a function return...\n                        layer->stopSomething = TRUE;\n                        goto skip;\n                    }\n\n                    cmdSemitone--;\n                }\n\n                drum = gCtlEntries[seqChannel->bankId].drums[cmdSemitone];\n                if (drum == NULL) {\n                    layer->stopSomething = TRUE;\n                } else {\n                    layer->adsr.envelope = drum->envelope;\n                    layer->adsr.releaseRate = drum->releaseRate;\n                    layer->pan = FLOAT_CAST(drum->pan) / US_FLOAT(128.0);\n                    layer->sound = &drum->sound;\n                    layer->freqScale = layer->sound->tuning;\n                }\n\n            skip:;\n            } else { // instrument\n                cmdSemitone += (*seqPlayer).transposition + (*seqChannel).transposition + (*layer).transposition;\n                if (cmdSemitone >= 0x80) {\n                    layer->stopSomething = TRUE;\n                } else {\n                    instrument = layer->instrument;\n                    if (instrument == NULL) {\n                        instrument = seqChannel->instrument;\n                    }\n\n                    if (layer->portamento.mode != 0) {\n                        //! copt needs a ternary:\n                        //usedSemitone = (layer->portamentoTargetNote < cmdSemitone) ? cmdSemitone : layer->portamentoTargetNote;\n                        if (layer->portamentoTargetNote < cmdSemitone) {\n                            usedSemitone = cmdSemitone;\n                        } else {\n                            usedSemitone = layer->portamentoTargetNote;\n                        }\n\n                        if (instrument != NULL) {\n                            sound = (u8) usedSemitone < instrument->normalRangeLo ? &instrument->lowNotesSound\n                                  : (u8) usedSemitone <= instrument->normalRangeHi ?\n                                        &instrument->normalNotesSound : &instrument->highNotesSound;\n\n                            sameSound = (sound == (*layer).sound);\n                            layer->sound = sound;\n                            tuning = (*sound).tuning;\n                        } else {\n                            layer->sound = NULL;\n                            tuning = 1.0f;\n                        }\n\n                        temp_f2 = gNoteFrequencies[cmdSemitone] * tuning;\n                        temp_f12 = gNoteFrequencies[layer->portamentoTargetNote] * tuning;\n\n                        portamento = &layer->portamento;\n                        switch (PORTAMENTO_MODE(layer->portamento)) {\n                            case PORTAMENTO_MODE_1:\n                            case PORTAMENTO_MODE_3:\n                            case PORTAMENTO_MODE_5:\n                                sp24 = temp_f2;\n                                freqScale = temp_f12;\n                                goto l13cc;\n\n                            case PORTAMENTO_MODE_2:\n                            case PORTAMENTO_MODE_4:\n                                freqScale = temp_f2;\n                                sp24 = temp_f12;\n                                goto l13cc;\n                        }\nl13cc:\n                        portamento->extent = sp24 / freqScale - US_FLOAT(1.0);\n                        if (PORTAMENTO_IS_SPECIAL((*layer).portamento)) {\n                            portamento->speed = US_FLOAT(32512.0) * FLOAT_CAST((*seqPlayer).tempo)\n                                                / ((f32)(*layer).delay * (f32) gTempoInternalToExternal\n                                                   * FLOAT_CAST((*layer).portamentoTime));\n                        } else {\n                            portamento->speed = US_FLOAT(127.0) / FLOAT_CAST((*layer).portamentoTime);\n                        }\n                        portamento->cur = 0.0f;\n                        layer->freqScale = freqScale;\n                        if (PORTAMENTO_MODE((*layer).portamento) == PORTAMENTO_MODE_5) {\n                            layer->portamentoTargetNote = cmdSemitone;\n                        }\n                    } else if (instrument != NULL) {\n                        sound = cmdSemitone < instrument->normalRangeLo ?\n                                         &instrument->lowNotesSound : cmdSemitone <= instrument->normalRangeHi ?\n                                         &instrument->normalNotesSound : &instrument->highNotesSound;\n\n                        sameSound = (sound == (*layer).sound);\n                        layer->sound = sound;\n                        layer->freqScale = gNoteFrequencies[cmdSemitone] * (*sound).tuning;\n                    } else {\n                        layer->sound = NULL;\n                        layer->freqScale = gNoteFrequencies[cmdSemitone];\n                    }\n                }\n            }\n            layer->delayUnused = layer->delay;\n        }\n    }\n\n    if (layer->stopSomething == TRUE) {\n        if (layer->note != NULL || layer->continuousNotes) {\n            seq_channel_layer_note_decay(layer);\n        }\n        return;\n    }\n\n    cmdSemitone = FALSE;\n    if (!layer->continuousNotes) {\n        cmdSemitone = TRUE;\n    } else if (layer->note == NULL || layer->status == SOUND_LOAD_STATUS_NOT_LOADED) {\n        cmdSemitone = TRUE;\n    } else if (sameSound == FALSE) {\n        seq_channel_layer_note_decay(layer);\n        cmdSemitone = TRUE;\n    } else if (layer->sound == NULL) {\n        init_synthetic_wave(layer->note, layer);\n    }\n\n    if (cmdSemitone != FALSE) {\n        (*layer).note = alloc_note(layer);\n    }\n\n    if (layer->note != NULL && layer->note->parentLayer == layer) {\n        note_vibrato_init(layer->note);\n    }\n}\n"
  },
  {
    "path": "src/audio/data.c",
    "content": "#include <ultra64.h>\n\n#include \"data.h\"\n#include \"effects.h\"\n\nextern struct OSMesgQueue OSMesgQueue0;\nextern struct OSMesgQueue OSMesgQueue1;\nextern struct OSMesgQueue OSMesgQueue2;\nextern struct OSMesgQueue OSMesgQueue3;\n\n#ifdef VERSION_EU\nstruct ReverbSettingsEU sReverbSettings[] = {\n    { 0x04, 0x0c, 0x2fff },\n    { 0x04, 0x0a, 0x47ff },\n    { 0x04, 0x10, 0x2fff },\n    { 0x04, 0x0e, 0x3fff },\n    { 0x04, 0x0c, 0x4fff },\n    { 0x04, 0x0a, 0x37ff }\n};\nstruct AudioSessionSettingsEU gAudioSessionPresets[] = {\n    { 0x00007d00, 0x01, 0x10, 0x01, 0x00, &sReverbSettings[0], 0x7fff, 0x0000, 0x00003a40, 0x00006d00,\n      0x00004400, 0x00002a00 },\n    { 0x00007d00, 0x01, 0x10, 0x01, 0x00, &sReverbSettings[1], 0x7fff, 0x0000, 0x00003a40, 0x00006d00,\n      0x00004400, 0x00002a00 },\n    { 0x00007d00, 0x01, 0x10, 0x01, 0x00, &sReverbSettings[2], 0x7fff, 0x0000, 0x00003a40, 0x00006d00,\n      0x00004400, 0x00002a00 },\n    { 0x00007d00, 0x01, 0x10, 0x01, 0x00, &sReverbSettings[3], 0x7fff, 0x0000, 0x00003a40, 0x00006d00,\n      0x00004400, 0x00002a00 },\n    { 0x00007d00, 0x01, 0x10, 0x01, 0x00, &sReverbSettings[4], 0x7fff, 0x0000, 0x00003a40, 0x00006d00,\n      0x00004400, 0x00002a00 },\n    { 0x00007d00, 0x01, 0x10, 0x01, 0x00, &sReverbSettings[0], 0x7fff, 0x0000, 0x00004000, 0x00006e00,\n      0x00003f00, 0x00002a00 },\n    { 0x00007d00, 0x01, 0x10, 0x01, 0x00, &sReverbSettings[1], 0x7fff, 0x0000, 0x00004100, 0x00006e00,\n      0x00004400, 0x00002a80 },\n    { 0x00007d00, 0x01, 0x14, 0x01, 0x00, &sReverbSettings[5], 0x7fff, 0x0000, 0x00003500, 0x00006280,\n      0x00004000, 0x00001b00 }\n};\n#endif\n\n// Format:\n// - frequency\n// - max number of simultaneous notes\n// - reverb downsample rate (makes the ring buffer be downsampled to save memory)\n// - reverb window size (ring buffer size, length affects reverb delay)\n// - reverb gain (0 = min reverb, 32767 = max reverb, 32769 to 65535 = louder and louder...)\n// - volume\n// - memory used for persistent sequences\n// - memory used for persistent banks\n// - memory used for temporary sequences\n// - memory used for temporary banks\n#if defined(VERSION_JP) || defined(VERSION_US)\nstruct AudioSessionSettings gAudioSessionPresets[18] = {\n#ifdef VERSION_JP\n    { 32000, 16, 1, 0x0800, 0x2FFF, 0x7FFF, 0x3900, 0x6000, 0x4400, 0x2A00 },\n    { 32000, 16, 1, 0x0A00, 0x47FF, 0x7FFF, 0x3900, 0x6000, 0x4400, 0x2A00 },\n    { 32000, 16, 1, 0x1000, 0x2FFF, 0x7FFF, 0x3900, 0x6000, 0x4400, 0x2A00 },\n    { 32000, 16, 1, 0x0E00, 0x3FFF, 0x7FFF, 0x3900, 0x6000, 0x4400, 0x2A00 },\n    { 32000, 16, 1, 0x0C00, 0x4FFF, 0x7FFF, 0x3900, 0x6000, 0x4400, 0x2A00 },\n    { 32000, 16, 1, 0x0800, 0x2FFF, 0x7FFF, 0x3E00, 0x6200, 0x3F00, 0x2A00 },\n    { 32000, 16, 1, 0x0A00, 0x47FF, 0x7FFF, 0x3F00, 0x6200, 0x4400, 0x2A80 },\n    { 32000, 20, 1, 0x0800, 0x37FF, 0x7FFF, 0x3300, 0x5500, 0x4000, 0x1B00 },\n#else\n    { 32000, 16, 1, 0x0C00, 0x2FFF, 0x7FFF, 0x3A00, 0x6D00, 0x4400, 0x2A00 },\n    { 32000, 16, 1, 0x0A00, 0x47FF, 0x7FFF, 0x3A00, 0x6D00, 0x4400, 0x2A00 },\n    { 32000, 16, 1, 0x1000, 0x2FFF, 0x7FFF, 0x3A00, 0x6D00, 0x4400, 0x2A00 },\n    { 32000, 16, 1, 0x0E00, 0x3FFF, 0x7FFF, 0x3A00, 0x6D00, 0x4400, 0x2A00 },\n    { 32000, 16, 1, 0x0C00, 0x4FFF, 0x7FFF, 0x3A00, 0x6D00, 0x4400, 0x2A00 },\n    { 32000, 16, 1, 0x0C00, 0x2FFF, 0x7FFF, 0x4000, 0x6E00, 0x3F00, 0x2A00 },\n    { 32000, 16, 1, 0x0A00, 0x47FF, 0x7FFF, 0x4100, 0x6E00, 0x4400, 0x2A80 },\n    { 32000, 20, 1, 0x0800, 0x37FF, 0x7FFF, 0x34C0, 0x6280, 0x4000, 0x1B00 },\n#endif\n    { 27000, 16, 1, 0x0800, 0x2FFF, 0x7FFF, 0x2500, 0x5500, 0x7400, 0x2400 },\n    { 27000, 16, 1, 0x0800, 0x3FFF, 0x7FFF, 0x2500, 0x5500, 0x7400, 0x2400 },\n    { 27000, 16, 1, 0x1000, 0x2FFF, 0x7FFF, 0x2500, 0x5500, 0x7400, 0x2400 },\n    { 27000, 16, 1, 0x1000, 0x3FFF, 0x7FFF, 0x2500, 0x5500, 0x7400, 0x2400 },\n    { 27000, 16, 1, 0x0C00, 0x4FFF, 0x7FFF, 0x2500, 0x5500, 0x7400, 0x2400 },\n    { 32000, 14, 1, 0x0800, 0x2FFF, 0x7FFF, 0x2500, 0x5500, 0x7400, 0x2400 },\n    { 32000, 12, 1, 0x0800, 0x2FFF, 0x7FFF, 0x2500, 0x5500, 0x7400, 0x2400 },\n    { 32000, 10, 1, 0x0800, 0x2FFF, 0x7FFF, 0x2500, 0x5500, 0x7400, 0x2400 },\n    { 32000, 8, 1, 0x0800, 0x2FFF, 0x7FFF, 0x2500, 0x5500, 0x7400, 0x2400 },\n    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }\n};\n#endif\n// gAudioCosineTable[k] = round((2**15 - 1) * cos(pi/2 * k / 127)). Unused.\n#if defined(VERSION_JP) || defined(VERSION_US)\nu16 gAudioCosineTable[128] = {\n    0x7FFF, 32764, 32757, 32744, 32727, 32704, 32677, 32644, 32607, 32564, 32517, 32464, 32407,\n    32344,  32277, 32205, 32127, 32045, 31958, 31866, 31770, 31668, 31561, 31450, 31334, 31213,\n    31087,  30957, 30822, 30682, 30537, 30388, 30234, 30075, 29912, 29744, 29572, 29395, 29214,\n    29028,  28838, 28643, 28444, 28241, 28033, 27821, 27605, 27385, 27160, 26931, 26698, 26461,\n    26220,  25975, 25726, 25473, 25216, 24956, 24691, 24423, 24151, 23875, 23596, 23313, 23026,\n    22736,  22442, 22145, 21845, 21541, 21234, 20924, 20610, 20294, 19974, 19651, 19325, 18997,\n    18665,  18331, 17993, 17653, 17310, 16965, 16617, 16266, 15913, 15558, 15200, 14840, 14477,\n    14113,  13746, 13377, 13006, 12633, 12258, 11881, 11503, 11122, 10740, 10357, 9971,  9584,\n    9196,   8806,  8415,  8023,  7630,  7235,  6839,  6442,  6044,  5646,  5246,  4845,  4444,\n    4042,   3640,  3237,  2833,  2429,  2025,  1620,  1216,  810,   405,   0,\n};\n#endif\n\n// Transforms a pitch scale factor in -127..127 into a frequency scale factor\n// between -1 and +1 octave.\n// gPitchBendFrequencyScale[k] = 0.5 * 2^(k/127)\n#if !defined(VERSION_SH) && !defined(VERSION_CN)\n#if defined(VERSION_EU)\nf32 gPitchBendFrequencyScale[256] = {\n    0.5f,\n#else\nf32 gPitchBendFrequencyScale[255] = {\n#endif\n    0.5f,      0.502736f, 0.505488f, 0.508254f, 0.511036f, 0.513833f, 0.516645f, 0.519472f, 0.522315f,\n    0.525174f, 0.528048f, 0.530938f, 0.533843f, 0.536765f, 0.539702f, 0.542656f, 0.545626f, 0.548612f,\n    0.551614f, 0.554633f, 0.557669f, 0.560721f, 0.563789f, 0.566875f, 0.569977f, 0.573097f, 0.576233f,\n    0.579387f, 0.582558f, 0.585746f, 0.588951f, 0.592175f, 0.595415f, 0.598674f, 0.601950f, 0.605245f,\n    0.608557f, 0.611888f, 0.615236f, 0.618603f, 0.621989f, 0.625393f, 0.628815f, 0.632257f, 0.635717f,\n    0.639196f, 0.642694f, 0.646212f, 0.649748f, 0.653304f, 0.656880f, 0.660475f, 0.664089f, 0.667724f,\n    0.671378f, 0.675052f, 0.678747f, 0.682461f, 0.686196f, 0.689952f, 0.693727f, 0.697524f, 0.701341f,\n    0.705180f, 0.709039f, 0.712919f, 0.716821f, 0.720744f, 0.724689f, 0.728655f, 0.732642f, 0.736652f,\n    0.740684f, 0.744737f, 0.748813f, 0.752911f, 0.757031f, 0.761175f, 0.765340f, 0.769529f, 0.773740f,\n    0.777975f, 0.782232f, 0.786513f, 0.790818f, 0.795146f, 0.799497f, 0.803873f, 0.808272f, 0.812696f,\n    0.817144f, 0.821616f, 0.826112f, 0.830633f, 0.835179f, 0.839750f, 0.844346f, 0.848966f, 0.853613f,\n    0.858284f, 0.862982f, 0.867704f, 0.872453f, 0.877228f, 0.882029f, 0.886856f, 0.891709f, 0.896590f,\n    0.901496f, 0.906430f, 0.911391f, 0.916379f, 0.921394f, 0.926436f, 0.931507f, 0.936604f, 0.941730f,\n    0.946884f, 0.952066f, 0.957277f, 0.962516f, 0.967783f, 0.973080f, 0.978405f, 0.983760f, 0.989144f,\n    0.994557f, 1.0f,      1.005473f, 1.010975f, 1.016508f, 1.022071f, 1.027665f, 1.033289f, 1.038944f,\n    1.044630f, 1.050347f, 1.056095f, 1.061875f, 1.067687f, 1.073530f, 1.079405f, 1.085312f, 1.091252f,\n    1.097224f, 1.103229f, 1.109267f, 1.115337f, 1.121441f, 1.127579f, 1.133750f, 1.139955f, 1.146193f,\n    1.152466f, 1.158773f, 1.165115f, 1.171491f, 1.177903f, 1.184349f, 1.190831f, 1.197348f, 1.203901f,\n    1.210489f, 1.217114f, 1.223775f, 1.230473f, 1.237207f, 1.243978f, 1.250786f, 1.257631f, 1.264514f,\n    1.271434f, 1.278392f, 1.285389f, 1.292423f, 1.299497f, 1.306608f, 1.313759f, 1.320949f, 1.328178f,\n    1.335447f, 1.342756f, 1.350104f, 1.357493f, 1.364922f, 1.372392f, 1.379903f, 1.387455f, 1.395048f,\n    1.402683f, 1.410360f, 1.418078f, 1.425839f, 1.433642f, 1.441488f, 1.449377f, 1.457309f, 1.465285f,\n    1.473304f, 1.481367f, 1.489474f, 1.497626f, 1.505822f, 1.514063f, 1.522349f, 1.530681f, 1.539058f,\n    1.547481f, 1.555950f, 1.564465f, 1.573027f, 1.581636f, 1.590292f, 1.598995f, 1.607746f, 1.616545f,\n    1.625392f, 1.634287f, 1.643231f, 1.652224f, 1.661266f, 1.670358f, 1.679500f, 1.688691f, 1.697933f,\n    1.707225f, 1.716569f, 1.725963f, 1.735409f, 1.744906f, 1.754456f, 1.764058f, 1.773712f, 1.783419f,\n    1.793179f, 1.802993f, 1.812860f, 1.822782f, 1.832757f, 1.842788f, 1.852873f, 1.863013f, 1.873209f,\n    1.883461f, 1.893768f, 1.904132f, 1.914553f, 1.925031f, 1.935567f, 1.946159f, 1.956810f, 1.967520f,\n    1.978287f, 1.989114f, 2.0f\n};\n\n// Frequencies for notes using the standard twelve-tone equal temperament scale.\n// For indices 0..116, gNoteFrequencies[k] = 2^((k-39)/12).\n// For indices 117..128, gNoteFrequencies[k] = 0.5 * 2^((k-39)/12).\n// The 39 in the formula refers to piano key 40 (middle C, at 256 Hz) being\n// the reference frequency, which is assigned value 1.\n// clang-format off\nf32 gNoteFrequencies[128] = {\n    0.105112f,  0.111362f,  0.117984f,  0.125f, 0.132433f, 0.140308f,  0.148651f,  0.15749f,  0.166855f, 0.176777f, 0.187288f,  0.198425f,\n    0.210224f,  0.222725f,  0.235969f,  0.25f,  0.264866f, 0.280616f,  0.297302f,  0.31498f,  0.33371f,  0.353553f, 0.374577f,  0.39685f,\n    0.420448f,  0.445449f,  0.471937f,  0.5f,   0.529732f, 0.561231f,  0.594604f,  0.629961f, 0.66742f,  0.707107f, 0.749154f,  0.793701f,\n    0.840897f,  0.890899f,  0.943875f,  1.0f,   1.059463f, 1.122462f,  1.189207f,  1.259921f, 1.33484f,  1.414214f, 1.498307f,  1.587401f,\n    1.681793f,  1.781798f,  1.887749f,  2.0f,   2.118926f, 2.244924f,  2.378414f,  2.519842f, 2.66968f,  2.828428f, 2.996615f,  3.174803f,\n    3.363586f,  3.563596f,  3.775498f,  4.0f,   4.237853f, 4.489849f,  4.756829f,  5.039685f, 5.33936f,  5.656855f, 5.993229f,  6.349606f,\n    6.727173f,  7.127192f,  7.550996f,  8.0f,   8.475705f, 8.979697f,  9.513658f,  10.07937f, 10.67872f, 11.31371f, 11.986459f, 12.699211f,\n    13.454346f, 14.254383f, 15.101993f, 16.0f,  16.95141f, 17.959394f, 19.027315f, 20.15874f, 21.35744f, 22.62742f, 23.972918f, 25.398422f,\n    26.908691f, 28.508766f, 30.203985f, 32.0f,  33.90282f, 35.91879f,  38.05463f,  40.31748f, 42.71488f, 45.25484f, 47.945835f, 50.796844f,\n    53.817383f, 57.017532f, 60.40797f,  64.0f,  67.80564f, 71.83758f,  76.10926f,  80.63496f, 85.42976f, 45.25484f, 47.945835f, 50.796844f,\n    53.817383f, 57.017532f, 60.40797f,  64.0f,  67.80564f, 71.83758f,  76.10926f,  80.63496f\n};\n// clang-format on\n\n// goes up by ~12 at each step for the first 4 values (starting from 0), then by ~6\nu8 gDefaultShortNoteVelocityTable[16] = {\n    12, 25, 38, 51, 57, 64, 71, 76, 83, 89, 96, 102, 109, 115, 121, 127,\n};\n\n// goes down by 26 at each step for the first 4 values (starting from 255), then by ~12\nu8 gDefaultShortNoteDurationTable[16] = {\n    229, 203, 177, 151, 139, 126, 113, 100, 87, 74, 61, 48, 36, 23, 10, 0,\n};\n\n#if defined(VERSION_JP) || defined(VERSION_US)\n// gVibratoCurve[k] = k*8\ns8 gVibratoCurve[16] = { 0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120 };\n#endif\n\nstruct AdsrEnvelope gDefaultEnvelope[] = {\n    { BSWAP16(4), BSWAP16(32000) },    // go from 0 to 32000 over the course of 16ms\n    { BSWAP16(1000), BSWAP16(32000) }, // stay there for 4.16 seconds\n    { BSWAP16(ADSR_HANG), 0 }          // then continue staying there\n};\n#endif\n\n#ifdef VERSION_EU\nstruct NoteSubEu gZeroNoteSub = { 0 };\nstruct NoteSubEu gDefaultNoteSub = { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, { NULL } };\n#endif\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\ns16 sSawtoothWaves[256] = {\n    0,       1023,   2047,    3071,   4095,    5119,   6143,    7167,   8191,    9215,   10239,\n    11263,   0x2FFF, 13311,   0x37FF, 15359,   0x3FFF, 17407,   0x47FF, 19455,   0x4FFF, 21503,\n    22527,   23551,  24575,   25599,  26623,   27647,  28671,   29695,  30719,   31743,  -0x7FFF,\n    -31743,  -30719, -29695,  -28671, -27647,  -26623, -25599,  -24575, -23551,  -22527, -21503,\n    -0x4FFF, -19455, -0x47FF, -17407, -0x3FFF, -15359, -0x37FF, -13311, -0x2FFF, -11263, -10239,\n    -9215,   -8191,  -7167,   -6143,  -5119,   -4095,  -3071,   -2047,  -1023,\n    0,      0x7FF,  0xFFF,  0x17FF, 0x1FFF, 0x27FF, 0x2FFF, 0x37FF, 0x3FFF, 0x47FF, 0x4FFF,\n    0x57FF, 0x5FFF, 0x67FF, 0x6FFF, 0x77FF, 0x8001, 0x8801, 0x9001, 0x9801, 0xa001, 0xa801,\n    0xb001, 0xb801, 0xc001, 0xc801, 0xd001, 0xd801, 0xe001, 0xe801, 0xf001, 0xf801, 0x0000,\n    0x07ff, 0x0fff, 0x17ff, 0x1fff, 0x27ff, 0x2fff, 0x37ff, 0x3fff, 0x47ff, 0x4fff, 0x57ff,\n    0x5fff, 0x67ff, 0x6fff, 0x77ff, 0x8001, 0x8801, 0x9001, 0x9801, 0xa001, 0xa801, 0xb001,\n    0xb801, 0xc001, 0xc801, 0xd001, 0xd801, 0xe001, 0xe801, 0xf001, 0xf801,\n    0x0000, 0x0fff, 0x1fff, 0x2fff, 0x3fff, 0x4fff, 0x5fff, 0x6fff,\n    0x8001, 0x9001, 0xa001, 0xb001, 0xc001, 0xd001, 0xe001, 0xf001,\n    0x0000, 0x0fff, 0x1fff, 0x2fff, 0x3fff, 0x4fff, 0x5fff, 0x6fff,\n    0x8001, 0x9001, 0xa001, 0xb001, 0xc001, 0xd001, 0xe001, 0xf001,\n    0x0000, 0x0fff, 0x1fff, 0x2fff, 0x3fff, 0x4fff, 0x5fff, 0x6fff,\n    0x8001, 0x9001, 0xa001, 0xb001, 0xc001, 0xd001, 0xe001, 0xf001,\n    0x0000, 0x0fff, 0x1fff, 0x2fff, 0x3fff, 0x4fff, 0x5fff, 0x6fff,\n    0x8001, 0x9001, 0xa001, 0xb001, 0xc001, 0xd001, 0xe001, 0xf001,\n    0x0000, 0x1fff, 0x3fff, 0x5fff, 0x8001, 0xa001, 0xc001, 0xe001,\n    0x0000, 0x1fff, 0x3fff, 0x5fff, 0x8001, 0xa001, 0xc001, 0xe001,\n    0x0000, 0x1fff, 0x3fff, 0x5fff, 0x8001, 0xa001, 0xc001, 0xe001,\n    0x0000, 0x1fff, 0x3fff, 0x5fff, 0x8001, 0xa001, 0xc001, 0xe001,\n    0x0000, 0x1fff, 0x3fff, 0x5fff, 0x8001, 0xa001, 0xc001, 0xe001,\n    0x0000, 0x1fff, 0x3fff, 0x5fff, 0x8001, 0xa001, 0xc001, 0xe001,\n    0x0000, 0x1fff, 0x3fff, 0x5fff, 0x8001, 0xa001, 0xc001, 0xe001,\n    0x0000, 0x1fff, 0x3fff, 0x5fff, 0x8001, 0xa001, 0xc001, 0xe001\n};\ns16 sTriangleWaves[256] = {\n    0x0000, 0x07ff, 0x0fff, 0x17ff, 0x1fff, 0x27ff, 0x2fff, 0x37ff, 0x3fff, 0x47ff, 0x4fff, 0x57ff,\n    0x5fff, 0x67ff, 0x6fff, 0x77ff, 0x7fff, 0x77ff, 0x6fff, 0x67ff, 0x5fff, 0x57ff, 0x4fff, 0x47ff,\n    0x3fff, 0x37ff, 0x2fff, 0x27ff, 0x1fff, 0x17ff, 0x0fff, 0x07ff, 0x0000, 0xf801, 0xf001, 0xe801,\n    0xe001, 0xd801, 0xd001, 0xc801, 0xc001, 0xb801, 0xb001, 0xa801, 0xa001, 0x9801, 0x9001, 0x8801,\n    0x8001, 0x8801, 0x9001, 0x9801, 0xa001, 0xa801, 0xb001, 0xb801, 0xc001, 0xc801, 0xd001, 0xd801,\n    0xe001, 0xe801, 0xf001, 0xf801, 0x0000, 0x0fff, 0x1fff, 0x2fff, 0x3fff, 0x4fff, 0x5fff, 0x6fff,\n    0x7fff, 0x6fff, 0x5fff, 0x4fff, 0x3fff, 0x2fff, 0x1fff, 0x0fff, 0x0000, 0xf001, 0xe001, 0xd001,\n    0xc001, 0xb001, 0xa001, 0x9001, 0x8001, 0x9001, 0xa001, 0xb001, 0xc001, 0xd001, 0xe001, 0xf001,\n    0x0000, 0x0fff, 0x1fff, 0x2fff, 0x3fff, 0x4fff, 0x5fff, 0x6fff, 0x7fff, 0x6fff, 0x5fff, 0x4fff,\n    0x3fff, 0x2fff, 0x1fff, 0x0fff, 0x0000, 0xf001, 0xe001, 0xd001, 0xc001, 0xb001, 0xa001, 0x9001,\n    0x8001, 0x9001, 0xa001, 0xb001, 0xc001, 0xd001, 0xe001, 0xf001, 0x0000, 0x1fff, 0x3fff, 0x5fff,\n    0x7fff, 0x5fff, 0x3fff, 0x1fff, 0x0000, 0xe001, 0xc001, 0xa001, 0x8001, 0xa001, 0xc001, 0xe001,\n    0x0000, 0x1fff, 0x3fff, 0x5fff, 0x7fff, 0x5fff, 0x3fff, 0x1fff, 0x0000, 0xe001, 0xc001, 0xa001,\n    0x8001, 0xa001, 0xc001, 0xe001, 0x0000, 0x1fff, 0x3fff, 0x5fff, 0x7fff, 0x5fff, 0x3fff, 0x1fff,\n    0x0000, 0xe001, 0xc001, 0xa001, 0x8001, 0xa001, 0xc001, 0xe001, 0x0000, 0x1fff, 0x3fff, 0x5fff,\n    0x7fff, 0x5fff, 0x3fff, 0x1fff, 0x0000, 0xe001, 0xc001, 0xa001, 0x8001, 0xa001, 0xc001, 0xe001,\n    0x0000, 0x3fff, 0x7fff, 0x3fff, 0x0000, 0xc001, 0x8001, 0xc001, 0x0000, 0x3fff, 0x7fff, 0x3fff,\n    0x0000, 0xc001, 0x8001, 0xc001, 0x0000, 0x3fff, 0x7fff, 0x3fff, 0x0000, 0xc001, 0x8001, 0xc001,\n    0x0000, 0x3fff, 0x7fff, 0x3fff, 0x0000, 0xc001, 0x8001, 0xc001, 0x0000, 0x3fff, 0x7fff, 0x3fff,\n    0x0000, 0xc001, 0x8001, 0xc001, 0x0000, 0x3fff, 0x7fff, 0x3fff, 0x0000, 0xc001, 0x8001, 0xc001,\n    0x0000, 0x3fff, 0x7fff, 0x3fff, 0x0000, 0xc001, 0x8001, 0xc001, 0x0000, 0x3fff, 0x7fff, 0x3fff,\n    0x0000, 0xc001, 0x8001, 0xc001,\n};\ns16 sSineWaves[256] = {\n    0x0000, 0x0c8b, 0x18f8, 0x2527, 0x30fb, 0x3c56, 0x471c, 0x5133, 0x5a81, 0x62f1, 0x6a6c, 0x70e1,\n    0x7640, 0x7a7c, 0x7d89, 0x7f61, 0x7fff, 0x7f61, 0x7d89, 0x7a7c, 0x7640, 0x70e1, 0x6a6c, 0x62f1,\n    0x5a81, 0x5133, 0x471c, 0x3c56, 0x30fb, 0x2527, 0x18f8, 0x0c8b, 0x0000, 0xf375, 0xe708, 0xdad9,\n    0xcf05, 0xc3aa, 0xb8e4, 0xaecd, 0xa57f, 0x9d0f, 0x9594, 0x8f1f, 0x89c0, 0x8584, 0x8277, 0x809f,\n    0x8001, 0x809f, 0x8277, 0x8584, 0x89c0, 0x8f1f, 0x9594, 0x9d0f, 0xa57f, 0xaecd, 0xb8e4, 0xc3aa,\n    0xcf05, 0xdad9, 0xe708, 0xf375, 0x0000, 0x18f8, 0x30fb, 0x471c, 0x5a81, 0x6a6c, 0x7640, 0x7d89,\n    0x7fff, 0x7d89, 0x7640, 0x6a6c, 0x5a81, 0x471c, 0x30fb, 0x18f8, 0x0000, 0xe708, 0xcf05, 0xb8e4,\n    0xa57f, 0x9594, 0x89c0, 0x8277, 0x8001, 0x8277, 0x89c0, 0x9594, 0xa57f, 0xb8e4, 0xcf05, 0xe708,\n    0x0000, 0x18f8, 0x30fb, 0x471c, 0x5a81, 0x6a6c, 0x7640, 0x7d89, 0x7fff, 0x7d89, 0x7640, 0x6a6c,\n    0x5a81, 0x471c, 0x30fb, 0x18f8, 0x0000, 0xe708, 0xcf05, 0xb8e4, 0xa57f, 0x9594, 0x89c0, 0x8277,\n    0x8001, 0x8277, 0x89c0, 0x9594, 0xa57f, 0xb8e4, 0xcf05, 0xe708, 0x0000, 0x30fb, 0x5a81, 0x7640,\n    0x7fff, 0x7640, 0x5a81, 0x30fb, 0x0000, 0xcf05, 0xa57f, 0x89c0, 0x8001, 0x89c0, 0xa57f, 0xcf05,\n    0x0000, 0x30fb, 0x5a81, 0x7640, 0x7fff, 0x7640, 0x5a81, 0x30fb, 0x0000, 0xcf05, 0xa57f, 0x89c0,\n    0x8001, 0x89c0, 0xa57f, 0xcf05, 0x0000, 0x30fb, 0x5a81, 0x7640, 0x7fff, 0x7640, 0x5a81, 0x30fb,\n    0x0000, 0xcf05, 0xa57f, 0x89c0, 0x8001, 0x89c0, 0xa57f, 0xcf05, 0x0000, 0x30fb, 0x5a81, 0x7640,\n    0x7fff, 0x7640, 0x5a81, 0x30fb, 0x0000, 0xcf05, 0xa57f, 0x89c0, 0x8001, 0x89c0, 0xa57f, 0xcf05,\n    0x0000, 0x5a81, 0x7fff, 0x5a81, 0x0000, 0xa57f, 0x8001, 0xa57f, 0x0000, 0x5a81, 0x7fff, 0x5a81,\n    0x0000, 0xa57f, 0x8001, 0xa57f, 0x0000, 0x5a81, 0x7fff, 0x5a81, 0x0000, 0xa57f, 0x8001, 0xa57f,\n    0x0000, 0x5a81, 0x7fff, 0x5a81, 0x0000, 0xa57f, 0x8001, 0xa57f, 0x0000, 0x5a81, 0x7fff, 0x5a81,\n    0x0000, 0xa57f, 0x8001, 0xa57f, 0x0000, 0x5a81, 0x7fff, 0x5a81, 0x0000, 0xa57f, 0x8001, 0xa57f,\n    0x0000, 0x5a81, 0x7fff, 0x5a81, 0x0000, 0xa57f, 0x8001, 0xa57f, 0x0000, 0x5a81, 0x7fff, 0x5a81,\n    0x0000, 0xa57f, 0x8001, 0xa57f,\n};\ns16 sSquareWaves[256] = {\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff,\n    0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7fff, 0x7fff, 0x7fff, 0x7fff,\n    0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x8001, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x8001, 0x8001, 0x8001, 0x8001, 0x0000, 0x0000, 0x0000, 0x0000, 0x7fff, 0x7fff, 0x7fff, 0x7fff,\n    0x0000, 0x0000, 0x0000, 0x0000, 0x8001, 0x8001, 0x8001, 0x8001, 0x0000, 0x0000, 0x0000, 0x0000,\n    0x7fff, 0x7fff, 0x7fff, 0x7fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x8001, 0x8001, 0x8001, 0x8001,\n    0x0000, 0x0000, 0x7fff, 0x7fff, 0x0000, 0x0000, 0x8001, 0x8001, 0x0000, 0x0000, 0x7fff, 0x7fff,\n    0x0000, 0x0000, 0x8001, 0x8001, 0x0000, 0x0000, 0x7fff, 0x7fff, 0x0000, 0x0000, 0x8001, 0x8001,\n    0x0000, 0x0000, 0x7fff, 0x7fff, 0x0000, 0x0000, 0x8001, 0x8001, 0x0000, 0x0000, 0x7fff, 0x7fff,\n    0x0000, 0x0000, 0x8001, 0x8001, 0x0000, 0x0000, 0x7fff, 0x7fff, 0x0000, 0x0000, 0x8001, 0x8001,\n    0x0000, 0x0000, 0x7fff, 0x7fff, 0x0000, 0x0000, 0x8001, 0x8001, 0x0000, 0x0000, 0x7fff, 0x7fff,\n    0x0000, 0x0000, 0x8001, 0x8001,\n};\ns16 sEuUnknownWave6[256] = {\n    0x0000, 0x9ba7, 0x9b41, 0x6c9b, 0x9450, 0xadda, 0x569e, 0x189a, 0x69bf, 0xb79d, 0x6fe9, 0x08ec,\n    0x0d34, 0x1aea, 0xce76, 0xad86, 0x2710, 0xa038, 0x7e28, 0x2fd8, 0x3af8, 0x3bfa, 0xd10b, 0x84c7,\n    0xcd7f, 0x18f4, 0xd4c8, 0x76f8, 0x8994, 0xaa11, 0x73fb, 0x6c01, 0x0000, 0x93ff, 0x8c05, 0x55ef,\n    0x766c, 0x8907, 0x2b38, 0xe70d, 0x3281, 0x7b38, 0x2ef5, 0xc407, 0xc508, 0xd027, 0x81d8, 0x5fc9,\n    0xd8f0, 0x5279, 0x318a, 0xe517, 0xf2cc, 0xf713, 0x9017, 0x4864, 0x9641, 0xe765, 0xa962, 0x5227,\n    0x6bb0, 0x9364, 0x64bf, 0x645a, 0x0000, 0x9b41, 0x9450, 0x569e, 0x69bf, 0x6fe9, 0x0d34, 0xce76,\n    0x2710, 0x7e28, 0x3af8, 0xd10b, 0xcd7f, 0xd4c8, 0x8994, 0x73fb, 0x0000, 0x8c05, 0x766c, 0x2b38,\n    0x3281, 0x2ef5, 0xc508, 0x81d8, 0xd8f0, 0x318a, 0xf2cc, 0x9017, 0x9641, 0xa962, 0x6bb0, 0x64bf,\n    0x0000, 0x9b41, 0x9450, 0x569e, 0x69bf, 0x6fe9, 0x0d34, 0xce76, 0x2710, 0x7e28, 0x3af8, 0xd10b,\n    0xcd7f, 0xd4c8, 0x8994, 0x73fb, 0x0000, 0x8c05, 0x766c, 0x2b38, 0x3281, 0x2ef5, 0xc508, 0x81d8,\n    0xd8f0, 0x318a, 0xf2cc, 0x9017, 0x9641, 0xa962, 0x6bb0, 0x64bf, 0x0000, 0x9450, 0x69bf, 0x0d34,\n    0x2710, 0x3af8, 0xcd7f, 0x8994, 0x0000, 0x766c, 0x3281, 0xc508, 0xd8f0, 0xf2cc, 0x9641, 0x6bb0,\n    0x0000, 0x9450, 0x69bf, 0x0d34, 0x2710, 0x3af8, 0xcd7f, 0x8994, 0x0000, 0x766c, 0x3281, 0xc508,\n    0xd8f0, 0xf2cc, 0x9641, 0x6bb0, 0x0000, 0x9450, 0x69bf, 0x0d34, 0x2710, 0x3af8, 0xcd7f, 0x8994,\n    0x0000, 0x766c, 0x3281, 0xc508, 0xd8f0, 0xf2cc, 0x9641, 0x6bb0, 0x0000, 0x9450, 0x69bf, 0x0d34,\n    0x2710, 0x3af8, 0xcd7f, 0x8994, 0x0000, 0x766c, 0x3281, 0xc508, 0xd8f0, 0xf2cc, 0x9641, 0x6bb0,\n    0x0000, 0x69bf, 0x2710, 0xcd7f, 0x0000, 0x3281, 0xd8f0, 0x9641, 0x0000, 0x69bf, 0x2710, 0xcd7f,\n    0x0000, 0x3281, 0xd8f0, 0x9641, 0x0000, 0x69bf, 0x2710, 0xcd7f, 0x0000, 0x3281, 0xd8f0, 0x9641,\n    0x0000, 0x69bf, 0x2710, 0xcd7f, 0x0000, 0x3281, 0xd8f0, 0x9641, 0x0000, 0x69bf, 0x2710, 0xcd7f,\n    0x0000, 0x3281, 0xd8f0, 0x9641, 0x0000, 0x69bf, 0x2710, 0xcd7f, 0x0000, 0x3281, 0xd8f0, 0x9641,\n    0x0000, 0x69bf, 0x2710, 0xcd7f, 0x0000, 0x3281, 0xd8f0, 0x9641, 0x0000, 0x69bf, 0x2710, 0xcd7f,\n    0x0000, 0x3281, 0xd8f0, 0x9641,\n};\ns16 gEuUnknownWave7[256] = {\n    0x0000, 0x3fbc, 0x4eb4, 0x4f21, 0x6a49, 0x806f, 0x7250, 0x6a7b, 0x8d2e, 0xac0a, 0x98d6, 0x7832,\n    0x7551, 0x71ca, 0x4eee, 0x3731, 0x4e20, 0x644d, 0x4a50, 0x23ba, 0x1b09, 0x119a, 0xe914, 0xccbe,\n    0xe14e, 0xf8a3, 0xe47e, 0xc937, 0xd181, 0xde39, 0xcfc6, 0xcf94, 0x0000, 0x306c, 0x303a, 0x21c7,\n    0x2e7f, 0x36c8, 0x1b82, 0x075e, 0x1eb2, 0x3341, 0x16ec, 0xee67, 0xe4f7, 0xdc45, 0xb5b0, 0x9bb4,\n    0xb1e0, 0xc8ce, 0xb112, 0x8e37, 0x8aaf, 0x87cd, 0x672a, 0x53f7, 0x72d2, 0x9584, 0x8db0, 0x7f92,\n    0x95b7, 0xb0de, 0xb14c, 0xc045, 0x0000, 0x4eb4, 0x6a49, 0x7250, 0x8d2e, 0x98d6, 0x7551, 0x4eee,\n    0x4e20, 0x4a50, 0x1b09, 0xe914, 0xe14e, 0xe47e, 0xd181, 0xcfc6, 0x0000, 0x303a, 0x2e7f, 0x1b82,\n    0x1eb2, 0x16ec, 0xe4f7, 0xb5b0, 0xb1e0, 0xb112, 0x8aaf, 0x672a, 0x72d2, 0x8db0, 0x95b7, 0xb14c,\n    0x0000, 0x4eb4, 0x6a49, 0x7250, 0x8d2e, 0x98d6, 0x7551, 0x4eee, 0x4e20, 0x4a50, 0x1b09, 0xe914,\n    0xe14e, 0xe47e, 0xd181, 0xcfc6, 0x0000, 0x303a, 0x2e7f, 0x1b82, 0x1eb2, 0x16ec, 0xe4f7, 0xb5b0,\n    0xb1e0, 0xb112, 0x8aaf, 0x672a, 0x72d2, 0x8db0, 0x95b7, 0xb14c, 0x0000, 0x6a49, 0x8d2e, 0x7551,\n    0x4e20, 0x1b09, 0xe14e, 0xd181, 0x0000, 0x2e7f, 0x1eb2, 0xe4f7, 0xb1e0, 0x8aaf, 0x72d2, 0x95b7,\n    0x0000, 0x6a49, 0x8d2e, 0x7551, 0x4e20, 0x1b09, 0xe14e, 0xd181, 0x0000, 0x2e7f, 0x1eb2, 0xe4f7,\n    0xb1e0, 0x8aaf, 0x72d2, 0x95b7, 0x0000, 0x6a49, 0x8d2e, 0x7551, 0x4e20, 0x1b09, 0xe14e, 0xd181,\n    0x0000, 0x2e7f, 0x1eb2, 0xe4f7, 0xb1e0, 0x8aaf, 0x72d2, 0x95b7, 0x0000, 0x6a49, 0x8d2e, 0x7551,\n    0x4e20, 0x1b09, 0xe14e, 0xd181, 0x0000, 0x2e7f, 0x1eb2, 0xe4f7, 0xb1e0, 0x8aaf, 0x72d2, 0x95b7,\n    0x0000, 0x8d2e, 0x4e20, 0xe14e, 0x0000, 0x1eb2, 0xb1e0, 0x72d2, 0x0000, 0x8d2e, 0x4e20, 0xe14e,\n    0x0000, 0x1eb2, 0xb1e0, 0x72d2, 0x0000, 0x8d2e, 0x4e20, 0xe14e, 0x0000, 0x1eb2, 0xb1e0, 0x72d2,\n    0x0000, 0x8d2e, 0x4e20, 0xe14e, 0x0000, 0x1eb2, 0xb1e0, 0x72d2, 0x0000, 0x8d2e, 0x4e20, 0xe14e,\n    0x0000, 0x1eb2, 0xb1e0, 0x72d2, 0x0000, 0x8d2e, 0x4e20, 0xe14e, 0x0000, 0x1eb2, 0xb1e0, 0x72d2,\n    0x0000, 0x8d2e, 0x4e20, 0xe14e, 0x0000, 0x1eb2, 0xb1e0, 0x72d2, 0x0000, 0x8d2e, 0x4e20, 0xe14e,\n    0x0000, 0x1eb2, 0xb1e0, 0x72d2,\n};\ns16 *gWaveSamples[6] = { sSawtoothWaves, sTriangleWaves, sSineWaves, sSquareWaves, sEuUnknownWave6, gEuUnknownWave7 };\n\n#else\n// !VERSION_EU\n\ns16 sSineWave[0x40] = {\n    0,      3211,   6392,   9511,   12539,   15446,  18204,  20787,  23169,  25329,  27244,\n    28897,  30272,  31356,  32137,  32609,   0x7FFF, 32609,  32137,  31356,  30272,  28897,\n    27244,  25329,  23169,  20787,  18204,   15446,  12539,  9511,   6392,   3211,   0,\n    -3211,  -6392,  -9511,  -12539, -15446,  -18204, -20787, -23169, -25329, -27244, -28897,\n    -30272, -31356, -32137, -32609, -0x7FFF, -32609, -32137, -31356, -30272, -28897, -27244,\n    -25329, -23169, -20787, -18204, -15446,  -12539, -9511,  -6392,  -3211,\n};\n\ns16 sSquareWave[0x40] = {\n    0,       0,       0,       0,       0,       0,       0,       0,       0,       0,       0,\n    0,       0,       0,       0,       0,       0x7FFF,  0x7FFF,  0x7FFF,  0x7FFF,  0x7FFF,  0x7FFF,\n    0x7FFF,  0x7FFF,  0x7FFF,  0x7FFF,  0x7FFF,  0x7FFF,  0x7FFF,  0x7FFF,  0x7FFF,  0x7FFF,  0,\n    0,       0,       0,       0,       0,       0,       0,       0,       0,       0,       0,\n    0,       0,       0,       0,       -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF,\n    -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF, -0x7FFF,\n};\ns16 sTriangleWave[0x40] = {\n    0,       0x7FF,   0xFFF,   0x17FF,  0x1FFF,  0x27FF,  0x2FFF,  0x37FF,  0x3FFF,  0x47FF,  0x4FFF,\n    0x57FF,  0x5FFF,  0x67FF,  0x6FFF,  0x77FF,  0x7FFF,  0x77FF,  0x6FFF,  0x67FF,  0x5FFF,  0x57FF,\n    0x4FFF,  0x47FF,  0x3FFF,  0x37FF,  0x2FFF,  0x27FF,  0x1FFF,  0x17FF,  0xFFF,   0x7FF,   0,\n    -0x7FF,  -0xFFF,  -0x17FF, -0x1FFF, -10239,  -0x2FFF, -0x37FF, -0x3FFF, -0x47FF, -0x4FFF, -22527,\n    -24575,  -26623,  -28671,  -30719,  -0x7FFF, -30719,  -28671,  -26623,  -24575,  -22527,  -0x4FFF,\n    -0x47FF, -0x3FFF, -0x37FF, -0x2FFF, -0x27FF, -0x1FFF, -0x17FF, -0xFFF,  -0x7FF,\n};\n\ns16 sSawtoothWave[0x40] = {\n    0,       1023,   2047,    3071,   4095,    5119,   6143,    7167,   8191,    9215,   10239,\n    11263,   0x2FFF, 13311,   0x37FF, 15359,   0x3FFF, 17407,   0x47FF, 19455,   0x4FFF, 21503,\n    22527,   23551,  24575,   25599,  26623,   27647,  28671,   29695,  30719,   31743,  -0x7FFF,\n    -31743,  -30719, -29695,  -28671, -27647,  -26623, -25599,  -24575, -23551,  -22527, -21503,\n    -0x4FFF, -19455, -0x47FF, -17407, -0x3FFF, -15359, -0x37FF, -13311, -0x2FFF, -11263, -10239,\n    -9215,   -8191,  -7167,   -6143,  -5119,   -4095,  -3071,   -2047,  -1023,\n};\ns16 *gWaveSamples[4] = { sSawtoothWave, sTriangleWave, sSineWave, sSquareWave };\n#endif\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\ns32 unk_sh_data_0[2] = {0, 0};\nf32 gPitchBendFrequencyScale[256] = {\n    0.5f,      0.5f,      0.502736f, 0.505488f, 0.508254f, 0.511036f, 0.513833f, 0.516645f, 0.519472f,\n    0.522315f, 0.525174f, 0.528048f, 0.530938f, 0.533843f, 0.536765f, 0.539702f, 0.542656f, 0.545626f,\n    0.548612f, 0.551614f, 0.554633f, 0.557669f, 0.560721f, 0.563789f, 0.566875f, 0.569977f, 0.573097f,\n    0.576233f, 0.579387f, 0.582558f, 0.585746f, 0.588951f, 0.592175f, 0.595415f, 0.598674f, 0.601950f,\n    0.605245f, 0.608557f, 0.611888f, 0.615236f, 0.618603f, 0.621989f, 0.625393f, 0.628815f, 0.632257f,\n    0.635717f, 0.639196f, 0.642694f, 0.646212f, 0.649748f, 0.653304f, 0.656880f, 0.660475f, 0.664089f,\n    0.667724f, 0.671378f, 0.675052f, 0.678747f, 0.682461f, 0.686196f, 0.689952f, 0.693727f, 0.697524f,\n    0.701341f, 0.705180f, 0.709039f, 0.712919f, 0.716821f, 0.720744f, 0.724689f, 0.728655f, 0.732642f,\n    0.736652f, 0.740684f, 0.744737f, 0.748813f, 0.752911f, 0.757031f, 0.761175f, 0.765340f, 0.769529f,\n    0.773740f, 0.777975f, 0.782232f, 0.786513f, 0.790818f, 0.795146f, 0.799497f, 0.803873f, 0.808272f,\n    0.812696f, 0.817144f, 0.821616f, 0.826112f, 0.830633f, 0.835179f, 0.839750f, 0.844346f, 0.848966f,\n    0.853613f, 0.858284f, 0.862982f, 0.867704f, 0.872453f, 0.877228f, 0.882029f, 0.886856f, 0.891709f,\n    0.896590f, 0.901496f, 0.906430f, 0.911391f, 0.916379f, 0.921394f, 0.926436f, 0.931507f, 0.936604f,\n    0.941730f, 0.946884f, 0.952066f, 0.957277f, 0.962516f, 0.967783f, 0.973080f, 0.978405f, 0.983760f,\n    0.989144f, 0.994557f, 1.0f,      1.005473f, 1.010975f, 1.016508f, 1.022071f, 1.027665f, 1.033289f,\n    1.038944f, 1.044630f, 1.050347f, 1.056095f, 1.061875f, 1.067687f, 1.073530f, 1.079405f, 1.085312f,\n    1.091252f, 1.097224f, 1.103229f, 1.109267f, 1.115337f, 1.121441f, 1.127579f, 1.133750f, 1.139955f,\n    1.146193f, 1.152466f, 1.158773f, 1.165115f, 1.171491f, 1.177903f, 1.184349f, 1.190831f, 1.197348f,\n    1.203901f, 1.210489f, 1.217114f, 1.223775f, 1.230473f, 1.237207f, 1.243978f, 1.250786f, 1.257631f,\n    1.264514f, 1.271434f, 1.278392f, 1.285389f, 1.292423f, 1.299497f, 1.306608f, 1.313759f, 1.320949f,\n    1.328178f, 1.335447f, 1.342756f, 1.350104f, 1.357493f, 1.364922f, 1.372392f, 1.379903f, 1.387455f,\n    1.395048f, 1.402683f, 1.410360f, 1.418078f, 1.425839f, 1.433642f, 1.441488f, 1.449377f, 1.457309f,\n    1.465285f, 1.473304f, 1.481367f, 1.489474f, 1.497626f, 1.505822f, 1.514063f, 1.522349f, 1.530681f,\n    1.539058f, 1.547481f, 1.555950f, 1.564465f, 1.573027f, 1.581636f, 1.590292f, 1.598995f, 1.607746f,\n    1.616545f, 1.625392f, 1.634287f, 1.643231f, 1.652224f, 1.661266f, 1.670358f, 1.679500f, 1.688691f,\n    1.697933f, 1.707225f, 1.716569f, 1.725963f, 1.735409f, 1.744906f, 1.754456f, 1.764058f, 1.773712f,\n    1.783419f, 1.793179f, 1.802993f, 1.812860f, 1.822782f, 1.832757f, 1.842788f, 1.852873f, 1.863013f,\n    1.873209f, 1.883461f, 1.893768f, 1.904132f, 1.914553f, 1.925031f, 1.935567f, 1.946159f, 1.956810f,\n    1.967520f, 1.978287f, 1.989114f, 2.0f\n};\n#endif\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\nf32 unk_sh_data_1[] = {\n  0.890899f,  0.890899f,  0.89171f,   0.892521f,  0.893333f,  0.894146f,  0.89496f,   0.895774f,\n  0.89659f,   0.897406f,  0.898222f,  0.89904f,   0.899858f,  0.900677f,  0.901496f,  0.902317f,\n  0.903138f,  0.90396f,   0.904783f,  0.905606f,  0.90643f,   0.907255f,  0.908081f,  0.908907f,\n  0.909734f,  0.910562f,  0.911391f,  0.91222f,   0.91305f,   0.913881f,  0.914713f,  0.915545f,\n  0.916379f,  0.917213f,  0.918047f,  0.918883f,  0.919719f,  0.920556f,  0.921394f,  0.922232f,\n  0.923072f,  0.923912f,  0.924752f,  0.925594f,  0.926436f,  0.927279f,  0.928123f,  0.928968f,\n  0.929813f,  0.93066f,   0.931507f,  0.932354f,  0.933203f,  0.934052f,  0.934902f,  0.935753f,\n  0.936604f,  0.937457f,  0.93831f,   0.939164f,  0.940019f,  0.940874f,  0.94173f,   0.942587f,\n  0.943445f,  0.944304f,  0.945163f,  0.946023f,  0.946884f,  0.947746f,  0.948608f,  0.949472f,\n  0.950336f,  0.951201f,  0.952066f,  0.952933f,  0.9538f,    0.954668f,  0.955537f,  0.956406f,\n  0.957277f,  0.958148f,  0.95902f,   0.959893f,  0.960766f,  0.961641f,  0.962516f,  0.963392f,\n  0.964268f,  0.965146f,  0.966024f,  0.966903f,  0.967783f,  0.968664f,  0.969546f,  0.970428f,\n  0.971311f,  0.972195f,  0.97308f,   0.973965f,  0.974852f,  0.975739f,  0.976627f,  0.977516f,\n  0.978405f,  0.979296f,  0.980187f,  0.981079f,  0.981972f,  0.982865f,  0.98376f,   0.984655f,\n  0.985551f,  0.986448f,  0.987346f,  0.988244f,  0.989144f,  0.990044f,  0.990945f,  0.991847f,\n  0.992749f,  0.993653f,  0.994557f,  0.995462f,  0.996368f,  0.997275f,  0.998182f,  0.999091f,\n  1.0f,       1.00091f,   1.001821f,  1.002733f,  1.003645f,  1.004559f,  1.005473f,  1.006388f,\n  1.007304f,  1.00822f,   1.009138f,  1.010056f,  1.010975f,  1.011896f,  1.012816f,  1.013738f,\n  1.014661f,  1.015584f,  1.016508f,  1.017433f,  1.018359f,  1.019286f,  1.020214f,  1.021142f,\n  1.022071f,  1.023002f,  1.023933f,  1.024864f,  1.025797f,  1.026731f,  1.027665f,  1.0286f,\n  1.029536f,  1.030473f,  1.031411f,  1.03235f,   1.033289f,  1.03423f,   1.035171f,  1.036113f,\n  1.037056f,  1.038f,     1.038944f,  1.03989f,   1.040836f,  1.041783f,  1.042731f,  1.04368f,\n  1.04463f,   1.045581f,  1.046532f,  1.047485f,  1.048438f,  1.049392f,  1.050347f,  1.051303f,\n  1.05226f,   1.053217f,  1.054176f,  1.055135f,  1.056095f,  1.057056f,  1.058018f,  1.058981f,\n  1.059945f,  1.06091f,   1.061875f,  1.062842f,  1.063809f,  1.064777f,  1.065746f,  1.066716f,\n  1.067687f,  1.068658f,  1.069631f,  1.070604f,  1.071578f,  1.072554f,  1.07353f,   1.074507f,\n  1.075485f,  1.076463f,  1.077443f,  1.078424f,  1.079405f,  1.080387f,  1.08137f,   1.082355f,\n  1.08334f,   1.084325f,  1.085312f,  1.0863f,    1.087289f,  1.088278f,  1.089268f,  1.09026f,\n  1.091252f,  1.092245f,  1.093239f,  1.094234f,  1.09523f,   1.096226f,  1.097224f,  1.098223f,\n  1.099222f,  1.100222f,  1.101224f,  1.102226f,  1.103229f,  1.104233f,  1.105238f,  1.106244f,\n  1.10725f,   1.108258f,  1.109267f,  1.110276f,  1.111287f,  1.112298f,  1.11331f,   1.114323f,\n  1.115337f,  1.116352f,  1.117368f,  1.118385f,  1.119403f,  1.120422f,  1.121441f,  1.122462f,\n};\n\n// Shindou moved these variables down here. :/\n// clang-format off\nf32 gNoteFrequencies[128] = {\n    0.105112f,  0.111362f,  0.117984f,  0.125f, 0.132433f, 0.140308f,  0.148651f,  0.15749f,  0.166855f, 0.176777f, 0.187288f,  0.198425f,\n    0.210224f,  0.222725f,  0.235969f,  0.25f,  0.264866f, 0.280616f,  0.297302f,  0.31498f,  0.33371f,  0.353553f, 0.374577f,  0.39685f,\n    0.420448f,  0.445449f,  0.471937f,  0.5f,   0.529732f, 0.561231f,  0.594604f,  0.629961f, 0.66742f,  0.707107f, 0.749154f,  0.793701f,\n    0.840897f,  0.890899f,  0.943875f,  1.0f,   1.059463f, 1.122462f,  1.189207f,  1.259921f, 1.33484f,  1.414214f, 1.498307f,  1.587401f,\n    1.681793f,  1.781798f,  1.887749f,  2.0f,   2.118926f, 2.244924f,  2.378414f,  2.519842f, 2.66968f,  2.828428f, 2.996615f,  3.174803f,\n    3.363586f,  3.563596f,  3.775498f,  4.0f,   4.237853f, 4.489849f,  4.756829f,  5.039685f, 5.33936f,  5.656855f, 5.993229f,  6.349606f,\n    6.727173f,  7.127192f,  7.550996f,  8.0f,   8.475705f, 8.979697f,  9.513658f,  10.07937f, 10.67872f, 11.31371f, 11.986459f, 12.699211f,\n    13.454346f, 14.254383f, 15.101993f, 16.0f,  16.95141f, 17.959394f, 19.027315f, 20.15874f, 21.35744f, 22.62742f, 23.972918f, 25.398422f,\n    26.908691f, 28.508766f, 30.203985f, 32.0f,  33.90282f, 35.91879f,  38.05463f,  40.31748f, 42.71488f, 45.25484f, 47.945835f, 50.796844f,\n    53.817383f, 57.017532f, 60.40797f,  64.0f,  67.80564f, 71.83758f,  76.10926f,  80.63496f, 85.42976f, 45.25484f, 47.945835f, 50.796844f,\n    53.817383f, 57.017532f, 60.40797f,  64.0f,  67.80564f, 71.83758f,  76.10926f,  80.63496f\n};\n// clang-format on\n\nu8 gDefaultShortNoteVelocityTable[16] = {\n    12, 25, 38, 51, 57, 64, 71, 76, 83, 89, 96, 102, 109, 115, 121, 127,\n};\n\nu8 gDefaultShortNoteDurationTable[16] = {\n    229, 203, 177, 151, 139, 126, 113, 100, 87, 74, 61, 48, 36, 23, 10, 0,\n};\n\nstruct AdsrEnvelope gDefaultEnvelope[] = {\n    { BSWAP16(4), BSWAP16(32000) },    // go from 0 to 32000 over the course of 16ms\n    { BSWAP16(1000), BSWAP16(32000) }, // stay there for 4.16 seconds\n    { BSWAP16(ADSR_HANG), 0 }          // then continue staying there\n};\n\nu8 unk_sh_data2[4] = { 0, 0, 0, 0 };\n\nstruct NoteSubEu gZeroNoteSub = { 0 };\nstruct NoteSubEu gDefaultNoteSub = {\n    1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, { NULL },\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    0\n#endif\n};\n\nu16 gHeadsetPanQuantization[0x40] = {\n0x3C, 0x3A, 0x38, 0x36, 0x34, 0x32, 0x30, 0x2E,\n0x2C, 0x2A, 0x28, 0x26, 0x24, 0x22, 0x20, 0x1E,\n0x1C, 0x1A, 0x18, 0x16, 0x14, 0x12, 0x10, 0x0E,\n0x0C, 0x0A, 0x08, 0x06, 0x04, 0x02,\n0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n};\n#endif\n\n#ifdef VERSION_EU\nu8 euUnknownData_8030194c[4] = { 0x40, 0x20, 0x10, 0x08 };\nu16 gHeadsetPanQuantization[0x10] = {\n    0x40, 0x40, 0x30, 0x30, 0x20, 0x20, 0x10, 0, 0, 0,\n};\n#elif defined(VERSION_JP) || defined(VERSION_US)\nu16 gHeadsetPanQuantization[10] = { 0x40, 0x30, 0x20, 0x10, 0, 0, 0, 0, 0, 0 };\n#endif\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\ns16 euUnknownData_80301950[64] = {\n    0, 0, 0,   0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0,\n    0, 0, 0, 500, 0, 0, 0, 0, 0, 0, 0, 500, 0, 0, 0, 0, 0, 0, 0, 500, 0, 0, 0, 0, 0, 0, 0, 500, 0, 0, 0, 0,\n};\n#endif\n\n// Linearly interpolated between\n// f(0/2 * 127) = 1\n// f(1/2 * 127) = 1/sqrt(2)\n// f(2/2 * 127) = 0\nf32 gHeadsetPanVolume[128] = {\n    1.0f,      0.995386f, 0.990772f, 0.986157f, 0.981543f, 0.976929f, 0.972315f, 0.967701f, 0.963087f,\n    0.958472f, 0.953858f, 0.949244f, 0.94463f,  0.940016f, 0.935402f, 0.930787f, 0.926173f, 0.921559f,\n    0.916945f, 0.912331f, 0.907717f, 0.903102f, 0.898488f, 0.893874f, 0.88926f,  0.884646f, 0.880031f,\n    0.875417f, 0.870803f, 0.866189f, 0.861575f, 0.856961f, 0.852346f, 0.847732f, 0.843118f, 0.838504f,\n    0.83389f,  0.829276f, 0.824661f, 0.820047f, 0.815433f, 0.810819f, 0.806205f, 0.801591f, 0.796976f,\n    0.792362f, 0.787748f, 0.783134f, 0.77852f,  0.773906f, 0.769291f, 0.764677f, 0.760063f, 0.755449f,\n    0.750835f, 0.74622f,  0.741606f, 0.736992f, 0.732378f, 0.727764f, 0.72315f,  0.718535f, 0.713921f,\n    0.709307f, 0.70537f,  0.70211f,  0.69885f,  0.695591f, 0.692331f, 0.689071f, 0.685811f, 0.682551f,\n    0.679291f, 0.676031f, 0.672772f, 0.669512f, 0.666252f, 0.662992f, 0.659732f, 0.656472f, 0.653213f,\n    0.649953f, 0.646693f, 0.643433f, 0.640173f, 0.636913f, 0.633654f, 0.630394f, 0.627134f, 0.623874f,\n    0.620614f, 0.617354f, 0.614094f, 0.610835f, 0.607575f, 0.604315f, 0.601055f, 0.597795f, 0.594535f,\n    0.591276f, 0.588016f, 0.584756f, 0.581496f, 0.578236f, 0.574976f, 0.571717f, 0.568457f, 0.565197f,\n    0.561937f, 0.558677f, 0.555417f, 0.552157f, 0.548898f, 0.545638f, 0.542378f, 0.539118f, 0.535858f,\n    0.532598f, 0.529339f, 0.526079f, 0.522819f, 0.519559f, 0.516299f, 0.513039f, 0.50978f,  0.50652f,\n    0.50326f,  0.5f\n};\n\n// Linearly interpolated between\n// f(0/4 * 127) = 1/sqrt(2)\n// f(1/4 * 127) = 1\n// f(2/4 * 127) = 1/sqrt(2)\n// f(3/4 * 127) = 0\n// f(4/4 * 127) = 1/sqrt(8)\nf32 gStereoPanVolume[128] = {\n    0.707f,    0.716228f, 0.725457f, 0.734685f, 0.743913f, 0.753142f, 0.76237f,  0.771598f, 0.780827f,\n    0.790055f, 0.799283f, 0.808512f, 0.81774f,  0.826968f, 0.836197f, 0.845425f, 0.854654f, 0.863882f,\n    0.87311f,  0.882339f, 0.891567f, 0.900795f, 0.910024f, 0.919252f, 0.92848f,  0.937709f, 0.946937f,\n    0.956165f, 0.965394f, 0.974622f, 0.98385f,  0.993079f, 0.997693f, 0.988465f, 0.979236f, 0.970008f,\n    0.960779f, 0.951551f, 0.942323f, 0.933095f, 0.923866f, 0.914638f, 0.905409f, 0.896181f, 0.886953f,\n    0.877724f, 0.868496f, 0.859268f, 0.850039f, 0.840811f, 0.831583f, 0.822354f, 0.813126f, 0.803898f,\n    0.794669f, 0.785441f, 0.776213f, 0.766984f, 0.757756f, 0.748528f, 0.739299f, 0.730071f, 0.720843f,\n    0.711614f, 0.695866f, 0.673598f, 0.651331f, 0.629063f, 0.606795f, 0.584528f, 0.56226f,  0.539992f,\n    0.517724f, 0.495457f, 0.473189f, 0.450921f, 0.428654f, 0.406386f, 0.384118f, 0.36185f,  0.339583f,\n    0.317315f, 0.295047f, 0.27278f,  0.250512f, 0.228244f, 0.205976f, 0.183709f, 0.161441f, 0.139173f,\n    0.116905f, 0.094638f, 0.07237f,  0.050102f, 0.027835f, 0.005567f, 0.00835f,  0.019484f, 0.030618f,\n    0.041752f, 0.052886f, 0.06402f,  0.075154f, 0.086287f, 0.097421f, 0.108555f, 0.119689f, 0.130823f,\n    0.141957f, 0.153091f, 0.164224f, 0.175358f, 0.186492f, 0.197626f, 0.20876f,  0.219894f, 0.231028f,\n    0.242161f, 0.253295f, 0.264429f, 0.275563f, 0.286697f, 0.297831f, 0.308965f, 0.320098f, 0.331232f,\n    0.342366f, 0.3535f\n};\n\n// gDefaultVolume[k] = cos(pi/2 * k / 127)\nf32 gDefaultPanVolume[128] = {\n    1.0f,      0.999924f, 0.999694f, 0.999312f, 0.998776f, 0.998088f, 0.997248f, 0.996254f, 0.995109f,\n    0.993811f, 0.992361f, 0.990759f, 0.989006f, 0.987101f, 0.985045f, 0.982839f, 0.980482f, 0.977976f,\n    0.97532f,  0.972514f, 0.96956f,  0.966457f, 0.963207f, 0.959809f, 0.956265f, 0.952574f, 0.948737f,\n    0.944755f, 0.940629f, 0.936359f, 0.931946f, 0.92739f,  0.922692f, 0.917853f, 0.912873f, 0.907754f,\n    0.902497f, 0.897101f, 0.891567f, 0.885898f, 0.880093f, 0.874153f, 0.868079f, 0.861873f, 0.855535f,\n    0.849066f, 0.842467f, 0.835739f, 0.828884f, 0.821901f, 0.814793f, 0.807561f, 0.800204f, 0.792725f,\n    0.785125f, 0.777405f, 0.769566f, 0.76161f,  0.753536f, 0.745348f, 0.737045f, 0.72863f,  0.720103f,\n    0.711466f, 0.70272f,  0.693867f, 0.684908f, 0.675843f, 0.666676f, 0.657406f, 0.648036f, 0.638567f,\n    0.629f,    0.619337f, 0.609579f, 0.599728f, 0.589785f, 0.579752f, 0.56963f,  0.559421f, 0.549126f,\n    0.538748f, 0.528287f, 0.517745f, 0.507124f, 0.496425f, 0.485651f, 0.474802f, 0.46388f,  0.452888f,\n    0.441826f, 0.430697f, 0.419502f, 0.408243f, 0.396921f, 0.385538f, 0.374097f, 0.362598f, 0.351044f,\n    0.339436f, 0.327776f, 0.316066f, 0.304308f, 0.292503f, 0.280653f, 0.268761f, 0.256827f, 0.244854f,\n    0.232844f, 0.220798f, 0.208718f, 0.196606f, 0.184465f, 0.172295f, 0.160098f, 0.147877f, 0.135634f,\n    0.12337f,  0.111087f, 0.098786f, 0.086471f, 0.074143f, 0.061803f, 0.049454f, 0.037097f, 0.024734f,\n    0.012368f, 0.0f\n};\n\n#if defined(VERSION_JP) || defined(VERSION_US)\n// gVolRampingLhs136[k] = 2^16 * max(1, (256*k)^(1/17)\nf32 gVolRampingLhs136[128] = {\n    65536.0f,    90811.555f,  94590.766f,  96873.96f,   98527.26f,   99829.06f,   100905.47f,\n    101824.61f,  102627.57f,  103341.086f, 103983.55f,  104568.164f, 105104.75f,  105600.8f,\n    106062.14f,  106493.46f,  106898.52f,  107280.414f, 107641.73f,  107984.62f,  108310.93f,\n    108622.23f,  108919.875f, 109205.055f, 109478.8f,   109742.0f,   109995.48f,  110239.94f,\n    110476.02f,  110704.305f, 110925.3f,   111139.45f,  111347.21f,  111548.945f, 111745.0f,\n    111935.7f,   112121.35f,  112302.2f,   112478.51f,  112650.51f,  112818.4f,   112982.38f,\n    113142.66f,  113299.37f,  113452.69f,  113602.766f, 113749.734f, 113893.73f,  114034.87f,\n    114173.26f,  114309.02f,  114442.26f,  114573.055f, 114701.5f,   114827.69f,  114951.695f,\n    115073.6f,   115193.47f,  115311.375f, 115427.39f,  115541.56f,  115653.96f,  115764.63f,\n    115873.64f,  115981.04f,  116086.86f,  116191.164f, 116293.99f,  116395.38f,  116495.38f,\n    116594.02f,  116691.34f,  116787.39f,  116882.19f,  116975.77f,  117068.17f,  117159.414f,\n    117249.54f,  117338.57f,  117426.53f,  117513.45f,  117599.35f,  117684.266f, 117768.2f,\n    117851.195f, 117933.266f, 118014.44f,  118094.72f,  118174.14f,  118252.71f,  118330.46f,\n    118407.4f,   118483.55f,  118558.914f, 118633.53f,  118707.4f,   118780.54f,  118852.97f,\n    118924.695f, 118995.74f,  119066.11f,  119135.82f,  119204.88f,  119273.31f,  119341.125f,\n    119408.32f,  119474.92f,  119540.93f,  119606.36f,  119671.22f,  119735.52f,  119799.28f,\n    119862.5f,   119925.195f, 119987.36f,  120049.02f,  120110.18f,  120170.84f,  120231.016f,\n    120290.71f,  120349.945f, 120408.7f,   120467.016f, 120524.875f, 120582.3f,   120639.28f,\n    120695.84f,  120751.984f\n};\n\n// gVolRampingRhs136[k] = 1 / max(1, (256*k)^(1/17))\nf32 gVolRampingRhs136[128] = {\n    1.0f,      0.72167f,  0.692837f, 0.676508f, 0.665156f, 0.656482f, 0.649479f, 0.643616f, 0.638581f,\n    0.634172f, 0.630254f, 0.62673f,  0.62353f,  0.620601f, 0.617902f, 0.615399f, 0.613067f, 0.610885f,\n    0.608835f, 0.606901f, 0.605073f, 0.603339f, 0.60169f,  0.600119f, 0.598618f, 0.597183f, 0.595806f,\n    0.594485f, 0.593215f, 0.591991f, 0.590812f, 0.589674f, 0.588573f, 0.587509f, 0.586478f, 0.585479f,\n    0.58451f,  0.583568f, 0.582654f, 0.581764f, 0.580898f, 0.580055f, 0.579233f, 0.578432f, 0.57765f,\n    0.576887f, 0.576142f, 0.575414f, 0.574701f, 0.574005f, 0.573323f, 0.572656f, 0.572002f, 0.571361f,\n    0.570733f, 0.570118f, 0.569514f, 0.568921f, 0.568339f, 0.567768f, 0.567207f, 0.566656f, 0.566114f,\n    0.565582f, 0.565058f, 0.564543f, 0.564036f, 0.563537f, 0.563046f, 0.562563f, 0.562087f, 0.561618f,\n    0.561156f, 0.560701f, 0.560253f, 0.559811f, 0.559375f, 0.558945f, 0.558521f, 0.558102f, 0.557689f,\n    0.557282f, 0.55688f,  0.556483f, 0.556091f, 0.555704f, 0.555322f, 0.554944f, 0.554571f, 0.554203f,\n    0.553839f, 0.553479f, 0.553123f, 0.552772f, 0.552424f, 0.55208f,  0.55174f,  0.551404f, 0.551071f,\n    0.550742f, 0.550417f, 0.550095f, 0.549776f, 0.549461f, 0.549148f, 0.548839f, 0.548534f, 0.548231f,\n    0.547931f, 0.547634f, 0.54734f,  0.547048f, 0.54676f,  0.546474f, 0.546191f, 0.54591f,  0.545632f,\n    0.545357f, 0.545084f, 0.544813f, 0.544545f, 0.54428f,  0.544016f, 0.543755f, 0.543496f, 0.543239f,\n    0.542985f, 0.542732f\n};\n\n// gVolRampingLhs144[k] = 2^16 * max(1, (256*k)^(1/18))\nf32 gVolRampingLhs144[128] = {\n    65536.0f,    89180.734f,  92681.9f,    94793.33f,   96320.52f,   97522.02f,  98514.84f,\n    99362.14f,   100101.99f,  100759.16f,  101350.664f, 101888.74f,  102382.46f, 102838.75f,\n    103263.016f, 103659.58f,  104031.914f, 104382.89f,  104714.88f,  105029.89f, 105329.61f,\n    105615.5f,   105888.81f,  106150.63f,  106401.914f, 106643.49f,  106876.12f, 107100.44f,\n    107317.05f,  107526.47f,  107729.17f,  107925.6f,   108116.125f, 108301.12f, 108480.88f,\n    108655.72f,  108825.91f,  108991.68f,  109153.28f,  109310.914f, 109464.77f, 109615.04f,\n    109761.88f,  109905.46f,  110045.92f,  110183.41f,  110318.02f,  110449.91f, 110579.17f,\n    110705.914f, 110830.234f, 110952.234f, 111071.99f,  111189.59f,  111305.12f, 111418.64f,\n    111530.23f,  111639.95f,  111747.875f, 111854.05f,  111958.54f,  112061.4f,  112162.67f,\n    112262.42f,  112360.68f,  112457.51f,  112552.93f,  112647.0f,   112739.76f, 112831.23f,\n    112921.46f,  113010.484f, 113098.33f,  113185.02f,  113270.61f,  113355.11f, 113438.555f,\n    113520.97f,  113602.375f, 113682.805f, 113762.27f,  113840.81f,  113918.44f, 113995.18f,\n    114071.055f, 114146.08f,  114220.266f, 114293.65f,  114366.24f,  114438.06f, 114509.12f,\n    114579.44f,  114649.02f,  114717.91f,  114786.086f, 114853.586f, 114920.42f, 114986.6f,\n    115052.14f,  115117.055f, 115181.34f,  115245.04f,  115308.13f,  115370.65f, 115432.59f,\n    115493.98f,  115554.81f,  115615.11f,  115674.875f, 115734.12f,  115792.85f, 115851.08f,\n    115908.82f,  115966.07f,  116022.85f,  116079.16f,  116135.01f,  116190.4f,  116245.35f,\n    116299.87f,  116353.945f, 116407.6f,   116460.84f,  116513.67f,  116566.09f, 116618.125f,\n    116669.76f,  116721.01f\n};\n\n// gVolRampingRhs144[k] = 1 / max(1, (256*k)^(1/18))\nf32 gVolRampingRhs144[128] = {\n    1.0f,      0.734867f, 0.707107f, 0.691357f, 0.680395f, 0.672012f, 0.66524f,  0.659567f, 0.654692f,\n    0.650422f, 0.646626f, 0.643211f, 0.64011f,  0.637269f, 0.634651f, 0.632223f, 0.629961f, 0.627842f,\n    0.625852f, 0.623975f, 0.622199f, 0.620515f, 0.618913f, 0.617387f, 0.615929f, 0.614533f, 0.613196f,\n    0.611912f, 0.610677f, 0.609487f, 0.60834f,  0.607233f, 0.606163f, 0.605128f, 0.604125f, 0.603153f,\n    0.60221f,  0.601294f, 0.600403f, 0.599538f, 0.598695f, 0.597874f, 0.597074f, 0.596294f, 0.595533f,\n    0.59479f,  0.594064f, 0.593355f, 0.592661f, 0.591983f, 0.591319f, 0.590669f, 0.590032f, 0.589408f,\n    0.588796f, 0.588196f, 0.587608f, 0.58703f,  0.586463f, 0.585906f, 0.58536f,  0.584822f, 0.584294f,\n    0.583775f, 0.583265f, 0.582762f, 0.582268f, 0.581782f, 0.581303f, 0.580832f, 0.580368f, 0.579911f,\n    0.57946f,  0.579017f, 0.578579f, 0.578148f, 0.577722f, 0.577303f, 0.576889f, 0.576481f, 0.576078f,\n    0.575681f, 0.575289f, 0.574902f, 0.574519f, 0.574142f, 0.573769f, 0.5734f,   0.573036f, 0.572677f,\n    0.572321f, 0.57197f,  0.571623f, 0.57128f,  0.57094f,  0.570605f, 0.570273f, 0.569945f, 0.56962f,\n    0.569299f, 0.568981f, 0.568667f, 0.568355f, 0.568047f, 0.567743f, 0.567441f, 0.567142f, 0.566846f,\n    0.566553f, 0.566263f, 0.565976f, 0.565692f, 0.56541f,  0.565131f, 0.564854f, 0.56458f,  0.564309f,\n    0.56404f,  0.563773f, 0.563509f, 0.563247f, 0.562987f, 0.56273f,  0.562475f, 0.562222f, 0.561971f,\n    0.561722f, 0.561476f\n};\n\n// gVolRampingLhs128[k] = 2^16 * max(1, (256*k)^(1/16))\nf32 gVolRampingLhs128[128] = {\n    65536.0f,    92681.9f,    96785.28f,   99269.31f,   101070.33f,  102489.78f,  103664.336f,\n    104667.914f, 105545.09f,  106324.92f,  107027.39f,  107666.84f,  108253.95f,  108796.87f,\n    109301.95f,  109774.29f,  110217.98f,  110636.39f,  111032.33f,  111408.164f, 111765.9f,\n    112107.234f, 112433.66f,  112746.46f,  113046.766f, 113335.555f, 113613.72f,  113882.02f,\n    114141.164f, 114391.77f,  114634.414f, 114869.58f,  115097.74f,  115319.31f,  115534.68f,\n    115744.19f,  115948.16f,  116146.875f, 116340.625f, 116529.66f,  116714.195f, 116894.46f,\n    117070.64f,  117242.945f, 117411.52f,  117576.55f,  117738.17f,  117896.54f,  118051.77f,\n    118204.0f,   118353.35f,  118499.92f,  118643.83f,  118785.16f,  118924.01f,  119060.47f,\n    119194.625f, 119326.555f, 119456.336f, 119584.03f,  119709.71f,  119833.445f, 119955.29f,\n    120075.31f,  120193.555f, 120310.08f,  120424.94f,  120538.17f,  120649.836f, 120759.97f,\n    120868.62f,  120975.82f,  121081.62f,  121186.05f,  121289.14f,  121390.94f,  121491.47f,\n    121590.766f, 121688.87f,  121785.79f,  121881.57f,  121976.24f,  122069.82f,  122162.33f,\n    122253.805f, 122344.266f, 122433.73f,  122522.23f,  122609.77f,  122696.4f,   122782.11f,\n    122866.93f,  122950.89f,  123033.99f,  123116.26f,  123197.72f,  123278.37f,  123358.24f,\n    123437.34f,  123515.69f,  123593.3f,   123670.19f,  123746.36f,  123821.84f,  123896.63f,\n    123970.76f,  124044.23f,  124117.04f,  124189.23f,  124260.78f,  124331.73f,  124402.07f,\n    124471.83f,  124540.99f,  124609.59f,  124677.63f,  124745.12f,  124812.055f, 124878.47f,\n    124944.34f,  125009.71f,  125074.57f,  125138.92f,  125202.79f,  125266.164f, 125329.06f,\n    125391.5f,   125453.47f\n};\n\n// gVolRampingRhs128[k] = 1 / max(1, (256*k)^(1/16))\nf32 gVolRampingRhs128[128] = {\n    1.0f,      0.707107f, 0.677128f, 0.660184f, 0.64842f,  0.639439f, 0.632194f, 0.626133f, 0.620929f,\n    0.616375f, 0.612329f, 0.608693f, 0.605391f, 0.60237f,  0.599587f, 0.597007f, 0.594604f, 0.592355f,\n    0.590243f, 0.588251f, 0.586369f, 0.584583f, 0.582886f, 0.581269f, 0.579725f, 0.578247f, 0.576832f,\n    0.575473f, 0.574166f, 0.572908f, 0.571696f, 0.570525f, 0.569394f, 0.5683f,   0.567241f, 0.566214f,\n    0.565218f, 0.564251f, 0.563311f, 0.562398f, 0.561508f, 0.560642f, 0.559799f, 0.558976f, 0.558173f,\n    0.55739f,  0.556625f, 0.555877f, 0.555146f, 0.554431f, 0.553732f, 0.553047f, 0.552376f, 0.551719f,\n    0.551075f, 0.550443f, 0.549823f, 0.549216f, 0.548619f, 0.548033f, 0.547458f, 0.546892f, 0.546337f,\n    0.545791f, 0.545254f, 0.544726f, 0.544206f, 0.543695f, 0.543192f, 0.542696f, 0.542209f, 0.541728f,\n    0.541255f, 0.540788f, 0.540329f, 0.539876f, 0.539429f, 0.538988f, 0.538554f, 0.538125f, 0.537702f,\n    0.537285f, 0.536873f, 0.536467f, 0.536065f, 0.535669f, 0.535277f, 0.534891f, 0.534509f, 0.534131f,\n    0.533759f, 0.53339f,  0.533026f, 0.532666f, 0.53231f,  0.531958f, 0.53161f,  0.531266f, 0.530925f,\n    0.530588f, 0.530255f, 0.529926f, 0.529599f, 0.529277f, 0.528957f, 0.528641f, 0.528328f, 0.528018f,\n    0.527711f, 0.527407f, 0.527106f, 0.526808f, 0.526513f, 0.52622f,  0.525931f, 0.525644f, 0.525359f,\n    0.525077f, 0.524798f, 0.524522f, 0.524247f, 0.523975f, 0.523706f, 0.523439f, 0.523174f, 0.522911f,\n    0.522651f, 0.522393f\n};\n#endif\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\nu16 unk_sh_data_3[] = {\n    // 30 entries\n    // pattern:\n    // A B\n    // C D\n    // C B\n    // A E\n    0x1000, 0x1000,\n    0x1000, 0x1000,\n    0x1000, 0x1000,\n    0x1000, 0x1000,\n\n    0x0E6F, 0x1091,\n    0x11EF, 0x1267,\n    0x11EF, 0x1091,\n    0x0E6F, 0x0BB8,\n\n    0x0C1D, 0x111D,\n    0x1494, 0x15D2,\n    0x1494, 0x111D,\n    0x0C1D, 0x068E,\n\n    0x0838, 0x116E,\n    0x18A6, 0x1B61,\n    0x18A6, 0x116E,\n    0x0838, 0x0001,\n\n    0x0227, 0x0F42,\n    0x1B75, 0x206B,\n    0x1B75, 0x0F42,\n    0x0227, 0xFA2B,\n\n    0xFC28, 0x0AAE,\n    0x1BE7, 0x2394,\n    0x1BE7, 0x0AAE,\n    0xFC28, 0xF874,\n\n    0xF809, 0x0582,\n    0x1C36, 0x2788,\n    0x1C36, 0x0582,\n    0xF809, 0xFAEB,\n\n    0xF5F0, 0x0001,\n    0x1E34, 0x2F71,\n    0x1E34, 0x0001,\n    0xF5F0, 0x0000,\n\n    0xF8AD, 0xFAF3,\n    0x19ED, 0x2EB6,\n    0x19ED, 0xFAF3,\n    0xF8AD, 0x04AC,\n\n    0xFCC0, 0xF6FF,\n    0x178B, 0x3207,\n    0x178B, 0xF6FF,\n    0xFCC0, 0x065F,\n\n    0x01A5, 0xF44E,\n    0x1510, 0x36B4,\n    0x1510, 0xF44E,\n    0x01A5, 0x047B,\n\n    0x05C1, 0xF3CC,\n    0x1145, 0x3988,\n    0x1145, 0xF3CC,\n    0x05C1, 0x0001,\n\n    0x07B9, 0xF517,\n    0x0D20, 0x3C4C,\n    0x0D20, 0xF517,\n    0x07B9, 0xFBD4,\n\n    0x07C0, 0xF71C,\n    0x09A1, 0x4528,\n    0x09A1, 0xF71C,\n    0x07C0, 0xF9B7,\n\n    0x058F, 0xFA43,\n    0x05DC, 0x585F,\n    0x05DC, 0xFA43,\n    0x058F, 0xFAB3,\n};\n\nu16 unk_sh_data_4[] = {\n    0xFA73, 0xFA42,\n    0xFA27, 0x5866,\n    0xFA27, 0xFA42,\n    0xFA73, 0xFAB2,\n\n    0xF842, 0xF71B,\n    0xF661, 0x452B,\n    0xF661, 0xF71B,\n    0xF842, 0xF9B5,\n\n    0xF848, 0xF516,\n    0xF2E1, 0x3C4D,\n    0xF2E1, 0xF516,\n    0xF848, 0xFBD2,\n\n    0xFA3F, 0xF3CA,\n    0xEEBD, 0x3989,\n    0xEEBD, 0xF3CA,\n    0xFA3F, 0xFFFF,\n\n    0xFE5B, 0xF44C,\n    0xEAF2, 0x36B5,\n    0xEAF2, 0xF44C,\n    0xFE5B, 0x0479,\n\n    0x0340, 0xF6FD,\n    0xE877, 0x3207,\n    0xE877, 0xF6FD,\n    0x0340, 0x065E,\n\n    0x0753, 0xFAF1,\n    0xE615, 0x2EB5,\n    0xE615, 0xFAF1,\n    0x0753, 0x04AB,\n\n    0x0A12, 0xFFFF,\n    0xE1CD, 0x2F71,\n    0xE1CD, 0xFFFF,\n    0x0A12, 0x0000,\n\n    0x07FA, 0x057F,\n    0xE3CA, 0x2789,\n    0xE3CA, 0x057F,\n    0x07FA, 0xFAEA,\n\n    0x03DB, 0x0AAC,\n    0xE41A, 0x2394,\n    0xE41A, 0x0AAC,\n    0x03DB, 0xF873,\n\n    0xFDDC, 0x0F41,\n    0xE489, 0x206E,\n    0xE489, 0x0F41,\n    0xFDDC, 0xFA28,\n\n    0xF7CA, 0x116E,\n    0xE758, 0x1B63,\n    0xE758, 0x116E,\n    0xF7CA, 0xFFFF,\n\n    0xF3E4, 0x111D,\n    0xEB6A, 0x15D4,\n    0xEB6A, 0x111D,\n    0xF3E4, 0x068B,\n\n    0xF192, 0x1092,\n    0xEE11, 0x1268,\n    0xEE11, 0x1092,\n    0xF192, 0x0BB6,\n\n    0xF05F, 0x1026,\n    0xEF89, 0x1093,\n    0xEF89, 0x1026,\n    0xF05F, 0x0EEB,\n\n    0x0000, 0x0000,\n    0x0000, 0x0000,\n    0x7FFF, 0xD001,\n    0x3FFF, 0xF001,\n    0x5FFF, 0x9001,\n    0x7FFF, 0x8001\n};\n#endif\n\n#if !defined(VERSION_SH) && !defined(VERSION_CN)\ns16 gTatumsPerBeat = TATUMS_PER_BEAT;\ns8 gUnusedCount80333EE8 = UNUSED_COUNT_80333EE8;\ns32 gAudioHeapSize = DOUBLE_SIZE_ON_64_BIT(AUDIO_HEAP_SIZE);\ns32 gAudioInitPoolSize = DOUBLE_SIZE_ON_64_BIT(AUDIO_INIT_POOL_SIZE);\nvolatile s32 gAudioLoadLock = AUDIO_LOCK_UNINITIALIZED;\n#endif\n\n#if defined(VERSION_EU)\nu8 bufferDelete2[12] = { 0 };\nu8 D_EU_80302010 = 0;\nu8 D_EU_80302014 = 0;\n\nstruct OSMesgQueue *OSMesgQueues[4] = { &OSMesgQueue0, &OSMesgQueue1, &OSMesgQueue2, &OSMesgQueue3 };\n#elif defined(VERSION_JP) || defined(VERSION_US)\ns8 sUnused8033EF8 = 24;\n#endif\n\n// .bss\n\nvolatile s32 gAudioFrameCount;\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\ns32 gCurrAudioFrameDmaCount;\n#else\nvolatile s32 gCurrAudioFrameDmaCount;\n#endif\n\ns32 gAudioTaskIndex;\ns32 gCurrAiBufferIndex;\n\nu64 *gAudioCmdBuffers[2];\nu64 *gAudioCmd;\n\nstruct SPTask *gAudioTask;\nstruct SPTask gAudioTasks[2];\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\nf32 D_EU_802298D0;\ns32 gRefreshRate;\n#endif\n\ns16 *gAiBuffers[NUMAIBUFFERS];\ns16 gAiBufferLengths[NUMAIBUFFERS];\n\n#if defined(VERSION_JP) || defined(VERSION_US)\nu32 gUnused80226E58[0x10];\nu16 gUnused80226E98[0x10];\n#endif\n\nu32 gAudioRandom;\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\ns32 gAudioErrorFlags;\n#endif\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\nvolatile u32 gAudioLoadLockSH;\nstruct EuAudioCmd sAudioCmd[0x100];\nu8 D_SH_80350F18;\nu8 D_SH_80350F19;\n\nOSMesg D_SH_80350F1C[1];\nOSMesgQueue D_SH_80350F20; // address written to D_SH_80350F38\nOSMesgQueue *D_SH_80350F38;\n\nOSMesg D_SH_80350F40[4];\nOSMesgQueue D_SH_80350F50; // address written to D_SH_80350F68\nOSMesgQueue *D_SH_80350F68;\n\nOSMesg D_SH_80350F6C[1];\nOSMesgQueue D_SH_80350F70; // address written to D_SH_80350F88\nOSMesgQueue *D_SH_80350F88;\n\nOSMesg D_SH_80350F8C[1];\nOSMesgQueue D_SH_80350F90; // address written to D_SH_80350F90\nOSMesgQueue *D_SH_80350FA8;\n#endif\n\nu64 gAudioGlobalsEndMarker;\n"
  },
  {
    "path": "src/audio/data.h",
    "content": "#ifndef AUDIO_DATA_H\n#define AUDIO_DATA_H\n\n#include <PR/ultratypes.h>\n\n#include \"internal.h\"\n#include \"types.h\"\n\n#define AUDIO_LOCK_UNINITIALIZED 0\n#define AUDIO_LOCK_NOT_LOADING 0x76557364\n#define AUDIO_LOCK_LOADING 0x19710515\n\n#define NUMAIBUFFERS 3\n\n// constant .data\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\nextern struct AudioSessionSettingsEU gAudioSessionPresets[];\n#else\nextern struct AudioSessionSettings gAudioSessionPresets[18];\n#endif\nextern u16 D_80332388[128]; // unused\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\nextern f32 gPitchBendFrequencyScale[256];\n#else\nextern f32 gPitchBendFrequencyScale[255];\n#endif\nextern f32 gNoteFrequencies[128];\n\nextern u8 gDefaultShortNoteVelocityTable[16];\nextern u8 gDefaultShortNoteDurationTable[16];\nextern s8 gVibratoCurve[16];\nextern struct AdsrEnvelope gDefaultEnvelope[3];\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\nextern s16 gEuUnknownWave7[256];\nextern s16 *gWaveSamples[6];\n#else\nextern s16 *gWaveSamples[4];\n#endif\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\nextern u8 euUnknownData_8030194c[4];\n#ifdef VERSION_EU\nextern u16 gHeadsetPanQuantization[0x10];\n#else\nextern u16 gHeadsetPanQuantization[0x40];\n#endif\nextern s16 euUnknownData_80301950[64];\nextern struct NoteSubEu gZeroNoteSub;\nextern struct NoteSubEu gDefaultNoteSub;\n#else\nextern u16 gHeadsetPanQuantization[10];\n#endif\nextern f32 gHeadsetPanVolume[128];\nextern f32 gStereoPanVolume[128];\nextern f32 gDefaultPanVolume[128];\n\nextern f32 gVolRampingLhs136[128];\nextern f32 gVolRampingRhs136[128];\nextern f32 gVolRampingLhs144[128];\nextern f32 gVolRampingRhs144[128];\nextern f32 gVolRampingLhs128[128];\nextern f32 gVolRampingRhs128[128];\n\n// non-constant .data\nextern s16 gTatumsPerBeat;\nextern s8 gUnusedCount80333EE8;\nextern s32 gAudioHeapSize; // AUDIO_HEAP_SIZE\nextern s32 gAudioInitPoolSize; // AUDIO_INIT_POOL_SIZE\nextern volatile s32 gAudioLoadLock;\n\n// .bss\nextern volatile s32 gAudioFrameCount;\n\n// number of DMAs performed during this frame\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\nextern s32 gCurrAudioFrameDmaCount;\n#else\nextern volatile s32 gCurrAudioFrameDmaCount;\n#endif\n\nextern s32 gAudioTaskIndex;\nextern s32 gCurrAiBufferIndex;\n\nextern u64 *gAudioCmdBuffers[2];\nextern u64 *gAudioCmd;\n\nextern struct SPTask *gAudioTask;\nextern struct SPTask gAudioTasks[2];\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\nextern f32 D_EU_802298D0;\nextern s32 gRefreshRate;\n#endif\n\nextern s16 *gAiBuffers[NUMAIBUFFERS];\nextern s16 gAiBufferLengths[NUMAIBUFFERS];\n#if defined(VERSION_SH) || defined(VERSION_CN)\n#define AIBUFFER_LEN 0xb00\n#elif defined(VERSION_EU)\n#define AIBUFFER_LEN (0xa0 * 17)\n#else\n#define AIBUFFER_LEN (0xa0 * 16)\n#endif\n\nextern u32 gUnused80226E58[0x10];\nextern u16 gUnused80226E98[0x10];\n\nextern u32 gAudioRandom;\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\nextern f32 unk_sh_data_1[];\n\nextern volatile u32 gAudioLoadLockSH;\n\nextern u8 D_SH_80350F18;\nextern u8 D_SH_80350F19;\n\nextern OSMesg D_SH_80350F1C[1];\nextern OSMesgQueue D_SH_80350F20; // address written to D_SH_80350F38\nextern OSMesgQueue *D_SH_80350F38;\n\nextern OSMesg D_SH_80350F40[4];\nextern OSMesgQueue D_SH_80350F50; // address written to D_SH_80350F68\nextern OSMesgQueue *D_SH_80350F68;\n\nextern OSMesg D_SH_80350F6C[1];\nextern OSMesgQueue D_SH_80350F70; // address written to D_SH_80350F88\nextern OSMesgQueue *D_SH_80350F88;\n\nextern OSMesg D_SH_80350F8C[1];\nextern OSMesgQueue D_SH_80350F90; // address written to D_SH_80350F90\nextern OSMesgQueue *D_SH_80350FA8;\n#endif\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n#define UNUSED_COUNT_80333EE8 24\n#define AUDIO_HEAP_SIZE 0x2c500\n#define AUDIO_INIT_POOL_SIZE 0x2c00\n#else\n#define UNUSED_COUNT_80333EE8 16\n#define AUDIO_HEAP_SIZE 0x31150\n#define AUDIO_INIT_POOL_SIZE 0x2500\n#endif\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\nextern u32 D_SH_80315EF0;\nextern u16 D_SH_80315EF4;\nextern u16 D_SH_80315EF8;\nextern u16 D_SH_80315EFC;\n#endif\n\n#endif // AUDIO_DATA_H\n"
  },
  {
    "path": "src/audio/effects.c",
    "content": "#include <ultra64.h>\n\n#include \"effects.h\"\n#include \"load.h\"\n#include \"data.h\"\n#include \"seqplayer.h\"\n\n#ifdef VERSION_JP\n#define US_FLOAT2(x) x##.0\n#else\n#define US_FLOAT2(x) x\n#endif\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\nvoid sequence_channel_process_sound(struct SequenceChannel *seqChannel, s32 recalculateVolume) {\n    f32 channelVolume;\n    s32 i;\n\n    if (seqChannel->changes.as_bitfields.volume || recalculateVolume) {\n        channelVolume = seqChannel->volume * seqChannel->volumeScale * seqChannel->seqPlayer->appliedFadeVolume;\n        if (seqChannel->seqPlayer->muted && (seqChannel->muteBehavior & MUTE_BEHAVIOR_SOFTEN) != 0) {\n            channelVolume = seqChannel->seqPlayer->muteVolumeScale * channelVolume;\n        }\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        seqChannel->appliedVolume = channelVolume * channelVolume;\n#else\n        seqChannel->appliedVolume = channelVolume;\n#endif\n    }\n\n    if (seqChannel->changes.as_bitfields.pan) {\n        seqChannel->pan = seqChannel->newPan * seqChannel->panChannelWeight;\n    }\n\n    for (i = 0; i < 4; i++) {\n        struct SequenceChannelLayer *layer = seqChannel->layers[i];\n        if (layer != NULL && layer->enabled && layer->note != NULL) {\n            if (layer->notePropertiesNeedInit) {\n                layer->noteFreqScale = layer->freqScale * seqChannel->freqScale;\n                layer->noteVelocity = layer->velocitySquare * seqChannel->appliedVolume;\n                layer->notePan = (seqChannel->pan + layer->pan * (0x80 - seqChannel->panChannelWeight)) >> 7;\n                layer->notePropertiesNeedInit = FALSE;\n            } else {\n                if (seqChannel->changes.as_bitfields.freqScale) {\n                    layer->noteFreqScale = layer->freqScale * seqChannel->freqScale;\n                }\n                if (seqChannel->changes.as_bitfields.volume || recalculateVolume) {\n                    layer->noteVelocity = layer->velocitySquare * seqChannel->appliedVolume;\n                }\n                if (seqChannel->changes.as_bitfields.pan) {\n                    layer->notePan = (seqChannel->pan + layer->pan * (0x80 - seqChannel->panChannelWeight)) >> 7;\n                }\n            }\n        }\n    }\n    seqChannel->changes.as_u8 = 0;\n}\n#else\nstatic void sequence_channel_process_sound(struct SequenceChannel *seqChannel) {\n    f32 channelVolume;\n    f32 panLayerWeight;\n    f32 panFromChannel;\n    s32 i;\n\n    channelVolume = seqChannel->volume * seqChannel->volumeScale * seqChannel->seqPlayer->fadeVolume;\n    if (seqChannel->seqPlayer->muted && (seqChannel->muteBehavior & MUTE_BEHAVIOR_SOFTEN) != 0) {\n        channelVolume *= seqChannel->seqPlayer->muteVolumeScale;\n    }\n\n    panFromChannel = seqChannel->pan * seqChannel->panChannelWeight;\n    panLayerWeight = US_FLOAT(1.0) - seqChannel->panChannelWeight;\n\n    for (i = 0; i < 4; i++) {\n        struct SequenceChannelLayer *layer = seqChannel->layers[i];\n        if (layer != NULL && layer->enabled && layer->note != NULL) {\n            layer->noteFreqScale = layer->freqScale * seqChannel->freqScale;\n            layer->noteVelocity = layer->velocitySquare * channelVolume;\n            layer->notePan = (layer->pan * panLayerWeight) + panFromChannel;\n        }\n    }\n}\n#endif\n\nvoid sequence_player_process_sound(struct SequencePlayer *seqPlayer) {\n    s32 i;\n\n    if (seqPlayer->fadeRemainingFrames != 0) {\n        seqPlayer->fadeVolume += seqPlayer->fadeVelocity;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n        seqPlayer->recalculateVolume = TRUE;\n#endif\n\n        if (seqPlayer->fadeVolume > US_FLOAT2(1)) {\n            seqPlayer->fadeVolume = US_FLOAT2(1);\n        }\n        if (seqPlayer->fadeVolume < 0) {\n            seqPlayer->fadeVolume = 0;\n        }\n\n        if (--seqPlayer->fadeRemainingFrames == 0) {\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n            if (seqPlayer->state == 2) {\n                sequence_player_disable(seqPlayer);\n                return;\n            }\n#else\n            switch (seqPlayer->state) {\n                case SEQUENCE_PLAYER_STATE_FADE_OUT:\n                    sequence_player_disable(seqPlayer);\n                    return;\n\n                case SEQUENCE_PLAYER_STATE_2:\n                case SEQUENCE_PLAYER_STATE_3:\n                    seqPlayer->state = SEQUENCE_PLAYER_STATE_0;\n                    break;\n\n                case SEQUENCE_PLAYER_STATE_4:\n                    break;\n            }\n#endif\n        }\n    }\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    if (seqPlayer->recalculateVolume) {\n        seqPlayer->appliedFadeVolume = seqPlayer->fadeVolume * seqPlayer->fadeVolumeScale;\n    }\n#endif\n\n    // Process channels\n    for (i = 0; i < CHANNELS_MAX; i++) {\n        if (IS_SEQUENCE_CHANNEL_VALID(seqPlayer->channels[i]) == TRUE\n            && seqPlayer->channels[i]->enabled == TRUE) {\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n            sequence_channel_process_sound(seqPlayer->channels[i], seqPlayer->recalculateVolume);\n#else\n            sequence_channel_process_sound(seqPlayer->channels[i]);\n#endif\n        }\n    }\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    seqPlayer->recalculateVolume = FALSE;\n#endif\n}\n\nf32 get_portamento_freq_scale(struct Portamento *p) {\n    u32 v0;\n    f32 result;\n#if defined(VERSION_JP) || defined(VERSION_US)\n    if (p->mode == 0) {\n        return 1.0f;\n    }\n#endif\n\n    p->cur += p->speed;\n    v0 = (u32) p->cur;\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    if (v0 > 127)\n#else\n    if (v0 >= 127)\n#endif\n    {\n        v0 = 127;\n    }\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    result = US_FLOAT(1.0) + p->extent * (gPitchBendFrequencyScale[v0 + 128] - US_FLOAT(1.0));\n#else\n    result = US_FLOAT(1.0) + p->extent * (gPitchBendFrequencyScale[v0 + 127] - US_FLOAT(1.0));\n#endif\n    return result;\n}\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\ns16 get_vibrato_pitch_change(struct VibratoState *vib) {\n    s32 index;\n    vib->time += (s32) vib->rate;\n    index = (vib->time >> 10) & 0x3F;\n    return vib->curve[index] >> 8;\n}\n#else\ns8 get_vibrato_pitch_change(struct VibratoState *vib) {\n    s32 index;\n    vib->time += vib->rate;\n\n    index = (vib->time >> 10) & 0x3F;\n\n    switch (index & 0x30) {\n        case 0x10:\n            index = 31 - index;\n\n        case 0x00:\n            return vib->curve[index];\n\n        case 0x20:\n            index -= 0x20;\n            break;\n\n        case 0x30:\n            index = 63 - index;\n            break;\n    }\n\n    return -vib->curve[index];\n}\n#endif\n\nf32 get_vibrato_freq_scale(struct VibratoState *vib) {\n    s32 pitchChange;\n    f32 extent;\n    f32 result;\n\n    if (vib->delay != 0) {\n        vib->delay--;\n        return 1;\n    }\n\n    if (vib->extentChangeTimer) {\n        if (vib->extentChangeTimer == 1) {\n            vib->extent = (s32) vib->seqChannel->vibratoExtentTarget;\n        } else {\n            vib->extent +=\n                ((s32) vib->seqChannel->vibratoExtentTarget - vib->extent) / (s32) vib->extentChangeTimer;\n        }\n\n        vib->extentChangeTimer--;\n    } else if (vib->seqChannel->vibratoExtentTarget != (s32) vib->extent) {\n        if ((vib->extentChangeTimer = vib->seqChannel->vibratoExtentChangeDelay) == 0) {\n            vib->extent = (s32) vib->seqChannel->vibratoExtentTarget;\n        }\n    }\n\n    if (vib->rateChangeTimer) {\n        if (vib->rateChangeTimer == 1) {\n            vib->rate = (s32) vib->seqChannel->vibratoRateTarget;\n        } else {\n            vib->rate += ((s32) vib->seqChannel->vibratoRateTarget - vib->rate) / (s32) vib->rateChangeTimer;\n        }\n\n        vib->rateChangeTimer--;\n    } else if (vib->seqChannel->vibratoRateTarget != (s32) vib->rate) {\n        if ((vib->rateChangeTimer = vib->seqChannel->vibratoRateChangeDelay) == 0) {\n            vib->rate = (s32) vib->seqChannel->vibratoRateTarget;\n        }\n    }\n\n    if (vib->extent == 0) {\n        return 1.0f;\n    }\n\n    pitchChange = get_vibrato_pitch_change(vib);\n    extent = (f32) vib->extent / US_FLOAT(4096.0);\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    result = US_FLOAT(1.0) + extent * (gPitchBendFrequencyScale[pitchChange + 128] - US_FLOAT(1.0));\n#else\n    result = US_FLOAT(1.0) + extent * (gPitchBendFrequencyScale[pitchChange + 127] - US_FLOAT(1.0));\n#endif\n    return result;\n}\n\nvoid note_vibrato_update(struct Note *note) {\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    if (note->portamento.mode != 0) {\n        note->portamentoFreqScale = get_portamento_freq_scale(&note->portamento);\n    }\n    if (note->vibratoState.active && note->parentLayer != NO_LAYER) {\n        note->vibratoFreqScale = get_vibrato_freq_scale(&note->vibratoState);\n    }\n#else\n    if (note->vibratoState.active) {\n        note->portamentoFreqScale = get_portamento_freq_scale(&note->portamento);\n        if (note->parentLayer != NO_LAYER) {\n            note->vibratoFreqScale = get_vibrato_freq_scale(&note->vibratoState);\n        }\n    }\n#endif\n}\n\nvoid note_vibrato_init(struct Note *note) {\n    struct VibratoState *vib;\n    UNUSED struct SequenceChannel *seqChannel;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    struct NotePlaybackState *seqPlayerState = (struct NotePlaybackState *) &note->priority;\n#endif\n\n    note->vibratoFreqScale = 1.0f;\n    note->portamentoFreqScale = 1.0f;\n\n    vib = &note->vibratoState;\n\n#if defined(VERSION_JP) || defined(VERSION_US)\n    if (note->parentLayer->seqChannel->vibratoExtentStart == 0\n        && note->parentLayer->seqChannel->vibratoExtentTarget == 0\n        && note->parentLayer->portamento.mode == 0) {\n        vib->active = FALSE;\n        return;\n    }\n#endif\n\n    vib->active = TRUE;\n    vib->time = 0;\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    vib->curve = gWaveSamples[2];\n    vib->seqChannel = note->parentLayer->seqChannel;\n    if ((vib->extentChangeTimer = vib->seqChannel->vibratoExtentChangeDelay) == 0) {\n        vib->extent = FLOAT_CAST(vib->seqChannel->vibratoExtentTarget);\n    } else {\n        vib->extent = FLOAT_CAST(vib->seqChannel->vibratoExtentStart);\n    }\n\n    if ((vib->rateChangeTimer = vib->seqChannel->vibratoRateChangeDelay) == 0) {\n        vib->rate = FLOAT_CAST(vib->seqChannel->vibratoRateTarget);\n    } else {\n        vib->rate = FLOAT_CAST(vib->seqChannel->vibratoRateStart);\n    }\n    vib->delay = vib->seqChannel->vibratoDelay;\n\n    seqPlayerState->portamento = seqPlayerState->parentLayer->portamento;\n#else\n    vib->curve = gVibratoCurve;\n    vib->seqChannel = note->parentLayer->seqChannel;\n    seqChannel = vib->seqChannel;\n\n    if ((vib->extentChangeTimer = seqChannel->vibratoExtentChangeDelay) == 0) {\n        vib->extent = seqChannel->vibratoExtentTarget;\n    } else {\n        vib->extent = seqChannel->vibratoExtentStart;\n    }\n\n    if ((vib->rateChangeTimer = seqChannel->vibratoRateChangeDelay) == 0) {\n        vib->rate = seqChannel->vibratoRateTarget;\n    } else {\n        vib->rate = seqChannel->vibratoRateStart;\n    }\n    vib->delay = seqChannel->vibratoDelay;\n\n    note->portamento = note->parentLayer->portamento;\n#endif\n}\n\nvoid adsr_init(struct AdsrState *adsr, struct AdsrEnvelope *envelope, UNUSED s16 *volOut) {\n    adsr->action = 0;\n    adsr->state = ADSR_STATE_DISABLED;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    adsr->delay = 0;\n    adsr->envelope = envelope;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    adsr->sustain = 0.0f;\n#endif\n    adsr->current = 0.0f;\n#else\n    adsr->initial = 0;\n    adsr->delay = 0;\n    adsr->velocity = 0;\n    adsr->envelope = envelope;\n    adsr->volOut = volOut;\n#endif\n}\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\nf32 adsr_update(struct AdsrState *adsr) {\n#else\ns32 adsr_update(struct AdsrState *adsr) {\n#endif\n    u8 action = adsr->action;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    u8 state = adsr->state;\n    switch (state) {\n#else\n    switch (adsr->state) {\n#endif\n        case ADSR_STATE_DISABLED:\n            return 0;\n\n        case ADSR_STATE_INITIAL: {\n#if defined(VERSION_JP) || defined(VERSION_US)\n            adsr->current = adsr->initial;\n            adsr->target = adsr->initial;\n#endif\n            if (action & ADSR_ACTION_HANG) {\n                adsr->state = ADSR_STATE_HANG;\n                break;\n            }\n            // fallthrough\n        }\n\n        case ADSR_STATE_START_LOOP:\n            adsr->envIndex = 0;\n#if defined(VERSION_JP) || defined(VERSION_US)\n            adsr->currentHiRes = adsr->current << 0x10;\n#endif\n            adsr->state = ADSR_STATE_LOOP;\n            // fallthrough\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n            restart:\n#endif\n        case ADSR_STATE_LOOP:\n            adsr->delay = BSWAP16(adsr->envelope[adsr->envIndex].delay);\n            switch (adsr->delay) {\n                case ADSR_DISABLE:\n                    adsr->state = ADSR_STATE_DISABLED;\n                    break;\n                case ADSR_HANG:\n                    adsr->state = ADSR_STATE_HANG;\n                    break;\n                case ADSR_GOTO:\n                    adsr->envIndex = BSWAP16(adsr->envelope[adsr->envIndex].arg);\n#if defined(VERSION_SH) || defined(VERSION_CN)\n                    goto restart;\n#else\n                    break;\n#endif\n                case ADSR_RESTART:\n                    adsr->state = ADSR_STATE_INITIAL;\n                    break;\n\n                default:\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                    if (adsr->delay >= 4) {\n                        adsr->delay = adsr->delay * gAudioBufferParameters.updatesPerFrame\n#if defined(VERSION_SH) || defined(VERSION_CN)\n                        / gAudioBufferParameters.presetUnk4\n#endif\n                        / 4;\n                    }\n#if defined(VERSION_SH) || defined(VERSION_CN)\n                    if (adsr->delay == 0) {\n                        adsr->delay = 1;\n                    }\n                    adsr->target = (f32) BSWAP16(adsr->envelope[adsr->envIndex].arg) / 32767.0f;\n#elif defined(VERSION_EU)\n                    adsr->target = (f32) BSWAP16(adsr->envelope[adsr->envIndex].arg) / 32767.0;\n#endif\n                    adsr->target = adsr->target * adsr->target;\n                    adsr->velocity = (adsr->target - adsr->current) / adsr->delay;\n#else\n                    adsr->target = BSWAP16(adsr->envelope[adsr->envIndex].arg);\n                    adsr->velocity = ((adsr->target - adsr->current) << 0x10) / adsr->delay;\n#endif\n                    adsr->state = ADSR_STATE_FADE;\n                    adsr->envIndex++;\n                    break;\n            }\n            if (adsr->state != ADSR_STATE_FADE) {\n                break;\n            }\n            // fallthrough\n\n        case ADSR_STATE_FADE:\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n            adsr->current += adsr->velocity;\n#else\n            adsr->currentHiRes += adsr->velocity;\n            adsr->current = adsr->currentHiRes >> 0x10;\n#endif\n            if (--adsr->delay <= 0) {\n                adsr->state = ADSR_STATE_LOOP;\n            }\n            // fallthrough\n\n        case ADSR_STATE_HANG:\n            break;\n\n        case ADSR_STATE_DECAY:\n        case ADSR_STATE_RELEASE: {\n            adsr->current -= adsr->fadeOutVel;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n            if (adsr->sustain != 0.0f && state == ADSR_STATE_DECAY) {\n#else\n            if (adsr->sustain != 0 && adsr->state == ADSR_STATE_DECAY) {\n#endif\n                if (adsr->current < adsr->sustain) {\n                    adsr->current = adsr->sustain;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                    adsr->delay = 128;\n#else\n                    adsr->delay = adsr->sustain / 16;\n#endif\n                    adsr->state = ADSR_STATE_SUSTAIN;\n                }\n                break;\n            }\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n            if (adsr->current < 0.00001f) {\n                adsr->current = 0.0f;\n                adsr->state = ADSR_STATE_DISABLED;\n            }\n#elif defined(VERSION_EU)\n            if (adsr->current < 0) {\n                adsr->current = 0.0f;\n                adsr->state = ADSR_STATE_DISABLED;\n            }\n#else\n            if (adsr->current < 100) {\n                adsr->current = 0;\n                adsr->state = ADSR_STATE_DISABLED;\n            }\n#endif\n            break;\n        }\n\n        case ADSR_STATE_SUSTAIN:\n            adsr->delay -= 1;\n            if (adsr->delay == 0) {\n                adsr->state = ADSR_STATE_RELEASE;\n            }\n            break;\n    }\n\n    if ((action & ADSR_ACTION_DECAY)) {\n        adsr->state = ADSR_STATE_DECAY;\n        adsr->action = action & ~ADSR_ACTION_DECAY;\n    }\n\n    if ((action & ADSR_ACTION_RELEASE)) {\n        adsr->state = ADSR_STATE_RELEASE;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n        adsr->action = action & ~ADSR_ACTION_RELEASE;\n#else\n        adsr->action = action & ~(ADSR_ACTION_RELEASE | ADSR_ACTION_DECAY);\n#endif\n    }\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    if (adsr->current < 0.0f) {\n        return 0.0f;\n    }\n    if (adsr->current > 1.0f) {\n        eu_stubbed_printf_1(\"Audio:Envp: overflow  %f\\n\", adsr->current);\n        return 1.0f;\n    }\n    return adsr->current;\n#else\n    *adsr->volOut = adsr->current;\n    return 0;\n#endif\n}\n"
  },
  {
    "path": "src/audio/effects.h",
    "content": "#ifndef AUDIO_EFFECTS_H\n#define AUDIO_EFFECTS_H\n\n#include <PR/ultratypes.h>\n\n#include \"internal.h\"\n#include \"platform_info.h\"\n\n#define ADSR_STATE_DISABLED 0\n#define ADSR_STATE_INITIAL 1\n#define ADSR_STATE_START_LOOP 2\n#define ADSR_STATE_LOOP 3\n#define ADSR_STATE_FADE 4\n#define ADSR_STATE_HANG 5\n#define ADSR_STATE_DECAY 6\n#define ADSR_STATE_RELEASE 7\n#define ADSR_STATE_SUSTAIN 8\n\n#define ADSR_ACTION_RELEASE 0x10\n#define ADSR_ACTION_DECAY 0x20\n#define ADSR_ACTION_HANG 0x40\n\n#define ADSR_DISABLE 0\n#define ADSR_HANG -1\n#define ADSR_GOTO -2\n#define ADSR_RESTART -3\n\n// Envelopes are always stored as big endian, to match sequence files which are\n// byte blobs and can embed envelopes. Hence this byteswapping macro.\n#if IS_BIG_ENDIAN\n#define BSWAP16(x) (x)\n#else\n#define BSWAP16(x) (((x) & 0xff) << 8 | (((x) >> 8) & 0xff))\n#endif\n\nvoid sequence_player_process_sound(struct SequencePlayer *seqPlayer);\nvoid note_vibrato_update(struct Note *note);\nvoid note_vibrato_init(struct Note *note);\nvoid adsr_init(struct AdsrState *adsr, struct AdsrEnvelope *envelope, s16 *volOut);\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\nf32 adsr_update(struct AdsrState *adsr);\n#else\ns32 adsr_update(struct AdsrState *adsr);\n#endif\n\n#endif // AUDIO_EFFECTS_H\n"
  },
  {
    "path": "src/audio/external.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n#include \"heap.h\"\n#include \"load.h\"\n#include \"data.h\"\n#include \"seqplayer.h\"\n#include \"external.h\"\n#include \"playback.h\"\n#include \"synthesis.h\"\n#include \"game/level_update.h\"\n#include \"game/object_list_processor.h\"\n#include \"game/camera.h\"\n#include \"seq_ids.h\"\n#include \"dialog_ids.h\"\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n#define EU_FLOAT(x) x##f\n#else\n#define EU_FLOAT(x) x\n#endif\n\n// N.B. sound banks are different from the audio banks referred to in other\n// files. We should really fix our naming to be less ambiguous...\n#define MAX_BACKGROUND_MUSIC_QUEUE_SIZE 6\n#define MAX_CHANNELS_PER_SOUND_BANK 1\n\n#define SEQUENCE_NONE 0xFF\n\n#define SAMPLES_TO_OVERPRODUCE 0x10\n#define EXTRA_BUFFERED_AI_SAMPLES_TARGET 0x40\n\nstruct Sound {\n    s32 soundBits;\n    f32 *position;\n}; // size = 0x8\n\nstruct ChannelVolumeScaleFade {\n    f32 velocity;\n    u8 target;\n    f32 current;\n    u16 remainingFrames;\n}; // size = 0x10\n\nstruct SoundCharacteristics {\n    f32 *x;\n    f32 *y;\n    f32 *z;\n    f32 distance;\n    u32 priority;\n    u32 soundBits; // packed bits, same as first arg to play_sound\n    u8 soundStatus;\n    u8 freshness;\n    u8 prev;\n    u8 next;\n}; // size = 0x1C\n\n// Also the number of frames a discrete sound can be in the WAITING state before being deleted\n#define SOUND_MAX_FRESHNESS 10\n\nstruct SequenceQueueItem {\n    u8 seqId;\n    u8 priority;\n}; // size = 0x2\n\n// data\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n// moved to bss in data.c\ns32 gAudioErrorFlags2 = 0;\n#else\ns32 gAudioErrorFlags = 0;\n#endif\ns32 sGameLoopTicked = 0;\n\n// Dialog sounds\n// The US difference is the sound for DIALOG_037 (\"I win! You lose! Ha ha ha ha!\n// You're no slouch, but I'm a better sledder! Better luck next time!\"), spoken\n// by Koopa instead of the penguin in JP.\n\n#define UKIKI 0\n#define TUXIE 1\n#define BOWS1 2 // Bowser Intro / Doors Laugh\n#define KOOPA 3\n#define KBOMB 4\n#define BOO 5\n#define BOMB 6\n#define BOWS2 7 // Bowser Battle Laugh\n#define GRUNT 8\n#define WIGLR 9\n#define YOSHI 10\n#define _ 0xFF\n\n#ifdef VERSION_JP\n#define DIFF KOOPA\n#else\n#define DIFF TUXIE\n#endif\n\nu8 sDialogSpeaker[] = {\n    //       0      1      2      3      4      5      6      7      8      9\n    /* 0*/ _,     BOMB,  BOMB,  BOMB,  BOMB,  KOOPA, KOOPA, KOOPA, _,     KOOPA,\n    /* 1*/ _,     _,     _,     _,     _,     _,     _,     KBOMB, _,     _,\n    /* 2*/ _,     BOWS1, BOWS1, BOWS1, BOWS1, BOWS1, BOWS1, BOWS1, BOWS1, BOWS1,\n    /* 3*/ _,     _,     _,     _,     _,     _,     _,     DIFF,  _,     _,\n    /* 4*/ _,     KOOPA, _,     _,     _,     _,     _,     BOMB,  _,     _,\n    /* 5*/ _,     _,     _,     _,     _,     TUXIE, TUXIE, TUXIE, TUXIE, TUXIE,\n    /* 6*/ _,     _,     _,     _,     _,     _,     _,     BOWS2, _,     _,\n    /* 7*/ _,     _,     _,     _,     _,     _,     _,     _,     _,     UKIKI,\n    /* 8*/ UKIKI, _,     _,     _,     _,     BOO,   _,     _,     _,     _,\n    /* 9*/ BOWS2, _,     BOWS2, BOWS2, _,     _,     _,     _,     BOO,   BOO,\n    /*10*/ UKIKI, UKIKI, _,     _,     _,     BOMB,  BOMB,  BOO,   BOO,   _,\n    /*11*/ _,     _,     _,     _,     GRUNT, GRUNT, KBOMB, GRUNT, GRUNT, _,\n    /*12*/ _,     _,     _,     _,     _,     _,     _,     _,     KBOMB, _,\n    /*13*/ _,     _,     TUXIE, _,     _,     _,     _,     _,     _,     _,\n    /*14*/ _,     _,     _,     _,     _,     _,     _,     _,     _,     _,\n    /*15*/ WIGLR, WIGLR, WIGLR, _,     _,     _,     _,     _,     _,     _,\n    /*16*/ _,     YOSHI, _,     _,     _,     _,     _,     _,     WIGLR, _\n};\n#undef _\nSTATIC_ASSERT(ARRAY_COUNT(sDialogSpeaker) == DIALOG_COUNT,\n              \"change this array if you are adding dialogs\");\n\ns32 sDialogSpeakerVoice[] = {\n    SOUND_OBJ_UKIKI_CHATTER_LONG,\n    SOUND_OBJ_BIG_PENGUIN_YELL,\n    SOUND_OBJ_BOWSER_INTRO_LAUGH,\n    SOUND_OBJ_KOOPA_TALK,\n    SOUND_OBJ_KING_BOBOMB_TALK,\n    SOUND_OBJ_BOO_LAUGH_LONG,\n    SOUND_OBJ_BOBOMB_BUDDY_TALK,\n    SOUND_OBJ_BOWSER_LAUGH,\n    SOUND_OBJ2_BOSS_DIALOG_GRUNT,\n    SOUND_OBJ_WIGGLER_TALK,\n    SOUND_GENERAL_YOSHI_TALK,\n#if defined(VERSION_JP) || defined(VERSION_US)\n    NO_SOUND,\n    NO_SOUND,\n    NO_SOUND,\n    NO_SOUND,\n#endif\n};\n\nu8 sNumProcessedSoundRequests = 0;\nu8 sSoundRequestCount = 0;\n\n// Music dynamic tables. A dynamic describes which volumes to apply to which\n// channels of a sequence (I think?), and different parts of a level can have\n// different dynamics. Each table below specifies first the sequence to apply\n// the dynamics to, then a bunch of conditions for when each dynamic applies\n// (e.g. \"only if Mario's X position is between 100 and 300\"), and finally a\n// fallback dynamic. Due to the encoding of the tables, the conditions must\n// come in the same order as the macros.\n// TODO: dynamic isn't a great term for this, it means other things in music...\n\n#define MARIO_X_GE 0\n#define MARIO_Y_GE 1\n#define MARIO_Z_GE 2\n#define MARIO_X_LT 3\n#define MARIO_Y_LT 4\n#define MARIO_Z_LT 5\n#define MARIO_IS_IN_AREA 6\n#define MARIO_IS_IN_ROOM 7\n\n#define DYN1(cond1, val1, res) (s16)(1 << (15 - cond1) | res), val1\n#define DYN2(cond1, val1, cond2, val2, res)                                                            \\\n    (s16)(1 << (15 - cond1) | 1 << (15 - cond2) | res), val1, val2\n#define DYN3(cond1, val1, cond2, val2, cond3, val3, res)                                               \\\n    (s16)(1 << (15 - cond1) | 1 << (15 - cond2) | 1 << (15 - cond3) | res), val1, val2, val3\n\ns16 sDynBBH[] = {\n    SEQ_LEVEL_SPOOKY, DYN1(MARIO_IS_IN_ROOM, BBH_OUTSIDE_ROOM, 6),\n    DYN1(MARIO_IS_IN_ROOM, BBH_NEAR_MERRY_GO_ROUND_ROOM, 6), 5,\n};\ns16 sDynDDD[] = {\n    SEQ_LEVEL_WATER,\n    DYN2(MARIO_X_LT, -800, MARIO_IS_IN_AREA, AREA_DDD_WHIRLPOOL & 0xf, 0),\n    DYN3(MARIO_Y_GE, -2000, MARIO_X_LT, 470, MARIO_IS_IN_AREA, AREA_DDD_WHIRLPOOL & 0xf, 0),\n    DYN2(MARIO_Y_GE, 100, MARIO_IS_IN_AREA, AREA_DDD_SUB & 0xf, 2),\n    1,\n};\ns16 sDynJRB[] = {\n    SEQ_LEVEL_WATER,\n    DYN2(MARIO_Y_GE, 945, MARIO_X_LT, -5260, 0),\n    DYN1(MARIO_IS_IN_AREA, AREA_JRB_SHIP & 0xf, 0),\n    DYN1(MARIO_Y_GE, 1000, 0),\n    DYN2(MARIO_Y_GE, -3100, MARIO_Z_LT, -900, 2),\n    1,\n    5, // bogus entry, ignored (was JRB originally intended to have spooky music?)\n};\ns16 sDynWDW[] = {\n    SEQ_LEVEL_UNDERGROUND, DYN2(MARIO_Y_LT, -670, MARIO_IS_IN_AREA, AREA_WDW_MAIN & 0xf, 4),\n    DYN1(MARIO_IS_IN_AREA, AREA_WDW_TOWN & 0xf, 4), 3,\n};\ns16 sDynHMC[] = {\n    SEQ_LEVEL_UNDERGROUND, DYN2(MARIO_X_GE, 0, MARIO_Y_LT, -203, 4),\n    DYN2(MARIO_X_LT, 0, MARIO_Y_LT, -2400, 4), 3,\n};\ns16 sDynUnk38[] = {\n    SEQ_LEVEL_UNDERGROUND,\n    DYN1(MARIO_IS_IN_AREA, 1, 3),\n    DYN1(MARIO_IS_IN_AREA, 2, 4),\n    DYN1(MARIO_IS_IN_AREA, 3, 7),\n    0,\n};\ns16 sDynNone[] = { SEQ_SOUND_PLAYER, 0 };\n\nu8 sCurrentMusicDynamic = 0xff;\nu8 sBackgroundMusicForDynamics = SEQUENCE_NONE;\n\n#define STUB_LEVEL(_0, _1, _2, _3, _4, _5, _6, leveldyn, _8) leveldyn,\n#define DEFINE_LEVEL(_0, _1, _2, _3, _4, _5, _6, _7, _8, leveldyn, _10) leveldyn,\n\n#define _ sDynNone\ns16 *sLevelDynamics[LEVEL_COUNT] = {\n    _, // LEVEL_NONE\n#include \"levels/level_defines.h\"\n};\n#undef _\n#undef STUB_LEVEL\n#undef DEFINE_LEVEL\n\nstruct MusicDynamic {\n    /*0x0*/ s16 bits1;\n    /*0x2*/ u16 volScale1;\n    /*0x4*/ s16 dur1;\n    /*0x6*/ s16 bits2;\n    /*0x8*/ u16 volScale2;\n    /*0xA*/ s16 dur2;\n}; // size = 0xC\n\nstruct MusicDynamic sMusicDynamics[8] = {\n    { 0x0000, 127, 100, 0x0e43, 0, 100 }, // SEQ_LEVEL_WATER\n    { 0x0003, 127, 100, 0x0e40, 0, 100 }, // SEQ_LEVEL_WATER\n    { 0x0e43, 127, 200, 0x0000, 0, 200 }, // SEQ_LEVEL_WATER\n    { 0x02ff, 127, 100, 0x0100, 0, 100 }, // SEQ_LEVEL_UNDERGROUND\n    { 0x03f7, 127, 100, 0x0008, 0, 100 }, // SEQ_LEVEL_UNDERGROUND\n    { 0x0070, 127, 10, 0x0000, 0, 100 },  // SEQ_LEVEL_SPOOKY\n    { 0x0000, 127, 100, 0x0070, 0, 10 },  // SEQ_LEVEL_SPOOKY\n    { 0xffff, 127, 100, 0x0000, 0, 100 }, // any (unused)\n};\n\n#define STUB_LEVEL(_0, _1, _2, _3, echo1, echo2, echo3, _7, _8) { echo1, echo2, echo3 },\n#define DEFINE_LEVEL(_0, _1, _2, _3, _4, _5, echo1, echo2, echo3, _9, _10) { echo1, echo2, echo3 },\n\nu8 sLevelAreaReverbs[LEVEL_COUNT][3] = {\n    { 0x00, 0x00, 0x00 }, // LEVEL_NONE\n#include \"levels/level_defines.h\"\n};\n#undef STUB_LEVEL\n#undef DEFINE_LEVEL\n\n#define STUB_LEVEL(_0, _1, _2, volume, _4, _5, _6, _7, _8) volume,\n#define DEFINE_LEVEL(_0, _1, _2, _3, _4, volume, _6, _7, _8, _9, _10) volume,\n\nu16 sLevelAcousticReaches[LEVEL_COUNT] = {\n    20000, // LEVEL_NONE\n#include \"levels/level_defines.h\"\n};\n\n#undef STUB_LEVEL\n#undef DEFINE_LEVEL\n\n#define AUDIO_MAX_DISTANCE US_FLOAT(22000.0)\n\n#ifdef VERSION_JP\n#define LOW_VOLUME_REVERB 48.0\n#else\n#define LOW_VOLUME_REVERB 40.0f\n#endif\n\n#ifdef VERSION_JP\n#define VOLUME_RANGE_UNK1 0.8f\n#define VOLUME_RANGE_UNK2 1.0f\n#else\n#define VOLUME_RANGE_UNK1 0.9f\n#define VOLUME_RANGE_UNK2 0.8f\n#endif\n\n// Default volume for background music sequences (playing on player 0).\nu8 sBackgroundMusicDefaultVolume[] = {\n    127, // SEQ_SOUND_PLAYER\n    80,  // SEQ_EVENT_CUTSCENE_COLLECT_STAR\n    80,  // SEQ_MENU_TITLE_SCREEN\n    75,  // SEQ_LEVEL_GRASS\n    70,  // SEQ_LEVEL_INSIDE_CASTLE\n    75,  // SEQ_LEVEL_WATER\n    75,  // SEQ_LEVEL_HOT\n    75,  // SEQ_LEVEL_BOSS_KOOPA\n    70,  // SEQ_LEVEL_SNOW\n    65,  // SEQ_LEVEL_SLIDE\n    80,  // SEQ_LEVEL_SPOOKY\n    65,  // SEQ_EVENT_PIRANHA_PLANT\n    85,  // SEQ_LEVEL_UNDERGROUND\n    75,  // SEQ_MENU_STAR_SELECT\n    65,  // SEQ_EVENT_POWERUP\n    70,  // SEQ_EVENT_METAL_CAP\n    65,  // SEQ_EVENT_KOOPA_MESSAGE\n    70,  // SEQ_LEVEL_KOOPA_ROAD\n    70,  // SEQ_EVENT_HIGH_SCORE\n    65,  // SEQ_EVENT_MERRY_GO_ROUND\n    80,  // SEQ_EVENT_RACE\n    70,  // SEQ_EVENT_CUTSCENE_STAR_SPAWN\n    85,  // SEQ_EVENT_BOSS\n    75,  // SEQ_EVENT_CUTSCENE_COLLECT_KEY\n    75,  // SEQ_EVENT_ENDLESS_STAIRS\n    85,  // SEQ_LEVEL_BOSS_KOOPA_FINAL\n    70,  // SEQ_EVENT_CUTSCENE_CREDITS\n    80,  // SEQ_EVENT_SOLVE_PUZZLE\n    80,  // SEQ_EVENT_TOAD_MESSAGE\n    70,  // SEQ_EVENT_PEACH_MESSAGE\n    75,  // SEQ_EVENT_CUTSCENE_INTRO\n    80,  // SEQ_EVENT_CUTSCENE_VICTORY\n    70,  // SEQ_EVENT_CUTSCENE_ENDING\n    65,  // SEQ_MENU_FILE_SELECT\n    0,   // SEQ_EVENT_CUTSCENE_LAKITU (not in JP)\n};\n\nSTATIC_ASSERT(ARRAY_COUNT(sBackgroundMusicDefaultVolume) == SEQ_COUNT,\n              \"change this array if you are adding sequences\");\n\nu8 sCurrentBackgroundMusicSeqId = SEQUENCE_NONE;\nu8 sMusicDynamicDelay = 0;\nu8 sSoundBankUsedListBack[SOUND_BANK_COUNT] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };\nu8 sSoundBankFreeListFront[SOUND_BANK_COUNT] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };\nu8 sNumSoundsInBank[SOUND_BANK_COUNT] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; // only used for debugging\nu8 sMaxChannelsForSoundBank[SOUND_BANK_COUNT] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };\n\n// Banks 2 and 7 both grew from 0x30 sounds to 0x40 in size in US.\n#ifdef VERSION_JP\n#define BANK27_SIZE 0x30\n#else\n#define BANK27_SIZE 0x40\n#endif\nu8 sNumSoundsPerBank[SOUND_BANK_COUNT] = {\n    0x70, 0x30, BANK27_SIZE, 0x80, 0x20, 0x80, 0x20, BANK27_SIZE, 0x80, 0x80,\n};\n#undef BANK27_SIZE\n\n// sBackgroundMusicMaxTargetVolume and sBackgroundMusicTargetVolume use the 0x80\n// bit to indicate that they are set, and the rest of the bits for the actual value\n#define TARGET_VOLUME_IS_PRESENT_FLAG 0x80\n#define TARGET_VOLUME_VALUE_MASK 0x7f\n#define TARGET_VOLUME_UNSET 0x00\n\nf32 gGlobalSoundSource[3] = { 0.0f, 0.0f, 0.0f };\nf32 sUnusedSoundArgs[3] = { 1.0f, 1.0f, 1.0f };\nu8 sSoundBankDisabled[16] = { 0 };\nu8 D_80332108 = 0;\nu8 sHasStartedFadeOut = FALSE;\nu16 sSoundBanksThatLowerBackgroundMusic = 0;\nu8 sUnused80332114 = 0;  // never read, set to 0\nu16 sUnused80332118 = 0; // never read, set to 0\nu8 sBackgroundMusicMaxTargetVolume = TARGET_VOLUME_UNSET;\nu8 D_80332120 = 0;\nu8 D_80332124 = 0;\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\nu8 D_EU_80300558 = 0;\n#endif\n\nu8 sBackgroundMusicQueueSize = 0;\n\n#ifndef VERSION_JP\nu8 sUnused8033323C = 0; // never read, set to 0\n#endif\n\n\n// bss\n#if defined(VERSION_JP) || defined(VERSION_US)\ns16 *gCurrAiBuffer;\n#endif\n#if defined(VERSION_SH) || defined(VERSION_CN)\ns8 D_SH_80343CD0_pad[0x20];\ns32 D_SH_80343CF0;\ns8 D_SH_80343CF8_pad[0x8];\nstruct UnkStruct80343D00 D_SH_80343D00;\ns8 D_SH_8034DC8_pad[0x8];\nOSPiHandle DriveRomHandle; // used in osDriveRomInit.c. Why here?\ns8 D_SH_80343E48_pad[0x8];\n#endif\n\nstruct Sound sSoundRequests[0x100];\n// Curiously, this has size 3, despite SEQUENCE_PLAYERS == 4 on EU\nstruct ChannelVolumeScaleFade D_80360928[3][CHANNELS_MAX];\nu8 sUsedChannelsForSoundBank[SOUND_BANK_COUNT];\nu8 sCurrentSound[SOUND_BANK_COUNT][MAX_CHANNELS_PER_SOUND_BANK]; // index into sSoundBanks\n\n/**\n * For each sound bank, a pool containing the currently active sounds for that bank.\n * The free and used slots in these pools are linked lists. The element sSoundBanks[bank][0]\n * is used as a list header for the used list, and never holds an actual sound. See also\n * sSoundBankUsedListBack and sSoundBankFreeListFront.\n */\nstruct SoundCharacteristics sSoundBanks[SOUND_BANK_COUNT][40];\n\nu8 sSoundMovingSpeed[SOUND_BANK_COUNT];\nu8 sBackgroundMusicTargetVolume;\nstatic u8 sLowerBackgroundMusicVolume;\nstruct SequenceQueueItem sBackgroundMusicQueue[MAX_BACKGROUND_MUSIC_QUEUE_SIZE];\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\ns32 unk_sh_8034754C;\n#endif\n\n#ifdef VERSION_EU\nOSMesgQueue OSMesgQueue0;\nOSMesgQueue OSMesgQueue1;\nOSMesgQueue OSMesgQueue2;\nOSMesgQueue OSMesgQueue3;\nextern OSMesgQueue *OSMesgQueues[];\n\nstruct EuAudioCmd sAudioCmd[0x100];\n\nOSMesg OSMesg0;\ns32 pad1; // why is there 1 s32 here\nOSMesg OSMesg1;\ns32 pad2[2];    // it's not just that the struct is bigger than we think, because there are 2 here\nOSMesg OSMesg2; // and none here. wth nintendo\nOSMesg OSMesg3;\n#else // VERSION_SH\nextern OSMesgQueue *D_SH_80350F88;\nextern OSMesgQueue *D_SH_80350FA8;\n#endif\n\n#ifdef VERSION_JP\ntypedef u16 FadeT;\n#else\ntypedef s32 FadeT;\n#endif\n\n// some sort of main thread -> sound thread dispatchers\nextern void func_802ad728(u32 bits, f32 arg);\nextern void func_802ad74c(u32 bits, u32 arg);\nextern void func_802ad770(u32 bits, s8 arg);\n\nstatic void update_background_music_after_sound(u8 bank, u8 soundIndex);\nstatic void update_game_sound(void);\nstatic void fade_channel_volume_scale(u8 player, u8 channelId, u8 targetScale, u16 fadeTimer);\nvoid process_level_music_dynamics(void);\nstatic u8 begin_background_music_fade(u16 fadeDuration);\nvoid func_80320ED8(void);\n\n#ifndef VERSION_JP\nvoid unused_8031E4F0(void) {\n    // This is a debug function which is almost entirely optimized away,\n    // except for loops, string literals, and a read of a volatile variable.\n    // The string literals have allowed it to be partially reconstructed.\n    s32 i;\n\n    stubbed_printf(\"AUTOSEQ \");\n    stubbed_printf(\"%2x %2x <%5x : %5x / %5x>\\n\", gSeqLoadedPool.temporary.entries[0].id,\n                   gSeqLoadedPool.temporary.entries[1].id, gSeqLoadedPool.temporary.entries[0].size,\n                   gSeqLoadedPool.temporary.entries[1].size, gSeqLoadedPool.temporary.pool.size);\n\n    stubbed_printf(\"AUTOBNK \");\n    stubbed_printf(\"%2x %3x <%5x : %5x / %5x>\\n\", gBankLoadedPool.temporary.entries[0].id,\n                   gBankLoadedPool.temporary.entries[1].id, gBankLoadedPool.temporary.entries[0].size,\n                   gBankLoadedPool.temporary.entries[1].size, gBankLoadedPool.temporary.pool.size);\n\n    stubbed_printf(\"STAYSEQ \");\n    stubbed_printf(\"[%2x] <%5x / %5x>\\n\", gSeqLoadedPool.persistent.numEntries,\n                   gSeqLoadedPool.persistent.pool.cur - gSeqLoadedPool.persistent.pool.start,\n                   gSeqLoadedPool.persistent.pool.size);\n    for (i = 0; (u32) i < gSeqLoadedPool.persistent.numEntries; i++) {\n        stubbed_printf(\"%2x \", gSeqLoadedPool.persistent.entries[i].id);\n    }\n    stubbed_printf(\"\\n\");\n\n    stubbed_printf(\"STAYBNK \");\n    stubbed_printf(\"[%2x] <%5x / %5x>\\n\", gBankLoadedPool.persistent.numEntries,\n                   gBankLoadedPool.persistent.pool.cur - gBankLoadedPool.persistent.pool.start,\n                   gBankLoadedPool.persistent.pool.size);\n    for (i = 0; (u32) i < gBankLoadedPool.persistent.numEntries; i++) {\n        stubbed_printf(\"%2x \", gBankLoadedPool.persistent.entries[i].id);\n    }\n    stubbed_printf(\"\\n\\n\");\n\n    stubbed_printf(\"    0123456789ABCDEF0123456789ABCDEF01234567\\n\");\n    stubbed_printf(\"--------------------------------------------\\n\");\n\n    // gSeqLoadStatus/gBankLoadStatus, 4 entries at a time?\n    stubbed_printf(\"SEQ \");\n    for (i = 0; i < 40; i++) {\n        stubbed_printf(\"%1x\", 0);\n    }\n    stubbed_printf(\"\\n\");\n\n    stubbed_printf(\"BNK \");\n    for (i = 0; i < 40; i += 4) {\n        stubbed_printf(\"%1x\", 0);\n    }\n    stubbed_printf(\"\\n\");\n\n    stubbed_printf(\"FIXHEAP \");\n    stubbed_printf(\"%4x / %4x\\n\", 0, 0);\n    stubbed_printf(\"DRVHEAP \");\n    stubbed_printf(\"%5x / %5x\\n\", 0, 0);\n    stubbed_printf(\"DMACACHE  %4d Blocks\\n\", 0);\n    stubbed_printf(\"CHANNELS  %2d / MAX %3d \\n\", 0, 0);\n\n    stubbed_printf(\"TEMPOMAX  %d\\n\", gTempoInternalToExternal / TEMPO_SCALE);\n    stubbed_printf(\"TEMPO G0  %d\\n\", gSequencePlayers[SEQ_PLAYER_LEVEL].tempo / TEMPO_SCALE);\n    stubbed_printf(\"TEMPO G1  %d\\n\", gSequencePlayers[SEQ_PLAYER_ENV].tempo / TEMPO_SCALE);\n    stubbed_printf(\"TEMPO G2  %d\\n\", gSequencePlayers[SEQ_PLAYER_SFX].tempo / TEMPO_SCALE);\n    stubbed_printf(\"DEBUGFLAG  %8x\\n\", gAudioErrorFlags);\n}\n\nvoid unused_8031E568(void) {\n    stubbed_printf(\"COUNT %8d\\n\", gAudioFrameCount);\n}\n#endif\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\nconst char unusedErrorStr1[] = \"Error : Queue is not empty ( %x ) \\n\";\nconst char unusedErrorStr2[] = \"specchg error\\n\";\n#endif\n\n/**\n * Fade out a sequence player\n * Called from threads: thread5_game_loop\n */\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\nvoid audio_reset_session_eu(s32 presetId) {\n    OSMesg mesg;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    osRecvMesg(D_SH_80350FA8, &mesg, OS_MESG_NOBLOCK);\n    osSendMesg(D_SH_80350F88, (OSMesg) presetId, OS_MESG_NOBLOCK);\n    osRecvMesg(D_SH_80350FA8, &mesg, OS_MESG_BLOCK);\n    if ((s32) mesg != presetId) {\n        osRecvMesg(D_SH_80350FA8, &mesg, OS_MESG_BLOCK);\n    }\n\n#else\n    osRecvMesg(OSMesgQueues[3], &mesg, OS_MESG_NOBLOCK);\n    osSendMesg(OSMesgQueues[2], (OSMesg) presetId, OS_MESG_NOBLOCK);\n    osRecvMesg(OSMesgQueues[3], &mesg, OS_MESG_BLOCK);\n    if ((s32) mesg != presetId) {\n        osRecvMesg(OSMesgQueues[3], &mesg, OS_MESG_BLOCK);\n    }\n#endif\n}\n#endif\n\n#if defined(VERSION_JP) || defined(VERSION_US)\n/**\n * Called from threads: thread3_main, thread5_game_loop\n */\nstatic void seq_player_fade_to_zero_volume(s32 player, FadeT fadeDuration) {\n    struct SequencePlayer *seqPlayer = &gSequencePlayers[player];\n\n#ifndef VERSION_JP\n    // fadeDuration is never 0 in practice\n    if (fadeDuration == 0) {\n        fadeDuration++;\n    }\n#endif\n\n    seqPlayer->fadeVelocity = -(seqPlayer->fadeVolume / fadeDuration);\n    seqPlayer->state = SEQUENCE_PLAYER_STATE_FADE_OUT;\n    seqPlayer->fadeRemainingFrames = fadeDuration;\n}\n\n/**\n * Called from threads: thread4_sound, thread5_game_loop\n */\nstatic void func_8031D690(s32 player, FadeT fadeInTime) {\n    struct SequencePlayer *seqPlayer = &gSequencePlayers[player];\n\n    if (fadeInTime == 0 || seqPlayer->state == SEQUENCE_PLAYER_STATE_FADE_OUT) {\n        return;\n    }\n\n    seqPlayer->state = SEQUENCE_PLAYER_STATE_2;\n    seqPlayer->fadeRemainingFrames = fadeInTime;\n    seqPlayer->fadeVolume = 0.0f;\n    seqPlayer->fadeVelocity = 0.0f;\n}\n#endif\n\n/**\n * Called from threads: thread5_game_loop\n */\nstatic void seq_player_fade_to_percentage_of_volume(s32 player, FadeT fadeDuration, u8 percentage) {\n    struct SequencePlayer *seqPlayer = &gSequencePlayers[player];\n    f32 targetVolume;\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    if (seqPlayer->state == 2) {\n        return;\n    }\n#else\n    if (seqPlayer->state == SEQUENCE_PLAYER_STATE_FADE_OUT) {\n        return;\n    }\n#endif\n\n    targetVolume = (FLOAT_CAST(percentage) / EU_FLOAT(100.0)) * seqPlayer->fadeVolume;\n    seqPlayer->volume = seqPlayer->fadeVolume;\n\n    seqPlayer->fadeRemainingFrames = 0;\n    if (fadeDuration == 0) {\n        seqPlayer->fadeVolume = targetVolume;\n        return;\n    }\n    seqPlayer->fadeVelocity = (targetVolume - seqPlayer->fadeVolume) / fadeDuration;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    seqPlayer->state = 0;\n#else\n    seqPlayer->state = SEQUENCE_PLAYER_STATE_4;\n#endif\n\n    seqPlayer->fadeRemainingFrames = fadeDuration;\n}\n\n/**\n * Called from threads: thread3_main, thread4_sound, thread5_game_loop\n */\nstatic void seq_player_fade_to_normal_volume(s32 player, FadeT fadeDuration) {\n    struct SequencePlayer *seqPlayer = &gSequencePlayers[player];\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    if (seqPlayer->state == 2) {\n        return;\n    }\n#else\n    if (seqPlayer->state == SEQUENCE_PLAYER_STATE_FADE_OUT) {\n        return;\n    }\n#endif\n\n    seqPlayer->fadeRemainingFrames = 0;\n    if (fadeDuration == 0) {\n        seqPlayer->fadeVolume = seqPlayer->volume;\n        return;\n    }\n    seqPlayer->fadeVelocity = (seqPlayer->volume - seqPlayer->fadeVolume) / fadeDuration;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    seqPlayer->state = 0;\n#else\n    seqPlayer->state = SEQUENCE_PLAYER_STATE_2;\n#endif\n\n    seqPlayer->fadeRemainingFrames = fadeDuration;\n}\n\n/**\n * Called from threads: thread3_main, thread4_sound, thread5_game_loop\n */\nstatic void seq_player_fade_to_target_volume(s32 player, FadeT fadeDuration, u8 targetVolume) {\n    struct SequencePlayer *seqPlayer = &gSequencePlayers[player];\n\n#if defined(VERSION_JP) || defined(VERSION_US)\n    if (seqPlayer->state == SEQUENCE_PLAYER_STATE_FADE_OUT) {\n        return;\n    }\n#endif\n\n    seqPlayer->fadeRemainingFrames = 0;\n    if (fadeDuration == 0) {\n        seqPlayer->fadeVolume = (FLOAT_CAST(targetVolume) / EU_FLOAT(127.0));\n        return;\n    }\n\n    seqPlayer->fadeVelocity =\n        (((f32)(FLOAT_CAST(targetVolume) / EU_FLOAT(127.0)) - seqPlayer->fadeVolume)\n         / (f32) fadeDuration);\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    seqPlayer->state = 0;\n#else\n    seqPlayer->state = SEQUENCE_PLAYER_STATE_4;\n#endif\n\n    seqPlayer->fadeRemainingFrames = fadeDuration;\n}\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n#ifdef VERSION_EU\nextern void func_802ad7a0(void);\n#else\nextern void func_sh_802F64C8(void);\n#endif\n\n/**\n * Called from threads: thread5_game_loop\n */\nvoid maybe_tick_game_sound(void) {\n    if (sGameLoopTicked != 0) {\n        update_game_sound();\n        sGameLoopTicked = 0;\n    }\n#ifdef VERSION_EU\n    func_802ad7a0();\n#else\n    func_sh_802F64C8(); // moved in SH\n#endif\n}\n\nvoid func_eu_802e9bec(s32 player, s32 channel, s32 arg2) {\n    // EU verson of unused_803209D8\n    // chan->stopSomething2 = arg2?\n    func_802ad770(0x08000000 | (player & 0xff) << 16 | (channel & 0xff) << 8, (s8) arg2);\n}\n\n#else\n\n/**\n * Called from threads: thread4_sound\n */\nstruct SPTask *create_next_audio_frame_task(void) {\n    u32 samplesRemainingInAI;\n    s32 writtenCmds;\n    s32 index;\n    OSTask_t *task;\n    s32 oldDmaCount;\n    s32 flags;\n\n    gAudioFrameCount++;\n    if (gAudioLoadLock != AUDIO_LOCK_NOT_LOADING) {\n        stubbed_printf(\"DAC:Lost 1 Frame.\\n\");\n        return NULL;\n    }\n\n    gAudioTaskIndex ^= 1;\n    gCurrAiBufferIndex++;\n    gCurrAiBufferIndex %= NUMAIBUFFERS;\n    index = (gCurrAiBufferIndex - 2 + NUMAIBUFFERS) % NUMAIBUFFERS;\n    samplesRemainingInAI = osAiGetLength() / 4;\n\n    // Audio is triple buffered; the audio interface reads from two buffers\n    // while the third is being written by the RSP. More precisely, the\n    // lifecycle is:\n    // - this function computes an audio command list\n    // - wait for vblank\n    // - the command list is sent to the RSP (we could have sent it to the\n    //   RSP before the vblank, but that gives the RSP less time to finish)\n    // - wait for vblank\n    // - the RSP is now expected to be finished, and we can send its output\n    //   on to the AI\n    // Here we thus send to the AI the sound that was generated two frames ago.\n    if (gAiBufferLengths[index] != 0) {\n        osAiSetNextBuffer(gAiBuffers[index], gAiBufferLengths[index] * 4);\n    }\n\n    oldDmaCount = gCurrAudioFrameDmaCount;\n    // There has to be some sort of no-op if here, but it's not exactly clear\n    // how it should look... It's also very unclear why gCurrAudioFrameDmaQueue\n    // isn't read from here, despite gCurrAudioFrameDmaCount being reset.\n    if (oldDmaCount > AUDIO_FRAME_DMA_QUEUE_SIZE) {\n        stubbed_printf(\"DMA: Request queue over.( %d )\\n\", oldDmaCount);\n    }\n    gCurrAudioFrameDmaCount = 0;\n\n    gAudioTask = &gAudioTasks[gAudioTaskIndex];\n    gAudioCmd = gAudioCmdBuffers[gAudioTaskIndex];\n\n    index = gCurrAiBufferIndex;\n    gCurrAiBuffer = gAiBuffers[index];\n    gAiBufferLengths[index] =\n        ((gSamplesPerFrameTarget - samplesRemainingInAI + EXTRA_BUFFERED_AI_SAMPLES_TARGET) & ~0xf)\n        + SAMPLES_TO_OVERPRODUCE;\n    if (gAiBufferLengths[index] < gMinAiBufferLength) {\n        gAiBufferLengths[index] = gMinAiBufferLength;\n    }\n    if (gAiBufferLengths[index] > gSamplesPerFrameTarget + SAMPLES_TO_OVERPRODUCE) {\n        gAiBufferLengths[index] = gSamplesPerFrameTarget + SAMPLES_TO_OVERPRODUCE;\n    }\n\n    if (sGameLoopTicked != 0) {\n        update_game_sound();\n        sGameLoopTicked = 0;\n    }\n\n    // For the function to match we have to preserve some arbitrary variable\n    // across this function call.\n    flags = 0;\n    gAudioCmd = synthesis_execute(gAudioCmd, &writtenCmds, gCurrAiBuffer, gAiBufferLengths[index]);\n    gAudioRandom = ((gAudioRandom + gAudioFrameCount) * gAudioFrameCount);\n\n    index = gAudioTaskIndex;\n    gAudioTask->msgqueue = NULL;\n    gAudioTask->msg = NULL;\n\n    task = &gAudioTask->task.t;\n    task->type = M_AUDTASK;\n    task->flags = flags;\n    task->ucode_boot = rspF3DBootStart;\n    task->ucode_boot_size = (u8 *) rspF3DBootEnd - (u8 *) rspF3DBootStart;\n    task->ucode = rspAspMainStart;\n    task->ucode_size = 0x800; // (this size is ignored)\n    task->ucode_data = rspAspMainDataStart;\n    task->ucode_data_size = (rspAspMainDataEnd - rspAspMainDataStart) * sizeof(u64);\n    task->dram_stack = NULL;\n    task->dram_stack_size = 0;\n    task->output_buff = NULL;\n    task->output_buff_size = NULL;\n    task->data_ptr = gAudioCmdBuffers[index];\n    task->data_size = writtenCmds * sizeof(u64);\n\n// The audio task never yields, so having a yield buffer is pointless.\n// This wastefulness was fixed in US.\n#ifdef VERSION_JP\n    task->yield_data_ptr = (u64 *) gAudioSPTaskYieldBuffer;\n    task->yield_data_size = OS_YIELD_AUDIO_SIZE;\n#else\n    task->yield_data_ptr = NULL;\n    task->yield_data_size = 0;\n#endif\n\n    decrease_sample_dma_ttls();\n    return gAudioTask;\n}\n#endif\n\n/**\n * Called from threads: thread5_game_loop\n */\nvoid play_sound(s32 soundBits, f32 *pos) {\n    sSoundRequests[sSoundRequestCount].soundBits = soundBits;\n    sSoundRequests[sSoundRequestCount].position = pos;\n    sSoundRequestCount++;\n}\n\n/**\n * Called from threads: thread4_sound, thread5_game_loop (EU only)\n */\nstatic void process_sound_request(u32 bits, f32 *pos) {\n    u8 bank;\n    u8 soundIndex;\n    u8 counter = 0;\n    u8 soundId;\n    f32 dist;\n    const f32 one = 1.0f;\n\n    bank = (bits & SOUNDARGS_MASK_BANK) >> SOUNDARGS_SHIFT_BANK;\n    soundId = (bits & SOUNDARGS_MASK_SOUNDID) >> SOUNDARGS_SHIFT_SOUNDID;\n\n    if (soundId >= sNumSoundsPerBank[bank] || sSoundBankDisabled[bank]) {\n        return;\n    }\n\n    soundIndex = sSoundBanks[bank][0].next;\n    while (soundIndex != 0xff && soundIndex != 0) {\n        // If an existing sound from the same source exists in the bank, then we should either\n        // interrupt that sound and replace it with the new sound, or we should drop the new sound.\n        if (sSoundBanks[bank][soundIndex].x == pos) {\n            // If the existing sound has lower or equal priority, then we should replace it.\n            // Otherwise the new sound will be dropped.\n            if ((sSoundBanks[bank][soundIndex].soundBits & SOUNDARGS_MASK_PRIORITY)\n                <= (bits & SOUNDARGS_MASK_PRIORITY)) {\n\n                // If the existing sound is discrete or is a different continuous sound, then\n                // interrupt it and play the new sound instead.\n                // Otherwise the new sound is continuous and equals the existing sound, so we just\n                // need to update the sound's freshness.\n                if ((sSoundBanks[bank][soundIndex].soundBits & SOUND_DISCRETE) != 0\n                    || (bits & SOUNDARGS_MASK_SOUNDID)\n                           != (sSoundBanks[bank][soundIndex].soundBits & SOUNDARGS_MASK_SOUNDID)) {\n                    update_background_music_after_sound(bank, soundIndex);\n                    sSoundBanks[bank][soundIndex].soundBits = bits;\n                    // In practice, the starting status is always WAITING\n                    sSoundBanks[bank][soundIndex].soundStatus = bits & SOUNDARGS_MASK_STATUS;\n                }\n\n                // Reset freshness:\n                // - For discrete sounds, this gives the sound SOUND_MAX_FRESHNESS frames to play\n                //   before it gets deleted for being stale\n                // - For continuous sounds, this gives it another 2 frames before play_sound must\n                //   be called again to keep it playing\n                sSoundBanks[bank][soundIndex].freshness = SOUND_MAX_FRESHNESS;\n            }\n\n            // Prevent allocating a new node - if the existing sound had higher piority, then the\n            // new sound will be dropped\n            soundIndex = 0;\n        } else {\n            soundIndex = sSoundBanks[bank][soundIndex].next;\n        }\n        counter++;\n    }\n\n    if (counter == 0) {\n        sSoundMovingSpeed[bank] = 32;\n    }\n\n    // If free list has more than one element remaining\n    if (sSoundBanks[bank][sSoundBankFreeListFront[bank]].next != 0xff && soundIndex != 0) {\n        // Allocate from free list\n        soundIndex = sSoundBankFreeListFront[bank];\n\n        dist = sqrtf(pos[0] * pos[0] + pos[1] * pos[1] + pos[2] * pos[2]) * one;\n        sSoundBanks[bank][soundIndex].x = &pos[0];\n        sSoundBanks[bank][soundIndex].y = &pos[1];\n        sSoundBanks[bank][soundIndex].z = &pos[2];\n        sSoundBanks[bank][soundIndex].distance = dist;\n        sSoundBanks[bank][soundIndex].soundBits = bits;\n        // In practice, the starting status is always WAITING\n        sSoundBanks[bank][soundIndex].soundStatus = bits & SOUNDARGS_MASK_STATUS;\n        sSoundBanks[bank][soundIndex].freshness = SOUND_MAX_FRESHNESS;\n\n        // Append to end of used list and pop from front of free list\n        sSoundBanks[bank][soundIndex].prev = sSoundBankUsedListBack[bank];\n        sSoundBanks[bank][sSoundBankUsedListBack[bank]].next = sSoundBankFreeListFront[bank];\n        sSoundBankUsedListBack[bank] = sSoundBankFreeListFront[bank];\n        sSoundBankFreeListFront[bank] = sSoundBanks[bank][sSoundBankFreeListFront[bank]].next;\n        sSoundBanks[bank][sSoundBankFreeListFront[bank]].prev = 0xff;\n        sSoundBanks[bank][soundIndex].next = 0xff;\n    }\n}\n\n/**\n * Processes all sound requests\n *\n * Called from threads: thread4_sound, thread5_game_loop (EU only)\n */\nstatic void process_all_sound_requests(void) {\n    struct Sound *sound;\n\n    while (sSoundRequestCount != sNumProcessedSoundRequests) {\n        sound = &sSoundRequests[sNumProcessedSoundRequests];\n        process_sound_request(sound->soundBits, sound->position);\n        sNumProcessedSoundRequests++;\n    }\n}\n\n/**\n * Called from threads: thread4_sound, thread5_game_loop (EU only)\n */\nstatic void delete_sound_from_bank(u8 bank, u8 soundIndex) {\n    if (sSoundBankUsedListBack[bank] == soundIndex) {\n        // Remove from end of used list\n        sSoundBankUsedListBack[bank] = sSoundBanks[bank][soundIndex].prev;\n    } else {\n        // Set sound.next.prev to sound.prev\n        sSoundBanks[bank][sSoundBanks[bank][soundIndex].next].prev = sSoundBanks[bank][soundIndex].prev;\n    }\n\n    // Set sound.prev.next to sound.next\n    sSoundBanks[bank][sSoundBanks[bank][soundIndex].prev].next = sSoundBanks[bank][soundIndex].next;\n\n    // Push to front of free list\n    sSoundBanks[bank][soundIndex].next = sSoundBankFreeListFront[bank];\n    sSoundBanks[bank][soundIndex].prev = 0xff;\n    sSoundBanks[bank][sSoundBankFreeListFront[bank]].prev = soundIndex;\n    sSoundBankFreeListFront[bank] = soundIndex;\n}\n\n/**\n * Called from threads: thread3_main, thread4_sound, thread5_game_loop\n */\nstatic void update_background_music_after_sound(u8 bank, u8 soundIndex) {\n    if (sSoundBanks[bank][soundIndex].soundBits & SOUND_LOWER_BACKGROUND_MUSIC) {\n        sSoundBanksThatLowerBackgroundMusic &= (1 << bank) ^ 0xffff;\n        begin_background_music_fade(50);\n    }\n}\n\n/**\n * Called from threads: thread4_sound, thread5_game_loop (EU only)\n */\nstatic void select_current_sounds(u8 bank) {\n    u32 isDiscreteAndStatus;\n    u8 latestSoundIndex;\n    u8 i;\n    u8 j;\n    u8 soundIndex;\n    u32 liveSoundPriorities[16] = { 0x10000000, 0x10000000, 0x10000000, 0x10000000,\n                                    0x10000000, 0x10000000, 0x10000000, 0x10000000,\n                                    0x10000000, 0x10000000, 0x10000000, 0x10000000,\n                                    0x10000000, 0x10000000, 0x10000000, 0x10000000 };\n    u8 liveSoundIndices[16] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n                                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };\n    u8 liveSoundStatuses[16] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n                                 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };\n    u8 numSoundsInBank = 0;\n    u8 requestedPriority;\n\n    //\n    // Delete stale sounds and prioritize remaining sounds into the liveSound arrays\n    //\n    soundIndex = sSoundBanks[bank][0].next;\n    while (soundIndex != 0xff) {\n        latestSoundIndex = soundIndex;\n\n        // If a discrete sound goes 10 frames without being played (because it is too low\n        // priority), then mark it for deletion\n        if ((sSoundBanks[bank][soundIndex].soundBits & (SOUND_DISCRETE | SOUNDARGS_MASK_STATUS))\n            == (SOUND_DISCRETE | SOUND_STATUS_WAITING)) {\n            if (sSoundBanks[bank][soundIndex].freshness-- == 0) {\n                sSoundBanks[bank][soundIndex].soundBits = NO_SOUND;\n            }\n        }\n        // If a continuous sound goes 2 frames without play_sound being called, then mark it for\n        // deletion\n        else if ((sSoundBanks[bank][soundIndex].soundBits & SOUND_DISCRETE) == 0) {\n            if (sSoundBanks[bank][soundIndex].freshness-- == SOUND_MAX_FRESHNESS - 2) {\n                update_background_music_after_sound(bank, soundIndex);\n                sSoundBanks[bank][soundIndex].soundBits = NO_SOUND;\n            }\n        }\n\n        // If a sound was marked for deletion and hasn't started playing yet, delete it now\n        if (sSoundBanks[bank][soundIndex].soundBits == NO_SOUND\n            && sSoundBanks[bank][soundIndex].soundStatus == SOUND_STATUS_WAITING) {\n            // Since the current sound will be deleted, the next iteration should process\n            // sound.prev.next\n            latestSoundIndex = sSoundBanks[bank][soundIndex].prev;\n            sSoundBanks[bank][soundIndex].soundStatus = SOUND_STATUS_STOPPED;\n            delete_sound_from_bank(bank, soundIndex);\n        }\n\n        // If the current sound was not just deleted, consider it as a candidate for the currently\n        // playing sound\n        if (sSoundBanks[bank][soundIndex].soundStatus != SOUND_STATUS_STOPPED\n            && soundIndex == latestSoundIndex) {\n\n            // Recompute distance each frame since the sound's position may have changed\n            sSoundBanks[bank][soundIndex].distance =\n                sqrtf((*sSoundBanks[bank][soundIndex].x * *sSoundBanks[bank][soundIndex].x)\n                      + (*sSoundBanks[bank][soundIndex].y * *sSoundBanks[bank][soundIndex].y)\n                      + (*sSoundBanks[bank][soundIndex].z * *sSoundBanks[bank][soundIndex].z))\n                * 1;\n\n            requestedPriority = (sSoundBanks[bank][soundIndex].soundBits & SOUNDARGS_MASK_PRIORITY)\n                                >> SOUNDARGS_SHIFT_PRIORITY;\n\n            // Recompute priority, possibly based on the sound's source position relative to the\n            // camera.\n            // (Note that the sound's priority is the opposite of requestedPriority; lower is\n            // more important)\n            if (sSoundBanks[bank][soundIndex].soundBits & SOUND_NO_PRIORITY_LOSS) {\n                sSoundBanks[bank][soundIndex].priority = 0x4c * (0xff - requestedPriority);\n            } else if (*sSoundBanks[bank][soundIndex].z > 0.0f) {\n                sSoundBanks[bank][soundIndex].priority =\n                    (u32) sSoundBanks[bank][soundIndex].distance\n                    + (u32)(*sSoundBanks[bank][soundIndex].z / US_FLOAT(6.0))\n                    + 0x4c * (0xff - requestedPriority);\n            } else {\n                sSoundBanks[bank][soundIndex].priority =\n                    (u32) sSoundBanks[bank][soundIndex].distance + 0x4c * (0xff - requestedPriority);\n            }\n\n            // Insert the sound into the liveSound arrays, keeping the arrays sorted by priority.\n            // If more than sMaxChannelsForSoundBank[bank] sounds are live, then the\n            // sound with lowest priority will be removed from the arrays.\n            // In practice sMaxChannelsForSoundBank is always 1, so this code is overly general.\n            for (i = 0; i < sMaxChannelsForSoundBank[bank]; i++) {\n                // If the correct position is found\n                if (liveSoundPriorities[i] >= sSoundBanks[bank][soundIndex].priority) {\n                    // Shift remaining sounds to the right\n                    for (j = sMaxChannelsForSoundBank[bank] - 1; j > i; j--) {\n                        liveSoundPriorities[j] = liveSoundPriorities[j - 1];\n                        liveSoundIndices[j] = liveSoundIndices[j - 1];\n                        liveSoundStatuses[j] = liveSoundStatuses[j - 1];\n                    }\n                    // Insert the sound at index i\n                    liveSoundPriorities[i] = sSoundBanks[bank][soundIndex].priority;\n                    liveSoundIndices[i] = soundIndex;\n                    liveSoundStatuses[i] = sSoundBanks[bank][soundIndex].soundStatus; // unused\n                    // Break\n                    i = sMaxChannelsForSoundBank[bank];\n                }\n            }\n\n            numSoundsInBank++;\n        }\n\n        soundIndex = sSoundBanks[bank][latestSoundIndex].next;\n    }\n\n    sNumSoundsInBank[bank] = numSoundsInBank;\n    sUsedChannelsForSoundBank[bank] = sMaxChannelsForSoundBank[bank];\n\n    //\n    // Remove any sounds from liveSoundIndices that are already playing.\n    // Stop any currently playing sounds that are not in liveSoundIndices.\n    //\n    for (i = 0; i < sUsedChannelsForSoundBank[bank]; i++) {\n        // Check if sCurrentSound[bank][i] is present in the liveSound arrays.\n        for (soundIndex = 0; soundIndex < sUsedChannelsForSoundBank[bank]; soundIndex++) {\n            if (liveSoundIndices[soundIndex] != 0xff\n                && sCurrentSound[bank][i] == liveSoundIndices[soundIndex]) {\n                // If found, remove it from liveSoundIndices\n                liveSoundIndices[soundIndex] = 0xff;\n                soundIndex = 0xfe; // Break. Afterward soundIndex will be 0xff\n            }\n        }\n\n        // If it is not present in the liveSound arrays, then stop playing it\n        if (soundIndex != 0xff) {\n            if (sCurrentSound[bank][i] != 0xff) {\n                // If the sound was marked for deletion and is playing, delete it\n                if (sSoundBanks[bank][sCurrentSound[bank][i]].soundBits == NO_SOUND) {\n                    if (sSoundBanks[bank][sCurrentSound[bank][i]].soundStatus == SOUND_STATUS_PLAYING) {\n                        sSoundBanks[bank][sCurrentSound[bank][i]].soundStatus = SOUND_STATUS_STOPPED;\n                        delete_sound_from_bank(bank, sCurrentSound[bank][i]);\n                    }\n                }\n\n                // If the sound is discrete and is playing, then delete it\n                isDiscreteAndStatus = sSoundBanks[bank][sCurrentSound[bank][i]].soundBits\n                                      & (SOUND_DISCRETE | SOUNDARGS_MASK_STATUS);\n                if (isDiscreteAndStatus >= (SOUND_DISCRETE | SOUND_STATUS_PLAYING)\n                    && sSoundBanks[bank][sCurrentSound[bank][i]].soundStatus != SOUND_STATUS_STOPPED) {\n//! @bug On JP, if a discrete sound that lowers the background music is\n//  interrupted in this way, it will keep the background music low afterward.\n//  There are only a few of these sounds, and it probably isn't possible to do\n//  it in practice without using a time stop glitch like triple star spawn.\n#ifndef VERSION_JP\n                    update_background_music_after_sound(bank, sCurrentSound[bank][i]);\n#endif\n\n                    sSoundBanks[bank][sCurrentSound[bank][i]].soundBits = NO_SOUND;\n                    sSoundBanks[bank][sCurrentSound[bank][i]].soundStatus = SOUND_STATUS_STOPPED;\n                    delete_sound_from_bank(bank, sCurrentSound[bank][i]);\n                }\n                // If the sound is continuous and is playing, then stop playing it but don't delete\n                // it. (A continuous sound shouldn't be deleted until it stops being requested)\n                else {\n                    if (isDiscreteAndStatus == SOUND_STATUS_PLAYING\n                        && sSoundBanks[bank][sCurrentSound[bank][i]].soundStatus\n                               != SOUND_STATUS_STOPPED) {\n                        sSoundBanks[bank][sCurrentSound[bank][i]].soundStatus = SOUND_STATUS_WAITING;\n                    }\n                }\n            }\n            sCurrentSound[bank][i] = 0xff;\n        }\n    }\n\n    //\n    // Start playing the remaining sounds from liveSoundIndices.\n    //\n    for (soundIndex = 0; soundIndex < sUsedChannelsForSoundBank[bank]; soundIndex++) {\n        if (liveSoundIndices[soundIndex] != 0xff) {\n            for (i = 0; i < sUsedChannelsForSoundBank[bank]; i++) {\n                if (sCurrentSound[bank][i] == 0xff) {\n                    sCurrentSound[bank][i] = liveSoundIndices[soundIndex];\n\n                    // Set (soundBits & status) to WAITING (soundStatus will be updated\n                    // shortly after in update_game_sound)\n                    sSoundBanks[bank][liveSoundIndices[soundIndex]].soundBits =\n                        (sSoundBanks[bank][liveSoundIndices[soundIndex]].soundBits\n                         & ~SOUNDARGS_MASK_STATUS)\n                        + SOUND_STATUS_WAITING;\n\n                    liveSoundIndices[i] = 0xff; // doesn't do anything\n                    i = 0xfe;                   // break\n                }\n            }\n        }\n    }\n}\n\n/**\n * Given x and z coordinates, return the pan. This is a value nominally between\n * 0 and 1 that represents the audio direction.\n *\n * Pan:\n * 0.0 - fully left\n * 0.5 - center pan\n * 1.0 - fully right\n *\n * Called from threads: thread4_sound, thread5_game_loop (EU only)\n */\nstatic f32 get_sound_pan(f32 x, f32 z) {\n    f32 absX;\n    f32 absZ;\n    f32 pan;\n\n    absX = (x < 0 ? -x : x);\n    if (absX > AUDIO_MAX_DISTANCE) {\n        absX = AUDIO_MAX_DISTANCE;\n    }\n\n    absZ = (z < 0 ? -z : z);\n    if (absZ > AUDIO_MAX_DISTANCE) {\n        absZ = AUDIO_MAX_DISTANCE;\n    }\n\n    // There are 4 panning equations (12-hr clock used for angles)\n    // 1. (0,0) fully-centered pan\n    // 2. far right pan: between 1:30 and 4:30\n    // 3. far left pan: between 7:30 and 10:30\n    // 4. center pan: between 4:30 and 7:30 or between 10:30 and 1:30\n    if (x == US_FLOAT(0.0) && z == US_FLOAT(0.0)) {\n        // x and z being 0 results in a center pan\n        pan = US_FLOAT(0.5);\n    } else if (x >= US_FLOAT(0.0) && absX >= absZ) {\n        // far right pan\n        pan = US_FLOAT(1.0) - (2 * AUDIO_MAX_DISTANCE - absX) / (US_FLOAT(3.0) * (2 * AUDIO_MAX_DISTANCE - absZ));\n    } else if (x < 0 && absX > absZ) {\n        // far left pan\n        pan = (2 * AUDIO_MAX_DISTANCE - absX) / (US_FLOAT(3.0) * (2 * AUDIO_MAX_DISTANCE - absZ));\n    } else {\n        // center pan\n        //! @bug (JP PU sound glitch) If |x|, |z| > AUDIO_MAX_DISTANCE, we'll\n        // end up in this case, and pan may be set to something outside of [0,1]\n        // since x is not clamped. On JP, this can lead to an out-of-bounds\n        // float read in note_set_vel_pan_reverb when x is highly negative,\n        // causing console crashes when that float is a nan or denormal.\n        pan = 0.5 + x / (US_FLOAT(6.0) * absZ);\n    }\n\n    return pan;\n}\n\n/**\n * Called from threads: thread4_sound, thread5_game_loop (EU only)\n */\nstatic f32 get_sound_volume(u8 bank, u8 soundIndex, f32 volumeRange) {\n    f32 maxSoundDistance;\n    f32 intensity;\n#ifndef VERSION_JP\n    s32 div = bank < 3 ? 2 : 3;\n#endif\n\n    if (!(sSoundBanks[bank][soundIndex].soundBits & SOUND_NO_VOLUME_LOSS)) {\n#ifdef VERSION_JP\n        // Intensity linearly lowers from 1 at the camera to 0 at maxSoundDistance\n        maxSoundDistance = sLevelAcousticReaches[gCurrLevelNum];\n        if (maxSoundDistance < sSoundBanks[bank][soundIndex].distance) {\n            intensity = 0.0f;\n        } else {\n            intensity = 1.0 - sSoundBanks[bank][soundIndex].distance / maxSoundDistance;\n        }\n#else\n        // Intensity linearly lowers from 1 at the camera to 1 - volumeRange at maxSoundDistance,\n        // then it goes from 1 - volumeRange at maxSoundDistance to 0 at AUDIO_MAX_DISTANCE\n        if (sSoundBanks[bank][soundIndex].distance > AUDIO_MAX_DISTANCE) {\n            intensity = 0.0f;\n        } else {\n            maxSoundDistance = sLevelAcousticReaches[gCurrLevelNum] / div;\n            if (maxSoundDistance < sSoundBanks[bank][soundIndex].distance) {\n                intensity = ((AUDIO_MAX_DISTANCE - sSoundBanks[bank][soundIndex].distance)\n                             / (AUDIO_MAX_DISTANCE - maxSoundDistance))\n                            * (1.0f - volumeRange);\n            } else {\n                intensity =\n                    1.0f - sSoundBanks[bank][soundIndex].distance / maxSoundDistance * volumeRange;\n            }\n        }\n#endif\n\n        if (sSoundBanks[bank][soundIndex].soundBits & SOUND_VIBRATO) {\n#ifdef VERSION_JP\n            //! @bug Intensity is 0 when the sound is far away. Due to the subtraction below, it is possible to end up with a negative intensity.\n            // When it is, objects with a volumeRange of 1 can still occasionally be lightly heard.\n            if (intensity != 0.0)\n#else\n            if (intensity >= 0.08f)\n#endif\n            {\n                intensity -= (f32)(gAudioRandom & 0xf) / US_FLOAT(192.0);\n            }\n        }\n    } else {\n        intensity = 1.0f;\n    }\n\n    // Rise quadratically from 1 - volumeRange to 1\n    return volumeRange * intensity * intensity + 1.0f - volumeRange;\n}\n\n/**\n * Called from threads: thread4_sound, thread5_game_loop (EU only)\n */\nstatic f32 get_sound_freq_scale(u8 bank, u8 item) {\n    f32 amount;\n\n    if (!(sSoundBanks[bank][item].soundBits & SOUND_CONSTANT_FREQUENCY)) {\n        amount = sSoundBanks[bank][item].distance / AUDIO_MAX_DISTANCE;\n        if (sSoundBanks[bank][item].soundBits & SOUND_VIBRATO) {\n            amount += (f32)(gAudioRandom & 0xff) / US_FLOAT(64.0);\n        }\n    } else {\n        amount = 0.0f;\n    }\n\n    // Goes from 1 at the camera to 1 + 1/15 at AUDIO_MAX_DISTANCE (and continues rising\n    // farther than that)\n    return amount / US_FLOAT(15.0) + US_FLOAT(1.0);\n}\n\n/**\n * Called from threads: thread4_sound, thread5_game_loop (EU only)\n */\nstatic u8 get_sound_reverb(UNUSED u8 bank, UNUSED u8 soundIndex, u8 channelIndex) {\n    u8 area;\n    u8 level;\n    u8 reverb;\n\n#ifndef VERSION_JP\n    // Disable level reverb if NO_ECHO is set\n    if (sSoundBanks[bank][soundIndex].soundBits & SOUND_NO_ECHO) {\n        level = 0;\n        area = 0;\n    } else {\n#endif\n        level = (gCurrLevelNum > LEVEL_MAX ? LEVEL_MAX : gCurrLevelNum);\n        area = gCurrAreaIndex - 1;\n        if (area > 2) {\n            area = 2;\n        }\n#ifndef VERSION_JP\n    }\n#endif\n\n    // reverb = reverb adjustment + level reverb + a volume-dependent value\n    // The volume-dependent value is 0 when volume is at maximum, and raises to\n    // LOW_VOLUME_REVERB when the volume is 0\n    reverb = (u8)((u8) gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->soundScriptIO[5]\n                  + sLevelAreaReverbs[level][area]\n                  + (US_FLOAT(1.0) - gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->volume)\n                        * LOW_VOLUME_REVERB);\n\n    if (reverb > 0x7f) {\n        reverb = 0x7f;\n    }\n    return reverb;\n}\n\nstatic void noop_8031EEC8(void) {\n}\n\n/**\n * Called from the game loop thread to inform the audio thread that a new game\n * frame has started.\n *\n * Called from threads: thread5_game_loop\n */\nvoid audio_signal_game_loop_tick(void) {\n    sGameLoopTicked = 1;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    maybe_tick_game_sound();\n#endif\n    noop_8031EEC8();\n}\n\n/**\n * Called from threads: thread4_sound, thread5_game_loop (EU and SH only)\n */\nstatic void update_game_sound(void) {\n    u8 soundStatus;\n    u8 i;\n    u8 soundId;\n    u8 bank;\n    u8 channelIndex = 0;\n    u8 soundIndex;\n#if defined(VERSION_JP) || defined(VERSION_US)\n    f32 value;\n#endif\n\n    process_all_sound_requests();\n    process_level_music_dynamics();\n\n    if (gSequencePlayers[SEQ_PLAYER_SFX].channels[0] == &gSequenceChannelNone) {\n        return;\n    }\n\n    for (bank = 0; bank < SOUND_BANK_COUNT; bank++) {\n        select_current_sounds(bank);\n\n        for (i = 0; i < MAX_CHANNELS_PER_SOUND_BANK; i++) {\n            soundIndex = sCurrentSound[bank][i];\n\n            if (soundIndex < 0xff\n                && sSoundBanks[bank][soundIndex].soundStatus != SOUND_STATUS_STOPPED) {\n                soundStatus = sSoundBanks[bank][soundIndex].soundBits & SOUNDARGS_MASK_STATUS;\n                soundId = (sSoundBanks[bank][soundIndex].soundBits >> SOUNDARGS_SHIFT_SOUNDID);\n\n                sSoundBanks[bank][soundIndex].soundStatus = soundStatus;\n\n                if (soundStatus == SOUND_STATUS_WAITING) {\n                    if (sSoundBanks[bank][soundIndex].soundBits & SOUND_LOWER_BACKGROUND_MUSIC) {\n                        sSoundBanksThatLowerBackgroundMusic |= 1 << bank;\n                        begin_background_music_fade(50);\n                    }\n\n                    // Set sound status to PLAYING\n                    sSoundBanks[bank][soundIndex].soundBits++;\n                    sSoundBanks[bank][soundIndex].soundStatus = SOUND_STATUS_PLAYING;\n\n                    // Begin playing the sound\n                    gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->soundScriptIO[4] = soundId;\n                    gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->soundScriptIO[0] = 1;\n\n                    switch (bank) {\n                        case SOUND_BANK_MOVING:\n                            if (!(sSoundBanks[bank][soundIndex].soundBits & SOUND_CONSTANT_FREQUENCY)) {\n                                if (sSoundMovingSpeed[bank] > 8) {\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                                    func_802ad728(\n                                        0x02020000 | ((channelIndex & 0xff) << 8),\n                                        get_sound_volume(bank, soundIndex, VOLUME_RANGE_UNK1));\n#else\n                                    value = get_sound_volume(bank, soundIndex, VOLUME_RANGE_UNK1);\n                                    gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->volume =\n                                        value;\n#endif\n                                } else {\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                                    func_802ad728(0x02020000 | ((channelIndex & 0xff) << 8),\n                                                  get_sound_volume(bank, soundIndex, VOLUME_RANGE_UNK1)\n                                                      * ((sSoundMovingSpeed[bank] + 8.0f) / 16));\n#else\n                                    value = get_sound_volume(bank, soundIndex, VOLUME_RANGE_UNK1);\n                                    gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->volume =\n                                        (sSoundMovingSpeed[bank] + 8.0f) / 16 * value;\n#endif\n                                }\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                                func_802ad770(0x03020000 | ((channelIndex & 0xff) << 8),\n                                              get_sound_pan(*sSoundBanks[bank][soundIndex].x,\n                                                            *sSoundBanks[bank][soundIndex].z));\n#else\n                                gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->pan =\n                                    get_sound_pan(*sSoundBanks[bank][soundIndex].x,\n                                                  *sSoundBanks[bank][soundIndex].z);\n#endif\n\n                                if ((sSoundBanks[bank][soundIndex].soundBits & SOUNDARGS_MASK_SOUNDID)\n                                    == (SOUND_MOVING_FLYING & SOUNDARGS_MASK_SOUNDID)) {\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                                    func_802ad728(\n                                        0x04020000 | ((channelIndex & 0xff) << 8),\n                                        get_sound_freq_scale(bank, soundIndex)\n                                            + ((f32) sSoundMovingSpeed[bank] / US_FLOAT(80.0)));\n#else\n                                    value = get_sound_freq_scale(bank, soundIndex);\n                                    gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->freqScale =\n                                        ((f32) sSoundMovingSpeed[bank] / US_FLOAT(80.0)) + value;\n#endif\n                                } else {\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                                    func_802ad728(\n                                        0x04020000 | ((channelIndex & 0xff) << 8),\n                                        get_sound_freq_scale(bank, soundIndex)\n                                            + ((f32) sSoundMovingSpeed[bank] / US_FLOAT(400.0)));\n#else\n                                    value = get_sound_freq_scale(bank, soundIndex);\n                                    gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->freqScale =\n                                        ((f32) sSoundMovingSpeed[bank] / US_FLOAT(400.0)) + value;\n#endif\n                                }\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                                func_802ad770(0x05020000 | ((channelIndex & 0xff) << 8),\n                                              get_sound_reverb(bank, soundIndex, channelIndex));\n#else\n                                gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->reverbVol =\n                                    get_sound_reverb(bank, soundIndex, channelIndex);\n#endif\n\n                                break;\n                            }\n                        // fallthrough\n                        case SOUND_BANK_MENU:\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                            func_802ad728(0x02020000 | ((channelIndex & 0xff) << 8), 1);\n                            func_802ad770(0x03020000 | ((channelIndex & 0xff) << 8), 64);\n                            func_802ad728(0x04020000 | ((channelIndex & 0xff) << 8),\n                                          get_sound_freq_scale(bank, soundIndex));\n#else\n                            gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->volume = 1.0f;\n                            gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->pan = 0.5f;\n                            gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->freqScale = 1.0f;\n#endif\n                            break;\n                        case SOUND_BANK_ACTION:\n                        case SOUND_BANK_VOICE:\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                            func_802ad770(0x05020000 | ((channelIndex & 0xff) << 8),\n                                          get_sound_reverb(bank, soundIndex, channelIndex));\n                            func_802ad728(0x02020000 | ((channelIndex & 0xff) << 8),\n                                          get_sound_volume(bank, soundIndex, VOLUME_RANGE_UNK1));\n                            func_802ad770(0x03020000 | ((channelIndex & 0xff) << 8),\n                                          get_sound_pan(*sSoundBanks[bank][soundIndex].x,\n                                                        *sSoundBanks[bank][soundIndex].z)\n                                                  * 127.0f\n                                              + 0.5f);\n                            func_802ad728(0x04020000 | ((channelIndex & 0xff) << 8),\n                                          get_sound_freq_scale(bank, soundIndex));\n#else\n                            gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->volume =\n                                get_sound_volume(bank, soundIndex, VOLUME_RANGE_UNK1);\n                            gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->pan =\n                                get_sound_pan(*sSoundBanks[bank][soundIndex].x,\n                                              *sSoundBanks[bank][soundIndex].z);\n                            gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->freqScale =\n                                get_sound_freq_scale(bank, soundIndex);\n                            gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->reverbVol =\n                                get_sound_reverb(bank, soundIndex, channelIndex);\n#endif\n                            break;\n                        case SOUND_BANK_GENERAL:\n                        case SOUND_BANK_ENV:\n                        case SOUND_BANK_OBJ:\n                        case SOUND_BANK_AIR:\n                        case SOUND_BANK_GENERAL2:\n                        case SOUND_BANK_OBJ2:\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                            func_802ad770(0x05020000 | ((channelIndex & 0xff) << 8),\n                                          get_sound_reverb(bank, soundIndex, channelIndex));\n                            func_802ad728(0x02020000 | ((channelIndex & 0xff) << 8),\n                                          get_sound_volume(bank, soundIndex, VOLUME_RANGE_UNK2));\n                            func_802ad770(0x03020000 | ((channelIndex & 0xff) << 8),\n                                          get_sound_pan(*sSoundBanks[bank][soundIndex].x,\n                                                        *sSoundBanks[bank][soundIndex].z)\n                                                  * 127.0f\n                                              + 0.5f);\n                            func_802ad728(0x04020000 | ((channelIndex & 0xff) << 8),\n                                          get_sound_freq_scale(bank, soundIndex));\n#else\n                            gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->reverbVol =\n                                get_sound_reverb(bank, soundIndex, channelIndex);\n                            gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->volume =\n                                get_sound_volume(bank, soundIndex, VOLUME_RANGE_UNK2);\n                            gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->pan =\n                                get_sound_pan(*sSoundBanks[bank][soundIndex].x,\n                                              *sSoundBanks[bank][soundIndex].z);\n                            gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->freqScale =\n                                get_sound_freq_scale(bank, soundIndex);\n#endif\n                            break;\n                    }\n                }\n#ifdef VERSION_JP\n                // If the sound was marked for deletion (bits set to NO_SOUND), then stop playing it\n                // and delete it\n                // @bug (JP double red coin sound) If the sound finished within the same frame as\n                // being marked for deletion, the signal to stop playing will be interpreted as a\n                // signal to *start* playing, as .main_loop_023589 in 00_sound_player does not check\n                // for soundScriptIO[0] being zero. This happens most commonly for red coin sounds\n                // whose sound spawners deactivate 30 frames after the sound starts to play, while\n                // the sound itself runs for 1.20 seconds. With enough lag these may coincide.\n                // Fixed on US by checking that layer0->finished is FALSE.\n                else if (soundStatus == SOUND_STATUS_STOPPED) {\n                    update_background_music_after_sound(bank, soundIndex);\n                    gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->soundScriptIO[0] = 0;\n                    delete_sound_from_bank(bank, soundIndex);\n                }\n#else\n                else if (gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->layers[0] == NULL) {\n                    update_background_music_after_sound(bank, soundIndex);\n                    sSoundBanks[bank][soundIndex].soundStatus = SOUND_STATUS_STOPPED;\n                    delete_sound_from_bank(bank, soundIndex);\n                } else if (soundStatus == SOUND_STATUS_STOPPED\n                           && gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]\n                                      ->layers[0]->finished == FALSE) {\n                    update_background_music_after_sound(bank, soundIndex);\n                    gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->soundScriptIO[0] = 0;\n                    delete_sound_from_bank(bank, soundIndex);\n                }\n#endif\n                // If sound has finished playing, then delete it\n                // @bug (JP sound glitch) On JP, ...->layers[0] has not been checked for null,\n                // so this access can crash if an earlier layer allocation failed due to too\n                // many sounds playing at once. This crash is comparatively common; RTA\n                // speedrunners even have a setup for avoiding it within the SSL pyramid:\n                // https://www.youtube.com/watch?v=QetyTgbQxcw\n                else if (gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->layers[0]->enabled\n                         == FALSE) {\n                    update_background_music_after_sound(bank, soundIndex);\n                    sSoundBanks[bank][soundIndex].soundStatus = SOUND_STATUS_STOPPED;\n                    delete_sound_from_bank(bank, soundIndex);\n                } else {\n                    // Exactly the same code as before. Unfortunately we can't\n                    // make a macro out of this, because then everything ends up\n                    // on the same line after preprocessing, and the compiler,\n                    // somehow caring about line numbers, makes it not match (it\n                    // computes function arguments in the wrong order).\n                    switch (bank) {\n                        case SOUND_BANK_MOVING:\n                            if (!(sSoundBanks[bank][soundIndex].soundBits & SOUND_CONSTANT_FREQUENCY)) {\n                                if (sSoundMovingSpeed[bank] > 8) {\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                                    func_802ad728(\n                                        0x02020000 | ((channelIndex & 0xff) << 8),\n                                        get_sound_volume(bank, soundIndex, VOLUME_RANGE_UNK1));\n#else\n                                    value = get_sound_volume(bank, soundIndex, VOLUME_RANGE_UNK1);\n                                    gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->volume =\n                                        value;\n#endif\n                                } else {\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                                    func_802ad728(0x02020000 | ((channelIndex & 0xff) << 8),\n                                                  get_sound_volume(bank, soundIndex, VOLUME_RANGE_UNK1)\n                                                      * ((sSoundMovingSpeed[bank] + 8.0f) / 16));\n#else\n                                    value = get_sound_volume(bank, soundIndex, VOLUME_RANGE_UNK1);\n                                    gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->volume =\n                                        (sSoundMovingSpeed[bank] + 8.0f) / 16 * value;\n#endif\n                                }\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                                func_802ad770(0x03020000 | ((channelIndex & 0xff) << 8),\n                                              get_sound_pan(*sSoundBanks[bank][soundIndex].x,\n                                                            *sSoundBanks[bank][soundIndex].z));\n#else\n                                gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->pan =\n                                    get_sound_pan(*sSoundBanks[bank][soundIndex].x,\n                                                  *sSoundBanks[bank][soundIndex].z);\n#endif\n\n                                if ((sSoundBanks[bank][soundIndex].soundBits & SOUNDARGS_MASK_SOUNDID)\n                                    == (SOUND_MOVING_FLYING & SOUNDARGS_MASK_SOUNDID)) {\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                                    func_802ad728(\n                                        0x04020000 | ((channelIndex & 0xff) << 8),\n                                        get_sound_freq_scale(bank, soundIndex)\n                                            + ((f32) sSoundMovingSpeed[bank] / US_FLOAT(80.0)));\n#else\n                                    value = get_sound_freq_scale(bank, soundIndex);\n                                    gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->freqScale =\n                                        ((f32) sSoundMovingSpeed[bank] / US_FLOAT(80.0)) + value;\n#endif\n                                } else {\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                                    func_802ad728(\n                                        0x04020000 | ((channelIndex & 0xff) << 8),\n                                        get_sound_freq_scale(bank, soundIndex)\n                                            + ((f32) sSoundMovingSpeed[bank] / US_FLOAT(400.0)));\n#else\n                                    value = get_sound_freq_scale(bank, soundIndex);\n                                    gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->freqScale =\n                                        ((f32) sSoundMovingSpeed[bank] / US_FLOAT(400.0)) + value;\n#endif\n                                }\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                                func_802ad770(0x05020000 | ((channelIndex & 0xff) << 8),\n                                              get_sound_reverb(bank, soundIndex, channelIndex));\n#else\n                                gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->reverbVol =\n                                    get_sound_reverb(bank, soundIndex, channelIndex);\n#endif\n\n                                break;\n                            }\n                        // fallthrough\n                        case SOUND_BANK_MENU:\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                            func_802ad728(0x02020000 | ((channelIndex & 0xff) << 8), 1);\n                            func_802ad770(0x03020000 | ((channelIndex & 0xff) << 8), 64);\n                            func_802ad728(0x04020000 | ((channelIndex & 0xff) << 8),\n                                          get_sound_freq_scale(bank, soundIndex));\n#else\n                            gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->volume = 1.0f;\n                            gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->pan = 0.5f;\n                            gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->freqScale = 1.0f;\n#endif\n                            break;\n                        case SOUND_BANK_ACTION:\n                        case SOUND_BANK_VOICE:\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                            func_802ad770(0x05020000 | ((channelIndex & 0xff) << 8),\n                                          get_sound_reverb(bank, soundIndex, channelIndex));\n                            func_802ad728(0x02020000 | ((channelIndex & 0xff) << 8),\n                                          get_sound_volume(bank, soundIndex, VOLUME_RANGE_UNK1));\n                            func_802ad770(0x03020000 | ((channelIndex & 0xff) << 8),\n                                          get_sound_pan(*sSoundBanks[bank][soundIndex].x,\n                                                        *sSoundBanks[bank][soundIndex].z)\n                                                  * 127.0f\n                                              + 0.5f);\n                            func_802ad728(0x04020000 | ((channelIndex & 0xff) << 8),\n                                          get_sound_freq_scale(bank, soundIndex));\n#else\n                            gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->volume =\n                                get_sound_volume(bank, soundIndex, VOLUME_RANGE_UNK1);\n                            gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->pan =\n                                get_sound_pan(*sSoundBanks[bank][soundIndex].x,\n                                              *sSoundBanks[bank][soundIndex].z);\n                            gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->freqScale =\n                                get_sound_freq_scale(bank, soundIndex);\n                            gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->reverbVol =\n                                get_sound_reverb(bank, soundIndex, channelIndex);\n#endif\n                            break;\n                        case SOUND_BANK_GENERAL:\n                        case SOUND_BANK_ENV:\n                        case SOUND_BANK_OBJ:\n                        case SOUND_BANK_AIR:\n                        case SOUND_BANK_GENERAL2:\n                        case SOUND_BANK_OBJ2:\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                            func_802ad770(0x05020000 | ((channelIndex & 0xff) << 8),\n                                          get_sound_reverb(bank, soundIndex, channelIndex));\n                            func_802ad728(0x02020000 | ((channelIndex & 0xff) << 8),\n                                          get_sound_volume(bank, soundIndex, VOLUME_RANGE_UNK2));\n                            func_802ad770(0x03020000 | ((channelIndex & 0xff) << 8),\n                                          get_sound_pan(*sSoundBanks[bank][soundIndex].x,\n                                                        *sSoundBanks[bank][soundIndex].z)\n                                                  * 127.0f\n                                              + 0.5f);\n                            func_802ad728(0x04020000 | ((channelIndex & 0xff) << 8),\n                                          get_sound_freq_scale(bank, soundIndex));\n#else\n                            gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->reverbVol =\n                                get_sound_reverb(bank, soundIndex, channelIndex);\n                            gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->volume =\n                                get_sound_volume(bank, soundIndex, VOLUME_RANGE_UNK2);\n                            gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->pan =\n                                get_sound_pan(*sSoundBanks[bank][soundIndex].x,\n                                              *sSoundBanks[bank][soundIndex].z);\n                            gSequencePlayers[SEQ_PLAYER_SFX].channels[channelIndex]->freqScale =\n                                get_sound_freq_scale(bank, soundIndex);\n#endif\n                            break;\n                    }\n                }\n            }\n\n            // Increment to the next channel that this bank owns\n            channelIndex++;\n        }\n\n        // Increment to the first channel index of the next bank\n        // (In practice sUsedChannelsForSoundBank[i] = sMaxChannelsForSoundBank[i] = 1, so this\n        // doesn't do anything)\n        channelIndex += sMaxChannelsForSoundBank[bank] - sUsedChannelsForSoundBank[bank];\n    }\n}\n\n/**\n * Called from threads: thread4_sound, thread5_game_loop\n */\nstatic void seq_player_play_sequence(u8 player, u8 seqId, u16 arg2) {\n    u8 targetVolume;\n    u8 i;\n\n    if (player == SEQ_PLAYER_LEVEL) {\n        sCurrentBackgroundMusicSeqId = seqId & SEQ_BASE_ID;\n        sBackgroundMusicForDynamics = SEQUENCE_NONE;\n        sCurrentMusicDynamic = 0xff;\n        sMusicDynamicDelay = 2;\n    }\n\n    for (i = 0; i < CHANNELS_MAX; i++) {\n        D_80360928[player][i].remainingFrames = 0;\n    }\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    func_802ad770(0x46000000 | ((u8)(u32) player) << 16, seqId & SEQ_VARIATION);\n    func_802ad74c(0x82000000 | ((u8)(u32) player) << 16 | ((u8)(seqId & SEQ_BASE_ID)) << 8, arg2);\n\n    if (player == SEQ_PLAYER_LEVEL) {\n        targetVolume = begin_background_music_fade(0);\n        if (targetVolume != 0xff) {\n            gSequencePlayers[SEQ_PLAYER_LEVEL].fadeVolumeScale = (f32) targetVolume / US_FLOAT(127.0);\n        }\n    }\n#else\n\n    gSequencePlayers[player].seqVariation = seqId & SEQ_VARIATION;\n    load_sequence(player, seqId & SEQ_BASE_ID, 0);\n\n    if (player == SEQ_PLAYER_LEVEL) {\n        targetVolume = begin_background_music_fade(0);\n        if (targetVolume != 0xff) {\n            gSequencePlayers[SEQ_PLAYER_LEVEL].state = SEQUENCE_PLAYER_STATE_4;\n            gSequencePlayers[SEQ_PLAYER_LEVEL].fadeVolume = (f32) targetVolume / US_FLOAT(127.0);\n        }\n    } else {\n        func_8031D690(player, arg2);\n    }\n#endif\n}\n\n/**\n * Called from threads: thread5_game_loop\n */\nvoid seq_player_fade_out(u8 player, u16 fadeDuration) {\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n#ifdef VERSION_EU\n    u32 fd = fadeDuration;\n#else\n    s32 fd = fadeDuration; // will also match if we change function signature func_802ad74c to use s32 as arg1\n#endif\n    if (!player) {\n        sCurrentBackgroundMusicSeqId = SEQUENCE_NONE;\n    }\n    func_802ad74c(0x83000000 | (player & 0xff) << 16, fd);\n#else\n    if (player == SEQ_PLAYER_LEVEL) {\n        sCurrentBackgroundMusicSeqId = SEQUENCE_NONE;\n    }\n    seq_player_fade_to_zero_volume(player, fadeDuration);\n#endif\n}\n\n/**\n * Called from threads: thread5_game_loop\n */\nvoid fade_volume_scale(u8 player, u8 targetScale, u16 fadeDuration) {\n    u8 i;\n    for (i = 0; i < CHANNELS_MAX; i++) {\n        fade_channel_volume_scale(player, i, targetScale, fadeDuration);\n    }\n}\n\n/**\n * Called from threads: thread3_main, thread4_sound, thread5_game_loop\n */\nstatic void fade_channel_volume_scale(u8 player, u8 channelIndex, u8 targetScale, u16 fadeDuration) {\n    struct ChannelVolumeScaleFade *temp;\n\n    if (gSequencePlayers[player].channels[channelIndex] != &gSequenceChannelNone) {\n        temp = &D_80360928[player][channelIndex];\n        temp->remainingFrames = fadeDuration;\n        temp->velocity = ((f32)(targetScale / US_FLOAT(127.0))\n                          - gSequencePlayers[player].channels[channelIndex]->volumeScale)\n                         / fadeDuration;\n        temp->target = targetScale;\n        temp->current = gSequencePlayers[player].channels[channelIndex]->volumeScale;\n    }\n}\n\n/**\n * Called from threads: thread4_sound, thread5_game_loop (EU only)\n */\nstatic void func_8031F96C(u8 player) {\n    u8 i;\n\n    // Loop over channels\n    for (i = 0; i < CHANNELS_MAX; i++) {\n        if (gSequencePlayers[player].channels[i] != &gSequenceChannelNone\n            && D_80360928[player][i].remainingFrames != 0) {\n            D_80360928[player][i].current += D_80360928[player][i].velocity;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n            func_802ad728(0x01000000 | (player & 0xff) << 16 | (i & 0xff) << 8,\n                          D_80360928[player][i].current);\n#else\n            gSequencePlayers[player].channels[i]->volumeScale = D_80360928[player][i].current;\n#endif\n            D_80360928[player][i].remainingFrames--;\n            if (D_80360928[player][i].remainingFrames == 0) {\n#if defined(VERSION_EU)\n                func_802ad728(0x01000000 | (player & 0xff) << 16 | (i & 0xff) << 8,\n                              FLOAT_CAST(D_80360928[player][i].target) / 127.0);\n#elif defined(VERSION_SH) || defined(VERSION_CN)\n                func_802ad728(0x01000000 | (player & 0xff) << 16 | (i & 0xff) << 8,\n                              FLOAT_CAST(D_80360928[player][i].target) / 127.0f);\n#else\n                gSequencePlayers[player].channels[i]->volumeScale =\n                    D_80360928[player][i].target / 127.0f;\n#endif\n            }\n        }\n    }\n}\n\n/**\n * Called from threads: thread4_sound, thread5_game_loop (EU only)\n */\nvoid process_level_music_dynamics(void) {\n    u32 conditionBits;\n    u16 tempBits;\n    UNUSED u16 pad;\n    u8 musicDynIndex;\n    u8 condIndex;\n    u8 i;\n    u8 j;\n    s16 conditionValues[8];\n    u8 conditionTypes[8];\n    s16 dur1;\n    s16 dur2;\n    u16 bit;\n\n    func_8031F96C(0);\n    func_8031F96C(2);\n    func_80320ED8();\n    if (sMusicDynamicDelay != 0) {\n        sMusicDynamicDelay--;\n    } else {\n        sBackgroundMusicForDynamics = sCurrentBackgroundMusicSeqId;\n    }\n\n    if (sBackgroundMusicForDynamics != sLevelDynamics[gCurrLevelNum][0]) {\n        return;\n    }\n\n    conditionBits = sLevelDynamics[gCurrLevelNum][1] & 0xff00;\n    musicDynIndex = (u8) sLevelDynamics[gCurrLevelNum][1] & 0xff;\n    i = 2;\n    while (conditionBits & 0xff00) {\n        j = 0;\n        condIndex = 0;\n        bit = 0x8000;\n        while (j < 8) {\n            if (conditionBits & bit) {\n                conditionValues[condIndex] = sLevelDynamics[gCurrLevelNum][i++];\n                conditionTypes[condIndex] = j;\n                condIndex++;\n            }\n\n            j++;\n            bit = bit >> 1;\n        }\n\n        for (j = 0; j < condIndex; j++) {\n            switch (conditionTypes[j]) {\n                case MARIO_X_GE: {\n                    if (((s16) gMarioStates[0].pos[0]) < conditionValues[j]) {\n                        j = condIndex + 1;\n                    }\n                    break;\n                }\n                case MARIO_Y_GE: {\n                    if (((s16) gMarioStates[0].pos[1]) < conditionValues[j]) {\n                        j = condIndex + 1;\n                    }\n                    break;\n                }\n                case MARIO_Z_GE: {\n                    if (((s16) gMarioStates[0].pos[2]) < conditionValues[j]) {\n                        j = condIndex + 1;\n                    }\n                    break;\n                }\n                case MARIO_X_LT: {\n                    if (((s16) gMarioStates[0].pos[0]) >= conditionValues[j]) {\n                        j = condIndex + 1;\n                    }\n                    break;\n                }\n                case MARIO_Y_LT: {\n                    if (((s16) gMarioStates[0].pos[1]) >= conditionValues[j]) {\n                        j = condIndex + 1;\n                    }\n                    break;\n                }\n                case MARIO_Z_LT: {\n                    if (((s16) gMarioStates[0].pos[2]) >= conditionValues[j]) {\n                        j = condIndex + 1;\n                    }\n                    break;\n                }\n                case MARIO_IS_IN_AREA: {\n                    if (gCurrAreaIndex != conditionValues[j]) {\n                        j = condIndex + 1;\n                    }\n                    break;\n                }\n                case MARIO_IS_IN_ROOM: {\n                    if (gMarioCurrentRoom != conditionValues[j]) {\n                        j = condIndex + 1;\n                    }\n                    break;\n                }\n            }\n        }\n\n        if (j == condIndex) {\n            // The area matches. Break out of the loop.\n            tempBits = 0;\n        } else {\n            tempBits      = sLevelDynamics[gCurrLevelNum][i] & 0xff00;\n            musicDynIndex = sLevelDynamics[gCurrLevelNum][i] & 0xff;\n            i++;\n        }\n\n        conditionBits = tempBits;\n    }\n\n    if (sCurrentMusicDynamic != musicDynIndex) {\n        tempBits = 1;\n        if (sCurrentMusicDynamic == 0xff) {\n            dur1 = 1;\n            dur2 = 1;\n        } else {\n            dur1 = sMusicDynamics[musicDynIndex].dur1;\n            dur2 = sMusicDynamics[musicDynIndex].dur2;\n        }\n\n        for (i = 0; i < CHANNELS_MAX; i++) {\n            conditionBits = tempBits;\n            tempBits = 0;\n            if (sMusicDynamics[musicDynIndex].bits1 & conditionBits) {\n                fade_channel_volume_scale(SEQ_PLAYER_LEVEL, i, sMusicDynamics[musicDynIndex].volScale1,\n                                          dur1);\n            }\n            if (sMusicDynamics[musicDynIndex].bits2 & conditionBits) {\n                fade_channel_volume_scale(SEQ_PLAYER_LEVEL, i, sMusicDynamics[musicDynIndex].volScale2,\n                                          dur2);\n            }\n            tempBits = conditionBits << 1;\n        }\n\n        sCurrentMusicDynamic = musicDynIndex;\n    }\n}\n\nvoid unused_8031FED0(u8 player, u32 bits, s8 arg2) {\n    u8 i;\n\n    if (arg2 < 0) {\n        arg2 = -arg2;\n    }\n\n    for (i = 0; i < CHANNELS_MAX; i++) {\n        if (gSequencePlayers[player].channels[i] != &gSequenceChannelNone) {\n            if ((bits & 3) == 0) {\n                gSequencePlayers[player].channels[i]->volumeScale = 1.0f;\n            } else if ((bits & 1) != 0) {\n                gSequencePlayers[player].channels[i]->volumeScale = (f32) arg2 / US_FLOAT(127.0);\n            } else {\n                gSequencePlayers[player].channels[i]->volumeScale =\n                    US_FLOAT(1.0) - (f32) arg2 / US_FLOAT(127.0);\n            }\n        }\n        bits >>= 2;\n    }\n}\n\n/**\n * Lower a sequence player's volume over fadeDuration frames.\n * If player is SEQ_PLAYER_LEVEL (background music), the given percentage is ignored\n * and a max target volume of 40 is used.\n *\n * Called from threads: thread5_game_loop\n */\nvoid seq_player_lower_volume(u8 player, u16 fadeDuration, u8 percentage) {\n    if (player == SEQ_PLAYER_LEVEL) {\n        sLowerBackgroundMusicVolume = TRUE;\n        begin_background_music_fade(fadeDuration);\n    } else if (gSequencePlayers[player].enabled == TRUE) {\n        seq_player_fade_to_percentage_of_volume(player, fadeDuration, percentage);\n    }\n}\n\n/**\n * Remove the lowered volume constraint set by seq_player_lower_volume.\n * If player is SEQ_PLAYER_LEVEL (background music), the music won't necessarily\n * raise back to normal volume if other constraints have been set, e.g.\n * sBackgroundMusicTargetVolume.\n *\n * Called from threads: thread5_game_loop\n */\nvoid seq_player_unlower_volume(u8 player, u16 fadeDuration) {\n    sLowerBackgroundMusicVolume = FALSE;\n    if (player == SEQ_PLAYER_LEVEL) {\n        if (gSequencePlayers[player].state != SEQUENCE_PLAYER_STATE_FADE_OUT) {\n            begin_background_music_fade(fadeDuration);\n        }\n    } else {\n        if (gSequencePlayers[player].enabled == TRUE) {\n            seq_player_fade_to_normal_volume(player, fadeDuration);\n        }\n    }\n}\n\n/**\n * Begin a volume fade to adjust the background music to the correct volume.\n * The target volume is determined by global variables like sBackgroundMusicTargetVolume\n * and sLowerBackgroundMusicVolume.\n * If none of the relevant global variables are set, then the default background music\n * volume for the sequence is used.\n *\n * Called from threads: thread3_main, thread4_sound, thread5_game_loop\n */\nstatic u8 begin_background_music_fade(u16 fadeDuration) {\n    u8 targetVolume = 0xff;\n\n    if (sCurrentBackgroundMusicSeqId == SEQUENCE_NONE\n        || sCurrentBackgroundMusicSeqId == SEQ_EVENT_CUTSCENE_CREDITS) {\n        return 0xff;\n    }\n\n    if (gSequencePlayers[SEQ_PLAYER_LEVEL].volume == 0.0f && fadeDuration) {\n        gSequencePlayers[SEQ_PLAYER_LEVEL].volume = gSequencePlayers[SEQ_PLAYER_LEVEL].fadeVolume;\n    }\n\n    if (sBackgroundMusicTargetVolume != TARGET_VOLUME_UNSET) {\n        targetVolume = (sBackgroundMusicTargetVolume & TARGET_VOLUME_VALUE_MASK);\n    }\n\n    if (sBackgroundMusicMaxTargetVolume != TARGET_VOLUME_UNSET) {\n        u8 maxTargetVolume = (sBackgroundMusicMaxTargetVolume & TARGET_VOLUME_VALUE_MASK);\n        if (targetVolume > maxTargetVolume) {\n            targetVolume = maxTargetVolume;\n        }\n    }\n\n    if (sLowerBackgroundMusicVolume && targetVolume > 40) {\n        targetVolume = 40;\n    }\n\n    if (sSoundBanksThatLowerBackgroundMusic != 0 && targetVolume > 20) {\n        targetVolume = 20;\n    }\n\n    if (gSequencePlayers[SEQ_PLAYER_LEVEL].enabled == TRUE) {\n        if (targetVolume != 0xff) {\n            seq_player_fade_to_target_volume(SEQ_PLAYER_LEVEL, fadeDuration, targetVolume);\n        } else {\n#if defined(VERSION_JP) || defined(VERSION_US)\n            gSequencePlayers[SEQ_PLAYER_LEVEL].volume =\n                sBackgroundMusicDefaultVolume[sCurrentBackgroundMusicSeqId] / 127.0f;\n#endif\n            seq_player_fade_to_normal_volume(SEQ_PLAYER_LEVEL, fadeDuration);\n        }\n    }\n\n    return targetVolume;\n}\n\n/**\n * Called from threads: thread5_game_loop\n */\nvoid set_audio_muted(u8 muted) {\n    u8 i;\n\n    for (i = 0; i < SEQUENCE_PLAYERS; i++) {\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n        if (muted) {\n            func_802ad74c(0xf1000000, 0);\n        } else {\n            func_802ad74c(0xf2000000, 0);\n        }\n#else\n        gSequencePlayers[i].muted = muted;\n#endif\n    }\n}\n\n/**\n * Called from threads: thread4_sound\n */\nvoid sound_init(void) {\n    u8 i;\n    u8 j;\n\n    for (i = 0; i < SOUND_BANK_COUNT; i++) {\n        // Set each sound in the bank to STOPPED\n        for (j = 0; j < 40; j++) {\n            sSoundBanks[i][j].soundStatus = SOUND_STATUS_STOPPED;\n        }\n\n        // Remove current sounds\n        for (j = 0; j < MAX_CHANNELS_PER_SOUND_BANK; j++) {\n            sCurrentSound[i][j] = 0xff;\n        }\n\n        sSoundBankUsedListBack[i] = 0;\n        sSoundBankFreeListFront[i] = 1;\n        sNumSoundsInBank[i] = 0;\n    }\n\n    for (i = 0; i < SOUND_BANK_COUNT; i++) {\n        // Set used list to empty\n        sSoundBanks[i][0].prev = 0xff;\n        sSoundBanks[i][0].next = 0xff;\n\n        // Set free list to contain every sound slot\n        for (j = 1; j < 40 - 1; j++) {\n            sSoundBanks[i][j].prev = j - 1;\n            sSoundBanks[i][j].next = j + 1;\n        }\n        sSoundBanks[i][j].prev = j - 1;\n        sSoundBanks[i][j].next = 0xff;\n    }\n\n    for (j = 0; j < 3; j++) {\n        for (i = 0; i < CHANNELS_MAX; i++) {\n            D_80360928[j][i].remainingFrames = 0;\n        }\n    }\n\n    for (i = 0; i < MAX_BACKGROUND_MUSIC_QUEUE_SIZE; i++) {\n        sBackgroundMusicQueue[i].priority = 0;\n    }\n\n    sound_banks_enable(SEQ_PLAYER_SFX, SOUND_BANKS_ALL_BITS);\n\n    sUnused80332118 = 0;\n    sBackgroundMusicTargetVolume = TARGET_VOLUME_UNSET;\n    sLowerBackgroundMusicVolume = FALSE;\n    sSoundBanksThatLowerBackgroundMusic = 0;\n    sUnused80332114 = 0;\n    sCurrentBackgroundMusicSeqId = 0xff;\n    gSoundMode = SOUND_MODE_STEREO;\n    sBackgroundMusicQueueSize = 0;\n    sBackgroundMusicMaxTargetVolume = TARGET_VOLUME_UNSET;\n    D_80332120 = 0;\n    D_80332124 = 0;\n    sNumProcessedSoundRequests = 0;\n    sSoundRequestCount = 0;\n}\n\n// (unused)\nvoid get_currently_playing_sound(u8 bank, u8 *numPlayingSounds, u8 *numSoundsInBank, u8 *soundId) {\n    u8 i;\n    u8 count = 0;\n\n    for (i = 0; i < sMaxChannelsForSoundBank[bank]; i++) {\n        if (sCurrentSound[bank][i] != 0xff) {\n            count++;\n        }\n    }\n    *numPlayingSounds = count;\n\n    *numSoundsInBank = sNumSoundsInBank[bank];\n\n    if (sCurrentSound[bank][0] != 0xff) {\n        *soundId = (u8)(sSoundBanks[bank][sCurrentSound[bank][0]].soundBits >> SOUNDARGS_SHIFT_SOUNDID);\n    } else {\n        *soundId = 0xff;\n    }\n}\n\n/**\n * Called from threads: thread5_game_loop\n */\nvoid stop_sound(u32 soundBits, f32 *pos) {\n    u8 bank = (soundBits & SOUNDARGS_MASK_BANK) >> SOUNDARGS_SHIFT_BANK;\n    u8 soundIndex = sSoundBanks[bank][0].next;\n\n    while (soundIndex != 0xff) {\n        // If sound has same id and source position pointer\n        if ((u16)(soundBits >> SOUNDARGS_SHIFT_SOUNDID)\n                == (u16)(sSoundBanks[bank][soundIndex].soundBits >> SOUNDARGS_SHIFT_SOUNDID)\n            && sSoundBanks[bank][soundIndex].x == pos) {\n\n            // Mark sound for deletion\n            update_background_music_after_sound(bank, soundIndex);\n            sSoundBanks[bank][soundIndex].soundBits = NO_SOUND;\n            soundIndex = 0xff; // break\n        } else {\n            soundIndex = sSoundBanks[bank][soundIndex].next;\n        }\n    }\n}\n\n/**\n * Called from threads: thread5_game_loop\n */\nvoid stop_sounds_from_source(f32 *pos) {\n    u8 bank;\n    u8 soundIndex;\n\n    for (bank = 0; bank < SOUND_BANK_COUNT; bank++) {\n        soundIndex = sSoundBanks[bank][0].next;\n        while (soundIndex != 0xff) {\n            if (sSoundBanks[bank][soundIndex].x == pos) {\n                update_background_music_after_sound(bank, soundIndex);\n                sSoundBanks[bank][soundIndex].soundBits = NO_SOUND;\n            }\n            soundIndex = sSoundBanks[bank][soundIndex].next;\n        }\n    }\n}\n\n/**\n * Called from threads: thread3_main, thread5_game_loop\n */\nstatic void stop_sounds_in_bank(u8 bank) {\n    u8 soundIndex = sSoundBanks[bank][0].next;\n\n    while (soundIndex != 0xff) {\n        update_background_music_after_sound(bank, soundIndex);\n        sSoundBanks[bank][soundIndex].soundBits = NO_SOUND;\n        soundIndex = sSoundBanks[bank][soundIndex].next;\n    }\n}\n\n/**\n * Stops sounds in all of the sound banks that predominantly consist of continuous\n * sounds. Misses some specific continuous sounds in other banks like bird chirping\n * and the ticking sound after pressing a switch.\n *\n * Called from threads: thread3_main, thread5_game_loop\n */\nvoid stop_sounds_in_continuous_banks(void) {\n    stop_sounds_in_bank(SOUND_BANK_MOVING);\n    stop_sounds_in_bank(SOUND_BANK_ENV);\n    stop_sounds_in_bank(SOUND_BANK_AIR);\n}\n\n/**\n * Called from threads: thread3_main, thread5_game_loop\n */\nvoid sound_banks_disable(UNUSED u8 player, u16 bankMask) {\n    u8 i;\n\n    for (i = 0; i < SOUND_BANK_COUNT; i++) {\n        if (bankMask & 1) {\n            sSoundBankDisabled[i] = TRUE;\n        }\n        bankMask = bankMask >> 1;\n    }\n}\n\n/**\n * Called from threads: thread5_game_loop\n */\nstatic void disable_all_sequence_players(void) {\n    u8 i;\n\n    for (i = 0; i < SEQUENCE_PLAYERS; i++) {\n        sequence_player_disable(&gSequencePlayers[i]);\n    }\n}\n\n/**\n * Called from threads: thread5_game_loop\n */\nvoid sound_banks_enable(UNUSED u8 player, u16 bankMask) {\n    u8 i;\n\n    for (i = 0; i < SOUND_BANK_COUNT; i++) {\n        if (bankMask & 1) {\n            sSoundBankDisabled[i] = FALSE;\n        }\n        bankMask = bankMask >> 1;\n    }\n}\n\nu8 unused_803209D8(u8 player, u8 channelIndex, u8 arg2) {\n    u8 ret = 0;\n    if (gSequencePlayers[player].channels[channelIndex] != &gSequenceChannelNone) {\n        gSequencePlayers[player].channels[channelIndex]->stopSomething2 = arg2;\n        ret = arg2;\n    }\n    return ret;\n}\n\n/**\n * Set the moving speed for a sound bank, which may affect the volume and pitch\n * of the sound.\n *\n * Called from threads: thread5_game_loop\n */\nvoid set_sound_moving_speed(u8 bank, u8 speed) {\n    sSoundMovingSpeed[bank] = speed;\n}\n\n/**\n * Called from threads: thread5_game_loop\n */\nvoid play_dialog_sound(u8 dialogID) {\n    u8 speaker;\n\n    if (dialogID >= DIALOG_COUNT) {\n        dialogID = 0;\n    }\n\n    speaker = sDialogSpeaker[dialogID];\n    if (speaker != 0xff) {\n        play_sound(sDialogSpeakerVoice[speaker], gGlobalSoundSource);\n\n        // Play music during bowser message that appears when first entering the\n        // castle or when trying to enter a door without enough stars\n        if (speaker == BOWS1) {\n            seq_player_play_sequence(SEQ_PLAYER_ENV, SEQ_EVENT_KOOPA_MESSAGE, 0);\n        }\n    }\n\n#ifndef VERSION_JP\n    // \"You've stepped on the (Wing|Metal|Vanish) Cap Switch\"\n    if (dialogID == DIALOG_010 || dialogID == DIALOG_011 || dialogID == DIALOG_012) {\n        play_puzzle_jingle();\n    }\n#endif\n}\n\n/**\n * Called from threads: thread5_game_loop\n */\nvoid play_music(u8 player, u16 seqArgs, u16 fadeTimer) {\n    u8 seqId = seqArgs & 0xff;\n    u8 priority = seqArgs >> 8;\n    u8 i;\n    u8 foundIndex = 0;\n\n    // Except for the background music player, we don't support queued\n    // sequences. Just play them immediately, stopping any old sequence.\n    if (player != SEQ_PLAYER_LEVEL) {\n        seq_player_play_sequence(player, seqId, fadeTimer);\n        return;\n    }\n\n    // Abort if the queue is already full.\n    if (sBackgroundMusicQueueSize == MAX_BACKGROUND_MUSIC_QUEUE_SIZE) {\n        return;\n    }\n\n    // If already in the queue, abort, after first restarting the sequence if\n    // it is first, and handling disabled music somehow.\n    // (That handling probably ought to occur even when the queue is full...)\n    for (i = 0; i < sBackgroundMusicQueueSize; i++) {\n        if (sBackgroundMusicQueue[i].seqId == seqId) {\n            if (i == 0) {\n                seq_player_play_sequence(SEQ_PLAYER_LEVEL, seqId, fadeTimer);\n            } else if (!gSequencePlayers[SEQ_PLAYER_LEVEL].enabled) {\n                stop_background_music(sBackgroundMusicQueue[0].seqId);\n            }\n            return;\n        }\n    }\n\n    // Find the next sequence slot by priority.\n    for (i = 0; i < sBackgroundMusicQueueSize; i++) {\n        if (sBackgroundMusicQueue[i].priority <= priority) {\n            foundIndex = i;\n            i = sBackgroundMusicQueueSize; // break\n        }\n    }\n\n    // If the sequence ends up first in the queue, start it, and make space for\n    // one more entry in the queue.\n    if (foundIndex == 0) {\n        seq_player_play_sequence(SEQ_PLAYER_LEVEL, seqId, fadeTimer);\n        sBackgroundMusicQueueSize++;\n    }\n\n    // Move all items up in queue, throwing away the last one if we didn't put\n    // the new sequence first.\n    for (i = sBackgroundMusicQueueSize - 1; i > foundIndex; i--) {\n        sBackgroundMusicQueue[i].priority = sBackgroundMusicQueue[i - 1].priority;\n        sBackgroundMusicQueue[i].seqId = sBackgroundMusicQueue[i - 1].seqId;\n    }\n\n    // Insert item into queue.\n    sBackgroundMusicQueue[foundIndex].priority = priority;\n    sBackgroundMusicQueue[foundIndex].seqId = seqId;\n}\n\n/**\n * Called from threads: thread5_game_loop\n */\nvoid stop_background_music(u16 seqId) {\n    u8 foundIndex;\n    u8 i;\n\n    if (sBackgroundMusicQueueSize == 0) {\n        return;\n    }\n\n    // If sequence is not found, remove an empty queue item (the next empty\n    // queue slot).\n    foundIndex = sBackgroundMusicQueueSize;\n\n    // Search for the sequence.\n    for (i = 0; i < sBackgroundMusicQueueSize; i++) {\n        if (sBackgroundMusicQueue[i].seqId == (u8)(seqId & 0xff)) {\n            // Remove sequence from queue. If it was first, play the next one,\n            // or fade out the music.\n            sBackgroundMusicQueueSize--;\n            if (i == 0) {\n                if (sBackgroundMusicQueueSize != 0) {\n                    seq_player_play_sequence(SEQ_PLAYER_LEVEL, sBackgroundMusicQueue[1].seqId, 0);\n                } else {\n                    seq_player_fade_out(SEQ_PLAYER_LEVEL, 20);\n                }\n            }\n            foundIndex = i;\n            i = sBackgroundMusicQueueSize; // \"break;\"\n        }\n    }\n\n    // Move later slots down.\n    for (i = foundIndex; i < sBackgroundMusicQueueSize; i++) {\n        sBackgroundMusicQueue[i].priority = sBackgroundMusicQueue[i + 1].priority;\n        sBackgroundMusicQueue[i].seqId = sBackgroundMusicQueue[i + 1].seqId;\n    }\n\n    // @bug? If the sequence queue is full and we attempt to stop a sequence\n    // that isn't in the queue, this writes out of bounds. Can that happen?\n    sBackgroundMusicQueue[i].priority = 0;\n}\n\n/**\n * Called from threads: thread5_game_loop\n */\nvoid fadeout_background_music(u16 seqId, u16 fadeOut) {\n    if (sBackgroundMusicQueueSize != 0 && sBackgroundMusicQueue[0].seqId == (u8)(seqId & 0xff)) {\n        seq_player_fade_out(SEQ_PLAYER_LEVEL, fadeOut);\n    }\n}\n\n/**\n * Called from threads: thread5_game_loop\n */\nvoid drop_queued_background_music(void) {\n    if (sBackgroundMusicQueueSize != 0) {\n        sBackgroundMusicQueueSize = 1;\n    }\n}\n\n/**\n * Called from threads: thread5_game_loop\n */\nu16 get_current_background_music(void) {\n    if (sBackgroundMusicQueueSize != 0) {\n        return (sBackgroundMusicQueue[0].priority << 8) + sBackgroundMusicQueue[0].seqId;\n    }\n    return -1;\n}\n\n/**\n * Called from threads: thread4_sound, thread5_game_loop (EU only)\n */\nvoid func_80320ED8(void) {\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    if (D_EU_80300558 != 0) {\n        D_EU_80300558--;\n    }\n\n    if (gSequencePlayers[SEQ_PLAYER_ENV].enabled\n        || sBackgroundMusicMaxTargetVolume == TARGET_VOLUME_UNSET || D_EU_80300558 != 0) {\n#else\n    if (gSequencePlayers[SEQ_PLAYER_ENV].enabled\n        || sBackgroundMusicMaxTargetVolume == TARGET_VOLUME_UNSET) {\n#endif\n        return;\n    }\n\n    sBackgroundMusicMaxTargetVolume = TARGET_VOLUME_UNSET;\n    begin_background_music_fade(50);\n\n    if (sBackgroundMusicTargetVolume != TARGET_VOLUME_UNSET\n        && (D_80332120 == SEQ_EVENT_MERRY_GO_ROUND || D_80332120 == SEQ_EVENT_PIRANHA_PLANT)) {\n        seq_player_play_sequence(SEQ_PLAYER_ENV, D_80332120, 1);\n        if (D_80332124 != 0xff) {\n            seq_player_fade_to_target_volume(SEQ_PLAYER_ENV, 1, D_80332124);\n        }\n    }\n}\n\n/**\n * Called from threads: thread5_game_loop\n */\nvoid play_secondary_music(u8 seqId, u8 bgMusicVolume, u8 volume, u16 fadeTimer) {\n    UNUSED u32 dummy;\n\n    sUnused80332118 = 0;\n    if (sCurrentBackgroundMusicSeqId == 0xff || sCurrentBackgroundMusicSeqId == SEQ_MENU_TITLE_SCREEN) {\n        return;\n    }\n\n    if (sBackgroundMusicTargetVolume == TARGET_VOLUME_UNSET) {\n        sBackgroundMusicTargetVolume = bgMusicVolume + TARGET_VOLUME_IS_PRESENT_FLAG;\n        begin_background_music_fade(fadeTimer);\n        seq_player_play_sequence(SEQ_PLAYER_ENV, seqId, fadeTimer >> 1);\n        if (volume < 0x80) {\n            seq_player_fade_to_target_volume(SEQ_PLAYER_ENV, fadeTimer, volume);\n        }\n        D_80332124 = volume;\n        D_80332120 = seqId;\n    } else if (volume != 0xff) {\n        sBackgroundMusicTargetVolume = bgMusicVolume + TARGET_VOLUME_IS_PRESENT_FLAG;\n        begin_background_music_fade(fadeTimer);\n        seq_player_fade_to_target_volume(SEQ_PLAYER_ENV, fadeTimer, volume);\n        D_80332124 = volume;\n    }\n}\n\n/**\n * Called from threads: thread5_game_loop\n */\nvoid func_80321080(u16 fadeTimer) {\n    if (sBackgroundMusicTargetVolume != TARGET_VOLUME_UNSET) {\n        sBackgroundMusicTargetVolume = TARGET_VOLUME_UNSET;\n        D_80332120 = 0;\n        D_80332124 = 0;\n        begin_background_music_fade(fadeTimer);\n        seq_player_fade_out(SEQ_PLAYER_ENV, fadeTimer);\n    }\n}\n\n/**\n * Called from threads: thread3_main, thread5_game_loop\n */\nvoid func_803210D4(u16 fadeDuration) {\n    u8 i;\n\n    if (sHasStartedFadeOut) {\n        return;\n    }\n\n    if (gSequencePlayers[SEQ_PLAYER_LEVEL].enabled == TRUE) {\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n        func_802ad74c(0x83000000, fadeDuration);\n#else\n        seq_player_fade_to_zero_volume(SEQ_PLAYER_LEVEL, fadeDuration);\n#endif\n    }\n\n    if (gSequencePlayers[SEQ_PLAYER_ENV].enabled == TRUE) {\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n        func_802ad74c(0x83010000, fadeDuration);\n#else\n        seq_player_fade_to_zero_volume(SEQ_PLAYER_ENV, fadeDuration);\n#endif\n    }\n\n    for (i = 0; i < SOUND_BANK_COUNT; i++) {\n        if (i != SOUND_BANK_MENU) {\n            fade_channel_volume_scale(SEQ_PLAYER_SFX, i, 0, fadeDuration / 16);\n        }\n    }\n\n    sHasStartedFadeOut = TRUE;\n}\n\n/**\n * Called from threads: thread5_game_loop\n */\nvoid play_course_clear(void) {\n    seq_player_play_sequence(SEQ_PLAYER_ENV, SEQ_EVENT_CUTSCENE_COLLECT_STAR, 0);\n    sBackgroundMusicMaxTargetVolume = TARGET_VOLUME_IS_PRESENT_FLAG | 0;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    D_EU_80300558 = 2;\n#endif\n    begin_background_music_fade(50);\n}\n\n/**\n * Called from threads: thread5_game_loop\n */\nvoid play_peachs_jingle(void) {\n    seq_player_play_sequence(SEQ_PLAYER_ENV, SEQ_EVENT_PEACH_MESSAGE, 0);\n    sBackgroundMusicMaxTargetVolume = TARGET_VOLUME_IS_PRESENT_FLAG | 0;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    D_EU_80300558 = 2;\n#endif\n    begin_background_music_fade(50);\n}\n\n/**\n * Plays the puzzle jingle. Plays the dadada dadada *dadada* jingle\n * that usually plays when you solve a \"puzzle\", like chests, talking to\n * yoshi, releasing chain chomp, opening the pyramid top, etc.\n *\n * Called from threads: thread5_game_loop\n */\nvoid play_puzzle_jingle(void) {\n    seq_player_play_sequence(SEQ_PLAYER_ENV, SEQ_EVENT_SOLVE_PUZZLE, 0);\n    sBackgroundMusicMaxTargetVolume = TARGET_VOLUME_IS_PRESENT_FLAG | 20;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    D_EU_80300558 = 2;\n#endif\n    begin_background_music_fade(50);\n}\n\n/**\n * Called from threads: thread5_game_loop\n */\nvoid play_star_fanfare(void) {\n    seq_player_play_sequence(SEQ_PLAYER_ENV, SEQ_EVENT_HIGH_SCORE, 0);\n    sBackgroundMusicMaxTargetVolume = TARGET_VOLUME_IS_PRESENT_FLAG | 20;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    D_EU_80300558 = 2;\n#endif\n    begin_background_music_fade(50);\n}\n\n/**\n * Called from threads: thread5_game_loop\n */\nvoid play_power_star_jingle(u8 arg0) {\n    if (!arg0) {\n        sBackgroundMusicTargetVolume = 0;\n    }\n    seq_player_play_sequence(SEQ_PLAYER_ENV, SEQ_EVENT_CUTSCENE_STAR_SPAWN, 0);\n    sBackgroundMusicMaxTargetVolume = TARGET_VOLUME_IS_PRESENT_FLAG | 20;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    D_EU_80300558 = 2;\n#endif\n    begin_background_music_fade(50);\n}\n\n/**\n * Called from threads: thread5_game_loop\n */\nvoid play_race_fanfare(void) {\n    seq_player_play_sequence(SEQ_PLAYER_ENV, SEQ_EVENT_RACE, 0);\n    sBackgroundMusicMaxTargetVolume = TARGET_VOLUME_IS_PRESENT_FLAG | 20;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    D_EU_80300558 = 2;\n#endif\n    begin_background_music_fade(50);\n}\n\n/**\n * Called from threads: thread5_game_loop\n */\nvoid play_toads_jingle(void) {\n    seq_player_play_sequence(SEQ_PLAYER_ENV, SEQ_EVENT_TOAD_MESSAGE, 0);\n    sBackgroundMusicMaxTargetVolume = TARGET_VOLUME_IS_PRESENT_FLAG | 20;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    D_EU_80300558 = 2;\n#endif\n    begin_background_music_fade(50);\n}\n\n/**\n * Called from threads: thread5_game_loop\n */\nvoid sound_reset(u8 presetId) {\n#ifndef VERSION_JP\n    if (presetId >= 8) {\n        presetId = 0;\n        sUnused8033323C = 0;\n    }\n#endif\n    sGameLoopTicked = 0;\n    disable_all_sequence_players();\n    sound_init();\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    func_802ad74c(0xF2000000, 0);\n#endif\n#if defined(VERSION_JP) || defined(VERSION_US)\n    audio_reset_session(&gAudioSessionPresets[presetId]);\n#else\n    audio_reset_session_eu(presetId);\n#endif\n    osWritebackDCacheAll();\n    if (presetId != 7) {\n        preload_sequence(SEQ_EVENT_SOLVE_PUZZLE, PRELOAD_BANKS | PRELOAD_SEQUENCE);\n        preload_sequence(SEQ_EVENT_PEACH_MESSAGE, PRELOAD_BANKS | PRELOAD_SEQUENCE);\n        preload_sequence(SEQ_EVENT_CUTSCENE_STAR_SPAWN, PRELOAD_BANKS | PRELOAD_SEQUENCE);\n    }\n    seq_player_play_sequence(SEQ_PLAYER_SFX, SEQ_SOUND_PLAYER, 0);\n    D_80332108 = (D_80332108 & 0xf0) + presetId;\n    gSoundMode = D_80332108 >> 4;\n    sHasStartedFadeOut = FALSE;\n}\n\n/**\n * Called from threads: thread5_game_loop\n */\nvoid audio_set_sound_mode(u8 soundMode) {\n    D_80332108 = (D_80332108 & 0xf) + (soundMode << 4);\n    gSoundMode = soundMode;\n}\n\n#if defined(VERSION_JP) || defined(VERSION_US)\nvoid unused_80321460(UNUSED s32 arg0, UNUSED s32 arg1, UNUSED s32 arg2, UNUSED s32 arg3) {\n}\n\nvoid unused_80321474(UNUSED s32 arg0) {\n}\n#endif\n"
  },
  {
    "path": "src/audio/external.h",
    "content": "#ifndef AUDIO_EXTERNAL_H\n#define AUDIO_EXTERNAL_H\n\n#include <PR/ultratypes.h>\n\n#include \"types.h\"\n\n// Sequence arguments, passed to seq_player_play_sequence. seqId may be bit-OR'ed with\n// SEQ_VARIATION; this will load the same sequence, but set a variation\n// bit which may be read by the sequence script.\n#define SEQUENCE_ARGS(priority, seqId) ((priority << 8) | seqId)\n\n#define SOUND_MODE_STEREO           0\n#define SOUND_MODE_MONO             3\n#define SOUND_MODE_HEADSET          1\n\n#define SEQ_PLAYER_LEVEL            0  // Level background music\n#define SEQ_PLAYER_ENV              1  // Misc music like the puzzle jingle\n#define SEQ_PLAYER_SFX              2  // Sound effects\n\nextern s32 gAudioErrorFlags;\nextern f32 gGlobalSoundSource[3];\n\n// defined in data.c, used by the game\nextern u32 gAudioRandom;\n\nextern u8 gAudioSPTaskYieldBuffer[]; // ucode yield data ptr; only used in JP\n\nstruct SPTask *create_next_audio_frame_task(void);\nvoid play_sound(s32 soundBits, f32 *pos);\nvoid audio_signal_game_loop_tick(void);\nvoid seq_player_fade_out(u8 player, u16 fadeDuration);\nvoid fade_volume_scale(u8 player, u8 targetScale, u16 fadeDuration);\nvoid seq_player_lower_volume(u8 player, u16 fadeDuration, u8 percentage);\nvoid seq_player_unlower_volume(u8 player, u16 fadeDuration);\nvoid set_audio_muted(u8 muted);\nvoid sound_init(void);\nvoid get_currently_playing_sound(u8 bank, u8 *numPlayingSounds, u8 *numSoundsInBank, u8 *soundId);\nvoid stop_sound(u32 soundBits, f32 *pos);\nvoid stop_sounds_from_source(f32 *pos);\nvoid stop_sounds_in_continuous_banks(void);\nvoid sound_banks_disable(u8 player, u16 bankMask);\nvoid sound_banks_enable(u8 player, u16 bankMask);\nvoid set_sound_moving_speed(u8 bank, u8 speed);\nvoid play_dialog_sound(u8 dialogID);\nvoid play_music(u8 player, u16 seqArgs, u16 fadeTimer);\nvoid stop_background_music(u16 seqId);\nvoid fadeout_background_music(u16 arg0, u16 fadeOut);\nvoid drop_queued_background_music(void);\nu16 get_current_background_music(void);\nvoid play_secondary_music(u8 seqId, u8 bgMusicVolume, u8 volume, u16 fadeTimer);\nvoid func_80321080(u16 fadeTimer);\nvoid func_803210D4(u16 fadeOutTime);\nvoid play_course_clear(void);\nvoid play_peachs_jingle(void);\nvoid play_puzzle_jingle(void);\nvoid play_star_fanfare(void);\nvoid play_power_star_jingle(u8 arg0);\nvoid play_race_fanfare(void);\nvoid play_toads_jingle(void);\nvoid sound_reset(u8 presetId);\nvoid audio_set_sound_mode(u8 arg0);\n\nvoid audio_init(void); // in load.c\n\n#if defined(VERSION_EU) || defined(VERSION_SH)\nstruct SPTask *unused_80321460();\nstruct SPTask *unused_80321460(void);\n#endif\n\n#endif // AUDIO_EXTERNAL_H\n"
  },
  {
    "path": "src/audio/globals_start.c",
    "content": "#include <ultra64.h>\n\nu64 gAudioGlobalsStartMarker;\n"
  },
  {
    "path": "src/audio/heap.c",
    "content": "#include <ultra64.h>\n\n#include \"heap.h\"\n#include \"data.h\"\n#include \"load.h\"\n#include \"synthesis.h\"\n#include \"seqplayer.h\"\n#include \"effects.h\"\n\n#define ALIGN16(val) (((val) + 0xF) & ~0xF)\n\nstruct PoolSplit {\n    u32 wantSeq;\n    u32 wantBank;\n    u32 wantUnused;\n    u32 wantCustom;\n}; // size = 0x10\n\nstruct PoolSplit2 {\n    u32 wantPersistent;\n    u32 wantTemporary;\n}; // size = 0x8\n\n#if defined(VERSION_JP) || defined(VERSION_US)\ns16 gVolume;\ns8 gReverbDownsampleRate;\nu8 sReverbDownsampleRateLog; // never read\n#endif\n\nstruct SoundAllocPool gAudioSessionPool;\nstruct SoundAllocPool gAudioInitPool;\nstruct SoundAllocPool gNotesAndBuffersPool;\nu8 sAudioHeapPad[0x20]; // probably two unused pools\nstruct SoundAllocPool gSeqAndBankPool;\nstruct SoundAllocPool gPersistentCommonPool;\nstruct SoundAllocPool gTemporaryCommonPool;\n\nstruct SoundMultiPool gSeqLoadedPool;\nstruct SoundMultiPool gBankLoadedPool;\nstruct SoundMultiPool gUnusedLoadedPool;\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\nstruct Unk1Pool gUnkPool1;\nstruct UnkPool gUnkPool2;\nstruct UnkPool gUnkPool3;\n#endif\n\nstruct PoolSplit sSessionPoolSplit;\nstruct PoolSplit2 sSeqAndBankPoolSplit;\nstruct PoolSplit sPersistentCommonPoolSplit;\nstruct PoolSplit sTemporaryCommonPoolSplit;\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\nu8 gUnkLoadStatus[0x40];\n#endif\nu8 gBankLoadStatus[0x40];\nu8 gSeqLoadStatus[0x100];\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\nvolatile u8 gAudioResetStatus;\nu8 gAudioResetPresetIdToLoad;\ns32 gAudioResetFadeOutFramesLeft;\n#endif\n\nu8 gAudioUnusedBuffer[0x1000];\n\nextern s32 gMaxAudioCmds;\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\nvoid *get_bank_or_seq_inner(s32 poolIdx, s32 arg1, s32 bankId);\nstruct UnkEntry *func_sh_802f1ec4(u32 size);\nvoid func_sh_802f2158(struct UnkEntry *entry);\nstruct UnkEntry *unk_pool2_alloc(u32 size);\nvoid func_sh_802F2320(struct UnkEntry *entry, struct AudioBankSample *sample);\nvoid func_sh_802f23ec(void);\n\nvoid unk_pools_init(u32 size1, u32 size2);\n#endif\n\n#if defined(VERSION_EU)\n/**\n * Assuming 'k' in [9, 24],\n * Computes a newton's method step for f(x) = x^k - d\n */\nf64 root_newton_step(f64 x, s32 k, f64 d) {\n    f64 deg2 = x * x;\n    f64 deg4 = deg2 * deg2;\n    f64 deg8 = deg4 * deg4;\n    s32 degree = k - 9;\n    f64 fx;\n\n    f64 deriv = deg8;\n    if (degree & 1) {\n        deriv *= x;\n    }\n    if (degree & 2) {\n        deriv *= deg2;\n    }\n    if (degree & 4) {\n        deriv *= deg4;\n    }\n    if (degree & 8) {\n        deriv *= deg8;\n    }\n    fx = deriv * x - d;\n    deriv = k * deriv;\n    return x - fx / deriv;\n}\n\n/**\n * Assuming 'k' in [9, 24],\n * Computes d ^ (1/k)\n *\n * @return the root, or 1.0 if d is 0\n */\nf64 kth_root(f64 d, s32 k) {\n    f64 root = 1.5;\n    f64 next;\n    f64 diff;\n    s32 i;\n    if (d == 0.0) {\n        root = 1.0;\n    } else {\n        for (i = 0; i < 64; i++) {\n            if (1) {\n            }\n            next = root_newton_step(root, k, d);\n            diff = next - root;\n\n            if (diff < 0) {\n                diff = -diff;\n            }\n\n            if (diff < 1e-07) {\n                root = next;\n                break;\n            } else {\n                root = next;\n            }\n        }\n    }\n\n    return root;\n}\n\nvoid build_vol_rampings_table(s32 UNUSED unused, s32 len) {\n    s32 i;\n    s32 step;\n    s32 d;\n    s32 k = len / 8;\n\n    for (step = 0, i = 0; i < 0x400; step += 32, i++) {\n        d = step;\n        if (step == 0) {\n            d = 1;\n        }\n\n        gLeftVolRampings[0][i]  = kth_root(      d, k - 1);\n        gRightVolRampings[0][i] = kth_root(1.0 / d, k - 1) * 65536.0;\n        gLeftVolRampings[1][i]  = kth_root(      d, k);\n        gRightVolRampings[1][i] = kth_root(1.0 / d, k) * 65536.0;\n        gLeftVolRampings[2][i]  = kth_root(      d, k + 1);\n        gRightVolRampings[2][i] = kth_root(1.0 / d, k + 1) * 65536.0;\n    }\n}\n#endif\n\nvoid reset_bank_and_seq_load_status(void) {\n    s32 i;\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    for (i = 0; i < 64; i++) {\n        if (gBankLoadStatus[i] != SOUND_LOAD_STATUS_5) {\n            gBankLoadStatus[i] = SOUND_LOAD_STATUS_NOT_LOADED;\n        }\n    }\n\n    for (i = 0; i < 64; i++) {\n        if (gUnkLoadStatus[i] != SOUND_LOAD_STATUS_5) {\n            gUnkLoadStatus[i] = SOUND_LOAD_STATUS_NOT_LOADED;\n        }\n    }\n\n    for (i = 0; i < 256; i++) {\n        if (gSeqLoadStatus[i] != SOUND_LOAD_STATUS_5) {\n            gSeqLoadStatus[i] = SOUND_LOAD_STATUS_NOT_LOADED;\n        }\n    }\n#else\n    for (i = 0; i < 64; i++) {\n        gBankLoadStatus[i] = SOUND_LOAD_STATUS_NOT_LOADED;\n    }\n\n    for (i = 0; i < 256; i++) {\n        gSeqLoadStatus[i] = SOUND_LOAD_STATUS_NOT_LOADED;\n    }\n#endif\n}\n\nvoid discard_bank(s32 bankId) {\n    s32 i;\n\n    for (i = 0; i < gMaxSimultaneousNotes; i++) {\n        struct Note *note = &gNotes[i];\n\n#if defined(VERSION_EU)\n        if (note->noteSubEu.bankId == bankId)\n#else\n        if (note->bankId == bankId)\n#endif\n        {\n            // (These prints are unclear. Arguments are picked semi-randomly.)\n            eu_stubbed_printf_1(\"Warning:Kill Note  %x \\n\", i);\n#if defined(VERSION_SH) || defined(VERSION_CN)\n            if (note->unkSH34 == NOTE_PRIORITY_DISABLED && note->priority)\n#else\n            if (note->priority >= NOTE_PRIORITY_MIN)\n#endif\n            {\n                eu_stubbed_printf_3(\"Kill Voice %d (ID %d) %d\\n\", note->waveId,\n                        bankId, note->priority);\n                eu_stubbed_printf_0(\"Warning: Running Sequence's data disappear!\\n\");\n                note->parentLayer->enabled = FALSE; // is 0x48, should be 0x44\n                note->parentLayer->finished = TRUE;\n            }\n            note_disable(note);\n            audio_list_remove(&note->listItem);\n            audio_list_push_back(&gNoteFreeLists.disabled, &note->listItem);\n        }\n    }\n}\n\nvoid discard_sequence(s32 seqId) {\n    s32 i;\n\n    for (i = 0; i < SEQUENCE_PLAYERS; i++) {\n        if (gSequencePlayers[i].enabled && gSequencePlayers[i].seqId == seqId) {\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n            sequence_player_disable(&gSequencePlayers[i]);\n#else\n            sequence_player_disable(gSequencePlayers + i);\n#endif\n        }\n    }\n}\n\nvoid *soundAlloc(struct SoundAllocPool *pool, u32 size) {\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    u8 *start;\n    u8 *pos;\n    u32 alignedSize = ALIGN16(size);\n\n    start = pool->cur;\n    if (start + alignedSize <= pool->start + pool->size) {\n        pool->cur += alignedSize;\n        for (pos = start; pos < pool->cur; pos++) {\n            *pos = 0;\n        }\n    } else {\n        eu_stubbed_printf_1(\"Heap OverFlow : Not Allocate %d!\\n\", size);\n        return NULL;\n    }\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    pool->numAllocatedEntries++;\n#endif\n    return start;\n#else\n    u8 *start;\n    s32 last;\n    s32 i;\n\n    if ((pool->cur + ALIGN16(size) <= pool->size + pool->start)) {\n        start = pool->cur;\n        pool->cur += ALIGN16(size);\n        last = pool->cur - start - 1;\n        for (i = 0; i <= last; i++) {\n            start[i] = 0;\n        }\n    } else {\n        return NULL;\n    }\n    return start;\n#endif\n}\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\nvoid *sound_alloc_uninitialized(struct SoundAllocPool *pool, u32 size) {\n    u8 *start;\n    u32 alignedSize = ALIGN16(size);\n\n    start = pool->cur;\n    if (start + alignedSize <= pool->start + pool->size) {\n        pool->cur += alignedSize;\n    } else {\n        return NULL;\n    }\n\n    pool->numAllocatedEntries++;\n    return start;\n}\n#endif\n\nvoid sound_alloc_pool_init(struct SoundAllocPool *pool, void *memAddr, u32 size) {\n    pool->cur = pool->start = (u8 *) ALIGN16((uintptr_t) memAddr);\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    pool->size = size - ((uintptr_t) memAddr & 0xf);\n#else\n    pool->size = size;\n#endif\n    pool->numAllocatedEntries = 0;\n}\n\nvoid persistent_pool_clear(struct PersistentPool *persistent) {\n    persistent->pool.numAllocatedEntries = 0;\n    persistent->pool.cur = persistent->pool.start;\n    persistent->numEntries = 0;\n}\n\nvoid temporary_pool_clear(struct TemporaryPool *temporary) {\n    temporary->pool.numAllocatedEntries = 0;\n    temporary->pool.cur = temporary->pool.start;\n    temporary->nextSide = 0;\n    temporary->entries[0].ptr = temporary->pool.start;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    temporary->entries[1].ptr = temporary->pool.start + temporary->pool.size;\n#else\n    temporary->entries[1].ptr = temporary->pool.size + temporary->pool.start;\n#endif\n    temporary->entries[0].id = -1; // should be at 1e not 1c\n    temporary->entries[1].id = -1;\n}\n\nvoid unused_803160F8(struct SoundAllocPool *pool) {\n    pool->numAllocatedEntries = 0;\n    pool->cur = pool->start;\n}\n\nextern s32 D_SH_80315EE8;\nvoid sound_init_main_pools(s32 sizeForAudioInitPool) {\n    sound_alloc_pool_init(&gAudioInitPool, gAudioHeap, sizeForAudioInitPool);\n    sound_alloc_pool_init(&gAudioSessionPool, gAudioHeap + sizeForAudioInitPool, gAudioHeapSize - sizeForAudioInitPool);\n}\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n#define SOUND_ALLOC_FUNC sound_alloc_uninitialized\n#else\n#define SOUND_ALLOC_FUNC soundAlloc\n#endif\n\nvoid session_pools_init(struct PoolSplit *a) {\n    gAudioSessionPool.cur = gAudioSessionPool.start;\n    sound_alloc_pool_init(&gNotesAndBuffersPool, SOUND_ALLOC_FUNC(&gAudioSessionPool, a->wantSeq), a->wantSeq);\n    sound_alloc_pool_init(&gSeqAndBankPool, SOUND_ALLOC_FUNC(&gAudioSessionPool, a->wantCustom), a->wantCustom);\n}\n\nvoid seq_and_bank_pool_init(struct PoolSplit2 *a) {\n    gSeqAndBankPool.cur = gSeqAndBankPool.start;\n    sound_alloc_pool_init(&gPersistentCommonPool, SOUND_ALLOC_FUNC(&gSeqAndBankPool, a->wantPersistent), a->wantPersistent);\n    sound_alloc_pool_init(&gTemporaryCommonPool, SOUND_ALLOC_FUNC(&gSeqAndBankPool, a->wantTemporary), a->wantTemporary);\n}\n\nvoid persistent_pools_init(struct PoolSplit *a) {\n    gPersistentCommonPool.cur = gPersistentCommonPool.start;\n    sound_alloc_pool_init(&gSeqLoadedPool.persistent.pool, SOUND_ALLOC_FUNC(&gPersistentCommonPool, a->wantSeq), a->wantSeq);\n    sound_alloc_pool_init(&gBankLoadedPool.persistent.pool, SOUND_ALLOC_FUNC(&gPersistentCommonPool, a->wantBank), a->wantBank);\n    sound_alloc_pool_init(&gUnusedLoadedPool.persistent.pool, SOUND_ALLOC_FUNC(&gPersistentCommonPool, a->wantUnused),\n                  a->wantUnused);\n    persistent_pool_clear(&gSeqLoadedPool.persistent);\n    persistent_pool_clear(&gBankLoadedPool.persistent);\n    persistent_pool_clear(&gUnusedLoadedPool.persistent);\n}\n\nvoid temporary_pools_init(struct PoolSplit *a) {\n    gTemporaryCommonPool.cur = gTemporaryCommonPool.start;\n    sound_alloc_pool_init(&gSeqLoadedPool.temporary.pool, SOUND_ALLOC_FUNC(&gTemporaryCommonPool, a->wantSeq), a->wantSeq);\n    sound_alloc_pool_init(&gBankLoadedPool.temporary.pool, SOUND_ALLOC_FUNC(&gTemporaryCommonPool, a->wantBank), a->wantBank);\n    sound_alloc_pool_init(&gUnusedLoadedPool.temporary.pool, SOUND_ALLOC_FUNC(&gTemporaryCommonPool, a->wantUnused),\n                  a->wantUnused);\n    temporary_pool_clear(&gSeqLoadedPool.temporary);\n    temporary_pool_clear(&gBankLoadedPool.temporary);\n    temporary_pool_clear(&gUnusedLoadedPool.temporary);\n}\n#undef SOUND_ALLOC_FUNC\n\n#if defined(VERSION_JP) || defined(VERSION_US)\nUNUSED static void unused_803163D4(void) {\n}\n#endif\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\nvoid *alloc_bank_or_seq(s32 poolIdx, s32 size, s32 arg3, s32 id) {\n#else\nvoid *alloc_bank_or_seq(struct SoundMultiPool *arg0, s32 arg1, s32 size, s32 arg3, s32 id) {\n#endif\n    // arg3 = 0, 1 or 2?\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    struct SoundMultiPool *arg0;\n#define isSound poolIdx\n#endif\n    struct TemporaryPool *tp;\n    struct SoundAllocPool *pool;\n    void *ret;\n#if defined(VERSION_JP) || defined(VERSION_US)\n    u16 UNUSED _firstVal;\n    u16 UNUSED _secondVal;\n#else\n    u16 firstVal;\n    u16 secondVal;\n#endif\n    u32 nullID = -1;\n    UNUSED s32 i;\n    u8 *table;\n#if !defined(VERSION_SH) && !defined(VERSION_CN)\n    u8 isSound;\n#endif\n#if defined(VERSION_JP) || defined(VERSION_US)\n    u16 firstVal;\n    u16 secondVal;\n    u32 bothDiscardable;\n    u32 leftDiscardable, rightDiscardable;\n    u32 leftNotLoaded, rightNotLoaded;\n    u32 leftAvail, rightAvail;\n#endif\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    switch (poolIdx) {\n        case 0:\n            arg0 = &gSeqLoadedPool;\n            table = gSeqLoadStatus;\n            break;\n\n        case 1:\n            arg0 = &gBankLoadedPool;\n            table = gBankLoadStatus;\n            break;\n\n        case 2:\n            arg0 = &gUnusedLoadedPool;\n            table = gUnkLoadStatus;\n            break;\n    }\n#endif\n\n    if (arg3 == 0) {\n        tp = &arg0->temporary;\n#if !defined(VERSION_SH) && !defined(VERSION_CN)\n        if (arg0 == &gSeqLoadedPool) {\n            table = gSeqLoadStatus;\n            isSound = FALSE;\n        } else if (arg0 == &gBankLoadedPool) {\n            table = gBankLoadStatus;\n            isSound = TRUE;\n        }\n#endif\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        if (tp->entries[0].id == (s8)nullID) {\n            firstVal = SOUND_LOAD_STATUS_NOT_LOADED;\n        } else {\n            firstVal = table[tp->entries[0].id];\n        }\n        if (tp->entries[1].id == (s8)nullID) {\n            secondVal = SOUND_LOAD_STATUS_NOT_LOADED;\n        } else {\n            secondVal = table[tp->entries[1].id];\n        }\n#else\n        firstVal  = (tp->entries[0].id == (s8)nullID ? SOUND_LOAD_STATUS_NOT_LOADED : table[tp->entries[0].id]);\n        secondVal = (tp->entries[1].id == (s8)nullID ? SOUND_LOAD_STATUS_NOT_LOADED : table[tp->entries[1].id]);\n#endif\n\n#if defined(VERSION_JP) || defined(VERSION_US)\n        leftNotLoaded = (firstVal == SOUND_LOAD_STATUS_NOT_LOADED);\n        leftDiscardable = (firstVal == SOUND_LOAD_STATUS_DISCARDABLE);\n        leftAvail = (firstVal != SOUND_LOAD_STATUS_IN_PROGRESS);\n        rightNotLoaded = (secondVal == SOUND_LOAD_STATUS_NOT_LOADED);\n        rightDiscardable = (secondVal == SOUND_LOAD_STATUS_DISCARDABLE);\n        rightAvail = (secondVal != SOUND_LOAD_STATUS_IN_PROGRESS);\n        bothDiscardable = (leftDiscardable && rightDiscardable);\n\n        if (leftNotLoaded) {\n            tp->nextSide = 0;\n        } else if (rightNotLoaded) {\n            tp->nextSide = 1;\n        } else if (bothDiscardable) {\n            // Use the opposite side from last time.\n        } else if (firstVal == SOUND_LOAD_STATUS_DISCARDABLE) { // ??! (I blame copt)\n            tp->nextSide = 0;\n        } else if (rightDiscardable) {\n            tp->nextSide = 1;\n        } else if (leftAvail) {\n            tp->nextSide = 0;\n        } else if (rightAvail) {\n            tp->nextSide = 1;\n        } else {\n            // Both left and right sides are being loaded into.\n            return NULL;\n        }\n#else\n#ifdef VERSION_EU\n        if (0) {\n            // It's unclear where these string literals go.\n            eu_stubbed_printf_0(\"DataHeap Not Allocate \\n\");\n            eu_stubbed_printf_1(\"StayHeap Not Allocate %d\\n\", 0);\n            eu_stubbed_printf_1(\"AutoHeap Not Allocate %d\\n\", 0);\n        }\n#endif\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        if (poolIdx == 1) {\n            if (firstVal == SOUND_LOAD_STATUS_4) {\n                for (i = 0; i < gMaxSimultaneousNotes; i++) {\n                    if (gNotes[i].bankId == tp->entries[0].id && gNotes[i].noteSubEu.enabled) {\n                        break;\n                    }\n                }\n                if (i == gMaxSimultaneousNotes) {\n                    if (gBankLoadStatus[tp->entries[0].id] != SOUND_LOAD_STATUS_5) {\n                        gBankLoadStatus[tp->entries[0].id] = SOUND_LOAD_STATUS_DISCARDABLE;\n                    }\n                    firstVal = SOUND_LOAD_STATUS_DISCARDABLE;\n                }\n            }\n            if (secondVal == SOUND_LOAD_STATUS_4) {\n                for (i = 0; i < gMaxSimultaneousNotes; i++) {\n                    if (gNotes[i].bankId == tp->entries[1].id && gNotes[i].noteSubEu.enabled) {\n                        break;\n                    }\n                }\n                if (i == gMaxSimultaneousNotes) {\n                    if (gBankLoadStatus[tp->entries[1].id] != SOUND_LOAD_STATUS_5) {\n                        gBankLoadStatus[tp->entries[1].id] = SOUND_LOAD_STATUS_DISCARDABLE;\n                    }\n                    secondVal = SOUND_LOAD_STATUS_DISCARDABLE;\n                }\n            }\n        }\n#endif\n\n        if (firstVal == SOUND_LOAD_STATUS_NOT_LOADED) {\n            tp->nextSide = 0;\n        } else if (secondVal == SOUND_LOAD_STATUS_NOT_LOADED) {\n            tp->nextSide = 1;\n        } else {\n            eu_stubbed_printf_0(\"WARNING: NO FREE AUTOSEQ AREA.\\n\");\n            if ((firstVal == SOUND_LOAD_STATUS_DISCARDABLE) && (secondVal == SOUND_LOAD_STATUS_DISCARDABLE)) {\n                // Use the opposite side from last time.\n            } else if (firstVal == SOUND_LOAD_STATUS_DISCARDABLE) {\n                tp->nextSide = 0;\n            } else if (secondVal == SOUND_LOAD_STATUS_DISCARDABLE) {\n                tp->nextSide = 1;\n            } else {\n#ifdef VERSION_EU\n                eu_stubbed_printf_0(\"WARNING: NO STOP AUTO AREA.\\n\");\n                eu_stubbed_printf_0(\"         AND TRY FORCE TO STOP SIDE \\n\");\n                if (firstVal != SOUND_LOAD_STATUS_IN_PROGRESS) {\n                    tp->nextSide = 0;\n                } else if (secondVal != SOUND_LOAD_STATUS_IN_PROGRESS) {\n                    tp->nextSide = 1;\n                } else {\n                    // Both left and right sides are being loaded into.\n                    eu_stubbed_printf_0(\"TWO SIDES ARE LOADING... ALLOC CANCELED.\\n\");\n                    return NULL;\n                }\n#else\n                if (poolIdx == 0) {\n                    if (firstVal == SOUND_LOAD_STATUS_COMPLETE) {\n                        for (i = 0; i < SEQUENCE_PLAYERS; i++) {\n                            if (gSequencePlayers[i].enabled && gSequencePlayers[i].seqId == tp->entries[0].id) {\n                                break;\n                            }\n                        }\n                        if (i == SEQUENCE_PLAYERS) {\n                            tp->nextSide = 0;\n                            goto out;\n                        }\n                    }\n                    if (secondVal == SOUND_LOAD_STATUS_COMPLETE) {\n                        for (i = 0; i < SEQUENCE_PLAYERS; i++) {\n                            if (gSequencePlayers[i].enabled && gSequencePlayers[i].seqId == tp->entries[1].id) {\n                                break;\n                            }\n                        }\n                        if (i == SEQUENCE_PLAYERS) {\n                            tp->nextSide = 1;\n                            goto out;\n                        }\n                    }\n                } else if (poolIdx == 1) {\n                    if (firstVal == SOUND_LOAD_STATUS_COMPLETE) {\n                        for (i = 0; i < gMaxSimultaneousNotes; i++) {\n                            if (gNotes[i].bankId == tp->entries[0].id && gNotes[i].noteSubEu.enabled) {\n                                break;\n                            }\n                        }\n                        if (i == gMaxSimultaneousNotes) {\n                            tp->nextSide = 0;\n                            goto out;\n                        }\n                    }\n                    if (secondVal == SOUND_LOAD_STATUS_COMPLETE) {\n                        for (i = 0; i < gMaxSimultaneousNotes; i++) {\n                            if (gNotes[i].bankId == tp->entries[1].id && gNotes[i].noteSubEu.enabled) {\n                                break;\n                            }\n                        }\n                        if (i == gMaxSimultaneousNotes) {\n                            tp->nextSide = 1;\n                            goto out;\n                        }\n                    }\n                }\n                if (tp->nextSide == 0) {\n                    if (firstVal == SOUND_LOAD_STATUS_IN_PROGRESS) {\n                        if (secondVal != SOUND_LOAD_STATUS_IN_PROGRESS) {\n                            tp->nextSide = 1;\n                            goto out;\n                        }\n                    } else {\n                        goto out;\n                    }\n                } else {\n                    if (secondVal == SOUND_LOAD_STATUS_IN_PROGRESS) {\n                        if (firstVal != SOUND_LOAD_STATUS_IN_PROGRESS) {\n                            tp->nextSide = 0;\n                            goto out;\n                        }\n                    } else {\n                        goto out;\n                    }\n                }\n                return NULL;\n                out:;\n#endif\n            }\n        }\n#endif\n\n        pool = &arg0->temporary.pool;\n        if (tp->entries[tp->nextSide].id != (s8)nullID) {\n            table[tp->entries[tp->nextSide].id] = SOUND_LOAD_STATUS_NOT_LOADED;\n            if (isSound == TRUE) {\n                discard_bank(tp->entries[tp->nextSide].id);\n            }\n        }\n\n        switch (tp->nextSide) {\n            case 0:\n                tp->entries[0].ptr = pool->start;\n                tp->entries[0].id = id;\n                tp->entries[0].size = size;\n\n                pool->cur = pool->start + size;\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n                if (tp->entries[1].id != (s32)nullID)\n#endif\n                if (tp->entries[1].ptr < pool->cur) {\n                    eu_stubbed_printf_0(\"WARNING: Before Area Overlaid After.\");\n\n                    // Throw out the entry on the other side if it doesn't fit.\n                    // (possible @bug: what if it's currently being loaded?)\n                    table[tp->entries[1].id] = SOUND_LOAD_STATUS_NOT_LOADED;\n\n                    switch (isSound) {\n                        case FALSE:\n                            discard_sequence(tp->entries[1].id);\n                            break;\n                        case TRUE:\n                            discard_bank(tp->entries[1].id);\n                            break;\n                    }\n\n                    tp->entries[1].id = (s32)nullID;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                    tp->entries[1].ptr = pool->start + pool->size;\n#else\n                    tp->entries[1].ptr = pool->size + pool->start;\n#endif\n                }\n\n                ret = tp->entries[0].ptr;\n                break;\n\n            case 1:\n#if defined(VERSION_SH) || defined(VERSION_CN)\n                tp->entries[1].ptr = (u8 *) ((uintptr_t) (pool->start + pool->size - size) & ~0x0f);\n#elif defined(VERSION_EU)\n                tp->entries[1].ptr = pool->start + pool->size - size - 0x10;\n#else\n                tp->entries[1].ptr = pool->size + pool->start - size - 0x10;\n#endif\n                tp->entries[1].id = id;\n                tp->entries[1].size = size;\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n                if (tp->entries[0].id != (s32)nullID)\n#endif\n                if (tp->entries[1].ptr < pool->cur) {\n                    eu_stubbed_printf_0(\"WARNING: After Area Overlaid Before.\");\n\n                    table[tp->entries[0].id] = SOUND_LOAD_STATUS_NOT_LOADED;\n\n                    switch (isSound) {\n                        case FALSE:\n                            discard_sequence(tp->entries[0].id);\n                            break;\n                        case TRUE:\n                            discard_bank(tp->entries[0].id);\n                            break;\n                    }\n\n                    tp->entries[0].id = (s32)nullID;\n                    pool->cur = pool->start;\n                }\n\n                ret = tp->entries[1].ptr;\n                break;\n\n            default:\n                eu_stubbed_printf_1(\"MEMORY:SzHeapAlloc ERROR: sza->side %d\\n\", tp->nextSide);\n                return NULL;\n        }\n\n        // Switch sides for next time in case both entries are\n        // SOUND_LOAD_STATUS_DISCARDABLE.\n        tp->nextSide ^= 1;\n\n        return ret;\n    }\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    ret = sound_alloc_uninitialized(&arg0->persistent.pool, size);\n#else\n    ret = soundAlloc(&arg0->persistent.pool, arg1 * size);\n#endif\n    arg0->persistent.entries[arg0->persistent.numEntries].ptr = ret;\n\n    if (ret == NULL)\n#else\n    arg0->persistent.entries[arg0->persistent.numEntries].ptr = soundAlloc(&arg0->persistent.pool, arg1 * size);\n\n    if (arg0->persistent.entries[arg0->persistent.numEntries].ptr == NULL)\n#endif\n    {\n        switch (arg3) {\n            case 2:\n#if defined(VERSION_EU)\n                eu_stubbed_printf_0(\"MEMORY:StayHeap OVERFLOW.\");\n                return alloc_bank_or_seq(arg0, arg1, size, 0, id);\n#elif defined(VERSION_SH) || defined(VERSION_CN)\n                return alloc_bank_or_seq(poolIdx, size, 0, id);\n#else\n                // Prevent tail call optimization.\n                ret = alloc_bank_or_seq(arg0, arg1, size, 0, id);\n                return ret;\n#endif\n            case 1:\n#if defined(VERSION_SH) || defined(VERSION_CN)\n            case 0:\n#endif\n                eu_stubbed_printf_1(\"MEMORY:StayHeap OVERFLOW (REQ:%d)\", arg1 * size);\n                return NULL;\n        }\n    }\n\n    // TODO: why is this guaranteed to write <= 32 entries...?\n    // Because the buffer is small enough that more don't fit?\n    arg0->persistent.entries[arg0->persistent.numEntries].id = id;\n    arg0->persistent.entries[arg0->persistent.numEntries].size = size;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    return arg0->persistent.entries[arg0->persistent.numEntries++].ptr;\n#else\n    arg0->persistent.numEntries++; return arg0->persistent.entries[arg0->persistent.numEntries - 1].ptr;\n#endif\n#if defined(VERSION_SH) || defined(VERSION_CN)\n#undef isSound\n#endif\n}\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\nvoid *get_bank_or_seq(s32 poolIdx, s32 arg1, s32 id) {\n    void *ret;\n\n    ret = unk_pool1_lookup(poolIdx, id);\n    if (ret != NULL) {\n        return ret;\n    }\n    if (arg1 == 3) {\n        return NULL;\n    }\n    return get_bank_or_seq_inner(poolIdx, arg1, id);\n}\nvoid *get_bank_or_seq_inner(s32 poolIdx, s32 arg1, s32 bankId) {\n    u32 i;\n    struct SoundMultiPool* loadedPool;\n    struct TemporaryPool* temporary;\n    struct PersistentPool* persistent;\n\n    switch (poolIdx) {\n        case 0:\n            loadedPool = &gSeqLoadedPool;\n            break;\n        case 1:\n            loadedPool = &gBankLoadedPool;\n            break;\n        case 2:\n            loadedPool = &gUnusedLoadedPool;\n            break;\n    }\n\n    temporary = &loadedPool->temporary;\n    if (arg1 == 0) {\n        if (temporary->entries[0].id == bankId) {\n            temporary->nextSide = 1;\n            return temporary->entries[0].ptr;\n        } else if (temporary->entries[1].id == bankId) {\n            temporary->nextSide = 0;\n            return temporary->entries[1].ptr;\n        } else {\n            return NULL;\n        }\n    }\n\n    persistent = &loadedPool->persistent;\n    for (i = 0; i < persistent->numEntries; i++) {\n        if (persistent->entries[i].id == bankId) {\n            return persistent->entries[i].ptr;\n        }\n    }\n\n    if (arg1 == 2) {\n        return get_bank_or_seq(poolIdx, 0, bankId);\n    }\n    return NULL;\n}\n#endif\n#if !defined(VERSION_SH) && !defined(VERSION_CN)\nvoid *get_bank_or_seq(struct SoundMultiPool *arg0, s32 arg1, s32 id) {\n    u32 i;\n    UNUSED void *ret;\n    struct TemporaryPool *temporary = &arg0->temporary;\n\n    if (arg1 == 0) {\n        // Try not to overwrite sound that we have just accessed, by setting nextSide appropriately.\n        if (temporary->entries[0].id == id) {\n            temporary->nextSide = 1;\n            return temporary->entries[0].ptr;\n        } else if (temporary->entries[1].id == id) {\n            temporary->nextSide = 0;\n            return temporary->entries[1].ptr;\n        }\n        eu_stubbed_printf_1(\"Auto Heap Unhit for ID %d\\n\", id);\n        return NULL;\n    } else {\n        struct PersistentPool *persistent = &arg0->persistent;\n        for (i = 0; i < persistent->numEntries; i++) {\n            if (id == persistent->entries[i].id) {\n                eu_stubbed_printf_2(\"Cache hit %d at stay %d\\n\", id, i);\n                return persistent->entries[i].ptr;\n            }\n        }\n\n        if (arg1 == 2) {\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n            return get_bank_or_seq(arg0, 0, id);\n#else\n            // Prevent tail call optimization by using a temporary.\n            // Either copt or -Wo,-notail.\n            ret = get_bank_or_seq(arg0, 0, id);\n            return ret;\n#endif\n        }\n        return NULL;\n    }\n}\n#endif\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\nvoid func_eu_802e27e4_unused(f32 arg0, f32 arg1, u16 *arg2) {\n    s32 i;\n    f32 tmp[16];\n\n    tmp[0] = (f32) (arg1 * 262159.0f);\n    tmp[8] = (f32) (arg0 * 262159.0f);\n    tmp[1] = (f32) ((arg1 * arg0) * 262159.0f);\n    tmp[9] = (f32) (((arg0 * arg0) + arg1) * 262159.0f);\n\n    for (i = 2; i < 8; i++) {\n        //! @bug they probably meant to store the value to tmp[i] and tmp[8 + i]\n        arg2[i] = arg1 * tmp[i - 2] + arg0 * tmp[i - 1];\n        arg2[8 + i] = arg1 * tmp[6 + i] + arg0 * tmp[7 + i];\n    }\n\n    for (i = 0; i < 16; i++) {\n        arg2[i] = tmp[i];\n    }\n\n#ifdef VERSION_EU\n    for (i = 0; i < 8; i++) {\n        eu_stubbed_printf_1(\"%d \", arg2[i]);\n    }\n    eu_stubbed_printf_0(\"\\n\");\n\n    for (i = 8; i < 16; i++) {\n        eu_stubbed_printf_1(\"%d \", arg2[i]);\n    }\n    eu_stubbed_printf_0(\"\\n\");\n#endif\n}\n#endif\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\nvoid fill_zero_filter(s16 filter[]) {\n    s32 i;\n    for (i = 0; i < 8; i++) {\n        filter[i] = 0;\n    }\n}\n\nextern s16 unk_sh_data_3[15 * 8];\nextern s16 unk_sh_data_4[15 * 8];\nvoid func_sh_802F0DE8(s16 filter[8], s32 arg1) {\n    s32 i;\n    s16 *ptr = &unk_sh_data_3[8 * (arg1 - 1)];\n    for (i = 0; i < 8; i++) {\n        filter[i] = ptr[i];\n    }\n}\n\nvoid func_sh_802F0E40(s16 filter[8], s32 arg1) { // Unused\n    s32 i;\n    s16 *ptr = &unk_sh_data_4[8 * (arg1 - 1)];\n    for (i = 0; i < 8; i++) {\n        filter[i] = ptr[i];\n    }\n}\n\nvoid fill_filter(s16 filter[8], s32 arg1, s32 arg2) {\n    s32 i;\n    s16 *ptr;\n    if (arg1 != 0) {\n        func_sh_802F0DE8(filter, arg1);\n    } else {\n        fill_zero_filter(filter);\n    }\n    if (arg2 != 0) {\n        ptr = &unk_sh_data_4[8 * (arg2 - 1)];\n        for (i = 0; i < 8; i++) {\n            filter[i] += ptr[i];\n        }\n    }\n}\n#endif\n\nvoid decrease_reverb_gain(void) {\n#if defined(VERSION_EU)\n    s32 i;\n    for (i = 0; i < gNumSynthesisReverbs; i++) {\n        gSynthesisReverbs[i].reverbGain -= gSynthesisReverbs[i].reverbGain / 8;\n    }\n#elif defined(VERSION_JP) || defined(VERSION_US)\n    gSynthesisReverb.reverbGain -= gSynthesisReverb.reverbGain / 4;\n#else\n    s32 i, j;\n    s32 v0 = gAudioBufferParameters.presetUnk4 == 2 ? 2 : 1;\n    for (i = 0; i < gNumSynthesisReverbs; i++) {\n        for (j = 0; j < v0; j++) {\n            gSynthesisReverbs[i].reverbGain -= gSynthesisReverbs[i].reverbGain / 3;\n        }\n    }\n#endif\n}\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\nvoid clear_curr_ai_buffer(void) {\n    s32 currIndex = gCurrAiBufferIndex;\n    s32 i;\n    gAiBufferLengths[currIndex] = gAudioBufferParameters.minAiBufferLength;\n    for (i = 0; i < (s32) (AIBUFFER_LEN / sizeof(s16)); i++) {\n        gAiBuffers[currIndex][i] = 0;\n    }\n}\n#endif\n\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\ns32 audio_shut_down_and_reset_step(void) {\n    s32 i;\n    s32 j;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    s32 num = gAudioBufferParameters.presetUnk4 == 2 ? 2 : 1;\n#endif\n\n    switch (gAudioResetStatus) {\n        case 5:\n            for (i = 0; i < SEQUENCE_PLAYERS; i++) {\n                sequence_player_disable(&gSequencePlayers[i]);\n            }\n#if defined(VERSION_SH) || defined(VERSION_CN)\n            gAudioResetFadeOutFramesLeft = 4 / num;\n#else\n            gAudioResetFadeOutFramesLeft = 4;\n#endif\n            gAudioResetStatus--;\n            break;\n        case 4:\n            if (gAudioResetFadeOutFramesLeft != 0) {\n                gAudioResetFadeOutFramesLeft--;\n                decrease_reverb_gain();\n            } else {\n                for (i = 0; i < gMaxSimultaneousNotes; i++) {\n                    if (gNotes[i].noteSubEu.enabled && gNotes[i].adsr.state != ADSR_STATE_DISABLED) {\n                        gNotes[i].adsr.fadeOutVel = gAudioBufferParameters.updatesPerFrameInv;\n                        gNotes[i].adsr.action |= ADSR_ACTION_RELEASE;\n                    }\n                }\n#if defined(VERSION_SH) || defined(VERSION_CN)\n                gAudioResetFadeOutFramesLeft = 16 / num;\n#else\n                gAudioResetFadeOutFramesLeft = 16;\n#endif\n                gAudioResetStatus--;\n            }\n            break;\n        case 3:\n            if (gAudioResetFadeOutFramesLeft != 0) {\n                gAudioResetFadeOutFramesLeft--;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n                if (1) {\n                }\n#endif\n                decrease_reverb_gain();\n            } else {\n                for (i = 0; i < NUMAIBUFFERS; i++) {\n                    for (j = 0; j < (s32) (AIBUFFER_LEN / sizeof(s16)); j++) {\n                        gAiBuffers[i][j] = 0;\n                    }\n                }\n#if defined(VERSION_SH) || defined(VERSION_CN)\n                gAudioResetFadeOutFramesLeft = 4 / num;\n#else\n                gAudioResetFadeOutFramesLeft = 4;\n#endif\n                gAudioResetStatus--;\n            }\n            break;\n        case 2:\n#if defined(VERSION_SH) || defined(VERSION_CN)\n            clear_curr_ai_buffer();\n#endif\n            if (gAudioResetFadeOutFramesLeft != 0) {\n                gAudioResetFadeOutFramesLeft--;\n            } else {\n                gAudioResetStatus--;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n                func_sh_802f23ec();\n#endif\n            }\n            break;\n        case 1:\n            audio_reset_session();\n            gAudioResetStatus = 0;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n            for (i = 0; i < NUMAIBUFFERS; i++) {\n                gAiBufferLengths[i] = gAudioBufferParameters.maxAiBufferLength;\n                for (j = 0; j < (s32) (AIBUFFER_LEN / sizeof(s16)); j++) {\n                    gAiBuffers[i][j] = 0;\n                }\n            }\n#endif\n    }\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    if (gAudioResetFadeOutFramesLeft) {\n    }\n#endif\n    if (gAudioResetStatus < 3) {\n        return 0;\n    }\n    return 1;\n}\n#else\n/**\n * Waits until a specified number of audio frames have been created\n */\nvoid wait_for_audio_frames(s32 frames) {\n    gAudioFrameCount = 0;\n    // Sound thread will update gAudioFrameCount\n    while (gAudioFrameCount < frames) {\n        // spin\n    }\n}\n#endif\n\n#if defined(VERSION_JP) || defined(VERSION_US)\nvoid audio_reset_session(struct AudioSessionSettings *preset) {\n#else\nvoid audio_reset_session(void) {\n    struct AudioSessionSettingsEU *preset = &gAudioSessionPresets[gAudioResetPresetIdToLoad];\n    struct ReverbSettingsEU *reverbSettings;\n#endif\n    s16 *mem;\n#if defined(VERSION_JP) || defined(VERSION_US)\n    s8 updatesPerFrame;\n    s32 reverbWindowSize;\n    s32 k;\n#endif\n    s32 i;\n    s32 j;\n    s32 persistentMem;\n    s32 temporaryMem;\n    s32 totalMem;\n    s32 wantMisc;\n#if defined(VERSION_JP) || defined(VERSION_US)\n    s32 frames;\n    s32 remainingDmas;\n#else\n    struct SynthesisReverb *reverb;\n#endif\n    eu_stubbed_printf_1(\"Heap Reconstruct Start %x\\n\", gAudioResetPresetIdToLoad);\n\n#if defined(VERSION_JP) || defined(VERSION_US)\n    if (gAudioLoadLock != AUDIO_LOCK_UNINITIALIZED) {\n        decrease_reverb_gain();\n        for (i = 0; i < gMaxSimultaneousNotes; i++) {\n            if (gNotes[i].enabled && gNotes[i].adsr.state != ADSR_STATE_DISABLED) {\n                gNotes[i].adsr.fadeOutVel = 0x8000 / gAudioUpdatesPerFrame;\n                gNotes[i].adsr.action |= ADSR_ACTION_RELEASE;\n            }\n        }\n\n        // Wait for all notes to stop playing\n        frames = 0;\n        for (;;) {\n            wait_for_audio_frames(1);\n            frames++;\n            if (frames > 4 * 60) {\n                // Break after 4 seconds\n                break;\n            }\n\n            for (i = 0; i < gMaxSimultaneousNotes; i++) {\n                if (gNotes[i].enabled) {\n                    break;\n                }\n            }\n\n            if (i == gMaxSimultaneousNotes) {\n                // All zero, break early\n                break;\n            }\n        }\n\n        // Wait for the reverb to finish as well\n        decrease_reverb_gain();\n        wait_for_audio_frames(3);\n\n        // The audio interface is double buffered; thus, we have to take the\n        // load lock for 2 frames for the buffers to free up before we can\n        // repurpose memory. Make that 3 frames, just in case.\n        gAudioLoadLock = AUDIO_LOCK_LOADING;\n        wait_for_audio_frames(3);\n\n        remainingDmas = gCurrAudioFrameDmaCount;\n        while (remainingDmas > 0) {\n            for (i = 0; i < gCurrAudioFrameDmaCount; i++) {\n                if (osRecvMesg(&gCurrAudioFrameDmaQueue, NULL, OS_MESG_NOBLOCK) == 0)\n                    remainingDmas--;\n            }\n        }\n        gCurrAudioFrameDmaCount = 0;\n\n        for (j = 0; j < NUMAIBUFFERS; j++) {\n            for (k = 0; k < (s32) (AIBUFFER_LEN / sizeof(s16)); k++) {\n                gAiBuffers[j][k] = 0;\n            }\n        }\n    }\n#endif\n\n    gSampleDmaNumListItems = 0;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    gAudioBufferParameters.frequency = preset->frequency;\n    gAudioBufferParameters.aiFrequency = osAiSetFrequency(gAudioBufferParameters.frequency);\n    gAudioBufferParameters.samplesPerFrameTarget = ALIGN16(gAudioBufferParameters.frequency / gRefreshRate);\n    gAudioBufferParameters.minAiBufferLength = gAudioBufferParameters.samplesPerFrameTarget - 0x10;\n    gAudioBufferParameters.maxAiBufferLength = gAudioBufferParameters.samplesPerFrameTarget + 0x10;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    gAudioBufferParameters.updatesPerFrame = (gAudioBufferParameters.samplesPerFrameTarget + 0x10) / 192 + 1;\n    gAudioBufferParameters.samplesPerUpdate = (gAudioBufferParameters.samplesPerFrameTarget / gAudioBufferParameters.updatesPerFrame) & -8;\n#else\n    gAudioBufferParameters.updatesPerFrame = (gAudioBufferParameters.samplesPerFrameTarget + 0x10) / 160 + 1;\n    gAudioBufferParameters.samplesPerUpdate = (gAudioBufferParameters.samplesPerFrameTarget / gAudioBufferParameters.updatesPerFrame) & 0xfff8;\n#endif\n    gAudioBufferParameters.samplesPerUpdateMax = gAudioBufferParameters.samplesPerUpdate + 8;\n    gAudioBufferParameters.samplesPerUpdateMin = gAudioBufferParameters.samplesPerUpdate - 8;\n    gAudioBufferParameters.resampleRate = 32000.0f / FLOAT_CAST(gAudioBufferParameters.frequency);\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    gAudioBufferParameters.unkUpdatesPerFrameScaled = (1.0f / 256.0f) / gAudioBufferParameters.updatesPerFrame;\n#else\n    gAudioBufferParameters.unkUpdatesPerFrameScaled = (3.0f / 1280.0f) / gAudioBufferParameters.updatesPerFrame;\n#endif\n    gAudioBufferParameters.updatesPerFrameInv = 1.0f / gAudioBufferParameters.updatesPerFrame;\n\n    gMaxSimultaneousNotes = preset->maxSimultaneousNotes;\n    gVolume = preset->volume;\n    gTempoInternalToExternal = (u32) (gAudioBufferParameters.updatesPerFrame * 2880000.0f / gTatumsPerBeat / D_EU_802298D0);\n\n    gAudioBufferParameters.presetUnk4 = preset->unk1;\n    gAudioBufferParameters.samplesPerFrameTarget *= gAudioBufferParameters.presetUnk4;\n    gAudioBufferParameters.maxAiBufferLength *= gAudioBufferParameters.presetUnk4;\n    gAudioBufferParameters.minAiBufferLength *= gAudioBufferParameters.presetUnk4;\n    gAudioBufferParameters.updatesPerFrame *= gAudioBufferParameters.presetUnk4;\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    if (gAudioBufferParameters.presetUnk4 >= 2) {\n        gAudioBufferParameters.maxAiBufferLength -= 0x10;\n    }\n    gMaxAudioCmds = gMaxSimultaneousNotes * 0x14 * gAudioBufferParameters.updatesPerFrame + preset->numReverbs * 0x20 + 0x1E0;\n#else\n    gMaxAudioCmds = gMaxSimultaneousNotes * 0x10 * gAudioBufferParameters.updatesPerFrame + preset->numReverbs * 0x20 + 0x300;\n#endif\n#else\n    reverbWindowSize = preset->reverbWindowSize;\n    gAiFrequency = osAiSetFrequency(preset->frequency);\n    gMaxSimultaneousNotes = preset->maxSimultaneousNotes;\n    gSamplesPerFrameTarget = ALIGN16(gAiFrequency / 60);\n    gReverbDownsampleRate = preset->reverbDownsampleRate;\n\n    switch (gReverbDownsampleRate) {\n        case 1:\n            sReverbDownsampleRateLog = 0;\n            break;\n        case 2:\n            sReverbDownsampleRateLog = 1;\n            break;\n        case 4:\n            sReverbDownsampleRateLog = 2;\n            break;\n        case 8:\n            sReverbDownsampleRateLog = 3;\n            break;\n        case 16:\n            sReverbDownsampleRateLog = 4;\n            break;\n        default:\n            sReverbDownsampleRateLog = 0;\n    }\n\n    gReverbDownsampleRate = preset->reverbDownsampleRate;\n    gVolume = preset->volume;\n    gMinAiBufferLength = gSamplesPerFrameTarget - 0x10;\n    updatesPerFrame = gSamplesPerFrameTarget / 160 + 1;\n    gAudioUpdatesPerFrame = gSamplesPerFrameTarget / 160 + 1;\n\n    // Compute conversion ratio from the internal unit tatums/tick to the\n    // external beats/minute (JP) or tatums/minute (US). In practice this is\n    // 300 on JP and 14360 on US.\n#ifdef VERSION_JP\n    gTempoInternalToExternal = updatesPerFrame * 3600 / gTatumsPerBeat;\n#else\n    gTempoInternalToExternal = (u32)(updatesPerFrame * 2880000.0f / gTatumsPerBeat / 16.713f);\n#endif\n    gMaxAudioCmds = gMaxSimultaneousNotes * 20 * updatesPerFrame + 320;\n#endif\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    persistentMem = DOUBLE_SIZE_ON_64_BIT(preset->persistentSeqMem + preset->persistentBankMem + preset->unk18 + preset->unkMem28 + 0x10);\n    temporaryMem = DOUBLE_SIZE_ON_64_BIT(preset->temporarySeqMem + preset->temporaryBankMem + preset->unk24 + preset->unkMem2C + 0x10);\n#elif defined(VERSION_EU)\n    persistentMem = DOUBLE_SIZE_ON_64_BIT(preset->persistentSeqMem + preset->persistentBankMem);\n    temporaryMem = DOUBLE_SIZE_ON_64_BIT(preset->temporarySeqMem + preset->temporaryBankMem);\n#else\n    persistentMem = DOUBLE_SIZE_ON_64_BIT(preset->persistentBankMem + preset->persistentSeqMem);\n    temporaryMem = DOUBLE_SIZE_ON_64_BIT(preset->temporaryBankMem + preset->temporarySeqMem);\n#endif\n    totalMem = persistentMem + temporaryMem;\n    wantMisc = gAudioSessionPool.size - totalMem - 0x100;\n    sSessionPoolSplit.wantSeq = wantMisc;\n    sSessionPoolSplit.wantCustom = totalMem;\n    session_pools_init(&sSessionPoolSplit);\n    sSeqAndBankPoolSplit.wantPersistent = persistentMem;\n    sSeqAndBankPoolSplit.wantTemporary = temporaryMem;\n    seq_and_bank_pool_init(&sSeqAndBankPoolSplit);\n    sPersistentCommonPoolSplit.wantSeq = DOUBLE_SIZE_ON_64_BIT(preset->persistentSeqMem);\n    sPersistentCommonPoolSplit.wantBank = DOUBLE_SIZE_ON_64_BIT(preset->persistentBankMem);\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    sPersistentCommonPoolSplit.wantUnused = preset->unk18;\n#else\n    sPersistentCommonPoolSplit.wantUnused = 0;\n#endif\n    persistent_pools_init(&sPersistentCommonPoolSplit);\n    sTemporaryCommonPoolSplit.wantSeq = DOUBLE_SIZE_ON_64_BIT(preset->temporarySeqMem);\n    sTemporaryCommonPoolSplit.wantBank = DOUBLE_SIZE_ON_64_BIT(preset->temporaryBankMem);\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    sTemporaryCommonPoolSplit.wantUnused = preset->unk24;\n#else\n    sTemporaryCommonPoolSplit.wantUnused = 0;\n#endif\n    temporary_pools_init(&sTemporaryCommonPoolSplit);\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    unk_pools_init(preset->unkMem28, preset->unkMem2C);\n#endif\n    reset_bank_and_seq_load_status();\n\n#if defined(VERSION_JP) || defined(VERSION_US)\n    for (j = 0; j < 2; j++) {\n        gAudioCmdBuffers[j] = soundAlloc(&gNotesAndBuffersPool, gMaxAudioCmds * sizeof(u64));\n    }\n#endif\n\n    gNotes = soundAlloc(&gNotesAndBuffersPool, gMaxSimultaneousNotes * sizeof(struct Note));\n    note_init_all();\n    init_note_free_list();\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    gNoteSubsEu = soundAlloc(&gNotesAndBuffersPool, (gAudioBufferParameters.updatesPerFrame * gMaxSimultaneousNotes) * sizeof(struct NoteSubEu));\n\n    for (j = 0; j != 2; j++) {\n        gAudioCmdBuffers[j] = soundAlloc(&gNotesAndBuffersPool, gMaxAudioCmds * sizeof(u64));\n    }\n\n    for (j = 0; j < 4; j++) {\n        gSynthesisReverbs[j].useReverb = 0;\n    }\n    gNumSynthesisReverbs = preset->numReverbs;\n    for (j = 0; j < gNumSynthesisReverbs; j++) {\n        reverb = &gSynthesisReverbs[j];\n        reverbSettings = &preset->reverbSettings[j];\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        reverb->downsampleRate = reverbSettings->downsampleRate;\n        reverb->windowSize = reverbSettings->windowSize * 64;\n        reverb->windowSize /= reverb->downsampleRate;\n#else\n        reverb->windowSize = reverbSettings->windowSize * 64;\n        reverb->downsampleRate = reverbSettings->downsampleRate;\n#endif\n        reverb->reverbGain = reverbSettings->gain;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        reverb->panRight = reverbSettings->unk4;\n        reverb->panLeft = reverbSettings->unk6;\n        reverb->unk5 = reverbSettings->unk8;\n        reverb->unk08 = reverbSettings->unkA;\n#endif\n        reverb->useReverb = 8;\n        reverb->ringBuffer.left = soundAlloc(&gNotesAndBuffersPool, reverb->windowSize * 2);\n        reverb->ringBuffer.right = soundAlloc(&gNotesAndBuffersPool, reverb->windowSize * 2);\n        reverb->nextRingBufferPos = 0;\n        reverb->unkC = 0;\n        reverb->curFrame = 0;\n        reverb->bufSizePerChannel = reverb->windowSize;\n        reverb->framesLeftToIgnore = 2;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        reverb->resampleFlags = A_INIT;\n#endif\n        if (reverb->downsampleRate != 1) {\n#if !defined(VERSION_SH) && !defined(VERSION_CN)\n            reverb->resampleFlags = A_INIT;\n#endif\n            reverb->resampleRate = 0x8000 / reverb->downsampleRate;\n            reverb->resampleStateLeft = soundAlloc(&gNotesAndBuffersPool, 16 * sizeof(s16));\n            reverb->resampleStateRight = soundAlloc(&gNotesAndBuffersPool, 16 * sizeof(s16));\n            reverb->unk24 = soundAlloc(&gNotesAndBuffersPool, 16 * sizeof(s16));\n            reverb->unk28 = soundAlloc(&gNotesAndBuffersPool, 16 * sizeof(s16));\n            for (i = 0; i < gAudioBufferParameters.updatesPerFrame; i++) {\n                mem = soundAlloc(&gNotesAndBuffersPool, DEFAULT_LEN_2CH);\n                reverb->items[0][i].toDownsampleLeft = mem;\n                reverb->items[0][i].toDownsampleRight = mem + DEFAULT_LEN_1CH / sizeof(s16);\n                mem = soundAlloc(&gNotesAndBuffersPool, DEFAULT_LEN_2CH);\n                reverb->items[1][i].toDownsampleLeft = mem;\n                reverb->items[1][i].toDownsampleRight = mem + DEFAULT_LEN_1CH / sizeof(s16);\n            }\n        }\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        if (reverbSettings->unkC != 0) {\n            reverb->unk108 = sound_alloc_uninitialized(&gNotesAndBuffersPool, 16 * sizeof(s16));\n            reverb->unk100 = sound_alloc_uninitialized(&gNotesAndBuffersPool, 8 * sizeof(s16));\n            func_sh_802F0DE8(reverb->unk100, reverbSettings->unkC);\n        } else {\n            reverb->unk100 = NULL;\n        }\n        if (reverbSettings->unkE != 0) {\n            reverb->unk10C = sound_alloc_uninitialized(&gNotesAndBuffersPool, 16 * sizeof(s16));\n            reverb->unk104 = sound_alloc_uninitialized(&gNotesAndBuffersPool, 8 * sizeof(s16));\n            func_sh_802F0DE8(reverb->unk104, reverbSettings->unkE);\n        } else {\n            reverb->unk104 = NULL;\n        }\n#endif\n    }\n\n#else\n    if (reverbWindowSize == 0) {\n        gSynthesisReverb.useReverb = 0;\n    } else {\n        gSynthesisReverb.useReverb = 8;\n        gSynthesisReverb.ringBuffer.left = soundAlloc(&gNotesAndBuffersPool, reverbWindowSize * 2);\n        gSynthesisReverb.ringBuffer.right = soundAlloc(&gNotesAndBuffersPool, reverbWindowSize * 2);\n        gSynthesisReverb.nextRingBufferPos = 0;\n        gSynthesisReverb.unkC = 0;\n        gSynthesisReverb.curFrame = 0;\n        gSynthesisReverb.bufSizePerChannel = reverbWindowSize;\n        gSynthesisReverb.reverbGain = preset->reverbGain;\n        gSynthesisReverb.framesLeftToIgnore = 2;\n        if (gReverbDownsampleRate != 1) {\n            gSynthesisReverb.resampleFlags = A_INIT;\n            gSynthesisReverb.resampleRate = 0x8000 / gReverbDownsampleRate;\n            gSynthesisReverb.resampleStateLeft = soundAlloc(&gNotesAndBuffersPool, 16 * sizeof(s16));\n            gSynthesisReverb.resampleStateRight = soundAlloc(&gNotesAndBuffersPool, 16 * sizeof(s16));\n            gSynthesisReverb.unk24 = soundAlloc(&gNotesAndBuffersPool, 16 * sizeof(s16));\n            gSynthesisReverb.unk28 = soundAlloc(&gNotesAndBuffersPool, 16 * sizeof(s16));\n            for (i = 0; i < gAudioUpdatesPerFrame; i++) {\n                mem = soundAlloc(&gNotesAndBuffersPool, DEFAULT_LEN_2CH);\n                gSynthesisReverb.items[0][i].toDownsampleLeft = mem;\n                gSynthesisReverb.items[0][i].toDownsampleRight = mem + DEFAULT_LEN_1CH / sizeof(s16);\n                mem = soundAlloc(&gNotesAndBuffersPool, DEFAULT_LEN_2CH);\n                gSynthesisReverb.items[1][i].toDownsampleLeft = mem;\n                gSynthesisReverb.items[1][i].toDownsampleRight = mem + DEFAULT_LEN_1CH / sizeof(s16);\n            }\n        }\n    }\n#endif\n\n    init_sample_dma_buffers(gMaxSimultaneousNotes);\n\n#if defined(VERSION_EU)\n    build_vol_rampings_table(0, gAudioBufferParameters.samplesPerUpdate);\n#endif\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    D_SH_8034F68C = 0;\n    D_SH_803479B4 = 4096;\n#endif\n\n    osWritebackDCacheAll();\n\n#if defined(VERSION_JP) || defined(VERSION_US)\n    if (gAudioLoadLock != AUDIO_LOCK_UNINITIALIZED) {\n        gAudioLoadLock = AUDIO_LOCK_NOT_LOADING;\n    }\n#endif\n}\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\nvoid *unk_pool1_lookup(s32 poolIdx, s32 id) {\n    s32 i;\n\n    for (i = 0; i < gUnkPool1.pool.numAllocatedEntries; i++) {\n        if (gUnkPool1.entries[i].poolIndex == poolIdx && gUnkPool1.entries[i].id == id) {\n            return gUnkPool1.entries[i].ptr;\n        }\n    }\n    return NULL;\n}\n\nvoid *unk_pool1_alloc(s32 poolIndex, s32 arg1, u32 size) {\n    void *ret;\n    s32 pos;\n\n    pos = gUnkPool1.pool.numAllocatedEntries;\n    ret = sound_alloc_uninitialized(&gUnkPool1.pool, size);\n    gUnkPool1.entries[pos].ptr = ret;\n    if (ret == NULL) {\n        return NULL;\n    }\n    gUnkPool1.entries[pos].poolIndex = poolIndex;\n    gUnkPool1.entries[pos].id = arg1;\n    gUnkPool1.entries[pos].size = size;\n\n#ifdef AVOID_UB\n    //! @bug UB: missing return. \"ret\" is in v0 at this point, but doing an\n    //  explicit return uses an additional register.\n    return ret;\n#endif\n}\n\nu8 *func_sh_802f1d40(u32 size, s32 bank, u8 *arg2, s8 medium) {\n    struct UnkEntry *ret;\n\n    ret = func_sh_802f1ec4(size);\n    if (ret != NULL) {\n        ret->bankId = bank;\n        ret->dstAddr = arg2;\n        ret->medium = medium;\n        return ret->srcAddr;\n    }\n    return NULL;\n}\nu8 *func_sh_802f1d90(u32 size, s32 bank, u8 *arg2, s8 medium) {\n    struct UnkEntry *ret;\n\n    ret = unk_pool2_alloc(size);\n    if (ret != NULL) {\n        ret->bankId = bank;\n        ret->dstAddr = arg2;\n        ret->medium = medium;\n        return ret->srcAddr;\n    }\n    return NULL;\n}\nu8 *func_sh_802f1de0(u32 size, s32 bank, u8 *arg2, s8 medium) { // duplicated function?\n    struct UnkEntry *ret;\n\n    ret = unk_pool2_alloc(size);\n    if (ret != NULL) {\n        ret->bankId = bank;\n        ret->dstAddr = arg2;\n        ret->medium = medium;\n        return ret->srcAddr;\n    }\n    return NULL;\n}\nvoid unk_pools_init(u32 size1, u32 size2) {\n    void *mem;\n\n    mem = sound_alloc_uninitialized(&gPersistentCommonPool, size1);\n    if (mem == NULL) {\n        gUnkPool2.pool.size = 0;\n    } else {\n        sound_alloc_pool_init(&gUnkPool2.pool, mem, size1);\n    }\n    mem = sound_alloc_uninitialized(&gTemporaryCommonPool, size2);\n\n    if (mem == NULL) {\n        gUnkPool3.pool.size = 0;\n    } else {\n        sound_alloc_pool_init(&gUnkPool3.pool, mem, size2);\n    }\n\n    gUnkPool2.numEntries = 0;\n    gUnkPool3.numEntries = 0;\n}\n\nstruct UnkEntry *func_sh_802f1ec4(u32 size) {\n    u8 *temp_s2;\n    u8 *phi_s3;\n    u8 *memLocation;\n    u8 *cur;\n\n    s32 i;\n    s32 chosenIndex;\n\n    struct UnkStructSH8034EC88 *unkStruct;\n    struct UnkPool *pool = &gUnkPool3;\n\n    u8 *itemStart;\n    u8 *itemEnd;\n\n    phi_s3 = pool->pool.cur;\n    memLocation = sound_alloc_uninitialized(&pool->pool, size);\n    if (memLocation == NULL) {\n        cur = pool->pool.cur;\n        pool->pool.cur = pool->pool.start;\n        memLocation = sound_alloc_uninitialized(&pool->pool, size);\n        if (memLocation == NULL) {\n            pool->pool.cur = cur;\n            return NULL;\n        }\n        phi_s3 = pool->pool.start;\n    }\n    temp_s2 = pool->pool.cur;\n\n    chosenIndex = -1;\n    for (i = 0; i < D_SH_8034F68C; i++) {\n        unkStruct = &D_SH_8034EC88[i];\n        if (unkStruct->isFree == FALSE) {\n            itemStart = unkStruct->ramAddr;\n            itemEnd = unkStruct->ramAddr + unkStruct->sample->size - 1;\n            if (itemEnd < phi_s3 && itemStart < phi_s3) {\n                continue;\n\n            }\n            if (itemEnd >= temp_s2 && itemStart >= temp_s2) {\n                continue;\n\n            }\n\n            unkStruct->isFree = TRUE;\n        }\n    }\n\n    for (i = 0; i < pool->numEntries; i++) {\n        if (pool->entries[i].used == FALSE) {\n            continue;\n        }\n        itemStart = pool->entries[i].srcAddr;\n        itemEnd = itemStart + pool->entries[i].size - 1;\n\n        if (itemEnd < phi_s3 && itemStart < phi_s3) {\n            continue;\n        }\n\n        if (itemEnd >= temp_s2 && itemStart >= temp_s2) {\n            continue;\n        }\n\n        func_sh_802f2158(&pool->entries[i]);\n        if (chosenIndex == -1) {\n            chosenIndex = i;\n        }\n    }\n\n    if (chosenIndex == -1) {\n        chosenIndex = pool->numEntries++;\n    }\n    pool->entries[chosenIndex].used = TRUE;\n    pool->entries[chosenIndex].srcAddr = memLocation;\n    pool->entries[chosenIndex].size = size;\n\n    return &pool->entries[chosenIndex];\n}\n\nvoid func_sh_802f2158(struct UnkEntry *entry) {\n    s32 idx;\n    s32 seqCount;\n    s32 bankId1;\n    s32 bankId2;\n    s32 instId;\n    s32 drumId;\n    struct Drum *drum;\n    struct Instrument *inst;\n\n    seqCount = gAlCtlHeader->seqCount;\n    for (idx = 0; idx < seqCount; idx++) {\n        bankId1 = gCtlEntries[idx].bankId1;\n        bankId2 = gCtlEntries[idx].bankId2;\n        if ((bankId1 != 0xff && entry->bankId == bankId1) || (bankId2 != 0xff && entry->bankId == bankId2) || entry->bankId == 0) {\n            if (get_bank_or_seq(1, 2, idx) != NULL) {\n                if (IS_BANK_LOAD_COMPLETE(idx) != FALSE) {\n                    for (instId = 0; instId < gCtlEntries[idx].numInstruments; instId++) {\n                        inst = get_instrument_inner(idx, instId);\n                        if (inst != NULL) {\n                            if (inst->normalRangeLo != 0) {\n                                func_sh_802F2320(entry, inst->lowNotesSound.sample);\n                            }\n                            if (inst->normalRangeHi != 127) {\n                                func_sh_802F2320(entry, inst->highNotesSound.sample);\n                            }\n                            func_sh_802F2320(entry, inst->normalNotesSound.sample);\n                        }\n                    }\n                    for (drumId = 0; drumId < gCtlEntries[idx].numDrums; drumId++) {\n                        drum = get_drum(idx, drumId);\n                        if (drum != NULL) {\n                            func_sh_802F2320(entry, drum->sound.sample);\n                        }\n                    }\n                }\n            }\n        }\n    }\n}\n\nvoid func_sh_802F2320(struct UnkEntry *entry, struct AudioBankSample *sample) {\n    if (sample != NULL && sample->sampleAddr == entry->srcAddr) {\n        sample->sampleAddr = entry->dstAddr;\n        sample->medium = entry->medium;\n    }\n}\n\nstruct UnkEntry *unk_pool2_alloc(u32 size) {\n    void *data;\n    struct UnkEntry *ret;\n    s32 *numEntries = &gUnkPool2.numEntries;\n\n    data = sound_alloc_uninitialized(&gUnkPool2.pool, size);\n    if (data == NULL) {\n        return NULL;\n    }\n    ret = &gUnkPool2.entries[*numEntries];\n    ret->used = TRUE;\n    ret->srcAddr = data;\n    ret->size = size;\n    (*numEntries)++;\n    return ret;\n}\n\nvoid func_sh_802f23ec(void) {\n    s32 i;\n    s32 idx;\n    s32 seqCount;\n    s32 bankId1;\n    s32 bankId2;\n    s32 instId;\n    s32 drumId;\n    struct Drum *drum;\n    struct Instrument *inst;\n    UNUSED s32 pad;\n    struct UnkEntry *entry; //! @bug: not initialized but nevertheless used\n\n    seqCount = gAlCtlHeader->seqCount;\n    for (idx = 0; idx < seqCount; idx++) {\n        bankId1 = gCtlEntries[idx].bankId1;\n        bankId2 = gCtlEntries[idx].bankId2;\n        if ((bankId1 != 0xffu && entry->bankId == bankId1) || (bankId2 != 0xff && entry->bankId == bankId2) || entry->bankId == 0) {\n            if (get_bank_or_seq(1, 3, idx) != NULL) {\n                if (IS_BANK_LOAD_COMPLETE(idx) != FALSE) {\n                    for (i = 0; i < gUnkPool2.numEntries; i++) {\n                        entry = &gUnkPool2.entries[i];\n                        for (instId = 0; instId < gCtlEntries[idx].numInstruments; instId++) {\n                            inst = get_instrument_inner(idx, instId);\n                            if (inst != NULL) {\n                                if (inst->normalRangeLo != 0) {\n                                    func_sh_802F2320(entry, inst->lowNotesSound.sample);\n                                }\n                                if (inst->normalRangeHi != 127) {\n                                    func_sh_802F2320(entry, inst->highNotesSound.sample);\n                                }\n                                func_sh_802F2320(entry, inst->normalNotesSound.sample);\n                            }\n                        }\n                        for (drumId = 0; drumId < gCtlEntries[idx].numDrums; drumId++) {\n                            drum = get_drum(idx, drumId);\n                            if (drum != NULL) {\n                                func_sh_802F2320(entry, drum->sound.sample);\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n}\n#endif\n\n#ifdef VERSION_EU\nu8 audioString22[] = \"SFrame Sample %d %d %d\\n\";\nu8 audioString23[] = \"AHPBASE %x\\n\";\nu8 audioString24[] = \"AHPCUR  %x\\n\";\nu8 audioString25[] = \"HeapTop %x\\n\";\nu8 audioString26[] = \"SynoutRate %d / %d \\n\";\nu8 audioString27[] = \"FXSIZE %d\\n\";\nu8 audioString28[] = \"FXCOMP %d\\n\";\nu8 audioString29[] = \"FXDOWN %d\\n\";\nu8 audioString30[] = \"WaveCacheLen: %d\\n\";\nu8 audioString31[] = \"SpecChange Finished\\n\";\n#endif\n"
  },
  {
    "path": "src/audio/heap.h",
    "content": "#ifndef AUDIO_HEAP_H\n#define AUDIO_HEAP_H\n\n#include <PR/ultratypes.h>\n\n#include \"internal.h\"\n\n#define SOUND_LOAD_STATUS_NOT_LOADED     0\n#define SOUND_LOAD_STATUS_IN_PROGRESS    1\n#define SOUND_LOAD_STATUS_COMPLETE       2\n#define SOUND_LOAD_STATUS_DISCARDABLE    3\n#define SOUND_LOAD_STATUS_4              4\n#define SOUND_LOAD_STATUS_5              5\n\n#define IS_BANK_LOAD_COMPLETE(bankId) (gBankLoadStatus[bankId] >= SOUND_LOAD_STATUS_COMPLETE)\n#define IS_SEQ_LOAD_COMPLETE(seqId) (gSeqLoadStatus[seqId] >= SOUND_LOAD_STATUS_COMPLETE)\n\nstruct SoundAllocPool {\n    u8 *start;\n    u8 *cur;\n    u32 size;\n    s32 numAllocatedEntries;\n}; // size = 0x10\n\nstruct SeqOrBankEntry {\n    u8 *ptr;\n    u32 size;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    s16 poolIndex;\n    s16 id;\n#else\n    s32 id; // seqId or bankId\n#endif\n}; // size = 0xC\n\nstruct PersistentPool {\n    /*0x00*/ u32 numEntries;\n    /*0x04*/ struct SoundAllocPool pool;\n    /*0x14*/ struct SeqOrBankEntry entries[32];\n}; // size = 0x194\n\nstruct TemporaryPool {\n    /*EU,   SH*/\n    /*0x00, 0x00*/ u32 nextSide;\n    /*0x04,     */ struct SoundAllocPool pool;\n    /*0x04,        pool.start     */\n    /*0x08,        pool.cur       */\n    /*0x0C, 0x0C   pool.size      */\n    /*0x10, 0x10   pool.numAllocatedEntries */\n    /*0x14,     */ struct SeqOrBankEntry entries[2];\n    /*0x14, 0x14   entries[0].ptr */\n    /*0x18,        entries[0].size*/\n    /*0x1C, 0x1E   entries[0].id  */\n    /*0x20, 0x20   entries[1].ptr */\n    /*0x24,        entries[1].size*/\n    /*0x28, 0x2A   entries[1].id  */\n}; // size = 0x2C\n\nstruct SoundMultiPool {\n    /*0x000*/ struct PersistentPool persistent;\n    /*0x194*/ struct TemporaryPool temporary;\n    /*     */ u32 pad2[4];\n}; // size = 0x1D0\n\nstruct Unk1Pool {\n    struct SoundAllocPool pool;\n    struct SeqOrBankEntry entries[32];\n};\n\nstruct UnkEntry {\n    s8 used;\n    s8 medium;\n    s8 bankId;\n    u32 pad;\n    u8 *srcAddr;\n    u8 *dstAddr;\n    u32 size;\n};\n\nstruct UnkPool {\n    /*0x00*/  struct SoundAllocPool pool;\n    /*0x10*/  struct UnkEntry entries[64];\n    /*0x510*/ s32 numEntries;\n    /*0x514*/ u32 unk514;\n};\n\nextern u8 gAudioHeap[];\nextern s16 gVolume;\nextern s8 gReverbDownsampleRate;\nextern struct SoundAllocPool gAudioInitPool;\nextern struct SoundAllocPool gNotesAndBuffersPool;\nextern struct SoundAllocPool gPersistentCommonPool;\nextern struct SoundAllocPool gTemporaryCommonPool;\nextern struct SoundMultiPool gSeqLoadedPool;\nextern struct SoundMultiPool gBankLoadedPool;\n#if defined(VERSION_SH) || defined(VERSION_CN)\nextern struct Unk1Pool gUnkPool1;\nextern struct UnkPool gUnkPool2;\nextern struct UnkPool gUnkPool3;\n#endif\nextern u8 gBankLoadStatus[64];\nextern u8 gSeqLoadStatus[256];\nextern volatile u8 gAudioResetStatus;\nextern u8 gAudioResetPresetIdToLoad;\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\nextern volatile u8 gAudioResetStatus;\n#endif\n\nvoid *soundAlloc(struct SoundAllocPool *pool, u32 size);\nvoid *sound_alloc_uninitialized(struct SoundAllocPool *pool, u32 size);\nvoid sound_init_main_pools(s32 sizeForAudioInitPool);\nvoid sound_alloc_pool_init(struct SoundAllocPool *pool, void *memAddr, u32 size);\n#if defined(VERSION_SH) || defined(VERSION_CN)\nvoid *alloc_bank_or_seq(s32 poolIdx, s32 size, s32 arg3, s32 id);\nvoid *get_bank_or_seq(s32 poolIdx, s32 arg1, s32 id);\n#else\nvoid *alloc_bank_or_seq(struct SoundMultiPool *arg0, s32 arg1, s32 size, s32 arg3, s32 id);\nvoid *get_bank_or_seq(struct SoundMultiPool *arg0, s32 arg1, s32 id);\n#endif\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\ns32 audio_shut_down_and_reset_step(void);\nvoid audio_reset_session(void);\n#else\nvoid audio_reset_session(struct AudioSessionSettings *preset);\n#endif\nvoid discard_bank(s32 bankId);\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\nvoid fill_filter(s16 filter[8], s32 arg1, s32 arg2);\nu8 *func_sh_802f1d40(u32 size, s32 bank, u8 *arg2, s8 medium);\nu8 *func_sh_802f1d90(u32 size, s32 bank, u8 *arg2, s8 medium);\nvoid *unk_pool1_lookup(s32 poolIdx, s32 id);\nvoid *unk_pool1_alloc(s32 poolIndex, s32 arg1, u32 size);\n#endif\n\n#endif // AUDIO_HEAP_H\n"
  },
  {
    "path": "src/audio/internal.h",
    "content": "#ifndef AUDIO_INTERNAL_H\n#define AUDIO_INTERNAL_H\n\n#include <ultra64.h>\n\n#include \"types.h\"\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n#define SEQUENCE_PLAYERS 4\n#define SEQUENCE_CHANNELS 48\n#define SEQUENCE_LAYERS 64\n#else\n#define SEQUENCE_PLAYERS 3\n#define SEQUENCE_CHANNELS 32\n#ifdef VERSION_JP\n#define SEQUENCE_LAYERS 48\n#else\n#define SEQUENCE_LAYERS 52\n#endif\n#endif\n\n#define LAYERS_MAX       4\n#define CHANNELS_MAX     16\n\n#define NO_LAYER ((struct SequenceChannelLayer *)(-1))\n\n#define MUTE_BEHAVIOR_STOP_SCRIPT 0x80 // stop processing sequence/channel scripts\n#define MUTE_BEHAVIOR_STOP_NOTES 0x40  // prevent further notes from playing\n#define MUTE_BEHAVIOR_SOFTEN 0x20      // lower volume, by default to half\n\n#define SEQUENCE_PLAYER_STATE_0 0\n#define SEQUENCE_PLAYER_STATE_FADE_OUT 1\n#define SEQUENCE_PLAYER_STATE_2 2\n#define SEQUENCE_PLAYER_STATE_3 3\n#define SEQUENCE_PLAYER_STATE_4 4\n\n#define NOTE_PRIORITY_DISABLED 0\n#define NOTE_PRIORITY_STOPPING 1\n#define NOTE_PRIORITY_MIN 2\n#define NOTE_PRIORITY_DEFAULT 3\n\n#define TATUMS_PER_BEAT 48\n\n// abi.h contains more details about the ADPCM and S8 codecs, \"skip\" skips codec processing\n#define CODEC_ADPCM 0\n#define CODEC_S8 1\n#define CODEC_SKIP 2\n\n#ifdef VERSION_JP\n#define TEMPO_SCALE 1\n#else\n#define TEMPO_SCALE TATUMS_PER_BEAT\n#endif\n\n// TODO: US_FLOAT should probably be renamed to JP_DOUBLE since eu seems to use floats too\n#ifdef VERSION_JP\n#define US_FLOAT(x) x\n#else\n#define US_FLOAT(x) x ## f\n#endif\n\n// Convert u8 or u16 to f32. On JP, this uses a u32->f32 conversion,\n// resulting in more bloated codegen, while on US it goes through s32.\n// Since u8 and u16 fit losslessly in both, behavior is the same.\n#ifdef VERSION_JP\n#define FLOAT_CAST(x) (f32) (x)\n#else\n#define FLOAT_CAST(x) (f32) (s32) (x)\n#endif\n\n// No-op printf macro which leaves string literals in rodata in IDO. IDO\n// doesn't support variadic macros, so instead we let the parameter list\n// expand to a no-op comma expression. Another possibility is that it might\n// have expanded to something with \"if (0)\". See also goddard/gd_main.h.\n// On US/JP, -sopt optimizes away these except for external.c.\n#ifdef __sgi\n#define stubbed_printf\n#else\n#define stubbed_printf(...)\n#endif\n\n#ifdef VERSION_EU\n#define eu_stubbed_printf_0(msg) stubbed_printf(msg)\n#define eu_stubbed_printf_1(msg, a) stubbed_printf(msg, a)\n#define eu_stubbed_printf_2(msg, a, b) stubbed_printf(msg, a, b)\n#define eu_stubbed_printf_3(msg, a, b, c) stubbed_printf(msg, a, b, c)\n#else\n#define eu_stubbed_printf_0(msg)\n#define eu_stubbed_printf_1(msg, a)\n#define eu_stubbed_printf_2(msg, a, b)\n#define eu_stubbed_printf_3(msg, a, b, c)\n#endif\n\nstruct NotePool;\n\nstruct AudioListItem {\n    // A node in a circularly linked list. Each node is either a head or an item:\n    // - Items can be either detached (prev = NULL), or attached to a list.\n    //   'value' points to something of interest.\n    // - List heads are always attached; if a list is empty, its head points\n    //   to itself. 'count' contains the size of the list.\n    // If the list holds notes, 'pool' points back to the pool where it lives.\n    // Otherwise, that member is NULL.\n    struct AudioListItem *prev;\n    struct AudioListItem *next;\n    union {\n        void *value; // either Note* or SequenceChannelLayer*\n        s32 count;\n    } u;\n    struct NotePool *pool;\n}; // size = 0x10\n\nstruct NotePool {\n    struct AudioListItem disabled;\n    struct AudioListItem decaying;\n    struct AudioListItem releasing;\n    struct AudioListItem active;\n};\n\nstruct VibratoState {\n    /*0x00, 0x00*/ struct SequenceChannel *seqChannel;\n    /*0x04, 0x04*/ u32 time;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    /*    , 0x08*/ s16 *curve;\n    /*    , 0x0C*/ f32 extent;\n    /*    , 0x10*/ f32 rate;\n    /*    , 0x14*/ u8 active;\n#else\n    /*0x08,     */ s8 *curve;\n    /*0x0C,     */ u8 active;\n    /*0x0E,     */ u16 rate;\n    /*0x10,     */ u16 extent;\n#endif\n    /*0x12, 0x16*/ u16 rateChangeTimer;\n    /*0x14, 0x18*/ u16 extentChangeTimer;\n    /*0x16, 0x1A*/ u16 delay;\n}; // size = 0x18, 0x1C on EU\n\n// Pitch sliding by up to one octave in the positive direction. Negative\n// direction is \"supported\" by setting extent to be negative. The code\n// extrapolates exponentially in the wrong direction in that case, but that\n// doesn't prevent seqplayer from doing it, AFAICT.\nstruct Portamento {\n    u8 mode; // bit 0x80 denotes something; the rest are an index 0-5\n    f32 cur;\n    f32 speed;\n    f32 extent;\n}; // size = 0x10\n\nstruct AdsrEnvelope {\n    s16 delay;\n    s16 arg;\n}; // size = 0x4\n\nstruct AdpcmLoop {\n    u32 start;\n    u32 end;\n    u32 count;\n    u32 pad;\n    s16 state[16]; // only exists if count != 0. 8-byte aligned\n};\n\nstruct AdpcmBook {\n    s32 order;\n    s32 npredictors;\n    s16 book[1]; // size 8 * order * npredictors. 8-byte aligned\n};\n\nstruct AudioBankSample {\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    /* 0x00 */ u32 codec : 4;\n    /* 0x00 */ u32 medium : 2;\n    /* 0x00 */ u32 bit1 : 1;\n    /* 0x00 */ u32 isPatched : 1;\n    /* 0x01 */ u32 size : 24;\n#else\n    u8 unused;\n    u8 loaded;\n#endif\n    u8 *sampleAddr;\n    struct AdpcmLoop *loop;\n    struct AdpcmBook *book;\n#if !defined(VERSION_SH) && !defined(VERSION_CN)\n    u32 sampleSize; // never read. either 0 or 1 mod 9, depending on padding\n#endif\n};\n\nstruct AudioBankSound {\n    struct AudioBankSample *sample;\n    f32 tuning; // frequency scale factor\n}; // size = 0x8\n\nstruct Instrument {\n    /*0x00*/ u8 loaded;\n    /*0x01*/ u8 normalRangeLo;\n    /*0x02*/ u8 normalRangeHi;\n    /*0x03*/ u8 releaseRate;\n    /*0x04*/ struct AdsrEnvelope *envelope;\n    /*0x08*/ struct AudioBankSound lowNotesSound;\n    /*0x10*/ struct AudioBankSound normalNotesSound;\n    /*0x18*/ struct AudioBankSound highNotesSound;\n}; // size = 0x20\n\nstruct Drum {\n    u8 releaseRate;\n    u8 pan;\n    u8 loaded;\n    struct AudioBankSound sound;\n    struct AdsrEnvelope *envelope;\n};\n\nstruct AudioBank {\n    struct Drum **drums;\n    struct Instrument *instruments[1];\n}; // dynamic size\n\nstruct CtlEntry {\n#if !defined(VERSION_SH) && !defined(VERSION_CN)\n    u8 unused;\n#endif\n    u8 numInstruments;\n    u8 numDrums;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    u8 bankId1;\n    u8 bankId2;\n#endif\n    struct Instrument **instruments;\n    struct Drum **drums;\n}; // size = 0xC\n\nstruct M64ScriptState {\n    u8 *pc;\n    u8 *stack[4];\n    u8 remLoopIters[4];\n    u8 depth;\n}; // size = 0x1C\n\n// Also known as a Group, according to debug strings.\nstruct SequencePlayer {\n    /*US/JP, EU,    SH   */\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    /*0x000, 0x000, 0x000*/ u8 enabled : 1;\n#else\n    /*0x000, 0x000*/ volatile u8 enabled : 1;\n#endif\n    /*0x000, 0x000*/ u8 finished : 1; // never read\n    /*0x000, 0x000*/ u8 muted : 1;\n    /*0x000, 0x000*/ u8 seqDmaInProgress : 1;\n    /*0x000, 0x000*/ u8 bankDmaInProgress : 1;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    /*       0x000*/ u8 recalculateVolume : 1;\n#endif\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    /*              0x000*/ u8 unkSh: 1;\n#endif\n#if defined(VERSION_JP) || defined(VERSION_US)\n    /*0x001       */ s8 seqVariation;\n#endif\n    /*0x002, 0x001, 0x001*/ u8 state;\n    /*0x003, 0x002*/ u8 noteAllocPolicy;\n    /*0x004, 0x003*/ u8 muteBehavior;\n    /*0x005, 0x004*/ u8 seqId;\n    /*0x006, 0x005*/ u8 defaultBank[1]; // must be an array to get a comparison\n    // to match; other u8's might also be part of that array\n    /*0x007, 0x006*/ u8 loadingBankId;\n#if defined(VERSION_JP) || defined(VERSION_US)\n    /*0x008, ?????*/ u8 loadingBankNumInstruments;\n    /*0x009, ?????*/ u8 loadingBankNumDrums;\n#endif\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    /*     , 0x007, 0x007*/ s8 seqVariationEu[1];\n#endif\n    /*0x00A, 0x008*/ u16 tempo; // beats per minute in JP, tatums per minute in US/EU\n    /*0x00C, 0x00A*/ u16 tempoAcc;\n#if defined(VERSION_JP) || defined(VERSION_US)\n    /*0x00E, 0x010*/ u16 fadeRemainingFrames;\n#endif\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    /*              0x00C*/ s16 tempoAdd;\n#endif\n    /*0x010, 0x00C, 0x00E*/ s16 transposition;\n    /*0x012, 0x00E, 0x010*/ u16 delay;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    /*0x00E, 0x010, 0x012*/ u16 fadeRemainingFrames;\n    /*     , 0x012, 0x014*/ u16 fadeTimerUnkEu;\n#endif\n    /*0x014, 0x014*/ u8 *seqData; // buffer of some sort\n    /*0x018, 0x018, 0x1C*/ f32 fadeVolume; // set to 1.0f\n    /*0x01C, 0x01C*/ f32 fadeVelocity; // set to 0.0f\n    /*0x020, 0x020, 0x024*/ f32 volume; // set to 0.0f\n    /*0x024, 0x024*/ f32 muteVolumeScale; // set to 0.5f\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    /*     , 0x028, 0x02C*/ f32 fadeVolumeScale;\n    /*     , 0x02C*/ f32 appliedFadeVolume;\n#else\n    /*            */ u8 pad2[4];\n#endif\n    /*0x02C, 0x030, 0x034*/ struct SequenceChannel *channels[CHANNELS_MAX];\n    /*0x06C, 0x070*/ struct M64ScriptState scriptState;\n    /*0x088, 0x08C*/ u8 *shortNoteVelocityTable;\n    /*0x08C, 0x090*/ u8 *shortNoteDurationTable;\n    /*0x090, 0x094*/ struct NotePool notePool;\n    /*0x0D0, 0x0D4*/ OSMesgQueue seqDmaMesgQueue;\n    /*0x0E8, 0x0EC*/ OSMesg seqDmaMesg;\n    /*0x0EC, 0x0F0*/ OSIoMesg seqDmaIoMesg;\n    /*0x100, 0x108*/ OSMesgQueue bankDmaMesgQueue;\n    /*0x118, 0x120*/ OSMesg bankDmaMesg;\n    /*0x11C, 0x124*/ OSIoMesg bankDmaIoMesg;\n    /*0x130, 0x13C*/ u8 *bankDmaCurrMemAddr;\n#if defined(VERSION_JP) || defined(VERSION_US)\n    /*0x134, ?????*/ struct AudioBank *loadingBank;\n#endif\n    /*0x138, 0x140*/ uintptr_t bankDmaCurrDevAddr;\n    /*0x13C, 0x144*/ ssize_t bankDmaRemaining;\n}; // size = 0x140, 0x148 on EU, 0x14C on SH\n\nstruct AdsrSettings {\n    u8 releaseRate;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    u8 sustain;\n#else\n    u16 sustain; // sustain level, 2^16 = max\n#endif\n    struct AdsrEnvelope *envelope;\n}; // size = 0x8\n\nstruct AdsrState {\n    /*0x00, 0x00*/ u8 action;\n    /*0x01, 0x01*/ u8 state;\n#if defined(VERSION_JP) || defined(VERSION_US)\n    /*0x02,     */ s16 initial; // always 0\n    /*0x04,     */ s16 target;\n    /*0x06,     */ s16 current;\n#endif\n    /*0x08, 0x02*/ s16 envIndex;\n    /*0x0A, 0x04*/ s16 delay;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    /*    , 0x08*/ f32 sustain;\n    /*    , 0x0C*/ f32 velocity;\n    /*    , 0x10*/ f32 fadeOutVel;\n    /*    , 0x14*/ f32 current;\n    /*    , 0x18*/ f32 target;\n    s32 pad1C;\n#else\n    /*0x0C,     */ s16 sustain;\n    /*0x0E,     */ s16 fadeOutVel;\n    /*0x10,     */ s32 velocity;\n    /*0x14,     */ s32 currentHiRes;\n    /*0x18,     */ s16 *volOut;\n#endif\n    /*0x1C, 0x20*/ struct AdsrEnvelope *envelope;\n}; // size = 0x20, 0x24 in EU\n\nstruct ReverbBitsData {\n    /* 0x00 */ u8 bit0 : 1;\n    /* 0x00 */ u8 bit1 : 1;\n    /* 0x00 */ u8 bit2 : 1;\n    /* 0x00 */ u8 usesHeadsetPanEffects : 1;\n    /* 0x00 */ u8 stereoHeadsetEffects : 2;\n    /* 0x00 */ u8 strongRight : 1;\n    /* 0x00 */ u8 strongLeft : 1;\n};\n\nunion ReverbBits {\n    /* 0x00 */ struct ReverbBitsData s;\n    /* 0x00 */ u8 asByte;\n};\nstruct ReverbInfo {\n    u8 reverbVol;\n    u8 synthesisVolume; // UQ4.4, although 0 <= x < 1 is rounded up to 1\n    u8 pan;\n    union ReverbBits reverbBits;\n    f32 freqScale;\n    f32 velocity;\n    s32 unused;\n    s16 *filter;\n};\n\nstruct NoteAttributes {\n    u8 reverbVol;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    u8 synthesisVolume; // UQ4.4, although 0 <= x < 1 is rounded up to 1\n#endif\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    u8 pan;\n#endif\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    union ReverbBits reverbBits;\n#endif\n    f32 freqScale;\n    f32 velocity;\n#if defined(VERSION_JP) || defined(VERSION_US)\n    f32 pan;\n#endif\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    s16 *filter;\n#endif\n}; // size = 0x10\n\n// Also known as a SubTrack, according to debug strings.\n// Confusingly, a SubTrack is a container of Tracks.\nstruct SequenceChannel {\n    /* U/J, EU,   SH  */\n    /*0x00, 0x00*/ u8 enabled : 1;\n    /*0x00, 0x00*/ u8 finished : 1;\n    /*0x00, 0x00*/ u8 stopScript : 1;\n    /*0x00, 0x00*/ u8 stopSomething2 : 1; // sets SequenceChannelLayer.stopSomething\n    /*0x00, 0x00*/ u8 hasInstrument : 1;\n    /*0x00, 0x00*/ u8 stereoHeadsetEffects : 1;\n    /*0x00, ????*/ u8 largeNotes : 1; // notes specify duration and velocity\n    /*0x00, ????*/ u8 unused : 1; // never read, set to 0\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    /*    , 0x01*/ union {\n        struct {\n            u8 freqScale : 1;\n            u8 volume : 1;\n            u8 pan : 1;\n        } as_bitfields;\n        u8 as_u8;\n    } changes;\n#endif\n    /*0x01, 0x02*/ u8 noteAllocPolicy;\n    /*0x02, 0x03, 0x03*/ u8 muteBehavior;\n    /*0x03, 0x04, 0x04*/ u8 reverbVol; // until EU: Q1.7, after EU: UQ0.8\n    /*0x04, ????*/ u8 notePriority; // 0-3\n#if defined(VERSION_SH) || defined(VERSION_CN)\n                   u8 unkSH06; // some priority\n#endif\n    /*0x05, 0x06*/ u8 bankId;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    /*    , 0x07*/ u8 reverbIndex;\n    /*    , 0x08, 0x09*/ u8 bookOffset;\n    /*    , 0x09*/ u8 newPan;\n    /*    , 0x0A*/ u8 panChannelWeight; // proportion of pan that comes from the channel (0..128)\n#else\n    /*0x06,     */ u8 updatesPerFrameUnused;\n#endif\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    /*            0x0C*/ u8 synthesisVolume; // UQ4.4, although 0 <= x < 1 is rounded up to 1\n#endif\n    /*0x08, 0x0C, 0x0E*/ u16 vibratoRateStart; // initially 0x800\n    /*0x0A, 0x0E, 0x10*/ u16 vibratoExtentStart;\n    /*0x0C, 0x10, 0x12*/ u16 vibratoRateTarget; // initially 0x800\n    /*0x0E, 0x12, 0x14*/ u16 vibratoExtentTarget;\n    /*0x10, 0x14, 0x16*/ u16 vibratoRateChangeDelay;\n    /*0x12, 0x16, 0x18*/ u16 vibratoExtentChangeDelay;\n    /*0x14, 0x18, 0x1A*/ u16 vibratoDelay;\n    /*0x16, 0x1A, 0x1C*/ u16 delay;\n    /*0x18, 0x1C, 0x1E*/ s16 instOrWave; // either 0 (none), instrument index + 1, or\n    // 0x80..0x83 for sawtooth/triangle/sine/square waves.\n    /*0x1A, 0x1E, 0x20*/ s16 transposition;\n    /*0x1C, 0x20, 0x24*/ f32 volumeScale;\n    /*0x20, 0x24, 0x28*/ f32 volume;\n#if defined(VERSION_JP) || defined(VERSION_US)\n    /*0x24,     */ f32 pan;\n    /*0x28,     */ f32 panChannelWeight; // proportion of pan that comes from the channel (0..1)\n#else\n    /*    , 0x28*/ s32 pan;\n    /*    , 0x2C*/ f32 appliedVolume;\n#endif\n    /*0x2C, 0x30*/ f32 freqScale;\n    /*0x30, 0x34*/ u8 (*dynTable)[][2];\n    /*0x34, ????*/ struct Note *noteUnused; // never read\n    /*0x38, ????*/ struct SequenceChannelLayer *layerUnused; // never read\n    /*0x3C, 0x40*/ struct Instrument *instrument;\n    /*0x40, 0x44*/ struct SequencePlayer *seqPlayer;\n    /*0x44, 0x48*/ struct SequenceChannelLayer *layers[LAYERS_MAX];\n#if !defined(VERSION_SH) && !defined(VERSION_CN)\n    /*0x54, 0x58      */ s8 soundScriptIO[8]; // bridge between sound script and audio lib. For player 2,\n    // [0] contains enabled, [4] contains sound ID, [5] contains reverb adjustment\n#endif\n    /*0x5C, 0x60*/ struct M64ScriptState scriptState;\n    /*0x78, 0x7C*/ struct AdsrSettings adsr;\n    /*0x80, 0x84*/ struct NotePool notePool;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    /*            0xC0*/ s8 soundScriptIO[8]; // bridge between sound script and audio lib. For player 2,\n    // [0] contains enabled, [4] contains sound ID, [5] contains reverb adjustment\n    /*            0xC8*/ u16 unkC8;\n    /*            0xCC*/ s16 *filter;\n#endif\n}; // size = 0xC0, 0xC4 in EU, 0xD0 in SH\n\n// Also known as a Track, according to debug strings.\nstruct SequenceChannelLayer {\n    /* U/J, EU,  SH */\n    /*0x00, 0x00*/ u8 enabled : 1;\n    /*0x00, 0x00*/ u8 finished : 1;\n    /*0x00, 0x00*/ u8 stopSomething : 1; // ?\n    /*0x00, 0x00*/ u8 continuousNotes : 1; // keep the same note for consecutive notes with the same sound\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    /*    , 0x00*/ u8 unusedEu0b8 : 1;\n    /*    , 0x00*/ u8 notePropertiesNeedInit : 1;\n    /*    , 0x00*/ u8 ignoreDrumPan : 1;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    /*    ,     , 0x01 */ union ReverbBits reverbBits;\n#endif\n    /*    , 0x01, 0x02*/ u8 instOrWave;\n#endif\n    /*0x01, 0x02, 0x03*/ u8 status; // 0x03 in SH\n    /*0x02, 0x03*/ u8 noteDuration; // set to 0x80\n    /*0x03, 0x04*/ u8 portamentoTargetNote;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    /*    , 0x05*/ u8 pan; // 0..128\n    /*    , 0x06, 0x07*/ u8 notePan;\n#endif\n    /*0x04, 0x08*/ struct Portamento portamento;\n    /*0x14, 0x18*/ struct AdsrSettings adsr;\n    /*0x1C, 0x20*/ u16 portamentoTime;\n    /*0x1E, 0x22*/ s16 transposition; // #semitones added to play commands\n    // (m64 instruction encoding only allows referring to the limited range\n    // 0..0x3f; this makes 0x40..0x7f accessible as well)\n    /*0x20, 0x24, 0x24*/ f32 freqScale;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    /*            0x28*/ f32 freqScaleMultiplier;\n#endif\n    /*0x24, 0x28, 0x2C*/ f32 velocitySquare;\n#if defined(VERSION_JP) || defined(VERSION_US)\n    /*0x28,     */ f32 pan; // 0..1\n#endif\n    /*0x2C, 0x2C, 0x30*/ f32 noteVelocity;\n#if defined(VERSION_JP) || defined(VERSION_US)\n    /*0x30*/ f32 notePan;\n#endif\n    /*0x34, 0x30, 0x34*/ f32 noteFreqScale;\n    /*0x38, 0x34*/ s16 shortNoteDefaultPlayPercentage;\n    /*0x3A, 0x36*/ s16 playPercentage; // it's not really a percentage...\n    /*0x3C, 0x38*/ s16 delay;\n    /*0x3E, 0x3A*/ s16 duration;\n    /*0x40, 0x3C*/ s16 delayUnused; // set to 'delay', never read\n    /*0x44, 0x40, 0x44*/ struct Note *note;\n    /*0x48, 0x44*/ struct Instrument *instrument;\n    /*0x4C, 0x48*/ struct AudioBankSound *sound;\n    /*0x50, 0x4C, 0x50*/ struct SequenceChannel *seqChannel;\n    /*0x54, 0x50*/ struct M64ScriptState scriptState;\n    /*0x70, 0x6C*/ struct AudioListItem listItem;\n#if defined(VERSION_EU)\n    u8 pad2[4];\n#endif\n}; // size = 0x80\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\nstruct NoteSynthesisState {\n    /*0x00*/ u8 restart;\n    /*0x01*/ u8 sampleDmaIndex;\n    /*0x02*/ u8 prevHeadsetPanRight;\n    /*0x03*/ u8 prevHeadsetPanLeft;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    /*      0x04*/ u8 reverbVol;\n    /*      0x05*/ u8 unk5;\n#endif\n    /*0x04, 0x06*/ u16 samplePosFrac;\n    /*0x08*/ s32 samplePosInt;\n    /*0x0C*/ struct NoteSynthesisBuffers *synthesisBuffers;\n    /*0x10*/ s16 curVolLeft; // UQ0.16 (EU Q1.15)\n    /*0x12*/ s16 curVolRight; // UQ0.16 (EU Q1.15)\n};\nstruct NotePlaybackState {\n    /* U/J, EU,   SH  */\n    /*0x04, 0x00, 0x00*/ u8 priority;\n    /*      0x01, 0x01*/ u8 waveId;\n    /*      0x02, 0x02*/ u8 sampleCountIndex;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    /*            0x03*/ u8 bankId;\n    /*            0x04*/ u8 unkSH34;\n#endif\n    /*0x08, 0x04, 0x06*/ s16 adsrVolScale;\n    /*0x18, 0x08, 0x08*/ f32 portamentoFreqScale;\n    /*0x1C, 0x0C, 0x0C*/ f32 vibratoFreqScale;\n    /*0x28, 0x10,     */ struct SequenceChannelLayer *prevParentLayer;\n    /*0x2C, 0x14, 0x14*/ struct SequenceChannelLayer *parentLayer;\n    /*0x30, 0x18, 0x18*/ struct SequenceChannelLayer *wantedParentLayer;\n    /*    , 0x1C, 0x1C*/ struct NoteAttributes attributes;\n    /*0x54, 0x28, 0x2C*/ struct AdsrState adsr;\n    /*0x74, 0x4C,     */ struct Portamento portamento;\n    /*0x84, 0x5C,     */ struct VibratoState vibratoState;\n};\nstruct NoteSubEu {\n    /*0x00*/ volatile u8 enabled : 1;\n    /*0x00*/ u8 needsInit : 1;\n    /*0x00*/ u8 finished : 1;\n    /*0x00*/ u8 envMixerNeedsInit : 1;\n    /*0x00*/ u8 stereoStrongRight : 1;\n    /*0x00*/ u8 stereoStrongLeft : 1;\n    /*0x00*/ u8 stereoHeadsetEffects : 1;\n    /*0x00*/ u8 usesHeadsetPanEffects : 1;\n    /*0x01*/ u8 reverbIndex : 3;\n    /*0x01*/ u8 bookOffset : 3;\n    /*0x01*/ u8 isSyntheticWave : 1;\n    /*0x01*/ u8 hasTwoAdpcmParts : 1;\n#ifdef VERSION_EU\n    /*0x02*/ u8 bankId;\n#else\n    /*0x02*/ u8 synthesisVolume; // UQ4.4, although 0 <= x < 1 is rounded up to 1\n#endif\n    /*0x03*/ u8 headsetPanRight;\n    /*0x04*/ u8 headsetPanLeft;\n    /*0x05*/ u8 reverbVol; // UQ0.7 (EU Q1.7)\n    /*0x06*/ u16 targetVolLeft; // UQ0.12 (EU UQ0.10)\n    /*0x08*/ u16 targetVolRight; // UQ0.12 (EU UQ0.10)\n    /*0x0A*/ u16 resamplingRateFixedPoint; // stored as signed but loaded as u16\n    /*0x0C*/ union {\n        s16 *samples;\n        struct AudioBankSound *audioBankSound;\n    } sound;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    /*0x10*/ s16 *filter;\n#endif\n};\nstruct Note {\n    /* U/J,  EU,  SH  */\n    /*0xA4, 0x00, 0x00*/ struct AudioListItem listItem;\n    /*      0x10, 0x10*/ struct NoteSynthesisState synthesisState;\n    // The next members are actually part of a struct (NotePlaybackState), but\n    // that results in messy US/EU ifdefs. Instead we cast to a struct pointer\n    // when needed... This breaks alignment on non-N64 platforms, which we hack\n    // around by skipping the padding in that case.\n    // TODO: use macros or something instead.\n#ifdef TARGET_N64\n    u8 pad0[12];\n#endif\n\n    /*0x04, 0x30, 0x30*/ u8 priority;\n    /*      0x31, 0x31*/ u8 waveId;\n    /*      0x32, 0x32*/ u8 sampleCountIndex;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    /*            0x33*/ u8 bankId;\n    /*            0x34*/ u8 unkSH34;\n#endif\n    /*0x08, 0x34, 0x36*/ s16 adsrVolScale;\n    /*0x18, 0x38,     */ f32 portamentoFreqScale;\n    /*0x1C, 0x3C,     */ f32 vibratoFreqScale;\n    /*0x28, 0x40,     */ struct SequenceChannelLayer *prevParentLayer;\n    /*0x2C, 0x44, 0x44*/ struct SequenceChannelLayer *parentLayer;\n    /*0x30, 0x48, 0x48*/ struct SequenceChannelLayer *wantedParentLayer;\n    /*    , 0x4C, 0x4C*/ struct NoteAttributes attributes;\n    /*0x54, 0x58, 0x5C*/ struct AdsrState adsr;\n    /*0x74, 0x7C*/ struct Portamento portamento;\n    /*0x84, 0x8C*/ struct VibratoState vibratoState;\n    u8 pad3[8];\n    /*    , 0xB0, 0xB4*/ struct NoteSubEu noteSubEu;\n}; // size = 0xC0, known to be 0xC8 on SH\n#else\n// volatile Note, needed in synthesis_process_notes\nstruct vNote {\n    /* U/J, EU  */\n    /*0x00*/ volatile u8 enabled : 1;\n    long long int force_structure_alignment;\n}; // size = 0xC0\nstruct Note {\n    /* U/J, EU  */\n    /*0x00*/ u8 enabled : 1;\n    /*0x00*/ u8 needsInit : 1;\n    /*0x00*/ u8 restart : 1;\n    /*0x00*/ u8 finished : 1;\n    /*0x00*/ u8 envMixerNeedsInit : 1;\n    /*0x00*/ u8 stereoStrongRight : 1;\n    /*0x00*/ u8 stereoStrongLeft : 1;\n    /*0x00*/ u8 stereoHeadsetEffects : 1;\n    /*0x01*/ u8 usesHeadsetPanEffects;\n    /*0x02*/ u8 unk2;\n    /*0x03*/ u8 sampleDmaIndex;\n    /*0x04, 0x30*/ u8 priority;\n    /*0x05*/ u8 sampleCount; // 0, 8, 16, 32 or 64\n    /*0x06*/ u8 instOrWave;\n    /*0x07*/ u8 bankId; // in NoteSubEu on EU\n    /*0x08*/ s16 adsrVolScale;\n    /*    */ u8 pad1[2];\n    /*0x0C, 0xB3*/ u16 headsetPanRight;\n    /*0x0E, 0xB4*/ u16 headsetPanLeft;\n    /*0x10*/ u16 prevHeadsetPanRight;\n    /*0x12*/ u16 prevHeadsetPanLeft;\n    /*0x14*/ s32 samplePosInt;\n    /*0x18, 0x38*/ f32 portamentoFreqScale;\n    /*0x1C, 0x3C*/ f32 vibratoFreqScale;\n    /*0x20*/ u16 samplePosFrac;\n    /*0x24*/ struct AudioBankSound *sound;\n    /*0x28, 0x40*/ struct SequenceChannelLayer *prevParentLayer;\n    /*0x2C, 0x44*/ struct SequenceChannelLayer *parentLayer;\n    /*0x30, 0x48*/ struct SequenceChannelLayer *wantedParentLayer;\n    /*0x34*/ struct NoteSynthesisBuffers *synthesisBuffers;\n    /*0x38*/ f32 frequency;\n    /*0x3C*/ u16 targetVolLeft; // Q1.15, but will always be non-negative\n    /*0x3E*/ u16 targetVolRight; // Q1.15, but will always be non-negative\n    /*0x40*/ u8 reverbVol; // Q1.7\n    /*0x41*/ u8 unused1; // never read, set to 0x3f\n    /*0x44*/ struct NoteAttributes attributes;\n    /*0x54, 0x58*/ struct AdsrState adsr;\n    /*0x74, 0x7C*/ struct Portamento portamento;\n    /*0x84, 0x8C*/ struct VibratoState vibratoState;\n    /*0x9C*/ s16 curVolLeft; // Q1.15, but will always be non-negative\n    /*0x9E*/ s16 curVolRight; // Q1.15, but will always be non-negative\n    /*0xA0*/ s16 reverbVolShifted; // Q1.15\n    /*0xA2*/ s16 unused2; // never read, set to 0\n    /*0xA4, 0x00*/ struct AudioListItem listItem;\n    /*          */ u8 pad2[0xc];\n}; // size = 0xC0\n#endif\n\nstruct NoteSynthesisBuffers {\n    s16 adpcmdecState[0x10];\n    s16 finalResampleState[0x10];\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    s16 unk[0x10];\n    s16 filterBuffer[0x20];\n    s16 panSamplesBuffer[0x20];\n#else\n    s16 mixEnvelopeState[0x28];\n    s16 panResampleState[0x10];\n    s16 panSamplesBuffer[0x20];\n    s16 dummyResampleState[0x10];\n#if defined(VERSION_JP) || defined(VERSION_US)\n    s16 samples[0x40];\n#endif\n#endif\n};\n\n#ifdef VERSION_EU\nstruct ReverbSettingsEU {\n    u8 downsampleRate;\n    u8 windowSize; // To be multiplied by 64\n    u16 gain;\n};\n#else\nstruct ReverbSettingsEU {\n    u8 downsampleRate; // always 1\n    u8 windowSize; // To be multiplied by 16\n    u16 gain;\n    u16 unk4; // always zero\n    u16 unk6; // always zero\n    s8 unk8; // always -1\n    u16 unkA; // always 0x3000\n    s16 unkC; // always zero\n    s16 unkE; // always zero\n};\n#endif\n\nstruct AudioSessionSettingsEU {\n    /* 0x00 */ u32 frequency;\n    /* 0x04 */ u8 unk1;  // always 1\n    /* 0x05 */ u8 maxSimultaneousNotes;\n    /* 0x06 */ u8 numReverbs; // always 1\n    /* 0x07 */ u8 unk2;  // always 0\n    /* 0x08 */ struct ReverbSettingsEU *reverbSettings;\n    /* 0x0C */ u16 volume;\n    /* 0x0E */ u16 unk3; // always 0\n    /* 0x10 */ u32 persistentSeqMem;\n    /* 0x14 */ u32 persistentBankMem;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    /*       0x18 */ u32 unk18; // always 0\n#endif\n    /* 0x18, 0x1C */ u32 temporarySeqMem;\n    /* 0x1C, 0x20 */ u32 temporaryBankMem;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    /*       0x24 */ u32 unk24; // always 0\n    /*       0x28 */ u32 unkMem28; // always 0\n    /*       0x2C */ u32 unkMem2C; // always 0\n#endif\n}; // 0x30 on shindou\n\nstruct AudioSessionSettings {\n    /*0x00*/ u32 frequency;\n    /*0x04*/ u8 maxSimultaneousNotes;\n    /*0x05*/ u8 reverbDownsampleRate; // always 1\n    /*0x06*/ u16 reverbWindowSize;\n    /*0x08*/ u16 reverbGain;\n    /*0x0A*/ u16 volume;\n    /*0x0C*/ u32 persistentSeqMem;\n    /*0x10*/ u32 persistentBankMem;\n    /*0x14*/ u32 temporarySeqMem;\n    /*0x18*/ u32 temporaryBankMem;\n}; // size = 0x1C\n\nstruct AudioBufferParametersEU {\n    /*0x00*/ s16 presetUnk4; // audio frames per vsync?\n    /*0x02*/ u16 frequency;\n    /*0x04*/ u16 aiFrequency; // ?16\n    /*0x06*/ s16 samplesPerFrameTarget;\n    /*0x08*/ s16 maxAiBufferLength;\n    /*0x0A*/ s16 minAiBufferLength;\n    /*0x0C*/ s16 updatesPerFrame;\n    /*0x0E*/ s16 samplesPerUpdate;\n    /*0x10*/ s16 samplesPerUpdateMax;\n    /*0x12*/ s16 samplesPerUpdateMin;\n    /*0x14*/ f32 resampleRate; // contains 32000.0f / frequency\n    /*0x18*/ f32 updatesPerFrameInv; // 1.0f / updatesPerFrame\n    /*0x1C*/ f32 unkUpdatesPerFrameScaled; // 3.0f / (1280.0f * updatesPerFrame)\n};\n\nstruct EuAudioCmd {\n    union {\n#if IS_BIG_ENDIAN\n        struct {\n            u8 op;\n            u8 arg1;\n            u8 arg2;\n            u8 arg3;\n        } s;\n#else\n        struct {\n            u8 arg3;\n            u8 arg2;\n            u8 arg1;\n            u8 op;\n        } s;\n#endif\n        s32 first;\n    } u;\n    union {\n        s32 as_s32;\n        u32 as_u32;\n        f32 as_f32;\n#if IS_BIG_ENDIAN\n        u8 as_u8;\n        s8 as_s8;\n#else\n        struct {\n            u8 pad0[3];\n            u8 as_u8;\n        };\n        struct {\n            u8 pad1[3];\n            s8 as_s8;\n        };\n#endif\n    } u2;\n};\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\nstruct PendingDmaSample {\n    u8 medium;\n    u8 bankId;\n    u8 idx;\n    uintptr_t devAddr;\n    void *vAddr;\n    u8 *resultSampleAddr;\n    s32 state;\n    s32 remaining;\n    s8 *io;\n    /*0x1C*/ struct AudioBankSample sample;\n    /*0x2C*/ OSMesgQueue queue;\n    /*0x44*/ OSMesg mesgs[1];\n    /*0x48*/ OSIoMesg ioMesg;\n};\n\nstruct UnkStruct80343D00 {\n    u32 someIndex; // array into one of the two slots below\n    struct PendingDmaSample arr[2];\n};\n\n// in external.c\nextern s32 D_SH_80343CF0;\nextern struct UnkStruct80343D00 D_SH_80343D00;\n#endif\n\n#endif // AUDIO_INTERNAL_H\n"
  },
  {
    "path": "src/audio/load.c",
    "content": "#if !defined(VERSION_SH) && !defined(VERSION_CN)\n#include <ultra64.h>\n#include <PR/os.h>\n\n#include \"data.h\"\n#include \"external.h\"\n#include \"heap.h\"\n#include \"load.h\"\n#include \"seqplayer.h\"\n\n#define ALIGN16(val) (((val) + 0xF) & ~0xF)\n\nstruct SharedDma {\n    /*0x0*/ u8 *buffer;       // target, points to pre-allocated buffer\n    /*0x4*/ uintptr_t source; // device address\n    /*0x8*/ u16 sizeUnused;   // set to bufSize, never read\n    /*0xA*/ u16 bufSize;      // size of buffer\n    /*0xC*/ u8 unused2;       // set to 0, never read\n    /*0xD*/ u8 reuseIndex;    // position in sSampleDmaReuseQueue1/2, if ttl == 0\n    /*0xE*/ u8 ttl;           // duration after which the DMA can be discarded\n};                            // size = 0x10\n\n// EU only\nvoid port_eu_init(void);\n\nstruct Note *gNotes;\n\n#if defined(VERSION_EU)\nUNUSED static u8 pad[4];\n#endif\n\nstruct SequencePlayer gSequencePlayers[SEQUENCE_PLAYERS];\nstruct SequenceChannel gSequenceChannels[SEQUENCE_CHANNELS];\nstruct SequenceChannelLayer gSequenceLayers[SEQUENCE_LAYERS];\n\nstruct SequenceChannel gSequenceChannelNone;\nstruct AudioListItem gLayerFreeList;\nstruct NotePool gNoteFreeLists;\n\nOSMesgQueue gCurrAudioFrameDmaQueue;\nOSMesg gCurrAudioFrameDmaMesgBufs[AUDIO_FRAME_DMA_QUEUE_SIZE];\nOSIoMesg gCurrAudioFrameDmaIoMesgBufs[AUDIO_FRAME_DMA_QUEUE_SIZE];\n\nOSMesgQueue gAudioDmaMesgQueue;\nOSMesg gAudioDmaMesg;\nOSIoMesg gAudioDmaIoMesg;\n\nstruct SharedDma sSampleDmas[0x60];\nu32 gSampleDmaNumListItems; // sh: 0x803503D4\nu32 sSampleDmaListSize1; // sh: 0x803503D8\nu32 sUnused80226B40; // set to 0, never read, sh: 0x803503DC\n\n// Circular buffer of DMAs with ttl = 0. tail <= head, wrapping around mod 256.\nu8 sSampleDmaReuseQueue1[256];\nu8 sSampleDmaReuseQueue2[256];\nu8 sSampleDmaReuseQueueTail1;\nu8 sSampleDmaReuseQueueTail2;\nu8 sSampleDmaReuseQueueHead1; // sh: 0x803505E2\nu8 sSampleDmaReuseQueueHead2; // sh: 0x803505E3\n\n// bss correct up to here\n\nALSeqFile *gSeqFileHeader;\nALSeqFile *gAlCtlHeader;\nALSeqFile *gAlTbl;\nu8 *gAlBankSets;\nu16 gSequenceCount;\n\nstruct CtlEntry *gCtlEntries; // sh: 0x803505F8\n\n#if defined(VERSION_EU)\nu32 padEuBss1;\nstruct AudioBufferParametersEU gAudioBufferParameters;\n#else\ns32 gAiFrequency;\n#endif\n\nu32 sDmaBufSize;\ns32 gMaxAudioCmds;\ns32 gMaxSimultaneousNotes;\n\n#if defined(VERSION_EU)\ns16 gTempoInternalToExternal;\n#else\ns32 gSamplesPerFrameTarget;\ns32 gMinAiBufferLength;\n\ns16 gTempoInternalToExternal;\n\ns8 gAudioUpdatesPerFrame;\n#endif\n\ns8 gSoundMode;\n\n#if defined(VERSION_EU)\ns8 gAudioUpdatesPerFrame;\n#endif\n\nextern u64 gAudioGlobalsStartMarker;\nextern u64 gAudioGlobalsEndMarker;\n\nextern u8 gSoundDataADSR[]; // sound_data.ctl\nextern u8 gSoundDataRaw[];  // sound_data.tbl\nextern u8 gMusicData[];     // sequences.s\nextern u8 gBankSetsData[];  // bank_sets.s\n\nALSeqFile *get_audio_file_header(s32 arg0);\n\n/**\n * Performs an immediate DMA copy\n */\nvoid audio_dma_copy_immediate(uintptr_t devAddr, void *vAddr, size_t nbytes) {\n    eu_stubbed_printf_3(\"Romcopy %x -> %x ,size %x\\n\", devAddr, vAddr, nbytes);\n    osInvalDCache(vAddr, nbytes);\n    osPiStartDma(&gAudioDmaIoMesg, OS_MESG_PRI_HIGH, OS_READ, devAddr, vAddr, nbytes,\n                 &gAudioDmaMesgQueue);\n    osRecvMesg(&gAudioDmaMesgQueue, NULL, OS_MESG_BLOCK);\n    eu_stubbed_printf_0(\"Romcopyend\\n\");\n}\n\n#ifdef VERSION_EU\nu8 audioString34[] = \"CAUTION:WAVE CACHE FULL %d\";\nu8 audioString35[] = \"BASE %x %x\\n\";\nu8 audioString36[] = \"LOAD %x %x %x\\n\";\nu8 audioString37[] = \"INSTTOP    %x\\n\";\nu8 audioString38[] = \"INSTMAP[0] %x\\n\";\nu8 audioString39[] = \"already flags %d\\n\";\nu8 audioString40[] = \"already flags %d\\n\";\nu8 audioString41[] = \"ERR:SLOW BANK DMA BUSY\\n\";\nu8 audioString42[] = \"ERR:SLOW DMA BUSY\\n\";\nu8 audioString43[] = \"Check %d  bank %d\\n\";\nu8 audioString44[] = \"Cache Check\\n\";\nu8 audioString45[] = \"NO BANK ERROR\\n\";\nu8 audioString46[] = \"BANK %d LOADING START\\n\";\nu8 audioString47[] = \"BANK %d LOAD MISS (NO MEMORY)!\\n\";\nu8 audioString48[] = \"BANK %d ALREADY CACHED\\n\";\nu8 audioString49[] = \"BANK LOAD MISS! FOR %d\\n\";\n#endif\n\n/**\n * Performs an asynchronus (normal priority) DMA copy\n */\nvoid audio_dma_copy_async(uintptr_t devAddr, void *vAddr, size_t nbytes, OSMesgQueue *queue, OSIoMesg *mesg) {\n    osInvalDCache(vAddr, nbytes);\n    osPiStartDma(mesg, OS_MESG_PRI_NORMAL, OS_READ, devAddr, vAddr, nbytes, queue);\n}\n\n/**\n * Performs a partial asynchronous (normal priority) DMA copy. This is limited\n * to 0x1000 bytes transfer at once.\n */\nvoid audio_dma_partial_copy_async(uintptr_t *devAddr, u8 **vAddr, ssize_t *remaining, OSMesgQueue *queue, OSIoMesg *mesg) {\n#if defined(VERSION_EU)\n    ssize_t transfer = (*remaining >= 0x1000 ? 0x1000 : *remaining);\n#else\n    ssize_t transfer = (*remaining < 0x1000 ? *remaining : 0x1000);\n#endif\n    *remaining -= transfer;\n    osInvalDCache(*vAddr, transfer);\n    osPiStartDma(mesg, OS_MESG_PRI_NORMAL, OS_READ, *devAddr, *vAddr, transfer, queue);\n    *devAddr += transfer;\n    *vAddr += transfer;\n}\n\nvoid decrease_sample_dma_ttls() {\n    u32 i;\n\n    for (i = 0; i < sSampleDmaListSize1; i++) {\n#if defined(VERSION_EU)\n        struct SharedDma *temp = &sSampleDmas[i];\n#else\n        struct SharedDma *temp = sSampleDmas + i;\n#endif\n        if (temp->ttl != 0) {\n            temp->ttl--;\n            if (temp->ttl == 0) {\n                temp->reuseIndex = sSampleDmaReuseQueueHead1;\n                sSampleDmaReuseQueue1[sSampleDmaReuseQueueHead1++] = (u8) i;\n            }\n        }\n    }\n\n    for (i = sSampleDmaListSize1; i < gSampleDmaNumListItems; i++) {\n#if defined(VERSION_EU)\n        struct SharedDma *temp = &sSampleDmas[i];\n#else\n        struct SharedDma *temp = sSampleDmas + i;\n#endif\n        if (temp->ttl != 0) {\n            temp->ttl--;\n            if (temp->ttl == 0) {\n                temp->reuseIndex = sSampleDmaReuseQueueHead2;\n                sSampleDmaReuseQueue2[sSampleDmaReuseQueueHead2++] = (u8) i;\n            }\n        }\n    }\n\n    sUnused80226B40 = 0;\n}\n\nvoid *dma_sample_data(uintptr_t devAddr, u32 size, s32 arg2, u8 *dmaIndexRef) {\n    s32 hasDma = FALSE;\n    struct SharedDma *dma;\n    uintptr_t dmaDevAddr;\n    u32 transfer;\n    u32 i;\n    u32 dmaIndex;\n    ssize_t bufferPos;\n    UNUSED u32 pad;\n\n    if (arg2 != 0 || *dmaIndexRef >= sSampleDmaListSize1) {\n        for (i = sSampleDmaListSize1; i < gSampleDmaNumListItems; i++) {\n#if defined(VERSION_EU)\n            dma = &sSampleDmas[i];\n#else\n            dma = sSampleDmas + i;\n#endif\n            bufferPos = devAddr - dma->source;\n            if (0 <= bufferPos && (size_t) bufferPos <= dma->bufSize - size) {\n                // We already have a DMA request for this memory range.\n                if (dma->ttl == 0 && sSampleDmaReuseQueueTail2 != sSampleDmaReuseQueueHead2) {\n                    // Move the DMA out of the reuse queue, by swapping it with the\n                    // tail, and then incrementing the tail.\n                    if (dma->reuseIndex != sSampleDmaReuseQueueTail2) {\n                        sSampleDmaReuseQueue2[dma->reuseIndex] =\n                            sSampleDmaReuseQueue2[sSampleDmaReuseQueueTail2];\n                        sSampleDmas[sSampleDmaReuseQueue2[sSampleDmaReuseQueueTail2]].reuseIndex =\n                            dma->reuseIndex;\n                    }\n                    sSampleDmaReuseQueueTail2++;\n                }\n                dma->ttl = 60;\n                *dmaIndexRef = (u8) i;\n#if defined(VERSION_EU)\n                return &dma->buffer[(devAddr - dma->source)];\n#else\n                return (devAddr - dma->source) + dma->buffer;\n#endif\n            }\n        }\n\n        if (sSampleDmaReuseQueueTail2 != sSampleDmaReuseQueueHead2 && arg2 != 0) {\n            // Allocate a DMA from reuse queue 2. This queue can be empty, since\n            // TTL 60 is pretty large.\n            dmaIndex = sSampleDmaReuseQueue2[sSampleDmaReuseQueueTail2];\n            sSampleDmaReuseQueueTail2++;\n            dma = sSampleDmas + dmaIndex;\n            hasDma = TRUE;\n        }\n    } else {\n#if defined(VERSION_EU)\n        dma = sSampleDmas;\n        dma += *dmaIndexRef;\n#else\n        dma = sSampleDmas + *dmaIndexRef;\n#endif\n        bufferPos = devAddr - dma->source;\n        if (0 <= bufferPos && (size_t) bufferPos <= dma->bufSize - size) {\n            // We already have DMA for this memory range.\n            if (dma->ttl == 0) {\n                // Move the DMA out of the reuse queue, by swapping it with the\n                // tail, and then incrementing the tail.\n                if (dma->reuseIndex != sSampleDmaReuseQueueTail1) {\n#if defined(VERSION_EU)\n                    if (1) {\n                    }\n#endif\n                    sSampleDmaReuseQueue1[dma->reuseIndex] =\n                        sSampleDmaReuseQueue1[sSampleDmaReuseQueueTail1];\n                    sSampleDmas[sSampleDmaReuseQueue1[sSampleDmaReuseQueueTail1]].reuseIndex =\n                        dma->reuseIndex;\n                }\n                sSampleDmaReuseQueueTail1++;\n            }\n            dma->ttl = 2;\n#if defined(VERSION_EU)\n            return dma->buffer + (devAddr - dma->source);\n#else\n            return (devAddr - dma->source) + dma->buffer;\n#endif\n        }\n    }\n\n    if (!hasDma) {\n        // Allocate a DMA from reuse queue 1. This queue will hopefully never\n        // be empty, since TTL 2 is so small.\n        dmaIndex = sSampleDmaReuseQueue1[sSampleDmaReuseQueueTail1++];\n        dma = sSampleDmas + dmaIndex;\n        hasDma = TRUE;\n    }\n\n    transfer = dma->bufSize;\n    dmaDevAddr = devAddr & ~0xF;\n    dma->ttl = 2;\n    dma->source = dmaDevAddr;\n    dma->sizeUnused = transfer;\n#ifdef VERSION_US\n    osInvalDCache(dma->buffer, transfer);\n#endif\n#if defined(VERSION_EU)\n    osPiStartDma(&gCurrAudioFrameDmaIoMesgBufs[gCurrAudioFrameDmaCount++], OS_MESG_PRI_NORMAL,\n                     OS_READ, dmaDevAddr, dma->buffer, transfer, &gCurrAudioFrameDmaQueue);\n    *dmaIndexRef = dmaIndex;\n    return (devAddr - dmaDevAddr) + dma->buffer;\n#else\n    gCurrAudioFrameDmaCount++;\n    osPiStartDma(&gCurrAudioFrameDmaIoMesgBufs[gCurrAudioFrameDmaCount - 1], OS_MESG_PRI_NORMAL,\n                 OS_READ, dmaDevAddr, dma->buffer, transfer, &gCurrAudioFrameDmaQueue);\n    *dmaIndexRef = dmaIndex;\n    return dma->buffer + (devAddr - dmaDevAddr);\n#endif\n}\n\n\nvoid init_sample_dma_buffers(UNUSED s32 arg0) {\n    s32 i;\n#if defined(VERSION_EU)\n#define j i\n#else\n    s32 j;\n#endif\n\n#if defined(VERSION_EU)\n    sDmaBufSize = 0x400;\n#else\n    sDmaBufSize = 144 * 9;\n#endif\n\n#if defined(VERSION_EU)\n    for (i = 0; i < gMaxSimultaneousNotes * 3 * gAudioBufferParameters.presetUnk4; i++)\n#else\n    for (i = 0; i < gMaxSimultaneousNotes * 3; i++)\n#endif\n    {\n        sSampleDmas[gSampleDmaNumListItems].buffer = soundAlloc(&gNotesAndBuffersPool, sDmaBufSize);\n        if (sSampleDmas[gSampleDmaNumListItems].buffer == NULL) {\n#if defined(VERSION_EU)\n            break;\n#else\n            goto out1;\n#endif\n        }\n        sSampleDmas[gSampleDmaNumListItems].bufSize = sDmaBufSize;\n        sSampleDmas[gSampleDmaNumListItems].source = 0;\n        sSampleDmas[gSampleDmaNumListItems].sizeUnused = 0;\n        sSampleDmas[gSampleDmaNumListItems].unused2 = 0;\n        sSampleDmas[gSampleDmaNumListItems].ttl = 0;\n        gSampleDmaNumListItems++;\n    }\n#if defined(VERSION_JP) || defined(VERSION_US)\nout1:\n#endif\n\n    for (i = 0; (u32) i < gSampleDmaNumListItems; i++) {\n        sSampleDmaReuseQueue1[i] = (u8) i;\n        sSampleDmas[i].reuseIndex = (u8) i;\n    }\n\n    for (j = gSampleDmaNumListItems; j < 0x100; j++) {\n        sSampleDmaReuseQueue1[j] = 0;\n    }\n\n    sSampleDmaReuseQueueTail1 = 0;\n    sSampleDmaReuseQueueHead1 = (u8) gSampleDmaNumListItems;\n    sSampleDmaListSize1 = gSampleDmaNumListItems;\n\n#if defined(VERSION_EU)\n    sDmaBufSize = 0x200;\n#else\n    sDmaBufSize = 160 * 9;\n#endif\n    for (i = 0; i < gMaxSimultaneousNotes; i++) {\n        sSampleDmas[gSampleDmaNumListItems].buffer = soundAlloc(&gNotesAndBuffersPool, sDmaBufSize);\n        if (sSampleDmas[gSampleDmaNumListItems].buffer == NULL) {\n#if defined(VERSION_EU)\n            break;\n#else\n            goto out2;\n#endif\n        }\n        sSampleDmas[gSampleDmaNumListItems].bufSize = sDmaBufSize;\n        sSampleDmas[gSampleDmaNumListItems].source = 0;\n        sSampleDmas[gSampleDmaNumListItems].sizeUnused = 0;\n        sSampleDmas[gSampleDmaNumListItems].unused2 = 0;\n        sSampleDmas[gSampleDmaNumListItems].ttl = 0;\n        gSampleDmaNumListItems++;\n    }\n#if defined(VERSION_JP) || defined(VERSION_US)\nout2:\n#endif\n\n    for (i = sSampleDmaListSize1; (u32) i < gSampleDmaNumListItems; i++) {\n        sSampleDmaReuseQueue2[i - sSampleDmaListSize1] = (u8) i;\n        sSampleDmas[i].reuseIndex = (u8)(i - sSampleDmaListSize1);\n    }\n\n    // This probably meant to touch the range size1..size2 as well... but it\n    // doesn't matter, since these values are never read anyway.\n    for (j = gSampleDmaNumListItems; j < 0x100; j++) {\n        sSampleDmaReuseQueue2[j] = sSampleDmaListSize1;\n    }\n\n    sSampleDmaReuseQueueTail2 = 0;\n    sSampleDmaReuseQueueHead2 = gSampleDmaNumListItems - sSampleDmaListSize1;\n#if defined(VERSION_EU)\n#undef j\n#endif\n}\n\n#if defined(VERSION_JP) || defined(VERSION_US)\n// This function gets optimized out on US due to being static and never called\nUNUSED static\n#endif\nvoid patch_sound(UNUSED struct AudioBankSound *sound, UNUSED u8 *memBase, UNUSED u8 *offsetBase) {\n    struct AudioBankSample *sample;\n    void *patched;\n    UNUSED u8 *mem; // unused on US\n\n#define PATCH(x, base) (patched = (void *)((uintptr_t) (x) + (uintptr_t) base))\n\n    if (sound->sample != NULL) {\n        sample = sound->sample = PATCH(sound->sample, memBase);\n        if (sample->loaded == 0) {\n            sample->sampleAddr = PATCH(sample->sampleAddr, offsetBase);\n            sample->loop = PATCH(sample->loop, memBase);\n            sample->book = PATCH(sample->book, memBase);\n            sample->loaded = 1;\n        }\n#if defined(VERSION_EU)\n        else if (sample->loaded == 0x80) {\n            PATCH(sample->sampleAddr, offsetBase);\n            mem = soundAlloc(&gNotesAndBuffersPool, sample->sampleSize);\n            if (mem == NULL) {\n                sample->sampleAddr = patched;\n                sample->loaded = 1;\n            } else {\n                audio_dma_copy_immediate((uintptr_t) patched, mem, sample->sampleSize);\n                sample->loaded = 0x81;\n                sample->sampleAddr = mem;\n            }\n            sample->loop = PATCH(sample->loop, memBase);\n            sample->book = PATCH(sample->book, memBase);\n        }\n#endif\n    }\n\n#undef PATCH\n}\n\n#ifdef VERSION_EU\n#define PATCH_SOUND patch_sound\n#else\n// copt inline of the above\n#define PATCH_SOUND(_sound, mem, offset)                                                  \\\n{                                                                                         \\\n    struct AudioBankSound *sound = _sound;                                                \\\n    struct AudioBankSample *sample;                                                       \\\n    void *patched;                                                                        \\\n    if ((*sound).sample != (void *) 0)                                                    \\\n    {                                                                                     \\\n        patched = (void *)(((uintptr_t)(*sound).sample) + ((uintptr_t)((u8 *) mem)));     \\\n        (*sound).sample = patched;                                                        \\\n        sample = (*sound).sample;                                                         \\\n        if ((*sample).loaded == 0)                                                        \\\n        {                                                                                 \\\n            patched = (void *)(((uintptr_t)(*sample).sampleAddr) + ((uintptr_t) offset)); \\\n            (*sample).sampleAddr = patched;                                               \\\n            patched = (void *)(((uintptr_t)(*sample).loop) + ((uintptr_t)((u8 *) mem)));  \\\n            (*sample).loop = patched;                                                     \\\n            patched = (void *)(((uintptr_t)(*sample).book) + ((uintptr_t)((u8 *) mem)));  \\\n            (*sample).book = patched;                                                     \\\n            (*sample).loaded = 1;                                                         \\\n        }                                                                                 \\\n    }                                                                                     \\\n}\n#endif\n\n// on US/JP this inlines patch_sound, using some -sopt compiler flag\nvoid patch_audio_bank(struct AudioBank *mem, u8 *offset, u32 numInstruments, u32 numDrums) {\n    struct Instrument *instrument;\n    struct Instrument **itInstrs;\n    struct Instrument **end;\n    struct AudioBank *temp;\n    u32 i;\n    void *patched;\n    struct Drum *drum;\n    struct Drum **drums;\n#if defined(VERSION_EU)\n    u32 numDrums2;\n#endif\n\n#define BASE_OFFSET_REAL(x, base) (void *)((uintptr_t) (x) + (uintptr_t) base)\n#define PATCH(x, base) (patched = BASE_OFFSET_REAL(x, base))\n#define PATCH_MEM(x) x = PATCH(x, mem)\n\n#if defined(VERSION_JP) || defined(VERSION_US)\n#define BASE_OFFSET(x, base) BASE_OFFSET_REAL(x, base)\n#else\n#define BASE_OFFSET(x, base) BASE_OFFSET_REAL(base, x)\n#endif\n\n    drums = mem->drums;\n#if defined(VERSION_JP) || defined(VERSION_US)\n    if (drums != NULL && numDrums > 0) {\n        mem->drums = (void *)((uintptr_t) drums + (uintptr_t) mem);\n        if (numDrums > 0) //! unneeded when -sopt is enabled\n        for (i = 0; i < numDrums; i++) {\n#else\n    numDrums2 = numDrums;\n    if (drums != NULL && numDrums2 > 0) {\n        mem->drums = PATCH(drums, mem);\n        for (i = 0; i < numDrums2; i++) {\n#endif\n            patched = mem->drums[i];\n            if (patched != NULL) {\n                drum = PATCH(patched, mem);\n                mem->drums[i] = drum;\n                if (drum->loaded == 0) {\n#if defined(VERSION_JP) || defined(VERSION_US)\n                    //! copt replaces drum with 'patched' for these two lines\n                    PATCH_SOUND(&(*(struct Drum *)patched).sound, mem, offset);\n                    patched = (*(struct Drum *)patched).envelope;\n#else\n                    patch_sound(&drum->sound, (u8 *) mem, offset);\n                    patched = drum->envelope;\n#endif\n                    drum->envelope = BASE_OFFSET(mem, patched);\n                    drum->loaded = 1;\n                }\n\n            }\n        }\n    }\n\n    //! Doesn't affect EU, but required for US/JP\n    temp = &*mem;\n#if defined(VERSION_JP) || defined(VERSION_US)\n    if (numInstruments >= 1)\n#endif\n    if (numInstruments > 0) {\n        //! Doesn't affect EU, but required for US/JP\n        struct Instrument **tempInst;\n        itInstrs = temp->instruments;\n        tempInst = temp->instruments;\n        end = numInstruments + tempInst;\n\n#if defined(VERSION_JP) || defined(VERSION_US)\nl2:\n#else\n        do {\n#endif\n            if (*itInstrs != NULL) {\n                *itInstrs = BASE_OFFSET(*itInstrs, mem);\n                instrument = *itInstrs;\n\n                if (instrument->loaded == 0) {\n                    PATCH_SOUND(&instrument->lowNotesSound, (u8 *) mem, offset);\n                    PATCH_SOUND(&instrument->normalNotesSound, (u8 *) mem, offset);\n                    PATCH_SOUND(&instrument->highNotesSound, (u8 *) mem, offset);\n                    patched = instrument->envelope;\n                    instrument->envelope = BASE_OFFSET(mem, patched);\n                    instrument->loaded = 1;\n                }\n            }\n            itInstrs++;\n#if defined(VERSION_JP) || defined(VERSION_US)\n            //! goto generated by copt, required to match US/JP\n            if (end != itInstrs) {\n                goto l2;\n            }\n#else\n        } while (end != itInstrs);\n#endif\n    }\n#undef PATCH_MEM\n#undef PATCH\n#undef BASE_OFFSET_REAL\n#undef BASE_OFFSET\n#undef PATCH_SOUND\n}\n\nstruct AudioBank *bank_load_immediate(s32 bankId, s32 arg1) {\n    UNUSED u32 pad1[4];\n    u32 buf[4];\n    u32 numInstruments, numDrums;\n    struct AudioBank *ret;\n    u8 *ctlData;\n    s32 alloc;\n\n    // (This is broken if the length is 1 (mod 16), but that never happens --\n    // it's always divisible by 4.)\n    alloc = gAlCtlHeader->seqArray[bankId].len + 0xf;\n    alloc = ALIGN16(alloc);\n    alloc -= 0x10;\n    ctlData = gAlCtlHeader->seqArray[bankId].offset;\n    ret = alloc_bank_or_seq(&gBankLoadedPool, 1, alloc, arg1, bankId);\n    if (ret == NULL) {\n        return NULL;\n    }\n\n    audio_dma_copy_immediate((uintptr_t) ctlData, buf, 0x10);\n    numInstruments = buf[0];\n    numDrums = buf[1];\n    audio_dma_copy_immediate((uintptr_t)(ctlData + 0x10), ret, alloc);\n    patch_audio_bank(ret, gAlTbl->seqArray[bankId].offset, numInstruments, numDrums);\n    gCtlEntries[bankId].numInstruments = (u8) numInstruments;\n    gCtlEntries[bankId].numDrums = (u8) numDrums;\n    gCtlEntries[bankId].instruments = ret->instruments;\n    gCtlEntries[bankId].drums = ret->drums;\n    gBankLoadStatus[bankId] = SOUND_LOAD_STATUS_COMPLETE;\n    return ret;\n}\n\nstruct AudioBank *bank_load_async(s32 bankId, s32 arg1, struct SequencePlayer *seqPlayer) {\n    u32 numInstruments, numDrums;\n    UNUSED u32 pad1[2];\n    u32 buf[4];\n    UNUSED u32 pad2;\n    size_t alloc;\n    struct AudioBank *ret;\n    u8 *ctlData;\n    OSMesgQueue *mesgQueue;\n#if defined(VERSION_EU)\n    UNUSED u32 pad3;\n#endif\n\n    alloc = gAlCtlHeader->seqArray[bankId].len + 0xf;\n    alloc = ALIGN16(alloc);\n    alloc -= 0x10;\n    ctlData = gAlCtlHeader->seqArray[bankId].offset;\n    ret = alloc_bank_or_seq(&gBankLoadedPool, 1, alloc, arg1, bankId);\n    if (ret == NULL) {\n        return NULL;\n    }\n\n    audio_dma_copy_immediate((uintptr_t) ctlData, buf, 0x10);\n    numInstruments = buf[0];\n    numDrums = buf[1];\n    seqPlayer->loadingBankId = (u8) bankId;\n#if defined(VERSION_EU)\n    gCtlEntries[bankId].numInstruments = numInstruments;\n    gCtlEntries[bankId].numDrums = numDrums;\n    gCtlEntries[bankId].instruments = ret->instruments;\n    gCtlEntries[bankId].drums = 0;\n    seqPlayer->bankDmaCurrMemAddr = (u8 *) ret;\n    seqPlayer->bankDmaCurrDevAddr = (uintptr_t)(ctlData + 0x10);\n    seqPlayer->bankDmaRemaining = alloc;\n    if (1) {\n    }\n#else\n    seqPlayer->loadingBankNumInstruments = numInstruments;\n    seqPlayer->loadingBankNumDrums = numDrums;\n    seqPlayer->bankDmaCurrMemAddr = (u8 *) ret;\n    seqPlayer->loadingBank = ret;\n    seqPlayer->bankDmaCurrDevAddr = (uintptr_t)(ctlData + 0x10);\n    seqPlayer->bankDmaRemaining = alloc;\n#endif\n    mesgQueue = &seqPlayer->bankDmaMesgQueue;\n    osCreateMesgQueue(mesgQueue, &seqPlayer->bankDmaMesg, 1);\n#if defined(VERSION_JP) || defined(VERSION_US)\n    seqPlayer->bankDmaMesg = NULL;\n#endif\n    seqPlayer->bankDmaInProgress = TRUE;\n    audio_dma_partial_copy_async(&seqPlayer->bankDmaCurrDevAddr, &seqPlayer->bankDmaCurrMemAddr,\n                                 &seqPlayer->bankDmaRemaining, mesgQueue, &seqPlayer->bankDmaIoMesg);\n    gBankLoadStatus[bankId] = SOUND_LOAD_STATUS_IN_PROGRESS;\n    return ret;\n}\n\nvoid *sequence_dma_immediate(s32 seqId, s32 arg1) {\n    s32 seqLength;\n    void *ptr;\n    u8 *seqData;\n\n    seqLength = gSeqFileHeader->seqArray[seqId].len + 0xf;\n    seqLength = ALIGN16(seqLength);\n    seqData = gSeqFileHeader->seqArray[seqId].offset;\n    ptr = alloc_bank_or_seq(&gSeqLoadedPool, 1, seqLength, arg1, seqId);\n    if (ptr == NULL) {\n        return NULL;\n    }\n\n    audio_dma_copy_immediate((uintptr_t) seqData, ptr, seqLength);\n    gSeqLoadStatus[seqId] = SOUND_LOAD_STATUS_COMPLETE;\n    return ptr;\n}\n\nvoid *sequence_dma_async(s32 seqId, s32 arg1, struct SequencePlayer *seqPlayer) {\n    s32 seqLength;\n    void *ptr;\n    u8 *seqData;\n    OSMesgQueue *mesgQueue;\n\n    eu_stubbed_printf_1(\"Seq %d Loading Start\\n\", seqId);\n    seqLength = gSeqFileHeader->seqArray[seqId].len + 0xf;\n    seqLength = ALIGN16(seqLength);\n    seqData = gSeqFileHeader->seqArray[seqId].offset;\n    ptr = alloc_bank_or_seq(&gSeqLoadedPool, 1, seqLength, arg1, seqId);\n    if (ptr == NULL) {\n        eu_stubbed_printf_0(\"Heap Overflow Error\\n\");\n        return NULL;\n    }\n\n    if (seqLength <= 0x40) {\n        // Immediately load short sequenece\n        audio_dma_copy_immediate((uintptr_t) seqData, ptr, seqLength);\n        if (1) {\n        }\n        gSeqLoadStatus[seqId] = SOUND_LOAD_STATUS_COMPLETE;\n    } else {\n        audio_dma_copy_immediate((uintptr_t) seqData, ptr, 0x40);\n        mesgQueue = &seqPlayer->seqDmaMesgQueue;\n        osCreateMesgQueue(mesgQueue, &seqPlayer->seqDmaMesg, 1);\n#if defined(VERSION_JP) || defined(VERSION_US)\n        seqPlayer->seqDmaMesg = NULL;\n#endif\n        seqPlayer->seqDmaInProgress = TRUE;\n        audio_dma_copy_async((uintptr_t)(seqData + 0x40), (u8 *) ptr + 0x40, seqLength - 0x40, mesgQueue,\n                             &seqPlayer->seqDmaIoMesg);\n        gSeqLoadStatus[seqId] = SOUND_LOAD_STATUS_IN_PROGRESS;\n    }\n    return ptr;\n}\n\nu8 get_missing_bank(u32 seqId, s32 *nonNullCount, s32 *nullCount) {\n    void *temp;\n    u32 bankId;\n    u16 offset;\n    u8 i;\n    u8 ret;\n\n    *nullCount = 0;\n    *nonNullCount = 0;\n#if defined(VERSION_EU)\n    offset = ((u16 *) gAlBankSets)[seqId];\n    for (i = gAlBankSets[offset++], ret = 0; i != 0; i--) {\n        bankId = gAlBankSets[offset++];\n#else\n    offset = ((u16 *) gAlBankSets)[seqId] + 1;\n    for (i = gAlBankSets[offset - 1], ret = 0; i != 0; i--) {\n        offset++;\n        bankId = gAlBankSets[offset - 1];\n#endif\n\n        if (IS_BANK_LOAD_COMPLETE(bankId) == TRUE) {\n#if defined(VERSION_EU)\n            temp = get_bank_or_seq(&gBankLoadedPool, 2, bankId);\n#else\n            temp = get_bank_or_seq(&gBankLoadedPool, 2, gAlBankSets[offset - 1]);\n#endif\n        } else {\n            temp = NULL;\n        }\n\n        if (temp == NULL) {\n            (*nullCount)++;\n            ret = bankId;\n        } else {\n            (*nonNullCount)++;\n        }\n    }\n\n    return ret;\n}\n\nstruct AudioBank *load_banks_immediate(s32 seqId, u8 *outDefaultBank) {\n    void *ret;\n    u32 bankId;\n    u16 offset;\n    u8 i;\n\n    offset = ((u16 *) gAlBankSets)[seqId];\n#ifdef VERSION_EU\n    for (i = gAlBankSets[offset++]; i != 0; i--) {\n        bankId = gAlBankSets[offset++];\n#else\n    offset++;\n    for (i = gAlBankSets[offset - 1]; i != 0; i--) {\n        offset++;\n        bankId = gAlBankSets[offset - 1];\n#endif\n\n        if (IS_BANK_LOAD_COMPLETE(bankId) == TRUE) {\n#ifdef VERSION_EU\n            ret = get_bank_or_seq(&gBankLoadedPool, 2, bankId);\n#else\n            ret = get_bank_or_seq(&gBankLoadedPool, 2, gAlBankSets[offset - 1]);\n#endif\n        } else {\n            ret = NULL;\n        }\n\n        if (ret == NULL) {\n            ret = bank_load_immediate(bankId, 2);\n        }\n    }\n    *outDefaultBank = bankId;\n    return ret;\n}\n\nvoid preload_sequence(u32 seqId, u8 preloadMask) {\n    void *sequenceData;\n    u8 temp;\n\n    if (seqId >= gSequenceCount) {\n        return;\n    }\n\n    gAudioLoadLock = AUDIO_LOCK_LOADING;\n    if (preloadMask & PRELOAD_BANKS) {\n        load_banks_immediate(seqId, &temp);\n    }\n\n    if (preloadMask & PRELOAD_SEQUENCE) {\n        // @bug should be IS_SEQ_LOAD_COMPLETE\n        if (IS_BANK_LOAD_COMPLETE(seqId) == TRUE) {\n            eu_stubbed_printf_1(\"SEQ  %d ALREADY CACHED\\n\", seqId);\n            sequenceData = get_bank_or_seq(&gSeqLoadedPool, 2, seqId);\n        } else {\n            sequenceData = NULL;\n        }\n        if (sequenceData == NULL && sequence_dma_immediate(seqId, 2) == NULL) {\n            gAudioLoadLock = AUDIO_LOCK_NOT_LOADING;\n            return;\n        }\n    }\n\n    gAudioLoadLock = AUDIO_LOCK_NOT_LOADING;\n}\n\nvoid load_sequence_internal(u32 player, u32 seqId, s32 loadAsync);\n\nvoid load_sequence(u32 player, u32 seqId, s32 loadAsync) {\n    if (!loadAsync) {\n        gAudioLoadLock = AUDIO_LOCK_LOADING;\n    }\n    load_sequence_internal(player, seqId, loadAsync);\n    if (!loadAsync) {\n        gAudioLoadLock = AUDIO_LOCK_NOT_LOADING;\n    }\n}\n\nvoid load_sequence_internal(u32 player, u32 seqId, s32 loadAsync) {\n    void *sequenceData;\n    struct SequencePlayer *seqPlayer = &gSequencePlayers[player];\n    UNUSED u32 padding[2];\n\n    if (seqId >= gSequenceCount) {\n        return;\n    }\n\n    sequence_player_disable(seqPlayer);\n    if (loadAsync) {\n        s32 numMissingBanks = 0;\n        s32 dummy = 0;\n        s32 bankId = get_missing_bank(seqId, &dummy, &numMissingBanks);\n        if (numMissingBanks == 1) {\n            eu_stubbed_printf_0(\"Ok,one bank slow load Start \\n\");\n            if (bank_load_async(bankId, 2, seqPlayer) == NULL) {\n                return;\n            }\n            // @bug This should set the last bank (i.e. the first in the JSON)\n            // as default, not the missing one. This code path never gets\n            // taken, though -- all sequence loading is synchronous.\n            seqPlayer->defaultBank[0] = bankId;\n        } else {\n            eu_stubbed_printf_1(\"Sorry,too many %d bank is none.fast load Start \\n\", numMissingBanks);\n            if (load_banks_immediate(seqId, &seqPlayer->defaultBank[0]) == NULL) {\n                return;\n            }\n        }\n    } else if (load_banks_immediate(seqId, &seqPlayer->defaultBank[0]) == NULL) {\n        return;\n    }\n\n    eu_stubbed_printf_2(\"Seq %d:Default Load Id is %d\\n\", seqId, seqPlayer->defaultBank[0]);\n    eu_stubbed_printf_0(\"Seq Loading Start\\n\");\n\n    seqPlayer->seqId = seqId;\n    sequenceData = get_bank_or_seq(&gSeqLoadedPool, 2, seqId);\n    if (sequenceData == NULL) {\n        if (seqPlayer->seqDmaInProgress) {\n            eu_stubbed_printf_0(\"Error:Before Sequence-SlowDma remain.\\n\");\n            eu_stubbed_printf_0(\"      Cancel Seq Start.\\n\");\n            return;\n        }\n        if (loadAsync) {\n            sequenceData = sequence_dma_async(seqId, 2, seqPlayer);\n        } else {\n            sequenceData = sequence_dma_immediate(seqId, 2);\n        }\n\n        if (sequenceData == NULL) {\n            return;\n        }\n    }\n\n    eu_stubbed_printf_1(\"SEQ  %d ALREADY CACHED\\n\", seqId);\n    init_sequence_player(player);\n    seqPlayer->scriptState.depth = 0;\n    seqPlayer->delay = 0;\n    seqPlayer->enabled = TRUE;\n    seqPlayer->seqData = sequenceData;\n    seqPlayer->scriptState.pc = sequenceData;\n}\n\n// (void) must be omitted from parameters to fix stack with -framepointer\nvoid audio_init() {\n#if defined(VERSION_EU)\n    UNUSED s8 pad[16];\n#else\n    UNUSED s8 pad[32];\n#endif\n#if defined(VERSION_JP) || defined(VERSION_US)\n    u8 buf[0x10];\n#endif\n    s32 i, j, k;\n    UNUSED s32 lim1; // lim1 unused in EU\n#if defined(VERSION_EU)\n    UNUSED u8 buf[0x10];\n    s32 UNUSED lim2, lim3;\n#else\n    s32 lim2, lim3;\n#endif\n    UNUSED u32 size;\n    UNUSED u64 *ptr64;\n    void *data;\n    UNUSED s32 pad2;\n\n    gAudioLoadLock = AUDIO_LOCK_UNINITIALIZED;\n\n#if defined(VERSION_JP) || defined(VERSION_US)\n    lim1 = gUnusedCount80333EE8;\n    for (i = 0; i < lim1; i++) {\n        gUnused80226E58[i] = 0;\n        gUnused80226E98[i] = 0;\n    }\n\n    lim2 = gAudioHeapSize;\n    for (i = 0; i <= lim2 / 8 - 1; i++) {\n        ((u64 *) gAudioHeap)[i] = 0;\n    }\n\n#ifdef TARGET_N64\n    // It seems boot.s doesn't clear the .bss area for audio, so do it here.\n    i = 0;\n    lim3 = ((uintptr_t) &gAudioGlobalsEndMarker - (uintptr_t) &gAudioGlobalsStartMarker) / 8;\n    ptr64 = &gAudioGlobalsStartMarker - 1;\n    for (k = lim3; k >= 0; k--) {\n        i++;\n        ptr64[i] = 0;\n    }\n#endif\n\n#else\n    for (i = 0; i < gAudioHeapSize / 8; i++) {\n        ((u64 *) gAudioHeap)[i] = 0;\n    }\n\n#ifdef TARGET_N64\n    // It seems boot.s doesn't clear the .bss area for audio, so do it here.\n    lim3 = ((uintptr_t) &gAudioGlobalsEndMarker - (uintptr_t) &gAudioGlobalsStartMarker) / 8;\n    ptr64 = &gAudioGlobalsStartMarker;\n    for (k = lim3; k >= 0; k--) {\n        *ptr64++ = 0;\n    }\n#endif\n\n    D_EU_802298D0 = 20.03042f;\n    gRefreshRate = 50;\n    port_eu_init();\n    if (k) {\n    }\n#endif\n\n#ifdef TARGET_N64\n    eu_stubbed_printf_3(\n        \"Clear Workarea %x -%x size %x \\n\",\n        (uintptr_t) &gAudioGlobalsStartMarker,\n        (uintptr_t) &gAudioGlobalsEndMarker,\n        (uintptr_t) &gAudioGlobalsEndMarker - (uintptr_t) &gAudioGlobalsStartMarker\n    );\n#endif\n\n    eu_stubbed_printf_1(\"AudioHeap is %x\\n\", gAudioHeapSize);\n\n    for (i = 0; i < NUMAIBUFFERS; i++) {\n        gAiBufferLengths[i] = 0xa0;\n    }\n\n    gAudioFrameCount = 0;\n    gAudioTaskIndex = 0;\n    gCurrAiBufferIndex = 0;\n    gSoundMode = 0;\n    gAudioTask = NULL;\n    gAudioTasks[0].task.t.data_size = 0;\n    gAudioTasks[1].task.t.data_size = 0;\n    osCreateMesgQueue(&gAudioDmaMesgQueue, &gAudioDmaMesg, 1);\n    osCreateMesgQueue(&gCurrAudioFrameDmaQueue, gCurrAudioFrameDmaMesgBufs,\n                      ARRAY_COUNT(gCurrAudioFrameDmaMesgBufs));\n    gCurrAudioFrameDmaCount = 0;\n    gSampleDmaNumListItems = 0;\n\n    sound_init_main_pools(gAudioInitPoolSize);\n\n    for (i = 0; i < NUMAIBUFFERS; i++) {\n        gAiBuffers[i] = soundAlloc(&gAudioInitPool, AIBUFFER_LEN);\n\n        for (j = 0; j < (s32) (AIBUFFER_LEN / sizeof(s16)); j++) {\n            gAiBuffers[i][j] = 0;\n        }\n    }\n\n#if defined(VERSION_EU)\n    gAudioResetPresetIdToLoad = 0;\n    gAudioResetStatus = 1;\n    audio_shut_down_and_reset_step();\n#else\n    audio_reset_session(&gAudioSessionPresets[0]);\n#endif\n\n    // Not sure about these prints\n    eu_stubbed_printf_1(\"Heap reset.Synth Change %x \\n\", 0);\n    eu_stubbed_printf_3(\"Heap %x %x %x\\n\", 0, 0, 0);\n    eu_stubbed_printf_0(\"Main Heap Initialize.\\n\");\n\n    // Load headers for sounds and sequences\n    gSeqFileHeader = (ALSeqFile *) buf;\n    data = gMusicData;\n    audio_dma_copy_immediate((uintptr_t) data, gSeqFileHeader, 0x10);\n    gSequenceCount = gSeqFileHeader->seqCount;\n#if defined(VERSION_EU)\n    size = gSequenceCount * sizeof(ALSeqData) + 4;\n    size = ALIGN16(size);\n#else\n    size = ALIGN16(gSequenceCount * sizeof(ALSeqData) + 4);\n#endif\n    gSeqFileHeader = soundAlloc(&gAudioInitPool, size);\n    audio_dma_copy_immediate((uintptr_t) data, gSeqFileHeader, size);\n    alSeqFileNew(gSeqFileHeader, data);\n\n    // Load header for CTL (instrument metadata)\n    gAlCtlHeader = (ALSeqFile *) buf;\n    data = gSoundDataADSR;\n    audio_dma_copy_immediate((uintptr_t) data, gAlCtlHeader, 0x10);\n    size = gAlCtlHeader->seqCount * sizeof(ALSeqData) + 4;\n    size = ALIGN16(size);\n    gCtlEntries = soundAlloc(&gAudioInitPool, gAlCtlHeader->seqCount * sizeof(struct CtlEntry));\n    gAlCtlHeader = soundAlloc(&gAudioInitPool, size);\n    audio_dma_copy_immediate((uintptr_t) data, gAlCtlHeader, size);\n    alSeqFileNew(gAlCtlHeader, data);\n\n    // Load header for TBL (raw sound data)\n    gAlTbl = (ALSeqFile *) buf;\n    audio_dma_copy_immediate((uintptr_t) data, gAlTbl, 0x10);\n    size = gAlTbl->seqCount * sizeof(ALSeqData) + 4;\n    size = ALIGN16(size);\n    gAlTbl = soundAlloc(&gAudioInitPool, size);\n    audio_dma_copy_immediate((uintptr_t) gSoundDataRaw, gAlTbl, size);\n    alSeqFileNew(gAlTbl, gSoundDataRaw);\n\n    // Load bank sets for each sequence\n    gAlBankSets = soundAlloc(&gAudioInitPool, 0x100);\n    audio_dma_copy_immediate((uintptr_t) gBankSetsData, gAlBankSets, 0x100);\n\n    init_sequence_players();\n    gAudioLoadLock = AUDIO_LOCK_NOT_LOADING;\n    // Should probably contain the sizes of the data banks, but those aren't\n    // easily accessible from here.\n    eu_stubbed_printf_0(\"---------- Init Completed. ------------\\n\");\n    eu_stubbed_printf_1(\" Syndrv    :[%6d]\\n\", 0); // gSoundDataADSR\n    eu_stubbed_printf_1(\" Seqdrv    :[%6d]\\n\", 0); // gMusicData\n    eu_stubbed_printf_1(\" audiodata :[%6d]\\n\", 0); // gSoundDataRaw\n    eu_stubbed_printf_0(\"---------------------------------------\\n\");\n}\n#endif\n"
  },
  {
    "path": "src/audio/load.h",
    "content": "#ifndef AUDIO_LOAD_H\n#define AUDIO_LOAD_H\n\n#include <PR/ultratypes.h>\n\n#include \"internal.h\"\n\n#define AUDIO_FRAME_DMA_QUEUE_SIZE 0x40\n\n#define PRELOAD_BANKS 2\n#define PRELOAD_SEQUENCE 1\n\n#define IS_SEQUENCE_CHANNEL_VALID(ptr) ((uintptr_t)(ptr) != (uintptr_t)&gSequenceChannelNone)\n\nextern struct Note *gNotes;\n\n// Music in SM64 is played using 3 players:\n// gSequencePlayers[0] is level background music\n// gSequencePlayers[1] is misc music, like the puzzle jingle\n// gSequencePlayers[2] is sound\nextern struct SequencePlayer gSequencePlayers[SEQUENCE_PLAYERS];\n\nextern struct SequenceChannel gSequenceChannels[SEQUENCE_CHANNELS];\nextern struct SequenceChannelLayer gSequenceLayers[SEQUENCE_LAYERS];\n\nextern struct SequenceChannel gSequenceChannelNone;\n\nextern struct AudioListItem gLayerFreeList;\nextern struct NotePool gNoteFreeLists;\n\nextern OSMesgQueue gCurrAudioFrameDmaQueue;\nextern u32 gSampleDmaNumListItems;\nextern ALSeqFile *gAlCtlHeader;\nextern ALSeqFile *gAlTbl;\nextern ALSeqFile *gSeqFileHeader;\nextern u8 *gAlBankSets;\n\nextern struct CtlEntry *gCtlEntries;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\nextern struct AudioBufferParametersEU gAudioBufferParameters;\n#endif\nextern s32 gAiFrequency;\n#if defined(VERSION_SH) || defined(VERSION_CN)\nextern s16 gCurrAiBufferLength;\nextern s32 D_SH_8034F68C;\n#endif\nextern s32 gMaxAudioCmds;\n\nextern s32 gMaxSimultaneousNotes;\nextern s32 gSamplesPerFrameTarget;\nextern s32 gMinAiBufferLength;\nextern s16 gTempoInternalToExternal;\nextern s8 gAudioUpdatesPerFrame; // = 4\nextern s8 gSoundMode;\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\nextern OSMesgQueue gUnkQueue1;\n\nstruct UnkStructSH8034EC88 {\n    u8 *endAndMediumIdentification;\n    struct AudioBankSample *sample;\n    u8 *ramAddr;\n    u32 encodedInfo;\n    s32 isFree;\n};\n\nstruct PatchStruct {\n    s32 bankId1;\n    s32 bankId2;\n    void *baseAddr1;\n    void *baseAddr2;\n    s32 medium1;\n    s32 medium2;\n};\n\nextern struct UnkStructSH8034EC88 D_SH_8034EC88[0x80];\n#endif\n\nvoid audio_dma_partial_copy_async(uintptr_t *devAddr, u8 **vAddr, ssize_t *remaining, OSMesgQueue *queue, OSIoMesg *mesg);\nvoid decrease_sample_dma_ttls(void);\n#if defined(VERSION_SH) || defined(VERSION_CN)\nvoid *dma_sample_data(uintptr_t devAddr, u32 size, s32 arg2, u8 *dmaIndexRef, s32 medium);\n#else\nvoid *dma_sample_data(uintptr_t devAddr, u32 size, s32 arg2, u8 *dmaIndexRef);\n#endif\nvoid init_sample_dma_buffers(s32 arg0);\n#if defined(VERSION_SH) || defined(VERSION_CN)\nvoid patch_audio_bank(s32 bankId, struct AudioBank *mem, struct PatchStruct *patchInfo);\n#else\nvoid patch_audio_bank(struct AudioBank *mem, u8 *offset, u32 numInstruments, u32 numDrums);\n#endif\n#if defined(VERSION_SH) || defined(VERSION_CN)\nvoid preload_sequence(u32 seqId, s32 preloadMask);\n#else\nvoid preload_sequence(u32 seqId, u8 preloadMask);\n#endif\nvoid load_sequence(u32 player, u32 seqId, s32 loadAsync);\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\nvoid func_sh_802f3158(s32 seqId, s32 arg1, s32 arg2, OSMesgQueue *retQueue);\nu8 *func_sh_802f3220(u32 seqId, u32 *a1);\nstruct AudioBankSample *func_sh_802f4978(s32 bankId, s32 idx);\ns32 func_sh_802f47c8(s32 bankId, u8 idx, s8 *io);\nvoid *func_sh_802f3f08(s32 poolIdx, s32 arg1, s32 arg2, s32 arg3, OSMesgQueue *retQueue);\nvoid func_sh_802f41e4(s32 audioResetStatus);\nBAD_RETURN(s32) func_sh_802f3368(s32 bankId);\nvoid *func_sh_802f3764(s32 arg0, s32 idx, s32 *arg2);\ns32 func_sh_802f3024(s32 bankId, s32 instId, s32 arg2);\nvoid func_sh_802f30f4(s32 arg0, s32 arg1, s32 arg2, OSMesgQueue *arg3);\nvoid func_sh_802f3288(s32 idx);\n\n#endif\n\n#endif // AUDIO_LOAD_H\n"
  },
  {
    "path": "src/audio/load_sh.c",
    "content": "#if defined(VERSION_SH) || defined(VERSION_CN)\n#include <ultra64.h>\n#include <PR/os.h>\n\n#include \"data.h\"\n#include \"external.h\"\n#include \"heap.h\"\n#include \"load.h\"\n#include \"seqplayer.h\"\n\n#define ALIGN16(val) (((val) + 0xF) & ~0xF)\n\nstruct SharedDma {\n    /*0x0*/ u8 *buffer;       // target, points to pre-allocated buffer\n    /*0x4*/ uintptr_t source; // device address\n    /*0x8*/ u16 sizeUnused;   // set to bufSize, never read\n    /*0xA*/ u16 bufSize;      // size of buffer\n    /*0xC*/ u8 unused2;       // set to 0, never read\n    /*0xD*/ u8 reuseIndex;    // position in sSampleDmaReuseQueue1/2, if ttl == 0\n    /*0xE*/ u8 ttl;           // duration after which the DMA can be discarded\n};                            // size = 0x10\n\nvoid port_eu_init(void);\nvoid patch_sound(struct AudioBankSound *sound, struct AudioBank *memBase, struct PatchStruct *patchInfo);\nvoid *func_802f3f08(s32 poolIdx, s32 idx, s32 numChunks, s32 arg3, OSMesgQueue *retQueue);\n\nstruct Note *gNotes;\n\nUNUSED static u32 pad;\n\nstruct SequencePlayer gSequencePlayers[SEQUENCE_PLAYERS];\nstruct SequenceChannel gSequenceChannels[SEQUENCE_CHANNELS];\nstruct SequenceChannelLayer gSequenceLayers[SEQUENCE_LAYERS];\n\nstruct SequenceChannel gSequenceChannelNone;\nstruct AudioListItem gLayerFreeList;\nstruct NotePool gNoteFreeLists;\n\nstruct AudioBankSample *D_SH_8034EA88[0x80];\nstruct UnkStructSH8034EC88 D_SH_8034EC88[0x80];\ns32 D_SH_8034F688; // index into D_SH_8034EA88\ns32 D_SH_8034F68C; // index or size for D_SH_8034EC88\n\nstruct PendingDmaAudioBank {\n    s8 inProgress;\n    s8 timer;\n    s8 medium;\n    struct AudioBank *audioBank;\n    uintptr_t devAddr;\n    void *vAddr;\n    u32 remaining;\n    u32 transferSize;\n    u32 encodedInfo;\n    OSMesgQueue *retQueue;\n    OSMesgQueue dmaRetQueue;\n    OSMesg mesgs[1];\n    OSIoMesg ioMesg;\n};\nstruct PendingDmaAudioBank sPendingDmaAudioBanks[16];\n\nOSMesgQueue gUnkQueue1;\nOSMesg gUnkMesgBufs1[0x10];\nOSMesgQueue gUnkQueue2;\nOSMesg gUnkMesgBufs2[0x10];\n\nOSMesgQueue gCurrAudioFrameDmaQueue;\nOSMesg gCurrAudioFrameDmaMesgBufs[AUDIO_FRAME_DMA_QUEUE_SIZE];\nOSIoMesg gCurrAudioFrameDmaIoMesgBufs[AUDIO_FRAME_DMA_QUEUE_SIZE];\n\nOSMesgQueue gAudioDmaMesgQueue;\nOSMesg gAudioDmaMesg;\nOSIoMesg gAudioDmaIoMesg;\n\nstruct SharedDma *sSampleDmas;\nu32 gSampleDmaNumListItems;\nu32 sSampleDmaListSize1;\nu32 sUnused80226B40; // set to 0, never read\n\n// Circular buffer of DMAs with ttl = 0. tail <= head, wrapping around mod 256.\nu8 sSampleDmaReuseQueue1[256];\nu8 sSampleDmaReuseQueue2[256];\nu8 sSampleDmaReuseQueueTail1;\nu8 sSampleDmaReuseQueueTail2;\nu8 sSampleDmaReuseQueueHead1;\nu8 sSampleDmaReuseQueueHead2;\n\nALSeqFile *gSeqFileHeader;\nALSeqFile *gAlCtlHeader;\nALSeqFile *gAlTbl;\nu8 *gAlBankSets;\nu16 gSequenceCount;\n\nstruct CtlEntry *gCtlEntries;\n\nstruct AudioBufferParametersEU gAudioBufferParameters;\nu32 sDmaBufSize;\ns32 gMaxAudioCmds;\ns32 gMaxSimultaneousNotes;\n\ns16 gTempoInternalToExternal;\n\ns8 gSoundMode;\n\ns8 gAudioUpdatesPerFrame;\n\nextern u64 gAudioGlobalsStartMarker;\nextern u64 gAudioGlobalsEndMarker;\n\nextern u8 gSoundDataADSR[]; // ctl\nextern u8 gSoundDataRaw[];  // tbl\nextern u8 gMusicData[];     // sequences\n\nALSeqFile *get_audio_file_header(s32 arg0);\n\nvoid *func_sh_802f3688(s32 bankId);\nvoid *get_bank_or_seq_wrapper(s32 arg0, s32 arg1);\nvoid func_sh_802f3d78(uintptr_t devAddr, void *vAddr, size_t nbytes, s32 arg3);\nvoid func_sh_802f3c38(uintptr_t devAddr, void *vAddr, size_t nbytes, s32 medium);\ns32 func_sh_802f3dd0(OSIoMesg *m, s32 pri, s32 direction, uintptr_t devAddr,\n        void *dramAddr, s32 size, OSMesgQueue *retQueue, s32 medium, UNUSED const char *reason);\nvoid func_sh_802f4a4c(s32 audioResetStatus);\nvoid func_sh_802f4bd8(struct PendingDmaSample *arg0, s32 len);\nvoid func_sh_802f4c5c(uintptr_t devAddr, void *vAddr, size_t nbytes, s32 arg3);\nstruct PendingDmaAudioBank *func_sh_802f4cb4(uintptr_t devAddr, void *vAddr, s32 size,\n        s32 medium, s32 numChunks, OSMesgQueue *retQueue, s32 encodedInfo);\nvoid func_sh_802f4dcc(s32 audioResetStatus);\nvoid func_sh_802f4e50(struct PendingDmaAudioBank *audioBank, s32 audioResetStatus);\nvoid func_sh_802f50ec(struct PendingDmaAudioBank *arg0, size_t len);\nvoid func_sh_802f517c(uintptr_t devAddr, void *vAddr, size_t nbytes, s32 arg3);\nBAD_RETURN(s32) func_sh_802f5310(s32 bankId, struct AudioBank *mem, struct PatchStruct *patchInfo, s32 arg3);\ns32 func_sh_802f573c(s32 audioResetStatus);\nvoid *func_sh_802f3564(s32 seqId);\ns32 func_sh_802f3ec4(s32 arg0, uintptr_t *arg1);\nvoid func_sh_802f3ed4(UNUSED s32 arg0, UNUSED s32 arg1, UNUSED void *vAddr, UNUSED size_t nbytes);\n\ns32 canonicalize_index(s32 poolIdx, s32 idx);\n\nvoid decrease_sample_dma_ttls() {\n    u32 i;\n\n    for (i = 0; i < sSampleDmaListSize1; i++) {\n        struct SharedDma *temp = &sSampleDmas[i];\n        if (temp->ttl != 0) {\n            temp->ttl--;\n            if (temp->ttl == 0) {\n                temp->reuseIndex = sSampleDmaReuseQueueHead1;\n                sSampleDmaReuseQueue1[sSampleDmaReuseQueueHead1++] = (u8) i;\n            }\n        }\n    }\n\n    for (i = sSampleDmaListSize1; i < gSampleDmaNumListItems; i++) {\n        struct SharedDma *temp = &sSampleDmas[i];\n        if (temp->ttl != 0) {\n            temp->ttl--;\n            if (temp->ttl == 0) {\n                temp->reuseIndex = sSampleDmaReuseQueueHead2;\n                sSampleDmaReuseQueue2[sSampleDmaReuseQueueHead2++] = (u8) i;\n            }\n        }\n    }\n\n    sUnused80226B40 = 0;\n}\n\nextern char shindouDebugPrint62[]; // \"SUPERDMA\"\nvoid *dma_sample_data(uintptr_t devAddr, u32 size, s32 arg2, u8 *dmaIndexRef, s32 medium) {\n    UNUSED s32 sp60;\n    struct SharedDma *dma;\n    s32 hasDma = FALSE;\n    uintptr_t dmaDevAddr;\n    UNUSED u32 pad;\n    u32 dmaIndex;\n    u32 transfer;\n    ssize_t bufferPos;\n    u32 i;\n\n    if (arg2 != 0 || *dmaIndexRef >= sSampleDmaListSize1) {\n        for (i = sSampleDmaListSize1; i < gSampleDmaNumListItems; i++) {\n            dma = &sSampleDmas[i];\n            bufferPos = devAddr - dma->source;\n            if (0 <= bufferPos && (size_t) bufferPos <= dma->bufSize - size) {\n                // We already have a DMA request for this memory range.\n                if (dma->ttl == 0 && sSampleDmaReuseQueueTail2 != sSampleDmaReuseQueueHead2) {\n                    // Move the DMA out of the reuse queue, by swapping it with the\n                    // tail, and then incrementing the tail.\n                    if (dma->reuseIndex != sSampleDmaReuseQueueTail2) {\n                        sSampleDmaReuseQueue2[dma->reuseIndex] =\n                            sSampleDmaReuseQueue2[sSampleDmaReuseQueueTail2];\n                        sSampleDmas[sSampleDmaReuseQueue2[sSampleDmaReuseQueueTail2]].reuseIndex =\n                            dma->reuseIndex;\n                    }\n                    sSampleDmaReuseQueueTail2++;\n                }\n                dma->ttl = 60;\n                *dmaIndexRef = (u8) i;\n                return &dma->buffer[(devAddr - dma->source)];\n            }\n        }\n\n        if (sSampleDmaReuseQueueTail2 != sSampleDmaReuseQueueHead2 && arg2 != 0) {\n            // Allocate a DMA from reuse queue 2. This queue can be empty, since\n            // TTL 60 is pretty large.\n            dmaIndex = sSampleDmaReuseQueue2[sSampleDmaReuseQueueTail2];\n            sSampleDmaReuseQueueTail2++;\n            dma = sSampleDmas + dmaIndex;\n            hasDma = TRUE;\n        }\n    } else {\n        dma = sSampleDmas + *dmaIndexRef;\n        bufferPos = devAddr - dma->source;\n        if (0 <= bufferPos && (size_t) bufferPos <= dma->bufSize - size) {\n            // We already have DMA for this memory range.\n            if (dma->ttl == 0) {\n                // Move the DMA out of the reuse queue, by swapping it with the\n                // tail, and then incrementing the tail.\n                if (dma->reuseIndex != sSampleDmaReuseQueueTail1) {\n                    sSampleDmaReuseQueue1[dma->reuseIndex] =\n                        sSampleDmaReuseQueue1[sSampleDmaReuseQueueTail1];\n                    sSampleDmas[sSampleDmaReuseQueue1[sSampleDmaReuseQueueTail1]].reuseIndex =\n                        dma->reuseIndex;\n                }\n                sSampleDmaReuseQueueTail1++;\n            }\n            dma->ttl = 2;\n            return dma->buffer + (devAddr - dma->source);\n        }\n    }\n\n    if (!hasDma) {\n        if (1) {}\n        // Allocate a DMA from reuse queue 1. This queue will hopefully never\n        // be empty, since TTL 2 is so small.\n        dmaIndex = sSampleDmaReuseQueue1[sSampleDmaReuseQueueTail1++];\n        dma = sSampleDmas + dmaIndex;\n        hasDma = TRUE;\n    }\n\n    transfer = dma->bufSize;\n    dmaDevAddr = devAddr & ~0xF;\n    dma->ttl = 2;\n    dma->source = dmaDevAddr;\n    dma->sizeUnused = transfer;\n    func_sh_802f3dd0(&gCurrAudioFrameDmaIoMesgBufs[gCurrAudioFrameDmaCount++], OS_MESG_PRI_NORMAL, OS_READ,\n         dmaDevAddr, dma->buffer, transfer, &gCurrAudioFrameDmaQueue, medium, shindouDebugPrint62);\n    *dmaIndexRef = dmaIndex;\n    return (devAddr - dmaDevAddr) + dma->buffer;\n}\n\nvoid init_sample_dma_buffers(UNUSED s32 arg0) {\n    s32 i;\n\n    sDmaBufSize = 0x2D0;\n    sSampleDmas = sound_alloc_uninitialized(&gNotesAndBuffersPool,\n            gMaxSimultaneousNotes * 4 * sizeof(struct SharedDma) * gAudioBufferParameters.presetUnk4);\n\n    for (i = 0; i < gMaxSimultaneousNotes * 3 * gAudioBufferParameters.presetUnk4; i++) {\n        if ((sSampleDmas[gSampleDmaNumListItems].buffer = sound_alloc_uninitialized(&gNotesAndBuffersPool, sDmaBufSize)) == NULL) {\n            break;\n        }\n        sSampleDmas[gSampleDmaNumListItems].bufSize = sDmaBufSize;\n        sSampleDmas[gSampleDmaNumListItems].source = 0;\n        sSampleDmas[gSampleDmaNumListItems].sizeUnused = 0;\n        sSampleDmas[gSampleDmaNumListItems].unused2 = 0;\n        sSampleDmas[gSampleDmaNumListItems].ttl = 0;\n        gSampleDmaNumListItems++;\n    }\n\n    for (i = 0; (u32) i < gSampleDmaNumListItems; i++) {\n        sSampleDmaReuseQueue1[i] = (u8) i;\n        sSampleDmas[i].reuseIndex = (u8) i;\n    }\n\n    for (i = gSampleDmaNumListItems; i < 0x100; i++) {\n        sSampleDmaReuseQueue1[i] = 0;\n    }\n\n    sSampleDmaReuseQueueTail1 = 0;\n    sSampleDmaReuseQueueHead1 = (u8) gSampleDmaNumListItems;\n    sSampleDmaListSize1 = gSampleDmaNumListItems;\n\n    sDmaBufSize = 0x2D0;\n    for (i = 0; i < gMaxSimultaneousNotes; i++) {\n        if ((sSampleDmas[gSampleDmaNumListItems].buffer = sound_alloc_uninitialized(&gNotesAndBuffersPool, sDmaBufSize)) == NULL) {\n            break;\n        }\n        sSampleDmas[gSampleDmaNumListItems].bufSize = sDmaBufSize;\n        sSampleDmas[gSampleDmaNumListItems].source = 0;\n        sSampleDmas[gSampleDmaNumListItems].sizeUnused = 0;\n        sSampleDmas[gSampleDmaNumListItems].unused2 = 0;\n        sSampleDmas[gSampleDmaNumListItems].ttl = 0;\n        gSampleDmaNumListItems++;\n    }\n\n    for (i = sSampleDmaListSize1; (u32) i < gSampleDmaNumListItems; i++) {\n        sSampleDmaReuseQueue2[i - sSampleDmaListSize1] = (u8) i;\n        sSampleDmas[i].reuseIndex = (u8)(i - sSampleDmaListSize1);\n    }\n\n    // This probably meant to touch the range size1..size2 as well... but it\n    // doesn't matter, since these values are never read anyway.\n    for (i = gSampleDmaNumListItems; i < 0x100; i++) {\n        sSampleDmaReuseQueue2[i] = sSampleDmaListSize1;\n    }\n\n    sSampleDmaReuseQueueTail2 = 0;\n    sSampleDmaReuseQueueHead2 = gSampleDmaNumListItems - sSampleDmaListSize1;\n}\n\nvoid patch_seq_file(ALSeqFile *seqFile, u8 *data, u16 arg2) {\n    s32 i;\n\n    seqFile->unk2 = arg2;\n    seqFile->data = data;\n    for (i = 0; i < seqFile->seqCount; i++) {\n        if (seqFile->seqArray[i].len != 0 && seqFile->seqArray[i].medium == 2) {\n            seqFile->seqArray[i].offset += (uintptr_t)data;\n        }\n    }\n}\n\nstruct AudioBank *load_banks_immediate(s32 seqId, s32 *outDefaultBank) {\n    u8 bank;\n    s32 offset;\n    s32 i;\n    void *ret;\n\n    offset = ((u16 *)gAlBankSets)[canonicalize_index(0, seqId)];\n    bank = 0xFF;\n    for (i = gAlBankSets[offset++]; i > 0; i--) {\n        bank = gAlBankSets[offset++];\n        ret = func_sh_802f3688(bank);\n    }\n    *outDefaultBank = bank;\n    return ret;\n}\n\nvoid preload_sequence(u32 seqId, s32 preloadMask) {\n    UNUSED s32 pad;\n    s32 temp;\n\n    seqId = canonicalize_index(0, seqId);\n    if (preloadMask & PRELOAD_BANKS) {\n        load_banks_immediate(seqId, &temp);\n    }\n    if (preloadMask & PRELOAD_SEQUENCE) {\n        func_sh_802f3564(seqId);\n    }\n}\n\ns32 func_sh_802f2f38(struct AudioBankSample *sample, s32 bankId) {\n    u8 *sp24;\n\n    if (sample->isPatched == TRUE && sample->medium != 0) {\n        sp24 = func_sh_802f1d90(sample->size, bankId, sample->sampleAddr, sample->medium);\n        if (sp24 == NULL) {\n            return -1;\n        }\n        if (sample->medium == 1) {\n            func_sh_802f3d78((uintptr_t) sample->sampleAddr, sp24, sample->size, gAlTbl->unk2);\n        } else {\n            func_sh_802f3c38((uintptr_t) sample->sampleAddr, sp24, sample->size, sample->medium);\n        }\n        sample->medium = 0;\n        sample->sampleAddr = sp24;\n    }\n#ifdef AVOID_UB\n    return 0;\n#endif\n}\n\ns32 func_sh_802f3024(s32 bankId, s32 instId, s32 arg2) {\n    struct Instrument *instr;\n    struct Drum *drum;\n\n    if (instId < 0x7F) {\n        instr = get_instrument_inner(bankId, instId);\n        if (instr == NULL) {\n            return -1;\n        }\n        if (instr->normalRangeLo != 0) {\n            func_sh_802f2f38(instr->lowNotesSound.sample, bankId);\n        }\n        func_sh_802f2f38(instr->normalNotesSound.sample, bankId);\n        if (instr->normalRangeHi != 0x7F) {\n            func_sh_802f2f38(instr->highNotesSound.sample, bankId);\n        }\n        //! @bug missing return\n    } else if (instId == 0x7F) {\n        drum = get_drum(bankId, arg2);\n        if (drum == NULL) {\n            return -1;\n        }\n        func_sh_802f2f38(drum->sound.sample, bankId);\n        return 0;\n    }\n#ifdef AVOID_UB\n    return 0;\n#endif\n}\n\nvoid func_sh_802f30f4(s32 arg0, s32 arg1, s32 arg2, OSMesgQueue *arg3) {\n    if (func_802f3f08(2, canonicalize_index(2, arg0), arg1, arg2, arg3) == 0) {\n        osSendMesg(arg3, 0, 0);\n    }\n}\n\nvoid func_sh_802f3158(s32 seqId, s32 numChunks, s32 arg2, OSMesgQueue *retQueue) {\n    s32 val;\n    s32 v;\n\n    val = ((u16 *) gAlBankSets)[canonicalize_index(0, seqId)];\n    v = gAlBankSets[val++];\n\n    while (v > 0) {\n        func_802f3f08(1, canonicalize_index(1, gAlBankSets[val++]), numChunks, arg2, retQueue);\n        v--;\n    }\n}\n\nu8 *func_sh_802f3220(u32 seqId, u32 *a1) {\n    s32 val;\n\n    val = ((u16 *) gAlBankSets)[canonicalize_index(0, seqId)];\n    *a1 = gAlBankSets[val++];\n    if (*a1 == 0) {\n        return NULL;\n    }\n    return &gAlBankSets[val];\n}\n\nvoid func_sh_802f3288(s32 idx) {\n    s32 bankId;\n    s32 s2;\n\n    idx = ((u16*)gAlBankSets)[canonicalize_index(0, idx)];\n    s2 = gAlBankSets[idx++];\n    while (s2 > 0) {\n        s2--;\n        bankId = canonicalize_index(1, gAlBankSets[idx++]);\n\n        if (unk_pool1_lookup(1, bankId) == NULL) {\n            func_sh_802f3368(bankId);\n            if (gBankLoadStatus[bankId] != SOUND_LOAD_STATUS_5) {\n                gBankLoadStatus[bankId] = SOUND_LOAD_STATUS_NOT_LOADED;\n            }\n\n            continue;\n        }\n\n    }\n}\n\nBAD_RETURN(s32) func_sh_802f3368(s32 bankId) {\n    struct SoundMultiPool *pool = &gBankLoadedPool;\n    struct TemporaryPool *temporary = &pool->temporary;\n    struct PersistentPool *persistent;\n    u32 i;\n\n    if (temporary->entries[0].id == bankId) {\n        temporary->entries[0].id = -1;\n    } else if (temporary->entries[1].id == bankId) {\n        temporary->entries[1].id = -1;\n    }\n\n    persistent = &pool->persistent;\n    for (i = 0; i < persistent->numEntries; i++) {\n        if (persistent->entries[i].id == bankId) {\n            persistent->entries[i].id = -1;\n        }\n\n    }\n\n    discard_bank(bankId);\n}\n\n\nvoid load_sequence_internal(s32 player, s32 seqId, s32 loadAsync);\nvoid load_sequence(u32 player, u32 seqId, s32 loadAsync) {\n    load_sequence_internal(player, seqId, loadAsync);\n}\n\nvoid load_sequence_internal(s32 player, s32 seqId, UNUSED s32 loadAsync) {\n    struct SequencePlayer *seqPlayer;\n    u8 *sequenceData;\n    u32 s0;\n    s32 count;\n    u8 bank;\n    s32 i;\n\n    seqPlayer = &gSequencePlayers[player];\n\n    seqId = canonicalize_index(0, seqId);\n    sequence_player_disable(seqPlayer);\n\n    s0 = ((u16 *) gAlBankSets)[seqId];\n    count = gAlBankSets[s0++];\n    bank = 0xff;\n\n    while (count > 0) {\n        bank = gAlBankSets[s0++];\n        func_sh_802f3688(bank);\n        count--;\n    }\n\n    sequenceData = func_sh_802f3564(seqId);\n    init_sequence_player(player);\n    seqPlayer->seqId = seqId;\n    seqPlayer->defaultBank[0] = bank;\n    seqPlayer->enabled = 1;\n    seqPlayer->seqData = sequenceData;\n    seqPlayer->scriptState.pc = sequenceData;\n    seqPlayer->scriptState.depth = 0;\n    seqPlayer->delay = 0;\n    seqPlayer->finished = 0;\n\n    for (i = 0; i < 0x10; i++) {\n    }\n}\n\nvoid *func_sh_802f3564(s32 seqId) {\n    s32 seqId2 = canonicalize_index(0, seqId);\n    s32 temp;\n    return func_sh_802f3764(0, seqId2, &temp);\n}\n\nextern u8 gUnkLoadStatus[0x40];\n\nvoid *func_sh_802f3598(s32 idx, s32 *medium) {\n    void *ret;\n    ALSeqFile *f;\n    s32 temp;\n    s32 sp28;\n\n    f = get_audio_file_header(2);\n    idx = canonicalize_index(2, idx);\n    ret = get_bank_or_seq_wrapper(2, idx);\n    if (ret != NULL) {\n        if (gUnkLoadStatus[idx] != SOUND_LOAD_STATUS_5) {\n            gUnkLoadStatus[idx] = SOUND_LOAD_STATUS_COMPLETE;\n        }\n\n        *medium = 0;\n        return ret;\n    }\n\n    temp = f->seqArray[idx].magic;\n    if (temp == 4) {\n        *medium = f->seqArray[idx].medium;\n        return f->seqArray[idx].offset;\n    } else {\n        ret = func_sh_802f3764(2, idx, &sp28);\n        if (ret != 0) {\n            *medium = 0;\n            return ret;\n        }\n\n        *medium = f->seqArray[idx].medium;\n    }\n    return f->seqArray[idx].offset;\n\n}\n\nvoid *func_sh_802f3688(s32 bankId) {\n    void *ret;\n    s32 bankId1;\n    s32 bankId2;\n    s32 sp38;\n    struct PatchStruct patchInfo;\n\n    bankId = canonicalize_index(1, bankId);\n    bankId1 = gCtlEntries[bankId].bankId1;\n    bankId2 = gCtlEntries[bankId].bankId2;\n\n    patchInfo.bankId1 = bankId1;\n    patchInfo.bankId2 = bankId2;\n\n    if (patchInfo.bankId1 != 0xFF) {\n        patchInfo.baseAddr1 = func_sh_802f3598(patchInfo.bankId1, &patchInfo.medium1);\n    } else {\n        patchInfo.baseAddr1 = NULL;\n    }\n\n    if (bankId2 != 0xFF) {\n        patchInfo.baseAddr2 = func_sh_802f3598(bankId2, &patchInfo.medium2);\n    } else {\n        patchInfo.baseAddr2 = NULL;\n    }\n\n    if ((ret = func_sh_802f3764(1, bankId, &sp38)) == NULL) {\n        return NULL;\n    }\n\n    if (sp38 == 1) {\n        func_sh_802f5310(bankId, ret, &patchInfo, 0);\n    }\n\n    return ret;\n}\n\nvoid *func_sh_802f3764(s32 poolIdx, s32 idx, s32 *arg2) {\n    s32 size;\n    ALSeqFile *f;\n    void *vAddr;\n    s32 medium;\n    UNUSED u32 pad2;\n    u8 *devAddr;\n    s8 loadStatus;\n    s32 sp18;\n\n    vAddr = get_bank_or_seq_wrapper(poolIdx, idx);\n    if (vAddr != NULL) {\n        *arg2 = 0;\n        loadStatus = SOUND_LOAD_STATUS_COMPLETE;\n    } else {\n        f = get_audio_file_header(poolIdx);\n        size = f->seqArray[idx].len;\n        size = ALIGN16(size);\n        medium = f->seqArray[idx].medium;\n        sp18 = f->seqArray[idx].magic;\n        devAddr = f->seqArray[idx].offset;\n\n\n        switch (sp18) {\n            case 0:\n                vAddr = unk_pool1_alloc(poolIdx, idx, size);\n                if (vAddr == NULL) {\n                    return vAddr;\n                }\n                break;\n            case 1:\n                vAddr = alloc_bank_or_seq(poolIdx, size, 1, idx);\n                if (vAddr == NULL) {\n                    return vAddr;\n                }\n                break;\n            case 2:\n                vAddr = alloc_bank_or_seq(poolIdx, size, 0, idx);\n                if (vAddr == NULL) {\n                    return vAddr;\n                }\n                break;\n\n            case 3:\n            case 4:\n                vAddr = alloc_bank_or_seq(poolIdx, size, 2, idx);\n                if (vAddr == NULL) {\n                    return vAddr;\n                }\n                break;\n        }\n\n        *arg2 = 1;\n        if (medium == 1) {\n            func_sh_802f3d78((uintptr_t) devAddr, vAddr, size, f->unk2);\n        } else {\n            func_sh_802f3c38((uintptr_t) devAddr, vAddr, size, medium);\n        }\n\n        switch (sp18) {\n            case 0:\n                loadStatus = SOUND_LOAD_STATUS_5;\n                break;\n\n            default:\n                loadStatus = SOUND_LOAD_STATUS_COMPLETE;\n                break;\n        }\n    }\n\n    switch (poolIdx) {\n        case 0:\n            if (gSeqLoadStatus[idx] != SOUND_LOAD_STATUS_5) {\n                gSeqLoadStatus[idx] = loadStatus;\n            }\n            break;\n\n        case 1:\n            if (gBankLoadStatus[idx] != SOUND_LOAD_STATUS_5) {\n                gBankLoadStatus[idx] = loadStatus;\n            }\n            break;\n\n        case 2:\n            if (gUnkLoadStatus[idx] != SOUND_LOAD_STATUS_5) {\n                gUnkLoadStatus[idx] = loadStatus;\n            }\n            break;\n    }\n\n    return vAddr;\n}\n\ns32 canonicalize_index(s32 poolIdx, s32 idx) {\n    ALSeqFile *f;\n\n    f = get_audio_file_header(poolIdx);\n    if (f->seqArray[idx].len == 0) {\n        idx = (s32) (uintptr_t) f->seqArray[idx].offset;\n    }\n    return idx;\n}\n\nvoid *get_bank_or_seq_wrapper(s32 poolIdx, s32 id) {\n    void *ret;\n\n    ret = unk_pool1_lookup(poolIdx, id);\n    if (ret != NULL) {\n        return ret;\n    }\n    ret = get_bank_or_seq(poolIdx, 2, id);\n    if (ret != 0) {\n        return ret;\n    }\n    return NULL;\n}\n\nALSeqFile *get_audio_file_header(s32 poolIdx) {\n    ALSeqFile *ret;\n    switch (poolIdx) {\n        default:\n            ret = NULL;\n            break;\n        case 0:\n            ret = gSeqFileHeader;\n            break;\n        case 1:\n            ret = gAlCtlHeader;\n            break;\n        case 2:\n            ret = gAlTbl;\n            break;\n    }\n    return ret;\n}\n\nvoid patch_audio_bank(s32 bankId, struct AudioBank *mem, struct PatchStruct *patchInfo) {\n    struct Instrument *instrument;\n    void **itInstrs;\n    struct Instrument **end;\n    s32 i;\n    void *patched;\n    struct Drum *drum;\n    s32 numDrums;\n    s32 numInstruments;\n\n#define BASE_OFFSET(x, base) (void *)((uintptr_t) (x) + (uintptr_t) base)\n#define PATCH(x, base) (patched = BASE_OFFSET(x, base))\n#define PATCH_MEM(x) x = PATCH(x, mem)\n\n    numDrums = gCtlEntries[bankId].numDrums;\n    numInstruments = gCtlEntries[bankId].numInstruments;\n    itInstrs = (void **) mem->drums;\n    if (mem->drums) {\n    }\n    if (itInstrs != NULL && numDrums != 0) {\n        if (1) {\n            mem->drums = PATCH(itInstrs, mem);\n        }\n        for (i = 0; i < numDrums; i++) {\n            patched = mem->drums[i];\n            if (patched != NULL) {\n                drum = PATCH(patched, mem);\n                mem->drums[i] = drum;\n                if (drum->loaded == 0) {\n                    patch_sound(&drum->sound, mem, patchInfo);\n                    patched = drum->envelope;\n                    drum->envelope = BASE_OFFSET(patched, mem);\n                    drum->loaded = 1;\n                }\n\n            }\n        }\n    }\n\n    if (numInstruments > 0) {\n        itInstrs = (void **) mem->instruments;\n        end = numInstruments + (struct Instrument **) itInstrs;\n\n        do {\n            if (*itInstrs != NULL) {\n                *itInstrs = BASE_OFFSET(*itInstrs, mem);\n                instrument = *itInstrs;\n\n                if (instrument->loaded == 0) {\n                    if (instrument->normalRangeLo != 0) {\n                        patch_sound(&instrument->lowNotesSound, mem, patchInfo);\n                    }\n                    patch_sound(&instrument->normalNotesSound, mem, patchInfo);\n                    if (instrument->normalRangeHi != 0x7F) {\n                        patch_sound(&instrument->highNotesSound, mem, patchInfo);\n                    }\n                    patched = instrument->envelope;\n\n                    instrument->envelope = BASE_OFFSET(patched, mem);\n                    instrument->loaded = 1;\n                }\n            }\n            itInstrs = (void **) ((struct Instrument **) itInstrs) + 1;\n        } while ((struct Instrument **) itInstrs != ((void) 0, end)); //! This is definitely fake\n    }\n    gCtlEntries[bankId].drums = mem->drums;\n    gCtlEntries[bankId].instruments = mem->instruments;\n#undef PATCH_MEM\n#undef PATCH\n#undef BASE_OFFSET\n}\n\nextern char shindouDebugPrint81[]; // \"FastCopy\"\nextern char shindouDebugPrint82[]; // \"FastCopy\"\nvoid func_sh_802f3c38(uintptr_t devAddr, void *vAddr, size_t nbytes, s32 medium) {\n    nbytes = ALIGN16(nbytes);\n    osInvalDCache(vAddr, nbytes);\n\nagain:\n    if (gAudioLoadLockSH != 0) {\n        goto again;\n    }\n\n    if (nbytes >= 0x400U) {\n        func_sh_802f3dd0(&gAudioDmaIoMesg, 1, 0, devAddr, vAddr, 0x400, &gAudioDmaMesgQueue, medium, shindouDebugPrint81);\n        osRecvMesg(&gAudioDmaMesgQueue, NULL, 1);\n        nbytes = nbytes - 0x400;\n        devAddr = devAddr + 0x400;\n        vAddr = (u8*)vAddr + 0x400;\n        goto again;\n    }\n\n    if (nbytes != 0) {\n        func_sh_802f3dd0(&gAudioDmaIoMesg, 1, 0, devAddr, vAddr, nbytes, &gAudioDmaMesgQueue, medium, shindouDebugPrint82);\n        osRecvMesg(&gAudioDmaMesgQueue, NULL, 1);\n    }\n}\n\nvoid func_sh_802f3d78(uintptr_t devAddr, void *vAddr, size_t nbytes, s32 arg3) {\n    uintptr_t sp1C;\n\n    sp1C = devAddr;\n    osInvalDCache(vAddr, nbytes);\n    func_sh_802f3ed4(func_sh_802f3ec4(arg3, &sp1C), sp1C, vAddr, nbytes);\n}\n\ns32 func_sh_802f3dd0(OSIoMesg *m, s32 pri, s32 direction, uintptr_t devAddr, void *dramAddr, s32 size, OSMesgQueue *retQueue, s32 medium, UNUSED const char *reason) {\n    OSPiHandle *handle;\n    if (gAudioLoadLockSH >= 0x11U) {\n        return -1;\n    }\n    switch (medium) {\n        case 2:\n            handle = osCartRomInit();\n            break;\n        case 3:\n            handle = osDriveRomInit();\n            break;\n        default:\n            return 0;\n    }\n    if ((size & 0xf) != 0) {\n        size = ALIGN16(size);\n    }\n    m->hdr.pri = pri;\n    m->hdr.retQueue = retQueue;\n    m->dramAddr = dramAddr;\n    m->devAddr = devAddr;\n    m->size = size;\n    handle->transferInfo.cmdType = 2;\n    osEPiStartDma(handle, m, direction);\n    return 0;\n}\n\ns32 func_sh_802f3ec4(UNUSED s32 arg0, UNUSED uintptr_t *arg1) {\n    return 0;\n}\n\nvoid func_sh_802f3ed4(UNUSED s32 arg0, UNUSED s32 arg1, UNUSED void *vAddr, UNUSED size_t nbytes) {\n}\n\nvoid *func_sh_802f3ee8(s32 poolIdx, s32 idx) {\n    s32 temp;\n    return func_sh_802f3764(poolIdx, idx, &temp);\n}\n\nvoid *func_802f3f08(s32 poolIdx, s32 idx, s32 numChunks, s32 arg3, OSMesgQueue *retQueue) {\n    s32 size;\n    ALSeqFile *f;\n    void *vAddr;\n    s32 medium;\n    s32 sp18;\n    uintptr_t devAddr;\n    s32 loadStatus;\n\n    switch (poolIdx) {\n        case 0:\n            if (gSeqLoadStatus[idx] == SOUND_LOAD_STATUS_IN_PROGRESS) {\n                return 0;\n            }\n            break;\n        case 1:\n            if (gBankLoadStatus[idx] == SOUND_LOAD_STATUS_IN_PROGRESS) {\n                return 0;\n            }\n            break;\n        case 2:\n            if (gUnkLoadStatus[idx] == SOUND_LOAD_STATUS_IN_PROGRESS) {\n                return 0;\n            }\n            break;\n\n    }\n    vAddr = get_bank_or_seq_wrapper(poolIdx, idx);\n    if (vAddr != NULL) {\n        loadStatus = 2;\n        osSendMesg(retQueue, (OSMesg) (arg3 << 0x18), 0);\n    } else {\n        f = get_audio_file_header(poolIdx);\n        size = f->seqArray[idx].len;\n        size = ALIGN16(size);\n        medium = f->seqArray[idx].medium;\n        sp18 = f->seqArray[idx].magic;\n        devAddr = (uintptr_t) f->seqArray[idx].offset;\n        loadStatus = 2;\n\n        switch (sp18) {\n            case 0:\n                vAddr = unk_pool1_alloc(poolIdx, idx, size);\n                if (vAddr == NULL) {\n                    return vAddr;\n                }\n                loadStatus = SOUND_LOAD_STATUS_5;\n                break;\n            case 1:\n                vAddr = alloc_bank_or_seq(poolIdx, size, 1, idx);\n                if (vAddr == NULL) {\n                    return vAddr;\n                }\n                break;\n            case 2:\n                vAddr = alloc_bank_or_seq(poolIdx, size, 0, idx);\n                if (vAddr == NULL) {\n                    return vAddr;\n                }\n                break;\n\n            case 4:\n            case 3:\n                vAddr = alloc_bank_or_seq(poolIdx, size, 2, idx);\n                if (vAddr == NULL) {\n                    return vAddr;\n                }\n                break;\n        }\n\n        func_sh_802f4cb4(devAddr, vAddr, size, medium, numChunks, retQueue, (arg3 << 0x18) | (poolIdx << 0x10) | (idx << 8) | loadStatus);\n        loadStatus = SOUND_LOAD_STATUS_IN_PROGRESS;\n    }\n\n    switch (poolIdx) {\n        case 0:\n            if (gSeqLoadStatus[idx] != SOUND_LOAD_STATUS_5) {\n                gSeqLoadStatus[idx] = loadStatus;\n            }\n            break;\n\n        case 1:\n            if (gBankLoadStatus[idx] != SOUND_LOAD_STATUS_5) {\n                gBankLoadStatus[idx] = loadStatus;\n            }\n            break;\n\n        case 2:\n            if (gUnkLoadStatus[idx] != SOUND_LOAD_STATUS_5) {\n                gUnkLoadStatus[idx] = loadStatus;\n            }\n            break;\n    }\n\n    return vAddr;\n}\n\nvoid func_sh_802f41e4(s32 audioResetStatus) {\n    func_sh_802f4a4c(audioResetStatus);\n    func_sh_802f573c(audioResetStatus);\n    func_sh_802f4dcc(audioResetStatus);\n}\n\nu8 gShindouSoundBanksHeader[] = {\n#include \"sound/ctl_header.inc.c\"\n};\n\nu8 gBankSetsData[] = {\n#include \"sound/bank_sets.inc.c\"\n};\n\nu8 gShindouSampleBanksHeader[] = {\n#include \"sound/tbl_header.inc.c\"\n};\n\nu8 gShindouSequencesHeader[] = {\n#include \"sound/sequences_header.inc.c\"\n};\n\n// (void) must be omitted from parameters\nvoid audio_init() {\n    UNUSED s8 pad[0x34];\n    s32 i, j, k;\n    s32 lim;\n    u64 *ptr64;\n    void *data;\n    UNUSED u8 pad2[4];\n    s32 seqCount;\n\n    gAudioLoadLockSH = 0;\n\n    for (i = 0; i < gAudioHeapSize / 8; i++) {\n        ((u64 *) gAudioHeap)[i] = 0;\n    }\n\n#ifdef TARGET_N64\n    // It seems boot.s doesn't clear the .bss area for audio, so do it here.\n    lim = ((uintptr_t) &gAudioGlobalsEndMarker - (uintptr_t) &gAudioGlobalsStartMarker) / 8;\n    ptr64 = &gAudioGlobalsStartMarker;\n    for (k = lim; k >= 0; k--) {\n        *ptr64++ = 0;\n    }\n#endif\n\n    D_EU_802298D0 = 16.713f;\n    gRefreshRate = 60;\n    port_eu_init();\n\n#ifdef TARGET_N64\n    eu_stubbed_printf_3(\n        \"Clear Workarea %x -%x size %x \\n\",\n        (uintptr_t) &gAudioGlobalsStartMarker,\n        (uintptr_t) &gAudioGlobalsEndMarker,\n        (uintptr_t) &gAudioGlobalsEndMarker - (uintptr_t) &gAudioGlobalsStartMarker\n    );\n#endif\n\n    eu_stubbed_printf_1(\"AudioHeap is %x\\n\", gAudioHeapSize);\n\n    for (i = 0; i < NUMAIBUFFERS; i++) {\n        gAiBufferLengths[i] = 0xa0;\n    }\n\n    gAudioFrameCount = 0;\n    gAudioTaskIndex = 0;\n    gCurrAiBufferIndex = 0;\n    gSoundMode = 0;\n    gAudioTask = NULL;\n    gAudioTasks[0].task.t.data_size = 0;\n    gAudioTasks[1].task.t.data_size = 0;\n    osCreateMesgQueue(&gAudioDmaMesgQueue, &gAudioDmaMesg, 1);\n    osCreateMesgQueue(&gCurrAudioFrameDmaQueue, gCurrAudioFrameDmaMesgBufs,\n                      ARRAY_COUNT(gCurrAudioFrameDmaMesgBufs));\n    osCreateMesgQueue(&gUnkQueue1, gUnkMesgBufs1, 0x10);\n    osCreateMesgQueue(&gUnkQueue2, gUnkMesgBufs2, 0x10);\n    gCurrAudioFrameDmaCount = 0;\n    gSampleDmaNumListItems = 0;\n\n    sound_init_main_pools(gAudioInitPoolSize);\n\n    for (i = 0; i < NUMAIBUFFERS; i++) {\n        gAiBuffers[i] = sound_alloc_uninitialized(&gAudioInitPool, AIBUFFER_LEN);\n\n        for (j = 0; j < (s32) (AIBUFFER_LEN / sizeof(s16)); j++) {\n            gAiBuffers[i][j] = 0;\n        }\n    }\n\n    gAudioResetPresetIdToLoad = 0;\n    gAudioResetStatus = 1;\n    audio_shut_down_and_reset_step();\n\n    // Not sure about these prints\n    eu_stubbed_printf_1(\"Heap reset.Synth Change %x \\n\", 0);\n    eu_stubbed_printf_3(\"Heap %x %x %x\\n\", 0, 0, 0);\n    eu_stubbed_printf_0(\"Main Heap Initialize.\\n\");\n\n    // Load headers for sounds and sequences\n    gSeqFileHeader = (ALSeqFile *) gShindouSequencesHeader;\n    gAlCtlHeader = (ALSeqFile *) gShindouSoundBanksHeader;\n    gAlTbl = (ALSeqFile *) gShindouSampleBanksHeader;\n    gAlBankSets = gBankSetsData;\n    gSequenceCount = (s16) gSeqFileHeader->seqCount;\n    patch_seq_file(gSeqFileHeader, gMusicData, D_SH_80315EF4);\n    patch_seq_file(gAlCtlHeader, gSoundDataADSR, D_SH_80315EF8);\n    patch_seq_file(gAlTbl, gSoundDataRaw, D_SH_80315EFC);\n    seqCount = gAlCtlHeader->seqCount;\n    gCtlEntries = sound_alloc_uninitialized(&gAudioInitPool, seqCount * sizeof(struct CtlEntry));\n    for (i = 0; i < seqCount; i++) {\n        gCtlEntries[i].bankId1 = (u8) ((gAlCtlHeader->seqArray[i].ctl.as_s16.bankAndFf >> 8) & 0xff);\n        gCtlEntries[i].bankId2 = (u8) (gAlCtlHeader->seqArray[i].ctl.as_s16.bankAndFf & 0xff);\n        gCtlEntries[i].numInstruments = (u8) ((gAlCtlHeader->seqArray[i].ctl.as_s16.numInstrumentsAndDrums >> 8) & 0xff);\n        gCtlEntries[i].numDrums = (u8) (gAlCtlHeader->seqArray[i].ctl.as_s16.numInstrumentsAndDrums & 0xff);\n    }\n    data = sound_alloc_uninitialized(&gAudioInitPool, D_SH_80315EF0);\n    if (data == NULL) {\n        D_SH_80315EF0 = 0;\n    }\n    sound_alloc_pool_init(&gUnkPool1.pool, data, D_SH_80315EF0);\n    init_sequence_players();\n}\n\ns32 func_sh_802f47c8(s32 bankId, u8 idx, s8 *io) {\n    struct AudioBankSample *sample = func_sh_802f4978(bankId, idx);\n    struct PendingDmaSample *temp;\n    if (sample == NULL) {\n        *io = 0;\n        return -1;\n    }\n    if (sample->medium == 0) {\n        *io = 2;\n        return 0;\n    }\n    temp = &D_SH_80343D00.arr[D_SH_80343D00.someIndex];\n    if (temp->state == 3) {\n        temp->state = 0;\n    }\n    temp->sample = *sample;\n    temp->io = io;\n    temp->vAddr = func_sh_802f1d40(sample->size, bankId, sample->sampleAddr, sample->medium);\n    if (temp->vAddr == NULL) {\n        if (sample->medium == 1 || sample->codec == CODEC_SKIP) {\n            *io = 0;\n            return -1;\n        } else {\n            *io = 3;\n            return -1;\n        }\n    }\n    temp->state = 1;\n    temp->remaining = ALIGN16(sample->size);\n    temp->resultSampleAddr = (u8 *) temp->vAddr;\n    temp->devAddr = (uintptr_t) sample->sampleAddr;\n    temp->medium = sample->medium;\n    temp->bankId = bankId;\n    temp->idx = idx;\n    D_SH_80343D00.someIndex ^= 1;\n    return 0;\n}\n\nstruct AudioBankSample *func_sh_802f4978(s32 bankId, s32 idx) {\n    struct Drum *drum;\n    struct Instrument *inst;\n    struct AudioBankSample *ret;\n\n    if (idx < 128) {\n        inst = get_instrument_inner(bankId, idx);\n        if (inst == 0) {\n            return NULL;\n        }\n        ret = inst->normalNotesSound.sample;\n    } else {\n        drum = get_drum(bankId, idx - 128);\n        if (drum == 0) {\n            return NULL;\n        }\n        ret = drum->sound.sample;\n    }\n    return ret;\n}\n\nvoid stub_sh_802f49dc(void) {\n}\n\nvoid func_sh_802f49e4(struct PendingDmaSample *arg0) {\n    struct AudioBankSample *sample = func_sh_802f4978(arg0->bankId, arg0->idx);\n    if (sample != NULL) {\n        arg0->sample = *sample;\n        sample->sampleAddr = arg0->resultSampleAddr;\n        sample->medium = 0;\n    }\n}\n\nvoid func_sh_802f4a4c(s32 audioResetStatus) {\n    ALSeqFile *alTbl;\n    struct PendingDmaSample *entry;\n\n    s32 i;\n\n    alTbl = gAlTbl;\n\n    for (i = 0; i < 2; i++) {\n        entry = &D_SH_80343D00.arr[i];\n        switch (entry->state) {\n            case 2:\n                osRecvMesg(&entry->queue, NULL, 1);\n                if (audioResetStatus != 0) {\n                    entry->state = 3;\n                    break;\n                }\n                // fallthrough\n            case 1:\n                entry->state = 2;\n                if (entry->remaining == 0) {\n                    func_sh_802f49e4(entry);\n                    entry->state = 3;\n                    *entry->io = 1;\n                } else if (entry->remaining < 0x1000) {\n                    if (entry->medium == 1) {\n                        func_sh_802f4c5c(entry->devAddr, entry->vAddr, entry->remaining, alTbl->unk2);\n                    } else {\n                        func_sh_802f4bd8(entry, entry->remaining);\n                    }\n                    entry->remaining = 0;\n                } else {\n                    if (entry->medium == 1) {\n                        func_sh_802f4c5c(entry->devAddr, entry->vAddr, 0x1000, alTbl->unk2);\n                    } else {\n                        func_sh_802f4bd8(entry, 0x1000);\n                    }\n                    entry->remaining = (s32) (entry->remaining - 0x1000);\n                    entry->vAddr = (u8 *) entry->vAddr + 0x1000;\n                    entry->devAddr = entry->devAddr + 0x1000;\n                }\n                break;\n        }\n    }\n}\n\nextern char shindouDebugPrint102[]; // \"SLOWCOPY\"\nvoid func_sh_802f4bd8(struct PendingDmaSample *arg0, s32 len) { // len must be signed\n    osInvalDCache(arg0->vAddr, len);\n    osCreateMesgQueue(&arg0->queue, arg0->mesgs, 1);\n    func_sh_802f3dd0(&arg0->ioMesg, 0, 0, arg0->devAddr, arg0->vAddr, len, &arg0->queue, arg0->medium, shindouDebugPrint102);\n}\n\nvoid func_sh_802f4c5c(uintptr_t devAddr, void *vAddr, size_t nbytes, s32 arg3) {\n    uintptr_t sp1C;\n\n    sp1C = devAddr;\n    osInvalDCache(vAddr, nbytes);\n    func_sh_802f3ed4(func_sh_802f3ec4(arg3, &sp1C), sp1C, vAddr, nbytes);\n}\n\nstruct PendingDmaAudioBank *func_sh_802f4cb4(uintptr_t devAddr, void *vAddr, s32 size, s32 medium, s32 numChunks, OSMesgQueue *retQueue, s32 encodedInfo) {\n    struct PendingDmaAudioBank *item;\n    s32 i;\n\n    for (i = 0; i < ARRAY_COUNT(sPendingDmaAudioBanks); i++) {\n        if (sPendingDmaAudioBanks[i].inProgress == 0) {\n            item = &sPendingDmaAudioBanks[i];\n            break;\n        }\n    }\n    if (i == ARRAY_COUNT(sPendingDmaAudioBanks)) {\n        return NULL;\n    }\n\n    item->inProgress = 1;\n    item->devAddr = devAddr;\n    item->audioBank = vAddr;\n    item->vAddr = vAddr;\n    item->remaining = size;\n    if (numChunks == 0) {\n        item->transferSize = 0x1000;\n    } else {\n        item->transferSize = ((size / numChunks) + 0xFF) & ~0xFF;\n        if (item->transferSize < 0x100) {\n            item->transferSize = 0x100;\n        }\n    }\n    item->retQueue = retQueue;\n    item->timer = 3;\n    item->medium = medium;\n    item->encodedInfo = encodedInfo;\n    osCreateMesgQueue(&item->dmaRetQueue, item->mesgs, 1);\n    return item;\n}\n\nvoid func_sh_802f4dcc(s32 audioResetStatus) {\n    s32 i;\n\n    if (gAudioLoadLockSH != 1) {\n        for (i = 0; i < ARRAY_COUNT(sPendingDmaAudioBanks); i++) {\n            if (sPendingDmaAudioBanks[i].inProgress == 1) {\n                func_sh_802f4e50(&sPendingDmaAudioBanks[i], audioResetStatus);\n            }\n        }\n    }\n}\n\nvoid func_sh_802f4e50(struct PendingDmaAudioBank *audioBank, s32 audioResetStatus) {\n    ALSeqFile *alSeqFile;\n    u32 *encodedInfo;\n    OSMesg mesg;\n    u32 temp;\n    u32 bankId;\n    s32 bankId1;\n    s32 bankId2;\n    struct PatchStruct patchStruct;\n    alSeqFile = gAlTbl;\n    if (audioBank->timer >= 2) {\n        audioBank->timer--;\n        return;\n    }\n    if (audioBank->timer == 1) {\n        audioBank->timer = 0;\n    } else {\n        if (audioResetStatus != 0) {\n            osRecvMesg(&audioBank->dmaRetQueue, NULL, OS_MESG_BLOCK);\n            audioBank->inProgress = 0;\n            return;\n        }\n        if (osRecvMesg(&audioBank->dmaRetQueue, NULL, OS_MESG_NOBLOCK) == -1) {\n            return;\n        }\n    }\n\n    encodedInfo = &audioBank->encodedInfo;\n    if (audioBank->remaining == 0) {\n        mesg = (OSMesg) audioBank->encodedInfo;\n#pragma GCC diagnostic push\n#if defined(__clang__)\n#pragma GCC diagnostic ignored \"-Wself-assign\"\n#endif\n        mesg = mesg;    //! needs an extra read from mesg here to match...\n#pragma GCC diagnostic pop\n        temp = *encodedInfo;\n        bankId = (temp >> 8) & 0xFF;\n        switch ((u8) (temp >> 0x10)) {\n            case 0:\n                if (gSeqLoadStatus[bankId] != SOUND_LOAD_STATUS_5) {\n                    gSeqLoadStatus[bankId] = (u8) (temp & 0xFF);\n                }\n                break;\n            case 2:\n                if (gUnkLoadStatus[bankId] != SOUND_LOAD_STATUS_5) {\n                    gUnkLoadStatus[bankId] = (u8) (temp & 0xFF);\n                }\n                break;\n            case 1:\n                if (gBankLoadStatus[bankId] != SOUND_LOAD_STATUS_5) {\n                    gBankLoadStatus[bankId] = (u8) (temp & 0xFF);\n                }\n                bankId1 = gCtlEntries[bankId].bankId1;\n                bankId2 = gCtlEntries[bankId].bankId2;\n                patchStruct.bankId1 = bankId1;\n                patchStruct.bankId2 = bankId2;\n                if (bankId1 != 0xFF) {\n                    patchStruct.baseAddr1 = func_sh_802f3598(bankId1, &patchStruct.medium1);\n                } else {\n                    patchStruct.baseAddr1 = NULL;\n                }\n                if (bankId2 != 0xFF) {\n                    patchStruct.baseAddr2 = func_sh_802f3598(bankId2, &patchStruct.medium2);\n                } else {\n                    patchStruct.baseAddr2 = NULL;\n                }\n\n                func_sh_802f5310(bankId, audioBank->audioBank, &patchStruct, 1);\n                break;\n        }\n        mesg = (OSMesg) audioBank->encodedInfo;\n        audioBank->inProgress = 0;\n        osSendMesg(audioBank->retQueue, mesg, OS_MESG_NOBLOCK);\n    } else if (audioBank->remaining < audioBank->transferSize) {\n        if (audioBank->medium == 1) {\n            func_sh_802f517c(audioBank->devAddr, audioBank->vAddr, audioBank->remaining, alSeqFile->unk2);\n        } else {\n            func_sh_802f50ec(audioBank, audioBank->remaining);\n        }\n\n        audioBank->remaining = 0;\n    } else {\n        if (audioBank->medium == 1) {\n            func_sh_802f517c(audioBank->devAddr, audioBank->vAddr, audioBank->transferSize, alSeqFile->unk2);\n        } else {\n            func_sh_802f50ec(audioBank, audioBank->transferSize);\n        }\n\n        audioBank->remaining -= audioBank->transferSize;\n        audioBank->devAddr   += audioBank->transferSize;\n        audioBank->vAddr = ((u8 *) audioBank->vAddr) + audioBank->transferSize;\n    }\n}\n\nextern char shindouDebugPrint110[]; // \"BGCOPY\"\nvoid func_sh_802f50ec(struct PendingDmaAudioBank *arg0, size_t len) {\n    len += 0xf;\n    len &= ~0xf;\n    osInvalDCache(arg0->vAddr, len);\n    osCreateMesgQueue(&arg0->dmaRetQueue, arg0->mesgs, 1);\n    func_sh_802f3dd0(&arg0->ioMesg, 0, 0, arg0->devAddr, arg0->vAddr, len, &arg0->dmaRetQueue, arg0->medium, shindouDebugPrint110);\n}\n\n\nvoid func_sh_802f517c(uintptr_t devAddr, void *vAddr, size_t nbytes, s32 arg3) {\n    uintptr_t sp1C;\n\n    sp1C = devAddr;\n    osInvalDCache(vAddr, nbytes);\n    func_sh_802f3ed4(func_sh_802f3ec4(arg3, &sp1C), sp1C, vAddr, nbytes);\n}\n\nvoid patch_sound(struct AudioBankSound *sound, struct AudioBank *memBase, struct PatchStruct *patchInfo) {\n    struct AudioBankSample *sample;\n    void *patched;\n\n#define PATCH(x, base) (patched = (void *)((uintptr_t) (x) + (uintptr_t) base))\n\n    if ((uintptr_t) sound->sample <= 0x80000000) {\n        sample = sound->sample = PATCH(sound->sample, memBase);\n        if (sample->size != 0 && sample->isPatched != TRUE) {\n            sample->loop = PATCH(sample->loop, memBase);\n            sample->book = PATCH(sample->book, memBase);\n            switch (sample->medium) {\n                case 0:\n                    sample->sampleAddr = PATCH(sample->sampleAddr, patchInfo->baseAddr1);\n                    sample->medium = patchInfo->medium1;\n                    break;\n                case 1:\n                    sample->sampleAddr = PATCH(sample->sampleAddr, patchInfo->baseAddr2);\n                    sample->medium = patchInfo->medium2;\n                    break;\n\n                case 2:\n                case 3:\n                    break;\n            }\n            sample->isPatched = TRUE;\n            if (sample->bit1 && sample->medium != 0) {\n                D_SH_8034EA88[D_SH_8034F688++] = sample;\n            }\n        }\n    }\n#undef PATCH\n}\n\nBAD_RETURN(s32) func_sh_802f5310(s32 bankId, struct AudioBank *mem, struct PatchStruct *patchInfo, s32 arg3) {\n    UNUSED u32 pad[2];\n    u8 *addr;\n    UNUSED u32 pad1[3];\n    s32 sp4C;\n    struct AudioBankSample *temp_s0;\n    s32 i;\n    uintptr_t count;\n    s32 temp;\n\n    sp4C = 0;\n    if (D_SH_8034F68C != 0) {\n        sp4C = 1;\n    } else {\n        D_SH_80343CF0 = 0;\n    }\n    D_SH_8034F688 = 0;\n    patch_audio_bank(bankId, mem, patchInfo);\n\n    count = 0;\n    for (i = 0; i < D_SH_8034F688; i++) {\n        count += ALIGN16(D_SH_8034EA88[i]->size);\n    }\n\n    for (i = 0; i < D_SH_8034F688; i++) {\n        if (D_SH_8034F68C != 0x78) {\n            temp_s0 = D_SH_8034EA88[i];\n            switch (arg3) {\n                case 0:\n                    temp = temp_s0->medium = patchInfo->medium1;\n                    if (temp != 0) {\n                        if (temp_s0->size) {\n                        }\n                        addr = func_sh_802f1d90(temp_s0->size, patchInfo->bankId1, temp_s0->sampleAddr, temp_s0->medium);\n                    } else {\n                        temp = temp_s0->medium = patchInfo->medium2;\n                        if (temp != 0) {\n                            addr = func_sh_802f1d90(temp_s0->size, patchInfo->bankId2, temp_s0->sampleAddr, temp_s0->medium);\n                        }\n                    }\n                    break;\n\n                case 1:\n                    temp = temp_s0->medium = patchInfo->medium1;\n                    if (temp != 0) {\n                        addr = func_sh_802f1d40(temp_s0->size, patchInfo->bankId1, temp_s0->sampleAddr, temp_s0->medium);\n                    } else {\n                        temp = temp_s0->medium = patchInfo->medium2;\n                        if (temp != 0) {\n                            addr = func_sh_802f1d40(temp_s0->size, patchInfo->bankId2, temp_s0->sampleAddr, temp_s0->medium);\n                        }\n                    }\n                    break;\n            }\n            switch ((uintptr_t) addr) {\n                case 0:\n                    break;\n                default:\n                switch (arg3) {\n                    case 0:\n                        if (temp_s0->medium == 1) {\n                            func_sh_802f3d78((uintptr_t) temp_s0->sampleAddr, addr, temp_s0->size, gAlTbl->unk2);\n                            temp_s0->sampleAddr = addr;\n                            temp_s0->medium = 0;\n                        } else {\n                            func_sh_802f3c38((uintptr_t) temp_s0->sampleAddr, addr, temp_s0->size, temp_s0->medium);\n                            temp_s0->sampleAddr = addr;\n                            temp_s0->medium = 0;\n                        }\n                        break;\n\n                    case 1:\n                        D_SH_8034EC88[D_SH_8034F68C].sample = temp_s0;\n                        D_SH_8034EC88[D_SH_8034F68C].ramAddr = addr;\n                        D_SH_8034EC88[D_SH_8034F68C].encodedInfo = (D_SH_8034F68C << 24) | 0xffffff;\n                        D_SH_8034EC88[D_SH_8034F68C].isFree = FALSE;\n                        D_SH_8034EC88[D_SH_8034F68C].endAndMediumIdentification = temp_s0->sampleAddr + temp_s0->size + temp_s0->medium;\n                        D_SH_8034F68C++;\n                        break;\n                }\n            }\n            continue;\n        }\n        break;\n    }\n\n    D_SH_8034F688 = 0;\n    if (D_SH_8034F68C != 0 && sp4C == 0) {\n        temp_s0 = D_SH_8034EC88[D_SH_8034F68C - 1].sample;\n        temp = (temp_s0->size >> 12);\n        temp += 1;\n        count = (uintptr_t) temp_s0->sampleAddr;\n        func_sh_802f4cb4(\n            count,\n            D_SH_8034EC88[D_SH_8034F68C - 1].ramAddr,\n            temp_s0->size,\n            temp_s0->medium,\n            temp,\n            &gUnkQueue2,\n            D_SH_8034EC88[D_SH_8034F68C - 1].encodedInfo);\n    }\n}\n\ns32 func_sh_802f573c(s32 audioResetStatus) {\n    struct AudioBankSample *sample;\n    u32 idx;\n    u8 *sampleAddr;\n    u32 size;\n    s32 unk;\n    u8 *added;\n\n    if (D_SH_8034F68C > 0) {\n        if (audioResetStatus != 0) {\n            if (osRecvMesg(&gUnkQueue2, (OSMesg *) &idx, OS_MESG_NOBLOCK)) {\n            }\n            D_SH_8034F68C = 0;\n            return 0;\n        }\n        if (osRecvMesg(&gUnkQueue2, (OSMesg *) &idx, OS_MESG_NOBLOCK) == -1) {\n            return 0;\n        }\n        idx >>= 0x18;\n        if (D_SH_8034EC88[idx].isFree == FALSE) {\n            sample = D_SH_8034EC88[idx].sample;\n            added = (sample->sampleAddr + sample->size + sample->medium);\n            if (added == D_SH_8034EC88[idx].endAndMediumIdentification) {\n                sample->sampleAddr = D_SH_8034EC88[idx].ramAddr;\n                sample->medium = 0;\n            }\n            D_SH_8034EC88[idx].isFree = TRUE;\n        }\n\nnext:\n        if (D_SH_8034F68C > 0) {\n            if (D_SH_8034EC88[D_SH_8034F68C - 1].isFree == TRUE) {\n                D_SH_8034F68C--;\n                goto next;\n            }\n            sample = D_SH_8034EC88[D_SH_8034F68C - 1].sample;\n            sampleAddr = sample->sampleAddr;\n            size = sample->size;\n            unk = size >> 0xC;\n            unk += 1;\n            added = ((sampleAddr + size) + sample->medium);\n            if (added != D_SH_8034EC88[D_SH_8034F68C - 1].endAndMediumIdentification) {\n                D_SH_8034EC88[D_SH_8034F68C - 1].isFree = TRUE;\n                D_SH_8034F68C--;\n                goto next;\n            }\n            size = sample->size;\n            func_sh_802f4cb4((uintptr_t) sampleAddr, D_SH_8034EC88[D_SH_8034F68C - 1].ramAddr, size, sample->medium,\n                             unk, &gUnkQueue2, D_SH_8034EC88[D_SH_8034F68C - 1].encodedInfo);\n        }\n    }\n    return 1;\n}\n\ns32 func_sh_802f5900(struct AudioBankSample *sample, s32 numLoaded, struct AudioBankSample *arg2[]) {\n    s32 i;\n\n    for (i = 0; i < numLoaded; i++) {\n        if (sample->sampleAddr == arg2[i]->sampleAddr) {\n            break;\n        }\n    }\n    if (i == numLoaded) {\n        arg2[numLoaded++] = sample;\n    }\n    return numLoaded;\n}\n\ns32 func_sh_802f5948(s32 bankId, struct AudioBankSample *list[]) {\n    s32 i;\n    struct Drum *drum;\n    struct Instrument *inst;\n    s32 numLoaded;\n    s32 numDrums;\n    s32 numInstruments;\n\n    numLoaded = 0;\n    numDrums = gCtlEntries[bankId].numDrums;\n    numInstruments = gCtlEntries[bankId].numInstruments;\n\n    for (i = 0; i < numDrums; i++) {\n        drum = get_drum(bankId, i);\n        if (drum == NULL) {\n            continue;\n        }\n        numLoaded = func_sh_802f5900(drum->sound.sample, numLoaded, list);\n    }\n    for (i = 0; i < numInstruments; i++) {\n        inst = get_instrument_inner(bankId, i);\n        if (inst == NULL) {\n            continue;\n\n        }\n        if (inst->normalRangeLo != 0) {\n            numLoaded = func_sh_802f5900(inst->lowNotesSound.sample, numLoaded, list);\n        }\n        if (inst->normalRangeHi != 127) {\n            numLoaded = func_sh_802f5900(inst->highNotesSound.sample, numLoaded, list);\n        }\n        numLoaded = func_sh_802f5900(inst->normalNotesSound.sample, numLoaded, list);\n    }\n    return numLoaded;\n}\n#endif\n"
  },
  {
    "path": "src/audio/playback.c",
    "content": "#include <ultra64.h>\n\n#include \"heap.h\"\n#include \"data.h\"\n#include \"load.h\"\n#include \"seqplayer.h\"\n#include \"playback.h\"\n#include \"synthesis.h\"\n#include \"effects.h\"\n#include \"external.h\"\n\nvoid note_set_resampling_rate(struct Note *note, f32 resamplingRateInput);\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n#if defined(VERSION_SH) || defined(VERSION_CN)\nvoid note_set_vel_pan_reverb(struct Note *note, struct ReverbInfo *reverbInfo)\n#else\nvoid note_set_vel_pan_reverb(struct Note *note, f32 velocity, u8 pan, u8 reverbVol)\n#endif\n{\n    struct NoteSubEu *sub = &note->noteSubEu;\n    f32 volRight, volLeft;\n    u8 strongRight;\n    u8 strongLeft;\n    s32 smallPanIndex;\n#ifdef VERSION_EU\n    u16 unkMask = ~0x80;\n#else\n    UNUSED u32 pad;\n    UNUSED u32 pad1;\n    f32 velocity;\n    u8 pan;\n    u8 reverbVol;\n    struct ReverbBitsData reverbBits;\n#endif\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    note_set_resampling_rate(note, reverbInfo->freqScale);\n    velocity = reverbInfo->velocity;\n    pan = reverbInfo->pan;\n    reverbVol = reverbInfo->reverbVol;\n    reverbBits = reverbInfo->reverbBits.s;\n    pan &= 0x7f;\n#else\n    pan &= unkMask;\n#endif\n\n    if (note->noteSubEu.stereoHeadsetEffects && gSoundMode == SOUND_MODE_HEADSET) {\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        smallPanIndex = pan >> 1;\n#else\n        smallPanIndex = pan >> 3;\n#endif\n        if (smallPanIndex >= ARRAY_COUNT(gHeadsetPanQuantization)) {\n            smallPanIndex = ARRAY_COUNT(gHeadsetPanQuantization) - 1;\n        }\n\n        sub->headsetPanLeft = gHeadsetPanQuantization[smallPanIndex];\n        sub->headsetPanRight = gHeadsetPanQuantization[ARRAY_COUNT(gHeadsetPanQuantization) - 1 - smallPanIndex];\n        sub->stereoStrongRight = FALSE;\n        sub->stereoStrongLeft = FALSE;\n        sub->usesHeadsetPanEffects = TRUE;\n\n        volLeft = gHeadsetPanVolume[pan];\n        volRight = gHeadsetPanVolume[127 - pan];\n    } else if (sub->stereoHeadsetEffects && gSoundMode == SOUND_MODE_STEREO) {\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        strongRight = FALSE;\n        strongLeft = FALSE;\n        sub->headsetPanRight = 0;\n        sub->headsetPanLeft = 0;\n#else\n        strongLeft = FALSE;\n        strongRight = FALSE;\n        sub->headsetPanLeft = 0;\n        sub->headsetPanRight = 0;\n#endif\n\n        sub->usesHeadsetPanEffects = FALSE;\n\n        volLeft = gStereoPanVolume[pan];\n        volRight = gStereoPanVolume[127 - pan];\n        if (pan < 0x20) {\n            strongLeft = TRUE;\n        } else if (pan > 0x60) {\n            strongRight = TRUE;\n        }\n\n        sub->stereoStrongRight = strongRight;\n        sub->stereoStrongLeft = strongLeft;\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        switch (reverbBits.stereoHeadsetEffects) {\n            case 0:\n                sub->stereoStrongRight = reverbBits.strongRight;\n                sub->stereoStrongLeft = reverbBits.strongLeft;\n                break;\n\n            case 1:\n                break;\n\n            case 2:\n                sub->stereoStrongRight = reverbBits.strongRight | strongRight;\n                sub->stereoStrongLeft = reverbBits.strongLeft | strongLeft;\n                break;\n\n            case 3:\n                sub->stereoStrongRight = reverbBits.strongRight ^ strongRight;\n                sub->stereoStrongLeft = reverbBits.strongLeft ^ strongLeft;\n                break;\n        }\n#endif\n    } else if (gSoundMode == SOUND_MODE_MONO) {\n        volLeft = 0.707f;\n        volRight = 0.707f;\n    } else {\n        volLeft = gDefaultPanVolume[pan];\n        volRight = gDefaultPanVolume[127 - pan];\n    }\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    if (velocity < 0.0f) {\n        velocity = 0.0f;\n    }\n    if (velocity > 1.0f) {\n        velocity = 1.0f;\n    }\n\n    sub->targetVolLeft =  ((s32) (velocity * volLeft * 4095.999f));\n    sub->targetVolRight = ((s32) (velocity * volRight * 4095.999f));\n    sub->synthesisVolume = reverbInfo->synthesisVolume;\n    sub->filter = reverbInfo->filter;\n#else\n    if (velocity < 0.0f) {\n        stubbed_printf(\"Audio: setvol: volume minus %f\\n\", velocity);\n        velocity = 0.0f;\n    }\n    if (velocity > 32767.f) {\n        stubbed_printf(\"Audio: setvol: volume overflow %f\\n\", velocity);\n        velocity = 32767.f;\n    }\n\n    sub->targetVolLeft =  ((s32) (velocity * volLeft) & 0xffff) >> 5;\n    sub->targetVolRight = ((s32) (velocity * volRight) & 0xffff) >> 5;\n#endif\n\n    //! @bug for the change to UQ0.7, the if statement should also have been changed accordingly\n    if (sub->reverbVol != reverbVol) {\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        sub->reverbVol = reverbVol >> 1;\n#else\n        sub->reverbVol = reverbVol;\n#endif\n        sub->envMixerNeedsInit = TRUE;\n        return;\n    }\n\n    if (sub->needsInit) {\n        sub->envMixerNeedsInit = TRUE;\n    } else {\n        sub->envMixerNeedsInit = FALSE;\n    }\n}\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n#define MIN_RESAMPLING_RATE 1.99998f\n#else\n#define MIN_RESAMPLING_RATE 1.99996f\n#endif\n\nvoid note_set_resampling_rate(struct Note *note, f32 resamplingRateInput) {\n    f32 resamplingRate = 0.0f;\n    struct NoteSubEu *tempSub = &note->noteSubEu;\n\n#ifdef VERSION_EU\n    if (resamplingRateInput < 0.0f) {\n        stubbed_printf(\"Audio: setpitch: pitch minus %f\\n\", resamplingRateInput);\n        resamplingRateInput = 0.0f;\n    }\n#endif\n    if (resamplingRateInput < 2.0f) {\n        tempSub->hasTwoAdpcmParts = 0;\n\n        if (MIN_RESAMPLING_RATE < resamplingRateInput) {\n            resamplingRate = MIN_RESAMPLING_RATE;\n        } else {\n            resamplingRate = resamplingRateInput;\n        }\n\n    } else {\n        tempSub->hasTwoAdpcmParts = 1;\n        if (2 * MIN_RESAMPLING_RATE < resamplingRateInput) {\n            resamplingRate = MIN_RESAMPLING_RATE;\n        } else {\n            resamplingRate = resamplingRateInput * 0.5f;\n        }\n    }\n    note->noteSubEu.resamplingRateFixedPoint = (s32) (resamplingRate * 32768.0f);\n}\n\n#ifdef VERSION_EU\nstruct AudioBankSound *instrument_get_audio_bank_sound(struct Instrument *instrument, s32 semitone) {\n    struct AudioBankSound *sound;\n    if (semitone < instrument->normalRangeLo) {\n        sound = &instrument->lowNotesSound;\n    } else if (semitone <= instrument->normalRangeHi) {\n        sound = &instrument->normalNotesSound;\n    } else {\n        sound = &instrument->highNotesSound;\n    }\n    return sound;\n}\n\nstruct Instrument *get_instrument_inner(s32 bankId, s32 instId) {\n    struct Instrument *inst;\n\n    if (IS_BANK_LOAD_COMPLETE(bankId) == FALSE) {\n        stubbed_printf(\"Audio: voiceman: No bank error %d\\n\", bankId);\n        gAudioErrorFlags = bankId + 0x10000000;\n        return NULL;\n    }\n\n    if (instId >= gCtlEntries[bankId].numInstruments) {\n        stubbed_printf(\"Audio: voiceman: progNo. overflow %d,%d\\n\",\n                instId, gCtlEntries[bankId].numInstruments);\n        gAudioErrorFlags = ((bankId << 8) + instId) + 0x3000000;\n        return NULL;\n    }\n\n    inst = gCtlEntries[bankId].instruments[instId];\n    if (inst == NULL) {\n        stubbed_printf(\"Audio: voiceman: progNo. undefined %d,%d\\n\", bankId, instId);\n        gAudioErrorFlags = ((bankId << 8) + instId) + 0x1000000;\n        return inst;\n    }\n\n#ifdef VERSION_EU\n    if (((uintptr_t) gBankLoadedPool.persistent.pool.start <= (uintptr_t) inst\n         && (uintptr_t) inst <= (uintptr_t)(gBankLoadedPool.persistent.pool.start\n                    + gBankLoadedPool.persistent.pool.size))\n        || ((uintptr_t) gBankLoadedPool.temporary.pool.start <= (uintptr_t) inst\n            && (uintptr_t) inst <= (uintptr_t)(gBankLoadedPool.temporary.pool.start\n                                   + gBankLoadedPool.temporary.pool.size))) {\n        return inst;\n    }\n\n    stubbed_printf(\"Audio: voiceman: BAD Voicepointer %x,%d,%d\\n\", inst, bankId, instId);\n    gAudioErrorFlags = ((bankId << 8) + instId) + 0x2000000;\n    return NULL;\n#else\n    return inst;\n#endif\n}\n\nstruct Drum *get_drum(s32 bankId, s32 drumId) {\n    struct Drum *drum;\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    if (IS_BANK_LOAD_COMPLETE(bankId) == FALSE) {\n        stubbed_printf(\"Audio: voiceman: No bank error %d\\n\", bankId);\n        gAudioErrorFlags = bankId + 0x10000000;\n        return NULL;\n    }\n#endif\n\n    if (drumId >= gCtlEntries[bankId].numDrums) {\n        stubbed_printf(\"Audio: voiceman: Percussion Overflow %d,%d\\n\",\n                drumId, gCtlEntries[bankId].numDrums);\n        gAudioErrorFlags = ((bankId << 8) + drumId) + 0x4000000;\n        return NULL;\n    }\n\n#ifndef NO_SEGMENTED_MEMORY\n    if ((uintptr_t) gCtlEntries[bankId].drums < 0x80000000U) {\n        stubbed_printf(\"Percussion Pointer Error\\n\");\n        return NULL;\n    }\n#endif\n\n    drum = gCtlEntries[bankId].drums[drumId];\n    if (drum == NULL) {\n        stubbed_printf(\"Audio: voiceman: Percpointer NULL %d,%d\\n\", bankId, drumId);\n        gAudioErrorFlags = ((bankId << 8) + drumId) + 0x5000000;\n    }\n    return drum;\n}\n#endif\n#endif // VERSION_EU\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\nvoid note_init_for_layer(struct Note *note, struct SequenceChannelLayer *seqLayer);\n#else\ns32 note_init_for_layer(struct Note *note, struct SequenceChannelLayer *seqLayer);\n#endif\n\nvoid note_init(struct Note *note) {\n    if (note->parentLayer->adsr.releaseRate == 0) {\n        adsr_init(&note->adsr, note->parentLayer->seqChannel->adsr.envelope, &note->adsrVolScale);\n    } else {\n        adsr_init(&note->adsr, note->parentLayer->adsr.envelope, &note->adsrVolScale);\n    }\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    note->unkSH34 = 0;\n#endif\n    note->adsr.state = ADSR_STATE_INITIAL;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    note->noteSubEu = gDefaultNoteSub;\n#else\n    note_init_volume(note);\n    note_enable(note);\n#endif\n}\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n#define note_disable2 note_disable\nvoid note_disable(struct Note *note) {\n    if (note->noteSubEu.needsInit == TRUE) {\n        note->noteSubEu.needsInit = FALSE;\n    }\n#ifdef VERSION_EU\n    else {\n        note_set_vel_pan_reverb(note, 0, 0x40, 0);\n    }\n#endif\n    note->priority = NOTE_PRIORITY_DISABLED;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    note->unkSH34 = 0;\n#endif\n    note->parentLayer = NO_LAYER;\n    note->prevParentLayer = NO_LAYER;\n    note->noteSubEu.enabled = FALSE;\n    note->noteSubEu.finished = FALSE;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    note->adsr.state = ADSR_STATE_DISABLED;\n    note->adsr.current = 0;\n#endif\n}\n#else\nvoid note_disable2(struct Note *note) {\n    note_disable(note);\n}\n#endif // VERSION_EU || VERSION_SH\n\nvoid process_notes(void) {\n    f32 scale;\n#if !defined(VERSION_SH) && !defined(VERSION_CN)\n    f32 frequency;\n#if defined(VERSION_JP) || defined(VERSION_US)\n    u8 reverbVol;\n#endif\n    f32 velocity;\n#if defined(VERSION_JP) || defined(VERSION_US)\n    f32 pan;\n    f32 cap;\n#endif\n#endif\n    struct Note *note;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    struct NotePlaybackState *playbackState;\n    struct NoteSubEu *noteSubEu;\n#ifdef VERSION_EU\n    UNUSED u8 pad[12];\n    u8 reverbVol;\n    UNUSED u8 pad3;\n    u8 pan;\n#else\n    UNUSED u8 pad[8];\n    struct ReverbInfo reverbInfo;\n#endif\n    u8 bookOffset;\n#endif\n    struct NoteAttributes *attributes;\n#if defined(VERSION_JP) || defined(VERSION_US)\n    struct AudioListItem *it;\n#endif\n    s32 i;\n\n    // Macro versions of audio_list_push_front and audio_list_remove.\n    // Should ideally be changed to use copt.\n#define PREPEND(item, head_arg)                                                                        \\\n    ((it = (item), it->prev != NULL)                                                                   \\\n         ? it                                                                                          \\\n         : (it->prev = (head_arg), it->next = (head_arg)->next, (head_arg)->next->prev = it,           \\\n            (head_arg)->next = it, (head_arg)->u.count++, it->pool = (head_arg)->pool, it))\n#define POP(item)                                                                                      \\\n    ((it = (item), it->prev == NULL)                                                                   \\\n         ? it                                                                                          \\\n         : (it->prev->next = it->next, it->next->prev = it->prev, it->prev = NULL, it))\n\n    for (i = 0; i < gMaxSimultaneousNotes; i++) {\n        note = &gNotes[i];\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n        playbackState = (struct NotePlaybackState *) &note->priority;\n        if (note->parentLayer != NO_LAYER) {\n#ifndef NO_SEGMENTED_MEMORY\n            if ((uintptr_t) playbackState->parentLayer < 0x7fffffffU) {\n                continue;\n            }\n#endif\n#if defined(VERSION_SH) || defined(VERSION_CN)\n            if (note != playbackState->parentLayer->note && playbackState->unkSH34 == 0) {\n                playbackState->adsr.action |= ADSR_ACTION_RELEASE;\n                playbackState->adsr.fadeOutVel = gAudioBufferParameters.updatesPerFrameInv;\n                playbackState->priority = 1;\n                playbackState->unkSH34 = 2;\n                goto d;\n            } else if (!playbackState->parentLayer->enabled && playbackState->unkSH34 == 0 &&\n                       playbackState->priority >= 1) {\n                // do nothing\n            } else if (playbackState->parentLayer->seqChannel->seqPlayer == NULL) {\n                sequence_channel_disable(playbackState->parentLayer->seqChannel);\n                playbackState->priority = 1;\n                playbackState->unkSH34 = 1;\n                continue;\n            } else if (playbackState->parentLayer->seqChannel->seqPlayer->muted &&\n                       (playbackState->parentLayer->seqChannel->muteBehavior\n                       & (MUTE_BEHAVIOR_STOP_NOTES))) {\n                // do nothing\n            } else {\n                goto d;\n            }\n\n            seq_channel_layer_note_release(playbackState->parentLayer);\n            audio_list_remove(&note->listItem);\n            audio_list_push_front(&note->listItem.pool->decaying, &note->listItem);\n            playbackState->priority = 1;\n            playbackState->unkSH34 = 2;\n        } else if (playbackState->unkSH34 == 0 && playbackState->priority >= 1) {\n            continue;\n        }\n#else\n            if (!playbackState->parentLayer->enabled && playbackState->priority >= NOTE_PRIORITY_MIN) {\n                goto c;\n            } else if (playbackState->parentLayer->seqChannel->seqPlayer == NULL) {\n                eu_stubbed_printf_0(\"CAUTION:SUB IS SEPARATED FROM GROUP\");\n                sequence_channel_disable(playbackState->parentLayer->seqChannel);\n                playbackState->priority = NOTE_PRIORITY_STOPPING;\n                continue;\n            } else if (playbackState->parentLayer->seqChannel->seqPlayer->muted) {\n                if ((playbackState->parentLayer->seqChannel->muteBehavior\n                    & (MUTE_BEHAVIOR_STOP_SCRIPT | MUTE_BEHAVIOR_STOP_NOTES))) {\n                    goto c;\n                }\n            }\n            goto d;\n            if (1) {\n                c:\n                seq_channel_layer_note_release(playbackState->parentLayer);\n                audio_list_remove(&note->listItem);\n                audio_list_push_front(&note->listItem.pool->decaying, &note->listItem);\n                playbackState->priority = NOTE_PRIORITY_STOPPING;\n            }\n        } else if (playbackState->priority >= NOTE_PRIORITY_MIN) {\n            continue;\n        }\n#endif\n        d:\n        if (playbackState->priority != NOTE_PRIORITY_DISABLED) {\n#if defined(VERSION_SH) || defined(VERSION_CN)\n            if (1) {}\n#endif\n            noteSubEu = &note->noteSubEu;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n            if (playbackState->unkSH34 >= 1 || noteSubEu->finished) {\n#else\n            if (playbackState->priority == NOTE_PRIORITY_STOPPING || noteSubEu->finished) {\n#endif\n                if (playbackState->adsr.state == ADSR_STATE_DISABLED || noteSubEu->finished) {\n                    if (playbackState->wantedParentLayer != NO_LAYER) {\n                        note_disable(note);\n                        if (playbackState->wantedParentLayer->seqChannel != NULL) {\n                            note_init_for_layer(note, playbackState->wantedParentLayer);\n                            note_vibrato_init(note);\n                            audio_list_remove(&note->listItem);\n                            audio_list_push_back(&note->listItem.pool->active, &note->listItem);\n                            playbackState->wantedParentLayer = NO_LAYER;\n                            // don't skip\n                        } else {\n                            eu_stubbed_printf_0(\"Error:Wait Track disappear\\n\");\n                            note_disable(note);\n                            audio_list_remove(&note->listItem);\n                            audio_list_push_back(&note->listItem.pool->disabled, &note->listItem);\n                            playbackState->wantedParentLayer = NO_LAYER;\n                            goto skip;\n                        }\n                    } else {\n                        note_disable(note);\n                        audio_list_remove(&note->listItem);\n                        audio_list_push_back(&note->listItem.pool->disabled, &note->listItem);\n                        goto skip;\n                    }\n                }\n#if !defined(VERSION_SH) && !defined(VERSION_CN)\n                if (1) {\n                }\n#endif\n            } else if (playbackState->adsr.state == ADSR_STATE_DISABLED) {\n                note_disable(note);\n                audio_list_remove(&note->listItem);\n                audio_list_push_back(&note->listItem.pool->disabled, &note->listItem);\n                goto skip;\n            }\n\n            scale = adsr_update(&playbackState->adsr);\n            note_vibrato_update(note);\n            attributes = &playbackState->attributes;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n            if (playbackState->unkSH34 == 1 || playbackState->unkSH34 == 2) {\n                reverbInfo.freqScale = attributes->freqScale;\n                reverbInfo.velocity = attributes->velocity;\n                reverbInfo.pan = attributes->pan;\n                reverbInfo.reverbVol = attributes->reverbVol;\n                reverbInfo.reverbBits = attributes->reverbBits;\n                reverbInfo.synthesisVolume = attributes->synthesisVolume;\n                reverbInfo.filter = attributes->filter;\n                bookOffset = noteSubEu->bookOffset;\n            } else {\n                reverbInfo.freqScale = playbackState->parentLayer->noteFreqScale;\n                reverbInfo.velocity = playbackState->parentLayer->noteVelocity;\n                reverbInfo.pan = playbackState->parentLayer->notePan;\n                reverbInfo.reverbBits = playbackState->parentLayer->reverbBits;\n                reverbInfo.reverbVol = playbackState->parentLayer->seqChannel->reverbVol;\n                reverbInfo.synthesisVolume = playbackState->parentLayer->seqChannel->synthesisVolume;\n                reverbInfo.filter = playbackState->parentLayer->seqChannel->filter;\n                bookOffset = playbackState->parentLayer->seqChannel->bookOffset & 0x7;\n                if (playbackState->parentLayer->seqChannel->seqPlayer->muted\n                    && (playbackState->parentLayer->seqChannel->muteBehavior & 8)) {\n                    reverbInfo.freqScale = 0.0f;\n                    reverbInfo.velocity = 0.0f;\n                }\n            }\n\n            reverbInfo.freqScale *= playbackState->vibratoFreqScale * playbackState->portamentoFreqScale;\n            reverbInfo.freqScale *= gAudioBufferParameters.resampleRate;\n            reverbInfo.velocity *= scale;\n            note_set_vel_pan_reverb(note, &reverbInfo);\n#else\n            if (playbackState->priority == NOTE_PRIORITY_STOPPING) {\n                frequency = attributes->freqScale;\n                velocity = attributes->velocity;\n                pan = attributes->pan;\n                reverbVol = attributes->reverbVol;\n                if (1) {\n                }\n                bookOffset = noteSubEu->bookOffset;\n            } else {\n                frequency = playbackState->parentLayer->noteFreqScale;\n                velocity = playbackState->parentLayer->noteVelocity;\n                pan = playbackState->parentLayer->notePan;\n                reverbVol = playbackState->parentLayer->seqChannel->reverbVol;\n                bookOffset = playbackState->parentLayer->seqChannel->bookOffset & 0x7;\n            }\n\n            frequency *= playbackState->vibratoFreqScale * playbackState->portamentoFreqScale;\n            frequency *= gAudioBufferParameters.resampleRate;\n            velocity = velocity * scale * scale;\n            note_set_resampling_rate(note, frequency);\n            note_set_vel_pan_reverb(note, velocity, pan, reverbVol);\n#endif\n            noteSubEu->bookOffset = bookOffset;\n            skip:;\n        }\n#else\n        if (note->priority != NOTE_PRIORITY_DISABLED) {\n            if (note->priority == NOTE_PRIORITY_STOPPING || note->finished) {\n                if (note->adsrVolScale == 0 || note->finished) {\n                    if (note->wantedParentLayer != NO_LAYER) {\n                        note_disable2(note);\n                        if (note->wantedParentLayer->seqChannel != NULL) {\n                            if (note_init_for_layer(note, note->wantedParentLayer) == TRUE) {\n                                note_disable2(note);\n                                POP(&note->listItem);\n                                PREPEND(&note->listItem, &gNoteFreeLists.disabled);\n                            } else {\n                                note_vibrato_init(note);\n                                audio_list_push_back(&note->listItem.pool->active,\n                                                     POP(&note->listItem));\n                                note->wantedParentLayer = NO_LAYER;\n                            }\n                        } else {\n                            note_disable2(note);\n                            audio_list_push_back(&note->listItem.pool->disabled, POP(&note->listItem));\n                            note->wantedParentLayer = NO_LAYER;\n                            continue;\n                        }\n                    } else {\n                        note_disable2(note);\n                        audio_list_push_back(&note->listItem.pool->disabled, POP(&note->listItem));\n                        continue;\n                    }\n                }\n            } else {\n                if (note->adsr.state == ADSR_STATE_DISABLED) {\n                    note_disable2(note);\n                    audio_list_push_back(&note->listItem.pool->disabled, POP(&note->listItem));\n                    continue;\n                }\n            }\n\n            adsr_update(&note->adsr);\n            note_vibrato_update(note);\n            attributes = &note->attributes;\n            if (note->priority == NOTE_PRIORITY_STOPPING) {\n                frequency = attributes->freqScale;\n                velocity = attributes->velocity;\n                pan = attributes->pan;\n                reverbVol = attributes->reverbVol;\n            } else {\n                frequency = note->parentLayer->noteFreqScale;\n                velocity = note->parentLayer->noteVelocity;\n                pan = note->parentLayer->notePan;\n                reverbVol = note->parentLayer->seqChannel->reverbVol;\n            }\n\n            scale = note->adsrVolScale;\n            frequency *= note->vibratoFreqScale * note->portamentoFreqScale;\n            cap = 3.99992f;\n            if (gAiFrequency != 32006) {\n                frequency *= US_FLOAT(32000.0) / (f32) gAiFrequency;\n            }\n            frequency = (frequency < cap ? frequency : cap);\n            scale *= 4.3498e-5f; // ~1 / 23000\n            velocity = velocity * scale * scale;\n            note_set_frequency(note, frequency);\n            note_set_vel_pan_reverb(note, velocity, pan, reverbVol);\n            continue;\n        }\n#endif\n    }\n#undef PREPEND\n#undef POP\n}\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n// These three are matching but have been moved from above in shindou:\nstruct AudioBankSound *instrument_get_audio_bank_sound(struct Instrument *instrument, s32 semitone) {\n    struct AudioBankSound *sound;\n    if (semitone < instrument->normalRangeLo) {\n        sound = &instrument->lowNotesSound;\n    } else if (semitone <= instrument->normalRangeHi) {\n        sound = &instrument->normalNotesSound;\n    } else {\n        sound = &instrument->highNotesSound;\n    }\n    return sound;\n}\nstruct Instrument *get_instrument_inner(s32 bankId, s32 instId) {\n    struct Instrument *inst;\n\n    if (IS_BANK_LOAD_COMPLETE(bankId) == FALSE) {\n        gAudioErrorFlags = bankId + 0x10000000;\n        return NULL;\n    }\n\n    if (instId >= gCtlEntries[bankId].numInstruments) {\n        gAudioErrorFlags = ((bankId << 8) + instId) + 0x3000000;\n        return NULL;\n    }\n\n    inst = gCtlEntries[bankId].instruments[instId];\n    if (inst == NULL) {\n        gAudioErrorFlags = ((bankId << 8) + instId) + 0x1000000;\n        return inst;\n    }\n\n    return inst;\n}\n\nstruct Drum *get_drum(s32 bankId, s32 drumId) {\n    struct Drum *drum;\n\n    if (IS_BANK_LOAD_COMPLETE(bankId) == FALSE) {\n        gAudioErrorFlags = bankId + 0x10000000;\n        return NULL;\n    }\n\n    if (drumId >= gCtlEntries[bankId].numDrums) {\n        gAudioErrorFlags = ((bankId << 8) + drumId) + 0x4000000;\n        return NULL;\n    }\n\n#ifndef NO_SEGMENTED_MEMORY\n    if ((uintptr_t) gCtlEntries[bankId].drums < 0x80000000U) {\n        return NULL;\n    }\n#endif\n\n    drum = gCtlEntries[bankId].drums[drumId];\n    if (drum == NULL) {\n        gAudioErrorFlags = ((bankId << 8) + drumId) + 0x5000000;\n    }\n    return drum;\n}\n#endif\n\nvoid seq_channel_layer_decay_release_internal(struct SequenceChannelLayer *seqLayer, s32 target) {\n    struct Note *note;\n    struct NoteAttributes *attributes;\n\n    if (seqLayer == NO_LAYER) {\n        return;\n    }\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    seqLayer->status = SOUND_LOAD_STATUS_NOT_LOADED;\n#endif\n\n    if (seqLayer->note == NULL) {\n        return;\n    }\n\n    note = seqLayer->note;\n    attributes = &note->attributes;\n\n#if defined(VERSION_JP) || defined(VERSION_US)\n    if (seqLayer->seqChannel != NULL && seqLayer->seqChannel->noteAllocPolicy == 0) {\n        seqLayer->note = NULL;\n    }\n#endif\n\n    if (note->wantedParentLayer == seqLayer) {\n        note->wantedParentLayer = NO_LAYER;\n    }\n\n    if (note->parentLayer != seqLayer) {\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n        if (note->parentLayer == NO_LAYER && note->wantedParentLayer == NO_LAYER &&\n                note->prevParentLayer == seqLayer && target != ADSR_STATE_DECAY) {\n            // Just guessing that this printf goes here... it's hard to parse.\n            eu_stubbed_printf_0(\"Slow Release Batting\\n\");\n            note->adsr.fadeOutVel = gAudioBufferParameters.updatesPerFrameInv;\n            note->adsr.action |= ADSR_ACTION_RELEASE;\n        }\n#endif\n        return;\n    }\n\n#if !defined(VERSION_SH) && !defined(VERSION_CN)\n    seqLayer->status = SOUND_LOAD_STATUS_NOT_LOADED;\n#endif\n    if (note->adsr.state != ADSR_STATE_DECAY) {\n        attributes->freqScale = seqLayer->noteFreqScale;\n        attributes->velocity = seqLayer->noteVelocity;\n        attributes->pan = seqLayer->notePan;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        attributes->reverbBits = seqLayer->reverbBits;\n#endif\n        if (seqLayer->seqChannel != NULL) {\n            attributes->reverbVol = seqLayer->seqChannel->reverbVol;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n            attributes->synthesisVolume = seqLayer->seqChannel->synthesisVolume;\n            attributes->filter = seqLayer->seqChannel->filter;\n            if (seqLayer->seqChannel->seqPlayer->muted && (seqLayer->seqChannel->muteBehavior & 8) != 0) {\n                note->noteSubEu.finished = TRUE;\n            }\n            note->priority = seqLayer->seqChannel->unkSH06;\n#endif\n        }\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        else {\n#endif\n            note->priority = NOTE_PRIORITY_STOPPING;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        }\n#endif\n        note->prevParentLayer = note->parentLayer;\n        note->parentLayer = NO_LAYER;\n        if (target == ADSR_STATE_RELEASE) {\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n            note->adsr.fadeOutVel = gAudioBufferParameters.updatesPerFrameInv;\n#else\n            note->adsr.fadeOutVel = 0x8000 / gAudioUpdatesPerFrame;\n#endif\n            note->adsr.action |= ADSR_ACTION_RELEASE;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n            note->unkSH34 = 2;\n#endif\n        } else {\n#if defined(VERSION_SH) || defined(VERSION_CN)\n            note->unkSH34 = 1;\n#endif\n            note->adsr.action |= ADSR_ACTION_DECAY;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n            if (seqLayer->adsr.releaseRate == 0) {\n                note->adsr.fadeOutVel = seqLayer->seqChannel->adsr.releaseRate * gAudioBufferParameters.unkUpdatesPerFrameScaled;\n            } else {\n                note->adsr.fadeOutVel = seqLayer->adsr.releaseRate * gAudioBufferParameters.unkUpdatesPerFrameScaled;\n            }\n            note->adsr.sustain = (FLOAT_CAST(seqLayer->seqChannel->adsr.sustain) * note->adsr.current) / 256.0f;\n#else\n            if (seqLayer->adsr.releaseRate == 0) {\n                note->adsr.fadeOutVel = seqLayer->seqChannel->adsr.releaseRate * 24;\n            } else {\n                note->adsr.fadeOutVel = seqLayer->adsr.releaseRate * 24;\n            }\n            note->adsr.sustain = (note->adsr.current * seqLayer->seqChannel->adsr.sustain) / 0x10000;\n#endif\n        }\n    }\n\n    if (target == ADSR_STATE_DECAY) {\n        audio_list_remove(&note->listItem);\n        audio_list_push_front(&note->listItem.pool->decaying, &note->listItem);\n    }\n}\n\nvoid seq_channel_layer_note_decay(struct SequenceChannelLayer *seqLayer) {\n    seq_channel_layer_decay_release_internal(seqLayer, ADSR_STATE_DECAY);\n}\n\nvoid seq_channel_layer_note_release(struct SequenceChannelLayer *seqLayer) {\n    seq_channel_layer_decay_release_internal(seqLayer, ADSR_STATE_RELEASE);\n}\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\ns32 build_synthetic_wave(struct Note *note, struct SequenceChannelLayer *seqLayer, s32 waveId) {\n    f32 freqScale;\n    f32 ratio;\n    u8 sampleCountIndex;\n\n    if (waveId < 128) {\n#ifdef VERSION_EU\n        stubbed_printf(\"Audio:Wavemem: Bad voiceno (%d)\\n\", waveId);\n#endif\n        waveId = 128;\n    }\n\n    freqScale = seqLayer->freqScale;\n    if (seqLayer->portamento.mode != 0 && 0.0f < seqLayer->portamento.extent) {\n        freqScale *= (seqLayer->portamento.extent + 1.0f);\n    }\n    if (freqScale < 1.0f) {\n        sampleCountIndex = 0;\n        ratio = 1.0465f;\n    } else if (freqScale < 2.0f) {\n        sampleCountIndex = 1;\n        ratio = 0.52325f;\n    } else if (freqScale < 4.0f) {\n        sampleCountIndex = 2;\n        ratio = 0.26263f;\n    } else {\n        sampleCountIndex = 3;\n        ratio = 0.13081f;\n    }\n    seqLayer->freqScale *= ratio;\n    note->waveId = waveId;\n    note->sampleCountIndex = sampleCountIndex;\n\n    note->noteSubEu.sound.samples = &gWaveSamples[waveId - 128][sampleCountIndex * 64];\n\n    return sampleCountIndex;\n}\n\n#else\nvoid build_synthetic_wave(struct Note *note, struct SequenceChannelLayer *seqLayer) {\n    s32 i;\n    s32 j;\n    s32 pos;\n    s32 stepSize;\n    s32 offset;\n    u8 lim;\n    u8 origSampleCount = note->sampleCount;\n\n    if (seqLayer->freqScale < US_FLOAT(1.0)) {\n        note->sampleCount = 64;\n        seqLayer->freqScale *= US_FLOAT(1.0465);\n        stepSize = 1;\n    } else if (seqLayer->freqScale < US_FLOAT(2.0)) {\n        note->sampleCount = 32;\n        seqLayer->freqScale *= US_FLOAT(0.52325);\n        stepSize = 2;\n    } else if (seqLayer->freqScale < US_FLOAT(4.0)) {\n        note->sampleCount = 16;\n        seqLayer->freqScale *= US_FLOAT(0.26263);\n        stepSize = 4;\n    } else {\n        note->sampleCount = 8;\n        seqLayer->freqScale *= US_FLOAT(0.13081);\n        stepSize = 8;\n    }\n\n    if (note->sampleCount == origSampleCount && seqLayer->seqChannel->instOrWave == note->instOrWave) {\n        return;\n    }\n\n    // Load wave sample\n    note->instOrWave = (u8) seqLayer->seqChannel->instOrWave;\n    for (i = -1, pos = 0; pos < 0x40; pos += stepSize) {\n        i++;\n        note->synthesisBuffers->samples[i] = gWaveSamples[seqLayer->seqChannel->instOrWave - 0x80][pos];\n    }\n\n    // Repeat sample\n    for (offset = note->sampleCount; offset < 0x40; offset += note->sampleCount) {\n        lim = note->sampleCount;\n        if (offset < 0 || offset > 0) {\n            for (j = 0; j < lim; j++) {\n                note->synthesisBuffers->samples[offset + j] = note->synthesisBuffers->samples[j];\n            }\n        } else {\n            for (j = 0; j < lim; j++) {\n                note->synthesisBuffers->samples[offset + j] = note->synthesisBuffers->samples[j];\n            }\n        }\n    }\n\n    osWritebackDCache(note->synthesisBuffers->samples, sizeof(note->synthesisBuffers->samples));\n}\n#endif\n\nvoid init_synthetic_wave(struct Note *note, struct SequenceChannelLayer *seqLayer) {\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    s32 sampleCountIndex;\n    s32 waveSampleCountIndex;\n    s32 waveId = seqLayer->instOrWave;\n    if (waveId == 0xff) {\n        waveId = seqLayer->seqChannel->instOrWave;\n    }\n    sampleCountIndex = note->sampleCountIndex;\n    waveSampleCountIndex = build_synthetic_wave(note, seqLayer, waveId);\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    note->synthesisState.samplePosInt = note->synthesisState.samplePosInt * euUnknownData_8030194c[waveSampleCountIndex] / euUnknownData_8030194c[sampleCountIndex];\n#else // Not a real change. Just temporary so I can remove this variable.\n    note->synthesisState.samplePosInt = note->synthesisState.samplePosInt * gDefaultShortNoteVelocityTable[waveSampleCountIndex] / gDefaultShortNoteVelocityTable[sampleCountIndex];\n#endif\n#else\n    s32 sampleCount = note->sampleCount;\n    build_synthetic_wave(note, seqLayer);\n    if (sampleCount != 0) {\n        note->samplePosInt *= note->sampleCount / sampleCount;\n    } else {\n        note->samplePosInt = 0;\n    }\n#endif\n}\n\nvoid init_note_list(struct AudioListItem *list) {\n    list->prev = list;\n    list->next = list;\n    list->u.count = 0;\n}\n\nvoid init_note_lists(struct NotePool *pool) {\n    init_note_list(&pool->disabled);\n    init_note_list(&pool->decaying);\n    init_note_list(&pool->releasing);\n    init_note_list(&pool->active);\n    pool->disabled.pool = pool;\n    pool->decaying.pool = pool;\n    pool->releasing.pool = pool;\n    pool->active.pool = pool;\n}\n\nvoid init_note_free_list(void) {\n    s32 i;\n\n    init_note_lists(&gNoteFreeLists);\n    for (i = 0; i < gMaxSimultaneousNotes; i++) {\n        gNotes[i].listItem.u.value = &gNotes[i];\n        gNotes[i].listItem.prev = NULL;\n        audio_list_push_back(&gNoteFreeLists.disabled, &gNotes[i].listItem);\n    }\n}\n\nvoid note_pool_clear(struct NotePool *pool) {\n    s32 i;\n    struct AudioListItem *source;\n    struct AudioListItem *cur;\n    struct AudioListItem *dest;\n    UNUSED s32 j; // unused in EU\n\n    for (i = 0; i < 4; i++) {\n        switch (i) {\n            case 0:\n                source = &pool->disabled;\n                dest = &gNoteFreeLists.disabled;\n                break;\n\n            case 1:\n                source = &pool->decaying;\n                dest = &gNoteFreeLists.decaying;\n                break;\n\n            case 2:\n                source = &pool->releasing;\n                dest = &gNoteFreeLists.releasing;\n                break;\n\n            case 3:\n                source = &pool->active;\n                dest = &gNoteFreeLists.active;\n                break;\n        }\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n        for (;;) {\n            cur = source->next;\n            if (cur == source) {\n                break;\n            }\n            if (cur == NULL) {\n                eu_stubbed_printf_0(\"Audio: C-Alloc : Dealloc voice is NULL\\n\");\n                break;\n            }\n            audio_list_remove(cur);\n            audio_list_push_back(dest, cur);\n        }\n#else\n        j = 0;\n        do {\n            cur = source->next;\n            if (cur == source) {\n                break;\n            }\n            audio_list_remove(cur);\n            audio_list_push_back(dest, cur);\n            j++;\n        } while (j <= gMaxSimultaneousNotes);\n#endif\n    }\n}\n\nvoid note_pool_fill(struct NotePool *pool, s32 count) {\n    s32 i;\n    s32 j;\n    struct Note *note;\n    struct AudioListItem *source;\n    struct AudioListItem *dest;\n\n    note_pool_clear(pool);\n\n    for (i = 0, j = 0; j < count; i++) {\n        if (i == 4) {\n            eu_stubbed_printf_1(\"Alloc Error:Dim voice-Alloc %d\", count);\n            return;\n        }\n\n        switch (i) {\n            case 0:\n                source = &gNoteFreeLists.disabled;\n                dest = &pool->disabled;\n                break;\n\n            case 1:\n                source = &gNoteFreeLists.decaying;\n                dest = &pool->decaying;\n                break;\n\n            case 2:\n                source = &gNoteFreeLists.releasing;\n                dest = &pool->releasing;\n                break;\n\n            case 3:\n                source = &gNoteFreeLists.active;\n                dest = &pool->active;\n                break;\n        }\n\n        while (j < count) {\n            note = audio_list_pop_back(source);\n            if (note == NULL) {\n                break;\n            }\n            audio_list_push_back(dest, &note->listItem);\n            j++;\n        }\n    }\n}\n\nvoid audio_list_push_front(struct AudioListItem *list, struct AudioListItem *item) {\n    // add 'item' to the front of the list given by 'list', if it's not in any list\n    if (item->prev != NULL) {\n        eu_stubbed_printf_0(\"Error:Same List Add\\n\");\n    } else {\n        item->prev = list;\n        item->next = list->next;\n        list->next->prev = item;\n        list->next = item;\n        list->u.count++;\n        item->pool = list->pool;\n    }\n}\n\nvoid audio_list_remove(struct AudioListItem *item) {\n    // remove 'item' from the list it's in, if any\n    if (item->prev == NULL) {\n        eu_stubbed_printf_0(\"Already Cut\\n\");\n    } else {\n        item->prev->next = item->next;\n        item->next->prev = item->prev;\n        item->prev = NULL;\n    }\n}\n\nstruct Note *pop_node_with_lower_prio(struct AudioListItem *list, s32 limit) {\n    struct AudioListItem *cur = list->next;\n    struct AudioListItem *best;\n\n    if (cur == list) {\n        return NULL;\n    }\n\n    for (best = cur; cur != list; cur = cur->next) {\n        if (((struct Note *) best->u.value)->priority >= ((struct Note *) cur->u.value)->priority) {\n            best = cur;\n        }\n    }\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    if (best == NULL) {\n        return NULL;\n    }\n\n    if (limit <= ((struct Note *) best->u.value)->priority) {\n        return NULL;\n    }\n#else\n    if (limit < ((struct Note *) best->u.value)->priority) {\n        return NULL;\n    }\n#endif\n\n#if !defined(VERSION_SH) && !defined(VERSION_CN)\n    audio_list_remove(best);\n#endif\n    return best->u.value;\n}\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\nvoid note_init_for_layer(struct Note *note, struct SequenceChannelLayer *seqLayer) {\n    UNUSED s32 pad[4];\n    s16 instId;\n    struct NoteSubEu *sub = &note->noteSubEu;\n\n    note->prevParentLayer = NO_LAYER;\n    note->parentLayer = seqLayer;\n    note->priority = seqLayer->seqChannel->notePriority;\n    seqLayer->notePropertiesNeedInit = TRUE;\n    seqLayer->status = SOUND_LOAD_STATUS_DISCARDABLE; // \"loaded\"\n    seqLayer->note = note;\n    seqLayer->seqChannel->noteUnused = note;\n    seqLayer->seqChannel->layerUnused = seqLayer;\n    seqLayer->noteVelocity = 0.0f;\n    note_init(note);\n    instId = seqLayer->instOrWave;\n    if (instId == 0xff) {\n        instId = seqLayer->seqChannel->instOrWave;\n    }\n    sub->sound.audioBankSound = seqLayer->sound;\n\n    if (instId >= 0x80) {\n        sub->isSyntheticWave = TRUE;\n    } else {\n        sub->isSyntheticWave = FALSE;\n    }\n\n    if (sub->isSyntheticWave) {\n        build_synthetic_wave(note, seqLayer, instId);\n    }\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    note->bankId = seqLayer->seqChannel->bankId;\n#else\n    sub->bankId = seqLayer->seqChannel->bankId;\n#endif\n    sub->stereoHeadsetEffects = seqLayer->seqChannel->stereoHeadsetEffects;\n    sub->reverbIndex = seqLayer->seqChannel->reverbIndex & 3;\n}\n#else\ns32 note_init_for_layer(struct Note *note, struct SequenceChannelLayer *seqLayer) {\n    note->prevParentLayer = NO_LAYER;\n    note->parentLayer = seqLayer;\n    note->priority = seqLayer->seqChannel->notePriority;\n    if (IS_BANK_LOAD_COMPLETE(seqLayer->seqChannel->bankId) == FALSE) {\n        return TRUE;\n    }\n\n    note->bankId = seqLayer->seqChannel->bankId;\n    note->stereoHeadsetEffects = seqLayer->seqChannel->stereoHeadsetEffects;\n    note->sound = seqLayer->sound;\n    seqLayer->status = SOUND_LOAD_STATUS_DISCARDABLE; // \"loaded\"\n    seqLayer->note = note;\n    seqLayer->seqChannel->noteUnused = note;\n    seqLayer->seqChannel->layerUnused = seqLayer;\n    if (note->sound == NULL) {\n        build_synthetic_wave(note, seqLayer);\n    }\n    note_init(note);\n    return FALSE;\n}\n#endif\n\nvoid func_80319728(struct Note *note, struct SequenceChannelLayer *seqLayer) {\n    seq_channel_layer_note_release(note->parentLayer);\n    note->wantedParentLayer = seqLayer;\n}\n\nvoid note_release_and_take_ownership(struct Note *note, struct SequenceChannelLayer *seqLayer) {\n    note->wantedParentLayer = seqLayer;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    note->priority = seqLayer->seqChannel->notePriority;\n#else\n    note->priority = NOTE_PRIORITY_STOPPING;\n#endif\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    note->adsr.fadeOutVel = gAudioBufferParameters.updatesPerFrameInv;\n#else\n    note->adsr.fadeOutVel = 0x8000 / gAudioUpdatesPerFrame;\n#endif\n    note->adsr.action |= ADSR_ACTION_RELEASE;\n}\n\nstruct Note *alloc_note_from_disabled(struct NotePool *pool, struct SequenceChannelLayer *seqLayer) {\n    struct Note *note = audio_list_pop_back(&pool->disabled);\n    if (note != NULL) {\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n        note_init_for_layer(note, seqLayer);\n#else\n        if (note_init_for_layer(note, seqLayer) == TRUE) {\n            audio_list_push_front(&gNoteFreeLists.disabled, &note->listItem);\n            return NULL;\n        }\n#endif\n        audio_list_push_front(&pool->active, &note->listItem);\n    }\n    return note;\n}\n\nstruct Note *alloc_note_from_decaying(struct NotePool *pool, struct SequenceChannelLayer *seqLayer) {\n    struct Note *note = audio_list_pop_back(&pool->decaying);\n    if (note != NULL) {\n        note_release_and_take_ownership(note, seqLayer);\n        audio_list_push_back(&pool->releasing, &note->listItem);\n    }\n    return note;\n}\n\nstruct Note *alloc_note_from_active(struct NotePool *pool, struct SequenceChannelLayer *seqLayer) {\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    struct Note *rNote;\n#endif\n    struct Note *aNote;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    s32 rPriority, aPriority;\n    rPriority = aPriority = 0x10;\n\n    rNote = pop_node_with_lower_prio(&pool->releasing, seqLayer->seqChannel->notePriority);\n\n    if (rNote != NULL) {\n        rPriority = rNote->priority;\n    }\n#endif\n\n    aNote = pop_node_with_lower_prio(&pool->active, seqLayer->seqChannel->notePriority);\n\n    if (aNote == NULL) {\n        eu_stubbed_printf_0(\"Audio: C-Alloc : lowerPrio is NULL\\n\");\n    } else {\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        aPriority = aNote->priority;\n#else\n        func_80319728(aNote, seqLayer);\n        audio_list_push_back(&pool->releasing, &aNote->listItem);\n#endif\n    }\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    if (rNote == NULL && aNote == NULL) {\n        return NULL;\n    }\n\n    if (aPriority < rPriority) {\n        audio_list_remove(&aNote->listItem);\n        func_80319728(aNote, seqLayer);\n        audio_list_push_back(&pool->releasing, &aNote->listItem);\n        aNote->priority = seqLayer->seqChannel->notePriority;\n        return aNote;\n    }\n    rNote->wantedParentLayer = seqLayer;\n    rNote->priority = seqLayer->seqChannel->notePriority;\n    return rNote;\n#else\n    return aNote;\n#endif\n}\n\nstruct Note *alloc_note(struct SequenceChannelLayer *seqLayer) {\n    struct Note *ret;\n    u32 policy = seqLayer->seqChannel->noteAllocPolicy;\n\n    if (policy & NOTE_ALLOC_LAYER) {\n        ret = seqLayer->note;\n        if (ret != NULL && ret->prevParentLayer == seqLayer\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                && ret->wantedParentLayer == NO_LAYER\n#endif\n                ) {\n            note_release_and_take_ownership(ret, seqLayer);\n            audio_list_remove(&ret->listItem);\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n            audio_list_push_back(&ret->listItem.pool->releasing, &ret->listItem);\n#else\n            audio_list_push_back(&gNoteFreeLists.releasing, &ret->listItem);\n#endif\n            return ret;\n        }\n    }\n\n    if (policy & NOTE_ALLOC_CHANNEL) {\n        if (!(ret = alloc_note_from_disabled(&seqLayer->seqChannel->notePool, seqLayer))\n            && !(ret = alloc_note_from_decaying(&seqLayer->seqChannel->notePool, seqLayer))\n            && !(ret = alloc_note_from_active(&seqLayer->seqChannel->notePool, seqLayer))) {\n#if defined(VERSION_SH) || defined(VERSION_CN)\n            goto null_return;\n#else\n            eu_stubbed_printf_0(\"Sub Limited Warning: Drop Voice\");\n            seqLayer->status = SOUND_LOAD_STATUS_NOT_LOADED;\n            return NULL;\n#endif\n        }\n        return ret;\n    }\n\n    if (policy & NOTE_ALLOC_SEQ) {\n        if (!(ret = alloc_note_from_disabled(&seqLayer->seqChannel->notePool, seqLayer))\n            && !(ret = alloc_note_from_disabled(&seqLayer->seqChannel->seqPlayer->notePool, seqLayer))\n            && !(ret = alloc_note_from_decaying(&seqLayer->seqChannel->notePool, seqLayer))\n            && !(ret = alloc_note_from_decaying(&seqLayer->seqChannel->seqPlayer->notePool, seqLayer))\n            && !(ret = alloc_note_from_active(&seqLayer->seqChannel->notePool, seqLayer))\n            && !(ret = alloc_note_from_active(&seqLayer->seqChannel->seqPlayer->notePool, seqLayer))) {\n#if defined(VERSION_SH) || defined(VERSION_CN)\n            goto null_return;\n#else\n            eu_stubbed_printf_0(\"Warning: Drop Voice\");\n            seqLayer->status = SOUND_LOAD_STATUS_NOT_LOADED;\n            return NULL;\n#endif\n        }\n        return ret;\n    }\n\n    if (policy & NOTE_ALLOC_GLOBAL_FREELIST) {\n        if (!(ret = alloc_note_from_disabled(&gNoteFreeLists, seqLayer))\n            && !(ret = alloc_note_from_decaying(&gNoteFreeLists, seqLayer))\n            && !(ret = alloc_note_from_active(&gNoteFreeLists, seqLayer))) {\n#if defined(VERSION_SH) || defined(VERSION_CN)\n            goto null_return;\n#else\n            eu_stubbed_printf_0(\"Warning: Drop Voice\");\n            seqLayer->status = SOUND_LOAD_STATUS_NOT_LOADED;\n            return NULL;\n#endif\n        }\n        return ret;\n    }\n\n    if (!(ret = alloc_note_from_disabled(&seqLayer->seqChannel->notePool, seqLayer))\n        && !(ret = alloc_note_from_disabled(&seqLayer->seqChannel->seqPlayer->notePool, seqLayer))\n        && !(ret = alloc_note_from_disabled(&gNoteFreeLists, seqLayer))\n        && !(ret = alloc_note_from_decaying(&seqLayer->seqChannel->notePool, seqLayer))\n        && !(ret = alloc_note_from_decaying(&seqLayer->seqChannel->seqPlayer->notePool, seqLayer))\n        && !(ret = alloc_note_from_decaying(&gNoteFreeLists, seqLayer))\n        && !(ret = alloc_note_from_active(&seqLayer->seqChannel->notePool, seqLayer))\n        && !(ret = alloc_note_from_active(&seqLayer->seqChannel->seqPlayer->notePool, seqLayer))\n        && !(ret = alloc_note_from_active(&gNoteFreeLists, seqLayer))) {\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        goto null_return;\n#else\n        eu_stubbed_printf_0(\"Warning: Drop Voice\");\n        seqLayer->status = SOUND_LOAD_STATUS_NOT_LOADED;\n        return NULL;\n#endif\n    }\n    return ret;\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\nnull_return:\n    seqLayer->status = SOUND_LOAD_STATUS_NOT_LOADED;\n    return NULL;\n#endif\n}\n\n#if defined(VERSION_JP) || defined(VERSION_US)\nvoid reclaim_notes(void) {\n    struct Note *note;\n    s32 i;\n    s32 cond;\n\n    for (i = 0; i < gMaxSimultaneousNotes; i++) {\n        note = &gNotes[i];\n        if (note->parentLayer != NO_LAYER) {\n            cond = FALSE;\n            if (!note->parentLayer->enabled && note->priority >= NOTE_PRIORITY_MIN) {\n                cond = TRUE;\n            } else if (note->parentLayer->seqChannel == NULL) {\n                audio_list_push_back(&gLayerFreeList, &note->parentLayer->listItem);\n                seq_channel_layer_disable(note->parentLayer);\n                note->priority = NOTE_PRIORITY_STOPPING;\n            } else if (note->parentLayer->seqChannel->seqPlayer == NULL) {\n                sequence_channel_disable(note->parentLayer->seqChannel);\n                note->priority = NOTE_PRIORITY_STOPPING;\n            } else if (note->parentLayer->seqChannel->seqPlayer->muted) {\n                if (note->parentLayer->seqChannel->muteBehavior\n                    & (MUTE_BEHAVIOR_STOP_SCRIPT | MUTE_BEHAVIOR_STOP_NOTES)) {\n                    cond = TRUE;\n                }\n            } else {\n                cond = FALSE;\n            }\n\n            if (cond) {\n                seq_channel_layer_note_release(note->parentLayer);\n                audio_list_remove(&note->listItem);\n                audio_list_push_front(&note->listItem.pool->disabled, &note->listItem);\n                note->priority = NOTE_PRIORITY_STOPPING;\n            }\n        }\n    }\n}\n#endif\n\nvoid note_init_all(void) {\n    struct Note *note;\n    s32 i;\n\n    for (i = 0; i < gMaxSimultaneousNotes; i++) {\n        note = &gNotes[i];\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n        note->noteSubEu = gZeroNoteSub;\n#else\n        note->enabled = FALSE;\n        note->stereoStrongRight = FALSE;\n        note->stereoStrongLeft = FALSE;\n        note->stereoHeadsetEffects = FALSE;\n#endif\n        note->priority = NOTE_PRIORITY_DISABLED;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        note->unkSH34 = 0;\n#endif\n        note->parentLayer = NO_LAYER;\n        note->wantedParentLayer = NO_LAYER;\n        note->prevParentLayer = NO_LAYER;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n        note->waveId = 0;\n#else\n        note->reverbVol = 0;\n        note->usesHeadsetPanEffects = FALSE;\n        note->sampleCount = 0;\n        note->instOrWave = 0;\n        note->targetVolLeft = 0;\n        note->targetVolRight = 0;\n        note->frequency = 0.0f;\n        note->unused1 = 0x3f;\n#endif\n        note->attributes.velocity = 0.0f;\n        note->adsrVolScale = 0;\n        note->adsr.state = ADSR_STATE_DISABLED;\n        note->adsr.action = 0;\n        note->vibratoState.active = FALSE;\n        note->portamento.cur = 0.0f;\n        note->portamento.speed = 0.0f;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        note->synthesisState.synthesisBuffers = sound_alloc_uninitialized(&gNotesAndBuffersPool, sizeof(struct NoteSynthesisBuffers));\n#elif defined(VERSION_EU)\n        note->synthesisState.synthesisBuffers = soundAlloc(&gNotesAndBuffersPool, sizeof(struct NoteSynthesisBuffers));\n#else\n        note->synthesisBuffers = soundAlloc(&gNotesAndBuffersPool, sizeof(struct NoteSynthesisBuffers));\n#endif\n    }\n}\n"
  },
  {
    "path": "src/audio/playback.h",
    "content": "#ifndef AUDIO_PLAYBACK_H\n#define AUDIO_PLAYBACK_H\n\n#include <PR/ultratypes.h>\n\n#include \"internal.h\"\n\n// Mask bits denoting where to allocate notes from, according to a channel's\n// noteAllocPolicy. Despite being checked as bitmask bits, the bits are not\n// orthogonal; rather, the smallest bit wins, except for NOTE_ALLOC_LAYER,\n// which *is* orthogonal to the other. SEQ implicitly includes CHANNEL.\n// If none of the CHANNEL/SEQ/GLOBAL_FREELIST bits are set, all three locations\n// are tried.\n#define NOTE_ALLOC_LAYER 1\n#define NOTE_ALLOC_CHANNEL 2\n#define NOTE_ALLOC_SEQ 4\n#define NOTE_ALLOC_GLOBAL_FREELIST 8\n\nvoid process_notes(void);\nvoid seq_channel_layer_note_decay(struct SequenceChannelLayer *seqLayer);\nvoid seq_channel_layer_note_release(struct SequenceChannelLayer *seqLayer);\nvoid init_synthetic_wave(struct Note *note, struct SequenceChannelLayer *seqLayer);\nvoid init_note_lists(struct NotePool *pool);\nvoid init_note_free_list(void);\nvoid note_pool_clear(struct NotePool *pool);\nvoid note_pool_fill(struct NotePool *pool, s32 count);\nvoid audio_list_push_front(struct AudioListItem *list, struct AudioListItem *item);\nvoid audio_list_remove(struct AudioListItem *item);\nstruct Note *alloc_note(struct SequenceChannelLayer *seqLayer);\nvoid reclaim_notes(void);\nvoid note_init_all(void);\n\n#if defined(VERSION_SH)\nvoid note_set_vel_pan_reverb(struct Note *note, struct ReverbInfo *reverbInfo);\n#elif defined(VERSION_EU)\nvoid note_set_vel_pan_reverb(struct Note *note, f32 velocity, u8 pan, u8 reverbVol);\n#endif\n\n#if defined(VERSION_EU) || defined(VERSION_SH)\nstruct AudioBankSound *instrument_get_audio_bank_sound(struct Instrument *instrument, s32 semitone);\nstruct Instrument *get_instrument_inner(s32 bankId, s32 instId);\nstruct Drum *get_drum(s32 bankId, s32 drumId);\nvoid note_init_volume(struct Note *note);\nvoid note_set_frequency(struct Note *note, f32 frequency);\nvoid note_enable(struct Note *note);\nvoid note_disable(struct Note *note);\n#endif\n\n\n#endif // AUDIO_PLAYBACK_H\n"
  },
  {
    "path": "src/audio/port_eu.c",
    "content": "#include <ultra64.h>\n#include \"internal.h\"\n#include \"load.h\"\n#include \"data.h\"\n#include \"seqplayer.h\"\n#include \"synthesis.h\"\n\n#ifdef VERSION_EU\n\n#ifdef __sgi\n#define stubbed_printf\n#else\n#define stubbed_printf(...)\n#endif\n\n#define SAMPLES_TO_OVERPRODUCE 0x10\n#define EXTRA_BUFFERED_AI_SAMPLES_TARGET 0x40\n\n#ifdef VERSION_JP\ntypedef u16 FadeT;\n#else\ntypedef s32 FadeT;\n#endif\n\nextern volatile u8 gAudioResetStatus;\nextern u8 gAudioResetPresetIdToLoad;\nextern OSMesgQueue *OSMesgQueues[];\nextern struct EuAudioCmd sAudioCmd[0x100];\n\nvoid func_8031D690(s32 player, FadeT fadeInTime);\nvoid seq_player_fade_to_zero_volume(s32 player, FadeT fadeOutTime);\nvoid decrease_sample_dma_ttls(void);\ns32 audio_shut_down_and_reset_step(void);\nvoid func_802ad7ec(u32);\n\nstruct SPTask *create_next_audio_frame_task(void) {\n    u32 samplesRemainingInAI;\n    s32 writtenCmds;\n    s32 index;\n    OSTask_t *task;\n    s32 flags;\n    s16 *currAiBuffer;\n    s32 oldDmaCount;\n    OSMesg sp30;\n    OSMesg sp2C;\n\n    gAudioFrameCount++;\n    if (gAudioFrameCount % gAudioBufferParameters.presetUnk4 != 0) {\n        stubbed_printf(\"DAC:Lost 1 Frame.\\n\");\n        return NULL;\n    }\n\n    osSendMesg(OSMesgQueues[0], (OSMesg) gAudioFrameCount, 0);\n\n    gAudioTaskIndex ^= 1;\n    gCurrAiBufferIndex++;\n    gCurrAiBufferIndex %= NUMAIBUFFERS;\n    index = (gCurrAiBufferIndex - 2 + NUMAIBUFFERS) % NUMAIBUFFERS;\n    samplesRemainingInAI = osAiGetLength() / 4;\n\n    if (gAiBufferLengths[index] != 0) {\n        osAiSetNextBuffer(gAiBuffers[index], gAiBufferLengths[index] * 4);\n    }\n\n    oldDmaCount = gCurrAudioFrameDmaCount;\n    if (oldDmaCount > AUDIO_FRAME_DMA_QUEUE_SIZE) {\n        stubbed_printf(\"DMA: Request queue over.( %d )\\n\", oldDmaCount);\n    }\n    gCurrAudioFrameDmaCount = 0;\n\n    decrease_sample_dma_ttls();\n    if (osRecvMesg(OSMesgQueues[2], &sp30, 0) != -1) {\n        gAudioResetPresetIdToLoad = (u8) (s32) sp30;\n        gAudioResetStatus = 5;\n    }\n\n    if (gAudioResetStatus != 0) {\n        if (audio_shut_down_and_reset_step() == 0) {\n            if (gAudioResetStatus == 0) {\n                osSendMesg(OSMesgQueues[3], (OSMesg) (s32) gAudioResetPresetIdToLoad, OS_MESG_NOBLOCK);\n            }\n            return NULL;\n        }\n    }\n\n    gAudioTask = &gAudioTasks[gAudioTaskIndex];\n    gAudioCmd = gAudioCmdBuffers[gAudioTaskIndex];\n    index = gCurrAiBufferIndex;\n    currAiBuffer = gAiBuffers[index];\n\n    gAiBufferLengths[index] = ((gAudioBufferParameters.samplesPerFrameTarget - samplesRemainingInAI +\n         EXTRA_BUFFERED_AI_SAMPLES_TARGET) & ~0xf) + SAMPLES_TO_OVERPRODUCE;\n    if (gAiBufferLengths[index] < gAudioBufferParameters.minAiBufferLength) {\n        gAiBufferLengths[index] = gAudioBufferParameters.minAiBufferLength;\n    }\n    if (gAiBufferLengths[index] > gAudioBufferParameters.maxAiBufferLength) {\n        gAiBufferLengths[index] = gAudioBufferParameters.maxAiBufferLength;\n    }\n\n    if (osRecvMesg(OSMesgQueues[1], &sp2C, OS_MESG_NOBLOCK) != -1) {\n        func_802ad7ec((u32) sp2C);\n    }\n\n    flags = 0;\n    gAudioCmd = synthesis_execute(gAudioCmd, &writtenCmds, currAiBuffer, gAiBufferLengths[index]);\n    gAudioRandom = ((gAudioRandom + gAudioFrameCount) * gAudioFrameCount);\n    gAudioRandom = gAudioRandom + writtenCmds / 8;\n\n    index = gAudioTaskIndex;\n    gAudioTask->msgqueue = NULL;\n    gAudioTask->msg = NULL;\n\n    task = &gAudioTask->task.t;\n    task->type = M_AUDTASK;\n    task->flags = flags;\n    task->ucode_boot = rspF3DBootStart;\n    task->ucode_boot_size = (u8 *) rspF3DBootEnd - (u8 *) rspF3DBootStart;\n    task->ucode = rspAspMainStart;\n    task->ucode_data = rspAspMainDataStart;\n    task->ucode_size = 0x800; // (this size is ignored)\n    task->ucode_data_size = (rspAspMainDataEnd - rspAspMainDataStart) * sizeof(u64);\n    task->dram_stack = NULL;\n    task->dram_stack_size = 0;\n    task->output_buff = NULL;\n    task->output_buff_size = NULL;\n    task->data_ptr = gAudioCmdBuffers[index];\n    task->data_size = writtenCmds * sizeof(u64);\n    task->yield_data_ptr = NULL;\n    task->yield_data_size = 0;\n    return gAudioTask;\n}\n\nvoid eu_process_audio_cmd(struct EuAudioCmd *cmd) {\n    s32 i;\n\n    switch (cmd->u.s.op) {\n        case 0x81:\n            preload_sequence(cmd->u.s.arg2, 3);\n            break;\n\n        case 0x82:\n        case 0x88:\n            load_sequence(cmd->u.s.arg1, cmd->u.s.arg2, cmd->u.s.arg3);\n            func_8031D690(cmd->u.s.arg1, cmd->u2.as_s32);\n            break;\n\n        case 0x83:\n            if (gSequencePlayers[cmd->u.s.arg1].enabled != FALSE) {\n                if (cmd->u2.as_s32 == 0) {\n                    sequence_player_disable(&gSequencePlayers[cmd->u.s.arg1]);\n                }\n                else {\n                    seq_player_fade_to_zero_volume(cmd->u.s.arg1, cmd->u2.as_s32);\n                }\n            }\n            break;\n\n        case 0xf0:\n            gSoundMode = cmd->u2.as_s32;\n            break;\n\n        case 0xf1:\n            for (i = 0; i < 4; i++) {\n                gSequencePlayers[i].muted = TRUE;\n                gSequencePlayers[i].recalculateVolume = TRUE;\n            }\n            break;\n\n        case 0xf2:\n            for (i = 0; i < 4; i++) {\n                gSequencePlayers[i].muted = FALSE;\n                gSequencePlayers[i].recalculateVolume = TRUE;\n            }\n            break;\n    }\n}\n\nconst char undefportcmd[] = \"Undefined Port Command %d\\n\";\n\nextern OSMesgQueue *OSMesgQueues[];\nextern u8 D_EU_80302010;\nextern u8 D_EU_80302014;\nextern OSMesg OSMesg0;\nextern OSMesg OSMesg1;\nextern OSMesg OSMesg2;\nextern OSMesg OSMesg3;\n\nvoid seq_player_fade_to_zero_volume(s32 player, FadeT fadeOutTime) {\n    if (fadeOutTime == 0) {\n        fadeOutTime = 1;\n    }\n    gSequencePlayers[player].fadeVelocity = -(gSequencePlayers[player].fadeVolume / fadeOutTime);\n    gSequencePlayers[player].state = 2;\n    gSequencePlayers[player].fadeRemainingFrames = fadeOutTime;\n\n}\n\nvoid func_8031D690(s32 player, FadeT fadeInTime) {\n    if (fadeInTime != 0) {\n        gSequencePlayers[player].state = 1;\n        gSequencePlayers[player].fadeTimerUnkEu = fadeInTime;\n        gSequencePlayers[player].fadeRemainingFrames = fadeInTime;\n        gSequencePlayers[player].fadeVolume = 0.0f;\n        gSequencePlayers[player].fadeVelocity = 0.0f;\n    }\n}\n\nvoid port_eu_init_queues(void) {\n    D_EU_80302010 = 0;\n    D_EU_80302014 = 0;\n    osCreateMesgQueue(OSMesgQueues[0], &OSMesg0, 1);\n    osCreateMesgQueue(OSMesgQueues[1], &OSMesg1, 4);\n    osCreateMesgQueue(OSMesgQueues[2], &OSMesg2, 1);\n    osCreateMesgQueue(OSMesgQueues[3], &OSMesg3, 1);\n}\n\nvoid func_802ad6f0(s32 arg0, s32 *arg1) {\n    struct EuAudioCmd *cmd = &sAudioCmd[D_EU_80302010 & 0xff];\n    cmd->u.first = arg0;\n    cmd->u2.as_u32 = *arg1;\n    D_EU_80302010++;\n}\n\nvoid func_802ad728(u32 arg0, f32 arg1) {\n    func_802ad6f0(arg0, (s32*) &arg1);\n}\n\nvoid func_802ad74c(u32 arg0, u32 arg1) {\n    func_802ad6f0(arg0, (s32*) &arg1);\n}\n\nvoid func_802ad770(u32 arg0, s8 arg1) {\n    s32 sp1C = arg1 << 24;\n    func_802ad6f0(arg0, &sp1C);\n}\n\nvoid func_802ad7a0(void) {\n    osSendMesg(OSMesgQueues[1],\n            (OSMesg)(u32)((D_EU_80302014 & 0xff) << 8 | (D_EU_80302010 & 0xff)),\n            OS_MESG_NOBLOCK);\n    D_EU_80302014 = D_EU_80302010;\n}\n\nvoid func_802ad7ec(u32 arg0) {\n    struct EuAudioCmd *cmd;\n    struct SequencePlayer *seqPlayer;\n    struct SequenceChannel *chan;\n    u8 end = arg0 & 0xff;\n    u8 i = (arg0 >> 8) & 0xff;\n\n    for (;;) {\n        if (i == end) break;\n        cmd = &sAudioCmd[i++ & 0xff];\n\n        if (cmd->u.s.arg1 < SEQUENCE_PLAYERS) {\n            seqPlayer = &gSequencePlayers[cmd->u.s.arg1];\n            if ((cmd->u.s.op & 0x80) != 0) {\n                eu_process_audio_cmd(cmd);\n            }\n            else if ((cmd->u.s.op & 0x40) != 0) {\n                switch (cmd->u.s.op) {\n                    case 0x41:\n                        seqPlayer->fadeVolumeScale = cmd->u2.as_f32;\n                        seqPlayer->recalculateVolume = TRUE;\n                        break;\n\n                    case 0x47:\n                        seqPlayer->tempo = cmd->u2.as_s32 * TATUMS_PER_BEAT;\n                        break;\n\n                    case 0x48:\n                        seqPlayer->transposition = cmd->u2.as_s8;\n                        break;\n\n                    case 0x46:\n                        seqPlayer->seqVariationEu[cmd->u.s.arg3] = cmd->u2.as_s8;\n                        break;\n                }\n            }\n            else if (seqPlayer->enabled != FALSE && cmd->u.s.arg2 < 0x10) {\n                chan = seqPlayer->channels[cmd->u.s.arg2];\n                if (IS_SEQUENCE_CHANNEL_VALID(chan)) {\n                    switch (cmd->u.s.op) {\n                        case 1:\n                            chan->volumeScale = cmd->u2.as_f32;\n                            chan->changes.as_bitfields.volume = TRUE;\n                            break;\n                        case 2:\n                            chan->volume = cmd->u2.as_f32;\n                            chan->changes.as_bitfields.volume = TRUE;\n                            break;\n                        case 3:\n                            chan->newPan = cmd->u2.as_s8;\n                            chan->changes.as_bitfields.pan = TRUE;\n                            break;\n                        case 4:\n                            chan->freqScale = cmd->u2.as_f32;\n                            chan->changes.as_bitfields.freqScale = TRUE;\n                            break;\n                        case 5:\n                            chan->reverbVol = cmd->u2.as_s8;\n                            break;\n                        case 6:\n                            if (cmd->u.s.arg3 < 8) {\n                                chan->soundScriptIO[cmd->u.s.arg3] = cmd->u2.as_s8;\n                            }\n                            break;\n                        case 8:\n                            chan->stopSomething2 = cmd->u2.as_s8;\n                    }\n                }\n            }\n        }\n\n        cmd->u.s.op = 0;\n    }\n}\n\nvoid port_eu_init(void) {\n    port_eu_init_queues();\n}\n\n#endif\n"
  },
  {
    "path": "src/audio/port_sh.c",
    "content": "#if defined(VERSION_SH) || defined(VERSION_CN)\n// TODO: merge this with port_eu.c\n\n#include <ultra64.h>\n\n#include \"data.h\"\n#include \"heap.h\"\n#include \"load.h\"\n#include \"synthesis.h\"\n#include \"internal.h\"\n#include \"seqplayer.h\"\n\n#define EXTRA_BUFFERED_AI_SAMPLES_TARGET 0x80\n#define SAMPLES_TO_OVERPRODUCE 0x10\n\nextern s32 D_SH_80314FC8;\nextern struct SPTask *D_SH_80314FCC;\nextern u8 D_SH_80315098;\nextern u8 D_SH_8031509C;\nextern OSMesgQueue *D_SH_80350F68;\n\nvoid func_8031D690(s32 playerIndex, s32 numFrames);\nvoid seq_player_fade_to_zero_volume(s32 arg0, s32 numFrames);\nvoid func_802ad7ec(u32 arg0);\n\nstruct SPTask *create_next_audio_frame_task(void) {\n    u32 samplesRemainingInAI;\n    s32 writtenCmds;\n    s32 index;\n    OSTask_t *task;\n    s32 flags;\n    s16 *currAiBuffer;\n    s32 oldDmaCount;\n    s32 sp38;\n    s32 sp34;\n    s32 writtenCmdsCopy;\n\n    gAudioFrameCount++;\n    if (gAudioFrameCount % gAudioBufferParameters.presetUnk4 != 0) {\n        if ((gAudioFrameCount % gAudioBufferParameters.presetUnk4) + 1 == gAudioBufferParameters.presetUnk4) {\n            return D_SH_80314FCC;\n        }\n        return NULL;\n    }\n    osSendMesg(D_SH_80350F38, (OSMesg) gAudioFrameCount, OS_MESG_NOBLOCK);\n\n    gAudioTaskIndex ^= 1;\n    gCurrAiBufferIndex++;\n    gCurrAiBufferIndex %= NUMAIBUFFERS;\n    index = (gCurrAiBufferIndex - 2 + NUMAIBUFFERS) % NUMAIBUFFERS;\n    samplesRemainingInAI = osAiGetLength() / 4;\n\n    if (gAudioLoadLockSH < 0x10U) {\n        if (gAiBufferLengths[index] != 0) {\n            osAiSetNextBuffer(gAiBuffers[index], gAiBufferLengths[index] * 4);\n        }\n    }\n\n    oldDmaCount = gCurrAudioFrameDmaCount;\n    if (oldDmaCount > AUDIO_FRAME_DMA_QUEUE_SIZE) {\n    }\n    gCurrAudioFrameDmaCount = 0;\n\n    decrease_sample_dma_ttls();\n    func_sh_802f41e4(gAudioResetStatus);\n    if (osRecvMesg(D_SH_80350F88, (OSMesg *) &sp38, OS_MESG_NOBLOCK) != -1) {\n        if (gAudioResetStatus == 0) {\n            gAudioResetStatus = 5;\n        }\n        gAudioResetPresetIdToLoad = (u8) sp38;\n    }\n\n    if (gAudioResetStatus != 0) {\n        if (audio_shut_down_and_reset_step() == 0) {\n            if (gAudioResetStatus == 0) {\n                osSendMesg(D_SH_80350FA8, (OSMesg) (s32) gAudioResetPresetIdToLoad, OS_MESG_NOBLOCK);\n            }\n            D_SH_80314FCC = 0;\n            return NULL;\n        }\n    }\n    if (gAudioLoadLockSH >= 0x11U) {\n        return NULL;\n    }\n    if (gAudioLoadLockSH != 0) {\n        gAudioLoadLockSH++;\n    }\n\n    gAudioTask = &gAudioTasks[gAudioTaskIndex];\n    gAudioCmd = (u64 *) gAudioCmdBuffers[gAudioTaskIndex];\n    index = gCurrAiBufferIndex;\n    currAiBuffer = gAiBuffers[index];\n\n    gAiBufferLengths[index] = (s16) ((((gAudioBufferParameters.samplesPerFrameTarget - samplesRemainingInAI) +\n         EXTRA_BUFFERED_AI_SAMPLES_TARGET) & ~0xf) + SAMPLES_TO_OVERPRODUCE);\n    if (gAiBufferLengths[index] < gAudioBufferParameters.minAiBufferLength) {\n        gAiBufferLengths[index] = gAudioBufferParameters.minAiBufferLength;\n    }\n    if (gAiBufferLengths[index] > gAudioBufferParameters.maxAiBufferLength) {\n        gAiBufferLengths[index] = gAudioBufferParameters.maxAiBufferLength;\n    }\n\n    if (osRecvMesg(D_SH_80350F68, (OSMesg *) &sp34, 0) != -1) {\n        do {\n            func_802ad7ec(sp34);\n        } while (osRecvMesg(D_SH_80350F68, (OSMesg *) &sp34, 0) != -1);\n    }\n\n    flags = 0;\n    gAudioCmd = synthesis_execute(gAudioCmd, &writtenCmds, currAiBuffer, gAiBufferLengths[index]);\n    gAudioRandom = (u32) (osGetCount() * (gAudioRandom + gAudioFrameCount));\n    gAudioRandom = (u32) (gAiBuffers[index][gAudioFrameCount & 0xFF] + gAudioRandom);\n\n    index = gAudioTaskIndex;\n    gAudioTask->msgqueue = NULL;\n    gAudioTask->msg = NULL;\n\n    task = &gAudioTask->task.t;\n    task->type = M_AUDTASK;\n    task->flags = flags;\n    task->ucode_boot = rspF3DBootStart;\n    task->ucode_boot_size = (u8 *) rspF3DStart - (u8 *) rspF3DBootStart;\n    task->ucode = rspAspMainStart;\n    task->ucode_data = rspAspMainDataStart;\n    task->ucode_size = 0x1000;\n    task->ucode_data_size = (rspAspMainDataEnd - rspAspMainDataStart) * sizeof(u64);\n    task->dram_stack = NULL;\n    task->dram_stack_size = 0;\n    task->output_buff = NULL;\n    task->output_buff_size = NULL;\n    task->data_ptr = gAudioCmdBuffers[index];\n    task->data_size = writtenCmds * sizeof(u64);\n    task->yield_data_ptr = NULL;\n    task->yield_data_size = 0;\n\n    writtenCmdsCopy = writtenCmds;\n    if (D_SH_80314FC8 < writtenCmdsCopy) {\n        D_SH_80314FC8 = writtenCmdsCopy;\n    }\n\n    if (gAudioBufferParameters.presetUnk4 == 1) {\n        return gAudioTask;\n    } else {\n        D_SH_80314FCC = gAudioTask;\n        return NULL;\n    }\n}\n\nvoid eu_process_audio_cmd(struct EuAudioCmd *cmd) {\n    s32 i;\n    struct Note *note;\n    struct NoteSubEu *sub;\n\n    switch (cmd->u.s.op) {\n        case 0x81:\n            preload_sequence(cmd->u.s.arg2, 3);\n            break;\n\n        case 0x82:\n        case 0x88:\n            load_sequence(cmd->u.s.arg1, cmd->u.s.arg2, cmd->u.s.arg3);\n            func_8031D690(cmd->u.s.arg1, cmd->u2.as_s32);\n            break;\n\n        case 0x83:\n            if (gSequencePlayers[cmd->u.s.arg1].enabled != FALSE) {\n                if (cmd->u2.as_s32 == 0) {\n                    sequence_player_disable(&gSequencePlayers[cmd->u.s.arg1]);\n                }\n                else {\n                    seq_player_fade_to_zero_volume(cmd->u.s.arg1, cmd->u2.as_s32);\n                }\n            }\n            break;\n\n        case 0x84:\n            break;\n\n        case 0xf0:\n            gSoundMode = cmd->u2.as_s32;\n            break;\n\n        case 0xf1:\n            for (i = 0; i < 4; i++) {\n                gSequencePlayers[i].muted = TRUE;\n                gSequencePlayers[i].recalculateVolume = TRUE;\n            }\n            break;\n\n        case 0xf2:\n            if (cmd->u2.as_s32 == 1) {\n                for (i = 0; i < gMaxSimultaneousNotes; i++) {\n                    note = &gNotes[i];\n                    sub = &note->noteSubEu;\n                    if (note->noteSubEu.enabled && note->unkSH34 == 0) {\n                        if ((note->parentLayer->seqChannel->muteBehavior & 8) != 0) {\n                            sub->finished = TRUE;\n                        }\n                    }\n                }\n            }\n            for (i = 0; i < 4; i++) {\n                gSequencePlayers[i].muted = FALSE;\n                gSequencePlayers[i].recalculateVolume = TRUE;\n            }\n            break;\n\n        case 0xf3:\n            func_sh_802f3024(cmd->u.s.arg1, cmd->u.s.arg2, cmd->u.s.arg3);\n            break;\n\n        case 0xf4:\n            func_sh_802f30f4(cmd->u.s.arg1, cmd->u.s.arg2, cmd->u.s.arg3, &gUnkQueue1);\n            break;\n\n        case 0xf5:\n            func_sh_802f3158(cmd->u.s.arg1, cmd->u.s.arg2, cmd->u.s.arg3, &gUnkQueue1);\n            break;\n\n        case 0xf6:\n            func_sh_802f3288(cmd->u.s.arg2);\n            break;\n    }\n}\n\nvoid seq_player_fade_to_zero_volume(s32 arg0, s32 fadeOutTime) {\n    struct SequencePlayer *player;\n\n    if (fadeOutTime == 0) {\n        fadeOutTime = 1;\n    }\n    player = &gSequencePlayers[arg0];\n    player->state = 2;\n    player->fadeRemainingFrames = fadeOutTime;\n    player->fadeVelocity = -(player->fadeVolume / (f32) fadeOutTime);\n}\n\nvoid func_8031D690(s32 playerIndex, s32 fadeInTime) {\n    struct SequencePlayer *player;\n\n    if (fadeInTime != 0) {\n        player = &gSequencePlayers[playerIndex];\n        player->state = 1;\n        player->fadeTimerUnkEu = fadeInTime;\n        player->fadeRemainingFrames = fadeInTime;\n        player->fadeVolume = 0.0f;\n        player->fadeVelocity = 0.0f;\n    }\n}\n\nvoid port_eu_init_queues(void) {\n    D_SH_80350F18 = 0;\n    D_SH_80350F19 = 0;\n    D_SH_80350F38 = &D_SH_80350F20;\n    D_SH_80350F68 = &D_SH_80350F50;\n    D_SH_80350F88 = &D_SH_80350F70;\n    D_SH_80350FA8 = &D_SH_80350F90;\n    osCreateMesgQueue(D_SH_80350F38, D_SH_80350F1C, 1);\n    osCreateMesgQueue(D_SH_80350F68, D_SH_80350F40, 4);\n    osCreateMesgQueue(D_SH_80350F88, D_SH_80350F6C, 1);\n    osCreateMesgQueue(D_SH_80350FA8, D_SH_80350F8C, 1);\n}\n\nextern struct EuAudioCmd sAudioCmd[0x100];\nvoid func_802ad6f0(s32 arg0, s32 *arg1) {\n    struct EuAudioCmd *cmd = &sAudioCmd[D_SH_80350F18 & 0xff];\n    cmd->u.first = arg0;\n    cmd->u2.as_u32 = *arg1;\n    D_SH_80350F18++;\n    if (D_SH_80350F18 == D_SH_80350F19) {\n        D_SH_80350F18--;\n    }\n}\n\nvoid func_802ad728(u32 arg0, f32 arg1) {\n    func_802ad6f0(arg0, (s32 *) &arg1);\n}\n\nvoid func_802ad74c(u32 arg0, u32 arg1) {\n    func_802ad6f0(arg0, (s32 *) &arg1);\n}\n\nvoid func_802ad770(u32 arg0, s8 arg1) {\n    s32 sp1C = arg1 << 24;\n    func_802ad6f0(arg0, &sp1C);\n}\n\nchar shindouDebugPrint133[] = \"AudioSend: %d -> %d (%d)\\n\";\n\nvoid func_sh_802F64C8(void) {\n    static s32 D_SH_8031503C = 0;\n    s32 mesg;\n\n    if (((D_SH_80350F18 - D_SH_80350F19 + 0x100) & 0xff) > D_SH_8031503C) {\n        D_SH_8031503C = (D_SH_80350F18 - D_SH_80350F19 + 0x100) & 0xff;\n    }\n    mesg = ((D_SH_80350F19 & 0xff) << 8) | (D_SH_80350F18 & 0xff);\n    osSendMesg(D_SH_80350F68, (OSMesg)mesg, OS_MESG_NOBLOCK);\n    D_SH_80350F19 = D_SH_80350F18;\n}\n\nvoid func_sh_802f6540(void) {\n    D_SH_80350F19 = D_SH_80350F18;\n}\n\nvoid func_802ad7ec(u32 arg0) {\n    struct EuAudioCmd *cmd;\n    struct SequencePlayer *seqPlayer;\n    struct SequenceChannel *chan;\n    u8 end;\n\n    UNUSED static char shindouDebugPrint134[] = \"Continue Port\\n\";\n    UNUSED static char shindouDebugPrint135[] = \"%d -> %d\\n\";\n    UNUSED static char shindouDebugPrint136[] = \"Sync-Frame  Break. (Remain %d)\\n\";\n    UNUSED static char shindouDebugPrint137[] = \"Undefined Port Command %d\\n\";\n\n    static u8 D_SH_80315098 = 0;\n    static u8 D_SH_8031509C = 0;\n\n    if (D_SH_8031509C == 0) {\n        D_SH_80315098 = (arg0 >> 8) & 0xff;\n    }\n\n    end = arg0 & 0xff;\n\n    for (;;) {\n        if (D_SH_80315098 == end) {\n            D_SH_8031509C = 0;\n            break;\n        }\n        cmd = &sAudioCmd[D_SH_80315098 & 0xff];\n        D_SH_80315098++;\n        if (cmd->u.s.op == 0xf8) {\n            D_SH_8031509C = 1;\n            break;\n        }\n        else if ((cmd->u.s.op & 0xf0) == 0xf0) {\n            eu_process_audio_cmd(cmd);\n        }\n        else if (cmd->u.s.arg1 < SEQUENCE_PLAYERS) {\n            seqPlayer = &gSequencePlayers[cmd->u.s.arg1];\n            if ((cmd->u.s.op & 0x80) != 0) {\n                eu_process_audio_cmd(cmd);\n            }\n            else if ((cmd->u.s.op & 0x40) != 0) {\n                switch (cmd->u.s.op) {\n                    case 0x41:\n                        if (seqPlayer->fadeVolumeScale != cmd->u2.as_f32) {\n                            seqPlayer->fadeVolumeScale = cmd->u2.as_f32;\n                            seqPlayer->recalculateVolume = TRUE;\n                        }\n                        break;\n\n                    case 0x47:\n                        seqPlayer->tempo = cmd->u2.as_s32 * TATUMS_PER_BEAT;\n                        break;\n\n                    case 0x49:\n                        seqPlayer->tempoAdd = cmd->u2.as_s32 * TEMPO_SCALE;\n                        break;\n\n                    case 0x48:\n                        seqPlayer->transposition = cmd->u2.as_s8;\n                        break;\n\n                    case 0x46:\n                        seqPlayer->seqVariationEu[cmd->u.s.arg3] = cmd->u2.as_s8;\n                        break;\n                }\n            }\n            else if (seqPlayer->enabled != FALSE && cmd->u.s.arg2 < 0x10) {\n                chan = seqPlayer->channels[cmd->u.s.arg2];\n                if (IS_SEQUENCE_CHANNEL_VALID(chan)) {\n                    switch (cmd->u.s.op) {\n                        case 1:\n                            if (chan->volumeScale != cmd->u2.as_f32) {\n                                chan->volumeScale = cmd->u2.as_f32;\n                                chan->changes.as_bitfields.volume = TRUE;\n                            }\n                            break;\n                        case 2:\n                            if (chan->volume != cmd->u2.as_f32) {\n                                chan->volume = cmd->u2.as_f32;\n                                chan->changes.as_bitfields.volume = TRUE;\n                            }\n                            break;\n                        case 3:\n                            if (chan->newPan != cmd->u2.as_s8) {\n                                chan->newPan = cmd->u2.as_s8;\n                                chan->changes.as_bitfields.pan = TRUE;\n                            }\n                            break;\n                        case 4:\n                            if (chan->freqScale != cmd->u2.as_f32) {\n                                chan->freqScale = cmd->u2.as_f32;\n                                chan->changes.as_bitfields.freqScale = TRUE;\n                            }\n                            break;\n                        case 5:\n                            //! @bug u8 s8 comparison (but harmless)\n                            if (chan->reverbVol != cmd->u2.as_s8) {\n                                chan->reverbVol = cmd->u2.as_s8;\n                            }\n                            break;\n                        case 6:\n                            if (cmd->u.s.arg3 < 8) {\n                                chan->soundScriptIO[cmd->u.s.arg3] = cmd->u2.as_s8;\n                            }\n                            break;\n                        case 8:\n                            chan->stopSomething2 = cmd->u2.as_s8;\n                            break;\n                        case 9:\n                            chan->muteBehavior = cmd->u2.as_s8;\n                    }\n                }\n            }\n        }\n\n        cmd->u.s.op = 0;\n    }\n}\n\nu32 func_sh_802f6878(s32 *arg0) {\n    u32 sp1C;\n\n    if (osRecvMesg(&gUnkQueue1, (OSMesg *) &sp1C, 0) == -1) {\n        *arg0 = 0;\n        return 0U;\n    }\n    *arg0 = (s32) (sp1C & 0xFFFFFF);\n    return sp1C >> 0x18;\n}\n\nu8 *func_sh_802f68e0(u32 index, u32 *a1) {\n    return func_sh_802f3220(index, a1);\n}\n\ns32 func_sh_802f6900(void) {\n    s32 ret;\n    s32 sp18;\n\n    ret = osRecvMesg(D_SH_80350FA8, (OSMesg *) &sp18, 0);\n\n    if (ret == -1) {\n        return 0;\n    }\n    if (sp18 != gAudioResetPresetIdToLoad) {\n        return 0;\n    } else {\n        return 1;\n    }\n}\n\n// TODO: (Scrub C)\nvoid func_sh_802f6958(OSMesg mesg) {\n    s32 a;\n    OSMesg recvMesg;\n\n    do {\n        a = -1;\n    } while (osRecvMesg(D_SH_80350FA8, &recvMesg, OS_MESG_NOBLOCK) != a);\n    func_sh_802f6540();\n    osSendMesg(D_SH_80350F88, mesg, OS_MESG_NOBLOCK);\n}\n\nvoid func_sh_802f69cc(void) {\n    gAudioLoadLockSH = 1;\n    func_sh_802f6958(0);\n    gAudioResetStatus = 0;\n}\n\ns32 func_sh_802f6a08(s32 playerIndex, s32 channelIndex, s32 soundScriptIOIndex) {\n    struct SequenceChannel *seqChannel;\n    struct SequencePlayer *player;\n\n    player = &gSequencePlayers[playerIndex];\n    if (player->enabled) {\n        seqChannel = player->channels[channelIndex];\n        if (IS_SEQUENCE_CHANNEL_VALID(seqChannel)) {\n            return seqChannel->soundScriptIO[soundScriptIOIndex];\n        }\n    }\n    return -1;\n}\n\ns8 func_sh_802f6a6c(s32 playerIndex, s32 index) {\n    return gSequencePlayers[playerIndex].seqVariationEu[index];\n}\n\nvoid port_eu_init(void) {\n    port_eu_init_queues();\n}\n\nchar shindouDebugPrint138[] = \"specchg conjunction error (Msg:%d Cur:%d)\\n\";\nchar shindouDebugPrint139[] = \"Error : Queue is not empty ( %x ) \\n\";\nchar shindouDebugPrint140[] = \"Audio: setvol: volume minus %f\\n\";\nchar shindouDebugPrint141[] = \"Audio: setvol: volume overflow %f\\n\";\nchar shindouDebugPrint142[] = \"Audio: setpitch: pitch zero or minus %f\\n\";\nchar shindouDebugPrint143[] = \"----------------------Double-Error CH: %x %f\\n\";\nchar shindouDebugPrint144[] = \"----------------------Double-Error NT: %x\\n\";\nchar shindouDebugPrint145[] = \"CAUTION:SUB IS SEPARATED FROM GROUP\\n\";\nchar shindouDebugPrint146[] = \"CAUTION:PAUSE EMERGENCY\\n\";\nchar shindouDebugPrint147[] = \"Error:Wait Track disappear\\n\";\nchar shindouDebugPrint148[] = \"Audio: voiceman: No bank error %d\\n\";\nchar shindouDebugPrint149[] = \"Audio: voiceman: progNo. overflow %d,%d\\n\";\nchar shindouDebugPrint150[] = \"ptr2 %x\\n\";\nchar shindouDebugPrint151[] = \"Audio: voiceman: progNo. undefined %d,%d\\n\";\nchar shindouDebugPrint152[] = \"Audio: voiceman: No bank error %d\\n\";\nchar shindouDebugPrint153[] = \"Audio: voiceman: Percussion Overflow %d,%d\\n\";\nchar shindouDebugPrint154[] = \"Audio: voiceman: Percussion table pointer (bank %d) is irregular %x.\\n\";\nchar shindouDebugPrint155[] = \"Audio: voiceman: Percpointer NULL %d,%d\\n\";\nchar shindouDebugPrint156[] = \"--4 %x\\n\";\nchar shindouDebugPrint157[] = \"NoteOff Comes during wait release %x (note %x)\\n\";\nchar shindouDebugPrint158[] = \"Slow Release Batting\\n\";\nu8 euUnknownData_8030194c[4] = { 0x40, 0x20, 0x10, 0x08 };\nchar shindouDebugPrint159[] = \"Audio:Wavemem: Bad voiceno (%d)\\n\";\nchar shindouDebugPrint160[] = \"Audio: C-Alloc : Dealloc voice is NULL\\n\";\nchar shindouDebugPrint161[] = \"Alloc Error:Dim voice-Alloc %d\";\nchar shindouDebugPrint162[] = \"Error:Same List Add\\n\";\nchar shindouDebugPrint163[] = \"Already Cut\\n\";\nchar shindouDebugPrint164[] = \"Audio: C-Alloc : lowerPrio is NULL\\n\";\nchar shindouDebugPrint165[] = \"Intterupt UseStop %d (Kill %d)\\n\";\nchar shindouDebugPrint166[] = \"Intterupt RelWait %d (Kill %d)\\n\";\nchar shindouDebugPrint167[] = \"Drop Voice (Prio %x)\\n\";\ns32 D_SH_803154CC = 0; // file boundary\n\n// effects.c\nchar shindouDebugPrint168[] = \"Audio:Envp: overflow  %f\\n\";\ns32 D_SH_803154EC = 0; // file boundary\n\n// seqplayer.c\nchar shindouDebugPrint169[] = \"Audio:Track:Warning: No Free Notetrack\\n\";\nchar shindouDebugPrint170[] = \"SUBTRACK DIM\\n\";\nchar shindouDebugPrint171[] = \"Audio:Track: Warning :SUBTRACK had been stolen by other Group.\\n\";\nchar shindouDebugPrint172[] = \"SEQID %d,BANKID %d\\n\";\nchar shindouDebugPrint173[] = \"ERR:SUBTRACK %d NOT ALLOCATED\\n\";\nchar shindouDebugPrint174[] = \"Stop Release\\n\";\nchar shindouDebugPrint175[] = \"Error:Same List Add\\n\";\nchar shindouDebugPrint176[] = \"Wait Time out!\\n\";\nchar shindouDebugPrint177[] = \"Macro Level Over Error!\\n\";\nchar shindouDebugPrint178[] = \"Macro Level Over Error!\\n\"; // Again\nchar shindouDebugPrint179[] = \"WARNING: NPRG: cannot change %d\\n\";\nchar shindouDebugPrint180[] = \"Audio:Track:NOTE:UNDEFINED NOTE COM. %x\\n\";\nchar shindouDebugPrint181[] = \"Error: Subtrack no prg.\\n\";\nchar shindouDebugPrint182[] = \"ERR %x\\n\";\nchar shindouDebugPrint183[] = \"Note OverFlow %d\\n\";\nchar shindouDebugPrint184[] = \"trs %d , %d, %d\\n\";\nchar shindouDebugPrint185[] = \"Audio: Note:Velocity Error %d\\n\";\nchar shindouDebugPrint186[] = \"Audio:Track :Call Macro Level Over Error!\\n\";\nchar shindouDebugPrint187[] = \"Audio:Track :Loops Macro Level Over Error!\\n\";\nchar shindouDebugPrint188[] = \"SUB:ERR:BANK %d NOT CACHED.\\n\";\nchar shindouDebugPrint189[] = \"SUB:ERR:BANK %d NOT CACHED.\\n\";\nchar shindouDebugPrint190[] = \"Audio:Track: CTBLCALL Macro Level Over Error!\\n\";\nchar shindouDebugPrint191[] = \"Set Noise %d\\n\";\nchar shindouDebugPrint192[] = \"[%2x] \\n\";\nchar shindouDebugPrint193[] = \"Err :Sub %x ,address %x:Undefined SubTrack Function %x\";\nchar shindouDebugPrint194[] = \"VoiceLoad Error Bank:%d,Prog:%d\\n\";\nchar shindouDebugPrint195[] = \"Disappear Sequence or Bank %d\\n\";\nchar shindouDebugPrint196[] = \"[FIN] group.\\n\";\nchar shindouDebugPrint197[] = \"Macro Level Over Error!\\n\";\nchar shindouDebugPrint198[] = \"Macro Level Over Error!\\n\";\nchar shindouDebugPrint199[] = \"Group:Undefine upper C0h command (%x)\\n\";\nchar shindouDebugPrint200[] = \"Group:Undefined Command\\n\";\n\n#endif\n"
  },
  {
    "path": "src/audio/seqplayer.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"data.h\"\n#include \"effects.h\"\n#include \"external.h\"\n#include \"heap.h\"\n#include \"load.h\"\n#include \"seqplayer.h\"\n\n#define PORTAMENTO_IS_SPECIAL(x) ((x).mode & 0x80)\n#define PORTAMENTO_MODE(x) ((x).mode & ~0x80)\n#define PORTAMENTO_MODE_1 1\n#define PORTAMENTO_MODE_2 2\n#define PORTAMENTO_MODE_3 3\n#define PORTAMENTO_MODE_4 4\n#define PORTAMENTO_MODE_5 5\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\nvoid seq_channel_layer_process_script_part1(struct SequenceChannelLayer *layer);\ns32 seq_channel_layer_process_script_part2(struct SequenceChannelLayer *layer);\ns32 seq_channel_layer_process_script_part3(struct SequenceChannelLayer *layer, s32 cmd);\ns32 seq_channel_layer_process_script_part4(struct SequenceChannelLayer *layer, s32 cmd);\ns32 seq_channel_layer_process_script_part5(struct SequenceChannelLayer *layer, s32 cmd);\n#endif\nvoid seq_channel_layer_process_script(struct SequenceChannelLayer *layer);\nvoid sequence_channel_process_script(struct SequenceChannel *seqChannel);\nu8 get_instrument(struct SequenceChannel *seqChannel, u8 instId, struct Instrument **instOut,\n                  struct AdsrSettings *adsr);\n\nvoid sequence_channel_init(struct SequenceChannel *seqChannel) {\n    s32 i;\n\n    seqChannel->enabled = FALSE;\n    seqChannel->finished = FALSE;\n    seqChannel->stopScript = FALSE;\n    seqChannel->stopSomething2 = FALSE;\n    seqChannel->hasInstrument = FALSE;\n    seqChannel->stereoHeadsetEffects = FALSE;\n    seqChannel->transposition = 0;\n    seqChannel->largeNotes = FALSE;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    seqChannel->bookOffset = 0;\n    seqChannel->changes.as_u8 = 0xff;\n    seqChannel->scriptState.depth = 0;\n    seqChannel->newPan = 0x40;\n    seqChannel->panChannelWeight = 0x80;\n    seqChannel->noteUnused = NULL;\n    seqChannel->reverbIndex = 0;\n#else\n    seqChannel->scriptState.depth = 0;\n    seqChannel->volume = 1.0f;\n    seqChannel->volumeScale = 1.0f;\n    seqChannel->freqScale = 1.0f;\n    seqChannel->pan = 0.5f;\n    seqChannel->panChannelWeight = 1.0f;\n    seqChannel->noteUnused = NULL;\n#endif\n    seqChannel->reverbVol = 0;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    seqChannel->synthesisVolume = 0;\n#endif\n    seqChannel->notePriority = NOTE_PRIORITY_DEFAULT;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    seqChannel->unkSH06 = 1;\n#endif\n    seqChannel->delay = 0;\n    seqChannel->adsr.envelope = gDefaultEnvelope;\n    seqChannel->adsr.releaseRate = 0x20;\n    seqChannel->adsr.sustain = 0;\n#if defined(VERSION_JP) || defined(VERSION_US)\n    seqChannel->updatesPerFrameUnused = gAudioUpdatesPerFrame;\n#endif\n    seqChannel->vibratoRateTarget = 0x800;\n    seqChannel->vibratoRateStart = 0x800;\n    seqChannel->vibratoExtentTarget = 0;\n    seqChannel->vibratoExtentStart = 0;\n    seqChannel->vibratoRateChangeDelay = 0;\n    seqChannel->vibratoExtentChangeDelay = 0;\n    seqChannel->vibratoDelay = 0;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    seqChannel->filter = NULL;\n#endif\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    seqChannel->volume = 1.0f;\n    seqChannel->volumeScale = 1.0f;\n    seqChannel->freqScale = 1.0f;\n#endif\n\n    for (i = 0; i < 8; i++) {\n        seqChannel->soundScriptIO[i] = -1;\n    }\n\n    seqChannel->unused = FALSE;\n    init_note_lists(&seqChannel->notePool);\n}\n\ns32 seq_channel_set_layer(struct SequenceChannel *seqChannel, s32 layerIndex) {\n    struct SequenceChannelLayer *layer;\n\n    if (seqChannel->layers[layerIndex] == NULL) {\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n        struct SequenceChannelLayer *layer;\n#endif\n        layer = audio_list_pop_back(&gLayerFreeList);\n        seqChannel->layers[layerIndex] = layer;\n        if (layer == NULL) {\n            seqChannel->layers[layerIndex] = NULL;\n            return -1;\n        }\n    } else {\n        seq_channel_layer_note_decay(seqChannel->layers[layerIndex]);\n    }\n\n    layer = seqChannel->layers[layerIndex];\n    layer->seqChannel = seqChannel;\n    layer->adsr = seqChannel->adsr;\n    layer->adsr.releaseRate = 0;\n    layer->enabled = TRUE;\n    layer->stopSomething = FALSE;\n    layer->continuousNotes = FALSE;\n    layer->finished = FALSE;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    layer->ignoreDrumPan = FALSE;\n#endif\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    layer->reverbBits.asByte = 0x40;\n#endif\n    layer->portamento.mode = 0;\n    layer->scriptState.depth = 0;\n    layer->status = SOUND_LOAD_STATUS_NOT_LOADED;\n    layer->noteDuration = 0x80;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    layer->pan = 0x40;\n#endif\n    layer->transposition = 0;\n    layer->delay = 0;\n    layer->duration = 0;\n    layer->delayUnused = 0;\n    layer->note = NULL;\n    layer->instrument = NULL;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    layer->freqScale = 1.0f;\n    layer->velocitySquare = 0.0f;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    layer->freqScaleMultiplier = 1.0f;\n#endif\n    layer->instOrWave = 0xff;\n#else\n    layer->velocitySquare = 0.0f;\n    layer->pan = 0.5f;\n#endif\n    return 0;\n}\n\nvoid seq_channel_layer_disable(struct SequenceChannelLayer *layer) {\n    if (layer != NULL) {\n        seq_channel_layer_note_decay(layer);\n        layer->enabled = FALSE;\n        layer->finished = TRUE;\n    }\n}\n\nvoid seq_channel_layer_free(struct SequenceChannel *seqChannel, s32 layerIndex) {\n    struct SequenceChannelLayer *layer = seqChannel->layers[layerIndex];\n\n    if (layer != NULL) {\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n        audio_list_push_back(&gLayerFreeList, &layer->listItem);\n#else\n        struct AudioListItem *item = &layer->listItem;\n        if (item->prev == NULL) {\n            gLayerFreeList.prev->next = item;\n            item->prev = gLayerFreeList.prev;\n            item->next = &gLayerFreeList;\n            gLayerFreeList.prev = item;\n            gLayerFreeList.u.count++;\n            item->pool = gLayerFreeList.pool;\n        }\n#endif\n        seq_channel_layer_disable(layer);\n        seqChannel->layers[layerIndex] = NULL;\n    }\n}\n\nvoid sequence_channel_disable(struct SequenceChannel *seqChannel) {\n    s32 i;\n    for (i = 0; i < LAYERS_MAX; i++) {\n        seq_channel_layer_free(seqChannel, i);\n    }\n\n    note_pool_clear(&seqChannel->notePool);\n    seqChannel->enabled = FALSE;\n    seqChannel->finished = TRUE;\n}\n\nstruct SequenceChannel *allocate_sequence_channel(void) {\n    s32 i;\n    for (i = 0; i < ARRAY_COUNT(gSequenceChannels); i++) {\n        if (gSequenceChannels[i].seqPlayer == NULL) {\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n            return &gSequenceChannels[i];\n#else\n            return gSequenceChannels + i;\n#endif\n        }\n    }\n    return &gSequenceChannelNone;\n}\n\nvoid sequence_player_init_channels(struct SequencePlayer *seqPlayer, u16 channelBits) {\n    struct SequenceChannel *seqChannel;\n    s32 i;\n\n    for (i = 0; i < CHANNELS_MAX; i++) {\n        if (channelBits & 1) {\n            seqChannel = seqPlayer->channels[i];\n            if (IS_SEQUENCE_CHANNEL_VALID(seqChannel) == TRUE && seqChannel->seqPlayer == seqPlayer) {\n                sequence_channel_disable(seqChannel);\n                seqChannel->seqPlayer = NULL;\n            }\n            seqChannel = allocate_sequence_channel();\n            if (IS_SEQUENCE_CHANNEL_VALID(seqChannel) == FALSE) {\n                eu_stubbed_printf_0(\"Audio:Track:Warning: No Free Notetrack\\n\");\n                gAudioErrorFlags = i + 0x10000;\n                seqPlayer->channels[i] = seqChannel;\n            } else {\n                sequence_channel_init(seqChannel);\n                seqPlayer->channels[i] = seqChannel;\n                seqChannel->seqPlayer = seqPlayer;\n                seqChannel->bankId = seqPlayer->defaultBank[0];\n                seqChannel->muteBehavior = seqPlayer->muteBehavior;\n                seqChannel->noteAllocPolicy = seqPlayer->noteAllocPolicy;\n            }\n        }\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n        channelBits = channelBits >> 1;\n#else\n        channelBits >>= 1;\n#endif\n    }\n}\n\nvoid sequence_player_disable_channels(struct SequencePlayer *seqPlayer, u16 channelBits) {\n    struct SequenceChannel *seqChannel;\n    s32 i;\n\n    eu_stubbed_printf_0(\"SUBTRACK DIM\\n\");\n    for (i = 0; i < CHANNELS_MAX; i++) {\n        if (channelBits & 1) {\n            seqChannel = seqPlayer->channels[i];\n            if (IS_SEQUENCE_CHANNEL_VALID(seqChannel) == TRUE) {\n                if (seqChannel->seqPlayer == seqPlayer) {\n                    sequence_channel_disable(seqChannel);\n                    seqChannel->seqPlayer = NULL;\n                }\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                else {\n#ifdef VERSION_EU\n                    stubbed_printf(\"Audio:Track: Warning SUBTRACK PARENT CHANGED\\n\");\n#endif\n                }\n#endif\n                seqPlayer->channels[i] = &gSequenceChannelNone;\n            }\n        }\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n        channelBits = channelBits >> 1;\n#else\n        channelBits >>= 1;\n#endif\n    }\n}\n\nvoid sequence_channel_enable(struct SequencePlayer *seqPlayer, u8 channelIndex, void *script) {\n    struct SequenceChannel *seqChannel = seqPlayer->channels[channelIndex];\n    s32 i;\n    if (IS_SEQUENCE_CHANNEL_VALID(seqChannel) == FALSE) {\n#ifdef VERSION_EU\n        struct SequencePlayer *bgMusic = &gSequencePlayers[0];\n        struct SequencePlayer *miscMusic = &gSequencePlayers[1];\n\n        if (seqPlayer == bgMusic) {\n            stubbed_printf(\"GROUP 0:\");\n        } else if (seqPlayer == miscMusic) {\n            stubbed_printf(\"GROUP 1:\");\n        } else {\n            stubbed_printf(\"SEQID %d,BANKID %d\\n\",\n                    seqPlayer->seqId, seqPlayer->defaultBank[0]);\n        }\n        stubbed_printf(\"ERR:SUBTRACK %d NOT ALLOCATED\\n\", channelIndex);\n#endif\n    } else {\n        seqChannel->enabled = TRUE;\n        seqChannel->finished = FALSE;\n        seqChannel->scriptState.depth = 0;\n        seqChannel->scriptState.pc = script;\n        seqChannel->delay = 0;\n        for (i = 0; i < LAYERS_MAX; i++) {\n            if (seqChannel->layers[i] != NULL) {\n                seq_channel_layer_free(seqChannel, i);\n            }\n        }\n    }\n}\n\nvoid sequence_player_disable(struct SequencePlayer *seqPlayer) {\n    sequence_player_disable_channels(seqPlayer, 0xffff);\n    note_pool_clear(&seqPlayer->notePool);\n    seqPlayer->finished = TRUE;\n    seqPlayer->enabled = FALSE;\n\n    if (IS_SEQ_LOAD_COMPLETE(seqPlayer->seqId)\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        && gSeqLoadStatus[seqPlayer->seqId] != 5\n#endif\n    ) {\n        gSeqLoadStatus[seqPlayer->seqId] = SOUND_LOAD_STATUS_DISCARDABLE;\n    }\n\n    if (IS_BANK_LOAD_COMPLETE(seqPlayer->defaultBank[0])\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        && gBankLoadStatus[seqPlayer->defaultBank[0]] != 5\n#endif\n    ) {\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        gBankLoadStatus[seqPlayer->defaultBank[0]] = 4;\n#else\n        gBankLoadStatus[seqPlayer->defaultBank[0]] = SOUND_LOAD_STATUS_DISCARDABLE;\n#endif\n    }\n\n    // (Note that if this is called from alloc_bank_or_seq, the side will get swapped\n    // later in that function. Thus, we signal that we want to load into the slot\n    // of the bank that we no longer need.)\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    if (seqPlayer->defaultBank[0] == gBankLoadedPool.temporary.entries[0].id) {\n        gBankLoadedPool.temporary.nextSide = 1;\n    } else if (seqPlayer->defaultBank[0] == gBankLoadedPool.temporary.entries[1].id) {\n        gBankLoadedPool.temporary.nextSide = 0;\n    }\n#else\n    if (gBankLoadedPool.temporary.entries[0].id == seqPlayer->defaultBank[0]) {\n        gBankLoadedPool.temporary.nextSide = 1;\n    } else if (gBankLoadedPool.temporary.entries[1].id == seqPlayer->defaultBank[0]) {\n        gBankLoadedPool.temporary.nextSide = 0;\n    }\n#endif\n}\n\n/**\n * Add an item to the end of a list, if it's not already in any list.\n */\nvoid audio_list_push_back(struct AudioListItem *list, struct AudioListItem *item) {\n    if (item->prev != NULL) {\n        eu_stubbed_printf_0(\"Error:Same List Add\\n\");\n    } else {\n        list->prev->next = item;\n        item->prev = list->prev;\n        item->next = list;\n        list->prev = item;\n        list->u.count++;\n        item->pool = list->pool;\n    }\n}\n\n/**\n * Remove the last item from a list, and return it (or NULL if empty).\n */\nvoid *audio_list_pop_back(struct AudioListItem *list) {\n    struct AudioListItem *item = list->prev;\n    if (item == list) {\n        return NULL;\n    }\n    item->prev->next = list;\n    list->prev = item->prev;\n    item->prev = NULL;\n    list->u.count--;\n    return item->u.value;\n}\n\nvoid init_layer_freelist(void) {\n    s32 i;\n\n    gLayerFreeList.prev = &gLayerFreeList;\n    gLayerFreeList.next = &gLayerFreeList;\n    gLayerFreeList.u.count = 0;\n    gLayerFreeList.pool = NULL;\n\n    for (i = 0; i < ARRAY_COUNT(gSequenceLayers); i++) {\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n        gSequenceLayers[i].listItem.u.value = &gSequenceLayers[i];\n#else\n        gSequenceLayers[i].listItem.u.value = gSequenceLayers + i;\n#endif\n        gSequenceLayers[i].listItem.prev = NULL;\n        audio_list_push_back(&gLayerFreeList, &gSequenceLayers[i].listItem);\n    }\n}\n\nu8 m64_read_u8(struct M64ScriptState *state) {\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    return *(state->pc++);\n#else\n    u8 *midiArg = state->pc++;\n    return *midiArg;\n#endif\n}\n\ns16 m64_read_s16(struct M64ScriptState *state) {\n    s16 ret = *(state->pc++) << 8;\n    ret = *(state->pc++) | ret;\n    return ret;\n}\n\nu16 m64_read_compressed_u16(struct M64ScriptState *state) {\n    u16 ret = *(state->pc++);\n    if (ret & 0x80) {\n        ret = (ret << 8) & 0x7f00;\n        ret = *(state->pc++) | ret;\n    }\n    return ret;\n}\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\nvoid seq_channel_layer_process_script(struct SequenceChannelLayer *layer) {\n    s32 cmd;\n\n    if (layer->enabled == FALSE) {\n        return;\n    }\n\n    if (layer->delay > 1) {\n        layer->delay--;\n        if (!layer->stopSomething && layer->delay <= layer->duration) {\n            seq_channel_layer_note_decay(layer);\n            layer->stopSomething = TRUE;\n        }\n        return;\n    }\n\n    seq_channel_layer_process_script_part1(layer);\n    cmd = seq_channel_layer_process_script_part2(layer);\n    if (cmd != -1) {\n        cmd = seq_channel_layer_process_script_part3(layer, cmd);\n        if (cmd != -1) {\n            cmd = seq_channel_layer_process_script_part4(layer, cmd);\n        }\n        if (cmd != -1) {\n            seq_channel_layer_process_script_part5(layer, cmd);\n        }\n\n        if (layer->stopSomething == TRUE) {\n            if (layer->note != NULL || layer->continuousNotes) {\n                seq_channel_layer_note_decay(layer);\n            }\n        }\n    }\n}\n#elif defined(VERSION_EU)\nvoid seq_channel_layer_process_script(struct SequenceChannelLayer *layer) {\n    struct SequencePlayer *seqPlayer;\n    struct SequenceChannel *seqChannel;\n#ifdef VERSION_EU\n    UNUSED u32 pad0;\n#endif\n    struct M64ScriptState *state;\n    struct Portamento *portamento;\n    struct AudioBankSound *sound;\n    struct Instrument *instrument;\n    struct Drum *drum;\n    s32 temp_a0_5;\n#ifdef VERSION_EU\n    u16 sp3A;\n    s32 sameSound;\n#endif\n    UNUSED u32 pad1;\n#ifndef VERSION_EU\n    u8 sameSound;\n#endif\n    u8 cmd;\n    UNUSED u8 cmdSemitone;\n#ifndef VERSION_EU\n    u16 sp3A;\n#endif\n    f32 tuning;\n    s32 vel;\n    UNUSED s32 usedSemitone;\n    f32 freqScale;\n#ifndef VERSION_EU\n    UNUSED f32 sp24;\n#endif\n    f32 temp_f12;\n    f32 temp_f2;\n\n    sameSound = TRUE;\n    if (layer->enabled == FALSE) {\n        return;\n    }\n\n    if (layer->delay > 1) {\n        layer->delay--;\n        if (!layer->stopSomething && layer->delay <= layer->duration) {\n            seq_channel_layer_note_decay(layer);\n            layer->stopSomething = TRUE;\n        }\n        return;\n    }\n\n    if (!layer->continuousNotes) {\n        seq_channel_layer_note_decay(layer);\n    }\n\n    if (PORTAMENTO_MODE(layer->portamento) == PORTAMENTO_MODE_1 ||\n        PORTAMENTO_MODE(layer->portamento) == PORTAMENTO_MODE_2) {\n        layer->portamento.mode = 0;\n    }\n\n    seqChannel = layer->seqChannel;\n    seqPlayer = seqChannel->seqPlayer;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    layer->notePropertiesNeedInit = TRUE;\n#endif\n\n    for (;;) {\n        state = &layer->scriptState;\n        cmd = m64_read_u8(state);\n\n        if (cmd <= 0xc0) {\n            break;\n        }\n\n        switch (cmd) {\n            case 0xff: // layer_end; function return or end of script\n                if (state->depth == 0) {\n                    // N.B. this function call is *not* inlined even though it's\n                    // within the same file, unlike in the rest of this function.\n                    seq_channel_layer_disable(layer);\n                    return;\n                }\n                state->pc = state->stack[--state->depth];\n                break;\n\n            case 0xfc: // layer_call\n                if (0 && state->depth >= 4) {\n                    eu_stubbed_printf_0(\"Macro Level Over Error!\\n\");\n                }\n                sp3A = m64_read_s16(state);\n                state->stack[state->depth++] = state->pc;\n                state->pc = seqPlayer->seqData + sp3A;\n                break;\n\n            case 0xf8: // layer_loop; loop start, N iterations (or 256 if N = 0)\n                if (0 && state->depth >= 4) {\n                    eu_stubbed_printf_0(\"Macro Level Over Error!\\n\");\n                }\n                state->remLoopIters[state->depth] = m64_read_u8(state);\n                state->stack[state->depth++] = state->pc;\n                break;\n\n            case 0xf7: // layer_loopend\n                if (--state->remLoopIters[state->depth - 1] != 0) {\n                    state->pc = state->stack[state->depth - 1];\n                } else {\n                    state->depth--;\n                }\n                break;\n\n            case 0xfb: // layer_jump\n                sp3A = m64_read_s16(state);\n                state->pc = seqPlayer->seqData + sp3A;\n                break;\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n            case 0xf4:\n                state->pc += (s8)m64_read_u8(state);\n                break;\n#endif\n\n            case 0xc1: // layer_setshortnotevelocity\n            case 0xca: // layer_setpan\n                temp_a0_5 = *(state->pc++);\n                if (cmd == 0xc1) {\n                    layer->velocitySquare = (f32)(temp_a0_5 * temp_a0_5);\n                } else {\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                    layer->pan = temp_a0_5;\n#else\n                    layer->pan = (f32) temp_a0_5 / US_FLOAT(128.0);\n#endif\n                }\n                break;\n\n            case 0xc2: // layer_transpose; set transposition in semitones\n            case 0xc9: // layer_setshortnoteduration\n                temp_a0_5 = *(state->pc++);\n                if (cmd == 0xc9) {\n                    layer->noteDuration = temp_a0_5;\n                } else {\n                    layer->transposition = temp_a0_5;\n                }\n                break;\n\n            case 0xc4: // layer_somethingon\n            case 0xc5: // layer_somethingoff\n                if (cmd == 0xc4) {\n                    layer->continuousNotes = TRUE;\n                } else {\n                    layer->continuousNotes = FALSE;\n                }\n                seq_channel_layer_note_decay(layer);\n                break;\n\n            case 0xc3: // layer_setshortnotedefaultplaypercentage\n                sp3A = m64_read_compressed_u16(state);\n                layer->shortNoteDefaultPlayPercentage = sp3A;\n                break;\n\n            case 0xc6: // layer_setinstr\n                cmd = m64_read_u8(state);\n#if defined(VERSION_JP) || defined(VERSION_US)\n                if (cmd < 127) {\n                    cmd = get_instrument(seqChannel, cmd, &layer->instrument, &layer->adsr);\n                }\n#else\n                if (cmd >= 0x7f) {\n                    if (cmd == 0x7f) {\n                        layer->instOrWave = 0;\n                    } else {\n                        layer->instOrWave = cmd;\n                        layer->instrument = NULL;\n                    }\n\n                    if (1) {\n                    }\n\n                    if (cmd == 0xff) {\n                        layer->adsr.releaseRate = 0;\n                    }\n                    break;\n                }\n\n                if ((layer->instOrWave = get_instrument(seqChannel, cmd, &layer->instrument, &layer->adsr)) == 0) {\n                    eu_stubbed_printf_1(\"WARNING: NPRG: cannot change %d\\n\", cmd);\n                    layer->instOrWave = 0xff;\n                }\n#endif\n                break;\n\n            case 0xc7: // layer_portamento\n                layer->portamento.mode = m64_read_u8(state);\n\n                // cmd is reused for the portamento's semitone\n                cmd = m64_read_u8(state) + seqChannel->transposition +\n                    layer->transposition + seqPlayer->transposition;\n\n                if (cmd >= 0x80) {\n                    cmd = 0;\n                }\n\n                layer->portamentoTargetNote = cmd;\n\n                // If special, the next param is u8 instead of var\n                if (PORTAMENTO_IS_SPECIAL(layer->portamento)) {\n                    layer->portamentoTime = *((state)->pc++);\n                    break;\n                }\n\n                sp3A = m64_read_compressed_u16(state);\n                layer->portamentoTime = sp3A;\n                break;\n\n            case 0xc8: // layer_disableportamento\n                layer->portamento.mode = 0;\n                break;\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n            case 0xcb:\n                sp3A = m64_read_s16(state);\n                layer->adsr.envelope = (struct AdsrEnvelope *) (seqPlayer->seqData + sp3A);\n                layer->adsr.releaseRate = m64_read_u8(state);\n                break;\n\n            case 0xcc:\n                layer->ignoreDrumPan = TRUE;\n                break;\n#endif\n\n            default:\n                switch (cmd & 0xf0) {\n                    case 0xd0: // layer_setshortnotevelocityfromtable\n                        sp3A = seqPlayer->shortNoteVelocityTable[cmd & 0xf];\n                        layer->velocitySquare = (f32)(sp3A * sp3A);\n                        break;\n                    case 0xe0: // layer_setshortnotedurationfromtable\n                        layer->noteDuration = seqPlayer->shortNoteDurationTable[cmd & 0xf];\n                        break;\n                    default:\n                        eu_stubbed_printf_1(\"Audio:Track:NOTE:UNDEFINED NOTE COM. %x\\n\", cmd);\n                        break;\n                }\n        }\n    }\n\n    if (cmd == 0xc0) { // layer_delay\n        layer->delay = m64_read_compressed_u16(state);\n        layer->stopSomething = TRUE;\n    } else {\n        layer->stopSomething = FALSE;\n\n        if (seqChannel->largeNotes == TRUE) {\n            switch (cmd & 0xc0) {\n                case 0x00: // layer_note0 (play percentage, velocity, duration)\n                    sp3A = m64_read_compressed_u16(state);\n                    vel = *(state->pc++);\n                    layer->noteDuration = *(state->pc++);\n                    layer->playPercentage = sp3A;\n                    break;\n\n                case 0x40: // layer_note1 (play percentage, velocity)\n                    sp3A = m64_read_compressed_u16(state);\n                    vel = *(state->pc++);\n                    layer->noteDuration = 0;\n                    layer->playPercentage = sp3A;\n                    break;\n\n                case 0x80: // layer_note2 (velocity, duration; uses last play percentage)\n                    sp3A = layer->playPercentage;\n                    vel = *(state->pc++);\n                    layer->noteDuration = *(state->pc++);\n                    break;\n            }\n\n            // the remaining bits are used for the semitone\n            cmd -= (cmd & 0xc0);\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n            layer->velocitySquare = (f32)(vel) * (f32)vel;\n#else\n            layer->velocitySquare = vel * vel;\n#endif\n        } else {\n            switch (cmd & 0xc0) {\n                case 0x00: // play note, type 0 (play percentage)\n                    sp3A = m64_read_compressed_u16(state);\n                    layer->playPercentage = sp3A;\n                    break;\n\n                case 0x40: // play note, type 1 (uses default play percentage)\n                    sp3A = layer->shortNoteDefaultPlayPercentage;\n                    break;\n\n                case 0x80: // play note, type 2 (uses last play percentage)\n                    sp3A = layer->playPercentage;\n                    break;\n            }\n\n            // the remaining bits are used for the semitone\n            cmd -= cmd & 0xc0;\n        }\n\n        layer->delay = sp3A;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n        layer->duration = layer->noteDuration * sp3A >> 8;\n#else\n        layer->duration = layer->noteDuration * sp3A / 256;\n#endif\n        if ((seqPlayer->muted && (seqChannel->muteBehavior & MUTE_BEHAVIOR_STOP_NOTES) != 0)\n            || seqChannel->stopSomething2\n#if defined(VERSION_JP) || defined(VERSION_US)\n            || !seqChannel->hasInstrument\n#endif\n        ) {\n            layer->stopSomething = TRUE;\n        } else {\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n            s32 temp = layer->instOrWave;\n            if (temp == 0xff) {\n                temp = seqChannel->instOrWave;\n            }\n            if (temp == 0)\n#else\n            if (seqChannel->instOrWave == 0)\n#endif\n            { // drum\n                // cmd is reused for the drum semitone\n                cmd += seqChannel->transposition + layer->transposition;\n\n#if defined(VERSION_EU)\n                drum = get_drum(seqChannel->bankId, cmd);\n#else\n                if (cmd >= gCtlEntries[seqChannel->bankId].numDrums) {\n                    cmd = gCtlEntries[seqChannel->bankId].numDrums;\n                    if (cmd == 0) {\n                        // this goto looks a bit like a function return...\n                        layer->stopSomething = TRUE;\n                        goto skip;\n                    }\n\n                    cmd--;\n                }\n\n                drum = gCtlEntries[seqChannel->bankId].drums[cmd];\n#endif\n                if (drum == NULL) {\n                    layer->stopSomething = TRUE;\n                } else {\n                    layer->adsr.envelope = drum->envelope;\n                    layer->adsr.releaseRate = drum->releaseRate;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                    if (!layer->ignoreDrumPan) {\n                        layer->pan = drum->pan;\n                    }\n#else\n                    layer->pan = FLOAT_CAST(drum->pan) / US_FLOAT(128.0);\n#endif\n                    layer->sound = &drum->sound;\n                    layer->freqScale = layer->sound->tuning;\n                }\n#if defined(VERSION_JP) || defined(VERSION_US) || defined(VERSION_SH)\n            skip:;\n#endif\n            } else { // instrument\n                // cmd is reused for the instrument semitone\n                cmd += seqPlayer->transposition + seqChannel->transposition + layer->transposition;\n\n                if (cmd >= 0x80) {\n                    layer->stopSomething = TRUE;\n                } else {\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                    if (layer->instOrWave == 0xffu) {\n                        instrument = seqChannel->instrument;\n                    } else {\n                        instrument = layer->instrument;\n                    }\n#else\n                    instrument = layer->instrument;\n                    if (instrument == NULL) {\n                        instrument = seqChannel->instrument;\n                    }\n#endif\n\n                    if (layer->portamento.mode != 0) {\n                        if (layer->portamentoTargetNote < cmd) {\n                            vel = cmd;\n                        } else {\n                            vel = layer->portamentoTargetNote;\n                        }\n\n                        if (instrument != NULL) {\n#if defined(VERSION_EU)\n                            sound = instrument_get_audio_bank_sound(instrument, vel);\n#else\n                            sound = (u8) vel <  instrument->normalRangeLo ? &instrument->lowNotesSound\n                                  : (u8) vel <= instrument->normalRangeHi ?\n                                        &instrument->normalNotesSound : &instrument->highNotesSound;\n#endif\n                            sameSound = (sound == layer->sound);\n                            layer->sound = sound;\n                            tuning = sound->tuning;\n                        } else {\n                            layer->sound = NULL;\n                            tuning = 1.0f;\n                        }\n\n                        temp_f2 = gNoteFrequencies[cmd] * tuning;\n                        temp_f12 = gNoteFrequencies[layer->portamentoTargetNote] * tuning;\n\n                        portamento = &layer->portamento;\n                        switch (PORTAMENTO_MODE(layer->portamento)) {\n                            case PORTAMENTO_MODE_1:\n                            case PORTAMENTO_MODE_3:\n                            case PORTAMENTO_MODE_5:\n#if defined(VERSION_JP) || defined(VERSION_US)\n                                sp24 = temp_f2;\n#endif\n                                freqScale = temp_f12;\n                                break;\n\n                            case PORTAMENTO_MODE_2:\n                            case PORTAMENTO_MODE_4:\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                            default:\n#endif\n                                freqScale = temp_f2;\n#if defined(VERSION_JP) || defined(VERSION_US)\n                                sp24 = temp_f12;\n#endif\n                                break;\n                        }\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                        portamento->extent = temp_f2 / freqScale - 1.0f;\n#else\n                        portamento->extent = sp24 / freqScale - US_FLOAT(1.0);\n#endif\n\n                        if (PORTAMENTO_IS_SPECIAL(layer->portamento)) {\n                            portamento->speed = US_FLOAT(32512.0) * FLOAT_CAST(seqPlayer->tempo)\n                                                / ((f32) layer->delay * (f32) gTempoInternalToExternal\n                                                   * FLOAT_CAST(layer->portamentoTime));\n                        } else {\n                            portamento->speed = US_FLOAT(127.0) / FLOAT_CAST(layer->portamentoTime);\n                        }\n                        portamento->cur = 0.0f;\n                        layer->freqScale = freqScale;\n                        if (PORTAMENTO_MODE(layer->portamento) == PORTAMENTO_MODE_5) {\n                            layer->portamentoTargetNote = cmd;\n                        }\n                    } else if (instrument != NULL) {\n#if defined(VERSION_EU)\n                        sound = instrument_get_audio_bank_sound(instrument, cmd);\n#else\n                        sound = cmd < instrument->normalRangeLo ?\n                                         &instrument->lowNotesSound : cmd <= instrument->normalRangeHi ?\n                                         &instrument->normalNotesSound : &instrument->highNotesSound;\n#endif\n                        sameSound = (sound == layer->sound);\n                        layer->sound = sound;\n                        layer->freqScale = gNoteFrequencies[cmd] * sound->tuning;\n                    } else {\n                        layer->sound = NULL;\n                        layer->freqScale = gNoteFrequencies[cmd];\n                    }\n                }\n            }\n            layer->delayUnused = layer->delay;\n        }\n    }\n\n    if (layer->stopSomething == TRUE) {\n        if (layer->note != NULL || layer->continuousNotes) {\n            seq_channel_layer_note_decay(layer);\n        }\n        return;\n    }\n\n    cmd = FALSE;\n    if (!layer->continuousNotes) {\n        cmd = TRUE;\n    } else if (layer->note == NULL || layer->status == SOUND_LOAD_STATUS_NOT_LOADED) {\n        cmd = TRUE;\n    } else if (sameSound == FALSE) {\n        seq_channel_layer_note_decay(layer);\n        cmd = TRUE;\n    }\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    else if (layer != layer->note->parentLayer) {\n        cmd = TRUE;\n    }\n#endif\n    else if (layer->sound == NULL) {\n        init_synthetic_wave(layer->note, layer);\n    }\n\n    if (cmd != FALSE) {\n        layer->note = alloc_note(layer);\n    }\n\n    if (layer->note != NULL && layer->note->parentLayer == layer) {\n        note_vibrato_init(layer->note);\n    }\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    if (seqChannel) {\n    }\n#endif\n}\n\n#ifdef VERSION_EU\nu8 audioString106[] = \"Audio: Note:Velocity Error %d\\n\";\nu8 audioString107[] = \"Error: Your assignchannel is stolen.\\n\";\n#endif\n\n#else\n// US/JP version with macros to simulate inlining by copt. Edit if you dare.\n#include \"copt/seq_channel_layer_process_script_copt.inc.c\"\n#endif\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\nvoid seq_channel_layer_process_script_part1(struct SequenceChannelLayer *layer) {\n    if (!layer->continuousNotes) {\n        seq_channel_layer_note_decay(layer);\n    } else if (layer->note != NULL && layer->note->wantedParentLayer == layer) {\n        seq_channel_layer_note_decay(layer);\n    }\n\n    if (PORTAMENTO_MODE(layer->portamento) == PORTAMENTO_MODE_1 ||\n        PORTAMENTO_MODE(layer->portamento) == PORTAMENTO_MODE_2) {\n        layer->portamento.mode = 0;\n    }\n\n    layer->notePropertiesNeedInit = TRUE;\n}\n\ns32 seq_channel_layer_process_script_part5(struct SequenceChannelLayer *layer, s32 cmd) {\n    if (!layer->stopSomething && layer->sound != NULL && layer->sound->sample->codec == CODEC_SKIP &&\n        layer->sound->sample->medium != 0) {\n        layer->stopSomething = TRUE;\n        return -1;\n    }\n\n    if (layer->continuousNotes == 1 && layer->note != NULL && layer->status && cmd == 1 &&\n        layer->note->parentLayer == layer) {\n        if (layer->sound == NULL) {\n            init_synthetic_wave(layer->note, layer);\n        }\n    } else {\n        if (cmd == 0) {\n            seq_channel_layer_note_decay(layer);\n        }\n        layer->note = alloc_note(layer);\n    }\n    if (layer->note != NULL && layer->note->parentLayer == layer) {\n        note_vibrato_init(layer->note);\n    }\n    return 0;\n}\n\ns32 seq_channel_layer_process_script_part2(struct SequenceChannelLayer *layer) {\n    struct SequenceChannel *seqChannel = layer->seqChannel;\n    struct SequencePlayer *seqPlayer = seqChannel->seqPlayer;\n    struct M64ScriptState *state;\n    s32 temp_a0_5;\n    u16 sp3A;\n    u8 cmd;\n\n    for (;;) {\n        state = &layer->scriptState;\n        cmd = m64_read_u8(state);\n\n        if (cmd <= 0xc0) {\n            return cmd;\n        }\n\n        switch (cmd) {\n            case 0xff: // layer_end; function return or end of script\n                if (state->depth == 0) {\n                    // N.B. this function call is *not* inlined even though it's\n                    // within the same file, unlike in the rest of this function.\n                    seq_channel_layer_disable(layer);\n                    return -1;\n                }\n                state->pc = state->stack[--state->depth];\n                break;\n\n            case 0xfc: // layer_call\n                if (0 && state->depth >= 4) {\n                    eu_stubbed_printf_0(\"Macro Level Over Error!\\n\");\n                }\n                sp3A = m64_read_s16(state);\n                state->stack[state->depth++] = state->pc;\n                state->pc = seqPlayer->seqData + sp3A;\n                break;\n\n            case 0xf8: // layer_loop; loop start, N iterations (or 256 if N = 0)\n                if (0 && state->depth >= 4) {\n                    eu_stubbed_printf_0(\"Macro Level Over Error!\\n\");\n                }\n                state->remLoopIters[state->depth] = m64_read_u8(state);\n                state->stack[state->depth++] = state->pc;\n                break;\n\n            case 0xf7: // layer_loopend\n                if (--state->remLoopIters[state->depth - 1] != 0) {\n                    state->pc = state->stack[state->depth - 1];\n                } else {\n                    state->depth--;\n                }\n                break;\n\n            case 0xfb: // layer_jump\n                sp3A = m64_read_s16(state);\n                state->pc = seqPlayer->seqData + sp3A;\n                break;\n\n            case 0xf4:\n                state->pc += (s8)m64_read_u8(state);\n                break;\n\n            case 0xc1: // layer_setshortnotevelocity\n            case 0xca: // layer_setpan\n                temp_a0_5 = *(state->pc++);\n                if (cmd == 0xc1) {\n                    layer->velocitySquare = (f32) (temp_a0_5 * temp_a0_5) / (f32) (127 * 127);\n                } else {\n                    layer->pan = temp_a0_5;\n                }\n                break;\n\n            case 0xc2: // layer_transpose; set transposition in semitones\n            case 0xc9: // layer_setshortnoteduration\n                temp_a0_5 = *(state->pc++);\n                if (cmd == 0xc9) {\n                    layer->noteDuration = temp_a0_5;\n                } else {\n                    layer->transposition = temp_a0_5;\n                }\n                break;\n\n            case 0xc4: // layer_somethingon\n            case 0xc5: // layer_somethingoff\n                if (cmd == 0xc4) {\n                    layer->continuousNotes = TRUE;\n                } else {\n                    layer->continuousNotes = FALSE;\n                }\n                seq_channel_layer_note_decay(layer);\n                break;\n\n            case 0xc3: // layer_setshortnotedefaultplaypercentage\n                sp3A = m64_read_compressed_u16(state);\n                layer->shortNoteDefaultPlayPercentage = sp3A;\n                break;\n\n            case 0xc6: // layer_setinstr\n                cmd = m64_read_u8(state);\n                if (cmd >= 0x7f) {\n                    if (cmd == 0x7f) {\n                        layer->instOrWave = 0;\n                    } else {\n                        layer->instOrWave = cmd;\n                        layer->instrument = NULL;\n                    }\n\n                    if (1) {\n                    }\n\n                    if (cmd == 0xff) {\n                        layer->adsr.releaseRate = 0;\n                    }\n                    break;\n                }\n\n                if ((layer->instOrWave = get_instrument(seqChannel, cmd, &layer->instrument, &layer->adsr)) == 0) {\n                    eu_stubbed_printf_1(\"WARNING: NPRG: cannot change %d\\n\", cmd);\n                    layer->instOrWave = 0xff;\n                }\n                break;\n\n            case 0xc7: // layer_portamento\n                layer->portamento.mode = m64_read_u8(state);\n\n                // cmd is reused for the portamento's semitone\n                cmd = m64_read_u8(state) + seqChannel->transposition +\n                    layer->transposition + seqPlayer->transposition;\n\n                if (cmd >= 0x80) {\n                    cmd = 0;\n                }\n\n                layer->portamentoTargetNote = cmd;\n\n                // If special, the next param is u8 instead of var\n                if (PORTAMENTO_IS_SPECIAL(layer->portamento)) {\n                    layer->portamentoTime = *((state)->pc++);\n                    break;\n                }\n\n                sp3A = m64_read_compressed_u16(state);\n                layer->portamentoTime = sp3A;\n                break;\n\n            case 0xc8: // layer_disableportamento\n                layer->portamento.mode = 0;\n                break;\n\n            case 0xcb:\n                sp3A = m64_read_s16(state);\n                layer->adsr.envelope = (struct AdsrEnvelope *) (seqPlayer->seqData + sp3A);\n                layer->adsr.releaseRate = m64_read_u8(state);\n                break;\n\n            case 0xcc:\n                layer->ignoreDrumPan = TRUE;\n                break;\n\n            case 0xcd:\n                layer->reverbBits.asByte = m64_read_u8(state);\n                break;\n\n            case 0xce:\n                cmd = m64_read_u8(state) + 0x80;\n                layer->freqScaleMultiplier = unk_sh_data_1[cmd];\n                // missing break :)\n\n            default:\n                switch (cmd & 0xf0) {\n                    case 0xd0: // layer_setshortnotevelocityfromtable\n                        sp3A = seqPlayer->shortNoteVelocityTable[cmd & 0xf];\n                        layer->velocitySquare = (f32) (sp3A * sp3A) / (f32) (127 * 127);\n                        break;\n                    case 0xe0: // layer_setshortnotedurationfromtable\n                        layer->noteDuration = seqPlayer->shortNoteDurationTable[cmd & 0xf];\n                        break;\n                    default:\n                        eu_stubbed_printf_1(\"Audio:Track:NOTE:UNDEFINED NOTE COM. %x\\n\", cmd);\n                        break;\n                }\n        }\n    }\n    return cmd;\n}\n\ns32 seq_channel_layer_process_script_part4(struct SequenceChannelLayer *layer, s32 cmd1) {\n    s32 sameSound = TRUE;\n    struct SequenceChannel *seqChannel = layer->seqChannel;\n    struct Portamento *portamento;\n    struct AudioBankSound *sound;\n    struct Instrument *instrument;\n    struct Drum *drum;\n    f32 tuning;\n    s32 vel;\n    f32 freqScale;\n    f32 sp24;\n    f32 temp_f12;\n    UNUSED s32 pad[2];\n    struct SequencePlayer *seqPlayer = seqChannel->seqPlayer;\n    u8 cmd = cmd1;\n    f32 temp_f2;\n\n    s32 temp = layer->instOrWave;\n    if (temp == 0xff) {\n        if (!seqChannel->hasInstrument) {\n            return -1;\n        }\n        temp = seqChannel->instOrWave;\n    }\n    if (temp == 0) { // drum\n        // cmd is reused for the drum semitone\n        cmd += seqChannel->transposition + layer->transposition;\n\n        drum = get_drum(seqChannel->bankId, cmd);\n        if (drum == NULL) {\n            layer->stopSomething = TRUE;\n            layer->delayUnused = layer->delay;\n            return -1;\n        } else {\n            layer->adsr.envelope = drum->envelope;\n            layer->adsr.releaseRate = drum->releaseRate;\n            if (!layer->ignoreDrumPan) {\n                layer->pan = drum->pan;\n            }\n            layer->sound = &drum->sound;\n            layer->freqScale = layer->sound->tuning;\n        }\n    } else { // instrument\n        // cmd is reused for the instrument semitone\n        cmd += seqPlayer->transposition + seqChannel->transposition + layer->transposition;\n\n        if (cmd >= 0x80) {\n            layer->stopSomething = TRUE;\n            return -1;\n        } else {\n            if (layer->instOrWave == 0xff) {\n                instrument = seqChannel->instrument;\n            } else {\n                instrument = layer->instrument;\n            }\n\n            if (layer->portamento.mode != 0) {\n                if (layer->portamentoTargetNote < cmd) {\n                    vel = cmd;\n                } else {\n                    vel = layer->portamentoTargetNote;\n                }\n\n                if (instrument != NULL) {\n                    sound = instrument_get_audio_bank_sound(instrument, vel);\n                    sameSound = (sound == layer->sound);\n                    layer->sound = sound;\n                    tuning = sound->tuning;\n                } else {\n                    layer->sound = NULL;\n                    tuning = 1.0f;\n                }\n\n                temp_f2 = gNoteFrequencies[cmd] * tuning;\n                temp_f12 = gNoteFrequencies[layer->portamentoTargetNote] * tuning;\n\n                portamento = &layer->portamento;\n                switch (PORTAMENTO_MODE(layer->portamento)) {\n                    case PORTAMENTO_MODE_1:\n                    case PORTAMENTO_MODE_3:\n                    case PORTAMENTO_MODE_5:\n                        sp24 = temp_f2;\n                        freqScale = temp_f12;\n                        break;\n\n                    case PORTAMENTO_MODE_2:\n                    case PORTAMENTO_MODE_4:\n                        freqScale = temp_f2;\n                        sp24 = temp_f12;\n                        break;\n\n                    default:\n                        freqScale = temp_f2;\n                        sp24 = temp_f2;\n                        break;\n                }\n\n                portamento->extent = sp24 / freqScale - 1.0f;\n\n                if (PORTAMENTO_IS_SPECIAL(layer->portamento)) {\n                    portamento->speed = US_FLOAT(32512.0) * FLOAT_CAST(seqPlayer->tempo)\n                                        / ((f32) layer->delay * (f32) gTempoInternalToExternal\n                                            * FLOAT_CAST(layer->portamentoTime));\n                } else {\n                    portamento->speed = US_FLOAT(127.0) / FLOAT_CAST(layer->portamentoTime);\n                }\n                portamento->cur = 0.0f;\n                layer->freqScale = freqScale;\n                if (PORTAMENTO_MODE(layer->portamento) == PORTAMENTO_MODE_5) {\n                    layer->portamentoTargetNote = cmd;\n                }\n            } else if (instrument != NULL) {\n                sound = instrument_get_audio_bank_sound(instrument, cmd);\n                sameSound = (sound == layer->sound);\n                layer->sound = sound;\n                layer->freqScale = gNoteFrequencies[cmd] * sound->tuning;\n            } else {\n                layer->sound = NULL;\n                layer->freqScale = gNoteFrequencies[cmd];\n            }\n        }\n    }\n    layer->delayUnused = layer->delay;\n    layer->freqScale *= layer->freqScaleMultiplier;\n    return sameSound;\n}\n\ns32 seq_channel_layer_process_script_part3(struct SequenceChannelLayer *layer, s32 cmd) {\n    struct M64ScriptState *state = &layer->scriptState;\n    u16 sp3A;\n    s32 vel;\n    struct SequenceChannel *seqChannel = layer->seqChannel;\n    struct SequencePlayer *seqPlayer = seqChannel->seqPlayer;\n\n    if (cmd == 0xc0) { // layer_delay\n        layer->delay = m64_read_compressed_u16(state);\n        layer->stopSomething = TRUE;\n        return -1;\n    }\n\n    layer->stopSomething = FALSE;\n\n    if (seqChannel->largeNotes == TRUE) {\n        switch (cmd & 0xc0) {\n            case 0x00: // layer_note0 (play percentage, velocity, duration)\n                sp3A = m64_read_compressed_u16(state);\n                vel = *(state->pc++);\n                layer->noteDuration = *(state->pc++);\n                layer->playPercentage = sp3A;\n                break;\n\n            case 0x40: // layer_note1 (play percentage, velocity)\n                sp3A = m64_read_compressed_u16(state);\n                vel = *(state->pc++);\n                layer->noteDuration = 0;\n                layer->playPercentage = sp3A;\n                break;\n\n            case 0x80: // layer_note2 (velocity, duration; uses last play percentage)\n                sp3A = layer->playPercentage;\n                vel = *(state->pc++);\n                layer->noteDuration = *(state->pc++);\n                break;\n        }\n        if (vel >= 0x80 || vel < 0) {\n            vel = 0x7f;\n        }\n        layer->velocitySquare = ((f32) vel * (f32) vel) / (f32) (0x7f * 0x7f);\n        // the remaining bits are used for the semitone\n        cmd -= (cmd & 0xc0);\n    } else {\n        switch (cmd & 0xc0) {\n            case 0x00: // play note, type 0 (play percentage)\n                sp3A = m64_read_compressed_u16(state);\n                layer->playPercentage = sp3A;\n                break;\n\n            case 0x40: // play note, type 1 (uses default play percentage)\n                sp3A = layer->shortNoteDefaultPlayPercentage;\n                break;\n\n            case 0x80: // play note, type 2 (uses last play percentage)\n                sp3A = layer->playPercentage;\n                break;\n        }\n\n        // the remaining bits are used for the semitone\n        cmd -= cmd & 0xc0;\n    }\n\n    layer->delay = sp3A;\n    layer->duration = layer->noteDuration * sp3A >> 8;\n    if ((seqPlayer->muted && (seqChannel->muteBehavior & 0x50) != 0)\n        || seqChannel->stopSomething2) {\n        layer->stopSomething = TRUE;\n        return -1;\n    }\n\n    return cmd;\n}\n#endif\n\nu8 get_instrument(struct SequenceChannel *seqChannel, u8 instId, struct Instrument **instOut, struct AdsrSettings *adsr) {\n    struct Instrument *inst;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    inst = get_instrument_inner(seqChannel->bankId, instId);\n    if (inst == NULL) {\n        *instOut = NULL;\n        return 0;\n    }\n    adsr->envelope = inst->envelope;\n    adsr->releaseRate = inst->releaseRate;\n    *instOut = inst;\n    instId++;\n    return instId;\n#else\n    UNUSED u32 pad;\n\n    if (instId >= gCtlEntries[seqChannel->bankId].numInstruments) {\n        instId = gCtlEntries[seqChannel->bankId].numInstruments;\n        if (instId == 0) {\n            return 0;\n        }\n        instId--;\n    }\n\n    inst = gCtlEntries[seqChannel->bankId].instruments[instId];\n    if (inst == NULL) {\n        struct SequenceChannel seqChannelCpy = *seqChannel;\n\n        while (instId != 0xff) {\n            inst = gCtlEntries[seqChannelCpy.bankId].instruments[instId];\n            if (inst != NULL) {\n                break;\n            }\n            instId--;\n        }\n    }\n\n    if (((uintptr_t) gBankLoadedPool.persistent.pool.start <= (uintptr_t) inst\n         && (uintptr_t) inst <= (uintptr_t)(gBankLoadedPool.persistent.pool.start\n                    + gBankLoadedPool.persistent.pool.size))\n        || ((uintptr_t) gBankLoadedPool.temporary.pool.start <= (uintptr_t) inst\n            && (uintptr_t) inst <= (uintptr_t)(gBankLoadedPool.temporary.pool.start\n                                   + gBankLoadedPool.temporary.pool.size))) {\n        adsr->envelope = inst->envelope;\n        adsr->releaseRate = inst->releaseRate;\n        *instOut = inst;\n        instId++;\n        return instId;\n    }\n\n    gAudioErrorFlags = instId + 0x20000;\n    *instOut = NULL;\n    return 0;\n#endif\n}\n\nvoid set_instrument(struct SequenceChannel *seqChannel, u8 instId) {\n    if (instId >= 0x80) {\n        seqChannel->instOrWave = instId;\n        seqChannel->instrument = NULL;\n    } else if (instId == 0x7f) {\n        seqChannel->instOrWave = 0;\n        seqChannel->instrument = (struct Instrument *) 1;\n    } else {\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n        if ((seqChannel->instOrWave =\n            get_instrument(seqChannel, instId, &seqChannel->instrument, &seqChannel->adsr)) == 0)\n#else\n        seqChannel->instOrWave =\n            get_instrument(seqChannel, instId, &seqChannel->instrument, &seqChannel->adsr);\n        if (seqChannel->instOrWave == 0)\n#endif\n        {\n            seqChannel->hasInstrument = FALSE;\n            return;\n        }\n    }\n    seqChannel->hasInstrument = TRUE;\n}\n\nvoid sequence_channel_set_volume(struct SequenceChannel *seqChannel, u8 volume) {\n    seqChannel->volume = FLOAT_CAST(volume) / US_FLOAT(127.0);\n}\n\nvoid sequence_channel_process_script(struct SequenceChannel *seqChannel) {\n    struct M64ScriptState *state;\n    struct SequencePlayer *seqPlayer;\n    u8 cmd;\n    s8 temp;\n    u8 loBits;\n    u16 sp5A;\n    s32 sp38;\n    s8 value;\n    s32 i;\n    u8 *seqData;\n\n    if (!seqChannel->enabled) {\n        return;\n    }\n\n    if (seqChannel->stopScript) {\n        for (i = 0; i < LAYERS_MAX; i++) {\n            if (seqChannel->layers[i] != NULL) {\n                seq_channel_layer_process_script(seqChannel->layers[i]);\n            }\n        }\n        return;\n    }\n\n    seqPlayer = seqChannel->seqPlayer;\n    if (seqPlayer->muted && (seqChannel->muteBehavior & MUTE_BEHAVIOR_STOP_SCRIPT) != 0) {\n        return;\n    }\n\n    if (seqChannel->delay != 0) {\n        seqChannel->delay--;\n    }\n\n    state = &seqChannel->scriptState;\n    if (seqChannel->delay == 0) {\n        for (;;) {\n            cmd = m64_read_u8(state);\n#if defined(VERSION_JP) || defined(VERSION_US)\n            if (cmd == 0xff) { // chan_end\n                if (state->depth == 0) {\n                    sequence_channel_disable(seqChannel);\n                    break;\n                }\n                state->depth--, state->pc = state->stack[state->depth];\n            }\n            if (cmd == 0xfe) { // chan_delay1\n                break;\n            }\n            if (cmd == 0xfd) { // chan_delay\n                seqChannel->delay = m64_read_compressed_u16(state);\n                break;\n            }\n            if (cmd == 0xf3) { // chan_hang\n                seqChannel->stopScript = TRUE;\n                break;\n            }\n#endif\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n            if (cmd >= 0xb0)\n#else\n            if (cmd > 0xc0)\n#endif\n            {\n                switch (cmd) {\n                    case 0xff: // chan_end\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                        if (state->depth == 0) {\n                            sequence_channel_disable(seqChannel);\n                            goto out;\n                        } else {\n                            state->pc = state->stack[--state->depth];\n                        }\n#endif\n                        break;\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                    case 0xfe: // chan_delay1\n                        goto out;\n\n                    case 0xfd: // chan_delay\n                        seqChannel->delay = m64_read_compressed_u16(state);\n                        goto out;\n\n                    case 0xea:\n                        seqChannel->stopScript = TRUE;\n                        goto out;\n#endif\n                    case 0xfc: // chan_call\n                        if (0 && state->depth >= 4) {\n                            eu_stubbed_printf_0(\"Audio:Track :Call Macro Level Over Error!\\n\");\n                        }\n                        sp5A = m64_read_s16(state);\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                        state->stack[state->depth++] = state->pc;\n#else\n                        state->depth++, state->stack[state->depth - 1] = state->pc;\n#endif\n                        state->pc = seqPlayer->seqData + sp5A;\n                        break;\n\n                    case 0xf8: // chan_loop; loop start, N iterations (or 256 if N = 0)\n                        if (0 && state->depth >= 4) {\n                            eu_stubbed_printf_0(\"Audio:Track :Loops Macro Level Over Error!\\n\");\n                        }\n                        state->remLoopIters[state->depth] = m64_read_u8(state);\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                        state->stack[state->depth++] = state->pc;\n#else\n                        state->depth++, state->stack[state->depth - 1] = state->pc;\n#endif\n                        break;\n\n                    case 0xf7: // chan_loopend\n                        state->remLoopIters[state->depth - 1]--;\n                        if (state->remLoopIters[state->depth - 1] != 0) {\n                            state->pc = state->stack[state->depth - 1];\n                        } else {\n                            state->depth--;\n                        }\n                        break;\n\n                    case 0xf6: // chan_break; break loop, if combined with jump\n                        state->depth--;\n                        break;\n\n                    case 0xfb: // chan_jump\n                    case 0xfa: // chan_beqz\n                    case 0xf9: // chan_bltz\n                    case 0xf5: // chan_bgez\n                        sp5A = m64_read_s16(state);\n                        if (cmd == 0xfa && value != 0) {\n                            break;\n                        }\n                        if (cmd == 0xf9 && value >= 0) {\n                            break;\n                        }\n                        if (cmd == 0xf5 && value < 0) {\n                            break;\n                        }\n                        state->pc = seqPlayer->seqData + sp5A;\n                        break;\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                    case 0xf4: // chan_jump_rel\n                    case 0xf3: // chan_beqz_rel\n                    case 0xf2: // chan_bltz_rel\n                        temp = m64_read_u8(state);\n                        if (cmd == 0xf3 && value != 0) {\n                            break;\n                        }\n                        if (cmd == 0xf2 && value >= 0) {\n                            break;\n                        }\n                        state->pc += temp;\n                        break;\n#endif\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                    case 0xf1: // chan_reservenotes\n#else\n                    case 0xf2: // chan_reservenotes\n#endif\n                        note_pool_clear(&seqChannel->notePool);\n                        note_pool_fill(&seqChannel->notePool, m64_read_u8(state));\n                        break;\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                    case 0xf0: // chan_unreservenotes\n#else\n                    case 0xf1: // chan_unreservenotes\n#endif\n                        note_pool_clear(&seqChannel->notePool);\n                        break;\n\n                    case 0xc2: // chan_setdyntable\n                        sp5A = m64_read_s16(state);\n                        seqChannel->dynTable = (void *) (seqPlayer->seqData + sp5A);\n                        break;\n\n                    case 0xc5: // chan_dynsetdyntable\n                        if (value != -1) {\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                            seqData = (*seqChannel->dynTable)[value];\n                            sp38 = (u16)((seqData[0] << 8) + seqData[1]);\n                            seqChannel->dynTable = (void *) (seqPlayer->seqData + sp38);\n#else\n                            sp5A = (u16)((((*seqChannel->dynTable)[value])[0] << 8) + (((*seqChannel->dynTable)[value])[1]));\n                            seqChannel->dynTable = (void *) (seqPlayer->seqData + sp5A);\n#endif\n                        }\n                        break;\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                    case 0xeb: // chan_setbankandinstr\n                        cmd = m64_read_u8(state);\n                        // Switch to the cmd's (0-indexed) bank in this sequence's\n                        // bank set. Note that in the binary format (not in the JSON!)\n                        // the banks are listed backwards, so we counts from the back.\n                        // (gAlBankSets[offset] is number of banks)\n                        sp38 = ((u16 *) gAlBankSets)[seqPlayer->seqId];\n                        loBits = *(sp38 + gAlBankSets);\n                        cmd = gAlBankSets[(s32)sp38 + loBits - cmd];\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n                        if (get_bank_or_seq(1, 2, cmd) != NULL)\n#else\n                        if (get_bank_or_seq(&gBankLoadedPool, 2, cmd) != NULL)\n#endif\n                        {\n                            seqChannel->bankId = cmd;\n                        } else {\n                            eu_stubbed_printf_1(\"SUB:ERR:BANK %d NOT CACHED.\\n\", cmd);\n                        }\n                        // fallthrough\n#endif\n\n                    case 0xc1: // chan_setinstr (\"set program\"?)\n                        set_instrument(seqChannel, m64_read_u8(state));\n                        break;\n\n                    case 0xc3: // chan_largenotesoff\n                        seqChannel->largeNotes = FALSE;\n                        break;\n\n                    case 0xc4: // chan_largenoteson\n                        seqChannel->largeNotes = TRUE;\n                        break;\n\n                    case 0xdf: // chan_setvol\n                        sequence_channel_set_volume(seqChannel, m64_read_u8(state));\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                        seqChannel->changes.as_bitfields.volume = TRUE;\n#endif\n                        break;\n\n                    case 0xe0: // chan_setvolscale\n                        seqChannel->volumeScale = FLOAT_CAST(m64_read_u8(state)) / US_FLOAT(128.0);\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                        seqChannel->changes.as_bitfields.volume = TRUE;\n#endif\n                        break;\n\n                    case 0xde: // chan_freqscale; pitch bend using raw frequency multiplier N/2^15 (N is u16)\n                        sp5A = m64_read_s16(state);\n                        seqChannel->freqScale = FLOAT_CAST(sp5A) / US_FLOAT(32768.0);\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                        seqChannel->changes.as_bitfields.freqScale = TRUE;\n#endif\n                        break;\n\n                    case 0xd3: // chan_pitchbend; pitch bend by <= 1 octave in either direction (-127..127)\n                        // (m64_read_u8(state) is really s8 here)\n#if defined(VERSION_SH) || defined(VERSION_CN)\n                        cmd = m64_read_u8(state) + 128;\n#else\n                        cmd = m64_read_u8(state) + 127;\n#endif\n                        seqChannel->freqScale = gPitchBendFrequencyScale[cmd];\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                        seqChannel->changes.as_bitfields.freqScale = TRUE;\n#endif\n                        break;\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n                    case 0xee:\n                        cmd = m64_read_u8(state) + 0x80;\n                        seqChannel->freqScale = unk_sh_data_1[cmd];\n                        seqChannel->changes.as_bitfields.freqScale = TRUE;\n                        break;\n#endif\n\n                    case 0xdd: // chan_setpan\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                        seqChannel->newPan = m64_read_u8(state);\n                        seqChannel->changes.as_bitfields.pan = TRUE;\n#else\n                        seqChannel->pan = FLOAT_CAST(m64_read_u8(state)) / US_FLOAT(128.0);\n#endif\n                        break;\n\n                    case 0xdc: // chan_setpanmix; set proportion of pan to come from channel (0..128)\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                        seqChannel->panChannelWeight = m64_read_u8(state);\n                        seqChannel->changes.as_bitfields.pan = TRUE;\n#else\n                        seqChannel->panChannelWeight = FLOAT_CAST(m64_read_u8(state)) / US_FLOAT(128.0);\n#endif\n                        break;\n\n                    case 0xdb: // chan_transpose; set transposition in semitones\n                        temp = *state->pc++;\n                        seqChannel->transposition = temp;\n                        break;\n\n                    case 0xda: // chan_setenvelope\n                        sp5A = m64_read_s16(state);\n                        seqChannel->adsr.envelope = (struct AdsrEnvelope *) (seqPlayer->seqData + sp5A);\n                        break;\n\n                    case 0xd9: // chan_setdecayrelease\n                        seqChannel->adsr.releaseRate = m64_read_u8(state);\n                        break;\n\n                    case 0xd8: // chan_setvibratoextent\n                        seqChannel->vibratoExtentTarget = m64_read_u8(state) * 8;\n                        seqChannel->vibratoExtentStart = 0;\n                        seqChannel->vibratoExtentChangeDelay = 0;\n                        break;\n\n                    case 0xd7: // chan_setvibratorate\n                        seqChannel->vibratoRateStart = seqChannel->vibratoRateTarget =\n                            m64_read_u8(state) * 32;\n                        seqChannel->vibratoRateChangeDelay = 0;\n                        break;\n\n                    case 0xe2: // chan_setvibratoextentlinear\n                        seqChannel->vibratoExtentStart = m64_read_u8(state) * 8;\n                        seqChannel->vibratoExtentTarget = m64_read_u8(state) * 8;\n                        seqChannel->vibratoExtentChangeDelay = m64_read_u8(state) * 16;\n                        break;\n\n                    case 0xe1: // chan_setvibratoratelinear\n                        seqChannel->vibratoRateStart = m64_read_u8(state) * 32;\n                        seqChannel->vibratoRateTarget = m64_read_u8(state) * 32;\n                        seqChannel->vibratoRateChangeDelay = m64_read_u8(state) * 16;\n                        break;\n\n                    case 0xe3: // chan_setvibratodelay\n                        seqChannel->vibratoDelay = m64_read_u8(state) * 16;\n                        break;\n\n#if defined(VERSION_JP) || defined(VERSION_US)\n                    case 0xd6: // chan_setupdatesperframe_unimplemented\n                        cmd = m64_read_u8(state);\n                        if (cmd == 0) {\n                            cmd = gAudioUpdatesPerFrame;\n                        }\n                        seqChannel->updatesPerFrameUnused = cmd;\n                        break;\n#endif\n\n                    case 0xd4: // chan_setreverb\n                        seqChannel->reverbVol = m64_read_u8(state);\n                        break;\n\n                    case 0xc6: // chan_setbank; switch bank within set\n                        cmd = m64_read_u8(state);\n                        // Switch to the temp's (0-indexed) bank in this sequence's\n                        // bank set. Note that in the binary format (not in the JSON!)\n                        // the banks are listed backwards, so we counts from the back.\n                        // (gAlBankSets[offset] is number of banks)\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                        sp38 = ((u16 *) gAlBankSets)[seqPlayer->seqId];\n                        loBits = *(sp38 + gAlBankSets);\n                        cmd = gAlBankSets[(s32)sp38 + loBits - cmd];\n#else\n                        sp5A = ((u16 *) gAlBankSets)[seqPlayer->seqId];\n                        loBits = *(sp5A + gAlBankSets);\n                        cmd = gAlBankSets[sp5A + loBits - cmd];\n#endif\n#if defined(VERSION_SH) || defined(VERSION_CN)\n                        if (get_bank_or_seq(1, 2, cmd) != NULL)\n#else\n                        if (get_bank_or_seq(&gBankLoadedPool, 2, cmd) != NULL)\n#endif\n                        {\n                            seqChannel->bankId = cmd;\n                        } else {\n                            eu_stubbed_printf_1(\"SUB:ERR:BANK %d NOT CACHED.\\n\", cmd);\n                        }\n                        break;\n\n                    case 0xc7: // chan_writeseq; write to sequence data (!)\n                        {\n#if defined(VERSION_JP) || defined(VERSION_US)\n                            u8 *seqData;\n#endif\n                            cmd = m64_read_u8(state);\n                            sp5A = m64_read_s16(state);\n                            seqData = seqPlayer->seqData + sp5A;\n                            *seqData = (u8)value + cmd;\n                        }\n                        break;\n\n                    case 0xc8: // chan_subtract\n                    case 0xc9: // chan_bitand\n                    case 0xcc: // chan_setval\n                        temp = m64_read_u8(state);\n                        if (cmd == 0xc8) {\n                            value -= temp;\n                        } else if (cmd == 0xcc) {\n                            value = temp;\n                        } else {\n                            value &= temp;\n                        }\n                        break;\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n                    case 0xcd:\n                        sequence_channel_disable(seqPlayer->channels[m64_read_u8(state)]);\n                        break;\n#endif\n\n                    case 0xca: // chan_setmutebhv\n                        seqChannel->muteBehavior = m64_read_u8(state);\n#if defined(VERSION_SH) || defined(VERSION_CN)\n                        seqChannel->changes.as_bitfields.volume = TRUE;\n#endif\n                        break;\n\n                    case 0xcb: // chan_readseq\n                        sp38 = (u16)m64_read_s16(state) + value;\n                        value = seqPlayer->seqData[sp38];\n                        break;\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n                    case 0xce:\n                        seqChannel->unkC8 = m64_read_s16(state);\n                        break;\n\n                    case 0xcf:\n                        sp5A = m64_read_s16(state);\n                        seqData = seqPlayer->seqData + sp5A;\n                        seqData[0] = (seqChannel->unkC8 >> 8) & 0xffff;\n                        seqData[1] = (seqChannel->unkC8) & 0xffff;\n                        break;\n#endif\n\n                    case 0xd0: // chan_stereoheadseteffects\n                        seqChannel->stereoHeadsetEffects = m64_read_u8(state);\n                        break;\n\n                    case 0xd1: // chan_setnoteallocationpolicy\n                        seqChannel->noteAllocPolicy = m64_read_u8(state);\n                        break;\n\n                    case 0xd2: // chan_setsustain\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                        seqChannel->adsr.sustain = m64_read_u8(state);\n#else\n                        seqChannel->adsr.sustain = m64_read_u8(state) << 8;\n#endif\n                        break;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                    case 0xe5:\n                        seqChannel->reverbIndex = m64_read_u8(state);\n                        break;\n#endif\n                    case 0xe4: // chan_dyncall\n                        if (value != -1) {\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                            if (state->depth >= 4) {\n                                eu_stubbed_printf_0(\"Audio:Track: CTBLCALL Macro Level Over Error!\\n\");\n                            }\n#endif\n                            seqData = (*seqChannel->dynTable)[value];\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                            state->stack[state->depth++] = state->pc;\n                            sp38 = (u16)((seqData[0] << 8) + seqData[1]);\n                            state->pc = seqPlayer->seqData + sp38;\n\n                            if (0 && sp38 >= gSeqFileHeader->seqArray[seqPlayer->seqId].len) {\n                                eu_stubbed_printf_3(\"Err :Sub %x ,address %x:Undefined SubTrack Function %x\", seqChannel, state->pc, sp38);\n                            }\n#else\n                            state->depth++, state->stack[state->depth - 1] = state->pc;\n                            sp5A = ((seqData[0] << 8) + seqData[1]);\n                            state->pc = seqPlayer->seqData + sp5A;\n#endif\n                        }\n                        break;\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                    case 0xe6:\n                        seqChannel->bookOffset = m64_read_u8(state);\n                        break;\n\n                    case 0xe7:\n                        sp5A = m64_read_s16(state);\n                        seqData = seqPlayer->seqData + sp5A;\n                        seqChannel->muteBehavior = *seqData++;\n                        seqChannel->noteAllocPolicy = *seqData++;\n                        seqChannel->notePriority = *seqData++;\n                        seqChannel->transposition = (s8) *seqData++;\n                        seqChannel->newPan = *seqData++;\n                        seqChannel->panChannelWeight = *seqData++;\n                        seqChannel->reverbVol = *seqData++;\n                        seqChannel->reverbIndex = *seqData++;\n                        seqChannel->changes.as_bitfields.pan = TRUE;\n                        break;\n\n                    case 0xe8:\n                        seqChannel->muteBehavior = m64_read_u8(state);\n                        seqChannel->noteAllocPolicy = m64_read_u8(state);\n                        seqChannel->notePriority = m64_read_u8(state);\n                        seqChannel->transposition = (s8) m64_read_u8(state);\n                        seqChannel->newPan = m64_read_u8(state);\n                        seqChannel->panChannelWeight = m64_read_u8(state);\n                        seqChannel->reverbVol = m64_read_u8(state);\n                        seqChannel->reverbIndex = m64_read_u8(state);\n                        seqChannel->changes.as_bitfields.pan = TRUE;\n                        break;\n\n                    case 0xec:\n                        seqChannel->vibratoExtentTarget = 0;\n                        seqChannel->vibratoExtentStart = 0;\n                        seqChannel->vibratoExtentChangeDelay = 0;\n                        seqChannel->vibratoRateTarget = 0;\n                        seqChannel->vibratoRateStart = 0;\n                        seqChannel->vibratoRateChangeDelay = 0;\n                        seqChannel->freqScale = 1.0f;\n                        break;\n\n                    case 0xe9: // chan_setnotepriority\n#if defined(VERSION_SH) || defined(VERSION_CN)\n                        cmd = m64_read_u8(state);\n                        if ((cmd & 0xf) != 0) {\n                            seqChannel->notePriority = cmd & 0xf;\n                        }\n                        cmd = cmd >> 4;\n                        if (cmd != 0) {\n                            seqChannel->unkSH06 = cmd;\n                        }\n#else\n                        seqChannel->notePriority = m64_read_u8(state);\n#endif\n                        break;\n#endif\n#if defined(VERSION_SH) || defined(VERSION_CN)\n                    case 0xed:\n                        seqChannel->synthesisVolume = m64_read_u8(state);\n                        break;\n\n                    case 0xef:\n                        m64_read_s16(state);\n                        m64_read_u8(state);\n                        break;\n\n                    case 0xb0:\n                        sp5A = m64_read_s16(state);\n                        seqData = seqPlayer->seqData + sp5A;\n                        seqChannel->filter = (s16 *) (seqData);\n                        break;\n\n                    case 0xb1:\n                        seqChannel->filter = NULL;\n                        break;\n\n                    case 0xb3:\n                        if (seqChannel->filter != NULL) {\n                            cmd = m64_read_u8(state);\n                            if (cmd == 0) {\n                                seqChannel->filter = NULL;\n                            } else {\n                                loBits = (cmd >> 4) & 0xf;\n                                cmd &= 0xf;\n                                fill_filter(seqChannel->filter, loBits, cmd);\n                            }\n                        }\n                        break;\n\n                    case 0xb2:\n                        i = (value * 2);\n                        sp5A = m64_read_s16(state);\n                        sp38 = sp5A + i;\n                        seqChannel->unkC8 = *(u16 *) (seqPlayer->seqData + sp38);\n                        break;\n\n                    case 0xb4:\n                        seqChannel->dynTable = (void *) (seqPlayer->seqData + seqChannel->unkC8);\n                        break;\n\n                    case 0xb5:\n                        seqChannel->unkC8 = *(u16 *) (*seqChannel->dynTable)[value];\n                        break;\n\n                    case 0xb6:\n                        value = (*seqChannel->dynTable)[0][value];\n                        break;\n#endif\n                }\n            } else {\n#if defined(VERSION_SH) || defined(VERSION_CN)\n                if (cmd >= 0x80) {\n                    loBits = cmd & 7;\n                    switch (cmd & 0xf8) {\n                        case 0x80:\n                            if (seqChannel->layers[loBits] != NULL) {\n                                value = seqChannel->layers[loBits]->finished;\n                            } else {\n                                value = -1;\n                            }\n                            break;\n\n                        case 0x88:\n                            sp5A = m64_read_s16(state);\n                            if (seq_channel_set_layer(seqChannel, loBits) == 0) {\n                                if (1) {}\n                                seqChannel->layers[loBits]->scriptState.pc = seqPlayer->seqData + sp5A;\n                            }\n                            break;\n\n                        case 0x90:\n                            seq_channel_layer_free(seqChannel, loBits);\n                            break;\n\n                        case 0x98:\n                            if (value != -1 && seq_channel_set_layer(seqChannel, loBits) != -1) {\n                                seqData = (*seqChannel->dynTable)[value];\n                                sp5A = ((seqData[0] << 8) + seqData[1]);\n                                seqChannel->layers[loBits]->scriptState.pc = seqPlayer->seqData + sp5A;\n                            }\n                            break;\n                    }\n                } else {\n#endif\n                loBits = cmd & 0xf;\n\n                switch (cmd & 0xf0) {\n#if defined(VERSION_SH) || defined(VERSION_CN)\n                    case 0x00:\n                        seqChannel->delay = loBits;\n                        goto out;\n\n                    case 0x10:\n                        seqChannel->soundScriptIO[loBits] = -1;\n                        if (func_sh_802f47c8(seqChannel->bankId, (u8)value, &seqChannel->soundScriptIO[loBits]) == -1) {\n                        }\n                        break;\n#else\n                    case 0x00: // chan_testlayerfinished\n                        if (seqChannel->layers[loBits] != NULL) {\n                            value = seqChannel->layers[loBits]->finished;\n                        }\n#ifdef VERSION_EU\n                        else {\n                            value = -1;\n                        }\n#endif\n                        break;\n#endif\n\n                    // sh: 0x70\n                    case 0x70: // chan_iowriteval; write data back to audio lib\n                        seqChannel->soundScriptIO[loBits] = value;\n                        break;\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n                    case 0x60:\n#else\n                    case 0x80: // chan_ioreadval; read data from audio lib\n#endif\n                        value = seqChannel->soundScriptIO[loBits];\n                        if (loBits < 4) {\n                            seqChannel->soundScriptIO[loBits] = -1;\n                        }\n                        break;\n\n                    // sh: 0x50\n                    case 0x50: // chan_ioreadvalsub; subtract with read data from audio lib\n                        value -= seqChannel->soundScriptIO[loBits];\n                        break;\n\n#if !defined(VERSION_SH) && !defined(VERSION_CN)\n#ifdef VERSION_EU\n                    // sh: 0x00\n                    case 0x60: // chan_delayshort\n                        seqChannel->delay = loBits;\n                        goto out;\n#endif\n\n                    case 0x90: // chan_setlayer\n                        sp5A = m64_read_s16(state);\n                        if (seq_channel_set_layer(seqChannel, loBits) == 0) {\n#ifdef VERSION_EU\n                            if (1) {}\n#endif\n                            seqChannel->layers[loBits]->scriptState.pc = seqPlayer->seqData + sp5A;\n                        }\n                        break;\n\n                    case 0xa0: // chan_freelayer\n                        seq_channel_layer_free(seqChannel, loBits);\n                        break;\n\n                    case 0xb0: // chan_dynsetlayer\n                        if (value != -1 && seq_channel_set_layer(seqChannel, loBits) != -1) {\n                            seqData = (*seqChannel->dynTable)[value];\n                            sp5A = ((seqData[0] << 8) + seqData[1]);\n                            seqChannel->layers[loBits]->scriptState.pc = seqPlayer->seqData + sp5A;\n                        }\n                        break;\n\n#ifndef VERSION_EU\n                    case 0x60: // chan_setnotepriority (arg must be >= 2)\n                        seqChannel->notePriority = loBits;\n                        break;\n#endif\n#endif\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n                    case 0x20:\n#else\n                    case 0x10: // chan_startchannel\n#endif\n                        sp5A = m64_read_s16(state);\n                        sequence_channel_enable(seqPlayer, loBits, seqPlayer->seqData + sp5A);\n                        break;\n\n#if !defined(VERSION_SH) && !defined(VERSION_CN)\n                    case 0x20: // chan_disablechannel\n                        sequence_channel_disable(seqPlayer->channels[loBits]);\n                        break;\n#endif\n\n                    case 0x30: // chan_iowriteval2; write data back to audio lib for another channel\n                        cmd = m64_read_u8(state);\n                        seqPlayer->channels[loBits]->soundScriptIO[cmd] = value;\n                        break;\n\n                    case 0x40: // chan_ioreadval2; read data from audio lib from another channel\n                        cmd = m64_read_u8(state);\n                        value = seqPlayer->channels[loBits]->soundScriptIO[cmd];\n                        break;\n                }\n#if defined(VERSION_SH) || defined(VERSION_CN)\n                }\n#endif\n            }\n        }\n    }\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    out:\n#endif\n\n    for (i = 0; i < LAYERS_MAX; i++) {\n        if (seqChannel->layers[i] != 0) {\n            seq_channel_layer_process_script(seqChannel->layers[i]);\n        }\n    }\n}\n\nvoid sequence_player_process_sequence(struct SequencePlayer *seqPlayer) {\n    u8 cmd;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    UNUSED u32 pad;\n#endif\n    u8 loBits;\n    u8 temp;\n    s32 value;\n    s32 i;\n    u16 u16v;\n    u8 *seqData;\n    struct M64ScriptState *state;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    s32 temp32;\n#endif\n\n    if (seqPlayer->enabled == FALSE) {\n        return;\n    }\n\n#if !defined(VERSION_SH) && !defined(VERSION_CN)\n    if (seqPlayer->bankDmaInProgress == TRUE) {\n#ifdef VERSION_EU\n        if (osRecvMesg(&seqPlayer->bankDmaMesgQueue, NULL, 0) == -1) {\n            return;\n        }\n        if (seqPlayer->bankDmaRemaining == 0) {\n            seqPlayer->bankDmaInProgress = FALSE;\n            patch_audio_bank(\n                (struct AudioBank *) (gCtlEntries[seqPlayer->loadingBankId].instruments - 1),\n                gAlTbl->seqArray[seqPlayer->loadingBankId].offset,\n                gCtlEntries[seqPlayer->loadingBankId].numInstruments,\n                gCtlEntries[seqPlayer->loadingBankId].numDrums);\n            gCtlEntries[seqPlayer->loadingBankId].drums =\n                ((struct AudioBank *) (gCtlEntries[seqPlayer->loadingBankId].instruments - 1))->drums;\n            gBankLoadStatus[seqPlayer->loadingBankId] = SOUND_LOAD_STATUS_COMPLETE;\n        } else {\n            audio_dma_partial_copy_async(&seqPlayer->bankDmaCurrDevAddr, &seqPlayer->bankDmaCurrMemAddr,\n                                         &seqPlayer->bankDmaRemaining, &seqPlayer->bankDmaMesgQueue,\n                                         &seqPlayer->bankDmaIoMesg);\n        }\n#else\n        if (seqPlayer->bankDmaMesg == NULL) {\n            return;\n        }\n        if (seqPlayer->bankDmaRemaining == 0) {\n            seqPlayer->bankDmaInProgress = FALSE;\n            patch_audio_bank(seqPlayer->loadingBank, gAlTbl->seqArray[seqPlayer->loadingBankId].offset,\n                             seqPlayer->loadingBankNumInstruments, seqPlayer->loadingBankNumDrums);\n            gCtlEntries[seqPlayer->loadingBankId].numInstruments = seqPlayer->loadingBankNumInstruments;\n            gCtlEntries[seqPlayer->loadingBankId].numDrums = seqPlayer->loadingBankNumDrums;\n            gCtlEntries[seqPlayer->loadingBankId].instruments = seqPlayer->loadingBank->instruments;\n            gCtlEntries[seqPlayer->loadingBankId].drums = seqPlayer->loadingBank->drums;\n            gBankLoadStatus[seqPlayer->loadingBankId] = SOUND_LOAD_STATUS_COMPLETE;\n        } else {\n            osCreateMesgQueue(&seqPlayer->bankDmaMesgQueue, &seqPlayer->bankDmaMesg, 1);\n            seqPlayer->bankDmaMesg = NULL;\n            audio_dma_partial_copy_async(&seqPlayer->bankDmaCurrDevAddr, &seqPlayer->bankDmaCurrMemAddr,\n                                         &seqPlayer->bankDmaRemaining, &seqPlayer->bankDmaMesgQueue,\n                                         &seqPlayer->bankDmaIoMesg);\n        }\n#endif\n        return;\n    }\n\n    if (seqPlayer->seqDmaInProgress == TRUE) {\n#ifdef VERSION_EU\n        if (osRecvMesg(&seqPlayer->seqDmaMesgQueue, NULL, 0) == -1) {\n            return;\n        }\n#ifndef AVOID_UB\n        if (temp) {\n        }\n#endif\n#else\n        if (seqPlayer->seqDmaMesg == NULL) {\n            return;\n        }\n#endif\n        seqPlayer->seqDmaInProgress = FALSE;\n        gSeqLoadStatus[seqPlayer->seqId] = SOUND_LOAD_STATUS_COMPLETE;\n    }\n#endif\n\n    // If discarded, bail out.\n    if (IS_SEQ_LOAD_COMPLETE(seqPlayer->seqId) == FALSE\n        || (\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        seqPlayer->defaultBank[0] != 0xff &&\n#endif\n        IS_BANK_LOAD_COMPLETE(seqPlayer->defaultBank[0]) == FALSE)) {\n        eu_stubbed_printf_1(\"Disappear Sequence or Bank %d\\n\", seqPlayer->seqId);\n        sequence_player_disable(seqPlayer);\n        return;\n    }\n\n    // Remove possible SOUND_LOAD_STATUS_DISCARDABLE marks.\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    if (gSeqLoadStatus[seqPlayer->seqId] != 5)\n#endif\n        gSeqLoadStatus[seqPlayer->seqId] = SOUND_LOAD_STATUS_COMPLETE;\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    if (gBankLoadStatus[seqPlayer->defaultBank[0]] != 5)\n#endif\n        gBankLoadStatus[seqPlayer->defaultBank[0]] = SOUND_LOAD_STATUS_COMPLETE;\n\n    if (seqPlayer->muted && (seqPlayer->muteBehavior & MUTE_BEHAVIOR_STOP_SCRIPT) != 0) {\n        return;\n    }\n\n    // Check if we surpass the number of ticks needed for a tatum, else stop.\n    seqPlayer->tempoAcc += seqPlayer->tempo;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    seqPlayer->tempoAcc += seqPlayer->tempoAdd;\n#endif\n    if (seqPlayer->tempoAcc < gTempoInternalToExternal) {\n        return;\n    }\n    seqPlayer->tempoAcc -= (u16) gTempoInternalToExternal;\n\n    state = &seqPlayer->scriptState;\n    if (seqPlayer->delay > 1) {\n#ifndef AVOID_UB\n        if (temp) {\n        }\n#endif\n        seqPlayer->delay--;\n    } else {\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n        seqPlayer->recalculateVolume = 1;\n#endif\n        for (;;) {\n            cmd = m64_read_u8(state);\n            if (cmd == 0xff) { // seq_end\n                if (state->depth == 0) {\n                    sequence_player_disable(seqPlayer);\n                    break;\n                }\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                state->pc = state->stack[--state->depth];\n#else\n                state->depth--, state->pc = state->stack[state->depth];\n#endif\n            }\n\n            if (cmd == 0xfd) { // seq_delay\n                seqPlayer->delay = m64_read_compressed_u16(state);\n                break;\n            }\n\n            if (cmd == 0xfe) { // seq_delay1\n                seqPlayer->delay = 1;\n                break;\n            }\n\n            if (cmd >= 0xc0) {\n                switch (cmd) {\n                    case 0xff: // seq_end\n                        break;\n\n                    case 0xfc: // seq_call\n                        u16v = m64_read_s16(state);\n                        if (0 && state->depth >= 4) {\n                            eu_stubbed_printf_0(\"Macro Level Over Error!\\n\");\n                        }\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                        state->stack[state->depth++] = state->pc;\n#else\n                        state->depth++, state->stack[state->depth - 1] = state->pc;\n#endif\n                        state->pc = seqPlayer->seqData + u16v;\n                        break;\n\n                    case 0xf8: // seq_loop; loop start, N iterations (or 256 if N = 0)\n                        if (0 && state->depth >= 4) {\n                            eu_stubbed_printf_0(\"Macro Level Over Error!\\n\");\n                        }\n                        state->remLoopIters[state->depth] = m64_read_u8(state);\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                        state->stack[state->depth++] = state->pc;\n#else\n                        state->depth++, state->stack[state->depth - 1] = state->pc;\n#endif\n                        break;\n\n                    case 0xf7: // seq_loopend\n                        state->remLoopIters[state->depth - 1]--;\n                        if (state->remLoopIters[state->depth - 1] != 0) {\n                            state->pc = state->stack[state->depth - 1];\n                        } else {\n                            state->depth--;\n                        }\n                        break;\n\n                    case 0xfb: // seq_jump\n                    case 0xfa: // seq_beqz; jump if == 0\n                    case 0xf9: // seq_bltz; jump if < 0\n                    case 0xf5: // seq_bgez; jump if >= 0\n                        u16v = m64_read_s16(state);\n                        if (cmd == 0xfa && value != 0) {\n                            break;\n                        }\n                        if (cmd == 0xf9 && value >= 0) {\n                            break;\n                        }\n                        if (cmd == 0xf5 && value < 0) {\n                            break;\n                        }\n                        state->pc = seqPlayer->seqData + u16v;\n                        break;\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                    case 0xf4:\n                    case 0xf3:\n                    case 0xf2:\n                        temp = m64_read_u8(state);\n                        if (cmd == 0xf3 && value != 0) {\n                            break;\n                        }\n                        if (cmd == 0xf2 && value >= 0) {\n                            break;\n                        }\n                        state->pc += (s8) temp;\n                        break;\n#endif\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                    case 0xf1: // seq_reservenotes\n#else\n                    case 0xf2: // seq_reservenotes\n#endif\n                        note_pool_clear(&seqPlayer->notePool);\n                        note_pool_fill(&seqPlayer->notePool, m64_read_u8(state));\n                        break;\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                    case 0xf0: // seq_unreservenotes\n#else\n                    case 0xf1: // seq_unreservenotes\n#endif\n                        note_pool_clear(&seqPlayer->notePool);\n                        break;\n\n                    case 0xdf: // seq_transpose; set transposition in semitones\n                        seqPlayer->transposition = 0;\n                        // fallthrough\n\n                    case 0xde: // seq_transposerel; add transposition\n                        seqPlayer->transposition += (s8) m64_read_u8(state);\n                        break;\n\n                    case 0xdd: // seq_settempo (bpm)\n#if !defined(VERSION_SH) && !defined(VERSION_CN)\n                    case 0xdc: // seq_addtempo (bpm)\n#endif\n#if defined(VERSION_SH) || defined(VERSION_CN)\n                        seqPlayer->tempo = m64_read_u8(state) * TEMPO_SCALE;\n#else\n                        temp = m64_read_u8(state);\n                        if (cmd == 0xdd) {\n                            seqPlayer->tempo = temp * TEMPO_SCALE;\n                        } else {\n                            seqPlayer->tempo += (s8) temp * TEMPO_SCALE;\n                        }\n#endif\n\n                        if (seqPlayer->tempo > gTempoInternalToExternal) {\n                            seqPlayer->tempo = gTempoInternalToExternal;\n                        }\n\n                        //if (cmd) {}\n\n                        if ((s16) seqPlayer->tempo <= 0) {\n                            seqPlayer->tempo = 1;\n                        }\n                        break;\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n                    case 0xdc: // seq_addtempo (bpm)\n                        seqPlayer->tempoAdd = (s8) m64_read_u8(state) * TEMPO_SCALE;\n                        break;\n#endif\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                    case 0xda:\n                        cmd = m64_read_u8(state);\n                        u16v = m64_read_s16(state);\n                        switch (cmd) {\n                            case SEQUENCE_PLAYER_STATE_0:\n                            case SEQUENCE_PLAYER_STATE_FADE_OUT:\n                                if (seqPlayer->state != SEQUENCE_PLAYER_STATE_2) {\n                                    seqPlayer->fadeTimerUnkEu = u16v;\n                                    seqPlayer->state = cmd;\n                                }\n                                break;\n                            case SEQUENCE_PLAYER_STATE_2:\n                                seqPlayer->fadeRemainingFrames = u16v;\n                                seqPlayer->state = cmd;\n                                seqPlayer->fadeVelocity =\n                                    (0.0f - seqPlayer->fadeVolume) / (s32)(u16v & 0xFFFFu);\n                                break;\n                        }\n                        break;\n\n                    case 0xdb:\n                        temp32 = m64_read_u8(state);\n                        switch (seqPlayer->state) {\n                            case SEQUENCE_PLAYER_STATE_2:\n                                break;\n                            case SEQUENCE_PLAYER_STATE_FADE_OUT:\n                                seqPlayer->state = SEQUENCE_PLAYER_STATE_0;\n                                seqPlayer->fadeVolume = 0.0f;\n                                // fallthrough\n                            case SEQUENCE_PLAYER_STATE_0:\n                                seqPlayer->fadeRemainingFrames = seqPlayer->fadeTimerUnkEu;\n                                if (seqPlayer->fadeTimerUnkEu != 0) {\n                                    seqPlayer->fadeVelocity = (temp32 / 127.0f - seqPlayer->fadeVolume) / FLOAT_CAST(seqPlayer->fadeRemainingFrames);\n                                } else {\n                                    seqPlayer->fadeVolume = temp32 / 127.0f;\n                                }\n                        }\n                        break;\n#else\n                    case 0xdb: // seq_setvol\n                        cmd = m64_read_u8(state);\n                        switch (seqPlayer->state) {\n                            case SEQUENCE_PLAYER_STATE_2:\n                                if (seqPlayer->fadeRemainingFrames != 0) {\n                                    f32 targetVolume = FLOAT_CAST(cmd) / US_FLOAT(127.0);\n                                    seqPlayer->fadeVelocity = (targetVolume - seqPlayer->fadeVolume)\n                                                              / FLOAT_CAST(seqPlayer->fadeRemainingFrames);\n                                    break;\n                                }\n                                // fallthrough\n                            case SEQUENCE_PLAYER_STATE_0:\n                                seqPlayer->fadeVolume = FLOAT_CAST(cmd) / US_FLOAT(127.0);\n                                break;\n                            case SEQUENCE_PLAYER_STATE_FADE_OUT:\n                            case SEQUENCE_PLAYER_STATE_4:\n                                seqPlayer->volume = FLOAT_CAST(cmd) / US_FLOAT(127.0);\n                                break;\n                        }\n                        break;\n\n                    case 0xda: // seq_changevol\n                        temp = m64_read_u8(state);\n                        seqPlayer->fadeVolume =\n                            seqPlayer->fadeVolume + (f32)(s8) temp / US_FLOAT(127.0);\n                        break;\n#endif\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                    case 0xd9:\n                        temp = m64_read_u8(state);\n                        seqPlayer->fadeVolumeScale = (s8) temp / 127.0f;\n                        break;\n#endif\n\n                    case 0xd7: // seq_initchannels\n                        u16v = m64_read_s16(state);\n                        sequence_player_init_channels(seqPlayer, u16v);\n                        break;\n\n                    case 0xd6: // seq_disablechannels\n                        u16v = m64_read_s16(state);\n                        sequence_player_disable_channels(seqPlayer, u16v);\n                        break;\n\n                    case 0xd5: // seq_setmutescale\n                        temp = m64_read_u8(state);\n                        seqPlayer->muteVolumeScale = (f32)(s8) temp / US_FLOAT(127.0);\n                        break;\n\n                    case 0xd4: // seq_mute\n                        seqPlayer->muted = TRUE;\n                        break;\n\n                    case 0xd3: // seq_setmutebhv\n                        seqPlayer->muteBehavior = m64_read_u8(state);\n                        break;\n\n                    case 0xd2: // seq_setshortnotevelocitytable\n                    case 0xd1: // seq_setshortnotedurationtable\n                        u16v = m64_read_s16(state);\n                        seqData = seqPlayer->seqData + u16v;\n                        if (cmd == 0xd2) {\n                            seqPlayer->shortNoteVelocityTable = seqData;\n                        } else {\n                            seqPlayer->shortNoteDurationTable = seqData;\n                        }\n                        break;\n\n                    case 0xd0: // seq_setnoteallocationpolicy\n                        seqPlayer->noteAllocPolicy = m64_read_u8(state);\n                        break;\n\n                    case 0xcc: // seq_setval\n                        value = m64_read_u8(state);\n                        break;\n\n                    case 0xc9: // seq_bitand\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                        value &= m64_read_u8(state);\n#else\n                        value = m64_read_u8(state) & value;\n#endif\n                        break;\n\n                    case 0xc8: // seq_subtract\n                        value = value - m64_read_u8(state);\n                        break;\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n                    case 0xc7:\n                        cmd = m64_read_u8(state);\n                        u16v = m64_read_s16(state);\n                        seqData = seqPlayer->seqData + u16v;\n                        *seqData = (u8)value + cmd;\n                        break;\n\n                    case 0xc6:\n                        seqPlayer->unkSh = TRUE;\n                        return;\n#endif\n\n                    default:\n                        eu_stubbed_printf_1(\"Group:Undefine upper C0h command (%x)\\n\", cmd);\n                        break;\n                }\n            } else {\n                loBits = cmd & 0xf;\n                switch (cmd & 0xf0) {\n                    case 0x00: // seq_testchdisabled\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                        value = seqPlayer->channels[loBits]->finished;\n#else\n                        if (IS_SEQUENCE_CHANNEL_VALID(seqPlayer->channels[loBits]) == TRUE) {\n                            value = seqPlayer->channels[loBits]->finished;\n                        }\n#endif\n                        break;\n                    case 0x10:\n                        break;\n                    case 0x20:\n                        break;\n                    case 0x40:\n                        break;\n                    case 0x50: // seq_subvariation\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                        value -= seqPlayer->seqVariationEu[0];\n#else\n                        value -= seqPlayer->seqVariation;\n#endif\n                        break;\n                    case 0x60:\n                        break;\n                    case 0x70: // seq_setvariation\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                        seqPlayer->seqVariationEu[0] = value;\n#else\n                        seqPlayer->seqVariation = value;\n#endif\n                        break;\n                    case 0x80: // seq_getvariation\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n                        value = seqPlayer->seqVariationEu[0];\n#else\n                        value = seqPlayer->seqVariation;\n#endif\n                        break;\n                    case 0x90: // seq_startchannel\n                        u16v = m64_read_s16(state);\n                        sequence_channel_enable(seqPlayer, loBits, seqPlayer->seqData + u16v);\n                        break;\n                    case 0xa0:\n                        break;\n#if defined(VERSION_JP) || defined(VERSION_US)\n                    case 0xd8: // (this makes no sense)\n                        break;\n                    case 0xd9:\n                        break;\n#endif\n\n                    default:\n                        eu_stubbed_printf_0(\"Group:Undefined Command\\n\");\n                        break;\n                }\n            }\n        }\n    }\n\n    for (i = 0; i < CHANNELS_MAX; i++) {\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n        if (IS_SEQUENCE_CHANNEL_VALID(seqPlayer->channels[i]) == TRUE) {\n            sequence_channel_process_script(seqPlayer->channels[i]);\n        }\n#else\n        if (seqPlayer->channels[i] != &gSequenceChannelNone) {\n            sequence_channel_process_script(seqPlayer->channels[i]);\n        }\n#endif\n    }\n}\n\n// This runs 240 times per second.\nvoid process_sequences(UNUSED s32 iterationsRemaining) {\n    s32 i;\n    for (i = 0; i < SEQUENCE_PLAYERS; i++) {\n        if (gSequencePlayers[i].enabled == TRUE) {\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n            sequence_player_process_sequence(&gSequencePlayers[i]);\n            sequence_player_process_sound(&gSequencePlayers[i]);\n#else\n            sequence_player_process_sequence(gSequencePlayers + i);\n            sequence_player_process_sound(gSequencePlayers + i);\n#endif\n        }\n    }\n#if defined(VERSION_JP) || defined(VERSION_US)\n    reclaim_notes();\n#endif\n    process_notes();\n}\n\nvoid init_sequence_player(u32 player) {\n    struct SequencePlayer *seqPlayer = &gSequencePlayers[player];\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    sequence_player_disable(seqPlayer);\n#endif\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    seqPlayer->unkSh = FALSE;\n#else\n    seqPlayer->muted = FALSE;\n#endif\n    seqPlayer->delay = 0;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    seqPlayer->state = 1;\n#else\n    seqPlayer->state = SEQUENCE_PLAYER_STATE_0;\n#endif\n    seqPlayer->fadeRemainingFrames = 0;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    seqPlayer->fadeTimerUnkEu = 0;\n#endif\n    seqPlayer->tempoAcc = 0;\n    seqPlayer->tempo = 120 * TEMPO_SCALE; // 120 BPM\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    seqPlayer->tempoAdd = 0;\n#endif\n    seqPlayer->transposition = 0;\n#if !defined(VERSION_SH) && !defined(VERSION_CN)\n    seqPlayer->muteBehavior = MUTE_BEHAVIOR_STOP_SCRIPT | MUTE_BEHAVIOR_STOP_NOTES | MUTE_BEHAVIOR_SOFTEN;\n#endif\n    seqPlayer->noteAllocPolicy = 0;\n    seqPlayer->shortNoteVelocityTable = gDefaultShortNoteVelocityTable;\n    seqPlayer->shortNoteDurationTable = gDefaultShortNoteDurationTable;\n    seqPlayer->fadeVolume = 1.0f;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    seqPlayer->fadeVolumeScale = 1.0f;\n#endif\n    seqPlayer->fadeVelocity = 0.0f;\n    seqPlayer->volume = 0.0f;\n    seqPlayer->muteVolumeScale = 0.5f;\n}\n\nvoid init_sequence_players(void) {\n    // Initialization function, called from audio_init\n    s32 i, j;\n\n    for (i = 0; i < ARRAY_COUNT(gSequenceChannels); i++) {\n        gSequenceChannels[i].seqPlayer = NULL;\n        gSequenceChannels[i].enabled = FALSE;\n#if defined(VERSION_JP) || defined(VERSION_US)\n    }\n\n    for (i = 0; i < ARRAY_COUNT(gSequenceChannels); i++) {\n#endif\n        // @bug Size of wrong array. Zeroes out second half of gSequenceChannels[0],\n        // all of gSequenceChannels[1..31], and part of gSequenceLayers[0].\n        // However, this is only called at startup, so it's harmless.\n#ifdef AVOID_UB\n#define LAYERS_SIZE LAYERS_MAX\n#else\n#define LAYERS_SIZE ARRAY_COUNT(gSequenceLayers)\n#endif\n        for (j = 0; j < LAYERS_SIZE; j++) {\n            gSequenceChannels[i].layers[j] = NULL;\n        }\n    }\n\n    init_layer_freelist();\n\n    for (i = 0; i < ARRAY_COUNT(gSequenceLayers); i++) {\n        gSequenceLayers[i].seqChannel = NULL;\n        gSequenceLayers[i].enabled = FALSE;\n    }\n\n    for (i = 0; i < SEQUENCE_PLAYERS; i++) {\n        for (j = 0; j < CHANNELS_MAX; j++) {\n            gSequencePlayers[i].channels[j] = &gSequenceChannelNone;\n        }\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n        gSequencePlayers[i].seqVariationEu[0] = -1;\n#else\n        gSequencePlayers[i].seqVariation = -1;\n#endif\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        gSequencePlayers[i].muteBehavior = MUTE_BEHAVIOR_STOP_SCRIPT | MUTE_BEHAVIOR_STOP_NOTES | MUTE_BEHAVIOR_SOFTEN;\n        gSequencePlayers[i].enabled = FALSE;\n        gSequencePlayers[i].muted = FALSE;\n#endif\n        gSequencePlayers[i].bankDmaInProgress = FALSE;\n        gSequencePlayers[i].seqDmaInProgress = FALSE;\n        init_note_lists(&gSequencePlayers[i].notePool);\n        init_sequence_player(i);\n    }\n}\n\n"
  },
  {
    "path": "src/audio/seqplayer.h",
    "content": "#ifndef AUDIO_SEQPLAYER_H\n#define AUDIO_SEQPLAYER_H\n\n#include <PR/ultratypes.h>\n\n#include \"internal.h\"\n#include \"playback.h\"\n\nvoid seq_channel_layer_disable(struct SequenceChannelLayer *seqPlayer);\nvoid sequence_channel_disable(struct SequenceChannel *seqPlayer);\nvoid sequence_player_disable(struct SequencePlayer* seqPlayer);\nvoid audio_list_push_back(struct AudioListItem *list, struct AudioListItem *item);\nvoid *audio_list_pop_back(struct AudioListItem *list);\nvoid process_sequences(s32 iterationsRemaining);\nvoid init_sequence_player(u32 player);\nvoid init_sequence_players(void);\n\n#endif // AUDIO_SEQPLAYER_H\n"
  },
  {
    "path": "src/audio/shindou_debug_prints.c",
    "content": "#include <ultra64.h>\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n// synthesis.c\nchar shindouDebugPrint1[] = \"Terminate-Canceled Channel %d,Phase %d\\n\";\nchar shindouDebugPrint2[] = \"S->W\\n\";\nchar shindouDebugPrint3[] = \"W->S\\n\";\nchar shindouDebugPrint4[] = \"S-Resample Pitch %x (old %d -> delay %d)\\n\";\ns32 shindouDebugPrintPadding1[] = {0,0,0};\n\n// heap.c\nchar shindouDebugPrint5[] = \"Warning:Kill Note  %x \\n\";\nchar shindouDebugPrint6[] = \"Kill Voice %d (ID %d) %d\\n\";\nchar shindouDebugPrint7[] = \"Warning: Running Sequence's data disappear!\\n\";\nchar shindouDebugPrint8[] = \"%x %x %x\\n\";\nchar shindouDebugPrint9[] = \"Audio:Memory:Heap OverFlow : Not Allocate %d!\\n\";\nchar shindouDebugPrint10[] = \"%x %x %x\\n\"; // Again\nchar shindouDebugPrint11[] = \"Audio:Memory:Heap OverFlow : Not Allocate %d!\\n\"; // Again\nchar shindouDebugPrint12[] = \"Audio:Memory:DataHeap Not Allocate \\n\";\nchar shindouDebugPrint13[] = \"StayHeap Not Allocate %d\\n\";\nchar shindouDebugPrint14[] = \"AutoHeap Not Allocate %d\\n\";\nchar shindouDebugPrint15[] = \"Status ID0 : %d  ID1 : %d\\n\";\nchar shindouDebugPrint16[] = \"id 0 is Stopping\\n\";\nchar shindouDebugPrint17[] = \"id 0 is Stop\\n\";\nchar shindouDebugPrint18[] = \"id 1 is Stopping\\n\";\nchar shindouDebugPrint19[] = \"id 1 is Stop\\n\";\nchar shindouDebugPrint20[] = \"WARNING: NO FREE AUTOSEQ AREA.\\n\";\nchar shindouDebugPrint21[] = \"WARNING: NO STOP AUTO AREA.\\n\";\nchar shindouDebugPrint22[] = \"         AND TRY FORCE TO STOP SIDE \\n\";\nchar shindouDebugPrint23[] = \"Check ID0  (seq ID %d) Useing ...\\n\";\nchar shindouDebugPrint24[] = \"Check ID1  (seq ID %d) Useing ...\\n\";\nchar shindouDebugPrint25[] = \"No Free Seq area.\\n\";\nchar shindouDebugPrint26[] = \"CH %d: ID %d\\n\";\nchar shindouDebugPrint27[] = \"TWO SIDES ARE LOADING... ALLOC CANCELED.\\n\";\nchar shindouDebugPrint28[] = \"WARNING: Before Area Overlaid After.\";\nchar shindouDebugPrint29[] = \"WARNING: After Area Overlaid Before.\";\nchar shindouDebugPrint30[] = \"MEMORY:SzHeapAlloc ERROR: sza->side %d\\n\";\nchar shindouDebugPrint31[] = \"Audio:MEMORY:SzHeap Overflow error. (%d bytes)\\n\";\nchar shindouDebugPrint32[] = \"Auto Heap Unhit for ID %d\\n\";\nchar shindouDebugPrint33[] = \"Heap Reconstruct Start %x\\n\";\nchar shindouDebugPrint34[] = \"---------------------------------------TEMPO %d %f\\n\";\nchar shindouDebugPrint35[] = \"%f \\n\";\nchar shindouDebugPrint36[] = \"%f \\n\"; // Again\nchar shindouDebugPrint37[] = \"AHPBASE %x\\n\";\nchar shindouDebugPrint38[] = \"AHPCUR  %x\\n\";\nchar shindouDebugPrint39[] = \"HeapTop %x\\n\";\nchar shindouDebugPrint40[] = \"SynoutRate %d / %d \\n\";\nchar shindouDebugPrint41[] = \"FXSIZE %d\\n\";\nchar shindouDebugPrint42[] = \"FXCOMP %d\\n\";\nchar shindouDebugPrint43[] = \"FXDOWN %d\\n\";\nchar shindouDebugPrint44[] = \"WaveCacheLen: %d\\n\";\nchar shindouDebugPrint45[] = \"SpecChange Finished\\n\";\nchar shindouDebugPrint46[] = \"Warning:Emem Over,not alloc %d\\n\";\nchar shindouDebugPrint47[] = \"Single AutoSize %d\\n\";\nchar shindouDebugPrint48[] = \"Single Ptr %x\\n\";\nchar shindouDebugPrint49[] = \"Request--------Single-Auto, %d\\n\";\nchar shindouDebugPrint50[] = \"Retry %x, %x, len %x\\n\";\nchar shindouDebugPrint51[] = \"DMAing list %d is killed.\\n\";\nchar shindouDebugPrint52[] = \"Try Kill %d \\n\";\nchar shindouDebugPrint53[] = \"Try Kill %x %x\\n\";\nchar shindouDebugPrint54[] = \"Try Kill %x %x %x\\n\";\nchar shindouDebugPrint55[] = \"Rom back %x %x \\n\";\nchar shindouDebugPrint56[] = \"Error sw NULL \\n\";\nchar shindouDebugPrint57[] = \"Request--------Single-Stay, %d\\n\";\nchar shindouDebugPrint58[] = \"Try Kill %d \\n\";\nchar shindouDebugPrint59[] = \"Try Kill %x %x\\n\";\nchar shindouDebugPrint60[] = \"Try Kill %x %x %x\\n\";\ns32 shindouDebugPrintPadding[] = {0, 0, 0};\n\n// load.c\nchar shindouDebugPrint61[] = \"CAUTION:WAVE CACHE FULL %d\";\nchar shindouDebugPrint62[] = \"SUPERDMA\";\nchar shindouDebugPrint63[] = \"Bank Change... top %d lba %d\\n\";\nchar shindouDebugPrint64[] = \"BankCount %d\\n\";\nchar shindouDebugPrint65[] = \"BANK LOAD MISS! FOR %d\\n\";\nchar shindouDebugPrint66[] = \"BankCount %d\\n\";\nchar shindouDebugPrint67[] = \"Flush Start\\n\";\nchar shindouDebugPrint68[] = \"%d ->%d\\n\";\nchar shindouDebugPrint69[] = \"useflag %d\\n\";\nchar shindouDebugPrint70[] = \"BankCount %d\\n\";\nchar shindouDebugPrint71[] = \"%2x \";\nchar shindouDebugPrint72[] = \"StartSeq (Group %d,Seq %d) Process finish\\n\";\nchar shindouDebugPrint73[] = \"LoadCtrl, Ptr %x and Media is %d\\n\";\nchar shindouDebugPrint74[] = \"Load Bank, Type %d , ID %d\\n\";\nchar shindouDebugPrint75[] = \"get auto\\n\";\nchar shindouDebugPrint76[] = \"get s-auto %x\\n\";\nchar shindouDebugPrint77[] = \"Seq %d Write ID OK %d!\\n\";\nchar shindouDebugPrint78[] = \"Banknumber %d\\n\";\nchar shindouDebugPrint79[] = \"Bank Offset %x %d %d\\n\";\nchar shindouDebugPrint80[] = \"PEP Touch %x \\n\";\nchar shindouDebugPrint81[] = \"FastCopy\";\nchar shindouDebugPrint82[] = \"FastCopy\";\nchar shindouDebugPrint83[] = \"Error: Cannot DMA Media [%d]\\n\";\nchar shindouDebugPrint84[] = \"Warning: size not align 16 %x  (%s)\\n\";\nchar shindouDebugPrint85[] = \"Load Bank BG, Type %d , ID %d\\n\";\nchar shindouDebugPrint86[] = \"get auto\\n\";\nchar shindouDebugPrint87[] = \"get s-auto %x\\n\";\nchar shindouDebugPrint88[] = \"Clear Workarea %x -%x size %x \\n\";\nchar shindouDebugPrint89[] = \"AudioHeap is %x\\n\";\nchar shindouDebugPrint90[] = \"Heap reset.Synth Change %x \\n\";\nchar shindouDebugPrint91[] = \"Heap %x %x %x\\n\";\nchar shindouDebugPrint92[] = \"Main Heap Initialize.\\n\";\nchar shindouDebugPrint93[] = \"%d :WaveA %d WaveB %d Inst %d,Perc %d\\n\";\nchar shindouDebugPrint94[] = \"---------- Init Completed. ------------\\n\";\nchar shindouDebugPrint95[] = \" Syndrv    :[%6d]\\n\";\nchar shindouDebugPrint96[] = \" Seqdrv    :[%6d]\\n\";\nchar shindouDebugPrint97[] = \" audiodata :[%6d]\\n\";\nchar shindouDebugPrint98[] = \"---------------------------------------\\n\";\nchar shindouDebugPrint99[] = \"Entry--- %d %d\\n\";\nchar shindouDebugPrint100[] = \"---Block LPS here\\n\";\nchar shindouDebugPrint101[] = \"===Block LPS end\\n\";\nchar shindouDebugPrint102[] = \"SLOWCOPY\";\nchar shindouDebugPrint103[] = \"Req: Src %x Dest %x Len %x,media %d,retcode %d\\n\";\nchar shindouDebugPrint104[] = \"Remain Size %d\\n\";\nchar shindouDebugPrint105[] = \"---Block BG here\\n\";\nchar shindouDebugPrint106[] = \"===Block BG end\\n\";\nchar shindouDebugPrint107[] = \"Retcode %x\\n\";\nchar shindouDebugPrint108[] = \"Other Type: Not Write ID.\\n\";\nchar shindouDebugPrint109[] = \"BGLOAD:Error: dma length 0\\n\";\nchar shindouDebugPrint110[] = \"BGCOPY\";\nchar shindouDebugPrint111[] = \"Error: Already wavetable is touched %x.\\n\";\nchar shindouDebugPrint112[] = \"Touch Warning: Length zero %x\\n\";\nchar shindouDebugPrint113[] = \"It's busy now!!!!! %d\\n\"; // This one's my favorite\nchar shindouDebugPrint114[] = \"BG LOAD BUFFER is OVER.\\n\";\nchar shindouDebugPrint115[] = \"Warning: Length zero %x\\n\";\nchar shindouDebugPrint116[] = \"Wave Load %d \\n\";\nchar shindouDebugPrint117[] = \"Total Bg Wave Load %d \\n\";\nchar shindouDebugPrint118[] = \"Receive %d\\n\";\nchar shindouDebugPrint119[] = \"============Error: Magic is Broken after loading.\\n\";\nchar shindouDebugPrint120[] = \"Remain DMA: %d\\n\";\nchar shindouDebugPrint121[] = \"N start %d\\n\";\nchar shindouDebugPrint122[] = \"============Error: Magic is Broken: %x\\n\";\nchar shindouDebugPrint123[] = \"Error: No Handle.\\n\";\nchar shindouDebugPrint124[] = \"Success: %x\\n\";\n\n// port_eu.c\nchar shindouDebugPrint125[] = \"DAC:Lost 1 Frame.\\n\";\nchar shindouDebugPrint126[] = \"DMA: Request queue over.( %d )\\n\";\nchar shindouDebugPrint127[] = \"Spec Change Override. %d -> %d\\n\";\nchar shindouDebugPrint128[] = \"Audio:now-max tasklen is %d / %d\\n\";\nchar shindouDebugPrint129[] = \"Audio:Warning:ABI Tasklist length over (%d)\\n\";\ns32 D_SH_80314FC8 = 0x80;\nstruct SPTask *D_SH_80314FCC = NULL;\nchar shindouDebugPrint130[] = \"BGLOAD Start %d\\n\";\nchar shindouDebugPrint131[] = \"Error: OverFlow Your Request\\n\";\nchar shindouDebugPrint132[] = \"---AudioSending (%d->%d) \\n\";\n// These continue in unk_shindou_audio_file.c\n#endif\n"
  },
  {
    "path": "src/audio/synthesis.c",
    "content": "#if !defined(VERSION_SH) && !defined(VERSION_CN)\n#include <ultra64.h>\n\n#include \"synthesis.h\"\n#include \"heap.h\"\n#include \"data.h\"\n#include \"load.h\"\n#include \"seqplayer.h\"\n#include \"internal.h\"\n#include \"external.h\"\n\n\n#define DMEM_ADDR_TEMP 0x0\n#define DMEM_ADDR_RESAMPLED 0x20\n#define DMEM_ADDR_RESAMPLED2 0x160\n#define DMEM_ADDR_UNCOMPRESSED_NOTE 0x180\n#define DMEM_ADDR_NOTE_PAN_TEMP 0x200\n#define DMEM_ADDR_STEREO_STRONG_TEMP_DRY 0x200\n#define DMEM_ADDR_STEREO_STRONG_TEMP_WET 0x340\n#define DMEM_ADDR_COMPRESSED_ADPCM_DATA 0x3f0\n#define DMEM_ADDR_LEFT_CH 0x4c0\n#define DMEM_ADDR_RIGHT_CH 0x600\n#define DMEM_ADDR_WET_LEFT_CH 0x740\n#define DMEM_ADDR_WET_RIGHT_CH 0x880\n\n#define aSetLoadBufferPair(pkt, c, off)                                                                \\\n    aSetBuffer(pkt, 0, c + DMEM_ADDR_WET_LEFT_CH, 0, DEFAULT_LEN_1CH - c);                             \\\n    aLoadBuffer(pkt, VIRTUAL_TO_PHYSICAL2(gSynthesisReverb.ringBuffer.left + (off)));                  \\\n    aSetBuffer(pkt, 0, c + DMEM_ADDR_WET_RIGHT_CH, 0, DEFAULT_LEN_1CH - c);                            \\\n    aLoadBuffer(pkt, VIRTUAL_TO_PHYSICAL2(gSynthesisReverb.ringBuffer.right + (off)))\n\n#define aSetSaveBufferPair(pkt, c, d, off)                                                             \\\n    aSetBuffer(pkt, 0, 0, c + DMEM_ADDR_WET_LEFT_CH, d);                                               \\\n    aSaveBuffer(pkt, VIRTUAL_TO_PHYSICAL2(gSynthesisReverb.ringBuffer.left +  (off)));                 \\\n    aSetBuffer(pkt, 0, 0, c + DMEM_ADDR_WET_RIGHT_CH, d);                                              \\\n    aSaveBuffer(pkt, VIRTUAL_TO_PHYSICAL2(gSynthesisReverb.ringBuffer.right + (off)));\n\n#define ALIGN(val, amnt) (((val) + (1 << amnt) - 1) & ~((1 << amnt) - 1))\n\nstruct VolumeChange {\n    u16 sourceLeft;\n    u16 sourceRight;\n    u16 targetLeft;\n    u16 targetRight;\n};\n\nu64 *synthesis_do_one_audio_update(s16 *aiBuf, s32 bufLen, u64 *cmd, s32 updateIndex);\n#ifdef VERSION_EU\nu64 *synthesis_process_note(struct Note *note, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *synthesisState, s16 *aiBuf, s32 bufLen, u64 *cmd);\nu64 *load_wave_samples(u64 *cmd, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *synthesisState, s32 nSamplesToLoad);\nu64 *final_resample(u64 *cmd, struct NoteSynthesisState *synthesisState, s32 count, u16 pitch, u16 dmemIn, u32 flags);\nu64 *process_envelope(u64 *cmd, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *synthesisState, s32 nSamples, u16 inBuf, s32 headsetPanSettings, u32 flags);\nu64 *note_apply_headset_pan_effects(u64 *cmd, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *note, s32 bufLen, s32 flags, s32 leftRight);\n#else\nu64 *synthesis_process_notes(s16 *aiBuf, s32 bufLen, u64 *cmd);\nu64 *load_wave_samples(u64 *cmd, struct Note *note, s32 nSamplesToLoad);\nu64 *final_resample(u64 *cmd, struct Note *note, s32 count, u16 pitch, u16 dmemIn, u32 flags);\nu64 *process_envelope(u64 *cmd, struct Note *note, s32 nSamples, u16 inBuf, s32 headsetPanSettings,\n                      u32 flags);\nu64 *process_envelope_inner(u64 *cmd, struct Note *note, s32 nSamples, u16 inBuf,\n                            s32 headsetPanSettings, struct VolumeChange *vol);\nu64 *note_apply_headset_pan_effects(u64 *cmd, struct Note *note, s32 bufLen, s32 flags, s32 leftRight);\n#endif\n\n#ifdef VERSION_EU\nstruct SynthesisReverb gSynthesisReverbs[4];\nu8 sAudioSynthesisPad[0x10];\n#else\nstruct SynthesisReverb gSynthesisReverb;\nu8 sAudioSynthesisPad[0x20];\n#endif\n\n#ifdef VERSION_EU\ns16 gVolume;\ns8 gUseReverb;\ns8 gNumSynthesisReverbs;\nstruct NoteSubEu *gNoteSubsEu;\n#endif\n\n#ifdef VERSION_EU\nf32 gLeftVolRampings[3][1024];\nf32 gRightVolRampings[3][1024];\nf32 *gCurrentLeftVolRamping; // Points to any of the three left buffers above\nf32 *gCurrentRightVolRamping; // Points to any of the three right buffers above\n\nu8 audioString1[] = \"pitch %x: delaybytes %d : olddelay %d\\n\";\nu8 audioString2[] = \"cont %x: delaybytes %d : olddelay %d\\n\";\n#endif\n\n#ifdef VERSION_EU\n// Equivalent functionality as the US/JP version,\n// just that the reverb structure is chosen from an array with index\nvoid prepare_reverb_ring_buffer(s32 chunkLen, u32 updateIndex, s32 reverbIndex) {\n    struct ReverbRingBufferItem *item;\n    struct SynthesisReverb *reverb = &gSynthesisReverbs[reverbIndex];\n    s32 srcPos;\n    s32 dstPos;\n    s32 nSamples;\n    s32 excessiveSamples;\n    s32 UNUSED pad[3];\n    if (reverb->downsampleRate != 1) {\n        if (reverb->framesLeftToIgnore == 0) {\n            // Now that the RSP has finished, downsample the samples produced two frames ago by skipping\n            // samples.\n            item = &reverb->items[reverb->curFrame][updateIndex];\n\n            // Touches both left and right since they are adjacent in memory\n            osInvalDCache(item->toDownsampleLeft, DEFAULT_LEN_2CH);\n\n            for (srcPos = 0, dstPos = 0; dstPos < item->lengthA / 2;\n                 srcPos += reverb->downsampleRate, dstPos++) {\n                reverb->ringBuffer.left[item->startPos + dstPos] =\n                    item->toDownsampleLeft[srcPos];\n                reverb->ringBuffer.right[item->startPos + dstPos] =\n                    item->toDownsampleRight[srcPos];\n            }\n            for (dstPos = 0; dstPos < item->lengthB / 2; srcPos += reverb->downsampleRate, dstPos++) {\n                reverb->ringBuffer.left[dstPos] = item->toDownsampleLeft[srcPos];\n                reverb->ringBuffer.right[dstPos] = item->toDownsampleRight[srcPos];\n            }\n        }\n    }\n\n    item = &reverb->items[reverb->curFrame][updateIndex];\n    nSamples = chunkLen / reverb->downsampleRate;\n    excessiveSamples = (nSamples + reverb->nextRingBufferPos) - reverb->bufSizePerChannel;\n    if (excessiveSamples < 0) {\n        // There is space in the ring buffer before it wraps around\n        item->lengthA = nSamples * 2;\n        item->lengthB = 0;\n        item->startPos = (s32) reverb->nextRingBufferPos;\n        reverb->nextRingBufferPos += nSamples;\n    } else {\n        // Ring buffer wrapped around\n        item->lengthA = (nSamples - excessiveSamples) * 2;\n        item->lengthB = excessiveSamples * 2;\n        item->startPos = reverb->nextRingBufferPos;\n        reverb->nextRingBufferPos = excessiveSamples;\n    }\n    // These fields are never read later\n    item->numSamplesAfterDownsampling = nSamples;\n    item->chunkLen = chunkLen;\n}\n#else\nvoid prepare_reverb_ring_buffer(s32 chunkLen, u32 updateIndex) {\n    struct ReverbRingBufferItem *item;\n    s32 srcPos;\n    s32 dstPos;\n    s32 nSamples;\n    s32 numSamplesAfterDownsampling;\n    s32 excessiveSamples;\n    if (gReverbDownsampleRate != 1) {\n        if (gSynthesisReverb.framesLeftToIgnore == 0) {\n            // Now that the RSP has finished, downsample the samples produced two frames ago by skipping\n            // samples.\n            item = &gSynthesisReverb.items[gSynthesisReverb.curFrame][updateIndex];\n\n            // Touches both left and right since they are adjacent in memory\n            osInvalDCache(item->toDownsampleLeft, DEFAULT_LEN_2CH);\n\n            for (srcPos = 0, dstPos = 0; dstPos < item->lengthA / 2;\n                 srcPos += gReverbDownsampleRate, dstPos++) {\n                gSynthesisReverb.ringBuffer.left[dstPos + item->startPos] =\n                    item->toDownsampleLeft[srcPos];\n                gSynthesisReverb.ringBuffer.right[dstPos + item->startPos] =\n                    item->toDownsampleRight[srcPos];\n            }\n            for (dstPos = 0; dstPos < item->lengthB / 2; srcPos += gReverbDownsampleRate, dstPos++) {\n                gSynthesisReverb.ringBuffer.left[dstPos] = item->toDownsampleLeft[srcPos];\n                gSynthesisReverb.ringBuffer.right[dstPos] = item->toDownsampleRight[srcPos];\n            }\n        }\n    }\n    item = &gSynthesisReverb.items[gSynthesisReverb.curFrame][updateIndex];\n\n    numSamplesAfterDownsampling = chunkLen / gReverbDownsampleRate;\n    if (((numSamplesAfterDownsampling + gSynthesisReverb.nextRingBufferPos) - gSynthesisReverb.bufSizePerChannel) < 0) {\n        // There is space in the ring buffer before it wraps around\n        item->lengthA = numSamplesAfterDownsampling * 2;\n        item->lengthB = 0;\n        item->startPos = (s32) gSynthesisReverb.nextRingBufferPos;\n        gSynthesisReverb.nextRingBufferPos += numSamplesAfterDownsampling;\n    } else {\n        // Ring buffer wrapped around\n        excessiveSamples =\n            (numSamplesAfterDownsampling + gSynthesisReverb.nextRingBufferPos) - gSynthesisReverb.bufSizePerChannel;\n        nSamples = numSamplesAfterDownsampling - excessiveSamples;\n        item->lengthA = nSamples * 2;\n        item->lengthB = excessiveSamples * 2;\n        item->startPos = gSynthesisReverb.nextRingBufferPos;\n        gSynthesisReverb.nextRingBufferPos = excessiveSamples;\n    }\n    // These fields are never read later\n    item->numSamplesAfterDownsampling = numSamplesAfterDownsampling;\n    item->chunkLen = chunkLen;\n}\n#endif\n\n#ifdef VERSION_EU\nu64 *synthesis_load_reverb_ring_buffer(u64 *cmd, u16 addr, u16 srcOffset, s32 len, s32 reverbIndex) {\n    aSetBuffer(cmd++, 0, addr, 0, len);\n    aLoadBuffer(cmd++, VIRTUAL_TO_PHYSICAL2(&gSynthesisReverbs[reverbIndex].ringBuffer.left[srcOffset]));\n\n    aSetBuffer(cmd++, 0, addr + DEFAULT_LEN_1CH, 0, len);\n    aLoadBuffer(cmd++, VIRTUAL_TO_PHYSICAL2(&gSynthesisReverbs[reverbIndex].ringBuffer.right[srcOffset]));\n\n    return cmd;\n}\n#endif\n\n#ifdef VERSION_EU\nu64 *synthesis_save_reverb_ring_buffer(u64 *cmd, u16 addr, u16 destOffset, s32 len, s32 reverbIndex) {\n    aSetBuffer(cmd++, 0, 0, addr, len);\n    aSaveBuffer(cmd++, VIRTUAL_TO_PHYSICAL2(&gSynthesisReverbs[reverbIndex].ringBuffer.left[destOffset]));\n\n    aSetBuffer(cmd++, 0, 0, addr + DEFAULT_LEN_1CH, len);\n    aSaveBuffer(cmd++, VIRTUAL_TO_PHYSICAL2(&gSynthesisReverbs[reverbIndex].ringBuffer.right[destOffset]));\n\n    return cmd;\n}\n#endif\n\n#ifdef VERSION_EU\nvoid synthesis_load_note_subs_eu(s32 updateIndex) {\n    struct NoteSubEu *src;\n    struct NoteSubEu *dest;\n    s32 i;\n\n    for (i = 0; i < gMaxSimultaneousNotes; i++) {\n        src = &gNotes[i].noteSubEu;\n        dest = &gNoteSubsEu[gMaxSimultaneousNotes * updateIndex + i];\n        if (src->enabled) {\n            *dest = *src;\n            src->needsInit = FALSE;\n        } else {\n            dest->enabled = FALSE;\n        }\n    }\n}\n#endif\n\n#ifndef VERSION_EU\ns32 get_volume_ramping(u16 sourceVol, u16 targetVol, s32 arg2) {\n    // This roughly computes 2^16 * (targetVol / sourceVol) ^ (8 / arg2),\n    // but with discretizations of targetVol, sourceVol and arg2.\n    f32 ret;\n    switch (arg2) {\n        default:\n            ret = gVolRampingLhs136[targetVol >> 8] * gVolRampingRhs136[sourceVol >> 8];\n            break;\n        case 128:\n            ret = gVolRampingLhs128[targetVol >> 8] * gVolRampingRhs128[sourceVol >> 8];\n            break;\n        case 136:\n            ret = gVolRampingLhs136[targetVol >> 8] * gVolRampingRhs136[sourceVol >> 8];\n            break;\n        case 144:\n            ret = gVolRampingLhs144[targetVol >> 8] * gVolRampingRhs144[sourceVol >> 8];\n            break;\n    }\n    return ret;\n}\n#endif\n\n#ifdef VERSION_EU\n// TODO: (Scrub C) pointless mask and whitespace\nu64 *synthesis_execute(u64 *cmdBuf, s32 *writtenCmds, s16 *aiBuf, s32 bufLen) {\n    s32 i, j;\n    f32 *leftVolRamp;\n    f32 *rightVolRamp;\n    u32 *aiBufPtr;\n    u64 *cmd = cmdBuf;\n    s32 chunkLen;\n    s32 nextVolRampTable;\n\n    for (i = gAudioBufferParameters.updatesPerFrame; i > 0; i--) {\n        process_sequences(i - 1);\n        synthesis_load_note_subs_eu(gAudioBufferParameters.updatesPerFrame - i);\n    }\n    aSegment(cmd++, 0, 0);\n    aiBufPtr = (u32 *) aiBuf;\n    for (i = gAudioBufferParameters.updatesPerFrame; i > 0; i--) {\n        if (i == 1) {\n#pragma GCC diagnostic push\n#if defined(__clang__)\n#pragma GCC diagnostic ignored \"-Wself-assign\"\n#endif\n            // self-assignment has no affect when added here, could possibly simplify a macro definition\n            chunkLen = bufLen; nextVolRampTable = nextVolRampTable; leftVolRamp = gLeftVolRampings[nextVolRampTable]; rightVolRamp = gRightVolRampings[nextVolRampTable & 0xFFFFFFFF];\n#pragma GCC diagnostic pop\n        } else {\n            if (bufLen / i >= gAudioBufferParameters.samplesPerUpdateMax) {\n                chunkLen = gAudioBufferParameters.samplesPerUpdateMax; nextVolRampTable = 2; leftVolRamp = gLeftVolRampings[2]; rightVolRamp = gRightVolRampings[2];\n            } else if (bufLen / i <= gAudioBufferParameters.samplesPerUpdateMin) {\n                chunkLen = gAudioBufferParameters.samplesPerUpdateMin; nextVolRampTable = 0; leftVolRamp = gLeftVolRampings[0]; rightVolRamp = gRightVolRampings[0];\n            } else {\n                chunkLen = gAudioBufferParameters.samplesPerUpdate; nextVolRampTable = 1; leftVolRamp = gLeftVolRampings[1]; rightVolRamp = gRightVolRampings[1];\n            }\n        }\n        gCurrentLeftVolRamping = leftVolRamp;\n        gCurrentRightVolRamping = rightVolRamp;\n        for (j = 0; j < gNumSynthesisReverbs; j++) {\n            if (gSynthesisReverbs[j].useReverb != 0) {\n                prepare_reverb_ring_buffer(chunkLen, gAudioBufferParameters.updatesPerFrame - i, j);\n            }\n        }\n        cmd = synthesis_do_one_audio_update((s16 *) aiBufPtr, chunkLen, cmd, gAudioBufferParameters.updatesPerFrame - i);\n        bufLen -= chunkLen;\n        aiBufPtr += chunkLen;\n    }\n\n    for (j = 0; j < gNumSynthesisReverbs; j++) {\n        if (gSynthesisReverbs[j].framesLeftToIgnore != 0) {\n            gSynthesisReverbs[j].framesLeftToIgnore--;\n        }\n        gSynthesisReverbs[j].curFrame ^= 1;\n    }\n    *writtenCmds = cmd - cmdBuf;\n    return cmd;\n}\n#else\n// bufLen will be divisible by 16\nu64 *synthesis_execute(u64 *cmdBuf, s32 *writtenCmds, s16 *aiBuf, s32 bufLen) {\n    s32 chunkLen;\n    s32 i;\n    u32 *aiBufPtr = (u32 *) aiBuf;\n    u64 *cmd = cmdBuf + 1;\n    s32 v0;\n\n    aSegment(cmdBuf, 0, 0);\n\n    for (i = gAudioUpdatesPerFrame; i > 0; i--) {\n        if (i == 1) {\n            // 'bufLen' will automatically be divisible by 8, no need to round\n            chunkLen = bufLen;\n        } else {\n            v0 = bufLen / i;\n            // chunkLen = v0 rounded to nearest multiple of 8\n            chunkLen = v0 - (v0 & 7);\n\n            if ((v0 & 7) >= 4) {\n                chunkLen += 8;\n            }\n        }\n        process_sequences(i - 1);\n        if (gSynthesisReverb.useReverb != 0) {\n            prepare_reverb_ring_buffer(chunkLen, gAudioUpdatesPerFrame - i);\n        }\n        cmd = synthesis_do_one_audio_update((s16 *) aiBufPtr, chunkLen, cmd, gAudioUpdatesPerFrame - i);\n        bufLen -= chunkLen;\n        aiBufPtr += chunkLen;\n    }\n    if (gSynthesisReverb.framesLeftToIgnore != 0) {\n        gSynthesisReverb.framesLeftToIgnore--;\n    }\n    gSynthesisReverb.curFrame ^= 1;\n    *writtenCmds = cmd - cmdBuf;\n    return cmd;\n}\n#endif\n\n\n#ifdef VERSION_EU\nu64 *synthesis_resample_and_mix_reverb(u64 *cmd, s32 bufLen, s16 reverbIndex, s16 updateIndex) {\n    struct ReverbRingBufferItem *item;\n    s16 startPad;\n    s16 paddedLengthA;\n\n    item = &gSynthesisReverbs[reverbIndex].items[gSynthesisReverbs[reverbIndex].curFrame][updateIndex];\n\n    aClearBuffer(cmd++, DMEM_ADDR_WET_LEFT_CH, DEFAULT_LEN_2CH);\n    if (gSynthesisReverbs[reverbIndex].downsampleRate == 1) {\n        cmd = synthesis_load_reverb_ring_buffer(cmd, DMEM_ADDR_WET_LEFT_CH, item->startPos, item->lengthA, reverbIndex);\n        if (item->lengthB != 0) {\n            cmd = synthesis_load_reverb_ring_buffer(cmd, DMEM_ADDR_WET_LEFT_CH + item->lengthA, 0, item->lengthB, reverbIndex);\n        }\n        aSetBuffer(cmd++, 0, 0, 0, DEFAULT_LEN_2CH);\n        aMix(cmd++, 0, 0x7fff, DMEM_ADDR_WET_LEFT_CH, DMEM_ADDR_LEFT_CH);\n        aMix(cmd++, 0, 0x8000 + gSynthesisReverbs[reverbIndex].reverbGain, DMEM_ADDR_WET_LEFT_CH, DMEM_ADDR_WET_LEFT_CH);\n    } else {\n        startPad = (item->startPos % 8u) * 2;\n        paddedLengthA = ALIGN(startPad + item->lengthA, 4);\n\n        cmd = synthesis_load_reverb_ring_buffer(cmd, DMEM_ADDR_RESAMPLED, (item->startPos - startPad / 2), DEFAULT_LEN_1CH, reverbIndex);\n        if (item->lengthB != 0) {\n            cmd = synthesis_load_reverb_ring_buffer(cmd, DMEM_ADDR_RESAMPLED + paddedLengthA, 0, DEFAULT_LEN_1CH - paddedLengthA, reverbIndex);\n        }\n\n        aSetBuffer(cmd++, 0, DMEM_ADDR_RESAMPLED + startPad, DMEM_ADDR_WET_LEFT_CH, bufLen * 2);\n        aResample(cmd++, gSynthesisReverbs[reverbIndex].resampleFlags, gSynthesisReverbs[reverbIndex].resampleRate, VIRTUAL_TO_PHYSICAL2(gSynthesisReverbs[reverbIndex].resampleStateLeft));\n\n        aSetBuffer(cmd++, 0, DMEM_ADDR_RESAMPLED2 + startPad, DMEM_ADDR_WET_RIGHT_CH, bufLen * 2);\n        aResample(cmd++, gSynthesisReverbs[reverbIndex].resampleFlags, gSynthesisReverbs[reverbIndex].resampleRate, VIRTUAL_TO_PHYSICAL2(gSynthesisReverbs[reverbIndex].resampleStateRight));\n\n        aSetBuffer(cmd++, 0, 0, 0, DEFAULT_LEN_2CH);\n        aMix(cmd++, 0, 0x7fff, DMEM_ADDR_WET_LEFT_CH, DMEM_ADDR_LEFT_CH);\n        aMix(cmd++, 0, 0x8000 + gSynthesisReverbs[reverbIndex].reverbGain, DMEM_ADDR_WET_LEFT_CH, DMEM_ADDR_WET_LEFT_CH);\n    }\n    return cmd;\n}\n\nu64 *synthesis_save_reverb_samples(u64 *cmd, s16 reverbIndex, s16 updateIndex) {\n    struct ReverbRingBufferItem *item;\n\n    item = &gSynthesisReverbs[reverbIndex].items[gSynthesisReverbs[reverbIndex].curFrame][updateIndex];\n    if (gSynthesisReverbs[reverbIndex].useReverb != 0) {\n        switch (gSynthesisReverbs[reverbIndex].downsampleRate) {\n            case 1:\n                // Put the oldest samples in the ring buffer into the wet channels\n                cmd = synthesis_save_reverb_ring_buffer(cmd, DMEM_ADDR_WET_LEFT_CH, item->startPos, item->lengthA, reverbIndex);\n                if (item->lengthB != 0) {\n                    // Ring buffer wrapped\n                    cmd = synthesis_save_reverb_ring_buffer(cmd, DMEM_ADDR_WET_LEFT_CH + item->lengthA, 0, item->lengthB, reverbIndex);\n                }\n                break;\n\n            default:\n                // Downsampling is done later by CPU when RSP is done, therefore we need to have double\n                // buffering. Left and right buffers are adjacent in memory.\n                aSetBuffer(cmd++, 0, 0, DMEM_ADDR_WET_LEFT_CH, DEFAULT_LEN_2CH);\n                aSaveBuffer(cmd++, VIRTUAL_TO_PHYSICAL2(gSynthesisReverbs[reverbIndex].items[gSynthesisReverbs[reverbIndex].curFrame][updateIndex].toDownsampleLeft));\n                gSynthesisReverbs[reverbIndex].resampleFlags = 0;\n                break;\n        }\n    }\n    return cmd;\n}\n#endif\n\n#ifdef VERSION_EU\nu64 *synthesis_do_one_audio_update(s16 *aiBuf, s32 bufLen, u64 *cmd, s32 updateIndex) {\n    struct NoteSubEu *noteSubEu;\n    u8 noteIndices[56];\n    s32 temp;\n    s32 i;\n    s16 j;\n    s16 notePos = 0;\n\n    if (gNumSynthesisReverbs == 0) {\n        for (i = 0; i < gMaxSimultaneousNotes; i++) {\n            if (gNoteSubsEu[gMaxSimultaneousNotes * updateIndex + i].enabled) {\n                noteIndices[notePos++] = i;\n            }\n        }\n    } else {\n        for (j = 0; j < gNumSynthesisReverbs; j++) {\n            for (i = 0; i < gMaxSimultaneousNotes; i++) {\n                noteSubEu = &gNoteSubsEu[gMaxSimultaneousNotes * updateIndex + i];\n                if (noteSubEu->enabled && j == noteSubEu->reverbIndex) {\n                    noteIndices[notePos++] = i;\n                }\n            }\n        }\n\n        for (i = 0; i < gMaxSimultaneousNotes; i++) {\n            noteSubEu = &gNoteSubsEu[gMaxSimultaneousNotes * updateIndex + i];\n            if (noteSubEu->enabled && noteSubEu->reverbIndex >= gNumSynthesisReverbs) {\n                noteIndices[notePos++] = i;\n            }\n        }\n    }\n    aClearBuffer(cmd++, DMEM_ADDR_LEFT_CH, DEFAULT_LEN_2CH);\n    i = 0;\n    for (j = 0; j < gNumSynthesisReverbs; j++) {\n        gUseReverb = gSynthesisReverbs[j].useReverb;\n        if (gUseReverb != 0) {\n            cmd = synthesis_resample_and_mix_reverb(cmd, bufLen, j, updateIndex);\n        }\n        for (; i < notePos; i++) {\n            temp = updateIndex * gMaxSimultaneousNotes;\n            if (j == gNoteSubsEu[temp + noteIndices[i]].reverbIndex) {\n                cmd = synthesis_process_note(&gNotes[noteIndices[i]],\n                                             &gNoteSubsEu[temp + noteIndices[i]],\n                                             &gNotes[noteIndices[i]].synthesisState,\n                                             aiBuf, bufLen, cmd);\n                continue;\n            } else {\n                break;\n            }\n        }\n        if (gSynthesisReverbs[j].useReverb != 0) {\n            cmd = synthesis_save_reverb_samples(cmd, j, updateIndex);\n        }\n    }\n    for (; i < notePos; i++) {\n        temp = updateIndex * gMaxSimultaneousNotes;\n        if (IS_BANK_LOAD_COMPLETE(gNoteSubsEu[temp + noteIndices[i]].bankId) == TRUE) {\n            cmd = synthesis_process_note(&gNotes[noteIndices[i]],\n                                         &gNoteSubsEu[temp + noteIndices[i]],\n                                         &gNotes[noteIndices[i]].synthesisState,\n                                         aiBuf, bufLen, cmd);\n        } else {\n            gAudioErrorFlags = (gNoteSubsEu[temp + noteIndices[i]].bankId + (i << 8)) + 0x10000000;\n        }\n    }\n\n    temp = bufLen * 2;\n    aSetBuffer(cmd++, 0, 0, DMEM_ADDR_TEMP, temp);\n    aInterleave(cmd++, DMEM_ADDR_LEFT_CH, DMEM_ADDR_RIGHT_CH);\n    aSetBuffer(cmd++, 0, 0, DMEM_ADDR_TEMP, temp * 2);\n    aSaveBuffer(cmd++, VIRTUAL_TO_PHYSICAL2(aiBuf));\n    return cmd;\n}\n#else\nu64 *synthesis_do_one_audio_update(s16 *aiBuf, s32 bufLen, u64 *cmd, s32 updateIndex) {\n    UNUSED s32 pad1[1];\n    s16 ra;\n    s16 t4;\n    UNUSED s32 pad[2];\n    struct ReverbRingBufferItem *v1;\n    UNUSED s32 pad2[1];\n    s16 temp;\n\n    v1 = &gSynthesisReverb.items[gSynthesisReverb.curFrame][updateIndex];\n\n    if (gSynthesisReverb.useReverb == 0) {\n        aClearBuffer(cmd++, DMEM_ADDR_LEFT_CH, DEFAULT_LEN_2CH);\n        cmd = synthesis_process_notes(aiBuf, bufLen, cmd);\n    } else {\n        if (gReverbDownsampleRate == 1) {\n            // Put the oldest samples in the ring buffer into the wet channels\n            aSetLoadBufferPair(cmd++, 0, v1->startPos);\n            if (v1->lengthB != 0) {\n                // Ring buffer wrapped\n                aSetLoadBufferPair(cmd++, v1->lengthA, 0);\n                temp = 0;\n            }\n\n            // Use the reverb sound as initial sound for this audio update\n            aDMEMMove(cmd++, DMEM_ADDR_WET_LEFT_CH, DMEM_ADDR_LEFT_CH, DEFAULT_LEN_2CH);\n\n            // (Hopefully) lower the volume of the wet channels. New reverb will later be mixed into\n            // these channels.\n            aSetBuffer(cmd++, 0, 0, 0, DEFAULT_LEN_2CH);\n            // 0x8000 here is -100%\n            aMix(cmd++, 0, /*gain*/ 0x8000 + gSynthesisReverb.reverbGain, /*in*/ DMEM_ADDR_WET_LEFT_CH,\n                 /*out*/ DMEM_ADDR_WET_LEFT_CH);\n        } else {\n            // Same as above but upsample the previously downsampled samples used for reverb first\n            temp = 0; //! jesus christ\n            t4 = (v1->startPos & 7) * 2;\n            ra = ALIGN(v1->lengthA + t4, 4);\n            aSetLoadBufferPair(cmd++, 0, v1->startPos - t4 / 2);\n            if (v1->lengthB != 0) {\n                // Ring buffer wrapped\n                aSetLoadBufferPair(cmd++, ra, 0);\n                //! We need an empty statement (even an empty ';') here to make the function match (because IDO).\n                //! However, copt removes extraneous statements and dead code. So we need to trick copt\n                //! into thinking 'temp' could be undefined, and luckily the compiler optimizes out the\n                //! useless assignment.\n                ra = ra + temp;\n            }\n            aSetBuffer(cmd++, 0, t4 + DMEM_ADDR_WET_LEFT_CH, DMEM_ADDR_LEFT_CH, bufLen << 1);\n            aResample(cmd++, gSynthesisReverb.resampleFlags, (u16) gSynthesisReverb.resampleRate, VIRTUAL_TO_PHYSICAL2(gSynthesisReverb.resampleStateLeft));\n            aSetBuffer(cmd++, 0, t4 + DMEM_ADDR_WET_RIGHT_CH, DMEM_ADDR_RIGHT_CH, bufLen << 1);\n            aResample(cmd++, gSynthesisReverb.resampleFlags, (u16) gSynthesisReverb.resampleRate, VIRTUAL_TO_PHYSICAL2(gSynthesisReverb.resampleStateRight));\n            aSetBuffer(cmd++, 0, 0, 0, DEFAULT_LEN_2CH);\n            aMix(cmd++, 0, /*gain*/ 0x8000 + gSynthesisReverb.reverbGain, /*in*/ DMEM_ADDR_LEFT_CH, /*out*/ DMEM_ADDR_LEFT_CH);\n            aDMEMMove(cmd++, DMEM_ADDR_LEFT_CH, DMEM_ADDR_WET_LEFT_CH, DEFAULT_LEN_2CH);\n        }\n        cmd = synthesis_process_notes(aiBuf, bufLen, cmd);\n        if (gReverbDownsampleRate == 1) {\n            aSetSaveBufferPair(cmd++, 0, v1->lengthA, v1->startPos);\n            if (v1->lengthB != 0) {\n                // Ring buffer wrapped\n                aSetSaveBufferPair(cmd++, v1->lengthA, v1->lengthB, 0);\n            }\n        } else {\n            // Downsampling is done later by CPU when RSP is done, therefore we need to have double\n            // buffering. Left and right buffers are adjacent in memory.\n            aSetBuffer(cmd++, 0, 0, DMEM_ADDR_WET_LEFT_CH, DEFAULT_LEN_2CH);\n            aSaveBuffer(cmd++, VIRTUAL_TO_PHYSICAL2(gSynthesisReverb.items[gSynthesisReverb.curFrame][updateIndex].toDownsampleLeft));\n            gSynthesisReverb.resampleFlags = 0;\n        }\n    }\n    return cmd;\n}\n#endif\n\n#ifdef VERSION_EU\n// Processes just one note, not all\nu64 *synthesis_process_note(struct Note *note, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *synthesisState, UNUSED s16 *aiBuf, s32 bufLen, u64 *cmd) {\n    UNUSED s32 pad0[3];\n#else\nu64 *synthesis_process_notes(s16 *aiBuf, s32 bufLen, u64 *cmd) {\n    s32 noteIndex;                           // sp174\n    struct Note *note;                       // s7\n    UNUSED u8 pad0[0x08];\n#endif\n    struct AudioBankSample *audioBookSample; // sp164, sp138\n    struct AdpcmLoop *loopInfo;              // sp160, sp134\n    s16 *curLoadedBook = NULL;               // sp154, sp130\n#ifdef VERSION_EU\n    UNUSED u8 padEU[0x04];\n#endif\n    UNUSED u8 pad8[0x04];\n#ifndef VERSION_EU\n    u16 resamplingRateFixedPoint;            // sp5c, sp11A\n#endif\n    s32 noteFinished;                        // 150 t2, sp124\n    s32 restart;                             // 14c t3, sp120\n    s32 flags;                               // sp148, sp11C\n#ifdef VERSION_EU\n    u16 resamplingRateFixedPoint;            // sp5c, sp11A\n#endif\n    UNUSED u8 pad7[0x0c];                    // sp100\n    UNUSED s32 tempBufLen;\n#ifdef VERSION_EU\n    s32 sp130;  //sp128, sp104\n    UNUSED u32 pad9;\n#else\n    UNUSED u32 pad9;\n    s32 sp130;  //sp128, sp104\n#endif\n    s32 nAdpcmSamplesProcessed; // signed required for US\n    s32 t0;\n#ifdef VERSION_EU\n    u8 *sampleAddr;                          // sp120, spF4\n    s32 s6;\n#else\n    s32 s6;\n    u8 *sampleAddr;                          // sp120, spF4\n#endif\n\n#ifdef VERSION_EU\n    s32 samplesLenAdjusted; // 108,      spEC\n    // Might have been used to store (samplesLenFixedPoint >> 0x10), but doing so causes strange\n    // behavior with the break near the end of the loop, causing US and JP to need a goto instead\n    UNUSED s32 samplesLenInt;\n    s32 endPos;             // sp110,    spE4\n    s32 nSamplesToProcess;  // sp10c/a0, spE0\n    s32 s2;\n#else\n    // Might have been used to store (samplesLenFixedPoint >> 0x10), but doing so causes strange\n    // behavior with the break near the end of the loop, causing US and JP to need a goto instead\n    UNUSED s32 samplesLenInt;\n    s32 samplesLenAdjusted; // 108\n    s32 s2;\n    s32 endPos;             // sp110,    spE4\n    s32 nSamplesToProcess;  // sp10c/a0, spE0\n#endif\n\n    s32 leftRight;\n    s32 s3;\n    s32 s5; //s4\n\n    u32 samplesLenFixedPoint;    // v1_1\n    s32 nSamplesInThisIteration; // v1_2\n    u32 a3;\n#ifndef VERSION_EU\n    s32 t9;\n#endif\n    u8 *v0_2;\n    s32 nParts;                 // spE8, spBC\n    s32 curPart;                // spE4, spB8\n\n#ifndef VERSION_EU\n    f32 resamplingRate; // f12\n#endif\n    s32 temp;\n\n#ifdef VERSION_EU\n    s32 s5Aligned;\n#endif\n    s32 resampledTempLen;                    // spD8, spAC\n    u16 noteSamplesDmemAddrBeforeResampling; // spD6, spAA\n\n\n#ifndef VERSION_EU\n    for (noteIndex = 0; noteIndex < gMaxSimultaneousNotes; noteIndex++) {\n        note = &gNotes[noteIndex];\n#ifdef VERSION_US\n        //! This function requires note->enabled to be volatile, but it breaks other functions like note_enable.\n        //! Casting to a struct with just the volatile bitfield works, but there may be a better way to match.\n        if (((struct vNote *)note)->enabled && IS_BANK_LOAD_COMPLETE(note->bankId) == FALSE) {\n#else\n        if (IS_BANK_LOAD_COMPLETE(note->bankId) == FALSE) {\n#endif\n            gAudioErrorFlags = (note->bankId << 8) + noteIndex + 0x1000000;\n        } else if (((struct vNote *)note)->enabled) {\n#else\n        if (note->noteSubEu.enabled == FALSE) {\n            return cmd;\n        } else {\n#endif\n            flags = 0;\n#ifdef VERSION_EU\n            tempBufLen = bufLen;\n#endif\n\n#ifdef VERSION_EU\n            if (noteSubEu->needsInit == TRUE) {\n#else\n            if (note->needsInit == TRUE) {\n#endif\n                flags = A_INIT;\n#ifndef VERSION_EU\n                note->samplePosInt = 0;\n                note->samplePosFrac = 0;\n#else\n                synthesisState->restart = FALSE;\n                synthesisState->samplePosInt = 0;\n                synthesisState->samplePosFrac = 0;\n                synthesisState->curVolLeft = 1;\n                synthesisState->curVolRight = 1;\n                synthesisState->prevHeadsetPanRight = 0;\n                synthesisState->prevHeadsetPanLeft = 0;\n#endif\n            }\n\n#ifndef VERSION_EU\n            if (note->frequency < US_FLOAT(2.0)) {\n                nParts = 1;\n                if (note->frequency > US_FLOAT(1.99996)) {\n                    note->frequency = US_FLOAT(1.99996);\n                }\n                resamplingRate = note->frequency;\n            } else {\n                // If frequency is > 2.0, the processing must be split into two parts\n                nParts = 2;\n                if (note->frequency >= US_FLOAT(3.99993)) {\n                    note->frequency = US_FLOAT(3.99993);\n                }\n                resamplingRate = note->frequency * US_FLOAT(.5);\n            }\n\n            resamplingRateFixedPoint = (u16)(s32)(resamplingRate * 32768.0f);\n            samplesLenFixedPoint = note->samplePosFrac + (resamplingRateFixedPoint * bufLen) * 2;\n            note->samplePosFrac = samplesLenFixedPoint & 0xFFFF; // 16-bit store, can't reuse\n#else\n            resamplingRateFixedPoint = noteSubEu->resamplingRateFixedPoint;\n            nParts = noteSubEu->hasTwoAdpcmParts + 1;\n            samplesLenFixedPoint = (resamplingRateFixedPoint * tempBufLen * 2) + synthesisState->samplePosFrac;\n            synthesisState->samplePosFrac = samplesLenFixedPoint & 0xFFFF;\n#endif\n\n#ifdef VERSION_EU\n            if (noteSubEu->isSyntheticWave) {\n                cmd = load_wave_samples(cmd, noteSubEu, synthesisState, samplesLenFixedPoint >> 0x10);\n                noteSamplesDmemAddrBeforeResampling = (synthesisState->samplePosInt * 2) + DMEM_ADDR_UNCOMPRESSED_NOTE;\n                synthesisState->samplePosInt += samplesLenFixedPoint >> 0x10;\n            }\n#else\n            if (note->sound == NULL) {\n                // A wave synthesis note (not ADPCM)\n\n                cmd = load_wave_samples(cmd, note, samplesLenFixedPoint >> 0x10);\n                noteSamplesDmemAddrBeforeResampling = DMEM_ADDR_UNCOMPRESSED_NOTE + note->samplePosInt * 2;\n                note->samplePosInt += (samplesLenFixedPoint >> 0x10);\n                flags = 0;\n            }\n#endif\n            else {\n                // ADPCM note\n\n#ifdef VERSION_EU\n                audioBookSample = noteSubEu->sound.audioBankSound->sample;\n#else\n                audioBookSample = note->sound->sample;\n#endif\n\n                loopInfo = audioBookSample->loop;\n                endPos = loopInfo->end;\n                sampleAddr = audioBookSample->sampleAddr;\n                resampledTempLen = 0;\n                for (curPart = 0; curPart < nParts; curPart++) {\n                    nAdpcmSamplesProcessed = 0; // s8\n                    s5 = 0;                     // s4\n\n                    if (nParts == 1) {\n                        samplesLenAdjusted = samplesLenFixedPoint >> 0x10;\n                    } else if ((samplesLenFixedPoint >> 0x10) & 1) {\n                        samplesLenAdjusted = ((samplesLenFixedPoint >> 0x10) & ~1) + (curPart * 2);\n                    }\n                    else {\n                        samplesLenAdjusted = (samplesLenFixedPoint >> 0x10);\n                    }\n\n                    if (curLoadedBook != audioBookSample->book->book) {\n                        u32 nEntries; // v1\n                        curLoadedBook = audioBookSample->book->book;\n#ifdef VERSION_EU\n                        nEntries = 16 * audioBookSample->book->order * audioBookSample->book->npredictors;\n                        aLoadADPCM(cmd++, nEntries, VIRTUAL_TO_PHYSICAL2(curLoadedBook + noteSubEu->bookOffset));\n#else\n                        nEntries = audioBookSample->book->order * audioBookSample->book->npredictors;\n                        aLoadADPCM(cmd++, nEntries * 16, VIRTUAL_TO_PHYSICAL2(curLoadedBook));\n#endif\n                    }\n\n#ifdef VERSION_EU\n                    if (noteSubEu->bookOffset) {\n                        curLoadedBook = euUnknownData_80301950; // what's this? never read\n                    }\n#endif\n\n                    while (nAdpcmSamplesProcessed != samplesLenAdjusted) {\n                        s32 samplesRemaining; // v1\n                        s32 s0;\n\n                        noteFinished = FALSE;\n                        restart = FALSE;\n                        nSamplesToProcess = samplesLenAdjusted - nAdpcmSamplesProcessed;\n#ifdef VERSION_EU\n                        s2 = synthesisState->samplePosInt & 0xf;\n                        samplesRemaining = endPos - synthesisState->samplePosInt;\n#else\n                        s2 = note->samplePosInt & 0xf;\n                        samplesRemaining = endPos - note->samplePosInt;\n#endif\n\n#ifdef VERSION_EU\n                        if (s2 == 0 && synthesisState->restart == FALSE) {\n                            s2 = 16;\n                        }\n#else\n                        if (s2 == 0 && note->restart == FALSE) {\n                            s2 = 16;\n                        }\n#endif\n                        s6 = 16 - s2; // a1\n\n                        if (nSamplesToProcess < samplesRemaining) {\n                            t0 = (nSamplesToProcess - s6 + 0xf) / 16;\n                            s0 = t0 * 16;\n                            s3 = s6 + s0 - nSamplesToProcess;\n                        } else {\n#ifndef VERSION_EU\n                            s0 = samplesRemaining + s2 - 0x10;\n#else\n                            s0 = samplesRemaining - s6;\n#endif\n                            s3 = 0;\n                            if (s0 <= 0) {\n                                s0 = 0;\n                                s6 = samplesRemaining;\n                            }\n                            t0 = (s0 + 0xf) / 16;\n                            if (loopInfo->count != 0) {\n                                // Loop around and restart\n                                restart = 1;\n                            } else {\n                                noteFinished = 1;\n                            }\n                        }\n\n                        if (t0 != 0) {\n#ifdef VERSION_EU\n                            temp = (synthesisState->samplePosInt - s2 + 0x10) / 16;\n                            if (audioBookSample->loaded == 0x81) {\n                                v0_2 = sampleAddr + temp * 9;\n                            } else {\n                                v0_2 = dma_sample_data(\n                                    (uintptr_t) (sampleAddr + temp * 9),\n                                    t0 * 9, flags, &synthesisState->sampleDmaIndex);\n                            }\n#else\n                            temp = (note->samplePosInt - s2 + 0x10) / 16;\n                            v0_2 = dma_sample_data(\n                                (uintptr_t) (sampleAddr + temp * 9),\n                                t0 * 9, flags, &note->sampleDmaIndex);\n#endif\n                            a3 = (u32)((uintptr_t) v0_2 & 0xf);\n                            aSetBuffer(cmd++, 0, DMEM_ADDR_COMPRESSED_ADPCM_DATA, 0, t0 * 9 + a3);\n                            aLoadBuffer(cmd++, VIRTUAL_TO_PHYSICAL2(v0_2 - a3));\n                        } else {\n                            s0 = 0;\n                            a3 = 0;\n                        }\n\n#ifdef VERSION_EU\n                        if (synthesisState->restart != FALSE) {\n                            aSetLoop(cmd++, VIRTUAL_TO_PHYSICAL2(audioBookSample->loop->state));\n                            flags = A_LOOP; // = 2\n                            synthesisState->restart = FALSE;\n                        }\n#else\n                        if (note->restart != FALSE) {\n                            aSetLoop(cmd++, VIRTUAL_TO_PHYSICAL2(audioBookSample->loop->state));\n                            flags = A_LOOP; // = 2\n                            note->restart = FALSE;\n                        }\n#endif\n\n                        nSamplesInThisIteration = s0 + s6 - s3;\n#ifdef VERSION_EU\n                        if (nAdpcmSamplesProcessed == 0) {\n                            aSetBuffer(cmd++, 0, DMEM_ADDR_COMPRESSED_ADPCM_DATA + a3,\n                                       DMEM_ADDR_UNCOMPRESSED_NOTE, s0 * 2);\n                            aADPCMdec(cmd++, flags,\n                                      VIRTUAL_TO_PHYSICAL2(synthesisState->synthesisBuffers->adpcmdecState));\n                            sp130 = s2 * 2;\n                        } else {\n                            s5Aligned = ALIGN(s5, 5);\n                            aSetBuffer(cmd++, 0, DMEM_ADDR_COMPRESSED_ADPCM_DATA + a3,\n                                       DMEM_ADDR_UNCOMPRESSED_NOTE + s5Aligned, s0 * 2);\n                            aADPCMdec(cmd++, flags,\n                                      VIRTUAL_TO_PHYSICAL2(synthesisState->synthesisBuffers->adpcmdecState));\n                            aDMEMMove(cmd++, DMEM_ADDR_UNCOMPRESSED_NOTE + s5Aligned + (s2 * 2),\n                                      DMEM_ADDR_UNCOMPRESSED_NOTE + s5, (nSamplesInThisIteration) * 2);\n                        }\n#else\n                        if (nAdpcmSamplesProcessed == 0) {\n                            aSetBuffer(cmd++, 0, DMEM_ADDR_COMPRESSED_ADPCM_DATA + a3, DMEM_ADDR_UNCOMPRESSED_NOTE, s0 * 2);\n                            aADPCMdec(cmd++, flags, VIRTUAL_TO_PHYSICAL2(note->synthesisBuffers->adpcmdecState));\n                            sp130 = s2 * 2;\n                        } else {\n                            aSetBuffer(cmd++, 0, DMEM_ADDR_COMPRESSED_ADPCM_DATA + a3, DMEM_ADDR_UNCOMPRESSED_NOTE + ALIGN(s5, 5), s0 * 2);\n                            aADPCMdec(cmd++, flags, VIRTUAL_TO_PHYSICAL2(note->synthesisBuffers->adpcmdecState));\n                            aDMEMMove(cmd++, DMEM_ADDR_UNCOMPRESSED_NOTE + ALIGN(s5, 5) + (s2 * 2), DMEM_ADDR_UNCOMPRESSED_NOTE + s5, (nSamplesInThisIteration) * 2);\n                        }\n#endif\n\n                        nAdpcmSamplesProcessed += nSamplesInThisIteration;\n\n                        switch (flags) {\n                            case A_INIT: // = 1\n                                sp130 = 0;\n                                s5 = s0 * 2 + s5;\n                                break;\n\n                            case A_LOOP: // = 2\n                                s5 = nSamplesInThisIteration * 2 + s5;\n                                break;\n\n                            default:\n                                if (s5 != 0) {\n                                    s5 = nSamplesInThisIteration * 2 + s5;\n                                } else {\n                                    s5 = (s2 + nSamplesInThisIteration) * 2;\n                                }\n                                break;\n                        }\n                        flags = 0;\n\n                        if (noteFinished) {\n                            aClearBuffer(cmd++, DMEM_ADDR_UNCOMPRESSED_NOTE + s5,\n                                         (samplesLenAdjusted - nAdpcmSamplesProcessed) * 2);\n#ifdef VERSION_EU\n                            noteSubEu->finished = 1;\n                            note->noteSubEu.finished = 1;\n                            note->noteSubEu.enabled = 0;\n#else\n                            note->samplePosInt = 0;\n                            note->finished = 1;\n                            ((struct vNote *)note)->enabled = 0;\n#endif\n                            break;\n                        }\n#ifdef VERSION_EU\n                        if (restart) {\n                            synthesisState->restart = TRUE;\n                            synthesisState->samplePosInt = loopInfo->start;\n                        } else {\n                            synthesisState->samplePosInt += nSamplesToProcess;\n                        }\n#else\n                        if (restart) {\n                            note->restart = TRUE;\n                            note->samplePosInt = loopInfo->start;\n                        } else {\n                            note->samplePosInt += nSamplesToProcess;\n                        }\n#endif\n                    }\n\n                    switch (nParts) {\n                        case 1:\n                            noteSamplesDmemAddrBeforeResampling = DMEM_ADDR_UNCOMPRESSED_NOTE + sp130;\n                            break;\n\n                        case 2:\n                            switch (curPart) {\n                                case 0:\n                                    aSetBuffer(cmd++, 0, DMEM_ADDR_UNCOMPRESSED_NOTE + sp130, DMEM_ADDR_RESAMPLED, samplesLenAdjusted + 4);\n#ifdef VERSION_EU\n                                    aResample(cmd++, A_INIT, 0xff60, VIRTUAL_TO_PHYSICAL2(synthesisState->synthesisBuffers->dummyResampleState));\n#else\n                                    aResample(cmd++, A_INIT, 0xff60, VIRTUAL_TO_PHYSICAL2(note->synthesisBuffers->dummyResampleState));\n#endif\n                                    resampledTempLen = samplesLenAdjusted + 4;\n                                    noteSamplesDmemAddrBeforeResampling = DMEM_ADDR_RESAMPLED + 4;\n#ifdef VERSION_EU\n                                    if (noteSubEu->finished != FALSE) {\n#else\n                                    if (note->finished != FALSE) {\n#endif\n                                        aClearBuffer(cmd++, DMEM_ADDR_RESAMPLED + resampledTempLen, samplesLenAdjusted + 0x10);\n                                    }\n                                    break;\n\n                                case 1:\n                                    aSetBuffer(cmd++, 0, DMEM_ADDR_UNCOMPRESSED_NOTE + sp130,\n                                               DMEM_ADDR_RESAMPLED2,\n                                               samplesLenAdjusted + 8);\n#ifdef VERSION_EU\n                                    aResample(cmd++, A_INIT, 0xff60,\n                                              VIRTUAL_TO_PHYSICAL2(\n                                                  synthesisState->synthesisBuffers->dummyResampleState));\n#else\n                                    aResample(cmd++, A_INIT, 0xff60,\n                                              VIRTUAL_TO_PHYSICAL2(\n                                                  note->synthesisBuffers->dummyResampleState));\n#endif\n                                    aDMEMMove(cmd++, DMEM_ADDR_RESAMPLED2 + 4,\n                                              DMEM_ADDR_RESAMPLED + resampledTempLen,\n                                              samplesLenAdjusted + 4);\n                                    break;\n                            }\n                    }\n\n#ifdef VERSION_EU\n                    if (noteSubEu->finished != FALSE) {\n#else\n                    if (note->finished != FALSE) {\n#endif\n                        break;\n                    }\n                }\n            }\n\n            flags = 0;\n\n#ifdef VERSION_EU\n            if (noteSubEu->needsInit == TRUE) {\n                flags = A_INIT;\n                noteSubEu->needsInit = FALSE;\n            }\n\n            cmd = final_resample(cmd, synthesisState, bufLen * 2, resamplingRateFixedPoint,\n                                 noteSamplesDmemAddrBeforeResampling, flags);\n#else\n            if (note->needsInit == TRUE) {\n                flags = A_INIT;\n                note->needsInit = FALSE;\n            }\n\n            cmd = final_resample(cmd, note, bufLen * 2, resamplingRateFixedPoint,\n                                 noteSamplesDmemAddrBeforeResampling, flags);\n#endif\n\n#ifdef VERSION_EU\n            if (noteSubEu->headsetPanRight != 0 || synthesisState->prevHeadsetPanRight != 0) {\n                leftRight = 1;\n            } else if (noteSubEu->headsetPanLeft != 0 || synthesisState->prevHeadsetPanLeft != 0) {\n                leftRight = 2;\n#else\n            if (note->headsetPanRight != 0 || note->prevHeadsetPanRight != 0) {\n                leftRight = 1;\n            } else if (note->headsetPanLeft != 0 || note->prevHeadsetPanLeft != 0) {\n                leftRight = 2;\n#endif\n            } else {\n                leftRight = 0;\n            }\n\n#ifdef VERSION_EU\n            cmd = process_envelope(cmd, noteSubEu, synthesisState, bufLen, 0, leftRight, flags);\n#else\n            cmd = process_envelope(cmd, note, bufLen, 0, leftRight, flags);\n#endif\n\n#ifdef VERSION_EU\n            if (noteSubEu->usesHeadsetPanEffects) {\n                cmd = note_apply_headset_pan_effects(cmd, noteSubEu, synthesisState, bufLen * 2, flags, leftRight);\n            }\n#else\n            if (note->usesHeadsetPanEffects) {\n                cmd = note_apply_headset_pan_effects(cmd, note, bufLen * 2, flags, leftRight);\n            }\n#endif\n        }\n#ifndef VERSION_EU\n    }\n\n    t9 = bufLen * 2;\n    aSetBuffer(cmd++, 0, 0, DMEM_ADDR_TEMP, t9);\n    aInterleave(cmd++, DMEM_ADDR_LEFT_CH, DMEM_ADDR_RIGHT_CH);\n    t9 *= 2;\n    aSetBuffer(cmd++, 0, 0, DMEM_ADDR_TEMP, t9);\n    aSaveBuffer(cmd++, VIRTUAL_TO_PHYSICAL2(aiBuf));\n#endif\n\n    return cmd;\n}\n\n#ifdef VERSION_EU\nu64 *load_wave_samples(u64 *cmd, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *synthesisState, s32 nSamplesToLoad) {\n    s32 a3;\n    s32 repeats;\n    s32 i;\n    aSetBuffer(cmd++, /*flags*/ 0, /*dmemin*/ DMEM_ADDR_UNCOMPRESSED_NOTE, /*dmemout*/ 0, /*count*/ 128);\n    aLoadBuffer(cmd++, VIRTUAL_TO_PHYSICAL2(noteSubEu->sound.samples));\n\n    synthesisState->samplePosInt &= 0x3f;\n    a3 = 64 - synthesisState->samplePosInt;\n    if (a3 < nSamplesToLoad) {\n        repeats = (nSamplesToLoad - a3 + 63) / 64;\n        for (i = 0; i < repeats; i++) {\n            aDMEMMove(cmd++,\n                      /*dmemin*/ DMEM_ADDR_UNCOMPRESSED_NOTE,\n                      /*dmemout*/ DMEM_ADDR_UNCOMPRESSED_NOTE + (1 + i) * 128,\n                      /*count*/ 128);\n        }\n    }\n    return cmd;\n}\n#else\nu64 *load_wave_samples(u64 *cmd, struct Note *note, s32 nSamplesToLoad) {\n    s32 a3;\n    s32 i;\n    aSetBuffer(cmd++, /*flags*/ 0, /*dmemin*/ DMEM_ADDR_UNCOMPRESSED_NOTE, /*dmemout*/ 0,\n               /*count*/ sizeof(note->synthesisBuffers->samples));\n    aLoadBuffer(cmd++, VIRTUAL_TO_PHYSICAL2(note->synthesisBuffers->samples));\n    note->samplePosInt &= (note->sampleCount - 1);\n    a3 = 64 - note->samplePosInt;\n    if (a3 < nSamplesToLoad) {\n        for (i = 0; i <= (nSamplesToLoad - a3 + 63) / 64 - 1; i++) {\n            aDMEMMove(cmd++, /*dmemin*/ DMEM_ADDR_UNCOMPRESSED_NOTE, /*dmemout*/ DMEM_ADDR_UNCOMPRESSED_NOTE + (1 + i) * sizeof(note->synthesisBuffers->samples), /*count*/ sizeof(note->synthesisBuffers->samples));\n        }\n    }\n    return cmd;\n}\n#endif\n\n#ifdef VERSION_EU\nu64 *final_resample(u64 *cmd, struct NoteSynthesisState *synthesisState, s32 count, u16 pitch, u16 dmemIn, u32 flags) {\n    aSetBuffer(cmd++, /*flags*/ 0, dmemIn, /*dmemout*/ DMEM_ADDR_TEMP, count);\n    aResample(cmd++, flags, pitch, VIRTUAL_TO_PHYSICAL2(synthesisState->synthesisBuffers->finalResampleState));\n    return cmd;\n}\n#else\nu64 *final_resample(u64 *cmd, struct Note *note, s32 count, u16 pitch, u16 dmemIn, u32 flags) {\n    aSetBuffer(cmd++, /*flags*/ 0, dmemIn, /*dmemout*/ DMEM_ADDR_TEMP, count);\n    aResample(cmd++, flags, pitch, VIRTUAL_TO_PHYSICAL2(note->synthesisBuffers->finalResampleState));\n    return cmd;\n}\n#endif\n\n#ifndef VERSION_EU\nu64 *process_envelope(u64 *cmd, struct Note *note, s32 nSamples, u16 inBuf, s32 headsetPanSettings,\n                      UNUSED u32 flags) {\n    UNUSED u8 pad[16];\n    struct VolumeChange vol;\n    vol.sourceLeft = note->curVolLeft;\n    vol.sourceRight = note->curVolRight;\n    vol.targetLeft = note->targetVolLeft;\n    vol.targetRight = note->targetVolRight;\n    note->curVolLeft = vol.targetLeft;\n    note->curVolRight = vol.targetRight;\n    return process_envelope_inner(cmd, note, nSamples, inBuf, headsetPanSettings, &vol);\n}\n\nu64 *process_envelope_inner(u64 *cmd, struct Note *note, s32 nSamples, u16 inBuf,\n                            s32 headsetPanSettings, struct VolumeChange *vol) {\n    UNUSED u8 pad[3];\n    u8 mixerFlags;\n    UNUSED u8 pad2[8];\n    s32 rampLeft, rampRight;\n#elif defined(VERSION_EU)\nu64 *process_envelope(u64 *cmd, struct NoteSubEu *note, struct NoteSynthesisState *synthesisState, s32 nSamples, u16 inBuf, s32 headsetPanSettings, UNUSED u32 flags) {\n    UNUSED u8 pad1[20];\n    u16 sourceRight;\n    u16 sourceLeft;\n    UNUSED u8 pad2[4];\n    u16 targetLeft;\n    u16 targetRight;\n    s32 mixerFlags;\n    s32 rampLeft;\n    s32 rampRight;\n\n    sourceLeft = synthesisState->curVolLeft;\n    sourceRight = synthesisState->curVolRight;\n    targetLeft = (note->targetVolLeft << 5);\n    targetRight = (note->targetVolRight << 5);\n    if (targetLeft == 0) {\n        targetLeft++;\n    }\n    if (targetRight == 0) {\n        targetRight++;\n    }\n    synthesisState->curVolLeft = targetLeft;\n    synthesisState->curVolRight = targetRight;\n#endif\n\n    // For aEnvMixer, five buffers and count are set using aSetBuffer.\n    // in, dry left, count without A_AUX flag.\n    // dry right, wet left, wet right with A_AUX flag.\n\n    if (note->usesHeadsetPanEffects) {\n        aClearBuffer(cmd++, DMEM_ADDR_NOTE_PAN_TEMP, DEFAULT_LEN_1CH);\n\n        switch (headsetPanSettings) {\n            case 1:\n                aSetBuffer(cmd++, 0, inBuf, DMEM_ADDR_NOTE_PAN_TEMP, nSamples * 2);\n                aSetBuffer(cmd++, A_AUX, DMEM_ADDR_RIGHT_CH, DMEM_ADDR_WET_LEFT_CH,\n                           DMEM_ADDR_WET_RIGHT_CH);\n                break;\n            case 2:\n                aSetBuffer(cmd++, 0, inBuf, DMEM_ADDR_LEFT_CH, nSamples * 2);\n                aSetBuffer(cmd++, A_AUX, DMEM_ADDR_NOTE_PAN_TEMP, DMEM_ADDR_WET_LEFT_CH,\n                           DMEM_ADDR_WET_RIGHT_CH);\n                break;\n            default:\n                aSetBuffer(cmd++, 0, inBuf, DMEM_ADDR_LEFT_CH, nSamples * 2);\n                aSetBuffer(cmd++, A_AUX, DMEM_ADDR_RIGHT_CH, DMEM_ADDR_WET_LEFT_CH,\n                           DMEM_ADDR_WET_RIGHT_CH);\n                break;\n        }\n    } else {\n        // It's a bit unclear what the \"stereo strong\" concept does.\n        // Instead of mixing the opposite channel to the normal buffers, the sound is first\n        // mixed into a temporary buffer and then subtracted from the normal buffer.\n        if (note->stereoStrongRight) {\n            aClearBuffer(cmd++, DMEM_ADDR_STEREO_STRONG_TEMP_DRY, DEFAULT_LEN_2CH);\n            aSetBuffer(cmd++, 0, inBuf, DMEM_ADDR_STEREO_STRONG_TEMP_DRY, nSamples * 2);\n            aSetBuffer(cmd++, A_AUX, DMEM_ADDR_RIGHT_CH, DMEM_ADDR_STEREO_STRONG_TEMP_WET,\n                       DMEM_ADDR_WET_RIGHT_CH);\n        } else if (note->stereoStrongLeft) {\n            aClearBuffer(cmd++, DMEM_ADDR_STEREO_STRONG_TEMP_DRY, DEFAULT_LEN_2CH);\n            aSetBuffer(cmd++, 0, inBuf, DMEM_ADDR_LEFT_CH, nSamples * 2);\n            aSetBuffer(cmd++, A_AUX, DMEM_ADDR_STEREO_STRONG_TEMP_DRY, DMEM_ADDR_WET_LEFT_CH,\n                       DMEM_ADDR_STEREO_STRONG_TEMP_WET);\n        } else {\n            aSetBuffer(cmd++, 0, inBuf, DMEM_ADDR_LEFT_CH, nSamples * 2);\n            aSetBuffer(cmd++, A_AUX, DMEM_ADDR_RIGHT_CH, DMEM_ADDR_WET_LEFT_CH, DMEM_ADDR_WET_RIGHT_CH);\n        }\n    }\n\n#ifdef VERSION_EU\n    if (targetLeft == sourceLeft && targetRight == sourceRight && !note->envMixerNeedsInit) {\n#else\n    if (vol->targetLeft == vol->sourceLeft && vol->targetRight == vol->sourceRight\n        && !note->envMixerNeedsInit) {\n#endif\n        mixerFlags = A_CONTINUE;\n    } else {\n        mixerFlags = A_INIT;\n\n#ifdef VERSION_EU\n        rampLeft = gCurrentLeftVolRamping[targetLeft >> 5] * gCurrentRightVolRamping[sourceLeft >> 5];\n        rampRight = gCurrentLeftVolRamping[targetRight >> 5] * gCurrentRightVolRamping[sourceRight >> 5];\n#else\n        rampLeft = get_volume_ramping(vol->sourceLeft, vol->targetLeft, nSamples);\n        rampRight = get_volume_ramping(vol->sourceRight, vol->targetRight, nSamples);\n#endif\n\n        // The operation's parameters change meanings depending on flags\n#ifdef VERSION_EU\n        aSetVolume(cmd++, A_VOL | A_LEFT, sourceLeft, 0, 0);\n        aSetVolume(cmd++, A_VOL | A_RIGHT, sourceRight, 0, 0);\n        aSetVolume32(cmd++, A_RATE | A_LEFT, targetLeft, rampLeft);\n        aSetVolume32(cmd++, A_RATE | A_RIGHT, targetRight, rampRight);\n        aSetVolume(cmd++, A_AUX, gVolume, 0, note->reverbVol << 8);\n#else\n        aSetVolume(cmd++, A_VOL | A_LEFT, vol->sourceLeft, 0, 0);\n        aSetVolume(cmd++, A_VOL | A_RIGHT, vol->sourceRight, 0, 0);\n        aSetVolume32(cmd++, A_RATE | A_LEFT, vol->targetLeft, rampLeft);\n        aSetVolume32(cmd++, A_RATE | A_RIGHT, vol->targetRight, rampRight);\n        aSetVolume(cmd++, A_AUX, gVolume, 0, note->reverbVolShifted);\n#endif\n    }\n\n#ifdef VERSION_EU\n    if (gUseReverb && note->reverbVol != 0) {\n        aEnvMixer(cmd++, mixerFlags | A_AUX,\n                  VIRTUAL_TO_PHYSICAL2(synthesisState->synthesisBuffers->mixEnvelopeState));\n#else\n    if (gSynthesisReverb.useReverb && note->reverbVol != 0) {\n        aEnvMixer(cmd++, mixerFlags | A_AUX,\n                  VIRTUAL_TO_PHYSICAL2(note->synthesisBuffers->mixEnvelopeState));\n#endif\n        if (note->stereoStrongRight) {\n            aSetBuffer(cmd++, 0, 0, 0, nSamples * 2);\n            // 0x8000 is -100%, so subtract sound instead of adding...\n            aMix(cmd++, 0, /*gain*/ 0x8000, /*in*/ DMEM_ADDR_STEREO_STRONG_TEMP_DRY,\n                 /*out*/ DMEM_ADDR_LEFT_CH);\n            aMix(cmd++, 0, /*gain*/ 0x8000, /*in*/ DMEM_ADDR_STEREO_STRONG_TEMP_WET,\n                 /*out*/ DMEM_ADDR_WET_LEFT_CH);\n        } else if (note->stereoStrongLeft) {\n            aSetBuffer(cmd++, 0, 0, 0, nSamples * 2);\n            aMix(cmd++, 0, /*gain*/ 0x8000, /*in*/ DMEM_ADDR_STEREO_STRONG_TEMP_DRY,\n                 /*out*/ DMEM_ADDR_RIGHT_CH);\n            aMix(cmd++, 0, /*gain*/ 0x8000, /*in*/ DMEM_ADDR_STEREO_STRONG_TEMP_WET,\n                 /*out*/ DMEM_ADDR_WET_RIGHT_CH);\n        }\n    } else {\n#ifdef VERSION_EU\n        aEnvMixer(cmd++, mixerFlags, VIRTUAL_TO_PHYSICAL2(synthesisState->synthesisBuffers->mixEnvelopeState));\n#else\n        aEnvMixer(cmd++, mixerFlags, VIRTUAL_TO_PHYSICAL2(note->synthesisBuffers->mixEnvelopeState));\n#endif\n        if (note->stereoStrongRight) {\n            aSetBuffer(cmd++, 0, 0, 0, nSamples * 2);\n            aMix(cmd++, 0, /*gain*/ 0x8000, /*in*/ DMEM_ADDR_STEREO_STRONG_TEMP_DRY,\n                 /*out*/ DMEM_ADDR_LEFT_CH);\n        } else if (note->stereoStrongLeft) {\n            aSetBuffer(cmd++, 0, 0, 0, nSamples * 2);\n            aMix(cmd++, 0, /*gain*/ 0x8000, /*in*/ DMEM_ADDR_STEREO_STRONG_TEMP_DRY,\n                 /*out*/ DMEM_ADDR_RIGHT_CH);\n        }\n    }\n    return cmd;\n}\n\n#ifdef VERSION_EU\nu64 *note_apply_headset_pan_effects(u64 *cmd, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *note, s32 bufLen, s32 flags, s32 leftRight) {\n#else\nu64 *note_apply_headset_pan_effects(u64 *cmd, struct Note *note, s32 bufLen, s32 flags, s32 leftRight) {\n#endif\n    u16 dest;\n    u16 pitch;\n#ifdef VERSION_EU\n    u8 prevPanShift;\n    u8 panShift;\n    UNUSED u8 unkDebug;\n#else\n    u16 prevPanShift;\n    u16 panShift;\n#endif\n\n    switch (leftRight) {\n        case 1:\n            dest = DMEM_ADDR_LEFT_CH;\n#ifdef VERSION_EU\n            panShift = noteSubEu->headsetPanRight;\n#else\n            panShift = note->headsetPanRight;\n#endif\n            note->prevHeadsetPanLeft = 0;\n            prevPanShift = note->prevHeadsetPanRight;\n            note->prevHeadsetPanRight = panShift;\n            break;\n        case 2:\n            dest = DMEM_ADDR_RIGHT_CH;\n#ifdef VERSION_EU\n            panShift = noteSubEu->headsetPanLeft;\n#else\n            panShift = note->headsetPanLeft;\n#endif\n            note->prevHeadsetPanRight = 0;\n\n            prevPanShift = note->prevHeadsetPanLeft;\n            note->prevHeadsetPanLeft = panShift;\n            break;\n        default:\n            return cmd;\n    }\n\n    if (flags != 1) { // A_INIT?\n        // Slightly adjust the sample rate in order to fit a change in pan shift\n        if (prevPanShift == 0) {\n            // Kind of a hack that moves the first samples into the resample state\n            aDMEMMove(cmd++, DMEM_ADDR_NOTE_PAN_TEMP, DMEM_ADDR_TEMP, 8);\n            aClearBuffer(cmd++, 8, 8); // Set pitch accumulator to 0 in the resample state\n            aDMEMMove(cmd++, DMEM_ADDR_NOTE_PAN_TEMP, DMEM_ADDR_TEMP + 0x10,\n                      0x10); // No idea, result seems to be overwritten later\n\n            aSetBuffer(cmd++, 0, 0, DMEM_ADDR_TEMP, 32);\n            aSaveBuffer(cmd++, VIRTUAL_TO_PHYSICAL2(note->synthesisBuffers->panResampleState));\n\n#ifdef VERSION_EU\n            pitch = (bufLen << 0xf) / (bufLen + panShift - prevPanShift + 8);\n            if (pitch) {\n            }\n#else\n            pitch = (bufLen << 0xf) / (panShift + bufLen - prevPanShift + 8);\n#endif\n            aSetBuffer(cmd++, 0, DMEM_ADDR_NOTE_PAN_TEMP + 8, DMEM_ADDR_TEMP, panShift + bufLen - prevPanShift);\n            aResample(cmd++, 0, pitch, VIRTUAL_TO_PHYSICAL2(note->synthesisBuffers->panResampleState));\n        } else {\n            if (panShift == 0) {\n                pitch = (bufLen << 0xf) / (bufLen - prevPanShift - 4);\n            } else {\n                pitch = (bufLen << 0xf) / (bufLen + panShift - prevPanShift);\n            }\n\n#if defined(VERSION_EU) && !defined(AVOID_UB)\n            if (unkDebug) { // UB\n            }\n#endif\n            aSetBuffer(cmd++, 0, DMEM_ADDR_NOTE_PAN_TEMP, DMEM_ADDR_TEMP, panShift + bufLen - prevPanShift);\n            aResample(cmd++, 0, pitch, VIRTUAL_TO_PHYSICAL2(note->synthesisBuffers->panResampleState));\n        }\n\n        if (prevPanShift != 0) {\n            aSetBuffer(cmd++, 0, DMEM_ADDR_NOTE_PAN_TEMP, 0, prevPanShift);\n            aLoadBuffer(cmd++, VIRTUAL_TO_PHYSICAL2(note->synthesisBuffers->panSamplesBuffer));\n            aDMEMMove(cmd++, DMEM_ADDR_TEMP, DMEM_ADDR_NOTE_PAN_TEMP + prevPanShift, panShift + bufLen - prevPanShift);\n        } else {\n            aDMEMMove(cmd++, DMEM_ADDR_TEMP, DMEM_ADDR_NOTE_PAN_TEMP, panShift + bufLen - prevPanShift);\n        }\n    } else {\n        // Just shift right\n        aDMEMMove(cmd++, DMEM_ADDR_NOTE_PAN_TEMP, DMEM_ADDR_TEMP, bufLen);\n        aDMEMMove(cmd++, DMEM_ADDR_TEMP, DMEM_ADDR_NOTE_PAN_TEMP + panShift, bufLen);\n        aClearBuffer(cmd++, DMEM_ADDR_NOTE_PAN_TEMP, panShift);\n    }\n\n    if (panShift) {\n        // Save excessive samples for next iteration\n        aSetBuffer(cmd++, 0, 0, DMEM_ADDR_NOTE_PAN_TEMP + bufLen, panShift);\n        aSaveBuffer(cmd++, VIRTUAL_TO_PHYSICAL2(note->synthesisBuffers->panSamplesBuffer));\n    }\n\n    aSetBuffer(cmd++, 0, 0, 0, bufLen);\n    aMix(cmd++, 0, /*gain*/ 0x7fff, /*in*/ DMEM_ADDR_NOTE_PAN_TEMP, /*out*/ dest);\n\n    return cmd;\n}\n\n#ifndef VERSION_EU\n// Moved to playback.c in EU\n\nvoid note_init_volume(struct Note *note) {\n    note->targetVolLeft = 0;\n    note->targetVolRight = 0;\n    note->reverbVol = 0;\n    note->reverbVolShifted = 0;\n    note->unused2 = 0;\n    note->curVolLeft = 1;\n    note->curVolRight = 1;\n    note->frequency = 0.0f;\n}\n\nvoid note_set_vel_pan_reverb(struct Note *note, f32 velocity, f32 pan, u8 reverbVol) {\n    s32 panIndex;\n    f32 volLeft;\n    f32 volRight;\n    // Anding with 127 avoids out-of-bounds reads when pan is outside of [0, 1].\n    // This can occur during PU movement -- see the bug comment in get_sound_pan\n    // in external.c. An out-of-bounds read by itself doesn't crash, but if the\n    // resulting value is a nan or denormal, performing arithmetic on it crashes\n    // on console.\n#ifdef VERSION_JP\n    panIndex = MIN((s32)(pan * 127.5), 127);\n#else\n    panIndex = (s32)(pan * 127.5f) & 127;\n#endif\n    if (note->stereoHeadsetEffects && gSoundMode == SOUND_MODE_HEADSET) {\n        s8 smallPanIndex;\n        s8 temp = (s8)(pan * 10.0f);\n        if (temp < 9) {\n            smallPanIndex = temp;\n        } else {\n            smallPanIndex = 9;\n        }\n        note->headsetPanLeft = gHeadsetPanQuantization[smallPanIndex];\n        note->headsetPanRight = gHeadsetPanQuantization[9 - smallPanIndex];\n        note->stereoStrongRight = FALSE;\n        note->stereoStrongLeft = FALSE;\n        note->usesHeadsetPanEffects = TRUE;\n        volLeft = gHeadsetPanVolume[panIndex];\n        volRight = gHeadsetPanVolume[127 - panIndex];\n    } else if (note->stereoHeadsetEffects && gSoundMode == SOUND_MODE_STEREO) {\n        u8 strongLeft;\n        u8 strongRight;\n        strongLeft = FALSE;\n        strongRight = FALSE;\n        note->headsetPanLeft = 0;\n        note->headsetPanRight = 0;\n        note->usesHeadsetPanEffects = FALSE;\n        volLeft = gStereoPanVolume[panIndex];\n        volRight = gStereoPanVolume[127 - panIndex];\n        if (panIndex < 0x20) {\n            strongLeft = TRUE;\n        } else if (panIndex > 0x60) {\n            strongRight = TRUE;\n        }\n        note->stereoStrongRight = strongRight;\n        note->stereoStrongLeft = strongLeft;\n    } else if (gSoundMode == SOUND_MODE_MONO) {\n        volLeft = .707f;\n        volRight = .707f;\n    } else {\n        volLeft = gDefaultPanVolume[panIndex];\n        volRight = gDefaultPanVolume[127 - panIndex];\n    }\n\n    if (velocity < 0) {\n        velocity = 0;\n    }\n#ifdef VERSION_JP\n    note->targetVolLeft = (u16)(velocity * volLeft) & ~0x80FF; // 0x7F00, but that doesn't match\n    note->targetVolRight = (u16)(velocity * volRight) & ~0x80FF;\n#else\n    note->targetVolLeft = (u16)(s32)(velocity * volLeft) & ~0x80FF;\n    note->targetVolRight = (u16)(s32)(velocity * volRight) & ~0x80FF;\n#endif\n    if (note->targetVolLeft == 0) {\n        note->targetVolLeft++;\n    }\n    if (note->targetVolRight == 0) {\n        note->targetVolRight++;\n    }\n    if (note->reverbVol != reverbVol) {\n        note->reverbVol = reverbVol;\n        note->reverbVolShifted = reverbVol << 8;\n        note->envMixerNeedsInit = TRUE;\n        return;\n    }\n\n    if (note->needsInit) {\n        note->envMixerNeedsInit = TRUE;\n    } else {\n        note->envMixerNeedsInit = FALSE;\n    }\n}\n\nvoid note_set_frequency(struct Note *note, f32 frequency) {\n    note->frequency = frequency;\n}\n\nvoid note_enable(struct Note *note) {\n    note->enabled = TRUE;\n    note->needsInit = TRUE;\n    note->restart = FALSE;\n    note->finished = FALSE;\n    note->stereoStrongRight = FALSE;\n    note->stereoStrongLeft = FALSE;\n    note->usesHeadsetPanEffects = FALSE;\n    note->headsetPanLeft = 0;\n    note->headsetPanRight = 0;\n    note->prevHeadsetPanRight = 0;\n    note->prevHeadsetPanLeft = 0;\n}\n\nvoid note_disable(struct Note *note) {\n    if (note->needsInit == TRUE) {\n        note->needsInit = FALSE;\n    } else {\n        note_set_vel_pan_reverb(note, 0, .5, 0);\n    }\n    note->priority = NOTE_PRIORITY_DISABLED;\n    note->enabled = FALSE;\n    note->finished = FALSE;\n    note->parentLayer = NO_LAYER;\n    note->prevParentLayer = NO_LAYER;\n}\n#endif\n#endif\n"
  },
  {
    "path": "src/audio/synthesis.h",
    "content": "#ifndef AUDIO_SYNTHESIS_H\n#define AUDIO_SYNTHESIS_H\n\n#include \"internal.h\"\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n#define DEFAULT_LEN_1CH 0x180\n#define DEFAULT_LEN_2CH 0x300\n#else\n#define DEFAULT_LEN_1CH 0x140\n#define DEFAULT_LEN_2CH 0x280\n#endif\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n#define MAX_UPDATES_PER_FRAME 5\n#else\n#define MAX_UPDATES_PER_FRAME 4\n#endif\n\nstruct ReverbRingBufferItem {\n    s16 numSamplesAfterDownsampling;\n    s16 chunkLen; // never read\n    s16 *toDownsampleLeft;\n    s16 *toDownsampleRight; // data pointed to by left and right are adjacent in memory\n    s32 startPos; // start pos in ring buffer\n    s16 lengthA; // first length in ring buffer (from startPos, at most until end)\n    s16 lengthB; // second length in ring buffer (from pos 0)\n}; // size = 0x14\n\nstruct SynthesisReverb {\n    /*0x00, 0x00, 0x00*/ u8 resampleFlags;\n    /*0x01, 0x01, 0x01*/ u8 useReverb;\n    /*0x02, 0x02, 0x02*/ u8 framesLeftToIgnore;\n    /*0x03, 0x03, 0x03*/ u8 curFrame;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    /*      0x04, 0x04*/ u8 downsampleRate;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    /*            0x05*/ s8 unk5;\n#endif\n    /*      0x06, 0x06*/ u16 windowSize; // same as bufSizePerChannel\n#endif\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    /*            0x08*/ u16 unk08;\n#endif\n    /*0x04, 0x08, 0x0A*/ u16 reverbGain;\n    /*0x06, 0x0A, 0x0C*/ u16 resampleRate;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    /*            0x0E*/ u16 panRight;\n    /*            0x10*/ u16 panLeft;\n#endif\n    /*0x08, 0x0C, 0x14*/ s32 nextRingBufferPos;\n    /*0x0C, 0x10, 0x18*/ s32 unkC; // never read\n    /*0x10, 0x14, 0x1C*/ s32 bufSizePerChannel;\n    struct {\n        s16 *left;\n        s16 *right;\n    } ringBuffer;\n    /*0x1C, 0x20, 0x28*/ s16 *resampleStateLeft;\n    /*0x20, 0x24, 0x2C*/ s16 *resampleStateRight;\n    /*0x24, 0x28, 0x30*/ s16 *unk24; // never read\n    /*0x28, 0x2C, 0x34*/ s16 *unk28; // never read\n    /*0x2C, 0x30, 0x38*/ struct ReverbRingBufferItem items[2][MAX_UPDATES_PER_FRAME];\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n    // Only used in sh:\n    /*            0x100*/ s16 *unk100;\n    /*            0x104*/ s16 *unk104;\n    /*            0x108*/ s16 *unk108;\n    /*            0x10C*/ s16 *unk10C;\n#endif\n}; // 0xCC <= size <= 0x100\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\nextern struct SynthesisReverb gSynthesisReverbs[4];\nextern s8 gNumSynthesisReverbs;\nextern struct NoteSubEu *gNoteSubsEu;\nextern f32 gLeftVolRampings[3][1024];\nextern f32 gRightVolRampings[3][1024];\nextern f32 *gCurrentLeftVolRamping; // Points to any of the three left buffers above\nextern f32 *gCurrentRightVolRamping; // Points to any of the three right buffers above\n#else\nextern struct SynthesisReverb gSynthesisReverb;\n#endif\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\nextern s16 D_SH_803479B4;\n#endif\n\nu64 *synthesis_execute(u64 *cmdBuf, s32 *writtenCmds, s16 *aiBuf, s32 bufLen);\n#if defined(VERSION_JP) || defined(VERSION_US)\nvoid note_init_volume(struct Note *note);\nvoid note_set_vel_pan_reverb(struct Note *note, f32 velocity, f32 pan, u8 reverbVol);\nvoid note_set_frequency(struct Note *note, f32 frequency);\nvoid note_enable(struct Note *note);\nvoid note_disable(struct Note *note);\n#endif\n\n#endif // AUDIO_SYNTHESIS_H\n"
  },
  {
    "path": "src/audio/synthesis_sh.c",
    "content": "#if defined(VERSION_SH) || defined(VERSION_CN)\n#include <ultra64.h>\n\n#include \"synthesis.h\"\n#include \"heap.h\"\n#include \"data.h\"\n#include \"load.h\"\n#include \"seqplayer.h\"\n#include \"internal.h\"\n#include \"external.h\"\n\n\n#define DMEM_ADDR_TEMP 0x450\n#define DMEM_ADDR_RESAMPLED 0x470\n#define DMEM_ADDR_RESAMPLED2 0x5f0\n#define DMEM_ADDR_UNCOMPRESSED_NOTE 0x5f0\n#define DMEM_ADDR_NOTE_PAN_TEMP 0x650\n#define DMEM_ADDR_COMPRESSED_ADPCM_DATA 0x990\n#define DMEM_ADDR_LEFT_CH 0x990\n#define DMEM_ADDR_RIGHT_CH 0xb10\n#define DMEM_ADDR_WET_LEFT_CH 0xc90\n#define DMEM_ADDR_WET_RIGHT_CH 0xe10\n\n#define aSetLoadBufferPair(pkt, c, off)                                                                \\\n    aSetBuffer(pkt, 0, c + DMEM_ADDR_WET_LEFT_CH, 0, DEFAULT_LEN_1CH - c);                             \\\n    aLoadBuffer(pkt, VIRTUAL_TO_PHYSICAL2(gSynthesisReverb.ringBuffer.left + (off)));                  \\\n    aSetBuffer(pkt, 0, c + DMEM_ADDR_WET_RIGHT_CH, 0, DEFAULT_LEN_1CH - c);                            \\\n    aLoadBuffer(pkt, VIRTUAL_TO_PHYSICAL2(gSynthesisReverb.ringBuffer.right + (off)))\n\n#define aSetSaveBufferPair(pkt, c, d, off)                                                             \\\n    aSetBuffer(pkt, 0, 0, c + DMEM_ADDR_WET_LEFT_CH, d);                                               \\\n    aSaveBuffer(pkt, VIRTUAL_TO_PHYSICAL2(gSynthesisReverb.ringBuffer.left +  (off)));                 \\\n    aSetBuffer(pkt, 0, 0, c + DMEM_ADDR_WET_RIGHT_CH, d);                                              \\\n    aSaveBuffer(pkt, VIRTUAL_TO_PHYSICAL2(gSynthesisReverb.ringBuffer.right + (off)));\n\n#define ALIGN(val, amnt) (((val) + (1 << amnt) - 1) & ~((1 << amnt) - 1))\n\nstruct VolumeChange {\n    u16 sourceLeft;\n    u16 sourceRight;\n    u16 targetLeft;\n    u16 targetRight;\n};\n\nu64 *synthesis_do_one_audio_update(s16 *aiBuf, s32 bufLen, u64 *cmd, s32 updateIndex);\nu64 *synthesis_process_note(s32 noteIndex, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *synthesisState, s16 *aiBuf, s32 bufLen, u64 *cmd, s32 updateIndex);\nu64 *load_wave_samples(u64 *cmd, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *synthesisState, s32 nSamplesToLoad);\nu64 *final_resample(u64 *cmd, struct NoteSynthesisState *synthesisState, s32 count, u16 pitch, u16 dmemIn, u32 flags);\nu64 *process_envelope(u64 *cmd, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *synthesisState, s32 nSamples, u16 inBuf, s32 headsetPanSettings, u32 flags);\nu64 *note_apply_headset_pan_effects(u64 *cmd, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *note, s32 bufLen, s32 flags, s32 leftRight);\n\nstruct SynthesisReverb gSynthesisReverbs[4];\nu8 sAudioSynthesisPad[0x10];\n\ns16 gVolume;\ns8 gUseReverb;\ns8 gNumSynthesisReverbs;\ns16 D_SH_803479B4; // contains 4096\nstruct NoteSubEu *gNoteSubsEu;\n\n// Equivalent functionality as the US/JP version,\n// just that the reverb structure is chosen from an array with index\n// Identical in EU.\nvoid prepare_reverb_ring_buffer(s32 chunkLen, u32 updateIndex, s32 reverbIndex) {\n    struct ReverbRingBufferItem *item;\n    struct SynthesisReverb *reverb = &gSynthesisReverbs[reverbIndex];\n    s32 srcPos;\n    s32 dstPos;\n    s32 nSamples;\n    s32 excessiveSamples;\n    s32 UNUSED pad[3];\n    if (reverb->downsampleRate != 1) {\n        if (reverb->framesLeftToIgnore == 0) {\n            // Now that the RSP has finished, downsample the samples produced two frames ago by skipping\n            // samples.\n            item = &reverb->items[reverb->curFrame][updateIndex];\n\n            // Touches both left and right since they are adjacent in memory\n            osInvalDCache(item->toDownsampleLeft, DEFAULT_LEN_2CH);\n\n            for (srcPos = 0, dstPos = 0; dstPos < item->lengthA / 2;\n                 srcPos += reverb->downsampleRate, dstPos++) {\n                reverb->ringBuffer.left[item->startPos + dstPos] =\n                    item->toDownsampleLeft[srcPos];\n                reverb->ringBuffer.right[item->startPos + dstPos] =\n                    item->toDownsampleRight[srcPos];\n            }\n            for (dstPos = 0; dstPos < item->lengthB / 2; srcPos += reverb->downsampleRate, dstPos++) {\n                reverb->ringBuffer.left[dstPos] = item->toDownsampleLeft[srcPos];\n                reverb->ringBuffer.right[dstPos] = item->toDownsampleRight[srcPos];\n            }\n        }\n    }\n\n    item = &reverb->items[reverb->curFrame][updateIndex];\n    nSamples = chunkLen / reverb->downsampleRate;\n    excessiveSamples = (nSamples + reverb->nextRingBufferPos) - reverb->bufSizePerChannel;\n    if (excessiveSamples < 0) {\n        // There is space in the ring buffer before it wraps around\n        item->lengthA = nSamples * 2;\n        item->lengthB = 0;\n        item->startPos = (s32) reverb->nextRingBufferPos;\n        reverb->nextRingBufferPos += nSamples;\n    } else {\n        // Ring buffer wrapped around\n        item->lengthA = (nSamples - excessiveSamples) * 2;\n        item->lengthB = excessiveSamples * 2;\n        item->startPos = reverb->nextRingBufferPos;\n        reverb->nextRingBufferPos = excessiveSamples;\n    }\n    // These fields are never read later\n    item->numSamplesAfterDownsampling = nSamples;\n    item->chunkLen = chunkLen;\n}\n\nu64 *synthesis_load_reverb_ring_buffer(u64 *cmd, u16 addr, u16 srcOffset, s32 len, s32 reverbIndex) {\n    aLoadBuffer(cmd++, VIRTUAL_TO_PHYSICAL2(&gSynthesisReverbs[reverbIndex].ringBuffer.left[srcOffset]),\n                addr, len);\n    aLoadBuffer(cmd++, VIRTUAL_TO_PHYSICAL2(&gSynthesisReverbs[reverbIndex].ringBuffer.right[srcOffset]),\n                addr + DEFAULT_LEN_1CH, len);\n    return cmd;\n}\n\nu64 *synthesis_save_reverb_ring_buffer(u64 *cmd, u16 addr, u16 destOffset, s32 len, s32 reverbIndex) {\n    aSaveBuffer(cmd++, addr,\n                VIRTUAL_TO_PHYSICAL2(&gSynthesisReverbs[reverbIndex].ringBuffer.left[destOffset]), len);\n    aSaveBuffer(cmd++, addr + DEFAULT_LEN_1CH,\n                VIRTUAL_TO_PHYSICAL2(&gSynthesisReverbs[reverbIndex].ringBuffer.right[destOffset]), len);\n    return cmd;\n}\n\nvoid func_sh_802ed644(s32 updateIndexStart, s32 noteIndex) {\n    s32 i;\n\n    for (i = updateIndexStart + 1; i < gAudioBufferParameters.updatesPerFrame; i++) {\n        if (!gNoteSubsEu[gMaxSimultaneousNotes * i + noteIndex].needsInit) {\n            gNoteSubsEu[gMaxSimultaneousNotes * i + noteIndex].enabled = FALSE;\n        } else {\n            break;\n        }\n    }\n}\n\nvoid synthesis_load_note_subs_eu(s32 updateIndex) {\n    struct NoteSubEu *src;\n    struct NoteSubEu *dest;\n    s32 i;\n\n    for (i = 0; i < gMaxSimultaneousNotes; i++) {\n        src = &gNotes[i].noteSubEu;\n        dest = &gNoteSubsEu[gMaxSimultaneousNotes * updateIndex + i];\n        if (src->enabled) {\n            *dest = *src;\n            src->needsInit = FALSE;\n        } else {\n            dest->enabled = FALSE;\n        }\n    }\n}\n\n// TODO: (Scrub C) pointless mask and whitespace\nu64 *synthesis_execute(u64 *cmdBuf, s32 *writtenCmds, s16 *aiBuf, s32 bufLen) {\n    s32 i, j;\n    u32 *aiBufPtr;\n    u64 *cmd = cmdBuf;\n    s32 chunkLen;\n\n    for (i = gAudioBufferParameters.updatesPerFrame; i > 0; i--) {\n        process_sequences(i - 1);\n        synthesis_load_note_subs_eu(gAudioBufferParameters.updatesPerFrame - i);\n    }\n    aiBufPtr = (u32 *) aiBuf;\n    for (i = gAudioBufferParameters.updatesPerFrame; i > 0; i--) {\n        if (i == 1) {\n            chunkLen = bufLen;\n        } else {\n            if (bufLen / i >= gAudioBufferParameters.samplesPerUpdateMax) {\n                chunkLen = gAudioBufferParameters.samplesPerUpdateMax;\n            } else if (bufLen / i <= gAudioBufferParameters.samplesPerUpdateMin) {\n                chunkLen = gAudioBufferParameters.samplesPerUpdateMin;\n            } else {\n                chunkLen = gAudioBufferParameters.samplesPerUpdate;\n            }\n        }\n        for (j = 0; j < gNumSynthesisReverbs; j++) {\n            if (gSynthesisReverbs[j].useReverb != 0) {\n                prepare_reverb_ring_buffer(chunkLen, gAudioBufferParameters.updatesPerFrame - i, j);\n            }\n        }\n        cmd = synthesis_do_one_audio_update((s16 *) aiBufPtr, chunkLen, cmd, gAudioBufferParameters.updatesPerFrame - i);\n        bufLen -= chunkLen;\n        aiBufPtr += chunkLen;\n    }\n\n    for (j = 0; j < gNumSynthesisReverbs; j++) {\n        if (gSynthesisReverbs[j].framesLeftToIgnore != 0) {\n            gSynthesisReverbs[j].framesLeftToIgnore--;\n        }\n        gSynthesisReverbs[j].curFrame ^= 1;\n    }\n    *writtenCmds = cmd - cmdBuf;\n    return cmd;\n}\n\nu64 *synthesis_resample_and_mix_reverb(u64 *cmd, s32 bufLen, s16 reverbIndex, s16 updateIndex) {\n    struct ReverbRingBufferItem *item;\n    s16 startPad;\n    s16 paddedLengthA;\n\n    item = &gSynthesisReverbs[reverbIndex].items[gSynthesisReverbs[reverbIndex].curFrame][updateIndex];\n\n    if (gSynthesisReverbs[reverbIndex].downsampleRate == 1) {\n        cmd = synthesis_load_reverb_ring_buffer(cmd, DMEM_ADDR_WET_LEFT_CH, item->startPos, item->lengthA, reverbIndex);\n        if (item->lengthB != 0) {\n            cmd = synthesis_load_reverb_ring_buffer(cmd, DMEM_ADDR_WET_LEFT_CH + item->lengthA, 0, item->lengthB, reverbIndex);\n        }\n        aAddMixer(cmd++, DMEM_ADDR_WET_LEFT_CH, DMEM_ADDR_LEFT_CH, DEFAULT_LEN_2CH);\n        aMix(cmd++, 0x8000 + gSynthesisReverbs[reverbIndex].reverbGain, DMEM_ADDR_WET_LEFT_CH, DMEM_ADDR_WET_LEFT_CH, DEFAULT_LEN_2CH);\n    } else {\n        startPad = (item->startPos % 8u) * 2;\n        paddedLengthA = ALIGN(startPad + item->lengthA, 4);\n\n        cmd = synthesis_load_reverb_ring_buffer(cmd, DMEM_ADDR_RESAMPLED, (item->startPos - startPad / 2), DEFAULT_LEN_1CH, reverbIndex);\n        if (item->lengthB != 0) {\n            cmd = synthesis_load_reverb_ring_buffer(cmd, DMEM_ADDR_RESAMPLED + paddedLengthA, 0, DEFAULT_LEN_1CH - paddedLengthA, reverbIndex);\n        }\n\n        aSetBuffer(cmd++, 0, DMEM_ADDR_RESAMPLED + startPad, DMEM_ADDR_WET_LEFT_CH, bufLen * 2);\n        aResample(cmd++, gSynthesisReverbs[reverbIndex].resampleFlags, gSynthesisReverbs[reverbIndex].resampleRate, VIRTUAL_TO_PHYSICAL2(gSynthesisReverbs[reverbIndex].resampleStateLeft));\n\n        aSetBuffer(cmd++, 0, DMEM_ADDR_RESAMPLED2 + startPad, DMEM_ADDR_WET_RIGHT_CH, bufLen * 2);\n        aResample(cmd++, gSynthesisReverbs[reverbIndex].resampleFlags, gSynthesisReverbs[reverbIndex].resampleRate, VIRTUAL_TO_PHYSICAL2(gSynthesisReverbs[reverbIndex].resampleStateRight));\n\n        aAddMixer(cmd++, DMEM_ADDR_WET_LEFT_CH, DMEM_ADDR_LEFT_CH, DEFAULT_LEN_2CH);\n        aMix(cmd++, 0x8000 + gSynthesisReverbs[reverbIndex].reverbGain, DMEM_ADDR_WET_LEFT_CH, DMEM_ADDR_WET_LEFT_CH, DEFAULT_LEN_2CH);\n    }\n    if (gSynthesisReverbs[reverbIndex].panRight != 0 || gSynthesisReverbs[reverbIndex].panLeft != 0) {\n        // Leak some audio from the left reverb channel into the right reverb channel and vice versa (pan)\n        aDMEMMove(cmd++, DMEM_ADDR_WET_LEFT_CH, DMEM_ADDR_RESAMPLED, DEFAULT_LEN_1CH);\n        aMix(cmd++, gSynthesisReverbs[reverbIndex].panRight, DMEM_ADDR_WET_RIGHT_CH, DMEM_ADDR_WET_LEFT_CH, DEFAULT_LEN_1CH);\n        aMix(cmd++, gSynthesisReverbs[reverbIndex].panLeft, DMEM_ADDR_RESAMPLED, DMEM_ADDR_WET_RIGHT_CH, DEFAULT_LEN_1CH);\n    }\n    return cmd;\n}\n\nu64 *synthesis_load_reverb_samples(u64 *cmd, s16 reverbIndex, s16 updateIndex) {\n    struct ReverbRingBufferItem *item;\n    struct SynthesisReverb *reverb;\n\n    reverb = &gSynthesisReverbs[reverbIndex];\n    item = &reverb->items[reverb->curFrame][updateIndex];\n    // Get the oldest samples in the ring buffer into the wet channels\n    cmd = synthesis_load_reverb_ring_buffer(cmd, DMEM_ADDR_RESAMPLED, item->startPos, item->lengthA, reverbIndex);\n    if (item->lengthB != 0) {\n        // Ring buffer wrapped\n        cmd = synthesis_load_reverb_ring_buffer(cmd, DMEM_ADDR_RESAMPLED + item->lengthA, 0, item->lengthB, reverbIndex);\n    }\n    return cmd;\n}\n\nu64 *synthesis_save_reverb_samples(u64 *cmd, s16 reverbIndex, s16 updateIndex) {\n    struct ReverbRingBufferItem *item;\n\n    item = &gSynthesisReverbs[reverbIndex].items[gSynthesisReverbs[reverbIndex].curFrame][updateIndex];\n    switch (gSynthesisReverbs[reverbIndex].downsampleRate) {\n        case 1:\n            // Put the oldest samples in the ring buffer into the wet channels\n            cmd = synthesis_save_reverb_ring_buffer(cmd, DMEM_ADDR_WET_LEFT_CH, item->startPos, item->lengthA, reverbIndex);\n            if (item->lengthB != 0) {\n                // Ring buffer wrapped\n                cmd = synthesis_save_reverb_ring_buffer(cmd, DMEM_ADDR_WET_LEFT_CH + item->lengthA, 0, item->lengthB, reverbIndex);\n            }\n            break;\n\n        default:\n            // Downsampling is done later by CPU when RSP is done, therefore we need to have double\n            // buffering. Left and right buffers are adjacent in memory.\n            aSaveBuffer(cmd++, DMEM_ADDR_WET_LEFT_CH,\n                    VIRTUAL_TO_PHYSICAL2(gSynthesisReverbs[reverbIndex].items[gSynthesisReverbs[reverbIndex].curFrame][updateIndex].toDownsampleLeft), DEFAULT_LEN_2CH);\n            break;\n    }\n    gSynthesisReverbs[reverbIndex].resampleFlags = 0;\n    return cmd;\n}\n\nu64 *func_sh_802EDF24(u64 *cmd, s16 reverbIndex, s16 updateIndex) {\n    struct ReverbRingBufferItem *item;\n    struct SynthesisReverb *reverb;\n\n    reverb = &gSynthesisReverbs[reverbIndex];\n    item = &reverb->items[reverb->curFrame][updateIndex];\n    // Put the oldest samples in the ring buffer into the wet channels\n    cmd = synthesis_save_reverb_ring_buffer(cmd, DMEM_ADDR_RESAMPLED, item->startPos, item->lengthA, reverbIndex);\n    if (item->lengthB != 0) {\n        // Ring buffer wrapped\n        cmd = synthesis_save_reverb_ring_buffer(cmd, DMEM_ADDR_RESAMPLED + item->lengthA, 0, item->lengthB, reverbIndex);\n    }\n    return cmd;\n}\n\nu64 *synthesis_do_one_audio_update(s16 *aiBuf, s32 bufLen, u64 *cmd, s32 updateIndex) {\n    struct NoteSubEu *noteSubEu;\n    u8 noteIndices[56];\n    s32 temp;\n    s32 i;\n    s16 j;\n    s16 notePos = 0;\n\n    if (gNumSynthesisReverbs == 0) {\n        for (i = 0; i < gMaxSimultaneousNotes; i++) {\n            if (gNoteSubsEu[gMaxSimultaneousNotes * updateIndex + i].enabled) {\n                noteIndices[notePos++] = i;\n            }\n        }\n    } else {\n        for (j = 0; j < gNumSynthesisReverbs; j++) {\n            for (i = 0; i < gMaxSimultaneousNotes; i++) {\n                noteSubEu = &gNoteSubsEu[gMaxSimultaneousNotes * updateIndex + i];\n                if (noteSubEu->enabled && j == noteSubEu->reverbIndex) {\n                    noteIndices[notePos++] = i;\n                }\n            }\n        }\n\n        for (i = 0; i < gMaxSimultaneousNotes; i++) {\n            noteSubEu = &gNoteSubsEu[gMaxSimultaneousNotes * updateIndex + i];\n            if (noteSubEu->enabled && noteSubEu->reverbIndex >= gNumSynthesisReverbs) {\n                noteIndices[notePos++] = i;\n            }\n        }\n    }\n    aClearBuffer(cmd++, DMEM_ADDR_LEFT_CH, DEFAULT_LEN_2CH);\n    i = 0;\n    for (j = 0; j < gNumSynthesisReverbs; j++) {\n        gUseReverb = gSynthesisReverbs[j].useReverb;\n        if (gUseReverb != 0) {\n            cmd = synthesis_resample_and_mix_reverb(cmd, bufLen, j, updateIndex);\n        }\n        for (; i < notePos; i++) {\n            temp = updateIndex * gMaxSimultaneousNotes;\n            if (j == gNoteSubsEu[temp + noteIndices[i]].reverbIndex) {\n                cmd = synthesis_process_note(noteIndices[i],\n                                             &gNoteSubsEu[temp + noteIndices[i]],\n                                             &gNotes[noteIndices[i]].synthesisState,\n                                             aiBuf, bufLen, cmd, updateIndex);\n                continue;\n            } else {\n                break;\n            }\n        }\n        if (gSynthesisReverbs[j].useReverb != 0) {\n            if (gSynthesisReverbs[j].unk100 != NULL) {\n                aFilter(cmd++, 0x02, bufLen * 2, gSynthesisReverbs[j].unk100);\n                aFilter(cmd++, gSynthesisReverbs[j].resampleFlags, DMEM_ADDR_WET_LEFT_CH, gSynthesisReverbs[j].unk108);\n            }\n            if (gSynthesisReverbs[j].unk104 != NULL) {\n                aFilter(cmd++, 0x02, bufLen * 2, gSynthesisReverbs[j].unk104);\n                aFilter(cmd++, gSynthesisReverbs[j].resampleFlags, DMEM_ADDR_WET_RIGHT_CH, gSynthesisReverbs[j].unk10C);\n            }\n            cmd = synthesis_save_reverb_samples(cmd, j, updateIndex);\n            if (gSynthesisReverbs[j].unk5 != -1) {\n                if (gSynthesisReverbs[gSynthesisReverbs[j].unk5].downsampleRate == 1) {\n                    cmd = synthesis_load_reverb_samples(cmd, gSynthesisReverbs[j].unk5, updateIndex);\n                    aMix(cmd++, gSynthesisReverbs[j].unk08, DMEM_ADDR_WET_LEFT_CH, DMEM_ADDR_RESAMPLED, DEFAULT_LEN_2CH);\n                    cmd = func_sh_802EDF24(cmd++, gSynthesisReverbs[j].unk5, updateIndex);\n                }\n            }\n        }\n    }\n    for (; i < notePos; i++) {\n        struct NoteSubEu *noteSubEu2 = &gNoteSubsEu[updateIndex * gMaxSimultaneousNotes + noteIndices[i]];\n        cmd = synthesis_process_note(noteIndices[i],\n                                     noteSubEu2,\n                                     &gNotes[noteIndices[i]].synthesisState,\n                                     aiBuf, bufLen, cmd, updateIndex);\n    }\n\n    temp = bufLen * 2;\n    aInterleave(cmd++, DMEM_ADDR_TEMP, DMEM_ADDR_LEFT_CH, DMEM_ADDR_RIGHT_CH, temp);\n    aSaveBuffer(cmd++, DMEM_ADDR_TEMP, VIRTUAL_TO_PHYSICAL2(aiBuf), temp * 2);\n    return cmd;\n}\n\nu64 *synthesis_process_note(s32 noteIndex, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *synthesisState, UNUSED s16 *aiBuf, s32 bufLen, u64 *cmd, s32 updateIndex) {\n    UNUSED s32 pad0[3];\n    struct AudioBankSample *audioBookSample; // sp164, sp138\n    struct AdpcmLoop *loopInfo; // sp160, sp134\n    s16 *curLoadedBook; // sp154, sp130\n    UNUSED u8 padEU[0x04];\n    UNUSED u8 pad8[0x04];\n    s32 noteFinished; // 150 t2, sp124\n    s32 restart; // 14c t3, sp120\n    s32 flags; // sp148, sp11C, t8\n    u16 resamplingRateFixedPoint; // sp5c, sp11A\n    s32 nSamplesToLoad; //s0, Ec\n    UNUSED u8 pad7[0x0c]; // sp100\n    s32 sp130; //sp128, sp104\n    UNUSED s32 tempBufLen;\n    UNUSED u32 pad9;\n    s32 t0;\n    u8 *sampleAddr; // sp120, spF4\n    s32 s6;\n    s32 samplesLenAdjusted; // 108,      spEC\n    s32 nAdpcmSamplesProcessed; // signed required for US // spc0\n    s32 endPos; // sp110,    spE4\n    s32 nSamplesToProcess; // sp10c/a0, spE0\n    // Might have been used to store (samplesLenFixedPoint >> 0x10), but doing so causes strange\n    // behavior with the break near the end of the loop, causing US and JP to need a goto instead\n    UNUSED s32 samplesLenInt;\n    s32 s2;\n    s32 leftRight; //s0\n    s32 s5; //s4\n    u32 samplesLenFixedPoint; // v1_1\n    s32 s3;     // spA0\n    s32 nSamplesInThisIteration; // v1_2\n    u32 a3;\n    u8 *v0_2;\n    s32 unk_s6; // sp90\n    s32 s5Aligned;\n    s32 sp88;\n    s32 sp84;\n    u32 temp;\n    s32 nParts; // spE8, spBC\n    s32 curPart; // spE4, spB8\n    s32 aligned;\n    UNUSED u32 padSH1;\n    s32 resampledTempLen; // spD8, spAC, sp6c\n    u16 noteSamplesDmemAddrBeforeResampling; // spD6, spAA, sp6a -- 6C\n    UNUSED u32 padSH2;\n    UNUSED u32 padSH3;\n    UNUSED u32 padSH4;\n    struct Note *note;  // sp58\n    u16 sp56;           // sp56\n    u16 addr;\n    u8 synthesisVolume;\n\n    curLoadedBook = NULL;\n    note = &gNotes[noteIndex];\n    flags = 0;\n    if (noteSubEu->needsInit == TRUE) {\n        flags = A_INIT;\n        synthesisState->restart = 0;\n        synthesisState->samplePosInt = 0;\n        synthesisState->samplePosFrac = 0;\n        synthesisState->curVolLeft = 0;\n        synthesisState->curVolRight = 0;\n        synthesisState->prevHeadsetPanRight = 0;\n        synthesisState->prevHeadsetPanLeft = 0;\n        synthesisState->reverbVol = noteSubEu->reverbVol;\n        synthesisState->unk5 = 0;\n        note->noteSubEu.finished = 0;\n    }\n\n    resamplingRateFixedPoint = noteSubEu->resamplingRateFixedPoint;\n    nParts = noteSubEu->hasTwoAdpcmParts + 1;\n    samplesLenFixedPoint = (resamplingRateFixedPoint * bufLen * 2) + synthesisState->samplePosFrac;\n    nSamplesToLoad = (samplesLenFixedPoint >> 0x10);\n    synthesisState->samplePosFrac = samplesLenFixedPoint & 0xFFFF;\n\n    if ((synthesisState->unk5 == 1) && (nParts == 2)) {\n        nSamplesToLoad += 2;\n        sp56 = 2;\n    } else if ((synthesisState->unk5 == 2) && (nParts == 1)) {\n        nSamplesToLoad -= 4;\n        sp56 = 4;\n    } else {\n        sp56 = 0;\n    }\n\n\n    synthesisState->unk5 = nParts;\n\n    if (noteSubEu->isSyntheticWave) {\n        cmd = load_wave_samples(cmd, noteSubEu, synthesisState, nSamplesToLoad);\n        noteSamplesDmemAddrBeforeResampling = (synthesisState->samplePosInt * 2) + DMEM_ADDR_UNCOMPRESSED_NOTE;\n        synthesisState->samplePosInt += nSamplesToLoad;\n    } else {\n        // ADPCM note\n        audioBookSample = noteSubEu->sound.audioBankSound->sample;\n        loopInfo = audioBookSample->loop;\n        endPos = loopInfo->end;\n        sampleAddr = audioBookSample->sampleAddr;\n        resampledTempLen = 0;\n        for (curPart = 0; curPart < nParts; curPart++) {\n            nAdpcmSamplesProcessed = 0; // s8\n            s5 = 0; // s4\n\n            if (nParts == 1) {\n                samplesLenAdjusted = nSamplesToLoad;\n            } else if (nSamplesToLoad & 1) {\n                samplesLenAdjusted = (nSamplesToLoad & ~1) + (curPart * 2);\n            } else {\n                samplesLenAdjusted = nSamplesToLoad;\n            }\n\n            if (audioBookSample->codec == CODEC_ADPCM) {\n                if (curLoadedBook != (*audioBookSample->book).book) {\n                    u32 nEntries;\n                    switch (noteSubEu->bookOffset) {\n                        case 1:\n                            curLoadedBook = euUnknownData_80301950 + 1;\n                            break;\n                        case 2:\n                            curLoadedBook = euUnknownData_80301950 + 2;\n                            break;\n                        case 3:\n                        default:\n                            curLoadedBook = audioBookSample->book->book;\n                            break;\n                    }\n                    nEntries = 16 * audioBookSample->book->order * audioBookSample->book->npredictors;\n                    aLoadADPCM(cmd++, nEntries, VIRTUAL_TO_PHYSICAL2(curLoadedBook));\n                }\n            }\n\n            while (nAdpcmSamplesProcessed != samplesLenAdjusted) {\n                s32 samplesRemaining; // v1\n                s32 s0;\n\n                noteFinished = FALSE;\n                restart = FALSE;\n                s2 = synthesisState->samplePosInt & 0xf;\n                samplesRemaining = endPos - synthesisState->samplePosInt;\n                nSamplesToProcess = samplesLenAdjusted - nAdpcmSamplesProcessed;\n\n                if (s2 == 0 && synthesisState->restart == FALSE) {\n                    s2 = 16;\n                }\n                s6 = 16 - s2; // a1\n                if (nSamplesToProcess < samplesRemaining) {\n                    t0 = (nSamplesToProcess - s6 + 0xf) / 16;\n                    s0 = t0 * 16;\n                    s3 = s6 + s0 - nSamplesToProcess;\n                } else {\n                    s0 = samplesRemaining - s6;\n                    s3 = 0;\n                    if (s0 <= 0) {\n                        s0 = 0;\n                        s6 = samplesRemaining;\n                    }\n                    t0 = (s0 + 0xf) / 16;\n                    if (loopInfo->count != 0) {\n                        // Loop around and restart\n                        restart = 1;\n                    } else {\n                        noteFinished = 1;\n                    }\n                }\n                switch (audioBookSample->codec) {\n                    case CODEC_ADPCM:\n                        unk_s6 = 9;\n                        sp88 = 0x10;\n                        sp84 = 0;\n                        break;\n                    case CODEC_S8:\n                        unk_s6 = 0x10;\n                        sp88 = 0x10;\n                        sp84 = 0;\n                        break;\n                    case CODEC_SKIP: goto skip;\n                }\n                if (t0 != 0) {\n                    temp = (synthesisState->samplePosInt + sp88 - s2) / 16;\n                    if (audioBookSample->medium == 0) {\n                        v0_2 = sp84 + (temp * unk_s6) + sampleAddr;\n                    } else {\n                        v0_2 = dma_sample_data((uintptr_t)(sp84 + (temp * unk_s6) + sampleAddr),\n                                ALIGN(t0 * unk_s6 + 16, 4), flags, &synthesisState->sampleDmaIndex, audioBookSample->medium);\n                    }\n\n                    a3 = ((uintptr_t)v0_2 & 0xf);\n                    aligned = ALIGN(t0 * unk_s6 + 16, 4);\n                    addr = (DMEM_ADDR_COMPRESSED_ADPCM_DATA - aligned) & 0xffff;\n                    aLoadBuffer(cmd++, VIRTUAL_TO_PHYSICAL2(v0_2 - a3), addr, ALIGN(t0 * unk_s6 + 16, 4));\n                } else {\n                    s0 = 0;\n                    a3 = 0;\n                }\n                if (synthesisState->restart != FALSE) {\n                    aSetLoop(cmd++, VIRTUAL_TO_PHYSICAL2(audioBookSample->loop->state));\n                    flags = A_LOOP; // = 2\n                    synthesisState->restart = FALSE;\n                }\n                nSamplesInThisIteration = s0 + s6 - s3;\n                if (nAdpcmSamplesProcessed == 0) {\n                    switch (audioBookSample->codec) {\n                        case CODEC_ADPCM:\n                            aligned = ALIGN(t0 * unk_s6 + 16, 4);\n                            addr = (DMEM_ADDR_COMPRESSED_ADPCM_DATA - aligned) & 0xffff;\n                            aSetBuffer(cmd++, 0, addr + a3, DMEM_ADDR_UNCOMPRESSED_NOTE, s0 * 2);\n                            aADPCMdec(cmd++, flags, VIRTUAL_TO_PHYSICAL2(synthesisState->synthesisBuffers->adpcmdecState));\n                            break;\n                        case CODEC_S8:\n                            aligned = ALIGN(t0 * unk_s6 + 16, 4);\n                            addr = (DMEM_ADDR_COMPRESSED_ADPCM_DATA - aligned) & 0xffff;\n                            aSetBuffer(cmd++, 0, addr + a3, DMEM_ADDR_UNCOMPRESSED_NOTE, s0 * 2);\n                            aS8Dec(cmd++, flags, VIRTUAL_TO_PHYSICAL2(synthesisState->synthesisBuffers->adpcmdecState));\n                            break;\n                    }\n                    sp130 = s2 * 2;\n                } else {\n                    s5Aligned = ALIGN(s5 + 16, 4);\n                    switch (audioBookSample->codec) {\n                        case CODEC_ADPCM:\n                            aligned = ALIGN(t0 * unk_s6 + 16, 4);\n                            addr = (DMEM_ADDR_COMPRESSED_ADPCM_DATA - aligned) & 0xffff;\n                            aSetBuffer(cmd++, 0, addr + a3, DMEM_ADDR_UNCOMPRESSED_NOTE + s5Aligned, s0 * 2);\n                            aADPCMdec(cmd++, flags, VIRTUAL_TO_PHYSICAL2(synthesisState->synthesisBuffers->adpcmdecState));\n                            break;\n                        case CODEC_S8:\n                            aligned = ALIGN(t0 * unk_s6 + 16, 4);\n                            addr = (DMEM_ADDR_COMPRESSED_ADPCM_DATA - aligned) & 0xffff;\n                            aSetBuffer(cmd++, 0, addr + a3, DMEM_ADDR_UNCOMPRESSED_NOTE + s5Aligned, s0 * 2);\n                            aS8Dec(cmd++, flags, VIRTUAL_TO_PHYSICAL2(synthesisState->synthesisBuffers->adpcmdecState));\n                            break;\n                    }\n                    aDMEMMove(cmd++, DMEM_ADDR_UNCOMPRESSED_NOTE + s5Aligned + (s2 * 2), DMEM_ADDR_UNCOMPRESSED_NOTE + s5, (nSamplesInThisIteration) * 2);\n                }\n                nAdpcmSamplesProcessed += nSamplesInThisIteration;\n                switch (flags) {\n                    case A_INIT: // = 1\n                        sp130 = 0x20;\n                        s5 = (s0 + 0x10) * 2;\n                        break;\n                    case A_LOOP: // = 2\n                        s5 = (nSamplesInThisIteration) * 2 + s5;\n                        break;\n                    default:\n                        if (s5 != 0) {\n                            s5 = (nSamplesInThisIteration) * 2 + s5;\n                        } else {\n                            s5 = (s2 + (nSamplesInThisIteration)) * 2;\n                        }\n                        break;\n                }\n                flags = 0;\nskip:\n                if (noteFinished) {\n                    aClearBuffer(cmd++, DMEM_ADDR_UNCOMPRESSED_NOTE + s5,\n                            (samplesLenAdjusted - nAdpcmSamplesProcessed) * 2);\n                    noteSubEu->finished = 1;\n                    note->noteSubEu.finished = 1;\n                    func_sh_802ed644(updateIndex, noteIndex);\n                    break;\n                }\n                if (restart != 0) {\n                    synthesisState->restart = TRUE;\n                    synthesisState->samplePosInt = loopInfo->start;\n                } else {\n                    synthesisState->samplePosInt += nSamplesToProcess;\n                }\n            }\n\n            switch (nParts) {\n                case 1:\n                    noteSamplesDmemAddrBeforeResampling = DMEM_ADDR_UNCOMPRESSED_NOTE + sp130;\n                    break;\n                case 2:\n                    switch (curPart) {\n                        case 0:\n                            aDownsampleHalf(cmd++, ALIGN(samplesLenAdjusted / 2, 3), DMEM_ADDR_UNCOMPRESSED_NOTE + sp130, DMEM_ADDR_RESAMPLED);\n                            resampledTempLen = samplesLenAdjusted;\n                            noteSamplesDmemAddrBeforeResampling = DMEM_ADDR_RESAMPLED;\n                            if (noteSubEu->finished != FALSE) {\n                                aClearBuffer(cmd++, noteSamplesDmemAddrBeforeResampling + resampledTempLen, samplesLenAdjusted + 0x10);\n                            }\n                            break;\n                        case 1:\n                            aDownsampleHalf(cmd++, ALIGN(samplesLenAdjusted / 2, 3), DMEM_ADDR_UNCOMPRESSED_NOTE + sp130, resampledTempLen + DMEM_ADDR_RESAMPLED);\n                            break;\n                    }\n            }\n            if (noteSubEu->finished != FALSE) {\n                break;\n            }\n        }\n    }\n    flags = 0;\n    if (noteSubEu->needsInit == TRUE) {\n        flags = A_INIT;\n        noteSubEu->needsInit = FALSE;\n    }\n    flags = flags | sp56;\n    cmd = final_resample(cmd, synthesisState, bufLen * 2, resamplingRateFixedPoint,\n            noteSamplesDmemAddrBeforeResampling, flags);\n    if ((flags & 1) != 0) {\n        flags = 1;\n    }\n\n    if (noteSubEu->filter) {\n        aFilter(cmd++, 0x02, bufLen * 2, noteSubEu->filter);\n        aFilter(cmd++, flags, DMEM_ADDR_TEMP, synthesisState->synthesisBuffers->filterBuffer);\n\n    }\n\n    if (noteSubEu->bookOffset == 3) {\n        aUnknown25(cmd++, 0, bufLen * 2, DMEM_ADDR_TEMP, DMEM_ADDR_TEMP);\n    }\n\n    synthesisVolume = noteSubEu->synthesisVolume;\n    if (synthesisVolume != 0) {\n        if (synthesisVolume < 0x10) {\n            synthesisVolume = 0x10;\n        }\n\n        aHiLoGain(cmd++, synthesisVolume, (bufLen + 0x10) * 2, DMEM_ADDR_TEMP);\n    }\n\n    if (noteSubEu->headsetPanRight != 0 || synthesisState->prevHeadsetPanRight != 0) {\n        leftRight = 1;\n    } else if (noteSubEu->headsetPanLeft != 0 || synthesisState->prevHeadsetPanLeft != 0) {\n        leftRight = 2;\n    } else {\n        leftRight = 0;\n    }\n    cmd = process_envelope(cmd, noteSubEu, synthesisState, bufLen, DMEM_ADDR_TEMP, leftRight, flags);\n    if (noteSubEu->usesHeadsetPanEffects) {\n        if ((flags & 1) == 0) {\n            flags = 0;\n        }\n        cmd = note_apply_headset_pan_effects(cmd, noteSubEu, synthesisState, bufLen * 2, flags, leftRight);\n    }\n\n    return cmd;\n}\n\nu64 *load_wave_samples(u64 *cmd, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *synthesisState, s32 nSamplesToLoad) {\n    s32 a3;\n    s32 repeats;\n    aLoadBuffer(cmd++, VIRTUAL_TO_PHYSICAL2(noteSubEu->sound.samples),\n                DMEM_ADDR_UNCOMPRESSED_NOTE, 128);\n\n    synthesisState->samplePosInt &= 0x3f;\n    a3 = 64 - synthesisState->samplePosInt;\n    if (a3 < nSamplesToLoad) {\n        repeats = (nSamplesToLoad - a3 + 63) / 64;\n        if (repeats != 0) {\n            aDuplicate(cmd++,\n                    /*dmemin*/ DMEM_ADDR_UNCOMPRESSED_NOTE,\n                    /*dmemout*/ DMEM_ADDR_UNCOMPRESSED_NOTE + 128,\n                    /*copies*/ repeats);\n        }\n    }\n    return cmd;\n}\n\nu64 *final_resample(u64 *cmd, struct NoteSynthesisState *synthesisState, s32 count, u16 pitch, u16 dmemIn, u32 flags) {\n    if (pitch == 0) {\n        aClearBuffer(cmd++, DMEM_ADDR_TEMP, count);\n    } else {\n        aSetBuffer(cmd++, /*flags*/ 0, dmemIn, /*dmemout*/ DMEM_ADDR_TEMP, count);\n        aResample(cmd++, flags, pitch, VIRTUAL_TO_PHYSICAL2(synthesisState->synthesisBuffers->finalResampleState));\n    }\n    return cmd;\n}\n\nu64 *process_envelope(u64 *cmd, struct NoteSubEu *note, struct NoteSynthesisState *synthesisState, s32 nSamples, u16 inBuf, s32 headsetPanSettings, UNUSED u32 flags) {\n    u16 sourceRight;\n    u16 sourceLeft;\n    u16 targetLeft;\n    u16 targetRight;\n    s16 rampLeft;\n    s16 rampRight;\n    s32 sourceReverbVol;\n    s16 rampReverb;\n    s32 reverbVolDiff = 0;\n\n    sourceLeft = synthesisState->curVolLeft;\n    sourceRight = synthesisState->curVolRight;\n    targetLeft = note->targetVolLeft;\n    targetRight = note->targetVolRight;\n    targetLeft <<= 4;\n    targetRight <<= 4;\n\n    if (targetLeft != sourceLeft) {\n        rampLeft = (targetLeft - sourceLeft) / (nSamples >> 3);\n    } else {\n        rampLeft = 0;\n    }\n    if (targetRight != sourceRight) {\n        rampRight = (targetRight - sourceRight) / (nSamples >> 3);\n    } else {\n        rampRight = 0;\n    }\n\n    sourceReverbVol = synthesisState->reverbVol;\n    if (note->reverbVol != sourceReverbVol) {\n        reverbVolDiff = ((note->reverbVol & 0x7f) - (sourceReverbVol & 0x7f)) << 9;\n        rampReverb = reverbVolDiff / (nSamples >> 3);\n        synthesisState->reverbVol = note->reverbVol;\n    } else {\n        rampReverb = 0;\n    }\n    synthesisState->curVolLeft = sourceLeft + rampLeft * (nSamples >> 3);\n    synthesisState->curVolRight = sourceRight + rampRight * (nSamples >> 3);\n\n    if (note->usesHeadsetPanEffects) {\n        aClearBuffer(cmd++, DMEM_ADDR_NOTE_PAN_TEMP, DEFAULT_LEN_1CH);\n        aEnvSetup1(cmd++, (sourceReverbVol & 0x7f) * 2, rampReverb, rampLeft, rampRight);\n        aEnvSetup2(cmd++, sourceLeft, sourceRight);\n\n        switch (headsetPanSettings) {\n            case 1:\n                aEnvMixer(cmd++,\n                    inBuf, nSamples,\n                    (sourceReverbVol & 0x80) >> 7,\n                    note->stereoStrongRight, note->stereoStrongLeft,\n                    DMEM_ADDR_NOTE_PAN_TEMP,\n                    DMEM_ADDR_RIGHT_CH,\n                    DMEM_ADDR_WET_LEFT_CH,\n                    DMEM_ADDR_WET_RIGHT_CH);\n                break;\n            case 2:\n                aEnvMixer(cmd++,\n                    inBuf, nSamples,\n                    (sourceReverbVol & 0x80) >> 7,\n                    note->stereoStrongRight, note->stereoStrongLeft,\n                    DMEM_ADDR_LEFT_CH,\n                    DMEM_ADDR_NOTE_PAN_TEMP,\n                    DMEM_ADDR_WET_LEFT_CH,\n                    DMEM_ADDR_WET_RIGHT_CH);\n                break;\n            default:\n                aEnvMixer(cmd++,\n                    inBuf, nSamples,\n                    (sourceReverbVol & 0x80) >> 7,\n                    note->stereoStrongRight, note->stereoStrongLeft,\n                    DMEM_ADDR_LEFT_CH,\n                    DMEM_ADDR_RIGHT_CH,\n                    DMEM_ADDR_WET_LEFT_CH,\n                    DMEM_ADDR_WET_RIGHT_CH);\n                break;\n        }\n    } else {\n        aEnvSetup1(cmd++, (sourceReverbVol & 0x7f) * 2, rampReverb, rampLeft, rampRight);\n        aEnvSetup2(cmd++, sourceLeft, sourceRight);\n        aEnvMixer(cmd++,\n                inBuf, nSamples,\n                (sourceReverbVol & 0x80) >> 7,\n                note->stereoStrongRight, note->stereoStrongLeft,\n                DMEM_ADDR_LEFT_CH,\n                DMEM_ADDR_RIGHT_CH,\n                DMEM_ADDR_WET_LEFT_CH,\n                DMEM_ADDR_WET_RIGHT_CH);\n    }\n    return cmd;\n}\n\nu64 *note_apply_headset_pan_effects(u64 *cmd, struct NoteSubEu *noteSubEu, struct NoteSynthesisState *note, s32 bufLen, s32 flags, s32 leftRight) {\n    u16 dest;\n    u16 pitch;\n    u8 prevPanShift;\n    u8 panShift;\n    UNUSED u8 unkDebug;\n\n    switch (leftRight) {\n        case 1:\n            dest = DMEM_ADDR_LEFT_CH;\n            panShift = noteSubEu->headsetPanRight;\n            note->prevHeadsetPanLeft = 0;\n            prevPanShift = note->prevHeadsetPanRight;\n            note->prevHeadsetPanRight = panShift;\n            break;\n        case 2:\n            dest = DMEM_ADDR_RIGHT_CH;\n            panShift = noteSubEu->headsetPanLeft;\n            note->prevHeadsetPanRight = 0;\n\n            prevPanShift = note->prevHeadsetPanLeft;\n            note->prevHeadsetPanLeft = panShift;\n            break;\n        default:\n            return cmd;\n    }\n\n    if (flags != 1) { // A_INIT?\n        // Slightly adjust the sample rate in order to fit a change in pan shift\n        if (panShift != prevPanShift) {\n            pitch = (((bufLen << 0xf) / 2) - 1) / ((bufLen + panShift - prevPanShift - 2) / 2);\n            aSetBuffer(cmd++, 0, DMEM_ADDR_NOTE_PAN_TEMP, DMEM_ADDR_TEMP, (bufLen + panShift) - prevPanShift);\n            aResampleZoh(cmd++, pitch, 0);\n        } else {\n            aDMEMMove(cmd++, DMEM_ADDR_NOTE_PAN_TEMP, DMEM_ADDR_TEMP, bufLen);\n        }\n\n        if (prevPanShift != 0) {\n            aLoadBuffer(cmd++, VIRTUAL_TO_PHYSICAL2(note->synthesisBuffers->panSamplesBuffer),\n                        DMEM_ADDR_NOTE_PAN_TEMP, ALIGN(prevPanShift, 4));\n            aDMEMMove(cmd++, DMEM_ADDR_TEMP, DMEM_ADDR_NOTE_PAN_TEMP + prevPanShift, bufLen + panShift - prevPanShift);\n        } else {\n            aDMEMMove(cmd++, DMEM_ADDR_TEMP, DMEM_ADDR_NOTE_PAN_TEMP, bufLen + panShift);\n        }\n    } else {\n        // Just shift right\n        aDMEMMove(cmd++, DMEM_ADDR_NOTE_PAN_TEMP, DMEM_ADDR_TEMP, bufLen);\n        aClearBuffer(cmd++, DMEM_ADDR_NOTE_PAN_TEMP, panShift);\n        aDMEMMove(cmd++, DMEM_ADDR_TEMP, DMEM_ADDR_NOTE_PAN_TEMP + panShift, bufLen);\n    }\n\n    if (panShift) {\n        // Save excessive samples for next iteration\n        aSaveBuffer(cmd++, DMEM_ADDR_NOTE_PAN_TEMP + bufLen,\n                    VIRTUAL_TO_PHYSICAL2(note->synthesisBuffers->panSamplesBuffer), ALIGN(panShift, 4));\n    }\n\n    aAddMixer(cmd++, DMEM_ADDR_NOTE_PAN_TEMP, dest, (bufLen + 0x3f) & 0xffc0);\n\n    return cmd;\n}\n#endif\n"
  },
  {
    "path": "src/buffers/buffers.c",
    "content": "#include <ultra64.h>\n\n#include \"buffers.h\"\n\nALIGNED8 u8 gDecompressionHeap[0xD000];\n\n#if defined(VERSION_EU)\nALIGNED16 u8 gAudioHeap[DOUBLE_SIZE_ON_64_BIT(0x31200) - 0x3800];\n#elif defined(VERSION_SH)\nALIGNED16 u8 gAudioHeap[DOUBLE_SIZE_ON_64_BIT(0x31200) - 0x4800];\n#elif defined(VERSION_CN)\nALIGNED16 u8 gAudioHeap[DOUBLE_SIZE_ON_64_BIT(0x31200) - 0x4C00];\n#else\nALIGNED16 u8 gAudioHeap[DOUBLE_SIZE_ON_64_BIT(0x31200)];\n#endif\n\n#ifdef VERSION_CN\n\n// iQue BSS reordering\n\n// 0x200 bytes\nALIGNED8 struct SaveBuffer gSaveBuffer;\n// 0x190a0 bytes\nstruct GfxPool gGfxPools[2];\nALIGNED8 u8 gThread4Stack[STACKSIZE];\n#if ENABLE_RUMBLE\nALIGNED8 u8 gThread6Stack[STACKSIZE];\n#endif\nALIGNED8 u8 gThread5Stack[STACKSIZE];\n// 0x400 bytes\nALIGNED8 u8 gGfxSPTaskStack[SP_DRAM_STACK_SIZE8];\n// 0xc00 bytes for f3dex, 0x900 otherwise\nALIGNED8 u8 gGfxSPTaskYieldBuffer[OS_YIELD_DATA_SIZE];\nALIGNED8 u8 gThread3Stack[STACKSIZE + 0x400];\nALIGNED8 u8 gIdleThreadStack[IDLE_STACKSIZE];\n\n#else\n\nALIGNED8 u8 gIdleThreadStack[IDLE_STACKSIZE];\nALIGNED8 u8 gThread3Stack[STACKSIZE];\nALIGNED8 u8 gThread4Stack[STACKSIZE];\nALIGNED8 u8 gThread5Stack[STACKSIZE];\n#if ENABLE_RUMBLE\nALIGNED8 u8 gThread6Stack[STACKSIZE];\n#endif\n// 0x400 bytes\nALIGNED8 u8 gGfxSPTaskStack[SP_DRAM_STACK_SIZE8];\n// 0xc00 bytes for f3dex, 0x900 otherwise\nALIGNED8 u8 gGfxSPTaskYieldBuffer[OS_YIELD_DATA_SIZE];\n// 0x200 bytes\nALIGNED8 struct SaveBuffer gSaveBuffer;\n// 0x190a0 bytes\nstruct GfxPool gGfxPools[2];\n\n#endif\n\n// Yield buffer for audio, 0x400 bytes. Stubbed out post-JP since the audio\n// task never yields.\n#ifdef VERSION_JP\nALIGNED8 u8 gAudioSPTaskYieldBuffer[OS_YIELD_AUDIO_SIZE];\n#endif\n\n// Probably Thread 2 stack space. Unreferenced, and stubbed out with f3dex to\n// avoid an overflowing .buffers segment.\n#if !defined(F3DEX_GBI_SHARED) && !defined(VERSION_EU)\nALIGNED8 u8 gUnusedThread2Stack[UNUSED_STACKSIZE];\n#endif\n"
  },
  {
    "path": "src/buffers/buffers.h",
    "content": "#ifndef BUFFERS_H\n#define BUFFERS_H\n\n#include <PR/ultratypes.h>\n\n#include \"game/save_file.h\"\n#include \"game/game_init.h\"\n#include \"config.h\"\n\nextern u8 gDecompressionHeap[];\n\nextern u8 gAudioHeap[];\n\nextern u8 gAudioSPTaskYieldBuffer[];\n\nextern u8 gUnusedThread2Stack[];\n\nextern u8 gIdleThreadStack[];\nextern u8 gThread3Stack[];\nextern u8 gThread4Stack[];\nextern u8 gThread5Stack[];\n#if ENABLE_RUMBLE\nextern u8 gThread6Stack[];\n#endif\n\nextern u8 gGfxSPTaskYieldBuffer[];\n\nextern struct SaveBuffer gSaveBuffer;\n\nextern u8 gGfxSPTaskStack[];\n\nextern struct GfxPool gGfxPools[2];\n\n#endif // BUFFERS_H\n"
  },
  {
    "path": "src/buffers/framebuffers.c",
    "content": "#include <ultra64.h>\n\n#include \"config.h\"\n\n// 0x70800 bytes\n#ifdef AVOID_UB\nu16 gFramebuffers[3][SCREEN_WIDTH * SCREEN_HEIGHT];\n#else\nu16 gFramebuffer0[SCREEN_WIDTH * SCREEN_HEIGHT];\nu16 gFramebuffer1[SCREEN_WIDTH * SCREEN_HEIGHT];\nu16 gFramebuffer2[SCREEN_WIDTH * SCREEN_HEIGHT];\n#endif\n"
  },
  {
    "path": "src/buffers/framebuffers.h",
    "content": "#ifndef FRAMEBUFFERS_H\n#define FRAMEBUFFERS_H\n\n#include <PR/ultratypes.h>\n\n#include \"config.h\"\n\n// level_script.c assumes that the frame buffers are adjacent, while game.c's\n// -g codegen implies that they are separate variables. This is impossible to\n// reconcile without undefined behavior. Avoid that when possible.\n#ifdef AVOID_UB\nextern u16 gFramebuffers[3][SCREEN_WIDTH * SCREEN_HEIGHT];\n#define gFramebuffer0 gFramebuffers[0]\n#define gFramebuffer1 gFramebuffers[1]\n#define gFramebuffer2 gFramebuffers[2]\n#else\nextern u16 gFramebuffer0[SCREEN_WIDTH * SCREEN_HEIGHT];\nextern u16 gFramebuffer1[SCREEN_WIDTH * SCREEN_HEIGHT];\nextern u16 gFramebuffer2[SCREEN_WIDTH * SCREEN_HEIGHT];\n#endif\n\n#endif // FRAMEBUFFERS_H\n"
  },
  {
    "path": "src/buffers/gfx_output_buffer.c",
    "content": "#include <ultra64.h>\n#include \"gfx_output_buffer.h\"\n\nu64 gGfxSPTaskOutputBuffer[GFX_OUTPUT_BUFFER_SIZE];\n"
  },
  {
    "path": "src/buffers/gfx_output_buffer.h",
    "content": "#ifndef GFX_OUTPUT_BUFFER_H\n#define GFX_OUTPUT_BUFFER_H\n\n#include <PR/ultratypes.h>\n\n#ifdef VERSION_EU\n// 0x17e00 bytes, aligned to a 0x200-byte boundary through sm64.ld. The alignment\n// wastes 0x100 bytes of space.\n#define GFX_OUTPUT_BUFFER_SIZE 0x2fc0\n#else\n// 0x1f000 bytes, aligned to a 0x1000-byte boundary through sm64.ld. (This results\n// in a bunch of unused space: ~0x100 in JP, ~0x300 in US.)\n#define GFX_OUTPUT_BUFFER_SIZE 0x3e00\n#endif\n\nextern u64 gGfxSPTaskOutputBuffer[GFX_OUTPUT_BUFFER_SIZE];\n\n#endif // GFX_OUTPUT_BUFFER_H\n"
  },
  {
    "path": "src/buffers/zbuffer.c",
    "content": "#include <ultra64.h>\n\n#include \"config.h\"\n#include \"zbuffer.h\"\n\nALIGNED8 u16 gZBuffer[SCREEN_WIDTH * SCREEN_HEIGHT];\n"
  },
  {
    "path": "src/buffers/zbuffer.h",
    "content": "#ifndef ZBUFFER_H\n#define ZBUFFER_H\n\n#include <PR/ultratypes.h>\n\n#include \"config.h\"\n#include \"macros.h\"\n\nextern u16 gZBuffer[SCREEN_WIDTH * SCREEN_HEIGHT];\nextern s32 gZBufferEnd;\n\n#endif // ZBUFFER_H\n"
  },
  {
    "path": "src/engine/behavior_script.c",
    "content": "#include <ultra64.h>\n\n#include \"sm64.h\"\n#include \"behavior_data.h\"\n#include \"behavior_script.h\"\n#include \"game/area.h\"\n#include \"game/behavior_actions.h\"\n#include \"game/game_init.h\"\n#include \"game/mario.h\"\n#include \"game/memory.h\"\n#include \"game/obj_behaviors_2.h\"\n#include \"game/object_helpers.h\"\n#include \"game/object_list_processor.h\"\n#include \"graph_node.h\"\n#include \"surface_collision.h\"\n\n// Macros for retrieving arguments from behavior scripts.\n#define BHV_CMD_GET_1ST_U8(index)  (u8)((gCurBhvCommand[index] >> 24) & 0xFF) // unused\n#define BHV_CMD_GET_2ND_U8(index)  (u8)((gCurBhvCommand[index] >> 16) & 0xFF)\n#define BHV_CMD_GET_3RD_U8(index)  (u8)((gCurBhvCommand[index] >> 8) & 0xFF)\n#define BHV_CMD_GET_4TH_U8(index)  (u8)((gCurBhvCommand[index]) & 0xFF)\n\n#define BHV_CMD_GET_1ST_S16(index) (s16)(gCurBhvCommand[index] >> 16)\n#define BHV_CMD_GET_2ND_S16(index) (s16)(gCurBhvCommand[index] & 0xFFFF)\n\n#define BHV_CMD_GET_U32(index)     (u32)(gCurBhvCommand[index])\n#define BHV_CMD_GET_VPTR(index)    (void *)(gCurBhvCommand[index])\n\n#define BHV_CMD_GET_ADDR_OF_CMD(index) (uintptr_t)(&gCurBhvCommand[index])\n\nstatic u16 gRandomSeed16;\n\n// Unused function that directly jumps to a behavior command and resets the object's stack index.\nUNUSED static void goto_behavior_unused(const BehaviorScript *bhvAddr) {\n    gCurBhvCommand = segmented_to_virtual(bhvAddr);\n    gCurrentObject->bhvStackIndex = 0;\n}\n\n// Generate a pseudorandom integer from 0 to 65535 from the random seed, and update the seed.\nu16 random_u16(void) {\n    u16 temp1, temp2;\n\n    if (gRandomSeed16 == 22026) {\n        gRandomSeed16 = 0;\n    }\n\n    temp1 = (gRandomSeed16 & 0x00FF) << 8;\n    temp1 = temp1 ^ gRandomSeed16;\n\n    gRandomSeed16 = ((temp1 & 0x00FF) << 8) + ((temp1 & 0xFF00) >> 8);\n\n    temp1 = ((temp1 & 0x00FF) << 1) ^ gRandomSeed16;\n    temp2 = (temp1 >> 1) ^ 0xFF80;\n\n    if ((temp1 & 1) == 0) {\n        if (temp2 == 43605) {\n            gRandomSeed16 = 0;\n        } else {\n            gRandomSeed16 = temp2 ^ 0x1FF4;\n        }\n    } else {\n        gRandomSeed16 = temp2 ^ 0x8180;\n    }\n\n    return gRandomSeed16;\n}\n\n// Generate a pseudorandom float in the range [0, 1).\nf32 random_float(void) {\n    f32 rnd = random_u16();\n    return rnd / (double) 0x10000;\n}\n\n// Return either -1 or 1 with a 50:50 chance.\ns32 random_sign(void) {\n    if (random_u16() >= 0x7FFF) {\n        return 1;\n    } else {\n        return -1;\n    }\n}\n\n// Update an object's graphical position and rotation to match its real position and rotation.\nvoid obj_update_gfx_pos_and_angle(struct Object *obj) {\n    obj->header.gfx.pos[0] = obj->oPosX;\n    obj->header.gfx.pos[1] = obj->oPosY + obj->oGraphYOffset;\n    obj->header.gfx.pos[2] = obj->oPosZ;\n\n    obj->header.gfx.angle[0] = obj->oFaceAnglePitch & 0xFFFF;\n    obj->header.gfx.angle[1] = obj->oFaceAngleYaw & 0xFFFF;\n    obj->header.gfx.angle[2] = obj->oFaceAngleRoll & 0xFFFF;\n}\n\n// Push the address of a behavior command to the object's behavior stack.\nstatic void cur_obj_bhv_stack_push(uintptr_t bhvAddr) {\n    gCurrentObject->bhvStack[gCurrentObject->bhvStackIndex] = bhvAddr;\n    gCurrentObject->bhvStackIndex++;\n}\n\n// Retrieve the last behavior command address from the object's behavior stack.\nstatic uintptr_t cur_obj_bhv_stack_pop(void) {\n    uintptr_t bhvAddr;\n\n    gCurrentObject->bhvStackIndex--;\n    bhvAddr = gCurrentObject->bhvStack[gCurrentObject->bhvStackIndex];\n\n    return bhvAddr;\n}\n\nUNUSED static void stub_behavior_script_1(void) {\n    for (;;) {\n        ;\n    }\n}\n\n// Command 0x22: Hides the current object.\n// Usage: HIDE()\nstatic s32 bhv_cmd_hide(void) {\n    cur_obj_hide();\n\n    gCurBhvCommand++;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x35: Disables rendering for the object.\n// Usage: DISABLE_RENDERING()\nstatic s32 bhv_cmd_disable_rendering(void) {\n    gCurrentObject->header.gfx.node.flags &= ~GRAPH_RENDER_ACTIVE;\n\n    gCurBhvCommand++;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x21: Billboards the current object, making it always face the camera.\n// Usage: BILLBOARD()\nstatic s32 bhv_cmd_billboard(void) {\n    gCurrentObject->header.gfx.node.flags |= GRAPH_RENDER_BILLBOARD;\n\n    gCurBhvCommand++;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x1B: Sets the current model ID of the object.\n// Usage: SET_MODEL(modelID)\nstatic s32 bhv_cmd_set_model(void) {\n    s32 modelID = BHV_CMD_GET_2ND_S16(0);\n\n    gCurrentObject->header.gfx.sharedChild = gLoadedGraphNodes[modelID];\n\n    gCurBhvCommand++;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x1C: Spawns a child object with the specified model and behavior.\n// Usage: SPAWN_CHILD(modelID, behavior)\nstatic s32 bhv_cmd_spawn_child(void) {\n    u32 model = BHV_CMD_GET_U32(1);\n    const BehaviorScript *behavior = BHV_CMD_GET_VPTR(2);\n\n    struct Object *child = spawn_object_at_origin(gCurrentObject, 0, model, behavior);\n    obj_copy_pos_and_angle(child, gCurrentObject);\n\n    gCurBhvCommand += 3;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x2C: Spawns a new object with the specified model and behavior.\n// Usage: SPAWN_OBJ(modelID, behavior)\nstatic s32 bhv_cmd_spawn_obj(void) {\n    u32 model = BHV_CMD_GET_U32(1);\n    const BehaviorScript *behavior = BHV_CMD_GET_VPTR(2);\n\n    struct Object *object = spawn_object_at_origin(gCurrentObject, 0, model, behavior);\n    obj_copy_pos_and_angle(object, gCurrentObject);\n    // TODO: Does this cmd need renaming? This line is the only difference between this and the above func.\n    gCurrentObject->prevObj = object;\n\n    gCurBhvCommand += 3;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x29: Spawns a child object with the specified model and behavior, plus a behavior param.\n// Usage: SPAWN_CHILD_WITH_PARAM(bhvParam, modelID, behavior)\nstatic s32 bhv_cmd_spawn_child_with_param(void) {\n    u32 bhvParam = BHV_CMD_GET_2ND_S16(0);\n    u32 modelID = BHV_CMD_GET_U32(1);\n    const BehaviorScript *behavior = BHV_CMD_GET_VPTR(2);\n\n    struct Object *child = spawn_object_at_origin(gCurrentObject, 0, modelID, behavior);\n    obj_copy_pos_and_angle(child, gCurrentObject);\n    child->oBhvParams2ndByte = bhvParam;\n\n    gCurBhvCommand += 3;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x1D: Exits the behavior script and despawns the object.\n// Usage: DEACTIVATE()\nstatic s32 bhv_cmd_deactivate(void) {\n    gCurrentObject->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    return BHV_PROC_BREAK;\n}\n\n// Command 0x0A: Exits the behavior script.\n// Usage: BREAK()\nstatic s32 bhv_cmd_break(void) {\n    return BHV_PROC_BREAK;\n}\n\n// Command 0x0B: Exits the behavior script, unused.\n// Usage: BREAK_UNUSED()\nstatic s32 bhv_cmd_break_unused(void) {\n    return BHV_PROC_BREAK;\n}\n\n// Command 0x02: Jumps to a new behavior command and stores the return address in the object's behavior stack.\n// Usage: CALL(addr)\nstatic s32 bhv_cmd_call(void) {\n    const BehaviorScript *jumpAddress;\n    gCurBhvCommand++;\n\n    cur_obj_bhv_stack_push(BHV_CMD_GET_ADDR_OF_CMD(1)); // Store address of the next bhv command in the stack.\n    jumpAddress = segmented_to_virtual(BHV_CMD_GET_VPTR(0));\n    gCurBhvCommand = jumpAddress; // Jump to the new address.\n\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x03: Jumps back to the behavior command stored in the object's behavior stack. Used after CALL.\n// Usage: RETURN()\nstatic s32 bhv_cmd_return(void) {\n    gCurBhvCommand = (const BehaviorScript *) cur_obj_bhv_stack_pop(); // Retrieve command address and jump to it.\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x01: Delays the behavior script for a certain number of frames.\n// Usage: DELAY(num)\nstatic s32 bhv_cmd_delay(void) {\n    s16 num = BHV_CMD_GET_2ND_S16(0);\n\n    if (gCurrentObject->bhvDelayTimer < num - 1) {\n        gCurrentObject->bhvDelayTimer++; // Increment timer\n    } else {\n        gCurrentObject->bhvDelayTimer = 0;\n        gCurBhvCommand++; // Delay ended, move to next bhv command (note: following commands will not execute until next frame)\n    }\n\n    return BHV_PROC_BREAK;\n}\n\n// Command 0x25: Delays the behavior script for the number of frames given by the value of the specified field.\n// Usage: DELAY_VAR(field)\nstatic s32 bhv_cmd_delay_var(void) {\n    u8 field = BHV_CMD_GET_2ND_U8(0);\n    s32 num = cur_obj_get_int(field);\n\n    if (gCurrentObject->bhvDelayTimer < num - 1) {\n        gCurrentObject->bhvDelayTimer++; // Increment timer\n    } else {\n        gCurrentObject->bhvDelayTimer = 0;\n        gCurBhvCommand++; // Delay ended, move to next bhv command\n    }\n\n    return BHV_PROC_BREAK;\n}\n\n// Command 0x04: Jumps to a new behavior script without saving anything.\n// Usage: GOTO(addr)\nstatic s32 bhv_cmd_goto(void) {\n    gCurBhvCommand++; // Useless\n    gCurBhvCommand = segmented_to_virtual(BHV_CMD_GET_VPTR(0)); // Jump directly to address\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x26: Unused. Marks the start of a loop that will repeat a certain number of times.\n// Uses a u8 as the argument, instead of a s16 like the other version does.\n// Usage: BEGIN_REPEAT_UNUSED(count)\nstatic s32 bhv_cmd_begin_repeat_unused(void) {\n    s32 count = BHV_CMD_GET_2ND_U8(0);\n\n    cur_obj_bhv_stack_push(BHV_CMD_GET_ADDR_OF_CMD(1)); // Store address of the first command of the loop in the stack\n    cur_obj_bhv_stack_push(count); // Store repeat count in the stack too\n\n    gCurBhvCommand++;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x05: Marks the start of a loop that will repeat a certain number of times.\n// Usage: BEGIN_REPEAT(count)\nstatic s32 bhv_cmd_begin_repeat(void) {\n    s32 count = BHV_CMD_GET_2ND_S16(0);\n\n    cur_obj_bhv_stack_push(BHV_CMD_GET_ADDR_OF_CMD(1)); // Store address of the first command of the loop in the stack\n    cur_obj_bhv_stack_push(count); // Store repeat count in the stack too\n\n    gCurBhvCommand++;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x06: Marks the end of a repeating loop.\n// Usage: END_REPEAT()\nstatic s32 bhv_cmd_end_repeat(void) {\n    u32 count = cur_obj_bhv_stack_pop(); // Retrieve loop count from the stack.\n    count--;\n\n    if (count != 0) {\n        gCurBhvCommand = (const BehaviorScript *) cur_obj_bhv_stack_pop(); // Jump back to the first command in the loop\n        // Save address and count to the stack again\n        cur_obj_bhv_stack_push(BHV_CMD_GET_ADDR_OF_CMD(0));\n        cur_obj_bhv_stack_push(count);\n    } else { // Finished iterating over the loop\n        cur_obj_bhv_stack_pop(); // Necessary to remove address from the stack\n        gCurBhvCommand++;\n    }\n\n    // Don't execute following commands until next frame\n    return BHV_PROC_BREAK;\n}\n\n// Command 0x07: Also marks the end of a repeating loop, but continues executing commands following the loop on the same frame.\n// Usage: END_REPEAT_CONTINUE()\nstatic s32 bhv_cmd_end_repeat_continue(void) {\n    u32 count = cur_obj_bhv_stack_pop();\n    count--;\n\n    if (count != 0) {\n        gCurBhvCommand = (const BehaviorScript *) cur_obj_bhv_stack_pop(); // Jump back to the first command in the loop\n        // Save address and count to the stack again\n        cur_obj_bhv_stack_push(BHV_CMD_GET_ADDR_OF_CMD(0));\n        cur_obj_bhv_stack_push(count);\n    } else { // Finished iterating over the loop\n        cur_obj_bhv_stack_pop(); // Necessary to remove address from the stack\n        gCurBhvCommand++;\n    }\n\n    // Start executing following commands immediately\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x08: Marks the beginning of an infinite loop.\n// Usage: BEGIN_LOOP()\nstatic s32 bhv_cmd_begin_loop(void) {\n    cur_obj_bhv_stack_push(BHV_CMD_GET_ADDR_OF_CMD(1)); // Store address of the first command of the loop in the stack\n\n    gCurBhvCommand++;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x09: Marks the end of an infinite loop.\n// Usage: END_LOOP()\nstatic s32 bhv_cmd_end_loop(void) {\n    gCurBhvCommand = (const BehaviorScript *) cur_obj_bhv_stack_pop(); // Jump back to the first command in the loop\n    cur_obj_bhv_stack_push(BHV_CMD_GET_ADDR_OF_CMD(0)); // Save address to the stack again\n\n    return BHV_PROC_BREAK;\n}\n\n// Command 0x0C: Executes a native game function. Function must not take or return any values.\n// Usage: CALL_NATIVE(func)\ntypedef void (*NativeBhvFunc)(void);\nstatic s32 bhv_cmd_call_native(void) {\n    NativeBhvFunc behaviorFunc = BHV_CMD_GET_VPTR(1);\n\n    behaviorFunc();\n\n    gCurBhvCommand += 2;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x0E: Sets the specified field to a float.\n// Usage: SET_FLOAT(field, value)\nstatic s32 bhv_cmd_set_float(void) {\n    u8 field = BHV_CMD_GET_2ND_U8(0);\n    f32 value = BHV_CMD_GET_2ND_S16(0);\n\n    cur_obj_set_float(field, value);\n\n    gCurBhvCommand++;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x10: Sets the specified field to an integer.\n// Usage: SET_INT(field, value)\nstatic s32 bhv_cmd_set_int(void) {\n    u8 field = BHV_CMD_GET_2ND_U8(0);\n    s16 value = BHV_CMD_GET_2ND_S16(0);\n\n    cur_obj_set_int(field, value);\n\n    gCurBhvCommand++;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x36: Unused. Sets the specified field to an integer. Wastes 4 bytes of space for no reason at all.\nstatic s32 bhv_cmd_set_int_unused(void) {\n    u8 field = BHV_CMD_GET_2ND_U8(0);\n    s32 value = BHV_CMD_GET_2ND_S16(1); // Taken from 2nd word instead of 1st\n\n    cur_obj_set_int(field, value);\n\n    gCurBhvCommand += 2; // Twice as long\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x14: Sets the specified field to a random float in the given range.\n// Usage: SET_RANDOM_FLOAT(field, min, range)\nstatic s32 bhv_cmd_set_random_float(void) {\n    u8 field = BHV_CMD_GET_2ND_U8(0);\n    f32 min = BHV_CMD_GET_2ND_S16(0);\n    f32 range = BHV_CMD_GET_1ST_S16(1);\n\n    cur_obj_set_float(field, (range * random_float()) + min);\n\n    gCurBhvCommand += 2;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x15: Sets the specified field to a random integer in the given range.\n// Usage: SET_RANDOM_INT(field, min, range)\nstatic s32 bhv_cmd_set_random_int(void) {\n    u8 field = BHV_CMD_GET_2ND_U8(0);\n    s32 min = BHV_CMD_GET_2ND_S16(0);\n    s32 range = BHV_CMD_GET_1ST_S16(1);\n\n    cur_obj_set_int(field, (s32)(range * random_float()) + min);\n\n    gCurBhvCommand += 2;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x13: Gets a random short, right shifts it the specified amount and adds min to it, then sets the specified field to that value.\n// Usage: SET_INT_RAND_RSHIFT(field, min, rshift)\nstatic s32 bhv_cmd_set_int_rand_rshift(void) {\n    u8 field = BHV_CMD_GET_2ND_U8(0);\n    s32 min = BHV_CMD_GET_2ND_S16(0);\n    s32 rshift = BHV_CMD_GET_1ST_S16(1);\n\n    cur_obj_set_int(field, (random_u16() >> rshift) + min);\n\n    gCurBhvCommand += 2;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x16: Adds a random float in the given range to the specified field.\n// Usage: ADD_RANDOM_FLOAT(field, min, range)\nstatic s32 bhv_cmd_add_random_float(void) {\n    u8 field = BHV_CMD_GET_2ND_U8(0);\n    f32 min = BHV_CMD_GET_2ND_S16(0);\n    f32 range = BHV_CMD_GET_1ST_S16(1);\n\n    cur_obj_set_float(field, cur_obj_get_float(field) + min + (range * random_float()));\n\n    gCurBhvCommand += 2;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x17: Gets a random short, right shifts it the specified amount and adds min to it, then adds the value to the specified field. Unused.\n// Usage: ADD_INT_RAND_RSHIFT(field, min, rshift)\nstatic s32 bhv_cmd_add_int_rand_rshift(void) {\n    u8 field = BHV_CMD_GET_2ND_U8(0);\n    s32 min = BHV_CMD_GET_2ND_S16(0);\n    s32 rshift = BHV_CMD_GET_1ST_S16(1);\n    s32 rnd = random_u16();\n\n    cur_obj_set_int(field, (cur_obj_get_int(field) + min) + (rnd >> rshift));\n\n    gCurBhvCommand += 2;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x0D: Adds a float to the specified field.\n// Usage: ADD_FLOAT(field, value)\nstatic s32 bhv_cmd_add_float(void) {\n    u8 field = BHV_CMD_GET_2ND_U8(0);\n    f32 value = BHV_CMD_GET_2ND_S16(0);\n\n    cur_obj_add_float(field, value);\n\n    gCurBhvCommand++;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x0F: Adds an integer to the specified field.\n// Usage: ADD_INT(field, value)\nstatic s32 bhv_cmd_add_int(void) {\n    u8 field = BHV_CMD_GET_2ND_U8(0);\n    s16 value = BHV_CMD_GET_2ND_S16(0);\n\n    cur_obj_add_int(field, value);\n\n    gCurBhvCommand++;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x11: Performs a bitwise OR with the specified field and the given integer.\n// Usually used to set an object's flags.\n// Usage: OR_INT(field, value)\nstatic s32 bhv_cmd_or_int(void) {\n    u8 objectOffset = BHV_CMD_GET_2ND_U8(0);\n    s32 value = BHV_CMD_GET_2ND_S16(0);\n\n    value &= 0xFFFF;\n    cur_obj_or_int(objectOffset, value);\n\n    gCurBhvCommand++;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x12: Performs a bit clear with the specified short. Unused.\n// Usage: BIT_CLEAR(field, value)\nstatic s32 bhv_cmd_bit_clear(void) {\n    u8 field = BHV_CMD_GET_2ND_U8(0);\n    s32 value = BHV_CMD_GET_2ND_S16(0);\n\n    value = (value & 0xFFFF) ^ 0xFFFF;\n    cur_obj_and_int(field, value);\n\n    gCurBhvCommand++;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x27: Loads the animations for the object. <field> is always set to oAnimations.\n// Usage: LOAD_ANIMATIONS(field, anims)\nstatic s32 bhv_cmd_load_animations(void) {\n    u8 field = BHV_CMD_GET_2ND_U8(0);\n\n    cur_obj_set_vptr(field, BHV_CMD_GET_VPTR(1));\n\n    gCurBhvCommand += 2;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x28: Begins animation and sets the object's current animation index to the specified value.\n// Usage: ANIMATE(animIndex)\nstatic s32 bhv_cmd_animate(void) {\n    s32 animIndex = BHV_CMD_GET_2ND_U8(0);\n    struct Animation **animations = gCurrentObject->oAnimations;\n\n    geo_obj_init_animation(&gCurrentObject->header.gfx, &animations[animIndex]);\n\n    gCurBhvCommand++;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x1E: Finds the floor triangle directly under the object and moves the object down to it.\n// Usage: DROP_TO_FLOOR()\nstatic s32 bhv_cmd_drop_to_floor(void) {\n    f32 x = gCurrentObject->oPosX;\n    f32 y = gCurrentObject->oPosY;\n    f32 z = gCurrentObject->oPosZ;\n\n    f32 floor = find_floor_height(x, y + 200.0f, z);\n    gCurrentObject->oPosY = floor;\n    gCurrentObject->oMoveFlags |= OBJ_MOVE_ON_GROUND;\n\n    gCurBhvCommand++;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x18: No operation. Unused.\n// Usage: CMD_NOP_1(field)\nstatic s32 bhv_cmd_nop_1(void) {\n    UNUSED u8 field = BHV_CMD_GET_2ND_U8(0);\n\n    gCurBhvCommand++;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x1A: No operation. Unused.\n// Usage: CMD_NOP_3(field)\nstatic s32 bhv_cmd_nop_3(void) {\n    UNUSED u8 field = BHV_CMD_GET_2ND_U8(0);\n\n    gCurBhvCommand++;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x19: No operation. Unused.\n// Usage: CMD_NOP_2(field)\nstatic s32 bhv_cmd_nop_2(void) {\n    UNUSED u8 field = BHV_CMD_GET_2ND_U8(0);\n\n    gCurBhvCommand++;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x1F: Sets the destination float field to the sum of the values of the given float fields.\n// Usage: SUM_FLOAT(fieldDst, fieldSrc1, fieldSrc2)\nstatic s32 bhv_cmd_sum_float(void) {\n    u32 fieldDst = BHV_CMD_GET_2ND_U8(0);\n    u32 fieldSrc1 = BHV_CMD_GET_3RD_U8(0);\n    u32 fieldSrc2 = BHV_CMD_GET_4TH_U8(0);\n\n    cur_obj_set_float(fieldDst, cur_obj_get_float(fieldSrc1) + cur_obj_get_float(fieldSrc2));\n\n    gCurBhvCommand++;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x20: Sets the destination integer field to the sum of the values of the given integer fields. Unused.\n// Usage: SUM_INT(fieldDst, fieldSrc1, fieldSrc2)\nstatic s32 bhv_cmd_sum_int(void) {\n    u32 fieldDst = BHV_CMD_GET_2ND_U8(0);\n    u32 fieldSrc1 = BHV_CMD_GET_3RD_U8(0);\n    u32 fieldSrc2 = BHV_CMD_GET_4TH_U8(0);\n\n    cur_obj_set_int(fieldDst, cur_obj_get_int(fieldSrc1) + cur_obj_get_int(fieldSrc2));\n\n    gCurBhvCommand++;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x23: Sets the size of the object's cylindrical hitbox.\n// Usage: SET_HITBOX(radius, height)\nstatic s32 bhv_cmd_set_hitbox(void) {\n    s16 radius = BHV_CMD_GET_1ST_S16(1);\n    s16 height = BHV_CMD_GET_2ND_S16(1);\n\n    gCurrentObject->hitboxRadius = radius;\n    gCurrentObject->hitboxHeight = height;\n\n    gCurBhvCommand += 2;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x2E: Sets the size of the object's cylindrical hurtbox.\n// Usage: SET_HURTBOX(radius, height)\nstatic s32 bhv_cmd_set_hurtbox(void) {\n    s16 radius = BHV_CMD_GET_1ST_S16(1);\n    s16 height = BHV_CMD_GET_2ND_S16(1);\n\n    gCurrentObject->hurtboxRadius = radius;\n    gCurrentObject->hurtboxHeight = height;\n\n    gCurBhvCommand += 2;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x2B: Sets the size of the object's cylindrical hitbox, and applies a downwards offset.\n// Usage: SET_HITBOX_WITH_OFFSET(radius, height, downOffset)\nstatic s32 bhv_cmd_set_hitbox_with_offset(void) {\n    s16 radius = BHV_CMD_GET_1ST_S16(1);\n    s16 height = BHV_CMD_GET_2ND_S16(1);\n    s16 downOffset = BHV_CMD_GET_1ST_S16(2);\n\n    gCurrentObject->hitboxRadius = radius;\n    gCurrentObject->hitboxHeight = height;\n    gCurrentObject->hitboxDownOffset = downOffset;\n\n    gCurBhvCommand += 3;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x24: No operation. Unused.\n// Usage: CMD_NOP_4(field, value)\nstatic s32 bhv_cmd_nop_4(void) {\n    UNUSED s16 field = BHV_CMD_GET_2ND_U8(0);\n    UNUSED s16 value = BHV_CMD_GET_2ND_S16(0);\n\n    gCurBhvCommand++;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x00: Defines the start of the behavior script as well as the object list the object belongs to.\n// Has some special behavior for certain objects.\n// Usage: BEGIN(objList)\nstatic s32 bhv_cmd_begin(void) {\n    // These objects were likely very early objects, which is why this code is here\n    // instead of in the respective behavior scripts.\n\n    // Initiate the room if the object is a haunted chair or the mad piano.\n    if (cur_obj_has_behavior(bhvHauntedChair)) {\n        bhv_init_room();\n    }\n    if (cur_obj_has_behavior(bhvMadPiano)) {\n        bhv_init_room();\n    }\n    // Set collision distance if the object is a message panel.\n    if (cur_obj_has_behavior(bhvMessagePanel)) {\n        gCurrentObject->oCollisionDistance = 150.0f;\n    }\n    gCurBhvCommand++;\n    return BHV_PROC_CONTINUE;\n}\n\n// An unused, incomplete behavior command that does not have an entry in the lookup table, and so no command number.\n// It cannot be simply re-added to the table, as unlike all other bhv commands it takes a parameter.\n// Theoretically this command would have been of variable size.\n// Included below is a modified/repaired version of this function that would work properly.\nUNUSED static void bhv_cmd_set_int_random_from_table(s32 tableSize) {\n    u8 field = BHV_CMD_GET_2ND_U8(0);\n    s32 table[16];\n    s32 i;\n    // This for loop would not work as intended at all...\n    for (i = 0; i <= tableSize / 2; i += 2) {\n        table[i] = BHV_CMD_GET_1ST_S16(i + 1);\n        table[i + 1] = BHV_CMD_GET_2ND_S16(i + 1);\n    }\n\n    cur_obj_set_int(field, table[(s32)(tableSize * random_float())]);\n\n    // Does not increment gCurBhvCommand or return a bhv status\n}\n\n/**\n// Command 0x??: Sets the specified field to a random entry in the given table, up to size 16.\n// Bytes: ?? FF SS SS V1 V1 V2 V2 V3 V3 V4 V4... ...V15 V15 V16 V16 (no macro exists)\n// F -> field, S -> table size, V1, V2, etc. -> table entries (up to 16)\nstatic s32 bhv_cmd_set_int_random_from_table(void) {\n    u8 field = BHV_CMD_GET_2ND_U8(0);\n    // Retrieve tableSize from the bhv command instead of as a parameter.\n    s16 tableSize = BHV_CMD_GET_2ND_S16(0); // tableSize should not be greater than 16\n    s32 table[16];\n    s32 i;\n\n    // Construct the table from the behavior command.\n    for (i = 0; i <= tableSize; i += 2) {\n        table[i] = BHV_CMD_GET_1ST_S16((i / 2) + 1);\n        table[i + 1] = BHV_CMD_GET_2ND_S16((i / 2) + 1);\n    }\n\n    // Set the field to a random entry of the table.\n    cur_obj_set_int(field, table[(s32)(tableSize * random_float())]);\n\n    gCurBhvCommand += (tableSize / 2) + 1;\n    return BHV_PROC_CONTINUE;\n}\n**/\n\n// Command 0x2A: Loads collision data for the object.\n// Usage: LOAD_COLLISION_DATA(collisionData)\nstatic s32 bhv_cmd_load_collision_data(void) {\n    u32 *collisionData = segmented_to_virtual(BHV_CMD_GET_VPTR(1));\n\n    gCurrentObject->collisionData = collisionData;\n\n    gCurBhvCommand += 2;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x2D: Sets the home position of the object to its current position.\n// Usage: SET_HOME()\nstatic s32 bhv_cmd_set_home(void) {\n    gCurrentObject->oHomeX = gCurrentObject->oPosX;\n    gCurrentObject->oHomeY = gCurrentObject->oPosY;\n    gCurrentObject->oHomeZ = gCurrentObject->oPosZ;\n\n    gCurBhvCommand++;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x2F: Sets the object's interaction type.\n// Usage: SET_INTERACT_TYPE(type)\nstatic s32 bhv_cmd_set_interact_type(void) {\n    gCurrentObject->oInteractType = BHV_CMD_GET_U32(1);\n\n    gCurBhvCommand += 2;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x31: Sets the object's interaction subtype. Unused.\n// Usage: SET_INTERACT_SUBTYPE(subtype)\nstatic s32 bhv_cmd_set_interact_subtype(void) {\n    gCurrentObject->oInteractionSubtype = BHV_CMD_GET_U32(1);\n\n    gCurBhvCommand += 2;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x32: Sets the object's size to the specified percentage.\n// Usage: SCALE(unusedField, percent)\nstatic s32 bhv_cmd_scale(void) {\n    UNUSED u8 unusedField = BHV_CMD_GET_2ND_U8(0);\n    s16 percent = BHV_CMD_GET_2ND_S16(0);\n\n    cur_obj_scale(percent / 100.0f);\n\n    gCurBhvCommand++;\n    return BHV_PROC_CONTINUE;\n}\n\n\n// Command 0x30: Sets various parameters that the object uses for calculating physics.\n// Usage: SET_OBJ_PHYSICS(wallHitboxRadius, gravity, bounciness, dragStrength, friction, buoyancy, unused1, unused2)\nstatic s32 bhv_cmd_set_obj_physics(void) {\n    UNUSED f32 unused1, unused2;\n\n    gCurrentObject->oWallHitboxRadius = BHV_CMD_GET_1ST_S16(1);\n    gCurrentObject->oGravity = BHV_CMD_GET_2ND_S16(1) / 100.0f;\n    gCurrentObject->oBounciness = BHV_CMD_GET_1ST_S16(2) / 100.0f;\n    gCurrentObject->oDragStrength = BHV_CMD_GET_2ND_S16(2) / 100.0f;\n    gCurrentObject->oFriction = BHV_CMD_GET_1ST_S16(3) / 100.0f;\n    gCurrentObject->oBuoyancy = BHV_CMD_GET_2ND_S16(3) / 100.0f;\n\n    unused1 = BHV_CMD_GET_1ST_S16(4) / 100.0f;\n    unused2 = BHV_CMD_GET_2ND_S16(4) / 100.0f;\n\n    gCurBhvCommand += 5;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x33: Performs a bit clear on the object's parent's field with the specified value.\n// Used for clearing active particle flags fron Mario's object.\n// Usage: PARENT_BIT_CLEAR(field, value)\nstatic s32 bhv_cmd_parent_bit_clear(void) {\n    u8 field = BHV_CMD_GET_2ND_U8(0);\n    s32 value = BHV_CMD_GET_U32(1);\n\n    value = value ^ 0xFFFFFFFF;\n    obj_and_int(gCurrentObject->parentObj, field, value);\n\n    gCurBhvCommand += 2;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x37: Spawns a water droplet with the given parameters.\n// Usage: SPAWN_WATER_DROPLET(dropletParams)\nstatic s32 bhv_cmd_spawn_water_droplet(void) {\n    struct WaterDropletParams *dropletParams = BHV_CMD_GET_VPTR(1);\n\n    spawn_water_droplet(gCurrentObject, dropletParams);\n\n    gCurBhvCommand += 2;\n    return BHV_PROC_CONTINUE;\n}\n\n// Command 0x34: Animates an object using texture animation. <field> is always set to oAnimState.\n// Usage: ANIMATE_TEXTURE(field, rate)\nstatic s32 bhv_cmd_animate_texture(void) {\n    u8 field = BHV_CMD_GET_2ND_U8(0);\n    s16 rate = BHV_CMD_GET_2ND_S16(0);\n\n    // Increase the field (oAnimState) by 1 every <rate> frames.\n    if ((gGlobalTimer % rate) == 0) {\n        cur_obj_add_int(field, 1);\n    }\n\n    gCurBhvCommand++;\n    return BHV_PROC_CONTINUE;\n}\n\nvoid stub_behavior_script_2(void) {\n}\n\ntypedef s32 (*BhvCommandProc)(void);\nstatic BhvCommandProc BehaviorCmdTable[] = {\n    bhv_cmd_begin,\n    bhv_cmd_delay,\n    bhv_cmd_call,\n    bhv_cmd_return,\n    bhv_cmd_goto,\n    bhv_cmd_begin_repeat,\n    bhv_cmd_end_repeat,\n    bhv_cmd_end_repeat_continue,\n    bhv_cmd_begin_loop,\n    bhv_cmd_end_loop,\n    bhv_cmd_break,\n    bhv_cmd_break_unused,\n    bhv_cmd_call_native,\n    bhv_cmd_add_float,\n    bhv_cmd_set_float,\n    bhv_cmd_add_int,\n    bhv_cmd_set_int,\n    bhv_cmd_or_int,\n    bhv_cmd_bit_clear,\n    bhv_cmd_set_int_rand_rshift,\n    bhv_cmd_set_random_float,\n    bhv_cmd_set_random_int,\n    bhv_cmd_add_random_float,\n    bhv_cmd_add_int_rand_rshift,\n    bhv_cmd_nop_1,\n    bhv_cmd_nop_2,\n    bhv_cmd_nop_3,\n    bhv_cmd_set_model,\n    bhv_cmd_spawn_child,\n    bhv_cmd_deactivate,\n    bhv_cmd_drop_to_floor,\n    bhv_cmd_sum_float,\n    bhv_cmd_sum_int,\n    bhv_cmd_billboard,\n    bhv_cmd_hide,\n    bhv_cmd_set_hitbox,\n    bhv_cmd_nop_4,\n    bhv_cmd_delay_var,\n    bhv_cmd_begin_repeat_unused,\n    bhv_cmd_load_animations,\n    bhv_cmd_animate,\n    bhv_cmd_spawn_child_with_param,\n    bhv_cmd_load_collision_data,\n    bhv_cmd_set_hitbox_with_offset,\n    bhv_cmd_spawn_obj,\n    bhv_cmd_set_home,\n    bhv_cmd_set_hurtbox,\n    bhv_cmd_set_interact_type,\n    bhv_cmd_set_obj_physics,\n    bhv_cmd_set_interact_subtype,\n    bhv_cmd_scale,\n    bhv_cmd_parent_bit_clear,\n    bhv_cmd_animate_texture,\n    bhv_cmd_disable_rendering,\n    bhv_cmd_set_int_unused,\n    bhv_cmd_spawn_water_droplet,\n};\n\n// Execute the behavior script of the current object, process the object flags, and other miscellaneous code for updating objects.\nvoid cur_obj_update(void) {\n    UNUSED u8 filler[4];\n\n    s16 objFlags = gCurrentObject->oFlags;\n    f32 distanceFromMario;\n    BhvCommandProc bhvCmdProc;\n    s32 bhvProcResult;\n\n    // Calculate the distance from the object to Mario.\n    if (objFlags & OBJ_FLAG_COMPUTE_DIST_TO_MARIO) {\n        gCurrentObject->oDistanceToMario = dist_between_objects(gCurrentObject, gMarioObject);\n        distanceFromMario = gCurrentObject->oDistanceToMario;\n    } else {\n        distanceFromMario = 0.0f;\n    }\n\n    // Calculate the angle from the object to Mario.\n    if (objFlags & OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO) {\n        gCurrentObject->oAngleToMario = obj_angle_to_object(gCurrentObject, gMarioObject);\n    }\n\n    // If the object's action has changed, reset the action timer.\n    if (gCurrentObject->oAction != gCurrentObject->oPrevAction) {\n        (void) (gCurrentObject->oTimer = 0, gCurrentObject->oSubAction = 0,\n                gCurrentObject->oPrevAction = gCurrentObject->oAction);\n    }\n\n    // Execute the behavior script.\n    gCurBhvCommand = gCurrentObject->curBhvCommand;\n\n    do {\n        bhvCmdProc = BehaviorCmdTable[*gCurBhvCommand >> 24];\n        bhvProcResult = bhvCmdProc();\n    } while (bhvProcResult == BHV_PROC_CONTINUE);\n\n    gCurrentObject->curBhvCommand = gCurBhvCommand;\n\n    // Increment the object's timer.\n    if (gCurrentObject->oTimer < 0x3FFFFFFF) {\n        gCurrentObject->oTimer++;\n    }\n\n    // If the object's action has changed, reset the action timer.\n    if (gCurrentObject->oAction != gCurrentObject->oPrevAction) {\n        (void) (gCurrentObject->oTimer = 0, gCurrentObject->oSubAction = 0,\n                gCurrentObject->oPrevAction = gCurrentObject->oAction);\n    }\n\n    // Execute various code based on object flags.\n    objFlags = (s16) gCurrentObject->oFlags;\n\n    if (objFlags & OBJ_FLAG_SET_FACE_ANGLE_TO_MOVE_ANGLE) {\n        obj_set_face_angle_to_move_angle(gCurrentObject);\n    }\n\n    if (objFlags & OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW) {\n        gCurrentObject->oFaceAngleYaw = gCurrentObject->oMoveAngleYaw;\n    }\n\n    if (objFlags & OBJ_FLAG_MOVE_XZ_USING_FVEL) {\n        cur_obj_move_xz_using_fvel_and_yaw();\n    }\n\n    if (objFlags & OBJ_FLAG_MOVE_Y_WITH_TERMINAL_VEL) {\n        cur_obj_move_y_with_terminal_vel();\n    }\n\n    if (objFlags & OBJ_FLAG_TRANSFORM_RELATIVE_TO_PARENT) {\n        obj_build_transform_relative_to_parent(gCurrentObject);\n    }\n\n    if (objFlags & OBJ_FLAG_SET_THROW_MATRIX_FROM_TRANSFORM) {\n        obj_set_throw_matrix_from_transform(gCurrentObject);\n    }\n\n    if (objFlags & OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE) {\n        obj_update_gfx_pos_and_angle(gCurrentObject);\n    }\n\n    // Handle visibility of object\n    if (gCurrentObject->oRoom != -1) {\n        // If the object is in a room, only show it when Mario is in the room.\n        cur_obj_enable_rendering_if_mario_in_room();\n    } else if ((objFlags & OBJ_FLAG_COMPUTE_DIST_TO_MARIO) && gCurrentObject->collisionData == NULL) {\n        if (!(objFlags & OBJ_FLAG_ACTIVE_FROM_AFAR)) {\n            // If the object has a render distance, check if it should be shown.\n            if (distanceFromMario > gCurrentObject->oDrawingDistance) {\n                // Out of render distance, hide the object.\n                gCurrentObject->header.gfx.node.flags &= ~GRAPH_RENDER_ACTIVE;\n                gCurrentObject->activeFlags |= ACTIVE_FLAG_FAR_AWAY;\n            } else if (gCurrentObject->oHeldState == HELD_FREE) {\n                // In render distance (and not being held), show the object.\n                gCurrentObject->header.gfx.node.flags |= GRAPH_RENDER_ACTIVE;\n                gCurrentObject->activeFlags &= ~ACTIVE_FLAG_FAR_AWAY;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/engine/behavior_script.h",
    "content": "#ifndef BEHAVIOR_SCRIPT_H\n#define BEHAVIOR_SCRIPT_H\n\n#include <PR/ultratypes.h>\n\n#define BHV_PROC_CONTINUE 0\n#define BHV_PROC_BREAK    1\n\n#define cur_obj_get_int(offset) gCurrentObject->OBJECT_FIELD_S32(offset)\n#define cur_obj_get_float(offset) gCurrentObject->OBJECT_FIELD_F32(offset)\n\n#define cur_obj_add_float(offset, value) gCurrentObject->OBJECT_FIELD_F32(offset) += (f32)(value)\n#define cur_obj_set_float(offset, value) gCurrentObject->OBJECT_FIELD_F32(offset) = (f32)(value)\n#define cur_obj_add_int(offset, value) gCurrentObject->OBJECT_FIELD_S32(offset) += (s32)(value)\n#define cur_obj_set_int(offset, value) gCurrentObject->OBJECT_FIELD_S32(offset) = (s32)(value)\n#define cur_obj_or_int(offset, value)  gCurrentObject->OBJECT_FIELD_S32(offset) |= (s32)(value)\n#define cur_obj_and_int(offset, value) gCurrentObject->OBJECT_FIELD_S32(offset) &= (s32)(value)\n#define cur_obj_set_vptr(offset, value) gCurrentObject->OBJECT_FIELD_VPTR(offset) = (void *)(value)\n\n#define obj_and_int(object, offset, value) object->OBJECT_FIELD_S32(offset) &= (s32)(value)\n\nu16 random_u16(void);\nfloat random_float(void);\ns32 random_sign(void);\n\nvoid stub_behavior_script_2(void);\n\nvoid cur_obj_update(void);\n\n#endif // BEHAVIOR_SCRIPT_H\n"
  },
  {
    "path": "src/engine/geo_layout.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n\n#include \"geo_layout.h\"\n#include \"math_util.h\"\n#include \"game/memory.h\"\n#include \"graph_node.h\"\n\ntypedef void (*GeoLayoutCommandProc)(void);\n\nGeoLayoutCommandProc GeoLayoutJumpTable[] = {\n    geo_layout_cmd_branch_and_link,\n    geo_layout_cmd_end,\n    geo_layout_cmd_branch,\n    geo_layout_cmd_return,\n    geo_layout_cmd_open_node,\n    geo_layout_cmd_close_node,\n    geo_layout_cmd_assign_as_view,\n    geo_layout_cmd_update_node_flags,\n    geo_layout_cmd_node_root,\n    geo_layout_cmd_node_ortho_projection,\n    geo_layout_cmd_node_perspective,\n    geo_layout_cmd_node_start,\n    geo_layout_cmd_node_master_list,\n    geo_layout_cmd_node_level_of_detail,\n    geo_layout_cmd_node_switch_case,\n    geo_layout_cmd_node_camera,\n    geo_layout_cmd_node_translation_rotation,\n    geo_layout_cmd_node_translation,\n    geo_layout_cmd_node_rotation,\n    geo_layout_cmd_node_animated_part,\n    geo_layout_cmd_node_billboard,\n    geo_layout_cmd_node_display_list,\n    geo_layout_cmd_node_shadow,\n    geo_layout_cmd_node_object_parent,\n    geo_layout_cmd_node_generated,\n    geo_layout_cmd_node_background,\n    geo_layout_cmd_nop,\n    geo_layout_cmd_copy_view,\n    geo_layout_cmd_node_held_obj,\n    geo_layout_cmd_node_scale,\n    geo_layout_cmd_nop2,\n    geo_layout_cmd_nop3,\n    geo_layout_cmd_node_culling_radius,\n};\n\nstruct GraphNode gObjParentGraphNode;\nstruct AllocOnlyPool *gGraphNodePool;\nstruct GraphNode *gCurRootGraphNode;\n\nUNUSED s32 D_8038BCA8;\n\n/* The gGeoViews array is a mysterious one. Some background:\n *\n * If there are e.g. multiple Goombas, the multiple Goomba objects share one\n * Geo node tree describing the goomba 3D model. Since every node has a single\n * parent field and not a parent array, the parent is dynamically rebinded to\n * each goomba instance just before rendering and set to null afterwards.\n * The same happens for ObjectParentNode, which has as his sharedChild a group\n * of all 240 object nodes. Why does the ObjectParentNode exist at all, if its\n * only purpose is to temporarily bind the actual group with objects? This might\n * be another remnant to Luigi.\n *\n * When creating a root node, room for (2 + cmd+0x02) pointers is allocated in\n * gGeoViews. Except for the title screen, cmd+0x02 is 10. The 2 default ones\n * might be for Mario and Luigi, and the other 10 could be different cameras for\n * different rooms / boss fights. An area might be structured like this:\n *\n * geo_camera mode_player //Mario cam\n * geo_open_node\n *   geo_render_obj\n *   geo_assign_as_view 1   // currently unused geo command\n * geo_close_node\n *\n * geo_camera mode_player //Luigi cam\n * geo_open_node\n *   geo_render_obj\n *   geo_copy_view 1        // currently unused geo command\n *   geo_assign_as_view 2\n * geo_close_node\n *\n * geo_camera mode_boss //boss fight cam\n * geo_assign_as_view 3\n * ...\n *\n * There might also be specific geo nodes for Mario or Luigi only. Or a fixed camera\n * might not have display list nodes of parts of the level that are out of view.\n * In the end Luigi got scrapped and the multiple-camera design did not pan out,\n * so everything was reduced to a single ObjectParent with a single group, and\n * camera switching was all done in one node. End of speculation.\n */\nstruct GraphNode **gGeoViews;\nu16 gGeoNumViews; // length of gGeoViews array\n\nuintptr_t gGeoLayoutStack[16];\nstruct GraphNode *gCurGraphNodeList[32];\ns16 gCurGraphNodeIndex;\ns16 gGeoLayoutStackIndex; // similar to SP register in MIPS\nUNUSED s16 D_8038BD7C;\ns16 gGeoLayoutReturnIndex; // similar to RA register in MIPS\nu8 *gGeoLayoutCommand;\n\nu32 unused_8038B894[3] = { 0 };\n\n/*\n  0x00: Branch and store return address\n   cmd+0x04: void *branchTarget\n*/\nvoid geo_layout_cmd_branch_and_link(void) {\n    gGeoLayoutStack[gGeoLayoutStackIndex++] = (uintptr_t) (gGeoLayoutCommand + CMD_PROCESS_OFFSET(8));\n    gGeoLayoutStack[gGeoLayoutStackIndex++] = (gCurGraphNodeIndex << 16) + gGeoLayoutReturnIndex;\n    gGeoLayoutReturnIndex = gGeoLayoutStackIndex;\n    gGeoLayoutCommand = segmented_to_virtual(cur_geo_cmd_ptr(0x04));\n}\n\n// 0x01: Terminate geo layout\nvoid geo_layout_cmd_end(void) {\n    gGeoLayoutStackIndex = gGeoLayoutReturnIndex;\n    gGeoLayoutReturnIndex = gGeoLayoutStack[--gGeoLayoutStackIndex] & 0xFFFF;\n    gCurGraphNodeIndex = gGeoLayoutStack[gGeoLayoutStackIndex] >> 16;\n    gGeoLayoutCommand = (u8 *) gGeoLayoutStack[--gGeoLayoutStackIndex];\n}\n\n/*\n  0x02: Branch\n   cmd+0x04: void *branchTarget\n*/\nvoid geo_layout_cmd_branch(void) {\n    if (cur_geo_cmd_u8(0x01) == 1) {\n        gGeoLayoutStack[gGeoLayoutStackIndex++] = (uintptr_t) (gGeoLayoutCommand + CMD_PROCESS_OFFSET(8));\n    }\n\n    gGeoLayoutCommand = segmented_to_virtual(cur_geo_cmd_ptr(0x04));\n}\n\n// 0x03: Return from branch\nvoid geo_layout_cmd_return(void) {\n    gGeoLayoutCommand = (u8 *) gGeoLayoutStack[--gGeoLayoutStackIndex];\n}\n\n// 0x04: Open node\nvoid geo_layout_cmd_open_node(void) {\n    gCurGraphNodeList[gCurGraphNodeIndex + 1] = gCurGraphNodeList[gCurGraphNodeIndex];\n    gCurGraphNodeIndex++;\n    gGeoLayoutCommand += 0x04 << CMD_SIZE_SHIFT;\n}\n\n// 0x05: Close node\nvoid geo_layout_cmd_close_node(void) {\n    gCurGraphNodeIndex--;\n    gGeoLayoutCommand += 0x04 << CMD_SIZE_SHIFT;\n}\n\n/*\n  0x06: Register the current node as a view\n   cmd+0x02: index\n\n  Register the current node in the gGeoViews array at the given index\n*/\nvoid geo_layout_cmd_assign_as_view(void) {\n    u16 index = cur_geo_cmd_s16(0x02);\n\n    if (index < gGeoNumViews) {\n        gGeoViews[index] = gCurGraphNodeList[gCurGraphNodeIndex];\n    }\n\n    gGeoLayoutCommand += 0x04 << CMD_SIZE_SHIFT;\n}\n\n/*\n  0x07: Update current scene graph node flags\n   cmd+0x01: u8 operation (0 = reset, 1 = set, 2 = clear)\n   cmd+0x02: s16 bits\n*/\nvoid geo_layout_cmd_update_node_flags(void) {\n    u16 operation = cur_geo_cmd_u8(0x01);\n    u16 flagBits = cur_geo_cmd_s16(0x02);\n\n    switch (operation) {\n        case GEO_CMD_FLAGS_RESET:\n            gCurGraphNodeList[gCurGraphNodeIndex]->flags = flagBits;\n            break;\n        case GEO_CMD_FLAGS_SET:\n            gCurGraphNodeList[gCurGraphNodeIndex]->flags |= flagBits;\n            break;\n        case GEO_CMD_FLAGS_CLEAR:\n            gCurGraphNodeList[gCurGraphNodeIndex]->flags &= ~flagBits;\n            break;\n    }\n\n    gGeoLayoutCommand += 0x04 << CMD_SIZE_SHIFT;\n}\n\n/*\n  0x08: Create a scene graph root node that specifies the viewport\n   cmd+0x02: s16 num entries (+2) to allocate for gGeoViews\n   cmd+0x04: s16 x\n   cmd+0x06: s16 y\n   cmd+0x08: s16 width\n   cmd+0x0A: s16 height\n*/\nvoid geo_layout_cmd_node_root(void) {\n    s32 i;\n    struct GraphNodeRoot *graphNode;\n\n    s16 x = cur_geo_cmd_s16(0x04);\n    s16 y = cur_geo_cmd_s16(0x06);\n    s16 width = cur_geo_cmd_s16(0x08);\n    s16 height = cur_geo_cmd_s16(0x0A);\n\n    // number of entries to allocate for gGeoViews array\n    // at least 2 are allocated by default\n    // cmd+0x02 = 0x00: Mario face, 0x0A: all other levels\n    gGeoNumViews = cur_geo_cmd_s16(0x02) + 2;\n\n    graphNode = init_graph_node_root(gGraphNodePool, NULL, 0, x, y, width, height);\n\n    // TODO: check type\n    gGeoViews = alloc_only_pool_alloc(gGraphNodePool, gGeoNumViews * sizeof(struct GraphNode *));\n\n    graphNode->views = gGeoViews;\n    graphNode->numViews = gGeoNumViews;\n\n    for (i = 0; i < gGeoNumViews; i++) {\n        gGeoViews[i] = NULL;\n    }\n\n    register_scene_graph_node(&graphNode->node);\n\n    gGeoLayoutCommand += 0x0C << CMD_SIZE_SHIFT;\n}\n\n/*\n  0x09: Create orthographic projection scene graph node\n   cmd+0x02: s16 scale as a percentage (usually it's 100)\n*/\nvoid geo_layout_cmd_node_ortho_projection(void) {\n    struct GraphNodeOrthoProjection *graphNode;\n    f32 scale = (f32) cur_geo_cmd_s16(0x02) / 100.0f;\n\n    graphNode = init_graph_node_ortho_projection(gGraphNodePool, NULL, scale);\n\n    register_scene_graph_node(&graphNode->node);\n\n    gGeoLayoutCommand += 0x04 << CMD_SIZE_SHIFT;\n}\n\n/*\n  0x0A: Create camera frustum scene graph node\n   cmd+0x01: u8  if nonzero, enable frustumFunc field\n   cmd+0x02: s16 field of view\n   cmd+0x04: s16 near\n   cmd+0x06: s16 far\n   [cmd+0x08: GraphNodeFunc frustumFunc]\n*/\nvoid geo_layout_cmd_node_perspective(void) {\n    struct GraphNodePerspective *graphNode;\n    GraphNodeFunc frustumFunc = NULL;\n    s16 fov = cur_geo_cmd_s16(0x02);\n    s16 near = cur_geo_cmd_s16(0x04);\n    s16 far = cur_geo_cmd_s16(0x06);\n\n    if (cur_geo_cmd_u8(0x01) != 0) {\n        // optional asm function\n        frustumFunc = (GraphNodeFunc) cur_geo_cmd_ptr(0x08);\n        gGeoLayoutCommand += 4 << CMD_SIZE_SHIFT;\n    }\n\n    graphNode = init_graph_node_perspective(gGraphNodePool, NULL, (f32) fov, near, far, frustumFunc, 0);\n\n    register_scene_graph_node(&graphNode->fnNode.node);\n\n    gGeoLayoutCommand += 0x08 << CMD_SIZE_SHIFT;\n}\n\n/*\n  0x0B: Create a scene graph node that groups other nodes without any\n  additional functionality\n*/\nvoid geo_layout_cmd_node_start(void) {\n    struct GraphNodeStart *graphNode;\n\n    graphNode = init_graph_node_start(gGraphNodePool, NULL);\n\n    register_scene_graph_node(&graphNode->node);\n\n    gGeoLayoutCommand += 0x04 << CMD_SIZE_SHIFT;\n}\n\n// 0x1F: No operation\nvoid geo_layout_cmd_nop3(void) {\n    gGeoLayoutCommand += 0x10 << CMD_SIZE_SHIFT;\n}\n\n/*\n  0x0C: Create z-buffer-toggling scene graph node\n   cmd+0x01: u8 enableZBuffer (1 = on, 0 = off)\n*/\nvoid geo_layout_cmd_node_master_list(void) {\n    struct GraphNodeMasterList *graphNode;\n\n    graphNode = init_graph_node_master_list(gGraphNodePool, NULL, cur_geo_cmd_u8(0x01));\n\n    register_scene_graph_node(&graphNode->node);\n\n    gGeoLayoutCommand += 0x04 << CMD_SIZE_SHIFT;\n}\n\n/*\n  0x0D: Create a level of detail graph node, which only renders at a certain\n  distance interval from the camera.\n   cmd+0x04: s16 minDistance\n   cmd+0x06: s16 maxDistance\n*/\nvoid geo_layout_cmd_node_level_of_detail(void) {\n    struct GraphNodeLevelOfDetail *graphNode;\n    s16 minDistance = cur_geo_cmd_s16(0x04);\n    s16 maxDistance = cur_geo_cmd_s16(0x06);\n\n    graphNode = init_graph_node_render_range(gGraphNodePool, NULL, minDistance, maxDistance);\n\n    register_scene_graph_node(&graphNode->node);\n\n    gGeoLayoutCommand += 0x08 << CMD_SIZE_SHIFT;\n}\n\n/*\n  0x0E: Create switch-case scene graph node\n   cmd+0x02: s16 initialSelectedCase\n   cmd+0x04: GraphNodeFunc caseSelectorFunc\n\n  caseSelectorFunc returns an index which is used to select the child node to render.\n  Used for animating coins, blinking, color selection, etc.\n*/\nvoid geo_layout_cmd_node_switch_case(void) {\n    struct GraphNodeSwitchCase *graphNode;\n\n    graphNode =\n        init_graph_node_switch_case(gGraphNodePool, NULL,\n                                    cur_geo_cmd_s16(0x02), // case which is initially selected\n                                    0,\n                                    (GraphNodeFunc) cur_geo_cmd_ptr(0x04), // case update function\n                                    0);\n\n    register_scene_graph_node(&graphNode->fnNode.node);\n\n    gGeoLayoutCommand += 0x08 << CMD_SIZE_SHIFT;\n}\n\n/*\n 0x0F: Create a camera scene graph node (GraphNodeCamera). The focus sets the Camera's areaCen position.\n  cmd+0x02: s16 camera type (changes from course to course)\n  cmd+0x04: s16 posX\n  cmd+0x06: s16 posY\n  cmd+0x08: s16 posZ\n  cmd+0x0A: s16 focusX\n  cmd+0x0C: s16 focusY\n  cmd+0x0E: s16 focusZ\n  cmd+0x10: GraphNodeFunc func\n*/\nvoid geo_layout_cmd_node_camera(void) {\n    struct GraphNodeCamera *graphNode;\n    s16 *cmdPos = (s16 *) &gGeoLayoutCommand[4];\n\n    Vec3f pos, focus;\n\n    cmdPos = read_vec3s_to_vec3f(pos, cmdPos);\n    cmdPos = read_vec3s_to_vec3f(focus, cmdPos);\n\n    graphNode = init_graph_node_camera(gGraphNodePool, NULL, pos, focus,\n                                       (GraphNodeFunc) cur_geo_cmd_ptr(0x10), cur_geo_cmd_s16(0x02));\n\n    register_scene_graph_node(&graphNode->fnNode.node);\n\n    gGeoViews[0] = &graphNode->fnNode.node;\n\n    gGeoLayoutCommand += 0x14 << CMD_SIZE_SHIFT;\n}\n\n/*\n  0x10: Create translation & rotation scene graph node with optional display list\n   cmd+0x01: u8 params\n     (params & 0x80): if set, enable displayList field and drawingLayer\n     ((params & 0x70)>>4): fieldLayout\n     (params & 0x0F): drawingLayer\n\n   fieldLayout == 0:\n    cmd+0x04: s16 xTranslation\n    cmd+0x06: s16 yTranslation\n    cmd+0x08: s16 zTranslation\n    cmd+0x0A: s16 xRotation\n    cmd+0x0C: s16 yRotation\n    cmd+0x0E: s16 zRotation\n\n   fieldLayout == 1:\n    cmd+0x02: s16 xTranslation\n    cmd+0x04: s16 yTranslation\n    cmd+0x06: s16 zTranslation\n    (rotation gets copied from gVec3sZero)\n\n   fieldLayout == 2:\n    cmd+0x02: s16 xRotation\n    cmd+0x04: s16 yRotation\n    cmd+0x06: s16 zRotation\n    (translation gets copied from gVec3sZero)\n\n   fieldLayout == 3:\n    cmd+0x02: s16 yRotation\n    (translation gets copied from gVec3sZero)\n    (x and z translation are set to 0)\n\n   [cmd+var: void *displayList]\n*/\nvoid geo_layout_cmd_node_translation_rotation(void) {\n    struct GraphNodeTranslationRotation *graphNode;\n\n    Vec3s translation, rotation;\n\n    void *displayList = NULL;\n    s16 drawingLayer = 0;\n\n    s16 params = cur_geo_cmd_u8(0x01);\n    s16 *cmdPos = (s16 *) gGeoLayoutCommand;\n\n    switch ((params & 0x70) >> 4) {\n        case 0:\n            cmdPos = read_vec3s(translation, &cmdPos[2]);\n            cmdPos = read_vec3s_angle(rotation, cmdPos);\n            break;\n        case 1:\n            cmdPos = read_vec3s(translation, &cmdPos[1]);\n            vec3s_copy(rotation, gVec3sZero);\n            break;\n        case 2:\n            cmdPos = read_vec3s_angle(rotation, &cmdPos[1]);\n            vec3s_copy(translation, gVec3sZero);\n            break;\n        case 3:\n            vec3s_copy(translation, gVec3sZero);\n            vec3s_set(rotation, 0, (cmdPos[1] << 15) / 180, 0);\n            cmdPos += 2 << CMD_SIZE_SHIFT;\n            break;\n    }\n\n    if (params & 0x80) {\n        displayList = *(void **) &cmdPos[0];\n        drawingLayer = params & 0x0F;\n        cmdPos += 2 << CMD_SIZE_SHIFT;\n    }\n\n    graphNode = init_graph_node_translation_rotation(gGraphNodePool, NULL, drawingLayer, displayList,\n                                                     translation, rotation);\n    register_scene_graph_node(&graphNode->node);\n\n    gGeoLayoutCommand = (u8 *) cmdPos;\n}\n\n/*\n  0x11: Create translation scene graph node with optional display list\n   cmd+0x01: u8 params\n     (params & 0x80): if set, enable displayList field and drawingLayer\n     (params & 0x0F): drawingLayer\n   cmd+0x02: s16 xTranslation\n   cmd+0x04: s16 yTranslation\n   cmd+0x06: s16 zTranslation\n  [cmd+0x08: void *displayList]\n*/\nvoid geo_layout_cmd_node_translation(void) {\n    struct GraphNodeTranslation *graphNode;\n\n    Vec3s translation;\n\n    s16 drawingLayer = 0;\n    s16 params = cur_geo_cmd_u8(0x01);\n    s16 *cmdPos = (s16 *) gGeoLayoutCommand;\n    void *displayList = NULL;\n\n    cmdPos = read_vec3s(translation, &cmdPos[1]);\n\n    if (params & 0x80) {\n        displayList = *(void **) &cmdPos[0];\n        drawingLayer = params & 0x0F;\n        cmdPos += 2 << CMD_SIZE_SHIFT;\n    }\n\n    graphNode =\n        init_graph_node_translation(gGraphNodePool, NULL, drawingLayer, displayList, translation);\n\n    register_scene_graph_node(&graphNode->node);\n\n    gGeoLayoutCommand = (u8 *) cmdPos;\n}\n\n/*\n  0x12: Create ? scene graph node\n   cmd+0x01: u8 params\n     (params & 0x80): if set, enable displayList field and drawingLayer\n     (params & 0x0F): drawingLayer\n   cmd+0x02: s16 unkX\n   cmd+0x04: s16 unkY\n   cmd+0x06: s16 unkZ\n  [cmd+0x08: void *displayList]\n*/\nvoid geo_layout_cmd_node_rotation(void) {\n    struct GraphNodeRotation *graphNode;\n\n    Vec3s sp2c;\n\n    s16 drawingLayer = 0;\n    s16 params = cur_geo_cmd_u8(0x01);\n    s16 *cmdPos = (s16 *) gGeoLayoutCommand;\n    void *displayList = NULL;\n\n    cmdPos = read_vec3s_angle(sp2c, &cmdPos[1]);\n\n    if (params & 0x80) {\n        displayList = *(void **) &cmdPos[0];\n        drawingLayer = params & 0x0F;\n        cmdPos += 2 << CMD_SIZE_SHIFT;\n    }\n\n    graphNode = init_graph_node_rotation(gGraphNodePool, NULL, drawingLayer, displayList, sp2c);\n\n    register_scene_graph_node(&graphNode->node);\n\n    gGeoLayoutCommand = (u8 *) cmdPos;\n}\n\n/*\n  0x1D: Create scale scene graph node with optional display list\n   cmd+0x01: u8 params\n     (params & 0x80): if set, enable displayList field and drawingLayer\n     (params & 0x0F): drawingLayer\n   cmd+0x04: u32 scale (0x10000 = 1.0)\n  [cmd+0x08: void *displayList]\n*/\nvoid geo_layout_cmd_node_scale(void) {\n    struct GraphNodeScale *graphNode;\n\n    s16 drawingLayer = 0;\n    s16 params = cur_geo_cmd_u8(0x01);\n    f32 scale = cur_geo_cmd_u32(0x04) / 65536.0f;\n    void *displayList = NULL;\n\n    if (params & 0x80) {\n        displayList = cur_geo_cmd_ptr(0x08);\n        drawingLayer = params & 0x0F;\n        gGeoLayoutCommand += 4 << CMD_SIZE_SHIFT;\n    }\n\n    graphNode = init_graph_node_scale(gGraphNodePool, NULL, drawingLayer, displayList, scale);\n\n    register_scene_graph_node(&graphNode->node);\n\n    gGeoLayoutCommand += 0x08 << CMD_SIZE_SHIFT;\n}\n\n// 0x1E: No operation\nvoid geo_layout_cmd_nop2(void) {\n    gGeoLayoutCommand += 0x08 << CMD_SIZE_SHIFT;\n}\n\n/*\n  0x13: Create a scene graph node that is rotated by the object's animation.\n   cmd+0x01: u8 drawingLayer\n   cmd+0x02: s16 xTranslation\n   cmd+0x04: s16 yTranslation\n   cmd+0x06: s16 zTranslation\n   cmd+0x08: void *displayList\n*/\nvoid geo_layout_cmd_node_animated_part(void) {\n    struct GraphNodeAnimatedPart *graphNode;\n    Vec3s translation;\n    s32 drawingLayer = cur_geo_cmd_u8(0x01);\n    void *displayList = cur_geo_cmd_ptr(0x08);\n    s16 *cmdPos = (s16 *) gGeoLayoutCommand;\n\n    read_vec3s(translation, &cmdPos[1]);\n\n    graphNode =\n        init_graph_node_animated_part(gGraphNodePool, NULL, drawingLayer, displayList, translation);\n\n    register_scene_graph_node(&graphNode->node);\n\n    gGeoLayoutCommand += 0x0C << CMD_SIZE_SHIFT;\n}\n\n/*\n  0x14: Create billboarding node with optional display list\n   cmd+0x01: u8 params\n     (params & 0x80): if set, enable displayList field and drawingLayer\n     (params & 0x0F): drawingLayer\n   cmd+0x02: s16 xTranslation\n   cmd+0x04: s16 yTranslation\n   cmd+0x06: s16 zTranslation\n  [cmd+0x08: void *displayList]\n*/\nvoid geo_layout_cmd_node_billboard(void) {\n    struct GraphNodeBillboard *graphNode;\n    Vec3s translation;\n    s16 drawingLayer = 0;\n    s16 params = cur_geo_cmd_u8(0x01);\n    s16 *cmdPos = (s16 *) gGeoLayoutCommand;\n    void *displayList = NULL;\n\n    cmdPos = read_vec3s(translation, &cmdPos[1]);\n\n    if (params & 0x80) {\n        displayList = *(void **) &cmdPos[0];\n        drawingLayer = params & 0x0F;\n        cmdPos += 2 << CMD_SIZE_SHIFT;\n    }\n\n    graphNode = init_graph_node_billboard(gGraphNodePool, NULL, drawingLayer, displayList, translation);\n\n    register_scene_graph_node(&graphNode->node);\n\n    gGeoLayoutCommand = (u8 *) cmdPos;\n}\n\n/*\n  0x15: Create plain display list scene graph node\n   cmd+0x01: u8 drawingLayer\n   cmd+0x04: void *displayList\n*/\nvoid geo_layout_cmd_node_display_list(void) {\n    struct GraphNodeDisplayList *graphNode;\n    s32 drawingLayer = cur_geo_cmd_u8(0x01);\n    void *displayList = cur_geo_cmd_ptr(0x04);\n\n    graphNode = init_graph_node_display_list(gGraphNodePool, NULL, drawingLayer, displayList);\n\n    register_scene_graph_node(&graphNode->node);\n\n    gGeoLayoutCommand += 0x08 << CMD_SIZE_SHIFT;\n}\n\n/*\n  0x16: Create shadow scene graph node\n   cmd+0x02: s16 shadowType\n   cmd+0x04: s16 shadowSolidity\n   cmd+0x06: s16 shadowScale\n*/\nvoid geo_layout_cmd_node_shadow(void) {\n    struct GraphNodeShadow *graphNode;\n    u8 shadowType = cur_geo_cmd_s16(0x02);\n    u8 shadowSolidity = cur_geo_cmd_s16(0x04);\n    s16 shadowScale = cur_geo_cmd_s16(0x06);\n\n    graphNode = init_graph_node_shadow(gGraphNodePool, NULL, shadowScale, shadowSolidity, shadowType);\n\n    register_scene_graph_node(&graphNode->node);\n\n    gGeoLayoutCommand += 0x08 << CMD_SIZE_SHIFT;\n}\n\n// 0x17: Create scene graph node that manages the group of all object nodes\nvoid geo_layout_cmd_node_object_parent(void) {\n    struct GraphNodeObjectParent *graphNode;\n\n    graphNode = init_graph_node_object_parent(gGraphNodePool, NULL, &gObjParentGraphNode);\n\n    register_scene_graph_node(&graphNode->node);\n\n    gGeoLayoutCommand += 0x04 << CMD_SIZE_SHIFT;\n}\n\n/*\n  0x18: Create dynamically generated displaylist scene graph node\n   cmd+0x02: s16 parameter\n   cmd+0x04: GraphNodeFunc func\n*/\nvoid geo_layout_cmd_node_generated(void) {\n    struct GraphNodeGenerated *graphNode;\n\n    graphNode = init_graph_node_generated(gGraphNodePool, NULL,\n                                          (GraphNodeFunc) cur_geo_cmd_ptr(0x04), // asm function\n                                          cur_geo_cmd_s16(0x02));                // parameter\n\n    register_scene_graph_node(&graphNode->fnNode.node);\n\n    gGeoLayoutCommand += 0x08 << CMD_SIZE_SHIFT;\n}\n\n/*\n  0x19: Create background scene graph node\n   cmd+0x02: s16 background // background ID, or RGBA5551 color if backgroundFunc is null\n   cmd+0x04: GraphNodeFunc backgroundFunc\n*/\nvoid geo_layout_cmd_node_background(void) {\n    struct GraphNodeBackground *graphNode;\n\n    graphNode = init_graph_node_background(\n        gGraphNodePool, NULL,\n        cur_geo_cmd_s16(0x02), // background ID, or RGBA5551 color if asm function is null\n        (GraphNodeFunc) cur_geo_cmd_ptr(0x04), // asm function\n        0);\n\n    register_scene_graph_node(&graphNode->fnNode.node);\n\n    gGeoLayoutCommand += 0x08 << CMD_SIZE_SHIFT;\n}\n\n// 0x1A: No operation\nvoid geo_layout_cmd_nop(void) {\n    gGeoLayoutCommand += 0x08 << CMD_SIZE_SHIFT;\n}\n\n/*\n  0x1B: Copy the shared children from the object parent from a specific view\n  to a newly created object parent node.\n   cmd+0x02: s16 index (of gGeoViews)\n*/\nvoid geo_layout_cmd_copy_view(void) {\n    struct GraphNodeObjectParent *graphNode;\n    struct GraphNode *node = NULL;\n    s16 index = cur_geo_cmd_s16(0x02);\n\n    if (index >= 0) {\n        node = gGeoViews[index];\n\n        if (node->type == GRAPH_NODE_TYPE_OBJECT_PARENT) {\n            node = ((struct GraphNodeObjectParent *) node)->sharedChild;\n        } else {\n            node = NULL;\n        }\n    }\n\n    graphNode = init_graph_node_object_parent(gGraphNodePool, NULL, node);\n\n    register_scene_graph_node(&graphNode->node);\n\n    gGeoLayoutCommand += 0x04 << CMD_SIZE_SHIFT;\n}\n\n/*\n  0x1C: Create a held object scene graph node\n   cmd+0x01: u8 unused\n   cmd+0x02: s16 offsetX\n   cmd+0x04: s16 offsetY\n   cmd+0x06: s16 offsetZ\n   cmd+0x08: GraphNodeFunc nodeFunc\n*/\nvoid geo_layout_cmd_node_held_obj(void) {\n    struct GraphNodeHeldObject *graphNode;\n    Vec3s offset;\n\n    read_vec3s(offset, (s16 *) &gGeoLayoutCommand[0x02]);\n\n    graphNode = init_graph_node_held_object(\n        gGraphNodePool, NULL, NULL, offset, (GraphNodeFunc) cur_geo_cmd_ptr(0x08), cur_geo_cmd_u8(0x01));\n\n    register_scene_graph_node(&graphNode->fnNode.node);\n\n    gGeoLayoutCommand += 0x0C << CMD_SIZE_SHIFT;\n}\n\n/*\n  0x20: Create a scene graph node that specifies for an object the radius that\n   is used for frustum culling.\n   cmd+0x02: s16 cullingRadius\n*/\nvoid geo_layout_cmd_node_culling_radius(void) {\n    struct GraphNodeCullingRadius *graphNode;\n    graphNode = init_graph_node_culling_radius(gGraphNodePool, NULL, cur_geo_cmd_s16(0x02));\n    register_scene_graph_node(&graphNode->node);\n    gGeoLayoutCommand += 0x04 << CMD_SIZE_SHIFT;\n}\n\nstruct GraphNode *process_geo_layout(struct AllocOnlyPool *pool, void *segptr) {\n    // set by register_scene_graph_node when gCurGraphNodeIndex is 0\n    // and gCurRootGraphNode is NULL\n    gCurRootGraphNode = NULL;\n\n    gGeoNumViews = 0; // number of entries in gGeoViews\n\n    gCurGraphNodeList[0] = 0;\n    gCurGraphNodeIndex = 0; // incremented by cmd_open_node, decremented by cmd_close_node\n\n    gGeoLayoutStackIndex = 2;\n    gGeoLayoutReturnIndex = 2; // stack index is often copied here?\n\n    gGeoLayoutCommand = segmented_to_virtual(segptr);\n\n    gGraphNodePool = pool;\n\n    gGeoLayoutStack[0] = 0;\n    gGeoLayoutStack[1] = 0;\n\n    while (gGeoLayoutCommand != NULL) {\n        GeoLayoutJumpTable[gGeoLayoutCommand[0x00]]();\n    }\n\n    return gCurRootGraphNode;\n}\n"
  },
  {
    "path": "src/engine/geo_layout.h",
    "content": "#ifndef GEO_LAYOUT_H\n#define GEO_LAYOUT_H\n\n#include <PR/ultratypes.h>\n\n#include \"game/memory.h\"\n#include \"macros.h\"\n#include \"types.h\"\n\n#define GEO_CMD_FLAGS_RESET 0\n#define GEO_CMD_FLAGS_SET   1\n#define GEO_CMD_FLAGS_CLEAR 2\n\n#define CMD_SIZE_SHIFT (sizeof(void *) >> 3)\n#define CMD_PROCESS_OFFSET(offset) (((offset) & 3) | (((offset) & ~3) << CMD_SIZE_SHIFT))\n\n#define cur_geo_cmd_u8(offset) \\\n    (gGeoLayoutCommand[CMD_PROCESS_OFFSET(offset)])\n\n#define cur_geo_cmd_s16(offset) \\\n    (*(s16 *) &gGeoLayoutCommand[CMD_PROCESS_OFFSET(offset)])\n\n#define cur_geo_cmd_s32(offset) \\\n    (*(s32 *) &gGeoLayoutCommand[CMD_PROCESS_OFFSET(offset)])\n\n#define cur_geo_cmd_u32(offset) \\\n    (*(u32 *) &gGeoLayoutCommand[CMD_PROCESS_OFFSET(offset)])\n\n#define cur_geo_cmd_ptr(offset) \\\n    (*(void **) &gGeoLayoutCommand[CMD_PROCESS_OFFSET(offset)])\n\nextern struct AllocOnlyPool *gGraphNodePool;\nextern struct GraphNode *gCurRootGraphNode;\nextern UNUSED s32 D_8038BCA8;\nextern struct GraphNode **gGeoViews;\nextern u16 gGeoNumViews;\nextern uintptr_t gGeoLayoutStack[];\nextern struct GraphNode *gCurGraphNodeList[];\nextern s16 gCurGraphNodeIndex;\nextern s16 gGeoLayoutStackIndex;\nextern UNUSED s16 D_8038BD7C;\nextern s16 gGeoLayoutReturnIndex;\nextern u8 *gGeoLayoutCommand;\nextern struct GraphNode gObjParentGraphNode;\n\nextern struct AllocOnlyPool *D_8038BCA0;\nextern struct GraphNode *D_8038BCA4;\nextern s16 D_8038BD78;\nextern struct GraphNode *D_8038BCF8[];\n\nvoid geo_layout_cmd_branch_and_link(void);\nvoid geo_layout_cmd_end(void);\nvoid geo_layout_cmd_branch(void);\nvoid geo_layout_cmd_return(void);\nvoid geo_layout_cmd_open_node(void);\nvoid geo_layout_cmd_close_node(void);\nvoid geo_layout_cmd_assign_as_view(void);\nvoid geo_layout_cmd_update_node_flags(void);\nvoid geo_layout_cmd_node_root(void);\nvoid geo_layout_cmd_node_ortho_projection(void);\nvoid geo_layout_cmd_node_perspective(void);\nvoid geo_layout_cmd_node_start(void);\nvoid geo_layout_cmd_nop3(void);\nvoid geo_layout_cmd_node_master_list(void);\nvoid geo_layout_cmd_node_level_of_detail(void);\nvoid geo_layout_cmd_node_switch_case(void);\nvoid geo_layout_cmd_node_camera(void);\nvoid geo_layout_cmd_node_translation_rotation(void);\nvoid geo_layout_cmd_node_translation(void);\nvoid geo_layout_cmd_node_rotation(void);\nvoid geo_layout_cmd_node_scale(void);\nvoid geo_layout_cmd_nop2(void);\nvoid geo_layout_cmd_node_animated_part(void);\nvoid geo_layout_cmd_node_billboard(void);\nvoid geo_layout_cmd_node_display_list(void);\nvoid geo_layout_cmd_node_shadow(void);\nvoid geo_layout_cmd_node_object_parent(void);\nvoid geo_layout_cmd_node_generated(void);\nvoid geo_layout_cmd_node_background(void);\nvoid geo_layout_cmd_nop(void);\nvoid geo_layout_cmd_copy_view(void);\nvoid geo_layout_cmd_node_held_obj(void);\nvoid geo_layout_cmd_node_culling_radius(void);\n\nstruct GraphNode *process_geo_layout(struct AllocOnlyPool *a0, void *segptr);\n\n#endif // GEO_LAYOUT_H\n"
  },
  {
    "path": "src/engine/graph_node.c",
    "content": "#include <ultra64.h>\n#include \"sm64.h\"\n\n#include \"game/level_update.h\"\n#include \"math_util.h\"\n#include \"game/memory.h\"\n#include \"graph_node.h\"\n#include \"game/rendering_graph_node.h\"\n#include \"game/area.h\"\n#include \"geo_layout.h\"\n\n// unused Mtx(s)\ns16 identityMtx[4][4] = { { 1, 0, 0, 0 }, { 0, 1, 0, 0 }, { 0, 0, 1, 0 }, { 0, 0, 0, 1 } };\ns16 zeroMtx[4][4] = { { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } };\n\nVec3f gVec3fZero = { 0.0f, 0.0f, 0.0f };\nVec3s gVec3sZero = { 0, 0, 0 };\nVec3f gVec3fOne = { 1.0f, 1.0f, 1.0f };\nUNUSED Vec3s gVec3sOne = { 1, 1, 1 };\n\n/**\n * Initialize a geo node with a given type. Sets all links such that there\n * are no siblings, parent or children for this node.\n */\nvoid init_scene_graph_node_links(struct GraphNode *graphNode, s32 type) {\n    graphNode->type = type;\n    graphNode->flags = GRAPH_RENDER_ACTIVE;\n    graphNode->prev = graphNode;\n    graphNode->next = graphNode;\n    graphNode->parent = NULL;\n    graphNode->children = NULL;\n}\n\n/**\n * Allocated and returns a newly created root node\n */\nstruct GraphNodeRoot *init_graph_node_root(struct AllocOnlyPool *pool, struct GraphNodeRoot *graphNode,\n                                           s16 areaIndex, s16 x, s16 y, s16 width, s16 height) {\n    if (pool != NULL) {\n        graphNode = alloc_only_pool_alloc(pool, sizeof(struct GraphNodeRoot));\n    }\n\n    if (graphNode != NULL) {\n        init_scene_graph_node_links(&graphNode->node, GRAPH_NODE_TYPE_ROOT);\n\n        graphNode->areaIndex = areaIndex;\n        graphNode->unk15 = 0;\n        graphNode->x = x;\n        graphNode->y = y;\n        graphNode->width = width;\n        graphNode->height = height;\n        graphNode->views = NULL;\n        graphNode->numViews = 0;\n    }\n\n    return graphNode;\n}\n\n/**\n * Allocates and returns a newly created otrhographic projection node\n */\nstruct GraphNodeOrthoProjection *\ninit_graph_node_ortho_projection(struct AllocOnlyPool *pool, struct GraphNodeOrthoProjection *graphNode,\n                                 f32 scale) {\n    if (pool != NULL) {\n        graphNode = alloc_only_pool_alloc(pool, sizeof(struct GraphNodeOrthoProjection));\n    }\n\n    if (graphNode != NULL) {\n        init_scene_graph_node_links(&graphNode->node, GRAPH_NODE_TYPE_ORTHO_PROJECTION);\n        graphNode->scale = scale;\n    }\n\n    return graphNode;\n}\n\n/**\n * Allocates and returns a newly created perspective node\n */\nstruct GraphNodePerspective *init_graph_node_perspective(struct AllocOnlyPool *pool,\n                                                         struct GraphNodePerspective *graphNode,\n                                                         f32 fov, s16 near, s16 far,\n                                                         GraphNodeFunc nodeFunc, s32 unused) {\n    if (pool != NULL) {\n        graphNode = alloc_only_pool_alloc(pool, sizeof(struct GraphNodePerspective));\n    }\n\n    if (graphNode != NULL) {\n        init_scene_graph_node_links(&graphNode->fnNode.node, GRAPH_NODE_TYPE_PERSPECTIVE);\n\n        graphNode->fov = fov;\n        graphNode->near = near;\n        graphNode->far = far;\n        graphNode->fnNode.func = nodeFunc;\n        graphNode->unused = unused;\n\n        if (nodeFunc != NULL) {\n            nodeFunc(GEO_CONTEXT_CREATE, &graphNode->fnNode.node, pool);\n        }\n    }\n\n    return graphNode;\n}\n\n/**\n * Allocates and returns a newly created start node\n */\nstruct GraphNodeStart *init_graph_node_start(struct AllocOnlyPool *pool,\n                                             struct GraphNodeStart *graphNode) {\n    if (pool != NULL) {\n        graphNode = alloc_only_pool_alloc(pool, sizeof(struct GraphNodeStart));\n    }\n\n    if (graphNode != NULL) {\n        init_scene_graph_node_links(&graphNode->node, GRAPH_NODE_TYPE_START);\n    }\n\n    return graphNode;\n}\n\n/**\n * Allocates and returns a newly created master list node\n */\nstruct GraphNodeMasterList *init_graph_node_master_list(struct AllocOnlyPool *pool,\n                                                        struct GraphNodeMasterList *graphNode, s16 on) {\n    if (pool != NULL) {\n        graphNode = alloc_only_pool_alloc(pool, sizeof(struct GraphNodeMasterList));\n    }\n\n    if (graphNode != NULL) {\n        init_scene_graph_node_links(&graphNode->node, GRAPH_NODE_TYPE_MASTER_LIST);\n\n        if (on) {\n            graphNode->node.flags |= GRAPH_RENDER_Z_BUFFER;\n        }\n    }\n\n    return graphNode;\n}\n\n/**\n * Allocates and returns a newly created render range node\n */\nstruct GraphNodeLevelOfDetail *init_graph_node_render_range(struct AllocOnlyPool *pool,\n                                                            struct GraphNodeLevelOfDetail *graphNode,\n                                                            s16 minDistance, s16 maxDistance) {\n    if (pool != NULL) {\n        graphNode = alloc_only_pool_alloc(pool, sizeof(struct GraphNodeLevelOfDetail));\n    }\n\n    if (graphNode != NULL) {\n        init_scene_graph_node_links(&graphNode->node, GRAPH_NODE_TYPE_LEVEL_OF_DETAIL);\n        graphNode->minDistance = minDistance;\n        graphNode->maxDistance = maxDistance;\n    }\n\n    return graphNode;\n}\n\n/**\n * Allocates and returns a newly created switch case node\n */\nstruct GraphNodeSwitchCase *init_graph_node_switch_case(struct AllocOnlyPool *pool,\n                                                        struct GraphNodeSwitchCase *graphNode,\n                                                        s16 numCases, s16 selectedCase,\n                                                        GraphNodeFunc nodeFunc, s32 unused) {\n    if (pool != NULL) {\n        graphNode = alloc_only_pool_alloc(pool, sizeof(struct GraphNodeSwitchCase));\n    }\n\n    if (graphNode != NULL) {\n        init_scene_graph_node_links(&graphNode->fnNode.node, GRAPH_NODE_TYPE_SWITCH_CASE);\n        graphNode->numCases = numCases;\n        graphNode->selectedCase = selectedCase;\n        graphNode->fnNode.func = nodeFunc;\n        graphNode->unused = unused;\n\n        if (nodeFunc != NULL) {\n            nodeFunc(GEO_CONTEXT_CREATE, &graphNode->fnNode.node, pool);\n        }\n    }\n\n    return graphNode;\n}\n\n/**\n * Allocates and returns a newly created camera node\n */\nstruct GraphNodeCamera *init_graph_node_camera(struct AllocOnlyPool *pool,\n                                               struct GraphNodeCamera *graphNode, f32 *pos,\n                                               f32 *focus, GraphNodeFunc func, s32 mode) {\n    if (pool != NULL) {\n        graphNode = alloc_only_pool_alloc(pool, sizeof(struct GraphNodeCamera));\n    }\n\n    if (graphNode != NULL) {\n        init_scene_graph_node_links(&graphNode->fnNode.node, GRAPH_NODE_TYPE_CAMERA);\n        vec3f_copy(graphNode->pos, pos);\n        vec3f_copy(graphNode->focus, focus);\n        graphNode->fnNode.func = func;\n        graphNode->config.mode = mode;\n        graphNode->roll = 0;\n        graphNode->rollScreen = 0;\n\n        if (func != NULL) {\n            func(GEO_CONTEXT_CREATE, &graphNode->fnNode.node, pool);\n        }\n    }\n\n    return graphNode;\n}\n\n/**\n * Allocates and returns a newly created translation rotation node\n */\nstruct GraphNodeTranslationRotation *\ninit_graph_node_translation_rotation(struct AllocOnlyPool *pool,\n                                     struct GraphNodeTranslationRotation *graphNode, s32 drawingLayer,\n                                     void *displayList, Vec3s translation, Vec3s rotation) {\n    if (pool != NULL) {\n        graphNode = alloc_only_pool_alloc(pool, sizeof(struct GraphNodeTranslationRotation));\n    }\n\n    if (graphNode != NULL) {\n        init_scene_graph_node_links(&graphNode->node, GRAPH_NODE_TYPE_TRANSLATION_ROTATION);\n\n        vec3s_copy(graphNode->translation, translation);\n        vec3s_copy(graphNode->rotation, rotation);\n        graphNode->node.flags = (drawingLayer << 8) | (graphNode->node.flags & 0xFF);\n        graphNode->displayList = displayList;\n    }\n\n    return graphNode;\n}\n\n/**\n * Allocates and returns a newly created translation node\n */\nstruct GraphNodeTranslation *init_graph_node_translation(struct AllocOnlyPool *pool,\n                                                         struct GraphNodeTranslation *graphNode,\n                                                         s32 drawingLayer, void *displayList,\n                                                         Vec3s translation) {\n    if (pool != NULL) {\n        graphNode = alloc_only_pool_alloc(pool, sizeof(struct GraphNodeTranslation));\n    }\n\n    if (graphNode != NULL) {\n        init_scene_graph_node_links(&graphNode->node, GRAPH_NODE_TYPE_TRANSLATION);\n\n        vec3s_copy(graphNode->translation, translation);\n        graphNode->node.flags = (drawingLayer << 8) | (graphNode->node.flags & 0xFF);\n        graphNode->displayList = displayList;\n    }\n\n    return graphNode;\n}\n\n/**\n * Allocates and returns a newly created rotation node\n */\nstruct GraphNodeRotation *init_graph_node_rotation(struct AllocOnlyPool *pool,\n                                                   struct GraphNodeRotation *graphNode,\n                                                   s32 drawingLayer, void *displayList,\n                                                   Vec3s rotation) {\n    if (pool != NULL) {\n        graphNode = alloc_only_pool_alloc(pool, sizeof(struct GraphNodeRotation));\n    }\n\n    if (graphNode != NULL) {\n        init_scene_graph_node_links(&graphNode->node, GRAPH_NODE_TYPE_ROTATION);\n        vec3s_copy(graphNode->rotation, rotation);\n        graphNode->node.flags = (drawingLayer << 8) | (graphNode->node.flags & 0xFF);\n        graphNode->displayList = displayList;\n    }\n\n    return graphNode;\n}\n\n/**\n * Allocates and returns a newly created scaling node\n */\nstruct GraphNodeScale *init_graph_node_scale(struct AllocOnlyPool *pool,\n                                             struct GraphNodeScale *graphNode, s32 drawingLayer,\n                                             void *displayList, f32 scale) {\n    if (pool != NULL) {\n        graphNode = alloc_only_pool_alloc(pool, sizeof(struct GraphNodeScale));\n    }\n\n    if (graphNode != NULL) {\n        init_scene_graph_node_links(&graphNode->node, GRAPH_NODE_TYPE_SCALE);\n        graphNode->node.flags = (drawingLayer << 8) | (graphNode->node.flags & 0xFF);\n        graphNode->scale = scale;\n        graphNode->displayList = displayList;\n    }\n\n    return graphNode;\n}\n\n/**\n * Allocates and returns a newly created object node\n */\nstruct GraphNodeObject *init_graph_node_object(struct AllocOnlyPool *pool,\n                                               struct GraphNodeObject *graphNode,\n                                               struct GraphNode *sharedChild, Vec3f pos, Vec3s angle,\n                                               Vec3f scale) {\n    if (pool != NULL) {\n        graphNode = alloc_only_pool_alloc(pool, sizeof(struct GraphNodeObject));\n    }\n\n    if (graphNode != NULL) {\n        init_scene_graph_node_links(&graphNode->node, GRAPH_NODE_TYPE_OBJECT);\n        vec3f_copy(graphNode->pos, pos);\n        vec3f_copy(graphNode->scale, scale);\n        vec3s_copy(graphNode->angle, angle);\n        graphNode->sharedChild = sharedChild;\n        graphNode->throwMatrix = NULL;\n        graphNode->animInfo.animID = 0;\n        graphNode->animInfo.curAnim = NULL;\n        graphNode->animInfo.animFrame = 0;\n        graphNode->animInfo.animFrameAccelAssist = 0;\n        graphNode->animInfo.animAccel = 0x10000;\n        graphNode->animInfo.animTimer = 0;\n        graphNode->node.flags |= GRAPH_RENDER_HAS_ANIMATION;\n    }\n\n    return graphNode;\n}\n\n/**\n * Allocates and returns a newly created frustum culling radius node\n */\nstruct GraphNodeCullingRadius *init_graph_node_culling_radius(struct AllocOnlyPool *pool,\n                                                              struct GraphNodeCullingRadius *graphNode,\n                                                              s16 radius) {\n    if (pool != NULL) {\n        graphNode = alloc_only_pool_alloc(pool, sizeof(struct GraphNodeCullingRadius));\n    }\n\n    if (graphNode != NULL) {\n        init_scene_graph_node_links(&graphNode->node, GRAPH_NODE_TYPE_CULLING_RADIUS);\n        graphNode->cullingRadius = radius;\n    }\n\n    return graphNode;\n}\n\n/**\n * Allocates and returns a newly created animated part node\n */\nstruct GraphNodeAnimatedPart *init_graph_node_animated_part(struct AllocOnlyPool *pool,\n                                                            struct GraphNodeAnimatedPart *graphNode,\n                                                            s32 drawingLayer, void *displayList,\n                                                            Vec3s translation) {\n    if (pool != NULL) {\n        graphNode = alloc_only_pool_alloc(pool, sizeof(struct GraphNodeAnimatedPart));\n    }\n\n    if (graphNode != NULL) {\n        init_scene_graph_node_links(&graphNode->node, GRAPH_NODE_TYPE_ANIMATED_PART);\n        vec3s_copy(graphNode->translation, translation);\n        graphNode->node.flags = (drawingLayer << 8) | (graphNode->node.flags & 0xFF);\n        graphNode->displayList = displayList;\n    }\n\n    return graphNode;\n}\n\n/**\n * Allocates and returns a newly created billboard node\n */\nstruct GraphNodeBillboard *init_graph_node_billboard(struct AllocOnlyPool *pool,\n                                                     struct GraphNodeBillboard *graphNode,\n                                                     s32 drawingLayer, void *displayList,\n                                                     Vec3s translation) {\n    if (pool != NULL) {\n        graphNode = alloc_only_pool_alloc(pool, sizeof(struct GraphNodeBillboard));\n    }\n\n    if (graphNode != NULL) {\n        init_scene_graph_node_links(&graphNode->node, GRAPH_NODE_TYPE_BILLBOARD);\n        vec3s_copy(graphNode->translation, translation);\n        graphNode->node.flags = (drawingLayer << 8) | (graphNode->node.flags & 0xFF);\n        graphNode->displayList = displayList;\n    }\n\n    return graphNode;\n}\n\n/**\n * Allocates and returns a newly created displaylist node\n */\nstruct GraphNodeDisplayList *init_graph_node_display_list(struct AllocOnlyPool *pool,\n                                                          struct GraphNodeDisplayList *graphNode,\n                                                          s32 drawingLayer, void *displayList) {\n    if (pool != NULL) {\n        graphNode = alloc_only_pool_alloc(pool, sizeof(struct GraphNodeDisplayList));\n    }\n\n    if (graphNode != NULL) {\n        init_scene_graph_node_links(&graphNode->node, GRAPH_NODE_TYPE_DISPLAY_LIST);\n        graphNode->node.flags = (drawingLayer << 8) | (graphNode->node.flags & 0xFF);\n        graphNode->displayList = displayList;\n    }\n\n    return graphNode;\n}\n\n/**\n * Allocates and returns a newly created shadow node\n */\nstruct GraphNodeShadow *init_graph_node_shadow(struct AllocOnlyPool *pool,\n                                               struct GraphNodeShadow *graphNode, s16 shadowScale,\n                                               u8 shadowSolidity, u8 shadowType) {\n    if (pool != NULL) {\n        graphNode = alloc_only_pool_alloc(pool, sizeof(struct GraphNodeShadow));\n    }\n\n    if (graphNode != NULL) {\n        init_scene_graph_node_links(&graphNode->node, GRAPH_NODE_TYPE_SHADOW);\n        graphNode->shadowScale = shadowScale;\n        graphNode->shadowSolidity = shadowSolidity;\n        graphNode->shadowType = shadowType;\n    }\n\n    return graphNode;\n}\n\n/**\n * Allocates and returns a newly created object parent node\n */\nstruct GraphNodeObjectParent *init_graph_node_object_parent(struct AllocOnlyPool *pool,\n                                                            struct GraphNodeObjectParent *graphNode,\n                                                            struct GraphNode *sharedChild) {\n    if (pool != NULL) {\n        graphNode = alloc_only_pool_alloc(pool, sizeof(struct GraphNodeObjectParent));\n    }\n\n    if (graphNode != NULL) {\n        init_scene_graph_node_links(&graphNode->node, GRAPH_NODE_TYPE_OBJECT_PARENT);\n        graphNode->sharedChild = sharedChild;\n    }\n\n    return graphNode;\n}\n\n/**\n * Allocates and returns a newly created generated node\n */\nstruct GraphNodeGenerated *init_graph_node_generated(struct AllocOnlyPool *pool,\n                                                     struct GraphNodeGenerated *graphNode,\n                                                     GraphNodeFunc gfxFunc, s32 parameter) {\n    if (pool != NULL) {\n        graphNode = alloc_only_pool_alloc(pool, sizeof(struct GraphNodeGenerated));\n    }\n\n    if (graphNode != NULL) {\n        init_scene_graph_node_links(&graphNode->fnNode.node, GRAPH_NODE_TYPE_GENERATED_LIST);\n        graphNode->fnNode.func = gfxFunc;\n        graphNode->parameter = parameter;\n\n        if (gfxFunc != NULL) {\n            gfxFunc(GEO_CONTEXT_CREATE, &graphNode->fnNode.node, pool);\n        }\n    }\n\n    return graphNode;\n}\n\n/**\n * Allocates and returns a newly created background node\n */\nstruct GraphNodeBackground *init_graph_node_background(struct AllocOnlyPool *pool,\n                                                       struct GraphNodeBackground *graphNode,\n                                                       u16 background, GraphNodeFunc backgroundFunc,\n                                                       s32 zero) {\n    if (pool != NULL) {\n        graphNode = alloc_only_pool_alloc(pool, sizeof(struct GraphNodeBackground));\n    }\n\n    if (graphNode != NULL) {\n        init_scene_graph_node_links(&graphNode->fnNode.node, GRAPH_NODE_TYPE_BACKGROUND);\n\n        graphNode->background = (background << 16) | background;\n        graphNode->fnNode.func = backgroundFunc;\n        graphNode->unused = zero; // always 0, unused\n\n        if (backgroundFunc != NULL) {\n            backgroundFunc(GEO_CONTEXT_CREATE, &graphNode->fnNode.node, pool);\n        }\n    }\n\n    return graphNode;\n}\n\n/**\n * Allocates and returns a newly created held object node\n */\nstruct GraphNodeHeldObject *init_graph_node_held_object(struct AllocOnlyPool *pool,\n                                                        struct GraphNodeHeldObject *graphNode,\n                                                        struct Object *objNode,\n                                                        Vec3s translation,\n                                                        GraphNodeFunc nodeFunc, s32 playerIndex) {\n    if (pool != NULL) {\n        graphNode = alloc_only_pool_alloc(pool, sizeof(struct GraphNodeHeldObject));\n    }\n\n    if (graphNode != NULL) {\n        init_scene_graph_node_links(&graphNode->fnNode.node, GRAPH_NODE_TYPE_HELD_OBJ);\n        vec3s_copy(graphNode->translation, translation);\n        graphNode->objNode = objNode;\n        graphNode->fnNode.func = nodeFunc;\n        graphNode->playerIndex = playerIndex;\n\n        if (nodeFunc != NULL) {\n            nodeFunc(GEO_CONTEXT_CREATE, &graphNode->fnNode.node, pool);\n        }\n    }\n\n    return graphNode;\n}\n\n/**\n * Adds 'childNode' to the end of the list children from 'parent'\n */\nstruct GraphNode *geo_add_child(struct GraphNode *parent, struct GraphNode *childNode) {\n    struct GraphNode *parentFirstChild;\n    struct GraphNode *parentLastChild;\n\n    if (childNode != NULL) {\n        childNode->parent = parent;\n        parentFirstChild = parent->children;\n\n        if (parentFirstChild == NULL) {\n            parent->children = childNode;\n            childNode->prev = childNode;\n            childNode->next = childNode;\n        } else {\n            parentLastChild = parentFirstChild->prev;\n            childNode->prev = parentLastChild;\n            childNode->next = parentFirstChild;\n            parentFirstChild->prev = childNode;\n            parentLastChild->next = childNode;\n        }\n    }\n\n    return childNode;\n}\n\n/**\n * Remove a node from the scene graph. It changes the links with its\n * siblings and with its parent, it doesn't deallocate the memory\n * since geo nodes are allocated in a pointer-bumping pool that\n * gets thrown out when changing areas.\n */\nstruct GraphNode *geo_remove_child(struct GraphNode *graphNode) {\n    struct GraphNode *parent;\n    struct GraphNode **firstChild;\n\n    parent = graphNode->parent;\n    firstChild = &parent->children;\n\n    // Remove link with siblings\n    graphNode->prev->next = graphNode->next;\n    graphNode->next->prev = graphNode->prev;\n\n    // If this node was the first child, a new first child must be chosen\n    if (*firstChild == graphNode) {\n        // The list is circular, so this checks whether it was the only child\n        if (graphNode->next == graphNode) {\n            *firstChild = NULL; // Parent has no children anymore\n        } else {\n            *firstChild = graphNode->next; // Choose a new first child\n        }\n    }\n\n    return parent;\n}\n\n/**\n * Reorders the given node so it's the first child of its parent.\n * This is called on the Mario object when he is spawned. That's why Mario's\n * object is always drawn before any other objects. (Note that the geo order\n * is independent from processing group order, where Mario is not first.)\n */\nstruct GraphNode *geo_make_first_child(struct GraphNode *newFirstChild) {\n    struct GraphNode *lastSibling;\n    struct GraphNode *parent;\n    struct GraphNode **firstChild;\n\n    parent = newFirstChild->parent;\n    firstChild = &parent->children;\n\n    if (*firstChild != newFirstChild) {\n        if ((*firstChild)->prev != newFirstChild) {\n            newFirstChild->prev->next = newFirstChild->next;\n            newFirstChild->next->prev = newFirstChild->prev;\n            lastSibling = (*firstChild)->prev;\n            newFirstChild->prev = lastSibling;\n            newFirstChild->next = *firstChild;\n            (*firstChild)->prev = newFirstChild;\n            lastSibling->next = newFirstChild;\n        }\n        *firstChild = newFirstChild;\n    }\n\n    return parent;\n}\n\n/**\n * Helper function for geo_call_global_function_nodes that recursively\n * traverses the scene graph and calls the functions of global nodes.\n */\nvoid geo_call_global_function_nodes_helper(struct GraphNode *graphNode, s32 callContext) {\n    struct GraphNode **globalPtr;\n    struct GraphNode *curNode;\n    struct FnGraphNode *asFnNode;\n\n    curNode = graphNode;\n\n    do {\n        asFnNode = (struct FnGraphNode *) curNode;\n\n        if (curNode->type & GRAPH_NODE_TYPE_FUNCTIONAL) {\n            if (asFnNode->func != NULL) {\n                asFnNode->func(callContext, curNode, NULL);\n            }\n        }\n\n        if (curNode->children != NULL) {\n            switch (curNode->type) {\n                case GRAPH_NODE_TYPE_MASTER_LIST:\n                    globalPtr = (struct GraphNode **) &gCurGraphNodeMasterList;\n                    break;\n                case GRAPH_NODE_TYPE_PERSPECTIVE:\n                    globalPtr = (struct GraphNode **) &gCurGraphNodeCamFrustum;\n                    break;\n                case GRAPH_NODE_TYPE_CAMERA:\n                    globalPtr = (struct GraphNode **) &gCurGraphNodeCamera;\n                    break;\n                case GRAPH_NODE_TYPE_OBJECT:\n                    globalPtr = (struct GraphNode **) &gCurGraphNodeObject;\n                    break;\n                default:\n                    globalPtr = NULL;\n                    break;\n            }\n\n            if (globalPtr != NULL) {\n                *globalPtr = curNode;\n            }\n\n            geo_call_global_function_nodes_helper(curNode->children, callContext);\n\n            if (globalPtr != NULL) {\n                *globalPtr = NULL;\n            }\n        }\n    } while ((curNode = curNode->next) != graphNode);\n}\n\n/**\n * Call the update functions of geo nodes that are stored in global variables.\n * These variables include gCurGraphNodeMasterList, gCurGraphNodeCamFrustum,\n * gCurGraphNodeCamera and gCurGraphNodeObject.\n * callContext is one of the GEO_CONTEXT_ defines.\n * The graphNode argument should be of type GraphNodeRoot.\n */\nvoid geo_call_global_function_nodes(struct GraphNode *graphNode, s32 callContext) {\n    if (graphNode->flags & GRAPH_RENDER_ACTIVE) {\n        gCurGraphNodeRoot = (struct GraphNodeRoot *) graphNode;\n\n        if (graphNode->children != NULL) {\n            geo_call_global_function_nodes_helper(graphNode->children, callContext);\n        }\n\n        gCurGraphNodeRoot = 0;\n    }\n}\n\n/**\n * When objects are cleared, this is called on all object nodes (loaded or unloaded).\n */\nvoid geo_reset_object_node(struct GraphNodeObject *graphNode) {\n    init_graph_node_object(NULL, graphNode, 0, gVec3fZero, gVec3sZero, gVec3fOne);\n\n    geo_add_child(&gObjParentGraphNode, &graphNode->node);\n    graphNode->node.flags &= ~GRAPH_RENDER_ACTIVE;\n}\n\n/**\n * Initialize an object node using the given parameters\n */\nvoid geo_obj_init(struct GraphNodeObject *graphNode, void *sharedChild, Vec3f pos, Vec3s angle) {\n    vec3f_set(graphNode->scale, 1.0f, 1.0f, 1.0f);\n    vec3f_copy(graphNode->pos, pos);\n    vec3s_copy(graphNode->angle, angle);\n\n    graphNode->sharedChild = sharedChild;\n    graphNode->unk4C = 0;\n    graphNode->throwMatrix = NULL;\n    graphNode->animInfo.curAnim = NULL;\n\n    graphNode->node.flags |= GRAPH_RENDER_ACTIVE;\n    graphNode->node.flags &= ~GRAPH_RENDER_INVISIBLE;\n    graphNode->node.flags |= GRAPH_RENDER_HAS_ANIMATION;\n    graphNode->node.flags &= ~GRAPH_RENDER_BILLBOARD;\n}\n\n/**\n * Initialize and object node using the given SpawnInfo struct\n */\nvoid geo_obj_init_spawninfo(struct GraphNodeObject *graphNode, struct SpawnInfo *spawn) {\n    vec3f_set(graphNode->scale, 1.0f, 1.0f, 1.0f);\n    vec3s_copy(graphNode->angle, spawn->startAngle);\n\n    graphNode->pos[0] = (f32) spawn->startPos[0];\n    graphNode->pos[1] = (f32) spawn->startPos[1];\n    graphNode->pos[2] = (f32) spawn->startPos[2];\n\n    graphNode->areaIndex = spawn->areaIndex;\n    graphNode->activeAreaIndex = spawn->activeAreaIndex;\n    graphNode->sharedChild = spawn->model;\n    graphNode->unk4C = spawn;\n    graphNode->throwMatrix = NULL;\n    graphNode->animInfo.curAnim = 0;\n\n    graphNode->node.flags |= GRAPH_RENDER_ACTIVE;\n    graphNode->node.flags &= ~GRAPH_RENDER_INVISIBLE;\n    graphNode->node.flags |= GRAPH_RENDER_HAS_ANIMATION;\n    graphNode->node.flags &= ~GRAPH_RENDER_BILLBOARD;\n}\n\n/**\n * Initialize the animation of an object node\n */\nvoid geo_obj_init_animation(struct GraphNodeObject *graphNode, struct Animation **animPtrAddr) {\n    struct Animation **animSegmented = segmented_to_virtual(animPtrAddr);\n    struct Animation *anim = segmented_to_virtual(*animSegmented);\n\n    if (graphNode->animInfo.curAnim != anim) {\n        graphNode->animInfo.curAnim = anim;\n        graphNode->animInfo.animFrame = anim->startFrame + ((anim->flags & ANIM_FLAG_BACKWARD) ? 1 : -1);\n        graphNode->animInfo.animAccel = 0;\n        graphNode->animInfo.animYTrans = 0;\n    }\n}\n\n/**\n * Initialize the animation of an object node\n */\nvoid geo_obj_init_animation_accel(struct GraphNodeObject *graphNode, struct Animation **animPtrAddr, u32 animAccel) {\n    struct Animation **animSegmented = segmented_to_virtual(animPtrAddr);\n    struct Animation *anim = segmented_to_virtual(*animSegmented);\n\n    if (graphNode->animInfo.curAnim != anim) {\n        graphNode->animInfo.curAnim = anim;\n        graphNode->animInfo.animYTrans = 0;\n        graphNode->animInfo.animFrameAccelAssist =\n            (anim->startFrame << 16) + ((anim->flags & ANIM_FLAG_BACKWARD) ? animAccel : -animAccel);\n        graphNode->animInfo.animFrame = graphNode->animInfo.animFrameAccelAssist >> 16;\n    }\n\n    graphNode->animInfo.animAccel = animAccel;\n}\n\n/**\n * Retrieves an index into animation data based on the attribute pointer\n * An attribute is an x-, y- or z-component of the translation / rotation for a part\n * Each attribute is a pair of s16's, where the first s16 represents the maximum frame\n * and the second s16 the actual index. This index can be used to index in the array\n * with actual animation values.\n */\ns32 retrieve_animation_index(s32 frame, u16 **attributes) {\n    s32 result;\n\n    if (frame < (*attributes)[0]) {\n        result = (*attributes)[1] + frame;\n    } else {\n        result = (*attributes)[1] + (*attributes)[0] - 1;\n    }\n\n    *attributes += 2;\n\n    return result;\n}\n\n/**\n * Update the animation frame of an object. The animation flags determine\n * whether it plays forwards or backwards, and whether it stops or loops at\n * the end etc.\n */\ns16 geo_update_animation_frame(struct AnimInfo *obj, s32 *accelAssist) {\n    s32 result;\n    struct Animation *anim = obj->curAnim;\n\n    if (obj->animTimer == gAreaUpdateCounter || anim->flags & ANIM_FLAG_2) {\n        if (accelAssist != NULL) {\n            accelAssist[0] = obj->animFrameAccelAssist;\n        }\n\n        return obj->animFrame;\n    }\n\n    if (anim->flags & ANIM_FLAG_BACKWARD) {\n        if (obj->animAccel != 0) {\n            result = obj->animFrameAccelAssist - obj->animAccel;\n        } else {\n            result = (obj->animFrame - 1) << 16;\n        }\n\n        if (GET_HIGH_S16_OF_32(result) < anim->loopStart) {\n            if (anim->flags & ANIM_FLAG_NOLOOP) {\n                SET_HIGH_S16_OF_32(result, anim->loopStart);\n            } else {\n                SET_HIGH_S16_OF_32(result, anim->loopEnd - 1);\n            }\n        }\n    } else {\n        if (obj->animAccel != 0) {\n            result = obj->animFrameAccelAssist + obj->animAccel;\n        } else {\n            result = (obj->animFrame + 1) << 16;\n        }\n\n        if (GET_HIGH_S16_OF_32(result) >= anim->loopEnd) {\n            if (anim->flags & ANIM_FLAG_NOLOOP) {\n                SET_HIGH_S16_OF_32(result, anim->loopEnd - 1);\n            } else {\n                SET_HIGH_S16_OF_32(result, anim->loopStart);\n            }\n        }\n    }\n\n    if (accelAssist != 0) {\n        accelAssist[0] = result;\n    }\n\n    return GET_HIGH_S16_OF_32(result);\n}\n\n/**\n * Unused function to retrieve an object's current animation translation\n * Assumes that it has x, y and z data in animations, which isn't always the\n * case since some animation types only have vertical or lateral translation.\n * This might have been used for positioning the shadow under an object, which\n * currently happens in-line in geo_process_shadow where it also accounts for\n * animations without lateral translation.\n */\nvoid geo_retreive_animation_translation(struct GraphNodeObject *obj, Vec3f position) {\n    struct Animation *animation = obj->animInfo.curAnim;\n\n    if (animation != NULL) {\n        u16 *attribute = segmented_to_virtual((void *) animation->index);\n        s16 *values = segmented_to_virtual((void *) animation->values);\n\n        s16 frame = obj->animInfo.animFrame;\n\n        if (frame < 0) {\n            frame = 0;\n        }\n\n        position[0] = (f32) values[retrieve_animation_index(frame, &attribute)];\n        position[1] = (f32) values[retrieve_animation_index(frame, &attribute)];\n        position[2] = (f32) values[retrieve_animation_index(frame, &attribute)];\n    } else {\n        vec3f_set(position, 0, 0, 0);\n    }\n}\n\n/**\n * Unused function to find the root of the geo node tree, which should be a\n * GraphNodeRoot. If it is not for some reason, null is returned.\n */\nstruct GraphNodeRoot *geo_find_root(struct GraphNode *graphNode) {\n    struct GraphNodeRoot *resGraphNode = NULL;\n\n    while (graphNode->parent != NULL) {\n        graphNode = graphNode->parent;\n    }\n\n    if (graphNode->type == GRAPH_NODE_TYPE_ROOT) {\n        resGraphNode = (struct GraphNodeRoot *) graphNode;\n    }\n\n    return resGraphNode;\n}\n"
  },
  {
    "path": "src/engine/graph_node.h",
    "content": "#ifndef GRAPH_NODE_H\n#define GRAPH_NODE_H\n\n#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\n#include \"types.h\"\n#include \"game/memory.h\"\n\n#define GRAPH_RENDER_ACTIVE         (1 << 0)\n#define GRAPH_RENDER_CHILDREN_FIRST (1 << 1)\n#define GRAPH_RENDER_BILLBOARD      (1 << 2)\n#define GRAPH_RENDER_Z_BUFFER       (1 << 3)\n#define GRAPH_RENDER_INVISIBLE      (1 << 4)\n#define GRAPH_RENDER_HAS_ANIMATION  (1 << 5)\n\n// Whether the node type has a function pointer of type GraphNodeFunc\n#define GRAPH_NODE_TYPE_FUNCTIONAL            0x100\n\n// Type used for Bowser and an unused geo function in obj_behaviors.c\n#define GRAPH_NODE_TYPE_400                   0x400\n\n// The discriminant for different types of geo nodes\n#define GRAPH_NODE_TYPE_ROOT                  0x001\n#define GRAPH_NODE_TYPE_ORTHO_PROJECTION      0x002\n#define GRAPH_NODE_TYPE_PERSPECTIVE          (0x003 | GRAPH_NODE_TYPE_FUNCTIONAL)\n#define GRAPH_NODE_TYPE_MASTER_LIST           0x004\n#define GRAPH_NODE_TYPE_START                 0x00A\n#define GRAPH_NODE_TYPE_LEVEL_OF_DETAIL       0x00B\n#define GRAPH_NODE_TYPE_SWITCH_CASE          (0x00C | GRAPH_NODE_TYPE_FUNCTIONAL)\n#define GRAPH_NODE_TYPE_CAMERA               (0x014 | GRAPH_NODE_TYPE_FUNCTIONAL)\n#define GRAPH_NODE_TYPE_TRANSLATION_ROTATION  0x015\n#define GRAPH_NODE_TYPE_TRANSLATION           0x016\n#define GRAPH_NODE_TYPE_ROTATION              0x017\n#define GRAPH_NODE_TYPE_OBJECT                0x018\n#define GRAPH_NODE_TYPE_ANIMATED_PART         0x019\n#define GRAPH_NODE_TYPE_BILLBOARD             0x01A\n#define GRAPH_NODE_TYPE_DISPLAY_LIST          0x01B\n#define GRAPH_NODE_TYPE_SCALE                 0x01C\n#define GRAPH_NODE_TYPE_SHADOW                0x028\n#define GRAPH_NODE_TYPE_OBJECT_PARENT         0x029\n#define GRAPH_NODE_TYPE_GENERATED_LIST       (0x02A | GRAPH_NODE_TYPE_FUNCTIONAL)\n#define GRAPH_NODE_TYPE_BACKGROUND           (0x02C | GRAPH_NODE_TYPE_FUNCTIONAL)\n#define GRAPH_NODE_TYPE_HELD_OBJ             (0x02E | GRAPH_NODE_TYPE_FUNCTIONAL)\n#define GRAPH_NODE_TYPE_CULLING_RADIUS        0x02F\n\n// The number of master lists. A master list determines the order and render\n// mode with which display lists are drawn.\n#define GFX_NUM_MASTER_LISTS 8\n\n// Passed as first argument to a GraphNodeFunc to give information about in\n// which context it was called and what it is expected to do.\n#define GEO_CONTEXT_CREATE        0 // called when node is created from a geo command\n#define GEO_CONTEXT_RENDER        1 // called from rendering_graph_node.c\n#define GEO_CONTEXT_AREA_UNLOAD   2 // called when unloading an area\n#define GEO_CONTEXT_AREA_LOAD     3 // called when loading an area\n#define GEO_CONTEXT_AREA_INIT     4 // called when initializing the 8 areas\n#define GEO_CONTEXT_HELD_OBJ      5 // called when processing a GraphNodeHeldObj\n\n// The signature for a function stored in a geo node\n// The context argument depends on the callContext:\n// - for GEO_CONTEXT_CREATE it is the AllocOnlyPool from which the node was allocated\n// - for GEO_CONTEXT_RENDER or GEO_CONTEXT_HELD_OBJ it is the top of the float matrix stack with type Mat4\n// - for GEO_CONTEXT_AREA_* it is the root geo node\ntypedef Gfx *(*GraphNodeFunc)(s32 callContext, struct GraphNode *node, void *context);\n\n/** An extension of a graph node that includes a function pointer.\n *  Many graph node types have an update function that gets called\n *  when they are processed.\n */\nstruct FnGraphNode {\n    /*0x00*/ struct GraphNode node;\n    /*0x14*/ GraphNodeFunc func;\n};\n\n/** The very root of the geo tree. Specifies the viewport.\n */\nstruct GraphNodeRoot {\n    /*0x00*/ struct GraphNode node;\n    /*0x14*/ u8 areaIndex;\n    /*0x15*/ s8 unk15; // ?\n    /*0x16*/ s16 x;\n    /*0x18*/ s16 y;\n    /*0x1A*/ s16 width; // half width, 160\n    /*0x1C*/ s16 height; // half height\n    /*0x1E*/ s16 numViews; // number of entries in mystery array\n    /*0x20*/ struct GraphNode **views;\n};\n\n/** A node that sets up an orthographic projection based on the global\n *  root node. Used to draw the skybox image.\n */\nstruct GraphNodeOrthoProjection {\n    /*0x00*/ struct GraphNode node;\n    /*0x14*/ f32 scale;\n};\n\n/** A node that sets up a perspective projection. Used for drawing the\n *  game world. It does not set up the camera position, that is done by\n *  the child of this node, which has type GraphNodeCamera.\n */\nstruct GraphNodePerspective {\n    /*0x00*/ struct FnGraphNode fnNode;\n    /*0x18*/ s32 unused;\n    /*0x1C*/ f32 fov;   // horizontal field of view in degrees\n    /*0x20*/ s16 near;  // near clipping plane\n    /*0x22*/ s16 far;   // far clipping plane\n};\n\n/** An entry in the master list. It is a linked list of display lists\n *  carrying a transformation matrix.\n */\nstruct DisplayListNode {\n    Mtx *transform;\n    void *displayList;\n    struct DisplayListNode *next;\n};\n\n/** GraphNode that manages the 8 top-level display lists that will be drawn\n *  Each list has its own render mode, so for example water is drawn in a\n *  different master list than opaque objects.\n *  It also sets the z-buffer on before rendering and off after.\n */\nstruct GraphNodeMasterList {\n    /*0x00*/ struct GraphNode node;\n    /*0x14*/ struct DisplayListNode *listHeads[GFX_NUM_MASTER_LISTS];\n    /*0x34*/ struct DisplayListNode *listTails[GFX_NUM_MASTER_LISTS];\n};\n\n/** Simply used as a parent to group multiple children.\n *  Does not have any additional functionality.\n */\nstruct GraphNodeStart {\n    /*0x00*/ struct GraphNode node;\n};\n\n/** GraphNode that only renders its children if the current transformation matrix\n *  has a z-translation (in camera space) greater than minDistance and less than\n *  maxDistance.\n *  Usage examples: Mario has three level's of detail: Normal, low-poly arms only, and fully low-poly\n *  The tower in Whomp's fortress has two levels of detail.\n */\nstruct GraphNodeLevelOfDetail {\n    /*0x00*/ struct GraphNode node;\n    /*0x14*/ s16 minDistance;\n    /*0x16*/ s16 maxDistance;\n};\n\n/** GraphNode that renders exactly one of its children.\n *  Which one is rendered is determined by the field 'selectedCase'\n *  which is set in the node's function.\n *  Usage examples: room visibility, coin animation, blinking, Mario's power-up / hand pose / cap\n */\nstruct GraphNodeSwitchCase {\n    /*0x00*/ struct FnGraphNode fnNode;\n    /*0x18*/ s32 unused;\n    /*0x1C*/ s16 numCases;\n    /*0x1E*/ s16 selectedCase;\n};\n\n/**\n * GraphNode that specifies the location and aim of the camera.\n * When the roll is 0, the up vector is (0, 1, 0).\n */\nstruct GraphNodeCamera {\n    /*0x00*/ struct FnGraphNode fnNode;\n    /*0x18*/ union {\n        // When the node is created, a mode is assigned to the node.\n        // Later in geo_camera_main a Camera is allocated,\n        // the mode is passed to the struct, and the field is overridden\n        // by a pointer to the struct. Gotta save those 4 bytes.\n        s32 mode;\n        struct Camera *camera;\n    } config;\n    /*0x1C*/ Vec3f pos;\n    /*0x28*/ Vec3f focus;\n    /*0x34*/ Mat4 *matrixPtr; // pointer to look-at matrix of this camera as a Mat4\n    /*0x38*/ s16 roll; // roll in look at matrix. Doesn't account for light direction unlike rollScreen.\n    /*0x3A*/ s16 rollScreen; // rolls screen while keeping the light direction consistent\n};\n\n/** GraphNode that translates and rotates its children.\n *  Usage example: wing cap wings.\n *  There is a dprint function that sets the translation and rotation values\n *  based on the ENEMYINFO array.\n *  The display list can be null, in which case it won't draw anything itself.\n */\nstruct GraphNodeTranslationRotation {\n    /*0x00*/ struct GraphNode node;\n    /*0x14*/ void *displayList;\n    /*0x18*/ Vec3s translation;\n    /*0x1E*/ Vec3s rotation;\n};\n\n/** GraphNode that translates itself and its children.\n *  Usage example: SUPER MARIO logo letters in debug level select.\n *  The display list can be null, in which case it won't draw anything itself.\n */\nstruct GraphNodeTranslation {\n    /*0x00*/ struct GraphNode node;\n    /*0x14*/ void *displayList;\n    /*0x18*/ Vec3s translation;\n    u8 filler[2];\n};\n\n/** GraphNode that rotates itself and its children.\n *  Usage example: Mario torso / head rotation. Its parameters are dynamically\n *  set by a parent script node in that case.\n *  The display list can be null, in which case it won't draw anything itself.\n */\nstruct GraphNodeRotation {\n    /*0x00*/ struct GraphNode node;\n    /*0x14*/ void *displayList;\n    /*0x18*/ Vec3s rotation;\n    u8 filler[2];\n};\n\n/** GraphNode part that transforms itself and its children based on animation\n *  data. This animation data is not stored in the node itself but in global\n *  variables that are set when object nodes are processed if the object has\n *  animation.\n *  Used for Mario, enemies and anything else with animation data.\n *  The display list can be null, in which case it won't draw anything itself.\n */\nstruct GraphNodeAnimatedPart {\n    /*0x00*/ struct GraphNode node;\n    /*0x14*/ void *displayList;\n    /*0x18*/ Vec3s translation;\n};\n\n/** A GraphNode that draws a display list rotated in a way to always face the\n *  camera. Note that if the entire object is a billboard (like a coin or 1-up)\n *  then it simply sets the billboard flag for the entire object, this node is\n *  used for billboard parts (like a chuckya or goomba body).\n */\nstruct GraphNodeBillboard {\n    /*0x00*/ struct GraphNode node;\n    /*0x14*/ void *displayList;\n    /*0x18*/ Vec3s translation;\n};\n\n/** A GraphNode that simply draws a display list without doing any\n *  transformation beforehand. It does inherit the parent's transformation.\n */\nstruct GraphNodeDisplayList {\n    /*0x00*/ struct GraphNode node;\n    /*0x14*/ void *displayList;\n};\n\n/** GraphNode part that scales itself and its children.\n *  Usage example: Mario's fist or shoe, which grows when attacking. This can't\n *  be done with an animated part sine animation data doesn't support scaling.\n *  Note that many scaling animations (like a goomba getting stomped) happen on\n *  the entire object. This node is only used when a single part needs to be scaled.\n *  There is also a level command that scales the entire level, used for THI.\n *  The display list can be null, in which case it won't draw anything itself.\n */\nstruct GraphNodeScale {\n    /*0x00*/ struct GraphNode node;\n    /*0x14*/ void *displayList;\n    /*0x18*/ f32 scale;\n};\n\n/** GraphNode that draws a shadow under an object.\n *  Every object starts with a shadow node.\n *  The shadow type determines the shape (round or rectangular), vertices (4 or 9)\n *  and other features.\n */\nstruct GraphNodeShadow {\n    /*0x00*/ struct GraphNode node;\n    /*0x14*/ s16 shadowScale; // diameter (when a circle) or side (when a square) of shadow\n    /*0x16*/ u8 shadowSolidity; // opacity of shadow, 255 = opaque\n    /*0x17*/ u8 shadowType; // see ShadowType enum in shadow.h\n};\n\n/** GraphNode that contains as its sharedChild a group node containing all\n *  object nodes.\n */\nstruct GraphNodeObjectParent {\n    /*0x00*/ struct GraphNode node;\n    /*0x14*/ struct GraphNode *sharedChild;\n};\n\n/** GraphNode that draws display lists not directly in memory but generated by\n *  a function.\n *  Used for wobbling paintings, water, environment effects.\n *  It might not draw anything, it could also just update something.\n *  For example: there is a node that stops water flow when the game is paused.\n *  The parameter field gives extra context info. For shifting sand or paintings,\n *  it can determine which texture to use.\n */\nstruct GraphNodeGenerated {\n    /*0x00*/ struct FnGraphNode fnNode;\n    /*0x18*/ u32 parameter; // extra context for the function\n};\n\n/** GraphNode that draws a background image or a rectangle of a color.\n *  Drawn in an orthographic projection, used for skyboxes.\n */\nstruct GraphNodeBackground {\n    /*0x00*/ struct FnGraphNode fnNode;\n    /*0x18*/ s32 unused;\n    /*0x1C*/ s32 background; // background ID, or rgba5551 color if fnNode.func is null\n};\n\n/** Renders the object that Mario is holding.\n */\nstruct GraphNodeHeldObject {\n    /*0x00*/ struct FnGraphNode fnNode;\n    /*0x18*/ s32 playerIndex;\n    /*0x1C*/ struct Object *objNode;\n    /*0x20*/ Vec3s translation;\n};\n\n/** A node that allows an object to specify a different culling radius than the\n *  default one of 300. For this to work, it needs to be a direct child of the\n *  object node. Used for very large objects, such as shock wave rings that Bowser\n *  creates, tornadoes, the big eel.\n */\nstruct GraphNodeCullingRadius {\n    /*0x00*/ struct GraphNode node;\n    /*0x14*/ s16 cullingRadius; // specifies the 'sphere radius' for purposes of frustum culling\n    u8 filler[2];\n};\n\nextern struct GraphNodeMasterList *gCurGraphNodeMasterList;\nextern struct GraphNodePerspective *gCurGraphNodeCamFrustum;\nextern struct GraphNodeCamera *gCurGraphNodeCamera;\nextern struct GraphNodeHeldObject *gCurGraphNodeHeldObject;\nextern u16 gAreaUpdateCounter;\n\nextern struct GraphNode *gCurRootGraphNode;\nextern struct GraphNode *gCurGraphNodeList[];\n\nextern s16 gCurGraphNodeIndex;\n\nextern Vec3f gVec3fZero;\nextern Vec3s gVec3sZero;\nextern Vec3f gVec3fOne;\nextern Vec3s gVec3sOne;\n\nvoid init_scene_graph_node_links(struct GraphNode *graphNode, s32 type);\n\nstruct GraphNodeRoot *init_graph_node_root(struct AllocOnlyPool *pool, struct GraphNodeRoot *graphNode,\n                                           s16 areaIndex, s16 x, s16 y, s16 width, s16 height);\nstruct GraphNodeOrthoProjection *init_graph_node_ortho_projection(struct AllocOnlyPool *pool, struct GraphNodeOrthoProjection *graphNode, f32 scale);\nstruct GraphNodePerspective *init_graph_node_perspective(struct AllocOnlyPool *pool, struct GraphNodePerspective *graphNode,\n                                                         f32 fov, s16 near, s16 far, GraphNodeFunc nodeFunc, s32 unused);\nstruct GraphNodeStart *init_graph_node_start(struct AllocOnlyPool *pool, struct GraphNodeStart *graphNode);\nstruct GraphNodeMasterList *init_graph_node_master_list(struct AllocOnlyPool *pool, struct GraphNodeMasterList *graphNode, s16 on);\nstruct GraphNodeLevelOfDetail *init_graph_node_render_range(struct AllocOnlyPool *pool, struct GraphNodeLevelOfDetail *graphNode,\n                                                            s16 minDistance, s16 maxDistance);\nstruct GraphNodeSwitchCase *init_graph_node_switch_case(struct AllocOnlyPool *pool, struct GraphNodeSwitchCase *graphNode,\n                                                        s16 numCases, s16 selectedCase, GraphNodeFunc nodeFunc, s32 unused);\nstruct GraphNodeCamera *init_graph_node_camera(struct AllocOnlyPool *pool, struct GraphNodeCamera *graphNode,\n                                               f32 *pos, f32 *focus, GraphNodeFunc func, s32 mode);\nstruct GraphNodeTranslationRotation *init_graph_node_translation_rotation(struct AllocOnlyPool *pool, struct GraphNodeTranslationRotation *graphNode,\n                                                                          s32 drawingLayer, void *displayList, Vec3s translation, Vec3s rotation);\nstruct GraphNodeTranslation *init_graph_node_translation(struct AllocOnlyPool *pool, struct GraphNodeTranslation *graphNode,\n                                                         s32 drawingLayer, void *displayList, Vec3s translation);\nstruct GraphNodeRotation *init_graph_node_rotation(struct AllocOnlyPool *pool, struct GraphNodeRotation *graphNode,\n                                                   s32 drawingLayer, void *displayList, Vec3s rotation);\nstruct GraphNodeScale *init_graph_node_scale(struct AllocOnlyPool *pool, struct GraphNodeScale *graphNode,\n                                             s32 drawingLayer, void *displayList, f32 scale);\nstruct GraphNodeObject *init_graph_node_object(struct AllocOnlyPool *pool, struct GraphNodeObject *graphNode,\n                                               struct GraphNode *sharedChild, Vec3f pos, Vec3s angle, Vec3f scale);\nstruct GraphNodeCullingRadius *init_graph_node_culling_radius(struct AllocOnlyPool *pool, struct GraphNodeCullingRadius *graphNode, s16 radius);\nstruct GraphNodeAnimatedPart *init_graph_node_animated_part(struct AllocOnlyPool *pool, struct GraphNodeAnimatedPart *graphNode,\n                                                            s32 drawingLayer, void *displayList, Vec3s translation);\nstruct GraphNodeBillboard *init_graph_node_billboard(struct AllocOnlyPool *pool, struct GraphNodeBillboard *graphNode,\n                                                     s32 drawingLayer, void *displayList, Vec3s translation);\nstruct GraphNodeDisplayList *init_graph_node_display_list(struct AllocOnlyPool *pool, struct GraphNodeDisplayList *graphNode,\n                                                          s32 drawingLayer, void *displayList);\nstruct GraphNodeShadow *init_graph_node_shadow(struct AllocOnlyPool *pool, struct GraphNodeShadow *graphNode,\n                                               s16 shadowScale, u8 shadowSolidity, u8 shadowType);\nstruct GraphNodeObjectParent *init_graph_node_object_parent(struct AllocOnlyPool *pool, struct GraphNodeObjectParent *sp1c,\n                                                            struct GraphNode *sharedChild);\nstruct GraphNodeGenerated *init_graph_node_generated(struct AllocOnlyPool *pool, struct GraphNodeGenerated *sp1c,\n                                                     GraphNodeFunc gfxFunc, s32 parameter);\nstruct GraphNodeBackground *init_graph_node_background(struct AllocOnlyPool *pool, struct GraphNodeBackground *sp1c,\n                                                       u16 background, GraphNodeFunc backgroundFunc, s32 zero);\nstruct GraphNodeHeldObject *init_graph_node_held_object(struct AllocOnlyPool *pool, struct GraphNodeHeldObject *sp1c,\n                                                        struct Object *objNode, Vec3s translation,\n                                                        GraphNodeFunc nodeFunc, s32 playerIndex);\nstruct GraphNode *geo_add_child(struct GraphNode *parent, struct GraphNode *childNode);\nstruct GraphNode *geo_remove_child(struct GraphNode *graphNode);\nstruct GraphNode *geo_make_first_child(struct GraphNode *newFirstChild);\n\nvoid geo_call_global_function_nodes_helper(struct GraphNode *graphNode, s32 callContext);\nvoid geo_call_global_function_nodes(struct GraphNode *graphNode, s32 callContext);\n\nvoid geo_reset_object_node(struct GraphNodeObject *graphNode);\nvoid geo_obj_init(struct GraphNodeObject *graphNode, void *sharedChild, Vec3f pos, Vec3s angle);\nvoid geo_obj_init_spawninfo(struct GraphNodeObject *graphNode, struct SpawnInfo *spawn);\nvoid geo_obj_init_animation(struct GraphNodeObject *graphNode, struct Animation **animPtrAddr);\nvoid geo_obj_init_animation_accel(struct GraphNodeObject *graphNode, struct Animation **animPtrAddr, u32 animAccel);\n\ns32 retrieve_animation_index(s32 frame, u16 **attributes);\n\ns16 geo_update_animation_frame(struct AnimInfo *obj, s32 *accelAssist);\nvoid geo_retreive_animation_translation(struct GraphNodeObject *obj, Vec3f position);\n\nstruct GraphNodeRoot *geo_find_root(struct GraphNode *graphNode);\n\n// graph_node_manager\ns16 *read_vec3s_to_vec3f(Vec3f, s16 *src);\ns16 *read_vec3s(Vec3s dst, s16 *src);\ns16 *read_vec3s_angle(Vec3s dst, s16 *src);\nvoid register_scene_graph_node(struct GraphNode *graphNode);\n\n#endif // GRAPH_NODE_H\n"
  },
  {
    "path": "src/engine/graph_node_manager.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"types.h\"\n\n#include \"graph_node.h\"\n\n#if IS_64_BIT\nstatic s16 next_s16_in_geo_script(s16 **src) {\n    s16 ret;\n    if (((uintptr_t)(*src) & 7) == 4) {\n         *src += 2; // skip 32 bits\n    }\n    ret = *(*src)++;\n    if (((uintptr_t)(*src) & 7) == 4) {\n         *src += 2; // skip 32 bits\n    }\n    return ret;\n}\n#else\n#define next_s16_in_geo_script(src) (*(*src)++)\n#endif\n\n/**\n * Takes a pointer to three shorts (supplied by a geo layout script) and\n * copies it to the destination float vector.\n */\ns16 *read_vec3s_to_vec3f(Vec3f dst, s16 *src) {\n    dst[0] = next_s16_in_geo_script(&src);\n    dst[1] = next_s16_in_geo_script(&src);\n    dst[2] = next_s16_in_geo_script(&src);\n    return src;\n}\n\n/**\n * Takes a pointer to three shorts (supplied by a geo layout script) and\n * copies it to the destination vector. It's essentially a memcpy but consistent\n * with the other two 'geo-script vector to internal vector' functions.\n */\ns16 *read_vec3s(Vec3s dst, s16 *src) {\n    dst[0] = next_s16_in_geo_script(&src);\n    dst[1] = next_s16_in_geo_script(&src);\n    dst[2] = next_s16_in_geo_script(&src);\n    return src;\n}\n\n/**\n * Takes a pointer to three angles in degrees (supplied by a geo layout script)\n * and converts it to a vector of three in-game angle units in [-32768, 32767]\n * range.\n */\ns16 *read_vec3s_angle(Vec3s dst, s16 *src) {\n    dst[0] = (next_s16_in_geo_script(&src) << 15) / 180;\n    dst[1] = (next_s16_in_geo_script(&src) << 15) / 180;\n    dst[2] = (next_s16_in_geo_script(&src) << 15) / 180;\n    return src;\n}\n\n/**\n * Add the given graph node as a child to the current top of the gfx stack:\n * 'gCurGraphNodeList'. This is called from geo_layout commands to add nodes\n * to the scene graph.\n */\nvoid register_scene_graph_node(struct GraphNode *graphNode) {\n    if (graphNode != NULL) {\n        gCurGraphNodeList[gCurGraphNodeIndex] = graphNode;\n\n        if (gCurGraphNodeIndex == 0) {\n            if (gCurRootGraphNode == NULL) {\n                gCurRootGraphNode = graphNode;\n            }\n        } else {\n            if (gCurGraphNodeList[gCurGraphNodeIndex - 1]->type == GRAPH_NODE_TYPE_OBJECT_PARENT) {\n                ((struct GraphNodeObjectParent *) gCurGraphNodeList[gCurGraphNodeIndex - 1])\n                    ->sharedChild = graphNode;\n            } else {\n                geo_add_child(gCurGraphNodeList[gCurGraphNodeIndex - 1], graphNode);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/engine/level_script.c",
    "content": "#include <ultra64.h>\n#ifdef NO_SEGMENTED_MEMORY\n#include <string.h>\n#endif\n\n#include \"sm64.h\"\n#include \"audio/external.h\"\n#include \"buffers/framebuffers.h\"\n#include \"buffers/zbuffer.h\"\n#include \"game/area.h\"\n#include \"game/game_init.h\"\n#include \"game/mario.h\"\n#include \"game/memory.h\"\n#include \"game/object_helpers.h\"\n#include \"game/object_list_processor.h\"\n#include \"game/profiler.h\"\n#include \"game/save_file.h\"\n#include \"game/sound_init.h\"\n#include \"goddard/renderer.h\"\n#include \"geo_layout.h\"\n#include \"graph_node.h\"\n#include \"level_script.h\"\n#include \"level_misc_macros.h\"\n#include \"math_util.h\"\n#include \"surface_collision.h\"\n#include \"surface_load.h\"\n\n#define CMD_GET(type, offset) (*(type *) (CMD_PROCESS_OFFSET(offset) + (u8 *) sCurrentCmd))\n\n// These are equal\n#define CMD_NEXT ((struct LevelCommand *) ((u8 *) sCurrentCmd + (sCurrentCmd->size << CMD_SIZE_SHIFT)))\n#define NEXT_CMD ((struct LevelCommand *) ((sCurrentCmd->size << CMD_SIZE_SHIFT) + (u8 *) sCurrentCmd))\n\nstruct LevelCommand {\n    /*00*/ u8 type;\n    /*01*/ u8 size;\n    /*02*/ // variable sized argument data\n};\n\nenum ScriptStatus { SCRIPT_RUNNING = 1, SCRIPT_PAUSED = 0, SCRIPT_PAUSED2 = -1 };\n\nstatic uintptr_t sStack[32];\n\nstatic struct AllocOnlyPool *sLevelPool = NULL;\n\nstatic u16 sDelayFrames = 0;\nstatic u16 sDelayFrames2 = 0;\n\nstatic s16 sCurrAreaIndex = -1;\n\nstatic uintptr_t *sStackTop = sStack;\nstatic uintptr_t *sStackBase = NULL;\n\nstatic s16 sScriptStatus;\nstatic s32 sRegister;\nstatic struct LevelCommand *sCurrentCmd;\n\nstatic s32 eval_script_op(s8 op, s32 arg) {\n    s32 result = 0;\n\n    switch (op) {\n        case 0:\n            result = sRegister & arg;\n            break;\n        case 1:\n            result = !(sRegister & arg);\n            break;\n        case 2:\n            result = sRegister == arg;\n            break;\n        case 3:\n            result = sRegister != arg;\n            break;\n        case 4:\n            result = sRegister < arg;\n            break;\n        case 5:\n            result = sRegister <= arg;\n            break;\n        case 6:\n            result = sRegister > arg;\n            break;\n        case 7:\n            result = sRegister >= arg;\n            break;\n    }\n\n    return result;\n}\n\nstatic void level_cmd_load_and_execute(void) {\n    main_pool_push_state();\n    load_segment(CMD_GET(s16, 2), CMD_GET(void *, 4), CMD_GET(void *, 8), MEMORY_POOL_LEFT);\n\n    *sStackTop++ = (uintptr_t) NEXT_CMD;\n    *sStackTop++ = (uintptr_t) sStackBase;\n    sStackBase = sStackTop;\n\n    sCurrentCmd = segmented_to_virtual(CMD_GET(void *, 12));\n}\n\nstatic void level_cmd_exit_and_execute(void) {\n    void *targetAddr = CMD_GET(void *, 12);\n\n    main_pool_pop_state();\n    main_pool_push_state();\n\n    load_segment(CMD_GET(s16, 2), CMD_GET(void *, 4), CMD_GET(void *, 8),\n            MEMORY_POOL_LEFT);\n\n    sStackTop = sStackBase;\n    sCurrentCmd = segmented_to_virtual(targetAddr);\n}\n\nstatic void level_cmd_exit(void) {\n    main_pool_pop_state();\n\n    sStackTop = sStackBase;\n    sStackBase = (uintptr_t *) *(--sStackTop);\n    sCurrentCmd = (struct LevelCommand *) *(--sStackTop);\n}\n\nstatic void level_cmd_sleep(void) {\n    sScriptStatus = SCRIPT_PAUSED;\n\n    if (sDelayFrames == 0) {\n        sDelayFrames = CMD_GET(s16, 2);\n    } else if (--sDelayFrames == 0) {\n        sCurrentCmd = CMD_NEXT;\n        sScriptStatus = SCRIPT_RUNNING;\n    }\n}\n\nstatic void level_cmd_sleep2(void) {\n    sScriptStatus = SCRIPT_PAUSED2;\n\n    if (sDelayFrames2 == 0) {\n        sDelayFrames2 = CMD_GET(s16, 2);\n    } else if (--sDelayFrames2 == 0) {\n        sCurrentCmd = CMD_NEXT;\n        sScriptStatus = SCRIPT_RUNNING;\n    }\n}\n\nstatic void level_cmd_jump(void) {\n    sCurrentCmd = segmented_to_virtual(CMD_GET(void *, 4));\n}\n\nstatic void level_cmd_jump_and_link(void) {\n    *sStackTop++ = (uintptr_t) NEXT_CMD;\n    sCurrentCmd = segmented_to_virtual(CMD_GET(void *, 4));\n}\n\nstatic void level_cmd_return(void) {\n    sCurrentCmd = (struct LevelCommand *) *(--sStackTop);\n}\n\nstatic void level_cmd_jump_and_link_push_arg(void) {\n    *sStackTop++ = (uintptr_t) NEXT_CMD;\n    *sStackTop++ = CMD_GET(s16, 2);\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_jump_repeat(void) {\n    s32 val = *(sStackTop - 1);\n\n    if (val == 0) {\n        sCurrentCmd = (struct LevelCommand *) *(sStackTop - 2);\n    } else if (--val != 0) {\n        *(sStackTop - 1) = val;\n        sCurrentCmd = (struct LevelCommand *) *(sStackTop - 2);\n    } else {\n        sCurrentCmd = CMD_NEXT;\n        sStackTop -= 2;\n    }\n}\n\nstatic void level_cmd_loop_begin(void) {\n    *sStackTop++ = (uintptr_t) NEXT_CMD;\n    *sStackTop++ = 0;\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_loop_until(void) {\n    if (eval_script_op(CMD_GET(u8, 2), CMD_GET(s32, 4)) != 0) {\n        sCurrentCmd = CMD_NEXT;\n        sStackTop -= 2;\n    } else {\n        sCurrentCmd = (struct LevelCommand *) *(sStackTop - 2);\n    }\n}\n\nstatic void level_cmd_jump_if(void) {\n    if (eval_script_op(CMD_GET(u8, 2), CMD_GET(s32, 4)) != 0) {\n        sCurrentCmd = segmented_to_virtual(CMD_GET(void *, 8));\n    } else {\n        sCurrentCmd = CMD_NEXT;\n    }\n}\n\nstatic void level_cmd_jump_and_link_if(void) {\n    if (eval_script_op(CMD_GET(u8, 2), CMD_GET(s32, 4)) != 0) {\n        *sStackTop++ = (uintptr_t) NEXT_CMD;\n        sCurrentCmd = segmented_to_virtual(CMD_GET(void *, 8));\n    } else {\n        sCurrentCmd = CMD_NEXT;\n    }\n}\n\nstatic void level_cmd_skip_if(void) {\n    if (eval_script_op(CMD_GET(u8, 2), CMD_GET(s32, 4)) == 0) {\n        do {\n            sCurrentCmd = CMD_NEXT;\n        } while (sCurrentCmd->type == 0x0F || sCurrentCmd->type == 0x10);\n    }\n\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_skip(void) {\n    do {\n        sCurrentCmd = CMD_NEXT;\n    } while (sCurrentCmd->type == 0x10);\n\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_skippable_nop(void) {\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_call(void) {\n    typedef s32 (*Func)(s16, s32);\n    Func func = CMD_GET(Func, 4);\n    sRegister = func(CMD_GET(s16, 2), sRegister);\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_call_loop(void) {\n    typedef s32 (*Func)(s16, s32);\n    Func func = CMD_GET(Func, 4);\n    sRegister = func(CMD_GET(s16, 2), sRegister);\n\n    if (sRegister == 0) {\n        sScriptStatus = SCRIPT_PAUSED;\n    } else {\n        sScriptStatus = SCRIPT_RUNNING;\n        sCurrentCmd = CMD_NEXT;\n    }\n}\n\nstatic void level_cmd_set_register(void) {\n    sRegister = CMD_GET(s16, 2);\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_push_pool_state(void) {\n    main_pool_push_state();\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_pop_pool_state(void) {\n    main_pool_pop_state();\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_load_to_fixed_address(void) {\n    load_to_fixed_pool_addr(CMD_GET(void *, 4), CMD_GET(void *, 8), CMD_GET(void *, 12));\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_load_raw(void) {\n    load_segment(CMD_GET(s16, 2), CMD_GET(void *, 4), CMD_GET(void *, 8),\n            MEMORY_POOL_LEFT);\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_load_mio0(void) {\n    load_segment_decompress(CMD_GET(s16, 2), CMD_GET(void *, 4), CMD_GET(void *, 8));\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_load_mario_head(void) {\n    // TODO: Fix these hardcoded sizes\n    void *addr = main_pool_alloc(DOUBLE_SIZE_ON_64_BIT(0xE1000), MEMORY_POOL_LEFT);\n    if (addr != NULL) {\n        gdm_init(addr, DOUBLE_SIZE_ON_64_BIT(0xE1000));\n        gd_add_to_heap(gZBuffer, sizeof(gZBuffer)); // 0x25800\n        gd_add_to_heap(gFramebuffer0, 3 * sizeof(gFramebuffer0)); // 0x70800\n        gdm_setup();\n        gdm_maketestdl(CMD_GET(s16, 2));\n    } else {\n        CN_DEBUG_PRINTF((\"face anime memory overflow\\n\"));\n    }\n\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_load_mio0_texture(void) {\n    load_segment_decompress_heap(CMD_GET(s16, 2), CMD_GET(void *, 4), CMD_GET(void *, 8));\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_init_level(void) {\n    init_graph_node_start(NULL, (struct GraphNodeStart *) &gObjParentGraphNode);\n    clear_objects();\n    clear_areas();\n    main_pool_push_state();\n\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_clear_level(void) {\n    clear_objects();\n    clear_area_graph_nodes();\n    clear_areas();\n    main_pool_pop_state();\n\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_alloc_level_pool(void) {\n    if (sLevelPool == NULL) {\n        sLevelPool = alloc_only_pool_init(main_pool_available() - sizeof(struct AllocOnlyPool),\n                                          MEMORY_POOL_LEFT);\n    }\n\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_free_level_pool(void) {\n    s32 i;\n\n    alloc_only_pool_resize(sLevelPool, sLevelPool->usedSpace);\n    sLevelPool = NULL;\n\n    for (i = 0; i < 8; i++) {\n        if (gAreaData[i].terrainData != NULL) {\n            alloc_surface_pools();\n            break;\n        }\n    }\n\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_begin_area(void) {\n    u8 areaIndex = CMD_GET(u8, 2);\n    void *geoLayoutAddr = CMD_GET(void *, 4);\n\n    if (areaIndex < 8) {\n        struct GraphNodeRoot *screenArea =\n            (struct GraphNodeRoot *) process_geo_layout(sLevelPool, geoLayoutAddr);\n        struct GraphNodeCamera *node = (struct GraphNodeCamera *) screenArea->views[0];\n\n        sCurrAreaIndex = areaIndex;\n        screenArea->areaIndex = areaIndex;\n        gAreas[areaIndex].unk04 = screenArea;\n\n        if (node != NULL) {\n            gAreas[areaIndex].camera = (struct Camera *) node->config.camera;\n        } else {\n            gAreas[areaIndex].camera = NULL;\n        }\n    }\n\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_end_area(void) {\n    sCurrAreaIndex = -1;\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_load_model_from_dl(void) {\n    s16 val1 = CMD_GET(s16, 2) & 0x0FFF;\n    s16 val2 = ((u16)CMD_GET(s16, 2)) >> 12;\n    void *val3 = CMD_GET(void *, 4);\n\n    if (val1 < 256) {\n        gLoadedGraphNodes[val1] =\n            (struct GraphNode *) init_graph_node_display_list(sLevelPool, 0, val2, val3);\n    }\n\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_load_model_from_geo(void) {\n    s16 arg0 = CMD_GET(s16, 2);\n    void *arg1 = CMD_GET(void *, 4);\n\n    if (arg0 < 256) {\n        gLoadedGraphNodes[arg0] = process_geo_layout(sLevelPool, arg1);\n    }\n\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_23(void) {\n    union {\n        s32 i;\n        f32 f;\n    } arg2;\n\n    s16 model = CMD_GET(s16, 2) & 0x0FFF;\n    s16 arg0H = ((u16)CMD_GET(s16, 2)) >> 12;\n    void *arg1 = CMD_GET(void *, 4);\n    // load an f32, but using an integer load instruction for some reason (hence the union)\n    arg2.i = CMD_GET(s32, 8);\n\n    if (model < 256) {\n        // GraphNodeScale has a GraphNode at the top. This\n        // is being stored to the array, so cast the pointer.\n        gLoadedGraphNodes[model] =\n            (struct GraphNode *) init_graph_node_scale(sLevelPool, 0, arg0H, arg1, arg2.f);\n    }\n\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_init_mario(void) {\n    vec3s_set(gMarioSpawnInfo->startPos, 0, 0, 0);\n    vec3s_set(gMarioSpawnInfo->startAngle, 0, 0, 0);\n\n    gMarioSpawnInfo->activeAreaIndex = -1;\n    gMarioSpawnInfo->areaIndex = 0;\n    gMarioSpawnInfo->behaviorArg = CMD_GET(u32, 4);\n    gMarioSpawnInfo->behaviorScript = CMD_GET(void *, 8);\n    gMarioSpawnInfo->model = gLoadedGraphNodes[CMD_GET(u8, 3)];\n    gMarioSpawnInfo->next = NULL;\n\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_place_object(void) {\n    u8 val7 = 1 << (gCurrActNum - 1);\n    u16 model;\n    struct SpawnInfo *spawnInfo;\n\n    if (sCurrAreaIndex != -1 && ((CMD_GET(u8, 2) & val7) || CMD_GET(u8, 2) == 0x1F)) {\n        model = CMD_GET(u8, 3);\n        spawnInfo = alloc_only_pool_alloc(sLevelPool, sizeof(struct SpawnInfo));\n\n        spawnInfo->startPos[0] = CMD_GET(s16, 4);\n        spawnInfo->startPos[1] = CMD_GET(s16, 6);\n        spawnInfo->startPos[2] = CMD_GET(s16, 8);\n\n        spawnInfo->startAngle[0] = CMD_GET(s16, 10) * 0x8000 / 180;\n        spawnInfo->startAngle[1] = CMD_GET(s16, 12) * 0x8000 / 180;\n        spawnInfo->startAngle[2] = CMD_GET(s16, 14) * 0x8000 / 180;\n\n        spawnInfo->areaIndex = sCurrAreaIndex;\n        spawnInfo->activeAreaIndex = sCurrAreaIndex;\n\n        spawnInfo->behaviorArg = CMD_GET(u32, 16);\n        spawnInfo->behaviorScript = CMD_GET(void *, 20);\n        spawnInfo->model = gLoadedGraphNodes[model];\n        spawnInfo->next = gAreas[sCurrAreaIndex].objectSpawnInfos;\n\n        gAreas[sCurrAreaIndex].objectSpawnInfos = spawnInfo;\n    }\n\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_create_warp_node(void) {\n    if (sCurrAreaIndex != -1) {\n        struct ObjectWarpNode *warpNode =\n            alloc_only_pool_alloc(sLevelPool, sizeof(struct ObjectWarpNode));\n\n        warpNode->node.id = CMD_GET(u8, 2);\n        warpNode->node.destLevel = CMD_GET(u8, 3) + CMD_GET(u8, 6);\n        warpNode->node.destArea = CMD_GET(u8, 4);\n        warpNode->node.destNode = CMD_GET(u8, 5);\n\n        warpNode->object = NULL;\n\n        warpNode->next = gAreas[sCurrAreaIndex].warpNodes;\n        gAreas[sCurrAreaIndex].warpNodes = warpNode;\n    }\n\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_create_instant_warp(void) {\n    s32 i;\n    struct InstantWarp *warp;\n\n    if (sCurrAreaIndex != -1) {\n        if (gAreas[sCurrAreaIndex].instantWarps == NULL) {\n            gAreas[sCurrAreaIndex].instantWarps =\n                alloc_only_pool_alloc(sLevelPool, 4 * sizeof(struct InstantWarp));\n\n            for (i = INSTANT_WARP_INDEX_START; i < INSTANT_WARP_INDEX_STOP; i++) {\n                gAreas[sCurrAreaIndex].instantWarps[i].id = 0;\n            }\n        }\n\n        warp = gAreas[sCurrAreaIndex].instantWarps + CMD_GET(u8, 2);\n\n        warp[0].id = 1;\n        warp[0].area = CMD_GET(u8, 3);\n\n        warp[0].displacement[0] = CMD_GET(s16, 4);\n        warp[0].displacement[1] = CMD_GET(s16, 6);\n        warp[0].displacement[2] = CMD_GET(s16, 8);\n    }\n\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_set_terrain_type(void) {\n    if (sCurrAreaIndex != -1) {\n        gAreas[sCurrAreaIndex].terrainType |= CMD_GET(s16, 2);\n    }\n\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_create_painting_warp_node(void) {\n    s32 i;\n    struct WarpNode *node;\n\n    if (sCurrAreaIndex != -1) {\n        if (gAreas[sCurrAreaIndex].paintingWarpNodes == NULL) {\n            gAreas[sCurrAreaIndex].paintingWarpNodes =\n                alloc_only_pool_alloc(sLevelPool, 45 * sizeof(struct WarpNode));\n\n            for (i = 0; i < 45; i++) {\n                gAreas[sCurrAreaIndex].paintingWarpNodes[i].id = 0;\n            }\n        }\n\n        node = &gAreas[sCurrAreaIndex].paintingWarpNodes[CMD_GET(u8, 2)];\n\n        node->id = 1;\n        node->destLevel = CMD_GET(u8, 3) + CMD_GET(u8, 6);\n        node->destArea = CMD_GET(u8, 4);\n        node->destNode = CMD_GET(u8, 5);\n    }\n\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_3A(void) {\n    struct UnusedArea28 *val4;\n\n    if (sCurrAreaIndex != -1) {\n        if ((val4 = gAreas[sCurrAreaIndex].unused) == NULL) {\n            val4 = gAreas[sCurrAreaIndex].unused =\n                alloc_only_pool_alloc(sLevelPool, sizeof(struct UnusedArea28));\n        }\n\n        val4->unk00 = CMD_GET(s16, 2);\n        val4->unk02 = CMD_GET(s16, 4);\n        val4->unk04 = CMD_GET(s16, 6);\n        val4->unk06 = CMD_GET(s16, 8);\n        val4->unk08 = CMD_GET(s16, 10);\n    }\n\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_create_whirlpool(void) {\n    struct Whirlpool *whirlpool;\n    s32 index = CMD_GET(u8, 2);\n    s32 beatBowser2 =\n        (save_file_get_flags() & (SAVE_FLAG_HAVE_KEY_2 | SAVE_FLAG_UNLOCKED_UPSTAIRS_DOOR)) != 0;\n\n    if (CMD_GET(u8, 3) == 0 || (CMD_GET(u8, 3) == 1 && !beatBowser2)\n        || (CMD_GET(u8, 3) == 2 && beatBowser2) || (CMD_GET(u8, 3) == 3 && gCurrActNum >= 2)) {\n        if (sCurrAreaIndex != -1 && index < 2) {\n            if ((whirlpool = gAreas[sCurrAreaIndex].whirlpools[index]) == NULL) {\n                whirlpool = alloc_only_pool_alloc(sLevelPool, sizeof(struct Whirlpool));\n                gAreas[sCurrAreaIndex].whirlpools[index] = whirlpool;\n            }\n\n            vec3s_set(whirlpool->pos, CMD_GET(s16, 4), CMD_GET(s16, 6), CMD_GET(s16, 8));\n            whirlpool->strength = CMD_GET(s16, 10);\n        }\n    }\n\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_set_blackout(void) {\n    osViBlack(CMD_GET(u8, 2));\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_set_gamma(void) {\n    osViSetSpecialFeatures(CMD_GET(u8, 2) == 0 ? OS_VI_GAMMA_OFF : OS_VI_GAMMA_ON);\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_set_terrain_data(void) {\n    if (sCurrAreaIndex != -1) {\n#ifndef NO_SEGMENTED_MEMORY\n        gAreas[sCurrAreaIndex].terrainData = segmented_to_virtual(CMD_GET(void *, 4));\n#else\n        Collision *data;\n        u32 size;\n\n        // The game modifies the terrain data and must be reset upon level reload.\n        data = segmented_to_virtual(CMD_GET(void *, 4));\n        size = get_area_terrain_size(data) * sizeof(Collision);\n        gAreas[sCurrAreaIndex].terrainData = alloc_only_pool_alloc(sLevelPool, size);\n        memcpy(gAreas[sCurrAreaIndex].terrainData, data, size);\n#endif\n    }\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_set_rooms(void) {\n    if (sCurrAreaIndex != -1) {\n        gAreas[sCurrAreaIndex].surfaceRooms = segmented_to_virtual(CMD_GET(void *, 4));\n    }\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_set_macro_objects(void) {\n    if (sCurrAreaIndex != -1) {\n#ifndef NO_SEGMENTED_MEMORY\n        gAreas[sCurrAreaIndex].macroObjects = segmented_to_virtual(CMD_GET(void *, 4));\n#else\n        // The game modifies the macro object data (for example marking coins as taken),\n        // so it must be reset when the level reloads.\n        MacroObject *data = segmented_to_virtual(CMD_GET(void *, 4));\n        s32 len = 0;\n        while (data[len++] != MACRO_OBJECT_END()) {\n            len += 4;\n        }\n        gAreas[sCurrAreaIndex].macroObjects = alloc_only_pool_alloc(sLevelPool, len * sizeof(MacroObject));\n        memcpy(gAreas[sCurrAreaIndex].macroObjects, data, len * sizeof(MacroObject));\n#endif\n    }\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_load_area(void) {\n    s16 areaIndex = CMD_GET(u8, 2);\n    UNUSED void *unused = (u8 *) sCurrentCmd + 4;\n\n    stop_sounds_in_continuous_banks();\n    load_area(areaIndex);\n\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_unload_area(void) {\n    unload_area();\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_set_mario_start_pos(void) {\n    gMarioSpawnInfo->areaIndex = CMD_GET(u8, 2);\n\n#if IS_64_BIT\n    vec3s_set(gMarioSpawnInfo->startPos, CMD_GET(s16, 6), CMD_GET(s16, 8), CMD_GET(s16, 10));\n#else\n    vec3s_copy(gMarioSpawnInfo->startPos, CMD_GET(Vec3s, 6));\n#endif\n    vec3s_set(gMarioSpawnInfo->startAngle, 0, CMD_GET(s16, 4) * 0x8000 / 180, 0);\n\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_2C(void) {\n    unload_mario_area();\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_2D(void) {\n    area_update_objects();\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_set_transition(void) {\n    if (gCurrentArea != NULL) {\n        play_transition(CMD_GET(u8, 2), CMD_GET(u8, 3), CMD_GET(u8, 4), CMD_GET(u8, 5), CMD_GET(u8, 6));\n    }\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_nop(void) {\n    CN_DEBUG_PRINTF((\"BAD: seqBlankColor\\n\"));\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_show_dialog(void) {\n    if (sCurrAreaIndex != -1) {\n        if (CMD_GET(u8, 2) < 2) {\n            gAreas[sCurrAreaIndex].dialog[CMD_GET(u8, 2)] = CMD_GET(u8, 3);\n        }\n    }\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_set_music(void) {\n    if (sCurrAreaIndex != -1) {\n        gAreas[sCurrAreaIndex].musicParam = CMD_GET(s16, 2);\n        gAreas[sCurrAreaIndex].musicParam2 = CMD_GET(s16, 4);\n    }\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_set_menu_music(void) {\n    set_background_music(0, CMD_GET(s16, 2), 0);\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_38(void) {\n    fadeout_music(CMD_GET(s16, 2));\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void level_cmd_get_or_set_var(void) {\n    if (CMD_GET(u8, 2) == 0) {\n        switch (CMD_GET(u8, 3)) {\n            case 0:\n                gCurrSaveFileNum = sRegister;\n                break;\n            case 1:\n                gCurrCourseNum = sRegister;\n                break;\n            case 2:\n                gCurrActNum = sRegister;\n                break;\n            case 3:\n                gCurrLevelNum = sRegister;\n                break;\n            case 4:\n                gCurrAreaIndex = sRegister;\n                break;\n        }\n    } else {\n        switch (CMD_GET(u8, 3)) {\n            case 0:\n                sRegister = gCurrSaveFileNum;\n                break;\n            case 1:\n                sRegister = gCurrCourseNum;\n                break;\n            case 2:\n                sRegister = gCurrActNum;\n                break;\n            case 3:\n                sRegister = gCurrLevelNum;\n                break;\n            case 4:\n                sRegister = gCurrAreaIndex;\n                break;\n        }\n    }\n\n    sCurrentCmd = CMD_NEXT;\n}\n\nstatic void (*LevelScriptJumpTable[])(void) = {\n    /*00*/ level_cmd_load_and_execute,\n    /*01*/ level_cmd_exit_and_execute,\n    /*02*/ level_cmd_exit,\n    /*03*/ level_cmd_sleep,\n    /*04*/ level_cmd_sleep2,\n    /*05*/ level_cmd_jump,\n    /*06*/ level_cmd_jump_and_link,\n    /*07*/ level_cmd_return,\n    /*08*/ level_cmd_jump_and_link_push_arg,\n    /*09*/ level_cmd_jump_repeat,\n    /*0A*/ level_cmd_loop_begin,\n    /*0B*/ level_cmd_loop_until,\n    /*0C*/ level_cmd_jump_if,\n    /*0D*/ level_cmd_jump_and_link_if,\n    /*0E*/ level_cmd_skip_if,\n    /*0F*/ level_cmd_skip,\n    /*10*/ level_cmd_skippable_nop,\n    /*11*/ level_cmd_call,\n    /*12*/ level_cmd_call_loop,\n    /*13*/ level_cmd_set_register,\n    /*14*/ level_cmd_push_pool_state,\n    /*15*/ level_cmd_pop_pool_state,\n    /*16*/ level_cmd_load_to_fixed_address,\n    /*17*/ level_cmd_load_raw,\n    /*18*/ level_cmd_load_mio0,\n    /*19*/ level_cmd_load_mario_head,\n    /*1A*/ level_cmd_load_mio0_texture,\n    /*1B*/ level_cmd_init_level,\n    /*1C*/ level_cmd_clear_level,\n    /*1D*/ level_cmd_alloc_level_pool,\n    /*1E*/ level_cmd_free_level_pool,\n    /*1F*/ level_cmd_begin_area,\n    /*20*/ level_cmd_end_area,\n    /*21*/ level_cmd_load_model_from_dl,\n    /*22*/ level_cmd_load_model_from_geo,\n    /*23*/ level_cmd_23,\n    /*24*/ level_cmd_place_object,\n    /*25*/ level_cmd_init_mario,\n    /*26*/ level_cmd_create_warp_node,\n    /*27*/ level_cmd_create_painting_warp_node,\n    /*28*/ level_cmd_create_instant_warp,\n    /*29*/ level_cmd_load_area,\n    /*2A*/ level_cmd_unload_area,\n    /*2B*/ level_cmd_set_mario_start_pos,\n    /*2C*/ level_cmd_2C,\n    /*2D*/ level_cmd_2D,\n    /*2E*/ level_cmd_set_terrain_data,\n    /*2F*/ level_cmd_set_rooms,\n    /*30*/ level_cmd_show_dialog,\n    /*31*/ level_cmd_set_terrain_type,\n    /*32*/ level_cmd_nop,\n    /*33*/ level_cmd_set_transition,\n    /*34*/ level_cmd_set_blackout,\n    /*35*/ level_cmd_set_gamma,\n    /*36*/ level_cmd_set_music,\n    /*37*/ level_cmd_set_menu_music,\n    /*38*/ level_cmd_38,\n    /*39*/ level_cmd_set_macro_objects,\n    /*3A*/ level_cmd_3A,\n    /*3B*/ level_cmd_create_whirlpool,\n    /*3C*/ level_cmd_get_or_set_var,\n};\n\nstruct LevelCommand *level_script_execute(struct LevelCommand *cmd) {\n    sScriptStatus = SCRIPT_RUNNING;\n    sCurrentCmd = cmd;\n\n    while (sScriptStatus == SCRIPT_RUNNING) {\n        CN_DEBUG_PRINTF((\"%08X: \", sCurrentCmd));\n        CN_DEBUG_PRINTF((\"%02d\\n\", sCurrentCmd->type));\n\n        LevelScriptJumpTable[sCurrentCmd->type]();\n    }\n\n    profiler_log_thread5_time(LEVEL_SCRIPT_EXECUTE);\n    init_rcp();\n    render_game();\n    end_master_display_list();\n    alloc_display_list(0);\n\n    return sCurrentCmd;\n}\n"
  },
  {
    "path": "src/engine/level_script.h",
    "content": "#ifndef LEVEL_SCRIPT_H\n#define LEVEL_SCRIPT_H\n\n#include <PR/ultratypes.h>\n\nstruct LevelCommand;\n\nextern u8 level_script_entry[];\n\nstruct LevelCommand *level_script_execute(struct LevelCommand *cmd);\n\n#endif // LEVEL_SCRIPT_H\n"
  },
  {
    "path": "src/engine/math_util.c",
    "content": "#include <ultra64.h>\n\n#include \"sm64.h\"\n#include \"engine/graph_node.h\"\n#include \"math_util.h\"\n#include \"surface_collision.h\"\n\n#include \"trig_tables.inc.c\"\n\n// Variables for a spline curve animation (used for the flight path in the grand star cutscene)\nVec4s *gSplineKeyframe;\nfloat gSplineKeyframeFraction;\nint gSplineState;\n\n// These functions have bogus return values.\n// Disable the compiler warning.\n#pragma GCC diagnostic push\n\n#ifdef __GNUC__\n#if defined(__clang__)\n  #pragma GCC diagnostic ignored \"-Wreturn-stack-address\"\n#else\n  #pragma GCC diagnostic ignored \"-Wreturn-local-addr\"\n#endif\n#endif\n\n/// Copy vector 'src' to 'dest'\nvoid *vec3f_copy(Vec3f dest, Vec3f src) {\n    dest[0] = src[0];\n    dest[1] = src[1];\n    dest[2] = src[2];\n    return &dest; //! warning: function returns address of local variable\n}\n\n/// Set vector 'dest' to (x, y, z)\nvoid *vec3f_set(Vec3f dest, f32 x, f32 y, f32 z) {\n    dest[0] = x;\n    dest[1] = y;\n    dest[2] = z;\n    return &dest; //! warning: function returns address of local variable\n}\n\n/// Add vector 'a' to 'dest'\nvoid *vec3f_add(Vec3f dest, Vec3f a) {\n    dest[0] += a[0];\n    dest[1] += a[1];\n    dest[2] += a[2];\n    return &dest; //! warning: function returns address of local variable\n}\n\n/// Make 'dest' the sum of vectors a and b.\nvoid *vec3f_sum(Vec3f dest, Vec3f a, Vec3f b) {\n    dest[0] = a[0] + b[0];\n    dest[1] = a[1] + b[1];\n    dest[2] = a[2] + b[2];\n    return &dest; //! warning: function returns address of local variable\n}\n\n/// Copy vector src to dest\nvoid *vec3s_copy(Vec3s dest, Vec3s src) {\n    dest[0] = src[0];\n    dest[1] = src[1];\n    dest[2] = src[2];\n    return &dest; //! warning: function returns address of local variable\n}\n\n/// Set vector 'dest' to (x, y, z)\nvoid *vec3s_set(Vec3s dest, s16 x, s16 y, s16 z) {\n    dest[0] = x;\n    dest[1] = y;\n    dest[2] = z;\n    return &dest; //! warning: function returns address of local variable\n}\n\n/// Add vector a to 'dest'\nvoid *vec3s_add(Vec3s dest, Vec3s a) {\n    dest[0] += a[0];\n    dest[1] += a[1];\n    dest[2] += a[2];\n    return &dest; //! warning: function returns address of local variable\n}\n\n/// Make 'dest' the sum of vectors a and b.\nvoid *vec3s_sum(Vec3s dest, Vec3s a, Vec3s b) {\n    dest[0] = a[0] + b[0];\n    dest[1] = a[1] + b[1];\n    dest[2] = a[2] + b[2];\n    return &dest; //! warning: function returns address of local variable\n}\n\n/// Subtract vector a from 'dest'\nvoid *vec3s_sub(Vec3s dest, Vec3s a) {\n    dest[0] -= a[0];\n    dest[1] -= a[1];\n    dest[2] -= a[2];\n    return &dest; //! warning: function returns address of local variable\n}\n\n/// Convert short vector a to float vector 'dest'\nvoid *vec3s_to_vec3f(Vec3f dest, Vec3s a) {\n    dest[0] = a[0];\n    dest[1] = a[1];\n    dest[2] = a[2];\n    return &dest; //! warning: function returns address of local variable\n}\n\n/**\n * Convert float vector a to a short vector 'dest' by rounding the components\n * to the nearest integer.\n */\nvoid *vec3f_to_vec3s(Vec3s dest, Vec3f a) {\n    // add/subtract 0.5 in order to round to the nearest s32 instead of truncating\n    dest[0] = a[0] + ((a[0] > 0) ? 0.5f : -0.5f);\n    dest[1] = a[1] + ((a[1] > 0) ? 0.5f : -0.5f);\n    dest[2] = a[2] + ((a[2] > 0) ? 0.5f : -0.5f);\n    return &dest; //! warning: function returns address of local variable\n}\n\n/**\n * Set 'dest' the normal vector of a triangle with vertices a, b and c.\n * It is similar to vec3f_cross, but it calculates the vectors (c-b) and (b-a)\n * at the same time.\n */\nvoid *find_vector_perpendicular_to_plane(Vec3f dest, Vec3f a, Vec3f b, Vec3f c) {\n    dest[0] = (b[1] - a[1]) * (c[2] - b[2]) - (c[1] - b[1]) * (b[2] - a[2]);\n    dest[1] = (b[2] - a[2]) * (c[0] - b[0]) - (c[2] - b[2]) * (b[0] - a[0]);\n    dest[2] = (b[0] - a[0]) * (c[1] - b[1]) - (c[0] - b[0]) * (b[1] - a[1]);\n    return &dest; //! warning: function returns address of local variable\n}\n\n/// Make vector 'dest' the cross product of vectors a and b.\nvoid *vec3f_cross(Vec3f dest, Vec3f a, Vec3f b) {\n    dest[0] = a[1] * b[2] - b[1] * a[2];\n    dest[1] = a[2] * b[0] - b[2] * a[0];\n    dest[2] = a[0] * b[1] - b[0] * a[1];\n    return &dest; //! warning: function returns address of local variable\n}\n\n/// Scale vector 'dest' so it has length 1\nvoid *vec3f_normalize(Vec3f dest) {\n    //! Possible division by zero\n    f32 invsqrt = 1.0f / sqrtf(dest[0] * dest[0] + dest[1] * dest[1] + dest[2] * dest[2]);\n\n    dest[0] *= invsqrt;\n    dest[1] *= invsqrt;\n    dest[2] *= invsqrt;\n    return &dest; //! warning: function returns address of local variable\n}\n\n#pragma GCC diagnostic pop\n\n/// Copy matrix 'src' to 'dest'\nvoid mtxf_copy(Mat4 dest, Mat4 src) {\n    register s32 i;\n    register u32 *d = (u32 *) dest;\n    register u32 *s = (u32 *) src;\n\n    for (i = 0; i < 16; i++) {\n        *d++ = *s++;\n    }\n}\n\n/**\n * Set mtx to the identity matrix\n */\nvoid mtxf_identity(Mat4 mtx) {\n    register s32 i;\n    register f32 *dest;\n    // These loops must be one line to match on -O2\n\n    // initialize everything except the first and last cells to 0\n    for (dest = (f32 *) mtx + 1, i = 0; i < 14; dest++, i++) *dest = 0;\n\n    // initialize the diagonal cells to 1\n    for (dest = (f32 *) mtx, i = 0; i < 4; dest += 5, i++) *dest = 1;\n}\n\n/**\n * Set dest to a translation matrix of vector b\n */\nvoid mtxf_translate(Mat4 dest, Vec3f b) {\n    mtxf_identity(dest);\n    dest[3][0] = b[0];\n    dest[3][1] = b[1];\n    dest[3][2] = b[2];\n}\n\n/**\n * Set mtx to a look-at matrix for the camera. The resulting transformation\n * transforms the world as if there exists a camera at position 'from' pointed\n * at the position 'to'. The up-vector is assumed to be (0, 1, 0), but the 'roll'\n * angle allows a bank rotation of the camera.\n */\nvoid mtxf_lookat(Mat4 mtx, Vec3f from, Vec3f to, s16 roll) {\n    register f32 invLength;\n    f32 dx;\n    f32 dz;\n    f32 xColY;\n    f32 yColY;\n    f32 zColY;\n    f32 xColZ;\n    f32 yColZ;\n    f32 zColZ;\n    f32 xColX;\n    f32 yColX;\n    f32 zColX;\n\n    dx = to[0] - from[0];\n    dz = to[2] - from[2];\n\n    invLength = -1.0 / sqrtf(dx * dx + dz * dz);\n    dx *= invLength;\n    dz *= invLength;\n\n    yColY = coss(roll);\n    xColY = sins(roll) * dz;\n    zColY = -sins(roll) * dx;\n\n    xColZ = to[0] - from[0];\n    yColZ = to[1] - from[1];\n    zColZ = to[2] - from[2];\n\n    invLength = -1.0 / sqrtf(xColZ * xColZ + yColZ * yColZ + zColZ * zColZ);\n    xColZ *= invLength;\n    yColZ *= invLength;\n    zColZ *= invLength;\n\n    xColX = yColY * zColZ - zColY * yColZ;\n    yColX = zColY * xColZ - xColY * zColZ;\n    zColX = xColY * yColZ - yColY * xColZ;\n\n    invLength = 1.0 / sqrtf(xColX * xColX + yColX * yColX + zColX * zColX);\n\n    xColX *= invLength;\n    yColX *= invLength;\n    zColX *= invLength;\n\n    xColY = yColZ * zColX - zColZ * yColX;\n    yColY = zColZ * xColX - xColZ * zColX;\n    zColY = xColZ * yColX - yColZ * xColX;\n\n    invLength = 1.0 / sqrtf(xColY * xColY + yColY * yColY + zColY * zColY);\n    xColY *= invLength;\n    yColY *= invLength;\n    zColY *= invLength;\n\n    mtx[0][0] = xColX;\n    mtx[1][0] = yColX;\n    mtx[2][0] = zColX;\n    mtx[3][0] = -(from[0] * xColX + from[1] * yColX + from[2] * zColX);\n\n    mtx[0][1] = xColY;\n    mtx[1][1] = yColY;\n    mtx[2][1] = zColY;\n    mtx[3][1] = -(from[0] * xColY + from[1] * yColY + from[2] * zColY);\n\n    mtx[0][2] = xColZ;\n    mtx[1][2] = yColZ;\n    mtx[2][2] = zColZ;\n    mtx[3][2] = -(from[0] * xColZ + from[1] * yColZ + from[2] * zColZ);\n\n    mtx[0][3] = 0;\n    mtx[1][3] = 0;\n    mtx[2][3] = 0;\n    mtx[3][3] = 1;\n}\n\n/**\n * Build a matrix that rotates around the z axis, then the x axis, then the y\n * axis, and then translates.\n */\nvoid mtxf_rotate_zxy_and_translate(Mat4 dest, Vec3f translate, Vec3s rotate) {\n    register f32 sx = sins(rotate[0]);\n    register f32 cx = coss(rotate[0]);\n\n    register f32 sy = sins(rotate[1]);\n    register f32 cy = coss(rotate[1]);\n\n    register f32 sz = sins(rotate[2]);\n    register f32 cz = coss(rotate[2]);\n\n    dest[0][0] = cy * cz + sx * sy * sz;\n    dest[1][0] = -cy * sz + sx * sy * cz;\n    dest[2][0] = cx * sy;\n    dest[3][0] = translate[0];\n\n    dest[0][1] = cx * sz;\n    dest[1][1] = cx * cz;\n    dest[2][1] = -sx;\n    dest[3][1] = translate[1];\n\n    dest[0][2] = -sy * cz + sx * cy * sz;\n    dest[1][2] = sy * sz + sx * cy * cz;\n    dest[2][2] = cx * cy;\n    dest[3][2] = translate[2];\n\n    dest[0][3] = dest[1][3] = dest[2][3] = 0.0f;\n    dest[3][3] = 1.0f;\n}\n\n/**\n * Build a matrix that rotates around the x axis, then the y axis, then the z\n * axis, and then translates.\n */\nvoid mtxf_rotate_xyz_and_translate(Mat4 dest, Vec3f b, Vec3s c) {\n    register f32 sx = sins(c[0]);\n    register f32 cx = coss(c[0]);\n\n    register f32 sy = sins(c[1]);\n    register f32 cy = coss(c[1]);\n\n    register f32 sz = sins(c[2]);\n    register f32 cz = coss(c[2]);\n\n    dest[0][0] = cy * cz;\n    dest[0][1] = cy * sz;\n    dest[0][2] = -sy;\n    dest[0][3] = 0;\n\n    dest[1][0] = sx * sy * cz - cx * sz;\n    dest[1][1] = sx * sy * sz + cx * cz;\n    dest[1][2] = sx * cy;\n    dest[1][3] = 0;\n\n    dest[2][0] = cx * sy * cz + sx * sz;\n    dest[2][1] = cx * sy * sz - sx * cz;\n    dest[2][2] = cx * cy;\n    dest[2][3] = 0;\n\n    dest[3][0] = b[0];\n    dest[3][1] = b[1];\n    dest[3][2] = b[2];\n    dest[3][3] = 1;\n}\n\n/**\n * Set 'dest' to a transformation matrix that turns an object to face the camera.\n * 'mtx' is the look-at matrix from the camera\n * 'position' is the position of the object in the world\n * 'angle' rotates the object while still facing the camera.\n */\nvoid mtxf_billboard(Mat4 dest, Mat4 mtx, Vec3f position, s16 angle) {\n    dest[0][0] = coss(angle);\n    dest[0][1] = sins(angle);\n    dest[0][2] = 0;\n    dest[0][3] = 0;\n\n    dest[1][0] = -dest[0][1];\n    dest[1][1] = dest[0][0];\n    dest[1][2] = 0;\n    dest[1][3] = 0;\n\n    dest[2][0] = 0;\n    dest[2][1] = 0;\n    dest[2][2] = 1;\n    dest[2][3] = 0;\n\n    dest[3][0] =\n        mtx[0][0] * position[0] + mtx[1][0] * position[1] + mtx[2][0] * position[2] + mtx[3][0];\n    dest[3][1] =\n        mtx[0][1] * position[0] + mtx[1][1] * position[1] + mtx[2][1] * position[2] + mtx[3][1];\n    dest[3][2] =\n        mtx[0][2] * position[0] + mtx[1][2] * position[1] + mtx[2][2] * position[2] + mtx[3][2];\n    dest[3][3] = 1;\n}\n\n/**\n * Set 'dest' to a transformation matrix that aligns an object with the terrain\n * based on the normal. Used for enemies.\n * 'upDir' is the terrain normal\n * 'yaw' is the angle which it should face\n * 'pos' is the object's position in the world\n */\nvoid mtxf_align_terrain_normal(Mat4 dest, Vec3f upDir, Vec3f pos, s16 yaw) {\n    Vec3f lateralDir;\n    Vec3f leftDir;\n    Vec3f forwardDir;\n\n    vec3f_set(lateralDir, sins(yaw), 0, coss(yaw));\n    vec3f_normalize(upDir);\n\n    vec3f_cross(leftDir, upDir, lateralDir);\n    vec3f_normalize(leftDir);\n\n    vec3f_cross(forwardDir, leftDir, upDir);\n    vec3f_normalize(forwardDir);\n\n    dest[0][0] = leftDir[0];\n    dest[0][1] = leftDir[1];\n    dest[0][2] = leftDir[2];\n    dest[3][0] = pos[0];\n\n    dest[1][0] = upDir[0];\n    dest[1][1] = upDir[1];\n    dest[1][2] = upDir[2];\n    dest[3][1] = pos[1];\n\n    dest[2][0] = forwardDir[0];\n    dest[2][1] = forwardDir[1];\n    dest[2][2] = forwardDir[2];\n    dest[3][2] = pos[2];\n\n    dest[0][3] = 0.0f;\n    dest[1][3] = 0.0f;\n    dest[2][3] = 0.0f;\n    dest[3][3] = 1.0f;\n}\n\n/**\n * Set 'mtx' to a transformation matrix that aligns an object with the terrain\n * based on 3 height samples in an equilateral triangle around the object.\n * Used for Mario when crawling or sliding.\n * 'yaw' is the angle which it should face\n * 'pos' is the object's position in the world\n * 'radius' is the distance from each triangle vertex to the center\n */\nvoid mtxf_align_terrain_triangle(Mat4 mtx, Vec3f pos, s16 yaw, f32 radius) {\n    struct Surface *sp74;\n    Vec3f point0;\n    Vec3f point1;\n    Vec3f point2;\n    Vec3f forward;\n    Vec3f xColumn;\n    Vec3f yColumn;\n    Vec3f zColumn;\n    f32 avgY;\n    f32 minY = -radius * 3;\n\n    point0[0] = pos[0] + radius * sins(yaw + 0x2AAA);\n    point0[2] = pos[2] + radius * coss(yaw + 0x2AAA);\n    point1[0] = pos[0] + radius * sins(yaw + 0x8000);\n    point1[2] = pos[2] + radius * coss(yaw + 0x8000);\n    point2[0] = pos[0] + radius * sins(yaw + 0xD555);\n    point2[2] = pos[2] + radius * coss(yaw + 0xD555);\n\n    point0[1] = find_floor(point0[0], pos[1] + 150, point0[2], &sp74);\n    point1[1] = find_floor(point1[0], pos[1] + 150, point1[2], &sp74);\n    point2[1] = find_floor(point2[0], pos[1] + 150, point2[2], &sp74);\n\n    if (point0[1] - pos[1] < minY) {\n        point0[1] = pos[1];\n    }\n\n    if (point1[1] - pos[1] < minY) {\n        point1[1] = pos[1];\n    }\n\n    if (point2[1] - pos[1] < minY) {\n        point2[1] = pos[1];\n    }\n\n    avgY = (point0[1] + point1[1] + point2[1]) / 3;\n\n    vec3f_set(forward, sins(yaw), 0, coss(yaw));\n    find_vector_perpendicular_to_plane(yColumn, point0, point1, point2);\n    vec3f_normalize(yColumn);\n    vec3f_cross(xColumn, yColumn, forward);\n    vec3f_normalize(xColumn);\n    vec3f_cross(zColumn, xColumn, yColumn);\n    vec3f_normalize(zColumn);\n\n    mtx[0][0] = xColumn[0];\n    mtx[0][1] = xColumn[1];\n    mtx[0][2] = xColumn[2];\n    mtx[3][0] = pos[0];\n\n    mtx[1][0] = yColumn[0];\n    mtx[1][1] = yColumn[1];\n    mtx[1][2] = yColumn[2];\n    mtx[3][1] = (avgY < pos[1]) ? pos[1] : avgY;\n\n    mtx[2][0] = zColumn[0];\n    mtx[2][1] = zColumn[1];\n    mtx[2][2] = zColumn[2];\n    mtx[3][2] = pos[2];\n\n    mtx[0][3] = 0;\n    mtx[1][3] = 0;\n    mtx[2][3] = 0;\n    mtx[3][3] = 1;\n}\n\n/**\n * Sets matrix 'dest' to the matrix product b * a assuming they are both\n * transformation matrices with a w-component of 1. Since the bottom row\n * is assumed to equal [0, 0, 0, 1], it saves some multiplications and\n * addition.\n * The resulting matrix represents first applying transformation b and\n * then a.\n */\nvoid mtxf_mul(Mat4 dest, Mat4 a, Mat4 b) {\n    Mat4 temp;\n    register f32 entry0;\n    register f32 entry1;\n    register f32 entry2;\n\n    // column 0\n    entry0 = a[0][0];\n    entry1 = a[0][1];\n    entry2 = a[0][2];\n    temp[0][0] = entry0 * b[0][0] + entry1 * b[1][0] + entry2 * b[2][0];\n    temp[0][1] = entry0 * b[0][1] + entry1 * b[1][1] + entry2 * b[2][1];\n    temp[0][2] = entry0 * b[0][2] + entry1 * b[1][2] + entry2 * b[2][2];\n\n    // column 1\n    entry0 = a[1][0];\n    entry1 = a[1][1];\n    entry2 = a[1][2];\n    temp[1][0] = entry0 * b[0][0] + entry1 * b[1][0] + entry2 * b[2][0];\n    temp[1][1] = entry0 * b[0][1] + entry1 * b[1][1] + entry2 * b[2][1];\n    temp[1][2] = entry0 * b[0][2] + entry1 * b[1][2] + entry2 * b[2][2];\n\n    // column 2\n    entry0 = a[2][0];\n    entry1 = a[2][1];\n    entry2 = a[2][2];\n    temp[2][0] = entry0 * b[0][0] + entry1 * b[1][0] + entry2 * b[2][0];\n    temp[2][1] = entry0 * b[0][1] + entry1 * b[1][1] + entry2 * b[2][1];\n    temp[2][2] = entry0 * b[0][2] + entry1 * b[1][2] + entry2 * b[2][2];\n\n    // column 3\n    entry0 = a[3][0];\n    entry1 = a[3][1];\n    entry2 = a[3][2];\n    temp[3][0] = entry0 * b[0][0] + entry1 * b[1][0] + entry2 * b[2][0] + b[3][0];\n    temp[3][1] = entry0 * b[0][1] + entry1 * b[1][1] + entry2 * b[2][1] + b[3][1];\n    temp[3][2] = entry0 * b[0][2] + entry1 * b[1][2] + entry2 * b[2][2] + b[3][2];\n\n    temp[0][3] = temp[1][3] = temp[2][3] = 0;\n    temp[3][3] = 1;\n\n    mtxf_copy(dest, temp);\n}\n\n/**\n * Set matrix 'dest' to 'mtx' scaled by vector s\n */\nvoid mtxf_scale_vec3f(Mat4 dest, Mat4 mtx, Vec3f s) {\n    register s32 i;\n\n    for (i = 0; i < 4; i++) {\n        dest[0][i] = mtx[0][i] * s[0];\n        dest[1][i] = mtx[1][i] * s[1];\n        dest[2][i] = mtx[2][i] * s[2];\n        dest[3][i] = mtx[3][i];\n    }\n}\n\n/**\n * Multiply a vector with a transformation matrix, which applies the transformation\n * to the point. Note that the bottom row is assumed to be [0, 0, 0, 1], which is\n * true for transformation matrices if the translation has a w component of 1.\n */\nvoid mtxf_mul_vec3s(Mat4 mtx, Vec3s b) {\n    register f32 x = b[0];\n    register f32 y = b[1];\n    register f32 z = b[2];\n\n    b[0] = x * mtx[0][0] + y * mtx[1][0] + z * mtx[2][0] + mtx[3][0];\n    b[1] = x * mtx[0][1] + y * mtx[1][1] + z * mtx[2][1] + mtx[3][1];\n    b[2] = x * mtx[0][2] + y * mtx[1][2] + z * mtx[2][2] + mtx[3][2];\n}\n\n/**\n * Convert float matrix 'src' to fixed point matrix 'dest'.\n * The float matrix may not contain entries larger than 65536 or the console\n * crashes. The fixed point matrix has entries with a 16-bit integer part, so\n * the floating point numbers are multiplied by 2^16 before being cast to a s32\n * integer. If this doesn't fit, the N64 and iQue consoles will throw an\n * exception. On Wii and Wii U Virtual Console the value will simply be clamped\n * and no crashes occur.\n */\nvoid mtxf_to_mtx(Mtx *dest, Mat4 src) {\n#ifdef AVOID_UB\n    // Avoid type-casting which is technically UB by calling the equivalent\n    // guMtxF2L function. This helps little-endian systems, as well.\n    guMtxF2L(src, dest);\n#else\n    s32 asFixedPoint;\n    register s32 i;\n    register s16 *a3 = (s16 *) dest;      // all integer parts stored in first 16 bytes\n    register s16 *t0 = (s16 *) dest + 16; // all fraction parts stored in last 16 bytes\n    register f32 *t1 = (f32 *) src;\n\n    for (i = 0; i < 16; i++) {\n        asFixedPoint = *t1++ * (1 << 16); //! float-to-integer conversion responsible for PU crashes\n        *a3++ = GET_HIGH_S16_OF_32(asFixedPoint); // integer part\n        *t0++ = GET_LOW_S16_OF_32(asFixedPoint);  // fraction part\n    }\n#endif\n}\n\n/**\n * Set 'mtx' to a transformation matrix that rotates around the z axis.\n */\nvoid mtxf_rotate_xy(Mtx *mtx, s16 angle) {\n    Mat4 temp;\n\n    mtxf_identity(temp);\n    temp[0][0] = coss(angle);\n    temp[0][1] = sins(angle);\n    temp[1][0] = -temp[0][1];\n    temp[1][1] = temp[0][0];\n    mtxf_to_mtx(mtx, temp);\n}\n\n/**\n * Extract a position given an object's transformation matrix and a camera matrix.\n * This is used for determining the world position of the held object: since objMtx\n * inherits the transformation from both the camera and Mario, it calculates this\n * by taking the camera matrix and inverting its transformation by first rotating\n * objMtx back from screen orientation to world orientation, and then subtracting\n * the camera position.\n */\nvoid get_pos_from_transform_mtx(Vec3f dest, Mat4 objMtx, Mat4 camMtx) {\n    f32 camX = camMtx[3][0] * camMtx[0][0] + camMtx[3][1] * camMtx[0][1] + camMtx[3][2] * camMtx[0][2];\n    f32 camY = camMtx[3][0] * camMtx[1][0] + camMtx[3][1] * camMtx[1][1] + camMtx[3][2] * camMtx[1][2];\n    f32 camZ = camMtx[3][0] * camMtx[2][0] + camMtx[3][1] * camMtx[2][1] + camMtx[3][2] * camMtx[2][2];\n\n    dest[0] =\n        objMtx[3][0] * camMtx[0][0] + objMtx[3][1] * camMtx[0][1] + objMtx[3][2] * camMtx[0][2] - camX;\n    dest[1] =\n        objMtx[3][0] * camMtx[1][0] + objMtx[3][1] * camMtx[1][1] + objMtx[3][2] * camMtx[1][2] - camY;\n    dest[2] =\n        objMtx[3][0] * camMtx[2][0] + objMtx[3][1] * camMtx[2][1] + objMtx[3][2] * camMtx[2][2] - camZ;\n}\n\n/**\n * Take the vector starting at 'from' pointed at 'to' an retrieve the length\n * of that vector, as well as the yaw and pitch angles.\n * Basically it converts the direction to spherical coordinates.\n */\nvoid vec3f_get_dist_and_angle(Vec3f from, Vec3f to, f32 *dist, s16 *pitch, s16 *yaw) {\n    register f32 x = to[0] - from[0];\n    register f32 y = to[1] - from[1];\n    register f32 z = to[2] - from[2];\n\n    *dist = sqrtf(x * x + y * y + z * z);\n    *pitch = atan2s(sqrtf(x * x + z * z), y);\n    *yaw = atan2s(z, x);\n}\n\n/**\n * Construct the 'to' point which is distance 'dist' away from the 'from' position,\n * and has the angles pitch and yaw.\n */\nvoid vec3f_set_dist_and_angle(Vec3f from, Vec3f to, f32 dist, s16 pitch, s16 yaw) {\n    to[0] = from[0] + dist * coss(pitch) * sins(yaw);\n    to[1] = from[1] + dist * sins(pitch);\n    to[2] = from[2] + dist * coss(pitch) * coss(yaw);\n}\n\n/**\n * Return the value 'current' after it tries to approach target, going up at\n * most 'inc' and going down at most 'dec'.\n */\ns32 approach_s32(s32 current, s32 target, s32 inc, s32 dec) {\n    //! If target is close to the max or min s32, then it's possible to overflow\n    // past it without stopping.\n\n    if (current < target) {\n        current += inc;\n        if (current > target) {\n            current = target;\n        }\n    } else {\n        current -= dec;\n        if (current < target) {\n            current = target;\n        }\n    }\n    return current;\n}\n\n/**\n * Return the value 'current' after it tries to approach target, going up at\n * most 'inc' and going down at most 'dec'.\n */\nf32 approach_f32(f32 current, f32 target, f32 inc, f32 dec) {\n    if (current < target) {\n        current += inc;\n        if (current > target) {\n            current = target;\n        }\n    } else {\n        current -= dec;\n        if (current < target) {\n            current = target;\n        }\n    }\n    return current;\n}\n\n/**\n * Helper function for atan2s. Does a look up of the arctangent of y/x assuming\n * the resulting angle is in range [0, 0x2000] (1/8 of a circle).\n */\nstatic u16 atan2_lookup(f32 y, f32 x) {\n    u16 ret;\n\n    if (x == 0) {\n        ret = gArctanTable[0];\n    } else {\n        ret = gArctanTable[(s32)(y / x * 1024 + 0.5f)];\n    }\n    return ret;\n}\n\n/**\n * Compute the angle from (0, 0) to (x, y) as a s16. Given that terrain is in\n * the xz-plane, this is commonly called with (z, x) to get a yaw angle.\n */\ns16 atan2s(f32 y, f32 x) {\n    u16 ret;\n\n    if (x >= 0) {\n        if (y >= 0) {\n            if (y >= x) {\n                ret = atan2_lookup(x, y);\n            } else {\n                ret = 0x4000 - atan2_lookup(y, x);\n            }\n        } else {\n            y = -y;\n            if (y < x) {\n                ret = 0x4000 + atan2_lookup(y, x);\n            } else {\n                ret = 0x8000 - atan2_lookup(x, y);\n            }\n        }\n    } else {\n        x = -x;\n        if (y < 0) {\n            y = -y;\n            if (y >= x) {\n                ret = 0x8000 + atan2_lookup(x, y);\n            } else {\n                ret = 0xC000 - atan2_lookup(y, x);\n            }\n        } else {\n            if (y < x) {\n                ret = 0xC000 + atan2_lookup(y, x);\n            } else {\n                ret = -atan2_lookup(x, y);\n            }\n        }\n    }\n    return ret;\n}\n\n/**\n * Compute the atan2 in radians by calling atan2s and converting the result.\n */\nf32 atan2f(f32 y, f32 x) {\n    return (f32) atan2s(y, x) * M_PI / 0x8000;\n}\n\n#define CURVE_BEGIN_1 1\n#define CURVE_BEGIN_2 2\n#define CURVE_MIDDLE 3\n#define CURVE_END_1 4\n#define CURVE_END_2 5\n\n/**\n * Set 'result' to a 4-vector with weights corresponding to interpolation\n * value t in [0, 1] and gSplineState. Given the current control point P, these\n * weights are for P[0], P[1], P[2] and P[3] to obtain an interpolated point.\n * The weights naturally sum to 1, and they are also always in range [0, 1] so\n * the interpolated point will never overshoot. The curve is guaranteed to go\n * through the first and last point, but not through intermediate points.\n *\n * gSplineState ensures that the curve is clamped: the first two points\n * and last two points have different weight formulas. These are the weights\n * just before gSplineState transitions:\n * 1: [1, 0, 0, 0]\n * 1->2: [0, 3/12, 7/12, 2/12]\n * 2->3: [0, 1/6, 4/6, 1/6]\n * 3->3: [0, 1/6, 4/6, 1/6] (repeats)\n * 3->4: [0, 1/6, 4/6, 1/6]\n * 4->5: [0, 2/12, 7/12, 3/12]\n * 5: [0, 0, 0, 1]\n *\n * I suspect that the weight formulas will give a 3rd degree B-spline with the\n * common uniform clamped knot vector, e.g. for n points:\n * [0, 0, 0, 0, 1, 2, ... n-1, n, n, n, n]\n * TODO: verify the classification of the spline / figure out how polynomials were computed\n */\nvoid spline_get_weights(Vec4f result, f32 t, UNUSED s32 c) {\n    f32 tinv = 1 - t;\n    f32 tinv2 = tinv * tinv;\n    f32 tinv3 = tinv2 * tinv;\n    f32 t2 = t * t;\n    f32 t3 = t2 * t;\n\n    switch (gSplineState) {\n        case CURVE_BEGIN_1:\n            result[0] = tinv3;\n            result[1] = t3 * 1.75f - t2 * 4.5f + t * 3.0f;\n            result[2] = -t3 * (11 / 12.0f) + t2 * 1.5f;\n            result[3] = t3 * (1 / 6.0f);\n            break;\n        case CURVE_BEGIN_2:\n            result[0] = tinv3 * 0.25f;\n            result[1] = t3 * (7 / 12.0f) - t2 * 1.25f + t * 0.25f + (7 / 12.0f);\n            result[2] = -t3 * 0.5f + t2 * 0.5f + t * 0.5f + (1 / 6.0f);\n            result[3] = t3 * (1 / 6.0f);\n            break;\n        case CURVE_MIDDLE:\n            result[0] = tinv3 * (1 / 6.0f);\n            result[1] = t3 * 0.5f - t2 + (4 / 6.0f);\n            result[2] = -t3 * 0.5f + t2 * 0.5f + t * 0.5f + (1 / 6.0f);\n            result[3] = t3 * (1 / 6.0f);\n            break;\n        case CURVE_END_1:\n            result[0] = tinv3 * (1 / 6.0f);\n            result[1] = -tinv3 * 0.5f + tinv2 * 0.5f + tinv * 0.5f + (1 / 6.0f);\n            result[2] = tinv3 * (7 / 12.0f) - tinv2 * 1.25f + tinv * 0.25f + (7 / 12.0f);\n            result[3] = t3 * 0.25f;\n            break;\n        case CURVE_END_2:\n            result[0] = tinv3 * (1 / 6.0f);\n            result[1] = -tinv3 * (11 / 12.0f) + tinv2 * 1.5f;\n            result[2] = tinv3 * 1.75f - tinv2 * 4.5f + tinv * 3.0f;\n            result[3] = t3;\n            break;\n    }\n}\n\n/**\n * Initialize a spline animation.\n * 'keyFrames' should be an array of (s, x, y, z) vectors\n *  s: the speed of the keyframe in 1000/frames, e.g. s=100 means the keyframe lasts 10 frames\n *  (x, y, z): point in 3D space on the curve\n * The array should end with three entries with s=0 (infinite keyframe duration).\n * That's because the spline has a 3rd degree polynomial, so it looks 3 points ahead.\n */\nvoid anim_spline_init(Vec4s *keyFrames) {\n    gSplineKeyframe = keyFrames;\n    gSplineKeyframeFraction = 0;\n    gSplineState = 1;\n}\n\n/**\n * Poll the next point from a spline animation.\n * anim_spline_init should be called before polling for vectors.\n * Returns TRUE when the last point is reached, FALSE otherwise.\n */\ns32 anim_spline_poll(Vec3f result) {\n    Vec4f weights;\n    s32 i;\n    s32 hasEnded = FALSE;\n\n    vec3f_copy(result, gVec3fZero);\n    spline_get_weights(weights, gSplineKeyframeFraction, gSplineState);\n    for (i = 0; i < 4; i++) {\n        result[0] += weights[i] * gSplineKeyframe[i][1];\n        result[1] += weights[i] * gSplineKeyframe[i][2];\n        result[2] += weights[i] * gSplineKeyframe[i][3];\n    }\n\n    if ((gSplineKeyframeFraction += gSplineKeyframe[0][0] / 1000.0f) >= 1) {\n        gSplineKeyframe++;\n        gSplineKeyframeFraction--;\n        switch (gSplineState) {\n            case CURVE_END_2:\n                hasEnded = TRUE;\n                break;\n            case CURVE_MIDDLE:\n                if (gSplineKeyframe[2][0] == 0) {\n                    gSplineState = CURVE_END_1;\n                }\n                break;\n            default:\n                gSplineState++;\n                break;\n        }\n    }\n\n    return hasEnded;\n}\n"
  },
  {
    "path": "src/engine/math_util.h",
    "content": "#ifndef MATH_UTIL_H\n#define MATH_UTIL_H\n\n#include <PR/ultratypes.h>\n\n#include \"types.h\"\n\n/*\n * The sine and cosine tables overlap, but \"#define gCosineTable (gSineTable +\n * 0x400)\" doesn't give expected codegen; gSineTable and gCosineTable need to\n * be different symbols for code to match. Most likely the tables were placed\n * adjacent to each other, and gSineTable cut short, such that reads overflow\n * into gCosineTable.\n *\n * These kinds of out of bounds reads are undefined behavior, and break on\n * e.g. GCC (which doesn't place the tables next to each other, and probably\n * exploits array sizes for range analysis-based optimizations as well).\n * Thus, for non-IDO compilers we use the standard-compliant version.\n */\nextern f32 gSineTable[];\n#ifdef AVOID_UB\n#define gCosineTable (gSineTable + 0x400)\n#else\nextern f32 gCosineTable[];\n#endif\n\n#define sins(x) gSineTable[(u16) (x) >> 4]\n#define coss(x) gCosineTable[(u16) (x) >> 4]\n\n#define min(a, b) ((a) <= (b) ? (a) : (b))\n#define max(a, b) ((a) > (b) ? (a) : (b))\n\n#define sqr(x) ((x) * (x))\n\nvoid *vec3f_copy(Vec3f dest, Vec3f src);\nvoid *vec3f_set(Vec3f dest, f32 x, f32 y, f32 z);\nvoid *vec3f_add(Vec3f dest, Vec3f a);\nvoid *vec3f_sum(Vec3f dest, Vec3f a, Vec3f b);\nvoid *vec3s_copy(Vec3s dest, Vec3s src);\nvoid *vec3s_set(Vec3s dest, s16 x, s16 y, s16 z);\nvoid *vec3s_add(Vec3s dest, Vec3s a);\nvoid *vec3s_sum(Vec3s dest, Vec3s a, Vec3s b);\nvoid *vec3s_sub(Vec3s dest, Vec3s a);\nvoid *vec3s_to_vec3f(Vec3f dest, Vec3s a);\nvoid *vec3f_to_vec3s(Vec3s dest, Vec3f a);\nvoid *find_vector_perpendicular_to_plane(Vec3f dest, Vec3f a, Vec3f b, Vec3f c);\nvoid *vec3f_cross(Vec3f dest, Vec3f a, Vec3f b);\nvoid *vec3f_normalize(Vec3f dest);\nvoid mtxf_copy(Mat4 dest, Mat4 src);\nvoid mtxf_identity(Mat4 mtx);\nvoid mtxf_translate(Mat4 dest, Vec3f b);\nvoid mtxf_lookat(Mat4 mtx, Vec3f from, Vec3f to, s16 roll);\nvoid mtxf_rotate_zxy_and_translate(Mat4 dest, Vec3f translate, Vec3s rotate);\nvoid mtxf_rotate_xyz_and_translate(Mat4 dest, Vec3f b, Vec3s c);\nvoid mtxf_billboard(Mat4 dest, Mat4 mtx, Vec3f position, s16 angle);\nvoid mtxf_align_terrain_normal(Mat4 dest, Vec3f upDir, Vec3f pos, s16 yaw);\nvoid mtxf_align_terrain_triangle(Mat4 mtx, Vec3f pos, s16 yaw, f32 radius);\nvoid mtxf_mul(Mat4 dest, Mat4 a, Mat4 b);\nvoid mtxf_scale_vec3f(Mat4 dest, Mat4 mtx, Vec3f s);\nvoid mtxf_mul_vec3s(Mat4 mtx, Vec3s b);\nvoid mtxf_to_mtx(Mtx *dest, Mat4 src);\nvoid mtxf_rotate_xy(Mtx *mtx, s16 angle);\nvoid get_pos_from_transform_mtx(Vec3f dest, Mat4 objMtx, Mat4 camMtx);\nvoid vec3f_get_dist_and_angle(Vec3f from, Vec3f to, f32 *dist, s16 *pitch, s16 *yaw);\nvoid vec3f_set_dist_and_angle(Vec3f from, Vec3f to, f32  dist, s16  pitch, s16  yaw);\ns32 approach_s32(s32 current, s32 target, s32 inc, s32 dec);\nf32 approach_f32(f32 current, f32 target, f32 inc, f32 dec);\ns16 atan2s(f32 y, f32 x);\nf32 atan2f(f32 a, f32 b);\nvoid spline_get_weights(Vec4f result, f32 t, UNUSED s32 c);\nvoid anim_spline_init(Vec4s *keyFrames);\ns32 anim_spline_poll(Vec3f result);\n\n#endif // MATH_UTIL_H\n"
  },
  {
    "path": "src/engine/stub.c",
    "content": "#ifdef VERSION_CN\nconst char D_CN_80388B10[] = \"error\\n\";\n#endif\n\n"
  },
  {
    "path": "src/engine/surface_collision.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"sm64.h\"\n#include \"game/debug.h\"\n#include \"game/level_update.h\"\n#include \"game/mario.h\"\n#include \"game/object_list_processor.h\"\n#include \"surface_collision.h\"\n#include \"surface_load.h\"\n\n/**************************************************\n *                      WALLS                     *\n **************************************************/\n\n/**\n * Iterate through the list of walls until all walls are checked and\n * have given their wall push.\n */\nstatic s32 find_wall_collisions_from_list(struct SurfaceNode *surfaceNode,\n                                          struct WallCollisionData *data) {\n    register struct Surface *surf;\n    register f32 offset;\n    register f32 radius = data->radius;\n    register f32 x = data->x;\n    register f32 y = data->y + data->offsetY;\n    register f32 z = data->z;\n    register f32 px, pz;\n    register f32 w1, w2, w3;\n    register f32 y1, y2, y3;\n    s32 numCols = 0;\n\n    // Max collision radius = 200\n    if (radius > 200.0f) {\n        radius = 200.0f;\n    }\n\n    // Stay in this loop until out of walls.\n    while (surfaceNode != NULL) {\n        surf = surfaceNode->surface;\n        surfaceNode = surfaceNode->next;\n\n        // Exclude a large number of walls immediately to optimize.\n        if (y < surf->lowerY || y > surf->upperY) {\n            continue;\n        }\n\n        offset = surf->normal.x * x + surf->normal.y * y + surf->normal.z * z + surf->originOffset;\n\n        if (offset < -radius || offset > radius) {\n            continue;\n        }\n\n        px = x;\n        pz = z;\n\n        //! (Quantum Tunneling) Due to issues with the vertices walls choose and\n        //  the fact they are floating point, certain floating point positions\n        //  along the seam of two walls may collide with neither wall or both walls.\n        if (surf->flags & SURFACE_FLAG_X_PROJECTION) {\n            w1 = -surf->vertex1[2];            w2 = -surf->vertex2[2];            w3 = -surf->vertex3[2];\n            y1 = surf->vertex1[1];            y2 = surf->vertex2[1];            y3 = surf->vertex3[1];\n\n            if (surf->normal.x > 0.0f) {\n                if ((y1 - y) * (w2 - w1) - (w1 - -pz) * (y2 - y1) > 0.0f) {\n                    continue;\n                }\n                if ((y2 - y) * (w3 - w2) - (w2 - -pz) * (y3 - y2) > 0.0f) {\n                    continue;\n                }\n                if ((y3 - y) * (w1 - w3) - (w3 - -pz) * (y1 - y3) > 0.0f) {\n                    continue;\n                }\n            } else {\n                if ((y1 - y) * (w2 - w1) - (w1 - -pz) * (y2 - y1) < 0.0f) {\n                    continue;\n                }\n                if ((y2 - y) * (w3 - w2) - (w2 - -pz) * (y3 - y2) < 0.0f) {\n                    continue;\n                }\n                if ((y3 - y) * (w1 - w3) - (w3 - -pz) * (y1 - y3) < 0.0f) {\n                    continue;\n                }\n            }\n        } else {\n            w1 = surf->vertex1[0];            w2 = surf->vertex2[0];            w3 = surf->vertex3[0];\n            y1 = surf->vertex1[1];            y2 = surf->vertex2[1];            y3 = surf->vertex3[1];\n\n            if (surf->normal.z > 0.0f) {\n                if ((y1 - y) * (w2 - w1) - (w1 - px) * (y2 - y1) > 0.0f) {\n                    continue;\n                }\n                if ((y2 - y) * (w3 - w2) - (w2 - px) * (y3 - y2) > 0.0f) {\n                    continue;\n                }\n                if ((y3 - y) * (w1 - w3) - (w3 - px) * (y1 - y3) > 0.0f) {\n                    continue;\n                }\n            } else {\n                if ((y1 - y) * (w2 - w1) - (w1 - px) * (y2 - y1) < 0.0f) {\n                    continue;\n                }\n                if ((y2 - y) * (w3 - w2) - (w2 - px) * (y3 - y2) < 0.0f) {\n                    continue;\n                }\n                if ((y3 - y) * (w1 - w3) - (w3 - px) * (y1 - y3) < 0.0f) {\n                    continue;\n                }\n            }\n        }\n\n        // Determine if checking for the camera or not.\n        if (gCheckingSurfaceCollisionsForCamera) {\n            if (surf->flags & SURFACE_FLAG_NO_CAM_COLLISION) {\n                continue;\n            }\n        } else {\n            // Ignore camera only surfaces.\n            if (surf->type == SURFACE_CAMERA_BOUNDARY) {\n                continue;\n            }\n\n            // If an object can pass through a vanish cap wall, pass through.\n            if (surf->type == SURFACE_VANISH_CAP_WALLS) {\n                // If an object can pass through a vanish cap wall, pass through.\n                if (gCurrentObject != NULL\n                    && (gCurrentObject->activeFlags & ACTIVE_FLAG_MOVE_THROUGH_GRATE)) {\n                    continue;\n                }\n\n                // If Mario has a vanish cap, pass through the vanish cap wall.\n                if (gCurrentObject != NULL && gCurrentObject == gMarioObject\n                    && (gMarioState->flags & MARIO_VANISH_CAP)) {\n                    continue;\n                }\n            }\n        }\n\n        //! (Wall Overlaps) Because this doesn't update the x and z local variables,\n        //  multiple walls can push mario more than is required.\n        data->x += surf->normal.x * (radius - offset);\n        data->z += surf->normal.z * (radius - offset);\n\n        //! (Unreferenced Walls) Since this only returns the first four walls,\n        //  this can lead to wall interaction being missed. Typically unreferenced walls\n        //  come from only using one wall, however.\n        if (data->numWalls < 4) {\n            data->walls[data->numWalls++] = surf;\n        }\n\n        numCols++;\n    }\n\n    return numCols;\n}\n\n/**\n * Formats the position and wall search for find_wall_collisions.\n */\ns32 f32_find_wall_collision(f32 *xPtr, f32 *yPtr, f32 *zPtr, f32 offsetY, f32 radius) {\n    struct WallCollisionData collision;\n    s32 numCollisions = 0;\n\n    collision.offsetY = offsetY;\n    collision.radius = radius;\n\n    collision.x = *xPtr;\n    collision.y = *yPtr;\n    collision.z = *zPtr;\n\n    collision.numWalls = 0;\n\n    numCollisions = find_wall_collisions(&collision);\n\n    *xPtr = collision.x;\n    *yPtr = collision.y;\n    *zPtr = collision.z;\n\n    return numCollisions;\n}\n\n/**\n * Find wall collisions and receive their push.\n */\ns32 find_wall_collisions(struct WallCollisionData *colData) {\n    struct SurfaceNode *node;\n    s16 cellX, cellZ;\n    s32 numCollisions = 0;\n    TerrainData x = colData->x;\n    TerrainData z = colData->z;\n\n    colData->numWalls = 0;\n\n    if (x <= -LEVEL_BOUNDARY_MAX || x >= LEVEL_BOUNDARY_MAX) {\n        return numCollisions;\n    }\n    if (z <= -LEVEL_BOUNDARY_MAX || z >= LEVEL_BOUNDARY_MAX) {\n        return numCollisions;\n    }\n\n    // World (level) consists of a 16x16 grid. Find where the collision is on\n    // the grid (round toward -inf)\n    cellX = ((x + LEVEL_BOUNDARY_MAX) / CELL_SIZE) & NUM_CELLS_INDEX;\n    cellZ = ((z + LEVEL_BOUNDARY_MAX) / CELL_SIZE) & NUM_CELLS_INDEX;\n\n    // Check for surfaces belonging to objects.\n    node = gDynamicSurfacePartition[cellZ][cellX][SPATIAL_PARTITION_WALLS].next;\n    numCollisions += find_wall_collisions_from_list(node, colData);\n\n    // Check for surfaces that are a part of level geometry.\n    node = gStaticSurfacePartition[cellZ][cellX][SPATIAL_PARTITION_WALLS].next;\n    numCollisions += find_wall_collisions_from_list(node, colData);\n\n    // Increment the debug tracker.\n    gNumCalls.wall++;\n\n    return numCollisions;\n}\n\n/**************************************************\n *                     CEILINGS                   *\n **************************************************/\n\n/**\n * Iterate through the list of ceilings and find the first ceiling over a given point.\n */\nstatic struct Surface *find_ceil_from_list(struct SurfaceNode *surfaceNode, s32 x, s32 y, s32 z, f32 *pheight) {\n    register struct Surface *surf;\n    register s32 x1, z1, x2, z2, x3, z3;\n    struct Surface *ceil = NULL;\n\n    ceil = NULL;\n\n    // Stay in this loop until out of ceilings.\n    while (surfaceNode != NULL) {\n        surf = surfaceNode->surface;\n        surfaceNode = surfaceNode->next;\n\n        x1 = surf->vertex1[0];\n        z1 = surf->vertex1[2];\n        z2 = surf->vertex2[2];\n        x2 = surf->vertex2[0];\n\n        // Checking if point is in bounds of the triangle laterally.\n        if ((z1 - z) * (x2 - x1) - (x1 - x) * (z2 - z1) > 0) {\n            continue;\n        }\n\n        // Slight optimization by checking these later.\n        x3 = surf->vertex3[0];\n        z3 = surf->vertex3[2];\n        if ((z2 - z) * (x3 - x2) - (x2 - x) * (z3 - z2) > 0) {\n            continue;\n        }\n        if ((z3 - z) * (x1 - x3) - (x3 - x) * (z1 - z3) > 0) {\n            continue;\n        }\n\n        // Determine if checking for the camera or not.\n        if (gCheckingSurfaceCollisionsForCamera != 0) {\n            if (surf->flags & SURFACE_FLAG_NO_CAM_COLLISION) {\n                continue;\n            }\n        }\n        // Ignore camera only surfaces.\n        else if (surf->type == SURFACE_CAMERA_BOUNDARY) {\n            continue;\n        }\n\n        {\n            f32 nx = surf->normal.x;\n            f32 ny = surf->normal.y;\n            f32 nz = surf->normal.z;\n            f32 oo = surf->originOffset;\n            f32 height;\n\n            // If a wall, ignore it. Likely a remnant, should never occur.\n            if (ny == 0.0f) {\n                continue;\n            }\n\n            // Find the ceil height at the specific point.\n            height = -(x * nx + nz * z + oo) / ny;\n\n            // Checks for ceiling interaction with a 78 unit buffer.\n            //! (Exposed Ceilings) Because any point above a ceiling counts\n            //  as interacting with a ceiling, ceilings far below can cause\n            // \"invisible walls\" that are really just exposed ceilings.\n            if (y - (height - -78.0f) > 0.0f) {\n                continue;\n            }\n\n            *pheight = height;\n            ceil = surf;\n            break;\n        }\n    }\n\n    //! (Surface Cucking) Since only the first ceil is returned and not the lowest,\n    //  lower ceilings can be \"cucked\" by higher ceilings.\n    return ceil;\n}\n\n/**\n * Find the lowest ceiling above a given position and return the height.\n */\nf32 find_ceil(f32 posX, f32 posY, f32 posZ, struct Surface **pceil) {\n    s16 cellZ, cellX;\n\n    struct Surface *ceil, *dynamicCeil;\n    struct SurfaceNode *surfaceList;\n\n    f32 height = CELL_HEIGHT_LIMIT;\n    f32 dynamicHeight = CELL_HEIGHT_LIMIT;\n\n    //! (Parallel Universes) Because position is casted to an s16, reaching higher\n    //  float locations can return ceilings despite them not existing there.\n    //  (Dynamic ceilings will unload due to the range.)\n    TerrainData x = (TerrainData) posX;\n    TerrainData y = (TerrainData) posY;\n    TerrainData z = (TerrainData) posZ;\n\n    *pceil = NULL;\n\n    if (x <= -LEVEL_BOUNDARY_MAX || x >= LEVEL_BOUNDARY_MAX) {\n        return height;\n    }\n    if (z <= -LEVEL_BOUNDARY_MAX || z >= LEVEL_BOUNDARY_MAX) {\n        return height;\n    }\n\n    // Each level is split into cells to limit load, find the appropriate cell.\n    cellX = ((x + LEVEL_BOUNDARY_MAX) / CELL_SIZE) & NUM_CELLS_INDEX;\n    cellZ = ((z + LEVEL_BOUNDARY_MAX) / CELL_SIZE) & NUM_CELLS_INDEX;\n\n    // Check for surfaces belonging to objects.\n    surfaceList = gDynamicSurfacePartition[cellZ][cellX][SPATIAL_PARTITION_CEILS].next;\n    dynamicCeil = find_ceil_from_list(surfaceList, x, y, z, &dynamicHeight);\n\n    // Check for surfaces that are a part of level geometry.\n    surfaceList = gStaticSurfacePartition[cellZ][cellX][SPATIAL_PARTITION_CEILS].next;\n    ceil = find_ceil_from_list(surfaceList, x, y, z, &height);\n\n    if (dynamicHeight < height) {\n        ceil = dynamicCeil;\n        height = dynamicHeight;\n    }\n\n    *pceil = ceil;\n\n    // Increment the debug tracker.\n    gNumCalls.ceil++;\n\n    return height;\n}\n\n/**************************************************\n *                     FLOORS                     *\n **************************************************/\n\n/**\n * Find the height of the highest floor below an object.\n */\nf32 unused_obj_find_floor_height(struct Object *obj) {\n    struct Surface *floor;\n    f32 floorHeight = find_floor(obj->oPosX, obj->oPosY, obj->oPosZ, &floor);\n    return floorHeight;\n}\n\n/**\n * Basically a local variable that passes through floor geo info.\n */\nstruct FloorGeometry sFloorGeo;\n\nUNUSED static u8 unused8038BE50[0x40];\n\n/**\n * Return the floor height underneath (xPos, yPos, zPos) and populate `floorGeo`\n * with data about the floor's normal vector and origin offset. Also update\n * sFloorGeo.\n */\nf32 find_floor_height_and_data(f32 xPos, f32 yPos, f32 zPos, struct FloorGeometry **floorGeo) {\n    struct Surface *floor;\n    f32 floorHeight = find_floor(xPos, yPos, zPos, &floor);\n\n    *floorGeo = NULL;\n\n    if (floor != NULL) {\n        sFloorGeo.normalX = floor->normal.x;\n        sFloorGeo.normalY = floor->normal.y;\n        sFloorGeo.normalZ = floor->normal.z;\n        sFloorGeo.originOffset = floor->originOffset;\n\n        *floorGeo = &sFloorGeo;\n    }\n    return floorHeight;\n}\n\n/**\n * Iterate through the list of floors and find the first floor under a given point.\n */\nstatic struct Surface *find_floor_from_list(struct SurfaceNode *surfaceNode, s32 x, s32 y, s32 z, f32 *pheight) {\n    register struct Surface *surf;\n    register s32 x1, z1, x2, z2, x3, z3;\n    f32 nx, ny, nz;\n    f32 oo;\n    f32 height;\n    struct Surface *floor = NULL;\n\n    // Iterate through the list of floors until there are no more floors.\n    while (surfaceNode != NULL) {\n        surf = surfaceNode->surface;\n        surfaceNode = surfaceNode->next;\n\n        x1 = surf->vertex1[0];\n        z1 = surf->vertex1[2];\n        x2 = surf->vertex2[0];\n        z2 = surf->vertex2[2];\n\n        // Check that the point is within the triangle bounds.\n        if ((z1 - z) * (x2 - x1) - (x1 - x) * (z2 - z1) < 0) {\n            continue;\n        }\n\n        // To slightly save on computation time, set this later.\n        x3 = surf->vertex3[0];\n        z3 = surf->vertex3[2];\n\n        if ((z2 - z) * (x3 - x2) - (x2 - x) * (z3 - z2) < 0) {\n            continue;\n        }\n        if ((z3 - z) * (x1 - x3) - (x3 - x) * (z1 - z3) < 0) {\n            continue;\n        }\n\n        // Determine if we are checking for the camera or not.\n        if (gCheckingSurfaceCollisionsForCamera != 0) {\n            if (surf->flags & SURFACE_FLAG_NO_CAM_COLLISION) {\n                continue;\n            }\n        }\n        // If we are not checking for the camera, ignore camera only floors.\n        else if (surf->type == SURFACE_CAMERA_BOUNDARY) {\n            continue;\n        }\n\n        nx = surf->normal.x;\n        ny = surf->normal.y;\n        nz = surf->normal.z;\n        oo = surf->originOffset;\n\n        // If a wall, ignore it. Likely a remnant, should never occur.\n        if (ny == 0.0f) {\n            continue;\n        }\n\n        // Find the height of the floor at a given location.\n        height = -(x * nx + nz * z + oo) / ny;\n        // Checks for floor interaction with a 78 unit buffer.\n        if (y - (height + -78.0f) < 0.0f) {\n            continue;\n        }\n\n        *pheight = height;\n        floor = surf;\n        break;\n    }\n\n    //! (Surface Cucking) Since only the first floor is returned and not the highest,\n    //  higher floors can be \"cucked\" by lower floors.\n    return floor;\n}\n\n/**\n * Find the height of the highest floor below a point.\n */\nf32 find_floor_height(f32 x, f32 y, f32 z) {\n    struct Surface *floor;\n\n    f32 floorHeight = find_floor(x, y, z, &floor);\n\n    return floorHeight;\n}\n\n/**\n * Find the highest dynamic floor under a given position. Perhaps originally static\n * and dynamic floors were checked separately.\n */\nf32 unused_find_dynamic_floor(f32 xPos, f32 yPos, f32 zPos, struct Surface **pfloor) {\n    struct SurfaceNode *surfaceList;\n    struct Surface *floor;\n    f32 floorHeight = FLOOR_LOWER_LIMIT;\n\n    // Would normally cause PUs, but dynamic floors unload at that range.\n    TerrainData x = (TerrainData) xPos;\n    TerrainData y = (TerrainData) yPos;\n    TerrainData z = (TerrainData) zPos;\n\n    // Each level is split into cells to limit load, find the appropriate cell.\n    s16 cellX = ((x + LEVEL_BOUNDARY_MAX) / CELL_SIZE) & NUM_CELLS_INDEX;\n    s16 cellZ = ((z + LEVEL_BOUNDARY_MAX) / CELL_SIZE) & NUM_CELLS_INDEX;\n\n    surfaceList = gDynamicSurfacePartition[cellZ][cellX][SPATIAL_PARTITION_FLOORS].next;\n    floor = find_floor_from_list(surfaceList, x, y, z, &floorHeight);\n\n    *pfloor = floor;\n\n    return floorHeight;\n}\n\n/**\n * Find the highest floor under a given position and return the height.\n */\nf32 find_floor(f32 xPos, f32 yPos, f32 zPos, struct Surface **pfloor) {\n    s16 cellZ, cellX;\n\n    struct Surface *floor, *dynamicFloor;\n    struct SurfaceNode *surfaceList;\n\n    f32 height = FLOOR_LOWER_LIMIT;\n    f32 dynamicHeight = FLOOR_LOWER_LIMIT;\n\n    //! (Parallel Universes) Because position is casted to an s16, reaching higher\n    //  float locations can return floors despite them not existing there.\n    //  (Dynamic floors will unload due to the range.)\n    TerrainData x = (TerrainData) xPos;\n    TerrainData y = (TerrainData) yPos;\n    TerrainData z = (TerrainData) zPos;\n\n    *pfloor = NULL;\n\n    if (x <= -LEVEL_BOUNDARY_MAX || x >= LEVEL_BOUNDARY_MAX) {\n        return height;\n    }\n    if (z <= -LEVEL_BOUNDARY_MAX || z >= LEVEL_BOUNDARY_MAX) {\n        return height;\n    }\n\n    // Each level is split into cells to limit load, find the appropriate cell.\n    cellX = ((x + LEVEL_BOUNDARY_MAX) / CELL_SIZE) & NUM_CELLS_INDEX;\n    cellZ = ((z + LEVEL_BOUNDARY_MAX) / CELL_SIZE) & NUM_CELLS_INDEX;\n\n    // Check for surfaces belonging to objects.\n    surfaceList = gDynamicSurfacePartition[cellZ][cellX][SPATIAL_PARTITION_FLOORS].next;\n    dynamicFloor = find_floor_from_list(surfaceList, x, y, z, &dynamicHeight);\n\n    // Check for surfaces that are a part of level geometry.\n    surfaceList = gStaticSurfacePartition[cellZ][cellX][SPATIAL_PARTITION_FLOORS].next;\n    floor = find_floor_from_list(surfaceList, x, y, z, &height);\n\n    // To prevent the Merry-Go-Round room from loading when Mario passes above the hole that leads\n    // there, SURFACE_INTANGIBLE is used. This prevent the wrong room from loading, but can also allow\n    // Mario to pass through.\n    if (!gFindFloorIncludeSurfaceIntangible) {\n        //! (BBH Crash) Most NULL checking is done by checking the height of the floor returned\n        //  instead of checking directly for a NULL floor. If this check returns a NULL floor\n        //  (happens when there is no floor under the SURFACE_INTANGIBLE floor) but returns the height\n        //  of the SURFACE_INTANGIBLE floor instead of the typical -11000 returned for a NULL floor.\n        if (floor != NULL && floor->type == SURFACE_INTANGIBLE) {\n            floor = find_floor_from_list(surfaceList, x, (s32)(height - 200.0f), z, &height);\n        }\n    } else {\n        // To prevent accidentally leaving the floor tangible, stop checking for it.\n        gFindFloorIncludeSurfaceIntangible = FALSE;\n    }\n\n    // If a floor was missed, increment the debug counter.\n    if (floor == NULL) {\n        gNumFindFloorMisses++;\n    }\n\n    if (dynamicHeight > height) {\n        floor = dynamicFloor;\n        height = dynamicHeight;\n    }\n\n    *pfloor = floor;\n\n    // Increment the debug tracker.\n    gNumCalls.floor++;\n\n    return height;\n}\n\n/**************************************************\n *               ENVIRONMENTAL BOXES              *\n **************************************************/\n\n/**\n * Finds the height of water at a given location.\n */\nf32 find_water_level(f32 x, f32 z) {\n    s32 i;\n    s32 numRegions;\n    TerrainData val;\n    f32 loX, hiX, loZ, hiZ;\n    f32 waterLevel = FLOOR_LOWER_LIMIT;\n    TerrainData *p = gEnvironmentRegions;\n\n    if (p != NULL) {\n        numRegions = *p++;\n\n        for (i = 0; i < numRegions; i++) {\n            val = *p++;\n            loX = *p++;\n            loZ = *p++;\n            hiX = *p++;\n            hiZ = *p++;\n\n            // If the location is within a water box and it is a water box.\n            // Water is less than 50 val only, while above is gas and such.\n            if (loX < x && x < hiX && loZ < z && z < hiZ && val < 50) {\n                // Set the water height. Since this breaks, only return the first height.\n                waterLevel = *p;\n                break;\n            }\n            p++;\n        }\n    }\n\n    return waterLevel;\n}\n\n/**\n * Finds the height of the poison gas (used only in HMC) at a given location.\n */\nf32 find_poison_gas_level(f32 x, f32 z) {\n    s32 i;\n    s32 numRegions;\n    UNUSED u8 filler[4];\n    TerrainData val;\n    f32 loX, hiX, loZ, hiZ;\n    f32 gasLevel = FLOOR_LOWER_LIMIT;\n    TerrainData *p = gEnvironmentRegions;\n\n    if (p != NULL) {\n        numRegions = *p++;\n\n        for (i = 0; i < numRegions; i++) {\n            val = *p;\n\n            if (val >= 50) {\n                loX = p[1];\n                loZ = p[2];\n                hiX = p[3];\n                hiZ = p[4];\n\n                // If the location is within a gas's box and it is a gas box.\n                // Gas has a value of 50, 60, etc.\n                if (loX < x && x < hiX && loZ < z && z < hiZ && val % 10 == 0) {\n                    // Set the gas height. Since this breaks, only return the first height.\n                    gasLevel = p[5];\n                    break;\n                }\n            }\n\n            p += 6;\n        }\n    }\n\n    return gasLevel;\n}\n\n/**************************************************\n *                      DEBUG                     *\n **************************************************/\n\n/**\n * Finds the length of a surface list for debug purposes.\n */\nstatic s32 surface_list_length(struct SurfaceNode *list) {\n    s32 count = 0;\n\n    while (list != NULL) {\n        list = list->next;\n        count++;\n    }\n\n    return count;\n}\n\n/**\n * Print the area,number of walls, how many times they were called,\n * and some allocation information.\n */\nvoid debug_surface_list_info(f32 xPos, f32 zPos) {\n    struct SurfaceNode *list;\n    s32 numFloors = 0;\n    s32 numWalls = 0;\n    s32 numCeils = 0;\n\n    s32 cellX = (xPos + LEVEL_BOUNDARY_MAX) / CELL_SIZE;\n    s32 cellZ = (zPos + LEVEL_BOUNDARY_MAX) / CELL_SIZE;\n\n    list = gStaticSurfacePartition[cellZ & NUM_CELLS_INDEX][cellX & NUM_CELLS_INDEX][SPATIAL_PARTITION_FLOORS].next;\n    numFloors += surface_list_length(list);\n\n    list = gDynamicSurfacePartition[cellZ & NUM_CELLS_INDEX][cellX & NUM_CELLS_INDEX][SPATIAL_PARTITION_FLOORS].next;\n    numFloors += surface_list_length(list);\n\n    list = gStaticSurfacePartition[cellZ & NUM_CELLS_INDEX][cellX & NUM_CELLS_INDEX][SPATIAL_PARTITION_WALLS].next;\n    numWalls += surface_list_length(list);\n\n    list = gDynamicSurfacePartition[cellZ & NUM_CELLS_INDEX][cellX & NUM_CELLS_INDEX][SPATIAL_PARTITION_WALLS].next;\n    numWalls += surface_list_length(list);\n\n    list = gStaticSurfacePartition[cellZ & NUM_CELLS_INDEX][cellX & NUM_CELLS_INDEX][SPATIAL_PARTITION_CEILS].next;\n    numCeils += surface_list_length(list);\n\n    list = gDynamicSurfacePartition[cellZ & NUM_CELLS_INDEX][cellX & NUM_CELLS_INDEX][SPATIAL_PARTITION_CEILS].next;\n    numCeils += surface_list_length(list);\n\n    print_debug_top_down_mapinfo(\"area   %x\", cellZ * NUM_CELLS + cellX);\n\n    // Names represent ground, walls, and roofs as found in SMS.\n    print_debug_top_down_mapinfo(\"dg %d\", numFloors);\n    print_debug_top_down_mapinfo(\"dw %d\", numWalls);\n    print_debug_top_down_mapinfo(\"dr %d\", numCeils);\n\n    set_text_array_x_y(80, -3);\n\n    print_debug_top_down_mapinfo(\"%d\", gNumCalls.floor);\n    print_debug_top_down_mapinfo(\"%d\", gNumCalls.wall);\n    print_debug_top_down_mapinfo(\"%d\", gNumCalls.ceil);\n\n    set_text_array_x_y(-80, 0);\n\n    // listal- List Allocated?, statbg- Static Background?, movebg- Moving Background?\n    print_debug_top_down_mapinfo(\"listal %d\", gSurfaceNodesAllocated);\n    print_debug_top_down_mapinfo(\"statbg %d\", gNumStaticSurfaces);\n    print_debug_top_down_mapinfo(\"movebg %d\", gSurfacesAllocated - gNumStaticSurfaces);\n\n    gNumCalls.floor = 0;\n    gNumCalls.ceil = 0;\n    gNumCalls.wall = 0;\n}\n\n/**\n * An unused function that finds and interacts with any type of surface.\n * Perhaps an original implementation of surfaces before they were more specialized.\n */\ns32 unused_resolve_floor_or_ceil_collisions(s32 checkCeil, f32 *px, f32 *py, f32 *pz, f32 radius,\n                                            struct Surface **psurface, f32 *surfaceHeight) {\n    f32 nx, ny, nz, oo;\n    f32 x = *px;\n    f32 y = *py;\n    f32 z = *pz;\n    f32 offset, distance;\n\n    *psurface = NULL;\n\n    if (checkCeil) {\n        *surfaceHeight = find_ceil(x, y, z, psurface);\n    } else {\n        *surfaceHeight = find_floor(x, y, z, psurface);\n    }\n\n    if (*psurface == NULL) {\n        return -1;\n    }\n\n    nx = (*psurface)->normal.x;\n    ny = (*psurface)->normal.y;\n    nz = (*psurface)->normal.z;\n    oo = (*psurface)->originOffset;\n\n    offset = nx * x + ny * y + nz * z + oo;\n    distance = offset >= 0 ? offset : -offset;\n\n    // Interesting surface interaction that should be surf type independent.\n    if (distance < radius) {\n        *px += nx * (radius - offset);\n        *py += ny * (radius - offset);\n        *pz += nz * (radius - offset);\n\n        return 1;\n    }\n\n    return 0;\n}\n"
  },
  {
    "path": "src/engine/surface_collision.h",
    "content": "#ifndef SURFACE_COLLISION_H\n#define SURFACE_COLLISION_H\n\n#include <PR/ultratypes.h>\n\n#include \"types.h\"\n\n// Range level area is 16384x16384 (-8192 to +8192 in x and z)\n#define LEVEL_BOUNDARY_MAX  0x2000 // 8192\n\n#define CELL_SIZE           (1 << 10) // 0x400\n\n#define CELL_HEIGHT_LIMIT           20000\n#define FLOOR_LOWER_LIMIT           -11000\n#define FLOOR_LOWER_LIMIT_MISC      (FLOOR_LOWER_LIMIT + 1000)\n// same as FLOOR_LOWER_LIMIT_MISC, explicitly for shadow.c\n// It doesn't match if \".0\" is removed or \".f\" is added\n#define FLOOR_LOWER_LIMIT_SHADOW    (FLOOR_LOWER_LIMIT + 1000.0)\n\nstruct WallCollisionData {\n    /*0x00*/ f32 x, y, z;\n    /*0x0C*/ f32 offsetY;\n    /*0x10*/ f32 radius;\n    /*0x14*/ u8 filler[2];\n    /*0x16*/ s16 numWalls;\n    /*0x18*/ struct Surface *walls[4];\n};\n\nstruct FloorGeometry {\n    u8 filler[16]; // possibly position data?\n    f32 normalX;\n    f32 normalY;\n    f32 normalZ;\n    f32 originOffset;\n};\n\ns32 f32_find_wall_collision(f32 *xPtr, f32 *yPtr, f32 *zPtr, f32 offsetY, f32 radius);\ns32 find_wall_collisions(struct WallCollisionData *colData);\nf32 find_ceil(f32 posX, f32 posY, f32 posZ, struct Surface **pceil);\nf32 find_floor_height_and_data(f32 xPos, f32 yPos, f32 zPos, struct FloorGeometry **floorGeo);\nf32 find_floor_height(f32 x, f32 y, f32 z);\nf32 find_floor(f32 xPos, f32 yPos, f32 zPos, struct Surface **pfloor);\nf32 find_water_level(f32 x, f32 z);\nf32 find_poison_gas_level(f32 x, f32 z);\nvoid debug_surface_list_info(f32 xPos, f32 zPos);\n\n#endif // SURFACE_COLLISION_H\n"
  },
  {
    "path": "src/engine/surface_load.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"sm64.h\"\n#include \"game/ingame_menu.h\"\n#include \"graph_node.h\"\n#include \"behavior_script.h\"\n#include \"behavior_data.h\"\n#include \"game/memory.h\"\n#include \"game/object_helpers.h\"\n#include \"game/macro_special_objects.h\"\n#include \"surface_collision.h\"\n#include \"game/mario.h\"\n#include \"game/object_list_processor.h\"\n#include \"surface_load.h\"\n\ns32 unused8038BE90;\n\n/**\n * Partitions for course and object surfaces. The arrays represent\n * the 16x16 cells that each level is split into.\n */\nSpatialPartitionCell gStaticSurfacePartition[NUM_CELLS][NUM_CELLS];\nSpatialPartitionCell gDynamicSurfacePartition[NUM_CELLS][NUM_CELLS];\n\n/**\n * Pools of data to contain either surface nodes or surfaces.\n */\nstruct SurfaceNode *sSurfaceNodePool;\nstruct Surface *sSurfacePool;\n\n/**\n * The size of the surface pool (2300).\n */\ns16 sSurfacePoolSize;\n\nu8 unused8038EEA8[0x30];\n\n/**\n * Allocate the part of the surface node pool to contain a surface node.\n */\nstatic struct SurfaceNode *alloc_surface_node(void) {\n    struct SurfaceNode *node = &sSurfaceNodePool[gSurfaceNodesAllocated];\n    gSurfaceNodesAllocated++;\n\n    node->next = NULL;\n\n    if (gSurfaceNodesAllocated >= 7000) {\n        CN_DEBUG_PRINTF((\" mcMakeBGCheckList OVERFLOW\\n\"));\n    }\n\n    return node;\n}\n\n/**\n * Allocate the part of the surface pool to contain a surface and\n * initialize the surface.\n */\nstatic struct Surface *alloc_surface(void) {\n\n    struct Surface *surface = &sSurfacePool[gSurfacesAllocated];\n    gSurfacesAllocated++;\n\n    if (gSurfacesAllocated >= sSurfacePoolSize) {\n        CN_DEBUG_PRINTF((\" mcMakeBGCheckData OVERFLOW\\n\"));\n    }\n\n    surface->type = 0;\n    surface->force = 0;\n    surface->flags = 0;\n    surface->room = 0;\n    surface->object = NULL;\n\n    return surface;\n}\n\n/**\n * Iterates through the entire partition, clearing the surfaces.\n */\nstatic void clear_spatial_partition(SpatialPartitionCell *cells) {\n    register s32 i = NUM_CELLS * NUM_CELLS;\n\n    while (i--) {\n        (*cells)[SPATIAL_PARTITION_FLOORS].next = NULL;\n        (*cells)[SPATIAL_PARTITION_CEILS].next = NULL;\n        (*cells)[SPATIAL_PARTITION_WALLS].next = NULL;\n\n        cells++;\n    }\n}\n\n/**\n * Clears the static (level) surface partitions for new use.\n */\nstatic void clear_static_surfaces(void) {\n    clear_spatial_partition(&gStaticSurfacePartition[0][0]);\n}\n\n/**\n * Add a surface to the correct cell list of surfaces.\n * @param dynamic Determines whether the surface is static or dynamic\n * @param cellX The X position of the cell in which the surface resides\n * @param cellZ The Z position of the cell in which the surface resides\n * @param surface The surface to add\n */\nstatic void add_surface_to_cell(s16 dynamic, s16 cellX, s16 cellZ, struct Surface *surface) {\n    struct SurfaceNode *newNode = alloc_surface_node();\n    struct SurfaceNode *list;\n    s16 surfacePriority;\n    s16 priority;\n    s16 sortDir;\n    s16 listIndex;\n\n    if (surface->normal.y > 0.01) {\n        listIndex = SPATIAL_PARTITION_FLOORS;\n        sortDir = 1; // highest to lowest, then insertion order\n    } else if (surface->normal.y < -0.01) {\n        listIndex = SPATIAL_PARTITION_CEILS;\n        sortDir = -1; // lowest to highest, then insertion order\n    } else {\n        listIndex = SPATIAL_PARTITION_WALLS;\n        sortDir = 0; // insertion order\n\n        if (surface->normal.x < -0.707 || surface->normal.x > 0.707) {\n            surface->flags |= SURFACE_FLAG_X_PROJECTION;\n        }\n    }\n\n    //! (Surface Cucking) Surfaces are sorted by the height of their first\n    //  vertex. Since vertices aren't ordered by height, this causes many\n    //  lower triangles to be sorted higher. This worsens surface cucking since\n    //  many functions only use the first triangle in surface order that fits,\n    //  missing higher surfaces.\n    //  upperY would be a better sort method.\n    surfacePriority = surface->vertex1[1] * sortDir;\n\n    newNode->surface = surface;\n\n    if (dynamic) {\n        list = &gDynamicSurfacePartition[cellZ][cellX][listIndex];\n    } else {\n        list = &gStaticSurfacePartition[cellZ][cellX][listIndex];\n    }\n\n    // Loop until we find the appropriate place for the surface in the list.\n    while (list->next != NULL) {\n        priority = list->next->surface->vertex1[1] * sortDir;\n\n        if (surfacePriority > priority) {\n            break;\n        }\n\n        list = list->next;\n    }\n\n    newNode->next = list->next;\n    list->next = newNode;\n}\n\n/**\n * Returns the lowest of three values.\n */\nstatic s16 min_3(TerrainData a0, TerrainData a1, TerrainData a2) {\n    if (a1 < a0) {\n        a0 = a1;\n    }\n\n    if (a2 < a0) {\n        a0 = a2;\n    }\n\n    return a0;\n}\n\n/**\n * Returns the highest of three values.\n */\nstatic s16 max_3(TerrainData a0, TerrainData a1, TerrainData a2) {\n    if (a1 > a0) {\n        a0 = a1;\n    }\n\n    if (a2 > a0) {\n        a0 = a2;\n    }\n\n    return a0;\n}\n\n/**\n * Every level is split into 16 * 16 cells of surfaces (to limit computing\n * time). This function determines the lower cell for a given x/z position.\n * @param coord The coordinate to test\n */\nstatic s16 lower_cell_index(TerrainData coord) {\n    s16 index;\n\n    // Move from range [-0x2000, 0x2000) to [0, 0x4000)\n    coord += LEVEL_BOUNDARY_MAX;\n    if (coord < 0) {\n        coord = 0;\n    }\n\n    // [0, 16)\n    index = coord / CELL_SIZE;\n\n    // Include extra cell if close to boundary\n    //! Some wall checks are larger than the buffer, meaning wall checks can\n    //  miss walls that are near a cell border.\n    if (coord % CELL_SIZE < 50) {\n        index--;\n    }\n\n    if (index < 0) {\n        index = 0;\n    }\n\n    // Potentially > 15, but since the upper index is <= 15, not exploitable\n    return index;\n}\n\n/**\n * Every level is split into 16 * 16 cells of surfaces (to limit computing\n * time). This function determines the upper cell for a given x/z position.\n * @param coord The coordinate to test\n */\nstatic s16 upper_cell_index(TerrainData coord) {\n    s16 index;\n\n    // Move from range [-0x2000, 0x2000) to [0, 0x4000)\n    coord += LEVEL_BOUNDARY_MAX;\n    if (coord < 0) {\n        coord = 0;\n    }\n\n    // [0, 16)\n    index = coord / CELL_SIZE;\n\n    // Include extra cell if close to boundary\n    //! Some wall checks are larger than the buffer, meaning wall checks can\n    //  miss walls that are near a cell border.\n    if (coord % CELL_SIZE > CELL_SIZE - 50) {\n        index++;\n    }\n\n    if (index > NUM_CELLS_INDEX) {\n        index = NUM_CELLS_INDEX;\n    }\n\n    // Potentially < 0, but since lower index is >= 0, not exploitable\n    return index;\n}\n\n/**\n * Every level is split into 16x16 cells, this takes a surface, finds\n * the appropriate cells (with a buffer), and adds the surface to those\n * cells.\n * @param surface The surface to check\n * @param dynamic Boolean determining whether the surface is static or dynamic\n */\nstatic void add_surface(struct Surface *surface, s32 dynamic) {\n    // minY/maxY maybe? s32 instead of s16, though.\n    UNUSED s32 unused1, unused2;\n    s16 minX, minZ, maxX, maxZ;\n\n    s16 minCellX, minCellZ, maxCellX, maxCellZ;\n\n    s16 cellZ, cellX;\n    // cellY maybe? s32 instead of s16, though.\n    UNUSED s32 unused3 = 0;\n\n    minX = min_3(surface->vertex1[0], surface->vertex2[0], surface->vertex3[0]);\n    minZ = min_3(surface->vertex1[2], surface->vertex2[2], surface->vertex3[2]);\n    maxX = max_3(surface->vertex1[0], surface->vertex2[0], surface->vertex3[0]);\n    maxZ = max_3(surface->vertex1[2], surface->vertex2[2], surface->vertex3[2]);\n\n    minCellX = lower_cell_index(minX);\n    maxCellX = upper_cell_index(maxX);\n    minCellZ = lower_cell_index(minZ);\n    maxCellZ = upper_cell_index(maxZ);\n\n    for (cellZ = minCellZ; cellZ <= maxCellZ; cellZ++) {\n        for (cellX = minCellX; cellX <= maxCellX; cellX++) {\n            add_surface_to_cell(dynamic, cellX, cellZ, surface);\n        }\n    }\n}\n\nUNUSED static void stub_surface_load_1(void) {\n}\n\n/**\n * Initializes a Surface struct using the given vertex data\n * @param vertexData The raw data containing vertex positions\n * @param vertexIndices Helper which tells positions in vertexData to start reading vertices\n */\nstatic struct Surface *read_surface_data(TerrainData *vertexData, TerrainData **vertexIndices) {\n    struct Surface *surface;\n    register s32 x1, y1, z1;\n    register s32 x2, y2, z2;\n    register s32 x3, y3, z3;\n    s32 maxY, minY;\n    f32 nx, ny, nz;\n    f32 mag;\n    TerrainData offset1, offset2, offset3;\n\n    offset1 = 3 * (*vertexIndices)[0];\n    offset2 = 3 * (*vertexIndices)[1];\n    offset3 = 3 * (*vertexIndices)[2];\n\n    x1 = *(vertexData + offset1 + 0);\n    y1 = *(vertexData + offset1 + 1);\n    z1 = *(vertexData + offset1 + 2);\n\n    x2 = *(vertexData + offset2 + 0);\n    y2 = *(vertexData + offset2 + 1);\n    z2 = *(vertexData + offset2 + 2);\n\n    x3 = *(vertexData + offset3 + 0);\n    y3 = *(vertexData + offset3 + 1);\n    z3 = *(vertexData + offset3 + 2);\n\n    // (v2 - v1) x (v3 - v2)\n    nx = (y2 - y1) * (z3 - z2) - (z2 - z1) * (y3 - y2);\n    ny = (z2 - z1) * (x3 - x2) - (x2 - x1) * (z3 - z2);\n    nz = (x2 - x1) * (y3 - y2) - (y2 - y1) * (x3 - x2);\n    mag = sqrtf(nx * nx + ny * ny + nz * nz);\n\n    // Could have used min_3 and max_3 for this...\n    minY = y1;\n    if (y2 < minY) {\n        minY = y2;\n    }\n    if (y3 < minY) {\n        minY = y3;\n    }\n\n    maxY = y1;\n    if (y2 > maxY) {\n        maxY = y2;\n    }\n    if (y3 > maxY) {\n        maxY = y3;\n    }\n\n    // Checking to make sure no DIV/0\n    if (mag < 0.0001) {\n        return NULL;\n    }\n    mag = (f32)(1.0 / mag);\n    nx *= mag;\n    ny *= mag;\n    nz *= mag;\n\n    surface = alloc_surface();\n\n    surface->vertex1[0] = x1;\n    surface->vertex2[0] = x2;\n    surface->vertex3[0] = x3;\n\n    surface->vertex1[1] = y1;\n    surface->vertex2[1] = y2;\n    surface->vertex3[1] = y3;\n\n    surface->vertex1[2] = z1;\n    surface->vertex2[2] = z2;\n    surface->vertex3[2] = z3;\n\n    surface->normal.x = nx;\n    surface->normal.y = ny;\n    surface->normal.z = nz;\n\n    surface->originOffset = -(nx * x1 + ny * y1 + nz * z1);\n\n    surface->lowerY = minY - 5;\n    surface->upperY = maxY + 5;\n\n    return surface;\n}\n\n/**\n * Returns whether a surface has exertion/moves Mario\n * based on the surface type.\n */\nstatic s32 surface_has_force(TerrainData surfaceType) {\n    s32 hasForce = FALSE;\n\n    switch (surfaceType) {\n        case SURFACE_0004: // Unused\n        case SURFACE_FLOWING_WATER:\n        case SURFACE_DEEP_MOVING_QUICKSAND:\n        case SURFACE_SHALLOW_MOVING_QUICKSAND:\n        case SURFACE_MOVING_QUICKSAND:\n        case SURFACE_HORIZONTAL_WIND:\n        case SURFACE_INSTANT_MOVING_QUICKSAND:\n            hasForce = TRUE;\n            break;\n\n        default:\n            break;\n    }\n\n    return hasForce;\n}\n\n/**\n * Returns whether a surface should have the\n * SURFACE_FLAG_NO_CAM_COLLISION flag.\n */\nstatic s32 surf_has_no_cam_collision(TerrainData surfaceType) {\n    s32 flags = 0;\n\n    switch (surfaceType) {\n        case SURFACE_NO_CAM_COLLISION:\n        case SURFACE_NO_CAM_COLLISION_77: // Unused\n        case SURFACE_NO_CAM_COL_VERY_SLIPPERY:\n        case SURFACE_SWITCH:\n            flags = SURFACE_FLAG_NO_CAM_COLLISION;\n            break;\n\n        default:\n            break;\n    }\n\n    return flags;\n}\n\n/**\n * Load in the surfaces for a given surface type. This includes setting the flags,\n * exertion, and room.\n */\nstatic void load_static_surfaces(TerrainData **data, TerrainData *vertexData, TerrainData surfaceType, RoomData **surfaceRooms) {\n    s32 i;\n    s32 numSurfaces;\n    struct Surface *surface;\n    RoomData room = 0;\n    s16 hasForce = surface_has_force(surfaceType);\n    s16 flags = surf_has_no_cam_collision(surfaceType);\n\n    numSurfaces = *(*data);\n    (*data)++;\n\n    for (i = 0; i < numSurfaces; i++) {\n        if (*surfaceRooms != NULL) {\n            room = *(*surfaceRooms);\n            (*surfaceRooms)++;\n        }\n\n        surface = read_surface_data(vertexData, data);\n        if (surface != NULL) {\n            surface->room = room;\n            surface->type = surfaceType;\n            surface->flags = (s8) flags;\n\n            if (hasForce) {\n                surface->force = *(*data + 3);\n            } else {\n                surface->force = 0;\n            }\n\n            add_surface(surface, FALSE);\n        }\n\n        *data += 3;\n        if (hasForce) {\n            (*data)++;\n        }\n    }\n}\n\n/**\n * Read the data for vertices for reference by triangles.\n */\nstatic TerrainData *read_vertex_data(TerrainData **data) {\n    s32 numVertices;\n    UNUSED u8 filler[16];\n    TerrainData *vertexData;\n\n    numVertices = *(*data);\n    (*data)++;\n\n    vertexData = *data;\n    *data += 3 * numVertices;\n\n    return vertexData;\n}\n\n/**\n * Loads in special environmental regions, such as water, poison gas, and JRB fog.\n */\nstatic void load_environmental_regions(TerrainData **data) {\n    s32 numRegions;\n    s32 i;\n\n    gEnvironmentRegions = *data;\n    numRegions = *(*data)++;\n\n    if (numRegions > 20) {\n        CN_DEBUG_PRINTF((\"Error Water Over\\n\"));\n    }\n\n    for (i = 0; i < numRegions; i++) {\n        UNUSED TerrainData val, loX, loZ, hiX, hiZ;\n        TerrainData height;\n\n        val = *(*data)++;\n\n        loX = *(*data)++;\n        hiX = *(*data)++;\n        loZ = *(*data)++;\n        hiZ = *(*data)++;\n\n        height = *(*data)++;\n\n        gEnvironmentLevels[i] = height;\n    }\n}\n\n/**\n * Allocate some of the main pool for surfaces (2300 surf) and for surface nodes (7000 nodes).\n */\nvoid alloc_surface_pools(void) {\n    sSurfacePoolSize = 2300;\n    sSurfaceNodePool = main_pool_alloc(7000 * sizeof(struct SurfaceNode), MEMORY_POOL_LEFT);\n    sSurfacePool = main_pool_alloc(sSurfacePoolSize * sizeof(struct Surface), MEMORY_POOL_LEFT);\n\n    gCCMEnteredSlide = 0;\n    reset_red_coins_collected();\n}\n\n#ifdef NO_SEGMENTED_MEMORY\n/**\n * Get the size of the terrain data, to get the correct size when copying later.\n */\nu32 get_area_terrain_size(TerrainData *data) {\n    TerrainData *startPos = data;\n    s32 end = FALSE;\n    TerrainData terrainLoadType;\n    s32 numVertices;\n    s32 numRegions;\n    s32 numSurfaces;\n    TerrainData hasForce;\n\n    while (!end) {\n        terrainLoadType = *data++;\n\n        switch (terrainLoadType) {\n            case TERRAIN_LOAD_VERTICES:\n                numVertices = *data++;\n                data += 3 * numVertices;\n                break;\n\n            case TERRAIN_LOAD_OBJECTS:\n                data += get_special_objects_size(data);\n                break;\n\n            case TERRAIN_LOAD_ENVIRONMENT:\n                numRegions = *data++;\n                data += 6 * numRegions;\n                break;\n\n            case TERRAIN_LOAD_CONTINUE:\n                continue;\n\n            case TERRAIN_LOAD_END:\n                end = TRUE;\n                break;\n\n            default:\n                numSurfaces = *data++;\n                hasForce = surface_has_force(terrainLoadType);\n                data += (3 + hasForce) * numSurfaces;\n                break;\n        }\n    }\n\n    return data - startPos;\n}\n#endif\n\n\n/**\n * Process the level file, loading in vertices, surfaces, some objects, and environmental\n * boxes (water, gas, JRB fog).\n */\nvoid load_area_terrain(s16 index, TerrainData *data, RoomData *surfaceRooms, s16 *macroObjects) {\n    TerrainData terrainLoadType;\n    TerrainData *vertexData;\n    UNUSED u8 filler[4];\n\n    // Initialize the data for this.\n    gEnvironmentRegions = NULL;\n    unused8038BE90 = 0;\n    gSurfaceNodesAllocated = 0;\n    gSurfacesAllocated = 0;\n\n    clear_static_surfaces();\n\n    // A while loop iterating through each section of the level data. Sections of data\n    // are prefixed by a terrain \"type.\" This type is reused for surfaces as the surface\n    // type.\n    while (TRUE) {\n        terrainLoadType = *data;\n        data++;\n\n        if (TERRAIN_LOAD_IS_SURFACE_TYPE_LOW(terrainLoadType)) {\n            load_static_surfaces(&data, vertexData, terrainLoadType, &surfaceRooms);\n        } else if (terrainLoadType == TERRAIN_LOAD_VERTICES) {\n            vertexData = read_vertex_data(&data);\n        } else if (terrainLoadType == TERRAIN_LOAD_OBJECTS) {\n            spawn_special_objects(index, &data);\n        } else if (terrainLoadType == TERRAIN_LOAD_ENVIRONMENT) {\n            load_environmental_regions(&data);\n        } else if (terrainLoadType == TERRAIN_LOAD_CONTINUE) {\n            continue;\n        } else if (terrainLoadType == TERRAIN_LOAD_END) {\n            break;\n        } else if (TERRAIN_LOAD_IS_SURFACE_TYPE_HIGH(terrainLoadType)) {\n            load_static_surfaces(&data, vertexData, terrainLoadType, &surfaceRooms);\n        } else {\n            CN_DEBUG_PRINTF((\" BGCode Error \\n\"));\n        }\n    }\n\n    if (macroObjects != NULL && *macroObjects != -1) {\n        // If the first macro object presetID is within the range [0, 29].\n        // Generally an early spawning method, every object is in BBH (the first level).\n        if (0 <= *macroObjects && *macroObjects < 30) {\n            spawn_macro_objects_hardcoded(index, macroObjects);\n        }\n        // A more general version that can spawn more objects.\n        else {\n            spawn_macro_objects(index, macroObjects);\n        }\n    }\n\n    gNumStaticSurfaceNodes = gSurfaceNodesAllocated;\n    gNumStaticSurfaces = gSurfacesAllocated;\n}\n\n/**\n * If not in time stop, clear the surface partitions.\n */\nvoid clear_dynamic_surfaces(void) {\n    if (!(gTimeStopState & TIME_STOP_ACTIVE)) {\n        gSurfacesAllocated = gNumStaticSurfaces;\n        gSurfaceNodesAllocated = gNumStaticSurfaceNodes;\n\n        clear_spatial_partition(&gDynamicSurfacePartition[0][0]);\n    }\n}\n\nUNUSED static void unused_80383604(void) {\n}\n\n/**\n * Applies an object's transformation to the object's vertices.\n */\nvoid transform_object_vertices(TerrainData **data, TerrainData *vertexData) {\n    register TerrainData *vertices;\n    register f32 vx, vy, vz;\n    register s32 numVertices;\n\n    Mat4 *objectTransform;\n    Mat4 m;\n\n    objectTransform = &gCurrentObject->transform;\n\n    numVertices = *(*data);\n    (*data)++;\n\n    vertices = *data;\n\n    if (gCurrentObject->header.gfx.throwMatrix == NULL) {\n        gCurrentObject->header.gfx.throwMatrix = objectTransform;\n        obj_build_transform_from_pos_and_angle(gCurrentObject, O_POS_INDEX, O_FACE_ANGLE_INDEX);\n    }\n\n    obj_apply_scale_to_matrix(gCurrentObject, m, *objectTransform);\n\n    // Go through all vertices, rotating and translating them to transform the object.\n    while (numVertices--) {\n        vx = *(vertices++);\n        vy = *(vertices++);\n        vz = *(vertices++);\n\n        //! No bounds check on vertex data\n        *vertexData++ = (TerrainData)(vx * m[0][0] + vy * m[1][0] + vz * m[2][0] + m[3][0]);\n        *vertexData++ = (TerrainData)(vx * m[0][1] + vy * m[1][1] + vz * m[2][1] + m[3][1]);\n        *vertexData++ = (TerrainData)(vx * m[0][2] + vy * m[1][2] + vz * m[2][2] + m[3][2]);\n    }\n\n    *data = vertices;\n}\n\n/**\n * Load in the surfaces for the gCurrentObject. This includes setting the flags, exertion, and room.\n */\nvoid load_object_surfaces(TerrainData **data, TerrainData *vertexData) {\n    s32 surfaceType;\n    s32 i;\n    s32 numSurfaces;\n    TerrainData hasForce;\n    TerrainData flags;\n    s16 room;\n\n    surfaceType = *(*data);\n    (*data)++;\n\n    numSurfaces = *(*data);\n    (*data)++;\n\n    hasForce = surface_has_force(surfaceType);\n\n    flags = surf_has_no_cam_collision(surfaceType);\n    flags |= SURFACE_FLAG_DYNAMIC;\n\n    // The DDD warp is initially loaded at the origin and moved to the proper\n    // position in paintings.c and doesn't update its room, so set it here.\n    if (gCurrentObject->behavior == segmented_to_virtual(bhvDDDWarp)) {\n        room = 5;\n    } else {\n        room = 0;\n    }\n\n    for (i = 0; i < numSurfaces; i++) {\n        struct Surface *surface = read_surface_data(vertexData, data);\n\n        if (surface != NULL) {\n            surface->object = gCurrentObject;\n            surface->type = surfaceType;\n\n            if (hasForce) {\n                surface->force = *(*data + 3);\n            } else {\n                surface->force = 0;\n            }\n\n            surface->flags |= flags;\n            surface->room = (s8) room;\n            add_surface(surface, TRUE);\n        }\n\n        if (hasForce) {\n            *data += 4;\n        } else {\n            *data += 3;\n        }\n    }\n}\n\n/**\n * Transform an object's vertices, reload them, and render the object.\n */\nvoid load_object_collision_model(void) {\n    UNUSED u8 filler[4];\n    TerrainData vertexData[600];\n\n    TerrainData *collisionData = gCurrentObject->collisionData;\n    f32 marioDist = gCurrentObject->oDistanceToMario;\n    f32 tangibleDist = gCurrentObject->oCollisionDistance;\n\n    // On an object's first frame, the distance is set to 19000.0f.\n    // If the distance hasn't been updated, update it now.\n    if (gCurrentObject->oDistanceToMario == 19000.0f) {\n        marioDist = dist_between_objects(gCurrentObject, gMarioObject);\n    }\n\n    // If the object collision is supposed to be loaded more than the\n    // drawing distance of 4000, extend the drawing range.\n    if (gCurrentObject->oCollisionDistance > 4000.0f) {\n        gCurrentObject->oDrawingDistance = gCurrentObject->oCollisionDistance;\n    }\n\n    // Update if no Time Stop, in range, and in the current room.\n    if (!(gTimeStopState & TIME_STOP_ACTIVE) && marioDist < tangibleDist\n        && !(gCurrentObject->activeFlags & ACTIVE_FLAG_IN_DIFFERENT_ROOM)) {\n        collisionData++;\n        transform_object_vertices(&collisionData, vertexData);\n\n        // TERRAIN_LOAD_CONTINUE acts as an \"end\" to the terrain data.\n        while (*collisionData != TERRAIN_LOAD_CONTINUE) {\n            load_object_surfaces(&collisionData, vertexData);\n        }\n    }\n\n    if (marioDist < gCurrentObject->oDrawingDistance) {\n        gCurrentObject->header.gfx.node.flags |= GRAPH_RENDER_ACTIVE;\n    } else {\n        gCurrentObject->header.gfx.node.flags &= ~GRAPH_RENDER_ACTIVE;\n    }\n}\n"
  },
  {
    "path": "src/engine/surface_load.h",
    "content": "#ifndef SURFACE_LOAD_H\n#define SURFACE_LOAD_H\n\n#include <PR/ultratypes.h>\n\n#include \"surface_collision.h\"\n#include \"types.h\"\n\n#define NUM_CELLS       (2 * LEVEL_BOUNDARY_MAX / CELL_SIZE)\n#define NUM_CELLS_INDEX (NUM_CELLS - 1)\n\nstruct SurfaceNode {\n    struct SurfaceNode *next;\n    struct Surface *surface;\n};\n\nenum {\n    SPATIAL_PARTITION_FLOORS,\n    SPATIAL_PARTITION_CEILS,\n    SPATIAL_PARTITION_WALLS\n};\n\ntypedef struct SurfaceNode SpatialPartitionCell[3];\n\n// Needed for bs bss reordering memes.\nextern s32 unused8038BE90;\n\nextern SpatialPartitionCell gStaticSurfacePartition[NUM_CELLS][NUM_CELLS];\nextern SpatialPartitionCell gDynamicSurfacePartition[NUM_CELLS][NUM_CELLS];\nextern struct SurfaceNode *sSurfaceNodePool;\nextern struct Surface *sSurfacePool;\nextern s16 sSurfacePoolSize;\n\nvoid alloc_surface_pools(void);\n#ifdef NO_SEGMENTED_MEMORY\nu32 get_area_terrain_size(TerrainData *data);\n#endif\nvoid load_area_terrain(s16 index, TerrainData *data, RoomData *surfaceRooms, s16 *macroObjects);\nvoid clear_dynamic_surfaces(void);\nvoid load_object_collision_model(void);\n\n#endif // SURFACE_LOAD_H\n"
  },
  {
    "path": "src/game/area.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"prevent_bss_reordering.h\"\n#include \"area.h\"\n#include \"sm64.h\"\n#include \"gfx_dimensions.h\"\n#include \"behavior_data.h\"\n#include \"game_init.h\"\n#include \"object_list_processor.h\"\n#include \"engine/surface_load.h\"\n#include \"ingame_menu.h\"\n#include \"screen_transition.h\"\n#include \"mario.h\"\n#include \"mario_actions_cutscene.h\"\n#include \"print.h\"\n#include \"hud.h\"\n#include \"audio/external.h\"\n#include \"area.h\"\n#include \"rendering_graph_node.h\"\n#include \"level_update.h\"\n#include \"engine/geo_layout.h\"\n#include \"save_file.h\"\n#include \"level_table.h\"\n#include \"dialog_ids.h\"\n\nstruct SpawnInfo gPlayerSpawnInfos[1];\nstruct GraphNode *D_8033A160[0x100];\nstruct Area gAreaData[8];\n\nstruct WarpTransition gWarpTransition;\n\ns16 gCurrCourseNum;\ns16 gCurrActNum;\ns16 gCurrAreaIndex;\ns16 gSavedCourseNum;\ns16 gMenuOptSelectIndex;\ns16 gSaveOptSelectIndex;\n\nstruct SpawnInfo *gMarioSpawnInfo = &gPlayerSpawnInfos[0];\nstruct GraphNode **gLoadedGraphNodes = D_8033A160;\nstruct Area *gAreas = gAreaData;\nstruct Area *gCurrentArea = NULL;\nstruct CreditsEntry *gCurrCreditsEntry = NULL;\nVp *D_8032CE74 = NULL;\nVp *D_8032CE78 = NULL;\ns16 gWarpTransDelay = 0;\nu32 gFBSetColor = 0;\nu32 gWarpTransFBSetColor = 0;\nu8 gWarpTransRed = 0;\nu8 gWarpTransGreen = 0;\nu8 gWarpTransBlue = 0;\ns16 gCurrSaveFileNum = 1;\ns16 gCurrLevelNum = LEVEL_MIN;\n\n/*\n * The following two tables are used in get_mario_spawn_type() to determine spawn type\n * from warp behavior.\n * When looping through sWarpBhvSpawnTable, if the behavior function in the table matches\n * the spawn behavior executed, the index of that behavior is used with sSpawnTypeFromWarpBhv\n*/\n\nconst BehaviorScript *sWarpBhvSpawnTable[] = {\n    bhvDoorWarp,                bhvStar,                   bhvExitPodiumWarp,          bhvWarp,\n    bhvWarpPipe,                bhvFadingWarp,             bhvInstantActiveWarp,       bhvAirborneWarp,\n    bhvHardAirKnockBackWarp,    bhvSpinAirborneCircleWarp, bhvDeathWarp,               bhvSpinAirborneWarp,\n    bhvFlyingWarp,              bhvSwimmingWarp,           bhvPaintingStarCollectWarp, bhvPaintingDeathWarp,\n    bhvAirborneStarCollectWarp, bhvAirborneDeathWarp,      bhvLaunchStarCollectWarp,   bhvLaunchDeathWarp,\n};\n\nu8 sSpawnTypeFromWarpBhv[] = {\n    MARIO_SPAWN_DOOR_WARP,             MARIO_SPAWN_UNKNOWN_02,           MARIO_SPAWN_UNKNOWN_03,            MARIO_SPAWN_UNKNOWN_03,\n    MARIO_SPAWN_UNKNOWN_03,            MARIO_SPAWN_TELEPORT,             MARIO_SPAWN_INSTANT_ACTIVE,        MARIO_SPAWN_AIRBORNE,\n    MARIO_SPAWN_HARD_AIR_KNOCKBACK,    MARIO_SPAWN_SPIN_AIRBORNE_CIRCLE, MARIO_SPAWN_DEATH,                 MARIO_SPAWN_SPIN_AIRBORNE,\n    MARIO_SPAWN_FLYING,                MARIO_SPAWN_SWIMMING,             MARIO_SPAWN_PAINTING_STAR_COLLECT, MARIO_SPAWN_PAINTING_DEATH,\n    MARIO_SPAWN_AIRBORNE_STAR_COLLECT, MARIO_SPAWN_AIRBORNE_DEATH,       MARIO_SPAWN_LAUNCH_STAR_COLLECT,   MARIO_SPAWN_LAUNCH_DEATH,\n};\n\nVp D_8032CF00 = { {\n    { 640, 480, 511, 0 },\n    { 640, 480, 511, 0 },\n} };\n\n#ifdef VERSION_EU\nconst char *gNoControllerMsg[] = {\n    \"NO CONTROLLER\",\n    \"MANETTE DEBRANCHEE\",\n    \"CONTROLLER FEHLT\",\n};\n#endif\n\nvoid override_viewport_and_clip(Vp *a, Vp *b, u8 c, u8 d, u8 e) {\n    u16 sp6 = ((c >> 3) << 11) | ((d >> 3) << 6) | ((e >> 3) << 1) | 1;\n\n    gFBSetColor = (sp6 << 16) | sp6;\n    D_8032CE74 = a;\n    D_8032CE78 = b;\n}\n\nvoid set_warp_transition_rgb(u8 red, u8 green, u8 blue) {\n    u16 warpTransitionRGBA16 = ((red >> 3) << 11) | ((green >> 3) << 6) | ((blue >> 3) << 1) | 1;\n\n    gWarpTransFBSetColor = (warpTransitionRGBA16 << 16) | warpTransitionRGBA16;\n    gWarpTransRed = red;\n    gWarpTransGreen = green;\n    gWarpTransBlue = blue;\n}\n\nvoid print_intro_text(void) {\n#ifdef VERSION_CN\n    u8 sp18[] = { 0xB0, 0x00 }; // TODO: iQue colorful text\n#endif\n#ifdef VERSION_EU\n    s32 language = eu_get_language();\n#endif\n    if ((gGlobalTimer & 31) < 20) {\n        if (gControllerBits == 0) {\n#ifdef VERSION_EU\n            print_text_centered(SCREEN_WIDTH / 2, 20, gNoControllerMsg[language]);\n#else\n            print_text_centered(SCREEN_WIDTH / 2, 20, \"NO CONTROLLER\");\n#endif\n        } else {\n#ifdef VERSION_EU\n            print_text(20, 20, \"START\");\n#else\n#ifdef VERSION_CN\n            print_text_centered(60, 38, (char *) sp18);\n#else\n            print_text_centered(60, 38, \"PRESS\");\n#endif\n            print_text_centered(60, 20, \"START\");\n#endif\n        }\n    }\n}\n\nu32 get_mario_spawn_type(struct Object *o) {\n    s32 i;\n    const BehaviorScript *behavior = virtual_to_segmented(0x13, o->behavior);\n\n    for (i = 0; i < 20; i++) {\n        if (behavior == sWarpBhvSpawnTable[i]) {\n            return sSpawnTypeFromWarpBhv[i];\n        }\n    }\n    return 0;\n}\n\nstruct ObjectWarpNode *area_get_warp_node(u8 id) {\n    struct ObjectWarpNode *node = NULL;\n\n    for (node = gCurrentArea->warpNodes; node != NULL; node = node->next) {\n        if (node->node.id == id) {\n            break;\n        }\n    }\n    return node;\n}\n\nstruct ObjectWarpNode *area_get_warp_node_from_params(struct Object *o) {\n    u8 id = (o->oBhvParams & 0x00FF0000) >> 16;\n\n    return area_get_warp_node(id);\n}\n\nvoid load_obj_warp_nodes(void) {\n    struct ObjectWarpNode *sp24;\n    struct Object *sp20 = (struct Object *) gObjParentGraphNode.children;\n\n    do {\n        struct Object *sp1C = sp20;\n\n        if (sp1C->activeFlags != ACTIVE_FLAG_DEACTIVATED && get_mario_spawn_type(sp1C) != 0) {\n            sp24 = area_get_warp_node_from_params(sp1C);\n            if (sp24 != NULL) {\n                sp24->object = sp1C;\n            }\n        }\n    } while ((sp20 = (struct Object *) sp20->header.gfx.node.next)\n             != (struct Object *) gObjParentGraphNode.children);\n}\n\nvoid clear_areas(void) {\n    s32 i;\n\n    gCurrentArea = NULL;\n    gWarpTransition.isActive = FALSE;\n    gWarpTransition.pauseRendering = FALSE;\n    gMarioSpawnInfo->areaIndex = -1;\n\n    for (i = 0; i < 8; i++) {\n        gAreaData[i].index = i;\n        gAreaData[i].flags = 0;\n        gAreaData[i].terrainType = 0;\n        gAreaData[i].unk04 = NULL;\n        gAreaData[i].terrainData = NULL;\n        gAreaData[i].surfaceRooms = NULL;\n        gAreaData[i].macroObjects = NULL;\n        gAreaData[i].warpNodes = NULL;\n        gAreaData[i].paintingWarpNodes = NULL;\n        gAreaData[i].instantWarps = NULL;\n        gAreaData[i].objectSpawnInfos = NULL;\n        gAreaData[i].camera = NULL;\n        gAreaData[i].unused = NULL;\n        gAreaData[i].whirlpools[0] = NULL;\n        gAreaData[i].whirlpools[1] = NULL;\n        gAreaData[i].dialog[0] = DIALOG_NONE;\n        gAreaData[i].dialog[1] = DIALOG_NONE;\n        gAreaData[i].musicParam = 0;\n        gAreaData[i].musicParam2 = 0;\n    }\n}\n\nvoid clear_area_graph_nodes(void) {\n    s32 i;\n\n    if (gCurrentArea != NULL) {\n        geo_call_global_function_nodes(&gCurrentArea->unk04->node, GEO_CONTEXT_AREA_UNLOAD);\n        gCurrentArea = NULL;\n        gWarpTransition.isActive = FALSE;\n    }\n\n    for (i = 0; i < 8; i++) {\n        if (gAreaData[i].unk04 != NULL) {\n            geo_call_global_function_nodes(&gAreaData[i].unk04->node, GEO_CONTEXT_AREA_INIT);\n            gAreaData[i].unk04 = NULL;\n        }\n    }\n}\n\nvoid load_area(s32 index) {\n    if (gCurrentArea == NULL && gAreaData[index].unk04 != NULL) {\n        gCurrentArea = &gAreaData[index];\n        gCurrAreaIndex = gCurrentArea->index;\n\n        if (gCurrentArea->terrainData != NULL) {\n            load_area_terrain(index, gCurrentArea->terrainData, gCurrentArea->surfaceRooms,\n                              gCurrentArea->macroObjects);\n        }\n\n        if (gCurrentArea->objectSpawnInfos != NULL) {\n            spawn_objects_from_info(0, gCurrentArea->objectSpawnInfos);\n        }\n\n        load_obj_warp_nodes();\n        geo_call_global_function_nodes(&gCurrentArea->unk04->node, GEO_CONTEXT_AREA_LOAD);\n    }\n}\n\nvoid unload_area(void) {\n    if (gCurrentArea != NULL) {\n        unload_objects_from_area(0, gCurrentArea->index);\n        geo_call_global_function_nodes(&gCurrentArea->unk04->node, GEO_CONTEXT_AREA_UNLOAD);\n\n        gCurrentArea->flags = 0;\n        gCurrentArea = NULL;\n        gWarpTransition.isActive = FALSE;\n    }\n}\n\nvoid load_mario_area(void) {\n    stop_sounds_in_continuous_banks();\n    load_area(gMarioSpawnInfo->areaIndex);\n\n    if (gCurrentArea->index == gMarioSpawnInfo->areaIndex) {\n        gCurrentArea->flags |= 0x01;\n        spawn_objects_from_info(0, gMarioSpawnInfo);\n    }\n}\n\nvoid unload_mario_area(void) {\n    if (gCurrentArea != NULL && (gCurrentArea->flags & 0x01)) {\n        unload_objects_from_area(0, gMarioSpawnInfo->activeAreaIndex);\n\n        gCurrentArea->flags &= ~0x01;\n        if (gCurrentArea->flags == 0) {\n            unload_area();\n        }\n    }\n}\n\nvoid change_area(s32 index) {\n    s32 areaFlags = gCurrentArea->flags;\n\n    if (gCurrAreaIndex != index) {\n        unload_area();\n        load_area(index);\n\n        gCurrentArea->flags = areaFlags;\n        gMarioObject->oActiveParticleFlags = 0;\n    }\n\n    if (areaFlags & 0x01) {\n        gMarioObject->header.gfx.areaIndex = index, gMarioSpawnInfo->areaIndex = index;\n    }\n}\n\nvoid area_update_objects(void) {\n    gAreaUpdateCounter++;\n    update_objects(0);\n}\n\n/*\n * Sets up the information needed to play a warp transition, including the\n * transition type, time in frames, and the RGB color that will fill the screen.\n */\nvoid play_transition(s16 transType, s16 time, u8 red, u8 green, u8 blue) {\n    gWarpTransition.isActive = TRUE;\n    gWarpTransition.type = transType;\n    gWarpTransition.time = time;\n    gWarpTransition.pauseRendering = FALSE;\n\n    // The lowest bit of transType determines if the transition is fading in or out.\n    if (transType & 1) {\n        set_warp_transition_rgb(red, green, blue);\n    } else {\n        red = gWarpTransRed, green = gWarpTransGreen, blue = gWarpTransBlue;\n    }\n\n    if (transType < 8) { // if transition is RGB\n        gWarpTransition.data.red = red;\n        gWarpTransition.data.green = green;\n        gWarpTransition.data.blue = blue;\n    } else { // if transition is textured\n        gWarpTransition.data.red = red;\n        gWarpTransition.data.green = green;\n        gWarpTransition.data.blue = blue;\n\n        // Both the start and end textured transition are always located in the middle of the screen.\n        // If you really wanted to, you could place the start at one corner and the end at\n        // the opposite corner. This will make the transition image look like it is moving\n        // across the screen.\n        gWarpTransition.data.startTexX = SCREEN_WIDTH / 2;\n        gWarpTransition.data.startTexY = SCREEN_HEIGHT / 2;\n        gWarpTransition.data.endTexX = SCREEN_WIDTH / 2;\n        gWarpTransition.data.endTexY = SCREEN_HEIGHT / 2;\n\n        gWarpTransition.data.texTimer = 0;\n\n        if (transType & 1) { // Is the image fading in?\n            gWarpTransition.data.startTexRadius = GFX_DIMENSIONS_FULL_RADIUS;\n            if (transType >= 0x0F) {\n                gWarpTransition.data.endTexRadius = 16;\n            } else {\n                gWarpTransition.data.endTexRadius = 0;\n            }\n        } else { // The image is fading out. (Reverses start & end circles)\n            if (transType >= 0x0E) {\n                gWarpTransition.data.startTexRadius = 16;\n            } else {\n                gWarpTransition.data.startTexRadius = 0;\n            }\n            gWarpTransition.data.endTexRadius = GFX_DIMENSIONS_FULL_RADIUS;\n        }\n    }\n}\n\n/*\n * Sets up the information needed to play a warp transition, including the\n * transition type, time in frames, and the RGB color that will fill the screen.\n * The transition will play only after a number of frames specified by 'delay'\n */\nvoid play_transition_after_delay(s16 transType, s16 time, u8 red, u8 green, u8 blue, s16 delay) {\n    gWarpTransDelay = delay; // Number of frames to delay playing the transition.\n    play_transition(transType, time, red, green, blue);\n}\n\nvoid render_game(void) {\n    if (gCurrentArea != NULL && !gWarpTransition.pauseRendering) {\n        geo_process_root(gCurrentArea->unk04, D_8032CE74, D_8032CE78, gFBSetColor);\n\n        gSPViewport(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&D_8032CF00));\n\n        gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, BORDER_HEIGHT, SCREEN_WIDTH,\n                      SCREEN_HEIGHT - BORDER_HEIGHT);\n        render_hud();\n\n        gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);\n        render_text_labels();\n        do_cutscene_handler();\n        print_displaying_credits_entry();\n\n        gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, BORDER_HEIGHT, SCREEN_WIDTH,\n                      SCREEN_HEIGHT - BORDER_HEIGHT);\n        gMenuOptSelectIndex = render_menus_and_dialogs();\n        if (gMenuOptSelectIndex != MENU_OPT_NONE) {\n            gSaveOptSelectIndex = gMenuOptSelectIndex;\n        }\n\n        if (D_8032CE78 != NULL) {\n            make_viewport_clip_rect(D_8032CE78);\n        } else {\n            gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, BORDER_HEIGHT, SCREEN_WIDTH,\n                          SCREEN_HEIGHT - BORDER_HEIGHT);\n        }\n\n        if (gWarpTransition.isActive) {\n            if (gWarpTransDelay == 0) {\n                gWarpTransition.isActive = !render_screen_transition(0, gWarpTransition.type, gWarpTransition.time,\n                                                                     &gWarpTransition.data);\n                if (!gWarpTransition.isActive) {\n                    if (gWarpTransition.type & 1) {\n                        gWarpTransition.pauseRendering = TRUE;\n                    } else {\n                        set_warp_transition_rgb(0, 0, 0);\n                    }\n                }\n            } else {\n                gWarpTransDelay--;\n            }\n        }\n    } else {\n        render_text_labels();\n        if (D_8032CE78 != NULL) {\n            clear_viewport(D_8032CE78, gWarpTransFBSetColor);\n        } else {\n            clear_framebuffer(gWarpTransFBSetColor);\n        }\n    }\n\n    D_8032CE74 = NULL;\n    D_8032CE78 = NULL;\n}\n"
  },
  {
    "path": "src/game/area.h",
    "content": "#ifndef AREA_H\n#define AREA_H\n\n#include <PR/ultratypes.h>\n\n#include \"types.h\"\n#include \"camera.h\"\n#include \"engine/graph_node.h\"\n\nstruct WarpNode {\n    /*00*/ u8 id;\n    /*01*/ u8 destLevel;\n    /*02*/ u8 destArea;\n    /*03*/ u8 destNode;\n};\n\nstruct ObjectWarpNode {\n    /*0x00*/ struct WarpNode node;\n    /*0x04*/ struct Object *object;\n    /*0x08*/ struct ObjectWarpNode *next;\n};\n\n// From Surface 0x1B to 0x1E\n#define INSTANT_WARP_INDEX_START  0x00 // Equal and greater than Surface 0x1B\n#define INSTANT_WARP_INDEX_STOP   0x04 // Less than Surface 0x1F\n\nstruct InstantWarp {\n    /*0x00*/ u8 id; // 0 = 0x1B / 1 = 0x1C / 2 = 0x1D / 3 = 0x1E\n    /*0x01*/ u8 area;\n    /*0x02*/ Vec3s displacement;\n};\n\nstruct SpawnInfo {\n    /*0x00*/ Vec3s startPos;\n    /*0x06*/ Vec3s startAngle;\n    /*0x0C*/ s8 areaIndex;\n    /*0x0D*/ s8 activeAreaIndex;\n    /*0x10*/ u32 behaviorArg;\n    /*0x14*/ void *behaviorScript;\n    /*0x18*/ struct GraphNode *model;\n    /*0x1C*/ struct SpawnInfo *next;\n};\n\nstruct UnusedArea28 {\n    /*0x00*/ s16 unk00;\n    /*0x02*/ s16 unk02;\n    /*0x04*/ s16 unk04;\n    /*0x06*/ s16 unk06;\n    /*0x08*/ s16 unk08;\n};\n\nstruct Whirlpool {\n    /*0x00*/ Vec3s pos;\n    /*0x03*/ s16 strength;\n};\n\nstruct Area {\n    /*0x00*/ s8 index;\n    /*0x01*/ s8 flags; // Only has 1 flag: 0x01 = Is this the active area?\n    /*0x02*/ u16 terrainType; // default terrain of the level (set from level script cmd 0x31)\n    /*0x04*/ struct GraphNodeRoot *unk04; // geometry layout data\n    /*0x08*/ TerrainData *terrainData; // collision data (set from level script cmd 0x2E)\n    /*0x0C*/ RoomData *surfaceRooms; // (set from level script cmd 0x2F)\n    /*0x10*/ s16 *macroObjects; // Macro Objects Ptr (set from level script cmd 0x39)\n    /*0x14*/ struct ObjectWarpNode *warpNodes;\n    /*0x18*/ struct WarpNode *paintingWarpNodes;\n    /*0x1C*/ struct InstantWarp *instantWarps;\n    /*0x20*/ struct SpawnInfo *objectSpawnInfos;\n    /*0x24*/ struct Camera *camera;\n    /*0x28*/ struct UnusedArea28 *unused; // Filled by level script 0x3A, but is unused.\n    /*0x2C*/ struct Whirlpool *whirlpools[2];\n    /*0x34*/ u8 dialog[2]; // Level start dialog number (set by level script cmd 0x30)\n    /*0x36*/ u16 musicParam;\n    /*0x38*/ u16 musicParam2;\n};\n\n// All the transition data to be used in screen_transition.c\nstruct WarpTransitionData {\n    /*0x00*/ u8 red;\n    /*0x01*/ u8 green;\n    /*0x02*/ u8 blue;\n\n    /*0x04*/ s16 startTexRadius;\n    /*0x06*/ s16 endTexRadius;\n    /*0x08*/ s16 startTexX;\n    /*0x0A*/ s16 startTexY;\n    /*0x0C*/ s16 endTexX;\n    /*0x0E*/ s16 endTexY;\n\n    /*0x10*/ s16 texTimer; // always 0, does seems to affect transition when disabled\n};\n\n#define WARP_TRANSITION_FADE_FROM_COLOR  0x00\n#define WARP_TRANSITION_FADE_INTO_COLOR  0x01\n#define WARP_TRANSITION_FADE_FROM_STAR   0x08\n#define WARP_TRANSITION_FADE_INTO_STAR   0x09\n#define WARP_TRANSITION_FADE_FROM_CIRCLE 0x0A\n#define WARP_TRANSITION_FADE_INTO_CIRCLE 0x0B\n#define WARP_TRANSITION_FADE_FROM_MARIO  0x10\n#define WARP_TRANSITION_FADE_INTO_MARIO  0x11\n#define WARP_TRANSITION_FADE_FROM_BOWSER 0x12\n#define WARP_TRANSITION_FADE_INTO_BOWSER 0x13\n\nstruct WarpTransition {\n    /*0x00*/ u8 isActive;       // Is the transition active. (either TRUE or FALSE)\n    /*0x01*/ u8 type;           // Determines the type of transition to use (circle, star, etc.)\n    /*0x02*/ u8 time;           // Amount of time to complete the transition (in frames)\n    /*0x03*/ u8 pauseRendering; // Should the game stop rendering. (either TRUE or FALSE)\n    /*0x04*/ struct WarpTransitionData data;\n};\n\nenum MenuOption {\n    MENU_OPT_NONE,\n    MENU_OPT_1,\n    MENU_OPT_2,\n    MENU_OPT_3,\n    MENU_OPT_DEFAULT = MENU_OPT_1,\n\n    // Course Pause Menu\n    MENU_OPT_CONTINUE = MENU_OPT_1,\n    MENU_OPT_EXIT_COURSE = MENU_OPT_2,\n    MENU_OPT_CAMERA_ANGLE_R = MENU_OPT_3,\n\n    // Save Menu\n    MENU_OPT_SAVE_AND_CONTINUE = MENU_OPT_1,\n    MENU_OPT_SAVE_AND_QUIT = MENU_OPT_2,\n    MENU_OPT_CONTINUE_DONT_SAVE = MENU_OPT_3\n};\n\nextern struct GraphNode **gLoadedGraphNodes;\nextern struct SpawnInfo gPlayerSpawnInfos[];\nextern struct GraphNode *D_8033A160[];\nextern struct Area gAreaData[];\nextern struct WarpTransition gWarpTransition;\nextern s16 gCurrCourseNum;\nextern s16 gCurrActNum;\nextern s16 gCurrAreaIndex;\nextern s16 gSavedCourseNum;\nextern s16 gMenuOptSelectIndex;\nextern s16 gSaveOptSelectIndex;\n\nextern struct SpawnInfo *gMarioSpawnInfo;\n\nextern struct Area *gAreas;\nextern struct Area *gCurrentArea;\n\nextern s16 gCurrSaveFileNum;\nextern s16 gCurrLevelNum;\n\n\nvoid override_viewport_and_clip(Vp *a, Vp *b, u8 c, u8 d, u8 e);\nvoid print_intro_text(void);\nu32 get_mario_spawn_type(struct Object *o);\nstruct ObjectWarpNode *area_get_warp_node(u8 id);\nvoid clear_areas(void);\nvoid clear_area_graph_nodes(void);\nvoid load_area(s32 index);\nvoid unload_area(void);\nvoid load_mario_area(void);\nvoid unload_mario_area(void);\nvoid change_area(s32 index);\nvoid area_update_objects(void);\nvoid play_transition(s16 transType, s16 time, u8 red, u8 green, u8 blue);\nvoid play_transition_after_delay(s16 transType, s16 time, u8 red, u8 green, u8 blue, s16 delay);\nvoid render_game(void);\n\n#endif // AREA_H\n"
  },
  {
    "path": "src/game/behavior_actions.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"types.h\"\n#include \"actors/common1.h\"\n#include \"actors/group12.h\"\n#include \"actors/group13.h\"\n#include \"area.h\"\n#include \"audio/external.h\"\n#include \"behavior_actions.h\"\n#include \"behavior_data.h\"\n#include \"camera.h\"\n#include \"debug.h\"\n#include \"dialog_ids.h\"\n#include \"engine/behavior_script.h\"\n#include \"engine/graph_node.h\"\n#include \"engine/math_util.h\"\n#include \"engine/surface_collision.h\"\n#include \"engine/surface_load.h\"\n#include \"game_init.h\"\n#include \"ingame_menu.h\"\n#include \"interaction.h\"\n#include \"level_misc_macros.h\"\n#include \"level_table.h\"\n#include \"level_update.h\"\n#include \"levels/bob/header.h\"\n#include \"levels/bowser_3/header.h\"\n#include \"levels/castle_inside/header.h\"\n#include \"levels/hmc/header.h\"\n#include \"main.h\"\n#include \"mario.h\"\n#include \"mario_actions_cutscene.h\"\n#include \"mario_step.h\"\n#include \"obj_behaviors.h\"\n#include \"obj_behaviors_2.h\"\n#include \"object_constants.h\"\n#include \"object_helpers.h\"\n#include \"object_list_processor.h\"\n#include \"paintings.h\"\n#include \"platform_displacement.h\"\n#include \"rendering_graph_node.h\"\n#include \"save_file.h\"\n#include \"seq_ids.h\"\n#include \"sm64.h\"\n#include \"spawn_object.h\"\n#include \"spawn_sound.h\"\n#include \"rumble_init.h\"\n\n#define o gCurrentObject\n\nstatic s32 sCapSaveFlags[] = {\n    SAVE_FLAG_HAVE_WING_CAP,\n    SAVE_FLAG_HAVE_METAL_CAP,\n    SAVE_FLAG_HAVE_VANISH_CAP,\n};\n\n// Boo Roll\nstatic s16 sBooHitRotations[] = {\n    6047, 5664, 5292, 4934, 4587, 4254, 3933, 3624, 3329, 3046, 2775,\n    2517, 2271, 2039, 1818, 1611, 1416, 1233, 1063, 906,  761,  629,\n    509,  402,  308,  226,  157,  100,  56,   25,   4,    0,\n};\n\n#include \"behaviors/star_door.inc.c\"\n#include \"behaviors/mr_i.inc.c\"\n#include \"behaviors/pole.inc.c\"\n#include \"behaviors/thi_top.inc.c\"\n#include \"behaviors/capswitch.inc.c\"\n#include \"behaviors/king_bobomb.inc.c\"\n#include \"behaviors/beta_chest.inc.c\"\n#include \"behaviors/water_objs.inc.c\"\n#include \"behaviors/cannon.inc.c\"\n#include \"behaviors/chuckya.inc.c\"\n#include \"behaviors/breakable_wall.inc.c\"\n#include \"behaviors/kickable_board.inc.c\"\n#include \"behaviors/tower_door.inc.c\"\n#include \"behaviors/rotating_platform.inc.c\"\n#include \"behaviors/koopa_shell_underwater.inc.c\"\n#include \"behaviors/warp.inc.c\"\n#include \"behaviors/white_puff_explode.inc.c\"\n\n// not in behavior file\nstatic struct SpawnParticlesInfo sMistParticles = {\n    /* bhvParam:        */ 2,\n    /* count:           */ 20,\n    /* model:           */ MODEL_MIST,\n    /* offsetY:         */ 0,\n    /* forwardVelBase:  */ 40,\n    /* forwardVelRange: */ 5,\n    /* velYBase:        */ 30,\n    /* velYRange:       */ 20,\n    /* gravity:         */ 252,\n    /* dragStrength:    */ 30,\n    /* sizeBase:        */ 330.0f,\n    /* sizeRange:       */ 10.0f,\n};\n\n// generate_wind_puffs/dust (something like that)\nvoid spawn_mist_particles_variable(s32 count, s32 offsetY, f32 size) {\n    sMistParticles.sizeBase = size;\n    sMistParticles.sizeRange = size / 20.0;\n    sMistParticles.offsetY = offsetY;\n\n    if (count == 0) {\n        sMistParticles.count = 20;\n    } else if (count > 20) {\n        sMistParticles.count = count;\n    } else {\n        sMistParticles.count = 4;\n    }\n\n    cur_obj_spawn_particles(&sMistParticles);\n}\n\n#include \"behaviors/sparkle_spawn_star.inc.c\"\n#include \"behaviors/coin.inc.c\"\n#include \"behaviors/collide_particles.inc.c\"\n#include \"behaviors/door.inc.c\"\n#include \"behaviors/thwomp.inc.c\"\n#include \"behaviors/tumbling_bridge.inc.c\"\n#include \"behaviors/elevator.inc.c\"\n#include \"behaviors/water_mist_particle.inc.c\"\n#include \"behaviors/break_particles.inc.c\"\n#include \"behaviors/water_mist.inc.c\"\n#include \"behaviors/ground_particles.inc.c\"\n#include \"behaviors/wind.inc.c\"\n#include \"behaviors/unused_particle_spawn.inc.c\"\n#include \"behaviors/ukiki_cage.inc.c\"\n#include \"behaviors/falling_rising_platform.inc.c\"\n#include \"behaviors/fishing_boo.inc.c\"\n#include \"behaviors/flamethrower.inc.c\"\n#include \"behaviors/bouncing_fireball.inc.c\"\n#include \"behaviors/shock_wave.inc.c\"\n#include \"behaviors/flame_mario.inc.c\"\n#include \"behaviors/beta_fish_splash_spawner.inc.c\"\n#include \"behaviors/spindrift.inc.c\"\n#include \"behaviors/tower_platform.inc.c\"\n#include \"behaviors/tree_particles.inc.c\"\n#include \"behaviors/square_platform_cycle.inc.c\"\n#include \"behaviors/piranha_bubbles.inc.c\"\n#include \"behaviors/purple_switch.inc.c\"\n#include \"behaviors/metal_box.inc.c\"\n#include \"behaviors/switch_hidden_objects.inc.c\"\n#include \"behaviors/breakable_box.inc.c\"\n\n// not sure what this is doing here. not in a behavior file.\nGfx *geo_move_mario_part_from_parent(s32 run, UNUSED struct GraphNode *node, Mat4 mtx) {\n    if (run == TRUE) {\n        Mat4 sp20;\n        struct Object *obj = (struct Object *) gCurGraphNodeObject;\n        if (obj == gMarioObject && obj->prevObj != NULL) {\n            create_transformation_from_matrices(sp20, mtx, *gCurGraphNodeCamera->matrixPtr);\n            obj_update_pos_from_parent_transformation(sp20, obj->prevObj);\n            obj_set_gfx_pos_from_pos(obj->prevObj);\n        }\n    }\n\n    return NULL;\n}\n\n#include \"behaviors/heave_ho.inc.c\"\n#include \"behaviors/spawn_star_exit.inc.c\"\n#include \"behaviors/unused_poundable_platform.inc.c\"\n#include \"behaviors/beta_trampoline.inc.c\"\n#include \"behaviors/jumping_box.inc.c\"\n#include \"behaviors/boo_cage.inc.c\"\n\n// not in behavior file\n// n is the number of objects to spawn, r if the rate of change of phase (frequency?)\nvoid spawn_sparkle_particles(s32 n, s32 a1, s32 a2, s32 r) {\n    static s16 D_8035FF10;\n    s32 i;\n    s16 separation = 0x10000 / n; // Evenly spread around a circle\n\n    for (i = 0; i < n; i++) {\n        spawn_object_relative(0, sins(D_8035FF10 + i * separation) * a1, (i + 1) * a2,\n                              coss(D_8035FF10 + i * separation) * a1, o, MODEL_NONE, bhvSparkleSpawn);\n    }\n\n    D_8035FF10 += r * 0x100;\n}\n\n#include \"behaviors/beta_boo_key.inc.c\"\n#include \"behaviors/grand_star.inc.c\"\n#include \"behaviors/bowser_key.inc.c\"\n#include \"behaviors/bullet_bill.inc.c\"\n#include \"behaviors/bowser.inc.c\"\n#include \"behaviors/bowser_falling_platform.inc.c\"\n#include \"behaviors/bowser_flame.inc.c\"\n#include \"behaviors/blue_fish.inc.c\"\n\n// Not in behavior file, duplicate of vec3f_copy except without bad return.\n// Used in a few behavior files.\nvoid vec3f_copy_2(Vec3f dest, Vec3f src) {\n    dest[0] = src[0];\n    dest[1] = src[1];\n    dest[2] = src[2];\n}\n\n#include \"behaviors/checkerboard_platform.inc.c\"\n#include \"behaviors/ddd_warp.inc.c\"\n#include \"behaviors/water_pillar.inc.c\"\n#include \"behaviors/moat_drainer.inc.c\"\n#include \"behaviors/bowser_key_cutscene.inc.c\"\n#include \"behaviors/moat_grill.inc.c\"\n#include \"behaviors/clock_arm.inc.c\"\n#include \"behaviors/ukiki.inc.c\"\n#include \"behaviors/lll_octagonal_rotating_mesh.inc.c\"\n#include \"behaviors/lll_sinking_rock_block.inc.c\"\n#include \"behaviors/lll_rotating_hex_flame.inc.c\"\n#include \"behaviors/lll_floating_wood_piece.inc.c\"\n#include \"behaviors/lll_volcano_flames.inc.c\"\n#include \"behaviors/lll_hexagonal_ring.inc.c\"\n#include \"behaviors/lll_sinking_rectangle.inc.c\"\n#include \"behaviors/tilting_inverted_pyramid.inc.c\"\n#include \"behaviors/koopa_shell.inc.c\"\n#include \"behaviors/tox_box.inc.c\"\n#include \"behaviors/piranha_plant.inc.c\"\n#include \"behaviors/bowser_puzzle_piece.inc.c\"\n\ns32 set_obj_anim_with_accel_and_sound(s16 a0, s16 a1, s32 a2) {\n    f32 sp1C;\n\n    if ((sp1C = o->header.gfx.animInfo.animAccel / (f32) 0x10000) == 0) {\n        sp1C = 1.0f;\n    }\n\n    if (cur_obj_check_anim_frame_in_range(a0, sp1C) || cur_obj_check_anim_frame_in_range(a1, sp1C)) {\n        cur_obj_play_sound_2(a2);\n        return TRUE;\n    }\n\n    return FALSE;\n}\n\n#include \"behaviors/tuxie.inc.c\"\n#include \"behaviors/fish.inc.c\"\n#include \"behaviors/express_elevator.inc.c\"\n#include \"behaviors/bub.inc.c\"\n#include \"behaviors/exclamation_box.inc.c\"\n#include \"behaviors/sound_spawner.inc.c\"\n#include \"behaviors/ddd_sub.inc.c\"\n#include \"behaviors/sushi.inc.c\"\n#include \"behaviors/jrb_ship.inc.c\"\n#include \"behaviors/white_puff.inc.c\"\n#include \"behaviors/blue_coin.inc.c\"\n#include \"behaviors/grill_door.inc.c\"\n#include \"behaviors/wdw_water_level.inc.c\"\n#include \"behaviors/tweester.inc.c\"\n#include \"behaviors/boo.inc.c\"\n#include \"behaviors/bbh_tilting_trap.inc.c\"\n#include \"behaviors/bbh_haunted_bookshelf.inc.c\"\n#include \"behaviors/bbh_merry_go_round.inc.c\"\n#include \"behaviors/static_checkered_platform.inc.c\"\n#include \"behaviors/beta_bowser_anchor.inc.c\"\n#ifndef VERSION_JP\n#include \"behaviors/music_touch.inc.c\"\n#endif\n#include \"behaviors/castle_floor_trap.inc.c\"\n#include \"behaviors/pole_base.inc.c\"\n#include \"behaviors/sparkle_spawn.inc.c\"\n#include \"behaviors/scuttlebug.inc.c\" // :scuttleeyes:\n#include \"behaviors/whomp.inc.c\"\n#include \"behaviors/water_splashes_and_waves.inc.c\"\n#include \"behaviors/strong_wind_particle.inc.c\"\n#include \"behaviors/sl_snowman_wind.inc.c\"\n#include \"behaviors/sl_walking_penguin.inc.c\"\n"
  },
  {
    "path": "src/game/behavior_actions.h",
    "content": "#ifndef BEHAVIOR_ACTIONS_H\n#define BEHAVIOR_ACTIONS_H\n\nvoid spawn_mist_particles_variable(s32 count, s32 offsetY, f32 size);\nvoid bhv_spawn_star_no_level_exit(u32);\nvoid bhv_star_door_loop_2(void);\nvoid spawn_triangle_break_particles(s16 numTris, s16 triModel, f32 triSize, s16 triAnimState);\n\nvoid spawn_mist_from_global(void);\nvoid clear_particle_flags(u32 flags);\nvoid spawn_wind_particles(s16 pitch, s16 yaw);\ns32 check_if_moving_over_floor(f32 a0, f32 a1);\ns32 arc_to_goal_pos(Vec3f a0, Vec3f a1, f32 yVel, f32 gravity);\nvoid vec3f_copy_2(Vec3f dest, Vec3f src);\nvoid tox_box_move(f32 forwardVel, f32 a1, s16 deltaPitch, s16 deltaRoll);\nvoid play_penguin_walking_sound(s32 walk);\ns32 update_angle_from_move_flags(s32 *angle);\nvoid cur_obj_spawn_strong_wind_particles(s32 windSpread, f32 scale, f32 relPosX, f32 relPosY, f32 relPosZ);\n\nvoid bhv_cap_switch_loop(void);\nvoid bhv_tiny_star_particles_init(void);\nvoid bhv_grindel_thwomp_loop(void);\nvoid bhv_koopa_shell_underwater_loop(void);\nvoid bhv_door_init(void);\nvoid bhv_door_loop(void);\nvoid bhv_star_door_loop(void);\nvoid bhv_mr_i_loop(void);\nvoid bhv_mr_i_body_loop(void);\nvoid bhv_mr_i_particle_loop(void);\nvoid bhv_piranha_particle_loop(void);\nvoid bhv_giant_pole_loop(void);\nvoid bhv_pole_init(void);\nvoid bhv_pole_base_loop(void);\nvoid bhv_thi_huge_island_top_loop(void);\nvoid bhv_thi_tiny_island_top_loop(void);\nvoid bhv_king_bobomb_loop(void);\nvoid bhv_bobomb_anchor_mario_loop(void);\nvoid bhv_beta_chest_bottom_init(void);\nvoid bhv_beta_chest_bottom_loop(void);\nvoid bhv_beta_chest_lid_loop(void);\nvoid bhv_bubble_wave_init(void);\nvoid bhv_bubble_maybe_loop(void);\nvoid bhv_small_water_loop(void);\nvoid bhv_water_air_bubble_init(void);\nvoid bhv_water_air_bubble_loop(void);\nvoid bhv_particle_init(void);\nvoid bhv_particle_loop(void);\nvoid bhv_water_waves_init(void);\nvoid bhv_small_bubbles_loop(void);\nvoid bhv_fish_group_loop(void);\nvoid bhv_cannon_base_loop(void);\nvoid bhv_cannon_barrel_loop(void);\nvoid bhv_cannon_base_unused_loop(void);\nvoid common_anchor_mario_behavior(f32 sp28, f32 sp2C, s32 sp30);\nvoid bhv_chuckya_loop(void);\nvoid bhv_chuckya_anchor_mario_loop(void);\nvoid bhv_rotating_platform_loop(void);\nvoid bhv_wf_breakable_wall_loop(void);\nvoid bhv_kickable_board_loop(void);\nvoid bhv_tower_door_loop(void);\nvoid bhv_wf_rotating_wooden_platform_loop(void);\nvoid bhv_koopa_shell_underwater_loop(void);\nvoid bhv_fading_warp_loop(void);\nvoid bhv_warp_loop(void);\nvoid bhv_white_puff_exploding_loop(void);\nvoid bhv_spawned_star_init(void);\nvoid bhv_spawned_star_loop(void);\nvoid bhv_spawned_coin_init(void);\nvoid bhv_spawned_coin_loop(void);\nvoid bhv_coin_inside_boo_loop(void);\nvoid bhv_coin_formation_init(void);\nvoid bhv_coin_formation_spawn_loop(void);\nvoid bhv_coin_formation_loop(void);\nvoid bhv_temp_coin_loop(void);\nvoid bhv_coin_sparkles_loop(void);\nvoid bhv_golden_coin_sparkles_loop(void);\nvoid bhv_wall_tiny_star_particle_loop(void);\nvoid bhv_pound_tiny_star_particle_loop(void);\nvoid bhv_pound_tiny_star_particle_init(void);\nvoid bhv_punch_tiny_triangle_loop(void);\nvoid bhv_punch_tiny_triangle_init(void);\nvoid bhv_tumbling_bridge_platform_loop(void);\nvoid bhv_tumbling_bridge_loop(void);\nvoid bhv_elevator_init(void);\nvoid bhv_elevator_loop(void);\nvoid bhv_water_mist_loop(void);\nvoid bhv_water_mist_spawn_loop(void);\nvoid bhv_water_mist_2_loop(void);\nvoid bhv_pound_white_puffs_init(void);\nvoid bhv_ground_sand_init(void);\nvoid bhv_ground_snow_init(void);\nvoid bhv_wind_loop(void);\nvoid bhv_unused_particle_spawn_loop(void);\nvoid bhv_ukiki_cage_star_loop(void);\nvoid bhv_ukiki_cage_loop(void);\nvoid bhv_bitfs_sinking_platform_loop(void);\nvoid bhv_bitfs_sinking_cage_platform_loop(void);\nvoid bhv_ddd_moving_pole_loop(void);\nvoid bhv_platform_normals_init(void);\nvoid bhv_tilting_inverted_pyramid_loop(void);\nvoid bhv_squishable_platform_loop(void);\nvoid bhv_beta_moving_flames_spawn_loop(void);\nvoid bhv_beta_moving_flames_loop(void);\nvoid bhv_rr_rotating_bridge_platform_loop(void);\nvoid bhv_flamethrower_loop(void);\nvoid bhv_flamethrower_flame_loop(void);\nvoid bhv_bouncing_fireball_loop(void);\nvoid bhv_bouncing_fireball_flame_loop(void);\nvoid bhv_bowser_shock_wave_loop(void);\nvoid bhv_flame_mario_loop(void);\nvoid bhv_black_smoke_mario_loop(void);\nvoid bhv_black_smoke_bowser_loop(void);\nvoid bhv_black_smoke_upward_loop(void);\nvoid bhv_beta_fish_splash_spawner_loop(void);\nvoid bhv_spindrift_loop(void);\nvoid bhv_tower_platform_group_loop(void);\nvoid bhv_wf_sliding_tower_platform_loop(void);\nvoid bhv_wf_elevator_tower_platform_loop(void);\nvoid bhv_wf_solid_tower_platform_loop(void);\nvoid bhv_snow_leaf_particle_spawn_init(void);\nvoid bhv_tree_snow_or_leaf_loop(void);\nvoid bhv_piranha_plant_bubble_loop(void);\nvoid bhv_piranha_plant_waking_bubbles_loop(void);\nvoid bhv_purple_switch_loop(void);\nvoid bhv_hidden_object_loop(void);\nvoid bhv_breakable_box_loop(void);\nvoid bhv_pushable_loop(void);\nvoid bhv_init_room(void);\nvoid bhv_small_water_wave_loop(void);\nvoid bhv_yellow_coin_init(void);\nvoid bhv_yellow_coin_loop(void);\nvoid bhv_squarish_path_moving_loop(void);\nvoid bhv_heave_ho_loop(void);\nvoid bhv_heave_ho_throw_mario_loop(void);\nvoid bhv_ccm_touched_star_spawn_loop(void);\nvoid bhv_unused_poundable_platform(void);\nvoid bhv_beta_trampoline_top_loop(void);\nvoid bhv_beta_trampoline_spring_loop(void);\nvoid bhv_jumping_box_loop(void);\nvoid bhv_boo_cage_loop(void);\nvoid bhv_bowser_key_loop(void);\nvoid bhv_grand_star_loop(void);\nvoid bhv_beta_boo_key_loop(void);\nvoid bhv_alpha_boo_key_loop(void);\nvoid bhv_bullet_bill_init(void);\nvoid bhv_bullet_bill_loop(void);\nvoid bhv_white_puff_smoke_init(void);\nvoid bhv_bowser_tail_anchor_loop(void);\nvoid bhv_bowser_init(void);\nvoid bhv_bowser_loop(void);\nvoid bhv_bowser_body_anchor_loop(void);\nvoid bhv_bowser_flame_spawn_loop(void);\nvoid bhv_falling_bowser_platform_loop(void);\nvoid bhv_blue_bowser_flame_init(void);\nvoid bhv_blue_bowser_flame_loop(void);\nvoid bhv_flame_floating_landing_init(void);\nvoid bhv_flame_floating_landing_loop(void);\nvoid bhv_blue_flames_group_loop(void);\nvoid bhv_flame_bouncing_init(void);\nvoid bhv_flame_bouncing_loop(void);\nvoid bhv_flame_moving_forward_growing_init(void);\nvoid bhv_flame_moving_forward_growing_loop(void);\nvoid bhv_flame_bowser_init(void);\nvoid bhv_flame_bowser_loop(void);\nvoid bhv_flame_large_burning_out_init(void);\nvoid bhv_blue_fish_movement_loop(void);\nvoid bhv_tank_fish_group_loop(void);\nvoid bhv_checkerboard_elevator_group_init(void);\nvoid bhv_checkerboard_platform_init(void);\nvoid bhv_checkerboard_platform_loop(void);\nvoid bhv_bowser_key_unlock_door_loop(void);\nvoid bhv_bowser_key_course_exit_loop(void);\nvoid bhv_invisible_objects_under_bridge_init(void);\nvoid bhv_water_level_pillar_init(void);\nvoid bhv_water_level_pillar_loop(void);\nvoid bhv_ddd_warp_loop(void);\nvoid bhv_moat_grills_loop(void);\nvoid bhv_rotating_clock_arm_loop(void);\nvoid bhv_ukiki_init(void);\nvoid bhv_ukiki_loop(void);\nvoid bhv_lll_sinking_rock_block_loop(void);\nvoid bhv_lll_moving_octagonal_mesh_platform_loop(void);\nvoid bhv_lll_rotating_block_fire_bars_loop(void);\nvoid bhv_lll_rotating_hex_flame_loop(void);\nvoid bhv_lll_wood_piece_loop(void);\nvoid bhv_lll_floating_wood_bridge_loop(void);\nvoid bhv_volcano_flames_loop(void);\nvoid bhv_lll_rotating_hexagonal_ring_loop(void);\nvoid bhv_lll_sinking_rectangular_platform_loop(void);\nvoid bhv_lll_sinking_square_platforms_loop(void);\nvoid bhv_koopa_shell_loop(void);\nvoid bhv_koopa_shell_flame_loop(void);\nvoid bhv_tox_box_loop(void);\ns32 mario_moving_fast_enough_to_make_piranha_plant_bite(void);\nvoid bhv_piranha_plant_loop(void);\nvoid bhv_lll_bowser_puzzle_piece_loop(void);\nvoid bhv_lll_bowser_puzzle_loop(void);\nvoid bhv_tuxies_mother_loop(void);\nvoid bhv_small_penguin_loop(void);\nvoid bhv_fish_spawner_loop(void);\nvoid bhv_fish_loop(void);\nvoid bhv_wdw_express_elevator_loop(void);\nvoid bhv_bub_spawner_loop(void);\nvoid bhv_bub_loop(void);\nvoid bhv_exclamation_box_loop(void);\nvoid bhv_rotating_exclamation_box_loop(void);\nvoid bhv_sound_spawner_init(void);\nvoid bhv_bowsers_sub_loop(void);\nvoid bhv_sushi_shark_loop(void);\nvoid bhv_sushi_shark_collision_loop(void);\nvoid bhv_jrb_sliding_box_loop(void);\nvoid bhv_ship_part_3_loop(void);\nvoid bhv_sunken_ship_part_loop(void);\nvoid bhv_white_puff_1_loop(void);\nvoid bhv_white_puff_2_loop(void);\nvoid bhv_blue_coin_switch_loop(void);\nvoid bhv_hidden_blue_coin_loop(void);\nvoid bhv_openable_cage_door_loop(void);\nvoid bhv_openable_grill_loop(void);\nvoid bhv_water_level_diamond_loop(void);\nvoid bhv_init_changing_water_level_loop(void);\nvoid bhv_tweester_sand_particle_loop(void);\nvoid bhv_tweester_loop(void);\nvoid bhv_merry_go_round_boo_manager_loop(void);\nvoid bhv_animated_texture_loop(void);\nvoid bhv_boo_in_castle_loop(void);\nvoid bhv_boo_with_cage_init(void);\nvoid bhv_boo_with_cage_loop(void);\nvoid bhv_boo_init(void);\nvoid bhv_big_boo_loop(void);\nvoid bhv_courtyard_boo_triplet_init(void);\nvoid obj_set_secondary_camera_focus(void);\nvoid bhv_boo_loop(void);\nvoid bhv_boo_staircase(void);\nvoid bhv_bbh_tilting_trap_platform_loop(void);\nvoid bhv_haunted_bookshelf_loop(void);\nvoid bhv_merry_go_round_loop(void);\nvoid bhv_play_music_track_when_touched_loop(void);\nvoid bhv_beta_bowser_anchor_loop(void);\nvoid bhv_static_checkered_platform_loop(void);\nvoid bhv_castle_floor_trap_init(void);\nvoid bhv_castle_floor_trap_loop(void);\nvoid bhv_floor_trap_in_castle_loop(void);\nvoid bhv_sparkle_spawn_loop(void);\nvoid bhv_scuttlebug_loop(void);\nvoid bhv_scuttlebug_spawn_loop(void);\nvoid bhv_whomp_loop(void);\nvoid bhv_water_splash_spawn_droplets(void);\nvoid bhv_water_droplet_loop(void);\nvoid bhv_water_droplet_splash_init(void);\nvoid bhv_bubble_splash_init(void);\nvoid bhv_idle_water_wave_loop(void);\nvoid bhv_shallow_water_splash_init(void);\nvoid bhv_wave_trail_shrink(void);\nvoid bhv_strong_wind_particle_loop(void);\nvoid bhv_sl_snowman_wind_loop(void);\nvoid bhv_sl_walking_penguin_loop(void);\nvoid bhv_menu_button_init(void);\nvoid bhv_menu_button_loop(void);\nvoid bhv_menu_button_manager_init(void);\nvoid bhv_menu_button_manager_loop(void);\nvoid bhv_act_selector_star_type_loop(void);\nvoid bhv_act_selector_init(void);\nvoid bhv_act_selector_loop(void);\nvoid bhv_moving_yellow_coin_init(void);\nvoid bhv_moving_yellow_coin_loop(void);\nvoid bhv_moving_blue_coin_init(void);\nvoid bhv_moving_blue_coin_loop(void);\nvoid bhv_blue_coin_sliding_jumping_init(void);\nvoid bhv_blue_coin_sliding_loop(void);\nvoid bhv_blue_coin_jumping_loop(void);\nvoid bhv_seaweed_init(void);\nvoid bhv_seaweed_bundle_init(void);\nvoid bhv_bobomb_init(void);\nvoid bhv_bobomb_loop(void);\nvoid bhv_bobomb_fuse_smoke_init(void);\nvoid bhv_bobomb_buddy_init(void);\nvoid bhv_bobomb_buddy_loop(void);\nvoid bhv_cannon_closed_init(void);\nvoid bhv_cannon_closed_loop(void);\nvoid bhv_whirlpool_init(void);\nvoid bhv_whirlpool_loop(void);\nvoid bhv_jet_stream_loop(void);\nvoid bhv_homing_amp_init(void);\nvoid bhv_homing_amp_loop(void);\nvoid bhv_circling_amp_init(void);\nvoid bhv_circling_amp_loop(void);\nvoid bhv_butterfly_init(void);\nvoid bhv_butterfly_loop(void);\nvoid bhv_hoot_init(void);\nvoid bhv_hoot_loop(void);\nvoid bhv_beta_holdable_object_init(void);\nvoid bhv_beta_holdable_object_loop(void);\nvoid bhv_object_bubble_init(void);\nvoid bhv_object_bubble_loop(void);\nvoid bhv_object_water_wave_init(void);\nvoid bhv_object_water_wave_loop(void);\nvoid bhv_explosion_init(void);\nvoid bhv_explosion_loop(void);\nvoid bhv_bobomb_bully_death_smoke_init(void);\nvoid bhv_bobomb_explosion_bubble_init(void);\nvoid bhv_bobomb_explosion_bubble_loop(void);\nvoid bhv_respawner_loop(void);\nvoid bhv_small_bully_init(void);\nvoid bhv_bully_loop(void);\nvoid bhv_big_bully_init(void);\nvoid bhv_big_bully_with_minions_init(void);\nvoid bhv_big_bully_with_minions_loop(void);\nvoid bhv_jet_stream_ring_spawner_loop(void);\nvoid bhv_jet_stream_water_ring_init(void);\nvoid bhv_jet_stream_water_ring_loop(void);\nvoid bhv_manta_ray_water_ring_init(void);\nvoid bhv_manta_ray_water_ring_loop(void);\nvoid bhv_bowser_bomb_loop(void);\nvoid bhv_bowser_bomb_explosion_loop(void);\nvoid bhv_bowser_bomb_smoke_loop(void);\nvoid bhv_celebration_star_init(void);\nvoid bhv_celebration_star_loop(void);\nvoid bhv_celebration_star_sparkle_loop(void);\nvoid bhv_star_key_collection_puff_spawner_loop(void);\nvoid bhv_lll_drawbridge_spawner_loop(void);\nvoid bhv_lll_drawbridge_loop(void);\nvoid bhv_small_bomp_init(void);\nvoid bhv_small_bomp_loop(void);\nvoid bhv_large_bomp_init(void);\nvoid bhv_large_bomp_loop(void);\nvoid bhv_wf_sliding_platform_init(void);\nvoid bhv_wf_sliding_platform_loop(void);\nvoid bhv_moneybag_init(void);\nvoid bhv_moneybag_loop(void);\nvoid bhv_moneybag_hidden_loop(void);\nvoid bhv_bob_pit_bowling_ball_init(void);\nvoid bhv_bob_pit_bowling_ball_loop(void);\nvoid bhv_free_bowling_ball_init(void);\nvoid bhv_free_bowling_ball_loop(void);\nvoid bhv_bowling_ball_init(void);\nvoid bhv_bowling_ball_loop(void);\nvoid bhv_generic_bowling_ball_spawner_init(void);\nvoid bhv_generic_bowling_ball_spawner_loop(void);\nvoid bhv_thi_bowling_ball_spawner_loop(void);\nvoid bhv_rr_cruiser_wing_init(void);\nvoid bhv_rr_cruiser_wing_loop(void);\nvoid bhv_spindel_init(void);\nvoid bhv_spindel_loop(void);\nvoid bhv_ssl_moving_pyramid_wall_init(void);\nvoid bhv_ssl_moving_pyramid_wall_loop(void);\nvoid bhv_pyramid_elevator_init(void);\nvoid bhv_pyramid_elevator_loop(void);\nvoid bhv_pyramid_elevator_trajectory_marker_ball_loop(void);\nvoid bhv_pyramid_top_init(void);\nvoid bhv_pyramid_top_loop(void);\nvoid bhv_pyramid_top_fragment_init(void);\nvoid bhv_pyramid_top_fragment_loop(void);\nvoid bhv_pyramid_pillar_touch_detector_loop(void);\nvoid bhv_waterfall_sound_loop(void);\nvoid bhv_volcano_sound_loop(void);\nvoid bhv_castle_flag_init(void);\nvoid bhv_birds_sound_loop(void);\nvoid bhv_ambient_sounds_init(void);\nvoid bhv_sand_sound_loop(void);\nvoid bhv_castle_cannon_grate_init(void);\nvoid bhv_snowmans_bottom_init(void);\nvoid bhv_snowmans_bottom_loop(void);\nvoid bhv_snowmans_head_init(void);\nvoid bhv_snowmans_head_loop(void);\nvoid bhv_snowmans_body_checkpoint_loop(void);\nvoid bhv_big_boulder_init(void);\nvoid bhv_big_boulder_loop(void);\nvoid bhv_big_boulder_generator_loop(void);\nvoid bhv_wing_cap_init(void);\nvoid bhv_wing_vanish_cap_loop(void);\nvoid bhv_metal_cap_init(void);\nvoid bhv_metal_cap_loop(void);\nvoid bhv_normal_cap_init(void);\nvoid bhv_normal_cap_loop(void);\nvoid bhv_vanish_cap_init(void);\nvoid bhv_collect_star_init(void);\nvoid bhv_collect_star_loop(void);\nvoid bhv_star_spawn_init(void);\nvoid bhv_star_spawn_loop(void);\nvoid bhv_hidden_red_coin_star_init(void);\nvoid bhv_hidden_red_coin_star_loop(void);\nvoid bhv_red_coin_init(void);\nvoid bhv_red_coin_loop(void);\nvoid bhv_bowser_course_red_coin_star_loop(void);\nvoid bhv_hidden_star_init(void);\nvoid bhv_hidden_star_loop(void);\nvoid bhv_hidden_star_trigger_loop(void);\nvoid bhv_ttm_rolling_log_init(void);\nvoid bhv_rolling_log_loop(void);\nvoid bhv_lll_rolling_log_init(void);\nvoid bhv_1up_common_init(void);\nvoid bhv_1up_walking_loop(void);\nvoid bhv_1up_running_away_loop(void);\nvoid bhv_1up_sliding_loop(void);\nvoid bhv_1up_init(void);\nvoid bhv_1up_loop(void);\nvoid bhv_1up_jump_on_approach_loop(void);\nvoid bhv_1up_hidden_loop(void);\nvoid bhv_1up_hidden_trigger_loop(void);\nvoid bhv_1up_hidden_in_pole_loop(void);\nvoid bhv_1up_hidden_in_pole_trigger_loop(void);\nvoid bhv_1up_hidden_in_pole_spawner_loop(void);\nvoid bhv_controllable_platform_init(void);\nvoid bhv_controllable_platform_loop(void);\nvoid bhv_controllable_platform_sub_loop(void);\nvoid bhv_breakable_box_small_init(void);\nvoid bhv_breakable_box_small_loop(void);\nvoid bhv_sliding_snow_mound_loop(void);\nvoid bhv_snow_mound_spawn_loop(void);\nvoid bhv_floating_platform_loop(void);\nvoid bhv_arrow_lift_loop(void);\nvoid bhv_orange_number_init(void);\nvoid bhv_orange_number_loop(void);\nvoid bhv_manta_ray_init(void);\nvoid bhv_manta_ray_loop(void);\nvoid bhv_falling_pillar_init(void);\nvoid bhv_falling_pillar_loop(void);\nvoid bhv_falling_pillar_hitbox_loop(void);\nvoid bhv_jrb_floating_box_loop(void);\nvoid bhv_decorative_pendulum_init(void);\nvoid bhv_decorative_pendulum_loop(void);\nvoid bhv_treasure_chest_ship_init(void);\nvoid bhv_treasure_chest_ship_loop(void);\nvoid bhv_treasure_chest_jrb_init(void);\nvoid bhv_treasure_chest_jrb_loop(void);\nvoid bhv_treasure_chest_ddd_init(void);\nvoid bhv_treasure_chest_ddd_loop(void);\nvoid bhv_treasure_chest_bottom_init(void);\nvoid bhv_treasure_chest_bottom_loop(void);\nvoid bhv_treasure_chest_top_loop(void);\nvoid bhv_mips_init(void);\nvoid bhv_mips_loop(void);\nvoid bhv_yoshi_init(void);\nvoid bhv_koopa_init(void);\nvoid bhv_koopa_update(void);\nvoid bhv_koopa_race_endpoint_update(void);\nvoid bhv_pokey_update(void);\nvoid bhv_pokey_body_part_update(void);\nvoid bhv_swoop_update(void);\nvoid bhv_fly_guy_update(void);\nvoid bhv_goomba_init(void);\nvoid bhv_goomba_update(void);\nvoid bhv_goomba_triplet_spawner_update(void);\nvoid bhv_chain_chomp_update(void);\nvoid bhv_chain_chomp_chain_part_update(void);\nvoid bhv_wooden_post_update(void);\nvoid bhv_chain_chomp_gate_init(void);\nvoid bhv_chain_chomp_gate_update(void);\nvoid bhv_wiggler_update(void);\nvoid bhv_wiggler_body_part_update(void);\nvoid bhv_enemy_lakitu_update(void);\nvoid bhv_camera_lakitu_init(void);\nvoid bhv_camera_lakitu_update(void);\nvoid bhv_cloud_update(void);\nvoid bhv_cloud_part_update(void);\nvoid bhv_spiny_update(void);\nvoid bhv_monty_mole_init(void);\nvoid bhv_monty_mole_update(void);\nvoid bhv_monty_mole_hole_update(void);\nvoid bhv_monty_mole_rock_update(void);\nvoid bhv_platform_on_track_init(void);\nvoid bhv_platform_on_track_update(void);\nvoid bhv_track_ball_update(void);\nvoid bhv_seesaw_platform_init(void);\nvoid bhv_seesaw_platform_update(void);\nvoid bhv_ferris_wheel_axle_init(void);\nvoid bhv_ferris_wheel_platform_update(void);\nvoid bhv_water_bomb_spawner_update(void);\nvoid bhv_water_bomb_update(void);\nvoid bhv_water_bomb_shadow_update(void);\nvoid bhv_ttc_rotating_solid_init(void);\nvoid bhv_ttc_rotating_solid_update(void);\nvoid bhv_ttc_pendulum_init(void);\nvoid bhv_ttc_pendulum_update(void);\nvoid bhv_ttc_treadmill_init(void);\nvoid bhv_ttc_treadmill_update(void);\nvoid bhv_ttc_moving_bar_init(void);\nvoid bhv_ttc_moving_bar_update(void);\nvoid bhv_ttc_cog_init(void);\nvoid bhv_ttc_cog_update(void);\nvoid bhv_ttc_pit_block_init(void);\nvoid bhv_ttc_pit_block_update(void);\nvoid bhv_ttc_elevator_init(void);\nvoid bhv_ttc_elevator_update(void);\nvoid bhv_ttc_2d_rotator_init(void);\nvoid bhv_ttc_2d_rotator_update(void);\nvoid bhv_ttc_spinner_update(void);\nvoid bhv_mr_blizzard_init(void);\nvoid bhv_mr_blizzard_update(void);\nvoid bhv_mr_blizzard_snowball(void);\nvoid bhv_sliding_plat_2_init(void);\nvoid bhv_sliding_plat_2_loop(void);\nvoid bhv_rotating_octagonal_plat_init(void);\nvoid bhv_rotating_octagonal_plat_loop(void);\nvoid bhv_animates_on_floor_switch_press_init(void);\nvoid bhv_animates_on_floor_switch_press_loop(void);\nvoid bhv_activated_back_and_forth_platform_init(void);\nvoid bhv_activated_back_and_forth_platform_update(void);\nvoid bhv_recovery_heart_loop(void);\nvoid bhv_water_bomb_cannon_loop(void);\nvoid bhv_bubble_cannon_barrel_loop(void);\nvoid bhv_unagi_init(void);\nvoid bhv_unagi_loop(void);\nvoid bhv_unagi_subobject_loop(void);\nvoid bhv_dorrie_update(void);\nvoid bhv_haunted_chair_init(void);\nvoid bhv_haunted_chair_loop(void);\nvoid bhv_mad_piano_update(void);\nvoid bhv_flying_bookend_loop(void);\nvoid bhv_bookend_spawn_loop(void);\nvoid bhv_haunted_bookshelf_manager_loop(void);\nvoid bhv_book_switch_loop(void);\nvoid bhv_fire_piranha_plant_init(void);\nvoid bhv_fire_piranha_plant_update(void);\nvoid bhv_small_piranha_flame_loop(void);\nvoid bhv_fire_spitter_update(void);\nvoid bhv_fly_guy_flame_loop(void);\nvoid bhv_snufit_loop(void);\nvoid bhv_snufit_balls_loop(void);\nvoid bhv_horizontal_grindel_init(void);\nvoid bhv_horizontal_grindel_update(void);\nvoid bhv_eyerok_boss_loop(void);\nvoid bhv_eyerok_hand_loop(void);\nvoid bhv_klepto_init(void);\nvoid bhv_klepto_update(void);\nvoid bhv_bird_update(void);\nvoid bhv_racing_penguin_init(void);\nvoid bhv_racing_penguin_update(void);\nvoid bhv_penguin_race_finish_line_update(void);\nvoid bhv_penguin_race_shortcut_check_update(void);\nvoid bhv_coffin_spawner_loop(void);\nvoid bhv_coffin_loop(void);\nvoid bhv_clam_loop(void);\nvoid bhv_skeeter_update(void);\nvoid bhv_skeeter_wave_update(void);\nvoid bhv_swing_platform_init(void);\nvoid bhv_swing_platform_update(void);\nvoid bhv_donut_platform_spawner_update(void);\nvoid bhv_donut_platform_update(void);\nvoid bhv_ddd_pole_init(void);\nvoid bhv_ddd_pole_update(void);\nvoid bhv_red_coin_star_marker_init(void);\nvoid bhv_triplet_butterfly_update(void);\nvoid bhv_bubba_loop(void);\nvoid bhv_intro_lakitu_loop(void);\nvoid bhv_intro_peach_loop(void);\nvoid bhv_end_birds_1_loop(void);\nvoid bhv_end_birds_2_loop(void);\nvoid bhv_intro_scene_loop(void);\nvoid bhv_dust_smoke_loop(void);\nvoid bhv_yoshi_loop(void);\nvoid bhv_volcano_trap_loop(void);\n\nGfx *geo_move_mario_part_from_parent(s32 run, UNUSED struct GraphNode *node, Mat4 mtx);\n\n// Bowser\nGfx *geo_bits_bowser_coloring(s32 run, struct GraphNode *node, UNUSED s32 a2);\nGfx *geo_update_body_rot_from_parent(s32 run, UNUSED struct GraphNode *node, Mat4 mtx);\nGfx *geo_switch_bowser_eyes(s32 run, struct GraphNode *node, UNUSED Mat4 *mtx);\n\n// Tuxie\nGfx *geo_switch_tuxie_mother_eyes(s32 run, struct GraphNode *node, UNUSED Mat4 *mtx);\n\n// Cap switch\nGfx *geo_update_held_mario_pos(s32 run, UNUSED struct GraphNode *node, Mat4 mtx);\n\n// Snufit\nGfx *geo_snufit_move_mask(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c);\nGfx *geo_snufit_scale_body(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c);\n\n// Bowser key cutscene\nGfx *geo_scale_bowser_key(s32 run, struct GraphNode *node, UNUSED f32 mtx[4][4]);\n\n// Water splash\nextern struct WaterDropletParams gShallowWaterSplashDropletParams;\nextern struct WaterDropletParams gShallowWaterWaveDropletParams;\n\n#endif // BEHAVIOR_ACTIONS_H\n"
  },
  {
    "path": "src/game/behaviors/activated_bf_plat.inc.c",
    "content": "\n/**\n * Behavior for bhvActivatedBackAndForthPlatform.\n * There are only 2 of these in the game; the BitFS gray elevator\n * and the BitS arrow platform.\n * Note: The filename is abbreviated to avoid compiler seg fault on long paths\n */\n\n/**\n * Table of activated back-and-forth platform collision models.\n * The second entry is unused. It corresponds to the mesh platform\n * at the beginning of BitFS. In the game, it's a bhvPlatformOnTrack,\n * which allows for more complex movement; its path is mostly a straight line\n * except for where it dips into the lava. It seems the programmers\n * had it as a bhvActivatedBackAndForthPlatform initially, which moves\n * in a straight line, and wanted it to dip into the lava to make Mario have to\n * move off of it. To do this, they changed it to a bhvPlatformOnTrack, but\n * forgot to remove its entry in this table.\n */\nstatic Collision const *sActivatedBackAndForthPlatformCollisionModels[] = {\n    /* ACTIVATED_BF_PLAT_TYPE_BITS_ARROW_PLAT */ bits_seg7_collision_0701AD54,\n    /* ACTIVATED_BF_PLAT_TYPE_BITFS_MESH_PLAT */ bitfs_seg7_collision_070157E0,\n    /* ACTIVATED_BF_PLAT_TYPE_BITFS_ELEVATOR  */ bitfs_seg7_collision_07015124\n};\n\n/**\n * Activated back-and-forth platform initialization function.\n */\nvoid bhv_activated_back_and_forth_platform_init(void) {\n    // Equivalent to the first behavior param byte & 3 (last 2 bits of the byte).\n    s32 platformType = ((u16)(o->oBhvParams >> 16) & ACTIVATED_BF_PLAT_BP_MASK_TYPE) >> 8;\n\n    // The BitS arrow platform should flip 180º (0x8000 angle units), but\n    // there is no reason for the other platforms to flip.\n    if (platformType != ACTIVATED_BF_PLAT_TYPE_BITS_ARROW_PLAT) {\n        o->oActivatedBackAndForthPlatformFlipRotation = 0;\n    } else {\n        o->oActivatedBackAndForthPlatformFlipRotation = 0x8000;\n    }\n\n    o->collisionData =\n        segmented_to_virtual(sActivatedBackAndForthPlatformCollisionModels[platformType]);\n\n    // Max distance the platform should move.\n    // Equivalent to 50 * (oBhvParams2ndByte & 0x7F), i.e. 50 * (oBhvParams2ndByte % 128).\n    // The maximum possible value of this is 50 * 127 = 6350.\n    // It's 50 * 97 = 4850 in BitS and 50 * 31 = 1550 in BitFS.\n    o->oActivatedBackAndForthPlatformMaxOffset = 50.0f * ((u16)(o->oBhvParams >> 16) & 0x007F);\n\n    if (platformType == ACTIVATED_BF_PLAT_TYPE_BITFS_ELEVATOR) {\n        o->oActivatedBackAndForthPlatformMaxOffset -= 12.0f;\n    }\n\n    // Truthy/falsy value that determines the direction of movement.\n    // Equivalent to oBhvParams2ndByte & 0x80, i.e. the most significant bit of oBhvParams2ndByte.\n    o->oActivatedBackAndForthPlatformVertical = (u16)(o->oBhvParams >> 16) & 0x0080;\n\n    o->oActivatedBackAndForthPlatformStartYaw = o->oFaceAngleYaw;\n}\n\n/**\n * Activated back-and-forth platform update function.\n */\nvoid bhv_activated_back_and_forth_platform_update(void) {\n    UNUSED u8 filler[12];\n\n    // oVelY is used for vertical platforms' movement and also for\n    // horizontal platforms' dipping up/down when Mario gets on/off them\n    if (gMarioObject->platform == o) {\n        o->oVelY = -6.0f;\n    } else {\n        o->oVelY = 6.0f;\n    }\n\n    // If the platform's velocity is set...\n    if (o->oActivatedBackAndForthPlatformVel != 0.0f) {\n        // ...wait until the countdown is 0 before moving.\n        // Since there's a 1 frame \"lag\" after the countdown is set to 20,\n        // and one more frame of \"lag\" after it finally reaches 0 here,\n        // Mario actually has to wait 22 frames before the platform starts moving.\n        if (o->oActivatedBackAndForthPlatformCountdown != 0) {\n            o->oActivatedBackAndForthPlatformCountdown--;\n        } else {\n            // After the wait period is over, we start moving, by adding the velocity\n            // to the positional offset.\n            o->oActivatedBackAndForthPlatformOffset += o->oActivatedBackAndForthPlatformVel;\n\n            // clamp_f32 returns whether the value needed to be clamped.\n            // So if the offset got out of bounds (i.e. platform has reached an end of its path),\n            // or Mario is over 3000 units away, the platform will reset the wait timer and flip around.\n            if (clamp_f32(&o->oActivatedBackAndForthPlatformOffset, 0.0f,\n                          o->oActivatedBackAndForthPlatformMaxOffset)\n                ||\n                // The platform will not reset if Mario goes far away and it's travelling backwards\n                (o->oActivatedBackAndForthPlatformVel > 0.0f && o->oDistanceToMario > 3000.0f)) {\n                // Reset the wait timer\n                o->oActivatedBackAndForthPlatformCountdown = 20;\n\n                // oVelY is only negative if Mario is on the platform,\n                // so if Mario is on the platform or the platform is going forwards when it resets,\n                // the platform will reverse directions. Otherwise, it will stop.\n                // This means that if Mario touches the platform initially, then gets off,\n                // it will do a full round trip then stop (assuming Mario stays within 3000 units).\n                if (o->oVelY < 0.0f || o->oActivatedBackAndForthPlatformVel > 0.0f) {\n                    o->oActivatedBackAndForthPlatformVel = -o->oActivatedBackAndForthPlatformVel;\n                } else {\n                    o->oActivatedBackAndForthPlatformVel = 0.0f;\n                }\n\n                // Make the platform face the opposite way if it should.\n                // This is for the BitS arrow platform, which has an indicated direction.\n                o->oFaceAngleYaw += o->oActivatedBackAndForthPlatformFlipRotation;\n            }\n        }\n    } else {\n        // oVelY is only negative if Mario is on the platform\n        if (o->oVelY < 0.0f) {\n            o->oActivatedBackAndForthPlatformVel = 10.0f;\n        }\n\n        // Set waiting countdown to 20 frames\n        o->oActivatedBackAndForthPlatformCountdown = 20;\n    }\n\n    // Save the object's current position to a safe location.\n    obj_perform_position_op(POS_OP_SAVE_POSITION);\n\n    // Update the object's position.\n    // If the platform moves vertically...\n    if (o->oActivatedBackAndForthPlatformVertical != FALSE) {\n        // ...set its position to its original position + the offset.\n        o->oPosY = o->oHomeY + o->oActivatedBackAndForthPlatformOffset;\n    } else {\n        // Otherwise, dip down 20 units if Mario gets on the horizontal platform, and undo if he gets\n        // off.\n        o->oPosY += o->oVelY;\n        clamp_f32(&o->oPosY, o->oHomeY - 20.0f, o->oHomeY);\n\n        // Update the position using the object's home (original position), facing angle, and offset.\n        // This has to be done manually when the platform is vertical because only the yaw is used\n        // by this function; it doesn't update the Y position.\n        obj_set_dist_from_home(-o->oActivatedBackAndForthPlatformOffset);\n    }\n\n    // Compute the object's velocity using the old saved position.\n    obj_perform_position_op(POS_OP_COMPUTE_VELOCITY);\n}\n"
  },
  {
    "path": "src/game/behaviors/amp.inc.c",
    "content": "\n/**\n * Behavior for bhvHomingAmp and bhvCirclingAmp.\n * These are distinct objects; one chases (homes in on) Mario,\n * while the other circles around a fixed location with a radius\n * of 200, 300, 400, or 0 (stationary).\n */\n\nstatic struct ObjectHitbox sAmpHitbox = {\n    /* interactType:      */ INTERACT_SHOCK,\n    /* downOffset:        */ 40,\n    /* damageOrCoinValue: */ 1,\n    /* health:            */ 0,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 40,\n    /* height:            */ 50,\n    /* hurtboxRadius:     */ 50,\n    /* hurtboxHeight:     */ 60,\n};\n\n/**\n * Homing amp initialization function.\n */\nvoid bhv_homing_amp_init(void) {\n    o->oHomeX = o->oPosX;\n    o->oHomeY = o->oPosY;\n    o->oHomeZ = o->oPosZ;\n    o->oGravity = 0.0f;\n    o->oFriction = 1.0f;\n    o->oBuoyancy = 1.0f;\n    o->oHomingAmpAvgY = o->oHomeY;\n\n    // Homing amps start at 1/10th their normal size.\n    // They grow when they \"appear\" to Mario.\n    cur_obj_scale(0.1f);\n\n    // Hide the amp (until Mario gets near).\n    o->header.gfx.node.flags |= GRAPH_RENDER_INVISIBLE;\n}\n\n/**\n * Amps' attack handler, shared by both types of amp.\n */\nstatic void check_amp_attack(void) {\n    // Strange placement for this call. The hitbox is never cleared.\n    // For perspective, this code is run every frame of bhv_circling_amp_loop\n    // and every frame of a homing amp's HOMING_AMP_ACT_CHASE action.\n    obj_set_hitbox(o, &sAmpHitbox);\n\n    if (o->oInteractStatus & INT_STATUS_INTERACTED) {\n        // Unnecessary if statement, maybe caused by a macro for\n        //     if (o->oInteractStatus & INT_STATUS_INTERACTED) {\n        //         o->oAction = X;\n        //     }\n        // ?\n        if (o->oInteractStatus & INT_STATUS_INTERACTED) {\n            // This function is used for both normal amps and homing amps,\n            // AMP_ACT_ATTACK_COOLDOWN == HOMING_AMP_ACT_ATTACK_COOLDOWN\n            o->oAction = AMP_ACT_ATTACK_COOLDOWN;\n        }\n\n        // Clear interact status\n        o->oInteractStatus = 0;\n    }\n}\n\n/**\n * Unhide the amp and grow until normal size, then begin chasing Mario.\n */\nstatic void homing_amp_appear_loop(void) {\n    // gLakituState.goalPos is the position lakitu is moving towards.\n    // In Lakitu and Mario cam, it is usually very close to the current camera position.\n    // In Fixed cam, it is the point behind Mario the camera will go to when transitioning\n    // to Lakitu cam. Homing amps will point themselves towards this point when appearing.\n    f32 relativeTargetX = gLakituState.goalPos[0] - o->oPosX;\n    f32 relativeTargetZ = gLakituState.goalPos[2] - o->oPosZ;\n    s16 targetYaw = atan2s(relativeTargetZ, relativeTargetX);\n\n    o->oMoveAngleYaw = approach_s16_symmetric(o->oMoveAngleYaw, targetYaw, 0x1000);\n\n    // For 30 frames, make the amp \"appear\" by increasing its size by 0.03 each frame,\n    // except for the first frame (when oTimer == 0) because the expression in cur_obj_scale\n    // evaluates to 0.1, which is the same as it was before. After 30 frames, it ends at\n    // a scale factor of 0.97. The amp remains at 97% of its real height for 60 more frames.\n    if (o->oTimer < 30) {\n        cur_obj_scale(0.1 + 0.9 * (f32)(o->oTimer / 30.0f));\n    } else {\n        o->oAnimState = 1;\n    }\n\n    // Once the timer becomes greater than 90, i.e. 91 frames have passed,\n    // reset the amp's size and start chasing Mario.\n    if (o->oTimer > 90) {\n        cur_obj_scale(1.0f);\n        o->oAction = HOMING_AMP_ACT_CHASE;\n        o->oAmpYPhase = 0;\n    }\n}\n\n/**\n * Chase Mario.\n */\nstatic void homing_amp_chase_loop(void) {\n    // Lock on to Mario if he ever goes within 11.25 degrees of the amp's line of sight\n    if ((o->oAngleToMario - 0x400 < o->oMoveAngleYaw)\n        && (o->oMoveAngleYaw < o->oAngleToMario + 0x400)) {\n        o->oHomingAmpLockedOn = TRUE;\n        o->oTimer = 0;\n    }\n\n    // If the amp is locked on to Mario, start \"chasing\" him by moving\n    // in a straight line at 15 units/second for 32 frames.\n    if (o->oHomingAmpLockedOn == TRUE) {\n        o->oForwardVel = 15.0f;\n\n        // Move the amp's average Y (the Y value it oscillates around) to align with\n        // Mario's head. Mario's graphics' Y + 150 is around the top of his head.\n        // Note that the average Y will slowly go down to approach his head if the amp\n        // is above his head, but if the amp is below it will instantly snap up.\n        if (o->oHomingAmpAvgY > gMarioObject->header.gfx.pos[1] + 150.0f) {\n            o->oHomingAmpAvgY -= 10.0f;\n        } else {\n            o->oHomingAmpAvgY = gMarioObject->header.gfx.pos[1] + 150.0f;\n        }\n\n        if (o->oTimer > 30) {\n            o->oHomingAmpLockedOn = FALSE;\n        }\n    } else {\n        // If the amp is not locked on to Mario, move forward at 10 units/second\n        // while curving towards him.\n        o->oForwardVel = 10.0f;\n\n        obj_turn_toward_object(o, gMarioObject, 16, 0x400);\n\n        // The amp's average Y will approach Mario's graphical Y position + 250\n        // at a rate of 10 units per frame. Interestingly, this is different from\n        // the + 150 used while chasing him. Could this be a typo?\n        if (o->oHomingAmpAvgY < gMarioObject->header.gfx.pos[1] + 250.0f) {\n            o->oHomingAmpAvgY += 10.0f;\n        }\n    }\n\n    // The amp's position will sinusoidally oscillate 40 units around its average Y.\n    o->oPosY = o->oHomingAmpAvgY + sins(o->oAmpYPhase * 0x400) * 20.0f;\n\n    // Handle attacks\n    check_amp_attack();\n\n    // Give up if Mario goes further than 1500 units from the amp's original position\n    if (!is_point_within_radius_of_mario(o->oHomeX, o->oHomeY, o->oHomeZ, 1500)) {\n        o->oAction = HOMING_AMP_ACT_GIVE_UP;\n    }\n}\n\n/**\n * Give up on chasing Mario.\n */\nstatic void homing_amp_give_up_loop(void) {\n    UNUSED u8 filler[8];\n\n    // Move forward for 152 frames\n    o->oForwardVel = 15.0f;\n\n    if (o->oTimer > 150) {\n        // Hide the amp and reset it back to its inactive state\n        o->oPosX = o->oHomeX;\n        o->oPosY = o->oHomeY;\n        o->oPosZ = o->oHomeZ;\n        o->header.gfx.node.flags |= GRAPH_RENDER_INVISIBLE;\n        o->oAction = HOMING_AMP_ACT_INACTIVE;\n        o->oAnimState = 0;\n        o->oForwardVel = 0.0f;\n        o->oHomingAmpAvgY = o->oHomeY;\n    }\n}\n\n/**\n * Cool down after a successful attack, shared by both types of amp.\n */\nstatic void amp_attack_cooldown_loop(void) {\n    // Turn intangible and wait for 90 frames before chasing Mario again after hitting him.\n    o->header.gfx.animInfo.animFrame += 2;\n    o->oForwardVel = 0.0f;\n\n    cur_obj_become_intangible();\n\n    if (o->oTimer > 30) {\n        o->oAnimState = 0;\n    }\n\n    if (o->oTimer > 90) {\n        o->oAnimState = 1;\n        cur_obj_become_tangible();\n        o->oAction = HOMING_AMP_ACT_CHASE;\n    }\n}\n\n/**\n * Homing amp update function.\n */\nvoid bhv_homing_amp_loop(void) {\n    switch (o->oAction) {\n        case HOMING_AMP_ACT_INACTIVE:\n            if (is_point_within_radius_of_mario(o->oHomeX, o->oHomeY, o->oHomeZ, 800) == TRUE) {\n                // Make the amp start to appear, and un-hide it.\n                o->oAction = HOMING_AMP_ACT_APPEAR;\n                o->header.gfx.node.flags &= ~GRAPH_RENDER_INVISIBLE;\n            }\n            break;\n\n        case HOMING_AMP_ACT_APPEAR:\n            homing_amp_appear_loop();\n            break;\n\n        case HOMING_AMP_ACT_CHASE:\n            homing_amp_chase_loop();\n            cur_obj_play_sound_1(SOUND_AIR_AMP_BUZZ);\n            break;\n\n        case HOMING_AMP_ACT_GIVE_UP:\n            homing_amp_give_up_loop();\n            break;\n\n        case HOMING_AMP_ACT_ATTACK_COOLDOWN:\n            amp_attack_cooldown_loop();\n            break;\n    }\n\n    object_step();\n\n    // Oscillate\n    o->oAmpYPhase++;\n}\n\n/**\n * Circling amp initialization function.\n */\nvoid bhv_circling_amp_init(void) {\n    o->oHomeX = o->oPosX;\n    o->oHomeY = o->oPosY;\n    o->oHomeZ = o->oPosZ;\n    o->oAnimState = 1;\n\n    // Determine the radius of the circling amp's circle\n    switch (o->oBhvParams2ndByte) {\n        case AMP_BP_ROT_RADIUS_200:\n            o->oAmpRadiusOfRotation = 200.0f;\n            break;\n\n        case AMP_BP_ROT_RADIUS_300:\n            o->oAmpRadiusOfRotation = 300.0f;\n            break;\n\n        case AMP_BP_ROT_RADIUS_400:\n            o->oAmpRadiusOfRotation = 400.0f;\n            break;\n\n        case AMP_BP_ROT_RADIUS_0:\n            break;\n    }\n\n    // Choose a random point along the amp's circle.\n    // The amp's move angle represents its angle along the circle.\n    o->oMoveAngleYaw = random_u16();\n\n    o->oAction = AMP_ACT_IDLE;\n}\n\n/**\n * Main update function for fixed amps.\n * Fixed amps are a sub-species of circling amps, with circle radius 0.\n */\nstatic void fixed_circling_amp_idle_loop(void) {\n    // Turn towards Mario, in both yaw and pitch.\n    f32 xToMario = gMarioObject->header.gfx.pos[0] - o->oPosX;\n    f32 yToMario = gMarioObject->header.gfx.pos[1] + 120.0f - o->oPosY;\n    f32 zToMario = gMarioObject->header.gfx.pos[2] - o->oPosZ;\n    s16 vAngleToMario = atan2s(sqrtf(xToMario * xToMario + zToMario * zToMario), -yToMario);\n\n    obj_turn_toward_object(o, gMarioObject, 19, 0x1000);\n    o->oFaceAnglePitch = approach_s16_symmetric(o->oFaceAnglePitch, vAngleToMario, 0x1000);\n\n    // Oscillate 40 units up and down.\n    // Interestingly, 0x458 (1112 in decimal) is a magic number with no apparent significance.\n    // It is slightly larger than the 0x400 figure used for homing amps, which makes\n    // fixed amps oscillate slightly quicker.\n    // Also, this uses the cosine, which starts at 1 instead of 0.\n    o->oPosY = o->oHomeY + coss(o->oAmpYPhase * 0x458) * 20.0f;\n\n    // Handle attacks\n    check_amp_attack();\n\n    // Oscillate\n    o->oAmpYPhase++;\n\n    // Where there is a cur_obj_play_sound_1 call in the main circling amp update function,\n    // there is nothing here. Fixed amps are the only amps that never play\n    // the \"amp buzzing\" sound.\n}\n\n/**\n * Main update function for regular circling amps.\n */\nstatic void circling_amp_idle_loop(void) {\n    // Move in a circle.\n    // The Y oscillation uses the magic number 0x8B0 (2224), which is\n    // twice that of the fixed amp. In other words, circling amps will\n    // oscillate twice as fast. Also, unlike all other amps, circling\n    // amps oscillate 60 units around their average Y instead of 40.\n    o->oPosX = o->oHomeX + sins(o->oMoveAngleYaw) * o->oAmpRadiusOfRotation;\n    o->oPosZ = o->oHomeZ + coss(o->oMoveAngleYaw) * o->oAmpRadiusOfRotation;\n    o->oPosY = o->oHomeY + coss(o->oAmpYPhase * 0x8B0) * 30.0f;\n    o->oMoveAngleYaw += 0x400;\n    o->oFaceAngleYaw = o->oMoveAngleYaw + 0x4000;\n\n    // Handle attacks\n    check_amp_attack();\n\n    // Oscillate\n    o->oAmpYPhase++;\n\n    cur_obj_play_sound_1(SOUND_AIR_AMP_BUZZ);\n}\n\n/**\n * Circling amp update function.\n * This calls the main update functions for both types of circling amps,\n * and calls the common amp cooldown function when the amp is cooling down.\n */\nvoid bhv_circling_amp_loop(void) {\n    switch (o->oAction) {\n        case AMP_ACT_IDLE:\n            if (o->oBhvParams2ndByte == AMP_BP_ROT_RADIUS_0) {\n                fixed_circling_amp_idle_loop();\n            } else {\n                circling_amp_idle_loop();\n            }\n            break;\n\n        case AMP_ACT_ATTACK_COOLDOWN:\n            amp_attack_cooldown_loop();\n            break;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/animated_floor_switch.inc.c",
    "content": "// animated_floor_switch.inc.c\n\nstruct Struct80331A54 {\n    const Collision *collision;\n    s16 model;\n};\n\nstruct Struct80331A54 D_80331A54[][5] = {\n    {\n        { bits_seg7_collision_0701B734, MODEL_BITS_STAIRCASE_FRAME4 },\n        { bits_seg7_collision_0701B59C, MODEL_BITS_STAIRCASE_FRAME3 },\n        { bits_seg7_collision_0701B404, MODEL_BITS_STAIRCASE_FRAME2 },\n        { bits_seg7_collision_0701B26C, MODEL_BITS_STAIRCASE_FRAME1 },\n        { bits_seg7_collision_0701B0D4, MODEL_BITS_STAIRCASE },\n    },\n    {\n        { bitdw_seg7_collision_0700FD9C, MODEL_BITDW_STAIRCASE },\n        { bitdw_seg7_collision_0700FC7C, MODEL_BITDW_STAIRCASE_FRAME1 },\n        { bitdw_seg7_collision_0700FB5C, MODEL_BITDW_STAIRCASE_FRAME2 },\n        { bitdw_seg7_collision_0700FA3C, MODEL_BITDW_STAIRCASE_FRAME3 },\n        { bitdw_seg7_collision_0700F91C, MODEL_BITDW_STAIRCASE_FRAME4 },\n    },\n    {\n        { rr_seg7_collision_0702A6B4, MODEL_RR_TRICKY_TRIANGLES_FRAME4 },\n        { rr_seg7_collision_0702A32C, MODEL_RR_TRICKY_TRIANGLES_FRAME3 },\n        { rr_seg7_collision_07029FA4, MODEL_RR_TRICKY_TRIANGLES_FRAME2 },\n        { rr_seg7_collision_07029C1C, MODEL_RR_TRICKY_TRIANGLES_FRAME1 },\n        { rr_seg7_collision_07029924, MODEL_RR_TRICKY_TRIANGLES },\n    },\n};\n\ns16 D_80331ACC[] = { 250, 200, 200 };\n\nvoid bhv_animates_on_floor_switch_press_init(void) {\n    o->parentObj = cur_obj_nearest_object_with_behavior(bhvFloorSwitchAnimatesObject);\n}\n\nvoid bhv_animates_on_floor_switch_press_loop(void) {\n    if (o->oFloorSwitchPressAnimationUnk100 != 0) {\n        if (o->parentObj->oAction != PURPLE_SWITCH_ACT_TICKING) {\n            o->oFloorSwitchPressAnimationUnk100 = 0;\n        }\n\n        if (o->oFloorSwitchPressAnimationUnkFC != 0) {\n            o->oFloorSwitchPressAnimationUnkF4 = D_80331ACC[o->oBhvParams2ndByte];\n        } else {\n            o->oFloorSwitchPressAnimationUnkF4 = 0;\n        }\n    } else if (o->parentObj->oAction == PURPLE_SWITCH_ACT_TICKING) {\n        o->oFloorSwitchPressAnimationUnkFC ^= 1;\n        o->oFloorSwitchPressAnimationUnk100 = 1;\n    }\n\n    if (o->oFloorSwitchPressAnimationUnkF4 != 0) {\n        if (o->oFloorSwitchPressAnimationUnkF4 < 60) {\n            cur_obj_play_sound_1(SOUND_GENERAL2_SWITCH_TICK_SLOW);\n        } else {\n            cur_obj_play_sound_1(SOUND_GENERAL2_SWITCH_TICK_FAST);\n        }\n\n        if (--o->oFloorSwitchPressAnimationUnkF4 == 0) {\n            o->oFloorSwitchPressAnimationUnkFC = 0;\n        }\n\n        if (o->oFloorSwitchPressAnimationUnkF8 < 9) {\n            o->oFloorSwitchPressAnimationUnkF8++;\n        }\n    } else if ((o->oFloorSwitchPressAnimationUnkF8 -= 2) < 0) {\n        o->oFloorSwitchPressAnimationUnkF8 = 0;\n        o->oFloorSwitchPressAnimationUnkFC = 1;\n    }\n\n    o->collisionData = segmented_to_virtual(\n        D_80331A54[o->oBhvParams2ndByte][o->oFloorSwitchPressAnimationUnkF8 / 2].collision);\n\n    cur_obj_set_model(D_80331A54[o->oBhvParams2ndByte][o->oFloorSwitchPressAnimationUnkF8 / 2].model);\n}\n"
  },
  {
    "path": "src/game/behaviors/arrow_lift.inc.c",
    "content": "\n/**\n * Behavior for WDW arrow lifts.\n * When a player stands on an arrow lift, it starts moving between\n * two positions 384 units apart.\n * Arrow lifts move either along the X axis or the Z axis.\n * Their facing angle is always perpendicular to the axis they move on.\n * The angle the arrow lifts move initially is 90º clockwise of the face angle.\n * This means an arrow lift at (0, 0, 0) with face angle 0 (positive Z) will\n * move between (0, 0, 0) and (-384, 0, 0).\n */\n\n/**\n * Move the arrow lift away from its original position.\n */\nstatic s32 arrow_lift_move_away(void) {\n    s8 status = ARROW_LIFT_NOT_DONE_MOVING;\n\n    o->oMoveAngleYaw = o->oFaceAngleYaw - 0x4000;\n    o->oVelY = 0;\n    o->oForwardVel = 12;\n    // Cumulative displacement is used to keep track of how far the platform\n    // has travelled, so that it can stop.\n    o->oArrowLiftDisplacement += o->oForwardVel;\n\n    // Stop the platform after moving 384 units.\n    if (o->oArrowLiftDisplacement > 384) {\n        o->oForwardVel = 0;\n        o->oArrowLiftDisplacement = 384;\n        status = ARROW_LIFT_DONE_MOVING;\n    }\n\n    obj_move_xyz_using_fvel_and_yaw(o);\n    return status;\n}\n\n/**\n * Move the arrow lift back to its original position.\n */\nstatic s8 arrow_lift_move_back(void) {\n    s8 status = ARROW_LIFT_NOT_DONE_MOVING;\n\n    o->oMoveAngleYaw = o->oFaceAngleYaw + 0x4000;\n    o->oVelY = 0;\n    o->oForwardVel = 12;\n    o->oArrowLiftDisplacement -= o->oForwardVel;\n\n    // Stop the platform after returning back to its original position.\n    if (o->oArrowLiftDisplacement < 0) {\n        o->oForwardVel = 0;\n        o->oArrowLiftDisplacement = 0;\n        status = ARROW_LIFT_DONE_MOVING;\n    }\n\n    obj_move_xyz_using_fvel_and_yaw(o);\n    return status;\n}\n\n/**\n * Arrow lift update function.\n */\nvoid bhv_arrow_lift_loop(void) {\n    switch (o->oAction) {\n        case ARROW_LIFT_ACT_IDLE:\n            // Wait 61 frames before moving.\n            if (o->oTimer > 60) {\n                if (gMarioObject->platform == o) {\n                    o->oAction = ARROW_LIFT_ACT_MOVING_AWAY;\n                }\n            }\n\n            break;\n\n        case ARROW_LIFT_ACT_MOVING_AWAY:\n            if (arrow_lift_move_away() == ARROW_LIFT_DONE_MOVING) {\n                o->oAction = ARROW_LIFT_ACT_MOVING_BACK;\n            }\n\n            break;\n\n        case ARROW_LIFT_ACT_MOVING_BACK:\n            // Wait 61 frames before moving (after stopping after moving forwards).\n            if (o->oTimer > 60) {\n                if (arrow_lift_move_back() == ARROW_LIFT_DONE_MOVING) {\n                    o->oAction = ARROW_LIFT_ACT_IDLE;\n                }\n            }\n\n            break;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/bbh_haunted_bookshelf.inc.c",
    "content": "\n/**\n * Behavior for bhvHauntedBookshelf.\n * This is the bookshelf that recedes after solving the puzzle of the haunted books.\n * Its sole purpose is to recede when its action is set to 1 by a bhvHauntedBookshelfManager.\n */\n\n/**\n * Update function for bhvHauntedBookshelf.\n */\nvoid bhv_haunted_bookshelf_loop(void) {\n    // oDistanceToMario is unused by this object.\n    // This may have been used for revealing the books when Mario comes near,\n    // but in the final game this is done by bhvHauntedBookshelfManager.\n    o->oDistanceToMario = dist_between_objects(o, gMarioObject);\n\n    o->oFaceAngleYaw = 0;\n\n    switch (o->oAction) {\n        case HAUNTED_BOOKSHELF_ACT_IDLE:\n            // ???\n            if (o->oTimer == 0) {\n            }\n\n            // This code never runs, since the action is set to 1 directly\n            // by bhvHauntedBookshelfManager. Maybe this was\n            // intended to be used to set the action instead?\n            if (o->oHauntedBookshelfShouldOpen != FALSE) {\n                o->oAction++;\n            }\n\n            break;\n\n        case HAUNTED_BOOKSHELF_ACT_RECEDE:\n            // Move the bookshelf and play the sound\n            o->oPosX += 5.0f;\n            cur_obj_play_sound_1(SOUND_ENV_ELEVATOR4_2);\n\n            // Delete the object after 102 frames\n            if (o->oTimer > 101) {\n                obj_mark_for_deletion(o);\n            }\n\n            break;\n\n        default:\n            break;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/bbh_merry_go_round.inc.c",
    "content": "\n/**\n * Behavior for bhvMerryGoRound.\n * This is the merry-go-round in BBH.\n */\n\n/**\n * This function handles the merry-go-round's music.\n * It starts the music when Mario enters the room around the\n * merry-go-round's enclosure, and ends the music when he's neither\n * in the enclosure nor in the room around it.\n */\nstatic void handle_merry_go_round_music(void) {\n    // If the music should play, play it and check whether it still should.\n    // Otherwise, don't play it and check whether it should.\n    if (o->oMerryGoRoundMusicShouldPlay == FALSE) {\n        if (gMarioCurrentRoom == BBH_NEAR_MERRY_GO_ROUND_ROOM) {\n            // Play the merry-go-round and BBH music at the same time\n            play_secondary_music(SEQ_EVENT_MERRY_GO_ROUND, 45, 20, 200);\n            // Set to TRUE\n            o->oMerryGoRoundMusicShouldPlay++;\n        }\n    } else {\n        // Get Mario's floor and floor surface type\n        struct Surface *marioFloor;\n        u16 marioFloorType;\n\n        find_floor(gMarioObject->oPosX, gMarioObject->oPosY, gMarioObject->oPosZ, &marioFloor);\n\n        if (marioFloor == NULL) {\n            marioFloorType = 0;\n        } else {\n            marioFloorType = marioFloor->type;\n        }\n\n        // All floors in the merry-go-round's enclosure have surface type 0x1A.\n        // The cur_obj_is_mario_on_platform check is redundant since the merry-go-round\n        // has surface type 0x1A, so Mario cannot be on the merry-go-round\n        // without being on a floor with surface type 0x1A (SURFACE_MGR_MUSIC).\n        if (cur_obj_is_mario_on_platform() || marioFloorType == SURFACE_MGR_MUSIC) {\n            // If Mario is in the merry-go-round's enclosure, play only the merry-go-round music.\n            play_secondary_music(SEQ_EVENT_MERRY_GO_ROUND, 0, 78, 50);\n            gMarioOnMerryGoRound = TRUE;\n        } else {\n            // If Mario is not in the merry-go-round's enclosure,\n            // i.e. he's around it, play both the merry-go-round music and the BBH music.\n            play_secondary_music(SEQ_EVENT_MERRY_GO_ROUND, 45, 20, 200);\n            gMarioOnMerryGoRound = FALSE;\n        }\n\n        // If Mario is not in the merry-go-round's area of the basement anymore,\n        // stop playing the music.\n        // If he is, play the creaking sound.\n        if (\n            // The merry-go-round is a dynamic surface.\n            gMarioCurrentRoom != BBH_DYNAMIC_SURFACE_ROOM\n            && gMarioCurrentRoom != BBH_NEAR_MERRY_GO_ROUND_ROOM) {\n            func_80321080(300); // Switch to BBH music? FIXME: Audio needs labelling\n            o->oMerryGoRoundMusicShouldPlay = FALSE;\n        } else {\n            cur_obj_play_sound_1(SOUND_ENV_MERRY_GO_ROUND_CREAKING);\n        }\n    }\n}\n\n/**\n * Merry-go-round update function.\n */\nvoid bhv_merry_go_round_loop(void) {\n    // Surprisingly, the merry-go-round is what's responsible\n    // for playing the howling wind sound in BBH.\n    if (!o->oMerryGoRoundMarioIsOutside) {\n        if (gMarioCurrentRoom == BBH_OUTSIDE_ROOM) {\n            // Set to TRUE\n            o->oMerryGoRoundMarioIsOutside++;\n        }\n    } else {\n        play_sound(SOUND_AIR_HOWLING_WIND, gGlobalSoundSource);\n\n        if (\n            // There are objects outside BBH, such as corkboxes.\n            // The howling wind should not stop when Mario stands on a cork box.\n            //! @bug Interestingly, this means if Mario goes from outside\n            // to a dynamic surface *inside* the mansion in a single frame,\n            // the howling wind music will still play.\n            gMarioCurrentRoom != BBH_OUTSIDE_ROOM && gMarioCurrentRoom != BBH_DYNAMIC_SURFACE_ROOM) {\n            o->oMerryGoRoundMarioIsOutside = FALSE;\n        }\n    }\n\n    // Rotate the merry-go-round and play appropriate music if it's not stopped.\n    if (!o->oMerryGoRoundStopped) {\n        o->oAngleVelYaw = 0x80;\n        o->oMoveAngleYaw += o->oAngleVelYaw;\n        o->oFaceAngleYaw += o->oAngleVelYaw;\n        handle_merry_go_round_music();\n    } else {\n        o->oAngleVelYaw = 0;\n        func_80321080(300); // Switch to BBH music? FIXME: Audio needs labelling\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/bbh_tilting_trap.inc.c",
    "content": "\n/**\n * Behavior for bhvBBHTiltingTrapPlatform.\n * This is the tilting platform trap in the upper floor of BBH\n * that drops the player into the merry-go-round area.\n */\n\n/**\n * Update function for bhvBBHTiltingTrapPlatform.\n */\nvoid bhv_bbh_tilting_trap_platform_loop(void) {\n    UNUSED u8 filler[4];\n\n    // Post-JP versions use oAction for the\n    // if statement, while immediately setting it over here.\n    // This was done so that Mario leaving or getting on the platform\n    // resets oTimer to 0.\n#ifndef VERSION_JP\n    if (gMarioObject->platform == o) {\n        o->oAction = BBH_TILTING_TRAP_PLATFORM_ACT_MARIO_ON;\n    } else {\n        o->oAction = BBH_TILTING_TRAP_PLATFORM_ACT_MARIO_OFF;\n    }\n\n    if (o->oAction == BBH_TILTING_TRAP_PLATFORM_ACT_MARIO_ON) {\n#else\n    if (gMarioObject->platform == o) {\n#endif\n        o->oAngleVelPitch = (s32)(o->oDistanceToMario * coss(o->oAngleToMario));\n        o->oFaceAnglePitch += o->oAngleVelPitch;\n    } else\n#ifndef VERSION_JP\n        // In the post-JP versions, if the platform has tilted more than 3000 angle units\n        // in less than 16 frames since Mario got on it, and he has stepped off,\n        // this code will not run, so it will continue to rotate with the same\n        // angular velocity for 16 more frames. This was probably done to make\n        // the platform more dangerous. This code will not work correctly\n        // without the oAction changes above, since oTimer will not ever\n        // reset to 0 without them.\n        if ((absi(o->oFaceAnglePitch) < 3000) || (o->oTimer > 15))\n#endif\n    {\n        // Make the platform return to the horizontal at a speed of\n        // 200 angle units/frame, and clamp it to 0 if it's within 200 units of 0.\n        o->oAngleVelPitch = 0;\n\n        if ((s16) o->oFaceAnglePitch > 0) {\n            if (o->oFaceAnglePitch < 200) {\n                o->oFaceAnglePitch = 0;\n            } else {\n                o->oAngleVelPitch = -200;\n            }\n        } else {\n            if (o->oFaceAnglePitch > -200) {\n                o->oFaceAnglePitch = 0;\n            } else {\n                o->oAngleVelPitch = 200;\n            }\n        }\n    }\n\n    // Update angle\n    o->oFaceAnglePitch += o->oAngleVelPitch;\n}\n"
  },
  {
    "path": "src/game/behaviors/beta_boo_key.inc.c",
    "content": "\n/**\n * Behavior for bhvAlphaBooKey and bhvBetaBooKey.\n * They were apparently intended to be a key that would be contained in boos\n * and would fall out, like coins do. There is a model, MODEL_BETA_BOO_KEY, that\n * is loaded in script_func_global_10, which contains boo-themed models used in\n * BBH and the castle courtyard. It is used in a macro preset with bhvAlphaBooKey,\n * which is also grouped near other boo/BBH-related macros. This is evidence that\n * bhvAlphaBooKey was supposed to be a key. bhvBetaBooKey has code similar to\n * bhvAlphaBooKey's for rotation and collection, and functions correctly when\n * spawned as a child of a boo (it checks the death status of the boo to know when\n * to drop, so this is almost definitely what was intended). It appears that\n * bhvAlphaBooKey was abandoned for reasons unknown and replaced with bhvBetaBooKey.\n */\n\n/**\n * Update function for bhvAlphaBooKey.\n * It rotates the key, and deletes it when collected.\n * The code in this function is similar to that found in\n * bhvBetaBooKey code, which implies that these are 2 versions\n * of the same object. It is a less developed version of\n * bhvBetaBooKey, hence the \"alpha\" moniker.\n */\nvoid bhv_alpha_boo_key_loop(void) {\n    // Rotate the key\n    o->oFaceAngleRoll += 0x200;\n    o->oFaceAngleYaw += 0x200;\n\n    if (obj_check_if_collided_with_object(o, gMarioObject)) {\n        // This line makes the object inside the key's parent boo drop.\n        // Was this intended to make the boo die when the key is collected?\n        // Boos don't read from oBooDeathStatus, they only set it to let the\n        // objects inside them know when to drop.\n        // Due to this line, the key will cause the game to crash if collected\n        // when its parent object is NULL.\n        // Another theory is that the boo key was intended to be spawned by a\n        // spawner that used object field 0x00 for something else. This\n        // is elaborated on more in beta_boo_key_dropped_loop.\n        o->parentObj->oBooDeathStatus = BOO_DEATH_STATUS_DYING;\n\n        // Delete the object and spawn sparkles\n        obj_mark_for_deletion(o);\n        spawn_object(o, MODEL_SPARKLES, bhvGoldenCoinSparkles);\n    }\n}\n\n// For some reason, the action functions for the beta boo key\n// are written in reverse order.\n\n/**\n * Continue to make the key fall, and handle collection.\n */\nstatic void beta_boo_key_dropped_loop(void) {\n    // Apply standard physics to the key\n    cur_obj_update_floor_and_walls();\n    cur_obj_move_standard(78);\n\n    // Slowly increase the Y offset to make the model aligned correctly.\n    // This is spread out over 13 frames so that it's not noticable.\n    if (o->oGraphYOffset < 26.0f) {\n        o->oGraphYOffset += 2.0f;\n    }\n\n    // Transition from rotating in both the yaw and the roll axes\n    // to just in the yaw axis. This is done by truncating the key's roll\n    // to the nearest multiple of 0x800, then continuously adding 0x800\n    // until it reaches a multiple of 0x10000, at which point &-ing with\n    // 0xFFFF returns 0 and the key stops rotating in the roll direction.\n    if (o->oFaceAngleRoll & 0xFFFF) {\n        o->oFaceAngleRoll &= 0xF800;\n        o->oFaceAngleRoll += 0x800;\n    }\n\n    // Once the key stops bouncing, stop its horizontal movement on the ground.\n    if (o->oMoveFlags & OBJ_MOVE_ON_GROUND) {\n        o->oVelX = 0.0f;\n        o->oVelZ = 0.0f;\n    }\n\n    // Rotate the key\n    o->oFaceAngleYaw += 0x800;\n\n    // If the key hits the floor or 90 frames have elapsed since it was dropped,\n    // become tangible and handle collision.\n    if (o->oTimer > 90 || o->oMoveFlags & OBJ_MOVE_LANDED) {\n        cur_obj_become_tangible();\n\n        if (obj_check_if_collided_with_object(o, gMarioObject)) {\n            // This interaction status is 0x01, the first interaction status flag.\n            // It was only used for Hoot in the final game, but it seems it could've\n            // treated as a TRUE/FALSE statement or held some special meaning in beta.\n            // Earlier, in beta_boo_key_drop (called when the parent boo is killed),\n            // o->parentObj is set to the parent boo's parentObj. This means that\n            // here, the parentObj is actually the parent of the old parent boo.\n            // One theory about this code is that there was a boo spawner, which\n            // spawned \"false\" boos and one \"true\" boo with the key, and the player\n            // was intended to find the one with the key to progress.\n            o->parentObj->oInteractStatus = TRUE;\n\n            // Delete the object and spawn sparkles\n            obj_mark_for_deletion(o);\n            spawn_object(o, MODEL_SPARKLES, bhvGoldenCoinSparkles);\n        }\n    }\n}\n\n/**\n * Drop the key. This function is run once, the frame after the boo dies;\n * It immediately sets the action to BETA_BOO_KEY_ACT_DROPPED.\n */\nstatic void beta_boo_key_drop(void) {\n    s16 velocityDirection;\n    f32 velocityMagnitude;\n\n    // Update the key to be inside the boo\n    struct Object *parent = o->parentObj;\n    obj_copy_pos(o, parent);\n\n    // This if statement to only run this code on the first frame\n    // is redundant, since it instantly sets the action to BETA_BOO_KEY_ACT_DROPPED\n    // which stops this function from running again.\n    if (o->oTimer == 0) {\n        // Separate from the parent boo\n        o->parentObj = parent->parentObj;\n\n        o->oAction = BETA_BOO_KEY_ACT_DROPPED;\n\n        // Make the key move laterally away from Mario at 3 units/frame\n        // (as if he transferred kinetic energy to it)\n        velocityDirection = gMarioObject->oMoveAngleYaw;\n        velocityMagnitude = 3.0f;\n\n        o->oVelX = sins(velocityDirection) * velocityMagnitude;\n        o->oVelZ = coss(velocityDirection) * velocityMagnitude;\n\n        // Give it an initial Y velocity of 40 units/frame\n        o->oVelY = 40.0f;\n    }\n\n    // Rotate the key\n    o->oFaceAngleYaw += 0x200;\n    o->oFaceAngleRoll += 0x200;\n}\n\n/**\n * Update the key to be inside its parent boo, and handle the boo dying.\n */\nstatic void beta_boo_key_inside_boo_loop(void) {\n    // Update the key to be inside the boo at all times\n    struct Object *parent = o->parentObj;\n    obj_copy_pos(o, parent);\n\n    // Use a Y offset of 40 to make the key model aligned correctly.\n    // (Why didn't they use oGraphYOffset?)\n    o->oPosY += 40.0f;\n\n    // If the boo is dying/dead, set the action to BETA_BOO_KEY_ACT_DROPPING.\n    if (parent->oBooDeathStatus != BOO_DEATH_STATUS_ALIVE) {\n        o->oAction = BETA_BOO_KEY_ACT_DROPPING;\n    }\n\n    // Rotate the key\n    o->oFaceAngleRoll += 0x200;\n    o->oFaceAngleYaw += 0x200;\n}\n\nstatic void (*sBetaBooKeyActions[])(void) = {\n    beta_boo_key_inside_boo_loop,\n    beta_boo_key_drop,\n    beta_boo_key_dropped_loop,\n};\n\n/**\n * Update function for bhvBetaBooKey.\n */\nvoid bhv_beta_boo_key_loop(void) {\n    cur_obj_call_action_function(sBetaBooKeyActions);\n}\n"
  },
  {
    "path": "src/game/behaviors/beta_bowser_anchor.inc.c",
    "content": "\n/**\n * Behavior for bhvBetaBowserAnchor.\n * This seems to be a beta bowser anchor object. It continuously updates to be\n * about the same distance away from Mario as Bowser is, and it is destructive.\n */\n\n/**\n * Update function for bhvBetaBowserAnchor.\n * It continuously updates to be in front of Mario,\n * and attacks all non-Mario objects it touches.\n * It continuously sets its hitbox radius/height\n * based on gDebugInfo[DEBUG_PAGE_EFFECTINFO].\n */\nvoid bhv_beta_bowser_anchor_loop(void) {\n    // Set the object's position to be 30 units above Mario's feet,\n    // and 300 units in front of him.\n    cur_obj_set_pos_relative(gMarioObject, 0, 30.0f, 300.0f);\n\n    o->hitboxRadius = gDebugInfo[DEBUG_PAGE_EFFECTINFO][0] + 100;\n    o->hitboxHeight = gDebugInfo[DEBUG_PAGE_EFFECTINFO][1] + 300;\n\n    obj_attack_collided_from_other_object(o);\n}\n"
  },
  {
    "path": "src/game/behaviors/beta_chest.inc.c",
    "content": "\n/**\n * Behavior for bhvBetaChestBottom and bhvBetaChestLid.\n * These are apparently the beta versions of chests.\n * They do not spawn stars or appear in groups; they only\n * open and spawn an air bubble. In other words, they're\n * practically the same as underwater chests in-game, except\n * without any star-giving or puzzle functionality.\n */\n\n/**\n * Init function for bhvBetaChestBottom.\n */\nvoid bhv_beta_chest_bottom_init(void) {\n    // Set the object's model\n    cur_obj_set_model(MODEL_TREASURE_CHEST_BASE);\n\n    // ??? Pointless code?\n    // Maybe chests were originally intended to have random yaws.\n    // Shoshinkai 1995 footage shows chests in DDD scattered around\n    // a point with different yaws. Maybe this feature was lazily\n    // cancelled by setting the yaw to 0, right before this beta\n    // object was discarded?\n    o->oMoveAngleYaw = random_u16();\n    o->oMoveAngleYaw = 0;\n\n    // Spawn the chest lid 97 units in the +Y direction and 77 units in the -Z direction.\n    spawn_object_relative(0, 0, 97, -77, o, MODEL_TREASURE_CHEST_LID, bhvBetaChestLid);\n}\n\n/**\n * Update function for bhvBetaChestBottom.\n * This gives the chest a \"virtual hitbox\" that pushes Mario away\n * with radius 200 units and height 200 units.\n */\nvoid bhv_beta_chest_bottom_loop(void) {\n    cur_obj_push_mario_away_from_cylinder(200.0f, 200.0f);\n}\n\n/**\n * Update function for bhvBetaChestLid.\n * The chest lid handles all the logic of the chest,\n * namely opening the chest and spawning an air bubble.\n */\nvoid bhv_beta_chest_lid_loop(void) {\n    switch (o->oAction) {\n        case BETA_CHEST_ACT_IDLE_CLOSED:\n            if (dist_between_objects(o->parentObj, gMarioObject) < 300.0f) {\n                o->oAction++; // Set to BETA_CHEST_ACT_OPENING\n            }\n\n            break;\n\n        case BETA_CHEST_ACT_OPENING:\n            if (o->oTimer == 0) {\n                // Spawn the bubble 80 units in the -Y direction and 120 units in the +Z direction.\n                spawn_object_relative(0, 0, -80, 120, o, MODEL_BUBBLE, bhvWaterAirBubble);\n                play_sound(SOUND_GENERAL_CLAM_SHELL1, o->header.gfx.cameraToObject);\n            }\n\n            // Rotate the lid 0x400 (1024) angle units per frame backwards.\n            // When the lid becomes vertical, stop rotating.\n            o->oFaceAnglePitch -= 0x400;\n            if (o->oFaceAnglePitch < -0x4000) {\n                o->oAction++; // Set to BETA_CHEST_ACT_IDLE_OPEN\n            }\n\n            // fallthrough\n        case BETA_CHEST_ACT_IDLE_OPEN:\n            break;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/beta_fish_splash_spawner.inc.c",
    "content": "\n/**\n * Behavior for bhvBetaFishSplashSpawner.\n * This is a now non-functional fish splash object found in WF\n * that can be seen in Shoshinkai 1995 footage. It used to create\n * a fish that would splash up when the player walked through it.\n * This functionality was probably moved; in the final game,\n * an identical fish splash can occur with a 1/256 chance every time\n * Mario splashes in water.\n */\n\n/**\n * Update function for bhvBetaFishSplashSpawner.\n */\nvoid bhv_beta_fish_splash_spawner_loop(void) {\n    UNUSED u8 filler[12];\n    UNUSED f32 waterLevel = find_water_level(o->oPosX, o->oPosZ);\n}\n"
  },
  {
    "path": "src/game/behaviors/beta_holdable_object.inc.c",
    "content": "\n/**\n * Behavior for bhvBetaHoldableObject.\n * This is a simple implementation of a holdable object, probably used\n * for testing. This was previously assumed to be a beta shell, as there\n * are unused shell models left in the game; however, there is no evidence\n * to support this theory.\n */\n\n/**\n * Initialization function for bhvBetaHoldableObject.\n * Just sets various physics constants for the object.\n */\nvoid bhv_beta_holdable_object_init(void) {\n    o->oGravity = 2.5f;\n    o->oFriction = 0.8f;\n    o->oBuoyancy = 1.3f;\n}\n\n/**\n * Drop the object.\n */\nstatic void beta_holdable_object_drop(void) {\n    // Re-enable rendering\n    cur_obj_enable_rendering();\n\n    cur_obj_get_dropped();\n\n    o->oHeldState = HELD_FREE;\n\n    o->oForwardVel = 0.0f;\n    o->oVelY = 0.0f;\n}\n\n/**\n * Throw the object.\n */\nstatic void beta_holdable_object_throw(void) {\n    // cur_obj_enable_rendering_2 just calls cur_obj_enable_rendering and does\n    // nothing else; it's useless here. Maybe it originally did more?\n    cur_obj_enable_rendering_2();\n    cur_obj_enable_rendering();\n\n    o->oHeldState = HELD_FREE;\n\n    // This flag is never set, why is it cleared?\n    o->oFlags &= ~OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW;\n\n    // Set initial velocity\n    o->oForwardVel = 40.0f;\n    o->oVelY = 20.0f;\n}\n\n/**\n * Update function for bhvBetaHoldableObject.\n * Apply standard physics to the object if not held;\n * otherwise, handle holding logic.\n */\nvoid bhv_beta_holdable_object_loop(void) {\n    switch (o->oHeldState) {\n        case HELD_FREE:\n            // Apply standard physics\n            object_step();\n            break;\n\n        case HELD_HELD:\n            // Disable rendering to hide the object while it's held\n            cur_obj_disable_rendering();\n            break;\n\n        case HELD_THROWN:\n            beta_holdable_object_throw();\n            break;\n\n        case HELD_DROPPED:\n            beta_holdable_object_drop();\n            break;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/beta_trampoline.inc.c",
    "content": "\n/**\n * Behavior for bhvBetaTrampolineTop and bhvBetaTrampolineSpring.\n * This was a trampoline that was never finished. The model and collision\n * are nearly finished, but the code was abandoned very early on\n * in its development. The trampoline consists of 3 objects: the top,\n * the spring, and the base. The base is a static object with no behavior.\n */\n\n/**\n * Update function for bhvBetaTrampolineSpring.\n * The spring continuously updates to be 75 units below the top.\n * It then uses its displacement from its original position\n * (i.e. how much the trampoline has compressed) to calculate its\n * vertical scale factor, so that it compresses visually along with\n * the trampoline. The devs were on the right track with the math,\n * but it is incomplete.\n */\nvoid bhv_beta_trampoline_spring_loop(void) {\n    f32 yScale;\n    f32 yDisplacement;\n\n    // Update to be 75 units under the trampoline top\n    obj_copy_pos_and_angle(o, o->parentObj);\n    obj_copy_graph_y_offset(o, o->parentObj);\n    o->oPosY -= 75.0f;\n\n    // If the trampoline top is above its original position,\n    // scale the spring by (the displacement)/10 + 1.\n    // For this to work correctly, the arbitrary value of 10\n    // must be replaced with 150 (the height of the trampoline).\n    // Note that all of the numbers in this if/else block are doubles.\n    if ((yDisplacement = o->oPosY - o->oHomeY) >= 0) {\n        yScale = yDisplacement / 10.0 + 1.0;\n    } else {\n        // Otherwise (if the trampoline is compressed),\n        // scale by 1 - (the displacement)/500.\n        // For this to work correctly, the arbitrary value of 500\n        // must be replaced with 150 (the height of the trampoline),\n        // as with the above code.\n        yDisplacement = -yDisplacement;\n        yScale = 1.0 - yDisplacement / 500.0;\n    }\n\n    // Scale the spring\n    obj_scale_xyz(o, 1.0f, yScale, 1.0f);\n}\n\n/**\n * Update function for bhvBetaTrampolineTop.\n * This spawns the other 2 trampoline parts when initialized,\n * and sets a boolean for whether Mario's on or off the trampoline.\n * The trampoline top never actually moves, so the spring will never\n * do anything.\n */\nvoid bhv_beta_trampoline_top_loop(void) {\n    cur_obj_set_model(MODEL_TRAMPOLINE);\n\n    // When initialized, spawn the rest of the trampoline\n    if (o->oTimer == 0) {\n        struct Object *trampolinePart;\n\n        trampolinePart = spawn_object(o, MODEL_TRAMPOLINE_CENTER, bhvBetaTrampolineSpring);\n        trampolinePart->oPosY -= 75.0f;\n\n        trampolinePart = spawn_object(o, MODEL_TRAMPOLINE_BASE, bhvStaticObject);\n        trampolinePart->oPosY -= 150.0f;\n    }\n\n    // Update o->oBetaTrampolineMarioOnTrampoline, and reset\n    // the trampoline's position if Mario's not on it.\n    // Since the trampoline never moves, this doesn't do anything.\n    // Maybe they intended to decrease the trampoline's position\n    // when Mario's on it in this if statement?\n    if (gMarioObject->platform == o) {\n        o->oBetaTrampolineMarioOnTrampoline = TRUE;\n    } else {\n        o->oBetaTrampolineMarioOnTrampoline = FALSE;\n        o->oPosY = o->oHomeY;\n    }\n\n    // This function is from mario_step.c, and is empty.\n    // It was probably intended to be used to \"let the game know\"\n    // that the trampoline is currently in use. This potential\n    // trampoline infrastructure is found in mario_step.c. See\n    // that file for more details.\n    stub_mario_step_2();\n}\n"
  },
  {
    "path": "src/game/behaviors/bird.inc.c",
    "content": "\n/**\n * Behavior for bhvBird. These are the birds in the castle grounds\n * that fly away and scatter when Mario comes near them. There are\n * 2 types of birds; spawner birds and spawned birds. Spawner birds\n * are loaded by the level, and are inactive until Mario comes within\n * 2000 units of them, when they spawn 6 spawned birds and start flying.\n * Spawned birds are only spawned by a spawner bird, and start flying\n * immediately after spawning.\n */\n\n/**\n * If the object is a spawned bird, start flying; if it's a spawner bird,\n * spawn spawned birds if Mario comes within 2000 units of it.\n */\nstatic void bird_act_inactive(void) {\n    // Start flying if the object is a spawned bird or if it's a spawner bird\n    // and Mario is within 2000 units.\n    if (o->oBhvParams2ndByte == BIRD_BP_SPAWNED || o->oDistanceToMario < 2000.0f) {\n        // If the object is a spawner bird, play the sound of birds flying away,\n        // and spawn 6 spawned birds (which will start flying on the next frame).\n        if (o->oBhvParams2ndByte != BIRD_BP_SPAWNED) {\n            s32 i;\n\n            cur_obj_play_sound_2(SOUND_GENERAL_BIRDS_FLY_AWAY);\n\n            for (i = 0; i < 6; i++) {\n                spawn_object(o, MODEL_BIRDS, bhvBird);\n            }\n\n            // The spawner bird's home acts as its target location.\n            o->oHomeX = -20.0f;\n            o->oHomeZ = -3990.0f;\n        }\n\n        // Start flying\n        o->oAction = BIRD_ACT_FLY;\n\n        // Start with a random yaw, and a random pitch from 1000 to 5000.\n        // Positive pitch is downwards.\n        o->oMoveAnglePitch = 5000 - (s32)(4000.0f * random_float());\n        o->oMoveAngleYaw = random_u16();\n\n        o->oBirdSpeed = 40.0f;\n\n        cur_obj_unhide();\n    }\n}\n\n/**\n * Make the bird fly.\n * The bird flies laterally towards a target; (-20, -3990) if it's a spawner bird,\n * and the parent spawner bird if it's a spawned bird.\n */\nstatic void bird_act_fly(void) {\n    UNUSED u8 filler[4];\n    f32 distance;\n\n    // Compute forward velocity and vertical velocity from oBirdSpeed and pitch\n    obj_compute_vel_from_move_pitch(o->oBirdSpeed);\n\n    // If the bird's parent is higher than 8000 units, despawn the bird.\n    // A spawned bird's parent is its spawner bird. A spawner bird's parent\n    // is itself. In other words, when a group of birds has its spawner bird\n    // fly past Y=8000, they will all despawn simultaneously. Otherwise, fly.\n    if (o->parentObj->oPosY > 8000.0f) {\n        obj_mark_for_deletion(o);\n    } else {\n        // If the bird is a spawner bird, fly towards its home; otherwise,\n        // fly towards the bird's spawner bird.\n        if (o->oBhvParams2ndByte != BIRD_BP_SPAWNED) {\n            distance = cur_obj_lateral_dist_to_home();\n\n            // The spawner bird will start with its downwards (positive) pitch\n            // and will continuously decrease its pitch (i.e. make itself face more upwards)\n            // until it reaches its home, at which point it will face directly up.\n            // This is done by making its target pitch the arctangent of its distance\n            // to its home and its position - 10,000 (which is always negative).\n            o->oBirdTargetPitch = atan2s(distance, o->oPosY - 10000.0f);\n            o->oBirdTargetYaw = cur_obj_angle_to_home();\n        } else {\n            distance = lateral_dist_between_objects(o, o->parentObj);\n\n            // The bird's target pitch will face directly to its spawner bird.\n            o->oBirdTargetPitch = atan2s(distance, o->oPosY - o->parentObj->oPosY);\n            o->oBirdTargetYaw = obj_angle_to_object(o, o->parentObj);\n\n            // The bird goes faster the farther it is from its spawner bird so it can catch up.\n            o->oBirdSpeed = 0.04f * dist_between_objects(o, o->parentObj) + 20.0f;\n        }\n\n        // Approach to match the bird's target yaw and pitch.\n        obj_move_pitch_approach(o->oBirdTargetPitch, 140);\n        cur_obj_rotate_yaw_toward(o->oBirdTargetYaw, 800);\n        obj_roll_to_match_yaw_turn(o->oBirdTargetYaw, 0x3000, 600);\n    }\n\n    // The bird has no gravity, so this function only\n    // moves the bird using its forward velocity.\n    // Even if it did have gravity, it would only act as\n    // a constant added to its Y position every frame since\n    // its Y velocity is reset every frame by\n    // obj_compute_vel_from_move_pitch.\n    cur_obj_move_using_fvel_and_gravity();\n}\n\n/**\n * Update function for bhvBird.\n */\nvoid bhv_bird_update(void) {\n    switch (o->oAction) {\n        case BIRD_ACT_INACTIVE:\n            bird_act_inactive();\n            break;\n        case BIRD_ACT_FLY:\n            bird_act_fly();\n            break;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/blue_coin.inc.c",
    "content": "\n/**\n * Behavior for bhvHiddenBlueCoin and bhvBlueCoinSwitch.\n * bhvHiddenBlueCoin are the stationary blue coins that appear when\n * you press a blue coin switch (a.k.a. bhvBlueCoinSwitch).\n */\n\n/**\n * Update function for bhvHiddenBlueCoin.\n */\nvoid bhv_hidden_blue_coin_loop(void) {\n    struct Object *blueCoinSwitch;\n\n    switch (o->oAction) {\n        case HIDDEN_BLUE_COIN_ACT_INACTIVE:\n            // Become invisible and intangible\n            cur_obj_disable_rendering();\n            cur_obj_become_intangible();\n\n            // Set action to HIDDEN_BLUE_COIN_ACT_WAITING after the blue coin switch is found.\n            o->oHiddenBlueCoinSwitch = cur_obj_nearest_object_with_behavior(bhvBlueCoinSwitch);\n\n            if (o->oHiddenBlueCoinSwitch != NULL) {\n                o->oAction++;\n            }\n\n            break;\n\n        case HIDDEN_BLUE_COIN_ACT_WAITING:\n            // Wait until the blue coin switch starts ticking to activate.\n            blueCoinSwitch = o->oHiddenBlueCoinSwitch;\n\n            if (blueCoinSwitch->oAction == BLUE_COIN_SWITCH_ACT_TICKING) {\n                o->oAction++; // Set to HIDDEN_BLUE_COIN_ACT_ACTIVE\n            }\n\n            break;\n\n        case HIDDEN_BLUE_COIN_ACT_ACTIVE:\n            // Become tangible\n            cur_obj_enable_rendering();\n            cur_obj_become_tangible();\n\n            // Delete the coin once collected\n            if (o->oInteractStatus & INT_STATUS_INTERACTED) {\n                spawn_object(o, MODEL_SPARKLES, bhvGoldenCoinSparkles);\n                obj_mark_for_deletion(o);\n            }\n\n            // After 200 frames of waiting and 20 2-frame blinks (for 240 frames total),\n            // delete the object.\n            if (cur_obj_wait_then_blink(200, 20)) {\n                obj_mark_for_deletion(o);\n            }\n\n            break;\n    }\n\n    o->oInteractStatus = 0;\n}\n\n/**\n * Update function for bhvBlueCoinSwitch.\n */\nvoid bhv_blue_coin_switch_loop(void) {\n    // The switch's model is 1/3 size.\n    cur_obj_scale(3.0f);\n\n    switch (o->oAction) {\n        case BLUE_COIN_SWITCH_ACT_IDLE:\n            // If Mario is on the switch and has ground-pounded,\n            // recede and get ready to start ticking.\n            if (gMarioObject->platform == o) {\n                if (gMarioStates[0].action == ACT_GROUND_POUND_LAND) {\n                    // Set to BLUE_COIN_SWITCH_ACT_RECEDING\n                    o->oAction++;\n\n                    // Recede at a rate of 20 units/frame.\n                    o->oVelY = -20.0f;\n                    // Set gravity to 0 so it doesn't accelerate when receding.\n                    o->oGravity = 0.0f;\n\n                    cur_obj_play_sound_2(SOUND_GENERAL_SWITCH_DOOR_OPEN);\n                }\n            }\n\n            // Have collision\n            load_object_collision_model();\n\n            break;\n\n        case BLUE_COIN_SWITCH_ACT_RECEDING:\n            // Recede for 6 frames before going invisible and ticking.\n            // This is probably an off-by-one error, since the switch is 100 units tall\n            // and recedes at 20 units/frame, which means it will fully recede after 5 frames.\n            if (o->oTimer > 5) {\n                cur_obj_hide();\n\n                // Set to BLUE_COIN_SWITCH_ACT_TICKING\n                o->oAction++;\n                // ???\n                o->oPosY = gMarioObject->oPosY - 40.0f;\n\n                // Spawn particles. There's a function that calls this same function\n                // with the same arguments, spawn_mist_particles, why didn't they just call that?\n                spawn_mist_particles_variable(0, 0, 46.0f);\n            } else {\n                // Have collision while receding\n                load_object_collision_model();\n                // Recede\n                cur_obj_move_using_fvel_and_gravity();\n            }\n\n            break;\n\n        case BLUE_COIN_SWITCH_ACT_TICKING:\n            // Tick faster when the blue coins start blinking\n            if (o->oTimer < 200) {\n                play_sound(SOUND_GENERAL2_SWITCH_TICK_FAST, gGlobalSoundSource);\n            } else {\n                play_sound(SOUND_GENERAL2_SWITCH_TICK_SLOW, gGlobalSoundSource);\n            }\n\n            // Delete the switch (which stops the sound) after the last coin is collected,\n            // or after the coins unload after the 240-frame timer expires.\n            if (cur_obj_nearest_object_with_behavior(bhvHiddenBlueCoin) == NULL || o->oTimer > 240) {\n                obj_mark_for_deletion(o);\n            }\n\n            break;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/blue_fish.inc.c",
    "content": "\n/**\n * @file blue_fish.inc.c\n * Implements behaviour and spawning for bhvBlueFish located in the castle aquarium outside of SA.\n */\n\n/**\n * Determines fish movement.\n */\nvoid bhv_blue_fish_movement_loop(void) {\n    f32 randomSwitch;\n\n    switch (o->oAction) {\n        // Initial dive phase after spawning\n        case BLUE_FISH_ACT_DIVE:\n            cur_obj_init_animation_with_accel_and_sound(0, 1.0f);\n\n            // Assigns random values to variables that help determine natural motion.\n            if (o->oTimer == 0) {\n                o->oBlueFishRandomAngle = random_sign() * 0x800;\n                o->oBlueFishRandomVel = random_float() * 2;\n                o->oBlueFishRandomTime = (s32)(random_float() * 30) & 0xFE;\n\n                // Adjusts pitch velocity or sets to zero dependant on outcome of randomSwitch.\n                randomSwitch = random_float() * 5;\n                if (randomSwitch < 2.0f) {\n                    o->oAngleVelPitch = random_f32_around_zero(128);\n                } else {\n                    o->oAngleVelPitch = 0;\n                }\n            }\n\n            // Set forward velocity and progress oAction to BLUE_FISH_ACT_TURN.\n            o->oForwardVel = o->oBlueFishRandomVel + 3.0f;\n            if (o->oTimer >= o->oBlueFishRandomTime + 60) {\n                o->oAction++;\n            }\n\n            // Set pitch velocity\n            if (o->oTimer < (o->oBlueFishRandomTime + 60) / 2) {\n                o->oFaceAnglePitch += o->oAngleVelPitch;\n            } else {\n                o->oFaceAnglePitch -= o->oAngleVelPitch;\n            }\n\n            // Calculate new Y velocity\n            o->oVelY = -sins(o->oFaceAnglePitch) * o->oForwardVel;\n            break;\n\n        // Animates and adjusts fish yaw angle.\n        case BLUE_FISH_ACT_TURN:\n            cur_obj_init_animation_with_accel_and_sound(0, 2.0f);\n            o->oMoveAngleYaw = (s32)(o->oBlueFishRandomAngle + o->oMoveAngleYaw);\n            if (o->oTimer == 15) {\n                o->oAction++;\n            }\n            break;\n\n        // Animates and adjusts pitch to an upward direction.\n        case BLUE_FISH_ACT_ASCEND:\n            cur_obj_init_animation_with_accel_and_sound(0, 1.0f);\n\n            // Progresses oAction to BLUE_FISH_ACT_TURN_BACK after elapsed time.\n            if (o->oTimer >= o->oBlueFishRandomTime + 60) {\n                o->oAction++;\n            }\n\n            // Adjusts pitch angle. Direction relies on time not passed.\n            if (o->oTimer < (o->oBlueFishRandomTime + 60) / 2) {\n                o->oFaceAnglePitch -= o->oAngleVelPitch;\n            } else {\n                o->oFaceAnglePitch += o->oAngleVelPitch;\n            }\n            break;\n\n        // Animates and turns fish around\n        case BLUE_FISH_ACT_TURN_BACK:\n            cur_obj_init_animation_with_accel_and_sound(0, 2.0f);\n            o->oMoveAngleYaw = (s32)(o->oBlueFishRandomAngle + o->oMoveAngleYaw);\n\n            // Sets the fish back to the BLUE_FISH_ACT_DIVE phase.\n            if (o->oTimer == 15) {\n                o->oAction = BLUE_FISH_ACT_DIVE;\n            }\n            break;\n    }\n\n    // Calculates Y velocity and calls physics engine.\n    o->oVelY = -sins(o->oFaceAnglePitch) * o->oForwardVel;\n    cur_obj_move_using_fvel_and_gravity();\n\n    // Deletes object if the parent has oAction set to BLUE_FISH_ACT_DUPLICATE.\n    if (o->parentObj->oAction == BLUE_FISH_ACT_DUPLICATE) {\n        obj_mark_for_deletion(o);\n    }\n}\n\n/**\n * Spawns fifteen fish if Mario resides in room fifteen or seven.\n * They move at random within 200.0f\n */\nvoid bhv_tank_fish_group_loop(void) {\n    struct Object *fish;\n    s32 i;\n\n    switch (o->oAction) {\n        case BLUE_FISH_ACT_SPAWN:\n            if (gMarioCurrentRoom == 15 || gMarioCurrentRoom == 7) {\n\n                // spawns fifteen fish and moves them within 200.0f\n                for (i = 0; i < 15; i++) {\n                    fish = spawn_object_relative(0, 300, 0, -200, o, MODEL_FISH, bhvBlueFish);\n                    obj_translate_xyz_random(fish, 200.0f);\n                }\n\n                // Proceed to BLUE_FISH_ACT_ROOM phase.\n                o->oAction++;\n            }\n            break;\n\n        // Sets next oAction phase if Mario is not in rooms fifteen and seven.\n        case BLUE_FISH_ACT_ROOM:\n            if (gMarioCurrentRoom != 15 && gMarioCurrentRoom != 7) {\n                o->oAction++;\n            }\n            break;\n\n        // Sets oAction to the BLUE_FISH_ACT_SPAWN phase.\n        case BLUE_FISH_ACT_DUPLICATE:\n            o->oAction = BLUE_FISH_ACT_SPAWN;\n            break;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/bobomb.inc.c",
    "content": "// bobomb.inc.c\n\nstatic struct ObjectHitbox sBobombHitbox = {\n    /* interactType:      */ INTERACT_GRABBABLE,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 0,\n    /* health:            */ 0,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 65,\n    /* height:            */ 113,\n    /* hurtboxRadius:     */ 0,\n    /* hurtboxHeight:     */ 0,\n};\n\nvoid bhv_bobomb_init(void) {\n    o->oGravity = 2.5f;\n    o->oFriction = 0.8f;\n    o->oBuoyancy = 1.3f;\n    o->oInteractionSubtype = INT_SUBTYPE_KICKABLE;\n}\n\nvoid bobomb_spawn_coin(void) {\n    if (!((o->oBhvParams >> 8) & 0x01)) {\n        obj_spawn_yellow_coins(o, 1);\n        o->oBhvParams = 0x100;\n        set_object_respawn_info_bits(o, 1);\n    }\n}\n\nvoid bobomb_act_explode(void) {\n    if (o->oTimer < 5) {\n        cur_obj_scale(1.0 + (f32) o->oTimer / 5.0);\n    } else {\n        struct Object *explosion = spawn_object(o, MODEL_EXPLOSION, bhvExplosion);\n        explosion->oGraphYOffset += 100.0f;\n\n        bobomb_spawn_coin();\n        create_respawner(MODEL_BLACK_BOBOMB, bhvBobomb, 3000);\n\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n}\n\nvoid bobomb_check_interactions(void) {\n    obj_set_hitbox(o, &sBobombHitbox);\n\n    if (o->oInteractStatus & INT_STATUS_INTERACTED) {\n        if (o->oInteractStatus & INT_STATUS_MARIO_KNOCKBACK_DMG) {\n            o->oMoveAngleYaw = gMarioObject->header.gfx.angle[1];\n            o->oForwardVel = 25.0f;\n            o->oVelY = 30.0f;\n            o->oAction = BOBOMB_ACT_LAUNCHED;\n        }\n\n        if (o->oInteractStatus & INT_STATUS_TOUCHED_BOB_OMB) {\n            o->oAction = BOBOMB_ACT_EXPLODE;\n        }\n\n        o->oInteractStatus = 0;\n    }\n\n    if (obj_attack_collided_from_other_object(o) == TRUE) {\n        o->oAction = BOBOMB_ACT_EXPLODE;\n    }\n}\n\nvoid bobomb_act_patrol(void) {\n    UNUSED u8 filler[4];\n    UNUSED s16 animFrame = o->header.gfx.animInfo.animFrame;\n    s16 collisionFlags;\n\n    o->oForwardVel = 5.0f;\n    collisionFlags = object_step();\n\n    if ((obj_return_home_if_safe(o, o->oHomeX, o->oHomeY, o->oHomeZ, 400) == TRUE)\n        && (obj_check_if_facing_toward_angle(o->oMoveAngleYaw, o->oAngleToMario, 0x2000) == TRUE)) {\n        o->oBobombFuseLit = 1;\n        o->oAction = BOBOMB_ACT_CHASE_MARIO;\n    }\n\n    obj_check_floor_death(collisionFlags, sObjFloor);\n}\n\nvoid bobomb_act_chase_mario(void) {\n    UNUSED u8 filler[4];\n    s16 animFrame = ++o->header.gfx.animInfo.animFrame;\n    s16 collisionFlags;\n\n    o->oForwardVel = 20.0f;\n    collisionFlags = object_step();\n\n    if (animFrame == 5 || animFrame == 16) {\n        cur_obj_play_sound_2(SOUND_OBJ_BOBOMB_WALK);\n    }\n\n    obj_turn_toward_object(o, gMarioObject, 16, 0x800);\n    obj_check_floor_death(collisionFlags, sObjFloor);\n}\n\nvoid bobomb_act_launched(void) {\n    s16 collisionFlags = 0;\n    collisionFlags = object_step();\n    if ((collisionFlags & OBJ_COL_FLAG_GROUNDED) == OBJ_COL_FLAG_GROUNDED) {\n        o->oAction = BOBOMB_ACT_EXPLODE;\n    }\n}\n\nvoid generic_bobomb_free_loop(void) {\n    switch (o->oAction) {\n        case BOBOMB_ACT_PATROL:\n            bobomb_act_patrol();\n            break;\n\n        case BOBOMB_ACT_LAUNCHED:\n            bobomb_act_launched();\n            break;\n\n        case BOBOMB_ACT_CHASE_MARIO:\n            bobomb_act_chase_mario();\n            break;\n\n        case BOBOMB_ACT_EXPLODE:\n            bobomb_act_explode();\n            break;\n\n        case BOBOMB_ACT_LAVA_DEATH:\n            if (obj_lava_death() == TRUE) {\n                create_respawner(MODEL_BLACK_BOBOMB, bhvBobomb, 3000);\n            }\n            break;\n\n        case BOBOMB_ACT_DEATH_PLANE_DEATH:\n            o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n            create_respawner(MODEL_BLACK_BOBOMB, bhvBobomb, 3000);\n            break;\n    }\n\n    bobomb_check_interactions();\n\n    if (o->oBobombFuseTimer > 150) {\n        o->oAction = 3;\n    }\n}\n\nvoid stationary_bobomb_free_loop(void) {\n    switch (o->oAction) {\n        case BOBOMB_ACT_LAUNCHED:\n            bobomb_act_launched();\n            break;\n\n        case BOBOMB_ACT_EXPLODE:\n            bobomb_act_explode();\n            break;\n\n        case BOBOMB_ACT_LAVA_DEATH:\n            if (obj_lava_death() == TRUE) {\n                create_respawner(MODEL_BLACK_BOBOMB, bhvBobomb, 3000);\n            }\n            break;\n\n        case BOBOMB_ACT_DEATH_PLANE_DEATH:\n            o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n            create_respawner(MODEL_BLACK_BOBOMB, bhvBobomb, 3000);\n            break;\n    }\n\n    bobomb_check_interactions();\n\n    if (o->oBobombFuseTimer > 150) {\n        o->oAction = 3;\n    }\n}\n\nvoid bobomb_free_loop(void) {\n    if (o->oBhvParams2ndByte == BOBOMB_BP_STYPE_GENERIC) {\n        generic_bobomb_free_loop();\n    } else {\n        stationary_bobomb_free_loop();\n    }\n}\n\nvoid bobomb_held_loop(void) {\n    o->header.gfx.node.flags |= GRAPH_RENDER_INVISIBLE;\n    cur_obj_init_animation(1);\n    cur_obj_set_pos_relative(gMarioObject, 0, 60.0f, 100.0);\n\n    o->oBobombFuseLit = 1;\n    if (o->oBobombFuseTimer > 150) {\n        //! Although the Bob-omb's action is set to explode when the fuse timer expires,\n        //  bobomb_act_explode() will not execute until the bob-omb's held state changes.\n        //  This allows the Bob-omb to be regrabbed indefinitely.\n        gMarioObject->oInteractStatus |= INT_STATUS_MARIO_DROP_OBJECT;\n        o->oAction = BOBOMB_ACT_EXPLODE;\n    }\n}\n\nvoid bobomb_dropped_loop(void) {\n    cur_obj_get_dropped();\n\n    o->header.gfx.node.flags &= ~GRAPH_RENDER_INVISIBLE;\n    cur_obj_init_animation(0);\n\n    o->oHeldState = 0;\n    o->oAction = BOBOMB_ACT_PATROL;\n}\n\nvoid bobomb_thrown_loop(void) {\n    cur_obj_enable_rendering_2();\n\n    o->header.gfx.node.flags &= ~GRAPH_RENDER_INVISIBLE;\n    o->oHeldState = 0;\n    o->oFlags &= ~OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW;\n    o->oForwardVel = 25.0f;\n    o->oVelY = 20.0f;\n    o->oAction = BOBOMB_ACT_LAUNCHED;\n}\n\nvoid curr_obj_random_blink(s32 *blinkTimer) {\n    if (*blinkTimer == 0) {\n        if ((s16)(random_float() * 100.0f) == 0) {\n            o->oAnimState = 1;\n            *blinkTimer = 1;\n        }\n    } else {\n        (*blinkTimer)++;\n\n        if (*blinkTimer > 5) {\n            o->oAnimState = 0;\n        }\n\n        if (*blinkTimer > 10) {\n            o->oAnimState = 1;\n        }\n\n        if (*blinkTimer > 15) {\n            o->oAnimState = 0;\n            *blinkTimer = 0;\n        }\n    }\n}\n\nvoid bhv_bobomb_loop(void) {\n    s8 dustPeriodMinus1;\n\n    if (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 4000)) {\n        switch (o->oHeldState) {\n            case HELD_FREE:\n                bobomb_free_loop();\n                break;\n\n            case HELD_HELD:\n                bobomb_held_loop();\n                break;\n\n            case HELD_THROWN:\n                bobomb_thrown_loop();\n                break;\n\n            case HELD_DROPPED:\n                bobomb_dropped_loop();\n                break;\n        }\n\n        curr_obj_random_blink(&o->oBobombBlinkTimer);\n\n        if (o->oBobombFuseLit == 1) {\n            if (o->oBobombFuseTimer > 120) {\n                dustPeriodMinus1 = 1;\n            } else {\n                dustPeriodMinus1 = 7;\n            }\n\n            // oBobombFuseTimer % 2 or oBobombFuseTimer % 8\n            if (!(dustPeriodMinus1 & o->oBobombFuseTimer)) {\n                spawn_object(o, MODEL_SMOKE, bhvBobombFuseSmoke);\n            }\n\n            cur_obj_play_sound_1(SOUND_AIR_BOBOMB_LIT_FUSE);\n\n            o->oBobombFuseTimer++;\n        }\n    }\n}\n\nvoid bhv_bobomb_fuse_smoke_init(void) {\n    o->oPosX += (s32)(random_float() * 80.0f) - 40;\n    o->oPosY += (s32)(random_float() * 80.0f) + 60;\n    o->oPosZ += (s32)(random_float() * 80.0f) - 40;\n    cur_obj_scale(1.2f);\n}\n\nvoid bhv_bobomb_buddy_init(void) {\n    o->oGravity = 2.5f;\n    o->oFriction = 0.8f;\n    o->oBuoyancy = 1.3f;\n    o->oInteractionSubtype = INT_SUBTYPE_NPC;\n}\n\nvoid bobomb_buddy_act_idle(void) {\n    UNUSED u8 filler[4];\n    s16 animFrame = o->header.gfx.animInfo.animFrame;\n    UNUSED s16 collisionFlags = 0;\n\n    o->oBobombBuddyPosXCopy = o->oPosX;\n    o->oBobombBuddyPosYCopy = o->oPosY;\n    o->oBobombBuddyPosZCopy = o->oPosZ;\n\n    collisionFlags = object_step();\n\n    if (animFrame == 5 || animFrame == 16) {\n        cur_obj_play_sound_2(SOUND_OBJ_BOBOMB_WALK);\n    }\n\n    if (o->oDistanceToMario < 1000.0f) {\n        o->oMoveAngleYaw = approach_s16_symmetric(o->oMoveAngleYaw, o->oAngleToMario, 0x140);\n    }\n\n    if (o->oInteractStatus == INT_STATUS_INTERACTED) {\n        o->oAction = BOBOMB_BUDDY_ACT_TURN_TO_TALK;\n    }\n}\n\n/**\n * Function for the Bob-omb Buddy cannon guy.\n * dialogFirstText is the first dialogID called when Bob-omb Buddy\n * starts to talk to Mario to prepare the cannon(s) for him.\n * Then the camera goes to the nearest cannon, to play the \"prepare cannon\" cutscene\n * dialogSecondText is called after Bob-omb Buddy has the cannon(s) ready and\n * then tells Mario that is \"Ready for blastoff\".\n */\nvoid bobomb_buddy_cannon_dialog(s16 dialogFirstText, s16 dialogSecondText) {\n    struct Object *cannonClosed;\n    s16 buddyText, cutscene;\n\n    switch (o->oBobombBuddyCannonStatus) {\n        case BOBOMB_BUDDY_CANNON_UNOPENED:\n            buddyText = cutscene_object_with_dialog(CUTSCENE_DIALOG, o, dialogFirstText);\n            if (buddyText != DIALOG_RESPONSE_NONE) {\n                save_file_set_cannon_unlocked();\n                cannonClosed = cur_obj_nearest_object_with_behavior(bhvCannonClosed);\n                if (cannonClosed != NULL) {\n                    o->oBobombBuddyCannonStatus = BOBOMB_BUDDY_CANNON_OPENING;\n                } else {\n                    o->oBobombBuddyCannonStatus = BOBOMB_BUDDY_CANNON_STOP_TALKING;\n                }\n            }\n            break;\n\n        case BOBOMB_BUDDY_CANNON_OPENING:\n            cannonClosed = cur_obj_nearest_object_with_behavior(bhvCannonClosed);\n            cutscene = cutscene_object(CUTSCENE_PREPARE_CANNON, cannonClosed);\n            if (cutscene == -1) {\n                o->oBobombBuddyCannonStatus = BOBOMB_BUDDY_CANNON_OPENED;\n            }\n            break;\n\n        case BOBOMB_BUDDY_CANNON_OPENED:\n            buddyText = cutscene_object_with_dialog(CUTSCENE_DIALOG, o, dialogSecondText);\n            if (buddyText != DIALOG_RESPONSE_NONE) {\n                o->oBobombBuddyCannonStatus = BOBOMB_BUDDY_CANNON_STOP_TALKING;\n            }\n            break;\n\n        case BOBOMB_BUDDY_CANNON_STOP_TALKING:\n            set_mario_npc_dialog(MARIO_DIALOG_STOP);\n\n            o->activeFlags &= ~ACTIVE_FLAG_INITIATED_TIME_STOP;\n            o->oBobombBuddyHasTalkedToMario = BOBOMB_BUDDY_HAS_TALKED;\n            o->oInteractStatus = 0;\n            o->oAction = BOBOMB_BUDDY_ACT_IDLE;\n            o->oBobombBuddyCannonStatus = BOBOMB_BUDDY_CANNON_OPENED;\n            break;\n    }\n}\n\nvoid bobomb_buddy_act_talk(void) {\n    if (set_mario_npc_dialog(MARIO_DIALOG_LOOK_FRONT) == MARIO_DIALOG_STATUS_SPEAK) {\n        o->activeFlags |= ACTIVE_FLAG_INITIATED_TIME_STOP;\n\n        switch (o->oBobombBuddyRole) {\n            case BOBOMB_BUDDY_ROLE_ADVICE:\n                if (cutscene_object_with_dialog(CUTSCENE_DIALOG, o, o->oBhvParams2ndByte)\n                    != BOBOMB_BUDDY_BP_STYPE_GENERIC) {\n                    set_mario_npc_dialog(MARIO_DIALOG_STOP);\n\n                    o->activeFlags &= ~ACTIVE_FLAG_INITIATED_TIME_STOP;\n                    o->oBobombBuddyHasTalkedToMario = BOBOMB_BUDDY_HAS_TALKED;\n                    o->oInteractStatus = 0;\n                    o->oAction = BOBOMB_BUDDY_ACT_IDLE;\n                }\n                break;\n\n            case BOBOMB_BUDDY_ROLE_CANNON:\n                if (gCurrCourseNum == COURSE_BOB) {\n                    bobomb_buddy_cannon_dialog(DIALOG_004, DIALOG_105);\n                } else {\n                    bobomb_buddy_cannon_dialog(DIALOG_047, DIALOG_106);\n                }\n                break;\n        }\n    }\n}\n\nvoid bobomb_buddy_act_turn_to_talk(void) {\n    s16 animFrame = o->header.gfx.animInfo.animFrame;\n\n    if (animFrame == 5 || animFrame == 16) {\n        cur_obj_play_sound_2(SOUND_OBJ_BOBOMB_WALK);\n    }\n\n    o->oMoveAngleYaw = approach_s16_symmetric(o->oMoveAngleYaw, o->oAngleToMario, 0x1000);\n\n    if ((s16) o->oMoveAngleYaw == (s16) o->oAngleToMario) {\n        o->oAction = BOBOMB_BUDDY_ACT_TALK;\n    }\n\n    cur_obj_play_sound_2(SOUND_ACTION_READ_SIGN);\n}\n\nvoid bobomb_buddy_actions(void) {\n    switch (o->oAction) {\n        case BOBOMB_BUDDY_ACT_IDLE:\n            bobomb_buddy_act_idle();\n            break;\n\n        case BOBOMB_BUDDY_ACT_TURN_TO_TALK:\n            bobomb_buddy_act_turn_to_talk();\n            break;\n\n        case BOBOMB_BUDDY_ACT_TALK:\n            bobomb_buddy_act_talk();\n            break;\n    }\n\n    set_object_visibility(o, 3000);\n}\n\nvoid bhv_bobomb_buddy_loop(void) {\n    bobomb_buddy_actions();\n\n    curr_obj_random_blink(&o->oBobombBuddyBlinkTimer);\n\n    o->oInteractStatus = 0;\n}\n"
  },
  {
    "path": "src/game/behaviors/bomp.inc.c",
    "content": "// bomp.inc.c\n\nvoid bhv_small_bomp_init(void) {\n    o->oFaceAngleYaw -= 0x4000;\n    o->oSmallBompInitX = o->oPosX;\n    o->oTimer = random_float() * 100.0f;\n}\n\nvoid bhv_small_bomp_loop(void) {\n    switch (o->oAction) {\n        case BOMP_ACT_WAIT:\n            if (o->oTimer > 100) {\n                o->oAction = BOMP_ACT_POKE_OUT;\n                o->oForwardVel = 30.0f;\n            }\n            break;\n\n        case BOMP_ACT_POKE_OUT:\n            if (o->oPosX > 3450.0f) {\n                o->oPosX = 3450.0f;\n                o->oForwardVel = 0.0f;\n            }\n\n            if (o->oTimer == 15.0) {\n                o->oAction = BOMP_ACT_EXTEND;\n                o->oForwardVel = 40.0f;\n                cur_obj_play_sound_2(SOUND_OBJ_UNKNOWN2);\n            }\n            break;\n\n        case BOMP_ACT_EXTEND:\n            if (o->oPosX > 3830.0f) {\n                o->oPosX = 3830.0f;\n                o->oForwardVel = 0.0f;\n            }\n\n            if (o->oTimer == 60) {\n                o->oAction = BOMP_ACT_RETRACT;\n                o->oForwardVel = 10.0f;\n                o->oMoveAngleYaw -= 0x8000;\n                cur_obj_play_sound_2(SOUND_OBJ_UNKNOWN2);\n            }\n            break;\n\n        case BOMP_ACT_RETRACT:\n            if (o->oPosX < 3330.0f) {\n                o->oPosX = 3330.0f;\n                o->oForwardVel = 0.0f;\n            }\n\n            if (o->oTimer == 90) {\n                o->oAction = BOMP_ACT_POKE_OUT;\n                o->oForwardVel = 25.0f;\n                o->oMoveAngleYaw -= 0x8000;\n            }\n            break;\n    }\n}\n\nvoid bhv_large_bomp_init(void) {\n    o->oMoveAngleYaw += 0x4000;\n    o->oTimer = random_float() * 100.0f;\n}\n\nvoid bhv_large_bomp_loop(void) {\n    switch (o->oAction) {\n        case BOMP_ACT_WAIT:\n            if (o->oTimer > 100) {\n                o->oAction = BOMP_ACT_POKE_OUT;\n                o->oForwardVel = 30.0f;\n            }\n            break;\n\n        case BOMP_ACT_POKE_OUT:\n            if (o->oPosX > 3450.0f) {\n                o->oPosX = 3450.0f;\n                o->oForwardVel = 0.0f;\n            }\n\n            if (o->oTimer == 15.0) {\n                o->oAction = BOMP_ACT_EXTEND;\n                o->oForwardVel = 10.0f;\n                cur_obj_play_sound_2(SOUND_OBJ_UNKNOWN2);\n            }\n            break;\n\n        case BOMP_ACT_EXTEND:\n            if (o->oPosX > 3830.0f) {\n                o->oPosX = 3830.0f;\n                o->oForwardVel = 0.0f;\n            }\n\n            if (o->oTimer == 60) {\n                o->oAction = BOMP_ACT_RETRACT;\n                o->oForwardVel = 10.0f;\n                o->oMoveAngleYaw -= 0x8000;\n                cur_obj_play_sound_2(SOUND_OBJ_UNKNOWN2);\n            }\n            break;\n\n        case BOMP_ACT_RETRACT:\n            if (o->oPosX < 3330.0f) {\n                o->oPosX = 3330.0f;\n                o->oForwardVel = 0.0f;\n            }\n\n            if (o->oTimer == 90) {\n                o->oAction = BOMP_ACT_POKE_OUT;\n                o->oForwardVel = 25.0f;\n                o->oMoveAngleYaw -= 0x8000;\n            }\n            break;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/boo.inc.c",
    "content": "// boo.inc.c\n\n#define SPAWN_CASTLE_BOO_STAR_REQUIREMENT 12\n\nstatic struct ObjectHitbox sBooGivingStarHitbox = {\n    /* interactType:      */ 0,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 3,\n    /* health:            */ 3,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 140,\n    /* height:            */ 80,\n    /* hurtboxRadius:     */ 40,\n    /* hurtboxHeight:     */ 60,\n};\n\n// Relative positions\nstatic s16 sCourtyardBooTripletPositions[][3] = {\n    { 0, 50, 0 },\n    { 210, 110, 210 },\n    { -210, 70, -210 },\n};\n\nstatic void boo_stop(void) {\n    o->oForwardVel = 0.0f;\n    o->oVelY = 0.0f;\n    o->oGravity = 0.0f;\n}\n\nvoid bhv_boo_init(void) {\n    o->oBooInitialMoveYaw = o->oMoveAngleYaw;\n}\n\nstatic s32 boo_should_be_stopped(void) {\n    if (cur_obj_has_behavior(bhvMerryGoRoundBigBoo) || cur_obj_has_behavior(bhvMerryGoRoundBoo)) {\n        if (!gMarioOnMerryGoRound) {\n            return TRUE;\n        } else {\n            return FALSE;\n        }\n    } else {\n        if (o->activeFlags & ACTIVE_FLAG_IN_DIFFERENT_ROOM) {\n            return TRUE;\n        }\n\n        if (o->oRoom == 10 && (gTimeStopState & TIME_STOP_MARIO_OPENED_DOOR)) {\n            return TRUE;\n        }\n    }\n\n    return FALSE;\n}\n\nstatic s32 boo_should_be_active(void) {\n    f32 activationRadius;\n\n    if (cur_obj_has_behavior(bhvBalconyBigBoo)) {\n        activationRadius = 5000.0f;\n    } else {\n        activationRadius = 1500.0f;\n    }\n\n    if (cur_obj_has_behavior(bhvMerryGoRoundBigBoo) || cur_obj_has_behavior(bhvMerryGoRoundBoo)) {\n        if (gMarioOnMerryGoRound == TRUE) {\n            return TRUE;\n        } else {\n            return FALSE;\n        }\n    } else if (o->oRoom == -1) {\n        if (o->oDistanceToMario < activationRadius) {\n            return TRUE;\n        }\n    } else if (!boo_should_be_stopped()) {\n        if (o->oDistanceToMario < activationRadius\n            && (o->oRoom == gMarioCurrentRoom || gMarioCurrentRoom == 0)) {\n            return TRUE;\n        }\n    }\n\n    return FALSE;\n}\n\nvoid bhv_courtyard_boo_triplet_init(void) {\n    s32 i;\n\n    if (gHudDisplay.stars < SPAWN_CASTLE_BOO_STAR_REQUIREMENT) {\n        obj_mark_for_deletion(o);\n    } else {\n        for (i = 0; i < 3; i++) {\n            struct Object *boo = spawn_object_relative(\n                BOO_BP_GENERIC, sCourtyardBooTripletPositions[i][0], sCourtyardBooTripletPositions[i][1],\n                sCourtyardBooTripletPositions[i][2], o, MODEL_BOO, bhvGhostHuntBoo);\n\n            boo->oMoveAngleYaw = random_u16();\n        }\n    }\n}\n\nstatic void boo_approach_target_opacity_and_update_scale(void) {\n    f32 scale;\n\n    if (o->oBooTargetOpacity != o->oOpacity) {\n        if (o->oBooTargetOpacity > o->oOpacity) {\n            o->oOpacity += 20;\n\n            if (o->oBooTargetOpacity < o->oOpacity) {\n                o->oOpacity = o->oBooTargetOpacity;\n            }\n        } else {\n            o->oOpacity -= 20;\n\n            if (o->oBooTargetOpacity > o->oOpacity) {\n                o->oOpacity = o->oBooTargetOpacity;\n            }\n        }\n    }\n\n    scale = (o->oOpacity / 255.0f * 0.4 + 0.6) * o->oBooBaseScale;\n    obj_scale(o, scale); // why no cur_obj_scale? was cur_obj_scale written later?\n}\n\nstatic void boo_oscillate(s32 ignoreOpacity) {\n    o->oFaceAnglePitch = sins(o->oBooOscillationTimer) * 0x400;\n\n    if (o->oOpacity == 255 || ignoreOpacity == TRUE) {\n        o->header.gfx.scale[0] = sins(o->oBooOscillationTimer) * 0.08 + o->oBooBaseScale;\n        o->header.gfx.scale[1] = -sins(o->oBooOscillationTimer) * 0.08 + o->oBooBaseScale;\n        o->header.gfx.scale[2] = o->header.gfx.scale[0];\n        o->oGravity = sins(o->oBooOscillationTimer) * o->oBooBaseScale;\n        o->oBooOscillationTimer += 0x400;\n    }\n}\n\nstatic s32 boo_vanish_or_appear(void) {\n    s16 relativeAngleToMario = abs_angle_diff(o->oAngleToMario, o->oMoveAngleYaw);\n    s16 relativeMarioFaceAngle = abs_angle_diff(o->oMoveAngleYaw, gMarioObject->oFaceAngleYaw);\n    // magic?\n    s16 relativeAngleToMarioThreshhold = 0x1568;\n    s16 relativeMarioFaceAngleThreshhold = 0x6B58;\n    s32 doneAppearing = FALSE;\n\n    o->oVelY = 0.0f;\n\n    if (relativeAngleToMario > relativeAngleToMarioThreshhold\n        || relativeMarioFaceAngle < relativeMarioFaceAngleThreshhold) {\n        if (o->oOpacity == 40) {\n            o->oBooTargetOpacity = 255;\n            cur_obj_play_sound_2(SOUND_OBJ_BOO_LAUGH_LONG);\n        }\n\n        if (o->oOpacity > 180) {\n            doneAppearing = TRUE;\n        }\n    } else if (o->oOpacity == 255) {\n        o->oBooTargetOpacity = 40;\n    }\n\n    return doneAppearing;\n}\n\nstatic void boo_set_move_yaw_for_during_hit(s32 hurt) {\n    cur_obj_become_intangible();\n\n    o->oFlags &= ~OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW;\n    o->oBooMoveYawBeforeHit = (f32) o->oMoveAngleYaw;\n\n    if (hurt) {\n        o->oBooMoveYawDuringHit = gMarioObject->oMoveAngleYaw;\n    } else if (coss((s16) o->oMoveAngleYaw - (s16) o->oAngleToMario) < 0.0f) {\n        o->oBooMoveYawDuringHit = o->oMoveAngleYaw;\n    } else {\n        o->oBooMoveYawDuringHit = (s16)(o->oMoveAngleYaw + 0x8000);\n    }\n}\n\nstatic void boo_move_during_hit(s32 roll, f32 fVel) {\n    // Boos seem to have been supposed to oscillate up then down then back again\n    // when hit. However it seems the programmers forgot to scale the cosine,\n    // so the Y velocity goes from 1 to -1 and back to 1 over 32 frames.\n    // This is such a small change that the Y position only changes by 5 units.\n    // It's completely unnoticable in-game.\n    s32 oscillationVel = o->oTimer * 0x800 + 0x800;\n\n    o->oForwardVel = fVel;\n    o->oVelY = coss(oscillationVel);\n    o->oMoveAngleYaw = o->oBooMoveYawDuringHit;\n\n    if (roll) {\n        o->oFaceAngleYaw  += sBooHitRotations[o->oTimer];\n        o->oFaceAngleRoll += sBooHitRotations[o->oTimer];\n    }\n}\n\nstatic void big_boo_shake_after_hit(void) {\n    // Oscillate yaw\n    s32 oscillationVel = o->oTimer * 0x2000 - 0x3E000;\n    o->oFaceAngleYaw += coss(oscillationVel) * 0x400;\n}\n\nstatic void boo_reset_after_hit(void) {\n    o->oMoveAngleYaw = o->oBooMoveYawBeforeHit;\n    o->oFlags |= OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW;\n    o->oInteractStatus = 0;\n}\n\n// called iff boo/big boo/cage boo is in action 2, which only occurs if it was non-attack-ly interacted with/bounced on?\nstatic s32 boo_update_after_bounced_on(f32 a0) {\n    boo_stop();\n\n    if (o->oTimer == 0) {\n        boo_set_move_yaw_for_during_hit(FALSE);\n    }\n\n    if (o->oTimer < 32) {\n        boo_move_during_hit(FALSE, sBooHitRotations[o->oTimer] / 5000.0f * a0);\n    } else {\n        cur_obj_become_tangible();\n        boo_reset_after_hit();\n        o->oAction = 1;\n\n        return TRUE;\n    }\n\n    return FALSE;\n}\n\n// called iff big boo nonlethally hit\nstatic s32 big_boo_update_during_nonlethal_hit(f32 a0) {\n    boo_stop();\n\n    if (o->oTimer == 0) {\n        boo_set_move_yaw_for_during_hit(TRUE);\n    }\n\n    if (o->oTimer < 32) {\n        boo_move_during_hit(TRUE, sBooHitRotations[o->oTimer] / 5000.0f * a0);\n    } else if (o->oTimer < 48) {\n        big_boo_shake_after_hit();\n    } else {\n        cur_obj_become_tangible();\n        boo_reset_after_hit();\n        o->oAction = 1;\n\n        return TRUE;\n    }\n\n    return FALSE;\n}\n\n// called every frame once mario lethally hits the boo until the boo is deleted,\n// returns whether death is complete\nstatic s32 boo_update_during_death(void) {\n    if (o->oTimer == 0) {\n        o->oForwardVel = 40.0f;\n        o->oMoveAngleYaw = gMarioObject->oMoveAngleYaw;\n        o->oBooDeathStatus = BOO_DEATH_STATUS_DYING;\n        o->oFlags &= ~OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW;\n    } else {\n        if (o->oTimer == 5) {\n            o->oBooTargetOpacity = 0;\n        }\n\n        if (o->oTimer > 30 || o->oMoveFlags & OBJ_MOVE_HIT_WALL) {\n            spawn_mist_particles();\n            o->oBooDeathStatus = BOO_DEATH_STATUS_DEAD;\n\n            if (o->oBooParentBigBoo != NULL) {\n                struct Object *parentBigBoo = o->oBooParentBigBoo;\n\n#ifndef VERSION_JP\n                if (!cur_obj_has_behavior(bhvBoo)) {\n#endif\n                    parentBigBoo->oBigBooNumMinionBoosKilled++;\n#ifndef VERSION_JP\n                }\n#endif\n            }\n\n            return TRUE;\n        }\n    }\n\n    o->oVelY = 5.0f;\n    o->oFaceAngleRoll += 0x800;\n    o->oFaceAngleYaw += 0x800;\n\n    return FALSE;\n}\n\nstatic s32 obj_has_attack_type(u32 attackType) {\n    if ((o->oInteractStatus & INT_STATUS_ATTACK_MASK) == attackType) {\n        return TRUE;\n    } else {\n        return FALSE;\n    }\n}\n\nstatic s32 boo_get_attack_status(void) {\n    s32 attackStatus = BOO_NOT_ATTACKED;\n\n    if (o->oInteractStatus & INT_STATUS_INTERACTED) {\n        if ((o->oInteractStatus & INT_STATUS_WAS_ATTACKED)\n            && !obj_has_attack_type(ATTACK_FROM_ABOVE)) {\n            cur_obj_become_intangible();\n\n            o->oInteractStatus = 0;\n\n            cur_obj_play_sound_2(SOUND_OBJ_BOO_LAUGH_SHORT);\n\n            attackStatus = BOO_ATTACKED;\n        } else {\n            cur_obj_play_sound_2(SOUND_OBJ_BOO_BOUNCE_TOP);\n\n            o->oInteractStatus = 0;\n\n            attackStatus = BOO_BOUNCED_ON;\n        }\n    }\n\n    return attackStatus;\n}\n\n// boo idle/chasing movement?\nstatic void boo_chase_mario(f32 a0, s16 turnSpeed, f32 velMultiplier) {\n    f32 dy;\n    s16 targetYaw;\n\n    if (boo_vanish_or_appear()) {\n        o->oInteractType = INTERACT_BOUNCE_TOP;\n\n        if (cur_obj_lateral_dist_from_mario_to_home() > 1500.0f) {\n            targetYaw = cur_obj_angle_to_home();\n        } else {\n            targetYaw = o->oAngleToMario;\n        }\n\n        cur_obj_rotate_yaw_toward(targetYaw, turnSpeed);\n        o->oVelY = 0.0f;\n\n        if (!mario_is_in_air_action()) {\n            dy = o->oPosY - gMarioObject->oPosY;\n            if (a0 < dy && dy < 500.0f) {\n                o->oVelY = increment_velocity_toward_range(\n                               o->oPosY, gMarioObject->oPosY + 50.0f, 10.0f, 2.0f);\n            }\n        }\n\n        cur_obj_set_vel_from_mario_vel(10.0f - o->oBooNegatedAggressiveness, velMultiplier);\n\n        if (o->oForwardVel != 0.0f) {\n            boo_oscillate(FALSE);\n        }\n    } else {\n        o->oInteractType = 0;\n        // why is boo_stop not used here\n        o->oForwardVel = 0.0f;\n        o->oVelY = 0.0f;\n        o->oGravity = 0.0f;\n    }\n}\n\nstatic void boo_act_0(void) {\n    o->activeFlags |= ACTIVE_FLAG_MOVE_THROUGH_GRATE;\n\n    if (o->oBhvParams2ndByte == BOO_BP_MERRY_GO_ROUND) {\n        o->oRoom = 10;\n    }\n\n    cur_obj_set_pos_to_home();\n    o->oMoveAngleYaw = o->oBooInitialMoveYaw;\n    boo_stop();\n\n    o->oBooParentBigBoo = cur_obj_nearest_object_with_behavior(bhvGhostHuntBigBoo);\n    o->oBooBaseScale = 1.0f;\n    o->oBooTargetOpacity = 255;\n\n    if (boo_should_be_active()) {\n        // Condition is met if the object is bhvBalconyBigBoo or bhvMerryGoRoundBoo\n        if (o->oBhvParams2ndByte == BOO_BP_MERRY_GO_ROUND) {\n            o->oBooParentBigBoo = NULL;\n            o->oAction = 5;\n        } else {\n            o->oAction = 1;\n        }\n    }\n}\n\nstatic void boo_act_5(void) {\n    if (o->oTimer < 30) {\n        o->oVelY = 0.0f;\n        o->oForwardVel = 13.0f;\n        boo_oscillate(FALSE);\n        o->oWallHitboxRadius = 0.0f;\n    } else {\n        o->oAction = 1;\n        o->oWallHitboxRadius = 30.0f;\n    }\n}\n\nstatic void boo_act_1(void) {\n    s32 attackStatus;\n\n    if (o->oTimer == 0) {\n        o->oBooNegatedAggressiveness = -random_float() * 5.0f;\n        o->oBooTurningSpeed = (s32)(random_float() * 128.0f);\n    }\n\n    boo_chase_mario(-100.0f, o->oBooTurningSpeed + 0x180, 0.5f);\n\n    attackStatus = boo_get_attack_status();\n\n    if (boo_should_be_stopped()) {\n        o->oAction = 0;\n    }\n\n    if (attackStatus == BOO_BOUNCED_ON) {\n        o->oAction = 2;\n    }\n\n    if (attackStatus == BOO_ATTACKED) {\n        o->oAction = 3;\n    }\n\n    if (attackStatus == BOO_ATTACKED) {\n        create_sound_spawner(SOUND_OBJ_DYING_ENEMY1);\n    }\n}\n\nstatic void boo_act_2(void) {\n    if (boo_update_after_bounced_on(20.0f)) {\n        o->oAction = 1;\n    }\n}\n\nstatic void boo_act_3(void) {\n    if (boo_update_during_death()) {\n        if (o->oBhvParams2ndByte != BOO_BP_GHOST_HUNT) {\n            obj_mark_for_deletion(o);\n        } else {\n            o->oAction = 4;\n            cur_obj_disable();\n        }\n    }\n}\n\n// Called when a Go on a Ghost Hunt boo dies\nstatic void boo_act_4(void) {\n    s32 dialogID;\n\n    // If there are no remaining \"minion\" boos, show the dialog of the Big Boo\n    if (cur_obj_nearest_object_with_behavior(bhvGhostHuntBoo) == NULL) {\n        dialogID = DIALOG_108;\n    } else {\n        dialogID = DIALOG_107;\n    }\n\n    if (cur_obj_update_dialog(MARIO_DIALOG_LOOK_UP, DIALOG_FLAG_TEXT_DEFAULT, dialogID, 0)) {\n        create_sound_spawner(SOUND_OBJ_DYING_ENEMY1);\n        obj_mark_for_deletion(o);\n\n        if (dialogID == DIALOG_108) { // If the Big Boo should spawn, play the jingle\n            play_puzzle_jingle();\n        }\n    }\n}\n\nstatic void (*sBooActions[])(void) = {\n    boo_act_0,\n    boo_act_1,\n    boo_act_2,\n    boo_act_3,\n    boo_act_4,\n    boo_act_5,\n};\n\nvoid bhv_boo_loop(void) {\n    //PARTIAL_UPDATE\n\n    cur_obj_update_floor_and_walls();\n    cur_obj_call_action_function(sBooActions);\n    cur_obj_move_standard(78);\n    boo_approach_target_opacity_and_update_scale();\n\n    if (obj_has_behavior(o->parentObj, bhvMerryGoRoundBooManager)\n        && o->activeFlags == ACTIVE_FLAG_DEACTIVATED) {\n        o->parentObj->oMerryGoRoundBooManagerNumBoosKilled++;\n    }\n\n    o->oInteractStatus = 0;\n}\n\nstatic void big_boo_act_0(void) {\n    if (cur_obj_has_behavior(bhvBalconyBigBoo)) {\n        obj_set_secondary_camera_focus();\n        // number of killed boos set > 5 so that boo always loads\n        // redundant? this is also done in behavior_data.s\n        o->oBigBooNumMinionBoosKilled = 10;\n    }\n\n    o->oBooParentBigBoo = NULL;\n\n    if (boo_should_be_active()\n#ifndef VERSION_JP\n        && o->oBigBooNumMinionBoosKilled >= gDebugInfo[DEBUG_PAGE_ENEMYINFO][0] + 5\n#else\n        && o->oBigBooNumMinionBoosKilled >= 5\n#endif\n    ) {\n        o->oAction = 1;\n\n        cur_obj_set_pos_to_home();\n        o->oMoveAngleYaw = o->oBooInitialMoveYaw;\n\n        cur_obj_unhide();\n\n        o->oBooTargetOpacity = 255;\n        o->oBooBaseScale = 3.0f;\n        o->oHealth = 3;\n\n        cur_obj_scale(3.0f);\n        cur_obj_become_tangible();\n    } else {\n        cur_obj_hide();\n        cur_obj_become_intangible();\n        boo_stop();\n    }\n}\n\nstatic void big_boo_act_1(void) {\n    s32 attackStatus;\n    s16 turnSpeed;\n    f32 velMultiplier;\n\n    if (o->oHealth == 3) {\n        turnSpeed = 0x180; velMultiplier = 0.5f;\n    } else if (o->oHealth == 2) {\n        turnSpeed = 0x240; velMultiplier = 0.6f;\n    } else {\n        turnSpeed = 0x300; velMultiplier = 0.8f;\n    }\n\n    boo_chase_mario(-100.0f, turnSpeed, velMultiplier);\n\n    attackStatus = boo_get_attack_status();\n\n    // redundant; this check is in boo_should_be_stopped\n    if (cur_obj_has_behavior(bhvMerryGoRoundBigBoo)) {\n        if (!gMarioOnMerryGoRound) {\n            o->oAction = 0;\n        }\n    } else if (boo_should_be_stopped()) {\n        o->oAction = 0;\n    }\n\n    if (attackStatus == BOO_BOUNCED_ON) {\n        o->oAction = 2;\n    }\n\n    if (attackStatus == BOO_ATTACKED) {\n        o->oAction = 3;\n    }\n\n    if (attackStatus == BOO_ATTACKED) {\n        create_sound_spawner(SOUND_OBJ_THWOMP);\n    }\n}\n\nstatic void big_boo_act_2(void) {\n    if (boo_update_after_bounced_on(20.0f)) {\n        o->oAction = 1;\n    }\n}\n\nstatic void big_boo_spawn_ghost_hunt_star(void) {\n    spawn_default_star(980.0f, 1100.0f, 250.0f);\n}\n\nstatic void big_boo_spawn_balcony_star(void) {\n    spawn_default_star(700.0f, 3200.0f, 1900.0f);\n}\n\nstatic void big_boo_spawn_merry_go_round_star(void) {\n    struct Object *merryGoRound;\n\n    spawn_default_star(-1600.0f, -2100.0f, 205.0f);\n\n    merryGoRound = cur_obj_nearest_object_with_behavior(bhvMerryGoRound);\n\n    if (merryGoRound != NULL) {\n        merryGoRound->oMerryGoRoundStopped = TRUE;\n    }\n}\n\nstatic void big_boo_act_3(void) {\n    if (o->oTimer == 0) {\n        o->oHealth--;\n    }\n\n    if (o->oHealth == 0) {\n        if (boo_update_during_death()) {\n            cur_obj_disable();\n\n            o->oAction = 4;\n\n            obj_set_angle(o, 0, 0, 0);\n\n            if (o->oBhvParams2ndByte == BIG_BOO_BP_GHOST_HUNT) {\n                big_boo_spawn_ghost_hunt_star();\n            } else if (o->oBhvParams2ndByte == BIG_BOO_BP_MERRY_GO_ROUND) {\n                big_boo_spawn_merry_go_round_star();\n            } else { // BIG_BOO_BP_BALCONY\n                big_boo_spawn_balcony_star();\n            }\n        }\n    } else {\n        if (o->oTimer == 0) {\n            spawn_mist_particles();\n            o->oBooBaseScale -= 0.5;\n        }\n\n        if (big_boo_update_during_nonlethal_hit(40.0f)) {\n            o->oAction = 1;\n        }\n    }\n}\n\nstatic void big_boo_act_4(void) {\n#ifndef VERSION_JP\n    boo_stop();\n#endif\n\n    if (o->oBhvParams2ndByte == BIG_BOO_BP_GHOST_HUNT) {\n        obj_set_pos(o, 973, 0, 626);\n\n        if (o->oTimer > 60 && o->oDistanceToMario < 600.0f) {\n            obj_set_pos(o, 973, 0, 717);\n\n            spawn_object_relative(0, 0, 0,    0, o, MODEL_BBH_STAIRCASE_STEP, bhvBooStaircase);\n            spawn_object_relative(1, 0, 0, -200, o, MODEL_BBH_STAIRCASE_STEP, bhvBooStaircase);\n            spawn_object_relative(2, 0, 0,  200, o, MODEL_BBH_STAIRCASE_STEP, bhvBooStaircase);\n\n            obj_mark_for_deletion(o);\n        }\n    } else {\n        obj_mark_for_deletion(o);\n    }\n}\n\nstatic void (*sBooGivingStarActions[])(void) = {\n    big_boo_act_0,\n    big_boo_act_1,\n    big_boo_act_2,\n    big_boo_act_3,\n    big_boo_act_4,\n};\n\nvoid bhv_big_boo_loop(void) {\n    //PARTIAL_UPDATE\n\n    obj_set_hitbox(o, &sBooGivingStarHitbox);\n\n    o->oGraphYOffset = o->oBooBaseScale * 60.0f;\n\n    cur_obj_update_floor_and_walls();\n    cur_obj_call_action_function(sBooGivingStarActions);\n    cur_obj_move_standard(78);\n\n    boo_approach_target_opacity_and_update_scale();\n\n    o->oInteractStatus = 0;\n}\n\nstatic void boo_with_cage_act_0(void) {\n    o->oBooParentBigBoo = NULL;\n    o->oBooTargetOpacity = 255;\n    o->oBooBaseScale = 2.0f;\n\n    cur_obj_scale(2.0f);\n    cur_obj_become_tangible();\n\n    if (boo_should_be_active()) {\n        o->oAction = 1;\n    }\n}\n\nstatic void boo_with_cage_act_1(void) {\n    s32 attackStatus;\n\n    boo_chase_mario(100.0f, 0x200, 0.5f);\n\n    attackStatus = boo_get_attack_status();\n\n    if (boo_should_be_stopped()) {\n        o->oAction = 0;\n    }\n\n    if (attackStatus == BOO_BOUNCED_ON) {\n        o->oAction = 2;\n    }\n\n    if (attackStatus == BOO_ATTACKED) {\n        o->oAction = 3;\n    }\n}\n\nstatic void boo_with_cage_act_2(void) {\n    if (boo_update_after_bounced_on(20.0f)) {\n        o->oAction = 1;\n    }\n}\n\nstatic void boo_with_cage_act_3(void) {\n    if (boo_update_during_death()) {\n        obj_mark_for_deletion(o);\n    }\n}\n\nvoid bhv_boo_with_cage_init(void) {\n    if (gHudDisplay.stars < SPAWN_CASTLE_BOO_STAR_REQUIREMENT) {\n        obj_mark_for_deletion(o);\n    } else {\n        struct Object *cage = spawn_object(o, MODEL_HAUNTED_CAGE, bhvBooCage);\n        cage->oBhvParams = o->oBhvParams;\n    }\n}\n\nstatic void (*sBooWithCageActions[])(void) = {\n    boo_with_cage_act_0,\n    boo_with_cage_act_1,\n    boo_with_cage_act_2,\n    boo_with_cage_act_3,\n};\n\nvoid bhv_boo_with_cage_loop(void) {\n    //PARTIAL_UPDATE\n\n    cur_obj_update_floor_and_walls();\n    cur_obj_call_action_function(sBooWithCageActions);\n    cur_obj_move_standard(78);\n\n    boo_approach_target_opacity_and_update_scale();\n\n    o->oInteractStatus = 0;\n}\n\nvoid bhv_merry_go_round_boo_manager_loop(void) {\n    switch (o->oAction) {\n        case 0:\n            if (o->oDistanceToMario < 1000.0f) {\n                if (o->oMerryGoRoundBooManagerNumBoosKilled < 5) {\n                    if (o->oMerryGoRoundBooManagerNumBoosSpawned != 5) {\n                        if (o->oMerryGoRoundBooManagerNumBoosSpawned\n                                - o->oMerryGoRoundBooManagerNumBoosKilled < 2) {\n                            spawn_object(o, MODEL_BOO, bhvMerryGoRoundBoo);\n                            o->oMerryGoRoundBooManagerNumBoosSpawned++;\n                        }\n                    }\n\n                    o->oAction++;\n                }\n\n                if (o->oMerryGoRoundBooManagerNumBoosKilled >= 5) {\n                    struct Object *bigBoo = spawn_object(o, MODEL_BOO, bhvMerryGoRoundBigBoo);\n                    obj_copy_behavior_params(bigBoo, o);\n\n                    o->oAction = 2;\n\n#ifndef VERSION_JP\n                    play_puzzle_jingle();\n#else\n                    play_sound(SOUND_GENERAL2_RIGHT_ANSWER, gGlobalSoundSource);\n#endif\n                }\n            }\n\n            break;\n\n        case 1:\n            if (o->oTimer > 60) {\n                o->oAction = 0;\n            }\n\n            break;\n\n        case 2:\n            break;\n    }\n}\n\nvoid obj_set_secondary_camera_focus(void) {\n    gSecondCameraFocus = o;\n}\n\nvoid bhv_animated_texture_loop(void) {\n    cur_obj_set_pos_to_home_with_debug();\n}\n\nvoid bhv_boo_in_castle_loop(void) {\n    s16 targetAngle;\n\n    o->oBooBaseScale = 2.0f;\n\n    if (o->oAction == 0) {\n        cur_obj_hide();\n\n        if (gHudDisplay.stars < SPAWN_CASTLE_BOO_STAR_REQUIREMENT) {\n            obj_mark_for_deletion(o);\n        }\n\n        if (gMarioCurrentRoom == 1) {\n            o->oAction++;\n        }\n    } else if (o->oAction == 1) {\n        cur_obj_unhide();\n\n        o->oOpacity = 180;\n\n        if (o->oTimer == 0) {\n            cur_obj_scale(o->oBooBaseScale);\n        }\n\n        if (o->oDistanceToMario < 1000.0f) {\n            o->oAction++;\n            cur_obj_play_sound_2(SOUND_OBJ_BOO_LAUGH_LONG);\n        }\n\n        o->oForwardVel = 0.0f;\n        targetAngle = o->oAngleToMario;\n    } else {\n        cur_obj_forward_vel_approach_upward(32.0f, 1.0f);\n\n        o->oHomeX = -1000.0f;\n        o->oHomeZ = -9000.0f;\n\n        targetAngle = cur_obj_angle_to_home();\n\n        if (o->oPosZ < -5000.0f) {\n            if (o->oOpacity > 0) {\n                o->oOpacity -= 20;\n            } else {\n                o->oOpacity = 0;\n            }\n        }\n\n        if (o->activeFlags & ACTIVE_FLAG_IN_DIFFERENT_ROOM) {\n            o->oAction = 1;\n        }\n    }\n\n    o->oVelY = 0.0f;\n\n    targetAngle = cur_obj_angle_to_home();\n\n    cur_obj_rotate_yaw_toward(targetAngle, 0x5A8);\n    boo_oscillate(TRUE);\n    cur_obj_move_using_fvel_and_gravity();\n}\n\nvoid bhv_boo_staircase(void) {\n    f32 targetY;\n\n    switch (o->oBhvParams2ndByte) {\n        case 1:\n            targetY = 0.0f;\n            break;\n        case 0:\n            targetY = -206.0f;\n            break;\n        case 2:\n            targetY = -413.0f;\n            break;\n    }\n\n    switch (o->oAction) {\n        case 0:\n            o->oPosY = o->oHomeY - 620.0f;\n            o->oAction++;\n            // fallthrough\n        case 1:\n            o->oPosY += 8.0f;\n            cur_obj_play_sound_1(SOUND_ENV_ELEVATOR2);\n\n            if (o->oPosY > targetY) {\n                o->oPosY = targetY;\n                o->oAction++;\n            }\n\n            break;\n\n        case 2:\n            if (o->oTimer == 0) {\n                cur_obj_play_sound_2(SOUND_GENERAL_UNKNOWN4_LOWPRIO);\n            }\n\n            if (jiggle_bbh_stair(o->oTimer)) {\n                o->oAction++;\n            }\n\n            break;\n\n        case 3:\n            if (o->oTimer == 0 && o->oBhvParams2ndByte == 1) {\n                play_puzzle_jingle();\n            }\n\n            break;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/boo_cage.inc.c",
    "content": "\n/**\n * Behavior for bhvBooCage.\n * This is the cage inside the big boo in the castle courtyard\n * that lets Mario enter BBH. It has its own special interaction type,\n * INTERACT_BBH_ENTRANCE.\n */\n\n/**\n * Boo cage hitbox. It's not tangible; this is the hitbox\n * Mario has to enter to enter BBH.\n */\nstatic struct ObjectHitbox sBooCageHitbox = {\n    /* interactType:      */ INTERACT_BBH_ENTRANCE,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 0,\n    /* health:            */ 0,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 120,\n    /* height:            */ 300,\n    /* hurtboxRadius:     */ 0,\n    /* hurtboxHeight:     */ 0,\n};\n\n/**\n * Update function for bhvBooCage.\n */\nvoid bhv_boo_cage_loop(void) {\n    UNUSED u8 filler[4];\n\n    obj_set_hitbox(o, &sBooCageHitbox);\n\n    switch (o->oAction) {\n        case BOO_CAGE_ACT_IN_BOO:\n            // Don't let Mario enter BBH until the boo is killed\n            cur_obj_become_intangible();\n\n            // Useless scale. This is also found in the code for BOO_CAGE_ACT_ON_GROUND.\n            // Was the boo cage originally meant to have been shrunk and grow while falling?\n            cur_obj_scale(1.0f);\n\n            // If the cage's parent boo is killed, set the action to BOO_CAGE_ACT_FALLING,\n            // give the cage an initial Y velocity of 60 units/frame, and play the puzzle jingle.\n            // Otherwise, stay inside the boo.\n            if (o->parentObj->oBooDeathStatus != BOO_DEATH_STATUS_ALIVE) {\n                o->oAction++;\n                o->oVelY = 60.0f;\n                play_puzzle_jingle();\n            } else {\n                obj_copy_pos_and_angle(o, o->parentObj);\n            }\n\n            break;\n\n        case BOO_CAGE_ACT_FALLING:\n            // Reset pitch and roll. This is useless, since the cage never rotates.\n            // Was it meant to rotate inside the boo, like the beta boo key?\n            o->oFaceAnglePitch = 0;\n            o->oFaceAngleRoll = 0;\n\n            // Apply standard physics to the cage.\n            cur_obj_update_floor_and_walls();\n            cur_obj_move_standard(-78);\n\n            // Spawn sparkles while the cage falls.\n            spawn_object(o, MODEL_NONE, bhvSparkleSpawn);\n\n            // When the cage lands/bounces, play a landing/bouncing sound.\n            if (o->oMoveFlags & OBJ_MOVE_LANDED) {\n                cur_obj_play_sound_2(SOUND_GENERAL_SOFT_LANDING);\n            }\n\n            // Once the cage stops bouncing and settles on the ground,\n            // set the action to BOO_CAGE_ACT_ON_GROUND.\n            // This is the only use of the OBJ_MOVE_AT_WATER_SURFACE flag in the game.\n            // It seems to serve no purpose here.\n            if (o->oMoveFlags\n                & (OBJ_MOVE_UNDERWATER_ON_GROUND | OBJ_MOVE_AT_WATER_SURFACE | OBJ_MOVE_ON_GROUND)) {\n                o->oAction++;\n            }\n\n            break;\n\n        case BOO_CAGE_ACT_ON_GROUND:\n            // Allow Mario to enter the cage once it's still on the ground.\n            cur_obj_become_tangible();\n\n            // The other useless scale\n            cur_obj_scale(1.0f);\n\n            // Set the action to BOO_CAGE_ACT_MARIO_JUMPING_IN when Mario jumps in.\n            if (obj_check_if_collided_with_object(o, gMarioObject)) {\n                o->oAction++;\n            }\n\n            break;\n\n        case BOO_CAGE_ACT_MARIO_JUMPING_IN:\n            // All this action does is wait 100 frames after Mario starts\n            // jumping into the cage to set the action to BOO_CAGE_ACT_USELESS,\n            // which does nothing. By extension, this action is also useless.\n\n            if (o->oTimer > 100) {\n                o->oAction++;\n            }\n\n            break;\n\n        case BOO_CAGE_ACT_USELESS:\n            break;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/boulder.inc.c",
    "content": "// boulder.inc.c\n\nvoid bhv_big_boulder_init(void) {\n    o->oHomeX = o->oPosX;\n    o->oHomeY = o->oPosY;\n    o->oHomeZ = o->oPosZ;\n\n    o->oGravity = 8.0f;\n    o->oFriction = 0.999f;\n    o->oBuoyancy = 2.0f;\n}\n\nvoid boulder_act_1(void) {\n    s16 collisionFlags = object_step_without_floor_orient();\n\n    if ((collisionFlags & OBJ_COL_FLAGS_LANDED) == OBJ_COL_FLAG_GROUNDED && o->oVelY > 10.0f) {\n        cur_obj_play_sound_2(SOUND_GENERAL_GRINDEL_ROLL);\n        spawn_mist_particles();\n    }\n\n    if (o->oForwardVel > 70.0) {\n        o->oForwardVel = 70.0f;\n    }\n\n    if (o->oPosY < -1000.0f) {\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n}\n\nvoid bhv_big_boulder_loop(void) {\n    cur_obj_scale(1.5f);\n\n    o->oGraphYOffset = 270.0f;\n\n    switch (o->oAction) {\n        case 0:\n            o->oForwardVel = 40.0f;\n            o->oAction = 1;\n            break;\n\n        case 1:\n            boulder_act_1();\n            adjust_rolling_face_pitch(1.5f);\n            cur_obj_play_sound_1(SOUND_ENV_UNKNOWN2);\n            break;\n    }\n\n    set_rolling_sphere_hitbox();\n}\n\nvoid bhv_big_boulder_generator_loop(void) {\n    struct Object *sp1C;\n\n    if (o->oTimer >= 256) {\n        o->oTimer = 0;\n    }\n\n    if (!current_mario_room_check(4)\n        || is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 1500)) {\n        return;\n    }\n\n    if (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 6000)) {\n        if (!(o->oTimer & 0x3F)) {\n            sp1C = spawn_object(o, MODEL_HMC_ROLLING_ROCK, bhvBigBoulder);\n            sp1C->oMoveAngleYaw = random_float() * 4096.0f;\n        }\n    } else {\n        if (!(o->oTimer & 0x7F)) {\n            sp1C = spawn_object(o, MODEL_HMC_ROLLING_ROCK, bhvBigBoulder);\n            sp1C->oMoveAngleYaw = random_float() * 4096.0f;\n        }\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/bouncing_fireball.inc.c",
    "content": "// bouncing_fireball.inc.c\n\nvoid bhv_bouncing_fireball_flame_loop(void) {\n    o->activeFlags |= ACTIVE_FLAG_UNK10;\n\n    cur_obj_update_floor_and_walls();\n\n    switch (o->oAction) {\n        case 0:\n            if (o->oTimer == 0) {\n                o->oAnimState = random_float() * 10.0f;\n                o->oVelY = 30.0f;\n            }\n\n            if (o->oMoveFlags & OBJ_MOVE_LANDED) {\n                o->oAction++;\n            }\n            break;\n\n        case 1:\n            if (o->oTimer == 0) {\n                o->oVelY = 50.0f;\n                o->oForwardVel = 30.0f;\n            }\n\n            if (o->oMoveFlags\n                & (OBJ_MOVE_ON_GROUND | OBJ_MOVE_AT_WATER_SURFACE | OBJ_MOVE_UNDERWATER_ON_GROUND)\n                && o->oTimer > 100) {\n                obj_mark_for_deletion(o);\n            }\n            break;\n    }\n\n    if (o->oTimer > 300) {\n        obj_mark_for_deletion(o);\n    }\n\n    cur_obj_move_standard(78);\n\n    o->oInteractStatus = 0;\n}\n\nvoid bhv_bouncing_fireball_loop(void) {\n    struct Object *sp2C;\n    f32 sp28;\n\n    switch (o->oAction) {\n        case 0:\n            if (o->oDistanceToMario < 2000.0f) {\n                o->oAction = 1;\n            }\n            break;\n\n        case 1:\n            sp2C = spawn_object(o, MODEL_RED_FLAME, bhvBouncingFireballFlame);\n            sp28 = (10 - o->oTimer) * 0.5;\n\n            obj_scale_xyz(sp2C, sp28, sp28, sp28);\n\n            if (o->oTimer == 0) {\n                obj_become_tangible(sp2C);\n            }\n\n            if (o->oTimer > 10) {\n                o->oAction++;\n            }\n            break;\n\n        case 2:\n            if (o->oTimer == 0) {\n                o->oBouncingFireBallUnkF4 = random_float() * 100.0f;\n            }\n\n            if (o->oBouncingFireBallUnkF4 + 100 < o->oTimer) {\n                o->oAction = 0;\n            }\n            break;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/bowling_ball.inc.c",
    "content": "// bowling_ball.inc.c\n\nstatic struct ObjectHitbox sBowlingBallHitbox = {\n    /* interactType:      */ INTERACT_DAMAGE,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 2,\n    /* health:            */ 0,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 100,\n    /* height:            */ 150,\n    /* hurtboxRadius:     */ 0,\n    /* hurtboxHeight:     */ 0,\n};\n\nstatic Trajectory sTHIHugeMetalBallTraj[] = {\n    TRAJECTORY_POS(0, /*pos*/ -4786,   101, -2166),\n    TRAJECTORY_POS(1, /*pos*/ -5000,    81, -2753),\n    TRAJECTORY_POS(2, /*pos*/ -5040,    33, -3846),\n    TRAJECTORY_POS(3, /*pos*/ -4966,    38, -4966),\n    TRAJECTORY_POS(4, /*pos*/ -4013,  -259, -4893),\n    TRAJECTORY_POS(5, /*pos*/ -2573, -1019, -4780),\n    TRAJECTORY_POS(6, /*pos*/ -1053, -1399, -4806),\n    TRAJECTORY_POS(7, /*pos*/   760, -1637, -4833),\n    TRAJECTORY_POS(8, /*pos*/  2866, -2047, -4886),\n    TRAJECTORY_POS(9, /*pos*/  3386, -6546, -4833),\n    TRAJECTORY_END(),\n};\n\nstatic Trajectory sTHITinyMetalBallTraj[] = {\n    TRAJECTORY_POS(0, /*pos*/ -1476,    29,  -680),\n    TRAJECTORY_POS(1, /*pos*/ -1492,    14, -1072),\n    TRAJECTORY_POS(2, /*pos*/ -1500,     3, -1331),\n    TRAJECTORY_POS(3, /*pos*/ -1374,   -17, -1527),\n    TRAJECTORY_POS(4, /*pos*/ -1178,   -83, -1496),\n    TRAJECTORY_POS(5, /*pos*/  -292,  -424, -1425),\n    TRAJECTORY_POS(6, /*pos*/   250,  -491, -1433),\n    TRAJECTORY_POS(7, /*pos*/   862,  -613, -1449),\n    TRAJECTORY_POS(8, /*pos*/  1058, -1960, -1449),\n    TRAJECTORY_END(),\n};\n\nvoid bhv_bowling_ball_init(void) {\n    o->oGravity = 5.5f;\n    o->oFriction = 1.0f;\n    o->oBuoyancy = 2.0f;\n}\n\nvoid bowling_ball_set_hitbox(void) {\n    obj_set_hitbox(o, &sBowlingBallHitbox);\n\n    if (o->oInteractStatus & INT_STATUS_INTERACTED) {\n        o->oInteractStatus = 0;\n    }\n}\n\nvoid bowling_ball_set_waypoints(void) {\n    switch (o->oBhvParams2ndByte) {\n        case BBALL_BP_STYPE_BOB_UPPER:\n            o->oPathedStartWaypoint = segmented_to_virtual(bob_seg7_metal_ball_path0);\n            break;\n\n        case BBALL_BP_STYPE_TTM:\n            o->oPathedStartWaypoint = segmented_to_virtual(ttm_seg7_trajectory_070170A0);\n            break;\n\n        case BBALL_BP_STYPE_BOB_LOWER:\n            o->oPathedStartWaypoint = segmented_to_virtual(bob_seg7_metal_ball_path1);\n            break;\n\n        case BBALL_BP_STYPE_THI_LARGE:\n            o->oPathedStartWaypoint = (struct Waypoint *) sTHIHugeMetalBallTraj;\n            break;\n\n        case BBALL_BP_STYPE_THI_SMALL:\n            o->oPathedStartWaypoint = (struct Waypoint *) sTHITinyMetalBallTraj;\n            break;\n    }\n}\n\nvoid bhv_bowling_ball_roll_loop(void) {\n    s16 collisionFlags;\n    s32 followStatus;\n#ifdef AVOID_UB\n    followStatus = 0;\n#endif\n\n    bowling_ball_set_waypoints();\n    collisionFlags = object_step();\n\n    //! Uninitialized parameter, but the parameter is unused in the called function\n    followStatus = cur_obj_follow_path(followStatus);\n\n    o->oBowlingBallTargetYaw = o->oPathedTargetYaw;\n    o->oMoveAngleYaw = approach_s16_symmetric(o->oMoveAngleYaw, o->oBowlingBallTargetYaw, 0x400);\n    if (o->oForwardVel > 70.0) {\n        o->oForwardVel = 70.0;\n    }\n\n    bowling_ball_set_hitbox();\n\n    if (followStatus == PATH_REACHED_END) {\n        if (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 7000)) {\n            spawn_mist_particles();\n            spawn_mist_particles_variable(0, 0, 92.0f);\n        }\n\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n\n    if ((collisionFlags & OBJ_COL_FLAG_GROUNDED) && (o->oVelY > 5.0f)) {\n        cur_obj_play_sound_2(SOUND_GENERAL_QUIET_POUND1_LOWPRIO);\n    }\n}\n\nvoid bhv_bowling_ball_initialize_loop(void) {\n    s32 followStatus;\n#ifdef AVOID_UB\n    followStatus = 0;\n#endif\n\n    bowling_ball_set_waypoints();\n\n    //! Uninitialized parameter, but the parameter is unused in the called function\n    followStatus = cur_obj_follow_path(followStatus);\n\n    o->oMoveAngleYaw = o->oPathedTargetYaw;\n\n    switch (o->oBhvParams2ndByte) {\n        case BBALL_BP_STYPE_BOB_UPPER:\n            o->oForwardVel = 20.0f;\n            break;\n\n        case BBALL_BP_STYPE_TTM:\n            o->oForwardVel = 10.0f;\n            break;\n\n        case BBALL_BP_STYPE_BOB_LOWER:\n            o->oForwardVel = 20.0f;\n            break;\n\n        case BBALL_BP_STYPE_THI_LARGE:\n            o->oForwardVel = 25.0f;\n            break;\n\n        case BBALL_BP_STYPE_THI_SMALL:\n            o->oForwardVel = 10.0f;\n            cur_obj_scale(0.3f);\n            o->oGraphYOffset = 39.0f;\n            break;\n    }\n}\n\nvoid bhv_bowling_ball_loop(void) {\n    switch (o->oAction) {\n        case BBALL_ACT_INITIALIZE:\n            o->oAction = BBALL_ACT_ROLL;\n            bhv_bowling_ball_initialize_loop();\n            break;\n\n        case BBALL_ACT_ROLL:\n            bhv_bowling_ball_roll_loop();\n            break;\n    }\n\n    if (o->oBhvParams2ndByte != BBALL_BP_STYPE_THI_SMALL) {\n        set_camera_shake_from_point(SHAKE_POS_BOWLING_BALL, o->oPosX, o->oPosY, o->oPosZ);\n    }\n\n    set_object_visibility(o, 4000);\n}\n\nvoid bhv_generic_bowling_ball_spawner_init(void) {\n    switch (o->oBhvParams2ndByte) {\n        case BBALL_BP_STYPE_BOB_UPPER:\n            o->oBBallSpawnerMaxSpawnDist = 7000.0f;\n            o->oBBallSpawnerSpawnOdds = 2.0f;\n            break;\n\n        case BBALL_BP_STYPE_TTM:\n            o->oBBallSpawnerMaxSpawnDist = 8000.0f;\n            o->oBBallSpawnerSpawnOdds = 1.0f;\n            break;\n\n        case BBALL_BP_STYPE_BOB_LOWER:\n            o->oBBallSpawnerMaxSpawnDist = 6000.0f;\n            o->oBBallSpawnerSpawnOdds = 2.0f;\n            break;\n    }\n}\n\nvoid bhv_generic_bowling_ball_spawner_loop(void) {\n    if (o->oTimer == 256) {\n        o->oTimer = 0;\n    }\n\n    if (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 1000)\n        || o->oPosY < gMarioObject->header.gfx.pos[1]) {\n        return;\n    }\n\n    if ((o->oTimer & o->oBBallSpawnerPeriodMinus1) == 0) { /* Modulus */\n        if (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, o->oBBallSpawnerMaxSpawnDist)\n            && (s32)(random_float() * o->oBBallSpawnerSpawnOdds) == 0) {\n            struct Object *bowlingBall = spawn_object(o, MODEL_BOWLING_BALL, bhvBowlingBall);\n            bowlingBall->oBhvParams2ndByte = o->oBhvParams2ndByte;\n        }\n    }\n}\n\nvoid bhv_thi_bowling_ball_spawner_loop(void) {\n    if (o->oTimer == 256) {\n        o->oTimer = 0;\n    }\n\n    if (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 800)\n        || o->oPosY < gMarioObject->header.gfx.pos[1]) {\n        return;\n    }\n\n    if ((o->oTimer % 64) == 0) {\n        if (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 12000)\n            && (s32)(random_float() * 1.5) == 0) {\n            struct Object *bowlingBall = spawn_object(o, MODEL_BOWLING_BALL, bhvBowlingBall);\n            bowlingBall->oBhvParams2ndByte = o->oBhvParams2ndByte;\n        }\n    }\n}\n\nvoid bhv_bob_pit_bowling_ball_init(void) {\n    o->oGravity = 12.0f;\n    o->oFriction = 1.0f;\n    o->oBuoyancy = 2.0f;\n}\n\nvoid bhv_bob_pit_bowling_ball_loop(void) {\n    struct FloorGeometry *sp1c;\n    UNUSED s16 collisionFlags = object_step();\n\n    find_floor_height_and_data(o->oPosX, o->oPosY, o->oPosZ, &sp1c);\n    if ((sp1c->normalX == 0) && (sp1c->normalZ == 0)) {\n        o->oForwardVel = 28.0f;\n    }\n\n    bowling_ball_set_hitbox();\n    set_camera_shake_from_point(SHAKE_POS_BOWLING_BALL, o->oPosX, o->oPosY, o->oPosZ);\n    cur_obj_play_sound_1(SOUND_ENV_UNKNOWN2);\n    set_object_visibility(o, 3000);\n}\n\nvoid bhv_free_bowling_ball_init(void) {\n    o->oGravity = 5.5f;\n    o->oFriction = 1.0f;\n    o->oBuoyancy = 2.0f;\n    o->oHomeX = o->oPosX;\n    o->oHomeY = o->oPosY;\n    o->oHomeZ = o->oPosZ;\n    o->oForwardVel = 0;\n    o->oMoveAngleYaw = 0;\n}\n\nvoid bhv_free_bowling_ball_roll_loop(void) {\n    s16 collisionFlags = object_step();\n\n    bowling_ball_set_hitbox();\n\n    if (o->oForwardVel > 10.0f) {\n        set_camera_shake_from_point(SHAKE_POS_BOWLING_BALL, o->oPosX, o->oPosY, o->oPosZ);\n        cur_obj_play_sound_1(SOUND_ENV_UNKNOWN2);\n    }\n\n    if ((collisionFlags & OBJ_COL_FLAG_GROUNDED) && !(collisionFlags & OBJ_COL_FLAGS_LANDED)) {\n        cur_obj_play_sound_2(SOUND_GENERAL_QUIET_POUND1_LOWPRIO);\n    }\n\n    if (!is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 6000)) {\n        o->header.gfx.node.flags |= GRAPH_RENDER_INVISIBLE;\n        cur_obj_become_intangible();\n\n        o->oPosX = o->oHomeX;\n        o->oPosY = o->oHomeY;\n        o->oPosZ = o->oHomeZ;\n        bhv_free_bowling_ball_init();\n        o->oAction = FREE_BBALL_ACT_RESET;\n    }\n}\n\nvoid bhv_free_bowling_ball_loop(void) {\n    o->oGravity = 5.5f;\n\n    switch (o->oAction) {\n        case FREE_BBALL_ACT_IDLE:\n            if (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 3000)) {\n                o->oAction = FREE_BBALL_ACT_ROLL;\n                o->header.gfx.node.flags &= ~GRAPH_RENDER_INVISIBLE;\n                cur_obj_become_tangible();\n            }\n            break;\n\n        case FREE_BBALL_ACT_ROLL:\n            bhv_free_bowling_ball_roll_loop();\n            break;\n\n        case FREE_BBALL_ACT_RESET:\n            if (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 5000)) {\n                o->oAction = FREE_BBALL_ACT_IDLE;\n            }\n            break;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/bowser.inc.c",
    "content": "\n/**\n * Behavior for Bowser and it's actions (Tail, Flame, Body)\n */\n\n// Bowser's Tail\n\n/**\n * Checks whenever the Bowser and his tail should be intangible or not\n * By default it starts tangible\n */\nvoid bowser_tail_anchor_act_default(void) {\n    struct Object *bowser = o->parentObj;\n    cur_obj_become_tangible();\n    cur_obj_scale(1.0f);\n\n    if (bowser->oAction == BOWSER_ACT_TILT_LAVA_PLATFORM) {\n        // Bowser cannot be touched when he tilts BitFS platform\n        bowser->oIntangibleTimer = -1;\n    } else if (obj_check_if_collided_with_object(o, gMarioObject)) {\n        // When Mario collides his tail, it now gets\n        // intangible so he can grab it through\n        bowser->oIntangibleTimer = 0;\n        o->oAction = BOWSER_ACT_TAIL_TOUCHED_MARIO;\n    } else {\n        bowser->oIntangibleTimer = -1;\n    }\n}\n\n/**\n * While Bowser get's thrown, wait 30 frames then\n * return to the default tail action check\n */\nvoid bowser_tail_anchor_thrown(void) {\n    if (o->oTimer > 30) {\n        o->oAction = BOWSER_ACT_TAIL_DEFAULT;\n    }\n}\n\n/**\n * Makes the tail intangible so Mario can grab it\n */\nvoid bowser_tail_anchor_act_touched_mario(void) {\n    // Return to main action when Bowser tilts BitFS platform\n    if (o->parentObj->oAction == BOWSER_ACT_TILT_LAVA_PLATFORM) {\n        o->parentObj->oIntangibleTimer = -1;\n        o->oAction = BOWSER_ACT_TAIL_DEFAULT;\n    }\n    cur_obj_become_intangible();\n}\n\nvoid (*sBowserTailAnchorActions[])(void) = {\n    bowser_tail_anchor_act_default,\n    bowser_tail_anchor_thrown,\n    bowser_tail_anchor_act_touched_mario,\n};\n\n/**\n * Bowser's tail main loop\n */\nvoid bhv_bowser_tail_anchor_loop(void) {\n    // Call its actions\n    cur_obj_call_action_function(sBowserTailAnchorActions);\n    // Position the tail\n    o->oParentRelativePosX = 90.0f;\n\n    // Make it intangible while Bowser is dead\n    if (o->parentObj->oAction == BOWSER_ACT_DEAD) {\n        o->parentObj->oIntangibleTimer = -1;\n    }\n\n    o->oInteractStatus = 0;\n}\n\n// Bowser's Flame\n\n/**\n * Bowser's Flame spawn main loop\n */\nvoid bhv_bowser_flame_spawn_loop(void) {\n    struct Object *bowser = o->parentObj;\n    s32 animFrame;\n    f32 posX;\n    f32 posZ;\n    f32 cossYaw = coss(bowser->oMoveAngleYaw);\n    f32 sinsYaw = sins(bowser->oMoveAngleYaw);\n    s16 *data = segmented_to_virtual(dBowserFlamesOrientationValues);\n\n    // Check for Bowser breathing animation\n    if (bowser->oSoundStateID == BOWSER_ANIM_BREATH) {\n\n        // Start counting anim frames then reset it when it ends\n        animFrame = bowser->header.gfx.animInfo.animFrame + 1.0f;\n        if (bowser->header.gfx.animInfo.curAnim->loopEnd == animFrame) {\n            animFrame = 0;\n        }\n\n        // Bowser is breathing, play sound and adjust flame position\n        // each animFrame based off the orientantion data\n        if (animFrame > 45 && animFrame < 85) {\n            cur_obj_play_sound_1(SOUND_AIR_BOWSER_SPIT_FIRE);\n            posX = data[5 * animFrame];\n            posZ = data[5 * animFrame + 2];\n            o->oPosX = bowser->oPosX + (posZ * sinsYaw + posX * cossYaw);\n            o->oPosY = bowser->oPosY + data[5 * animFrame + 1];\n            o->oPosZ = bowser->oPosZ + (posZ * cossYaw - posX * sinsYaw);\n            o->oMoveAnglePitch = data[5 * animFrame + 4] + 0xC00;\n            o->oMoveAngleYaw = data[5 * animFrame + 3] + (s16) bowser->oMoveAngleYaw;\n            // Spawns the flames on a non-odd animFrame value\n            if (!(animFrame & 1)) {\n                spawn_object(o, MODEL_RED_FLAME, bhvFlameMovingForwardGrowing);\n            }\n        }\n    }\n}\n\n/**\n * Bowser's Body main loop\n */\nvoid bhv_bowser_body_anchor_loop(void) {\n    // Copy position and angles from Bowser itself\n    obj_copy_pos_and_angle(o, o->parentObj);\n    // If Bowser is dead, set interaction type to text\n    // so that he can be ready to speak his dialog\n    if (o->parentObj->oAction == BOWSER_ACT_DEAD) {\n#if BUGFIX_BOWSER_COLLIDE_BITS_DEAD\n        // Clear interaction type at the last sub action in BitS\n        // Fixes collision coliding after defeating him\n        if (o->parentObj->oSubAction == BOWSER_SUB_ACT_DEAD_FINAL_END_OVER) {\n            o->oInteractType = 0;\n        } else {\n            o->oInteractType = INTERACT_TEXT;\n        }\n#else\n        o->oInteractType = INTERACT_TEXT;\n#endif\n    } else {\n        // Do damage if Mario touches Bowser\n        o->oInteractType = INTERACT_DAMAGE;\n        // Make body intangible while is transparent\n        // in BitFS (Teleporting)\n        if (o->parentObj->oOpacity < 100) {\n            cur_obj_become_intangible();\n        } else {\n            cur_obj_become_tangible();\n        }\n    }\n    // Make body intangible while Bowser is getting grabbed\n    if (o->parentObj->oHeldState != HELD_FREE) {\n        cur_obj_become_intangible();\n    }\n    o->oInteractStatus = 0;\n}\n\n/**\n * Bowser's shockwave attack, spawns only in BitS\n */\ns32 bowser_spawn_shockwave(void) {\n    if (o->oBhvParams2ndByte == BOWSER_BP_BITS) {\n        struct Object *wave = spawn_object(o, MODEL_BOWSER_WAVE, bhvBowserShockWave);\n        wave->oPosY = o->oFloorHeight;\n        return TRUE;\n    }\n    return FALSE;\n}\n\n/**\n * Misc effects that Bowser plays when he lands with drastic actions\n * Plays step sound, spawns particles and changes camera event\n */\nvoid bowser_bounce_effects(s32 *timer) {\n    if (o->oMoveFlags & OBJ_MOVE_LANDED) {\n        (*timer)++;\n        if (*timer < 4) {\n            cur_obj_start_cam_event(o, CAM_EVENT_BOWSER_THROW_BOUNCE);\n            spawn_mist_particles_variable(0, 0, 60.0f);\n            cur_obj_play_sound_2(SOUND_OBJ_BOWSER_WALK);\n        }\n    }\n}\n\n/**\n * Makes Bowser look up and walk on an specific animation frame\n * Returns TRUE if the animation is almost over\n */\ns32 bowser_set_anim_look_up_and_walk(void) {\n    cur_obj_init_animation_with_sound(BOWSER_ANIM_LOOK_UP_START_WALK);\n    if (cur_obj_check_anim_frame(21)) {\n        o->oForwardVel = 3.0f;\n    }\n    if (cur_obj_check_if_near_animation_end()) {\n        return TRUE;\n    } else {\n        return FALSE;\n    }\n}\n\n/**\n * Makes Bowser do a slow gait (or slow walk)\n * Returns TRUE if the animation is almost over\n */\ns32 bowser_set_anim_slow_gait(void) {\n    o->oForwardVel = 3.0f;\n    cur_obj_init_animation_with_sound(BOWSER_ANIM_SLOW_GAIT);\n    if (cur_obj_check_if_near_animation_end()) {\n        return TRUE;\n    } else {\n        return FALSE;\n    }\n}\n\n/**\n * Makes Bowser look down and stop on an specific animation frame\n * Returns TRUE if the animation is almost over\n */\ns32 bowser_set_anim_look_down_stop_walk(void) {\n    cur_obj_init_animation_with_sound(BOWSER_ANIM_LOOK_DOWN_STOP_WALK);\n    if (cur_obj_check_anim_frame(20)) {\n        o->oForwardVel = 0.0f;\n    }\n    if (cur_obj_check_if_near_animation_end()) {\n        return TRUE;\n    } else {\n        return FALSE;\n    }\n}\n\n/**\n * Set Bowser an action depending of the CamAct value\n * CamAct changes value on the cutscene itself (cutscene_bowser_arena)\n */\nvoid bowser_init_camera_actions(void) {\n    if (o->oBowserCamAct == BOWSER_CAM_ACT_IDLE) {\n        o->oAction = BOWSER_ACT_WAIT;\n    } else if (o->oBowserCamAct == BOWSER_CAM_ACT_WALK) {\n        o->oAction = BOWSER_ACT_INTRO_WALK;\n    // Start with a big jump in BitFS to do a platform tilt\n    } else if (o->oBhvParams2ndByte == BOWSER_BP_BITFS) {\n        o->oAction = BOWSER_ACT_BIG_JUMP;\n    } else {\n        o->oAction = BOWSER_ACT_DEFAULT;\n    }\n}\n\n/**\n * Bowser's idle action that plays when he is initialized\n * or the CamAct gets in idle mode\n */\nvoid bowser_act_wait(void) {\n    o->oForwardVel = 0.0f;\n    cur_obj_init_animation_with_sound(BOWSER_ANIM_IDLE);\n    bowser_init_camera_actions();\n}\n\n/**\n * Bowser's cutscene walk that last a few seconds to introduce itself\n * Do subactions until the animation ends, then go to next subaction\n */\nvoid bowser_act_intro_walk(void) {\n    // First look up and walk\n    if (o->oSubAction == 0) {\n        if (bowser_set_anim_look_up_and_walk()) {\n            o->oSubAction++;\n        }\n    // Then slowly walk\n    } else if (o->oSubAction == 1) {\n        if (bowser_set_anim_slow_gait()) {\n            o->oSubAction++;\n        }\n    // And finally stop, and set to wait mode\n    } else if (bowser_set_anim_look_down_stop_walk()) {\n        if (o->oBowserCamAct == BOWSER_CAM_ACT_WALK) {\n            o->oBowserCamAct = BOWSER_CAM_ACT_IDLE;\n        }\n        bowser_init_camera_actions();\n    }\n}\n\n/**\n * List of actions to debug Bowser\n */\ns8 sBowserDebugActions[] = {\n    BOWSER_ACT_CHARGE_MARIO,\n    BOWSER_ACT_SPIT_FIRE_INTO_SKY,\n    BOWSER_ACT_SPIT_FIRE_ONTO_FLOOR,\n    BOWSER_ACT_HIT_MINE,\n    BOWSER_ACT_BIG_JUMP,\n    BOWSER_ACT_WALK_TO_MARIO,\n    BOWSER_ACT_BREATH_FIRE,\n    BOWSER_ACT_DEAD,\n    BOWSER_ACT_DANCE,\n    BOWSER_ACT_TELEPORT,\n    BOWSER_ACT_QUICK_JUMP,\n    BOWSER_ACT_TILT_LAVA_PLATFORM,\n    BOWSER_ACT_DANCE,\n    BOWSER_ACT_DANCE,\n    BOWSER_ACT_DANCE,\n    BOWSER_ACT_DANCE,\n};\n\n/**\n * Debug function that allows to change Bowser's actions (most of them)\n */\nUNUSED static void bowser_debug_actions(void) {\n    if (gDebugInfo[DEBUG_PAGE_ENEMYINFO][1] != 0) {\n        o->oAction = sBowserDebugActions[gDebugInfo[DEBUG_PAGE_ENEMYINFO][2] & 0x0F];\n        gDebugInfo[DEBUG_PAGE_ENEMYINFO][1] = 0;\n    }\n}\n\n/**\n * Set actions (and attacks) for Bowser in \"Bowser in the Dark World\"\n */\nvoid bowser_bitdw_actions(void) {\n    // Generate random float\n    f32 rand = random_float();\n    // Set attacks when Bowser Reacts\n    if (!o->oBowserIsReacting) {\n        if (o->oBowserStatus & BOWSER_STATUS_ANGLE_MARIO) {\n            if (o->oDistanceToMario < 1500.0f) { // nearby\n                o->oAction = BOWSER_ACT_BREATH_FIRE;\n            } else { // far away\n                o->oAction = BOWSER_ACT_QUICK_JUMP;\n            }\n        } else {\n            // Keep walking\n            o->oAction = BOWSER_ACT_WALK_TO_MARIO;\n        }\n        o->oBowserIsReacting++;\n    } else {\n        o->oBowserIsReacting = FALSE;\n        // Set starting Bowser level actions, randomly he can also start\n        // dancing after the introduction\n#ifndef VERSION_JP\n        if (gCurrDemoInput == NULL) { // demo check because entry exits post JP\n#endif\n            if (rand < 0.1) {\n                o->oAction = BOWSER_ACT_DANCE; // 10% chance\n            } else {\n                o->oAction = BOWSER_ACT_WALK_TO_MARIO; // common\n            }\n#ifndef VERSION_JP\n        } else {\n            o->oAction = BOWSER_ACT_WALK_TO_MARIO;\n        }\n#endif\n    }\n}\n\n/**\n * Set actions (and attacks) for Bowser in \"Bowser in the Fire Sea\"\n */\nvoid bowser_bitfs_actions(void) {\n    // Generate random float\n    f32 rand = random_float();\n    // Set attacks when Bowser Reacts\n    if (!o->oBowserIsReacting) {\n        if (o->oBowserStatus & BOWSER_STATUS_ANGLE_MARIO) {\n            if (o->oDistanceToMario < 1300.0f) {  // nearby\n                if (rand < 0.5) { // 50% chance\n                    o->oAction = BOWSER_ACT_TELEPORT;\n                } else {\n                    o->oAction = BOWSER_ACT_SPIT_FIRE_ONTO_FLOOR;\n                }\n            } else { // far away\n                o->oAction = BOWSER_ACT_CHARGE_MARIO;\n                if (500.0f < o->oBowserDistToCenter && o->oBowserDistToCenter < 1500.0f\n                    && rand < 0.5) { // 50% chance\n                    o->oAction = BOWSER_ACT_BIG_JUMP;\n                }\n            }\n        } else {\n            // Keep walking\n            o->oAction = BOWSER_ACT_WALK_TO_MARIO;\n        }\n        o->oBowserIsReacting++;\n    } else {\n        // Keep walking\n        o->oBowserIsReacting = FALSE;\n        o->oAction = BOWSER_ACT_WALK_TO_MARIO;\n    }\n}\n\n/**\n * List of actions (and attacks) for \"Bowser in the Sky\"\n */\nvoid bowser_bits_action_list(void) {\n    f32 rand = random_float();\n    if (o->oBowserStatus & BOWSER_STATUS_ANGLE_MARIO) {\n        if (o->oDistanceToMario < 1000.0f) { // nearby\n            if (rand < 0.4) {\n                o->oAction = BOWSER_ACT_SPIT_FIRE_ONTO_FLOOR; // 40% chance\n            } else if (rand < 0.8) {\n                o->oAction = BOWSER_ACT_SPIT_FIRE_INTO_SKY; // 80% chance\n            } else {\n                o->oAction = BOWSER_ACT_BREATH_FIRE;\n            }\n        } else { // far away\n            if (rand < 0.5) {\n                o->oAction = BOWSER_ACT_BIG_JUMP; // 50% chance\n            } else {\n                o->oAction = BOWSER_ACT_CHARGE_MARIO;\n            }\n        }\n    } else {\n        // Keep walking\n        o->oAction = BOWSER_ACT_WALK_TO_MARIO;\n    }\n}\n\n/**\n * Sets big jump action, not much to say\n * Never gets called since oBowserBitSJustJump is always FALSE\n */\nvoid bowser_set_act_big_jump(void) {\n    o->oAction = BOWSER_ACT_BIG_JUMP;\n}\n\n/**\n * Set actions (and attacks) for Bowser in \"Bowser in the Sky\"\n */\nvoid bowser_bits_actions(void) {\n    switch (o->oBowserIsReacting) {\n        case FALSE:\n            // oBowserBitSJustJump never changes value,\n            // so its always FALSE, maybe a debug define\n            if (o->oBowserBitSJustJump == FALSE) {\n                bowser_bits_action_list();\n            } else {\n                bowser_set_act_big_jump();\n            }\n            o->oBowserIsReacting = TRUE;\n            break;\n\n        case TRUE:\n            o->oBowserIsReacting = FALSE;\n            o->oAction = BOWSER_ACT_WALK_TO_MARIO;\n            break;\n    }\n}\n\n/**\n * Reset Bowser position and speed if he wasn't able to land properly on stage\n */\n#if BUGFIX_BOWSER_FALLEN_OFF_STAGE\nvoid bowser_reset_fallen_off_stage(void) {\n    if (o->oVelY < 0.0f && o->oPosY < (o->oHomeY - 300.0f)) {\n        o->oPosX = o->oPosZ = 0.0f;\n        o->oPosY = o->oHomeY + 2000.0f;\n        o->oVelY = 0.0f;\n        o->oForwardVel = 0.0f;\n    }\n}\n#endif\n\n/**\n * Unused, makes Bowser be in idle and after it returns to default action\n */\nvoid bowser_act_idle(void) {\n    if (cur_obj_init_animation_and_check_if_near_end(BOWSER_ANIM_IDLE)) {\n        o->oAction = BOWSER_ACT_DEFAULT;\n    }\n}\n\n/**\n * Default Bowser act that doesn't last very long\n */\nvoid bowser_act_default(void) {\n    // Set eye state\n    o->oBowserEyesShut = FALSE;\n    // Set idle animation\n    cur_obj_init_animation_with_sound(BOWSER_ANIM_IDLE);\n    // Stop him still\n    o->oAngleVelYaw = 0;\n    o->oForwardVel = 0.0f;\n    o->oVelY = 0.0f;\n    // Set level specific actions\n    if (o->oBhvParams2ndByte == BOWSER_BP_BITDW) {\n        bowser_bitdw_actions();\n    } else if (o->oBhvParams2ndByte == BOWSER_BP_BITFS) {\n        bowser_bitfs_actions();\n    } else { // BOWSER_BP_BITS\n        bowser_bits_actions();\n    }\n}\n\n/**\n * Makes Bowser play breath animation and sound effect\n * The actual breath attack is in bhv_bowser_flame_spawn_loop\n * called as a child obj behavior in Bowser\n */\nvoid bowser_act_breath_fire(void) {\n    o->oForwardVel = 0.0f;\n    if (o->oTimer == 0) {\n        cur_obj_play_sound_2(SOUND_OBJ_BOWSER_INHALING);\n    }\n    // Init animation and return to default act after it ends\n    if (cur_obj_init_animation_and_check_if_near_end(BOWSER_ANIM_BREATH)) {\n        o->oAction = BOWSER_ACT_DEFAULT;\n    }\n}\n\n/**\n * Makes Bowser walk towards Mario\n */\nvoid bowser_act_walk_to_mario(void) {\n    UNUSED s32 facing; // is Bowser facing Mario?\n    s16 turnSpeed;\n    s16 angleFromMario = abs_angle_diff(o->oMoveAngleYaw, o->oAngleToMario);\n\n    // Set turning speed depending of the health\n    // Also special case for BitFS\n    if (o->oBhvParams2ndByte == BOWSER_BP_BITFS) {\n        turnSpeed = 0x400;\n    } else { // BOWSER_BP_BITDW or BOWSER_BP_BITS\n        if (o->oHealth >= 3) {\n            turnSpeed = 0x400;\n        } else if (o->oHealth == 2) {\n            turnSpeed = 0x300;\n        } else { // 1 health\n            turnSpeed = 0x200;\n        }\n    }\n\n    facing = cur_obj_rotate_yaw_toward(o->oAngleToMario, turnSpeed);\n\n    if (o->oSubAction == 0) {\n        o->oBowserTimer = 0;\n        // Start walking\n        if (bowser_set_anim_look_up_and_walk()) {\n            o->oSubAction++;\n        }\n    } else if (o->oSubAction == 1) {\n        // Keep walking slowly\n        if (bowser_set_anim_slow_gait()) {\n            o->oBowserTimer++;\n            // Reset fire sky status\n            if (o->oBowserStatus & BOWSER_STATUS_FIRE_SKY) {\n                if (o->oBowserTimer > 4) {\n                    o->oBowserStatus &= ~BOWSER_STATUS_FIRE_SKY;\n                }\n            // Do subaction below if angles is less than 0x2000\n            } else if (angleFromMario < 0x2000) {\n                o->oSubAction++;\n            }\n        }\n    // Stop walking and set to default action\n    } else if (bowser_set_anim_look_down_stop_walk()) {\n        o->oAction = BOWSER_ACT_DEFAULT;\n    }\n}\n\n/**\n * Makes Bowser teleport while invisible\n */\nvoid bowser_act_teleport(void) {\n    switch (o->oSubAction) {\n        // Set opacity target to invisible and become intangible\n        case BOWSER_SUB_ACT_TELEPORT_START:\n            cur_obj_become_intangible();\n            o->oBowserTargetOpacity = 0;\n            o->oBowserTimer = 30; // set timer value\n            // Play sound effect\n            if (o->oTimer == 0) {\n                cur_obj_play_sound_2(SOUND_OBJ2_BOWSER_TELEPORT);\n            }\n            // Bowser is invisible, move angle to face Mario\n            if (o->oOpacity == 0) {\n                o->oSubAction++;\n                o->oMoveAngleYaw = o->oAngleToMario;\n            }\n            break;\n\n        case BOWSER_SUB_ACT_TELEPORT_MOVE:\n            // reduce timer and set velocity teleport while at it\n            if (o->oBowserTimer--) {\n                o->oForwardVel = 100.0f;\n            } else {\n                o->oSubAction = BOWSER_SUB_ACT_TELEPORT_STOP;\n                o->oMoveAngleYaw = o->oAngleToMario; // update angle\n            }\n\n            if (abs_angle_diff(o->oMoveAngleYaw, o->oAngleToMario) > 0x4000) {\n                if (o->oDistanceToMario > 500.0f) {\n                    o->oSubAction = BOWSER_SUB_ACT_TELEPORT_STOP;\n                    o->oMoveAngleYaw = o->oAngleToMario; // update angle\n                    cur_obj_play_sound_2(SOUND_OBJ2_BOWSER_TELEPORT);\n                }\n            }\n            break;\n\n        // Set opacity target to visible and become tangible\n        case BOWSER_SUB_ACT_TELEPORT_STOP:\n            o->oForwardVel = 0.0f; // reset velocity\n            o->oBowserTargetOpacity = 255;\n            // Set to default action once visible\n            if (o->oOpacity == 255) {\n                o->oAction = BOWSER_ACT_DEFAULT;\n            }\n            cur_obj_become_tangible();\n            break;\n    }\n}\n\n/**\n * Makes Bowser do a fire split into the sky\n */\nvoid bowser_act_spit_fire_into_sky(void) {\n    s32 animFrame;\n    // Play animation\n    cur_obj_init_animation_with_sound(BOWSER_ANIM_BREATH_UP);\n    // Set frames\n    animFrame = o->header.gfx.animInfo.animFrame;\n    // Spawn flames in the middle of the animation\n    if (animFrame > 24 && animFrame < 36) {\n        cur_obj_play_sound_1(SOUND_AIR_BOWSER_SPIT_FIRE);\n        if (animFrame == 35) { // Spawns Blue flames at this frame\n            spawn_object_relative(1, 0, 400, 100, o, MODEL_RED_FLAME, bhvBlueBowserFlame);\n        } else { // Spawns Red flames\n            spawn_object_relative(0, 0, 400, 100, o, MODEL_RED_FLAME, bhvBlueBowserFlame);\n        }\n    }\n    // Return to default act once the animation is over\n    if (cur_obj_check_if_near_animation_end()) {\n        o->oAction = BOWSER_ACT_DEFAULT;\n    }\n    // Set fire sky status\n    o->oBowserStatus |= BOWSER_STATUS_FIRE_SKY;\n}\n\n/**\n * Flips Bowser back on stage if he hits a mine with more than 1 health\n */\nvoid bowser_act_hit_mine(void) {\n    // Similar vel values from bowser_fly_back_dead\n    if (o->oTimer == 0) {\n        o->oForwardVel = -400.0f;\n        o->oVelY = 100.0f;\n        o->oMoveAngleYaw = o->oBowserAngleToCenter + 0x8000;\n        o->oBowserEyesShut = TRUE; // close eyes\n    }\n    // Play flip animation\n    if (o->oSubAction == BOWSER_SUB_ACT_HIT_MINE_START) {\n        cur_obj_init_animation_with_sound(BOWSER_ANIM_FLIP);\n        o->oSubAction++;\n        o->oBowserTimer = 0;\n    // Play flip animation again, extend it and play bounce effects\n    } else if (o->oSubAction == BOWSER_SUB_ACT_HIT_MINE_FALL) {\n        cur_obj_init_animation_with_sound(BOWSER_ANIM_FLIP);\n        cur_obj_extend_animation_if_at_end();\n        bowser_bounce_effects(&o->oBowserTimer);\n        // Reset vel and stand up\n        if (o->oBowserTimer > 2) {\n            cur_obj_init_animation_with_sound(BOWSER_ANIM_STAND_UP_FROM_FLIP);\n            o->oVelY = 0.0f;\n            o->oForwardVel = 0.0f;\n            o->oSubAction++;\n        }\n    // Play these actions once he is stand up\n    } else if (o->oSubAction == BOWSER_SUB_ACT_HIT_MINE_STOP) {\n        if (cur_obj_check_if_near_animation_end()) {\n            // Makes Bowser dance at one health (in BitS)\n            if (o->oHealth == 1) {\n                o->oAction = BOWSER_ACT_DANCE;\n            } else {\n                o->oAction = BOWSER_ACT_DEFAULT;\n            }\n            o->oBowserEyesShut = FALSE; // open eyes\n        }\n    } else {\n    }\n}\n\n/**\n * Makes Bowser do his jump start animation\n * Returns TRUE on the middle of the jump\n */\ns32 bowser_set_anim_jump(void) {\n    cur_obj_init_animation_with_sound(BOWSER_ANIM_JUMP_START);\n    if (cur_obj_check_anim_frame(11)) {\n        return TRUE;\n    } else {\n        return FALSE;\n    }\n}\n\n/**\n * Reset speed, play jump stop animation and do attacks in BitDW\n * Returns TRUE when Bowser lands\n */\ns32 bowser_land(void) {\n    if (o->oMoveFlags & OBJ_MOVE_LANDED) {\n        o->oForwardVel = 0.0f;\n        o->oVelY = 0.0f;\n        spawn_mist_particles_variable(0, 0, 60.0f);\n        cur_obj_init_animation_with_sound(BOWSER_ANIM_JUMP_STOP);\n        o->header.gfx.animInfo.animFrame = 0;\n        cur_obj_start_cam_event(o, CAM_EVENT_BOWSER_JUMP);\n        // Set status attacks in BitDW since the other levels\n        // have different attacks defined\n        if (o->oBhvParams2ndByte == BOWSER_BP_BITDW) {\n            if (o->oDistanceToMario < 850.0f) {\n                gMarioObject->oInteractStatus |= INT_STATUS_MARIO_KNOCKBACK_DMG;\n            } else {\n                gMarioObject->oInteractStatus |= INT_STATUS_MARIO_STUNNED;\n            }\n        }\n        return TRUE;\n    } else {\n        return FALSE;\n    }\n}\n\n/**\n * Makes Bowser do a second hop speed only in BitS\n */\nvoid bowser_short_second_hop(void) {\n    if (o->oBhvParams2ndByte == BOWSER_BP_BITS && o->oBowserStatus & BOWSER_STATUS_BIG_JUMP) {\n        if (o->oBowserDistToCenter > 1000.0f) {\n            o->oForwardVel = 60.0f;\n        }\n    }\n}\n\n/**\n * Makes Bowser do a big jump\n */\nvoid bowser_act_big_jump(void) {\n    UNUSED u8 filler[4];\n\n    if (o->oSubAction == 0) {\n        // Set jump animation\n        if (bowser_set_anim_jump()) {\n            // Set vel depending of the stage and status\n            if (o->oBhvParams2ndByte == BOWSER_BP_BITS && o->oBowserStatus & BOWSER_STATUS_BIG_JUMP) {\n                o->oVelY = 70.0f;\n            } else {\n                o->oVelY = 80.0f;\n            }\n            o->oBowserTimer = 0;\n            bowser_short_second_hop();\n            o->oSubAction++;\n        }\n    } else if (o->oSubAction == 1) {\n#if BUGFIX_BOWSER_FALLEN_OFF_STAGE\n        // Reset Bowser back on stage in BitS if he doesn't land properly\n        if (o->oBhvParams2ndByte == BOWSER_BP_BITS && o->oBowserStatus & BOWSER_STATUS_BIG_JUMP) {\n            bowser_reset_fallen_off_stage();\n        }\n#endif\n        // Land on stage, reset status jump and velocity\n        if (bowser_land()) {\n            o->oBowserStatus &= ~BOWSER_STATUS_BIG_JUMP;\n            o->oForwardVel = 0.0f;\n            o->oSubAction++;\n            // Spawn shockwave (BitS only) if is not on a platform\n            bowser_spawn_shockwave();\n            // Tilt platform in BitFS\n            if (o->oBhvParams2ndByte == BOWSER_BP_BITFS) {\n                o->oAction = BOWSER_ACT_TILT_LAVA_PLATFORM;\n            }\n        } else {\n        }\n    // Set to default action when the animation is over\n    } else if (cur_obj_check_if_near_animation_end()) {\n        o->oAction = BOWSER_ACT_DEFAULT;\n    }\n}\n\n/**\n * Fixed values for the quick jump action\n */\ns16 sBowserVelYAir[] = { 60 };\ns16 sBowserFVelAir[] = { 50 };\n\n/**\n * Makes Bowser do a \"quick\" jump in BitDW\n */\nvoid bowser_act_quick_jump(void) {\n    f32 velY = sBowserVelYAir[0];\n    f32 fVel = sBowserFVelAir[0];\n\n    if (o->oSubAction == 0) {\n        // Set fixed val positions while jumping\n        if (bowser_set_anim_jump()) {\n            o->oVelY = velY;\n            o->oForwardVel = fVel;\n            o->oBowserTimer = 0;\n            o->oSubAction++;\n        }\n    // Lands then quickly returns to default action\n    } else if (o->oSubAction == 1) {\n        if (bowser_land()) {\n            o->oSubAction++;\n        }\n    } else if (cur_obj_check_if_near_animation_end()) {\n        o->oAction = BOWSER_ACT_DEFAULT;\n    }\n}\n\n/**\n * Makes Bowser moving around if he is on an edge floor\n */\nvoid bowser_act_hit_edge(void) {\n    // Reset speed and timer\n    o->oForwardVel = 0.0f;\n    if (o->oTimer == 0) {\n        o->oBowserTimer = 0;\n    }\n\n    switch (o->oSubAction) {\n        case 0:\n            // Move on the edge\n            cur_obj_init_animation_with_sound(BOWSER_ANIM_EDGE_MOVE);\n            if (cur_obj_check_if_near_animation_end()) {\n                o->oBowserTimer++;\n            }\n            if (o->oBowserTimer > 0) {\n                o->oSubAction++;\n            }\n            break;\n\n        case 1:\n            // Stop moving on the edge\n            cur_obj_init_animation_with_sound(BOWSER_ANIM_EDGE_STOP);\n            // Turn around once the animation ends\n            if (cur_obj_check_if_near_animation_end()) {\n                o->oAction = BOWSER_ACT_TURN_FROM_EDGE;\n            }\n            break;\n    }\n}\n\n/**\n * Makes Bowser do a fire split attack\n */\nvoid bowser_act_spit_fire_onto_floor(void) {\n    // Set fixed rand value if Mario is low health\n    if (gHudDisplay.wedges < 4) {\n        o->oBowserRandSplitFloor = 3;\n    } else {\n        o->oBowserRandSplitFloor = random_float() * 3.0f + 1.0f;\n    }\n\n    // Play animation and split fire at a specific frame\n    cur_obj_init_animation_with_sound(BOWSER_ANIM_BREATH_QUICK);\n    if (cur_obj_check_anim_frame(5)) {\n        obj_spit_fire(0, 200, 180, 7.0f, MODEL_RED_FLAME, 30.0f, 10.0f, 0x1000);\n    }\n    // Use subaction as a timer when the animation is over\n    if (cur_obj_check_if_near_animation_end()) {\n        o->oSubAction++;\n    }\n    // Return to default act once we get past rand value\n    if (o->oSubAction >= o->oBowserRandSplitFloor) {\n        o->oAction = BOWSER_ACT_DEFAULT;\n    }\n}\n\n/**\n * Turns around Bowser from an specific yaw angle\n * Returns TRUE once the timer is bigger than the time set\n */\ns32 bowser_turn_on_timer(s32 time, s16 yaw) {\n    if (o->oSubAction == 0) {\n        if (cur_obj_init_animation_and_check_if_near_end(BOWSER_ANIM_LOOK_UP_START_WALK)) {\n            o->oSubAction++;\n        }\n    } else if (o->oSubAction == 1) {\n        if (cur_obj_init_animation_and_check_if_near_end(BOWSER_ANIM_LOOK_DOWN_STOP_WALK)) {\n            o->oSubAction++;\n        }\n    } else {\n        cur_obj_init_animation_with_sound(BOWSER_ANIM_IDLE);\n    }\n\n    o->oForwardVel = 0.0f;\n    o->oMoveAngleYaw += yaw;\n\n    if (o->oTimer >= time) {\n        return TRUE;\n    } else {\n        return FALSE;\n    }\n}\n\n/**\n * Makes Bowser turn around after hitting the edge\n */\nvoid bowser_act_turn_from_edge(void) {\n    if (bowser_turn_on_timer(63, 0x200)) {\n        o->oAction = BOWSER_ACT_DEFAULT;\n    }\n}\n\n/**\n * Makes Bowser charge (run) to Mario\n */\nvoid bowser_act_charge_mario(void) {\n    s32 time;\n    // Reset Speed to prepare charge\n    if (o->oTimer == 0) {\n        o->oForwardVel = 0.0f;\n    }\n\n    switch (o->oSubAction) {\n        case BOWSER_SUB_ACT_CHARGE_START:\n            // Start running\n            o->oBowserTimer = 0;\n            if (cur_obj_init_animation_and_check_if_near_end(BOWSER_ANIM_RUN_START)) {\n                o->oSubAction = BOWSER_SUB_ACT_CHARGE_RUN;\n            }\n            break;\n\n        case BOWSER_SUB_ACT_CHARGE_RUN:\n            // Set speed to run\n            o->oForwardVel = 50.0f;\n            if (cur_obj_init_animation_and_check_if_near_end(BOWSER_ANIM_RUN)) {\n                o->oBowserTimer++;\n                // Split if 6 timer frames has passed\n                if (o->oBowserTimer >= 6) {\n                    o->oSubAction = BOWSER_SUB_ACT_CHARGE_SLIP;\n                }\n                // Slip if Mario has a differentiable angle and 2 timer frames has passed\n                if (o->oBowserTimer >= 2) {\n                    if (abs_angle_diff(o->oAngleToMario, o->oMoveAngleYaw) > 0x2000) {\n                        o->oSubAction = BOWSER_SUB_ACT_CHARGE_SLIP;\n                    }\n                }\n            }\n            // Rotate to Mario\n            cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x200);\n            break;\n\n        case BOWSER_SUB_ACT_CHARGE_SLIP:\n            // Spawn smoke puff while slipping\n            o->oBowserTimer = 0;\n            cur_obj_init_animation_with_sound(BOWSER_ANIM_RUN_SLIP);\n            spawn_object_relative_with_scale(0, 100, -50, 0, 3.0f, o, MODEL_SMOKE, bhvWhitePuffSmoke2);\n            spawn_object_relative_with_scale(0, -100, -50, 0, 3.0f, o, MODEL_SMOKE,\n                                             bhvWhitePuffSmoke2);\n            // End Charge once Bowser stops running\n            if (approach_f32_signed(&o->oForwardVel, 0, -1.0f)) {\n                o->oSubAction = BOWSER_SUB_ACT_CHARGE_END;\n            }\n            cur_obj_extend_animation_if_at_end();\n            break;\n\n        case BOWSER_SUB_ACT_CHARGE_END:\n            // Stop running\n            o->oForwardVel = 0.0f;\n            cur_obj_init_animation_with_sound(BOWSER_ANIM_RUN_STOP);\n            if (cur_obj_check_if_near_animation_end()) {\n                // Set time delay to go to default action\n                if (o->oBhvParams2ndByte == BOWSER_BP_BITS) {\n                    time = 10;\n                } else {\n                    time = 30;\n                }\n                if (o->oBowserTimer > time) {\n                    o->oAction = BOWSER_ACT_DEFAULT;\n                }\n                o->oBowserTimer++;\n            }\n            cur_obj_extend_animation_if_at_end();\n            break;\n    }\n\n    // Bowser is close to falling so set hit edge action\n    if (o->oMoveFlags & OBJ_MOVE_HIT_EDGE) {\n        o->oAction = BOWSER_ACT_HIT_EDGE;\n    }\n}\n\n/**\n * Checks if Bowser hits a mine from a distance, returns TRUE if so\n */\ns32 bowser_check_hit_mine(void) {\n    struct Object *mine;\n    f32 dist;\n\n    mine = cur_obj_find_nearest_object_with_behavior(bhvBowserBomb, &dist);\n    if (mine != NULL && dist < 800.0f) {\n        mine->oInteractStatus |= INT_STATUS_HIT_MINE;\n        return TRUE;\n    }\n\n    return FALSE;\n}\n\n/**\n * Bowser's thrown act that gets called after Mario releases him\n */\nvoid bowser_act_thrown(void) {\n    UNUSED u8 filler[4];\n\n    // Keep Bowser's timer at 0 unless he lands\n    if (o->oTimer < 2) {\n        o->oBowserTimer = 0;\n    }\n    if (o->oSubAction == 0) {\n        // Play shake animations and do bounce effects\n        cur_obj_init_animation_with_sound(BOWSER_ANIM_SHAKING);\n        bowser_bounce_effects(&o->oBowserTimer);\n        // Reset speed when he moves on ground\n        if (o->oMoveFlags & OBJ_MOVE_ON_GROUND) {\n            o->oForwardVel = 0.0f;\n            o->oSubAction++; // stops this current subaction\n        }\n    // Stand up and after play, set to default act\n    } else if (cur_obj_init_animation_and_check_if_near_end(BOWSER_ANIM_STAND_UP)) {\n        o->oAction = BOWSER_ACT_DEFAULT;\n    }\n    // Hit mine check, reduce health and set specific action depending of it\n    if (bowser_check_hit_mine()) {\n        o->oHealth--;\n        if (o->oHealth <= 0) {\n            o->oAction = BOWSER_ACT_DEAD;\n        } else {\n            o->oAction = BOWSER_ACT_HIT_MINE;\n        }\n    }\n}\n\n/**\n * Set Bowser invisible and stops him (after falling)\n */\nvoid bowser_set_goal_invisible(void) {\n    o->oBowserTargetOpacity = 0;\n    if (o->oOpacity == 0) {\n        o->oForwardVel = 0.0f;\n        o->oVelY = 0.0f;\n        o->oPosY = o->oHomeY - 1000.0f;\n    }\n}\n\n/**\n * Makes Bowser jump back on stage after falling\n */\nvoid bowser_act_jump_onto_stage(void) {\n    s32 onDynamicFloor;\n    UNUSED u8 filler[4];\n    struct Surface *floor = o->oFloor;\n\n    // Set dynamic floor check (Object platforms)\n    if (floor != NULL && floor->flags & SURFACE_FLAG_DYNAMIC) {\n        onDynamicFloor = TRUE;\n    } else {\n        onDynamicFloor = FALSE;\n    }\n    // Set status Jump\n    o->oBowserStatus |= BOWSER_STATUS_BIG_JUMP;\n\n    switch (o->oSubAction) {\n        // Stops Bowser and makes him invisible\n        case BOWSER_SUB_ACT_JUMP_ON_STAGE_IDLE:\n            if (o->oTimer == 0) {\n                o->oFaceAnglePitch = 0;\n                o->oFaceAngleRoll = 0;\n            } //? missing else\n            o->oFaceAnglePitch += 0x800;\n            o->oFaceAngleRoll += 0x800;\n            if (!(o->oFaceAnglePitch & 0xFFFF)) {\n                o->oSubAction++;\n            }\n            bowser_set_goal_invisible();\n            break;\n\n        // Start jump animation and make him visible after an animation frame\n        case BOWSER_SUB_ACT_JUMP_ON_STAGE_START:\n            cur_obj_init_animation_with_sound(BOWSER_ANIM_JUMP_START);\n            if (cur_obj_check_anim_frame(11)) {\n                o->oMoveAngleYaw = o->oBowserAngleToCenter;\n                o->oVelY = 150.0f;\n                o->oBowserTargetOpacity = 255;\n                o->oBowserTimer = 0;\n                o->oSubAction++;\n            } else {\n                bowser_set_goal_invisible();\n            }\n            break;\n\n        // Approach him back on stage\n        case BOWSER_SUB_ACT_JUMP_ON_STAGE_LAND:\n            if (o->oPosY > o->oHomeY) {\n                o->oDragStrength = 0.0f;\n                if (o->oBowserDistToCenter < 2500.0f) {\n                    if (absf(o->oFloorHeight - o->oHomeY) < 100.0f) {\n                        approach_f32_signed(&o->oForwardVel, 0, -5.0f);\n                    } else {\n                        cur_obj_forward_vel_approach_upward(150.0f, 2.0f);\n                    }\n                } else {\n                    cur_obj_forward_vel_approach_upward(150.0f, 2.0f);\n                }\n            }\n            // Land on stage\n            if (bowser_land()) {\n                o->oDragStrength = 10.0f;\n                o->oSubAction++;\n                // Spawn shockwave (BitS only) if is not on a platform\n                if (onDynamicFloor == FALSE) {\n                    bowser_spawn_shockwave();\n                // If is on a dynamic floor in BitS, then jump\n                // because of the falling platform\n                } else if (o->oBhvParams2ndByte == BOWSER_BP_BITS) {\n                    o->oAction = BOWSER_ACT_BIG_JUMP;\n                }\n                // If is on a dynamic floor in BitFS, then tilt platform\n                if (o->oBhvParams2ndByte == BOWSER_BP_BITFS) {\n                    o->oAction = BOWSER_ACT_TILT_LAVA_PLATFORM;\n                }\n            }\n            // Reset him back on stage if he still didn't landed yet\n            // Post-JP made this check as a separate function\n#if BUGFIX_BOWSER_FALLEN_OFF_STAGE\n            bowser_reset_fallen_off_stage();\n#else\n            if (o->oVelY < 0.0f && o->oPosY < o->oHomeY - 300.0f) {\n                o->oPosZ = 0.0f, o->oPosX = o->oPosZ;\n                o->oPosY = o->oHomeY + 2000.0f;\n                o->oVelY = 0.0f;\n            }\n#endif\n            break;\n\n        // Bowser landed, so reset action after he's done jumping\n        case BOWSER_SUB_ACT_JUMP_ON_STAGE_STOP:\n            if (cur_obj_check_if_near_animation_end()) {\n                o->oAction = BOWSER_ACT_DEFAULT;\n                o->oBowserStatus &= ~BOWSER_STATUS_BIG_JUMP;\n                cur_obj_extend_animation_if_at_end();\n            }\n            break;\n    }\n\n    print_debug_bottom_up(\"sp %d\", o->oForwardVel);\n}\n\n/**\n * The frames of the Bowser's timer on which to play a \"stomp\" sound\n */\ns8 sBowserDanceStepNoises[] = { 24, 42, 60, -1 };\n\n/**\n * Makes Bowser's dance as a \"taunt\"\n */\nvoid bowser_act_dance(void) {\n    // Play a stomp sound effect on certain frames\n    if (is_item_in_array(o->oTimer, sBowserDanceStepNoises)) {\n        cur_obj_play_sound_2(SOUND_OBJ_BOWSER_WALK);\n    }\n    // Play dance animation and after that return to default action\n    if (cur_obj_init_animation_and_check_if_near_end(BOWSER_ANIM_DANCE)) {\n        o->oAction = BOWSER_ACT_DEFAULT;\n    }\n}\n\n/**\n * Spawn collectable that Bowser spawns after despawning\n * Spawns a Key in BitDW/BitFS or Grand Star in BitS\n */\nvoid bowser_spawn_collectable(void) {\n    if (o->oBhvParams2ndByte == BOWSER_BP_BITS) {\n        gSecondCameraFocus = spawn_object(o, MODEL_STAR, bhvGrandStar);\n    } else {\n        gSecondCameraFocus = spawn_object(o, MODEL_BOWSER_KEY, bhvBowserKey);\n        cur_obj_play_sound_2(SOUND_GENERAL2_BOWSER_KEY);\n    }\n    gSecondCameraFocus->oAngleVelYaw = o->oAngleVelYaw;\n}\n\n/**\n * Makes Bowser fly back on stage defeated\n */\nvoid bowser_fly_back_dead(void) {\n    cur_obj_init_animation_with_sound(BOWSER_ANIM_FLIP_DOWN);\n    // More knockback in BitS\n    if (o->oBhvParams2ndByte == BOWSER_BP_BITS) {\n        o->oForwardVel = -400.0f;\n    } else {\n        o->oForwardVel = -200.0f;\n    }\n    o->oVelY = 100.0f;\n    o->oMoveAngleYaw = o->oBowserAngleToCenter + 0x8000;\n    o->oBowserTimer = 0;\n    o->oSubAction++; // BOWSER_SUB_ACT_DEAD_BOUNCE\n}\n\n/**\n * Plays bounce effects after landing upside down\n */\nvoid bowser_dead_bounce(void) {\n    o->oBowserEyesShut = TRUE; // close eyes\n    bowser_bounce_effects(&o->oBowserTimer);\n    if (o->oMoveFlags & OBJ_MOVE_LANDED) {\n        cur_obj_play_sound_2(SOUND_OBJ_BOWSER_WALK);\n    }\n    if (o->oMoveFlags & OBJ_MOVE_ON_GROUND) {\n        o->oForwardVel = 0.0f;\n        o->oSubAction++; // BOWSER_SUB_ACT_DEAD_WAIT\n    }\n}\n\n/**\n * Wait for Mario to get close while Bowser is defeated\n * Returns TRUE if he is close enough\n */\ns32 bowser_dead_wait_for_mario(void) {\n    s32 ret = FALSE;\n    cur_obj_become_intangible();\n    if (cur_obj_init_animation_and_check_if_near_end(BOWSER_ANIM_LAY_DOWN) && o->oDistanceToMario < 700.0f\n        && abs_angle_diff(gMarioObject->oMoveAngleYaw, o->oAngleToMario) > 0x6000) {\n        ret = TRUE;\n    }\n    cur_obj_extend_animation_if_at_end();\n    o->oBowserTimer = 0;\n    return ret;\n}\n\n/**\n * Makes Bowser twirl up by changing his scale\n * Returns TRUE once done\n */\ns32 bowser_dead_twirl_up(void) {\n    s32 ret = FALSE;\n\n    // Set angle rotation once he has low X scale value\n    if (o->header.gfx.scale[0] < 0.8) {\n        o->oAngleVelYaw += 0x80;\n    }\n    // Slowly scale down his X and Z value\n    if (o->header.gfx.scale[0] > 0.2) {\n        o->header.gfx.scale[0] = o->header.gfx.scale[0] - 0.02;\n        o->header.gfx.scale[2] = o->header.gfx.scale[2] - 0.02;\n    } else {\n        // Now scale down his Y value (and send Bowser up)\n        o->header.gfx.scale[1] = o->header.gfx.scale[1] - 0.01;\n        o->oVelY = 20.0f;\n        o->oGravity = 0.0f;\n    }\n    // At half Y scale value, he is high enough, so we are done\n    if (o->header.gfx.scale[1] < 0.5) {\n        ret = TRUE;\n    }\n    // Copy angle rotation to moving rotation\n    o->oMoveAngleYaw += o->oAngleVelYaw;\n    // Slowly fade out\n    if (o->oOpacity >= 3) {\n        o->oOpacity -= 2;\n    }\n\n    return ret;\n}\n\n/**\n * Hides Bowser after his death sequence is done\n */\nvoid bowser_dead_hide(void) {\n    cur_obj_scale(0);\n    o->oForwardVel = 0;\n    o->oVelY = 0;\n    o->oGravity = 0;\n}\n\n/**\n * Dialog values that are set on each stage Bowser's is defeated\n */\ns16 sBowserDefeatedDialogText[3] = { DIALOG_119, DIALOG_120, DIALOG_121 };\n\n/**\n * Bowser's dead sequence that plays in BitDW/BitFS\n * Returns TRUE once done\n */\ns32 bowser_dead_default_stage_ending(void) {\n    s32 ret = FALSE;\n\n    if (o->oBowserTimer < 2) {\n        // Lower music volume\n        if (o->oBowserTimer == 0) {\n            seq_player_lower_volume(SEQ_PLAYER_LEVEL, 60, 40);\n            o->oBowserTimer++;\n        }\n        // Play Bowser defeated dialog\n        if (cur_obj_update_dialog(MARIO_DIALOG_LOOK_UP,\n            (DIALOG_FLAG_TEXT_DEFAULT | DIALOG_FLAG_TIME_STOP_ENABLED),\n            sBowserDefeatedDialogText[o->oBhvParams2ndByte], 0)) {\n            // Dialog is done, fade out music and play explode sound effect\n            o->oBowserTimer++;\n            cur_obj_play_sound_2(SOUND_GENERAL2_BOWSER_EXPLODE);\n            seq_player_unlower_volume(SEQ_PLAYER_LEVEL, 60);\n            seq_player_fade_out(SEQ_PLAYER_LEVEL, 1);\n        }\n    // Hide Bowser and spawn collectable once done twirling\n    } else if (bowser_dead_twirl_up()) {\n        bowser_dead_hide();\n        spawn_triangle_break_particles(20, MODEL_YELLOW_COIN, 1.0f, 0);\n        bowser_spawn_collectable();\n        set_mario_npc_dialog(MARIO_DIALOG_STOP);\n        ret = TRUE;\n    }\n\n    return ret;\n}\n\n/**\n * Bowser's dead sequence that plays in BitS\n * Returns TRUE once done\n */\ns32 bowser_dead_final_stage_ending(void) {\n    UNUSED u8 filler[4];\n    s32 ret = FALSE;\n    s32 dialogID;\n\n    if (o->oBowserTimer < 2) {\n        // Set dialog whenever you have 120 stars or not\n        if (gHudDisplay.stars < 120) {\n            dialogID = DIALOG_121;\n        } else {\n            dialogID = DIALOG_163;\n        }\n        // Lower music volume\n        if (o->oBowserTimer == 0) {\n            seq_player_lower_volume(SEQ_PLAYER_LEVEL, 60, 40);\n            o->oBowserTimer++;\n        }\n        // Play Bowser defeated dialog\n        if (cur_obj_update_dialog(MARIO_DIALOG_LOOK_UP,\n            (DIALOG_FLAG_TEXT_DEFAULT | DIALOG_FLAG_TIME_STOP_ENABLED), dialogID, 0)) {\n            // Dialog is done, fade out music and spawn grand star\n            cur_obj_set_model(MODEL_BOWSER_NO_SHADOW);\n            seq_player_unlower_volume(SEQ_PLAYER_LEVEL, 60);\n            seq_player_fade_out(SEQ_PLAYER_LEVEL, 1);\n            bowser_spawn_collectable();\n            o->oBowserTimer++;\n        }\n    // Slowly fade him out\n    } else if (o->oOpacity > 4) {\n        o->oOpacity -= 4;\n    } else {\n        // And at last, hide him\n        bowser_dead_hide();\n        ret = TRUE;\n    }\n\n    return ret;\n}\n\n/**\n * Bowser's dead action, plays when he has no health left\n * This action is divided in subaction functions\n */\nvoid bowser_act_dead(void) {\n    switch (o->oSubAction) {\n        case BOWSER_SUB_ACT_DEAD_FLY_BACK:\n            bowser_fly_back_dead();\n            break;\n\n        case BOWSER_SUB_ACT_DEAD_BOUNCE:\n            bowser_dead_bounce();\n            break;\n\n        case BOWSER_SUB_ACT_DEAD_WAIT:\n            // Check if Mario is close to Bowser\n            if (bowser_dead_wait_for_mario()) {\n                o->oBowserTimer = 0;\n                // Set different (final) subaction in BitS\n                // Non-BitS Bowser uses default subaction and sets dithering\n                if (o->oBhvParams2ndByte == BOWSER_BP_BITS) {\n                    o->oSubAction = BOWSER_SUB_ACT_DEAD_FINAL_END;\n                } else {\n                    o->activeFlags |= ACTIVE_FLAG_DITHERED_ALPHA;\n                    o->oSubAction++; // BOWSER_SUB_ACT_DEAD_DEFAULT_END\n                }\n            }\n            break;\n\n        case BOWSER_SUB_ACT_DEAD_DEFAULT_END:\n            if (bowser_dead_default_stage_ending()) {\n                o->oSubAction++; // BOWSER_SUB_ACT_DEAD_DEFAULT_END_OVER\n            }\n            break;\n\n        case BOWSER_SUB_ACT_DEAD_DEFAULT_END_OVER:\n            break;\n\n        case BOWSER_SUB_ACT_DEAD_FINAL_END:\n            if (bowser_dead_final_stage_ending()) {\n                o->oSubAction++; // BOWSER_SUB_ACT_DEAD_FINAL_END_OVER\n            }\n            break;\n\n        case BOWSER_SUB_ACT_DEAD_FINAL_END_OVER:\n            break;\n    }\n}\n\n/**\n * Sets values for the BitFS platform to tilt\n */\nvoid bowser_tilt_platform(struct Object *platform, s16 angSpeed) {\n    s16 angle = o->oBowserAngleToCenter + 0x8000;\n    platform->oAngleVelPitch = coss(angle) * angSpeed;\n    platform->oAngleVelRoll = -sins(angle) * angSpeed;\n}\n\n/**\n * Struct for the BitFS tilt platform\n */\nstruct BowserTiltPlatformInfo {\n    // Flag value to make sure platform moves smoothly\n    //  0 = Don't move\n    //  1 = Move angle behind Bowser\n    // -1 = Move angle in front of Bowser\n    s16 flag;\n    // Sets platform's tilt angle speed (pattern: positive then negative)\n    s16 angSpeed;\n    // Sets how much time the platform can tilt, increases each move\n    s16 time;\n};\n\n/**\n * Data for the BitFS tilt Platform\n */\nstruct BowserTiltPlatformInfo sBowsertiltPlatformData[] = {\n    {  1,   10,  40 },\n    {  0,    0,  74 },\n    { -1,  -10, 114 },\n    {  1,  -20, 134 },\n    { -1,   20, 154 },\n    {  1,   40, 164 },\n    { -1,  -40, 174 },\n    {  1,  -80, 179 },\n    { -1,   80, 184 },\n    {  1,  160, 186 },\n    { -1, -160, 186 },\n    {  1,    0,   0 },\n};\n\n/**\n * Makes the platform in BitFS tilt from left to right\n */\nvoid bowser_act_tilt_lava_platform(void) {\n    // Set platform object\n    struct Object *platform = cur_obj_nearest_object_with_behavior(bhvTiltingBowserLavaPlatform);\n    UNUSED s16 angle = o->oBowserAngleToCenter + 0x8000;\n    s16 angSpeed;\n    UNUSED u8 filler[4];\n\n    // If there's not platform, return to default action\n    if (platform == NULL) {\n        o->oAction = BOWSER_ACT_DEFAULT;\n    } else {\n        s32 i = 0;\n        s32 isNotTilting = TRUE;\n        // Active platform tilting if the timer is not 0\n        while (sBowsertiltPlatformData[i].time != 0) {\n            // Move if the time values is more than the timer\n            if (o->oTimer < sBowsertiltPlatformData[i].time) {\n                // Set angle speed\n                angSpeed = sBowsertiltPlatformData[i].angSpeed;\n                // Move angle behind Bowser\n                if (sBowsertiltPlatformData[i].flag > 0) {\n                    angSpeed = (sBowsertiltPlatformData[i].time - o->oTimer - 1) * angSpeed;\n                } else { // Move angle in front of Bowser\n                    angSpeed = (o->oTimer - sBowsertiltPlatformData[i - 1].time) * angSpeed;\n                }\n                // Set angle values to the platform\n                bowser_tilt_platform(platform, angSpeed);\n                // Play sound effect\n                if (angSpeed != 0) {\n                    play_sound(SOUND_ENV_MOVING_BIG_PLATFORM, platform->header.gfx.cameraToObject);\n                }\n                isNotTilting = FALSE;\n                break;\n            }\n            i++;\n        }\n        // If Bowser is done tilting, reset platform angles\n        // and set Bowser to default action\n        if (isNotTilting) {\n            o->oAction = BOWSER_ACT_DEFAULT;\n            platform->oAngleVelPitch = 0;\n            platform->oAngleVelRoll = 0;\n            platform->oFaceAnglePitch = 0;\n            platform->oFaceAngleRoll = 0;\n        }\n    }\n    // Extend \"idle\" animation\n    cur_obj_extend_animation_if_at_end();\n}\n\n/**\n * Check if Bowser is offstage from a large distance or landed on a lethal floor\n */\ns32 bowser_check_fallen_off_stage(void) {\n    if (o->oAction != BOWSER_ACT_JUMP_ONTO_STAGE && o->oAction != BOWSER_ACT_TILT_LAVA_PLATFORM) {\n        if (o->oPosY < o->oHomeY - 1000.0f) {\n            return TRUE;\n        }\n        if (o->oMoveFlags & OBJ_MOVE_LANDED) {\n            // Check for Fire Sea\n            if (o->oFloorType == SURFACE_BURNING) {\n                return TRUE;\n            }\n            // Check for Dark World - Sky\n            if (o->oFloorType == SURFACE_DEATH_PLANE) {\n                return TRUE;\n            }\n        }\n    }\n    return FALSE;\n}\n\n/**\n * Set Bowser's actions\n */\nvoid (*sBowserActions[])(void) = {\n    bowser_act_default,\n    bowser_act_thrown,\n    bowser_act_jump_onto_stage,\n    bowser_act_dance,\n    bowser_act_dead,\n    bowser_act_wait,\n    bowser_act_intro_walk,\n    bowser_act_charge_mario,\n    bowser_act_spit_fire_into_sky,\n    bowser_act_spit_fire_onto_floor,\n    bowser_act_hit_edge,\n    bowser_act_turn_from_edge,\n    bowser_act_hit_mine,\n    bowser_act_big_jump,\n    bowser_act_walk_to_mario,\n    bowser_act_breath_fire,\n    bowser_act_teleport,\n    bowser_act_quick_jump,\n    bowser_act_idle,\n    bowser_act_tilt_lava_platform,\n};\n\n/**\n * Set Bowser's sound animations\n */\nstruct SoundState sBowserSoundStates[] = {\n    { 0, 0, 0, NO_SOUND },\n    { 0, 0, 0, NO_SOUND },\n    { 0, 0, 0, NO_SOUND },\n    { 0, 0, 0, NO_SOUND },\n    { 0, 0, 0, NO_SOUND },\n    { 0, 0, 0, NO_SOUND },\n    { 0, 0, 0, NO_SOUND },\n    { 0, 0, 0, NO_SOUND },\n    { 1, 0, -1, SOUND_OBJ_BOWSER_WALK },\n    { 1, 0, -1, SOUND_OBJ2_BOWSER_ROAR },\n    { 1, 0, -1, SOUND_OBJ2_BOWSER_ROAR },\n    { 0, 0, 0, NO_SOUND },\n    { 0, 0, 0, NO_SOUND },\n    { 1, 20, 40, SOUND_OBJ_BOWSER_WALK },\n    { 1, 20, -1, SOUND_OBJ_BOWSER_WALK },\n    { 1, 20, 40, SOUND_OBJ_BOWSER_WALK },\n    { 1, 0, -1, SOUND_OBJ_BOWSER_TAIL_PICKUP },\n    { 1, 0, -1, SOUND_OBJ_BOWSER_DEFEATED },\n    { 1, 8, -1, SOUND_OBJ_BOWSER_WALK },\n    { 1, 8, 17, SOUND_OBJ_BOWSER_WALK },\n    { 1, 8, -10, SOUND_OBJ_BOWSER_WALK },\n    { 0, 0, 0, NO_SOUND },\n    { 1, 5, -1, SOUND_OBJ_FLAME_BLOWN },\n    { 0, 0, 0, NO_SOUND },\n    { 0, 0, 0, NO_SOUND },\n    { 1, 0, -1, SOUND_OBJ_BOWSER_TAIL_PICKUP },\n    { 1, 0, -1, SOUND_OBJ2_BOWSER_ROAR },\n};\n\n/**\n * Set whenever Bowser should have rainbow light or not on each stage\n */\ns8 sBowserRainbowLight[] = { FALSE, FALSE, TRUE };\n\n/**\n * Set how much health Bowser has on each stage\n */\ns8 sBowserHealth[] = { 1, 1, 3 };\n\n/**\n * Update Bowser's actions when he's hands free\n */\nvoid bowser_free_update(void) {\n    struct Surface *floor;\n    struct Object *platform;\n    UNUSED f32 floorHeight;\n\n    // Platform displacement check (for BitFS)\n    if ((platform = o->platform) != NULL) {\n        apply_platform_displacement(FALSE, platform);\n    }\n    // Reset grabbed status\n    o->oBowserGrabbedStatus = BOWSER_GRAB_STATUS_NONE;\n    // Update positions and actions (default action)\n    cur_obj_update_floor_and_walls();\n    cur_obj_call_action_function(sBowserActions);\n    cur_obj_move_standard(-78);\n    // Jump on stage if Bowser has fallen off\n    if (bowser_check_fallen_off_stage()) {\n        o->oAction = BOWSER_ACT_JUMP_ONTO_STAGE;\n    }\n    // Check floor height and platform\n    floorHeight = find_floor(o->oPosX, o->oPosY, o->oPosZ, &floor);\n    if ((floor != NULL) && (floor->object != NULL)) {\n        o->platform = floor->object;\n    } else {\n        o->platform = NULL;\n    }\n    // Sound states for Bowser Animations\n    exec_anim_sound_state(sBowserSoundStates);\n}\n\n/**\n * Update Bowser's actions when he's getting held\n */\nvoid bowser_held_update(void) {\n    // Reset fire sky status and make him intangible\n    o->oBowserStatus &= ~BOWSER_STATUS_FIRE_SKY;\n    cur_obj_become_intangible();\n\n    switch (o->oBowserGrabbedStatus) {\n        // Play pickup sound, start grabbed animation, and set throw action\n        // Throw action won't be played until he's actually released\n        case BOWSER_GRAB_STATUS_NONE:\n            cur_obj_play_sound_2(SOUND_OBJ_BOWSER_TAIL_PICKUP);\n            cur_obj_unrender_set_action_and_anim(BOWSER_ANIM_GRABBED, BOWSER_ACT_THROWN);\n            o->oBowserGrabbedStatus++;\n            break;\n        // After the grabbed animation ends, play shaking animation in a loop\n        case BOWSER_GRAB_STATUS_GRABBED:\n            if (cur_obj_check_if_near_animation_end()) {\n                cur_obj_init_animation_with_sound(BOWSER_ANIM_SHAKING);\n                o->oBowserGrabbedStatus++;\n            }\n            break;\n        case BOWSER_GRAB_STATUS_HOLDING:\n            break;\n    }\n\n    // Reset move flags\n    o->oMoveFlags = 0;\n    // Copy angle values from Mario\n    o->oBowserHeldAnglePitch = gMarioObject->oMoveAnglePitch;\n    o->oBowserHeldAngleVelYaw = gMarioObject->oAngleVelYaw;\n    o->oMoveAngleYaw = gMarioObject->oMoveAngleYaw;\n}\n\n/**\n * Update Bowser's actions when he's thrown and dropped\n */\nvoid bowser_thrown_dropped_update(void) {\n    f32 swingSpd;\n\n    // Reset grabbed status\n    o->oBowserGrabbedStatus = BOWSER_GRAB_STATUS_NONE;\n    // Set throw action and vel values\n    cur_obj_get_thrown_or_placed(1.0f, 1.0f, BOWSER_ACT_THROWN);\n    // Set swing speed based of angle\n    swingSpd = o->oBowserHeldAngleVelYaw / 3000.0 * 70.0f;\n    // If less than 0, reduce speed\n    if (swingSpd < 0.0f) {\n        swingSpd = -swingSpd;\n    }\n    // If more than 90, increase speed\n    if (swingSpd > 90.0f) {\n        swingSpd *= 2.5;\n    }\n    // Set distance speed when throwing\n    o->oForwardVel = coss(o->oBowserHeldAnglePitch) * swingSpd;\n    o->oVelY = -sins(o->oBowserHeldAnglePitch) * swingSpd;\n    cur_obj_become_intangible();\n\n    // Reset timer and subactions\n    o->prevObj->oAction = BOWSER_ACT_TAIL_THROWN; // prevObj is Bowser's Tail\n    o->prevObj->oTimer = 0;\n    o->prevObj->oSubAction = 0; //! Tail doesn't have sub actions\n\n    o->oTimer = 0;\n    o->oSubAction = 0;\n}\n\n/**\n * Bowser's main loop\n */\nvoid bhv_bowser_loop(void) {\n    s16 angleToMario;  // AngleToMario from Bowser's perspective\n    s16 angleToCenter; // AngleToCenter from Bowser's perspective\n\n    // Set distance/angle values\n    o->oBowserDistToCenter = sqrtf(o->oPosX * o->oPosX + o->oPosZ * o->oPosZ);\n    o->oBowserAngleToCenter = atan2s(0.0f - o->oPosZ, 0.0f - o->oPosX);\n    angleToMario = abs_angle_diff(o->oMoveAngleYaw, o->oAngleToMario);\n    angleToCenter = abs_angle_diff(o->oMoveAngleYaw, o->oBowserAngleToCenter);\n\n    // Reset Status\n    o->oBowserStatus &= ~0xFF;\n\n    // Set bitflag status for distance/angle values\n    // Only the first one is used\n    if (angleToMario < 0x2000) {\n        o->oBowserStatus |= BOWSER_STATUS_ANGLE_MARIO;\n    }\n    if (angleToCenter < 0x3800) {\n        o->oBowserStatus |= BOWSER_STATUS_ANGLE_CENTER; // unused\n    }\n    if (o->oBowserDistToCenter < 1000.0f) {\n        o->oBowserStatus |= BOWSER_STATUS_DIST_CENTER; // unused\n    }\n    if (o->oDistanceToMario < 850.0f) {\n        o->oBowserStatus |= BOWSER_STATUS_DIST_MARIO; // unused\n    }\n\n    // Update Held state actions\n    switch (o->oHeldState) {\n        case HELD_FREE:\n            bowser_free_update();\n            break;\n        case HELD_HELD:\n            bowser_held_update();\n            break;\n        case HELD_THROWN:\n            bowser_thrown_dropped_update();\n            break;\n        case HELD_DROPPED:\n            bowser_thrown_dropped_update();\n            break;\n    }\n    // Adjust model to the floor\n    cur_obj_align_gfx_with_floor();\n\n    // Adjust opacity (when not dead)\n    // Mostly for the teleport action in BitFS\n    if (o->oAction != BOWSER_ACT_DEAD) {\n        if (o->oBowserTargetOpacity != o->oOpacity) {\n            // increase opacity when oBowserTargetOpacity is 255\n            if (o->oBowserTargetOpacity > o->oOpacity) {\n                o->oOpacity += 20;\n                if (o->oOpacity > 255) {\n                    o->oOpacity = 255;\n                }\n            // reduce opacity when oBowserTargetOpacity is 0\n            } else {\n                o->oOpacity -= 20;\n                if (o->oOpacity < 0) {\n                    o->oOpacity = 0;\n                }\n            }\n        }\n    }\n}\n\n/**\n * Bowser's initial values and actions\n */\nvoid bhv_bowser_init(void) {\n    s32 level;\n    // Set \"reaction\" value\n    // It goes true when Bowser is a non-walking state\n    o->oBowserIsReacting = TRUE;\n    // Set no transparency opacity\n    o->oOpacity = 255;\n    o->oBowserTargetOpacity = 255;\n    // Set Bowser B-param depending of the stage\n    if (gCurrLevelNum == LEVEL_BOWSER_2) {\n        level = BOWSER_BP_BITFS;\n    } else if (gCurrLevelNum == LEVEL_BOWSER_3) {\n        level = BOWSER_BP_BITS;\n    } else { // LEVEL_BOWSER_1\n        level = BOWSER_BP_BITDW;\n    }\n    o->oBhvParams2ndByte = level;\n    // Set health and rainbow light depending of the level\n    o->oBowserRainbowLight = sBowserRainbowLight[level];\n    o->oHealth = sBowserHealth[level];\n    // Start camera event, this event is not defined so maybe\n    // the \"start arena\" cutscene was originally called this way\n    cur_obj_start_cam_event(o, CAM_EVENT_BOWSER_INIT);\n    o->oAction = BOWSER_ACT_WAIT;\n    // Set eyes status\n    o->oBowserEyesTimer = 0;\n    o->oBowserEyesShut = FALSE;\n}\n\nGfx *geo_update_body_rot_from_parent(s32 callContext, UNUSED struct GraphNode *node, Mat4 mtx) {\n    if (callContext == GEO_CONTEXT_RENDER) {\n        Mat4 mtx2;\n        struct Object *obj = (struct Object *) gCurGraphNodeObject;\n        if (obj->prevObj != NULL) {\n            create_transformation_from_matrices(mtx2, mtx, *gCurGraphNodeCamera->matrixPtr);\n            obj_update_pos_from_parent_transformation(mtx2, obj->prevObj);\n            obj_set_gfx_pos_from_pos(obj->prevObj);\n        }\n    }\n\n    return NULL;\n}\n\n/**\n * Bowser's eyes Geo-Switch-Case IDs, defined from Mario's POV\n */\nenum BowserEyesGSCId {\n    /*0x00*/ BOWSER_EYES_OPEN,\n    /*0x01*/ BOWSER_EYES_HALF_CLOSED,\n    /*0x02*/ BOWSER_EYES_CLOSED,\n    /*0x03*/ BOWSER_EYES_LEFT,\n    /*0x04*/ BOWSER_EYES_FAR_LEFT,\n    /*0x05*/ BOWSER_EYES_RIGHT,\n    /*0x06*/ BOWSER_EYES_FAR_RIGHT,\n    /*0x07*/ BOWSER_EYES_DERP, // unused\n    /*0x08*/ BOWSER_EYES_CROSS, // unused\n    /*0x08*/ BOWSER_EYES_RESET // set eyes back to open\n};\n\n/**\n * Controls Bowser's eye open stage, including blinking and look directions\n */\nvoid bowser_open_eye_switch(struct Object *obj, struct GraphNodeSwitchCase *switchCase) {\n    s32 eyeCase;\n    s16 angleFromMario;\n\n    angleFromMario = abs_angle_diff(obj->oMoveAngleYaw, obj->oAngleToMario);\n    eyeCase = switchCase->selectedCase;\n\n    switch (eyeCase) {\n        case BOWSER_EYES_OPEN:\n            // Mario is in Bowser's field of view\n            if (angleFromMario > 0x2000) {\n                if (obj->oAngleVelYaw > 0) {\n                    switchCase->selectedCase = BOWSER_EYES_RIGHT;\n                }\n                if (obj->oAngleVelYaw < 0) {\n                    switchCase->selectedCase = BOWSER_EYES_LEFT;\n                }\n            }\n            // Half close, start blinking\n            if (obj->oBowserEyesTimer > 50) {\n                switchCase->selectedCase = BOWSER_EYES_HALF_CLOSED;\n            }\n            break;\n\n        case BOWSER_EYES_HALF_CLOSED:\n            // Close, blinking\n            if (obj->oBowserEyesTimer > 2) {\n                switchCase->selectedCase = BOWSER_EYES_CLOSED;\n            }\n            break;\n\n        case BOWSER_EYES_CLOSED:\n            // Reset blinking\n            if (obj->oBowserEyesTimer > 2) {\n                switchCase->selectedCase = BOWSER_EYES_RESET;\n            }\n            break;\n\n        case BOWSER_EYES_RESET:\n            // Open, no longer blinking\n            if (obj->oBowserEyesTimer > 2) {\n                switchCase->selectedCase = BOWSER_EYES_OPEN;\n            }\n            break;\n\n        case BOWSER_EYES_RIGHT:\n            // Look more on the right if angle didn't change\n            // Otherwise, look at the center (open)\n            if (obj->oBowserEyesTimer > 2) {\n                switchCase->selectedCase = BOWSER_EYES_FAR_RIGHT;\n                if (obj->oAngleVelYaw <= 0) {\n                    switchCase->selectedCase = BOWSER_EYES_OPEN;\n                }\n            }\n            break;\n\n        case BOWSER_EYES_FAR_RIGHT:\n            // Look close right if angle was drastically changed\n            if (obj->oAngleVelYaw <= 0) {\n                switchCase->selectedCase = BOWSER_EYES_RIGHT;\n            }\n            break;\n\n        case BOWSER_EYES_LEFT:\n            // Look more on the left if angle didn't change\n            // Otherwise, look at the center (open)\n            if (obj->oBowserEyesTimer > 2) {\n                switchCase->selectedCase = BOWSER_EYES_FAR_LEFT;\n                if (obj->oAngleVelYaw >= 0) {\n                    switchCase->selectedCase = BOWSER_EYES_OPEN;\n                }\n            }\n            break;\n\n        case BOWSER_EYES_FAR_LEFT:\n            // Look close left if angle was drastically changed\n            if (obj->oAngleVelYaw >= 0) {\n                switchCase->selectedCase = BOWSER_EYES_LEFT;\n            }\n            break;\n\n        default:\n            switchCase->selectedCase = BOWSER_EYES_OPEN;\n    }\n\n    // Reset timer if eye case has changed\n    if (switchCase->selectedCase != eyeCase) {\n        obj->oBowserEyesTimer = -1;\n    }\n}\n\n/**\n * Geo switch for controlling the state of Bowser's eye direction and open/closed\n * state. Checks whether oBowserEyesShut is TRUE and closes eyes if so and processes\n * direction otherwise.\n */\nGfx *geo_switch_bowser_eyes(s32 callContext, struct GraphNode *node, UNUSED Mat4 *mtx) {\n    UNUSED s16 eyeShut;\n    UNUSED u8 filler[4];\n    struct Object *obj = (struct Object *) gCurGraphNodeObject;\n    struct GraphNodeSwitchCase *switchCase = (struct GraphNodeSwitchCase *) node;\n\n    if (callContext == GEO_CONTEXT_RENDER) {\n        if (gCurGraphNodeHeldObject != NULL) {\n            obj = gCurGraphNodeHeldObject->objNode;\n        }\n\n        switch (eyeShut = obj->oBowserEyesShut) {\n            case FALSE: // eyes open, handle eye looking direction\n                bowser_open_eye_switch(obj, switchCase);\n                break;\n            case TRUE: // eyes closed, blinking\n                switchCase->selectedCase = BOWSER_EYES_CLOSED;\n                break;\n        }\n\n        obj->oBowserEyesTimer++;\n    }\n\n    return NULL;\n}\n\n/**\n * Geo switch that sets Bowser's Rainbow coloring (in BitS)\n */\nGfx *geo_bits_bowser_coloring(s32 callContext, struct GraphNode *node, UNUSED s32 context) {\n    Gfx *gfxHead = NULL;\n    Gfx *gfx;\n\n    if (callContext == GEO_CONTEXT_RENDER) {\n        struct Object *obj = (struct Object *) gCurGraphNodeObject;\n        struct GraphNodeGenerated *graphNode = (struct GraphNodeGenerated *) node;\n\n        if (gCurGraphNodeHeldObject != NULL) {\n            obj = gCurGraphNodeHeldObject->objNode;\n        }\n\n        // Set layers if object is transparent or not\n        if (obj->oOpacity == 255) {\n            graphNode->fnNode.node.flags = (graphNode->fnNode.node.flags & 0xFF) | (LAYER_OPAQUE << 8);\n        } else {\n            graphNode->fnNode.node.flags = (graphNode->fnNode.node.flags & 0xFF) | (LAYER_TRANSPARENT << 8);\n        }\n\n        gfx = gfxHead = alloc_display_list(2 * sizeof(Gfx));\n\n        // If TRUE, clear lighting to give rainbow color\n        if (obj->oBowserRainbowLight) {\n            gSPClearGeometryMode(gfx++, G_LIGHTING);\n        }\n\n        gSPEndDisplayList(gfx);\n    }\n\n    return gfxHead;\n}\n"
  },
  {
    "path": "src/game/behaviors/bowser_bomb.inc.c",
    "content": "// bowser_bomb.inc.c\n\nvoid bhv_bowser_bomb_loop(void) {\n    if (obj_check_if_collided_with_object(o, gMarioObject) == TRUE) {\n        o->oInteractStatus &= ~INT_STATUS_INTERACTED;\n        spawn_object(o, MODEL_EXPLOSION, bhvExplosion);\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n\n    if (o->oInteractStatus & INT_STATUS_HIT_MINE) {\n        spawn_object(o, MODEL_BOWSER_FLAMES, bhvBowserBombExplosion);\n        create_sound_spawner(SOUND_GENERAL_BOWSER_BOMB_EXPLOSION);\n        set_camera_shake_from_point(SHAKE_POS_LARGE, o->oPosX, o->oPosY, o->oPosZ);\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n\n    set_object_visibility(o, 7000);\n}\n\nvoid bhv_bowser_bomb_explosion_loop(void) {\n    cur_obj_scale((f32) o->oTimer / 14.0f * 9.0 + 1.0);\n\n    if ((o->oTimer % 4 == 0) && (o->oTimer < 20)) {\n        struct Object *mineSmoke = spawn_object(o, MODEL_BOWSER_SMOKE, bhvBowserBombSmoke);\n        mineSmoke->oPosX += random_float() * 600.0f - 400.0f;\n        mineSmoke->oPosZ += random_float() * 600.0f - 400.0f;\n        mineSmoke->oVelY += random_float() * 10.0f;\n    }\n\n    if (o->oTimer % 2 == 0) {\n        o->oAnimState++;\n    }\n\n    if (o->oTimer == 28) {\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n}\n\nvoid bhv_bowser_bomb_smoke_loop(void) {\n    cur_obj_scale((f32) o->oTimer / 14.0f * 9.0 + 1.0);\n\n    if (o->oTimer % 2 == 0) {\n        o->oAnimState++;\n    }\n\n    o->oOpacity -= 10;\n\n    if (o->oOpacity < 10) {\n        o->oOpacity = 0;\n    }\n\n    o->oPosY += o->oVelY;\n\n    if (o->oTimer == 28) {\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/bowser_falling_platform.inc.c",
    "content": "// bowser_falling_platform.inc.c\n\nstruct BowserFallingPlatformData {\n    const Collision *collision;\n    s16 posX;\n    s16 posZ;\n    s16 angle;\n};\n\nstruct BowserFallingPlatformData sBowserFallingPlatform[] = {\n    { NULL, 0, 0, 0 },\n    { bowser_3_seg7_collision_07004B94,  -800, -1000, -20992 },\n    { bowser_3_seg7_collision_07004C18, -1158,   390, -18432 },\n    { bowser_3_seg7_collision_07004C9C, -1158,   390,  -7680 },\n    { bowser_3_seg7_collision_07004D20,     0,  1240,  -6144 },\n    { bowser_3_seg7_collision_07004DA4,     0,  1240,   6144 },\n    { bowser_3_seg7_collision_07004E28,  1158,   390,   7680 },\n    { bowser_3_seg7_collision_07004EAC,  1158,   390,  18432 },\n    { bowser_3_seg7_collision_07004F30,   800, -1000,  20992 },\n    { bowser_3_seg7_collision_07004FB4,   800, -1000, -31744 },\n    { bowser_3_seg7_collision_07005038,  -800, -1000,  31744 },\n};\n\nvoid falling_bowser_plat_act_start(void) {\n    o->oBitSPlatformBowser = cur_obj_nearest_object_with_behavior(bhvBowser);\n    obj_set_collision_data(o, sBowserFallingPlatform[o->oBhvParams2ndByte].collision);\n    if (o->oBitSPlatformBowser != NULL) {\n        o->oAction = BOWSER_BITS_PLAT_ACT_CHECK;\n    }\n}\n\nvoid falling_bowser_plat_act_check(void) {\n    UNUSED u8 filler[4];\n    struct Object *bowser = o->oBitSPlatformBowser;\n\n    if (bowser->platform == o) {\n        if (bowser->oAction == BOWSER_ACT_BIG_JUMP\n            && bowser->oBowserStatus & BOWSER_STATUS_BIG_JUMP) {\n            o->oAction = BOWSER_BITS_PLAT_ACT_FALL;\n        }\n    }\n\n    if (bowser->oHealth == 1\n        && (bowser->oAction == BOWSER_ACT_DANCE || bowser->oHeldState != HELD_FREE)) {\n        o->oSubAction = 1;\n    }\n\n    if (o->oSubAction == 0) {\n        o->oBitSPlatformTimer = 0;\n    } else {\n        if ((gDebugInfo[DEBUG_PAGE_EFFECTINFO][6] + 20)\n            * (o->oBhvParams2ndByte - 1) < o->oBitSPlatformTimer) {\n            o->oAction = BOWSER_BITS_PLAT_ACT_FALL;\n        }\n        o->oBitSPlatformTimer++;\n    }\n}\n\nvoid falling_bowser_plat_act_fall(void) {\n    Vec3f pos;\n    s16 angle;\n    f32 val;\n    UNUSED struct Object *bowser = o->oBitSPlatformBowser;\n\n    if (o->oTimer == 0 || o->oTimer == 22) {\n        cur_obj_play_sound_2(SOUND_GENERAL_BOWSER_PLATFORM_2);\n    }\n\n    if (o->oTimer < 22) {\n        set_environmental_camera_shake(SHAKE_ENV_FALLING_BITS_PLAT);\n        o->oVelY = 8.0f;\n        o->oGravity = 0.0f;\n    } else {\n        o->oGravity = -4.0f;\n    }\n\n    if (!(o->oTimer & 1) && o->oTimer < 14) {\n        angle = sBowserFallingPlatform[o->oBhvParams2ndByte].angle\n                    + (gDebugInfo[DEBUG_PAGE_EFFECTINFO][1] << 8);\n        val = -(o->oTimer / 2) * 290 + 1740;\n        vec3f_copy_2(pos, &o->oPosX);\n        o->oPosX = sBowserFallingPlatform[o->oBhvParams2ndByte].posX + sins(angle + 0x14B0) * val;\n        o->oPosZ = sBowserFallingPlatform[o->oBhvParams2ndByte].posZ + coss(angle + 0x14B0) * val;\n        o->oPosY = 307.0f;\n        spawn_mist_particles_variable(4, 0, 100.0f);\n        o->oPosX = sBowserFallingPlatform[o->oBhvParams2ndByte].posX + sins(angle - 0x14B0) * val;\n        o->oPosZ = sBowserFallingPlatform[o->oBhvParams2ndByte].posZ + coss(angle - 0x14B0) * val;\n        spawn_mist_particles_variable(4, 0, 100.0f);\n        vec3f_copy_2(&o->oPosX, pos);\n    }\n\n    cur_obj_move_using_fvel_and_gravity();\n\n    if (o->oTimer > 300) {\n        obj_mark_for_deletion(o);\n    }\n}\n\nvoid (*sFallingBowserPlatformActions[])(void) = {\n    falling_bowser_plat_act_start,\n    falling_bowser_plat_act_check,\n    falling_bowser_plat_act_fall,\n};\n\nvoid bhv_falling_bowser_platform_loop(void) {\n    cur_obj_call_action_function(sFallingBowserPlatformActions);\n}\n"
  },
  {
    "path": "src/game/behaviors/bowser_flame.inc.c",
    "content": "// bowser_flame.inc.c\n\nstruct ObjectHitbox sGrowingBowserFlameHitbox = {\n    /* interactType:      */ INTERACT_FLAME,\n    /* downOffset:        */ 20,\n    /* damageOrCoinValue: */ 1,\n    /* health:            */ 0,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 10,\n    /* height:            */ 40,\n    /* hurtboxRadius:     */ 0,\n    /* hurtboxHeight:     */ 0,\n};\n\nstruct ObjectHitbox sBowserFlameHitbox = {\n    /* interactType:      */ INTERACT_FLAME,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 1,\n    /* health:            */ 0,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 10,\n    /* height:            */ 40,\n    /* hurtboxRadius:     */ 0,\n    /* hurtboxHeight:     */ 0,\n};\n\nvoid bowser_flame_despawn(void) {\n    obj_mark_for_deletion(o);\n    spawn_object_with_scale(o, MODEL_NONE, bhvBlackSmokeUpward, 1.0f);\n    if (random_float() < 0.1) {\n        spawn_object(o, MODEL_YELLOW_COIN, bhvTemporaryYellowCoin);\n    }\n}\n\ns32 bowser_flame_should_despawn(s32 maxTime) {\n    if (maxTime < o->oTimer) {\n        return TRUE;\n    }\n\n    // Flames should despawn if they fall off the arena.\n    if (o->oFloorType == SURFACE_BURNING) {\n        return TRUE;\n    }\n    if (o->oFloorType == SURFACE_DEATH_PLANE) {\n        return TRUE;\n    }\n\n    return FALSE;\n}\n\nvoid bhv_flame_bowser_init(void) {\n    o->oAnimState = (s32)(random_float() * 10.0f);\n    o->oMoveAngleYaw = random_u16();\n    o->oVelY = random_float() < 0.2 ? 80.0f : 20.0f;\n    o->oForwardVel = 10.0f;\n    o->oGravity = -1.0f;\n    o->oFlameScale = random_float() + 1.0f;\n}\n\nvoid bhv_flame_large_burning_out_init(void) {\n    o->oAnimState = (s32)(random_float() * 10.0f);\n    o->oMoveAngleYaw = random_u16();\n    o->oVelY = 10.0f;\n    o->oForwardVel = 0.0f;\n    o->oFlameScale = 7.0f;\n}\n\nvoid bowser_flame_move(void) {\n    s32 timer = ((o->oFlameSpeedTimerOffset + gGlobalTimer) & 0x3F) << 10;\n    o->oPosX += sins(o->oMoveAngleYaw) * sins(timer) * 4.0f;\n    o->oPosZ += coss(o->oMoveAngleYaw) * sins(timer) * 4.0f;\n}\n\nvoid bhv_flame_bowser_loop(void) {\n    cur_obj_update_floor_and_walls();\n    cur_obj_move_standard(78);\n\n    if (o->oVelY < -4.0f) {\n        o->oVelY = -4.0f;\n    }\n\n    if (o->oAction == 0) {\n        cur_obj_become_intangible();\n        bowser_flame_move();\n\n        if (o->oMoveFlags & OBJ_MOVE_LANDED) {\n            o->oAction++;\n            if (cur_obj_has_behavior(bhvFlameLargeBurningOut)) {\n                o->oFlameScale = 8.0f;\n            } else {\n                o->oFlameScale = random_float() * 2 + 6.0f;\n            }\n            o->oForwardVel = 0;\n            o->oVelY = 0;\n            o->oGravity = 0;\n        }\n    } else {\n        cur_obj_become_tangible();\n\n        if (o->oTimer > o->oFlameScale * 10 + 5.0f) {\n            o->oFlameScale -= 0.15;\n            if (o->oFlameScale <= 0) {\n                bowser_flame_despawn();\n            }\n        }\n    }\n\n    cur_obj_scale(o->oFlameScale);\n    o->oGraphYOffset = o->header.gfx.scale[1] * 14.0f;\n    obj_set_hitbox(o, &sBowserFlameHitbox);\n}\n\nvoid bhv_flame_moving_forward_growing_init(void) {\n    o->oForwardVel = 30.0f;\n    obj_translate_xz_random(o, 80.0f);\n    o->oAnimState = (s32)(random_float() * 10.0f);\n    o->oFlameScale = 3.0f;\n}\n\nvoid bhv_flame_moving_forward_growing_loop(void) {\n    UNUSED u8 filler[4];\n    UNUSED struct Object *flame;\n\n    obj_set_hitbox(o, &sGrowingBowserFlameHitbox);\n    o->oFlameScale = o->oFlameScale + 0.5;\n    cur_obj_scale(o->oFlameScale);\n\n    if (o->oMoveAnglePitch > 0x800) {\n        o->oMoveAnglePitch -= 0x200;\n    }\n\n    cur_obj_set_pos_via_transform();\n    cur_obj_update_floor_height();\n\n    if (o->oFlameScale > 30.0f) {\n        obj_mark_for_deletion(o);\n    }\n\n    if (o->oPosY < o->oFloorHeight) {\n        o->oPosY = o->oFloorHeight;\n        flame = spawn_object(o, MODEL_RED_FLAME, bhvFlameBowser);\n        obj_mark_for_deletion(o);\n    }\n}\n\nvoid bhv_flame_floating_landing_init(void) {\n    o->oAnimState = (s32)(random_float() * 10.0f);\n    o->oMoveAngleYaw = random_u16();\n    if (o->oBhvParams2ndByte != 0) {\n        o->oForwardVel = random_float() * 5.0f;\n    } else {\n        o->oForwardVel = random_float() * 70.0f;\n    }\n    o->oVelY = random_float() * 20.0f;\n    o->oGravity = -1.0f;\n    o->oFlameSpeedTimerOffset = random_float() * 64.0f;\n}\n\nf32 sFlameFloatingYLimit[] = { -8.0f, -6.0f, -3.0f };\n\nvoid bhv_flame_floating_landing_loop(void) {\n    UNUSED u8 filler[4];\n\n    cur_obj_update_floor_and_walls();\n    cur_obj_move_standard(78);\n    bowser_flame_move();\n\n    if (bowser_flame_should_despawn(900)) {\n        obj_mark_for_deletion(o);\n    }\n\n    if (o->oVelY < sFlameFloatingYLimit[o->oBhvParams2ndByte]) {\n        o->oVelY = sFlameFloatingYLimit[o->oBhvParams2ndByte];\n    }\n\n    if (o->oMoveFlags & OBJ_MOVE_LANDED) {\n        if (o->oBhvParams2ndByte == 0) {\n            spawn_object(o, MODEL_RED_FLAME, bhvFlameLargeBurningOut);\n        } else {\n            spawn_object(o, MODEL_NONE, bhvBlueFlamesGroup); //? wonder if they meant MODEL_BLUE_FLAME?\n        }\n        obj_mark_for_deletion(o);\n    }\n\n    o->oGraphYOffset = o->header.gfx.scale[1] * 14.0f;\n}\n\nvoid bhv_blue_bowser_flame_init(void) {\n    obj_translate_xz_random(o, 80.0f);\n    o->oAnimState = (s32)(random_float() * 10.0f);\n    o->oVelY = 7.0f;\n    o->oForwardVel = 35.0f;\n    o->oFlameScale = 3.0f;\n    o->oFlameUnusedRand = random_float() * 0.5;\n    o->oGravity = 1.0f;\n    o->oFlameSpeedTimerOffset = (s32)(random_float() * 64.0f);\n}\n\nvoid bhv_blue_bowser_flame_loop(void) {\n    s32 i;\n\n    obj_set_hitbox(o, &sGrowingBowserFlameHitbox);\n\n    if (o->oFlameScale < 16.0f) {\n        o->oFlameScale = o->oFlameScale + 0.5;\n    }\n\n    cur_obj_scale(o->oFlameScale);\n    cur_obj_update_floor_and_walls();\n    cur_obj_move_standard(78);\n\n    if (o->oTimer > 20) {\n        if (o->oBhvParams2ndByte == 0) {\n            for (i = 0; i < 3; i++) {\n                spawn_object_relative_with_scale(0, 0, 0, 0, 5.0f, o, MODEL_RED_FLAME,\n                                                 bhvFlameFloatingLanding);\n            }\n        } else {\n            spawn_object_relative_with_scale(1, 0, 0, 0, 8.0f, o, MODEL_BLUE_FLAME,\n                                             bhvFlameFloatingLanding);\n            spawn_object_relative_with_scale(2, 0, 0, 0, 8.0f, o, MODEL_BLUE_FLAME,\n                                             bhvFlameFloatingLanding);\n        }\n        obj_mark_for_deletion(o);\n    }\n}\n\nvoid bhv_flame_bouncing_init(void) {\n    o->oAnimState = (s32)(random_float() * 10.0f);\n    o->oVelY = 30.0f;\n    o->oForwardVel = 20.0f;\n    o->oFlameScale = o->header.gfx.scale[0];\n    o->oFlameSpeedTimerOffset = (s32)(random_float() * 64.0f);\n}\n\nvoid bhv_flame_bouncing_loop(void) {\n    struct Object *bowser;\n\n    if (o->oTimer == 0) {\n        o->oFlameBowser = cur_obj_nearest_object_with_behavior(bhvBowser);\n    }\n\n    bowser = o->oFlameBowser;\n    o->oForwardVel = 15.0f;\n    o->oBounciness = -1.0f;\n    cur_obj_scale(o->oFlameScale);\n    obj_set_hitbox(o, &sGrowingBowserFlameHitbox);\n    cur_obj_update_floor_and_walls();\n    cur_obj_move_standard(78);\n\n    if (bowser_flame_should_despawn(300)) {\n        obj_mark_for_deletion(o);\n    }\n\n    if (bowser != NULL) {\n        if (bowser->oHeldState == HELD_FREE) {\n            if (lateral_dist_between_objects(o, bowser) < 300.0f) {\n                obj_mark_for_deletion(o);\n            }\n        }\n    }\n}\n\nvoid bhv_blue_flames_group_loop(void) {\n    struct Object *flame;\n    s32 i;\n\n    if (o->oTimer == 0) {\n        o->oMoveAngleYaw = obj_angle_to_object(o, gMarioObject);\n        o->oBlueFlameNextScale = 5.0f;\n    }\n\n    if (o->oTimer < 16) {\n        if (!(o->oTimer & 1)) {\n            for (i = 0; i < 3; i++) {\n                flame = spawn_object(o, MODEL_BLUE_FLAME, bhvFlameBouncing);\n                flame->oMoveAngleYaw += i * 0x5555;\n                flame->header.gfx.scale[0] = o->oBlueFlameNextScale;\n            }\n            o->oBlueFlameNextScale -= 0.5;\n        }\n    } else {\n        obj_mark_for_deletion(o);\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/bowser_key.inc.c",
    "content": "// bowser_key.inc.c\n\nstruct ObjectHitbox sBowserKeyHitbox = {\n    /* interactType:      */ INTERACT_STAR_OR_KEY,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 0,\n    /* health:            */ 0,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 160,\n    /* height:            */ 100,\n    /* hurtboxRadius:     */ 160,\n    /* hurtboxHeight:     */ 100,\n};\n\nvoid bhv_bowser_key_loop(void) {\n    cur_obj_scale(0.5f);\n\n    if (o->oAngleVelYaw > 0x400) {\n        o->oAngleVelYaw -= 0x100;\n    }\n\n    o->oFaceAngleYaw += o->oAngleVelYaw;\n    o->oFaceAngleRoll = -0x4000;\n    o->oGraphYOffset = 165.0f;\n\n    if (o->oAction == 0) {\n        if (o->oTimer == 0) {\n            o->oVelY = 70.0f;\n        }\n\n        spawn_sparkle_particles(3, 200, 80, -60);\n        spawn_object(o, MODEL_NONE, bhvSparkleSpawn);\n        cur_obj_update_floor_and_walls();\n        cur_obj_move_standard(78);\n\n        if (o->oMoveFlags & OBJ_MOVE_ON_GROUND) {\n            o->oAction++;\n        } else if (o->oMoveFlags & OBJ_MOVE_LANDED) {\n            cur_obj_play_sound_2(SOUND_GENERAL_UNKNOWN3);\n        }\n    } else {\n        obj_set_hitbox(o, &sBowserKeyHitbox);\n\n        if (o->oInteractStatus & INT_STATUS_INTERACTED) {\n            mark_obj_for_deletion(o);\n            o->oInteractStatus = 0;\n        }\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/bowser_key_cutscene.inc.c",
    "content": "// bowser_key_cutscene.inc.c\n\nGfx *geo_scale_bowser_key(s32 run, struct GraphNode *node, UNUSED f32 mtx[4][4]) {\n    if (run == TRUE) {\n        struct Object *obj = (struct Object *) gCurGraphNodeObject;\n        ((struct GraphNodeScale *) node->next)->scale = obj->oBowserKeyScale;\n    }\n    return NULL;\n}\n\nvoid bhv_bowser_key_unlock_door_loop(void) {\n    s32 animFrame = o->header.gfx.animInfo.animFrame;\n\n    cur_obj_init_animation_with_sound(0);\n\n    if (animFrame < 38) {\n        o->oBowserKeyScale = 0.0f;\n    } else if (animFrame < 49) {\n        o->oBowserKeyScale = 0.2f;\n    } else if (animFrame < 58) {\n        o->oBowserKeyScale = (animFrame - 53) * 0.11875f + 0.2; // 0.11875?\n    } else if (animFrame < 59) {\n        o->oBowserKeyScale = 1.1f;\n    } else if (animFrame < 60) {\n        o->oBowserKeyScale = 1.05f;\n    } else {\n        o->oBowserKeyScale = 1.0f;\n    }\n\n    if (o->oTimer > 150) {\n        obj_mark_for_deletion(o);\n    }\n}\n\nvoid bhv_bowser_key_course_exit_loop(void) {\n    s32 animFrame = o->header.gfx.animInfo.animFrame;\n\n    cur_obj_init_animation_with_sound(1);\n\n    if (animFrame < 38) {\n        o->oBowserKeyScale = 0.2f;\n    } else if (animFrame < 52) {\n        o->oBowserKeyScale = (animFrame - 42) * 0.042857f + 0.2; // TODO 3/70?\n    } else if (animFrame < 94) {\n        o->oBowserKeyScale = 0.8f;\n    } else if (animFrame < 101) {\n        o->oBowserKeyScale = (101 - animFrame) * 0.085714f + 0.2; // TODO 6/70?\n    } else {\n        o->oBowserKeyScale = 0.2f;\n    }\n\n    if (o->oTimer > 138) {\n        obj_mark_for_deletion(o);\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/bowser_puzzle_piece.inc.c",
    "content": "\n/**\n * Behavior for the sliding Bowser puzzle in Lethal Lava Land.\n */\n\n/*\n * The pieces move in this order:\n *\n *   1, 2, 5, 6, 10, 9, 13, 12, 8, 7, 3, 4\n *\n * Once they reach the end of the routine they follow it backwards until the\n *   puzzle is complete again.\n *\n * Note that pieces 11 and 14 do not move.\n */\nstatic s8 sPieceActions01[] = { 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n                                2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, -1 };\nstatic s8 sPieceActions02[] = { 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n                                2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, -1 };\nstatic s8 sPieceActions05[] = { 2, 2, 2, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n                                2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, -1 };\nstatic s8 sPieceActions06[] = { 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n                                2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, -1 };\nstatic s8 sPieceActions10[] = { 2, 2, 2, 2, 2, 5, 2, 2, 2, 2, 2, 2, 2, 2,\n                                2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, -1 };\nstatic s8 sPieceActions09[] = { 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2,\n                                2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, -1 };\nstatic s8 sPieceActions13[] = { 2, 2, 2, 2, 2, 2, 2, 5, 2, 2, 2, 2, 2, 2,\n                                2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, -1 };\nstatic s8 sPieceActions12[] = { 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2,\n                                2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, -1 };\nstatic s8 sPieceActions08[] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2,\n                                2, 2, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, -1 };\nstatic s8 sPieceActions07[] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2,\n                                2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -1 };\nstatic s8 sPieceActions03[] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 2,\n                                5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -1 };\nstatic s8 sPieceActions04[] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 4,\n                                2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -1 };\nstatic s8 sPieceActions11[] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n                                2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -1 };\nstatic s8 sPieceActions14[] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n                                2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -1 };\n\nstruct BowserPuzzlePiece {\n    u8 model;\n    s8 xOffset;\n    s8 zOffset;\n    s8 initialAction;\n    s8 *actionList;\n};\n\n/*\n * The puzzle pieces are initially laid out in the following manner:\n *\n *       +---+---+---+\n *       | 1 | 2 | * |\n *   +---+---+---+---+\n *   | 3 | 4 | 5 | 6 |\n *   +---+---+---+---+\n *   | 7 | 8 | 9 |10 |\n *   +---+---+---+---+\n *   |11 |12 |13 |14 |\n *   +---+---+---+---+\n *\n * (* = star platform)\n */\nstatic struct BowserPuzzlePiece sBowserPuzzlePieces[] = {\n    { MODEL_LLL_BOWSER_PIECE_1, -5, -15, 1, sPieceActions01 },\n    { MODEL_LLL_BOWSER_PIECE_2, 5, -15, 0, sPieceActions02 },\n    { MODEL_LLL_BOWSER_PIECE_3, -15, -5, 0, sPieceActions03 },\n    { MODEL_LLL_BOWSER_PIECE_4, -5, -5, 0, sPieceActions04 },\n    { MODEL_LLL_BOWSER_PIECE_5, 5, -5, 0, sPieceActions05 },\n    { MODEL_LLL_BOWSER_PIECE_6, 15, -5, 0, sPieceActions06 },\n    { MODEL_LLL_BOWSER_PIECE_7, -15, 5, 0, sPieceActions07 },\n    { MODEL_LLL_BOWSER_PIECE_8, -5, 5, 0, sPieceActions08 },\n    { MODEL_LLL_BOWSER_PIECE_9, 5, 5, 0, sPieceActions09 },\n    { MODEL_LLL_BOWSER_PIECE_10, 15, 5, 0, sPieceActions10 },\n    { MODEL_LLL_BOWSER_PIECE_11, -15, 15, 0, sPieceActions11 },\n    { MODEL_LLL_BOWSER_PIECE_12, -5, 15, 0, sPieceActions12 },\n    { MODEL_LLL_BOWSER_PIECE_13, 5, 15, 0, sPieceActions13 },\n    { MODEL_LLL_BOWSER_PIECE_14, 15, 15, 0, sPieceActions14 }\n};\n\n/**\n * Spawn a single puzzle piece.\n */\nvoid bhv_lll_bowser_puzzle_spawn_piece(s16 model, const BehaviorScript *behavior,\n                                       f32 xOffset, f32 zOffset,\n                                       s8 initialAction, s8 *actionList) {\n    struct Object *puzzlePiece = spawn_object(o, model, behavior);\n    puzzlePiece->oPosX += xOffset;\n    puzzlePiece->oPosY += 50.0f;\n    puzzlePiece->oPosZ += zOffset;\n    puzzlePiece->oAction = initialAction; // This action never gets executed.\n    puzzlePiece->oBowserPuzzlePieceActionList = actionList;\n    puzzlePiece->oBowserPuzzlePieceNextAction = actionList;\n}\n\n/**\n * Spawn the 14 puzzle pieces.\n */\nvoid bhv_lll_bowser_puzzle_spawn_pieces(f32 pieceWidth) {\n    s32 i;\n\n    // Spawn all 14 puzzle pieces.\n    for (i = 0; i < 14; i++) {\n        bhv_lll_bowser_puzzle_spawn_piece(sBowserPuzzlePieces[i].model, bhvLLLBowserPuzzlePiece,\n                                          sBowserPuzzlePieces[i].xOffset * pieceWidth / 10.0f,\n                                          sBowserPuzzlePieces[i].zOffset * pieceWidth / 10.0f,\n                                          sBowserPuzzlePieces[i].initialAction,\n                                          sBowserPuzzlePieces[i].actionList);\n    }\n\n    // The pieces should only be spawned once so go to the next action.\n    o->oAction++;\n}\n\n/*\n * Does the initial spawn of the puzzle pieces and then waits to spawn 5 coins.\n */\nvoid bhv_lll_bowser_puzzle_loop(void) {\n    s32 i;\n\n    switch (o->oAction) {\n        case BOWSER_PUZZLE_ACT_SPAWN_PIECES:\n            bhv_lll_bowser_puzzle_spawn_pieces(480.0f);\n            break;\n\n        case BOWSER_PUZZLE_ACT_WAIT_FOR_COMPLETE:\n            // If both completion flags are set and Mario is within 1000 units...\n            if (o->oBowserPuzzleCompletionFlags == 3 && o->oDistanceToMario < 1000.0f) {\n                // Spawn 5 coins.\n                for (i = 0; i < 5; i++) {\n                    UNUSED struct Object *coin =\n                        spawn_object(o, MODEL_YELLOW_COIN, bhvSingleCoinGetsSpawned);\n                }\n\n                // Reset completion flags (even though they never get checked again).\n                o->oBowserPuzzleCompletionFlags = 0;\n\n                // Go to next action so we don't spawn 5 coins ever again.\n                o->oAction++;\n            }\n            break;\n\n        case BOWSER_PUZZLE_ACT_DONE:\n            break;\n    }\n}\n\n/*\n * Action 0 is never executed since it is not defined in any action lists.\n */\nvoid bhv_lll_bowser_puzzle_piece_action_0(void) {\n}\n\n/*\n * Action 1 is never executed since it is not defined in any action lists.\n */\nvoid bhv_lll_bowser_puzzle_piece_action_1(void) {\n    o->oPosY += 50.0f;\n    o->oAction = 3;\n}\n\n/*\n * Update the puzzle piece.\n */\nvoid bhv_lll_bowser_puzzle_piece_update(void) {\n    s8 *nextAction = o->oBowserPuzzlePieceNextAction;\n\n    // If Mario is standing on this puzzle piece, set a flag in the parent.\n    if (gMarioObject->platform == o) {\n        o->parentObj->oBowserPuzzleCompletionFlags = 1;\n    }\n\n    // If we should advance to the next action...\n    if (o->oBowserPuzzlePieceContinuePerformingAction == 0) {\n        // Start doing the next action.\n        cur_obj_change_action(*nextAction);\n\n        // Advance the pointer to the next action.\n        nextAction++;\n        o->oBowserPuzzlePieceNextAction = nextAction;\n\n        // If we're at the end of the list...\n        if (*nextAction == -1) {\n            // Set the other completion flag in the parent.\n            o->parentObj->oBowserPuzzleCompletionFlags |= 2;\n\n            // The next action is the first action in the list again.\n            o->oBowserPuzzlePieceNextAction = o->oBowserPuzzlePieceActionList;\n        }\n\n        // Keep doing this action until it's complete.\n        o->oBowserPuzzlePieceContinuePerformingAction = 1;\n    }\n}\n\nvoid bhv_lll_bowser_puzzle_piece_move(f32 xOffset, f32 zOffset, s32 duration, UNUSED s32 unused) {\n    // For the first 20 frames, shake the puzzle piece up and down.\n    if (o->oTimer < 20) {\n        if (o->oTimer % 2) {\n            o->oBowserPuzzlePieceOffsetY = 0.0f;\n        } else {\n            o->oBowserPuzzlePieceOffsetY = -6.0f;\n        }\n    } else {\n        // On frame 20, play the shifting sound.\n        if (o->oTimer == 20) {\n            cur_obj_play_sound_2(SOUND_OBJ2_BOWSER_PUZZLE_PIECE_MOVE);\n        }\n\n        // For the number of frames specified by duration, move the piece.\n        if (o->oTimer < duration + 20) {\n            o->oBowserPuzzlePieceOffsetX += xOffset;\n            o->oBowserPuzzlePieceOffsetZ += zOffset;\n        } else {\n            // This doesn't actually accomplish anything since\n            // cur_obj_change_action is going to be called before the\n            // next action is performed anyway.\n            o->oAction = 2;\n\n            // Advance to the next action.\n            o->oBowserPuzzlePieceContinuePerformingAction = 0;\n        }\n    }\n}\n\nvoid bhv_lll_bowser_puzzle_piece_idle(void) {\n    UNUSED s32 unused;\n\n    // For the first 24 frames, do nothing.\n    if (o->oTimer < 24) {\n        unused = 0;\n    } else {\n        // Then advance to the next action.\n        o->oBowserPuzzlePieceContinuePerformingAction = 0;\n    }\n}\n\nvoid bhv_lll_bowser_puzzle_piece_move_left(void) {\n    bhv_lll_bowser_puzzle_piece_move(-120.0f, 0.0f, 4, 4);\n}\n\nvoid bhv_lll_bowser_puzzle_piece_move_right(void) {\n    bhv_lll_bowser_puzzle_piece_move(120.0f, 0.0f, 4, 5);\n}\n\nvoid bhv_lll_bowser_puzzle_piece_move_up(void) {\n    bhv_lll_bowser_puzzle_piece_move(0.0f, -120.0f, 4, 6);\n}\n\nvoid bhv_lll_bowser_puzzle_piece_move_down(void) {\n    bhv_lll_bowser_puzzle_piece_move(0.0f, 120.0f, 4, 3);\n}\n\nvoid (*sBowserPuzzlePieceActions[])(void) = {\n    bhv_lll_bowser_puzzle_piece_action_0,\n    bhv_lll_bowser_puzzle_piece_action_1,\n    bhv_lll_bowser_puzzle_piece_idle,\n    bhv_lll_bowser_puzzle_piece_move_left,\n    bhv_lll_bowser_puzzle_piece_move_right,\n    bhv_lll_bowser_puzzle_piece_move_up,\n    bhv_lll_bowser_puzzle_piece_move_down,\n};\n\nvoid bhv_lll_bowser_puzzle_piece_loop(void) {\n    bhv_lll_bowser_puzzle_piece_update();\n\n    cur_obj_call_action_function(sBowserPuzzlePieceActions);\n\n    o->oPosX = o->oBowserPuzzlePieceOffsetX + o->oHomeX;\n    o->oPosY = o->oBowserPuzzlePieceOffsetY + o->oHomeY;\n    o->oPosZ = o->oBowserPuzzlePieceOffsetZ + o->oHomeZ;\n}\n"
  },
  {
    "path": "src/game/behaviors/break_particles.inc.c",
    "content": "// break_particles.inc.c\n\nvoid spawn_triangle_break_particles(s16 numTris, s16 triModel, f32 triSize, s16 triAnimState) {\n    struct Object *triangle;\n    s32 i;\n\n    for (i = 0; i < numTris; i++) {\n        triangle = spawn_object(o, triModel, bhvBreakBoxTriangle);\n        triangle->oAnimState = triAnimState;\n        triangle->oPosY += 100.0f;\n        triangle->oMoveAngleYaw = random_u16();\n        triangle->oFaceAngleYaw = triangle->oMoveAngleYaw;\n        triangle->oFaceAnglePitch = random_u16();\n        triangle->oVelY = random_f32_around_zero(50.0f);\n\n        if (triModel == MODEL_DIRT_ANIMATION || triModel == MODEL_SL_CRACKED_ICE_CHUNK) {\n            triangle->oAngleVelPitch = 0xF00;\n            triangle->oAngleVelYaw = 0x500;\n            triangle->oForwardVel = 30.0f;\n        } else {\n            triangle->oAngleVelPitch = 0x80 * (s32)(random_float() + 50.0f);\n            triangle->oForwardVel = 30.0f;\n        }\n\n        obj_scale(triangle, triSize);\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/breakable_box.inc.c",
    "content": "// breakable_box.inc.c\n\nvoid bhv_breakable_box_loop(void) {\n    obj_set_hitbox(o, &sBreakableBoxHitbox);\n    cur_obj_set_model(MODEL_BREAKABLE_BOX_SMALL);\n\n    if (o->oTimer == 0) {\n        breakable_box_init();\n    }\n\n    if (cur_obj_was_attacked_or_ground_pounded()) {\n        obj_explode_and_spawn_coins(46.0f, 1);\n        create_sound_spawner(SOUND_GENERAL_BREAK_BOX);\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/breakable_box_small.inc.c",
    "content": "// breakable_box.inc.c\n\nstruct ObjectHitbox sBreakableBoxSmallHitbox = {\n    /* interactType:      */ INTERACT_GRABBABLE,\n    /* downOffset:        */ 20,\n    /* damageOrCoinValue: */ 0,\n    /* health:            */ 1,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 150,\n    /* height:            */ 250,\n    /* hurtboxRadius:     */ 150,\n    /* hurtboxHeight:     */ 250,\n};\n\nvoid bhv_breakable_box_small_init(void) {\n    o->oGravity = 2.5f;\n    o->oFriction = 0.99f;\n    o->oBuoyancy = 1.4f;\n    cur_obj_scale(0.4f);\n    obj_set_hitbox(o, &sBreakableBoxSmallHitbox);\n    o->oAnimState = 1;\n    o->activeFlags |= ACTIVE_FLAG_UNK9;\n}\n\nvoid small_breakable_box_spawn_dust(void) {\n    struct Object *sp24 = spawn_object(o, MODEL_SMOKE, bhvSmoke);\n    sp24->oPosX += (s32)(random_float() * 80.0f) - 40;\n    sp24->oPosZ += (s32)(random_float() * 80.0f) - 40;\n}\n\nvoid small_breakable_box_act_move(void) {\n    s16 collisionFlags = object_step();\n\n    obj_attack_collided_from_other_object(o);\n\n    if (collisionFlags == OBJ_COL_FLAG_GROUNDED) {\n        cur_obj_play_sound_2(SOUND_GENERAL_BOX_LANDING_2);\n    }\n\n    if (collisionFlags & OBJ_COL_FLAG_GROUNDED) {\n        if (o->oForwardVel > 20.0f) {\n            cur_obj_play_sound_2(SOUND_ENV_SLIDING);\n            small_breakable_box_spawn_dust();\n        }\n    }\n\n    if (collisionFlags & OBJ_COL_FLAG_HIT_WALL) {\n        spawn_mist_particles();\n        spawn_triangle_break_particles(20, MODEL_DIRT_ANIMATION, 0.7f, 3);\n        obj_spawn_yellow_coins(o, 3);\n        create_sound_spawner(SOUND_GENERAL_BREAK_BOX);\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n\n    obj_check_floor_death(collisionFlags, sObjFloor);\n}\n\nvoid breakable_box_small_released_loop(void) {\n    o->oBreakableBoxSmallFramesSinceReleased++;\n\n    // Begin flashing\n    if (o->oBreakableBoxSmallFramesSinceReleased > 810) {\n        if (o->oBreakableBoxSmallFramesSinceReleased & 1) {\n            o->header.gfx.node.flags |= GRAPH_RENDER_INVISIBLE;\n        } else {\n            o->header.gfx.node.flags &= ~GRAPH_RENDER_INVISIBLE;\n        }\n    }\n\n    // Despawn, and create a corkbox respawner\n    if (o->oBreakableBoxSmallFramesSinceReleased > 900) {\n        create_respawner(MODEL_BREAKABLE_BOX_SMALL, bhvBreakableBoxSmall, 3000);\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n}\n\nvoid breakable_box_small_idle_loop(void) {\n    switch (o->oAction) {\n        case 0:\n            small_breakable_box_act_move();\n            break;\n\n        case 100:\n            obj_lava_death();\n            break;\n\n        case 101:\n            o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n            create_respawner(MODEL_BREAKABLE_BOX_SMALL, bhvBreakableBoxSmall, 3000);\n            break;\n    }\n\n    if (o->oBreakableBoxSmallReleased == TRUE) {\n        breakable_box_small_released_loop();\n    }\n}\n\nvoid breakable_box_small_get_dropped(void) {\n    cur_obj_become_tangible();\n    cur_obj_enable_rendering();\n    cur_obj_get_dropped();\n    o->header.gfx.node.flags &= ~GRAPH_RENDER_INVISIBLE;\n    o->oHeldState = 0;\n    o->oBreakableBoxSmallReleased = TRUE;\n    o->oBreakableBoxSmallFramesSinceReleased = 0;\n}\n\nvoid breakable_box_small_get_thrown(void) {\n    cur_obj_become_tangible();\n    cur_obj_enable_rendering_2();\n    cur_obj_enable_rendering();\n    o->header.gfx.node.flags &= ~GRAPH_RENDER_INVISIBLE;\n    o->oHeldState = 0;\n    o->oFlags &= ~OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW;\n    o->oForwardVel = 40.0f;\n    o->oVelY = 20.0f;\n    o->oBreakableBoxSmallReleased = TRUE;\n    o->oBreakableBoxSmallFramesSinceReleased = 0;\n    o->activeFlags &= ~ACTIVE_FLAG_UNK9;\n}\n\nvoid bhv_breakable_box_small_loop(void) {\n    switch (o->oHeldState) {\n        case 0:\n            breakable_box_small_idle_loop();\n            break;\n\n        case 1:\n            cur_obj_disable_rendering();\n            cur_obj_become_intangible();\n            break;\n\n        case 2:\n            breakable_box_small_get_thrown();\n            break;\n\n        case 3:\n            breakable_box_small_get_dropped();\n            break;\n    }\n\n    o->oInteractStatus = 0;\n}\n"
  },
  {
    "path": "src/game/behaviors/breakable_wall.inc.c",
    "content": "// breakable_wall.inc.c\n\nvoid bhv_wf_breakable_wall_loop(void) {\n    if (gMarioStates[0].action == ACT_SHOT_FROM_CANNON) {\n        cur_obj_become_tangible();\n\n        if (obj_check_if_collided_with_object(o, gMarioObject)) {\n            if (cur_obj_has_behavior(bhvWFBreakableWallRight)) {\n                play_puzzle_jingle();\n            }\n\n            create_sound_spawner(SOUND_GENERAL_WALL_EXPLOSION);\n\n            o->oInteractType = INTERACT_DAMAGE;\n            o->oDamageOrCoinValue = 1;\n\n            obj_explode_and_spawn_coins(80.0f, 0);\n        }\n    } else {\n        cur_obj_become_intangible();\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/bub.inc.c",
    "content": "// bub.inc.c\n\n// NOTE: These first set of functions spawn a school of bub depending on objF4's\n// value. The later action functions seem to check Y distance to Mario and proceed\n// to do nothing, which indicates this behavior set is incomplete.\n\nvoid bub_spawner_act_0(void) {\n    s32 i;\n    s32 sp18 = o->oBirdChirpChirpUnkF4;\n    if (o->oDistanceToMario < 1500.0f) {\n        for (i = 0; i < sp18; i++) {\n            spawn_object(o, MODEL_BUB, bhvBub);\n        }\n        o->oAction = 1;\n    }\n}\n\nvoid bub_spawner_act_1(void) {\n    if (gMarioObject->oPosY - o->oPosY > 2000.0f) {\n        o->oAction = 2;\n    }\n}\n\nvoid bub_spawner_act_2(void) {\n    o->oAction = 3;\n}\n\nvoid bub_spawner_act_3(void) {\n    o->oAction = 0;\n}\n\nvoid (*sBirdChirpChirpActions[])(void) = {\n    bub_spawner_act_0,\n    bub_spawner_act_1,\n    bub_spawner_act_2,\n    bub_spawner_act_3,\n};\n\nvoid bhv_bub_spawner_loop(void) {\n    cur_obj_call_action_function(sBirdChirpChirpActions);\n}\n\nvoid bub_move_vertically(s32 a0) {\n    f32 sp1C = o->parentObj->oPosY;\n    if (sp1C - 100.0f - o->oCheepCheepUnk104 < o->oPosY\n        && o->oPosY < sp1C + 1000.0f + o->oCheepCheepUnk104) {\n        o->oPosY = approach_f32_symmetric(o->oPosY, o->oCheepCheepUnkF8, a0);\n    } else {\n    }\n}\n\nvoid bub_act_0(void) {\n    o->oCheepCheepUnkFC = random_float() * 100.0f;\n    o->oCheepCheepUnk104 = random_float() * 300.0f;\n    o->oAction = 1;\n}\n\nvoid bub_act_1(void) {\n    f32 dy;\n\n    if (o->oTimer == 0) {\n        o->oForwardVel = random_float() * 2 + 2;\n        o->oCheepCheepUnk108 = random_float();\n    }\n\n    dy = o->oPosY - gMarioObject->oPosY;\n\n    if (o->oPosY < o->oCheepCheepUnkF4 - 50.0f) {\n        if (dy < 0.0f) {\n            dy = 0.0f - dy;\n        }\n\n        if (dy < 500.0f) {\n            bub_move_vertically(1);\n        } else {\n            bub_move_vertically(4);\n        }\n    } else {\n        o->oPosY = o->oCheepCheepUnkF4 - 50.0f;\n\n        if (dy > 300.0f) {\n            o->oPosY = o->oPosY - 1.0f;\n        }\n    }\n\n    if (800.0f < cur_obj_lateral_dist_from_mario_to_home()) {\n        o->oAngleToMario = cur_obj_angle_to_home();\n    }\n\n    cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x100);\n\n    if (o->oDistanceToMario < 200.0f) {\n        if (o->oCheepCheepUnk108 < 0.5) {\n            o->oAction = 2;\n        }\n    }\n\n    if (o->oInteractStatus & INT_STATUS_INTERACTED) {\n        o->oAction = 2;\n    }\n}\n\nvoid bub_act_2(void) {\n    f32 dy;\n\n    if (o->oTimer < 20) {\n        if (o->oInteractStatus & INT_STATUS_INTERACTED) {\n            spawn_object(o, MODEL_WHITE_PARTICLE_SMALL, bhvSmallParticleSnow);\n        }\n    } else {\n        o->oInteractStatus = 0;\n    }\n\n    if (o->oTimer == 0) {\n        cur_obj_play_sound_2(SOUND_GENERAL_MOVING_WATER);\n    }\n\n    if (o->oForwardVel == 0.0f) {\n        o->oForwardVel = 6.0f;\n    }\n\n    dy = o->oPosY - gMarioObject->oPosY;\n\n    if (o->oPosY < o->oCheepCheepUnkF4 - 50.0f) {\n        if (dy < 0.0f) {\n            dy = 0.0f - dy;\n        }\n\n        if (dy < 500.0f) {\n            bub_move_vertically(2);\n        } else {\n            bub_move_vertically(4);\n        }\n    } else {\n        o->oPosY = o->oCheepCheepUnkF4 - 50.0f;\n\n        if (dy > 300.0f) {\n            o->oPosY -= 1.0f;\n        }\n    }\n\n    if (cur_obj_lateral_dist_from_mario_to_home() > 800.0f) {\n        o->oAngleToMario = cur_obj_angle_to_home();\n    }\n\n    cur_obj_rotate_yaw_toward(o->oAngleToMario + 0x8000, 0x400);\n\n    if (o->oTimer > 200 && o->oDistanceToMario > 600.0f) {\n        o->oAction = 1;\n    }\n}\n\nvoid (*sCheepCheepActions[])(void) = {\n    bub_act_0,\n    bub_act_1,\n    bub_act_2,\n};\n\nvoid bhv_bub_loop(void) {\n    o->oCheepCheepUnkF4 = find_water_level(o->oPosX, o->oPosZ);\n    o->oCheepCheepUnkF8 = gMarioObject->oPosY + o->oCheepCheepUnkFC;\n    o->oWallHitboxRadius = 30.0f;\n\n    cur_obj_update_floor_and_walls();\n    cur_obj_call_action_function(sCheepCheepActions);\n    cur_obj_move_using_fvel_and_gravity();\n\n    if (o->parentObj->oAction == 2) {\n        obj_mark_for_deletion(o);\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/bubba.inc.c",
    "content": "// bubba.inc.c\n\nstatic struct ObjectHitbox sBubbaHitbox = {\n    /* interactType:      */ INTERACT_CLAM_OR_BUBBA,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 1,\n    /* health:            */ 99,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 300,\n    /* height:            */ 200,\n    /* hurtboxRadius:     */ 300,\n    /* hurtboxHeight:     */ 200,\n};\n\nvoid bubba_act_0(void) {\n    f32 sp24 = cur_obj_lateral_dist_to_home();\n\n    treat_far_home_as_mario(2000.0f);\n    o->oAnimState = 0;\n\n    o->oBubbaUnk1AC = obj_get_pitch_to_home(sp24);\n\n    approach_f32_ptr(&o->oBubbaUnkF4, 5.0f, 0.5f);\n\n    if (o->oBubbaUnkFC != 0) {\n        if (abs_angle_diff(o->oMoveAngleYaw, o->oBubbaUnk1AE) < 800) {\n            o->oBubbaUnkFC = 0;\n        }\n    } else {\n        if (o->oDistanceToMario >= 25000.0f) {\n            o->oBubbaUnk1AE = o->oAngleToMario;\n            o->oBubbaUnkF8 = random_linear_offset(20, 30);\n        }\n\n        if ((o->oBubbaUnkFC = o->oMoveFlags & OBJ_MOVE_HIT_WALL)) {\n            o->oBubbaUnk1AE = cur_obj_reflect_move_angle_off_wall();\n        } else if (o->oTimer > 30 && o->oDistanceToMario < 2000.0f) {\n            o->oAction = 1;\n        } else if (o->oBubbaUnkF8 != 0) {\n            o->oBubbaUnkF8--;\n        } else {\n            o->oBubbaUnk1AE = obj_random_fixed_turn(0x2000);\n            o->oBubbaUnkF8 = random_linear_offset(100, 100);\n        }\n    }\n}\n\nvoid bubba_act_1(void) {\n    treat_far_home_as_mario(2500.0f);\n\n    if (o->oDistanceToMario > 2500.0f) {\n        o->oAction = 0;\n    } else if (o->oBubbaUnk100 != 0) {\n        if (--o->oBubbaUnk100 == 0) {\n            cur_obj_play_sound_2(SOUND_OBJ_BUBBA_CHOMP);\n            o->oAction = 0;\n        } else if (o->oBubbaUnk100 < 15) {\n            o->oAnimState = 1;\n        } else if (o->oBubbaUnk100 == 20) {\n            s16 val06 = 10000 - (s16)(20.0f * (find_water_level(o->oPosX, o->oPosZ) - o->oPosY));\n            o->oBubbaUnk1AC -= val06;\n            o->oMoveAnglePitch = o->oBubbaUnk1AC;\n            o->oBubbaUnkF4 = 40.0f;\n            obj_compute_vel_from_move_pitch(o->oBubbaUnkF4);\n            o->oAnimState = 0;\n        } else {\n            o->oBubbaUnk1AE = o->oAngleToMario;\n            o->oBubbaUnk1AC = o->oBubbaUnk104;\n\n            cur_obj_rotate_yaw_toward(o->oBubbaUnk1AE, 400);\n            obj_move_pitch_approach(o->oBubbaUnk1AC, 400);\n        }\n    } else {\n        if (abs_angle_diff(gMarioObject->oFaceAngleYaw, o->oAngleToMario) < 0x3000) {\n            s16 val04 = 0x4000 - atan2s(800.0f, o->oDistanceToMario - 800.0f);\n            if ((s16)(o->oMoveAngleYaw - o->oAngleToMario) < 0) {\n                val04 = -val04;\n            }\n\n            o->oBubbaUnk1AE = o->oAngleToMario + val04;\n        } else {\n            o->oBubbaUnk1AE = o->oAngleToMario;\n        }\n\n        o->oBubbaUnk1AC = o->oBubbaUnk104;\n\n        if (obj_is_near_to_and_facing_mario(500.0f, 3000)\n            && abs_angle_diff(o->oBubbaUnk1AC, o->oMoveAnglePitch) < 3000) {\n            o->oBubbaUnk100 = 30;\n            o->oBubbaUnkF4 = 0;\n            o->oAnimState = 1;\n        } else {\n            approach_f32_ptr(&o->oBubbaUnkF4, 20.0f, 0.5f);\n        }\n    }\n}\n\nvoid bhv_bubba_loop(void) {\n    UNUSED u8 filler[4];\n\n    o->oInteractionSubtype &= ~INT_SUBTYPE_EATS_MARIO;\n    o->oBubbaUnk104 = obj_turn_pitch_toward_mario(120.0f, 0);\n\n    if (abs_angle_diff(o->oAngleToMario, o->oMoveAngleYaw) < 0x1000\n        && abs_angle_diff(o->oBubbaUnk104 + 0x800, o->oMoveAnglePitch) < 0x2000) {\n        if (o->oAnimState != 0 && o->oDistanceToMario < 250.0f) {\n            o->oInteractionSubtype |= INT_SUBTYPE_EATS_MARIO;\n        }\n\n        o->hurtboxRadius = 100.0f;\n    } else {\n        o->hurtboxRadius = 150.0f;\n    }\n\n    cur_obj_update_floor_and_walls();\n\n    switch (o->oAction) {\n        case 0:\n            bubba_act_0();\n            break;\n        case 1:\n            bubba_act_1();\n            break;\n    }\n\n    if (o->oMoveFlags & OBJ_MOVE_MASK_IN_WATER) {\n        if (o->oMoveFlags & OBJ_MOVE_ENTERED_WATER) {\n            struct Object *sp38 = spawn_object(o, MODEL_WATER_SPLASH, bhvWaterSplash);\n            if (sp38 != NULL) {\n                obj_scale(sp38, 3.0f);\n            }\n\n            o->oBubbaUnk108 = o->oVelY;\n            o->oBubbaUnk10C = 0.0f;\n        } else {\n            approach_f32_ptr(&o->oBubbaUnk108, 0.0f, 4.0f);\n            if ((o->oBubbaUnk10C -= o->oBubbaUnk108) > 1.0f) {\n                s16 sp36 = random_u16();\n                o->oBubbaUnk10C -= 1.0f;\n                spawn_object_relative(0, 150.0f * coss(sp36), 0x64, 150.0f * sins(sp36), o,\n                                      MODEL_WHITE_PARTICLE_SMALL, bhvSmallParticleSnow);\n            }\n        }\n\n        obj_smooth_turn(&o->oBubbaUnk1B0, &o->oMoveAnglePitch, o->oBubbaUnk1AC, 0.05f, 10, 50, 2000);\n        obj_smooth_turn(&o->oBubbaUnk1B2, &o->oMoveAngleYaw, o->oBubbaUnk1AE, 0.05f, 10, 50, 2000);\n        obj_compute_vel_from_move_pitch(o->oBubbaUnkF4);\n    } else {\n        o->oBubbaUnkF4 = sqrtf(o->oForwardVel * o->oForwardVel + o->oVelY * o->oVelY);\n        o->oMoveAnglePitch = obj_get_pitch_from_vel();\n        obj_face_pitch_approach(o->oMoveAnglePitch, 400);\n        o->oBubbaUnk1B0 = 0;\n    }\n\n    obj_face_pitch_approach(o->oMoveAnglePitch, 400);\n    obj_check_attacks(&sBubbaHitbox, o->oAction);\n\n    cur_obj_move_standard(78);\n\n    o->oFloorHeight += 150.0f;\n    if (o->oPosY < o->oFloorHeight) {\n        o->oPosY = o->oFloorHeight;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/bubble.inc.c",
    "content": "// bubble.inc.c\n\nvoid bhv_object_bubble_init(void) {\n    o->oPosX += random_float() * 30.0f;\n    o->oPosY += random_float() * 30.0f;\n    o->oPosZ += random_float() * 30.0f;\n}\n\nvoid bhv_object_bubble_loop(void) {\n    struct Object *bubbleSplash;\n    f32 waterY = find_water_level(o->oPosX, o->oPosZ);\n    f32 bubbleY = o->oPosY;\n\n    if (bubbleY > waterY) {\n        if (gFreeObjectList.next != NULL) {\n            bubbleSplash = spawn_object_at_origin(o, 0, MODEL_SMALL_WATER_SPLASH, bhvBubbleSplash);\n            bubbleSplash->oPosX = o->oPosX;\n            bubbleSplash->oPosY = bubbleY + 5.0f;\n            bubbleSplash->oPosZ = o->oPosZ;\n        }\n\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/bullet_bill.inc.c",
    "content": "// bullet_bill.inc.c\n\nvoid bhv_white_puff_smoke_init(void) {\n    cur_obj_scale(random_float() * 2 + 2.0);\n}\n\nvoid bhv_bullet_bill_init(void) {\n    o->oBulletBillInitialMoveYaw = o->oMoveAngleYaw;\n}\n\nvoid bullet_bill_act_0(void) {\n    cur_obj_become_tangible();\n    o->oForwardVel = 0.0f;\n    o->oMoveAngleYaw = o->oBulletBillInitialMoveYaw;\n    o->oFaceAnglePitch = 0;\n    o->oFaceAngleRoll = 0;\n    o->oMoveFlags = 0;\n    cur_obj_set_pos_to_home();\n    o->oAction = 1;\n}\n\nvoid bullet_bill_act_1(void) {\n    s16 sp1E = abs_angle_diff(o->oAngleToMario, o->oMoveAngleYaw);\n    if (sp1E < 0x2000 && 400.0f < o->oDistanceToMario && o->oDistanceToMario < 1500.0f) {\n        o->oAction = 2;\n    }\n}\n\nvoid bullet_bill_act_2(void) {\n    if (o->oTimer < 40) {\n        o->oForwardVel = 3.0f;\n    } else if (o->oTimer < 50) {\n        if (o->oTimer % 2) {\n            o->oForwardVel = 3.0f;\n        } else {\n            o->oForwardVel = -3.0f;\n        }\n    } else {\n        if (o->oTimer > 70) {\n            cur_obj_update_floor_and_walls();\n        }\n\n        spawn_object(o, MODEL_SMOKE, bhvWhitePuffSmoke);\n        o->oForwardVel = 30.0f;\n\n        if (o->oDistanceToMario > 300.0f) {\n            cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x100);\n        }\n\n        if (o->oTimer == 50) {\n            cur_obj_play_sound_2(SOUND_OBJ_POUNDING_CANNON);\n            cur_obj_shake_screen(SHAKE_POS_SMALL);\n        }\n\n        if (o->oTimer > 150 || o->oMoveFlags & OBJ_MOVE_HIT_WALL) {\n            o->oAction = 3;\n            spawn_mist_particles();\n        }\n    }\n}\n\nvoid bullet_bill_act_3(void) {\n    o->oAction = 0;\n}\n\nvoid bullet_bill_act_4(void) {\n    if (o->oTimer == 0) {\n        o->oForwardVel = -30.0f;\n        cur_obj_become_intangible();\n    }\n\n    o->oFaceAnglePitch += 0x1000;\n    o->oFaceAngleRoll += 0x1000;\n    o->oPosY += 20.0f;\n\n    if (o->oTimer > 90) {\n        o->oAction = 0;\n    }\n}\n\nvoid (*sBulletBillActions[])(void) = {\n    bullet_bill_act_0,\n    bullet_bill_act_1,\n    bullet_bill_act_2,\n    bullet_bill_act_3,\n    bullet_bill_act_4,\n};\n\nvoid bhv_bullet_bill_loop(void) {\n    cur_obj_call_action_function(sBulletBillActions);\n    if (cur_obj_check_interacted()) {\n        o->oAction = 4;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/bully.inc.c",
    "content": "// bully.inc.c\n\nstatic struct ObjectHitbox sSmallBullyHitbox = {\n    /* interactType:      */ INTERACT_BULLY,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 1,\n    /* health:            */ 0,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 73,\n    /* height:            */ 123,\n    /* hurtboxRadius:     */ 63,\n    /* hurtboxHeight:     */ 113,\n};\n\nstatic struct ObjectHitbox sBigBullyHitbox = {\n    /* interactType:      */ INTERACT_BULLY,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 1,\n    /* health:            */ 0,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 115,\n    /* height:            */ 235,\n    /* hurtboxRadius:     */ 105,\n    /* hurtboxHeight:     */ 225,\n};\n\nvoid bhv_small_bully_init(void) {\n    cur_obj_init_animation(0);\n\n    o->oHomeX = o->oPosX;\n    o->oHomeZ = o->oPosZ;\n    o->oBhvParams2ndByte = BULLY_BP_SIZE_SMALL;\n    o->oGravity = 4.0;\n    o->oFriction = 0.91;\n    o->oBuoyancy = 1.3;\n\n    obj_set_hitbox(o, &sSmallBullyHitbox);\n}\n\nvoid bhv_big_bully_init(void) {\n    cur_obj_init_animation(0);\n\n    o->oHomeX = o->oPosX;\n    o->oHomeY = o->oPosY;\n    o->oHomeZ = o->oPosZ;\n    o->oBhvParams2ndByte = BULLY_BP_SIZE_BIG;\n    o->oGravity = 5.0;\n    o->oFriction = 0.93;\n    o->oBuoyancy = 1.3;\n\n    obj_set_hitbox(o, &sBigBullyHitbox);\n}\n\nvoid bully_check_mario_collision(void) {\n    if (\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    o->oAction != BULLY_ACT_LAVA_DEATH && o->oAction != BULLY_ACT_DEATH_PLANE_DEATH &&\n#endif\n    o->oInteractStatus & INT_STATUS_INTERACTED) {\n        if (o->oBhvParams2ndByte == BULLY_BP_SIZE_SMALL) {\n            cur_obj_play_sound_2(SOUND_OBJ2_BULLY_ATTACKED);\n        } else {\n            cur_obj_play_sound_2(SOUND_OBJ2_LARGE_BULLY_ATTACKED);\n        }\n\n        o->oInteractStatus &= ~INT_STATUS_INTERACTED;\n        o->oAction = BULLY_ACT_KNOCKBACK;\n        o->oFlags &= ~OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW;\n        cur_obj_init_animation(3);\n        o->oBullyMarioCollisionAngle = o->oMoveAngleYaw;\n    }\n}\n\nvoid bully_act_chase_mario(void) {\n    f32 homeX = o->oHomeX;\n    f32 posY = o->oPosY;\n    f32 homeZ = o->oHomeZ;\n\n    if (o->oTimer < 10) {\n        o->oForwardVel = 3.0;\n        obj_turn_toward_object(o, gMarioObject, 16, 0x1000);\n    } else if (o->oBhvParams2ndByte == BULLY_BP_SIZE_SMALL) {\n        o->oForwardVel = 20.0;\n        if (o->oTimer > 30) {\n            o->oTimer = 0;\n        }\n    } else {\n        o->oForwardVel = 30.0;\n        if (o->oTimer > 35) {\n            o->oTimer = 0;\n        }\n    }\n\n    if (!is_point_within_radius_of_mario(homeX, posY, homeZ, 1000)) {\n        o->oAction = BULLY_ACT_PATROL;\n        cur_obj_init_animation(0);\n    }\n}\n\nvoid bully_act_knockback(void) {\n    if (o->oForwardVel < 10.0 && (s32) o->oVelY == 0) {\n        o->oForwardVel = 1.0;\n        o->oBullyKBTimerAndMinionKOCounter++;\n        o->oFlags |= OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW;\n        o->oMoveAngleYaw = o->oFaceAngleYaw;\n        obj_turn_toward_object(o, gMarioObject, 16, 0x500);\n    } else {\n        o->header.gfx.animInfo.animFrame = 0;\n    }\n\n    if (o->oBullyKBTimerAndMinionKOCounter == 18) {\n        o->oAction = BULLY_ACT_CHASE_MARIO;\n        o->oBullyKBTimerAndMinionKOCounter = 0;\n        cur_obj_init_animation(1);\n    }\n}\n\nvoid bully_act_back_up(void) {\n    if (o->oTimer == 0) {\n        o->oFlags &= ~OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW;\n        o->oMoveAngleYaw += 0x8000;\n    }\n\n    o->oForwardVel = 5.0;\n\n    //! bully_backup_check() happens after this function, and has the potential to reset\n    //  the bully's action to BULLY_ACT_BACK_UP. Because the back up action is only\n    //  set to end when the timer EQUALS 15, if this happens on that frame, the bully\n    //  will be stuck in BULLY_ACT_BACK_UP forever until Mario hits it or its death\n    //  conditions are activated. However because its angle is set to its facing angle,\n    //  it will walk forward instead of backing up.\n\n    if (o->oTimer == 15) {\n        o->oMoveAngleYaw = o->oFaceAngleYaw;\n        o->oFlags |= OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW;\n        o->oAction = BULLY_ACT_PATROL;\n    }\n}\n\nvoid bully_backup_check(s16 collisionFlags) {\n    if (!(collisionFlags & OBJ_COL_FLAG_NO_Y_VEL) && o->oAction != BULLY_ACT_KNOCKBACK) {\n        o->oPosX = o->oBullyPrevX;\n        o->oPosZ = o->oBullyPrevZ;\n        o->oAction = BULLY_ACT_BACK_UP;\n    }\n}\n\nvoid bully_play_stomping_sound(void) {\n    s16 animFrame = o->header.gfx.animInfo.animFrame;\n\n    switch (o->oAction) {\n        case BULLY_ACT_PATROL:\n            if (animFrame == 0 || animFrame == 12) {\n                if (o->oBhvParams2ndByte == BULLY_BP_SIZE_SMALL) {\n                    cur_obj_play_sound_2(SOUND_OBJ_BULLY_WALK);\n                } else {\n                    cur_obj_play_sound_2(SOUND_OBJ_BULLY_WALKING);\n                }\n            }\n            break;\n\n        case BULLY_ACT_CHASE_MARIO:\n        case BULLY_ACT_BACK_UP:\n            if (animFrame == 0 || animFrame == 5) {\n                if (o->oBhvParams2ndByte == BULLY_BP_SIZE_SMALL) {\n                    cur_obj_play_sound_2(SOUND_OBJ_BULLY_WALK);\n                } else {\n                    cur_obj_play_sound_2(SOUND_OBJ_BULLY_WALKING);\n                }\n            }\n            break;\n    }\n}\n\nvoid bully_step(void) {\n    s16 collisionFlags = 0;\n\n    collisionFlags = object_step();\n    bully_backup_check(collisionFlags);\n    bully_play_stomping_sound();\n    obj_check_floor_death(collisionFlags, sObjFloor);\n\n    if (o->oBullySubtype & BULLY_STYPE_CHILL) {\n        if (o->oPosY < 1030.0f) {\n            o->oAction = BULLY_ACT_LAVA_DEATH;\n        }\n    }\n}\n\nvoid bully_spawn_coin(void) {\n    struct Object *coin = spawn_object(o, MODEL_YELLOW_COIN, bhvMovingYellowCoin);\n\n    cur_obj_play_sound_2(SOUND_GENERAL_COIN_SPURT);\n\n    coin->oForwardVel = 10.0f;\n    coin->oVelY = 100.0f;\n    coin->oPosY = o->oPosY + 310.0f;\n    coin->oMoveAngleYaw = (f32)(o->oBullyMarioCollisionAngle + 0x8000) + random_float() * 1024.0f;\n}\n\nvoid bully_act_level_death(void) {\n    if (obj_lava_death() == TRUE) {\n        if (o->oBhvParams2ndByte == BULLY_BP_SIZE_SMALL) {\n            if (o->oBullySubtype == BULLY_STYPE_MINION) {\n                o->parentObj->oBullyKBTimerAndMinionKOCounter++;\n            }\n            bully_spawn_coin();\n        } else {\n            spawn_mist_particles();\n\n            if (o->oBullySubtype == BULLY_STYPE_CHILL) {\n                spawn_default_star(130.0f, 1600.0f, -4335.0f);\n            } else {\n                spawn_default_star(0, 950.0f, -6800.0f);\n                spawn_object_abs_with_rot(o, 0, MODEL_NONE, bhvLLLTumblingBridge,\n                                          0, 154, -5631, 0, 0, 0);\n            }\n        }\n    }\n}\n\nvoid bhv_bully_loop(void) {\n    o->oBullyPrevX = o->oPosX;\n    o->oBullyPrevY = o->oPosY;\n    o->oBullyPrevZ = o->oPosZ;\n\n    //! Because this function runs no matter what, Mario is able to interrupt the bully's\n    //  death action by colliding with it. Since the bully hitbox is tall enough to collide\n    //  with Mario even when it is under a lava floor, this can get the bully stuck OOB\n    //  if there is nothing under the lava floor.\n    bully_check_mario_collision();\n\n    switch (o->oAction) {\n        case BULLY_ACT_PATROL:\n            o->oForwardVel = 5.0;\n\n            if (obj_return_home_if_safe(o, o->oHomeX, o->oPosY, o->oHomeZ, 800) == TRUE) {\n                o->oAction = BULLY_ACT_CHASE_MARIO;\n                cur_obj_init_animation(1);\n            }\n\n            bully_step();\n            break;\n\n        case BULLY_ACT_CHASE_MARIO:\n            bully_act_chase_mario();\n            bully_step();\n            break;\n\n        case BULLY_ACT_KNOCKBACK:\n            bully_act_knockback();\n            bully_step();\n            break;\n\n        case BULLY_ACT_BACK_UP:\n            bully_act_back_up();\n            bully_step();\n            break;\n\n        case BULLY_ACT_LAVA_DEATH:\n            bully_act_level_death();\n            break;\n\n        case BULLY_ACT_DEATH_PLANE_DEATH:\n            o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n            break;\n    }\n\n    set_object_visibility(o, 3000);\n}\n\nvoid big_bully_spawn_minion(s32 x, s32 y, s32 z, s16 yaw) {\n    struct Object *bully =\n        spawn_object_abs_with_rot(o, 0, MODEL_BULLY, bhvSmallBully, x, y, z, 0, yaw, 0);\n    bully->oBullySubtype = BULLY_STYPE_MINION;\n    bully->oBhvParams2ndByte = BULLY_BP_SIZE_SMALL;\n}\n\nvoid bhv_big_bully_with_minions_init(void) {\n    big_bully_spawn_minion(4454, 307, -5426, 0);\n    big_bully_spawn_minion(3840, 307, -6041, 0);\n    big_bully_spawn_minion(3226, 307, -5426, 0);\n\n    o->header.gfx.node.flags |= GRAPH_RENDER_INVISIBLE;\n\n    cur_obj_become_intangible();\n\n    o->oAction = BULLY_ACT_INACTIVE;\n}\n\nvoid big_bully_spawn_star(void) {\n    if (obj_lava_death() == TRUE) {\n        spawn_mist_particles();\n        spawn_default_star(3700.0f, 600.0f, -5500.0f);\n    }\n}\n\nvoid bhv_big_bully_with_minions_loop(void) {\n    s16 collisionFlags;\n\n    o->oBullyPrevX = o->oPosX;\n    o->oBullyPrevY = o->oPosY;\n    o->oBullyPrevZ = o->oPosZ;\n\n    bully_check_mario_collision();\n\n    switch (o->oAction) {\n        case BULLY_ACT_PATROL:\n            o->oForwardVel = 5.0;\n\n            if (obj_return_home_if_safe(o, o->oHomeX, o->oPosY, o->oHomeZ, 1000) == TRUE) {\n                o->oAction = BULLY_ACT_CHASE_MARIO;\n                cur_obj_init_animation(1);\n            }\n\n            bully_step();\n            break;\n\n        case BULLY_ACT_CHASE_MARIO:\n            bully_act_chase_mario();\n            bully_step();\n            break;\n\n        case BULLY_ACT_KNOCKBACK:\n            bully_act_knockback();\n            bully_step();\n            break;\n\n        case BULLY_ACT_BACK_UP:\n            bully_act_back_up();\n            bully_step();\n            break;\n\n        case BULLY_ACT_INACTIVE:\n            //! The Big Bully that spawns from killing its 3 minions uses the knockback timer\n            //  for counting the number of dead minions. This means that when it activates,\n            //  the knockback timer is at 3 instead of 0. So the bully knockback time will\n            //  be reduced by 3 frames (16.67%) on the first hit.\n            if (o->oBullyKBTimerAndMinionKOCounter == 3) {\n                play_puzzle_jingle();\n\n                if (o->oTimer > 90) {\n                    o->oAction = BULLY_ACT_ACTIVATE_AND_FALL;\n                }\n            }\n            break;\n\n        case BULLY_ACT_ACTIVATE_AND_FALL:\n            collisionFlags = object_step();\n            if ((collisionFlags & OBJ_COL_FLAGS_LANDED) == OBJ_COL_FLAGS_LANDED) {\n                o->oAction = BULLY_ACT_PATROL;\n            }\n\n            if (collisionFlags == OBJ_COL_FLAG_GROUNDED) {\n                cur_obj_play_sound_2(SOUND_OBJ_THWOMP);\n                set_camera_shake_from_point(SHAKE_POS_SMALL, o->oPosX, o->oPosY, o->oPosZ);\n                spawn_mist_particles();\n            }\n\n            o->header.gfx.node.flags &= ~GRAPH_RENDER_INVISIBLE;\n            cur_obj_become_tangible();\n            break;\n\n        case BULLY_ACT_LAVA_DEATH:\n            big_bully_spawn_star();\n            break;\n\n        case BULLY_ACT_DEATH_PLANE_DEATH:\n            o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n            break;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/butterfly.inc.c",
    "content": "// butterfly.inc.c\n\nvoid bhv_butterfly_init(void) {\n    cur_obj_init_animation(1);\n\n    o->oButterflyYPhase = random_float() * 100.0f;\n    o->header.gfx.animInfo.animFrame = random_float() * 7.0f;\n    o->oHomeX = o->oPosX;\n    o->oHomeY = o->oPosY;\n    o->oHomeZ = o->oPosZ;\n}\n\nvoid butterfly_step(s32 speed) {\n    struct FloorGeometry *sp24;\n    s16 yaw = o->oMoveAngleYaw;\n    s16 pitch = o->oMoveAnglePitch;\n    s16 yPhase = o->oButterflyYPhase;\n    f32 floorY;\n\n    o->oVelX = sins(yaw) * (f32) speed;\n    o->oVelY = sins(pitch) * (f32) speed;\n    o->oVelZ = coss(yaw) * (f32) speed;\n\n    o->oPosX += o->oVelX;\n    o->oPosZ += o->oVelZ;\n\n    if (o->oAction == BUTTERFLY_ACT_FOLLOW_MARIO) {\n        o->oPosY -= o->oVelY + coss((s32)(yPhase * 655.36)) * 20.0f / 4;\n    } else {\n        o->oPosY -= o->oVelY;\n    }\n\n    floorY = find_floor_height_and_data(o->oPosX, o->oPosY, o->oPosZ, &sp24);\n\n    if (o->oPosY < floorY + 2.0f) {\n        o->oPosY = floorY + 2.0f;\n    }\n\n    o->oButterflyYPhase++;\n    if (o->oButterflyYPhase > 100) {\n        o->oButterflyYPhase = 0;\n    }\n}\n\nvoid butterfly_calculate_angle(void) {\n    gMarioObject->oPosX += 5 * o->oButterflyYPhase / 4;\n    gMarioObject->oPosZ += 5 * o->oButterflyYPhase / 4;\n    obj_turn_toward_object(o, gMarioObject, 16, 0x300);\n    gMarioObject->oPosX -= 5 * o->oButterflyYPhase / 4;\n    gMarioObject->oPosZ -= 5 * o->oButterflyYPhase / 4;\n\n    gMarioObject->oPosY += (5 * o->oButterflyYPhase + 0x100) / 4;\n    obj_turn_toward_object(o, gMarioObject, 15, 0x500);\n    gMarioObject->oPosY -= (5 * o->oButterflyYPhase + 0x100) / 4;\n}\n\nvoid butterfly_act_rest(void) {\n    if (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 1000)) {\n        cur_obj_init_animation(0);\n\n        o->oAction = BUTTERFLY_ACT_FOLLOW_MARIO;\n        o->oMoveAngleYaw = gMarioObject->header.gfx.angle[1];\n    }\n}\n\nvoid butterfly_act_follow_mario(void) {\n    butterfly_calculate_angle();\n\n    butterfly_step(7);\n\n    if (!is_point_within_radius_of_mario(o->oHomeX, o->oHomeY, o->oHomeZ, 1200)) {\n        o->oAction = BUTTERFLY_ACT_RETURN_HOME;\n    }\n}\n\nvoid butterfly_act_return_home(void) {\n    f32 homeDistX = o->oHomeX - o->oPosX;\n    f32 homeDistY = o->oHomeY - o->oPosY;\n    f32 homeDistZ = o->oHomeZ - o->oPosZ;\n    s16 hAngleToHome = atan2s(homeDistZ, homeDistX);\n    s16 vAngleToHome = atan2s(sqrtf(homeDistX * homeDistX + homeDistZ * homeDistZ), -homeDistY);\n\n    o->oMoveAngleYaw = approach_s16_symmetric(o->oMoveAngleYaw, hAngleToHome, 0x800);\n    o->oMoveAnglePitch = approach_s16_symmetric(o->oMoveAnglePitch, vAngleToHome, 0x50);\n\n    butterfly_step(7);\n\n    if (homeDistX * homeDistX + homeDistY * homeDistY + homeDistZ * homeDistZ < 144.0f) {\n        cur_obj_init_animation(1);\n\n        o->oAction = BUTTERFLY_ACT_RESTING;\n        o->oPosX = o->oHomeX;\n        o->oPosY = o->oHomeY;\n        o->oPosZ = o->oHomeZ;\n    }\n}\n\nvoid bhv_butterfly_loop(void) {\n    switch (o->oAction) {\n        case BUTTERFLY_ACT_RESTING:\n            butterfly_act_rest();\n            break;\n\n        case BUTTERFLY_ACT_FOLLOW_MARIO:\n            butterfly_act_follow_mario();\n            break;\n\n        case BUTTERFLY_ACT_RETURN_HOME:\n            butterfly_act_return_home();\n            break;\n    }\n\n    set_object_visibility(o, 3000);\n}\n"
  },
  {
    "path": "src/game/behaviors/camera_lakitu.inc.c",
    "content": "\n/**\n * Behavior for bhvCameraLakitu. This includes both the intro lakitu and the\n * lakitu visible in the mirror room.\n * TODO: Processing order relative to bhvCloud\n */\n\n/**\n * Init function for camera lakitu.\n * If this is the intro lakitu, despawn unless this is the start of the game.\n * Spawn cloud if not the intro lakitu.\n */\nvoid bhv_camera_lakitu_init(void) {\n    if (o->oBhvParams2ndByte != CAMERA_LAKITU_BP_FOLLOW_CAMERA) {\n        // Despawn unless this is the very beginning of the game\n        if (gNeverEnteredCastle != TRUE) {\n            obj_mark_for_deletion(o);\n        }\n    } else {\n        spawn_object_relative_with_scale(CLOUD_BP_LAKITU_CLOUD, 0, 0, 0, 2.0f, o, MODEL_MIST, bhvCloud);\n    }\n}\n\n/**\n * Wait for mario to stand on the bridge, then interrupt his action and enter\n * the spawn cloud action.\n */\nstatic void camera_lakitu_intro_act_trigger_cutscene(void) {\n    //! These bounds are slightly smaller than the actual bridge bounds, allowing\n    //  the RTA speedrunning method of lakitu skip\n    if (gMarioObject->oPosX > -544.0f && gMarioObject->oPosX < 545.0f\n        && gMarioObject->oPosY > 800.0f && gMarioObject->oPosZ > -2000.0f\n        && gMarioObject->oPosZ < -177.0f && gMarioObject->oPosZ < -177.0f // always double check your conditions\n        && set_mario_npc_dialog(MARIO_DIALOG_LOOK_UP) == MARIO_DIALOG_STATUS_START) {\n        o->oAction = CAMERA_LAKITU_INTRO_ACT_SPAWN_CLOUD;\n    }\n}\n\n/**\n * Warp up into the air and spawn cloud, then enter the TODO action.\n */\nstatic void camera_lakitu_intro_act_spawn_cloud(void) {\n    if (set_mario_npc_dialog(MARIO_DIALOG_LOOK_UP) == MARIO_DIALOG_STATUS_SPEAK) {\n        o->oAction = CAMERA_LAKITU_INTRO_ACT_UNK2;\n\n        o->oPosX = 1800.0f;\n        o->oPosY = 2400.0f;\n        o->oPosZ = -2400.0f;\n\n        o->oMoveAnglePitch = 0x4000;\n        o->oCameraLakituSpeed = 60.0f;\n        o->oCameraLakituCircleRadius = 1000.0f;\n\n        spawn_object_relative_with_scale(CLOUD_BP_LAKITU_CLOUD, 0, 0, 0, 2.0f, o, MODEL_MIST, bhvCloud);\n    }\n}\n\n/**\n * Circle down to mario, show the dialog, then fly away.\n */\nstatic void camera_lakitu_intro_act_show_dialog(void) {\n    s16 targetMovePitch;\n    s16 targetMoveYaw;\n#ifdef AVOID_UB\n    targetMovePitch = 0;\n    targetMoveYaw = 0;\n#endif\n\n    cur_obj_play_sound_1(SOUND_AIR_LAKITU_FLY);\n\n    // Face toward mario\n    o->oFaceAnglePitch = obj_turn_pitch_toward_mario(120.0f, 0);\n    o->oFaceAngleYaw = o->oAngleToMario;\n\n    // After finishing dialog, fly away and despawn\n    if (o->oCameraLakituFinishedDialog) {\n        approach_f32_ptr(&o->oCameraLakituSpeed, 60.0f, 3.0f);\n        if (o->oDistanceToMario > 6000.0f) {\n            obj_mark_for_deletion(o);\n        }\n\n        targetMovePitch = -0x3000;\n        targetMoveYaw = -0x6000;\n    } else {\n        if (o->oCameraLakituSpeed != 0.0f) {\n            if (o->oDistanceToMario > 5000.0f) {\n                targetMovePitch = o->oMoveAnglePitch;\n                targetMoveYaw = o->oAngleToMario;\n            } else {\n                // Stay moving in a circle around mario\n                s16 turnAmount = 0x4000\n                                 - atan2s(o->oCameraLakituCircleRadius,\n                                          o->oDistanceToMario - o->oCameraLakituCircleRadius);\n                if ((s16)(o->oMoveAngleYaw - o->oAngleToMario) < 0) {\n                    turnAmount = -turnAmount;\n                }\n\n                targetMoveYaw = o->oAngleToMario + turnAmount;\n                targetMovePitch = o->oFaceAnglePitch;\n\n                approach_f32_ptr(&o->oCameraLakituCircleRadius, 200.0f, 50.0f);\n                if (o->oDistanceToMario < 1000.0f) {\n#ifndef VERSION_JP\n                    if (!o->oCameraLakituUnk104) {\n                        play_music(SEQ_PLAYER_LEVEL, SEQUENCE_ARGS(15, SEQ_EVENT_CUTSCENE_LAKITU), 0);\n                        o->oCameraLakituUnk104 = TRUE;\n                    }\n#endif\n                    // Once within 1000 units, slow down\n                    approach_f32_ptr(&o->oCameraLakituSpeed, 20.0f, 1.0f);\n                    if (o->oDistanceToMario < 500.0f\n                        && abs_angle_diff(gMarioObject->oFaceAngleYaw, o->oFaceAngleYaw) > 0x7000) {\n                        // Once within 500 units and facing toward mario, come\n                        // to a stop\n                        approach_f32_ptr(&o->oCameraLakituSpeed, 0.0f, 5.0f);\n                    }\n                }\n            }\n        } else if (cur_obj_update_dialog_with_cutscene(MARIO_DIALOG_LOOK_UP,\n            DIALOG_FLAG_TURN_TO_MARIO, CUTSCENE_DIALOG, DIALOG_034)) {\n            o->oCameraLakituFinishedDialog = TRUE;\n        }\n    }\n\n    o->oCameraLakituPitchVel = approach_s16_symmetric(o->oCameraLakituPitchVel, 2000, 400);\n    obj_move_pitch_approach(targetMovePitch, o->oCameraLakituPitchVel);\n\n    o->oCameraLakituYawVel = approach_s16_symmetric(o->oCameraLakituYawVel, 2000, 100);\n    cur_obj_rotate_yaw_toward(targetMoveYaw, o->oCameraLakituYawVel);\n\n    // vel y is explicitly computed, so gravity doesn't apply\n    obj_compute_vel_from_move_pitch(o->oCameraLakituSpeed);\n    cur_obj_move_using_fvel_and_gravity();\n}\n\n/**\n * Update function for camera lakitu.\n */\nvoid bhv_camera_lakitu_update(void) {\n    if (!(o->activeFlags & ACTIVE_FLAG_IN_DIFFERENT_ROOM)) {\n        obj_update_blinking(&o->oCameraLakituBlinkTimer, 20, 40, 4);\n\n        if (o->oBhvParams2ndByte != CAMERA_LAKITU_BP_FOLLOW_CAMERA) {\n            switch (o->oAction) {\n                case CAMERA_LAKITU_INTRO_ACT_TRIGGER_CUTSCENE:\n                    camera_lakitu_intro_act_trigger_cutscene();\n                    break;\n                case CAMERA_LAKITU_INTRO_ACT_SPAWN_CLOUD:\n                    camera_lakitu_intro_act_spawn_cloud();\n                    break;\n                case CAMERA_LAKITU_INTRO_ACT_UNK2:\n                    camera_lakitu_intro_act_show_dialog();\n                    break;\n            }\n        } else {\n            f32 val0C = 4331.53f - gLakituState.curPos[0];\n\n            if (gLakituState.curPos[0] < 1700.0f || val0C < 0.0f) {\n                cur_obj_hide();\n            } else {\n                cur_obj_unhide();\n\n                o->oPosX = gLakituState.curPos[0];\n                o->oPosY = gLakituState.curPos[1];\n                o->oPosZ = gLakituState.curPos[2];\n\n                o->oHomeX = gLakituState.curFocus[0];\n                o->oHomeZ = gLakituState.curFocus[2];\n\n                o->oFaceAngleYaw = -cur_obj_angle_to_home();\n                o->oFaceAnglePitch = atan2s(cur_obj_lateral_dist_to_home(),\n                                            o->oPosY - gLakituState.curFocus[1]);\n\n                o->oPosX = 4331.53f + val0C;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/cannon.inc.c",
    "content": "// cannon.inc.c\n\nvoid bhv_cannon_base_unused_loop(void) {\n    o->oPosY += o->oVelY;\n}\n\nvoid opened_cannon_act_0(void) {\n    if (o->oTimer == 0) {\n        o->oInteractStatus = 0;\n        o->oPosX = o->oHomeX;\n        o->oPosY = o->oHomeY;\n        o->oPosZ = o->oHomeZ;\n        o->oMoveAnglePitch = 0;\n        o->oMoveAngleYaw = (s16)(o->oBhvParams2ndByte << 8);\n        o->oCannonUnkF4 = 0;\n        o->oCannonUnk10C = FALSE;\n        cur_obj_enable_rendering();\n        cur_obj_become_tangible();\n    }\n\n    if (o->oDistanceToMario < 500.0f) {\n        cur_obj_become_tangible();\n        cur_obj_enable_rendering();\n        if ((o->oInteractStatus & INT_STATUS_INTERACTED)\n            && !(o->oInteractStatus & INT_STATUS_TOUCHED_BOB_OMB)) { // bob-omb explodes when it gets into a cannon\n            o->oAction = 4;\n            o->oCannonUnk10C = TRUE;\n            o->oCannonUnkF8 = 1;\n        } else {\n            o->oInteractStatus = 0;\n        }\n    } else {\n        cur_obj_become_intangible();\n        cur_obj_disable_rendering();\n        o->oCannonUnk10C = FALSE;\n    }\n}\n\nvoid opened_cannon_act_4(void) {\n    if (o->oTimer == 0) {\n        cur_obj_play_sound_2(SOUND_OBJ_CANNON1);\n    }\n\n    o->oPosY += 5.0f;\n    o->oPosX += (f32)((o->oTimer / 2 & 1) - 0.5) * 2;\n    o->oPosZ += (f32)((o->oTimer / 2 & 1) - 0.5) * 2;\n\n    if (o->oTimer > 67) {\n        o->oPosX += (f32)((o->oTimer / 2 & 1) - 0.5) * 4;\n        o->oPosZ += (f32)((o->oTimer / 2 & 1) - 0.5) * 4;\n        o->oAction = 6;\n    }\n}\n\nvoid opened_cannon_act_6(void) {\n    if (o->oTimer == 0) {\n        cur_obj_play_sound_2(SOUND_OBJ_CANNON2);\n    }\n\n    if (o->oTimer < 4) {\n        o->oPosX += (f32)((o->oTimer / 2 & 1) - 0.5) * 4.0f;\n        o->oPosZ += (f32)((o->oTimer / 2 & 1) - 0.5) * 4.0f;\n    } else {\n        if (o->oTimer < 6) {\n        } else {\n            if (o->oTimer < 22) {\n                o->oMoveAngleYaw =\n                    sins(o->oCannonUnkF4) * 0x4000 + ((s16)(o->oBhvParams2ndByte << 8));\n                o->oCannonUnkF4 += 0x400;\n            } else if (o->oTimer < 26) {\n            } else {\n                o->oCannonUnkF4 = 0;\n                o->oAction = 5;\n            }\n        }\n    }\n}\n\nvoid opened_cannon_act_5(void) {\n    if (o->oTimer == 0) {\n        cur_obj_play_sound_2(SOUND_OBJ_CANNON3);\n    }\n\n    if (o->oTimer < 4) {\n    } else {\n        if (o->oTimer < 20) {\n            o->oCannonUnkF4 += 0x400;\n            o->oMoveAnglePitch = sins(o->oCannonUnkF4) * 0x2000;\n        } else if (o->oTimer < 25) {\n        } else {\n            o->oAction = 1;\n        }\n    }\n}\n\nvoid opened_cannon_act_1(void) {\n    UNUSED u8 filler[4];\n\n    cur_obj_become_intangible();\n    cur_obj_disable_rendering();\n\n    o->oCannonUnk10C = FALSE;\n    gMarioShotFromCannon = TRUE;\n}\n\nvoid opened_cannon_act_2(void) {\n    o->oAction = 3;\n}\n\nvoid opened_cannon_act_3(void) {\n    UNUSED u8 filler[4];\n    if (o->oTimer > 3) {\n        o->oAction = 0;\n    }\n}\n\nvoid (*sOpenedCannonActions[])(void) = {\n    opened_cannon_act_0,\n    opened_cannon_act_1,\n    opened_cannon_act_2,\n    opened_cannon_act_3,\n    opened_cannon_act_4,\n    opened_cannon_act_5,\n    opened_cannon_act_6,\n};\n\nvoid bhv_cannon_base_loop(void) {\n    cur_obj_call_action_function(sOpenedCannonActions);\n\n    if (o->oCannonUnkF8 != 0) {\n        o->oCannonUnkF8++;\n    }\n\n    o->oInteractStatus = 0;\n}\n\nvoid bhv_cannon_barrel_loop(void) {\n    struct Object *parent = o->parentObj;\n\n    if (parent->header.gfx.node.flags & GRAPH_RENDER_ACTIVE) {\n        cur_obj_enable_rendering();\n        obj_copy_pos(o, o->parentObj);\n        o->oMoveAngleYaw = o->parentObj->oMoveAngleYaw;\n        o->oFaceAnglePitch = o->parentObj->oMoveAnglePitch;\n    } else {\n        cur_obj_disable_rendering();\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/cannon_door.inc.c",
    "content": "// cannon.inc.c\n\nvoid bhv_cannon_closed_init(void) {\n    if (save_file_is_cannon_unlocked() == TRUE) {\n        // If the cannon is open, spawn a cannon and despawn the object.\n        struct Object *cannon = spawn_object(o, MODEL_CANNON_BASE, bhvCannon);\n\n        cannon->oBhvParams2ndByte = o->oBhvParams2ndByte;\n        cannon->oPosX = o->oHomeX;\n        cannon->oPosY = o->oHomeY;\n        cannon->oPosZ = o->oHomeZ;\n\n        o->oAction = CANNON_TRAP_DOOR_ACT_OPEN;\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n}\n\nvoid cannon_door_act_opening(void) {\n    if (o->oTimer == 0) {\n        cur_obj_play_sound_2(SOUND_GENERAL_CANNON_UP);\n    }\n\n    if (o->oTimer < 30) {\n        o->oVelY = -0.5f;\n        o->oPosY += o->oVelY;\n        o->oVelX = 0.0f;\n    } else {\n        if (o->oTimer == 80) {\n            bhv_cannon_closed_init();\n            return;\n        }\n\n        o->oVelX = 4.0f;\n        o->oVelY = 0.0f;\n        o->oPosX += o->oVelX;\n    }\n}\n\nvoid bhv_cannon_closed_loop(void) {\n    switch (o->oAction) {\n        case CANNON_TRAP_DOOR_ACT_CLOSED:\n            o->oVelX = 0.0f;\n            o->oVelY = 0.0f;\n            o->oDrawingDistance = 4000.0f;\n\n            if (save_file_is_cannon_unlocked() == TRUE) {\n                o->oAction = CANNON_TRAP_DOOR_ACT_CAM_ZOOM;\n            }\n            break;\n\n        case CANNON_TRAP_DOOR_ACT_CAM_ZOOM:\n            if (o->oTimer == 60) {\n                o->oAction = CANNON_TRAP_DOOR_ACT_OPENING;\n            }\n            o->oDrawingDistance = 20000.0f;\n            break;\n\n        case CANNON_TRAP_DOOR_ACT_OPENING:\n            cannon_door_act_opening();\n            break;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/cap.inc.c",
    "content": "// cap.inc.c\n\nstatic struct ObjectHitbox sCapHitbox = {\n    /* interactType:      */ INTERACT_CAP,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 0,\n    /* health:            */ 0,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 80,\n    /* height:            */ 80,\n    /* hurtboxRadius:     */ 90,\n    /* hurtboxHeight:     */ 90,\n};\n\ns32 cap_set_hitbox(void) {\n    obj_set_hitbox(o, &sCapHitbox);\n\n    if (o->oInteractStatus & INT_STATUS_INTERACTED) {\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n        o->oInteractStatus = 0;\n        return TRUE;\n    }\n\n    return FALSE;\n}\n\nvoid cap_despawn(void) {\n    if (o->oTimer > 300) {\n        obj_flicker_and_disappear(o, 300);\n    }\n}\n\nvoid cap_check_quicksand(void) {\n    if (sObjFloor == NULL) {\n        return;\n    }\n\n    switch (sObjFloor->type) {\n        case SURFACE_DEATH_PLANE:\n            o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n            break;\n\n        case SURFACE_SHALLOW_QUICKSAND:\n        case SURFACE_DEEP_QUICKSAND:\n        case SURFACE_QUICKSAND:\n            o->oAction = 10;\n            o->oForwardVel = 0.0f;\n            break;\n\n        case SURFACE_DEEP_MOVING_QUICKSAND:\n        case SURFACE_SHALLOW_MOVING_QUICKSAND:\n        case SURFACE_MOVING_QUICKSAND:\n            o->oAction = 11;\n            o->oMoveAngleYaw = (sObjFloor->force & 0xFF) << 8;\n            o->oForwardVel = 8 + 2 * (0 - ((sObjFloor->force & 0xFF00) >> 8));\n            break;\n\n        case SURFACE_INSTANT_QUICKSAND:\n            o->oAction = 12;\n            o->oForwardVel = 0.0f;\n            break;\n\n        case SURFACE_INSTANT_MOVING_QUICKSAND:\n            o->oAction = 13;\n            o->oMoveAngleYaw = (sObjFloor->force & 0xFF) << 8;\n            o->oForwardVel = 8 + 2 * (0 - ((sObjFloor->force & 0xFF00) >> 8));\n            break;\n    }\n}\n\nvoid cap_sink_quicksand(void) {\n    switch (o->oAction) {\n        case 10:\n            if (o->oTimer < 10) {\n                o->oGraphYOffset += -1.0f;\n                o->oFaceAnglePitch = 0x2000;\n            }\n            break;\n\n        case 11:\n            if (o->oTimer < 10) {\n                o->oGraphYOffset += -3.0f;\n            }\n            o->oFaceAnglePitch = 0x2000;\n            break;\n\n        case 12:\n            o->oGraphYOffset += -1.0f;\n            if (o->oTimer > 20) {\n                o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n            }\n            break;\n\n        case 13:\n            o->oGraphYOffset += -6.0f;\n            if (o->oTimer > 20) {\n                o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n            }\n            o->oFaceAnglePitch = 0x2000;\n            break;\n    }\n\n    cap_check_quicksand();\n}\n\nvoid bhv_wing_cap_init(void) {\n    o->oGravity = 1.2f;\n    o->oFriction = 0.999f;\n    o->oBuoyancy = 0.9f;\n    o->oOpacity = 255;\n}\n\nvoid cap_scale_vertically(void) {\n    o->oCapUnkF8 += 0x2000;\n    o->header.gfx.scale[1] = coss(o->oCapUnkF8) * 0.3 + 0.7;\n    if (o->oCapUnkF8 == 0x10000) {\n        o->oCapUnkF8 = 0;\n        o->oCapUnkF4 = 2;\n    }\n}\n\nvoid wing_vanish_cap_act_0(void) {\n    s16 collisionFlags;\n\n    o->oFaceAngleYaw += o->oForwardVel * 128.0f;\n    collisionFlags = object_step();\n\n    if (collisionFlags & OBJ_COL_FLAG_GROUNDED) {\n        cap_check_quicksand();\n        if (o->oVelY != 0.0f) {\n            o->oCapUnkF4 = 1;\n            o->oVelY = 0.0f;\n        }\n    }\n\n    if (o->oCapUnkF4 == 1) {\n        cap_scale_vertically();\n    }\n}\n\nvoid bhv_wing_vanish_cap_loop(void) {\n    switch (o->oAction) {\n        case 0:\n            wing_vanish_cap_act_0();\n            break;\n\n        default:\n            object_step();\n            cap_sink_quicksand();\n            break;\n    }\n\n    if (o->oTimer > 20) {\n        cur_obj_become_tangible();\n    }\n\n    cap_despawn();\n    cap_set_hitbox();\n}\n\nvoid bhv_metal_cap_init(void) {\n    o->oGravity = 2.4f;\n    o->oFriction = 0.999f;\n    o->oBuoyancy = 1.5f;\n    o->oOpacity = 255;\n}\n\nvoid metal_cap_act_0(void) {\n    s16 collisionFlags;\n\n    o->oFaceAngleYaw += o->oForwardVel * 128.0f;\n    collisionFlags = object_step();\n\n    if (collisionFlags & OBJ_COL_FLAG_GROUNDED) {\n        cap_check_quicksand();\n    }\n}\n\nvoid bhv_metal_cap_loop(void) {\n    switch (o->oAction) {\n        case 0:\n            metal_cap_act_0();\n            break;\n\n        default:\n            object_step();\n            cap_sink_quicksand();\n            break;\n    }\n\n    if (o->oTimer > 20) {\n        cur_obj_become_tangible();\n    }\n\n    cap_set_hitbox();\n    cap_despawn();\n}\n\nvoid bhv_normal_cap_init(void) {\n    o->oGravity = 0.7f;\n    o->oFriction = 0.89f;\n    o->oBuoyancy = 0.9f;\n    o->oOpacity = 255;\n\n    save_file_set_cap_pos(o->oPosX, o->oPosY, o->oPosZ);\n}\n\nvoid normal_cap_set_save_flags(void) {\n    save_file_clear_flags(SAVE_FLAG_CAP_ON_GROUND);\n\n    switch (gCurrCourseNum) {\n        case COURSE_SSL:\n            save_file_set_flags(SAVE_FLAG_CAP_ON_KLEPTO);\n            break;\n\n        case COURSE_SL:\n            save_file_set_flags(SAVE_FLAG_CAP_ON_MR_BLIZZARD);\n            break;\n\n        case COURSE_TTM:\n            save_file_set_flags(SAVE_FLAG_CAP_ON_UKIKI);\n            break;\n\n        default:\n            save_file_set_flags(SAVE_FLAG_CAP_ON_KLEPTO);\n            break;\n    }\n}\n\nvoid normal_cap_act_0(void) {\n    s16 collisionFlags;\n\n    o->oFaceAngleYaw += o->oForwardVel * 128.0f;\n    o->oFaceAnglePitch += o->oForwardVel * 80.0f;\n    collisionFlags = object_step();\n\n    if (collisionFlags & OBJ_COL_FLAG_GROUNDED) {\n        cap_check_quicksand();\n\n        if (o->oVelY != 0.0f) {\n            o->oCapUnkF4 = 1;\n            o->oVelY = 0.0f;\n            o->oFaceAnglePitch = 0;\n        }\n    }\n\n    if (o->oCapUnkF4 == 1) {\n        cap_scale_vertically();\n    }\n}\n\nvoid bhv_normal_cap_loop(void) {\n    switch (o->oAction) {\n        case 0:\n            normal_cap_act_0();\n            break;\n\n        default:\n            object_step();\n            cap_sink_quicksand();\n            break;\n    }\n\n    if ((s32) o->oForwardVel != 0) {\n        save_file_set_cap_pos(o->oPosX, o->oPosY, o->oPosZ);\n    }\n\n    if (o->activeFlags == ACTIVE_FLAG_DEACTIVATED) {\n        normal_cap_set_save_flags();\n    }\n\n    if (cap_set_hitbox() == TRUE) {\n        save_file_clear_flags(SAVE_FLAG_CAP_ON_GROUND);\n    }\n}\n\nvoid bhv_vanish_cap_init(void) {\n    o->oGravity = 1.2f;\n    o->oFriction = 0.999f;\n    o->oBuoyancy = 0.9f;\n    o->oOpacity = 150;\n}\n"
  },
  {
    "path": "src/game/behaviors/capswitch.inc.c",
    "content": "// capswitch.inc.c\n\nUNUSED u8 sCapSwitchText[] = { DIALOG_010, DIALOG_011, DIALOG_012 };\n\nvoid cap_switch_act_0(void) {\n    o->oAnimState = o->oBhvParams2ndByte;\n    cur_obj_scale(0.5f);\n    o->oPosY += 71.0f;\n\n    spawn_object_relative_with_scale(0, 0, -71, 0, 0.5f, o, MODEL_CAP_SWITCH_BASE, bhvCapSwitchBase);\n\n    if (gCurrLevelNum != LEVEL_UNKNOWN_32) {\n        if (save_file_get_flags() & sCapSaveFlags[o->oBhvParams2ndByte]) {\n            o->oAction = 3;\n            o->header.gfx.scale[1] = 0.1f;\n        } else {\n            o->oAction = 1;\n        }\n    } else {\n        o->oAction = 1;\n    }\n}\n\nvoid cap_switch_act_1(void) {\n    if (cur_obj_is_mario_on_platform()) {\n        save_file_set_flags(sCapSaveFlags[o->oBhvParams2ndByte]);\n        o->oAction = 2;\n        cur_obj_play_sound_2(SOUND_GENERAL_ACTIVATE_CAP_SWITCH);\n    }\n}\n\nvoid cap_switch_act_2(void) {\n    if (o->oTimer < 5) {\n        cur_obj_scale_over_time(2, 4, 0.5f, 0.1f);\n        if (o->oTimer == 4) {\n            cur_obj_shake_screen(SHAKE_POS_SMALL);\n            spawn_mist_particles();\n            spawn_triangle_break_particles(60, MODEL_CARTOON_STAR, 0.3f, o->oBhvParams2ndByte);\n#if ENABLE_RUMBLE\n            queue_rumble_data(5, 80);\n#endif\n        }\n    } else {\n        //! Neither of these flags are defined in this function so they do nothing.\n        //  On an extra note, there's a specific check for this cutscene and\n        //  there's no dialog defined since the cutscene itself calls the dialog.\n        s32 dialogResponse = cur_obj_update_dialog_with_cutscene(MARIO_DIALOG_LOOK_FRONT,\n            (DIALOG_FLAG_TEXT_RESPONSE | DIALOG_FLAG_UNK_CAPSWITCH), CUTSCENE_CAP_SWITCH_PRESS, 0);\n        if (dialogResponse) {\n            o->oAction = 3;\n        }\n    }\n}\n\n// dead function\nvoid cap_switch_act_3(void) {\n}\n\nvoid (*sCapSwitchActions[])(void) = {\n    cap_switch_act_0,\n    cap_switch_act_1,\n    cap_switch_act_2,\n    cap_switch_act_3,\n};\n\nvoid bhv_cap_switch_loop(void) {\n    cur_obj_call_action_function(sCapSwitchActions);\n}\n"
  },
  {
    "path": "src/game/behaviors/castle_cannon_grate.inc.c",
    "content": "// castle_cannon_grate.inc.c\n\nvoid bhv_castle_cannon_grate_init(void) {\n    if (save_file_get_total_star_count(gCurrSaveFileNum - 1, COURSE_MIN - 1, COURSE_MAX - 1) >= 120) {\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/castle_flag.inc.c",
    "content": "// castle_flag.inc.c\n\nvoid bhv_castle_flag_init(void) {\n    o->header.gfx.animInfo.animFrame = random_float() * 28.0f;\n}\n"
  },
  {
    "path": "src/game/behaviors/castle_floor_trap.inc.c",
    "content": "// castle_floor_trap.inc.c\n\nvoid bhv_floor_trap_in_castle_loop(void) {\n    if (gMarioObject->platform == o) {\n        o->parentObj->oInteractStatus |= INT_STATUS_TRAP_TURN;\n    }\n    o->oFaceAngleRoll = o->parentObj->oFaceAngleRoll;\n}\n\nvoid bhv_castle_floor_trap_init(void) {\n    struct Object *sp2C;\n    sp2C = spawn_object_relative(0, -358, 0, 0, o, MODEL_CASTLE_BOWSER_TRAP, bhvFloorTrapInCastle);\n    sp2C = spawn_object_relative(0, 358, 0, 0, o, MODEL_CASTLE_BOWSER_TRAP, bhvFloorTrapInCastle);\n    sp2C->oMoveAngleYaw += 0x8000;\n}\n\nvoid bhv_castle_floor_trap_open_detect(void) {\n    if (gMarioStates[0].action == ACT_SPECIAL_EXIT_AIRBORNE\n        || gMarioStates[0].action == ACT_SPECIAL_DEATH_EXIT) {\n        o->oAction = 4; // rotates trapdoor so it looks always open\n    } else {\n        o->oAngleVelRoll = 0x400;\n        if (o->oInteractStatus & INT_STATUS_TRAP_TURN) {\n            o->oAction = 1; // detects interact then opens the trapdoor\n        }\n    }\n}\n\nvoid bhv_castle_floor_trap_open(void) {\n    if (o->oTimer == 0) {\n        cur_obj_play_sound_2(SOUND_GENERAL_CASTLE_TRAP_OPEN);\n    }\n\n    o->oAngleVelRoll -= 0x100;\n    o->oFaceAngleRoll += o->oAngleVelRoll;\n\n    if (o->oFaceAngleRoll < -0x4000) {\n        o->oFaceAngleRoll = -0x4000;\n        o->oAction = 2; // after opening is done, enable close detection\n    }\n}\n\nvoid bhv_castle_floor_trap_close_detect(void) {\n    if (o->oDistanceToMario > 1000.0f) {\n        o->oAction = 3; // close trapdoor\n    }\n}\n\nvoid bhv_castle_floor_trap_close(void) {\n    o->oFaceAngleRoll += 0x400;\n\n    if (o->oFaceAngleRoll > 0) {\n        o->oFaceAngleRoll = 0;\n        o->oAction = 0; // after closing, reloads open detection\n        o->oInteractStatus &= ~INT_STATUS_TRAP_TURN;\n    }\n}\n\nvoid bhv_castle_floor_trap_rotate(void) {\n    o->oFaceAngleRoll = -0x3C00;\n}\n\nvoid bhv_castle_floor_trap_loop(void) {\n    UNUSED u8 filler[12];\n\n    switch (o->oAction) {\n        case 0:\n            bhv_castle_floor_trap_open_detect();\n            break;\n        case 1:\n            bhv_castle_floor_trap_open();\n            break;\n        case 2:\n            bhv_castle_floor_trap_close_detect();\n            break;\n        case 3:\n            bhv_castle_floor_trap_close();\n            break;\n        case 4:\n            bhv_castle_floor_trap_rotate();\n            break;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/celebration_star.inc.c",
    "content": "// celebration_star.inc.c\n\nvoid bhv_celebration_star_init(void) {\n    o->oHomeX = gMarioObject->header.gfx.pos[0];\n    o->oPosY = gMarioObject->header.gfx.pos[1] + 30.0f;\n    o->oHomeZ = gMarioObject->header.gfx.pos[2];\n    o->oMoveAngleYaw = gMarioObject->header.gfx.angle[1] + 0x8000;\n    o->oCelebStarDiameterOfRotation = 100;\n#if BUGFIX_STAR_BOWSER_KEY\n    if (gCurrLevelNum == LEVEL_BOWSER_1 || gCurrLevelNum == LEVEL_BOWSER_2) {\n        o->header.gfx.sharedChild = gLoadedGraphNodes[MODEL_BOWSER_KEY];\n        o->oFaceAnglePitch = 0;\n        o->oFaceAngleRoll = 0xC000;\n        cur_obj_scale(0.1f);\n        o->oCelebStarUnkF4 = 1;\n    } else {\n        o->header.gfx.sharedChild = gLoadedGraphNodes[MODEL_STAR];\n        o->oFaceAnglePitch = 0;\n        o->oFaceAngleRoll = 0;\n        cur_obj_scale(0.4f);\n        o->oCelebStarUnkF4 = 0;\n    }\n#else\n    o->header.gfx.sharedChild = gLoadedGraphNodes[MODEL_STAR];\n    cur_obj_scale(0.4f);\n    o->oFaceAnglePitch = 0;\n    o->oFaceAngleRoll = 0;\n#endif\n}\n\nvoid celeb_star_act_spin_around_mario(void) {\n    o->oPosX = o->oHomeX + sins(o->oMoveAngleYaw) * (f32)(o->oCelebStarDiameterOfRotation / 2);\n    o->oPosZ = o->oHomeZ + coss(o->oMoveAngleYaw) * (f32)(o->oCelebStarDiameterOfRotation / 2);\n    o->oPosY += 5.0f;\n    o->oFaceAngleYaw += 0x1000;\n    o->oMoveAngleYaw += 0x2000;\n\n    if (o->oTimer == 40) {\n        o->oAction = CELEB_STAR_ACT_FACE_CAMERA;\n    }\n\n    if (o->oTimer < 35) {\n        spawn_object(o, MODEL_SPARKLES, bhvCelebrationStarSparkle);\n        o->oCelebStarDiameterOfRotation++;\n    } else {\n        o->oCelebStarDiameterOfRotation -= 20;\n    }\n}\n\nvoid celeb_star_act_face_camera(void) {\n    if (o->oTimer < 10) {\n#if BUGFIX_STAR_BOWSER_KEY\n        if (o->oCelebStarUnkF4 == 0) {\n            cur_obj_scale((f32) o->oTimer / 10.0);\n        } else {\n            cur_obj_scale((f32) o->oTimer / 30.0);\n        }\n#else\n        cur_obj_scale((f32) o->oTimer / 10.0);\n#endif\n        o->oFaceAngleYaw += 0x1000;\n    } else {\n        o->oFaceAngleYaw = gMarioObject->header.gfx.angle[1];\n    }\n\n    if (o->oTimer == 59) {\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n}\n\nvoid bhv_celebration_star_loop(void) {\n    switch (o->oAction) {\n        case CELEB_STAR_ACT_SPIN_AROUND_MARIO:\n            celeb_star_act_spin_around_mario();\n            break;\n\n        case CELEB_STAR_ACT_FACE_CAMERA:\n            celeb_star_act_face_camera();\n            break;\n    }\n}\n\nvoid bhv_celebration_star_sparkle_loop(void) {\n    o->oPosY -= 15.0f;\n\n    if (o->oTimer == 12) {\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n}\n\nvoid bhv_star_key_collection_puff_spawner_loop(void) {\n    spawn_mist_particles_variable(0, 10, 30.0f);\n    o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n}\n"
  },
  {
    "path": "src/game/behaviors/chain_chomp.inc.c",
    "content": "\n/**\n * Behavior for bhvChainChomp, bhvChainChompChainPart, bhvWoodenPost, and bhvChainChompGate.\n * bhvChainChomp spawns its bhvWoodenPost in its behavior script. It spawns 5 chain\n * parts. Part 0 is the \"pivot\", which is positioned at the wooden post while\n * the chomp is chained up. Parts 1-4 are the other parts, starting from the\n * chain chomp and moving toward the pivot.\n * Processing order is bhvWoodenPost, bhvChainChompGate, bhvChainChomp, bhvChainChompChainPart.\n * The chain parts are processed starting at the post and ending at the chomp.\n */\n\n/**\n * Hitbox for chain chomp.\n */\nstatic struct ObjectHitbox sChainChompHitbox = {\n    /* interactType:      */ INTERACT_MR_BLIZZARD,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 3,\n    /* health:            */ 1,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 80,\n    /* height:            */ 160,\n    /* hurtboxRadius:     */ 80,\n    /* hurtboxHeight:     */ 160,\n};\n\n/**\n * Update function for chain chomp part / pivot.\n */\nvoid bhv_chain_chomp_chain_part_update(void) {\n    if (o->parentObj->oAction == CHAIN_CHOMP_ACT_UNLOAD_CHAIN) {\n        obj_mark_for_deletion(o);\n    } else if (o->oBhvParams2ndByte != CHAIN_CHOMP_CHAIN_PART_BP_PIVOT) {\n        struct ChainSegment *segment = &o->parentObj->oChainChompSegments[o->oBhvParams2ndByte];\n\n        // Set position relative to the pivot\n        o->oPosX = o->parentObj->parentObj->oPosX + segment->posX;\n        o->oPosY = o->parentObj->parentObj->oPosY + segment->posY;\n        o->oPosZ = o->parentObj->parentObj->oPosZ + segment->posZ;\n    } else if (o->parentObj->oChainChompReleaseStatus != CHAIN_CHOMP_NOT_RELEASED) {\n        cur_obj_update_floor_and_walls();\n        cur_obj_move_standard(78);\n    }\n}\n\n/**\n * When mario gets close enough, allocate chain segments and spawn their objects.\n */\nstatic void chain_chomp_act_uninitialized(void) {\n    struct ChainSegment *segments;\n    s32 i;\n\n    if (o->oDistanceToMario < 3000.0f) {\n        segments = mem_pool_alloc(gObjectMemoryPool, 5 * sizeof(struct ChainSegment));\n        if (segments != NULL) {\n            // Each segment represents the offset of a chain part to the pivot.\n            // Segment 0 connects the pivot to the chain chomp itself. Segment\n            // 1 connects the pivot to the chain part next to the chain chomp\n            // (chain part 1), etc.\n            o->oChainChompSegments = segments;\n            for (i = 0; i <= 4; i++) {\n                chain_segment_init(&segments[i]);\n            }\n\n            cur_obj_set_pos_to_home();\n\n            // Spawn the pivot and set to parent\n            if ((o->parentObj =\n                     spawn_object(o, CHAIN_CHOMP_CHAIN_PART_BP_PIVOT, bhvChainChompChainPart))\n                != NULL) {\n                // Spawn the non-pivot chain parts, starting from the chain\n                // chomp and moving toward the pivot\n                for (i = 1; i <= 4; i++) {\n                    spawn_object_relative(i, 0, 0, 0, o, MODEL_METALLIC_BALL, bhvChainChompChainPart);\n                }\n\n                o->oAction = CHAIN_CHOMP_ACT_MOVE;\n                cur_obj_unhide();\n            }\n        }\n    }\n}\n\n/**\n * Apply gravity to each chain part, and cap its distance to the previous\n * part as well as from the pivot.\n */\nstatic void chain_chomp_update_chain_segments(void) {\n    struct ChainSegment *prevSegment;\n    struct ChainSegment *segment;\n    f32 offsetX;\n    f32 offsetY;\n    f32 offsetZ;\n    f32 offset;\n    f32 segmentVelY;\n    f32 maxTotalOffset;\n    s32 i;\n\n    if (o->oVelY < 0.0f) {\n        segmentVelY = o->oVelY;\n    } else {\n        segmentVelY = -20.0f;\n    }\n\n    // Segment 0 connects the pivot to the chain chomp itself, and segment i>0\n    // connects the pivot to chain part i (1 is closest to the chain chomp).\n\n    for (i = 1; i <= 4; i++) {\n        prevSegment = &o->oChainChompSegments[i - 1];\n        segment = &o->oChainChompSegments[i];\n\n        // Apply gravity\n\n        if ((segment->posY += segmentVelY) < 0.0f) {\n            segment->posY = 0.0f;\n        }\n\n        // Cap distance to previous chain part (so that the tail follows the\n        // chomp)\n\n        offsetX = segment->posX - prevSegment->posX;\n        offsetY = segment->posY - prevSegment->posY;\n        offsetZ = segment->posZ - prevSegment->posZ;\n        offset = sqrtf(offsetX * offsetX + offsetY * offsetY + offsetZ * offsetZ);\n\n        if (offset > o->oChainChompMaxDistBetweenChainParts) {\n            offset = o->oChainChompMaxDistBetweenChainParts / offset;\n            offsetX *= offset;\n            offsetY *= offset;\n            offsetZ *= offset;\n        }\n\n        // Cap distance to pivot (so that it stretches when the chomp moves far\n        // from the wooden post)\n\n        offsetX += prevSegment->posX;\n        offsetY += prevSegment->posY;\n        offsetZ += prevSegment->posZ;\n        offset = sqrtf(offsetX * offsetX + offsetY * offsetY + offsetZ * offsetZ);\n\n        maxTotalOffset = o->oChainChompMaxDistFromPivotPerChainPart * (5 - i);\n        if (offset > maxTotalOffset) {\n            offset = maxTotalOffset / offset;\n            offsetX *= offset;\n            offsetY *= offset;\n            offsetZ *= offset;\n        }\n\n        segment->posX = offsetX;\n        segment->posY = offsetY;\n        segment->posZ = offsetZ;\n    }\n}\n\n/**\n * Lunging increases the maximum distance from the pivot and changes the maximum\n * distance between chain parts. Restore these values to normal.\n */\nstatic void chain_chomp_restore_normal_chain_lengths(void) {\n    approach_f32_ptr(&o->oChainChompMaxDistFromPivotPerChainPart, 750.0f / 5, 4.0f);\n    o->oChainChompMaxDistBetweenChainParts = o->oChainChompMaxDistFromPivotPerChainPart;\n}\n\n/**\n * Turn toward mario. Wait a bit and then enter the lunging sub-action.\n */\nstatic void chain_chomp_sub_act_turn(void) {\n    o->oGravity = -4.0f;\n\n    chain_chomp_restore_normal_chain_lengths();\n    obj_move_pitch_approach(0, 0x100);\n\n    if (o->oMoveFlags & OBJ_MOVE_MASK_ON_GROUND) {\n        cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x400);\n        if (abs_angle_diff(o->oAngleToMario, o->oMoveAngleYaw) < 0x800) {\n            if (o->oTimer > 30) {\n                if (cur_obj_check_anim_frame(0)) {\n                    cur_obj_reverse_animation();\n                    if (o->oTimer > 40) {\n                        // Increase the maximum distance from the pivot and enter\n                        // the lunging sub-action.\n                        cur_obj_play_sound_2(SOUND_GENERAL_CHAIN_CHOMP2);\n\n                        o->oSubAction = CHAIN_CHOMP_SUB_ACT_LUNGE;\n                        o->oChainChompMaxDistFromPivotPerChainPart = 900.0f / 5;\n\n                        o->oForwardVel = 140.0f;\n                        o->oVelY = 20.0f;\n                        o->oGravity = 0.0f;\n                        o->oChainChompTargetPitch = obj_get_pitch_from_vel();\n                    }\n                } else {\n                    o->oTimer--;\n                }\n            } else {\n                o->oForwardVel = 0.0f;\n            }\n        } else {\n            cur_obj_play_sound_2(SOUND_GENERAL_CHAIN_CHOMP1);\n            o->oForwardVel = 10.0f;\n            o->oVelY = 20.0f;\n        }\n    } else {\n        cur_obj_rotate_yaw_toward(o->oAngleToMario, 400);\n        o->oTimer = 0;\n    }\n}\n\nstatic void chain_chomp_sub_act_lunge(void) {\n    obj_face_pitch_approach(o->oChainChompTargetPitch, 0x400);\n\n    if (o->oForwardVel != 0.0f) {\n        f32 val04;\n\n        if (o->oChainChompRestrictedByChain == TRUE) {\n            o->oForwardVel = o->oVelY = 0.0f;\n            o->oChainChompUnk104 = 30.0f;\n        }\n\n        // TODO: What is this\n        if ((val04 = 900.0f - o->oChainChompDistToPivot) > 220.0f) {\n            val04 = 220.0f;\n        }\n\n        o->oChainChompMaxDistBetweenChainParts =\n            val04 / 220.0f * o->oChainChompMaxDistFromPivotPerChainPart;\n        o->oTimer = 0;\n    } else {\n        // Turn toward pivot\n        cur_obj_rotate_yaw_toward(atan2s(o->oChainChompSegments[0].posZ, o->oChainChompSegments[0].posX),\n                                  0x1000);\n\n        if (o->oChainChompUnk104 != 0.0f) {\n            approach_f32_ptr(&o->oChainChompUnk104, 0.0f, 0.8f);\n        } else {\n            o->oSubAction = CHAIN_CHOMP_SUB_ACT_TURN;\n        }\n\n        o->oChainChompMaxDistBetweenChainParts = o->oChainChompUnk104;\n        if (gGlobalTimer % 2 != 0) {\n            o->oChainChompMaxDistBetweenChainParts = -o->oChainChompUnk104;\n        }\n    }\n\n    if (o->oTimer < 30) {\n        cur_obj_reverse_animation();\n    }\n}\n\n/**\n * Fall to the ground and interrupt mario into a cutscene action.\n */\nstatic void chain_chomp_released_trigger_cutscene(void) {\n    o->oForwardVel = 0.0f;\n    o->oGravity = -4.0f;\n\n    //! Can delay this if we get into a cutscene-unfriendly action after the\n    //  last post ground pound and before this\n    if (set_mario_npc_dialog(MARIO_DIALOG_LOOK_UP) == MARIO_DIALOG_STATUS_SPEAK\n        && (o->oMoveFlags & OBJ_MOVE_MASK_ON_GROUND) && cutscene_object(CUTSCENE_STAR_SPAWN, o) == 1) {\n        o->oChainChompReleaseStatus = CHAIN_CHOMP_RELEASED_LUNGE_AROUND;\n        o->oTimer = 0;\n    }\n}\n\n/**\n * Lunge 4 times, each time moving toward mario +/- 0x2000 angular units.\n * Finally, begin a lunge toward x=1450, z=562 (near the gate).\n */\nstatic void chain_chomp_released_lunge_around(void) {\n    chain_chomp_restore_normal_chain_lengths();\n\n    // Finish bounce\n    if (o->oMoveFlags & OBJ_MOVE_MASK_ON_GROUND) {\n        // Before first bounce, turn toward mario and wait 2 seconds\n        if (o->oChainChompNumLunges == 0) {\n            if (cur_obj_rotate_yaw_toward(o->oAngleToMario, 800)) {\n                if (o->oTimer > 60) {\n                    o->oChainChompNumLunges++;\n                    // enable wall collision\n                    o->oWallHitboxRadius = 200.0f;\n                }\n            } else {\n                o->oTimer = 0;\n            }\n        } else {\n            if (++o->oChainChompNumLunges <= 5) {\n                cur_obj_play_sound_2(SOUND_GENERAL_CHAIN_CHOMP1);\n                o->oMoveAngleYaw = o->oAngleToMario + random_sign() * 0x2000;\n                o->oForwardVel = 30.0f;\n                o->oVelY = 50.0f;\n            } else {\n                o->oChainChompReleaseStatus = CHAIN_CHOMP_RELEASED_BREAK_GATE;\n                o->oHomeX = 1450.0f;\n                o->oHomeZ = 562.0f;\n                o->oMoveAngleYaw = cur_obj_angle_to_home();\n                o->oForwardVel = cur_obj_lateral_dist_to_home() / 8;\n                o->oVelY = 50.0f;\n            }\n        }\n    }\n}\n\n/**\n * Continue lunging until a wall collision occurs. Mark the gate as destroyed,\n * wait for the chain chomp to land, and then begin a jump toward the final\n * target, x=3288, z=-1770.\n */\nstatic void chain_chomp_released_break_gate(void) {\n    if (!o->oChainChompHitGate) {\n        // If hit wall, assume it's the gate and bounce off of it\n        //! The wall may not be the gate\n        //! If the chain chomp gets stuck, it may never hit a wall, resulting\n        //  in a softlock\n        if (o->oMoveFlags & OBJ_MOVE_HIT_WALL) {\n            o->oChainChompHitGate = TRUE;\n            o->oMoveAngleYaw = cur_obj_reflect_move_angle_off_wall();\n            o->oForwardVel *= 0.4f;\n        }\n    } else if (o->oMoveFlags & OBJ_MOVE_MASK_ON_GROUND) {\n        o->oChainChompReleaseStatus = CHAIN_CHOMP_RELEASED_JUMP_AWAY;\n        o->oHomeX = 3288.0f;\n        o->oHomeZ = -1770.0f;\n        o->oMoveAngleYaw = cur_obj_angle_to_home();\n        o->oForwardVel = cur_obj_lateral_dist_to_home() / 50.0f;\n        o->oVelY = 120.0f;\n    }\n}\n\n/**\n * Wait until the chain chomp lands.\n */\nstatic void chain_chomp_released_jump_away(void) {\n    if (o->oMoveFlags & OBJ_MOVE_MASK_ON_GROUND) {\n        gObjCutsceneDone = TRUE;\n        o->oChainChompReleaseStatus = CHAIN_CHOMP_RELEASED_END_CUTSCENE;\n    }\n}\n\n/**\n * Release mario and transition to the unload chain action.\n */\nstatic void chain_chomp_released_end_cutscene(void) {\n    if (cutscene_object(CUTSCENE_STAR_SPAWN, o) == -1) {\n        set_mario_npc_dialog(MARIO_DIALOG_STOP);\n        o->oAction = CHAIN_CHOMP_ACT_UNLOAD_CHAIN;\n    }\n}\n\n/**\n * All chain chomp movement behavior, including the cutscene after being\n * released.\n */\nstatic void chain_chomp_act_move(void) {\n    f32 maxDistToPivot;\n\n    // Unload chain if mario is far enough\n    if (o->oChainChompReleaseStatus == CHAIN_CHOMP_NOT_RELEASED && o->oDistanceToMario > 4000.0f) {\n        o->oAction = CHAIN_CHOMP_ACT_UNLOAD_CHAIN;\n        o->oForwardVel = o->oVelY = 0.0f;\n    } else {\n        cur_obj_update_floor_and_walls();\n\n        switch (o->oChainChompReleaseStatus) {\n            case CHAIN_CHOMP_NOT_RELEASED:\n                switch (o->oSubAction) {\n                    case CHAIN_CHOMP_SUB_ACT_TURN:\n                        chain_chomp_sub_act_turn();\n                        break;\n                    case CHAIN_CHOMP_SUB_ACT_LUNGE:\n                        chain_chomp_sub_act_lunge();\n                        break;\n                }\n                break;\n            case CHAIN_CHOMP_RELEASED_TRIGGER_CUTSCENE:\n                chain_chomp_released_trigger_cutscene();\n                break;\n            case CHAIN_CHOMP_RELEASED_LUNGE_AROUND:\n                chain_chomp_released_lunge_around();\n                break;\n            case CHAIN_CHOMP_RELEASED_BREAK_GATE:\n                chain_chomp_released_break_gate();\n                break;\n            case CHAIN_CHOMP_RELEASED_JUMP_AWAY:\n                chain_chomp_released_jump_away();\n                break;\n            case CHAIN_CHOMP_RELEASED_END_CUTSCENE:\n                chain_chomp_released_end_cutscene();\n                break;\n        }\n\n        cur_obj_move_standard(78);\n\n        // Segment 0 connects the pivot to the chain chomp itself\n        o->oChainChompSegments[0].posX = o->oPosX - o->parentObj->oPosX;\n        o->oChainChompSegments[0].posY = o->oPosY - o->parentObj->oPosY;\n        o->oChainChompSegments[0].posZ = o->oPosZ - o->parentObj->oPosZ;\n\n        o->oChainChompDistToPivot =\n            sqrtf(o->oChainChompSegments[0].posX * o->oChainChompSegments[0].posX\n                  + o->oChainChompSegments[0].posY * o->oChainChompSegments[0].posY\n                  + o->oChainChompSegments[0].posZ * o->oChainChompSegments[0].posZ);\n\n        // If the chain is fully stretched\n        maxDistToPivot = o->oChainChompMaxDistFromPivotPerChainPart * 5;\n        if (o->oChainChompDistToPivot > maxDistToPivot) {\n            f32 ratio = maxDistToPivot / o->oChainChompDistToPivot;\n            o->oChainChompDistToPivot = maxDistToPivot;\n\n            o->oChainChompSegments[0].posX *= ratio;\n            o->oChainChompSegments[0].posY *= ratio;\n            o->oChainChompSegments[0].posZ *= ratio;\n\n            if (o->oChainChompReleaseStatus == CHAIN_CHOMP_NOT_RELEASED) {\n                // Restrict chain chomp position\n                o->oPosX = o->parentObj->oPosX + o->oChainChompSegments[0].posX;\n                o->oPosY = o->parentObj->oPosY + o->oChainChompSegments[0].posY;\n                o->oPosZ = o->parentObj->oPosZ + o->oChainChompSegments[0].posZ;\n\n                o->oChainChompRestrictedByChain = TRUE;\n            } else {\n                // Move pivot like the chain chomp is pulling it along\n                f32 oldPivotY = o->parentObj->oPosY;\n\n                o->parentObj->oPosX = o->oPosX - o->oChainChompSegments[0].posX;\n                o->parentObj->oPosY = o->oPosY - o->oChainChompSegments[0].posY;\n                o->parentObj->oVelY = o->parentObj->oPosY - oldPivotY;\n                o->parentObj->oPosZ = o->oPosZ - o->oChainChompSegments[0].posZ;\n            }\n        } else {\n            o->oChainChompRestrictedByChain = FALSE;\n        }\n\n        chain_chomp_update_chain_segments();\n\n        // Begin a lunge if mario tries to attack\n        if (obj_check_attacks(&sChainChompHitbox, o->oAction) != 0) {\n            o->oSubAction = CHAIN_CHOMP_SUB_ACT_LUNGE;\n            o->oChainChompMaxDistFromPivotPerChainPart = 900.0f / 5;\n            o->oForwardVel = 0.0f;\n            o->oVelY = 300.0f;\n            o->oGravity = -4.0f;\n            o->oChainChompTargetPitch = -0x3000;\n        }\n    }\n}\n\n/**\n * Hide and free the chain chomp segments. The chain objects will unload\n * themselves when they see that the chain chomp is in this action.\n */\nstatic void chain_chomp_act_unload_chain(void) {\n    cur_obj_hide();\n    mem_pool_free(gObjectMemoryPool, o->oChainChompSegments);\n\n    o->oAction = CHAIN_CHOMP_ACT_UNINITIALIZED;\n\n    if (o->oChainChompReleaseStatus != CHAIN_CHOMP_NOT_RELEASED) {\n        obj_mark_for_deletion(o);\n    }\n}\n\n/**\n * Update function for chain chomp.\n */\nvoid bhv_chain_chomp_update(void) {\n    switch (o->oAction) {\n        case CHAIN_CHOMP_ACT_UNINITIALIZED:\n            chain_chomp_act_uninitialized();\n            break;\n        case CHAIN_CHOMP_ACT_MOVE:\n            chain_chomp_act_move();\n            break;\n        case CHAIN_CHOMP_ACT_UNLOAD_CHAIN:\n            chain_chomp_act_unload_chain();\n            break;\n    }\n}\n\n/**\n * Update function for wooden post.\n */\nvoid bhv_wooden_post_update(void) {\n    // When ground pounded by mario, drop by -45 + -20\n    if (!o->oWoodenPostMarioPounding) {\n        if ((o->oWoodenPostMarioPounding = cur_obj_is_mario_ground_pounding_platform())) {\n            cur_obj_play_sound_2(SOUND_GENERAL_POUND_WOOD_POST);\n            o->oWoodenPostSpeedY = -70.0f;\n        }\n    } else if (approach_f32_ptr(&o->oWoodenPostSpeedY, 0.0f, 25.0f)) {\n        // Stay still until mario is done ground pounding\n        o->oWoodenPostMarioPounding = cur_obj_is_mario_ground_pounding_platform();\n    } else if ((o->oWoodenPostOffsetY += o->oWoodenPostSpeedY) < -190.0f) {\n        // Once pounded, if this is the chain chomp's post, release the chain\n        // chomp\n        o->oWoodenPostOffsetY = -190.0f;\n        if (o->parentObj != o) {\n            play_puzzle_jingle();\n            o->parentObj->oChainChompReleaseStatus = CHAIN_CHOMP_RELEASED_TRIGGER_CUTSCENE;\n            o->parentObj = o;\n        }\n    }\n\n    if (o->oWoodenPostOffsetY != 0.0f) {\n        o->oPosY = o->oHomeY + o->oWoodenPostOffsetY;\n    } else if (!(o->oBhvParams & WOODEN_POST_BP_NO_COINS_MASK)) {\n        // Reset the timer once mario is far enough\n        if (o->oDistanceToMario > 400.0f) {\n            o->oTimer = o->oWoodenPostTotalMarioAngle = 0;\n        } else {\n            // When mario runs around the post 3 times within 200 frames, spawn\n            // coins\n            o->oWoodenPostTotalMarioAngle += (s16)(o->oAngleToMario - o->oWoodenPostPrevAngleToMario);\n            if (absi(o->oWoodenPostTotalMarioAngle) > 0x30000 && o->oTimer < 200) {\n                obj_spawn_loot_yellow_coins(o, 5, 20.0f);\n                set_object_respawn_info_bits(o, 1);\n            }\n        }\n\n        o->oWoodenPostPrevAngleToMario = o->oAngleToMario;\n    }\n}\n\n/**\n * Init function for chain chomp gate.\n */\nvoid bhv_chain_chomp_gate_init(void) {\n    o->parentObj = cur_obj_nearest_object_with_behavior(bhvChainChomp);\n}\n\n/**\n * Update function for chain chomp gate\n */\nvoid bhv_chain_chomp_gate_update(void) {\n    if (o->parentObj->oChainChompHitGate) {\n        spawn_mist_particles_with_sound(SOUND_GENERAL_WALL_EXPLOSION);\n        set_camera_shake_from_point(SHAKE_POS_SMALL, o->oPosX, o->oPosY, o->oPosZ);\n        spawn_mist_particles_variable(0, 127, 200.0f);\n        spawn_triangle_break_particles(30, MODEL_DIRT_ANIMATION, 3.0f, 4);\n        obj_mark_for_deletion(o);\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/checkerboard_platform.inc.c",
    "content": "// checkerboard_platform.inc.c\n\nstruct Struct8032F754 {\n    s32 unk0;\n    Vec3f unk1;\n    f32 unk2;\n};\n\nstruct Struct8032F754 D_8032F754[] = {\n    { 145, { 0.7f, 1.5f, 0.7f }, 7.0f },\n    { 235, { 1.2f, 2.0f, 1.2f }, 11.6f },\n};\n\nvoid bhv_checkerboard_elevator_group_init(void) {\n    s32 sp3C;\n    s32 sp38;\n    s32 sp34;\n    s32 i;\n    struct Object *sp2C;\n\n    if (o->oBhvParams2ndByte == 0) {\n        o->oBhvParams2ndByte = 65;\n    }\n\n    sp3C = o->oBhvParams2ndByte * 10;\n    sp34 = (o->oBhvParams >> 24) & 0xFF;\n\n    for (i = 0; i <= 1; i++) {\n        if (i == 0) {\n            sp38 = -D_8032F754[sp34].unk0;\n        } else {\n            sp38 = D_8032F754[sp34].unk0;\n        }\n\n        sp2C = spawn_object_relative(i, 0, i * sp3C, sp38, o, MODEL_CHECKERBOARD_PLATFORM,\n                                     bhvCheckerboardPlatformSub);\n        sp2C->oCheckerBoardPlatformUnk1AC = D_8032F754[sp34].unk2;\n        vec3f_copy_2(sp2C->header.gfx.scale, D_8032F754[sp34].unk1);\n    }\n}\n\nvoid checkerboard_plat_act_move_y(UNUSED s32 unused, f32 vel, s32 a2) {\n    o->oMoveAnglePitch = 0;\n    o->oAngleVelPitch = 0;\n    o->oForwardVel = 0.0f;\n    o->oVelY = vel;\n    if (o->oTimer > a2) {\n        o->oAction++;\n    }\n}\n\nvoid checkerboard_plat_act_rotate(s32 a0, s16 a1) {\n    o->oVelY = 0.0f;\n    o->oAngleVelPitch = a1;\n    if (o->oTimer + 1 == 0x8000 / absi(a1)) {\n        o->oAction = a0;\n    }\n    o->oCheckerBoardPlatformUnkF8 = a0;\n}\n\nvoid bhv_checkerboard_platform_init(void) {\n    o->oCheckerBoardPlatformUnkFC = o->parentObj->oBhvParams2ndByte;\n}\n\nvoid bhv_checkerboard_platform_loop(void) {\n    f32 sp24 = o->oCheckerBoardPlatformUnk1AC;\n\n    o->oCheckerBoardPlatformUnkF8 = 0;\n\n    if (o->oDistanceToMario < 1000.0f) {\n        cur_obj_play_sound_1(SOUND_ENV_ELEVATOR4);\n    }\n\n    switch (o->oAction) {\n        case 0:\n            if (o->oBhvParams2ndByte == 0) {\n                o->oAction = 1;\n            } else {\n                o->oAction = 3;\n            }\n            break;\n        case 1:\n            checkerboard_plat_act_move_y(2, 10.0f, o->oCheckerBoardPlatformUnkFC);\n            break;\n        case 2:\n            checkerboard_plat_act_rotate(3, 512);\n            break;\n        case 3:\n            checkerboard_plat_act_move_y(4, -10.0f, o->oCheckerBoardPlatformUnkFC);\n            break;\n        case 4:\n            checkerboard_plat_act_rotate(1, -512);\n            break;\n    }\n\n    o->oMoveAnglePitch += absi(o->oAngleVelPitch);\n    o->oFaceAnglePitch += absi(o->oAngleVelPitch);\n    o->oFaceAngleYaw = o->oMoveAngleYaw;\n\n    if (o->oMoveAnglePitch != 0) {\n        o->oForwardVel = signum_positive(o->oAngleVelPitch) * sins(o->oMoveAnglePitch) * sp24;\n        o->oVelY = signum_positive(o->oAngleVelPitch) * coss(o->oMoveAnglePitch) * sp24;\n    }\n\n    if (o->oCheckerBoardPlatformUnkF8 == 1) {\n        o->oAngleVelPitch = 0;\n        o->oFaceAnglePitch &= ~0x7FFF;\n        cur_obj_move_using_fvel_and_gravity();\n    } else {\n        cur_obj_move_using_fvel_and_gravity();\n    }\n\n    load_object_collision_model();\n}\n"
  },
  {
    "path": "src/game/behaviors/chuckya.inc.c",
    "content": "// chuckya.inc.c\n\nstruct UnusedChuckyaData {\n    u8 unk0;\n    f32 unk4;\n    f32 unk8;\n};\n\nstruct UnusedChuckyaData sUnusedChuckyaData[] = {\n    { 2, 0.f,  1.f },\n    { 2, 10.f, 1.f },\n    { 2, 20.f, 1.f },\n    { 2, 20.f, 1.f },\n    { 8, 10.f, 1.f },\n};\n\nvoid common_anchor_mario_behavior(f32 sp28, f32 sp2C, s32 sp30) {\n    switch (o->parentObj->oChuckyaUnk88) {\n        case 0:\n            break;\n\n        case 1:\n            obj_set_gfx_pos_at_obj_pos(gMarioObject, o);\n            break;\n\n        case 2:\n            gMarioObject->oInteractStatus |= (INT_STATUS_MARIO_UNK2 + sp30);\n            gMarioStates[0].forwardVel = sp28;\n            gMarioStates[0].vel[1] = sp2C;\n            o->parentObj->oChuckyaUnk88 = 0;\n            break;\n\n        case 3:\n            gMarioObject->oInteractStatus |= (INT_STATUS_MARIO_UNK2 | INT_STATUS_MARIO_UNK6);\n            gMarioStates[0].forwardVel = 10.0f;\n            gMarioStates[0].vel[1] = 10.0f;\n            o->parentObj->oChuckyaUnk88 = 0;\n            break;\n    }\n\n    o->oMoveAngleYaw = o->parentObj->oMoveAngleYaw;\n\n    if (o->parentObj->activeFlags == ACTIVE_FLAG_DEACTIVATED) {\n        obj_mark_for_deletion(o);\n    }\n}\n\nvoid bhv_chuckya_anchor_mario_loop(void) {\n    common_anchor_mario_behavior(40.0f, 40.0f, INT_STATUS_MARIO_UNK6);\n}\n\ns32 unknown_chuckya_function(s32 sp20, f32 sp24, f32 sp28, s16 sp2C) {\n    s32 sp1C = 0;\n\n    if (o->oChuckyaUnkF8 != 4) {\n        if (sp24 < cur_obj_lateral_dist_from_mario_to_home()) {\n            if (cur_obj_lateral_dist_to_home() < 200.0f) {\n                sp1C = 0;\n            } else {\n                sp1C = 1;\n                o->oAngleToMario = cur_obj_angle_to_home();\n            }\n        } else if (o->oDistanceToMario > sp28) {\n            if (gGlobalTimer % sp2C == 0) {\n                o->oAngleToMario = obj_angle_to_object(o, gMarioObject);\n            }\n            sp1C = 2;\n        } else {\n            sp1C = 3;\n        }\n\n        if (sp20 && update_angle_from_move_flags(&o->oAngleToMario)) {\n            sp1C = 4;\n            o->oChuckyaUnkF8 = 4;\n        }\n    } else {\n        sp1C = 4;\n    }\n\n    return sp1C;\n}\n\ns32 approach_forward_vel(f32 *forwardVel, f32 spC, f32 sp10) {\n    s32 sp4 = 0;\n\n    if (*forwardVel > spC) {\n        *forwardVel -= sp10;\n        if (*forwardVel < spC) {\n            *forwardVel = spC;\n        }\n    } else if (*forwardVel < spC) {\n        *forwardVel += sp10;\n        if (*forwardVel > spC) {\n            *forwardVel = spC;\n        }\n    } else {\n        sp4 = 1;\n    }\n\n    return sp4;\n}\n\nvoid chuckya_act_0(void) {\n    s32 sp3C;\n    UNUSED u8 filler[16];\n    s32 sp28;\n#ifdef AVOID_UB\n    sp3C = 0;\n#endif\n\n    if (o->oTimer == 0) {\n        o->oChuckyaUnkFC = 0;\n    }\n\n    o->oAngleToMario = obj_angle_to_object(o, gMarioObject);\n\n    switch (sp28 = o->oSubAction) {\n        case 0:\n            o->oForwardVel = 0.0f;\n            if (cur_obj_lateral_dist_from_mario_to_home() < 2000.0f) {\n                cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x400);\n                if (o->oChuckyaUnkFC > 40\n                    || abs_angle_diff(o->oMoveAngleYaw, o->oAngleToMario) < 0x1000) {\n                    o->oSubAction = 1;\n                }\n            } else {\n                o->oSubAction = 3;\n            }\n            break;\n\n        case 1:\n            approach_forward_vel(&o->oForwardVel, 30.0f, 4.0f);\n            if (abs_angle_diff(o->oMoveAngleYaw, o->oAngleToMario) > 0x4000) {\n                o->oSubAction = 2;\n            }\n            if (cur_obj_lateral_dist_from_mario_to_home() > 2000.0f) {\n                o->oSubAction = 3;\n            }\n            break;\n\n        case 2:\n            approach_forward_vel(&o->oForwardVel, 0, 4.0f);\n            if (o->oChuckyaUnkFC > 48) {\n                o->oSubAction = 0;\n            }\n            break;\n\n        case 3:\n            if (cur_obj_lateral_dist_to_home() < 500.0f) {\n                o->oForwardVel = 0.0f;\n            } else {\n                approach_forward_vel(&o->oForwardVel, 10.0f, 4.0f);\n                o->oAngleToMario = cur_obj_angle_to_home();\n                cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x800);\n            }\n            if (cur_obj_lateral_dist_from_mario_to_home() < 1900.0f) {\n                o->oSubAction = 0;\n            }\n            break;\n    }\n\n    if (o->oSubAction != sp28) {\n        o->oChuckyaUnkFC = 0;\n    } else {\n        o->oChuckyaUnkFC++;\n    }\n\n    cur_obj_init_animation_with_sound(4);\n\n    if (o->oForwardVel > 1.0f) {\n        cur_obj_play_sound_1(SOUND_AIR_CHUCKYA_MOVE);\n    }\n\n    print_debug_bottom_up(\"fg %d\", sp3C);\n    print_debug_bottom_up(\"sp %d\", o->oForwardVel);\n}\n\nvoid chuckya_act_1(void) {\n    if (o->oSubAction == 0) {\n        if (cur_obj_init_animation_and_check_if_near_end(0)) {\n            o->oSubAction++;\n        }\n        o->oChuckyaUnkFC = random_float() * 30.0f + 10.0f;\n        o->oChuckyaUnk100 = 0;\n        o->oForwardVel = 0.0f;\n    } else {\n        if (o->oSubAction == 1) {\n            o->oChuckyaUnk100 += player_performed_grab_escape_action();\n            print_debug_bottom_up(\"%d\", o->oChuckyaUnk100);\n            if (o->oChuckyaUnk100 > 10) {\n                o->oChuckyaUnk88 = 3;\n                o->oAction = 3;\n                o->oInteractStatus &= ~INT_STATUS_GRABBED_MARIO;\n            } else {\n                cur_obj_init_animation_with_sound(1);\n                o->oMoveAngleYaw += INT_STATUS_GRABBED_MARIO;\n                if (o->oChuckyaUnkFC-- < 0\n                    && (check_if_moving_over_floor(50.0f, 150.0f) || o->oChuckyaUnkFC < -16)) {\n                    o->oSubAction++;\n                }\n            }\n        } else {\n            cur_obj_init_animation_with_sound(3);\n            if (cur_obj_check_anim_frame(18)) {\n                cur_obj_play_sound_2(SOUND_OBJ_UNKNOWN4);\n                o->oChuckyaUnk88 = 2;\n                o->oAction = 3;\n                o->oInteractStatus &= ~INT_STATUS_GRABBED_MARIO;\n            }\n        }\n    }\n}\n\nvoid chuckya_act_3(void) {\n    o->oForwardVel = 0.0f;\n    o->oVelY = 0.0f;\n    cur_obj_init_animation_with_sound(4);\n    if (o->oTimer > 100) {\n        o->oAction = 0;\n    }\n}\n\nvoid chuckya_act_2(void) {\n    if (o->oMoveFlags & (OBJ_MOVE_HIT_WALL | OBJ_MOVE_MASK_IN_WATER | OBJ_MOVE_LANDED)) {\n        obj_mark_for_deletion(o);\n        obj_spawn_loot_yellow_coins(o, 5, 20.0f);\n        spawn_mist_particles_with_sound(SOUND_OBJ_CHUCKYA_DEATH);\n    }\n}\n\nvoid (*sChuckyaActions[])(void) = {\n    chuckya_act_0,\n    chuckya_act_1,\n    chuckya_act_2,\n    chuckya_act_3,\n};\n\nvoid chuckya_move(void) {\n    cur_obj_update_floor_and_walls();\n    cur_obj_call_action_function(sChuckyaActions);\n    cur_obj_move_standard(-30);\n    if (o->oInteractStatus & INT_STATUS_GRABBED_MARIO) {\n        o->oAction = 1;\n        o->oChuckyaUnk88 = 1;\n        cur_obj_play_sound_2(SOUND_OBJ_UNKNOWN3);\n    }\n}\n\nvoid bhv_chuckya_loop(void) {\n    f32 sp2C = 20.0f;\n    f32 sp28 = 50.0f;\n\n    cur_obj_scale(2.0f);\n    o->oInteractionSubtype |= INT_SUBTYPE_GRABS_MARIO;\n\n    switch (o->oHeldState) {\n        case HELD_FREE:\n            chuckya_move();\n            break;\n        case HELD_HELD:\n            cur_obj_unrender_set_action_and_anim(2, 0);\n            break;\n        case HELD_THROWN:\n        case HELD_DROPPED:\n            cur_obj_get_thrown_or_placed(sp2C, sp28, 2);\n            break;\n    }\n\n    o->oInteractStatus = 0;\n\n    print_debug_bottom_up(\"md %d\", o->oAction);\n}\n"
  },
  {
    "path": "src/game/behaviors/clam.inc.c",
    "content": "// clam.inc.c\n\nstruct ObjectHitbox sClamShellHitbox = {\n    /* interactType:      */ INTERACT_CLAM_OR_BUBBA,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 2,\n    /* health:            */ 99,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 150,\n    /* height:            */ 80,\n    /* hurtboxRadius:     */ 150,\n    /* hurtboxHeight:     */ 80,\n};\n\nvoid clam_act_0(void) {\n    if (cur_obj_init_anim_check_frame(0, 25)) {\n        cur_obj_play_sound_2(SOUND_GENERAL_CLAM_SHELL3);\n        spawn_mist_from_global();\n        cur_obj_become_tangible();\n\n        o->oClamUnkF4 = 10;\n        o->oTimer = 0;\n    } else if (o->oTimer > 150 && o->oDistanceToMario < 500.0f) {\n        cur_obj_play_sound_2(SOUND_GENERAL_CLAM_SHELL2);\n        o->oAction = 1;\n    } else if (o->oClamUnkF4 != 0) {\n        o->oClamUnkF4--;\n        cur_obj_shake_y(3.0f);\n    }\n}\n\nvoid clam_act_1(void) {\n    s16 val06;\n\n    if (o->oTimer > 150) {\n        o->oAction = 0;\n    } else if (obj_is_rendering_enabled() && cur_obj_init_anim_check_frame(1, 8)) {\n        for (val06 = -0x2000; val06 < 0x2000; val06 += 0x555) {\n            s16 val04 = (s16)(100.0f * sins(val06));\n            s16 val02 = (s16)(100.0f * coss(val06));\n\n            spawn_object_relative(0, val04, 30, val02, o, MODEL_BUBBLE, bhvBubbleMaybe);\n        }\n    } else if (cur_obj_check_anim_frame(30)) {\n        cur_obj_become_intangible();\n    }\n}\n\nvoid bhv_clam_loop(void) {\n    o->header.gfx.scale[1] = 1.5f;\n\n    switch (o->oAction) {\n        case 0:\n            clam_act_0();\n            break;\n        case 1:\n            clam_act_1();\n            break;\n    }\n\n    obj_check_attacks(&sClamShellHitbox, o->oAction);\n}\n"
  },
  {
    "path": "src/game/behaviors/clock_arm.inc.c",
    "content": "// clock_arm.inc.c\n\n/**\n * Main loop of the hour and minute hands of the Tick Tock Clock painting.\n */\nvoid bhv_rotating_clock_arm_loop(void) {\n    struct Surface *marioSurface;\n    u16 rollAngle = o->oFaceAngleRoll;\n\n    o->oFloorHeight =\n        find_floor(gMarioObject->oPosX, gMarioObject->oPosY, gMarioObject->oPosZ, &marioSurface);\n\n    // Seems to make sure Mario is on a default surface & 4 frames pass before\n    //   allowing him to change the Tick Tock Clock speed setting.\n    // Probably a safety check for when you leave the level through the painting\n    //   to make sure the setting isn't accidentally locked in as you fly out.\n    if (o->oAction == 0) {\n        if (marioSurface->type == SURFACE_DEFAULT && o->oTimer >= 4) {\n            o->oAction++;\n        }\n    } else if (o->oAction == 1) {\n        // If Mario is touching the Tick Tock Clock painting...\n        if (marioSurface != NULL\n            && (marioSurface->type == SURFACE_TTC_PAINTING_1\n                || marioSurface->type == SURFACE_TTC_PAINTING_2\n                || marioSurface->type == SURFACE_TTC_PAINTING_3)) {\n            // And this is the minute hand...\n            if (cur_obj_has_behavior(bhvClockMinuteHand)) {\n                // Set Tick Tick Clock's speed based on the angle of the hand.\n                // The angle actually counting down from 0xFFFF to 0 so\n                //   11 o'clock is a small value and 1 o'clock is a large value.\n                if (rollAngle < 0xAAA) { // > 345 degrees from 12 o'clock.\n                    gTTCSpeedSetting = TTC_SPEED_STOPPED;\n                } else if (rollAngle < 0x6AA4) { // 210..345 degrees from 12 o'clock.\n                    gTTCSpeedSetting = TTC_SPEED_FAST;\n                } else if (rollAngle < 0x954C) { // 150..210 degrees from 12 o'clock.\n                    gTTCSpeedSetting = TTC_SPEED_RANDOM;\n                } else if (rollAngle < 0xF546) { // 15..150 degrees from 12 o'clock.\n                    gTTCSpeedSetting = TTC_SPEED_SLOW;\n                } else { // < 15 degrees from 12 o'clock.\n                    gTTCSpeedSetting = TTC_SPEED_STOPPED;\n                }\n            }\n\n            // Increment the action to stop animating the hands.\n            o->oAction++;\n        } else {\n        }\n    }\n\n    // Only rotate the hands until Mario enters the painting.\n    if (o->oAction < 2) {\n        cur_obj_rotate_face_angle_using_vel();\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/cloud.inc.c",
    "content": "\n/**\n * Behavior for bhvCloud and bhvCloudPart.\n * bhvCloud includes both fwoosh and the cloud that lakitu rides (both nice and\n * evil).\n * bhvCloudPart is spawned by bhvCloud and is either a \"chunk\" of cloud, or fwoosh's\n * face. It is purely visual.\n * If spawned by a lakitu, its parent will be the lakitu.\n * Processing order is lakitu -> cloud -> its cloud parts.\n */\n\n/**\n * The relative heights of each cloud part.\n */\nstatic s8 sCloudPartHeights[] = { 11, 8, 12, 8, 9, 9 };\n\n/**\n * Spawn the visual parts of the cloud, including fwoosh's face.\n */\nstatic void cloud_act_spawn_parts(void) {\n    struct Object *cloudPart;\n    s32 i;\n\n    // Spawn the pieces of the cloud itself\n    for (i = 0; i <= 4; i++) {\n        cloudPart = spawn_object_relative(i, 0, 0, 0, o, MODEL_MIST, bhvCloudPart);\n\n        if (cloudPart != NULL) {\n            obj_set_billboard(cloudPart);\n        }\n    }\n\n    if (o->oBhvParams2ndByte == CLOUD_BP_FWOOSH) {\n        // Spawn fwoosh's face\n        spawn_object_relative(5, 0, 0, 0, o, MODEL_FWOOSH, bhvCloudPart);\n\n        cur_obj_scale(3.0f);\n\n        o->oCloudCenterX = o->oPosX;\n        o->oCloudCenterY = o->oPosY;\n    }\n\n    o->oAction = CLOUD_ACT_MAIN;\n}\n\n/**\n * Wait for mario to approach, then unhide and enter the spawn parts action.\n */\nstatic void cloud_act_fwoosh_hidden(void) {\n    if (o->oDistanceToMario < 2000.0f) {\n        cur_obj_unhide();\n        o->oAction = CLOUD_ACT_SPAWN_PARTS;\n    }\n}\n\n/**\n * Move in a circle. Unload if mario moves far away. If mario stays close for\n * long enough, blow wind at him.\n */\nstatic void cloud_fwoosh_update(void) {\n    if (o->oDistanceToMario > 2500.0f) {\n        o->oAction = CLOUD_ACT_UNLOAD;\n    } else {\n        if (o->oCloudBlowing) {\n            o->header.gfx.scale[0] += o->oCloudGrowSpeed;\n\n            if ((o->oCloudGrowSpeed -= 0.005f) < -0.16f) {\n                // Stop blowing once we are shrinking faster than -0.16\n                o->oCloudBlowing = o->oTimer = 0;\n            } else if (o->oCloudGrowSpeed < -0.1f) {\n                // Start blowing once we start shrinking faster than -0.1\n                cur_obj_play_sound_1(SOUND_AIR_BLOW_WIND);\n                cur_obj_spawn_strong_wind_particles(12, 3.0f, 0.0f, -50.0f, 120.0f);\n            } else {\n                cur_obj_play_sound_1(SOUND_ENV_WIND1);\n            }\n        } else {\n            // Return to normal size\n            approach_f32_ptr(&o->header.gfx.scale[0], 3.0f, 0.012f);\n            o->oCloudFwooshMovementRadius += 0xC8;\n\n            // If mario stays nearby for 100 frames, begin blowing\n            if (o->oDistanceToMario < 1000.0f) {\n                if (o->oTimer > 100) {\n                    o->oCloudBlowing = TRUE;\n                    o->oCloudGrowSpeed = 0.14f;\n                }\n            } else {\n                o->oTimer = 0;\n            }\n\n            o->oCloudCenterX = o->oHomeX + 100.0f * coss(o->oCloudFwooshMovementRadius);\n            o->oPosZ = o->oHomeZ + 100.0f * sins(o->oCloudFwooshMovementRadius);\n            o->oCloudCenterY = o->oHomeY;\n        }\n\n        cur_obj_scale(o->header.gfx.scale[0]);\n    }\n}\n\n/**\n * Main update function for bhvCloud. This controls the cloud's movement, when it\n * unloads, and when fwoosh blows wind.\n */\nstatic void cloud_act_main(void) {\n    s16 localOffsetPhase = 0x800 * gGlobalTimer;\n    f32 localOffset;\n\n    if (o->parentObj != o) {\n        // Despawn if the parent lakitu does\n        if (o->parentObj->activeFlags == ACTIVE_FLAG_DEACTIVATED) {\n            o->oAction = CLOUD_ACT_UNLOAD;\n        } else {\n            o->oCloudCenterX = o->parentObj->oPosX;\n            o->oCloudCenterY = o->parentObj->oPosY;\n            o->oPosZ = o->parentObj->oPosZ;\n\n            o->oMoveAngleYaw = o->parentObj->oFaceAngleYaw;\n        }\n    } else if (o->oBhvParams2ndByte != CLOUD_BP_FWOOSH) {\n        // This code should never run, since a lakitu cloud should always have\n        // a parent\n        if (o->oDistanceToMario > 1500.0f) {\n            o->oAction = CLOUD_ACT_UNLOAD;\n        }\n    } else {\n        cloud_fwoosh_update();\n    }\n\n    localOffset = 2 * coss(localOffsetPhase) * o->header.gfx.scale[0];\n\n    o->oPosX = o->oCloudCenterX + localOffset;\n    o->oPosY = o->oCloudCenterY + localOffset + 12.0f * o->header.gfx.scale[0];\n}\n\n/**\n * If fwoosh, return to home and hide. If lakitu cloud, despawn.\n * This action informs the cloud parts to despawn.\n */\nstatic void cloud_act_unload(void) {\n    if (o->oBhvParams2ndByte != CLOUD_BP_FWOOSH) {\n        obj_mark_for_deletion(o);\n    } else {\n        o->oAction = CLOUD_ACT_FWOOSH_HIDDEN;\n        cur_obj_hide();\n        cur_obj_set_pos_to_home();\n    }\n}\n\n/**\n * Update function for bhvCloud.\n */\nvoid bhv_cloud_update(void) {\n    switch (o->oAction) {\n        case CLOUD_ACT_SPAWN_PARTS:\n            cloud_act_spawn_parts();\n            break;\n        case CLOUD_ACT_MAIN:\n            cloud_act_main();\n            break;\n        case CLOUD_ACT_UNLOAD:\n            cloud_act_unload();\n            break;\n        case CLOUD_ACT_FWOOSH_HIDDEN:\n            cloud_act_fwoosh_hidden();\n            break;\n    }\n}\n\n/**\n * Update function for bhvCloudPart. Follow the parent cloud with some oscillation.\n */\nvoid bhv_cloud_part_update(void) {\n    if (o->parentObj->oAction == CLOUD_ACT_UNLOAD) {\n        obj_mark_for_deletion(o);\n    } else {\n        f32 scale = 2.0f / 3.0f * o->parentObj->header.gfx.scale[0];\n        s16 angleFromCenter = o->parentObj->oFaceAngleYaw + 0x10000 / 5 * o->oBhvParams2ndByte;\n\n        // Takes 32 frames to cycle\n        s16 localOffsetPhase = 0x800 * gGlobalTimer + 0x4000 * o->oBhvParams2ndByte;\n        f32 localOffset;\n\n        f32 cloudRadius;\n\n        cur_obj_scale(scale);\n\n        // Cap fwoosh's face size\n        if (o->oBhvParams2ndByte == 5 && scale > 2.0f) {\n            scale = o->header.gfx.scale[1] = 2.0f;\n        }\n\n        // Move back and forth along (1, 1, 1)\n        localOffset = 2 * coss(localOffsetPhase) * scale;\n\n        cloudRadius = 25.0f * scale;\n\n        o->oPosX = o->parentObj->oCloudCenterX + cloudRadius * sins(angleFromCenter) + localOffset;\n\n        o->oPosY =\n            o->parentObj->oCloudCenterY + localOffset + scale * sCloudPartHeights[o->oBhvParams2ndByte];\n\n        o->oPosZ = o->parentObj->oPosZ + cloudRadius * coss(angleFromCenter) + localOffset;\n\n        o->oFaceAngleYaw = o->parentObj->oFaceAngleYaw;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/coffin.inc.c",
    "content": "\n/**\n * Behavior for bhvCoffinSpawner and bhvCoffin.\n * The coffins are spawned by a singular spawner,\n * with half being able to stand up.\n * Coffins unload after leaving the room.\n */\n\n/**\n * Struct with s16 values for a horizontal position.\n */\nstruct LateralPosition {\n    s16 x;\n    s16 z;\n};\n\n/**\n * Array of positions for all coffins relative to their spawner.\n */\nstruct LateralPosition coffinRelativePos[] = {\n    { 412, -150 }, { 762, -150 }, { 1112, -150 },\n    { 412,  150 }, { 762,  150 }, { 1112,  150 },\n};\n\n/**\n * Loop behavior for the object that spawns the six coffins in BBH.\n * Loads the coffins when in the room, they unload themselves.\n */\nvoid bhv_coffin_spawner_loop(void) {\n    struct Object *coffin;\n    s32 i;\n    s16 relativeZ;\n\n    if (o->oAction == COFFIN_SPAWNER_ACT_COFFINS_UNLOADED) {\n        if (!(o->activeFlags & ACTIVE_FLAG_IN_DIFFERENT_ROOM)) {\n            for (i = 0; i < 6; i++) {\n                relativeZ = coffinRelativePos[i].z;\n\n                // Behavior param of 0 for all even i, 1 for all odd\n                coffin = spawn_object_relative(i & 1, coffinRelativePos[i].x, 0, relativeZ, o,\n                                               MODEL_BBH_WOODEN_TOMB, bhvCoffin);\n\n                // Never true, game would enter a while(1) before it could.\n                // Possible a remnant of days this didn't happen.\n                if (coffin != NULL) {\n                    // Rotate the coffin 180 degrees if its on the other side of the room.\n                    if (relativeZ > 0) {\n                        coffin->oFaceAngleYaw = 0x8000;\n                    }\n                }\n            }\n\n            o->oAction++;\n        }\n    } else if (o->activeFlags & ACTIVE_FLAG_IN_DIFFERENT_ROOM) {\n        o->oAction = COFFIN_SPAWNER_ACT_COFFINS_UNLOADED;\n    }\n}\n\n/**\n * The main action for the coffins. Coffins with COFFIN_BP_STATIC skip the behavior, while\n * the other coffins will enter a standing action when Mario is near.\n * Also controls laying the coffin down after it has stood up.\n */\nvoid coffin_act_idle(void) {\n    if (o->oBhvParams2ndByte != COFFIN_BP_STATIC) {\n        // Lay down if standing\n        if (o->oFaceAnglePitch != 0) {\n            o->oAngleVelPitch = approach_s16_symmetric(o->oAngleVelPitch, -2000, 200);\n\n            // If the coffin landed...\n            if (obj_face_pitch_approach(0, -o->oAngleVelPitch)) {\n                cur_obj_play_sound_2(SOUND_GENERAL_ELEVATOR_MOVE_2);\n\n                // This bit changes the coffin's position,\n                // spawns dust there, then resets the position.\n                obj_perform_position_op(POS_OP_SAVE_POSITION);\n                o->oMoveAngleYaw = o->oFaceAngleYaw - 0x4000;\n                obj_set_dist_from_home(200.0f);\n                spawn_mist_from_global();\n                obj_perform_position_op(POS_OP_RESTORE_POSITION);\n            }\n\n            o->oTimer = 0;\n        } else {\n            // Yaw never changes and is aligned, so yawCos = 1 or -1, yawSin = 0\n            f32 yawCos = coss(o->oFaceAngleYaw);\n            f32 yawSin = sins(o->oFaceAngleYaw);\n\n            f32 dx = gMarioObject->oPosX - o->oPosX;\n            f32 dz = gMarioObject->oPosZ - o->oPosZ;\n\n            f32 distForwards = dx * yawCos + dz * yawSin;\n            f32 distSideways = dz * yawCos - dx * yawSin;\n\n            // This checks a box around the coffin and if it has been a bit since it stood up.\n            // It also checks in the case Mario is squished, so he doesn't get permanently squished.\n            if (o->oTimer > 60\n                && (o->oDistanceToMario > 100.0f || gMarioState->action == ACT_SQUISHED)\n                && gMarioObject->oPosY - o->oPosY < 200.0f && absf(distForwards) < 140.0f\n                && distSideways < 150.0f && distSideways > -450.0f) {\n                cur_obj_play_sound_2(SOUND_GENERAL_BUTTON_PRESS_2_LOWPRIO);\n                o->oAction = COFFIN_ACT_STAND_UP;\n            }\n\n            o->oAngleVelPitch = 0;\n        }\n    }\n}\n\n/**\n * Stand up the coffin and keep it standing until the timer hits 60.\n */\nvoid coffin_act_stand_up(void) {\n    // Stand up\n    if (o->oFaceAnglePitch != 0x4000) {\n        o->oAngleVelPitch = approach_s16_symmetric(o->oAngleVelPitch, 1000, 200);\n        obj_face_pitch_approach(0x4000, o->oAngleVelPitch);\n    } else {\n        // Stay standing\n        if (o->oTimer > 60) {\n            o->oAction = COFFIN_ACT_IDLE;\n            o->oFaceAngleRoll = 0;\n        } else if (o->oTimer > 30) {\n            if (gGlobalTimer % 4 == 0) {\n                cur_obj_play_sound_2(SOUND_GENERAL_ELEVATOR_MOVE_2);\n            }\n            // Shake the coffin while its standing\n            o->oFaceAngleRoll = 400 * (gGlobalTimer % 2) - 200;\n        }\n\n        o->oAngleVelPitch = 0;\n    }\n}\n\n/**\n * Main behavior for each coffin. Unloads the coffin if the spawner enters\n * that action.\n */\nvoid bhv_coffin_loop(void) {\n    // Gotta save those 6 object slots\n    if (o->parentObj->oAction == COFFIN_SPAWNER_ACT_COFFINS_UNLOADED) {\n        obj_mark_for_deletion(o);\n    } else {\n        // Scale the coffin vertically? Must have thought it was too short?\n        o->header.gfx.scale[1] = 1.1f;\n\n        switch (o->oAction) {\n            case COFFIN_ACT_IDLE:\n                coffin_act_idle();\n                break;\n            case COFFIN_ACT_STAND_UP:\n                coffin_act_stand_up();\n                break;\n        }\n\n        load_object_collision_model();\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/coin.inc.c",
    "content": "// coin.inc.c\n\nstruct ObjectHitbox sYellowCoinHitbox = {\n    /* interactType:      */ INTERACT_COIN,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 1,\n    /* health:            */ 0,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 100,\n    /* height:            */ 64,\n    /* hurtboxRadius:     */ 0,\n    /* hurtboxHeight:     */ 0,\n};\n\ns32 bhv_coin_sparkles_init(void) {\n    if (o->oInteractStatus & INT_STATUS_INTERACTED\n        && !(o->oInteractStatus & INT_STATUS_TOUCHED_BOB_OMB)) {\n        spawn_object(o, MODEL_SPARKLES, bhvGoldenCoinSparkles);\n        obj_mark_for_deletion(o);\n        return TRUE;\n    }\n\n    o->oInteractStatus = 0;\n\n    return FALSE;\n}\n\nvoid bhv_yellow_coin_init(void) {\n    cur_obj_set_behavior(bhvYellowCoin);\n    obj_set_hitbox(o, &sYellowCoinHitbox);\n    bhv_init_room();\n    cur_obj_update_floor_height();\n\n    if (500.0f < absf(o->oPosY - o->oFloorHeight)) {\n        cur_obj_set_model(MODEL_YELLOW_COIN_NO_SHADOW);\n    }\n\n    if (o->oFloorHeight < FLOOR_LOWER_LIMIT_MISC) {\n        obj_mark_for_deletion(o);\n    }\n}\n\nvoid bhv_yellow_coin_loop(void) {\n    bhv_coin_sparkles_init();\n    o->oAnimState++;\n}\n\nvoid bhv_temp_coin_loop(void) {\n    o->oAnimState++;\n\n    if (cur_obj_wait_then_blink(200, 20)) {\n        obj_mark_for_deletion(o);\n    }\n\n    bhv_coin_sparkles_init();\n}\n\nvoid bhv_spawned_coin_init(void) {\n    o->oVelY = random_float() * 10.0f + 30.0f + o->oCoinBaseVelY;\n    o->oForwardVel = random_float() * 10.0f;\n    o->oMoveAngleYaw = random_u16();\n\n    cur_obj_set_behavior(bhvYellowCoin);\n    obj_set_hitbox(o, &sYellowCoinHitbox);\n    cur_obj_become_intangible();\n}\n\nvoid bhv_spawned_coin_loop(void) {\n    struct Surface *floor;\n\n    cur_obj_update_floor_and_walls();\n    cur_obj_if_hit_wall_bounce_away();\n    cur_obj_move_standard(-62);\n\n    if ((floor = o->oFloor) != NULL) {\n        if (o->oMoveFlags & OBJ_MOVE_ON_GROUND) {\n            o->oSubAction = 1;\n        }\n        if (o->oSubAction == 1) {\n            o->oBounciness = 0;\n            if (floor->normal.y < 0.9) {\n                s16 sp1A = atan2s(floor->normal.z, floor->normal.x);\n                cur_obj_rotate_yaw_toward(sp1A, 0x400);\n            }\n        }\n    }\n\n    if (o->oTimer == 0) {\n        cur_obj_play_sound_2(SOUND_GENERAL_COIN_SPURT);\n    }\n\n    if (o->oVelY < 0.0f) {\n        cur_obj_become_tangible();\n    }\n\n    if (o->oMoveFlags & OBJ_MOVE_LANDED) {\n#ifndef VERSION_JP\n        if (o->oMoveFlags & (OBJ_MOVE_ABOVE_DEATH_BARRIER | OBJ_MOVE_ABOVE_LAVA))\n#else\n        if (o->oMoveFlags & OBJ_MOVE_ABOVE_LAVA)\n#endif\n        {\n            obj_mark_for_deletion(o);\n        }\n    }\n\n    if (o->oMoveFlags & OBJ_MOVE_BOUNCE) {\n#ifndef VERSION_JP\n        if (o->oCoinNumBounceSoundPlayed < 5) {\n#endif\n            cur_obj_play_sound_2(SOUND_GENERAL_COIN_DROP);\n#ifndef VERSION_JP\n        }\n        o->oCoinNumBounceSoundPlayed++;\n#endif\n    }\n\n    if (cur_obj_wait_then_blink(400, 20)) {\n        obj_mark_for_deletion(o);\n    }\n\n    bhv_coin_sparkles_init();\n}\n\nvoid bhv_coin_formation_spawn_loop(void) {\n    if (o->oTimer == 0) {\n        cur_obj_set_behavior(bhvYellowCoin);\n        obj_set_hitbox(o, &sYellowCoinHitbox);\n        bhv_init_room();\n\n        if (o->oCoinOnGround) {\n            o->oPosY += 300.0f;\n            cur_obj_update_floor_height();\n\n            if (o->oPosY < o->oFloorHeight || o->oFloorHeight < FLOOR_LOWER_LIMIT_MISC) {\n                obj_mark_for_deletion(o);\n            } else {\n                o->oPosY = o->oFloorHeight;\n            }\n        } else {\n            cur_obj_update_floor_height();\n\n            if (absf(o->oPosY - o->oFloorHeight) > 250.0f) {\n                cur_obj_set_model(MODEL_YELLOW_COIN_NO_SHADOW);\n            }\n        }\n    } else {\n        if (bhv_coin_sparkles_init()) {\n            o->parentObj->oCoinCollectedFlags |= bit_shift_left(o->oBhvParams2ndByte);\n        }\n        o->oAnimState++;\n    }\n\n    if (o->parentObj->oAction == COIN_FORMATION_ACT_RESPAWN_COINS) {\n        obj_mark_for_deletion(o);\n    }\n}\n\ns16 sCoinArrowPositions[][2] = {\n    { 0, -150 },\n    { 0, -50 },\n    { 0, 50 },\n    { 0, 150 },\n    { -50, 100 },\n    { -100, 50 },\n    { 50, 100 },\n    { 100, 50 },\n};\n\nvoid spawn_coin_in_formation(s32 coinIndex, s32 coinFormationFlags) {\n    struct Object *coinSpawner;\n    Vec3i pos;\n    s32 setSpawner = TRUE;\n    s32 onGround = TRUE;\n\n    pos[0] = pos[1] = pos[2] = 0;\n\n    switch (coinFormationFlags & COIN_FORMATION_BP_FLAG_MASK) {\n        case COIN_FORMATION_BP_LINE_HORIZONTAL:\n            pos[2] = 160 * (coinIndex - 2);\n            if (coinIndex > 4) {\n                setSpawner = FALSE;\n            }\n            break;\n\n        case COIN_FORMATION_BP_LINE_VERTICAL:\n            onGround = FALSE;\n            pos[1] = 160 * coinIndex * 0.8; // 128 * coinIndex\n            if (coinIndex > 4) {\n                setSpawner = FALSE;\n            }\n            break;\n\n        case COIN_FORMATION_BP_RING_HORIZONTAL:\n            pos[0] = sins(coinIndex << 13) * 300.0f;\n            pos[2] = coss(coinIndex << 13) * 300.0f;\n            break;\n\n        case COIN_FORMATION_BP_RING_VERTICAL:\n            onGround = FALSE;\n            pos[0] = coss(coinIndex << 13) * 200.0f;\n            pos[1] = sins(coinIndex << 13) * 200.0f + 200.0f;\n            break;\n\n        case COIN_FORMATION_BP_ARROW:\n            pos[0] = sCoinArrowPositions[coinIndex][0];\n            pos[2] = sCoinArrowPositions[coinIndex][1];\n            break;\n    }\n\n    if (coinFormationFlags & COIN_FORMATION_BP_FLAG_FLYING) {\n        onGround = FALSE;\n    }\n\n    if (setSpawner) {\n        coinSpawner = spawn_object_relative(coinIndex, pos[0], pos[1], pos[2], o,\n                                            MODEL_YELLOW_COIN, bhvCoinFormationSpawn);\n        coinSpawner->oCoinOnGround = onGround;\n    }\n}\n\nvoid bhv_coin_formation_init(void) {\n    o->oCoinCollectedFlags = (o->oBhvParams >> 8) & 0xFF;\n}\n\nvoid bhv_coin_formation_loop(void) {\n    s32 coinIndex;\n\n    switch (o->oAction) {\n        case COIN_FORMATION_ACT_SPAWN_COINS:\n            if (o->oDistanceToMario < 2000.0f) {\n                for (coinIndex = 0; coinIndex <= 7; coinIndex++) {\n                    if (!(o->oCoinCollectedFlags & (1 << coinIndex))) {\n                        spawn_coin_in_formation(coinIndex, o->oBhvParams2ndByte);\n                    }\n                }\n                o->oAction++;\n            }\n            break;\n\n        case COIN_FORMATION_ACT_IDLE:\n            if (o->oDistanceToMario > 2100.0f) {\n                o->oAction++;\n            }\n            break;\n\n        case COIN_FORMATION_ACT_RESPAWN_COINS:\n            o->oAction = COIN_FORMATION_ACT_SPAWN_COINS;\n            break;\n    }\n\n    set_object_respawn_info_bits(o, o->oCoinCollectedFlags & 0xFF);\n}\n\nvoid coin_inside_boo_act_1(void) {\n    cur_obj_update_floor_and_walls();\n    cur_obj_if_hit_wall_bounce_away();\n\n    if (o->oMoveFlags & OBJ_MOVE_BOUNCE) {\n        cur_obj_play_sound_2(SOUND_GENERAL_COIN_DROP);\n    }\n\n    if (o->oTimer > 90 || (o->oMoveFlags & OBJ_MOVE_LANDED)) {\n        obj_set_hitbox(o, &sYellowCoinHitbox);\n        cur_obj_become_tangible();\n        cur_obj_set_behavior(bhvYellowCoin);\n    }\n\n    cur_obj_move_standard(-30);\n    bhv_coin_sparkles_init();\n\n    if (cur_obj_has_model(MODEL_BLUE_COIN)) {\n        o->oDamageOrCoinValue = 5;\n    }\n\n    if (cur_obj_wait_then_blink(400, 20)) {\n        obj_mark_for_deletion(o);\n    }\n}\n\nvoid coin_inside_boo_act_0(void) {\n    s16 sp26;\n    f32 sp20;\n    struct Object *parent = o->parentObj;\n\n    cur_obj_become_intangible();\n\n    if (o->oTimer == 0 && gCurrLevelNum == LEVEL_BBH) {\n        cur_obj_set_model(MODEL_BLUE_COIN);\n        cur_obj_scale(0.7f);\n    }\n\n    obj_copy_pos(o, parent);\n\n    if (parent->oBooDeathStatus == BOO_DEATH_STATUS_DYING) {\n        o->oAction = 1;\n        sp26 = gMarioObject->oMoveAngleYaw;\n        sp20 = 3.0f;\n        o->oVelX = sins(sp26) * sp20;\n        o->oVelZ = coss(sp26) * sp20;\n        o->oVelY = 35.0f;\n    }\n}\n\nvoid (*sCoinInsideBooActions[])(void) = {\n    coin_inside_boo_act_0,\n    coin_inside_boo_act_1,\n};\n\nvoid bhv_coin_inside_boo_loop(void) {\n    cur_obj_call_action_function(sCoinInsideBooActions);\n}\n\nvoid bhv_coin_sparkles_loop(void) {\n    cur_obj_scale(0.6f);\n}\n\nvoid bhv_golden_coin_sparkles_loop(void) {\n    struct Object *sparkles;\n    UNUSED u8 filler[4];\n    f32 sp24 = 30.0f;\n\n    sparkles = spawn_object(o, MODEL_SPARKLES, bhvCoinSparkles);\n    sparkles->oPosX += random_float() * sp24 - sp24 / 2;\n    sparkles->oPosZ += random_float() * sp24 - sp24 / 2;\n}\n"
  },
  {
    "path": "src/game/behaviors/collide_particles.inc.c",
    "content": "// collide_particles.inc.c\n\nstatic s16 sTinyTriMovementParams[] = { 0xD000, 0,      0x3000, 0,      0xDE67, 0x2199,\n                                        0x2199, 0x2199, 0xDE67, 0xDE67, 0x2199, 0xDE67 };\n\nstatic s16 sTinyStarMovementParams[] = { 0xE000, 0,      0,      0,      0x2000, 0,      0xE99A,\n                                         0x1666, 0x1666, 0x1666, 0xE99A, 0xE99A, 0x1666, 0xE99A };\n\nvoid bhv_punch_tiny_triangle_loop(void) {\n    if (o->oTimer == 0) {\n        s16 sp1E = o->oMoveAngleYaw;\n        o->oCollisionParticleUnkF4 = 1.28f;\n        cur_obj_set_pos_relative(gMarioObject, 0.0f, 60.0f, 100.0f);\n        o->oMoveAngleYaw = sp1E;\n    }\n\n    cur_obj_move_using_fvel_and_gravity();\n    o->oAnimState = 5;\n    cur_obj_scale(o->oCollisionParticleUnkF4);\n    o->oCollisionParticleUnkF4 -= 0.2f;\n\n    if (gDebugInfo[DEBUG_PAGE_EFFECTINFO][0] + 6 < o->oTimer) {\n        obj_mark_for_deletion(o);\n    }\n}\n\nvoid bhv_punch_tiny_triangle_init(void) {\n    s32 i;\n    UNUSED u8 filler[4];\n\n    for (i = 0; i < 6; i++) {\n        struct Object *triangle = spawn_object(o, MODEL_DIRT_ANIMATION, bhvPunchTinyTriangle);\n        triangle->oMoveAngleYaw = gMarioObject->oMoveAngleYaw + sTinyTriMovementParams[2 * i] + 0x8000;\n        triangle->oVelY = sins(sTinyTriMovementParams[2 * i + 1]) * 25.0f;\n        triangle->oForwardVel = coss(sTinyTriMovementParams[2 * i + 1]) * 25.0f;\n    }\n}\n\nvoid bhv_wall_tiny_star_particle_loop(void) {\n    if (o->oTimer == 0) {\n        s16 sp1E = o->oMoveAngleYaw;\n        o->oCollisionParticleUnkF4 = 0.28f;\n        cur_obj_set_pos_relative(gMarioObject, 0.0f, 30.0f, 110.0f);\n        o->oMoveAngleYaw = sp1E;\n    }\n\n    cur_obj_move_using_fvel_and_gravity();\n    o->oAnimState = 4;\n    cur_obj_scale(o->oCollisionParticleUnkF4);\n    o->oCollisionParticleUnkF4 -= 0.015f;\n}\n\nvoid bhv_tiny_star_particles_init(void) {\n    s32 i;\n    UNUSED u8 filler[4];\n\n    for (i = 0; i < 7; i++) {\n        struct Object *particle = spawn_object(o, MODEL_CARTOON_STAR, bhvWallTinyStarParticle);\n        particle->oMoveAngleYaw = gMarioObject->oMoveAngleYaw + sTinyStarMovementParams[2 * i] + 0x8000;\n        particle->oVelY = sins(sTinyStarMovementParams[2 * i + 1]) * 25.0f;\n        particle->oForwardVel = coss(sTinyStarMovementParams[2 * i + 1]) * 25.0f;\n    }\n}\n\nvoid bhv_pound_tiny_star_particle_loop(void) {\n    if (o->oTimer == 0) {\n        o->oCollisionParticleUnkF4 = 0.28f;\n        o->oForwardVel = 25.0f;\n        o->oPosY -= 20.0f;\n        o->oVelY = 14.0f;\n    }\n\n    cur_obj_move_using_fvel_and_gravity();\n    o->oAnimState = 4;\n    cur_obj_scale(o->oCollisionParticleUnkF4);\n    o->oCollisionParticleUnkF4 -= 0.015f;\n}\n\nvoid bhv_pound_tiny_star_particle_init(void) {\n    s32 sp24;\n    s32 sp20 = 8;\n\n    for (sp24 = 0; sp24 < sp20; sp24++) {\n        struct Object *particle = spawn_object(o, MODEL_CARTOON_STAR, bhvPoundTinyStarParticle);\n        particle->oMoveAngleYaw = (sp24 * 65536) / sp20;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/controllable_platform.inc.c",
    "content": "// controllable_platform.inc.c\n\nstatic s8 D_80331694 = 0;\n\nvoid controllable_platform_act_1(void) {\n    o->oParentRelativePosY -= 4.0f;\n    if (o->oParentRelativePosY < 41.0f) {\n        o->oParentRelativePosY = 41.0f;\n        o->oAction = 2;\n    }\n}\n\nvoid controllable_platform_act_2(void) {\n    if (o->oBhvParams2ndByte == D_80331694) {\n        return;\n    }\n\n    o->oParentRelativePosY += 4.0f;\n    if (o->oParentRelativePosY > 51.0f) {\n        o->oParentRelativePosY = 51.0f;\n        o->oAction = 0;\n    }\n}\n\nvoid bhv_controllable_platform_sub_loop(void) {\n    switch (o->oAction) {\n        case 0:\n            if (o->oTimer < 30) {\n                break;\n            }\n\n            if (gMarioObject->platform == o) {\n                D_80331694 = o->oBhvParams2ndByte;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n                o->parentObj->header.gfx.node.flags &= ~GRAPH_RENDER_INVISIBLE;\n#endif\n                o->oAction = 1;\n                cur_obj_play_sound_2(SOUND_GENERAL_MOVING_PLATFORM_SWITCH);\n            }\n            break;\n\n        case 1:\n            controllable_platform_act_1();\n            break;\n\n        case 2:\n            controllable_platform_act_2();\n            break;\n    }\n\n    o->oVelX = o->parentObj->oVelX;\n    o->oVelZ = o->parentObj->oVelZ;\n\n    if (o->parentObj->activeFlags == ACTIVE_FLAG_DEACTIVATED) {\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n}\n\nvoid bhv_controllable_platform_init(void) {\n    struct Object *sp34;\n\n    sp34 = spawn_object_rel_with_rot(o, MODEL_HMC_METAL_ARROW_PLATFORM, bhvControllablePlatformSub, 0,\n                                     51, 204, 0, 0, 0);\n    sp34->oBhvParams2ndByte = 1;\n    sp34 = spawn_object_rel_with_rot(o, MODEL_HMC_METAL_ARROW_PLATFORM, bhvControllablePlatformSub, 0,\n                                     51, -204, 0, -0x8000, 0);\n    sp34->oBhvParams2ndByte = 2;\n    sp34 = spawn_object_rel_with_rot(o, MODEL_HMC_METAL_ARROW_PLATFORM, bhvControllablePlatformSub, 204,\n                                     51, 0, 0, 0x4000, 0);\n    sp34->oBhvParams2ndByte = 3;\n    sp34 = spawn_object_rel_with_rot(o, MODEL_HMC_METAL_ARROW_PLATFORM, bhvControllablePlatformSub,\n                                     -204, 51, 0, 0, -0x4000, 0);\n    sp34->oBhvParams2ndByte = 4;\n\n    D_80331694 = 0;\n\n    o->oControllablePlatformUnkFC = o->oPosY;\n}\n\nvoid controllable_platform_hit_wall(s8 sp1B) {\n    o->oControllablePlatformUnkF8 = sp1B;\n    o->oTimer = 0;\n    D_80331694 = 5;\n\n    cur_obj_play_sound_2(SOUND_GENERAL_QUIET_POUND1);\n#if ENABLE_RUMBLE\n    queue_rumble_data(50, 80);\n#endif\n}\n\nvoid controllable_platform_check_walls(s8 sp1B, s8 sp1C[3], Vec3f sp20, UNUSED Vec3f sp24, Vec3f sp28) {\n    if (sp1C[1] == 1 || (sp1C[0] == 1 && sp1C[2] == 1)) {\n        controllable_platform_hit_wall(sp1B);\n    } else {\n        if (sp1C[0] == 1) {\n            if (((sp1B == 1 || sp1B == 2) && (s32) sp20[2] != 0)\n                || ((sp1B == 3 || sp1B == 4) && (s32) sp20[0] != 0)) {\n                controllable_platform_hit_wall(sp1B);\n            } else {\n                o->oPosX += sp20[0];\n                o->oPosZ += sp20[2];\n            }\n        }\n\n        if (sp1C[2] == 1) {\n            if (((sp1B == 1 || sp1B == 2) && (s32) sp28[2] != 0)\n                || ((sp1B == 3 || sp1B == 4) && (s32) sp28[0] != 0)) {\n                controllable_platform_hit_wall(sp1B);\n            } else {\n                o->oPosX += sp28[0];\n                o->oPosZ += sp28[2];\n            }\n        }\n    }\n\n    if (!is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 400)) {\n        D_80331694 = 6;\n        o->oControllablePlatformUnk100 = 1;\n        o->oTimer = 0;\n    }\n}\n\nvoid controllable_platform_shake_on_wall_hit(void) {\n    if (o->oControllablePlatformUnkF8 == 1 || o->oControllablePlatformUnkF8 == 2) {\n        o->oFaceAnglePitch = sins(o->oTimer * 0x1000) * 182.04444 * 10.0;\n        o->oPosY = o->oControllablePlatformUnkFC + sins(o->oTimer * 0x2000) * 20.0f;\n    } else {\n        o->oFaceAngleRoll = sins(o->oTimer * 0x1000) * 182.04444 * 10.0;\n        o->oPosY = o->oControllablePlatformUnkFC + sins(o->oTimer * 0x2000) * 20.0f;\n    }\n\n    if (o->oTimer == 32) {\n        D_80331694 = o->oControllablePlatformUnkF8;\n        o->oFaceAnglePitch = 0;\n        o->oFaceAngleRoll = 0;\n        o->oPosY = o->oControllablePlatformUnkFC;\n    }\n}\n\nvoid controllable_platform_tilt_from_mario(void) {\n    s16 sp1E = gMarioObject->header.gfx.pos[0] - o->oPosX;\n    s16 sp1C = gMarioObject->header.gfx.pos[2] - o->oPosZ;\n\n    if (gMarioObject->platform == o\n        || gMarioObject->platform == cur_obj_nearest_object_with_behavior(bhvControllablePlatformSub)) {\n        o->oFaceAnglePitch = sp1C * 4;\n        o->oFaceAngleRoll = -sp1E * 4;\n        if (D_80331694 == 6) {\n            D_80331694 = 0;\n            o->oTimer = 0;\n            o->header.gfx.node.flags &= ~GRAPH_RENDER_INVISIBLE;\n        }\n    } else {\n    }\n}\n\nvoid bhv_controllable_platform_loop(void) {\n    s8 sp54[3];\n    Vec3f sp48;\n    Vec3f sp3C;\n    Vec3f sp30;\n\n    o->oAngleVelRoll = 0;\n    o->oAngleVelPitch = 0;\n    o->oVelX = 0;\n    o->oVelZ = 0;\n\n    switch (D_80331694) {\n        case 0:\n            o->oFaceAnglePitch /= 2;\n            o->oFaceAngleRoll /= 2;\n            if (o->oControllablePlatformUnk100 == 1 && o->oTimer > 30) {\n                D_80331694 = 6;\n                o->oTimer = 0;\n            }\n            break;\n\n        case 1:\n            o->oVelZ = 10.0f;\n            sp54[0] = obj_find_wall_displacement(sp48, o->oPosX + 250.0, o->oPosY, o->oPosZ + 300.0, 50.0f);\n            sp54[1] = obj_find_wall_displacement(sp3C, o->oPosX, o->oPosY, o->oPosZ + 300.0, 50.0f);\n            sp54[2] = obj_find_wall_displacement(sp30, o->oPosX - 250.0, o->oPosY, o->oPosZ + 300.0, 50.0f);\n            controllable_platform_check_walls(2, sp54, sp48, sp3C, sp30);\n            break;\n\n        case 2:\n            o->oVelZ = -10.0f;\n            sp54[0] = obj_find_wall_displacement(sp48, o->oPosX + 250.0, o->oPosY, o->oPosZ - 300.0, 50.0f);\n            sp54[1] = obj_find_wall_displacement(sp3C, o->oPosX, o->oPosY, o->oPosZ - 300.0, 50.0f);\n            sp54[2] = obj_find_wall_displacement(sp30, o->oPosX - 250.0, o->oPosY, o->oPosZ - 300.0, 50.0f);\n            controllable_platform_check_walls(1, sp54, sp48, sp3C, sp30);\n            break;\n\n        case 3:\n            o->oVelX = 10.0f;\n            sp54[0] = obj_find_wall_displacement(sp48, o->oPosX + 300.0, o->oPosY, o->oPosZ + 250.0, 50.0f);\n            sp54[1] = obj_find_wall_displacement(sp3C, o->oPosX + 300.0, o->oPosY, o->oPosZ, 50.0f);\n            sp54[2] = obj_find_wall_displacement(sp30, o->oPosX + 300.0, o->oPosY, o->oPosZ - 250.0, 50.0f);\n            controllable_platform_check_walls(4, sp54, sp48, sp3C, sp30);\n            break;\n\n        case 4:\n            o->oVelX = -10.0f;\n            sp54[0] = obj_find_wall_displacement(sp48, o->oPosX - 300.0, o->oPosY, o->oPosZ + 250.0, 50.0f);\n            sp54[1] = obj_find_wall_displacement(sp3C, o->oPosX - 300.0, o->oPosY, o->oPosZ, 50.0f);\n            sp54[2] = obj_find_wall_displacement(sp30, o->oPosX - 300.0, o->oPosY, o->oPosZ - 250.0, 50.0f);\n            controllable_platform_check_walls(3, sp54, sp48, sp3C, sp30);\n            break;\n\n        case 5:\n            controllable_platform_shake_on_wall_hit();\n            return;\n            break;\n\n        case 6:\n            if (obj_flicker_and_disappear(o, 150)) {\n                spawn_object_abs_with_rot(o, 0, MODEL_HMC_METAL_PLATFORM, bhvControllablePlatform,\n                                          o->oHomeX, o->oHomeY, o->oHomeZ, 0, 0, 0);\n            }\n            break;\n    }\n\n    controllable_platform_tilt_from_mario();\n    o->oPosX += o->oVelX;\n    o->oPosZ += o->oVelZ;\n    if (D_80331694 != 0 && D_80331694 != 6) {\n        cur_obj_play_sound_1(SOUND_ENV_ELEVATOR2);\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/corkbox.inc.c",
    "content": "// corkbox.inc.c\n// TODO: This split seems weird. Investigate further?\n\nvoid bhv_bobomb_bully_death_smoke_init(void) {\n    o->oPosY -= 300.0f;\n\n    cur_obj_scale(10.0f);\n}\n\nvoid bhv_bobomb_explosion_bubble_init(void) {\n    obj_scale_xyz(o, 2.0f, 2.0f, 1.0f);\n\n    o->oBobombExpBubGfxExpRateX = (s32)(random_float() * 2048.0f) + 0x800;\n    o->oBobombExpBubGfxExpRateY = (s32)(random_float() * 2048.0f) + 0x800;\n    o->oTimer = random_float() * 10.0f;\n    o->oVelY = (s32)(random_float() * 4.0f) + 4;\n}\n\nvoid bhv_bobomb_explosion_bubble_loop(void) {\n    f32 waterY = gMarioStates[0].waterLevel;\n\n    o->header.gfx.scale[0] = sins(o->oBobombExpBubGfxScaleFacX) * 0.5 + 2.0;\n    o->oBobombExpBubGfxScaleFacX += o->oBobombExpBubGfxExpRateX;\n\n    o->header.gfx.scale[1] = sins(o->oBobombExpBubGfxScaleFacY) * 0.5 + 2.0;\n    o->oBobombExpBubGfxScaleFacY += o->oBobombExpBubGfxExpRateY;\n\n    if (o->oPosY > waterY) {\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n        o->oPosY += 5.0f;\n        spawn_object(o, MODEL_SMALL_WATER_SPLASH, bhvObjectWaterSplash);\n    }\n\n    if (o->oTimer > 60) {\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n\n    o->oPosY += o->oVelY;\n    o->oTimer++;\n}\n\nvoid bhv_respawner_loop(void) {\n    if (!is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, o->oRespawnerMinSpawnDist)) {\n        struct Object *spawnedObject = spawn_object(o, o->oRespawnerModelToRespawn,\n                                                    o->oRespawnerBehaviorToRespawn);\n        spawnedObject->oBhvParams = o->oBhvParams;\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n}\n\nvoid create_respawner(s32 model, const BehaviorScript *behToSpawn, s32 minSpawnDist) {\n    struct Object *respawner = spawn_object_abs_with_rot(o, 0, MODEL_NONE, bhvRespawner, o->oHomeX,\n                                                         o->oHomeY, o->oHomeZ, 0, 0, 0);\n    respawner->oBhvParams = o->oBhvParams;\n    respawner->oRespawnerModelToRespawn = model;\n    respawner->oRespawnerMinSpawnDist = minSpawnDist;\n    respawner->oRespawnerBehaviorToRespawn = behToSpawn;\n}\n"
  },
  {
    "path": "src/game/behaviors/cruiser.inc.c",
    "content": "// cruiser.inc.c\n\nvoid bhv_rr_cruiser_wing_init(void) {\n    o->oRRCruiserWingUnkF4 = o->oFaceAngleYaw;\n    o->oRRCruiserWingUnkF8 = o->oFaceAnglePitch;\n}\n\nvoid bhv_rr_cruiser_wing_loop(void) {\n    if (o->oBhvParams2ndByte == 0) {\n        o->oFaceAngleYaw = o->oRRCruiserWingUnkF4 + sins(o->oTimer * 0x400) * 8192.0f;\n        o->oFaceAnglePitch = o->oRRCruiserWingUnkF8 + coss(o->oTimer * 0x400) * 2048.0f;\n    } else {\n        o->oFaceAngleYaw = o->oRRCruiserWingUnkF4 - sins(o->oTimer * 0x400) * 8192.0f;\n        o->oFaceAnglePitch = o->oRRCruiserWingUnkF8 + coss(o->oTimer * 0x400) * 2048.0f;\n    }\n#ifndef VERSION_JP\n    if (o->oTimer == 64) {\n        cur_obj_play_sound_2(SOUND_GENERAL_BOAT_ROCK);\n        o->oTimer = 0;\n    }\n#endif\n}\n"
  },
  {
    "path": "src/game/behaviors/ddd_pole.inc.c",
    "content": "// ddd_pole.inc.c\n\nvoid bhv_ddd_pole_init(void) {\n    if (!(save_file_get_flags() & (SAVE_FLAG_HAVE_KEY_2 | SAVE_FLAG_UNLOCKED_UPSTAIRS_DOOR))) {\n        obj_mark_for_deletion(o);\n    } else {\n        o->hitboxDownOffset = 100.0f;\n        o->oDDDPoleMaxOffset = 100.0f * o->oBhvParams2ndByte;\n    }\n}\n\nvoid bhv_ddd_pole_update(void) {\n    if (o->oTimer > 20) {\n        o->oDDDPoleOffset += o->oDDDPoleVel;\n\n        if (clamp_f32(&o->oDDDPoleOffset, 0.0f, o->oDDDPoleMaxOffset)) {\n            o->oDDDPoleVel = -o->oDDDPoleVel;\n            o->oTimer = 0;\n        }\n    }\n\n    obj_set_dist_from_home(o->oDDDPoleOffset);\n}\n"
  },
  {
    "path": "src/game/behaviors/ddd_sub.inc.c",
    "content": "// ddd_sub.inc.c\n\nvoid bhv_bowsers_sub_loop(void) {\n    if (save_file_get_flags() & (SAVE_FLAG_HAVE_KEY_2 | SAVE_FLAG_UNLOCKED_UPSTAIRS_DOOR)) {\n        obj_mark_for_deletion(o);\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/ddd_warp.inc.c",
    "content": "// ddd_warp.inc.c\n\nvoid bhv_ddd_warp_loop(void) {\n    if (gDDDPaintingStatus & BOWSERS_SUB_BEATEN) {\n        o->collisionData = segmented_to_virtual(inside_castle_seg7_collision_ddd_warp_2);\n    } else {\n        o->collisionData = segmented_to_virtual(inside_castle_seg7_collision_ddd_warp);\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/decorative_pendulum.inc.c",
    "content": "\n/**\n * Behavior for bhvDecorativePendulum.\n * This controls the pendulum that lies underneath the Tick Tock Clock painting.\n */\n\nvoid bhv_decorative_pendulum_init(void) {\n    o->oAngleVelRoll = 0x100;\n    bhv_init_room();\n}\n\n/**\n * Smoothly swing the decorative pendulum back and forth using constant angular\n * acceleration.\n */\nvoid bhv_decorative_pendulum_loop(void) {\n    if (o->oFaceAngleRoll > 0) {\n        o->oAngleVelRoll -= 0x08;\n    } else {\n        o->oAngleVelRoll += 0x08;\n    }\n\n    o->oFaceAngleRoll += o->oAngleVelRoll;\n\n    /**\n     * This if-statement is true twice in the span of 5 frames when\n     * oAngleVelRoll takes values in {0x10, 0x08, 0x00, -0x08, -0x10}.\n     * This means the sound we hear when the pendulum hits its upswing is\n     * actually one sound played twice in rapid succession.\n     */\n    if (o->oAngleVelRoll == 0x10 || o->oAngleVelRoll == -0x10) {\n        cur_obj_play_sound_2(SOUND_GENERAL_BIG_CLOCK);\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/donut_platform.inc.c",
    "content": "// donut_platform.inc.c\n\nstatic Vec3s sDonutPlatformPositions[] = {\n    { 0x0B4C, 0xF7D7, 0x19A4 }, { 0xF794, 0x08A3, 0xFFA9 }, { 0x069C, 0x09D8, 0xFFE0 },\n    { 0x05CF, 0x09D8, 0xFFE0 }, { 0x0502, 0x09D8, 0xFFE0 }, { 0x054C, 0xF7D7, 0x19A4 },\n    { 0x0A7F, 0xF7D7, 0x19A4 }, { 0x09B2, 0xF7D7, 0x19A4 }, { 0x06E6, 0xF7D7, 0x19A4 },\n    { 0x0619, 0xF7D7, 0x19A4 }, { 0xEFB5, 0xF7D7, 0x19A4 }, { 0x00E6, 0xF7D7, 0x19A4 },\n    { 0x0019, 0xF7D7, 0x19A4 }, { 0xFF4D, 0xF7D7, 0x19A4 }, { 0xF081, 0xF7D7, 0x19A4 },\n    { 0xE34F, 0xF671, 0x197A }, { 0xEEE8, 0xF7D7, 0x19A4 }, { 0xE74F, 0xF7D7, 0x197A },\n    { 0xE683, 0xF7D7, 0x197A }, { 0xE5B6, 0xF7D7, 0x197A }, { 0xEE83, 0xF4A4, 0x19A4 },\n    { 0xE41C, 0xF671, 0x197A }, { 0xE4E9, 0xF671, 0x197A }, { 0xECE9, 0xF4A4, 0x19A4 },\n    { 0xEDB6, 0xF4A4, 0x19A4 }, { 0xFC3F, 0x0A66, 0xFF45 }, { 0x00EF, 0x04CD, 0xFF53 },\n    { 0x0022, 0x04CD, 0xFF53 }, { 0xFF57, 0x04CD, 0xFF53 }, { 0xFB73, 0x0A66, 0xFF45 },\n    { 0xFD0C, 0x0A66, 0xFF45 },\n};\n\nvoid bhv_donut_platform_spawner_update(void) {\n    s32 i;\n    s32 platformFlag;\n\n    for (i = 0, platformFlag = 1; i < ARRAY_COUNT(sDonutPlatformPositions); i++, platformFlag = platformFlag << 1) {\n        if (!(o->oDonutPlatformSpawnerSpawnedPlatforms & platformFlag)) {\n            f32 dx = gMarioObject->oPosX - sDonutPlatformPositions[i][0];\n            f32 dy = gMarioObject->oPosY - sDonutPlatformPositions[i][1];\n            f32 dz = gMarioObject->oPosZ - sDonutPlatformPositions[i][2];\n            f32 marioSqDist = dx * dx + dy * dy + dz * dz;\n\n            // dist > 1000 and dist < 2000\n            if (marioSqDist > 1000000.0f && marioSqDist < 4000000.0f) {\n                if (spawn_object_relative(i, sDonutPlatformPositions[i][0],\n                                          sDonutPlatformPositions[i][1], sDonutPlatformPositions[i][2],\n                                          o, MODEL_RR_DONUT_PLATFORM, bhvDonutPlatform) != NULL) {\n                    o->oDonutPlatformSpawnerSpawnedPlatforms |= platformFlag;\n                }\n            }\n        }\n    }\n}\n\nvoid bhv_donut_platform_update(void) {\n    if (o->oTimer != 0 && ((o->oMoveFlags & OBJ_MOVE_MASK_ON_GROUND) || o->oDistanceToMario > 2500.0f)) {\n        o->parentObj->oDonutPlatformSpawnerSpawnedPlatforms =\n            o->parentObj->oDonutPlatformSpawnerSpawnedPlatforms\n            & ((1 << o->oBhvParams2ndByte) ^ 0xFFFFFFFF);\n\n        if (o->oDistanceToMario > 2500.0f) {\n            obj_mark_for_deletion(o);\n        } else {\n            obj_explode_and_spawn_coins(150.0f, 1);\n            create_sound_spawner(SOUND_GENERAL_DONUT_PLATFORM_EXPLOSION);\n        }\n    } else {\n        if (o->oGravity == 0.0f) {\n            if (gMarioObject->platform == o) {\n                cur_obj_shake_y(4.0f);\n                if (o->oTimer > 15) {\n                    o->oGravity = -0.1f;\n                }\n            } else {\n                cur_obj_set_pos_to_home();\n                o->oTimer = 0;\n            }\n        } else {\n            cur_obj_update_floor_and_walls();\n            cur_obj_move_standard(78);\n        }\n\n        load_object_collision_model();\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/door.inc.c",
    "content": "// door.inc.c\n\nstruct DoorAction {\n    u32 flag;\n    s32 action;\n};\n\nstatic struct DoorAction sDoorActions[] = { { 0x40000, 3 }, { 0x80000, 4 }, { 0x10000, 1 }, { 0x20000, 2 }, { 0xFFFFFFFF, 0 }, };\n\nstatic s32 sDoorOpenSounds[] = { SOUND_GENERAL_OPEN_WOOD_DOOR, SOUND_GENERAL_OPEN_IRON_DOOR };\n\nstatic s32 sDoorCloseSounds[] = { SOUND_GENERAL_CLOSE_WOOD_DOOR, SOUND_GENERAL_CLOSE_IRON_DOOR };\n\nvoid door_animation_and_reset(s32 sp18) {\n    cur_obj_init_animation_with_sound(sp18);\n    if (cur_obj_check_if_near_animation_end()) {\n        o->oAction = 0;\n    }\n}\n\nvoid set_door_camera_event(void) {\n    if (segmented_to_virtual(bhvDoor) == o->behavior) {\n        gPlayerCameraState->cameraEvent = CAM_EVENT_DOOR;\n    } else {\n        gPlayerCameraState->cameraEvent = CAM_EVENT_DOOR_WARP;\n    }\n    gPlayerCameraState->usedObj = o;\n}\n\nvoid play_door_open_noise(void) {\n    s32 sp1C = cur_obj_has_model(MODEL_HMC_METAL_DOOR);\n    if (o->oTimer == 0) {\n        cur_obj_play_sound_2(sDoorOpenSounds[sp1C]);\n        gTimeStopState |= TIME_STOP_MARIO_OPENED_DOOR;\n    }\n    if (o->oTimer == 70) {\n        cur_obj_play_sound_2(sDoorCloseSounds[sp1C]);\n    }\n}\n\nvoid play_warp_door_open_noise(void) {\n    s32 sp1C = cur_obj_has_model(MODEL_HMC_METAL_DOOR);\n    if (o->oTimer == 30) {\n        cur_obj_play_sound_2(sDoorCloseSounds[sp1C]);\n    }\n}\n\nvoid bhv_door_loop(void) {\n    s32 sp1C = 0;\n\n    while (sDoorActions[sp1C].flag != 0xFFFFFFFF) {\n        if (cur_obj_clear_interact_status_flag(sDoorActions[sp1C].flag)) {\n            set_door_camera_event();\n            cur_obj_change_action(sDoorActions[sp1C].action);\n        }\n        sp1C++;\n    }\n\n    switch (o->oAction) {\n        case 0:\n            cur_obj_init_animation_with_sound(0);\n            break;\n        case 1:\n            door_animation_and_reset(1);\n            play_door_open_noise();\n            break;\n        case 2:\n            door_animation_and_reset(2);\n            play_door_open_noise();\n            break;\n        case 3:\n            door_animation_and_reset(3);\n            play_warp_door_open_noise();\n            break;\n        case 4:\n            door_animation_and_reset(4);\n            play_warp_door_open_noise();\n            break;\n    }\n\n    if (o->oAction == 0) {\n        load_object_collision_model();\n    }\n\n    bhv_star_door_loop_2();\n}\n\nvoid bhv_door_init(void) {\n    f32 x;\n    f32 z;\n    struct Surface *floor;\n\n    x = o->oPosX;\n    z = o->oPosZ;\n    find_floor(x, o->oPosY, z, &floor);\n    if (floor != NULL) {\n        o->oDoorUnkF8 = floor->room;\n    }\n\n    x = o->oPosX + sins(o->oMoveAngleYaw) * 200.0f;\n    z = o->oPosZ + coss(o->oMoveAngleYaw) * 200.0f;\n    find_floor(x, o->oPosY, z, &floor);\n    if (floor != NULL) {\n        o->oDoorUnkFC = floor->room;\n    }\n\n    x = o->oPosX + sins(o->oMoveAngleYaw) * -200.0f;\n    z = o->oPosZ + coss(o->oMoveAngleYaw) * -200.0f;\n    find_floor(x, o->oPosY, z, &floor);\n    if (floor != NULL) {\n        o->oDoorUnk100 = floor->room;\n    }\n\n    if (o->oDoorUnkF8 > 0 && o->oDoorUnkF8 < 60) {\n        gDoorAdjacentRooms[o->oDoorUnkF8][0] = o->oDoorUnkFC;\n        gDoorAdjacentRooms[o->oDoorUnkF8][1] = o->oDoorUnk100;\n    }\n}\n\nvoid bhv_star_door_loop_2(void) {\n    s32 sp4 = FALSE;\n\n    if (gMarioCurrentRoom != 0) {\n        if (o->oDoorUnkF8 == gMarioCurrentRoom) {\n            sp4 = TRUE;\n        } else if (gMarioCurrentRoom == o->oDoorUnkFC) {\n            sp4 = TRUE;\n        } else if (gMarioCurrentRoom == o->oDoorUnk100) {\n            sp4 = TRUE;\n        } else if (gDoorAdjacentRooms[gMarioCurrentRoom][0] == o->oDoorUnkFC) {\n            sp4 = TRUE;\n        } else if (gDoorAdjacentRooms[gMarioCurrentRoom][0] == o->oDoorUnk100) {\n            sp4 = TRUE;\n        } else if (gDoorAdjacentRooms[gMarioCurrentRoom][1] == o->oDoorUnkFC) {\n            sp4 = TRUE;\n        } else if (gDoorAdjacentRooms[gMarioCurrentRoom][1] == o->oDoorUnk100) {\n            sp4 = TRUE;\n        }\n    } else {\n        sp4 = TRUE;\n    }\n\n    if (sp4 == TRUE) {\n        o->header.gfx.node.flags |= GRAPH_RENDER_ACTIVE;\n        D_8035FEE4++;\n    }\n\n    if (!sp4) {\n        o->header.gfx.node.flags &= ~GRAPH_RENDER_ACTIVE;\n    }\n\n    o->oDoorUnk88 = sp4;\n}\n"
  },
  {
    "path": "src/game/behaviors/dorrie.inc.c",
    "content": "// dorrie.inc.c\n\nvoid dorrie_raise_head(void) {\n    s16 startAngle = o->oDorrieNeckAngle;\n    f32 xzDisp;\n    f32 yDisp;\n\n    o->oDorrieNeckAngle -= (s16) absf(370.0f * sins(o->oDorrieHeadRaiseSpeed));\n\n    xzDisp = 440.0f * (coss(o->oDorrieNeckAngle) - coss(startAngle));\n    yDisp = 440.0f * (sins(o->oDorrieNeckAngle) - sins(startAngle));\n\n    set_mario_pos(gMarioObject->oPosX + xzDisp * sins(o->oMoveAngleYaw), gMarioObject->oPosY - yDisp,\n                  gMarioObject->oPosZ + xzDisp * coss(o->oMoveAngleYaw));\n}\n\nvoid dorrie_act_move(void) {\n    s16 startYaw = o->oMoveAngleYaw;\n    s16 targetYaw;\n    s16 targetSpeed;\n\n    o->oDorrieNeckAngle = -0x26F4;\n    cur_obj_init_animation_with_sound(1);\n\n    if (o->oDorrieForwardDistToMario < 320.0f && o->oDorrieGroundPounded) {\n        cur_obj_play_sound_2(SOUND_OBJ_DORRIE);\n        o->collisionData = segmented_to_virtual(dorrie_seg6_collision_0600FBB8);\n        o->oAction = DORRIE_ACT_LOWER_HEAD;\n        o->oForwardVel = 0.0f;\n        o->oDorrieYawVel = 0;\n    } else {\n        if (gMarioObject->platform == o) {\n            targetYaw = gMarioObject->oFaceAngleYaw;\n            targetSpeed = 10;\n        } else {\n            s16 circularTurn = 0x4000 - atan2s(2000.0f, o->oDorrieDistToHome - 2000.0f);\n            if ((s16)(o->oMoveAngleYaw - o->oDorrieAngleToHome) < 0) {\n                circularTurn = -circularTurn;\n            }\n\n            targetYaw = o->oDorrieAngleToHome + circularTurn;\n            targetSpeed = 5;\n        }\n\n        obj_forward_vel_approach(targetSpeed, 0.5f);\n        o->oDorrieYawVel =\n            approach_s16_symmetric(o->oDorrieYawVel, (s16)(targetYaw - o->oMoveAngleYaw) / 50, 5);\n        o->oMoveAngleYaw += o->oDorrieYawVel;\n    }\n\n    o->oAngleVelYaw = o->oMoveAngleYaw - startYaw;\n}\n\nvoid dorrie_begin_head_raise(s32 liftingMario) {\n    o->oDorrieLiftingMario = liftingMario;\n    o->oAction = DORRIE_ACT_RAISE_HEAD;\n    o->oDorrieHeadRaiseSpeed = 0;\n}\n\nvoid dorrie_act_lower_head(void) {\n    if (cur_obj_init_anim_check_frame(2, 35)) {\n        cur_obj_reverse_animation();\n\n#ifdef VERSION_JP\n        if (o->oTimer > 150) {\n            dorrie_begin_head_raise(FALSE);\n        } else if (gMarioObject->platform == o) {\n            if (o->oDorrieForwardDistToMario > 830.0f\n                && set_mario_npc_dialog(MARIO_DIALOG_LOOK_UP) == MARIO_DIALOG_STATUS_START) {\n                dorrie_begin_head_raise(TRUE);\n            } else if (o->oDorrieForwardDistToMario > 320.0f) {\n                o->oTimer = 0;\n            }\n        }\n#else\n        if (gMarioObject->platform == o) {\n            if (o->oDorrieOffsetY == -17.0f && o->oDorrieForwardDistToMario > 780.0f\n                && set_mario_npc_dialog(MARIO_DIALOG_LOOK_UP) == MARIO_DIALOG_STATUS_START) {\n                dorrie_begin_head_raise(TRUE);\n            } else if (o->oDorrieForwardDistToMario > 320.0f) {\n                o->oTimer = 0;\n            }\n        } else if (o->oTimer > 150) {\n            dorrie_begin_head_raise(FALSE);\n        }\n#endif\n\n    } else {\n        o->oDorrieNeckAngle += 0x115;\n    }\n}\n\nvoid dorrie_act_raise_head(void) {\n    o->collisionData = segmented_to_virtual(dorrie_seg6_collision_0600F644);\n    if (cur_obj_check_if_near_animation_end()) {\n        o->oAction = DORRIE_ACT_MOVE;\n    } else if (o->oDorrieLiftingMario && o->header.gfx.animInfo.animFrame < 74) {\n        if (set_mario_npc_dialog(MARIO_DIALOG_LOOK_UP) == MARIO_DIALOG_STATUS_SPEAK) {\n            o->oDorrieHeadRaiseSpeed += 0x1CC;\n            if (cur_obj_check_anim_frame(73)) {\n                set_mario_npc_dialog(MARIO_DIALOG_STOP);\n            }\n            dorrie_raise_head();\n        } else {\n            cur_obj_reverse_animation();\n        }\n    }\n}\n\nvoid bhv_dorrie_update(void) {\n    f32 boundsShift;\n    UNUSED u8 filler[8];\n    f32 maxOffsetY;\n\n    if (!(o->activeFlags & ACTIVE_FLAG_IN_DIFFERENT_ROOM)) {\n        o->oDorrieForwardDistToMario = o->oDistanceToMario * coss(o->oAngleToMario - o->oMoveAngleYaw);\n\n        obj_perform_position_op(0);\n        cur_obj_move_using_fvel_and_gravity();\n\n        o->oDorrieAngleToHome = cur_obj_angle_to_home();\n        o->oDorrieDistToHome = cur_obj_lateral_dist_to_home();\n\n        // Shift dorrie's bounds to account for her neck\n        boundsShift =\n            440.0f * coss(o->oDorrieNeckAngle) * coss(o->oMoveAngleYaw - o->oDorrieAngleToHome);\n\n        if (clamp_f32(&o->oDorrieDistToHome, 1650.0f + boundsShift, 2300.0f + boundsShift)) {\n            o->oPosX = o->oHomeX - o->oDorrieDistToHome * sins(o->oDorrieAngleToHome);\n            o->oPosZ = o->oHomeZ - o->oDorrieDistToHome * coss(o->oDorrieAngleToHome);\n        }\n\n        o->oDorrieGroundPounded = cur_obj_is_mario_ground_pounding_platform();\n\n        if (gMarioObject->platform == o) {\n            maxOffsetY = -17.0f;\n            if (o->oDorrieOffsetY >= 0.0f) {\n                if (o->oDorrieGroundPounded) {\n                    o->oDorrieVelY = -15.0f;\n                } else {\n                    o->oDorrieVelY = -6.0f;\n                }\n            }\n        } else {\n            maxOffsetY = 0.0f;\n        }\n\n        o->oDorrieOffsetY += o->oDorrieVelY;\n        approach_f32_ptr(&o->oDorrieVelY, 3.0f, 1.0f);\n        if (o->oDorrieVelY > 0.0f && o->oDorrieOffsetY > maxOffsetY) {\n            o->oDorrieOffsetY = maxOffsetY;\n        }\n\n        o->oPosY = o->oHomeY + o->oDorrieOffsetY;\n\n        switch (o->oAction) {\n            case DORRIE_ACT_MOVE:\n                dorrie_act_move();\n                break;\n            case DORRIE_ACT_LOWER_HEAD:\n                dorrie_act_lower_head();\n                break;\n            case DORRIE_ACT_RAISE_HEAD:\n                dorrie_act_raise_head();\n                break;\n        }\n\n        obj_perform_position_op(1);\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/drawbridge.inc.c",
    "content": "// drawbridge.inc.c\n\nvoid bhv_lll_drawbridge_spawner_loop(void) {\n    struct Object *drawbridge1, *drawbridge2;\n\n    drawbridge1 = spawn_object(o, MODEL_LLL_DRAWBRIDGE_PART, bhvLLLDrawbridge);\n    drawbridge1->oMoveAngleYaw = o->oMoveAngleYaw;\n    drawbridge1->oPosX += coss(o->oMoveAngleYaw) * 640.0f;\n    drawbridge1->oPosZ += sins(o->oMoveAngleYaw) * 640.0f;\n\n    drawbridge2 = spawn_object(o, MODEL_LLL_DRAWBRIDGE_PART, bhvLLLDrawbridge);\n    drawbridge2->oMoveAngleYaw = o->oMoveAngleYaw + 0x8000;\n    drawbridge2->oPosX += coss(o->oMoveAngleYaw) * -640.0f;\n    drawbridge2->oPosZ += sins(o->oMoveAngleYaw) * -640.0f;\n\n    o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n}\n\nvoid bhv_lll_drawbridge_loop(void) {\n    s32 globalTimer = gGlobalTimer;\n\n    switch (o->oAction) {\n        case LLL_DRAWBRIDGE_ACT_LOWER:\n            o->oFaceAngleRoll += 0x100;\n            break;\n\n        case LLL_DRAWBRIDGE_ACT_RAISE:\n            o->oFaceAngleRoll -= 0x100;\n            break;\n    }\n\n    if ((s16) o->oFaceAngleRoll < -0x1FFD) {\n        o->oFaceAngleRoll = 0xDFFF;\n\n        //! Because the global timer increments when the game is paused, pausing and unpausing\n        //  the game at regular intervals can leave the drawbridge raised indefinitely.\n        if (o->oTimer > 50 && (globalTimer % 8) == 0) {\n            o->oAction = LLL_DRAWBRIDGE_ACT_LOWER;\n            cur_obj_play_sound_2(SOUND_GENERAL_BOAT_TILT1);\n        }\n    }\n\n    if ((s16) o->oFaceAngleRoll >= 0) {\n        o->oFaceAngleRoll = 0;\n\n        //! Because the global timer increments when the game is paused, pausing and unpausing\n        //  the game at regular intervals can leave the drawbridge lowered indefinitely.\n        if (o->oTimer > 50 && (globalTimer % 8) == 0) {\n            o->oAction = LLL_DRAWBRIDGE_ACT_RAISE;\n            cur_obj_play_sound_2(SOUND_GENERAL_BOAT_TILT2);\n        }\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/elevator.inc.c",
    "content": "// elevator.inc.c\n\nstatic s16 sElevatorHeights[] = {\n      -51,    0, 0,\n     -461,    0, 0,\n     -512,    0, 0,\n    -2611,    0, 0,\n    -2360,    0, 0,\n      214,    0, 0,\n      -50, 1945, 1,\n};\n\nvoid elevator_starting_shake(void) {\n    cur_obj_play_sound_2(SOUND_GENERAL_QUIET_POUND1);\n    cur_obj_shake_screen(SHAKE_POS_SMALL);\n}\n\nvoid elevator_act_0(void) {\n    o->oVelY = 0;\n    if (o->oElevatorUnk100 == 2) {\n        if (gMarioObject->platform == o) {\n            if (o->oPosY > o->oElevatorUnkFC) {\n                o->oAction = 2;\n            } else {\n                o->oAction = 1;\n            }\n        }\n    } else if (gMarioObject->oPosY > o->oElevatorUnkFC || o->oElevatorUnk100 == 1) {\n        o->oPosY = o->oElevatorUnkF8;\n        if (gMarioObject->platform == o) {\n            o->oAction = 2;\n        }\n    } else {\n        o->oPosY = o->oElevatorUnkF4;\n        if (gMarioObject->platform == o) {\n            o->oAction = 1;\n        }\n    }\n}\n\nvoid elevator_act_1(void) {\n    cur_obj_play_sound_1(SOUND_ENV_ELEVATOR1);\n    if (o->oTimer == 0 && cur_obj_is_mario_on_platform()) {\n        elevator_starting_shake();\n    }\n    approach_f32_signed(&o->oVelY, 10.0f, 2.0f);\n    o->oPosY += o->oVelY;\n    if (o->oPosY > o->oElevatorUnkF8) {\n        o->oPosY = o->oElevatorUnkF8;\n        if (o->oElevatorUnk100 == 2 || o->oElevatorUnk100 == 1) {\n            o->oAction = 3;\n        } else if (gMarioObject->oPosY < o->oElevatorUnkFC) {\n            o->oAction = 2;\n        } else {\n            o->oAction = 3;\n        }\n    }\n}\n\nvoid elevator_act_2(void) {\n    cur_obj_play_sound_1(SOUND_ENV_ELEVATOR1);\n    if (o->oTimer == 0 && cur_obj_is_mario_on_platform()) {\n        elevator_starting_shake();\n    }\n    approach_f32_signed(&o->oVelY, -10.0f, -2.0f);\n    o->oPosY += o->oVelY;\n    if (o->oPosY < o->oElevatorUnkF4) {\n        o->oPosY = o->oElevatorUnkF4;\n        if (o->oElevatorUnk100 == 1) {\n            o->oAction = 4;\n        } else if (o->oElevatorUnk100 == 2) {\n            o->oAction = 3;\n        } else if (gMarioObject->oPosY > o->oElevatorUnkFC) {\n            o->oAction = 1;\n        } else {\n            o->oAction = 3;\n        }\n    }\n}\n\nvoid elevator_act_4(void) {\n    o->oVelY = 0;\n    if (o->oTimer == 0) {\n        cur_obj_shake_screen(SHAKE_POS_SMALL);\n        cur_obj_play_sound_2(SOUND_GENERAL_METAL_POUND);\n    }\n    if (!mario_is_in_air_action() && !cur_obj_is_mario_on_platform()) {\n        o->oAction = 1;\n    }\n}\n\nvoid elevator_act_3(void) {\n    o->oVelY = 0;\n    if (o->oTimer == 0) {\n        cur_obj_shake_screen(SHAKE_POS_SMALL);\n        cur_obj_play_sound_2(SOUND_GENERAL_METAL_POUND);\n    }\n    if (!mario_is_in_air_action() && !cur_obj_is_mario_on_platform()) {\n        o->oAction = 0;\n    }\n}\n\nvoid bhv_elevator_init(void) {\n    s32 sp1C = sElevatorHeights[o->oBhvParams2ndByte * 3 + 2];\n    if (sp1C == 0) {\n        o->oElevatorUnkF4 = sElevatorHeights[o->oBhvParams2ndByte * 3];\n        o->oElevatorUnkF8 = o->oHomeY;\n        o->oElevatorUnkFC = (o->oElevatorUnkF4 + o->oElevatorUnkF8) / 2;\n        o->oElevatorUnk100 = cur_obj_has_behavior(bhvRRElevatorPlatform);\n    } else {\n        o->oElevatorUnkF4 = sElevatorHeights[o->oBhvParams2ndByte * 3];\n        o->oElevatorUnkF8 = sElevatorHeights[o->oBhvParams2ndByte * 3 + 1];\n        o->oElevatorUnkFC = (o->oElevatorUnkF4 + o->oElevatorUnkF8) / 2;\n        o->oElevatorUnk100 = 2;\n    }\n}\n\nvoid (*sElevatorActions[])(void) = {\n    elevator_act_0,\n    elevator_act_1,\n    elevator_act_2,\n    elevator_act_3,\n    elevator_act_4,\n};\n\nvoid bhv_elevator_loop(void) {\n    cur_obj_call_action_function(sElevatorActions);\n}\n"
  },
  {
    "path": "src/game/behaviors/end_birds_1.inc.c",
    "content": "// end_birds_1.inc.c\n\nvoid bhv_end_birds_1_loop(void) {\n    Vec3f sp34;\n    UNUSED f32 sp30 = random_float();\n\n    switch (o->oAction) {\n        case 0:\n            cur_obj_scale(0.7f);\n            o->oIntroLakituUnk110 = -554.0f;\n            o->oIntroLakituUnk10C = 3044.0f;\n            o->oIntroLakituUnk108 = -1314.0f;\n            o->oAction++;\n            break;\n\n        case 1:\n            vec3f_set(sp34, o->oIntroLakituUnk110, o->oIntroLakituUnk10C,\n                      o->oIntroLakituUnk108);\n\n            if (o->oTimer < 100) {\n                obj_rotate_towards_point(o, sp34, 0, 0, 0x20, 0x20);\n            }\n            if ((o->oEndBirdUnk104 == 0.0f) && (o->oTimer == 0)) {\n                cur_obj_play_sound_2(SOUND_GENERAL_BIRDS_FLY_AWAY);\n            }\n            if (gCutsceneTimer == 0) {\n                obj_mark_for_deletion(o);\n            }\n            break;\n    }\n\n    cur_obj_set_pos_via_transform();\n}\n"
  },
  {
    "path": "src/game/behaviors/end_birds_2.inc.c",
    "content": "// end_birds_2.inc.c\n\nvoid bhv_end_birds_2_loop(void) {\n    Vec3f sp3C;\n    UNUSED f32 sp38 = random_float();\n    f32 sp34;\n    s16 sp32, sp30;\n\n    o->oForwardVel = (random_float() * 10.0f) + 25.0f;\n\n    switch (o->oAction) {\n        case 0:\n            cur_obj_scale(0.7f);\n            o->oAction++;\n            break;\n\n        case 1:\n            vec3f_get_dist_and_angle(gCamera->pos, gCamera->focus, &sp34, &sp32,\n                                     &sp30);\n            sp30 += 0x1000;\n            sp32 += 0; // nice work, Nintendo\n            vec3f_set_dist_and_angle(gCamera->pos, sp3C, 14000.0f, sp32, sp30);\n            obj_rotate_towards_point(o, sp3C, 0, 0, 8, 8);\n\n            if ((o->oEndBirdUnk104 == 0.0f) && (o->oTimer == 0)) {\n                cur_obj_play_sound_2(SOUND_GENERAL_BIRDS_FLY_AWAY);\n            }\n            break;\n    }\n\n    cur_obj_set_pos_via_transform();\n}\n"
  },
  {
    "path": "src/game/behaviors/enemy_lakitu.inc.c",
    "content": "\n/**\n * Behavior for bhvEnemyLakitu.\n * Lakitu comes before it spawned spinies in processing order.\n * TODO: bhvCloud processing oredr\n */\n\n/**\n * Hitbox for evil lakitu.\n */\nstatic struct ObjectHitbox sEnemyLakituHitbox = {\n    /* interactType:      */ INTERACT_HIT_FROM_BELOW,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 2,\n    /* health:            */ 0,\n    /* numLootCoins:      */ 5,\n    /* radius:            */ 50,\n    /* height:            */ 50,\n    /* hurtboxRadius:     */ 40,\n    /* hurtboxHeight:     */ 50,\n};\n\n/**\n * Wait for mario to approach, then spawn the cloud and become visible.\n */\nstatic void enemy_lakitu_act_uninitialized(void) {\n    if (o->oDistanceToMario < 2000.0f) {\n        spawn_object_relative_with_scale(CLOUD_BP_LAKITU_CLOUD, 0, 0, 0, 2.0f, o, MODEL_MIST, bhvCloud);\n\n        cur_obj_unhide();\n        o->oAction = ENEMY_LAKITU_ACT_MAIN;\n    }\n}\n\n/**\n * Accelerate toward mario vertically.\n */\nstatic void enemy_lakitu_update_vel_y(f32 offsetY) {\n    // In order to encourage oscillation, pass mario by a small margin before\n    // accelerating the opposite direction\n    f32 margin;\n    if (o->oVelY < 0.0f) {\n        margin = -3.0f;\n    } else {\n        margin = 3.0f;\n    }\n\n    if (o->oPosY < gMarioObject->oPosY + offsetY + margin) {\n        obj_y_vel_approach(4.0f, 0.4f);\n    } else {\n        obj_y_vel_approach(-4.0f, 0.4f);\n    }\n}\n\n/**\n * Control speed based on distance to mario, turn toward mario, and change move\n * angle toward mario.\n */\nstatic void enemy_lakitu_update_speed_and_angle(void) {\n    f32 minSpeed;\n    s16 turnSpeed;\n\n    f32 distToMario = o->oDistanceToMario;\n    if (distToMario > 500.0f) {\n        distToMario = 500.0f;\n    }\n\n    // Move faster the farther away mario is and the faster mario is moving\n    if ((minSpeed = 1.2f * gMarioStates[0].forwardVel) < 8.0f) {\n        minSpeed = 8.0f;\n    }\n    o->oForwardVel = distToMario * 0.04f;\n    clamp_f32(&o->oForwardVel, minSpeed, 40.0f);\n\n    // Accelerate toward mario vertically\n    enemy_lakitu_update_vel_y(300.0f);\n\n    // Turn toward mario except right after throwing a spiny\n    if (o->oEnemyLakituFaceForwardCountdown != 0) {\n        o->oEnemyLakituFaceForwardCountdown--;\n    } else {\n        obj_face_yaw_approach(o->oAngleToMario, 0x600);\n    }\n\n    // Change move angle toward mario faster when farther from mario\n    turnSpeed = (s16)(distToMario * 2);\n    clamp_s16(&turnSpeed, 200, 4000);\n    cur_obj_rotate_yaw_toward(o->oAngleToMario, turnSpeed);\n}\n\n/**\n * When close enough to mario and facing roughly toward him, spawn a spiny and\n * hold it, then enter the hold spiny sub-action.\n */\nstatic void enemy_lakitu_sub_act_no_spiny(void) {\n    cur_obj_init_animation_with_sound(1);\n\n    if (o->oEnemyLakituSpinyCooldown != 0) {\n        o->oEnemyLakituSpinyCooldown--;\n    } else if (o->oEnemyLakituNumSpinies < 3 && o->oDistanceToMario < 800.0f\n               && abs_angle_diff(o->oAngleToMario, o->oFaceAngleYaw) < 0x4000) {\n        struct Object *spiny = spawn_object(o, MODEL_SPINY_BALL, bhvSpiny);\n        if (spiny != NULL) {\n            o->prevObj = spiny;\n            spiny->oAction = SPINY_ACT_HELD_BY_LAKITU;\n            obj_init_animation_with_sound(spiny, spiny_egg_seg5_anims_050157E4, 0);\n\n            o->oEnemyLakituNumSpinies++;\n            o->oSubAction = ENEMY_LAKITU_SUB_ACT_HOLD_SPINY;\n            o->oEnemyLakituSpinyCooldown = 30;\n        }\n    }\n}\n\n/**\n * When close to mario and facing toward him or when mario gets far enough away,\n * enter the throw spiny sub-action.\n */\nstatic void enemy_lakitu_sub_act_hold_spiny(void) {\n    cur_obj_init_anim_extend(3);\n\n    if (o->oEnemyLakituSpinyCooldown != 0) {\n        o->oEnemyLakituSpinyCooldown--;\n    }\n    // TODO: Check if anything interesting happens if we bypass this with speed\n    else if (o->oDistanceToMario > o->oDrawingDistance - 100.0f\n             || (o->oDistanceToMario < 500.0f\n                 && abs_angle_diff(o->oAngleToMario, o->oFaceAngleYaw) < 0x2000)) {\n        o->oSubAction = ENEMY_LAKITU_SUB_ACT_THROW_SPINY;\n        o->oEnemyLakituFaceForwardCountdown = 20;\n    }\n}\n\n/**\n * Throw the spiny, then enter the no spiny sub-action.\n */\nstatic void enemy_lakitu_sub_act_throw_spiny(void) {\n    if (cur_obj_init_anim_check_frame(2, 2)) {\n        cur_obj_play_sound_2(SOUND_OBJ_EVIL_LAKITU_THROW);\n        o->prevObj = NULL;\n    }\n\n    if (cur_obj_check_if_near_animation_end()) {\n        o->oSubAction = ENEMY_LAKITU_SUB_ACT_NO_SPINY;\n        o->oEnemyLakituSpinyCooldown = random_linear_offset(100, 100);\n    }\n}\n\n/**\n * Main update function.\n */\nstatic void enemy_lakitu_act_main(void) {\n    cur_obj_play_sound_1(SOUND_AIR_LAKITU_FLY);\n\n    cur_obj_update_floor_and_walls();\n\n    enemy_lakitu_update_speed_and_angle();\n    if (o->oMoveFlags & OBJ_MOVE_HIT_WALL) {\n        o->oMoveAngleYaw = cur_obj_reflect_move_angle_off_wall();\n    }\n\n    obj_update_blinking(&o->oEnemyLakituBlinkTimer, 20, 40, 4);\n\n    switch (o->oSubAction) {\n        case ENEMY_LAKITU_SUB_ACT_NO_SPINY:\n            enemy_lakitu_sub_act_no_spiny();\n            break;\n        case ENEMY_LAKITU_SUB_ACT_HOLD_SPINY:\n            enemy_lakitu_sub_act_hold_spiny();\n            break;\n        case ENEMY_LAKITU_SUB_ACT_THROW_SPINY:\n            enemy_lakitu_sub_act_throw_spiny();\n            break;\n    }\n\n    cur_obj_move_standard(78);\n\n    // Die and drop held spiny when attacked by mario\n    if (obj_check_attacks(&sEnemyLakituHitbox, o->oAction) != 0) {\n        // The spiny uses this as a signal to get thrown\n        o->prevObj = NULL;\n    }\n}\n\n/**\n * Update function for bhvEnemyLakitu.\n */\nvoid bhv_enemy_lakitu_update(void) {\n    // PARTIAL_UPDATE\n\n    treat_far_home_as_mario(2000.0f);\n\n    switch (o->oAction) {\n        case ENEMY_LAKITU_ACT_UNINITIALIZED:\n            enemy_lakitu_act_uninitialized();\n            break;\n        case ENEMY_LAKITU_ACT_MAIN:\n            enemy_lakitu_act_main();\n            break;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/exclamation_box.inc.c",
    "content": "// exclamation_box.inc.c\n\nstruct ObjectHitbox sExclamationBoxHitbox = {\n    /* interactType:      */ INTERACT_BREAKABLE,\n    /* downOffset:        */ 5,\n    /* damageOrCoinValue: */ 0,\n    /* health:            */ 1,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 40,\n    /* height:            */ 30,\n    /* hurtboxRadius:     */ 40,\n    /* hurtboxHeight:     */ 30,\n};\n\nstruct ExclamationBoxContents {\n    u8 id;\n    u8 unused;\n    u8 bhvParams1stByte;\n    u8 model;\n    const BehaviorScript *behavior;\n};\n\nstruct ExclamationBoxContents sExclamationBoxContents[] = {\n    { EXCLAMATION_BOX_BP_WING_CAP,         0,                0, MODEL_MARIOS_WING_CAP,  bhvWingCap               },\n    { EXCLAMATION_BOX_BP_METAL_CAP,        0,                0, MODEL_MARIOS_METAL_CAP, bhvMetalCap              },\n    { EXCLAMATION_BOX_BP_VANISH_CAP,       0,                0, MODEL_MARIOS_CAP,       bhvVanishCap             },\n    { EXCLAMATION_BOX_BP_KOOPA_SHELL,      0,                0, MODEL_KOOPA_SHELL,      bhvKoopaShell            },\n    { EXCLAMATION_BOX_BP_ONE_COIN,         0,                0, MODEL_YELLOW_COIN,      bhvSingleCoinGetsSpawned },\n    { EXCLAMATION_BOX_BP_THREE_COINS,      0,                0, MODEL_NONE,             bhvThreeCoinsSpawn       },\n    { EXCLAMATION_BOX_BP_TEN_COINS,        0,                0, MODEL_NONE,             bhvTenCoinsSpawn         },\n    { EXCLAMATION_BOX_BP_1UP_WALKING,      0,                0, MODEL_1UP,              bhv1UpWalking            },\n    { EXCLAMATION_BOX_BP_STAR_ACT_1,       0, STAR_INDEX_ACT_1, MODEL_STAR,             bhvSpawnedStar           },\n    { EXCLAMATION_BOX_BP_1UP_RUNNING_AWAY, 0,                0, MODEL_1UP,              bhv1UpRunningAway        },\n    { EXCLAMATION_BOX_BP_STAR_ACT_2,       0, STAR_INDEX_ACT_2, MODEL_STAR,             bhvSpawnedStar           },\n    { EXCLAMATION_BOX_BP_STAR_ACT_3,       0, STAR_INDEX_ACT_3, MODEL_STAR,             bhvSpawnedStar           },\n    { EXCLAMATION_BOX_BP_STAR_ACT_4,       0, STAR_INDEX_ACT_4, MODEL_STAR,             bhvSpawnedStar           },\n    { EXCLAMATION_BOX_BP_STAR_ACT_5,       0, STAR_INDEX_ACT_5, MODEL_STAR,             bhvSpawnedStar           },\n    { EXCLAMATION_BOX_BP_STAR_ACT_6,       0, STAR_INDEX_ACT_6, MODEL_STAR,             bhvSpawnedStar           },\n    { EXCLAMATION_BOX_BP_END,              0,                0, MODEL_NONE,             NULL                     },\n};\n\nvoid bhv_rotating_exclamation_box_loop(void) {\n    if (o->parentObj->oAction != 1) {\n        obj_mark_for_deletion(o);\n    }\n}\n\nvoid exclamation_box_act_0(void) {\n    if (o->oBhvParams2ndByte <= EXCLAMATION_BOX_BP_SPECIAL_CAP_END) {\n        o->oAnimState = o->oBhvParams2ndByte;\n        if ((save_file_get_flags() & sCapSaveFlags[o->oBhvParams2ndByte])\n            || ((o->oBhvParams >> 24) & 0xFF)) {\n            o->oAction = 2;\n        } else {\n            o->oAction = 1;\n        }\n    } else {\n        o->oAnimState = EXCLAMATION_BOX_ANIM_STATE_DEFAULT;\n        o->oAction = 2;\n    }\n}\n\nvoid exclamation_box_act_1(void) {\n    cur_obj_become_intangible();\n\n    if (o->oTimer == 0) {\n        spawn_object(o, MODEL_EXCLAMATION_POINT, bhvRotatingExclamationMark);\n        cur_obj_set_model(MODEL_EXCLAMATION_BOX_OUTLINE);\n    }\n\n    if ((save_file_get_flags() & sCapSaveFlags[o->oBhvParams2ndByte])\n        || ((o->oBhvParams >> 24) & 0xFF)) {\n        o->oAction = 2;\n        cur_obj_set_model(MODEL_EXCLAMATION_BOX);\n    }\n}\n\nvoid exclamation_box_act_2(void) {\n    obj_set_hitbox(o, &sExclamationBoxHitbox);\n\n    if (o->oTimer == 0) {\n        cur_obj_unhide();\n        cur_obj_become_tangible();\n        o->oInteractStatus = 0;\n        o->oPosY = o->oHomeY;\n        o->oGraphYOffset = 0.0f;\n    }\n\n    if (cur_obj_was_attacked_or_ground_pounded()) {\n        cur_obj_become_intangible();\n        o->oExclamationBoxUnkFC = 0x4000;\n        o->oVelY = 30.0f;\n        o->oGravity = -8.0f;\n        o->oFloorHeight = o->oPosY;\n        o->oAction = 3;\n#if ENABLE_RUMBLE\n        queue_rumble_data(5, 80);\n#endif\n    }\n\n    load_object_collision_model();\n}\n\nvoid exclamation_box_act_3(void) {\n    UNUSED u8 filler[4];\n\n    cur_obj_move_using_fvel_and_gravity();\n\n    if (o->oVelY < 0.0f) {\n        o->oVelY = 0.0f;\n        o->oGravity = 0.0f;\n    }\n\n    o->oExclamationBoxUnkF8 = (sins(o->oExclamationBoxUnkFC) + 1.0) * 0.3 + 0.0;\n    o->oExclamationBoxUnkF4 = (-sins(o->oExclamationBoxUnkFC) + 1.0) * 0.5 + 1.0;\n    o->oGraphYOffset = (-sins(o->oExclamationBoxUnkFC) + 1.0) * 26.0;\n    o->oExclamationBoxUnkFC += 0x1000;\n    o->header.gfx.scale[0] = o->oExclamationBoxUnkF4 * 2.0f;\n    o->header.gfx.scale[1] = o->oExclamationBoxUnkF8 * 2.0f;\n    o->header.gfx.scale[2] = o->oExclamationBoxUnkF4 * 2.0f;\n\n    if (o->oTimer == 7) {\n        o->oAction = 4;\n    }\n}\n\nvoid exclamation_box_spawn_contents(struct ExclamationBoxContents *contents, u8 targetContentsID) {\n    struct Object *contentsObj = NULL;\n\n    while (contents->id != EXCLAMATION_BOX_BP_END) {\n        if (targetContentsID == contents->id) {\n            contentsObj = spawn_object(o, contents->model, contents->behavior);\n            contentsObj->oVelY = 20.0f;\n            contentsObj->oForwardVel = 3.0f;\n            contentsObj->oMoveAngleYaw = gMarioObject->oMoveAngleYaw;\n            o->oBhvParams |= contents->bhvParams1stByte << 24;\n            if (contents->model == MODEL_STAR) {\n                o->oFlags |= OBJ_FLAG_PERSISTENT_RESPAWN;\n            }\n            break;\n        }\n        contents++;\n    }\n}\n\nvoid exclamation_box_act_4(void) {\n    exclamation_box_spawn_contents(sExclamationBoxContents, o->oBhvParams2ndByte);\n    spawn_mist_particles_variable(0, 0, 46.0f);\n    spawn_triangle_break_particles(20, MODEL_CARTOON_STAR, 0.3f, o->oAnimState);\n    create_sound_spawner(SOUND_GENERAL_BREAK_BOX);\n\n    if (o->oBhvParams2ndByte <= EXCLAMATION_BOX_BP_SPECIAL_CAP_END) {\n        o->oAction = 5;\n        cur_obj_hide();\n    } else {\n        obj_mark_for_deletion(o);\n    }\n}\n\nvoid exclamation_box_act_5(void) {\n    if (o->oTimer > 300) {\n        o->oAction = 2;\n    }\n}\n\nvoid (*sExclamationBoxActions[])(void) = {\n    exclamation_box_act_0,\n    exclamation_box_act_1,\n    exclamation_box_act_2,\n    exclamation_box_act_3,\n    exclamation_box_act_4,\n    exclamation_box_act_5,\n};\n\nvoid bhv_exclamation_box_loop(void) {\n    cur_obj_scale(2.0f);\n    cur_obj_call_action_function(sExclamationBoxActions);\n}\n"
  },
  {
    "path": "src/game/behaviors/explosion.inc.c",
    "content": "// explosion.inc.c\n\nvoid bhv_explosion_init(void) {\n    create_sound_spawner(SOUND_GENERAL2_BOBOMB_EXPLOSION);\n    set_environmental_camera_shake(SHAKE_ENV_EXPLOSION);\n\n    o->oOpacity = 255;\n}\n\nvoid bhv_explosion_loop(void) {\n    s32 i;\n\n    if (o->oTimer == 9) {\n        if (find_water_level(o->oPosX, o->oPosZ) > o->oPosY) {\n            for (i = 0; i < 40; i++) {\n                spawn_object(o, MODEL_WHITE_PARTICLE_SMALL, bhvBobombExplosionBubble);\n            }\n        } else {\n            spawn_object(o, MODEL_SMOKE, bhvBobombBullyDeathSmoke);\n        }\n\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n\n    o->oOpacity -= 14;\n\n    cur_obj_scale((f32) o->oTimer / 9.0f + 1.0);\n}\n"
  },
  {
    "path": "src/game/behaviors/express_elevator.inc.c",
    "content": "// express_elevator.inc.c\n\nvoid bhv_wdw_express_elevator_loop(void) {\n    o->oVelY = 0.0f;\n    if (o->oAction == 0) {\n        if (cur_obj_is_mario_on_platform()) {\n            o->oAction++;\n        }\n    } else if (o->oAction == 1) {\n        o->oVelY = -20.0f;\n        o->oPosY += o->oVelY;\n        cur_obj_play_sound_1(SOUND_ENV_ELEVATOR4);\n        if (o->oTimer > 132) {\n            o->oAction++;\n        }\n    } else if (o->oAction == 2) {\n        if (o->oTimer > 110) {\n            o->oAction++;\n        }\n    } else if (o->oAction == 3) {\n        o->oVelY = 10.0f;\n        o->oPosY += o->oVelY;\n        cur_obj_play_sound_1(SOUND_ENV_ELEVATOR4);\n        if (o->oPosY >= o->oHomeY) {\n            o->oPosY = o->oHomeY;\n            o->oAction++;\n        }\n    } else if (!cur_obj_is_mario_on_platform()) {\n        o->oAction = 0;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/eyerok.inc.c",
    "content": "// eyerok.inc.c\n\nstruct ObjectHitbox sEyerokHitbox = {\n    /* interactType:      */ INTERACT_BOUNCE_TOP,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 0,\n    /* health:            */ 4,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 150,\n    /* height:            */ 100,\n    /* hurtboxRadius:     */ 1,\n    /* hurtboxHeight:     */ 1,\n};\n\ns8 D_80331BA4[] = { 0, 1, 3, 2, 1, 0 };\n\nstatic s32 eyerok_check_mario_relative_z(s32 arg0) {\n    if (gMarioObject->oPosZ - o->oHomeZ < arg0) {\n        return TRUE;\n    } else {\n        return FALSE;\n    }\n}\n\nstatic void eyerok_spawn_hand(s16 side, s32 model, const BehaviorScript *behavior) {\n    struct Object *hand = spawn_object_relative_with_scale(side, -500 * side, 0, 300, 1.5f,\n                                                           o, model, behavior);\n    if (hand != NULL) {\n        hand->oFaceAngleYaw -= 0x4000 * side;\n    }\n}\n\nstatic void eyerok_boss_act_sleep(void) {\n    if (o->oTimer == 0) {\n        eyerok_spawn_hand(-1, MODEL_EYEROK_LEFT_HAND, bhvEyerokHand);\n        eyerok_spawn_hand(1, MODEL_EYEROK_RIGHT_HAND, bhvEyerokHand);\n    } else if (o->oDistanceToMario < 500.0f) {\n        cur_obj_play_sound_2(SOUND_OBJ_EYEROK_EXPLODE);\n        o->oAction = EYEROK_BOSS_ACT_WAKE_UP;\n    }\n}\n\nstatic void eyerok_boss_act_wake_up(void) {\n    if (o->oEyerokBossNumHands == 2) {\n        if (o->oTimer > 5) {\n            if (o->oSubAction == 0) {\n                seq_player_lower_volume(SEQ_PLAYER_LEVEL, 60, 40);\n                o->oSubAction++;\n            }\n\n            if (o->oEyerokBossUnk110 == 0.0f && mario_ready_to_speak()) {\n                o->oAction = EYEROK_BOSS_ACT_SHOW_INTRO_TEXT;\n            } else if (o->oTimer > 150) {\n                if (approach_f32_ptr(&o->oEyerokBossUnk110, 0.0f, 10.0f)) {\n                    o->oTimer = 0;\n                }\n            } else if (o->oTimer > 90) {\n                approach_f32_ptr(&o->oEyerokBossUnk110, 300.0f, 10.0f);\n            }\n        }\n    } else {\n        o->oTimer = 0;\n    }\n}\n\nstatic void eyerok_boss_act_show_intro_text(void) {\n    if (cur_obj_update_dialog_with_cutscene(MARIO_DIALOG_LOOK_UP, DIALOG_FLAG_NONE, CUTSCENE_DIALOG, DIALOG_117)) {\n        o->oAction = EYEROK_BOSS_ACT_FIGHT;\n    }\n}\n\nstatic void eyerok_boss_act_fight(void) {\n    if (o->oEyerokBossNumHands == 0) {\n        o->oAction = EYEROK_BOSS_ACT_DIE;\n    } else if (o->oEyerokBossUnk1AC == 0 && o->oEyerokBossActiveHand == 0) {\n        if (o->oEyerokBossUnk104 != 0) {\n            if (approach_f32_ptr(&o->oEyerokBossUnk110, 1.0f, 0.02f)) {\n                if (o->oEyerokBossUnk104 < 0) {\n                    if (!eyerok_check_mario_relative_z(400) && ++o->oEyerokBossUnk104 == 0) {\n                        o->oEyerokBossUnk104 = 1;\n                    }\n                } else {\n                    o->oEyerokBossUnk104--;\n                }\n\n                if (o->oEyerokBossUnk104 != 0 && o->oEyerokBossUnk104 != 1) {\n                    o->oEyerokBossUnkFC++;\n                    if ((o->oEyerokBossActiveHand = o->oEyerokBossUnkFC & 0x1) == 0) {\n                        o->oEyerokBossActiveHand = -1;\n                    }\n                }\n            }\n        } else {\n            o->oEyerokBossUnkFC++;\n\n            if (eyerok_check_mario_relative_z(400)) {\n                o->oEyerokBossUnk104 = -8;\n                o->oEyerokBossUnk110 = 1.0f;\n                o->oEyerokBossUnk108 = 0.0f;\n            } else if (o->oEyerokBossNumHands == 2 && o->oEyerokBossUnkFC % 6 == 0) {\n                o->oEyerokBossUnk104 = 8;\n                o->oEyerokBossUnk110 = 0.0f;\n\n                if ((o->oEyerokBossUnkFC = random_u16() & 0x1) != 0) {\n                    o->oEyerokBossUnk108 = -1.0f;\n                } else {\n                    o->oEyerokBossUnk108 = 1.0f;\n                }\n\n                o->oEyerokBossUnk10C = gMarioObject->oPosZ;\n                clamp_f32(&o->oEyerokBossUnk10C, o->oPosZ + 400.0f, o->oPosZ + 1600.0f);\n            } else if ((o->oEyerokBossActiveHand = o->oEyerokBossUnkFC & 0x1) == 0) {\n                o->oEyerokBossActiveHand = -1;\n            }\n        }\n    }\n}\n\nstatic void eyerok_boss_act_die(void) {\n    if (o->oTimer == 60) {\n        if (cur_obj_update_dialog_with_cutscene(MARIO_DIALOG_LOOK_UP, DIALOG_FLAG_NONE, CUTSCENE_DIALOG, DIALOG_118)) {\n            spawn_default_star(0.0f, -900.0f, -3700.0f);\n        } else {\n            o->oTimer--;\n        }\n    } else if (o->oTimer > 120) {\n        stop_background_music(SEQUENCE_ARGS(4, SEQ_EVENT_BOSS));\n        obj_mark_for_deletion(o);\n    }\n}\n\nvoid bhv_eyerok_boss_loop(void) {\n    switch (o->oAction) {\n        case EYEROK_BOSS_ACT_SLEEP:\n            eyerok_boss_act_sleep();\n            break;\n        case EYEROK_BOSS_ACT_WAKE_UP:\n            eyerok_boss_act_wake_up();\n            break;\n        case EYEROK_BOSS_ACT_SHOW_INTRO_TEXT:\n            eyerok_boss_act_show_intro_text();\n            break;\n        case EYEROK_BOSS_ACT_FIGHT:\n            eyerok_boss_act_fight();\n            break;\n        case EYEROK_BOSS_ACT_DIE:\n            eyerok_boss_act_die();\n            break;\n    }\n}\n\nstatic s32 eyerok_hand_check_attacked(void) {\n    if (o->oEyerokReceivedAttack != 0 && abs_angle_diff(o->oAngleToMario, o->oFaceAngleYaw) < 0x3000) {\n        cur_obj_play_sound_2(SOUND_OBJ2_EYEROK_SOUND_SHORT);\n\n        if (--o->oHealth >= 2) {\n            o->oAction = EYEROK_HAND_ACT_ATTACKED;\n            o->oVelY = 30.0f;\n        } else {\n            o->parentObj->oEyerokBossNumHands--;\n            o->oAction = EYEROK_HAND_ACT_DIE;\n            o->oVelY = 50.0f;\n        }\n\n        o->oForwardVel *= 0.2f;\n        o->oMoveAngleYaw = o->oFaceAngleYaw + 0x8000;\n        o->oMoveFlags = 0;\n        o->oGravity = -4.0f;\n        o->oAnimState = 3;\n\n        return TRUE;\n    } else {\n        return FALSE;\n    }\n}\n\nstatic void eyerok_hand_pound_ground(void) {\n    cur_obj_play_sound_2(SOUND_OBJ_POUNDING_LOUD);\n    set_camera_shake_from_point(SHAKE_POS_SMALL, o->oPosX, o->oPosY, o->oPosZ);\n    spawn_mist_from_global();\n}\n\nstatic void eyerok_hand_act_sleep(void) {\n    if (o->parentObj->oAction != EYEROK_BOSS_ACT_SLEEP\n        && ++o->oEyerokHandWakeUpTimer > -3 * o->oBhvParams2ndByte) {\n        if (cur_obj_check_if_near_animation_end()) {\n            o->parentObj->oEyerokBossNumHands++;\n            o->oAction = EYEROK_HAND_ACT_IDLE;\n            o->collisionData = segmented_to_virtual(&ssl_seg7_collision_07028274);\n        } else {\n            approach_f32_ptr(&o->oPosX, o->oHomeX, 15.0f);\n            o->oPosY = o->oHomeY\n                       + (200 * o->oBhvParams2ndByte + 400)\n                             * sins((s16)(absf(o->oPosX - o->oHomeX) / 724.0f * 0x8000));\n            obj_face_yaw_approach(o->oMoveAngleYaw, 400);\n        }\n    } else {\n        if (o->oBhvParams2ndByte < 0) {\n            o->collisionData = segmented_to_virtual(&ssl_seg7_collision_070284B0);\n        } else {\n            o->collisionData = segmented_to_virtual(&ssl_seg7_collision_07028370);\n        }\n\n        cur_obj_reverse_animation();\n        o->oPosX = o->oHomeX + 724.0f * o->oBhvParams2ndByte;\n    }\n}\n\nstatic void eyerok_hand_act_idle(void) {\n    cur_obj_init_animation_with_sound(2);\n\n    if (o->parentObj->oAction == EYEROK_BOSS_ACT_FIGHT) {\n        if (o->parentObj->oEyerokBossUnk104 != 0) {\n            if (o->parentObj->oEyerokBossUnk104 != 1) {\n                o->oAction = EYEROK_HAND_ACT_BEGIN_DOUBLE_POUND;\n                o->oGravity = 0.0f;\n            }\n        } else if (o->parentObj->oEyerokBossUnk1AC == 0 && o->parentObj->oEyerokBossActiveHand != 0) {\n            if (o->parentObj->oEyerokBossActiveHand == o->oBhvParams2ndByte) {\n                if (eyerok_check_mario_relative_z(400) || random_u16() % 2 != 0) {\n                    o->oAction = EYEROK_HAND_ACT_TARGET_MARIO;\n                    o->oMoveAngleYaw = o->oAngleToMario;\n                    o->oGravity = 0.0f;\n                } else {\n                    o->oAction = EYEROK_HAND_ACT_FIST_PUSH;\n                    if (o->parentObj->oPosX - gMarioObject->oPosX < 0.0f) {\n                        o->oMoveAngleYaw = -0x800;\n                    } else {\n                        o->oMoveAngleYaw = 0x800;\n                    }\n\n                    o->oMoveAngleYaw += o->oAngleToMario;\n                    o->oGravity = -4.0f;\n                }\n            } else {\n                o->oAction = EYEROK_HAND_ACT_OPEN;\n            }\n        }\n    } else {\n        o->oPosY = o->oHomeY + o->parentObj->oEyerokBossUnk110;\n    }\n}\n\nstatic void eyerok_hand_act_open(void) {\n    o->parentObj->oEyerokBossUnk1AC = o->oBhvParams2ndByte;\n\n    if (cur_obj_init_anim_and_check_if_end(4)) {\n        o->oAction = EYEROK_HAND_ACT_SHOW_EYE;\n        o->oEyerokHandUnkFC = 2;\n        o->oEyerokHandUnk100 = 60;\n\n        o->collisionData = segmented_to_virtual(ssl_seg7_collision_070282F8);\n\n        if (o->parentObj->oEyerokBossNumHands != 2) {\n            s16 sp1E = o->oAngleToMario;\n            clamp_s16(&sp1E, -0x3000, 0x3000);\n            o->oMoveAngleYaw = sp1E;\n            o->oForwardVel = 50.0f;\n        } else {\n            o->oMoveAngleYaw = 0;\n        }\n    }\n}\n\nstatic void eyerok_hand_act_show_eye(void) {\n    cur_obj_init_animation_with_sound(5);\n    cur_obj_play_sound_at_anim_range(0, 0, SOUND_OBJ_EYEROK_SHOW_EYE);\n\n    if (!eyerok_hand_check_attacked()) {\n        if (o->parentObj->oEyerokBossActiveHand == 0) {\n            if (o->oAnimState < 3) {\n                o->oAnimState++;\n            } else if (cur_obj_check_if_near_animation_end()) {\n                UNUSED s16 val06 = (s16)(o->oAngleToMario - o->oFaceAngleYaw) * o->oBhvParams2ndByte;\n                o->oAction = EYEROK_HAND_ACT_CLOSE;\n            }\n        } else {\n            if (o->oEyerokHandUnk100--) {\n                if (o->oEyerokHandUnkFC != 0) {\n                    o->oEyerokHandUnkFC--;\n                }\n                o->oAnimState = D_80331BA4[o->oEyerokHandUnkFC];\n            } else {\n                o->oEyerokHandUnkFC = 5;\n                o->oEyerokHandUnk100 = random_linear_offset(20, 50);\n            }\n\n            if (o->parentObj->oEyerokBossNumHands != 2) {\n                obj_face_yaw_approach(o->oMoveAngleYaw, 0x800);\n                if (o->oTimer > 10\n                    && (o->oPosZ - gMarioObject->oPosZ > 0.0f || (o->oMoveFlags & OBJ_MOVE_HIT_EDGE))) {\n                    o->parentObj->oEyerokBossActiveHand = 0;\n                    o->oForwardVel = 0.0f;\n                }\n            }\n        }\n    }\n}\n\nstatic void eyerok_hand_act_close(void) {\n    if (cur_obj_init_anim_check_frame(7, 1)) {\n        o->collisionData = segmented_to_virtual(ssl_seg7_collision_07028274);\n\n        if (o->parentObj->oEyerokBossNumHands != 2) {\n            o->oAction = EYEROK_HAND_ACT_RETREAT;\n            o->parentObj->oEyerokBossActiveHand = o->oBhvParams2ndByte;\n        } else if (o->parentObj->oEyerokBossActiveHand == 0) {\n            o->oAction = EYEROK_HAND_ACT_IDLE;\n            o->parentObj->oEyerokBossUnk1AC = 0;\n        }\n    }\n}\n\nstatic void eyerok_hand_act_attacked(void) {\n    if (cur_obj_init_anim_and_check_if_end(3)) {\n        o->oAction = EYEROK_HAND_ACT_RECOVER;\n        o->collisionData = segmented_to_virtual(ssl_seg7_collision_07028274);\n    }\n\n    if (o->oMoveFlags & OBJ_MOVE_MASK_ON_GROUND) {\n        o->oForwardVel = 0.0f;\n    }\n}\n\nstatic void eyerok_hand_act_recover(void) {\n    if (cur_obj_init_anim_and_check_if_end(0)) {\n        o->oAction = EYEROK_HAND_ACT_BECOME_ACTIVE;\n    }\n}\n\nstatic void eyerok_hand_act_become_active(void) {\n    if (o->parentObj->oEyerokBossActiveHand == 0 || o->parentObj->oEyerokBossNumHands != 2) {\n        o->oAction = EYEROK_HAND_ACT_RETREAT;\n        o->parentObj->oEyerokBossActiveHand = o->oBhvParams2ndByte;\n    }\n}\n\nstatic void eyerok_hand_act_die(void) {\n    if (cur_obj_init_anim_and_check_if_end(1)) {\n        o->parentObj->oEyerokBossUnk1AC = 0;\n        obj_explode_and_spawn_coins(150.0f, 1);\n        create_sound_spawner(SOUND_OBJ2_EYEROK_SOUND_LONG);\n    }\n\n    if (o->oMoveFlags & OBJ_MOVE_MASK_ON_GROUND) {\n        cur_obj_play_sound_2(SOUND_OBJ_POUNDING_LOUD);\n        o->oForwardVel = 0.0f;\n    }\n}\n\nstatic void eyerok_hand_act_retreat(void) {\n    f32 distToHome = cur_obj_lateral_dist_to_home();\n    s16 angleToHome = cur_obj_angle_to_home();\n\n    if ((distToHome -= 40.0f) < 0.0f) {\n        distToHome = 0.0f;\n    }\n\n    o->oPosX = o->oHomeX - distToHome * sins(angleToHome);\n    o->oPosZ = o->oHomeZ - distToHome * coss(angleToHome);\n\n    obj_face_yaw_approach(0, 400);\n\n    if (approach_f32_ptr(&o->oPosY, o->oHomeY, 20.0f) && distToHome == 0.0f && o->oFaceAngleYaw == 0) {\n        o->oAction = EYEROK_HAND_ACT_IDLE;\n        o->parentObj->oEyerokBossActiveHand -= o->oBhvParams2ndByte;\n\n        if (o->parentObj->oEyerokBossUnk1AC == o->oBhvParams2ndByte) {\n            o->parentObj->oEyerokBossUnk1AC = 0;\n        }\n    }\n}\n\nstatic void eyerok_hand_act_target_mario(void) {\n    if (eyerok_check_mario_relative_z(400) || o->oPosZ - gMarioObject->oPosZ > 0.0f\n        || o->oPosZ - o->parentObj->oPosZ > 1700.0f || absf(o->oPosX - o->parentObj->oPosX) > 900.0f\n        || (o->oMoveFlags & OBJ_MOVE_HIT_WALL)) {\n        o->oForwardVel = 0.0f;\n        if (approach_f32_ptr(&o->oPosY, o->oHomeY + 300.0f, 20.0f)) {\n            o->oAction = EYEROK_HAND_ACT_SMASH;\n        }\n    } else {\n        obj_forward_vel_approach(50.0f, 5.0f);\n        approach_f32_ptr(&o->oPosY, o->oHomeY + 300.0f, 20.0f);\n        cur_obj_rotate_yaw_toward(o->oAngleToMario, 4000);\n    }\n}\n\nstatic void eyerok_hand_act_smash(void) {\n    if (o->oTimer > 20) {\n        if (o->oMoveFlags & OBJ_MOVE_MASK_ON_GROUND) {\n            if (o->oGravity < -4.0f) {\n                eyerok_hand_pound_ground();\n                o->oGravity = -4.0f;\n            } else {\n                s16 sp1E = abs_angle_diff(o->oFaceAngleYaw, o->oAngleToMario);\n                if (o->oDistanceToMario < 300.0f && sp1E > 0x2000 && sp1E < 0x6000) {\n                    o->oAction = EYEROK_HAND_ACT_FIST_SWEEP;\n                    if ((s16)(o->oFaceAngleYaw - o->oAngleToMario) < 0) {\n                        o->oMoveAngleYaw = 0x4000;\n                    } else {\n                        o->oMoveAngleYaw = -0x4000;\n                    }\n                } else {\n                    o->oAction = EYEROK_HAND_ACT_RETREAT;\n                }\n            }\n        } else {\n            o->oGravity = -20.0f;\n        }\n    }\n}\n\nstatic void eyerok_hand_act_fist_push(void) {\n    if (o->oTimer > 5 && (o->oPosZ - gMarioObject->oPosZ > 0.0f || (o->oMoveFlags & OBJ_MOVE_HIT_EDGE))) {\n        o->oAction = EYEROK_HAND_ACT_FIST_SWEEP;\n        o->oForwardVel = 0.0f;\n\n        if (o->oPosX - gMarioObject->oPosX < 0.0f) {\n            o->oMoveAngleYaw = 0x4000;\n        } else {\n            o->oMoveAngleYaw = -0x4000;\n        }\n    } else {\n        o->oForwardVel = 50.0f;\n    }\n}\n\nstatic void eyerok_hand_act_fist_sweep(void) {\n    if (o->oPosZ - o->parentObj->oPosZ < 1000.0f || (o->oMoveFlags & OBJ_MOVE_HIT_EDGE)) {\n        o->oAction = EYEROK_HAND_ACT_RETREAT;\n        o->oForwardVel = 0.0f;\n    } else {\n        obj_forward_vel_approach(5.0f, 0.02f);\n        o->oForwardVel *= 1.08f;\n        o->oTimer = 0;\n    }\n}\n\nstatic void eyerok_hand_act_begin_double_pound(void) {\n    if (o->parentObj->oEyerokBossUnk104 < 0\n        || o->parentObj->oEyerokBossActiveHand == o->oBhvParams2ndByte) {\n        o->oAction = EYEROK_HAND_ACT_DOUBLE_POUND;\n        o->oMoveAngleYaw = (s32)(o->oFaceAngleYaw - 0x4000 * o->parentObj->oEyerokBossUnk108);\n    } else {\n        f32 sp4 = o->parentObj->oPosX + 400.0f * o->parentObj->oEyerokBossUnk108\n                  - 180.0f * o->oBhvParams2ndByte;\n\n        o->oPosX = o->oHomeX + (sp4 - o->oHomeX) * o->parentObj->oEyerokBossUnk110;\n        o->oPosY = o->oHomeY + 300.0f * o->parentObj->oEyerokBossUnk110;\n        o->oPosZ =\n            o->oHomeZ + (o->parentObj->oEyerokBossUnk10C - o->oHomeZ) * o->parentObj->oEyerokBossUnk110;\n    }\n}\n\nstatic void eyerok_hand_act_double_pound(void) {\n    if (o->parentObj->oEyerokBossNumHands != 2) {\n        o->parentObj->oEyerokBossActiveHand = o->oBhvParams2ndByte;\n    }\n\n    if (o->parentObj->oEyerokBossUnk104 == 1) {\n        o->oAction = EYEROK_HAND_ACT_RETREAT;\n        o->parentObj->oEyerokBossUnk1AC = o->oBhvParams2ndByte;\n    } else if (o->parentObj->oEyerokBossActiveHand == o->oBhvParams2ndByte) {\n        if (o->oMoveFlags & OBJ_MOVE_MASK_ON_GROUND) {\n            if (o->oGravity < -15.0f) {\n                o->parentObj->oEyerokBossActiveHand = 0;\n                eyerok_hand_pound_ground();\n                o->oForwardVel = 0.0f;\n                o->oGravity = -15.0f;\n            } else {\n                o->oForwardVel = 30.0f * absf(o->parentObj->oEyerokBossUnk108);\n                o->oVelY = 100.0f;\n                o->oMoveFlags = 0;\n            }\n        } else if (o->oVelY <= 0.0f) {\n            o->oGravity = -20.0f;\n        }\n    }\n}\n\nvoid bhv_eyerok_hand_loop(void) {\n    o->header.gfx.scale[0] = 1.5f;\n\n    if (o->oAction == EYEROK_HAND_ACT_SLEEP) {\n        eyerok_hand_act_sleep();\n    } else {\n        cur_obj_update_floor_and_walls();\n\n        switch (o->oAction) {\n            case EYEROK_HAND_ACT_IDLE:\n                eyerok_hand_act_idle();\n                break;\n            case EYEROK_HAND_ACT_OPEN:\n                eyerok_hand_act_open();\n                break;\n            case EYEROK_HAND_ACT_SHOW_EYE:\n                eyerok_hand_act_show_eye();\n                break;\n            case EYEROK_HAND_ACT_CLOSE:\n                eyerok_hand_act_close();\n                break;\n            case EYEROK_HAND_ACT_RETREAT:\n                eyerok_hand_act_retreat();\n                break;\n            case EYEROK_HAND_ACT_TARGET_MARIO:\n                eyerok_hand_act_target_mario();\n                break;\n            case EYEROK_HAND_ACT_SMASH:\n                eyerok_hand_act_smash();\n                break;\n            case EYEROK_HAND_ACT_FIST_PUSH:\n                eyerok_hand_act_fist_push();\n                break;\n            case EYEROK_HAND_ACT_FIST_SWEEP:\n                eyerok_hand_act_fist_sweep();\n                break;\n            case EYEROK_HAND_ACT_BEGIN_DOUBLE_POUND:\n                eyerok_hand_act_begin_double_pound();\n                break;\n            case EYEROK_HAND_ACT_DOUBLE_POUND:\n                eyerok_hand_act_double_pound();\n                break;\n            case EYEROK_HAND_ACT_ATTACKED:\n                eyerok_hand_act_attacked();\n                break;\n            case EYEROK_HAND_ACT_RECOVER:\n                eyerok_hand_act_recover();\n                break;\n            case EYEROK_HAND_ACT_BECOME_ACTIVE:\n                eyerok_hand_act_become_active();\n                break;\n            case EYEROK_HAND_ACT_DIE:\n                eyerok_hand_act_die();\n                break;\n        }\n\n        o->oEyerokReceivedAttack = obj_check_attacks(&sEyerokHitbox, o->oAction);\n        cur_obj_move_standard(-78);\n    }\n\n    load_object_collision_model();\n    o->header.gfx.scale[0] = 1.5f * o->oBhvParams2ndByte;\n}\n"
  },
  {
    "path": "src/game/behaviors/falling_pillar.inc.c",
    "content": "\n/**\n * Behavior for the falling pillars inside the underwater cave area of\n * Jolly Roger Bay.\n *\n * Also includes behavior for the invisible hitboxes they spawn.\n */\n\nstatic struct ObjectHitbox sFallingPillarHitbox = {\n    /* interactType:      */ INTERACT_DAMAGE,\n    /* downOffset:        */ 150,\n    /* damageOrCoinValue: */ 3,\n    /* health:            */ 0,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 150,\n    /* height:            */ 300,\n    /* hurtboxRadius:     */ 0,\n    /* hurtboxHeight:     */ 0,\n};\n\n/**\n * Initiates various physics params for the pillar.\n */\nvoid bhv_falling_pillar_init(void) {\n    o->oGravity = 0.5f;\n    o->oFriction = 0.91f;\n    o->oBuoyancy = 1.3f;\n}\n\n/**\n * Spawns 4 hitboxes with Y coordinates offset.\n */\nvoid bhv_falling_pillar_spawn_hitboxes(void) {\n    s32 i;\n\n    for (i = 0; i < 4; i++) {\n        spawn_object_relative(i, 0, i * 400 + 300, 0, o, MODEL_NONE, bhvFallingPillarHitbox);\n    }\n}\n\n/**\n * Computes the angle from current pillar position to 500 units in front of\n * Mario.\n */\ns16 bhv_falling_pillar_calculate_angle_in_front_of_mario(void) {\n    // Calculate target to be 500 units in front of Mario in\n    // the direction he is facing (angle[1] is yaw).\n    f32 targetX = sins(gMarioObject->header.gfx.angle[1]) * 500.0f + gMarioObject->header.gfx.pos[0];\n    f32 targetZ = coss(gMarioObject->header.gfx.angle[1]) * 500.0f + gMarioObject->header.gfx.pos[2];\n\n    // Calculate the angle to the target from the pillar's current location.\n    return atan2s(targetZ - o->oPosZ, targetX - o->oPosX);\n}\n\n/**\n * Falling pillar main logic loop.\n */\nvoid bhv_falling_pillar_loop(void) {\n    s16 angleInFrontOfMario;\n\n    switch (o->oAction) {\n        case FALLING_PILLAR_ACT_IDLE:\n            // When Mario is within 1300 units of distance...\n            if (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 1300)) {\n                // Begin slightly moving towards Mario.\n                o->oMoveAngleYaw = o->oAngleToMario;\n                o->oForwardVel = 1.0f;\n\n                // Spawn the invisible hitboxes.\n                bhv_falling_pillar_spawn_hitboxes();\n\n                // Start turning towards Mario.\n                o->oAction = FALLING_PILLAR_ACT_TURNING;\n\n                // Play the detaching sound.\n                cur_obj_play_sound_2(SOUND_GENERAL_POUND_ROCK);\n            }\n            break;\n\n        case FALLING_PILLAR_ACT_TURNING:\n            object_step_without_floor_orient();\n\n            // Calculate angle in front of Mario and turn towards it.\n            angleInFrontOfMario = bhv_falling_pillar_calculate_angle_in_front_of_mario();\n            o->oFaceAngleYaw = approach_s16_symmetric(o->oFaceAngleYaw, angleInFrontOfMario, 0x400);\n\n            // After 10 ticks, start falling.\n            if (o->oTimer > 10) {\n                o->oAction = FALLING_PILLAR_ACT_FALLING;\n            }\n            break;\n\n        case FALLING_PILLAR_ACT_FALLING:\n            object_step_without_floor_orient();\n\n            // Start falling slowly, with increasing acceleration each frame.\n            o->oFallingPillarPitchAcceleration += 4.0f;\n            o->oAngleVelPitch += o->oFallingPillarPitchAcceleration;\n            o->oFaceAnglePitch += o->oAngleVelPitch;\n\n            // Once the pillar has turned nearly 90 degrees (after ~22 frames),\n            if (o->oFaceAnglePitch > 0x3900) {\n                // Move 500 units in the direction of falling.\n                o->oPosX += sins(o->oFaceAngleYaw) * 500.0f;\n                o->oPosZ += coss(o->oFaceAngleYaw) * 500.0f;\n\n                // Make the camera shake and spawn dust clouds.\n                set_camera_shake_from_point(SHAKE_POS_MEDIUM, o->oPosX, o->oPosY, o->oPosZ);\n                spawn_mist_particles_variable(0, 0, 92.0f);\n\n                // Go invisible.\n                o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n\n                // Play the hitting the ground sound.\n                create_sound_spawner(SOUND_GENERAL_BIG_POUND);\n            }\n            break;\n    }\n}\n\n/**\n * Main loop for the invisible hitboxes.\n */\nvoid bhv_falling_pillar_hitbox_loop(void) {\n    // Get the state of the pillar.\n    s32 pitch = o->parentObj->oFaceAnglePitch;\n    s32 yaw = o->parentObj->oFaceAngleYaw;\n    f32 x = o->parentObj->oPosX;\n    f32 y = o->parentObj->oPosY;\n    f32 z = o->parentObj->oPosZ;\n    f32 yOffset = o->oBhvParams2ndByte * 400 + 300;\n\n    // Update position of hitboxes so they fall with the pillar.\n    o->oPosX = sins(pitch) * sins(yaw) * yOffset + x;\n    o->oPosY = coss(pitch) * yOffset + y;\n    o->oPosZ = sins(pitch) * coss(yaw) * yOffset + z;\n\n    // Give these a hitbox so they can collide with Mario.\n    obj_set_hitbox(o, &sFallingPillarHitbox);\n\n    // When the pillar goes inactive, the hitboxes also go inactive.\n    if (o->parentObj->activeFlags == ACTIVE_FLAG_DEACTIVATED) {\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/falling_rising_platform.inc.c",
    "content": "// falling_rising_platform.inc.c\n\nvoid bhv_squishable_platform_loop(void) {\n    o->header.gfx.scale[1] = (sins(o->oBitFSPlatformTimer) + 1.0) * 0.3 + 0.4;\n    o->oBitFSPlatformTimer += 0x80;\n}\n\nvoid bhv_bitfs_sinking_platform_loop(void) {\n    //! f32 double conversion error accumulates on Wii VC causing the platform to rise up\n    o->oPosY -= sins(o->oBitFSPlatformTimer) * 0.58;\n    o->oBitFSPlatformTimer += 0x100;\n}\n\n// TODO: Named incorrectly. fix\nvoid bhv_ddd_moving_pole_loop(void) {\n    obj_copy_pos_and_angle(o, o->parentObj);\n}\n\nvoid bhv_bitfs_sinking_cage_platform_loop(void) {\n    if (o->oBhvParams2ndByte != 0) {\n        if (o->oTimer == 0) {\n            o->oPosY -= 300.0f;\n        }\n        o->oPosY += sins(o->oBitFSPlatformTimer) * 7.0f;\n    } else {\n        o->oPosY -= sins(o->oBitFSPlatformTimer) * 3.0f;\n    }\n\n    o->oBitFSPlatformTimer += 0x100;\n}\n"
  },
  {
    "path": "src/game/behaviors/ferris_wheel.inc.c",
    "content": "\n/**\n * Behaviors for bhvFerrisWheelAxle and bhvFerrisWheelPlatform.\n * These are the revolving sets of four platforms in BitDW and BitS.\n * The axle spawns the four platforms.\n */\n\n/**\n * Properties for the ferris wheel axle and platforms.\n */\nstruct FerrisWheelProperties {\n    Collision const *axleCollision;\n    Collision const *platformCollision;\n    s16 platformModel;\n};\n\n/**\n * Properties for the ferris wheels in BitS and BitDW, respectively.\n */\nstatic struct FerrisWheelProperties sFerrisWheelProperties[] = {\n    { bits_seg7_collision_0701ACAC, bits_seg7_collision_0701AC28, MODEL_BITS_BLUE_PLATFORM },\n    { bitdw_seg7_collision_0700F7F0, bitdw_seg7_collision_0700F898, MODEL_BITDW_BLUE_PLATFORM },\n};\n\n/**\n * Init function for bhvFerrisWheelAxle.\n * It doesn't have an update function, but it increments its roll in its\n * behavior script.\n */\nvoid bhv_ferris_wheel_axle_init(void) {\n    struct Object *platform;\n    s32 i;\n\n    o->collisionData =\n        segmented_to_virtual(sFerrisWheelProperties[o->oBhvParams2ndByte].axleCollision);\n\n    for (i = 0; i < 4; i++) {\n        platform = spawn_object_relative(i, 0, 0, 0, o,\n                                         sFerrisWheelProperties[o->oBhvParams2ndByte].platformModel,\n                                         bhvFerrisWheelPlatform);\n\n        if (platform != NULL) {\n            platform->collisionData =\n                segmented_to_virtual(sFerrisWheelProperties[o->oBhvParams2ndByte].platformCollision);\n        }\n    }\n}\n\n/**\n * Update function for bhvFerrisWheelPlatform.\n * Position self relative to parent using the parent's roll.\n */\nvoid bhv_ferris_wheel_platform_update(void) {\n    f32 offsetXZ;\n    s16 offsetAngle;\n\n    obj_perform_position_op(POS_OP_SAVE_POSITION);\n\n    offsetAngle = o->parentObj->oFaceAngleRoll + o->oBhvParams2ndByte * 0x4000;\n    offsetXZ = 400.0f * coss(offsetAngle);\n\n    o->oPosX = o->parentObj->oPosX + offsetXZ * sins(o->parentObj->oMoveAngleYaw)\n               + 300.0f * coss(o->parentObj->oMoveAngleYaw);\n\n    o->oPosY = o->parentObj->oPosY + 400.0f * sins(offsetAngle);\n\n    o->oPosZ = o->parentObj->oPosZ + offsetXZ * coss(o->parentObj->oMoveAngleYaw)\n               + 300.0f * sins(o->parentObj->oMoveAngleYaw);\n\n    obj_perform_position_op(POS_OP_COMPUTE_VELOCITY);\n}\n"
  },
  {
    "path": "src/game/behaviors/fire_piranha_plant.inc.c",
    "content": "// fire_piranha_plant.inc.c\n\nstruct ObjectHitbox sFirePiranhaPlantHitbox = {\n    /* interactType:      */ INTERACT_BOUNCE_TOP,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 2,\n    /* health:            */ 0,\n    /* numLootCoins:      */ 1,\n    /* radius:            */ 80,\n    /* height:            */ 160,\n    /* hurtboxRadius:     */ 50,\n    /* hurtboxHeight:     */ 150,\n};\n\nf32 D_80331B5C[] = {\n    0.5f,\n    2.0f,\n};\n\nstruct ObjectHitbox sPiranhaPlantFireHitbox = {\n    /* interactType:      */ INTERACT_FLAME,\n    /* downOffset:        */ 10,\n    /* damageOrCoinValue: */ 0,\n    /* health:            */ 0,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 10,\n    /* height:            */ 20,\n    /* hurtboxRadius:     */ 10,\n    /* hurtboxHeight:     */ 20,\n};\n\ns32 sNumActiveFirePiranhaPlants;\ns32 sNumKilledFirePiranhaPlants;\n\nvoid bhv_fire_piranha_plant_init(void) {\n    o->oFirePiranhaPlantNeutralScale = D_80331B5C[(u16)(o->oBhvParams >> 16)];\n    obj_set_hitbox(o, &sFirePiranhaPlantHitbox);\n\n    if ((u16)(o->oBhvParams >> 16) != 0) {\n        o->oFlags |= OBJ_FLAG_PERSISTENT_RESPAWN;\n        o->oHealth = 1;\n\n        if (o->oBhvParams & 0x0000FF00) {\n            o->oNumLootCoins = 0;\n        } else {\n            o->oNumLootCoins = 2;\n        }\n    }\n\n    sNumActiveFirePiranhaPlants = sNumKilledFirePiranhaPlants = 0;\n}\n\nstatic void fire_piranha_plant_act_hide(void) {\n    if (o->oFirePiranhaPlantDeathSpinTimer != 0) {\n        o->oMoveAngleYaw += (s32) o->oFirePiranhaPlantDeathSpinVel;\n        approach_f32_ptr(&o->oFirePiranhaPlantDeathSpinVel, 0.0f, 200.0f);\n\n        if (cur_obj_check_if_near_animation_end()\n            && --o->oFirePiranhaPlantDeathSpinTimer == 0) {\n            cur_obj_play_sound_2(SOUND_OBJ_ENEMY_DEFEAT_SHRINK);\n        }\n    } else if (approach_f32_ptr(&o->oFirePiranhaPlantScale, 0.0f,\n                                0.04f * o->oFirePiranhaPlantNeutralScale)) {\n        cur_obj_become_intangible();\n\n        if (o->oFirePiranhaPlantActive) {\n            sNumActiveFirePiranhaPlants--;\n            o->oFirePiranhaPlantActive = FALSE;\n\n            if ((u16)(o->oBhvParams >> 16) != 0 && o->oHealth == 0) {\n                if (++sNumKilledFirePiranhaPlants == 5) {\n                    spawn_default_star(-6300.0f, -1850.0f, -6300.0f);\n                }\n\n                obj_die_if_health_non_positive();\n                set_object_respawn_info_bits(o, 1);\n            }\n        } else if (sNumActiveFirePiranhaPlants < 2 && o->oTimer > 100\n                   && o->oDistanceToMario > 100.0f && o->oDistanceToMario < 800.0f) {\n            cur_obj_play_sound_2(SOUND_OBJ_PIRANHA_PLANT_APPEAR);\n\n            o->oFirePiranhaPlantActive = TRUE;\n            sNumActiveFirePiranhaPlants++;\n\n            cur_obj_unhide();\n            o->oAction = FIRE_PIRANHA_PLANT_ACT_GROW;\n            o->oMoveAngleYaw = o->oAngleToMario;\n        } else {\n            cur_obj_hide();\n        }\n    }\n\n    cur_obj_extend_animation_if_at_end();\n}\n\nstatic void fire_piranha_plant_act_grow(void) {\n    cur_obj_init_anim_extend(4);\n\n    if (approach_f32_ptr(&o->oFirePiranhaPlantScale, o->oFirePiranhaPlantNeutralScale,\n                         0.04f * o->oFirePiranhaPlantNeutralScale)) {\n        if (o->oTimer > 80) {\n            cur_obj_play_sound_2(SOUND_OBJ_PIRANHA_PLANT_SHRINK);\n            o->oAction = FIRE_PIRANHA_PLANT_ACT_HIDE;\n            cur_obj_init_animation_with_sound(0);\n        } else if (o->oTimer < 50) {\n            cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x400);\n        } else if (obj_is_rendering_enabled() && cur_obj_check_anim_frame(56)) {\n            cur_obj_play_sound_2(SOUND_OBJ_FLAME_BLOWN);\n            obj_spit_fire(0, (s32)(30.0f * o->oFirePiranhaPlantNeutralScale),\n                          (s32)(140.0f * o->oFirePiranhaPlantNeutralScale),\n                          2.5f * o->oFirePiranhaPlantNeutralScale, MODEL_RED_FLAME_SHADOW,\n                          20.0f, 15.0f, 0x1000);\n        }\n    } else if (o->oFirePiranhaPlantScale > o->oFirePiranhaPlantNeutralScale / 2) {\n        cur_obj_become_tangible();\n    }\n}\n\nvoid bhv_fire_piranha_plant_update(void) {\n    cur_obj_scale(o->oFirePiranhaPlantScale);\n\n    switch (o->oAction) {\n        case FIRE_PIRANHA_PLANT_ACT_HIDE:\n            fire_piranha_plant_act_hide();\n            break;\n        case FIRE_PIRANHA_PLANT_ACT_GROW:\n            fire_piranha_plant_act_grow();\n            break;\n    }\n\n    if (obj_check_attacks(&sFirePiranhaPlantHitbox, o->oAction) != 0) {\n        if (--o->oHealth < 0) {\n            if (o->oFirePiranhaPlantActive) {\n                sNumActiveFirePiranhaPlants--;\n            }\n        } else {\n            cur_obj_init_animation_with_sound(2);\n        }\n\n        o->oAction = FIRE_PIRANHA_PLANT_ACT_HIDE;\n        o->oFirePiranhaPlantDeathSpinTimer = 10;\n        o->oFirePiranhaPlantDeathSpinVel = 8000.0f;\n\n        cur_obj_become_intangible();\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/fire_spitter.inc.c",
    "content": "// fire_spitter.inc.c\n\nstatic void fire_spitter_act_idle(void) {\n    approach_f32_ptr(&o->header.gfx.scale[0], 0.2f, 0.002f);\n\n    if (o->oTimer > 150 && o->oDistanceToMario < 800.0f && !(o->oMoveFlags & OBJ_MOVE_MASK_IN_WATER)) {\n        o->oAction = FIRE_SPITTER_ACT_SPIT_FIRE;\n        o->oFireSpitterScaleVel = 0.05f;\n    }\n}\n\nstatic void fire_spitter_act_spit_fire(void) {\n    s32 scaleStatus;\n\n    o->oMoveAngleYaw = o->oAngleToMario;\n\n    // Increase scale by 0.05, 0.04, ..., -0.03. Then wait ~8 frames, then\n    // starting moving scale by 0.05 each frame toward 0.1. The first time\n    // it becomes below 0.15 during this latter portion, shoot fire.\n    scaleStatus = obj_grow_then_shrink(&o->oFireSpitterScaleVel, 0.15f, 0.1f);\n\n    if (scaleStatus != 0) {\n        if (scaleStatus < 0) {\n            o->oAction = FIRE_SPITTER_ACT_IDLE;\n        } else {\n            cur_obj_play_sound_2(SOUND_OBJ_FLAME_BLOWN);\n            obj_spit_fire(0, 0, 0, 5.0f, MODEL_RED_FLAME_SHADOW, 20.0f, 15.0f, 0x1000);\n        }\n    }\n}\n\nvoid bhv_fire_spitter_update(void) {\n    cur_obj_scale(o->header.gfx.scale[0]);\n    o->oGraphYOffset = 40.0f;\n    cur_obj_update_floor_and_walls();\n\n    switch (o->oAction) {\n        case FIRE_SPITTER_ACT_IDLE:\n            fire_spitter_act_idle();\n            break;\n        case FIRE_SPITTER_ACT_SPIT_FIRE:\n            fire_spitter_act_spit_fire();\n            break;\n    }\n\n    cur_obj_move_standard(78);\n}\n"
  },
  {
    "path": "src/game/behaviors/fish.inc.c",
    "content": "\n/**\n * @file fish.inc.c\n * Implements behaviour and spawning for fish located in the Secret Aquarium and other levels.\n */\n\n/**\n * Spawns fish with settings chosen by oBhvParams2ndByte.\n * These settings are animations, color, and spawn quantity.\n */\nstatic void fish_spawner_act_spawn(void) {\n    s32 i;\n    s32 schoolQuantity;\n    s16 model;\n    f32 minDistToMario;\n    const struct Animation * const *fishAnimation;\n\n    switch (o->oBhvParams2ndByte) {\n        // Cases need to be on one line to match with and without optimizations.\n        case FISH_SPAWNER_BP_MANY_BLUE:\n            model = MODEL_FISH;      schoolQuantity = 20; minDistToMario = 1500.0f; fishAnimation = blue_fish_seg3_anims_0301C2B0;\n            break;\n\n        case FISH_SPAWNER_BP_FEW_BLUE:\n            model = MODEL_FISH;      schoolQuantity = 5;  minDistToMario = 1500.0f; fishAnimation = blue_fish_seg3_anims_0301C2B0;\n            break;\n\n        case FISH_SPAWNER_BP_MANY_CYAN:\n            model = MODEL_CYAN_FISH; schoolQuantity = 20; minDistToMario = 1500.0f; fishAnimation = cyan_fish_seg6_anims_0600E264;\n            break;\n\n        case FISH_SPAWNER_BP_FEW_CYAN:\n            model = MODEL_CYAN_FISH; schoolQuantity = 5;  minDistToMario = 1500.0f; fishAnimation = cyan_fish_seg6_anims_0600E264;\n            break;\n    }\n\n    // Spawn and animate the schoolQuantity of fish if Mario enters render distance\n    // or the stage is Secret Aquarium.\n    // Fish moves randomly within a range of 700.0f.\n    if (o->oDistanceToMario < minDistToMario || gCurrLevelNum == LEVEL_SA) {\n        for (i = 0; i < schoolQuantity; i++) {\n            struct Object *fishObject = spawn_object(o, model, bhvFish);\n            fishObject->oBhvParams2ndByte = o->oBhvParams2ndByte;\n            obj_init_animation_with_sound(fishObject, fishAnimation, 0);\n            obj_translate_xyz_random(fishObject, 700.0f);\n        }\n        o->oAction = FISH_SPAWNER_ACT_IDLE;\n    }\n}\n\n/**\n * Sets the spawner to respawn fish if the stage is not Secret Aquarium and\n * Mario is more than 2000 units higher.\n */\nstatic void fish_spawner_act_idle(void) {\n    if ((gCurrLevelNum != LEVEL_SA) && (gMarioObject->oPosY - o->oPosY > 2000.0f)) {\n        o->oAction = FISH_SPAWNER_ACT_RESPAWN;\n    }\n}\n\n/**\n * Temp action that sets the action to spawn fish. This triggers the old fish to despawn.\n */\nstatic void fish_spawner_act_respawn(void) {\n    o->oAction = FISH_SPAWNER_ACT_SPAWN;\n}\n\nstatic void (*sFishSpawnerActions[])(void) = {\n    fish_spawner_act_spawn,\n    fish_spawner_act_idle,\n    fish_spawner_act_respawn,\n};\n\nvoid bhv_fish_spawner_loop(void) {\n    cur_obj_call_action_function(sFishSpawnerActions);\n}\n\n/**\n * Allows the fish to swim vertically.\n */\nstatic void fish_vertical_roam(s32 speed) {\n    f32 parentY = o->parentObj->oPosY;\n\n    // If the stage is Secret Aquarium, the fish can\n    // travel as far vertically as they wish.\n    if (gCurrLevelNum == LEVEL_SA) {\n        if (500.0f < absf(o->oPosY - o->oFishGoalY)) {\n            speed = 10;\n        }\n        o->oPosY = approach_f32_symmetric(o->oPosY, o->oFishGoalY, speed);\n\n     // Allow the fish to roam vertically if within\n     // range of the fish spawner.\n     } else if (parentY - 100.0f - o->oFishDepthDistance < o->oPosY\n               && o->oPosY < parentY + 1000.0f + o->oFishDepthDistance) {\n        o->oPosY = approach_f32_symmetric(o->oPosY, o->oFishGoalY, speed);\n    }\n}\n\n/**\n * Fish action that randomly roams within a set range.\n */\nstatic void fish_act_roam(void) {\n    f32 fishY = o->oPosY - gMarioObject->oPosY;\n\n    // Alters speed of animation for natural movement.\n    if (o->oTimer < 10) {\n        cur_obj_init_animation_with_accel_and_sound(0, 2.0f);\n    } else {\n        cur_obj_init_animation_with_accel_and_sound(0, 1.0f);\n    }\n\n    // Initializes some variables when the fish first begins roaming.\n    if (o->oTimer == 0) {\n        o->oForwardVel = random_float() * 2 + 3.0f;\n        if (gCurrLevelNum == LEVEL_SA) {\n            o->oFishHeightOffset = random_float() * 700.0f;\n        } else {\n            o->oFishHeightOffset = random_float() * 100.0f;\n        }\n        o->oFishRoamDistance = random_float() * 500 + 200.0f;\n    }\n\n    o->oFishGoalY = gMarioObject->oPosY + o->oFishHeightOffset;\n\n    // Rotate the fish towards Mario.\n    cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x400);\n\n    if (o->oPosY < o->oFishWaterLevel - 50.0f) {\n        if (fishY < 0.0f) {\n            fishY = 0.0f - fishY;\n        }\n        if (fishY < 500.0f) {\n            fish_vertical_roam(2);\n        } else {\n            fish_vertical_roam(4);\n        }\n\n    // Don't let the fish leave the water vertically.\n    } else {\n        o->oPosY = o->oFishWaterLevel - 50.0f;\n        if (fishY > 300.0f) {\n            o->oPosY = o->oPosY - 1.0f;\n        }\n    }\n\n    // Flee from Mario if the fish gets too close.\n    if (o->oDistanceToMario < o->oFishRoamDistance + 150.0f) {\n        o->oAction = FISH_ACT_FLEE;\n    }\n}\n\n/**\n * Interactively maneuver fish in relation to its distance from other fish and Mario.\n */\nstatic void fish_act_flee(void) {\n    f32 fishY = o->oPosY - gMarioObject->oPosY;\n    UNUSED s32 distance;\n\n    o->oFishGoalY = gMarioObject->oPosY + o->oFishHeightOffset;\n\n    // Initialize some variables when the flee action first starts.\n    if (o->oTimer == 0) {\n        o->oFishActiveDistance = random_float() * 300.0f;\n        o->oFishYawVel = random_float() * 1024.0f + 1024.0f;\n        o->oFishGoalVel = random_float() * 4.0f + 8.0f + 5.0f;\n\n        if (o->oDistanceToMario < 600.0f) {\n            distance = 1;\n        } else {\n            distance = (s32)(1.0 / (o->oDistanceToMario / 600.0));\n        }\n\n        distance *= 127;\n\n        cur_obj_play_sound_2(SOUND_GENERAL_MOVING_WATER);\n    }\n\n    // Speed the animation up over time.\n    if (o->oTimer < 20) {\n        cur_obj_init_animation_with_accel_and_sound(0, 4.0f);\n    } else {\n        cur_obj_init_animation_with_accel_and_sound(0, 1.0f);\n    }\n\n    // Accelerate over time.\n    if (o->oForwardVel < o->oFishGoalVel) {\n        o->oForwardVel = o->oForwardVel + 0.5;\n    }\n\n    o->oFishGoalY = gMarioObject->oPosY + o->oFishHeightOffset;\n\n    // Rotate fish away from Mario.\n    cur_obj_rotate_yaw_toward(o->oAngleToMario + 0x8000, o->oFishYawVel);\n\n    if (o->oPosY < o->oFishWaterLevel - 50.0f) {\n        if (fishY < 0.0f) {\n            fishY = 0.0f - fishY;\n        }\n\n        if (fishY < 500.0f) {\n            fish_vertical_roam(2);\n        } else {\n            fish_vertical_roam(4);\n        }\n\n    // Don't let the fish leave the water vertically.\n    } else {\n        o->oPosY = o->oFishWaterLevel - 50.0f;\n        if (fishY > 300.0f) {\n            o->oPosY -= 1.0f;\n        }\n    }\n\n    // If distance to Mario is too great, then set fish to active.\n    if (o->oDistanceToMario > o->oFishActiveDistance + 500.0f) {\n        o->oAction = FISH_ACT_ROAM;\n    }\n}\n\n/**\n * Animate fish and alter scaling at random for a magnifying effect from the water.\n */\nstatic void fish_act_init(void) {\n    cur_obj_init_animation_with_accel_and_sound(0, 1.0f);\n    o->header.gfx.animInfo.animFrame = (s16)(random_float() * 28.0f);\n    o->oFishDepthDistance = random_float() * 300.0f;\n    cur_obj_scale(random_float() * 0.4 + 0.8);\n    o->oAction = FISH_ACT_ROAM;\n}\n\nstatic void (*sFishActions[])(void) = {\n    fish_act_init,\n    fish_act_roam,\n    fish_act_flee,\n};\n\n/**\n * Main loop for fish\n */\nvoid bhv_fish_loop(void) {\n    UNUSED u8 filler[16];\n    cur_obj_scale(1.0f);\n\n    // oFishWaterLevel tracks if a fish has roamed out of water.\n    // This can't happen in Secret Aquarium, so set it to 0.\n    o->oFishWaterLevel = find_water_level(o->oPosX, o->oPosZ);\n    if (gCurrLevelNum == LEVEL_SA) {\n        o->oFishWaterLevel = 0.0f;\n    }\n\n    // Apply hitbox and resolve wall collisions\n    o->oWallHitboxRadius = 30.0f;\n    cur_obj_resolve_wall_collisions();\n\n    // Delete fish if it's drifted to an area with no water.\n    if (gCurrLevelNum != LEVEL_UNKNOWN_32) {\n        if (o->oFishWaterLevel < FLOOR_LOWER_LIMIT_MISC) {\n            obj_mark_for_deletion(o);\n            return;\n        }\n\n    // Unreachable code, perhaps for debugging or testing.\n    } else {\n        o->oFishWaterLevel = 1000.0f;\n    }\n\n    // Call fish action methods and apply physics engine.\n    cur_obj_call_action_function(sFishActions);\n    cur_obj_move_using_fvel_and_gravity();\n\n    // If the parent object has action set to two, then delete the fish object.\n    if (o->parentObj->oAction == FISH_SPAWNER_ACT_RESPAWN) {\n        obj_mark_for_deletion(o);\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/fishing_boo.inc.c",
    "content": "// fishing_boo.inc.c\n\n// Unused behavior file for the Fishing Boo enemy.\n// The fire circles around mario and would make it\n// hard for him to jump or platform.\n// There is also a stubbed behavior script next to\n// the scripts associated with this, indicating\n// a removed object associated with this flame.\n\nvoid bhv_beta_moving_flames_spawn_loop(void) {\n    o->oDistanceToMario = lateral_dist_between_objects(o, gMarioObject);\n    o->oPosY -= 100.0f;\n\n    switch (o->oAction) {\n        case 0:\n        case 1:\n        case 2:\n        case 3:\n        case 4:\n        case 5:\n        case 6:\n        case 7:\n            spawn_object(o, MODEL_RED_FLAME, bhvBetaMovingFlames);\n            o->oAction++;\n            break;\n        case 8:\n            break;\n        case 9:\n            o->oAction++;\n            break;\n    }\n}\n\nvoid bhv_beta_moving_flames_loop(void) {\n    cur_obj_scale(5.0f);\n\n    o->oForwardVel = sins(o->oMovingFlameTimer) * 70.0f;\n    o->oMovingFlameTimer += 0x800;\n}\n"
  },
  {
    "path": "src/game/behaviors/flame.inc.c",
    "content": "// flame.inc.c\n\nvoid bhv_small_piranha_flame_loop(void) {\n    if ((u16)(o->oBhvParams >> 16) == 0) {\n        if (o->oTimer > 0) {\n            obj_mark_for_deletion(o);\n        } else {\n            f32 rnd = random_float() - 0.5f;\n\n            o->header.gfx.scale[1] = o->header.gfx.scale[2] * (1.0f + 0.7f * rnd);\n            o->header.gfx.scale[0] = o->header.gfx.scale[2] * (0.9f - 0.5f * rnd);\n\n            o->oAnimState = random_u16();\n        }\n    } else {\n        cur_obj_update_floor_and_walls();\n\n        if (approach_f32_ptr(&o->oSmallPiranhaFlameStartSpeed, o->oSmallPiranhaFlameEndSpeed, 0.6f)) {\n            cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x200);\n        }\n\n        obj_compute_vel_from_move_pitch(o->oSmallPiranhaFlameStartSpeed);\n        cur_obj_move_standard(-78);\n        spawn_object_with_scale(o, o->oSmallPiranhaFlameModel, bhvSmallPiranhaFlame,\n                                0.4f * o->header.gfx.scale[0]);\n\n        if (o->oTimer > o->oSmallPiranhaFlameNextFlameTimer) {\n            spawn_object_relative_with_scale(1, 0, o->oGraphYOffset, 0, o->header.gfx.scale[0], o,\n                                             o->oSmallPiranhaFlameModel, bhvFlyguyFlame);\n            o->oSmallPiranhaFlameNextFlameTimer = random_linear_offset(8, 15);\n            o->oTimer = 0;\n        }\n\n        obj_check_attacks(&sPiranhaPlantFireHitbox, o->oAction);\n        o->oSmallPiranhaFlameSpeed += o->oSmallPiranhaFlameStartSpeed;\n\n        if (o->oSmallPiranhaFlameSpeed > 1500.0f\n            || (o->oMoveFlags & (OBJ_MOVE_HIT_WALL | OBJ_MOVE_MASK_IN_WATER))) {\n            obj_die_if_health_non_positive();\n        }\n    }\n\n    o->oGraphYOffset = 15.0f * o->header.gfx.scale[1];\n}\n\nvoid bhv_fly_guy_flame_loop(void) {\n    cur_obj_move_using_fvel_and_gravity();\n\n    if (approach_f32_ptr(&o->header.gfx.scale[0], 0.0f, 0.6f)) {\n        obj_mark_for_deletion(o);\n    }\n\n    cur_obj_scale(o->header.gfx.scale[0]);\n}\n"
  },
  {
    "path": "src/game/behaviors/flame_mario.inc.c",
    "content": "// flame_mario.inc.c\n\nvoid bhv_black_smoke_upward_loop(void) {\n    spawn_object_with_scale(o, MODEL_BURN_SMOKE, bhvBlackSmokeBowser, o->header.gfx.scale[0]);\n}\n\nvoid bhv_black_smoke_bowser_loop(void) {\n    if (o->oTimer == 0) {\n        o->oForwardVel = random_float() * 2 + 0.5;\n        o->oMoveAngleYaw = random_u16();\n        o->oVelY = 8.0f;\n\n        o->oBlackSmokeBowserUnkF4 = o->header.gfx.scale[0];\n    }\n\n    o->oMoveAngleYaw += o->oAngleVelYaw;\n    o->oPosY += o->oVelY;\n}\n\nvoid bhv_black_smoke_mario_loop(void) {\n    if (o->oTimer == 0) {\n        cur_obj_set_pos_relative(gMarioObject, 0, 0, -30.0f);\n\n        o->oForwardVel = random_float() * 2 + 0.5;\n        o->oMoveAngleYaw = (gMarioObject->oMoveAngleYaw + 0x7000) + random_float() * 8192.0f;\n        o->oVelY = 8.0f;\n    }\n\n    o->oMoveAngleYaw += o->oAngleVelYaw;\n    o->oPosY += o->oVelY;\n}\n\nvoid bhv_flame_mario_loop(void) {\n    cur_obj_scale(2.0f);\n\n    if (o->oTimer != 0) {\n        if (o->oTimer & 1) {\n            spawn_object(o, MODEL_BURN_SMOKE, bhvBlackSmokeMario);\n        }\n    }\n\n    gMarioObject->prevObj = o; // weird?\n    obj_set_parent_relative_pos(o, 40, -120, 0);\n\n    if (!(gMarioObject->oMarioParticleFlags & ACTIVE_PARTICLE_FIRE)) {\n        o->parentObj->oActiveParticleFlags &= ~ACTIVE_PARTICLE_FIRE;\n        obj_mark_for_deletion(o);\n        gMarioObject->prevObj = NULL;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/flamethrower.inc.c",
    "content": "// flamethrower.inc.c\n\nvoid bhv_flamethrower_flame_loop(void) {\n    f32 scale;\n    s32 sp18;\n\n    if (o->oTimer == 0) {\n        o->oAnimState = (s32)(random_float() * 10.0f);\n        obj_translate_xyz_random(o, 10.0f);\n    }\n\n    if (o->oBhvParams2ndByte == 2) {\n        scale = o->oTimer * (o->oForwardVel - 6.0f) / 100.0 + 2.0;\n    } else {\n        scale = o->oTimer * (o->oForwardVel - 20.0) / 100.0 + 1.0;\n    }\n\n    if (o->oBhvParams2ndByte == 3) {\n        o->hitboxHeight = 200.0f;\n        o->hitboxDownOffset = 150.0f;\n        o->oVelY = -28.0f;\n\n        cur_obj_update_floor_height();\n\n        if (o->oPosY - 25.0f * scale < o->oFloorHeight) {\n            o->oVelY = 0;\n            o->oPosY = o->oFloorHeight + 25.0f * scale;\n        }\n\n        sp18 = o->parentObj->oFlameThowerFlameUnk110 / 1.2;\n    } else {\n        sp18 = o->parentObj->oFlameThowerFlameUnk110;\n    }\n\n    cur_obj_scale(scale);\n\n    if (o->oBhvParams2ndByte == 4) {\n        o->oPosY += o->oForwardVel; // weird?\n    } else {\n        cur_obj_move_using_fvel_and_gravity();\n    }\n\n    if (o->oTimer > sp18) {\n        obj_mark_for_deletion(o);\n    }\n\n    o->oInteractStatus = 0;\n}\n\nvoid bhv_flamethrower_loop(void) {\n    struct Object *flame;\n    f32 flameVel;\n    s32 sp34;\n    s32 model;\n    UNUSED u8 filler[8];\n\n    if (o->oAction == 0) {\n        if ((gCurrLevelNum != LEVEL_BBH || gMarioOnMerryGoRound == TRUE)\n            && o->oDistanceToMario < 2000.0f) {\n            o->oAction++;\n        }\n    } else if (o->oAction == 1) {\n        model = MODEL_RED_FLAME;\n        flameVel = 95.0f;\n\n        if (o->oBhvParams2ndByte == 1) {\n            model = MODEL_BLUE_FLAME;\n        }\n\n        if (o->oBhvParams2ndByte == 2) {\n            flameVel = 50.0f;\n        }\n\n        sp34 = 1;\n\n        if (o->oTimer < 60) {\n            sp34 = 15;\n        } else if (o->oTimer < 74) {\n            sp34 = 75 - o->oTimer; // Range: [15..2]\n        } else {\n            o->oAction++;\n        }\n\n        o->oFlameThowerUnk110 = sp34;\n\n        flame = spawn_object_relative(o->oBhvParams2ndByte, 0, 0, 0, o, model, bhvFlamethrowerFlame);\n        flame->oForwardVel = flameVel;\n\n        cur_obj_play_sound_1(SOUND_AIR_BLOW_FIRE);\n    } else if (o->oTimer > 60) {\n        o->oAction = 0;\n    }\n}\n\nvoid bhv_rr_rotating_bridge_platform_loop(void) {\n    o->oMoveAngleYaw -= 0x80;\n    o->oAngleVelYaw = -0x80;\n\n    bhv_flamethrower_loop();\n}\n"
  },
  {
    "path": "src/game/behaviors/floating_box.inc.c",
    "content": "// floating_box.inc.c\n\nvoid bhv_jrb_floating_box_loop(void) {\n    o->oPosY = o->oHomeY + sins(o->oTimer * 0x400) * 10.0f;\n}\n"
  },
  {
    "path": "src/game/behaviors/floating_platform.inc.c",
    "content": "// floating_platform.inc.c\n\nf32 floating_platform_find_home_y(void) {\n    struct Surface *sp24;\n    f32 sp20 = find_water_level(o->oPosX, o->oPosZ);\n    f32 sp1C = find_floor(o->oPosX, o->oPosY, o->oPosZ, &sp24);\n\n    if (sp20 > sp1C + o->oFloatingPlatformUnkFC) {\n        o->oFloatingPlatformUnkF4 = 0;\n        return sp20 + o->oFloatingPlatformUnkFC;\n    } else {\n        o->oFloatingPlatformUnkF4 = 1;\n        return sp1C + o->oFloatingPlatformUnkFC;\n    }\n}\n\nvoid floating_platform_act_0(void) {\n    s16 sp6 = (gMarioObject->header.gfx.pos[0] - o->oPosX) * coss(-1*o->oMoveAngleYaw)\n              + (gMarioObject->header.gfx.pos[2] - o->oPosZ) * sins(-1*o->oMoveAngleYaw);\n    s16 sp4 = (gMarioObject->header.gfx.pos[2] - o->oPosZ) * coss(-1*o->oMoveAngleYaw)\n              - (gMarioObject->header.gfx.pos[0] - o->oPosX) * sins(-1*o->oMoveAngleYaw);\n\n    if (gMarioObject->platform == o) {\n        o->oFaceAnglePitch = sp4 * 2;\n        o->oFaceAngleRoll = -sp6 * 2;\n\n        o->oVelY -= 1.0f;\n        if (o->oVelY < 0.0f) {\n            o->oVelY = 0.0f;\n        }\n\n        o->oFloatingPlatformUnkF8 += o->oVelY;\n\n        if (o->oFloatingPlatformUnkF8 > 90.0f) {\n            o->oFloatingPlatformUnkF8 = 90.0f;\n        }\n    } else {\n        o->oFaceAnglePitch /= 2;\n        o->oFaceAngleRoll /= 2;\n\n        o->oFloatingPlatformUnkF8 -= 5.0;\n\n        o->oVelY = 10.0f;\n\n        if (o->oFloatingPlatformUnkF8 < 0.0f) {\n            o->oFloatingPlatformUnkF8 = 0.0f;\n        }\n    }\n\n    o->oPosY = o->oHomeY - 64.0f - o->oFloatingPlatformUnkF8\n               + sins(o->oFloatingPlatformUnk100 * 0x800) * 10.0f;\n\n    o->oFloatingPlatformUnk100++;\n\n    if (o->oFloatingPlatformUnk100 == 32) {\n        o->oFloatingPlatformUnk100 = 0;\n    }\n}\n\nvoid bhv_floating_platform_loop(void) {\n    o->oHomeY = floating_platform_find_home_y();\n\n    if (o->oFloatingPlatformUnkF4 == 0) {\n        o->oAction = 0;\n    } else {\n        o->oAction = 1;\n    }\n\n    switch (o->oAction) {\n        case 0:\n            floating_platform_act_0();\n            break;\n        case 1:\n            o->oPosY = o->oHomeY;\n            break;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/fly_guy.inc.c",
    "content": "\n/**\n * Behavior for bhvFlyGuy.\n */\n\n/**\n * Hitbox for fly guy.\n */\nstatic struct ObjectHitbox sFlyGuyHitbox = {\n    /* interactType:      */ INTERACT_BOUNCE_TOP,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 2,\n    /* health:            */ 0,\n    /* numLootCoins:      */ 2,\n    /* radius:            */ 70,\n    /* height:            */ 60,\n    /* hurtboxRadius:     */ 40,\n    /* hurtboxHeight:     */ 50,\n};\n\n/**\n * Unused jitter amounts.\n */\nstatic s16 sFlyGuyJitterAmounts[] = { 0x1000, -0x2000, 0x2000 };\n\n/**\n * Return to regular size. When mario is close enough or home is far enough,\n * turn toward mario/home and enter the approach mario action.\n */\nstatic void fly_guy_act_idle(void) {\n    o->oForwardVel = 0.0f;\n\n    if (approach_f32_ptr(&o->header.gfx.scale[0], 1.5f, 0.02f)) {\n        // If we are >2000 units from home or Mario is <2000 units from us\n        if (o->oDistanceToMario >= 25000.0f || o->oDistanceToMario < 2000.0f) {\n            // Turn toward home or Mario\n            obj_face_yaw_approach(o->oAngleToMario, 0x300);\n\n            if (cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x300)) {\n                o->oAction = FLY_GUY_ACT_APPROACH_MARIO;\n            }\n        } else {\n            // Randomly enter the approach mario action - but this doesn't\n            // really do anything since we come right back to idle\n            if (o->oFlyGuyIdleTimer >= 3 || o->oFlyGuyIdleTimer == (random_u16() & 1) + 2) {\n                o->oFlyGuyIdleTimer = 0;\n                o->oAction = FLY_GUY_ACT_APPROACH_MARIO;\n            } else {\n                o->oFlyGuyUnusedJitter = o->oMoveAngleYaw + sFlyGuyJitterAmounts[o->oFlyGuyIdleTimer];\n                o->oFlyGuyIdleTimer++;\n            }\n        }\n    }\n}\n\n/**\n * Turn toward mario or home, and when positioned nicely, either lunge or shoot\n * fire. If mario is far away, stop and return to the idle action.\n */\nstatic void fly_guy_act_approach_mario(void) {\n    // If we are >2000 units from home or Mario is <2000 units from us\n    if (o->oDistanceToMario >= 25000.0f || o->oDistanceToMario < 2000.0f) {\n        obj_forward_vel_approach(10.0f, 0.5f);\n\n        // Turn toward home or Mario\n        obj_face_yaw_approach(o->oAngleToMario, 0x400);\n        cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x200);\n\n        // If facing toward mario and we are either near mario laterally or\n        // far above him\n        if (abs_angle_diff(o->oAngleToMario, o->oFaceAngleYaw) < 0x2000\n            && (o->oPosY - gMarioObject->oPosY > 400.0f || o->oDistanceToMario < 400.0f)) {\n            // Either shoot fire or lunge\n            if (o->oBhvParams2ndByte != FLY_GUY_BP_GENERIC && random_u16() % 2) {\n                o->oAction = FLY_GUY_ACT_SHOOT_FIRE;\n                o->oFlyGuyScaleVel = 0.06f;\n            } else {\n                o->oAction = FLY_GUY_ACT_LUNGE;\n                o->oFlyGuyLungeTargetPitch = obj_turn_pitch_toward_mario(-200.0f, 0);\n\n                o->oForwardVel = 25.0f * coss(o->oFlyGuyLungeTargetPitch);\n                o->oVelY = 25.0f * -sins(o->oFlyGuyLungeTargetPitch);\n                o->oFlyGuyLungeYDecel = -o->oVelY / 30.0f;\n            }\n        }\n    } else if (obj_forward_vel_approach(0.0f, 0.2f)) {\n        o->oAction = FLY_GUY_ACT_IDLE;\n    }\n}\n\n/**\n * Lunge downward at mario, then twirl back up. Enter the approach mario action\n * afterward.\n */\nstatic void fly_guy_act_lunge(void) {\n    if (o->oVelY < 0.0f) {\n        // Lunge downward\n\n        o->oVelY += o->oFlyGuyLungeYDecel;\n\n        cur_obj_rotate_yaw_toward(o->oFaceAngleYaw, 0x800);\n        obj_face_pitch_approach(o->oFlyGuyLungeTargetPitch, 0x400);\n\n        // Possible values: {-0x1000, 0x0000, 0x1000}\n        o->oFlyGuyTargetRoll = 0x1000 * (s16)(random_float() * 3.0f) - 0x1000;\n        o->oTimer = 0;\n    } else {\n        // Twirl back upward\n\n        obj_face_pitch_approach(0, 0x100);\n        obj_face_roll_approach(o->oFlyGuyTargetRoll, 300);\n\n        // Twirl in a spiral with curvature proportional to oFaceAngleRoll\n        o->oMoveAngleYaw -= o->oFaceAngleRoll / 4;\n        obj_face_yaw_approach(o->oMoveAngleYaw, 0x800);\n\n        // Continue moving upward until at least 200 units above mario\n        if (o->oPosY < gMarioObject->oPosY + 200.0f) {\n            obj_y_vel_approach(20.0f, 0.5f);\n        } else if (obj_y_vel_approach(0.0f, 0.5f)) {\n            // Wait until roll is zero\n            if (o->oFaceAngleRoll == 0) {\n                o->oAction = FLY_GUY_ACT_APPROACH_MARIO;\n            }\n\n            o->oFlyGuyTargetRoll = 0;\n        }\n    }\n}\n\n/**\n * Turn toward mario, then shoot fire. Then enter the idle action.\n */\nstatic void fly_guy_act_shoot_fire(void) {\n    o->oForwardVel = 0.0f;\n\n    if (obj_face_yaw_approach(o->oAngleToMario, 0x800)) {\n        s32 scaleStatus;\n\n        o->oMoveAngleYaw = o->oFaceAngleYaw;\n\n        // Increase scale by 0.06, 0.05, ..., -0.03. Then wait ~8 frames, then\n        // starting moving scale by 0.05 each frame toward 1.1. The first time\n        // it becomes below 1.2 during this latter portion, shoot fire.\n        scaleStatus = obj_grow_then_shrink(&o->oFlyGuyScaleVel, 1.2f, 1.1f);\n\n        if (scaleStatus != 0) {\n            if (scaleStatus < 0) {\n                // We have reached scale 1.1\n                o->oAction = FLY_GUY_ACT_IDLE;\n            } else {\n                // We have reached below scale 1.2 in the shrinking portion\n                s16 fireMovePitch = obj_turn_pitch_toward_mario(0.0f, 0);\n\n                cur_obj_play_sound_2(SOUND_OBJ_FLAME_BLOWN);\n                clamp_s16(&fireMovePitch, 0x800, 0x3000);\n\n                obj_spit_fire(\n                    /*relativePos*/ 0, 38, 20,\n                    /*scale      */ 2.5f,\n                    /*model      */ MODEL_RED_FLAME_SHADOW,\n                    /*startSpeed */ 25.0f,\n                    /*endSpeed   */ 20.0f,\n                    /*movePitch  */ fireMovePitch);\n            }\n        }\n    } else {\n        //! By triggering this repeatedly, we can keep obj_grow_then_shrink\n        // in the \"grow\" phase. But because oFlyGuyScaleVel continues decreasing\n        // past -0.03, the fly guy shrinks more than he is supposed to. We can\n        // arbitrarily decrease the fly guy's scale in this way.\n        o->oTimer = 0;\n    }\n}\n\n/**\n * Update function for fly guy.\n */\nvoid bhv_fly_guy_update(void) {\n    // PARTIAL_UPDATE (appears in non-roomed levels)\n\n    if (!(o->activeFlags & ACTIVE_FLAG_IN_DIFFERENT_ROOM)) {\n        o->oDeathSound = SOUND_OBJ_KOOPA_FLYGUY_DEATH;\n\n        cur_obj_scale(o->header.gfx.scale[0]);\n        treat_far_home_as_mario(2000.0f);\n        cur_obj_update_floor_and_walls();\n\n        if (o->oMoveFlags & OBJ_MOVE_HIT_WALL) {\n            o->oMoveAngleYaw = cur_obj_reflect_move_angle_off_wall();\n        } else if (o->oMoveFlags & OBJ_MOVE_MASK_IN_WATER) {\n            o->oVelY = 6.0f;\n        }\n\n        // Oscillate up and down\n        o->oFlyGuyOscTimer++;\n        o->oPosY += coss(0x400 * o->oFlyGuyOscTimer) * 1.5f;\n\n        switch (o->oAction) {\n            case FLY_GUY_ACT_IDLE:\n                fly_guy_act_idle();\n                break;\n            case FLY_GUY_ACT_APPROACH_MARIO:\n                fly_guy_act_approach_mario();\n                break;\n            case FLY_GUY_ACT_LUNGE:\n                fly_guy_act_lunge();\n                break;\n            case FLY_GUY_ACT_SHOOT_FIRE:\n                fly_guy_act_shoot_fire();\n                break;\n        }\n\n        cur_obj_move_standard(78);\n        obj_check_attacks(&sFlyGuyHitbox, o->oAction);\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/flying_bookend_switch.inc.c",
    "content": "// flying_bookend_switch.inc.c\n\nstruct Struct80331B30 {\n    s16 unk00;\n    s16 unk02;\n};\n\nstruct ObjectHitbox sFlyingBookendHitbox = {\n    /* interactType:      */ INTERACT_HIT_FROM_BELOW,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 2,\n    /* health:            */ 0,\n    /* numLootCoins:      */ -1,\n    /* radius:            */ 60,\n    /* height:            */ 30,\n    /* hurtboxRadius:     */ 40,\n    /* hurtboxHeight:     */ 30,\n};\n\nstruct Struct80331B30 D_80331B30[] = {\n    { 52, 150 },\n    { 135, 3 },\n    { -75, 78 },\n};\n\nstruct ObjectHitbox sBookSwitchHitbox = {\n    /* interactType:      */ INTERACT_BREAKABLE,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 0,\n    /* health:            */ 99,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 20,\n    /* height:            */ 30,\n    /* hurtboxRadius:     */ 20,\n    /* hurtboxHeight:     */ 30,\n};\n\nvoid flying_bookend_act_0(void) {\n    if (obj_is_near_to_and_facing_mario(400.0f, 0x3000)) {\n        cur_obj_play_sound_2(SOUND_OBJ_DEFAULT_DEATH);\n\n        o->oAction = 1;\n\n        o->oBookendUnkF4 = o->oFaceAnglePitch + 0x7FFF;\n        o->oBookendUnkF8 = o->oFaceAngleRoll - 0x7FFF;\n\n        cur_obj_set_model(MODEL_BOOKEND_PART);\n    }\n}\n\nvoid flying_bookend_act_1(void) {\n    if (obj_forward_vel_approach(3.0f, 1.0f)) {\n        if (cur_obj_init_anim_and_check_if_end(2)) {\n            o->oAction = 2;\n            o->oForwardVel = 0.0f;\n        } else {\n            o->oForwardVel = 3.0f;\n\n            if (o->oTimer > 5) {\n                obj_face_pitch_approach(o->oBookendUnkF4, 2000);\n                if (o->oTimer >= 10) {\n                    obj_face_roll_approach(o->oBookendUnkF8, 2000);\n                    if (o->oTimer >= 20) {\n                        approach_f32_ptr(&o->header.gfx.scale[0], 3.0f, 0.2f);\n                    }\n                }\n            }\n        }\n    }\n\n    cur_obj_move_using_fvel_and_gravity();\n}\n\nvoid flying_bookend_act_2(void) {\n    cur_obj_init_animation_with_sound(1);\n    cur_obj_update_floor_and_walls();\n\n    if (o->oForwardVel == 0.0f) {\n        obj_turn_pitch_toward_mario(120.0f, 1000);\n        o->oFaceAnglePitch = o->oMoveAnglePitch + 0x7FFF;\n        cur_obj_rotate_yaw_toward(o->oAngleToMario, 1000);\n\n        if (o->oTimer > 30) {\n            obj_compute_vel_from_move_pitch(50.0f);\n        }\n    }\n\n    cur_obj_move_standard(78);\n}\n\nvoid flying_bookend_act_3(void) {\n    o->oDamageOrCoinValue = 1;\n    o->oNumLootCoins = 0;\n\n    if (o->oTimer > 3) {\n        o->oAction = 2;\n        o->oForwardVel = 50.0f;\n    }\n\n    obj_forward_vel_approach(50.0f, 2.0f);\n    cur_obj_move_using_fvel_and_gravity();\n}\n\nvoid bhv_flying_bookend_loop(void) {\n    if (!(o->activeFlags & ACTIVE_FLAG_IN_DIFFERENT_ROOM)) {\n        o->oDeathSound = SOUND_OBJ_POUNDING1;\n        cur_obj_scale(o->header.gfx.scale[0]);\n\n        switch (o->oAction) {\n            case 0:\n                flying_bookend_act_0();\n                break;\n            case 1:\n                flying_bookend_act_1();\n                break;\n            case 2:\n                flying_bookend_act_2();\n                break;\n            case 3:\n                flying_bookend_act_3();\n                break;\n        }\n\n        obj_check_attacks(&sFlyingBookendHitbox, -1);\n\n        if (o->oAction == -1 || (o->oMoveFlags & (OBJ_MOVE_MASK_ON_GROUND | OBJ_MOVE_HIT_WALL))) {\n            o->oNumLootCoins = 0;\n            obj_die_if_health_non_positive();\n        }\n\n        o->oGraphYOffset = 30.0f * o->header.gfx.scale[0];\n    }\n}\n\nvoid bhv_bookend_spawn_loop(void) {\n    if (!(o->activeFlags & ACTIVE_FLAG_IN_DIFFERENT_ROOM)) {\n        if (o->oTimer > 40 && obj_is_near_to_and_facing_mario(600.0f, 0x2000)) {\n            struct Object *sp1C = spawn_object(o, MODEL_BOOKEND, bhvFlyingBookend);\n\n            if (sp1C != NULL) {\n                sp1C->oAction = 3;\n                cur_obj_play_sound_2(SOUND_OBJ_DEFAULT_DEATH);\n            }\n\n            o->oTimer = 0;\n        }\n    }\n}\n\nvoid bookshelf_manager_act_0(void) {\n    s32 i;\n\n    if (!(o->activeFlags & ACTIVE_FLAG_IN_DIFFERENT_ROOM)) {\n        for (i = 0; i < 3; i++) {\n            spawn_object_relative(i, D_80331B30[i].unk00, D_80331B30[i].unk02, 0, o,\n                                  MODEL_BOOKEND, bhvBookSwitch);\n        }\n\n        o->oAction = 1;\n    }\n}\n\nvoid bookshelf_manager_act_1(void) {\n    if (o->oBookSwitchManagerUnkF8 == 0) {\n        if (obj_is_near_to_and_facing_mario(500.0f, 0x3000)) {\n            o->oBookSwitchManagerUnkF8 = 1;\n        }\n    } else if (o->oTimer > 60) {\n        o->oAction = 2;\n        o->oBookSwitchManagerUnkF8 = 0;\n    }\n}\n\nvoid bookshelf_manager_act_2(void) {\n    if (!(o->activeFlags & ACTIVE_FLAG_IN_DIFFERENT_ROOM)) {\n        if (o->oBookSwitchManagerUnkF4 < 0) {\n            if (o->oTimer > 30) {\n                o->oBookSwitchManagerUnkF4 = o->oBookSwitchManagerUnkF8 = 0;\n            } else if (o->oTimer > 10) {\n                o->oBookSwitchManagerUnkF8 = 1;\n            }\n        } else {\n            if (o->oBookSwitchManagerUnkF4 >= 3) {\n                if (o->oTimer > 100) {\n                    o->parentObj = cur_obj_nearest_object_with_behavior(bhvHauntedBookshelf);\n                    o->parentObj->oAction = 1;\n                    o->oPosX = o->parentObj->oPosX;\n                    o->oAction = 3;\n                } else if (o->oTimer == 30) {\n                    play_puzzle_jingle();\n                }\n            } else {\n                o->oTimer = 0;\n            }\n        }\n    } else {\n        o->oAction = 4;\n    }\n}\n\nvoid bookshelf_manager_act_3(void) {\n    if (o->oTimer > 85) {\n        o->oAction = 4;\n    } else {\n        o->oForwardVel = o->parentObj->oPosX - o->oPosX;\n        o->oPosX = o->parentObj->oPosX;\n    }\n}\n\nvoid bookshelf_manager_act_4(void) {\n    if (o->oBookSwitchManagerUnkF4 >= 3) {\n        obj_mark_for_deletion(o);\n    } else {\n        o->oAction = 0;\n    }\n}\n\nvoid bhv_haunted_bookshelf_manager_loop(void) {\n    switch (o->oAction) {\n        case 0:\n            bookshelf_manager_act_0();\n            break;\n        case 2:\n            bookshelf_manager_act_2();\n            break;\n        case 1:\n            bookshelf_manager_act_1();\n            break;\n        case 3:\n            bookshelf_manager_act_3();\n            break;\n        case 4:\n            bookshelf_manager_act_4();\n            break;\n    }\n}\n\nvoid bhv_book_switch_loop(void) {\n    o->header.gfx.scale[0] = 2.0f;\n    o->header.gfx.scale[1] = 0.9f;\n\n    if (o->parentObj->oAction == 4) {\n        obj_mark_for_deletion(o);\n    } else {\n        s32 attackType = obj_check_attacks(&sBookSwitchHitbox, o->oAction);\n\n        if (o->parentObj->oBookSwitchManagerUnkF8 != 0 || o->oAction == 1) {\n            if (o->oDistanceToMario < 100.0f) {\n                cur_obj_become_tangible();\n            } else {\n                cur_obj_become_intangible();\n            }\n\n            o->oAction = 1;\n\n            if (o->oBookSwitchUnkF4 == 0.0f) {\n                cur_obj_play_sound_2(SOUND_OBJ_DEFAULT_DEATH);\n            }\n\n            if (approach_f32_ptr(&o->oBookSwitchUnkF4, 50.0f, 20.0f)) {\n                if (o->parentObj->oBookSwitchManagerUnkF4 >= 0 && o->oTimer > 60\n                    && (attackType == ATTACK_PUNCH || attackType == ATTACK_KICK_OR_TRIP\n                        || attackType == ATTACK_FROM_BELOW)) {\n                    o->oAction = 2;\n                }\n            } else {\n                o->oTimer = 0;\n            }\n        } else {\n            cur_obj_become_intangible();\n\n            if (approach_f32_ptr(&o->oBookSwitchUnkF4, 0.0f, 20.0f) && o->oAction != 0) {\n                if (o->parentObj->oBookSwitchManagerUnkF4 == o->oBhvParams2ndByte) {\n                    play_sound(SOUND_GENERAL2_RIGHT_ANSWER, gGlobalSoundSource);\n                    o->parentObj->oBookSwitchManagerUnkF4++;\n                } else {\n                    struct Object *sp38;\n                    s16 sp36 = random_u16() & 0x1;\n                    s16 sp34 = gMarioObject->oPosZ + 1.5f * gMarioStates[0].vel[2];\n\n                    play_sound(SOUND_MENU_CAMERA_BUZZ, gGlobalSoundSource);\n\n                    if (sp34 > 0) {\n                        sp34 = 0;\n                    }\n\n                    sp38 = spawn_object_abs_with_rot(o, 0, MODEL_BOOKEND, bhvFlyingBookend,\n                                                     0x1FC * sp36 - 0x8CA, 890, sp34, 0,\n                                                     0x8000 * sp36 + 0x4000, 0);\n\n                    if (sp38 != NULL) {\n                        sp38->oAction = 3;\n                    }\n\n                    o->parentObj->oBookSwitchManagerUnkF4 = -1;\n                }\n\n                o->oAction = 0;\n            }\n        }\n\n        o->oPosX += o->parentObj->oForwardVel;\n        o->oPosZ = o->oHomeZ - o->oBookSwitchUnkF4;\n        cur_obj_push_mario_away_from_cylinder(70.0f, 70.0f);\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/goomba.inc.c",
    "content": "\n/**\n * Behavior for bhvGoomba and bhvGoombaTripletSpawner,\n * Goombas can either be spawned individually, or spawned by a triplet spawner.\n * The triplet spawner comes before its spawned goombas in processing order.\n */\n\n/**\n * Hitbox for goomba.\n */\nstatic struct ObjectHitbox sGoombaHitbox = {\n    /* interactType:      */ INTERACT_BOUNCE_TOP,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 1,\n    /* health:            */ 0,\n    /* numLootCoins:      */ 1,\n    /* radius:            */ 72,\n    /* height:            */ 50,\n    /* hurtboxRadius:     */ 42,\n    /* hurtboxHeight:     */ 40,\n};\n\n/**\n * Properties that vary based on goomba size.\n */\nstruct GoombaProperties {\n    f32 scale;\n    u32 deathSound;\n    s16 drawDistance;\n    s8 damage;\n};\n\n/**\n * Properties for regular, huge, and tiny goombas.\n */\nstatic struct GoombaProperties sGoombaProperties[] = {\n    { 1.5f, SOUND_OBJ_ENEMY_DEATH_HIGH, 4000, 1 },\n    { 3.5f, SOUND_OBJ_ENEMY_DEATH_LOW, 4000, 2 },\n    { 0.5f, SOUND_OBJ_ENEMY_DEATH_HIGH, 1500, 0 },\n};\n\n/**\n * Attack handlers for goombas.\n */\nstatic u8 sGoombaAttackHandlers[][6] = {\n    // regular and tiny\n    {\n        /* ATTACK_PUNCH:                 */ ATTACK_HANDLER_KNOCKBACK,\n        /* ATTACK_KICK_OR_TRIP:          */ ATTACK_HANDLER_KNOCKBACK,\n        /* ATTACK_FROM_ABOVE:            */ ATTACK_HANDLER_SQUISHED,\n        /* ATTACK_GROUND_POUND_OR_TWIRL: */ ATTACK_HANDLER_SQUISHED,\n        /* ATTACK_FAST_ATTACK:           */ ATTACK_HANDLER_KNOCKBACK,\n        /* ATTACK_FROM_BELOW:            */ ATTACK_HANDLER_KNOCKBACK,\n    },\n    // huge\n    {\n        /* ATTACK_PUNCH:                 */ ATTACK_HANDLER_SPECIAL_HUGE_GOOMBA_WEAKLY_ATTACKED,\n        /* ATTACK_KICK_OR_TRIP:          */ ATTACK_HANDLER_SPECIAL_HUGE_GOOMBA_WEAKLY_ATTACKED,\n        /* ATTACK_FROM_ABOVE:            */ ATTACK_HANDLER_SQUISHED,\n        /* ATTACK_GROUND_POUND_OR_TWIRL: */ ATTACK_HANDLER_SQUISHED_WITH_BLUE_COIN,\n        /* ATTACK_FAST_ATTACK:           */ ATTACK_HANDLER_SPECIAL_HUGE_GOOMBA_WEAKLY_ATTACKED,\n        /* ATTACK_FROM_BELOW:            */ ATTACK_HANDLER_SPECIAL_HUGE_GOOMBA_WEAKLY_ATTACKED,\n    },\n};\n\n/**\n * Update function for goomba triplet spawner.\n */\nvoid bhv_goomba_triplet_spawner_update(void) {\n    UNUSED u8 filler1[4];\n    s16 goombaFlag;\n    UNUSED u8 filler2[2];\n    s32 angle;\n\n    // If mario is close enough and the goombas aren't currently loaded, then\n    // spawn them\n    if (o->oAction == GOOMBA_TRIPLET_SPAWNER_ACT_UNLOADED) {\n        if (o->oDistanceToMario < 3000.0f) {\n            // The spawner is capable of spawning more than 3 goombas, but this\n            // is not used in the game\n            s32 dAngle =\n                0x10000\n                / (((o->oBhvParams2ndByte & GOOMBA_TRIPLET_SPAWNER_BP_EXTRA_GOOMBAS_MASK) >> 2) + 3);\n\n            for (angle = 0, goombaFlag = 1 << 8; angle < 0xFFFF; angle += dAngle, goombaFlag <<= 1) {\n                // Only spawn goombas which haven't been killed yet\n                if (!(o->oBhvParams & goombaFlag)) {\n                    s16 dx = 500.0f * coss(angle);\n                    s16 dz = 500.0f * sins(angle);\n\n                    spawn_object_relative((o->oBhvParams2ndByte & GOOMBA_BP_SIZE_MASK)\n                                           | (goombaFlag >> 6), dx, 0, dz, o, MODEL_GOOMBA, bhvGoomba);\n                }\n            }\n\n            o->oAction++;\n        }\n    } else if (o->oDistanceToMario > 4000.0f) {\n        // If mario is too far away, enter the unloaded action. The goombas\n        // will detect this and unload themselves\n        o->oAction = GOOMBA_TRIPLET_SPAWNER_ACT_UNLOADED;\n    }\n}\n\n/**\n * Initialization function for goomba.\n */\nvoid bhv_goomba_init(void) {\n    o->oGoombaSize = o->oBhvParams2ndByte & GOOMBA_BP_SIZE_MASK;\n\n    o->oGoombaScale = sGoombaProperties[o->oGoombaSize].scale;\n    o->oDeathSound = sGoombaProperties[o->oGoombaSize].deathSound;\n\n    obj_set_hitbox(o, &sGoombaHitbox);\n\n    o->oDrawingDistance = sGoombaProperties[o->oGoombaSize].drawDistance;\n    o->oDamageOrCoinValue = sGoombaProperties[o->oGoombaSize].damage;\n\n    o->oGravity = -8.0f / 3.0f * o->oGoombaScale;\n}\n\n/**\n * Enter the jump action and set initial y velocity.\n */\nstatic void goomba_begin_jump(void) {\n    cur_obj_play_sound_2(SOUND_OBJ_GOOMBA_ALERT);\n\n    o->oAction = GOOMBA_ACT_JUMP;\n    o->oForwardVel = 0.0f;\n    o->oVelY = 50.0f / 3.0f * o->oGoombaScale;\n}\n\n/**\n * If spawned by a triplet spawner, mark the flag in the spawner to indicate that\n * this goomba died. This prevents it from spawning again when mario leaves and\n * comes back.\n */\nstatic void mark_goomba_as_dead(void) {\n    if (o->parentObj != o) {\n        set_object_respawn_info_bits(\n            o->parentObj, (o->oBhvParams2ndByte & GOOMBA_BP_TRIPLET_RESPAWN_FLAG_MASK) >> 2);\n\n        o->parentObj->oBhvParams =\n            o->parentObj->oBhvParams | (o->oBhvParams2ndByte & GOOMBA_BP_TRIPLET_RESPAWN_FLAG_MASK) << 6;\n    }\n}\n\n/**\n * Walk around randomly occasionally jumping. If mario comes within range,\n * chase him.\n */\nstatic void goomba_act_walk(void) {\n    treat_far_home_as_mario(1000.0f);\n\n    obj_forward_vel_approach(o->oGoombaRelativeSpeed * o->oGoombaScale, 0.4f);\n\n    // If walking fast enough, play footstep sounds\n    if (o->oGoombaRelativeSpeed > 4.0f / 3.0f) {\n        cur_obj_play_sound_at_anim_range(2, 17, SOUND_OBJ_GOOMBA_WALK);\n    }\n\n    //! By strategically hitting a wall, steep slope, or another goomba, we can\n    //  prevent the goomba from turning back toward home for a while (goomba\n    //  chase extension)\n    //! It seems theoretically possible to get 2-3 goombas to repeatedly touch\n    //  each other and move arbitrarily far from their home, but it's\n    //  extremely precise and chaotic in practice, so probably can't be performed\n    //  for nontrivial distances\n    if (o->oGoombaTurningAwayFromWall) {\n        o->oGoombaTurningAwayFromWall = obj_resolve_collisions_and_turn(o->oGoombaTargetYaw, 0x200);\n    } else {\n        // If far from home, walk toward home.\n        if (o->oDistanceToMario >= 25000.0f) {\n            o->oGoombaTargetYaw = o->oAngleToMario;\n            o->oGoombaWalkTimer = random_linear_offset(20, 30);\n        }\n\n        if (!(o->oGoombaTurningAwayFromWall =\n                  obj_bounce_off_walls_edges_objects(&o->oGoombaTargetYaw))) {\n            if (o->oDistanceToMario < 500.0f) {\n                // If close to mario, begin chasing him. If not already chasing\n                // him, jump first\n\n                if (o->oGoombaRelativeSpeed <= 2.0f) {\n                    goomba_begin_jump();\n                }\n\n                o->oGoombaTargetYaw = o->oAngleToMario;\n                o->oGoombaRelativeSpeed = 20.0f;\n            } else {\n                // If mario is far away, walk at a normal pace, turning randomly\n                // and occasionally jumping\n\n                o->oGoombaRelativeSpeed = 4.0f / 3.0f;\n\n                if (o->oGoombaWalkTimer != 0) {\n                    o->oGoombaWalkTimer--;\n                } else {\n                    if (random_u16() & 3) {\n                        o->oGoombaTargetYaw = obj_random_fixed_turn(0x2000);\n                        o->oGoombaWalkTimer = random_linear_offset(100, 100);\n                    } else {\n                        goomba_begin_jump();\n                        o->oGoombaTargetYaw = obj_random_fixed_turn(0x6000);\n                    }\n                }\n            }\n        }\n\n        cur_obj_rotate_yaw_toward(o->oGoombaTargetYaw, 0x200);\n    }\n}\n\n/**\n * This action occurs when either the goomba attacks mario normally, or mario\n * attacks a huge goomba with an attack that doesn't kill it.\n */\nstatic void goomba_act_attacked_mario(void) {\n    if (o->oGoombaSize == GOOMBA_SIZE_TINY) {\n        mark_goomba_as_dead();\n        o->oNumLootCoins = 0;\n        obj_die_if_health_non_positive();\n    } else {\n        //! This can happen even when the goomba is already in the air. It's\n        //  hard to chain these in practice\n        goomba_begin_jump();\n        o->oGoombaTargetYaw = o->oAngleToMario;\n        o->oGoombaTurningAwayFromWall = FALSE;\n    }\n}\n\n/**\n * Move until landing, and rotate toward target yaw.\n */\nstatic void goomba_act_jump(void) {\n    obj_resolve_object_collisions(NULL);\n\n    //! If we move outside the goomba's drawing radius the frame it enters the\n    //  jump action, then it will keep its velY, but it will still be counted\n    //  as being on the ground.\n    //  Next frame, the jump action will think it has already ended because it is\n    //  still on the ground.\n    //  This puts the goomba back in the walk action, but the positive velY will\n    //  make it hop into the air. We can then trigger another jump.\n    if (o->oMoveFlags & OBJ_MOVE_MASK_ON_GROUND) {\n        o->oAction = GOOMBA_ACT_WALK;\n    } else {\n        cur_obj_rotate_yaw_toward(o->oGoombaTargetYaw, 0x800);\n    }\n}\n\n/**\n * Attack handler for when mario attacks a huge goomba with an attack that\n * doesn't kill it.\n * From the goomba's perspective, this is the same as the goomba attacking\n * mario.\n */\nvoid huge_goomba_weakly_attacked(void) {\n    o->oAction = GOOMBA_ACT_ATTACKED_MARIO;\n}\n\n/**\n * Update function for goomba.\n */\nvoid bhv_goomba_update(void) {\n    // PARTIAL_UPDATE\n\n    f32 animSpeed;\n\n    if (obj_update_standard_actions(o->oGoombaScale)) {\n        // If this goomba has a spawner and mario moved away from the spawner, unload\n        if (o->parentObj != o) {\n            if (o->parentObj->oAction == GOOMBA_TRIPLET_SPAWNER_ACT_UNLOADED) {\n                obj_mark_for_deletion(o);\n            }\n        }\n\n        cur_obj_scale(o->oGoombaScale);\n        obj_update_blinking(&o->oGoombaBlinkTimer, 30, 50, 5);\n        cur_obj_update_floor_and_walls();\n\n        if ((animSpeed = o->oForwardVel / o->oGoombaScale * 0.4f) < 1.0f) {\n            animSpeed = 1.0f;\n        }\n\n        cur_obj_init_animation_with_accel_and_sound(0, animSpeed);\n\n        switch (o->oAction) {\n            case GOOMBA_ACT_WALK:\n                goomba_act_walk();\n                break;\n            case GOOMBA_ACT_ATTACKED_MARIO:\n                goomba_act_attacked_mario();\n                break;\n            case GOOMBA_ACT_JUMP:\n                goomba_act_jump();\n                break;\n        }\n\n        //! @bug Weak attacks on huge goombas in a triplet mark them as dead even if they're not.\n        // obj_handle_attacks returns the type of the attack, which is non-zero\n        // even for Mario's weak attacks. Thus, if Mario weakly attacks a huge goomba\n        // without harming it (e.g. by punching it), the goomba will be marked as dead\n        // and will not respawn if Mario leaves and re-enters the spawner's radius\n        // even though the goomba isn't actually dead.\n        if (obj_handle_attacks(&sGoombaHitbox, GOOMBA_ACT_ATTACKED_MARIO,\n                               sGoombaAttackHandlers[o->oGoombaSize & 1])) {\n            mark_goomba_as_dead();\n        }\n\n        cur_obj_move_standard(-78);\n    } else {\n        o->oAnimState = 1;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/grand_star.inc.c",
    "content": "// grand_star.inc.c\n\ns32 arc_to_goal_pos(Vec3f a0, Vec3f a1, f32 yVel, f32 gravity) {\n    f32 dx = a0[0] - a1[0];\n    f32 dz = a0[2] - a1[2];\n    f32 planarDist = sqrtf(dx * dx + dz * dz);\n    s32 time;\n\n    o->oMoveAngleYaw = atan2s(dz, dx);\n    o->oVelY = yVel;\n    o->oGravity = gravity;\n\n    time = -2.0f / o->oGravity * yVel - 1.0f;\n\n    o->oForwardVel = planarDist / time;\n\n    return time;\n}\n\nvoid grand_star_zero_velocity(void) {\n    o->oGravity = 0.0f;\n    o->oVelY = 0.0f;\n    o->oForwardVel = 0.0f;\n}\n\nvoid bhv_grand_star_loop(void) {\n    UNUSED u8 filler[4];\n    Vec3f sp28;\n\n    sp28[0] = sp28[1] = sp28[2] = 0.0f;\n\n    if (o->oAction == 0) {\n        if (o->oTimer == 0) {\n            obj_set_angle(o, 0, 0, 0);\n            o->oAngleVelYaw = 0x400;\n\n            cur_obj_play_sound_2(SOUND_GENERAL2_STAR_APPEARS);\n        }\n\n        if (o->oTimer > 70) {\n            o->oAction++;\n        }\n\n        spawn_sparkle_particles(3, 200, 80, -60);\n    } else if (o->oAction == 1) {\n        if (o->oTimer == 0) {\n            cur_obj_play_sound_2(SOUND_GENERAL_GRAND_STAR);\n\n            cutscene_object(CUTSCENE_STAR_SPAWN, o);\n            o->oGrandStarUnk108 = arc_to_goal_pos(sp28, &o->oPosX, 80.0f, -2.0f);\n        }\n\n        cur_obj_move_using_fvel_and_gravity();\n\n        if (o->oSubAction == 0) {\n            if (o->oPosY < o->oHomeY) {\n                o->oPosY = o->oHomeY;\n                o->oVelY = 60.0f;\n                o->oForwardVel = 0.0f;\n                o->oSubAction++;\n\n                cur_obj_play_sound_2(SOUND_GENERAL_GRAND_STAR_JUMP);\n            }\n        } else if (o->oVelY < 0.0f && o->oPosY < o->oHomeY + 200.0f) {\n            o->oPosY = o->oHomeY + 200.0f;\n            grand_star_zero_velocity();\n            gObjCutsceneDone = TRUE;\n            set_mario_npc_dialog(MARIO_DIALOG_STOP);\n            o->oAction++;\n            o->oInteractStatus = 0;\n\n            cur_obj_play_sound_2(SOUND_GENERAL_GRAND_STAR_JUMP);\n        }\n\n        spawn_sparkle_particles(3, 200, 80, -60);\n    } else {\n        cur_obj_become_tangible();\n\n        if (o->oInteractStatus & INT_STATUS_INTERACTED) {\n            obj_mark_for_deletion(o);\n            o->oInteractStatus = 0;\n        }\n    }\n\n    if (o->oAngleVelYaw > 0x400) {\n        o->oAngleVelYaw -= 0x100;\n    }\n\n    o->oFaceAngleYaw += o->oAngleVelYaw;\n    cur_obj_scale(2.0f);\n    o->oGraphYOffset = 110.0f;\n}\n"
  },
  {
    "path": "src/game/behaviors/grill_door.inc.c",
    "content": "// grill_door.inc.c\n\nstruct OpenableGrill {\n    s16 halfWidth;\n    s16 modelID;\n    const Collision *collision;\n};\n\nstruct OpenableGrill gOpenableGrills[] = {\n    { 320, MODEL_BOB_BARS_GRILLS, bob_seg7_collision_gate },\n    { 410, MODEL_HMC_RED_GRILLS,  hmc_seg7_collision_0702B65C },\n};\n\nvoid bhv_openable_cage_door_loop(void) {\n    if (o->oAction == 0) {\n        if (o->parentObj->oOpenableGrillUnk88 != 0) {\n            o->oAction++;\n        }\n    } else if (o->oAction == 1) {\n        if (o->oTimer < 64) {\n            o->oMoveAngleYaw -= o->oBhvParams2ndByte * 0x100;\n        } else {\n            o->oAction++;\n        }\n    }\n}\n\nvoid bhv_openable_grill_loop(void) {\n    struct Object *obj;\n    s32 grillIdx;\n\n    switch (o->oAction) {\n        case 0:\n            grillIdx = o->oBhvParams2ndByte;\n\n            obj = spawn_object_relative(-1, gOpenableGrills[grillIdx].halfWidth, 0, 0, o,\n                                        gOpenableGrills[grillIdx].modelID, bhvOpenableCageDoor);\n            obj->oMoveAngleYaw += 0x8000;\n            obj_set_collision_data(obj, gOpenableGrills[grillIdx].collision);\n\n            obj = spawn_object_relative(1, -gOpenableGrills[grillIdx].halfWidth, 0, 0, o,\n                                        gOpenableGrills[grillIdx].modelID, bhvOpenableCageDoor);\n            obj_set_collision_data(obj, gOpenableGrills[grillIdx].collision);\n\n            o->oAction++;\n            break;\n\n        case 1:\n            if ((o->oOpenableGrillPurpleSwitch =\n                 cur_obj_nearest_object_with_behavior(bhvFloorSwitchGrills)) != NULL) {\n                o->oAction++;\n            }\n            break;\n\n        case 2:\n            obj = o->oOpenableGrillPurpleSwitch;\n\n            if (obj->oAction == PURPLE_SWITCH_ACT_TICKING) {\n                o->oOpenableGrillUnk88 = 2;\n                cur_obj_play_sound_2(SOUND_GENERAL_CAGE_OPEN);\n                o->oAction++;\n\n                if (o->oBhvParams2ndByte != OPENABLE_GRILL_BP_BOB) {\n                    play_puzzle_jingle();\n                }\n            }\n            break;\n\n        case 3:\n            break;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/ground_particles.inc.c",
    "content": "// ground_particles.inc.c\n\nvoid bhv_pound_white_puffs_init(void) {\n    clear_particle_flags(ACTIVE_PARTICLE_MIST_CIRCLE);\n    spawn_mist_from_global();\n}\n\nstatic struct SpawnParticlesInfo sGlobalMistParticles = {\n    /* bhvParam:        */ 3,\n    /* count:           */ 20,\n    /* model:           */ MODEL_MIST,\n    /* offsetY:         */ 20,\n    /* forwardVelBase:  */ 10,\n    /* forwardVelRange: */ 5,\n    /* velYBase:        */ 0,\n    /* velYRange:       */ 0,\n    /* gravity:         */ 0,\n    /* dragStrength:    */ 30,\n    /* sizeBase:        */ 30.0f,\n    /* sizeRange:       */ 1.5f,\n};\n\nvoid spawn_mist_from_global(void) {\n    cur_obj_spawn_particles(&sGlobalMistParticles);\n}\n\nstatic struct SpawnParticlesInfo sSandParticles = {\n    /* bhvParam:        */ 0,\n    /* count:           */ 5,\n    /* model:           */ MODEL_SAND_DUST,\n    /* offsetY:         */ 0,\n    /* forwardVelBase:  */ 0,\n    /* forwardVelRange: */ 20,\n    /* velYBase:        */ 20,\n    /* velYRange:       */ 0,\n    /* gravity:         */ 252,\n    /* dragStrength:    */ 30,\n    /* sizeBase:        */ 5.0f,\n    /* sizeRange:       */ 2.0f,\n};\n\nvoid bhv_ground_sand_init(void) {\n    clear_particle_flags(ACTIVE_PARTICLE_DIRT);\n    cur_obj_spawn_particles(&sSandParticles);\n}\n\nstatic s16 sSmokeMovementParams[] = { 2, -8, 1, 4 };\n\nvoid spawn_smoke_with_velocity(void) {\n    struct Object *smoke = spawn_object_with_scale(o, MODEL_SMOKE, bhvWhitePuffSmoke2, 1.0f);\n\n    smoke->oForwardVel = sSmokeMovementParams[0];\n    smoke->oVelY = sSmokeMovementParams[1];\n    smoke->oGravity = sSmokeMovementParams[2];\n\n    obj_translate_xyz_random(smoke, sSmokeMovementParams[3]);\n}\n\n// TODO Fix name\nvoid clear_particle_flags(u32 flags) {\n    o->parentObj->oActiveParticleFlags &= flags ^ 0xFFFFFFFF; // Clear the flags given (could just be ~flags)\n}\n\nstatic struct SpawnParticlesInfo sSnowParticles = {\n    /* bhvParam:        */ 0,\n    /* count:           */ 5,\n    /* model:           */ MODEL_WHITE_PARTICLE_DL,\n    /* offsetY:         */ 0,\n    /* forwardVelBase:  */ 0,\n    /* forwardVelRange: */ 20,\n    /* velYBase:        */ 20,\n    /* velYRange:       */ 0,\n    /* gravity:         */ 252,\n    /* dragStrength:    */ 30,\n    /* sizeBase:        */ 2.0f,\n    /* sizeRange:       */ 2.0f,\n};\n\nvoid bhv_ground_snow_init(void) {\n    clear_particle_flags(ACTIVE_PARTICLE_SNOW);\n    cur_obj_spawn_particles(&sSnowParticles);\n}\n"
  },
  {
    "path": "src/game/behaviors/haunted_chair.inc.c",
    "content": "// haunted_chair.inc.c\n\nstruct ObjectHitbox sHauntedChairHitbox = {\n    /* interactType:      */ INTERACT_MR_BLIZZARD,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 2,\n    /* health:            */ 0,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 50,\n    /* height:            */ 50,\n    /* hurtboxRadius:     */ 50,\n    /* hurtboxHeight:     */ 50,\n};\n\nvoid bhv_haunted_chair_init(void) {\n    struct Object *val04;\n    f32 val00;\n\n    val04 = cur_obj_find_nearest_object_with_behavior(bhvMadPiano, &val00);\n\n    if (val04 != NULL && val00 < 300.0f) {\n        o->parentObj = val04;\n    } else {\n        o->oHauntedChairUnkF4 = 1;\n    }\n}\n\nvoid haunted_chair_act_0(void) {\n    if (o->parentObj != o) {\n        if (o->oHauntedChairUnk104 == 0) {\n            if (lateral_dist_between_objects(o, o->parentObj) < 250.0f) {\n                s16 val0E = obj_angle_to_object(o, o->parentObj) - o->oFaceAngleYaw + 0x2000;\n\n                if (val0E & 0x4000) {\n                    o->oHauntedChairUnk100 = &o->oFaceAngleRoll;\n\n                    if (val0E > 0) {\n                        o->oHauntedChairUnk104 = 0x4000;\n                    } else {\n                        o->oHauntedChairUnk104 = -0x4000;\n                    }\n                } else {\n                    o->oHauntedChairUnk100 = &o->oFaceAnglePitch;\n\n                    if (val0E < 0) {\n                        o->oHauntedChairUnk104 = 0x5000;\n                    } else {\n                        o->oHauntedChairUnk104 = -0x4000;\n                    }\n                }\n\n                if (o->oHauntedChairUnk104 < 0) {\n                    o->oHauntedChairUnkF8 = -1500.0f;\n                } else {\n                    o->oHauntedChairUnkF8 = 1500.0f;\n                }\n            }\n        } else {\n            oscillate_toward(o->oHauntedChairUnk100, &o->oHauntedChairUnkF8, o->oHauntedChairUnk104,\n                             4000.0f, 20.0f, 2.0f);\n        }\n    } else if (o->oHauntedChairUnkF4 != 0) {\n        if (o->oDistanceToMario < 500.0f) {\n            o->oHauntedChairUnkF4--;\n        }\n\n        o->oTimer = 0;\n    } else {\n        if (o->oTimer & 0x8) {\n            f32 val08;\n\n            if (o->oFaceAnglePitch < 0) {\n                cur_obj_play_sound_2(SOUND_GENERAL_HAUNTED_CHAIR_MOVE);\n                val08 = 4.0f;\n            } else {\n                val08 = -4.0f;\n            }\n\n            o->oHomeX -= val08;\n            o->oHomeZ -= val08;\n\n            o->oFaceAnglePitch = o->oFaceAngleRoll = (s32)(50.0f * val08);\n        } else {\n            o->oFaceAnglePitch = o->oFaceAngleRoll = 0;\n        }\n\n        if (o->oTimer > 30) {\n            o->oAction = 1;\n\n            o->oHauntedChairUnkF8 = 0.0f;\n            o->oHauntedChairUnkFC = 200.0f;\n            o->oHauntedChairUnkF4 = 40;\n        }\n    }\n\n    cur_obj_push_mario_away_from_cylinder(80.0f, 120.0f);\n}\n\nvoid haunted_chair_act_1(void) {\n    cur_obj_update_floor_and_walls();\n\n    if (o->oTimer < 70) {\n        if (o->oTimer < 50) {\n            o->oVelY = 6.0f;\n        } else {\n            o->oVelY = 0.0f;\n        }\n\n        o->oGravity = 0.0f;\n\n        oscillate_toward(&o->oFaceAnglePitch, &o->oHauntedChairUnkF8, -4000, 200.0f, 20.0f, 2.0f);\n        oscillate_toward(&o->oFaceAngleRoll, &o->oHauntedChairUnkFC, 0, 0.0f, 20.0f, 1.0f);\n    } else {\n        if (o->oHauntedChairUnkF4 != 0) {\n            if (--o->oHauntedChairUnkF4 == 0) {\n                cur_obj_play_sound_2(SOUND_GENERAL_HAUNTED_CHAIR);\n\n                o->oMoveAnglePitch = obj_turn_pitch_toward_mario(120.0f, 0);\n                o->oMoveAngleYaw = o->oAngleToMario;\n\n                obj_compute_vel_from_move_pitch(50.0f);\n            } else if (o->oHauntedChairUnkF4 > 20) {\n                if (gGlobalTimer % 4 == 0) {\n                    cur_obj_play_sound_2(SOUND_GENERAL_SWISH_AIR_2);\n                }\n\n                o->oFaceAngleYaw += 10000;\n            }\n        } else if (o->oMoveFlags & (OBJ_MOVE_MASK_ON_GROUND | OBJ_MOVE_HIT_WALL)) {\n            obj_die_if_health_non_positive();\n        }\n    }\n\n    obj_check_attacks(&sHauntedChairHitbox, o->oAction);\n    cur_obj_move_standard(78);\n}\n\nvoid bhv_haunted_chair_loop(void) {\n    if (!(o->activeFlags & ACTIVE_FLAG_IN_DIFFERENT_ROOM)) {\n        switch (o->oAction) {\n            case 0:\n                haunted_chair_act_0();\n                break;\n            case 1:\n                haunted_chair_act_1();\n                break;\n        }\n\n        cur_obj_spin_all_dimensions(30.0f, 30.0f);\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/heave_ho.inc.c",
    "content": "// heave_ho.inc.c\n\ns16 D_8032F460[][2] = {\n    { 30, 0 }, { 42, 1 }, { 52, 0 },  { 64, 1 },  { 74, 0 },\n    { 86, 1 }, { 96, 0 }, { 108, 1 }, { 118, 0 }, { -1, 0 },\n};\n\nvoid bhv_heave_ho_throw_mario_loop(void) {\n    o->oParentRelativePosX = 200.0f;\n    o->oParentRelativePosY = -50.0f;\n    o->oParentRelativePosZ = 0.0f;\n\n    o->oMoveAngleYaw = o->parentObj->oMoveAngleYaw;\n\n    switch (o->parentObj->oHeaveHoUnk88) {\n        case 0:\n            break;\n        case 1:\n            break;\n        case 2:\n            cur_obj_play_sound_2(SOUND_OBJ_HEAVEHO_TOSSED);\n            gMarioObject->oInteractStatus |= INT_STATUS_MARIO_UNK2;\n            gMarioStates[0].forwardVel = -45.0f;\n            gMarioStates[0].vel[1] = 95.0f;\n            o->parentObj->oHeaveHoUnk88 = 0;\n            break;\n    }\n}\n\nvoid heave_ho_act_1(void) {\n    s32 sp1C = 0;\n\n    o->oForwardVel = 0.0f;\n    cur_obj_reverse_animation();\n\n    while (TRUE) {\n        if (D_8032F460[sp1C][0] == -1) {\n            o->oAction = 2;\n            break;\n        }\n\n        if (o->oTimer < D_8032F460[sp1C][0]) {\n            cur_obj_init_animation_with_accel_and_sound(2, D_8032F460[sp1C][1]);\n            break;\n        }\n\n        sp1C++;\n    }\n}\n\nvoid heave_ho_act_2(void) {\n    UNUSED u8 filler[4];\n    s16 angleVel;\n\n    if (cur_obj_lateral_dist_from_mario_to_home() > 1000.0f) {\n        o->oAngleToMario = cur_obj_angle_to_home();\n    }\n\n    if (o->oTimer > 150) {\n        o->oHeaveHoUnkF4 = (302 - o->oTimer) / 152.0f;\n        if (o->oHeaveHoUnkF4 < 0.1) {\n            o->oHeaveHoUnkF4 = 0.1f;\n            o->oAction = 1;\n        }\n    } else {\n        o->oHeaveHoUnkF4 = 1.0f;\n    }\n\n    cur_obj_init_animation_with_accel_and_sound(0, o->oHeaveHoUnkF4);\n\n    o->oForwardVel = o->oHeaveHoUnkF4 * 10.0f;\n    angleVel = o->oHeaveHoUnkF4 * 0x400;\n    o->oMoveAngleYaw = approach_s16_symmetric(o->oMoveAngleYaw, o->oAngleToMario, angleVel);\n}\n\nvoid heave_ho_act_3(void) {\n    o->oForwardVel = 0.0f;\n\n    if (o->oTimer == 0) {\n        o->oHeaveHoUnk88 = 2;\n    }\n\n    if (o->oTimer == 1) {\n        cur_obj_init_animation_with_accel_and_sound(1, 1.0f);\n        o->numCollidedObjs = 20;\n    }\n\n    if (cur_obj_check_if_near_animation_end()) {\n        o->oAction = 1;\n    }\n}\n\nvoid heave_ho_act_0(void) {\n    cur_obj_set_pos_to_home();\n\n    if (find_water_level(o->oPosX, o->oPosZ) < o->oPosY && o->oDistanceToMario < 4000.0f) {\n        cur_obj_become_tangible();\n        cur_obj_unhide();\n        o->oAction = 1;\n    } else {\n        cur_obj_become_intangible();\n        cur_obj_hide();\n    }\n}\n\nvoid (*sHeaveHoActions[])(void) = {\n    heave_ho_act_0,\n    heave_ho_act_1,\n    heave_ho_act_2,\n    heave_ho_act_3,\n};\n\nvoid heave_ho_move(void) {\n    cur_obj_update_floor_and_walls();\n    cur_obj_call_action_function(sHeaveHoActions);\n    cur_obj_move_standard(-78);\n\n    if (o->oMoveFlags & OBJ_MOVE_MASK_IN_WATER) {\n        o->oGraphYOffset = -15.0f;\n    } else {\n        o->oGraphYOffset = 0.0f;\n    }\n\n    if (o->oForwardVel > 3.0f) {\n        cur_obj_play_sound_1(SOUND_AIR_HEAVEHO_MOVE);\n    }\n\n    if (o->oAction != 0 && o->oMoveFlags & OBJ_MOVE_MASK_IN_WATER) {\n        o->oAction = 0;\n    }\n\n    if (o->oInteractStatus & INT_STATUS_GRABBED_MARIO) {\n        o->oInteractStatus = 0;\n        o->oHeaveHoUnk88 = 1;\n        o->oAction = 3;\n    }\n}\n\nvoid bhv_heave_ho_loop(void) {\n    cur_obj_scale(2.0f);\n\n    switch (o->oHeldState) {\n        case HELD_FREE:\n            heave_ho_move();\n            break;\n        case HELD_HELD:\n            cur_obj_unrender_set_action_and_anim(0, 0);\n            break;\n        case HELD_THROWN:\n            cur_obj_get_dropped();\n            break;\n        case HELD_DROPPED:\n            cur_obj_get_dropped();\n            break;\n    }\n\n    o->oInteractStatus = 0;\n}\n"
  },
  {
    "path": "src/game/behaviors/hidden_star.inc.c",
    "content": "// hidden_star.inc.c\n\nvoid bhv_hidden_star_init(void) {\n    s16 count = count_objects_with_behavior(bhvHiddenStarTrigger);\n\n    if (count == 0) {\n        struct Object *star = spawn_object_abs_with_rot(o, 0, MODEL_STAR, bhvStar,\n                                                        o->oPosX, o->oPosY, o->oPosZ, 0, 0, 0);\n        star->oBhvParams = o->oBhvParams;\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n\n    o->oHiddenStarTriggerCounter = 5 - count;\n}\n\nvoid bhv_hidden_star_loop(void) {\n    switch (o->oAction) {\n        case 0:\n            if (o->oHiddenStarTriggerCounter == 5) {\n                o->oAction = 1;\n            }\n            break;\n\n        case 1:\n            if (o->oTimer > 2) {\n                spawn_red_coin_cutscene_star(o->oPosX, o->oPosY, o->oPosZ);\n                spawn_mist_particles();\n                o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n            }\n            break;\n    }\n}\n\nvoid bhv_hidden_star_trigger_loop(void) {\n    if (obj_check_if_collided_with_object(o, gMarioObject) == TRUE) {\n        struct Object *hiddenStar = cur_obj_nearest_object_with_behavior(bhvHiddenStar);\n\n        if (hiddenStar != NULL) {\n            hiddenStar->oHiddenStarTriggerCounter++;\n\n            if (hiddenStar->oHiddenStarTriggerCounter != 5) {\n                spawn_orange_number(hiddenStar->oHiddenStarTriggerCounter, 0, 0, 0);\n            }\n\n#ifdef VERSION_JP\n            play_sound(SOUND_MENU_STAR_SOUND, gGlobalSoundSource);\n#else\n            play_sound(SOUND_MENU_COLLECT_SECRET\n                       + (((u8) hiddenStar->oHiddenStarTriggerCounter - 1) << 16), gGlobalSoundSource);\n#endif\n        }\n\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n}\n\nvoid bhv_bowser_course_red_coin_star_loop(void) {\n    gRedCoinsCollected = o->oHiddenStarTriggerCounter;\n\n    switch (o->oAction) {\n        case 0:\n            if (o->oHiddenStarTriggerCounter == 8) {\n                o->oAction = 1;\n            }\n            break;\n\n        case 1:\n            if (o->oTimer > 2) {\n                spawn_no_exit_star(o->oPosX, o->oPosY, o->oPosZ);\n                spawn_mist_particles();\n                o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n            }\n            break;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/hoot.inc.c",
    "content": "// hoot.inc.c\n\nvoid bhv_hoot_init(void) {\n    cur_obj_init_animation(0);\n\n    o->oHomeX = o->oPosX + 800.0f;\n    o->oHomeY = o->oPosY - 150.0f;\n    o->oHomeZ = o->oPosZ + 300.0f;\n    o->header.gfx.node.flags |= GRAPH_RENDER_INVISIBLE;\n\n    cur_obj_become_intangible();\n}\n\nf32 hoot_find_next_floor(struct FloorGeometry **floorGeo, f32 arg1) {\n    f32 sp24 = arg1 * sins(o->oMoveAngleYaw) + o->oPosX;\n    UNUSED f32 sp20 = o->oPosY;\n    f32 sp1c = arg1 * coss(o->oMoveAngleYaw) + o->oPosZ;\n    f32 floorY = find_floor_height_and_data(sp24, 10000.0f, sp1c, floorGeo);\n\n    return floorY;\n}\n\nvoid hoot_floor_bounce(void) {\n    struct FloorGeometry *floorGeo;\n    f32 floorY;\n\n    floorY = hoot_find_next_floor(&floorGeo, 375.0f);\n    if (floorY + 75.0f > o->oPosY) {\n        o->oMoveAnglePitch -= 3640.8888;\n    }\n\n    floorY = hoot_find_next_floor(&floorGeo, 200.0f);\n    if (floorY + 125.0f > o->oPosY) {\n        o->oMoveAnglePitch -= 7281.7776;\n    }\n\n    floorY = hoot_find_next_floor(&floorGeo, 0);\n    if (floorY + 125.0f > o->oPosY) {\n        o->oPosY = floorY + 125.0f;\n    }\n\n    if (o->oMoveAnglePitch < -21845.3328) {\n        o->oMoveAnglePitch = -21845;\n    }\n}\n\nvoid hoot_free_step(s16 fastOscY, s32 speed) {\n    struct FloorGeometry *floorGeo;\n    s16 yaw = o->oMoveAngleYaw;\n    s16 pitch = o->oMoveAnglePitch;\n    s16 animFrame = o->header.gfx.animInfo.animFrame;\n    f32 xPrev = o->oPosX;\n    f32 zPrev = o->oPosZ;\n    f32 hSpeed;\n\n    o->oVelY = sins(pitch) * speed;\n    hSpeed = coss(pitch) * speed;\n    o->oVelX = sins(yaw) * hSpeed;\n    o->oVelZ = coss(yaw) * hSpeed;\n\n    o->oPosX += o->oVelX;\n    if (fastOscY == 0) {\n        o->oPosY -= o->oVelY + coss((s32)(animFrame * 3276.8)) * 50.0f / 4;\n    } else {\n        o->oPosY -= o->oVelY + coss((s32)(animFrame * 6553.6)) * 50.0f / 4;\n    }\n    o->oPosZ += o->oVelZ;\n\n    find_floor_height_and_data(o->oPosX, o->oPosY, o->oPosZ, &floorGeo);\n    if (floorGeo == NULL) {\n        o->oPosX = xPrev;\n        o->oPosZ = zPrev;\n    }\n\n    if (animFrame == 0) {\n        cur_obj_play_sound_2(SOUND_GENERAL_SWISH_WATER);\n    }\n}\n\nvoid hoot_player_set_yaw(void) {\n    s16 stickX = gPlayer3Controller->rawStickX;\n    s16 stickY = gPlayer3Controller->rawStickY;\n    UNUSED s16 pitch = o->oMoveAnglePitch;\n\n    if (stickX < 10 && stickX >= -9) {\n        stickX = 0;\n    }\n\n    if (stickY < 10 && stickY >= -9) {\n        stickY = 0;\n    }\n\n    o->oMoveAngleYaw -= 5 * stickX;\n}\n\nvoid hoot_carry_step(s32 speed, UNUSED f32 xPrev, UNUSED f32 zPrev) {\n    s16 yaw = o->oMoveAngleYaw;\n    s16 pitch = o->oMoveAnglePitch;\n    s16 animFrame = o->header.gfx.animInfo.animFrame;\n    f32 hSpeed;\n\n    o->oVelY = sins(pitch) * speed;\n    hSpeed = coss(pitch) * speed;\n    o->oVelX = sins(yaw) * hSpeed;\n    o->oVelZ = coss(yaw) * hSpeed;\n\n    o->oPosX += o->oVelX;\n    o->oPosY -= o->oVelY + coss((s32)(animFrame * 6553.6)) * 50.0f / 4;\n    o->oPosZ += o->oVelZ;\n\n    if (animFrame == 0) {\n        cur_obj_play_sound_2(SOUND_GENERAL_SWISH_WATER);\n    }\n}\n\nvoid hoot_surface_collision(f32 xPrev, UNUSED f32 yPrev, f32 zPrev) {\n    struct FloorGeometry *floorGeo;\n    struct WallCollisionData hitbox;\n    f32 floorY;\n\n    hitbox.x = o->oPosX;\n    hitbox.y = o->oPosY;\n    hitbox.z = o->oPosZ;\n    hitbox.offsetY = 10.0;\n    hitbox.radius = 50.0;\n\n    if (find_wall_collisions(&hitbox) != 0) {\n        o->oPosX = hitbox.x;\n        o->oPosY = hitbox.y;\n        o->oPosZ = hitbox.z;\n        gMarioObject->oInteractStatus |= INT_STATUS_MARIO_UNK7;\n    }\n\n    floorY = find_floor_height_and_data(o->oPosX, o->oPosY, o->oPosZ, &floorGeo);\n    if (floorGeo == NULL) {\n        o->oPosX = xPrev;\n        o->oPosZ = zPrev;\n        return;\n    }\n\n    if (absf_2(o->oPosX) > 8000.0f) {\n        o->oPosX = xPrev;\n    }\n\n    if (absf_2(o->oPosZ) > 8000.0f) {\n        o->oPosZ = zPrev;\n    }\n\n    if (floorY + 125.0f > o->oPosY) {\n        o->oPosY = floorY + 125.0f;\n    }\n}\n\nvoid hoot_act_ascent(f32 xPrev, f32 zPrev) {\n    f32 negX = 0 - o->oPosX;\n    f32 negZ = 0 - o->oPosZ;\n    s16 angleToOrigin = atan2s(negZ, negX);\n\n    o->oMoveAngleYaw = approach_s16_symmetric(o->oMoveAngleYaw, angleToOrigin, 0x500);\n    o->oMoveAnglePitch = 0xCE38;\n\n    if (o->oTimer >= 29) {\n        cur_obj_play_sound_1(SOUND_ENV_WIND2);\n        o->header.gfx.animInfo.animFrame = 1;\n    }\n\n    if (o->oPosY > 6500.0f) {\n        o->oAction = HOOT_ACT_CARRY;\n    }\n\n    hoot_carry_step(60, xPrev, zPrev);\n}\n\nvoid hoot_action_loop(void) {\n    f32 xPrev = o->oPosX;\n    f32 yPrev = o->oPosY;\n    f32 zPrev = o->oPosZ;\n\n    switch (o->oAction) {\n        case HOOT_ACT_ASCENT:\n            hoot_act_ascent(xPrev, zPrev);\n            break;\n\n        case HOOT_ACT_CARRY:\n            hoot_player_set_yaw();\n\n            o->oMoveAnglePitch = 0x71C;\n\n            if (o->oPosY < 2700.0f) {\n                set_time_stop_flags(TIME_STOP_ENABLED | TIME_STOP_MARIO_AND_DOORS);\n\n                if (cutscene_object_with_dialog(CUTSCENE_DIALOG, o, DIALOG_045) != 0) {\n                    clear_time_stop_flags(TIME_STOP_ENABLED | TIME_STOP_MARIO_AND_DOORS);\n                    o->oAction = HOOT_ACT_TIRED;\n                }\n            }\n\n            hoot_carry_step(20, xPrev, zPrev);\n            break;\n\n        case HOOT_ACT_TIRED:\n            hoot_player_set_yaw();\n\n            o->oMoveAnglePitch = 0;\n\n            hoot_carry_step(20, xPrev, zPrev);\n\n            if (o->oTimer > 60) {\n                gMarioObject->oInteractStatus |= INT_STATUS_MARIO_UNK7;\n            }\n            break;\n    }\n\n    hoot_surface_collision(xPrev, yPrev, zPrev);\n}\n\nvoid hoot_turn_to_home(void) {\n    f32 homeDistX = o->oHomeX - o->oPosX;\n    f32 homeDistY = o->oHomeY - o->oPosY;\n    f32 homeDistZ = o->oHomeZ - o->oPosZ;\n    s16 hAngleToHome = atan2s(homeDistZ, homeDistX);\n    s16 vAngleToHome = atan2s(sqrtf(homeDistX * homeDistX + homeDistZ * homeDistZ), -homeDistY);\n\n    o->oMoveAngleYaw = approach_s16_symmetric(o->oMoveAngleYaw, hAngleToHome, 0x140);\n    o->oMoveAnglePitch = approach_s16_symmetric(o->oMoveAnglePitch, vAngleToHome, 0x140);\n}\n\nvoid hoot_awake_loop(void) {\n    if (o->oInteractStatus == TRUE) { //! Note: Not a flag, treated as a TRUE/FALSE statement\n        hoot_action_loop();\n        cur_obj_init_animation(1);\n    } else {\n        cur_obj_init_animation(0);\n\n        hoot_turn_to_home();\n        hoot_floor_bounce();\n        hoot_free_step(0, 10);\n\n        o->oAction = 0;\n        o->oTimer = 0;\n    }\n\n    set_object_visibility(o, 2000);\n}\n\nvoid bhv_hoot_loop(void) {\n    switch (o->oHootAvailability) {\n        case HOOT_AVAIL_ASLEEP_IN_TREE:\n            if (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 50)) {\n                o->header.gfx.node.flags &= ~GRAPH_RENDER_INVISIBLE;\n                o->oHootAvailability = HOOT_AVAIL_WANTS_TO_TALK;\n            }\n            break;\n\n        case HOOT_AVAIL_WANTS_TO_TALK:\n            hoot_awake_loop();\n\n            if (set_mario_npc_dialog(MARIO_DIALOG_LOOK_UP) == MARIO_DIALOG_STATUS_SPEAK\n                && cutscene_object_with_dialog(CUTSCENE_DIALOG, o, DIALOG_044)) {\n                set_mario_npc_dialog(MARIO_DIALOG_STOP);\n\n                cur_obj_become_tangible();\n\n                o->oHootAvailability = HOOT_AVAIL_READY_TO_FLY;\n            }\n            break;\n\n        case HOOT_AVAIL_READY_TO_FLY:\n            hoot_awake_loop();\n            break;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/horizontal_grindel.inc.c",
    "content": "// horizontal_grindel.inc.c\n\nvoid bhv_horizontal_grindel_init(void) {\n    o->oHorizontalGrindelTargetYaw = o->oMoveAngleYaw;\n}\n\nvoid bhv_horizontal_grindel_update(void) {\n    if (o->oMoveFlags & OBJ_MOVE_MASK_ON_GROUND) {\n        if (!o->oHorizontalGrindelOnGround) {\n            cur_obj_play_sound_2(SOUND_OBJ_THWOMP);\n\n            o->oHorizontalGrindelOnGround = TRUE;\n\n            set_camera_shake_from_point(SHAKE_POS_SMALL, o->oPosX, o->oPosY, o->oPosZ);\n\n            o->oHorizontalGrindelDistToHome = cur_obj_lateral_dist_to_home();\n            o->oForwardVel = 0.0f;\n            o->oTimer = 0;\n        }\n\n        if (cur_obj_rotate_yaw_toward(o->oHorizontalGrindelTargetYaw, 0x400)) {\n            if (o->oTimer > 60) {\n                if (o->oHorizontalGrindelDistToHome > 300.0f) {\n                    o->oHorizontalGrindelTargetYaw += 0x8000;\n                    o->oHorizontalGrindelDistToHome = 0.0f;\n                } else {\n                    cur_obj_play_sound_2(SOUND_OBJ_KING_BOBOMB_JUMP);\n\n                    o->oForwardVel = 11.0f;\n                    o->oVelY = 70.0f;\n                    o->oGravity = -4.0f;\n                    o->oMoveFlags = 0;\n                }\n            }\n        } else {\n            o->oTimer = 0;\n        }\n    } else {\n        o->oHorizontalGrindelOnGround = FALSE;\n\n        if (o->oVelY < 0.0f) {\n            o->oGravity = -16.0f;\n        }\n    }\n\n    o->oFaceAngleYaw = o->oMoveAngleYaw + 0x4000;\n\n    cur_obj_move_standard(78);\n}\n"
  },
  {
    "path": "src/game/behaviors/intro_lakitu.inc.c",
    "content": "\n/**\n * @file intro_lakitu.inc.c\n * This file implements lakitu's behvaior during the intro cutscene.\n * It's also used during the ending cutscene.\n */\n\n/**\n * Add the camera's position to `offset`, rotate the point to be relative to the camera's focus, then\n * set lakitu's location.\n */\nvoid intro_lakitu_set_offset_from_camera(struct Object *obj, Vec3f offset) {\n    f32 dist;\n    Vec3s focusAngles;\n    s16 offsetPitch, offsetYaw;\n\n    vec3f_add(offset, gCamera->pos);\n    vec3f_get_dist_and_angle(gCamera->pos, gCamera->focus,\n                             &dist, &focusAngles[0], &focusAngles[1]);\n    vec3f_get_dist_and_angle(gCamera->pos, offset, &dist, &offsetPitch, &offsetYaw);\n    vec3f_set_dist_and_angle(gCamera->pos, offset, dist,\n                             focusAngles[0] + offsetPitch, focusAngles[1] + offsetYaw);\n    vec3f_to_object_pos(obj, offset);\n}\n\nvoid intro_lakitu_set_focus(struct Object *obj, Vec3f newFocus) {\n    UNUSED u8 filler1[12];\n    Vec3f origin;\n    f32 dist;\n    s16 pitch, yaw;\n    UNUSED u8 filler2[4];\n\n    // newFocus is an offset from lakitu's origin, not a point in the world.\n    vec3f_set(origin, 0.0f, 0.0f, 0.0f);\n    vec3f_get_dist_and_angle(origin, newFocus, &dist, &pitch, &yaw);\n\n    obj->oFaceAnglePitch = pitch;\n    obj->oFaceAngleYaw = yaw;\n}\n\n/**\n * Move lakitu along the spline `offset`, relative to the camera, and face him towards the corresponding\n * location along the spline `focus`.\n */\ns32 intro_lakitu_set_pos_and_focus(struct Object *obj, struct CutsceneSplinePoint offset[],\n                                   struct CutsceneSplinePoint focus[]) {\n    Vec3f newOffset, newFocus;\n    s32 splineFinished = 0;\n    s16 splineSegment = obj->oIntroLakituSplineSegment;\n\n    if ((move_point_along_spline(newFocus, offset, &splineSegment,\n                                 &obj->oIntroLakituSplineSegmentProgress) == 1)\n        || (move_point_along_spline(newOffset, focus, &splineSegment,\n                                    &obj->oIntroLakituSplineSegmentProgress) == 1)) {\n        splineFinished++;\n    }\n\n    obj->oIntroLakituSplineSegment = splineSegment;\n\n    intro_lakitu_set_offset_from_camera(obj, newOffset);\n    intro_lakitu_set_focus(obj, newFocus);\n\n    return splineFinished;\n}\n\n#ifdef VERSION_EU\n#define TIMER1 599\n#define TIMER2 74\n#else\n#define TIMER1 720\n#define TIMER2 98\n#endif\n\nvoid bhv_intro_lakitu_loop(void) {\n    Vec3f sp64, sp58, sp4C;\n    UNUSED u8 filler[16];\n\n    switch (o->oAction) {\n        case 0:\n            cur_obj_disable_rendering();\n\n            o->oIntroLakituSplineSegment = 0.0f;\n            o->oIntroLakituSplineSegmentProgress = 0.0f;\n            o->oIntroLakituCloud =\n                spawn_object_relative_with_scale(CLOUD_BP_LAKITU_CLOUD, 0, 0, 0, 2.0f, o, MODEL_MIST, bhvCloud);\n\n            if (gCamera->cutscene == CUTSCENE_END_WAVING) {\n                o->oAction = 100;\n            } else {\n                o->oAction++;\n            }\n            break;\n\n        case 1:\n            cur_obj_enable_rendering();\n\n            if ((gCutsceneTimer > 350) && (gCutsceneTimer < 458)) {\n                o->oPosX = gCamera->pos[0];\n                o->oPosY = gCamera->pos[1] + 500.0f;\n                o->oPosZ = gCamera->pos[2];\n            }\n\n            if (gCutsceneTimer > 52) {\n                cur_obj_play_sound_1(SOUND_AIR_LAKITU_FLY_HIGHPRIO);\n            }\n\n            if (intro_lakitu_set_pos_and_focus(o, gIntroLakituStartToPipeOffsetFromCamera,\n                                               gIntroLakituStartToPipeFocus) == 1) {\n                o->oAction++;\n            }\n\n            switch (o->oTimer) {\n#if defined(VERSION_US) || defined(VERSION_SH) || defined(VERSION_CN)\n                case 534:\n                    cur_obj_play_sound_2(SOUND_ACTION_FLYING_FAST);\n                    break;\n                case 581:\n                    cur_obj_play_sound_2(SOUND_ACTION_INTRO_UNK45E);\n                    break;\n#endif\n                case 73:\n                    o->oAnimState++;\n                    break;\n                case 74:\n                    o->oAnimState--;\n                    break;\n                case 82:\n                    o->oAnimState++;\n                    break;\n                case 84:\n                    o->oAnimState--;\n                    break;\n            }\n#ifdef VERSION_EU\n            if (o->oTimer == 446) {\n                cur_obj_play_sound_2(SOUND_ACTION_FLYING_FAST);\n            }\n            if (o->oTimer == 485) {\n                cur_obj_play_sound_2(SOUND_ACTION_INTRO_UNK45E);\n            }\n#endif\n            break;\n\n        case 2:\n            if (gCutsceneTimer > TIMER1) {\n                o->oAction++;\n\n                o->oIntroLakituUnk100 = 1400.0f;\n                o->oIntroLakituUnk104 = -4096.0f;\n                o->oIntroLakituUnk108 = 2048.0f;\n                o->oIntroLakituUnk10C = -200.0f;\n\n                o->oMoveAngleYaw = 0x8000;\n                o->oFaceAngleYaw = o->oMoveAngleYaw + 0x4000;\n                o->oMoveAnglePitch = 0x800;\n            }\n\n            cur_obj_play_sound_1(SOUND_AIR_LAKITU_FLY_HIGHPRIO);\n            break;\n\n        case 3:\n            cur_obj_play_sound_1(SOUND_AIR_LAKITU_FLY_HIGHPRIO);\n\n            vec3f_set(sp58, -1128.0f, 560.0f, 4664.0f);\n            o->oMoveAngleYaw += 0x200;\n            o->oIntroLakituUnk100 = approach_f32_asymptotic(o->oIntroLakituUnk100, 100.0f, 0.03f);\n            o->oFaceAnglePitch = atan2s(200.0f, o->oPosY - 400.0f);\n            o->oFaceAngleYaw = approach_s16_asymptotic(o->oFaceAngleYaw, o->oMoveAngleYaw + 0x8000, 4);\n            vec3f_set_dist_and_angle(sp58, sp4C, o->oIntroLakituUnk100, 0, o->oMoveAngleYaw);\n            sp4C[1] += 150.0f * coss((s16) o->oIntroLakituUnk104);\n            o->oIntroLakituUnk104 += o->oIntroLakituUnk108;\n            o->oIntroLakituUnk108 = approach_f32_asymptotic(o->oIntroLakituUnk108, 512.0f, 0.05f);\n            sp4C[0] += o->oIntroLakituUnk10C;\n            o->oIntroLakituUnk10C = approach_f32_asymptotic(o->oIntroLakituUnk10C, 0.0f, 0.05f);\n            vec3f_to_object_pos(o, sp4C);\n\n            if (o->oTimer == 31) {\n                o->oPosY -= 158.0f;\n                // Spawn white ground particles\n                spawn_mist_from_global();\n                o->oPosY += 158.0f;\n            }\n\n            if (o->oTimer == TIMER2) {\n                obj_mark_for_deletion(o);\n                obj_mark_for_deletion(o->oIntroLakituCloud);\n            }\n\n#ifndef VERSION_JP\n            if (o->oTimer == 14) {\n                cur_obj_play_sound_2(SOUND_ACTION_INTRO_UNK45F);\n            }\n#endif\n            break;\n\n        case 100:\n            cur_obj_enable_rendering();\n\n            vec3f_set(sp64, -100.0f, 100.0f, 300.0f);\n            offset_rotated(sp4C, gCamera->pos, sp64, sMarioCamState->faceAngle);\n            vec3f_to_object_pos(o, sp4C);\n\n            o->oMoveAnglePitch = 0x1000;\n            o->oMoveAngleYaw = 0x9000;\n            o->oFaceAnglePitch = o->oMoveAnglePitch / 2;\n            o->oFaceAngleYaw = o->oMoveAngleYaw;\n\n            o->oAction++;\n            break;\n\n        case 101:\n            object_pos_to_vec3f(sp4C, o);\n\n            if (o->oTimer > 60) {\n                o->oForwardVel = approach_f32_asymptotic(o->oForwardVel, -10.0f, 0.05f);\n                o->oMoveAngleYaw += 0x78;\n                o->oMoveAnglePitch += 0x40;\n                o->oFaceAngleYaw = camera_approach_s16_symmetric(\n                                       o->oFaceAngleYaw, calculate_yaw(sp4C, gCamera->pos), 0x200);\n            }\n\n            if (o->oTimer > 105) {\n                o->oAction++;\n                o->oMoveAnglePitch = 0xE00;\n            }\n\n            o->oFaceAnglePitch = 0;\n\n            cur_obj_set_pos_via_transform();\n            break;\n\n        case 102:\n            object_pos_to_vec3f(sp4C, o);\n\n            o->oForwardVel = approach_f32_asymptotic(o->oForwardVel, 60.0f, 0.05f);\n            o->oFaceAngleYaw = camera_approach_s16_symmetric(\n                                   o->oFaceAngleYaw, calculate_yaw(sp4C, gCamera->pos), 0x200);\n\n            if (o->oTimer < 62) {\n                o->oMoveAngleYaw = approach_s16_asymptotic(o->oMoveAngleYaw, 0x1800, 0x1E);\n            }\n\n            o->oMoveAnglePitch = camera_approach_s16_symmetric(o->oMoveAnglePitch, -0x2000, 0x5A);\n            o->oFaceAnglePitch = 0;\n\n            cur_obj_set_pos_via_transform();\n            break;\n    }\n}\n\n#undef TIMER1\n#undef TIMER2\n"
  },
  {
    "path": "src/game/behaviors/intro_peach.inc.c",
    "content": "// intro_peach.inc.c\n\n/**\n * Set peach's location relative to the camera focus.\n * If nonzero, make peach's opacity approach targetOpacity by increment\n */\nvoid intro_peach_set_pos_and_opacity(struct Object *obj, f32 targetOpacity, f32 increment) {\n    Vec3f newPos;\n    s16 focusPitch, focusYaw;\n    f32 UNUSED dist, newOpacity;\n\n    vec3f_get_dist_and_angle(gLakituState.pos, gLakituState.focus, &dist, &focusPitch, &focusYaw);\n    vec3f_set_dist_and_angle(gLakituState.pos, newPos, obj->oIntroPeachDistToCamera,\n                             obj->oIntroPeachPitchFromFocus + focusPitch,\n                             obj->oIntroPeachYawFromFocus + focusYaw);\n    vec3f_to_object_pos(obj, newPos);\n\n    newOpacity = obj->oOpacity;\n    camera_approach_f32_symmetric_bool(&newOpacity, targetOpacity, increment);\n    obj->oOpacity = newOpacity;\n}\n\nvoid bhv_intro_peach_loop(void) {\n    switch (o->oAction) {\n        case 0:\n            o->oAction++;\n            o->oFaceAnglePitch = 0x400;\n            o->oFaceAngleYaw = 0x7500;\n            o->oFaceAngleRoll = -0x3700;\n            o->oIntroPeachDistToCamera = 186.0f;\n            o->oIntroPeachPitchFromFocus = -9984.0f;\n            o->oIntroPeachYawFromFocus = -768.0f;\n            o->oOpacity = 255;\n            o->header.gfx.animInfo.animFrame = 100;\n            break;\n\n        case 1:\n            intro_peach_set_pos_and_opacity(o, 0.0f, 0.0f);\n\n            if (o->oTimer > 20) {\n                o->oAction++;\n            }\n            break;\n\n        case 2:\n            intro_peach_set_pos_and_opacity(o, 255.0f, 3.0f);\n\n            if ((o->oTimer > 100) && (get_dialog_id() == DIALOG_NONE)) {\n                o->oAction++;\n            }\n            break;\n\n        case 3:\n            intro_peach_set_pos_and_opacity(o, 0.0f, 8.0f);\n\n            if (o->oTimer > 60) {\n                obj_mark_for_deletion(o);\n            }\n            break;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/intro_scene.inc.c",
    "content": "// intro_scene.inc.c\n\nvoid spawn_child_obj_relative(struct Object *parent, s16 xOffset, s16 yOffset, s16 zOffset,\n                              s16 pitchOffset, s16 yawOffset, s16 rollOffset,\n                              s16 forwardVel, s32 model, const BehaviorScript *behavior) {\n    struct Object *obj = spawn_object(parent, model, behavior);\n\n    obj->header.gfx.animInfo.animFrame = random_float() * 6.0f;\n    obj->oEndBirdUnk104 = sCutsceneVars[9].point[0];\n\n    sCutsceneVars[9].point[0] += 1.0f;\n\n    obj->oPosX += xOffset;\n    obj->oPosY += yOffset;\n\n    if (gCutsceneTimer > 700) {\n        obj->oPosY += -150.0f;\n    }\n\n    obj->oPosZ += zOffset;\n    obj->oMoveAnglePitch += pitchOffset;\n    obj->oMoveAngleYaw += yawOffset;\n    obj->oMoveAngleRoll += rollOffset;\n    obj->oForwardVel = forwardVel;\n}\n\nvoid bhv_intro_scene_loop(void) {\n    UNUSED struct Object *obj;\n\n    if (gCutsceneObjSpawn != 0) {\n        o->oPosX = gCamera->pos[0];\n        o->oPosY = gCamera->pos[1];\n        o->oPosZ = gCamera->pos[2];\n\n        o->oMoveAnglePitch = 0;\n        o->oMoveAngleYaw = 0;\n\n        switch (gCutsceneObjSpawn) {\n            case 6:\n                obj = spawn_object(o, MODEL_LAKITU, bhvBeginningLakitu);\n                break;\n\n            case 5:\n                obj = spawn_object(o, MODEL_PEACH, bhvBeginningPeach);\n                break;\n\n            case 7:\n                spawn_child_obj_relative(\n                    o, 0, 205, 500, 0x1000, 0x6000, -0x1E00, 25, MODEL_BIRDS, bhvEndBirds1);\n                spawn_child_obj_relative(\n                    o, 0, 205, 800, 0x1800, 0x6000, -0x1400, 35, MODEL_BIRDS, bhvEndBirds1);\n                spawn_child_obj_relative(\n                    o, -100, 300, 500, 0x800, 0x6000, 0, 25, MODEL_BIRDS, bhvEndBirds1);\n                spawn_child_obj_relative(\n                    o, 100, -200, 800, 0, 0x4000, 0x1400, 45, MODEL_BIRDS, bhvEndBirds1);\n                spawn_child_obj_relative(\n                    o, -80, 300, 350, 0x1800, 0x5000, 0xA00, 35, MODEL_BIRDS, bhvEndBirds1);\n                spawn_child_obj_relative(\n                    o, -300, 300, 500, 0x800, 0x6000, 0x2800, 25, MODEL_BIRDS, bhvEndBirds1);\n                spawn_child_obj_relative(\n                    o, -400, -200, 800, 0, 0x4000, -0x1400, 45, MODEL_BIRDS, bhvEndBirds1);\n                break;\n\n            case 9:\n                spawn_child_obj_relative(\n                    o, 50, 205, 500, 0x1000, 0x6000, 0, 35, MODEL_BIRDS, bhvEndBirds1);\n                spawn_child_obj_relative(\n                    o, 0, 285, 800, 0x1800, 0x6000, 0, 35, MODEL_BIRDS, bhvEndBirds1);\n                break;\n\n            case 8:\n                spawn_child_obj_relative(\n                    o, -100, -100, -700, 0, 0, -0xF00, 25, MODEL_BIRDS, bhvEndBirds2);\n                spawn_child_obj_relative(\n                    o, -250, 255, -200, 0, 0, -0x1400, 25, MODEL_BIRDS, bhvEndBirds2);\n                spawn_child_obj_relative(\n                    o, -100, 155, -600, 0, 0, -0x500, 35, MODEL_BIRDS, bhvEndBirds2);\n                spawn_child_obj_relative(\n                    o, 250, 200, -1200, 0, 0, -0x700, 25, MODEL_BIRDS, bhvEndBirds2);\n                spawn_child_obj_relative(\n                    o, -250, 255, -700, 0, 0, 0, 25, MODEL_BIRDS, bhvEndBirds2);\n                break;\n        }\n\n        gCutsceneObjSpawn = 0;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/jrb_ship.inc.c",
    "content": "// jrb_ship.inc.c\n\nstruct ObjectHitbox sSkullSlidingBoxHitbox = {\n    /* interactType:      */ INTERACT_DAMAGE,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 1,\n    /* health:            */ 1,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 130,\n    /* height:            */ 100,\n    /* hurtboxRadius:     */ 0,\n    /* hurtboxHeight:     */ 0,\n};\n\nvoid bhv_sunken_ship_part_loop(void) {\n    if (o->oDistanceToMario > 10000.0f) {\n        o->oOpacity = 140;\n    } else {\n        o->oOpacity = o->oDistanceToMario * 140.0f / 10000.0;\n    }\n\n    cur_obj_disable_rendering();\n}\n\nvoid bhv_ship_part_3_loop(void) {\n    s16 sp1E = o->oFaceAnglePitch;\n    s16 sp1C = o->oFaceAngleRoll;\n\n    cur_obj_set_pos_to_home_with_debug();\n\n    o->oShipPart3UnkF4 += 0x100;\n\n    o->oFaceAnglePitch = sins(o->oShipPart3UnkF4) * 0x400;\n    o->oFaceAngleRoll = sins(o->oShipPart3UnkF8) * 0x400;\n    o->oAngleVelPitch = o->oFaceAnglePitch - sp1E;\n    o->oAngleVelRoll = o->oFaceAngleRoll - sp1C;\n\n    if (gMarioObject->oPosY > 1000.0f) {\n        cur_obj_play_sound_1(SOUND_ENV_BOAT_ROCKING1);\n    }\n}\n\nvoid bhv_jrb_sliding_box_loop(void) {\n    Mat4 sp60;\n    Vec3f sp54;\n    Vec3f sp48;\n    Vec3s sp40;\n    struct Object *sp3C;\n    struct Surface *sp38;\n    UNUSED Vec3f sp2C;\n    Vec3f sp20;\n    s16 sp1E;\n\n    if (o->oJRBSlidingBoxUnkF4 == NULL) {\n        sp3C = cur_obj_nearest_object_with_behavior(bhvInSunkenShip3);\n\n        if (sp3C != NULL) { // NULL check only for assignment, not for dereference?\n            o->oJRBSlidingBoxUnkF4 = sp3C;\n        }\n\n        o->oParentRelativePosX = o->oPosX - sp3C->oPosX;\n        o->oParentRelativePosY = o->oPosY - sp3C->oPosY;\n        o->oParentRelativePosZ = o->oPosZ - sp3C->oPosZ;\n    } else {\n        sp3C = o->oJRBSlidingBoxUnkF4;\n\n        sp40[0] = sp3C->oFaceAnglePitch;\n        sp40[1] = sp3C->oFaceAngleYaw;\n        sp40[2] = sp3C->oFaceAngleRoll;\n\n        sp54[0] = o->oParentRelativePosX;\n        sp54[1] = o->oParentRelativePosY;\n        sp54[2] = o->oParentRelativePosZ;\n\n        mtxf_rotate_zxy_and_translate(sp60, sp54, sp40);\n        linear_mtxf_mul_vec3f(sp60, sp48, sp54);\n\n        o->oPosX = sp3C->oPosX + sp48[0];\n        o->oPosY = sp3C->oPosY + sp48[1];\n        o->oPosZ = sp3C->oPosZ + sp48[2];\n\n        sp1E = sp3C->oFaceAnglePitch;\n    }\n\n    sp20[0] = o->oPosX;\n    sp20[1] = o->oPosY;\n    sp20[2] = o->oPosZ;\n\n    find_floor(sp20[0], sp20[1], sp20[2], &sp38);\n\n    if (sp38 != NULL) {\n        sp2C[0] = sp38->normal.x;\n        sp2C[1] = sp38->normal.y;\n        sp2C[2] = sp38->normal.z;\n\n        o->oFaceAnglePitch = sp1E;\n    }\n\n    o->oJRBSlidingBoxUnkFC = sins(o->oJRBSlidingBoxUnkF8) * 20.0f;\n    o->oJRBSlidingBoxUnkF8 += 0x100;\n    o->oParentRelativePosZ += o->oJRBSlidingBoxUnkFC;\n\n    if (gMarioObject->oPosY > 1000.0f && absf(o->oJRBSlidingBoxUnkFC) > 3.0f) {\n        cur_obj_play_sound_1(SOUND_AIR_ROUGH_SLIDE);\n    }\n\n    obj_set_hitbox(o, &sSkullSlidingBoxHitbox);\n\n    if (!(o->oJRBSlidingBoxUnkF8 & 0x7FFF)) {\n        cur_obj_become_tangible();\n    }\n\n    if (obj_check_if_collided_with_object(o, gMarioObject)) {\n        o->oInteractStatus = 0;\n        cur_obj_become_intangible();\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/jumping_box.inc.c",
    "content": "// jumping_box.inc.c\n\nstruct ObjectHitbox sJumpingBoxHitbox = {\n    /* interactType:      */ INTERACT_GRABBABLE,\n    /* downOffset:        */ 20,\n    /* damageOrCoinValue: */ 0,\n    /* health:            */ 1,\n    /* numLootCoins:      */ 5,\n    /* radius:            */ 150,\n    /* height:            */ 250,\n    /* hurtboxRadius:     */ 150,\n    /* hurtboxHeight:     */ 250,\n};\n\nvoid jumping_box_act_0(void) {\n    if (o->oSubAction == 0) {\n        if (o->oJumpingBoxUnkF8-- < 0) {\n            o->oSubAction++;\n        }\n\n        if (o->oTimer > o->oJumpingBoxUnkF4) {\n            o->oVelY = random_float() * 5.0f + 15.0f;\n            o->oSubAction++;\n        }\n    } else if (o->oMoveFlags & OBJ_MOVE_ON_GROUND) {\n        o->oSubAction = 0;\n        o->oJumpingBoxUnkF8 = random_float() * 60.0f + 30.0f;\n    }\n}\n\nvoid jumping_box_act_1(void) {\n    if (o->oMoveFlags & (OBJ_MOVE_HIT_WALL | OBJ_MOVE_MASK_IN_WATER | OBJ_MOVE_LANDED)) {\n        obj_mark_for_deletion(o);\n        spawn_mist_particles();\n    }\n}\n\nvoid (*sJumpingBoxActions[])(void) = {\n    jumping_box_act_0,\n    jumping_box_act_1,\n};\n\nvoid jumping_box_free_update(void) {\n    cur_obj_set_model(MODEL_BREAKABLE_BOX);\n    cur_obj_scale(0.5f);\n    obj_set_hitbox(o, &sJumpingBoxHitbox);\n    cur_obj_update_floor_and_walls();\n    cur_obj_move_standard(78);\n    cur_obj_call_action_function(sJumpingBoxActions);\n}\n\nvoid bhv_jumping_box_loop(void) {\n    switch (o->oHeldState) {\n        case HELD_FREE:\n            jumping_box_free_update();\n            break;\n\n        case HELD_HELD:\n            obj_copy_pos(o, gMarioObject);\n            cur_obj_set_model(MODEL_BREAKABLE_BOX_SMALL);\n            cur_obj_unrender_set_action_and_anim(-1, 0);\n            break;\n\n        case HELD_THROWN:\n            cur_obj_get_thrown_or_placed(40.0f, 20.0f, 1);\n            break;\n\n        case HELD_DROPPED:\n            cur_obj_get_dropped();\n            o->oAction = 1;\n            break;\n    }\n\n    if (o->oInteractStatus & INT_STATUS_STOP_RIDING) {\n        create_sound_spawner(SOUND_GENERAL_BREAK_BOX);\n        obj_explode_and_spawn_coins(46.0f, 1);\n    }\n\n    o->oInteractStatus = 0;\n}\n"
  },
  {
    "path": "src/game/behaviors/kickable_board.inc.c",
    "content": "// kickable_board.inc.c\n\ns32 check_mario_attacking(UNUSED s32 unused) {\n    if (obj_check_if_collided_with_object(o, gMarioObject)\n        && abs_angle_diff(o->oMoveAngleYaw, gMarioObject->oMoveAngleYaw) > 0x6000) {\n        if (gMarioStates[0].action == ACT_SLIDE_KICK) {\n            return 1;\n        }\n        if (gMarioStates[0].action == ACT_PUNCHING) {\n            return 1;\n        }\n        if (gMarioStates[0].action == ACT_MOVE_PUNCHING) {\n            return 1;\n        }\n        if (gMarioStates[0].action == ACT_SLIDE_KICK_SLIDE) {\n            return 1;\n        }\n        if (gMarioStates[0].action == ACT_JUMP_KICK) {\n            return 2;\n        }\n        if (gMarioStates[0].action == ACT_WALL_KICK_AIR) {\n            return 2;\n        }\n    }\n\n    return 0;\n}\n\nvoid init_kickable_board_rock(void) {\n    o->oKickableBoardF8 = 1600;\n    o->oKickableBoardF4 = 0;\n}\n\nvoid bhv_kickable_board_loop(void) {\n    s32 sp24;\n\n    switch (o->oAction) {\n        case 0:\n            o->oFaceAnglePitch = 0;\n\n            if (check_mario_attacking(0) != 0) {\n                init_kickable_board_rock();\n                o->oAction++;\n            }\n\n            load_object_collision_model();\n            break;\n\n        case 1:\n            o->oFaceAnglePitch = 0;\n            load_object_collision_model();\n            o->oFaceAnglePitch = -sins(o->oKickableBoardF4) * o->oKickableBoardF8;\n\n            if (o->oTimer > 30 && (sp24 = check_mario_attacking(0))) {\n                if (gMarioObject->oPosY > o->oPosY + 160.0f && sp24 == 2) {\n                    o->oAction++;\n                    cur_obj_play_sound_2(SOUND_GENERAL_BUTTON_PRESS_2);\n                } else {\n                    o->oTimer = 0;\n                }\n            }\n\n            if (o->oTimer != 0) {\n                o->oKickableBoardF8 -= 8;\n                if (o->oKickableBoardF8 < 0) {\n                    o->oAction = 0;\n                }\n            } else {\n                init_kickable_board_rock();\n            }\n\n            if (!(o->oKickableBoardF4 & 0x7FFF)) {\n                cur_obj_play_sound_2(SOUND_GENERAL_BUTTON_PRESS_2);\n            }\n\n            o->oKickableBoardF4 += 0x400;\n            break;\n\n        case 2:\n            cur_obj_become_intangible();\n            cur_obj_set_model(MODEL_WF_KICKABLE_BOARD_FELLED);\n\n            o->oAngleVelPitch -= 0x80;\n            o->oFaceAnglePitch += o->oAngleVelPitch;\n\n            if (o->oFaceAnglePitch < -0x4000) {\n                o->oFaceAnglePitch = -0x4000;\n                o->oAngleVelPitch = 0;\n                o->oAction++;\n\n                cur_obj_shake_screen(SHAKE_POS_SMALL);\n                cur_obj_play_sound_2(SOUND_GENERAL_UNKNOWN4);\n            }\n\n            load_object_collision_model();\n            break;\n\n        case 3:\n            load_object_collision_model();\n            break;\n    }\n\n    o->header.gfx.throwMatrix = NULL;\n}\n"
  },
  {
    "path": "src/game/behaviors/king_bobomb.inc.c",
    "content": "// king_bobomb.inc.c\n\n// Copy of geo_update_projectile_pos_from_parent\nGfx *geo_update_held_mario_pos(s32 run, UNUSED struct GraphNode *node, Mat4 mtx) {\n    if (run == TRUE) {\n        Mat4 sp20;\n        struct Object *obj = (struct Object *) gCurGraphNodeObject;\n        if (obj->prevObj != NULL) {\n            create_transformation_from_matrices(sp20, mtx, *gCurGraphNodeCamera->matrixPtr);\n            obj_update_pos_from_parent_transformation(sp20, obj->prevObj);\n            obj_set_gfx_pos_from_pos(obj->prevObj);\n        }\n    }\n\n    return NULL;\n}\n\nvoid bhv_bobomb_anchor_mario_loop(void) {\n    common_anchor_mario_behavior(50.0f, 50.0f, INT_STATUS_MARIO_UNK6);\n}\n\nvoid king_bobomb_act_0(void) {\n#ifndef VERSION_JP\n    o->oForwardVel = 0.0f;\n    o->oVelY = 0.0f;\n#endif\n\n    if (o->oSubAction == 0) {\n        cur_obj_become_intangible();\n        gSecondCameraFocus = o;\n        cur_obj_init_animation_with_sound(5);\n        cur_obj_set_pos_to_home();\n        o->oHealth = 3;\n\n        if (cur_obj_can_mario_activate_textbox_2(500.0f, 100.0f)) {\n            o->oSubAction++;\n            seq_player_lower_volume(SEQ_PLAYER_LEVEL, 60, 40);\n        }\n    } else if (cur_obj_update_dialog_with_cutscene(MARIO_DIALOG_LOOK_UP,\n        DIALOG_FLAG_TURN_TO_MARIO, CUTSCENE_DIALOG, DIALOG_017)) {\n        o->oAction = 2;\n        o->oFlags |= OBJ_FLAG_HOLDABLE;\n    }\n}\n\ns32 mario_is_far_below_object(f32 arg0) {\n    if (arg0 < o->oPosY - gMarioObject->oPosY) {\n        return TRUE;\n    } else {\n        return FALSE;\n    }\n}\n\nvoid king_bobomb_act_2(void) {\n    cur_obj_become_tangible();\n\n    if (o->oPosY - o->oHomeY < -100.0f) { // Thrown off hill\n        o->oAction = 5;\n        cur_obj_become_intangible();\n    }\n\n    if (o->oKingBobombUnk100 == 0) {\n        if (cur_obj_check_anim_frame(15)) {\n            cur_obj_shake_screen(SHAKE_POS_SMALL);\n        }\n\n        if (cur_obj_init_animation_and_check_if_near_end(4)) {\n            o->oKingBobombUnk100++;\n        }\n    } else {\n        if (o->oKingBobombUnk100 == 1) {\n            cur_obj_init_animation_and_anim_frame(11, 7);\n            o->oKingBobombUnk100 = 2;\n        } else {\n            cur_obj_init_animation_with_sound(11);\n        }\n\n        if (o->oKingBobombUnk108 == 0) {\n            o->oForwardVel = 3.0f;\n            cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x100);\n        } else {\n            o->oForwardVel = 0.0f;\n            o->oKingBobombUnk108--;\n        }\n    }\n\n    if (cur_obj_check_grabbed_mario()) {\n        o->oAction = 3;\n    }\n\n    if (mario_is_far_below_object(1200.0f)) {\n        o->oAction = 0;\n        stop_background_music(SEQUENCE_ARGS(4, SEQ_EVENT_BOSS));\n    }\n}\n\nvoid king_bobomb_act_3(void) {\n    if (o->oSubAction == 0) {\n        o->oForwardVel = 0.0f;\n        o->oKingBobombUnk104 = 0;\n        o->oKingBobombUnkFC = 0;\n\n        if (o->oTimer == 0) {\n            cur_obj_play_sound_2(SOUND_OBJ_UNKNOWN3);\n        }\n\n        if (cur_obj_init_animation_and_check_if_near_end(0)) {\n            o->oSubAction++;\n            cur_obj_init_animation_and_anim_frame(1, 0);\n        }\n    } else if (o->oSubAction == 1) {\n        cur_obj_init_animation_with_sound(1);\n        o->oKingBobombUnkFC += player_performed_grab_escape_action();\n\n        print_debug_bottom_up(\"%d\", o->oKingBobombUnkFC);\n\n        if (o->oKingBobombUnkFC > 10) {\n            o->oKingBobombUnk88 = 3;\n            o->oAction = 2;\n            o->oKingBobombUnk108 = 35;\n            o->oInteractStatus &= ~INT_STATUS_GRABBED_MARIO;\n        } else {\n            o->oForwardVel = 3.0f;\n\n            if (o->oKingBobombUnk104 > 20 && cur_obj_rotate_yaw_toward(0, 0x400)) {\n                o->oSubAction++;\n                cur_obj_init_animation_and_anim_frame(9, 22);\n            }\n        }\n\n        o->oKingBobombUnk104++;\n    } else {\n        cur_obj_init_animation_with_sound(9);\n\n        if (cur_obj_check_anim_frame(31)) {\n            o->oKingBobombUnk88 = 2;\n            cur_obj_play_sound_2(SOUND_OBJ_UNKNOWN4);\n        } else if (cur_obj_check_if_near_animation_end()) {\n            o->oAction = 1;\n            o->oInteractStatus &= ~INT_STATUS_GRABBED_MARIO;\n        }\n    }\n}\n\nvoid king_bobomb_act_1(void) {\n    o->oForwardVel = 0.0f;\n    o->oVelY = 0.0f;\n\n    cur_obj_init_animation_with_sound(11);\n\n    o->oMoveAngleYaw = approach_s16_symmetric(o->oMoveAngleYaw, o->oAngleToMario, 0x200);\n\n    if (o->oDistanceToMario < 2500.0f) {\n        o->oAction = 2;\n    }\n\n    if (mario_is_far_below_object(1200.0f)) {\n        o->oAction = 0;\n        stop_background_music(SEQUENCE_ARGS(4, SEQ_EVENT_BOSS));\n    }\n}\n\nvoid king_bobomb_act_6(void) {\n    if (o->oSubAction == 0) {\n        if (o->oTimer == 0) {\n            o->oKingBobombUnk104 = 0;\n\n            cur_obj_play_sound_2(SOUND_OBJ_KING_BOBOMB);\n            cur_obj_play_sound_2(SOUND_OBJ2_KING_BOBOMB_DAMAGE);\n            cur_obj_shake_screen(SHAKE_POS_SMALL);\n            spawn_mist_particles_variable(0, 0, 100.0f);\n\n            o->oInteractType = INTERACT_DAMAGE;\n\n            cur_obj_become_tangible();\n        }\n\n        if (cur_obj_init_animation_and_check_if_near_end(2)) {\n            o->oKingBobombUnk104++;\n        }\n\n        if (o->oKingBobombUnk104 > 3) {\n            o->oSubAction++;\n        }\n    } else if (o->oSubAction == 1) {\n        if (cur_obj_init_animation_and_check_if_near_end(10)) {\n            o->oSubAction++;\n            o->oInteractType = INTERACT_GRABBABLE;\n\n            cur_obj_become_intangible();\n        }\n    } else {\n        cur_obj_init_animation_with_sound(11);\n\n        if (cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x800) == TRUE) {\n            o->oAction = 2;\n        }\n    }\n}\n\nvoid king_bobomb_act_7(void) {\n    cur_obj_init_animation_with_sound(2);\n    if (cur_obj_update_dialog_with_cutscene(MARIO_DIALOG_LOOK_UP,\n        DIALOG_FLAG_TEXT_DEFAULT, CUTSCENE_DIALOG, DIALOG_116)) {\n        create_sound_spawner(SOUND_OBJ_KING_WHOMP_DEATH);\n\n        cur_obj_hide();\n        cur_obj_become_intangible();\n\n        spawn_mist_particles_variable(0, 0, 200.0f);\n        spawn_triangle_break_particles(20, MODEL_DIRT_ANIMATION, 3.0f, 4);\n        cur_obj_shake_screen(SHAKE_POS_SMALL);\n\n#ifndef VERSION_JP\n        cur_obj_spawn_star_at_y_offset(2000.0f, 4500.0f, -4500.0f, 200.0f);\n#else\n        o->oPosY += 100.0f;\n        spawn_default_star(2000.0f, 4500.0f, -4500.0f);\n#endif\n\n        o->oAction = 8;\n    }\n}\n\nvoid king_bobomb_act_8(void) {\n    if (o->oTimer == 60) {\n        stop_background_music(SEQUENCE_ARGS(4, SEQ_EVENT_BOSS));\n    }\n}\n\nvoid king_bobomb_act_4(void) { // bobomb been thrown\n    if (o->oPosY - o->oHomeY > -100.0f) { // not thrown off hill\n        if (o->oMoveFlags & OBJ_MOVE_LANDED) {\n            o->oHealth--;\n\n            o->oForwardVel = 0.0f;\n            o->oVelY = 0.0f;\n\n            cur_obj_play_sound_2(SOUND_OBJ_KING_BOBOMB);\n\n            if (o->oHealth != 0) {\n                o->oAction = 6;\n            } else {\n                o->oAction = 7;\n            }\n        }\n    } else if (o->oSubAction == 0) {\n        if (o->oMoveFlags & OBJ_MOVE_ON_GROUND) {\n            o->oForwardVel = 0.0f;\n            o->oVelY = 0.0f;\n\n            o->oSubAction++;\n        } else if (o->oMoveFlags & OBJ_MOVE_LANDED) {\n            cur_obj_play_sound_2(SOUND_OBJ_KING_BOBOMB);\n        }\n    } else {\n        if (cur_obj_init_animation_and_check_if_near_end(10)) {\n            o->oAction = 5; // Go back to top of hill\n        }\n\n        o->oSubAction++;\n    }\n}\n\nvoid king_bobomb_act_5(void) { // bobomb returns home\n    switch (o->oSubAction) {\n        case 0:\n            if (o->oTimer == 0) {\n                cur_obj_play_sound_2(SOUND_OBJ_KING_BOBOMB_JUMP);\n            }\n\n            o->oKingBobombUnkF8 = 1;\n\n            cur_obj_init_animation_and_extend_if_at_end(8);\n            o->oMoveAngleYaw = cur_obj_angle_to_home();\n\n            if (o->oPosY < o->oHomeY) {\n                o->oVelY = 100.0f;\n            } else {\n                arc_to_goal_pos(&o->oHomeX, &o->oPosX, 100.0f, -4.0f);\n                o->oSubAction++;\n            }\n            break;\n\n        case 1:\n            cur_obj_init_animation_and_extend_if_at_end(8);\n\n            if (o->oVelY < 0 && o->oPosY < o->oHomeY) {\n                o->oPosY = o->oHomeY;\n                o->oVelY = 0;\n                o->oForwardVel = 0;\n                o->oGravity = -4.0f;\n\n                o->oKingBobombUnkF8 = 0;\n\n                cur_obj_init_animation_with_sound(7);\n                cur_obj_play_sound_2(SOUND_OBJ_KING_BOBOMB);\n                cur_obj_shake_screen(SHAKE_POS_SMALL);\n\n                o->oSubAction++;\n            }\n            break;\n\n        case 2:\n            if (cur_obj_init_animation_and_check_if_near_end(7)) {\n                o->oSubAction++;\n            }\n            break;\n\n        case 3:\n            if (mario_is_far_below_object(1200.0f)) {\n                o->oAction = 0;\n                stop_background_music(SEQUENCE_ARGS(4, SEQ_EVENT_BOSS));\n            }\n\n            if (cur_obj_can_mario_activate_textbox_2(500.0f, 100.0f)) {\n                o->oSubAction++;\n            }\n            break;\n\n        case 4:\n            if (cur_obj_update_dialog_with_cutscene(MARIO_DIALOG_LOOK_UP,\n                DIALOG_FLAG_TURN_TO_MARIO, CUTSCENE_DIALOG, DIALOG_128)) {\n                o->oAction = 2;\n            }\n            break;\n    }\n}\n\nvoid (*sKingBobombActions[])(void) = {\n    king_bobomb_act_0,\n    king_bobomb_act_1,\n    king_bobomb_act_2,\n    king_bobomb_act_3,\n    king_bobomb_act_4,\n    king_bobomb_act_5,\n    king_bobomb_act_6,\n    king_bobomb_act_7,\n    king_bobomb_act_8,\n};\n\nstruct SoundState sKingBobombSoundStates[] = {\n    { 0, 0, 0, NO_SOUND },\n    { 1, 1, 20, SOUND_OBJ_POUNDING1_HIGHPRIO },\n    { 0, 0, 0, NO_SOUND },\n    { 0, 0, 0, NO_SOUND },\n    { 1, 15, -1, SOUND_OBJ_POUNDING1_HIGHPRIO },\n    { 0, 0, 0, NO_SOUND },\n    { 0, 0, 0, NO_SOUND },\n    { 0, 0, 0, NO_SOUND },\n    { 0, 0, 0, NO_SOUND },\n    { 1, 33, -1, SOUND_OBJ_POUNDING1_HIGHPRIO },\n    { 0, 0, 0, NO_SOUND },\n    { 1, 1, 15, SOUND_OBJ_POUNDING1_HIGHPRIO },\n};\n\nvoid king_bobomb_move(void) {\n    cur_obj_update_floor_and_walls();\n\n    if (o->oKingBobombUnkF8 == 0) {\n        cur_obj_move_standard(-78);\n    } else {\n        cur_obj_move_using_fvel_and_gravity();\n    }\n\n    cur_obj_call_action_function(sKingBobombActions);\n    exec_anim_sound_state(sKingBobombSoundStates);\n\n    if (o->oDistanceToMario < 5000.0f) {\n        cur_obj_enable_rendering();\n    } else {\n        cur_obj_disable_rendering();\n    }\n}\n\nvoid bhv_king_bobomb_loop(void) {\n    f32 sp34 = 20.0f;\n    f32 sp30 = 50.0f;\n    UNUSED u8 filler[8];\n\n    o->oInteractionSubtype |= INT_SUBTYPE_GRABS_MARIO;\n\n    switch (o->oHeldState) {\n        case HELD_FREE:\n            king_bobomb_move();\n            break;\n        case HELD_HELD:\n            cur_obj_unrender_set_action_and_anim(6, 1);\n            break;\n        case HELD_THROWN:\n        case HELD_DROPPED:\n            cur_obj_get_thrown_or_placed(sp34, sp30, 4);\n            cur_obj_become_intangible();\n            o->oPosY += 20.0f;\n            break;\n    }\n\n    o->oInteractStatus = 0;\n}\n"
  },
  {
    "path": "src/game/behaviors/klepto.inc.c",
    "content": "// klepto.inc.c\n\nstatic struct ObjectHitbox sKleptoHitbox = {\n    /* interactType:      */ INTERACT_HIT_FROM_BELOW,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 0,\n    /* health:            */ 1,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 160,\n    /* height:            */ 250,\n    /* hurtboxRadius:     */ 80,\n    /* hurtboxHeight:     */ 200,\n};\n\nstatic Vec3f sKleptoTargetPositions[] = {\n    { 2200.0f, 1250.0f, -2820.0f },\n    { -6200.0f, 1250.0f, -2800.0f },\n    { -6200.0f, 1250.0f, 1150.0f },\n};\n\nstatic u8 sKleptoAttackHandlers[] = { 2, 2, 5, 5, 2, 2 };\n\nstatic void klepto_target_mario(void) {\n    o->oKleptoDistanceToTarget = lateral_dist_between_objects(gMarioObject, o);\n    o->oKleptoUnk1B0 = obj_turn_pitch_toward_mario(250.0f, 0);\n    o->oKleptoYawToTarget = o->oAngleToMario;\n    o->oKleptoUnk1AE = -60;\n}\n\nstatic s32 klepto_set_and_check_if_anim_at_end(void) {\n    if (o->oSoundStateID == 6) {\n        cur_obj_set_anim_if_at_end(5);\n    } else if (o->oSoundStateID == 5) {\n        if (cur_obj_set_anim_if_at_end(0)) {\n            cur_obj_play_sound_2(SOUND_GENERAL_SWISH_WATER);\n            o->header.gfx.animInfo.animFrame = 9;\n        }\n    } else {\n        if (cur_obj_check_anim_frame(9)) {\n            cur_obj_play_sound_2(SOUND_GENERAL_SWISH_WATER);\n        }\n        return TRUE;\n    }\n\n    return FALSE;\n}\n\nstatic void klepto_anim_dive(void) {\n    if (o->oKleptoUnk1AE > 0) {\n        if (o->oKleptoUnk1B0 < -400) {\n            o->oKleptoUnk1AE = 0;\n        } else {\n            if (o->oSoundStateID == 0) {\n                if (cur_obj_check_anim_frame(9)) {\n                    cur_obj_play_sound_2(SOUND_GENERAL_SWISH_WATER);\n                    cur_obj_init_animation_with_sound(6);\n                }\n            } else if (--o->oKleptoUnk1AE == 0) {\n                o->oKleptoUnk1AE = -random_linear_offset(60, 60);\n            }\n\n            obj_move_pitch_approach(400, 10);\n        }\n    } else {\n        obj_move_pitch_approach(o->oKleptoUnk1B0, 600);\n        if (klepto_set_and_check_if_anim_at_end()) {\n            if (o->oKleptoUnk1AE != 0) {\n                o->oKleptoUnk1AE++;\n            } else if (o->oKleptoUnk1B0 > -100) {\n                o->oKleptoUnk1AE = random_linear_offset(60, 60);\n            }\n        }\n    }\n\n    obj_face_pitch_approach(0, 1000);\n}\n\nvoid bhv_klepto_init(void) {\n    if (o->oBhvParams2ndByte != 0) {\n        o->oAnimState = KLEPTO_ANIM_STATE_HOLDING_STAR;\n    } else {\n        o->oKleptoStartPosX = o->oPosX;\n        o->oKleptoStartPosY = o->oPosY;\n        o->oKleptoStartPosZ = o->oPosZ;\n\n        if (save_file_get_flags() & SAVE_FLAG_CAP_ON_KLEPTO) {\n            o->oAnimState = KLEPTO_ANIM_STATE_HOLDING_CAP;\n        } else {\n            o->oAction = KLEPTO_ACT_WAIT_FOR_MARIO;\n        }\n    }\n}\n\nstatic void klepto_change_target(void) {\n    s32 newTarget = 0;\n\n    if (o->oDistanceToMario > 2000.0f) {\n        s32 i;\n        f32 dx;\n        f32 dz;\n        f32 targetDist;\n        f32 minTargetDist = 99999.0f;\n\n        for (i = 0; i < 3; i++) {\n            dx = gMarioObject->oPosX - sKleptoTargetPositions[i][0];\n            dz = gMarioObject->oPosZ - sKleptoTargetPositions[i][2];\n\n            targetDist = sqrtf(dx * dx + dz * dz);\n            if (targetDist < minTargetDist) {\n                minTargetDist = targetDist;\n                newTarget = i;\n            }\n        }\n    } else {\n        newTarget = random_u16() % 3;\n    }\n\n    o->oKleptoUnkF8 = 400 * absi(newTarget - o->oKleptoTargetNumber);\n    o->oKleptoTargetNumber = newTarget;\n\n    o->oHomeX = sKleptoTargetPositions[o->oKleptoTargetNumber][0];\n    o->oHomeY = sKleptoTargetPositions[o->oKleptoTargetNumber][1] + o->oKleptoUnkF8;\n    o->oHomeZ = sKleptoTargetPositions[o->oKleptoTargetNumber][2];\n\n    o->oKleptoUnkFC = cur_obj_lateral_dist_to_home() / 2;\n}\n\nstatic void klepto_circle_target(f32 radius, f32 targetSpeed) {\n    if (o->oAnimState != KLEPTO_ANIM_STATE_HOLDING_NOTHING\n        && ((o->oTimer > 60 && o->oDistanceToMario > 2000.0f)\n            || o->oTimer >= o->oKleptoTimeUntilTargetChange)) {\n        klepto_change_target();\n        o->oKleptoTimeUntilTargetChange = random_linear_offset(300, 300);\n        o->oAction = KLEPTO_ACT_APPROACH_TARGET_HOLDING;\n    } else {\n        s16 turnAmount = 0x4000 - atan2s(radius, o->oKleptoDistanceToTarget - radius);\n        f32 accel = 0.05f;\n\n        if ((s16)(o->oMoveAngleYaw - o->oKleptoYawToTarget) < 0) {\n            turnAmount = -turnAmount;\n        }\n\n        o->oKleptoYawToTarget += turnAmount;\n        klepto_anim_dive();\n\n        //! The multiplied value is sometimes out of range for an s16 during the s32 -> s16 cast,\n        //  which might invert sign.\n        turnAmount = (s16)(s32)(abs_angle_diff(o->oKleptoYawToTarget, o->oMoveAngleYaw)\n                                * (0.03f * o->oKleptoSpeed));\n        clamp_s16(&turnAmount, 400, 700);\n        obj_rotate_yaw_and_bounce_off_walls(o->oKleptoYawToTarget, turnAmount);\n\n        if (o->oKleptoSpeed > 50.0f) {\n            accel = 2.0f;\n        }\n\n        approach_f32_ptr(&o->oKleptoSpeed, targetSpeed, accel);\n    }\n}\n\nstatic void klepto_approach_target(f32 targetSpeed) {\n    if (o->oKleptoDistanceToTarget < 1800.0f) {\n        o->oAction = KLEPTO_ACT_CIRCLE_TARGET_HOLDING;\n    } else {\n        if (o->oKleptoUnkFC > 0.0f) {\n            if ((o->oKleptoUnkFC -= o->oForwardVel) <= 0.0f) {\n                o->oHomeY -= o->oKleptoUnkF8;\n            }\n        }\n\n        klepto_anim_dive();\n        obj_rotate_yaw_and_bounce_off_walls(o->oKleptoYawToTarget, 400);\n        approach_f32_ptr(&o->oKleptoSpeed, targetSpeed, 0.05f);\n    }\n}\n\nstatic void klepto_act_wait_for_mario(void) {\n    if (o->oKleptoDistanceToTarget < 1000.0f) {\n        klepto_target_mario();\n        if (o->oKleptoDistanceToTarget < 1000.0f) {\n            o->oAction = KLEPTO_ACT_TURN_TOWARD_MARIO;\n            o->oFlags &= ~OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW;\n        }\n    }\n\n    klepto_circle_target(300.0f, 40.0f);\n}\n\nstatic void klepto_act_turn_toward_mario(void) {\n    klepto_target_mario();\n\n    if (klepto_set_and_check_if_anim_at_end() && cur_obj_check_if_at_animation_end()\n        && o->oKleptoDistanceToTarget > 800.0f\n        && abs_angle_diff(o->oAngleToMario, o->oFaceAngleYaw) < 0x800 && o->oKleptoUnk1B0 < 0x400) {\n        cur_obj_play_sound_2(SOUND_OBJ_KLEPTO1);\n        o->oAction = KLEPTO_ACT_DIVE_AT_MARIO;\n        o->oMoveAngleYaw = o->oFaceAngleYaw;\n        o->oFlags |= OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW;\n\n        cur_obj_init_animation_with_sound(3);\n    }\n\n    klepto_circle_target(1000.0f, 40.0f);\n    obj_face_yaw_approach(o->oAngleToMario, 1000);\n}\n\nstatic void klepto_act_dive_at_mario(void) {\n    approach_f32_ptr(&o->oKleptoSpeed, 60.0f, 10.0f);\n\n    if (o->oSoundStateID == 2) {\n        if (cur_obj_check_anim_frame(11)) {\n            cur_obj_play_sound_2(SOUND_GENERAL_SWISH_WATER);\n        }\n\n        if (cur_obj_set_anim_if_at_end(0)) {\n            if (o->oAnimState != KLEPTO_ANIM_STATE_HOLDING_NOTHING) {\n                o->oAction = KLEPTO_ACT_CIRCLE_TARGET_HOLDING;\n                o->oKleptoTimeUntilTargetChange = 0;\n            } else {\n                o->oAction = KLEPTO_ACT_WAIT_FOR_MARIO;\n            }\n        }\n    } else {\n        f32 dy = o->oPosY - gMarioObject->oPosY;\n\n        if (o->oSoundStateID == 3) {\n            cur_obj_set_anim_if_at_end(4);\n        } else if (o->oVelY > 0.0f && dy > 200.0f) {\n            cur_obj_init_animation_with_sound(2);\n        }\n\n        o->oKleptoUnk1B0 = -0x3000;\n\n        if (o->oAnimState == KLEPTO_ANIM_STATE_HOLDING_NOTHING) {\n            if (o->oSubAction == 0) {\n                o->oKleptoUnk1B0 = obj_turn_pitch_toward_mario(0.0f, 0);\n                o->oKleptoYawToTarget = o->oAngleToMario;\n\n                if (dy < 160.0f) {\n                    o->oSubAction++;\n                }\n            }\n\n            if (gMarioStates[0].action != ACT_SLEEPING\n                && !(gMarioStates[0].action & (ACT_FLAG_SHORT_HITBOX | ACT_FLAG_BUTT_OR_STOMACH_SLIDE))\n                && o->oDistanceToMario < 200.0f && dy > 50.0f && dy < 90.0f\n                && mario_lose_cap_to_enemy(1)) {\n                o->oAnimState = KLEPTO_ANIM_STATE_HOLDING_CAP;\n            }\n        }\n    }\n\n    obj_move_pitch_approach(o->oKleptoUnk1B0, 600);\n    obj_face_pitch_approach(o->oMoveAnglePitch, 600);\n    obj_rotate_yaw_and_bounce_off_walls(o->oKleptoYawToTarget, 600);\n}\n\nstatic void klepto_act_struck_by_mario(void) {\n    cur_obj_init_animation_with_sound(1);\n\n    obj_face_pitch_approach(0, 800);\n    obj_face_yaw_approach(o->oMoveAngleYaw + 0x8000, 800);\n    obj_face_roll_approach(0, 800);\n\n    if (cur_obj_check_if_near_animation_end()) {\n        o->oAction = KLEPTO_ACT_RETREAT;\n        o->oGravity = 0.0f;\n\n        o->oMoveAnglePitch = -obj_get_pitch_from_vel();\n        o->oKleptoSpeed = sqrtf(o->oForwardVel * o->oForwardVel + o->oVelY * o->oVelY);\n\n        o->oHomeX = o->oPosX;\n        o->oHomeY = o->oPosY + 500.0f;\n        o->oHomeZ = o->oPosZ;\n    }\n}\n\nstatic void klepto_act_retreat(void) {\n    cur_obj_init_animation_with_sound(0);\n    approach_f32_ptr(&o->oKleptoSpeed, 40.0f, 10.0f);\n\n    obj_move_pitch_approach(o->oKleptoUnk1B0, 1000);\n\n    obj_face_pitch_approach(o->oMoveAnglePitch, 1000);\n    obj_rotate_yaw_and_bounce_off_walls(o->oKleptoYawToTarget, 600);\n\n    if (obj_face_yaw_approach(o->oMoveAngleYaw, 1000)\n        && abs_angle_diff(o->oFaceAnglePitch, o->oMoveAnglePitch) == 0) {\n        o->oAction = KLEPTO_ACT_RESET_POSITION;\n        o->oHomeY = 1500.0f;\n        o->oKleptoUnk1AE = -100;\n        o->oFlags |= OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW;\n        cur_obj_become_tangible();\n    }\n}\n\nstatic void klepto_act_reset_position(void) {\n    if (o->oTimer < 300) {\n        klepto_circle_target(300.0f, 20.0f);\n    } else if (o->oBhvParams2ndByte != 0) {\n        o->oHomeX = -2000.0f;\n        o->oHomeZ = -1000.0f;\n        o->oHomeY = o->oKleptoDistanceToTarget = 9999.0f;\n\n        if (o->oPosY > 5000.0f) {\n            obj_mark_for_deletion(o);\n        } else {\n            klepto_approach_target(20.0f);\n        }\n    } else {\n        o->oAction = KLEPTO_ACT_WAIT_FOR_MARIO;\n        o->oHomeX = o->oKleptoStartPosX;\n        o->oHomeY = o->oKleptoStartPosY;\n        o->oHomeZ = o->oKleptoStartPosZ;\n    }\n}\n\nvoid obj_set_speed_to_zero(void) {\n    o->oForwardVel = o->oVelY = 0.0f;\n}\n\nvoid bhv_klepto_update(void) {\n    UNUSED u8 filler[4];\n\n    cur_obj_update_floor_and_walls();\n\n    o->oKleptoDistanceToTarget = cur_obj_lateral_dist_to_home();\n    o->oKleptoUnk1B0 = obj_get_pitch_to_home(o->oKleptoDistanceToTarget);\n    o->oKleptoYawToTarget = cur_obj_angle_to_home();\n\n    if (o->oAction == KLEPTO_ACT_STRUCK_BY_MARIO) {\n        klepto_act_struck_by_mario();\n    } else {\n        obj_compute_vel_from_move_pitch(o->oKleptoSpeed);\n\n        switch (o->oAction) {\n            case KLEPTO_ACT_CIRCLE_TARGET_HOLDING:\n                klepto_circle_target(300.0f, 40.0f);\n                break;\n            case KLEPTO_ACT_APPROACH_TARGET_HOLDING:\n                klepto_approach_target(50.0f);\n                break;\n            case KLEPTO_ACT_WAIT_FOR_MARIO:\n                klepto_act_wait_for_mario();\n                break;\n            case KLEPTO_ACT_TURN_TOWARD_MARIO:\n                klepto_act_turn_toward_mario();\n                break;\n            case KLEPTO_ACT_DIVE_AT_MARIO:\n                klepto_act_dive_at_mario();\n                break;\n            case KLEPTO_ACT_RESET_POSITION:\n                klepto_act_reset_position();\n                break;\n            case KLEPTO_ACT_RETREAT:\n                klepto_act_retreat();\n                break;\n        }\n\n        if (obj_handle_attacks(&sKleptoHitbox, o->oAction, sKleptoAttackHandlers)) {\n            cur_obj_play_sound_2(SOUND_OBJ_KLEPTO2);\n\n            if (o->oAnimState == KLEPTO_ANIM_STATE_HOLDING_CAP) {\n                save_file_clear_flags(SAVE_FLAG_CAP_ON_KLEPTO);\n                spawn_object(o, MODEL_MARIOS_CAP, bhvNormalCap);\n            } else if (o->oAnimState == KLEPTO_ANIM_STATE_HOLDING_STAR) {\n                spawn_default_star(-5550.0f, 300.0f, -930.0f);\n            }\n\n            o->oAnimState = KLEPTO_ANIM_STATE_HOLDING_NOTHING;\n            o->oAction = KLEPTO_ACT_STRUCK_BY_MARIO;\n            o->oGravity = -2.0f;\n\n            o->oMoveAngleYaw = o->oAngleToMario + 0x8000;\n            o->oFlags &= ~OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW;\n\n            cur_obj_become_intangible();\n        } else if (gMarioStates[0].action == ACT_SLEEPING\n                   || (gMarioStates[0].action\n                       & (ACT_FLAG_SHORT_HITBOX | ACT_FLAG_BUTT_OR_STOMACH_SLIDE))) {\n            cur_obj_become_intangible();\n        } else {\n            cur_obj_become_tangible();\n        }\n    }\n\n    obj_roll_to_match_yaw_turn(o->oKleptoYawToTarget, 0x3000, 600);\n    cur_obj_move_standard(78);\n}\n"
  },
  {
    "path": "src/game/behaviors/koopa.inc.c",
    "content": "\n/**\n * Behavior for bhvKoopa and bhvKoopaRaceEndpoint.\n * bhvKoopa includes normal, unshelled, tiny, and Koopa the Quick.\n * When the race begins, koopa the quick sets his parent to bhvKoopaRaceEndpoint\n * which assists in determining the state of the race. It is positioned at the\n * flag.\n */\n\n/**\n * Hitbox for koopa - this is used for every form except Koopa the Quick, which\n * uses a hardcoded soft hitbox.\n */\nstatic struct ObjectHitbox sKoopaHitbox = {\n    /* interactType:      */ INTERACT_KOOPA,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 0,\n    /* health:            */ 0,\n    /* numLootCoins:      */ -1,\n    /* radius:            */ 60,\n    /* height:            */ 40,\n    /* hurtboxRadius:     */ 40,\n    /* hurtboxHeight:     */ 30,\n};\n\n/**\n * Attack handlers for unshelled koopa and tiny shelled koopa.\n */\nstatic u8 sKoopaUnshelledAttackHandlers[] = {\n    /* ATTACK_PUNCH:                 */ ATTACK_HANDLER_KNOCKBACK,\n    /* ATTACK_KICK_OR_TRIP:          */ ATTACK_HANDLER_KNOCKBACK,\n    /* ATTACK_FROM_ABOVE:            */ ATTACK_HANDLER_SQUISHED,\n    /* ATTACK_GROUND_POUND_OR_TWIRL: */ ATTACK_HANDLER_SQUISHED,\n    /* ATTACK_FAST_ATTACK:           */ ATTACK_HANDLER_KNOCKBACK,\n    /* ATTACK_FROM_BELOW:            */ ATTACK_HANDLER_KNOCKBACK,\n};\n\n/**\n * Attack handlers for regular sized shelled koopa.\n */\nstatic u8 sKoopaShelledAttackHandlers[] = {\n    /* ATTACK_PUNCH:                 */ ATTACK_HANDLER_SPECIAL_KOOPA_LOSE_SHELL,\n    /* ATTACK_KICK_OR_TRIP:          */ ATTACK_HANDLER_SPECIAL_KOOPA_LOSE_SHELL,\n    /* ATTACK_FROM_ABOVE:            */ ATTACK_HANDLER_SPECIAL_KOOPA_LOSE_SHELL,\n    /* ATTACK_GROUND_POUND_OR_TWIRL: */ ATTACK_HANDLER_SPECIAL_KOOPA_LOSE_SHELL,\n    /* ATTACK_FAST_ATTACK:           */ ATTACK_HANDLER_SPECIAL_KOOPA_LOSE_SHELL,\n    /* ATTACK_FROM_BELOW:            */ ATTACK_HANDLER_SPECIAL_KOOPA_LOSE_SHELL,\n};\n\n/**\n * Data to control the behavior of each instance of Koopa the Quick.\n */\nstruct KoopaTheQuickProperties {\n    s16 initDialogID;\n    s16 winDialogID;\n    Trajectory const *path;\n    Vec3s starPos;\n};\n\n/**\n * Properties for the BoB race and the THI race.\n */\nstatic struct KoopaTheQuickProperties sKoopaTheQuickProperties[] = {\n    { DIALOG_005, DIALOG_007, bob_seg7_trajectory_koopa, { 3030, 4500, -4600 } },\n    { DIALOG_009, DIALOG_031, thi_seg7_trajectory_koopa, { 7100, -1300, -6000 } },\n};\n\n/**\n * Initialization function.\n */\nvoid bhv_koopa_init(void) {\n    if ((o->oKoopaMovementType = o->oBhvParams2ndByte) == KOOPA_BP_TINY) {\n        // Tiny koopa in THI\n        o->oKoopaMovementType = KOOPA_BP_NORMAL;\n        o->oKoopaAgility = 1.6f / 3.0f;\n        o->oDrawingDistance = 1500.0f;\n        cur_obj_scale(0.8f);\n        o->oGravity = -6.4f / 3.0f;\n    } else if (o->oKoopaMovementType >= KOOPA_BP_KOOPA_THE_QUICK_BASE) {\n        // Koopa the Quick. Race index is 0 for BoB and 1 for THI\n        o->oKoopaTheQuickRaceIndex = o->oKoopaMovementType - KOOPA_BP_KOOPA_THE_QUICK_BASE;\n        o->oKoopaAgility = 4.0f;\n        cur_obj_scale(3.0f);\n    } else {\n        o->oKoopaAgility = 1.0f;\n    }\n}\n\n/**\n * Play the appropriate footstep sound on the two provided animation frames.\n */\nstatic void koopa_play_footstep_sound(s8 animFrame1, s8 animFrame2) {\n    s32 sound;\n\n    if (o->header.gfx.scale[0] > 1.5f) {\n        sound = SOUND_OBJ_KOOPA_THE_QUICK_WALK;\n    } else {\n        sound = SOUND_OBJ_KOOPA_WALK;\n    }\n\n    cur_obj_play_sound_at_anim_range(animFrame1, animFrame2, sound);\n}\n\n/**\n * If mario is close to koopa, and koopa is facing toward mario, then begin\n * running away.\n */\nstatic s32 koopa_check_run_from_mario(void) {\n    if (o->oKoopaDistanceToMario < 300.0f\n        && abs_angle_diff(o->oKoopaAngleToMario, o->oMoveAngleYaw) < 0x3000) {\n        o->oAction = KOOPA_SHELLED_ACT_RUN_FROM_MARIO;\n        return TRUE;\n    }\n\n    return FALSE;\n}\n\n/**\n * Stay still for a while, then change target yaw by 45 degrees and begin\n * walking.\n */\nstatic void koopa_shelled_act_stopped(void) {\n    o->oForwardVel = 0.0f;\n    if (cur_obj_init_anim_and_check_if_end(7)) {\n        o->oAction = KOOPA_SHELLED_ACT_WALK;\n        o->oKoopaTargetYaw = o->oMoveAngleYaw + 0x2000 * (s16) random_sign();\n    }\n}\n\n/**\n * Begin walking, then increment sub-action.\n */\nstatic void koopa_walk_start(void) {\n    obj_forward_vel_approach(3.0f * o->oKoopaAgility, 0.3f * o->oKoopaAgility);\n\n    if (cur_obj_init_anim_and_check_if_end(11)) {\n        o->oSubAction++;\n        o->oKoopaCountdown = random_linear_offset(30, 100);\n    }\n}\n\n/**\n * Walk until oKoopaCountdown hits zero, then increment sub-action.\n */\nstatic void koopa_walk(void) {\n    cur_obj_init_animation_with_sound(9);\n    koopa_play_footstep_sound(2, 17);\n\n    if (o->oKoopaCountdown != 0) {\n        o->oKoopaCountdown--;\n    } else if (cur_obj_check_if_near_animation_end()) {\n        o->oSubAction++;\n    }\n}\n\n/**\n * Stop walking, then enter action KOOPA_SHELLED_ACT_STOPPED.\n */\nstatic void koopa_walk_stop(void) {\n    obj_forward_vel_approach(0.0f, 1.0f * o->oKoopaAgility);\n    if (cur_obj_init_anim_and_check_if_end(10)) {\n        o->oAction = KOOPA_SHELLED_ACT_STOPPED;\n    }\n}\n\n/**\n * Walk for a while, then come to a stop. During this time, turn toward the\n * target yaw.\n */\nstatic void koopa_shelled_act_walk(void) {\n    if (o->oKoopaTurningAwayFromWall) {\n        o->oKoopaTurningAwayFromWall = obj_resolve_collisions_and_turn(o->oKoopaTargetYaw, 0x200);\n    } else {\n        // If far from home, then begin turning toward home\n        if (o->oDistanceToMario >= 25000.0f) {\n            o->oKoopaTargetYaw = o->oAngleToMario;\n        }\n\n        o->oKoopaTurningAwayFromWall = obj_bounce_off_walls_edges_objects(&o->oKoopaTargetYaw);\n        cur_obj_rotate_yaw_toward(o->oKoopaTargetYaw, 0x200);\n    }\n\n    switch (o->oSubAction) {\n        case KOOPA_SHELLED_SUB_ACT_START_WALK:\n            koopa_walk_start();\n            break;\n        case KOOPA_SHELLED_SUB_ACT_WALK:\n            koopa_walk();\n            break;\n        case KOOPA_SHELLED_SUB_ACT_STOP_WALK:\n            koopa_walk_stop();\n            break;\n    }\n\n    koopa_check_run_from_mario();\n}\n\n/**\n * Run while turning away from mario. Come to a stop once mario is far enough\n * away.\n */\nstatic void koopa_shelled_act_run_from_mario(void) {\n    cur_obj_init_animation_with_sound(1);\n    koopa_play_footstep_sound(0, 11);\n\n    // If far from home, run toward it\n    if (o->oDistanceToMario >= 25000.0f) {\n        o->oAngleToMario += 0x8000;\n        o->oDistanceToMario = 0.0f;\n    }\n\n    if (o->oTimer > 30 && o->oDistanceToMario > 800.0f) {\n        if (obj_forward_vel_approach(0.0f, 1.0f)) {\n            o->oAction = KOOPA_SHELLED_ACT_STOPPED;\n        }\n    } else {\n        cur_obj_rotate_yaw_toward(o->oAngleToMario + 0x8000, 0x400);\n        obj_forward_vel_approach(17.0f, 1.0f);\n    }\n}\n\n/**\n * If on the ground, decelerate. Generate dust if moving fast enough.\n */\nstatic void koopa_dive_update_speed(f32 decel) {\n    if (o->oMoveFlags & OBJ_MOVE_MASK_ON_GROUND) {\n        obj_forward_vel_approach(0.0f, decel);\n        if (o->oForwardVel > 5.0f) {\n            if (!(o->oTimer % 4)) {\n                spawn_object_with_scale(o, MODEL_SMOKE, bhvWhitePuffSmoke2, 1.0f);\n            }\n        }\n    }\n}\n\n/**\n * Slide on the ground and then come to a stop.\n */\nstatic void koopa_shelled_act_lying(void) {\n    if (o->oForwardVel != 0.0f) {\n        if (o->oMoveFlags & OBJ_MOVE_HIT_WALL) {\n            o->oMoveAngleYaw = cur_obj_reflect_move_angle_off_wall();\n        }\n\n        cur_obj_init_anim_extend(5);\n        koopa_dive_update_speed(0.3f);\n    } else if (o->oKoopaCountdown != 0) {\n        o->oKoopaCountdown--;\n        cur_obj_extend_animation_if_at_end();\n    } else if (cur_obj_init_anim_and_check_if_end(6)) {\n        o->oAction = KOOPA_SHELLED_ACT_STOPPED;\n    }\n}\n\n/**\n * Attack handler for regular-sized shelled koopa.\n * Lose shell and enter lying action.\n */\nvoid shelled_koopa_attack_handler(s32 attackType) {\n    if (o->header.gfx.scale[0] > 0.8f) {\n        cur_obj_play_sound_2(SOUND_OBJ_KOOPA_DAMAGE);\n\n        o->oKoopaMovementType = KOOPA_BP_UNSHELLED;\n        o->oAction = KOOPA_UNSHELLED_ACT_LYING;\n        o->oForwardVel = 20.0f;\n\n        // If attacked from the side, get knocked away from mario\n        if (attackType != ATTACK_FROM_ABOVE && attackType != ATTACK_GROUND_POUND_OR_TWIRL) {\n            o->oMoveAngleYaw = obj_angle_to_object(gMarioObject, o);\n        }\n\n        cur_obj_set_model(MODEL_KOOPA_WITHOUT_SHELL);\n        spawn_object(o, MODEL_KOOPA_SHELL, bhvKoopaShell);\n\n        //! Because bob-ombs/corkboxes come after koopa in processing order,\n        //  they can interact with the koopa on the same frame that this\n        //  happens. This causes the koopa to die immediately.\n        cur_obj_become_intangible();\n    } else {\n        // Die if tiny koopa\n        obj_die_if_health_non_positive();\n    }\n}\n\n/**\n * Update function for both regular and tiny shelled koopa.\n */\nstatic void koopa_shelled_update(void) {\n    cur_obj_update_floor_and_walls();\n    obj_update_blinking(&o->oKoopaBlinkTimer, 20, 50, 4);\n\n    switch (o->oAction) {\n        case KOOPA_SHELLED_ACT_STOPPED:\n            koopa_shelled_act_stopped();\n            koopa_check_run_from_mario();\n            break;\n\n        case KOOPA_SHELLED_ACT_WALK:\n            koopa_shelled_act_walk();\n            break;\n\n        case KOOPA_SHELLED_ACT_RUN_FROM_MARIO:\n            koopa_shelled_act_run_from_mario();\n            break;\n\n        case KOOPA_SHELLED_ACT_LYING:\n            koopa_shelled_act_lying();\n            break;\n    }\n\n    if (o->header.gfx.scale[0] > 0.8f) {\n        obj_handle_attacks(&sKoopaHitbox, o->oAction, sKoopaShelledAttackHandlers);\n    } else {\n        // If tiny koopa, die after attacking mario.\n        obj_handle_attacks(&sKoopaHitbox, KOOPA_SHELLED_ACT_DIE, sKoopaUnshelledAttackHandlers);\n        if (o->oAction == KOOPA_SHELLED_ACT_DIE) {\n            obj_die_if_health_non_positive();\n        }\n    }\n\n    cur_obj_move_standard(-78);\n}\n\n/**\n * Attempt to run toward the shell if it exists while still running away from\n * mario. If the shell doesn't exist, run around randomly.\n * When close enough to the shell and with good angle and speed, enter the dive\n * action.\n */\nstatic void koopa_unshelled_act_run(void) {\n    f32 distToShell = 99999.0f;\n    struct Object *shell;\n\n    cur_obj_init_animation_with_sound(3);\n    koopa_play_footstep_sound(0, 6);\n\n    if (o->oKoopaTurningAwayFromWall) {\n        o->oKoopaTurningAwayFromWall = obj_resolve_collisions_and_turn(o->oKoopaTargetYaw, 0x600);\n    } else {\n        // If far from home, then turn toward home\n        if (o->oDistanceToMario >= 25000.0f) {\n            o->oKoopaTargetYaw = o->oAngleToMario;\n        }\n\n        // If shell exists, then turn toward shell\n        shell = cur_obj_find_nearest_object_with_behavior(bhvKoopaShell, &distToShell);\n        if (shell != NULL) {\n            //! This overrides turning toward home\n            o->oKoopaTargetYaw = obj_angle_to_object(o, shell);\n        } else if (!(o->oKoopaTurningAwayFromWall =\n                         obj_bounce_off_walls_edges_objects(&o->oKoopaTargetYaw))) {\n            // Otherwise run around randomly\n            if (o->oKoopaUnshelledTimeUntilTurn != 0) {\n                o->oKoopaUnshelledTimeUntilTurn--;\n            } else {\n                o->oKoopaTargetYaw = obj_random_fixed_turn(0x2000);\n            }\n        }\n\n        // If mario is far away, or our running away from mario coincides with\n        // running toward the shell\n        if (o->oDistanceToMario > 800.0f\n            || (shell != NULL\n                && abs_angle_diff(o->oKoopaTargetYaw, o->oAngleToMario + 0x8000) < 0x2000)) {\n            // then turn toward the shell\n            cur_obj_rotate_yaw_toward(o->oKoopaTargetYaw, 0x600);\n        } else {\n            // otherwise continue running from mario\n            cur_obj_rotate_yaw_toward(o->oAngleToMario + 0x8000, 0x600);\n        }\n    }\n\n    // If we think we have a shot, dive for the shell\n    if (obj_forward_vel_approach(20.0f, 1.0f) && distToShell < 600.0f\n        && abs_angle_diff(o->oKoopaTargetYaw, o->oMoveAngleYaw) < 0xC00) {\n        o->oMoveAngleYaw = o->oKoopaTargetYaw;\n        o->oAction = KOOPA_UNSHELLED_ACT_DIVE;\n        o->oForwardVel *= 1.2f;\n        o->oVelY = distToShell / 20.0f;\n        o->oKoopaCountdown = 20;\n    }\n}\n\n/**\n * Dive and slide along the ground. If close enough to the shell, pick it up,\n * and otherwise enter the running action.\n */\nstatic void koopa_unshelled_act_dive(void) {\n    struct Object *shell;\n    f32 distToShell;\n\n    if (o->oTimer > 10) {\n        cur_obj_become_tangible();\n    }\n\n    if (o->oTimer > 10) {\n        shell = cur_obj_find_nearest_object_with_behavior(bhvKoopaShell, &distToShell);\n\n        // If we got the shell and mario didn't, put on the shell\n        //! The shell comes after koopa in processing order, and the shell is\n        //  responsible for positioning itself under mario.\n        //  If mario has more than 200 speed and is riding the shell, then\n        //  from the perspective of the koopa, the shell is always lagging 200\n        //  units behind mario.\n        //  Using this, we can get the koopa to pick up and despawn its shell\n        //  while mario is riding it.\n        if (shell != NULL && dist_between_objects(shell, gMarioObject) > 200.0f\n            && distToShell < 50.0f) {\n            o->oKoopaMovementType = KOOPA_BP_NORMAL;\n            o->oAction = KOOPA_SHELLED_ACT_LYING;\n            o->oForwardVel *= 0.5f;\n\n            cur_obj_set_model(MODEL_KOOPA_WITH_SHELL);\n            obj_mark_for_deletion(shell);\n            goto end;\n        }\n    }\n\n    if (o->oForwardVel != 0.0f) {\n        if (o->oAction == KOOPA_UNSHELLED_ACT_LYING) {\n            o->oAnimState = 1;\n            cur_obj_init_anim_extend(2);\n        } else {\n            cur_obj_init_anim_extend(5);\n        }\n        koopa_dive_update_speed(0.5f);\n    } else if (o->oKoopaCountdown != 0) {\n        o->oKoopaCountdown--;\n        cur_obj_extend_animation_if_at_end();\n    } else if (cur_obj_init_anim_and_check_if_end(6)) {\n        o->oAction = KOOPA_UNSHELLED_ACT_RUN;\n    }\n\nend:;\n}\n\n/**\n * Unused action function.\n */\nstatic void koopa_unshelled_act_unused3(void) {\n    cur_obj_init_anim_extend(0);\n}\n\n/**\n * Update function for koopa after losing his shell.\n */\nstatic void koopa_unshelled_update(void) {\n    cur_obj_update_floor_and_walls();\n    obj_update_blinking(&o->oKoopaBlinkTimer, 10, 15, 3);\n\n    switch (o->oAction) {\n        case KOOPA_UNSHELLED_ACT_RUN:\n            koopa_unshelled_act_run();\n            break;\n        case KOOPA_UNSHELLED_ACT_DIVE:\n        case KOOPA_UNSHELLED_ACT_LYING:\n            koopa_unshelled_act_dive();\n            break;\n        case KOOPA_UNSHELLED_ACT_UNUSED3:\n            koopa_unshelled_act_unused3();\n            break;\n    }\n\n    obj_handle_attacks(&sKoopaHitbox, o->oAction, sKoopaUnshelledAttackHandlers);\n    cur_obj_move_standard(-78);\n}\n\n/**\n * Wait 50 frames, then play the race starting sound, disable time stop, and\n * optionally begin the timer.\n */\ns32 obj_begin_race(s32 noTimer) {\n    if (o->oTimer == 50) {\n        cur_obj_play_sound_2(SOUND_GENERAL_RACE_GUN_SHOT);\n\n        if (!noTimer) {\n            play_music(SEQ_PLAYER_LEVEL, SEQUENCE_ARGS(4, SEQ_LEVEL_SLIDE), 0);\n\n            level_control_timer(TIMER_CONTROL_SHOW);\n            level_control_timer(TIMER_CONTROL_START);\n\n            o->parentObj->oKoopaRaceEndpointRaceBegun = TRUE;\n        }\n\n        // Unfreeze mario and disable time stop to begin the race\n        set_mario_npc_dialog(MARIO_DIALOG_STOP);\n        disable_time_stop_including_mario();\n    } else if (o->oTimer > 50) {\n        return TRUE;\n    }\n\n    return FALSE;\n}\n\n/**\n * Wait for mario to approach, and then enter the show init text action.\n */\nstatic void koopa_the_quick_act_wait_before_race(void) {\n    koopa_shelled_act_stopped();\n\n    if (o->oKoopaTheQuickInitTextboxCooldown != 0) {\n        o->oKoopaTheQuickInitTextboxCooldown--;\n    } else if (cur_obj_can_mario_activate_textbox_2(400.0f, 400.0f)) {\n        //! The next action doesn't execute until next frame, giving mario one\n        //  frame where he can jump, and thus no longer be ready to speak.\n        //  (On J, he has two frames and doing this enables time stop - see\n        //  cur_obj_update_dialog_with_cutscene for that glitch)\n        o->oAction = KOOPA_THE_QUICK_ACT_SHOW_INIT_TEXT;\n        o->oForwardVel = 0.0f;\n        cur_obj_init_animation_with_sound(7);\n    }\n}\n\n/**\n * Display the dialog asking mario if he wants to race. Begin the race or\n * return to the waiting action.\n */\nstatic void koopa_the_quick_act_show_init_text(void) {\n    s32 response = obj_update_race_proposition_dialog(\n        sKoopaTheQuickProperties[o->oKoopaTheQuickRaceIndex].initDialogID);\n\n    if (response == DIALOG_RESPONSE_YES) {\n        UNUSED u8 filler[4];\n\n        gMarioShotFromCannon = FALSE;\n        o->oAction = KOOPA_THE_QUICK_ACT_RACE;\n        o->oForwardVel = 0.0f;\n\n        o->parentObj = cur_obj_nearest_object_with_behavior(bhvKoopaRaceEndpoint);\n        o->oPathedStartWaypoint = o->oPathedPrevWaypoint =\n            segmented_to_virtual(sKoopaTheQuickProperties[o->oKoopaTheQuickRaceIndex].path);\n\n        o->oKoopaTurningAwayFromWall = FALSE;\n        o->oFlags |= OBJ_FLAG_ACTIVE_FROM_AFAR;\n    } else if (response == DIALOG_RESPONSE_NO) {\n        o->oAction = KOOPA_THE_QUICK_ACT_WAIT_BEFORE_RACE;\n        o->oKoopaTheQuickInitTextboxCooldown = 60;\n    }\n}\n\n/**\n * If there is a bowling ball nearby, either slow down, or return +/-1 to\n * indicate that the ball is likely to collide.\n */\nstatic s32 koopa_the_quick_detect_bowling_ball(void) {\n    struct Object *ball;\n    f32 distToBall;\n\n    ball = cur_obj_find_nearest_object_with_behavior(bhvBowlingBall, &distToBall);\n\n    if (ball != NULL) {\n        s16 angleToBall = obj_turn_toward_object(o, ball, O_MOVE_ANGLE_YAW_INDEX, 0);\n        f32 ballSpeedInKoopaRunDir = ball->oForwardVel * coss(ball->oMoveAngleYaw - o->oMoveAngleYaw);\n\n        if (abs_angle_diff(o->oMoveAngleYaw, angleToBall) < 0x4000) {\n            // The ball is in front of ktq\n\n            if (distToBall < 400.0f) {\n                if (ballSpeedInKoopaRunDir < o->oForwardVel * 0.7f) {\n                    // The ball is moving slowly or toward him\n                    return 1;\n                } else {\n                    // The ball is moving relatively quickly, so we'll just\n                    // slow down a bit\n                    //! This can go negative and is unbounded. If placed next to\n                    //  oob, ktq can get PU speed.\n                    o->oForwardVel -= 2.0f;\n                }\n            }\n        } else if (distToBall < 300.0f && ballSpeedInKoopaRunDir > o->oForwardVel) {\n            // The ball is coming at ktq from behind, and it's moving faster\n            // than him\n            return -1;\n        }\n    }\n\n    return 0;\n}\n\n/**\n * Play the running animation at a speed proportional to ktq's forward velocity.\n * If he is moving backward, then the animation will play backward.\n */\nstatic void koopa_the_quick_animate_footsteps(void) {\n    //! With high negative speed (using the bowling ball deceleration), we can\n    //  index out of the animation's bounds\n    cur_obj_init_animation_with_accel_and_sound(9, o->oForwardVel * 0.09f);\n    koopa_play_footstep_sound(2, 17);\n}\n\n/**\n * Begin the race, then follow the race path. Avoid bowling balls by slowing\n * down or jumping. After finishing the race, enter the decelerate action.\n */\nstatic void koopa_the_quick_act_race(void) {\n    if (obj_begin_race(FALSE)) {\n        // Hitbox is slightly larger while racing\n        cur_obj_push_mario_away_from_cylinder(180.0f, 300.0f);\n\n        if (cur_obj_follow_path(0) == PATH_REACHED_END) {\n            o->oAction = KOOPA_THE_QUICK_ACT_DECELERATE;\n        } else {\n            f32 downhillSteepness;\n            s32 bowlingBallStatus;\n\n            downhillSteepness = 1.0f + sins((s16)(f32) o->oPathedTargetPitch);\n            cur_obj_rotate_yaw_toward(o->oPathedTargetYaw, (s32)(o->oKoopaAgility * 150.0f));\n\n            switch (o->oSubAction) {\n                case KOOPA_THE_QUICK_SUB_ACT_START_RUN:\n                    koopa_walk_start();\n                    break;\n\n                case KOOPA_THE_QUICK_SUB_ACT_RUN:\n                    koopa_the_quick_animate_footsteps();\n\n                    if (o->parentObj->oKoopaRaceEndpointRaceStatus != 0 && o->oDistanceToMario > 1500.0f\n                        && (o->oPathedPrevWaypointFlags & WAYPOINT_MASK_00FF) < 28) {\n                        // Move faster if mario has already finished the race or\n                        // cheated by shooting from cannon\n                        o->oKoopaAgility = 8.0f;\n                    } else if (o->oKoopaTheQuickRaceIndex != KOOPA_THE_QUICK_BOB_INDEX) {\n                        o->oKoopaAgility = 6.0f;\n                    } else {\n                        o->oKoopaAgility = 4.0f;\n                    }\n\n                    obj_forward_vel_approach(o->oKoopaAgility * 6.0f * downhillSteepness,\n                                             o->oKoopaAgility * 0.1f);\n\n                    // Move upward if we hit a wall, to climb it\n                    if (o->oMoveFlags & OBJ_MOVE_HIT_WALL) {\n                        o->oVelY = 20.0f;\n                    }\n\n                    // If we're about to collide with a bowling ball or we hit an\n                    // edge, jump\n                    bowlingBallStatus = koopa_the_quick_detect_bowling_ball();\n                    if (bowlingBallStatus != 0 || (o->oMoveFlags & OBJ_MOVE_HIT_EDGE)) {\n                        // If the ball is coming at us from behind, then set speed\n                        // to zero to let it move under and past us\n                        if (bowlingBallStatus < 0) {\n                            o->oForwardVel = 0.0f;\n                        }\n\n                        if (bowlingBallStatus != 0\n                            || (o->oPathedPrevWaypointFlags & WAYPOINT_MASK_00FF) >= 8) {\n                            o->oVelY = 80.0f;\n                        } else {\n                            o->oVelY = 40.0f;\n                        }\n\n                        o->oGravity = -6.0f;\n                        o->oSubAction = 2;\n                        o->oMoveFlags = 0;\n\n                        cur_obj_init_animation_with_sound(12);\n                    }\n                    break;\n\n                case KOOPA_THE_QUICK_SUB_ACT_JUMP:\n                    // We could perform a goomba double jump if we could deactivate\n                    // ktq\n                    if (o->oMoveFlags & OBJ_MOVE_MASK_ON_GROUND) {\n                        if (cur_obj_init_anim_and_check_if_end(13)) {\n                            o->oSubAction--;\n                        }\n\n                        koopa_the_quick_detect_bowling_ball();\n                    }\n            }\n        }\n    }\n}\n\n/**\n * Decelerate and then enter the stop action.\n */\nstatic void koopa_the_quick_act_decelerate(void) {\n    obj_forward_vel_approach(3.0f, 1.0f);\n    cur_obj_init_animation_with_accel_and_sound(9, 0.99f);\n\n    if (cur_obj_check_if_near_animation_end()) {\n        o->oAction = KOOPA_THE_QUICK_ACT_STOP;\n        o->oForwardVel = 3.0f;\n    }\n}\n\n/**\n * Stop and then enter the after race action.\n */\nstatic void koopa_the_quick_act_stop(void) {\n    koopa_walk_stop();\n\n    // koopa_walk_stop() was written for shelled koopa, so it enters the\n    // KOOPA_SHELLED_ACT_STOPPED at the end\n    if (o->oAction == KOOPA_SHELLED_ACT_STOPPED) {\n        o->oAction = KOOPA_THE_QUICK_ACT_AFTER_RACE;\n    }\n}\n\n/**\n * Wait for mario to approach, then show text indicating the status of the race.\n * If mario got to the finish line first and didn't use the cannon, then spawn\n * the star.\n */\nstatic void koopa_the_quick_act_after_race(void) {\n    cur_obj_init_animation_with_sound(7);\n\n    if (o->parentObj->oKoopaRaceEndpointDialog == 0) {\n        if (cur_obj_can_mario_activate_textbox_2(400.0f, 400.0f)) {\n            stop_background_music(SEQUENCE_ARGS(4, SEQ_LEVEL_SLIDE));\n\n            // Determine which text to display\n\n            if (o->parentObj->oKoopaRaceEndpointRaceStatus != 0) {\n                if (o->parentObj->oKoopaRaceEndpointRaceStatus < 0) {\n                    // Mario cheated\n                    o->parentObj->oKoopaRaceEndpointRaceStatus = 0;\n                    o->parentObj->oKoopaRaceEndpointDialog = DIALOG_006;\n                } else {\n                    // Mario won\n                    o->parentObj->oKoopaRaceEndpointDialog =\n                        sKoopaTheQuickProperties[o->oKoopaTheQuickRaceIndex].winDialogID;\n                }\n            } else {\n                // KtQ won\n                o->parentObj->oKoopaRaceEndpointDialog = DIALOG_041;\n            }\n\n            o->oFlags &= ~OBJ_FLAG_ACTIVE_FROM_AFAR;\n        }\n    } else if (o->parentObj->oKoopaRaceEndpointDialog > 0) {\n        s32 dialogResponse = cur_obj_update_dialog_with_cutscene(MARIO_DIALOG_LOOK_UP,\n            DIALOG_FLAG_TURN_TO_MARIO, CUTSCENE_DIALOG, o->parentObj->oKoopaRaceEndpointDialog);\n        if (dialogResponse != 0) {\n            o->parentObj->oKoopaRaceEndpointDialog = DIALOG_NONE;\n            o->oTimer = 0;\n        }\n    } else if (o->parentObj->oKoopaRaceEndpointRaceStatus != 0) {\n        spawn_default_star(sKoopaTheQuickProperties[o->oKoopaTheQuickRaceIndex].starPos[0],\n                           sKoopaTheQuickProperties[o->oKoopaTheQuickRaceIndex].starPos[1],\n                           sKoopaTheQuickProperties[o->oKoopaTheQuickRaceIndex].starPos[2]);\n\n        o->parentObj->oKoopaRaceEndpointRaceStatus = 0;\n    }\n}\n\n/**\n * Update function for koopa the quick.\n */\nstatic void koopa_the_quick_update(void) {\n    cur_obj_update_floor_and_walls();\n    obj_update_blinking(&o->oKoopaBlinkTimer, 10, 15, 3);\n\n    switch (o->oAction) {\n        case KOOPA_THE_QUICK_ACT_WAIT_BEFORE_RACE:\n        case KOOPA_THE_QUICK_ACT_UNUSED1:\n            koopa_the_quick_act_wait_before_race();\n            break;\n        case KOOPA_THE_QUICK_ACT_SHOW_INIT_TEXT:\n            koopa_the_quick_act_show_init_text();\n            break;\n        case KOOPA_THE_QUICK_ACT_RACE:\n            koopa_the_quick_act_race();\n            break;\n        case KOOPA_THE_QUICK_ACT_DECELERATE:\n            koopa_the_quick_act_decelerate();\n            break;\n        case KOOPA_THE_QUICK_ACT_STOP:\n            koopa_the_quick_act_stop();\n            break;\n        case KOOPA_THE_QUICK_ACT_AFTER_RACE:\n            koopa_the_quick_act_after_race();\n            break;\n    }\n\n    if (o->parentObj != o) {\n        if (dist_between_objects(o, o->parentObj) < 400.0f) {\n            o->parentObj->oKoopaRaceEndpointKoopaFinished = TRUE;\n        }\n    }\n\n    cur_obj_push_mario_away_from_cylinder(140.0f, 300.0f);\n    cur_obj_move_standard(-78);\n}\n\n/**\n * Update function.\n */\nvoid bhv_koopa_update(void) {\n    // PARTIAL_UPDATE\n\n    o->oDeathSound = SOUND_OBJ_KOOPA_FLYGUY_DEATH;\n\n    if (o->oKoopaMovementType >= KOOPA_BP_KOOPA_THE_QUICK_BASE) {\n        koopa_the_quick_update();\n    } else if (obj_update_standard_actions(o->oKoopaAgility * 1.5f)) {\n        o->oKoopaDistanceToMario = o->oDistanceToMario;\n        o->oKoopaAngleToMario = o->oAngleToMario;\n        treat_far_home_as_mario(1000.0f);\n\n        switch (o->oKoopaMovementType) {\n            case KOOPA_BP_UNSHELLED:\n                koopa_unshelled_update();\n                break;\n            case KOOPA_BP_NORMAL:\n                koopa_shelled_update();\n                break;\n            case KOOPA_BP_KOOPA_THE_QUICK_BOB:\n            case KOOPA_BP_KOOPA_THE_QUICK_THI:\n                koopa_the_quick_update();\n                break;\n        }\n    } else {\n        o->oAnimState = 1;\n    }\n\n    obj_face_yaw_approach(o->oMoveAngleYaw, 0x600);\n}\n\n/**\n * Update function for bhvKoopaRaceEndpoint.\n */\nvoid bhv_koopa_race_endpoint_update(void) {\n    if (o->oKoopaRaceEndpointRaceBegun && !o->oKoopaRaceEndpointRaceEnded) {\n        if (o->oKoopaRaceEndpointKoopaFinished || o->oDistanceToMario < 400.0f) {\n            o->oKoopaRaceEndpointRaceEnded = TRUE;\n            level_control_timer(TIMER_CONTROL_STOP);\n\n            if (!o->oKoopaRaceEndpointKoopaFinished) {\n                play_race_fanfare();\n                if (gMarioShotFromCannon) {\n                    o->oKoopaRaceEndpointRaceStatus = -1;\n                } else {\n                    o->oKoopaRaceEndpointRaceStatus = 1;\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/koopa_shell.inc.c",
    "content": "// koopa_shell.inc.c\n\nstruct ObjectHitbox sKoopaShellHitbox = {\n    /* interactType:      */ INTERACT_KOOPA_SHELL,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 4,\n    /* health:            */ 1,\n    /* numLootCoins:      */ 1,\n    /* radius:            */ 50,\n    /* height:            */ 50,\n    /* hurtboxRadius:     */ 50,\n    /* hurtboxHeight:     */ 50,\n};\n\nvoid koopa_shell_spawn_water_drop(void) {\n    UNUSED u8 filler[4];\n\n    spawn_object(o, MODEL_WAVE_TRAIL, bhvObjectWaveTrail);\n\n    if (gMarioStates[0].forwardVel > 10.0f) {\n        struct Object *drop = spawn_object_with_scale(o, MODEL_WHITE_PARTICLE_SMALL,\n                                                      bhvWaterDroplet, 1.5f);\n        drop->oVelY = random_float() * 30.0f;\n        obj_translate_xz_random(drop, 110.0f);\n    }\n}\n\nvoid bhv_koopa_shell_flame_loop(void) {\n    if (o->oTimer == 0) {\n        o->oMoveAngleYaw = random_u16();\n        o->oVelY = random_float() * 30.0f;\n        o->oGravity = -4.0f;\n        o->oAnimState = random_float() * 10.0f;\n        obj_translate_xz_random(o, 110.0f);\n        o->oKoopaShellFlameScale = 4.0f;\n    }\n\n    cur_obj_update_floor_height();\n    cur_obj_move_using_fvel_and_gravity();\n\n    if (o->oFloorHeight > o->oPosY || o->oTimer > 10) {\n        obj_mark_for_deletion(o);\n    }\n\n    o->oKoopaShellFlameScale += -0.3;\n    cur_obj_scale(o->oKoopaShellFlameScale);\n}\n\nvoid bhv_koopa_shell_flame_spawn(void) {\n    s32 i;\n    for (i = 0; i < 2; i++) {\n        spawn_object(o, MODEL_RED_FLAME, bhvKoopaShellFlame);\n    }\n}\n\nvoid koopa_shell_spawn_sparkles(f32 a) {\n    struct Object *sp1C = spawn_object(o, MODEL_NONE, bhvSparkleSpawn);\n    sp1C->oPosY += a;\n}\n\nvoid bhv_koopa_shell_loop(void) {\n    struct Surface *sp34;\n\n    obj_set_hitbox(o, &sKoopaShellHitbox);\n    cur_obj_scale(1.0f);\n\n    switch (o->oAction) {\n        case 0:\n            cur_obj_update_floor_and_walls();\n            cur_obj_if_hit_wall_bounce_away();\n\n            if (o->oInteractStatus & INT_STATUS_INTERACTED) {\n                o->oAction++;\n            }\n\n            o->oFaceAngleYaw += 0x1000;\n            cur_obj_move_standard(-20);\n            koopa_shell_spawn_sparkles(10.0f);\n            break;\n\n        case 1:\n            obj_copy_pos(o, gMarioObject);\n            sp34 = cur_obj_update_floor_height_and_get_floor();\n\n            if (absf(find_water_level(o->oPosX, o->oPosZ) - o->oPosY) < 10.0f) {\n                koopa_shell_spawn_water_drop();\n            } else if (absf(o->oPosY - o->oFloorHeight) < 5.0f) {\n                if (sp34 != NULL && sp34->type == 1) {\n                    bhv_koopa_shell_flame_spawn();\n                } else {\n                    koopa_shell_spawn_sparkles(10.0f);\n                }\n            } else {\n                koopa_shell_spawn_sparkles(10.0f);\n            }\n\n            o->oFaceAngleYaw = gMarioObject->oMoveAngleYaw;\n\n            if (o->oInteractStatus & INT_STATUS_STOP_RIDING) {\n                obj_mark_for_deletion(o);\n                spawn_mist_particles();\n                o->oAction = 0;\n            }\n            break;\n    }\n\n    o->oInteractStatus = 0;\n}\n"
  },
  {
    "path": "src/game/behaviors/koopa_shell_underwater.inc.c",
    "content": "// koopa_shell_underwater.inc.c\n\nstruct ObjectHitbox sKoopaShellUnderwaterHitbox = {\n    /* interactType:      */ INTERACT_GRABBABLE,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 0,\n    /* health:            */ 1,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 80,\n    /* height:            */ 50,\n    /* hurtboxRadius:     */ 0,\n    /* hurtboxHeight:     */ 0,\n};\n\nvoid set_koopa_shell_underwater_hitbox(void) {\n    obj_set_hitbox(o, &sKoopaShellUnderwaterHitbox);\n}\n\nvoid bhv_koopa_shell_underwater_loop(void) {\n    switch (o->oHeldState) {\n        case HELD_FREE:\n            set_koopa_shell_underwater_hitbox();\n            break;\n        case HELD_HELD:\n            cur_obj_unrender_set_action_and_anim(-1, 0);\n            break;\n        case HELD_THROWN:\n        case HELD_DROPPED:\n            obj_mark_for_deletion(o);\n            spawn_mist_particles();\n            break;\n    }\n\n    if (o->oInteractStatus & INT_STATUS_STOP_RIDING) {\n        obj_mark_for_deletion(o);\n        spawn_mist_particles();\n    }\n\n    o->oInteractStatus = 0;\n}\n"
  },
  {
    "path": "src/game/behaviors/lll_floating_wood_piece.inc.c",
    "content": "// lll_floating_wood_piece.inc.c\n\nvoid bhv_lll_wood_piece_loop(void) {\n    if (o->oTimer == 0) {\n        o->oPosY -= 100.0f;\n    }\n\n    o->oPosY += sins(o->oLLLWoodPieceOscillationTimer) * 3.0f;\n    o->oLLLWoodPieceOscillationTimer += 0x400;\n\n    if (o->parentObj->oAction == 2) {\n        obj_mark_for_deletion(o);\n    }\n}\n\nvoid bhv_lll_floating_wood_bridge_loop(void) {\n    struct Object *sp3C;\n    s32 i;\n\n    switch (o->oAction) {\n        case 0:\n            if (o->oDistanceToMario < 2500.0f) {\n                for (i = 1; i < 4; i++) {\n                    sp3C = spawn_object_relative(0, (i - 2) * 300, 0, 0, o,\n                                                 MODEL_LLL_WOOD_BRIDGE, bhvLLLWoodPiece);\n                    sp3C->oLLLWoodPieceOscillationTimer = i * 0x1000;\n                }\n                o->oAction = 1;\n            }\n            break;\n\n        case 1:\n            if (o->oDistanceToMario > 2600.0f) {\n                o->oAction = 2;\n            }\n            break;\n\n        case 2:\n            o->oAction = 0;\n            break;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/lll_hexagonal_ring.inc.c",
    "content": "// lll_hexagonal_ring.inc.c\n\nvoid hexagonal_ring_spawn_flames(void) {\n    struct Object *sp1C = spawn_object(o, MODEL_RED_FLAME, bhvVolcanoFlames);\n    f32 size;\n\n    sp1C->oPosY += 550.0f;\n    sp1C->oMoveAngleYaw = (s16) random_u16();\n    sp1C->oForwardVel = random_float() * 40.0f + 20.0f;\n    sp1C->oVelY = random_float() * 50.0f + 10.0f;\n\n    size = random_float() * 6.0 + 3.0;\n\n    obj_scale_xyz(sp1C, size, size, size);\n\n    if (random_float() < 0.1) {\n        cur_obj_play_sound_2(SOUND_GENERAL_VOLCANO_EXPLOSION);\n    }\n}\n\nvoid bhv_lll_rotating_hexagonal_ring_loop(void) {\n    UNUSED u8 filler[4];\n\n    o->oCollisionDistance = 4000.0f;\n    o->oDrawingDistance = 8000.0f;\n\n    switch (o->oAction) {\n        case 0:\n            if (gMarioObject->platform == o) {\n                o->oAction++;\n            }\n\n            o->oAngleVelYaw = 0x100;\n            break;\n\n        case 1:\n            o->oAngleVelYaw = 256.0f - sins(o->oTimer * 128) * 256.0f;\n\n            if (o->oTimer > 128) {\n                o->oAction++;\n            }\n            break;\n\n        case 2:\n            if (gMarioObject->platform != o) {\n                o->oAction++;\n            }\n\n            if (o->oTimer > 128) {\n                o->oAction++;\n            }\n\n            o->oAngleVelYaw = 0;\n            hexagonal_ring_spawn_flames();\n            break;\n\n        case 3:\n            o->oAngleVelYaw = sins(o->oTimer * 128) * 256.0f;\n\n            if (o->oTimer > 128) {\n                o->oAction = 0;\n            }\n            break;\n\n        case 4:\n            o->oAction = 0;\n            break;\n    }\n\n    o->oAngleVelYaw = -o->oAngleVelYaw;\n    o->oMoveAngleYaw += o->oAngleVelYaw;\n}\n"
  },
  {
    "path": "src/game/behaviors/lll_octagonal_rotating_mesh.inc.c",
    "content": "// lll_octagonal_rotating_mesh.inc.c\n\ns16 D_8032F860[] = { 2,  30,      0x4000, 0, 1,   220, 900, 30, 1,  30, 0,   -30, 2,\n                     30, -0x4000, 0,      1, 220, 900, 30,  1,  30, 0,  -30, 3,   0 };\ns16 D_8032F894[] = { 4,  0,      0, 0, 1,   475, 900, 30, 1,  30, 0,   -30, 2,\n                     30, 0x8000, 0, 1, 475, 900, 30,  1,  30, 0,  -30, 3,   0 };\ns16 *D_8032F8C8[] = { D_8032F860, D_8032F894 };\n\ns32 lll_octagonal_mesh_move(s16 *a0, s32 a1) {\n    switch (a0[a1]) {\n        case 4:\n            o->oMoveAngleYaw = a0[a1 + 2];\n            o->oForwardVel = a0[a1 + 3] / 100.0f;\n            if (cur_obj_is_mario_on_platform()) {\n                a1 += 4;\n                o->oTimer = 0;\n            }\n            break;\n\n        case 2:\n            o->oMoveAngleYaw = a0[a1 + 2];\n            o->oForwardVel = a0[a1 + 3] / 100.0f;\n            if (o->oTimer > a0[a1 + 1]) {\n                a1 += 4;\n                o->oTimer = 0;\n            }\n            break;\n\n        case 1:\n            approach_f32_signed(&o->oForwardVel, a0[a1 + 2] / 100.0f, a0[a1 + 3] / 100.0f);\n            if (o->oTimer > a0[a1 + 1]) {\n                a1 += 4;\n                o->oTimer = 0;\n            }\n            break;\n\n        case 3:\n            o->oForwardVel = 0.0f;\n            a1 = 0;\n            break;\n    }\n\n    return a1;\n}\n\ns32 lll_octagonal_mesh_find_y_offset(s32 *a0, f32 *a1, s32 a2, s32 a3) {\n    if (cur_obj_is_mario_on_platform()) {\n        if (a0[0] < 0x4000) {\n            a0[0] += a2;\n        } else {\n            a0[0] = 0x4000;\n        }\n    } else {\n        if (a0[0] > 0) {\n            a0[0] -= a2;\n        } else {\n            a0[0] = 0;\n        }\n    }\n\n    a1[0] = sins(a0[0]) * a3;\n\n    if (a0[0] == 0 || a0[0] == 0x4000) {\n        return TRUE;\n    } else {\n        return FALSE;\n    }\n}\n\nvoid bhv_lll_moving_octagonal_mesh_platform_loop(void) {\n    if (o->oAction == 0) {\n        o->oHorizontalMovementUnkF8 = 0;\n        o->oAction++;\n    } else {\n        o->oHorizontalMovementUnkF8 =\n            lll_octagonal_mesh_move(D_8032F8C8[o->oBhvParams2ndByte], o->oHorizontalMovementUnkF8);\n    }\n\n    print_debug_top_down_objectinfo(\"number %d\\n\", o->oHorizontalMovementUnkF8);\n    cur_obj_move_using_fvel_and_gravity();\n\n    if (lll_octagonal_mesh_find_y_offset(&o->oHorizontalMovementUnk104,\n                                         &o->oHorizontalMovementUnk108, 0x400, -80)) {\n        o->oHorizontalMovementUnkF4 += 0x800;\n        o->oHorizontalMovementUnk100 -= sins(o->oHorizontalMovementUnkF4) * 2;\n    }\n\n    o->oPosY = o->oHorizontalMovementUnk100 + o->oHomeY + o->oHorizontalMovementUnk108;\n}\n"
  },
  {
    "path": "src/game/behaviors/lll_rotating_hex_flame.inc.c",
    "content": "// lll_rotating_hex_flame.inc.c\n\nvoid bhv_lll_rotating_hex_flame_loop(void) {\n    f32 sp24 = o->oLLLRotatingHexFlameUnkF4;\n    f32 sp20 = o->oLLLRotatingHexFlameUnkF8;\n    f32 sp1C = o->oLLLRotatingHexFlameUnkFC;\n\n    cur_obj_set_pos_relative(o->parentObj, sp24, sp20, sp1C);\n    o->oPosY = o->parentObj->oPosY + 100.0f;\n\n    if (o->parentObj->oAction == 3) {\n        obj_mark_for_deletion(o);\n    }\n}\n\nvoid fire_bar_spawn_flames(s16 a0) {\n    struct Object *sp2C;\n    UNUSED u8 filler[4];\n    s32 i;\n    s32 sp20;\n    f32 sp1C = sins(a0) * 200.0f;\n    f32 sp18 = coss(a0) * 200.0f;\n\n    sp20 = o->oBhvParams2ndByte == 0 ? 4 : 3;\n\n    for (i = 0; i < sp20; i++) {\n        sp2C = spawn_object(o, MODEL_RED_FLAME, bhvLLLRotatingHexFlame);\n        sp2C->oLLLRotatingHexFlameUnkF4 += sp1C;\n        sp2C->oLLLRotatingHexFlameUnkF8 = o->oPosY - 200.0f;\n        sp2C->oLLLRotatingHexFlameUnkFC += sp18;\n        obj_scale_xyz(sp2C, 6.0f, 6.0f, 6.0f);\n        sp1C += sins(a0) * 150.0f;\n        sp18 += coss(a0) * 150.0f;\n    }\n}\n\nvoid fire_bar_act_0(void) {\n    if (o->oDistanceToMario < 3000.0f) {\n        o->oAction = 1;\n    }\n}\n\nvoid fire_bar_act_1(void) {\n    fire_bar_spawn_flames(0);\n    fire_bar_spawn_flames(-0x8000);\n    o->oAngleVelYaw = 0;\n    o->oMoveAngleYaw = 0;\n    o->oAction = 2;\n}\n\nvoid fire_bar_act_2(void) {\n    o->oAngleVelYaw = -0x100;\n    o->oMoveAngleYaw += o->oAngleVelYaw;\n    if (o->oDistanceToMario > 3200.0f) {\n        o->oAction = 3;\n    }\n}\n\nvoid fire_bar_act_3(void) {\n    o->oAction = 0;\n}\n\nvoid (*sRotatingCwFireBarsActions[])(void) = {\n    fire_bar_act_0,\n    fire_bar_act_1,\n    fire_bar_act_2,\n    fire_bar_act_3,\n};\n\nvoid bhv_lll_rotating_block_fire_bars_loop(void) {\n    cur_obj_call_action_function(sRotatingCwFireBarsActions);\n    if (o->oBhvParams2ndByte == 0) {\n        load_object_collision_model();\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/lll_sinking_rectangle.inc.c",
    "content": "// lll_sinking_rectangle.inc.c\n\nvoid sinking_rectangular_plat_actions(f32 a0, s32 a1) {\n    switch (o->oAction) {\n        case 0:\n            o->oAction++;\n            break;\n\n        case 1:\n            o->oPosY -= sins(o->oLLLWoodPieceOscillationTimer) * a0;\n            o->oLLLWoodPieceOscillationTimer += a1;\n            break;\n\n        case 2:\n            break;\n            break; // Two breaks needed?\n    }\n}\n\nvoid bhv_lll_sinking_rectangular_platform_loop(void) {\n    f32 sp1C = 0.4f;\n    s32 sp18 = 0x100;\n\n    if (o->oMoveAngleYaw != 0) {\n        sinking_rectangular_plat_actions(sp1C, sp18);\n    } else {\n        o->oFaceAnglePitch = sins(o->oLLLWoodPieceOscillationTimer) * 0x200;\n        o->oLLLWoodPieceOscillationTimer += 0x100;\n    }\n}\n\nvoid bhv_lll_sinking_square_platforms_loop(void) {\n    f32 sp1C = 0.5f;\n    s32 sp18 = 0x100;\n\n    sinking_rectangular_plat_actions(sp1C, sp18);\n}\n"
  },
  {
    "path": "src/game/behaviors/lll_sinking_rock_block.inc.c",
    "content": "// lll_sinking_rock_block.inc.c\n\nvoid bhv_lll_sinking_rock_block_loop(void) {\n    lll_octagonal_mesh_find_y_offset(&o->oSinkWhenSteppedOnUnk104,\n                                     &o->oSinkWhenSteppedOnUnk108, 124, -110);\n    o->oGraphYOffset = 0.0f;\n    o->oPosY = o->oHomeY + o->oSinkWhenSteppedOnUnk108;\n}\n"
  },
  {
    "path": "src/game/behaviors/lll_volcano_flames.inc.c",
    "content": "// lll_volcano_flames.inc.c\n\nvoid bhv_volcano_flames_loop(void) {\n    cur_obj_update_floor_height();\n    cur_obj_compute_vel_xz();\n\n    o->oPosX += o->oVelX;\n    o->oPosZ += o->oVelZ;\n\n    cur_obj_move_y(-4.0f, -0.7f, 2.0f);\n\n    if (o->oMoveFlags & (OBJ_MOVE_MASK_ON_GROUND | OBJ_MOVE_AT_WATER_SURFACE\n                         | OBJ_MOVE_UNDERWATER_OFF_GROUND)) {\n        obj_mark_for_deletion(o);\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/mad_piano.inc.c",
    "content": "// mad_piano.inc.c\n\nstatic struct ObjectHitbox sMadPianoHitbox = {\n    /* interactType:      */ INTERACT_MR_BLIZZARD,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 3,\n    /* health:            */ 99,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 200,\n    /* height:            */ 150,\n    /* hurtboxRadius:     */ 200,\n    /* hurtboxHeight:     */ 150,\n};\n\nstatic void mad_piano_act_wait(void) {\n    cur_obj_init_animation_with_sound(0);\n\n    if (o->oDistanceToMario < 500.0f) {\n        if (o->oTimer > 20 && gMarioStates[0].forwardVel > 10.0f) {\n            o->oAction = MAD_PIANO_ACT_ATTACK;\n            cur_obj_become_tangible();\n        }\n    } else {\n        o->oTimer = 0;\n    }\n\n    cur_obj_push_mario_away_from_cylinder(280.0f, 150.0f);\n}\n\nstatic void mad_piano_act_attack(void) {\n    cur_obj_update_floor_and_walls();\n    cur_obj_init_animation_with_sound(1);\n    cur_obj_play_sound_at_anim_range(0, 0, SOUND_OBJ_MAD_PIANO_CHOMPING);\n\n    if (o->oDistanceToMario < 500.0f) {\n        o->oTimer = 0;\n    }\n\n    if (o->oTimer > 80 && cur_obj_check_if_near_animation_end()) {\n        o->oAction = MAD_PIANO_ACT_WAIT;\n        o->oForwardVel = 0.0f;\n        cur_obj_become_intangible();\n    } else {\n        f32 dx = o->oPosX - o->oHomeX;\n        f32 dz = o->oPosZ - o->oHomeZ;\n        f32 distToHome = sqrtf(dx * dx + dz * dz);\n\n        if (distToHome > 400.0f) {\n            distToHome = 400.0f / distToHome;\n            o->oPosX = o->oHomeX + dx * distToHome;\n            o->oPosZ = o->oHomeZ + dz * distToHome;\n        }\n\n        cur_obj_rotate_yaw_toward(o->oAngleToMario, 400);\n        o->oForwardVel = 5.0f;\n    }\n\n    obj_check_attacks(&sMadPianoHitbox, o->oAction);\n    cur_obj_move_standard(78);\n}\n\nvoid bhv_mad_piano_update(void) {\n    if (!(o->activeFlags & ACTIVE_FLAG_IN_DIFFERENT_ROOM)) {\n        o->oFaceAngleYaw = o->oMoveAngleYaw - 0x4000;\n\n        switch (o->oAction) {\n            case MAD_PIANO_ACT_WAIT:\n                mad_piano_act_wait();\n                break;\n            case MAD_PIANO_ACT_ATTACK:\n                mad_piano_act_attack();\n                break;\n        }\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/manta_ray.inc.c",
    "content": "\n/**\n * @file Behavior file for the manta ray in DDD.\n *\n * The manta ray spawns on stars 2-6. It generally follows a fixed path, leaving rings.\n * These rings contain a significant bug that is documented in water_ring.inc.c\n */\n\nstatic Trajectory sMantaRayTraj[] = {\n    TRAJECTORY_POS(0, /*pos*/ -4500, -1380,   -40),\n    TRAJECTORY_POS(1, /*pos*/ -4120, -2240,   740),\n    TRAJECTORY_POS(2, /*pos*/ -3280, -3080,  1040),\n    TRAJECTORY_POS(3, /*pos*/ -2240, -3320,   720),\n    TRAJECTORY_POS(4, /*pos*/ -1840, -3140,  -280),\n    TRAJECTORY_POS(5, /*pos*/ -2320, -2480, -1100),\n    TRAJECTORY_POS(6, /*pos*/ -3220, -1600, -1360),\n    TRAJECTORY_POS(7, /*pos*/ -4180, -1020, -1040),\n    TRAJECTORY_END(),\n};\n\nstatic struct ObjectHitbox sMantaRayHitbox = {\n    /* interactType:      */ INTERACT_DAMAGE,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 0,\n    /* health:            */ 3,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 210,\n    /* height:            */ 60,\n    /* hurtboxRadius:     */ 200,\n    /* hurtboxHeight:     */ 50,\n};\n\n/**\n * Initializes the manta ray when spawned.\n */\nvoid bhv_manta_ray_init(void) {\n    struct Object *ringManager = spawn_object(o, MODEL_NONE, bhvMantaRayRingManager);\n    o->parentObj = ringManager;\n    obj_set_hitbox(o, &sMantaRayHitbox);\n    cur_obj_scale(2.5f);\n}\n\nstatic void manta_ray_move(void) {\n    s16 animFrame = o->header.gfx.animInfo.animFrame;\n    s32 pathStatus;\n#ifdef AVOID_UB\n    pathStatus = 0;\n#endif\n\n    o->oPathedStartWaypoint = (struct Waypoint *) sMantaRayTraj;\n    //! Uninitialized parameter, but the parameter is unused in the called function\n    pathStatus = cur_obj_follow_path(pathStatus);\n\n    o->oMantaTargetYaw   = o->oPathedTargetYaw;\n    o->oMantaTargetPitch = o->oPathedTargetPitch;\n    o->oForwardVel = 10.0f;\n\n    o->oMoveAngleYaw   = approach_s16_symmetric(o->oMoveAngleYaw, o->oMantaTargetYaw, 0x80);\n    o->oMoveAnglePitch = approach_s16_symmetric(o->oMoveAnglePitch, o->oMantaTargetPitch, 0x80);\n\n    // This causes the ray to tilt as it turns.\n    if ((s16) o->oMantaTargetYaw != (s16) o->oMoveAngleYaw) {\n        o->oMoveAngleRoll -= 91;\n        if (o->oMoveAngleRoll < -5461.3332) {\n            o->oMoveAngleRoll = -0x4000 / 3;\n        }\n    } else {\n        o->oMoveAngleRoll += 91;\n        if (o->oMoveAngleRoll > 5461.3332) {\n            o->oMoveAngleRoll = 0x4000 / 3;\n        }\n    }\n\n    cur_obj_set_pos_via_transform();\n    if (animFrame == 0) {\n        cur_obj_play_sound_2(SOUND_GENERAL_MOVING_WATER);\n    }\n}\n\nstatic void manta_ray_act_spawn_ring(void) {\n    struct Object *ringManager = o->parentObj;\n\n    if (o->oTimer == 300) {\n        o->oTimer = 0;\n    }\n\n    if (o->oTimer == 0 || o->oTimer == 50 || o->oTimer == 150 || o->oTimer == 200 || o->oTimer == 250) {\n        struct Object *ring = spawn_object(o, MODEL_WATER_RING, bhvMantaRayWaterRing);\n\n        ring->oFaceAngleYaw = o->oMoveAngleYaw;\n        ring->oFaceAnglePitch = o->oMoveAnglePitch + 0x4000;\n\n        ring->oPosX = o->oPosX + 200.0f * sins(o->oMoveAngleYaw + 0x8000);\n        ring->oPosY = o->oPosY + 10.0f + 200.0f * sins(o->oMoveAnglePitch);\n        ring->oPosZ = o->oPosZ + 200.0f * coss(o->oMoveAngleYaw + 0x8000);\n        ring->oWaterRingIndex = ringManager->oWaterRingMgrNextRingIndex;\n\n        ringManager->oWaterRingMgrNextRingIndex++;\n        if (ringManager->oWaterRingMgrNextRingIndex > 10000) {\n            ringManager->oWaterRingMgrNextRingIndex = 0;\n        }\n    }\n}\n\n/**\n * Behavior that occurs every frame.\n */\nvoid bhv_manta_ray_loop(void) {\n    switch (o->oAction) {\n        case MANTA_ACT_SPAWN_RINGS:\n            manta_ray_move();\n            manta_ray_act_spawn_ring();\n\n            // Spawn a star after collecting 5 rings.\n            if (o->oWaterRingSpawnerRingsCollected == 5) {\n                spawn_mist_particles();\n                spawn_default_star(-3180.0f, -3600.0f, 120.0f);\n                o->oAction = MANTA_ACT_NO_RINGS;\n            }\n            break;\n\n        case MANTA_ACT_NO_RINGS:\n            manta_ray_move();\n            break;\n    }\n\n    if (o->oInteractStatus & INT_STATUS_INTERACTED) {\n        o->oInteractStatus = 0;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/metal_box.inc.c",
    "content": "// metal_box.inc.c\n\nstruct ObjectHitbox sMetalBoxHitbox = {\n    /* interactType:      */ 0,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 0,\n    /* health:            */ 1,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 220,\n    /* height:            */ 300,\n    /* hurtboxRadius:     */ 220,\n    /* hurtboxHeight:     */ 300,\n};\n\ns32 check_if_moving_over_floor(f32 a0, f32 a1) {\n    struct Surface *sp24;\n    f32 sp20 = o->oPosX + sins(o->oMoveAngleYaw) * a1;\n    f32 floorHeight;\n    f32 sp18 = o->oPosZ + coss(o->oMoveAngleYaw) * a1;\n\n    floorHeight = find_floor(sp20, o->oPosY, sp18, &sp24);\n\n    if (absf(floorHeight - o->oPosY) < a0) {\n        return TRUE;\n    } else {\n        return FALSE;\n    }\n}\n\nvoid bhv_pushable_loop(void) {\n    UNUSED s16 unused;\n\n    obj_set_hitbox(o, &sMetalBoxHitbox);\n    o->oForwardVel = 0.0f;\n\n    if (obj_check_if_collided_with_object(o, gMarioObject)\n        && (gMarioStates[0].flags & MARIO_UNKNOWN_31)) {\n        s16 sp1C = obj_angle_to_object(o, gMarioObject);\n        if (abs_angle_diff(sp1C, gMarioObject->oMoveAngleYaw) > 0x4000) {\n            o->oMoveAngleYaw = (s16)((gMarioObject->oMoveAngleYaw + 0x2000) & 0xC000);\n            if (check_if_moving_over_floor(8.0f, 150.0f)) {\n                o->oForwardVel = 4.0f;\n                cur_obj_play_sound_1(SOUND_ENV_METAL_BOX_PUSH);\n            }\n        }\n    }\n\n    cur_obj_move_using_fvel_and_gravity();\n}\n"
  },
  {
    "path": "src/game/behaviors/mips.inc.c",
    "content": "\n/**\n * Behavior for MIPS (everyone's favorite yellow rabbit).\n */\n\n/**\n * Initializes MIPS' physics parameters and checks if he should be active,\n * hiding him if necessary.\n */\nvoid bhv_mips_init(void) {\n    // Retrieve star flags for Castle Secret Stars on current save file.\n    u8 starFlags = save_file_get_star_flags(gCurrSaveFileNum - 1, COURSE_NUM_TO_INDEX(COURSE_NONE));\n\n    // If the player has >= 15 stars and hasn't collected first MIPS star...\n    if (save_file_get_total_star_count(gCurrSaveFileNum - 1, COURSE_MIN - 1, COURSE_MAX - 1) >= 15\n        && !(starFlags & SAVE_FLAG_TO_STAR_FLAG(SAVE_FLAG_COLLECTED_MIPS_STAR_1))) {\n        o->oBhvParams2ndByte = MIPS_BP_15_STARS;\n#ifndef VERSION_JP\n        o->oMipsForwardVelocity = 40.0f;\n#endif\n    }\n    // If the player has >= 50 stars and hasn't collected second MIPS star...\n    else if (save_file_get_total_star_count(gCurrSaveFileNum - 1, COURSE_MIN - 1, COURSE_MAX - 1) >= 50\n             && !(starFlags & SAVE_FLAG_TO_STAR_FLAG(SAVE_FLAG_COLLECTED_MIPS_STAR_2))) {\n        o->oBhvParams2ndByte = MIPS_BP_50_STARS;\n#ifndef VERSION_JP\n        o->oMipsForwardVelocity = 45.0f;\n#endif\n    } else {\n        // No MIPS stars are available, hide MIPS.\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n\n    o->oInteractionSubtype = INT_SUBTYPE_HOLDABLE_NPC;\n\n#ifndef VERSION_JP\n    o->oGravity = 15.0f;\n#else\n    o->oGravity = 2.5f;\n#endif\n    o->oFriction = 0.89f;\n    o->oBuoyancy = 1.2f;\n\n    cur_obj_init_animation(0);\n}\n\n/**\n * Helper function that finds the waypoint that is both within 800 units of MIPS\n * and furthest from Mario's current location.\n */\ns16 bhv_mips_find_furthest_waypoint_to_mario(void) {\n    s8 i;\n    s16 x, y, z;\n    s16 furthestWaypointIndex = -1;\n    f32 furthestWaypointDistance = -10000.0f;\n    f32 distanceToMario;\n    struct Waypoint **pathBase = segmented_to_virtual(&inside_castle_seg7_trajectory_mips);\n\n    // For each waypoint in MIPS path...\n    for (i = 0; i < 10; i++) {\n        struct Waypoint *waypoint = segmented_to_virtual(pathBase[i]);\n        x = waypoint->pos[0];\n        y = waypoint->pos[1];\n        z = waypoint->pos[2];\n\n        // Is the waypoint within 800 units of MIPS?\n        if (is_point_close_to_object(o, x, y, z, 800)) {\n            // Is this further from Mario than the last waypoint?\n            distanceToMario =\n                sqr(x - gMarioObject->header.gfx.pos[0]) + sqr(z - gMarioObject->header.gfx.pos[2]);\n            if (furthestWaypointDistance < distanceToMario) {\n                furthestWaypointIndex = i;\n                furthestWaypointDistance = distanceToMario;\n            }\n        }\n    }\n\n    // Set MIPS' next waypoint to be the closest waypoint to Mario.\n    o->oMipsStartWaypointIndex = furthestWaypointIndex;\n    return (s16) o->oMipsStartWaypointIndex;\n}\n\n/**\n * Wait until Mario comes close, then resume following our path.\n */\nvoid bhv_mips_act_wait_for_nearby_mario(void) {\n    UNUSED s16 collisionFlags = 0;\n\n    o->oForwardVel = 0.0f;\n    collisionFlags = object_step();\n\n    // If Mario is within 500 units...\n    if (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 500)) {\n        // If we fail to find a suitable waypoint...\n        if (bhv_mips_find_furthest_waypoint_to_mario() == -1) {\n            // Call it quits.\n            o->oAction = MIPS_ACT_WAIT_FOR_ANIMATION_DONE;\n        } else {\n            // Resume path following.\n            cur_obj_init_animation(1);\n            o->oAction = MIPS_ACT_FOLLOW_PATH;\n        }\n    }\n}\n\n/**\n * Continue to follow our path around the basement area.\n */\nvoid bhv_mips_act_follow_path(void) {\n    s16 collisionFlags = 0;\n    s32 followStatus;\n\n    // Retrieve current waypoint.\n    struct Waypoint **pathBase = segmented_to_virtual(&inside_castle_seg7_trajectory_mips);\n    struct Waypoint *waypoint = segmented_to_virtual(*(pathBase + o->oMipsStartWaypointIndex));\n\n#ifdef AVOID_UB\n    followStatus = 0;\n#endif\n\n    // Set start waypoint and follow the path from there.\n    o->oPathedStartWaypoint = waypoint;\n    //! Uninitialized parameter, but the parameter is unused in the called function\n    followStatus = cur_obj_follow_path(followStatus);\n\n    // Update velocity and angle and do movement.\n#ifndef VERSION_JP\n    o->oForwardVel = o->oMipsForwardVelocity;\n#else\n    o->oForwardVel = 45.0f;\n#endif\n    o->oMoveAngleYaw = o->oPathedTargetYaw;\n    collisionFlags = object_step();\n\n    // If we are at the end of the path, do idle animation and wait for Mario.\n    if (followStatus == PATH_REACHED_END) {\n        cur_obj_init_animation(0);\n        o->oAction = MIPS_ACT_WAIT_FOR_NEARBY_MARIO;\n    }\n\n    // Play sounds during walk animation.\n    if (cur_obj_check_if_near_animation_end() == TRUE && (collisionFlags & OBJ_COL_FLAG_UNDERWATER)) {\n        cur_obj_play_sound_2(SOUND_OBJ_MIPS_RABBIT_WATER);\n        spawn_object(o, MODEL_NONE, bhvShallowWaterSplash);\n    } else if (cur_obj_check_if_near_animation_end() == TRUE) {\n        cur_obj_play_sound_2(SOUND_OBJ_MIPS_RABBIT);\n    }\n}\n\n/**\n * Seems to wait until the current animation is done, then go idle.\n */\nvoid bhv_mips_act_wait_for_animation_done(void) {\n    if (cur_obj_check_if_near_animation_end() == TRUE) {\n        cur_obj_init_animation(0);\n        o->oAction = MIPS_ACT_IDLE;\n    }\n}\n\n/**\n * Handles MIPS falling down after being thrown.\n */\nvoid bhv_mips_act_fall_down(void) {\n    s16 collisionFlags = 0;\n\n    collisionFlags = object_step();\n    o->header.gfx.animInfo.animFrame = 0;\n\n    if ((collisionFlags & OBJ_COL_FLAG_GROUNDED) == OBJ_COL_FLAG_GROUNDED) {\n        o->oAction = MIPS_ACT_WAIT_FOR_ANIMATION_DONE;\n\n        o->oFlags |= OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW;\n        o->oMoveAngleYaw = o->oFaceAngleYaw;\n\n        if (collisionFlags & OBJ_COL_FLAG_UNDERWATER) {\n            spawn_object(o, MODEL_NONE, bhvShallowWaterSplash);\n        }\n    }\n}\n\n/**\n * Idle loop, after you catch MIPS and put him down.\n */\nvoid bhv_mips_act_idle(void) {\n    UNUSED s16 collisionFlags = 0;\n\n    o->oForwardVel = 0.0f;\n    collisionFlags = object_step();\n\n    // Spawn a star if he was just picked up for the first time.\n    if (o->oMipsStarStatus == MIPS_STAR_STATUS_SHOULD_SPAWN_STAR) {\n        bhv_spawn_star_no_level_exit(STAR_INDEX_ACT_4 + o->oBhvParams2ndByte);\n        o->oMipsStarStatus = MIPS_STAR_STATUS_ALREADY_SPAWNED_STAR;\n    }\n}\n\n/**\n * Handles all the actions MIPS does when he is not held.\n */\nvoid bhv_mips_free(void) {\n    switch (o->oAction) {\n        case MIPS_ACT_WAIT_FOR_NEARBY_MARIO:\n            bhv_mips_act_wait_for_nearby_mario();\n            break;\n\n        case MIPS_ACT_FOLLOW_PATH:\n            bhv_mips_act_follow_path();\n            break;\n\n        case MIPS_ACT_WAIT_FOR_ANIMATION_DONE:\n            bhv_mips_act_wait_for_animation_done();\n            break;\n\n        case MIPS_ACT_FALL_DOWN:\n            bhv_mips_act_fall_down();\n            break;\n\n        case MIPS_ACT_IDLE:\n            bhv_mips_act_idle();\n            break;\n    }\n}\n\n/**\n * Handles MIPS being held by Mario.\n */\nvoid bhv_mips_held(void) {\n    s16 dialogID;\n\n    o->header.gfx.node.flags |= GRAPH_RENDER_INVISIBLE;\n    cur_obj_init_animation(4); // Held animation.\n    cur_obj_set_pos_relative(gMarioObject, 0, 60.0f, 100.0f);\n    cur_obj_become_intangible();\n\n    // If MIPS hasn't spawned his star yet...\n    if (o->oMipsStarStatus == MIPS_STAR_STATUS_HAVENT_SPAWNED_STAR) {\n        // Choose dialog based on which MIPS encounter this is.\n        if (o->oBhvParams2ndByte == MIPS_BP_15_STARS) {\n            dialogID = DIALOG_084;\n        } else { // MIPS_BP_50_STARS\n            dialogID = DIALOG_162;\n        }\n\n        if (set_mario_npc_dialog(MARIO_DIALOG_LOOK_FRONT) == MARIO_DIALOG_STATUS_SPEAK) {\n            o->activeFlags |= ACTIVE_FLAG_INITIATED_TIME_STOP;\n            if (cutscene_object_with_dialog(CUTSCENE_DIALOG, o, dialogID) != 0) {\n                o->oInteractionSubtype |= INT_SUBTYPE_DROP_IMMEDIATELY;\n                o->activeFlags &= ~ACTIVE_FLAG_INITIATED_TIME_STOP;\n                o->oMipsStarStatus = MIPS_STAR_STATUS_SHOULD_SPAWN_STAR;\n                set_mario_npc_dialog(MARIO_DIALOG_STOP);\n            }\n        }\n    }\n}\n\n/**\n * Handles MIPS being dropped by Mario.\n */\nvoid bhv_mips_dropped(void) {\n    cur_obj_get_dropped();\n    o->header.gfx.node.flags &= ~GRAPH_RENDER_INVISIBLE;\n    cur_obj_init_animation(0);\n    o->oHeldState = HELD_FREE;\n    cur_obj_become_tangible();\n    o->oForwardVel = 3.0f;\n    o->oAction = MIPS_ACT_IDLE;\n}\n\n/**\n * Handles MIPS being thrown by Mario.\n */\nvoid bhv_mips_thrown(void) {\n    cur_obj_enable_rendering_2();\n    o->header.gfx.node.flags &= ~GRAPH_RENDER_INVISIBLE;\n    o->oHeldState = HELD_FREE;\n    o->oFlags &= ~OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW;\n    cur_obj_init_animation(2);\n    cur_obj_become_tangible();\n    o->oForwardVel = 25.0f;\n    o->oVelY = 20.0f;\n    o->oAction = MIPS_ACT_FALL_DOWN;\n}\n\n/**\n * MIPS' main loop.\n */\nvoid bhv_mips_loop(void) {\n    // Determine what to do based on MIPS' held status.\n    switch (o->oHeldState) {\n        case HELD_FREE:\n            bhv_mips_free();\n            break;\n\n        case HELD_HELD:\n            bhv_mips_held();\n            break;\n\n        case HELD_THROWN:\n            bhv_mips_thrown();\n            break;\n\n        case HELD_DROPPED:\n            bhv_mips_dropped();\n            break;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/moat_drainer.inc.c",
    "content": "// moat_drainer.inc.c\n\nvoid bhv_invisible_objects_under_bridge_init(void) {\n    if (save_file_get_flags() & SAVE_FLAG_MOAT_DRAINED) {\n        gEnvironmentRegions[6] = -800;\n        gEnvironmentRegions[12] = -800;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/moat_grill.inc.c",
    "content": "// moat_grill.inc.c\n\nvoid bhv_moat_grills_loop(void) {\n    if (save_file_get_flags() & SAVE_FLAG_MOAT_DRAINED) {\n        cur_obj_set_model(MODEL_NONE);\n    } else {\n        load_object_collision_model();\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/moneybag.inc.c",
    "content": "// moneybag.inc.c\n\nstatic struct ObjectHitbox sMoneybagHitbox = {\n    /* interactType:      */ INTERACT_BOUNCE_TOP,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 2,\n    /* health:            */ 1,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 120,\n    /* height:            */ 60,\n    /* hurtboxRadius:     */ 100,\n    /* hurtboxHeight:     */ 50,\n};\n\nstatic struct ObjectHitbox sMoneybagHiddenHitbox = {\n    /* interactType:      */ INTERACT_DAMAGE,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 2,\n    /* health:            */ 1,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 120,\n    /* height:            */ 60,\n    /* hurtboxRadius:     */ 100,\n    /* hurtboxHeight:     */ 50,\n};\n\nvoid bhv_moneybag_init(void) {\n    o->oGravity = 3.0f;\n    o->oFriction = 1.0f;\n    o->oBuoyancy = 2.0f;\n    cur_obj_init_animation(0);\n    o->oOpacity = 0;\n}\n\nvoid moneybag_check_mario_collision(void) {\n    obj_set_hitbox(o, &sMoneybagHitbox);\n\n    if (o->oInteractStatus & INT_STATUS_INTERACTED) {\n        if (o->oInteractStatus & INT_STATUS_ATTACKED_MARIO) {\n            o->oMoveAngleYaw = o->oAngleToMario + 0x8000;\n            o->oVelY = 30.0f;\n        }\n\n        if (o->oInteractStatus & INT_STATUS_WAS_ATTACKED) {\n            o->oAction = MONEYBAG_ACT_DEATH;\n        }\n\n        o->oInteractStatus = 0;\n    }\n}\n\nvoid moneybag_jump(s8 collisionFlags) {\n    s16 animFrame = o->header.gfx.animInfo.animFrame;\n\n    switch (o->oMoneybagJumpState) {\n        case MONEYBAG_JUMP_PREPARE:\n            cur_obj_init_animation(1);\n            if (animFrame == 5) {\n                o->oForwardVel = 20.0f;\n                o->oVelY = 40.0f;\n            }\n\n            if (cur_obj_check_if_near_animation_end() == TRUE) {\n                o->oMoneybagJumpState = MONEYBAG_JUMP_JUMP;\n                cur_obj_play_sound_2(SOUND_GENERAL_BOING2_LOWPRIO);\n            }\n            break;\n\n        case MONEYBAG_JUMP_JUMP:\n            cur_obj_init_animation(2);\n\n            if ((collisionFlags & OBJ_COL_FLAG_GROUNDED) == OBJ_COL_FLAG_GROUNDED) {\n                o->oForwardVel = 0;\n                o->oVelY = 0;\n                o->oMoneybagJumpState = MONEYBAG_JUMP_LANDING;\n            }\n            break;\n\n        case MONEYBAG_JUMP_JUMP_AND_BOUNCE:\n            cur_obj_init_animation(3);\n\n            if (cur_obj_check_if_near_animation_end() == TRUE) {\n                o->oMoneybagJumpState = MONEYBAG_JUMP_LANDING;\n            }\n            break;\n\n        case MONEYBAG_JUMP_WALK_AROUND:\n            cur_obj_init_animation(4);\n            o->oForwardVel = 10.0f;\n\n            if (o->oTimer > 60) {\n                o->oMoneybagJumpState = MONEYBAG_JUMP_LANDING;\n                o->oForwardVel = 0;\n                o->header.gfx.animInfo.animFrame = 0;\n            }\n            break;\n\n        case MONEYBAG_JUMP_WALK_HOME:\n            cur_obj_init_animation(4);\n            o->oForwardVel = 5.0f;\n            break;\n    }\n}\n\nvoid moneybag_act_move_around(void) {\n    s16 collisionFlags;\n\n    obj_return_and_displace_home(o, o->oHomeX, o->oHomeY, o->oHomeZ, 200);\n\n    collisionFlags = object_step();\n\n    if (((collisionFlags & OBJ_COL_FLAGS_LANDED) == OBJ_COL_FLAGS_LANDED)\n        && (o->oMoneybagJumpState == MONEYBAG_JUMP_LANDING)) {\n        if ((s32)(random_float() * 6.0f) == 1) {\n            o->oMoneybagJumpState = MONEYBAG_JUMP_WALK_AROUND;\n            o->oTimer = 0;\n        } else {\n            o->oMoneybagJumpState = MONEYBAG_JUMP_PREPARE;\n        }\n    }\n\n    moneybag_jump(collisionFlags);\n    moneybag_check_mario_collision();\n\n    if (!is_point_within_radius_of_mario(o->oHomeX, o->oHomeY, o->oHomeZ, 800)\n        && ((collisionFlags & OBJ_COL_FLAGS_LANDED) == OBJ_COL_FLAGS_LANDED)) {\n        o->oAction = MONEYBAG_ACT_RETURN_HOME;\n    }\n}\n\nvoid moneybag_act_return_home(void) {\n    s16 collisionFlags;\n    f32 sp28 = o->oHomeX - o->oPosX;\n    f32 sp24 = o->oHomeZ - o->oPosZ;\n    s16 sp22 = atan2s(sp24, sp28);\n\n    o->oMoveAngleYaw = approach_s16_symmetric(o->oMoveAngleYaw, sp22, 0x800);\n    collisionFlags = object_step();\n\n    if (((collisionFlags & OBJ_COL_FLAGS_LANDED) == OBJ_COL_FLAGS_LANDED)\n        && (o->oMoneybagJumpState == MONEYBAG_JUMP_LANDING)) {\n        o->oMoneybagJumpState = MONEYBAG_JUMP_WALK_HOME;\n    }\n\n    moneybag_jump(collisionFlags);\n    moneybag_check_mario_collision();\n\n    if (is_point_close_to_object(o, o->oHomeX, o->oHomeY, o->oHomeZ, 100)) {\n        spawn_object(o, MODEL_YELLOW_COIN, bhvMoneybagHidden);\n#ifndef VERSION_JP\n        cur_obj_play_sound_2(SOUND_GENERAL_VANISH_SFX);\n#endif\n        cur_obj_init_animation(0);\n        o->oAction = MONEYBAG_ACT_DISAPPEAR;\n        o->oMoneybagJumpState = MONEYBAG_JUMP_LANDING;\n    }\n\n    if (is_point_within_radius_of_mario(o->oHomeX, o->oHomeY, o->oHomeZ, 800) == TRUE) {\n        o->oAction = MONEYBAG_ACT_MOVE_AROUND;\n        o->oMoneybagJumpState = MONEYBAG_JUMP_LANDING;\n    }\n}\n\nvoid moneybag_act_disappear(void) {\n    o->oOpacity -= 6;\n    if (o->oOpacity < 0) {\n        o->oOpacity = 0;\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n}\n\nvoid moneybag_act_death(void) {\n    if (o->oTimer == 1) {\n        obj_spawn_yellow_coins(o, 5);\n        create_sound_spawner(SOUND_GENERAL_SPLATTERING);\n        spawn_mist_particles();\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n}\n\nvoid bhv_moneybag_loop(void) {\n    switch (o->oAction) {\n        case MONEYBAG_ACT_APPEAR:\n        case MONEYBAG_ACT_UNUSED_APPEAR:\n            o->oOpacity += 12;\n            if (o->oOpacity > 255) {\n                o->oOpacity = 255;\n                o->parentObj->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n                o->oAction = MONEYBAG_ACT_MOVE_AROUND;\n            }\n            break;\n\n        case MONEYBAG_ACT_MOVE_AROUND:\n            moneybag_act_move_around();\n            if (o->oTimer > 30) {\n                cur_obj_become_tangible();\n            }\n            break;\n\n        case MONEYBAG_ACT_RETURN_HOME:\n            moneybag_act_return_home();\n            break;\n\n        case MONEYBAG_ACT_DISAPPEAR:\n            moneybag_act_disappear();\n            break;\n\n        case MONEYBAG_ACT_DEATH:\n            moneybag_act_death();\n            break;\n    }\n}\n\nvoid bhv_moneybag_hidden_loop(void) {\n    obj_set_hitbox(o, &sMoneybagHiddenHitbox);\n\n    switch (o->oAction) {\n        case FAKE_MONEYBAG_COIN_ACT_IDLE:\n            if (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 400)) {\n                spawn_object(o, MODEL_MONEYBAG, bhvMoneybag);\n#ifndef VERSION_JP\n                cur_obj_play_sound_2(SOUND_GENERAL_VANISH_SFX);\n#endif\n                o->oAction = FAKE_MONEYBAG_COIN_ACT_TRANSFORM;\n            }\n            break;\n\n        case FAKE_MONEYBAG_COIN_ACT_TRANSFORM:\n            break;\n    }\n\n    o->oInteractStatus = 0;\n}\n"
  },
  {
    "path": "src/game/behaviors/monty_mole.inc.c",
    "content": "\n/**\n * Behavior for bhvMontyMole, bhvMontyMoleHole, and bhvMontyMoleRock.\n * The monty mole holes are placed statically. The monty moles repeatedly\n * search for an available hole to pop out of.\n */\n\n/**\n * The first hole in the list of monty mole holes. The list is a singly linked\n * list using the parentObj field.\n */\nstruct Object *sMontyMoleHoleList;\n\n/**\n * The number of nearby monty moles that have been killed in a row.\n */\ns32 sMontyMoleKillStreak;\n\n/**\n * The position of the last killed monty mole, used for determining whether\n * the next killed monty mole is nearby.\n */\nf32 sMontyMoleLastKilledPosX;\nf32 sMontyMoleLastKilledPosY;\nf32 sMontyMoleLastKilledPosZ;\n\n/**\n * Link all objects with the given behavior using parentObj.\n * The result is a singly linked list in reverse processing order. Return the\n * start of this list.\n */\nstatic struct Object *link_objects_with_behavior(const BehaviorScript *behavior) {\n    const BehaviorScript *behaviorAddr = segmented_to_virtual(behavior);\n    struct Object *obj;\n    struct Object *lastObject = NULL;\n    struct ObjectNode *listHead = &gObjectLists[get_object_list_from_behavior(behaviorAddr)];\n\n    obj = (struct Object *) listHead->next;\n    while (obj != (struct Object *) listHead) {\n        if (obj->behavior == behaviorAddr && obj->activeFlags != ACTIVE_FLAG_DEACTIVATED) {\n            obj->parentObj = lastObject;\n            lastObject = obj;\n        }\n\n        obj = (struct Object *) obj->header.next;\n    }\n\n    return lastObject;\n}\n\n/**\n * Select a random hole that is within minDistToMario and 1500 of mario, and\n * whose cooldown is zero. Return NULL if no hole is available.\n */\nstatic struct Object *monty_mole_select_available_hole(f32 minDistToMario) {\n    struct Object *hole = sMontyMoleHoleList;\n    s32 numAvailableHoles = 0;\n\n    while (hole != NULL) {\n        if (hole->oMontyMoleHoleCooldown == 0) {\n            if (hole->oDistanceToMario < 1500.0f && hole->oDistanceToMario > minDistToMario) {\n                numAvailableHoles++;\n            }\n        }\n\n        hole = hole->parentObj;\n    }\n\n    if (numAvailableHoles != 0) {\n        s32 selectedHole = (s32)(random_float() * numAvailableHoles);\n\n        hole = sMontyMoleHoleList;\n        numAvailableHoles = 0;\n\n        while (hole != NULL) {\n            if (hole->oMontyMoleHoleCooldown == 0) {\n                if (hole->oDistanceToMario < 1500.0f && hole->oDistanceToMario > minDistToMario) {\n                    if (numAvailableHoles == selectedHole) {\n                        return hole;\n                    }\n\n                    numAvailableHoles++;\n                }\n            }\n\n            hole = hole->parentObj;\n        }\n    }\n\n    return NULL;\n}\n\n/**\n * Update function for bhvMontyMoleHole.\n */\nvoid bhv_monty_mole_hole_update(void) {\n    // If hole list hasn't been constructed yet, construct it\n    if (o->parentObj == o) {\n        sMontyMoleHoleList = link_objects_with_behavior(bhvMontyMoleHole);\n        sMontyMoleKillStreak = 0;\n    } else if (o->oMontyMoleHoleCooldown > 0) {\n        o->oMontyMoleHoleCooldown--;\n    }\n}\n\n/**\n * Spawn dirt particles when rising out of the ground.\n */\nvoid monty_mole_spawn_dirt_particles(s8 offsetY, s8 velYBase) {\n    static struct SpawnParticlesInfo montyMoleRiseFromGroundParticles = {\n        /* bhvParam:        */ 0,\n        /* count:           */ 3,\n        /* model:           */ MODEL_SAND_DUST,\n        /* offsetY:         */ 0,\n        /* forwardVelBase:  */ 4,\n        /* forwardVelRange: */ 4,\n        /* velYBase:        */ 10,\n        /* velYRange:       */ 15,\n        /* gravity:         */ -4,\n        /* dragStrength:    */ 0,\n        /* sizeBase:        */ 10.0f,\n        /* sizeRange:       */ 7.0f,\n    };\n\n    montyMoleRiseFromGroundParticles.offsetY = offsetY;\n    montyMoleRiseFromGroundParticles.velYBase = velYBase;\n\n    cur_obj_spawn_particles(&montyMoleRiseFromGroundParticles);\n}\n\n/**\n * Init function for bhvMontyMole.\n */\nvoid bhv_monty_mole_init(void) {\n    o->oMontyMoleCurrentHole = NULL;\n}\n\n/**\n * Search for an available hole. Once one is available, claim it and enter\n * either the rise from hole or jump out of hole action.\n */\nstatic void monty_mole_act_select_hole(void) {\n    f32 minDistToMario;\n\n    if (o->oBhvParams2ndByte != MONTY_MOLE_BP_NO_ROCK) {\n        minDistToMario = 200.0f;\n    } else if (gMarioStates[0].forwardVel < 8.0f) {\n        minDistToMario = 100.0f;\n    } else {\n        minDistToMario = 500.0f;\n    }\n\n    // Select a hole to pop out of\n    if ((o->oMontyMoleCurrentHole = monty_mole_select_available_hole(minDistToMario)) != NULL) {\n        cur_obj_play_sound_2(SOUND_OBJ2_MONTY_MOLE_APPEAR);\n\n        // Mark hole as unavailable\n        o->oMontyMoleCurrentHole->oMontyMoleHoleCooldown = -1;\n\n        // Position at hole\n        o->oPosX = o->oMontyMoleCurrentHole->oPosX;\n        o->oPosY = o->oFloorHeight = o->oMontyMoleCurrentHole->oPosY;\n        o->oPosZ = o->oMontyMoleCurrentHole->oPosZ;\n\n        o->oFaceAnglePitch = 0;\n        o->oMoveAngleYaw = o->oMontyMoleCurrentHole->oAngleToMario;\n\n        if (o->oDistanceToMario > 500.0f || minDistToMario > 100.0f || random_sign() < 0) {\n            o->oAction = MONTY_MOLE_ACT_RISE_FROM_HOLE;\n            o->oVelY = 3.0f;\n            o->oGravity = 0.0f;\n            monty_mole_spawn_dirt_particles(0, 10);\n        } else {\n            o->oAction = MONTY_MOLE_ACT_JUMP_OUT_OF_HOLE;\n            o->oVelY = 50.0f;\n            o->oGravity = -4.0f;\n            monty_mole_spawn_dirt_particles(0, 20);\n        }\n\n        cur_obj_unhide();\n        cur_obj_become_tangible();\n    }\n}\n\n/**\n * Move upward until high enough, then enter the spawn rock action.\n */\nstatic void monty_mole_act_rise_from_hole(void) {\n    cur_obj_init_animation_with_sound(1);\n\n    if (o->oMontyMoleHeightRelativeToFloor >= 49.0f) {\n        o->oPosY = o->oFloorHeight + 50.0f;\n        o->oVelY = 0.0f;\n\n        if (cur_obj_check_if_near_animation_end()) {\n            o->oAction = MONTY_MOLE_ACT_SPAWN_ROCK;\n        }\n    }\n}\n\n/**\n * If mario is close enough, then spawn a rock and enter the throw rock action.\n * Otherwise, enter the begin jump into hole action.\n */\nstatic void monty_mole_act_spawn_rock(void) {\n    struct Object *rock;\n\n    if (cur_obj_init_anim_and_check_if_end(2)) {\n        if (o->oBhvParams2ndByte != MONTY_MOLE_BP_NO_ROCK\n            && abs_angle_diff(o->oAngleToMario, o->oMoveAngleYaw) < 0x4000\n            && (rock = spawn_object(o, MODEL_PEBBLE, bhvMontyMoleRock)) != NULL) {\n            o->prevObj = rock;\n            o->oAction = MONTY_MOLE_ACT_THROW_ROCK;\n        } else {\n            o->oAction = MONTY_MOLE_ACT_BEGIN_JUMP_INTO_HOLE;\n        }\n    }\n}\n\n/**\n * Wait until mario is relatively close, then set vely to 40 and enter the jump\n * into hole action.\n */\nstatic void monty_mole_act_begin_jump_into_hole(void) {\n    if (cur_obj_init_anim_and_check_if_end(3) || obj_is_near_to_and_facing_mario(1000.0f, 0x4000)) {\n        o->oAction = MONTY_MOLE_ACT_JUMP_INTO_HOLE;\n        o->oVelY = 40.0f;\n        o->oGravity = -6.0f;\n    }\n}\n\n/**\n * Throw the held rock, then enter the begin jump into hole action.\n */\nstatic void monty_mole_act_throw_rock(void) {\n    if (cur_obj_init_anim_check_frame(8, 10)) {\n        cur_obj_play_sound_2(SOUND_OBJ_MONTY_MOLE_ATTACK);\n        o->prevObj = NULL;\n    }\n\n    if (cur_obj_check_if_near_animation_end()) {\n        o->oAction = MONTY_MOLE_ACT_BEGIN_JUMP_INTO_HOLE;\n    }\n}\n\n/**\n * Tilt downward and wait until close to landing, then enter the hide action.\n */\nstatic void monty_mole_act_jump_into_hole(void) {\n    cur_obj_init_anim_extend(0);\n\n    o->oFaceAnglePitch = -atan2s(o->oVelY, -4.0f);\n\n    if (o->oVelY < 0.0f && o->oMontyMoleHeightRelativeToFloor < 120.0f) {\n        o->oAction = MONTY_MOLE_ACT_HIDE;\n        o->oGravity = 0.0f;\n        monty_mole_spawn_dirt_particles(-80, 15);\n    }\n}\n\n/**\n * Become intangible and enter the select hole action.\n */\nstatic void monty_mole_hide_in_hole(void) {\n    o->oMontyMoleCurrentHole->oMontyMoleHoleCooldown = 30;\n    o->oAction = MONTY_MOLE_ACT_SELECT_HOLE;\n    o->oVelY = 0.0f;\n\n    //! Even though the object becomes intangible here, it is still possible\n    //  for a bob-omb to interact with it later in the frame (since bob-ombs\n    //  come after monty moles in processing order).\n    //  This means that the monty mole can be attacked while in the select hole\n    //  action. If no hole is available (e.g. because mario is too far away),\n    //  the game will crash because of the line above that accesses\n    //  oMontyMoleCurrentHole.\n    cur_obj_become_intangible();\n}\n\n/**\n * Wait to land on the floor, then hide.\n */\nstatic void monty_mole_act_hide(void) {\n    cur_obj_init_animation_with_sound(1);\n\n    if (o->oMoveFlags & OBJ_MOVE_MASK_ON_GROUND) {\n        cur_obj_hide();\n        monty_mole_hide_in_hole();\n    } else {\n        approach_f32_ptr(&o->oVelY, -4.0f, 0.5f);\n    }\n}\n\n/**\n * Jump upward and then fall back down. Then enter the begin jump into hole\n * action.\n */\nstatic void monty_mole_act_jump_out_of_hole(void) {\n    if (o->oVelY > 0.0f) {\n        cur_obj_init_animation_with_sound(9);\n    } else {\n        cur_obj_init_anim_extend(4);\n\n        if (o->oMontyMoleHeightRelativeToFloor < 50.0f) {\n            o->oPosY = o->oFloorHeight + 50.0f;\n            o->oAction = MONTY_MOLE_ACT_BEGIN_JUMP_INTO_HOLE;\n            o->oVelY = o->oGravity = 0.0f;\n        }\n    }\n}\n\n/**\n * Hitbox for monty mole.\n */\nstatic struct ObjectHitbox sMontyMoleHitbox = {\n    /* interactType:      */ INTERACT_BOUNCE_TOP,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 2,\n    /* health:            */ -1,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 70,\n    /* height:            */ 50,\n    /* hurtboxRadius:     */ 30,\n    /* hurtboxHeight:     */ 40,\n};\n\n/**\n * Update function for bhvMontyMole.\n */\nvoid bhv_monty_mole_update(void) {\n    // PARTIAL_UPDATE\n\n    o->oDeathSound = SOUND_OBJ_DYING_ENEMY1;\n    cur_obj_update_floor_and_walls();\n\n    o->oMontyMoleHeightRelativeToFloor = o->oPosY - o->oFloorHeight;\n\n    switch (o->oAction) {\n        case MONTY_MOLE_ACT_SELECT_HOLE:\n            monty_mole_act_select_hole();\n            break;\n        case MONTY_MOLE_ACT_RISE_FROM_HOLE:\n            monty_mole_act_rise_from_hole();\n            break;\n        case MONTY_MOLE_ACT_SPAWN_ROCK:\n            monty_mole_act_spawn_rock();\n            break;\n        case MONTY_MOLE_ACT_BEGIN_JUMP_INTO_HOLE:\n            monty_mole_act_begin_jump_into_hole();\n            break;\n        case MONTY_MOLE_ACT_THROW_ROCK:\n            monty_mole_act_throw_rock();\n            break;\n        case MONTY_MOLE_ACT_JUMP_INTO_HOLE:\n            monty_mole_act_jump_into_hole();\n            break;\n        case MONTY_MOLE_ACT_HIDE:\n            monty_mole_act_hide();\n            break;\n        case MONTY_MOLE_ACT_JUMP_OUT_OF_HOLE:\n            monty_mole_act_jump_out_of_hole();\n            break;\n    }\n\n    // Spawn a 1-up if you kill 8 monty moles\n    if (obj_check_attacks(&sMontyMoleHitbox, o->oAction) != 0) {\n        if (sMontyMoleKillStreak != 0) {\n            f32 dx = o->oPosX - sMontyMoleLastKilledPosX;\n            f32 dy = o->oPosY - sMontyMoleLastKilledPosY;\n            f32 dz = o->oPosZ - sMontyMoleLastKilledPosZ;\n\n            f32 distToLastKill = sqrtf(dx * dx + dy * dy + dz * dz);\n\n            //! The two farthest holes on the bottom level of TTM are more than\n            //  1500 units away from each other, so the counter resets if you\n            //  attack moles in these holes consecutively.\n            if (distToLastKill < 1500.0f) {\n                if (sMontyMoleKillStreak == 7) {\n                    play_puzzle_jingle();\n                    spawn_object(o, MODEL_1UP, bhv1UpWalking);\n                }\n            } else {\n                sMontyMoleKillStreak = 0;\n            }\n        }\n\n        //! No overflow check\n        sMontyMoleKillStreak++;\n\n        sMontyMoleLastKilledPosX = o->oPosX;\n        sMontyMoleLastKilledPosY = o->oPosY;\n        sMontyMoleLastKilledPosZ = o->oPosZ;\n\n        monty_mole_hide_in_hole();\n\n        // Throw rock if holding one\n        o->prevObj = NULL;\n    }\n\n    cur_obj_move_standard(78);\n}\n\n/**\n * Wait for monty mole to throw the rock, then enter the move action.\n */\nstatic void monty_mole_rock_act_held(void) {\n    // The position is offset since the monty mole is throwing it with its hand\n    o->oParentRelativePosX = 80.0f;\n    o->oParentRelativePosY = -50.0f;\n    o->oParentRelativePosZ = 0.0f;\n\n    if (o->parentObj->prevObj == NULL) {\n        f32 distToMario = o->oDistanceToMario;\n        if (distToMario > 600.0f) {\n            distToMario = 600.0f;\n        }\n\n        o->oAction = MONTY_MOLE_ROCK_ACT_MOVE;\n\n        // The angle is adjusted to compensate for the start position offset\n        o->oMoveAngleYaw = (s32)(o->parentObj->oMoveAngleYaw + 500 - distToMario * 0.1f);\n\n        o->oForwardVel = 40.0f;\n        o->oVelY = distToMario * 0.08f + 8.0f;\n\n        o->oMoveFlags = 0;\n    }\n}\n\n/**\n * Hitbox for monty mole rock.\n */\nstatic struct ObjectHitbox sMontyMoleRockHitbox = {\n    /* interactType:      */ INTERACT_MR_BLIZZARD,\n    /* downOffset:        */ 15,\n    /* damageOrCoinValue: */ 1,\n    /* health:            */ 99,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 30,\n    /* height:            */ 15,\n    /* hurtboxRadius:     */ 30,\n    /* hurtboxHeight:     */ 15,\n};\n\n/**\n * The particles that spawn when a monty mole rock breaks.\n */\nstatic struct SpawnParticlesInfo sMontyMoleRockBreakParticles = {\n    /* bhvParam:        */ 0,\n    /* count:           */ 2,\n    /* model:           */ MODEL_PEBBLE,\n    /* offsetY:         */ 10,\n    /* forwardVelBase:  */ 4,\n    /* forwardVelRange: */ 4,\n    /* velYBase:        */ 10,\n    /* velYRange:       */ 15,\n    /* gravity:         */ -4,\n    /* dragStrength:    */ 0,\n    /* sizeBase:        */ 8.0f,\n    /* sizeRange:       */ 4.0f,\n};\n\n/**\n * Move, then despawn after hitting the ground or water.\n */\nstatic void monty_mole_rock_act_move(void) {\n    cur_obj_update_floor_and_walls();\n\n    if (o->oMoveFlags & (OBJ_MOVE_MASK_ON_GROUND | OBJ_MOVE_ENTERED_WATER)) {\n        cur_obj_spawn_particles(&sMontyMoleRockBreakParticles);\n        obj_mark_for_deletion(o);\n    }\n\n    cur_obj_move_standard(78);\n}\n\n/**\n * Update function for bhvMontyMoleRock.\n */\nvoid bhv_monty_mole_rock_update(void) {\n    // PARTIAL_UPDATE\n    //! Since we can prevent them from despawning using partial updates, we\n    //  can fill up object slots to crash the game.\n\n    obj_check_attacks(&sMontyMoleRockHitbox, o->oAction);\n\n    switch (o->oAction) {\n        case MONTY_MOLE_ROCK_ACT_HELD:\n            monty_mole_rock_act_held();\n            break;\n        case MONTY_MOLE_ROCK_ACT_MOVE:\n            monty_mole_rock_act_move();\n            break;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/moving_coin.inc.c",
    "content": "// moving_coin.inc.c\n\nstatic struct ObjectHitbox sMovingYellowCoinHitbox = {\n    /* interactType:      */ INTERACT_COIN,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 1,\n    /* health:            */ 0,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 100,\n    /* height:            */ 64,\n    /* hurtboxRadius:     */ 0,\n    /* hurtboxHeight:     */ 0,\n};\n\nstatic struct ObjectHitbox sMovingBlueCoinHitbox = {\n    /* interactType:      */ INTERACT_COIN,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 5,\n    /* health:            */ 0,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 100,\n    /* height:            */ 64,\n    /* hurtboxRadius:     */ 0,\n    /* hurtboxHeight:     */ 0,\n};\n\ns32 coin_step(s16 *collisionFlagsPtr) {\n    *collisionFlagsPtr = object_step();\n\n    obj_check_floor_death(*collisionFlagsPtr, sObjFloor);\n\n    if ((*collisionFlagsPtr & OBJ_COL_FLAG_GROUNDED)\n        && !(*collisionFlagsPtr & OBJ_COL_FLAG_NO_Y_VEL)) {\n        cur_obj_play_sound_2(SOUND_GENERAL_COIN_DROP);\n        return TRUE;\n    }\n\n    return FALSE;\n}\n\nvoid moving_coin_flicker(void) {\n    s16 collisionFlags;\n\n    coin_step(&collisionFlags);\n    obj_flicker_and_disappear(o, 0);\n}\n\nvoid coin_collected(void) {\n    spawn_object(o, MODEL_SPARKLES, bhvGoldenCoinSparkles);\n    o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n}\n\nvoid bhv_moving_yellow_coin_init(void) {\n    o->oGravity = 3.0f;\n    o->oFriction = 1.0f;\n    o->oBuoyancy = 1.5f;\n\n    obj_set_hitbox(o, &sMovingYellowCoinHitbox);\n}\n\nvoid bhv_moving_yellow_coin_loop(void) {\n    s16 collisionFlags;\n\n    switch (o->oAction) {\n        case MOV_YCOIN_ACT_IDLE:\n            coin_step(&collisionFlags);\n\n            if (o->oTimer < 10) {\n                cur_obj_become_intangible();\n            } else {\n                cur_obj_become_tangible();\n            }\n\n            if (o->oTimer > 300) {\n                o->oAction = MOV_YCOIN_ACT_BLINKING;\n            }\n            break;\n\n        case MOV_YCOIN_ACT_BLINKING:\n            moving_coin_flicker();\n            break;\n\n        case MOV_YCOIN_ACT_LAVA_DEATH:\n            o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n            break;\n\n        case MOV_YCOIN_ACT_DEATH_PLANE_DEATH:\n            o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n            break;\n    }\n\n    if (o->oInteractStatus & INT_STATUS_INTERACTED) {\n        coin_collected();\n        o->oInteractStatus = 0;\n    }\n}\n\nvoid bhv_moving_blue_coin_init(void) {\n    o->oGravity = 5.0f;\n    o->oFriction = 1.0f;\n    o->oBuoyancy = 1.5f;\n\n    obj_set_hitbox(o, &sMovingBlueCoinHitbox);\n}\n\nvoid bhv_moving_blue_coin_loop(void) {\n    s16 collisionFlags;\n\n    switch (o->oAction) {\n        case MOV_BCOIN_ACT_STILL:\n            if (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 1500)) {\n                o->oAction = MOV_BCOIN_ACT_MOVING;\n            }\n            break;\n\n        case MOV_BCOIN_ACT_MOVING:\n            collisionFlags = object_step();\n\n            if (collisionFlags & OBJ_COL_FLAG_GROUNDED) {\n                o->oForwardVel += 25.0f;\n                if (!(collisionFlags & OBJ_COL_FLAG_NO_Y_VEL)) {\n                    cur_obj_play_sound_2(SOUND_GENERAL_COIN_DROP);\n                }\n            } else {\n                o->oForwardVel *= 0.98;\n            }\n\n            if (o->oForwardVel > 75.0) {\n                o->oForwardVel = 75.0f;\n            }\n\n            obj_flicker_and_disappear(o, 600);\n            break;\n    }\n\n    if (o->oInteractStatus & INT_STATUS_INTERACTED) {\n        coin_collected();\n        o->oInteractStatus = 0;\n    }\n}\n\nvoid bhv_blue_coin_sliding_jumping_init(void) {\n    o->oGravity = 3.0;\n    o->oFriction = 0.98;\n    o->oBuoyancy = 1.5;\n\n    obj_set_hitbox(o, &sMovingBlueCoinHitbox);\n}\n\nvoid blue_coin_sliding_away_from_mario(void) {\n    s16 collisionFlags;\n\n    o->oForwardVel = 15.0;\n    o->oMoveAngleYaw = o->oAngleToMario + 0x8000;\n\n    if (coin_step(&collisionFlags)) {\n        o->oVelY += 18.0f;\n    }\n\n    if (collisionFlags & OBJ_COL_FLAG_HIT_WALL) {\n        o->oAction = 3;\n    }\n\n    if (!is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 1000)) {\n        o->oAction = 2;\n    }\n}\n\nvoid blue_coin_sliding_slow_down(void) {\n    s16 collisionFlags;\n\n    coin_step(&collisionFlags);\n\n    if (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 500) == TRUE) {\n        o->oAction = 1;\n    }\n\n    if (o->oTimer > 150) {\n        o->oAction = 3;\n    }\n}\n\nvoid bhv_blue_coin_sliding_loop(void) {\n    s16 collisionFlags;\n\n    switch (o->oAction) {\n        case 0:\n            if (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 500) == TRUE) {\n                o->oAction = 1;\n            }\n\n            set_object_visibility(o, 3000);\n            break;\n\n        case 1:\n            blue_coin_sliding_away_from_mario();\n            break;\n\n        case 2:\n            blue_coin_sliding_slow_down();\n            set_object_visibility(o, 3000);\n            break;\n\n        case 3:\n            coin_step(&collisionFlags);\n            if (o->oTimer > 60) {\n                o->oAction = 4;\n            }\n            break;\n\n        case 4:\n            moving_coin_flicker();\n            break;\n\n        case 100:\n            o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n            break;\n\n        case 101:\n            o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n            break;\n    }\n\n    if (o->oInteractStatus & INT_STATUS_INTERACTED) {\n        coin_collected();\n        o->oInteractStatus = 0;\n    }\n}\n\nvoid bhv_blue_coin_jumping_loop(void) {\n    s16 collisionFlags;\n\n    switch (o->oAction) {\n        case 0:\n            if (o->oTimer == 0) {\n                cur_obj_become_intangible();\n                o->oVelY = 50.0;\n            }\n\n            object_step();\n\n            if (o->oTimer == 15) {\n                cur_obj_become_tangible();\n                o->oAction = 1;\n            }\n            break;\n\n        case 1:\n            blue_coin_sliding_away_from_mario();\n            break;\n\n        case 2:\n            blue_coin_sliding_slow_down();\n            set_object_visibility(o, 3000);\n            break;\n\n        case 3:\n            coin_step(&collisionFlags);\n            if (o->oTimer > 60) {\n                o->oAction = 4;\n            }\n            break;\n\n        case 4:\n            moving_coin_flicker();\n            break;\n    }\n\n    if (o->oInteractStatus & INT_STATUS_INTERACTED) {\n        coin_collected();\n        o->oInteractStatus = 0;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/mr_blizzard.inc.c",
    "content": "// mr_blizzard.inc.c\n\n// Mr. Blizzard hitbox\nstruct ObjectHitbox sMrBlizzardHitbox = {\n    /* interactType:      */ INTERACT_MR_BLIZZARD,\n    /* downOffset:        */ 24,\n    /* damageOrCoinValue: */ 2,\n    /* health:            */ 99,\n    /* numLootCoins:      */ 3,\n    /* radius:            */ 65,\n    /* height:            */ 170,\n    /* hurtboxRadius:     */ 65,\n    /* hurtboxHeight:     */ 170,\n};\n\n// Mr. Blizzard particle spawner.\nvoid mr_blizzard_spawn_white_particles(s8 count, s8 offsetY, s8 forwardVelBase, s8 velYBase,\n                                       s8 sizeBase) {\n    static struct SpawnParticlesInfo D_80331A00 = {\n        /* bhvParam:        */ 0,\n        /* count:           */ 6,\n        /* model:           */ MODEL_WHITE_PARTICLE,\n        /* offsetY:         */ 0,\n        /* forwardVelBase:  */ 5,\n        /* forwardVelRange: */ 5,\n        /* velYBase:        */ 10,\n        /* velYRange:       */ 10,\n        /* gravity:         */ -3,\n        /* dragStrength:    */ 0,\n        /* sizeBase:        */ 3.0f,\n        /* sizeRange:       */ 5.0f,\n    };\n\n    D_80331A00.count = count;\n    D_80331A00.offsetY = offsetY;\n    D_80331A00.forwardVelBase = forwardVelBase;\n    D_80331A00.velYBase = velYBase;\n    D_80331A00.sizeBase = sizeBase;\n\n    cur_obj_spawn_particles(&D_80331A00);\n}\n\n/**\n * Mr. Blizzard initialization function.\n */\nvoid bhv_mr_blizzard_init(void) {\n    if (o->oBhvParams2ndByte == MR_BLIZZARD_STYPE_JUMPING) {\n        // Jumping Mr. Blizzard.\n        o->oAction = MR_BLIZZARD_ACT_JUMP;\n        o->oMrBlizzardGraphYOffset = 24.0f;\n        o->oMrBlizzardTargetMoveYaw = o->oMoveAngleYaw;\n    } else {\n        // Cap wearing Mr. Blizzard from SL.\n        if ((o->oBhvParams2ndByte != MR_BLIZZARD_STYPE_GENERIC)\n            && (save_file_get_flags() & SAVE_FLAG_CAP_ON_MR_BLIZZARD)) {\n            o->oAnimState = 1;\n        }\n\n        // Mr. Blizzard starts under the floor holding nothing.\n        o->oMrBlizzardGraphYOffset = -200.0f;\n        o->oMrBlizzardHeldObj = NULL;\n    }\n}\n\n/**\n * Handler for spawning Mr. Blizzard's snowball.\n */\nstatic void mr_blizzard_act_spawn_snowball(void) {\n    // If Mr. Blizzard is not holding a snowball, and the animation reaches 5 frames\n    // spawn the Mr. Blizzard snowball.\n    if (o->oMrBlizzardHeldObj == NULL && cur_obj_init_anim_check_frame(0, 5)) {\n        o->oMrBlizzardHeldObj =\n            spawn_object_relative(0, -70, (s32)(o->oMrBlizzardGraphYOffset + 153.0f), 0, o,\n                                  MODEL_WHITE_PARTICLE, bhvMrBlizzardSnowball);\n    } else if (cur_obj_check_anim_frame(10)) {\n        o->prevObj = o->oMrBlizzardHeldObj;\n    } else if (cur_obj_check_if_near_animation_end()) {\n        // If Mr. Blizzard's graphical position is below the ground, move to hide and unhide action.\n        // Otherwise, move to rotate action.\n        if (o->oMrBlizzardGraphYOffset < 0.0f) {\n            o->oAction = MR_BLIZZARD_ACT_HIDE_UNHIDE;\n        } else {\n            o->oAction = MR_BLIZZARD_ACT_ROTATE;\n        }\n    }\n}\n\n/**\n * Handler for Mario entering or exiting Mr. Blizzard's range.\n */\nstatic void mr_blizzard_act_hide_unhide(void) {\n    if (o->oDistanceToMario < 1000.0f) {\n        // If Mario is in range, move to rising action, make Mr. Blizzard visible,\n        // make Mr. Blizzard tangible, and initialize GraphYVel.\n        cur_obj_play_sound_2(SOUND_OBJ_SNOW_SAND2);\n        o->oAction = MR_BLIZZARD_ACT_RISE_FROM_GROUND;\n        o->oMoveAngleYaw = o->oAngleToMario;\n        o->oMrBlizzardGraphYVel = 42.0f;\n\n        mr_blizzard_spawn_white_particles(8, -10, 15, 20, 10);\n        cur_obj_unhide();\n        cur_obj_become_tangible();\n    } else {\n        // If Mario is not in range, make Mr. Blizzard invisible.\n        cur_obj_hide();\n    }\n}\n\n/**\n * Handler for Mr. Blizzard popping up out of the ground.\n */\nstatic void mr_blizzard_act_rise_from_ground(void) {\n    // If the timer is not 0, decrement by 1 until it reaches 0.\n    if (o->oMrBlizzardTimer != 0) {\n        o->oMrBlizzardTimer--;\n    } else if ((o->oMrBlizzardGraphYOffset += o->oMrBlizzardGraphYVel) > 24.0f) {\n        // Increments GraphYOffset by GraphYVel until it is greater than 24,\n        // moving Mr. Blizzard's graphical position upward each frame.\n        // Then, Mr. Blizzard's Y-position is increased by the value of\n        // GraphYOffset minus 24, GraphYOffset is\n        // set to 24, VelY is set to GraphYVel and action is moved to rotate.\n        o->oPosY += o->oMrBlizzardGraphYOffset - 24.0f;\n        o->oMrBlizzardGraphYOffset = 24.0f;\n\n        mr_blizzard_spawn_white_particles(8, -20, 20, 15, 10);\n\n        o->oAction = MR_BLIZZARD_ACT_ROTATE;\n        o->oVelY = o->oMrBlizzardGraphYVel;\n    } else if ((o->oMrBlizzardGraphYVel -= 10.0f) < 0.0f) {\n        // Decrement GraphYOffset until it is less than 0.\n        // When it is less than 0, set it to 47 and set timer to 5.\n        o->oMrBlizzardGraphYVel = 47.0f;\n        o->oMrBlizzardTimer = 5;\n    }\n}\n\n/**\n * Handler for Mr. Blizzard's rotation.\n */\nstatic void mr_blizzard_act_rotate(void) {\n    // While Mr. Blizzard is on the ground, rotate toward Mario at\n    // 8.4375 degrees/frame.\n    if (o->oMoveFlags & OBJ_MOVE_MASK_ON_GROUND) {\n        s16 angleDiff;\n        cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x600);\n\n        // Modify the ChangeInDizziness based on Mario's angle to Mr. Blizzard.\n        angleDiff = o->oAngleToMario - o->oMoveAngleYaw;\n        if (angleDiff != 0) {\n            if (angleDiff < 0) {\n                o->oMrBlizzardChangeInDizziness -= 8.0f;\n            } else {\n                o->oMrBlizzardChangeInDizziness += 8.0f;\n            }\n\n            // Incremement Dizziness by value of ChangeInDizziness\n            o->oMrBlizzardDizziness += o->oMrBlizzardChangeInDizziness;\n        } else if (o->oMrBlizzardDizziness != 0.0f) {\n            f32 prevDizziness = o->oMrBlizzardDizziness;\n            // Slowly move Dizziness back to 0 by making ChangeInDizziness positive if Dizziness\n            // is negative, and making ChangeInDizziness negative if Dizziness is positive.\n            if (o->oMrBlizzardDizziness < 0.0f) {\n                approach_f32_ptr(&o->oMrBlizzardChangeInDizziness, 1000.0f, 80.0f);\n            } else {\n                approach_f32_ptr(&o->oMrBlizzardChangeInDizziness, -1000.0f, 80.0f);\n            }\n\n            o->oMrBlizzardDizziness += o->oMrBlizzardChangeInDizziness;\n            // If prevDizziness has a different sign than Dizziness,\n            // set Dizziness and ChangeInDizziness to 0.\n            if (prevDizziness * o->oMrBlizzardDizziness < 0.0f) {\n                o->oMrBlizzardDizziness = o->oMrBlizzardChangeInDizziness = 0.0f;\n            }\n        }\n        // If Dizziness is not 0 and Mr. Blizzard's FaceRollAngle has a magnitude greater than\n        // 67.5 degrees move to death action, delete the snowball, and make Mr. Blizzard intangible.\n        if (o->oMrBlizzardDizziness != 0.0f) {\n            if (absi(o->oFaceAngleRoll) > 0x3000) {\n                o->oAction = MR_BLIZZARD_ACT_DEATH;\n                o->prevObj = o->oMrBlizzardHeldObj = NULL;\n                cur_obj_become_intangible();\n            }\n        }\n        // If Mario gets too far away, move to burrow action and delete the snowball.\n        else if (o->oDistanceToMario > 1500.0f) {\n            o->oAction = MR_BLIZZARD_ACT_BURROW;\n            o->oMrBlizzardChangeInDizziness = 300.0f;\n            o->prevObj = o->oMrBlizzardHeldObj = NULL;\n        }\n        // After 60 frames, if Mario is within 11.25 degrees of Mr. Blizzard, throw snowball action.\n        else if (o->oTimer > 60 && abs_angle_diff(o->oAngleToMario, o->oMoveAngleYaw) < 0x800) {\n            o->oAction = MR_BLIZZARD_ACT_THROW_SNOWBALL;\n        }\n    }\n}\n\n/**\n * Handler for Mr. Blizzard's death.\n */\nstatic void mr_blizzard_act_death(void) {\n    if (clamp_f32(&o->oMrBlizzardDizziness, -0x4000, 0x4000)) {\n        if (o->oMrBlizzardChangeInDizziness != 0.0f) {\n            cur_obj_play_sound_2(SOUND_OBJ_SNOW_SAND1);\n            // If Mr. Blizzard is wearing Mario's cap, clear\n            // the save flag and spawn Mario's cap.\n            if (o->oAnimState != 0) {\n                struct Object *cap;\n                save_file_clear_flags(SAVE_FLAG_CAP_ON_MR_BLIZZARD);\n\n                cap = spawn_object_relative(0, 5, 105, 0, o, MODEL_MARIOS_CAP, bhvNormalCap);\n                if (cap != NULL) {\n                    cap->oMoveAngleYaw = o->oFaceAngleYaw + (o->oFaceAngleRoll < 0 ? 0x4000 : -0x4000);\n                    cap->oForwardVel = 10.0f;\n                }\n\n                // Mr. Blizzard no longer spawns with Mario's cap on.\n                o->oAnimState = 0;\n            }\n\n            o->oMrBlizzardChangeInDizziness = 0.0f;\n        }\n    } else {\n        if (o->oMrBlizzardDizziness < 0) {\n            o->oMrBlizzardChangeInDizziness -= 40.0f;\n        } else {\n            o->oMrBlizzardChangeInDizziness += 40.0f;\n        }\n\n        o->oMrBlizzardDizziness += o->oMrBlizzardChangeInDizziness;\n    }\n\n    // After 30 frames, play the defeat sound once and scale Mr. Blizzard down to 0\n    // at .03 units per frame. Spawn coins and set the coins to not respawn.\n    if (o->oTimer >= 30) {\n        if (o->oTimer == 30) {\n            cur_obj_play_sound_2(SOUND_OBJ_ENEMY_DEFEAT_SHRINK);\n        }\n\n        if (o->oMrBlizzardScale != 0.0f) {\n            if ((o->oMrBlizzardScale -= 0.03f) <= 0.0f) {\n                o->oMrBlizzardScale = 0.0f;\n                if (!(o->oBhvParams & 0x0000FF00)) {\n                    obj_spawn_loot_yellow_coins(o, o->oNumLootCoins, 20.0f);\n                    set_object_respawn_info_bits(o, 1);\n                }\n            }\n        }\n        // Reset Mr. Blizzard if Mario leaves its radius.\n        else if (o->oDistanceToMario > 1000.0f) {\n            cur_obj_init_animation_with_sound(1);\n\n            o->oAction = MR_BLIZZARD_ACT_SPAWN_SNOWBALL;\n            o->oMrBlizzardScale = 1.0f;\n            o->oMrBlizzardGraphYOffset = -200.0f;\n            o->oFaceAngleRoll = 0;\n            o->oMrBlizzardDizziness = o->oMrBlizzardChangeInDizziness = 0.0f;\n        }\n    }\n}\n\n/**\n * Handler for snowball throw.\n */\nstatic void mr_blizzard_act_throw_snowball(void) {\n    // Play a sound and set HeldObj to NULL. Then set action to 0.\n    if (cur_obj_init_anim_check_frame(1, 7)) {\n        cur_obj_play_sound_2(SOUND_OBJ2_SCUTTLEBUG_ALERT);\n        o->prevObj = o->oMrBlizzardHeldObj = NULL;\n    } else if (cur_obj_check_if_near_animation_end()) {\n        o->oAction = MR_BLIZZARD_ACT_SPAWN_SNOWBALL;\n    }\n}\n\n/**\n * Mr. Blizzard's going back into the ground function.\n */\nstatic void mr_blizzard_act_burrow(void) {\n    // Reset Dizziness by increasing ChangeInDizziness if\n    // dizziness is negative and decreasing it if Dizziness\n    o->oMrBlizzardDizziness += o->oMrBlizzardChangeInDizziness;\n\n    if (o->oMrBlizzardDizziness < 0.0f) {\n        o->oMrBlizzardChangeInDizziness += 150.0f;\n    } else {\n        o->oMrBlizzardChangeInDizziness -= 150.0f;\n    }\n    // Put Mr. Blizzard's graphical position back below ground\n    // then move to action 0.\n    if (approach_f32_ptr(&o->oMrBlizzardGraphYOffset, -200.0f, 4.0f)) {\n        o->oAction = MR_BLIZZARD_ACT_SPAWN_SNOWBALL;\n        cur_obj_init_animation_with_sound(1);\n    }\n}\n\n/**\n * Jumping Mr. Blizzard handler function.\n */\nstatic void mr_blizzard_act_jump(void) {\n    if (o->oMrBlizzardTimer != 0) {\n        cur_obj_rotate_yaw_toward(o->oMrBlizzardTargetMoveYaw, 3400);\n\n        if (--o->oMrBlizzardTimer == 0) {\n            cur_obj_play_sound_2(SOUND_OBJ_MR_BLIZZARD_ALERT);\n\n            // If Mr. Blizzard is more than 700 units from its home, change its target yaw\n            // by 180 degrees, jump in the air, set distance from home to 0.\n            if (o->oMrBlizzardDistFromHome > 700) {\n                o->oMrBlizzardTargetMoveYaw += 0x8000;\n                o->oVelY = 25.0f;\n                o->oMrBlizzardTimer = 30;\n                o->oMrBlizzardDistFromHome = 0;\n            }\n            // Jump forward.\n            else {\n                o->oForwardVel = 10.0f;\n                o->oVelY = 50.0f;\n                o->oMoveFlags = 0;\n            }\n        }\n    } else if (o->oMoveFlags & OBJ_MOVE_MASK_ON_GROUND) {\n        // When Mr. Blizzard lands, play the landing sound, stop Mr. Blizzard, and\n        // set its timer to 15. If Mr. Blizzard's DistFromHome is not 0,\n        // set DistFromHome to its current distance from its home.\n        // Otherwise, set DistFromHome to 700.\n        cur_obj_play_sound_2(SOUND_OBJ_SNOW_SAND1);\n        if (o->oMrBlizzardDistFromHome != 0) {\n            o->oMrBlizzardDistFromHome = (s32) cur_obj_lateral_dist_to_home();\n        } else {\n            o->oMrBlizzardDistFromHome = 700;\n        }\n\n        o->oForwardVel = 0.0f;\n        o->oMrBlizzardTimer = 15;\n    }\n}\n\n/**\n * Mr. Blizzard update function.\n */\nvoid bhv_mr_blizzard_update(void) {\n    cur_obj_update_floor_and_walls();\n\n    // Behavior loop\n    switch (o->oAction) {\n        case MR_BLIZZARD_ACT_SPAWN_SNOWBALL:\n            mr_blizzard_act_spawn_snowball();\n            break;\n        case MR_BLIZZARD_ACT_HIDE_UNHIDE:\n            mr_blizzard_act_hide_unhide();\n            break;\n        case MR_BLIZZARD_ACT_RISE_FROM_GROUND:\n            mr_blizzard_act_rise_from_ground();\n            break;\n        case MR_BLIZZARD_ACT_ROTATE:\n            mr_blizzard_act_rotate();\n            break;\n        case MR_BLIZZARD_ACT_THROW_SNOWBALL:\n            mr_blizzard_act_throw_snowball();\n            break;\n        case MR_BLIZZARD_ACT_BURROW:\n            mr_blizzard_act_burrow();\n            break;\n        case MR_BLIZZARD_ACT_DEATH:\n            mr_blizzard_act_death();\n            break;\n        case MR_BLIZZARD_ACT_JUMP:\n            mr_blizzard_act_jump();\n            break;\n    }\n\n    // Set roll angle equal to dizziness, making Mr. Blizzard\n    // slowly fall over.\n    o->oFaceAngleRoll = o->oMrBlizzardDizziness;\n    // Mr. Blizzard's graphical position changes by changing the Y offset.\n    o->oGraphYOffset = o->oMrBlizzardGraphYOffset + absf(20.0f * sins(o->oFaceAngleRoll))\n                       - 40.0f * (1.0f - o->oMrBlizzardScale);\n\n    cur_obj_scale(o->oMrBlizzardScale);\n    cur_obj_move_standard(78);\n    obj_check_attacks(&sMrBlizzardHitbox, o->oAction);\n}\n\n/**\n * Snowball initial takeoff position handler.\n */\nstatic void mr_blizzard_snowball_act_0(void) {\n    cur_obj_move_using_fvel_and_gravity();\n    if (o->parentObj->prevObj == o) {\n        o->oAction = 1;\n        o->oParentRelativePosX = 190.0f;\n        o->oParentRelativePosY = o->oParentRelativePosZ = -38.0f;\n    }\n}\n\n/**\n * Snowball launching action.\n */\nstatic void mr_blizzard_snowball_act_1(void) {\n    if (o->parentObj->prevObj == NULL) {\n        if (o->parentObj->oAction == MR_BLIZZARD_ACT_THROW_SNOWBALL) {\n            f32 marioDist = o->oDistanceToMario;\n            if (marioDist > 800.0f) {\n                marioDist = 800.0f;\n            }\n\n            // Launch the snowball relative to Mario's distance from the snowball.\n            o->oMoveAngleYaw = (s32)(o->parentObj->oMoveAngleYaw + 4000 - marioDist * 4.0f);\n            o->oForwardVel = 40.0f;\n            o->oVelY = -20.0f + marioDist * 0.075f;\n        }\n\n        o->oAction = 2;\n        o->oMoveFlags = 0;\n    }\n}\n\n// Snowball hitbox.\nstruct ObjectHitbox sMrBlizzardSnowballHitbox = {\n    /* interactType:      */ INTERACT_MR_BLIZZARD,\n    /* downOffset:        */ 12,\n    /* damageOrCoinValue: */ 1,\n    /* health:            */ 99,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 30,\n    /* height:            */ 30,\n    /* hurtboxRadius:     */ 25,\n    /* hurtboxHeight:     */ 25,\n};\n\n/**\n * Snowball collision function.\n */\nstatic void mr_blizzard_snowball_act_2(void) {\n    // Set snowball to interact with walls, floors, and Mario.\n    cur_obj_update_floor_and_walls();\n    obj_check_attacks(&sMrBlizzardSnowballHitbox, -1);\n\n    // If snowball collides with the ground, delete snowball.\n    if (o->oAction == -1 || o->oMoveFlags & (OBJ_MOVE_MASK_ON_GROUND | OBJ_MOVE_ENTERED_WATER)) {\n        mr_blizzard_spawn_white_particles(6, 0, 5, 10, 3);\n        create_sound_spawner(SOUND_GENERAL_MOVING_IN_SAND);\n        obj_mark_for_deletion(o);\n    }\n\n    cur_obj_move_standard(78);\n}\n\n/**\n * Snowball behavior loop.\n */\nvoid bhv_mr_blizzard_snowball(void) {\n    switch (o->oAction) {\n        case 0:\n            mr_blizzard_snowball_act_0();\n            break;\n        case 1:\n            mr_blizzard_snowball_act_1();\n            break;\n        case 2:\n            mr_blizzard_snowball_act_2();\n            break;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/mr_i.inc.c",
    "content": "// mr_i.inc.c\n\n// this is actually the MrI particle loop function. piranha\n// plant code later on reuses this function.\nvoid bhv_piranha_particle_loop(void) {\n    if (o->oTimer == 0) {\n        o->oVelY = 20.0f + 20.0f * random_float();\n        o->oForwardVel = 20.0f + 20.0f * random_float();\n        o->oMoveAngleYaw = random_u16();\n    }\n    cur_obj_move_using_fvel_and_gravity();\n}\n\nvoid mr_i_piranha_particle_act_0(void) {\n    cur_obj_scale(3.0f);\n    o->oForwardVel = 20.0f;\n    cur_obj_update_floor_and_walls();\n\n    if (o->oInteractStatus & INT_STATUS_INTERACTED) {\n        o->oAction = 1;\n    } else if ((o->oTimer > 100) || (o->oMoveFlags & OBJ_MOVE_HIT_WALL)\n               || (o->activeFlags & ACTIVE_FLAG_IN_DIFFERENT_ROOM)) {\n        obj_mark_for_deletion(o);\n        spawn_mist_particles();\n    }\n}\n\nvoid mr_i_piranha_particle_act_1(void) {\n    s32 i;\n    obj_mark_for_deletion(o);\n    for (i = 0; i < 10; i++) {\n        spawn_object(o, MODEL_PURPLE_MARBLE, bhvPurpleParticle);\n    }\n}\n\nvoid (*sMrIParticleActions[])(void) = {\n    mr_i_piranha_particle_act_0,\n    mr_i_piranha_particle_act_1,\n};\n\nvoid bhv_mr_i_particle_loop(void) {\n    cur_obj_call_action_function(sMrIParticleActions);\n}\n\nvoid spawn_mr_i_particle(void) {\n    struct Object *particle;\n    f32 sp18 = o->header.gfx.scale[1];\n\n    particle = spawn_object(o, MODEL_PURPLE_MARBLE, bhvMrIParticle);\n    particle->oPosY += 50.0f * sp18;\n    particle->oPosX += sins(o->oMoveAngleYaw) * 90.0f * sp18;\n    particle->oPosZ += coss(o->oMoveAngleYaw) * 90.0f * sp18;\n\n    cur_obj_play_sound_2(SOUND_OBJ_MRI_SHOOT);\n}\n\nvoid bhv_mr_i_body_loop(void) {\n    obj_copy_pos_and_angle(o, o->parentObj);\n\n    if (!(o->activeFlags & ACTIVE_FLAG_IN_DIFFERENT_ROOM)) {\n        obj_copy_scale(o, o->parentObj);\n        obj_set_parent_relative_pos(o, 0, 0, o->header.gfx.scale[1] * 100.0f);\n        obj_build_transform_from_pos_and_angle(o, 44, 15);\n        obj_translate_local(o, 6, 44);\n        o->oFaceAnglePitch = o->oMoveAnglePitch;\n        o->oGraphYOffset = o->header.gfx.scale[1] * 100.0f;\n    }\n\n    if (o->parentObj->oMrIUnk110 != 1) {\n        o->oAnimState = -1;\n    } else {\n        o->oAnimState++;\n        if (o->oAnimState == 15) {\n            o->parentObj->oMrIUnk110 = 0;\n        }\n    }\n\n    if (o->parentObj->activeFlags == ACTIVE_FLAG_DEACTIVATED) {\n        obj_mark_for_deletion(o);\n    }\n}\n\nvoid mr_i_act_3(void) {\n    s16 sp36;\n    s16 sp34;\n    f32 sp30;\n    f32 sp2C;\n    UNUSED u8 filler[8];\n    f32 sp20;\n    f32 sp1C;\n\n    if (o->oBhvParams2ndByte != 0) {\n        sp1C = 2.0f;\n    } else {\n        sp1C = 1.0f;\n    }\n\n    if (o->oMrIUnk100 < 0) {\n        sp34 = 0x1000;\n    } else {\n        sp34 = -0x1000;\n    }\n\n    sp2C = (o->oTimer + 1) / 96.0f;\n\n    if (o->oTimer < 64) {\n        sp36 = o->oMoveAngleYaw;\n        o->oMoveAngleYaw += sp34 * coss(0x4000 * sp2C);\n\n        if (sp36 < 0 && o->oMoveAngleYaw >= 0) {\n            cur_obj_play_sound_2(SOUND_OBJ2_MRI_SPINNING);\n        }\n\n        o->oMoveAnglePitch = (1.0 - coss(0x4000 * sp2C)) * -0x4000;\n        cur_obj_shake_y(4.0f);\n    } else if (o->oTimer < 96) {\n        if (o->oTimer == 64) {\n            cur_obj_play_sound_2(SOUND_OBJ_MRI_DEATH);\n        }\n\n        sp30 = (f32)(o->oTimer - 63) / 32;\n        o->oMoveAngleYaw += sp34 * coss(0x4000 * sp2C);\n        o->oMoveAnglePitch = (1.0 - coss(0x4000 * sp2C)) * -0x4000;\n\n        cur_obj_shake_y((s32)((1.0f - sp30) * 4)); // trucating the f32?\n        sp20 = coss(0x4000 * sp30) * 0.4 + 0.6;\n        cur_obj_scale(sp20 * sp1C);\n    } else if (o->oTimer < 104) {\n        // do nothing\n    } else if (o->oTimer < 168) {\n        if (o->oTimer == 104) {\n            cur_obj_become_intangible();\n            spawn_mist_particles();\n            o->oMrIScale = sp1C * 0.6;\n            if (o->oBhvParams2ndByte != 0) {\n                o->oPosY += 100.0f;\n                spawn_default_star(1370, 2000.0f, -320.0f);\n                obj_mark_for_deletion(o);\n            } else {\n                cur_obj_spawn_loot_blue_coin();\n            }\n        }\n\n        o->oMrIScale -= 0.2 * sp1C;\n\n        if (o->oMrIScale < 0) {\n            o->oMrIScale = 0;\n        }\n\n        cur_obj_scale(o->oMrIScale);\n    } else {\n        obj_mark_for_deletion(o);\n    }\n}\n\nvoid mr_i_act_2(void) {\n    s16 sp1E = o->oMoveAngleYaw;\n    s16 sp1C;\n\n    if (o->oTimer == 0) {\n        if (o->oBhvParams2ndByte != 0) {\n            o->oMrIUnkF4 = 200;\n        } else {\n            o->oMrIUnkF4 = 120;\n        }\n        o->oMrIUnkFC = 0;\n        o->oMrIUnk100 = 0;\n        o->oMrIUnk104 = 0;\n    }\n\n    obj_turn_toward_object(o, gMarioObject, 0x10, 0x800);\n    obj_turn_toward_object(o, gMarioObject, 0x0F, 0x400);\n\n    sp1C = sp1E - (s16)(o->oMoveAngleYaw);\n\n    if (sp1C == 0) {\n        o->oMrIUnkFC = 0;\n        o->oMrIUnk100 = 0;\n    } else if (sp1C > 0) {\n        if (o->oMrIUnk100 > 0) {\n            o->oMrIUnkFC += sp1C;\n        } else {\n            o->oMrIUnkFC = 0;\n        }\n        o->oMrIUnk100 = 1;\n    } else {\n        if (o->oMrIUnk100 < 0) {\n            o->oMrIUnkFC -= sp1C;\n        } else {\n            o->oMrIUnkFC = 0;\n        }\n        o->oMrIUnk100 = -1;\n    }\n\n    if (o->oMrIUnkFC == 0) {\n        o->oMrIUnkF4 = 120;\n    }\n    if (o->oMrIUnkFC > 65536) {\n        o->oAction = 3;\n    }\n\n    o->oMrIUnkF4--;\n\n    if (o->oMrIUnkF4 == 0) {\n        o->oMrIUnkF4 = 120;\n        o->oMrIUnkFC = 0;\n    }\n\n    if (o->oMrIUnkFC < 5000) {\n        if (o->oMrIUnk104 == o->oMrIUnk108) {\n            o->oMrIUnk110 = 1;\n        }\n\n        if (o->oMrIUnk104 == o->oMrIUnk108 + 20) {\n            spawn_mr_i_particle();\n            o->oMrIUnk104 = 0;\n            o->oMrIUnk108 = (s32)(random_float() * 50.0f + 50.0f);\n        }\n        o->oMrIUnk104++;\n    } else {\n        o->oMrIUnk104 = 0;\n        o->oMrIUnk108 = (s32)(random_float() * 50.0f + 50.0f);\n    }\n\n    if (o->oDistanceToMario > 800.0f) {\n        o->oAction = 1;\n    }\n}\n\nvoid mr_i_act_1(void) {\n    s16 sp1E = obj_angle_to_object(o, gMarioObject);\n    s16 sp1C = abs_angle_diff(o->oMoveAngleYaw, sp1E);\n    s16 sp1A = abs_angle_diff(o->oMoveAngleYaw, gMarioObject->oFaceAngleYaw);\n\n    if (o->oTimer == 0) {\n        cur_obj_become_tangible();\n        o->oMoveAnglePitch = 0;\n        o->oMrIUnk104 = 30;\n        o->oMrIUnk108 = random_float() * 20.0f;\n        if (o->oMrIUnk108 & 1) {\n            o->oAngleVelYaw = -256;\n        } else {\n            o->oAngleVelYaw = 256;\n        }\n    }\n\n    if (sp1C < 1024 && sp1A > 0x4000) {\n        if (o->oDistanceToMario < 700.0f) {\n            o->oAction = 2;\n        } else {\n            o->oMrIUnk104++;\n        }\n    } else {\n        o->oMoveAngleYaw += o->oAngleVelYaw;\n        o->oMrIUnk104 = 30;\n    }\n\n    if (o->oMrIUnk104 == o->oMrIUnk108 + 60) {\n        o->oMrIUnk110 = 1;\n    }\n\n    if (o->oMrIUnk104 > o->oMrIUnk108 + 80) {\n        o->oMrIUnk104 = 0;\n        o->oMrIUnk108 = random_float() * 80.0f;\n        spawn_mr_i_particle();\n    }\n}\n\nvoid mr_i_act_0(void) {\n#ifndef VERSION_JP\n    obj_set_angle(o, 0, 0, 0);\n#else\n    o->oMoveAnglePitch = 0;\n    o->oMoveAngleYaw = 0;\n    o->oMoveAngleRoll = 0;\n#endif\n    cur_obj_scale(o->oBhvParams2ndByte + 1);\n\n    if (o->oTimer == 0) {\n        cur_obj_set_pos_to_home();\n    }\n\n    if (o->oDistanceToMario < 1500.0f) {\n        o->oAction = 1;\n    }\n}\n\nvoid (*sMrIActions[])(void) = {\n    mr_i_act_0,\n    mr_i_act_1,\n    mr_i_act_2,\n    mr_i_act_3,\n};\n\nstruct ObjectHitbox sMrIHitbox = {\n    /* interactType:      */ INTERACT_DAMAGE,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 2,\n    /* health:            */ 2,\n    /* numLootCoins:      */ 5,\n    /* radius:            */ 80,\n    /* height:            */ 150,\n    /* hurtboxRadius:     */ 0,\n    /* hurtboxHeight:     */ 0,\n};\n\nvoid bhv_mr_i_loop(void) {\n    obj_set_hitbox(o, &sMrIHitbox);\n    cur_obj_call_action_function(sMrIActions);\n\n    if (o->oAction != 3) {\n        if ((o->oDistanceToMario > 3000.0f) || (o->activeFlags & ACTIVE_FLAG_IN_DIFFERENT_ROOM)) {\n            o->oAction = 0;\n        }\n    }\n\n    o->oInteractStatus = 0;\n}\n"
  },
  {
    "path": "src/game/behaviors/mushroom_1up.inc.c",
    "content": "// mushroom_1up.inc.c\n\nvoid bhv_1up_interact(void) {\n    UNUSED u8 filler[4];\n\n    if (obj_check_if_collided_with_object(o, gMarioObject) == TRUE) {\n        play_sound(SOUND_GENERAL_COLLECT_1UP, gGlobalSoundSource);\n        gMarioState->numLives++;\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n#if ENABLE_RUMBLE\n        queue_rumble_data(5, 80);\n#endif\n    }\n}\n\nvoid bhv_1up_common_init(void) {\n    o->oMoveAnglePitch = -0x4000;\n    o->oGravity = 3.0f;\n    o->oFriction = 1.0f;\n    o->oBuoyancy = 1.0f;\n}\n\nvoid bhv_1up_init(void) {\n    bhv_1up_common_init();\n    if (o->oBhvParams2ndByte == ONE_UP_BP_BEAT_BITDW_BOWSER) {\n        if (!(save_file_get_flags() & (SAVE_FLAG_HAVE_KEY_1 | SAVE_FLAG_UNLOCKED_BASEMENT_DOOR))) {\n            o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n        }\n    } else if (o->oBhvParams2ndByte == ONE_UP_BP_BEAT_BITFS_BOWSER) {\n        if (!(save_file_get_flags() & (SAVE_FLAG_HAVE_KEY_2 | SAVE_FLAG_UNLOCKED_UPSTAIRS_DOOR))) {\n            o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n        }\n    }\n}\n\nvoid one_up_loop_in_air(void) {\n    if (o->oTimer < 5) {\n        o->oVelY = 40.0f;\n    } else {\n        o->oAngleVelPitch = -0x1000;\n        o->oMoveAnglePitch += o->oAngleVelPitch;\n        o->oVelY = coss(o->oMoveAnglePitch) * 30.0f + 2.0f;\n        o->oForwardVel = -sins(o->oMoveAnglePitch) * 30.0f;\n    }\n}\n\nvoid pole_1up_move_towards_mario(void) {\n    f32 sp34 = gMarioObject->header.gfx.pos[0] - o->oPosX;\n    f32 sp30 = gMarioObject->header.gfx.pos[1] + 120.0f - o->oPosY;\n    f32 sp2C = gMarioObject->header.gfx.pos[2] - o->oPosZ;\n    s16 sp2A = atan2s(sqrtf(sqr(sp34) + sqr(sp2C)), sp30);\n\n    obj_turn_toward_object(o, gMarioObject, 16, 0x1000);\n\n    o->oMoveAnglePitch = approach_s16_symmetric(o->oMoveAnglePitch, sp2A, 0x1000);\n    o->oVelY = sins(o->oMoveAnglePitch) * 30.0f;\n    o->oForwardVel = coss(o->oMoveAnglePitch) * 30.0f;\n\n    bhv_1up_interact();\n}\n\nvoid one_up_move_away_from_mario(s16 collisionFlags) {\n    o->oForwardVel = 8.0f;\n    o->oMoveAngleYaw = o->oAngleToMario + 0x8000;\n\n    bhv_1up_interact();\n\n    if (collisionFlags & OBJ_COL_FLAG_HIT_WALL) {\n        o->oAction = 2;\n    }\n\n    if (!is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 3000)) {\n        o->oAction = 2;\n    }\n}\n\nvoid bhv_1up_walking_loop(void) {\n    object_step();\n\n    switch (o->oAction) {\n        case 0:\n            if (o->oTimer > 17) {\n                spawn_object(o, MODEL_NONE, bhvSparkleSpawn);\n            }\n\n            if (o->oTimer == 0) {\n                play_sound(SOUND_GENERAL2_1UP_APPEAR, gGlobalSoundSource);\n            }\n\n            one_up_loop_in_air();\n\n            if (o->oTimer == 37) {\n                cur_obj_become_tangible();\n                o->oAction = 1;\n                o->oForwardVel = 2.0f;\n            }\n            break;\n\n        case 1:\n            if (o->oTimer > 300) {\n                o->oAction = 2;\n            }\n\n            bhv_1up_interact();\n            break;\n\n        case 2:\n            obj_flicker_and_disappear(o, 30);\n            bhv_1up_interact();\n            break;\n    }\n\n    set_object_visibility(o, 3000);\n}\n\nvoid bhv_1up_running_away_loop(void) {\n    s16 collisionFlags = object_step();\n\n    switch (o->oAction) {\n        case 0:\n            if (o->oTimer > 17) {\n                spawn_object(o, MODEL_NONE, bhvSparkleSpawn);\n            }\n\n            if (o->oTimer == 0) {\n                play_sound(SOUND_GENERAL2_1UP_APPEAR, gGlobalSoundSource);\n            }\n\n            one_up_loop_in_air();\n\n            if (o->oTimer == 37) {\n                cur_obj_become_tangible();\n                o->oAction = 1;\n                o->oForwardVel = 8.0f;\n            }\n            break;\n\n        case 1:\n            spawn_object(o, MODEL_NONE, bhvSparkleSpawn);\n            one_up_move_away_from_mario(collisionFlags);\n            break;\n\n        case 2:\n            obj_flicker_and_disappear(o, 30);\n            bhv_1up_interact();\n            break;\n    }\n\n    set_object_visibility(o, 3000);\n}\n\nvoid sliding_1up_move(void) {\n    s16 collisionFlags = object_step();\n\n    if (collisionFlags & OBJ_COL_FLAG_GROUNDED) {\n        o->oForwardVel += 25.0f;\n        o->oVelY = 0.0f;\n    } else {\n        o->oForwardVel *= 0.98;\n    }\n\n    if (o->oForwardVel > 40.0) {\n        o->oForwardVel = 40.0f;\n    }\n\n    if (!is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 5000)) {\n        o->oAction = 2;\n    }\n}\n\nvoid bhv_1up_sliding_loop(void) {\n    switch (o->oAction) {\n        case 0:\n            set_object_visibility(o, 3000);\n            if (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 1000)) {\n                o->oAction = 1;\n            }\n            break;\n\n        case 1:\n            sliding_1up_move();\n            break;\n\n        case 2:\n            obj_flicker_and_disappear(o, 30);\n            bhv_1up_interact();\n            break;\n    }\n\n    bhv_1up_interact();\n    spawn_object(o, MODEL_NONE, bhvSparkleSpawn);\n}\n\nvoid bhv_1up_loop(void) {\n    bhv_1up_interact();\n    set_object_visibility(o, 3000);\n}\n\nvoid bhv_1up_jump_on_approach_loop(void) {\n    s16 collisionFlags;\n\n    switch (o->oAction) {\n        case 0:\n            if (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 1000)) {\n                o->oVelY = 40.0f;\n                o->oAction = 1;\n            }\n            break;\n\n        case 1:\n            collisionFlags = object_step();\n            one_up_move_away_from_mario(collisionFlags);\n            spawn_object(o, MODEL_NONE, bhvSparkleSpawn);\n            break;\n\n        case 2:\n            collisionFlags = object_step();\n            bhv_1up_interact();\n            obj_flicker_and_disappear(o, 30);\n            break;\n    }\n\n    set_object_visibility(o, 3000);\n}\n\nvoid bhv_1up_hidden_loop(void) {\n    s16 collisionFlags;\n\n    switch (o->oAction) {\n        case 0:\n            o->header.gfx.node.flags |= GRAPH_RENDER_INVISIBLE;\n            if (o->oHidden1UpNumTouchedTriggers == o->oBhvParams2ndByte) {\n                o->oVelY = 40.0f;\n                o->oAction = 3;\n                o->header.gfx.node.flags &= ~GRAPH_RENDER_INVISIBLE;\n                play_sound(SOUND_GENERAL2_1UP_APPEAR, gGlobalSoundSource);\n            }\n            break;\n\n        case 1:\n            collisionFlags = object_step();\n            one_up_move_away_from_mario(collisionFlags);\n            spawn_object(o, MODEL_NONE, bhvSparkleSpawn);\n            break;\n\n        case 2:\n            collisionFlags = object_step();\n            bhv_1up_interact();\n            obj_flicker_and_disappear(o, 30);\n            break;\n\n        case 3:\n            collisionFlags = object_step();\n            if (o->oTimer > 17) {\n                spawn_object(o, MODEL_NONE, bhvSparkleSpawn);\n            }\n\n            one_up_loop_in_air();\n\n            if (o->oTimer == 37) {\n                cur_obj_become_tangible();\n                o->oAction = 1;\n                o->oForwardVel = 8.0f;\n            }\n            break;\n    }\n}\n\nvoid bhv_1up_hidden_trigger_loop(void) {\n    if (obj_check_if_collided_with_object(o, gMarioObject) == TRUE) {\n        struct Object *hidden1Up = cur_obj_nearest_object_with_behavior(bhvHidden1Up);\n        if (hidden1Up != NULL) {\n            hidden1Up->oHidden1UpNumTouchedTriggers++;\n        }\n\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n}\n\nvoid bhv_1up_hidden_in_pole_loop(void) {\n    UNUSED s16 collisionFlags;\n\n    switch (o->oAction) {\n        case 0:\n            o->header.gfx.node.flags |= GRAPH_RENDER_INVISIBLE;\n            if (o->oHidden1UpNumTouchedTriggers == o->oBhvParams2ndByte) {\n                o->oVelY = 40.0f;\n                o->oAction = 3;\n                o->header.gfx.node.flags &= ~GRAPH_RENDER_INVISIBLE;\n                play_sound(SOUND_GENERAL2_1UP_APPEAR, gGlobalSoundSource);\n            }\n            break;\n\n        case 1:\n            pole_1up_move_towards_mario();\n            collisionFlags = object_step();\n            break;\n\n        case 3:\n            collisionFlags = object_step();\n            if (o->oTimer > 17) {\n                spawn_object(o, MODEL_NONE, bhvSparkleSpawn);\n            }\n\n            one_up_loop_in_air();\n\n            if (o->oTimer == 37) {\n                cur_obj_become_tangible();\n                o->oAction = 1;\n                o->oForwardVel = 10.0f;\n            }\n            break;\n    }\n}\n\nvoid bhv_1up_hidden_in_pole_trigger_loop(void) {\n    if (obj_check_if_collided_with_object(o, gMarioObject) == TRUE) {\n        struct Object *hidden1Up = cur_obj_nearest_object_with_behavior(bhvHidden1UpInPole);\n        if (hidden1Up != NULL) {\n            hidden1Up->oHidden1UpNumTouchedTriggers++;\n        }\n\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n}\n\nvoid bhv_1up_hidden_in_pole_spawner_loop(void) {\n    if (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 700)) {\n        s8 i;\n        spawn_object_relative(2, 0, 50, 0, o, MODEL_1UP, bhvHidden1UpInPole);\n        for (i = 0; i <= 1; i++) {\n            spawn_object_relative(0, 0, i * -200, 0, o, MODEL_NONE, bhvHidden1UpInPoleTrigger);\n        }\n\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/music_touch.inc.c",
    "content": "// music_touch.inc.c\n\nvoid bhv_play_music_track_when_touched_loop(void) {\n    if (o->oAction == 0) {\n        if (o->oDistanceToMario < 200.0f) {\n            play_puzzle_jingle();\n            o->oAction++;\n        }\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/orange_number.inc.c",
    "content": "// orange_number.inc.c\n\nvoid bhv_orange_number_init(void) {\n    o->oAnimState = o->oBhvParams2ndByte;\n    o->oVelY = 26.0f;\n}\n\nvoid bhv_orange_number_loop(void) {\n    o->oPosY += o->oVelY;\n    o->oVelY -= 2.0f;\n\n    if (o->oVelY < -21.0f) {\n        o->oVelY = 14.0;\n    }\n\n    if (o->oTimer == 35) {\n        struct Object *sp1C = spawn_object(o, MODEL_SPARKLES, bhvGoldenCoinSparkles);\n        sp1C->oPosY -= 30.0f;\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/piranha_bubbles.inc.c",
    "content": "\n/**\n * Behavior for bhvPiranhaPlantBubble and bhvPiranhaPlantWakingBubbles.\n *\n * This controls the bubble that grows and shrinks from a Piranha Plant's nose\n * as it sleeps, and the smaller bubbles that explode outwards when the Piranha\n * Plant is woken up.\n */\n\n/**\n * Main loop for bhvPiranhaPlantWakingBubbles. Initialize a random 3D velocity\n * vector, then follow its path according to gravity.\n */\nvoid bhv_piranha_plant_waking_bubbles_loop(void) {\n    if (o->oTimer == 0) {\n        o->oVelY = random_float() * 10.0f + 5.0f;\n        o->oForwardVel = random_float() * 10.0f + 5.0f;\n        o->oMoveAngleYaw = random_u16();\n    }\n    cur_obj_move_using_fvel_and_gravity();\n}\n\n/**\n * Main loop for bhvPiranhaPlantBubble. After it is initialized, the bubble\n * will grow and shrink continuously while the Piranha Plant sleeps. If the\n * Piranha Plant ever stops sleeping, the bubble will disappear and spawn many\n * bubbles to appear to burst. After bursting, the bubble is reinitialized\n * and the cycle can repeat.\n */\nvoid bhv_piranha_plant_bubble_loop(void) {\n    struct Object *parent = o->parentObj; // the Piranha Plant\n    f32 scale = 0;\n    s32 i;\n    s32 animFrame = parent->header.gfx.animInfo.animFrame;\n    // TODO: rename lastFrame if it is inaccurate\n    s32 lastFrame = parent->header.gfx.animInfo.curAnim->loopEnd - 2;\n    UNUSED u8 filler[4];\n\n    cur_obj_set_pos_relative(parent, 0, 72.0f, 180.0f);\n\n    switch (o->oAction) {\n        case PIRANHA_PLANT_BUBBLE_ACT_IDLE:\n            cur_obj_disable_rendering();\n            scale = 0;\n\n            if (parent->oAction == PIRANHA_PLANT_ACT_SLEEPING) {\n                o->oAction++; // move to PIRANHA_PLANT_BUBBLE_ACT_GROW_SHRINK_LOOP\n            }\n            break;\n\n        case PIRANHA_PLANT_BUBBLE_ACT_GROW_SHRINK_LOOP:\n            if (parent->oDistanceToMario < parent->oDrawingDistance) {\n                cur_obj_enable_rendering();\n\n                if (parent->oAction == PIRANHA_PLANT_ACT_SLEEPING) {\n                    /**\n                     * Set the frame after shrinking is done to be slightly before\n                     * halfway through the animation, and the frame before growing\n                     * slightly after halfway. This leaves about 8 frames during\n                     * which the bubble is at its smallest, where its scale is 1.0f.\n                     */\n                    // the first frame after shrinking is done\n                    f32 doneShrinkingFrame = lastFrame / 2.0f - 4.0f;\n                    // the frame just before growing begins\n                    f32 beginGrowingFrame = lastFrame / 2.0f + 4.0f;\n\n                    // Note that the bubble always starts this loop at its largest.\n                    if (animFrame < doneShrinkingFrame) {\n                        // Shrink from 5.0f to 1.0f.\n                        scale = coss(animFrame / doneShrinkingFrame * 0x4000) * 4.0f + 1.0;\n                    } else if (animFrame > beginGrowingFrame) {\n                        // Grow from 1.0f to 5.0f.\n                        scale = sins((\n                                    // they should have used beginGrowingFrame here:\n                                    (animFrame - (lastFrame / 2.0f + 4.0f)) / beginGrowingFrame\n                                    ) * 0x4000) * 4.0f + 1.0;\n                    } else {\n                        // Stay at 1.0f for a few frames.\n                        scale = 1.0f;\n                    }\n                } else {\n                    // Piranha Plant is no longer sleeping.\n                    o->oAction++; // move to PIRANHA_PLANT_BUBBLE_ACT_BURST\n                }\n            } else {\n                cur_obj_disable_rendering();\n            }\n            break;\n\n        case PIRANHA_PLANT_BUBBLE_ACT_BURST:\n            cur_obj_disable_rendering();\n            scale = 0.0f;\n\n            // Spawn 15 small bubbles to make it look like this bubble burst.\n            for (i = 0; i < 15; i++) {\n                try_to_spawn_object(0, 1.0f, o, MODEL_BUBBLE, bhvPiranhaPlantWakingBubbles);\n            }\n\n            o->oAction = PIRANHA_PLANT_BUBBLE_ACT_IDLE;\n            scale = 1.0f; // this has no effect; it is set to 0 in the idle state\n            break;\n    }\n\n    cur_obj_scale(scale);\n}\n"
  },
  {
    "path": "src/game/behaviors/piranha_plant.inc.c",
    "content": "\n/**\n * Behavior for bhvPiranhaPlant.\n * This controls Piranha Plants, which alternate between sleeping, attacking,\n * and dying, primarily depending on Mario's proximity and interaction state.\n */\n\n/**\n * Reset the Piranha Plant back to a sleeping animation, no matter what state\n * it was in previously, and make it intangible. If Mario is close, transition\n * directly to the sleeping state.\n */\nvoid piranha_plant_act_idle(void) {\n    cur_obj_become_intangible();\n    cur_obj_init_animation_with_sound(8);\n\n#if BUGFIX_PIRANHA_PLANT_STATE_RESET\n    /**\n     * This call is necessary because a Piranha Plant may enter this state\n     * with a scale below 1, which would cause it to appear shrunken. See\n     * documentation for, and calls to, piranha_plant_reset_when_far().\n     */\n    cur_obj_scale(1.0f);\n#endif\n\n    if (o->oDistanceToMario < 1200.0f) {\n        o->oAction = PIRANHA_PLANT_ACT_SLEEPING;\n    }\n}\n\n/**\n * Check if the player has interacted with the Piranha Plant. If the Piranha\n * Plant was attacked, move it to the dying state. If the player interacted\n * with it through some other means (e.g. by running into it), move it to the\n * woken up state.\n *\n * @return TRUE if the player interacted with the Piranha Plant, FALSE otherwise\n */\ns32 piranha_plant_check_interactions(void) {\n    s32 i;\n    s32 interacted = TRUE;\n\n    if (o->oInteractStatus & INT_STATUS_INTERACTED) {\n        func_80321080(50);\n        if (o->oInteractStatus & INT_STATUS_WAS_ATTACKED) {\n            cur_obj_play_sound_2(SOUND_OBJ2_PIRANHA_PLANT_DYING);\n\n            // Spawn 20 intangible purple particles that quickly dissipate.\n            for (i = 0; i < 20; i++) {\n                spawn_object(o, MODEL_PURPLE_MARBLE, bhvPurpleParticle);\n            }\n            o->oAction = PIRANHA_PLANT_ACT_ATTACKED;\n        } else {\n            o->oAction = PIRANHA_PLANT_ACT_WOKEN_UP;\n        }\n        o->oInteractStatus = 0;\n    } else {\n        interacted = FALSE;\n    }\n\n    return interacted;\n}\n\n/**\n * Make the Piranha Plant sleep. If Mario moves too quickly, move the Piranha\n * Plant to the woken up state. Otherwise, play the lullaby if Mario is close\n * enough. If the player interacts with the Piranha Plant, it will act according\n * to piranha_plant_check_interactions().\n */\nvoid piranha_plant_act_sleeping(void) {\n    cur_obj_become_tangible();\n    o->oInteractType = INTERACT_BOUNCE_TOP;\n\n    cur_obj_init_animation_with_sound(8);\n\n    cur_obj_set_hitbox_radius_and_height(250.0f, 200.0f);\n    cur_obj_set_hurtbox_radius_and_height(150.0f, 100.0f);\n\n#if BUGFIX_PIRANHA_PLANT_SLEEP_DAMAGE\n    /**\n     * Make Piranha Plants harmless, but tangible, while they sleep.\n     */\n    o->oDamageOrCoinValue = 0;\n#elif defined(VERSION_EU)\n    /**\n     * Make Piranha Plants harmful when sleeping - but do it explicitly.\n     */\n    o->oDamageOrCoinValue = 3;\n#endif\n\n    if (o->oDistanceToMario < 400.0f) {\n        if (mario_moving_fast_enough_to_make_piranha_plant_bite()) {\n            o->oAction = PIRANHA_PLANT_ACT_WOKEN_UP;\n        }\n    } else if (o->oDistanceToMario < 1000.0f) {\n        play_secondary_music(SEQ_EVENT_PIRANHA_PLANT, 0, 255, 1000);\n        o->oPiranhaPlantSleepMusicState = PIRANHA_PLANT_SLEEP_MUSIC_PLAYING;\n    } else if (o->oPiranhaPlantSleepMusicState == PIRANHA_PLANT_SLEEP_MUSIC_PLAYING) {\n        o->oPiranhaPlantSleepMusicState++;\n        func_80321080(50);\n    }\n    piranha_plant_check_interactions();\n}\n\n/**\n * Make the Piranha Plant wake up and stop the lullaby. After a few frames, move\n * to the biting state.\n */\nvoid piranha_plant_act_woken_up(void) {\n#if BUGFIX_PIRANHA_PLANT_SLEEP_DAMAGE || defined(VERSION_EU)\n    /**\n     * Make Piranha Plants damage the player while awake. This call is only\n     * necessary in the US version because it is set to 3 by default and is\n     * never changed in the JP version.\n     */\n    o->oDamageOrCoinValue = 3;\n#endif\n    if (o->oTimer == 0) {\n        func_80321080(50);\n    }\n\n    if (!piranha_plant_check_interactions() && o->oTimer > 10) {\n        o->oAction = PIRANHA_PLANT_ACT_BITING;\n    }\n}\n\n#if BUGFIX_PIRANHA_PLANT_STATE_RESET\n/**\n * If the Piranha Plant is far from the player, move it to the idle state.\n *\n * This fixes an issue where a player where could unload a Piranha Plant\n * during another state, then re-enter its activation radius to resume it from\n * that state.\n *\n * For example, if one exits the Piranha Plant's activation radius while it is\n * dying:\n *   - In the JP version, it will continue its animation where it left off,\n *     leading to a potentially confusing player experience if the player had\n *     been away for a long time.\n *   - In the US version, it will respawn intact when you re-enter its\n *     activation radius. One could then kill it again to receive its blue coin.\n */\nvoid piranha_plant_reset_when_far(void) {\n    if (o->activeFlags & ACTIVE_FLAG_FAR_AWAY) {\n        o->oAction = PIRANHA_PLANT_ACT_IDLE;\n    }\n}\n#endif\n\n/**\n * Make the Piranha Plant play a falling-over animation and move to the dying\n * state.\n */\nvoid piranha_plant_attacked(void) {\n    cur_obj_become_intangible();\n    cur_obj_init_animation_with_sound(2);\n    o->oInteractStatus = 0;\n    if (cur_obj_check_if_near_animation_end()) {\n        o->oAction = PIRANHA_PLANT_ACT_SHRINK_AND_DIE;\n    }\n#if BUGFIX_PIRANHA_PLANT_STATE_RESET\n    piranha_plant_reset_when_far(); // see this function's comment\n#endif\n}\n\n/**\n * Make the Piranha Plant play a sound of defeat, shrink, and then spawn a\n * blue coin. Then, move it to the waiting state.\n */\nvoid piranha_plant_act_shrink_and_die(void) {\n    if (o->oTimer == 0) {\n        cur_obj_play_sound_2(SOUND_OBJ_ENEMY_DEFEAT_SHRINK);\n        o->oPiranhaPlantScale = 1.0f;\n    }\n\n    /**\n     * Note that this if-statement occurs unconditionally after the above if-\n     * statement. Since the Piranha Plant's scale is 1.0f by default, perhaps\n     * this was intentional. However, it is equally plausible that the\n     * programmers meant to type `else if`.\n     */\n    if (o->oPiranhaPlantScale > 0.0f) {\n        // Shrink by 0.04 per frame.\n        o->oPiranhaPlantScale = o->oPiranhaPlantScale - 0.04;\n    } else {\n        o->oPiranhaPlantScale = 0.0f;\n        cur_obj_spawn_loot_blue_coin();\n        o->oAction = PIRANHA_PLANT_ACT_WAIT_TO_RESPAWN;\n    }\n\n    cur_obj_scale(o->oPiranhaPlantScale);\n\n#if BUGFIX_PIRANHA_PLANT_STATE_RESET\n    piranha_plant_reset_when_far(); // see this function's comment\n#endif\n}\n\n/**\n * Wait for Mario to move far away, then respawn the Piranha Plant.\n */\nvoid piranha_plant_act_wait_to_respawn(void) {\n    if (o->oDistanceToMario > 1200.0f) {\n        o->oAction = PIRANHA_PLANT_ACT_RESPAWN;\n    }\n}\n\n/**\n * Set the Piranha Plant to the sleeping animation and unshrink it. When fully-\n * grown, set it to the idle state.\n */\nvoid piranha_plant_act_respawn(void) {\n    cur_obj_init_animation_with_sound(8);\n    if (o->oTimer == 0) {\n        o->oPiranhaPlantScale = 0.3f;\n    }\n\n    /**\n     * This state only occurs after PIRANHA_PLANT_ACT_WAIT_TO_RESPAWN, which\n     * in turn only occurs after PIRANHA_PLANT_ACT_SHRINK_AND_DIE. The latter\n     * sets the Piranha Plant's scale to 0, therefore the Piranha Plant will\n     * grow from the ground unconditionally when in this state.\n     */\n    if (o->oPiranhaPlantScale < 1.0) {\n        // Grow by 0.02 per frame.\n        o->oPiranhaPlantScale += 0.02;\n    } else {\n        o->oPiranhaPlantScale = 1.0f;\n        o->oAction = PIRANHA_PLANT_ACT_IDLE;\n    }\n    cur_obj_scale(o->oPiranhaPlantScale);\n}\n\n/**\n * The frames of the Piranha Plant's biting animation on which to play a bite\n * sound.\n */\nstatic s8 sPiranhaPlantBiteSoundFrames[] = { 12, 28, 50, 64, -1 };\n\n/**\n * Make the Piranha Plant bite in the direction of the player. If the player\n * moves far away, move it to the stopped biting state. If the player is wearing\n * the Metal Cap and touches the Piranha Plant while it is attacking, the\n * Piranha Plant will move to the attacked state.\n */\nvoid piranha_plant_act_biting(void) {\n    s32 animFrame = o->header.gfx.animInfo.animFrame;\n\n    cur_obj_become_tangible();\n\n    o->oInteractType = INTERACT_DAMAGE;\n\n    cur_obj_init_animation_with_sound(0);\n\n    cur_obj_set_hitbox_radius_and_height(150.0f, 100.0f);\n    cur_obj_set_hurtbox_radius_and_height(150.0f, 100.0f);\n\n    // Play a bite sound effect on certain frames.\n    if (is_item_in_array(animFrame, sPiranhaPlantBiteSoundFrames)) {\n        cur_obj_play_sound_2(SOUND_OBJ2_PIRANHA_PLANT_BITE);\n    }\n\n    // Move to face the player.\n    o->oMoveAngleYaw = approach_s16_symmetric(o->oMoveAngleYaw, o->oAngleToMario, 0x400);\n\n    if (o->oDistanceToMario > 500.0f && cur_obj_check_if_near_animation_end()) {\n        o->oAction = PIRANHA_PLANT_ACT_STOPPED_BITING;\n    }\n\n    // If the player is wearing the Metal Cap and interacts with the Piranha\n    // Plant, the Piranha Plant will die.\n    if ((o->oInteractStatus & INT_STATUS_INTERACTED) && (gMarioState->flags & MARIO_METAL_CAP)) {\n        o->oAction = PIRANHA_PLANT_ACT_ATTACKED;\n    }\n}\n\n/**\n * Check whether the player is moving fast enough to cause the Piranha Plant to\n * start biting.\n *\n * This is called from both the \"stopped biting\" state and the \"sleeping\" state.\n */\ns32 mario_moving_fast_enough_to_make_piranha_plant_bite(void) {\n    if (gMarioStates[0].vel[1] > 10.0f) {\n        return TRUE;\n    }\n    if (gMarioStates[0].forwardVel > 10.0f) {\n        return TRUE;\n    }\n    return FALSE;\n}\n\n/**\n * Make the Piranha Plant quickly nod to indicate that it has stopped biting.\n * If the player has drawn closer during this short animation, make the Piranha\n * Plant start biting again. Otherwise, make it go back to sleep.\n */\nvoid piranha_plant_act_stopped_biting(void) {\n    cur_obj_become_intangible();\n    cur_obj_init_animation_with_sound(6);\n\n    if (cur_obj_check_if_near_animation_end()) {\n        o->oAction = PIRANHA_PLANT_ACT_SLEEPING;\n    }\n\n    /**\n     * Note that this state only occurs initially when the player goes further\n     * than 500.0f units from the Piranha Plant while it is biting. This if-\n     * statement activates only when the player has drawn within 400.0f units\n     * of the Piranha Plant during the short time the Piranha Plant's nod\n     * animation plays.\n     */\n    if (o->oDistanceToMario < 400.0f && mario_moving_fast_enough_to_make_piranha_plant_bite()) {\n        o->oAction = PIRANHA_PLANT_ACT_BITING;\n    }\n}\n\n/**\n * Table of functions corresponding to the actions the Piranha Plant can take.\n */\nvoid (*TablePiranhaPlantActions[])(void) = {\n    piranha_plant_act_idle,            // PIRANHA_PLANT_ACT_IDLE,\n    piranha_plant_act_sleeping,        // PIRANHA_PLANT_ACT_SLEEPING,\n    piranha_plant_act_biting,          // PIRANHA_PLANT_ACT_BITING,\n    piranha_plant_act_woken_up,        // PIRANHA_PLANT_ACT_WOKEN_UP,\n    piranha_plant_act_stopped_biting,  // PIRANHA_PLANT_ACT_STOPPED_BITING,\n    piranha_plant_attacked,            // PIRANHA_PLANT_ATTACKED,\n    piranha_plant_act_shrink_and_die,  // PIRANHA_PLANT_ACT_SHRINK_AND_DIE,\n    piranha_plant_act_wait_to_respawn, // PIRANHA_PLANT_ACT_WAIT_TO_RESPAWN,\n    piranha_plant_act_respawn,         // PIRANHA_PLANT_ACT_RESPAWN\n};\n\n/**\n * Main loop for bhvPiranhaPlant.\n */\nvoid bhv_piranha_plant_loop(void) {\n    cur_obj_call_action_function(TablePiranhaPlantActions);\n\n    // In WF, hide all Piranha Plants once high enough up.\n    if (gCurrLevelNum == LEVEL_WF) {\n        if (gMarioObject->oPosY > 3400.0f) {\n            cur_obj_hide();\n        } else {\n            cur_obj_unhide();\n        }\n    }\n\n    o->oInteractStatus = 0;\n}\n"
  },
  {
    "path": "src/game/behaviors/platform_on_track.inc.c",
    "content": "\n/**\n * Behavior for bhvPlatformOnTrack and bhvTrackBall.\n * The platform spawns up to 5 track balls at a time, which then despawn\n * themselves as the platform moves past them.\n */\n\n/**\n * Collision models for the different types of platforms.\n */\nstatic Collision const *sPlatformOnTrackCollisionModels[] = {\n    /* PLATFORM_ON_TRACK_TYPE_CARPET    */ rr_seg7_collision_07029038,\n    /* PLATFORM_ON_TRACK_TYPE_SKI_LIFT  */ ccm_seg7_collision_070163F8,\n    /* PLATFORM_ON_TRACK_TYPE_CHECKERED */ checkerboard_platform_seg8_collision_0800D710,\n    /* PLATFORM_ON_TRACK_TYPE_GRATE     */ bitfs_seg7_collision_070157E0,\n};\n\n/**\n * Paths for the different instances of these platforms.\n */\nstatic Trajectory const *sPlatformOnTrackPaths[] = {\n    rr_seg7_trajectory_0702EC3C,\n    rr_seg7_trajectory_0702ECC0,\n    ccm_seg7_trajectory_0701669C,\n    bitfs_seg7_trajectory_070159AC,\n    hmc_seg7_trajectory_0702B86C,\n    lll_seg7_trajectory_0702856C,\n    lll_seg7_trajectory_07028660,\n    rr_seg7_trajectory_0702ED9C,\n    rr_seg7_trajectory_0702EEE0,\n};\n\n/**\n * Despawn all track balls and enter the init action.\n */\nstatic void platform_on_track_reset(void) {\n    o->oAction = PLATFORM_ON_TRACK_ACT_INIT;\n    // This will cause the track balls to all despawn\n    o->oPlatformOnTrackBaseBallIndex += 99;\n}\n\n/**\n * If this platform is the kind that disappears, pause for a while, then\n * begin blinking, and finally reset.\n */\nstatic void platform_on_track_mario_not_on_platform(void) {\n    if (!((u16)(o->oBhvParams >> 16) & PLATFORM_ON_TRACK_BP_DONT_DISAPPEAR)) {\n        // Once oTimer reaches 150, blink 40 times\n        if (cur_obj_wait_then_blink(150, 40)) {\n            platform_on_track_reset();\n            o->header.gfx.node.flags &= ~GRAPH_RENDER_INVISIBLE;\n        }\n    }\n}\n\n/**\n * Init function for bhvPlatformOnTrack.\n */\nvoid bhv_platform_on_track_init(void) {\n    if (!(o->activeFlags & ACTIVE_FLAG_IN_DIFFERENT_ROOM)) {\n        s16 pathIndex = (u16)(o->oBhvParams >> 16) & PLATFORM_ON_TRACK_BP_MASK_PATH;\n        o->oPlatformOnTrackType = ((u16)(o->oBhvParams >> 16) & PLATFORM_ON_TRACK_BP_MASK_TYPE) >> 4;\n\n        o->oPlatformOnTrackIsNotSkiLift = o->oPlatformOnTrackType - PLATFORM_ON_TRACK_TYPE_SKI_LIFT;\n\n        o->collisionData =\n            segmented_to_virtual(sPlatformOnTrackCollisionModels[o->oPlatformOnTrackType]);\n\n        o->oPlatformOnTrackStartWaypoint = segmented_to_virtual(sPlatformOnTrackPaths[pathIndex]);\n\n        o->oPlatformOnTrackIsNotHMC = pathIndex - 4;\n\n        o->oBhvParams2ndByte = o->oMoveAngleYaw; // TODO: Weird?\n\n        if (o->oPlatformOnTrackType == PLATFORM_ON_TRACK_TYPE_CHECKERED) {\n            o->header.gfx.scale[1] = 2.0f;\n        }\n    }\n}\n\n/**\n * Move to the start waypoint, spawn the first track balls, and enter the\n * wait for mario action.\n */\nstatic void platform_on_track_act_init(void) {\n    s32 i;\n\n    o->oPlatformOnTrackPrevWaypoint = o->oPlatformOnTrackStartWaypoint;\n    o->oPlatformOnTrackPrevWaypointFlags = 0;\n    o->oPlatformOnTrackBaseBallIndex = 0;\n\n    o->oPosX = o->oHomeX = o->oPlatformOnTrackStartWaypoint->pos[0];\n    o->oPosY = o->oHomeY = o->oPlatformOnTrackStartWaypoint->pos[1];\n    o->oPosZ = o->oHomeZ = o->oPlatformOnTrackStartWaypoint->pos[2];\n\n    o->oFaceAngleYaw = o->oBhvParams2ndByte;\n    o->oForwardVel = o->oVelX = o->oVelY = o->oVelZ = o->oPlatformOnTrackDistMovedSinceLastBall = 0.0f;\n\n    o->oPlatformOnTrackWasStoodOn = FALSE;\n\n    if (o->oPlatformOnTrackIsNotSkiLift) {\n        o->oFaceAngleRoll = 0;\n    }\n\n    // Spawn track balls\n    for (i = 1; i < 6; i++) {\n        platform_on_track_update_pos_or_spawn_ball(i, o->oHomeX, o->oHomeY, o->oHomeZ);\n    }\n\n    o->oAction = PLATFORM_ON_TRACK_ACT_WAIT_FOR_MARIO;\n}\n\n/**\n * Wait for mario to stand on the platform for 20 frames, then begin moving.\n */\nstatic void platform_on_track_act_wait_for_mario(void) {\n    if (gMarioObject->platform == o) {\n        if (o->oTimer > 20) {\n            o->oAction = PLATFORM_ON_TRACK_ACT_MOVE_ALONG_TRACK;\n        }\n    } else {\n        if (o->activeFlags & ACTIVE_FLAG_IN_DIFFERENT_ROOM) {\n            platform_on_track_reset();\n        }\n\n        o->oTimer = 0;\n    }\n}\n\n/**\n * Move along the track. After reaching the end, either start falling,\n * return to the init action, or continue moving back to the start waypoint.\n */\nstatic void platform_on_track_act_move_along_track(void) {\n    s16 initialAngle;\n\n    if (!o->oPlatformOnTrackIsNotSkiLift) {\n        cur_obj_play_sound_1(SOUND_ENV_ELEVATOR3);\n    } else if (!o->oPlatformOnTrackIsNotHMC) {\n        cur_obj_play_sound_1(SOUND_ENV_ELEVATOR1);\n    }\n\n    // Fall after reaching the last waypoint if desired\n    if (o->oPlatformOnTrackPrevWaypointFlags == WAYPOINT_FLAGS_END\n        && !((u16)(o->oBhvParams >> 16) & PLATFORM_ON_TRACK_BP_RETURN_TO_START)) {\n        o->oAction = PLATFORM_ON_TRACK_ACT_FALL;\n    } else {\n        // The ski lift should pause or stop after reaching a special waypoint\n        if (o->oPlatformOnTrackPrevWaypointFlags != 0 && !o->oPlatformOnTrackIsNotSkiLift) {\n            if (o->oPlatformOnTrackPrevWaypointFlags == WAYPOINT_FLAGS_END\n                || o->oPlatformOnTrackPrevWaypointFlags == WAYPOINT_FLAGS_PLATFORM_ON_TRACK_PAUSE) {\n                cur_obj_play_sound_2(SOUND_GENERAL_UNKNOWN4_LOWPRIO);\n\n                o->oForwardVel = 0.0f;\n                if (o->oPlatformOnTrackPrevWaypointFlags == WAYPOINT_FLAGS_END) {\n                    o->oAction = PLATFORM_ON_TRACK_ACT_INIT;\n                } else {\n                    o->oAction = PLATFORM_ON_TRACK_ACT_PAUSE_BRIEFLY;\n                }\n            }\n        } else {\n            // The ski lift accelerates, while the others instantly start\n            if (!o->oPlatformOnTrackIsNotSkiLift) {\n                obj_forward_vel_approach(10.0, 0.1f);\n            } else {\n                o->oForwardVel = 10.0f;\n            }\n\n            // Spawn a new track ball if necessary\n            if (approach_f32_ptr(&o->oPlatformOnTrackDistMovedSinceLastBall, 300.0f, o->oForwardVel)) {\n                o->oPlatformOnTrackDistMovedSinceLastBall -= 300.0f;\n\n                o->oHomeX = o->oPosX;\n                o->oHomeY = o->oPosY;\n                o->oHomeZ = o->oPosZ;\n                o->oPlatformOnTrackBaseBallIndex = (u16)(o->oPlatformOnTrackBaseBallIndex + 1);\n\n                platform_on_track_update_pos_or_spawn_ball(5, o->oHomeX, o->oHomeY, o->oHomeZ);\n            }\n        }\n\n        platform_on_track_update_pos_or_spawn_ball(0, o->oPosX, o->oPosY, o->oPosZ);\n\n        o->oMoveAnglePitch = o->oPlatformOnTrackPitch;\n        o->oMoveAngleYaw = o->oPlatformOnTrackYaw;\n\n        //! Both oAngleVelYaw and oAngleVelRoll aren't reset until the platform\n        //  starts moving again, resulting in unexpected platform displacement\n        //  after reappearing\n\n        // Turn face yaw and compute yaw vel\n        if (!((u16)(o->oBhvParams >> 16) & PLATFORM_ON_TRACK_BP_DONT_TURN_YAW)) {\n            s16 targetFaceYaw = o->oMoveAngleYaw + 0x4000;\n            s16 yawSpeed = abs_angle_diff(targetFaceYaw, o->oFaceAngleYaw) / 20;\n\n            initialAngle = o->oFaceAngleYaw;\n            clamp_s16(&yawSpeed, 100, 500);\n            obj_face_yaw_approach(targetFaceYaw, yawSpeed);\n            o->oAngleVelYaw = (s16) o->oFaceAngleYaw - initialAngle;\n        }\n\n        // Turn face roll and compute roll vel\n        if (((u16)(o->oBhvParams >> 16) & PLATFORM_ON_TRACK_BP_DONT_TURN_ROLL)) {\n            s16 rollSpeed = abs_angle_diff(o->oMoveAnglePitch, o->oFaceAngleRoll) / 20;\n\n            initialAngle = o->oFaceAngleRoll;\n            clamp_s16(&rollSpeed, 100, 500);\n            //! If the platform is moving counterclockwise upward or\n            //  clockwise downward, this will be backward\n            obj_face_roll_approach(o->oMoveAnglePitch, rollSpeed);\n            o->oAngleVelRoll = (s16) o->oFaceAngleRoll - initialAngle;\n        }\n    }\n\n    if (gMarioObject->platform != o) {\n        platform_on_track_mario_not_on_platform();\n    } else {\n        o->oTimer = 0;\n        o->header.gfx.node.flags &= ~GRAPH_RENDER_INVISIBLE;\n    }\n}\n\n/**\n * Wait 20 frames then continue moving.\n */\nstatic void platform_on_track_act_pause_briefly(void) {\n    if (o->oTimer > 20) {\n        o->oAction = PLATFORM_ON_TRACK_ACT_MOVE_ALONG_TRACK;\n    }\n}\n\n/**\n * Fall downward with no terminal velocity, stopping after reaching y = -12k\n * and eventually blinking and disappearing.\n */\nstatic void platform_on_track_act_fall(void) {\n    cur_obj_move_using_vel_and_gravity();\n\n    if (gMarioObject->platform != o) {\n        platform_on_track_mario_not_on_platform();\n    } else {\n        o->oTimer = 0;\n        //! Doesn't ensure visibility\n    }\n}\n\n/**\n * Control the rocking of the ski lift.\n */\nstatic void platform_on_track_rock_ski_lift(void) {\n    s32 targetRoll = 0;\n    UNUSED s32 initialRoll = o->oFaceAngleRoll;\n\n    o->oFaceAngleRoll += (s32) o->oPlatformOnTrackSkiLiftRollVel;\n\n    // Tilt away from the moving direction and toward mario\n    if (gMarioObject->platform == o) {\n        targetRoll = o->oForwardVel * sins(o->oMoveAngleYaw) * -50.0f\n                     + (s32)(o->oDistanceToMario * sins(o->oAngleToMario - o->oFaceAngleYaw) * -4.0f);\n    }\n\n    oscillate_toward(\n        /* value          */ &o->oFaceAngleRoll,\n        /* vel            */ &o->oPlatformOnTrackSkiLiftRollVel,\n        /* target         */ targetRoll,\n        /* velCloseToZero */ 5.0f,\n        /* accel          */ 6.0f,\n        /* slowdown       */ 1.5f);\n    clamp_f32(&o->oPlatformOnTrackSkiLiftRollVel, -100.0f, 100.0f);\n}\n\n/**\n * Update function for bhvPlatformOnTrack.\n */\nvoid bhv_platform_on_track_update(void) {\n    switch (o->oAction) {\n        case PLATFORM_ON_TRACK_ACT_INIT:\n            platform_on_track_act_init();\n            break;\n        case PLATFORM_ON_TRACK_ACT_WAIT_FOR_MARIO:\n            platform_on_track_act_wait_for_mario();\n            break;\n        case PLATFORM_ON_TRACK_ACT_MOVE_ALONG_TRACK:\n            platform_on_track_act_move_along_track();\n            break;\n        case PLATFORM_ON_TRACK_ACT_PAUSE_BRIEFLY:\n            platform_on_track_act_pause_briefly();\n            break;\n        case PLATFORM_ON_TRACK_ACT_FALL:\n            platform_on_track_act_fall();\n            break;\n    }\n\n    if (!o->oPlatformOnTrackIsNotSkiLift) {\n        platform_on_track_rock_ski_lift();\n    } else if (o->oPlatformOnTrackType == PLATFORM_ON_TRACK_TYPE_CARPET) {\n        if (!o->oPlatformOnTrackWasStoodOn && gMarioObject->platform == o) {\n            o->oPlatformOnTrackOffsetY = -8.0f;\n            o->oPlatformOnTrackWasStoodOn = TRUE;\n        }\n\n        approach_f32_ptr(&o->oPlatformOnTrackOffsetY, 0.0f, 0.5f);\n        o->oPosY += o->oPlatformOnTrackOffsetY;\n    }\n}\n\n/**\n * Update function for bhvTrackBall.\n */\nvoid bhv_track_ball_update(void) {\n    // Despawn after the elevator passes this ball\n    s16 relativeIndex =\n        (s16) o->oBhvParams2ndByte - (s16) o->parentObj->oPlatformOnTrackBaseBallIndex - 1;\n    if (relativeIndex < 1 || relativeIndex > 5) {\n        obj_mark_for_deletion(o);\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/pokey.inc.c",
    "content": "\n/**\n * Behavior for bhvPokey and bhvPokeyBodyPart.\n * bhvPokey is responsible for the behavior of the pokey itself, as well as\n * spawning the body parts.\n * Pokey comes before its body parts in processing order, and the body parts\n * are processed top to bottom.\n */\n\n/**\n * Hitbox for a single pokey body part.\n */\nstatic struct ObjectHitbox sPokeyBodyPartHitbox = {\n    /* interactType:      */ INTERACT_BOUNCE_TOP,\n    /* downOffset:        */ 10,\n    /* damageOrCoinValue: */ 2,\n    /* health:            */ 0,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 40,\n    /* height:            */ 20,\n    /* hurtboxRadius:     */ 20,\n    /* hurtboxHeight:     */ 20,\n};\n\n/**\n * Attack handlers for pokey body part.\n */\nstatic u8 sPokeyBodyPartAttackHandlers[] = {\n    /* ATTACK_PUNCH:                 */ ATTACK_HANDLER_KNOCKBACK,\n    /* ATTACK_KICK_OR_TRIP:          */ ATTACK_HANDLER_KNOCKBACK,\n    /* ATTACK_FROM_ABOVE:            */ ATTACK_HANDLER_SQUISHED,\n    /* ATTACK_GROUND_POUND_OR_TWIRL: */ ATTACK_HANDLER_SQUISHED,\n    /* ATTACK_FAST_ATTACK:           */ ATTACK_HANDLER_KNOCKBACK,\n    /* ATTACK_FROM_BELOW:            */ ATTACK_HANDLER_KNOCKBACK,\n};\n\n/**\n * Update function for pokey body part.\n * The behavior parameter is the body part's index from 0 to 4, with 0 at the\n * top.\n */\nvoid bhv_pokey_body_part_update(void) {\n    // PARTIAL_UPDATE\n\n    s16 offsetAngle;\n    f32 baseHeight;\n\n    if (obj_update_standard_actions(3.0f)) {\n        if (o->parentObj->oAction == POKEY_ACT_UNLOAD_PARTS) {\n            obj_mark_for_deletion(o);\n        } else {\n            cur_obj_update_floor_and_walls();\n            obj_update_blinking(&o->oPokeyBodyPartBlinkTimer, 30, 60, 4);\n\n            // If the body part above us is dead, then decrease body part index\n            // by one, since new parts are spawned from the bottom.\n            //! It is possible to briefly get two body parts to have the same\n            //  index by killing two body parts on the frame before a new part\n            //  spawns, but one of the body parts shifts upward immediately,\n            //  so not very interesting\n            if (o->oBhvParams2ndByte > 1\n                && !(o->parentObj->oPokeyAliveBodyPartFlags & (1 << (o->oBhvParams2ndByte - 1)))) {\n                o->parentObj->oPokeyAliveBodyPartFlags =\n                    o->parentObj->oPokeyAliveBodyPartFlags | 1 << (o->oBhvParams2ndByte - 1);\n\n                o->parentObj->oPokeyAliveBodyPartFlags =\n                    o->parentObj->oPokeyAliveBodyPartFlags & ((1 << o->oBhvParams2ndByte) ^ ~0);\n\n                o->oBhvParams2ndByte--;\n            }\n\n            // Set the bottom body part size, and gradually increase it.\n            //! This \"else if\" means that if a body part above the expanding\n            //  one dies, then the expanding will pause for one frame.\n            //! If you kill a body part as it's expanding, the body part that\n            //  was above it will instantly shrink and begin expanding in its\n            //  place.\n            else if (o->parentObj->oPokeyBottomBodyPartSize < 1.0f\n                     && o->oBhvParams2ndByte + 1 == o->parentObj->oPokeyNumAliveBodyParts) {\n                approach_f32_ptr(&o->parentObj->oPokeyBottomBodyPartSize, 1.0f, 0.1f);\n                cur_obj_scale(o->parentObj->oPokeyBottomBodyPartSize * 3.0f);\n            }\n\n            //! Pausing causes jumps in offset angle\n            offsetAngle = o->oBhvParams2ndByte * 0x4000 + gGlobalTimer * 0x800;\n            o->oPosX = o->parentObj->oPosX + coss(offsetAngle) * 6.0f;\n            o->oPosZ = o->parentObj->oPosZ + sins(offsetAngle) * 6.0f;\n\n            // This is the height of the tower beneath the body part\n            baseHeight = o->parentObj->oPosY\n                         + (120 * (o->parentObj->oPokeyNumAliveBodyParts - o->oBhvParams2ndByte) - 240)\n                         + 120.0f * o->parentObj->oPokeyBottomBodyPartSize;\n\n            // We treat the base height as a minimum height, allowing the body\n            // part to briefly stay in the air after a part below it dies\n            if (o->oPosY < baseHeight) {\n                o->oPosY = baseHeight;\n                o->oVelY = 0.0f;\n            }\n\n            // Only the head has loot coins\n            if (o->oBhvParams2ndByte == 0) {\n                o->oNumLootCoins = 1;\n            } else {\n                o->oNumLootCoins = 0;\n            }\n\n            // If the body part was attacked, then die. If the head was killed,\n            // then die after a delay.\n\n            if (obj_handle_attacks(&sPokeyBodyPartHitbox, o->oAction, sPokeyBodyPartAttackHandlers)) {\n                o->parentObj->oPokeyNumAliveBodyParts--;\n                if (o->oBhvParams2ndByte == 0) {\n                    o->parentObj->oPokeyHeadWasKilled = TRUE;\n                    // Last minute change to blue coins - not sure why they didn't\n                    // just set it to -1 above\n                    o->oNumLootCoins = -1;\n                }\n\n                o->parentObj->oPokeyAliveBodyPartFlags =\n                    o->parentObj->oPokeyAliveBodyPartFlags & ((1 << o->oBhvParams2ndByte) ^ ~0);\n            } else if (o->parentObj->oPokeyHeadWasKilled) {\n                cur_obj_become_intangible();\n\n                if (--o->oPokeyBodyPartDeathDelayAfterHeadKilled < 0) {\n                    o->parentObj->oPokeyNumAliveBodyParts--;\n                    obj_die_if_health_non_positive();\n                }\n            } else {\n                // Die in order from top to bottom\n                // If a new body part spawns after the head has been killed, its\n                // death delay will be 0\n                o->oPokeyBodyPartDeathDelayAfterHeadKilled = (o->oBhvParams2ndByte << 2) + 20;\n            }\n\n            cur_obj_move_standard(-78);\n        }\n    } else {\n        o->oAnimState = 1;\n    }\n\n    o->oGraphYOffset = o->header.gfx.scale[1] * 22.0f;\n}\n\n/**\n * When mario gets within range, spawn the 5 body parts and enter the wander\n * action.\n */\nstatic void pokey_act_uninitialized(void) {\n    struct Object *bodyPart;\n    s32 i;\n    s16 partModel;\n\n    if (o->oDistanceToMario < 2000.0f) {\n        partModel = MODEL_POKEY_HEAD;\n\n        for (i = 0; i < 5; i++) {\n            // Spawn body parts at y offsets 480, 360, 240, 120, 0\n            // behavior param 0 = head, 4 = lowest body part\n            bodyPart = spawn_object_relative(i, 0, -i * 120 + 480, 0, o, partModel, bhvPokeyBodyPart);\n\n            if (bodyPart != NULL) {\n                obj_scale(bodyPart, 3.0f);\n            }\n\n            partModel = MODEL_POKEY_BODY_PART;\n        }\n\n        o->oPokeyAliveBodyPartFlags = 0x1F;\n        o->oPokeyNumAliveBodyParts = 5;\n        o->oPokeyBottomBodyPartSize = 1.0f;\n        o->oAction = POKEY_ACT_WANDER;\n    }\n}\n\n/**\n * Wander around, replenishing body parts if they are killed. When mario moves\n * far away, enter the unload parts action.\n * While wandering, if mario is within 2000 units, try to move toward him. But\n * if mario gets too close, then shy away from him.\n */\nstatic void pokey_act_wander(void) {\n    s32 targetAngleOffset;\n\n    if (o->oPokeyNumAliveBodyParts == 0) {\n        obj_mark_for_deletion(o);\n    } else if (o->oDistanceToMario > 2500.0f) {\n        o->oAction = POKEY_ACT_UNLOAD_PARTS;\n        o->oForwardVel = 0.0f;\n    } else {\n        treat_far_home_as_mario(1000.0f);\n        cur_obj_update_floor_and_walls();\n\n        if (o->oPokeyHeadWasKilled) {\n            o->oForwardVel = 0.0f;\n        } else {\n            o->oForwardVel = 5.0f;\n\n            // If a body part is missing, replenish it after 100 frames\n            if (o->oPokeyNumAliveBodyParts < 5) {\n                if (o->oTimer > 100) {\n                    // Because the body parts shift index whenever a body part\n                    // is killed, the new part's index is equal to the number\n                    // of living body parts\n\n                    struct Object *bodyPart\n                        = spawn_object_relative(o->oPokeyNumAliveBodyParts, 0, 0, 0, o,\n                                                MODEL_POKEY_BODY_PART, bhvPokeyBodyPart);\n\n                    if (bodyPart != NULL) {\n                        o->oPokeyAliveBodyPartFlags =\n                            o->oPokeyAliveBodyPartFlags | (1 << o->oPokeyNumAliveBodyParts);\n                        o->oPokeyNumAliveBodyParts++;\n                        o->oPokeyBottomBodyPartSize = 0.0f;\n\n                        obj_scale(bodyPart, 0.0f);\n                    }\n\n                    o->oTimer = 0;\n                }\n            } else {\n                o->oTimer = 0;\n            }\n\n            if (o->oPokeyTurningAwayFromWall) {\n                o->oPokeyTurningAwayFromWall =\n                    obj_resolve_collisions_and_turn(o->oPokeyTargetYaw, 0x200);\n            } else {\n                // If far from home, turn back toward home\n                if (o->oDistanceToMario >= 25000.0f) {\n                    o->oPokeyTargetYaw = o->oAngleToMario;\n                }\n\n                if (!(o->oPokeyTurningAwayFromWall =\n                          obj_bounce_off_walls_edges_objects(&o->oPokeyTargetYaw))) {\n                    if (o->oPokeyChangeTargetTimer != 0) {\n                        o->oPokeyChangeTargetTimer--;\n                    } else if (o->oDistanceToMario > 2000.0f) {\n                        o->oPokeyTargetYaw = obj_random_fixed_turn(0x2000);\n                        o->oPokeyChangeTargetTimer = random_linear_offset(30, 50);\n                    } else {\n                        // The goal of this computation is to make pokey approach\n                        // mario directly if he is far away, but to shy away from\n                        // him when he is nearby\n\n                        // targetAngleOffset is 0 when distance to mario is >= 1838.4\n                        // and 0x4000 when distance to mario is <= 200\n                        targetAngleOffset = (s32)(0x4000 - (o->oDistanceToMario - 200.0f) * 10.0f);\n                        if (targetAngleOffset < 0) {\n                            targetAngleOffset = 0;\n                        } else if (targetAngleOffset > 0x4000) {\n                            targetAngleOffset = 0x4000;\n                        }\n\n                        // If we need to rotate CCW to get to mario, then negate\n                        // the target angle offset\n                        if ((s16)(o->oAngleToMario - o->oMoveAngleYaw) > 0) {\n                            targetAngleOffset = -targetAngleOffset;\n                        }\n\n                        // When mario is far, targetAngleOffset is 0, so he moves\n                        // toward him directly. When mario is close,\n                        // targetAngleOffset is 0x4000, so he turns 90 degrees\n                        // away from mario\n                        o->oPokeyTargetYaw = o->oAngleToMario + targetAngleOffset;\n                    }\n                }\n\n                cur_obj_rotate_yaw_toward(o->oPokeyTargetYaw, 0x200);\n            }\n        }\n\n        cur_obj_move_standard(-78);\n    }\n}\n\n/**\n * Move back to home and enter the uninitialized action.\n * The pokey body parts check to see if pokey is in this action, and if so,\n * unload themselves.\n */\nstatic void pokey_act_unload_parts(void) {\n    o->oAction = POKEY_ACT_UNINITIALIZED;\n    cur_obj_set_pos_to_home();\n}\n\n/**\n * Update function for pokey.\n */\nvoid bhv_pokey_update(void) {\n    // PARTIAL_UPDATE\n\n    o->oDeathSound = SOUND_OBJ_POKEY_DEATH;\n\n    switch (o->oAction) {\n        case POKEY_ACT_UNINITIALIZED:\n            pokey_act_uninitialized();\n            break;\n        case POKEY_ACT_WANDER:\n            pokey_act_wander();\n            break;\n        case POKEY_ACT_UNLOAD_PARTS:\n            pokey_act_unload_parts();\n            break;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/pole.inc.c",
    "content": "\n/**\n * Behaviors for bhvPoleGrabbing and bhvGiantPole.\n *\n * bhvPoleGrabbing is a generic behavior used almost anywhere the player can\n * grab onto and climb up another object.\n *\n * bhvGiantPole controls the large pole in Whomp's Fortress and differs from\n * other poles because it spawns a yellow ball that rests at its top.\n */\n\n/**\n * Initialize the hitbox height field for bhvPoleGrabbing.\n */\nvoid bhv_pole_init(void) {\n    /**\n     * This is equivalent to using `o->oBhvParams2ndByte` according to\n     * `spawn_objects_from_info`.\n     */\n    s32 tenthHitboxHeight = (o->oBhvParams >> 16) & 0xFF;\n    o->hitboxHeight = tenthHitboxHeight * 10;\n}\n\n/**\n * Main loop for bhvGiantPole. It is equivalent to bhv_pole_base_loop() except\n * for the fact that it spawns a yellow sphere at the top of the pole on the\n * first frame.\n */\nvoid bhv_giant_pole_loop(void) {\n    if (o->oTimer == 0) {\n        struct Object *topBall = spawn_object(o, MODEL_YELLOW_SPHERE, bhvYellowBall);\n        topBall->oPosY += o->hitboxHeight + 50.0f;\n    }\n    bhv_pole_base_loop();\n}\n"
  },
  {
    "path": "src/game/behaviors/pole_base.inc.c",
    "content": "// pole_base.inc.c\n\nvoid bhv_pole_base_loop(void) {\n    if (o->oPosY - 10.0f < gMarioObject->oPosY\n        && gMarioObject->oPosY < o->oPosY + o->hitboxHeight + 30.0f) {\n        if (o->oTimer > 10 && !(gMarioStates[0].action & MARIO_PUNCHING)) {\n            cur_obj_push_mario_away(70.0f);\n        }\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/purple_switch.inc.c",
    "content": "\n/**\n * Behavior for bhvFloorSwitchHardcodedModel, bhvFloorSwitchGrills, and\n * bhvFloorSwitchAnimatesObject.\n *\n * This controls the purple switches that Mario can step on to affect parts of\n * the environment.\n */\n\nvoid bhv_purple_switch_loop(void) {\n    UNUSED u8 filler[4];\n\n    switch (o->oAction) {\n        /**\n         * Set the switch's model and scale. If Mario is standing near the\n         * switch's middle section, transition to the pressed state.\n         */\n        case PURPLE_SWITCH_ACT_IDLE:\n            cur_obj_set_model(MODEL_PURPLE_SWITCH);\n            cur_obj_scale(1.5f);\n            if (gMarioObject->platform == o && !(gMarioStates[0].action & MARIO_UNKNOWN_13)) {\n                if (lateral_dist_between_objects(o, gMarioObject) < 127.5) {\n                    o->oAction = PURPLE_SWITCH_ACT_PRESSED;\n                }\n            }\n            break;\n\n        /**\n         * Collapse the switch downward, play a sound, and shake the screen.\n         * Immediately transition to the ticking state.\n         */\n        case PURPLE_SWITCH_ACT_PRESSED:\n            cur_obj_scale_over_time(2, 3, 1.5f, 0.2f);\n            if (o->oTimer == 3) {\n                cur_obj_play_sound_2(SOUND_GENERAL2_PURPLE_SWITCH);\n                o->oAction = PURPLE_SWITCH_ACT_TICKING;\n                cur_obj_shake_screen(SHAKE_POS_SMALL);\n#if ENABLE_RUMBLE\n                queue_rumble_data(5, 80);\n#endif\n            }\n            break;\n\n        /**\n         * Play a continuous ticking sound that gets faster when time is almost\n         * up. When time is up, move to a waiting-while-pressed state.\n         */\n        case PURPLE_SWITCH_ACT_TICKING:\n            if (o->oBhvParams2ndByte != 0) {\n                if (o->oBhvParams2ndByte == 1 && gMarioObject->platform != o) {\n                    o->oAction++;\n                } else {\n                    if (o->oTimer < 360) {\n                        play_sound(SOUND_GENERAL2_SWITCH_TICK_FAST, gGlobalSoundSource);\n                    } else {\n                        play_sound(SOUND_GENERAL2_SWITCH_TICK_SLOW, gGlobalSoundSource);\n                    }\n                    if (o->oTimer > 400) {\n                        o->oAction = PURPLE_SWITCH_ACT_WAIT_FOR_MARIO_TO_GET_OFF;\n                    }\n                }\n            }\n            break;\n\n        /**\n         * Make the switch look unpressed again, and transition back to the\n         * idle state.\n         */\n        case PURPLE_SWITCH_ACT_UNPRESSED:\n            cur_obj_scale_over_time(2, 3, 0.2f, 1.5f);\n            if (o->oTimer == 3) {\n                o->oAction = PURPLE_SWITCH_ACT_IDLE;\n            }\n            break;\n\n        /**\n         * Mario is standing on the switch, but time has expired. Wait for\n         * him to get off the switch, and when he does so, transition to the\n         * unpressed state.\n         */\n        case PURPLE_SWITCH_ACT_WAIT_FOR_MARIO_TO_GET_OFF:\n            if (!cur_obj_is_mario_on_platform()) {\n                o->oAction = PURPLE_SWITCH_ACT_UNPRESSED;\n            }\n            break;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/pyramid_elevator.inc.c",
    "content": "\n/**\n * Behaviors for bhvPyramidElevator and bhvPyramidElevatorTrajectoryMarkerBall.\n *\n * This controls the elevator that descends Shifting Sand Land's pyramid, as\n * well as the small marker balls that demarcate its trajactory.\n */\n\n/**\n * Generate the ten trajectory marker balls that indicate where the elevator\n * moves.\n */\nvoid bhv_pyramid_elevator_init(void) {\n    s32 i;\n\n    for (i = 0; i < 10; i++) {\n        struct Object *ball = spawn_object(o, MODEL_TRAJECTORY_MARKER_BALL,\n                                           bhvPyramidElevatorTrajectoryMarkerBall);\n        ball->oPosY = 4600 - i * 460;\n    }\n}\n\nvoid bhv_pyramid_elevator_loop(void) {\n    switch (o->oAction) {\n        /**\n         * Do not move until Mario stands on the elevator. When he does,\n         * transition to the starting state.\n         */\n        case PYRAMID_ELEVATOR_ACT_IDLE:\n            if (gMarioObject->platform == o) {\n                o->oAction = PYRAMID_ELEVATOR_ACT_START_MOVING;\n            }\n            break;\n\n        /**\n         * Use a sine wave to start the elevator's movement with a small jolt.\n         * After a certain amount of time, transition to a constant-velocity state.\n         */\n        case PYRAMID_ELEVATOR_ACT_START_MOVING:\n            o->oPosY = o->oHomeY - sins(o->oTimer * 0x1000) * 10.0f;\n            if (o->oTimer == 8) {\n                o->oAction = PYRAMID_ELEVATOR_ACT_CONSTANT_VELOCITY;\n            }\n            break;\n\n        /**\n         * Move downwards with constant velocity. Once at the bottom of the\n         * track, transition to the final state.\n         */\n        case PYRAMID_ELEVATOR_ACT_CONSTANT_VELOCITY:\n            o->oVelY = -10.0f;\n            o->oPosY += o->oVelY;\n            if (o->oPosY < 128.0f) {\n                o->oPosY = 128.0f;\n                o->oAction = PYRAMID_ELEVATOR_ACT_AT_BOTTOM;\n            }\n            break;\n\n        /**\n         * Use a sine wave to stop the elevator's movement with a small jolt.\n         * Then, remain at the bottom of the track.\n         */\n        case PYRAMID_ELEVATOR_ACT_AT_BOTTOM:\n            o->oPosY = sins(o->oTimer * 0x1000) * 10.0f + 128.0f;\n            if (o->oTimer >= 8) {\n                o->oVelY = 0;\n                o->oPosY = 128.0f;\n            }\n            break;\n    }\n}\n\n/**\n * Deactivate the trajectory marker balls if the elevator is not moving.\n * Otherwise, set their scale.\n */\nvoid bhv_pyramid_elevator_trajectory_marker_ball_loop(void) {\n    struct Object *elevator;\n\n    cur_obj_scale(0.15f);\n    elevator = cur_obj_nearest_object_with_behavior(bhvPyramidElevator);\n\n    if (elevator != NULL) {\n        if (elevator->oAction != PYRAMID_ELEVATOR_ACT_IDLE) {\n            o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n        }\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/pyramid_top.inc.c",
    "content": "\n/**\n * Behaviors for bhvPyramidTop, bhvPyramidTopFragment, and\n * bhvPyramidPillarTouchDetector.\n *\n * bhvPyramidTop controls Shifting Sand Land's pyramid's top piece, which\n *      rotates and explodes when Mario stands on all four pillars.\n * bhvPyramidTopFragment controls the shards that the pyramid's top emits when\n *      it is spinning and exploding.\n * bhvPyramidPillarTouchDetector controls the intangible collision boxes that\n *      Mario touches when on top of each pillar.\n */\n\n/**\n * Spawn the four pillars' touch detectors.\n */\nvoid bhv_pyramid_top_init(void) {\n    spawn_object_abs_with_rot(o, 0, MODEL_NONE, bhvPyramidPillarTouchDetector,\n                              1789, 1024, 764, 0, 0, 0);\n    spawn_object_abs_with_rot(o, 0, MODEL_NONE, bhvPyramidPillarTouchDetector,\n                              1789, 896, -2579, 0, 0, 0);\n    spawn_object_abs_with_rot(o, 0, MODEL_NONE, bhvPyramidPillarTouchDetector,\n                              -5883, 1024, -2579, 0, 0, 0);\n    spawn_object_abs_with_rot(o, 0, MODEL_NONE, bhvPyramidPillarTouchDetector,\n                              -5883, 1024, 764, 0, 0, 0);\n}\n\n/**\n * Animate the pyramid top as rising and then spinning. Generate some pyramid\n * fragments in the process.\n */\nvoid bhv_pyramid_top_spinning(void) {\n    // (TODO: What is this doing)\n    o->oPosX = o->oHomeX + sins(o->oTimer * 0x4000) * 40.0f;\n\n    // At first, move upward smoothly without rotating.\n    if (o->oTimer < 60) {\n        o->oPosY = o->oHomeY + absf_2(sins(o->oTimer * 0x2000) * 10.0f);\n    } else {\n        // Then, rotate at an accelerating rate, and move upward at a constant rate.\n        o->oAngleVelYaw += 0x100;\n        if (o->oAngleVelYaw > 0x1800) {\n            o->oAngleVelYaw = 0x1800;\n            o->oVelY = 5.0f;\n        }\n\n        o->oFaceAngleYaw += o->oAngleVelYaw;\n        o->oPosY += o->oVelY;\n    }\n\n    // Every frame until 90 frames have passed, generate a pyramid fragment\n    // with a random velocity and angle.\n    if (o->oTimer < 90) {\n        struct Object *pyramidFragment = spawn_object(o, MODEL_DIRT_ANIMATION, bhvPyramidTopFragment);\n        pyramidFragment->oForwardVel = random_float() * 10.0f + 20.0f;\n        pyramidFragment->oMoveAngleYaw = random_u16();\n        pyramidFragment->oPyramidTopFragmentsScale = 0.8f;\n        pyramidFragment->oGravity = random_float() + 2.0f;\n    }\n\n    // After enough time, transition to the exploding state.\n    if (o->oTimer == 150) {\n        o->oAction = PYRAMID_TOP_ACT_EXPLODE;\n    }\n}\n\n/**\n * Explode the pyramid top, generating dust and pyramid fragments.\n */\nvoid bhv_pyramid_top_explode(void) {\n    struct Object *pyramidFragment;\n    s16 i;\n\n    spawn_mist_particles_variable(0, 0, 690.0f);\n\n    // Generate 30 pyramid fragments with random properties.\n    for (i = 0; i < 30; i++) {\n        pyramidFragment = spawn_object(o, MODEL_DIRT_ANIMATION, bhvPyramidTopFragment);\n        pyramidFragment->oForwardVel = random_float() * 50 + 80;\n        pyramidFragment->oVelY = random_float() * 80 + 20;\n        pyramidFragment->oMoveAngleYaw = random_u16();\n        pyramidFragment->oPyramidTopFragmentsScale = 3;\n        pyramidFragment->oGravity = random_float() * 2 + 5;\n    }\n\n    // Deactivate the pyramid top.\n    o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n}\n\nvoid bhv_pyramid_top_loop(void) {\n    switch (o->oAction) {\n        case PYRAMID_TOP_ACT_CHECK_IF_SOLVED:\n            if (o->oPyramidTopPillarsTouched == 4) {\n                play_puzzle_jingle();\n                o->oAction = PYRAMID_TOP_ACT_SPINNING;\n            }\n            break;\n\n        case PYRAMID_TOP_ACT_SPINNING:\n            if (o->oTimer == 0) {\n                cur_obj_play_sound_2(SOUND_GENERAL2_PYRAMID_TOP_SPIN);\n            }\n\n            bhv_pyramid_top_spinning();\n            break;\n\n        case PYRAMID_TOP_ACT_EXPLODE:\n            if (o->oTimer == 0) {\n                create_sound_spawner(SOUND_GENERAL2_PYRAMID_TOP_EXPLOSION);\n            }\n\n            bhv_pyramid_top_explode();\n            break;\n    }\n}\n\n/**\n * Initialize the pyramid fragment.\n */\nvoid bhv_pyramid_top_fragment_init(void) {\n    o->oFriction = 0.999f;\n    o->oBuoyancy = 2.0f;\n    o->oAnimState = 3;\n    cur_obj_scale(o->oPyramidTopFragmentsScale);\n}\n\n/**\n * Rotate the pyramid fragment along the yaw and pitch axes. After some time,\n * deactivate it.\n */\nvoid bhv_pyramid_top_fragment_loop(void) {\n    object_step();\n    o->oFaceAngleYaw += 0x1000;\n    o->oFaceAnglePitch += 0x1000;\n\n    if (o->oTimer == 60) {\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n}\n\n/**\n * If Mario touches a pillar's touch detector, count it towards the pyramid\n * top's total count of touched detectors, and deactivate the detector.\n */\nvoid bhv_pyramid_pillar_touch_detector_loop(void) {\n    cur_obj_become_tangible();\n    if (obj_check_if_collided_with_object(o, gMarioObject) == TRUE) {\n        // Increase the pyramid top's count of pillars touched.\n        o->parentObj->oPyramidTopPillarsTouched++;\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/pyramid_wall.inc.c",
    "content": "\n/**\n * Behavior for bhvSSLMovingPyramidWall.\n *\n * This controls the moving walls found within Shifting Sand Land's pyramid.\n * Each wall starts at an initial position and moves up or down at a constant\n * speed.\n */\n\n/**\n * Initialize the moving wall to be at one of three possible initial starting\n * positions.\n */\nvoid bhv_ssl_moving_pyramid_wall_init(void) {\n    switch (o->oBhvParams2ndByte) {\n        case PYRAMID_WALL_BP_POSITION_HIGH:\n            break;\n\n        case PYRAMID_WALL_BP_POSITION_MIDDLE:\n            o->oPosY -= 256.0f;\n            o->oTimer += 50;\n            break;\n\n        case PYRAMID_WALL_BP_POSITION_LOW:\n            o->oPosY -= 512.0f;\n            o->oAction = PYRAMID_WALL_ACT_MOVING_UP;\n            break;\n    }\n}\n\n/**\n * Move up or down at a constant velocity for a period of time, then switch to\n * do the other.\n */\nvoid bhv_ssl_moving_pyramid_wall_loop(void) {\n    switch (o->oAction) {\n        case PYRAMID_WALL_ACT_MOVING_DOWN:\n            o->oVelY = -5.12f;\n            if (o->oTimer == 100) {\n                o->oAction = PYRAMID_WALL_ACT_MOVING_UP;\n            }\n            break;\n\n        case PYRAMID_WALL_ACT_MOVING_UP:\n            o->oVelY = 5.12f;\n            if (o->oTimer == 100) {\n                o->oAction = PYRAMID_WALL_ACT_MOVING_DOWN;\n            }\n            break;\n    }\n\n    o->oPosY += o->oVelY;\n}\n"
  },
  {
    "path": "src/game/behaviors/racing_penguin.inc.c",
    "content": "// racing_penguin.inc.c\n\nstruct RacingPenguinData {\n    s16 dialogID;\n    f32 radius;\n    f32 height;\n};\n\nstatic struct RacingPenguinData sRacingPenguinData[] = {\n    /* RACING_PENGUIN_BP_THIN */ { DIALOG_055, 200.0f, 200.0f },\n    /* RACING_PENGUIN_BP_FAT  */ { DIALOG_164, 350.0f, 250.0f },\n};\n\nvoid bhv_racing_penguin_init(void) {\n    if (gMarioState->numStars == 120) {\n        cur_obj_scale(8.0f);\n        o->header.gfx.scale[1] = 5.0f;\n        o->oBhvParams2ndByte = RACING_PENGUIN_BP_FAT;\n    }\n}\n\nstatic void racing_penguin_act_wait_for_mario(void) {\n    if (o->oTimer > o->oRacingPenguinInitTextCooldown && o->oPosY - gMarioObject->oPosY <= 0.0f\n        && cur_obj_can_mario_activate_textbox_2(400.0f, 400.0f)) {\n        o->oAction = RACING_PENGUIN_ACT_SHOW_INIT_TEXT;\n    }\n}\n\nstatic void racing_penguin_act_show_init_text(void) {\n    s32 response = obj_update_race_proposition_dialog(sRacingPenguinData[o->oBhvParams2ndByte].dialogID);\n\n    if (response == DIALOG_RESPONSE_YES) {\n        struct Object *child;\n\n        child = cur_obj_nearest_object_with_behavior(bhvPenguinRaceFinishLine);\n        child->parentObj = o;\n\n        child = cur_obj_nearest_object_with_behavior(bhvPenguinRaceShortcutCheck);\n        child->parentObj = o;\n\n        o->oPathedStartWaypoint = o->oPathedPrevWaypoint =\n            segmented_to_virtual(ccm_seg7_trajectory_penguin_race);\n        o->oPathedPrevWaypointFlags = 0;\n\n        o->oAction = RACING_PENGUIN_ACT_PREPARE_FOR_RACE;\n        o->oVelY = 60.0f;\n    } else if (response == DIALOG_RESPONSE_NO) {\n        o->oAction = RACING_PENGUIN_ACT_WAIT_FOR_MARIO;\n        o->oRacingPenguinInitTextCooldown = 60;\n    }\n}\n\nstatic void racing_penguin_act_prepare_for_race(void) {\n    if (obj_begin_race(TRUE)) {\n        o->oAction = RACING_PENGUIN_ACT_RACE;\n        o->oForwardVel = 20.0f;\n    }\n\n    cur_obj_rotate_yaw_toward(0x4000, 2500);\n}\n\nstatic void racing_penguin_act_race(void) {\n    if (cur_obj_follow_path(0) == PATH_REACHED_END) {\n        o->oRacingPenguinReachedBottom = TRUE;\n        o->oAction = RACING_PENGUIN_ACT_FINISH_RACE;\n    } else {\n        f32 targetSpeed = o->oPosY - gMarioObject->oPosY;\n        f32 minSpeed = 70.0f;\n\n        cur_obj_play_sound_1(SOUND_AIR_ROUGH_SLIDE);\n\n        if (targetSpeed < 100.0f || (o->oPathedPrevWaypointFlags & WAYPOINT_MASK_00FF) >= 35) {\n            if ((o->oPathedPrevWaypointFlags & WAYPOINT_MASK_00FF) >= 35) {\n                minSpeed = 60.0f;\n            }\n\n            approach_f32_ptr(&o->oRacingPenguinWeightedNewTargetSpeed, -500.0f, 100.0f);\n        } else {\n            approach_f32_ptr(&o->oRacingPenguinWeightedNewTargetSpeed, 1000.0f, 30.0f);\n        }\n\n        targetSpeed = 0.1f * (o->oRacingPenguinWeightedNewTargetSpeed + targetSpeed);\n        clamp_f32(&targetSpeed, minSpeed, 150.0f);\n        obj_forward_vel_approach(targetSpeed, 0.4f);\n\n        cur_obj_init_animation_with_sound(1);\n        cur_obj_rotate_yaw_toward(o->oPathedTargetYaw, (s32)(15.0f * o->oForwardVel));\n\n        if (cur_obj_check_if_at_animation_end() && (o->oMoveFlags & OBJ_MOVE_MASK_ON_GROUND)) {\n            spawn_object_relative_with_scale(0, 0, -100, 0, 4.0f, o, MODEL_SMOKE, bhvWhitePuffSmoke2);\n        }\n    }\n\n    if (mario_is_in_air_action()) {\n        if (o->oTimer > 60) {\n            o->oRacingPenguinMarioCheated = TRUE;\n        }\n    } else {\n        o->oTimer = 0;\n    }\n}\n\nstatic void racing_penguin_act_finish_race(void) {\n    if (o->oForwardVel != 0.0f) {\n        if (o->oTimer > 5 && (o->oMoveFlags & OBJ_MOVE_HIT_WALL)) {\n            cur_obj_play_sound_2(SOUND_OBJ_POUNDING_LOUD);\n            set_camera_shake_from_point(SHAKE_POS_SMALL, o->oPosX, o->oPosY, o->oPosZ);\n            o->oForwardVel = 0.0f;\n        }\n    } else if (cur_obj_init_anim_and_check_if_end(2)) {\n        o->oAction = RACING_PENGUIN_ACT_SHOW_FINAL_TEXT;\n    }\n}\n\nstatic void racing_penguin_act_show_final_text(void) {\n    if (o->oRacingPenguinFinalTextbox == 0) {\n        if (cur_obj_rotate_yaw_toward(0, 200)) {\n            cur_obj_init_animation_with_sound(3);\n            o->oForwardVel = 0.0f;\n\n            if (cur_obj_can_mario_activate_textbox_2(400.0f, 400.0f)) {\n                if (o->oRacingPenguinMarioWon) {\n                    if (o->oRacingPenguinMarioCheated) {\n                        o->oRacingPenguinFinalTextbox = DIALOG_132;\n                        o->oRacingPenguinMarioWon = FALSE;\n                    } else {\n                        o->oRacingPenguinFinalTextbox = DIALOG_056;\n                    }\n                } else {\n                    o->oRacingPenguinFinalTextbox = DIALOG_037;\n                }\n            }\n        } else {\n            cur_obj_init_animation_with_sound(0);\n\n#ifndef VERSION_JP\n            play_penguin_walking_sound(1);\n#endif\n\n            o->oForwardVel = 4.0f;\n        }\n    } else if (o->oRacingPenguinFinalTextbox > 0) {\n        s32 textResult;\n        if ((textResult = cur_obj_update_dialog_with_cutscene(MARIO_DIALOG_LOOK_UP,\n            DIALOG_FLAG_TURN_TO_MARIO, CUTSCENE_DIALOG, o->oRacingPenguinFinalTextbox))) {\n            o->oRacingPenguinFinalTextbox = -1;\n            o->oTimer = 0;\n        }\n    } else if (o->oRacingPenguinMarioWon) {\n#ifdef VERSION_JP\n        spawn_default_star(-7339.0f, -5700.0f, -6774.0f);\n#else\n        cur_obj_spawn_star_at_y_offset(-7339.0f, -5700.0f, -6774.0f, 200.0f);\n#endif\n        o->oRacingPenguinMarioWon = FALSE;\n    }\n}\n\nvoid bhv_racing_penguin_update(void) {\n    cur_obj_update_floor_and_walls();\n\n    switch (o->oAction) {\n        case RACING_PENGUIN_ACT_WAIT_FOR_MARIO:\n            racing_penguin_act_wait_for_mario();\n            break;\n        case RACING_PENGUIN_ACT_SHOW_INIT_TEXT:\n            racing_penguin_act_show_init_text();\n            break;\n        case RACING_PENGUIN_ACT_PREPARE_FOR_RACE:\n            racing_penguin_act_prepare_for_race();\n            break;\n        case RACING_PENGUIN_ACT_RACE:\n            racing_penguin_act_race();\n            break;\n        case RACING_PENGUIN_ACT_FINISH_RACE:\n            racing_penguin_act_finish_race();\n            break;\n        case RACING_PENGUIN_ACT_SHOW_FINAL_TEXT:\n            racing_penguin_act_show_final_text();\n            break;\n    }\n\n    cur_obj_move_standard(78);\n    cur_obj_align_gfx_with_floor();\n    cur_obj_push_mario_away_from_cylinder(sRacingPenguinData[o->oBhvParams2ndByte].radius,\n                                          sRacingPenguinData[o->oBhvParams2ndByte].height);\n}\n\nvoid bhv_penguin_race_finish_line_update(void) {\n    if ((o->parentObj->oRacingPenguinReachedBottom\n         || (o->oDistanceToMario < 1000.0f && gMarioObject->oPosZ - o->oPosZ < 0.0f))\n        && !o->parentObj->oRacingPenguinReachedBottom) {\n        o->parentObj->oRacingPenguinMarioWon = TRUE;\n    }\n}\n\nvoid bhv_penguin_race_shortcut_check_update(void) {\n    if (o->oDistanceToMario < 500.0f) {\n        o->parentObj->oRacingPenguinMarioCheated = TRUE;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/recovery_heart.inc.c",
    "content": "// recovery_heart.inc.c\n\nstruct ObjectHitbox sRecoveryHeartHitbox = {\n    /* interactType:      */ 0,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 0,\n    /* health:            */ 0,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 50,\n    /* height:            */ 50,\n    /* hurtboxRadius:     */ 50,\n    /* hurtboxHeight:     */ 50,\n};\n\nvoid bhv_recovery_heart_loop(void) {\n    obj_set_hitbox(o, &sRecoveryHeartHitbox);\n    if (obj_check_if_collided_with_object(o, gMarioObject)) {\n        if (o->oSpinningHeartPlayedSound == 0) {\n            cur_obj_play_sound_2(SOUND_GENERAL_HEART_SPIN);\n            o->oSpinningHeartPlayedSound++;\n        }\n\n        o->oAngleVelYaw = (s32)(200.0f * gMarioStates[0].forwardVel) + 1000;\n    } else {\n        o->oSpinningHeartPlayedSound = 0;\n\n        if ((o->oAngleVelYaw -= 50) < 400) {\n            o->oAngleVelYaw = 400;\n            o->oSpinningHeartTotalSpin = 0;\n        }\n    }\n\n    if ((o->oSpinningHeartTotalSpin += o->oAngleVelYaw) >= 0x10000) {\n        gMarioStates[0].healCounter += 4;\n        o->oSpinningHeartTotalSpin -= 0x10000;\n    }\n\n    o->oFaceAngleYaw += o->oAngleVelYaw;\n}\n"
  },
  {
    "path": "src/game/behaviors/red_coin.inc.c",
    "content": "\n/**\n * This file contains the initialization and behavior for red coins.\n * Behavior controls audio and the orange number spawned, as well as interacting with\n * the course's red coin star.\n */\n\n/**\n * Red coin's hitbox details.\n */\nstatic struct ObjectHitbox sRedCoinHitbox = {\n    /* interactType:      */ INTERACT_COIN,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 2,\n    /* health:            */ 0,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 100,\n    /* height:            */ 64,\n    /* hurtboxRadius:     */ 0,\n    /* hurtboxHeight:     */ 0,\n};\n\n/**\n * Red coin initialization function. Sets the coin's hitbox and parent object.\n */\nvoid bhv_red_coin_init(void) {\n    // This floor and floor height are unused. Perhaps for orange number spawns originally?\n    struct Surface *dummyFloor;\n    UNUSED f32 floorHeight = find_floor(o->oPosX, o->oPosY, o->oPosZ, &dummyFloor);\n\n    // Set the red coins to have a parent of the closest red coin star.\n    struct Object *hiddenRedCoinStar;\n\n    if ((hiddenRedCoinStar =\n             cur_obj_nearest_object_with_behavior(bhvHiddenRedCoinStar)) != NULL) {\n        o->parentObj = hiddenRedCoinStar;\n    } else if ((hiddenRedCoinStar =\n             cur_obj_nearest_object_with_behavior(bhvBowserCourseRedCoinStar)) != NULL) {\n        o->parentObj = hiddenRedCoinStar;\n    } else {\n        o->parentObj = NULL;\n    }\n\n    obj_set_hitbox(o, &sRedCoinHitbox);\n}\n\n/**\n * Main behavior for red coins. Primarily controls coin collection noise and spawning\n * the orange number counter.\n */\nvoid bhv_red_coin_loop(void) {\n    // If Mario interacted with the object...\n    if (o->oInteractStatus & INT_STATUS_INTERACTED) {\n        // ...and there is a red coin star in the level...\n        if (o->parentObj != NULL) {\n            // ...increment the star's counter.\n            o->parentObj->oHiddenStarTriggerCounter++;\n\n            // For JP version, play an identical sound for all coins.\n#ifdef VERSION_JP\n            create_sound_spawner(SOUND_GENERAL_RED_COIN);\n#endif\n            // Spawn the orange number counter, as long as it isn't the last coin.\n            if (o->parentObj->oHiddenStarTriggerCounter != 8) {\n                spawn_orange_number(o->parentObj->oHiddenStarTriggerCounter, 0, 0, 0);\n            }\n\n            // On all versions but the JP version, each coin collected plays a higher noise.\n#ifndef VERSION_JP\n            play_sound(SOUND_MENU_COLLECT_RED_COIN\n                       + (((u8) o->parentObj->oHiddenStarTriggerCounter - 1) << 16),\n                       gGlobalSoundSource);\n#endif\n        }\n\n        coin_collected();\n        // Despawn the coin.\n        o->oInteractStatus = 0;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/reds_star_marker.inc.c",
    "content": "// reds_star_marker.inc.c\n// Filename is abbreviated to prevent compiler seg fault\n\nvoid bhv_red_coin_star_marker_init(void) {\n    o->header.gfx.scale[2] = 0.75f;\n}\n"
  },
  {
    "path": "src/game/behaviors/rolling_log.inc.c",
    "content": "// rolling_log.inc.c\n\n// why are the falling platforms and rolling logs grouped\n// together? seems strange, but it also cooresponds to the\n// behavior script grouping if the same file is assumed.\n// hypothesis is that the object in the middle here used to be\n// a rolling log of another variation.\n\nvoid bhv_ttm_rolling_log_init(void) {\n    o->oPitouneUnkF8 = 3970.0f;\n    o->oPitouneUnkFC = 3654.0f;\n    o->oPitouneUnkF4 = 271037.0f;\n\n    o->oMoveAngleYaw = 8810;\n    o->oForwardVel = 0.0f;\n    o->oVelX = 0.0f;\n    o->oVelZ = 0.0f;\n    o->oFaceAnglePitch = 0;\n    o->oAngleVelPitch = 0;\n}\n\nvoid rolling_log_roll_log(void) {\n    if (gMarioObject->platform == o) {\n        f32 sp24 = (gMarioObject->header.gfx.pos[2] - o->oPosZ) * coss(-1*o->oMoveAngleYaw)\n                   - (gMarioObject->header.gfx.pos[0] - o->oPosX) * sins(-1*o->oMoveAngleYaw);\n        if (sp24 > 0) {\n            o->oAngleVelPitch += 0x10;\n        } else {\n            o->oAngleVelPitch -= 0x10;\n        }\n\n        if (o->oAngleVelPitch > 0x200) {\n            o->oAngleVelPitch = 0x200;\n        }\n\n        if (o->oAngleVelPitch < -0x200) {\n            o->oAngleVelPitch = -0x200;\n        }\n    } else {\n        if (is_point_close_to_object(o, o->oHomeX, o->oHomeY, o->oHomeZ, 100)) {\n            if (o->oAngleVelPitch != 0) {\n                if (o->oAngleVelPitch > 0) {\n                    o->oAngleVelPitch -= 0x10;\n                } else {\n                    o->oAngleVelPitch += 0x10;\n                }\n\n                if (o->oAngleVelPitch < 0x10 && o->oAngleVelPitch > -0x10) {\n                    o->oAngleVelPitch = 0;\n                }\n            }\n        } else {\n            if (o->oAngleVelPitch != 0x100) {\n                if (o->oAngleVelPitch > 0x100) {\n                    o->oAngleVelPitch -= 0x10;\n                } else {\n                    o->oAngleVelPitch += 0x10;\n                }\n\n                if (o->oAngleVelPitch < 0x110 && o->oAngleVelPitch > 0xF0) {\n                    o->oAngleVelPitch = 0x100;\n                }\n            }\n        }\n    }\n}\n\nvoid bhv_rolling_log_loop(void) {\n    f32 prevX = o->oPosX;\n    f32 prevZ = o->oPosZ;\n\n    rolling_log_roll_log();\n\n    o->oForwardVel = o->oAngleVelPitch / 0x40;\n    o->oVelX = o->oForwardVel * sins(o->oMoveAngleYaw);\n    o->oVelZ = o->oForwardVel * coss(o->oMoveAngleYaw);\n\n    o->oPosX += o->oVelX;\n    o->oPosZ += o->oVelZ;\n\n    if (o->oPitouneUnkF4 < sqr(o->oPosX - o->oPitouneUnkF8) + sqr(o->oPosZ - o->oPitouneUnkFC)) {\n        o->oForwardVel = 0.0f;\n        o->oPosX = prevX;\n        o->oPosZ = prevZ;\n        o->oVelX = 0.0f;\n        o->oVelZ = 0.0f;\n    }\n\n    o->oFaceAnglePitch += o->oAngleVelPitch;\n    if (absf_2(o->oFaceAnglePitch & 0x1FFF) < 528.0f && o->oAngleVelPitch != 0) {\n        cur_obj_play_sound_2(SOUND_GENERAL_UNKNOWN1_2);\n    }\n}\n\nvoid volcano_act_1(void) {\n    o->oRollingLogUnkF4 += 4.0f;\n    o->oAngleVelPitch += o->oRollingLogUnkF4;\n    o->oFaceAnglePitch -= o->oAngleVelPitch;\n\n    if (o->oFaceAnglePitch < -0x4000) {\n        o->oFaceAnglePitch = -0x4000;\n        o->oAngleVelPitch = 0;\n        o->oRollingLogUnkF4 = 0;\n        o->oAction = 2;\n        cur_obj_play_sound_2(SOUND_GENERAL_BIG_POUND);\n        set_camera_shake_from_point(SHAKE_POS_LARGE, o->oPosX, o->oPosY, o->oPosZ);\n    }\n}\n\nvoid volcano_act_3(void) {\n    o->oAngleVelPitch = 0x90;\n    o->oFaceAnglePitch += o->oAngleVelPitch;\n\n    if (o->oFaceAnglePitch > 0) {\n        o->oFaceAnglePitch = 0;\n    }\n\n    if (o->oTimer == 200) {\n        o->oAction = 0;\n    }\n}\n\nvoid bhv_volcano_trap_loop(void) {\n    switch (o->oAction) {\n        case 0:\n            if (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 1000)) {\n                o->oAction = 1;\n                cur_obj_play_sound_2(SOUND_GENERAL_QUIET_POUND2);\n            }\n            break;\n\n        case 1:\n            volcano_act_1();\n            break;\n\n        case 2:\n            if (o->oTimer < 8) {\n                o->oPosY = o->oHomeY + sins(o->oTimer * 0x1000) * 10.0f;\n            }\n            if (o->oTimer == 50) {\n                cur_obj_play_sound_2(SOUND_GENERAL_UNK45);\n                o->oAction = 3;\n            }\n            break;\n\n        case 3:\n            volcano_act_3();\n            break;\n    }\n}\n\nvoid bhv_lll_rolling_log_init(void) {\n    o->oPitouneUnkF8 = 5120.0f;\n    o->oPitouneUnkFC = 6016.0f;\n    o->oPitouneUnkF4 = 1048576.0f;\n\n    o->oMoveAngleYaw = 0x3FFF;\n    o->oForwardVel = 0.0f;\n    o->oVelX = 0.0f;\n    o->oVelZ = 0.0f;\n    o->oFaceAnglePitch = 0;\n    o->oAngleVelPitch = 0;\n}\n"
  },
  {
    "path": "src/game/behaviors/rotating_octagonal_plat.inc.c",
    "content": "// rotating_octagonal_plat.inc.c\n\nstatic const Collision *sOctagonalPlatformCollision[] = {\n    bits_seg7_collision_0701AA84,\n    rr_seg7_collision_07029508,\n};\n\nstatic s16 sOctagonalPlatformAngularVelocities[] = { 300, -300, 600, -600 };\n\nvoid bhv_rotating_octagonal_plat_init(void) {\n    o->collisionData = segmented_to_virtual(sOctagonalPlatformCollision[(o->oBhvParams >> 16) & 0xFF]);\n    o->oAngleVelYaw = sOctagonalPlatformAngularVelocities[(o->oBhvParams >> 24) & 0xFF];\n}\n\nvoid bhv_rotating_octagonal_plat_loop(void) {\n    o->oFaceAngleYaw += o->oAngleVelYaw;\n}\n"
  },
  {
    "path": "src/game/behaviors/rotating_platform.inc.c",
    "content": "// rotating_platform.inc.c\n\n#include \"levels/wf/header.h\"\n#include \"levels/wdw/header.h\"\n\nstruct RotatingPlatformData {\n    s16 unused;\n    s16 scale;\n    const Collision *collisionData;\n    s16 collisionDistance;\n};\n\nstruct RotatingPlatformData sRotatingPlatformData[] = {\n    /* ROTATING_PLATFORM_BP_WF  */ { 0, 100, wf_seg7_collision_rotating_platform, 2000 },\n    /* ROTATING_PLATFORM_BP_WDW */ { 0, 150, wdw_seg7_collision_070186B4,         1000 },\n};\n\nvoid bhv_wf_rotating_wooden_platform_loop(void) {\n    if (o->oAction == WF_ROTATING_WOODEN_PLATFORM_ACT_IDLE) {\n        o->oAngleVelYaw = 0;\n        if (o->oTimer > 60) {\n            o->oAction++;\n        }\n    } else { // WF_ROTATING_WOODEN_PLATFORM_ACT_ROTATING\n        o->oAngleVelYaw = 0x100;\n        if (o->oTimer > 126) {\n            o->oAction = WF_ROTATING_WOODEN_PLATFORM_ACT_IDLE;\n        }\n        cur_obj_play_sound_1(SOUND_ENV_ELEVATOR2);\n    }\n    cur_obj_rotate_face_angle_using_vel();\n}\n\nvoid bhv_rotating_platform_loop(void) {\n    s8 bhvParams1stByte = o->oBhvParams >> 24;\n    if (o->oTimer == 0) {\n        obj_set_collision_data(o, sRotatingPlatformData[o->oBhvParams2ndByte].collisionData);\n        o->oCollisionDistance = sRotatingPlatformData[o->oBhvParams2ndByte].collisionDistance;\n        cur_obj_scale(sRotatingPlatformData[o->oBhvParams2ndByte].scale * 0.01f);\n    }\n    o->oAngleVelYaw = bhvParams1stByte << 4;\n    o->oFaceAngleYaw += o->oAngleVelYaw;\n}\n"
  },
  {
    "path": "src/game/behaviors/scuttlebug.inc.c",
    "content": "// scuttlebug.inc.c\n\nstruct ObjectHitbox sScuttlebugHitbox = {\n    /* interactType:      */ INTERACT_BOUNCE_TOP,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 1,\n    /* health:            */ 1,\n    /* numLootCoins:      */ 3,\n    /* radius:            */ 130,\n    /* height:            */ 70,\n    /* hurtboxRadius:     */ 90,\n    /* hurtboxHeight:     */ 60,\n};\n\ns32 update_angle_from_move_flags(s32 *angle) {\n    if (o->oMoveFlags & OBJ_MOVE_HIT_WALL) {\n        *angle = o->oWallAngle;\n        return 1;\n    } else if (o->oMoveFlags & OBJ_MOVE_HIT_EDGE) {\n        *angle = o->oMoveAngleYaw + 0x8000;\n        return -1;\n    }\n    return 0;\n}\n\nvoid bhv_scuttlebug_loop(void) {\n    UNUSED u8 filler[4];\n    f32 sp18;\n\n    cur_obj_update_floor_and_walls();\n\n    if (o->oSubAction != 0\n        && cur_obj_set_hitbox_and_die_if_attacked(&sScuttlebugHitbox, SOUND_OBJ_DYING_ENEMY1,\n                                                  o->oScuttlebugUnkF4)) {\n        o->oSubAction = 3;\n    }\n\n    if (o->oSubAction != 1) {\n        o->oScuttlebugUnkF8 = 0;\n    }\n\n    switch (o->oSubAction) {\n        case 0:\n            if (o->oMoveFlags & OBJ_MOVE_LANDED) {\n                cur_obj_play_sound_2(SOUND_OBJ_GOOMBA_ALERT);\n            }\n            if (o->oMoveFlags & OBJ_MOVE_MASK_ON_GROUND) {\n                o->oHomeX = o->oPosX;\n                o->oHomeY = o->oPosY;\n                o->oHomeZ = o->oPosZ;\n                o->oSubAction++;\n            }\n            break;\n\n        case 1:\n            o->oForwardVel = 5.0f;\n            if (cur_obj_lateral_dist_from_mario_to_home() > 1000.0f) {\n                o->oAngleToMario = cur_obj_angle_to_home();\n            } else {\n                if (o->oScuttlebugUnkF8 == 0) {\n                    o->oScuttlebugUnkFC = 0;\n                    o->oAngleToMario = obj_angle_to_object(o, gMarioObject);\n                    if (abs_angle_diff(o->oAngleToMario, o->oMoveAngleYaw) < 0x800) {\n                        o->oScuttlebugUnkF8 = 1;\n                        o->oVelY = 20.0f;\n                        cur_obj_play_sound_2(SOUND_OBJ2_SCUTTLEBUG_ALERT);\n                    }\n                } else if (o->oScuttlebugUnkF8 == 1) {\n                    o->oForwardVel = 15.0f;\n                    o->oScuttlebugUnkFC++;\n                    if (o->oScuttlebugUnkFC > 50) {\n                        o->oScuttlebugUnkF8 = 0;\n                    }\n                }\n            }\n            if (update_angle_from_move_flags(&o->oAngleToMario)) {\n                o->oSubAction = 2;\n            }\n            cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x200);\n            break;\n\n        case 2:\n            o->oForwardVel = 5.0f;\n            if ((s16) o->oMoveAngleYaw == (s16) o->oAngleToMario) {\n                o->oSubAction = 1;\n            }\n            if (o->oPosY - o->oHomeY < -200.0f) {\n                obj_mark_for_deletion(o);\n            }\n            cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x400);\n            break;\n\n        case 3:\n            o->oFlags &= ~OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW;\n            o->oForwardVel = -10.0f;\n            o->oVelY = 30.0f;\n            cur_obj_play_sound_2(SOUND_OBJ2_SCUTTLEBUG_ALERT);\n            o->oSubAction++;\n            break;\n\n        case 4:\n            o->oForwardVel = -10.0f;\n            if (o->oMoveFlags & OBJ_MOVE_LANDED) {\n                o->oSubAction++;\n                o->oVelY = 0.0f;\n                o->oScuttlebugUnkFC = 0;\n                o->oFlags |= OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW;\n                o->oInteractStatus = 0;\n            }\n            break;\n\n        case 5:\n            o->oForwardVel = 2.0f;\n            o->oScuttlebugUnkFC++;\n            if (o->oScuttlebugUnkFC > 30) {\n                o->oSubAction = 0;\n            }\n            break;\n    }\n\n    if (o->oForwardVel < 10.0f) {\n        sp18 = 1.0f;\n    } else {\n        sp18 = 3.0f;\n    }\n\n    cur_obj_init_animation_with_accel_and_sound(0, sp18);\n\n    if (o->oMoveFlags & OBJ_MOVE_MASK_ON_GROUND) {\n        set_obj_anim_with_accel_and_sound(1, 23, SOUND_OBJ2_SCUTTLEBUG_WALK);\n    }\n\n    if (o->parentObj != o) {\n        if (obj_is_hidden(o)) {\n            obj_mark_for_deletion(o);\n        }\n        if (o->activeFlags == ACTIVE_FLAG_DEACTIVATED) {\n            o->parentObj->oScuttlebugSpawnerUnk88 = 1;\n        }\n    }\n\n    cur_obj_move_standard(-50);\n}\n\nvoid bhv_scuttlebug_spawn_loop(void) {\n    if (o->oAction == 0) {\n        if (o->oTimer > 30 && 500.0f < o->oDistanceToMario && o->oDistanceToMario < 1500.0f) {\n            struct Object *scuttlebug;\n            cur_obj_play_sound_2(SOUND_OBJ2_SCUTTLEBUG_ALERT);\n            scuttlebug = spawn_object(o, MODEL_SCUTTLEBUG, bhvScuttlebug);\n            scuttlebug->oScuttlebugUnkF4 = o->oScuttlebugSpawnerUnkF4;\n            scuttlebug->oForwardVel = 30.0f;\n            scuttlebug->oVelY = 80.0f;\n            o->oAction++;\n            o->oScuttlebugUnkF4 = 1;\n        }\n    } else if (o->oScuttlebugSpawnerUnk88 != 0) {\n        o->oScuttlebugSpawnerUnk88 = 0;\n        o->oAction = 0;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/seaweed.inc.c",
    "content": "// seaweed.inc.c\n\nvoid bhv_seaweed_init(void) {\n    o->header.gfx.animInfo.animFrame = random_float() * 80.0f;\n}\n\nvoid bhv_seaweed_bundle_init(void) {\n    struct Object *seaweed;\n\n    seaweed = spawn_object(o, MODEL_SEAWEED, bhvSeaweed);\n    seaweed->oFaceAngleYaw = 14523;\n    seaweed->oFaceAnglePitch = 5500;\n    seaweed->oFaceAngleRoll = 9600;\n    seaweed->header.gfx.scale[0] = 1.0;\n    seaweed->header.gfx.scale[1] = 1.0;\n    seaweed->header.gfx.scale[2] = 1.0;\n    //! gfx.animFrame uninitialized\n\n    seaweed = spawn_object(o, MODEL_SEAWEED, bhvSeaweed);\n    seaweed->oFaceAngleYaw = 41800;\n    seaweed->oFaceAnglePitch = 6102;\n    seaweed->oFaceAngleRoll = 0;\n    seaweed->header.gfx.scale[0] = 0.8;\n    seaweed->header.gfx.scale[1] = 0.9;\n    seaweed->header.gfx.scale[2] = 0.8;\n    seaweed->header.gfx.animInfo.animFrame = random_float() * 80.0f;\n\n    seaweed = spawn_object(o, MODEL_SEAWEED, bhvSeaweed);\n    seaweed->oFaceAngleYaw = 40500;\n    seaweed->oFaceAnglePitch = 8700;\n    seaweed->oFaceAngleRoll = 4100;\n    seaweed->header.gfx.scale[0] = 0.8;\n    seaweed->header.gfx.scale[1] = 0.8;\n    seaweed->header.gfx.scale[2] = 0.8;\n    seaweed->header.gfx.animInfo.animFrame = random_float() * 80.0f;\n\n    seaweed = spawn_object(o, MODEL_SEAWEED, bhvSeaweed);\n    seaweed->oFaceAngleYaw = 57236;\n    seaweed->oFaceAnglePitch = 9500;\n    seaweed->oFaceAngleRoll = 0;\n    seaweed->header.gfx.scale[0] = 1.2;\n    seaweed->header.gfx.scale[1] = 1.2;\n    seaweed->header.gfx.scale[2] = 1.2;\n    seaweed->header.gfx.animInfo.animFrame = random_float() * 80.0f;\n}\n"
  },
  {
    "path": "src/game/behaviors/seesaw_platform.inc.c",
    "content": "\n/**\n * Behavior for bhvSeesawPlatform.\n */\n\n/**\n * Collision models for the different seesaw platforms.\n */\nstatic Collision const *sSeesawPlatformCollisionModels[] = {\n    bitdw_seg7_collision_0700F70C,\n    bits_seg7_collision_0701ADD8,\n    bits_seg7_collision_0701AE5C,\n    bob_seg7_collision_bridge,\n    bitfs_seg7_collision_07015928,\n    rr_seg7_collision_07029750,\n    rr_seg7_collision_07029858,\n    vcutm_seg7_collision_0700AC44,\n};\n\n/**\n * Init function for bhvSeesawPlatform.\n */\nvoid bhv_seesaw_platform_init(void) {\n    o->collisionData = segmented_to_virtual(sSeesawPlatformCollisionModels[o->oBhvParams2ndByte]);\n\n    // The S-shaped seesaw platform in BitS is large, so increase its collision\n    // distance\n    if (o->oBhvParams2ndByte == 2) {\n        o->oCollisionDistance = 2000.0f;\n    }\n}\n\n/**\n * Update function for bhvSeesawPlatform.\n */\nvoid bhv_seesaw_platform_update(void) {\n    UNUSED s32 startPitch = o->oFaceAnglePitch;\n    o->oFaceAnglePitch += (s32) o->oSeesawPlatformPitchVel;\n\n    if (absf(o->oSeesawPlatformPitchVel) > 10.0f) {\n        cur_obj_play_sound_1(SOUND_ENV_BOAT_ROCKING1);\n    }\n\n    if (gMarioObject->platform == o) {\n        // Rotate toward mario\n        f32 rotation = o->oDistanceToMario * coss(o->oAngleToMario - o->oMoveAngleYaw);\n        UNUSED u8 filler[4];\n\n        // Deceleration is faster than acceleration\n        if (o->oSeesawPlatformPitchVel * rotation < 0) {\n            rotation *= 0.04f;\n        } else {\n            rotation *= 0.02f;\n        }\n\n        o->oSeesawPlatformPitchVel += rotation;\n        clamp_f32(&o->oSeesawPlatformPitchVel, -50.0f, 50.0f);\n    } else {\n        // Rotate back to 0\n        oscillate_toward(\n            /* value          */ &o->oFaceAnglePitch,\n            /* vel            */ &o->oSeesawPlatformPitchVel,\n            /* target         */ 0.0f,\n            /* velCloseToZero */ 6.0f,\n            /* accel          */ 3.0f,\n            /* slowdown       */ 3.0f);\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/shock_wave.inc.c",
    "content": "// shock_wave.inc.c\n\n/**\n * Shockwave scale distance hit points\n */\nf32 sBowserShockwaveHitPoints[] = { 1.9f, 2.4f, 4.0f, 4.8f };\n\n/**\n * Bowser's shockwave attack main loop\n */\nvoid bhv_bowser_shock_wave_loop(void) {\n    f32 distMin1, distMax1, distMin2, distMax2;\n    s16 fadeFrames = 70;\n\n    // Scale shockwave as the timer goes on\n    o->oBowserShockWaveScale = o->oTimer * 10;\n    cur_obj_scale(o->oBowserShockWaveScale);\n\n    // Slightly reduce opacity each 3 frames\n    if (gGlobalTimer % 3 != 0) {\n        o->oOpacity--;\n    }\n    // Reduce opacity faster after 70 frames have passed\n    if (o->oTimer > fadeFrames) {\n        o->oOpacity -= 5;\n    }\n    // Delete object when it's fully transparent\n    if (o->oOpacity <= 0) {\n        obj_mark_for_deletion(o);\n    }\n    // If object times is less than 70 frame and Mario is not in the air...\n    if (o->oTimer < fadeFrames && !mario_is_in_air_action()) {\n        // ..define distance values depending of the scale multiplied by hit points\n        distMin1 = o->oBowserShockWaveScale * sBowserShockwaveHitPoints[0];\n        distMax1 = o->oBowserShockWaveScale * sBowserShockwaveHitPoints[1];\n        distMin2 = o->oBowserShockWaveScale * sBowserShockwaveHitPoints[2];\n        distMax2 = o->oBowserShockWaveScale * sBowserShockwaveHitPoints[3];\n        // If Mario is in between distMin and distMax values, shock him\n        if ((distMin1 < o->oDistanceToMario && o->oDistanceToMario < distMax1)\n            || (distMin2 < o->oDistanceToMario && o->oDistanceToMario < distMax2)) {\n            gMarioObject->oInteractStatus |= INT_STATUS_MARIO_SHOCKWAVE;\n        }\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/skeeter.inc.c",
    "content": "// skeeter.inc.c\n\nstruct Struct80331C38 {\n    s16 unk00;\n    s16 unk02;\n};\n\nstruct ObjectHitbox sSkeeterHitbox = {\n    /* interactType:      */ INTERACT_BOUNCE_TOP,\n    /* downOffset:        */ 20,\n    /* damageOrCoinValue: */ 2,\n    /* health:            */ 0,\n    /* numLootCoins:      */ 3,\n    /* radius:            */ 180,\n    /* height:            */ 100,\n    /* hurtboxRadius:     */ 150,\n    /* hurtboxHeight:     */ 90,\n};\n\nstruct Struct80331C38 D_80331C38[] = {\n    { 0xFF7E, 0xFF42 },\n    { 0x0082, 0xFF42 },\n    { 0xFF4C, 0x0082 },\n    { 0x00B4, 0x0082 },\n};\n\nstatic void skeeter_spawn_waves(void) {\n    s32 i;\n\n    for (i = 0; i < 4; i++) {\n        spawn_object_relative_with_scale(0, D_80331C38[i].unk00, 0, D_80331C38[i].unk02, 0.8f, o,\n                                         MODEL_IDLE_WATER_WAVE, bhvSkeeterWave);\n    }\n}\n\nstatic void skeeter_act_idle(void) {\n    if (o->oMoveFlags & OBJ_MOVE_MASK_ON_GROUND) {\n        cur_obj_init_animation_with_sound(3);\n        o->oForwardVel = 0.0f;\n\n        if (o->oTimer > o->oSkeeterWaitTime && cur_obj_check_if_near_animation_end()) {\n            o->oAction = SKEETER_ACT_WALK;\n        }\n    } else {\n        cur_obj_init_animation_with_sound(1);\n\n        if (o->oMoveFlags & OBJ_MOVE_AT_WATER_SURFACE) {\n            skeeter_spawn_waves();\n            if (o->oTimer > 60\n                && obj_smooth_turn(&o->oSkeeterUnk1AC, &o->oMoveAngleYaw, o->oSkeeterTargetAngle,\n                                   0.02f, 5, 50, 200)) {\n                if (o->oSkeeterWaitTime != 0) {\n                    o->oSkeeterWaitTime--;\n                } else if (cur_obj_check_if_near_animation_end()) {\n                    cur_obj_play_sound_2(SOUND_OBJ_WALKING_WATER);\n                    o->oAction = SKEETER_ACT_LUNGE;\n                    o->oForwardVel = 80.0f;\n                    o->oSkeeterUnk1AC = 0;\n                }\n            }\n        }\n    }\n}\n\nstatic void skeeter_act_lunge(void) {\n    if (!(o->oMoveFlags & OBJ_MOVE_AT_WATER_SURFACE)) {\n        o->oAction = SKEETER_ACT_IDLE;\n    } else {\n        skeeter_spawn_waves();\n        cur_obj_init_animation_with_sound(0);\n\n        if (o->oMoveFlags & OBJ_MOVE_HIT_WALL) {\n            o->oMoveAngleYaw = cur_obj_reflect_move_angle_off_wall();\n            o->oForwardVel *= 0.3f;\n            o->oFlags &= ~OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW;\n        }\n\n        if (obj_forward_vel_approach(0.0f, 0.8f) && cur_obj_check_if_at_animation_end()) {\n            o->oMoveAngleYaw = o->oFaceAngleYaw;\n\n            if (o->oDistanceToMario >= 25000.0f) {\n                o->oSkeeterTargetAngle = o->oAngleToMario;\n            } else {\n                o->oSkeeterTargetAngle = obj_random_fixed_turn(random_u16() % 0x2000);\n            }\n\n            o->oAction = SKEETER_ACT_IDLE;\n            o->oSkeeterWaitTime = random_linear_offset(0, 30);\n            o->oFlags |= OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW;\n        }\n    }\n}\n\nstatic void skeeter_act_walk(void) {\n    f32 sp24;\n\n    if (!(o->oMoveFlags & OBJ_MOVE_MASK_ON_GROUND)) {\n        o->oAction = SKEETER_ACT_IDLE;\n    } else {\n        obj_forward_vel_approach(o->oSkeeterUnkFC, 0.4f);\n        sp24 = 0.12f * o->oForwardVel;\n\n        cur_obj_init_animation_with_accel_and_sound(2, sp24);\n        cur_obj_play_sound_at_anim_range(3, 13, SOUND_OBJ_SKEETER_WALK);\n\n        if (o->oSkeeterTurningAwayFromWall) {\n            o->oSkeeterTurningAwayFromWall = obj_resolve_collisions_and_turn(o->oSkeeterTargetAngle, 0x400);\n        } else {\n            if (o->oDistanceToMario >= 25000.0f) {\n                o->oSkeeterTargetAngle = o->oAngleToMario;\n                o->oSkeeterWaitTime = random_linear_offset(20, 30);\n            }\n\n            if (!(o->oSkeeterTurningAwayFromWall = obj_bounce_off_walls_edges_objects(&o->oSkeeterTargetAngle))) {\n                if (o->oDistanceToMario < 500.0f) {\n                    o->oSkeeterTargetAngle = o->oAngleToMario;\n                    o->oSkeeterUnkFC = 20.0f;\n                } else {\n                    o->oSkeeterUnkFC = 10.0f;\n                    if (o->oSkeeterWaitTime != 0) {\n                        o->oSkeeterWaitTime--;\n                    } else if (cur_obj_check_if_near_animation_end()) {\n                        if (random_u16() & 0x0003) {\n                            o->oSkeeterTargetAngle = obj_random_fixed_turn(0x2000);\n                            o->oSkeeterWaitTime = random_linear_offset(100, 100);\n                        } else {\n                            o->oAction = SKEETER_ACT_IDLE;\n                            o->oSkeeterWaitTime = random_linear_offset(100, 100);\n                        }\n                    }\n                }\n            }\n        }\n\n        cur_obj_rotate_yaw_toward(o->oSkeeterTargetAngle, 0x400);\n    }\n}\n\nvoid bhv_skeeter_update(void) {\n    o->oDeathSound = SOUND_OBJ_SNUFIT_SKEETER_DEATH;\n    treat_far_home_as_mario(1000.0f);\n\n    cur_obj_update_floor_and_walls();\n\n    switch (o->oAction) {\n        case SKEETER_ACT_IDLE:\n            skeeter_act_idle();\n            break;\n        case SKEETER_ACT_LUNGE:\n            skeeter_act_lunge();\n            break;\n        case SKEETER_ACT_WALK:\n            skeeter_act_walk();\n            break;\n    }\n\n    obj_check_attacks(&sSkeeterHitbox, o->oAction);\n    cur_obj_move_standard(-78);\n}\n\nvoid bhv_skeeter_wave_update(void) {\n    if (approach_f32_ptr(&o->header.gfx.scale[0], 0.0f, 0.3f)) {\n        obj_mark_for_deletion(o);\n    }\n\n    cur_obj_scale(o->header.gfx.scale[0]);\n    o->oAnimState = gGlobalTimer / 6;\n}\n"
  },
  {
    "path": "src/game/behaviors/sl_snowman_wind.inc.c",
    "content": "// sl_snowman_wind.inc.c\n\nvoid bhv_sl_snowman_wind_loop(void) {\n    UNUSED s32 unused = 0;\n    s16 marioAngleFromWindSource;\n    Vec3f tempPos;\n\n    if (o->oTimer == 0) {\n        o->oSLSnowmanWindOriginalYaw = o->oMoveAngleYaw;\n    }\n\n    // Waiting for Mario to approach.\n    if (o->oSubAction == SL_SNOWMAN_WIND_ACT_IDLE) {\n        o->oDistanceToMario = 0;\n\n        // Check if Mario is within 1000 units of the center of the bridge, and ready to speak.\n        vec3f_copy_2(tempPos, &o->oPosX);\n        obj_set_pos(o, 1100, 3328, 1164); // Position is in the middle of the ice bridge\n        if (cur_obj_can_mario_activate_textbox(1000.0f, 30.0f, 0x7FFF)) {\n            o->oSubAction++;\n        }\n        vec3f_copy_2(&o->oPosX, tempPos);\n\n    // Mario has come close, begin dialog.\n    } else if (o->oSubAction == SL_SNOWMAN_WIND_ACT_TALKING) {\n        if (cur_obj_update_dialog(MARIO_DIALOG_LOOK_UP, DIALOG_FLAG_TEXT_DEFAULT, DIALOG_153, 0)) {\n            o->oSubAction++;\n        }\n\n    // Blowing, spawn wind particles (SL_SNOWMAN_WIND_ACT_BLOWING)\n    } else if (o->oDistanceToMario < 1500.0f && absf(gMarioObject->oPosY - o->oHomeY) < 500.0f) {\n        // Point towards Mario, but only within 0x1500 angle units of the original angle.\n        if ((marioAngleFromWindSource = o->oAngleToMario - o->oSLSnowmanWindOriginalYaw) > 0) {\n            if (marioAngleFromWindSource < 0x1500) {\n                o->oMoveAngleYaw = o->oAngleToMario;\n            } else {\n                o->oMoveAngleYaw = o->oSLSnowmanWindOriginalYaw + 0x1500;\n            }\n        } else {\n            if (marioAngleFromWindSource > -0x1500) {\n                o->oMoveAngleYaw = o->oAngleToMario;\n            } else {\n                o->oMoveAngleYaw = o->oSLSnowmanWindOriginalYaw - 0x1500;\n            }\n        }\n        // Spawn wind and play wind sound\n        cur_obj_spawn_strong_wind_particles(12, 3.0f, 0, 0, 0);\n        cur_obj_play_sound_1(SOUND_AIR_BLOW_WIND);\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/sl_walking_penguin.inc.c",
    "content": "// sl_walking_penguin.inc.c\n\nstruct SLWalkingPenguinStep {\n    s32 stepLength;\n    s32 anim;\n    f32 speed;\n    f32 animSpeed;\n};\n\n// The penguin follows a preset list of movements while walking forward.\nstruct SLWalkingPenguinStep sSLWalkingPenguinErraticSteps[] = {\n    { 60, PENGUIN_ANIM_WALK, 6.0f,  1.0f }, // Walk forwards for 2 seconds\n    { 30, PENGUIN_ANIM_IDLE, 0.0f,  1.0f }, // Stop for 1 second\n    { 30, PENGUIN_ANIM_WALK, 12.0f, 2.0f }, // Walk forwards quickly for 1 second\n    { 30, PENGUIN_ANIM_IDLE, 0.0f,  1.0f }, // Stop for 1 second\n    { 30, PENGUIN_ANIM_WALK, -6.0f, 1.0f }, // Walk backwards for 1 second\n    { 30, PENGUIN_ANIM_IDLE, 0.0f,  1.0f }, // Stop for 1 second\n    { -1, 0, 0.0f,  0.0f }, // Repeat\n};\n\nstatic s32 sl_walking_penguin_turn(void) {\n    // Stay still and use walking animation for the turn.\n    o->oForwardVel = 0.0f;\n    cur_obj_init_animation_with_accel_and_sound(PENGUIN_ANIM_WALK, 1.0f);\n\n    // Turn around.\n    o->oAngleVelYaw = 0x400;\n    o->oMoveAngleYaw += o->oAngleVelYaw;\n\n    if (o->oTimer == 31) {\n        return TRUE; // Finished turning\n    } else {\n        return FALSE;\n    }\n}\n\nvoid bhv_sl_walking_penguin_loop(void) {\n    f32 adjustedXPos, adjustedZPos;\n    f32 perpendicularOffset = 100.0f;\n\n    o->oAngleVelYaw = 0;\n    cur_obj_update_floor_and_walls();\n\n    switch (o->oAction) {\n        // Walk erratically across the ice bridge using preset steps.\n        case SL_WALKING_PENGUIN_ACT_MOVING_FORWARDS:\n            if (o->oTimer == 0) {\n                // Initiate variables\n                o->oSLWalkingPenguinCurStep = 0;\n                o->oSLWalkingPenguinCurStepTimer = 0;\n            }\n\n            if (o->oSLWalkingPenguinCurStepTimer <\n                sSLWalkingPenguinErraticSteps[o->oSLWalkingPenguinCurStep].stepLength) {\n                o->oSLWalkingPenguinCurStepTimer++;\n            } else {\n                // Move to next step\n                o->oSLWalkingPenguinCurStepTimer = 0;\n                o->oSLWalkingPenguinCurStep++;\n                if (sSLWalkingPenguinErraticSteps[o->oSLWalkingPenguinCurStep].stepLength < 0) {\n                    // Reached the end of the list, go back to the start\n                    o->oSLWalkingPenguinCurStep = 0;\n                }\n            }\n\n            if (o->oPosX < 300.0f) {\n                o->oAction++; // If reached the end of the bridge, turn around and head back.\n            } else {\n                // Move and animate the penguin\n                o->oForwardVel = sSLWalkingPenguinErraticSteps[o->oSLWalkingPenguinCurStep].speed;\n\n                cur_obj_init_animation_with_accel_and_sound(\n                    sSLWalkingPenguinErraticSteps[o->oSLWalkingPenguinCurStep].anim,\n                    sSLWalkingPenguinErraticSteps[o->oSLWalkingPenguinCurStep].animSpeed\n                );\n            }\n            break;\n\n        // At the end, turn around and prepare to head back across the bridge.\n        case SL_WALKING_PENGUIN_ACT_TURNING_BACK:\n            if (sl_walking_penguin_turn()) {\n                o->oAction++; // Finished turning\n            }\n            break;\n\n        // Walk back across the bridge at a constant speed.\n        case SL_WALKING_PENGUIN_ACT_RETURNING:\n            // Move and animate the penguin\n            o->oForwardVel = 12.0f;\n            cur_obj_init_animation_with_accel_and_sound(PENGUIN_ANIM_WALK, 2.0f);\n\n            if (o->oPosX > 1700.0f) {\n                o->oAction++; // If reached the start of the bridge, turn around.\n            }\n            break;\n\n        // At the start, turn around and prepare to walk erratically across the bridge.\n        case SL_WALKING_PENGUIN_ACT_TURNING_FORWARDS:\n            if (sl_walking_penguin_turn()) {\n                o->oAction = SL_WALKING_PENGUIN_ACT_MOVING_FORWARDS; // Finished turning\n            }\n            break;\n    }\n\n    cur_obj_move_standard(-78);\n    if (!cur_obj_hide_if_mario_far_away_y(1000.0f)) {\n        play_penguin_walking_sound(PENGUIN_WALK_BIG);\n    }\n\n    // Adjust the position to get a point better lined up with the visual model, for stopping the wind.\n    // The new point is 60 units behind the penguin and 100 units perpedicularly, away from the snowman.\n\n    adjustedXPos = o->oPosX + sins(0xDBB0) * 60.0f; // 0xDBB0 = -51 degrees, the angle the penguin is facing\n    adjustedZPos = o->oPosZ + coss(0xDBB0) * 60.0f;\n    adjustedXPos += perpendicularOffset * sins(0x1BB0); // 0x1BB0 = 39 degrees, perpendicular to the penguin\n    adjustedZPos += perpendicularOffset * coss(0x1BB0);\n    o->oSLWalkingPenguinWindCollisionXPos = adjustedXPos;\n    o->oSLWalkingPenguinWindCollisionZPos = adjustedZPos;\n\n    print_debug_bottom_up(\"x %d\", o->oPosX);\n    print_debug_bottom_up(\"z %d\", o->oPosZ);\n}\n"
  },
  {
    "path": "src/game/behaviors/sliding_platform.inc.c",
    "content": "// sliding_platform.inc.c\n\nvoid bhv_wf_sliding_platform_init(void) {\n    o->oFaceAngleYaw -= 0x4000;\n    o->oPosX += 2.0f;\n    o->oHomeX = o->oPosX;\n\n    switch (o->oBhvParams2ndByte) {\n        case WF_SLID_BRICK_PTFM_BP_MOV_VEL_10:\n            o->oWFSlidBrickPtfmMovVel = 10.0f;\n            break;\n\n        case WF_SLID_BRICK_PTFM_BP_MOV_VEL_15:\n            o->oWFSlidBrickPtfmMovVel = 15.0f;\n            break;\n\n        case WF_SLID_BRICK_PTFM_BP_MOV_VEL_20:\n            o->oWFSlidBrickPtfmMovVel = 20.0f;\n            break;\n    }\n\n    o->oTimer = random_float() * 100.0f;\n}\n\nvoid bhv_wf_sliding_platform_loop(void) {\n    switch (o->oAction) {\n        case WF_SLID_BRICK_PTFM_ACT_WAIT:\n            if (o->oTimer > 100) {\n                o->oAction = WF_SLID_BRICK_PTFM_ACT_EXTEND;\n                o->oForwardVel = o->oWFSlidBrickPtfmMovVel;\n            }\n            break;\n\n        case WF_SLID_BRICK_PTFM_ACT_EXTEND:\n            if (o->oTimer >= 500.0f / o->oWFSlidBrickPtfmMovVel) {\n                o->oForwardVel = 0.0f;\n                o->oPosX = o->oHomeX + 510.0f;\n            }\n\n            if (o->oTimer == 60) {\n                o->oAction = WF_SLID_BRICK_PTFM_ACT_RETRACT;\n                o->oForwardVel = o->oWFSlidBrickPtfmMovVel;\n                o->oMoveAngleYaw -= 0x8000;\n            }\n            break;\n\n        case WF_SLID_BRICK_PTFM_ACT_RETRACT:\n            if (o->oTimer >= 500.0f / o->oWFSlidBrickPtfmMovVel) {\n                o->oForwardVel = 0.0f;\n                o->oPosX = o->oHomeX;\n            }\n\n            if (o->oTimer == 90) {\n                o->oAction = WF_SLID_BRICK_PTFM_ACT_EXTEND;\n                o->oForwardVel = o->oWFSlidBrickPtfmMovVel;\n                o->oMoveAngleYaw -= 0x8000;\n            }\n            break;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/sliding_platform_2.inc.c",
    "content": "// sliding_platform_2.inc.c\n\nstatic Collision const *sSlidingPlatform2CollisionData[] = {\n    bits_seg7_collision_0701A9A0,\n    bits_seg7_collision_0701AA0C,\n    bitfs_seg7_collision_07015714,\n    bitfs_seg7_collision_07015768,\n    rr_seg7_collision_070295F8,\n    rr_seg7_collision_0702967C,\n    NULL,\n    bitdw_seg7_collision_0700F688,\n};\n\nvoid bhv_sliding_plat_2_init(void) {\n    s32 collisionDataIndex = ((u16)(o->oBhvParams >> 16) & 0x0380) >> 7;\n\n    o->collisionData = segmented_to_virtual(sSlidingPlatform2CollisionData[collisionDataIndex]);\n    o->oBackAndForthPlatformPathLength = 50.0f * ((u16)(o->oBhvParams >> 16) & 0x003F);\n\n    if (collisionDataIndex < 5 || collisionDataIndex > 6) {\n        o->oBackAndForthPlatformVel = 15.0f;\n        if ((u16)(o->oBhvParams >> 16) & 0x0040) {\n            o->oMoveAngleYaw += 0x8000;\n        }\n    } else {\n        o->oBackAndForthPlatformVel = 10.0f;\n        if ((u16)(o->oBhvParams >> 16) & 0x0040) {\n            o->oBackAndForthPlatformDirection = -1.0f;\n        } else {\n            o->oBackAndForthPlatformDirection = 1.0f;\n        }\n    }\n}\n\nvoid bhv_sliding_plat_2_loop(void) {\n    if (o->oTimer > 10) {\n        o->oBackAndForthPlatformDistance += o->oBackAndForthPlatformVel;\n        if (clamp_f32(&o->oBackAndForthPlatformDistance, -o->oBackAndForthPlatformPathLength, 0.0f)) {\n            o->oBackAndForthPlatformVel = -o->oBackAndForthPlatformVel;\n            o->oTimer = 0;\n        }\n    }\n\n    obj_perform_position_op(0);\n\n    if (o->oBackAndForthPlatformDirection != 0.0f) {\n        o->oPosY = o->oHomeY + o->oBackAndForthPlatformDistance * o->oBackAndForthPlatformDirection;\n    } else {\n        obj_set_dist_from_home(o->oBackAndForthPlatformDistance);\n    }\n\n    obj_perform_position_op(1);\n}\n"
  },
  {
    "path": "src/game/behaviors/snow_mound.inc.c",
    "content": "// snow_mound.inc.c\n\nvoid bhv_sliding_snow_mound_loop(void) {\n    switch (o->oAction) {\n        case 0:\n            o->oVelX = -40.0f;\n            o->oPosX += o->oVelX;\n            if (o->oTimer > 117) {\n                o->oAction = 1;\n            }\n            cur_obj_play_sound_1(SOUND_ENV_SINK_QUICKSAND);\n            break;\n\n        case 1:\n            o->oVelX = -5.0f;\n            o->oPosX += o->oVelX;\n            o->oVelY = -10.0f;\n            o->oPosY += o->oVelY;\n            o->oPosZ = o->oHomeZ - 2.0f;\n            if (o->oTimer > 50) {\n                o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n            }\n            break;\n    }\n}\n\nvoid bhv_snow_mound_spawn_loop(void) {\n    struct Object *snowMound;\n\n    if (!is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 6000)\n        || o->oPosY + 1000.0f < gMarioObject->header.gfx.pos[1]) {\n        return;\n    }\n\n    if (o->oTimer == 64 || o->oTimer == 128 || o->oTimer == 192 || o->oTimer == 224 || o->oTimer == 256) {\n        snowMound = spawn_object(o, MODEL_SL_SNOW_TRIANGLE, bhvSlidingSnowMound);\n    }\n\n    if (o->oTimer == 256) {\n        snowMound->header.gfx.scale[0] = 2.0f;\n        snowMound->header.gfx.scale[1] = 2.0f;\n    }\n\n    if (o->oTimer >= 256) {\n        o->oTimer = 0;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/snowman.inc.c",
    "content": "// snowman.inc.c\n\nstatic struct ObjectHitbox sRollingSphereHitbox = {\n    /* interactType:      */ INTERACT_DAMAGE,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 3,\n    /* health:            */ 0,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 210,\n    /* height:            */ 350,\n    /* hurtboxRadius:     */ 0,\n    /* hurtboxHeight:     */ 0,\n};\n\nvoid bhv_snowmans_bottom_init(void) {\n    struct Object *snowmansHead;\n\n    o->oHomeX = o->oPosX;\n    o->oHomeY = o->oPosY;\n    o->oHomeZ = o->oPosZ;\n\n    o->oGravity = 10.0f;\n    o->oFriction = 0.999f;\n    o->oBuoyancy = 2.0f;\n\n    o->oVelY = 0;\n    o->oForwardVel = 0;\n    o->oSnowmansBottomScale = 0.4f;\n\n    snowmansHead = cur_obj_nearest_object_with_behavior(bhvSnowmansHead);\n    if (snowmansHead != NULL) {\n        o->parentObj = snowmansHead;\n    }\n    spawn_object_abs_with_rot(o, 0, MODEL_NONE, bhvSnowmansBodyCheckpoint, -402, 461, -2898, 0, 0, 0);\n}\n\nvoid set_rolling_sphere_hitbox(void) {\n    obj_set_hitbox(o, &sRollingSphereHitbox);\n\n    if (o->oInteractStatus & INT_STATUS_INTERACTED) {\n        o->oInteractStatus = 0;\n    }\n}\n\nvoid adjust_rolling_face_pitch(f32 f12) {\n    o->oFaceAnglePitch += (s16)(o->oForwardVel * (100.0f / f12));\n    o->oSnowmansBottomScale += o->oForwardVel * 0.0001;\n\n    if (o->oSnowmansBottomScale > 1.0) {\n        o->oSnowmansBottomScale = 1.0f;\n    }\n}\n\nvoid snowmans_bottom_act_1(void) {\n    UNUSED s16 collisionFlags;\n    s32 followStatus;\n#ifdef AVOID_UB\n    followStatus = 0;\n#endif\n\n    o->oPathedStartWaypoint = segmented_to_virtual(&ccm_seg7_trajectory_snowman);\n    collisionFlags = object_step_without_floor_orient();\n    //! Uninitialized parameter, but the parameter is unused in the called function\n    followStatus = cur_obj_follow_path(followStatus);\n    o->oSnowmansBottomUnkF8 = o->oPathedTargetYaw;\n    o->oMoveAngleYaw = approach_s16_symmetric(o->oMoveAngleYaw, o->oSnowmansBottomUnkF8, 0x400);\n\n    if (o->oForwardVel > 70.0) {\n        o->oForwardVel = 70.0f;\n    }\n\n    if (followStatus == PATH_REACHED_END) {\n        UNUSED s16 sp1E = (u16) o->oAngleToMario - (u16) o->oMoveAngleYaw;\n        if (obj_check_if_facing_toward_angle(o->oMoveAngleYaw, o->oAngleToMario, 0x2000) == TRUE\n            && o->oSnowmansBottomUnk1AC == 1) {\n            o->oSnowmansBottomUnkF8 = o->oAngleToMario;\n        } else {\n            o->oSnowmansBottomUnkF8 = o->oMoveAngleYaw;\n        }\n        o->oAction = 2;\n    }\n}\n\nvoid snowmans_bottom_act_2(void) {\n    UNUSED s16 collisionFlags = object_step_without_floor_orient();\n\n    if (o->oForwardVel > 70.0) {\n        o->oForwardVel = 70.0f;\n    }\n\n    o->oMoveAngleYaw = approach_s16_symmetric(o->oMoveAngleYaw, o->oSnowmansBottomUnkF8, 0x400);\n    if (is_point_close_to_object(o, -4230.0f, -1344.0f, 1813.0f, 300)) {\n        spawn_mist_particles_variable(0, 0, 70.0f);\n        o->oMoveAngleYaw = atan2s(1813.0f - o->oPosZ, -4230.0f - o->oPosX);\n        o->oVelY = 80.0f;\n        o->oForwardVel = 15.0f;\n        o->oAction = 3;\n\n        o->parentObj->oAction = 2;\n        o->parentObj->oVelY = 100.0f;\n        cur_obj_play_sound_2(SOUND_OBJ_SNOWMAN_BOUNCE);\n    }\n\n    if (o->oTimer == 200) {\n        create_respawner(MODEL_CCM_SNOWMAN_BASE, bhvSnowmansBottom, 3000);\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n}\n\nvoid snowmans_bottom_act_3(void) {\n    s16 collisionFlags = object_step_without_floor_orient();\n\n    if ((collisionFlags & OBJ_COL_FLAGS_LANDED) == OBJ_COL_FLAGS_LANDED) {\n        o->oAction = 4;\n        cur_obj_become_intangible();\n    }\n\n    if (collisionFlags & OBJ_COL_FLAG_GROUNDED) {\n        spawn_mist_particles_variable(0, 0, 70.0f);\n        o->oPosX = -4230.0f;\n        o->oPosZ = 1813.0f;\n        o->oForwardVel = 0.0f;\n    }\n}\n\nvoid bhv_snowmans_bottom_loop(void) {\n    switch (o->oAction) {\n        case 0:\n            if (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 400) == 1\n                && set_mario_npc_dialog(MARIO_DIALOG_LOOK_FRONT) == MARIO_DIALOG_STATUS_SPEAK) {\n                s16 response = cutscene_object_with_dialog(CUTSCENE_DIALOG, o, DIALOG_110);\n                if (response != DIALOG_RESPONSE_NONE) {\n                    o->oForwardVel = 10.0f;\n                    o->oAction = 1;\n                    set_mario_npc_dialog(MARIO_DIALOG_STOP);\n                }\n            }\n            break;\n\n        case 1:\n            snowmans_bottom_act_1();\n            adjust_rolling_face_pitch(o->oSnowmansBottomScale);\n            cur_obj_play_sound_1(SOUND_ENV_UNKNOWN2);\n            break;\n\n        case 2:\n            snowmans_bottom_act_2();\n            adjust_rolling_face_pitch(o->oSnowmansBottomScale);\n            cur_obj_play_sound_1(SOUND_ENV_UNKNOWN2);\n            break;\n\n        case 3:\n            snowmans_bottom_act_3();\n            break;\n\n        case 4:\n            cur_obj_push_mario_away_from_cylinder(210.0f, 550);\n            break;\n    }\n\n    set_rolling_sphere_hitbox();\n    set_object_visibility(o, 8000);\n    cur_obj_scale(o->oSnowmansBottomScale);\n    o->oGraphYOffset = o->oSnowmansBottomScale * 180.0f;\n}\n\nvoid bhv_snowmans_head_init(void) {\n    u8 starFlags = save_file_get_star_flags(gCurrSaveFileNum - 1, COURSE_NUM_TO_INDEX(gCurrCourseNum));\n    s8 sp36 = (o->oBhvParams >> 24) & 0xFF;\n\n    cur_obj_scale(0.7f);\n\n    o->oGravity = 5.0f;\n    o->oFriction = 0.999f;\n    o->oBuoyancy = 2.0f;\n\n    if ((starFlags & (1 << sp36)) && gCurrActNum != sp36 + 1) {\n        spawn_object_abs_with_rot(o, 0, MODEL_CCM_SNOWMAN_BASE, bhvBigSnowmanWhole, -4230, -1344, 1813,\n                                  0, 0, 0);\n        o->oPosX = -4230.0f;\n        o->oPosY = -994.0f;\n        o->oPosZ = 1813.0f;\n        o->oAction = 1;\n    }\n}\n\nvoid bhv_snowmans_head_loop(void) {\n    UNUSED s16 unused;\n    s16 collisionFlags;\n\n    switch (o->oAction) {\n        case 0:\n            if (trigger_obj_dialog_when_facing(&o->oSnowmansHeadDialogActive, DIALOG_109, 400.0f, MARIO_DIALOG_LOOK_FRONT)) {\n                o->oAction = 1;\n            }\n            break;\n\n        case 1:\n            break;\n\n        case 2:\n            collisionFlags = object_step_without_floor_orient();\n            if (collisionFlags & OBJ_COL_FLAG_NO_Y_VEL) {\n                o->oAction = 3;\n            }\n            break;\n\n        case 3:\n            object_step_without_floor_orient();\n            if (o->oPosY < -994.0f) {\n                o->oPosY = -994.0f;\n                o->oAction = 4;\n                cur_obj_play_sound_2(SOUND_OBJ_SNOWMAN_EXPLODE);\n                play_puzzle_jingle();\n            }\n            break;\n\n        case 4:\n            if (trigger_obj_dialog_when_facing(&o->oSnowmansHeadDialogActive, DIALOG_111, 700.0f, MARIO_DIALOG_LOOK_UP)) {\n                spawn_mist_particles();\n                spawn_default_star(-4700.0f, -1024.0f, 1890.0f);\n                o->oAction = 1;\n            }\n            break;\n    }\n\n    cur_obj_push_mario_away_from_cylinder(180.0f, 150.0f);\n}\n\nvoid bhv_snowmans_body_checkpoint_loop(void) {\n    if (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 800)) {\n        o->parentObj->oSnowmansBottomUnk1AC++;\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n\n    if (o->parentObj->activeFlags == ACTIVE_FLAG_DEACTIVATED) {\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/snufit.inc.c",
    "content": "\n/**\n * Behavior file for bhvSnufit and bhvSnufitBalls.\n * Snufits are present in HMC and CotMC, and are the fly guy\n * like enemies that shoot bullets. The balls are the little pellets\n * the snufit shoots at Mario.\n */\n\nstruct ObjectHitbox sSnufitHitbox = {\n    /* interactType:      */ INTERACT_HIT_FROM_BELOW,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 2,\n    /* health:            */ 0,\n    /* numLootCoins:      */ 2,\n    /* radius:            */ 100,\n    /* height:            */ 60,\n    /* hurtboxRadius:     */ 70,\n    /* hurtboxHeight:     */ 50,\n};\n\nstruct ObjectHitbox sSnufitBulletHitbox = {\n    /* interactType:      */ INTERACT_SNUFIT_BULLET,\n    /* downOffset:        */ 50,\n    /* damageOrCoinValue: */ 1,\n    /* health:            */ 0,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 100,\n    /* height:            */ 50,\n    /* hurtboxRadius:     */ 100,\n    /* hurtboxHeight:     */ 50,\n};\n\n/**\n * This geo function shifts snufit's mask when it shrinks down,\n * since the parts move independently.\n */\nGfx *geo_snufit_move_mask(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c) {\n    if (callContext == GEO_CONTEXT_RENDER) {\n        struct Object *obj = (struct Object *) gCurGraphNodeObject;\n        struct GraphNodeTranslationRotation *transNode\n            = (struct GraphNodeTranslationRotation *) node->next;\n\n        transNode->translation[0] = obj->oSnufitXOffset;\n        transNode->translation[1] = obj->oSnufitYOffset;\n        transNode->translation[2] = obj->oSnufitZOffset;\n    }\n\n    return NULL;\n}\n\n/**\n * This function scales the body of snufit, which needs done seperately from its mask.\n */\nGfx *geo_snufit_scale_body(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c) {\n    if (callContext == GEO_CONTEXT_RENDER) {\n        struct Object *obj = (struct Object *) gCurGraphNodeObject;\n        struct GraphNodeScale *scaleNode = (struct GraphNodeScale *) node->next;\n\n        scaleNode->scale = obj->oSnufitBodyScale / 1000.0f;\n    }\n\n    return NULL;\n}\n\n/**\n * Snufit's idle action. It rotates in a circle until Mario is near,\n * then prepares to shoot after a period.\n */\nvoid snufit_act_idle(void) {\n    // This line would could cause a crash in certain PU situations,\n    // if the game would not have already crashed.\n    s32 marioDist = (s32)(o->oDistanceToMario / 10.0f);\n\n    if (o->oTimer > marioDist && o->oDistanceToMario < 800.0f) {\n\n        // Controls an alternating scaling factor in a cos.\n        o->oSnufitBodyScalePeriod\n            = approach_s16_symmetric(o->oSnufitBodyScalePeriod, 0, 1500);\n        o->oSnufitBodyBaseScale\n            = approach_s16_symmetric(o->oSnufitBodyBaseScale, 600, 15);\n\n        if ((s16) o->oSnufitBodyScalePeriod == 0 && o->oSnufitBodyBaseScale == 600) {\n            o->oAction = SNUFIT_ACT_SHOOT;\n            o->oSnufitBullets = 0;\n        }\n    } else {\n        o->oSnufitCircularPeriod += 400;\n    }\n}\n\n/**\n * Controls the literal shooting action, spawning three bhvSnufitBalls.\n */\nvoid snufit_act_shoot(void) {\n    o->oSnufitBodyScalePeriod\n        = approach_s16_symmetric(o->oSnufitBodyScalePeriod, -0x8000, 3000);\n    o->oSnufitBodyBaseScale\n        = approach_s16_symmetric(o->oSnufitBodyBaseScale, 167, 20);\n\n    if ((u16) o->oSnufitBodyScalePeriod == 0x8000 && o->oSnufitBodyBaseScale == 167) {\n        o->oAction = SNUFIT_ACT_IDLE;\n    } else if (o->oSnufitBullets < 3 && o->oTimer >= 3) {\n        o->oSnufitBullets++;\n        cur_obj_play_sound_2(SOUND_OBJ_SNUFIT_SHOOT);\n        spawn_object_relative(0, 0, -20, 40, o, MODEL_BOWLING_BALL, bhvSnufitBalls);\n        o->oSnufitRecoil = -30;\n        o->oTimer = 0;\n    }\n}\n\n/**\n * Primary loop behavior for snufit. Controls some generic movement\n * and the action brain of the object.\n */\nvoid bhv_snufit_loop(void) {\n    // Only update if Mario is in the current room.\n    if (!(o->activeFlags & ACTIVE_FLAG_IN_DIFFERENT_ROOM)) {\n        o->oDeathSound = SOUND_OBJ_SNUFIT_SKEETER_DEATH;\n\n        // Face Mario if he is within range.\n        if (o->oDistanceToMario < 800.0f) {\n            obj_turn_pitch_toward_mario(120.0f, 2000);\n\n            if ((s16) o->oMoveAnglePitch > 0x2000) {\n                o->oMoveAnglePitch = 0x2000;\n            } else if ((s16) o->oMoveAnglePitch < -0x2000) {\n                o->oMoveAnglePitch = -0x2000;\n            }\n\n            cur_obj_rotate_yaw_toward(o->oAngleToMario, 2000);\n        } else {\n            obj_move_pitch_approach(0, 0x200);\n            o->oMoveAngleYaw += 200;\n        }\n\n        o->oFaceAnglePitch = o->oMoveAnglePitch;\n\n        switch (o->oAction) {\n            case SNUFIT_ACT_IDLE:\n                snufit_act_idle();\n                break;\n            case SNUFIT_ACT_SHOOT:\n                snufit_act_shoot();\n                break;\n        }\n\n        // Snufit orbits in a circular motion depending on an internal timer\n        // and vertically off the global timer. The vertical position can be\n        // manipulated using pauses since it uses the global timer.\n        o->oPosX = o->oHomeX + 100.0f * coss(o->oSnufitCircularPeriod);\n        o->oPosY = o->oHomeY + 8.0f * coss(4000 * gGlobalTimer);\n        o->oPosZ = o->oHomeZ + 100.0f * sins(o->oSnufitCircularPeriod);\n\n        o->oSnufitYOffset = -0x20;\n        o->oSnufitZOffset = o->oSnufitRecoil + 180;\n        o->oSnufitBodyScale\n            = (s16)(o->oSnufitBodyBaseScale + 666\n            + o->oSnufitBodyBaseScale * coss(o->oSnufitBodyScalePeriod));\n\n        if (o->oSnufitBodyScale > 1000) {\n            o->oSnufitScale = (o->oSnufitBodyScale - 1000) / 1000.0f + 1.0f;\n            o->oSnufitBodyScale = 1000;\n        } else {\n            o->oSnufitScale = 1.0f;\n        }\n\n        cur_obj_scale(o->oSnufitScale);\n        obj_check_attacks(&sSnufitHitbox, o->oAction);\n    }\n}\n\n/**\n * Snufit bullets live to run into stuff and die when they do.\n */\nvoid bhv_snufit_balls_loop(void) {\n    // If far from Mario or in a different room, despawn.\n    if ((o->activeFlags & ACTIVE_FLAG_IN_DIFFERENT_ROOM)\n        || (o->oTimer != 0 && o->oDistanceToMario > 1500.0f)) {\n        obj_mark_for_deletion(o);\n    }\n\n    // Gravity =/= 0 after it has hit Mario while metal.\n    if (o->oGravity == 0.0f) {\n        cur_obj_update_floor_and_walls();\n\n        obj_compute_vel_from_move_pitch(40.0f);\n        if (obj_check_attacks(&sSnufitBulletHitbox, 1) != 0) {\n            // We hit Mario while he is metal!\n            // Bounce off, and fall until the first check is true.\n            o->oMoveAngleYaw += 0x8000;\n            o->oForwardVel *= 0.05f;\n            o->oVelY = 30.0f;\n            o->oGravity = -4.0f;\n\n            cur_obj_become_intangible();\n        } else if (o->oAction == 1\n                   || (o->oMoveFlags & (OBJ_MOVE_MASK_ON_GROUND | OBJ_MOVE_HIT_WALL))) {\n            // The Snufit shot Mario and has fulfilled its lonely existance.\n            //! The above check could theoretically be avoided by finding a geometric\n            //! situation that does not trigger those flags (Water?). If found,\n            //! this would be a route to hang the game via too many snufit bullets.\n            o->oDeathSound = -1;\n            obj_die_if_health_non_positive();\n        }\n\n        cur_obj_move_standard(78);\n    } else {\n        cur_obj_move_using_fvel_and_gravity();\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/sound_ambient.inc.c",
    "content": "// sound_ambient.inc.c\n\nvoid bhv_ambient_sounds_init(void) {\n    if (gCamera->mode == CAMERA_MODE_BEHIND_MARIO) {\n        return;\n    }\n\n    play_sound(SOUND_AIR_CASTLE_OUTDOORS_AMBIENT, gGlobalSoundSource);\n}\n"
  },
  {
    "path": "src/game/behaviors/sound_birds.inc.c",
    "content": "// sound_birds.inc.c\n\nvoid bhv_birds_sound_loop(void) {\n    if (gCamera->mode == CAMERA_MODE_BEHIND_MARIO) {\n        return;\n    }\n\n    switch (o->oBhvParams2ndByte) {\n        case 0:\n            cur_obj_play_sound_1(SOUND_OBJ2_BIRD_CHIRP1);\n            break;\n\n        case 1:\n            cur_obj_play_sound_1(SOUND_GENERAL2_BIRD_CHIRP2);\n            break;\n\n        case 2:\n            cur_obj_play_sound_1(SOUND_OBJ_BIRD_CHIRP3);\n            break;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/sound_sand.inc.c",
    "content": "// sound_sand.inc.c\n\nvoid bhv_sand_sound_loop(void) {\n    if (gCamera->mode == CAMERA_MODE_BEHIND_MARIO) {\n        return;\n    }\n\n    cur_obj_play_sound_1(SOUND_ENV_MOVINGSAND);\n}\n"
  },
  {
    "path": "src/game/behaviors/sound_spawner.inc.c",
    "content": "// sound_spawner.inc.c\n\nvoid bhv_sound_spawner_init(void) {\n    s32 sp1C = o->oSoundEffectUnkF4;\n    play_sound(sp1C, o->header.gfx.cameraToObject);\n}\n"
  },
  {
    "path": "src/game/behaviors/sound_volcano.inc.c",
    "content": "// sound_volcano.inc.c\n\nvoid bhv_volcano_sound_loop(void) {\n    cur_obj_play_sound_1(SOUND_ENV_DRONING1);\n}\n"
  },
  {
    "path": "src/game/behaviors/sound_waterfall.inc.c",
    "content": "// sound_waterfall.inc.c\n\nvoid bhv_waterfall_sound_loop(void) {\n    cur_obj_play_sound_1(SOUND_ENV_WATERFALL2);\n}\n"
  },
  {
    "path": "src/game/behaviors/sparkle_spawn.inc.c",
    "content": "\n/**\n * Behavior for bhvSparkleSpawn.\n *\n * This spawns the sparkles used by various objects. After being given a\n * random local position and scale, each sparkle's behavior is thereafter\n * controlled by bhvSparkle. This spawner is deleted after 1 frame.\n */\n\nvoid bhv_sparkle_spawn_loop(void) {\n    struct Object *sparkle = try_to_spawn_object(0, 1.0f, o, MODEL_SPARKLES_ANIMATION, bhvSparkle);\n    if (sparkle != NULL) {\n        obj_translate_xyz_random(sparkle, 90.0f);\n        obj_scale_random(sparkle, 1.0f, 0.0f);\n    }\n    if (o->oTimer > 1) {\n        obj_mark_for_deletion(o);\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/sparkle_spawn_star.inc.c",
    "content": "// sparkle_spawn_star.inc.c\n\nstruct ObjectHitbox sSparkleSpawnStarHitbox = {\n    /* interactType:      */ INTERACT_STAR_OR_KEY,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 0,\n    /* health:            */ 0,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 80,\n    /* height:            */ 50,\n    /* hurtboxRadius:     */ 0,\n    /* hurtboxHeight:     */ 0,\n};\n\nvoid bhv_spawned_star_init(void) {\n    s32 starIndex;\n\n    if (!(o->oInteractionSubtype & INT_SUBTYPE_NO_EXIT)) {\n        o->oBhvParams = o->parentObj->oBhvParams;\n    }\n\n    starIndex = (o->oBhvParams >> 24) & 0xFF;\n\n    if (bit_shift_left(starIndex)\n        & save_file_get_star_flags(gCurrSaveFileNum - 1, COURSE_NUM_TO_INDEX(gCurrCourseNum))) {\n        cur_obj_set_model(MODEL_TRANSPARENT_STAR);\n    }\n\n    cur_obj_play_sound_2(SOUND_GENERAL2_STAR_APPEARS);\n}\n\nvoid set_sparkle_spawn_star_hitbox(void) {\n    obj_set_hitbox(o, &sSparkleSpawnStarHitbox);\n    if (o->oInteractStatus & INT_STATUS_INTERACTED) {\n        mark_obj_for_deletion(o);\n        o->oInteractStatus = 0;\n    }\n}\n\nvoid set_home_to_mario(void) {\n    f32 sp1C;\n    f32 sp18;\n\n    o->oHomeX = gMarioObject->oPosX;\n    o->oHomeZ = gMarioObject->oPosZ;\n    o->oHomeY = gMarioObject->oPosY;\n    o->oHomeY += 250.0f;\n    o->oPosY = o->oHomeY;\n\n    sp1C = o->oHomeX - o->oPosX;\n    sp18 = o->oHomeZ - o->oPosZ;\n\n    o->oForwardVel = sqrtf(sp1C * sp1C + sp18 * sp18) / 23.0f;\n}\n\nvoid set_y_home_to_pos(void) {\n    o->oForwardVel = 0.0f;\n    o->oHomeY = o->oPosY;\n}\n\nvoid slow_star_rotation(void) {\n    if (o->oAngleVelYaw > 0x400) {\n        o->oAngleVelYaw -= 0x40;\n    }\n}\n\nvoid bhv_spawned_star_loop(void) {\n    if (o->oAction == 0) {\n        if (o->oTimer == 0) {\n            cutscene_object(CUTSCENE_STAR_SPAWN, o);\n            set_time_stop_flags(TIME_STOP_ENABLED | TIME_STOP_MARIO_AND_DOORS);\n            o->activeFlags |= ACTIVE_FLAG_INITIATED_TIME_STOP;\n            o->oAngleVelYaw = 0x800;\n            if (o->oBhvParams2ndByte == 0) {\n                set_home_to_mario();\n            } else {\n                set_y_home_to_pos();\n            }\n            o->oMoveAngleYaw = cur_obj_angle_to_home();\n            o->oVelY = 50.0f;\n            o->oGravity = -4.0f;\n            spawn_mist_particles();\n        }\n        cur_obj_play_sound_1(SOUND_ENV_STAR);\n        spawn_object(o, MODEL_NONE, bhvSparkleSpawn);\n        if (o->oVelY < 0 && o->oPosY < o->oHomeY) {\n            o->oAction++;\n            o->oForwardVel = 0;\n            o->oVelY = 20.0f;\n            o->oGravity = -1.0f;\n            if (o->oInteractionSubtype & INT_SUBTYPE_NO_EXIT) {\n#ifdef VERSION_JP\n                play_power_star_jingle(FALSE);\n#else\n                play_power_star_jingle(TRUE);\n#endif\n            } else {\n                play_power_star_jingle(TRUE);\n            }\n        }\n    } else if (o->oAction == 1) {\n        if (o->oVelY < -4.0f) {\n            o->oVelY = -4.0f;\n        }\n        if (o->oVelY < 0 && o->oPosY < o->oHomeY) {\n            gObjCutsceneDone = TRUE;\n            o->oVelY = 0;\n            o->oGravity = 0;\n            o->oAction++;\n        }\n        spawn_object(o, MODEL_NONE, bhvSparkleSpawn);\n    } else if (o->oAction == 2) {\n        if (gCamera->cutscene == 0 && gRecentCutscene == 0) {\n            clear_time_stop_flags(TIME_STOP_ENABLED | TIME_STOP_MARIO_AND_DOORS);\n            o->activeFlags &= ~ACTIVE_FLAG_INITIATED_TIME_STOP;\n            o->oAction++;\n        }\n    } else {\n        set_sparkle_spawn_star_hitbox();\n        slow_star_rotation();\n    }\n\n    cur_obj_move_using_fvel_and_gravity();\n    o->oFaceAngleYaw += o->oAngleVelYaw;\n    o->oInteractStatus = 0;\n}\n\nvoid bhv_spawn_star_no_level_exit(u32 starIndex) {\n    struct Object *star = spawn_object(o, MODEL_STAR, bhvSpawnedStarNoLevelExit);\n    star->oBhvParams = starIndex << 24;\n    star->oInteractionSubtype = INT_SUBTYPE_NO_EXIT;\n    obj_set_angle(star, 0, 0, 0);\n}\n"
  },
  {
    "path": "src/game/behaviors/spawn_star.inc.c",
    "content": "// spawn_star.inc.c\n\nstatic struct ObjectHitbox sCollectStarHitbox = {\n    /* interactType:      */ INTERACT_STAR_OR_KEY,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 0,\n    /* health:            */ 0,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 80,\n    /* height:            */ 50,\n    /* hurtboxRadius:     */ 0,\n    /* hurtboxHeight:     */ 0,\n};\n\nvoid bhv_collect_star_init(void) {\n    s8 starIndex = (o->oBhvParams >> 24) & 0xFF;\n    u8 currentLevelStarFlags = save_file_get_star_flags(gCurrSaveFileNum - 1, COURSE_NUM_TO_INDEX(gCurrCourseNum));\n\n    if (currentLevelStarFlags & (1 << starIndex)) {\n        o->header.gfx.sharedChild = gLoadedGraphNodes[MODEL_TRANSPARENT_STAR];\n    } else {\n        o->header.gfx.sharedChild = gLoadedGraphNodes[MODEL_STAR];\n    }\n\n    obj_set_hitbox(o, &sCollectStarHitbox);\n}\n\nvoid bhv_collect_star_loop(void) {\n    o->oFaceAngleYaw += 0x800;\n\n    if (o->oInteractStatus & INT_STATUS_INTERACTED) {\n        mark_obj_for_deletion(o);\n        o->oInteractStatus = 0;\n    }\n}\n\nvoid bhv_star_spawn_init(void) {\n    o->oMoveAngleYaw = atan2s(o->oHomeZ - o->oPosZ, o->oHomeX - o->oPosX);\n    o->oStarSpawnDisFromHome = sqrtf(sqr(o->oHomeX - o->oPosX) + sqr(o->oHomeZ - o->oPosZ));\n    o->oVelY = (o->oHomeY - o->oPosY) / 30.0f;\n    o->oForwardVel = o->oStarSpawnDisFromHome / 30.0f;\n    o->oStarSpawnUnkFC = o->oPosY;\n\n    if (o->oBhvParams2ndByte == 0 || gCurrCourseNum == COURSE_BBH) {\n        cutscene_object(CUTSCENE_STAR_SPAWN, o);\n    } else {\n        cutscene_object(CUTSCENE_RED_COIN_STAR_SPAWN, o);\n    }\n\n    set_time_stop_flags(TIME_STOP_ENABLED | TIME_STOP_MARIO_AND_DOORS);\n    o->activeFlags |= ACTIVE_FLAG_INITIATED_TIME_STOP;\n    cur_obj_become_intangible();\n}\n\nvoid bhv_star_spawn_loop(void) {\n    switch (o->oAction) {\n        case 0:\n            o->oFaceAngleYaw += 0x1000;\n            if (o->oTimer > 20) {\n                o->oAction = 1;\n            }\n            break;\n\n        case 1:\n            obj_move_xyz_using_fvel_and_yaw(o);\n            o->oStarSpawnUnkFC += o->oVelY;\n            o->oPosY = o->oStarSpawnUnkFC + sins((o->oTimer * 0x8000) / 30) * 400.0f;\n            o->oFaceAngleYaw += 0x1000;\n            spawn_object(o, MODEL_NONE, bhvSparkleSpawn);\n            cur_obj_play_sound_1(SOUND_ENV_STAR);\n            if (o->oTimer == 30) {\n                o->oAction = 2;\n                o->oForwardVel = 0;\n                play_power_star_jingle(TRUE);\n            }\n            break;\n\n        case 2:\n            if (o->oTimer < 20) {\n                o->oVelY = 20 - o->oTimer;\n            } else {\n                o->oVelY = -10.0f;\n            }\n\n            spawn_object(o, MODEL_NONE, bhvSparkleSpawn);\n            obj_move_xyz_using_fvel_and_yaw(o);\n            o->oFaceAngleYaw = o->oFaceAngleYaw - o->oTimer * 0x10 + 0x1000;\n            cur_obj_play_sound_1(SOUND_ENV_STAR);\n\n            if (o->oPosY < o->oHomeY) {\n                cur_obj_play_sound_2(SOUND_GENERAL_STAR_APPEARS);\n                cur_obj_become_tangible();\n                o->oPosY = o->oHomeY;\n                o->oAction = 3;\n            }\n            break;\n\n        case 3:\n            o->oFaceAngleYaw += 0x800;\n            if (o->oTimer == 20) {\n                gObjCutsceneDone = TRUE;\n                clear_time_stop_flags(TIME_STOP_ENABLED | TIME_STOP_MARIO_AND_DOORS);\n                o->activeFlags &= ~ACTIVE_FLAG_INITIATED_TIME_STOP;\n            }\n\n            if (o->oInteractStatus & INT_STATUS_INTERACTED) {\n                mark_obj_for_deletion(o);\n                o->oInteractStatus = 0;\n            }\n            break;\n    }\n}\n\nstruct Object *spawn_star(struct Object *star, f32 homeX, f32 homeY, f32 homeZ) {\n    star = spawn_object_abs_with_rot(o, 0, MODEL_STAR, bhvStarSpawnCoordinates,\n                                     o->oPosX, o->oPosY, o->oPosZ, 0, 0, 0);\n    star->oBhvParams = o->oBhvParams;\n    star->oHomeX = homeX;\n    star->oHomeY = homeY;\n    star->oHomeZ = homeZ;\n    star->oFaceAnglePitch = 0;\n    star->oFaceAngleRoll = 0;\n    return star;\n}\n\nvoid spawn_default_star(f32 homeX, f32 homeY, f32 homeZ) {\n    struct Object *star = spawn_star(star, homeX, homeY, homeZ);\n    star->oBhvParams2ndByte = 0;\n}\n\nvoid spawn_red_coin_cutscene_star(f32 homeX, f32 homeY, f32 homeZ) {\n    struct Object *star = spawn_star(star, homeX, homeY, homeZ);\n    star->oBhvParams2ndByte = 1;\n}\n\nvoid spawn_no_exit_star(f32 homeX, f32 homeY, f32 homeZ) {\n    struct Object *star = spawn_star(star, homeX, homeY, homeZ);\n    star->oBhvParams2ndByte = 1;\n    star->oInteractionSubtype |= INT_SUBTYPE_NO_EXIT;\n}\n\nvoid bhv_hidden_red_coin_star_init(void) {\n    s16 count;\n\n    if (gCurrCourseNum != COURSE_JRB) {\n        spawn_object(o, MODEL_TRANSPARENT_STAR, bhvRedCoinStarMarker);\n    }\n\n    count = count_objects_with_behavior(bhvRedCoin);\n    if (count == 0) {\n        struct Object *star = spawn_object_abs_with_rot(o, 0, MODEL_STAR, bhvStar,\n                                                        o->oPosX, o->oPosY, o->oPosZ, 0, 0, 0);\n        star->oBhvParams = o->oBhvParams;\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n\n    o->oHiddenStarTriggerCounter = 8 - count;\n}\n\nvoid bhv_hidden_red_coin_star_loop(void) {\n    gRedCoinsCollected = o->oHiddenStarTriggerCounter;\n\n    switch (o->oAction) {\n        case 0:\n            if (o->oHiddenStarTriggerCounter == 8) {\n                o->oAction = 1;\n            }\n            break;\n\n        case 1:\n            if (o->oTimer > 2) {\n                spawn_red_coin_cutscene_star(o->oPosX, o->oPosY, o->oPosZ);\n                spawn_mist_particles();\n                o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n            }\n            break;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/spawn_star_exit.inc.c",
    "content": "// spawn_star_exit.inc.c\n\nvoid bhv_ccm_touched_star_spawn_loop(void) {\n    if (gCCMEnteredSlide & 1) {\n        o->oPosY += 100.0f;\n        o->oPosX = 2780.0f;\n        o->oPosZ = 4666.0f;\n        spawn_default_star(2500.0f, -4350.0f, 5750.0f);\n        obj_mark_for_deletion(o);\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/spindel.inc.c",
    "content": "// spindel.inc.c\n\nvoid bhv_spindel_init(void) {\n    o->oHomeY = o->oPosY;\n    o->oSpindelUnkF4 = 0;\n    o->oSpindelUnkF8 = 0;\n}\n\nvoid bhv_spindel_loop(void) {\n    f32 sp1C;\n    s32 sp18;\n\n    if (o->oSpindelUnkF4 == -1) {\n        if (o->oTimer == 32) {\n            o->oSpindelUnkF4 = 0;\n            o->oTimer = 0;\n        } else {\n            o->oVelZ = 0.0f;\n            o->oAngleVelPitch = 0;\n            return;\n        }\n    }\n\n    sp18 = 10 - o->oSpindelUnkF4;\n\n    if (sp18 < 0) {\n        sp18 *= -1;\n    }\n\n    sp18 -= 6;\n    if (sp18 < 0) {\n        sp18 = 0;\n    }\n\n    if (o->oTimer == sp18 + 8) {\n        o->oTimer = 0;\n        o->oSpindelUnkF4++;\n        if (o->oSpindelUnkF4 == 20) {\n            if (o->oSpindelUnkF8 == 0) {\n                o->oSpindelUnkF8 = 1;\n            } else {\n                o->oSpindelUnkF8 = 0;\n            }\n\n            o->oSpindelUnkF4 = -1;\n        }\n    }\n\n    if (sp18 == 4 || sp18 == 3) {\n        sp18 = 4;\n    } else if (sp18 == 2 || sp18 == 1) {\n        sp18 = 2;\n    } else if (sp18 == 0) {\n        sp18 = 1;\n    }\n\n    if (o->oTimer < sp18 * 8) {\n        if (o->oSpindelUnkF8 == 0) {\n            o->oVelZ = 20 / sp18;\n            o->oAngleVelPitch = 1024 / sp18;\n        } else {\n            o->oVelZ = -20 / sp18;\n            o->oAngleVelPitch = -1024 / sp18;\n        }\n\n        o->oPosZ += o->oVelZ;\n        o->oMoveAnglePitch += o->oAngleVelPitch;\n\n        if (absf_2(o->oMoveAnglePitch & 0x1fff) < 800.0f && o->oAngleVelPitch != 0) {\n            cur_obj_play_sound_2(SOUND_GENERAL2_SPINDEL_ROLL);\n        }\n\n        sp1C = sins(o->oMoveAnglePitch * 4) * 23.0;\n        if (sp1C < 0.0f) {\n            sp1C *= -1.0f;\n        }\n\n        o->oPosY = o->oHomeY + sp1C;\n\n        if (o->oTimer + 1 == sp18 * 8) {\n            set_camera_shake_from_point(SHAKE_POS_SMALL, o->oPosX, o->oPosY, o->oPosZ);\n        }\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/spindrift.inc.c",
    "content": "// spindrift.inc.c\n\nstruct ObjectHitbox sSpindriftHitbox = {\n    /* interactType:      */ INTERACT_BOUNCE_TOP,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 2,\n    /* health:            */ 1,\n    /* numLootCoins:      */ 3,\n    /* radius:            */ 90,\n    /* height:            */ 80,\n    /* hurtboxRadius:     */ 80,\n    /* hurtboxHeight:     */ 70,\n};\n\nvoid bhv_spindrift_loop(void) {\n    o->activeFlags |= ACTIVE_FLAG_UNK10;\n\n    if (cur_obj_set_hitbox_and_die_if_attacked(&sSpindriftHitbox, SOUND_OBJ_DYING_ENEMY1, 0)) {\n        cur_obj_change_action(1);\n    }\n    cur_obj_update_floor_and_walls();\n\n    switch (o->oAction) {\n        case 0:\n            approach_forward_vel(&o->oForwardVel, 4.0f, 1.0f);\n            if (cur_obj_lateral_dist_from_mario_to_home() > 1000.0f) {\n                o->oAngleToMario = cur_obj_angle_to_home();\n            } else if (o->oDistanceToMario > 300.0f) {\n                o->oAngleToMario = obj_angle_to_object(o, gMarioObject);\n            }\n            cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x400);\n            break;\n\n        case 1:\n            o->oFlags &= ~OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW;\n            o->oForwardVel = -10.0f;\n            if (o->oTimer > 20) {\n                o->oAction = 0;\n                o->oInteractStatus = 0;\n                o->oFlags |= OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW;\n            }\n            break;\n    }\n\n    cur_obj_move_standard(-60);\n}\n"
  },
  {
    "path": "src/game/behaviors/spiny.inc.c",
    "content": "\n/**\n * Behavior for bhvSpiny.\n * When spawned by lakitu, its parent object is the lakitu.\n * Lakitu comes before it spawned spinies in processing order.\n */\n\n/**\n * Hitbox for spiny both while thrown and walking. The interaction type is\n * changed to INTERACT_UNKNOWN_08 while walking.\n */\nstatic struct ObjectHitbox sSpinyHitbox = {\n    /* interactType:      */ INTERACT_MR_BLIZZARD,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 2,\n    /* health:            */ 0,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 80,\n    /* height:            */ 50,\n    /* hurtboxRadius:     */ 40,\n    /* hurtboxHeight:     */ 40,\n};\n\n/**\n * Attack handlers for spiny while walking.\n */\nstatic u8 sSpinyWalkAttackHandlers[] = {\n    /* ATTACK_PUNCH:                 */ ATTACK_HANDLER_KNOCKBACK,\n    /* ATTACK_KICK_OR_TRIP:          */ ATTACK_HANDLER_KNOCKBACK,\n    /* ATTACK_FROM_ABOVE:            */ ATTACK_HANDLER_NOP,\n    /* ATTACK_GROUND_POUND_OR_TWIRL: */ ATTACK_HANDLER_NOP,\n    /* ATTACK_FAST_ATTACK:           */ ATTACK_HANDLER_KNOCKBACK,\n    /* ATTACK_FROM_BELOW:            */ ATTACK_HANDLER_KNOCKBACK,\n};\n\n/**\n * If the spiny was spawned by lakitu and mario is far away, despawn.\n */\nstatic s32 spiny_check_active(void) {\n    if (o->parentObj != o) {\n        if (o->oDistanceToMario > 2500.0f) {\n            //! It's possible for the lakitu to despawn while the spiny still\n            //  references it. This line allows us to decrement the 0x1B field\n            //  in an object that loads into the lakitu's former slot.\n            //  This can be used in practice to corrupt a huge goomba to\n            //  behave similar to a regular goomba.\n            //  It can also be used on a bob-omb respawner to change its model\n            //  to a butterfly or fish.\n            o->parentObj->oEnemyLakituNumSpinies--;\n            obj_mark_for_deletion(o);\n            return FALSE;\n        }\n    }\n\n    return TRUE;\n}\n\n/**\n * Walk around randomly, and dick around with oFlags, oMoveFlags, and oInteractType.\n */\nstatic void spiny_act_walk(void) {\n    if (spiny_check_active()) {\n        cur_obj_update_floor_and_walls();\n\n        o->oGraphYOffset = -17.0f;\n        cur_obj_init_animation_with_sound(0);\n\n        if (o->oMoveFlags & OBJ_MOVE_MASK_ON_GROUND) {\n            // After touching the ground for the first time, stop. From now on,\n            // ensure that face angle and move angle agree\n            if (!(o->oFlags & OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW)) {\n                if (obj_forward_vel_approach(0.0f, 1.0f)) {\n                    o->oFlags |= OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW;\n                    o->oMoveAngleYaw = o->oFaceAngleYaw;\n                }\n            } else {\n                obj_forward_vel_approach(1.0f, 0.2f);\n            }\n\n            if (o->oSpinyTurningAwayFromWall) {\n                o->oSpinyTurningAwayFromWall =\n                    obj_resolve_collisions_and_turn(o->oSpinyTargetYaw, 0x80);\n            } else {\n                if (!(o->oSpinyTurningAwayFromWall =\n                          obj_bounce_off_walls_edges_objects(&o->oSpinyTargetYaw))) {\n                    // Walk and occasionally randomly change direction\n                    if (o->oSpinyTimeUntilTurn != 0) {\n                        o->oSpinyTimeUntilTurn--;\n                    } else {\n                        o->oSpinyTargetYaw = o->oMoveAngleYaw + (s16) random_sign() * 0x2000;\n                        o->oSpinyTimeUntilTurn = random_linear_offset(100, 100);\n                    }\n                }\n\n                cur_obj_rotate_yaw_toward(o->oSpinyTargetYaw, 0x80);\n            }\n\n        } else if (o->oMoveFlags & OBJ_MOVE_HIT_WALL) {\n            // Bounce off walls while falling\n            o->oMoveAngleYaw = cur_obj_reflect_move_angle_off_wall();\n        }\n\n        cur_obj_move_standard(-78);\n\n        if (obj_handle_attacks(&sSpinyHitbox, SPINY_ACT_ATTACKED_MARIO, sSpinyWalkAttackHandlers)) {\n            // When attacked by mario, lessen the knockback\n            o->oAction = SPINY_ACT_WALK;\n            o->oForwardVel *= 0.1f;\n            o->oVelY *= 0.7f;\n\n            o->oMoveFlags = 0; // weird flex but okay\n\n            // Don't allow mario to punch the spiny two frames in a row?\n            o->oInteractType = INTERACT_MR_BLIZZARD;\n        } else {\n            o->oInteractType = INTERACT_UNKNOWN_08;\n        }\n    }\n}\n\n/**\n * Wait for the lakitu to throw the spiny. The spiny is placed in this action\n * after being spawned by a lakitu.\n */\nstatic void spiny_act_held_by_lakitu(void) {\n    o->oGraphYOffset = 15.0f;\n    cur_obj_init_animation_with_sound(0);\n\n    o->oParentRelativePosX = -50.0f;\n    o->oParentRelativePosY = 35.0f;\n    o->oParentRelativePosZ = -100.0f;\n\n    if (o->parentObj->prevObj == NULL) {\n        o->oAction = SPINY_ACT_THROWN_BY_LAKITU;\n        o->oMoveAngleYaw = o->parentObj->oFaceAngleYaw;\n\n        // Move more quickly if the lakitu is moving forward\n        o->oForwardVel =\n            o->parentObj->oForwardVel * coss(o->oMoveAngleYaw - o->parentObj->oMoveAngleYaw) + 10.0f;\n        o->oVelY = 30.0f;\n\n        o->oMoveFlags = 0; // you do you, spiny\n    }\n}\n\n/**\n * Spin around. After landing, enter the walk action.\n */\nstatic void spiny_act_thrown_by_lakitu(void) {\n    if (spiny_check_active()) {\n        cur_obj_update_floor_and_walls();\n\n        o->oGraphYOffset = 15.0f;\n        o->oFaceAnglePitch -= 0x2000;\n\n        cur_obj_init_animation_with_sound(0);\n\n        if (o->oMoveFlags & OBJ_MOVE_LANDED) {\n            cur_obj_play_sound_2(SOUND_OBJ_SPINY_UNK59);\n            cur_obj_set_model(MODEL_SPINY);\n            obj_init_animation_with_sound(o, spiny_seg5_anims_05016EAC, 0);\n            o->oGraphYOffset = -17.0f;\n\n            o->oFaceAnglePitch = 0;\n            o->oAction = SPINY_ACT_WALK;\n        } else if (o->oMoveFlags & OBJ_MOVE_HIT_WALL) {\n            o->oMoveAngleYaw = cur_obj_reflect_move_angle_off_wall();\n        }\n\n        cur_obj_move_standard(-78);\n\n        if (obj_check_attacks(&sSpinyHitbox, o->oAction) != 0 && o->parentObj != o) {\n            o->parentObj->oEnemyLakituNumSpinies--;\n        }\n    }\n}\n\n/**\n * Update function for bhvSpiny.\n */\nvoid bhv_spiny_update(void) {\n    // PARTIAL_UPDATE\n\n    switch (o->oAction) {\n        case SPINY_ACT_WALK:\n            spiny_act_walk();\n            break;\n        case SPINY_ACT_HELD_BY_LAKITU:\n            spiny_act_held_by_lakitu();\n            break;\n        case SPINY_ACT_THROWN_BY_LAKITU:\n            spiny_act_thrown_by_lakitu();\n            break;\n        case SPINY_ACT_ATTACKED_MARIO:\n            obj_move_for_one_second(SPINY_ACT_WALK);\n            break;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/square_platform_cycle.inc.c",
    "content": "// square_platform_cycle.inc.c\n\ns32 square_plat_set_yaw_until_timer(u16 yaw, s32 a) {\n    o->oMoveAngleYaw = yaw;\n    if (a < o->oTimer) {\n        return TRUE;\n    } else {\n        return FALSE;\n    }\n}\n\nvoid bhv_squarish_path_moving_loop(void) {\n    o->oForwardVel = 10.0f;\n\n    switch (o->oAction) {\n        case 0:\n            o->oAction = (o->oBhvParams2ndByte & 0x03) + 1;\n            break;\n        case 1:\n            if (square_plat_set_yaw_until_timer(0, 60)) {\n                o->oAction++;\n            }\n            break;\n        case 2:\n            if (square_plat_set_yaw_until_timer(0x4000, 60)) {\n                o->oAction++;\n            }\n            break;\n        case 3:\n            if (square_plat_set_yaw_until_timer(0x8000, 60)) {\n                o->oAction++;\n            }\n            break;\n        case 4:\n            if (square_plat_set_yaw_until_timer(0xc000, 60)) {\n                o->oAction = 1;\n            }\n            break;\n        default:\n            break;\n    }\n\n    cur_obj_move_using_fvel_and_gravity();\n    load_object_collision_model();\n}\n"
  },
  {
    "path": "src/game/behaviors/star_door.inc.c",
    "content": "// star_door.inc.c\n\nvoid star_door_update_pos(void) {\n    o->oVelX = (o->oLeftVel) * coss(o->oMoveAngleYaw);\n    o->oVelZ = (o->oLeftVel) * -sins(o->oMoveAngleYaw);\n    o->oPosX += o->oVelX;\n    o->oPosZ += o->oVelZ;\n}\n\nvoid bhv_star_door_loop(void) {\n    UNUSED u8 filler[4];\n    struct Object *sp18 = cur_obj_nearest_object_with_behavior(bhvStarDoor);\n\n    switch (o->oAction) {\n        case 0:\n            cur_obj_become_tangible();\n            if (o->oInteractStatus & (INT_STATUS_UNK16 | INT_STATUS_UNK17)) {\n                o->oAction = 1;\n            }\n            if (sp18 != NULL && sp18->oAction != 0) {\n                o->oAction = 1;\n            }\n            break;\n\n        case 1:\n            if (o->oTimer == 0 && (s16) o->oMoveAngleYaw >= 0) {\n                cur_obj_play_sound_2(SOUND_GENERAL_STAR_DOOR_OPEN);\n#if ENABLE_RUMBLE\n                queue_rumble_data(35, 30);\n#endif\n            }\n            cur_obj_become_intangible();\n            o->oLeftVel = -8.0f;\n            star_door_update_pos();\n            if (o->oTimer > 15) {\n                o->oAction++;\n            }\n            break;\n\n        case 2:\n            if (o->oTimer > 30) {\n                o->oAction++;\n            }\n            break;\n\n        case 3:\n            if (o->oTimer == 0 && (s16) o->oMoveAngleYaw >= 0) {\n                cur_obj_play_sound_2(SOUND_GENERAL_STAR_DOOR_CLOSE);\n#if ENABLE_RUMBLE\n                queue_rumble_data(35, 30);\n#endif\n            }\n            o->oLeftVel = 8.0f;\n            star_door_update_pos();\n            if (o->oTimer > 15) {\n                o->oAction++;\n            }\n            break;\n\n        case 4:\n            o->oInteractStatus = 0;\n            o->oAction = 0;\n            break;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/static_checkered_platform.inc.c",
    "content": "// static_checkered_platform.inc.c\n\nvoid bhv_static_checkered_platform_loop(void) {\n    if (gDebugInfo[DEBUG_PAGE_ENEMYINFO][0] == 1) {\n        obj_set_angle(o, 0, 0, 0);\n        o->oAngleVelPitch = 0;\n        o->oAngleVelYaw = 0;\n        o->oAngleVelRoll = 0;\n    }\n\n    if (gDebugInfo[DEBUG_PAGE_ENEMYINFO][0] == 2) {\n        o->oFaceAnglePitch = gDebugInfo[DEBUG_PAGE_ENEMYINFO][1] << 12;\n        o->oFaceAngleYaw = gDebugInfo[DEBUG_PAGE_ENEMYINFO][2] << 12;\n        o->oFaceAngleRoll = gDebugInfo[DEBUG_PAGE_ENEMYINFO][3] << 12;\n    }\n\n    o->oAngleVelPitch = gDebugInfo[DEBUG_PAGE_ENEMYINFO][4];\n    o->oAngleVelYaw = gDebugInfo[DEBUG_PAGE_ENEMYINFO][5];\n    o->oAngleVelRoll = gDebugInfo[DEBUG_PAGE_ENEMYINFO][6];\n\n    if (gDebugInfo[DEBUG_PAGE_ENEMYINFO][0] == 3) {\n        o->oFaceAnglePitch += o->oAngleVelPitch;\n        o->oFaceAngleYaw += o->oAngleVelYaw;\n        o->oFaceAngleRoll += o->oAngleVelRoll;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/strong_wind_particle.inc.c",
    "content": "// strong_wind_particle.inc.c\n\nstruct ObjectHitbox sStrongWindParticleHitbox = {\n    /* interactType:      */ INTERACT_STRONG_WIND,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 0,\n    /* health:            */ 0,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 20,\n    /* height:            */ 70,\n    /* hurtboxRadius:     */ 20,\n    /* hurtboxHeight:     */ 70,\n};\n\nvoid bhv_strong_wind_particle_loop(void) {\n    struct Object *penguinObj;\n    f32 distanceFromPenguin;\n    f32 penguinXDist, penguinZDist;\n\n    obj_set_hitbox(o, &sStrongWindParticleHitbox);\n\n    if (o->oTimer == 0) {\n        o->oStrongWindParticlePenguinObj = cur_obj_nearest_object_with_behavior(bhvSLWalkingPenguin);\n        obj_translate_xyz_random(o, 100.0f);\n\n        o->oForwardVel = coss(o->oMoveAnglePitch) * 100.0f;\n        o->oVelY = sins(o->oMoveAnglePitch) * -100.0f;\n\n        o->oMoveAngleYaw += random_f32_around_zero(o->oBhvParams2ndByte * 500); // Wind spread\n        o->oOpacity = 100;\n    }\n\n    cur_obj_move_using_fvel_and_gravity();\n    if (o->oTimer > 15) { // Deactivate after 15 frames\n        obj_mark_for_deletion(o);\n    }\n\n    // If collided with the SL walking penguin, deactivate.\n    penguinObj = o->oStrongWindParticlePenguinObj;\n    if (penguinObj != NULL) {\n        penguinXDist = penguinObj->oSLWalkingPenguinWindCollisionXPos - o->oPosX;\n        penguinZDist = penguinObj->oSLWalkingPenguinWindCollisionZPos - o->oPosZ;\n        distanceFromPenguin = sqrtf(penguinXDist * penguinXDist + penguinZDist * penguinZDist);\n        if (distanceFromPenguin < 300.0f) {\n            obj_mark_for_deletion(o);\n            cur_obj_become_intangible();\n        }\n    }\n}\n\n// Spawn particles that blow Mario away and knock his cap off from the current object.\n// Used for the Snowman in SL and Fwoosh.\nvoid cur_obj_spawn_strong_wind_particles(s32 windSpread, f32 scale, f32 relPosX, f32 relPosY, f32 relPosZ) {\n    // Alternate between tiny particles and regular particles each frame.\n    if (gGlobalTimer & 1) {\n        // Because the tiny particles are unimportant objects, invisible wind particles are spawned to provide collision.\n        // There was absolutely no reason to make the smaller particles unimportant, though...\n        spawn_object_relative_with_scale(windSpread, relPosX, relPosY, relPosZ, 0.5f, o, MODEL_WHITE_PARTICLE_DL, bhvTinyStrongWindParticle);\n        spawn_object_relative_with_scale(windSpread, relPosX, relPosY, relPosZ, scale, o, MODEL_NONE, bhvStrongWindParticle);\n    } else {\n        spawn_object_relative_with_scale(windSpread, relPosX, relPosY, relPosZ, scale, o, MODEL_MIST, bhvStrongWindParticle);\n    }\n    // There is also no need to spawn additional invisible wind particles here.\n    // If the devs were worried about object overload when making small particles unimportant, why spawn these?\n    // It isn't to ensure collision, as even 1 particle every 2 frames is enough to ensure this reliably.\n    spawn_object_relative_with_scale(windSpread, relPosX, relPosY, relPosZ, scale, o, MODEL_NONE, bhvStrongWindParticle);\n}\n"
  },
  {
    "path": "src/game/behaviors/sushi.inc.c",
    "content": "// sushi.inc.c\n\nvoid bhv_sushi_shark_collision_loop(void) {\n}\n\nvoid bhv_sushi_shark_loop(void) {\n    f32 sp1C = find_water_level(o->oPosX, o->oPosZ);\n\n    o->oPosX = o->oHomeX + sins(o->oSushiSharkUnkF4) * 1700.0f;\n    o->oPosZ = o->oHomeZ + coss(o->oSushiSharkUnkF4) * 1700.0f;\n    o->oPosY = sp1C + o->oHomeY + sins(o->oSushiSharkUnkF4) * 200.0f;\n\n    o->oMoveAngleYaw = o->oSushiSharkUnkF4 + 0x4000;\n    o->oSushiSharkUnkF4 += 0x80;\n\n    if (gMarioObject->oPosY - sp1C > -500.0f) {\n        if (o->oPosY - sp1C > -200.0f) {\n            spawn_object_with_scale(o, MODEL_WAVE_TRAIL, bhvObjectWaveTrail, 4.0f);\n        }\n    }\n    if (!(o->oTimer & 0x0F)) {\n        cur_obj_play_sound_2(SOUND_OBJ_SUSHI_SHARK_WATER_SOUND);\n    }\n\n    o->oInteractStatus = 0;\n}\n"
  },
  {
    "path": "src/game/behaviors/swing_platform.inc.c",
    "content": "// swing_platform.inc.c\n\nvoid bhv_swing_platform_init(void) {\n    o->oSwingPlatformAngle = 0x2000;\n}\n\nvoid bhv_swing_platform_update(void) {\n    s32 startRoll = o->oFaceAngleRoll;\n\n    if (o->oFaceAngleRoll < 0) {\n        o->oSwingPlatformSpeed += 4.0f;\n    } else {\n        o->oSwingPlatformSpeed -= 4.0f;\n    }\n\n    o->oSwingPlatformAngle += o->oSwingPlatformSpeed;\n    o->oFaceAngleRoll = o->oSwingPlatformAngle;\n    o->oAngleVelRoll = o->oFaceAngleRoll - startRoll;\n}\n"
  },
  {
    "path": "src/game/behaviors/switch_hidden_objects.inc.c",
    "content": "// switch_hidden_objects.inc.c\n\nstruct ObjectHitbox sBreakableBoxHitbox = {\n    /* interactType:      */ INTERACT_BREAKABLE,\n    /* downOffset:        */ 20,\n    /* damageOrCoinValue: */ 0,\n    /* health:            */ 1,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 150,\n    /* height:            */ 200,\n    /* hurtboxRadius:     */ 150,\n    /* hurtboxHeight:     */ 200,\n};\n\nvoid breakable_box_init(void) {\n    o->oHiddenObjectPurpleSwitch = NULL;\n    o->oAnimState = 1;\n\n    switch (o->oBhvParams2ndByte) {\n        case BREAKABLE_BOX_BP_NO_COINS:\n            o->oNumLootCoins = 0;\n            break;\n        case BREAKABLE_BOX_BP_3_COINS:\n            o->oNumLootCoins = 3;\n            break;\n        case BREAKABLE_BOX_BP_5_COINS:\n            o->oNumLootCoins = 5;\n            break;\n        case BREAKABLE_BOX_BP_GIANT:\n            cur_obj_scale(1.5f);\n            break;\n    }\n}\n\nvoid hidden_breakable_box_actions(void) {\n    struct Object *purpleSwitch;\n\n    obj_set_hitbox(o, &sBreakableBoxHitbox);\n    cur_obj_set_model(MODEL_BREAKABLE_BOX_SMALL);\n\n    if (o->oAction == HIDDEN_OBJECT_ACT_INACTIVE) {\n        cur_obj_disable_rendering();\n        cur_obj_become_intangible();\n        if (o->oTimer == 0) {\n            breakable_box_init();\n        }\n        if (o->oHiddenObjectPurpleSwitch == NULL) {\n            o->oHiddenObjectPurpleSwitch =\n                cur_obj_nearest_object_with_behavior(bhvFloorSwitchHiddenObjects);\n        }\n        if ((purpleSwitch = o->oHiddenObjectPurpleSwitch) != NULL) {\n            if (purpleSwitch->oAction == PURPLE_SWITCH_ACT_TICKING) {\n                o->oAction++;\n                cur_obj_enable_rendering();\n                cur_obj_unhide();\n            }\n        }\n    } else if (o->oAction == HIDDEN_OBJECT_ACT_ACTIVE) {\n        cur_obj_become_tangible();\n        if (cur_obj_wait_then_blink(360, 20)) {\n            o->oAction = HIDDEN_OBJECT_ACT_INACTIVE;\n        }\n        if (cur_obj_was_attacked_or_ground_pounded()) {\n            spawn_mist_particles();\n            spawn_triangle_break_particles(30, MODEL_DIRT_ANIMATION, 3.0f, 4);\n            o->oAction++;\n            cur_obj_play_sound_2(SOUND_GENERAL_BREAK_BOX);\n        }\n        load_object_collision_model();\n    } else { // HIDDEN_OBJECT_ACT_BROKEN\n        cur_obj_become_intangible();\n        cur_obj_disable_rendering();\n        o->oInteractStatus = 0;\n        if ((purpleSwitch = o->oHiddenObjectPurpleSwitch) != NULL) {\n            if (purpleSwitch->oAction == PURPLE_SWITCH_ACT_IDLE) {\n                o->oAction = HIDDEN_OBJECT_ACT_INACTIVE;\n            }\n        }\n    }\n}\n\nvoid hidden_wdw_platform_actions(void) {\n    struct Object *purpleSwitch;\n\n    obj_set_collision_data(o, wdw_seg7_collision_07018528);\n\n    if (o->oAction == HIDDEN_OBJECT_ACT_INACTIVE) {\n        cur_obj_disable_rendering();\n        cur_obj_become_intangible();\n        if (o->oHiddenObjectPurpleSwitch == NULL) {\n            o->oHiddenObjectPurpleSwitch =\n                cur_obj_nearest_object_with_behavior(bhvFloorSwitchHiddenObjects);\n        }\n        if ((purpleSwitch = o->oHiddenObjectPurpleSwitch) != NULL) {\n            if (purpleSwitch->oAction == PURPLE_SWITCH_ACT_TICKING) {\n                o->oAction++;\n                cur_obj_enable_rendering();\n                cur_obj_unhide();\n            }\n        }\n    } else { // HIDDEN_OBJECT_ACT_ACTIVE\n        cur_obj_become_tangible();\n        if (cur_obj_wait_then_blink(360, 20)) {\n            o->oAction = HIDDEN_OBJECT_ACT_INACTIVE;\n        }\n        load_object_collision_model();\n    }\n}\n\nvoid bhv_hidden_object_loop(void) {\n    if (o->oBhvParams2ndByte == HIDDEN_OBJECT_BP_BREAKABLE_BOX) {\n        hidden_breakable_box_actions();\n    } else {\n        hidden_wdw_platform_actions();\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/swoop.inc.c",
    "content": "\n/**\n * Behavior for bhvSwoop.\n * Has a native room.\n */\n\n/**\n * Hitbox for swoop.\n */\nstatic struct ObjectHitbox sSwoopHitbox = {\n    /* interactType:      */ INTERACT_HIT_FROM_BELOW,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 1,\n    /* health:            */ 0,\n    /* numLootCoins:      */ 1,\n    /* radius:            */ 100,\n    /* height:            */ 80,\n    /* hurtboxRadius:     */ 70,\n    /* hurtboxHeight:     */ 70,\n};\n\n/**\n * If necessary, grow to full size. Wait for mario to enter range, then turn\n * toward him and enter the move action.\n */\nstatic void swoop_act_idle(void) {\n    cur_obj_init_animation_with_sound(1);\n\n    if (approach_f32_ptr(&o->header.gfx.scale[0], 1.0f, 0.05f) && o->oDistanceToMario < 1500.0f) {\n        if (cur_obj_rotate_yaw_toward(o->oAngleToMario, 800)) {\n            cur_obj_play_sound_2(SOUND_OBJ2_SWOOP);\n            o->oAction = SWOOP_ACT_MOVE;\n            o->oVelY = -12.0f;\n        }\n    }\n\n    o->oFaceAngleRoll = 0x8000;\n}\n\n/**\n * Swoop downward toward mario. Stop moving downward and speed up after reaching\n * him. Return to home once mario is far away.\n */\nstatic void swoop_act_move(void) {\n    cur_obj_init_animation_with_accel_and_sound(0, 2.0f);\n    if (cur_obj_check_if_near_animation_end()) {\n        cur_obj_play_sound_2(SOUND_OBJ_UNKNOWN6);\n    }\n\n    if (o->oForwardVel == 0.0f) {\n        // If we haven't started moving yet, begin swooping\n        if (obj_face_roll_approach(0, 2500)) {\n            o->oForwardVel = 10.0f;\n            o->oVelY = -10.0f;\n        }\n    } else if (cur_obj_mario_far_away()) {\n        // If mario far away, reset\n        o->oAction = SWOOP_ACT_IDLE;\n        cur_obj_set_pos_to_home();\n        o->header.gfx.scale[0] = o->oForwardVel = o->oVelY = 0.0f;\n        o->oFaceAngleRoll = 0;\n    } else {\n        if (o->oSwoopBonkCountdown != 0) {\n            o->oSwoopBonkCountdown--;\n        } else if (o->oVelY != 0.0f) {\n            // If we're not done swooping, turn toward mario. When between\n            // 0 and 200 units above mario, increase speed and stop swooping\n            o->oSwoopTargetYaw = o->oAngleToMario;\n            if (o->oPosY < gMarioObject->oPosY + 200.0f) {\n                if (obj_y_vel_approach(0.0f, 0.5f)) {\n                    o->oForwardVel *= 2.0f;\n                }\n            } else {\n                obj_y_vel_approach(-10.0f, 0.5f);\n            }\n        } else if (o->oMoveFlags & OBJ_MOVE_HIT_WALL) {\n            // Bounce off a wall and don't bounce again for 30 frames.\n            o->oSwoopTargetYaw = cur_obj_reflect_move_angle_off_wall();\n            o->oSwoopBonkCountdown = 30;\n        }\n\n        // Tilt upward when approaching mario\n        if ((o->oSwoopTargetPitch = obj_get_pitch_from_vel()) == 0) {\n            o->oSwoopTargetPitch += o->oForwardVel * 500;\n        }\n        obj_move_pitch_approach(o->oSwoopTargetPitch, 140);\n\n        // Jitter yaw a bit\n        cur_obj_rotate_yaw_toward(o->oSwoopTargetYaw + (s32)(3000 * coss(4000 * gGlobalTimer)), 1200);\n        obj_roll_to_match_yaw_turn(o->oSwoopTargetYaw, 0x3000, 500);\n\n        // Jitter roll a bit\n        o->oFaceAngleRoll += (s32)(1000 * coss(20000 * gGlobalTimer));\n    }\n}\n\n/**\n * Update function for swoop.\n */\nvoid bhv_swoop_update(void) {\n    // No partial update (only appears in roomed levels)\n\n    if (!(o->activeFlags & ACTIVE_FLAG_IN_DIFFERENT_ROOM)) {\n        o->oDeathSound = SOUND_OBJ_SWOOP_DEATH;\n\n        cur_obj_update_floor_and_walls();\n\n        switch (o->oAction) {\n            case SWOOP_ACT_IDLE:\n                swoop_act_idle();\n                break;\n            case SWOOP_ACT_MOVE:\n                swoop_act_move();\n                break;\n        }\n\n        cur_obj_scale(o->header.gfx.scale[0]);\n        cur_obj_move_standard(78);\n\n        obj_check_attacks(&sSwoopHitbox, o->oAction);\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/thi_top.inc.c",
    "content": "// thi_top.inc.c\n\nstatic struct SpawnParticlesInfo sTHITopPuffs = {\n    /* bhvParam:        */ 0,\n    /* count:           */ 30,\n    /* model:           */ MODEL_WHITE_PARTICLE_SMALL,\n    /* offsetY:         */ 0,\n    /* forwardVelBase:  */ 40,\n    /* forwardVelRange: */ 0,\n    /* velYBase:        */ 20,\n    /* velYRange:       */ 40,\n    /* gravity:         */ 252,\n    /* dragStrength:    */ 30,\n    /* sizeBase:        */ 20.0f,\n    /* sizeRange:       */ 0.0f,\n};\n\nvoid bhv_thi_huge_island_top_loop(void) {\n    if (gTHIWaterDrained & 1) {\n        if (o->oTimer == 0) {\n            gEnvironmentRegions[18] = 3000;\n        }\n        cur_obj_hide();\n    } else {\n        load_object_collision_model();\n    }\n}\n\nvoid bhv_thi_tiny_island_top_loop(void) {\n    if (!(gTHIWaterDrained & 1)) {\n        if (o->oAction == 0) {\n            if (o->oDistanceToMario < 500.0f) {\n                if (gMarioStates[0].action == ACT_GROUND_POUND_LAND) {\n                    o->oAction++;\n                    cur_obj_spawn_particles(&sTHITopPuffs);\n                    spawn_triangle_break_particles(20, MODEL_DIRT_ANIMATION, 0.3f, 3);\n                    cur_obj_play_sound_2(SOUND_GENERAL_ACTIVATE_CAP_SWITCH);\n                    cur_obj_hide();\n                }\n            }\n        } else {\n            if (o->oTimer < 50) {\n                gEnvironmentRegions[18]--;\n                cur_obj_play_sound_1(SOUND_ENV_WATER_DRAIN);\n            } else {\n                gTHIWaterDrained |= 1;\n                play_puzzle_jingle();\n                o->oAction++;\n            }\n        }\n    } else {\n        if (o->oTimer == 0) {\n            gEnvironmentRegions[18] = 700;\n        }\n        cur_obj_hide();\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/thwomp.inc.c",
    "content": "// thwomp.inc.c\n\nvoid grindel_thwomp_act_idle_at_bottom(void) {\n    if (o->oTimer == 0) {\n        o->oGrindelThwompRandomTimer = random_float() * 10.0f + 20.0f; // [20, 29]\n    }\n    if (o->oTimer > o->oGrindelThwompRandomTimer) {\n        o->oAction = GRINDEL_THWOMP_ACT_RAISE;\n    }\n}\n\nvoid grindel_thwomp_act_lower(void) {\n    o->oVelY += -4.0f;\n    o->oPosY += o->oVelY;\n    if (o->oPosY < o->oHomeY) {\n        o->oPosY = o->oHomeY;\n        o->oVelY = 0.0f;\n        o->oAction = GRINDEL_THWOMP_ACT_LAND;\n    }\n}\n\nvoid grindel_thwomp_act_land(void) {\n    if (o->oTimer == 0) {\n        if (o->oDistanceToMario < 1500.0f) {\n            cur_obj_shake_screen(SHAKE_POS_SMALL);\n            cur_obj_play_sound_2(SOUND_OBJ_THWOMP);\n        }\n    }\n    if (o->oTimer >= 10) {\n        o->oAction = GRINDEL_THWOMP_ACT_IDLE_AT_BOTTOM;\n    }\n}\n\nvoid grindel_thwomp_act_idle_at_top(void) {\n    if (o->oTimer == 0) {\n        o->oGrindelThwompRandomTimer = random_float() * 30.0f + 10.0f; // [10, 39]\n    }\n    if (o->oTimer > o->oGrindelThwompRandomTimer) {\n        o->oAction = GRINDEL_THWOMP_ACT_LOWER;\n    }\n}\n\nvoid grindel_thwomp_act_raise(void) {\n    if (o->oTimer > o->oBhvParams2ndByte + 40) {\n        o->oAction = GRINDEL_THWOMP_ACT_IDLE_AT_TOP;\n        o->oPosY += 5.0f;\n    } else {\n        o->oPosY += 10.0f;\n    }\n}\n\nvoid (*sGrindelThwompActions[])(void) = {\n    grindel_thwomp_act_raise,\n    grindel_thwomp_act_idle_at_top,\n    grindel_thwomp_act_lower,\n    grindel_thwomp_act_land,\n    grindel_thwomp_act_idle_at_bottom,\n};\n\nvoid bhv_grindel_thwomp_loop(void) {\n    cur_obj_call_action_function(sGrindelThwompActions);\n}\n"
  },
  {
    "path": "src/game/behaviors/tilting_inverted_pyramid.inc.c",
    "content": "\n/**\n * This is the behavior file for the tilting inverted pyramids in BitFS/LLL.\n * The object essentially just tilts and moves Mario with it.\n */\n\n/**\n * Creates a transform matrix on a variable passed in from given normals\n * and the object's position.\n */\nvoid create_transform_from_normals(Mat4 transform, f32 xNorm, f32 yNorm, f32 zNorm) {\n    Vec3f normal;\n    Vec3f pos;\n\n    pos[0] = o->oPosX;\n    pos[1] = o->oPosY;\n    pos[2] = o->oPosZ;\n\n    normal[0] = xNorm;\n    normal[1] = yNorm;\n    normal[2] = zNorm;\n\n    mtxf_align_terrain_normal(transform, normal, pos, 0);\n}\n\n/**\n * Initialize the object's transform matrix with Y being up.\n */\nvoid bhv_platform_normals_init(void) {\n    Mat4 *transform = &o->transform;\n\n    o->oTiltingPyramidNormalX = 0.0f;\n    o->oTiltingPyramidNormalY = 1.0f;\n    o->oTiltingPyramidNormalZ = 0.0f;\n\n    create_transform_from_normals(*transform, 0.0f, 1.0f, 0.0f);\n}\n\n/**\n * Returns a value that is src incremented/decremented by inc towards goal\n * until goal is reached. Does not overshoot.\n */\nf32 approach_by_increment(f32 goal, f32 src, f32 inc) {\n    f32 newVal;\n\n    if (src <= goal) {\n        if (goal - src < inc) {\n            newVal = goal;\n        } else {\n            newVal = src + inc;\n        }\n    } else if (goal - src > -inc) {\n        newVal = goal;\n    } else {\n        newVal = src - inc;\n    }\n\n    return newVal;\n}\n\n/**\n * Main behavior for the tilting pyramids in LLL/BitFS. These platforms calculate rough normals from Mario's position,\n * then gradually tilt back moving Mario with them.\n */\nvoid bhv_tilting_inverted_pyramid_loop(void) {\n    f32 dx;\n    f32 dy;\n    f32 dz;\n    f32 d;\n\n    Vec3f dist;\n    Vec3f posBeforeRotation;\n    Vec3f posAfterRotation;\n\n    // Mario's position\n    f32 mx;\n    f32 my;\n    f32 mz;\n\n    s32 marioOnPlatform = FALSE;\n    UNUSED u8 filler1[4];\n    Mat4 *transform = &o->transform;\n    UNUSED u8 filler2[28];\n\n    if (gMarioObject->platform == o) {\n        get_mario_pos(&mx, &my, &mz);\n\n        dist[0] = gMarioObject->oPosX - o->oPosX;\n        dist[1] = gMarioObject->oPosY - o->oPosY;\n        dist[2] = gMarioObject->oPosZ - o->oPosZ;\n        linear_mtxf_mul_vec3f(*transform, posBeforeRotation, dist);\n\n        dx = gMarioObject->oPosX - o->oPosX;\n        dy = 500.0f;\n        dz = gMarioObject->oPosZ - o->oPosZ;\n        d = sqrtf(dx * dx + dy * dy + dz * dz);\n\n        //! Always true since dy = 500, making d >= 500.\n        if (d != 0.0f) {\n            // Normalizing\n            d = 1.0 / d;\n            dx *= d;\n            dy *= d;\n            dz *= d;\n        } else {\n            dx = 0.0f;\n            dy = 1.0f;\n            dz = 0.0f;\n        }\n\n        if (o->oTiltingPyramidMarioOnPlatform == TRUE) {\n            marioOnPlatform++;\n        }\n\n        o->oTiltingPyramidMarioOnPlatform = TRUE;\n    } else {\n        dx = 0.0f;\n        dy = 1.0f;\n        dz = 0.0f;\n        o->oTiltingPyramidMarioOnPlatform = FALSE;\n    }\n\n    // Approach the normals by 0.01f towards the new goal, then create a transform matrix and orient the object.\n    // Outside of the other conditionals since it needs to tilt regardless of whether Mario is on.\n    o->oTiltingPyramidNormalX = approach_by_increment(dx, o->oTiltingPyramidNormalX, 0.01f);\n    o->oTiltingPyramidNormalY = approach_by_increment(dy, o->oTiltingPyramidNormalY, 0.01f);\n    o->oTiltingPyramidNormalZ = approach_by_increment(dz, o->oTiltingPyramidNormalZ, 0.01f);\n    create_transform_from_normals(*transform, o->oTiltingPyramidNormalX, o->oTiltingPyramidNormalY, o->oTiltingPyramidNormalZ);\n\n    // If Mario is on the platform, adjust his position for the platform tilt.\n    if (marioOnPlatform) {\n        linear_mtxf_mul_vec3f(*transform, posAfterRotation, dist);\n        mx += posAfterRotation[0] - posBeforeRotation[0];\n        my += posAfterRotation[1] - posBeforeRotation[1];\n        mz += posAfterRotation[2] - posBeforeRotation[2];\n        set_mario_pos(mx, my, mz);\n    }\n\n    o->header.gfx.throwMatrix = transform;\n}\n"
  },
  {
    "path": "src/game/behaviors/tower_door.inc.c",
    "content": "// tower_door.inc.c\n\nvoid bhv_tower_door_loop(void) {\n    if (o->oTimer == 0) {\n        o->oMoveAngleYaw -= 0x4000;\n    }\n\n    if (check_mario_attacking(0) != 0) {\n        obj_explode_and_spawn_coins(80.0f, 0);\n        create_sound_spawner(SOUND_GENERAL_WALL_EXPLOSION);\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/tower_platform.inc.c",
    "content": "// tower_platform.inc.c\n\nvoid bhv_wf_solid_tower_platform_loop(void) {\n    if (o->parentObj->oAction == 3) {\n        obj_mark_for_deletion(o);\n    }\n}\n\nvoid bhv_wf_elevator_tower_platform_loop(void) {\n    switch (o->oAction) {\n        case 0:\n            if (gMarioObject->platform == o) {\n                o->oAction++;\n            }\n            break;\n\n        case 1:\n            cur_obj_play_sound_1(SOUND_ENV_ELEVATOR1);\n            if (o->oTimer > 140) {\n                o->oAction++;\n            } else {\n                o->oPosY += 5.0f;\n            }\n            break;\n\n        case 2:\n            if (o->oTimer > 60) {\n                o->oAction++;\n            }\n            break;\n\n        case 3:\n            cur_obj_play_sound_1(SOUND_ENV_ELEVATOR1);\n            if (o->oTimer > 140) {\n                o->oAction = 0;\n            } else {\n                o->oPosY -= 5.0f;\n            }\n            break;\n    }\n\n    if (o->parentObj->oAction == 3) {\n        obj_mark_for_deletion(o);\n    }\n}\n\nvoid bhv_wf_sliding_tower_platform_loop(void) {\n    s32 sp24 = o->oPlatformUnk110 / o->oPlatformUnk10C;\n\n    switch (o->oAction) {\n        case 0:\n            if (o->oTimer > sp24) {\n                o->oAction++;\n            }\n            o->oForwardVel = -o->oPlatformUnk10C;\n            break;\n\n        case 1:\n            if (o->oTimer > sp24) {\n                o->oAction = 0;\n            }\n            o->oForwardVel = o->oPlatformUnk10C;\n            break;\n    }\n\n    cur_obj_compute_vel_xz();\n\n    o->oPosX += o->oVelX;\n    o->oPosZ += o->oVelZ;\n\n    if (o->parentObj->oAction == 3) {\n        obj_mark_for_deletion(o);\n    }\n}\n\nvoid spawn_and_init_wf_platforms(s16 a, const BehaviorScript *bhv) {\n    s16 yaw;\n    struct Object *platform = spawn_object(o, a, bhv);\n\n    yaw = o->oPlatformSpawnerUnkF4 * o->oPlatformSpawnerUnkFC + o->oPlatformSpawnerUnkF8;\n\n    platform->oMoveAngleYaw = yaw;\n    platform->oPosX += o->oPlatformSpawnerUnk100 * sins(yaw);\n    platform->oPosY += 100 * o->oPlatformSpawnerUnkF4;\n    platform->oPosZ += o->oPlatformSpawnerUnk100 * coss(yaw);\n    platform->oPlatformUnk110 = o->oPlatformSpawnerUnk104;\n    platform->oPlatformUnk10C = o->oPlatformSpawnerUnk108;\n\n    o->oPlatformSpawnerUnkF4++;\n}\n\nvoid spawn_wf_platform_group(void) {\n    UNUSED s32 unused = 8;\n\n    o->oPlatformSpawnerUnkF4 = 0;\n    o->oPlatformSpawnerUnkF8 = 0;\n    o->oPlatformSpawnerUnkFC = 0x2000;\n    o->oPlatformSpawnerUnk100 = 704.0f;\n    o->oPlatformSpawnerUnk104 = 380.0f;\n    o->oPlatformSpawnerUnk108 = 3.0f;\n\n    spawn_and_init_wf_platforms(MODEL_WF_TOWER_SQUARE_PLATORM, bhvWFSolidTowerPlatform);\n    spawn_and_init_wf_platforms(MODEL_WF_TOWER_SQUARE_PLATORM, bhvWFSlidingTowerPlatform);\n    spawn_and_init_wf_platforms(MODEL_WF_TOWER_SQUARE_PLATORM, bhvWFSolidTowerPlatform);\n    spawn_and_init_wf_platforms(MODEL_WF_TOWER_SQUARE_PLATORM, bhvWFSlidingTowerPlatform);\n    spawn_and_init_wf_platforms(MODEL_WF_TOWER_SQUARE_PLATORM, bhvWFSolidTowerPlatform);\n    spawn_and_init_wf_platforms(MODEL_WF_TOWER_SQUARE_PLATORM, bhvWFSlidingTowerPlatform);\n    spawn_and_init_wf_platforms(MODEL_WF_TOWER_SQUARE_PLATORM, bhvWFSolidTowerPlatform);\n    spawn_and_init_wf_platforms(MODEL_WF_TOWER_SQUARE_PLATORM_ELEVATOR, bhvWFElevatorTowerPlatform);\n}\n\nvoid bhv_tower_platform_group_loop(void) {\n    f32 marioY = gMarioObject->oPosY;\n\n    o->oDistanceToMario = dist_between_objects(o, gMarioObject);\n\n    switch (o->oAction) {\n        case 0:\n            if (marioY > o->oHomeY - 1000.0f) {\n                o->oAction++;\n            }\n            break;\n\n        case 1:\n            spawn_wf_platform_group();\n            o->oAction++;\n            break;\n\n        case 2:\n            if (marioY < o->oHomeY - 1000.0f) {\n                o->oAction++;\n            }\n            break;\n\n        case 3:\n            o->oAction = 0;\n            break;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/tox_box.inc.c",
    "content": "// tox_box.inc.c\n\n#define FORWARD  TOX_BOX_ACT_ROLL_FORWARD,  TOX_BOX_ACT_ROLL_LAND\n#define BACKWARD TOX_BOX_ACT_ROLL_BACKWARD, TOX_BOX_ACT_ROLL_LAND\n#define RIGHT    TOX_BOX_ACT_ROLL_RIGHT,    TOX_BOX_ACT_ROLL_LAND\n#define LEFT     TOX_BOX_ACT_ROLL_LEFT,     TOX_BOX_ACT_ROLL_LAND\n#define IDLE     TOX_BOX_ACT_IDLE\n#define END      TOX_BOX_ACT_TABLE_END\n\ns8 sToxBoxActionTable1[] = {\n    FORWARD, FORWARD, RIGHT, RIGHT, BACKWARD, BACKWARD, RIGHT, RIGHT, BACKWARD, IDLE,\n\n    FORWARD, FORWARD, FORWARD, IDLE,\n\n    BACKWARD, BACKWARD, LEFT, LEFT, FORWARD, FORWARD, LEFT, LEFT, BACKWARD, BACKWARD, BACKWARD, IDLE,\n\n    FORWARD, END,\n};\n\ns8 sToxBoxActionTable2[] = {\n    FORWARD, FORWARD, LEFT, LEFT, LEFT, IDLE,\n\n    RIGHT, RIGHT, RIGHT, BACKWARD, BACKWARD, RIGHT, BACKWARD, BACKWARD, IDLE,\n\n    FORWARD, FORWARD, LEFT, END,\n};\n\ns8 sToxBoxActionTable3[] = {\n    FORWARD, FORWARD, FORWARD, FORWARD, FORWARD, IDLE,\n\n    BACKWARD, BACKWARD, BACKWARD, BACKWARD, BACKWARD, LEFT, IDLE,\n\n    RIGHT, RIGHT, BACKWARD, IDLE,\n\n    FORWARD, LEFT, END,\n};\n\n#undef FORWARD\n#undef BACKWARD\n#undef RIGHT\n#undef LEFT\n#undef IDLE\n#undef END\n\n/*\n * (number = table, v = direction, * = idle)\n *\n *     +---+           +---+\n *     |1 *|           |1 *|\n *     +---+---+---+   +---+           +---+               +---+\n *     | 1 | 1 | 1 |   |1 v|           |2 *|               |   |\n *     +---+---+---+   +---+---+---+---+---+       +---+---+---+\n *     | 1 |   | 1 |   | 1 |   |   |   | 2 |       |   |   |   |\n * +---+---+   +---+---+---+---+---+---+---+---+---+---+---+---+\n * |   |1 *|   | 1 | 1 | 1 |           | 2 |2 v|   |   |   |   |\n * +---+---+   +---+---+---+           +---+---+---+---+   +---+\n *                                         | 2 |\n *                                         +---+---+---+---+---+---+---+   +---+\n *                                         | 2 | 2 | 2 |2 *|   |   |3 *|   |   |\n *                                         +---+---+---+---+---+---+---+---+---+\n *                                                                 | 3 |3 v|3 *|\n *                                                                 +---+---+---+\n *                                                                     | 3 |\n *                                                                     +---+\n *                                                                     | 3 |\n *                                                                     +---+\n *                                                                     | 3 |\n *                                                                     +---+\n *                                                                     | 3 |\n *                                                                     +---+\n *                                                                     |3 *|\n *                                                                     +---+\n */\ns8 *sToxBoxActionTables[] = {\n    /* TOX_BOX_BP_MOVEMENT_PATTERN_1 */ sToxBoxActionTable1,\n    /* TOX_BOX_BP_MOVEMENT_PATTERN_2 */ sToxBoxActionTable2,\n    /* TOX_BOX_BP_MOVEMENT_PATTERN_3 */ sToxBoxActionTable3,\n};\n\nvoid tox_box_shake_screen(void) {\n    if (o->oDistanceToMario < 3000.0f) {\n        cur_obj_shake_screen(SHAKE_POS_SMALL);\n    }\n}\n\nvoid tox_box_move(f32 forwardVel, f32 upVel, s16 deltaPitch, s16 deltaRoll) {\n    o->oPosY = 99.41124 * sins((f32)(o->oTimer + 1) / 8 * 0x8000) + o->oHomeY + 3.0f;\n    o->oForwardVel = forwardVel;\n    o->oUpVel = upVel;\n    o->oFaceAnglePitch += deltaPitch;\n\n    if ((s16) o->oFaceAnglePitch < 0) {\n        deltaRoll = -deltaRoll;\n    }\n\n    o->oFaceAngleRoll += deltaRoll;\n    cur_obj_set_pos_via_transform();\n\n    if (o->oTimer == 7) {\n        o->oAction = cur_obj_progress_action_table();\n        cur_obj_play_sound_2(SOUND_GENERAL_UNK46);\n    }\n}\n\nvoid tox_box_act_roll_forward(void) {\n    tox_box_move(64.0f, 0.0f, 0x800, 0);\n}\n\nvoid tox_box_act_roll_backward(void) {\n    tox_box_move(-64.0f, 0.0f, -0x800, 0);\n}\n\nvoid tox_box_act_roll_right(void) {\n    tox_box_move(0.0f, -64.0f, 0, 0x800);\n}\n\nvoid tox_box_act_roll_left(void) {\n    tox_box_move(0.0f, 64.0f, 0, -0x800);\n}\n\nvoid tox_box_act_roll_land(void) {\n    o->oForwardVel = 0.0f;\n\n    if (o->oTimer == 0) {\n        tox_box_shake_screen();\n    }\n\n    o->oPosY = o->oHomeY + 3.0f;\n\n    if (o->oTimer == 20) {\n        o->oAction = cur_obj_progress_action_table();\n    }\n}\n\nvoid tox_box_act_idle(void) {\n    if (o->oTimer == 20) {\n        o->oAction = cur_obj_progress_action_table();\n    }\n}\n\nvoid tox_box_act_unused_idle(void) {\n    if (o->oTimer == 20) {\n        o->oAction = cur_obj_progress_action_table();\n    }\n}\n\nvoid tox_box_act_init(void) {\n    s8 *actionTable = sToxBoxActionTables[o->oBhvParams2ndByte];\n    o->oAction = cur_obj_set_action_table(actionTable);\n}\n\nvoid (*sToxBoxActions[])(void) = {\n    tox_box_act_init,\n    tox_box_act_roll_land,\n    tox_box_act_idle,\n    tox_box_act_unused_idle,\n    tox_box_act_roll_forward,\n    tox_box_act_roll_backward,\n    tox_box_act_roll_right,\n    tox_box_act_roll_left,\n};\n\nvoid bhv_tox_box_loop(void) {\n    cur_obj_call_action_function(sToxBoxActions);\n    load_object_collision_model();\n}\n"
  },
  {
    "path": "src/game/behaviors/treasure_chest.inc.c",
    "content": "// treasure_chest.inc.c\n\n/**\n * Hitbox for treasure chest bottom.\n */\nstatic struct ObjectHitbox sTreasureChestBottomHitbox = {\n    /* interactType:      */ INTERACT_SHOCK,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 1,\n    /* health:            */ 0,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 300,\n    /* height:            */ 300,\n    /* hurtboxRadius:     */ 310,\n    /* hurtboxHeight:     */ 310,\n};\n\nvoid bhv_treasure_chest_top_loop(void) {\n    struct Object *sp34 = o->parentObj->parentObj;\n\n    switch (o->oAction) {\n        case 0:\n            if (o->parentObj->oAction == 1) {\n                o->oAction = 1;\n            }\n            break;\n\n        case 1:\n            if (o->oTimer == 0) {\n                if (sp34->oTreasureChestUnkFC == 0) {\n                    spawn_object_relative(0, 0, -80, 120, o, MODEL_BUBBLE, bhvWaterAirBubble);\n                    play_sound(SOUND_GENERAL_CLAM_SHELL1, o->header.gfx.cameraToObject);\n                } else {\n                    play_sound(SOUND_GENERAL_OPEN_CHEST, o->header.gfx.cameraToObject);\n                }\n            }\n\n            o->oFaceAnglePitch -= 0x200;\n            if (o->oFaceAnglePitch < -0x4000) {\n                o->oFaceAnglePitch = -0x4000;\n                o->oAction++;\n                if (o->parentObj->oBhvParams2ndByte != 4) {\n                    spawn_orange_number(o->parentObj->oBhvParams2ndByte, 0, -40, 0);\n                }\n            }\n            break;\n\n        case 2:\n            if (o->parentObj->oAction == 0) {\n                o->oAction = 3;\n            }\n            break;\n\n        case 3:\n            o->oFaceAnglePitch += 0x800;\n            if (o->oFaceAnglePitch > 0) {\n                o->oFaceAnglePitch = 0;\n                o->oAction = 0;\n            }\n    }\n}\n\nvoid bhv_treasure_chest_bottom_init(void) {\n    spawn_object_relative(0, 0, 102, -77, o, MODEL_TREASURE_CHEST_LID, bhvTreasureChestTop);\n    obj_set_hitbox(o, &sTreasureChestBottomHitbox);\n}\n\nvoid bhv_treasure_chest_bottom_loop(void) {\n    switch (o->oAction) {\n        case 0:\n            if (obj_check_if_facing_toward_angle(o->oMoveAngleYaw, gMarioObject->header.gfx.angle[1] + 0x8000, 0x3000)\n                && is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 150)\n                && !o->parentObj->oTreasureChestUnkF8) {\n                if (o->parentObj->oTreasureChestUnkF4 == o->oBhvParams2ndByte) {\n                    play_sound(SOUND_GENERAL2_RIGHT_ANSWER, gGlobalSoundSource);\n                    o->parentObj->oTreasureChestUnkF4++;\n                    o->oAction = 1;\n                } else {\n                    o->parentObj->oTreasureChestUnkF4 = 1;\n                    o->parentObj->oTreasureChestUnkF8 = TRUE;\n                    o->oAction = 2;\n                    cur_obj_become_tangible();\n                    play_sound(SOUND_MENU_CAMERA_BUZZ, gGlobalSoundSource);\n                }\n            }\n            break;\n\n        case 1:\n            if (o->parentObj->oTreasureChestUnkF8 == TRUE) {\n                o->oAction = 0;\n            }\n            break;\n\n        case 2:\n            cur_obj_become_intangible();\n            if (!is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 500)) {\n                o->parentObj->oTreasureChestUnkF8 = FALSE;\n                o->oAction = 0;\n            }\n    }\n\n    cur_obj_push_mario_away_from_cylinder(150.0f, 150.0f);\n    o->oInteractStatus = 0;\n}\n\nvoid spawn_treasure_chest(s8 sp3B, s32 x, s32 y, s32 z, s16 yaw) {\n    struct Object *sp34 = spawn_object_abs_with_rot(o, 0, MODEL_TREASURE_CHEST_BASE,\n                                                    bhvTreasureChestBottom, x, y, z, 0, yaw, 0);\n    sp34->oBhvParams2ndByte = sp3B;\n}\n\nvoid bhv_treasure_chest_ship_init(void) {\n    spawn_treasure_chest(1, 400, -350, -2700, 0);\n    spawn_treasure_chest(2, 650, -350, -940, -0x6001);\n    spawn_treasure_chest(3, -550, -350, -770, 0x5FFF);\n    spawn_treasure_chest(4, 100, -350, -1700, 0);\n    o->oTreasureChestUnkF4 = 1;\n    o->oTreasureChestUnkFC = 0;\n}\n\nvoid bhv_treasure_chest_ship_loop(void) {\n    switch (o->oAction) {\n        case 0:\n            if (o->oTreasureChestUnkF4 == 5) {\n                play_puzzle_jingle();\n                fade_volume_scale(0, 127, 1000);\n                o->oAction = 1;\n            }\n            break;\n\n        case 1:\n            if (gEnvironmentRegions != NULL) {\n                gEnvironmentRegions[6] -= 5;\n                play_sound(SOUND_ENV_WATER_DRAIN, gGlobalSoundSource);\n                set_environmental_camera_shake(SHAKE_ENV_JRB_SHIP_DRAIN);\n                if (gEnvironmentRegions[6] < -335) {\n                    gEnvironmentRegions[6] = -335;\n                    o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n                }\n#if ENABLE_RUMBLE\n                reset_rumble_timers_2(2);\n#endif\n            }\n            break;\n    }\n}\n\nvoid bhv_treasure_chest_jrb_init(void) {\n    spawn_treasure_chest(1, -1700, -2812, -1150, 0x7FFF);\n    spawn_treasure_chest(2, -1150, -2812, -1550, 0x7FFF);\n    spawn_treasure_chest(3, -2400, -2812, -1800, 0x7FFF);\n    spawn_treasure_chest(4, -1800, -2812, -2100, 0x7FFF);\n    o->oTreasureChestUnkF4 = 1;\n    o->oTreasureChestUnkFC = 1;\n}\n\nvoid bhv_treasure_chest_jrb_loop(void) {\n    switch (o->oAction) {\n        case 0:\n            if (o->oTreasureChestUnkF4 == 5) {\n                play_puzzle_jingle();\n                o->oAction = 1;\n            }\n            break;\n\n        case 1:\n            if (o->oTimer == 60) {\n                spawn_mist_particles();\n                spawn_default_star(-1800.0f, -2500.0f, -1700.0f);\n                o->oAction = 2;\n            }\n            break;\n\n        case 2:\n            break;\n    }\n}\n\nvoid bhv_treasure_chest_ddd_init(void) {\n    spawn_treasure_chest(1, -4500, -5119, 1300, -0x6001);\n    spawn_treasure_chest(2, -1800, -5119, 1050, 0x1FFF);\n    spawn_treasure_chest(3, -4500, -5119, -1100, 9102);\n    spawn_treasure_chest(4, -2400, -4607, 125, 16019);\n\n    o->oTreasureChestUnkF4 = 1;\n    o->oTreasureChestUnkFC = 0;\n}\n\nvoid bhv_treasure_chest_ddd_loop(void) {\n    switch (o->oAction) {\n        case 0:\n            if (o->oTreasureChestUnkF4 == 5) {\n                play_puzzle_jingle();\n                o->oAction = 1;\n            }\n            break;\n\n        case 1:\n            if (o->oTimer == 60) {\n                spawn_mist_particles();\n                spawn_default_star(-1900.0f, -4000.0f, -1400.0f);\n                o->oAction = 2;\n            }\n            break;\n\n        case 2:\n            break;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/tree_particles.inc.c",
    "content": "// tree_particles.inc.c\n\nvoid bhv_tree_snow_or_leaf_loop(void) {\n    cur_obj_update_floor_height();\n\n    if (o->oTimer == 0) {\n        o->oAngleVelPitch = (random_float() - 0.5) * 0x1000;\n        o->oAngleVelRoll = (random_float() - 0.5) * 0x1000;\n        o->oTreeSnowOrLeafUnkF8 = 4;\n        o->oTreeSnowOrLeafUnkFC = random_float() * 0x400 + 0x600;\n    }\n\n    if (o->oPosY < o->oFloorHeight) {\n        obj_mark_for_deletion(o);\n    }\n    if (o->oFloorHeight < FLOOR_LOWER_LIMIT) {\n        obj_mark_for_deletion(o);\n    }\n    if (o->oTimer > 100) {\n        obj_mark_for_deletion(o);\n    }\n    if (gPrevFrameObjectCount > (OBJECT_POOL_CAPACITY - 28)) {\n        obj_mark_for_deletion(o);\n    }\n\n    o->oFaceAnglePitch += o->oAngleVelPitch;\n    o->oFaceAngleRoll += o->oAngleVelRoll;\n    o->oVelY += -3.0f;\n\n    if (o->oVelY < -8.0f) {\n        o->oVelY = -8.0f;\n    }\n\n    if (o->oForwardVel > 0) {\n        o->oForwardVel -= 0.3;\n    } else {\n        o->oForwardVel = 0;\n    }\n\n    o->oPosX += sins(o->oMoveAngleYaw) * sins(o->oTreeSnowOrLeafUnkF4) * o->oTreeSnowOrLeafUnkF8;\n    o->oPosZ += coss(o->oMoveAngleYaw) * sins(o->oTreeSnowOrLeafUnkF4) * o->oTreeSnowOrLeafUnkF8;\n    o->oTreeSnowOrLeafUnkF4 += o->oTreeSnowOrLeafUnkFC;\n    o->oPosY += o->oVelY;\n}\n\nvoid bhv_snow_leaf_particle_spawn_init(void) {\n    struct Object *obj; // Either snow or leaf\n    UNUSED u8 filler1[4];\n    s32 isSnow;\n    f32 scale;\n    UNUSED u8 filler2[4];\n\n    gMarioObject->oActiveParticleFlags &= ~ACTIVE_PARTICLE_LEAF;\n\n    if (gCurrLevelNum == LEVEL_CCM || gCurrLevelNum == LEVEL_SL) {\n        isSnow = TRUE;\n    } else {\n        isSnow = FALSE;\n    }\n\n    if (isSnow) {\n        if (random_float() < 0.5) {\n            obj = spawn_object(o, MODEL_WHITE_PARTICLE_DL, bhvTreeSnow);\n            scale = random_float();\n            obj_scale_xyz(obj, scale, scale, scale);\n            obj->oMoveAngleYaw = random_u16();\n            obj->oForwardVel = random_float() * 5.0f;\n            obj->oVelY = random_float() * 15.0f;\n        }\n    } else {\n        if (random_float() < 0.3) {\n            obj = spawn_object(o, MODEL_LEAVES, bhvTreeLeaf);\n            scale = random_float() * 3.0f;\n            obj_scale_xyz(obj, scale, scale, scale);\n            obj->oMoveAngleYaw = random_u16();\n            obj->oForwardVel = random_float() * 5.0f + 5.0f;\n            obj->oVelY = random_float() * 15.0f;\n            obj->oFaceAnglePitch = random_u16();\n            obj->oFaceAngleRoll = random_u16();\n            obj->oFaceAngleYaw = random_u16();\n        }\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/triplet_butterfly.inc.c",
    "content": "// triplet_butterfly.inc.c\n\nstatic struct ObjectHitbox sTripletButterflyExplodeHitbox = {\n    /* interactType:      */ INTERACT_MR_BLIZZARD,\n    /* downOffset:        */ 50,\n    /* damageOrCoinValue: */ 2,\n    /* health:            */ 1,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 100,\n    /* height:            */ 50,\n    /* hurtboxRadius:     */ 100,\n    /* hurtboxHeight:     */ 50,\n};\n\nstruct TripletButterflyActivationData {\n    s32 model;\n    const BehaviorScript *behavior;\n    f32 scale;\n};\n\nstatic struct TripletButterflyActivationData sTripletButterflyActivationData[] = {\n    /* TRIPLET_BUTTERFLY_TYPE_EXPLODES  */ { MODEL_BOWLING_BALL, NULL,          0.5f },\n    /* TRIPLET_BUTTERFLY_TYPE_SPAWN_1UP */ { MODEL_1UP,          bhv1UpWalking, 1.0f },\n};\n\nstatic void triplet_butterfly_act_init(void) {\n    s32 butterflySpawnType = o->oBhvParams2ndByte & TRIPLET_BUTTERFLY_BP_SPAWN_TYPE_MASK;\n    s32 i;\n\n    if (butterflySpawnType != TRIPLET_BUTTERFLY_BP_SPAWN_TYPE_SPAWNER || o->oDistanceToMario < 200.0f) {\n        if (butterflySpawnType == TRIPLET_BUTTERFLY_BP_SPAWN_TYPE_SPAWNER) {\n            for (i = 1; i <= 2; i++) {\n                spawn_object_relative(i, 0, 0, 0, o, MODEL_BUTTERFLY, bhvTripletButterfly);\n            }\n\n            o->oTripletButterflySelectedButterfly = random_u16() % 3;\n        }\n\n        //! TODO: Describe this glitch\n        if (o->parentObj->oTripletButterflySelectedButterfly == o->oBhvParams2ndByte) {\n            o->oTripletButterflyType = TRIPLET_BUTTERFLY_TYPE_SPAWN_1UP;\n        } else if (o->parentObj->oBhvParams2ndByte & TRIPLET_BUTTERFLY_BP_NO_BOMBS) {\n            o->oTripletButterflyType = TRIPLET_BUTTERFLY_TYPE_NORMAL;\n        }\n        // Default butterfly type is TRIPLET_BUTTERFLY_TYPE_EXPLODES\n\n        o->oAction = TRIPLET_BUTTERFLY_ACT_WANDER;\n\n        o->oTripletButterflyBaseYaw = o->oBhvParams2ndByte * (0x10000 / 3);\n        o->oMoveAngleYaw = (s32)(o->oTripletButterflyBaseYaw + random_linear_offset(0, 0x5555));\n        o->oTripletButterflySpeed = random_linear_offset(15, 15);\n\n        cur_obj_unhide();\n    }\n}\n\nstatic void triplet_butterfly_act_wander(void) {\n    if (o->oDistanceToMario > 1500.0f) {\n        obj_mark_for_deletion(o);\n    } else {\n        approach_f32_ptr(&o->oTripletButterflySpeed, 8.0f, 0.5f);\n        if (o->oTimer < 60) {\n            o->oTripletButterflyTargetYaw = cur_obj_angle_to_home();\n        } else {\n            o->oTripletButterflyTargetYaw = (s32) o->oTripletButterflyBaseYaw;\n\n            if (o->oTimer > 110 && o->oDistanceToMario < 200.0f\n                && o->oTripletButterflyType > TRIPLET_BUTTERFLY_TYPE_NORMAL) {\n                o->oAction = TRIPLET_BUTTERFLY_ACT_ACTIVATE;\n                o->oTripletButterflySpeed = 0.0f;\n            }\n        }\n\n        if (o->oHomeY < o->oFloorHeight) {\n            o->oHomeY = o->oFloorHeight;\n        }\n\n        if (o->oPosY < o->oHomeY + random_linear_offset(50, 50)) {\n            o->oTripletButterflyTargetPitch = -0x2000;\n        } else {\n            o->oTripletButterflyTargetPitch = 0x2000;\n        }\n\n        obj_move_pitch_approach(o->oTripletButterflyTargetPitch, 400);\n        cur_obj_rotate_yaw_toward(o->oTripletButterflyTargetYaw, random_linear_offset(400, 800));\n    }\n}\n\nstatic void triplet_butterfly_act_activate(void) {\n    if (o->oTimer > 20) {\n        if (o->oTripletButterflyModel == 0) {\n            spawn_object_relative_with_scale(0, 0, -40, 0, 1.5f, o, MODEL_SMOKE, bhvWhitePuffSmoke2);\n            o->oTripletButterflyModel = sTripletButterflyActivationData[o->oTripletButterflyType].model;\n            cur_obj_set_model(o->oTripletButterflyModel);\n            obj_set_billboard(o);\n            o->oTripletButterflyScale = 0.0f;\n            o->oHomeY = o->oPosY;\n        } else if (o->oTripletButterflyScale\n                   >= sTripletButterflyActivationData[o->oTripletButterflyType].scale) {\n            if (o->oTripletButterflyType != TRIPLET_BUTTERFLY_TYPE_EXPLODES) {\n                spawn_object(o, o->oTripletButterflyModel,\n                             sTripletButterflyActivationData[o->oTripletButterflyType].behavior);\n                obj_mark_for_deletion(o);\n            } else {\n                o->oAction = TRIPLET_BUTTERFLY_ACT_EXPLODE;\n                o->oWallHitboxRadius = 100.0f;\n            }\n        }\n\n        o->oTripletButterflyScale +=\n            sTripletButterflyActivationData[o->oTripletButterflyType].scale / 30.0f;\n        if (o->oTripletButterflyType == TRIPLET_BUTTERFLY_TYPE_EXPLODES) {\n            o->oGraphYOffset = 250.0f * o->oTripletButterflyScale;\n            o->oPosY = o->oHomeY - o->oGraphYOffset;\n        }\n    }\n}\n\nstatic void triplet_butterfly_act_explode(void) {\n    obj_check_attacks(&sTripletButterflyExplodeHitbox, -1);\n\n    if (o->oAction == -1 || (o->oMoveFlags & OBJ_MOVE_HIT_WALL) || o->oTimer >= 158) {\n        o->oPosY += o->oGraphYOffset;\n        spawn_object(o, MODEL_EXPLOSION, bhvExplosion);\n        obj_mark_for_deletion(o);\n    } else {\n        if (o->oTimer > 120) {\n            f32 scaleIncrease = 0.04f * coss(o->oTripletButterflyScalePhase);\n            if (scaleIncrease > 0.0f) {\n                scaleIncrease *= 4.5f;\n                o->oTripletButterflyScalePhase += 10000;\n            } else {\n                o->oTripletButterflyScalePhase += 4000;\n            }\n\n            o->oTripletButterflyScale += scaleIncrease;\n        }\n\n        approach_f32_ptr(&o->oTripletButterflySpeed, 20.0f, 1.0f);\n        cur_obj_rotate_yaw_toward(o->oAngleToMario, 800);\n        obj_turn_pitch_toward_mario(-100.0f, 800);\n    }\n}\n\nvoid bhv_triplet_butterfly_update(void) {\n    cur_obj_update_floor_and_walls();\n\n    switch (o->oAction) {\n        case TRIPLET_BUTTERFLY_ACT_INIT:\n            triplet_butterfly_act_init();\n            break;\n        case TRIPLET_BUTTERFLY_ACT_WANDER:\n            triplet_butterfly_act_wander();\n            break;\n        case TRIPLET_BUTTERFLY_ACT_ACTIVATE:\n            triplet_butterfly_act_activate();\n            break;\n        case TRIPLET_BUTTERFLY_ACT_EXPLODE:\n            triplet_butterfly_act_explode();\n            break;\n    }\n\n    cur_obj_scale(o->oTripletButterflyScale);\n    obj_compute_vel_from_move_pitch(o->oTripletButterflySpeed);\n    cur_obj_move_standard(78);\n}\n"
  },
  {
    "path": "src/game/behaviors/ttc_2d_rotator.inc.c",
    "content": "\n/**\n * Behavior for bhvTTC2DRotator.\n * This includes the hand (in TTC, not the clock in the castle), as well as the\n * purely visual 2D cogs in TTC.\n */\n\n/**\n * Speeds for the hand and the 2D cog, respectively. Negative because clockwise.\n */\nstatic s16 sTTC2DRotatorSpeeds[] = {\n    -0x444,\n    -0xCCC,\n};\n\n/**\n * The time between each increment to target yaw. On random setting, this is\n * only used for the first turn, after which it is chosen randomly.\n * These values are for the hand and the 2D cog, respectively.\n */\nstatic s16 sTTC2DRotatorTimeBetweenTurns[][4] = {\n    {\n        /* TTC_SPEED_SLOW    */ 40,\n        /* TTC_SPEED_FAST    */ 10,\n        /* TTC_SPEED_RANDOM  */ 10,\n        /* TTC_SPEED_STOPPED */ 0,\n    },\n    {\n        /* TTC_SPEED_SLOW    */ 20,\n        /* TTC_SPEED_FAST    */ 5,\n        /* TTC_SPEED_RANDOM  */ 5,\n        /* TTC_SPEED_STOPPED */ 0,\n    },\n};\n\n/**\n * Init function for bhvTTC2DRotator.\n */\nvoid bhv_ttc_2d_rotator_init(void) {\n    o->oTTC2DRotatorMinTimeUntilNextTurn =\n        sTTC2DRotatorTimeBetweenTurns[o->oBhvParams2ndByte][gTTCSpeedSetting];\n    o->oTTC2DRotatorIncrement = o->oTTC2DRotatorSpeed = sTTC2DRotatorSpeeds[o->oBhvParams2ndByte];\n}\n\n/**\n * Update function for bhvTTC2DRotator.\n * Rotate to target yaw, and make sure we've waited long enough since the last\n * turn, then increment the target yaw and possibly change direction.\n */\nvoid bhv_ttc_2d_rotator_update(void) {\n    s32 startYaw = o->oFaceAngleYaw;\n\n    if (o->oTTC2DRotatorRandomDirTimer != 0) {\n        o->oTTC2DRotatorRandomDirTimer--;\n    }\n\n    // Wait until rotated to target yaw\n    if (o->oTTC2DRotatorMinTimeUntilNextTurn != 0\n        && obj_face_yaw_approach(o->oTTC2DRotatorTargetYaw, 0xC8)) {\n        // and until MinTimeUntilNextTurn has passed.\n        if (o->oTimer > o->oTTC2DRotatorMinTimeUntilNextTurn) {\n            // Increment target yaw\n            o->oTTC2DRotatorTargetYaw += o->oTTC2DRotatorIncrement;\n            o->oTimer = 0;\n\n            if (gTTCSpeedSetting == TTC_SPEED_RANDOM) {\n                // If ready for a change in direction, then pick a new\n                // direction\n                if (o->oTTC2DRotatorRandomDirTimer == 0) {\n                    if (random_u16() & 0x03) {\n                        o->oTTC2DRotatorIncrement = o->oTTC2DRotatorSpeed;\n                        o->oTTC2DRotatorRandomDirTimer = random_mod_offset(90, 60, 4);\n                    } else {\n                        o->oTTC2DRotatorIncrement = -o->oTTC2DRotatorSpeed;\n                        o->oTTC2DRotatorRandomDirTimer = random_mod_offset(30, 30, 3);\n                    }\n                }\n\n                o->oTTC2DRotatorMinTimeUntilNextTurn = random_mod_offset(10, 20, 3);\n            }\n        }\n    }\n\n    o->oAngleVelYaw = o->oFaceAngleYaw - startYaw;\n    if (o->oBhvParams2ndByte == TTC_2D_ROTATOR_BP_HAND) {\n        load_object_collision_model();\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/ttc_cog.inc.c",
    "content": "\n/**\n * Behavior for bhvTTCCog. This includes both the hexagonal cogs and the\n * triangular prisms that rotate around the y axis.\n */\n\n/**\n * Collision model for hexagon and triangle, respectively.\n */\nstatic Collision const *sTTCCogCollisionModels[] = {\n    ttc_seg7_collision_07015584,\n    ttc_seg7_collision_07015650,\n};\n\n/**\n * The direction that the cog moves on non-random settings.\n */\nstatic s8 sTTCCogDirections[] = { 1, -1 };\n\n/**\n * The speed that the cog moves on the slow and fast settings, respectively.\n */\nstatic s16 sTTCCogNormalSpeeds[] = { 200, 400 };\n\n/**\n * Init function for bhvTTCCog.\n */\nvoid bhv_ttc_cog_init(void) {\n    o->collisionData = segmented_to_virtual(\n        sTTCCogCollisionModels[(o->oBhvParams2ndByte & TTC_COG_BP_SHAPE_MASK) >> 1]);\n    o->oTTCCogDir = sTTCCogDirections[o->oBhvParams2ndByte & TTC_COG_BP_DIR_MASK];\n}\n\n/**\n * Update function for bhvTTCCog.\n */\nvoid bhv_ttc_cog_update(void) {\n    switch (gTTCSpeedSetting) {\n        case TTC_SPEED_SLOW:\n        case TTC_SPEED_FAST:\n            o->oTTCCogSpeed = sTTCCogNormalSpeeds[gTTCSpeedSetting];\n            break;\n\n        case TTC_SPEED_RANDOM:\n            if (approach_f32_ptr(&o->oTTCCogSpeed, o->oTTCCogTargetVel, 50.0f)) {\n                o->oTTCCogTargetVel = 200.0f * (random_u16() % 7) * random_sign();\n            }\n\n        case TTC_SPEED_STOPPED:\n            break;\n    }\n\n    o->oAngleVelYaw = (s32)(o->oTTCCogSpeed * o->oTTCCogDir);\n    o->oFaceAngleYaw += o->oAngleVelYaw;\n}\n"
  },
  {
    "path": "src/game/behaviors/ttc_elevator.inc.c",
    "content": "\n/**\n * Behavior for bhvTTCElevator.\n */\n\n/**\n * The speed on each setting.\n */\nstatic s8 sTTCElevatorSpeeds[] = {\n    /* TTC_SPEED_SLOW    */ 6,\n    /* TTC_SPEED_FAST    */ 10,\n    /* TTC_SPEED_RANDOM  */ 6,\n    /* TTC_SPEED_STOPPED */ 0,\n};\n\n/**\n * Init function for bhvTTCElevator.\n */\nvoid bhv_ttc_elevator_init(void) {\n    // If bhvParam is nonzero, then move 100 * bhvParam units. Otherwise default\n    // to 500\n    f32 peakOffset =\n        ((o->oBhvParams >> 16) & 0xFFFF) ? 100.0f * ((o->oBhvParams >> 16) & 0xFFFF) : 500.0f;\n\n    o->oTTCElevatorPeakY = o->oPosY + peakOffset;\n}\n\n/**\n * Update function for bhvTTCElevator.\n */\nvoid bhv_ttc_elevator_update(void) {\n    o->oVelY = sTTCElevatorSpeeds[gTTCSpeedSetting] * o->oTTCElevatorDir;\n\n    if (gTTCSpeedSetting == TTC_SPEED_RANDOM) {\n        // Occasionally stop for 5 frames then change direction\n        if (o->oTimer > o->oTTCElevatorMoveTime) {\n            o->oTTCElevatorDir = random_sign();\n            o->oTTCElevatorMoveTime = random_mod_offset(30, 30, 6);\n            o->oTimer = 0;\n        } else if (o->oTimer < 5) {\n            o->oVelY = 0.0f;\n        }\n    }\n\n    // This is basically equivalent to posY += velY\n    cur_obj_move_using_fvel_and_gravity();\n\n    // Flip directions if the elevator tries to run away\n    if (clamp_f32(&o->oPosY, o->oHomeY, o->oTTCElevatorPeakY)) {\n        o->oTTCElevatorDir = -o->oTTCElevatorDir;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/ttc_moving_bar.inc.c",
    "content": "\n/**\n * Behavior for bhvTTCMovingBar.\n */\n\n/**\n * The delay before each cycle on each setting. On random setting, this is\n * overwritten with one of the below delays after the first cycle.\n */\nstatic s16 sTTCMovingBarDelays[] = {\n    /* TTC_SPEED_SLOW    */ 55,\n    /* TTC_SPEED_FAST    */ 30,\n    /* TTC_SPEED_RANDOM  */ 55,\n    /* TTC_SPEED_STOPPED */ 0,\n};\n\n/**\n * The possible delays before each cycle while on random setting.\n */\nstatic s8 sTTCMovingBarRandomDelays[] = { 1, 12, 55, 100 };\n\n/**\n * Init function for bhvTTCMovingBar.\n */\nvoid bhv_ttc_moving_bar_init(void) {\n    // If on still setting, then stick out\n    if ((o->oTTCMovingBarDelay = sTTCMovingBarDelays[gTTCSpeedSetting]) == 0) {\n        o->oTTCMovingBarOffset = 250.0f;\n    }\n\n    // This causes the first cycle to start at different times for different\n    // bars\n    o->oTTCMovingBarStoppedTimer = 10 * o->oBhvParams2ndByte;\n\n    o->oMoveAngleYaw = 0x4000 - o->oMoveAngleYaw;\n}\n\n/**\n * Wait a delay if necessary, then begin pulling back.\n */\nstatic void ttc_moving_bar_act_wait(void) {\n    if (o->oTTCMovingBarDelay != 0 && o->oTimer > o->oTTCMovingBarDelay) {\n        // This is zero except on the first cycle, and is used to desync the\n        // bars from each other at the very beginning\n        if (o->oTTCMovingBarStoppedTimer != 0) {\n            o->oTTCMovingBarStoppedTimer--;\n        } else {\n            if (gTTCSpeedSetting == TTC_SPEED_RANDOM) {\n                // Set the delay for the next cycle\n                o->oTTCMovingBarDelay = sTTCMovingBarRandomDelays[random_u16() & 0x03];\n\n                // With 50% probability, pause after pulling back\n                if (random_u16() % 2 == 0) {\n                    o->oTTCMovingBarStoppedTimer = random_linear_offset(20, 100);\n                }\n            }\n\n            // Begin pulling back\n            o->oAction = TTC_MOVING_BAR_ACT_PULL_BACK;\n            o->oTTCMovingBarSpeed = -8.0f;\n        }\n    }\n}\n\n/**\n * Pull back, possibly stop for a bit, then begin extending.\n */\nstatic void ttc_moving_bar_act_pull_back(void) {\n    // Started with -8 speed, accelerate back to > 0\n    if ((o->oTTCMovingBarSpeed += 0.73f) > 0.0f) {\n        // Possibly pause after pulling back\n        if (o->oTTCMovingBarStoppedTimer != 0) {\n            o->oTTCMovingBarStoppedTimer--;\n            o->oTTCMovingBarSpeed = 0.0f;\n        } else {\n            // Begin extending\n            o->oAction = TTC_MOVING_BAR_ACT_EXTEND;\n            o->oTTCMovingBarSpeed = 29.0f;\n        }\n    }\n}\n\n/**\n * Reset and enter the wait action.\n */\nstatic void ttc_moving_bar_reset(void) {\n    o->oTTCMovingBarOffset = o->oTTCMovingBarSpeed = 0.0f;\n    o->oAction = TTC_MOVING_BAR_ACT_WAIT;\n}\n\n/**\n * With 25% probability on random setting, stop at 0 and reset.\n * Otherwise, launch outward, oscillating and slowing down around 250, then\n * begin retracting.\n */\nstatic void ttc_moving_bar_act_extend(void) {\n    // If we passed the 250 threshold and we have decelerated enough\n    if ((o->oTTCMovingBarOffset == 250.0f\n         || (250.0f - o->oTTCMovingBarOffset) * (250.0f - o->oTTCMovingBarStartOffset) < 0.0f)\n        && o->oTTCMovingBarSpeed > -8.0f && o->oTTCMovingBarSpeed < 8.0f) {\n        // Begin retracting\n        o->oAction = TTC_MOVING_BAR_ACT_RETRACT;\n        o->oTTCMovingBarSpeed = 0.0f;\n    } else {\n        f32 accel;\n\n        // Accelerate before reaching 250, and decelerate after reaching it\n        if (o->oTTCMovingBarOffset < 250.0f) {\n            accel = 6.4f;\n        } else {\n            accel = -6.4f;\n        }\n\n        // Strengthen deceleration\n        if (o->oTTCMovingBarSpeed * accel < 0.0f) {\n            accel *= 2.35f;\n        }\n\n        o->oTTCMovingBarSpeed += accel;\n\n        // When we pass neutral on random setting, then stop immediately with\n        // 25% probability (fake out)\n        if (gTTCSpeedSetting == TTC_SPEED_RANDOM\n            && o->oTTCMovingBarOffset * o->oTTCMovingBarStartOffset < 0.0f && random_u16() % 4 == 0) {\n            ttc_moving_bar_reset();\n        }\n    }\n}\n\n/**\n * Wait a second, then retract back into the wall.\n */\nstatic void ttc_moving_bar_act_retract(void) {\n    // Wait a second\n    if (o->oTimer > 30) {\n        // Retract\n        o->oTTCMovingBarSpeed = -5.0f;\n        if (o->oTTCMovingBarOffset < 0.0f) {\n            ttc_moving_bar_reset();\n        }\n    }\n}\n\n/**\n * Update function for bhvTTCMovingBar.\n */\nvoid bhv_ttc_moving_bar_update(void) {\n    o->oTTCMovingBarStartOffset = o->oTTCMovingBarOffset;\n    obj_perform_position_op(POS_OP_SAVE_POSITION);\n\n    o->oTTCMovingBarOffset += o->oTTCMovingBarSpeed;\n\n    switch (o->oAction) {\n        case TTC_MOVING_BAR_ACT_WAIT:\n            ttc_moving_bar_act_wait();\n            break;\n        case TTC_MOVING_BAR_ACT_PULL_BACK:\n            ttc_moving_bar_act_pull_back();\n            break;\n        case TTC_MOVING_BAR_ACT_EXTEND:\n            ttc_moving_bar_act_extend();\n            break;\n        case TTC_MOVING_BAR_ACT_RETRACT:\n            ttc_moving_bar_act_retract();\n            break;\n    }\n\n    obj_set_dist_from_home(o->oTTCMovingBarOffset);\n    obj_perform_position_op(POS_OP_COMPUTE_VELOCITY);\n}\n"
  },
  {
    "path": "src/game/behaviors/ttc_pendulum.inc.c",
    "content": "\n/**\n * Behavior for bhvTTCPendulum. This is not the pendulum inside the clock in the\n * castle, but rather the one in TTC itself.\n */\n\n/**\n * Initial angle acceleration.\n */\nstatic f32 sTTCPendulumInitialAccels[] = {\n    /* TTC_SPEED_SLOW    */ 13.0f,\n    /* TTC_SPEED_FAST    */ 22.0f,\n    /* TTC_SPEED_RANDOM  */ 13.0f,\n    /* TTC_SPEED_STOPPED */ 0.0f,\n};\n\n/**\n * Init function for bhvTTCPendulum.\n */\nvoid bhv_ttc_pendulum_init(void) {\n    if (gTTCSpeedSetting != TTC_SPEED_STOPPED) {\n        o->oTTCPendulumAngleAccel = sTTCPendulumInitialAccels[gTTCSpeedSetting];\n        o->oTTCPendulumAngle = 6500.0f;\n    } else {\n        o->oTTCPendulumAngle = 6371.5557f;\n    }\n}\n\n/**\n * Update function for bhvTTCPendulum.\n */\nvoid bhv_ttc_pendulum_update(void) {\n    if (gTTCSpeedSetting != TTC_SPEED_STOPPED) {\n        UNUSED f32 startVel = o->oTTCPendulumAngleVel;\n\n        // Play sound\n        if (o->oTTCPendulumSoundTimer != 0) {\n            if (--o->oTTCPendulumSoundTimer == 0) {\n                cur_obj_play_sound_2(SOUND_GENERAL_PENDULUM_SWING);\n            }\n        }\n\n        // Stay still for a while\n        if (o->oTTCPendulumDelay != 0) {\n            o->oTTCPendulumDelay--;\n        } else {\n            // Accelerate in the direction that moves angle to zero\n            if (o->oTTCPendulumAngle * o->oTTCPendulumAccelDir > 0.0f) {\n                o->oTTCPendulumAccelDir = -o->oTTCPendulumAccelDir;\n            }\n            o->oTTCPendulumAngleVel += o->oTTCPendulumAngleAccel * o->oTTCPendulumAccelDir;\n\n            // Ignoring floating point imprecision, angle vel should always be\n            // a multiple of angle accel, and so it will eventually reach zero\n            //! If the pendulum is moving fast enough, the vel could fail to\n            //  be a multiple of angle accel, and so the pendulum would continue\n            //  oscillating forever\n            if (o->oTTCPendulumAngleVel == 0.0f) {\n                if (gTTCSpeedSetting == TTC_SPEED_RANDOM) {\n                    // Select a new acceleration\n                    //! By manipulating this, we can cause the pendulum to reach\n                    //  extreme angles and speeds\n                    if (random_u16() % 3 != 0) {\n                        o->oTTCPendulumAngleAccel = 13.0f;\n                    } else {\n                        o->oTTCPendulumAngleAccel = 42.0f;\n                    }\n\n                    // Pick a random delay\n                    if (random_u16() % 2 == 0) {\n                        o->oTTCPendulumDelay = random_linear_offset(5, 30);\n                    }\n                }\n\n                // Play the sound 15 frames after beginning to move\n                o->oTTCPendulumSoundTimer = o->oTTCPendulumDelay + 15;\n            }\n\n            o->oTTCPendulumAngle += o->oTTCPendulumAngleVel;\n        }\n    } else {\n    }\n\n    o->oFaceAngleRoll = (s32) o->oTTCPendulumAngle;\n    // Note: no platform displacement\n}\n"
  },
  {
    "path": "src/game/behaviors/ttc_pit_block.inc.c",
    "content": "\n/**\n * Behavior for bhvTTCPitBlock. This is the block that moves up and down near the\n * Pit and the Pendulum star.\n */\n\n/**\n * Collision models. The second one is unused.\n */\nstatic Collision const *sTTCPitBlockCollisionModels[] = {\n    ttc_seg7_collision_07015754,\n    ttc_seg7_collision_070157D8,\n};\n\n/**\n * The speed of movement, and the time to wait before moving.\n * If the wait time is negative (before moving down on random setting), wait\n * a random amount of time instead.\n */\nstruct TTCPitBlockProperties {\n    s16 speed;\n    s16 waitTime;\n};\n\n/**\n * Properties for the pit block on each speed setting when moving up and down,\n * respectively.\n */\nstatic struct TTCPitBlockProperties sTTCPitBlockProperties[][2] = {\n    /* TTC_SPEED_SLOW    */ { { 11, 20 }, { -9, 30 } },\n    /* TTC_SPEED_FAST    */ { { 18, 15 }, { -11, 15 } },\n    /* TTC_SPEED_RANDOM  */ { { 11, 20 }, { -9, -1 } },\n    /* TTC_SPEED_STOPPED */ { { 0, 0 }, { 0, 0 } },\n};\n\n/**\n * Init function for bhvTTCPitBlock.\n */\nvoid bhv_ttc_pit_block_init(void) {\n    o->collisionData = segmented_to_virtual(sTTCPitBlockCollisionModels[o->oBhvParams2ndByte]);\n\n    o->oTTCPitBlockPeakY = o->oPosY + 330.0f;\n\n    if (gTTCSpeedSetting == TTC_SPEED_STOPPED) {\n        o->oPosY += 330.0f;\n    }\n}\n\n/**\n * Update function for bhvTTCPitBlock.\n * Move up and down, pausing before changing direction.\n */\nvoid bhv_ttc_pit_block_update(void) {\n    if (o->oTimer > o->oTTCPitBlockWaitTime) {\n        // Forward vel and gravity are zero, so this just does posY += velY\n        cur_obj_move_using_fvel_and_gravity();\n\n        if (clamp_f32(&o->oPosY, o->oHomeY, o->oTTCPitBlockPeakY)) {\n            o->oTTCPitBlockDir = o->oTTCPitBlockDir ^ 0x01;\n\n            if ((o->oTTCPitBlockWaitTime =\n                     sTTCPitBlockProperties[gTTCSpeedSetting][o->oTTCPitBlockDir & 0x01].waitTime)\n                < 0) {\n                o->oTTCPitBlockWaitTime = random_mod_offset(10, 20, 6);\n            }\n\n            o->oVelY = sTTCPitBlockProperties[gTTCSpeedSetting][o->oTTCPitBlockDir].speed;\n            o->oTimer = 0;\n        }\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/ttc_rotating_solid.inc.c",
    "content": "\n/**\n * Behavior for bhvTTCRotatingSolid, which are the rotating cube and triangular\n * prism.\n */\n\n/**\n * The collision models for cube and triangular prism, respectively.\n */\nstatic Collision const *sTTCRotatingSolidCollisionModels[] = {\n    ttc_seg7_collision_07014F70,\n    ttc_seg7_collision_07015008,\n};\n\n/**\n * The number of frames to wait before rotating for the first time.\n */\nstatic u8 sTTCRotatingSolidInitialDelays[] = {\n    /* TTC_SPEED_SLOW    */ 120,\n    /* TTC_SPEED_FAST    */ 40,\n    /* TTC_SPEED_RANDOM  */ 0,\n    /* TTC_SPEED_STOPPED */ 0,\n};\n\n/**\n * Init function for bhvTTCRotatingSolid.\n */\nvoid bhv_ttc_rotating_solid_init(void) {\n    o->collisionData = segmented_to_virtual(sTTCRotatingSolidCollisionModels[o->oBhvParams2ndByte]);\n\n    o->oTTCRotatingSolidNumSides = o->oBhvParams2ndByte == TTC_ROTATING_SOLID_BP_CUBE ? 4 : 3;\n\n    o->oTTCRotatingSolidRotationDelay = sTTCRotatingSolidInitialDelays[gTTCSpeedSetting];\n}\n\n/**\n * Update function for bhvTTCRotatingSolid.\n * Wait a bit, dip down and back up, play a sound, then rotate.\n */\nvoid bhv_ttc_rotating_solid_update(void) {\n    // 1. Wait out the rotation delay\n    if (gTTCSpeedSetting != TTC_SPEED_STOPPED && o->oTimer > o->oTTCRotatingSolidRotationDelay) {\n        if (o->oTTCRotatingSolidSoundTimer != 0) {\n            // 3. Play a sound after 6 frames\n            if (--o->oTTCRotatingSolidSoundTimer == 0) {\n                cur_obj_play_sound_2(SOUND_GENERAL2_ROTATING_BLOCK_ALERT);\n            }\n        } else if (o->oTTCRotatingSolidVelY > 0.0f && o->oPosY >= o->oHomeY) {\n            // 4. Rotate\n            s32 targetRoll =\n                (s32)((f32) o->oTTCRotatingSolidNumTurns / o->oTTCRotatingSolidNumSides * 0x10000);\n            s32 startRoll = o->oFaceAngleRoll;\n\n            obj_face_roll_approach(targetRoll, 1200);\n\n            o->oAngleVelRoll = o->oFaceAngleRoll - startRoll;\n            if (o->oAngleVelRoll == 0) {\n                cur_obj_play_sound_2(SOUND_GENERAL2_ROTATING_BLOCK_CLICK);\n\n                o->oTTCRotatingSolidNumTurns =\n                    (o->oTTCRotatingSolidNumTurns + 1) % o->oTTCRotatingSolidNumSides;\n\n                o->oTimer = 0;\n                if (gTTCSpeedSetting == TTC_SPEED_RANDOM) {\n                    o->oTTCRotatingSolidRotationDelay = random_mod_offset(5, 20, 7);\n                }\n            }\n        } else {\n            // 2. Move vertically with vel -4.5, -4.0, ... until reached back home\n            o->oTTCRotatingSolidVelY += 0.5f;\n            if ((o->oPosY += o->oTTCRotatingSolidVelY) >= o->oHomeY) {\n                o->oPosY = o->oHomeY;\n                o->oTTCRotatingSolidSoundTimer = 6;\n            }\n        }\n    } else {\n        o->oTTCRotatingSolidVelY = -5.0f;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/ttc_spinner.inc.c",
    "content": "\n/**\n * Behavior for TTC spinner.\n */\n\n/**\n * Spinner speeds on each setting.\n */\nstatic s16 sTTCSpinnerSpeeds[] = {\n    /* TTC_SPEED_SLOW    */ 200,\n    /* TTC_SPEED_FAST    */ 600,\n    /* TTC_SPEED_RANDOM  */ 200,\n    /* TTC_SPEED_STOPPED */ 0,\n};\n\n/**\n * Update function for bhvTTCSpinner.\n */\nvoid bhv_ttc_spinner_update(void) {\n    o->oAngleVelPitch = sTTCSpinnerSpeeds[gTTCSpeedSetting];\n\n    if (gTTCSpeedSetting == TTC_SPEED_RANDOM) {\n        if (o->oTimer > o->oTTCChangeDirTimer) {\n            o->oTTCSpinnerDir = random_sign();\n            o->oTTCChangeDirTimer = random_mod_offset(30, 30, 4);\n            o->oTimer = 0;\n        } else if (o->oTimer > 5) {\n            o->oAngleVelPitch *= o->oTTCSpinnerDir;\n        } else {\n            // Stop for 5 frames after changing direction\n            o->oAngleVelPitch = 0;\n        }\n    }\n\n    o->oFaceAnglePitch += o->oAngleVelPitch;\n}\n"
  },
  {
    "path": "src/game/behaviors/ttc_treadmill.inc.c",
    "content": "\n/**\n * Behavior for bhvTTCTreadmill.\n * The first treadmill in processing order is the \"master treadmill\". It is\n * responsible for playing sounds and calling RNG to control all the other\n * treadmills.\n */\n\n/**\n * Collision models for the different sized treadmills.\n */\nstatic Collision const *sTTCTreadmillCollisionModels[] = {\n    ttc_seg7_collision_070152B4,\n    ttc_seg7_collision_070153E0,\n};\n\nstatic s16 sTTCTreadmillSpeeds[] = {\n    /* TTC_SPEED_SLOW    */ 50,\n    /* TTC_SPEED_FAST    */ 100,\n    /* TTC_SPEED_RANDOM  */ 0,\n    /* TTC_SPEED_STOPPED */ 0,\n};\n\nextern s16 ttc_movtex_tris_big_surface_treadmill[];\nextern s16 ttc_movtex_tris_small_surface_treadmill[];\n\nvoid bhv_ttc_treadmill_init(void) {\n    o->collisionData = segmented_to_virtual(\n        sTTCTreadmillCollisionModels[o->oBhvParams2ndByte & TTC_TREADMILL_BP_FLAG_MASK]);\n\n    o->oTTCTreadmillBigSurface = segmented_to_virtual(ttc_movtex_tris_big_surface_treadmill);\n    o->oTTCTreadmillSmallSurface = segmented_to_virtual(ttc_movtex_tris_small_surface_treadmill);\n\n    *o->oTTCTreadmillBigSurface = *o->oTTCTreadmillSmallSurface = sTTCTreadmillSpeeds[gTTCSpeedSetting];\n\n    sMasterTreadmill = NULL;\n}\n\n/**\n * Update function for bhvTTCTreadmill. It calls cur_obj_compute_vel_xz afterward.\n */\nvoid bhv_ttc_treadmill_update(void) {\n    if (sMasterTreadmill == o || sMasterTreadmill == NULL) {\n        sMasterTreadmill = o;\n\n        cur_obj_play_sound_1(SOUND_ENV_ELEVATOR2);\n\n        if (gTTCSpeedSetting == TTC_SPEED_RANDOM) {\n            // Stay still for 5 frames, then accelerate toward the target speed\n            // until it's time to switch\n            if (o->oTimer > o->oTTCTreadmillTimeUntilSwitch) {\n                // Then stop and select new target speed and time until switch\n                if (approach_f32_ptr(&o->oTTCTreadmillSpeed, 0.0f, 10.0f)) {\n                    o->oTTCTreadmillTimeUntilSwitch = random_mod_offset(10, 20, 7);\n                    o->oTTCTreadmillTargetSpeed = random_sign() * 50.0f;\n                    o->oTimer = 0;\n                }\n            } else if (o->oTimer > 5) {\n                approach_f32_ptr(&o->oTTCTreadmillSpeed, o->oTTCTreadmillTargetSpeed, 10.0f);\n            }\n\n            *o->oTTCTreadmillBigSurface = *o->oTTCTreadmillSmallSurface = o->oTTCTreadmillSpeed;\n        }\n    }\n\n    o->oForwardVel = 0.084f * *o->oTTCTreadmillBigSurface;\n}\n"
  },
  {
    "path": "src/game/behaviors/tumbling_bridge.inc.c",
    "content": "// tumbling_bridge.inc.c\n\n#include \"levels/wf/header.h\"\n#include \"levels/bbh/header.h\"\n#include \"levels/lll/header.h\"\n#include \"levels/bitfs/header.h\"\n\nstruct TumblingBridgeData {\n    s16 numBridgeSections;\n    s16 bridgeRelativeStartingXorZ;\n    s16 platformWidth;\n    s16 model;\n    const Collision *collision;\n};\n\nstruct TumblingBridgeData sTumblingBridgeData[] = {\n    /* TUMBLING_BRIDGE_BP_WF    */ { 9, -512, 128, MODEL_WF_TUMBLING_BRIDGE_PART,      wf_seg7_collision_tumbling_bridge },\n    /* TUMBLING_BRIDGE_BP_BBH   */ { 9, -412, 103, MODEL_BBH_TUMBLING_PLATFORM_PART,   bbh_seg7_collision_07026B1C       },\n    /* TUMBLING_BRIDGE_BP_LLL   */ { 9, -512, 128, MODEL_LLL_FALLING_PLATFORM,         lll_seg7_collision_0701D21C       },\n    /* TUMBLING_BRIDGE_BP_BITFS */ { 9, -512, 128, MODEL_BITFS_TUMBLING_PLATFORM_PART, bitfs_seg7_collision_07015288     },\n};\n\nvoid bhv_tumbling_bridge_platform_loop(void) {\n    switch (o->oAction) {\n        case 0:\n            if (gMarioObject->platform == o) {\n                o->oAction++;\n                o->oTumblingBridgeUnkF4 = random_sign() * 0x80;\n            }\n            break;\n\n        case 1:\n            cur_obj_update_floor_height();\n            if (o->oTimer > 5) {\n                o->oAction++;\n                cur_obj_play_sound_2(SOUND_GENERAL_PLATFORM);\n            }\n            break;\n\n        case 2:\n            if (o->oAngleVelPitch < 0x400) {\n                o->oAngleVelPitch += 0x80;\n            }\n            if (o->oAngleVelRoll > -0x400 && o->oAngleVelRoll < 0x400) {\n                o->oAngleVelRoll += o->oTumblingBridgeUnkF4; // acceleration?\n            }\n            o->oGravity = -3.0f;\n            cur_obj_rotate_face_angle_using_vel();\n            cur_obj_move_using_fvel_and_gravity();\n            if (o->oPosY < o->oFloorHeight - 300.0f) {\n                o->oAction++;\n            }\n            break;\n\n        case 3:\n            break;\n    }\n\n    if (o->parentObj->oAction == 3) {\n        obj_mark_for_deletion(o);\n    }\n}\n\nvoid tumbling_bridge_act_1(void) {\n    struct Object *platformObj;\n    s32 i;\n    s32 bridgeID = o->oBhvParams2ndByte;\n    s32 relativePlatformX;\n    s32 relativePlatformZ;\n    s32 relativePlatformY = 0;\n    s32 relativeInitialPlatformY = 0;\n\n    for (i = 0; i < sTumblingBridgeData[bridgeID].numBridgeSections; i++) {\n        relativePlatformX = 0;\n        relativePlatformZ = 0;\n\n        if (bridgeID == TUMBLING_BRIDGE_BP_BITFS) {\n            relativePlatformX = sTumblingBridgeData[bridgeID].bridgeRelativeStartingXorZ\n                                + sTumblingBridgeData[bridgeID].platformWidth * i;\n        } else {\n            relativePlatformZ = sTumblingBridgeData[bridgeID].bridgeRelativeStartingXorZ\n                                + sTumblingBridgeData[bridgeID].platformWidth * i;\n        }\n\n        if (cur_obj_has_behavior(bhvLLLTumblingBridge)) {\n            if (i % 3 == 0) {\n                relativePlatformY -= 150;\n            }\n            relativeInitialPlatformY = 450;\n        }\n\n        platformObj = spawn_object_relative(\n            0, relativePlatformX, relativePlatformY + relativeInitialPlatformY, relativePlatformZ, o,\n            sTumblingBridgeData[bridgeID].model, bhvTumblingBridgePlatform);\n\n        obj_set_collision_data(platformObj, sTumblingBridgeData[bridgeID].collision);\n    }\n\n    o->oAction = 2;\n}\n\nvoid tumbling_bridge_act_2(void) {\n    cur_obj_hide();\n    if (cur_obj_has_behavior(bhvLLLTumblingBridge)) {\n        cur_obj_unhide();\n    } else if (o->oDistanceToMario > 1200.0f) {\n        o->oAction = 3;\n        cur_obj_unhide();\n    }\n}\n\nvoid tumbling_bridge_act_3(void) {\n    cur_obj_unhide();\n    o->oAction = 0;\n}\n\nvoid tumbling_bridge_act_0(void) {\n    if (cur_obj_has_behavior(bhvLLLTumblingBridge) || o->oDistanceToMario < 1000.0f) {\n        o->oAction = 1;\n    }\n}\n\nvoid (*sTumblingBridgeActions[])(void) = {\n    tumbling_bridge_act_0,\n    tumbling_bridge_act_1,\n    tumbling_bridge_act_2,\n    tumbling_bridge_act_3,\n};\n\nvoid bhv_tumbling_bridge_loop(void) {\n    cur_obj_call_action_function(sTumblingBridgeActions);\n}\n"
  },
  {
    "path": "src/game/behaviors/tuxie.inc.c",
    "content": "// tuxie.inc.c\n\nvoid play_penguin_walking_sound(s32 walk) {\n    s32 sound;\n\n    if (o->oSoundStateID == 0) {\n        if (walk == PENGUIN_WALK_BABY) {\n            sound = SOUND_OBJ_BABY_PENGUIN_WALK;\n        } else { // PENGUIN_WALK_BIG\n            sound = SOUND_OBJ_BIG_PENGUIN_WALK;\n        }\n        set_obj_anim_with_accel_and_sound(1, 11, sound);\n    }\n}\n\nvoid tuxies_mother_act_2(void) {\n    f32 sp24;\n    UNUSED u8 filler[4];\n    struct Object *sp1C = cur_obj_find_nearest_object_with_behavior(bhvSmallPenguin, &sp24);\n\n    if (cur_obj_find_nearby_held_actor(bhvUnused20E0, 1000.0f) != NULL) {\n        if (o->oSubAction == 0) {\n            cur_obj_init_animation_with_sound(0);\n            o->oForwardVel = 10.0f;\n            if (cur_obj_lateral_dist_from_mario_to_home() > 800.0f) {\n                o->oSubAction = 1;\n            }\n            cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x400);\n        } else {\n            o->oForwardVel = 0.0f;\n            cur_obj_init_animation_with_sound(3);\n            if (cur_obj_lateral_dist_from_mario_to_home() < 700.0f) {\n                o->oSubAction = 0;\n            }\n        }\n    } else {\n        o->oForwardVel = 0.0f;\n        cur_obj_init_animation_with_sound(3);\n    }\n\n    if (sp1C != NULL && sp24 < 300.0f && sp1C->oHeldState != HELD_FREE) {\n        o->oAction = 1;\n        sp1C->oSmallPenguinUnk88 = TRUE;\n        o->prevObj = sp1C;\n    }\n}\n\nvoid tuxies_mother_act_1(void) {\n    switch (o->oSubAction) {\n        case 0:\n            cur_obj_init_animation_with_sound(3);\n            if (!cur_obj_is_mario_on_platform()) {\n                s32 sp2C = (o->oBhvParams >> 16) & 0xFF;\n                s32 sp28 = (o->prevObj->oBhvParams >> 16) & 0xFF;\n                s32 dialogID;\n\n                if (sp2C == sp28) {\n                    dialogID = DIALOG_058;\n                } else {\n                    dialogID = DIALOG_059;\n                }\n                if (cur_obj_update_dialog_with_cutscene(MARIO_DIALOG_LOOK_UP,\n                        DIALOG_FLAG_TURN_TO_MARIO, CUTSCENE_DIALOG, dialogID)) {\n                    if (dialogID == DIALOG_058) {\n                        o->oSubAction = 1;\n                    } else {\n                        o->oSubAction = 2;\n                    }\n                    o->prevObj->oInteractionSubtype |= INT_SUBTYPE_DROP_IMMEDIATELY;\n                }\n            } else {\n                cur_obj_init_animation_with_sound(0);\n            }\n            break;\n\n        case 1:\n            if (o->prevObj->oHeldState == HELD_FREE) {\n                //! This line is was almost certainly supposed to be something\n                // like o->prevObj->oInteractionSubtype &= ~INT_SUBTYPE_DROP_IMMEDIATELY;\n                // however, this code uses the value of o->oInteractionSubtype\n                // rather than its offset to rawData. For this object,\n                // o->oInteractionSubtype is always 0, so the result is this:\n                // o->prevObj->oUnknownUnk88 &= ~INT_SUBTYPE_DROP_IMMEDIATELY\n                // which has no effect as o->prevObj->oUnknownUnk88 is always 0\n                // or 1, which is not affected by the bitwise AND.\n                o->prevObj->OBJECT_FIELD_S32(o->oInteractionSubtype) &= ~INT_SUBTYPE_DROP_IMMEDIATELY;\n                obj_set_behavior(o->prevObj, bhvUnused20E0);\n#ifndef VERSION_JP\n                cur_obj_spawn_star_at_y_offset(3167.0f, -4300.0f, 5108.0f, 200.0f);\n#else\n                spawn_default_star(3500.0f, -4300.0f, 4650.0f);\n#endif\n                o->oAction = 2;\n            }\n            break;\n\n        case 2:\n            if (o->prevObj->oHeldState == HELD_FREE) {\n                //! Same bug as above\n                o->prevObj->OBJECT_FIELD_S32(o->oInteractionSubtype) &= ~INT_SUBTYPE_DROP_IMMEDIATELY;\n                obj_set_behavior(o->prevObj, bhvPenguinBaby);\n                o->oAction = 2;\n            }\n            break;\n    }\n}\n\nvoid tuxies_mother_act_0(void) {\n    s32 sp2C = FALSE;\n    f32 sp28;\n    struct Object *sp24 = cur_obj_find_nearest_object_with_behavior(bhvSmallPenguin, &sp28);\n\n    cur_obj_scale(4.0f);\n    cur_obj_init_animation_with_sound(3);\n\n    if (sp28 < 500.0f) {\n        sp2C = TRUE;\n    }\n\n    if (sp24 != NULL && sp28 < 300.0f && sp24->oHeldState != HELD_FREE) {\n        o->oAction = 1;\n        sp24->oSmallPenguinUnk88 = TRUE;\n        o->prevObj = sp24;\n    } else {\n        switch (o->oSubAction) {\n            case 0:\n                if (cur_obj_can_mario_activate_textbox_2(300.0f, 100.0f) && !sp2C) {\n                    o->oSubAction++;\n                }\n                break;\n            case 1:\n                if (cur_obj_update_dialog_with_cutscene(MARIO_DIALOG_LOOK_UP,\n                    DIALOG_FLAG_TURN_TO_MARIO, CUTSCENE_DIALOG, DIALOG_057)) {\n                    o->oSubAction++;\n                }\n                break;\n            case 2:\n                if (o->oDistanceToMario > 450.0f) {\n                    o->oSubAction = 0;\n                }\n                break;\n        }\n    }\n\n    if (cur_obj_check_anim_frame(1)) {\n        cur_obj_play_sound_2(SOUND_OBJ_BIG_PENGUIN_YELL);\n    }\n}\n\nvoid (*sTuxiesMotherActions[])(void) = {\n    tuxies_mother_act_0,\n    tuxies_mother_act_1,\n    tuxies_mother_act_2,\n};\n\nvoid bhv_tuxies_mother_loop(void) {\n    o->activeFlags |= ACTIVE_FLAG_UNK10;\n    cur_obj_update_floor_and_walls();\n    cur_obj_call_action_function(sTuxiesMotherActions);\n    cur_obj_move_standard(-78);\n    play_penguin_walking_sound(PENGUIN_WALK_BIG);\n    o->oInteractStatus = 0;\n}\n\nvoid small_penguin_dive_with_mario(void) {\n    if (mario_is_dive_sliding()) {\n        o->oSmallPenguinUnk100 = o->oAction;\n        o->oAction = 3;\n    }\n}\n\nvoid small_penguin_act_2(void) {\n    s32 sp1C = FALSE;\n\n    if (o->oTimer == 0\n        && cur_obj_dist_to_nearest_object_with_behavior(bhvTuxiesMother) < 1000.0f) {\n        sp1C = TRUE;\n    }\n    cur_obj_init_animation_with_sound(0);\n    o->oForwardVel = o->oSmallPenguinUnk104 + 3.0f;\n    cur_obj_rotate_yaw_toward(o->oAngleToMario + 0x8000, o->oSmallPenguinUnk110 + 0x600);\n    if (o->oDistanceToMario > o->oSmallPenguinUnk108 + 500.0f) {\n        o->oAction = 0;\n    }\n    small_penguin_dive_with_mario();\n    if (sp1C) {\n        o->oAction = 5;\n    }\n}\n\nvoid small_penguin_act_1(void) {\n    cur_obj_init_animation_with_sound(0);\n    o->oForwardVel = o->oSmallPenguinUnk104 + 3.0f;\n    cur_obj_rotate_yaw_toward(o->oAngleToMario, o->oSmallPenguinUnk110 + 0x600);\n    if (o->oDistanceToMario < o->oSmallPenguinUnk108 + 300.0f) {\n        o->oAction = 0;\n    }\n    if (o->oDistanceToMario > 1100.0f) {\n        o->oAction = 0;\n    }\n    small_penguin_dive_with_mario();\n}\n\nvoid small_penguin_act_3(void) {\n    if (o->oTimer > 5) {\n        if (o->oTimer == 6) {\n            cur_obj_play_sound_2(SOUND_OBJ_BABY_PENGUIN_DIVE);\n        }\n        cur_obj_init_animation_with_sound(1);\n        if (o->oTimer > 25 && !mario_is_dive_sliding()) {\n            o->oAction = 4;\n        }\n    }\n}\n\nvoid small_penguin_act_4(void) {\n    if (o->oTimer > 20) {\n        o->oForwardVel = 0.0f;\n        cur_obj_init_animation_with_sound(2);\n        if (o->oTimer > 40) {\n            o->oAction = o->oSmallPenguinUnk100;\n        }\n    }\n}\n\nvoid small_penguin_act_0(void) {\n    s32 sp1C = FALSE;\n\n    cur_obj_init_animation_with_sound(3);\n    if (o->oTimer == 0) {\n        o->oSmallPenguinUnk110 = (s32)(random_float() * 0x400);\n        o->oSmallPenguinUnk108 = random_float() * 100.0f;\n        o->oSmallPenguinUnk104 = random_float();\n        o->oForwardVel = 0.0f;\n        if (cur_obj_dist_to_nearest_object_with_behavior(bhvTuxiesMother) < 1000.0f) {\n            sp1C = TRUE;\n        }\n    }\n    if (o->oDistanceToMario < 1000.0f && o->oDistanceToMario > o->oSmallPenguinUnk108 + 600.0f) {\n        o->oAction = 1;\n    } else if (o->oDistanceToMario < o->oSmallPenguinUnk108 + 300.0f) {\n        o->oAction = 2;\n    }\n    if (sp1C) {\n        o->oAction = 5;\n    }\n    if (cur_obj_mario_far_away()) {\n        cur_obj_set_pos_to_home();\n    }\n}\n\nvoid small_penguin_act_5(void) {\n    f32 sp24;\n    s16 sp22;\n    struct Object *sp1C = cur_obj_nearest_object_with_behavior(bhvTuxiesMother);\n\n    if (sp1C != NULL) {\n        if (o->oDistanceToMario < 1000.0f) {\n            o->oForwardVel = 2.0f;\n        } else {\n            o->oForwardVel = 0.0f;\n        }\n\n        sp24 = dist_between_objects(o, sp1C);\n        sp22 = obj_angle_to_object(o, sp1C);\n\n        if (sp24 > 200.0f) {\n            cur_obj_rotate_yaw_toward(sp22, 0x400);\n        } else {\n            cur_obj_rotate_yaw_toward(sp22 + 0x8000, 0x400);\n        }\n\n        cur_obj_init_animation_with_sound(0);\n    }\n\n    small_penguin_dive_with_mario();\n}\n\nvoid (*sSmallPenguinActions[])(void) = {\n    small_penguin_act_0,\n    small_penguin_act_1,\n    small_penguin_act_2,\n    small_penguin_act_3,\n    small_penguin_act_4,\n    small_penguin_act_5,\n};\n\nvoid small_penguin_free_actions(void) {\n    if (o->oSmallPenguinUnk88) {\n        o->oAction = 5;\n        o->oSmallPenguinUnk88 = FALSE;\n    }\n    cur_obj_update_floor_and_walls();\n    cur_obj_call_action_function(sSmallPenguinActions);\n    cur_obj_move_standard(-78);\n    play_penguin_walking_sound(PENGUIN_WALK_BABY);\n}\n\nvoid bhv_small_penguin_loop(void) {\n    switch (o->oHeldState) {\n        case HELD_FREE:\n            small_penguin_free_actions();\n            break;\n        case HELD_HELD:\n            cur_obj_unrender_set_action_and_anim(0, 0);\n            if (cur_obj_has_behavior(bhvPenguinBaby)) {\n                obj_set_behavior(o, bhvSmallPenguin);\n            }\n            obj_copy_pos(o, gMarioObject);\n            if (gGlobalTimer % 30 == 0) {\n#ifndef VERSION_JP\n                play_sound(SOUND_OBJ2_BABY_PENGUIN_YELL, gMarioObject->header.gfx.cameraToObject);\n#else\n                play_sound(SOUND_OBJ2_BABY_PENGUIN_YELL, o->header.gfx.cameraToObject);\n#endif\n            }\n            break;\n        case HELD_THROWN:\n            cur_obj_get_thrown_or_placed(0, 0, 0);\n            break;\n        case HELD_DROPPED:\n            cur_obj_get_dropped();\n            break;\n    }\n}\n\n/** Geo switch logic for Tuxie's mother's eyes. Cases 0-4. Interestingly, case\n * 4 is unused, and is the eye state seen in Shoshinkai 1995 footage.\n */\nGfx *geo_switch_tuxie_mother_eyes(s32 run, struct GraphNode *node, UNUSED Mat4 *mtx) {\n    if (run == TRUE) {\n        struct Object *obj = (struct Object *) gCurGraphNodeObject;\n        struct GraphNodeSwitchCase *switchCase = (struct GraphNodeSwitchCase *) node;\n        s32 timer;\n\n        switchCase->selectedCase = 0;\n\n        // timer logic for blinking. uses cases 0-2.\n        timer = gGlobalTimer % 50;\n        if (timer < 43) {\n            switchCase->selectedCase = 0;\n        } else if (timer < 45) {\n            switchCase->selectedCase = 1;\n        } else if (timer < 47) {\n            switchCase->selectedCase = 2;\n        } else {\n            switchCase->selectedCase = 1;\n        }\n\n        /** make Tuxie's Mother have angry eyes if Mario takes the correct baby\n         * after giving it back. The easiest way to check this is to see if she's\n         * moving, since she only does when she's chasing Mario.\n         */\n        if (obj->behavior == segmented_to_virtual(bhvTuxiesMother)) {\n            if (obj->oForwardVel > 5.0f) {\n                switchCase->selectedCase = 3;\n            }\n        }\n    }\n\n    return NULL;\n}\n"
  },
  {
    "path": "src/game/behaviors/tweester.inc.c",
    "content": "\n/**\n * Behavior file for bhvTweester and bhvTweesterSandParticle\n * Tweester swaps between twhree action- an idle action, a chasing\n * Mario action, and an action that hides it. At certain times the\n * Tweester spawns the sand particles also in this file.\n */\n\nstruct ObjectHitbox sTweesterHitbox = {\n    /* interactType:      */ INTERACT_TORNADO,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 0,\n    /* health:            */ 0,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 1500,\n    /* height:            */ 4000,\n    /* hurtboxRadius:     */ 0,\n    /* hurtboxHeight:     */ 0,\n};\n\n/**\n * Controls the scaling of the tweester as well as\n * its forward velocity.\n */\nvoid tweester_scale_and_move(f32 preScale) {\n    s16 dYaw  = 0x2C00;\n    f32 scale = preScale * 0.4;\n\n    o->header.gfx.scale[0]\n        = (( coss(o->oTweesterScaleTimer) + 1.0) * 0.5 * 0.3 + 1.0) * scale;\n    o->header.gfx.scale[1]\n        = ((-coss(o->oTweesterScaleTimer) + 1.0) * 0.5 * 0.5 + 0.5) * scale;\n    o->header.gfx.scale[2]\n        = (( coss(o->oTweesterScaleTimer) + 1.0) * 0.5 * 0.3 + 1.0) * scale;\n\n    o->oTweesterScaleTimer += 0x200;\n    o->oForwardVel = 14.0f;\n    o->oFaceAngleYaw += dYaw;\n}\n\n/**\n * Tweester's idle action. Basically stays in active until Mario enters a 1500\n * radius, at which point it appears and grows for 60 frames at which point it\n * it enters the chasing action.\n */\nvoid tweester_act_idle(void) {\n    if (o->oSubAction == TWEESTER_SUB_ACT_WAIT) {\n        cur_obj_become_tangible();\n        cur_obj_set_pos_to_home();\n        cur_obj_scale(0.0f);\n\n        // Hard to have any idea of this purpose, only set here.\n        o->oTweesterUnused = 0;\n\n        // If Mario is within range, change to the growth sub-action.\n        if (o->oDistanceToMario < 1500.0f) {\n            o->oSubAction++;\n        }\n\n        o->oTimer = 0;\n    } else {\n        cur_obj_play_sound_1(SOUND_ENV_WIND1);\n        tweester_scale_and_move(o->oTimer / 60.0f);\n        if (o->oTimer >= 60) {\n            o->oAction = TWEESTER_ACT_CHASE;\n        }\n    }\n}\n\n/**\n * Action where the tweester \"chases\" Mario.\n * After Mario is twirling, then return home.\n */\nvoid tweester_act_chase(void) {\n    f32 activationRadius = o->oBhvParams2ndByte * 100;\n\n    o->oAngleToHome = cur_obj_angle_to_home();\n    cur_obj_play_sound_1(SOUND_ENV_WIND1);\n\n    if (cur_obj_lateral_dist_from_mario_to_home() < activationRadius\n        && o->oSubAction == TWEESTER_SUB_ACT_CHASE) {\n\n        o->oForwardVel = 20.0f;\n        cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x200);\n        print_debug_top_down_objectinfo(\"off \", 0);\n\n        if (gMarioStates[0].action == ACT_TWIRLING) {\n            o->oSubAction++;\n        }\n    } else {\n        o->oForwardVel = 20.0f;\n        cur_obj_rotate_yaw_toward(o->oAngleToHome, 0x200);\n\n        if (cur_obj_lateral_dist_to_home() < 200.0f) {\n            o->oAction = TWEESTER_ACT_HIDE;\n        }\n    }\n\n    if (o->oDistanceToMario > 3000.0f) {\n        o->oAction = TWEESTER_ACT_HIDE;\n    }\n\n    cur_obj_update_floor_and_walls();\n    if (o->oMoveFlags & OBJ_MOVE_HIT_WALL) {\n        o->oMoveAngleYaw = o->oWallAngle;\n    }\n\n    cur_obj_move_standard(60);\n    tweester_scale_and_move(1.0f);\n    spawn_object(o, MODEL_SAND_DUST, bhvTweesterSandParticle);\n}\n\n/**\n * Shrinks the tweester until it is invisible, then returns to the idle\n * action if Mario is 2500 units away or 12 seconds passed.\n */\nvoid tweester_act_hide(void) {\n    f32 shrinkTimer = 60.0f - o->oTimer;\n\n    if (shrinkTimer >= 0.0f) {\n        tweester_scale_and_move(shrinkTimer / 60.0f);\n    } else {\n        cur_obj_become_intangible();\n        if (cur_obj_lateral_dist_from_mario_to_home() > 2500.0f) {\n            o->oAction = TWEESTER_ACT_IDLE;\n        }\n        if (o->oTimer > 360) {\n            o->oAction = TWEESTER_ACT_IDLE;\n        }\n    }\n}\n\n// Array of Tweester action functions.\nvoid (*sTweesterActions[])(void) = {\n    tweester_act_idle,\n    tweester_act_chase,\n    tweester_act_hide,\n};\n\n/**\n * Loop behavior for Tweester.\n * Loads the hitbox and calls its relevant action.\n */\nvoid bhv_tweester_loop(void) {\n    obj_set_hitbox(o, &sTweesterHitbox);\n    cur_obj_call_action_function(sTweesterActions);\n    o->oInteractStatus = 0;\n}\n\n/**\n * Loop behavior for the particles Tweesters create.\n * Floats upwards semi-randomly.\n */\nvoid bhv_tweester_sand_particle_loop(void) {\n    o->oMoveAngleYaw += 0x3700;\n    o->oForwardVel += 15.0f;\n    o->oPosY += 22.0f;\n\n    cur_obj_scale(random_float() + 1.0);\n\n    if (o->oTimer == 0) {\n        obj_translate_xz_random(o, 100.0f);\n        o->oFaceAnglePitch = random_u16();\n        o->oFaceAngleYaw = random_u16();\n    }\n\n    if (o->oTimer > 15) {\n        obj_mark_for_deletion(o);\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/ukiki.inc.c",
    "content": "\n/**\n * @file Contains behavior for the ukiki objects.\n *\n * Cap ukiki is the ukiki that steals Mario's cap.\n * Cage ukiki is the ukiki that triggers the cage star.\n */\n\n/**\n * Sets the cap ukiki to its home if Mario is far away\n * or makes him wait to respawn if in water.\n */\nvoid handle_cap_ukiki_reset(void) {\n    if (o->oBhvParams2ndByte == UKIKI_BP_CAP) {\n        if (cur_obj_mario_far_away()) {\n            cur_obj_set_pos_to_home_and_stop();\n            o->oAction = UKIKI_ACT_IDLE;\n        } else if (o->oMoveFlags & OBJ_MOVE_MASK_IN_WATER) {\n            o->oAction = UKIKI_ACT_WAIT_TO_RESPAWN;\n        }\n    }\n}\n\n/**\n * Returns TRUE if Mario has his cap and ukiki is\n * the cap ukiki.\n */\ns32 is_cap_ukiki_and_mario_has_normal_cap_on_head(void) {\n    if (o->oBhvParams2ndByte == UKIKI_BP_CAP\n        && does_mario_have_normal_cap_on_head(gMarioState)) {\n        return TRUE;\n    }\n\n    return FALSE;\n}\n\n/**\n * Unused copy of geo_update_projectile_pos_from_parent. Perhaps a copy paste mistake.\n */\nGfx *geo_update_projectile_pos_from_parent_copy(s32 run,UNUSED struct GraphNode *node, Mat4 mtx) {\n    if (run == TRUE) {\n        Mat4 mtx2;\n        struct Object *obj = (struct Object *) gCurGraphNodeObject; // TODO: change global type to Object pointer\n\n        if (obj->prevObj != NULL) {\n            create_transformation_from_matrices(mtx2, mtx, *gCurGraphNodeCamera->matrixPtr);\n            obj_update_pos_from_parent_transformation(mtx2, obj->prevObj);\n            obj_set_gfx_pos_from_pos(obj->prevObj);\n        }\n    }\n\n    return NULL;\n}\n\n/**\n * Chooses random idle taunts and loops them a random number of times.\n */\nvoid idle_ukiki_taunt(void) {\n    o->oForwardVel = 0.0f;\n\n    if (o->oSubAction == UKIKI_SUB_ACT_TAUNT_NONE) {\n        // Subaction is between 1 and 4.\n        o->oSubAction = (s32)(random_float() * 4.0f + 1.0f);\n\n        // Counter keeps track of the iterations done, while ToBeDone\n        // is the count of iterations to be done (between 2 and 5).\n        o->oUkikiTauntCounter = 0;\n        o->oUkikiTauntsToBeDone = (s16)(random_float() * 4.0f + 2.0f);\n    }\n\n    // Switch goes from 1-4.\n    switch (o->oSubAction) {\n        case UKIKI_SUB_ACT_TAUNT_ITCH:\n            cur_obj_init_animation_with_sound(UKIKI_ANIM_ITCH);\n\n            if (cur_obj_check_if_near_animation_end()) {\n                o->oSubAction = UKIKI_SUB_ACT_TAUNT_NONE;\n            }\n            break;\n\n        case UKIKI_SUB_ACT_TAUNT_SCREECH:\n            cur_obj_init_animation_with_sound(UKIKI_ANIM_SCREECH);\n\n            if (cur_obj_check_if_near_animation_end()) {\n                o->oUkikiTauntCounter++;\n            }\n\n            if (o->oUkikiTauntCounter >= o->oUkikiTauntsToBeDone * 2) {\n                o->oSubAction = UKIKI_SUB_ACT_TAUNT_NONE;\n            }\n            break;\n\n        case UKIKI_SUB_ACT_TAUNT_JUMP_CLAP:\n            cur_obj_init_animation_with_sound(UKIKI_ANIM_JUMP_CLAP);\n\n            if (cur_obj_check_if_near_animation_end()) {\n                o->oUkikiTauntCounter++;\n            }\n\n            if (o->oUkikiTauntCounter >= o->oUkikiTauntsToBeDone) {\n                o->oSubAction = UKIKI_SUB_ACT_TAUNT_NONE;\n            }\n            break;\n\n        case UKIKI_SUB_ACT_TAUNT_HANDSTAND:\n            cur_obj_init_animation_with_sound(UKIKI_ANIM_HANDSTAND);\n\n            if (cur_obj_check_if_near_animation_end()) {\n                o->oSubAction = UKIKI_SUB_ACT_TAUNT_NONE;\n            }\n            break;\n    }\n}\n\n/**\n * Ukiki's general idle action. This is for when ukiki is doing nothing else and\n * standing around.\n */\nvoid ukiki_act_idle(void) {\n    idle_ukiki_taunt();\n\n    if (is_cap_ukiki_and_mario_has_normal_cap_on_head()) {\n        if (o->oDistanceToMario > 700.0f && o->oDistanceToMario < 1000.0f) {\n            o->oAction = UKIKI_ACT_RUN;\n        } else if (o->oDistanceToMario <= 700.0f && o->oDistanceToMario > 200.0f) {\n            if (abs_angle_diff(o->oAngleToMario, o->oMoveAngleYaw) > 0x1000) {\n                o->oAction = UKIKI_ACT_TURN_TO_MARIO;\n            }\n        }\n    } else if (o->oDistanceToMario < 300.0f) {\n        o->oAction = UKIKI_ACT_RUN;\n    }\n\n    if (o->oUkikiTextState == UKIKI_TEXT_GO_TO_CAGE) {\n        o->oAction = UKIKI_ACT_GO_TO_CAGE;\n    }\n\n    // Jump away from Mario after stealing his cap.\n    if (o->oUkikiTextState == UKIKI_TEXT_STOLE_CAP) {\n        o->oMoveAngleYaw = gMarioObject->oMoveAngleYaw + 0x8000;\n\n        if (check_if_moving_over_floor(50.0f, 150.0f)) {\n            o->oAction = UKIKI_ACT_JUMP;\n        } else {\n            o->oMoveAngleYaw = gMarioObject->oMoveAngleYaw + 0x4000;\n\n            if (check_if_moving_over_floor(50.0f, 150.0f)) {\n                o->oAction = UKIKI_ACT_JUMP;\n            } else {\n                o->oMoveAngleYaw = gMarioObject->oMoveAngleYaw - 0x4000;\n                if (check_if_moving_over_floor(50.0f, 150.0f)) {\n                    o->oAction = UKIKI_ACT_JUMP;\n                }\n            }\n        }\n\n        o->oUkikiTextState = UKIKI_TEXT_HAS_CAP;\n    }\n\n    if (o->oBhvParams2ndByte == UKIKI_BP_CAP) {\n        if (o->oPosY < -1550.0f) {\n            o->oAction = UKIKI_ACT_RETURN_HOME;\n        }\n    }\n}\n\n/**\n * Ukiki attempts to run home, which is often impossible depending on terrain.\n * Only used for the cap ukiki.\n */\nvoid ukiki_act_return_home(void) {\n    UNUSED u8 filler[4];\n\n    cur_obj_init_animation_with_sound(UKIKI_ANIM_RUN);\n    o->oMoveAngleYaw = cur_obj_angle_to_home();\n    o->oForwardVel = 10.0f;\n\n    // If ukiki somehow walked home, go back to the idle action.\n    if (o->oPosY > -1550.0f) {\n        o->oAction = UKIKI_ACT_IDLE;\n    }\n}\n\n/**\n * Ukiki has gone somewhere he shouldn't, so wait until Mario\n * leaves then reset position to his home.\n */\nvoid ukiki_act_wait_to_respawn(void) {\n    idle_ukiki_taunt();\n\n    if (cur_obj_mario_far_away()) {\n        cur_obj_set_pos_to_home_and_stop();\n        o->oAction = UKIKI_ACT_IDLE;\n    }\n}\n\n/**\n * A seemgingly stubbed unused action.\n *\n * Perhaps an early attempt at the UKIKI_SUB_ACT_CAGE_WAIT_FOR_MARIO\n * part of the ukiki_act_go_to_cage action.\n */\nvoid ukiki_act_unused_turn(void) {\n    idle_ukiki_taunt();\n\n    if (o->oSubAction == UKIKI_SUB_ACT_TAUNT_JUMP_CLAP) {\n        cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x400);\n    }\n}\n\n/**\n * Turns ukiki to face towards Mario while moving with slow forward velocity.\n */\nvoid ukiki_act_turn_to_mario(void) {\n    s32 facingMario;\n\n    // Initialize the action with a random fVel from 2-5.\n    if (o->oTimer == 0) {\n        o->oForwardVel = random_float() * 3.0f + 2.0f;\n    }\n\n    cur_obj_init_animation_with_sound(UKIKI_ANIM_TURN);\n\n    facingMario = cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x800);\n\n    if (facingMario) {\n        o->oAction = UKIKI_ACT_IDLE;\n    }\n\n    if (is_cap_ukiki_and_mario_has_normal_cap_on_head()) {\n        if (o->oDistanceToMario > 500.0f) {\n            o->oAction = UKIKI_ACT_RUN;\n        }\n    } else if (o->oDistanceToMario < 300.0f) {\n        o->oAction = UKIKI_ACT_RUN;\n    }\n}\n\n/**\n * Ukiki either runs away away from Mario or towards him if stealing Mario's cap.\n */\nvoid ukiki_act_run(void) {\n    s32 fleeMario = TRUE;\n    s16 goalYaw = o->oAngleToMario + 0x8000;\n\n    if (is_cap_ukiki_and_mario_has_normal_cap_on_head()) {\n        fleeMario = FALSE;\n        goalYaw = o->oAngleToMario;\n    }\n\n    if (o->oTimer == 0) {\n        o->oUkikiChaseFleeRange = random_float() * 100.0f + 350.0f;\n    }\n\n    cur_obj_init_animation_with_sound(UKIKI_ANIM_RUN);\n    cur_obj_rotate_yaw_toward(goalYaw, 0x800);\n\n    //! @bug (Ukikispeedia) This function sets forward speed to 0.9 * Mario's\n    //! forward speed, which means ukiki can move at hyperspeed rates.\n    cur_obj_set_vel_from_mario_vel(20.0f, 0.9f);\n\n    if (fleeMario) {\n        if (o->oDistanceToMario > o->oUkikiChaseFleeRange) {\n            o->oAction = UKIKI_ACT_TURN_TO_MARIO;\n        }\n    } else if (o->oDistanceToMario < o->oUkikiChaseFleeRange) {\n        o->oAction = UKIKI_ACT_TURN_TO_MARIO;\n    }\n\n    if (fleeMario && o->oDistanceToMario < 200.0f) {\n        if ((o->oMoveFlags & OBJ_MOVE_HIT_WALL)\n            && is_mario_moving_fast_or_in_air(10)) {\n            o->oAction = UKIKI_ACT_JUMP;\n            o->oMoveAngleYaw = o->oWallAngle;\n        } else if ((o->oMoveFlags & OBJ_MOVE_HIT_EDGE)\n                   && is_mario_moving_fast_or_in_air(10)) {\n            o->oAction = UKIKI_ACT_JUMP;\n            o->oMoveAngleYaw += 0x8000;\n        }\n    }\n}\n\n/**\n * Jump for a distance, typically used to jump\n * over Mario when after reaching a wall or edge.\n */\nvoid ukiki_act_jump(void) {\n    o->oForwardVel = 10.0f;\n    cur_obj_become_intangible();\n\n    if (o->oSubAction == 0) {\n        if (o->oTimer == 0) {\n            cur_obj_set_y_vel_and_animation(random_float() * 10.0f + 45.0f, UKIKI_ANIM_JUMP);\n        } else if (o->oMoveFlags & (OBJ_MOVE_MASK_ON_GROUND | OBJ_MOVE_AT_WATER_SURFACE\n                                    | OBJ_MOVE_UNDERWATER_ON_GROUND)) {\n            o->oSubAction++;\n            o->oVelY = 0.0f;\n        }\n    } else {\n        o->oForwardVel = 0.0f;\n        cur_obj_init_animation_with_sound(UKIKI_ANIM_LAND);\n        cur_obj_become_tangible();\n\n        if (cur_obj_check_if_near_animation_end()) {\n            o->oAction = UKIKI_ACT_RUN;\n        }\n    }\n}\n\n/**\n * Waypoints that lead from the top of the mountain to the cage.\n */\nstatic Trajectory sCageUkikiPath[] = {\n    TRAJECTORY_POS(0, /*pos*/  1011, 2306,  -285),\n    TRAJECTORY_POS(0, /*pos*/  1151, 2304,  -510),\n    TRAJECTORY_POS(0, /*pos*/  1723, 1861,  -964),\n    TRAJECTORY_POS(0, /*pos*/  2082, 1775, -1128),\n    TRAJECTORY_POS(0, /*pos*/  2489, 1717, -1141),\n    TRAJECTORY_POS(0, /*pos*/  2662, 1694, -1140),\n    TRAJECTORY_POS(0, /*pos*/  2902, 1536,  -947),\n    TRAJECTORY_POS(0, /*pos*/  2946, 1536,  -467),\n    TRAJECTORY_POS(0, /*pos*/  2924, 1536,    72),\n    TRAJECTORY_POS(0, /*pos*/  2908, 1536,   536),\n    TRAJECTORY_POS(0, /*pos*/  2886, 1536,   783),\n    TRAJECTORY_END(),\n};\n\n/**\n * Travel to the cage, wait for Mario, jump to it, and ride it to\n * our death. Ukiki is a tad suicidal.\n */\nvoid ukiki_act_go_to_cage(void) {\n    struct Object *obj;\n    f32 latDistToCage = 0.0f;\n    s16 yawToCage = 0;\n    obj = cur_obj_nearest_object_with_behavior(bhvUkikiCageChild);\n\n    // Ultimately is checking the cage, as it points to the parent\n    // of a dummy child object of the cage.\n    if (obj != NULL) {\n        latDistToCage = lateral_dist_between_objects(o, obj->parentObj);\n        yawToCage = obj_angle_to_object(o, obj->parentObj);\n    }\n\n    cur_obj_become_intangible();\n    o->oFlags |= OBJ_FLAG_ACTIVE_FROM_AFAR;\n\n    // Switch goes from 0-7 in order.\n    switch (o->oSubAction) {\n        case UKIKI_SUB_ACT_CAGE_RUN_TO_CAGE:\n            cur_obj_init_animation_with_sound(UKIKI_ANIM_RUN);\n\n            o->oPathedStartWaypoint = (struct Waypoint *) sCageUkikiPath;\n\n            if (cur_obj_follow_path(0) != PATH_REACHED_END) {\n                o->oForwardVel = 10.0f;\n                cur_obj_rotate_yaw_toward(o->oPathedTargetYaw, 0x400);\n                o->oPosY = o->oFloorHeight;\n            } else {\n                o->oForwardVel = 0.0f;\n                o->oSubAction++;\n            }\n            break;\n\n        case UKIKI_SUB_ACT_CAGE_WAIT_FOR_MARIO:\n            cur_obj_init_animation_with_sound(UKIKI_ANIM_JUMP_CLAP);\n            cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x400);\n\n            if (cur_obj_can_mario_activate_textbox(200.0f, 30.0f, 0x7FFF)) {\n                o->oSubAction++; // fallthrough\n            } else {\n                break;\n            }\n\n        case UKIKI_SUB_ACT_CAGE_TALK_TO_MARIO:\n            cur_obj_init_animation_with_sound(UKIKI_ANIM_HANDSTAND);\n\n            if (cur_obj_update_dialog_with_cutscene(MARIO_DIALOG_LOOK_DOWN,\n                DIALOG_FLAG_TURN_TO_MARIO, CUTSCENE_DIALOG, DIALOG_080)) {\n                o->oSubAction++;\n            }\n            break;\n\n        case UKIKI_SUB_ACT_CAGE_TURN_TO_CAGE:\n            cur_obj_init_animation_with_sound(UKIKI_ANIM_RUN);\n\n            if (cur_obj_rotate_yaw_toward(yawToCage, 0x400)) {\n                o->oForwardVel = 10.0f;\n                o->oSubAction++;\n            }\n            break;\n\n        case UKIKI_SUB_ACT_CAGE_JUMP_TO_CAGE:\n            cur_obj_set_y_vel_and_animation(55.0f, UKIKI_ANIM_JUMP);\n            o->oForwardVel = 36.0f;\n            o->oSubAction++;\n            break;\n\n        case UKIKI_SUB_ACT_CAGE_LAND_ON_CAGE:\n            if (latDistToCage < 50.0f) {\n                o->oForwardVel = 0.0f;\n            }\n\n            if (o->oMoveFlags & OBJ_MOVE_LANDED) {\n                play_puzzle_jingle();\n                cur_obj_init_animation_with_sound(UKIKI_ANIM_JUMP_CLAP);\n                o->oSubAction++;\n                o->oUkikiCageSpinTimer = 32;\n                obj->parentObj->oUkikiCageNextAction = UKIKI_CAGE_ACT_SPIN;\n                o->oForwardVel = 0.0f;\n            }\n            break;\n\n        case UKIKI_SUB_ACT_CAGE_SPIN_ON_CAGE:\n            o->oMoveAngleYaw += 0x800;\n            o->oUkikiCageSpinTimer--;\n\n            if (o->oUkikiCageSpinTimer < 0) {\n                o->oSubAction++;\n                obj->parentObj->oUkikiCageNextAction = UKIKI_CAGE_ACT_FALL;\n            }\n            break;\n\n        case UKIKI_SUB_ACT_CAGE_DESPAWN:\n            if (o->oPosY < -1300.0f) {\n                obj_mark_for_deletion(o);\n            }\n            break;\n    }\n}\n\n/**\n * A struct of Ukiki's sounds based on his current\n * SoundState number.\n */\nstruct SoundState sUkikiSoundStates[] = {\n    {1, 1, 10, SOUND_OBJ_UKIKI_STEP_DEFAULT},\n    {0, 0, 0,  NO_SOUND},\n    {0, 0, 0,  NO_SOUND},\n    {0, 0, 0,  NO_SOUND},\n    {1, 0, -1, SOUND_OBJ_UKIKI_CHATTER_SHORT},\n    {1, 0, -1, SOUND_OBJ_UKIKI_CHATTER_LONG},\n    {0, 0, 0,  NO_SOUND},\n    {0, 0, 0,  NO_SOUND},\n    {1, 0, -1, SOUND_OBJ_UKIKI_CHATTER_LONG},\n    {1, 0, -1, SOUND_OBJ_UKIKI_STEP_LEAVES},\n    {1, 0, -1, SOUND_OBJ_UKIKI_CHATTER_IDLE},\n    {0, 0, 0,  NO_SOUND},\n    {0, 0, 0,  NO_SOUND},\n};\n\n/**\n * An array of each of Ukiki's actions. A function is called\n * every frame.\n */\nvoid (*sUkikiActions[])(void) = {\n    ukiki_act_idle,\n    ukiki_act_run,\n    ukiki_act_turn_to_mario,\n    ukiki_act_jump,\n    ukiki_act_go_to_cage,\n    ukiki_act_wait_to_respawn,\n    ukiki_act_unused_turn,\n    ukiki_act_return_home,\n};\n\n/**\n * Called via the main behavior function when Ukiki is either nothing\n * being held, dropped, or thrown.\n */\nvoid ukiki_free_loop(void) {\n    s32 steepSlopeAngleDegrees;\n\n    cur_obj_update_floor_and_walls();\n    cur_obj_call_action_function(sUkikiActions);\n\n    if (o->oAction == UKIKI_ACT_GO_TO_CAGE || o->oAction == UKIKI_ACT_RETURN_HOME) {\n        steepSlopeAngleDegrees = -88;\n    } else {\n        steepSlopeAngleDegrees = -20;\n    }\n\n    cur_obj_move_standard(steepSlopeAngleDegrees);\n    handle_cap_ukiki_reset();\n\n    if (!(o->oMoveFlags & OBJ_MOVE_MASK_IN_WATER)) {\n        exec_anim_sound_state(sUkikiSoundStates);\n    }\n}\n\n/**\n * Unused function for timing ukiki's blinking.\n * Image still present in Ukiki's actor graphics.\n *\n * Possibly unused so AnimState could be used for wearing a cap?\n */\nUNUSED static void ukiki_blink_timer(void) {\n    if (gGlobalTimer % 50 < 7) {\n        o->oAnimState = UKIKI_ANIM_STATE_EYE_CLOSED;\n    } else {\n        o->oAnimState = UKIKI_ANIM_STATE_DEFAULT;\n    }\n}\n\n/**\n * Called by the main behavior function for the cage ukiki whenever it is held.\n */\nvoid cage_ukiki_held_loop(void) {\n    if (o->oPosY - o->oHomeY > -100.0f) {\n        switch (o->oUkikiTextState) {\n            case UKIKI_TEXT_DEFAULT:\n                if (set_mario_npc_dialog(MARIO_DIALOG_LOOK_UP) == MARIO_DIALOG_STATUS_SPEAK) {\n                    create_dialog_box_with_response(DIALOG_079);\n                    o->oUkikiTextState = UKIKI_TEXT_CAGE_TEXTBOX;\n                }\n                break;\n\n            case UKIKI_TEXT_CAGE_TEXTBOX:\n                if (gDialogResponse != DIALOG_RESPONSE_NONE) {\n                    set_mario_npc_dialog(MARIO_DIALOG_STOP);\n                    if (gDialogResponse == DIALOG_RESPONSE_YES) {\n                        o->oInteractionSubtype |= INT_SUBTYPE_DROP_IMMEDIATELY;\n                        o->oUkikiTextState = UKIKI_TEXT_GO_TO_CAGE;\n                    } else {\n                        o->oUkikiTextState = UKIKI_TEXT_DO_NOT_LET_GO;\n                        o->oUkikiTextboxTimer = 60;\n                    }\n                }\n                break;\n\n            case UKIKI_TEXT_GO_TO_CAGE:\n                break;\n\n            // Pester Mario with textboxes to discourage walking far.\n            case UKIKI_TEXT_DO_NOT_LET_GO:\n                if (o->oUkikiTextboxTimer-- < 0) {\n                    o->oUkikiTextState = UKIKI_TEXT_DEFAULT;\n                }\n                break;\n        }\n    } else {\n        // If ukiki is far below his home, stop him from trying to\n        // walk to the cage and getting stuck.\n        o->oUkikiTextState = UKIKI_TEXT_DEFAULT;\n        o->oTimer = 0;\n        o->oAction = UKIKI_ACT_WAIT_TO_RESPAWN;\n    }\n}\n\n/**\n * Called by the main behavior function for the cap ukiki whenever it is held.\n */\nvoid cap_ukiki_held_loop(void) {\n    switch (o->oUkikiTextState) {\n        case UKIKI_TEXT_DEFAULT:\n            if (mario_lose_cap_to_enemy(2)) {\n                o->oUkikiTextState = UKIKI_TEXT_STEAL_CAP;\n                o->oUkikiHasCap |= UKIKI_CAP_ON;\n            } else {\n            }\n            break;\n\n        case UKIKI_TEXT_STEAL_CAP:\n            if (cur_obj_update_dialog(MARIO_DIALOG_LOOK_UP, DIALOG_FLAG_TEXT_DEFAULT, DIALOG_100, 0)) {\n                o->oInteractionSubtype |= INT_SUBTYPE_DROP_IMMEDIATELY;\n                o->oUkikiTextState = UKIKI_TEXT_STOLE_CAP;\n            }\n            break;\n\n        case UKIKI_TEXT_STOLE_CAP:\n            break;\n\n        case UKIKI_TEXT_HAS_CAP:\n            if (cur_obj_update_dialog(MARIO_DIALOG_LOOK_UP,\n                (DIALOG_FLAG_TEXT_DEFAULT | DIALOG_FLAG_TIME_STOP_ENABLED), DIALOG_101, 0)) {\n                mario_retrieve_cap();\n                set_mario_npc_dialog(MARIO_DIALOG_STOP);\n                o->oUkikiHasCap &= ~UKIKI_CAP_ON;\n                o->oUkikiTextState = UKIKI_TEXT_GAVE_CAP_BACK;\n            }\n            break;\n\n        case UKIKI_TEXT_GAVE_CAP_BACK:\n            o->oUkikiTextState = UKIKI_TEXT_DEFAULT;\n            o->oAction = UKIKI_ACT_IDLE;\n            break;\n    }\n}\n\n/**\n * Initializatation for ukiki, determines if it has Mario's cap.\n */\nvoid bhv_ukiki_init(void) {\n    if ((o->oBhvParams2ndByte == UKIKI_BP_CAP)\n        && (save_file_get_flags() & SAVE_FLAG_CAP_ON_UKIKI)) {\n        o->oUkikiTextState = UKIKI_TEXT_HAS_CAP;\n        o->oUkikiHasCap |= UKIKI_CAP_ON;\n    }\n}\n\n/**\n * The main behavior function for ukiki. Chooses which behavior to use\n * dependent on the held state and whick ukiki it is (cage or cap).\n */\nvoid bhv_ukiki_loop(void) {\n    switch (o->oHeldState) {\n        case HELD_FREE:\n            //! @bug (PARTIAL_UPDATE)\n            o->oUkikiTextboxTimer = 0;\n            ukiki_free_loop();\n            break;\n\n        case HELD_HELD:\n            cur_obj_unrender_set_action_and_anim(UKIKI_ANIM_HELD, 0);\n            obj_copy_pos(o, gMarioObject);\n\n            if (o->oBhvParams2ndByte == UKIKI_BP_CAP) {\n                cap_ukiki_held_loop();\n            } else {\n                cage_ukiki_held_loop();\n            }\n            break;\n\n        case HELD_THROWN:\n        case HELD_DROPPED:\n            cur_obj_get_dropped();\n            break;\n    }\n\n    if (o->oUkikiHasCap & UKIKI_CAP_ON) {\n        o->oAnimState = UKIKI_ANIM_STATE_CAP_ON;\n    } else {\n        o->oAnimState = UKIKI_ANIM_STATE_DEFAULT;\n    }\n\n    o->oInteractStatus = 0;\n\n    print_debug_bottom_up(\"mode   %d\\n\", o->oAction);\n    print_debug_bottom_up(\"action %d\\n\", o->oHeldState);\n}\n"
  },
  {
    "path": "src/game/behaviors/ukiki_cage.inc.c",
    "content": "\n/**\n * @file Contains behavior for the ukiki's cage\n * and the star within the cage.\n *\n * The cage is parent of the cage star and another\n * dummy object referenced by ukiki (bhvUkikiCageChild).\n */\n\n/**\n * Behavior for the cage star.\n * Only really used for initializing then spawning the star.\n *\n * Not an actual star object until later.\n */\nvoid bhv_ukiki_cage_star_loop(void) {\n    switch (o->oAction) {\n        case UKIKI_CAGE_STAR_ACT_IN_CAGE:\n            // Initialization to see if the star is collected (blue) or not (yellow).\n            if (o->oTimer == 0) {\n                if (bit_shift_left(1)\n                    & save_file_get_star_flags(gCurrSaveFileNum - 1, COURSE_NUM_TO_INDEX(gCurrCourseNum))) {\n                    cur_obj_set_model(MODEL_TRANSPARENT_STAR);\n                }\n            }\n\n            obj_copy_pos(o, o->parentObj);\n            obj_copy_behavior_params(o, o->parentObj);\n\n            // When they cage hides itself, spawn particles and the star.\n            if (o->parentObj->oAction == UKIKI_CAGE_ACT_HIDE) {\n                o->oAction++;\n            }\n            break;\n\n        case UKIKI_CAGE_STAR_ACT_SPAWN_STAR:\n            obj_mark_for_deletion(o);\n            spawn_mist_particles();\n            spawn_triangle_break_particles(20, MODEL_DIRT_ANIMATION, 0.7f, 3);\n            spawn_default_star(2500.0f, -1200.0f, 1300.0f);\n            break;\n    }\n\n    // Spin to look like a star.\n    o->oFaceAngleYaw += 0x400;\n}\n\n/**\n * Default state until ukiki reaches the cage.\n */\nvoid ukiki_cage_act_wait_for_ukiki(void) {\n    if (o->oUkikiCageNextAction != UKIKI_CAGE_ACT_WAIT_FOR_UKIKI) {\n        o->oAction = UKIKI_CAGE_ACT_SPIN;\n    }\n\n    load_object_collision_model();\n}\n\n/**\n * Spin once ukiki has landed on the cage.\n */\nvoid ukiki_cage_act_spin(void) {\n    if (o->oUkikiCageNextAction != UKIKI_CAGE_ACT_SPIN) {\n        o->oAction = UKIKI_CAGE_ACT_FALL;\n    }\n\n    o->oMoveAngleYaw += 0x800;\n    load_object_collision_model();\n}\n\n/**\n * Assist ukiki in his death.\n */\nvoid ukiki_cage_act_fall(void) {\n    //! (PARTIAL_UPDATE)\n    cur_obj_update_floor_and_walls();\n    cur_obj_move_standard(78);\n    if (o->oMoveFlags & (OBJ_MOVE_LANDED | OBJ_MOVE_ENTERED_WATER)) {\n        o->oAction = UKIKI_CAGE_ACT_HIDE;\n    }\n}\n\n/**\n * Hide once we've exploded.\n *\n * Perhaps deleting the object would be better than\n * hiding the object?\n */\nvoid ukiki_cage_act_hide(void) {\n    cur_obj_hide();\n}\n\n/**\n * An array of the cage's actions.\n */\nvoid (*sUkikiCageActions[])(void) = {\n    ukiki_cage_act_wait_for_ukiki,\n    ukiki_cage_act_spin,\n    ukiki_cage_act_fall,\n    ukiki_cage_act_hide,\n};\n\n/**\n * Main behavior loop for the cage. Only calls the relevant action.\n */\nvoid bhv_ukiki_cage_loop(void) {\n    cur_obj_call_action_function(sUkikiCageActions);\n}\n"
  },
  {
    "path": "src/game/behaviors/unagi.inc.c",
    "content": "// unagi.inc.c\n\nstruct ObjectHitbox sUnagiHitbox = {\n    /* interactType:      */ INTERACT_CLAM_OR_BUBBA,\n    /* downOffset:        */ 50,\n    /* damageOrCoinValue: */ 3,\n    /* health:            */ 99,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 150,\n    /* height:            */ 150,\n    /* hurtboxRadius:     */ 150,\n    /* hurtboxHeight:     */ 150,\n};\n\nvoid bhv_unagi_init(void) {\n    if (o->oBhvParams2ndByte != 1) {\n        o->oPathedStartWaypoint = segmented_to_virtual(jrb_seg7_trajectory_unagi_1);\n        if (o->oBhvParams2ndByte == 0) {\n            o->oFaceAnglePitch = -7600;\n        } else {\n            o->oAction = 1;\n        }\n    } else {\n        o->oPathedStartWaypoint = segmented_to_virtual(jrb_seg7_trajectory_unagi_2);\n        o->oAction = 3;\n        o->oAnimState = 1;\n\n        o->oUnagiUnk1B0 = o->oMoveAngleYaw;\n    }\n\n    o->oPathedPrevWaypoint = o->oPathedStartWaypoint;\n}\n\nvoid unagi_act_0(void) {\n    if (o->oDistanceToMario > 4500.0f && o->oSubAction != 0) {\n        o->oAction = 1;\n        o->oPosX = o->oPathedStartWaypoint->pos[0];\n        o->oPosY = o->oPathedStartWaypoint->pos[1];\n        o->oPosZ = o->oPathedStartWaypoint->pos[2];\n    } else if (o->oUnagiUnk1AC < 700.0f) {\n        o->oSubAction = 1;\n    }\n}\n\nvoid unagi_act_1_4(s32 arg0) {\n    if (o->oSoundStateID == 3) {\n        if (cur_obj_check_anim_frame(30)) {\n            o->oForwardVel = 40.0f;\n        }\n    } else if (cur_obj_check_if_at_animation_end()) {\n        if (o->oAction != arg0 && (o->oPathedPrevWaypointFlags & 0xFF) >= 7) {\n            cur_obj_init_animation_with_sound(3);\n        } else {\n            cur_obj_init_animation_with_sound(2);\n        }\n    }\n\n    if (cur_obj_check_anim_frame(6)) {\n        cur_obj_play_sound_2(SOUND_GENERAL_MOVING_WATER);\n    }\n\n    if (cur_obj_follow_path(0) == PATH_REACHED_END) {\n        o->oAction = arg0;\n    }\n\n    o->oMoveAnglePitch = o->oFaceAnglePitch =\n        approach_s16_symmetric(o->oMoveAnglePitch, o->oPathedTargetPitch, 50);\n\n    cur_obj_rotate_yaw_toward(o->oPathedTargetYaw, 120);\n    obj_roll_to_match_yaw_turn(o->oPathedTargetYaw, 0x2000, 100);\n\n    obj_forward_vel_approach(10.0f, 0.2f);\n    cur_obj_set_pos_via_transform();\n}\n\nvoid unagi_act_2(void) {\n    o->oPathedPrevWaypoint = o->oPathedStartWaypoint;\n    o->oPathedPrevWaypointFlags = 0;\n\n    cur_obj_set_pos_to_home();\n\n    o->oMoveAnglePitch = o->oFaceAnglePitch = 0;\n    o->oMoveAngleYaw = o->oFaceAngleYaw = o->oUnagiUnk1B0;\n    o->oFaceAngleRoll = 0;\n\n    o->oForwardVel = o->oVelX = o->oVelZ = o->oUnagiUnkF8 = 0.0f;\n\n    o->oUnagiUnkF4 = -800.0f;\n\n    o->oAction = 3;\n}\n\nvoid unagi_act_3(void) {\n    if (o->oUnagiUnkF4 < 0.0f) {\n        cur_obj_init_animation_with_sound(6);\n\n        if ((o->oUnagiUnkF4 += 10.0f) > 0.0f) {\n            o->oUnagiUnkF4 = 0.0f;\n        }\n    } else {\n        if (o->oUnagiUnkF4 == 0.0f) {\n            cur_obj_init_animation_with_sound(6);\n\n            if (o->oTimer > 60 && o->oUnagiUnk1AC < 1000.0f) {\n                cur_obj_play_sound_2(SOUND_OBJ_EEL_2);\n                o->oUnagiUnkF8 = o->oUnagiUnk110 = 30.0f;\n            } else {\n                o->oUnagiUnk110 = 0.0f;\n            }\n        } else if (o->oUnagiUnk110 > 0.0f) {\n            if (cur_obj_init_anim_and_check_if_end(5)) {\n                o->oUnagiUnk110 = 0.0f;\n            }\n        } else if (o->oUnagiUnk110 == 0.0f) {\n            cur_obj_init_animation_with_sound(0);\n            if (cur_obj_check_if_at_animation_end()) {\n                if (o->oUnagiUnk1AC < 1000.0f) {\n                    o->oAction = 4;\n                    o->oForwardVel = o->oUnagiUnkF8;\n                    cur_obj_init_animation_with_sound(1);\n                } else {\n                    o->oUnagiUnk110 = -50.0f;\n                    cur_obj_init_animation_with_sound(4);\n                }\n            }\n        }\n\n        approach_f32_ptr(&o->oUnagiUnkF8, o->oUnagiUnk110, 4.0f);\n\n        if ((o->oUnagiUnkF4 += o->oUnagiUnkF8) < 0.0f) {\n            o->oUnagiUnkF4 = o->oUnagiUnkF8 = 0.0f;\n            o->oTimer = 0;\n        }\n    }\n\n    o->oPosX = o->oHomeX + o->oUnagiUnkF4 * sins(o->oMoveAngleYaw);\n    o->oPosZ = o->oHomeZ + o->oUnagiUnkF4 * coss(o->oMoveAngleYaw);\n}\n\nvoid bhv_unagi_loop(void) {\n    s32 i;\n\n    if (o->oUnagiUnk1B2 == 0) {\n        o->oUnagiUnk1AC = 99999.0f;\n        if (o->oDistanceToMario < 3000.0f) {\n            for (i = -4; i < 4; i++) {\n                spawn_object_relative(i, 0, 0, 0, o, MODEL_NONE, bhvUnagiSubobject);\n            }\n            o->oUnagiUnk1B2 = 1;\n        }\n    } else if (o->oDistanceToMario > 4000.0f) {\n        o->oUnagiUnk1B2 = 0;\n    }\n\n    switch (o->oAction) {\n        case 0:\n            unagi_act_0();\n            break;\n        case 1:\n            unagi_act_1_4(o->oAction);\n            break;\n        case 2:\n            unagi_act_2();\n        case 3:\n            unagi_act_3();\n            break;\n        case 4:\n            unagi_act_1_4(2);\n            break;\n    }\n}\n\nvoid bhv_unagi_subobject_loop(void) {\n    if (o->parentObj->oUnagiUnk1B2 == 0) {\n        obj_mark_for_deletion(o);\n    } else {\n        f32 val04 = 300.0f * o->oBhvParams2ndByte;\n\n        o->oPosY = o->parentObj->oPosY - val04 * sins(o->parentObj->oFaceAnglePitch) * 1.13f;\n\n        val04 = coss(o->parentObj->oFaceAnglePitch / 2) * val04;\n\n        o->oPosX = o->parentObj->oPosX + val04 * sins(o->parentObj->oFaceAngleYaw);\n        o->oPosZ = o->parentObj->oPosZ + val04 * coss(o->parentObj->oFaceAngleYaw);\n\n        if (o->oBhvParams2ndByte == -4) {\n            if (o->parentObj->oAnimState != 0 && o->oDistanceToMario < 150.0f) {\n                o->oBhvParams = o->parentObj->oBhvParams;\n                spawn_default_star(6833.0f, -3654.0f, 2230.0f);\n                o->parentObj->oAnimState = 0;\n            }\n        } else {\n            obj_check_attacks(&sUnagiHitbox, o->oAction);\n            if (o->oBhvParams2ndByte == 3) {\n                o->parentObj->oUnagiUnk1AC = o->oDistanceToMario;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/unused_particle_spawn.inc.c",
    "content": "\n/**\n * Behavior for bhvUnusedParticleSpawn.\n *\n * This unused behavior spawns 10 purple particles if Mario collides with its\n * associated object.\n */\n\nvoid bhv_unused_particle_spawn_loop(void) {\n    s32 i;\n    cur_obj_update_floor_and_walls();\n    cur_obj_move_standard(78);\n\n    if (o->oMoveFlags & OBJ_MOVE_ON_GROUND) {\n        obj_mark_for_deletion(o);\n    }\n\n    if (obj_check_if_collided_with_object(o, gMarioObject)) {\n        obj_mark_for_deletion(o);\n\n        for (i = 0; i < 10; i++) {\n            spawn_object(o, MODEL_PURPLE_MARBLE, bhvPurpleParticle);\n        }\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/unused_poundable_platform.inc.c",
    "content": "\n/**\n * Behavior for bhvUnusedPoundablePlatform.\n *\n * This unused behavior controls a platform that shatters into small triangles\n * if Mario ground pounds it.\n *\n * Its collision model perfectly aligns with the hole leading to In the\n * Deep Freeze in Snowman's Land. It is likely that players early in development\n * would have to ground pound this platform before being able to access the star.\n *\n * Curiously, the triangles spawned when the platform breaks use a model that\n * is not used anywhere else.\n */\n\nvoid bhv_unused_poundable_platform(void) {\n    cur_obj_scale(1.02f);\n\n    if (o->oAction == 0) {\n        if (cur_obj_is_mario_ground_pounding_platform()) {\n            spawn_mist_particles();\n            spawn_triangle_break_particles(20, MODEL_SL_CRACKED_ICE_CHUNK, 3.0f, 0);\n            o->oAction++;\n        }\n    } else if (o->oTimer > 7) {\n        obj_mark_for_deletion(o);\n    }\n\n    load_object_collision_model();\n}\n"
  },
  {
    "path": "src/game/behaviors/warp.inc.c",
    "content": "// warp.inc.c\n\nvoid bhv_warp_loop(void) {\n    if (o->oTimer == 0) {\n        u16 bhvParams1stByte = (o->oBhvParams >> 24) & 0xFF;\n\n        if (bhvParams1stByte == 0x00) {\n            o->hitboxRadius = 50.0f;\n        } else if (bhvParams1stByte == 0xFF) {\n            o->hitboxRadius = 10000.0f;\n        } else {\n            o->hitboxRadius = bhvParams1stByte * 10.0;\n        }\n        o->hitboxHeight = 50.0f;\n    }\n\n    o->oInteractStatus = 0;\n}\n\n// identical to the above function except for o->hitboxRadius\nvoid bhv_fading_warp_loop() {\n    if (o->oTimer == 0) {\n        u16 bhvParams1stByte = (o->oBhvParams >> 24) & 0xFF;\n\n        if (bhvParams1stByte == 0x00) {\n            o->hitboxRadius = 85.0f;\n        } else if (bhvParams1stByte == 0xFF) {\n            o->hitboxRadius = 10000.0f;\n        } else {\n            o->hitboxRadius = bhvParams1stByte * 10.0;\n        }\n        o->hitboxHeight = 50.0f;\n    }\n\n    o->oInteractStatus = 0;\n}\n"
  },
  {
    "path": "src/game/behaviors/water_bomb.inc.c",
    "content": "\n/**\n * Behaviors for bhvWaterBombSpawner, bhvWaterBomb, and bhvWaterBombShadow.\n * The spawner spawns the water bombs that fall on mario from above. These ones\n * start in the WATER_BOMB_ACT_INIT action.\n * Water bombs can also be shot by cannons. These ones stay in the\n * WATER_BOMB_ACT_SHOT_FROM_CANNON action.\n * The water bomb shadow is only spawned by water bomb spawners.\n */\n\n/**\n * Hitbox for water bombs that are spawned by a water bomb spawner. The water\n * bombs that are shot from cannons are intangible.\n */\nstatic struct ObjectHitbox sWaterBombHitbox = {\n    /* interactType:      */ INTERACT_MR_BLIZZARD,\n    /* downOffset:        */ 25,\n    /* damageOrCoinValue: */ 1,\n    /* health:            */ 99,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 80,\n    /* height:            */ 50,\n    /* hurtboxRadius:     */ 60,\n    /* hurtboxHeight:     */ 50,\n};\n\n/**\n * Update function for bhvWaterBombSpawner.\n * Spawn water bombs targeting mario when he comes in range.\n */\nvoid bhv_water_bomb_spawner_update(void) {\n    f32 latDistToMario;\n    f32 spawnerRadius = 50 * (u16)(o->oBhvParams >> 16) + 200.0f;\n\n    latDistToMario = lateral_dist_between_objects(o, gMarioObject);\n\n    // When mario is in range and a water bomb isn't already active\n    if (!o->oWaterBombSpawnerBombActive && latDistToMario < spawnerRadius\n        && gMarioObject->oPosY - o->oPosY < 1000.0f) {\n        if (o->oWaterBombSpawnerTimeToSpawn != 0) {\n            o->oWaterBombSpawnerTimeToSpawn--;\n        } else {\n            struct Object *waterBomb =\n                spawn_object_relative(0, 0, 2000, 0, o, MODEL_WATER_BOMB, bhvWaterBomb);\n\n            if (waterBomb != NULL) {\n                // Drop farther ahead of mario when he is moving faster\n                f32 waterBombDistToMario = 28.0f * gMarioStates[0].forwardVel + 100.0f;\n\n                waterBomb->oAction = WATER_BOMB_ACT_INIT;\n\n                waterBomb->oPosX =\n                    gMarioObject->oPosX + waterBombDistToMario * sins(gMarioObject->oMoveAngleYaw);\n                waterBomb->oPosZ =\n                    gMarioObject->oPosZ + waterBombDistToMario * coss(gMarioObject->oMoveAngleYaw);\n\n                spawn_object(waterBomb, MODEL_WATER_BOMB_SHADOW, bhvWaterBombShadow);\n\n                o->oWaterBombSpawnerBombActive = TRUE;\n                o->oWaterBombSpawnerTimeToSpawn = random_linear_offset(0, 50);\n            }\n        }\n    }\n}\n\n/**\n * Spawn particles when the water bomb explodes.\n */\nvoid water_bomb_spawn_explode_particles(s8 offsetY, s8 forwardVelRange, s8 velYBase) {\n    static struct SpawnParticlesInfo waterBombExplodeParticles = {\n        /* bhvParam:        */ 0,\n        /* count:           */ 5,\n        /* model:           */ MODEL_BUBBLE,\n        /* offsetY:         */ 20,\n        /* forwardVelBase:  */ 20,\n        /* forwardVelRange: */ 60,\n        /* velYBase:        */ 10,\n        /* velYRange:       */ 10,\n        /* gravity:         */ -2,\n        /* dragStrength:    */ 0,\n        /* sizeBase:        */ 35.0f,\n        /* sizeRange:       */ 10.0f,\n    };\n\n    waterBombExplodeParticles.offsetY = offsetY;\n    waterBombExplodeParticles.forwardVelRange = forwardVelRange;\n    waterBombExplodeParticles.velYBase = velYBase;\n\n    cur_obj_spawn_particles(&waterBombExplodeParticles);\n}\n\n/**\n * Enter the drop action with -40 y vel.\n */\nstatic void water_bomb_act_init(void) {\n    cur_obj_play_sound_2(SOUND_OBJ_SOMETHING_LANDING);\n\n    o->oAction = WATER_BOMB_ACT_DROP;\n    o->oMoveFlags = 0;\n    o->oVelY = -40.0f;\n}\n\n/**\n * Explode on impact, and otherwise bounce a few times on the ground and then\n * explode.\n */\nstatic void water_bomb_act_drop(void) {\n    f32 stretch;\n\n    obj_set_hitbox(o, &sWaterBombHitbox);\n\n    // Explode if touched or if hit water\n    if ((o->oInteractStatus & INT_STATUS_INTERACTED) || (o->oMoveFlags & OBJ_MOVE_ENTERED_WATER)) {\n        create_sound_spawner(SOUND_OBJ_DIVING_IN_WATER);\n        set_camera_shake_from_point(SHAKE_POS_SMALL, o->oPosX, o->oPosY, o->oPosZ);\n        o->oAction = WATER_BOMB_ACT_EXPLODE;\n    } else if (o->oMoveFlags & OBJ_MOVE_MASK_ON_GROUND) {\n        // On impact with the ground, begin getting squished\n        if (!o->oWaterBombOnGround) {\n            o->oWaterBombOnGround = TRUE;\n\n            if ((o->oWaterBombNumBounces += 1.0f) < 3.0f) {\n                cur_obj_play_sound_2(SOUND_OBJ_WATER_BOMB_BOUNCING);\n            } else {\n                create_sound_spawner(SOUND_OBJ_DIVING_IN_WATER);\n            }\n\n            set_camera_shake_from_point(SHAKE_POS_SMALL, o->oPosX, o->oPosY, o->oPosZ);\n\n            // Move toward mario\n            o->oMoveAngleYaw = o->oAngleToMario;\n            o->oForwardVel = 10.0f;\n            o->oWaterBombStretchSpeed = -40.0f;\n        }\n\n        // Make less of an attempt to unsquish on each bounce\n        o->oWaterBombStretchSpeed += 15.0f - o->oWaterBombNumBounces * 2.8f;\n\n        o->oWaterBombVerticalStretch += o->oWaterBombStretchSpeed * 0.01f;\n\n        // After being too squished, explode\n        if (o->oWaterBombVerticalStretch < -0.8f) {\n            o->oAction = WATER_BOMB_ACT_EXPLODE;\n        } else if (o->oWaterBombVerticalStretch > 0.1f) {\n            // Begin bounce trajectory\n            o->oVelY = 1.8f * o->oWaterBombStretchSpeed;\n        }\n    } else {\n        approach_f32_ptr(&o->oWaterBombVerticalStretch, 0.0f, 0.008f);\n        o->oWaterBombOnGround = FALSE;\n    }\n\n    o->header.gfx.scale[1] = o->oWaterBombVerticalStretch + 1.0f;\n\n    stretch = o->oWaterBombVerticalStretch;\n    if (o->oWaterBombNumBounces == 3.0f) {\n        stretch *= 4.0f;\n    }\n    o->header.gfx.scale[0] = o->header.gfx.scale[2] = 1.0f - stretch;\n\n    cur_obj_move_standard(78);\n}\n\n/**\n * Spawn particles, then despawn. This action informs the water bomb shadow to\n * despawn as well.\n */\nstatic void water_bomb_act_explode(void) {\n    water_bomb_spawn_explode_particles(25, 60, 10);\n    o->parentObj->oWaterBombSpawnerBombActive = FALSE;\n    obj_mark_for_deletion(o);\n}\n\n/**\n * Despawn after 100 frames.\n */\nstatic void water_bomb_act_shot_from_cannon(void) {\n    static struct SpawnParticlesInfo waterBombCannonParticle = {\n        /* bhvParam:        */ 0,\n        /* count:           */ 1,\n        /* model:           */ MODEL_BUBBLE,\n        /* offsetY:         */ 236,\n        /* forwardVelBase:  */ 20,\n        /* forwardVelRange: */ 5,\n        /* velYBase:        */ 0,\n        /* velYRange:       */ 0,\n        /* gravity:         */ -2,\n        /* dragStrength:    */ 0,\n        /* sizeBase:        */ 20.0f,\n        /* sizeRange:       */ 5.0f,\n    };\n\n    if (o->oTimer > 100) {\n        obj_mark_for_deletion(o);\n    } else {\n        if (o->oTimer < 7) {\n            if (o->oTimer == 1) {\n                water_bomb_spawn_explode_particles(-20, 10, 30);\n            }\n            cur_obj_spawn_particles(&waterBombCannonParticle);\n        }\n\n        if (o->header.gfx.scale[1] > 1.2f) {\n            o->header.gfx.scale[1] -= 0.1f;\n        }\n\n        o->header.gfx.scale[0] = o->header.gfx.scale[2] = 2.0f - o->header.gfx.scale[1];\n        cur_obj_set_pos_via_transform();\n    }\n}\n\n/**\n * Update function for bhvWaterBomb.\n */\nvoid bhv_water_bomb_update(void) {\n    if (o->oAction == WATER_BOMB_ACT_SHOT_FROM_CANNON) {\n        water_bomb_act_shot_from_cannon();\n    } else {\n        o->oGraphYOffset = 40.0f * o->header.gfx.scale[1];\n        cur_obj_update_floor_and_walls();\n\n        switch (o->oAction) {\n            case WATER_BOMB_ACT_INIT:\n                water_bomb_act_init();\n                break;\n            case WATER_BOMB_ACT_DROP:\n                water_bomb_act_drop();\n                break;\n            case WATER_BOMB_ACT_EXPLODE:\n                water_bomb_act_explode();\n                break;\n        }\n    }\n}\n\n/**\n * Update function for bhvWaterBombShadow.\n * Despawn when the parent water bomb does.\n */\nvoid bhv_water_bomb_shadow_update(void) {\n    if (o->parentObj->oAction == WATER_BOMB_ACT_EXPLODE) {\n        obj_mark_for_deletion(o);\n    } else {\n        // TODO: What is happening here\n        f32 bombHeight = o->parentObj->oPosY - o->parentObj->oFloorHeight;\n        if (bombHeight > 500.0f) {\n            bombHeight = 500.0f;\n        }\n\n        obj_copy_pos(o, o->parentObj);\n        o->oPosY = o->parentObj->oFloorHeight + bombHeight;\n        obj_copy_scale(o, o->parentObj);\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/water_bomb_cannon.inc.c",
    "content": "// water_bomb_cannon.inc.c\n\nvoid bhv_bubble_cannon_barrel_loop(void) {\n    if (o->parentObj->oAction == 2) {\n        obj_mark_for_deletion(o);\n    } else {\n        o->oMoveAngleYaw = o->parentObj->oFaceAngleYaw;\n        o->oMoveAnglePitch = o->parentObj->oMoveAnglePitch + 0x4000;\n        o->oFaceAnglePitch = o->parentObj->oMoveAnglePitch;\n\n        if ((o->oCannonBarrelBubblesUnkF4 += o->oForwardVel) > 0.0f) {\n            cur_obj_set_pos_via_transform();\n            obj_forward_vel_approach(-5.0f, 18.0f);\n        } else {\n            o->oCannonBarrelBubblesUnkF4 = 0.0f;\n            obj_copy_pos(o, o->parentObj);\n\n            // check this\n            if (o->parentObj->oWaterCannonUnkF4 != 0) {\n                if (o->oForwardVel == 0.0f) {\n                    struct Object *waterBomb;\n\n                    o->oForwardVel = 35.0f;\n\n                    waterBomb = spawn_object(o, MODEL_WATER_BOMB, bhvWaterBomb);\n                    if (waterBomb != NULL) {\n                        waterBomb->oForwardVel = -100.0f;\n                        waterBomb->header.gfx.scale[1] = 1.7f;\n                    }\n\n                    set_camera_shake_from_point(SHAKE_POS_MEDIUM, o->oPosX, o->oPosY, o->oPosZ);\n                }\n            } else {\n                o->oForwardVel = 0.0f;\n            }\n        }\n    }\n}\n\nvoid water_bomb_cannon_act_0(void) {\n    if (o->oDistanceToMario < 2000.0f) {\n        spawn_object(o, MODEL_CANNON_BARREL, bhvCannonBarrelBubbles);\n        cur_obj_unhide();\n\n        o->oAction = 1;\n        o->oMoveAnglePitch = o->oWaterCannonUnkFC = 0x1C00;\n    }\n}\n\nvoid water_bomb_cannon_act_1(void) {\n    if (o->oDistanceToMario > 2500.0f) {\n        o->oAction = 2;\n    } else if (o->oBhvParams2ndByte == 0) {\n        if (o->oWaterCannonUnkF4 != 0) {\n            o->oWaterCannonUnkF4--;\n        } else {\n            obj_move_pitch_approach(o->oWaterCannonUnkFC, 0x80);\n            obj_face_yaw_approach(o->oWaterCannonUnk100, 0x100);\n\n            if ((s16) o->oFaceAngleYaw == (s16) o->oWaterCannonUnk100) {\n                if (o->oWaterCannonUnkF8 != 0) {\n                    o->oWaterCannonUnkF8--;\n                } else {\n                    cur_obj_play_sound_2(SOUND_OBJ_CANNON4);\n                    o->oWaterCannonUnkF4 = 70;\n                    o->oWaterCannonUnkFC = 0x1000 + 0x400 * (random_u16() & 0x03);\n                    o->oWaterCannonUnk100 = -0x2000 + o->oMoveAngleYaw + 0x1000 * (random_u16() % 5);\n                    o->oWaterCannonUnkF8 = 60;\n                }\n            }\n        }\n    }\n}\n\nvoid water_bomb_cannon_act_2(void) {\n    cur_obj_hide();\n    o->oAction = 0;\n}\n\nvoid bhv_water_bomb_cannon_loop(void) {\n    cur_obj_push_mario_away_from_cylinder(220.0f, 300.0f);\n\n    switch (o->oAction) {\n        case 0:\n            water_bomb_cannon_act_0();\n            break;\n        case 1:\n            water_bomb_cannon_act_1();\n            break;\n        case 2:\n            water_bomb_cannon_act_2();\n            break;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/water_mist.inc.c",
    "content": "// water_mist.inc.c\n// TODO: there is confusion with the earlier mist file. Clarify?\n\nvoid bhv_water_mist_2_loop(void) {\n    o->oPosY = find_water_level(o->oHomeX, o->oHomeZ) + 20.0f;\n    o->oPosX = o->oHomeX + random_f32_around_zero(150.0f);\n    o->oPosZ = o->oHomeZ + random_f32_around_zero(150.0f);\n    o->oOpacity = random_float() * 50.0f + 200.0f;\n}\n"
  },
  {
    "path": "src/game/behaviors/water_mist_particle.inc.c",
    "content": "// water_mist_particle.inc.c\n// TODO: Is this really \"mist\"?\n\nvoid bhv_water_mist_spawn_loop(void) {\n    clear_particle_flags(ACTIVE_PARTICLE_BREATH);\n    spawn_object(o, MODEL_MIST, bhvWaterMist);\n}\n\nvoid bhv_water_mist_loop(void) {\n    f32 scale;\n\n    if (o->oTimer == 0) {\n        o->oMoveAngleYaw = gMarioObject->oMoveAngleYaw;\n        obj_translate_xz_random(o, 10.0f);\n    }\n\n    cur_obj_move_using_fvel_and_gravity();\n    o->oOpacity -= 42;\n    scale = (254 - o->oOpacity) / 254.0 * 1.0 + 0.5; // seen this before\n    cur_obj_scale(scale);\n\n    if (o->oOpacity < 2) {\n        obj_mark_for_deletion(o);\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/water_objs.inc.c",
    "content": "// water_objs.inc.c\n// TODO: Better name, please\n\nvoid bhv_water_air_bubble_init(void) {\n    cur_obj_scale(4.0f);\n}\n\n// Fields 0xF4 & 0xF8 seem to be angles for bubble and cannon\n\nvoid bhv_water_air_bubble_loop(void) {\n    s32 i;\n\n    o->header.gfx.scale[0] = sins(o->oWaterObjUnkF4) * 0.5 + 4.0;\n    o->header.gfx.scale[1] = -sins(o->oWaterObjUnkF4) * 0.5 + 4.0;\n    o->oWaterObjUnkF4 += 0x400;\n\n    if (o->oTimer < 30) {\n        cur_obj_become_intangible();\n        o->oPosY += 3.0f;\n    } else {\n        cur_obj_become_tangible();\n        cur_obj_forward_vel_approach_upward(2.0f, 10.0f);\n        o->oMoveAngleYaw = obj_angle_to_object(o, gMarioObject);\n        cur_obj_move_using_fvel_and_gravity();\n    }\n\n    o->oPosX += random_float() * 4.0f - 2.0f;\n    o->oPosZ += random_float() * 4.0f - 2.0f;\n\n    if (o->oInteractStatus & INT_STATUS_INTERACTED || o->oTimer > 200) {\n        cur_obj_play_sound_2(SOUND_GENERAL_QUIET_BUBBLE);\n        obj_mark_for_deletion(o);\n        for (i = 0; i < 30; i++) {\n            spawn_object(o, MODEL_BUBBLE, bhvBubbleMaybe);\n        }\n    }\n\n    if (find_water_level(o->oPosX, o->oPosZ) < o->oPosY) {\n        obj_mark_for_deletion(o);\n    }\n\n    o->oInteractStatus = 0;\n}\n\nvoid bhv_bubble_wave_init(void) {\n    o->oWaterObjUnkFC  = 0x800 + (s32)(random_float() * 2048.0f);\n    o->oWaterObjUnk100 = 0x800 + (s32)(random_float() * 2048.0f);\n    cur_obj_play_sound_2(SOUND_GENERAL_QUIET_BUBBLE);\n}\n\nvoid scale_bubble_random(void) {\n    cur_obj_scale(random_float() + 1.0);\n}\n\nvoid bhv_bubble_maybe_loop(void) {\n    o->oPosY += random_float() * 3.0f + 6.0f;\n    o->oPosX += random_float() * 10.0f - 5.0f;\n    o->oPosZ += random_float() * 10.0f - 5.0f;\n\n    o->header.gfx.scale[0] = sins(o->oWaterObjUnkF4) * 0.2 + 1.0;\n    o->oWaterObjUnkF4 += o->oWaterObjUnkFC;\n    o->header.gfx.scale[1] = sins(o->oWaterObjUnkF8) * 0.2 + 1.0;\n    o->oWaterObjUnkF8 += o->oWaterObjUnk100;\n}\n\nvoid bhv_small_water_wave_loop(void) {\n    f32 sp1C = find_water_level(o->oPosX, o->oPosZ);\n\n    o->header.gfx.scale[0] = sins(o->oWaterObjUnkF4) * 0.2 + 1.0;\n    o->oWaterObjUnkF4 += o->oWaterObjUnkFC;\n    o->header.gfx.scale[1] = sins(o->oWaterObjUnkF8) * 0.2 + 1.0;\n    o->oWaterObjUnkF8 += o->oWaterObjUnk100;\n\n    if (o->oPosY > sp1C) {\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n        o->oPosY += 5.0f;\n        if (gFreeObjectList.next != NULL) {\n            spawn_object(o, MODEL_SMALL_WATER_SPLASH, bhvObjectWaterSplash);\n        }\n    }\n\n    if (o->oInteractStatus & INT_STATUS_INTERACTED) {\n        obj_mark_for_deletion(o);\n    }\n}\n\nvoid scale_bubble_sin(void) {\n    o->header.gfx.scale[0] = sins(o->oWaterObjUnkF4) * 0.5 + 2.0;\n    o->oWaterObjUnkF4 += o->oWaterObjUnkFC;\n    o->header.gfx.scale[1] = sins(o->oWaterObjUnkF8) * 0.5 + 2.0;\n    o->oWaterObjUnkF8 += o->oWaterObjUnk100;\n}\n\nvoid bhv_particle_init(void) {\n    obj_scale_xyz(o, 2.0f, 2.0f, 1.0f);\n    o->oWaterObjUnkFC = 0x800 + (s32)(random_float() * 2048.0f);\n    o->oWaterObjUnk100 = 0x800 + (s32)(random_float() * 2048.0f);\n    obj_translate_xyz_random(o, 100.0f);\n}\n\nvoid bhv_particle_loop() {\n    f32 sp24 = find_water_level(o->oPosX, o->oPosZ);\n    o->oPosY += 5.0f;\n    obj_translate_xz_random(o, 4.0f);\n    scale_bubble_sin();\n    if (o->oPosY > sp24 && o->oTimer != 0) {\n        obj_mark_for_deletion(o);\n        try_to_spawn_object(5, 0, o, MODEL_SMALL_WATER_SPLASH, bhvObjectWaterSplash);\n    }\n}\n\nvoid bhv_small_bubbles_loop(void) {\n    o->oPosY += 5.0f;\n    obj_translate_xz_random(o, 4.0f);\n    scale_bubble_sin();\n}\n\nvoid bhv_fish_group_loop(void) {\n    if ((gMarioCurrentRoom == 15 || gMarioCurrentRoom == 7) && (gGlobalTimer & 1)) {\n        spawn_object(o, MODEL_WHITE_PARTICLE_SMALL, bhvSmallParticleBubbles);\n    }\n}\n\nvoid bhv_water_waves_init(void) {\n    s32 i;\n    for (i = 0; i < 3; i++) {\n        spawn_object(o, MODEL_WHITE_PARTICLE_SMALL, bhvSmallParticle);\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/water_pillar.inc.c",
    "content": "// water_pillar.inc.c\n\nvoid water_level_pillar_undrained(void) {\n    struct Object *otherWaterPillar;\n\n    switch (o->oAction) {\n        case 0:\n            if (cur_obj_is_mario_ground_pounding_platform()) {\n                o->oAction++;\n                spawn_mist_particles();\n            }\n            break;\n\n        case 1:\n            if (o->oTimer < 4) {\n                o->oPosY -= 20.0f;\n            } else {\n                o->oAction++;\n            }\n            break;\n\n        case 2:\n            otherWaterPillar = cur_obj_nearest_object_with_behavior(bhvWaterLevelPillar);\n            if (otherWaterPillar != NULL) {\n                if (otherWaterPillar->oAction < 2) {\n                    o->oAction++;\n                }\n            }\n            break;\n\n        case 3:\n            otherWaterPillar = cur_obj_nearest_object_with_behavior(bhvWaterLevelPillar);\n            if (otherWaterPillar != NULL) {\n                if (otherWaterPillar->oAction > 1) {\n                    o->oAction++;\n                    save_file_set_flags(SAVE_FLAG_MOAT_DRAINED);\n                    play_puzzle_jingle();\n                }\n            }\n            break;\n\n        case 4:\n            cur_obj_play_sound_1(SOUND_ENV_WATER_DRAIN);\n            if (o->oTimer < 300) {\n                gEnvironmentLevels[2] =\n                    (s32) approach_f32_symmetric(gEnvironmentLevels[2], -2450.0f, 5.0f);\n                gEnvironmentLevels[0] =\n                    (s32) approach_f32_symmetric(gEnvironmentLevels[0], -2450.0f, 5.0f);\n#if ENABLE_RUMBLE\n                reset_rumble_timers_2(2);\n#endif\n            } else {\n                o->oAction++;\n            }\n            break;\n\n        case 5:\n            break;\n    }\n}\n\nvoid water_level_pillar_drained(void) {\n    if (o->oTimer == 0) {\n        o->oPosY -= 80.0f;\n        gEnvironmentLevels[2] = -2450;\n        gEnvironmentLevels[0] = -2450;\n    }\n}\n\nvoid bhv_water_level_pillar_init(void) {\n    if (save_file_get_flags() & SAVE_FLAG_MOAT_DRAINED) {\n        o->oWaterLevelPillarDrained = TRUE;\n    }\n}\n\nvoid bhv_water_level_pillar_loop(void) {\n    if (o->oWaterLevelPillarDrained) {\n        water_level_pillar_drained();\n    } else {\n        water_level_pillar_undrained();\n    }\n    gEnvironmentRegions[18] = gEnvironmentLevels[2];\n    gEnvironmentRegions[6] = gEnvironmentLevels[0];\n}\n"
  },
  {
    "path": "src/game/behaviors/water_ring.inc.c",
    "content": "// water_ring.inc.c\n\nf32 water_ring_calc_mario_dist(void) {\n    f32 marioDistX = o->oPosX - gMarioObject->header.gfx.pos[0];\n    f32 marioDistY = o->oPosY - (gMarioObject->header.gfx.pos[1] + 80.0f);\n    f32 marioDistZ = o->oPosZ - gMarioObject->header.gfx.pos[2];\n    f32 marioDistInFront = marioDistX * o->oWaterRingNormalX + marioDistY * o->oWaterRingNormalY\n                           + marioDistZ * o->oWaterRingNormalZ;\n\n    return marioDistInFront;\n}\n\nvoid water_ring_init(void) {\n    cur_obj_init_animation(0);\n    o->oWaterRingScalePhaseX = (s32)(random_float() * 4096.0f) + 0x1000;\n    o->oWaterRingScalePhaseY = (s32)(random_float() * 4096.0f) + 0x1000;\n    o->oWaterRingScalePhaseZ = (s32)(random_float() * 4096.0f) + 0x1000;\n\n    //! This normal calculation assumes a facing yaw of 0, which is not the case\n    //  for the manta ray rings. It also errs by multiplying the normal X by -1.\n    //  This cause the ring's orientation for the purposes of collision to be\n    //  different than the graphical orientation, which means that Mario won't\n    //  necessarily collect a ring even if he appears to swim through it.\n    o->oWaterRingNormalX = coss(o->oFaceAnglePitch) * sins(o->oFaceAngleRoll) * -1.0f;\n    o->oWaterRingNormalY = coss(o->oFaceAnglePitch) * coss(o->oFaceAngleRoll);\n    o->oWaterRingNormalZ = sins(o->oFaceAnglePitch);\n\n    o->oWaterRingMarioDistInFront = water_ring_calc_mario_dist();\n\n    // Adding this code will alter the ring's graphical orientation to align with the faulty\n    // collision orientation:\n    //\n    // o->oFaceAngleYaw = 0;\n    // o->oFaceAngleRoll *= -1;\n}\n\nvoid bhv_jet_stream_water_ring_init(void) {\n    water_ring_init();\n    o->oOpacity = 70;\n    cur_obj_init_animation(0);\n    o->oFaceAnglePitch = 0x8000;\n}\n\nvoid water_ring_check_collection(f32 avgScale, struct Object *ringManager) {\n    f32 marioDistInFront = water_ring_calc_mario_dist();\n\n    if (!is_point_close_to_object(o, gMarioObject->header.gfx.pos[0],\n                                  gMarioObject->header.gfx.pos[1] + 80.0f,\n                                  gMarioObject->header.gfx.pos[2], (avgScale + 0.2) * 120.0)) {\n        o->oWaterRingMarioDistInFront = marioDistInFront;\n        return;\n    }\n\n    if (o->oWaterRingMarioDistInFront * marioDistInFront < 0.0f) {\n        struct Object *ringSpawner = o->parentObj;\n\n        if (ringSpawner != NULL) {\n            if ((o->oWaterRingIndex == ringManager->oWaterRingMgrLastRingCollected + 1)\n                || (ringSpawner->oWaterRingSpawnerRingsCollected == 0)) {\n                ringSpawner->oWaterRingSpawnerRingsCollected++;\n                if (ringSpawner->oWaterRingSpawnerRingsCollected < 6) {\n                    spawn_orange_number(ringSpawner->oWaterRingSpawnerRingsCollected, 0, -40, 0);\n#ifdef VERSION_JP\n                    play_sound(SOUND_MENU_STAR_SOUND, gGlobalSoundSource);\n#else\n                    play_sound(SOUND_MENU_COLLECT_SECRET\n                               + (((u8) ringSpawner->oWaterRingSpawnerRingsCollected - 1) << 16),\n                               gGlobalSoundSource);\n#endif\n                }\n                ringManager->oWaterRingMgrLastRingCollected = o->oWaterRingIndex;\n            } else {\n                ringSpawner->oWaterRingSpawnerRingsCollected = 0;\n            }\n        }\n\n        o->oAction = WATER_RING_ACT_COLLECTED;\n    }\n\n    o->oWaterRingMarioDistInFront = marioDistInFront;\n}\n\nvoid water_ring_set_scale(f32 avgScale) {\n    o->header.gfx.scale[0] = sins(o->oWaterRingScalePhaseX) * 0.1 + avgScale;\n    o->header.gfx.scale[1] = sins(o->oWaterRingScalePhaseY) * 0.5 + avgScale;\n    o->header.gfx.scale[2] = sins(o->oWaterRingScalePhaseZ) * 0.1 + avgScale;\n    o->oWaterRingScalePhaseX += 0x1700;\n    o->oWaterRingScalePhaseY += 0x1700;\n    o->oWaterRingScalePhaseZ += 0x1700;\n}\n\nvoid water_ring_act_collected(void) {\n    f32 avgScale = (f32) o->oTimer * 0.2 + o->oWaterRingAvgScale;\n\n    if (o->oTimer > 20) {\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n\n    o->oOpacity -= 10;\n    if (o->oOpacity < 0) {\n        o->oOpacity = 0;\n    }\n\n    water_ring_set_scale(avgScale);\n}\n\nvoid water_ring_act_not_collected(void) {\n    f32 avgScale = (f32) o->oTimer / 225.0 * 3.0 + 0.5;\n\n    //! In this case ringSpawner and ringManager are the same object,\n    //  because the Jet Stream Ring Spawner is its own parent object.\n    struct Object *ringSpawner = o->parentObj;\n    struct Object *ringManager = ringSpawner->parentObj;\n\n    if (o->oTimer > 225) {\n        o->oOpacity -= 2;\n        if (o->oOpacity < 3) {\n            o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n        }\n    }\n\n    water_ring_check_collection(avgScale, ringManager);\n    water_ring_set_scale(avgScale);\n\n    o->oPosY += 10.0f;\n    o->oFaceAngleYaw += 0x100;\n    set_object_visibility(o, 5000);\n\n    if (ringSpawner->oWaterRingSpawnerRingsCollected == 4\n        && o->oWaterRingIndex == ringManager->oWaterRingMgrLastRingCollected + 1) {\n        o->oOpacity = sins(o->oTimer * 0x1000) * 200.0f + 50.0f;\n    }\n\n    o->oWaterRingAvgScale = avgScale;\n}\n\nvoid bhv_jet_stream_water_ring_loop(void) {\n    switch (o->oAction) {\n        case WATER_RING_ACT_NOT_COLLECTED:\n            water_ring_act_not_collected();\n            break;\n\n        case WATER_RING_ACT_COLLECTED:\n            water_ring_act_collected();\n            break;\n    }\n}\n\nvoid spawn_manta_ray_ring_manager(void) {\n    struct Object *ringManager = spawn_object(o, MODEL_NONE, bhvMantaRayRingManager);\n    o->parentObj = ringManager;\n}\n\nvoid water_ring_spawner_act_inactive(void) {\n    //! The Jet Stream Ring Spawner is its own parent object. The code may have been copied\n    //  from the Manta Ray, which spawns rings but also has a Ring Manager object as its\n    //  parent. The Jet Stream Ring Spawner functions as both a spawner and a Ring Manager.\n    struct Object *currentObj = o->parentObj;\n\n    //! Because the index counter overflows at 10000, it's possible to wait\n    //  for about 4 hours and 38 minutes if you miss a ring, and the index will\n    //  come around again.\n    if (o->oTimer == 300) {\n        o->oTimer = 0;\n    }\n\n    if ((o->oTimer == 0) || (o->oTimer == 50) || (o->oTimer == 150) || (o->oTimer == 200)\n        || (o->oTimer == 250)) {\n        struct Object *waterRing = spawn_object(o, MODEL_WATER_RING, bhvJetStreamWaterRing);\n        waterRing->oWaterRingIndex = currentObj->oWaterRingMgrNextRingIndex;\n        currentObj->oWaterRingMgrNextRingIndex++;\n        if (currentObj->oWaterRingMgrNextRingIndex > 10000) {\n            currentObj->oWaterRingMgrNextRingIndex = 0;\n        }\n    }\n}\n\nvoid bhv_jet_stream_ring_spawner_loop(void) {\n    switch (o->oAction) {\n        case JS_RING_SPAWNER_ACT_ACTIVE:\n            water_ring_spawner_act_inactive();\n\n            if (o->oWaterRingSpawnerRingsCollected == 5) {\n                spawn_mist_particles();\n                spawn_default_star(3400.0f, -3200.0f, -500.0f);\n                o->oAction = JS_RING_SPAWNER_ACT_INACTIVE;\n            }\n            break;\n\n        case JS_RING_SPAWNER_ACT_INACTIVE:\n            break;\n    }\n}\n\nvoid bhv_manta_ray_water_ring_init(void) {\n    water_ring_init();\n    o->oOpacity = 150;\n}\n\nvoid manta_water_ring_act_not_collected(void) {\n    f32 avgScale = (f32) o->oTimer / 50 * 1.3 + 0.1;\n    struct Object *ringSpawner = o->parentObj;\n    struct Object *ringManager = ringSpawner->parentObj;\n\n    if (avgScale > 1.3) {\n        avgScale = 1.3;\n    }\n\n    if (o->oTimer > 150) {\n        o->oOpacity -= 2;\n        if (o->oOpacity < 3) {\n            o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n        }\n    }\n\n    water_ring_check_collection(avgScale, ringManager);\n    water_ring_set_scale(avgScale);\n    set_object_visibility(o, 5000);\n\n    if (ringSpawner->oWaterRingSpawnerRingsCollected == 4\n        && o->oWaterRingIndex == ringManager->oWaterRingMgrLastRingCollected + 1) {\n        o->oOpacity = sins(o->oTimer * 0x1000) * 200.0f + 50.0f;\n    }\n\n    o->oWaterRingAvgScale = avgScale;\n}\n\nvoid bhv_manta_ray_water_ring_loop(void) {\n    switch (o->oAction) {\n        case WATER_RING_ACT_NOT_COLLECTED:\n            manta_water_ring_act_not_collected();\n            break;\n\n        case WATER_RING_ACT_COLLECTED:\n            water_ring_act_collected();\n            break;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/water_splashes_and_waves.inc.c",
    "content": "// water_splashes_and_waves.inc.c\n\n// Water droplets from Mario jumping in a pool of water.\nstruct WaterDropletParams sWaterSplashDropletParams = {\n    /* Flags */ WATER_DROPLET_FLAG_RAND_ANGLE,\n    /* Model */ MODEL_WHITE_PARTICLE_SMALL,\n    /* Behavior */ bhvWaterDroplet,\n    /* Unused (flag-specific) */ 0, 0,\n    /* Random fvel offset, scale */ 5.0f, 3.0f,\n    /* Random yvel offset, scale */ 30.0f, 20.0f,\n    /* Random size offset, scale */ 0.5f, 1.0f\n};\n\n// Water droplets from Mario jumping in shallow water.\nstruct WaterDropletParams gShallowWaterSplashDropletParams = {\n    /* Flags */ WATER_DROPLET_FLAG_RAND_ANGLE | WATER_DROPLET_FLAG_SET_Y_TO_WATER_LEVEL,\n    /* Model */ MODEL_WHITE_PARTICLE_SMALL,\n    /* Behavior */ bhvWaterDroplet,\n    /* Unused (flag-specific) */ 0, 0,\n    /* Random fvel offset, scale */ 2.0f, 3.0f,\n    /* Random yvel offset, scale */ 20.0f, 20.0f,\n    /* Random size offset, scale */ 0.5f, 1.0f\n};\n\n// The fish particle easter egg from Mario jumping in shallow water.\nstruct WaterDropletParams sWaterDropletFishParams = {\n    /* Flags */ WATER_DROPLET_FLAG_RAND_ANGLE | WATER_DROPLET_FLAG_SET_Y_TO_WATER_LEVEL,\n    /* Model */ MODEL_FISH,\n    /* Behavior */ bhvWaterDroplet,\n    /* Unused (flag-specific) */ 0, 0,\n    /* Random fvel offset, scale */ 2.0f, 3.0f,\n    /* Random yvel offset, scale */ 20.0f, 20.0f,\n    /* Random size offset, scale */ 1.0f, 0.0f\n};\n\n// Water droplets from Mario running in shallow water.\nstruct WaterDropletParams gShallowWaterWaveDropletParams = {\n    /* Flags */ WATER_DROPLET_FLAG_RAND_ANGLE_INCR_PLUS_8000 | WATER_DROPLET_FLAG_RAND_ANGLE | WATER_DROPLET_FLAG_SET_Y_TO_WATER_LEVEL,\n    /* Model */ MODEL_WHITE_PARTICLE_SMALL,\n    /* Behavior */ bhvWaterDroplet,\n    /* Move angle range */ 0x6000,\n    /* Unused (flag-specific) */ 0,\n    /* Random fvel offset, scale */ 2.0f, 8.0f,\n    /* Random yvel offset, scale */ 10.0f, 10.0f,\n    /* Random size offset, scale */ 0.5f, 1.0f\n};\n\n\nvoid bhv_water_splash_spawn_droplets(void) {\n    s32 i;\n    if (o->oTimer == 0) {\n        o->oPosY = find_water_level(o->oPosX, o->oPosZ);\n    }\n\n    if (o->oPosY > FLOOR_LOWER_LIMIT_MISC) { // Make sure it is not at the default water level\n        for (i = 0; i < 3; i++) {\n            spawn_water_droplet(o, &sWaterSplashDropletParams);\n        }\n    }\n}\n\nvoid bhv_water_droplet_loop(void) {\n    UNUSED u8 filler[4];\n    f32 waterLevel = find_water_level(o->oPosX, o->oPosZ);\n\n    if (o->oTimer == 0) {\n        if (cur_obj_has_model(MODEL_FISH)) {\n            o->header.gfx.node.flags &= ~GRAPH_RENDER_BILLBOARD;\n        } else {\n            o->header.gfx.node.flags |= GRAPH_RENDER_BILLBOARD;\n        }\n        o->oFaceAngleYaw = random_u16();\n    }\n    // Apply gravity\n    o->oVelY -= 4.0f;\n    o->oPosY += o->oVelY;\n    // Check if fallen back into the water\n    if (o->oVelY < 0.0f) {\n        if (waterLevel > o->oPosY) {\n            // Create the smaller splash\n            try_to_spawn_object(0, 1.0f, o, MODEL_SMALL_WATER_SPLASH, bhvWaterDropletSplash);\n            obj_mark_for_deletion(o);\n        } else if (o->oTimer > 20) {\n            obj_mark_for_deletion(o);\n        }\n    }\n    if (waterLevel < FLOOR_LOWER_LIMIT_MISC) {\n        obj_mark_for_deletion(o);\n    }\n}\n\nvoid bhv_idle_water_wave_loop(void) {\n    obj_copy_pos(o, gMarioObject);\n    o->oPosY = gMarioStates[0].waterLevel + 5;\n    if (!(gMarioObject->oMarioParticleFlags & ACTIVE_PARTICLE_IDLE_WATER_WAVE)) {\n        gMarioObject->oActiveParticleFlags &= (u16) ~ACTIVE_PARTICLE_IDLE_WATER_WAVE;\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n}\n\nvoid bhv_water_droplet_splash_init(void) {\n    cur_obj_scale(random_float() + 1.5);\n}\n\nvoid bhv_bubble_splash_init(void) {\n    f32 waterLevel = find_water_level(o->oPosX, o->oPosZ);\n    obj_scale_xyz(o, 0.5f, 1.0f, 0.5f);\n    o->oPosY = waterLevel + 5.0f;\n}\n\nvoid bhv_shallow_water_splash_init(void) {\n    // Have a 1 in 256 chance to spawn the fish particle easter egg.\n    if ((random_u16() & 0xFF) <= 0) { // Strange\n        struct Object *fishObj = spawn_water_droplet(o, &sWaterDropletFishParams);\n        obj_init_animation_with_sound(fishObj, blue_fish_seg3_anims_0301C2B0, 0);\n    }\n}\n\nvoid bhv_wave_trail_shrink(void) {\n    f32 waterLevel = find_water_level(o->oPosX, o->oPosZ);\n    // Destroy every other water wave to space them out (this is a terrible way of doing it)\n    if ((o->oTimer == 0) && (gGlobalTimer & 1)) {\n        obj_mark_for_deletion(o);\n    }\n    o->oPosY = waterLevel + 5.0f;\n\n    if (o->oTimer == 0) {\n        o->oWaveTrailSize = o->header.gfx.scale[0];\n    }\n\n    if (o->oAnimState > 3) {\n        o->oWaveTrailSize = o->oWaveTrailSize - 0.1; // Shrink the wave\n        if (o->oWaveTrailSize < 0.0f) {\n            o->oWaveTrailSize = 0.0f;\n        }\n        o->header.gfx.scale[0] = o->oWaveTrailSize;\n        o->header.gfx.scale[2] = o->oWaveTrailSize;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/water_wave.inc.c",
    "content": "// water_wave.inc.c\n// TODO: Rename to avoid confusion with water_splashes_and_waves\n\nvoid bhv_object_water_wave_init(void) {\n    o->oPosY = find_water_level(o->oPosX, o->oPosZ);\n}\n\nvoid bhv_object_water_wave_loop(void) {\n    s32 globalTimer = gGlobalTimer;\n    if (globalTimer % 16 == 0) {\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/wdw_water_level.inc.c",
    "content": "// wdw_water_level.inc.c\n\n// called when WDW is loaded.\nvoid bhv_init_changing_water_level_loop(void) {\n    if (o->oAction == 0) {\n        if (gEnvironmentRegions != NULL) {\n            o->oAction++;\n        }\n    } else if (o->oTimer < 10) {\n        gEnvironmentLevels[0] = gEnvironmentRegions[6];\n    } else {\n        gEnvironmentRegions[6] = gEnvironmentLevels[0] + sins(o->oWaterLevelTriggerUnkF4) * 20.0f;\n        o->oWaterLevelTriggerUnkF4 += 0x200;\n    }\n}\n\nvoid bhv_water_level_diamond_loop(void) {\n    if (gEnvironmentRegions != NULL) {\n        switch (o->oAction) {\n            case WATER_LEVEL_DIAMOND_ACT_INIT:\n                o->oFaceAngleYaw = 0;\n                o->oWaterLevelTriggerTargetWaterLevel = (s32) o->oPosY;\n                if (o->oTimer > 10) {\n                    o->oAction++; // Sets to WATER_LEVEL_DIAMOND_ACT_IDLE\n                }\n                break;\n\n            case WATER_LEVEL_DIAMOND_ACT_IDLE:\n                if (obj_check_if_collided_with_object(o, gMarioObject) && !gWDWWaterLevelChanging) {\n                    o->oAction++; // Sets to WATER_LEVEL_DIAMOND_ACT_CHANGE_WATER_LEVEL\n                    gWDWWaterLevelChanging = TRUE;\n                }\n                break;\n\n            case WATER_LEVEL_DIAMOND_ACT_CHANGE_WATER_LEVEL:\n                o->oAngleVelYaw = 0;\n                gEnvironmentLevels[0] = (s32) approach_f32_symmetric(\n                    (f32) gEnvironmentLevels[0], (f32) o->oWaterLevelTriggerTargetWaterLevel, 10.0f);\n                if (gEnvironmentLevels[0] == o->oWaterLevelTriggerTargetWaterLevel) {\n                    if ((s16) o->oFaceAngleYaw == 0) {\n                        o->oAction++; // Sets to WATER_LEVEL_DIAMOND_ACT_IDLE_SPINNING\n                    } else {\n                        o->oAngleVelYaw = 0x800;\n                    }\n                } else {\n                    if (o->oTimer == 0) {\n                        cur_obj_play_sound_2(SOUND_GENERAL_WATER_LEVEL_TRIG);\n                    } else {\n                        if (gEnvironmentLevels[0] > o->oWaterLevelTriggerTargetWaterLevel) {\n                            cur_obj_play_sound_1(SOUND_ENV_WATER_DRAIN);\n                        } else {\n                            cur_obj_play_sound_1(SOUND_ENV_WATER_DRAIN); // same as above\n                        }\n                    }\n                    o->oAngleVelYaw = 0x800;\n#if ENABLE_RUMBLE\n                    reset_rumble_timers_2(2);\n#endif\n                }\n                break;\n\n            case WATER_LEVEL_DIAMOND_ACT_IDLE_SPINNING:\n                if (!obj_check_if_collided_with_object(o, gMarioObject)) {\n                    gWDWWaterLevelChanging = FALSE;\n                    o->oAction = WATER_LEVEL_DIAMOND_ACT_IDLE;\n                    o->oAngleVelYaw = 0;\n                }\n                break;\n        }\n\n        o->oFaceAngleYaw += o->oAngleVelYaw;\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/whirlpool.inc.c",
    "content": "// whirlpool.inc.c\n\nstatic struct ObjectHitbox sWhirlpoolHitbox = {\n    /* interactType:      */ INTERACT_WHIRLPOOL,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 0,\n    /* health:            */ 0,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 200,\n    /* height:            */ 500,\n    /* hurtboxRadius:     */ 0,\n    /* hurtboxHeight:     */ 0,\n};\n\nvoid bhv_whirlpool_init(void) {\n    o->oWhirlpoolInitFacePitch = o->oFaceAnglePitch;\n    o->oWhirlpoolInitFaceRoll = o->oFaceAngleRoll;\n    o->oFaceAnglePitch = 0;\n    o->oFaceAngleRoll = 0;\n}\n\nvoid whirlpool_set_hitbox(void) {\n    obj_set_hitbox(o, &sWhirlpoolHitbox);\n}\n\nvoid whirpool_orient_graph(void) {\n    f32 cosPitch = coss(o->oFaceAnglePitch);\n    f32 sinPitch = sins(o->oFaceAnglePitch);\n    f32 cosRoll = coss(o->oFaceAngleRoll);\n    f32 sinRoll = sins(o->oFaceAngleRoll);\n    f32 normalX = sinRoll * cosPitch;\n    f32 normalY = cosPitch * cosRoll;\n    f32 normalZ = sinPitch;\n    obj_orient_graph(o, normalX, normalY, normalZ);\n}\n\nvoid bhv_whirlpool_loop(void) {\n    if (o->oDistanceToMario < 5000.0f) {\n        o->header.gfx.node.flags &= ~GRAPH_RENDER_INVISIBLE;\n\n        // not sure if actually an array\n        gEnvFxBubbleConfig[ENVFX_STATE_PARTICLECOUNT] = 60;\n        gEnvFxBubbleConfig[ENVFX_STATE_SRC_X] = o->oPosX;\n        gEnvFxBubbleConfig[ENVFX_STATE_SRC_Z] = o->oPosZ;\n        gEnvFxBubbleConfig[ENVFX_STATE_DEST_X] = o->oPosX;\n        gEnvFxBubbleConfig[ENVFX_STATE_DEST_Y] = o->oPosY;\n        gEnvFxBubbleConfig[ENVFX_STATE_DEST_Z] = o->oPosZ;\n        gEnvFxBubbleConfig[ENVFX_STATE_SRC_Y] = o->oPosY + 800.0f;\n        gEnvFxBubbleConfig[ENVFX_STATE_PITCH] = o->oWhirlpoolInitFacePitch;\n        gEnvFxBubbleConfig[ENVFX_STATE_YAW] = o->oWhirlpoolInitFaceRoll;\n\n        whirpool_orient_graph();\n\n        o->oFaceAngleYaw += 8000;\n    } else {\n        o->header.gfx.node.flags |= GRAPH_RENDER_INVISIBLE;\n        gEnvFxBubbleConfig[ENVFX_STATE_PARTICLECOUNT] = 0;\n    }\n\n    cur_obj_play_sound_1(SOUND_ENV_WATER);\n\n    whirlpool_set_hitbox();\n}\n\nvoid bhv_jet_stream_loop(void) {\n    if (o->oDistanceToMario < 5000.0f) {\n        gEnvFxBubbleConfig[ENVFX_STATE_PARTICLECOUNT] = 60;\n        gEnvFxBubbleConfig[ENVFX_STATE_SRC_X] = o->oPosX;\n        gEnvFxBubbleConfig[ENVFX_STATE_SRC_Y] = o->oPosY;\n        gEnvFxBubbleConfig[ENVFX_STATE_SRC_Z] = o->oPosZ;\n    } else {\n        gEnvFxBubbleConfig[ENVFX_STATE_PARTICLECOUNT] = 0;\n    }\n\n    cur_obj_play_sound_1(SOUND_ENV_WATER);\n}\n"
  },
  {
    "path": "src/game/behaviors/white_puff.inc.c",
    "content": "// white_puff.inc.c\n\nvoid bhv_white_puff_1_loop(void) {\n    f32 sp1C = 0.1f;\n    f32 sp18 = 0.5f;\n\n    if (o->oTimer == 0) {\n        obj_translate_xz_random(o, 40.0f);\n        o->oPosY += 30.0f;\n    }\n\n    cur_obj_scale(o->oTimer * sp18 + sp1C);\n    o->oOpacity = 50;\n    cur_obj_move_using_fvel_and_gravity();\n\n    if (o->oTimer > 4) {\n        obj_mark_for_deletion(o);\n    }\n}\n\nvoid bhv_white_puff_2_loop(void) {\n    if (o->oTimer == 0) {\n        obj_translate_xz_random(o, 40.0f);\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/white_puff_explode.inc.c",
    "content": "// white_puff_explode.inc.c\n\nvoid bhv_white_puff_exploding_loop(void) {\n    if (o->oTimer == 0) {\n        cur_obj_compute_vel_xz();\n        o->oWhitePuffUnkF4 = o->header.gfx.scale[0];\n        switch (o->oBhvParams2ndByte) {\n            case 2:\n                o->oOpacity = 254;\n                o->oWhitePuffUnkF8 = -21;\n                o->oWhitePuffUnkFC = 0;\n                break;\n            case 3:\n                o->oOpacity = 254;\n                o->oWhitePuffUnkF8 = -13;\n                o->oWhitePuffUnkFC = 1;\n                break;\n        }\n    }\n\n    cur_obj_move_using_vel_and_gravity();\n    cur_obj_apply_drag_xz(o->oDragStrength);\n\n    if (o->oVelY > 100.0f) {\n        o->oVelY = 100.0f;\n    }\n\n    if (o->oTimer > 20) {\n        obj_mark_for_deletion(o);\n    }\n\n    if (o->oOpacity) {\n        f32 scale;\n        o->oOpacity += o->oWhitePuffUnkF8;\n        if (o->oOpacity < 2) {\n            obj_mark_for_deletion(o);\n        }\n        if (o->oWhitePuffUnkFC) {\n            scale = o->oWhitePuffUnkF4 * ((254 - o->oOpacity) / 254.0);\n        } else {\n            scale = o->oWhitePuffUnkF4 * (o->oOpacity / 254.0);\n        }\n        cur_obj_scale(scale);\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/whomp.inc.c",
    "content": "// whomp.inc.c\n\nvoid whomp_play_sfx_from_pound_animation(void) {\n    UNUSED s32 animFrame = o->header.gfx.animInfo.animFrame;\n    s32 playSound = FALSE;\n\n    if (o->oForwardVel < 5.0f) {\n        playSound = cur_obj_check_anim_frame(0);\n        playSound |= cur_obj_check_anim_frame(23);\n    } else {\n        playSound = cur_obj_check_anim_frame_in_range(0, 3);\n        playSound |= cur_obj_check_anim_frame_in_range(23, 3);\n    }\n\n    if (playSound) {\n        cur_obj_play_sound_2(SOUND_OBJ_POUNDING1);\n    }\n}\n\nvoid whomp_init(void) {\n    cur_obj_init_animation_with_accel_and_sound(0, 1.0f);\n    cur_obj_set_pos_to_home();\n\n    if (o->oBhvParams2ndByte != WHOMP_BP_SMALL) {\n        gSecondCameraFocus = o;\n        cur_obj_scale(2.0f);\n        if (o->oSubAction == 0) {\n            if (o->oDistanceToMario < 600.0f) {\n                o->oSubAction++;\n                seq_player_lower_volume(SEQ_PLAYER_LEVEL, 60, 40);\n            } else {\n                cur_obj_set_pos_to_home();\n                o->oHealth = 3;\n            }\n        } else if (cur_obj_update_dialog_with_cutscene(MARIO_DIALOG_LOOK_UP,\n            DIALOG_FLAG_TURN_TO_MARIO, CUTSCENE_DIALOG, DIALOG_114)) {\n            o->oAction = 2;\n        }\n    } else if (o->oDistanceToMario < 500.0f) {\n        o->oAction = 1;\n    }\n\n    whomp_play_sfx_from_pound_animation();\n}\n\nvoid whomp_turn(void) {\n    if (o->oSubAction == 0) {\n        o->oForwardVel = 0.0f;\n        cur_obj_init_animation_with_accel_and_sound(0, 1.0f);\n        if (o->oTimer > 31) {\n            o->oSubAction++;\n        } else {\n            o->oMoveAngleYaw += 0x400;\n        }\n    } else {\n        o->oForwardVel = 3.0f;\n        if (o->oTimer > 42) {\n            o->oAction = 1;\n        }\n    }\n\n    whomp_play_sfx_from_pound_animation();\n}\n\nvoid whomp_patrol(void) {\n    s16 marioAngle = abs_angle_diff(o->oAngleToMario, o->oMoveAngleYaw);\n    f32 distWalked = cur_obj_lateral_dist_to_home();\n    f32 patrolDist;\n\n    if (gCurrLevelNum == LEVEL_BITS) {\n        patrolDist = 200.0f;\n    } else {\n        patrolDist = 700.0f;\n    }\n\n    cur_obj_init_animation_with_accel_and_sound(0, 1.0f);\n    o->oForwardVel = 3.0f;\n\n    if (distWalked > patrolDist) {\n        o->oAction = 7;\n    } else if (marioAngle < 0x2000) {\n        if (o->oDistanceToMario < 1500.0f) {\n            o->oForwardVel = 9.0f;\n            cur_obj_init_animation_with_accel_and_sound(0, 3.0f);\n        }\n        if (o->oDistanceToMario < 300.0f) {\n            o->oAction = 3;\n        }\n    }\n\n    whomp_play_sfx_from_pound_animation();\n}\n\nvoid king_whomp_chase(void) {\n    cur_obj_init_animation_with_accel_and_sound(0, 1.0f);\n    o->oForwardVel = 3.0f;\n    cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x200);\n\n    if (o->oTimer > 30) {\n        s16 marioAngle = abs_angle_diff(o->oAngleToMario, o->oMoveAngleYaw);\n        if (marioAngle < 0x2000) {\n            if (o->oDistanceToMario < 1500.0f) {\n                o->oForwardVel = 9.0f;\n                cur_obj_init_animation_with_accel_and_sound(0, 3.0f);\n            }\n            if (o->oDistanceToMario < 300.0f) {\n                o->oAction = 3;\n            }\n        }\n    }\n\n    whomp_play_sfx_from_pound_animation();\n\n    if (mario_is_far_below_object(1000.0f)) {\n        o->oAction = 0;\n        stop_background_music(SEQUENCE_ARGS(4, SEQ_EVENT_BOSS));\n    }\n}\n\nvoid whomp_prepare_jump(void) {\n    o->oForwardVel = 0.0f;\n    cur_obj_init_animation_with_accel_and_sound(1, 1.0f);\n    if (cur_obj_check_if_near_animation_end()) {\n        o->oAction = 4;\n    }\n}\n\nvoid whomp_jump(void) {\n    if (o->oTimer == 0) {\n        o->oVelY = 40.0f;\n    }\n\n    if (o->oTimer < 8) {\n    } else {\n        o->oAngleVelPitch += 0x100;\n        o->oFaceAnglePitch += o->oAngleVelPitch;\n        if (o->oFaceAnglePitch > 0x4000) {\n            o->oAngleVelPitch = 0;\n            o->oFaceAnglePitch = 0x4000;\n            o->oAction = 5;\n        }\n    }\n}\n\nvoid whomp_land(void) {\n    if (o->oSubAction == 0 && o->oMoveFlags & OBJ_MOVE_LANDED) {\n        cur_obj_play_sound_2(SOUND_OBJ_WHOMP);\n        cur_obj_shake_screen(SHAKE_POS_SMALL);\n        o->oVelY = 0.0f;\n        o->oSubAction++;\n    }\n\n    if (o->oMoveFlags & OBJ_MOVE_ON_GROUND) {\n        o->oAction = 6;\n    }\n}\n\nvoid king_whomp_on_ground(void) {\n    if (o->oSubAction == 0) {\n        if (cur_obj_is_mario_ground_pounding_platform()) {\n            Vec3f pos;\n            o->oHealth--;\n            cur_obj_play_sound_2(SOUND_OBJ2_WHOMP_SOUND_SHORT);\n            cur_obj_play_sound_2(SOUND_OBJ_KING_WHOMP_DEATH);\n            if (o->oHealth == 0) {\n                o->oAction = 8;\n            } else {\n                vec3f_copy_2(pos, &o->oPosX);\n                vec3f_copy_2(&o->oPosX, &gMarioObject->oPosX);\n                spawn_mist_particles_variable(0, 0, 100.0f);\n                spawn_triangle_break_particles(20, MODEL_DIRT_ANIMATION, 3.0f, 4);\n                cur_obj_shake_screen(SHAKE_POS_SMALL);\n                vec3f_copy_2(&o->oPosX, pos);\n            }\n            o->oSubAction++;\n        }\n        o->oWhompShakeVal = 0;\n    } else {\n        if (o->oWhompShakeVal < 10) {\n            if (o->oWhompShakeVal % 2) {\n                o->oPosY += 8.0f;\n            } else {\n                o->oPosY -= 8.0f;\n            }\n        } else {\n            o->oSubAction = 10;\n        }\n        o->oWhompShakeVal++;\n    }\n}\n\nvoid whomp_on_ground(void) {\n    if (o->oSubAction == 0) {\n        if (gMarioObject->platform == o) {\n            if (cur_obj_is_mario_ground_pounding_platform()) {\n                o->oNumLootCoins = 5;\n                obj_spawn_loot_yellow_coins(o, 5, 20.0f);\n                o->oAction = 8;\n            } else {\n                cur_obj_spawn_loot_coin_at_mario_pos();\n                o->oSubAction++;\n            }\n        }\n    } else if (!cur_obj_is_mario_on_platform()) {\n        o->oSubAction = 0;\n    }\n}\n\nvoid whomp_on_ground_general(void) {\n    if (o->oSubAction != 10) {\n        o->oForwardVel = 0.0f;\n        o->oAngleVelPitch = 0;\n        o->oAngleVelYaw = 0;\n        o->oAngleVelRoll = 0;\n\n        if (o->oBhvParams2ndByte != WHOMP_BP_SMALL) {\n            king_whomp_on_ground();\n        } else {\n            whomp_on_ground();\n        }\n        if (o->oTimer > 100 || (gMarioState->action == ACT_SQUISHED && o->oTimer > 30)) {\n            o->oSubAction = 10;\n        }\n    } else if (o->oFaceAnglePitch > 0) {\n        o->oAngleVelPitch = -0x200;\n        o->oFaceAnglePitch += o->oAngleVelPitch;\n    } else {\n        o->oAngleVelPitch = 0;\n        o->oFaceAnglePitch = 0;\n        if (o->oBhvParams2ndByte != WHOMP_BP_SMALL) {\n            o->oAction = 2;\n        } else {\n            o->oAction = 1;\n        }\n    }\n}\n\nvoid whomp_die(void) {\n    if (o->oBhvParams2ndByte != WHOMP_BP_SMALL) {\n        if (cur_obj_update_dialog_with_cutscene(MARIO_DIALOG_LOOK_UP,\n            DIALOG_FLAG_TEXT_DEFAULT, CUTSCENE_DIALOG, DIALOG_115)) {\n            obj_set_angle(o, 0, 0, 0);\n            cur_obj_hide();\n            cur_obj_become_intangible();\n            spawn_mist_particles_variable(0, 0, 200.0f);\n            spawn_triangle_break_particles(20, MODEL_DIRT_ANIMATION, 3.0f, 4);\n            cur_obj_shake_screen(SHAKE_POS_SMALL);\n            o->oPosY += 100.0f;\n            spawn_default_star(180.0f, 3880.0f, 340.0f);\n            cur_obj_play_sound_2(SOUND_OBJ_KING_WHOMP_DEATH);\n            o->oAction = 9;\n        }\n    } else {\n        spawn_mist_particles_variable(0, 0, 100.0f);\n        spawn_triangle_break_particles(20, MODEL_DIRT_ANIMATION, 3.0f, 4);\n        cur_obj_shake_screen(SHAKE_POS_SMALL);\n        create_sound_spawner(SOUND_OBJ_THWOMP);\n        obj_mark_for_deletion(o);\n    }\n}\n\nvoid king_whomp_stop_music(void) {\n    if (o->oTimer == 60) {\n        stop_background_music(SEQUENCE_ARGS(4, SEQ_EVENT_BOSS));\n    }\n}\n\nvoid (*sWhompActions[])(void) = {\n    whomp_init,\n    whomp_patrol,\n    king_whomp_chase,\n    whomp_prepare_jump,\n    whomp_jump,\n    whomp_land,\n    whomp_on_ground_general,\n    whomp_turn, whomp_die,\n    king_whomp_stop_music,\n};\n\nvoid bhv_whomp_loop(void) {\n    cur_obj_update_floor_and_walls();\n    cur_obj_call_action_function(sWhompActions);\n    cur_obj_move_standard(-20);\n    if (o->oAction != 9) {\n        if (o->oBhvParams2ndByte != WHOMP_BP_SMALL) {\n            cur_obj_hide_if_mario_far_away_y(2000.0f);\n        } else {\n            cur_obj_hide_if_mario_far_away_y(1000.0f);\n        }\n        load_object_collision_model();\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/wiggler.inc.c",
    "content": "\n/**\n * Behavior for bhvWigglerHead and bhvWigglerBody.\n * The bhvWigglerHead object controls the wiggler's behavior, and physically manifests\n * as the wiggler's head. The bhvWigglerBody objects represent the 3 tail body\n * parts, numbered 1 closest to the head, and 3 at the end of the tail.\n * Processing order is bhvWigglerHead, then bhvWigglerBody 1, 2, then 3.\n */\n\n/**\n * Hitbox for wiggler's non-head body parts.\n */\nstatic struct ObjectHitbox sWigglerBodyPartHitbox = {\n    /* interactType:      */ INTERACT_BOUNCE_TOP,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 3,\n    /* health:            */ 99, // never decreases\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 20,\n    /* height:            */ 20,\n    /* hurtboxRadius:     */ 20,\n    /* hurtboxHeight:     */ 10,\n};\n\n/**\n * Hitbox for wiggler's head.\n */\nstatic struct ObjectHitbox sWigglerHitbox = {\n    /* interactType:      */ INTERACT_BOUNCE_TOP,\n    /* downOffset:        */ 0,\n    /* damageOrCoinValue: */ 3,\n    /* health:            */ 4,\n    /* numLootCoins:      */ 0,\n    /* radius:            */ 60,\n    /* height:            */ 50,\n    /* hurtboxRadius:     */ 30,\n    /* hurtboxHeight:     */ 40,\n};\n\n/**\n * Attack handler for wiggler while in the walking action.\n */\nstatic u8 sWigglerAttackHandlers[] = {\n    /* ATTACK_PUNCH:                 */ ATTACK_HANDLER_KNOCKBACK,\n    /* ATTACK_KICK_OR_TRIP:          */ ATTACK_HANDLER_KNOCKBACK,\n    /* ATTACK_FROM_ABOVE:            */ ATTACK_HANDLER_SPECIAL_WIGGLER_JUMPED_ON,\n    /* ATTACK_GROUND_POUND_OR_TWIRL: */ ATTACK_HANDLER_SPECIAL_WIGGLER_JUMPED_ON,\n    /* ATTACK_FAST_ATTACK:           */ ATTACK_HANDLER_KNOCKBACK,\n    /* ATTACK_FROM_BELOW:            */ ATTACK_HANDLER_KNOCKBACK,\n};\n\n/**\n * Target speed while walking when wiggler has health 1, 2, 3, and 4.\n */\nstatic f32 sWigglerSpeeds[] = { 2.0f, 40.0f, 30.0f, 16.0f };\n\n/**\n * Update function for bhvWigglerBody.\n * Set object position and angle based on wiggler segment data and avoid falling\n * through the floor.\n * Tangible if the wiggler is not in the shrinking action, but does nothing on\n * attack.\n */\nvoid bhv_wiggler_body_part_update(void) {\n    f32 dx;\n    f32 dy;\n    f32 dz;\n    f32 dxz;\n    struct ChainSegment *segment = &o->parentObj->oWigglerSegments[o->oBhvParams2ndByte];\n    f32 posOffset;\n\n    cur_obj_scale(o->parentObj->header.gfx.scale[0]);\n\n    o->oFaceAnglePitch = segment->pitch;\n    o->oFaceAngleYaw = segment->yaw;\n\n    // TODO: What is this for?\n    posOffset = -37.5f * o->header.gfx.scale[0];\n    dy = posOffset * coss(o->oFaceAnglePitch) - posOffset;\n    dxz = posOffset * sins(o->oFaceAnglePitch);\n    dx = dxz * sins(o->oFaceAngleYaw);\n    dz = dxz * coss(o->oFaceAngleYaw);\n\n    o->oPosX = segment->posX + dx;\n    o->oPosY = segment->posY + dy;\n    o->oPosZ = segment->posZ + dz;\n\n    if (o->oPosY < o->parentObj->oWigglerFallThroughFloorsHeight) {\n        //! Since position is recomputed each frame, tilting the wiggler up\n        //  while on the ground could cause the tail segments to clip through\n        //  the floor\n        o->oPosY += -30.0f;\n        cur_obj_update_floor_height();\n        if (o->oFloorHeight > o->oPosY) {\n            o->oPosY = o->oFloorHeight;\n        }\n    }\n\n    segment->posY = o->oPosY;\n\n    // Inherit walking animation speed from wiggler\n    cur_obj_init_animation_with_accel_and_sound(0, o->parentObj->oWigglerWalkAnimSpeed);\n    if (o->parentObj->oWigglerWalkAnimSpeed == 0.0f) {\n        cur_obj_reverse_animation();\n    }\n\n    if (o->parentObj->oAction == WIGGLER_ACT_SHRINK) {\n        cur_obj_become_intangible();\n    } else {\n        obj_check_attacks(&sWigglerBodyPartHitbox, o->oAction);\n    }\n}\n\n/**\n * Initialize the segment data and spawn the body part objects.\n */\nvoid wiggler_init_segments(void) {\n    s32 i;\n    struct ChainSegment *segments = mem_pool_alloc(gObjectMemoryPool, 4 * sizeof(struct ChainSegment));\n\n    if (segments != NULL) {\n        // Each segment represents the global position and orientation of each\n        // object. Segment 0 represents the wiggler's head, and segment i>0\n        // represents body part i.\n        o->oWigglerSegments = segments;\n        for (i = 0; i <= 3; i++) {\n            chain_segment_init(segments + i);\n\n            (segments + i)->posX = o->oPosX;\n            (segments + i)->posY = o->oPosY;\n            (segments + i)->posZ = o->oPosZ;\n\n            (segments + i)->pitch = o->oFaceAnglePitch;\n            (segments + i)->yaw = o->oFaceAngleYaw;\n        }\n\n        o->header.gfx.animInfo.animFrame = -1;\n\n        // Spawn each body part\n        for (i = 1; i <= 3; i++) {\n            struct Object *bodyPart =\n                spawn_object_relative(i, 0, 0, 0, o, MODEL_WIGGLER_BODY, bhvWigglerBody);\n            if (bodyPart != NULL) {\n                obj_init_animation_with_sound(bodyPart, wiggler_seg5_anims_0500C874, 0);\n                bodyPart->header.gfx.animInfo.animFrame = (23 * i) % 26 - 1;\n            }\n        }\n\n        o->oAction = WIGGLER_ACT_WALK;\n        cur_obj_unhide();\n    }\n\n#if defined(VERSION_EU) || defined(AVOID_UB)\n    o->oHealth = 4; // This fixes Wiggler reading UB on his first frame of his acceleration, as his health is not set.\n#endif\n}\n\n/**\n * Update the tail to reflect changes in the head's yaw and pitch, and ensure\n * that the distance between parts is exactly the intended distance.\n * Since these positions are completely recomputed each frame, it is not possible\n * for a body part to get stuck on geometry and separate from the rest of the\n * body.\n */\n void wiggler_update_segments(void) {\n    struct ChainSegment *prevBodyPart;\n    struct ChainSegment *bodyPart;\n    f32 dx;\n    f32 dy;\n    f32 dz;\n    s16 dpitch;\n    s16 dyaw;\n    f32 dxz;\n    s32 i;\n    f32 segmentLength = 35.0f * o->header.gfx.scale[0];\n\n    for (i = 1; i <= 3; i++) {\n        prevBodyPart = &o->oWigglerSegments[i - 1];\n        bodyPart = &o->oWigglerSegments[i];\n\n        dx = bodyPart->posX - prevBodyPart->posX;\n        dy = bodyPart->posY - prevBodyPart->posY;\n        dz = bodyPart->posZ - prevBodyPart->posZ;\n\n        // As the head turns, propagate this rotation backward if the difference\n        // is more than 45 degrees\n        dyaw = atan2s(-dz, -dx) - prevBodyPart->yaw;\n        clamp_s16(&dyaw, -0x2000, 0x2000);\n        bodyPart->yaw = prevBodyPart->yaw + dyaw;\n\n        // As the head tilts, propagate the tilt backward\n        dxz = sqrtf(dx * dx + dz * dz);\n        dpitch = atan2s(dxz, dy) - prevBodyPart->pitch;\n        clamp_s16(&dpitch, -0x2000, 0x2000);\n        bodyPart->pitch = prevBodyPart->pitch + dpitch;\n\n        // Set the body part's position relative to the previous body part's\n        // position, using the current body part's angles. This means that the\n        // head can rotate up to 45 degrees without the body moving\n        bodyPart->posY = segmentLength * sins(bodyPart->pitch) + prevBodyPart->posY;\n        dxz = segmentLength * coss(bodyPart->pitch);\n        bodyPart->posX = prevBodyPart->posX - dxz * sins(bodyPart->yaw);\n        bodyPart->posZ = prevBodyPart->posZ - dxz * coss(bodyPart->yaw);\n    }\n}\n\n/**\n * Show text if necessary. Then walk toward mario if not at full health, and\n * otherwise wander in random directions.\n * If attacked by mario, enter either the jumped on or knockback action.\n */\nstatic void wiggler_act_walk(void) {\n    s16 yawTurnSpeed;\n\n    o->oWigglerWalkAnimSpeed = 0.06f * o->oForwardVel;\n\n    // Update text if necessary\n    if (o->oWigglerTextStatus < WIGGLER_TEXT_STATUS_COMPLETED_DIALOG) {\n        if (o->oWigglerTextStatus == WIGGLER_TEXT_STATUS_AWAIT_DIALOG) {\n            seq_player_lower_volume(SEQ_PLAYER_LEVEL, 60, 40);\n            o->oWigglerTextStatus = WIGGLER_TEXT_STATUS_SHOWING_DIALOG;\n        }\n\n        // If Mario is positioned below the wiggler, assume he entered through the\n        // lower cave entrance, so don't display text.\n        if (gMarioObject->oPosY < o->oPosY || cur_obj_update_dialog_with_cutscene(\n            MARIO_DIALOG_LOOK_UP, DIALOG_FLAG_NONE, CUTSCENE_DIALOG, DIALOG_150)) {\n            o->oWigglerTextStatus = WIGGLER_TEXT_STATUS_COMPLETED_DIALOG;\n        }\n    } else {\n        //! Every object's health is initially 2048, and wiggler's doesn't change\n        //  to 4 until after this runs the first time. It indexes out of bounds\n        //  and uses the value 113762.3 for one frame on US. This is fixed up\n        //  in wiggler_init_segments if AVOID_UB is defined.\n        obj_forward_vel_approach(sWigglerSpeeds[o->oHealth - 1], 1.0f);\n\n        if (o->oWigglerWalkAwayFromWallTimer != 0) {\n            o->oWigglerWalkAwayFromWallTimer--;\n        } else {\n            if (o->oDistanceToMario >= 25000.0f) {\n                // If >1200 away from home, turn to home\n                o->oWigglerTargetYaw = o->oAngleToMario;\n            }\n\n            if (obj_bounce_off_walls_edges_objects(&o->oWigglerTargetYaw)) {\n                //! If the wiggler could self-intersect, or intersect a different\n                //  non-mario object, this could potentially be used to force\n                //  the wiggler to walk straight - past his usual radius\n                o->oWigglerWalkAwayFromWallTimer = random_linear_offset(30, 30);\n            } else {\n                if (o->oHealth < 4) {\n                    o->oWigglerTargetYaw = o->oAngleToMario;\n                } else if (o->oWigglerTimeUntilRandomTurn != 0) {\n                    o->oWigglerTimeUntilRandomTurn--;\n                } else {\n                    o->oWigglerTargetYaw = o->oMoveAngleYaw + 0x4000 * (s16) random_sign();\n                    o->oWigglerTimeUntilRandomTurn = random_linear_offset(30, 50);\n                }\n            }\n        }\n\n        // If moving at high speeds, could overflow. But can't reach such speeds\n        // in practice\n        yawTurnSpeed = (s16)(30.0f * o->oForwardVel);\n        cur_obj_rotate_yaw_toward(o->oWigglerTargetYaw, yawTurnSpeed);\n        obj_face_yaw_approach(o->oMoveAngleYaw, 2 * yawTurnSpeed);\n\n        obj_face_pitch_approach(0, 0x320);\n\n        // For the first two seconds of walking, stay invulnerable\n        if (o->oTimer < 60) {\n            obj_check_attacks(&sWigglerHitbox, o->oAction);\n        } else if (obj_handle_attacks(&sWigglerHitbox, o->oAction, sWigglerAttackHandlers)) {\n            if (o->oAction != WIGGLER_ACT_JUMPED_ON) {\n                o->oAction = WIGGLER_ACT_KNOCKBACK;\n            }\n\n            o->oWigglerWalkAwayFromWallTimer = 0;\n            o->oWigglerWalkAnimSpeed = 0.0f;\n        }\n    }\n}\n/**\n * Squish and unsquish, then show text and enter either the walking or shrinking\n * action.\n */\nstatic void wiggler_act_jumped_on(void) {\n    // Text to show on first, second, and third attack.\n    s32 attackText[3] = { DIALOG_152, DIALOG_168, DIALOG_151 };\n\n    // Shrink until the squish speed becomes 0, then unisquish\n    if (approach_f32_ptr(&o->oWigglerSquishSpeed, 0.0f, 0.05f)) {\n        // Note that 4 is the default scale\n        approach_f32_ptr(&o->header.gfx.scale[1], 4.0f, 0.2f);\n    } else {\n        o->header.gfx.scale[1] -= o->oWigglerSquishSpeed;\n    }\n\n    // Wait for a second after unsquishing, then show text and either shrink (if\n    // defeated) or go back to walking\n    if (o->header.gfx.scale[1] >= 4.0f) {\n        if (o->oTimer > 30) {\n            if (cur_obj_update_dialog_with_cutscene(MARIO_DIALOG_LOOK_UP,\n                DIALOG_FLAG_NONE, CUTSCENE_DIALOG, attackText[o->oHealth - 2])) {\n                // Because we don't want the wiggler to disappear after being\n                // defeated, we leave its health at 1\n                if (--o->oHealth == 1) {\n                    o->oAction = WIGGLER_ACT_SHRINK;\n                    cur_obj_become_intangible();\n                } else {\n                    o->oAction = WIGGLER_ACT_WALK;\n                    o->oMoveAngleYaw = o->oFaceAngleYaw;\n\n                    if (o->oHealth == 2) {\n                        cur_obj_play_sound_2(SOUND_OBJ_WIGGLER_JUMP);\n                        o->oForwardVel = 10.0f;\n                        o->oVelY = 70.0f;\n                    }\n                }\n            }\n        }\n    } else {\n        o->oTimer = 0;\n    }\n\n    obj_check_attacks(&sWigglerHitbox, o->oAction);\n}\n\n/**\n * Decelerate to a stop and then enter the walk action.\n */\nstatic void wiggler_act_knockback(void) {\n    if (o->oVelY > 0.0f) {\n        o->oFaceAnglePitch -= o->oVelY * 30.0f;\n    } else {\n        obj_face_pitch_approach(0, 0x190);\n    }\n\n    if (obj_forward_vel_approach(0.0f, 1.0f) && o->oFaceAnglePitch == 0) {\n        o->oAction = WIGGLER_ACT_WALK;\n        o->oMoveAngleYaw = o->oFaceAngleYaw;\n    }\n\n    obj_check_attacks(&sWigglerHitbox, o->oAction);\n}\n\n/**\n * Shrink, then spawn the star and enter the fall through floor action.\n */\nstatic void wiggler_act_shrink(void) {\n    if (o->oTimer >= 20) {\n        if (o->oTimer == 20) {\n            cur_obj_play_sound_2(SOUND_OBJ_ENEMY_DEFEAT_SHRINK);\n        }\n\n        // 4 is the default scale, so shrink to 1/4 of regular size\n        if (approach_f32_ptr(&o->header.gfx.scale[0], 1.0f, 0.1f)) {\n            spawn_default_star(0.0f, 2048.0f, 0.0f);\n            o->oAction = WIGGLER_ACT_FALL_THROUGH_FLOOR;\n        }\n\n        cur_obj_scale(o->header.gfx.scale[0]);\n    }\n}\n\n/**\n * Fall through floors until y < 1700, then enter the walking action.\n */\nstatic void wiggler_act_fall_through_floor(void) {\n    if (o->oTimer == 60) {\n        stop_background_music(SEQUENCE_ARGS(4, SEQ_EVENT_BOSS));\n        o->oWigglerFallThroughFloorsHeight = 1700.0f;\n    } else if (o->oTimer > 60) {\n        if (o->oPosY < o->oWigglerFallThroughFloorsHeight) {\n            o->oAction = WIGGLER_ACT_WALK;\n        } else {\n            o->oFaceAnglePitch = obj_get_pitch_from_vel();\n        }\n\n        cur_obj_move_using_fvel_and_gravity();\n    }\n}\n\n/**\n * Attack handler for when wiggler is jumped or ground pounded on.\n * Stop and enter the jumped on action.\n */\nvoid wiggler_jumped_on_attack_handler(void) {\n    cur_obj_play_sound_2(SOUND_OBJ_WIGGLER_ATTACKED);\n    o->oAction = WIGGLER_ACT_JUMPED_ON;\n    o->oForwardVel = o->oVelY = 0.0f;\n    o->oWigglerSquishSpeed = 0.4f;\n}\n\n/**\n * Update function for bhvWigglerHead.\n */\nvoid bhv_wiggler_update(void) {\n    // PARTIAL_UPDATE\n\n    if (o->oAction == WIGGLER_ACT_UNINITIALIZED) {\n        wiggler_init_segments();\n    } else {\n        if (o->oAction == WIGGLER_ACT_FALL_THROUGH_FLOOR) {\n            wiggler_act_fall_through_floor();\n        } else {\n            treat_far_home_as_mario(1200.0f);\n\n            // Walking animation and sound\n            cur_obj_init_animation_with_accel_and_sound(0, o->oWigglerWalkAnimSpeed);\n            if (o->oWigglerWalkAnimSpeed != 0.0f) {\n                cur_obj_play_sound_at_anim_range(0, 13,\n                              o->oHealth >= 4 ? SOUND_OBJ_WIGGLER_LOW_PITCH : SOUND_OBJ_WIGGLER_HIGH_PITCH);\n            } else {\n                cur_obj_reverse_animation();\n            }\n\n            cur_obj_update_floor_and_walls();\n            switch (o->oAction) {\n                case WIGGLER_ACT_WALK:\n                    wiggler_act_walk();\n                    break;\n                case WIGGLER_ACT_KNOCKBACK:\n                    wiggler_act_knockback();\n                    break;\n                case WIGGLER_ACT_JUMPED_ON:\n                    wiggler_act_jumped_on();\n                    break;\n                case WIGGLER_ACT_SHRINK:\n                    wiggler_act_shrink();\n                    break;\n                case WIGGLER_ACT_FALL_THROUGH_FLOOR:\n                    wiggler_act_fall_through_floor();\n                    break;\n            }\n\n            cur_obj_move_standard(-78);\n        }\n\n        // Update segment 0 with data from the wiggler object\n        o->oWigglerSegments[0].posX = o->oPosX;\n        o->oWigglerSegments[0].posY = o->oPosY;\n        o->oWigglerSegments[0].posZ = o->oPosZ;\n        o->oWigglerSegments[0].pitch = o->oFaceAnglePitch;\n        o->oWigglerSegments[0].yaw = o->oFaceAngleYaw;\n\n        // Update the rest of the segments to follow segment 0\n        wiggler_update_segments();\n    }\n}\n"
  },
  {
    "path": "src/game/behaviors/wind.inc.c",
    "content": "// wind.inc.c\n\nvoid spawn_wind_particles(s16 pitch, s16 yaw) {\n    s32 i;\n    for (i = 0; i < 3; i++) {\n        struct Object *wind = spawn_object(o, MODEL_MIST, bhvWind);\n        wind->oMoveAngleYaw = yaw;\n        wind->oMoveAnglePitch = pitch;\n    }\n}\n\nvoid bhv_wind_loop(void) {\n    s16 sp2E = 500;\n    f32 scale = 1.0f;\n\n    if (o->oTimer == 0) {\n        o->oOpacity = 100;\n        if (o->oMoveAnglePitch == 0) {\n            obj_translate_xz_random(o, 900.0f);\n            o->oPosX += sins(o->oMoveAngleYaw + 0x8000) * sp2E; // NOP as Pitch is 0\n            o->oPosY += 80.0f + random_f32_around_zero(200.0f);\n            o->oPosZ += coss(o->oMoveAngleYaw + 0x8000) * sp2E; // -coss(a) * sp2E\n            o->oMoveAngleYaw += random_f32_around_zero(4000.0f);\n            o->oForwardVel = random_float() * 70.0f + 50.0f;\n        } else {\n            obj_translate_xz_random(o, 600.0f);\n            o->oPosY -= sp2E - 200; // 300\n            o->oVelY = random_float() * 30.0f + 50.0f;\n            o->oMoveAngleYaw = random_u16();\n            o->oForwardVel = 10.0f;\n        }\n        obj_set_billboard(o);\n        cur_obj_scale(scale);\n    }\n\n    if (o->oTimer > 8) {\n        obj_mark_for_deletion(o);\n    }\n\n    o->oFaceAnglePitch += 4000.0f + 2000.0f * random_float();\n    o->oFaceAngleYaw += 4000.0f + 2000.0f * random_float();\n    cur_obj_move_using_fvel_and_gravity();\n}\n"
  },
  {
    "path": "src/game/behaviors/yoshi.inc.c",
    "content": "// yoshi.inc.c\n\n// X/Z coordinates of Yoshi's homes that he switches between.\n// Note that this doesn't contain the Y coordinate since the castle roof is flat,\n// so o->oHomeY is never updated.\nstatic s16 sYoshiHomeLocations[] = { 0, -5625, -1364, -5912, -1403, -4609, -1004, -5308 };\n\nvoid bhv_yoshi_init(void) {\n    o->oGravity = 2.0f;\n    o->oFriction = 0.9f;\n    o->oBuoyancy = 1.3f;\n    o->oInteractionSubtype = INT_SUBTYPE_NPC;\n\n    if (save_file_get_total_star_count(gCurrSaveFileNum - 1, COURSE_MIN - 1, COURSE_MAX - 1) < 120\n        || sYoshiDead == TRUE) {\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n}\n\nvoid yoshi_walk_loop(void) {\n    UNUSED s16 collisionFlags;\n    s16 animFrame = o->header.gfx.animInfo.animFrame;\n\n    o->oForwardVel = 10.0f;\n    collisionFlags = object_step();\n    o->oMoveAngleYaw = approach_s16_symmetric(o->oMoveAngleYaw, o->oYoshiTargetYaw, 0x500);\n\n    if (is_point_close_to_object(o, o->oHomeX, 3174.0f, o->oHomeZ, 200)) {\n        o->oAction = YOSHI_ACT_IDLE;\n    }\n\n    cur_obj_init_animation(1);\n\n    if (animFrame == 0 || animFrame == 15) {\n        cur_obj_play_sound_2(SOUND_GENERAL_YOSHI_WALK);\n    }\n\n    if (o->oInteractStatus == INT_STATUS_INTERACTED) {\n        o->oAction = YOSHI_ACT_TALK;\n    }\n\n    if (o->oPosY < 2100.0f) {\n        create_respawner(MODEL_YOSHI, bhvYoshi, 3000);\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n}\n\nvoid yoshi_idle_loop(void) {\n    s16 chosenHome;\n    UNUSED s16 animFrame = o->header.gfx.animInfo.animFrame;\n\n    if (o->oTimer > 90) {\n        chosenHome = random_float() * 3.99;\n\n        if (o->oYoshiChosenHome == chosenHome) {\n            return;\n        } else {\n            o->oYoshiChosenHome = chosenHome;\n        }\n\n        o->oHomeX = sYoshiHomeLocations[o->oYoshiChosenHome * 2];\n        o->oHomeZ = sYoshiHomeLocations[o->oYoshiChosenHome * 2 + 1];\n        o->oYoshiTargetYaw = atan2s(o->oHomeZ - o->oPosZ, o->oHomeX - o->oPosX);\n        o->oAction = YOSHI_ACT_WALK;\n    }\n\n    cur_obj_init_animation(0);\n\n    if (o->oInteractStatus == INT_STATUS_INTERACTED) {\n        o->oAction = YOSHI_ACT_TALK;\n    }\n\n    // Credits; Yoshi appears at this position overlooking the castle near the end of the credits\n    if (gPlayerCameraState->cameraEvent == CAM_EVENT_START_ENDING ||\n        gPlayerCameraState->cameraEvent == CAM_EVENT_START_END_WAVING) {\n        o->oAction = YOSHI_ACT_CREDITS;\n        o->oPosX = -1798.0f;\n        o->oPosY = 3174.0f;\n        o->oPosZ = -3644.0f;\n    }\n}\n\nvoid yoshi_talk_loop(void) {\n    if ((s16) o->oMoveAngleYaw == (s16) o->oAngleToMario) {\n        cur_obj_init_animation(0);\n        if (set_mario_npc_dialog(MARIO_DIALOG_LOOK_FRONT) == MARIO_DIALOG_STATUS_SPEAK) {\n            o->activeFlags |= ACTIVE_FLAG_INITIATED_TIME_STOP;\n            if (cutscene_object_with_dialog(CUTSCENE_DIALOG, o, DIALOG_161) != 0) {\n                o->activeFlags &= ~ACTIVE_FLAG_INITIATED_TIME_STOP;\n                o->oInteractStatus = 0;\n                o->oHomeX = sYoshiHomeLocations[2];\n                o->oHomeZ = sYoshiHomeLocations[3];\n                o->oYoshiTargetYaw = atan2s(o->oHomeZ - o->oPosZ, o->oHomeX - o->oPosX);\n                o->oAction = YOSHI_ACT_GIVE_PRESENT;\n            }\n        }\n    } else {\n        cur_obj_init_animation(1);\n        play_puzzle_jingle();\n        o->oMoveAngleYaw = approach_s16_symmetric(o->oMoveAngleYaw, o->oAngleToMario, 0x500);\n    }\n}\n\nvoid yoshi_walk_and_jump_off_roof_loop(void) {\n    s16 animFrame = o->header.gfx.animInfo.animFrame;\n\n    o->oForwardVel = 10.0f;\n    object_step();\n    cur_obj_init_animation(1);\n\n    if (o->oTimer == 0) {\n        cutscene_object(CUTSCENE_STAR_SPAWN, o);\n    }\n\n    o->oMoveAngleYaw = approach_s16_symmetric(o->oMoveAngleYaw, o->oYoshiTargetYaw, 0x500);\n\n    if (is_point_close_to_object(o, o->oHomeX, 3174.0f, o->oHomeZ, 200)) {\n        cur_obj_init_animation(2);\n        cur_obj_play_sound_2(SOUND_GENERAL_ENEMY_ALERT1);\n        o->oForwardVel = 50.0f;\n        o->oVelY = 40.0f;\n        o->oMoveAngleYaw = -0x3FFF;\n        o->oAction = YOSHI_ACT_FINISH_JUMPING_AND_DESPAWN;\n    }\n\n    if (animFrame == 0 || animFrame == 15) {\n        cur_obj_play_sound_2(SOUND_GENERAL_YOSHI_WALK);\n    }\n}\n\nvoid yoshi_finish_jumping_and_despawn_loop(void) {\n    cur_obj_extend_animation_if_at_end();\n    obj_move_xyz_using_fvel_and_yaw(o);\n\n    o->oVelY -= 2.0;\n\n    if (o->oPosY < 2100.0f) {\n        set_mario_npc_dialog(MARIO_DIALOG_STOP);\n        gObjCutsceneDone = TRUE;\n        sYoshiDead = TRUE;\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    }\n}\n\nvoid yoshi_give_present_loop(void) {\n    s32 globalTimer = gGlobalTimer;\n\n    if (gHudDisplay.lives == 100) {\n        play_sound(SOUND_GENERAL_COLLECT_1UP, gGlobalSoundSource);\n        gSpecialTripleJump = TRUE;\n        o->oAction = YOSHI_ACT_WALK_JUMP_OFF_ROOF;\n        return;\n    }\n\n    if (!(globalTimer & 3)) {\n        play_sound(SOUND_MENU_YOSHI_GAIN_LIVES, gGlobalSoundSource);\n        gMarioState->numLives++;\n    }\n}\n\nvoid bhv_yoshi_loop(void) {\n    switch (o->oAction) {\n        case YOSHI_ACT_IDLE:\n            yoshi_idle_loop();\n            break;\n\n        case YOSHI_ACT_WALK:\n            yoshi_walk_loop();\n            break;\n\n        case YOSHI_ACT_TALK:\n            yoshi_talk_loop();\n            break;\n\n        case YOSHI_ACT_WALK_JUMP_OFF_ROOF:\n            yoshi_walk_and_jump_off_roof_loop();\n            break;\n\n        case YOSHI_ACT_FINISH_JUMPING_AND_DESPAWN:\n            yoshi_finish_jumping_and_despawn_loop();\n            break;\n\n        case YOSHI_ACT_GIVE_PRESENT:\n            yoshi_give_present_loop();\n            break;\n\n        case YOSHI_ACT_CREDITS:\n            cur_obj_init_animation(0);\n            break;\n    }\n\n    curr_obj_random_blink(&o->oYoshiBlinkTimer);\n}\n"
  },
  {
    "path": "src/game/camera.c",
    "content": "#include <ultra64.h>\n\n#define INCLUDED_FROM_CAMERA_C\n\n#include \"prevent_bss_reordering.h\"\n#include \"sm64.h\"\n#include \"camera.h\"\n#include \"seq_ids.h\"\n#include \"dialog_ids.h\"\n#include \"audio/external.h\"\n#include \"mario_misc.h\"\n#include \"game_init.h\"\n#include \"hud.h\"\n#include \"engine/math_util.h\"\n#include \"area.h\"\n#include \"engine/surface_collision.h\"\n#include \"engine/behavior_script.h\"\n#include \"level_update.h\"\n#include \"ingame_menu.h\"\n#include \"mario_actions_cutscene.h\"\n#include \"save_file.h\"\n#include \"object_helpers.h\"\n#include \"print.h\"\n#include \"spawn_sound.h\"\n#include \"behavior_actions.h\"\n#include \"behavior_data.h\"\n#include \"object_list_processor.h\"\n#include \"paintings.h\"\n#include \"engine/graph_node.h\"\n#include \"level_table.h\"\n\n#define CBUTTON_MASK (U_CBUTTONS | D_CBUTTONS | L_CBUTTONS | R_CBUTTONS)\n\n/**\n * @file camera.c\n * Implements the camera system, including C-button input, camera modes, camera triggers, and cutscenes.\n *\n * When working with the camera, you should be familiar with sm64's coordinate system.\n * Relative to the camera, the coordinate system follows the right hand rule:\n *          +X points right.\n *          +Y points up.\n *          +Z points out of the screen.\n *\n * You should also be familiar with Euler angles: 'pitch', 'yaw', and 'roll'.\n *      pitch: rotation about the X-axis, measured from +Y.\n *          Unlike yaw and roll, pitch is bounded in +-0x4000 (90 degrees).\n *          Pitch is 0 when the camera points parallel to the xz-plane (+Y points straight up).\n *\n *      yaw: rotation about the Y-axis, measured from (absolute) +Z.\n *          Positive yaw rotates clockwise, towards +X.\n *\n *      roll: rotation about the Z-axis, measured from the camera's right direction.\n *          Unfortunately, it's weird: For some reason, roll is flipped. Positive roll makes the camera\n *          rotate counterclockwise, which means the WORLD rotates clockwise. Luckily roll is rarely\n *          used.\n *\n *      Remember the right hand rule: make a thumbs-up with your right hand, stick your thumb in the\n *      +direction (except for roll), and the angle follows the rotation of your curled fingers.\n *\n * Illustrations:\n * Following the right hand rule, each hidden axis's positive direction points out of the screen.\n *\n *       YZ-Plane (pitch)        XZ-Plane (yaw)          XY-Plane (roll -- Note flipped)\n *          +Y                      -Z                      +Y\n *           ^                       ^ (into the             ^\n *         --|--                     |   screen)             |<-\n * +pitch /  |  \\ -pitch             |                       |  \\ -roll\n *       v   |   v                   |                       |   |\n * +Z <------O------> -Z   -X <------O------> +X   -X <------O------> +X\n *           |                   ^   |   ^                   |   |\n *           |                    \\  |  /                    |  / +roll\n *           |               -yaw  --|--  +yaw               |<-\n *           v                       v                       v\n *          -Y                      +Z                      -Y\n *\n */\n\n// BSS\n/**\n * Stores Lakitu's position from the last frame, used for transitioning in next_lakitu_state()\n */\nVec3f sOldPosition;\n/**\n * Stores Lakitu's focus from the last frame, used for transitioning in next_lakitu_state()\n */\nVec3f sOldFocus;\n/**\n * Global array of PlayerCameraState.\n * L is real.\n */\nstruct PlayerCameraState gPlayerCameraState[2];\n/**\n * Direction controlled by player 2, moves the focus during the credits.\n */\nVec3f sPlayer2FocusOffset;\n/**\n * The pitch used for the credits easter egg.\n */\ns16 sCreditsPlayer2Pitch;\n/**\n * The yaw used for the credits easter egg.\n */\ns16 sCreditsPlayer2Yaw;\n/**\n * Used to decide when to zoom out in the pause menu.\n */\nu8 sFramesPaused;\n\nextern struct CameraFOVStatus sFOVState;\nextern struct TransitionInfo sModeTransition;\nextern struct PlayerGeometry sMarioGeometry;\nextern s16 unusedFreeRoamWallYaw;\nextern s16 sAvoidYawVel;\nextern s16 sCameraYawAfterDoorCutscene;\nextern s16 unusedSplinePitch;\nextern s16 unusedSplineYaw;\nextern struct HandheldShakePoint sHandheldShakeSpline[4];\nextern s16 sHandheldShakeMag;\nextern f32 sHandheldShakeTimer;\nextern f32 sHandheldShakeInc;\nextern s16 sHandheldShakePitch;\nextern s16 sHandheldShakeYaw;\nextern s16 sHandheldShakeRoll;\nextern u32 unused8033B30C;\nextern u32 unused8033B310;\nextern s16 sSelectionFlags;\nextern s16 unused8033B316;\nextern s16 s2ndRotateFlags;\nextern s16 unused8033B31A;\nextern s16 sCameraSoundFlags;\nextern u16 sCButtonsPressed;\nextern s16 sCutsceneDialogID;\nextern struct LakituState gLakituState;\nextern s16 unused8033B3E8;\nextern s16 sAreaYaw;\nextern s16 sAreaYawChange;\nextern s16 sLakituDist;\nextern s16 sLakituPitch;\nextern f32 sZoomAmount;\nextern s16 sCSideButtonYaw;\nextern s16 sBehindMarioSoundTimer;\nextern f32 sZeroZoomDist;\nextern s16 sCUpCameraPitch;\nextern s16 sModeOffsetYaw;\nextern s16 sSpiralStairsYawOffset;\nextern s16 s8DirModeBaseYaw;\nextern s16 s8DirModeYawOffset;\nextern f32 sPanDistance;\nextern f32 sCannonYOffset;\nextern struct ModeTransitionInfo sModeInfo;\nextern Vec3f sCastleEntranceOffset;\nextern u32 sParTrackIndex;\nextern struct ParallelTrackingPoint *sParTrackPath;\nextern struct CameraStoredInfo sParTrackTransOff;\nextern struct CameraStoredInfo sCameraStoreCUp;\nextern struct CameraStoredInfo sCameraStoreCutscene;\nextern s16 gCameraMovementFlags;\nextern s16 sStatusFlags;\nextern struct CutsceneSplinePoint sCurCreditsSplinePos[32];\nextern struct CutsceneSplinePoint sCurCreditsSplineFocus[32];\nextern s16 sCutsceneSplineSegment;\nextern f32 sCutsceneSplineSegmentProgress;\nextern s16 unused8033B6E8;\nextern s16 sCutsceneShot;\nextern s16 gCutsceneTimer;\nextern struct CutsceneVariable sCutsceneVars[10];\nextern s32 gObjCutsceneDone;\nextern u32 gCutsceneObjSpawn;\nextern struct Camera *gCamera;\n\n/**\n * Lakitu's position and focus.\n * @see LakituState\n */\nstruct LakituState gLakituState;\nstruct CameraFOVStatus sFOVState;\nstruct TransitionInfo sModeTransition;\nstruct PlayerGeometry sMarioGeometry;\nstruct Camera *gCamera;\ns16 unusedFreeRoamWallYaw;\ns16 sAvoidYawVel;\ns16 sCameraYawAfterDoorCutscene;\n/**\n * The current spline that controls the camera's position during the credits.\n */\nstruct CutsceneSplinePoint sCurCreditsSplinePos[32];\n\n/**\n * The current spline that controls the camera's focus during the credits.\n */\nstruct CutsceneSplinePoint sCurCreditsSplineFocus[32];\n\ns16 unusedSplinePitch;\ns16 unusedSplineYaw;\n\n/**\n * The progress (from 0 to 1) through the current spline segment.\n * When it becomes >= 1, 1.0 is subtracted from it and sCutsceneSplineSegment is increased.\n */\nf32 sCutsceneSplineSegmentProgress;\n\n/**\n * The current segment of the CutsceneSplinePoint[] being used.\n */\ns16 sCutsceneSplineSegment;\ns16 unused8033B6E8;\n\n// Shaky Hand-held Camera effect variables\nstruct HandheldShakePoint sHandheldShakeSpline[4];\ns16 sHandheldShakeMag;\nf32 sHandheldShakeTimer;\nf32 sHandheldShakeInc;\ns16 sHandheldShakePitch;\ns16 sHandheldShakeYaw;\ns16 sHandheldShakeRoll;\n\n/**\n * Controls which object to spawn in the intro and ending cutscenes.\n */\nu32 gCutsceneObjSpawn;\n/**\n * Controls when an object-based cutscene should end. It's only used in the star spawn cutscenes, but\n * Yoshi also toggles this.\n */\ns32 gObjCutsceneDone;\n\nu32 unused8033B30C;\nu32 unused8033B310;\n\n/**\n * Determines which R-Trigger mode is selected in the pause menu.\n */\ns16 sSelectionFlags;\n\n/**\n * Flags that determine what movements the camera should start / do this frame.\n */\ns16 gCameraMovementFlags;\ns16 unused8033B316;\n\n/**\n * Flags that change how modes operate and how Lakitu moves.\n * The most commonly used flag is CAM_FLAG_SMOOTH_MOVEMENT, which makes Lakitu fly to the next position,\n * instead of warping.\n */\ns16 sStatusFlags;\n/**\n * Flags that determine whether the player has already rotated left or right. Used in radial mode to\n * determine whether to rotate all the way, or just to 60 degrees.\n */\ns16 s2ndRotateFlags;\ns16 unused8033B31A;\n/**\n * Flags that control buzzes and sounds that play, mostly for C-button input.\n */\ns16 sCameraSoundFlags;\n/**\n * Stores what C-Buttons are pressed this frame.\n */\nu16 sCButtonsPressed;\n/**\n * A copy of gDialogID, the dialog displayed during the cutscene.\n */\ns16 sCutsceneDialogID;\n/**\n * The currently playing shot in the cutscene.\n */\ns16 sCutsceneShot;\n/**\n * The current frame of the cutscene shot.\n */\ns16 gCutsceneTimer;\ns16 unused8033B3E8;\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\ns16 unused8033B3E82;\n#endif\n/**\n * The angle of the direction vector from the area's center to Mario's position.\n */\ns16 sAreaYaw;\n\n/**\n * How much sAreaYaw changed when Mario moved.\n */\ns16 sAreaYawChange;\n\n/**\n * Lakitu's distance from Mario in C-Down mode\n */\ns16 sLakituDist;\n\n/**\n * How much Lakitu looks down in C-Down mode\n */\ns16 sLakituPitch;\n\n/**\n * The amount of distance left to zoom out\n */\nf32 sZoomAmount;\n\ns16 sCSideButtonYaw;\n\n/**\n * Sound timer used to space out sounds in behind Mario mode\n */\ns16 sBehindMarioSoundTimer;\n\n/**\n * Virtually unused aside being set to 0 and compared with gCameraZoomDist (which is never < 0)\n */\nf32 sZeroZoomDist;\n\n/**\n * The camera's pitch in C-Up mode. Mainly controls Mario's head rotation.\n */\ns16 sCUpCameraPitch;\n/**\n * The current mode's yaw, which gets added to the camera's yaw.\n */\ns16 sModeOffsetYaw;\n\n/**\n * Stores Mario's yaw around the stairs, relative to the camera's position.\n *\n * Used in update_spiral_stairs_camera()\n */\ns16 sSpiralStairsYawOffset;\n\n/**\n * The constant offset to 8-direction mode's yaw.\n */\ns16 s8DirModeBaseYaw;\n/**\n * Player-controlled yaw offset in 8-direction mode, a multiple of 45 degrees.\n */\ns16 s8DirModeYawOffset;\n\n/**\n * The distance that the camera will look ahead of Mario in the direction Mario is facing.\n */\nf32 sPanDistance;\n\n/**\n * When Mario gets in the cannon, it is pointing straight up and rotates down.\n * This is used to make the camera start up and rotate down, like the cannon.\n */\nf32 sCannonYOffset;\n/**\n * These structs are used by the cutscenes. Most of the fields are unused, and some (all?) of the used\n * ones have multiple uses.\n * Check the cutscene_start functions for documentation on the cvars used by a specific cutscene.\n */\nstruct CutsceneVariable sCutsceneVars[10];\nstruct ModeTransitionInfo sModeInfo;\n/**\n * Offset added to sFixedModeBasePosition when Mario is inside, near the castle lobby entrance\n */\nVec3f sCastleEntranceOffset;\n\n/**\n * The index into the current parallel tracking path\n */\nu32 sParTrackIndex;\n\n/**\n * The current list of ParallelTrackingPoints used in update_parallel_tracking_camera()\n */\nstruct ParallelTrackingPoint *sParTrackPath;\n\n/**\n * On the first frame after the camera changes to a different parallel tracking path, this stores the\n * displacement between the camera's calculated new position and its previous positions\n *\n * This transition offset is then used to smoothly interpolate the camera's position between the two\n * paths\n */\nstruct CameraStoredInfo sParTrackTransOff;\n\n/**\n * The information stored when C-Up is active, used to update Lakitu's rotation when exiting C-Up\n */\nstruct CameraStoredInfo sCameraStoreCUp;\n\n/**\n * The information stored during cutscenes\n */\nstruct CameraStoredInfo sCameraStoreCutscene;\n\n// first iteration of data\nu32 unused8032CFC0 = 0;\nstruct Object *gCutsceneFocus = NULL;\n\nu32 unused8032CFC8 = 0;\nu32 unused8032CFCC = 0;\n\n/**\n * The information of a second focus camera used by some objects\n */\nstruct Object *gSecondCameraFocus = NULL;\n\n/**\n * How fast the camera's yaw should approach the next yaw.\n */\ns16 sYawSpeed = 0x400;\ns32 gCurrLevelArea = 0;\nu32 gPrevLevel = 0;\n\nf32 unused8032CFE0 = 1000.0f;\nf32 unused8032CFE4 = 800.0f;\nu32 unused8032CFE8 = 0;\nf32 gCameraZoomDist = 800.0f;\n\n/**\n * A cutscene that plays when the player interacts with an object\n */\nu8 sObjectCutscene = 0;\n\n/**\n * The ID of the cutscene that ended. It's set to 0 if no cutscene ended less than 8 frames ago.\n *\n * It is only used to prevent the same cutscene from playing twice before 8 frames have passed.\n */\nu8 gRecentCutscene = 0;\n\n/**\n * A timer that increments for 8 frames when a cutscene ends.\n * When it reaches 8, it sets gRecentCutscene to 0.\n */\nu8 sFramesSinceCutsceneEnded = 0;\n/**\n * Mario's response to a dialog.\n * 0 = No response yet\n * 1 = Yes\n * 2 = No\n * 3 = Dialog doesn't have a response\n */\nu8 sCutsceneDialogResponse = DIALOG_RESPONSE_NONE;\nstruct PlayerCameraState *sMarioCamState = &gPlayerCameraState[0];\nstruct PlayerCameraState *sLuigiCamState = &gPlayerCameraState[1];\nu32 unused8032D008 = 0;\nVec3f sFixedModeBasePosition    = { 646.0f, 143.0f, -1513.0f };\nVec3f sUnusedModeBasePosition_2 = { 646.0f, 143.0f, -1513.0f };\nVec3f sUnusedModeBasePosition_3 = { 646.0f, 143.0f, -1513.0f };\nVec3f sUnusedModeBasePosition_4 = { 646.0f, 143.0f, -1513.0f };\nVec3f sUnusedModeBasePosition_5 = { 646.0f, 143.0f, -1513.0f };\n\ns32 update_radial_camera(struct Camera *c, Vec3f, Vec3f);\ns32 update_outward_radial_camera(struct Camera *c, Vec3f, Vec3f);\ns32 update_behind_mario_camera(struct Camera *c, Vec3f, Vec3f);\ns32 update_mario_camera(struct Camera *c, Vec3f, Vec3f);\ns32 unused_update_mode_5_camera(struct Camera *c, Vec3f, Vec3f);\ns32 update_c_up(struct Camera *c, Vec3f, Vec3f);\ns32 nop_update_water_camera(struct Camera *c, Vec3f, Vec3f);\ns32 update_slide_or_0f_camera(struct Camera *c, Vec3f, Vec3f);\ns32 update_in_cannon(struct Camera *c, Vec3f, Vec3f);\ns32 update_boss_fight_camera(struct Camera *c, Vec3f, Vec3f);\ns32 update_parallel_tracking_camera(struct Camera *c, Vec3f, Vec3f);\ns32 update_fixed_camera(struct Camera *c, Vec3f, Vec3f);\ns32 update_8_directions_camera(struct Camera *c, Vec3f, Vec3f);\ns32 update_slide_or_0f_camera(struct Camera *c, Vec3f, Vec3f);\ns32 update_spiral_stairs_camera(struct Camera *c, Vec3f, Vec3f);\n\ntypedef s32 (*CameraTransition)(struct Camera *c, Vec3f, Vec3f);\nCameraTransition sModeTransitions[] = {\n    NULL,\n    update_radial_camera,\n    update_outward_radial_camera,\n    update_behind_mario_camera,\n    update_mario_camera,\n    unused_update_mode_5_camera,\n    update_c_up,\n    update_mario_camera,\n    nop_update_water_camera,\n    update_slide_or_0f_camera,\n    update_in_cannon,\n    update_boss_fight_camera,\n    update_parallel_tracking_camera,\n    update_fixed_camera,\n    update_8_directions_camera,\n    update_slide_or_0f_camera,\n    update_mario_camera,\n    update_spiral_stairs_camera\n};\n\n// Move these two tables to another include file?\nextern u8 sDanceCutsceneIndexTable[][4];\nextern u8 sZoomOutAreaMasks[];\n\n/**\n * Starts a camera shake triggered by an interaction\n */\nvoid set_camera_shake_from_hit(s16 shake) {\n    switch (shake) {\n        // Makes the camera stop for a bit\n        case SHAKE_ATTACK:\n            gLakituState.focHSpeed = 0;\n            gLakituState.posHSpeed = 0;\n            break;\n\n        case SHAKE_FALL_DAMAGE:\n            set_camera_pitch_shake(0x60, 0x3, 0x8000);\n            set_camera_roll_shake(0x60, 0x3, 0x8000);\n            break;\n\n        case SHAKE_GROUND_POUND:\n            set_camera_pitch_shake(0x60, 0xC, 0x8000);\n            break;\n\n        case SHAKE_SMALL_DAMAGE:\n            if (sMarioCamState->action & (ACT_FLAG_SWIMMING | ACT_FLAG_METAL_WATER)) {\n                set_camera_yaw_shake(0x200, 0x10, 0x1000);\n                set_camera_roll_shake(0x400, 0x20, 0x1000);\n                set_fov_shake(0x100, 0x30, 0x8000);\n            } else {\n                set_camera_yaw_shake(0x80, 0x8, 0x4000);\n                set_camera_roll_shake(0x80, 0x8, 0x4000);\n                set_fov_shake(0x100, 0x30, 0x8000);\n            }\n\n            gLakituState.focHSpeed = 0;\n            gLakituState.posHSpeed = 0;\n            break;\n\n        case SHAKE_MED_DAMAGE:\n            if (sMarioCamState->action & (ACT_FLAG_SWIMMING | ACT_FLAG_METAL_WATER)) {\n                set_camera_yaw_shake(0x400, 0x20, 0x1000);\n                set_camera_roll_shake(0x600, 0x30, 0x1000);\n                set_fov_shake(0x180, 0x40, 0x8000);\n            } else {\n                set_camera_yaw_shake(0x100, 0x10, 0x4000);\n                set_camera_roll_shake(0x100, 0x10, 0x4000);\n                set_fov_shake(0x180, 0x40, 0x8000);\n            }\n\n            gLakituState.focHSpeed = 0;\n            gLakituState.posHSpeed = 0;\n            break;\n\n        case SHAKE_LARGE_DAMAGE:\n            if (sMarioCamState->action & (ACT_FLAG_SWIMMING | ACT_FLAG_METAL_WATER)) {\n                set_camera_yaw_shake(0x600, 0x30, 0x1000);\n                set_camera_roll_shake(0x800, 0x40, 0x1000);\n                set_fov_shake(0x200, 0x50, 0x8000);\n            } else {\n                set_camera_yaw_shake(0x180, 0x20, 0x4000);\n                set_camera_roll_shake(0x200, 0x20, 0x4000);\n                set_fov_shake(0x200, 0x50, 0x8000);\n            }\n\n            gLakituState.focHSpeed = 0;\n            gLakituState.posHSpeed = 0;\n            break;\n\n        case SHAKE_HIT_FROM_BELOW:\n            gLakituState.focHSpeed = 0.07;\n            gLakituState.posHSpeed = 0.07;\n            break;\n\n        case SHAKE_SHOCK:\n            set_camera_pitch_shake(random_float() * 64.f, 0x8, 0x8000);\n            set_camera_yaw_shake(random_float() * 64.f, 0x8, 0x8000);\n            break;\n    }\n}\n\n/**\n * Start a shake from the environment\n */\nvoid set_environmental_camera_shake(s16 shake) {\n    switch (shake) {\n        case SHAKE_ENV_EXPLOSION:\n            set_camera_pitch_shake(0x60, 0x8, 0x4000);\n            break;\n\n        case SHAKE_ENV_BOWSER_THROW_BOUNCE:\n            set_camera_pitch_shake(0xC0, 0x8, 0x4000);\n            break;\n\n        case SHAKE_ENV_BOWSER_JUMP:\n            set_camera_pitch_shake(0x100, 0x8, 0x3000);\n            break;\n\n        case SHAKE_ENV_UNUSED_6:\n            set_camera_roll_shake(0x80, 0x10, 0x3000);\n            break;\n\n        case SHAKE_ENV_UNUSED_7:\n            set_camera_pitch_shake(0x20, 0x8, 0x8000);\n            break;\n\n        case SHAKE_ENV_PYRAMID_EXPLODE:\n            set_camera_pitch_shake(0x40, 0x8, 0x8000);\n            break;\n\n        case SHAKE_ENV_JRB_SHIP_DRAIN:\n            set_camera_pitch_shake(0x20, 0x8, 0x8000);\n            set_camera_roll_shake(0x400, 0x10, 0x100);\n            break;\n\n        case SHAKE_ENV_FALLING_BITS_PLAT:\n            set_camera_pitch_shake(0x40, 0x2, 0x8000);\n            break;\n\n        case SHAKE_ENV_UNUSED_5:\n            set_camera_yaw_shake(-0x200, 0x80, 0x200);\n            break;\n    }\n}\n\n/**\n * Starts a camera shake, but scales the amplitude by the point's distance from the camera\n */\nvoid set_camera_shake_from_point(s16 shake, f32 posX, f32 posY, f32 posZ) {\n    switch (shake) {\n        case SHAKE_POS_BOWLING_BALL:\n            set_pitch_shake_from_point(0x28, 0x8, 0x4000, 2000.f, posX, posY, posZ);\n            break;\n\n        case SHAKE_POS_SMALL:\n            set_pitch_shake_from_point(0x80, 0x8, 0x4000, 4000.f, posX, posY, posZ);\n            set_fov_shake_from_point_preset(SHAKE_FOV_SMALL, posX, posY, posZ);\n            break;\n\n        case SHAKE_POS_MEDIUM:\n            set_pitch_shake_from_point(0xC0, 0x8, 0x4000, 6000.f, posX, posY, posZ);\n            set_fov_shake_from_point_preset(SHAKE_FOV_MEDIUM, posX, posY, posZ);\n            break;\n\n        case SHAKE_POS_LARGE:\n            set_pitch_shake_from_point(0x100, 0x8, 0x3000, 8000.f, posX, posY, posZ);\n            set_fov_shake_from_point_preset(SHAKE_FOV_LARGE, posX, posY, posZ);\n            break;\n    }\n}\n\n/**\n * Start a camera shake from an environmental source, but only shake the camera's pitch.\n */\nvoid unused_set_camera_pitch_shake_env(s16 shake) {\n    switch (shake) {\n        case SHAKE_ENV_EXPLOSION:\n            set_camera_pitch_shake(0x60, 0x8, 0x4000);\n            break;\n\n        case SHAKE_ENV_BOWSER_THROW_BOUNCE:\n            set_camera_pitch_shake(0xC0, 0x8, 0x4000);\n            break;\n\n        case SHAKE_ENV_BOWSER_JUMP:\n            set_camera_pitch_shake(0x100, 0x8, 0x3000);\n            break;\n    }\n}\n\n/**\n * Calculates Mario's distance to the floor, or the water level if it is above the floor. Then:\n * `posOff` is set to the distance multiplied by posMul and bounded to [-posBound, posBound]\n * `focOff` is set to the distance multiplied by focMul and bounded to [-focBound, focBound]\n *\n * Notes:\n *      posMul is always 1.0f, focMul is always 0.9f\n *      both ranges are always 200.f\n *          Since focMul is 0.9, `focOff` is closer to the floor than `posOff`\n *      posOff and focOff are sometimes the same address, which just ignores the pos calculation\n *! Doesn't return anything, but required to match on -O2\n */\nBAD_RETURN(f32) calc_y_to_curr_floor(f32 *posOff, f32 posMul, f32 posBound, f32 *focOff, f32 focMul, f32 focBound) {\n    f32 floorHeight = sMarioGeometry.currFloorHeight;\n    f32 waterHeight;\n    UNUSED u8 filler[4];\n\n    if (!(sMarioCamState->action & ACT_FLAG_METAL_WATER)) {\n        //! @bug this should use sMarioGeometry.waterHeight\n        if (floorHeight < (waterHeight = find_water_level(sMarioCamState->pos[0], sMarioCamState->pos[2]))) {\n            floorHeight = waterHeight;\n        }\n    }\n\n    if (sMarioCamState->action & ACT_FLAG_ON_POLE) {\n        if (sMarioGeometry.currFloorHeight >= gMarioStates[0].usedObj->oPosY && sMarioCamState->pos[1]\n                   < 0.7f * gMarioStates[0].usedObj->hitboxHeight + gMarioStates[0].usedObj->oPosY) {\n            posBound = 1200;\n        }\n    }\n\n    *posOff = (floorHeight - sMarioCamState->pos[1]) * posMul;\n\n    if (*posOff > posBound) {\n        *posOff = posBound;\n    }\n\n    if (*posOff < -posBound) {\n        *posOff = -posBound;\n    }\n\n    *focOff = (floorHeight - sMarioCamState->pos[1]) * focMul;\n\n    if (*focOff > focBound) {\n        *focOff = focBound;\n    }\n\n    if (*focOff < -focBound) {\n        *focOff = -focBound;\n    }\n}\n\nvoid focus_on_mario(Vec3f focus, Vec3f pos, f32 posYOff, f32 focYOff, f32 dist, s16 pitch, s16 yaw) {\n    Vec3f marioPos;\n\n    marioPos[0] = sMarioCamState->pos[0];\n    marioPos[1] = sMarioCamState->pos[1] + posYOff;\n    marioPos[2] = sMarioCamState->pos[2];\n\n    vec3f_set_dist_and_angle(marioPos, pos, dist, pitch + sLakituPitch, yaw);\n\n    focus[0] = sMarioCamState->pos[0];\n    focus[1] = sMarioCamState->pos[1] + focYOff;\n    focus[2] = sMarioCamState->pos[2];\n}\n\nstatic UNUSED void set_pos_to_mario(Vec3f foc, Vec3f pos, f32 yOff, f32 focYOff, f32 dist, s16 pitch, s16 yaw) {\n    Vec3f marioPos;\n    f32 posDist;\n    f32 focDist;\n\n    s16 posPitch;\n    s16 posYaw;\n    s16 focPitch;\n    s16 focYaw;\n\n    vec3f_copy(marioPos, sMarioCamState->pos);\n    marioPos[1] += yOff;\n\n    vec3f_set_dist_and_angle(marioPos, pos, dist, pitch + sLakituPitch, yaw);\n    vec3f_get_dist_and_angle(pos, sMarioCamState->pos, &posDist, &posPitch, &posYaw);\n\n    //! Useless get and set\n    vec3f_get_dist_and_angle(pos, foc, &focDist, &focPitch, &focYaw);\n    vec3f_set_dist_and_angle(pos, foc, focDist, focPitch, focYaw);\n\n    foc[1] = sMarioCamState->pos[1] + focYOff;\n}\n\n/**\n * Set the camera's y coordinate to goalHeight, respecting floors and ceilings in the way\n */\nvoid set_camera_height(struct Camera *c, f32 goalHeight) {\n    struct Surface *surface;\n    f32 marioFloorHeight;\n    f32 marioCeilHeight;\n    f32 camFloorHeight;\n    UNUSED u8 filler[8];\n    UNUSED s16 action = sMarioCamState->action;\n    f32 baseOff = 125.f;\n    f32 camCeilHeight = find_ceil(c->pos[0], gLakituState.goalPos[1] - 50.f, c->pos[2], &surface);\n\n    if (sMarioCamState->action & ACT_FLAG_HANGING) {\n        marioCeilHeight = sMarioGeometry.currCeilHeight;\n        marioFloorHeight = sMarioGeometry.currFloorHeight;\n\n        if (marioFloorHeight < marioCeilHeight - 400.f) {\n            marioFloorHeight = marioCeilHeight - 400.f;\n        }\n\n        goalHeight = marioFloorHeight + (marioCeilHeight - marioFloorHeight) * 0.4f;\n\n        if (sMarioCamState->pos[1] - 400 > goalHeight) {\n            goalHeight = sMarioCamState->pos[1] - 400;\n        }\n\n        approach_camera_height(c, goalHeight, 5.f);\n    } else {\n        camFloorHeight = find_floor(c->pos[0], c->pos[1] + 100.f, c->pos[2], &surface) + baseOff;\n        marioFloorHeight = baseOff + sMarioGeometry.currFloorHeight;\n\n        if (camFloorHeight < marioFloorHeight) {\n            camFloorHeight = marioFloorHeight;\n        }\n        if (goalHeight < camFloorHeight) {\n            goalHeight = camFloorHeight;\n            c->pos[1] = goalHeight;\n        }\n        // Warp camera to goalHeight if further than 1000 and Mario is stuck in the ground\n        if (sMarioCamState->action == ACT_BUTT_STUCK_IN_GROUND ||\n            sMarioCamState->action == ACT_HEAD_STUCK_IN_GROUND ||\n            sMarioCamState->action == ACT_FEET_STUCK_IN_GROUND) {\n            if (ABS(c->pos[1] - goalHeight) > 1000.f) {\n                c->pos[1] = goalHeight;\n            }\n        }\n        approach_camera_height(c, goalHeight, 20.f);\n        if (camCeilHeight != CELL_HEIGHT_LIMIT) {\n            camCeilHeight -= baseOff;\n            if ((c->pos[1] > camCeilHeight && sMarioGeometry.currFloorHeight + baseOff < camCeilHeight)\n                || (sMarioGeometry.currCeilHeight != CELL_HEIGHT_LIMIT\n                    && sMarioGeometry.currCeilHeight > camCeilHeight && c->pos[1] > camCeilHeight)) {\n                c->pos[1] = camCeilHeight;\n            }\n        }\n    }\n}\n\n/**\n * Pitch the camera down when the camera is facing down a slope\n */\ns16 look_down_slopes(s16 camYaw) {\n    struct Surface *floor;\n    f32 floorDY;\n    // Default pitch\n    s16 pitch = 0x05B0;\n    // x and z offsets towards the camera\n    f32 xOff = sMarioCamState->pos[0] + sins(camYaw) * 40.f;\n    f32 zOff = sMarioCamState->pos[2] + coss(camYaw) * 40.f;\n\n    floorDY = find_floor(xOff, sMarioCamState->pos[1], zOff, &floor) - sMarioCamState->pos[1];\n\n    if (floor != NULL) {\n        if (floor->type != SURFACE_WALL_MISC && floorDY > 0) {\n            if (floor->normal.z == 0.f && floorDY < 100.f) {\n                pitch = 0x05B0;\n            } else {\n                // Add the slope's angle of declination to the pitch\n                pitch += atan2s(40.f, floorDY);\n            }\n        }\n    }\n\n    return pitch;\n}\n\n/**\n * Look ahead to the left or right in the direction the player is facing\n * The calculation for pan[0] could be simplified to:\n *      yaw = -yaw;\n *      pan[0] = sins(sMarioCamState->faceAngle[1] + yaw) * sins(0xC00) * dist;\n * Perhaps, early in development, the pan used to be calculated for both the x and z directions\n *\n * Since this function only affects the camera's focus, Mario's movement direction isn't affected.\n */\nvoid pan_ahead_of_player(struct Camera *c) {\n    f32 dist;\n    s16 pitch;\n    s16 yaw;\n    Vec3f pan = { 0, 0, 0 };\n\n    // Get distance and angle from camera to Mario.\n    vec3f_get_dist_and_angle(c->pos, sMarioCamState->pos, &dist, &pitch, &yaw);\n\n    // The camera will pan ahead up to about 30% of the camera's distance to Mario.\n    pan[2] = sins(0xC00) * dist;\n\n    rotate_in_xz(pan, pan, sMarioCamState->faceAngle[1]);\n    // rotate in the opposite direction\n    yaw = -yaw;\n    rotate_in_xz(pan, pan, yaw);\n    // Only pan left or right\n    pan[2] = 0.f;\n\n    // If Mario is long jumping, or on a flag pole (but not at the top), then pan in the opposite direction\n    if (sMarioCamState->action == ACT_LONG_JUMP ||\n       (sMarioCamState->action != ACT_TOP_OF_POLE && (sMarioCamState->action & ACT_FLAG_ON_POLE))) {\n        pan[0] = -pan[0];\n    }\n\n    // Slowly make the actual pan, sPanDistance, approach the calculated pan\n    // If Mario is sleeping, then don't pan\n    if (sStatusFlags & CAM_FLAG_SLEEPING) {\n        approach_f32_asymptotic_bool(&sPanDistance, 0.f, 0.025f);\n    } else {\n        approach_f32_asymptotic_bool(&sPanDistance, pan[0], 0.025f);\n    }\n\n    // Now apply the pan. It's a dir vector to the left or right, rotated by the camera's yaw to Mario\n    pan[0] = sPanDistance;\n    yaw = -yaw;\n    rotate_in_xz(pan, pan, yaw);\n    vec3f_add(c->focus, pan);\n}\n\ns16 find_in_bounds_yaw_wdw_bob_thi(Vec3f pos, Vec3f origin, s16 yaw) {\n    switch (gCurrLevelArea) {\n        case AREA_WDW_MAIN:\n            yaw = clamp_positions_and_find_yaw(pos, origin, 4508.f, -3739.f, 4508.f, -3739.f);\n            break;\n        case AREA_BOB:\n            yaw = clamp_positions_and_find_yaw(pos, origin, 8000.f, -8000.f, 7050.f, -8000.f);\n            break;\n        case AREA_THI_HUGE:\n            yaw = clamp_positions_and_find_yaw(pos, origin, 8192.f, -8192.f, 8192.f, -8192.f);\n            break;\n        case AREA_THI_TINY:\n            yaw = clamp_positions_and_find_yaw(pos, origin, 2458.f, -2458.f, 2458.f, -2458.f);\n            break;\n    }\n    return yaw;\n}\n\n/**\n * Rotates the camera around the area's center point.\n */\ns32 update_radial_camera(struct Camera *c, Vec3f focus, Vec3f pos) {\n    f32 cenDistX = sMarioCamState->pos[0] - c->areaCenX;\n    f32 cenDistZ = sMarioCamState->pos[2] - c->areaCenZ;\n    s16 camYaw = atan2s(cenDistZ, cenDistX) + sModeOffsetYaw;\n    s16 pitch = look_down_slopes(camYaw);\n    UNUSED u8 filler1[4];\n    f32 posY;\n    f32 focusY;\n    UNUSED u8 filler2[8];\n    f32 yOff = 125.f;\n    f32 baseDist = 1000.f;\n\n    sAreaYaw = camYaw - sModeOffsetYaw;\n    calc_y_to_curr_floor(&posY, 1.f, 200.f, &focusY, 0.9f, 200.f);\n    focus_on_mario(focus, pos, posY + yOff, focusY + yOff, sLakituDist + baseDist, pitch, camYaw);\n    camYaw = find_in_bounds_yaw_wdw_bob_thi(pos, focus, camYaw);\n\n    return camYaw;\n}\n\n/**\n * Update the camera during 8 directional mode\n */\ns32 update_8_directions_camera(struct Camera *c, Vec3f focus, Vec3f pos) {\n    UNUSED f32 cenDistX = sMarioCamState->pos[0] - c->areaCenX;\n    UNUSED f32 cenDistZ = sMarioCamState->pos[2] - c->areaCenZ;\n    s16 camYaw = s8DirModeBaseYaw + s8DirModeYawOffset;\n    s16 pitch = look_down_slopes(camYaw);\n    f32 posY;\n    f32 focusY;\n    UNUSED u8 filler[12];\n    f32 yOff = 125.f;\n    f32 baseDist = 1000.f;\n\n    sAreaYaw = camYaw;\n    calc_y_to_curr_floor(&posY, 1.f, 200.f, &focusY, 0.9f, 200.f);\n    focus_on_mario(focus, pos, posY + yOff, focusY + yOff, sLakituDist + baseDist, pitch, camYaw);\n    pan_ahead_of_player(c);\n    if (gCurrLevelArea == AREA_DDD_SUB) {\n        camYaw = clamp_positions_and_find_yaw(pos, focus, 6839.f, 995.f, 5994.f, -3945.f);\n    }\n\n    return camYaw;\n}\n\n/**\n * Moves the camera for the radial and outward radial camera modes.\n *\n * If sModeOffsetYaw is 0, the camera points directly at the area center point.\n */\nvoid radial_camera_move(struct Camera *c) {\n    s16 maxAreaYaw = DEGREES(60);\n    s16 minAreaYaw = DEGREES(-60);\n    s16 rotateSpeed = 0x1000;\n    s16 avoidYaw;\n    s32 avoidStatus;\n    UNUSED s16 unused1 = 0;\n    UNUSED s32 unused2 = 0;\n    f32 areaDistX = sMarioCamState->pos[0] - c->areaCenX;\n    f32 areaDistZ = sMarioCamState->pos[2] - c->areaCenZ;\n    UNUSED u8 filler[4];\n\n    // How much the camera's yaw changed\n    s16 yawOffset = calculate_yaw(sMarioCamState->pos, c->pos) - atan2s(areaDistZ, areaDistX);\n\n    if (yawOffset > maxAreaYaw) {\n        yawOffset = maxAreaYaw;\n    }\n    if (yawOffset < minAreaYaw) {\n        yawOffset = minAreaYaw;\n    }\n\n    // Check if Mario stepped on a surface that rotates the camera. For example, when Mario enters the\n    // gate in BoB, the camera turns right to face up the hill path\n    if (!(gCameraMovementFlags & CAM_MOVE_ROTATE)) {\n        if (sMarioGeometry.currFloorType == SURFACE_CAMERA_MIDDLE\n            && sMarioGeometry.prevFloorType != SURFACE_CAMERA_MIDDLE) {\n            gCameraMovementFlags |= (CAM_MOVE_RETURN_TO_MIDDLE | CAM_MOVE_ENTERED_ROTATE_SURFACE);\n        }\n        if (sMarioGeometry.currFloorType == SURFACE_CAMERA_ROTATE_RIGHT\n            && sMarioGeometry.prevFloorType != SURFACE_CAMERA_ROTATE_RIGHT) {\n            gCameraMovementFlags |= (CAM_MOVE_ROTATE_RIGHT | CAM_MOVE_ENTERED_ROTATE_SURFACE);\n        }\n        if (sMarioGeometry.currFloorType == SURFACE_CAMERA_ROTATE_LEFT\n            && sMarioGeometry.prevFloorType != SURFACE_CAMERA_ROTATE_LEFT) {\n            gCameraMovementFlags |= (CAM_MOVE_ROTATE_LEFT | CAM_MOVE_ENTERED_ROTATE_SURFACE);\n        }\n    }\n\n    if (gCameraMovementFlags & CAM_MOVE_ENTERED_ROTATE_SURFACE) {\n        rotateSpeed = 0x200;\n    }\n\n    if (c->mode == CAMERA_MODE_OUTWARD_RADIAL) {\n        areaDistX = -areaDistX;\n        areaDistZ = -areaDistZ;\n    }\n\n    // Avoid obstructing walls\n    avoidStatus = rotate_camera_around_walls(c, c->pos, &avoidYaw, 0x400);\n    if (avoidStatus == 3) {\n        if (avoidYaw - atan2s(areaDistZ, areaDistX) + DEGREES(90) < 0) {\n            avoidYaw += DEGREES(180);\n        }\n\n        // We want to change sModeOffsetYaw so that the player is no longer obstructed by the wall.\n        // So, we make avoidYaw relative to the yaw around the area center\n        avoidYaw -= atan2s(areaDistZ, areaDistX);\n\n        // Bound avoid yaw to radial mode constraints\n        if (avoidYaw > DEGREES(105)) {\n            avoidYaw = DEGREES(105);\n        }\n        if (avoidYaw < DEGREES(-105)) {\n            avoidYaw = DEGREES(-105);\n        }\n    }\n\n    if (gCameraMovementFlags & CAM_MOVE_RETURN_TO_MIDDLE) {\n        if (camera_approach_s16_symmetric_bool(&sModeOffsetYaw, 0, rotateSpeed) == 0) {\n            gCameraMovementFlags &= ~CAM_MOVE_RETURN_TO_MIDDLE;\n        }\n    } else {\n        // Prevent the player from rotating into obstructing walls\n        if ((gCameraMovementFlags & CAM_MOVE_ROTATE_RIGHT) && avoidStatus == 3\n            && avoidYaw + 0x10 < sModeOffsetYaw) {\n            sModeOffsetYaw = avoidYaw;\n            gCameraMovementFlags &= ~(CAM_MOVE_ROTATE_RIGHT | CAM_MOVE_ENTERED_ROTATE_SURFACE);\n        }\n        if ((gCameraMovementFlags & CAM_MOVE_ROTATE_LEFT) && avoidStatus == 3\n            && avoidYaw - 0x10 > sModeOffsetYaw) {\n            sModeOffsetYaw = avoidYaw;\n            gCameraMovementFlags &= ~(CAM_MOVE_ROTATE_LEFT | CAM_MOVE_ENTERED_ROTATE_SURFACE);\n        }\n\n        // If it's the first time rotating, just rotate to +-60 degrees\n        if (!(s2ndRotateFlags & CAM_MOVE_ROTATE_RIGHT) && (gCameraMovementFlags & CAM_MOVE_ROTATE_RIGHT)\n            && camera_approach_s16_symmetric_bool(&sModeOffsetYaw, maxAreaYaw, rotateSpeed) == 0) {\n            gCameraMovementFlags &= ~(CAM_MOVE_ROTATE_RIGHT | CAM_MOVE_ENTERED_ROTATE_SURFACE);\n        }\n        if (!(s2ndRotateFlags & CAM_MOVE_ROTATE_LEFT) && (gCameraMovementFlags & CAM_MOVE_ROTATE_LEFT)\n            && camera_approach_s16_symmetric_bool(&sModeOffsetYaw, minAreaYaw, rotateSpeed) == 0) {\n            gCameraMovementFlags &= ~(CAM_MOVE_ROTATE_LEFT | CAM_MOVE_ENTERED_ROTATE_SURFACE);\n        }\n\n        // If it's the second time rotating, rotate all the way to +-105 degrees.\n        if ((s2ndRotateFlags & CAM_MOVE_ROTATE_RIGHT) && (gCameraMovementFlags & CAM_MOVE_ROTATE_RIGHT)\n            && camera_approach_s16_symmetric_bool(&sModeOffsetYaw, DEGREES(105), rotateSpeed) == 0) {\n            gCameraMovementFlags &= ~(CAM_MOVE_ROTATE_RIGHT | CAM_MOVE_ENTERED_ROTATE_SURFACE);\n            s2ndRotateFlags &= ~CAM_MOVE_ROTATE_RIGHT;\n        }\n        if ((s2ndRotateFlags & CAM_MOVE_ROTATE_LEFT) && (gCameraMovementFlags & CAM_MOVE_ROTATE_LEFT)\n            && camera_approach_s16_symmetric_bool(&sModeOffsetYaw, DEGREES(-105), rotateSpeed) == 0) {\n            gCameraMovementFlags &= ~(CAM_MOVE_ROTATE_LEFT | CAM_MOVE_ENTERED_ROTATE_SURFACE);\n            s2ndRotateFlags &= ~CAM_MOVE_ROTATE_LEFT;\n        }\n    }\n    if (!(gCameraMovementFlags & CAM_MOVE_ROTATE)) {\n        // If not rotating, rotate away from walls obscuring Mario from view\n        if (avoidStatus == 3) {\n            approach_s16_asymptotic_bool(&sModeOffsetYaw, avoidYaw, 10);\n        } else {\n            if (c->mode == CAMERA_MODE_RADIAL) {\n                // sModeOffsetYaw only updates when Mario is moving\n                rotateSpeed = gMarioStates[0].forwardVel / 32.f * 128.f;\n                camera_approach_s16_symmetric_bool(&sModeOffsetYaw, yawOffset, rotateSpeed);\n            }\n            if (c->mode == CAMERA_MODE_OUTWARD_RADIAL) {\n                sModeOffsetYaw = offset_yaw_outward_radial(c, atan2s(areaDistZ, areaDistX));\n            }\n        }\n    }\n\n    // Bound sModeOffsetYaw within (-120, 120) degrees\n    if (sModeOffsetYaw > 0x5554) {\n        sModeOffsetYaw = 0x5554;\n    }\n    if (sModeOffsetYaw < -0x5554) {\n        sModeOffsetYaw = -0x5554;\n    }\n}\n\n/**\n * Moves Lakitu from zoomed in to zoomed out and vice versa.\n * When C-Down mode is not active, sLakituDist and sLakituPitch decrease to 0.\n */\nvoid lakitu_zoom(f32 rangeDist, s16 rangePitch) {\n    if (sLakituDist < 0) {\n        if ((sLakituDist += 30) > 0) {\n            sLakituDist = 0;\n        }\n    } else if (rangeDist < sLakituDist) {\n        if ((sLakituDist -= 30) < rangeDist) {\n            sLakituDist = rangeDist;\n        }\n    } else if (gCameraMovementFlags & CAM_MOVE_ZOOMED_OUT) {\n        if ((sLakituDist += 30) > rangeDist) {\n            sLakituDist = rangeDist;\n        }\n    } else {\n        if ((sLakituDist -= 30) < 0) {\n            sLakituDist = 0;\n        }\n    }\n\n    if (gCurrLevelArea == AREA_SSL_PYRAMID && gCamera->mode == CAMERA_MODE_OUTWARD_RADIAL) {\n        rangePitch /= 2;\n    }\n\n    if (gCameraMovementFlags & CAM_MOVE_ZOOMED_OUT) {\n        if ((sLakituPitch += rangePitch / 13) > rangePitch) {\n            sLakituPitch = rangePitch;\n        }\n    } else {\n        if ((sLakituPitch -= rangePitch / 13) < 0) {\n            sLakituPitch = 0;\n        }\n    }\n}\n\nvoid radial_camera_input_default(struct Camera *c) {\n    radial_camera_input(c, 0.f);\n}\n\n/**\n * Makes Lakitu cam's yaw match the angle turned towards in C-Up mode, and makes Lakitu slowly fly back\n * to the distance he was at before C-Up\n */\nvoid update_yaw_and_dist_from_c_up(UNUSED struct Camera *c) {\n    f32 dist = 1000.f;\n\n    sModeOffsetYaw = sModeInfo.transitionStart.yaw - sAreaYaw;\n    sLakituDist = sModeInfo.transitionStart.dist - dist;\n    // No longer in C-Up\n    gCameraMovementFlags &= ~CAM_MOVING_INTO_MODE;\n}\n\n/**\n * Handles input and updates for the radial camera mode\n */\nvoid mode_radial_camera(struct Camera *c) {\n    Vec3f pos;\n    UNUSED u8 filler1[8];\n    s16 oldAreaYaw = sAreaYaw;\n    UNUSED u8 filler2[4];\n\n    if (gCameraMovementFlags & CAM_MOVING_INTO_MODE) {\n        update_yaw_and_dist_from_c_up(c);\n    }\n\n    radial_camera_input_default(c);\n    radial_camera_move(c);\n\n    if (c->mode == CAMERA_MODE_RADIAL) {\n        lakitu_zoom(400.f, 0x900);\n    }\n    c->nextYaw = update_radial_camera(c, c->focus, pos);\n    c->pos[0] = pos[0];\n    c->pos[2] = pos[2];\n    sAreaYawChange = sAreaYaw - oldAreaYaw;\n    if (sMarioCamState->action == ACT_RIDING_HOOT) {\n        pos[1] += 500.f;\n    }\n    set_camera_height(c, pos[1]);\n    pan_ahead_of_player(c);\n}\n\n/**\n * A mode that only has 8 camera angles, 45 degrees apart\n */\nvoid mode_8_directions_camera(struct Camera *c) {\n    Vec3f pos;\n    UNUSED u8 filler[8];\n    s16 oldAreaYaw = sAreaYaw;\n\n    radial_camera_input(c, 0.f);\n\n    if (gPlayer1Controller->buttonPressed & R_CBUTTONS) {\n        s8DirModeYawOffset += DEGREES(45);\n        play_sound_cbutton_side();\n    }\n    if (gPlayer1Controller->buttonPressed & L_CBUTTONS) {\n        s8DirModeYawOffset -= DEGREES(45);\n        play_sound_cbutton_side();\n    }\n\n    lakitu_zoom(400.f, 0x900);\n    c->nextYaw = update_8_directions_camera(c, c->focus, pos);\n    c->pos[0] = pos[0];\n    c->pos[2] = pos[2];\n    sAreaYawChange = sAreaYaw - oldAreaYaw;\n    set_camera_height(c, pos[1]);\n}\n\n/**\n * Updates the camera in outward radial mode.\n * sModeOffsetYaw is calculated in radial_camera_move, which calls offset_yaw_outward_radial\n */\ns32 update_outward_radial_camera(struct Camera *c, Vec3f focus, Vec3f pos) {\n    f32 xDistFocToMario = sMarioCamState->pos[0] - c->areaCenX;\n    f32 zDistFocToMario = sMarioCamState->pos[2] - c->areaCenZ;\n    s16 camYaw = atan2s(zDistFocToMario, xDistFocToMario) + sModeOffsetYaw + DEGREES(180);\n    s16 pitch = look_down_slopes(camYaw);\n    f32 baseDist = 1000.f;\n    // A base offset of 125.f is ~= Mario's eye height\n    f32 yOff = 125.f;\n    f32 posY;\n    f32 focusY;\n\n    sAreaYaw = camYaw - sModeOffsetYaw - DEGREES(180);\n    calc_y_to_curr_floor(&posY, 1.f, 200.f, &focusY, 0.9f, 200.f);\n    focus_on_mario(focus, pos, posY + yOff, focusY + yOff, sLakituDist + baseDist, pitch, camYaw);\n\n    return camYaw;\n}\n\n/**\n * Input and updates for the outward radial mode.\n */\nvoid mode_outward_radial_camera(struct Camera *c) {\n    Vec3f pos;\n    s16 oldAreaYaw = sAreaYaw;\n\n    if (gCameraMovementFlags & CAM_MOVING_INTO_MODE) {\n        update_yaw_and_dist_from_c_up(c);\n    }\n    radial_camera_input_default(c);\n    radial_camera_move(c);\n    lakitu_zoom(400.f, 0x900);\n    c->nextYaw = update_outward_radial_camera(c, c->focus, pos);\n    c->pos[0] = pos[0];\n    c->pos[2] = pos[2];\n    sAreaYawChange = sAreaYaw - oldAreaYaw;\n    if (sMarioCamState->action == ACT_RIDING_HOOT) {\n        pos[1] += 500.f;\n    }\n    set_camera_height(c, pos[1]);\n    pan_ahead_of_player(c);\n}\n\n/**\n * Move the camera in parallel tracking mode\n *\n * Uses the line between the next two points in sParTrackPath\n * The camera can move forward/back and side to side, but it will face perpendicular to that line\n *\n * Although, annoyingly, it's not truly parallel, the function returns the yaw from the camera to Mario,\n * so Mario will run slightly towards the camera.\n */\ns32 update_parallel_tracking_camera(struct Camera *c, Vec3f focus, Vec3f pos) {\n    Vec3f path[2];\n    Vec3f parMidPoint;\n    Vec3f marioOffset;\n    Vec3f camOffset;\n    /// Adjusts the focus to look where Mario is facing. Unused since marioOffset is copied to focus\n    Vec3f focOffset;\n    s16 pathPitch;\n    s16 pathYaw;\n    UNUSED u8 filler[4];\n    f32 distThresh;\n    f32 zoom;\n    f32 camParDist;\n    UNUSED u8 filler2[8];\n    f32 pathLength;\n    UNUSED u8 filler3[8];\n    UNUSED f32 unusedScale = 0.5f;\n    f32 parScale = 0.5f;\n    f32 marioFloorDist;\n    Vec3f marioPos;\n    UNUSED u8 filler4[12];\n    UNUSED Vec3f unused;\n    Vec3s pathAngle;\n    // Variables for changing to the next/prev path in the list\n    Vec3f oldPos;\n    Vec3f prevPathPos;\n    Vec3f nextPathPos;\n    f32 distToNext;\n    f32 distToPrev;\n    s16 prevPitch;\n    s16 nextPitch;\n    s16 prevYaw;\n    s16 nextYaw;\n\n    unused[0] = 0.f;\n    unused[1] = 0.f;\n    unused[2] = 0.f;\n\n    // Store camera pos, for changing between paths\n    vec3f_copy(oldPos, pos);\n\n    vec3f_copy(path[0], sParTrackPath[sParTrackIndex].pos);\n    vec3f_copy(path[1], sParTrackPath[sParTrackIndex + 1].pos);\n\n    distThresh = sParTrackPath[sParTrackIndex].distThresh;\n    zoom = sParTrackPath[sParTrackIndex].zoom;\n    calc_y_to_curr_floor(&marioFloorDist, 1.f, 200.f, &marioFloorDist, 0.9f, 200.f);\n\n    marioPos[0] = sMarioCamState->pos[0];\n    // Mario's y pos + ~Mario's height + Mario's height above the floor\n    marioPos[1] = sMarioCamState->pos[1] + 150.f + marioFloorDist;\n    marioPos[2] = sMarioCamState->pos[2];\n\n    // Calculate middle of the path (parScale is 0.5f)\n    parMidPoint[0] = path[0][0] + (path[1][0] - path[0][0]) * parScale;\n    parMidPoint[1] = path[0][1] + (path[1][1] - path[0][1]) * parScale;\n    parMidPoint[2] = path[0][2] + (path[1][2] - path[0][2]) * parScale;\n\n    // Get direction of path\n    vec3f_get_dist_and_angle(path[0], path[1], &pathLength, &pathPitch, &pathYaw);\n\n    marioOffset[0] = marioPos[0] - parMidPoint[0];\n    marioOffset[1] = marioPos[1] - parMidPoint[1];\n    marioOffset[2] = marioPos[2] - parMidPoint[2];\n\n    // Make marioOffset point from the midpoint -> the start of the path\n    // Rotating by -yaw then -pitch moves the hor dist from the midpoint into marioOffset's z coordinate\n    // marioOffset[0] = the (perpendicular) horizontal distance from the path\n    // marioOffset[1] = the vertical distance from the path\n    // marioOffset[2] = the (parallel) horizontal distance from the path's midpoint\n    pathYaw = -pathYaw;\n    rotate_in_xz(marioOffset, marioOffset, pathYaw);\n    pathYaw = -pathYaw;\n    pathPitch = -pathPitch;\n    rotate_in_yz(marioOffset, marioOffset, pathPitch);\n    pathPitch = -pathPitch;\n    vec3f_copy(focOffset, marioOffset);\n\n    // OK\n    focOffset[0] = -focOffset[0] * 0.f;\n    focOffset[1] = focOffset[1] * 0.f;\n\n    // Repeat above calcs with camOffset\n    camOffset[0] = pos[0] - parMidPoint[0];\n    camOffset[1] = pos[1] - parMidPoint[1];\n    camOffset[2] = pos[2] - parMidPoint[2];\n    pathYaw = -pathYaw;\n    rotate_in_xz(camOffset, camOffset, pathYaw);\n    pathYaw = -pathYaw;\n    pathPitch = -pathPitch;\n    rotate_in_yz(camOffset, camOffset, pathPitch);\n    pathPitch = -pathPitch;\n\n    // If Mario is distThresh units away from the camera along the path, move the camera\n    //! When distThresh != 0, it causes Mario to move slightly towards the camera when running sideways\n    //! Set each ParallelTrackingPoint's distThresh to 0 to make Mario truly run parallel to the path\n    if (marioOffset[2] > camOffset[2]) {\n        if (marioOffset[2] - camOffset[2] > distThresh) {\n            camOffset[2] = marioOffset[2] - distThresh;\n        }\n    } else {\n        if (marioOffset[2] - camOffset[2] < -distThresh) {\n            camOffset[2] = marioOffset[2] + distThresh;\n        }\n    }\n\n    // If zoom != 0.0, the camera will move zoom% closer to Mario\n    marioOffset[0] = -marioOffset[0] * zoom;\n    marioOffset[1] = marioOffset[1] * zoom;\n    marioOffset[2] = camOffset[2];\n\n    //! Does nothing because focOffset[0] is always 0\n    focOffset[0] *= 0.3f;\n    //! Does nothing because focOffset[1] is always 0\n    focOffset[1] *= 0.3f;\n\n    pathAngle[0] = pathPitch;\n    pathAngle[1] = pathYaw; //! No effect\n\n    // make marioOffset[2] == distance from the start of the path\n    marioOffset[2] = pathLength / 2 - marioOffset[2];\n\n    pathAngle[1] = pathYaw + DEGREES(180);\n    pathAngle[2] = 0;\n\n    // Rotate the offset in the direction of the path again\n    offset_rotated(pos, path[0], marioOffset, pathAngle);\n    vec3f_get_dist_and_angle(path[0], c->pos, &camParDist, &pathPitch, &pathYaw);\n\n    // Adjust the focus. Does nothing, focus is set to Mario at the end\n    focOffset[2] = pathLength / 2 - focOffset[2];\n    offset_rotated(c->focus, path[0], focOffset, pathAngle);\n\n    // Changing paths, update the stored position offset\n    if (sStatusFlags & CAM_FLAG_CHANGED_PARTRACK_INDEX) {\n        sStatusFlags &= ~CAM_FLAG_CHANGED_PARTRACK_INDEX;\n        sParTrackTransOff.pos[0] = oldPos[0] - c->pos[0];\n        sParTrackTransOff.pos[1] = oldPos[1] - c->pos[1];\n        sParTrackTransOff.pos[2] = oldPos[2] - c->pos[2];\n    }\n    // Slowly transition to the next path\n    approach_f32_asymptotic_bool(&sParTrackTransOff.pos[0], 0.f, 0.025f);\n    approach_f32_asymptotic_bool(&sParTrackTransOff.pos[1], 0.f, 0.025f);\n    approach_f32_asymptotic_bool(&sParTrackTransOff.pos[2], 0.f, 0.025f);\n    vec3f_add(c->pos, sParTrackTransOff.pos);\n\n    // Check if the camera should go to the next path\n    if (sParTrackPath[sParTrackIndex + 1].startOfPath != 0) {\n        // get Mario's distance to the next path\n        calculate_angles(sParTrackPath[sParTrackIndex + 1].pos, sParTrackPath[sParTrackIndex + 2].pos, &nextPitch, &nextYaw);\n        vec3f_set_dist_and_angle(sParTrackPath[sParTrackIndex + 1].pos, nextPathPos, 400.f, nextPitch, nextYaw);\n        distToPrev = calc_abs_dist(marioPos, nextPathPos);\n\n        // get Mario's distance to the previous path\n        calculate_angles(sParTrackPath[sParTrackIndex + 1].pos, sParTrackPath[sParTrackIndex].pos, &prevPitch, &prevYaw);\n        vec3f_set_dist_and_angle(sParTrackPath[sParTrackIndex + 1].pos, prevPathPos, 400.f, prevPitch, prevYaw);\n        distToNext = calc_abs_dist(marioPos, prevPathPos);\n        if (distToPrev < distToNext) {\n            sParTrackIndex++;\n            sStatusFlags |= CAM_FLAG_CHANGED_PARTRACK_INDEX;\n        }\n    }\n\n    // Check if the camera should go to the previous path\n    if (sParTrackIndex != 0) {\n        // get Mario's distance to the next path\n        calculate_angles((*(sParTrackPath + sParTrackIndex)).pos, (*(sParTrackPath + sParTrackIndex + 1)).pos, &nextPitch, &nextYaw);\n        vec3f_set_dist_and_angle(sParTrackPath[sParTrackIndex].pos, nextPathPos, 700.f, nextPitch, nextYaw);\n        distToPrev = calc_abs_dist(marioPos, nextPathPos);\n\n        // get Mario's distance to the previous path\n        calculate_angles((*(sParTrackPath + sParTrackIndex)).pos, (*(sParTrackPath + sParTrackIndex - 1)).pos, &prevPitch, &prevYaw);\n        vec3f_set_dist_and_angle(sParTrackPath[sParTrackIndex].pos, prevPathPos, 700.f, prevPitch, prevYaw);\n        distToNext = calc_abs_dist(marioPos, prevPathPos);\n        if (distToPrev > distToNext) {\n            sParTrackIndex--;\n            sStatusFlags |= CAM_FLAG_CHANGED_PARTRACK_INDEX;\n        }\n    }\n\n    // Update the camera focus and return the camera's yaw\n    vec3f_copy(focus, marioPos);\n    vec3f_get_dist_and_angle(focus, pos, &camParDist, &pathPitch, &pathYaw);\n    return pathYaw;\n}\n\n/**\n * Updates the camera during fixed mode.\n */\ns32 update_fixed_camera(struct Camera *c, Vec3f focus, UNUSED Vec3f pos) {\n    f32 focusFloorOff;\n    f32 goalHeight;\n    f32 ceilHeight;\n    f32 heightOffset;\n    f32 distCamToFocus;\n    UNUSED u8 filler2[8];\n    f32 scaleToMario = 0.5f;\n    s16 pitch;\n    s16 yaw;\n    Vec3s faceAngle;\n    struct Surface *ceiling;\n    Vec3f basePos;\n    UNUSED u8 filler[12];\n\n    play_camera_buzz_if_c_sideways();\n\n    // Don't move closer to Mario in these areas\n    switch (gCurrLevelArea) {\n        case AREA_RR:\n            scaleToMario = 0.f;\n            heightOffset = 0.f;\n            break;\n\n        case AREA_CASTLE_LOBBY:\n            scaleToMario = 0.3f;\n            heightOffset = 0.f;\n            break;\n\n        case AREA_BBH:\n            scaleToMario = 0.f;\n            heightOffset = 0.f;\n            break;\n    }\n\n    handle_c_button_movement(c);\n    play_camera_buzz_if_cdown();\n\n    calc_y_to_curr_floor(&focusFloorOff, 1.f, 200.f, &focusFloorOff, 0.9f, 200.f);\n    vec3f_copy(focus, sMarioCamState->pos);\n    focus[1] += focusFloorOff + 125.f;\n    vec3f_get_dist_and_angle(focus, c->pos, &distCamToFocus, &faceAngle[0], &faceAngle[1]);\n    faceAngle[2] = 0;\n\n    vec3f_copy(basePos, sFixedModeBasePosition);\n    vec3f_add(basePos, sCastleEntranceOffset);\n\n    if (sMarioGeometry.currFloorType != SURFACE_DEATH_PLANE\n        && sMarioGeometry.currFloorHeight != FLOOR_LOWER_LIMIT) {\n        goalHeight = sMarioGeometry.currFloorHeight + basePos[1] + heightOffset;\n    } else {\n        goalHeight = gLakituState.goalPos[1];\n    }\n\n    if (300 > distCamToFocus) {\n        goalHeight += 300 - distCamToFocus;\n    }\n\n    ceilHeight = find_ceil(c->pos[0], goalHeight - 100.f, c->pos[2], &ceiling);\n    if (ceilHeight != CELL_HEIGHT_LIMIT) {\n        if (goalHeight > (ceilHeight -= 125.f)) {\n            goalHeight = ceilHeight;\n        }\n    }\n\n    if (sStatusFlags & CAM_FLAG_SMOOTH_MOVEMENT) {\n        camera_approach_f32_symmetric_bool(&c->pos[1], goalHeight, 15.f);\n    } else {\n        if (goalHeight < sMarioCamState->pos[1] - 500.f) {\n            goalHeight = sMarioCamState->pos[1] - 500.f;\n        }\n        c->pos[1] = goalHeight;\n    }\n\n    c->pos[0] = basePos[0] + (sMarioCamState->pos[0] - basePos[0]) * scaleToMario;\n    c->pos[2] = basePos[2] + (sMarioCamState->pos[2] - basePos[2]) * scaleToMario;\n\n    if (scaleToMario != 0.f) {\n        vec3f_get_dist_and_angle(c->focus, c->pos, &distCamToFocus, &pitch, &yaw);\n        if (distCamToFocus > 1000.f) {\n            distCamToFocus = 1000.f;\n            vec3f_set_dist_and_angle(c->focus, c->pos, distCamToFocus, pitch, yaw);\n        }\n    }\n\n    return faceAngle[1];\n}\n\n/**\n * Updates the camera during a boss fight\n */\ns32 update_boss_fight_camera(struct Camera *c, Vec3f focus, Vec3f pos) {\n    struct Object *o;\n    UNUSED u8 filler2[12];\n    f32 focusDistance;\n    UNUSED u8 filler3[4];\n    // Floor normal values\n    f32 nx;\n    f32 ny;\n    f32 nz;\n    /// Floor originOffset\n    f32 oo;\n    UNUSED u8 filler4[4];\n    UNUSED s16 unused;\n    s16 yaw;\n    s16 heldState;\n    struct Surface *floor;\n    UNUSED u8 filler[20];\n    Vec3f secondFocus;\n    Vec3f holdFocOffset = { 0.f, -150.f, -125.f };\n\n    handle_c_button_movement(c);\n\n    // Start camera shakes if bowser jumps or gets thrown.\n    if (sMarioCamState->cameraEvent == CAM_EVENT_BOWSER_JUMP) {\n        set_environmental_camera_shake(SHAKE_ENV_BOWSER_JUMP);\n        sMarioCamState->cameraEvent = 0;\n    }\n    if (sMarioCamState->cameraEvent == CAM_EVENT_BOWSER_THROW_BOUNCE) {\n        set_environmental_camera_shake(SHAKE_ENV_BOWSER_THROW_BOUNCE);\n        sMarioCamState->cameraEvent = 0;\n    }\n\n    yaw = sModeOffsetYaw + DEGREES(45);\n    // Get boss's position and whether Mario is holding it.\n    if ((o = gSecondCameraFocus) != NULL) {\n        object_pos_to_vec3f(secondFocus, o);\n        heldState = o->oHeldState;\n    } else {\n    // If no boss is there, just rotate around the area's center point.\n        secondFocus[0] = c->areaCenX;\n        secondFocus[1] = sMarioCamState->pos[1];\n        secondFocus[2] = c->areaCenZ;\n        heldState = 0;\n    }\n\n    focusDistance = calc_abs_dist(sMarioCamState->pos, secondFocus) * 1.6f;\n    if (focusDistance < 800.f) {\n        focusDistance = 800.f;\n    }\n    if (focusDistance > 5000.f) {\n        focusDistance = 5000.f;\n    }\n\n    // If holding the boss, add a slight offset to secondFocus so that the spinning is more pronounced.\n    if (heldState == 1) {\n        offset_rotated(secondFocus, sMarioCamState->pos, holdFocOffset, sMarioCamState->faceAngle);\n    }\n\n    // Set the camera focus to the average of Mario and secondFocus\n    focus[0] = (sMarioCamState->pos[0] + secondFocus[0]) / 2.f;\n    focus[1] = (sMarioCamState->pos[1] + secondFocus[1]) / 2.f + 125.f;\n    focus[2] = (sMarioCamState->pos[2] + secondFocus[2]) / 2.f;\n\n    // Calculate the camera's position as an offset from the focus\n    // When C-Down is not active, this\n    vec3f_set_dist_and_angle(focus, pos, focusDistance, 0x1000, yaw);\n    // Find the floor of the arena\n    pos[1] = find_floor(c->areaCenX, CELL_HEIGHT_LIMIT, c->areaCenZ, &floor);\n    if (floor != NULL) {\n        nx = floor->normal.x;\n        ny = floor->normal.y;\n        nz = floor->normal.z;\n        oo = floor->originOffset;\n        pos[1] = 300.f - (nx * pos[0] + nz * pos[2] + oo) / ny;\n        switch (gCurrLevelArea) {\n            case AREA_BOB:\n                pos[1] += 125.f;\n                //! fall through, makes the BoB boss fight camera move up twice as high as it should\n            case AREA_WF:\n                pos[1] += 125.f;\n        }\n    }\n\n    //! Must be same line to match on -O2\n    // Prevent the camera from going to the ground in the outside boss fight\n    if (gCurrLevelNum == LEVEL_BBH) { pos[1] = 2047.f; }\n\n    // Rotate from C-Button input\n    if (sCSideButtonYaw < 0) {\n        sModeOffsetYaw += 0x200;\n        if ((sCSideButtonYaw += 0x100) > 0) {\n            sCSideButtonYaw = 0;\n        }\n    }\n    if (sCSideButtonYaw > 0) {\n        sModeOffsetYaw -= 0x200;\n        if ((sCSideButtonYaw -= 0x100) < 0) {\n            sCSideButtonYaw = 0;\n        }\n    }\n\n    focus[1] = (sMarioCamState->pos[1] + secondFocus[1]) / 2.f + 100.f;\n    if (heldState == 1) {\n        focus[1] += 300.f * sins((gMarioStates[0].angleVel[1] > 0.f) ?  gMarioStates[0].angleVel[1]\n                                                                     : -gMarioStates[0].angleVel[1]);\n    }\n\n    //! Unnecessary conditional, focusDistance is already bounded to 800\n    if (focusDistance < 400.f) {\n        focusDistance = 400.f;\n    }\n\n    // Set C-Down distance and pitch.\n    // C-Down will essentially double the distance from the center.\n    // sLakituPitch approaches 33.75 degrees.\n    lakitu_zoom(focusDistance, 0x1800);\n\n    // Move the camera position back as sLakituDist and sLakituPitch increase.\n    // This doesn't zoom out of bounds because pos is set above each frame.\n    // The constant 0x1000 doubles the pitch from the center when sLakituPitch is 0\n    // When Lakitu is fully zoomed out, the pitch comes to 0x3800, or 78.75 degrees, up from the focus.\n    vec3f_set_dist_and_angle(pos, pos, sLakituDist, sLakituPitch + 0x1000, yaw);\n\n    return yaw;\n}\n\n// 2nd iteration of data\ns16 unused8032D0A8[] = { 14, 1, 2, 4 };\ns16 unused8032D0B0[] = { 16, 9, 17, 0 };\n\n/**\n * Maps cutscene to numbers in [0,4]. Used in determine_dance_cutscene() with sDanceCutsceneIndexTable.\n *\n * Only the first 5 entries are used. Perhaps the last 5 were bools used to indicate whether the star\n * type exits the course or not.\n */\nu8 sDanceCutsceneTable[] = {\n    CUTSCENE_DANCE_FLY_AWAY, CUTSCENE_DANCE_ROTATE, CUTSCENE_DANCE_CLOSEUP, CUTSCENE_KEY_DANCE, CUTSCENE_DANCE_DEFAULT,\n    FALSE,                   FALSE,                 FALSE,                  FALSE,              TRUE,\n};\n\n/**\n * Perhaps used by different dance cutscenes.\n */\nstruct UnusedDanceInfo {\n    Vec3f point;\n    f32 distTarget;\n    f32 distMultiplier;\n};\n\nstruct UnusedDanceInfo unusedDanceInfo1 = {\n    { -3026.0f, 912.0f, -2148.0f }, 600.0f, 0.3f\n};\n\nu32 unusedDanceType = 0;\n\nstruct UnusedDanceInfo unusedDanceInfo2 = {\n    { -4676.0f, 917.0f, -3802.0f }, 600.0f, 0.3f\n};\n\n/**\n * Table that dictates camera movement in bookend room.\n * Due to only the X being varied in the table, this only moves along the X axis linearly.\n * Third entry is seemingly unused.\n */\nstruct ParallelTrackingPoint sBBHLibraryParTrackPath[] = {\n    { 1, { -929.0f, 1619.0f, -1490.0f }, 50.0f, 0.0f },\n    { 0, { -2118.0f, 1619.0f, -1490.0f }, 50.0f, 0.0f },\n    { 0, { 0.0f, 0.0f, 0.0f }, 0.0f, 0.0f },\n};\n\ns32 unused_update_mode_5_camera(UNUSED struct Camera *c, UNUSED Vec3f focus, UNUSED Vec3f pos) {\n#ifdef AVOID_UB\n   return 0;\n#endif\n}\n\nUNUSED static void stub_camera_1(UNUSED s32 unused) {\n}\n\nvoid mode_boss_fight_camera(struct Camera *c) {\n    c->nextYaw = update_boss_fight_camera(c, c->focus, c->pos);\n}\n\n/**\n * Parallel tracking mode, the camera faces perpendicular to a line defined by sParTrackPath\n *\n * @see update_parallel_tracking_camera\n */\nvoid mode_parallel_tracking_camera(struct Camera *c) {\n    s16 dummy;\n\n    radial_camera_input(c, 0.f);\n    set_fov_function(CAM_FOV_DEFAULT);\n    c->nextYaw = update_parallel_tracking_camera(c, c->focus, c->pos);\n    camera_approach_s16_symmetric_bool(&dummy, 0, 0x0400);\n}\n\n/**\n * Fixed camera mode, the camera rotates around a point and looks and zooms toward Mario.\n */\nvoid mode_fixed_camera(struct Camera *c) {\n    UNUSED u8 filler[8];\n\n    if (gCurrLevelNum == LEVEL_BBH) {\n        set_fov_function(CAM_FOV_BBH);\n    } else {\n        set_fov_function(CAM_FOV_APP_45);\n    }\n    c->nextYaw = update_fixed_camera(c, c->focus, c->pos);\n    c->yaw = c->nextYaw;\n    pan_ahead_of_player(c);\n    vec3f_set(sCastleEntranceOffset, 0.f, 0.f, 0.f);\n}\n\n/**\n * Updates the camera in BEHIND_MARIO mode.\n *\n * The C-Buttons rotate the camera 90 degrees left/right and 67.5 degrees up/down.\n */\ns32 update_behind_mario_camera(struct Camera *c, Vec3f focus, Vec3f pos) {\n    UNUSED u8 filler1[12];\n    f32 dist;\n    UNUSED u8 filler2[4];\n    s16 absPitch;\n    s16 pitch;\n    s16 yaw;\n    s16 goalPitch = -sMarioCamState->faceAngle[0];\n    s16 marioYaw = sMarioCamState->faceAngle[1] + DEGREES(180);\n    s16 goalYawOff = 0;\n    s16 yawSpeed;\n    s16 pitchInc = 32;\n    UNUSED u8 filler3[12];\n    f32 maxDist = 800.f;\n    f32 focYOff = 125.f;\n\n    // Zoom in when Mario R_TRIG mode is active\n    if (sSelectionFlags & CAM_MODE_MARIO_ACTIVE) {\n        maxDist = 350.f;\n        focYOff = 120.f;\n    }\n    if (!(sMarioCamState->action & (ACT_FLAG_SWIMMING | ACT_FLAG_METAL_WATER))) {\n        pitchInc = 128;\n    }\n\n    // Focus on Mario\n    vec3f_copy(focus, sMarioCamState->pos);\n    c->focus[1] += focYOff;\n    //! @bug unnecessary\n    dist = calc_abs_dist(focus, pos);\n    //! @bug unnecessary\n    pitch = calculate_pitch(focus, pos);\n    vec3f_get_dist_and_angle(focus, pos, &dist, &pitch, &yaw);\n    if (dist > maxDist) {\n        dist = maxDist;\n    }\n    if ((absPitch = pitch) < 0) {\n        absPitch = -absPitch;\n    }\n\n    // Determine the yaw speed based on absPitch. A higher absPitch (further away from looking straight)\n    // translates to a slower speed\n    // Note: Pitch is always within +- 90 degrees or +-0x4000, and 0x4000 / 0x200 = 32\n    yawSpeed = 32 - absPitch / 0x200;\n    if (yawSpeed < 1) {\n        yawSpeed = 1;\n    }\n    if (yawSpeed > 32) {\n        yawSpeed = 32;\n    }\n\n    if (sCSideButtonYaw != 0) {\n        camera_approach_s16_symmetric_bool(&sCSideButtonYaw, 0, 1);\n        yawSpeed = 8;\n    }\n    if (sBehindMarioSoundTimer != 0) {\n        goalPitch = 0;\n        camera_approach_s16_symmetric_bool(&sBehindMarioSoundTimer, 0, 1);\n        pitchInc = 0x800;\n    }\n\n    if (sBehindMarioSoundTimer == 28) {\n        if (sCSideButtonYaw < 5 || sCSideButtonYaw > 28) {\n            play_sound_cbutton_up();\n        }\n    }\n    if (sCSideButtonYaw == 28) {\n        if (sBehindMarioSoundTimer < 5 || sBehindMarioSoundTimer > 28) {\n            play_sound_cbutton_up();\n        }\n    }\n\n    // C-Button input. Note: Camera rotates in the opposite direction of the button (airplane controls)\n    //! @bug C-Right and C-Up take precedence due to the way input is handled here\n\n    // Rotate right\n    if (sCButtonsPressed & L_CBUTTONS) {\n        if (gPlayer1Controller->buttonPressed & L_CBUTTONS) {\n            play_sound_cbutton_side();\n        }\n        if (dist < maxDist) {\n            camera_approach_f32_symmetric_bool(&dist, maxDist, 5.f);\n        }\n        goalYawOff = -0x3FF8;\n        sCSideButtonYaw = 30;\n        yawSpeed = 2;\n    }\n    // Rotate left\n    if (sCButtonsPressed & R_CBUTTONS) {\n        if (gPlayer1Controller->buttonPressed & R_CBUTTONS) {\n            play_sound_cbutton_side();\n        }\n        if (dist < maxDist) {\n            camera_approach_f32_symmetric_bool(&dist, maxDist, 5.f);\n        }\n        goalYawOff = 0x3FF8;\n        sCSideButtonYaw = 30;\n        yawSpeed = 2;\n    }\n    // Rotate up\n    if (sCButtonsPressed & D_CBUTTONS) {\n        if (gPlayer1Controller->buttonPressed & (U_CBUTTONS | D_CBUTTONS)) {\n            play_sound_cbutton_side();\n        }\n        if (dist < maxDist) {\n            camera_approach_f32_symmetric_bool(&dist, maxDist, 5.f);\n        }\n        goalPitch = -0x3000;\n        sBehindMarioSoundTimer = 30;\n        pitchInc = 0x800;\n    }\n    // Rotate down\n    if (sCButtonsPressed & U_CBUTTONS) {\n        if (gPlayer1Controller->buttonPressed & (U_CBUTTONS | D_CBUTTONS)) {\n            play_sound_cbutton_side();\n        }\n        if (dist < maxDist) {\n            camera_approach_f32_symmetric_bool(&dist, maxDist, 5.f);\n        }\n        goalPitch = 0x3000;\n        sBehindMarioSoundTimer = 30;\n        pitchInc = 0x800;\n    }\n\n    approach_s16_asymptotic_bool(&yaw, marioYaw + goalYawOff, yawSpeed);\n    camera_approach_s16_symmetric_bool(&pitch, goalPitch, pitchInc);\n    if (dist < 300.f) {\n        dist = 300.f;\n    }\n    vec3f_set_dist_and_angle(focus, pos, dist, pitch, yaw);\n    if (gCurrLevelArea == AREA_WDW_MAIN) {\n        yaw = clamp_positions_and_find_yaw(pos, focus, 4508.f, -3739.f, 4508.f, -3739.f);\n    }\n    if (gCurrLevelArea == AREA_THI_HUGE) {\n        yaw = clamp_positions_and_find_yaw(pos, focus, 8192.f, -8192.f, 8192.f, -8192.f);\n    }\n    if (gCurrLevelArea == AREA_THI_TINY) {\n        yaw = clamp_positions_and_find_yaw(pos, focus, 2458.f, -2458.f, 2458.f, -2458.f);\n    }\n\n    return yaw;\n}\n\n/**\n * \"Behind Mario\" mode: used when Mario is flying, on the water's surface, or shot from a cannon\n */\ns32 mode_behind_mario(struct Camera *c) {\n    struct MarioState *marioState = &gMarioStates[0];\n    struct Surface *floor;\n    Vec3f newPos;\n    //! @bug oldPos is unused, see resolve_geometry_collisions\n    Vec3f oldPos;\n    f32 waterHeight;\n    f32 floorHeight;\n    f32 distCamToFocus;\n    s16 camPitch;\n    s16 camYaw;\n    s16 yaw;\n\n    vec3f_copy(oldPos, c->pos);\n    gCameraMovementFlags &= ~CAM_MOVING_INTO_MODE;\n    vec3f_copy(newPos, c->pos);\n    yaw = update_behind_mario_camera(c, c->focus, newPos);\n    c->pos[0] = newPos[0];\n    c->pos[2] = newPos[2];\n\n    // Keep the camera above the water surface if swimming\n    if (c->mode == CAMERA_MODE_WATER_SURFACE) {\n        floorHeight = find_floor(c->pos[0], c->pos[1], c->pos[2], &floor);\n        newPos[1] = marioState->waterLevel + 120;\n        if (newPos[1] < (floorHeight += 120.f)) {\n            newPos[1] = floorHeight;\n        }\n    }\n    approach_camera_height(c, newPos[1], 50.f);\n    waterHeight = find_water_level(c->pos[0], c->pos[2]) + 100.f;\n    if (c->pos[1] <= waterHeight) {\n        gCameraMovementFlags |= CAM_MOVE_SUBMERGED;\n    } else {\n        gCameraMovementFlags &= ~CAM_MOVE_SUBMERGED;\n    }\n\n    resolve_geometry_collisions(c->pos, oldPos);\n    // Prevent camera getting too far away\n    vec3f_get_dist_and_angle(c->focus, c->pos, &distCamToFocus, &camPitch, &camYaw);\n    if (distCamToFocus > 800.f) {\n        distCamToFocus = 800.f;\n        vec3f_set_dist_and_angle(c->focus, c->pos, distCamToFocus, camPitch, camYaw);\n    }\n    pan_ahead_of_player(c);\n\n    return yaw;\n}\n\n/**\n * Update the camera in slide and hoot mode.\n *\n * In slide mode, keep the camera 800 units from Mario\n */\ns16 update_slide_camera(struct Camera *c) {\n    struct Surface *floor;\n    f32 floorHeight;\n    Vec3f pos;\n    f32 distCamToFocus;\n    f32 maxCamDist;\n    f32 pitchScale;\n    s16 camPitch;\n    s16 camYaw;\n    UNUSED struct MarioState *marioState = &gMarioStates[0];\n    s16 goalPitch = 0x1555;\n    s16 goalYaw = sMarioCamState->faceAngle[1] + DEGREES(180);\n\n    // Zoom in when inside the CCM shortcut\n    if (sStatusFlags & CAM_FLAG_CCM_SLIDE_SHORTCUT) {\n        sLakituDist = approach_f32(sLakituDist, -600.f, 20.f, 20.f);\n    } else {\n        sLakituDist = approach_f32(sLakituDist, 0.f, 20.f, 20.f);\n    }\n\n    // No C-Button input in this mode, notify the player with a buzzer\n    play_camera_buzz_if_cbutton();\n\n    // Focus on Mario\n    vec3f_copy(c->focus, sMarioCamState->pos);\n    c->focus[1] += 50.f;\n\n    vec3f_get_dist_and_angle(c->focus, c->pos, &distCamToFocus, &camPitch, &camYaw);\n    maxCamDist = 800.f;\n\n    // In hoot mode, zoom further out and rotate faster\n    if (sMarioCamState->action == ACT_RIDING_HOOT) {\n        maxCamDist = 1000.f;\n        goalPitch = 0x2800;\n        camera_approach_s16_symmetric_bool(&camYaw, goalYaw, 0x100);\n    } else {\n        camera_approach_s16_symmetric_bool(&camYaw, goalYaw, 0x80);\n    }\n    camera_approach_s16_symmetric_bool(&camPitch, goalPitch, 0x100);\n\n    // Hoot mode\n    if (sMarioCamState->action != ACT_RIDING_HOOT && sMarioGeometry.currFloorType == SURFACE_DEATH_PLANE) {\n        vec3f_set_dist_and_angle(c->focus, pos, maxCamDist + sLakituDist, camPitch, camYaw);\n        c->pos[0] = pos[0];\n        c->pos[2] = pos[2];\n        camera_approach_f32_symmetric_bool(&c->pos[1], c->focus[1], 30.f);\n        vec3f_get_dist_and_angle(c->pos, c->focus, &distCamToFocus, &camPitch, &camYaw);\n        pitchScale = (distCamToFocus - maxCamDist + sLakituDist) / 10000.f;\n        if (pitchScale > 1.f) {\n            pitchScale = 1.f;\n        }\n        camPitch += 0x1000 * pitchScale;\n        vec3f_set_dist_and_angle(c->pos, c->focus, distCamToFocus, camPitch, camYaw);\n\n    // Slide mode\n    } else {\n        vec3f_set_dist_and_angle(c->focus, c->pos, maxCamDist + sLakituDist, camPitch, camYaw);\n        sStatusFlags |= CAM_FLAG_BLOCK_SMOOTH_MOVEMENT;\n\n        // Stay above the slide floor\n        floorHeight = find_floor(c->pos[0], c->pos[1] + 200.f, c->pos[2], &floor) + 125.f;\n        if (c->pos[1] < floorHeight) {\n            c->pos[1] = floorHeight;\n        }\n        // Stay closer than maxCamDist\n        vec3f_get_dist_and_angle(c->focus, c->pos, &distCamToFocus, &camPitch, &camYaw);\n        if (distCamToFocus > maxCamDist + sLakituDist) {\n            distCamToFocus = maxCamDist + sLakituDist;\n            vec3f_set_dist_and_angle(c->focus, c->pos, distCamToFocus, camPitch, camYaw);\n        }\n    }\n\n    camYaw = calculate_yaw(c->focus, c->pos);\n    return camYaw;\n}\n\nvoid mode_behind_mario_camera(struct Camera *c) {\n    c->nextYaw = mode_behind_mario(c);\n}\n\ns32 nop_update_water_camera(UNUSED struct Camera *c, UNUSED Vec3f focus, UNUSED Vec3f pos) {\n#ifdef AVOID_UB\n   return 0;\n#endif\n}\n\n/**\n * Exactly the same as BEHIND_MARIO\n */\nvoid mode_water_surface_camera(struct Camera *c) {\n    c->nextYaw = mode_behind_mario(c);\n}\n\n/**\n * Used in sModeTransitions for CLOSE and FREE_ROAM mode\n */\ns32 update_mario_camera(UNUSED struct Camera *c, Vec3f focus, Vec3f pos) {\n    s16 yaw = sMarioCamState->faceAngle[1] + sModeOffsetYaw + DEGREES(180);\n    focus_on_mario(focus, pos, 125.f, 125.f, gCameraZoomDist, 0x05B0, yaw);\n\n    return sMarioCamState->faceAngle[1];\n}\n\n/**\n * Update the camera in default, close, and free roam mode\n *\n * The camera moves behind Mario, and can rotate all the way around\n */\ns16 update_default_camera(struct Camera *c) {\n    Vec3f tempPos;\n    Vec3f cPos;\n    UNUSED u8 filler1[12];\n    struct Surface *marioFloor;\n    struct Surface *cFloor;\n    struct Surface *tempFloor;\n    struct Surface *ceil;\n    f32 camFloorHeight;\n    f32 tempFloorHeight;\n    f32 marioFloorHeight;\n    UNUSED u8 filler2[4];\n    f32 dist;\n    f32 zoomDist;\n    f32 waterHeight;\n    f32 gasHeight;\n    s16 avoidYaw;\n    s16 pitch;\n    s16 yaw;\n    s16 yawGoal = sMarioCamState->faceAngle[1] + DEGREES(180);\n    f32 posHeight;\n    f32 focHeight;\n    f32 distFromWater;\n    s16 tempPitch;\n    s16 tempYaw;\n    f32 xzDist;\n    UNUSED u8 filler3[4];\n    s16 nextYawVel;\n    s16 yawVel = 0;\n    f32 scale;\n    s32 avoidStatus = 0;\n    s32 closeToMario = 0;\n    f32 ceilHeight = find_ceil(gLakituState.goalPos[0],\n                               gLakituState.goalPos[1],\n                               gLakituState.goalPos[2], &ceil);\n    s16 yawDir;\n\n    handle_c_button_movement(c);\n    vec3f_get_dist_and_angle(sMarioCamState->pos, c->pos, &dist, &pitch, &yaw);\n\n    // If C-Down is active, determine what distance the camera should be from Mario\n    if (gCameraMovementFlags & CAM_MOVE_ZOOMED_OUT) {\n        //! In Mario mode, the camera is zoomed out further than in Lakitu mode (1400 vs 1200)\n        if (set_cam_angle(0) == CAM_ANGLE_MARIO) {\n            zoomDist = gCameraZoomDist + 1050;\n        } else {\n            zoomDist = gCameraZoomDist + 400;\n        }\n    } else {\n        zoomDist = gCameraZoomDist;\n    }\n\n    if (sMarioCamState->action & ACT_FLAG_HANGING ||\n        sMarioCamState->action == ACT_RIDING_HOOT) {\n        zoomDist *= 0.8f;\n        set_handheld_shake(HAND_CAM_SHAKE_HANG_OWL);\n    }\n\n    // If not zooming out, only allow dist to decrease\n    if (sZoomAmount == 0.f) {\n        if (dist > zoomDist) {\n            if ((dist -= 50.f) < zoomDist) {\n                dist = zoomDist;\n            }\n        }\n    } else {\n        if ((sZoomAmount -= 30.f) < 0.f) {\n            sZoomAmount = 0.f;\n        }\n        if (dist > zoomDist) {\n            if ((dist -= 30.f) < zoomDist) {\n                dist = zoomDist;\n            }\n        }\n        if (dist < zoomDist) {\n            if ((dist += 30.f) > zoomDist) {\n                dist = zoomDist;\n            }\n        }\n    }\n\n    // Determine how fast to rotate the camera\n    if (sCSideButtonYaw == 0) {\n        if (c->mode == CAMERA_MODE_FREE_ROAM) {\n            nextYawVel = 0xC0;\n        } else {\n            nextYawVel = 0x100;\n        }\n        if ((gPlayer1Controller->stickX != 0.f || gPlayer1Controller->stickY != 0.f) != 0) {\n            nextYawVel = 0x20;\n        }\n    } else {\n        if (sCSideButtonYaw < 0) {\n            yaw += 0x200;\n        }\n        if (sCSideButtonYaw > 0) {\n            yaw -= 0x200;\n        }\n        camera_approach_s16_symmetric_bool(&sCSideButtonYaw, 0, 0x100);\n        nextYawVel = 0;\n    }\n    sYawSpeed = 0x400;\n    xzDist = calc_hor_dist(sMarioCamState->pos, c->pos);\n\n    if (sStatusFlags & CAM_FLAG_BEHIND_MARIO_POST_DOOR) {\n        if (xzDist >= 250) {\n            sStatusFlags &= ~CAM_FLAG_BEHIND_MARIO_POST_DOOR;\n        }\n        if (ABS((sMarioCamState->faceAngle[1] - yaw) / 2) < 0x1800) {\n            sStatusFlags &= ~CAM_FLAG_BEHIND_MARIO_POST_DOOR;\n            yaw = sCameraYawAfterDoorCutscene + DEGREES(180);\n            dist = 800.f;\n            sStatusFlags |= CAM_FLAG_BLOCK_SMOOTH_MOVEMENT;\n        }\n    } else if (xzDist < 250) {\n        // Turn rapidly if very close to Mario\n        c->pos[0] += (250 - xzDist) * sins(yaw);\n        c->pos[2] += (250 - xzDist) * coss(yaw);\n        if (sCSideButtonYaw == 0) {\n            nextYawVel = 0x1000;\n            sYawSpeed = 0;\n            vec3f_get_dist_and_angle(sMarioCamState->pos, c->pos, &dist, &pitch, &yaw);\n        }\n        closeToMario |= 1;\n    }\n\n    if (-16 < gPlayer1Controller->stickY) {\n        c->yaw = yaw;\n    }\n\n    calc_y_to_curr_floor(&posHeight, 1, 200, &focHeight, 0.9f, 200);\n    vec3f_copy(cPos, c->pos);\n    avoidStatus = rotate_camera_around_walls(c, cPos, &avoidYaw, 0x600);\n    // If a wall is blocking the view of Mario, then rotate in the calculated direction\n    if (avoidStatus == 3) {\n        unusedFreeRoamWallYaw = avoidYaw;\n        sAvoidYawVel = yaw;\n        sStatusFlags |= CAM_FLAG_COLLIDED_WITH_WALL;\n        //! Does nothing\n        vec3f_get_dist_and_angle(sMarioCamState->pos, cPos, &xzDist, &tempPitch, &tempYaw);\n        // Rotate to avoid the wall\n        approach_s16_asymptotic_bool(&yaw, avoidYaw, 10);\n        //! Does nothing\n        vec3f_set_dist_and_angle(sMarioCamState->pos, cPos, xzDist, tempPitch, tempYaw);\n        sAvoidYawVel = (sAvoidYawVel - yaw) / 0x100;\n    } else {\n        if (gMarioStates[0].forwardVel == 0.f) {\n            if (sStatusFlags & CAM_FLAG_COLLIDED_WITH_WALL) {\n                if ((yawGoal - yaw) / 0x100 >= 0) {\n                    yawDir = -1;\n                } else {\n                    yawDir = 1;\n                }\n                if ((sAvoidYawVel > 0 && yawDir > 0) || (sAvoidYawVel < 0 && yawDir < 0)) {\n                    yawVel = nextYawVel;\n                }\n            } else {\n                yawVel = nextYawVel;\n            }\n        } else {\n            if (nextYawVel == 0x1000) {\n                yawVel = nextYawVel;\n            }\n            sStatusFlags &= ~CAM_FLAG_COLLIDED_WITH_WALL;\n        }\n\n        // If a wall is near the camera, turn twice as fast\n        if (avoidStatus != 0) {\n            yawVel += yawVel;\n        }\n        // ...Unless the camera already rotated from being close to Mario\n        if ((closeToMario & 1) && avoidStatus != 0) {\n            yawVel = 0;\n        }\n        if (yawVel != 0 && get_dialog_id() == DIALOG_NONE) {\n            camera_approach_s16_symmetric_bool(&yaw, yawGoal, yawVel);\n        }\n    }\n\n    // Only zoom out if not obstructed by walls and Lakitu hasn't collided with any\n    if (avoidStatus == 0 && !(sStatusFlags & CAM_FLAG_COLLIDED_WITH_WALL)) {\n        approach_f32_asymptotic_bool(&dist, zoomDist - 100.f, 0.05f);\n    }\n    vec3f_set_dist_and_angle(sMarioCamState->pos, cPos, dist, pitch, yaw);\n    cPos[1] += posHeight + 125.f;\n\n    // Move the camera away from walls and set the collision flag\n    if (collide_with_walls(cPos, 10.f, 80.f) != 0) {\n        sStatusFlags |= CAM_FLAG_COLLIDED_WITH_WALL;\n    }\n\n    c->focus[0] = sMarioCamState->pos[0];\n    c->focus[1] = sMarioCamState->pos[1] + 125.f + focHeight;\n    c->focus[2] = sMarioCamState->pos[2];\n\n    marioFloorHeight = 125.f + sMarioGeometry.currFloorHeight;\n    marioFloor = sMarioGeometry.currFloor;\n    camFloorHeight = find_floor(cPos[0], cPos[1] + 50.f, cPos[2], &cFloor) + 125.f;\n    for (scale = 0.1f; scale < 1.f; scale += 0.2f) {\n        scale_along_line(tempPos, cPos, sMarioCamState->pos, scale);\n        tempFloorHeight = find_floor(tempPos[0], tempPos[1], tempPos[2], &tempFloor) + 125.f;\n        if (tempFloor != NULL && tempFloorHeight > marioFloorHeight) {\n            marioFloorHeight = tempFloorHeight;\n            marioFloor = tempFloor;\n        }\n    }\n\n    // Lower the camera in Mario mode\n    if (sSelectionFlags & CAM_MODE_MARIO_ACTIVE) {\n        marioFloorHeight -= 35.f;\n        camFloorHeight -= 35.f;\n        c->focus[1] -= 25.f;\n    }\n\n    // If there's water below the camera, decide whether to keep the camera above the water surface\n    waterHeight = find_water_level(cPos[0], cPos[2]);\n    if (waterHeight != FLOOR_LOWER_LIMIT) {\n        waterHeight += 125.f;\n        distFromWater = waterHeight - marioFloorHeight;\n        if (!(gCameraMovementFlags & CAM_MOVE_METAL_BELOW_WATER)) {\n            if (distFromWater > 800.f && (sMarioCamState->action & ACT_FLAG_METAL_WATER)) {\n                gCameraMovementFlags |= CAM_MOVE_METAL_BELOW_WATER;\n            }\n        } else {\n            if (distFromWater < 400.f || !(sMarioCamState->action & ACT_FLAG_METAL_WATER)) {\n                gCameraMovementFlags &= ~CAM_MOVE_METAL_BELOW_WATER;\n            }\n        }\n        // If not wearing the metal cap, always stay above\n        if (!(gCameraMovementFlags & CAM_MOVE_METAL_BELOW_WATER) && camFloorHeight < waterHeight) {\n            camFloorHeight = waterHeight;\n        }\n    } else {\n        gCameraMovementFlags &= ~CAM_MOVE_METAL_BELOW_WATER;\n    }\n\n    cPos[1] = camFloorHeight;\n    vec3f_copy(tempPos, cPos);\n    tempPos[1] -= 125.f;\n    if (marioFloor != NULL && camFloorHeight <= marioFloorHeight) {\n        avoidStatus = is_range_behind_surface(c->focus, tempPos, marioFloor, 0, -1);\n        if (avoidStatus != 1 && ceilHeight > marioFloorHeight) {\n            camFloorHeight = marioFloorHeight;\n        }\n    }\n\n    posHeight = 0.f;\n    if (c->mode == CAMERA_MODE_FREE_ROAM) {\n        if (gCameraMovementFlags & CAM_MOVE_ZOOMED_OUT) {\n            posHeight = 375.f;\n            if (gCurrLevelArea == AREA_SSL_PYRAMID) {\n                posHeight /= 2;\n            }\n        } else {\n            posHeight = 100.f;\n        }\n    }\n    if ((gCameraMovementFlags & CAM_MOVE_ZOOMED_OUT) && (sSelectionFlags & CAM_MODE_MARIO_ACTIVE)) {\n        posHeight = 610.f;\n        if (gCurrLevelArea == AREA_SSL_PYRAMID || gCurrLevelNum == LEVEL_CASTLE) {\n            posHeight /= 2;\n        }\n    }\n\n    // Make Lakitu fly above the gas\n    gasHeight = find_poison_gas_level(cPos[0], cPos[2]);\n    if (gasHeight != FLOOR_LOWER_LIMIT) {\n        if ((gasHeight += 130.f) > c->pos[1]) {\n            c->pos[1] = gasHeight;\n        }\n    }\n\n    if (sMarioCamState->action & ACT_FLAG_HANGING || sMarioCamState->action == ACT_RIDING_HOOT) {\n        camFloorHeight = sMarioCamState->pos[1] + 400.f;\n        if (c->mode == CAMERA_MODE_FREE_ROAM) {\n            camFloorHeight -= 100.f;\n        }\n        ceilHeight = CELL_HEIGHT_LIMIT;\n        vec3f_copy(c->focus, sMarioCamState->pos);\n    }\n\n    if (sMarioCamState->action & ACT_FLAG_ON_POLE) {\n        camFloorHeight = gMarioStates[0].usedObj->oPosY + 125.f;\n        if (sMarioCamState->pos[1] - 100.f > camFloorHeight) {\n            camFloorHeight = sMarioCamState->pos[1] - 100.f;\n        }\n        ceilHeight = CELL_HEIGHT_LIMIT;\n        vec3f_copy(c->focus, sMarioCamState->pos);\n    }\n    if (camFloorHeight != FLOOR_LOWER_LIMIT) {\n        camFloorHeight += posHeight;\n        approach_camera_height(c, camFloorHeight, 20.f);\n    }\n    c->pos[0] = cPos[0];\n    c->pos[2] = cPos[2];\n    cPos[0] = gLakituState.goalPos[0];\n    cPos[1] = c->pos[1];\n    cPos[2] = gLakituState.goalPos[2];\n    vec3f_get_dist_and_angle(cPos, c->pos, &dist, &tempPitch, &tempYaw);\n    // Prevent the camera from lagging behind too much\n    if (dist > 50.f) {\n        dist = 50.f;\n        vec3f_set_dist_and_angle(cPos, c->pos, dist, tempPitch, tempYaw);\n    }\n    if (sMarioGeometry.currFloorType != SURFACE_DEATH_PLANE) {\n        vec3f_get_dist_and_angle(c->focus, c->pos, &dist, &tempPitch, &tempYaw);\n        if (dist > zoomDist) {\n            dist = zoomDist;\n            vec3f_set_dist_and_angle(c->focus, c->pos, dist, tempPitch, tempYaw);\n        }\n    }\n    if (ceilHeight != CELL_HEIGHT_LIMIT) {\n        if (c->pos[1] > (ceilHeight -= 150.f)\n            && (avoidStatus = is_range_behind_surface(c->pos, sMarioCamState->pos, ceil, 0, -1)) == 1) {\n            c->pos[1] = ceilHeight;\n        }\n    }\n    if (gCurrLevelArea == AREA_WDW_TOWN) {\n        yaw = clamp_positions_and_find_yaw(c->pos, c->focus, 2254.f, -3789.f, 3790.f, -2253.f);\n    }\n    return yaw;\n}\n\n/**\n * The default camera mode\n * Used by close and free roam modes\n */\nvoid mode_default_camera(struct Camera *c) {\n    set_fov_function(CAM_FOV_DEFAULT);\n    c->nextYaw = update_default_camera(c);\n    pan_ahead_of_player(c);\n}\n\n/**\n * The mode used by close and free roam\n */\nvoid mode_lakitu_camera(struct Camera *c) {\n    gCameraZoomDist = 800.f;\n    mode_default_camera(c);\n}\n\n/**\n * When no other mode is active and the current R button mode is Mario\n */\nvoid mode_mario_camera(struct Camera *c) {\n    gCameraZoomDist = 350.f;\n    mode_default_camera(c);\n}\n\n/**\n * Rotates the camera around the spiral staircase.\n */\ns32 update_spiral_stairs_camera(struct Camera *c, Vec3f focus, Vec3f pos) {\n    UNUSED s16 unused;\n    /// The returned yaw\n    s16 camYaw;\n    // unused\n    s16 focPitch;\n    /// The focus (Mario)'s yaw around the stairs\n    s16 focYaw;\n    // unused\n    s16 posPitch;\n    /// The camera's yaw around the stairs\n    s16 posYaw;\n    UNUSED u8 filler[4];\n    Vec3f cPos;\n    Vec3f checkPos;\n    struct Surface *floor;\n    // unused\n    f32 dist;\n    f32 focusHeight;\n    f32 floorHeight;\n    f32 focY;\n\n    handle_c_button_movement(c);\n    // Set base pos to the center of the staircase\n    vec3f_set(sFixedModeBasePosition, -1280.f, 614.f, 1740.f);\n\n    // Focus on Mario, and move the focus up the staircase with him\n    calc_y_to_curr_floor(&focusHeight, 1.f, 200.f, &focusHeight, 0.9f, 200.f);\n    focus[0] = sMarioCamState->pos[0];\n    focY = sMarioCamState->pos[1] + 125.f + focusHeight;\n    focus[2] = sMarioCamState->pos[2];\n\n    vec3f_copy(cPos, pos);\n    vec3f_get_dist_and_angle(sFixedModeBasePosition, focus, &dist, &focPitch, &focYaw);\n    vec3f_get_dist_and_angle(sFixedModeBasePosition, cPos, &dist, &posPitch, &posYaw);\n\n    sSpiralStairsYawOffset = posYaw - focYaw;\n    // posYaw will change if Mario is more than 90 degrees around the stairs, relative to the camera\n    if (sSpiralStairsYawOffset < DEGREES(-90)) {\n        sSpiralStairsYawOffset = DEGREES(-90);\n    }\n    if (sSpiralStairsYawOffset > DEGREES(90)) {\n        sSpiralStairsYawOffset = DEGREES(90);\n    }\n    focYaw += sSpiralStairsYawOffset;\n    posYaw = focYaw;\n    //! @bug unnecessary\n    camera_approach_s16_symmetric_bool(&posYaw, focYaw, 0x1000);\n\n    vec3f_set_dist_and_angle(sFixedModeBasePosition, cPos, 300.f, 0, posYaw);\n\n    // Move the camera's y coord up/down the staircase\n    checkPos[0] = focus[0] + (cPos[0] - focus[0]) * 0.7f;\n    checkPos[1] = focus[1] + (cPos[1] - focus[1]) * 0.7f + 300.f;\n    checkPos[2] = focus[2] + (cPos[2] - focus[2]) * 0.7f;\n    floorHeight = find_floor(checkPos[0], checkPos[1] + 50.f, checkPos[2], &floor);\n\n    if (floorHeight != FLOOR_LOWER_LIMIT) {\n        if (floorHeight < sMarioGeometry.currFloorHeight) {\n            floorHeight = sMarioGeometry.currFloorHeight;\n        }\n        pos[1] = approach_f32(pos[1], (floorHeight += 125.f), 30.f, 30.f);\n    }\n\n    camera_approach_f32_symmetric_bool(&focus[1], focY, 30.f);\n    pos[0] = cPos[0];\n    pos[2] = cPos[2];\n    camYaw = calculate_yaw(focus, pos);\n\n    return camYaw;\n}\n\n/**\n * The mode used in the spiral staircase in the castle\n */\nvoid mode_spiral_stairs_camera(struct Camera *c) {\n    c->nextYaw = update_spiral_stairs_camera(c, c->focus, c->pos);\n}\n\ns32 update_slide_or_0f_camera(UNUSED struct Camera *c, Vec3f focus, Vec3f pos) {\n    s16 yaw = sMarioCamState->faceAngle[1] + sModeOffsetYaw + DEGREES(180);\n\n    focus_on_mario(focus, pos, 125.f, 125.f, 800.f, 5461, yaw);\n    return sMarioCamState->faceAngle[1];\n}\n\nstatic UNUSED void unused_mode_0f_camera(struct Camera *c) {\n    if (gPlayer1Controller->buttonPressed & U_CBUTTONS) {\n        gCameraMovementFlags |= CAM_MOVE_C_UP_MODE;\n    }\n    c->nextYaw = update_slide_camera(c);\n}\n\n/**\n * Slide/hoot mode.\n * In this mode, the camera is always at the back of Mario, because Mario generally only moves forward.\n */\nvoid mode_slide_camera(struct Camera *c) {\n    if (sMarioGeometry.currFloorType == SURFACE_CLOSE_CAMERA ||\n        sMarioGeometry.currFloorType == SURFACE_NO_CAM_COL_SLIPPERY) {\n        mode_lakitu_camera(c);\n    } else {\n        if (gPlayer1Controller->buttonPressed & U_CBUTTONS) {\n            gCameraMovementFlags |= CAM_MOVE_C_UP_MODE;\n        }\n        c->nextYaw = update_slide_camera(c);\n    }\n}\n\nvoid store_lakitu_cam_info_for_c_up(struct Camera *c) {\n    vec3f_copy(sCameraStoreCUp.pos, c->pos);\n    vec3f_sub(sCameraStoreCUp.pos, sMarioCamState->pos);\n    // Only store the y value, and as an offset from Mario, for some reason\n    vec3f_set(sCameraStoreCUp.focus, 0.f, c->focus[1] - sMarioCamState->pos[1], 0.f);\n}\n\n/**\n * Start C-Up mode. The actual mode change is handled in update_mario_inputs() in mario.c\n *\n * @see update_mario_inputs\n */\ns32 set_mode_c_up(struct Camera *c) {\n    if (!(gCameraMovementFlags & CAM_MOVE_C_UP_MODE)) {\n        gCameraMovementFlags |= CAM_MOVE_C_UP_MODE;\n        store_lakitu_cam_info_for_c_up(c);\n        sCameraSoundFlags &= ~CAM_SOUND_C_UP_PLAYED;\n        return 1;\n    }\n    return 0;\n}\n\n/**\n * Zoom the camera out of C-Up mode, avoiding moving into a wall, if possible, by searching for an open\n * direction.\n */\ns32 exit_c_up(struct Camera *c) {\n    struct Surface *surface;\n    Vec3f checkFoc;\n    Vec3f curPos;\n    // Variables for searching for an open direction\n    s32 searching = 0;\n    /// The current sector of the circle that we are checking\n    s32 sector;\n    f32 ceilHeight;\n    f32 floorHeight;\n    f32 curDist;\n    f32 d;\n    s16 curPitch;\n    s16 curYaw;\n    s16 checkYaw = 0;\n    Vec3f storePos; // unused\n    Vec3f storeFoc; // unused\n\n    if ((gCameraMovementFlags & CAM_MOVE_C_UP_MODE) && !(gCameraMovementFlags & CAM_MOVE_STARTED_EXITING_C_UP)) {\n        // Copy the stored pos and focus. This is unused.\n        vec3f_copy(storePos, sCameraStoreCUp.pos);\n        vec3f_add(storePos, sMarioCamState->pos);\n        vec3f_copy(storeFoc, sCameraStoreCUp.focus);\n        vec3f_add(storeFoc, sMarioCamState->pos);\n\n        vec3f_copy(checkFoc, c->focus);\n        checkFoc[0] = sMarioCamState->pos[0];\n        checkFoc[2] = sMarioCamState->pos[2];\n        vec3f_get_dist_and_angle(checkFoc, c->pos, &curDist, &curPitch, &curYaw);\n        vec3f_copy(curPos, c->pos);\n        curDist = 80.f;\n\n        // Search for an open direction to zoom out in, if the camera is changing to close, free roam,\n        // or spiral-stairs mode\n        if (sModeInfo.lastMode == CAMERA_MODE_SPIRAL_STAIRS || sModeInfo.lastMode == CAMERA_MODE_CLOSE\n            || sModeInfo.lastMode == CAMERA_MODE_FREE_ROAM) {\n            searching = 1;\n            // Check the whole circle around Mario for an open direction to zoom out to\n            for (sector = 0; sector < 16 && searching == 1; sector++) {\n                vec3f_set_dist_and_angle(checkFoc, curPos, curDist, 0, curYaw + checkYaw);\n\n                // If there are no walls this way,\n                if (f32_find_wall_collision(&curPos[0], &curPos[1], &curPos[2], 20.f, 50.f) == 0) {\n\n                    // Start close to Mario, check for walls, floors, and ceilings all the way to the\n                    // zoomed out distance\n                    for (d = curDist; d < gCameraZoomDist; d += 20.f) {\n                        vec3f_set_dist_and_angle(checkFoc, curPos, d, 0, curYaw + checkYaw);\n\n                        // Check if we're zooming out into a floor or ceiling\n                        ceilHeight = find_ceil(curPos[0], curPos[1] - 150.f, curPos[2], &surface) + -10.f;\n                        if (surface != NULL && ceilHeight < curPos[1]) {\n                            break;\n                        }\n                        floorHeight = find_floor(curPos[0], curPos[1] + 150.f, curPos[2], &surface) + 10.f;\n                        if (surface != NULL && floorHeight > curPos[1]) {\n                            break;\n                        }\n\n                        // Stop checking this direction if there is a wall blocking the way\n                        if (f32_find_wall_collision(&curPos[0], &curPos[1], &curPos[2], 20.f, 50.f) == 1) {\n                            break;\n                        }\n                    }\n\n                    // If there was no collision found all the way to the max distance, it's an opening\n                    if (d >= gCameraZoomDist) {\n                        searching = 0;\n                    }\n                }\n\n                // Alternate left and right, checking each 1/16th (22.5 degrees) of the circle\n                if (searching == 1) {\n                    checkYaw = -checkYaw;\n                    if (checkYaw < 0) {\n                        checkYaw -= 0x1000;\n                    } else {\n                        checkYaw += 0x1000;\n                    }\n                }\n            }\n\n            // Update the stored focus and pos to the direction found in the search\n            if (searching == 0) {\n                vec3f_set_dist_and_angle(checkFoc, sCameraStoreCUp.pos, gCameraZoomDist, 0, curYaw + checkYaw);\n                vec3f_copy(sCameraStoreCUp.focus, checkFoc);\n                vec3f_sub(sCameraStoreCUp.pos, sMarioCamState->pos);\n                vec3f_sub(sCameraStoreCUp.focus, sMarioCamState->pos);\n            }\n\n            gCameraMovementFlags |= CAM_MOVE_STARTED_EXITING_C_UP;\n            transition_next_state(c, 15);\n        } else {\n            // Let the next camera mode handle it\n            gCameraMovementFlags &= ~(CAM_MOVE_STARTED_EXITING_C_UP | CAM_MOVE_C_UP_MODE);\n            vec3f_set_dist_and_angle(checkFoc, c->pos, curDist, curPitch, curYaw + checkYaw);\n        }\n        play_sound_cbutton_down();\n    }\n    return 0;\n}\n\n/**\n * The mode used when C-Up is pressed.\n */\ns32 update_c_up(UNUSED struct Camera *c, Vec3f focus, Vec3f pos) {\n    s16 pitch = sCUpCameraPitch;\n    s16 yaw = sMarioCamState->faceAngle[1] + sModeOffsetYaw + DEGREES(180);\n\n    focus_on_mario(focus, pos, 125.f, 125.f, 250.f, pitch, yaw);\n    return sMarioCamState->faceAngle[1];\n}\n\n/**\n * Make Mario's head move in C-Up mode.\n */\nvoid move_mario_head_c_up(UNUSED struct Camera *c) {\n    UNUSED s16 pitch = sCUpCameraPitch;\n    UNUSED s16 yaw = sModeOffsetYaw;\n\n    sCUpCameraPitch += (s16)(gPlayer1Controller->stickY * 10.f);\n    sModeOffsetYaw -= (s16)(gPlayer1Controller->stickX * 10.f);\n\n    // Bound looking up to nearly 80 degrees.\n    if (sCUpCameraPitch > 0x38E3) {\n        sCUpCameraPitch = 0x38E3;\n    }\n    // Bound looking down to -45 degrees\n    if (sCUpCameraPitch < -0x2000) {\n        sCUpCameraPitch = -0x2000;\n    }\n\n    // Bound the camera yaw to +-120 degrees\n    if (sModeOffsetYaw > 0x5555) {\n        sModeOffsetYaw = 0x5555;\n    }\n    if (sModeOffsetYaw < -0x5555) {\n        sModeOffsetYaw = -0x5555;\n    }\n\n    // Give Mario's neck natural-looking constraints\n    sMarioCamState->headRotation[0] = sCUpCameraPitch * 3 / 4;\n    sMarioCamState->headRotation[1] = sModeOffsetYaw * 3 / 4;\n}\n\n/**\n * Zooms the camera in for C-Up mode\n */\nvoid move_into_c_up(struct Camera *c) {\n    struct LinearTransitionPoint *start = &sModeInfo.transitionStart;\n    struct LinearTransitionPoint *end = &sModeInfo.transitionEnd;\n\n    f32 dist  = end->dist  - start->dist;\n    s16 pitch = end->pitch - start->pitch;\n    s16 yaw   = end->yaw   - start->yaw;\n\n    // Linearly interpolate from start to end position's polar coordinates\n    dist  = start->dist  + dist  * sModeInfo.frame / sModeInfo.max;\n    pitch = start->pitch + pitch * sModeInfo.frame / sModeInfo.max;\n    yaw   = start->yaw   + yaw   * sModeInfo.frame / sModeInfo.max;\n\n    // Linearly interpolate the focus from start to end\n    c->focus[0] = start->focus[0] + (end->focus[0] - start->focus[0]) * sModeInfo.frame / sModeInfo.max;\n    c->focus[1] = start->focus[1] + (end->focus[1] - start->focus[1]) * sModeInfo.frame / sModeInfo.max;\n    c->focus[2] = start->focus[2] + (end->focus[2] - start->focus[2]) * sModeInfo.frame / sModeInfo.max;\n\n    vec3f_add(c->focus, sMarioCamState->pos);\n    vec3f_set_dist_and_angle(c->focus, c->pos, dist, pitch, yaw);\n\n    sMarioCamState->headRotation[0] = 0;\n    sMarioCamState->headRotation[1] = 0;\n\n    // Finished zooming in\n    if (++sModeInfo.frame == sModeInfo.max) {\n        gCameraMovementFlags &= ~CAM_MOVING_INTO_MODE;\n    }\n}\n\n/**\n * The main update function for C-Up mode\n */\ns32 mode_c_up_camera(struct Camera *c) {\n    UNUSED u8 filler[12];\n\n    // Play a sound when entering C-Up mode\n    if (!(sCameraSoundFlags & CAM_SOUND_C_UP_PLAYED)) {\n        play_sound_cbutton_up();\n        sCameraSoundFlags |= CAM_SOUND_C_UP_PLAYED;\n    }\n\n    // Zoom in first\n    if (gCameraMovementFlags & CAM_MOVING_INTO_MODE) {\n        gCameraMovementFlags |= CAM_MOVE_C_UP_MODE;\n        move_into_c_up(c);\n        return 1;\n    }\n\n    if (!(gCameraMovementFlags & CAM_MOVE_STARTED_EXITING_C_UP)) {\n        // Normal update\n        move_mario_head_c_up(c);\n        update_c_up(c, c->focus, c->pos);\n    } else {\n        // Exiting C-Up\n        if (sStatusFlags & CAM_FLAG_TRANSITION_OUT_OF_C_UP) {\n            // Retrieve the previous position and focus\n            vec3f_copy(c->pos, sCameraStoreCUp.pos);\n            vec3f_add(c->pos, sMarioCamState->pos);\n            vec3f_copy(c->focus, sCameraStoreCUp.focus);\n            vec3f_add(c->focus, sMarioCamState->pos);\n            // Make Mario look forward\n            camera_approach_s16_symmetric_bool(&sMarioCamState->headRotation[0], 0, 1024);\n            camera_approach_s16_symmetric_bool(&sMarioCamState->headRotation[1], 0, 1024);\n        } else {\n            // Finished exiting C-Up\n            gCameraMovementFlags &= ~(CAM_MOVE_STARTED_EXITING_C_UP | CAM_MOVE_C_UP_MODE);\n        }\n    }\n    sPanDistance = 0.f;\n\n    // Exit C-Up mode\n    if (gPlayer1Controller->buttonPressed & (A_BUTTON | B_BUTTON | D_CBUTTONS | L_CBUTTONS | R_CBUTTONS)) {\n        exit_c_up(c);\n    }\n    return 0;\n}\n\n/**\n * Used when Mario is in a cannon.\n */\ns32 update_in_cannon(UNUSED struct Camera *c, Vec3f focus, Vec3f pos) {\n    focus_on_mario(pos, focus, 125.f + sCannonYOffset, 125.f, 800.f,\n                                    sMarioCamState->faceAngle[0], sMarioCamState->faceAngle[1]);\n    return sMarioCamState->faceAngle[1];\n}\n\n/**\n * Updates the camera when Mario is in a cannon.\n * sCannonYOffset is used to make the camera rotate down when Mario has just entered the cannon\n */\nvoid mode_cannon_camera(struct Camera *c) {\n    UNUSED u8 filler[24];\n\n    sLakituPitch = 0;\n    gCameraMovementFlags &= ~CAM_MOVING_INTO_MODE;\n    c->nextYaw = update_in_cannon(c, c->focus, c->pos);\n    if (gPlayer1Controller->buttonPressed & A_BUTTON) {\n        set_camera_mode(c, CAMERA_MODE_BEHIND_MARIO, 1);\n        sPanDistance = 0.f;\n        sCannonYOffset = 0.f;\n        sStatusFlags &= ~CAM_FLAG_BLOCK_SMOOTH_MOVEMENT;\n    } else {\n        sCannonYOffset = approach_f32(sCannonYOffset, 0.f, 100.f, 100.f);\n    }\n}\n\n/**\n * Cause Lakitu to fly to the next Camera position and focus over a number of frames.\n *\n * At the end of each frame, Lakitu's position and focus (\"state\") are stored.\n * Calling this function makes next_lakitu_state() fly from the last frame's state to the\n * current frame's calculated state.\n *\n * @see next_lakitu_state()\n */\nvoid transition_next_state(UNUSED struct Camera *c, s16 frames) {\n    if (!(sStatusFlags & CAM_FLAG_FRAME_AFTER_CAM_INIT)) {\n        sStatusFlags |= (CAM_FLAG_START_TRANSITION | CAM_FLAG_TRANSITION_OUT_OF_C_UP);\n        sModeTransition.framesLeft = frames;\n    }\n}\n\n/**\n * Sets the camera mode to `newMode` and initializes sModeTransition with `numFrames` frames\n *\n * Used to change the camera mode to 'level-oriented' modes\n *      namely: RADIAL/OUTWARD_RADIAL, 8_DIRECTIONS, FREE_ROAM, CLOSE, SPIRAL_STAIRS, and SLIDE_HOOT\n */\nvoid transition_to_camera_mode(struct Camera *c, s16 newMode, s16 numFrames) {\n    if (c->mode != newMode) {\n        sModeInfo.newMode = (newMode != -1) ? newMode : sModeInfo.lastMode;\n        sModeInfo.lastMode = c->mode;\n        c->mode = sModeInfo.newMode;\n\n        // Clear movement flags that would affect the transition\n        gCameraMovementFlags &= (u16)~(CAM_MOVE_RESTRICT | CAM_MOVE_ROTATE);\n        if (!(sStatusFlags & CAM_FLAG_FRAME_AFTER_CAM_INIT)) {\n            transition_next_state(c, numFrames);\n            sCUpCameraPitch = 0;\n            sModeOffsetYaw = 0;\n            sLakituDist = 0;\n            sLakituPitch = 0;\n            sAreaYawChange = 0;\n            sPanDistance = 0.f;\n            sCannonYOffset = 0.f;\n        }\n    }\n}\n\n/**\n * Used to change the camera mode between its default/previous and certain Mario-oriented modes,\n *      namely: C_UP, WATER_SURFACE, CLOSE, and BEHIND_MARIO\n *\n * Stores the current pos and focus in sModeInfo->transitionStart, and\n * stores the next pos and focus into sModeInfo->transitionEnd. These two fields are used in\n * move_into_c_up().\n *\n * @param mode the mode to change to, or -1 to switch to the previous mode\n * @param frames number of frames the transition should last, only used when entering C_UP\n */\nvoid set_camera_mode(struct Camera *c, s16 mode, s16 frames) {\n    struct LinearTransitionPoint *start = &sModeInfo.transitionStart;\n    struct LinearTransitionPoint *end = &sModeInfo.transitionEnd;\n\n    if (mode == CAMERA_MODE_WATER_SURFACE && gCurrLevelArea == AREA_TTM_OUTSIDE) {\n    } else {\n        // Clear movement flags that would affect the transition\n        gCameraMovementFlags &= (u16)~(CAM_MOVE_RESTRICT | CAM_MOVE_ROTATE);\n        gCameraMovementFlags |= CAM_MOVING_INTO_MODE;\n        if (mode == CAMERA_MODE_NONE) {\n            mode = CAMERA_MODE_CLOSE;\n        }\n        sCUpCameraPitch = 0;\n        sModeOffsetYaw = 0;\n        sLakituDist = 0;\n        sLakituPitch = 0;\n        sAreaYawChange = 0;\n\n        sModeInfo.newMode = (mode != -1) ? mode : sModeInfo.lastMode;\n        sModeInfo.lastMode = c->mode;\n        sModeInfo.max = frames;\n        sModeInfo.frame = 1;\n\n        c->mode = sModeInfo.newMode;\n        gLakituState.mode = c->mode;\n\n        vec3f_copy(end->focus, c->focus);\n        vec3f_sub(end->focus, sMarioCamState->pos);\n\n        vec3f_copy(end->pos, c->pos);\n        vec3f_sub(end->pos, sMarioCamState->pos);\n\n        sAreaYaw = sModeTransitions[sModeInfo.newMode](c, end->focus, end->pos);\n\n        // End was updated by sModeTransitions\n        vec3f_sub(end->focus, sMarioCamState->pos);\n        vec3f_sub(end->pos, sMarioCamState->pos);\n\n        vec3f_copy(start->focus, gLakituState.curFocus);\n        vec3f_sub(start->focus, sMarioCamState->pos);\n\n        vec3f_copy(start->pos, gLakituState.curPos);\n        vec3f_sub(start->pos, sMarioCamState->pos);\n\n        vec3f_get_dist_and_angle(start->focus, start->pos, &start->dist, &start->pitch, &start->yaw);\n        vec3f_get_dist_and_angle(end->focus, end->pos, &end->dist, &end->pitch, &end->yaw);\n    }\n}\n\n/**\n * Updates Lakitu's position/focus and applies camera shakes.\n */\nvoid update_lakitu(struct Camera *c) {\n    struct Surface *floor = NULL;\n    Vec3f newPos;\n    Vec3f newFoc;\n    UNUSED u8 filler1[12];\n    f32 distToFloor;\n    s16 newYaw;\n    UNUSED u8 filler2[8];\n\n    if (gCameraMovementFlags & CAM_MOVE_PAUSE_SCREEN) {\n    } else {\n        if (c->cutscene) {\n        }\n        if (TRUE) {\n            newYaw = next_lakitu_state(newPos, newFoc, c->pos, c->focus, sOldPosition, sOldFocus,\n                                       c->nextYaw);\n            set_or_approach_s16_symmetric(&c->yaw, newYaw, sYawSpeed);\n            sStatusFlags &= ~CAM_FLAG_UNUSED_CUTSCENE_ACTIVE;\n        } else {\n            //! dead code, moved to next_lakitu_state()\n            vec3f_copy(newPos, c->pos);\n            vec3f_copy(newFoc, c->focus);\n        }\n\n        // Update old state\n        vec3f_copy(sOldPosition, newPos);\n        vec3f_copy(sOldFocus, newFoc);\n\n        gLakituState.yaw = c->yaw;\n        gLakituState.nextYaw = c->nextYaw;\n        vec3f_copy(gLakituState.goalPos, c->pos);\n        vec3f_copy(gLakituState.goalFocus, c->focus);\n\n        // Simulate Lakitu flying to the new position and turning towards the new focus\n        set_or_approach_vec3f_asymptotic(gLakituState.curPos, newPos,\n                                         gLakituState.posHSpeed, gLakituState.posVSpeed,\n                                         gLakituState.posHSpeed);\n        set_or_approach_vec3f_asymptotic(gLakituState.curFocus, newFoc,\n                                         gLakituState.focHSpeed, gLakituState.focVSpeed,\n                                         gLakituState.focHSpeed);\n        // Adjust Lakitu's speed back to normal\n        set_or_approach_f32_asymptotic(&gLakituState.focHSpeed, 0.8f, 0.05f);\n        set_or_approach_f32_asymptotic(&gLakituState.focVSpeed, 0.3f, 0.05f);\n        set_or_approach_f32_asymptotic(&gLakituState.posHSpeed, 0.3f, 0.05f);\n        set_or_approach_f32_asymptotic(&gLakituState.posVSpeed, 0.3f, 0.05f);\n\n        // Turn on smooth movement when it hasn't been blocked for 2 frames\n        if (sStatusFlags & CAM_FLAG_BLOCK_SMOOTH_MOVEMENT) {\n            sStatusFlags &= ~CAM_FLAG_BLOCK_SMOOTH_MOVEMENT;\n        } else {\n            sStatusFlags |= CAM_FLAG_SMOOTH_MOVEMENT;\n        }\n\n        vec3f_copy(gLakituState.pos, gLakituState.curPos);\n        vec3f_copy(gLakituState.focus, gLakituState.curFocus);\n\n        if (c->cutscene) {\n            vec3f_add(gLakituState.focus, sPlayer2FocusOffset);\n            vec3f_set(sPlayer2FocusOffset, 0, 0, 0);\n        }\n\n        vec3f_get_dist_and_angle(gLakituState.pos, gLakituState.focus, &gLakituState.focusDistance,\n                                 &gLakituState.oldPitch, &gLakituState.oldYaw);\n\n        gLakituState.roll = 0;\n\n        // Apply camera shakes\n        shake_camera_pitch(gLakituState.pos, gLakituState.focus);\n        shake_camera_yaw(gLakituState.pos, gLakituState.focus);\n        shake_camera_roll(&gLakituState.roll);\n        shake_camera_handheld(gLakituState.pos, gLakituState.focus);\n\n        if (sMarioCamState->action == ACT_DIVE && gLakituState.lastFrameAction != ACT_DIVE) {\n            set_camera_shake_from_hit(SHAKE_HIT_FROM_BELOW);\n        }\n\n        gLakituState.roll += sHandheldShakeRoll;\n        gLakituState.roll += gLakituState.keyDanceRoll;\n\n        if (c->mode != CAMERA_MODE_C_UP && c->cutscene == 0) {\n            gCheckingSurfaceCollisionsForCamera = TRUE;\n            distToFloor = find_floor(gLakituState.pos[0],\n                                     gLakituState.pos[1] + 20.0f,\n                                     gLakituState.pos[2], &floor);\n            if (distToFloor != FLOOR_LOWER_LIMIT) {\n                if (gLakituState.pos[1] < (distToFloor += 100.0f)) {\n                    gLakituState.pos[1] = distToFloor;\n                } else {\n                    gCheckingSurfaceCollisionsForCamera = FALSE;\n                }\n            }\n        }\n\n        vec3f_copy(sModeTransition.marioPos, sMarioCamState->pos);\n    }\n    clamp_pitch(gLakituState.pos, gLakituState.focus, 0x3E00, -0x3E00);\n    gLakituState.mode = c->mode;\n    gLakituState.defMode = c->defMode;\n}\n\n\n/**\n * The main camera update function.\n * Gets controller input, checks for cutscenes, handles mode changes, and moves the camera\n */\nvoid update_camera(struct Camera *c) {\n    UNUSED u8 filler[24];\n\n    gCamera = c;\n    update_camera_hud_status(c);\n    if (c->cutscene == 0) {\n        // Only process R_TRIG if 'fixed' is not selected in the menu\n        if (cam_select_alt_mode(0) == CAM_SELECTION_MARIO) {\n            if (gPlayer1Controller->buttonPressed & R_TRIG) {\n                if (set_cam_angle(0) == CAM_ANGLE_LAKITU) {\n                    set_cam_angle(CAM_ANGLE_MARIO);\n                } else {\n                    set_cam_angle(CAM_ANGLE_LAKITU);\n                }\n            }\n        }\n        play_sound_if_cam_switched_to_lakitu_or_mario();\n    }\n\n    // Initialize the camera\n    sStatusFlags &= ~CAM_FLAG_FRAME_AFTER_CAM_INIT;\n    if (gCameraMovementFlags & CAM_MOVE_INIT_CAMERA) {\n        init_camera(c);\n        gCameraMovementFlags &= ~CAM_MOVE_INIT_CAMERA;\n        sStatusFlags |= CAM_FLAG_FRAME_AFTER_CAM_INIT;\n    }\n\n    // Store previous geometry information\n    sMarioGeometry.prevFloorHeight = sMarioGeometry.currFloorHeight;\n    sMarioGeometry.prevCeilHeight = sMarioGeometry.currCeilHeight;\n    sMarioGeometry.prevFloor = sMarioGeometry.currFloor;\n    sMarioGeometry.prevCeil = sMarioGeometry.currCeil;\n    sMarioGeometry.prevFloorType = sMarioGeometry.currFloorType;\n    sMarioGeometry.prevCeilType = sMarioGeometry.currCeilType;\n\n    find_mario_floor_and_ceil(&sMarioGeometry);\n    gCheckingSurfaceCollisionsForCamera = TRUE;\n    vec3f_copy(c->pos, gLakituState.goalPos);\n    vec3f_copy(c->focus, gLakituState.goalFocus);\n\n    c->yaw = gLakituState.yaw;\n    c->nextYaw = gLakituState.nextYaw;\n    c->mode = gLakituState.mode;\n    c->defMode = gLakituState.defMode;\n\n    camera_course_processing(c);\n    stub_camera_3(c);\n    sCButtonsPressed = find_c_buttons_pressed(sCButtonsPressed, gPlayer1Controller->buttonPressed,\n                                              gPlayer1Controller->buttonDown);\n\n    if (c->cutscene != 0) {\n        sYawSpeed = 0;\n        play_cutscene(c);\n        sFramesSinceCutsceneEnded = 0;\n    } else {\n        // Clear the recent cutscene after 8 frames\n        if (gRecentCutscene != 0 && sFramesSinceCutsceneEnded < 8) {\n            sFramesSinceCutsceneEnded++;\n            if (sFramesSinceCutsceneEnded >= 8) {\n                gRecentCutscene = 0;\n                sFramesSinceCutsceneEnded = 0;\n            }\n        }\n    }\n    // If not in a cutscene, do mode processing\n    if (c->cutscene == 0) {\n        sYawSpeed = 0x400;\n\n        if (sSelectionFlags & CAM_MODE_MARIO_ACTIVE) {\n            switch (c->mode) {\n                case CAMERA_MODE_BEHIND_MARIO:\n                    mode_behind_mario_camera(c);\n                    break;\n\n                case CAMERA_MODE_C_UP:\n                    mode_c_up_camera(c);\n                    break;\n\n                case CAMERA_MODE_WATER_SURFACE:\n                    mode_water_surface_camera(c);\n                    break;\n\n                case CAMERA_MODE_INSIDE_CANNON:\n                    mode_cannon_camera(c);\n                    break;\n\n                default:\n                    mode_mario_camera(c);\n            }\n        } else {\n            switch (c->mode) {\n                case CAMERA_MODE_BEHIND_MARIO:\n                    mode_behind_mario_camera(c);\n                    break;\n\n                case CAMERA_MODE_C_UP:\n                    mode_c_up_camera(c);\n                    break;\n\n                case CAMERA_MODE_WATER_SURFACE:\n                    mode_water_surface_camera(c);\n                    break;\n\n                case CAMERA_MODE_INSIDE_CANNON:\n                    mode_cannon_camera(c);\n                    break;\n\n                case CAMERA_MODE_8_DIRECTIONS:\n                    mode_8_directions_camera(c);\n                    break;\n\n                case CAMERA_MODE_RADIAL:\n                    mode_radial_camera(c);\n                    break;\n\n                case CAMERA_MODE_OUTWARD_RADIAL:\n                    mode_outward_radial_camera(c);\n                    break;\n\n                case CAMERA_MODE_CLOSE:\n                    mode_lakitu_camera(c);\n                    break;\n\n                case CAMERA_MODE_FREE_ROAM:\n                    mode_lakitu_camera(c);\n                    break;\n                case CAMERA_MODE_BOSS_FIGHT:\n                    mode_boss_fight_camera(c);\n                    break;\n\n                case CAMERA_MODE_PARALLEL_TRACKING:\n                    mode_parallel_tracking_camera(c);\n                    break;\n\n                case CAMERA_MODE_SLIDE_HOOT:\n                    mode_slide_camera(c);\n                    break;\n\n                case CAMERA_MODE_FIXED:\n                    mode_fixed_camera(c);\n                    break;\n\n                case CAMERA_MODE_SPIRAL_STAIRS:\n                    mode_spiral_stairs_camera(c);\n                    break;\n            }\n        }\n    }\n    // Start any Mario-related cutscenes\n    start_cutscene(c, get_cutscene_from_mario_status(c));\n    stub_camera_2(c);\n    gCheckingSurfaceCollisionsForCamera = FALSE;\n    if (gCurrLevelNum != LEVEL_CASTLE) {\n        // If fixed camera is selected as the alternate mode, then fix the camera as long as the right\n        // trigger is held\n        if ((c->cutscene == 0 &&\n            (gPlayer1Controller->buttonDown & R_TRIG) && cam_select_alt_mode(0) == CAM_SELECTION_FIXED)\n            || (gCameraMovementFlags & CAM_MOVE_FIX_IN_PLACE)\n            || (sMarioCamState->action) == ACT_GETTING_BLOWN) {\n\n            // If this is the first frame that R_TRIG is held, play the \"click\" sound\n            if (c->cutscene == 0 && (gPlayer1Controller->buttonPressed & R_TRIG)\n                && cam_select_alt_mode(0) == CAM_SELECTION_FIXED) {\n                sCameraSoundFlags |= CAM_SOUND_FIXED_ACTIVE;\n                play_sound_rbutton_changed();\n            }\n\n            // Fixed mode only prevents Lakitu from moving. The camera pos still updates, so\n            // Lakitu will fly to his next position as normal whenever R_TRIG is released.\n            gLakituState.posHSpeed = 0.f;\n            gLakituState.posVSpeed = 0.f;\n\n            c->nextYaw = calculate_yaw(gLakituState.focus, gLakituState.pos);\n            c->yaw = c->nextYaw;\n            gCameraMovementFlags &= ~CAM_MOVE_FIX_IN_PLACE;\n        } else {\n            // Play the \"click\" sound when fixed mode is released\n            if (sCameraSoundFlags & CAM_SOUND_FIXED_ACTIVE) {\n                play_sound_rbutton_changed();\n                sCameraSoundFlags &= ~CAM_SOUND_FIXED_ACTIVE;\n            }\n        }\n    } else {\n        if ((gPlayer1Controller->buttonPressed & R_TRIG) && cam_select_alt_mode(0) == CAM_SELECTION_FIXED) {\n            play_sound_button_change_blocked();\n        }\n    }\n\n    update_lakitu(c);\n\n    gLakituState.lastFrameAction = sMarioCamState->action;\n}\n\n/**\n * Reset all the camera variables to their arcane defaults\n */\nvoid reset_camera(struct Camera *c) {\n    UNUSED s32 unused = 0;\n    UNUSED u8 filler[16];\n    UNUSED struct LinearTransitionPoint *start = &sModeInfo.transitionStart;\n    UNUSED struct LinearTransitionPoint *end = &sModeInfo.transitionEnd;\n\n    gCamera = c;\n    gCameraMovementFlags = 0;\n    s2ndRotateFlags = 0;\n    sStatusFlags = 0;\n    gCutsceneTimer = 0;\n    sCutsceneShot = 0;\n    gCutsceneObjSpawn = 0;\n    gObjCutsceneDone = FALSE;\n    gCutsceneFocus = NULL;\n    unused8032CFC8 = 0;\n    unused8032CFCC = 0;\n    gSecondCameraFocus = NULL;\n    sCButtonsPressed = 0;\n    vec3f_copy(sModeTransition.marioPos, sMarioCamState->pos);\n    sModeTransition.framesLeft = 0;\n    unused8032CFCC = -1;\n    unused8032CFC8 = -1;\n    gCameraMovementFlags = 0;\n    gCameraMovementFlags |= CAM_MOVE_INIT_CAMERA;\n    unused8033B316 = 0;\n    sStatusFlags = 0;\n    unused8033B31A = 0;\n    sCameraSoundFlags = 0;\n    sCUpCameraPitch = 0;\n    sModeOffsetYaw = 0;\n    sSpiralStairsYawOffset = 0;\n    sLakituDist = 0;\n    sLakituPitch = 0;\n    sAreaYaw = 0;\n    sAreaYawChange = 0.f;\n    sPanDistance = 0.f;\n    sCannonYOffset = 0.f;\n    sZoomAmount = 0.f;\n    sZeroZoomDist = 0.f;\n    sBehindMarioSoundTimer = 0;\n    sCSideButtonYaw = 0;\n    s8DirModeBaseYaw = 0;\n    s8DirModeYawOffset = 0;\n    c->doorStatus = DOOR_DEFAULT;\n    sMarioCamState->headRotation[0] = 0;\n    sMarioCamState->headRotation[1] = 0;\n    sLuigiCamState->headRotation[0] = 0;\n    sLuigiCamState->headRotation[1] = 0;\n    sMarioCamState->cameraEvent = 0;\n    sMarioCamState->usedObj = NULL;\n    gLakituState.shakeMagnitude[0] = 0;\n    gLakituState.shakeMagnitude[1] = 0;\n    gLakituState.shakeMagnitude[2] = 0;\n    gLakituState.unusedVec2[0] = 0;\n    gLakituState.unusedVec2[1] = 0;\n    gLakituState.unusedVec2[2] = 0;\n    gLakituState.unusedVec1[0] = 0.f;\n    gLakituState.unusedVec1[1] = 0.f;\n    gLakituState.unusedVec1[2] = 0.f;\n    gLakituState.lastFrameAction = 0;\n    set_fov_function(CAM_FOV_DEFAULT);\n    sFOVState.fov = 45.f;\n    sFOVState.fovOffset = 0.f;\n    sFOVState.unusedIsSleeping = 0;\n    sFOVState.shakeAmplitude = 0.f;\n    sFOVState.shakePhase = 0;\n    sObjectCutscene = 0;\n    gRecentCutscene = 0;\n    unused8033B30C = 0;\n    unused8033B310 = 0;\n}\n\nvoid init_camera(struct Camera *c) {\n    struct Surface *floor = 0;\n    Vec3f marioOffset;\n    s32 i;\n\n    sCreditsPlayer2Pitch = 0;\n    sCreditsPlayer2Yaw = 0;\n    gPrevLevel = gCurrLevelArea / 16;\n    gCurrLevelArea = gCurrLevelNum * 16 + gCurrentArea->index;\n    sSelectionFlags &= CAM_MODE_MARIO_SELECTED;\n    sFramesPaused = 0;\n    gLakituState.mode = c->mode;\n    gLakituState.defMode = c->defMode;\n    gLakituState.posHSpeed = 0.3f;\n    gLakituState.posVSpeed = 0.3f;\n    gLakituState.focHSpeed = 0.8f;\n    gLakituState.focHSpeed = 0.3f; // @bug set focHSpeed back-to-back\n    gLakituState.roll = 0;\n    gLakituState.keyDanceRoll = 0;\n    gLakituState.unused = 0;\n    sStatusFlags &= ~CAM_FLAG_SMOOTH_MOVEMENT;\n    vec3f_set(sCastleEntranceOffset, 0.f, 0.f, 0.f);\n    vec3f_set(sPlayer2FocusOffset, 0.f, 0.f, 0.f);\n    find_mario_floor_and_ceil(&sMarioGeometry);\n    sMarioGeometry.prevFloorHeight = sMarioGeometry.currFloorHeight;\n    sMarioGeometry.prevCeilHeight = sMarioGeometry.currCeilHeight;\n    sMarioGeometry.prevFloor = sMarioGeometry.currFloor;\n    sMarioGeometry.prevCeil = sMarioGeometry.currCeil;\n    sMarioGeometry.prevFloorType = sMarioGeometry.currFloorType;\n    sMarioGeometry.prevCeilType = sMarioGeometry.currCeilType;\n    for (i = 0; i < 32; i++) {\n        sCurCreditsSplinePos[i].index = -1;\n        sCurCreditsSplineFocus[i].index = -1;\n    }\n    sCutsceneSplineSegment = 0;\n    sCutsceneSplineSegmentProgress = 0.f;\n    unused8033B6E8 = 0;\n    sHandheldShakeInc = 0.f;\n    sHandheldShakeTimer = 0.f;\n    sHandheldShakeMag = 0;\n    for (i = 0; i < 4; i++) {\n        sHandheldShakeSpline[i].index = -1;\n    }\n    sHandheldShakePitch = 0;\n    sHandheldShakeYaw = 0;\n    sHandheldShakeRoll = 0;\n    c->cutscene = 0;\n    marioOffset[0] = 0.f;\n    marioOffset[1] = 125.f;\n    marioOffset[2] = 400.f;\n\n    // Set the camera's starting position or start a cutscene for certain levels\n    switch (gCurrLevelNum) {\n        // Calls the initial cutscene when you enter Bowser battle levels\n        // Note: This replaced an \"old\" way to call these cutscenes using\n        // a camEvent value: CAM_EVENT_BOWSER_INIT\n        case LEVEL_BOWSER_1:\n#ifndef VERSION_JP\n            // Since Bowser 1 has a demo entry, check for it\n            // If it is, then set CamAct to the end to directly activate Bowser\n            // If it isn't, then start cutscene\n            if (gCurrDemoInput == NULL) {\n                start_cutscene(c, CUTSCENE_ENTER_BOWSER_ARENA);\n            } else if (gSecondCameraFocus != NULL) {\n                gSecondCameraFocus->oBowserCamAct = BOWSER_CAM_ACT_END;\n            }\n#else\n            start_cutscene(c, CUTSCENE_ENTER_BOWSER_ARENA);\n#endif\n            break;\n        case LEVEL_BOWSER_2:\n            start_cutscene(c, CUTSCENE_ENTER_BOWSER_ARENA);\n            break;\n        case LEVEL_BOWSER_3:\n            start_cutscene(c, CUTSCENE_ENTER_BOWSER_ARENA);\n            break;\n\n        //! Hardcoded position checks determine which cutscene to play when Mario enters castle grounds.\n        case LEVEL_CASTLE_GROUNDS:\n            if (is_within_100_units_of_mario(-1328.f, 260.f, 4664.f) != 1) {\n                marioOffset[0] = -400.f;\n                marioOffset[2] = -800.f;\n            }\n            if (is_within_100_units_of_mario(-6901.f, 2376.f, -6509.f) == 1) {\n                start_cutscene(c, CUTSCENE_EXIT_WATERFALL);\n            }\n            if (is_within_100_units_of_mario(5408.f, 4500.f, 3637.f) == 1) {\n                start_cutscene(c, CUTSCENE_EXIT_FALL_WMOTR);\n            }\n            gLakituState.mode = CAMERA_MODE_FREE_ROAM;\n            break;\n        case LEVEL_SA:\n            marioOffset[2] = 200.f;\n            break;\n        case LEVEL_CASTLE_COURTYARD:\n            marioOffset[2] = -300.f;\n            break;\n        case LEVEL_LLL:\n            gCameraMovementFlags |= CAM_MOVE_ZOOMED_OUT;\n            break;\n        case LEVEL_CASTLE:\n            marioOffset[2] = 150.f;\n            break;\n        case LEVEL_RR:\n            vec3f_set(sFixedModeBasePosition, -2985.f, 478.f, -5568.f);\n            break;\n    }\n    if (c->mode == CAMERA_MODE_8_DIRECTIONS) {\n        gCameraMovementFlags |= CAM_MOVE_ZOOMED_OUT;\n    }\n    switch (gCurrLevelArea) {\n        case AREA_SSL_EYEROK:\n            vec3f_set(marioOffset, 0.f, 500.f, -100.f);\n            break;\n        case AREA_CCM_SLIDE:\n            marioOffset[2] = -300.f;\n            break;\n        case AREA_THI_WIGGLER:\n            marioOffset[2] = -300.f;\n            break;\n        case AREA_SL_IGLOO:\n            marioOffset[2] = -300.f;\n            break;\n        case AREA_SL_OUTSIDE:\n            if (is_within_100_units_of_mario(257.f, 2150.f, 1399.f) == 1) {\n                marioOffset[2] = -300.f;\n            }\n            break;\n        case AREA_CCM_OUTSIDE:\n            gCameraMovementFlags |= CAM_MOVE_ZOOMED_OUT;\n            break;\n        case AREA_TTM_OUTSIDE:\n            gLakituState.mode = CAMERA_MODE_RADIAL;\n            break;\n    }\n\n    // Set the camera pos to marioOffset (relative to Mario), added to Mario's position\n    offset_rotated(c->pos, sMarioCamState->pos, marioOffset, sMarioCamState->faceAngle);\n    if (c->mode != CAMERA_MODE_BEHIND_MARIO) {\n        c->pos[1] = find_floor(sMarioCamState->pos[0], sMarioCamState->pos[1] + 100.f,\n                               sMarioCamState->pos[2], &floor) + 125.f;\n    }\n    vec3f_copy(c->focus, sMarioCamState->pos);\n    vec3f_copy(gLakituState.curPos, c->pos);\n    vec3f_copy(gLakituState.curFocus, c->focus);\n    vec3f_copy(gLakituState.goalPos, c->pos);\n    vec3f_copy(gLakituState.goalFocus, c->focus);\n    vec3f_copy(gLakituState.pos, c->pos);\n    vec3f_copy(gLakituState.focus, c->focus);\n    if (c->mode == CAMERA_MODE_FIXED) {\n        set_fixed_cam_axis_sa_lobby(c->mode);\n    }\n    store_lakitu_cam_info_for_c_up(c);\n    gLakituState.yaw = calculate_yaw(c->focus, c->pos);\n    gLakituState.nextYaw = gLakituState.yaw;\n    c->yaw = gLakituState.yaw;\n    c->nextYaw = gLakituState.yaw;\n}\n\n/**\n * Zooms out the camera if paused and the level is 'outside', as determined by sZoomOutAreaMasks.\n *\n * Because gCurrLevelArea is assigned gCurrLevelNum * 16 + gCurrentArea->index,\n * dividing by 32 maps 2 levels to one index.\n *\n * areaBit definition:\n * (gCurrLevelArea & 0x10) / 4):\n *      This adds 4 to the shift if the level is an odd multiple of 16\n *\n * ((gCurrLevelArea & 0xF) - 1) & 3):\n *      This isolates the lower 16 'area' bits, subtracts 1 because areas are 1-indexed, and effectively\n *      modulo-4's the result, because each 8-bit mask only has 4 area bits for each level\n */\nvoid zoom_out_if_paused_and_outside(struct GraphNodeCamera *camera) {\n    UNUSED u8 filler1[8];\n    UNUSED f32 dist;\n    UNUSED s16 pitch;\n    s16 yaw;\n    UNUSED u8 filler2[4];\n    s32 areaMaskIndex = gCurrLevelArea / 32;\n    s32 areaBit = 1 << (((gCurrLevelArea & 0x10) / 4) + (((gCurrLevelArea & 0xF) - 1) & 3));\n\n    if (areaMaskIndex >= LEVEL_MAX / 2) {\n        areaMaskIndex = 0;\n        areaBit = 0;\n    }\n    if (gCameraMovementFlags & CAM_MOVE_PAUSE_SCREEN) {\n        if (sFramesPaused >= 2) {\n            if (sZoomOutAreaMasks[areaMaskIndex] & areaBit) {\n\n                camera->focus[0] = gCamera->areaCenX;\n                camera->focus[1] = (sMarioCamState->pos[1] + gCamera->areaCenY) / 2;\n                camera->focus[2] = gCamera->areaCenZ;\n                vec3f_get_dist_and_angle(camera->focus, sMarioCamState->pos, &dist, &pitch, &yaw);\n                vec3f_set_dist_and_angle(sMarioCamState->pos, camera->pos, 6000.f, 0x1000, yaw);\n                if (gCurrLevelNum != LEVEL_THI) {\n                    find_in_bounds_yaw_wdw_bob_thi(camera->pos, camera->focus, 0);\n                }\n            }\n        } else {\n            sFramesPaused++;\n        }\n    } else {\n        sFramesPaused = 0;\n    }\n}\n\nvoid select_mario_cam_mode(void) {\n    sSelectionFlags = CAM_MODE_MARIO_SELECTED;\n}\n\n/**\n * Allocate the GraphNodeCamera's config.camera, and copy `c`'s focus to the Camera's area center point.\n */\nvoid create_camera(struct GraphNodeCamera *gc, struct AllocOnlyPool *pool) {\n    s16 mode = gc->config.mode;\n    struct Camera *c = alloc_only_pool_alloc(pool, sizeof(struct Camera));\n\n    gc->config.camera = c;\n    c->mode = mode;\n    c->defMode = mode;\n    c->cutscene = 0;\n    c->doorStatus = DOOR_DEFAULT;\n    c->areaCenX = gc->focus[0];\n    c->areaCenY = gc->focus[1];\n    c->areaCenZ = gc->focus[2];\n    c->yaw = 0;\n    vec3f_copy(c->pos, gc->pos);\n    vec3f_copy(c->focus, gc->focus);\n}\n\n/**\n * Copy Lakitu's pos and foc into `gc`\n */\nvoid update_graph_node_camera(struct GraphNodeCamera *gc) {\n    UNUSED u8 filler[8];\n    UNUSED struct Camera *c = gc->config.camera;\n\n    gc->rollScreen = gLakituState.roll;\n    vec3f_copy(gc->pos, gLakituState.pos);\n    vec3f_copy(gc->focus, gLakituState.focus);\n    zoom_out_if_paused_and_outside(gc);\n}\n\nGfx *geo_camera_main(s32 callContext, struct GraphNode *g, void *context) {\n    struct GraphNodeCamera *gc = (struct GraphNodeCamera *) g;\n    UNUSED Mat4 *unusedMat = context;\n\n    switch (callContext) {\n        case GEO_CONTEXT_CREATE:\n            create_camera(gc, context);\n            break;\n        case GEO_CONTEXT_RENDER:\n            update_graph_node_camera(gc);\n            break;\n    }\n    return NULL;\n}\n\nvoid stub_camera_2(UNUSED struct Camera *c) {\n}\n\nvoid stub_camera_3(UNUSED struct Camera *c) {\n}\n\nvoid vec3f_sub(Vec3f dst, Vec3f src) {\n    dst[0] -= src[0];\n    dst[1] -= src[1];\n    dst[2] -= src[2];\n}\n\nvoid object_pos_to_vec3f(Vec3f dst, struct Object *o) {\n    dst[0] = o->oPosX;\n    dst[1] = o->oPosY;\n    dst[2] = o->oPosZ;\n}\n\nvoid vec3f_to_object_pos(struct Object *o, Vec3f src) {\n    o->oPosX = src[0];\n    o->oPosY = src[1];\n    o->oPosZ = src[2];\n}\n\nvoid unused_object_angle_to_vec3s(Vec3s dst, struct Object *o) {\n    dst[0] = o->oMoveAnglePitch;\n    dst[1] = o->oMoveAngleYaw;\n    dst[2] = o->oMoveAngleRoll;\n}\n\n/**\n * Produces values using a cubic b-spline curve. Basically Q is the used output,\n * u is a value between 0 and 1 that represents the position along the spline,\n * and a0-a3 are parameters that define the spline.\n *\n * The spline is described at http://www2.cs.uregina.ca/~anima/UniformBSpline.htm\n */\nvoid evaluate_cubic_spline(f32 u, Vec3f Q, Vec3f a0, Vec3f a1, Vec3f a2, Vec3f a3) {\n    f32 B[4];\n    f32 x;\n    f32 y;\n    f32 z;\n    UNUSED u8 filler[16];\n\n    if (u > 1.f) {\n        u = 1.f;\n    }\n\n    B[0] = (1.f - u) * (1.f - u) * (1.f - u) / 6.f;\n    B[1] = u * u * u / 2.f - u * u + 0.6666667f;\n    B[2] = -u * u * u / 2.f + u * u / 2.f + u / 2.f + 0.16666667f;\n    B[3] = u * u * u / 6.f;\n\n    Q[0] = B[0] * a0[0] + B[1] * a1[0] + B[2] * a2[0] + B[3] * a3[0];\n    Q[1] = B[0] * a0[1] + B[1] * a1[1] + B[2] * a2[1] + B[3] * a3[1];\n    Q[2] = B[0] * a0[2] + B[1] * a1[2] + B[2] * a2[2] + B[3] * a3[2];\n\n    // Unused code\n    B[0] = -0.5f * u * u + u - 0.33333333f;\n    B[1] = 1.5f * u * u - 2.f * u - 0.5f;\n    B[2] = -1.5f * u * u + u + 1.f;\n    B[3] = 0.5f * u * u - 0.16666667f;\n\n    x = B[0] * a0[0] + B[1] * a1[0] + B[2] * a2[0] + B[3] * a3[0];\n    y = B[0] * a0[1] + B[1] * a1[1] + B[2] * a2[1] + B[3] * a3[1];\n    z = B[0] * a0[2] + B[1] * a1[2] + B[2] * a2[2] + B[3] * a3[2];\n\n    unusedSplinePitch = atan2s(sqrtf(x * x + z * z), y);\n    unusedSplineYaw = atan2s(z, x);\n}\n\n/**\n * Computes the point that is `progress` percent of the way through segment `splineSegment` of `spline`,\n * and stores the result in `p`. `progress` and `splineSegment` are updated if `progress` becomes >= 1.0.\n *\n * When neither of the next two points' speeds == 0, the number of frames is between 1 and 255. Otherwise\n * it's infinite.\n *\n * To calculate the number of frames it will take to progress through a spline segment:\n * If the next two speeds are the same and nonzero, it's 1.0 / firstSpeed.\n *\n * s1 and s2 are short hand for first/secondSpeed. The progress at any frame n is defined by a recurrency relation:\n *      p(n+1) = (s2 - s1 + 1) * p(n) + s1\n * Which can be written as\n *      p(n) = (s2 * ((s2 - s1 + 1)^(n) - 1)) / (s2 - s1)\n *\n * Solving for the number of frames:\n *      n = log(((s2 - s1) / s1) + 1) / log(s2 - s1 + 1)\n *\n * @return 1 if the point has reached the end of the spline, when `progress` reaches 1.0 or greater, and\n * the 4th CutsceneSplinePoint in the current segment away from spline[splineSegment] has an index of -1.\n */\ns32 move_point_along_spline(Vec3f p, struct CutsceneSplinePoint spline[], s16 *splineSegment, f32 *progress) {\n    s32 finished = 0;\n    Vec3f controlPoints[4];\n    s32 i = 0;\n    f32 u = *progress;\n    f32 progressChange;\n    f32 firstSpeed = 0;\n    f32 secondSpeed = 0;\n    s32 segment = *splineSegment;\n\n    if (*splineSegment < 0) {\n        segment = 0;\n        u = 0;\n    }\n    if (spline[segment].index == -1 || spline[segment + 1].index == -1 || spline[segment + 2].index == -1) {\n        return 1;\n    }\n\n    for (i = 0; i < 4; i++) {\n        controlPoints[i][0] = spline[segment + i].point[0];\n        controlPoints[i][1] = spline[segment + i].point[1];\n        controlPoints[i][2] = spline[segment + i].point[2];\n    }\n    evaluate_cubic_spline(u, p, controlPoints[0], controlPoints[1], controlPoints[2], controlPoints[3]);\n\n    if (spline[*splineSegment + 1].speed != 0) {\n        firstSpeed = 1.0f / spline[*splineSegment + 1].speed;\n    }\n    if (spline[*splineSegment + 2].speed != 0) {\n        secondSpeed = 1.0f / spline[*splineSegment + 2].speed;\n    }\n    progressChange = (secondSpeed - firstSpeed) * *progress + firstSpeed;\n\n#ifdef VERSION_EU\n    if (gCamera->cutscene == CUTSCENE_INTRO_PEACH) {\n        progressChange += progressChange * 0.19f;\n    }\n    if (gCamera->cutscene == CUTSCENE_CREDITS) {\n        progressChange += progressChange * 0.15f;\n    }\n    if (gCamera->cutscene == CUTSCENE_ENDING) {\n        progressChange += progressChange * 0.1f;\n    }\n#endif\n\n    if (1 <= (*progress += progressChange)) {\n        (*splineSegment)++;\n        if (spline[*splineSegment + 3].index == -1) {\n            *splineSegment = 0;\n            finished = 1;\n        }\n        (*progress)--;\n    }\n    return finished;\n}\n\n/**\n * If `selection` is 0, just get the current selection\n * If `selection` is 1, select 'Mario' as the alt mode.\n * If `selection` is 2, select 'fixed' as the alt mode.\n *\n * @return the current selection\n */\ns32 cam_select_alt_mode(s32 selection) {\n    s32 mode = CAM_SELECTION_FIXED;\n\n    if (selection == CAM_SELECTION_MARIO) {\n        if (!(sSelectionFlags & CAM_MODE_MARIO_SELECTED)) {\n            sSelectionFlags |= CAM_MODE_MARIO_SELECTED;\n        }\n        sCameraSoundFlags |= CAM_SOUND_UNUSED_SELECT_MARIO;\n    }\n\n    // The alternate mode is up-close, but the player just selected fixed in the pause menu\n    if (selection == CAM_SELECTION_FIXED && (sSelectionFlags & CAM_MODE_MARIO_SELECTED)) {\n        // So change to normal mode in case the user paused in up-close mode\n        set_cam_angle(CAM_ANGLE_LAKITU);\n        sSelectionFlags &= ~CAM_MODE_MARIO_SELECTED;\n        sCameraSoundFlags |= CAM_SOUND_UNUSED_SELECT_FIXED;\n    }\n\n    if (sSelectionFlags & CAM_MODE_MARIO_SELECTED) {\n        mode = CAM_SELECTION_MARIO;\n    }\n    return mode;\n}\n\n/**\n * Sets the camera angle to either Lakitu or Mario mode. Returns the current mode.\n *\n * If `mode` is 0, just returns the current mode.\n * If `mode` is 1, start Mario mode\n * If `mode` is 2, start Lakitu mode\n */\ns32 set_cam_angle(s32 mode) {\n    s32 curMode = CAM_ANGLE_LAKITU;\n\n    // Switch to Mario mode\n    if (mode == CAM_ANGLE_MARIO && !(sSelectionFlags & CAM_MODE_MARIO_ACTIVE)) {\n        sSelectionFlags |= CAM_MODE_MARIO_ACTIVE;\n        if (gCameraMovementFlags & CAM_MOVE_ZOOMED_OUT) {\n            sSelectionFlags |= CAM_MODE_LAKITU_WAS_ZOOMED_OUT;\n            gCameraMovementFlags &= ~CAM_MOVE_ZOOMED_OUT;\n        }\n        sCameraSoundFlags |= CAM_SOUND_MARIO_ACTIVE;\n    }\n\n    // Switch back to normal mode\n    if (mode == CAM_ANGLE_LAKITU && (sSelectionFlags & CAM_MODE_MARIO_ACTIVE)) {\n        sSelectionFlags &= ~CAM_MODE_MARIO_ACTIVE;\n        if (sSelectionFlags & CAM_MODE_LAKITU_WAS_ZOOMED_OUT) {\n            sSelectionFlags &= ~CAM_MODE_LAKITU_WAS_ZOOMED_OUT;\n            gCameraMovementFlags |= CAM_MOVE_ZOOMED_OUT;\n        } else {\n            gCameraMovementFlags &= ~CAM_MOVE_ZOOMED_OUT;\n        }\n        sCameraSoundFlags |= CAM_SOUND_NORMAL_ACTIVE;\n    }\n    if (sSelectionFlags & CAM_MODE_MARIO_ACTIVE) {\n        curMode = CAM_ANGLE_MARIO;\n    }\n    return curMode;\n}\n\n/**\n * Enables the handheld shake effect for this frame.\n *\n * @see shake_camera_handheld()\n */\nvoid set_handheld_shake(u8 mode) {\n    switch (mode) {\n        // They're not in numerical order because that would be too simple...\n        case HAND_CAM_SHAKE_CUTSCENE: // Lowest increment\n            sHandheldShakeMag = 0x600;\n            sHandheldShakeInc = 0.04f;\n            break;\n        case HAND_CAM_SHAKE_LOW: // Lowest magnitude\n            sHandheldShakeMag = 0x300;\n            sHandheldShakeInc = 0.06f;\n            break;\n        case HAND_CAM_SHAKE_HIGH: // Highest mag and inc\n            sHandheldShakeMag = 0x1000;\n            sHandheldShakeInc = 0.1f;\n            break;\n        case HAND_CAM_SHAKE_UNUSED: // Never used\n            sHandheldShakeMag = 0x600;\n            sHandheldShakeInc = 0.07f;\n            break;\n        case HAND_CAM_SHAKE_HANG_OWL: // exactly the same as UNUSED...\n            sHandheldShakeMag = 0x600;\n            sHandheldShakeInc = 0.07f;\n            break;\n        case HAND_CAM_SHAKE_STAR_DANCE: // Slightly steadier than HANG_OWL and UNUSED\n            sHandheldShakeMag = 0x400;\n            sHandheldShakeInc = 0.07f;\n            break;\n        default:\n            sHandheldShakeMag = 0x0;\n            sHandheldShakeInc = 0.f;\n    }\n}\n\n/**\n * When sHandheldShakeMag is nonzero, this function adds small random offsets to `focus` every time\n * sHandheldShakeTimer increases above 1.0, simulating the camera shake caused by unsteady hands.\n *\n * This function must be called every frame in order to actually apply the effect, since the effect's\n * mag and inc are set to 0 every frame at the end of this function.\n */\nvoid shake_camera_handheld(Vec3f pos, Vec3f focus) {\n    s32 i;\n    Vec3f shakeOffset;\n    Vec3f shakeSpline[4];\n    f32 dist;\n    s16 pitch;\n    s16 yaw;\n    UNUSED u8 filler[8];\n\n    if (sHandheldShakeMag == 0) {\n        vec3f_set(shakeOffset, 0.f, 0.f, 0.f);\n    } else {\n        for (i = 0; i < 4; i++) {\n            shakeSpline[i][0] = sHandheldShakeSpline[i].point[0];\n            shakeSpline[i][1] = sHandheldShakeSpline[i].point[1];\n            shakeSpline[i][2] = sHandheldShakeSpline[i].point[2];\n        }\n        evaluate_cubic_spline(sHandheldShakeTimer, shakeOffset, shakeSpline[0],\n                              shakeSpline[1], shakeSpline[2], shakeSpline[3]);\n        if (1.f <= (sHandheldShakeTimer += sHandheldShakeInc)) {\n            // The first 3 control points are always (0,0,0), so the random spline is always just a\n            // straight line\n            for (i = 0; i < 3; i++) {\n                vec3s_copy(sHandheldShakeSpline[i].point, sHandheldShakeSpline[i + 1].point);\n            }\n            random_vec3s(sHandheldShakeSpline[3].point, sHandheldShakeMag, sHandheldShakeMag, sHandheldShakeMag / 2);\n            sHandheldShakeTimer -= 1.f;\n\n            // Code dead, this is set to be 0 before it is used.\n            sHandheldShakeInc = random_float() * 0.5f;\n            if (sHandheldShakeInc < 0.02f) {\n                sHandheldShakeInc = 0.02f;\n            }\n        }\n    }\n\n    approach_s16_asymptotic_bool(&sHandheldShakePitch, shakeOffset[0], 0x08);\n    approach_s16_asymptotic_bool(&sHandheldShakeYaw, shakeOffset[1], 0x08);\n    approach_s16_asymptotic_bool(&sHandheldShakeRoll, shakeOffset[2], 0x08);\n\n    if (sHandheldShakePitch | sHandheldShakeYaw) {\n        vec3f_get_dist_and_angle(pos, focus, &dist, &pitch, &yaw);\n        pitch += sHandheldShakePitch;\n        yaw += sHandheldShakeYaw;\n        vec3f_set_dist_and_angle(pos, focus, dist, pitch, yaw);\n    }\n\n    // Unless called every frame, the effect will stop after the first time.\n    sHandheldShakeMag = 0;\n    sHandheldShakeInc = 0.f;\n}\n\n/**\n * Updates C Button input state and stores it in `currentState`\n */\ns32 find_c_buttons_pressed(u16 currentState, u16 buttonsPressed, u16 buttonsDown) {\n    buttonsPressed &= CBUTTON_MASK;\n    buttonsDown &= CBUTTON_MASK;\n\n    if (buttonsPressed & L_CBUTTONS) {\n        currentState |= L_CBUTTONS;\n        currentState &= ~R_CBUTTONS;\n    }\n    if (!(buttonsDown & L_CBUTTONS)) {\n        currentState &= ~L_CBUTTONS;\n    }\n\n    if (buttonsPressed & R_CBUTTONS) {\n        currentState |= R_CBUTTONS;\n        currentState &= ~L_CBUTTONS;\n    }\n    if (!(buttonsDown & R_CBUTTONS)) {\n        currentState &= ~R_CBUTTONS;\n    }\n\n    if (buttonsPressed & U_CBUTTONS) {\n        currentState |= U_CBUTTONS;\n        currentState &= ~D_CBUTTONS;\n    }\n    if (!(buttonsDown & U_CBUTTONS)) {\n        currentState &= ~U_CBUTTONS;\n    }\n\n    if (buttonsPressed & D_CBUTTONS) {\n        currentState |= D_CBUTTONS;\n        currentState &= ~U_CBUTTONS;\n    }\n    if (!(buttonsDown & D_CBUTTONS)) {\n        currentState &= ~D_CBUTTONS;\n    }\n\n    return currentState;\n}\n\n/**\n * Determine which icon to show on the HUD\n */\ns32 update_camera_hud_status(struct Camera *c) {\n    s16 status = CAM_STATUS_NONE;\n\n    if (c->cutscene != 0\n        || ((gPlayer1Controller->buttonDown & R_TRIG) && cam_select_alt_mode(0) == CAM_SELECTION_FIXED)) {\n        status |= CAM_STATUS_FIXED;\n    } else if (set_cam_angle(0) == CAM_ANGLE_MARIO) {\n        status |= CAM_STATUS_MARIO;\n    } else {\n        status |= CAM_STATUS_LAKITU;\n    }\n    if (gCameraMovementFlags & CAM_MOVE_ZOOMED_OUT) {\n        status |= CAM_STATUS_C_DOWN;\n    }\n    if (gCameraMovementFlags & CAM_MOVE_C_UP_MODE) {\n        status |= CAM_STATUS_C_UP;\n    }\n    set_hud_camera_status(status);\n    return status;\n}\n\n/**\n * Check `pos` for collisions within `radius`, and update `pos`\n *\n * @return the number of collisions found\n */\ns32 collide_with_walls(Vec3f pos, f32 offsetY, f32 radius) {\n    struct WallCollisionData collisionData;\n    struct Surface *wall = NULL;\n    f32 normX;\n    f32 normY;\n    f32 normZ;\n    f32 originOffset;\n    f32 offset;\n    f32 offsetAbsolute;\n    Vec3f newPos[4];\n    s32 i;\n    s32 numCollisions = 0;\n\n    collisionData.x = pos[0];\n    collisionData.y = pos[1];\n    collisionData.z = pos[2];\n    collisionData.radius = radius;\n    collisionData.offsetY = offsetY;\n    numCollisions = find_wall_collisions(&collisionData);\n    if (numCollisions != 0) {\n        for (i = 0; i < collisionData.numWalls; i++) {\n            wall = collisionData.walls[collisionData.numWalls - 1];\n            vec3f_copy(newPos[i], pos);\n            normX = wall->normal.x;\n            normY = wall->normal.y;\n            normZ = wall->normal.z;\n            originOffset = wall->originOffset;\n            offset = normX * newPos[i][0] + normY * newPos[i][1] + normZ * newPos[i][2] + originOffset;\n            offsetAbsolute = ABS2(offset);\n            if (offsetAbsolute < radius) {\n                newPos[i][0] += normX * (radius - offset);\n                newPos[i][2] += normZ * (radius - offset);\n                vec3f_copy(pos, newPos[i]);\n            }\n        }\n    }\n    return numCollisions;\n}\n\n/**\n * Compare a vector to a position, return TRUE if they match.\n */\ns32 vec3f_compare(Vec3f pos, f32 posX, f32 posY, f32 posZ) {\n    s32 equal = FALSE;\n\n    if (pos[0] == posX && pos[1] == posY && pos[2] == posZ) {\n        equal = TRUE;\n    }\n    return equal;\n}\n\ns32 clamp_pitch(Vec3f from, Vec3f to, s16 maxPitch, s16 minPitch) {\n    s32 outOfRange = 0;\n    s16 pitch;\n    s16 yaw;\n    f32 dist;\n\n    vec3f_get_dist_and_angle(from, to, &dist, &pitch, &yaw);\n    if (pitch > maxPitch) {\n        pitch = maxPitch;\n        outOfRange++;\n    }\n    if (pitch < minPitch) {\n        pitch = minPitch;\n        outOfRange++;\n    }\n    vec3f_set_dist_and_angle(from, to, dist, pitch, yaw);\n    return outOfRange;\n}\n\ns32 is_within_100_units_of_mario(f32 posX, f32 posY, f32 posZ) {\n    s32 isCloseToMario = 0;\n    Vec3f pos;\n\n    vec3f_set(pos, posX, posY, posZ);\n    if (calc_abs_dist(sMarioCamState->pos, pos) < 100.f) {\n        isCloseToMario = 1;\n    }\n    return isCloseToMario;\n}\n\ns32 set_or_approach_f32_asymptotic(f32 *dst, f32 goal, f32 scale) {\n    if (sStatusFlags & CAM_FLAG_SMOOTH_MOVEMENT) {\n        approach_f32_asymptotic_bool(dst, goal, scale);\n    } else {\n        *dst = goal;\n    }\n    if (*dst == goal) {\n        return FALSE;\n    } else {\n        return TRUE;\n    }\n}\n\n/**\n * Approaches an f32 value by taking the difference between the target and current value\n * and adding a fraction of that to the current value.\n * Edits the current value directly, returns TRUE if the target has been reached, FALSE otherwise.\n */\ns32 approach_f32_asymptotic_bool(f32 *current, f32 target, f32 multiplier) {\n    if (multiplier > 1.f) {\n        multiplier = 1.f;\n    }\n    *current = *current + (target - *current) * multiplier;\n    if (*current == target) {\n        return FALSE;\n    } else {\n        return TRUE;\n    }\n}\n\n/**\n * Nearly the same as the above function, returns new value instead.\n */\nf32 approach_f32_asymptotic(f32 current, f32 target, f32 multiplier) {\n    current = current + (target - current) * multiplier;\n    return current;\n}\n\n/**\n * Approaches an s16 value in the same fashion as approach_f32_asymptotic_bool, returns TRUE if target\n * is reached. Note: Since this function takes integers as parameters, the last argument is the\n * reciprocal of what it would be in the previous two functions.\n */\ns32 approach_s16_asymptotic_bool(s16 *current, s16 target, s16 divisor) {\n    s16 temp = *current;\n\n    if (divisor == 0) {\n        *current = target;\n    } else {\n        temp -= target;\n        temp -= temp / divisor;\n        temp += target;\n        *current = temp;\n    }\n    if (*current == target) {\n        return FALSE;\n    } else {\n        return TRUE;\n    }\n}\n\n/**\n * Approaches an s16 value in the same fashion as approach_f32_asymptotic, returns the new value.\n * Note: last parameter is the reciprocal of what it would be in the f32 functions\n */\ns32 approach_s16_asymptotic(s16 current, s16 target, s16 divisor) {\n    s16 temp = current;\n\n    if (divisor == 0) {\n        current = target;\n    } else {\n        temp -= target;\n        temp -= temp / divisor;\n        temp += target;\n        current = temp;\n    }\n    return current;\n}\n\n/**\n * Applies the approach_f32_asymptotic_bool function to each of the X, Y, & Z components of the given\n * vector.\n */\nvoid approach_vec3f_asymptotic(Vec3f current, Vec3f target, f32 xMul, f32 yMul, f32 zMul) {\n    approach_f32_asymptotic_bool(&current[0], target[0], xMul);\n    approach_f32_asymptotic_bool(&current[1], target[1], yMul);\n    approach_f32_asymptotic_bool(&current[2], target[2], zMul);\n}\n\n/**\n * Applies the set_or_approach_f32_asymptotic_bool function to each of the X, Y, & Z components of the\n * given vector.\n */\nvoid set_or_approach_vec3f_asymptotic(Vec3f dst, Vec3f goal, f32 xMul, f32 yMul, f32 zMul) {\n    set_or_approach_f32_asymptotic(&dst[0], goal[0], xMul);\n    set_or_approach_f32_asymptotic(&dst[1], goal[1], yMul);\n    set_or_approach_f32_asymptotic(&dst[2], goal[2], zMul);\n}\n\n/**\n * Applies the approach_s32_asymptotic function to each of the X, Y, & Z components of the given\n * vector.\n */\nvoid approach_vec3s_asymptotic(Vec3s current, Vec3s target, s16 xMul, s16 yMul, s16 zMul) {\n    approach_s16_asymptotic_bool(&current[0], target[0], xMul);\n    approach_s16_asymptotic_bool(&current[1], target[1], yMul);\n    approach_s16_asymptotic_bool(&current[2], target[2], zMul);\n}\n\ns32 camera_approach_s16_symmetric_bool(s16 *current, s16 target, s16 increment) {\n    s16 dist = target - *current;\n\n    if (increment < 0) {\n        increment = -1 * increment;\n    }\n    if (dist > 0) {\n        dist -= increment;\n        if (dist >= 0) {\n            *current = target - dist;\n        } else {\n            *current = target;\n        }\n    } else {\n        dist += increment;\n        if (dist <= 0) {\n            *current = target - dist;\n        } else {\n            *current = target;\n        }\n    }\n    if (*current == target) {\n        return FALSE;\n    } else {\n        return TRUE;\n    }\n}\n\ns32 camera_approach_s16_symmetric(s16 current, s16 target, s16 increment) {\n    s16 dist = target - current;\n\n    if (increment < 0) {\n        increment = -1 * increment;\n    }\n    if (dist > 0) {\n        dist -= increment;\n        if (dist >= 0) {\n            current = target - dist;\n        } else {\n            current = target;\n        }\n    } else {\n        dist += increment;\n        if (dist <= 0) {\n            current = target - dist;\n        } else {\n            current = target;\n        }\n    }\n    return current;\n}\n\ns32 set_or_approach_s16_symmetric(s16 *current, s16 target, s16 increment) {\n    if (sStatusFlags & CAM_FLAG_SMOOTH_MOVEMENT) {\n        camera_approach_s16_symmetric_bool(current, target, increment);\n    } else {\n        *current = target;\n    }\n    if (*current == target) {\n        return FALSE;\n    } else {\n        return TRUE;\n    }\n}\n\n/**\n * Approaches a value by a given increment, returns FALSE if the target is reached.\n * Appears to be a strange way of implementing approach_f32_symmetric from object_helpers.c.\n * It could possibly be an older version of the function\n */\ns32 camera_approach_f32_symmetric_bool(f32 *current, f32 target, f32 increment) {\n    f32 dist = target - *current;\n\n    if (increment < 0) {\n        increment = -1 * increment;\n    }\n    if (dist > 0) {\n        dist -= increment;\n        if (dist > 0) {\n            *current = target - dist;\n        } else {\n            *current = target;\n        }\n    } else {\n        dist += increment;\n        if (dist < 0) {\n            *current = target - dist;\n        } else {\n            *current = target;\n        }\n    }\n    if (*current == target) {\n        return FALSE;\n    } else {\n        return TRUE;\n    }\n}\n\n/**\n * Nearly the same as the above function, this one returns the new value in place of a bool.\n */\nf32 camera_approach_f32_symmetric(f32 current, f32 target, f32 increment) {\n    f32 dist = target - current;\n\n    if (increment < 0) {\n        increment = -1 * increment;\n    }\n    if (dist > 0) {\n        dist -= increment;\n        if (dist > 0) {\n            current = target - dist;\n        } else {\n            current = target;\n        }\n    } else {\n        dist += increment;\n        if (dist < 0) {\n            current = target - dist;\n        } else {\n            current = target;\n        }\n    }\n    return current;\n}\n\n/**\n * Generate a vector with all three values about zero. The\n * three ranges determine how wide the range about zero.\n */\nvoid random_vec3s(Vec3s dst, s16 xRange, s16 yRange, s16 zRange) {\n    f32 randomFloat;\n    UNUSED u8 filler[4];\n    f32 tempXRange;\n    f32 tempYRange;\n    f32 tempZRange;\n\n    randomFloat = random_float();\n    tempXRange = xRange;\n    dst[0] = randomFloat * tempXRange - tempXRange / 2;\n\n    randomFloat = random_float();\n    tempYRange = yRange;\n    dst[1] = randomFloat * tempYRange - tempYRange / 2;\n\n    randomFloat = random_float();\n    tempZRange = zRange;\n    dst[2] = randomFloat * tempZRange - tempZRange / 2;\n}\n\n/**\n * Decrease value by multiplying it by the distance from (`posX`, `posY`, `posZ`) to\n * the camera divided by `maxDist`\n *\n * @return the reduced value\n */\ns16 reduce_by_dist_from_camera(s16 value, f32 maxDist, f32 posX, f32 posY, f32 posZ) {\n    Vec3f pos;\n    f32 dist;\n    s16 pitch;\n    s16 yaw;\n    s16 goalPitch;\n    s16 goalYaw;\n    s16 result = 0;\n    // Direction from pos to (Lakitu's) goalPos\n    f32 goalDX = gLakituState.goalPos[0] - posX;\n    f32 goalDY = gLakituState.goalPos[1] - posY;\n    f32 goalDZ = gLakituState.goalPos[2] - posZ;\n\n    dist = sqrtf(goalDX * goalDX + goalDY * goalDY + goalDZ * goalDZ);\n    if (maxDist > dist) {\n        pos[0] = posX;\n        pos[1] = posY;\n        pos[2] = posZ;\n        vec3f_get_dist_and_angle(gLakituState.goalPos, pos, &dist, &pitch, &yaw);\n        if (dist < maxDist) {\n            calculate_angles(gLakituState.goalPos, gLakituState.goalFocus, &goalPitch, &goalYaw);\n            //! Must be same line to match on -O2\n            pitch -= goalPitch; yaw -= goalYaw;\n            dist -= 2000.f;\n            if (dist < 0.f) {\n                dist = 0.f;\n            }\n            maxDist -= 2000.f;\n            if (maxDist < 2000.f) {\n                maxDist = 2000.f;\n            }\n            result = value * (1.f - dist / maxDist);\n            if (pitch < -0x1800 || pitch > 0x400 ||\n                yaw   < -0x1800 || yaw >   0x1800) {\n                result /= 2;\n            }\n        }\n    }\n    return result;\n}\n\ns32 clamp_positions_and_find_yaw(Vec3f pos, Vec3f origin, f32 xMax, f32 xMin, f32 zMax, f32 zMin) {\n    s16 yaw = gCamera->nextYaw;\n\n    if (pos[0] >= xMax) {\n        pos[0] = xMax;\n    }\n    if (pos[0] <= xMin) {\n        pos[0] = xMin;\n    }\n    if (pos[2] >= zMax) {\n        pos[2] = zMax;\n    }\n    if (pos[2] <= zMin) {\n        pos[2] = zMin;\n    }\n    yaw = calculate_yaw(origin, pos);\n    return yaw;\n}\n\n/**\n * The yaw passed here is the yaw of the direction FROM Mario TO Lakitu.\n *\n * wallYaw always has 90 degrees added to it before this is called -- it's parallel to the wall.\n *\n * @return the new yaw from Mario to rotate towards.\n *\n * @warning this is jank. It actually returns the yaw that will rotate further INTO the wall. So, the\n *          developers just add 180 degrees to the result.\n */\ns32 calc_avoid_yaw(s16 yawFromMario, s16 wallYaw) {\n    s16 yawDiff;\n    UNUSED u8 filler[34]; // Debug print buffer? ;)\n    UNUSED s32 unused1 = 0;\n    UNUSED s32 unused2 = 0;\n\n    yawDiff = wallYaw - yawFromMario + DEGREES(90);\n\n    if (yawDiff < 0) {\n        // Deflect to the right\n        yawFromMario = wallYaw;\n    } else {\n        // Note: this favors the left side if the wall is exactly perpendicular to the camera.\n        // Deflect to the left\n        yawFromMario = wallYaw + DEGREES(180);\n    }\n    return yawFromMario;\n}\n\n/**\n * Checks if `surf` is within the rect prism defined by xMax, yMax, and zMax\n *\n * @param surf surface to check\n * @param xMax absolute-value max size in x, set to -1 to ignore\n * @param yMax absolute-value max size in y, set to -1 to ignore\n * @param zMax absolute-value max size in z, set to -1 to ignore\n */\ns32 is_surf_within_bounding_box(struct Surface *surf, f32 xMax, f32 yMax, f32 zMax) {\n    // Surface vertex coordinates\n    Vec3s sx;\n    Vec3s sy;\n    Vec3s sz;\n    // Max delta between x, y, and z\n    s16 dxMax = 0;\n    s16 dyMax = 0;\n    s16 dzMax = 0;\n    // Current deltas between x, y, and z\n    f32 dx;\n    f32 dy;\n    f32 dz;\n    UNUSED u8 filler[4];\n    s32 i;\n    s32 j;\n    // result\n    s32 smaller = FALSE;\n\n    sx[0] = surf->vertex1[0];\n    sx[1] = surf->vertex2[0];\n    sx[2] = surf->vertex3[0];\n    sy[0] = surf->vertex1[1];\n    sy[1] = surf->vertex2[1];\n    sy[2] = surf->vertex3[1];\n    sz[0] = surf->vertex1[2];\n    sz[1] = surf->vertex2[2];\n    sz[2] = surf->vertex3[2];\n\n    for (i = 0; i < 3; i++) {\n        j = i + 1;\n        if (j >= 3) {\n            j = 0;\n        }\n        dx = ABS(sx[i] - sx[j]);\n        if (dx > dxMax) {\n            dxMax = dx;\n        }\n        dy = ABS(sy[i] - sy[j]);\n        if (dy > dyMax) {\n            dyMax = dy;\n        }\n        dz = ABS(sz[i] - sz[j]);\n        if (dz > dzMax) {\n            dzMax = dz;\n        }\n    }\n    if (yMax != -1.f) {\n        if (dyMax < yMax) {\n            smaller = TRUE;\n        }\n    }\n    if (xMax != -1.f && zMax != -1.f) {\n        if (dxMax < xMax && dzMax < zMax) {\n            smaller = TRUE;\n        }\n    }\n    return smaller;\n}\n\n/**\n * Checks if `pos` is behind the surface, using the dot product.\n *\n * Because the function only uses `surf`s first vertex, some surfaces can shadow others.\n */\ns32 is_behind_surface(Vec3f pos, struct Surface *surf) {\n    s32 behindSurface = 0;\n    // Surface normal\n    f32 normX = (surf->vertex2[1] - surf->vertex1[1]) * (surf->vertex3[2] - surf->vertex2[2]) -\n                (surf->vertex3[1] - surf->vertex2[1]) * (surf->vertex2[2] - surf->vertex1[2]);\n    f32 normY = (surf->vertex2[2] - surf->vertex1[2]) * (surf->vertex3[0] - surf->vertex2[0]) -\n                (surf->vertex3[2] - surf->vertex2[2]) * (surf->vertex2[0] - surf->vertex1[0]);\n    f32 normZ = (surf->vertex2[0] - surf->vertex1[0]) * (surf->vertex3[1] - surf->vertex2[1]) -\n                (surf->vertex3[0] - surf->vertex2[0]) * (surf->vertex2[1] - surf->vertex1[1]);\n    f32 dirX = surf->vertex1[0] - pos[0];\n    f32 dirY = surf->vertex1[1] - pos[1];\n    f32 dirZ = surf->vertex1[2] - pos[2];\n\n    if (dirX * normX + dirY * normY + dirZ * normZ < 0) {\n        behindSurface = 1;\n    }\n    return behindSurface;\n}\n\n/**\n * Checks if the whole circular sector is behind the surface.\n */\ns32 is_range_behind_surface(Vec3f from, Vec3f to, struct Surface *surf, s16 range, s16 surfType) {\n    s32 behindSurface = TRUE;\n    s32 leftBehind = 0;\n    s32 rightBehind = 0;\n    UNUSED u8 filler[20];\n    f32 checkDist;\n    s16 checkPitch;\n    s16 checkYaw;\n    Vec3f checkPos;\n\n    if (surf != NULL) {\n        if (surfType == -1 || surf->type != surfType) {\n            if (range == 0) {\n                behindSurface = is_behind_surface(to, surf);\n            } else {\n                vec3f_get_dist_and_angle(from, to, &checkDist, &checkPitch, &checkYaw);\n                vec3f_set_dist_and_angle(from, checkPos, checkDist, checkPitch, checkYaw + range);\n                leftBehind = is_behind_surface(checkPos, surf);\n                vec3f_set_dist_and_angle(from, checkPos, checkDist, checkPitch, checkYaw - range);\n                rightBehind = is_behind_surface(checkPos, surf);\n                behindSurface = leftBehind * rightBehind;\n            }\n        }\n    }\n    return behindSurface;\n}\n\ns32 is_mario_behind_surface(UNUSED struct Camera *c, struct Surface *surf) {\n    s32 behindSurface = is_behind_surface(sMarioCamState->pos, surf);\n\n    return behindSurface;\n}\n\n/**\n * Calculates the distance between two points and sets a vector to a point\n * scaled along a line between them. Typically, somewhere in the middle.\n */\nvoid scale_along_line(Vec3f dst, Vec3f from, Vec3f to, f32 scale) {\n    Vec3f tempVec;\n\n    tempVec[0] = (to[0] - from[0]) * scale + from[0];\n    tempVec[1] = (to[1] - from[1]) * scale + from[1];\n    tempVec[2] = (to[2] - from[2]) * scale + from[2];\n    vec3f_copy(dst, tempVec);\n}\n/**\n * Effectively created a rectangular prism defined by a vector starting at the center\n * and extending to the corners. If the position is in this box, the function returns true.\n */\ns32 is_pos_in_bounds(Vec3f pos, Vec3f center, Vec3f bounds, s16 boundsYaw) {\n    s32 inBound = FALSE;\n    Vec3f rel;\n\n    rel[0] = center[0] - pos[0];\n    rel[1] = center[1] - pos[1];\n    rel[2] = center[2] - pos[2];\n\n    rotate_in_xz(rel, rel, boundsYaw);\n\n    if (-bounds[0] < rel[0] && rel[0] < bounds[0] &&\n        -bounds[1] < rel[1] && rel[1] < bounds[1] &&\n        -bounds[2] < rel[2] && rel[2] < bounds[2]) {\n        inBound = TRUE;\n    }\n    return inBound;\n}\n\ns16 calculate_pitch(Vec3f from, Vec3f to) {\n    f32 dx = to[0] - from[0];\n    f32 dy = to[1] - from[1];\n    f32 dz = to[2] - from[2];\n    s16 pitch = atan2s(sqrtf(dx * dx + dz * dz), dy);\n\n    return pitch;\n}\n\ns16 calculate_yaw(Vec3f from, Vec3f to) {\n    f32 dx = to[0] - from[0];\n    UNUSED f32 dy = to[1] - from[1];\n    f32 dz = to[2] - from[2];\n    s16 yaw = atan2s(dz, dx);\n\n    return yaw;\n}\n\n/**\n * Calculates the pitch and yaw between two vectors.\n */\nvoid calculate_angles(Vec3f from, Vec3f to, s16 *pitch, s16 *yaw) {\n    f32 dx = to[0] - from[0];\n    f32 dy = to[1] - from[1];\n    f32 dz = to[2] - from[2];\n\n    *pitch = atan2s(sqrtf(dx * dx + dz * dz), dy);\n    *yaw = atan2s(dz, dx);\n}\n\n/**\n * Finds the distance between two vectors.\n */\nf32 calc_abs_dist(Vec3f a, Vec3f b) {\n    f32 distX = b[0] - a[0];\n    f32 distY = b[1] - a[1];\n    f32 distZ = b[2] - a[2];\n    f32 distAbs = sqrtf(distX * distX + distY * distY + distZ * distZ);\n\n    return distAbs;\n}\n\n/**\n * Finds the horizontal distance between two vectors.\n */\nf32 calc_hor_dist(Vec3f a, Vec3f b) {\n    f32 distX = b[0] - a[0];\n    f32 distZ = b[2] - a[2];\n    f32 distHor = sqrtf(distX * distX + distZ * distZ);\n\n    return distHor;\n}\n\n/**\n * Rotates a vector in the horizontal plane and copies it to a new vector.\n */\nvoid rotate_in_xz(Vec3f dst, Vec3f src, s16 yaw) {\n    Vec3f tempVec;\n\n    vec3f_copy(tempVec, src);\n    dst[0] = tempVec[2] * sins(yaw) + tempVec[0] * coss(yaw);\n    dst[1] = tempVec[1];\n    dst[2] = tempVec[2] * coss(yaw) - tempVec[0] * sins(yaw);\n}\n\n/**\n * Rotates a vector in the YZ plane and copies it to a new vector.\n *\n * Note: This function also flips the Z axis, so +Z moves forward, not backward like it would in world\n * space. If possible, use vec3f_set_dist_and_angle()\n */\nvoid rotate_in_yz(Vec3f dst, Vec3f src, s16 pitch) {\n    Vec3f tempVec;\n\n    vec3f_copy(tempVec, src);\n    dst[2] = -(tempVec[2] * coss(pitch) - tempVec[1] * sins(pitch));\n    dst[1] =   tempVec[2] * sins(pitch) + tempVec[1] * coss(pitch);\n    dst[0] =   tempVec[0];\n}\n\n/**\n * Start shaking the camera's pitch (up and down)\n */\nvoid set_camera_pitch_shake(s16 mag, s16 decay, s16 inc) {\n    if (gLakituState.shakeMagnitude[0] < mag) {\n        gLakituState.shakeMagnitude[0] = mag;\n        gLakituState.shakePitchDecay = decay;\n        gLakituState.shakePitchVel = inc;\n    }\n}\n\n/**\n * Start shaking the camera's yaw (side to side)\n */\nvoid set_camera_yaw_shake(s16 mag, s16 decay, s16 inc) {\n    if (ABS(mag) > ABS(gLakituState.shakeMagnitude[1])) {\n        gLakituState.shakeMagnitude[1] = mag;\n        gLakituState.shakeYawDecay = decay;\n        gLakituState.shakeYawVel = inc;\n    }\n}\n\n/**\n * Start shaking the camera's roll (rotate screen clockwise and counterclockwise)\n */\nvoid set_camera_roll_shake(s16 mag, s16 decay, s16 inc) {\n    if (gLakituState.shakeMagnitude[2] < mag) {\n        gLakituState.shakeMagnitude[2] = mag;\n        gLakituState.shakeRollDecay = decay;\n        gLakituState.shakeRollVel = inc;\n    }\n}\n\n/**\n * Start shaking the camera's pitch, but reduce `mag` by it's distance from the camera\n */\nvoid set_pitch_shake_from_point(s16 mag, s16 decay, s16 inc, f32 maxDist, f32 posX, f32 posY, f32 posZ) {\n    Vec3f pos;\n    f32 dist;\n    s16 dummyPitch;\n    s16 dummyYaw;\n\n    pos[0] = posX;\n    pos[1] = posY;\n    pos[2] = posZ;\n    vec3f_get_dist_and_angle(gLakituState.goalPos, pos, &dist, &dummyPitch, &dummyYaw);\n    mag = reduce_by_dist_from_camera(mag, maxDist, posX, posY, posZ);\n    if (mag != 0) {\n        set_camera_pitch_shake(mag, decay, inc);\n    }\n}\n\n/**\n * Start shaking the camera's yaw, but reduce `mag` by it's distance from the camera\n */\nvoid set_yaw_shake_from_point(s16 mag, s16 decay, s16 inc, f32 maxDist, f32 posX, f32 posY, f32 posZ) {\n    Vec3f pos;\n    f32 dist;\n    s16 dummyPitch;\n    s16 dummyYaw;\n\n    pos[0] = posX;\n    pos[1] = posY;\n    pos[2] = posZ;\n    vec3f_get_dist_and_angle(gLakituState.goalPos, pos, &dist, &dummyPitch, &dummyYaw);\n    mag = reduce_by_dist_from_camera(mag, maxDist, posX, posY, posZ);\n    if (mag != 0) {\n        set_camera_yaw_shake(mag, decay, inc);\n    }\n}\n\n/**\n * Update the shake offset by `increment`\n */\nvoid increment_shake_offset(s16 *offset, s16 increment) {\n    if (increment == -0x8000) {\n        *offset = (*offset & 0x8000) + 0xC000;\n    } else {\n        *offset += increment;\n    }\n}\n\n/**\n * Apply a vertical shake to the camera by adjusting its pitch\n */\nvoid shake_camera_pitch(Vec3f pos, Vec3f focus) {\n    f32 dist;\n    s16 pitch;\n    s16 yaw;\n\n    if (gLakituState.shakeMagnitude[0] | gLakituState.shakeMagnitude[1]) {\n        vec3f_get_dist_and_angle(pos, focus, &dist, &pitch, &yaw);\n        pitch += gLakituState.shakeMagnitude[0] * sins(gLakituState.shakePitchPhase);\n        vec3f_set_dist_and_angle(pos, focus, dist, pitch, yaw);\n        increment_shake_offset(&gLakituState.shakePitchPhase, gLakituState.shakePitchVel);\n        if (camera_approach_s16_symmetric_bool(&gLakituState.shakeMagnitude[0], 0,\n                                               gLakituState.shakePitchDecay) == 0) {\n            gLakituState.shakePitchPhase = 0;\n        }\n    }\n}\n\n/**\n * Apply a horizontal shake to the camera by adjusting its yaw\n */\nvoid shake_camera_yaw(Vec3f pos, Vec3f focus) {\n    f32 dist;\n    s16 pitch;\n    s16 yaw;\n\n    if (gLakituState.shakeMagnitude[1] != 0) {\n        vec3f_get_dist_and_angle(pos, focus, &dist, &pitch, &yaw);\n        yaw += gLakituState.shakeMagnitude[1] * sins(gLakituState.shakeYawPhase);\n        vec3f_set_dist_and_angle(pos, focus, dist, pitch, yaw);\n        increment_shake_offset(&gLakituState.shakeYawPhase, gLakituState.shakeYawVel);\n        if (camera_approach_s16_symmetric_bool(&gLakituState.shakeMagnitude[1], 0,\n                                               gLakituState.shakeYawDecay) == 0) {\n            gLakituState.shakeYawPhase = 0;\n        }\n    }\n}\n\n/**\n * Apply a rotational shake to the camera by adjusting its roll\n */\nvoid shake_camera_roll(s16 *roll) {\n    UNUSED u8 filler[8];\n\n    if (gLakituState.shakeMagnitude[2] != 0) {\n        increment_shake_offset(&gLakituState.shakeRollPhase, gLakituState.shakeRollVel);\n        *roll += gLakituState.shakeMagnitude[2] * sins(gLakituState.shakeRollPhase);\n        if (camera_approach_s16_symmetric_bool(&gLakituState.shakeMagnitude[2], 0,\n                                               gLakituState.shakeRollDecay) == 0) {\n            gLakituState.shakeRollPhase = 0;\n        }\n    }\n}\n\n/**\n * Add an offset to the camera's yaw, used in levels that are inside a rectangular building, like the\n * pyramid or TTC.\n */\ns32 offset_yaw_outward_radial(struct Camera *c, s16 areaYaw) {\n    s16 yawGoal = DEGREES(60);\n    s16 yaw = sModeOffsetYaw;\n    f32 distFromAreaCenter;\n    Vec3f areaCenter;\n    s16 dYaw;\n    switch (gCurrLevelArea) {\n        case AREA_TTC:\n            areaCenter[0] = c->areaCenX;\n            areaCenter[1] = sMarioCamState->pos[1];\n            areaCenter[2] = c->areaCenZ;\n            distFromAreaCenter = calc_abs_dist(areaCenter, sMarioCamState->pos);\n            if (800.f > distFromAreaCenter) {\n                yawGoal = 0x3800;\n            }\n            break;\n        case AREA_SSL_PYRAMID:\n            // This mask splits the 360 degrees of yaw into 4 corners. It adds 45 degrees so that the yaw\n            // offset at the corner will be 0, but the yaw offset near the center will face more towards\n            // the direction Mario is running in.\n            yawGoal = (areaYaw & 0xC000) - areaYaw + DEGREES(45);\n            if (yawGoal < 0) {\n                yawGoal = -yawGoal;\n            }\n            yawGoal = yawGoal / 32 * 48;\n            break;\n        case AREA_LLL_OUTSIDE:\n            yawGoal = 0;\n            break;\n    }\n    dYaw = gMarioStates[0].forwardVel / 32.f * 128.f;\n\n    if (sAreaYawChange < 0) {\n        camera_approach_s16_symmetric_bool(&yaw, -yawGoal, dYaw);\n    }\n    if (sAreaYawChange > 0) {\n        camera_approach_s16_symmetric_bool(&yaw, yawGoal, dYaw);\n    }\n    // When the final yaw is out of [-60,60] degrees, approach yawGoal faster than dYaw will ever be,\n    // making the camera lock in one direction until yawGoal drops below 60 (or Mario presses a C button)\n    if (yaw < -DEGREES(60)) {\n        //! Maybe they meant to reverse yawGoal's sign?\n        camera_approach_s16_symmetric_bool(&yaw, -yawGoal, 0x200);\n    }\n    if (yaw > DEGREES(60)) {\n        //! Maybe they meant to reverse yawGoal's sign?\n        camera_approach_s16_symmetric_bool(&yaw, yawGoal, 0x200);\n    }\n    return yaw;\n}\n\n/**\n * Plays the background music that starts while peach reads the intro message.\n */\nvoid cutscene_intro_peach_play_message_music(void) {\n    play_music(SEQ_PLAYER_LEVEL, SEQUENCE_ARGS(4, SEQ_EVENT_PEACH_MESSAGE), 0);\n}\n\n/**\n * Plays the music that starts after peach fades and Lakitu appears.\n */\nvoid cutscene_intro_peach_play_lakitu_flying_music(void) {\n    play_music(SEQ_PLAYER_LEVEL, SEQUENCE_ARGS(15, SEQ_EVENT_CUTSCENE_INTRO), 0);\n}\n\nvoid play_camera_buzz_if_cdown(void) {\n    if (gPlayer1Controller->buttonPressed & D_CBUTTONS) {\n        play_sound_button_change_blocked();\n    }\n}\n\nvoid play_camera_buzz_if_cbutton(void) {\n    if (gPlayer1Controller->buttonPressed & CBUTTON_MASK) {\n        play_sound_button_change_blocked();\n    }\n}\n\nvoid play_camera_buzz_if_c_sideways(void) {\n    if ((gPlayer1Controller->buttonPressed & L_CBUTTONS)\n        || (gPlayer1Controller->buttonPressed & R_CBUTTONS)) {\n        play_sound_button_change_blocked();\n    }\n}\n\nvoid play_sound_cbutton_up(void) {\n    play_sound(SOUND_MENU_CAMERA_ZOOM_IN, gGlobalSoundSource);\n}\n\nvoid play_sound_cbutton_down(void) {\n    play_sound(SOUND_MENU_CAMERA_ZOOM_OUT, gGlobalSoundSource);\n}\n\nvoid play_sound_cbutton_side(void) {\n    play_sound(SOUND_MENU_CAMERA_TURN, gGlobalSoundSource);\n}\n\nvoid play_sound_button_change_blocked(void) {\n    play_sound(SOUND_MENU_CAMERA_BUZZ, gGlobalSoundSource);\n}\n\nvoid play_sound_rbutton_changed(void) {\n    play_sound(SOUND_MENU_CLICK_CHANGE_VIEW, gGlobalSoundSource);\n}\n\nvoid play_sound_if_cam_switched_to_lakitu_or_mario(void) {\n    if (sCameraSoundFlags & CAM_SOUND_MARIO_ACTIVE) {\n        play_sound_rbutton_changed();\n    }\n    if (sCameraSoundFlags & CAM_SOUND_NORMAL_ACTIVE) {\n        play_sound_rbutton_changed();\n    }\n    sCameraSoundFlags &= ~(CAM_SOUND_MARIO_ACTIVE | CAM_SOUND_NORMAL_ACTIVE);\n}\n\n/**\n * Handles input for radial, outwards radial, parallel tracking, and 8 direction mode.\n */\ns32 radial_camera_input(struct Camera *c, UNUSED f32 unused) {\n    s16 dummy;\n#ifdef AVOID_UB\n    dummy = 0;\n#endif\n\n    if ((gCameraMovementFlags & CAM_MOVE_ENTERED_ROTATE_SURFACE) || !(gCameraMovementFlags & CAM_MOVE_ROTATE)) {\n\n        // If C-L or C-R are pressed, the camera is rotating\n        if (gPlayer1Controller->buttonPressed & (L_CBUTTONS | R_CBUTTONS)) {\n            gCameraMovementFlags &= ~CAM_MOVE_ENTERED_ROTATE_SURFACE;\n            //  @bug this does not clear the rotation flags set by the surface. It's possible to set\n            //       both ROTATE_LEFT and ROTATE_RIGHT, locking the camera.\n            //       Ex: If a surface set CAM_MOVE_ROTATE_RIGHT and the user presses C-R, it locks the\n            //       camera until a different mode is activated\n        }\n\n        // Rotate Right and left\n        if (gPlayer1Controller->buttonPressed & R_CBUTTONS) {\n            if (sModeOffsetYaw > -0x800) {\n                // The camera is now rotating right\n                if (!(gCameraMovementFlags & CAM_MOVE_ROTATE_RIGHT)) {\n                    gCameraMovementFlags |= CAM_MOVE_ROTATE_RIGHT;\n                }\n\n                if (c->mode == CAMERA_MODE_RADIAL) {\n                    // if > ~48 degrees, we're rotating for the second time.\n                    if (sModeOffsetYaw > 0x22AA) {\n                        s2ndRotateFlags |= CAM_MOVE_ROTATE_RIGHT;\n                    }\n\n                    if (sModeOffsetYaw == DEGREES(105)) {\n                        play_sound_button_change_blocked();\n                    } else {\n                        play_sound_cbutton_side();\n                    }\n                } else {\n                    if (sModeOffsetYaw == DEGREES(60)) {\n                        play_sound_button_change_blocked();\n                    } else {\n                        play_sound_cbutton_side();\n                    }\n                }\n            } else {\n                gCameraMovementFlags |= CAM_MOVE_RETURN_TO_MIDDLE;\n                play_sound_cbutton_up();\n            }\n        }\n        if (gPlayer1Controller->buttonPressed & L_CBUTTONS) {\n            if (sModeOffsetYaw < 0x800) {\n                if (!(gCameraMovementFlags & CAM_MOVE_ROTATE_LEFT)) {\n                    gCameraMovementFlags |= CAM_MOVE_ROTATE_LEFT;\n                }\n\n                if (c->mode == CAMERA_MODE_RADIAL) {\n                    // if < ~48 degrees, we're rotating for the second time.\n                    if (sModeOffsetYaw < -0x22AA) {\n                        s2ndRotateFlags |= CAM_MOVE_ROTATE_LEFT;\n                    }\n\n                    if (sModeOffsetYaw == DEGREES(-105)) {\n                        play_sound_button_change_blocked();\n                    } else {\n                        play_sound_cbutton_side();\n                    }\n                } else {\n                    if (sModeOffsetYaw == DEGREES(-60)) {\n                        play_sound_button_change_blocked();\n                    } else {\n                        play_sound_cbutton_side();\n                    }\n                }\n            } else {\n                gCameraMovementFlags |= CAM_MOVE_RETURN_TO_MIDDLE;\n                play_sound_cbutton_up();\n            }\n        }\n    }\n\n    // Zoom in / enter C-Up\n    if (gPlayer1Controller->buttonPressed & U_CBUTTONS) {\n        if (gCameraMovementFlags & CAM_MOVE_ZOOMED_OUT) {\n            gCameraMovementFlags &= ~CAM_MOVE_ZOOMED_OUT;\n            play_sound_cbutton_up();\n        } else {\n            set_mode_c_up(c);\n        }\n    }\n\n    // Zoom out\n    if (gPlayer1Controller->buttonPressed & D_CBUTTONS) {\n        if (gCameraMovementFlags & CAM_MOVE_ZOOMED_OUT) {\n            gCameraMovementFlags |= CAM_MOVE_ALREADY_ZOOMED_OUT;\n#ifndef VERSION_JP\n            play_camera_buzz_if_cdown();\n#endif\n        } else {\n            gCameraMovementFlags |= CAM_MOVE_ZOOMED_OUT;\n            play_sound_cbutton_down();\n        }\n    }\n\n    //! returning uninitialized variable\n    return dummy;\n}\n\n/**\n * Starts a cutscene dialog. Only has an effect when `trigger` is 1\n */\ns32 trigger_cutscene_dialog(s32 trigger) {\n    s32 result = 0;\n    UNUSED struct Camera *c = gCamera;\n\n    if (trigger == 1) {\n        start_object_cutscene_without_focus(CUTSCENE_READ_MESSAGE);\n    }\n    if (trigger == 2) {\n    }\n    return result;\n}\n\n/**\n * Updates the camera based on which C buttons are pressed this frame\n */\nvoid handle_c_button_movement(struct Camera *c) {\n    s16 cSideYaw;\n\n    // Zoom in\n    if (gPlayer1Controller->buttonPressed & U_CBUTTONS) {\n        if (c->mode != CAMERA_MODE_FIXED && (gCameraMovementFlags & CAM_MOVE_ZOOMED_OUT)) {\n            gCameraMovementFlags &= ~CAM_MOVE_ZOOMED_OUT;\n            play_sound_cbutton_up();\n        } else {\n            set_mode_c_up(c);\n            if (sZeroZoomDist > gCameraZoomDist) {\n                sZoomAmount = -gCameraZoomDist;\n            } else {\n                sZoomAmount = gCameraZoomDist;\n            }\n        }\n    }\n    if (c->mode != CAMERA_MODE_FIXED) {\n        // Zoom out\n        if (gPlayer1Controller->buttonPressed & D_CBUTTONS) {\n            if (gCameraMovementFlags & CAM_MOVE_ZOOMED_OUT) {\n                gCameraMovementFlags |= CAM_MOVE_ALREADY_ZOOMED_OUT;\n                sZoomAmount = gCameraZoomDist + 400.f;\n#ifndef VERSION_JP\n                play_camera_buzz_if_cdown();\n#endif\n            } else {\n                gCameraMovementFlags |= CAM_MOVE_ZOOMED_OUT;\n                sZoomAmount = gCameraZoomDist + 400.f;\n                play_sound_cbutton_down();\n            }\n        }\n\n        // Rotate left or right\n        cSideYaw = 0x1000;\n        if (gPlayer1Controller->buttonPressed & R_CBUTTONS) {\n            if (gCameraMovementFlags & CAM_MOVE_ROTATE_LEFT) {\n                gCameraMovementFlags &= ~CAM_MOVE_ROTATE_LEFT;\n            } else {\n                gCameraMovementFlags |= CAM_MOVE_ROTATE_RIGHT;\n                if (sCSideButtonYaw == 0) {\n                    play_sound_cbutton_side();\n                }\n                sCSideButtonYaw = -cSideYaw;\n            }\n        }\n        if (gPlayer1Controller->buttonPressed & L_CBUTTONS) {\n            if (gCameraMovementFlags & CAM_MOVE_ROTATE_RIGHT) {\n                gCameraMovementFlags &= ~CAM_MOVE_ROTATE_RIGHT;\n            } else {\n                gCameraMovementFlags |= CAM_MOVE_ROTATE_LEFT;\n                if (sCSideButtonYaw == 0) {\n                    play_sound_cbutton_side();\n                }\n                sCSideButtonYaw = cSideYaw;\n            }\n        }\n    }\n}\n\n/**\n * Zero the 10 cvars.\n */\nvoid clear_cutscene_vars(UNUSED struct Camera *c) {\n    s32 i;\n\n    for (i = 0; i < 10; i++) {\n        sCutsceneVars[i].unused1 = 0;\n        vec3f_set(sCutsceneVars[i].point, 0.f, 0.f, 0.f);\n        vec3f_set(sCutsceneVars[i].unusedPoint, 0.f, 0.f, 0.f);\n        vec3s_set(sCutsceneVars[i].angle, 0, 0, 0);\n        sCutsceneVars[i].unused2 = 0;\n    }\n}\n\n/**\n * Start the cutscene, `cutscene`, if it is not already playing.\n */\nvoid start_cutscene(struct Camera *c, u8 cutscene) {\n    if (c->cutscene != cutscene) {\n        c->cutscene = cutscene;\n        clear_cutscene_vars(c);\n    }\n}\n\n/**\n * Look up the victory dance cutscene in sDanceCutsceneTable\n *\n * First the index entry is determined based on the course and the star that was just picked up\n * Like the entries in sZoomOutAreaMasks, each entry represents two stars\n * The current courses's 4 bits of the index entry are used as the actual index into sDanceCutsceneTable\n *\n * @return the victory cutscene to use\n */\ns32 determine_dance_cutscene(UNUSED struct Camera *c) {\n    u8 cutscene = 0;\n    u8 cutsceneIndex = 0;\n    u8 starIndex = (gLastCompletedStarNum - 1) / 2;\n    u8 courseNum = gCurrCourseNum;\n\n    if (starIndex > 3) {\n        starIndex = 0;\n    }\n    if (courseNum > COURSE_MAX) {\n        courseNum = COURSE_NONE;\n    }\n    cutsceneIndex = sDanceCutsceneIndexTable[courseNum][starIndex];\n\n    if (gLastCompletedStarNum & 1) {\n        // Odd stars take the lower four bytes\n        cutsceneIndex &= 0xF;\n    } else {\n        // Even stars use the upper four bytes\n        cutsceneIndex = cutsceneIndex >> 4;\n    }\n    cutscene = sDanceCutsceneTable[cutsceneIndex];\n    return cutscene;\n}\n\n/**\n * @return `pullResult` or `pushResult` depending on Mario's door action\n */\nu8 open_door_cutscene(u8 pullResult, u8 pushResult) {\n    s16 result;\n\n    if (sMarioCamState->action == ACT_PULLING_DOOR) {\n        result = pullResult;\n    }\n    if (sMarioCamState->action == ACT_PUSHING_DOOR) {\n        result = pushResult;\n    }\n    return result;\n}\n\n/**\n * If no cutscenes are playing, determines if a cutscene should play based on Mario's action and\n * cameraEvent\n *\n * @return the cutscene that should start, 0 if none\n */\nu8 get_cutscene_from_mario_status(struct Camera *c) {\n    UNUSED u8 filler1[4];\n    u8 cutscene = c->cutscene;\n    UNUSED u8 filler2[12];\n\n    if (cutscene == 0) {\n        // A cutscene started by an object, if any, will start if nothing else happened\n        cutscene = sObjectCutscene;\n        sObjectCutscene = 0;\n        if (sMarioCamState->cameraEvent == CAM_EVENT_DOOR) {\n            switch (gCurrLevelArea) {\n                case AREA_CASTLE_LOBBY:\n                    //! doorStatus is never DOOR_ENTER_LOBBY when cameraEvent == 6, because\n                    //! doorStatus is only used for the star door in the lobby, which uses\n                    //! ACT_ENTERING_STAR_DOOR\n                    if (c->mode == CAMERA_MODE_SPIRAL_STAIRS || c->mode == CAMERA_MODE_CLOSE\n                                                                 || c->doorStatus == DOOR_ENTER_LOBBY) {\n                        cutscene = open_door_cutscene(CUTSCENE_DOOR_PULL_MODE, CUTSCENE_DOOR_PUSH_MODE);\n                    } else {\n                        cutscene = open_door_cutscene(CUTSCENE_DOOR_PULL, CUTSCENE_DOOR_PUSH);\n                    }\n                    break;\n                case AREA_BBH:\n                    //! Castle Lobby uses 0 to mean 'no special modes', but BBH uses 1...\n                    if (c->doorStatus == DOOR_LEAVING_SPECIAL) {\n                        cutscene = open_door_cutscene(CUTSCENE_DOOR_PULL, CUTSCENE_DOOR_PUSH);\n                    } else {\n                        cutscene = open_door_cutscene(CUTSCENE_DOOR_PULL_MODE, CUTSCENE_DOOR_PUSH_MODE);\n                    }\n                    break;\n                default:\n                    cutscene = open_door_cutscene(CUTSCENE_DOOR_PULL, CUTSCENE_DOOR_PUSH);\n                    break;\n            }\n        }\n        if (sMarioCamState->cameraEvent == CAM_EVENT_DOOR_WARP) {\n            cutscene = CUTSCENE_DOOR_WARP;\n        }\n        if (sMarioCamState->cameraEvent == CAM_EVENT_CANNON) {\n            cutscene = CUTSCENE_ENTER_CANNON;\n        }\n        if (SURFACE_IS_PAINTING_WARP(sMarioGeometry.currFloorType)) {\n            cutscene = CUTSCENE_ENTER_PAINTING;\n        }\n        switch (sMarioCamState->action) {\n            case ACT_DEATH_EXIT:\n                cutscene = CUTSCENE_DEATH_EXIT;\n                break;\n            case ACT_EXIT_AIRBORNE:\n                cutscene = CUTSCENE_EXIT_PAINTING_SUCC;\n                break;\n            case ACT_SPECIAL_EXIT_AIRBORNE:\n                if (gPrevLevel == LEVEL_BOWSER_1 || gPrevLevel == LEVEL_BOWSER_2\n                    || gPrevLevel == LEVEL_BOWSER_3) {\n                    cutscene = CUTSCENE_EXIT_BOWSER_SUCC;\n                } else {\n                    cutscene = CUTSCENE_EXIT_SPECIAL_SUCC;\n                }\n                break;\n            case ACT_SPECIAL_DEATH_EXIT:\n                if (gPrevLevel == LEVEL_BOWSER_1 || gPrevLevel == LEVEL_BOWSER_2\n                    || gPrevLevel == LEVEL_BOWSER_3) {\n                    cutscene = CUTSCENE_EXIT_BOWSER_DEATH;\n                } else {\n                    cutscene = CUTSCENE_NONPAINTING_DEATH;\n                }\n                break;\n            case ACT_ENTERING_STAR_DOOR:\n                if (c->doorStatus == DOOR_DEFAULT) {\n                    cutscene = CUTSCENE_SLIDING_DOORS_OPEN;\n                } else {\n                    cutscene = CUTSCENE_DOOR_PULL_MODE;\n                }\n                break;\n            case ACT_UNLOCKING_KEY_DOOR:\n                cutscene = CUTSCENE_UNLOCK_KEY_DOOR;\n                break;\n            case ACT_WATER_DEATH:\n                cutscene = CUTSCENE_WATER_DEATH;\n                break;\n            case ACT_DEATH_ON_BACK:\n                cutscene = CUTSCENE_DEATH_ON_BACK;\n                break;\n            case ACT_DEATH_ON_STOMACH:\n                cutscene = CUTSCENE_DEATH_ON_STOMACH;\n                break;\n            case ACT_STANDING_DEATH:\n                cutscene = CUTSCENE_STANDING_DEATH;\n                break;\n            case ACT_SUFFOCATION:\n                cutscene = CUTSCENE_SUFFOCATION_DEATH;\n                break;\n            case ACT_QUICKSAND_DEATH:\n                cutscene = CUTSCENE_QUICKSAND_DEATH;\n                break;\n            case ACT_ELECTROCUTION:\n                cutscene = CUTSCENE_STANDING_DEATH;\n                break;\n            case ACT_STAR_DANCE_EXIT:\n                cutscene = determine_dance_cutscene(c);\n                break;\n            case ACT_STAR_DANCE_WATER:\n                cutscene = determine_dance_cutscene(c);\n                break;\n            case ACT_STAR_DANCE_NO_EXIT:\n                cutscene = CUTSCENE_DANCE_DEFAULT;\n                break;\n        }\n        switch (sMarioCamState->cameraEvent) {\n            case CAM_EVENT_START_INTRO:\n                cutscene = CUTSCENE_INTRO_PEACH;\n                break;\n            case CAM_EVENT_START_GRAND_STAR:\n                cutscene = CUTSCENE_GRAND_STAR;\n                break;\n            case CAM_EVENT_START_ENDING:\n                cutscene = CUTSCENE_ENDING;\n                break;\n            case CAM_EVENT_START_END_WAVING:\n                cutscene = CUTSCENE_END_WAVING;\n                break;\n            case CAM_EVENT_START_CREDITS:\n                cutscene = CUTSCENE_CREDITS;\n                break;\n        }\n    }\n    //! doorStatus is reset every frame. CameraTriggers need to constantly set doorStatus\n    c->doorStatus = DOOR_DEFAULT;\n\n    return cutscene;\n}\n\n/**\n * Moves the camera when Mario has triggered a warp\n */\nvoid warp_camera(f32 displacementX, f32 displacementY, f32 displacementZ) {\n    Vec3f displacement;\n    struct MarioState *marioStates = &gMarioStates[0];\n    struct LinearTransitionPoint *start = &sModeInfo.transitionStart;\n    struct LinearTransitionPoint *end = &sModeInfo.transitionEnd;\n\n    gCurrLevelArea = gCurrLevelNum * 16 + gCurrentArea->index;\n    displacement[0] = displacementX;\n    displacement[1] = displacementY;\n    displacement[2] = displacementZ;\n    vec3f_add(gLakituState.curPos, displacement);\n    vec3f_add(gLakituState.curFocus, displacement);\n    vec3f_add(gLakituState.goalPos, displacement);\n    vec3f_add(gLakituState.goalFocus, displacement);\n    marioStates->waterLevel += displacementY;\n\n    vec3f_add(start->focus, displacement);\n    vec3f_add(start->pos, displacement);\n    vec3f_add(end->focus, displacement);\n    vec3f_add(end->pos, displacement);\n}\n\n/**\n * Make the camera's y coordinate approach `goal`,\n * unless smooth movement is off, in which case the y coordinate is simply set to `goal`\n */\nvoid approach_camera_height(struct Camera *c, f32 goal, f32 inc) {\n    if (sStatusFlags & CAM_FLAG_SMOOTH_MOVEMENT) {\n        if (c->pos[1] < goal) {\n            if ((c->pos[1] += inc) > goal) {\n                c->pos[1] = goal;\n            }\n        } else {\n            if ((c->pos[1] -= inc) < goal) {\n                c->pos[1] = goal;\n            }\n        }\n    } else {\n        c->pos[1] = goal;\n    }\n}\n\nvoid stub_camera_4(UNUSED s32 a, UNUSED s32 b, UNUSED s32 c, UNUSED s32 d) {\n}\n\n/**\n * Set the camera's focus to Mario's position, and add several relative offsets.\n *\n * @param leftRight offset to Mario's left/right, relative to his faceAngle\n * @param yOff y offset\n * @param forwBack offset to Mario's front/back, relative to his faceAngle\n * @param yawOff offset to Mario's faceAngle, changes the direction of `leftRight` and `forwBack`\n */\nvoid set_focus_rel_mario(struct Camera *c, f32 leftRight, f32 yOff, f32 forwBack, s16 yawOff) {\n    s16 yaw;\n    UNUSED u16 unused;\n    f32 focFloorYOff;\n\n    calc_y_to_curr_floor(&focFloorYOff, 1.f, 200.f, &focFloorYOff, 0.9f, 200.f);\n    yaw = sMarioCamState->faceAngle[1] + yawOff;\n    c->focus[2] = sMarioCamState->pos[2] + forwBack * coss(yaw) - leftRight * sins(yaw);\n    c->focus[0] = sMarioCamState->pos[0] + forwBack * sins(yaw) + leftRight * coss(yaw);\n    c->focus[1] = sMarioCamState->pos[1] + yOff + focFloorYOff;\n}\n\n/**\n * Set the camera's position to Mario's position, and add several relative offsets. Unused.\n *\n * @param leftRight offset to Mario's left/right, relative to his faceAngle\n * @param yOff y offset\n * @param forwBack offset to Mario's front/back, relative to his faceAngle\n * @param yawOff offset to Mario's faceAngle, changes the direction of `leftRight` and `forwBack`\n */\nUNUSED static void unused_set_pos_rel_mario(struct Camera *c, f32 leftRight, f32 yOff, f32 forwBack, s16 yawOff) {\n    u16 yaw = sMarioCamState->faceAngle[1] + yawOff;\n\n    c->pos[0] = sMarioCamState->pos[0] + forwBack * sins(yaw) + leftRight * coss(yaw);\n    c->pos[1] = sMarioCamState->pos[1] + yOff;\n    c->pos[2] = sMarioCamState->pos[2] + forwBack * coss(yaw) - leftRight * sins(yaw);\n}\n\n/**\n * Rotates the offset `to` according to the pitch and yaw values in `rotation`.\n * Adds `from` to the rotated offset, and stores the result in `dst`.\n *\n * @warning Flips the Z axis, so that relative to `rotation`, -Z moves forwards and +Z moves backwards.\n */\nvoid offset_rotated(Vec3f dst, Vec3f from, Vec3f to, Vec3s rotation) {\n    Vec3f unusedCopy;\n    Vec3f pitchRotated;\n\n    vec3f_copy(unusedCopy, from);\n\n    // First rotate the direction by rotation's pitch\n    //! The Z axis is flipped here.\n    pitchRotated[2] = -(to[2] * coss(rotation[0]) - to[1] * sins(rotation[0]));\n    pitchRotated[1] =   to[2] * sins(rotation[0]) + to[1] * coss(rotation[0]);\n    pitchRotated[0] =   to[0];\n\n    // Rotate again by rotation's yaw\n    dst[0] = from[0] + pitchRotated[2] * sins(rotation[1]) + pitchRotated[0] * coss(rotation[1]);\n    dst[1] = from[1] + pitchRotated[1];\n    dst[2] = from[2] + pitchRotated[2] * coss(rotation[1]) - pitchRotated[0] * sins(rotation[1]);\n}\n\n/**\n * Rotates the offset defined by (`xTo`, `yTo`, `zTo`) according to the pitch and yaw values in `rotation`.\n * Adds `from` to the rotated offset, and stores the result in `dst`.\n *\n * @warning Flips the Z axis, so that relative to `rotation`, -Z moves forwards and +Z moves backwards.\n */\nvoid offset_rotated_coords(Vec3f dst, Vec3f from, Vec3s rotation, f32 xTo, f32 yTo, f32 zTo) {\n    Vec3f to;\n\n    vec3f_set(to, xTo, yTo, zTo);\n    offset_rotated(dst, from, to, rotation);\n}\n\nvoid determine_pushing_or_pulling_door(s16 *rotation) {\n    if (sMarioCamState->action == ACT_PULLING_DOOR) {\n        *rotation = 0;\n    } else {\n        *rotation = DEGREES(-180);\n    }\n}\n\n/**\n * Calculate Lakitu's next position and focus, according to gCamera's state,\n * and store them in `newPos` and `newFoc`.\n *\n * @param newPos where Lakitu should fly towards this frame\n * @param newFoc where Lakitu should look towards this frame\n *\n * @param curPos gCamera's pos this frame\n * @param curFoc gCamera's foc this frame\n *\n * @param oldPos gCamera's pos last frame\n * @param oldFoc gCamera's foc last frame\n *\n * @return Lakitu's next yaw, which is the same as the yaw passed in if no transition happened\n */\ns16 next_lakitu_state(Vec3f newPos, Vec3f newFoc, Vec3f curPos, Vec3f curFoc,\n                      Vec3f oldPos, Vec3f oldFoc, s16 yaw) {\n    s16 yawVelocity;\n    s16 pitchVelocity;\n    f32 distVelocity;\n    f32 goalDist;\n    UNUSED u8 filler1[4];\n    s16 goalPitch;\n    s16 goalYaw;\n    UNUSED u8 filler2[4];\n    f32 distTimer = sModeTransition.framesLeft;\n    s16 angleTimer = sModeTransition.framesLeft;\n    UNUSED s16 inTransition = FALSE;\n    Vec3f nextPos;\n    Vec3f nextFoc;\n    Vec3f startPos;\n    Vec3f startFoc;\n    s32 i;\n    f32 floorHeight;\n    struct Surface *floor;\n\n    // If not transitioning, just use gCamera's current pos and foc\n    vec3f_copy(newPos, curPos);\n    vec3f_copy(newFoc, curFoc);\n\n    if (sStatusFlags & CAM_FLAG_START_TRANSITION) {\n        for (i = 0; i < 3; i++) {\n            // Add Mario's displacement from this frame to the last frame's pos and focus\n            // Makes the transition start from where the camera would have moved\n            startPos[i] = oldPos[i] + sMarioCamState->pos[i] - sModeTransition.marioPos[i];\n            startFoc[i] = oldFoc[i] + sMarioCamState->pos[i] - sModeTransition.marioPos[i];\n        }\n\n\n        vec3f_get_dist_and_angle(curFoc, startFoc, &sModeTransition.focDist, &sModeTransition.focPitch,\n                                 &sModeTransition.focYaw);\n        vec3f_get_dist_and_angle(curFoc, startPos, &sModeTransition.posDist, &sModeTransition.posPitch,\n                                 &sModeTransition.posYaw);\n        sStatusFlags &= ~CAM_FLAG_START_TRANSITION;\n    }\n\n    // Transition from the last mode to the current one\n    if (sModeTransition.framesLeft > 0) {\n        inTransition = TRUE;\n\n        vec3f_get_dist_and_angle(curFoc, curPos, &goalDist, &goalPitch, &goalYaw);\n        distVelocity = ABS(goalDist - sModeTransition.posDist) / distTimer;\n        pitchVelocity = ABS(goalPitch - sModeTransition.posPitch) / angleTimer;\n        yawVelocity = ABS(goalYaw - sModeTransition.posYaw) / angleTimer;\n\n        camera_approach_f32_symmetric_bool(&sModeTransition.posDist, goalDist, distVelocity);\n        camera_approach_s16_symmetric_bool(&sModeTransition.posYaw, goalYaw, yawVelocity);\n        camera_approach_s16_symmetric_bool(&sModeTransition.posPitch, goalPitch, pitchVelocity);\n        vec3f_set_dist_and_angle(curFoc, nextPos, sModeTransition.posDist, sModeTransition.posPitch,\n                                 sModeTransition.posYaw);\n\n        vec3f_get_dist_and_angle(curPos, curFoc, &goalDist, &goalPitch, &goalYaw);\n        pitchVelocity = sModeTransition.focPitch / (s16) sModeTransition.framesLeft;\n        yawVelocity = sModeTransition.focYaw / (s16) sModeTransition.framesLeft;\n        distVelocity = sModeTransition.focDist / sModeTransition.framesLeft;\n\n        camera_approach_s16_symmetric_bool(&sModeTransition.focPitch, goalPitch, pitchVelocity);\n        camera_approach_s16_symmetric_bool(&sModeTransition.focYaw, goalYaw, yawVelocity);\n        camera_approach_f32_symmetric_bool(&sModeTransition.focDist, 0, distVelocity);\n        vec3f_set_dist_and_angle(curFoc, nextFoc, sModeTransition.focDist, sModeTransition.focPitch,\n                                 sModeTransition.focYaw);\n\n        vec3f_copy(newFoc, nextFoc);\n        vec3f_copy(newPos, nextPos);\n\n        if (gCamera->cutscene != 0 || !(gCameraMovementFlags & CAM_MOVE_C_UP_MODE)) {\n            floorHeight = find_floor(newPos[0], newPos[1], newPos[2], &floor);\n            if (floorHeight != FLOOR_LOWER_LIMIT) {\n                if ((floorHeight += 125.f) > newPos[1]) {\n                    newPos[1] = floorHeight;\n                }\n            }\n            f32_find_wall_collision(&newPos[0], &newPos[1], &newPos[2], 0.f, 100.f);\n        }\n        sModeTransition.framesLeft--;\n        yaw = calculate_yaw(newFoc, newPos);\n    } else {\n        sModeTransition.posDist = 0.f;\n        sModeTransition.posPitch = 0;\n        sModeTransition.posYaw = 0;\n        sStatusFlags &= ~CAM_FLAG_TRANSITION_OUT_OF_C_UP;\n    }\n    vec3f_copy(sModeTransition.marioPos, sMarioCamState->pos);\n    return yaw;\n}\n\nstatic UNUSED void stop_transitional_movement(void) {\n    sStatusFlags &= ~(CAM_FLAG_START_TRANSITION | CAM_FLAG_TRANSITION_OUT_OF_C_UP);\n    sModeTransition.framesLeft = 0;\n}\n\n/**\n * Start fixed camera mode, setting the base position to (`x`, `y`, `z`)\n *\n * @return TRUE if the base pos was updated\n */\ns32 set_camera_mode_fixed(struct Camera *c, s16 x, s16 y, s16 z) {\n    s32 basePosSet = FALSE;\n    f32 posX = x;\n    f32 posY = y;\n    f32 posZ = z;\n\n    if (sFixedModeBasePosition[0] != posX || sFixedModeBasePosition[1] != posY\n        || sFixedModeBasePosition[2] != posZ) {\n        basePosSet = TRUE;\n        sStatusFlags &= ~CAM_FLAG_SMOOTH_MOVEMENT;\n    }\n    vec3f_set(sFixedModeBasePosition, posX, posY, posZ);\n    if (c->mode != CAMERA_MODE_FIXED) {\n        sStatusFlags &= ~CAM_FLAG_SMOOTH_MOVEMENT;\n        c->mode = CAMERA_MODE_FIXED;\n        vec3f_set(c->pos, sFixedModeBasePosition[0], sMarioCamState->pos[1],\n                  sFixedModeBasePosition[2]);\n    }\n    return basePosSet;\n}\n\nvoid set_camera_mode_8_directions(struct Camera *c) {\n    if (c->mode != CAMERA_MODE_8_DIRECTIONS) {\n        c->mode = CAMERA_MODE_8_DIRECTIONS;\n        sStatusFlags &= ~CAM_FLAG_SMOOTH_MOVEMENT;\n        s8DirModeBaseYaw = 0;\n        s8DirModeYawOffset = 0;\n    }\n}\n\n/**\n * If the camera mode is not already the boss fight camera (camera with two foci)\n * set it to be so.\n */\nvoid set_camera_mode_boss_fight(struct Camera *c) {\n    if (c->mode != CAMERA_MODE_BOSS_FIGHT) {\n        transition_to_camera_mode(c, CAMERA_MODE_BOSS_FIGHT, 15);\n        sModeOffsetYaw = c->nextYaw - DEGREES(45);\n    }\n}\n\nvoid set_camera_mode_close_cam(u8 *mode) {\n    if (*mode != CAMERA_MODE_CLOSE) {\n        sStatusFlags &= ~CAM_FLAG_SMOOTH_MOVEMENT;\n        *mode = CAMERA_MODE_CLOSE;\n    }\n}\n\n/**\n * Change to radial mode.\n * If the difference in yaw between pos -> Mario and pos > focus is < 90 degrees, transition.\n * Otherwise jump to radial mode.\n */\nvoid set_camera_mode_radial(struct Camera *c, s16 transitionTime) {\n    Vec3f focus;\n    s16 yaw;\n\n    focus[0] = c->areaCenX;\n    focus[1] = sMarioCamState->pos[1];\n    focus[2] = c->areaCenZ;\n    if (c->mode != CAMERA_MODE_RADIAL) {\n        yaw = calculate_yaw(focus, sMarioCamState->pos) - calculate_yaw(c->focus, c->pos) + DEGREES(90);\n        if (yaw > 0) {\n            transition_to_camera_mode(c, CAMERA_MODE_RADIAL, transitionTime);\n        } else {\n            c->mode = CAMERA_MODE_RADIAL;\n            sStatusFlags &= ~CAM_FLAG_SMOOTH_MOVEMENT;\n        }\n        sModeOffsetYaw = 0;\n    }\n}\n\n/**\n * Start parallel tracking mode using the path `path`\n */\nvoid parallel_tracking_init(struct Camera *c, struct ParallelTrackingPoint *path) {\n    if (c->mode != CAMERA_MODE_PARALLEL_TRACKING) {\n        sParTrackPath = path;\n        sParTrackIndex = 0;\n        sParTrackTransOff.pos[0] = 0.f;\n        sParTrackTransOff.pos[1] = 0.f;\n        sParTrackTransOff.pos[2] = 0.f;\n        // Place the camera in the middle of the path\n        c->pos[0] = (sParTrackPath[0].pos[0] + sParTrackPath[1].pos[0]) / 2;\n        c->pos[1] = (sParTrackPath[0].pos[1] + sParTrackPath[1].pos[1]) / 2;\n        c->pos[2] = (sParTrackPath[0].pos[2] + sParTrackPath[1].pos[2]) / 2;\n        sStatusFlags &= ~CAM_FLAG_SMOOTH_MOVEMENT;\n        c->mode = CAMERA_MODE_PARALLEL_TRACKING;\n    }\n}\n\n/**\n * Set the fixed camera base pos depending on the current level area\n */\nvoid set_fixed_cam_axis_sa_lobby(UNUSED s16 preset) {\n    switch (gCurrLevelArea) {\n        case AREA_SA:\n            vec3f_set(sFixedModeBasePosition, 646.f, 143.f, -1513.f);\n            break;\n\n        case AREA_CASTLE_LOBBY:\n            vec3f_set(sFixedModeBasePosition, -577.f, 143.f, 1443.f);\n            break;\n    }\n}\n\n/**\n * Block area-specific CameraTrigger and special surface modes.\n * Generally, block area mode changes if:\n *      Mario is wearing the metal cap, or at the water's surface, or the camera is in Mario mode\n *\n * However, if the level is WDW, DDD, or CotMC (levels that have metal cap and water):\n *      Only block area mode changes if Mario is in a cannon,\n *      or if the camera is in Mario mode and Mario is not swimming or in water with the metal cap\n */\nvoid check_blocking_area_processing(const u8 *mode) {\n    if (sMarioCamState->action & ACT_FLAG_METAL_WATER ||\n                        *mode == CAMERA_MODE_BEHIND_MARIO || *mode == CAMERA_MODE_WATER_SURFACE) {\n        sStatusFlags |= CAM_FLAG_BLOCK_AREA_PROCESSING;\n    }\n\n    if (gCurrLevelNum == LEVEL_DDD || gCurrLevelNum == LEVEL_WDW || gCurrLevelNum == LEVEL_COTMC) {\n        sStatusFlags &= ~CAM_FLAG_BLOCK_AREA_PROCESSING;\n    }\n\n    if ((*mode == CAMERA_MODE_BEHIND_MARIO &&\n            !(sMarioCamState->action & (ACT_FLAG_SWIMMING | ACT_FLAG_METAL_WATER))) ||\n         *mode == CAMERA_MODE_INSIDE_CANNON) {\n        sStatusFlags |= CAM_FLAG_BLOCK_AREA_PROCESSING;\n    }\n}\n\nBAD_RETURN(s32) cam_rr_exit_building_side(struct Camera *c) {\n    set_camera_mode_8_directions(c);\n    s8DirModeBaseYaw = DEGREES(90);\n}\n\nBAD_RETURN(s32) cam_rr_exit_building_top(struct Camera *c) {\n    set_camera_mode_8_directions(c);\n    if (c->pos[1] < 6343.f) {\n        c->pos[1] = 7543.f;\n        gLakituState.goalPos[1] = c->pos[1];\n        gLakituState.curPos[1] = c->pos[1];\n        sStatusFlags &= ~CAM_FLAG_SMOOTH_MOVEMENT;\n    }\n}\n\nBAD_RETURN(s32) cam_rr_enter_building_window(struct Camera *c) {\n    if (c->mode != CAMERA_MODE_FIXED) {\n        set_camera_mode_fixed(c, -2974, 478, -3975);\n    }\n}\n\nBAD_RETURN(s32) cam_rr_enter_building(struct Camera *c) {\n    if (c->mode != CAMERA_MODE_FIXED) {\n        set_camera_mode_fixed(c, -2953, 798, -3943);\n    }\n    // Prevent the camera from being above the roof\n    if (c->pos[1] > 6043.f) {\n        c->pos[1] = 6043.f;\n    }\n}\n\nBAD_RETURN(s32) cam_rr_enter_building_side(struct Camera *c) {\n    if (c->mode != CAMERA_MODE_FIXED) {\n        sStatusFlags &= ~CAM_FLAG_SMOOTH_MOVEMENT;\n        c->mode = CAMERA_MODE_FIXED;\n    }\n}\n\n/**\n * Fix the camera in place as Mario gets exits out the MC cave into the waterfall.\n */\nBAD_RETURN(s32) cam_cotmc_exit_waterfall(UNUSED struct Camera *c) {\n    gCameraMovementFlags |= CAM_MOVE_FIX_IN_PLACE;\n}\n\n/**\n * Sets 8 directional mode and blocks the next trigger from processing.\n * Activated when Mario is walking in front of the snowman's head.\n */\nBAD_RETURN(s32) cam_sl_snowman_head_8dir(struct Camera *c) {\n    sStatusFlags |= CAM_FLAG_BLOCK_AREA_PROCESSING;\n    transition_to_camera_mode(c, CAMERA_MODE_8_DIRECTIONS, 60);\n    s8DirModeBaseYaw = 0x1D27;\n}\n\n/**\n * Sets free roam mode in SL, called by a trigger that covers a large area and surrounds the 8 direction\n * trigger.\n */\nBAD_RETURN(s32) cam_sl_free_roam(struct Camera *c) {\n    transition_to_camera_mode(c, CAMERA_MODE_FREE_ROAM, 60);\n}\n\n/**\n * Warps the camera underneath the floor, used in HMC to move under the elevator platforms\n */\nvoid move_camera_through_floor_while_descending(struct Camera *c, f32 height) {\n    UNUSED u8 filler[4];\n\n    if ((sMarioGeometry.currFloorHeight < height - 100.f)\n        && (sMarioGeometry.prevFloorHeight > sMarioGeometry.currFloorHeight)) {\n        c->pos[1] = height - 400.f;\n        gLakituState.curPos[1] = height - 400.f;\n        gLakituState.goalPos[1] = height - 400.f;\n    }\n}\n\nBAD_RETURN(s32) cam_hmc_enter_maze(struct Camera *c) {\n    s16 pitch, yaw;\n    f32 dist;\n\n    if (c->pos[1] > -102.f) {\n        vec3f_get_dist_and_angle(c->focus, gLakituState.goalPos, &dist, &pitch, &yaw);\n        vec3f_set_dist_and_angle(c->focus, gLakituState.goalPos, 300.f, pitch, yaw);\n        gLakituState.goalPos[1] = -800.f;\n#ifndef VERSION_JP\n        c->pos[1] = gLakituState.goalPos[1];\n        gLakituState.curPos[1] = gLakituState.goalPos[1];\n#endif\n        sStatusFlags &= ~CAM_FLAG_SMOOTH_MOVEMENT;\n    }\n}\n\nBAD_RETURN(s32) cam_hmc_elevator_black_hole(struct Camera *c) {\n    move_camera_through_floor_while_descending(c, 1536.f);\n}\n\nBAD_RETURN(s32) cam_hmc_elevator_maze_emergency_exit(struct Camera *c) {\n    move_camera_through_floor_while_descending(c, 2355.f);\n}\n\nBAD_RETURN(s32) cam_hmc_elevator_lake(struct Camera *c) {\n    move_camera_through_floor_while_descending(c, 1843.f);\n}\n\nBAD_RETURN(s32) cam_hmc_elevator_maze(struct Camera *c) {\n    move_camera_through_floor_while_descending(c, 1843.f);\n}\n\n/**\n * Starts the \"Enter Pyramid Top\" cutscene.\n */\nBAD_RETURN(s32) cam_ssl_enter_pyramid_top(UNUSED struct Camera *c) {\n    start_object_cutscene_without_focus(CUTSCENE_ENTER_PYRAMID_TOP);\n}\n\n/**\n * Change to close mode in the center of the pyramid. Outside this trigger, the default mode is outwards\n * radial.\n */\nBAD_RETURN(s32) cam_ssl_pyramid_center(struct Camera *c) {\n    sStatusFlags |= CAM_FLAG_BLOCK_AREA_PROCESSING;\n    transition_to_camera_mode(c, CAMERA_MODE_CLOSE, 90);\n}\n\n/**\n * Changes the mode back to outward radial in the boss room inside the pyramid.\n */\nBAD_RETURN(s32) cam_ssl_boss_room(struct Camera *c) {\n    sStatusFlags |= CAM_FLAG_BLOCK_AREA_PROCESSING;\n    transition_to_camera_mode(c, CAMERA_MODE_OUTWARD_RADIAL, 90);\n}\n\n/**\n * Moves the camera to through the tunnel by forcing sModeOffsetYaw\n */\nBAD_RETURN(s32) cam_thi_move_cam_through_tunnel(UNUSED struct Camera *c) {\n    if (sModeOffsetYaw < DEGREES(60)) {\n        sModeOffsetYaw = DEGREES(60);\n    }\n}\n\n/**\n * Aligns the camera to look through the tunnel\n */\nBAD_RETURN(s32) cam_thi_look_through_tunnel(UNUSED struct Camera *c) {\n    // ~82.5 degrees\n    if (sModeOffsetYaw > 0x3AAA) {\n        sModeOffsetYaw = 0x3AAA;\n    }\n}\n\n/**\n * Unused. Changes the camera to radial mode when Mario is on the tower.\n *\n * @see sCamBOB for bounds.\n */\nBAD_RETURN(s32) cam_bob_tower(struct Camera *c) {\n    sStatusFlags |= CAM_FLAG_BLOCK_AREA_PROCESSING;\n    transition_to_camera_mode(c, CAMERA_MODE_RADIAL, 90);\n}\n\n/**\n * Unused. Changes the camera to free roam mode when Mario is not climbing the tower.\n *\n * This is the only CameraTrigger event that uses the area == -1 feature:\n * If this was used, it would be called by default in BoB.\n *\n * @see sCamBOB\n */\nBAD_RETURN(s32) cam_bob_default_free_roam(struct Camera *c) {\n    transition_to_camera_mode(c, CAMERA_MODE_FREE_ROAM, 90);\n}\n\n/**\n * Starts the pool entrance cutscene if Mario is not exiting the pool.\n * Used in both the castle and HMC.\n */\nBAD_RETURN(s32) cam_castle_hmc_start_pool_cutscene(struct Camera *c) {\n    if ((sMarioCamState->action != ACT_SPECIAL_DEATH_EXIT)\n        && (sMarioCamState->action != ACT_SPECIAL_EXIT_AIRBORNE)) {\n        start_cutscene(c, CUTSCENE_ENTER_POOL);\n    }\n}\n\n/**\n * Sets the fixed mode pos offset so that the camera faces the doorway when Mario is near the entrance\n * to the castle lobby\n */\nBAD_RETURN(s32) cam_castle_lobby_entrance(UNUSED struct Camera *c) {\n    vec3f_set(sCastleEntranceOffset, -813.f - sFixedModeBasePosition[0],\n              378.f - sFixedModeBasePosition[1], 1103.f - sFixedModeBasePosition[2]);\n}\n\n/**\n * Make the camera look up the stairs from the 2nd to 3rd floor of the castle\n */\nBAD_RETURN(s32) cam_castle_look_upstairs(struct Camera *c) {\n    struct Surface *floor;\n    f32 floorHeight = find_floor(c->pos[0], c->pos[1], c->pos[2], &floor);\n\n    // If Mario is on the first few steps, fix the camera pos, making it look up\n    if ((sMarioGeometry.currFloorHeight > 1229.f) && (floorHeight < 1229.f)\n        && (sCSideButtonYaw == 0)) {\n        vec3f_set(c->pos, -227.f, 1425.f, 1533.f);\n    }\n}\n\n/**\n * Make the camera look down the stairs towards the basement star door\n */\nBAD_RETURN(s32) cam_castle_basement_look_downstairs(struct Camera *c) {\n    struct Surface *floor;\n    f32 floorHeight = find_floor(c->pos[0], c->pos[1], c->pos[2], &floor);\n\n    // Fix the camera pos, making it look downwards. Only active on the top few steps\n    if ((floorHeight > -110.f) && (sCSideButtonYaw == 0)) {\n        vec3f_set(c->pos, -980.f, 249.f, -1398.f);\n    }\n}\n\n/**\n * Enter the fixed-mode castle lobby. A trigger for this is placed in every entrance so that the camera\n * changes to fixed mode.\n */\nBAD_RETURN(s32) cam_castle_enter_lobby(struct Camera *c) {\n    if (c->mode != CAMERA_MODE_FIXED) {\n        sStatusFlags &= ~CAM_FLAG_SMOOTH_MOVEMENT;\n        set_fixed_cam_axis_sa_lobby(c->mode);\n        c->mode = CAMERA_MODE_FIXED;\n    }\n}\n\n/**\n * Starts spiral stairs mode.\n */\nBAD_RETURN(s32) cam_castle_enter_spiral_stairs(struct Camera *c) {\n    transition_to_camera_mode(c, CAMERA_MODE_SPIRAL_STAIRS, 20);\n}\n\n/**\n * unused, starts close mode if the camera is in spiral stairs mode.\n * This was replaced with cam_castle_close_mode\n */\nstatic UNUSED BAD_RETURN(s32) cam_castle_leave_spiral_stairs(struct Camera *c) {\n    if (c->mode == CAMERA_MODE_SPIRAL_STAIRS) {\n        transition_to_camera_mode(c, CAMERA_MODE_CLOSE, 30);\n    } else {\n        set_camera_mode_close_cam(&c->mode);\n    }\n}\n\n/**\n * The default mode when outside of the lobby and spiral staircase. A trigger for this is placed at\n * every door leaving the lobby and spiral staircase.\n */\nBAD_RETURN(s32) cam_castle_close_mode(struct Camera *c) {\n    set_camera_mode_close_cam(&c->mode);\n}\n\n/**\n * Functions the same as cam_castle_close_mode, but sets doorStatus so that the camera will enter\n * fixed-mode when Mario leaves the room.\n */\nBAD_RETURN(s32) cam_castle_leave_lobby_sliding_door(struct Camera *c) {\n    cam_castle_close_mode(c);\n    c->doorStatus = DOOR_ENTER_LOBBY;\n}\n\n/**\n * Just calls cam_castle_enter_lobby\n */\nBAD_RETURN(s32) cam_castle_enter_lobby_sliding_door(struct Camera *c) {\n    cam_castle_enter_lobby(c);\n}\n\nBAD_RETURN(s32) cam_bbh_room_6(struct Camera *c) {\n    parallel_tracking_init(c, sBBHLibraryParTrackPath);\n}\n\nBAD_RETURN(s32) cam_bbh_fall_off_roof(struct Camera *c) {\n    set_camera_mode_close_cam(&c->mode);\n}\n\nBAD_RETURN(s32) cam_bbh_fall_into_pool(struct Camera *c) {\n    Vec3f dir;\n    set_camera_mode_close_cam(&c->mode);\n    vec3f_set(dir, 0.f, 0.f, 300.f);\n    offset_rotated(gLakituState.goalPos, sMarioCamState->pos, dir, sMarioCamState->faceAngle);\n    gLakituState.goalPos[1] = -2300.f;\n    vec3f_copy(c->pos, gLakituState.goalPos);\n    sStatusFlags &= ~CAM_FLAG_SMOOTH_MOVEMENT;\n}\n\nBAD_RETURN(s32) cam_bbh_room_1(struct Camera *c) {\n    set_camera_mode_fixed(c, 956, 440, 1994);\n}\n\nBAD_RETURN(s32) cam_bbh_leave_front_door(struct Camera *c) {\n    c->doorStatus = DOOR_LEAVING_SPECIAL;\n    cam_bbh_room_1(c);\n}\n\nBAD_RETURN(s32) cam_bbh_room_2_lower(struct Camera *c) {\n    set_camera_mode_fixed(c, 2591, 400, 1284);\n}\n\nBAD_RETURN(s32) cam_bbh_room_4(struct Camera *c) {\n    set_camera_mode_fixed(c, 3529, 340, -1384);\n}\n\nBAD_RETURN(s32) cam_bbh_room_8(struct Camera *c) {\n    set_camera_mode_fixed(c, -500, 740, -1306);\n}\n\n/**\n * In BBH's room 5's library (the first floor room with the vanish cap/boo painting)\n * set the camera mode to fixed and position to (-2172, 200, 675)\n */\nBAD_RETURN(s32) cam_bbh_room_5_library(struct Camera *c) {\n    set_camera_mode_fixed(c, -2172, 200, 675);\n}\n\n/**\n * In BBH's room 5 (the first floor room with the vanish cap/boo painting)\n * set the camera mode to to the hidden room's position\n * if coming from the library.\n */\nBAD_RETURN(s32) cam_bbh_room_5_library_to_hidden_transition(struct Camera *c) {\n    if (set_camera_mode_fixed(c, -2172, 200, 675) == 1) {\n        transition_next_state(c, 20);\n    }\n}\n\nBAD_RETURN(s32) cam_bbh_room_5_hidden_to_library_transition(struct Camera *c) {\n    if (set_camera_mode_fixed(c, -1542, 320, -307) == 1) {\n        transition_next_state(c, 20);\n    }\n}\n\nBAD_RETURN(s32) cam_bbh_room_5_hidden(struct Camera *c) {\n    c->doorStatus = DOOR_LEAVING_SPECIAL;\n    set_camera_mode_fixed(c, -1542, 320, -307);\n}\n\nBAD_RETURN(s32) cam_bbh_room_3(struct Camera *c) {\n    set_camera_mode_fixed(c, -1893, 320, 2327);\n}\n\nBAD_RETURN(s32) cam_bbh_room_7_mr_i(struct Camera *c) {\n    set_camera_mode_fixed(c, 1371, 360, -1302);\n}\n\nBAD_RETURN(s32) cam_bbh_room_7_mr_i_to_coffins_transition(struct Camera *c) {\n    if (set_camera_mode_fixed(c, 1371, 360, -1302) == 1) {\n        transition_next_state(c, 20);\n    }\n}\n\nBAD_RETURN(s32) cam_bbh_room_7_coffins_to_mr_i_transition(struct Camera *c) {\n    if (set_camera_mode_fixed(c, 2115, 260, -772) == 1) {\n        transition_next_state(c, 20);\n    }\n}\n\nBAD_RETURN(s32) cam_bbh_elevator_room_lower(struct Camera *c) {\n    c->doorStatus = DOOR_LEAVING_SPECIAL;\n    set_camera_mode_close_cam(&c->mode);\n}\n\nBAD_RETURN(s32) cam_bbh_room_0_back_entrance(struct Camera *c) {\n    set_camera_mode_close_cam(&c->mode);\n}\n\nBAD_RETURN(s32) cam_bbh_elevator(struct Camera *c) {\n    if (c->mode == CAMERA_MODE_FIXED) {\n        set_camera_mode_close_cam(&c->mode);\n        c->pos[1] = -405.f;\n        gLakituState.goalPos[1] = -405.f;\n    }\n}\n\nBAD_RETURN(s32) cam_bbh_room_12_upper(struct Camera *c) {\n    c->doorStatus = DOOR_LEAVING_SPECIAL;\n    set_camera_mode_fixed(c, -2932, 296, 4429);\n}\n\nBAD_RETURN(s32) cam_bbh_enter_front_door(struct Camera *c) {\n    set_camera_mode_close_cam(&c->mode);\n}\n\nBAD_RETURN(s32) cam_bbh_room_2_library(struct Camera *c) {\n    set_camera_mode_fixed(c, 3493, 440, 617);\n}\n\nBAD_RETURN(s32) cam_bbh_room_2_library_to_trapdoor_transition(struct Camera *c) {\n    if (set_camera_mode_fixed(c, 3493, 440, 617) == 1) {\n        transition_next_state(c, 20);\n    }\n}\n\nBAD_RETURN(s32) cam_bbh_room_2_trapdoor(struct Camera *c) {\n    set_camera_mode_fixed(c, 3502, 440, 1217);\n}\n\nBAD_RETURN(s32) cam_bbh_room_2_trapdoor_transition(struct Camera *c) {\n    if (set_camera_mode_fixed(c, 3502, 440, 1217) == 1) {\n        transition_next_state(c, 20);\n    }\n}\n\nBAD_RETURN(s32) cam_bbh_room_9_attic(struct Camera *c) {\n    set_camera_mode_fixed(c, -670, 460, 372);\n}\n\nBAD_RETURN(s32) cam_bbh_room_9_attic_transition(struct Camera *c) {\n    if (set_camera_mode_fixed(c, -670, 460, 372) == 1) {\n        transition_next_state(c, 20);\n    }\n}\n\nBAD_RETURN(s32) cam_bbh_room_9_mr_i_transition(struct Camera *c) {\n    if (set_camera_mode_fixed(c, 131, 380, -263) == 1) {\n        transition_next_state(c, 20);\n    }\n}\n\nBAD_RETURN(s32) cam_bbh_room_13_balcony(struct Camera *c) {\n    set_camera_mode_fixed(c, 210, 420, 3109);\n}\n\nBAD_RETURN(s32) cam_bbh_room_0(struct Camera *c) {\n    c->doorStatus = DOOR_LEAVING_SPECIAL;\n    set_camera_mode_fixed(c, -204, 807, 204);\n}\n\nBAD_RETURN(s32) cam_ccm_enter_slide_shortcut(UNUSED struct Camera *c) {\n    sStatusFlags |= CAM_FLAG_CCM_SLIDE_SHORTCUT;\n}\n\nBAD_RETURN(s32) cam_ccm_leave_slide_shortcut(UNUSED struct Camera *c) {\n    sStatusFlags &= ~CAM_FLAG_CCM_SLIDE_SHORTCUT;\n}\n\n/**\n * Apply any modes that are triggered by special floor surface types\n */\nu32 surface_type_modes(struct Camera *c) {\n    u32 modeChanged = 0;\n\n    switch (sMarioGeometry.currFloorType) {\n        case SURFACE_CLOSE_CAMERA:\n            transition_to_camera_mode(c, CAMERA_MODE_CLOSE, 90);\n            modeChanged++;\n            break;\n\n        case SURFACE_CAMERA_FREE_ROAM:\n            transition_to_camera_mode(c, CAMERA_MODE_FREE_ROAM, 90);\n            modeChanged++;\n            break;\n\n        case SURFACE_NO_CAM_COL_SLIPPERY:\n            transition_to_camera_mode(c, CAMERA_MODE_CLOSE, 90);\n            modeChanged++;\n            break;\n    }\n    return modeChanged;\n}\n\n/**\n * Set the camera mode to `mode` if Mario is not standing on a special surface\n */\nu32 set_mode_if_not_set_by_surface(struct Camera *c, u8 mode) {\n    u32 modeChanged = 0;\n    modeChanged = surface_type_modes(c);\n\n    if ((modeChanged == 0) && (mode != 0)) {\n        transition_to_camera_mode(c, mode, 90);\n    }\n\n    return modeChanged;\n}\n\n/**\n * Used in THI, check if Mario is standing on any of the special surfaces in that area\n */\nvoid surface_type_modes_thi(struct Camera *c) {\n    switch (sMarioGeometry.currFloorType) {\n        case SURFACE_CLOSE_CAMERA:\n            if (c->mode != CAMERA_MODE_CLOSE) {\n                transition_to_camera_mode(c, CAMERA_MODE_FREE_ROAM, 90);\n            }\n            break;\n\n        case SURFACE_CAMERA_FREE_ROAM:\n            if (c->mode != CAMERA_MODE_CLOSE) {\n                transition_to_camera_mode(c, CAMERA_MODE_FREE_ROAM, 90);\n            }\n            break;\n\n        case SURFACE_NO_CAM_COL_SLIPPERY:\n            if (c->mode != CAMERA_MODE_CLOSE) {\n                transition_to_camera_mode(c, CAMERA_MODE_FREE_ROAM, 90);\n            }\n            break;\n\n        case SURFACE_CAMERA_8_DIR:\n            transition_to_camera_mode(c, CAMERA_MODE_8_DIRECTIONS, 90);\n            break;\n\n        default:\n            transition_to_camera_mode(c, CAMERA_MODE_RADIAL, 90);\n    }\n}\n\n/**\n * Terminates a list of CameraTriggers.\n */\n#define NULL_TRIGGER                                                                                    \\\n    { 0, NULL, 0, 0, 0, 0, 0, 0, 0 }\n\n/**\n * The SL triggers operate camera behavior in front of the snowman who blows air.\n * The first sets a 8 direction mode, while the latter (which encompasses the former)\n * sets free roam mode.\n *\n * This behavior is exploitable, since the ranges assume that Mario must pass through the latter on\n * exit. Using hyperspeed, the earlier area can be directly exited from, keeping the changes it applies.\n */\nstruct CameraTrigger sCamSL[] = {\n    { 1, cam_sl_snowman_head_8dir, 1119, 3584, 1125, 1177, 358, 358, -0x1D27 },\n    // This trigger surrounds the previous one\n    { 1, cam_sl_free_roam, 1119, 3584, 1125, 4096, 4096, 4096, -0x1D27 },\n    NULL_TRIGGER\n};\n\n/**\n * The THI triggers are specifically for the tunnel near the start of the Huge Island.\n * The first helps the camera from getting stuck on the starting side, the latter aligns with the\n * tunnel. Both sides achieve their effect by editing the camera yaw.\n */\nstruct CameraTrigger sCamTHI[] = {\n    { 1, cam_thi_move_cam_through_tunnel, -4609, -2969, 6448, 100, 300, 300, 0 },\n    { 1, cam_thi_look_through_tunnel,     -4809, -2969, 6448, 100, 300, 300, 0 },\n    NULL_TRIGGER\n};\n\n/**\n * The HMC triggers are mostly for warping the camera below platforms, but the second trigger is used to\n * start the cutscene for entering the CotMC pool.\n */\nstruct CameraTrigger sCamHMC[] = {\n    { 1, cam_hmc_enter_maze, 1996, 102, 0, 205, 100, 205, 0 },\n    { 1, cam_castle_hmc_start_pool_cutscene, 3350, -4689, 4800, 600, 50, 600, 0 },\n    { 1, cam_hmc_elevator_black_hole, -3278, 1236, 1379, 358, 200, 358, 0 },\n    { 1, cam_hmc_elevator_maze_emergency_exit, -2816, 2055, -2560, 358, 200, 358, 0 },\n    { 1, cam_hmc_elevator_lake, -3532, 1543, -7040, 358, 200, 358, 0 },\n    { 1, cam_hmc_elevator_maze, -972, 1543, -7347, 358, 200, 358, 0 },\n    NULL_TRIGGER\n};\n\n/**\n * The SSL triggers are for starting the enter pyramid top cutscene,\n * setting close mode in the middle of the pyramid, and setting the boss fight camera mode to outward\n * radial.\n */\nstruct CameraTrigger sCamSSL[] = {\n    { 1, cam_ssl_enter_pyramid_top, -2048, 1080, -1024, 150, 150, 150, 0 },\n    { 2, cam_ssl_pyramid_center, 0, -104, -104, 1248, 1536, 2950, 0 },\n    { 2, cam_ssl_pyramid_center, 0, 2500, 256, 515, 5000, 515, 0 },\n    { 3, cam_ssl_boss_room, 0, -1534, -2040, 1000, 800, 1000, 0 },\n    NULL_TRIGGER\n};\n\n/**\n * The RR triggers are for changing between fixed and 8 direction mode when entering / leaving the building at\n * the end of the ride.\n */\nstruct CameraTrigger sCamRR[] = {\n    { 1, cam_rr_exit_building_side, -4197, 3819, -3087, 1769, 1490, 342, 0 },\n    { 1, cam_rr_enter_building_side, -4197, 3819, -3771, 769, 490, 342, 0 },\n    { 1, cam_rr_enter_building_window, -5603, 4834, -5209, 300, 600, 591, 0 },\n    { 1, cam_rr_enter_building, -2609, 3730, -5463, 300, 650, 577, 0 },\n    { 1, cam_rr_exit_building_top, -4196, 7343, -5155, 4500, 1000, 4500, 0 },\n    { 1, cam_rr_enter_building, -4196, 6043, -5155, 500, 300, 500, 0 },\n    NULL_TRIGGER,\n};\n\n/**\n * These triggers are unused, but because the first trigger surrounds the BoB tower and activates radial\n * mode (which is called \"tower mode\" in the patent), it's speculated they belonged to BoB.\n *\n * This table contains the only instance of a CameraTrigger with an area set to -1, and it sets the mode\n * to free_roam when Mario is not walking up the tower.\n */\nstruct CameraTrigger sCamBOB[] = {\n    {  1, cam_bob_tower, 2468, 2720, -4608, 3263, 1696, 3072, 0 },\n    { -1, cam_bob_default_free_roam, 0, 0, 0, 0, 0, 0, 0 },\n    NULL_TRIGGER\n};\n\n/**\n * The CotMC trigger is only used to prevent fix Lakitu in place when Mario exits through the waterfall.\n */\nstruct CameraTrigger sCamCotMC[] = {\n    { 1, cam_cotmc_exit_waterfall, 0, 1500, 3500, 550, 10000, 1500, 0 },\n    NULL_TRIGGER\n};\n\n/**\n * The CCM triggers are used to set the flag that says when Mario is in the slide shortcut.\n */\nstruct CameraTrigger sCamCCM[] = {\n    { 2, cam_ccm_enter_slide_shortcut, -4846, 2061, 27, 1229, 1342, 396, 0 },\n    { 2, cam_ccm_leave_slide_shortcut, -6412, -3917, -6246, 307, 185, 132, 0 },\n    NULL_TRIGGER\n};\n\n/**\n * The Castle triggers are used to set the camera to fixed mode when entering the lobby, and to set it\n * to close mode when leaving it. They also set the mode to spiral staircase.\n *\n * There are two triggers for looking up and down straight staircases when Mario is at the start,\n * and one trigger that starts the enter pool cutscene when Mario enters HMC.\n */\nstruct CameraTrigger sCamCastle[] = {\n    { 1, cam_castle_close_mode, -1100, 657, -1346, 300, 150, 300, 0 },\n    { 1, cam_castle_enter_lobby, -1099, 657, -803, 300, 150, 300, 0 },\n    { 1, cam_castle_close_mode, -2304, -264, -4072, 140, 150, 140, 0 },\n    { 1, cam_castle_close_mode, -2304, 145, -1344, 140, 150, 140, 0 },\n    { 1, cam_castle_enter_lobby, -2304, 145, -802, 140, 150, 140, 0 },\n    //! Sets the camera mode when leaving secret aquarium\n    { 1, cam_castle_close_mode, 2816, 1200, -256, 100, 100, 100, 0 },\n    { 1, cam_castle_close_mode, 256, -161, -4226, 140, 150, 140, 0 },\n    { 1, cam_castle_close_mode, 256, 145, -1344, 140, 150, 140, 0 },\n    { 1, cam_castle_enter_lobby, 256, 145, -802, 140, 150, 140, 0 },\n    { 1, cam_castle_close_mode, -1023, 44, -4870, 140, 150, 140, 0 },\n    { 1, cam_castle_close_mode, -459, 145, -1020, 140, 150, 140, 0x6000 },\n    { 1, cam_castle_enter_lobby, -85, 145, -627, 140, 150, 140, 0 },\n    { 1, cam_castle_close_mode, -1589, 145, -1020, 140, 150, 140, -0x6000 },\n    { 1, cam_castle_enter_lobby, -1963, 145, -627, 140, 150, 140, 0 },\n    { 1, cam_castle_leave_lobby_sliding_door, -2838, 657, -1659, 200, 150, 150, 0x2000 },\n    { 1, cam_castle_enter_lobby_sliding_door, -2319, 512, -1266, 300, 150, 300, 0x2000 },\n    { 1, cam_castle_close_mode, 844, 759, -1657, 40, 150, 40, -0x2000 },\n    { 1, cam_castle_enter_lobby, 442, 759, -1292, 140, 150, 140, -0x2000 },\n    { 2, cam_castle_enter_spiral_stairs, -1000, 657, 1740, 200, 300, 200, 0 },\n    { 2, cam_castle_enter_spiral_stairs, -996, 1348, 1814, 200, 300, 200, 0 },\n    { 2, cam_castle_close_mode, -946, 657, 2721, 50, 150, 50, 0 },\n    { 2, cam_castle_close_mode, -996, 1348, 907, 50, 150, 50, 0 },\n    { 2, cam_castle_close_mode, -997, 1348, 1450, 140, 150, 140, 0 },\n    { 1, cam_castle_close_mode, -4942, 452, -461, 140, 150, 140, 0x4000 },\n    { 1, cam_castle_close_mode, -3393, 350, -793, 140, 150, 140, 0x4000 },\n    { 1, cam_castle_enter_lobby, -2851, 350, -792, 140, 150, 140, 0x4000 },\n    { 1, cam_castle_enter_lobby, 803, 350, -228, 140, 150, 140, -0x4000 },\n    //! Duplicate camera trigger outside JRB door\n    { 1, cam_castle_enter_lobby, 803, 350, -228, 140, 150, 140, -0x4000 },\n    { 1, cam_castle_close_mode, 1345, 350, -229, 140, 150, 140, 0x4000 },\n    { 1, cam_castle_close_mode, -946, -929, 622, 300, 150, 300, 0 },\n    { 2, cam_castle_look_upstairs, -205, 1456, 2508, 210, 928, 718, 0 },\n    { 1, cam_castle_basement_look_downstairs, -1027, -587, -718, 318, 486, 577, 0 },\n    { 1, cam_castle_lobby_entrance, -1023, 376, 1830, 300, 400, 300, 0 },\n    { 3, cam_castle_hmc_start_pool_cutscene, 2485, -1689, -2659, 600, 50, 600, 0 },\n    NULL_TRIGGER\n};\n\n/**\n * The BBH triggers are the most complex, they cause the camera to enter fixed mode for each room,\n * transition between rooms, and enter free roam when outside.\n *\n * The triggers are also responsible for warping the camera below platforms.\n */\nstruct CameraTrigger sCamBBH[] = {\n    { 1, cam_bbh_enter_front_door, 742, 0, 2369, 200, 200, 200, 0 },\n    { 1, cam_bbh_leave_front_door, 741, 0, 1827, 200, 200, 200, 0 },\n    { 1, cam_bbh_room_1, 222, 0, 1458, 200, 200, 200, 0 },\n    { 1, cam_bbh_room_1, 222, 0, 639, 200, 200, 200, 0 },\n    { 1, cam_bbh_room_1, 435, 0, 222, 200, 200, 200, 0 },\n    { 1, cam_bbh_room_1, 1613, 0, 222, 200, 200, 200, 0 },\n    { 1, cam_bbh_room_1, 1827, 0, 1459, 200, 200, 200, 0 },\n    { 1, cam_bbh_room_1, -495, 819, 1407, 200, 200, 200, 0 },\n    { 1, cam_bbh_room_1, -495, 819, 640, 250, 200, 200, 0 },\n    { 1, cam_bbh_room_1, 179, 819, 222, 200, 200, 200, 0 },\n    { 1, cam_bbh_room_1, 1613, 819, 222, 200, 200, 200, 0 },\n    { 1, cam_bbh_room_1, 1827, 819, 486, 200, 200, 200, 0 },\n    { 1, cam_bbh_room_1, 1827, 819, 1818, 200, 200, 200, 0 },\n    { 1, cam_bbh_room_2_lower, 2369, 0, 1459, 200, 200, 200, 0 },\n    { 1, cam_bbh_room_2_lower, 3354, 0, 1347, 200, 200, 200, 0 },\n    { 1, cam_bbh_room_2_lower, 2867, 514, 1843, 512, 102, 409, 0 },\n    { 1, cam_bbh_room_4, 3354, 0, 804, 200, 200, 200, 0 },\n    { 1, cam_bbh_room_4, 1613, 0, -320, 200, 200, 200, 0 },\n    { 1, cam_bbh_room_8, 435, 0, -320, 200, 200, 200, 0 },\n    { 1, cam_bbh_room_5_library, -2021, 0, 803, 200, 200, 200, 0 },\n    { 1, cam_bbh_room_5_library, -320, 0, 640, 200, 200, 200, 0 },\n    { 1, cam_bbh_room_5_library_to_hidden_transition, -1536, 358, -254, 716, 363, 102, 0 },\n    { 1, cam_bbh_room_5_hidden_to_library_transition, -1536, 358, -459, 716, 363, 102, 0 },\n    { 1, cam_bbh_room_5_hidden, -1560, 0, -1314, 200, 200, 200, 0 },\n    { 1, cam_bbh_room_3, -320, 0, 1459, 200, 200, 200, 0 },\n    { 1, cam_bbh_room_3, -2021, 0, 1345, 200, 200, 200, 0 },\n    { 1, cam_bbh_room_2_library, 2369, 819, 486, 200, 200, 200, 0 },\n    { 1, cam_bbh_room_2_library, 2369, 1741, 486, 200, 200, 200, 0 },\n    { 1, cam_bbh_room_2_library_to_trapdoor_transition, 2867, 1228, 1174, 716, 414, 102, 0 },\n    { 1, cam_bbh_room_2_trapdoor_transition, 2867, 1228, 1378, 716, 414, 102, 0 },\n    { 1, cam_bbh_room_2_trapdoor, 2369, 819, 1818, 200, 200, 200, 0 },\n    { 1, cam_bbh_room_9_attic, 1829, 1741, 486, 200, 200, 200, 0 },\n    { 1, cam_bbh_room_9_attic, 741, 1741, 1587, 200, 200, 200, 0 },\n    { 1, cam_bbh_room_9_attic_transition, 102, 2048, -191, 100, 310, 307, 0 },\n    { 1, cam_bbh_room_9_mr_i_transition, 409, 2048, -191, 100, 310, 307, 0 },\n    { 1, cam_bbh_room_13_balcony, 742, 1922, 2164, 200, 200, 200, 0 },\n    { 1, cam_bbh_fall_off_roof, 587, 1322, 2677, 1000, 400, 600, 0 },\n    { 1, cam_bbh_room_3, -1037, 819, 1408, 200, 200, 200, 0 },\n    { 1, cam_bbh_room_3, -1970, 1024, 1345, 200, 200, 200, 0 },\n    { 1, cam_bbh_room_8, 179, 819, -320, 200, 200, 200, 0 },\n    { 1, cam_bbh_room_7_mr_i, 1613, 819, -320, 200, 200, 200, 0 },\n    { 1, cam_bbh_room_7_mr_i_to_coffins_transition, 2099, 1228, -819, 102, 414, 716, 0 },\n    { 1, cam_bbh_room_7_coffins_to_mr_i_transition, 2304, 1228, -819, 102, 414, 716, 0 },\n    { 1, cam_bbh_room_6, -1037, 819, 640, 200, 200, 200, 0 },\n    { 1, cam_bbh_room_6, -1970, 1024, 803, 200, 200, 200, 0 },\n    { 1, cam_bbh_room_1, 1827, 819, 1818, 200, 200, 200, 0 },\n    { 1, cam_bbh_fall_into_pool, 2355, -1112, -193, 1228, 500, 1343, 0 },\n    { 1, cam_bbh_fall_into_pool, 2355, -1727, 1410, 1228, 500, 705, 0 },\n    { 1, cam_bbh_elevator_room_lower, 0, -2457, 1827, 250, 200, 250, 0 },\n    { 1, cam_bbh_elevator_room_lower, 0, -2457, 2369, 250, 200, 250, 0 },\n    { 1, cam_bbh_elevator_room_lower, 0, -2457, 4929, 250, 200, 250, 0 },\n    { 1, cam_bbh_elevator_room_lower, 0, -2457, 4387, 250, 200, 250, 0 },\n    { 1, cam_bbh_room_0_back_entrance, 1887, -2457, 204, 250, 200, 250, 0 },\n    { 1, cam_bbh_room_0, 1272, -2457, 204, 250, 200, 250, 0 },\n    { 1, cam_bbh_room_0, -1681, -2457, 204, 250, 200, 250, 0 },\n    { 1, cam_bbh_room_0_back_entrance, -2296, -2457, 204, 250, 200, 250, 0 },\n    { 1, cam_bbh_elevator, -2939, -605, 5367, 800, 100, 800, 0 },\n    { 1, cam_bbh_room_12_upper, -2939, -205, 5367, 300, 100, 300, 0 },\n    { 1, cam_bbh_room_12_upper, -2332, -204, 4714, 250, 200, 250, 0x6000 },\n    { 1, cam_bbh_room_0_back_entrance, -1939, -204, 4340, 250, 200, 250, 0x6000 },\n    NULL_TRIGGER\n};\n\n#define _ NULL\n#define STUB_LEVEL(_0, _1, _2, _3, _4, _5, _6, _7, cameratable) cameratable,\n#define DEFINE_LEVEL(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, cameratable) cameratable,\n\n/*\n * This table has an extra 2 levels after the last unknown_38 stub level. What I think\n * the programmer was thinking was that the table is null terminated and so used the\n * level count as a correspondence to the ID of the final level, but the enum represents\n * an ID *after* the last stub level, not before or during it.\n *\n * Each table is terminated with NULL_TRIGGER\n */\nstruct CameraTrigger *sCameraTriggers[LEVEL_COUNT + 1] = {\n    NULL,\n    #include \"levels/level_defines.h\"\n};\n#undef _\n#undef STUB_LEVEL\n#undef DEFINE_LEVEL\n\nstruct CutsceneSplinePoint sIntroStartToPipePosition[] = {\n    { 0, 0, { 2122, 8762, 9114 } },  { 0, 0, { 2122, 8762, 9114 } },  { 1, 0, { 2122, 7916, 9114 } },\n    { 1, 0, { 2122, 7916, 9114 } },  { 2, 0, { 957, 5166, 8613 } },   { 3, 0, { 589, 4338, 7727 } },\n    { 4, 0, { 690, 3366, 6267 } },   { 5, 0, { -1600, 2151, 4955 } }, { 6, 0, { -1557, 232, 1283 } },\n    { 7, 0, { -6962, -295, 2729 } }, { 8, 0, { -6979, 131, 3246 } },  { 9, 0, { -6360, -283, 4044 } },\n    { 0, 0, { -5695, -334, 5264 } }, { 1, 0, { -5568, -319, 7933 } }, { 2, 0, { -3848, -200, 6278 } },\n    { 3, 0, { -965, -263, 6092 } },  { 4, 0, { 1607, 2465, 6329 } },  { 5, 0, { 2824, 180, 3548 } },\n    { 6, 0, { 1236, 136, 945 } },    { 0, 0, { 448, 136, 564 } },     { 0, 0, { 448, 136, 564 } },\n    { 0, 0, { 448, 136, 564 } },     { -1, 0, { 448, 136, 564 } }\n};\n\nstruct CutsceneSplinePoint sIntroStartToPipeFocus[] = {\n    { 0, 50, { 1753, 29800, 8999 } }, { 0, 50, { 1753, 29800, 8999 } },\n    { 1, 50, { 1753, 8580, 8999 } },  { 1, 100, { 1753, 8580, 8999 } },\n    { 2, 50, { 520, 5400, 8674 } },   { 3, 50, { 122, 4437, 7875 } },\n    { 4, 50, { 316, 3333, 6538 } },   { 5, 36, { -1526, 2189, 5448 } },\n    { 6, 50, { -1517, 452, 1731 } },  { 7, 50, { -6659, -181, 3109 } },\n    { 8, 17, { -6649, 183, 3618 } },  { 9, 20, { -6009, -214, 4395 } },\n    { 0, 50, { -5258, -175, 5449 } }, { 1, 36, { -5158, -266, 7651 } },\n    { 2, 26, { -3351, -192, 6222 } }, { 3, 25, { -483, -137, 6060 } },\n    { 4, 100, { 1833, 2211, 5962 } }, { 5, 26, { 3022, 207, 3090 } },\n    { 6, 20, { 1250, 197, 449 } },    { 7, 50, { 248, 191, 227 } },\n    { 7, 0, { 48, 191, 227 } },       { 7, 0, { 48, 191, 227 } },\n    { -1, 0, { 48, 191, 227 } }\n};\n\n/**\n * Describes the spline the camera follows, starting when the camera jumps to Lakitu and ending after\n * Mario jumps out of the pipe when the first dialog opens.  This table specifically updates the\n * camera's position.\n */\nstruct CutsceneSplinePoint sIntroPipeToDialogPosition[] = {\n    { 0, 0, { -785, 625, 4527 } },  { 1, 0, { -785, 625, 4527 } },  { 2, 0, { -1286, 644, 4376 } },\n    { 3, 0, { -1286, 623, 4387 } }, { 4, 0, { -1286, 388, 3963 } }, { 5, 0, { -1286, 358, 4093 } },\n    { 6, 0, { -1386, 354, 4159 } }, { 7, 0, { -1477, 306, 4223 } }, { 8, 0, { -1540, 299, 4378 } },\n    { 9, 0, { -1473, 316, 4574 } }, { 0, 0, { -1328, 485, 5017 } }, { 0, 0, { -1328, 485, 5017 } },\n    { 0, 0, { -1328, 485, 5017 } }, { -1, 0, { -1328, 485, 5017 } }\n};\n\n/**\n * Describes the spline that the camera's focus follows, during the same part of the intro as the above.\n */\n#ifdef VERSION_EU\nstruct CutsceneSplinePoint sIntroPipeToDialogFocus[] = {\n    { 0, 25, { -1248, 450, 4596 } }, { 1, 71, { -1258, 485, 4606 } }, { 2, 71, { -1379, 344, 4769 } },\n    { 3, 22, { -1335, 366, 4815 } }, { 4, 23, { -1315, 370, 4450 } }, { 5, 40, { -1322, 333, 4591 } },\n    { 6, 25, { -1185, 329, 4616 } }, { 7, 21, { -1059, 380, 4487 } }, { 8, 14, { -1086, 421, 4206 } },\n    { 9, 21, { -1321, 346, 4098 } }, { 0, 0, { -1328, 385, 4354 } },  { 0, 0, { -1328, 385, 4354 } },\n    { 0, 0, { -1328, 385, 4354 } },  { -1, 0, { -1328, 385, 4354 } }\n};\n#else\nstruct CutsceneSplinePoint sIntroPipeToDialogFocus[] = {\n    { 0, 20, { -1248, 450, 4596 } }, { 1, 59, { -1258, 485, 4606 } }, { 2, 59, { -1379, 344, 4769 } },\n    { 3, 20, { -1335, 366, 4815 } }, { 4, 23, { -1315, 370, 4450 } }, { 5, 40, { -1322, 333, 4591 } },\n    { 6, 25, { -1185, 329, 4616 } }, { 7, 21, { -1059, 380, 4487 } }, { 8, 14, { -1086, 421, 4206 } },\n    { 9, 21, { -1321, 346, 4098 } }, { 0, 0, { -1328, 385, 4354 } },  { 0, 0, { -1328, 385, 4354 } },\n    { 0, 0, { -1328, 385, 4354 } },  { -1, 0, { -1328, 385, 4354 } }\n};\n#endif\n\nstruct CutsceneSplinePoint sEndingFlyToWindowPos[] = {\n    { 0, 0, { -86, 876, 640 } },   { 1, 0, { -86, 876, 610 } },   { 2, 0, { -66, 945, 393 } },\n    { 3, 0, { -80, 976, 272 } },   { 4, 0, { -66, 1306, -36 } },  { 5, 0, { -70, 1869, -149 } },\n    { 6, 0, { -10, 2093, -146 } }, { 7, 0, { -10, 2530, -248 } }, { 8, 0, { -10, 2530, -263 } },\n    { 9, 0, { -10, 2530, -273 } }\n};\n\nstruct CutsceneSplinePoint sEndingFlyToWindowFocus[] = {\n    { 0, 50, { -33, 889, -7 } },    { 1, 35, { -33, 889, -7 } },    { 2, 31, { -17, 1070, -193 } },\n    { 3, 25, { -65, 1182, -272 } }, { 4, 20, { -64, 1559, -542 } }, { 5, 25, { -68, 2029, -677 } },\n    { 6, 25, { -9, 2204, -673 } },  { 7, 25, { -8, 2529, -772 } },  { 8, 0, { -8, 2529, -772 } },\n    { 9, 0, { -8, 2529, -772 } },   { -1, 0, { -8, 2529, -772 } }\n};\n\nstruct CutsceneSplinePoint sEndingPeachDescentCamPos[] = {\n    { 0, 50, { 1, 120, -1150 } },    { 1, 50, { 1, 120, -1150 } },    { 2, 40, { 118, 121, -1199 } },\n    { 3, 40, { 147, 74, -1306 } },   { 4, 40, { 162, 95, -1416 } },   { 5, 40, { 25, 111, -1555 } },\n    { 6, 40, { -188, 154, -1439 } }, { 7, 40, { -203, 181, -1242 } }, { 8, 40, { 7, 191, -1057 } },\n    { 9, 40, { 262, 273, -1326 } },  { 0, 40, { -4, 272, -1627 } },   { 1, 35, { -331, 206, -1287 } },\n    { 2, 30, { -65, 219, -877 } },   { 3, 25, { 6, 216, -569 } },     { 4, 25, { -8, 157, 40 } },\n    { 5, 25, { -4, 106, 200 } },     { 6, 25, { -6, 72, 574 } },      { 7, 0, { -6, 72, 574 } },\n    { 8, 0, { -6, 72, 574 } },       { -1, 0, { -6, 72, 574 } }\n};\n\nstruct CutsceneSplinePoint sEndingMarioToPeachPos[] = {\n    { 0, 0, { -130, 1111, -1815 } }, { 1, 0, { -131, 1052, -1820 } }, { 2, 0, { -271, 1008, -1651 } },\n    { 3, 0, { -439, 1043, -1398 } }, { 4, 0, { -433, 1040, -1120 } }, { 5, 0, { -417, 1040, -1076 } },\n    { 6, 0, { -417, 1040, -1076 } }, { 7, 0, { -417, 1040, -1076 } }, { -1, 0, { -417, 1040, -1076 } }\n};\n\nstruct CutsceneSplinePoint sEndingMarioToPeachFocus[] = {\n    { 0, 50, { -37, 1020, -1332 } }, { 1, 20, { -36, 1012, -1330 } }, { 2, 20, { -24, 1006, -1215 } },\n    { 3, 20, { 28, 1002, -1224 } },  { 4, 24, { 45, 1013, -1262 } },  { 5, 35, { 34, 1000, -1287 } },\n    { 6, 0, { 34, 1000, -1287 } },   { 7, 0, { 34, 1000, -1287 } },   { -1, 0, { 34, 1000, -1287 } }\n};\n\nstruct CutsceneSplinePoint sEndingLookUpAtCastle[] = {\n    { 0, 50, { 200, 1066, -1414 } }, { 0, 50, { 200, 1066, -1414 } }, { 0, 30, { 198, 1078, -1412 } },\n    { 0, 33, { 15, 1231, -1474 } },  { 0, 39, { -94, 1381, -1368 } }, { 0, 0, { -92, 1374, -1379 } },\n    { 0, 0, { -92, 1374, -1379 } },  { -1, 0, { -92, 1374, -1379 } }\n};\n\nstruct CutsceneSplinePoint sEndingLookAtSkyFocus[] = {\n#ifdef VERSION_EU\n    { 0, 50, { 484, 1368, -868 } }, { 0, 72, { 479, 1372, -872 } }, { 0, 50, { 351, 1817, -918 } },\n#else\n    { 0, 50, { 484, 1368, -888 } }, { 0, 72, { 479, 1372, -892 } }, { 0, 50, { 351, 1817, -918 } },\n#endif\n    { 0, 50, { 351, 1922, -598 } }, { 0, 0, { 636, 2027, -415 } },  { 0, 0, { 636, 2027, -415 } },\n    { -1, 0, { 636, 2027, -415 } }\n};\n\n/**\n * Activates any CameraTriggers that Mario is inside.\n * Then, applies area-specific processing to the camera, such as setting the default mode, or changing\n * the mode based on the terrain type Mario is standing on.\n *\n * @return the camera's mode after processing, although this is unused in the code\n */\ns16 camera_course_processing(struct Camera *c) {\n    s16 level = gCurrLevelNum;\n    s16 mode;\n    s8 area = gCurrentArea->index;\n    // Bounds iterator\n    u32 b;\n    // Camera trigger's bounding box\n    Vec3f center, bounds;\n    u32 insideBounds = FALSE;\n    UNUSED struct CameraTrigger unused;\n    u8 oldMode = c->mode;\n\n    if (c->mode == CAMERA_MODE_C_UP) {\n        c->mode = sModeInfo.lastMode;\n    }\n    check_blocking_area_processing(&c->mode);\n    if (level > LEVEL_COUNT + 1) {\n        level = LEVEL_COUNT + 1;\n    }\n\n    if (sCameraTriggers[level] != NULL) {\n        b = 0;\n\n        // Process positional triggers.\n        // All triggered events are called, not just the first one.\n        while (sCameraTriggers[level][b].event != NULL) {\n\n            // Check only the current area's triggers\n            if (sCameraTriggers[level][b].area == area) {\n                // Copy the bounding box into center and bounds\n                vec3f_set(center, sCameraTriggers[level][b].centerX,\n                                  sCameraTriggers[level][b].centerY,\n                                  sCameraTriggers[level][b].centerZ);\n                vec3f_set(bounds, sCameraTriggers[level][b].boundsX,\n                                  sCameraTriggers[level][b].boundsY,\n                                  sCameraTriggers[level][b].boundsZ);\n\n                // Check if Mario is inside the bounds\n                if (is_pos_in_bounds(sMarioCamState->pos, center, bounds,\n                                                   sCameraTriggers[level][b].boundsYaw) == TRUE) {\n                    //! This should be checked before calling is_pos_in_bounds. (It doesn't belong\n                    //! outside the while loop because some events disable area processing)\n                    if (!(sStatusFlags & CAM_FLAG_BLOCK_AREA_PROCESSING)) {\n                        sCameraTriggers[level][b].event(c);\n                        insideBounds = TRUE;\n                    }\n                }\n            }\n\n            if ((sCameraTriggers[level])[b].area == -1) {\n                // Default triggers are only active if Mario is not already inside another trigger\n                if (!insideBounds) {\n                    if (!(sStatusFlags & CAM_FLAG_BLOCK_AREA_PROCESSING)) {\n                        sCameraTriggers[level][b].event(c);\n                    }\n                }\n            }\n\n            b++;\n        }\n    }\n\n    // Area-specific camera processing\n    if (!(sStatusFlags & CAM_FLAG_BLOCK_AREA_PROCESSING)) {\n        switch (gCurrLevelArea) {\n            case AREA_WF:\n                if (sMarioCamState->action == ACT_RIDING_HOOT) {\n                    transition_to_camera_mode(c, CAMERA_MODE_SLIDE_HOOT, 60);\n                } else {\n                    switch (sMarioGeometry.currFloorType) {\n                        case SURFACE_CAMERA_8_DIR:\n                            transition_to_camera_mode(c, CAMERA_MODE_8_DIRECTIONS, 90);\n                            s8DirModeBaseYaw = DEGREES(90);\n                            break;\n\n                        case SURFACE_BOSS_FIGHT_CAMERA:\n                            if (gCurrActNum == 1) {\n                                set_camera_mode_boss_fight(c);\n                            } else {\n                                set_camera_mode_radial(c, 60);\n                            }\n                            break;\n                        default:\n                            set_camera_mode_radial(c, 60);\n                    }\n                }\n                break;\n\n            case AREA_BBH:\n                // if camera is fixed at bbh_room_13_balcony_camera (but as floats)\n                if (vec3f_compare(sFixedModeBasePosition, 210.f, 420.f, 3109.f) == TRUE) {\n                    if (sMarioCamState->pos[1] < 1800.f) {\n                        transition_to_camera_mode(c, CAMERA_MODE_CLOSE, 30);\n                    }\n                }\n                break;\n\n            case AREA_SSL_PYRAMID:\n                set_mode_if_not_set_by_surface(c, CAMERA_MODE_OUTWARD_RADIAL);\n                break;\n\n            case AREA_SSL_OUTSIDE:\n                set_mode_if_not_set_by_surface(c, CAMERA_MODE_RADIAL);\n                break;\n\n            case AREA_THI_HUGE:\n                break;\n\n            case AREA_THI_TINY:\n                surface_type_modes_thi(c);\n                break;\n\n            case AREA_TTC:\n                set_mode_if_not_set_by_surface(c, CAMERA_MODE_OUTWARD_RADIAL);\n                break;\n\n            case AREA_BOB:\n                if (set_mode_if_not_set_by_surface(c, CAMERA_MODE_NONE) == 0) {\n                    if (sMarioGeometry.currFloorType == SURFACE_BOSS_FIGHT_CAMERA) {\n                        set_camera_mode_boss_fight(c);\n                    } else {\n                        if (c->mode == CAMERA_MODE_CLOSE) {\n                            transition_to_camera_mode(c, CAMERA_MODE_RADIAL, 60);\n                        } else {\n                            set_camera_mode_radial(c, 60);\n                        }\n                    }\n                }\n                break;\n\n            case AREA_WDW_MAIN:\n                switch (sMarioGeometry.currFloorType) {\n                    case SURFACE_INSTANT_WARP_1B:\n                        c->defMode = CAMERA_MODE_RADIAL;\n                        break;\n                }\n                break;\n\n            case AREA_WDW_TOWN:\n                switch (sMarioGeometry.currFloorType) {\n                    case SURFACE_INSTANT_WARP_1C:\n                        c->defMode = CAMERA_MODE_CLOSE;\n                        break;\n                }\n                break;\n\n            case AREA_DDD_WHIRLPOOL:\n                //! @bug this does nothing\n                gLakituState.defMode = CAMERA_MODE_OUTWARD_RADIAL;\n                break;\n\n            case AREA_DDD_SUB:\n                if ((c->mode != CAMERA_MODE_BEHIND_MARIO)\n                    && (c->mode != CAMERA_MODE_WATER_SURFACE)) {\n                    if (((sMarioCamState->action & ACT_FLAG_ON_POLE) != 0)\n                        || (sMarioGeometry.currFloorHeight > 800.f)) {\n                        transition_to_camera_mode(c, CAMERA_MODE_8_DIRECTIONS, 60);\n\n                    } else {\n                        if (sMarioCamState->pos[1] < 800.f) {\n                            transition_to_camera_mode(c, CAMERA_MODE_FREE_ROAM, 60);\n                        }\n                    }\n                }\n                //! @bug this does nothing\n                gLakituState.defMode = CAMERA_MODE_FREE_ROAM;\n                break;\n        }\n    }\n\n    sStatusFlags &= ~CAM_FLAG_BLOCK_AREA_PROCESSING;\n    if (oldMode == CAMERA_MODE_C_UP) {\n        sModeInfo.lastMode = c->mode;\n        c->mode = oldMode;\n    }\n    mode = c->mode;\n    return mode;\n}\n\n/**\n * Move `pos` between the nearest floor and ceiling\n * @param lastGood unused, passed as the last position the camera was in\n */\nvoid resolve_geometry_collisions(Vec3f pos, UNUSED Vec3f lastGood) {\n    f32 ceilY, floorY;\n    struct Surface *surf;\n\n    f32_find_wall_collision(&pos[0], &pos[1], &pos[2], 0.f, 100.f);\n    floorY = find_floor(pos[0], pos[1] + 50.f, pos[2], &surf);\n    ceilY = find_ceil(pos[0], pos[1] - 50.f, pos[2], &surf);\n\n    if ((FLOOR_LOWER_LIMIT != floorY) && (CELL_HEIGHT_LIMIT == ceilY)) {\n        if (pos[1] < (floorY += 125.f)) {\n            pos[1] = floorY;\n        }\n    }\n\n    if ((FLOOR_LOWER_LIMIT == floorY) && (CELL_HEIGHT_LIMIT != ceilY)) {\n        if (pos[1] > (ceilY -= 125.f)) {\n            pos[1] = ceilY;\n        }\n    }\n\n    if ((FLOOR_LOWER_LIMIT != floorY) && (CELL_HEIGHT_LIMIT != ceilY)) {\n        floorY += 125.f;\n        ceilY -= 125.f;\n\n        if ((pos[1] <= floorY) && (pos[1] < ceilY)) {\n            pos[1] = floorY;\n        }\n        if ((pos[1] > floorY) && (pos[1] >= ceilY)) {\n            pos[1] = ceilY;\n        }\n        if ((pos[1] <= floorY) && (pos[1] >= ceilY)) {\n            pos[1] = (floorY + ceilY) * 0.5f;\n        }\n    }\n}\n\n/**\n * Checks for any walls obstructing Mario from view, and calculates a new yaw that the camera should\n * rotate towards.\n *\n * @param[out] avoidYaw the angle (from Mario) that the camera should rotate towards to avoid the wall.\n *                      The camera then approaches avoidYaw until Mario is no longer obstructed.\n *                      avoidYaw is always parallel to the wall.\n * @param yawRange      how wide of an arc to check for walls obscuring Mario.\n *\n * @return 3 if a wall is covering Mario, 1 if a wall is only near the camera.\n */\ns32 rotate_camera_around_walls(struct Camera *c, Vec3f cPos, s16 *avoidYaw, s16 yawRange) {\n    UNUSED u8 filler1[4];\n    struct WallCollisionData colData;\n    struct Surface *wall;\n    UNUSED u8 filler2[12];\n    f32 dummyDist, checkDist;\n    UNUSED u8 filler3[4];\n    f32 coarseRadius;\n    f32 fineRadius;\n    s16 wallYaw, horWallNorm;\n    UNUSED s16 unused;\n    s16 dummyPitch;\n    // The yaw of the vector from Mario to the camera.\n    s16 yawFromMario;\n    UNUSED u8 filler4[2];\n    s32 status = 0;\n    /// The current iteration. The algorithm takes 8 equal steps from Mario back to the camera.\n    s32 step = 0;\n    UNUSED u8 filler5[4];\n\n    vec3f_get_dist_and_angle(sMarioCamState->pos, cPos, &dummyDist, &dummyPitch, &yawFromMario);\n    sStatusFlags &= ~CAM_FLAG_CAM_NEAR_WALL;\n    colData.offsetY = 100.0f;\n    // The distance from Mario to Lakitu\n    checkDist = 0.0f;\n    /// The radius used to find potential walls to avoid.\n    /// @bug Increases to 250.f, but the max collision radius is 200.f\n    coarseRadius = 150.0f;\n    /// This only increases when there is a wall collision found in the coarse pass\n    fineRadius = 100.0f;\n\n    for (step = 0; step < 8; step++) {\n        // Start at Mario, move backwards to Lakitu's position\n        colData.x = sMarioCamState->pos[0] + ((cPos[0] - sMarioCamState->pos[0]) * checkDist);\n        colData.y = sMarioCamState->pos[1] + ((cPos[1] - sMarioCamState->pos[1]) * checkDist);\n        colData.z = sMarioCamState->pos[2] + ((cPos[2] - sMarioCamState->pos[2]) * checkDist);\n        colData.radius = coarseRadius;\n        // Increase the coarse check radius\n        camera_approach_f32_symmetric_bool(&coarseRadius, 250.f, 30.f);\n\n        if (find_wall_collisions(&colData) != 0) {\n            wall = colData.walls[colData.numWalls - 1];\n\n            // If we're over halfway from Mario to Lakitu, then there's a wall near the camera, but\n            // not necessarily obstructing Mario\n            if (step >= 5) {\n                sStatusFlags |= CAM_FLAG_CAM_NEAR_WALL;\n                if (status <= 0) {\n                    status = 1;\n                    wall = colData.walls[colData.numWalls - 1];\n                    // wallYaw is parallel to the wall, not perpendicular\n                    wallYaw = atan2s(wall->normal.z, wall->normal.x) + DEGREES(90);\n                    // Calculate the avoid direction. The function returns the opposite direction so add 180\n                    // degrees.\n                    *avoidYaw = calc_avoid_yaw(yawFromMario, wallYaw) + DEGREES(180);\n                }\n            }\n\n            colData.x = sMarioCamState->pos[0] + ((cPos[0] - sMarioCamState->pos[0]) * checkDist);\n            colData.y = sMarioCamState->pos[1] + ((cPos[1] - sMarioCamState->pos[1]) * checkDist);\n            colData.z = sMarioCamState->pos[2] + ((cPos[2] - sMarioCamState->pos[2]) * checkDist);\n            colData.radius = fineRadius;\n            // Increase the fine check radius\n            camera_approach_f32_symmetric_bool(&fineRadius, 200.f, 20.f);\n\n            if (find_wall_collisions(&colData) != 0) {\n                wall = colData.walls[colData.numWalls - 1];\n                horWallNorm = atan2s(wall->normal.z, wall->normal.x);\n                wallYaw = horWallNorm + DEGREES(90);\n                // If Mario would be blocked by the surface, then avoid it\n                if ((is_range_behind_surface(sMarioCamState->pos, cPos, wall, yawRange, SURFACE_WALL_MISC) == 0)\n                    && (is_mario_behind_surface(c, wall) == TRUE)\n                    // Also check if the wall is tall enough to cover Mario\n                    && (is_surf_within_bounding_box(wall, -1.f, 150.f, -1.f) == FALSE)) {\n                    // Calculate the avoid direction. The function returns the opposite direction so add 180\n                    // degrees.\n                    *avoidYaw = calc_avoid_yaw(yawFromMario, wallYaw) + DEGREES(180);\n                    camera_approach_s16_symmetric_bool(avoidYaw, horWallNorm, yawRange);\n                    status = 3;\n                    step = 8;\n                }\n            }\n        }\n        checkDist += 0.125f;\n    }\n\n    return status;\n}\n\n/**\n * Stores type and height of the nearest floor and ceiling to Mario in `pg`\n *\n * Note: Also finds the water level, but waterHeight is unused\n */\nvoid find_mario_floor_and_ceil(struct PlayerGeometry *pg) {\n    struct Surface *surf;\n    s16 tempCheckingSurfaceCollisionsForCamera = gCheckingSurfaceCollisionsForCamera;\n    gCheckingSurfaceCollisionsForCamera = TRUE;\n\n    if (find_floor(sMarioCamState->pos[0], sMarioCamState->pos[1] + 10.f,\n                   sMarioCamState->pos[2], &surf) != FLOOR_LOWER_LIMIT) {\n        pg->currFloorType = surf->type;\n    } else {\n        pg->currFloorType = 0;\n    }\n\n    if (find_ceil(sMarioCamState->pos[0], sMarioCamState->pos[1] - 10.f,\n                  sMarioCamState->pos[2], &surf) != CELL_HEIGHT_LIMIT) {\n        pg->currCeilType = surf->type;\n    } else {\n        pg->currCeilType = 0;\n    }\n\n    gCheckingSurfaceCollisionsForCamera = FALSE;\n    pg->currFloorHeight = find_floor(sMarioCamState->pos[0],\n                                     sMarioCamState->pos[1] + 10.f,\n                                     sMarioCamState->pos[2], &pg->currFloor);\n    pg->currCeilHeight = find_ceil(sMarioCamState->pos[0],\n                                   sMarioCamState->pos[1] - 10.f,\n                                   sMarioCamState->pos[2], &pg->currCeil);\n    pg->waterHeight = find_water_level(sMarioCamState->pos[0], sMarioCamState->pos[2]);\n    gCheckingSurfaceCollisionsForCamera = tempCheckingSurfaceCollisionsForCamera;\n}\n\n/**\n * Start a cutscene focusing on an object\n * This will play if nothing else happened in the same frame, like exiting or warping.\n */\nvoid start_object_cutscene(u8 cutscene, struct Object *o) {\n    sObjectCutscene = cutscene;\n    gRecentCutscene = 0;\n    gCutsceneFocus = o;\n    gObjCutsceneDone = FALSE;\n}\n\n/**\n * Start a low-priority cutscene without focusing on an object\n * This will play if nothing else happened in the same frame, like exiting or warping.\n */\nu8 start_object_cutscene_without_focus(u8 cutscene) {\n    sObjectCutscene = cutscene;\n    sCutsceneDialogResponse = DIALOG_RESPONSE_NONE;\n    return 0;\n}\n\ns16 unused_dialog_cutscene_response(u8 cutscene) {\n    // if not in a cutscene, start this one\n    if ((gCamera->cutscene == 0) && (sObjectCutscene == 0)) {\n        sObjectCutscene = cutscene;\n    }\n\n    // if playing this cutscene and Mario responded, return the response\n    if ((gCamera->cutscene == cutscene) && (sCutsceneDialogResponse != DIALOG_RESPONSE_NONE)) {\n        return sCutsceneDialogResponse;\n    } else {\n        return 0;\n    }\n}\n\ns16 cutscene_object_with_dialog(u8 cutscene, struct Object *o, s16 dialogID) {\n    s16 response = DIALOG_RESPONSE_NONE;\n\n    if ((gCamera->cutscene == 0) && (sObjectCutscene == 0)) {\n        if (gRecentCutscene != cutscene) {\n            start_object_cutscene(cutscene, o);\n            if (dialogID != DIALOG_NONE) {\n                sCutsceneDialogID = dialogID;\n            } else {\n                sCutsceneDialogID = DIALOG_001;\n            }\n        } else {\n            response = sCutsceneDialogResponse;\n        }\n\n        gRecentCutscene = 0;\n    }\n    return response;\n}\n\ns16 cutscene_object_without_dialog(u8 cutscene, struct Object *o) {\n    s16 response = cutscene_object_with_dialog(cutscene, o, DIALOG_NONE);\n    return response;\n}\n\n/**\n * @return 0 if not started, 1 if started, and -1 if finished\n */\ns16 cutscene_object(u8 cutscene, struct Object *o) {\n    s16 status = 0;\n\n    if ((gCamera->cutscene == 0) && (sObjectCutscene == 0)) {\n        if (gRecentCutscene != cutscene) {\n            start_object_cutscene(cutscene, o);\n            status = 1;\n        } else {\n            status = -1;\n        }\n    }\n    return status;\n}\n\n/**\n * Update the camera's yaw and nextYaw. This is called from cutscenes to ignore the camera mode's yaw.\n */\nvoid update_camera_yaw(struct Camera *c) {\n    c->nextYaw = calculate_yaw(c->focus, c->pos);\n    c->yaw = c->nextYaw;\n}\n\nvoid cutscene_reset_spline(void) {\n    sCutsceneSplineSegment = 0;\n    sCutsceneSplineSegmentProgress = 0;\n}\n\nvoid stop_cutscene_and_retrieve_stored_info(struct Camera *c) {\n    gCutsceneTimer = CUTSCENE_STOP;\n    c->cutscene = 0;\n    vec3f_copy(c->focus, sCameraStoreCutscene.focus);\n    vec3f_copy(c->pos, sCameraStoreCutscene.pos);\n}\n\nvoid cap_switch_save(s16 dummy) {\n    UNUSED s16 unused = dummy;\n    save_file_do_save(gCurrSaveFileNum - 1);\n}\n\nvoid init_spline_point(struct CutsceneSplinePoint *splinePoint, s8 index, u8 speed, Vec3s point) {\n    splinePoint->index = index;\n    splinePoint->speed = speed;\n    vec3s_copy(splinePoint->point, point);\n}\n\n// TODO: (Scrub C)\nvoid copy_spline_segment(struct CutsceneSplinePoint dst[], struct CutsceneSplinePoint src[]) {\n    s32 j = 0;\n    s32 i = 0;\n    UNUSED u8 filler[8];\n\n    init_spline_point(&dst[i], src[j].index, src[j].speed, src[j].point);\n    i++;\n    do {\n        do {\n            init_spline_point(&dst[i], src[j].index, src[j].speed, src[j].point);\n            i++;\n            j++;\n        } while ((src[j].index != -1) && (src[j].index != -1)); //! same comparison performed twice\n    } while (j > 16);\n\n    // Create the end of the spline by duplicating the last point\n    do { init_spline_point(&dst[i], 0, src[j].speed, src[j].point); } while (0);\n    do { init_spline_point(&dst[i + 1], 0, 0, src[j].point); } while (0);\n    do { init_spline_point(&dst[i + 2], 0, 0, src[j].point); } while (0);\n    do { init_spline_point(&dst[i + 3], -1, 0, src[j].point); } while (0);\n}\n\n/**\n * Triggers Mario to enter a dialog state. This is used to make Mario look at the focus of a cutscene,\n * for example, bowser.\n * @param state 0 = stop, 1 = start, 2 = start and look up, and 3 = start and look down\n *\n * @return if Mario left the dialog state, return CUTSCENE_LOOP, else return gCutsceneTimer\n */\ns16 cutscene_common_set_dialog_state(s32 state) {\n    s16 timer = gCutsceneTimer;\n    // If the dialog ended, return CUTSCENE_LOOP, which would end the cutscene shot\n    if (set_mario_npc_dialog(state) == MARIO_DIALOG_STATUS_SPEAK) {\n        timer = CUTSCENE_LOOP;\n    }\n    return timer;\n}\n\n/// Unused SSL cutscene?\nstatic UNUSED void unused_cutscene_mario_dialog_looking_down(UNUSED struct Camera *c) {\n    gCutsceneTimer = cutscene_common_set_dialog_state(MARIO_DIALOG_LOOK_DOWN);\n}\n\n/**\n * Cause Mario to enter the normal dialog state.\n */\nstatic BAD_RETURN(s32) cutscene_mario_dialog(UNUSED struct Camera *c) {\n    gCutsceneTimer = cutscene_common_set_dialog_state(MARIO_DIALOG_LOOK_FRONT);\n}\n\n/// Unused SSL cutscene?\nstatic UNUSED void unused_cutscene_mario_dialog_looking_up(UNUSED struct Camera *c) {\n    gCutsceneTimer = cutscene_common_set_dialog_state(MARIO_DIALOG_LOOK_UP);\n}\n\n/**\n * Lower the volume (US only) and start the peach letter background music\n */\nBAD_RETURN(s32) cutscene_intro_peach_start_letter_music(UNUSED struct Camera *c) {\n#if defined(VERSION_US) || defined(VERSION_SH) || defined(VERSION_CN)\n    seq_player_lower_volume(SEQ_PLAYER_LEVEL, 60, 40);\n#endif\n    cutscene_intro_peach_play_message_music();\n}\n\n/**\n * Raise the volume (not in JP) and start the flying music.\n */\nBAD_RETURN(s32) cutscene_intro_peach_start_flying_music(UNUSED struct Camera *c) {\n#ifndef VERSION_JP\n    seq_player_unlower_volume(SEQ_PLAYER_LEVEL, 60);\n#endif\n    cutscene_intro_peach_play_lakitu_flying_music();\n}\n\n#ifdef VERSION_EU\n/**\n * Lower the volume for the letter background music. In US, this happens on the same frame as the music\n * starts.\n */\nBAD_RETURN(s32) cutscene_intro_peach_eu_lower_volume(UNUSED struct Camera *c) {\n    seq_player_lower_volume(SEQ_PLAYER_LEVEL, 60, 40);\n}\n#endif\n\nvoid reset_pan_distance(UNUSED struct Camera *c) {\n    sPanDistance = 0;\n}\n\n/**\n * Easter egg: the player 2 controller can move the camera's focus in the ending and credits.\n */\nvoid player2_rotate_cam(struct Camera *c, s16 minPitch, s16 maxPitch, s16 minYaw, s16 maxYaw) {\n    f32 distCamToFocus;\n    s16 pitch, yaw, pitchCap;\n\n    // Change the camera rotation to match the 2nd player's stick\n    approach_s16_asymptotic_bool(&sCreditsPlayer2Yaw, -(s16)(gPlayer2Controller->stickX * 250.f), 4);\n    approach_s16_asymptotic_bool(&sCreditsPlayer2Pitch, -(s16)(gPlayer2Controller->stickY * 265.f), 4);\n    vec3f_get_dist_and_angle(c->pos, c->focus, &distCamToFocus, &pitch, &yaw);\n\n    pitchCap = 0x3800 - pitch; if (pitchCap < 0) {\n        pitchCap = 0;\n    }\n    if (maxPitch > pitchCap) {\n        maxPitch = pitchCap;\n    }\n\n    pitchCap = -0x3800 - pitch;\n    if (pitchCap > 0) {\n        pitchCap = 0;\n    }\n    if (minPitch < pitchCap) {\n        minPitch = pitchCap;\n    }\n\n    if (sCreditsPlayer2Pitch > maxPitch) {\n        sCreditsPlayer2Pitch = maxPitch;\n    }\n    if (sCreditsPlayer2Pitch < minPitch) {\n        sCreditsPlayer2Pitch = minPitch;\n    }\n\n    if (sCreditsPlayer2Yaw > maxYaw) {\n        sCreditsPlayer2Yaw = maxYaw;\n    }\n    if (sCreditsPlayer2Yaw < minYaw) {\n        sCreditsPlayer2Yaw = minYaw;\n    }\n\n    pitch += sCreditsPlayer2Pitch;\n    yaw += sCreditsPlayer2Yaw;\n    vec3f_set_dist_and_angle(c->pos, sPlayer2FocusOffset, distCamToFocus, pitch, yaw);\n    vec3f_sub(sPlayer2FocusOffset, c->focus);\n}\n\n/**\n * Store camera info for the cannon opening cutscene\n */\nvoid store_info_cannon(struct Camera *c) {\n    vec3f_copy(sCameraStoreCutscene.pos, c->pos);\n    vec3f_copy(sCameraStoreCutscene.focus, c->focus);\n    sCameraStoreCutscene.panDist = sPanDistance;\n    sCameraStoreCutscene.cannonYOffset = sCannonYOffset;\n}\n\n/**\n * Retrieve camera info for the cannon opening cutscene\n */\nvoid retrieve_info_cannon(struct Camera *c) {\n    vec3f_copy(c->pos, sCameraStoreCutscene.pos);\n    vec3f_copy(c->focus, sCameraStoreCutscene.focus);\n    sPanDistance = sCameraStoreCutscene.panDist;\n    sCannonYOffset = sCameraStoreCutscene.cannonYOffset;\n}\n\n/**\n * Store camera info for the star spawn cutscene\n */\nvoid store_info_star(struct Camera *c) {\n    reset_pan_distance(c);\n    vec3f_copy(sCameraStoreCutscene.pos, c->pos);\n    sCameraStoreCutscene.focus[0] = sMarioCamState->pos[0];\n    sCameraStoreCutscene.focus[1] = c->focus[1];\n    sCameraStoreCutscene.focus[2] = sMarioCamState->pos[2];\n}\n\n/**\n * Retrieve camera info for the star spawn cutscene\n */\nvoid retrieve_info_star(struct Camera *c) {\n    vec3f_copy(c->pos, sCameraStoreCutscene.pos);\n    vec3f_copy(c->focus, sCameraStoreCutscene.focus);\n}\n\nstatic UNUSED void unused_vec3s_to_vec3f(Vec3f dst, Vec3s src) {\n    dst[0] = src[0];\n    dst[1] = src[1];\n    dst[2] = src[2];\n}\n\nstatic UNUSED void unused_vec3f_to_vec3s(Vec3s dst, Vec3f src) {\n    // note: unlike vec3f_to_vec3s(), this function doesn't round the numbers and instead simply\n    // truncates them\n    dst[0] = src[0];\n    dst[1] = src[1];\n    dst[2] = src[2];\n}\n\n/**\n * Rotate the camera's focus around the camera's position by incYaw and incPitch\n */\nvoid pan_camera(struct Camera *c, s16 incPitch, s16 incYaw) {\n    UNUSED u8 filler[12];\n    f32 distCamToFocus;\n    s16 pitch, yaw;\n\n    vec3f_get_dist_and_angle(c->pos, c->focus, &distCamToFocus, &pitch, &yaw);\n    pitch += incPitch;     yaw += incYaw;\n    vec3f_set_dist_and_angle(c->pos, c->focus, distCamToFocus, pitch, yaw);\n}\n\nBAD_RETURN(s32) cutscene_shake_explosion(UNUSED struct Camera *c) {\n    set_environmental_camera_shake(SHAKE_ENV_EXPLOSION);\n    cutscene_set_fov_shake_preset(1);\n}\n\nstatic UNUSED void unused_start_bowser_bounce_shake(UNUSED struct Camera *c) {\n    set_environmental_camera_shake(SHAKE_ENV_BOWSER_THROW_BOUNCE);\n}\n\n/**\n * Change the spherical coordinates of `to` relative to `from` by `incDist`, `incPitch`, and `incYaw`\n *\n * @param from    the base position\n * @param[out] to the destination position\n */\nvoid rotate_and_move_vec3f(Vec3f to, Vec3f from, f32 incDist, s16 incPitch, s16 incYaw) {\n    f32 dist;\n    s16 pitch, yaw;\n\n    vec3f_get_dist_and_angle(from, to, &dist, &pitch, &yaw);\n    pitch += incPitch;\n    yaw += incYaw;\n    dist += incDist;\n    vec3f_set_dist_and_angle(from, to, dist, pitch, yaw);\n}\n\nvoid set_flag_post_door(struct Camera *c) {\n    sStatusFlags |= CAM_FLAG_BEHIND_MARIO_POST_DOOR;\n    sCameraYawAfterDoorCutscene = calculate_yaw(c->focus, c->pos);\n}\n\nvoid cutscene_soften_music(UNUSED struct Camera *c) {\n    seq_player_lower_volume(SEQ_PLAYER_LEVEL, 60, 40);\n}\n\nvoid cutscene_unsoften_music(UNUSED struct Camera *c) {\n    seq_player_unlower_volume(SEQ_PLAYER_LEVEL, 60);\n}\n\nUNUSED static void stub_camera_5(UNUSED struct Camera *c) {\n}\n\nBAD_RETURN(s32) cutscene_unused_start(UNUSED struct Camera *c) {\n}\n\nBAD_RETURN(s32) cutscene_unused_loop(UNUSED struct Camera *c) {\n}\n\n/**\n * Set the camera position and focus for when Mario falls from the sky.\n */\nBAD_RETURN(s32) cutscene_ending_mario_fall_start(struct Camera *c) {\n    vec3f_set(c->focus, -26.f, 0.f, -137.f);\n    vec3f_set(c->pos, 165.f, 4725.f, 324.f);\n}\n\n/**\n * Focus on Mario when he's falling from the sky.\n */\nBAD_RETURN(s32) cutscene_ending_mario_fall_focus_mario(struct Camera *c) {\n    Vec3f offset;\n    vec3f_set(offset, 0.f, 80.f, 0.f);\n\n    offset[2] = ABS(sMarioCamState->pos[1] - c->pos[1]) * -0.1f;\n    if (offset[2] > -100.f) {\n        offset[2] = -100.f;\n    }\n\n    offset_rotated(c->focus, sMarioCamState->pos, offset, sMarioCamState->faceAngle);\n}\n\n/**\n * Mario falls from the sky after the grand star cutscene.\n */\nBAD_RETURN(s32) cutscene_ending_mario_fall(struct Camera *c) {\n    cutscene_event(cutscene_ending_mario_fall_start, c, 0, 0);\n    cutscene_event(cutscene_ending_mario_fall_focus_mario, c, 0, -1);\n    player2_rotate_cam(c, -0x2000, 0x2000, -0x2000, 0x2000);\n}\n\n/**\n * Closeup of Mario as the wing cap fades and Mario looks up.\n */\nBAD_RETURN(s32) cutscene_ending_mario_land_closeup(struct Camera *c) {\n    vec3f_set(c->focus, 85.f, 826.f, 250.f);\n    vec3f_set(c->pos, -51.f, 988.f, -202.f);\n    player2_rotate_cam(c, -0x2000, 0x2000, -0x2000, 0x2000);\n}\n\n/**\n * Reset the spline progress and cvar9.\n */\nBAD_RETURN(s32) cutscene_ending_reset_spline(UNUSED struct Camera *c) {\n    sCutsceneVars[9].point[0] = 0.f;\n    cutscene_reset_spline();\n}\n\n/**\n * Follow sEndingFlyToWindowPos/Focus up to the window.\n */\nBAD_RETURN(s32) cutscene_ending_fly_up_to_window(struct Camera *c) {\n    move_point_along_spline(c->pos, sEndingFlyToWindowPos, &sCutsceneSplineSegment, &sCutsceneSplineSegmentProgress);\n    move_point_along_spline(c->focus, sEndingFlyToWindowFocus, &sCutsceneSplineSegment, &sCutsceneSplineSegmentProgress);\n}\n\n/**\n * Move the camera up to the window as the star power frees peach.\n */\nBAD_RETURN(s32) cutscene_ending_stars_free_peach(struct Camera *c) {\n    cutscene_event(cutscene_ending_reset_spline, c, 0, 0);\n    cutscene_event(cutscene_ending_fly_up_to_window, c, 0, -1);\n    player2_rotate_cam(c, -0x2000, 0x2000, -0x2000, 0x2000);\n}\n\n/**\n * Move the camera to the ground as Mario lands.\n */\nBAD_RETURN(s32) cutscene_ending_mario_land(struct Camera *c) {\n    vec3f_set(c->focus, sEndingFlyToWindowFocus[0].point[0], sEndingFlyToWindowFocus[0].point[1] + 80.f, sEndingFlyToWindowFocus[0].point[2]);\n    vec3f_set(c->pos, sEndingFlyToWindowPos[0].point[0], sEndingFlyToWindowPos[0].point[1], sEndingFlyToWindowPos[0].point[2] + 150.f);\n    player2_rotate_cam(c, -0x800, 0x2000, -0x2000, 0x2000);\n}\n\n/**\n * Move the camera closer to peach appearing.\n */\nBAD_RETURN(s32) cutscene_ending_peach_appear_closeup(struct Camera *c) {\n    vec3f_set(c->pos, 179.f, 2463.f, -1216.f);\n    c->pos[1] = gCutsceneFocus->oPosY + 35.f;\n    vec3f_set(c->focus, gCutsceneFocus->oPosX, gCutsceneFocus->oPosY + 125.f, gCutsceneFocus->oPosZ);\n}\n\n/**\n * Peach fades in, the camera focuses on her.\n */\nBAD_RETURN(s32) cutscene_ending_peach_appears(struct Camera *c) {\n    cutscene_event(cutscene_ending_peach_appear_closeup, c, 0, 0);\n    approach_f32_asymptotic_bool(&c->pos[1], gCutsceneFocus->oPosY + 35.f, 0.02f);\n    approach_f32_asymptotic_bool(&c->focus[1], gCutsceneFocus->oPosY + 125.f, 0.15f);\n    player2_rotate_cam(c, -0x2000, 0x2000, -0x2000, 0x2000);\n}\n\n/**\n * Reset spline progress, set cvar2 y offset.\n */\nBAD_RETURN(s32) cutscene_ending_peach_descends_start(UNUSED struct Camera *c) {\n    cutscene_reset_spline();\n    sCutsceneVars[2].point[1] = 150.f;\n}\n\n/**\n * Follow the sEndingPeachDescentCamPos spline, which rotates around peach.\n */\nBAD_RETURN(s32) cutscene_ending_follow_peach_descent(struct Camera *c) {\n    move_point_along_spline(c->pos, sEndingPeachDescentCamPos, &sCutsceneSplineSegment, &sCutsceneSplineSegmentProgress);\n    c->pos[1] += gCutsceneFocus->oPosY + sCutsceneVars[3].point[1];\n}\n\n/**\n * Decrease cvar2's y offset while the camera flies backwards to Mario.\n */\nBAD_RETURN(s32) cutscene_ending_peach_descent_lower_focus(UNUSED struct Camera *c) {\n    camera_approach_f32_symmetric_bool(&(sCutsceneVars[2].point[1]), 90.f, 0.5f);\n}\n\n/**\n * Keep following the sEndingPeachDescentCamPos spline, which leads back to Mario.\n */\nBAD_RETURN(s32) cutscene_ending_peach_descent_back_to_mario(struct Camera *c) {\n    Vec3f pos;\n\n    move_point_along_spline(pos, sEndingPeachDescentCamPos, &sCutsceneSplineSegment, &sCutsceneSplineSegmentProgress);\n    c->pos[0] = pos[0];\n    c->pos[2] = pos[2];\n    approach_f32_asymptotic_bool(&c->pos[1], (pos[1] += gCutsceneFocus->oPosY), 0.07f);\n}\n\n/**\n * Peach starts floating to the ground. Rotate the camera around her, then fly backwards to Mario when\n * she lands.\n */\nBAD_RETURN(s32) cutscene_ending_peach_descends(struct Camera *c) {\n    cutscene_event(cutscene_ending_peach_descends_start, c, 0, 0);\n    cutscene_event(cutscene_ending_follow_peach_descent, c, 0, 299);\n    cutscene_event(cutscene_ending_peach_descent_back_to_mario, c, 300, -1);\n    cutscene_event(cutscene_ending_peach_descent_lower_focus, c, 300, -1);\n    vec3f_set(c->focus, gCutsceneFocus->oPosX, sCutsceneVars[2].point[1] + gCutsceneFocus->oPosY,\n              gCutsceneFocus->oPosZ);\n    player2_rotate_cam(c, -0x2000, 0x2000, -0x2000, 0x2000);\n}\n\n/**\n * Mario runs across the bridge to peach, and takes off his cap.\n * Follow the sEndingMarioToPeach* splines while Mario runs across.\n */\nBAD_RETURN(s32) cutscene_ending_mario_to_peach(struct Camera *c) {\n    cutscene_event(cutscene_ending_reset_spline, c, 0, 0);\n    move_point_along_spline(c->pos, sEndingMarioToPeachPos, &sCutsceneSplineSegment, &sCutsceneSplineSegmentProgress);\n    move_point_along_spline(c->focus, sEndingMarioToPeachFocus, &sCutsceneSplineSegment, &sCutsceneSplineSegmentProgress);\n    player2_rotate_cam(c, -0x2000, 0x2000, -0x2000, 0x2000);\n}\n\n/**\n * Make the focus follow the sEndingLookUpAtCastle spline.\n */\nBAD_RETURN(s32) cutscene_ending_look_up_at_castle(UNUSED struct Camera *c) {\n    move_point_along_spline(c->focus, sEndingLookUpAtCastle, &sCutsceneSplineSegment, &sCutsceneSplineSegmentProgress);\n}\n\n/**\n * Peach opens her eyes and the camera looks at the castle window again.\n */\nBAD_RETURN(s32) cutscene_ending_peach_wakeup(struct Camera *c) {\n    cutscene_event(cutscene_ending_reset_spline, c, 0, 0);\n    cutscene_event(cutscene_ending_look_up_at_castle, c, 0, 0);\n#ifdef VERSION_EU\n    cutscene_event(cutscene_ending_look_up_at_castle, c, 265, -1);\n    cutscene_spawn_obj(7, 315);\n    cutscene_spawn_obj(9, 355);\n#else\n    cutscene_event(cutscene_ending_look_up_at_castle, c, 250, -1);\n    cutscene_spawn_obj(7, 300);\n    cutscene_spawn_obj(9, 340);\n#endif\n    vec3f_set(c->pos, -163.f, 978.f, -1082.f);\n    player2_rotate_cam(c, -0x800, 0x2000, -0x2000, 0x2000);\n}\n\n/**\n * Side view of peach and Mario. Peach thanks Mario for saving her.\n */\nBAD_RETURN(s32) cutscene_ending_dialog(struct Camera *c) {\n    vec3f_set(c->focus, 11.f, 983.f, -1273.f);\n    vec3f_set(c->pos, -473.f, 970.f, -1152.f);\n    player2_rotate_cam(c, -0x800, 0x2000, -0x2000, 0x2000);\n}\n\n/**\n * Zoom in and move the camera close to Mario and peach.\n */\nBAD_RETURN(s32) cutscene_ending_kiss_closeup(struct Camera *c) {\n    set_fov_function(CAM_FOV_SET_29);\n    vec3f_set(c->focus, 350.f, 1034.f, -1216.f);\n    vec3f_set(c->pos, -149.f, 1021.f, -1216.f);\n}\n\n/**\n * Fly back and zoom out for Mario's spin after the kiss.\n */\nBAD_RETURN(s32) cutscene_ending_kiss_here_we_go(struct Camera *c) {\n    Vec3f pos, foc;\n\n    set_fov_function(CAM_FOV_DEFAULT);\n    vec3f_set(foc, 233.f, 1068.f, -1298.f);\n    vec3f_set(pos, -250.f, 966.f, -1111.f);\n    //! another double typo\n    approach_vec3f_asymptotic(c->pos, pos, 0.2, 0.1f, 0.2f);\n    approach_vec3f_asymptotic(c->focus, foc, 0.2, 0.1f, 0.2f);\n}\n\n/**\n * Peach kisses Mario on the nose.\n */\nBAD_RETURN(s32) cutscene_ending_kiss(struct Camera *c) {\n    cutscene_event(cutscene_ending_kiss_closeup, c, 0, 0);\n#ifdef VERSION_EU\n    cutscene_event(cutscene_ending_kiss_here_we_go, c, 185, -1);\n#else\n    cutscene_event(cutscene_ending_kiss_here_we_go, c, 155, -1);\n#endif\n    player2_rotate_cam(c, -0x800, 0x2000, -0x2000, 0x2000);\n}\n\n/**\n * Make the focus follow sEndingLookAtSkyFocus.\n */\nBAD_RETURN(s32) cutscene_ending_look_at_sky(struct Camera *c) {\n    move_point_along_spline(c->focus, sEndingLookAtSkyFocus, &sCutsceneSplineSegment, &sCutsceneSplineSegmentProgress);\n    vec3f_set(c->pos, 699.f, 1680.f, -703.f);\n}\n\n/**\n * Zoom in the fov. The fovFunc was just set to default, so it wants to approach 45. But while this is\n * called, it will stay at about 37.26f\n */\nBAD_RETURN(s32) cutscene_ending_zoom_fov(UNUSED struct Camera *c) {\n    sFOVState.fov = 37.f;\n}\n\n/**\n * Peach suggests baking a cake for Mario. Mario looks back at the camera before going inside the castle.\n */\nBAD_RETURN(s32) cutscene_ending_cake_for_mario(struct Camera *c) {\n    cutscene_event(cutscene_ending_reset_spline, c, 0, 0);\n    cutscene_event(cutscene_ending_look_at_sky, c, 0, 0);\n    cutscene_event(cutscene_ending_zoom_fov, c, 0, 499);\n    cutscene_event(cutscene_ending_look_at_sky, c, 500, -1);\n    cutscene_spawn_obj(8, 600);\n    cutscene_spawn_obj(8, 608);\n    cutscene_spawn_obj(8, 624);\n    cutscene_spawn_obj(8, 710);\n}\n\n/**\n * Stop the ending cutscene, reset the fov.\n */\nBAD_RETURN(s32) cutscene_ending_stop(struct Camera *c) {\n    set_fov_function(CAM_FOV_SET_45);\n    c->cutscene = 0;\n    gCutsceneTimer = CUTSCENE_STOP;\n}\n\n/**\n * Start the grand star cutscene.\n * cvar0 is a relative offset from Mario.\n * cvar1 is the is the camera's goal position.\n */\nBAD_RETURN(s32) cutscene_grand_star_start(UNUSED struct Camera *c) {\n    vec3f_set(sCutsceneVars[0].point, 0.f, 150.f, -600.f);\n    offset_rotated(sCutsceneVars[1].point, sMarioCamState->pos, sCutsceneVars[0].point, sMarioCamState->faceAngle);\n    sCutsceneVars[1].point[1] = 457.f;\n}\n\n/**\n * Make the camera fly to the front of Mario.\n */\nBAD_RETURN(s32) cutscene_grand_star_front_of_mario(struct Camera *c) {\n    f32 goalDist;\n    s16 goalPitch, goalYaw;\n    f32 dist;\n    s16 pitch, yaw;\n\n    vec3f_get_dist_and_angle(sMarioCamState->pos, sCutsceneVars[1].point, &goalDist, &goalPitch, &goalYaw);\n    vec3f_get_dist_and_angle(sMarioCamState->pos, c->pos, &dist, &pitch, &yaw);\n    approach_f32_asymptotic_bool(&dist, goalDist, 0.1f);\n    approach_s16_asymptotic_bool(&pitch, goalPitch, 32);\n    approach_s16_asymptotic_bool(&yaw, goalYaw + 0x1200, 20);\n    vec3f_set_dist_and_angle(sMarioCamState->pos, c->pos, dist, pitch, yaw);\n}\n\n/**\n * Started shortly after Mario starts the triple jump. Stores Mario's face angle and zeros cvar2.\n */\nBAD_RETURN(s32) cutscene_grand_star_mario_jump(UNUSED struct Camera *c) {\n    vec3s_set(sCutsceneVars[0].angle, 0, sMarioCamState->faceAngle[1], 0);\n    vec3f_set(sCutsceneVars[2].point, 0.f, 0.f, 0.f);\n}\n\n/**\n * Accelerate cvar2 to point back and to the left (relative to the camera).\n */\nBAD_RETURN(s32) cutscene_grand_star_accel_cvar2(UNUSED struct Camera *c) {\n    camera_approach_f32_symmetric_bool(&sCutsceneVars[2].point[2], -40.f, 2.0f);\n    sCutsceneVars[2].point[0] = 5.0f;\n}\n\n/**\n * Decrease cvar2 offset, follow Mario by directly updating the camera's pos.\n */\nBAD_RETURN(s32) cutscene_grand_star_approach_mario(struct Camera *c) {\n    camera_approach_f32_symmetric_bool(&sCutsceneVars[2].point[2], 0.f, 2.f);\n    sCutsceneVars[2].point[0] = 0.f;\n    approach_f32_asymptotic_bool(&c->pos[0], sMarioCamState->pos[0], 0.01f);\n    approach_f32_asymptotic_bool(&c->pos[2], sMarioCamState->pos[2], 0.01f);\n}\n\n/**\n * Offset the camera's position by cvar2. Before Mario triple jumps, this moves back and to the left.\n * After the triple jump, cvar2 decelerates to 0.\n */\nBAD_RETURN(s32) cutscene_grand_star_move_cvar2(struct Camera *c) {\n    offset_rotated(c->pos, c->pos, sCutsceneVars[2].point, sCutsceneVars[0].angle);\n}\n\nBAD_RETURN(s32) cutscene_grand_star_focus_mario(struct Camera *c) {\n    Vec3f foc;\n\n    vec3f_set(foc, sMarioCamState->pos[0], (sMarioCamState->pos[1] - 307.f) * 0.5f + 407.f, sMarioCamState->pos[2]);\n    approach_vec3f_asymptotic(c->focus, foc, 0.5f, 0.8f, 0.5f);\n}\n\n/**\n * The first part of the grand star cutscene, after Mario has collected the grand star.\n */\nBAD_RETURN(s32) cutscene_grand_star(struct Camera *c) {\n    sStatusFlags |= CAM_FLAG_SMOOTH_MOVEMENT;\n    cutscene_event(cutscene_grand_star_start, c, 0, 0);\n    cutscene_event(cutscene_grand_star_front_of_mario, c, 0, 109);\n    cutscene_event(cutscene_grand_star_focus_mario, c, 0, -1);\n    cutscene_event(cutscene_grand_star_mario_jump, c, 110, 110);\n    cutscene_event(cutscene_grand_star_accel_cvar2, c, 110, 159);\n    cutscene_event(cutscene_grand_star_approach_mario, c, 160, -1);\n    cutscene_event(cutscene_grand_star_move_cvar2, c, 110, -1);\n}\n\n/**\n * Zero the cvars that are used when Mario is flying.\n */\nBAD_RETURN(s32) cutscene_grand_star_fly_start(struct Camera *c) {\n    //! cvar7 is unused in grand star\n    vec3f_set(sCutsceneVars[7].point, 0.5f, 0.5f, 0.5f);\n    //! cvar6 is unused in grand star\n    vec3f_set(sCutsceneVars[6].point, 0.01f, 0.01f, 0.01f);\n    vec3f_set(sCutsceneVars[4].point, 0.f, 0.f, 0.f);\n    vec3f_set(sCutsceneVars[5].point, 0.f, c->focus[1] - sMarioCamState->pos[1], 0.f);\n    sCutsceneVars[8].point[2] = 0.f;\n    sCutsceneVars[8].point[0] = 0.f;\n}\n\n/**\n * Decrease the cvar offsets so that Lakitu flies closer to Mario.\n */\nBAD_RETURN(s32) cutscene_grand_star_fly_move_to_mario(UNUSED struct Camera *c) {\n    Vec3f posOff;\n\n    vec3f_set(posOff, -600.f, 0.f, -400.f);\n    approach_vec3f_asymptotic(sCutsceneVars[4].point, posOff, 0.05f, 0.05f, 0.05f);\n    camera_approach_f32_symmetric_bool(&sCutsceneVars[5].point[1], 0.f, 2.f);\n    camera_approach_f32_symmetric_bool(&sCutsceneVars[5].point[2], -200.f, 6.f);\n}\n\n/**\n * Gradually increase the cvar offsets so Lakitu flies away. Mario flies offscreen to the right.\n *\n * cvar4 is the position offset from Mario.\n * cvar5 is the focus offset from Mario.\n * cvar8.point[0] is the approach velocity.\n */\nBAD_RETURN(s32) cutscene_grand_star_fly_mario_offscreen(UNUSED struct Camera *c) {\n    camera_approach_f32_symmetric_bool(&sCutsceneVars[8].point[0], 15.f, 0.1f);\n\n    camera_approach_f32_symmetric_bool(&sCutsceneVars[4].point[0], -2000.f, sCutsceneVars[8].point[0]);\n    camera_approach_f32_symmetric_bool(&sCutsceneVars[4].point[1], 1200.f, sCutsceneVars[8].point[0] / 10.f);\n    camera_approach_f32_symmetric_bool(&sCutsceneVars[4].point[2], 1000.f, sCutsceneVars[8].point[0] / 10.f);\n\n    camera_approach_f32_symmetric_bool(&sCutsceneVars[5].point[0], 0.f, sCutsceneVars[8].point[0]);\n    camera_approach_f32_symmetric_bool(&sCutsceneVars[5].point[1], 1200.f, sCutsceneVars[8].point[0] / 2);\n    camera_approach_f32_symmetric_bool(&sCutsceneVars[5].point[2], 1000.f, sCutsceneVars[8].point[0] / 1.5f);\n}\n\n/**\n * Make Lakitu approach the cvars.\n * cvar4 is the position offset.\n * cvar5 is the focus offset.\n */\nBAD_RETURN(s32) cutscene_grand_star_fly_app_cvars(struct Camera *c) {\n    Vec3f goalPos, goalFoc;\n    f32 dist;\n    s16 pitch, yaw;\n\n    camera_approach_f32_symmetric_bool(&sCutsceneVars[8].point[2], 90.f, 2.5f);\n    offset_rotated(goalPos, sMarioCamState->pos, sCutsceneVars[4].point, sMarioCamState->faceAngle);\n    offset_rotated(goalFoc, sMarioCamState->pos, sCutsceneVars[5].point, sMarioCamState->faceAngle);\n\n    // Move towards goalPos by cvar8's Z speed\n    vec3f_get_dist_and_angle(goalPos, c->pos, &dist, &pitch, &yaw);\n    camera_approach_f32_symmetric_bool(&dist, 0, sCutsceneVars[8].point[2]);\n    vec3f_set_dist_and_angle(goalPos, c->pos, dist, pitch, yaw);\n\n    approach_vec3f_asymptotic(c->pos, goalPos, 0.01f, 0.01f, 0.01f);\n    approach_vec3f_asymptotic(c->focus, goalFoc, 0.5f, 0.8f, 0.5f);\n}\n\n/**\n * Part of the grand star cutscene, starts after Mario is flying.\n *\n * cvar4 and cvar5 are directions, relative to Mario:\n * cvar4 is used as the camera position's offset from Mario.\n * cvar5 is used as the camera focus's offset from Mario.\n *\n * cvar8.point[2] is Lakitu's speed.\n */\nBAD_RETURN(s32) cutscene_grand_star_fly(struct Camera *c) {\n    sStatusFlags |= CAM_FLAG_SMOOTH_MOVEMENT;\n    cutscene_event(cutscene_grand_star_fly_start, c, 0, 0);\n    cutscene_event(cutscene_grand_star_fly_move_to_mario, c, 0, 140);\n    cutscene_event(cutscene_grand_star_fly_mario_offscreen, c, 141, -1);\n    cutscene_event(cutscene_grand_star_fly_app_cvars, c, 0, -1);\n}\n\n/**\n * Adjust the camera focus towards a point `dist` units in front of Mario.\n * @param dist distance in Mario's forward direction. Note that this is relative to Mario, so a negative\n *        distance will focus in front of Mario, and a positive distance will focus behind him.\n */\nvoid focus_in_front_of_mario(struct Camera *c, f32 dist, f32 speed) {\n    Vec3f goalFocus, offset;\n\n    offset[0] = 0.f;\n    offset[2] = dist;\n    offset[1] = 100.f;\n\n    offset_rotated(goalFocus, sMarioCamState->pos, offset, sMarioCamState->faceAngle);\n    approach_vec3f_asymptotic(c->focus, goalFocus, speed, speed, speed);\n}\n\n/**\n * Approach Mario and look up. Since Mario faces the camera when he collects the star, there's no need\n * to worry about the camera's yaw.\n */\nBAD_RETURN(s32) cutscene_dance_move_to_mario(struct Camera *c) {\n    s16 pitch, yaw;\n    f32 dist;\n\n    vec3f_get_dist_and_angle(sMarioCamState->pos, c->pos, &dist, &pitch, &yaw);\n    approach_f32_asymptotic_bool(&dist, 600.f, 0.3f);\n    approach_s16_asymptotic_bool(&pitch, 0x1000, 0x10);\n    vec3f_set_dist_and_angle(sMarioCamState->pos, c->pos, dist, pitch, yaw);\n}\n\nBAD_RETURN(s32) cutscene_dance_rotate(struct Camera *c) {\n    rotate_and_move_vec3f(c->pos, sMarioCamState->pos, 0, 0, 0x200);\n}\n\nBAD_RETURN(s32) cutscene_dance_rotate_move_back(struct Camera *c) {\n    rotate_and_move_vec3f(c->pos, sMarioCamState->pos, -15.f, 0, 0);\n}\n\nBAD_RETURN(s32) cutscene_dance_rotate_move_towards_mario(struct Camera *c) {\n    rotate_and_move_vec3f(c->pos, sMarioCamState->pos, 20.f, 0, 0);\n}\n\n/**\n * Speculated to be dance-related due to its proximity to the other dance functions\n */\nUNUSED static BAD_RETURN(s32) cutscene_dance_unused(UNUSED struct Camera *c) {\n}\n\n/**\n * Slowly turn to the point 100 units in front of Mario\n */\nBAD_RETURN(s32) cutscene_dance_default_focus_mario(struct Camera *c) {\n    focus_in_front_of_mario(c, -100.f, 0.2f);\n}\n\n/**\n * Focus twice as far away as default dance, and move faster.\n */\nBAD_RETURN(s32) cutscene_dance_rotate_focus_mario(struct Camera *c) {\n    focus_in_front_of_mario(c, -200.f, 0.03f);\n}\n\nBAD_RETURN(s32) cutscene_dance_shake_fov(UNUSED struct Camera *c) {\n    set_fov_shake(0x200, 0x28, 0x8000);\n}\n\n/**\n * Handles both the default and rotate dance cutscenes.\n * In the default dance: the camera moves closer to Mario, then stays in place.\n * In the rotate dance: the camera moves closer and rotates clockwise around Mario.\n */\nBAD_RETURN(s32) cutscene_dance_default_rotate(struct Camera *c) {\n    sStatusFlags |= CAM_FLAG_SMOOTH_MOVEMENT;\n    sYawSpeed = 0;\n    set_fov_function(CAM_FOV_DEFAULT);\n    cutscene_event(cutscene_dance_default_focus_mario, c, 0, 20);\n    cutscene_event(cutscene_dance_move_to_mario, c, 0, 39);\n    // Shake the camera on the 4th beat of the music, when Mario gives the peace sign.\n    cutscene_event(cutscene_dance_shake_fov, c, 40, 40);\n\n    if (c->cutscene != CUTSCENE_DANCE_DEFAULT) { // CUTSCENE_DANCE_ROTATE\n        cutscene_event(cutscene_dance_rotate_focus_mario, c, 75, 102);\n        cutscene_event(cutscene_dance_rotate, c, 50, -1);\n        // These two functions move the camera away and then towards Mario.\n        cutscene_event(cutscene_dance_rotate_move_back, c, 50, 80);\n        cutscene_event(cutscene_dance_rotate_move_towards_mario, c, 70, 90);\n    } else {\n        // secret star, 100 coin star, or bowser red coin star.\n        if ((sMarioCamState->action != ACT_STAR_DANCE_NO_EXIT)\n            && (sMarioCamState->action != ACT_STAR_DANCE_WATER)\n            && (sMarioCamState->action != ACT_STAR_DANCE_EXIT)) {\n            gCutsceneTimer = CUTSCENE_STOP;\n            c->cutscene = 0;\n            transition_next_state(c, 20);\n            sStatusFlags |= CAM_FLAG_UNUSED_CUTSCENE_ACTIVE;\n        }\n    }\n}\n\n/**\n * If the camera's yaw is out of the range of `absYaw` +- `yawMax`, then set the yaw to `absYaw`\n */\nBAD_RETURN(s32) star_dance_bound_yaw(struct Camera *c, s16 absYaw, s16 yawMax) {\n    s16 dummyPitch, yaw;\n    f32 distCamToMario;\n    s16 yawFromAbs;\n\n    vec3f_get_dist_and_angle(sMarioCamState->pos, c->pos, &distCamToMario, &dummyPitch, &yaw);\n    yawFromAbs = yaw - absYaw;\n\n    // Because angles are s16, this checks if yaw is negative\n    if ((yawFromAbs & 0x8000) != 0) {\n        yawFromAbs = -yawFromAbs;\n    }\n    if (yawFromAbs > yawMax) {\n        yaw = absYaw;\n        c->nextYaw = yaw;\n        c->yaw = yaw;\n    }\n}\n\n/**\n * Start the closeup dance cutscene by restricting the camera's yaw in certain areas.\n * Store the camera's focus in cvar9.\n */\nBAD_RETURN(s32) cutscene_dance_closeup_start(struct Camera *c) {\n    UNUSED u8 filler[8];\n\n    if ((gLastCompletedStarNum == 4) && (gCurrCourseNum == COURSE_JRB)) {\n        star_dance_bound_yaw(c, 0x0, 0x4000);\n    }\n    if ((gLastCompletedStarNum == 1) && (gCurrCourseNum == COURSE_DDD)) {\n        star_dance_bound_yaw(c, 0x8000, 0x5000);\n    }\n    if ((gLastCompletedStarNum == 5) && (gCurrCourseNum == COURSE_WDW)) {\n        star_dance_bound_yaw(c, 0x8000, 0x800);\n    }\n\n    vec3f_copy(sCutsceneVars[9].point, c->focus);\n    //! cvar8 is unused in the closeup cutscene\n    sCutsceneVars[8].angle[0] = 0x2000;\n}\n\n/**\n * Focus the camera on Mario eye height.\n */\nBAD_RETURN(s32) cutscene_dance_closeup_focus_mario(struct Camera *c) {\n    Vec3f marioPos;\n\n    vec3f_set(marioPos, sMarioCamState->pos[0], sMarioCamState->pos[1] + 125.f, sMarioCamState->pos[2]);\n    approach_vec3f_asymptotic(sCutsceneVars[9].point, marioPos, 0.2f, 0.2f, 0.2f);\n    vec3f_copy(c->focus, sCutsceneVars[9].point);\n}\n\n/**\n * Fly above Mario, looking down.\n */\nBAD_RETURN(s32) cutscene_dance_closeup_fly_above(struct Camera *c) {\n    s16 pitch, yaw;\n    f32 dist;\n    s16 goalPitch = 0x1800;\n\n    if ((gLastCompletedStarNum == 6 && gCurrCourseNum == COURSE_SL) ||\n        (gLastCompletedStarNum == 4 && gCurrCourseNum == COURSE_TTC)) {\n        goalPitch = 0x800;\n    }\n\n    vec3f_get_dist_and_angle(sMarioCamState->pos, c->pos, &dist, &pitch, &yaw);\n    approach_f32_asymptotic_bool(&dist, 800.f, 0.05f);\n    approach_s16_asymptotic_bool(&pitch, goalPitch, 16);\n    approach_s16_asymptotic_bool(&yaw, c->yaw, 8);\n    vec3f_set_dist_and_angle(sMarioCamState->pos, c->pos, dist, pitch, yaw);\n}\n\n/**\n * Fly closer right when Mario gives the peace sign.\n */\nBAD_RETURN(s32) cutscene_dance_closeup_fly_closer(struct Camera *c) {\n    s16 pitch, yaw;\n    f32 dist;\n\n    vec3f_get_dist_and_angle(sMarioCamState->pos, c->pos, &dist, &pitch, &yaw);\n    approach_f32_asymptotic_bool(&dist, 240.f, 0.4f);\n    approach_s16_asymptotic_bool(&yaw, c->yaw, 8);\n    approach_s16_asymptotic_bool(&pitch, 0x1000, 5);\n    vec3f_set_dist_and_angle(sMarioCamState->pos, c->pos, dist, pitch, yaw);\n}\n\n/**\n * Zoom in by increasing fov to 80 degrees. Most dramatic zoom in the game.\n */\nBAD_RETURN(s32) cutscene_dance_closeup_zoom(UNUSED struct Camera *c) {\n    set_fov_function(CAM_FOV_APP_80);\n}\n\n/**\n * Shake fov, starts on the first frame Mario has the peace sign up.\n */\nBAD_RETURN(s32) cutscene_dance_closeup_shake_fov(UNUSED struct Camera *c) {\n    set_fov_shake(0x300, 0x30, 0x8000);\n}\n\n/**\n * The camera moves in for a closeup on Mario. Used for stars that are underwater or in tight places.\n */\nBAD_RETURN(s32) cutscene_dance_closeup(struct Camera *c) {\n    sStatusFlags |= CAM_FLAG_SMOOTH_MOVEMENT;\n\n    if (sMarioCamState->action == ACT_STAR_DANCE_WATER) {\n        cutscene_event(cutscene_dance_closeup_start, c, 0, 0);\n        cutscene_event(cutscene_dance_closeup_focus_mario, c, 0, -1);\n        cutscene_event(cutscene_dance_closeup_fly_above, c, 0, 62);\n        cutscene_event(cutscene_dance_closeup_fly_closer, c, 63, -1);\n        cutscene_event(cutscene_dance_closeup_zoom, c, 63, 63);\n        cutscene_event(cutscene_dance_closeup_shake_fov, c, 70, 70);\n    } else {\n        cutscene_event(cutscene_dance_closeup_start, c, 0, 0);\n        cutscene_event(cutscene_dance_closeup_focus_mario, c, 0, -1);\n        // Almost twice as fast as under water\n        cutscene_event(cutscene_dance_closeup_fly_above, c, 0, 32);\n        cutscene_event(cutscene_dance_closeup_fly_closer, c, 33, -1);\n        cutscene_event(cutscene_dance_closeup_zoom, c, 33, 33);\n        cutscene_event(cutscene_dance_closeup_shake_fov, c, 40, 40);\n    }\n    set_handheld_shake(HAND_CAM_SHAKE_CUTSCENE);\n}\n\n/**\n * cvar8.point[2] is the amount to increase distance from Mario\n */\nBAD_RETURN(s32) cutscene_dance_fly_away_start(struct Camera *c) {\n    Vec3f areaCenter;\n\n    vec3f_copy(sCutsceneVars[9].point, c->focus);\n    sCutsceneVars[8].point[2] = 65.f;\n\n    if (c->mode == CAMERA_MODE_RADIAL) {\n        vec3f_set(areaCenter, c->areaCenX, c->areaCenY, c->areaCenZ);\n        c->yaw = calculate_yaw(areaCenter, c->pos);\n        c->nextYaw = c->yaw;\n    }\n\n    // Restrict the camera yaw in tight spaces\n    if ((gLastCompletedStarNum == 6) && (gCurrCourseNum == COURSE_CCM)) {\n        star_dance_bound_yaw(c, 0x5600, 0x800);\n    }\n    if ((gLastCompletedStarNum == 2) && (gCurrCourseNum == COURSE_TTM)) {\n        star_dance_bound_yaw(c, 0x0,    0x800);\n    }\n    if ((gLastCompletedStarNum == 1) && (gCurrCourseNum == COURSE_SL)) {\n        star_dance_bound_yaw(c, 0x2000, 0x800);\n    }\n    if ((gLastCompletedStarNum == 3) && (gCurrCourseNum == COURSE_RR)) {\n        star_dance_bound_yaw(c, 0x0,    0x800);\n    }\n}\n\nBAD_RETURN(s32) cutscene_dance_fly_away_approach_mario(struct Camera *c) {\n    s16 pitch, yaw;\n    f32 dist;\n\n    vec3f_get_dist_and_angle(sMarioCamState->pos, c->pos, &dist, &pitch, &yaw);\n    approach_f32_asymptotic_bool(&dist, 600.f, 0.3f);\n    approach_s16_asymptotic_bool(&pitch, 0x1000, 16);\n    approach_s16_asymptotic_bool(&yaw, c->yaw, 8);\n    vec3f_set_dist_and_angle(sMarioCamState->pos, c->pos, dist, pitch, yaw);\n}\n\nBAD_RETURN(s32) cutscene_dance_fly_away_focus_mario(struct Camera *c) {\n    Vec3f marioPos;\n\n    vec3f_set(marioPos, sMarioCamState->pos[0], sMarioCamState->pos[1] + 125.f, sMarioCamState->pos[2]);\n    approach_vec3f_asymptotic(sCutsceneVars[9].point, marioPos, 0.2f, 0.2f, 0.2f);\n    vec3f_copy(c->focus, sCutsceneVars[9].point);\n}\n\n/**\n * Slowly pan the camera downwards and to the camera's right, using cvar9's angle.\n */\nvoid cutscene_pan_cvar9(struct Camera *c) {\n    vec3f_copy(c->focus, sCutsceneVars[9].point);\n    sCutsceneVars[9].angle[0] -= 29;\n    sCutsceneVars[9].angle[1] += 29;\n    pan_camera(c, sCutsceneVars[9].angle[0], sCutsceneVars[9].angle[1]);\n}\n\n/**\n * Move backwards and rotate slowly around Mario.\n */\nBAD_RETURN(s32) cutscene_dance_fly_rotate_around_mario(struct Camera *c) {\n    cutscene_pan_cvar9(c);\n    rotate_and_move_vec3f(c->pos, sMarioCamState->pos, sCutsceneVars[8].point[2], 0, 0);\n}\n\n/**\n * Rotate quickly while Lakitu flies up.\n */\nBAD_RETURN(s32) cutscene_dance_fly_away_rotate_while_flying(struct Camera *c) {\n    rotate_and_move_vec3f(c->pos, sMarioCamState->pos, 0, 0, 0x80);\n}\n\nBAD_RETURN(s32) cutscene_dance_fly_away_shake_fov(UNUSED struct Camera *c) {\n    set_fov_shake(0x400, 0x30, 0x8000);\n}\n\n/**\n * After collecting the star, Lakitu flies upwards out of the course.\n */\nBAD_RETURN(s32) cutscene_dance_fly_away(struct Camera *c) {\n    sStatusFlags |= CAM_FLAG_SMOOTH_MOVEMENT;\n    cutscene_event(cutscene_dance_fly_away_start, c, 0, 0);\n    cutscene_event(cutscene_dance_fly_away_focus_mario, c, 0, 30);\n    cutscene_event(cutscene_dance_fly_away_approach_mario, c, 0, 30);\n    cutscene_event(cutscene_dance_fly_rotate_around_mario, c, 55, 124);\n    cutscene_event(cutscene_dance_fly_away_rotate_while_flying, c, 55, 124);\n    cutscene_event(cutscene_dance_fly_away_shake_fov, c, 40, 40);\n    set_fov_function(CAM_FOV_DEFAULT);\n    set_handheld_shake(HAND_CAM_SHAKE_STAR_DANCE);\n}\n\n/**\n * Jump the camera pos and focus to cvar 8 and 7.\n * Called every frame, starting after 10, so when these cvars are updated, the camera will jump.\n */\nBAD_RETURN(s32) cutscene_key_dance_jump_cvar(struct Camera *c) {\n    offset_rotated(c->pos, sMarioCamState->pos, sCutsceneVars[8].point, sMarioCamState->faceAngle);\n    offset_rotated(c->focus, sMarioCamState->pos, sCutsceneVars[7].point, sMarioCamState->faceAngle);\n}\n\n/**\n * Jump to a closeup view of Mario and the key.\n */\nBAD_RETURN(s32) cutscene_key_dance_jump_closeup(UNUSED struct Camera *c) {\n    vec3f_set(sCutsceneVars[8].point, 38.f, 171.f, -248.f);\n    vec3f_set(sCutsceneVars[7].point, -57.f, 51.f, 187.f);\n}\n\n/**\n * Jump to a view from the lower left (Mario's right).\n */\nBAD_RETURN(s32) cutscene_key_dance_jump_lower_left(UNUSED struct Camera *c) {\n    vec3f_set(sCutsceneVars[8].point, -178.f, 62.f, -132.f);\n    vec3f_set(sCutsceneVars[7].point, 299.f, 91.f, 58.f);\n}\n\n/**\n * Jump to a rotated view from above.\n */\nBAD_RETURN(s32) cutscene_key_dance_jump_above(UNUSED struct Camera *c) {\n    gLakituState.keyDanceRoll = 0x2800;\n    vec3f_set(sCutsceneVars[8].point, 89.f, 373.f, -304.f);\n    vec3f_set(sCutsceneVars[7].point, 0.f, 127.f, 0.f);\n}\n\n/**\n * Finally, jump to a further view, slightly to Mario's left.\n */\nBAD_RETURN(s32) cutscene_key_dance_jump_last(UNUSED struct Camera *c) {\n    gLakituState.keyDanceRoll = 0;\n    vec3f_set(sCutsceneVars[8].point, 135.f, 158.f, -673.f);\n    vec3f_set(sCutsceneVars[7].point, -20.f, 135.f, -198.f);\n}\n\nBAD_RETURN(s32) cutscene_key_dance_shake_fov(UNUSED struct Camera *c) {\n    set_fov_shake(0x180, 0x30, 0x8000);\n}\n\nBAD_RETURN(s32) cutscene_key_dance_handheld_shake(UNUSED struct Camera *c) {\n    set_handheld_shake(HAND_CAM_SHAKE_CUTSCENE);\n}\n\nBAD_RETURN(s32) cutscene_key_dance_focus_mario(struct Camera *c) {\n    focus_in_front_of_mario(c, 0, 0.2f);\n}\n\n/**\n * Cutscene that plays when Mario collects a key from bowser. It's basically a sequence of four jump\n * cuts.\n */\nBAD_RETURN(s32) cutscene_key_dance(struct Camera *c) {\n    cutscene_event(cutscene_dance_move_to_mario, c, 0, 10);\n    cutscene_event(cutscene_key_dance_focus_mario, c, 0, 10);\n    cutscene_event(cutscene_key_dance_jump_closeup, c, 0, 0);\n    cutscene_event(cutscene_key_dance_jump_lower_left, c, 20, 20);\n    cutscene_event(cutscene_key_dance_jump_above, c, 35, 35);\n    cutscene_event(cutscene_key_dance_jump_last, c, 52, 52);\n    cutscene_event(cutscene_key_dance_jump_cvar, c, 11, -1);\n    cutscene_event(cutscene_key_dance_shake_fov, c, 54, 54);\n    cutscene_event(cutscene_key_dance_handheld_shake, c, 52, -1);\n}\n\nBAD_RETURN(s32) cutscene_bowser_area_shake_fov(UNUSED struct Camera *c) {\n    cutscene_set_fov_shake_preset(2);\n}\n\n/**\n * Set oBowserCamAct to 1, which causes bowser to start walking.\n */\nBAD_RETURN(s32) cutscene_bowser_area_start_bowser_walking(UNUSED struct Camera *c) {\n    gSecondCameraFocus->oBowserCamAct = BOWSER_CAM_ACT_WALK;\n}\n\n/**\n * Offset the camera from bowser using cvar2 and cvar3\n * @bug cvar2.point is (0,0,0) on the first frame, but because of the warp transition, this behavior\n *      isn't seen. After the first frame, cvar2.point is bowser's position.\n */\nBAD_RETURN(s32) cutscene_bowser_arena_set_pos(struct Camera *c) {\n    vec3f_set_dist_and_angle(sCutsceneVars[2].point, c->pos, sCutsceneVars[3].point[2],\n                                  sCutsceneVars[3].angle[0], sCutsceneVars[3].angle[1]);\n    vec3f_set(sCutsceneVars[2].point, gSecondCameraFocus->oPosX, gSecondCameraFocus->oPosY,\n              gSecondCameraFocus->oPosZ);\n}\n\n/**\n * Apply a sine wave to the focus's y coordinate.\n * The y offset starts at 120, then decreases to 0 before reaching ~240 on the last frame.\n */\nBAD_RETURN(s32) cutscene_bowser_arena_focus_sine(UNUSED struct Camera *c) {\n    //! unused initialization\n    f32 yOff = 150.0f;\n\n    // cvar4 was zeroed when the cutscene started.\n    yOff = sins(sCutsceneVars[4].angle[1]) * 120.0f + 120.0f;\n    sCutsceneVars[4].angle[1] -= 0x200;\n    approach_f32_asymptotic_bool(&sCutsceneVars[0].point[1], yOff, 0.5f);\n}\n\n/**\n * Set the camera focus according to cvar0 and cvar2.\n */\nBAD_RETURN(s32) cutscene_bowser_arena_set_focus(struct Camera *c) {\n    offset_rotated(c->focus, sCutsceneVars[2].point, sCutsceneVars[0].point, sCutsceneVars[2].angle);\n}\n\n/**\n * Adjust the cvar offsets, making the camera look up, move slightly further back, and focus a little\n * further in front of bowser.\n */\nBAD_RETURN(s32) cutscene_bowser_arena_adjust_offsets(UNUSED struct Camera *c) {\n    approach_s16_asymptotic_bool(&sCutsceneVars[3].angle[0], 0x6C8, 30);\n    approach_f32_asymptotic_bool(&sCutsceneVars[0].point[2], -200.f, 0.02f);\n    approach_f32_asymptotic_bool(&sCutsceneVars[3].point[2], 550.f, 0.02f);\n}\n\n/**\n * Decrease cvar0's z offset, making the camera focus pan left towards bowser.\n */\nBAD_RETURN(s32) cutscene_bowser_arena_pan_left(UNUSED struct Camera *c) {\n    approach_f32_asymptotic_bool(&sCutsceneVars[0].point[2], 0.f, 0.05f);\n}\n\n/**\n * Duplicate of cutscene_mario_dialog().\n */\nBAD_RETURN(s32) cutscene_bowser_arena_mario_dialog(UNUSED struct Camera *c) {\n    cutscene_common_set_dialog_state(MARIO_DIALOG_LOOK_FRONT);\n}\n\nvoid cutscene_stop_dialog(UNUSED struct Camera *c) {\n    cutscene_common_set_dialog_state(MARIO_DIALOG_STOP);\n}\n\n/**\n * Active for the first 5 frames of the cutscene.\n * cvar3 is the camera's polar offset from bowser\n * cvar2.angle is bowser's move angle\n *\n * cvar0 is the focus offset from bowser\n */\nBAD_RETURN(s32) cutscene_bowser_arena_start(struct Camera *c) {\n    sCutsceneVars[3].point[2] = 430.f;\n    sCutsceneVars[3].angle[1] = gSecondCameraFocus->oMoveAngleYaw - DEGREES(45);\n    sCutsceneVars[3].angle[0] = 0xD90;\n\n    //! Tricky math: Bowser starts at (0, 307, -1000), with a moveAngle of (0,0,0). A sane person would\n    //! expect this offset to move the focus to (0, 427, -1800).\n    //! BUT because offset_rotated() flips the Z direction (to match sm64's coordinate system), this\n    //! offset actually moves the focus to (0, 427, -200)\n    vec3f_set(sCutsceneVars[0].point, 0.f, 120.f, -800.f);\n    vec3s_set(sCutsceneVars[2].angle, gSecondCameraFocus->oMoveAnglePitch,\n              gSecondCameraFocus->oMoveAngleYaw, gSecondCameraFocus->oMoveAngleRoll);\n\n    // Set the camera's position and focus.\n    cutscene_bowser_arena_set_pos(c);\n    cutscene_bowser_arena_set_focus(c);\n}\n\n/**\n * Create the dialog box depending on which bowser fight Mario is in.\n */\nBAD_RETURN(s32) bowser_fight_intro_dialog(UNUSED struct Camera *c) {\n    s16 dialog;\n\n    switch (gCurrLevelNum) {\n        case LEVEL_BOWSER_1:\n            dialog = DIALOG_067;\n            break;\n        case LEVEL_BOWSER_2:\n            dialog = DIALOG_092;\n            break;\n        default: // LEVEL_BOWSER_3\n            dialog = DIALOG_093;\n    }\n\n    create_dialog_box(dialog);\n}\n\n/**\n * Create the dialog box and wait until it's gone.\n */\nBAD_RETURN(s32) cutscene_bowser_arena_dialog(struct Camera *c) {\n    cutscene_event(bowser_fight_intro_dialog, c, 0, 0);\n\n    if (get_dialog_id() == DIALOG_NONE) {\n        gCutsceneTimer = CUTSCENE_LOOP;\n    }\n}\n\n/**\n * End the bowser arena cutscene.\n */\nBAD_RETURN(s32) cutscene_bowser_arena_end(struct Camera *c) {\n    cutscene_stop_dialog(c);\n    c->cutscene = 0;\n    transition_next_state(c, 20);\n    sStatusFlags |= CAM_FLAG_UNUSED_CUTSCENE_ACTIVE;\n    sModeOffsetYaw = sMarioCamState->faceAngle[1] + DEGREES(90);\n    gSecondCameraFocus->oBowserCamAct = BOWSER_CAM_ACT_END;\n}\n\n/**\n * Cutscene that plays when Mario enters a bowser fight.\n */\nBAD_RETURN(s32) cutscene_bowser_arena(struct Camera *c) {\n    //! This does nothing, but may have been used in development\n    cutscene_spawn_obj(2, 0);\n\n    if (gSecondCameraFocus != NULL) {\n        cutscene_event(cutscene_bowser_arena_mario_dialog, c, 0, -1);\n        cutscene_event(cutscene_bowser_arena_start, c, 0, 5);\n        cutscene_event(cutscene_bowser_area_start_bowser_walking, c, 40, 40);\n        cutscene_event(cutscene_bowser_area_shake_fov, c, 145, 145);\n        cutscene_event(cutscene_bowser_arena_set_pos, c, 40, -1);\n        cutscene_event(cutscene_bowser_arena_pan_left, c, 40, 99);\n        cutscene_event(cutscene_bowser_arena_adjust_offsets, c, 100, -1);\n        cutscene_event(cutscene_bowser_arena_focus_sine, c, 40, 140);\n        cutscene_event(cutscene_bowser_arena_set_focus, c, 40, -1);\n        cutscene_event(cutscene_shake_explosion, c, 60, 60);\n        cutscene_event(cutscene_shake_explosion, c, 82, 82);\n        cutscene_event(cutscene_shake_explosion, c, 109, 109);\n        cutscene_event(cutscene_shake_explosion, c, 127, 127);\n    }\n}\n\nBAD_RETURN(s32) cutscene_star_spawn_store_info(struct Camera *c) {\n    store_info_star(c);\n}\n\n/**\n * Focus on the top of the star.\n */\nBAD_RETURN(s32) cutscene_star_spawn_focus_star(struct Camera *c) {\n    UNUSED u8 filler1[4]; // hMul?\n    Vec3f starPos;\n    UNUSED u8 filler2[4]; // vMul?\n\n    if (gCutsceneFocus != NULL) {\n        object_pos_to_vec3f(starPos, gCutsceneFocus);\n        starPos[1] += gCutsceneFocus->hitboxHeight;\n        approach_vec3f_asymptotic(c->focus, starPos, 0.1f, 0.1f, 0.1f);\n    }\n}\n\n/**\n * Use boss fight mode's update function to move the focus back.\n */\nBAD_RETURN(s32) cutscene_star_spawn_update_boss_fight(struct Camera *c) {\n    Vec3f pos, focus;\n\n    update_boss_fight_camera(c, focus, pos);\n    approach_vec3f_asymptotic(c->focus, focus, 0.2f, 0.2f, 0.2f);\n    approach_vec3f_asymptotic(c->pos, pos, 0.2f, 0.2f, 0.2f);\n}\n\n/**\n * Fly back to the camera's previous pos and focus.\n */\nBAD_RETURN(s32) cutscene_star_spawn_fly_back(struct Camera *c) {\n    retrieve_info_star(c);\n    transition_next_state(c, 15);\n}\n\n/**\n * Plays when a star spawns (ie from a box).\n */\nBAD_RETURN(s32) cutscene_star_spawn(struct Camera *c) {\n    cutscene_event(cutscene_star_spawn_store_info, c, 0, 0);\n    cutscene_event(cutscene_star_spawn_focus_star, c, 0, -1);\n    sStatusFlags |= CAM_FLAG_SMOOTH_MOVEMENT;\n\n    if (gObjCutsceneDone) {\n        // Set the timer to CUTSCENE_LOOP, which start the next shot.\n        gCutsceneTimer = CUTSCENE_LOOP;\n    }\n}\n\n/**\n * Move the camera back to Mario.\n */\nBAD_RETURN(s32) cutscene_star_spawn_back(struct Camera *c) {\n    if ((c->mode == CAMERA_MODE_BOSS_FIGHT) && (set_cam_angle(0) == CAM_ANGLE_LAKITU)) {\n        cutscene_event(cutscene_star_spawn_update_boss_fight, c, 0, -1);\n    } else {\n        cutscene_event(cutscene_star_spawn_fly_back, c, 0, 0);\n    }\n\n    sStatusFlags |= CAM_FLAG_SMOOTH_MOVEMENT;\n    sStatusFlags |= CAM_FLAG_UNUSED_CUTSCENE_ACTIVE;\n}\n\nBAD_RETURN(s32) cutscene_star_spawn_end(struct Camera *c) {\n    sStatusFlags |= CAM_FLAG_SMOOTH_MOVEMENT;\n    gCutsceneTimer = CUTSCENE_STOP;\n    c->cutscene = 0;\n}\n\nBAD_RETURN(s32) cutscene_exit_waterfall_warp(struct Camera *c) {\n    //! hardcoded position\n    vec3f_set(c->pos, -3899.f, 39.f, -5671.f);\n}\n\n/**\n * Look at Mario, used by cutscenes that play when Mario exits a course to castle grounds.\n */\nBAD_RETURN(s32) cutscene_exit_to_castle_grounds_focus_mario(struct Camera *c) {\n    vec3f_copy(c->focus, sMarioCamState->pos);\n    c->focus[1] = c->pos[1] + (sMarioCamState->pos[1] + 125.f - c->pos[1]) * 0.5f;\n    approach_vec3f_asymptotic(c->focus, sMarioCamState->pos, 0.05f, 0.4f, 0.05f);\n}\n\n/**\n * Cutscene that plays when Mario leaves CotMC through the waterfall.\n */\nBAD_RETURN(s32) cutscene_exit_waterfall(struct Camera *c) {\n    cutscene_event(cutscene_exit_waterfall_warp, c, 0, 0);\n    cutscene_event(cutscene_exit_to_castle_grounds_focus_mario, c, 0, -1);\n    update_camera_yaw(c);\n}\n\n/**\n * End the cutscene, used by cutscenes that play when Mario exits a course to castle grounds.\n */\nBAD_RETURN(s32) cutscene_exit_to_castle_grounds_end(struct Camera *c) {\n    sStatusFlags |= CAM_FLAG_SMOOTH_MOVEMENT;\n    gCutsceneTimer = CUTSCENE_STOP;\n    c->cutscene = 0;\n    update_camera_yaw(c);\n}\n\nBAD_RETURN(s32) cutscene_exit_fall_to_castle_grounds_warp(struct Camera *c) {\n    //! hardcoded position\n    vec3f_set(c->pos, 5830.f, 32.f, 3985.f);\n}\n\n/**\n * Cutscene that plays when Mario falls from WMotR.\n */\nBAD_RETURN(s32) cutscene_exit_fall_to_castle_grounds(struct Camera *c) {\n    cutscene_event(cutscene_exit_fall_to_castle_grounds_warp, c, 0, 0);\n    cutscene_event(cutscene_exit_to_castle_grounds_focus_mario, c, 0, -1);\n    update_camera_yaw(c);\n}\n\n/**\n * Start the red coin star spawning cutscene.\n */\nBAD_RETURN(s32) cutscene_red_coin_star_start(struct Camera *c) {\n    object_pos_to_vec3f(sCutsceneVars[1].point, gCutsceneFocus);\n    store_info_star(c);\n    // Store the default fov for after the cutscene\n    sCutsceneVars[2].point[2] = sFOVState.fov;\n}\n\n/**\n * Look towards the star's x and z position\n */\nBAD_RETURN(s32) cutscene_red_coin_star_focus_xz(struct Camera *c) {\n    approach_f32_asymptotic_bool(&c->focus[0], gCutsceneFocus->oPosX, 0.15f);\n    approach_f32_asymptotic_bool(&c->focus[2], gCutsceneFocus->oPosZ, 0.15f);\n}\n\n/**\n * Look towards the star's y position. Only active before the camera warp.\n */\nBAD_RETURN(s32) cutscene_red_coin_star_focus_y(struct Camera *c) {\n    approach_f32_asymptotic_bool(&c->focus[1], gCutsceneFocus->oPosY, 0.1f);\n}\n\n/**\n * Look 80% up towards the star. Only active after the camera warp.\n */\nBAD_RETURN(s32) cutscene_red_coin_star_look_up_at_star(struct Camera *c) {\n    c->focus[1] = sCutsceneVars[1].point[1] + (gCutsceneFocus->oPosY - sCutsceneVars[1].point[1]) * 0.8f;\n}\n\n/**\n * Warp the camera near the star's spawn point\n */\nBAD_RETURN(s32) cutscene_red_coin_star_warp(struct Camera *c) {\n    f32 dist;\n    s16 pitch, yaw, posYaw;\n    struct Object *o = gCutsceneFocus;\n\n    vec3f_set(sCutsceneVars[1].point, o->oHomeX, o->oHomeY, o->oHomeZ);\n    vec3f_get_dist_and_angle(sCutsceneVars[1].point, c->pos, &dist, &pitch, &yaw);\n    posYaw = calculate_yaw(sCutsceneVars[1].point, c->pos);\n    yaw = calculate_yaw(sCutsceneVars[1].point, sMarioCamState->pos);\n\n    if (ABS(yaw - posYaw + DEGREES(90)) < ABS(yaw - posYaw - DEGREES(90))) {\n        yaw += DEGREES(90);\n    } else {\n        yaw -= DEGREES(90);\n    }\n\n    vec3f_set_dist_and_angle(sCutsceneVars[1].point, c->pos, 400.f, 0x1000, yaw);\n    sStatusFlags &= ~CAM_FLAG_SMOOTH_MOVEMENT;\n}\n\n/**\n * Zoom out while looking at the star.\n */\nBAD_RETURN(s32) cutscene_red_coin_star_set_fov(UNUSED struct Camera *c) {\n    sFOVState.fov = 60.f;\n}\n\nBAD_RETURN(s32) cutscene_red_coin_star(struct Camera *c) {\n    sStatusFlags |= CAM_FLAG_SMOOTH_MOVEMENT;\n    cutscene_event(cutscene_red_coin_star_start, c, 0, 0);\n    cutscene_event(cutscene_red_coin_star_warp, c, 30, 30);\n    cutscene_event(cutscene_red_coin_star_focus_xz, c, 0, -1);\n    cutscene_event(cutscene_red_coin_star_focus_y, c, 0, 29);\n    cutscene_event(cutscene_red_coin_star_look_up_at_star, c, 30, -1);\n    cutscene_event(cutscene_red_coin_star_set_fov, c, 30, -1);\n\n    if (gObjCutsceneDone) {\n        // Set the timer to CUTSCENE_LOOP, which start the next shot.\n        gCutsceneTimer = CUTSCENE_LOOP;\n    }\n}\n\n/**\n * End the red coin star spawning cutscene\n */\nBAD_RETURN(s32) cutscene_red_coin_star_end(struct Camera *c) {\n    retrieve_info_star(c);\n    gCutsceneTimer = CUTSCENE_STOP;\n    c->cutscene = 0;\n    // Restore the default fov\n    sFOVState.fov = sCutsceneVars[2].point[2];\n}\n\n/**\n * Moves the camera towards the cutscene's focus, stored in sCutsceneVars[3].point\n *\n * sCutsceneVars[3].point is used as the target point\n * sCutsceneVars[0].point is used as the current camera focus during the transition\n *\n * @param rotPitch constant pitch offset to add to the camera's focus\n * @param rotYaw constant yaw offset to add to the camera's focus\n */\nvoid cutscene_goto_cvar_pos(struct Camera *c, f32 goalDist, s16 goalPitch, s16 rotPitch, s16 rotYaw) {\n    UNUSED u8 filler[4];\n    f32 nextDist;\n    s16 nextPitch, nextYaw;\n    // The next 2 polar coord points are only used in CUTSCENE_PREPARE_CANNON\n    f32 cannonDist;\n    s16 cannonPitch, cannonYaw;\n    f32 curDist;\n    s16 curPitch, curYaw;\n    UNUSED f64 unused;\n\n    vec3f_get_dist_and_angle(sCutsceneVars[3].point, c->pos, &nextDist, &nextPitch, &nextYaw);\n\n    // If over 8000 units away from the cannon, just teleport there\n    if ((nextDist > 8000.f) && (c->cutscene == CUTSCENE_PREPARE_CANNON)) {\n        nextDist = goalDist * 4.f;\n        nextPitch = goalPitch;\n        vec3f_copy(sCutsceneVars[0].point, sCutsceneVars[3].point);\n        sStatusFlags &= ~CAM_FLAG_SMOOTH_MOVEMENT;\n\n        if (gCurrLevelNum == LEVEL_TTM) {\n            nextYaw = atan2s(sCutsceneVars[3].point[2] - c->areaCenZ,\n                             sCutsceneVars[3].point[0] - c->areaCenX);\n        }\n    } else {\n        if (c->cutscene == CUTSCENE_PREPARE_CANNON) {\n            vec3f_get_dist_and_angle(c->pos, sCutsceneVars[0].point, &curDist, &curPitch, &curYaw);\n            vec3f_get_dist_and_angle(c->pos, sCutsceneVars[3].point, &cannonDist, &cannonPitch, &cannonYaw);\n            approach_f32_asymptotic_bool(&curDist, cannonDist, 0.1f);\n            approach_s16_asymptotic_bool(&curPitch, cannonPitch, 15);\n            approach_s16_asymptotic_bool(&curYaw, cannonYaw, 15);\n            // Move the current focus, sCutsceneVars[0].point, in the direction towards the cannon\n            vec3f_set_dist_and_angle(c->pos, sCutsceneVars[0].point, curDist, curPitch, curYaw);\n        } else {\n            approach_vec3f_asymptotic(sCutsceneVars[0].point, sCutsceneVars[3].point, 0.1f, 0.1f, 0.1f);\n        }\n    }\n\n    approach_f32_asymptotic_bool(&nextDist, goalDist, 0.05f);\n    approach_s16_asymptotic_bool(&nextPitch, goalPitch, 0x20);\n\n    vec3f_set_dist_and_angle(sCutsceneVars[3].point, c->pos, nextDist, nextPitch, nextYaw);\n    vec3f_copy(c->focus, sCutsceneVars[0].point);\n\n    // Apply the constant rotation given\n    pan_camera(c, rotPitch, rotYaw);\n    vec3f_get_dist_and_angle(c->pos, c->focus, &nextDist, &nextPitch, &nextYaw);\n\n    if (nextPitch < -0x3000) {\n        nextPitch = -0x3000;\n    }\n    if (nextPitch > 0x3000) {\n        nextPitch = 0x3000;\n    }\n\n    vec3f_set_dist_and_angle(c->pos, c->focus, nextDist, nextPitch, nextYaw);\n}\n\n/**\n * Store the camera's pos and focus, and copy the cannon's position to cvars.\n */\nBAD_RETURN(s32) cutscene_prepare_cannon_start(struct Camera *c) {\n    store_info_cannon(c);\n    vec3f_copy(sCutsceneVars[0].point, c->focus);\n    sCutsceneVars[2].point[0] = 30.f;\n    // Store the cannon door's position in sCutsceneVars[3]'s point\n    object_pos_to_vec3f(sCutsceneVars[3].point, gCutsceneFocus);\n    vec3s_set(sCutsceneVars[5].angle, 0, 0, 0);\n}\n\n/**\n * Fly towards the cannon door.\n */\nBAD_RETURN(s32) cutscene_prepare_cannon_fly_to_cannon(struct Camera *c) {\n    cutscene_goto_cvar_pos(c, 300.f, 0x2000, 0, sCutsceneVars[5].angle[1]);\n    camera_approach_s16_symmetric_bool(&sCutsceneVars[5].angle[1], 0x400, 17);\n    set_handheld_shake(HAND_CAM_SHAKE_CUTSCENE);\n}\n\n/**\n * Used in the cannon opening cutscene to fly back to the camera's last position and focus\n */\nvoid cannon_approach_prev(f32 *value, f32 target) {\n    f32 inc = ABS(target - *value) / sCutsceneVars[2].point[0];\n    camera_approach_f32_symmetric_bool(value, target, inc);\n}\n\n/**\n * Fly or warp back to the previous pos and focus, stored in sCameraStoreCutscene.\n */\nBAD_RETURN(s32) cutscene_prepare_cannon_fly_back(struct Camera *c) {\n    f32 distToPrevPos = calc_abs_dist(c->pos, sCameraStoreCutscene.pos);\n\n    if (distToPrevPos < 8000.f) {\n        cannon_approach_prev(&c->pos[0], sCameraStoreCutscene.pos[0]);\n        cannon_approach_prev(&c->pos[1], sCameraStoreCutscene.pos[1]);\n        cannon_approach_prev(&c->pos[2], sCameraStoreCutscene.pos[2]);\n        cannon_approach_prev(&c->focus[0], sCameraStoreCutscene.focus[0]);\n        cannon_approach_prev(&c->focus[1], sCameraStoreCutscene.focus[1]);\n        cannon_approach_prev(&c->focus[2], sCameraStoreCutscene.focus[2]);\n    } else {\n        // If too far away, just warp back\n        vec3f_copy(c->focus, sCameraStoreCutscene.focus);\n        vec3f_copy(c->pos, sCameraStoreCutscene.pos);\n        sStatusFlags &= ~CAM_FLAG_SMOOTH_MOVEMENT;\n    }\n    if (sCutsceneVars[2].point[0] > 1.f) {\n        sCutsceneVars[2].point[0] -= 1.f;\n    }\n}\n\n/**\n * Cutscene that plays when the cannon is opened.\n */\nBAD_RETURN(s32) cutscene_prepare_cannon(struct Camera *c) {\n    sStatusFlags |= CAM_FLAG_SMOOTH_MOVEMENT;\n    cutscene_event(cutscene_prepare_cannon_start, c, 0, 0);\n    cutscene_event(cutscene_prepare_cannon_fly_to_cannon, c, 0, 140);\n    cutscene_event(cutscene_prepare_cannon_fly_back, c, 141, -1);\n}\n\n/**\n * Stop the cannon opening cutscene.\n */\nBAD_RETURN(s32) cutscene_prepare_cannon_end(struct Camera *c) {\n    gCutsceneTimer = CUTSCENE_STOP;\n    c->cutscene = 0;\n    retrieve_info_cannon(c);\n    sStatusFlags |= CAM_FLAG_SMOOTH_MOVEMENT;\n}\n\n/**\n * Moves the camera to Mario's side when Mario starts ACT_WATER_DEATH\n * Note that ACT_WATER_DEATH only starts when Mario gets hit by an enemy under water. It does not start\n * when Mario drowns.\n */\nvoid water_death_move_to_mario_side(struct Camera *c) {\n    f32 dist;\n    s16 pitch, yaw;\n\n    vec3f_get_dist_and_angle(sMarioCamState->pos, c->pos, &dist, &pitch, &yaw);\n    approach_s16_asymptotic_bool(&yaw, (sMarioCamState->faceAngle[1] - 0x3000), 8);\n    vec3f_set_dist_and_angle(sMarioCamState->pos, c->pos, dist, pitch, yaw);\n}\n\n/**\n * Unnecessary, only used in cutscene_death_standing_goto_mario()\n */\nvoid death_goto_mario(struct Camera *c) {\n    cutscene_goto_cvar_pos(c, 400.f, 0x1000, 0x300, 0);\n}\n\nBAD_RETURN(s32) cutscene_death_standing_start(struct Camera *c) {\n    vec3f_copy(sCutsceneVars[0].point, c->focus);\n    vec3f_copy(sCutsceneVars[3].point, sMarioCamState->pos);\n    sCutsceneVars[3].point[1] += 70.f;\n}\n\n/**\n * Fly to Mario and turn on handheld shake.\n */\nBAD_RETURN(s32) cutscene_death_standing_goto_mario(struct Camera *c) {\n    death_goto_mario(c);\n    set_handheld_shake(HAND_CAM_SHAKE_HIGH);\n}\n\n/**\n * Cutscene that plays when Mario dies while standing.\n */\nBAD_RETURN(s32) cutscene_death_standing(struct Camera *c) {\n    cutscene_event(cutscene_death_standing_start, c, 0, 0);\n    cutscene_event(cutscene_death_standing_goto_mario, c, 0, -1);\n    sStatusFlags |= CAM_FLAG_SMOOTH_MOVEMENT;\n}\n\nBAD_RETURN(s32) cutscene_death_stomach_start(struct Camera *c) {\n    Vec3f offset = { 0, 40.f, -60.f };\n\n    offset_rotated(sCutsceneVars[3].point, sMarioCamState->pos, offset, sMarioCamState->faceAngle);\n    vec3f_copy(sCutsceneVars[0].point, c->focus);\n}\n\nBAD_RETURN(s32) cutscene_death_stomach_goto_mario(struct Camera *c) {\n    cutscene_goto_cvar_pos(c, 400.f, 0x1800, 0, -0x400);\n}\n\n/**\n * Ah, yes\n */\nUNUSED static void unused_water_death_move_to_side_of_mario(struct Camera *c) {\n    water_death_move_to_mario_side(c);\n}\n\n/**\n * Cutscene that plays when Mario dies on his stomach.\n */\nBAD_RETURN(s32) cutscene_death_stomach(struct Camera *c) {\n    cutscene_event(cutscene_death_stomach_start, c, 0, 0);\n    cutscene_event(cutscene_death_stomach_goto_mario, c, 0, -1);\n    sStatusFlags |= CAM_FLAG_SMOOTH_MOVEMENT;\n    set_handheld_shake(HAND_CAM_SHAKE_CUTSCENE);\n}\n\nBAD_RETURN(s32) cutscene_bbh_death_start(struct Camera *c) {\n    Vec3f dir = { 0, 40.f, 60.f };\n\n    offset_rotated(sCutsceneVars[3].point, sMarioCamState->pos, dir, sMarioCamState->faceAngle);\n    vec3f_copy(sCutsceneVars[0].point, c->focus);\n}\n\nBAD_RETURN(s32) cutscene_bbh_death_goto_mario(struct Camera *c) {\n    cutscene_goto_cvar_pos(c, 400.f, 0x1800, 0, 0x400);\n}\n\n/**\n * Cutscene that plays when Mario dies in BBH.\n */\nBAD_RETURN(s32) cutscene_bbh_death(struct Camera *c) {\n    cutscene_event(cutscene_bbh_death_start, c, 0, 0);\n    cutscene_event(cutscene_bbh_death_goto_mario, c, 0, -1);\n    sStatusFlags |= CAM_FLAG_SMOOTH_MOVEMENT;\n    set_handheld_shake(HAND_CAM_SHAKE_CUTSCENE);\n}\n\n/**\n * Copy the camera's focus to cvar0\n */\nBAD_RETURN(s32) cutscene_quicksand_death_start(struct Camera *c) {\n    vec3f_copy(sCutsceneVars[0].point, c->focus);\n}\n\n/**\n * Fly closer to Mario. In WATER_DEATH, move to Mario's side.\n */\nBAD_RETURN(s32) cutscene_quicksand_death_goto_mario(struct Camera *c) {\n    cutscene_goto_cvar_pos(c, 400.f, 0x2800, 0x200, 0);\n\n    if (c->cutscene == CUTSCENE_WATER_DEATH) {\n        water_death_move_to_mario_side(c);\n    }\n}\n\n/**\n * Cutscene that plays when Mario dies in quicksand.\n */\nBAD_RETURN(s32) cutscene_quicksand_death(struct Camera *c) {\n    sCutsceneVars[3].point[0] = sMarioCamState->pos[0];\n    sCutsceneVars[3].point[1] = sMarioCamState->pos[1] + 20.f;\n    sCutsceneVars[3].point[2] = sMarioCamState->pos[2];\n\n    cutscene_event(cutscene_quicksand_death_start, c, 0, 0);\n    cutscene_event(cutscene_quicksand_death_goto_mario, c, 0, -1);\n    sStatusFlags |= CAM_FLAG_SMOOTH_MOVEMENT;\n    set_handheld_shake(HAND_CAM_SHAKE_HIGH);\n}\n\n/**\n * Fly away from Mario near the end of the cutscene.\n */\nBAD_RETURN(s32) cutscene_suffocation_fly_away(UNUSED struct Camera *c) {\n    Vec3f target;\n    Vec3f offset = { 0, 20.f, 120.f };\n\n    offset_rotated(target, sMarioCamState->pos, offset, sMarioCamState->faceAngle);\n    approach_vec3f_asymptotic(sCutsceneVars[3].point, target, 0.1f, 0.1f, 0.1f);\n}\n\n/**\n * Keep Lakitu above the gas level.\n */\nBAD_RETURN(s32) cutscene_suffocation_stay_above_gas(struct Camera *c) {\n    UNUSED u8 filler1[4];\n    f32 gasLevel;\n    UNUSED u8 filler2[4];\n\n    cutscene_goto_cvar_pos(c, 400.f, 0x2800, 0x200, 0);\n    gasLevel = find_poison_gas_level(sMarioCamState->pos[0], sMarioCamState->pos[2]);\n\n    if (gasLevel != FLOOR_LOWER_LIMIT) {\n        if ((gasLevel += 130.f) > c->pos[1]) {\n            c->pos[1] = gasLevel;\n        }\n    }\n}\n\n/**\n * Quickly rotate around Mario.\n */\nBAD_RETURN(s32) cutscene_suffocation_rotate(struct Camera *c) {\n    f32 dist;\n    s16 pitch, yaw;\n\n    vec3f_get_dist_and_angle(sMarioCamState->pos, c->pos, &dist, &pitch, &yaw);\n    yaw += 0x100;\n    vec3f_set_dist_and_angle(sMarioCamState->pos, c->pos, dist, pitch, yaw);\n}\n\n/**\n * Cutscene that plays when Mario dies from suffocation (ie due to HMC gas).\n */\nBAD_RETURN(s32) cutscene_suffocation(struct Camera *c) {\n    cutscene_event(cutscene_death_stomach_start, c, 0, 0);\n    cutscene_event(cutscene_suffocation_rotate, c, 0, -1);\n    cutscene_event(cutscene_suffocation_stay_above_gas, c, 0, -1);\n    cutscene_event(cutscene_suffocation_fly_away, c, 50, -1);\n    sStatusFlags |= CAM_FLAG_SMOOTH_MOVEMENT;\n    set_handheld_shake(HAND_CAM_SHAKE_HIGH);\n}\n\nBAD_RETURN(s32) cutscene_enter_pool_start(struct Camera *c) {\n    vec3f_copy(sCutsceneVars[3].point, sMarioCamState->pos);\n\n    if (gCurrLevelNum == LEVEL_CASTLE) { // entering HMC\n        vec3f_set(sCutsceneVars[3].point, 2485.f, -1589.f, -2659.f);\n    }\n    if (gCurrLevelNum == LEVEL_HMC) { // entering CotMC\n        vec3f_set(sCutsceneVars[3].point, 3350.f, -4589.f, 4800.f);\n    }\n\n    vec3f_copy(sCutsceneVars[0].point, c->focus);\n}\n\nBAD_RETURN(s32) cutscene_enter_pool_loop(struct Camera *c) {\n    UNUSED u8 filler[8];\n\n    cutscene_goto_cvar_pos(c, 1200.f, 0x2000, 0x200, 0);\n}\n\nBAD_RETURN(s32) cutscene_enter_pool(struct Camera *c) {\n    cutscene_event(cutscene_enter_pool_start, c, 0, 0);\n    cutscene_event(cutscene_enter_pool_loop, c, 0, -1);\n    sStatusFlags |= CAM_FLAG_SMOOTH_MOVEMENT;\n}\n\n/**\n * Store the camera focus in cvar1.\n * Store the area's center position (which happens to be the pyramid, in SSL) in cvar3.\n */\nBAD_RETURN(s32) cutscene_pyramid_top_explode_start(struct Camera *c) {\n    reset_pan_distance(c);\n    store_info_cannon(c);\n\n    vec3f_copy(sCutsceneVars[1].point, c->focus);\n    vec3f_set(sCutsceneVars[3].point, c->areaCenX, 1280.f, c->areaCenZ);\n}\n\n/**\n * Zoom in on the pyramid.\n */\nBAD_RETURN(s32) cutscene_pyramid_top_explode_zoom_in(UNUSED struct Camera *c) {\n    set_fov_function(CAM_FOV_APP_30);\n}\n\n/**\n * Look at the pyramid top.\n */\nBAD_RETURN(s32) cutscene_pyramid_top_explode_focus(struct Camera *c) {\n    approach_vec3f_asymptotic(c->focus, sCutsceneVars[3].point, 0.02f, 0.02f, 0.02f);\n    sStatusFlags |= CAM_FLAG_SMOOTH_MOVEMENT;\n}\n\n/**\n * Store the old pos and focus, then warp to the pyramid top.\n */\nBAD_RETURN(s32) cutscene_pyramid_top_explode_warp(struct Camera *c) {\n    s16 pitch, yaw;\n    f32 dist;\n\n    set_fov_function(CAM_FOV_DEFAULT);\n    sFOVState.fov = 45.f;\n\n    vec3f_copy(sCutsceneVars[4].point, c->pos);\n    vec3f_copy(sCutsceneVars[5].point, c->focus);\n    vec3f_copy(c->focus, sCutsceneVars[3].point);\n\n    vec3f_get_dist_and_angle(sCutsceneVars[3].point, sMarioCamState[0].pos, &dist, &pitch, &yaw);\n    vec3f_set_dist_and_angle(sCutsceneVars[3].point, c->pos, 2000.f, 0, yaw);\n    c->pos[1] += 500.f;\n}\n\n/**\n * Close up view of the spinning pyramid top as it rises.\n */\nBAD_RETURN(s32) cutscene_pyramid_top_explode_closeup(struct Camera *c) {\n    s16 pitch, yaw;\n    f32 dist;\n\n    vec3f_get_dist_and_angle(sCutsceneVars[3].point, c->pos, &dist, &pitch, &yaw);\n    approach_f32_asymptotic_bool(&dist, 2000.f, 0.1f);\n    vec3f_set_dist_and_angle(sCutsceneVars[3].point, c->pos, dist, pitch, yaw);\n\n    c->focus[1] += 4.f;\n    c->pos[1] -= 5.f;\n    sFOVState.fov = 45.f;\n    set_handheld_shake(HAND_CAM_SHAKE_CUTSCENE);\n}\n\n/**\n * Shake the camera during the closeup.\n */\nBAD_RETURN(s32) cutscene_pyramid_top_explode_cam_shake(UNUSED struct Camera *c) {\n    set_environmental_camera_shake(SHAKE_ENV_PYRAMID_EXPLODE);\n}\n\n/**\n * Warp back to the old position, and start a heavy camera shake.\n */\nBAD_RETURN(s32) cutscene_pyramid_top_explode_warp_back(struct Camera *c) {\n    UNUSED u8 filler[8];\n\n    vec3f_copy(c->pos, sCutsceneVars[4].point);\n    vec3f_copy(c->focus, sCutsceneVars[5].point);\n    set_environmental_camera_shake(SHAKE_ENV_BOWSER_JUMP);\n}\n\n/**\n * An unused cutscene for when the pyramid explodes.\n */\nBAD_RETURN(s32) cutscene_pyramid_top_explode(struct Camera *c) {\n    cutscene_event(cutscene_pyramid_top_explode_start, c, 0, 0);\n    cutscene_event(cutscene_pyramid_top_explode_focus, c, 0, 30);\n    cutscene_event(cutscene_pyramid_top_explode_warp, c, 31, 31);\n    cutscene_event(cutscene_pyramid_top_explode_closeup, c, 31, 139);\n    cutscene_event(cutscene_pyramid_top_explode_zoom_in, c, 23, 23);\n    cutscene_event(cutscene_pyramid_top_explode_warp_back, c, 140, 140);\n    cutscene_event(cutscene_pyramid_top_explode_cam_shake, c, 31, 139);\n}\n\n/**\n * End the pyramid top explosion cutscene.\n */\nBAD_RETURN(s32) cutscene_pyramid_top_explode_end(struct Camera *c) {\n    cutscene_stop_dialog(c);\n    stop_cutscene_and_retrieve_stored_info(c);\n    // Move the camera back to Mario\n    transition_next_state(c, 30);\n}\n\n/**\n * Store the camera focus in cvar0, and store the top of the pyramid in cvar3.\n */\nBAD_RETURN(s32) cutscene_enter_pyramid_top_start(struct Camera *c) {\n    vec3f_copy(sCutsceneVars[0].point, c->focus);\n    vec3f_set(sCutsceneVars[3].point, c->areaCenX, 1280.f, c->areaCenZ);\n}\n\n/**\n * Cutscene that plays when Mario enters the top of the pyramid.\n */\nBAD_RETURN(s32) cutscene_enter_pyramid_top(struct Camera *c) {\n    cutscene_event(cutscene_enter_pyramid_top_start, c, 0, 0);\n    // Move to cvar3\n    cutscene_goto_cvar_pos(c, 200.f, 0x3000, 0, 0);\n    sStatusFlags |= CAM_FLAG_SMOOTH_MOVEMENT;\n    set_handheld_shake(HAND_CAM_SHAKE_CUTSCENE);\n\n    if (sMarioCamState->pos[1] > 1250.f) {\n        // End the cutscene early if Mario ledge-grabbed.\n        // This only works because of the janky way that ledge-grabbing is implemented.\n        cutscene_exit_to_castle_grounds_end(c);\n    }\n}\n\nUNUSED static void unused_cutscene_goto_cvar(struct Camera *c) {\n    f32 dist;\n\n    dist = calc_abs_dist(sCutsceneVars[3].point, sMarioCamState->pos);\n    dist = calc_abs_dist(sCutsceneVars[9].point, sMarioCamState->pos) + 200.f;\n    cutscene_goto_cvar_pos(c, dist, 0x1000, 0x300, 0);\n}\n\n/**\n * cvar8 is Mario's position and faceAngle\n *\n * cvar9.point is gCutsceneFocus's position\n * cvar9.angle[1] is the yaw between Mario and the gCutsceneFocus\n */\nBAD_RETURN(s32) cutscene_dialog_start(struct Camera *c) {\n    UNUSED u8 filler[4];\n    UNUSED s16 unused;\n    s16 yaw;\n\n    cutscene_soften_music(c);\n    set_time_stop_flags(TIME_STOP_ENABLED | TIME_STOP_DIALOG);\n\n#ifndef VERSION_JP\n    if (c->mode == CAMERA_MODE_BOSS_FIGHT) {\n        vec3f_copy(sCameraStoreCutscene.focus, c->focus);\n        vec3f_copy(sCameraStoreCutscene.pos, c->pos);\n    } else {\n#endif\n        store_info_star(c);\n#ifndef VERSION_JP\n    }\n#endif\n\n    // Store Mario's position and faceAngle\n    sCutsceneVars[8].angle[0] = 0;\n    vec3f_copy(sCutsceneVars[8].point, sMarioCamState->pos);\n    sCutsceneVars[8].point[1] += 125.f;\n\n    // Store gCutsceneFocus's position and yaw\n    object_pos_to_vec3f(sCutsceneVars[9].point, gCutsceneFocus);\n    sCutsceneVars[9].point[1] += gCutsceneFocus->hitboxHeight + 200.f;\n    sCutsceneVars[9].angle[1] = calculate_yaw(sCutsceneVars[8].point, sCutsceneVars[9].point);\n\n    yaw = calculate_yaw(sMarioCamState->pos, gLakituState.curPos);\n    if ((yaw - sCutsceneVars[9].angle[1]) & 0x8000) {\n        sCutsceneVars[9].angle[1] -= 0x6000;\n    } else {\n        sCutsceneVars[9].angle[1] += 0x6000;\n    }\n}\n\n/**\n * Move closer to Mario and the object, adjusting to their difference in height.\n * The camera's generally ends up looking over Mario's shoulder.\n */\nBAD_RETURN(s32) cutscene_dialog_move_mario_shoulder(struct Camera *c) {\n    f32 dist;\n    s16 pitch, yaw;\n    Vec3f focus, pos;\n\n    scale_along_line(focus, sCutsceneVars[9].point, sMarioCamState->pos, 0.7f);\n    vec3f_get_dist_and_angle(c->pos, focus, &dist, &pitch, &yaw);\n    pitch = calculate_pitch(c->pos, sCutsceneVars[9].point);\n    vec3f_set_dist_and_angle(c->pos, pos, dist, pitch, yaw);\n\n    focus[1] = focus[1] + (sCutsceneVars[9].point[1] - focus[1]) * 0.1f;\n    approach_vec3f_asymptotic(c->focus, focus, 0.2f, 0.2f, 0.2f);\n\n    vec3f_copy(pos, c->pos);\n\n    // Set y pos to cvar8's y (top of focus object)\n    pos[1] = sCutsceneVars[8].point[1];\n    vec3f_get_dist_and_angle(sCutsceneVars[8].point, pos, &dist, &pitch, &yaw);\n    approach_s16_asymptotic_bool(&yaw, sCutsceneVars[9].angle[1], 0x10);\n    approach_f32_asymptotic_bool(&dist, 180.f, 0.05f);\n    vec3f_set_dist_and_angle(sCutsceneVars[8].point, pos, dist, pitch, yaw);\n\n    // Move up if Mario is below the focus object, down is Mario is above\n    pos[1] = sCutsceneVars[8].point[1]\n              + sins(calculate_pitch(sCutsceneVars[9].point, sCutsceneVars[8].point)) * 100.f;\n\n    approach_f32_asymptotic_bool(&c->pos[1], pos[1], 0.05f);\n    c->pos[0] = pos[0];\n    c->pos[2] = pos[2];\n}\n\n/**\n * Create the dialog with sCutsceneDialogID\n */\nBAD_RETURN(s32) cutscene_dialog_create_dialog_box(struct Camera *c) {\n    if (c->cutscene == CUTSCENE_RACE_DIALOG) {\n        create_dialog_box_with_response(sCutsceneDialogID);\n    } else {\n        create_dialog_box(sCutsceneDialogID);\n    }\n\n    //! Unused. This may have been used before sCutsceneDialogResponse was implemented.\n    sCutsceneVars[8].angle[0] = DIALOG_RESPONSE_NOT_DEFINED;\n}\n\n/**\n * Cutscene that plays when Mario talks to an object.\n */\nBAD_RETURN(s32) cutscene_dialog(struct Camera *c) {\n    cutscene_event(cutscene_dialog_start, c, 0, 0);\n    cutscene_event(cutscene_dialog_move_mario_shoulder, c, 0, -1);\n    cutscene_event(cutscene_dialog_create_dialog_box, c, 10, 10);\n    sStatusFlags |= CAM_FLAG_SMOOTH_MOVEMENT;\n\n    if (gDialogResponse != DIALOG_RESPONSE_NONE) {\n        sCutsceneDialogResponse = gDialogResponse;\n    }\n\n    if ((get_dialog_id() == DIALOG_NONE) && (sCutsceneVars[8].angle[0] != 0)) {\n        if (c->cutscene != CUTSCENE_RACE_DIALOG) {\n            sCutsceneDialogResponse = DIALOG_RESPONSE_NOT_DEFINED;\n        }\n\n        gCutsceneTimer = CUTSCENE_LOOP;\n        retrieve_info_star(c);\n        transition_next_state(c, 15);\n        sStatusFlags |= CAM_FLAG_UNUSED_CUTSCENE_ACTIVE;\n        cutscene_unsoften_music(c);\n    }\n}\n\n/**\n * Sets the CAM_FLAG_UNUSED_CUTSCENE_ACTIVE flag, which does nothing.\n */\nBAD_RETURN(s32) cutscene_dialog_set_flag(UNUSED struct Camera *c) {\n    sStatusFlags |= CAM_FLAG_UNUSED_CUTSCENE_ACTIVE;\n}\n\n/**\n * Ends the dialog cutscene.\n */\nBAD_RETURN(s32) cutscene_dialog_end(struct Camera *c) {\n    sStatusFlags |= CAM_FLAG_UNUSED_CUTSCENE_ACTIVE;\n    c->cutscene = 0;\n    clear_time_stop_flags(TIME_STOP_ENABLED | TIME_STOP_DIALOG);\n}\n\n/**\n * Soften the music, clear cvar0\n *\n * In this cutscene, cvar0.angle[0] is used as a state variable.\n */\nBAD_RETURN(s32) cutscene_read_message_start(struct Camera *c) {\n    cutscene_soften_music(c);\n    transition_next_state(c, 30);\n    reset_pan_distance(c);\n    store_info_star(c);\n\n    sCutsceneVars[1].angle[0] = sCUpCameraPitch;\n    sCutsceneVars[1].angle[1] = sModeOffsetYaw;\n    sCUpCameraPitch = -0x830;\n    sModeOffsetYaw = 0;\n    sCutsceneVars[0].angle[0] = 0;\n}\n\nUNUSED static void unused_cam_to_mario(struct Camera *c) {\n    Vec3s dir;\n\n    vec3s_set(dir, 0, sMarioCamState->faceAngle[1], 0);\n    offset_rotated_coords(c->pos, sMarioCamState->pos, dir, 0, 100.f, 190.f);\n    offset_rotated_coords(c->focus, sMarioCamState->pos, dir, 0, 70.f, -20.f);\n}\n\n/**\n * Cutscene that plays when Mario is reading a message (a sign or message on the wall)\n */\nBAD_RETURN(s32) cutscene_read_message(struct Camera *c) {\n    UNUSED u8 filler[8];\n\n    cutscene_event(cutscene_read_message_start, c, 0, 0);\n    sStatusFlags |= CAM_FLAG_SMOOTH_MOVEMENT;\n\n    switch (sCutsceneVars[0].angle[0]) {\n        // Do nothing until message is gone.\n        case 0:\n            if (get_dialog_id() != DIALOG_NONE) {\n                sCutsceneVars[0].angle[0]++;\n                set_time_stop_flags(TIME_STOP_ENABLED | TIME_STOP_DIALOG);\n            }\n            break;\n        // Leave the dialog.\n        case 1:\n            move_mario_head_c_up(c);\n            update_c_up(c, c->focus, c->pos);\n\n            // This could cause softlocks. If a message starts one frame after another one closes, the\n            // cutscene will never end.\n            if (get_dialog_id() == DIALOG_NONE) {\n                gCutsceneTimer = CUTSCENE_LOOP;\n                retrieve_info_star(c);\n                transition_next_state(c, 15);\n                sStatusFlags |= CAM_FLAG_UNUSED_CUTSCENE_ACTIVE;\n                clear_time_stop_flags(TIME_STOP_ENABLED | TIME_STOP_DIALOG);\n                // Retrieve previous state\n                sCUpCameraPitch = sCutsceneVars[1].angle[0];\n                sModeOffsetYaw = sCutsceneVars[1].angle[1];\n                cutscene_unsoften_music(c);\n            }\n    }\n    sStatusFlags |= CAM_FLAG_UNUSED_CUTSCENE_ACTIVE;\n}\n\n/**\n * Set CAM_FLAG_UNUSED_CUTSCENE_ACTIVE, which does nothing.\n */\nBAD_RETURN(s32) cutscene_read_message_set_flag(UNUSED struct Camera *c) {\n    sStatusFlags |= CAM_FLAG_UNUSED_CUTSCENE_ACTIVE;\n}\n\n/**\n * End the message cutscene.\n */\nBAD_RETURN(s32) cutscene_read_message_end(struct Camera *c) {\n    sStatusFlags |= CAM_FLAG_UNUSED_CUTSCENE_ACTIVE;\n    c->cutscene = 0;\n}\n\n/**\n * Set cvars:\n * cvar7 is Mario's pos and angle\n * cvar6 is the focus offset\n * cvar5 is the position offset\n */\nBAD_RETURN(s32) cutscene_exit_succ_start(UNUSED struct Camera *c) {\n    vec3f_copy(sCutsceneVars[7].point, sMarioCamState->pos);\n    vec3s_copy(sCutsceneVars[7].angle, sMarioCamState->faceAngle);\n    vec3f_set(sCutsceneVars[6].point, 6.f, 363.f, 543.f);\n    vec3f_set(sCutsceneVars[5].point, 137.f, 226.f, 995.f);\n}\n\n/**\n * Set the camera pos depending on which level Mario exited.\n */\nBAD_RETURN(s32) cutscene_non_painting_set_cam_pos(struct Camera *c) {\n    UNUSED u8 filler1[4];\n    struct Surface *floor;\n    UNUSED u8 filler2[12];\n\n    switch (gPrevLevel) {\n        case LEVEL_HMC:\n            vec3f_set(c->pos, 3465.f, -1008.f, -2961.f);\n            break;\n\n        case LEVEL_COTMC:\n            vec3f_set(c->pos, 3465.f, -1008.f, -2961.f);\n            break;\n\n        case LEVEL_RR:\n            vec3f_set(c->pos, -3741.f, 3151.f, 6065.f);\n            break;\n\n        case LEVEL_WMOTR:\n            vec3f_set(c->pos, 1972.f, 3230.f, 5891.f);\n            break;\n\n        default:\n            offset_rotated(c->pos, sCutsceneVars[7].point, sCutsceneVars[5].point, sCutsceneVars[7].angle);\n            c->pos[1] = find_floor(c->pos[0], c->pos[1] + 1000.f, c->pos[2], &floor) + 125.f;\n            break;\n    }\n}\n\n/**\n * Update the camera focus depending on which level Mario exited.\n */\nBAD_RETURN(s32) cutscene_non_painting_set_cam_focus(struct Camera *c) {\n    offset_rotated(c->focus, sCutsceneVars[7].point, sCutsceneVars[6].point, sCutsceneVars[7].angle);\n\n    if ((gPrevLevel == LEVEL_COTMC) || (gPrevLevel == LEVEL_HMC) || (gPrevLevel == LEVEL_RR)\n        || (gPrevLevel == LEVEL_WMOTR)) {\n        c->focus[0] = c->pos[0] + (sMarioCamState->pos[0] - c->pos[0]) * 0.7f;\n        c->focus[1] = c->pos[1] + (sMarioCamState->pos[1] - c->pos[1]) * 0.4f;\n        c->focus[2] = c->pos[2] + (sMarioCamState->pos[2] - c->pos[2]) * 0.7f;\n    } else {\n        c->focus[1] = c->pos[1] + (sMarioCamState->pos[1] - c->pos[1]) * 0.2f;\n    }\n}\n\n/**\n * Focus slightly left of Mario. Perhaps to keep the bowser painting in view?\n */\nBAD_RETURN(s32) cutscene_exit_bowser_succ_focus_left(UNUSED struct Camera *c) {\n    approach_f32_asymptotic_bool(&sCutsceneVars[6].point[0], -24.f, 0.05f);\n}\n\n/**\n * Instead of focusing on the key, just start a pitch shake. Clever!\n * The shake lasts 32 frames.\n */\nBAD_RETURN(s32) cutscene_exit_bowser_key_toss_shake(struct Camera *c) {\n    //! Unnecessary check.\n    if (c->cutscene == CUTSCENE_EXIT_BOWSER_SUCC) {\n        set_camera_pitch_shake(0x800, 0x40, 0x800);\n    }\n}\n\n/**\n * Start a camera shake when Mario lands on the ground.\n */\nBAD_RETURN(s32) cutscene_exit_succ_shake_landing(UNUSED struct Camera *c) {\n    set_environmental_camera_shake(SHAKE_ENV_EXPLOSION);\n}\n\n/**\n * Cutscene that plays when Mario beats bowser and exits the level.\n */\nBAD_RETURN(s32) cutscene_exit_bowser_succ(struct Camera *c) {\n    cutscene_event(cutscene_exit_succ_start, c, 0, 0);\n    cutscene_event(cutscene_non_painting_set_cam_pos, c, 0, -1);\n    cutscene_event(cutscene_exit_bowser_succ_focus_left, c, 18, -1);\n    cutscene_event(cutscene_non_painting_set_cam_focus, c, 0, -1);\n    cutscene_event(cutscene_exit_bowser_key_toss_shake, c, 125, 125);\n    cutscene_event(cutscene_exit_succ_shake_landing, c, 41, 41);\n}\n\n/**\n * End a non-painting exit cutscene. Used by BBH and bowser courses.\n */\nBAD_RETURN(s32) cutscene_non_painting_end(struct Camera *c) {\n    c->cutscene = 0;\n\n    if (c->defMode == CAMERA_MODE_CLOSE) {\n        c->mode = CAMERA_MODE_CLOSE;\n    } else {\n        c->mode = CAMERA_MODE_FREE_ROAM;\n    }\n\n    sStatusFlags |= CAM_FLAG_UNUSED_CUTSCENE_ACTIVE;\n    sStatusFlags |= CAM_FLAG_SMOOTH_MOVEMENT;\n    transition_next_state(c, 60);\n    update_camera_yaw(c);\n}\n\n/**\n * Override the position offset.\n */\nBAD_RETURN(s32) cutscene_exit_non_painting_succ_override_cvar(UNUSED struct Camera *c) {\n    vec3f_set(sCutsceneVars[5].point, 137.f, 246.f, 1115.f);\n}\n\n/**\n * Cutscene that plays when Mario collects a star and leaves a non-painting course, like HMC or BBH.\n */\nBAD_RETURN(s32) cutscene_exit_non_painting_succ(struct Camera *c) {\n    cutscene_event(cutscene_exit_succ_start, c, 0, 0);\n    cutscene_event(cutscene_exit_non_painting_succ_override_cvar, c, 0, 0);\n    cutscene_event(cutscene_non_painting_set_cam_pos, c, 0, -1);\n    cutscene_event(cutscene_exit_bowser_succ_focus_left, c, 18, -1);\n    cutscene_event(cutscene_non_painting_set_cam_focus, c, 0, -1);\n    cutscene_event(cutscene_exit_succ_shake_landing, c, 41, 41);\n    update_camera_yaw(c);\n}\n\n/**\n * Set cvar7 to Mario's pos and faceAngle\n * Set cvar6 to the focus offset from Mario.\n * set cvar5 to the pos offset from Mario. (This is always overwritten)\n */\nBAD_RETURN(s32) cutscene_non_painting_death_start(UNUSED struct Camera *c) {\n    vec3f_copy(sCutsceneVars[7].point, sMarioCamState->pos);\n    vec3s_copy(sCutsceneVars[7].angle, sMarioCamState->faceAngle);\n    vec3f_set(sCutsceneVars[6].point, -42.f, 350.f, 727.f);\n    // This is always overwritten, except in the unused cutscene_exit_bowser_death()\n    vec3f_set(sCutsceneVars[5].point, 107.f, 226.f, 1187.f);\n}\n\n/**\n * This cutscene is the same as non_painting_death, but the camera is closer to Mario and lower.\n * Because it it doesn't call cutscene_non_painting_death_override_offset, the value from\n * cutscene_non_painting_death_start is used.\n *\n * This cutscene is unused, dying in bowser's arena spawns Mario near the warp pipe, not back in the\n * hub.\n */\nBAD_RETURN(s32) cutscene_exit_bowser_death(struct Camera *c) {\n    cutscene_event(cutscene_non_painting_death_start, c, 0, 0);\n    cutscene_event(cutscene_non_painting_set_cam_pos, c, 0, -1);\n    cutscene_event(cutscene_non_painting_set_cam_focus, c, 0, -1);\n}\n\n/**\n * Set the offset from Mario depending on the course Mario exited.\n * This overrides cutscene_non_painting_death_start()\n */\nBAD_RETURN(s32) cutscene_non_painting_death_override_offset(UNUSED struct Camera *c) {\n    switch (gPrevLevel) {\n        case LEVEL_HMC:\n            vec3f_set(sCutsceneVars[5].point, 187.f, 369.f, -197.f);\n            break;\n        case LEVEL_COTMC:\n            vec3f_set(sCutsceneVars[5].point, 187.f, 369.f, -197.f);\n            break;\n        default:\n            vec3f_set(sCutsceneVars[5].point, 107.f, 246.f, 1307.f);\n            break;\n    }\n}\n\n/**\n * Cutscene played when Mario dies in a non-painting course, like HMC or BBH.\n */\nBAD_RETURN(s32) cutscene_non_painting_death(struct Camera *c) {\n    cutscene_event(cutscene_non_painting_death_start, c, 0, 0);\n    cutscene_event(cutscene_non_painting_death_override_offset, c, 0, 0);\n    cutscene_event(cutscene_non_painting_set_cam_pos, c, 0, -1);\n    cutscene_event(cutscene_non_painting_set_cam_focus, c, 0, -1);\n    sStatusFlags |= CAM_FLAG_UNUSED_CUTSCENE_ACTIVE;\n}\n\n/**\n * Set cvars:\n * cvar3 is an offset applied to the camera's rotation around Mario. It starts at 0x1200\n * cvar 1 is more complicated:\n *      First the yaw from Mario to the camera is calculated. cvar1 is the high byte of the difference\n *      between that yaw and Mario's faceAngle plus 0x1200. The reason for taking the high byte is\n *      because cvar1 rotates until is reaches 0, so it's important that it's a multiple of 0x100.\n */\nBAD_RETURN(s32) cutscene_cap_switch_press_start(struct Camera *c) {\n    UNUSED s16 unused;\n    s16 yaw;\n    UNUSED u8 filler[8];\n\n    store_info_star(c);\n    yaw = calculate_yaw(sMarioCamState->pos, c->pos);\n    sCutsceneVars[3].angle[1] = 0x1200;\n    // Basically the amount of rotation to get from behind Mario to in front of Mario\n    sCutsceneVars[1].angle[1] = (yaw - (sMarioCamState->faceAngle[1] + sCutsceneVars[3].angle[1])) & 0xFF00;\n}\n\n/**\n * Rotate around Mario. As each cvar stops updating, the rotation slows until the camera ends up in\n * front of Mario.\n */\nBAD_RETURN(s32) cutscene_cap_switch_press_rotate_around_mario(struct Camera *c) {\n    f32 dist;\n    s16 pitch, yaw;\n    UNUSED s16 unusedYaw = sMarioCamState->faceAngle[1] + 0x1000;\n    UNUSED u8 filler[2];\n    UNUSED s32 cvar1Yaw = sCutsceneVars[1].angle[1];\n\n    vec3f_get_dist_and_angle(sMarioCamState->pos, c->pos, &dist, &pitch, &yaw);\n\n    // cvar3 wraps around until it reaches 0x1000\n    if (sCutsceneVars[3].angle[1] != 0x1000) {\n        sCutsceneVars[3].angle[1] += 0x100;\n    }\n\n    // cvar1 wraps until 0\n    if (sCutsceneVars[1].angle[1] != 0) {\n        sCutsceneVars[1].angle[1] += 0x100;\n    }\n\n    yaw = sMarioCamState->faceAngle[1] + sCutsceneVars[3].angle[1] + sCutsceneVars[1].angle[1];\n    vec3f_set_dist_and_angle(sMarioCamState->pos, c->pos, dist, pitch, yaw);\n}\n\n/**\n * Move the camera slightly downwards.\n */\nBAD_RETURN(s32) cutscene_cap_switch_press_lower_cam(struct Camera *c) {\n    rotate_and_move_vec3f(c->pos, sMarioCamState->pos, 0, -0x20, 0);\n}\n\n/**\n * Move the camera closer to Mario.\n */\nBAD_RETURN(s32) cutscene_cap_switch_press_approach_mario(struct Camera *c) {\n    s16 pitch, yaw;\n    f32 dist;\n\n    vec3f_get_dist_and_angle(sMarioCamState->pos, c->pos, &dist, &pitch, &yaw);\n    approach_f32_asymptotic_bool(&dist, 195.f, 0.2f);\n    approach_s16_asymptotic_bool(&pitch, 0, 0x10);\n    vec3f_set_dist_and_angle(sMarioCamState->pos, c->pos, dist, pitch, yaw);\n\n    approach_f32_asymptotic_bool(&c->focus[0], sMarioCamState->pos[0], 0.1f);\n    approach_f32_asymptotic_bool(&c->focus[1], sMarioCamState->pos[1] + 110.f, 0.1f);\n    approach_f32_asymptotic_bool(&c->focus[2], sMarioCamState->pos[2], 0.1f);\n}\n\n/**\n * Pan the camera left so that Mario is on the right side of the screen when the camera stops spinning.\n */\nBAD_RETURN(s32) cutscene_cap_switch_press_pan_left(struct Camera *c) {\n    vec3f_copy(c->focus, sMarioCamState->pos);\n    c->focus[1] += 110.f;\n    camera_approach_s16_symmetric_bool(&sCutsceneVars[0].angle[1], 0x800, 0x20);\n    pan_camera(c, sCutsceneVars[0].angle[0], sCutsceneVars[0].angle[1]);\n}\n\n/**\n * Create a dialog box with the cap switch's text.\n */\nBAD_RETURN(s32) cutscene_cap_switch_press_create_dialog(UNUSED struct Camera *c) {\n    create_dialog_box_with_response(gCutsceneFocus->oBhvParams2ndByte + DIALOG_010);\n}\n\nstatic UNUSED BAD_RETURN(s32) unused_cap_switch_retrieve_info(struct Camera *c) {\n    retrieve_info_star(c);\n    transition_next_state(c, 30);\n}\n\n/**\n * Cutscene that plays when Mario presses a cap switch.\n */\nBAD_RETURN(s32) cutscene_cap_switch_press(struct Camera *c) {\n    f32 dist;\n    s16 pitch, yaw;\n\n    sStatusFlags |= CAM_FLAG_SMOOTH_MOVEMENT;\n    sStatusFlags |= CAM_FLAG_UNUSED_CUTSCENE_ACTIVE;\n\n    cutscene_event(cutscene_cap_switch_press_start, c, 0, 0);\n    cutscene_event(cutscene_cap_switch_press_approach_mario, c, 0, 30);\n    cutscene_event(cutscene_cap_switch_press_pan_left, c, 0, -1);\n    cutscene_event(cutscene_cap_switch_press_rotate_around_mario, c, 30, -1);\n    cutscene_event(cutscene_cap_switch_press_lower_cam, c, 10, 70);\n    cutscene_event(cutscene_cap_switch_press_create_dialog, c, 10, 10);\n    vec3f_get_dist_and_angle(sMarioCamState->pos, c->pos, &dist, &pitch, &yaw);\n\n    if (gDialogResponse != DIALOG_RESPONSE_NONE) {\n        sCutsceneVars[4].angle[0] = gDialogResponse;\n    }\n\n    if ((get_dialog_id() == DIALOG_NONE) && (sCutsceneVars[4].angle[0] != 0)) {\n        sCutsceneDialogResponse = sCutsceneVars[4].angle[0];\n        if (sCutsceneVars[4].angle[0] == 1) {\n            cap_switch_save(gCutsceneFocus->oBhvParams2ndByte);\n        }\n        stop_cutscene_and_retrieve_stored_info(c);\n        transition_next_state(c, 30);\n    }\n}\n\n/**\n * Sets cvars:\n * cvar0 is the camera's position\n * cvar1 is the camera's focus\n * cvar2 is the goal position\n * cvar3 is the goal focus\n */\nBAD_RETURN(s32) cutscene_unlock_key_door_start(struct Camera *c) {\n    Vec3f posOff, focusOff;\n\n    vec3f_copy(sCutsceneVars[0].point, c->pos);\n    vec3f_copy(sCutsceneVars[1].point, c->focus);\n    vec3f_set(posOff, -206.f, 108.f, 234.f);\n    vec3f_set(focusOff, 48.f, 104.f, -193.f);\n    offset_rotated(sCutsceneVars[2].point, sMarioCamState->pos, posOff, sMarioCamState->faceAngle);\n    offset_rotated(sCutsceneVars[3].point, sMarioCamState->pos, focusOff, sMarioCamState->faceAngle);\n}\n\n/**\n * Move the camera to the cvars position and focus, closer to Mario.\n * Gives a better view of the key.\n */\nBAD_RETURN(s32) cutscene_unlock_key_door_approach_mario(struct Camera *c) {\n    approach_vec3f_asymptotic(c->pos, sCutsceneVars[2].point, 0.1f, 0.1f, 0.1f);\n    approach_vec3f_asymptotic(c->focus, sCutsceneVars[3].point, 0.1f, 0.1f, 0.1f);\n}\n\n/**\n * Move the camera focus up a bit, focusing on the key in the lock.\n */\nBAD_RETURN(s32) cutscene_unlock_key_door_focus_lock(UNUSED struct Camera *c) {\n    approach_f32_asymptotic_bool(&sCutsceneVars[3].point[1], sMarioCamState->pos[1] + 140.f, 0.07f);\n}\n\nBAD_RETURN(s32) cutscene_unlock_key_door_stub(UNUSED struct Camera *c) {\n}\n\n/**\n * Move back to the previous pos and focus, stored in cvar0 and cvar1.\n */\nBAD_RETURN(s32) cutscene_unlock_key_door_fly_back(struct Camera *c) {\n    approach_vec3f_asymptotic(c->pos, sCutsceneVars[0].point, 0.1f, 0.1f, 0.1f);\n    approach_vec3f_asymptotic(c->focus, sCutsceneVars[1].point, 0.1f, 0.1f, 0.1f);\n}\n\n/**\n * Shake the camera's fov when the key is put in the lock.\n */\nBAD_RETURN(s32) cutscene_unlock_key_door_fov_shake(UNUSED struct Camera *c) {\n    cutscene_set_fov_shake_preset(1);\n}\n\n/**\n * Cutscene that plays when Mario unlocks a key door.\n */\nBAD_RETURN(s32) cutscene_unlock_key_door(UNUSED struct Camera *c) {\n    cutscene_event(cutscene_unlock_key_door_start, c, 0, 0);\n    cutscene_event(cutscene_unlock_key_door_approach_mario, c, 0, 123);\n    cutscene_event(cutscene_unlock_key_door_fly_back, c, 124, -1);\n    cutscene_event(cutscene_unlock_key_door_fov_shake, c, 79, 79);\n    cutscene_event(cutscene_unlock_key_door_focus_lock, c, 70, 110);\n    cutscene_event(cutscene_unlock_key_door_stub, c, 112, 112);\n}\n\n/**\n * Move the camera along `positionSpline` and point its focus at the corresponding point along\n * `focusSpline`. sCutsceneSplineSegmentProgress is updated after pos and focus are calculated.\n */\ns32 intro_peach_move_camera_start_to_pipe(struct Camera *c, struct CutsceneSplinePoint positionSpline[],\n                  struct CutsceneSplinePoint focusSpline[]) {\n    Vec3f offset;\n    s32 posReturn = 0;\n    s32 focusReturn = 0;\n\n    /**\n     * The position spline's speed parameters are all 0, so sCutsceneSplineSegmentProgress doesn't get\n     * updated. Otherwise position would move two frames ahead, and c->focus would always be one frame\n     * further along the spline than c->pos.\n     */\n    posReturn = move_point_along_spline(c->pos, positionSpline, &sCutsceneSplineSegment, &sCutsceneSplineSegmentProgress);\n    focusReturn = move_point_along_spline(c->focus, focusSpline, &sCutsceneSplineSegment, &sCutsceneSplineSegmentProgress);\n\n    // The two splines used by this function are reflected in the horizontal plane for some reason,\n    // so they are rotated every frame. Why do this, Nintendo?\n    rotate_in_xz(c->focus, c->focus, DEGREES(-180));\n    rotate_in_xz(c->pos, c->pos, DEGREES(-180));\n\n    vec3f_set(offset, -1328.f, 260.f, 4664.f);\n    vec3f_add(c->focus, offset);\n    vec3f_add(c->pos, offset);\n\n    posReturn += focusReturn; // Unused\n    return focusReturn;\n}\n\n/**\n * Create a dialog box with the letter text\n */\nBAD_RETURN(s32) peach_letter_text(UNUSED struct Camera *c) {\n    create_dialog_box(DIALOG_020);\n}\n\n#ifndef VERSION_JP\nBAD_RETURN(s32) play_sound_peach_reading_letter(UNUSED struct Camera *c) {\n    play_sound(SOUND_PEACH_DEAR_MARIO, gGlobalSoundSource);\n}\n#endif\n\n/**\n * Move the camera from peach reading the letter all the way to Mario's warp pipe. Follow the\n * sIntroStartToPipe splines.\n */\nBAD_RETURN(s32) cutscene_intro_peach_start_to_pipe_spline(struct Camera *c) {\n    if (intro_peach_move_camera_start_to_pipe(c, sIntroStartToPipePosition, sIntroStartToPipeFocus) != 0) {\n        gCameraMovementFlags &= ~CAM_MOVE_C_UP_MODE;\n        gCutsceneTimer = CUTSCENE_LOOP;\n    }\n}\n\n/**\n * Loop the cutscene until Mario exits the dialog.\n */\nBAD_RETURN(s32) cutscene_intro_peach_dialog(struct Camera *c) {\n    if (get_dialog_id() == DIALOG_NONE) {\n        vec3f_copy(gLakituState.goalPos, c->pos);\n        vec3f_copy(gLakituState.goalFocus, c->focus);\n        sStatusFlags |= (CAM_FLAG_SMOOTH_MOVEMENT | CAM_FLAG_UNUSED_CUTSCENE_ACTIVE);\n        gCutsceneTimer = CUTSCENE_STOP;\n        c->cutscene = 0;\n    }\n}\n\nBAD_RETURN(s32) cutscene_intro_peach_follow_pipe_spline(struct Camera *c) {\n    move_point_along_spline(c->pos, sIntroPipeToDialogPosition, &sCutsceneSplineSegment, &sCutsceneSplineSegmentProgress);\n    move_point_along_spline(c->focus, sIntroPipeToDialogFocus, &sCutsceneSplineSegment, &sCutsceneSplineSegmentProgress);\n}\n\nBAD_RETURN(s32) cutscene_intro_peach_clear_cutscene_status(UNUSED struct Camera *c) {\n    sMarioCamState->cameraEvent = 0;\n}\n\n/**\n * Set fov to 8 degrees, then zoom out to 30.\n */\nBAD_RETURN(s32) cutscene_intro_peach_zoom_fov(UNUSED struct Camera *c) {\n    sFOVState.fov = 8.f;\n    set_fov_function(CAM_FOV_ZOOM_30);\n}\n\n/**\n * Reset the spline progress, turn on handheld shake.\n */\nBAD_RETURN(s32) cutscene_intro_peach_reset_spline(UNUSED struct Camera *c) {\n    sCutsceneSplineSegment = 0;\n    sCutsceneSplineSegmentProgress = 0.1f;\n    //! @bug since this event is only called for one frame, this handheld shake is turned off on the\n    //! next frame.\n    set_handheld_shake(HAND_CAM_SHAKE_HIGH);\n}\n\n/**\n * Turn off handheld shake. This was likely written before handheld shake was changed to turn off every\n * frame, as it's the only instance of HAND_CAM_SHAKE_OFF.\n */\nBAD_RETURN(s32) cutscene_intro_peach_handheld_shake_off(UNUSED struct Camera *c) {\n    set_handheld_shake(HAND_CAM_SHAKE_OFF);\n}\n\nBAD_RETURN(s32) intro_pipe_exit_text(UNUSED struct Camera *c) {\n    create_dialog_box(DIALOG_033);\n}\n\n#ifndef VERSION_JP\nBAD_RETURN(s32) play_sound_intro_turn_on_hud(UNUSED struct Camera *c) {\n    play_sound_rbutton_changed();\n}\n#endif\n\n/**\n * Fly to the pipe. Near the end, the camera jumps to Lakitu's position and the hud turns on.\n */\nBAD_RETURN(s32) cutscene_intro_peach_fly_to_pipe(struct Camera *c) {\n#if defined(VERSION_US) || defined(VERSION_SH) || defined(VERSION_CN)\n    cutscene_event(play_sound_intro_turn_on_hud, c, 818, 818);\n#elif defined(VERSION_EU)\n    cutscene_event(play_sound_intro_turn_on_hud, c, 673, 673);\n#endif\n    cutscene_spawn_obj(6, 1);\n    cutscene_event(cutscene_intro_peach_start_flying_music, c, 0, 0);\n    cutscene_event(cutscene_intro_peach_start_to_pipe_spline, c, 0, -1);\n#ifdef VERSION_EU\n    cutscene_event(cutscene_intro_peach_clear_cutscene_status, c, 572, 572);\n#else\n    cutscene_event(cutscene_intro_peach_clear_cutscene_status, c, 717, 717);\n#endif\n    clamp_pitch(c->pos, c->focus, 0x3B00, -0x3B00);\n    sCutsceneVars[1].point[1] = 400.f;\n}\n\n/**\n * Lakitu flies around the warp pipe, then Mario jumps out.\n */\nBAD_RETURN(s32) cutscene_intro_peach_mario_appears(struct Camera *c) {\n    UNUSED u8 filler[8];\n\n    sMarioCamState->cameraEvent = 0;\n    cutscene_event(cutscene_intro_peach_reset_spline, c, 0, 0);\n    cutscene_event(cutscene_intro_peach_follow_pipe_spline, c, 0, -1);\n    cutscene_event(cutscene_intro_peach_handheld_shake_off, c, 70, 70);\n    cutscene_event(intro_pipe_exit_text, c, 250, 250);\n\n    approach_f32_asymptotic_bool(&sCutsceneVars[1].point[1], 80.f + sMarioGeometry.currFloorHeight +\n                                 (sMarioCamState->pos[1] - sMarioGeometry.currFloorHeight) * 1.1f, 0.4f);\n\n    // Make the camera look up as Mario jumps out of the pipe\n    if (c->focus[1] < sCutsceneVars[1].point[1]) {\n        c->focus[1] = sCutsceneVars[1].point[1];\n    }\n\n    sStatusFlags |= CAM_FLAG_UNUSED_CUTSCENE_ACTIVE;\n}\n\n/**\n * Reset the fov. This gives the effect of peach zooming out as she fades.\n */\nBAD_RETURN(s32) cutscene_intro_peach_reset_fov(UNUSED struct Camera *c) {\n    set_fov_function(CAM_FOV_DEFAULT);\n}\n\n/**\n * Peach reads the letter to Mario.\n */\nBAD_RETURN(s32) cutscene_intro_peach_letter(struct Camera *c) {\n    cutscene_spawn_obj(5, 0);\n    cutscene_event(cutscene_intro_peach_zoom_fov, c, 0, 0);\n    cutscene_event(cutscene_intro_peach_start_letter_music, c, 65, 65);\n#ifdef VERSION_EU\n    cutscene_event(cutscene_intro_peach_eu_lower_volume, c, 68, 68);\n#endif\n    cutscene_event(cutscene_intro_peach_start_to_pipe_spline, c, 0, 0);\n    cutscene_event(peach_letter_text, c, 65, 65);\n#ifndef VERSION_JP\n    cutscene_event(play_sound_peach_reading_letter, c, 83, 83);\n#endif\n\n    if ((gCutsceneTimer > 120) && (get_dialog_id() == DIALOG_NONE)) {\n        // Start the next scene\n        gCutsceneTimer = CUTSCENE_LOOP;\n    }\n\n    clamp_pitch(c->pos, c->focus, 0x3B00, -0x3B00);\n}\n\n/**\n * Reset the spline progress.\n */\nBAD_RETURN(s32) cutscene_end_waving_start(UNUSED struct Camera *c) {\n    cutscene_reset_spline();\n}\n\n// 3rd part of data\nstruct CutsceneSplinePoint gIntroLakituStartToPipeFocus[] = {\n    { 0, 32, { 58, -250, 346 } },    { 1, 50, { -159, -382, 224 } }, { 2, 37, { 0, -277, 237 } },\n    { 3, 15, { 1, -44, 245 } },      { 4, 35, { 0, -89, 228 } },     { 5, 15, { 28, 3, 259 } },\n    { 6, 25, { -38, -201, 371 } },   { 7, 20, { -642, 118, 652 } },  { 8, 25, { 103, -90, 861 } },\n    { 9, 25, { 294, 145, 579 } },    { 10, 30, { 220, -42, 500 } },  { 11, 20, { 10, -134, 200 } },\n    { 12, 20, { -143, -145, 351 } }, { 13, 14, { -256, -65, 528 } }, { 14, 20, { -251, -52, 459 } },\n    { 15, 25, { -382, 520, 395 } },  { 16, 25, { -341, 240, 653 } }, { 17, 5, { -262, 700, 143 } },\n    { 18, 15, { -760, 32, 27 } },    { 19, 20, { -756, -6, -26 } },  { 20, 20, { -613, 5, 424 } },\n    { 21, 20, { -22, -100, 312 } },  { 22, 25, { 212, 80, 61 } },    { 23, 20, { 230, -28, 230 } },\n    { 24, 35, { -83, -51, 303 } },   { 25, 17, { 126, 90, 640 } },   { 26, 9, { 158, 95, 763 } },\n    { 27, 8, { 113, -25, 1033 } },   { 28, 20, { 57, -53, 1291 } },  { 29, 15, { 73, -34, 1350 } },\n    { 30, 7, { 0, 96, 1400 } },      { 31, 8, { -59, 269, 1450 } },  { 32, 15, { 57, 1705, 1500 } },\n    { 0, 15, { -227, 511, 1550 } },  { -1, 15, { -227, 511, 1600 } }\n};\n\nstruct CutsceneSplinePoint gIntroLakituStartToPipeOffsetFromCamera[] = {\n    { 0, 0, { -46, 87, -15 } },   { 1, 0, { -38, 91, -11 } },  { 2, 0, { -31, 93, -13 } },\n    { 3, 0, { -50, 84, -16 } },   { 4, 0, { -52, 83, -17 } },  { 5, 0, { -10, 99, 3 } },\n    { 6, 0, { -54, 83, -10 } },   { 7, 0, { -31, 85, -40 } },  { 8, 0, { -34, 91, 19 } },\n    { 9, 0, { -9, 95, 28 } },     { 10, 0, { 17, 72, 66 } },   { 11, 0, { 88, -7, 45 } },\n    { 12, 0, { 96, -6, -26 } },   { 13, 0, { 56, -1, -82 } },  { 14, 0, { 40, 65, -63 } },\n    { 15, 0, { -26, -3, -96 } },  { 16, 0, { 92, 82, 19 } },   { 17, 0, { 92, 32, 19 } },\n    { 18, 0, { 92, 32, 19 } },    { 19, 0, { 92, 102, 19 } },  { 20, 0, { -69, 59, -70 } },\n    { 21, 0, { -77, 109, -61 } }, { 22, 0, { -87, 59, -46 } }, { 23, 0, { -99, -3, 11 } },\n    { 24, 0, { -99, -11, 5 } },   { 25, 0, { -97, -6, 19 } },  { 26, 0, { -97, 22, -7 } },\n    { 27, 0, { -98, -11, -13 } }, { 28, 0, { -97, -11, 19 } }, { 29, 0, { -91, -11, 38 } },\n    { 30, 0, { -76, -11, 63 } },  { 31, 0, { -13, 33, 93 } },  { 32, 0, { 51, -11, 84 } },\n    { 33, 0, { 51, -11, 84 } },   { -1, 0, { 51, -11, 84 } }\n};\n\nstruct CutsceneSplinePoint gEndWavingPos[] = {\n    { 0, 0, { -5, 975, -917 } },    { 0, 0, { -5, 975, -917 } },    { 0, 0, { -5, 975, -917 } },\n    { 0, 0, { -76, 1067, 742 } },   { 0, 0, { -105, 1576, 3240 } }, { 0, 0, { -177, 1709, 5586 } },\n    { 0, 0, { -177, 1709, 5586 } }, { 0, 0, { -177, 1709, 5586 } }, { 0, 0, { -177, 1709, 5586 } }\n};\n\nstruct CutsceneSplinePoint gEndWavingFocus[] = {\n    { 0, 50, { 18, 1013, -1415 } }, { 0, 100, { 17, 1037, -1412 } }, { 0, 100, { 16, 1061, -1408 } },\n    { 0, 100, { -54, 1053, 243 } }, { 0, 100, { -84, 1575, 2740 } }, { 0, 50, { -156, 1718, 5086 } },\n    { 0, 0, { -156, 1718, 5086 } }, { 0, 0, { -156, 1718, 5086 } },  { 0, 0, { -156, 1718, 5086 } }\n};\n\nBAD_RETURN(s32) cutscene_end_waving(struct Camera *c) {\n    cutscene_event(cutscene_end_waving_start, c, 0, 0);\n    move_point_along_spline(c->pos, gEndWavingPos, &sCutsceneSplineSegment, &sCutsceneSplineSegmentProgress);\n    move_point_along_spline(c->focus, gEndWavingFocus, &sCutsceneSplineSegment, &sCutsceneSplineSegmentProgress);\n    cutscene_spawn_obj(6, 120);\n}\n\n/**\n * Called on the first frame of the credits. Resets the spline progress.\n */\nBAD_RETURN(s32) cutscene_credits_reset_spline(UNUSED struct Camera *c) {\n    cutscene_reset_spline();\n}\n\nextern struct CutsceneSplinePoint sBoBCreditsSplinePositions[];\nextern struct CutsceneSplinePoint sBoBCreditsSplineFocus[];\nextern struct CutsceneSplinePoint sWFCreditsSplinePositions[];\nextern struct CutsceneSplinePoint sWFCreditsSplineFocus[];\nextern struct CutsceneSplinePoint sJRBCreditsSplinePositions[];\nextern struct CutsceneSplinePoint sJRBCreditsSplineFocus[];\nextern struct CutsceneSplinePoint sCCMSlideCreditsSplinePositions[];\nextern struct CutsceneSplinePoint sCCMSlideCreditsSplineFocus[];\nextern struct CutsceneSplinePoint sBBHCreditsSplinePositions[];\nextern struct CutsceneSplinePoint sBBHCreditsSplineFocus[];\nextern struct CutsceneSplinePoint sHMCCreditsSplinePositions[];\nextern struct CutsceneSplinePoint sHMCCreditsSplineFocus[];\nextern struct CutsceneSplinePoint sTHIWigglerCreditsSplinePositions[];\nextern struct CutsceneSplinePoint sTHIWigglerCreditsSplineFocus[];\nextern struct CutsceneSplinePoint sVolcanoCreditsSplinePositions[];\nextern struct CutsceneSplinePoint sVolcanoCreditsSplineFocus[];\nextern struct CutsceneSplinePoint sSSLCreditsSplinePositions[];\nextern struct CutsceneSplinePoint sSSLCreditsSplineFocus[];\nextern struct CutsceneSplinePoint sDDDCreditsSplinePositions[];\nextern struct CutsceneSplinePoint sDDDCreditsSplineFocus[];\nextern struct CutsceneSplinePoint sSLCreditsSplinePositions[];\nextern struct CutsceneSplinePoint sSLCreditsSplineFocus[];\nextern struct CutsceneSplinePoint sWDWCreditsSplinePositions[];\nextern struct CutsceneSplinePoint sWDWCreditsSplineFocus[];\nextern struct CutsceneSplinePoint sTTMCreditsSplinePositions[];\nextern struct CutsceneSplinePoint sTTMCreditsSplineFocus[];\nextern struct CutsceneSplinePoint sTHIHugeCreditsSplinePositions[];\nextern struct CutsceneSplinePoint sTHIHugeCreditsSplineFocus[];\nextern struct CutsceneSplinePoint sTTCCreditsSplinePositions[];\nextern struct CutsceneSplinePoint sTTCCreditsSplineFocus[];\nextern struct CutsceneSplinePoint sRRCreditsSplinePositions[];\nextern struct CutsceneSplinePoint sRRCreditsSplineFocus[];\nextern struct CutsceneSplinePoint sSACreditsSplinePositions[];\nextern struct CutsceneSplinePoint sSACreditsSplineFocus[];\nextern struct CutsceneSplinePoint sCotMCCreditsSplinePositions[];\nextern struct CutsceneSplinePoint sCotMCCreditsSplineFocus[];\nextern struct CutsceneSplinePoint sDDDSubCreditsSplinePositions[];\nextern struct CutsceneSplinePoint sDDDSubCreditsSplineFocus[];\nextern struct CutsceneSplinePoint sCCMOutsideCreditsSplinePositions[];\nextern struct CutsceneSplinePoint sCCMOutsideCreditsSplineFocus[];\n\n/**\n * Follow splines through the courses of the game.\n */\nBAD_RETURN(s32) cutscene_credits(struct Camera *c) {\n    struct CutsceneSplinePoint *focus, *pos;\n\n    cutscene_event(cutscene_credits_reset_spline, c, 0, 0);\n\n    switch (gCurrLevelArea) {\n        case AREA_BOB:\n            pos = sBoBCreditsSplinePositions;\n            focus = sBoBCreditsSplineFocus;\n            break;\n        case AREA_WF:\n            pos = sWFCreditsSplinePositions;\n            focus = sWFCreditsSplineFocus;\n            break;\n        case AREA_JRB_MAIN:\n            pos = sJRBCreditsSplinePositions;\n            focus = sJRBCreditsSplineFocus;\n            break;\n        case AREA_CCM_SLIDE:\n            pos = sCCMSlideCreditsSplinePositions;\n            focus = sCCMSlideCreditsSplineFocus;\n            break;\n        case AREA_BBH:\n            pos = sBBHCreditsSplinePositions;\n            focus = sBBHCreditsSplineFocus;\n            break;\n        case AREA_HMC:\n            pos = sHMCCreditsSplinePositions;\n            focus = sHMCCreditsSplineFocus;\n            break;\n        case AREA_THI_WIGGLER:\n            pos = sTHIWigglerCreditsSplinePositions;\n            focus = sTHIWigglerCreditsSplineFocus;\n            break;\n        case AREA_LLL_VOLCANO:\n            pos = sVolcanoCreditsSplinePositions;\n            focus = sVolcanoCreditsSplineFocus;\n            break;\n        case AREA_SSL_OUTSIDE:\n            pos = sSSLCreditsSplinePositions;\n            focus = sSSLCreditsSplineFocus;\n            break;\n        case AREA_DDD_WHIRLPOOL:\n            pos = sDDDCreditsSplinePositions;\n            focus = sDDDCreditsSplineFocus;\n            break;\n        case AREA_SL_OUTSIDE:\n            pos = sSLCreditsSplinePositions;\n            focus = sSLCreditsSplineFocus;\n            break;\n        case AREA_WDW_MAIN:\n            pos = sWDWCreditsSplinePositions;\n            focus = sWDWCreditsSplineFocus;\n            break;\n        case AREA_TTM_OUTSIDE:\n            pos = sTTMCreditsSplinePositions;\n            focus = sTTMCreditsSplineFocus;\n            break;\n        case AREA_THI_HUGE:\n            pos = sTHIHugeCreditsSplinePositions;\n            focus = sTHIHugeCreditsSplineFocus;\n            break;\n        case AREA_TTC:\n            pos = sTTCCreditsSplinePositions;\n            focus = sTTCCreditsSplineFocus;\n            break;\n        case AREA_RR:\n            pos = sRRCreditsSplinePositions;\n            focus = sRRCreditsSplineFocus;\n            break;\n        case AREA_SA:\n            pos = sSACreditsSplinePositions;\n            focus = sSACreditsSplineFocus;\n            break;\n        case AREA_COTMC:\n            pos = sCotMCCreditsSplinePositions;\n            focus = sCotMCCreditsSplineFocus;\n            break;\n        case AREA_DDD_SUB:\n            pos = sDDDSubCreditsSplinePositions;\n            focus = sDDDSubCreditsSplineFocus;\n            break;\n        case AREA_CCM_OUTSIDE:\n            //! Checks if the \"Snowman's Lost His Head\" star was collected. The credits likely would\n            //! have avoided the snowman if the player didn't collect that star, but in the end the\n            //! developers decided against it.\n            if (save_file_get_star_flags(gCurrSaveFileNum - 1, COURSE_NUM_TO_INDEX(gCurrCourseNum)) & (1 << 4)) {\n                pos = sCCMOutsideCreditsSplinePositions;\n                focus = sCCMOutsideCreditsSplineFocus;\n            } else {\n                pos = sCCMOutsideCreditsSplinePositions;\n                focus = sCCMOutsideCreditsSplineFocus;\n            }\n            break;\n        default:\n            pos = sCCMOutsideCreditsSplinePositions;\n            focus = sCCMOutsideCreditsSplineFocus;\n    }\n\n    copy_spline_segment(sCurCreditsSplinePos, pos);\n    copy_spline_segment(sCurCreditsSplineFocus, focus);\n    move_point_along_spline(c->pos, sCurCreditsSplinePos, &sCutsceneSplineSegment, &sCutsceneSplineSegmentProgress);\n    move_point_along_spline(c->focus, sCurCreditsSplineFocus, &sCutsceneSplineSegment, &sCutsceneSplineSegmentProgress);\n    player2_rotate_cam(c, -0x2000, 0x2000, -0x4000, 0x4000);\n}\n\n/**\n * Set the camera pos relative to Mario.\n */\nBAD_RETURN(s32) cutscene_sliding_doors_open_start(struct Camera *c) {\n    f32 dist;\n    s16 pitch, yaw;\n\n    vec3f_get_dist_and_angle(sMarioCamState->pos, c->pos, &dist, &pitch, &yaw);\n\n    // If the camera is too close, warp it backwards set it to a better angle.\n    if (dist < 500.f) {\n        dist = 500.f;\n        yaw = sMarioCamState->faceAngle[1] + 0x8800;\n        pitch = 0x800;\n    }\n\n    vec3f_set_dist_and_angle(sMarioCamState->pos, c->pos, dist, pitch, yaw);\n}\n\n/**\n * cvar1: Mario's position\n * cvar0.angle: Mario's angle\n * cvar0.point: offset from Mario\n */\nBAD_RETURN(s32) cutscene_sliding_doors_open_set_cvars(UNUSED struct Camera *c) {\n    vec3f_copy(sCutsceneVars[1].point, sMarioCamState->pos);\n    vec3s_copy(sCutsceneVars[0].angle, sMarioCamState->faceAngle);\n    vec3f_set(sCutsceneVars[0].point, 80.f, 325.f, 200.f);\n}\n\n/**\n * Decrease the cvar0 y offset to 75, which would simulate Lakitu flying under the doorway.\n * However, the initial y offset is too high for Lakitu to reach 75 in time.\n */\nBAD_RETURN(s32) cutscene_sliding_doors_go_under_doorway(UNUSED struct Camera *c) {\n    camera_approach_f32_symmetric_bool(&sCutsceneVars[0].point[1], 75.f, 10.f);\n}\n\n/**\n * Approach a y offset of 125 again.\n */\nBAD_RETURN(s32) cutscene_sliding_doors_fly_back_up(UNUSED struct Camera *c) {\n    camera_approach_f32_symmetric_bool(&sCutsceneVars[0].point[1], 125.f, 10.f);\n}\n\n/**\n * Follow Mario through the door, by approaching cvar1.point.\n */\nBAD_RETURN(s32) cutscene_sliding_doors_follow_mario(struct Camera *c) {\n    Vec3f pos;\n    UNUSED u8 filler[20];\n\n    vec3f_copy(pos, c->pos);\n    // Update cvar1 with Mario's position (the y value doesn't change)\n    sCutsceneVars[1].point[0] = sMarioCamState->pos[0];\n    sCutsceneVars[1].point[2] = sMarioCamState->pos[2];\n\n    // Decrease cvar0's offsets, moving the camera behind Mario at his eye height.\n    approach_f32_asymptotic_bool(&sCutsceneVars[0].point[0], 0, 0.1f);\n    camera_approach_f32_symmetric_bool(&sCutsceneVars[0].point[2], 125.f, 50.f);\n    // Update cvar0's angle\n    approach_vec3s_asymptotic(sCutsceneVars[0].angle, sMarioCamState->faceAngle, 16, 16, 16);\n\n    // Apply the offset to the camera's position\n    offset_rotated(pos, sCutsceneVars[1].point, sCutsceneVars[0].point, sCutsceneVars[0].angle);\n    approach_vec3f_asymptotic(c->pos, pos, 0.15f, 0.05f, 0.15f);\n\n    // Focus on Mario's eye height\n    set_focus_rel_mario(c, 0, 125.f, 0, 0);\n}\n\n/**\n * Plays when Mario opens the sliding doors.\n * Note: the star door unlocking event is not a cutscene, it's handled by Mario separately.\n */\nBAD_RETURN(s32) cutscene_sliding_doors_open(struct Camera *c) {\n    UNUSED u8 filler[8];\n\n    reset_pan_distance(c);\n    cutscene_event(cutscene_sliding_doors_open_start, c, 0, 8);\n    cutscene_event(cutscene_sliding_doors_open_set_cvars, c, 8, 8);\n    cutscene_event(cutscene_sliding_doors_go_under_doorway, c, 8, 28);\n    cutscene_event(cutscene_sliding_doors_fly_back_up, c, 29, -1);\n    cutscene_event(cutscene_sliding_doors_follow_mario, c, 8, -1);\n}\n\n/**\n * Ends the double door cutscene.\n */\nBAD_RETURN(s32) cutscene_double_doors_end(struct Camera *c) {\n    set_flag_post_door(c);\n    c->cutscene = 0;\n    sStatusFlags |= CAM_FLAG_SMOOTH_MOVEMENT;\n}\n\nBAD_RETURN(s32) cutscene_enter_painting_stub(UNUSED struct Camera *c) {\n}\n\n/**\n * Plays when Mario enters a painting. The camera flies up to the painting's center, then it slowly\n * zooms in until the star select screen appears.\n */\nBAD_RETURN(s32) cutscene_enter_painting(struct Camera *c) {\n    struct Surface *floor, *highFloor;\n    Vec3f paintingPos, focus, focusOffset;\n    Vec3s paintingAngle;\n    f32 floorHeight;\n\n    cutscene_event(cutscene_enter_painting_stub, c, 0, 0);\n    // Zoom in\n    set_fov_function(CAM_FOV_APP_20);\n    sStatusFlags |= CAM_FLAG_SMOOTH_MOVEMENT;\n\n    if (gRipplingPainting != NULL) {\n        paintingAngle[0] = 0;\n        paintingAngle[1] = (s32)((gRipplingPainting->yaw / 360.f) * 65536.f); // convert degrees to IAU\n        paintingAngle[2] = 0;\n\n        focusOffset[0] = gRipplingPainting->size / 2;\n        focusOffset[1] = focusOffset[0];\n        focusOffset[2] = 0;\n\n        paintingPos[0] = gRipplingPainting->posX;\n        paintingPos[1] = gRipplingPainting->posY;\n        paintingPos[2] = gRipplingPainting->posZ;\n\n        offset_rotated(focus, paintingPos, focusOffset, paintingAngle);\n        approach_vec3f_asymptotic(c->focus, focus, 0.1f, 0.1f, 0.1f);\n        focusOffset[2] = -(((gRipplingPainting->size * 1000.f) / 2) / 307.f);\n        offset_rotated(focus, paintingPos, focusOffset, paintingAngle);\n        floorHeight = find_floor(focus[0], focus[1] + 500.f, focus[2], &highFloor) + 125.f;\n\n        if (focus[1] < floorHeight) {\n            focus[1] = floorHeight;\n        }\n\n        if (c->cutscene == CUTSCENE_ENTER_PAINTING) {\n            approach_vec3f_asymptotic(c->pos, focus, 0.2f, 0.1f, 0.2f);\n        } else {\n            approach_vec3f_asymptotic(c->pos, focus, 0.9f, 0.9f, 0.9f);\n        }\n\n        find_floor(sMarioCamState->pos[0], sMarioCamState->pos[1] + 50.f, sMarioCamState->pos[2], &floor);\n\n        if ((floor->type < SURFACE_PAINTING_WOBBLE_A6) || (floor->type > SURFACE_PAINTING_WARP_F9)) {\n            c->cutscene = 0;\n            gCutsceneTimer = CUTSCENE_STOP;\n            sStatusFlags |= CAM_FLAG_SMOOTH_MOVEMENT;\n        }\n    }\n    c->mode = CAMERA_MODE_CLOSE;\n}\n\n/**\n * Warp the camera to Mario, then use his faceAngle to calculate the right relative position.\n *\n * cvar0.point is Mario's position\n * cvar0.angle is Mario's faceAngle\n *\n * cvar1 is the camera's position relative to Mario\n * cvar2 is the camera's focus relative to Mario\n */\nBAD_RETURN(s32) cutscene_exit_painting_start(struct Camera *c) {\n    struct Surface *floor;\n    f32 floorHeight;\n\n    vec3f_set(sCutsceneVars[2].point, 258.f, -352.f, 1189.f);\n    vec3f_set(sCutsceneVars[1].point, 65.f, -155.f, 444.f);\n\n    if (gPrevLevel == LEVEL_TTM) {\n        sCutsceneVars[1].point[1] = 0.f;\n        sCutsceneVars[1].point[2] = 0.f;\n    }\n    vec3f_copy(sCutsceneVars[0].point, sMarioCamState->pos);\n    sCutsceneVars[0].angle[0] = 0;\n    sCutsceneVars[0].angle[1] = sMarioCamState->faceAngle[1];\n    sCutsceneVars[0].angle[2] = 0;\n    offset_rotated(c->focus, sCutsceneVars[0].point, sCutsceneVars[1].point, sCutsceneVars[0].angle);\n    offset_rotated(c->pos, sCutsceneVars[0].point, sCutsceneVars[2].point, sCutsceneVars[0].angle);\n    floorHeight = find_floor(c->pos[0], c->pos[1] + 10.f, c->pos[2], &floor);\n\n    if (floorHeight != FLOOR_LOWER_LIMIT) {\n        if (c->pos[1] < (floorHeight += 60.f)) {\n            c->pos[1] = floorHeight;\n        }\n    }\n}\n\n/**\n * Decrease cvar2's x and z offset, moving closer to Mario.\n */\nBAD_RETURN(s32) cutscene_exit_painting_move_to_mario(struct Camera *c) {\n    Vec3f pos;\n\n    //! Tricky math: Since offset_rotated() flips Z offsets, you'd expect a positive Z offset to move\n    //! the camera into the wall. However, Mario's faceAngle always points into the painting, so a\n    //! positive Z offset moves the camera \"behind\" Mario, away from the painting.\n    //!\n    //! In the success cutscene, when Mario jumps out face-first, only his gfx angle is updated. His\n    //! actual face angle isn't updated until after the cutscene.\n    approach_f32_asymptotic_bool(&sCutsceneVars[2].point[0], 178.f, 0.05f);\n    approach_f32_asymptotic_bool(&sCutsceneVars[2].point[2], 889.f, 0.05f);\n    offset_rotated(pos, sCutsceneVars[0].point, sCutsceneVars[2].point, sCutsceneVars[0].angle);\n    c->pos[0] = pos[0];\n    c->pos[2] = pos[2];\n}\n\n/**\n * Move the camera down to the floor Mario lands on.\n */\nBAD_RETURN(s32) cutscene_exit_painting_move_to_floor(struct Camera *c) {\n    struct Surface *floor;\n    Vec3f floorHeight;\n\n    vec3f_copy(floorHeight, sMarioCamState->pos);\n    floorHeight[1] = find_floor(sMarioCamState->pos[0], sMarioCamState->pos[1] + 10.f, sMarioCamState->pos[2], &floor);\n\n    if (floor != NULL) {\n        floorHeight[1] = floorHeight[1] + (sMarioCamState->pos[1] - floorHeight[1]) * 0.7f + 125.f;\n        approach_vec3f_asymptotic(c->focus, floorHeight, 0.2f, 0.2f, 0.2f);\n\n        if (floorHeight[1] < c->pos[1]) {\n            approach_f32_asymptotic_bool(&c->pos[1], floorHeight[1], 0.05f);\n        }\n    }\n}\n\n/**\n * Cutscene played when Mario leaves a painting, either due to death or collecting a star.\n */\nBAD_RETURN(s32) cutscene_exit_painting(struct Camera *c) {\n    cutscene_event(cutscene_exit_painting_start, c, 0, 0);\n    cutscene_event(cutscene_exit_painting_move_to_mario, c, 5, -1);\n    cutscene_event(cutscene_exit_painting_move_to_floor, c, 5, -1);\n\n    //! Hardcoded position. TTM's painting is close to an opposite wall, so just fix the pos.\n    if (gPrevLevel == LEVEL_TTM) {\n        vec3f_set(c->pos, -296.f, 1261.f, 3521.f);\n    }\n\n    update_camera_yaw(c);\n}\n\n/**\n * Unused. Warp the camera to Mario.\n */\nBAD_RETURN(s32) cutscene_unused_exit_start(struct Camera *c) {\n    UNUSED u8 filler[18];\n    Vec3f offset;\n    Vec3s marioAngle;\n\n    vec3f_set(offset, 200.f, 300.f, 200.f);\n    vec3s_set(marioAngle, 0, sMarioCamState->faceAngle[1], 0);\n    offset_rotated(c->pos, sMarioCamState->pos, offset, marioAngle);\n    set_focus_rel_mario(c, 0.f, 125.f, 0.f, 0);\n}\n\n/**\n * Unused. Focus on Mario as he exits.\n */\nBAD_RETURN(s32) cutscene_unused_exit_focus_mario(struct Camera *c) {\n    Vec3f focus;\n\n    vec3f_set(focus, sMarioCamState->pos[0], sMarioCamState->pos[1] + 125.f, sMarioCamState->pos[2]);\n    set_focus_rel_mario(c, 0.f, 125.f, 0.f, 0);\n    approach_vec3f_asymptotic(c->focus, focus, 0.02f, 0.001f, 0.02f);\n    update_camera_yaw(c);\n}\n\n/**\n * Give control back to the player.\n */\nBAD_RETURN(s32) cutscene_exit_painting_end(struct Camera *c) {\n    c->mode = CAMERA_MODE_CLOSE;\n    c->cutscene = 0;\n    gCutsceneTimer = CUTSCENE_STOP;\n    sStatusFlags |= CAM_FLAG_SMOOTH_MOVEMENT;\n    sStatusFlags &= ~CAM_FLAG_BLOCK_SMOOTH_MOVEMENT;\n    update_camera_yaw(c);\n}\n\n/**\n * End the cutscene, starting cannon mode.\n */\nBAD_RETURN(s32) cutscene_enter_cannon_end(struct Camera *c) {\n    sStatusFlags &= ~CAM_FLAG_SMOOTH_MOVEMENT;\n    sStatusFlags |= CAM_FLAG_BLOCK_SMOOTH_MOVEMENT;\n    c->mode = CAMERA_MODE_INSIDE_CANNON;\n    c->cutscene = 0;\n    sCannonYOffset = 800.f;\n}\n\n/**\n * Rotate around the cannon as it rises out of the hole.\n */\nBAD_RETURN(s32) cutscene_enter_cannon_raise(struct Camera *c) {\n    struct Object *o;\n    UNUSED u8 filler[8];\n    f32 floorHeight;\n    struct Surface *floor;\n    Vec3f cannonFocus;\n    Vec3s cannonAngle;\n\n    // Shake the camera when the cannon is fully raised\n    cutscene_event(cutscene_shake_explosion, c, 70, 70);\n    sStatusFlags |= CAM_FLAG_SMOOTH_MOVEMENT;\n    camera_approach_s16_symmetric_bool(&sCutsceneVars[1].angle[0], 0, 0x80);\n    camera_approach_s16_symmetric_bool(&sCutsceneVars[2].angle[0], 0, 0x80);\n    // Move the camera around the cannon, gradually rotating and moving closer\n    vec3f_set_dist_and_angle(sCutsceneVars[0].point, c->pos, sCutsceneVars[1].point[2], sCutsceneVars[1].angle[0],\n                             sCutsceneVars[1].angle[1]);\n    sCutsceneVars[1].point[2] = approach_f32(sCutsceneVars[1].point[2], 400.f, 5.f, 5.f);\n    sCutsceneVars[1].angle[1] += 0x40;\n    sCutsceneVars[3].point[1] += 2.f;\n    c->pos[1] += sCutsceneVars[3].point[1];\n\n    if ((o = sMarioCamState->usedObj) != NULL) {\n        sCutsceneVars[0].point[1] = o->oPosY;\n        cannonAngle[0] = o->oMoveAnglePitch;\n        cannonAngle[1] = o->oMoveAngleYaw;\n        cannonAngle[2] = o->oMoveAngleRoll;\n        c->focus[0] = o->oPosX;\n        c->focus[1] = o->oPosY;\n        c->focus[2] = o->oPosZ;\n        cannonFocus[0] = 0.f;\n        cannonFocus[1] = 100.f;\n        cannonFocus[2] = 0.f;\n        offset_rotated(c->focus, c->focus, cannonFocus, cannonAngle);\n    }\n\n    floorHeight = find_floor(c->pos[0], c->pos[1] + 500.f, c->pos[2], &floor) + 100.f;\n\n    if (c->pos[1] < floorHeight) {\n        c->pos[1] = floorHeight;\n    }\n}\n\n/**\n * Start the cannon entering cutscene\n */\nBAD_RETURN(s32) cutscene_enter_cannon_start(struct Camera *c) {\n    UNUSED u8 filler[8]; // cvar3Start, cvar4Start?\n    struct Object *o;\n\n    sStatusFlags |= CAM_FLAG_SMOOTH_MOVEMENT;\n    sMarioCamState->cameraEvent = 0;\n\n    // Store the cannon's position and angle in cvar0\n    if ((o = sMarioCamState->usedObj) != NULL) {\n        sCutsceneVars[0].point[0] = o->oPosX;\n        sCutsceneVars[0].point[1] = o->oPosY;\n        sCutsceneVars[0].point[2] = o->oPosZ;\n        sCutsceneVars[0].angle[0] = o->oMoveAnglePitch;\n        sCutsceneVars[0].angle[1] = o->oMoveAngleYaw;\n        sCutsceneVars[0].angle[2] = o->oMoveAngleRoll;\n    }\n\n    // Store the camera's polar offset from the cannon in cvar1\n    vec3f_get_dist_and_angle(sCutsceneVars[0].point, c->pos, &sCutsceneVars[1].point[2],\n                             &sCutsceneVars[1].angle[0], &sCutsceneVars[1].angle[1]);\n    sCutsceneVars[3].point[1] = 0.f;\n    //! cvar4 is unused in this cutscene\n    sCutsceneVars[4].point[1] = 0.f;\n}\n\n/**\n * Store the camera's pos and focus for the door cutscene\n */\nBAD_RETURN(s32) cutscene_door_start(struct Camera *c) {\n    vec3f_copy(sCutsceneVars[0].point, c->pos);\n    vec3f_copy(sCutsceneVars[1].point, c->focus);\n}\n\n/**\n * Fix the camera in place while the door opens.\n */\nBAD_RETURN(s32) cutscene_door_fix_cam(struct Camera *c) {\n    vec3f_copy(c->pos, sCutsceneVars[0].point);\n    vec3f_copy(c->focus, sCutsceneVars[1].point);\n}\n\n/**\n * Loop until Mario is no longer using the door.\n */\nBAD_RETURN(s32) cutscene_door_loop(struct Camera *c) {\n    //! bitwise AND instead of boolean\n    if ((sMarioCamState->action != ACT_PULLING_DOOR) & (sMarioCamState->action != ACT_PUSHING_DOOR)) {\n        gCutsceneTimer = CUTSCENE_STOP;\n        c->cutscene = 0;\n    }\n}\n\n/**\n * Warp the camera behind Mario.\n */\nBAD_RETURN(s32) cutscene_door_move_behind_mario(struct Camera *c) {\n    Vec3f camOffset;\n    s16 doorRotation;\n\n    reset_pan_distance(c);\n    determine_pushing_or_pulling_door(&doorRotation);\n    set_focus_rel_mario(c, 0.f, 125.f, 0.f, 0);\n    vec3s_set(sCutsceneVars[0].angle, 0, sMarioCamState->faceAngle[1] + doorRotation, 0);\n    vec3f_set(camOffset, 0.f, 125.f, 250.f);\n\n    if (doorRotation == 0) { //! useless code\n        camOffset[0] = 0.f;\n    } else {\n        camOffset[0] = 0.f;\n    }\n\n    offset_rotated(c->pos, sMarioCamState->pos, camOffset, sCutsceneVars[0].angle);\n}\n\n/**\n * Follow Mario through the door.\n */\nBAD_RETURN(s32) cutscene_door_follow_mario(struct Camera *c) {\n    s16 pitch, yaw;\n    f32 dist;\n\n    set_focus_rel_mario(c, 0.f, 125.f, 0.f, 0);\n    vec3f_get_dist_and_angle(c->focus, c->pos, &dist, &pitch, &yaw);\n    camera_approach_f32_symmetric_bool(&dist, 150.f, 7.f);\n    vec3f_set_dist_and_angle(c->focus, c->pos, dist, pitch, yaw);\n    update_camera_yaw(c);\n}\n\n/**\n * Ends the door cutscene. Sets the camera mode to close mode unless the default is free roam.\n */\nBAD_RETURN(s32) cutscene_door_end(struct Camera *c) {\n    if (c->defMode == CAMERA_MODE_FREE_ROAM) {\n        c->mode = CAMERA_MODE_FREE_ROAM;\n    } else {\n        c->mode = CAMERA_MODE_CLOSE;\n    }\n\n    c->cutscene = 0;\n    gCutsceneTimer = CUTSCENE_STOP;\n    sStatusFlags |= CAM_FLAG_SMOOTH_MOVEMENT;\n    sStatusFlags &= ~CAM_FLAG_BLOCK_SMOOTH_MOVEMENT;\n    set_flag_post_door(c);\n    update_camera_yaw(c);\n}\n\n/**\n * Used for entering a room that uses a specific camera mode, like the castle lobby or BBH\n */\nBAD_RETURN(s32) cutscene_door_mode(struct Camera *c) {\n    UNUSED u8 filler[8];\n\n    reset_pan_distance(c);\n    camera_course_processing(c);\n\n    if (c->mode == CAMERA_MODE_FIXED) {\n        c->nextYaw = update_fixed_camera(c, c->focus, c->pos);\n    }\n    if (c->mode == CAMERA_MODE_PARALLEL_TRACKING) {\n        c->nextYaw = update_parallel_tracking_camera(c, c->focus, c->pos);\n    }\n\n    c->yaw = c->nextYaw;\n\n    // Loop until Mario is no longer using the door\n    if (sMarioCamState->action != ACT_ENTERING_STAR_DOOR &&\n        sMarioCamState->action != ACT_PULLING_DOOR &&\n        sMarioCamState->action != ACT_PUSHING_DOOR) {\n        gCutsceneTimer = CUTSCENE_STOP;\n        c->cutscene = 0;\n    }\n}\n\n/******************************************************************************************************\n * Cutscenes\n ******************************************************************************************************/\n\n/**\n * Cutscene that plays when Mario beats the game.\n */\nstruct Cutscene sCutsceneEnding[] = {\n    { cutscene_ending_mario_fall, 170 },\n    { cutscene_ending_mario_land, 70 },\n#ifdef VERSION_EU\n    { cutscene_ending_mario_land_closeup, 0x44 },\n    { cutscene_ending_stars_free_peach,  0x15c },\n    { cutscene_ending_peach_appears, 0x6d  },\n    { cutscene_ending_peach_descends, 0x212 },\n    { cutscene_ending_mario_to_peach, 0x69 },\n    { cutscene_ending_peach_wakeup, 0x1a4 },\n    { cutscene_ending_dialog, 0x114 },\n    { cutscene_ending_kiss, 0x10b },\n#else\n    { cutscene_ending_mario_land_closeup, 75 },\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    { cutscene_ending_stars_free_peach, 431 },\n#else\n    { cutscene_ending_stars_free_peach, 386 },\n#endif\n    { cutscene_ending_peach_appears, 139 },\n    { cutscene_ending_peach_descends, 590 },\n    { cutscene_ending_mario_to_peach, 95 },\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    { cutscene_ending_peach_wakeup, 455 },\n    { cutscene_ending_dialog, 286 },\n#else\n    { cutscene_ending_peach_wakeup, 425 },\n    { cutscene_ending_dialog, 236 },\n#endif\n    { cutscene_ending_kiss, 245 },\n#endif\n    { cutscene_ending_cake_for_mario, CUTSCENE_LOOP },\n    { cutscene_ending_stop, 0 }\n};\n\n/**\n * Cutscene that plays when Mario collects the grand star from bowser.\n */\nstruct Cutscene sCutsceneGrandStar[] = {\n    { cutscene_grand_star, 360 },\n    { cutscene_grand_star_fly, CUTSCENE_LOOP }\n};\n\nstruct Cutscene sCutsceneUnused[] = {\n    { cutscene_unused_start, 1 },\n    { cutscene_unused_loop, CUTSCENE_LOOP }\n};\n\n/**\n * Cutscene that plays when Mario enters a door that warps to another area.\n */\nstruct Cutscene sCutsceneDoorWarp[] = {\n    { cutscene_door_start, 1 },\n    { cutscene_door_loop, CUTSCENE_LOOP }\n};\n\n/**\n * Cutscene that plays after the credits, when Lakitu is flying away from the castle.\n */\nstruct Cutscene sCutsceneEndWaving[] = {\n    { cutscene_end_waving, CUTSCENE_LOOP }\n};\n\n/**\n * The game's credits.\n */\nstruct Cutscene sCutsceneCredits[] = {\n    { cutscene_credits, CUTSCENE_LOOP }\n};\n\n/**\n * Cutscene that plays when Mario pulls open a door.\n */\nstruct Cutscene sCutsceneDoorPull[] = {\n    { cutscene_door_start, 1 },\n    { cutscene_door_fix_cam, 30 },\n    { cutscene_door_move_behind_mario, 1 },\n    { cutscene_door_follow_mario, 50 },\n    { cutscene_door_end, 0 }\n};\n\n/**\n * Cutscene that plays when Mario pushes open a door.\n */\nstruct Cutscene sCutsceneDoorPush[] = {\n    { cutscene_door_start, 1 },\n    { cutscene_door_fix_cam, 20 },\n    { cutscene_door_move_behind_mario, 1 },\n    { cutscene_door_follow_mario, 50 },\n    { cutscene_door_end, 0 }\n};\n\n/**\n * Cutscene that plays when Mario pulls open a door that has some special mode requirement on the other\n * side.\n */\nstruct Cutscene sCutsceneDoorPullMode[] = {\n    { cutscene_door_start, 1 },\n    { cutscene_door_fix_cam, 30 },\n    { cutscene_door_mode, CUTSCENE_LOOP }\n};\n\n/**\n * Cutscene that plays when Mario pushes open a door that has some special mode requirement on the other\n * side.\n */\nstruct Cutscene sCutsceneDoorPushMode[] = {\n    { cutscene_door_start, 1 },\n    { cutscene_door_fix_cam, 20 },\n    { cutscene_door_mode, CUTSCENE_LOOP }\n};\n\n/**\n * Cutscene that plays when Mario enters the cannon and it rises out of the hole.\n */\nstruct Cutscene sCutsceneEnterCannon[] = {\n    { cutscene_enter_cannon_start, 1 },\n    { cutscene_enter_cannon_raise, 121 },\n    { cutscene_enter_cannon_end, 0 }\n};\n\n/**\n * Cutscene that plays when a star spawns from ie a box or after a boss fight.\n */\nstruct Cutscene sCutsceneStarSpawn[] = {\n    { cutscene_star_spawn, CUTSCENE_LOOP },\n    { cutscene_star_spawn_back, 15 },\n    { cutscene_star_spawn_end, 0 }\n};\n\n/**\n * Cutscene for the red coin star spawning. Compared to a regular star, this cutscene can warp long\n * distances.\n */\nstruct Cutscene sCutsceneRedCoinStarSpawn[] = {\n    { cutscene_red_coin_star, CUTSCENE_LOOP },\n    { cutscene_red_coin_star_end, 0 }\n};\n\n/**\n * Cutscene that plays when Mario enters a course painting.\n */\nstruct Cutscene sCutsceneEnterPainting[] = {\n    { cutscene_enter_painting, CUTSCENE_LOOP }\n};\n\n/**\n * Cutscene that plays when Mario dies and warps back to the castle.\n */\nstruct Cutscene sCutsceneDeathExit[] = {\n    { cutscene_exit_painting, 118 },\n    { cutscene_exit_painting_end, 0 }\n};\n\n/**\n * Cutscene that plays when Mario warps to the castle after collecting a star.\n */\nstruct Cutscene sCutsceneExitPaintingSuccess[] = {\n    { cutscene_exit_painting, 180 },\n    { cutscene_exit_painting_end, 0 }\n};\n\nstruct Cutscene sCutsceneUnusedExit[] = {\n    { cutscene_unused_exit_start, 1 },\n    { cutscene_unused_exit_focus_mario, 60 },\n    { cutscene_exit_painting_end, 0 }\n};\n\n/**\n * The intro of the game. Peach reads her letter and Lakitu flies down to Mario's warp pipe.\n */\nstruct Cutscene sCutsceneIntroPeach[] = {\n    { cutscene_intro_peach_letter, CUTSCENE_LOOP },\n    { cutscene_intro_peach_reset_fov, 35 },\n#ifdef VERSION_EU\n    { cutscene_intro_peach_fly_to_pipe, 675 },\n#else\n    { cutscene_intro_peach_fly_to_pipe, 820 },\n#endif\n    { cutscene_intro_peach_mario_appears, 270 },\n    { cutscene_intro_peach_dialog, CUTSCENE_LOOP }\n};\n\n/**\n * Cutscene that plays when a cannon door is opened.\n */\nstruct Cutscene sCutscenePrepareCannon[] = {\n    { cutscene_prepare_cannon, 170 },\n    { cutscene_prepare_cannon_end, 0 }\n};\n\n/**\n * Cutscene that plays when Mario enters the castle grounds after leaving CotMC through the waterfall.\n */\nstruct Cutscene sCutsceneExitWaterfall[] = {\n    { cutscene_exit_waterfall, 52 },\n    { cutscene_exit_to_castle_grounds_end, 0 }\n};\n\n/**\n * Cutscene that plays when Mario falls from WMotR.\n */\nstruct Cutscene sCutsceneFallToCastleGrounds[] = {\n    { cutscene_exit_fall_to_castle_grounds, 73 },\n    { cutscene_exit_to_castle_grounds_end, 0 }\n};\n\n/**\n * Cutscene that plays when Mario enters the pyramid through the hole at the top.\n */\nstruct Cutscene sCutsceneEnterPyramidTop[] = {\n    { cutscene_enter_pyramid_top, 90 },\n    { cutscene_exit_to_castle_grounds_end, 0 }\n};\n\n/**\n * Unused cutscene for when the pyramid explodes.\n */\nstruct Cutscene sCutscenePyramidTopExplode[] = {\n    { cutscene_mario_dialog, CUTSCENE_LOOP },\n    { cutscene_pyramid_top_explode, 150 },\n    { cutscene_pyramid_top_explode_end, 0 }\n};\n\n/**\n * Cutscene that plays when Mario dies while standing, or from electrocution.\n */\nstruct Cutscene sCutsceneStandingDeath[] = {\n    { cutscene_death_standing, CUTSCENE_LOOP }\n};\n\n/**\n * Cutscene that plays when Mario enters HMC or CotMC.\n */\nstruct Cutscene sCutsceneEnterPool[] = {\n    { cutscene_enter_pool, 100 },\n    { cutscene_exit_to_castle_grounds_end, 0 }\n};\n\n/**\n * Cutscene that plays when Mario dies on his stomach.\n */\nstruct Cutscene sCutsceneDeathStomach[] = {\n    { cutscene_death_stomach, CUTSCENE_LOOP }\n};\n\n/**\n * Cutscene that plays when Mario dies on his back.\n */\nstruct Cutscene sCutsceneDeathOnBack[] = {\n    { cutscene_bbh_death, CUTSCENE_LOOP }\n};\n\n/**\n * Cutscene that plays when Mario dies in quicksand.\n */\nstruct Cutscene sCutsceneQuicksandDeath[] = {\n    { cutscene_quicksand_death, CUTSCENE_LOOP },\n};\n\n/**\n * Unused cutscene for ACT_WATER_DEATH, which happens when Mario gets hit by an enemy under water.\n */\nstruct Cutscene sCutsceneWaterDeath[] = {\n    { cutscene_quicksand_death, CUTSCENE_LOOP }\n};\n\n/**\n * Cutscene that plays when Mario suffocates.\n */\nstruct Cutscene sCutsceneSuffocation[] = {\n    { cutscene_suffocation, CUTSCENE_LOOP }\n};\n\n/**\n * Cutscene that plays when entering bowser's arenas.\n */\nstruct Cutscene sCutsceneEnterBowserArena[] = {\n    { cutscene_bowser_arena, 180 },\n    { cutscene_bowser_arena_dialog, CUTSCENE_LOOP },\n    { cutscene_bowser_arena_end, 0 }\n};\n\n// The dance cutscenes are automatically stopped since reset_camera() is called after Mario warps.\n\n/**\n * Star dance cutscene.\n * For the default dance, the camera moves closer to Mario, then stays in place.\n * For the rotate dance, the camera moves closer and rotates clockwise around Mario.\n */\nstruct Cutscene sCutsceneDanceDefaultRotate[] = {\n    { cutscene_dance_default_rotate, CUTSCENE_LOOP }\n};\n\n/**\n * Star dance cutscene.\n * The camera moves closer and rotates clockwise around Mario.\n */\nstruct Cutscene sCutsceneDanceFlyAway[] = {\n    { cutscene_dance_fly_away, CUTSCENE_LOOP }\n};\n\n/**\n * Star dance cutscene.\n * The camera moves in for a closeup on Mario. Used in tight spaces and underwater.\n */\nstruct Cutscene sCutsceneDanceCloseup[] = {\n    { cutscene_dance_closeup, CUTSCENE_LOOP }\n};\n\n/**\n * Star dance cutscene.\n * The camera moves closer and rotates clockwise around Mario.\n */\nstruct Cutscene sCutsceneKeyDance[] = {\n    { cutscene_key_dance, CUTSCENE_LOOP }\n};\n\n/**\n * Cutscene that plays when Mario presses a cap switch.\n */\nstruct Cutscene sCutsceneCapSwitchPress[] = {\n    { cutscene_cap_switch_press, CUTSCENE_LOOP }\n};\n\n/**\n * Cutscene that plays when Mario opens a sliding star door.\n */\nstruct Cutscene sCutsceneSlidingDoorsOpen[] = {\n    { cutscene_sliding_doors_open, 50 },\n    { cutscene_double_doors_end, 0 }\n};\n\n/**\n * Cutscene that plays when Mario unlocks the basement or upstairs key door.\n */\nstruct Cutscene sCutsceneUnlockKeyDoor[] = {\n    { cutscene_unlock_key_door, 200 },\n    { cutscene_double_doors_end, 0 }\n};\n\n/**\n * Cutscene that plays when Mario exits bowser's arena after getting the key.\n */\nstruct Cutscene sCutsceneExitBowserSuccess[] = {\n    { cutscene_exit_bowser_succ, 190 },\n    { cutscene_non_painting_end, 0 }\n};\n\n/**\n * Unused cutscene for when Mario dies in bowser's arena. Instead, Mario just respawns at the warp pipe.\n */\nstruct Cutscene sCutsceneExitBowserDeath[] = {\n    { cutscene_exit_bowser_death, 120 },\n    { cutscene_non_painting_end, 0 }\n};\n\n/**\n * Cutscene that plays when Mario exits a non-painting course, like HMC.\n */\nstruct Cutscene sCutsceneExitSpecialSuccess[] = {\n    { cutscene_exit_non_painting_succ, 163 },\n    { cutscene_non_painting_end, 0 }\n};\n\n/**\n * Cutscene that plays when Mario exits from dying in a non-painting course, like HMC.\n */\nstruct Cutscene sCutsceneNonPaintingDeath[] = {\n    { cutscene_non_painting_death, 120 },\n    { cutscene_non_painting_end, 0 }\n};\n\n/**\n * Cutscene that plays when Mario talks to a creature.\n */\nstruct Cutscene sCutsceneDialog[] = {\n    { cutscene_dialog, CUTSCENE_LOOP },\n    { cutscene_dialog_set_flag, 12 },\n    { cutscene_dialog_end, 0 }\n};\n\n/**\n * Cutscene that plays when Mario reads a sign or message.\n */\nstruct Cutscene sCutsceneReadMessage[] = {\n    { cutscene_read_message, CUTSCENE_LOOP },\n    { cutscene_read_message_set_flag, 15 },\n    { cutscene_read_message_end, 0 }\n};\n\n/* TODO:\n * The next two arrays are both related to levels, and they look generated.\n * These should be split into their own file.\n */\n\n/**\n * Converts the u32 given in DEFINE_COURSE to a u8 with the odd and even digits rotated into the right\n * order for sDanceCutsceneIndexTable\n */\n#define DROT(value, index) ((value >> (32 - (index + 1) * 8)) & 0xF0) >> 4 | \\\n                           ((value >> (32 - (index + 1) * 8)) & 0x0F) << 4\n\n#define DANCE_ENTRY(c) { DROT(c, 0), DROT(c, 1), DROT(c, 2), DROT(c, 3) },\n\n#define DEFINE_COURSE(_0, cutscenes) DANCE_ENTRY(cutscenes)\n#define DEFINE_COURSES_END()\n#define DEFINE_BONUS_COURSE(_0, cutscenes) DANCE_ENTRY(cutscenes)\n\n/**\n * Each hex digit is an index into sDanceCutsceneTable.\n *\n * 0: Lakitu flies away after the dance\n * 1: Only rotates the camera, doesn't zoom out\n * 2: The camera goes to a close up of Mario\n * 3: Bowser keys and the grand star\n * 4: Default, used for 100 coin stars, 8 red coin stars in bowser levels, and secret stars\n */\nu8 sDanceCutsceneIndexTable[][4] = {\n    #include \"levels/course_defines.h\"\n    { 0x44, 0x44, 0x44, 0x04 }, // (26) Why go to all this trouble to save bytes and do this?!\n};\n#undef DEFINE_COURSE\n#undef DEFINE_COURSES_END\n#undef DEFINE_BONUS_COURSE\n\n#undef DANCE_ENTRY\n#undef DROT\n\n/**\n * These masks set whether or not the camera zooms out when game is paused.\n *\n * Each entry is used by two levels. Even levels use the low 4 bits, odd levels use the high 4 bits\n * Because areas are 1-indexed, a mask of 0x1 will make area 1 (not area 0) zoom out.\n *\n * In zoom_out_if_paused_and_outside(), the current area is converted to a shift.\n * Then the value of (1 << shift) is &'d with the level's mask,\n * and if the result is non-zero, the camera will zoom out.\n */\nu8 sZoomOutAreaMasks[] = {\n    ZOOMOUT_AREA_MASK(0,0,0,0, 0,0,0,0), // Unused         | Unused\n    ZOOMOUT_AREA_MASK(0,0,0,0, 0,0,0,0), // Unused         | Unused\n    ZOOMOUT_AREA_MASK(0,0,0,0, 1,0,0,0), // BBH            | CCM\n    ZOOMOUT_AREA_MASK(0,0,0,0, 0,0,0,0), // CASTLE_INSIDE  | HMC\n    ZOOMOUT_AREA_MASK(1,0,0,0, 1,0,0,0), // SSL            | BOB\n    ZOOMOUT_AREA_MASK(1,0,0,0, 1,0,0,0), // SL             | WDW\n    ZOOMOUT_AREA_MASK(0,0,0,0, 1,1,0,0), // JRB            | THI\n    ZOOMOUT_AREA_MASK(0,0,0,0, 1,0,0,0), // TTC            | RR\n    ZOOMOUT_AREA_MASK(1,0,0,0, 1,0,0,0), // CASTLE_GROUNDS | BITDW\n    ZOOMOUT_AREA_MASK(0,0,0,0, 1,0,0,0), // VCUTM          | BITFS\n    ZOOMOUT_AREA_MASK(0,0,0,0, 1,0,0,0), // SA             | BITS\n    ZOOMOUT_AREA_MASK(1,0,0,0, 0,0,0,0), // LLL            | DDD\n    ZOOMOUT_AREA_MASK(1,0,0,0, 0,0,0,0), // WF             | ENDING\n    ZOOMOUT_AREA_MASK(0,0,0,0, 0,0,0,0), // COURTYARD      | PSS\n    ZOOMOUT_AREA_MASK(0,0,0,0, 1,0,0,0), // COTMC          | TOTWC\n    ZOOMOUT_AREA_MASK(1,0,0,0, 1,0,0,0), // BOWSER_1       | WMOTR\n    ZOOMOUT_AREA_MASK(0,0,0,0, 1,0,0,0), // Unused         | BOWSER_2\n    ZOOMOUT_AREA_MASK(1,0,0,0, 0,0,0,0), // BOWSER_3       | Unused\n    ZOOMOUT_AREA_MASK(1,0,0,0, 0,0,0,0), // TTM            | Unused\n    ZOOMOUT_AREA_MASK(0,0,0,0, 0,0,0,0), // Unused         | Unused\n};\n\nSTATIC_ASSERT(ARRAY_COUNT(sZoomOutAreaMasks) - 1 == LEVEL_MAX / 2, \"Make sure you edit sZoomOutAreaMasks when adding / removing courses.\");\n\n/*\n * credits spline paths.\n * TODO: Separate these into their own file(s)\n */\n\nstruct CutsceneSplinePoint sBoBCreditsSplinePositions[] = {\n    { 1, 0, { 5984, 3255, 4975 } },\n    { 2, 0, { 4423, 3315, 1888 } },\n    { 3, 0, { 776, 2740, -1825 } },\n    { 4, 0, { -146, 3894, -3167 } },\n    { -1, 0, { 741, 4387, -5474 } }\n};\n\nstruct CutsceneSplinePoint sBoBCreditsSplineFocus[] = {\n    { 0, 30, { 5817, 3306, 4507 } },\n    { 0, 40, { 4025, 3378, 1593 } },\n    { 0, 50, { 1088, 2652, -2205 } },\n    { 0, 60, { 205, 3959, -3517 } },\n    { -1, 60, { 1231, 4400, -5649 } }\n};\n\nstruct CutsceneSplinePoint sWFCreditsSplinePositions[] = {\n    { 0, 0, { -301, 1399, 2643 } },\n    { 0, 0, { -182, 2374, 4572 } },\n    { 0, 0, { 4696, 3864, 413 } },\n    { 0, 0, { 1738, 4891, -1516 } },\n    { -1, 0, { 1783, 4891, -1516 } }\n};\n\nstruct CutsceneSplinePoint sWFCreditsSplineFocus[] = {\n    { 1, 30, { -249, 1484, 2153 } },\n    { 2, 40, { -200, 2470, 4082 } },\n    { 3, 40, { 4200, 3916, 370 } },\n    { 4, 40, { 1523, 4976, -1072 } },\n    { -1, 40, { 1523, 4976, -1072 } }\n};\n\nstruct CutsceneSplinePoint sJRBCreditsSplinePositions[] = {\n    { 0, 0, { 5538, -4272, 2376 } },\n    { 0, 0, { 5997, -3303, 2261 } },\n    { 0, 0, { 6345, -3255, 2179 } },\n    { 0, 0, { 6345, -3255, 2179 } },\n    { -1, 0, { 6694, -3203, 2116 } }\n};\n\nstruct CutsceneSplinePoint sJRBCreditsSplineFocus[] = {\n    { 0, 50, { 5261, -4683, 2443 } },\n    { 0, 50, { 5726, -3675, 2456 } },\n    { 0, 50, { 6268, -2817, 2409 } },\n    { 0, 50, { 6596, -2866, 2369 } },\n    { -1, 50, { 7186, -3153, 2041 } }\n};\n\nstruct CutsceneSplinePoint sCCMSlideCreditsSplinePositions[] = {\n    { 0, 0, { -6324, 6745, -5626 } },\n    { 1, 0, { -6324, 6745, -5626 } },\n    { 2, 0, { -6108, 6762, -5770 } },\n    { 3, 0, { -5771, 6787, -5962 } },\n    { -1, 0, { -5672, 6790, -5979 } }\n};\n\nstruct CutsceneSplinePoint sCCMSlideCreditsSplineFocus[] = {\n    { 0, 50, { -5911, 6758, -5908 } },\n    { 1, 50, { -5911, 6758, -5908 } },\n    { 2, 50, { -5652, 6814, -5968 } },\n    { 3, 50, { -5277, 6801, -6043 } },\n    { -1, 50, { -5179, 6804, -6060 } }\n};\n\nstruct CutsceneSplinePoint sBBHCreditsSplinePositions[] = {\n    { 1, 0, { 1088, 341, 2447 } },\n    { 2, 0, { 1338, 610, 2808 } },\n    { 3, 0, { 2267, 1612, 2966 } },\n    { -1, 0, { 2296, 1913, 2990 } }\n};\n\nstruct CutsceneSplinePoint sBBHCreditsSplineFocus[] = {\n    { 1, 50, { 1160, 263, 1958 } },\n    { 2, 50, { 1034, 472, 2436 } },\n    { 3, 50, { 1915, 1833, 2688 } },\n    { -1, 50, { 2134, 2316, 2742 } }\n};\n\nstruct CutsceneSplinePoint sHMCCreditsSplinePositions[] = {\n    { 1, 0, { -5952, 1807, -5882 } },\n    { 2, 0, { -5623, 1749, -4863 } },\n    { 3, 0, { -5472, 1955, -2520 } },\n    { 4, 0, { -5544, 1187, -1085 } },\n    { -1, 0, { -5547, 391, -721 } }\n};\n\nstruct CutsceneSplinePoint sHMCCreditsSplineFocus[] = {\n    { 1, 210, { -5952, 1884, -6376 } },\n    { 2, 58, { -5891, 1711, -5283 } },\n    { 3, 30, { -5595, 1699, -2108 } },\n    { 4, 31, { -5546, 794, -777 } },\n    { -1, 31, { -5548, -85, -572 } }\n};\n\nstruct CutsceneSplinePoint sTHIWigglerCreditsSplinePositions[] = {\n    { 1, 0, { -1411, 2474, -1276 } },\n    { 2, 0, { -1606, 2479, -434 } },\n    { -1, 0, { -1170, 2122, 1337 } }\n};\n\nstruct CutsceneSplinePoint sTHIWigglerCreditsSplineFocus[] = {\n    { 1, 50, { -1053, 2512, -928 } },\n    { 2, 50, { -1234, 2377, -114 } },\n    { -1, 50, { -758, 2147, 1054 } }\n};\n\nstruct CutsceneSplinePoint sVolcanoCreditsSplinePositions[] = {\n    { 0, 0, { -1445, 1094, 1617 } },\n    { 0, 0, { -1509, 649, 871 } },\n    { 0, 0, { -1133, 420, -248 } },\n    { 0, 0, { -778, 359, -1052 } },\n    { 0, 0, { -565, 260, -1730 } },\n    { -1, 0, { 1274, 473, -275 } }\n};\n\nstruct CutsceneSplinePoint sVolcanoCreditsSplineFocus[] = {\n    { 0, 50, { -1500, 757, 1251 } },\n    { 0, 50, { -1401, 439, 431 } },\n    { 0, 50, { -749, 270, -532 } },\n    { 0, 50, { -396, 270, -1363 } },\n    { 0, 50, { -321, 143, -2151 } },\n    { -1, 50, { 1002, 460, -694 } }\n};\n\nstruct CutsceneSplinePoint sSSLCreditsSplinePositions[] = {\n    { 0, 0, { -4262, 4658, -5015 } },\n    { 0, 0, { -3274, 2963, -4661 } },\n    { 0, 0, { -2568, 812, -6528 } },\n    { 0, 0, { -414, 660, -7232 } },\n    { 0, 0, { 1466, 660, -6898 } },\n    { -1, 0, { 2724, 660, -6298 } }\n};\n\nstruct CutsceneSplinePoint sSSLCreditsSplineFocus[] = {\n    { 0, 50, { -4083, 4277, -4745 } },\n    { 0, 50, { -2975, 2574, -4759 } },\n    { 0, 50, { -2343, 736, -6088 } },\n    { 0, 50, { -535, 572, -6755 } },\n    { 0, 50, { 1311, 597, -6427 } },\n    { -1, 50, { 2448, 612, -5884 } }\n};\n\nstruct CutsceneSplinePoint sDDDCreditsSplinePositions[] = {\n    { 0, 0, { -874, -4933, 366 } },\n    { 0, 0, { -1463, -4782, 963 } },\n    { 0, 0, { -1893, -4684, 1303 } },\n    { 0, 0, { -2818, -4503, 1583 } },\n    { 0, 0, { -4095, -2924, 730 } },\n    { 0, 0, { -4737, -1594, -63 } },\n    { -1, 0, { -4681, -1084, -623 } }\n};\n\nstruct CutsceneSplinePoint sDDDCreditsSplineFocus[] = {\n    { 0, 50, { -1276, -4683, 622 } },\n    { 0, 50, { -1858, -4407, 1097 } },\n    { 0, 50, { -2324, -4332, 1318 } },\n    { 0, 50, { -3138, -4048, 1434 } },\n    { 0, 50, { -4353, -2444, 533 } },\n    { 0, 50, { -4807, -1169, -436 } },\n    { -1, 50, { -4665, -664, -1007 } }\n};\n\nstruct CutsceneSplinePoint sSLCreditsSplinePositions[] = {\n    { 0, 0, { 939, 6654, 6196 } },\n    { 0, 0, { 1873, 5160, 3714 } },\n    { 0, 0, { 3120, 3564, 1314 } },\n    { -1, 0, { 2881, 4231, 573 } }\n};\n\nstruct CutsceneSplinePoint sSLCreditsSplineFocus[] = {\n    { 0, 50, { 875, 6411, 5763 } },\n    { 0, 50, { 1659, 4951, 3313 } },\n    { 0, 50, { 2630, 3565, 1215 } },\n    { -1, 50, { 2417, 4056, 639 } }\n};\n\nstruct CutsceneSplinePoint sWDWCreditsSplinePositions[] = {\n    { 0, 0, { 3927, 2573, 3685 } },\n    { 0, 0, { 2389, 2054, 1210 } },\n    { 0, 0, { 2309, 2069, 22 } },\n    { -1, 0, { 2122, 2271, -979 } }\n};\n\nstruct CutsceneSplinePoint sWDWCreditsSplineFocus[] = {\n    { 0, 50, { 3637, 2460, 3294 } },\n    { 0, 50, { 1984, 2067, 918 } },\n    { 0, 50, { 1941, 2255, -261 } },\n    { -1, 50, { 1779, 2587, -1158 } }\n};\n\nstruct CutsceneSplinePoint sTTMCreditsSplinePositions[] = {\n    { 0, 0, { 386, 2535, 644 } },\n    { 0, 0, { 1105, 2576, 918 } },\n    { 0, 0, { 3565, 2261, 2098 } },\n    { 0, 0, { 6715, -2791, 4554 } },\n    { 0, 0, { 3917, -3130, 3656 } },\n    { -1, 0, { 3917, -3130, 3656 } }\n};\n\nstruct CutsceneSplinePoint sTTMCreditsSplineFocus[] = {\n    { 1, 50, { 751, 2434, 318 } },\n    { 2, 50, { 768, 2382, 603 } },\n    { 3, 60, { 3115, 2086, 1969 } },\n    { 4, 30, { 6370, -3108, 4727 } },\n    { 5, 50, { 4172, -3385, 4001 } },\n    { -1, 50, { 4172, -3385, 4001 } }\n};\n\nstruct CutsceneSplinePoint sTHIHugeCreditsSplinePositions[] = {\n    { 0, 0, { 6990, -1000, -4858 } },\n    { 0, 0, { 7886, -1055, 2878 } },\n    { 0, 0, { 1952, -1481, 10920 } },\n    { 0, 0, { -1684, -219, 2819 } },\n    { 0, 0, { -2427, -131, 2755 } },\n    { 0, 0, { -3246, 416, 3286 } },\n    { -1, 0, { -3246, 416, 3286 } }\n};\n\nstruct CutsceneSplinePoint sTHIHugeCreditsSplineFocus[] = {\n    { 1, 70, { 7022, -965, -5356 } },\n    { 2, 40, { 7799, -915, 2405 } },\n    { 3, 60, { 1878, -1137, 10568 } },\n    { 4, 50, { -1931, -308, 2394 } },\n    { 5, 50, { -2066, -386, 2521 } },\n    { 6, 50, { -2875, 182, 3045 } },\n    { -1, 50, { -2875, 182, 3045 } }\n};\n\nstruct CutsceneSplinePoint sTTCCreditsSplinePositions[] = {\n    { 1, 0, { -1724, 277, -994 } },\n    { 2, 0, { -1720, 456, -995 } },\n    { 3, 0, { -1655, 810, -1014 } },\n    { -1, 0, { -1753, 883, -1009 } }\n};\n\nstruct CutsceneSplinePoint sTTCCreditsSplineFocus[] = {\n    { 1, 50, { -1554, 742, -1063 } },\n    { 2, 50, { -1245, 571, -1102 } },\n    { 3, 50, { -1220, 603, -1151 } },\n    { -1, 50, { -1412, 520, -1053 } }\n};\n\nstruct CutsceneSplinePoint sRRCreditsSplinePositions[] = {\n    { 0, 0, { -1818, 4036, 97 } },\n    { 0, 0, { -575, 3460, -505 } },\n    { 0, 0, { 1191, 3611, -1134 } },\n    { -1, 0, { 2701, 3777, -3686 } }\n};\n\nstruct CutsceneSplinePoint sRRCreditsSplineFocus[] = {\n    { 0, 50, { -1376, 3885, -81 } },\n    { 0, 50, { -146, 3343, -734 } },\n    { 0, 50, { 1570, 3446, -1415 } },\n    { -1, 50, { 2794, 3627, -3218 } }\n};\n\nstruct CutsceneSplinePoint sSACreditsSplinePositions[] = {\n    { 0, 0, { -295, -396, -585 } },\n    { 1, 0, { -295, -396, -585 } },\n    { 2, 0, { -292, -856, -573 } },\n    { 3, 0, { -312, -856, -541 } },\n    { -1, 0, { 175, -856, -654 } }\n};\n\nstruct CutsceneSplinePoint sSACreditsSplineFocus[] = {\n    { 0, 50, { -175, -594, -142 } },\n    { 1, 50, { -175, -594, -142 } },\n    { 2, 50, { -195, -956, -92 } },\n    { 3, 50, { -572, -956, -150 } },\n    { -1, 50, { -307, -956, -537 } }\n};\n\nstruct CutsceneSplinePoint sCotMCCreditsSplinePositions[] = {\n    { 0, 0, { -296, 495, 1607 } },\n    { 0, 0, { -430, 541, 654 } },\n    { 0, 0, { -466, 601, -359 } },\n    { 0, 0, { -217, 433, -1549 } },\n    { -1, 0, { -95, 366, -2922 } }\n};\n\nstruct CutsceneSplinePoint sCotMCCreditsSplineFocus[] = {\n    { 0, 50, { -176, 483, 2092 } },\n    { 0, 50, { -122, 392, 1019 } },\n    { 0, 50, { -268, 450, -792 } },\n    { 0, 50, { -172, 399, -2046 } },\n    { -1, 50, { -51, 355, -3420 } }\n};\n\nstruct CutsceneSplinePoint sDDDSubCreditsSplinePositions[] = {\n    { 0, 0, { 4656, 2171, 5028 } },\n    { 0, 0, { 4548, 1182, 4596 } },\n    { 0, 0, { 5007, 813, 3257 } },\n    { 0, 0, { 5681, 648, 1060 } },\n    { -1, 0, { 4644, 774, 113 } }\n};\n\nstruct CutsceneSplinePoint sDDDSubCreditsSplineFocus[] = {\n    { 0, 50, { 4512, 2183, 4549 } },\n    { 0, 50, { 4327, 838, 4308 } },\n    { 0, 50, { 4774, 749, 2819 } },\n    { 0, 50, { 5279, 660, 763 } },\n    { -1, 50, { 4194, 885, -75 } }\n};\n\nstruct CutsceneSplinePoint sCCMOutsideCreditsSplinePositions[] = {\n    { 1, 0, { 1427, -1387, 5409 } },\n    { 2, 0, { -1646, -1536, 4526 } },\n    { 3, 0, { -3852, -1448, 3913 } },\n    { -1, 0, { -5199, -1366, 1886 } }\n};\n\nstruct CutsceneSplinePoint sCCMOutsideCreditsSplineFocus[] = {\n    { 1, 50, { 958, -1481, 5262 } },\n    { 2, 50, { -2123, -1600, 4391 } },\n    { 3, 50, { -3957, -1401, 3426 } },\n    { -1, 50, { -4730, -1215, 1795 } }\n};\n\n/**\n * Play the current cutscene until either gCutsceneTimer reaches the max time, or c->cutscene is set to 0\n *\n * Note that CAM_FLAG_SMOOTH_MOVEMENT is cleared while a cutscene is playing, so cutscenes set it for\n * the duration they want the flag to be active.\n */\nvoid play_cutscene(struct Camera *c) {\n    UNUSED u8 filler[12];\n    UNUSED s16 unusedYawFocToMario;\n    s16 cutsceneDuration;\n    u8 oldCutscene;\n\n    unusedYawFocToMario = sAreaYaw;\n    oldCutscene = c->cutscene;\n    sStatusFlags &= ~CAM_FLAG_SMOOTH_MOVEMENT;\n    gCameraMovementFlags &= ~CAM_MOVING_INTO_MODE;\n\n#define CUTSCENE(id, cutscene)                                                                            \\\n    case id:                                                                                              \\\n        cutsceneDuration = cutscene[sCutsceneShot].duration;                                              \\\n        cutscene[sCutsceneShot].shot(c);                                                                  \\\n        break;\n\n    switch (c->cutscene) {\n        CUTSCENE(CUTSCENE_STAR_SPAWN, sCutsceneStarSpawn)\n        CUTSCENE(CUTSCENE_RED_COIN_STAR_SPAWN, sCutsceneRedCoinStarSpawn)\n        CUTSCENE(CUTSCENE_ENDING, sCutsceneEnding)\n        CUTSCENE(CUTSCENE_GRAND_STAR, sCutsceneGrandStar)\n        CUTSCENE(CUTSCENE_DOOR_WARP, sCutsceneDoorWarp)\n        CUTSCENE(CUTSCENE_DOOR_PULL, sCutsceneDoorPull)\n        CUTSCENE(CUTSCENE_DOOR_PUSH, sCutsceneDoorPush)\n        CUTSCENE(CUTSCENE_DOOR_PULL_MODE, sCutsceneDoorPullMode)\n        CUTSCENE(CUTSCENE_DOOR_PUSH_MODE, sCutsceneDoorPushMode)\n        CUTSCENE(CUTSCENE_ENTER_CANNON, sCutsceneEnterCannon)\n        CUTSCENE(CUTSCENE_ENTER_PAINTING, sCutsceneEnterPainting)\n        CUTSCENE(CUTSCENE_DEATH_EXIT, sCutsceneDeathExit)\n        CUTSCENE(CUTSCENE_EXIT_PAINTING_SUCC, sCutsceneExitPaintingSuccess)\n        CUTSCENE(CUTSCENE_UNUSED_EXIT, sCutsceneUnusedExit)\n        CUTSCENE(CUTSCENE_INTRO_PEACH, sCutsceneIntroPeach)\n        CUTSCENE(CUTSCENE_ENTER_BOWSER_ARENA, sCutsceneEnterBowserArena)\n        CUTSCENE(CUTSCENE_DANCE_ROTATE, sCutsceneDanceDefaultRotate)\n        CUTSCENE(CUTSCENE_DANCE_DEFAULT, sCutsceneDanceDefaultRotate)\n        CUTSCENE(CUTSCENE_DANCE_FLY_AWAY, sCutsceneDanceFlyAway)\n        CUTSCENE(CUTSCENE_DANCE_CLOSEUP, sCutsceneDanceCloseup)\n        CUTSCENE(CUTSCENE_KEY_DANCE, sCutsceneKeyDance)\n        CUTSCENE(CUTSCENE_0F_UNUSED, sCutsceneUnused)\n        CUTSCENE(CUTSCENE_END_WAVING, sCutsceneEndWaving)\n        CUTSCENE(CUTSCENE_CREDITS, sCutsceneCredits)\n        CUTSCENE(CUTSCENE_CAP_SWITCH_PRESS, sCutsceneCapSwitchPress)\n        CUTSCENE(CUTSCENE_SLIDING_DOORS_OPEN, sCutsceneSlidingDoorsOpen)\n        CUTSCENE(CUTSCENE_PREPARE_CANNON, sCutscenePrepareCannon)\n        CUTSCENE(CUTSCENE_UNLOCK_KEY_DOOR, sCutsceneUnlockKeyDoor)\n        CUTSCENE(CUTSCENE_STANDING_DEATH, sCutsceneStandingDeath)\n        CUTSCENE(CUTSCENE_ENTER_POOL, sCutsceneEnterPool)\n        CUTSCENE(CUTSCENE_DEATH_ON_STOMACH, sCutsceneDeathStomach)\n        CUTSCENE(CUTSCENE_DEATH_ON_BACK, sCutsceneDeathOnBack)\n        CUTSCENE(CUTSCENE_QUICKSAND_DEATH, sCutsceneQuicksandDeath)\n        CUTSCENE(CUTSCENE_SUFFOCATION_DEATH, sCutsceneSuffocation)\n        CUTSCENE(CUTSCENE_EXIT_BOWSER_SUCC, sCutsceneExitBowserSuccess)\n        CUTSCENE(CUTSCENE_EXIT_BOWSER_DEATH, sCutsceneExitBowserDeath)\n        CUTSCENE(CUTSCENE_EXIT_SPECIAL_SUCC, sCutsceneExitSpecialSuccess)\n        CUTSCENE(CUTSCENE_EXIT_WATERFALL, sCutsceneExitWaterfall)\n        CUTSCENE(CUTSCENE_EXIT_FALL_WMOTR, sCutsceneFallToCastleGrounds)\n        CUTSCENE(CUTSCENE_NONPAINTING_DEATH, sCutsceneNonPaintingDeath)\n        CUTSCENE(CUTSCENE_DIALOG, sCutsceneDialog)\n        CUTSCENE(CUTSCENE_READ_MESSAGE, sCutsceneReadMessage)\n        CUTSCENE(CUTSCENE_RACE_DIALOG, sCutsceneDialog)\n        CUTSCENE(CUTSCENE_ENTER_PYRAMID_TOP, sCutsceneEnterPyramidTop)\n        CUTSCENE(CUTSCENE_SSL_PYRAMID_EXPLODE, sCutscenePyramidTopExplode)\n    }\n\n#undef CUTSCENE\n\n    if ((cutsceneDuration != 0) && !(gCutsceneTimer & CUTSCENE_STOP)) {\n        //! @bug This should check for 0x7FFF (CUTSCENE_LOOP)\n        //! instead, cutscenes that last longer than 0x3FFF frames will never end on their own\n        if (gCutsceneTimer < 0x3FFF) {\n            gCutsceneTimer++;\n        }\n        //! Because gCutsceneTimer is often set to 0x7FFF (CUTSCENE_LOOP), this conditional can only\n        //! check for == due to overflow\n        if (gCutsceneTimer == cutsceneDuration) {\n            sCutsceneShot++;\n            gCutsceneTimer = 0;\n        }\n    } else {\n        sMarioCamState->cameraEvent = 0;\n        sCutsceneShot = 0;\n        gCutsceneTimer = 0;\n    }\n\n    sAreaYawChange = 0;\n\n    // The cutscene just ended\n    if ((c->cutscene == 0) && (oldCutscene != 0)) {\n        gRecentCutscene = oldCutscene;\n    }\n}\n\n/**\n * Call the event while `start` <= gCutsceneTimer <= `end`\n * If `end` is -1, call for the rest of the shot.\n */\ns32 cutscene_event(CameraEvent event, struct Camera *c, s16 start, s16 end) {\n    if (start <= gCutsceneTimer) {\n        if (end == -1 || end >= gCutsceneTimer) {\n            event(c);\n        }\n    }\n    return 0;\n}\n\n/**\n * Set gCutsceneObjSpawn when gCutsceneTimer == `frame`.\n *\n * @see intro_scene.inc.c for details on which objects are spawned.\n */\ns32 cutscene_spawn_obj(u32 obj, s16 frame) {\n    if (frame == gCutsceneTimer) {\n        gCutsceneObjSpawn = obj;\n    }\n    return 0;\n}\n\n/**\n * Start shaking the camera's field of view.\n *\n * @param shakeSpeed How fast the shake should progress through its period. The shake offset is\n *                   calculated from coss(), so this parameter can be thought of as an angular velocity.\n */\nvoid set_fov_shake(s16 amplitude, s16 decay, s16 shakeSpeed) {\n    if (amplitude > sFOVState.shakeAmplitude) {\n        sFOVState.shakeAmplitude = amplitude;\n        sFOVState.decay = decay;\n        sFOVState.shakeSpeed = shakeSpeed;\n    }\n}\n\n/**\n * Start shaking the camera's field of view, but reduce `amplitude` by distance from camera\n */\nvoid set_fov_shake_from_point(s16 amplitude, s16 decay, s16 shakeSpeed, f32 maxDist, f32 posX, f32 posY, f32 posZ) {\n    amplitude = reduce_by_dist_from_camera(amplitude, maxDist, posX, posY, posZ);\n\n    if (amplitude != 0) {\n        if (amplitude > sFOVState.shakeAmplitude) { // literally use the function above you silly nintendo, smh\n            sFOVState.shakeAmplitude = amplitude;\n            sFOVState.decay = decay;\n            sFOVState.shakeSpeed = shakeSpeed;\n        }\n    }\n}\n\n/**\n * Add a cyclic offset to the camera's field of view based on a cosine wave\n */\nvoid shake_camera_fov(struct GraphNodePerspective *perspective) {\n    if (sFOVState.shakeAmplitude != 0.f) {\n        sFOVState.fovOffset = coss(sFOVState.shakePhase) * sFOVState.shakeAmplitude / 0x100;\n        sFOVState.shakePhase += sFOVState.shakeSpeed;\n        camera_approach_f32_symmetric_bool(&sFOVState.shakeAmplitude, 0.f, sFOVState.decay);\n        perspective->fov += sFOVState.fovOffset;\n    } else {\n        sFOVState.shakePhase = 0;\n    }\n}\n\nstatic UNUSED void unused_deactivate_sleeping_camera(UNUSED struct MarioState *m) {\n    sStatusFlags &= ~CAM_FLAG_SLEEPING;\n}\n\nvoid set_fov_30(UNUSED struct MarioState *m) {\n    sFOVState.fov = 30.f;\n}\n\nvoid approach_fov_20(UNUSED struct MarioState *m) {\n    camera_approach_f32_symmetric_bool(&sFOVState.fov, 20.f, 0.3f);\n}\n\nvoid set_fov_45(UNUSED struct MarioState *m) {\n    sFOVState.fov = 45.f;\n}\n\nvoid set_fov_29(UNUSED struct MarioState *m) {\n    sFOVState.fov = 29.f;\n}\n\nvoid zoom_fov_30(UNUSED struct MarioState *m) {\n    // Pretty sure approach_f32_asymptotic_bool would do a much nicer job here, but you do you,\n    // Nintendo.\n    camera_approach_f32_symmetric_bool(&sFOVState.fov, 30.f, (30.f - sFOVState.fov) / 60.f);\n}\n\n/**\n * This is the default fov function. It makes fov approach 45 degrees, and it handles zooming in when\n * Mario falls a sleep.\n */\nvoid fov_default(struct MarioState *m) {\n    sStatusFlags &= ~CAM_FLAG_SLEEPING;\n\n    if ((m->action == ACT_SLEEPING) || (m->action == ACT_START_SLEEPING)) {\n        camera_approach_f32_symmetric_bool(&sFOVState.fov, 30.f, (30.f - sFOVState.fov) / 30.f);\n        sStatusFlags |= CAM_FLAG_SLEEPING;\n    } else {\n        camera_approach_f32_symmetric_bool(&sFOVState.fov, 45.f, (45.f - sFOVState.fov) / 30.f);\n        sFOVState.unusedIsSleeping = 0;\n    }\n    if (m->area->camera->cutscene == CUTSCENE_0F_UNUSED) {\n        sFOVState.fov = 45.f;\n    }\n}\n\n//??! Literally the exact same as below\nstatic UNUSED void unused_approach_fov_30(UNUSED struct MarioState *m) {\n    camera_approach_f32_symmetric_bool(&sFOVState.fov, 30.f, 1.f);\n}\n\nvoid approach_fov_30(UNUSED struct MarioState *m) {\n    camera_approach_f32_symmetric_bool(&sFOVState.fov, 30.f, 1.f);\n}\n\nvoid approach_fov_60(UNUSED struct MarioState *m) {\n    camera_approach_f32_symmetric_bool(&sFOVState.fov, 60.f, 1.f);\n}\n\nvoid approach_fov_45(struct MarioState *m) {\n    f32 targetFoV = sFOVState.fov;\n\n    if (m->area->camera->mode == CAMERA_MODE_FIXED && m->area->camera->cutscene == 0) {\n        targetFoV = 45.f;\n    } else {\n        targetFoV = 45.f;\n    }\n\n    sFOVState.fov = approach_f32(sFOVState.fov, targetFoV, 2.f, 2.f);\n}\n\nvoid approach_fov_80(UNUSED struct MarioState *m) {\n    camera_approach_f32_symmetric_bool(&sFOVState.fov, 80.f, 3.5f);\n}\n\n/**\n * Sets the fov in BBH.\n * If there's a cutscene, sets fov to 45. Otherwise sets fov to 60.\n */\nvoid set_fov_bbh(struct MarioState *m) {\n    f32 targetFoV = sFOVState.fov;\n\n    if (m->area->camera->mode == CAMERA_MODE_FIXED && m->area->camera->cutscene == 0) {\n        targetFoV = 60.f;\n    } else {\n        targetFoV = 45.f;\n    }\n\n    sFOVState.fov = approach_f32(sFOVState.fov, targetFoV, 2.f, 2.f);\n}\n\n/**\n * Sets the field of view for the GraphNodeCamera\n */\nGfx *geo_camera_fov(s32 callContext, struct GraphNode *g, UNUSED void *context) {\n    struct GraphNodePerspective *perspective = (struct GraphNodePerspective *) g;\n    struct MarioState *marioState = &gMarioStates[0];\n    u8 fovFunc = sFOVState.fovFunc;\n\n    if (callContext == GEO_CONTEXT_RENDER) {\n        switch (fovFunc) {\n            case CAM_FOV_SET_45:\n                set_fov_45(marioState);\n                break;\n            case CAM_FOV_SET_29:\n                set_fov_29(marioState);\n                break;\n            case CAM_FOV_ZOOM_30:\n                zoom_fov_30(marioState);\n                break;\n            case CAM_FOV_DEFAULT:\n                fov_default(marioState);\n                break;\n            case CAM_FOV_BBH:\n                set_fov_bbh(marioState);\n                break;\n            case CAM_FOV_APP_45:\n                approach_fov_45(marioState);\n                break;\n            case CAM_FOV_SET_30:\n                set_fov_30(marioState);\n                break;\n            case CAM_FOV_APP_20:\n                approach_fov_20(marioState);\n                break;\n            case CAM_FOV_APP_80:\n                approach_fov_80(marioState);\n                break;\n            case CAM_FOV_APP_30:\n                approach_fov_30(marioState);\n                break;\n            case CAM_FOV_APP_60:\n                approach_fov_60(marioState);\n                break;\n            //! No default case\n        }\n    }\n\n    perspective->fov = sFOVState.fov;\n    shake_camera_fov(perspective);\n    return NULL;\n}\n\n/**\n * Change the camera's FOV mode.\n *\n * @see geo_camera_fov\n */\nvoid set_fov_function(u8 func) {\n    sFOVState.fovFunc = func;\n}\n\n/**\n * Start a preset fov shake. Used in cutscenes\n */\nvoid cutscene_set_fov_shake_preset(u8 preset) {\n    switch (preset) {\n        case 1:\n            set_fov_shake(0x100, 0x30, 0x8000);\n            break;\n        case 2:\n            set_fov_shake(0x400, 0x20, 0x4000);\n            break;\n    }\n}\n\n/**\n * Start a preset fov shake that is reduced by the point's distance from the camera.\n * Used in set_camera_shake_from_point\n *\n * @see set_camera_shake_from_point\n */\nvoid set_fov_shake_from_point_preset(u8 preset, f32 posX, f32 posY, f32 posZ) {\n    switch (preset) {\n        case SHAKE_FOV_SMALL:\n            set_fov_shake_from_point(0x100, 0x30, 0x8000, 3000.f, posX, posY, posZ);\n            break;\n        case SHAKE_FOV_MEDIUM:\n            set_fov_shake_from_point(0x200, 0x30, 0x8000, 4000.f, posX, posY, posZ);\n            break;\n        case SHAKE_FOV_LARGE:\n            set_fov_shake_from_point(0x300, 0x30, 0x8000, 6000.f, posX, posY, posZ);\n            break;\n        case SHAKE_FOV_UNUSED:\n            set_fov_shake_from_point(0x800, 0x20, 0x4000, 3000.f, posX, posY, posZ);\n            break;\n    }\n}\n\n/**\n * Offset an object's position in a random direction within the given bounds.\n */\nstatic UNUSED void unused_displace_obj_randomly(struct Object *o, f32 xRange, f32 yRange, f32 zRange) {\n    f32 rnd = random_float();\n\n    o->oPosX += (rnd * xRange - xRange / 2.f);\n    o->oPosY += (rnd * yRange - yRange / 2.f);\n    o->oPosZ += (rnd * zRange - zRange / 2.f);\n}\n\n/**\n * Rotate an object in a random direction within the given bounds.\n */\nstatic UNUSED void unused_rotate_obj_randomly(struct Object *o, f32 pitchRange, f32 yawRange) {\n    f32 rnd = random_float();\n\n    o->oMoveAnglePitch += (s16)(rnd * pitchRange - pitchRange / 2.f);\n    o->oMoveAngleYaw += (s16)(rnd * yawRange - yawRange / 2.f);\n}\n\n/**\n * Rotate the object towards the point `point`.\n */\nvoid obj_rotate_towards_point(struct Object *o, Vec3f point, s16 pitchOff, s16 yawOff, s16 pitchDiv, s16 yawDiv) {\n    f32 dist;\n    s16 pitch, yaw;\n    Vec3f oPos;\n\n    object_pos_to_vec3f(oPos, o);\n    vec3f_get_dist_and_angle(oPos, point, &dist, &pitch, &yaw);\n    o->oMoveAnglePitch = approach_s16_asymptotic(o->oMoveAnglePitch, pitchOff - pitch, pitchDiv);\n    o->oMoveAngleYaw = approach_s16_asymptotic(o->oMoveAngleYaw, yaw + yawOff, yawDiv);\n}\n\n#define o gCurrentObject\n\n#include \"behaviors/intro_peach.inc.c\"\n#include \"behaviors/intro_lakitu.inc.c\"\n#include \"behaviors/end_birds_1.inc.c\"\n#include \"behaviors/end_birds_2.inc.c\"\n#include \"behaviors/intro_scene.inc.c\"\n"
  },
  {
    "path": "src/game/camera.h",
    "content": "#ifndef CAMERA_H\n#define CAMERA_H\n\n#include <PR/ultratypes.h>\n\n#include \"types.h\"\n#include \"area.h\"\n#include \"engine/geo_layout.h\"\n#include \"engine/graph_node.h\"\n\n#include \"level_table.h\"\n\n/**\n * @file camera.h\n * Constants, defines, and structs used by the camera system.\n * @see camera.c\n */\n\n#define ABS(x) ((x) > 0.f ? (x) : -(x))\n#define ABS2(x) ((x) >= 0.f ? (x) : -(x))\n\n/**\n * Converts an angle in degrees to sm64's s16 angle units. For example, DEGREES(90) == 0x4000\n * This should be used mainly to make camera code clearer at first glance.\n */\n#define DEGREES(x) ((x) * 0x10000 / 360)\n\n#define LEVEL_AREA_INDEX(levelNum, areaNum) (((levelNum) << 4) + (areaNum))\n\n/**\n * Helper macro for defining which areas of a level should zoom out the camera when the game is paused.\n * Because a mask is used by two levels, the pattern will repeat when more than 4 areas are used by a level.\n */\n#define ZOOMOUT_AREA_MASK(level1Area1, level1Area2, level1Area3, level1Area4, \\\n                          level2Area1, level2Area2, level2Area3, level2Area4) \\\n    ((level2Area4) << 7 |                                                     \\\n     (level2Area3) << 6 |                                                     \\\n     (level2Area2) << 5 |                                                     \\\n     (level2Area1) << 4 |                                                     \\\n     (level1Area4) << 3 |                                                     \\\n     (level1Area3) << 2 |                                                     \\\n     (level1Area2) << 1 |                                                     \\\n     (level1Area1) << 0)\n\n\n#define AREA_BBH                LEVEL_AREA_INDEX(LEVEL_BBH, 1)\n#define AREA_CCM_OUTSIDE        LEVEL_AREA_INDEX(LEVEL_CCM, 1)\n#define AREA_CCM_SLIDE          LEVEL_AREA_INDEX(LEVEL_CCM, 2)\n#define AREA_CASTLE_LOBBY       LEVEL_AREA_INDEX(LEVEL_CASTLE, 1)\n#define AREA_CASTLE_TIPPY       LEVEL_AREA_INDEX(LEVEL_CASTLE, 2)\n#define AREA_CASTLE_BASEMENT    LEVEL_AREA_INDEX(LEVEL_CASTLE, 3)\n#define AREA_HMC                LEVEL_AREA_INDEX(LEVEL_HMC, 1)\n#define AREA_SSL_OUTSIDE        LEVEL_AREA_INDEX(LEVEL_SSL, 1)\n#define AREA_SSL_PYRAMID        LEVEL_AREA_INDEX(LEVEL_SSL, 2)\n#define AREA_SSL_EYEROK         LEVEL_AREA_INDEX(LEVEL_SSL, 3)\n#define AREA_BOB                LEVEL_AREA_INDEX(LEVEL_BOB, 1)\n#define AREA_SL_OUTSIDE         LEVEL_AREA_INDEX(LEVEL_SL, 1)\n#define AREA_SL_IGLOO           LEVEL_AREA_INDEX(LEVEL_SL, 2)\n#define AREA_WDW_MAIN           LEVEL_AREA_INDEX(LEVEL_WDW, 1)\n#define AREA_WDW_TOWN           LEVEL_AREA_INDEX(LEVEL_WDW, 2)\n#define AREA_JRB_MAIN           LEVEL_AREA_INDEX(LEVEL_JRB, 1)\n#define AREA_JRB_SHIP           LEVEL_AREA_INDEX(LEVEL_JRB, 2)\n#define AREA_THI_HUGE           LEVEL_AREA_INDEX(LEVEL_THI, 1)\n#define AREA_THI_TINY           LEVEL_AREA_INDEX(LEVEL_THI, 2)\n#define AREA_THI_WIGGLER        LEVEL_AREA_INDEX(LEVEL_THI, 3)\n#define AREA_TTC                LEVEL_AREA_INDEX(LEVEL_TTC, 1)\n#define AREA_RR                 LEVEL_AREA_INDEX(LEVEL_RR, 1)\n#define AREA_CASTLE_GROUNDS     LEVEL_AREA_INDEX(LEVEL_CASTLE_GROUNDS, 1)\n#define AREA_BITDW              LEVEL_AREA_INDEX(LEVEL_BITDW, 1)\n#define AREA_VCUTM              LEVEL_AREA_INDEX(LEVEL_VCUTM, 1)\n#define AREA_BITFS              LEVEL_AREA_INDEX(LEVEL_BITFS, 1)\n#define AREA_SA                 LEVEL_AREA_INDEX(LEVEL_SA, 1)\n#define AREA_BITS               LEVEL_AREA_INDEX(LEVEL_BITS, 1)\n#define AREA_LLL_OUTSIDE        LEVEL_AREA_INDEX(LEVEL_LLL, 1)\n#define AREA_LLL_VOLCANO        LEVEL_AREA_INDEX(LEVEL_LLL, 2)\n#define AREA_DDD_WHIRLPOOL      LEVEL_AREA_INDEX(LEVEL_DDD, 1)\n#define AREA_DDD_SUB            LEVEL_AREA_INDEX(LEVEL_DDD, 2)\n#define AREA_WF                 LEVEL_AREA_INDEX(LEVEL_WF, 1)\n#define AREA_ENDING             LEVEL_AREA_INDEX(LEVEL_ENDING, 1)\n#define AREA_COURTYARD          LEVEL_AREA_INDEX(LEVEL_CASTLE_COURTYARD, 1)\n#define AREA_PSS                LEVEL_AREA_INDEX(LEVEL_PSS, 1)\n#define AREA_COTMC              LEVEL_AREA_INDEX(LEVEL_COTMC, 1)\n#define AREA_TOTWC              LEVEL_AREA_INDEX(LEVEL_TOTWC, 1)\n#define AREA_BOWSER_1           LEVEL_AREA_INDEX(LEVEL_BOWSER_1, 1)\n#define AREA_WMOTR              LEVEL_AREA_INDEX(LEVEL_WMOTR, 1)\n#define AREA_BOWSER_2           LEVEL_AREA_INDEX(LEVEL_BOWSER_2, 1)\n#define AREA_BOWSER_3           LEVEL_AREA_INDEX(LEVEL_BOWSER_3, 1)\n#define AREA_TTM_OUTSIDE        LEVEL_AREA_INDEX(LEVEL_TTM, 1)\n\n#define CAM_MODE_MARIO_ACTIVE           0x01\n#define CAM_MODE_LAKITU_WAS_ZOOMED_OUT  0x02\n#define CAM_MODE_MARIO_SELECTED         0x04\n\n#define CAM_SELECTION_MARIO 1\n#define CAM_SELECTION_FIXED 2\n\n#define CAM_ANGLE_MARIO  1\n#define CAM_ANGLE_LAKITU 2\n\n#define CAMERA_MODE_NONE              0x00\n#define CAMERA_MODE_RADIAL            0x01\n#define CAMERA_MODE_OUTWARD_RADIAL    0x02\n#define CAMERA_MODE_BEHIND_MARIO      0x03\n#define CAMERA_MODE_CLOSE             0x04 // Inside Castle / Big Boo's Haunt\n#define CAMERA_MODE_C_UP              0x06\n#define CAMERA_MODE_WATER_SURFACE     0x08\n#define CAMERA_MODE_SLIDE_HOOT        0x09\n#define CAMERA_MODE_INSIDE_CANNON     0x0A\n#define CAMERA_MODE_BOSS_FIGHT        0x0B\n#define CAMERA_MODE_PARALLEL_TRACKING 0x0C\n#define CAMERA_MODE_FIXED             0x0D\n#define CAMERA_MODE_8_DIRECTIONS      0x0E // AKA Parallel Camera, Bowser Courses & Rainbow Ride\n#define CAMERA_MODE_FREE_ROAM         0x10\n#define CAMERA_MODE_SPIRAL_STAIRS     0x11\n\n#define CAM_MOVE_RETURN_TO_MIDDLE       0x0001\n#define CAM_MOVE_ZOOMED_OUT             0x0002\n#define CAM_MOVE_ROTATE_RIGHT           0x0004\n#define CAM_MOVE_ROTATE_LEFT            0x0008\n#define CAM_MOVE_ENTERED_ROTATE_SURFACE 0x0010\n#define CAM_MOVE_METAL_BELOW_WATER      0x0020\n#define CAM_MOVE_FIX_IN_PLACE           0x0040\n#define CAM_MOVE_UNKNOWN_8              0x0080\n#define CAM_MOVING_INTO_MODE            0x0100\n#define CAM_MOVE_STARTED_EXITING_C_UP   0x0200\n#define CAM_MOVE_UNKNOWN_11             0x0400\n#define CAM_MOVE_INIT_CAMERA            0x0800\n#define CAM_MOVE_ALREADY_ZOOMED_OUT     0x1000\n#define CAM_MOVE_C_UP_MODE              0x2000\n#define CAM_MOVE_SUBMERGED              0x4000\n#define CAM_MOVE_PAUSE_SCREEN           0x8000\n\n#define CAM_MOVE_ROTATE /**/ (CAM_MOVE_ROTATE_RIGHT | CAM_MOVE_ROTATE_LEFT | CAM_MOVE_RETURN_TO_MIDDLE)\n/// These flags force the camera to move a certain way\n#define CAM_MOVE_RESTRICT /**/ (CAM_MOVE_ENTERED_ROTATE_SURFACE | CAM_MOVE_METAL_BELOW_WATER | CAM_MOVE_FIX_IN_PLACE | CAM_MOVE_UNKNOWN_8)\n\n#define CAM_SOUND_C_UP_PLAYED            0x01\n#define CAM_SOUND_MARIO_ACTIVE           0x02\n#define CAM_SOUND_NORMAL_ACTIVE          0x04\n#define CAM_SOUND_UNUSED_SELECT_MARIO    0x08\n#define CAM_SOUND_UNUSED_SELECT_FIXED    0x10\n#define CAM_SOUND_FIXED_ACTIVE           0x20\n\n#define CAM_FLAG_SMOOTH_MOVEMENT         0x0001\n#define CAM_FLAG_BLOCK_SMOOTH_MOVEMENT   0x0002\n#define CAM_FLAG_FRAME_AFTER_CAM_INIT    0x0004\n#define CAM_FLAG_CHANGED_PARTRACK_INDEX  0x0008\n#define CAM_FLAG_CCM_SLIDE_SHORTCUT      0x0010\n#define CAM_FLAG_CAM_NEAR_WALL           0x0020\n#define CAM_FLAG_SLEEPING                0x0040\n#define CAM_FLAG_UNUSED_7                0x0080\n#define CAM_FLAG_UNUSED_8                0x0100\n#define CAM_FLAG_COLLIDED_WITH_WALL      0x0200\n#define CAM_FLAG_START_TRANSITION        0x0400\n#define CAM_FLAG_TRANSITION_OUT_OF_C_UP  0x0800\n#define CAM_FLAG_BLOCK_AREA_PROCESSING   0x1000\n#define CAM_FLAG_UNUSED_13               0x2000\n#define CAM_FLAG_UNUSED_CUTSCENE_ACTIVE  0x4000\n#define CAM_FLAG_BEHIND_MARIO_POST_DOOR  0x8000\n\n#define CAM_STATUS_NONE   0\n#define CAM_STATUS_MARIO  1 << 0\n#define CAM_STATUS_LAKITU 1 << 1\n#define CAM_STATUS_FIXED  1 << 2\n#define CAM_STATUS_C_DOWN 1 << 3\n#define CAM_STATUS_C_UP   1 << 4\n\n#define CAM_STATUS_MODE_GROUP   (CAM_STATUS_MARIO | CAM_STATUS_LAKITU | CAM_STATUS_FIXED)\n#define CAM_STATUS_C_MODE_GROUP (CAM_STATUS_C_DOWN | CAM_STATUS_C_UP)\n\n#define SHAKE_ATTACK         1\n#define SHAKE_GROUND_POUND   2\n#define SHAKE_SMALL_DAMAGE   3\n#define SHAKE_MED_DAMAGE     4\n#define SHAKE_LARGE_DAMAGE   5\n#define SHAKE_HIT_FROM_BELOW 8\n#define SHAKE_FALL_DAMAGE    9\n#define SHAKE_SHOCK          10\n\n#define SHAKE_ENV_EXPLOSION           1\n#define SHAKE_ENV_BOWSER_THROW_BOUNCE 2\n#define SHAKE_ENV_BOWSER_JUMP         3\n#define SHAKE_ENV_UNUSED_5            5\n#define SHAKE_ENV_UNUSED_6            6\n#define SHAKE_ENV_UNUSED_7            7\n#define SHAKE_ENV_PYRAMID_EXPLODE     8\n#define SHAKE_ENV_JRB_SHIP_DRAIN      9\n#define SHAKE_ENV_FALLING_BITS_PLAT   10\n\n#define SHAKE_FOV_SMALL     1\n#define SHAKE_FOV_UNUSED    2\n#define SHAKE_FOV_MEDIUM    3\n#define SHAKE_FOV_LARGE     4\n\n#define SHAKE_POS_SMALL         1\n#define SHAKE_POS_MEDIUM        2\n#define SHAKE_POS_LARGE         3\n#define SHAKE_POS_BOWLING_BALL  4\n\n#define CUTSCENE_DOOR_PULL            130\n#define CUTSCENE_DOOR_PUSH            131\n#define CUTSCENE_ENTER_CANNON         133\n#define CUTSCENE_ENTER_PAINTING       134\n#define CUTSCENE_DEATH_EXIT           135\n#define CUTSCENE_DOOR_WARP            139\n#define CUTSCENE_DOOR_PULL_MODE       140\n#define CUTSCENE_DOOR_PUSH_MODE       141\n#define CUTSCENE_INTRO_PEACH          142\n#define CUTSCENE_DANCE_ROTATE         143\n#define CUTSCENE_ENTER_BOWSER_ARENA   144\n#define CUTSCENE_0F_UNUSED            145 // Never activated, stub cutscene functions\n#define CUTSCENE_UNUSED_EXIT          147 // Never activated\n#define CUTSCENE_SLIDING_DOORS_OPEN   149\n#define CUTSCENE_PREPARE_CANNON       150\n#define CUTSCENE_UNLOCK_KEY_DOOR      151\n#define CUTSCENE_STANDING_DEATH       152\n#define CUTSCENE_DEATH_ON_STOMACH     153\n#define CUTSCENE_DEATH_ON_BACK        154\n#define CUTSCENE_QUICKSAND_DEATH      155\n#define CUTSCENE_SUFFOCATION_DEATH    156\n#define CUTSCENE_EXIT_BOWSER_SUCC     157\n#define CUTSCENE_EXIT_BOWSER_DEATH    158 // Never activated\n#define CUTSCENE_WATER_DEATH          159 // Not in cutscene switch\n#define CUTSCENE_EXIT_PAINTING_SUCC   160\n#define CUTSCENE_CAP_SWITCH_PRESS     161\n#define CUTSCENE_DIALOG               162\n#define CUTSCENE_RACE_DIALOG          163\n#define CUTSCENE_ENTER_PYRAMID_TOP    164\n#define CUTSCENE_DANCE_FLY_AWAY       165\n#define CUTSCENE_DANCE_CLOSEUP        166\n#define CUTSCENE_KEY_DANCE            167\n#define CUTSCENE_SSL_PYRAMID_EXPLODE  168 // Never activated\n#define CUTSCENE_EXIT_SPECIAL_SUCC    169\n#define CUTSCENE_NONPAINTING_DEATH    170\n#define CUTSCENE_READ_MESSAGE         171\n#define CUTSCENE_ENDING               172\n#define CUTSCENE_STAR_SPAWN           173\n#define CUTSCENE_GRAND_STAR           174\n#define CUTSCENE_DANCE_DEFAULT        175\n#define CUTSCENE_RED_COIN_STAR_SPAWN  176\n#define CUTSCENE_END_WAVING           177\n#define CUTSCENE_CREDITS              178\n#define CUTSCENE_EXIT_WATERFALL       179\n#define CUTSCENE_EXIT_FALL_WMOTR      180\n#define CUTSCENE_ENTER_POOL           181\n\n/**\n * Stop the cutscene.\n */\n#define CUTSCENE_STOP         0x8000\n/**\n * Play the current cutscene shot indefinitely (until canceled).\n */\n#define CUTSCENE_LOOP         0x7FFF\n\n#define HAND_CAM_SHAKE_OFF                  0\n#define HAND_CAM_SHAKE_CUTSCENE             1\n#define HAND_CAM_SHAKE_UNUSED               2\n#define HAND_CAM_SHAKE_HANG_OWL             3\n#define HAND_CAM_SHAKE_HIGH                 4\n#define HAND_CAM_SHAKE_STAR_DANCE           5\n#define HAND_CAM_SHAKE_LOW                  6\n\n#define DOOR_DEFAULT         0\n#define DOOR_LEAVING_SPECIAL 1\n#define DOOR_ENTER_LOBBY     2\n\n// Might rename these to reflect what they are used for instead \"SET_45\" etc.\n#define CAM_FOV_SET_45      1\n#define CAM_FOV_DEFAULT     2\n#define CAM_FOV_APP_45      4\n#define CAM_FOV_SET_30      5\n#define CAM_FOV_APP_20      6\n#define CAM_FOV_BBH         7\n#define CAM_FOV_APP_80      9\n#define CAM_FOV_APP_30      10\n#define CAM_FOV_APP_60      11\n#define CAM_FOV_ZOOM_30     12\n#define CAM_FOV_SET_29      13\n\n#define CAM_EVENT_CANNON              1\n#define CAM_EVENT_SHOT_FROM_CANNON    2\n#define CAM_EVENT_UNUSED_3            3\n#define CAM_EVENT_BOWSER_INIT         4\n#define CAM_EVENT_DOOR_WARP           5\n#define CAM_EVENT_DOOR                6\n#define CAM_EVENT_BOWSER_JUMP         7\n#define CAM_EVENT_BOWSER_THROW_BOUNCE 8\n#define CAM_EVENT_START_INTRO         9\n#define CAM_EVENT_START_GRAND_STAR    10\n#define CAM_EVENT_START_ENDING        11\n#define CAM_EVENT_START_END_WAVING    12\n#define CAM_EVENT_START_CREDITS       13\n\n/**\n * A copy of player information that is relevant to the camera.\n */\nstruct PlayerCameraState {\n    /**\n     * Mario's action on this frame.\n     */\n    /*0x00*/ u32 action;\n    /*0x04*/ Vec3f pos;\n    /*0x10*/ Vec3s faceAngle;\n    /*0x16*/ Vec3s headRotation;\n    /*0x1C*/ s16 unused;\n    /**\n     * Set to nonzero when an event, such as entering a door, starting the credits, or throwing bowser,\n     * has happened on this frame.\n     */\n    /*0x1E*/ s16 cameraEvent;\n    /*0x20*/ struct Object *usedObj;\n};\n\n/**\n * Struct containing info that is used when transition_next_state() is called. Stores the intermediate\n * distances and angular displacements from lakitu's goal position and focus.\n */\nstruct TransitionInfo {\n    /*0x00*/ s16 posPitch;\n    /*0x02*/ s16 posYaw;\n    /*0x04*/ f32 posDist;\n    /*0x08*/ s16 focPitch;\n    /*0x0A*/ s16 focYaw;\n    /*0x0C*/ f32 focDist;\n    /*0x10*/ s32 framesLeft;\n    /*0x14*/ Vec3f marioPos;\n    /*0x20*/ u8 unused; // for the structs to align, there has to be an extra unused variable here. type is unknown.\n};\n\n/**\n * A point that's used in a spline, controls the direction to move the camera in\n * during the shake effect.\n */\nstruct HandheldShakePoint {\n    /*0x00*/ s8 index; // only set to -1\n    /*0x04 (aligned)*/ u32 unused;\n    /*0x08*/ Vec3s point;\n}; // size = 0x10\n\n// These are the same type, but the name that is used depends on context.\n/**\n * A function that is called by CameraTriggers and cutscene shots.\n * These are concurrent: multiple CameraEvents can occur on the same frame.\n */\ntypedef BAD_RETURN(s32) (*CameraEvent)(struct Camera *c);\n/**\n * The same type as a CameraEvent, but because these are generally longer, and happen in sequential\n * order, they're are called \"shots,\" a term taken from cinematography.\n *\n * To further tell the difference: CutsceneShots usually call multiple CameraEvents at once, but only\n * one CutsceneShot is ever called on a given frame.\n */\ntypedef CameraEvent CutsceneShot;\n\n/**\n * Defines a bounding box which activates an event while Mario is inside\n */\nstruct CameraTrigger {\n    /**\n     * The area this should be checked in, or -1 if it should run in every area of the level.\n     *\n     * Triggers with area set to -1 are run by default, they don't care if Mario is inside their bounds.\n     * However, they are only active if Mario is not already inside an area-specific trigger's\n     * boundaries.\n     */\n    s8 area;\n    /// A function that gets called while Mario is in the trigger bounds\n    CameraEvent event;\n    // The (x,y,z) position of the center of the bounding box\n    s16 centerX;\n    s16 centerY;\n    s16 centerZ;\n    // The max displacement in x, y, and z from the center for a point to be considered inside the\n    // bounding box\n    s16 boundsX;\n    s16 boundsY;\n    s16 boundsZ;\n    /// This angle rotates Mario's offset from the box's origin, before it is checked for being inside.\n    s16 boundsYaw;\n};\n\n/**\n * A camera shot that is active for a number of frames.\n * Together, a sequence of shots makes up a cutscene.\n */\nstruct Cutscene {\n    /// The function that gets called.\n    CutsceneShot shot;\n    /// How long the shot lasts.\n    s16 duration;\n};\n\n/**\n * Info for the camera's field of view and the FOV shake effect.\n */\nstruct CameraFOVStatus {\n    /// The current function being used to set the camera's field of view (before any fov shake is applied).\n    /*0x00*/ u8 fovFunc;\n    /// The current field of view in degrees\n    /*0x04*/ f32 fov;\n\n    // Fields used by shake_camera_fov()\n\n    /// The amount to change the current fov by in the fov shake effect.\n    /*0x08*/ f32 fovOffset;\n    /// A bool set in fov_default() but unused otherwise\n    /*0x0C*/ u32 unusedIsSleeping;\n    /// The range in degrees to shake fov\n    /*0x10*/ f32 shakeAmplitude;\n    /// Used to calculate fovOffset, the phase through the shake's period.\n    /*0x14*/ s16 shakePhase;\n    /// How much to progress through the shake period\n    /*0x16*/ s16 shakeSpeed;\n    /// How much to decrease shakeAmplitude each frame.\n    /*0x18*/ s16 decay;\n};\n\n/**\n * Information for a control point in a spline segment.\n */\nstruct CutsceneSplinePoint {\n    /* The index of this point in the spline. Ignored except for -1, which ends the spline.\n       An index of -1 should come four points after the start of the last segment. */\n    s8 index;\n    /* Roughly controls the number of frames it takes to progress through the spline segment.\n       See move_point_along_spline() in camera.c */\n    u8 speed;\n    Vec3s point;\n};\n\n/**\n * Struct containing the nearest floor and ceiling to the player, as well as the previous floor and\n * ceiling. It also stores their distances from the player's position.\n */\nstruct PlayerGeometry {\n    /*0x00*/ struct Surface *currFloor;\n    /*0x04*/ f32 currFloorHeight;\n    /*0x08*/ s16 currFloorType;\n    /*0x0C*/ struct Surface *currCeil;\n    /*0x10*/ s16 currCeilType;\n    /*0x14*/ f32 currCeilHeight;\n    /*0x18*/ struct Surface *prevFloor;\n    /*0x1C*/ f32 prevFloorHeight;\n    /*0x20*/ s16 prevFloorType;\n    /*0x24*/ struct Surface *prevCeil;\n    /*0x28*/ f32 prevCeilHeight;\n    /*0x2C*/ s16 prevCeilType;\n    /// Unused, but recalculated every frame\n    /*0x30*/ f32 waterHeight;\n};\n\n/**\n * Point used in transitioning between camera modes and C-Up.\n */\nstruct LinearTransitionPoint {\n    Vec3f focus;\n    Vec3f pos;\n    f32 dist;\n    s16 pitch;\n    s16 yaw;\n};\n\n/**\n * Info about transitioning between camera modes.\n */\nstruct ModeTransitionInfo {\n    s16 newMode;\n    s16 lastMode;\n    s16 max;\n    s16 frame;\n    struct LinearTransitionPoint transitionStart;\n    struct LinearTransitionPoint transitionEnd;\n};\n\n/**\n * A point in a path used by update_parallel_tracking_camera\n */\nstruct ParallelTrackingPoint {\n    /// Whether this point is the start of a path\n    s16 startOfPath;\n    /// Point used to define a line segment to follow\n    Vec3f pos;\n    /// The distance Mario can move along the line before the camera should move\n    f32 distThresh;\n    /// The percentage that the camera should move from the line to Mario\n    f32 zoom;\n};\n\n/**\n * Stores the camera's info\n */\nstruct CameraStoredInfo {\n    /*0x00*/ Vec3f pos;\n    /*0x0C*/ Vec3f focus;\n    /*0x18*/ f32 panDist;\n    /*0x1C*/ f32 cannonYOffset;\n};\n\n/**\n * Struct used to store cutscene info, like the camera's target position/focus.\n *\n * See the sCutsceneVars[] array in camera.c for more details.\n */\nstruct CutsceneVariable {\n    /// Perhaps an index\n    s32 unused1;\n    Vec3f point;\n    Vec3f unusedPoint;\n    Vec3s angle;\n    /// Perhaps a boolean or an extra angle\n    s16 unused2;\n};\n\n/**\n * The main camera struct. Gets updated by the active camera mode and the current level/area. In\n * update_lakitu, its pos and focus are used to calculate lakitu's next position and focus, which are\n * then used to render the game.\n */\nstruct Camera {\n    /*0x00*/ u8 mode; // What type of mode the camera uses (see defines above)\n    /*0x01*/ u8 defMode;\n    /**\n     * Determines what direction Mario moves in when the analog stick is moved.\n     *\n     * @warning This is NOT the camera's xz-rotation in world space. This is the angle calculated from the\n     *          camera's focus TO the camera's position, instead of the other way around like it should\n     *          be. It's effectively the opposite of the camera's actual yaw. Use\n     *          vec3f_get_dist_and_angle() if you need the camera's yaw.\n     */\n    /*0x02*/ s16 yaw;\n    /*0x04*/ Vec3f focus;\n    /*0x10*/ Vec3f pos;\n    /*0x1C*/ Vec3f unusedVec1;\n    /// The x coordinate of the \"center\" of the area. The camera will rotate around this point.\n    /// For example, this is what makes the camera rotate around the hill in BoB\n    /*0x28*/ f32 areaCenX;\n    /// The z coordinate of the \"center\" of the area. The camera will rotate around this point.\n    /// For example, this is what makes the camera rotate around the hill in BoB\n    /*0x2C*/ f32 areaCenZ;\n    /*0x30*/ u8 cutscene;\n    /*0x31*/ u8 filler1[8];\n    /*0x3A*/ s16 nextYaw;\n    /*0x3C*/ u8 filler2[40];\n    /*0x64*/ u8 doorStatus;\n    /// The y coordinate of the \"center\" of the area. Unlike areaCenX and areaCenZ, this is only used\n    /// when paused. See zoom_out_if_paused_and_outside\n    /*0x68*/ f32 areaCenY;\n};\n\n/**\n * A struct containing info pertaining to lakitu, such as his position and focus, and what\n * camera-related effects are happening to him, like camera shakes.\n *\n * This struct's pos and focus are what is actually used to render the game.\n *\n * @see update_lakitu()\n */\nstruct LakituState {\n    /**\n     * Lakitu's position, which (when CAM_FLAG_SMOOTH_MOVEMENT is set), approaches his goalPos every frame.\n     */\n    /*0x00*/ Vec3f curFocus;\n    /**\n     * Lakitu's focus, which (when CAM_FLAG_SMOOTH_MOVEMENT is set), approaches his goalFocus every frame.\n     */\n    /*0x0C*/ Vec3f curPos;\n    /**\n     * The focus point that lakitu turns towards every frame.\n     * If CAM_FLAG_SMOOTH_MOVEMENT is unset, this is the same as curFocus.\n     */\n    /*0x18*/ Vec3f goalFocus;\n    /**\n     * The point that lakitu flies towards every frame.\n     * If CAM_FLAG_SMOOTH_MOVEMENT is unset, this is the same as curPos.\n     */\n    /*0x24*/ Vec3f goalPos;\n\n    /*0x30*/ u8 filler1[12]; // extra unused Vec3f?\n\n    /// Copy of the active camera mode\n    /*0x3C*/ u8 mode;\n    /// Copy of the default camera mode\n    /*0x3D*/ u8 defMode;\n\n    /*0x3E*/ u8 filler2[10];\n\n    /*0x48*/ f32 focusDistance; // unused\n    /*0x4C*/ s16 oldPitch; // unused\n    /*0x4E*/ s16 oldYaw;   // unused\n    /*0x50*/ s16 oldRoll;  // unused\n\n    /// The angular offsets added to lakitu's pitch, yaw, and roll\n    /*0x52*/ Vec3s shakeMagnitude;\n\n    // shake pitch, yaw, and roll phase: The progression through the camera shake (a cosine wave).\n    // shake pitch, yaw, and roll vel: The speed of the camera shake.\n    // shake pitch, yaw, and roll decay: The shake's deceleration.\n    /*0x58*/ s16 shakePitchPhase;\n    /*0x5A*/ s16 shakePitchVel;\n    /*0x5C*/ s16 shakePitchDecay;\n\n    /*0x60*/ Vec3f unusedVec1;\n    /*0x6C*/ Vec3s unusedVec2;\n    /*0x72*/ u8 filler3[8];\n\n    /// Used to rotate the screen when rendering.\n    /*0x7A*/ s16 roll;\n    /// Copy of the camera's yaw.\n    /*0x7C*/ s16 yaw;\n    /// Copy of the camera's next yaw.\n    /*0x7E*/ s16 nextYaw;\n    /// The actual focus point the game uses to render.\n    /*0x80*/ Vec3f focus;\n    /// The actual position the game is rendered from.\n    /*0x8C*/ Vec3f pos;\n\n    // Shake variables: See above description\n    /*0x98*/ s16 shakeRollPhase;\n    /*0x9A*/ s16 shakeRollVel;\n    /*0x9C*/ s16 shakeRollDecay;\n    /*0x9E*/ s16 shakeYawPhase;\n    /*0xA0*/ s16 shakeYawVel;\n    /*0xA2*/ s16 shakeYawDecay;\n\n    // focH,Vspeed: how fast lakitu turns towards his goalFocus.\n    /// By default HSpeed is 0.8, so lakitu turns 80% of the horz distance to his goal each frame.\n    /*0xA4*/ f32 focHSpeed;\n    /// By default VSpeed is 0.3, so lakitu turns 30% of the vert distance to his goal each frame.\n    /*0xA8*/ f32 focVSpeed;\n\n    // posH,Vspeed: How fast lakitu flies towards his goalPos.\n    /// By default they are 0.3, so lakitu will fly 30% of the way towards his goal each frame.\n    /*0xAC*/ f32 posHSpeed;\n    /*0xB0*/ f32 posVSpeed;\n\n    /// The roll offset applied during part of the key dance cutscene\n    /*0xB4*/ s16 keyDanceRoll;\n    /// Mario's action from the previous frame. Only used to determine if Mario just finished a dive.\n    /*0xB8*/ u32 lastFrameAction;\n    /*0xBC*/ s16 unused;\n};\n\n// bss order hack to not affect BSS order. if possible, remove me, but it will be hard to match otherwise\n#ifndef INCLUDED_FROM_CAMERA_C\n// BSS\nextern s16 sSelectionFlags;\nextern s16 sCameraSoundFlags;\nextern u16 sCButtonsPressed;\nextern struct PlayerCameraState gPlayerCameraState[2];\nextern struct LakituState gLakituState;\nextern s16 gCameraMovementFlags;\nextern s32 gObjCutsceneDone;\nextern struct Camera *gCamera;\n#endif\n\nextern struct Object *gCutsceneFocus;\nextern struct Object *gSecondCameraFocus;\nextern u8 gRecentCutscene;\n\n// TODO: sort all of this extremely messy shit out after the split\n\nvoid set_camera_shake_from_hit(s16 shake);\nvoid set_environmental_camera_shake(s16 shake);\nvoid set_camera_shake_from_point(s16 shake, f32 posX, f32 posY, f32 posZ);\nvoid move_mario_head_c_up(UNUSED struct Camera *c);\nvoid transition_next_state(UNUSED struct Camera *c, s16 frames);\nvoid set_camera_mode(struct Camera *c, s16 mode, s16 frames);\nvoid update_camera(struct Camera *c);\nvoid reset_camera(struct Camera *c);\nvoid init_camera(struct Camera *c);\nvoid select_mario_cam_mode(void);\nGfx *geo_camera_main(s32 callContext, struct GraphNode *g, void *context);\nvoid stub_camera_2(UNUSED struct Camera *c);\nvoid stub_camera_3(UNUSED struct Camera *c);\nvoid vec3f_sub(Vec3f dst, Vec3f src);\nvoid object_pos_to_vec3f(Vec3f dst, struct Object *o);\nvoid vec3f_to_object_pos(struct Object *o, Vec3f src);\ns32 move_point_along_spline(Vec3f p, struct CutsceneSplinePoint spline[], s16 *splineSegment, f32 *progress);\ns32 cam_select_alt_mode(s32 angle);\ns32 set_cam_angle(s32 mode);\nvoid set_handheld_shake(u8 mode);\nvoid shake_camera_handheld(Vec3f pos, Vec3f focus);\ns32 find_c_buttons_pressed(u16 currentState, u16 buttonsPressed, u16 buttonsDown);\ns32 update_camera_hud_status(struct Camera *c);\ns32 collide_with_walls(Vec3f pos, f32 offsetY, f32 radius);\ns32 clamp_pitch(Vec3f from, Vec3f to, s16 maxPitch, s16 minPitch);\ns32 is_within_100_units_of_mario(f32 posX, f32 posY, f32 posZ);\ns32 set_or_approach_f32_asymptotic(f32 *dst, f32 goal, f32 scale);\ns32 approach_f32_asymptotic_bool(f32 *current, f32 target, f32 multiplier);\nf32 approach_f32_asymptotic(f32 current, f32 target, f32 multiplier);\ns32 approach_s16_asymptotic_bool(s16 *current, s16 target, s16 divisor);\ns32 approach_s16_asymptotic(s16 current, s16 target, s16 divisor);\nvoid approach_vec3f_asymptotic(Vec3f current, Vec3f target, f32 xMul, f32 yMul, f32 zMul);\nvoid set_or_approach_vec3f_asymptotic(Vec3f dst, Vec3f goal, f32 xMul, f32 yMul, f32 zMul);\ns32 camera_approach_s16_symmetric_bool(s16 *current, s16 target, s16 increment);\ns32 set_or_approach_s16_symmetric(s16 *current, s16 target, s16 increment);\ns32 camera_approach_f32_symmetric_bool(f32 *current, f32 target, f32 increment);\nf32 camera_approach_f32_symmetric(f32 value, f32 target, f32 increment);\nvoid random_vec3s(Vec3s dst, s16 xRange, s16 yRange, s16 zRange);\ns32 clamp_positions_and_find_yaw(Vec3f pos, Vec3f origin, f32 xMax, f32 xMin, f32 zMax, f32 zMin);\ns32 is_range_behind_surface(Vec3f from, Vec3f to, struct Surface *surf, s16 range, s16 surfType);\nvoid scale_along_line(Vec3f dest, Vec3f from, Vec3f to, f32 scale);\ns16 calculate_pitch(Vec3f from, Vec3f to);\ns16 calculate_yaw(Vec3f from, Vec3f to);\nvoid calculate_angles(Vec3f from, Vec3f to, s16 *pitch, s16 *yaw);\nf32 calc_abs_dist(Vec3f a, Vec3f b);\nf32 calc_hor_dist(Vec3f a, Vec3f b);\nvoid rotate_in_xz(Vec3f dst, Vec3f src, s16 yaw);\nvoid rotate_in_yz(Vec3f dst, Vec3f src, s16 pitch);\nvoid set_camera_pitch_shake(s16 mag, s16 decay, s16 inc);\nvoid set_camera_yaw_shake(s16 mag, s16 decay, s16 inc);\nvoid set_camera_roll_shake(s16 mag, s16 decay, s16 inc);\nvoid set_pitch_shake_from_point(s16 mag, s16 decay, s16 inc, f32 maxDist, f32 posX, f32 posY, f32 posZ);\nvoid shake_camera_pitch(Vec3f pos, Vec3f focus);\nvoid shake_camera_yaw(Vec3f pos, Vec3f focus);\nvoid shake_camera_roll(s16 *roll);\ns32 offset_yaw_outward_radial(struct Camera *c, s16 areaYaw);\nvoid play_camera_buzz_if_cdown(void);\nvoid play_camera_buzz_if_cbutton(void);\nvoid play_camera_buzz_if_c_sideways(void);\nvoid play_sound_cbutton_up(void);\nvoid play_sound_cbutton_down(void);\nvoid play_sound_cbutton_side(void);\nvoid play_sound_button_change_blocked(void);\nvoid play_sound_rbutton_changed(void);\nvoid play_sound_if_cam_switched_to_lakitu_or_mario(void);\ns32 radial_camera_input(struct Camera *c, UNUSED f32 unused);\ns32 trigger_cutscene_dialog(s32 trigger);\nvoid handle_c_button_movement(struct Camera *c);\nvoid start_cutscene(struct Camera *c, u8 cutscene);\nu8 get_cutscene_from_mario_status(struct Camera *c);\nvoid warp_camera(f32 displacementX, f32 displacementY, f32 displacementZ);\nvoid approach_camera_height(struct Camera *c, f32 goal, f32 inc);\nvoid offset_rotated(Vec3f dst, Vec3f from, Vec3f to, Vec3s rotation);\ns16 next_lakitu_state(Vec3f newPos, Vec3f newFoc, Vec3f curPos, Vec3f curFoc, Vec3f oldPos, Vec3f oldFoc, s16 yaw);\nvoid set_fixed_cam_axis_sa_lobby(UNUSED s16 preset);\ns16 camera_course_processing(struct Camera *c);\nvoid resolve_geometry_collisions(Vec3f pos, UNUSED Vec3f lastGood);\ns32 rotate_camera_around_walls(struct Camera *c, Vec3f cPos, s16 *avoidYaw, s16 yawRange);\nvoid find_mario_floor_and_ceil(struct PlayerGeometry *pg);\nu8 start_object_cutscene_without_focus(u8 cutscene);\ns16 cutscene_object_with_dialog(u8 cutscene, struct Object *o, s16 dialogID);\ns16 cutscene_object_without_dialog(u8 cutscene, struct Object *o);\ns16 cutscene_object(u8 cutscene, struct Object *o);\nvoid play_cutscene(struct Camera *c);\ns32 cutscene_event(CameraEvent event, struct Camera * c, s16 start, s16 end);\ns32 cutscene_spawn_obj(u32 obj, s16 frame);\nvoid set_fov_shake(s16 amplitude, s16 decay, s16 shakeSpeed);\n\nvoid set_fov_function(u8 func);\nvoid cutscene_set_fov_shake_preset(u8 preset);\nvoid set_fov_shake_from_point_preset(u8 preset, f32 posX, f32 posY, f32 posZ);\nvoid obj_rotate_towards_point(struct Object *o, Vec3f point, s16 pitchOff, s16 yawOff, s16 pitchDiv, s16 yawDiv);\n\nGfx *geo_camera_fov(s32 callContext, struct GraphNode *g, UNUSED void *context);\n\n#endif // CAMERA_H\n"
  },
  {
    "path": "src/game/cn_common_syms_1.c",
    "content": "#include <ultra64.h>\n\n#include \"macros.h\"\n\n// This file is used to place iQue COMMON/.scommon symbols in the right locations.\n\n#ifdef VERSION_CN\nFORCE_BSS u32 __osBaseCounter;\nFORCE_BSS s16 gSaveOptSelectIndex;\nFORCE_BSS s32 sNumCountOverflows;\nFORCE_BSS s32 sLastHighestCount;\nFORCE_BSS u32 __osViIntrCount;\nFORCE_BSS s16 gCurrActNum;\nFORCE_BSS u8 __osMaxControllers;\nFORCE_BSS OSTime __osCurrentTime;\nFORCE_BSS s16 gMenuOptSelectIndex;\nFORCE_BSS s32 sLastHighestCount2;\nFORCE_BSS u8 __osContLastCmd;\nFORCE_BSS OSMesg __osEepromTimerMsg;\nFORCE_BSS u32 __osTimerCounter;\nFORCE_BSS s16 gCurrAreaIndex;\nFORCE_BSS s32 sNumCountOverflows2;\nFORCE_BSS struct MemoryPool *gEffectsMemoryPool;\nFORCE_BSS s8 gNeverEnteredCastle;\nFORCE_BSS s8 gRedCoinsCollected;\nFORCE_BSS s16 gSavedCourseNum;\nFORCE_BSS u32 __osFinalrom;\nFORCE_BSS s16 gCurrCourseNum;\n#endif\n"
  },
  {
    "path": "src/game/cn_common_syms_2.c",
    "content": "#include <ultra64.h>\n\n#include \"macros.h\"\n#include \"types.h\"\n\n// This file is used to place iQue COMMON/.scommon symbols in the right locations.\n\n#ifdef VERSION_CN\n// Can't include the .h files directly because they have extern declarations\nstruct HudDisplay {\n    /*0x00*/ s16 lives;\n    /*0x02*/ s16 coins;\n    /*0x04*/ s16 stars;\n    /*0x06*/ s16 wedges;\n    /*0x08*/ s16 keys;\n    /*0x0A*/ s16 flags;\n    /*0x0C*/ u16 timer;\n};\n\ntypedef struct {\n    /* 0x00 */ u32 ramarray[15];\n    /* 0x3C */ u32 pifstatus;\n} OSPifRam;\n\nstruct SpawnInfo {\n    /*0x00*/ Vec3s startPos;\n    /*0x06*/ Vec3s startAngle;\n    /*0x0C*/ s8 areaIndex;\n    /*0x0D*/ s8 activeAreaIndex;\n    /*0x10*/ u32 behaviorArg;\n    /*0x14*/ void *behaviorScript;\n    /*0x18*/ struct GraphNode *model;\n    /*0x1C*/ struct SpawnInfo *next;\n};\n\nstruct WarpTransitionData {\n    /*0x00*/ u8 red;\n    /*0x01*/ u8 green;\n    /*0x02*/ u8 blue;\n\n    /*0x04*/ s16 startTexRadius;\n    /*0x06*/ s16 endTexRadius;\n    /*0x08*/ s16 startTexX;\n    /*0x0A*/ s16 startTexY;\n    /*0x0C*/ s16 endTexX;\n    /*0x0E*/ s16 endTexY;\n\n    /*0x10*/ s16 texTimer; // always 0, does seems to affect transition when disabled\n};\n\nstruct WarpTransition {\n    /*0x00*/ u8 isActive;       // Is the transition active. (either TRUE or FALSE)\n    /*0x01*/ u8 type;           // Determines the type of transition to use (circle, star, etc.)\n    /*0x02*/ u8 time;           // Amount of time to complete the transition (in frames)\n    /*0x03*/ u8 pauseRendering; // Should the game stop rendering. (either TRUE or FALSE)\n    /*0x04*/ struct WarpTransitionData data;\n};\n\ntypedef struct __OSEventState\n{\n    OSMesgQueue *messageQueue;\n    OSMesg message;\n} __OSEventState;\n\nstruct Area {\n    /*0x00*/ s8 index;\n    /*0x01*/ s8 flags; // Only has 1 flag: 0x01 = Is this the active area?\n    /*0x02*/ u16 terrainType; // default terrain of the level (set from level script cmd 0x31)\n    /*0x04*/ struct GraphNodeRoot *unk04; // geometry layout data\n    /*0x08*/ TerrainData *terrainData; // collision data (set from level script cmd 0x2E)\n    /*0x0C*/ RoomData *surfaceRooms; // (set from level script cmd 0x2F)\n    /*0x10*/ s16 *macroObjects; // Macro Objects Ptr (set from level script cmd 0x39)\n    /*0x14*/ struct ObjectWarpNode *warpNodes;\n    /*0x18*/ struct WarpNode *paintingWarpNodes;\n    /*0x1C*/ struct InstantWarp *instantWarps;\n    /*0x20*/ struct SpawnInfo *objectSpawnInfos;\n    /*0x24*/ struct Camera *camera;\n    /*0x28*/ struct UnusedArea28 *unused; // Filled by level script 0x3A, but is unused.\n    /*0x2C*/ struct Whirlpool *whirlpools[2];\n    /*0x34*/ u8 dialog[2]; // Level start dialog number (set by level script cmd 0x30)\n    /*0x36*/ u16 musicParam;\n    /*0x38*/ u16 musicParam2;\n};\n\nFORCE_BSS struct HudDisplay gHudDisplay;\nFORCE_BSS OSThread __osThreadSave;\nFORCE_BSS OSPifRam __osContPifRam;\nFORCE_BSS OSPiHandle __Dom2SpeedParam;\nFORCE_BSS struct SpawnInfo gPlayerSpawnInfos[1];\nFORCE_BSS struct GraphNode *D_8033A160[0x100];\nFORCE_BSS OSPiHandle __CartRomHandle;\nFORCE_BSS u8 sBssPad[0x48]; //! TODO: What is this space in the bss?\nFORCE_BSS OSMesgQueue gOsPiMessageQueue;\nFORCE_BSS OSPiHandle __Dom1SpeedParam;\nFORCE_BSS OSTimer __osBaseTimer;\nFORCE_BSS struct WarpTransition gWarpTransition;\nFORCE_BSS OSTimer __osEepromTimer;\nFORCE_BSS struct MarioState gMarioStates[1];\nFORCE_BSS __OSEventState __osEventStateTab[OS_NUM_EVENTS];\nFORCE_BSS OSMesgQueue __osEepromTimerQ;\nFORCE_BSS struct Area gAreaData[8];\nFORCE_BSS OSMesgQueue gOsSiMessageQueue;\n#endif\n"
  },
  {
    "path": "src/game/crash_screen.c",
    "content": "#include <ultra64.h>\n#include <stdarg.h>\n#include <string.h>\n\n#include \"sm64.h\"\n\n#if defined(TARGET_N64) && (defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN))\n\n#include \"lib/src/printf.h\"\n\nu8 gCrashScreenCharToGlyph[128] = {\n    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, -1, -1, -1, 43, -1, -1, 37, 38, -1, 42,\n    -1, 39, 44, -1, 0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  36, -1, -1, -1, -1, 40, -1, 10,\n    11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,\n    33, 34, 35, -1, -1, -1, -1, -1, -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,\n    23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1,\n};\n\n// A height of seven pixels for each Character * nine rows of characters + one row unused.\nu32 gCrashScreenFont[7 * 9 + 1] = {\n    #include \"textures/crash_screen/crash_screen_font.ia1.inc.c\"\n};\n\n\nchar *gCauseDesc[18] = {\n    \"Interrupt\",\n    \"TLB modification\",\n    \"TLB exception on load\",\n    \"TLB exception on store\",\n    \"Address error on load\",\n    \"Address error on store\",\n    \"Bus error on inst.\",\n    \"Bus error on data\",\n    \"System call exception\",\n    \"Breakpoint exception\",\n    \"Reserved instruction\",\n    \"Coprocessor unusable\",\n    \"Arithmetic overflow\",\n    \"Trap exception\",\n    \"Virtual coherency on inst.\",\n    \"Floating point exception\",\n    \"Watchpoint exception\",\n    \"Virtual coherency on data\",\n};\n\nchar *gFpcsrDesc[6] = {\n    \"Unimplemented operation\", \"Invalid operation\", \"Division by zero\", \"Overflow\", \"Underflow\",\n    \"Inexact operation\",\n};\n\n\n\nextern u64 osClockRate;\n\nstruct {\n    OSThread thread;\n    u64 stack[0x800 / sizeof(u64)];\n    OSMesgQueue mesgQueue;\n    OSMesg mesg;\n    u16 *framebuffer;\n    u16 width;\n    u16 height;\n} gCrashScreen;\n\nvoid crash_screen_draw_rect(s32 x, s32 y, s32 w, s32 h) {\n    u16 *ptr;\n    s32 i, j;\n\n    ptr = gCrashScreen.framebuffer + gCrashScreen.width * y + x;\n    for (i = 0; i < h; i++) {\n        for (j = 0; j < w; j++) {\n            // 0xe738 = 0b1110011100111000\n            *ptr = ((*ptr & 0xe738) >> 2) | 1;\n            ptr++;\n        }\n        ptr += gCrashScreen.width - w;\n    }\n}\n\nvoid crash_screen_draw_glyph(s32 x, s32 y, s32 glyph) {\n    const u32 *data;\n    u16 *ptr;\n    u32 bit;\n    u32 rowMask;\n    s32 i, j;\n\n    data = &gCrashScreenFont[glyph / 5 * 7];\n    ptr = gCrashScreen.framebuffer + gCrashScreen.width * y + x;\n\n    for (i = 0; i < 7; i++) {\n        bit = 0x80000000U >> ((glyph % 5) * 6);\n        rowMask = *data++;\n\n        for (j = 0; j < 6; j++) {\n            *ptr++ = (bit & rowMask) ? 0xffff : 1;\n            bit >>= 1;\n        }\n        ptr += gCrashScreen.width - 6;\n    }\n}\n\nstatic char *write_to_buf(char *buffer, const char *data, size_t size) {\n    return (char *) memcpy(buffer, data, size) + size;\n}\n\nvoid crash_screen_print(s32 x, s32 y, const char *fmt, ...) {\n    char *ptr;\n    u32 glyph;\n    s32 size;\n    char buf[0x100];\n\n    va_list args;\n    va_start(args, fmt);\n\n    size = _Printf(write_to_buf, buf, fmt, args);\n\n    if (size > 0) {\n        ptr = buf;\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        while (size > 0) {\n#else\n        while (*ptr) {\n#endif\n\n            glyph = gCrashScreenCharToGlyph[*ptr & 0x7f];\n\n            if (glyph != 0xff) {\n                crash_screen_draw_glyph(x, y, glyph);\n            }\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n            size--;\n#endif\n\n            ptr++;\n            x += 6;\n        }\n    }\n\n    va_end(args);\n}\n\nvoid crash_screen_sleep(s32 ms) {\n    u64 cycles = ms * 1000LL * osClockRate / 1000000ULL;\n    osSetTime(0);\n    while (osGetTime() < cycles) {\n    }\n}\n\nvoid crash_screen_print_float_reg(s32 x, s32 y, s32 regNum, void *addr) {\n    u32 bits;\n    s32 exponent;\n\n    bits = *(u32 *) addr;\n    exponent = ((bits & 0x7f800000U) >> 0x17) - 0x7f;\n    if ((exponent >= -0x7e && exponent <= 0x7f) || bits == 0) {\n        crash_screen_print(x, y, \"F%02d:%.3e\", regNum, *(f32 *) addr);\n    } else {\n        crash_screen_print(x, y, \"F%02d:---------\", regNum);\n    }\n}\n\nvoid crash_screen_print_fpcsr(u32 fpcsr) {\n    s32 i;\n    u32 bit;\n\n    bit = 1 << 17;\n    crash_screen_print(30, 155, \"FPCSR:%08XH\", fpcsr);\n    for (i = 0; i < 6; i++) {\n        if (fpcsr & bit) {\n            crash_screen_print(132, 155, \"(%s)\", gFpcsrDesc[i]);\n            return;\n        }\n        bit >>= 1;\n    }\n}\n\nvoid draw_crash_screen(OSThread *thread) {\n    s16 cause;\n    __OSThreadContext *tc = &thread->context;\n\n    cause = (tc->cause >> 2) & 0x1f;\n    if (cause == 23) { // EXC_WATCH\n        cause = 16;\n    }\n    if (cause == 31) { // EXC_VCED\n        cause = 17;\n    }\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    osWritebackDCacheAll();\n#endif\n\n    crash_screen_draw_rect(25, 20, 270, 25);\n    crash_screen_print(30, 25, \"THREAD:%d  (%s)\", thread->id, gCauseDesc[cause]);\n    crash_screen_print(30, 35, \"PC:%08XH   SR:%08XH   VA:%08XH\", tc->pc, tc->sr, tc->badvaddr);\n#ifdef VERSION_EU\n    osWritebackDCacheAll();\n#endif\n    crash_screen_sleep(2000);\n    crash_screen_draw_rect(25, 45, 270, 185);\n    crash_screen_print(30, 50, \"AT:%08XH   V0:%08XH   V1:%08XH\", (u32) tc->at, (u32) tc->v0,\n                       (u32) tc->v1);\n    crash_screen_print(30, 60, \"A0:%08XH   A1:%08XH   A2:%08XH\", (u32) tc->a0, (u32) tc->a1,\n                       (u32) tc->a2);\n    crash_screen_print(30, 70, \"A3:%08XH   T0:%08XH   T1:%08XH\", (u32) tc->a3, (u32) tc->t0,\n                       (u32) tc->t1);\n    crash_screen_print(30, 80, \"T2:%08XH   T3:%08XH   T4:%08XH\", (u32) tc->t2, (u32) tc->t3,\n                       (u32) tc->t4);\n    crash_screen_print(30, 90, \"T5:%08XH   T6:%08XH   T7:%08XH\", (u32) tc->t5, (u32) tc->t6,\n                       (u32) tc->t7);\n    crash_screen_print(30, 100, \"S0:%08XH   S1:%08XH   S2:%08XH\", (u32) tc->s0, (u32) tc->s1,\n                       (u32) tc->s2);\n    crash_screen_print(30, 110, \"S3:%08XH   S4:%08XH   S5:%08XH\", (u32) tc->s3, (u32) tc->s4,\n                       (u32) tc->s5);\n    crash_screen_print(30, 120, \"S6:%08XH   S7:%08XH   T8:%08XH\", (u32) tc->s6, (u32) tc->s7,\n                       (u32) tc->t8);\n    crash_screen_print(30, 130, \"T9:%08XH   GP:%08XH   SP:%08XH\", (u32) tc->t9, (u32) tc->gp,\n                       (u32) tc->sp);\n    crash_screen_print(30, 140, \"S8:%08XH   RA:%08XH\", (u32) tc->s8, (u32) tc->ra);\n    crash_screen_print_fpcsr(tc->fpcsr);\n#ifdef VERSION_EU\n    osWritebackDCacheAll();\n#endif\n    crash_screen_print_float_reg(30, 170, 0, &tc->fp0.f.f_even);\n    crash_screen_print_float_reg(120, 170, 2, &tc->fp2.f.f_even);\n    crash_screen_print_float_reg(210, 170, 4, &tc->fp4.f.f_even);\n    crash_screen_print_float_reg(30, 180, 6, &tc->fp6.f.f_even);\n    crash_screen_print_float_reg(120, 180, 8, &tc->fp8.f.f_even);\n    crash_screen_print_float_reg(210, 180, 10, &tc->fp10.f.f_even);\n    crash_screen_print_float_reg(30, 190, 12, &tc->fp12.f.f_even);\n    crash_screen_print_float_reg(120, 190, 14, &tc->fp14.f.f_even);\n    crash_screen_print_float_reg(210, 190, 16, &tc->fp16.f.f_even);\n    crash_screen_print_float_reg(30, 200, 18, &tc->fp18.f.f_even);\n    crash_screen_print_float_reg(120, 200, 20, &tc->fp20.f.f_even);\n    crash_screen_print_float_reg(210, 200, 22, &tc->fp22.f.f_even);\n    crash_screen_print_float_reg(30, 210, 24, &tc->fp24.f.f_even);\n    crash_screen_print_float_reg(120, 210, 26, &tc->fp26.f.f_even);\n    crash_screen_print_float_reg(210, 210, 28, &tc->fp28.f.f_even);\n    crash_screen_print_float_reg(30, 220, 30, &tc->fp30.f.f_even);\n#ifdef VERSION_EU\n    osWritebackDCacheAll();\n#endif\n    osViBlack(FALSE);\n    osViSwapBuffer(gCrashScreen.framebuffer);\n}\n\nOSThread *get_crashed_thread(void) {\n    OSThread *thread;\n\n    thread = __osGetCurrFaultedThread();\n    while (thread->priority != -1) {\n        if (thread->priority > OS_PRIORITY_IDLE && thread->priority < OS_PRIORITY_APPMAX\n            && (thread->flags & 3) != 0) {\n            return thread;\n        }\n        thread = thread->tlnext;\n    }\n    return NULL;\n}\n\nvoid thread2_crash_screen(UNUSED void *arg) {\n    OSMesg mesg;\n    OSThread *thread;\n\n    osSetEventMesg(OS_EVENT_CPU_BREAK, &gCrashScreen.mesgQueue, (OSMesg) 1);\n    osSetEventMesg(OS_EVENT_FAULT, &gCrashScreen.mesgQueue, (OSMesg) 2);\n    do {\n        osRecvMesg(&gCrashScreen.mesgQueue, &mesg, 1);\n        thread = get_crashed_thread();\n    } while (thread == NULL);\n    draw_crash_screen(thread);\n    for (;;) {\n    }\n}\n\nvoid crash_screen_set_framebuffer(u16 *framebuffer, u16 width, u16 height) {\n#ifdef VERSION_EU\n    gCrashScreen.framebuffer = framebuffer;\n#else\n    gCrashScreen.framebuffer = (u16 *)((uintptr_t)framebuffer | 0xa0000000);\n#endif\n    gCrashScreen.width = width;\n    gCrashScreen.height = height;\n}\n\nvoid crash_screen_init(void) {\n#ifdef VERSION_EU\n    gCrashScreen.framebuffer = (u16 *) (osMemSize | 0x80000000) - SCREEN_WIDTH * SCREEN_HEIGHT;\n#else\n    gCrashScreen.framebuffer = (u16 *) (osMemSize | 0xA0000000) - SCREEN_WIDTH * SCREEN_HEIGHT;\n#endif\n    gCrashScreen.width = SCREEN_WIDTH;\n#ifdef VERSION_EU\n    gCrashScreen.height = SCREEN_HEIGHT;\n#else\n    gCrashScreen.height = 0x10;\n#endif\n    osCreateMesgQueue(&gCrashScreen.mesgQueue, &gCrashScreen.mesg, 1);\n    osCreateThread(\n        &gCrashScreen.thread, 2, thread2_crash_screen, NULL,\n        (u8 *) gCrashScreen.stack + sizeof(gCrashScreen.stack),\n#ifdef VERSION_EU\n        OS_PRIORITY_APPMAX\n#else\n        OS_PRIORITY_RMON\n#endif\n    );\n    osStartThread(&gCrashScreen.thread);\n}\n\n#endif\n"
  },
  {
    "path": "src/game/debug.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"behavior_data.h\"\n#include \"debug.h\"\n#include \"engine/behavior_script.h\"\n#include \"engine/surface_collision.h\"\n#include \"game_init.h\"\n#include \"main.h\"\n#include \"object_constants.h\"\n#include \"object_fields.h\"\n#include \"object_helpers.h\"\n#include \"object_list_processor.h\"\n#include \"print.h\"\n#include \"sm64.h\"\n#include \"types.h\"\n\n#define DEBUG_INFO_NOFLAGS (0 << 0)\n#define DEBUG_INFO_FLAG_DPRINT (1 << 0)\n#define DEBUG_INFO_FLAG_LSELECT (1 << 1)\n#define DEBUG_INFO_FLAG_ALL 0xFF\n\ns16 gDebugPrintState1[6]; // prints top-down?\ns16 gDebugPrintState2[6]; // prints bottom-up?\n\nenum DebugPrintStateInfo {\n    DEBUG_PSTATE_DISABLED,\n    DEBUG_PSTATE_X_CURSOR,\n    DEBUG_PSTATE_Y_CURSOR,\n    DEBUG_PSTATE_MIN_Y_CURSOR,\n    DEBUG_PSTATE_MAX_X_CURSOR,\n    DEBUG_PSTATE_LINE_Y_OFFSET\n};\n\n// DEBUG_SYS_EFFECTINFO\nconst char *sDebugEffectStringInfo[] = {\n    \"  a0 %d\", \"  a1 %d\", \"  a2 %d\", \"  a3 %d\", \"  a4 %d\", \"  a5 %d\", \"  a6 %d\", \"  a7 %d\",\n    \"A\" // cursor\n};\n\n// DEBUG_SYS_ENEMYINFO\nconst char *sDebugEnemyStringInfo[] = {\n    \"  b0 %d\", \"  b1 %d\", \"  b2 %d\", \"  b3 %d\", \"  b4 %d\", \"  b5 %d\", \"  b6 %d\", \"  b7 %d\",\n    \"B\" // cursor\n};\n\ns32 sDebugInfoDPadMask = 0;\ns32 sDebugInfoDPadUpdID = 0;\ns8 sDebugLvSelectCheckFlag = FALSE;\n\n#define DEBUG_PAGE_MIN DEBUG_PAGE_OBJECTINFO\n#define DEBUG_PAGE_MAX DEBUG_PAGE_ENEMYINFO\n\ns8 sDebugPage = DEBUG_PAGE_MIN;\ns8 sNoExtraDebug = FALSE;\ns8 sDebugStringArrPrinted = FALSE;\ns8 sDebugSysCursor = 0;\ns8 sDebugInfoButtonSeqID = 0;\ns16 sDebugInfoButtonSeq[] = { U_CBUTTONS, L_CBUTTONS, D_CBUTTONS, R_CBUTTONS, -1 };\n\n// most likely present in an ifdef DEBUG build. TODO: check DD version?\nvoid stub_debug_1(void) {\n}\n\nvoid stub_debug_2(void) {\n}\n\nvoid stub_debug_3(void) {\n}\n\nvoid stub_debug_4(void) {\n}\n\n/*\n * These 2 functions are called from the object list processor in regards to cycle\n * counts. They likely have stubbed out code that calculated the clock count and\n * its difference for consecutive calls.\n */\ns64 get_current_clock(void) {\n    s64 wtf = 0;\n\n    return wtf;\n}\n\ns64 get_clock_difference(UNUSED s64 cycles) {\n    s64 wtf = 0;\n\n    return wtf;\n}\n\n/*\n * Set the print state info given a pointer to a print state and the relevent\n * information. Note the reset of the printing boolean. For all intenses and\n * purposes this creates/formats a new print state.\n */\nvoid set_print_state_info(s16 *printState, s16 xCursor, s16 yCursor, s16 minYCursor, s16 maxXCursor,\n                          s16 lineYOffset) {\n    printState[DEBUG_PSTATE_DISABLED] = FALSE;\n    printState[DEBUG_PSTATE_X_CURSOR] = xCursor;\n    printState[DEBUG_PSTATE_Y_CURSOR] = yCursor;\n    printState[DEBUG_PSTATE_MIN_Y_CURSOR] = minYCursor;\n    printState[DEBUG_PSTATE_MAX_X_CURSOR] = maxXCursor;\n    printState[DEBUG_PSTATE_LINE_Y_OFFSET] = lineYOffset;\n}\n\n/*\n * Take a print state array, string, and the number to print, and use its information to print\n * the next entry in the list. If the current print state array is too far down the list, this\n * will print \"DPRINT OVER\" instead, signaling that the print state overflowed.\n */\nvoid print_text_array_info(s16 *printState, const char *str, s32 number) {\n    if (!printState[DEBUG_PSTATE_DISABLED]) {\n        if ((printState[DEBUG_PSTATE_Y_CURSOR] < printState[DEBUG_PSTATE_MIN_Y_CURSOR])\n            || (printState[DEBUG_PSTATE_MAX_X_CURSOR] < printState[DEBUG_PSTATE_Y_CURSOR])) {\n            print_text(printState[DEBUG_PSTATE_X_CURSOR], printState[DEBUG_PSTATE_Y_CURSOR],\n                       \"DPRINT OVER\");\n            printState[DEBUG_PSTATE_DISABLED]++; // why not just = TRUE...\n        } else {\n            print_text_fmt_int(printState[DEBUG_PSTATE_X_CURSOR], printState[DEBUG_PSTATE_Y_CURSOR],\n                               str, number);\n            printState[DEBUG_PSTATE_Y_CURSOR] += printState[DEBUG_PSTATE_LINE_Y_OFFSET];\n        }\n    }\n}\n\nvoid set_text_array_x_y(s32 xOffset, s32 yOffset) {\n    s16 *printState = gDebugPrintState1;\n\n    printState[DEBUG_PSTATE_X_CURSOR] += xOffset;\n    printState[DEBUG_PSTATE_Y_CURSOR] =\n        yOffset * printState[DEBUG_PSTATE_LINE_Y_OFFSET] + printState[DEBUG_PSTATE_Y_CURSOR];\n}\n\n/*\n * These series of dprint functions print methods depending on the context of the\n * current debug mode as well as the printer array (down to up vs up to down).\n */\nvoid print_debug_bottom_up(const char *str, s32 number) {\n    if (gDebugInfoFlags & DEBUG_INFO_FLAG_DPRINT) {\n        print_text_array_info(gDebugPrintState2, str, number);\n    }\n}\n\nvoid print_debug_top_down_objectinfo(const char *str, s32 number) {\n    if ((gDebugInfoFlags & DEBUG_INFO_FLAG_DPRINT) && sDebugPage == DEBUG_PAGE_OBJECTINFO) {\n        print_text_array_info(gDebugPrintState1, str, number);\n    }\n}\n\nvoid print_debug_top_down_mapinfo(const char *str, s32 number) {\n    if (sNoExtraDebug) { // how come this is the only instance of the sNoExtraDebug check?\n        return;\n    }\n\n    if (gDebugInfoFlags & DEBUG_INFO_FLAG_DPRINT) {\n        print_text_array_info(gDebugPrintState1, str, number);\n    }\n}\n\nvoid print_debug_top_down_normal(const char *str, s32 number) {\n    if (gDebugInfoFlags & DEBUG_INFO_FLAG_DPRINT) {\n        print_text_array_info(gDebugPrintState1, str, number);\n    }\n}\n\nvoid print_mapinfo(void) {\n    // EU mostly stubbed this function out.\n    struct Surface *pfloor;\n    UNUSED f32 bgY;   // unused in EU\n    UNUSED f32 water; // unused in EU\n    UNUSED s32 area;  // unused in EU\n    UNUSED s32 angY;  // unused in EU\n\n    angY = gCurrentObject->oMoveAngleYaw / 182.044000;\n    area = ((s32) gCurrentObject->oPosX + 0x2000) / 1024\n           + ((s32) gCurrentObject->oPosZ + 0x2000) / 1024 * 16;\n\n    bgY = find_floor(gCurrentObject->oPosX, gCurrentObject->oPosY, gCurrentObject->oPosZ, &pfloor);\n    water = find_water_level(gCurrentObject->oPosX, gCurrentObject->oPosZ);\n\n    print_debug_top_down_normal(\"mapinfo\", 0);\n#ifndef VERSION_EU\n    print_debug_top_down_mapinfo(\"area %x\", area);\n    print_debug_top_down_mapinfo(\"wx   %d\", gCurrentObject->oPosX);\n    //! Fat finger: programmer hit tab instead of space. Japanese\n    // thumb shift keyboards had the tab key next to the spacebar,\n    // so this was likely the reason.\n    print_debug_top_down_mapinfo(\"wy\\t  %d\", gCurrentObject->oPosY);\n    print_debug_top_down_mapinfo(\"wz   %d\", gCurrentObject->oPosZ);\n    print_debug_top_down_mapinfo(\"bgY  %d\", bgY);\n    print_debug_top_down_mapinfo(\"angY %d\", angY);\n\n    if (pfloor != NULL) {\n        print_debug_top_down_mapinfo(\"bgcode   %d\", pfloor->type);\n        print_debug_top_down_mapinfo(\"bgstatus %d\", pfloor->flags);\n        print_debug_top_down_mapinfo(\"bgarea   %d\", pfloor->room);\n    }\n\n    if (gCurrentObject->oPosY < water) {\n        print_debug_top_down_mapinfo(\"water %d\", water);\n    }\n#endif\n}\n\nvoid print_checkinfo(void) {\n    print_debug_top_down_normal(\"checkinfo\", 0);\n}\n\nvoid print_surfaceinfo(void) {\n    debug_surface_list_info(gMarioObject->oPosX, gMarioObject->oPosZ);\n}\n\nvoid print_stageinfo(void) {\n    print_debug_top_down_normal(\"stageinfo\", 0);\n    print_debug_top_down_normal(\"stage param %d\", gTTCSpeedSetting);\n}\n\n/*\n * Common printer function for effectinfo and enemyinfo. This function\n * also prints the cursor functionality intended to be used with modifying\n * gDebugInfo to set enemy/effect behaviors.\n */\nvoid print_string_array_info(const char **strArr) {\n    s32 i;\n\n    if (!sDebugStringArrPrinted) {\n        sDebugStringArrPrinted++; // again, why not = TRUE...\n        for (i = 0; i < 8; i++) {\n            // sDebugPage is assumed to be 4 or 5 here.\n            print_debug_top_down_mapinfo(strArr[i], gDebugInfo[sDebugPage][i]);\n        }\n        // modify the cursor position so the cursor prints at the correct location.\n        // this is equivalent to (sDebugSysCursor - 8)\n        set_text_array_x_y(0, -1 - (u32)(7 - sDebugSysCursor));\n        print_debug_top_down_mapinfo(strArr[8], 0); // print the cursor\n        set_text_array_x_y(0, 7 - sDebugSysCursor);\n    }\n}\n\nvoid print_effectinfo(void) {\n    print_debug_top_down_normal(\"effectinfo\", 0);\n    print_string_array_info(sDebugEffectStringInfo);\n}\n\nvoid print_enemyinfo(void) {\n    print_debug_top_down_normal(\"enemyinfo\", 0);\n    print_string_array_info(sDebugEnemyStringInfo);\n}\n\nvoid update_debug_dpadmask(void) {\n    s32 dPadMask = gPlayer1Controller->buttonDown & (U_JPAD | D_JPAD | L_JPAD | R_JPAD);\n\n    if (!dPadMask) {\n        sDebugInfoDPadUpdID = 0;\n        sDebugInfoDPadMask = 0;\n    } else {\n        // to prevent stuttering of mask updates, the first time is updated 6\n        // frames from start, and then every 2 frames when held down.\n        if (sDebugInfoDPadUpdID == 0) {\n            sDebugInfoDPadMask = dPadMask;\n        } else if (sDebugInfoDPadUpdID == 6) {\n            sDebugInfoDPadMask = dPadMask;\n        } else {\n            sDebugInfoDPadMask = 0;\n        }\n        sDebugInfoDPadUpdID++;\n        if (sDebugInfoDPadUpdID >= 8) {\n            sDebugInfoDPadUpdID = 6; // rapidly set to 6 from 8 as long as dPadMask is being set.\n        }\n    }\n}\n\nvoid debug_unknown_level_select_check(void) {\n    if (!sDebugLvSelectCheckFlag) {\n        sDebugLvSelectCheckFlag++; // again, just do = TRUE...\n\n        if (!gDebugLevelSelect) {\n            gDebugInfoFlags = DEBUG_INFO_NOFLAGS;\n        } else {\n            gDebugInfoFlags = DEBUG_INFO_FLAG_LSELECT;\n        }\n\n        gNumCalls.floor = 0;\n        gNumCalls.ceil = 0;\n        gNumCalls.wall = 0;\n    }\n}\n\nvoid reset_debug_objectinfo(void) {\n    gNumFindFloorMisses = 0;\n    gUnknownWallCount = 0;\n    gObjectCounter = 0;\n    sDebugStringArrPrinted = FALSE;\n    D_8035FEE2 = 0;\n    D_8035FEE4 = 0;\n\n    set_print_state_info(gDebugPrintState1, 20, 185, 40, 200, -15);\n    set_print_state_info(gDebugPrintState2, 180, 30, 0, 150, 15);\n    update_debug_dpadmask();\n}\n\n/*\n * This function checks for a button sequence (C Up, C Left, C Down,\n * C Right) and then toggles the debug flags from FF to 2; 2 is unused,\n * despite so this has no effect, being called. (unused)\n */\nUNUSED static void check_debug_button_seq(void) {\n    s16 *buttonArr = sDebugInfoButtonSeq;\n    s16 cButtonMask;\n\n    if (!(gPlayer1Controller->buttonDown & L_TRIG)) {\n        sDebugInfoButtonSeqID = 0;\n    } else {\n        if ((s16)(cButtonMask = (gPlayer1Controller->buttonPressed & C_BUTTONS))) {\n            if (buttonArr[sDebugInfoButtonSeqID] == cButtonMask) {\n                sDebugInfoButtonSeqID++;\n                if (buttonArr[sDebugInfoButtonSeqID] == -1) {\n                    if (gDebugInfoFlags == DEBUG_INFO_FLAG_ALL) {\n                        gDebugInfoFlags = DEBUG_INFO_FLAG_LSELECT;\n                    } else {\n                        gDebugInfoFlags = DEBUG_INFO_FLAG_ALL;\n                    }\n                }\n            } else {\n                sDebugInfoButtonSeqID = 0;\n            }\n        }\n    }\n}\n\n/*\n * Poll the debug info flags and controller for appropriate presses that\n * control sDebugPage's range. (unused)\n */\nUNUSED static void try_change_debug_page(void) {\n    if (gDebugInfoFlags & DEBUG_INFO_FLAG_DPRINT) {\n        if ((gPlayer1Controller->buttonPressed & L_JPAD)\n            && (gPlayer1Controller->buttonDown & (L_TRIG | R_TRIG))) {\n            sDebugPage++;\n        }\n        if ((gPlayer1Controller->buttonPressed & R_JPAD)\n            && (gPlayer1Controller->buttonDown & (L_TRIG | R_TRIG))) {\n            sDebugPage--;\n        }\n        if (sDebugPage >= (DEBUG_PAGE_MAX + 1)) {\n            sDebugPage = DEBUG_PAGE_MIN;\n        }\n        if (sDebugPage < DEBUG_PAGE_MIN) {\n            sDebugPage = DEBUG_PAGE_MAX;\n        }\n    }\n}\n\n/*\n * Use the controller to modify gDebugInfo and the sys cursor while\n * using the DPad. L/R DPad modifies gDebugInfo while U/D modifies\n * sDebugSysCursor. This is used to adjust enemy and effect behaviors\n * on the fly. (unused)\n */\n#ifdef VERSION_EU\nUNUSED static\n#endif\nvoid try_modify_debug_controls(void) {\n    s32 sp4;\n\n    if (gPlayer1Controller->buttonPressed & Z_TRIG) {\n        sNoExtraDebug ^= 1;\n    }\n    if (!(gPlayer1Controller->buttonDown & (L_TRIG | R_TRIG)) && !sNoExtraDebug) {\n        sp4 = 1;\n        if (gPlayer1Controller->buttonDown & B_BUTTON) {\n            sp4 = 100;\n        }\n\n        if (sDebugInfoDPadMask & U_JPAD) {\n            sDebugSysCursor--;\n            if (sDebugSysCursor < 0) {\n                sDebugSysCursor = 0;\n            }\n        }\n\n        if (sDebugInfoDPadMask & D_JPAD) {\n            sDebugSysCursor++;\n            if (sDebugSysCursor >= 8) {\n                sDebugSysCursor = 7;\n            }\n        }\n\n        if (sDebugInfoDPadMask & L_JPAD) {\n            // we allow the player while in this mode to modify the debug controls. This is\n            // so the playtester can adjust enemy behavior and parameters on the fly, since\n            // various behaviors try to update their behaviors from gDebugInfo[4] and [5].\n            if (gPlayer1Controller->buttonDown & A_BUTTON) {\n                gDebugInfo[sDebugPage][sDebugSysCursor] =\n                    gDebugInfoOverwrite[sDebugPage][sDebugSysCursor];\n            } else {\n                gDebugInfo[sDebugPage][sDebugSysCursor] = gDebugInfo[sDebugPage][sDebugSysCursor] - sp4;\n            }\n        }\n\n        if (sDebugInfoDPadMask & R_JPAD) {\n            gDebugInfo[sDebugPage][sDebugSysCursor] = gDebugInfo[sDebugPage][sDebugSysCursor] + sp4;\n        }\n    }\n}\n\n// possibly a removed debug control (TODO: check DD)\nvoid stub_debug_5(void) {\n}\n\n/*\n * If Mario's object exists, this function tries to print available object debug\n * information depending on the debug sys ID. Additional information (updated obj\n * count, floor misses, and an unknown wall counter) is also printed.\n */\nvoid try_print_debug_mario_object_info(void) {\n    if (gMarioObject != NULL) {\n        switch (sDebugPage) {\n            case DEBUG_PAGE_CHECKSURFACEINFO:\n                print_surfaceinfo();\n                break;\n            case DEBUG_PAGE_EFFECTINFO:\n                print_effectinfo();\n                break;\n            case DEBUG_PAGE_ENEMYINFO:\n                print_enemyinfo();\n                break;\n            default:\n                break;\n        }\n    }\n\n    print_debug_top_down_mapinfo(\"obj  %d\", gObjectCounter);\n\n    if (gNumFindFloorMisses != 0) {\n        print_debug_bottom_up(\"NULLBG %d\", gNumFindFloorMisses);\n    }\n\n    if (gUnknownWallCount != 0) {\n        print_debug_bottom_up(\"WALL   %d\", gUnknownWallCount);\n    }\n}\n\n/*\n * Similar to above, but with level information. (checkinfo, mapinfo,\n * stageinfo)\n */\nvoid try_print_debug_mario_level_info(void) {\n    switch (sDebugPage) {\n        case DEBUG_PAGE_OBJECTINFO:\n            break; // no info list is printed for obj info.\n        case DEBUG_PAGE_CHECKSURFACEINFO:\n            print_checkinfo();\n            break;\n        case DEBUG_PAGE_MAPINFO:\n            print_mapinfo();\n            break;\n        case DEBUG_PAGE_STAGEINFO:\n            print_stageinfo();\n            break;\n        default:\n            break;\n    }\n}\n\n/*\n * One of the only remaining debug controls activatable from the\n * debug control array. This function lets you spawn 1 of 3\n * objects: A koopa shell, a jumping box, and an underwater koopa\n * shell. This can be reactivated by turning on modifying\n * debug controls with try_modify_debug_controls and setting\n * [5][7] (b7 in the string array) to 1 to enable debug spawn.\n */\nvoid try_do_mario_debug_object_spawn(void) {\n    UNUSED u8 filler[4];\n\n    if (sDebugPage == DEBUG_PAGE_STAGEINFO && gDebugInfo[DEBUG_PAGE_ENEMYINFO][7] == 1) {\n        if (gPlayer1Controller->buttonPressed & R_JPAD) {\n            spawn_object_relative(0, 0, 100, 200, gCurrentObject, MODEL_KOOPA_SHELL, bhvKoopaShell);\n        }\n        if (gPlayer1Controller->buttonPressed & L_JPAD) {\n            spawn_object_relative(0, 0, 100, 200, gCurrentObject, MODEL_BREAKABLE_BOX_SMALL,\n                                  bhvJumpingBox);\n        }\n        if (gPlayer1Controller->buttonPressed & D_JPAD) {\n            spawn_object_relative(0, 0, 100, 200, gCurrentObject, MODEL_KOOPA_SHELL,\n                                  bhvKoopaShellUnderwater);\n        }\n    }\n}\n\n// TODO: figure out what this is\nvoid debug_print_obj_move_flags(void) {\n#ifndef VERSION_EU // TODO: Is there a better way to diff this? static EU doesn't seem to work.\n    if (gCurrentObject->oMoveFlags & OBJ_MOVE_LANDED) {\n        print_debug_top_down_objectinfo(\"BOUND   %x\", gCurrentObject->oMoveFlags);\n    }\n    if (gCurrentObject->oMoveFlags & OBJ_MOVE_ON_GROUND) {\n        print_debug_top_down_objectinfo(\"TOUCH   %x\", gCurrentObject->oMoveFlags);\n    }\n    if (gCurrentObject->oMoveFlags & OBJ_MOVE_LEFT_GROUND) {\n        print_debug_top_down_objectinfo(\"TAKEOFF %x\", gCurrentObject->oMoveFlags);\n    }\n    if (gCurrentObject->oMoveFlags & OBJ_MOVE_ENTERED_WATER) {\n        print_debug_top_down_objectinfo(\"DIVE    %x\", gCurrentObject->oMoveFlags);\n    }\n    if (gCurrentObject->oMoveFlags & OBJ_MOVE_AT_WATER_SURFACE) {\n        print_debug_top_down_objectinfo(\"S WATER %x\", gCurrentObject->oMoveFlags);\n    }\n    if (gCurrentObject->oMoveFlags & OBJ_MOVE_UNDERWATER_OFF_GROUND) {\n        print_debug_top_down_objectinfo(\"U WATER %x\", gCurrentObject->oMoveFlags);\n    }\n    if (gCurrentObject->oMoveFlags & OBJ_MOVE_UNDERWATER_ON_GROUND) {\n        print_debug_top_down_objectinfo(\"B WATER %x\", gCurrentObject->oMoveFlags);\n    }\n    if (gCurrentObject->oMoveFlags & OBJ_MOVE_IN_AIR) {\n        print_debug_top_down_objectinfo(\"SKY     %x\", gCurrentObject->oMoveFlags);\n    }\n    if (gCurrentObject->oMoveFlags & OBJ_MOVE_OUT_SCOPE) {\n        print_debug_top_down_objectinfo(\"OUT SCOPE %x\", gCurrentObject->oMoveFlags);\n    }\n#endif\n}\n\n// unused, what is this?\nvoid debug_enemy_unknown(s16 *enemyArr) {\n    // copy b1-b4 over to an unknown s16 array\n    enemyArr[4] = gDebugInfo[DEBUG_PAGE_ENEMYINFO][1];\n    enemyArr[5] = gDebugInfo[DEBUG_PAGE_ENEMYINFO][2];\n    enemyArr[6] = gDebugInfo[DEBUG_PAGE_ENEMYINFO][3];\n    enemyArr[7] = gDebugInfo[DEBUG_PAGE_ENEMYINFO][4];\n}\n"
  },
  {
    "path": "src/game/debug.h",
    "content": "#ifndef DEBUG_H\n#define DEBUG_H\n\n#include <PR/ultratypes.h>\n\nenum DebugPage {\n    DEBUG_PAGE_OBJECTINFO,       // 0: objectinfo\n    DEBUG_PAGE_CHECKSURFACEINFO, // 1: checkinfo/surfaceinfo\n    DEBUG_PAGE_MAPINFO,          // 2: mapinfo\n    DEBUG_PAGE_STAGEINFO,        // 3: stageinfo\n    DEBUG_PAGE_EFFECTINFO,       // 4: effectinfo\n    DEBUG_PAGE_ENEMYINFO         // 5: enemyinfo\n};\n\ns64 get_current_clock(void);\ns64 get_clock_difference(UNUSED s64 cycles);\nvoid set_text_array_x_y(s32 xOffset, s32 yOffset);\nvoid print_debug_top_down_objectinfo(const char *str, s32 number);\nvoid print_debug_top_down_mapinfo(const char * str, s32 number);\nvoid print_debug_bottom_up(const char *str, s32 number);\nvoid debug_unknown_level_select_check(void);\nvoid reset_debug_objectinfo(void);\nvoid stub_debug_5(void);\nvoid try_print_debug_mario_object_info(void);\nvoid try_do_mario_debug_object_spawn(void);\nvoid try_print_debug_mario_level_info(void);\n\n#endif // DEBUG_H\n"
  },
  {
    "path": "src/game/debug_course.c",
    "content": "#include \"debug_course.h\"\n\n// This is a seperate file according to Europe/Shindou\n// versions. It is unknown what this file was for.\n\nvoid nop_change_course(void) {\n}\n"
  },
  {
    "path": "src/game/debug_course.h",
    "content": "#ifndef DEBUG_COURSE_H\n#define DEBUG_COURSE_H\n\nvoid nop_change_course(void);\n\n#endif // DEBUG_COURSE_H\n"
  },
  {
    "path": "src/game/decompress.h",
    "content": "#ifndef DECOMPRESS_H\n#define DECOMPRESS_H\n\nvoid decompress(void *mio0, void *dest);\n\n#endif // DECOMPRESS_H\n"
  },
  {
    "path": "src/game/envfx_bubbles.c",
    "content": "#include <ultra64.h>\n\n#include \"sm64.h\"\n#include \"game_init.h\"\n#include \"memory.h\"\n#include \"envfx_snow.h\"\n#include \"envfx_bubbles.h\"\n#include \"engine/surface_collision.h\"\n#include \"engine/math_util.h\"\n#include \"engine/behavior_script.h\"\n#include \"audio/external.h\"\n#include \"textures.h\"\n\n/**\n * This file implements environment effects that are not snow:\n * Flowers (unused), lava bubbles and jet stream/whirlpool bubbles.\n * Refer to 'envfx_snow.c' for more info about environment effects.\n * Note that the term 'bubbles' is used as a collective name for\n * effects in this file even though flowers aren't bubbles. For the\n * sake of concise naming, flowers fall under bubbles.\n */\n\ns16 gEnvFxBubbleConfig[10];\nstatic Gfx *sGfxCursor; // points to end of display list for bubble particles\nstatic s32 sBubbleParticleCount;\nstatic s32 sBubbleParticleMaxCount;\n\nUNUSED s32 D_80330690 = 0;\nUNUSED s32 D_80330694 = 0;\n\n/// Template for a bubble particle triangle\nVtx_t gBubbleTempVtx[3] = {\n    { { 0, 0, 0 }, 0, { 1544, 964 }, { 0xFF, 0xFF, 0xFF, 0xFF } },\n    { { 0, 0, 0 }, 0, { 522, -568 }, { 0xFF, 0xFF, 0xFF, 0xFF } },\n    { { 0, 0, 0 }, 0, { -498, 964 }, { 0xFF, 0xFF, 0xFF, 0xFF } },\n};\n\n/**\n * Check whether the particle with the given index is\n * laterally within distance of point (x, z). Used to\n * kill flower and bubble particles.\n */\ns32 particle_is_laterally_close(s32 index, s32 x, s32 z, s32 distance) {\n    s32 xPos = (gEnvFxBuffer + index)->xPos;\n    s32 zPos = (gEnvFxBuffer + index)->zPos;\n\n    if (sqr(xPos - x) + sqr(zPos - z) > sqr(distance)) {\n        return FALSE;\n    }\n\n    return TRUE;\n}\n\n/**\n * Generate a uniform random number in range [-2000, -1000[ or [1000, 2000[\n * Used to position flower particles\n */\ns32 random_flower_offset(void) {\n    s32 result = random_float() * 2000.0f - 1000.0f;\n    if (result < 0) {\n        result -= 1000;\n    } else {\n        result += 1000;\n    }\n\n    return result;\n}\n\n/**\n * Update flower particles. Flowers are scattered randomly in front of the\n * camera, and can land on any ground\n */\nvoid envfx_update_flower(Vec3s centerPos) {\n    s32 i;\n    struct FloorGeometry *floorGeo; // unused\n    s32 globalTimer = gGlobalTimer;\n\n    s16 centerX = centerPos[0];\n    UNUSED s16 centerY = centerPos[1];\n    s16 centerZ = centerPos[2];\n\n    for (i = 0; i < sBubbleParticleMaxCount; i++) {\n        (gEnvFxBuffer + i)->isAlive = particle_is_laterally_close(i, centerX, centerZ, 3000);\n        if (!(gEnvFxBuffer + i)->isAlive) {\n            (gEnvFxBuffer + i)->xPos = random_flower_offset() + centerX;\n            (gEnvFxBuffer + i)->zPos = random_flower_offset() + centerZ;\n            (gEnvFxBuffer + i)->yPos = find_floor_height_and_data((gEnvFxBuffer + i)->xPos, 10000.0f,\n                                                                  (gEnvFxBuffer + i)->zPos, &floorGeo);\n            (gEnvFxBuffer + i)->isAlive = TRUE;\n            (gEnvFxBuffer + i)->animFrame = random_float() * 5.0f;\n        } else if (!(globalTimer & 3)) {\n            (gEnvFxBuffer + i)->animFrame += 1;\n            if ((gEnvFxBuffer + i)->animFrame > 5) {\n                (gEnvFxBuffer + i)->animFrame = 0;\n            }\n        }\n    }\n}\n\n/**\n * Update the position of a lava bubble to be somewhere around centerPos\n * Uses find_floor to find the height of lava, if no floor or a non-lava\n * floor is found the bubble y is set to -10000, which is why you can see\n * occasional lava bubbles far below the course in Lethal Lava Land.\n * In the second Bowser fight arena, the visual lava is above the lava\n * floor so lava-bubbles are not normally visible, only if you bring the\n * camera below the lava plane.\n */\nvoid envfx_set_lava_bubble_position(s32 index, Vec3s centerPos) {\n    struct Surface *surface;\n    s16 floorY;\n\n    s16 centerX = centerPos[0];\n    s16 centerY = centerPos[1];\n    s16 centerZ = centerPos[2];\n\n    (gEnvFxBuffer + index)->xPos = random_float() * 6000.0f - 3000.0f + centerX;\n    (gEnvFxBuffer + index)->zPos = random_float() * 6000.0f - 3000.0f + centerZ;\n\n    if ((gEnvFxBuffer + index)->xPos > 8000) {\n        (gEnvFxBuffer + index)->xPos = 16000 - (gEnvFxBuffer + index)->xPos;\n    }\n    if ((gEnvFxBuffer + index)->xPos < -8000) {\n        (gEnvFxBuffer + index)->xPos = -16000 - (gEnvFxBuffer + index)->xPos;\n    }\n\n    if ((gEnvFxBuffer + index)->zPos > 8000) {\n        (gEnvFxBuffer + index)->zPos = 16000 - (gEnvFxBuffer + index)->zPos;\n    }\n    if ((gEnvFxBuffer + index)->zPos < -8000) {\n        (gEnvFxBuffer + index)->zPos = -16000 - (gEnvFxBuffer + index)->zPos;\n    }\n\n    floorY =\n        find_floor((gEnvFxBuffer + index)->xPos, centerY + 500, (gEnvFxBuffer + index)->zPos, &surface);\n    if (surface == NULL) {\n        (gEnvFxBuffer + index)->yPos = FLOOR_LOWER_LIMIT_MISC;\n        return;\n    }\n\n    if (surface->type == SURFACE_BURNING) {\n        (gEnvFxBuffer + index)->yPos = floorY;\n    } else {\n        (gEnvFxBuffer + index)->yPos = FLOOR_LOWER_LIMIT_MISC;\n    }\n}\n\n/**\n * Update lava bubble animation and give the bubble a new position if the\n * animation is over.\n */\nvoid envfx_update_lava(Vec3s centerPos) {\n    s32 i;\n    s32 globalTimer = gGlobalTimer;\n    s8 chance;\n\n    UNUSED s16 centerX = centerPos[0];\n    UNUSED s16 centerY = centerPos[1];\n    UNUSED s16 centerZ = centerPos[2];\n\n    for (i = 0; i < sBubbleParticleMaxCount; i++) {\n        if (!(gEnvFxBuffer + i)->isAlive) {\n            envfx_set_lava_bubble_position(i, centerPos);\n            (gEnvFxBuffer + i)->isAlive = TRUE;\n        } else if (!(globalTimer & 1)) {\n            (gEnvFxBuffer + i)->animFrame += 1;\n            if ((gEnvFxBuffer + i)->animFrame > 8) {\n                (gEnvFxBuffer + i)->isAlive = FALSE;\n                (gEnvFxBuffer + i)->animFrame = 0;\n            }\n        }\n    }\n\n    if ((chance = (s32)(random_float() * 16.0f)) == 8) {\n        play_sound(SOUND_GENERAL_QUIET_BUBBLE2, gGlobalSoundSource);\n    }\n}\n\n/**\n * Rotate the input x, y and z around the rotation origin of the whirlpool\n * according to the pitch and yaw of the whirlpool.\n */\nvoid envfx_rotate_around_whirlpool(s32 *x, s32 *y, s32 *z) {\n    s32 vecX = *x - gEnvFxBubbleConfig[ENVFX_STATE_DEST_X];\n    s32 vecY = *y - gEnvFxBubbleConfig[ENVFX_STATE_DEST_Y];\n    s32 vecZ = *z - gEnvFxBubbleConfig[ENVFX_STATE_DEST_Z];\n    f32 cosPitch = coss(gEnvFxBubbleConfig[ENVFX_STATE_PITCH]);\n    f32 sinPitch = sins(gEnvFxBubbleConfig[ENVFX_STATE_PITCH]);\n    f32 cosMYaw = coss(-gEnvFxBubbleConfig[ENVFX_STATE_YAW]);\n    f32 sinMYaw = sins(-gEnvFxBubbleConfig[ENVFX_STATE_YAW]);\n\n    f32 rotatedX = vecX * cosMYaw - sinMYaw * cosPitch * vecY - sinPitch * sinMYaw * vecZ;\n    f32 rotatedY = vecX * sinMYaw + cosPitch * cosMYaw * vecY - sinPitch * cosMYaw * vecZ;\n    f32 rotatedZ = vecY * sinPitch + cosPitch * vecZ;\n\n    *x = gEnvFxBubbleConfig[ENVFX_STATE_DEST_X] + (s32) rotatedX;\n    *y = gEnvFxBubbleConfig[ENVFX_STATE_DEST_Y] + (s32) rotatedY;\n    *z = gEnvFxBubbleConfig[ENVFX_STATE_DEST_Z] + (s32) rotatedZ;\n}\n\n/**\n * Check whether a whirlpool bubble is alive. A bubble respawns when it is too\n * low or close to the center.\n */\ns32 envfx_is_whirlpool_bubble_alive(s32 index) {\n    UNUSED u8 filler[4];\n\n    if ((gEnvFxBuffer + index)->bubbleY < gEnvFxBubbleConfig[ENVFX_STATE_DEST_Y] - 100) {\n        return FALSE;\n    }\n\n    if ((gEnvFxBuffer + index)->angleAndDist[1] < 10) {\n        return FALSE;\n    }\n\n    return TRUE;\n}\n\n/**\n * Update whirlpool particles. Whirlpool particles start high and far from\n * the center and get sucked into the sink in a spiraling motion.\n */\nvoid envfx_update_whirlpool(void) {\n    s32 i;\n\n    for (i = 0; i < sBubbleParticleMaxCount; i++) {\n        (gEnvFxBuffer + i)->isAlive = envfx_is_whirlpool_bubble_alive(i);\n        if (!(gEnvFxBuffer + i)->isAlive) {\n            (gEnvFxBuffer + i)->angleAndDist[1] = random_float() * 1000.0f;\n            (gEnvFxBuffer + i)->angleAndDist[0] = random_float() * 65536.0f;\n            (gEnvFxBuffer + i)->xPos =\n                gEnvFxBubbleConfig[ENVFX_STATE_SRC_X]\n                + sins((gEnvFxBuffer + i)->angleAndDist[0]) * (gEnvFxBuffer + i)->angleAndDist[1];\n            (gEnvFxBuffer + i)->zPos =\n                gEnvFxBubbleConfig[ENVFX_STATE_SRC_Z]\n                + coss((gEnvFxBuffer + i)->angleAndDist[0]) * (gEnvFxBuffer + i)->angleAndDist[1];\n            (gEnvFxBuffer + i)->bubbleY =\n                gEnvFxBubbleConfig[ENVFX_STATE_SRC_Y] + (random_float() * 100.0f - 50.0f);\n            (gEnvFxBuffer + i)->yPos = (i + gEnvFxBuffer)->bubbleY;\n            (gEnvFxBuffer + i)->unusedBubbleVar = 0;\n            (gEnvFxBuffer + i)->isAlive = TRUE;\n\n            envfx_rotate_around_whirlpool(&(gEnvFxBuffer + i)->xPos, &(gEnvFxBuffer + i)->yPos,\n                                          &(gEnvFxBuffer + i)->zPos);\n        } else {\n            (gEnvFxBuffer + i)->angleAndDist[1] -= 40;\n            (gEnvFxBuffer + i)->angleAndDist[0] +=\n                (s16)(3000 - (gEnvFxBuffer + i)->angleAndDist[1] * 2) + 0x400;\n            (gEnvFxBuffer + i)->xPos =\n                gEnvFxBubbleConfig[ENVFX_STATE_SRC_X]\n                + sins((gEnvFxBuffer + i)->angleAndDist[0]) * (gEnvFxBuffer + i)->angleAndDist[1];\n            (gEnvFxBuffer + i)->zPos =\n                gEnvFxBubbleConfig[ENVFX_STATE_SRC_Z]\n                + coss((gEnvFxBuffer + i)->angleAndDist[0]) * (gEnvFxBuffer + i)->angleAndDist[1];\n            (gEnvFxBuffer + i)->bubbleY -= 40 - ((s16)(gEnvFxBuffer + i)->angleAndDist[1] / 100);\n            (gEnvFxBuffer + i)->yPos = (i + gEnvFxBuffer)->bubbleY;\n\n            envfx_rotate_around_whirlpool(&(gEnvFxBuffer + i)->xPos, &(gEnvFxBuffer + i)->yPos,\n                                          &(gEnvFxBuffer + i)->zPos);\n        }\n    }\n}\n\n/**\n * Check whether a jet stream bubble should respawn. Happens if it is laterally\n * 1000 units away from the source or 1500 units above it.\n */\ns32 envfx_is_jestream_bubble_alive(s32 index) {\n    UNUSED u8 filler[4];\n\n    if (!particle_is_laterally_close(index, gEnvFxBubbleConfig[ENVFX_STATE_SRC_X],\n                                     gEnvFxBubbleConfig[ENVFX_STATE_SRC_Z], 1000)\n        || gEnvFxBubbleConfig[ENVFX_STATE_SRC_Y] + 1500 < (gEnvFxBuffer + index)->yPos) {\n        return FALSE;\n    }\n\n    return TRUE;\n}\n\n/**\n * Update the positions of jet stream bubble particles.\n * They move up and outwards.\n */\nvoid envfx_update_jetstream(void) {\n    s32 i;\n\n    for (i = 0; i < sBubbleParticleMaxCount; i++) {\n        (gEnvFxBuffer + i)->isAlive = envfx_is_jestream_bubble_alive(i);\n        if (!(gEnvFxBuffer + i)->isAlive) {\n            (gEnvFxBuffer + i)->angleAndDist[1] = random_float() * 300.0f;\n            (gEnvFxBuffer + i)->angleAndDist[0] = random_u16();\n            (gEnvFxBuffer + i)->xPos =\n                gEnvFxBubbleConfig[ENVFX_STATE_SRC_X]\n                + sins((gEnvFxBuffer + i)->angleAndDist[0]) * (gEnvFxBuffer + i)->angleAndDist[1];\n            (gEnvFxBuffer + i)->zPos =\n                gEnvFxBubbleConfig[ENVFX_STATE_SRC_Z]\n                + coss((gEnvFxBuffer + i)->angleAndDist[0]) * (gEnvFxBuffer + i)->angleAndDist[1];\n            (gEnvFxBuffer + i)->yPos =\n                gEnvFxBubbleConfig[ENVFX_STATE_SRC_Y] + (random_float() * 400.0f - 200.0f);\n        } else {\n            (gEnvFxBuffer + i)->angleAndDist[1] += 10;\n            (gEnvFxBuffer + i)->xPos += sins((gEnvFxBuffer + i)->angleAndDist[0]) * 10.0f;\n            (gEnvFxBuffer + i)->zPos += coss((gEnvFxBuffer + i)->angleAndDist[0]) * 10.0f;\n            (gEnvFxBuffer + i)->yPos -= ((gEnvFxBuffer + i)->angleAndDist[1] / 30) - 50;\n        }\n    }\n}\n\n/**\n * Initialize bubble (or flower) effect by allocating a buffer to store\n * the state of each particle and setting the initial and max count.\n * Analogous to init_snow_particles, but for bubbles.\n */\ns32 envfx_init_bubble(s32 mode) {\n    s32 i;\n\n    switch (mode) {\n        case ENVFX_MODE_NONE:\n            return FALSE;\n\n        case ENVFX_FLOWERS:\n            sBubbleParticleCount = 30;\n            sBubbleParticleMaxCount = 30;\n            break;\n\n        case ENVFX_LAVA_BUBBLES:\n            sBubbleParticleCount = 15;\n            sBubbleParticleMaxCount = 15;\n            break;\n\n        case ENVFX_WHIRLPOOL_BUBBLES:\n            sBubbleParticleCount = 60;\n            break;\n\n        case ENVFX_JETSTREAM_BUBBLES:\n            sBubbleParticleCount = 60;\n            break;\n    }\n\n    gEnvFxBuffer = mem_pool_alloc(gEffectsMemoryPool,\n                                  sBubbleParticleCount * sizeof(struct EnvFxParticle));\n    if (gEnvFxBuffer == NULL) {\n        return FALSE;\n    }\n\n    bzero(gEnvFxBuffer, sBubbleParticleCount * sizeof(struct EnvFxParticle));\n    bzero(gEnvFxBubbleConfig, sizeof(gEnvFxBubbleConfig));\n\n    switch (mode) {\n        case ENVFX_LAVA_BUBBLES:\n            for (i = 0; i < sBubbleParticleCount; i++) {\n                (gEnvFxBuffer + i)->animFrame = random_float() * 7.0f;\n            }\n            break;\n    }\n\n    gEnvFxMode = mode;\n    return TRUE;\n}\n\n/**\n * Update particles depending on mode.\n * Also sets the given vertices to the correct shape for each mode,\n * though they are not being rotated yet.\n */\nvoid envfx_bubbles_update_switch(s32 mode, Vec3s camTo, Vec3s vertex1, Vec3s vertex2, Vec3s vertex3) {\n    switch (mode) {\n        case ENVFX_FLOWERS:\n            envfx_update_flower(camTo);\n            vertex1[0] = 50;  vertex1[1] = 0;  vertex1[2] = 0;\n            vertex2[0] = 0;   vertex2[1] = 75; vertex2[2] = 0;\n            vertex3[0] = -50; vertex3[1] = 0;  vertex3[2] = 0;\n            break;\n\n        case ENVFX_LAVA_BUBBLES:\n            envfx_update_lava(camTo);\n            vertex1[0] = 100;  vertex1[1] = 0;   vertex1[2] = 0;\n            vertex2[0] = 0;    vertex2[1] = 150; vertex2[2] = 0;\n            vertex3[0] = -100; vertex3[1] = 0;   vertex3[2] = 0;\n            break;\n\n        case ENVFX_WHIRLPOOL_BUBBLES:\n            envfx_update_whirlpool();\n            vertex1[0] = 40;  vertex1[1] = 0;  vertex1[2] = 0;\n            vertex2[0] = 0;   vertex2[1] = 60; vertex2[2] = 0;\n            vertex3[0] = -40; vertex3[1] = 0;  vertex3[2] = 0;\n            break;\n\n        case ENVFX_JETSTREAM_BUBBLES:\n            envfx_update_jetstream();\n            vertex1[0] = 40;  vertex1[1] = 0;  vertex1[2] = 0;\n            vertex2[0] = 0;   vertex2[1] = 60; vertex2[2] = 0;\n            vertex3[0] = -40; vertex3[1] = 0;  vertex3[2] = 0;\n            break;\n    }\n}\n\n/**\n * Append 15 vertices to 'gfx', which is enough for 5 bubbles starting at\n * 'index'. The 3 input vertices represent the rotated triangle around (0,0,0)\n * that will be translated to bubble positions to draw the bubble image\n */\nvoid append_bubble_vertex_buffer(Gfx *gfx, s32 index, Vec3s vertex1, Vec3s vertex2, Vec3s vertex3,\n                                 Vtx *template) {\n    s32 i = 0;\n    Vtx *vertBuf = alloc_display_list(15 * sizeof(Vtx));\n\n    if (vertBuf == NULL) {\n        return;\n    }\n\n    for (i = 0; i < 15; i += 3) {\n        vertBuf[i] = template[0];\n        (vertBuf + i)->v.ob[0] = (gEnvFxBuffer + (index + i / 3))->xPos + vertex1[0];\n        (vertBuf + i)->v.ob[1] = (gEnvFxBuffer + (index + i / 3))->yPos + vertex1[1];\n        (vertBuf + i)->v.ob[2] = (gEnvFxBuffer + (index + i / 3))->zPos + vertex1[2];\n\n        vertBuf[i + 1] = template[1];\n        (vertBuf + i + 1)->v.ob[0] = (gEnvFxBuffer + (index + i / 3))->xPos + vertex2[0];\n        (vertBuf + i + 1)->v.ob[1] = (gEnvFxBuffer + (index + i / 3))->yPos + vertex2[1];\n        (vertBuf + i + 1)->v.ob[2] = (gEnvFxBuffer + (index + i / 3))->zPos + vertex2[2];\n\n        vertBuf[i + 2] = template[2];\n        (vertBuf + i + 2)->v.ob[0] = (gEnvFxBuffer + (index + i / 3))->xPos + vertex3[0];\n        (vertBuf + i + 2)->v.ob[1] = (gEnvFxBuffer + (index + i / 3))->yPos + vertex3[1];\n        (vertBuf + i + 2)->v.ob[2] = (gEnvFxBuffer + (index + i / 3))->zPos + vertex3[2];\n    }\n\n    gSPVertex(gfx, VIRTUAL_TO_PHYSICAL(vertBuf), 15, 0);\n}\n\n/**\n * Appends to the enfvx display list a command setting the appropriate texture\n * for a specific particle. The display list is not passed as parameter but uses\n * the global sGfxCursor instead.\n */\nvoid envfx_set_bubble_texture(s32 mode, s16 index) {\n    void **imageArr;\n    s16 frame = (gEnvFxBuffer + index)->animFrame;\n\n    switch (mode) {\n        case ENVFX_FLOWERS:\n            imageArr = segmented_to_virtual(&flower_bubbles_textures_ptr_0B002008);\n            frame = (gEnvFxBuffer + index)->animFrame;\n            break;\n\n        case ENVFX_LAVA_BUBBLES:\n            imageArr = segmented_to_virtual(&lava_bubble_ptr_0B006020);\n            frame = (gEnvFxBuffer + index)->animFrame;\n            break;\n\n        case ENVFX_WHIRLPOOL_BUBBLES:\n        case ENVFX_JETSTREAM_BUBBLES:\n            imageArr = segmented_to_virtual(&bubble_ptr_0B006848);\n            frame = 0;\n            break;\n    }\n\n    gDPSetTextureImage(sGfxCursor++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, *(imageArr + frame));\n    gSPDisplayList(sGfxCursor++, &tiny_bubble_dl_0B006D68);\n}\n\n/**\n * Updates the bubble particle positions, then generates and returns a display\n * list drawing them.\n */\nGfx *envfx_update_bubble_particles(s32 mode, UNUSED Vec3s marioPos, Vec3s camFrom, Vec3s camTo) {\n    s32 i;\n    s16 radius, pitch, yaw;\n\n    Vec3s vertex1;\n    Vec3s vertex2;\n    Vec3s vertex3;\n\n    Gfx *gfxStart = alloc_display_list(((sBubbleParticleMaxCount / 5) * 10 + sBubbleParticleMaxCount + 3)\n                                       * sizeof(Gfx));\n    if (gfxStart == NULL) {\n        return NULL;\n    }\n\n    sGfxCursor = gfxStart;\n\n    orbit_from_positions(camTo, camFrom, &radius, &pitch, &yaw);\n    envfx_bubbles_update_switch(mode, camTo, vertex1, vertex2, vertex3);\n    rotate_triangle_vertices(vertex1, vertex2, vertex3, pitch, yaw);\n\n    gSPDisplayList(sGfxCursor++, &tiny_bubble_dl_0B006D38);\n\n    for (i = 0; i < sBubbleParticleMaxCount; i += 5) {\n        gDPPipeSync(sGfxCursor++);\n        envfx_set_bubble_texture(mode, i);\n        append_bubble_vertex_buffer(sGfxCursor++, i, vertex1, vertex2, vertex3, (Vtx *) gBubbleTempVtx);\n        gSP1Triangle(sGfxCursor++, 0, 1, 2, 0);\n        gSP1Triangle(sGfxCursor++, 3, 4, 5, 0);\n        gSP1Triangle(sGfxCursor++, 6, 7, 8, 0);\n        gSP1Triangle(sGfxCursor++, 9, 10, 11, 0);\n        gSP1Triangle(sGfxCursor++, 12, 13, 14, 0);\n    }\n\n    gSPDisplayList(sGfxCursor++, &tiny_bubble_dl_0B006AB0);\n    gSPEndDisplayList(sGfxCursor++);\n\n    return gfxStart;\n}\n\n/**\n * Set the maximum particle count from the gEnvFxBubbleConfig variable,\n * which is set by the whirlpool or jet stream behavior.\n */\nvoid envfx_set_max_bubble_particles(s32 mode) {\n    switch (mode) {\n        case ENVFX_WHIRLPOOL_BUBBLES:\n            sBubbleParticleMaxCount = gEnvFxBubbleConfig[ENVFX_STATE_PARTICLECOUNT];\n            break;\n        case ENVFX_JETSTREAM_BUBBLES:\n            sBubbleParticleMaxCount = gEnvFxBubbleConfig[ENVFX_STATE_PARTICLECOUNT];\n            break;\n    }\n}\n\n/**\n * Update bubble-like environment effects. Assumes the mode is larger than 10,\n * lower modes are snow effects which are updated in a different function.\n * Returns a display list drawing the particles.\n */\nGfx *envfx_update_bubbles(s32 mode, Vec3s marioPos, Vec3s camTo, Vec3s camFrom) {\n    Gfx *gfx;\n\n    if (gEnvFxMode == ENVFX_MODE_NONE && !envfx_init_bubble(mode)) {\n        return NULL;\n    }\n\n    envfx_set_max_bubble_particles(mode);\n\n    if (sBubbleParticleMaxCount == 0) {\n        return NULL;\n    }\n\n    switch (mode) {\n        case ENVFX_FLOWERS:\n            gfx = envfx_update_bubble_particles(ENVFX_FLOWERS, marioPos, camFrom, camTo);\n            break;\n\n        case ENVFX_LAVA_BUBBLES:\n            gfx = envfx_update_bubble_particles(ENVFX_LAVA_BUBBLES, marioPos, camFrom, camTo);\n            break;\n\n        case ENVFX_WHIRLPOOL_BUBBLES:\n            gfx = envfx_update_bubble_particles(ENVFX_WHIRLPOOL_BUBBLES, marioPos, camFrom, camTo);\n            break;\n\n        case ENVFX_JETSTREAM_BUBBLES:\n            gfx = envfx_update_bubble_particles(ENVFX_JETSTREAM_BUBBLES, marioPos, camFrom, camTo);\n            break;\n\n        default:\n            return NULL;\n    }\n\n    return gfx;\n}\n"
  },
  {
    "path": "src/game/envfx_bubbles.h",
    "content": "#ifndef ENVFX_BUBBLES_H\n#define ENVFX_BUBBLES_H\n\n#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\n#define ENVFX_STATE_UNUSED          0\n#define ENVFX_STATE_SRC_X           1 // whirlpool / jetsream bubble source position\n#define ENVFX_STATE_SRC_Y           2\n#define ENVFX_STATE_SRC_Z           3\n#define ENVFX_STATE_DEST_X          4 // only for whirlpool, where bubbles get sucked in\n#define ENVFX_STATE_DEST_Y          5\n#define ENVFX_STATE_DEST_Z          6\n#define ENVFX_STATE_PARTICLECOUNT   7\n#define ENVFX_STATE_PITCH           8 // whirlpool can rotate around DEST point\n#define ENVFX_STATE_YAW             9\n\n// Used to communicate from whirlpool behavior to envfx\nextern s16 gEnvFxBubbleConfig[10];\nGfx *envfx_update_bubbles(s32 mode, Vec3s marioPos, Vec3s camTo, Vec3s camFrom);\n\n#endif // ENVFX_BUBBLES_H\n"
  },
  {
    "path": "src/game/envfx_snow.c",
    "content": "#include <ultra64.h>\n\n#include \"sm64.h\"\n#include \"dialog_ids.h\"\n#include \"game_init.h\"\n#include \"memory.h\"\n#include \"ingame_menu.h\"\n#include \"envfx_snow.h\"\n#include \"envfx_bubbles.h\"\n#include \"engine/surface_collision.h\"\n#include \"engine/math_util.h\"\n#include \"engine/behavior_script.h\"\n#include \"audio/external.h\"\n#include \"obj_behaviors.h\"\n\n/**\n * This file contains the function that handles 'environment effects',\n * which are particle effects related to the level type that, unlike\n * object-based particle effects, are rendered more efficiently by manually\n * generating display lists instead of drawing each particle separately.\n * This file implements snow effects, while in 'envfx_bubbles.c' the\n * implementation for flowers (unused), lava bubbles and jet stream bubbles\n * can be found.\n * The main entry point for envfx is at the bottom of this file, which is\n * called from geo_envfx_main in level_geo.c\n */\n\n// Might be duplicate\nstruct SnowFlakeVertex {\n    s16 x;\n    s16 y;\n    s16 z;\n};\n\nstruct EnvFxParticle *gEnvFxBuffer;\nVec3i gSnowCylinderLastPos;\ns16 gSnowParticleCount;\ns16 gSnowParticleMaxCount;\n\n/* DATA */\ns8 gEnvFxMode = ENVFX_MODE_NONE;\nUNUSED s32 D_80330644 = 0;\n\n/// Template for a snow particle triangle\nVtx gSnowTempVtx[3] = { { { { -5, 5, 0 }, 0, { 0, 0 }, { 0x7F, 0x7F, 0x7F, 0xFF } } },\n                        { { { -5, -5, 0 }, 0, { 0, 960 }, { 0x7F, 0x7F, 0x7F, 0xFF } } },\n                        { { { 5, 5, 0 }, 0, { 960, 0 }, { 0x7F, 0x7F, 0x7F, 0xFF } } } };\n\n// Change these to make snowflakes smaller or bigger\nstruct SnowFlakeVertex gSnowFlakeVertex1 = { -5, 5, 0 };\nstruct SnowFlakeVertex gSnowFlakeVertex2 = { -5, -5, 0 };\nstruct SnowFlakeVertex gSnowFlakeVertex3 = { 5, 5, 0 };\n\nextern void *tiny_bubble_dl_0B006AB0;\nextern void *tiny_bubble_dl_0B006A50;\nextern void *tiny_bubble_dl_0B006CD8;\n\n/**\n * Initialize snow particles by allocating a buffer for storing their state\n * and setting a start amount.\n */\ns32 envfx_init_snow(s32 mode) {\n    switch (mode) {\n        case ENVFX_MODE_NONE:\n            return FALSE;\n\n        case ENVFX_SNOW_NORMAL:\n            gSnowParticleMaxCount = 140;\n            gSnowParticleCount = 5;\n            break;\n\n        case ENVFX_SNOW_WATER:\n            gSnowParticleMaxCount = 30;\n            gSnowParticleCount = 30;\n            break;\n\n        case ENVFX_SNOW_BLIZZARD:\n            gSnowParticleMaxCount = 140;\n            gSnowParticleCount = 140;\n            break;\n    }\n\n    gEnvFxBuffer = mem_pool_alloc(gEffectsMemoryPool,\n                                  gSnowParticleMaxCount * sizeof(struct EnvFxParticle));\n    if (gEnvFxBuffer == NULL) {\n        return FALSE;\n    }\n\n    bzero(gEnvFxBuffer, gSnowParticleMaxCount * sizeof(struct EnvFxParticle));\n\n    gEnvFxMode = mode;\n    return TRUE;\n}\n\n/**\n * Update the amount of snow particles on screen.\n * Normal snow starts with few flakes and slowly increases to the maximum.\n * For water snow, this is dependent on how deep underwater you are.\n * Blizzard snows starts at the maximum amount and doesn't change.\n */\nvoid envfx_update_snowflake_count(s32 mode, Vec3s marioPos) {\n    s32 globalTimer = gGlobalTimer;\n    f32 waterLevel;\n\n    switch (mode) {\n        case ENVFX_SNOW_NORMAL:\n            if (gSnowParticleMaxCount > gSnowParticleCount) {\n                if (!(globalTimer & 63)) {\n                    gSnowParticleCount += 5;\n                }\n            }\n            break;\n\n        case ENVFX_SNOW_WATER:\n            waterLevel = find_water_level(marioPos[0], marioPos[2]);\n\n            gSnowParticleCount =\n                (((s32)((waterLevel - 400.0f - (f32) marioPos[1]) * 0.001) << 0x10) >> 0x10) * 5;\n\n            if (gSnowParticleCount < 0) {\n                gSnowParticleCount = 0;\n            }\n\n            if (gSnowParticleCount > gSnowParticleMaxCount) {\n                gSnowParticleCount = gSnowParticleMaxCount;\n            }\n\n            break;\n\n        case ENVFX_SNOW_BLIZZARD:\n            break;\n    }\n}\n\n/**\n * Deallocate the buffer storing snow particles and set the environment effect\n * to none.\n */\nvoid envfx_cleanup_snow(void *snowParticleArray) {\n    if (gEnvFxMode != ENVFX_MODE_NONE) {\n        if (snowParticleArray) {\n            mem_pool_free(gEffectsMemoryPool, snowParticleArray);\n        }\n        gEnvFxMode = ENVFX_MODE_NONE;\n    }\n}\n\n/**\n * Given two points, return the vector from one to the other represented\n * as Euler angles and a length\n */\nvoid orbit_from_positions(Vec3s from, Vec3s to, s16 *radius, s16 *pitch, s16 *yaw) {\n    f32 dx = to[0] - from[0];\n    f32 dy = to[1] - from[1];\n    f32 dz = to[2] - from[2];\n\n    *radius = (s16) sqrtf(dx * dx + dy * dy + dz * dz);\n    *pitch = atan2s(sqrtf(dx * dx + dz * dz), dy);\n    *yaw = atan2s(dz, dx);\n}\n\n/**\n * Calculate the 'result' vector as the position of the 'origin' vector\n * with a vector added represented by radius, pitch and yaw.\n */\nvoid pos_from_orbit(Vec3s origin, Vec3s result, s16 radius, s16 pitch, s16 yaw) {\n    result[0] = origin[0] + radius * coss(pitch) * sins(yaw);\n    result[1] = origin[1] + radius * sins(pitch);\n    result[2] = origin[2] + radius * coss(pitch) * coss(yaw);\n}\n\n/**\n * Check whether the snowflake with the given index is inside view, where\n * 'view' is a cylinder of radius 300 and height 400 centered at the input\n * x, y and z.\n */\ns32 envfx_is_snowflake_alive(s32 index, s32 snowCylinderX, s32 snowCylinderY, s32 snowCylinderZ) {\n    s32 x = (gEnvFxBuffer + index)->xPos;\n    s32 y = (gEnvFxBuffer + index)->yPos;\n    s32 z = (gEnvFxBuffer + index)->zPos;\n\n    if (sqr(x - snowCylinderX) + sqr(z - snowCylinderZ) > sqr(300)) {\n        return FALSE;\n    }\n\n    if ((y < snowCylinderY - 201) || (snowCylinderY + 201 < y)) {\n        return FALSE;\n    }\n\n    return TRUE;\n}\n\n/**\n * Update the position of each snowflake. Snowflakes wiggle by having a\n * random value added to their position each frame. If snowflakes get out\n * of view (where view = a small cylinder in front of the camera) their\n * position is reset to somewhere in view.\n * Since the cylinder of snow is so close to the camera, snow flakes would\n * move out of view very quickly when the camera moves. To mitigate this,\n * a portion of the difference between the previous and current snowCylinder\n * position is added to snowflakes to keep them in view for longer. That's\n * why the snow looks a bit off in 3d, it's a lot closer than you'd think\n * but appears to be further by means of hacky position updates. This might\n * have been done because larger, further away snowflakes are occluded easily\n * by level geometry, wasting many particles.\n */\nvoid envfx_update_snow_normal(s32 snowCylinderX, s32 snowCylinderY, s32 snowCylinderZ) {\n    s32 i;\n    s32 deltaX = snowCylinderX - gSnowCylinderLastPos[0];\n    s32 deltaY = snowCylinderY - gSnowCylinderLastPos[1];\n    s32 deltaZ = snowCylinderZ - gSnowCylinderLastPos[2];\n\n    for (i = 0; i < gSnowParticleCount; i++) {\n        (gEnvFxBuffer + i)->isAlive =\n            envfx_is_snowflake_alive(i, snowCylinderX, snowCylinderY, snowCylinderZ);\n        if (!(gEnvFxBuffer + i)->isAlive) {\n            (gEnvFxBuffer + i)->xPos =\n                400.0f * random_float() - 200.0f + snowCylinderX + (s16)(deltaX * 2);\n            (gEnvFxBuffer + i)->zPos =\n                400.0f * random_float() - 200.0f + snowCylinderZ + (s16)(deltaZ * 2);\n            (gEnvFxBuffer + i)->yPos = 200.0f * random_float() + snowCylinderY;\n            (gEnvFxBuffer + i)->isAlive = TRUE;\n        } else {\n            (gEnvFxBuffer + i)->xPos += random_float() * 2 - 1.0f + (s16)(deltaX / 1.2);\n            (gEnvFxBuffer + i)->yPos -= 2 -(s16)(deltaY * 0.8);\n            (gEnvFxBuffer + i)->zPos += random_float() * 2 - 1.0f + (s16)(deltaZ / 1.2);\n        }\n    }\n\n    gSnowCylinderLastPos[0] = snowCylinderX;\n    gSnowCylinderLastPos[1] = snowCylinderY;\n    gSnowCylinderLastPos[2] = snowCylinderZ;\n}\n\n/**\n * Unused function. Basically a copy-paste of envfx_update_snow_normal,\n * but an extra 20 units is added to each snowflake x and snowflakes can\n * respawn in y-range [-200, 200] instead of [0, 200] relative to snowCylinderY\n * They also fall a bit faster (with vertical speed -5 instead of -2).\n */\nvoid envfx_update_snow_blizzard(s32 snowCylinderX, s32 snowCylinderY, s32 snowCylinderZ) {\n    s32 i;\n    s32 deltaX = snowCylinderX - gSnowCylinderLastPos[0];\n    s32 deltaY = snowCylinderY - gSnowCylinderLastPos[1];\n    s32 deltaZ = snowCylinderZ - gSnowCylinderLastPos[2];\n\n    for (i = 0; i < gSnowParticleCount; i++) {\n        (gEnvFxBuffer + i)->isAlive =\n            envfx_is_snowflake_alive(i, snowCylinderX, snowCylinderY, snowCylinderZ);\n        if (!(gEnvFxBuffer + i)->isAlive) {\n            (gEnvFxBuffer + i)->xPos =\n                400.0f * random_float() - 200.0f + snowCylinderX + (s16)(deltaX * 2);\n            (gEnvFxBuffer + i)->zPos =\n                400.0f * random_float() - 200.0f + snowCylinderZ + (s16)(deltaZ * 2);\n            (gEnvFxBuffer + i)->yPos = 400.0f * random_float() - 200.0f + snowCylinderY;\n            (gEnvFxBuffer + i)->isAlive = TRUE;\n        } else {\n            (gEnvFxBuffer + i)->xPos += random_float() * 2 - 1.0f + (s16)(deltaX / 1.2) + 20.0f;\n            (gEnvFxBuffer + i)->yPos -= 5 -(s16)(deltaY * 0.8);\n            (gEnvFxBuffer + i)->zPos += random_float() * 2 - 1.0f + (s16)(deltaZ / 1.2);\n        }\n    }\n\n    gSnowCylinderLastPos[0] = snowCylinderX;\n    gSnowCylinderLastPos[1] = snowCylinderY;\n    gSnowCylinderLastPos[2] = snowCylinderZ;\n}\n\n/*! Unused function. Checks whether a position is laterally within 3000 units\n *  to the point (x: 3380, z: -520). Considering there is an unused blizzard\n *  snow mode, this could have been used to check whether Mario is in a\n *  'blizzard area'. In Cool, Cool Mountain and Snowman's Land the area lies\n *  near the starting point and doesn't seem meaningful. Notably, the point is\n *  close to the entrance of SL, so maybe there were plans for an extra hint to\n *  find it. The radius of 3000 units is quite large for that though, covering\n *  more than half of the mirror room.\n */\nUNUSED static s32 is_in_mystery_snow_area(s32 x, UNUSED s32 y, s32 z) {\n    if (sqr(x - 3380) + sqr(z + 520) < sqr(3000)) {\n        return TRUE;\n    }\n    return FALSE;\n}\n\n/**\n * Update the position of underwater snow particles. Since they are stationary,\n * they merely jump back into view when they are out of view.\n */\nvoid envfx_update_snow_water(s32 snowCylinderX, s32 snowCylinderY, s32 snowCylinderZ) {\n    s32 i;\n\n    for (i = 0; i < gSnowParticleCount; i++) {\n        (gEnvFxBuffer + i)->isAlive =\n            envfx_is_snowflake_alive(i, snowCylinderX, snowCylinderY, snowCylinderZ);\n        if (!(gEnvFxBuffer + i)->isAlive) {\n            (gEnvFxBuffer + i)->xPos = 400.0f * random_float() - 200.0f + snowCylinderX;\n            (gEnvFxBuffer + i)->zPos = 400.0f * random_float() - 200.0f + snowCylinderZ;\n            (gEnvFxBuffer + i)->yPos = 400.0f * random_float() - 200.0f + snowCylinderY;\n            (gEnvFxBuffer + i)->isAlive = TRUE;\n        }\n    }\n}\n\n/**\n * Rotates the input vertices according to the give pitch and yaw. This\n * is needed for billboarding of particles.\n */\nvoid rotate_triangle_vertices(Vec3s vertex1, Vec3s vertex2, Vec3s vertex3, s16 pitch, s16 yaw) {\n    f32 cosPitch = coss(pitch);\n    f32 sinPitch = sins(pitch);\n    f32 cosMYaw = coss(-yaw);\n    f32 sinMYaw = sins(-yaw);\n\n    Vec3f v1, v2, v3;\n\n    v1[0] = vertex1[0];\n    v1[1] = vertex1[1];\n    v1[2] = vertex1[2];\n\n    v2[0] = vertex2[0];\n    v2[1] = vertex2[1];\n    v2[2] = vertex2[2];\n\n    v3[0] = vertex3[0];\n    v3[1] = vertex3[1];\n    v3[2] = vertex3[2];\n\n    vertex1[0] = v1[0] * cosMYaw + v1[1] * (sinPitch * sinMYaw) + v1[2] * (-sinMYaw * cosPitch);\n    vertex1[1] = v1[1] * cosPitch + v1[2] * sinPitch;\n    vertex1[2] = v1[0] * sinMYaw + v1[1] * (-sinPitch * cosMYaw) + v1[2] * (cosPitch * cosMYaw);\n\n    vertex2[0] = v2[0] * cosMYaw + v2[1] * (sinPitch * sinMYaw) + v2[2] * (-sinMYaw * cosPitch);\n    vertex2[1] = v2[1] * cosPitch + v2[2] * sinPitch;\n    vertex2[2] = v2[0] * sinMYaw + v2[1] * (-sinPitch * cosMYaw) + v2[2] * (cosPitch * cosMYaw);\n\n    vertex3[0] = v3[0] * cosMYaw + v3[1] * (sinPitch * sinMYaw) + v3[2] * (-sinMYaw * cosPitch);\n    vertex3[1] = v3[1] * cosPitch + v3[2] * sinPitch;\n    vertex3[2] = v3[0] * sinMYaw + v3[1] * (-sinPitch * cosMYaw) + v3[2] * (cosPitch * cosMYaw);\n}\n\n/**\n * Append 15 vertices to 'gfx', which is enough for 5 snowflakes starting at\n * 'index' in the buffer. The 3 input vertices represent the rotated triangle\n * around (0,0,0) that will be translated to snowflake positions to draw the\n * snowflake image.\n */\nvoid append_snowflake_vertex_buffer(Gfx *gfx, s32 index, Vec3s vertex1, Vec3s vertex2, Vec3s vertex3) {\n    s32 i = 0;\n    Vtx *vertBuf = (Vtx *) alloc_display_list(15 * sizeof(Vtx));\n\n    if (vertBuf == NULL) {\n        return;\n    }\n\n    for (i = 0; i < 15; i += 3) {\n        vertBuf[i] = gSnowTempVtx[0];\n        (vertBuf + i)->v.ob[0] = (gEnvFxBuffer + (index + i / 3))->xPos + vertex1[0];\n        (vertBuf + i)->v.ob[1] = (gEnvFxBuffer + (index + i / 3))->yPos + vertex1[1];\n        (vertBuf + i)->v.ob[2] = (gEnvFxBuffer + (index + i / 3))->zPos + vertex1[2];\n\n        vertBuf[i + 1] = gSnowTempVtx[1];\n        (vertBuf + i + 1)->v.ob[0] = (gEnvFxBuffer + (index + i / 3))->xPos + vertex2[0];\n        (vertBuf + i + 1)->v.ob[1] = (gEnvFxBuffer + (index + i / 3))->yPos + vertex2[1];\n        (vertBuf + i + 1)->v.ob[2] = (gEnvFxBuffer + (index + i / 3))->zPos + vertex2[2];\n\n        vertBuf[i + 2] = gSnowTempVtx[2];\n        (vertBuf + i + 2)->v.ob[0] = (gEnvFxBuffer + (index + i / 3))->xPos + vertex3[0];\n        (vertBuf + i + 2)->v.ob[1] = (gEnvFxBuffer + (index + i / 3))->yPos + vertex3[1];\n        (vertBuf + i + 2)->v.ob[2] = (gEnvFxBuffer + (index + i / 3))->zPos + vertex3[2];\n    }\n\n    gSPVertex(gfx, VIRTUAL_TO_PHYSICAL(vertBuf), 15, 0);\n}\n\n/**\n * Updates positions of snow particles and returns a pointer to a display list\n * drawing all snowflakes.\n */\nGfx *envfx_update_snow(s32 snowMode, Vec3s marioPos, Vec3s camFrom, Vec3s camTo) {\n    s32 i;\n    s16 radius, pitch, yaw;\n    Vec3s snowCylinderPos;\n    struct SnowFlakeVertex vertex1, vertex2, vertex3;\n    Gfx *gfxStart;\n    Gfx *gfx;\n\n    vertex1 = gSnowFlakeVertex1;\n    vertex2 = gSnowFlakeVertex2;\n    vertex3 = gSnowFlakeVertex3;\n\n    gfxStart = (Gfx *) alloc_display_list((gSnowParticleCount * 6 + 3) * sizeof(Gfx));\n    gfx = gfxStart;\n\n    if (gfxStart == NULL) {\n        return NULL;\n    }\n\n    envfx_update_snowflake_count(snowMode, marioPos);\n\n    // Note: to and from are inverted here, so the resulting vector goes towards the camera\n    orbit_from_positions(camTo, camFrom, &radius, &pitch, &yaw);\n\n    switch (snowMode) {\n        case ENVFX_SNOW_NORMAL:\n            // ensure the snow cylinder is no further than 250 units in front\n            // of the camera, and no closer than 1 unit.\n            if (radius > 250) {\n                radius -= 250;\n            } else {\n                radius = 1;\n            }\n\n            pos_from_orbit(camTo, snowCylinderPos, radius, pitch, yaw);\n            envfx_update_snow_normal(snowCylinderPos[0], snowCylinderPos[1], snowCylinderPos[2]);\n            break;\n\n        case ENVFX_SNOW_WATER:\n            if (radius > 500) {\n                radius -= 500;\n            } else {\n                radius = 1;\n            }\n\n            pos_from_orbit(camTo, snowCylinderPos, radius, pitch, yaw);\n            envfx_update_snow_water(snowCylinderPos[0], snowCylinderPos[1], snowCylinderPos[2]);\n            break;\n        case ENVFX_SNOW_BLIZZARD:\n            if (radius > 250) {\n                radius -= 250;\n            } else {\n                radius = 1;\n            }\n\n            pos_from_orbit(camTo, snowCylinderPos, radius, pitch, yaw);\n            envfx_update_snow_blizzard(snowCylinderPos[0], snowCylinderPos[1], snowCylinderPos[2]);\n            break;\n    }\n\n    rotate_triangle_vertices((s16 *) &vertex1, (s16 *) &vertex2, (s16 *) &vertex3, pitch, yaw);\n\n    if (snowMode == ENVFX_SNOW_NORMAL || snowMode == ENVFX_SNOW_BLIZZARD) {\n        gSPDisplayList(gfx++, &tiny_bubble_dl_0B006A50); // snowflake with gray edge\n    } else if (snowMode == ENVFX_SNOW_WATER) {\n        gSPDisplayList(gfx++, &tiny_bubble_dl_0B006CD8); // snowflake with blue edge\n    }\n\n    for (i = 0; i < gSnowParticleCount; i += 5) {\n        append_snowflake_vertex_buffer(gfx++, i, (s16 *) &vertex1, (s16 *) &vertex2, (s16 *) &vertex3);\n\n        gSP1Triangle(gfx++, 0, 1, 2, 0);\n        gSP1Triangle(gfx++, 3, 4, 5, 0);\n        gSP1Triangle(gfx++, 6, 7, 8, 0);\n        gSP1Triangle(gfx++, 9, 10, 11, 0);\n        gSP1Triangle(gfx++, 12, 13, 14, 0);\n    }\n\n    gSPDisplayList(gfx++, &tiny_bubble_dl_0B006AB0) gSPEndDisplayList(gfx++);\n\n    return gfxStart;\n}\n\n/**\n * Updates the environment effects (snow, flowers, bubbles)\n * and returns a display list drawing them.\n */\nGfx *envfx_update_particles(s32 mode, Vec3s marioPos, Vec3s camTo, Vec3s camFrom) {\n    Gfx *gfx;\n\n    if (get_dialog_id() != DIALOG_NONE) {\n        return NULL;\n    }\n\n    if (gEnvFxMode != ENVFX_MODE_NONE && gEnvFxMode != mode) {\n        mode = ENVFX_MODE_NONE;\n    }\n\n    if (mode >= ENVFX_BUBBLE_START) {\n        gfx = envfx_update_bubbles(mode, marioPos, camTo, camFrom);\n        return gfx;\n    }\n\n    if (gEnvFxMode == ENVFX_MODE_NONE && !envfx_init_snow(mode)) {\n        return NULL;\n    }\n\n    switch (mode) {\n        case ENVFX_MODE_NONE:\n            envfx_cleanup_snow(gEnvFxBuffer);\n            return NULL;\n\n        case ENVFX_SNOW_NORMAL:\n            gfx = envfx_update_snow(1, marioPos, camFrom, camTo);\n            break;\n\n        case ENVFX_SNOW_WATER:\n            gfx = envfx_update_snow(2, marioPos, camFrom, camTo);\n            break;\n\n        case ENVFX_SNOW_BLIZZARD:\n            gfx = envfx_update_snow(3, marioPos, camFrom, camTo);\n            break;\n\n        default:\n            return NULL;\n    }\n\n    return gfx;\n}\n"
  },
  {
    "path": "src/game/envfx_snow.h",
    "content": "#ifndef ENVFX_SNOW_H\n#define ENVFX_SNOW_H\n\n#include <PR/ultratypes.h>\n#include \"types.h\"\n\n#define ENVFX_MODE_NONE     0  // no effects\n#define ENVFX_SNOW_NORMAL   1  // CCM, SL\n#define ENVFX_SNOW_WATER    2  // Secret Aquarium, Sunken Ship\n#define ENVFX_SNOW_BLIZZARD 3  // unused\n\n#define ENVFX_BUBBLE_START      10 // Separates snow effects and flower/bubble effects\n\n#define ENVFX_FLOWERS           11 // unused\n#define ENVFX_LAVA_BUBBLES      12 // LLL, BitFS, Bowser 2\n#define ENVFX_WHIRLPOOL_BUBBLES 13 // DDD\n#define ENVFX_JETSTREAM_BUBBLES 14 // JRB, DDD (submarine area)\n\nstruct EnvFxParticle {\n    s8 isAlive;\n    s16 animFrame; // lava bubbles and flowers have frame animations\n    s32 xPos;\n    s32 yPos;\n    s32 zPos;\n    s32 angleAndDist[2]; // for whirpools, [0] = angle from center, [1] = distance from center\n    s32 unusedBubbleVar; // set to zero for bubbles when respawning, never used elsewhere\n    s32 bubbleY; // for Bubbles, yPos is always set to this\n    u8 filler[24];\n};\n\nextern s8 gEnvFxMode;\nextern UNUSED s32 D_80330644;\n\nextern struct EnvFxParticle *gEnvFxBuffer;\nextern Vec3i gSnowCylinderLastPos;\nextern s16 gSnowParticleCount;\n\nGfx *envfx_update_particles(s32 mode, Vec3s marioPos, Vec3s camTo, Vec3s camFrom);\nvoid orbit_from_positions(Vec3s from, Vec3s to, s16 *radius, s16 *pitch, s16 *yaw);\nvoid rotate_triangle_vertices(Vec3s vertex1, Vec3s vertex2, Vec3s vertex3, s16 pitch, s16 yaw);\n\n#endif // ENVFX_SNOW_H\n"
  },
  {
    "path": "src/game/game_init.c",
    "content": "#include <ultra64.h>\n\n#include \"sm64.h\"\n#include \"gfx_dimensions.h\"\n#include \"audio/external.h\"\n#include \"buffers/buffers.h\"\n#include \"buffers/gfx_output_buffer.h\"\n#include \"buffers/framebuffers.h\"\n#include \"buffers/zbuffer.h\"\n#include \"engine/level_script.h\"\n#include \"game_init.h\"\n#include \"main.h\"\n#include \"memory.h\"\n#include \"profiler.h\"\n#include \"save_file.h\"\n#include \"seq_ids.h\"\n#include \"sound_init.h\"\n#include \"print.h\"\n#include \"segment2.h\"\n#include \"segment_symbols.h\"\n#include \"rumble_init.h\"\n\n// First 3 controller slots\nstruct Controller gControllers[3];\n\n// Gfx handlers\nstruct SPTask *gGfxSPTask;\nGfx *gDisplayListHead;\nu8 *gGfxPoolEnd;\nstruct GfxPool *gGfxPool;\n\n// OS Controllers\nOSContStatus gControllerStatuses[4];\nOSContPad gControllerPads[4];\nu8 gControllerBits;\ns8 gEepromProbe; // Save Data Probe\n\n// OS Messages\nOSMesgQueue gGameVblankQueue;\nOSMesgQueue gGfxVblankQueue;\nOSMesg gGameMesgBuf[1];\nOSMesg gGfxMesgBuf[1];\n\n// Vblank Handler\nstruct VblankHandler gGameVblankHandler;\n\n// Buffers\nuintptr_t gPhysicalFramebuffers[3];\nuintptr_t gPhysicalZBuffer;\n\n// Mario Anims and Demo allocation\nvoid *gMarioAnimsMemAlloc;\nvoid *gDemoInputsMemAlloc;\nstruct DmaHandlerList gMarioAnimsBuf;\nstruct DmaHandlerList gDemoInputsBuf;\n\n// fillers\nUNUSED static u8 sfillerGameInit[0x90];\nstatic s32 sUnusedGameInitValue = 0;\n\n// General timer that runs as the game starts\nu32 gGlobalTimer = 0;\n\n// Framebuffer rendering values (max 3)\nu16 sRenderedFramebuffer = 0;\nu16 sRenderingFramebuffer = 0;\n\n// Goddard Vblank Function Caller\nvoid (*gGoddardVblankCallback)(void) = NULL;\n\n// Defined controller slots\nstruct Controller *gPlayer1Controller = &gControllers[0];\nstruct Controller *gPlayer2Controller = &gControllers[1];\nstruct Controller *gPlayer3Controller = &gControllers[2]; // Probably debug only, see note below\n\n// Title Screen Demo Handler\nstruct DemoInput *gCurrDemoInput = NULL;\nu16 gDemoInputListID = 0;\nstruct DemoInput gRecordedDemoInput = { 0 };\n\n// Display\n// ----------------------------------------------------------------------------------------------------\n\n/**\n * Sets the initial RDP (Reality Display Processor) rendering settings.\n */\nvoid init_rdp(void) {\n    gDPPipeSync(gDisplayListHead++);\n    gDPPipelineMode(gDisplayListHead++, G_PM_1PRIMITIVE);\n\n    gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);\n    gDPSetCombineMode(gDisplayListHead++, G_CC_SHADE, G_CC_SHADE);\n\n    gDPSetTextureLOD(gDisplayListHead++, G_TL_TILE);\n    gDPSetTextureLUT(gDisplayListHead++, G_TT_NONE);\n    gDPSetTextureDetail(gDisplayListHead++, G_TD_CLAMP);\n    gDPSetTexturePersp(gDisplayListHead++, G_TP_PERSP);\n    gDPSetTextureFilter(gDisplayListHead++, G_TF_BILERP);\n    gDPSetTextureConvert(gDisplayListHead++, G_TC_FILT);\n\n    gDPSetCombineKey(gDisplayListHead++, G_CK_NONE);\n    gDPSetAlphaCompare(gDisplayListHead++, G_AC_NONE);\n    gDPSetRenderMode(gDisplayListHead++, G_RM_OPA_SURF, G_RM_OPA_SURF2);\n    gDPSetColorDither(gDisplayListHead++, G_CD_MAGICSQ);\n    gDPSetCycleType(gDisplayListHead++, G_CYC_FILL);\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    gDPSetAlphaDither(gDisplayListHead++, G_AD_PATTERN);\n#endif\n    gDPPipeSync(gDisplayListHead++);\n}\n\n/**\n * Sets the initial RSP (Reality Signal Processor) settings.\n */\nvoid init_rsp(void) {\n    gSPClearGeometryMode(gDisplayListHead++, G_SHADE | G_SHADING_SMOOTH | G_CULL_BOTH | G_FOG\n                        | G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR | G_LOD);\n\n    gSPSetGeometryMode(gDisplayListHead++, G_SHADE | G_SHADING_SMOOTH | G_CULL_BACK | G_LIGHTING);\n\n    gSPNumLights(gDisplayListHead++, NUMLIGHTS_1);\n    gSPTexture(gDisplayListHead++, 0, 0, 0, G_TX_RENDERTILE, G_OFF);\n\n    // @bug Failing to set the clip ratio will result in warped triangles in F3DEX2\n    // without this change: https://jrra.zone/n64/doc/n64man/gsp/gSPClipRatio.htm\n#ifdef F3DEX_GBI_2\n    gSPClipRatio(gDisplayListHead++, FRUSTRATIO_1);\n#endif\n}\n\n/**\n * Initialize the z buffer for the current frame.\n */\nvoid init_z_buffer(void) {\n    gDPPipeSync(gDisplayListHead++);\n\n    gDPSetDepthSource(gDisplayListHead++, G_ZS_PIXEL);\n    gDPSetDepthImage(gDisplayListHead++, gPhysicalZBuffer);\n\n    gDPSetColorImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, SCREEN_WIDTH, gPhysicalZBuffer);\n    gDPSetFillColor(gDisplayListHead++,\n                    GPACK_ZDZ(G_MAXFBZ, 0) << 16 | GPACK_ZDZ(G_MAXFBZ, 0));\n\n    gDPFillRectangle(gDisplayListHead++, 0, BORDER_HEIGHT, SCREEN_WIDTH - 1,\n                     SCREEN_HEIGHT - 1 - BORDER_HEIGHT);\n}\n\n/**\n * Tells the RDP which of the three framebuffers it shall draw to.\n */\nvoid select_framebuffer(void) {\n    gDPPipeSync(gDisplayListHead++);\n\n    gDPSetCycleType(gDisplayListHead++, G_CYC_1CYCLE);\n    gDPSetColorImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, SCREEN_WIDTH,\n                     gPhysicalFramebuffers[sRenderingFramebuffer]);\n    gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, BORDER_HEIGHT, SCREEN_WIDTH,\n                  SCREEN_HEIGHT - BORDER_HEIGHT);\n}\n\n/**\n * Clear the framebuffer and fill it with a 32-bit color.\n * Information about the color argument: https://jrra.zone/n64/doc/n64man/gdp/gDPSetFillColor.htm\n */\nvoid clear_framebuffer(s32 color) {\n    gDPPipeSync(gDisplayListHead++);\n\n    gDPSetRenderMode(gDisplayListHead++, G_RM_OPA_SURF, G_RM_OPA_SURF2);\n    gDPSetCycleType(gDisplayListHead++, G_CYC_FILL);\n\n    gDPSetFillColor(gDisplayListHead++, color);\n    gDPFillRectangle(gDisplayListHead++,\n                     GFX_DIMENSIONS_RECT_FROM_LEFT_EDGE(0), BORDER_HEIGHT,\n                     GFX_DIMENSIONS_RECT_FROM_RIGHT_EDGE(0) - 1, SCREEN_HEIGHT - BORDER_HEIGHT - 1);\n\n    gDPPipeSync(gDisplayListHead++);\n\n    gDPSetCycleType(gDisplayListHead++, G_CYC_1CYCLE);\n}\n\n/**\n * Resets the viewport, readying it for the final image.\n */\nvoid clear_viewport(Vp *viewport, s32 color) {\n    s16 vpUlx = (viewport->vp.vtrans[0] - viewport->vp.vscale[0]) / 4 + 1;\n    s16 vpUly = (viewport->vp.vtrans[1] - viewport->vp.vscale[1]) / 4 + 1;\n    s16 vpLrx = (viewport->vp.vtrans[0] + viewport->vp.vscale[0]) / 4 - 2;\n    s16 vpLry = (viewport->vp.vtrans[1] + viewport->vp.vscale[1]) / 4 - 2;\n\n#ifdef WIDESCREEN\n    vpUlx = GFX_DIMENSIONS_RECT_FROM_LEFT_EDGE(vpUlx);\n    vpLrx = GFX_DIMENSIONS_RECT_FROM_RIGHT_EDGE(SCREEN_WIDTH - vpLrx);\n#endif\n\n    gDPPipeSync(gDisplayListHead++);\n\n    gDPSetRenderMode(gDisplayListHead++, G_RM_OPA_SURF, G_RM_OPA_SURF2);\n    gDPSetCycleType(gDisplayListHead++, G_CYC_FILL);\n\n    gDPSetFillColor(gDisplayListHead++, color);\n    gDPFillRectangle(gDisplayListHead++, vpUlx, vpUly, vpLrx, vpLry);\n\n    gDPPipeSync(gDisplayListHead++);\n\n    gDPSetCycleType(gDisplayListHead++, G_CYC_1CYCLE);\n}\n\n/**\n * Draw the horizontal screen borders.\n */\nvoid draw_screen_borders(void) {\n    gDPPipeSync(gDisplayListHead++);\n\n    gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);\n    gDPSetRenderMode(gDisplayListHead++, G_RM_OPA_SURF, G_RM_OPA_SURF2);\n    gDPSetCycleType(gDisplayListHead++, G_CYC_FILL);\n\n    gDPSetFillColor(gDisplayListHead++, GPACK_RGBA5551(0, 0, 0, 0) << 16 | GPACK_RGBA5551(0, 0, 0, 0));\n\n#if BORDER_HEIGHT != 0\n    gDPFillRectangle(gDisplayListHead++, GFX_DIMENSIONS_RECT_FROM_LEFT_EDGE(0), 0,\n                     GFX_DIMENSIONS_RECT_FROM_RIGHT_EDGE(0) - 1, BORDER_HEIGHT - 1);\n    gDPFillRectangle(gDisplayListHead++,\n                     GFX_DIMENSIONS_RECT_FROM_LEFT_EDGE(0), SCREEN_HEIGHT - BORDER_HEIGHT,\n                     GFX_DIMENSIONS_RECT_FROM_RIGHT_EDGE(0) - 1, SCREEN_HEIGHT - 1);\n#endif\n}\n\n/**\n * Defines the viewport scissoring rectangle.\n * Scissoring: https://jrra.zone/n64/doc/pro-man/pro12/12-03.htm#01\n */\nvoid make_viewport_clip_rect(Vp *viewport) {\n    s16 vpUlx = (viewport->vp.vtrans[0] - viewport->vp.vscale[0]) / 4 + 1;\n    s16 vpPly = (viewport->vp.vtrans[1] - viewport->vp.vscale[1]) / 4 + 1;\n    s16 vpLrx = (viewport->vp.vtrans[0] + viewport->vp.vscale[0]) / 4 - 1;\n    s16 vpLry = (viewport->vp.vtrans[1] + viewport->vp.vscale[1]) / 4 - 1;\n\n    gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, vpUlx, vpPly, vpLrx, vpLry);\n}\n\n/**\n * Initializes the Fast3D OSTask structure.\n * If you plan on using gSPLoadUcode, make sure to add OS_TASK_LOADABLE to the flags member.\n */\nvoid create_gfx_task_structure(void) {\n    s32 entries = gDisplayListHead - gGfxPool->buffer;\n\n    gGfxSPTask->msgqueue = &gGfxVblankQueue;\n    gGfxSPTask->msg = (OSMesg) 2;\n    gGfxSPTask->task.t.type = M_GFXTASK;\n    gGfxSPTask->task.t.ucode_boot = rspF3DBootStart;\n    gGfxSPTask->task.t.ucode_boot_size = ((u8 *) rspF3DBootEnd - (u8 *) rspF3DBootStart);\n    gGfxSPTask->task.t.flags = 0;\n    gGfxSPTask->task.t.ucode = rspF3DStart;\n    gGfxSPTask->task.t.ucode_data = rspF3DDataStart;\n    gGfxSPTask->task.t.ucode_size = SP_UCODE_SIZE; // (this size is ignored)\n    gGfxSPTask->task.t.ucode_data_size = SP_UCODE_DATA_SIZE;\n    gGfxSPTask->task.t.dram_stack = (u64 *) gGfxSPTaskStack;\n    gGfxSPTask->task.t.dram_stack_size = SP_DRAM_STACK_SIZE8;\n    gGfxSPTask->task.t.output_buff = gGfxSPTaskOutputBuffer;\n    gGfxSPTask->task.t.output_buff_size =\n        (u64 *)((u8 *) gGfxSPTaskOutputBuffer + sizeof(gGfxSPTaskOutputBuffer));\n    gGfxSPTask->task.t.data_ptr = (u64 *) &gGfxPool->buffer;\n    gGfxSPTask->task.t.data_size = entries * sizeof(Gfx);\n    gGfxSPTask->task.t.yield_data_ptr = (u64 *) gGfxSPTaskYieldBuffer;\n    gGfxSPTask->task.t.yield_data_size = OS_YIELD_DATA_SIZE;\n}\n\n/**\n * Set default RCP (Reality Co-Processor) settings.\n */\nvoid init_rcp(void) {\n    move_segment_table_to_dmem();\n    init_rdp();\n    init_rsp();\n    init_z_buffer();\n    select_framebuffer();\n}\n\n/**\n * End the master display list and initialize the graphics task structure for the next frame to be rendered.\n */\nvoid end_master_display_list(void) {\n    draw_screen_borders();\n    if (gShowProfiler) {\n        draw_profiler();\n    }\n\n    gDPFullSync(gDisplayListHead++);\n    gSPEndDisplayList(gDisplayListHead++);\n\n    create_gfx_task_structure();\n}\n\n/**\n * Draw the bars that appear when the N64 is soft reset.\n */\nvoid draw_reset_bars(void) {\n    s32 width, height;\n    s32 fbNum;\n    u64 *fbPtr;\n\n    if (gResetTimer != 0 && gNmiResetBarsTimer < 15) {\n        if (sRenderedFramebuffer == 0) {\n            fbNum = 2;\n        } else {\n            fbNum = sRenderedFramebuffer - 1;\n        }\n\n        fbPtr = (u64 *) PHYSICAL_TO_VIRTUAL(gPhysicalFramebuffers[fbNum]);\n        fbPtr += gNmiResetBarsTimer++ * (SCREEN_WIDTH / 4);\n\n        for (width = 0; width < ((SCREEN_HEIGHT / 16) + 1); width++) {\n            // Loop must be one line to match on -O2\n            for (height = 0; height < (SCREEN_WIDTH / 4); height++) *fbPtr++ = 0;\n            fbPtr += ((SCREEN_WIDTH / 4) * 14);\n        }\n    }\n\n    osWritebackDCacheAll();\n    osRecvMesg(&gGameVblankQueue, &gMainReceivedMesg, OS_MESG_BLOCK);\n    osRecvMesg(&gGameVblankQueue, &gMainReceivedMesg, OS_MESG_BLOCK);\n}\n\n/**\n * Initial settings for the first rendered frame.\n */\nvoid render_init(void) {\n    gGfxPool = &gGfxPools[0];\n    set_segment_base_addr(1, gGfxPool->buffer);\n    gGfxSPTask = &gGfxPool->spTask;\n    gDisplayListHead = gGfxPool->buffer;\n    gGfxPoolEnd = (u8 *)(gGfxPool->buffer + GFX_POOL_SIZE);\n    init_rcp();\n    clear_framebuffer(0);\n    end_master_display_list();\n    exec_display_list(&gGfxPool->spTask);\n\n    sRenderingFramebuffer++;\n    gGlobalTimer++;\n}\n\n/**\n * Selects the location of the F3D output buffer (gDisplayListHead).\n */\nvoid select_gfx_pool(void) {\n    gGfxPool = &gGfxPools[gGlobalTimer % ARRAY_COUNT(gGfxPools)];\n    set_segment_base_addr(1, gGfxPool->buffer);\n    gGfxSPTask = &gGfxPool->spTask;\n    gDisplayListHead = gGfxPool->buffer;\n    gGfxPoolEnd = (u8 *) (gGfxPool->buffer + GFX_POOL_SIZE);\n}\n\n/**\n * This function:\n * - Sends the current master display list out to be rendered.\n * - Tells the VI which color framebuffer to be displayed.\n * - Yields to the VI framerate twice, locking the game at 30 FPS.\n * - Selects which framebuffer will be rendered and displayed to next time.\n */\nvoid display_and_vsync(void) {\n    profiler_log_thread5_time(BEFORE_DISPLAY_LISTS);\n    osRecvMesg(&gGfxVblankQueue, &gMainReceivedMesg, OS_MESG_BLOCK);\n    if (gGoddardVblankCallback != NULL) {\n        gGoddardVblankCallback();\n        gGoddardVblankCallback = NULL;\n    }\n    exec_display_list(&gGfxPool->spTask);\n    profiler_log_thread5_time(AFTER_DISPLAY_LISTS);\n    osRecvMesg(&gGameVblankQueue, &gMainReceivedMesg, OS_MESG_BLOCK);\n    osViSwapBuffer((void *) PHYSICAL_TO_VIRTUAL(gPhysicalFramebuffers[sRenderedFramebuffer]));\n    profiler_log_thread5_time(THREAD5_END);\n    osRecvMesg(&gGameVblankQueue, &gMainReceivedMesg, OS_MESG_BLOCK);\n    if (++sRenderedFramebuffer == 3) {\n        sRenderedFramebuffer = 0;\n    }\n    if (++sRenderingFramebuffer == 3) {\n        sRenderingFramebuffer = 0;\n    }\n    gGlobalTimer++;\n}\n\n// Controls\n// ----------------------------------------------------------------------------------------------------\n\n/**\n * This function records distinct inputs over a 255-frame interval to RAM locations and was likely\n * used to record the demo sequences seen in the final game. This function is unused.\n */\nUNUSED static void record_demo(void) {\n    // Record the player's button mask and current rawStickX and rawStickY.\n    u8 buttonMask =\n        ((gPlayer1Controller->buttonDown & (A_BUTTON | B_BUTTON | Z_TRIG | START_BUTTON)) >> 8)\n        | (gPlayer1Controller->buttonDown & (U_CBUTTONS | D_CBUTTONS | L_CBUTTONS | R_CBUTTONS));\n    s8 rawStickX = gPlayer1Controller->rawStickX;\n    s8 rawStickY = gPlayer1Controller->rawStickY;\n\n    // If the stick is in deadzone, set its value to 0 to\n    // nullify the effects. We do not record deadzone inputs.\n    if (rawStickX > -8 && rawStickX < 8) {\n        rawStickX = 0;\n    }\n\n    if (rawStickY > -8 && rawStickY < 8) {\n        rawStickY = 0;\n    }\n\n    // Record the distinct input and timer so long as they are unique.\n    // If the timer hits 0xFF, reset the timer for the next demo input.\n    if (gRecordedDemoInput.timer == 0xFF || buttonMask != gRecordedDemoInput.buttonMask\n        || rawStickX != gRecordedDemoInput.rawStickX || rawStickY != gRecordedDemoInput.rawStickY) {\n        gRecordedDemoInput.timer = 0;\n        gRecordedDemoInput.buttonMask = buttonMask;\n        gRecordedDemoInput.rawStickX = rawStickX;\n        gRecordedDemoInput.rawStickY = rawStickY;\n    }\n    gRecordedDemoInput.timer++;\n}\n\n/**\n * Take the updated controller struct and calculate the new x, y, and distance floats.\n */\nvoid adjust_analog_stick(struct Controller *controller) {\n    UNUSED u8 filler[8];\n\n    // Reset the controller's x and y floats.\n    controller->stickX = 0;\n    controller->stickY = 0;\n\n    // Modulate the rawStickX and rawStickY to be the new f32 values by adding/subtracting 6.\n    if (controller->rawStickX <= -8) {\n        controller->stickX = controller->rawStickX + 6;\n    }\n\n    if (controller->rawStickX >= 8) {\n        controller->stickX = controller->rawStickX - 6;\n    }\n\n    if (controller->rawStickY <= -8) {\n        controller->stickY = controller->rawStickY + 6;\n    }\n\n    if (controller->rawStickY >= 8) {\n        controller->stickY = controller->rawStickY - 6;\n    }\n\n    // Calculate f32 magnitude from the center by vector length.\n    controller->stickMag =\n        sqrtf(controller->stickX * controller->stickX + controller->stickY * controller->stickY);\n\n    // Magnitude cannot exceed 64.0f: if it does, modify the values\n    // appropriately to flatten the values down to the allowed maximum value.\n    if (controller->stickMag > 64) {\n        controller->stickX *= 64 / controller->stickMag;\n        controller->stickY *= 64 / controller->stickMag;\n        controller->stickMag = 64;\n    }\n}\n\n/**\n * If a demo sequence exists, this will run the demo input list until it is complete.\n */\nvoid run_demo_inputs(void) {\n    // Eliminate the unused bits.\n    gControllers[0].controllerData->button &= VALID_BUTTONS;\n\n    // Check if a demo inputs list exists and if so,\n    // run the active demo input list.\n    if (gCurrDemoInput != NULL) {\n        // Clear player 2's inputs if they exist. Player 2's controller\n        // cannot be used to influence a demo. At some point, Nintendo\n        // may have planned for there to be a demo where 2 players moved\n        // around instead of just one, so clearing player 2's influence from\n        // the demo had to have been necessary to perform this. Co-op mode, perhaps?\n        if (gControllers[1].controllerData != NULL) {\n            gControllers[1].controllerData->stick_x = 0;\n            gControllers[1].controllerData->stick_y = 0;\n            gControllers[1].controllerData->button = 0;\n        }\n\n        // The timer variable being 0 at the current input means the demo is over.\n        // Set the button to the END_DEMO mask to end the demo.\n        if (gCurrDemoInput->timer == 0) {\n            gControllers[0].controllerData->stick_x = 0;\n            gControllers[0].controllerData->stick_y = 0;\n            gControllers[0].controllerData->button = END_DEMO;\n        } else {\n            // Backup the start button if it is pressed, since we don't want the\n            // demo input to override the mask where start may have been pressed.\n            u16 startPushed = gControllers[0].controllerData->button & START_BUTTON;\n\n            // Perform the demo inputs by assigning the current button mask and the stick inputs.\n            gControllers[0].controllerData->stick_x = gCurrDemoInput->rawStickX;\n            gControllers[0].controllerData->stick_y = gCurrDemoInput->rawStickY;\n\n            // To assign the demo input, the button information is stored in\n            // an 8-bit mask rather than a 16-bit mask. this is because only\n            // A, B, Z, Start, and the C-Buttons are used in a demo, as bits\n            // in that order. In order to assign the mask, we need to take the\n            // upper 4 bits (A, B, Z, and Start) and shift then left by 8 to\n            // match the correct input mask. We then add this to the masked\n            // lower 4 bits to get the correct button mask.\n            gControllers[0].controllerData->button =\n                ((gCurrDemoInput->buttonMask & 0xF0) << 8) + ((gCurrDemoInput->buttonMask & 0xF));\n\n            // If start was pushed, put it into the demo sequence being input to end the demo.\n            gControllers[0].controllerData->button |= startPushed;\n\n            // Run the current demo input's timer down. if it hits 0, advance the demo input list.\n            if (--gCurrDemoInput->timer == 0) {\n                gCurrDemoInput++;\n            }\n        }\n    }\n}\n\n/**\n * Update the controller struct with available inputs if present.\n */\nvoid read_controller_inputs(void) {\n    s32 i;\n\n    // If any controllers are plugged in, update the controller information.\n    if (gControllerBits) {\n        osRecvMesg(&gSIEventMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK);\n        osContGetReadData(&gControllerPads[0]);\n#if ENABLE_RUMBLE\n        release_rumble_pak_control();\n#endif\n    }\n    run_demo_inputs();\n\n    for (i = 0; i < 2; i++) {\n        struct Controller *controller = &gControllers[i];\n\n        // if we're receiving inputs, update the controller struct with the new button info.\n        if (controller->controllerData != NULL) {\n            controller->rawStickX = controller->controllerData->stick_x;\n            controller->rawStickY = controller->controllerData->stick_y;\n            controller->buttonPressed = controller->controllerData->button\n                                        & (controller->controllerData->button ^ controller->buttonDown);\n            // 0.5x A presses are a good meme\n            controller->buttonDown = controller->controllerData->button;\n            adjust_analog_stick(controller);\n        } else { // otherwise, if the controllerData is NULL, 0 out all of the inputs.\n            controller->rawStickX = 0;\n            controller->rawStickY = 0;\n            controller->buttonPressed = 0;\n            controller->buttonDown = 0;\n            controller->stickX = 0;\n            controller->stickY = 0;\n            controller->stickMag = 0;\n        }\n    }\n\n    // For some reason, player 1's inputs are copied to player 3's port.\n    // This potentially may have been a way the developers \"recorded\"\n    // the inputs for demos, despite record_demo existing.\n    gPlayer3Controller->rawStickX = gPlayer1Controller->rawStickX;\n    gPlayer3Controller->rawStickY = gPlayer1Controller->rawStickY;\n    gPlayer3Controller->stickX = gPlayer1Controller->stickX;\n    gPlayer3Controller->stickY = gPlayer1Controller->stickY;\n    gPlayer3Controller->stickMag = gPlayer1Controller->stickMag;\n    gPlayer3Controller->buttonPressed = gPlayer1Controller->buttonPressed;\n    gPlayer3Controller->buttonDown = gPlayer1Controller->buttonDown;\n}\n\n/**\n * Initialize the controller structs to point at the OSCont information.\n */\nvoid init_controllers(void) {\n    s16 port, cont;\n\n    // Set controller 1 to point to the set of status/pads for input 1 and\n    // init the controllers.\n    gControllers[0].statusData = &gControllerStatuses[0];\n    gControllers[0].controllerData = &gControllerPads[0];\n    osContInit(&gSIEventMesgQueue, &gControllerBits, &gControllerStatuses[0]);\n\n    // Strangely enough, the EEPROM probe for save data is done in this function.\n    // Save Pak detection?\n    gEepromProbe = osEepromProbe(&gSIEventMesgQueue);\n\n    // Loop over the 4 ports and link the controller structs to the appropriate\n    // status and pad. Interestingly, although there are pointers to 3 controllers,\n    // only 2 are connected here. The third seems to have been reserved for debug\n    // purposes and was never connected in the retail ROM, thus gPlayer3Controller\n    // cannot be used, despite being referenced in various code.\n    for (cont = 0, port = 0; port < 4 && cont < 2; port++) {\n        // Is controller plugged in?\n        if (gControllerBits & (1 << port)) {\n            // The game allows you to have just 1 controller plugged\n            // into any port in order to play the game. this was probably\n            // so if any of the ports didn't work, you can have controllers\n            // plugged into any of them and it will work.\n#if ENABLE_RUMBLE\n            gControllers[cont].port = port;\n#endif\n            gControllers[cont].statusData = &gControllerStatuses[port];\n            gControllers[cont++].controllerData = &gControllerPads[port];\n        }\n    }\n}\n\n// Game thread core\n// ----------------------------------------------------------------------------------------------------\n\n/**\n * Setup main segments and framebuffers.\n */\nvoid setup_game_memory(void) {\n    UNUSED u8 filler[8];\n\n    // Setup general Segment 0\n    set_segment_base_addr(0, (void *) 0x80000000);\n    // Create Mesg Queues\n    osCreateMesgQueue(&gGfxVblankQueue, gGfxMesgBuf, ARRAY_COUNT(gGfxMesgBuf));\n    osCreateMesgQueue(&gGameVblankQueue, gGameMesgBuf, ARRAY_COUNT(gGameMesgBuf));\n    // Setup z buffer and framebuffer\n    gPhysicalZBuffer = VIRTUAL_TO_PHYSICAL(gZBuffer);\n    gPhysicalFramebuffers[0] = VIRTUAL_TO_PHYSICAL(gFramebuffer0);\n    gPhysicalFramebuffers[1] = VIRTUAL_TO_PHYSICAL(gFramebuffer1);\n    gPhysicalFramebuffers[2] = VIRTUAL_TO_PHYSICAL(gFramebuffer2);\n    // Setup Mario Animations\n    gMarioAnimsMemAlloc = main_pool_alloc(0x4000, MEMORY_POOL_LEFT);\n    set_segment_base_addr(17, (void *) gMarioAnimsMemAlloc);\n    setup_dma_table_list(&gMarioAnimsBuf, gMarioAnims, gMarioAnimsMemAlloc);\n    // Setup Demo Inputs List\n    gDemoInputsMemAlloc = main_pool_alloc(0x800, MEMORY_POOL_LEFT);\n    set_segment_base_addr(24, (void *) gDemoInputsMemAlloc);\n    setup_dma_table_list(&gDemoInputsBuf, gDemoInputs, gDemoInputsMemAlloc);\n    // Setup Level Script Entry\n    load_segment(0x10, _entrySegmentRomStart, _entrySegmentRomEnd, MEMORY_POOL_LEFT);\n    // Setup Segment 2 (Fonts, Text, etc)\n    load_segment_decompress(2, _segment2_mio0SegmentRomStart, _segment2_mio0SegmentRomEnd);\n}\n\n/**\n * Main game loop thread. Runs forever as long as the game continues.\n */\nvoid thread5_game_loop(UNUSED void *arg) {\n    struct LevelCommand *addr;\n\n    CN_DEBUG_PRINTF((\"start gfx thread\\n\"));\n\n    setup_game_memory();\n#if ENABLE_RUMBLE\n    init_rumble_pak_scheduler_queue();\n#endif\n\n    CN_DEBUG_PRINTF((\"init ctrl\\n\"));\n    init_controllers();\n    CN_DEBUG_PRINTF((\"done ctrl\\n\"));\n\n#if ENABLE_RUMBLE\n    create_thread_6();\n#endif\n\n    save_file_load_all();\n\n    set_vblank_handler(2, &gGameVblankHandler, &gGameVblankQueue, (OSMesg) 1);\n\n    // Point address to the entry point into the level script data.\n    addr = segmented_to_virtual(level_script_entry);\n\n    play_music(SEQ_PLAYER_SFX, SEQUENCE_ARGS(0, SEQ_SOUND_PLAYER), 0);\n    set_sound_mode(save_file_get_sound_mode());\n    render_init();\n\n    while (TRUE) {\n        // If the reset timer is active, run the process to reset the game.\n        if (gResetTimer != 0) {\n            draw_reset_bars();\n            continue;\n        }\n        profiler_log_thread5_time(THREAD5_START);\n\n        // If any controllers are plugged in, start read the data for when\n        // read_controller_inputs is called later.\n        if (gControllerBits) {\n#if ENABLE_RUMBLE\n            block_until_rumble_pak_free();\n#endif\n            osContStartReadData(&gSIEventMesgQueue);\n        }\n\n        audio_game_loop_tick();\n        select_gfx_pool();\n        read_controller_inputs();\n        addr = level_script_execute(addr);\n\n        display_and_vsync();\n\n        // when debug info is enabled, print the \"BUF %d\" information.\n        if (gShowDebugText) {\n            // subtract the end of the gfx pool with the display list to obtain the\n            // amount of free space remaining.\n            print_text_fmt_int(180, 20, \"BUF %d\", gGfxPoolEnd - (u8 *) gDisplayListHead);\n        }\n    }\n}\n"
  },
  {
    "path": "src/game/game_init.h",
    "content": "#ifndef GAME_INIT_H\n#define GAME_INIT_H\n\n#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n#include <PR/os_cont.h>\n#include <PR/os_message.h>\n\n#include \"types.h\"\n#include \"memory.h\"\n\n#define GFX_POOL_SIZE 6400 // Size of how large the master display list (gDisplayListHead) can be\n\nstruct GfxPool {\n    Gfx buffer[GFX_POOL_SIZE];\n    struct SPTask spTask;\n};\n\nstruct DemoInput {\n    u8 timer; // time until next input. if this value is 0, it means the demo is over\n    s8 rawStickX;\n    s8 rawStickY;\n    u8 buttonMask;\n};\n\nextern struct Controller gControllers[3];\nextern OSContStatus gControllerStatuses[4];\nextern OSContPad gControllerPads[4];\nextern OSMesgQueue gGameVblankQueue;\nextern OSMesgQueue gGfxVblankQueue;\nextern OSMesg gGameMesgBuf[1];\nextern OSMesg gGfxMesgBuf[1];\nextern struct VblankHandler gGameVblankHandler;\nextern uintptr_t gPhysicalFramebuffers[3];\nextern uintptr_t gPhysicalZBuffer;\nextern void *gMarioAnimsMemAlloc;\nextern void *gDemoInputsMemAlloc;\nextern struct SPTask *gGfxSPTask;\nextern Gfx *gDisplayListHead;\nextern u8 *gGfxPoolEnd;\nextern struct GfxPool *gGfxPool;\nextern u8 gControllerBits;\nextern s8 gEepromProbe;\n\nextern void (*gGoddardVblankCallback)(void);\nextern struct Controller *gPlayer1Controller;\nextern struct Controller *gPlayer2Controller;\nextern struct Controller *gPlayer3Controller;\nextern struct DemoInput *gCurrDemoInput;\nextern u16 gDemoInputListID;\nextern struct DemoInput gRecordedDemoInput;\n\n// this area is the demo input + the header. when the demo is loaded in, there is a header the size\n// of a single word next to the input list. this word is the current ID count.\nextern struct DmaHandlerList gMarioAnimsBuf;\nextern struct DmaHandlerList gDemoInputsBuf;\n\nextern u8 gMarioAnims[];\nextern u8 gDemoInputs[];\n\nextern u16 sRenderingFramebuffer;\nextern u32 gGlobalTimer;\n\nvoid setup_game_memory(void);\nvoid thread5_game_loop(UNUSED void *arg);\nvoid clear_framebuffer(s32 color);\nvoid clear_viewport(Vp *viewport, s32 color);\nvoid make_viewport_clip_rect(Vp *viewport);\nvoid init_rcp(void);\nvoid end_master_display_list(void);\nvoid render_init(void);\nvoid select_gfx_pool(void);\nvoid display_and_vsync(void);\n\n#endif // GAME_INIT_H\n"
  },
  {
    "path": "src/game/geo_misc.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"sm64.h\"\n#include \"geo_misc.h\"\n\n#include \"area.h\"\n#include \"engine/math_util.h\"\n#include \"level_update.h\"\n#include \"levels/castle_inside/header.h\"\n#include \"levels/ending/header.h\"\n#include \"levels/rr/header.h\"\n#include \"mario.h\"\n#include \"mario_actions_cutscene.h\"\n#include \"memory.h\"\n#include \"object_list_processor.h\"\n#include \"rendering_graph_node.h\"\n#include \"save_file.h\"\n#include \"segment2.h\"\n\n/**\n * @file geo_misc.c\n * This file contains miscellaneous geo_asm scripts.\n *\n * In particular, it builds:\n *   - the light that shows the player where to look for Tower of the Wing Cap,\n *   - the flying carpets seen in Rainbow Ride, and\n *   - the end screen displaying Peach's delicious cake.\n */\n\n#define NUM_FLYING_CARPET_VERTICES 21\nextern const s16 flying_carpet_static_vertex_data[NUM_FLYING_CARPET_VERTICES];\n\nstatic s16 sCurAreaTimer = 1;\nstatic s16 sPrevAreaTimer = 0;\nstatic s16 sFlyingCarpetRippleTimer = 0;\n\ns8 gFlyingCarpetState;\n\n/**\n * Create a vertex with the given parameters and insert it into `vtx` at\n * position `n`.\n *\n * Texture coordinates are s10.5 fixed-point, which means you should left-shift the actual coordinates by 5.\n */\n#ifndef GBI_FLOATS\nvoid make_vertex(Vtx *vtx, s32 n, s16 x, s16 y, s16 z, s16 tx, s16 ty, u8 r, u8 g, u8 b, u8 a)\n#else\nvoid make_vertex(Vtx *vtx, s32 n, f32 x, f32 y, f32 z, s16 tx, s16 ty, u8 r, u8 g, u8 b, u8 a)\n#endif\n{\n    vtx[n].v.ob[0] = x;\n    vtx[n].v.ob[1] = y;\n    vtx[n].v.ob[2] = z;\n\n    vtx[n].v.flag = 0;\n\n    vtx[n].v.tc[0] = tx;\n    vtx[n].v.tc[1] = ty;\n\n    vtx[n].v.cn[0] = r;\n    vtx[n].v.cn[1] = g;\n    vtx[n].v.cn[2] = b;\n    vtx[n].v.cn[3] = a;\n}\n\n/**\n * Round `num` to the nearest `s16`.\n */\ns16 round_float(f32 num) {\n    // Note that double literals are used here, rather than float literals.\n    if (num >= 0.0) {\n        return num + 0.5;\n    } else {\n        return num - 0.5;\n    }\n}\n\n/**\n * Create a display list for the light in the castle lobby that shows the\n * player where to look to enter Tower of the Wing Cap.\n */\nGfx *geo_exec_inside_castle_light(s32 callContext, struct GraphNode *node, UNUSED f32 mtx[4][4]) {\n    s32 flags;\n    struct GraphNodeGenerated *generatedNode;\n    Gfx *displayListHead = NULL;\n    Gfx *displayList = NULL;\n\n    if (callContext == GEO_CONTEXT_RENDER) {\n        flags = save_file_get_flags();\n        if (gHudDisplay.stars >= 10 && !(flags & SAVE_FLAG_HAVE_WING_CAP)) {\n            displayList = alloc_display_list(2 * sizeof(*displayList));\n\n            if (displayList == NULL) {\n                return NULL;\n            } else {\n                displayListHead = displayList;\n            }\n\n            generatedNode = (struct GraphNodeGenerated *) node;\n            generatedNode->fnNode.node.flags = (generatedNode->fnNode.node.flags & 0xFF) | 0x500;\n\n            gSPDisplayList(displayListHead++, dl_castle_lobby_wing_cap_light);\n            gSPEndDisplayList(displayListHead);\n        }\n    }\n\n    return displayList;\n}\n\n/**\n * Update static timer variables that control the flying carpets' ripple effect.\n */\nGfx *geo_exec_flying_carpet_timer_update(s32 callContext, UNUSED struct GraphNode *node,\n                                         UNUSED f32 mtx[4][4]) {\n    if (callContext != GEO_CONTEXT_RENDER) {\n        sFlyingCarpetRippleTimer = 0;\n        sPrevAreaTimer = gAreaUpdateCounter - 1;\n        sCurAreaTimer = gAreaUpdateCounter;\n        gFlyingCarpetState = FLYING_CARPET_IDLE;\n    } else {\n        sPrevAreaTimer = sCurAreaTimer;\n        sCurAreaTimer = gAreaUpdateCounter;\n        if (sPrevAreaTimer != sCurAreaTimer) {\n            sFlyingCarpetRippleTimer += 0x400;\n        }\n    }\n\n    return NULL;\n}\n\n/**\n * Create a display list for a flying carpet with dynamic ripples.\n */\nGfx *geo_exec_flying_carpet_create(s32 callContext, struct GraphNode *node, UNUSED f32 mtx[4][4]) {\n    s16 n, row, col, x, y, z, tx, ty;\n    Vtx *verts;\n    struct GraphNodeGenerated *generatedNode = (struct GraphNodeGenerated *) node;\n\n    s16 *sp64 = segmented_to_virtual(&flying_carpet_static_vertex_data);\n    Gfx *displayList = NULL;\n    Gfx *displayListHead = NULL;\n    struct Object *curGraphNodeObject;\n\n    if (callContext == GEO_CONTEXT_RENDER) {\n        verts = alloc_display_list(NUM_FLYING_CARPET_VERTICES * sizeof(*verts));\n        displayList = alloc_display_list(7 * sizeof(*displayList));\n        displayListHead = displayList;\n\n        if (verts == NULL || displayList == NULL) {\n            return NULL;\n        }\n\n        generatedNode->fnNode.node.flags = (generatedNode->fnNode.node.flags & 0xFF) | 0x100;\n\n        for (n = 0; n <= 20; n++) {\n            row = n / 3;\n            col = n % 3;\n\n            x = sp64[n * 4 + 0];\n            y = round_float(sins(sFlyingCarpetRippleTimer + (row << 12) + (col << 14)) * 20.0);\n            z = sp64[n * 4 + 1];\n            tx = sp64[n * 4 + 2];\n            ty = sp64[n * 4 + 3];\n\n            make_vertex(verts, n, x, y, z, tx, ty, 0, 127, 0, 255);\n        }\n\n        gSPDisplayList(displayListHead++, dl_flying_carpet_begin);\n\n        // The forward half.\n        gSPVertex(displayListHead++, verts, 12, 0);\n        gSPDisplayList(displayListHead++, dl_flying_carpet_model_half);\n\n        // The back half.\n        gSPVertex(displayListHead++, verts + 9, 12, 0);\n        gSPDisplayList(displayListHead++, dl_flying_carpet_model_half);\n\n        gSPDisplayList(displayListHead++, dl_flying_carpet_end);\n        gSPEndDisplayList(displayListHead);\n\n        curGraphNodeObject = (struct Object *) gCurGraphNodeObject;\n        if (gMarioObject->platform == curGraphNodeObject) {\n            gFlyingCarpetState = FLYING_CARPET_MOVING_WITH_MARIO;\n        } else if (curGraphNodeObject->oForwardVel != 0.0) {\n            gFlyingCarpetState = FLYING_CARPET_MOVING_WITHOUT_MARIO;\n        } else {\n            gFlyingCarpetState = FLYING_CARPET_IDLE;\n        }\n    }\n\n    return displayList;\n}\n\n/**\n * Create a display list for the end screen with Peach's delicious cake.\n */\nGfx *geo_exec_cake_end_screen(s32 callContext, struct GraphNode *node, UNUSED f32 mtx[4][4]) {\n    struct GraphNodeGenerated *generatedNode = (struct GraphNodeGenerated *) node;\n    Gfx *displayList = NULL;\n    Gfx *displayListHead = NULL;\n\n    if (callContext == GEO_CONTEXT_RENDER) {\n        displayList = alloc_display_list(3 * sizeof(*displayList));\n        displayListHead = displayList;\n\n        generatedNode->fnNode.node.flags = (generatedNode->fnNode.node.flags & 0xFF) | 0x100;\n#ifdef VERSION_EU\n        gSPDisplayList(displayListHead++, dl_cake_end_screen);\n#else\n        gSPDisplayList(displayListHead++, dl_proj_mtx_fullscreen);\n#endif\n#ifdef VERSION_EU\n        switch (eu_get_language()) {\n            case LANGUAGE_ENGLISH:\n                gSPDisplayList(displayListHead++, dl_cake_end_screen_eu_070296F8);\n                break;\n            case LANGUAGE_FRENCH:\n                gSPDisplayList(displayListHead++, dl_cake_end_screen_eu_07029768);\n                break;\n            case LANGUAGE_GERMAN:\n                gSPDisplayList(displayListHead++, dl_cake_end_screen_eu_070297D8);\n                break;\n        }\n#else\n        gSPDisplayList(displayListHead++, dl_cake_end_screen);\n#endif\n        gSPEndDisplayList(displayListHead);\n    }\n\n    return displayList;\n}\n"
  },
  {
    "path": "src/game/geo_misc.h",
    "content": "#ifndef GEO_MISC_H\n#define GEO_MISC_H\n\n#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\nenum FlyingCarpetState {\n    FLYING_CARPET_IDLE = 0,\n    FLYING_CARPET_MOVING_WITHOUT_MARIO = 1,\n    FLYING_CARPET_MOVING_WITH_MARIO = 2\n};\n\nextern s8 gFlyingCarpetState;\n\n#ifndef GBI_FLOATS\nextern void make_vertex(\n    Vtx *vtx, s32 n, s16 x, s16 y, s16 z, s16 tx, s16 ty, u8 r, u8 g, u8 b, u8 a\n);\n#else\nextern void make_vertex(\n    Vtx *vtx, s32 n, f32 x, f32 y, f32 z, s16 tx, s16 ty, u8 r, u8 g, u8 b, u8 a\n);\n#endif\nextern s16 round_float(f32);\nextern Gfx *geo_exec_inside_castle_light(s32 callContext, struct GraphNode *node, UNUSED f32 mtx[4][4]);\nextern Gfx *geo_exec_flying_carpet_timer_update(s32 callContext, struct GraphNode *node, UNUSED f32 mtx[4][4]);\nextern Gfx *geo_exec_flying_carpet_create(s32 callContext, struct GraphNode *node, UNUSED f32 mtx[4][4]);\nextern Gfx *geo_exec_cake_end_screen(s32 callContext, struct GraphNode *node, UNUSED f32 mtx[4][4]);\n\n#define gLoadBlockTexture(dl, width, height, format, image)                                                  \\\n{                                                                                                            \\\n    gDPSetTextureImage((dl), (format), G_IM_SIZ_16b, 1, (image));                                            \\\n    gDPTileSync((dl));                                                                                       \\\n    gDPSetTile((dl), (format), G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, \\\n               G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD);                                                      \\\n    gDPLoadSync((dl));                                                                                       \\\n    gDPLoadBlock((dl), G_TX_LOADTILE, 0, 0, (width) * (height) - 1, CALC_DXT((width), G_IM_SIZ_16b_BYTES))   \\\n}\n\n#endif // GEO_MISC_H\n"
  },
  {
    "path": "src/game/hud.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"sm64.h\"\n#include \"actors/common1.h\"\n#include \"gfx_dimensions.h\"\n#include \"game_init.h\"\n#include \"level_update.h\"\n#include \"camera.h\"\n#include \"print.h\"\n#include \"ingame_menu.h\"\n#include \"hud.h\"\n#include \"segment2.h\"\n#include \"area.h\"\n#include \"save_file.h\"\n#include \"print.h\"\n\n/* @file hud.c\n * This file implements HUD rendering and power meter animations.\n * That includes stars, lives, coins, camera status, power meter, timer\n * cannon reticle, and the unused keys.\n **/\n\nstruct PowerMeterHUD {\n    s8 animation;\n    s16 x;\n    s16 y;\n    f32 unused;\n};\n\n// Stores health segmented value defined by numHealthWedges\n// When the HUD is rendered this value is 8, full health.\nstatic s16 sPowerMeterStoredHealth;\n\nstatic struct PowerMeterHUD sPowerMeterHUD = {\n    POWER_METER_HIDDEN,\n    140,\n    166,\n    1.0,\n};\n\n// Power Meter timer that keeps counting when it's visible.\n// Gets reset when the health is filled and stops counting\n// when the power meter is hidden.\ns32 sPowerMeterVisibleTimer = 0;\n\n// TODO: fakediff?\n#ifndef VERSION_CN\nUNUSED static s32 sUnusedHUDValue1 = 0;\nUNUSED static s16 sUnusedHUDValue2 = 10;\n#else\nUNUSED static s32 sUnusedHUDValue2 = 10;\n#endif\n\nstatic s16 sCameraHUDStatus = CAM_STATUS_NONE;\n\n/**\n * Renders a rgba16 16x16 glyph texture from a table list.\n */\nvoid render_hud_tex_lut(s32 x, s32 y, u8 *texture) {\n    gDPPipeSync(gDisplayListHead++);\n    gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture);\n    gSPDisplayList(gDisplayListHead++, &dl_hud_img_load_tex_block);\n    gSPTextureRectangle(gDisplayListHead++, x << 2, y << 2, (x + 15) << 2, (y + 15) << 2,\n                        G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10);\n}\n\n/**\n * Renders a rgba16 8x8 glyph texture from a table list.\n */\nvoid render_hud_small_tex_lut(s32 x, s32 y, u8 *texture) {\n    gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0,\n                G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD);\n    gDPTileSync(gDisplayListHead++);\n    gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 2, 0, G_TX_RENDERTILE, 0,\n                G_TX_CLAMP, 3, G_TX_NOLOD, G_TX_CLAMP, 3, G_TX_NOLOD);\n    gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, (8 - 1) << G_TEXTURE_IMAGE_FRAC, (8 - 1) << G_TEXTURE_IMAGE_FRAC);\n    gDPPipeSync(gDisplayListHead++);\n    gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture);\n    gDPLoadSync(gDisplayListHead++);\n    gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 8 * 8 - 1, CALC_DXT(8, G_IM_SIZ_16b_BYTES));\n    gSPTextureRectangle(gDisplayListHead++, x << 2, y << 2, (x + 7) << 2, (y + 7) << 2, G_TX_RENDERTILE,\n                        0, 0, 4 << 10, 1 << 10);\n}\n\n/**\n * Renders power meter health segment texture using a table list.\n */\nvoid render_power_meter_health_segment(s16 numHealthWedges) {\n    u8 *(*healthLUT)[] = segmented_to_virtual(&power_meter_health_segments_lut);\n\n    gDPPipeSync(gDisplayListHead++);\n    gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1,\n                       (*healthLUT)[numHealthWedges - 1]);\n    gDPLoadSync(gDisplayListHead++);\n    gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES));\n    gSP1Triangle(gDisplayListHead++, 0, 1, 2, 0);\n    gSP1Triangle(gDisplayListHead++, 0, 2, 3, 0);\n}\n\n/**\n * Renders power meter display lists.\n * That includes the \"POWER\" base and the colored health segment textures.\n */\nvoid render_dl_power_meter(s16 numHealthWedges) {\n    Mtx *mtx = alloc_display_list(sizeof(Mtx));\n\n    if (mtx == NULL) {\n        return;\n    }\n\n    guTranslate(mtx, (f32) sPowerMeterHUD.x, (f32) sPowerMeterHUD.y, 0);\n\n    gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(mtx++),\n              G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_PUSH);\n    gSPDisplayList(gDisplayListHead++, &dl_power_meter_base);\n\n    if (numHealthWedges != 0) {\n        gSPDisplayList(gDisplayListHead++, &dl_power_meter_health_segments_begin);\n        render_power_meter_health_segment(numHealthWedges);\n        gSPDisplayList(gDisplayListHead++, &dl_power_meter_health_segments_end);\n    }\n\n    gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);\n}\n\n/**\n * Power meter animation called when there's less than 8 health segments\n * Checks its timer to later change into deemphasizing mode.\n */\nvoid animate_power_meter_emphasized(void) {\n    s16 hudDisplayFlags = gHudDisplay.flags;\n\n    if (!(hudDisplayFlags & HUD_DISPLAY_FLAG_EMPHASIZE_POWER)) {\n        if (sPowerMeterVisibleTimer == 45.0) {\n            sPowerMeterHUD.animation = POWER_METER_DEEMPHASIZING;\n        }\n    } else {\n        sPowerMeterVisibleTimer = 0;\n    }\n}\n\n/**\n * Power meter animation called after emphasized mode.\n * Moves power meter y pos speed until it's at 200 to be visible.\n */\nstatic void animate_power_meter_deemphasizing(void) {\n    s16 speed = 5;\n\n    if (sPowerMeterHUD.y > 180) {\n        speed = 3;\n    }\n\n    if (sPowerMeterHUD.y > 190) {\n        speed = 2;\n    }\n\n    if (sPowerMeterHUD.y > 195) {\n        speed = 1;\n    }\n\n    sPowerMeterHUD.y += speed;\n\n    if (sPowerMeterHUD.y > 200) {\n        sPowerMeterHUD.y = 200;\n        sPowerMeterHUD.animation = POWER_METER_VISIBLE;\n    }\n}\n\n/**\n * Power meter animation called when there's 8 health segments.\n * Moves power meter y pos quickly until it's at 301 to be hidden.\n */\nstatic void animate_power_meter_hiding(void) {\n    sPowerMeterHUD.y += 20;\n    if (sPowerMeterHUD.y > 300) {\n        sPowerMeterHUD.animation = POWER_METER_HIDDEN;\n        sPowerMeterVisibleTimer = 0;\n    }\n}\n\n/**\n * Handles power meter actions depending of the health segments values.\n */\nvoid handle_power_meter_actions(s16 numHealthWedges) {\n    // Show power meter if health is not full, less than 8\n    if (numHealthWedges < 8 && sPowerMeterStoredHealth == 8\n        && sPowerMeterHUD.animation == POWER_METER_HIDDEN) {\n        sPowerMeterHUD.animation = POWER_METER_EMPHASIZED;\n        sPowerMeterHUD.y = 166;\n    }\n\n    // Show power meter if health is full, has 8\n    if (numHealthWedges == 8 && sPowerMeterStoredHealth == 7) {\n        sPowerMeterVisibleTimer = 0;\n    }\n\n    // After health is full, hide power meter\n    if (numHealthWedges == 8 && sPowerMeterVisibleTimer > 45.0) {\n        sPowerMeterHUD.animation = POWER_METER_HIDING;\n    }\n\n    // Update to match health value\n    sPowerMeterStoredHealth = numHealthWedges;\n\n    // If Mario is swimming, keep power meter visible\n    if (gPlayerCameraState->action & ACT_FLAG_SWIMMING) {\n        if (sPowerMeterHUD.animation == POWER_METER_HIDDEN\n            || sPowerMeterHUD.animation == POWER_METER_EMPHASIZED) {\n            sPowerMeterHUD.animation = POWER_METER_DEEMPHASIZING;\n            sPowerMeterHUD.y = 166;\n        }\n        sPowerMeterVisibleTimer = 0;\n    }\n}\n\n/**\n * Renders the power meter that shows when Mario is in underwater\n * or has taken damage and has less than 8 health segments.\n * And calls a power meter animation function depending of the value defined.\n */\nvoid render_hud_power_meter(void) {\n    s16 shownHealthWedges = gHudDisplay.wedges;\n\n    if (sPowerMeterHUD.animation != POWER_METER_HIDING) {\n        handle_power_meter_actions(shownHealthWedges);\n    }\n\n    if (sPowerMeterHUD.animation == POWER_METER_HIDDEN) {\n        return;\n    }\n\n    switch (sPowerMeterHUD.animation) {\n        case POWER_METER_EMPHASIZED:\n            animate_power_meter_emphasized();\n            break;\n        case POWER_METER_DEEMPHASIZING:\n            animate_power_meter_deemphasizing();\n            break;\n        case POWER_METER_HIDING:\n            animate_power_meter_hiding();\n            break;\n        default:\n            break;\n    }\n\n    render_dl_power_meter(shownHealthWedges);\n\n    sPowerMeterVisibleTimer++;\n}\n\n#ifdef VERSION_JP\n#define HUD_TOP_Y 210\n#else\n#define HUD_TOP_Y 209\n#endif\n\n/**\n * Renders the amount of lives Mario has.\n */\nvoid render_hud_mario_lives(void) {\n    print_text(GFX_DIMENSIONS_RECT_FROM_LEFT_EDGE(22), HUD_TOP_Y, \",\"); // 'Mario Head' glyph\n    print_text(GFX_DIMENSIONS_RECT_FROM_LEFT_EDGE(38), HUD_TOP_Y, \"*\"); // 'X' glyph\n    print_text_fmt_int(GFX_DIMENSIONS_RECT_FROM_LEFT_EDGE(54), HUD_TOP_Y, \"%d\", gHudDisplay.lives);\n}\n\n/**\n * Renders the amount of coins collected.\n */\nvoid render_hud_coins(void) {\n    print_text(168, HUD_TOP_Y, \"+\"); // 'Coin' glyph\n    print_text(184, HUD_TOP_Y, \"*\"); // 'X' glyph\n    print_text_fmt_int(198, HUD_TOP_Y, \"%d\", gHudDisplay.coins);\n}\n\n#ifdef VERSION_JP\n#define HUD_STARS_X 73\n#else\n#define HUD_STARS_X 78\n#endif\n\n/**\n * Renders the amount of stars collected.\n * Disables \"X\" glyph when Mario has 100 stars or more.\n */\nvoid render_hud_stars(void) {\n    s8 showX = 0;\n\n    if (gHudFlash == 1 && gGlobalTimer & 8) {\n        return;\n    }\n\n    if (gHudDisplay.stars < 100) {\n        showX = 1;\n    }\n\n    print_text(GFX_DIMENSIONS_RECT_FROM_RIGHT_EDGE(HUD_STARS_X), HUD_TOP_Y, \"-\"); // 'Star' glyph\n    if (showX == 1) {\n        print_text(GFX_DIMENSIONS_RECT_FROM_RIGHT_EDGE(HUD_STARS_X) + 16, HUD_TOP_Y, \"*\"); // 'X' glyph\n    }\n    print_text_fmt_int((showX * 14) + GFX_DIMENSIONS_RECT_FROM_RIGHT_EDGE(HUD_STARS_X - 16),\n                       HUD_TOP_Y, \"%d\", gHudDisplay.stars);\n}\n\n/**\n * Unused function that renders the amount of keys collected.\n * Leftover function from the beta version of the game.\n */\nvoid render_hud_keys(void) {\n    s16 i;\n\n    for (i = 0; i < gHudDisplay.keys; i++) {\n        print_text((i * 16) + 220, 142, \"/\"); // unused glyph - beta key\n    }\n}\n\n/**\n * Renders the timer when Mario start sliding in PSS.\n */\nvoid render_hud_timer(void) {\n    u8 *(*hudLUT)[58] = segmented_to_virtual(&main_hud_lut);\n    u16 timerValFrames = gHudDisplay.timer;\n    u16 timerMins = timerValFrames / (30 * 60);\n    u16 timerSecs = (timerValFrames - (timerMins * 1800)) / 30;\n    u16 timerFracSecs = ((u16) (timerValFrames - (timerMins * 1800) - (timerSecs * 30))) / 3;\n#ifdef VERSION_CN\n    u8 timeString[2];\n#endif\n\n#ifdef VERSION_EU\n    switch (eu_get_language()) {\n        case LANGUAGE_ENGLISH:\n            print_text(GFX_DIMENSIONS_RECT_FROM_RIGHT_EDGE(150), 185, \"TIME\");\n            break;\n        case LANGUAGE_FRENCH:\n            print_text(GFX_DIMENSIONS_RECT_FROM_RIGHT_EDGE(155), 185, \"TEMPS\");\n            break;\n        case LANGUAGE_GERMAN:\n            print_text(GFX_DIMENSIONS_RECT_FROM_RIGHT_EDGE(150), 185, \"ZEIT\");\n            break;\n    }\n#elif defined(VERSION_CN)\n    timeString[0] = 0xC0; // TODO: iQue colorful text\n    timeString[1] = 0x00;\n    print_text_centered(GFX_DIMENSIONS_RECT_FROM_RIGHT_EDGE(150), 185, (const char *) timeString);\n#else\n    print_text(GFX_DIMENSIONS_RECT_FROM_RIGHT_EDGE(150), 185, \"TIME\");\n#endif\n\n    print_text_fmt_int(GFX_DIMENSIONS_RECT_FROM_RIGHT_EDGE(91), 185, \"%0d\", timerMins);\n    print_text_fmt_int(GFX_DIMENSIONS_RECT_FROM_RIGHT_EDGE(71), 185, \"%02d\", timerSecs);\n    print_text_fmt_int(GFX_DIMENSIONS_RECT_FROM_RIGHT_EDGE(37), 185, \"%d\", timerFracSecs);\n\n    gSPDisplayList(gDisplayListHead++, dl_hud_img_begin);\n    render_hud_tex_lut(GFX_DIMENSIONS_RECT_FROM_RIGHT_EDGE(81), 32, (*hudLUT)[GLYPH_APOSTROPHE]);\n    render_hud_tex_lut(GFX_DIMENSIONS_RECT_FROM_RIGHT_EDGE(46), 32, (*hudLUT)[GLYPH_DOUBLE_QUOTE]);\n    gSPDisplayList(gDisplayListHead++, dl_hud_img_end);\n}\n\n/**\n * Sets HUD status camera value depending of the actions\n * defined in update_camera_status.\n */\nvoid set_hud_camera_status(s16 status) {\n    sCameraHUDStatus = status;\n}\n\n/**\n * Renders camera HUD glyphs using a table list. Depending on\n * the camera status called, a defined glyph is rendered.\n */\nvoid render_hud_camera_status(void) {\n    u8 *(*cameraLUT)[6] = segmented_to_virtual(&main_hud_camera_lut);\n    s32 x = GFX_DIMENSIONS_RECT_FROM_RIGHT_EDGE(54);\n    s32 y = 205;\n\n    if (sCameraHUDStatus == CAM_STATUS_NONE) {\n        return;\n    }\n\n    gSPDisplayList(gDisplayListHead++, dl_hud_img_begin);\n    render_hud_tex_lut(x, y, (*cameraLUT)[GLYPH_CAM_CAMERA]);\n\n    switch (sCameraHUDStatus & CAM_STATUS_MODE_GROUP) {\n        case CAM_STATUS_MARIO:\n            render_hud_tex_lut(x + 16, y, (*cameraLUT)[GLYPH_CAM_MARIO_HEAD]);\n            break;\n        case CAM_STATUS_LAKITU:\n            render_hud_tex_lut(x + 16, y, (*cameraLUT)[GLYPH_CAM_LAKITU_HEAD]);\n            break;\n        case CAM_STATUS_FIXED:\n            render_hud_tex_lut(x + 16, y, (*cameraLUT)[GLYPH_CAM_FIXED]);\n            break;\n    }\n\n    switch (sCameraHUDStatus & CAM_STATUS_C_MODE_GROUP) {\n        case CAM_STATUS_C_DOWN:\n            render_hud_small_tex_lut(x + 4, y + 16, (*cameraLUT)[GLYPH_CAM_ARROW_DOWN]);\n            break;\n        case CAM_STATUS_C_UP:\n            render_hud_small_tex_lut(x + 4, y - 8, (*cameraLUT)[GLYPH_CAM_ARROW_UP]);\n            break;\n    }\n\n    gSPDisplayList(gDisplayListHead++, dl_hud_img_end);\n}\n\n/**\n * Render HUD strings using hudDisplayFlags with it's render functions,\n * excluding the cannon reticle which detects a camera preset for it.\n */\nvoid render_hud(void) {\n    s16 hudDisplayFlags = gHudDisplay.flags;\n\n    if (hudDisplayFlags == HUD_DISPLAY_NONE) {\n        sPowerMeterHUD.animation = POWER_METER_HIDDEN;\n        sPowerMeterStoredHealth = 8;\n        sPowerMeterVisibleTimer = 0;\n    } else {\n#ifdef VERSION_EU\n        // basically create_dl_ortho_matrix but guOrtho screen width is different\n        Mtx *mtx = alloc_display_list(sizeof(*mtx));\n\n        if (mtx == NULL) {\n            return;\n        }\n\n        create_dl_identity_matrix();\n        guOrtho(mtx, -16.0f, SCREEN_WIDTH + 16, 0, SCREEN_HEIGHT, -10.0f, 10.0f, 1.0f);\n        gSPPerspNormalize(gDisplayListHead++, 0xFFFF);\n        gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(mtx),\n                  G_MTX_PROJECTION | G_MTX_MUL | G_MTX_NOPUSH);\n#else\n        create_dl_ortho_matrix();\n#endif\n\n        if (gCurrentArea != NULL && gCurrentArea->camera->mode == CAMERA_MODE_INSIDE_CANNON) {\n            render_hud_cannon_reticle();\n        }\n\n        if (hudDisplayFlags & HUD_DISPLAY_FLAG_LIVES) {\n            render_hud_mario_lives();\n        }\n\n        if (hudDisplayFlags & HUD_DISPLAY_FLAG_COIN_COUNT) {\n            render_hud_coins();\n        }\n\n        if (hudDisplayFlags & HUD_DISPLAY_FLAG_STAR_COUNT) {\n            render_hud_stars();\n        }\n\n        if (hudDisplayFlags & HUD_DISPLAY_FLAG_KEYS) {\n            render_hud_keys();\n        }\n\n        if (hudDisplayFlags & HUD_DISPLAY_FLAG_CAMERA_AND_POWER) {\n            render_hud_power_meter();\n            render_hud_camera_status();\n        }\n\n        if (hudDisplayFlags & HUD_DISPLAY_FLAG_TIMER) {\n            render_hud_timer();\n        }\n    }\n}\n"
  },
  {
    "path": "src/game/hud.h",
    "content": "#ifndef HUD_H\n#define HUD_H\n\n#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\nenum PowerMeterAnimation {\n    POWER_METER_HIDDEN,\n    POWER_METER_EMPHASIZED,\n    POWER_METER_DEEMPHASIZING,\n    POWER_METER_HIDING,\n    POWER_METER_VISIBLE\n};\n\nenum CameraHUDLut {\n    GLYPH_CAM_CAMERA,\n    GLYPH_CAM_MARIO_HEAD,\n    GLYPH_CAM_LAKITU_HEAD,\n    GLYPH_CAM_FIXED,\n    GLYPH_CAM_ARROW_UP,\n    GLYPH_CAM_ARROW_DOWN\n};\n\nvoid set_hud_camera_status(s16 status);\nvoid render_hud(void);\n\n#endif // HUD_H\n"
  },
  {
    "path": "src/game/ingame_menu.c",
    "content": "#include <ultra64.h>\n\n#include \"actors/common1.h\"\n#include \"area.h\"\n#include \"audio/external.h\"\n#include \"camera.h\"\n#include \"course_table.h\"\n#include \"dialog_ids.h\"\n#include \"engine/math_util.h\"\n#include \"eu_translation.h\"\n#include \"game_init.h\"\n#include \"gfx_dimensions.h\"\n#include \"ingame_menu.h\"\n#include \"level_update.h\"\n#include \"levels/castle_grounds/header.h\"\n#include \"memory.h\"\n#include \"print.h\"\n#include \"save_file.h\"\n#include \"segment2.h\"\n#include \"segment7.h\"\n#include \"seq_ids.h\"\n#include \"sm64.h\"\n#include \"text_strings.h\"\n#include \"types.h\"\n\n#ifdef VERSION_EU\n#undef LANGUAGE_FUNCTION\n#define LANGUAGE_FUNCTION gInGameLanguage\n#endif\n\nFORCE_BSS u16 gMenuTextColorTransTimer;\nFORCE_BSS s8 gLastDialogLineNum;\nFORCE_BSS s32 gDialogVariable;\nFORCE_BSS u16 gMenuTextAlpha;\n#ifdef VERSION_EU\ns16 gDialogX;\ns16 gDialogY;\n#endif\nFORCE_BSS s16 gCutsceneMsgXOffset;\nFORCE_BSS s16 gCutsceneMsgYOffset;\ns8 gRedCoinsCollected;\n\nextern u8 gLastCompletedCourseNum;\nextern u8 gLastCompletedStarNum;\n\nenum MenuState {\n    MENU_STATE_0,\n    MENU_STATE_1,\n    MENU_STATE_2,\n    MENU_STATE_3,\n    MENU_STATE_DEFAULT = MENU_STATE_0,\n\n    // Dialog\n    MENU_STATE_DIALOG_OPENING = MENU_STATE_0,\n    MENU_STATE_DIALOG_OPEN = MENU_STATE_1,\n    MENU_STATE_DIALOG_SCROLLING = MENU_STATE_2,\n    MENU_STATE_DIALOG_CLOSING = MENU_STATE_3,\n\n    // Pause Screen\n    MENU_STATE_PAUSE_SCREEN_OPENING = MENU_STATE_0,\n    MENU_STATE_PAUSE_SCREEN_COURSE = MENU_STATE_1,\n    MENU_STATE_PAUSE_SCREEN_CASTLE = MENU_STATE_2,\n\n    // Course Complete Screen\n    MENU_STATE_COURSE_COMPLETE_SCREEN_OPENING = MENU_STATE_0,\n    MENU_STATE_COURSE_COMPLETE_SCREEN_OPEN = MENU_STATE_1\n};\n\nenum DialogBoxPageState {\n    DIALOG_PAGE_STATE_NONE,\n    DIALOG_PAGE_STATE_SCROLL,\n    DIALOG_PAGE_STATE_END\n};\n\nenum DialogBoxType {\n    DIALOG_TYPE_ROTATE, // used in NPCs and level messages\n    DIALOG_TYPE_ZOOM    // used in signposts and wall signs and etc\n};\n\n#define DIALOG_BOX_ANGLE_DEFAULT 90.0f\n#define DIALOG_BOX_SCALE_DEFAULT 19.0f\n\n#if defined(VERSION_US) || defined(VERSION_EU) || defined(VERSION_CN)\nu8 gDialogCharWidths[256] = { // TODO: Is there a way to auto generate this?\n    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  6,  6,  6,  6,  6,  6,\n    6,  6,  5,  6,  6,  5,  8,  8,  6,  6,  6,  6,  6,  5,  6,  6,\n    8,  7,  6,  6,  6,  5,  5,  6,  5,  5,  6,  5,  4,  5,  5,  3,\n    7,  5,  5,  5,  6,  5,  5,  5,  5,  5,  7,  7,  5,  5,  4,  4,\n    8,  6,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,\n    8,  8,  8,  8,  7,  7,  6,  7,  7,  0,  0,  0,  0,  0,  0,  0,\n#ifdef VERSION_EU\n    6,  6,  6,  0,  6,  6,  6,  0,  0,  0,  0,  0,  0,  0,  0,  4,\n    5,  5,  5,  5,  6,  6,  6,  6,  0,  0,  0,  0,  0,  0,  0,  0,\n    5,  5,  5,  0,  6,  6,  6,  0,  0,  0,  0,  0,  0,  0,  0,  0,\n    0,  5,  5,  0,  0,  6,  6,  0,  0,  0,  0,  0,  0,  0,  5,  6,\n    0,  4,  4,  0,  0,  5,  5,  0,  0,  0,  0,  0,  0,  0,  0,  0,\n#else\n    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,\n    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,\n    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,\n    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  6,\n    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,\n#endif\n    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,\n    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,\n    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,\n#ifdef VERSION_EU\n    7,  5, 10,  5,  9,  8,  4,  0,  0,  0,  0,  5,  5,  6,  5,  0,\n#else\n    7,  5, 10,  5,  9,  8,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,\n#endif\n    0,  0,  5,  7,  7,  6,  6,  8,  0,  8, 10,  6,  4, 10,  0,  0\n};\n#endif\n\ns8 gMenuState = MENU_STATE_DEFAULT;\nf32 gDialogBoxAngle = DIALOG_BOX_ANGLE_DEFAULT;\nf32 gDialogBoxScale = DIALOG_BOX_SCALE_DEFAULT;\ns16 gDialogScrollOffsetY = 0;\ns8 gDialogBoxType = DIALOG_TYPE_ROTATE;\ns16 gDialogID = DIALOG_NONE;\ns16 gNextDialogPageStartStrIndex = 0;\ns16 gDialogPageStartStrIndex = 0;\n#ifdef VERSION_EU\ns32 gInGameLanguage = LANGUAGE_ENGLISH;\n#endif\ns8 gMenuLineNum = 1;\ns8 gDialogWithChoice = FALSE;\nu8 gMenuHoldKeyIndex = 0;\nu8 gMenuHoldKeyTimer = 0;\ns32 gDialogResponse = DIALOG_RESPONSE_NONE;\n\nvoid create_dl_identity_matrix(void) {\n    Mtx *matrix = (Mtx *) alloc_display_list(sizeof(Mtx));\n\n    if (matrix == NULL) {\n        return;\n    }\n\n#ifndef GBI_FLOATS\n    matrix->m[0][0] = 0x00010000;    matrix->m[1][0] = 0x00000000;    matrix->m[2][0] = 0x00000000;    matrix->m[3][0] = 0x00000000;\n    matrix->m[0][1] = 0x00000000;    matrix->m[1][1] = 0x00010000;    matrix->m[2][1] = 0x00000000;    matrix->m[3][1] = 0x00000000;\n    matrix->m[0][2] = 0x00000001;    matrix->m[1][2] = 0x00000000;    matrix->m[2][2] = 0x00000000;    matrix->m[3][2] = 0x00000000;\n    matrix->m[0][3] = 0x00000000;    matrix->m[1][3] = 0x00000001;    matrix->m[2][3] = 0x00000000;    matrix->m[3][3] = 0x00000000;\n#else\n    guMtxIdent(matrix);\n#endif\n\n    gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(matrix), G_MTX_MODELVIEW | G_MTX_LOAD | G_MTX_NOPUSH);\n    gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(matrix), G_MTX_PROJECTION | G_MTX_LOAD | G_MTX_NOPUSH);\n}\n\nvoid create_dl_translation_matrix(s8 pushOp, f32 x, f32 y, f32 z) {\n    Mtx *matrix = (Mtx *) alloc_display_list(sizeof(Mtx));\n\n    if (matrix == NULL) {\n        return;\n    }\n\n    guTranslate(matrix, x, y, z);\n\n    if (pushOp == MENU_MTX_PUSH) {\n        gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(matrix), G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_PUSH);\n    }\n\n    if (pushOp == MENU_MTX_NOPUSH) {\n        gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(matrix), G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_NOPUSH);\n    }\n}\n\nvoid create_dl_rotation_matrix(s8 pushOp, f32 a, f32 x, f32 y, f32 z) {\n    Mtx *matrix = (Mtx *) alloc_display_list(sizeof(Mtx));\n\n    if (matrix == NULL) {\n        return;\n    }\n\n    guRotate(matrix, a, x, y, z);\n\n    if (pushOp == MENU_MTX_PUSH) {\n        gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(matrix), G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_PUSH);\n    }\n\n    if (pushOp == MENU_MTX_NOPUSH) {\n        gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(matrix), G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_NOPUSH);\n    }\n}\n\nvoid create_dl_scale_matrix(s8 pushOp, f32 x, f32 y, f32 z) {\n    Mtx *matrix = (Mtx *) alloc_display_list(sizeof(Mtx));\n\n    if (matrix == NULL) {\n        return;\n    }\n\n    guScale(matrix, x, y, z);\n\n    if (pushOp == MENU_MTX_PUSH) {\n        gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(matrix), G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_PUSH);\n    }\n\n    if (pushOp == MENU_MTX_NOPUSH) {\n        gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(matrix), G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_NOPUSH);\n    }\n}\n\nvoid create_dl_ortho_matrix(void) {\n    Mtx *matrix = (Mtx *) alloc_display_list(sizeof(Mtx));\n\n    if (matrix == NULL) {\n        return;\n    }\n\n    create_dl_identity_matrix();\n\n    guOrtho(matrix, 0.0f, SCREEN_WIDTH, 0.0f, SCREEN_HEIGHT, -10.0f, 10.0f, 1.0f);\n\n    // Should produce G_RDPHALF_1 in Fast3D\n    gSPPerspNormalize(gDisplayListHead++, 0xFFFF);\n\n    gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(matrix), G_MTX_PROJECTION | G_MTX_MUL | G_MTX_NOPUSH)\n}\n\n#if defined(VERSION_US) || defined(VERSION_EU)\nUNUSED\n#endif\n#ifdef VERSION_CN\nstatic u8 *alloc_ia8_text_from_i1(u8 *in) {\n    s32 i, j;\n    u8 l, r;\n    u8 bitMask = 0x80;\n    u8 *out = alloc_display_list(8 * 8);\n\n    if (out == NULL) {\n        return NULL;\n    }\n\n    for (i = 0; i < 16; i++) {\n        for (j = 0; j < 8;) {\n            r = 0;\n            l = ((in[i] & (bitMask >> j)) >> (7 - j)) != 0 ? 0xF0 : 0x00;\n            j++;\n            r = ((in[i] & (bitMask >> j)) >> (7 - j)) != 0 ? 0x0F : 0x00;\n            out[i * 4 + j / 2] = l | r;\n            CN_DEBUG_PRINTF((\"%x, \", out[i * 4 + j / 2]));\n            j++;\n        }\n        CN_DEBUG_PRINTF((\"\\n\"));\n    }\n\n    return out;\n}\n#else\nstatic u8 *alloc_ia8_text_from_i1(u16 *in, s16 width, s16 height) {\n    s32 inPos;\n    u16 bitMask;\n    u8 *out;\n    s16 outPos = 0;\n\n    out = (u8 *) alloc_display_list((u32) width * (u32) height);\n\n    if (out == NULL) {\n        return NULL;\n    }\n\n    for (inPos = 0; inPos < (width * height) / 16; inPos++) {\n        bitMask = 0x8000;\n\n        while (bitMask != 0) {\n            if (in[inPos] & bitMask) {\n                out[outPos] = 0xFF;\n            } else {\n                out[outPos] = 0x00;\n            }\n\n            bitMask /= 2;\n            outPos++;\n        }\n    }\n\n    return out;\n}\n#endif\n\n#ifdef VERSION_CN\nvoid render_generic_char(u16 c)\n#else\nvoid render_generic_char(u8 c)\n#endif\n{\n    void **fontLUT = segmented_to_virtual(main_font_lut);\n    void *packedTexture = segmented_to_virtual(fontLUT[c]);\n#if defined(VERSION_JP) || defined(VERSION_SH)\n    void *unpackedTexture = alloc_ia8_text_from_i1(packedTexture, 8, 16);\n#endif\n\n#ifndef VERSION_EU\n    gDPPipeSync(gDisplayListHead++);\n#endif\n#if defined(VERSION_JP) || defined(VERSION_SH)\n    gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_IA, G_IM_SIZ_8b, 1, VIRTUAL_TO_PHYSICAL(unpackedTexture));\n#else\n    gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_IA, G_IM_SIZ_16b, 1, VIRTUAL_TO_PHYSICAL(packedTexture));\n#endif\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_tex_settings);\n#ifdef VERSION_EU\n    gSPTextureRectangleFlip(gDisplayListHead++, gDialogX << 2, (gDialogY - 16) << 2,\n                            (gDialogX + 8) << 2, gDialogY << 2, G_TX_RENDERTILE, 8 << 6, 4 << 6, 1 << 10, 1 << 10);\n#endif\n}\n\n#ifdef VERSION_EU\nu8 *alloc_ia4_tex_from_i1(u8 *in, s16 width, s16 height) {\n    u32 size = (u32) width * (u32) height;\n    u8 *out;\n    s32 inPos;\n    s16 outPos = 0;\n    u8 bitMask;\n\n    out = (u8 *) alloc_display_list(size);\n\n    if (out == NULL) {\n        return NULL;\n    }\n\n    for (inPos = 0; inPos < (width * height) / 4; inPos++) {\n        bitMask = 0x80;\n\n        while (bitMask != 0) {\n            out[outPos] = (in[inPos] & bitMask) ? 0xF0 : 0x00;\n            bitMask /= 2;\n            out[outPos] = (in[inPos] & bitMask) ? out[outPos] + 0x0F : out[outPos];\n            bitMask /= 2;\n            outPos++;\n        }\n    }\n\n    return out;\n}\n\nvoid render_generic_char_at_pos(s16 xPos, s16 yPos, u8 c) {\n    void **fontLUT = segmented_to_virtual(main_font_lut);\n    void *packedTexture = segmented_to_virtual(fontLUT[c]);\n    void *unpackedTexture = alloc_ia4_tex_from_i1(packedTexture, 8, 8);\n\n    gDPPipeSync(gDisplayListHead++);\n    gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_IA, G_IM_SIZ_16b, 1, VIRTUAL_TO_PHYSICAL(unpackedTexture));\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_tex_settings);\n    gSPTextureRectangleFlip(gDisplayListHead++, xPos << 2, (yPos - 16) << 2, (xPos + 8) << 2, yPos << 2,\n                            G_TX_RENDERTILE, 8 << 6, 4 << 6, 1 << 10, 1 << 10);\n}\n\nvoid render_lowercase_diacritic(s16 *xPos, s16 *yPos, u8 letter, u8 diacritic) {\n    render_generic_char_at_pos(*xPos, *yPos, letter);\n    render_generic_char_at_pos(*xPos, *yPos, diacritic + 0xE7);\n    *xPos += gDialogCharWidths[letter];\n}\n\nvoid render_uppercase_diacritic(s16 *xPos, s16 *yPos, u8 letter, u8 diacritic) {\n    render_generic_char_at_pos(*xPos, *yPos, letter);\n    render_generic_char_at_pos(*xPos, *yPos - 4, diacritic + 0xE3);\n    *xPos += gDialogCharWidths[letter];\n}\n#endif // VERSION_EU\n\n#ifdef VERSION_CN\nvoid render_generic_char_cn(u16 c) {\n    void **fontLUT = segmented_to_virtual(main_font_lut);\n    void *packedTexture = segmented_to_virtual(fontLUT[c]);\n    void *unpackedTexture = alloc_ia8_text_from_i1(packedTexture);\n\n    gDPPipeSync(gDisplayListHead++);\n    gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_IA, G_IM_SIZ_16b, 1, VIRTUAL_TO_PHYSICAL(unpackedTexture));\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_tex_settings);\n}\n#endif\n\n#if defined(VERSION_US) || defined(VERSION_EU) || defined(VERSION_CN)\n// First byte is length, rest is string\nstruct MultiTextEntry {\n    u8 str[5];\n};\n\n#define TEXT_THE_RAW ASCII_TO_DIALOG('t'), ASCII_TO_DIALOG('h'), ASCII_TO_DIALOG('e'), 0x00\n#define TEXT_YOU_RAW ASCII_TO_DIALOG('y'), ASCII_TO_DIALOG('o'), ASCII_TO_DIALOG('u'), 0x00\n\nenum MultiStringIDs { STRING_THE, STRING_YOU };\n\n/*\n * Place the multi-text string according to the ID passed. (US, EU)\n * 0: 'the'\n * 1: 'you'\n */\n#if defined(VERSION_US) || defined(VERSION_CN)\nvoid render_multi_text_string(s8 multiTextID)\n#elif defined(VERSION_EU)\nvoid render_multi_text_string(s16 *xPos, s16 *yPos, s8 multiTextID)\n#endif\n{\n    s8 i;\n    struct MultiTextEntry textLengths[2] = {\n        { { 3, TEXT_THE_RAW } },\n        { { 3, TEXT_YOU_RAW } },\n    };\n\n    for (i = 0; i < textLengths[multiTextID].str[0]; i++) {\n#if defined(VERSION_US) || defined(VERSION_CN)\n        render_generic_char(textLengths[multiTextID].str[1 + i]);\n        create_dl_translation_matrix(\n            MENU_MTX_NOPUSH, (f32)(gDialogCharWidths[textLengths[multiTextID].str[1 + i]]), 0.0f, 0.0f);\n#elif defined(VERSION_EU)\n        render_generic_char_at_pos(*xPos, *yPos, textLengths[multiTextID].str[1 + i]);\n        *xPos += gDialogCharWidths[textLengths[multiTextID].str[1 + i]];\n#endif\n    }\n}\n#endif\n\n#if defined(VERSION_JP) || defined(VERSION_SH)\n    #define CUR_CHAR str[strPos]\n    #define MAX_STRING_WIDTH 18\n    #define CHAR_WIDTH_SPACE 5.0f\n    #define CHAR_WIDTH_DEFAULT 10.0f\n#elif defined(VERSION_CN)\n    #define CUR_CHAR strChar\n    #define MAX_STRING_WIDTH 18\n    #define CHAR_WIDTH_SPACE gDialogCharWidths[DIALOG_CHAR_SPACE]\n    #define CHAR_WIDTH_DEFAULT gDialogCharWidths[CUR_CHAR]\n#else\n    #define CUR_CHAR str[strPos]\n    #define MAX_STRING_WIDTH 16\n    #define CHAR_WIDTH_SPACE gDialogCharWidths[DIALOG_CHAR_SPACE]\n    #define CHAR_WIDTH_DEFAULT gDialogCharWidths[CUR_CHAR]\n#endif\n\n/**\n * Prints a generic white string.\n * In JP/EU a IA1 texture is used but in US a IA4 texture is used.\n */\nvoid print_generic_string(s16 x, s16 y, const u8 *str) {\n    UNUSED s8 mark = DIALOG_MARK_NONE; // unused in EU\n    s32 strPos = 0;\n    u8 lineNum = 1;\n#ifdef VERSION_EU\n    s16 xCoord = x;\n    s16 yCoord = 240 - y;\n#endif\n#ifdef VERSION_CN\n    s32 strChar;\n#endif\n\n#ifndef VERSION_EU\n    create_dl_translation_matrix(MENU_MTX_PUSH, x, y, 0.0f);\n#endif\n\n#ifdef VERSION_CN\n    while (str[strPos] != DIALOG_CHAR_SPECIAL_MODIFIER || str[strPos + 1] != DIALOG_CHAR_TERMINATOR) {\n        strChar = str[strPos] << 8 | str[strPos + 1];\n#else\n    while (str[strPos] != SPECIAL_CHAR(DIALOG_CHAR_TERMINATOR)) {\n#endif\n        switch (CUR_CHAR) {\n#ifdef VERSION_CN\n            case SPECIAL_CHAR(DIALOG_CHAR_NEWLINE):\n                gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);\n                create_dl_translation_matrix(MENU_MTX_PUSH, x, y - (lineNum * MAX_STRING_WIDTH), 0.0f);\n                lineNum++;\n                break;\n            case SPECIAL_CHAR(DIALOG_CHAR_STAR_OPEN): // ???\n                create_dl_translation_matrix(MENU_MTX_NOPUSH, 32.0f, 0.0f, 0.0f);\n                break;\n#endif\n#ifdef VERSION_EU\n            case SPECIAL_CHAR(DIALOG_CHAR_SPACE):\n                xCoord += 5;\n                break;\n            case SPECIAL_CHAR(DIALOG_CHAR_NEWLINE):\n                yCoord += 16;\n                xCoord = x;\n                lineNum++;\n                break;\n            case SPECIAL_CHAR(DIALOG_CHAR_LOWER_A_GRAVE):\n            case SPECIAL_CHAR(DIALOG_CHAR_LOWER_A_CIRCUMFLEX):\n            case SPECIAL_CHAR(DIALOG_CHAR_LOWER_A_UMLAUT):\n                render_lowercase_diacritic(&xCoord, &yCoord, ASCII_TO_DIALOG('a'), CUR_CHAR & 0xF);\n                break;\n            case SPECIAL_CHAR(DIALOG_CHAR_UPPER_A_UMLAUT): // @bug grave and circumflex (0x64-0x65) are absent here\n                render_uppercase_diacritic(&xCoord, &yCoord, ASCII_TO_DIALOG('A'), CUR_CHAR & 0xF);\n                break;\n            case SPECIAL_CHAR(DIALOG_CHAR_LOWER_E_GRAVE):\n            case SPECIAL_CHAR(DIALOG_CHAR_LOWER_E_CIRCUMFLEX):\n            case SPECIAL_CHAR(DIALOG_CHAR_LOWER_E_UMLAUT):\n            case SPECIAL_CHAR(DIALOG_CHAR_LOWER_E_ACUTE):\n                render_lowercase_diacritic(&xCoord, &yCoord, ASCII_TO_DIALOG('e'), CUR_CHAR & 0xF);\n                break;\n            case SPECIAL_CHAR(DIALOG_CHAR_UPPER_E_GRAVE):\n            case SPECIAL_CHAR(DIALOG_CHAR_UPPER_E_CIRCUMFLEX):\n            case SPECIAL_CHAR(DIALOG_CHAR_UPPER_E_UMLAUT):\n            case SPECIAL_CHAR(DIALOG_CHAR_UPPER_E_ACUTE):\n                render_uppercase_diacritic(&xCoord, &yCoord, ASCII_TO_DIALOG('E'), CUR_CHAR & 0xF);\n                break;\n            case SPECIAL_CHAR(DIALOG_CHAR_LOWER_U_GRAVE):\n            case SPECIAL_CHAR(DIALOG_CHAR_LOWER_U_CIRCUMFLEX):\n            case SPECIAL_CHAR(DIALOG_CHAR_LOWER_U_UMLAUT):\n                render_lowercase_diacritic(&xCoord, &yCoord, ASCII_TO_DIALOG('u'), CUR_CHAR & 0xF);\n                break;\n            case SPECIAL_CHAR(DIALOG_CHAR_UPPER_U_UMLAUT): // @bug grave and circumflex (0x84-0x85) are absent here\n                render_uppercase_diacritic(&xCoord, &yCoord, ASCII_TO_DIALOG('U'), CUR_CHAR & 0xF);\n                break;\n            case SPECIAL_CHAR(DIALOG_CHAR_LOWER_O_CIRCUMFLEX):\n            case SPECIAL_CHAR(DIALOG_CHAR_LOWER_O_UMLAUT):\n                render_lowercase_diacritic(&xCoord, &yCoord, ASCII_TO_DIALOG('o'), CUR_CHAR & 0xF);\n                break;\n            case SPECIAL_CHAR(DIALOG_CHAR_UPPER_O_UMLAUT): // @bug circumflex (0x95) is absent here\n                render_uppercase_diacritic(&xCoord, &yCoord, ASCII_TO_DIALOG('O'), CUR_CHAR & 0xF);\n                break;\n            case SPECIAL_CHAR(DIALOG_CHAR_LOWER_I_CIRCUMFLEX):\n            case SPECIAL_CHAR(DIALOG_CHAR_LOWER_I_UMLAUT):\n                render_lowercase_diacritic(&xCoord, &yCoord, DIALOG_CHAR_I_NO_DIA, CUR_CHAR & 0xF);\n                break;\n#else // i.e. not EU\n            case SPECIAL_CHAR(DIALOG_CHAR_DAKUTEN):\n                mark = DIALOG_MARK_DAKUTEN;\n                break;\n            case SPECIAL_CHAR(DIALOG_CHAR_PERIOD_OR_HANDAKUTEN):\n                mark = DIALOG_MARK_HANDAKUTEN;\n                break;\n#ifndef VERSION_CN\n            case SPECIAL_CHAR(DIALOG_CHAR_NEWLINE):\n                gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);\n                create_dl_translation_matrix(MENU_MTX_PUSH, x, y - (lineNum * MAX_STRING_WIDTH), 0.0f);\n                lineNum++;\n                break;\n#endif\n            case SPECIAL_CHAR(DIALOG_CHAR_PERIOD):\n                create_dl_translation_matrix(MENU_MTX_PUSH, -2.0f, -5.0f, 0.0f);\n                render_generic_char(DIALOG_CHAR_PERIOD_OR_HANDAKUTEN);\n                gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);\n                break;\n#endif\n\n#if defined(VERSION_US) || defined(VERSION_EU) || defined(VERSION_CN)\n            case SPECIAL_CHAR(DIALOG_CHAR_SLASH):\n#ifdef VERSION_EU\n                xCoord += gDialogCharWidths[DIALOG_CHAR_SPACE] * 2;\n#else\n                create_dl_translation_matrix(\n                    MENU_MTX_NOPUSH, (f32)(gDialogCharWidths[DIALOG_CHAR_SPACE] * 2), 0.0f, 0.0f);\n#endif\n                break;\n            case SPECIAL_CHAR(DIALOG_CHAR_MULTI_THE):\n#ifdef VERSION_EU\n                render_multi_text_string(&xCoord, &yCoord, STRING_THE);\n#else\n                render_multi_text_string(STRING_THE);\n#endif\n                break;\n            case SPECIAL_CHAR(DIALOG_CHAR_MULTI_YOU):\n#ifdef VERSION_EU\n                render_multi_text_string(&xCoord, &yCoord, STRING_YOU);\n#else\n                render_multi_text_string(STRING_YOU);\n#endif\n                break;\n#endif\n\n#ifndef VERSION_EU\n            case SPECIAL_CHAR(DIALOG_CHAR_SPACE):\n                create_dl_translation_matrix(MENU_MTX_NOPUSH, CHAR_WIDTH_SPACE, 0.0f, 0.0f);\n                break;\n#ifdef VERSION_JP\n                break; // ? needed to match\n#endif\n#endif\n\n            default:\n#ifdef VERSION_EU\n                render_generic_char_at_pos(xCoord, yCoord, CUR_CHAR);\n                xCoord += gDialogCharWidths[CUR_CHAR];\n#else\n#ifdef VERSION_CN\n                if (strChar >= 0x0100) {\n                    strChar = (strChar - 0xFF) * 2 + 0xFE;\n                    render_generic_char_cn(strChar);\n                    create_dl_translation_matrix(MENU_MTX_NOPUSH, 8.0f, 0.0f, 0.0f);\n                    render_generic_char_cn(strChar + 1);\n                    create_dl_translation_matrix(MENU_MTX_NOPUSH, 8.0f, 0.0f, 0.0f);\n                    break;\n                }\n#endif\n                render_generic_char(CUR_CHAR);\n                if (mark != DIALOG_MARK_NONE) {\n                    create_dl_translation_matrix(MENU_MTX_PUSH, 5.0f, 5.0f, 0.0f);\n                    render_generic_char(DIALOG_CHAR_MARK_START + mark);\n                    gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);\n                    mark = DIALOG_MARK_NONE;\n                }\n\n                create_dl_translation_matrix(MENU_MTX_NOPUSH, CHAR_WIDTH_DEFAULT, 0.0f, 0.0f);\n#endif\n#ifndef VERSION_JP\n                break; // what an odd difference. US (and probably later) versions added a useless break here.\n#endif\n        }\n\n#ifdef VERSION_CN\n        strPos += 2;\n#else\n        strPos++;\n#endif\n    }\n\n#ifndef VERSION_EU\n    gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);\n#endif\n}\n\n#ifdef VERSION_EU\nvoid print_hud_char_umlaut(s16 x, s16 y, u8 chr) {\n    void **fontLUT = segmented_to_virtual(main_hud_lut);\n\n    gDPPipeSync(gDisplayListHead++);\n    gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fontLUT[chr]);\n    gSPDisplayList(gDisplayListHead++, dl_rgba16_load_tex_block);\n    gSPTextureRectangle(gDisplayListHead++, x << 2, y << 2, (x + 16) << 2, (y + 16) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);\n\n    gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fontLUT[GLYPH_UMLAUT]);\n    gSPDisplayList(gDisplayListHead++, dl_rgba16_load_tex_block);\n    gSPTextureRectangle(gDisplayListHead++, x << 2, (y - 4) << 2, (x + 16) << 2, (y + 12) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);\n}\n#endif\n\n/**\n * Prints a hud string depending of the hud table list defined.\n */\nvoid print_hud_lut_string(s8 hudLUT, s16 x, s16 y, const u8 *str) {\n    s32 strPos = 0;\n    void **hudLUT1 = segmented_to_virtual(menu_hud_lut); // Japanese Menu HUD Color font\n    void **hudLUT2 = segmented_to_virtual(main_hud_lut); // 0-9 A-Z HUD Color Font\n    u32 curX = x;\n    u32 curY = y;\n\n#ifdef VERSION_CN\n    u32 xOffset = 0;\n#else\n    u32 xStride; // X separation\n\n    if (hudLUT == HUD_LUT_JPMENU) {\n        xStride = 16;\n    } else { // HUD_LUT_GLOBAL\n#ifdef VERSION_JP\n        xStride = 14;\n#else\n        xStride = 12; //? Shindou uses this.\n#endif\n    }\n#endif\n\n    while (str[strPos] != GLOBAL_CHAR_TERMINATOR) {\n#ifndef VERSION_JP\n        switch (str[strPos]) {\n#ifdef VERSION_CN\n            case GLOBAL_CHAR_NEWLINE:\n                curY += 16;\n                curX -= xOffset;\n                break;\n#elif defined(VERSION_EU)\n            case GLOBAL_CHAR_SPACE:\n                curX += xStride / 2;\n                break;\n            case HUD_CHAR_A_UMLAUT:\n                print_hud_char_umlaut(curX, curY, ASCII_TO_DIALOG('A'));\n                curX += xStride;\n                break;\n            case HUD_CHAR_O_UMLAUT:\n                print_hud_char_umlaut(curX, curY, ASCII_TO_DIALOG('O'));\n                curX += xStride;\n                break;\n            case HUD_CHAR_U_UMLAUT:\n                print_hud_char_umlaut(curX, curY, ASCII_TO_DIALOG('U'));\n                curX += xStride;\n                break;\n#else\n            case GLOBAL_CHAR_SPACE:\n                curX += 8;\n                break;\n#endif\n            default:\n#endif\n                gDPPipeSync(gDisplayListHead++);\n\n#ifndef VERSION_CN\n                if (hudLUT == HUD_LUT_JPMENU) {\n                    gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, hudLUT1[str[strPos]]);\n                }\n\n                if (hudLUT == HUD_LUT_GLOBAL) {\n#endif\n                    gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, hudLUT2[str[strPos]]);\n#ifndef VERSION_CN\n                }\n#endif\n\n                gSPDisplayList(gDisplayListHead++, dl_rgba16_load_tex_block);\n                gSPTextureRectangle(gDisplayListHead++, curX << 2, curY << 2, (curX + 16) << 2,\n                                    (curY + 16) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);\n\n#ifdef VERSION_CN\n                if (str[strPos] < 0x3A) {\n                    curX += 12;\n                    xOffset += 12;\n                } else {\n                    curX += 16;\n                    xOffset += 16;\n                }\n#else\n                curX += xStride;\n#endif\n#ifndef VERSION_JP\n        }\n#endif\n        strPos++;\n    }\n}\n\n#ifdef VERSION_EU\nvoid print_menu_char_umlaut(s16 x, s16 y, u8 chr) {\n    void **fontLUT = segmented_to_virtual(menu_font_lut);\n\n    gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_IA, G_IM_SIZ_8b, 1, fontLUT[chr]);\n    gDPLoadSync(gDisplayListHead++);\n    gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 8 * 8 - 1, CALC_DXT(8, G_IM_SIZ_8b_BYTES));\n    gSPTextureRectangle(gDisplayListHead++, x << 2, y << 2, (x + 8) << 2, (y + 8) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);\n\n    gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_IA, G_IM_SIZ_8b, 1, fontLUT[DIALOG_CHAR_UMLAUT]);\n    gDPLoadSync(gDisplayListHead++);\n    gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 8 * 8 - 1, CALC_DXT(8, G_IM_SIZ_8b_BYTES));\n    gSPTextureRectangle(gDisplayListHead++, x << 2, (y - 4) << 2, (x + 8) << 2, (y + 4) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);\n}\n#endif\n\nvoid print_menu_generic_string(s16 x, s16 y, const u8 *str) {\n    UNUSED s8 mark = DIALOG_MARK_NONE; // unused in EU\n    s32 strPos = 0;\n    u32 curX = x;\n    u32 curY = y;\n    void **fontLUT = segmented_to_virtual(menu_font_lut);\n\n    while (str[strPos] != DIALOG_CHAR_TERMINATOR) {\n        switch (str[strPos]) {\n#ifdef VERSION_EU\n            case DIALOG_CHAR_UPPER_A_UMLAUT:\n                print_menu_char_umlaut(curX, curY, ASCII_TO_DIALOG('A'));\n                curX += gDialogCharWidths[str[strPos]];\n                break;\n            case DIALOG_CHAR_UPPER_U_UMLAUT:\n                print_menu_char_umlaut(curX, curY, ASCII_TO_DIALOG('U'));\n                curX += gDialogCharWidths[str[strPos]];\n                break;\n            case DIALOG_CHAR_UPPER_O_UMLAUT:\n                print_menu_char_umlaut(curX, curY, ASCII_TO_DIALOG('O'));\n                curX += gDialogCharWidths[str[strPos]];\n                break;\n#else\n            case DIALOG_CHAR_DAKUTEN:\n                mark = DIALOG_MARK_DAKUTEN;\n                break;\n            case DIALOG_CHAR_PERIOD_OR_HANDAKUTEN:\n                mark = DIALOG_MARK_HANDAKUTEN;\n                break;\n#endif\n            case DIALOG_CHAR_SPACE:\n                curX += 4;\n                break;\n            default:\n                gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_IA, G_IM_SIZ_8b, 1, fontLUT[str[strPos]]);\n                gDPLoadSync(gDisplayListHead++);\n                gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 8 * 8 - 1, CALC_DXT(8, G_IM_SIZ_8b_BYTES));\n                gSPTextureRectangle(gDisplayListHead++, curX << 2, curY << 2, (curX + 8) << 2,\n                                    (curY + 8) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);\n\n#ifndef VERSION_EU\n                if (mark != DIALOG_MARK_NONE) {\n                    gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_IA, G_IM_SIZ_8b, 1, fontLUT[DIALOG_CHAR_MARK_START + mark]);\n                    gDPLoadSync(gDisplayListHead++);\n                    gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 8 * 8 - 1, CALC_DXT(8, G_IM_SIZ_8b_BYTES));\n                    gSPTextureRectangle(gDisplayListHead++, (curX + 6) << 2, (curY - 7) << 2,\n                                        (curX + 6 + 8) << 2, (curY - 7 + 8) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);\n\n                    mark = DIALOG_MARK_NONE;\n                }\n#endif\n#if defined(VERSION_JP) || defined(VERSION_SH) || defined(VERSION_CN)\n                curX += 9;\n#else\n                curX += gDialogCharWidths[str[strPos]];\n#endif\n        }\n        strPos++;\n    }\n}\n\nvoid print_credits_string(s16 x, s16 y, const u8 *str) {\n    s32 strPos = 0;\n    void **fontLUT = segmented_to_virtual(main_credits_font_lut);\n    u32 curX = x;\n    u32 curY = y;\n\n    gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0,\n                G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD);\n    gDPTileSync(gDisplayListHead++);\n    gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 2, 0, G_TX_RENDERTILE, 0,\n                G_TX_CLAMP, 3, G_TX_NOLOD, G_TX_CLAMP, 3, G_TX_NOLOD);\n    gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, (8 - 1) << G_TEXTURE_IMAGE_FRAC, (8 - 1) << G_TEXTURE_IMAGE_FRAC);\n\n    while (str[strPos] != GLOBAL_CHAR_TERMINATOR) {\n        switch (str[strPos]) {\n            case GLOBAL_CHAR_SPACE:\n                curX += 4;\n                break;\n            default:\n                gDPPipeSync(gDisplayListHead++);\n                gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fontLUT[str[strPos]]);\n                gDPLoadSync(gDisplayListHead++);\n                gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 8 * 8 - 1, CALC_DXT(8, G_IM_SIZ_16b_BYTES));\n                gSPTextureRectangle(gDisplayListHead++, curX << 2, curY << 2, (curX + 8) << 2,\n                                    (curY + 8) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);\n                curX += 7;\n                break;\n        }\n        strPos++;\n    }\n}\n\nvoid handle_menu_scrolling(s8 scrollDirection, s8 *currentIndex, s8 minIndex, s8 maxIndex) {\n    u8 index = 0;\n\n    if (scrollDirection == MENU_SCROLL_VERTICAL) {\n        if (gPlayer3Controller->rawStickY > 60) {\n            index++;\n        }\n\n        if (gPlayer3Controller->rawStickY < -60) {\n            index += 2;\n        }\n    } else if (scrollDirection == MENU_SCROLL_HORIZONTAL) {\n        if (gPlayer3Controller->rawStickX > 60) {\n            index += 2;\n        }\n\n        if (gPlayer3Controller->rawStickX < -60) {\n            index++;\n        }\n    }\n\n    if (((index ^ gMenuHoldKeyIndex) & index) == 2) {\n        if (*currentIndex == maxIndex) {\n            //! Probably originally a >=, but later replaced with an == and an else statement.\n            *currentIndex = maxIndex;\n        } else {\n            play_sound(SOUND_MENU_CHANGE_SELECT, gGlobalSoundSource);\n            (*currentIndex)++;\n        }\n    }\n\n    if (((index ^ gMenuHoldKeyIndex) & index) == 1) {\n        if (*currentIndex == minIndex) {\n            // Same applies to here as above\n        } else {\n            play_sound(SOUND_MENU_CHANGE_SELECT, gGlobalSoundSource);\n            (*currentIndex)--;\n        }\n    }\n\n    if (gMenuHoldKeyTimer == 10) {\n        gMenuHoldKeyTimer = 8;\n        gMenuHoldKeyIndex = 0;\n    } else {\n        gMenuHoldKeyTimer++;\n        gMenuHoldKeyIndex = index;\n    }\n\n    if ((index & 3) == 0) {\n        gMenuHoldKeyTimer = 0;\n    }\n}\n\n// EU has both get_str_x_pos_from_center and get_str_x_pos_from_center_scale\n// JP, US, Shindou and iQue only implement one or the other\n#if defined(VERSION_US) || defined(VERSION_EU) || defined(VERSION_CN)\ns16 get_str_x_pos_from_center(s16 centerPos, u8 *str, UNUSED f32 scale) {\n    s16 strPos = 0;\n    f32 spacesWidth = 0.0f;\n\n#ifdef VERSION_CN\n    while (!(str[strPos] == DIALOG_CHAR_SPECIAL_MODIFIER && str[strPos + 1] == DIALOG_CHAR_TERMINATOR)) {\n        u16 character = (str[strPos] << 8) | str[strPos + 1];\n        if (character <= 0xFF) {\n            spacesWidth += gDialogCharWidths[character];\n        } else {\n            spacesWidth += 16.0;\n        }\n        strPos += 2;\n    }\n#else\n    while (str[strPos] != DIALOG_CHAR_TERMINATOR) {\n        spacesWidth += gDialogCharWidths[str[strPos]];\n        strPos++;\n    }\n#endif\n    // return the x position of where the string starts as half the string's\n    // length from the position of the provided center.\n    return (s16)(centerPos - (s16)(spacesWidth / 2.0));\n}\n#endif\n\n#if defined(VERSION_JP) || defined(VERSION_EU) || defined(VERSION_SH)\ns16 get_str_x_pos_from_center_scale(s16 centerPos, u8 *str, f32 scale) {\n    s16 strPos = 0;\n    f32 charsWidth = 0.0f;\n    f32 spacesWidth = 0.0f;\n\n    while (str[strPos] != DIALOG_CHAR_TERMINATOR) {\n        //! EU checks for dakuten and handakuten despite dialog code unable to handle it\n        if (str[strPos] == DIALOG_CHAR_SPACE) {\n            spacesWidth += 1.0;\n        } else if (str[strPos] != DIALOG_CHAR_DAKUTEN\n                   && str[strPos] != DIALOG_CHAR_PERIOD_OR_HANDAKUTEN) {\n            charsWidth += 1.0;\n        }\n        strPos++;\n    }\n    // return the x position of where the string starts as half the string's\n    // length from the position of the provided center.\n    return (f32) centerPos - (scale * (charsWidth / 2.0)) - ((scale / 2.0) * (spacesWidth / 2.0));\n}\n#endif\n\n#if defined(VERSION_US) || defined(VERSION_EU) || defined(VERSION_CN)\ns16 get_string_width(u8 *str) {\n    s16 strPos = 0;\n    s16 width = 0;\n\n#ifdef VERSION_CN\n    while (!(str[strPos] == DIALOG_CHAR_SPECIAL_MODIFIER && str[strPos + 1] == DIALOG_CHAR_TERMINATOR)) {\n        u16 character = (str[strPos] << 8) | str[strPos + 1];\n        if (character <= 0xFF) {\n            width += gDialogCharWidths[character];\n        } else {\n            width += 16;\n        }\n        strPos += 2;\n    }\n#else\n    while (str[strPos] != DIALOG_CHAR_TERMINATOR) {\n        width += gDialogCharWidths[str[strPos]];\n        strPos++;\n    }\n#endif\n    return width;\n}\n#endif\n\nu8 gHudSymCoin[] = { GLYPH_COIN, GLYPH_SPACE };\nu8 gHudSymX[] = { GLYPH_MULTIPLY, GLYPH_SPACE };\n\nvoid print_hud_my_score_coins(s32 useCourseCoinScore, s8 fileIndex, s8 courseIndex, s16 x, s16 y) {\n    u8 strNumCoins[4];\n    s16 numCoins;\n\n    if (!useCourseCoinScore) {\n        numCoins = (u16)(save_file_get_max_coin_score(courseIndex) & 0xFFFF);\n    } else {\n        numCoins = save_file_get_course_coin_score(fileIndex, courseIndex);\n    }\n\n    if (numCoins != 0) {\n        print_hud_lut_string(HUD_LUT_GLOBAL, x, y, gHudSymCoin);\n        print_hud_lut_string(HUD_LUT_GLOBAL, x + 16, y, gHudSymX);\n        int_to_str(numCoins, strNumCoins);\n        print_hud_lut_string(HUD_LUT_GLOBAL, x + 32, y, strNumCoins);\n    }\n}\n\nvoid print_hud_my_score_stars(s8 fileIndex, s8 courseIndex, s16 x, s16 y) {\n    u8 strStarCount[4];\n    s16 starCount;\n    u8 textSymStar[] = { GLYPH_STAR, GLYPH_SPACE };\n    UNUSED u16 unused;\n    u8 textSymX[] = { GLYPH_MULTIPLY, GLYPH_SPACE };\n\n    starCount = save_file_get_course_star_count(fileIndex, courseIndex);\n\n    if (starCount != 0) {\n        print_hud_lut_string(HUD_LUT_GLOBAL, x, y, textSymStar);\n        print_hud_lut_string(HUD_LUT_GLOBAL, x + 16, y, textSymX);\n        int_to_str(starCount, strStarCount);\n        print_hud_lut_string(HUD_LUT_GLOBAL, x + 32, y, strStarCount);\n    }\n}\n\nvoid int_to_str(s32 num, u8 *dst) {\n    s32 digit1;\n    s32 digit2;\n    s32 digit3;\n\n    s8 pos = 0;\n\n    if (num > 999) {\n        dst[0] = 0x00; dst[1] = DIALOG_CHAR_TERMINATOR;\n        return;\n    }\n\n    digit1 = num / 100;\n    digit2 = (num - digit1 * 100) / 10;\n    digit3 = (num - digit1 * 100) - (digit2 * 10);\n\n    if (digit1 != 0) {\n        dst[pos] = digit1; pos++;\n    }\n\n    if (digit2 != 0 || digit1 != 0) {\n        dst[pos] = digit2; pos++;\n    }\n\n    dst[pos] = digit3;\n    pos++;\n    dst[pos] = DIALOG_CHAR_TERMINATOR;\n}\n\n#ifdef VERSION_CN\nvoid int_to_str_2(s32 num, u8 *dst) {\n    s32 digit1;\n    s32 digit2;\n    s32 digit3;\n\n    s8 pos = 0;\n\n    if (num > 999) {\n        dst[0] = 0x00;\n        dst[1] = 0x00;\n        dst[2] = DIALOG_CHAR_SPECIAL_MODIFIER;\n        dst[3] = DIALOG_CHAR_TERMINATOR;\n        return;\n    }\n\n    digit1 = num / 100;\n    digit2 = (num - digit1 * 100) / 10;\n    digit3 = (num - digit1 * 100) - (digit2 * 10);\n\n    if (digit1 != 0) {\n        dst[pos] = 0x00;\n        pos++;\n        dst[pos] = digit1;\n        pos++;\n    }\n\n    if (digit2 != 0 || digit1 != 0) {\n        dst[pos] = 0x00;\n        pos++;\n        dst[pos] = digit2;\n        pos++;\n    }\n\n    dst[pos] = 0x00;\n    pos++;\n    dst[pos] = digit3;\n    pos++;\n    dst[pos] = DIALOG_CHAR_SPECIAL_MODIFIER;\n    pos++;\n    dst[pos] = DIALOG_CHAR_TERMINATOR;\n}\n#endif\n\ns16 get_dialog_id(void) {\n    return gDialogID;\n}\n\nvoid create_dialog_box(s16 dialog) {\n    if (gDialogID == DIALOG_NONE) {\n        gDialogID = dialog;\n        gDialogBoxType = DIALOG_TYPE_ROTATE;\n    }\n}\n\nvoid create_dialog_box_with_var(s16 dialog, s32 dialogVar) {\n    if (gDialogID == DIALOG_NONE) {\n        gDialogID = dialog;\n        gDialogVariable = dialogVar;\n        gDialogBoxType = DIALOG_TYPE_ROTATE;\n    }\n}\n\nvoid create_dialog_inverted_box(s16 dialog) {\n    if (gDialogID == DIALOG_NONE) {\n        gDialogID = dialog;\n        gDialogBoxType = DIALOG_TYPE_ZOOM;\n    }\n}\n\nvoid create_dialog_box_with_response(s16 dialog) {\n    if (gDialogID == DIALOG_NONE) {\n        gDialogID = dialog;\n        gDialogBoxType = DIALOG_TYPE_ROTATE;\n        gDialogWithChoice = TRUE;\n    }\n}\n\nvoid reset_dialog_render_state(void) {\n    level_set_transition(0, NULL);\n\n    if (gDialogBoxType == DIALOG_TYPE_ZOOM) {\n        trigger_cutscene_dialog(2);\n    }\n\n    gDialogBoxScale = DIALOG_BOX_SCALE_DEFAULT;\n    gDialogBoxAngle = DIALOG_BOX_ANGLE_DEFAULT;\n    gMenuState = MENU_STATE_DEFAULT;\n    gDialogID = DIALOG_NONE;\n    gDialogPageStartStrIndex = 0;\n    gDialogWithChoice = FALSE;\n    gNextDialogPageStartStrIndex = 0;\n    gDialogResponse = DIALOG_RESPONSE_NONE;\n}\n\n#if defined(VERSION_JP) || defined(VERSION_SH)\n    #define X_VAL1 -5.0f\n    #define Y_VAL1 2.0\n    #define Y_VAL2 4\n#else\n    #define X_VAL1 -7.0f\n    #define Y_VAL1 5.0\n    #define Y_VAL2 5.0f\n#endif\n\nvoid render_dialog_box_type(struct DialogEntry *dialog, s8 linesPerBox) {\n#ifndef VERSION_CN\n    UNUSED u8 filler[4];\n#endif\n\n    create_dl_translation_matrix(MENU_MTX_NOPUSH, dialog->leftOffset, dialog->width, 0);\n\n    switch (gDialogBoxType) {\n        case DIALOG_TYPE_ROTATE: // Renders a dialog black box with zoom and rotation\n            if (gMenuState == MENU_STATE_DIALOG_OPENING || gMenuState == MENU_STATE_DIALOG_CLOSING) {\n                create_dl_scale_matrix(MENU_MTX_NOPUSH, 1.0 / gDialogBoxScale, 1.0 / gDialogBoxScale, 1.0f);\n                // convert the speed into angle\n                create_dl_rotation_matrix(MENU_MTX_NOPUSH, gDialogBoxAngle * 4.0f, 0, 0, 1.0f);\n            }\n            gDPSetEnvColor(gDisplayListHead++, 0, 0, 0, 150);\n            break;\n        case DIALOG_TYPE_ZOOM: // Renders a dialog white box with zoom\n            if (gMenuState == MENU_STATE_DIALOG_OPENING || gMenuState == MENU_STATE_DIALOG_CLOSING) {\n                create_dl_translation_matrix(MENU_MTX_NOPUSH, 65.0 - (65.0 / gDialogBoxScale),\n                                              (40.0 / gDialogBoxScale) - 40, 0);\n                create_dl_scale_matrix(MENU_MTX_NOPUSH, 1.0 / gDialogBoxScale, 1.0 / gDialogBoxScale, 1.0f);\n            }\n            gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, 150);\n            break;\n    }\n\n    create_dl_translation_matrix(MENU_MTX_PUSH, X_VAL1, Y_VAL1, 0);\n#ifdef VERSION_CN\n    create_dl_scale_matrix(MENU_MTX_NOPUSH, 1.1f, ((f32)(linesPerBox + 1) / Y_VAL2) + 0.1, 1.0f);\n#else\n    create_dl_scale_matrix(MENU_MTX_NOPUSH, 1.1f, ((f32) linesPerBox / Y_VAL2) + 0.1, 1.0f);\n#endif\n\n    gSPDisplayList(gDisplayListHead++, dl_draw_text_bg_box);\n    gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);\n}\n\nvoid change_and_flash_dialog_text_color_lines(s8 colorMode, s8 lineNum) {\n    u8 color;\n\n    if (colorMode == 1) { // unused\n        if (lineNum == 1) {\n            gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, 255);\n        } else {\n            if (lineNum == gMenuLineNum) {\n                color = sins(gMenuTextColorTransTimer) * 50.0f + 200.0f;\n                gDPSetEnvColor(gDisplayListHead++, color, color, color, 255);\n            } else {\n                gDPSetEnvColor(gDisplayListHead++, 200, 200, 200, 255);\n            }\n        }\n    } else {\n        switch (gDialogBoxType) {\n            case DIALOG_TYPE_ROTATE:\n                break;\n            case DIALOG_TYPE_ZOOM:\n                gDPSetEnvColor(gDisplayListHead++, 0, 0, 0, 255);\n                break;\n        }\n    }\n}\n\n#ifdef VERSION_EU\nvoid render_generic_dialog_char_at_pos(struct DialogEntry *dialog, s16 x, s16 y, u8 c) {\n    s16 width = (8.0 - (gDialogBoxScale * 0.8));\n    s16 height = (16.0 - (gDialogBoxScale * 0.8));\n    s16 tmpX = (dialog->leftOffset + (65.0 - (65.0 / gDialogBoxScale)));\n    s16 tmpY = ((240 - dialog->width) - ((40.0 / gDialogBoxScale) - 40));\n    s16 xCoord = (tmpX + (x / gDialogBoxScale));\n    s16 yCoord = (tmpY + (y / gDialogBoxScale));\n\n    void **fontLUT = segmented_to_virtual(main_font_lut);\n    void *packedTexture = segmented_to_virtual(fontLUT[c]);\n    void *unpackedTexture = alloc_ia4_tex_from_i1(packedTexture, 8, 8);\n\n    gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_IA, G_IM_SIZ_16b, 1, VIRTUAL_TO_PHYSICAL(unpackedTexture));\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_tex_settings);\n    gSPTextureRectangleFlip(gDisplayListHead++, xCoord << 2, (yCoord - height) << 2,\n                            (xCoord + width) << 2, yCoord << 2, G_TX_RENDERTILE, 8 << 6, 4 << 6, 1 << 10, 1 << 10);\n}\n#endif\n\n#if defined(VERSION_JP) || defined(VERSION_SH)\n    #define X_VAL3 5.0f\n    #define Y_VAL3 20\n#elif defined(VERSION_CN)\n    #define X_VAL3 0.0f\n    #define Y_VAL3 20\n#else\n    #define X_VAL3 0.0f\n    #define Y_VAL3 16\n#endif\n\n#ifdef VERSION_EU\nvoid handle_dialog_scroll_page_state(s8 lineNum, s8 totalLines, s8 *pageState, s8 *xMatrix)\n#else\nvoid handle_dialog_scroll_page_state(s8 lineNum, s8 totalLines, s8 *pageState, s8 *xMatrix, s16 *linePos)\n#endif\n{\n#ifndef VERSION_EU\n    gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);\n#endif\n\n    if (lineNum == totalLines) {\n        *pageState = DIALOG_PAGE_STATE_SCROLL;\n        return;\n    }\n#ifdef VERSION_EU\n    gDialogY += 16;\n#else\n    create_dl_translation_matrix(MENU_MTX_PUSH, X_VAL3, 2 - (lineNum * Y_VAL3), 0);\n\n    *linePos = 0;\n#endif\n    *xMatrix = 1;\n}\n\n#if defined(VERSION_JP) || defined(VERSION_SH)\nvoid adjust_pos_and_print_period_char(s8 *xMatrix, s16 *linePos) {\n    if (*linePos != 0) {\n        create_dl_translation_matrix(MENU_MTX_NOPUSH, 10 * *xMatrix, 0, 0);\n    }\n\n    create_dl_translation_matrix(MENU_MTX_PUSH, -2.0f, -5.0f, 0);\n    render_generic_char(DIALOG_CHAR_PERIOD_OR_HANDAKUTEN);\n\n    gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);\n\n    (*linePos)++;\n    *xMatrix = 1;\n}\n#endif\n\n#ifdef VERSION_EU\nvoid render_star_count_dialog_text(struct DialogEntry *dialog, s8 *linePos)\n#else\nvoid render_star_count_dialog_text(s8 *xMatrix, s16 *linePos)\n#endif\n{\n    s8 tensDigit = gDialogVariable / 10;\n    s8 onesDigit = gDialogVariable - (tensDigit * 10); // remainder\n\n    if (tensDigit != 0) {\n#if defined(VERSION_JP) || defined(VERSION_SH)\n        create_dl_translation_matrix(MENU_MTX_NOPUSH, 10 * *xMatrix, 0, 0);\n        render_generic_char(tensDigit);\n#elif defined(VERSION_US) || defined(VERSION_CN)\n        if (*xMatrix != 1) {\n            create_dl_translation_matrix(\n                MENU_MTX_NOPUSH, (f32)(gDialogCharWidths[DIALOG_CHAR_SPACE] * *xMatrix), 0, 0);\n        }\n\n        render_generic_char(tensDigit);\n        create_dl_translation_matrix(MENU_MTX_NOPUSH, (f32) gDialogCharWidths[tensDigit], 0, 0);\n        *xMatrix = 1;\n        (*linePos)++;\n#elif defined(VERSION_EU)\n        render_generic_dialog_char_at_pos(dialog, gDialogX, gDialogY, tensDigit);\n        gDialogX += gDialogCharWidths[tensDigit];\n        *linePos = 1;\n#endif\n    }\n#ifndef VERSION_EU\n    else {\n#if defined(VERSION_JP) || defined(VERSION_SH)\n        (*xMatrix)++;\n#endif\n    }\n#endif\n\n#ifndef VERSION_EU\n#if defined(VERSION_JP) || defined(VERSION_SH)\n    create_dl_translation_matrix(MENU_MTX_NOPUSH, 10 * *xMatrix, 0, 0);\n    render_generic_char(onesDigit);\n#elif defined(VERSION_US) || defined(VERSION_CN)\n    if (*xMatrix != 1) {\n        create_dl_translation_matrix(\n            MENU_MTX_NOPUSH, (f32)(gDialogCharWidths[DIALOG_CHAR_SPACE] * (*xMatrix - 1)), 0, 0);\n    }\n\n    render_generic_char(onesDigit);\n    create_dl_translation_matrix(MENU_MTX_NOPUSH, (f32) gDialogCharWidths[onesDigit], 0, 0);\n#endif\n    (*linePos)++;\n    *xMatrix = 1;\n#else // VERSION_EU\n    render_generic_dialog_char_at_pos(dialog, gDialogX, gDialogY, onesDigit);\n    gDialogX += gDialogCharWidths[onesDigit];\n    *linePos = 1;\n#endif\n}\n\n#if defined(VERSION_US) || defined(VERSION_EU) || defined(VERSION_CN)\n#ifdef VERSION_EU\nvoid render_multi_text_string_lines(s8 multiTextId, s8 lineNum, s8 linesPerBox, UNUSED s8 xMatrix, s8 lowerBound, struct DialogEntry *dialog)\n#else\nvoid render_multi_text_string_lines(s8 multiTextId, s8 lineNum, s16 *linePos, s8 linesPerBox, s8 xMatrix, s8 lowerBound)\n#endif\n{\n    s8 i;\n    struct MultiTextEntry textLengths[2] = {\n        { { 3, TEXT_THE_RAW } },\n        { { 3, TEXT_YOU_RAW } },\n    };\n\n    if (lineNum >= lowerBound && lineNum <= (lowerBound + linesPerBox)) {\n#ifndef VERSION_EU\n        if (*linePos != 0 || xMatrix != 1) {\n            create_dl_translation_matrix(\n                MENU_MTX_NOPUSH, (gDialogCharWidths[DIALOG_CHAR_SPACE] * (xMatrix - 1)), 0, 0);\n        }\n#endif\n        for (i = 0; i < textLengths[multiTextId].str[0]; i++) {\n#ifdef VERSION_EU\n            render_generic_dialog_char_at_pos(dialog, gDialogX, gDialogY, textLengths[multiTextId].str[1 + i]);\n            gDialogX += gDialogCharWidths[textLengths[multiTextId].str[1 + i]];\n#else\n            render_generic_char(textLengths[multiTextId].str[1 + i]);\n            create_dl_translation_matrix(\n                MENU_MTX_NOPUSH, (gDialogCharWidths[textLengths[multiTextId].str[1 + i]]), 0, 0);\n#endif\n        }\n    }\n\n#ifndef VERSION_EU\n    linePos += textLengths[multiTextId].str[0];\n#endif\n}\n#endif\n\n#ifdef VERSION_EU\nvoid render_dialog_lowercase_diacritic(struct DialogEntry *dialog, u8 chr, u8 diacritic) {\n    render_generic_dialog_char_at_pos(dialog, gDialogX, gDialogY, chr);\n    render_generic_dialog_char_at_pos(dialog, gDialogX, gDialogY, diacritic + 0xE7);\n    gDialogX += gDialogCharWidths[chr];\n}\n\nvoid render_dialog_uppercase_diacritic(struct DialogEntry *dialog, u8 chr, u8 diacritic) {\n    render_generic_dialog_char_at_pos(dialog, gDialogX, gDialogY, chr);\n    render_generic_dialog_char_at_pos(dialog, gDialogX, gDialogY - 4, diacritic + 0xE3);\n    gDialogX += gDialogCharWidths[chr];\n}\n#endif\n\nu32 ensure_nonnegative(s16 value) {\n    if (value < 0) {\n        value = 0;\n    }\n\n    return value;\n}\n\n#ifdef VERSION_JP\nvoid handle_dialog_text_and_pages(s8 colorMode, struct DialogEntry *dialog)\n#else\nvoid handle_dialog_text_and_pages(s8 colorMode, struct DialogEntry *dialog, s8 lowerBound)\n#endif\n{\n    UNUSED u64 filler;\n#ifdef VERSION_EU\n    s16 startY = 14;\n#endif\n#ifdef VERSION_CN\n    s32 strChar;\n#else\n    u8 strChar;\n#endif\n    u8 *str = segmented_to_virtual(dialog->str);\n    s8 lineNum = 1;\n    s8 totalLines;\n    s8 pageState = DIALOG_PAGE_STATE_NONE;\n    UNUSED s8 mark = DIALOG_MARK_NONE; // only used in JP and SH\n    s8 xMatrix = 1;\n    s8 linesPerBox = dialog->linesPerBox;\n    s16 strIndex;\n#ifndef VERSION_EU\n    s16 linePos = 0;\n#endif\n\n    if (gMenuState == MENU_STATE_DIALOG_SCROLLING) {\n        // If scrolling, consider the number of lines for both\n        // the current page and the page being scrolled to.\n#ifdef VERSION_CN\n        totalLines = linesPerBox * 2 - 1;\n#else\n        totalLines = linesPerBox * 2 + 1;\n#endif\n    } else {\n#ifdef VERSION_CN\n        totalLines = linesPerBox;\n#else\n        totalLines = linesPerBox + 1;\n#endif\n    }\n\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_begin);\n\n    strIndex = gDialogPageStartStrIndex;\n\n#ifdef VERSION_EU\n    gDialogX = 0;\n    gDialogY = startY;\n#endif\n\n    if (gMenuState == MENU_STATE_DIALOG_SCROLLING) {\n#ifdef VERSION_EU\n        gDialogY -= gDialogScrollOffsetY;\n#else\n        create_dl_translation_matrix(MENU_MTX_NOPUSH, 0, (f32) gDialogScrollOffsetY, 0);\n#endif\n    }\n\n#ifndef VERSION_EU\n    create_dl_translation_matrix(MENU_MTX_PUSH, X_VAL3, 2 - lineNum * Y_VAL3, 0);\n#endif\n\n    while (pageState == DIALOG_PAGE_STATE_NONE) {\n        change_and_flash_dialog_text_color_lines(colorMode, lineNum);\n\n#ifdef VERSION_CN\n        strChar = str[strIndex] << 8 | str[strIndex + 1];\n#else\n        strChar = str[strIndex];\n#endif\n\n        switch (strChar) {\n            case SPECIAL_CHAR(DIALOG_CHAR_TERMINATOR):\n                pageState = DIALOG_PAGE_STATE_END;\n#ifndef VERSION_EU\n                gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);\n#endif\n                break;\n            case SPECIAL_CHAR(DIALOG_CHAR_NEWLINE):\n                lineNum++;\n#ifdef VERSION_EU\n                handle_dialog_scroll_page_state(lineNum, totalLines, &pageState, &xMatrix);\n                gDialogX = 0;\n#else\n                handle_dialog_scroll_page_state(lineNum, totalLines, &pageState, &xMatrix, &linePos);\n#ifdef VERSION_SH\n                mark = DIALOG_MARK_NONE;\n#endif\n#endif\n                break;\n\n#ifdef VERSION_EU\n            case SPECIAL_CHAR(DIALOG_CHAR_LOWER_A_GRAVE):\n            case SPECIAL_CHAR(DIALOG_CHAR_LOWER_A_CIRCUMFLEX):\n            case SPECIAL_CHAR(DIALOG_CHAR_LOWER_A_UMLAUT):\n                render_dialog_lowercase_diacritic(dialog, ASCII_TO_DIALOG('a'), strChar & 0xF);\n                break;\n            case SPECIAL_CHAR(DIALOG_CHAR_UPPER_A_GRAVE):\n            case SPECIAL_CHAR(DIALOG_CHAR_UPPER_A_CIRCUMFLEX):\n            case SPECIAL_CHAR(DIALOG_CHAR_UPPER_A_UMLAUT):\n                render_dialog_uppercase_diacritic(dialog, ASCII_TO_DIALOG('A'), strChar & 0xF);\n                break;\n            case SPECIAL_CHAR(DIALOG_CHAR_LOWER_E_GRAVE):\n            case SPECIAL_CHAR(DIALOG_CHAR_LOWER_E_CIRCUMFLEX):\n            case SPECIAL_CHAR(DIALOG_CHAR_LOWER_E_UMLAUT):\n            case SPECIAL_CHAR(DIALOG_CHAR_LOWER_E_ACUTE):\n                render_dialog_lowercase_diacritic(dialog, ASCII_TO_DIALOG('e'), strChar & 0xF);\n                break;\n            case SPECIAL_CHAR(DIALOG_CHAR_UPPER_E_GRAVE):\n            case SPECIAL_CHAR(DIALOG_CHAR_UPPER_E_CIRCUMFLEX):\n            case SPECIAL_CHAR(DIALOG_CHAR_UPPER_E_UMLAUT):\n            case SPECIAL_CHAR(DIALOG_CHAR_UPPER_E_ACUTE):\n                render_dialog_uppercase_diacritic(dialog, ASCII_TO_DIALOG('E'), strChar & 0xF);\n                break;\n            case SPECIAL_CHAR(DIALOG_CHAR_LOWER_U_GRAVE):\n            case SPECIAL_CHAR(DIALOG_CHAR_LOWER_U_CIRCUMFLEX):\n            case SPECIAL_CHAR(DIALOG_CHAR_LOWER_U_UMLAUT):\n                render_dialog_lowercase_diacritic(dialog, ASCII_TO_DIALOG('u'), strChar & 0xF);\n                break;\n            case SPECIAL_CHAR(DIALOG_CHAR_UPPER_U_GRAVE):\n            case SPECIAL_CHAR(DIALOG_CHAR_UPPER_U_CIRCUMFLEX):\n            case SPECIAL_CHAR(DIALOG_CHAR_UPPER_U_UMLAUT):\n                render_dialog_uppercase_diacritic(dialog, ASCII_TO_DIALOG('U'), strChar & 0xF);\n                break;\n            case SPECIAL_CHAR(DIALOG_CHAR_LOWER_O_CIRCUMFLEX):\n            case SPECIAL_CHAR(DIALOG_CHAR_LOWER_O_UMLAUT):\n                render_dialog_lowercase_diacritic(dialog, ASCII_TO_DIALOG('o'), strChar & 0xF);\n                break;\n            case SPECIAL_CHAR(DIALOG_CHAR_UPPER_O_CIRCUMFLEX):\n            case SPECIAL_CHAR(DIALOG_CHAR_UPPER_O_UMLAUT):\n                render_dialog_uppercase_diacritic(dialog, ASCII_TO_DIALOG('O'), strChar & 0xF);\n                break;\n            case SPECIAL_CHAR(DIALOG_CHAR_LOWER_I_CIRCUMFLEX):\n            case SPECIAL_CHAR(DIALOG_CHAR_LOWER_I_UMLAUT):\n                render_dialog_lowercase_diacritic(dialog, DIALOG_CHAR_I_NO_DIA, strChar & 0xF);\n                break;\n#else\n            case SPECIAL_CHAR(DIALOG_CHAR_DAKUTEN):\n#ifndef VERSION_CN\n                mark = DIALOG_MARK_DAKUTEN;\n#endif\n                break;\n            case SPECIAL_CHAR(DIALOG_CHAR_PERIOD_OR_HANDAKUTEN):\n#ifndef VERSION_CN\n                mark = DIALOG_MARK_HANDAKUTEN;\n#endif\n                break;\n#endif\n\n#ifdef VERSION_CN\n            case SPECIAL_CHAR(DIALOG_CHAR_STAR_OPEN): // ???\n                xMatrix += 2;\n                linePos += 2;\n                break;\n#endif\n\n            case SPECIAL_CHAR(DIALOG_CHAR_SPACE):\n#ifdef VERSION_EU\n                gDialogX += gDialogCharWidths[DIALOG_CHAR_SPACE];\n#else\n#if defined(VERSION_JP) || defined(VERSION_SH)\n                if (linePos != 0) {\n#endif\n                    xMatrix++;\n#if defined(VERSION_JP) || defined(VERSION_SH)\n                }\n#endif\n                linePos++;\n#endif\n                break;\n\n#if defined(VERSION_JP) || defined(VERSION_SH)\n            case SPECIAL_CHAR(DIALOG_CHAR_PERIOD):\n                adjust_pos_and_print_period_char(&xMatrix, &linePos);\n                break;\n#else\n            case SPECIAL_CHAR(DIALOG_CHAR_SLASH):\n#ifdef VERSION_EU\n                gDialogX += gDialogCharWidths[DIALOG_CHAR_SPACE] * 2;\n#else\n                xMatrix += 2;\n                linePos += 2;\n#endif\n                break;\n            case SPECIAL_CHAR(DIALOG_CHAR_MULTI_THE):\n#ifdef VERSION_EU\n                render_multi_text_string_lines(STRING_THE, lineNum, linesPerBox, xMatrix, lowerBound, dialog);\n#else\n                render_multi_text_string_lines(STRING_THE, lineNum, &linePos, linesPerBox, xMatrix, lowerBound);\n#endif\n                xMatrix = 1;\n                break;\n            case SPECIAL_CHAR(DIALOG_CHAR_MULTI_YOU):\n#ifdef VERSION_EU\n                render_multi_text_string_lines(STRING_YOU, lineNum, linesPerBox, xMatrix, lowerBound, dialog);\n#else\n                render_multi_text_string_lines(STRING_YOU, lineNum, &linePos, linesPerBox, xMatrix, lowerBound);\n#endif\n                xMatrix = 1;\n                break;\n#endif\n\n            case SPECIAL_CHAR(DIALOG_CHAR_STAR_COUNT):\n#ifdef VERSION_EU\n                render_star_count_dialog_text(dialog, &xMatrix);\n#else\n                render_star_count_dialog_text(&xMatrix, &linePos);\n#endif\n                break;\n\n#ifdef VERSION_EU\n            case SPECIAL_CHAR(DIALOG_CHAR_DOUBLE_LOW_QUOTE):\n                render_generic_dialog_char_at_pos(dialog, gDialogX, gDialogY + 8, 0xF6);\n                gDialogX += gDialogCharWidths[0xF6];\n                break;\n#endif\n\n            default: // any other character\n#ifdef VERSION_CN\n                if (strChar >= 0x0100) {\n                    strChar = strChar * 2 - 0x0100;\n\n                    if (lineNum < lowerBound || lineNum > (lowerBound + linesPerBox)) {\n                        break;\n                    }\n\n                    if (linePos != 0 || xMatrix != 1) {\n                        create_dl_translation_matrix(MENU_MTX_NOPUSH, gDialogCharWidths[DIALOG_CHAR_SPACE] * (xMatrix - 1), 0.0f, 0.0f);\n                    }\n\n                    render_generic_char_cn(strChar);\n                    create_dl_translation_matrix(MENU_MTX_NOPUSH, 8.0f, 0.0f, 0.0f);\n                    render_generic_char_cn(strChar + 1);\n                    create_dl_translation_matrix(MENU_MTX_NOPUSH, 8.0f, 0.0f, 0.0f);\n                } else {\n                    if (lineNum < lowerBound || lineNum > (lowerBound + linesPerBox)) {\n                        break;\n                    }\n\n                    if (linePos != 0 || xMatrix != 1) {\n                        create_dl_translation_matrix(MENU_MTX_NOPUSH, gDialogCharWidths[DIALOG_CHAR_SPACE] * (xMatrix - 1), 0.0f, 0.0f);\n                    }\n\n                    render_generic_char(strChar);\n                    create_dl_translation_matrix(MENU_MTX_NOPUSH, gDialogCharWidths[strChar], 0.0f, 0.0f);\n                }\n\n                xMatrix = 1;\n                linePos++;\n#elif defined(VERSION_JP) || defined(VERSION_SH)\n#ifdef VERSION_SH\n                if (lineNum >= lowerBound && lineNum <= (lowerBound + linesPerBox)) {\n#endif\n                    if (linePos != 0) {\n                        create_dl_translation_matrix(MENU_MTX_NOPUSH, 10 * xMatrix, 0, 0);\n                    }\n\n                    render_generic_char(strChar);\n                    xMatrix = 1;\n                    linePos++;\n\n                    if (mark != DIALOG_MARK_NONE) {\n                        create_dl_translation_matrix(MENU_MTX_PUSH, 5.0f, 7.0f, 0);\n                        render_generic_char(DIALOG_CHAR_MARK_START + mark);\n                        gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);\n                        mark = DIALOG_MARK_NONE;\n                    }\n#ifdef VERSION_SH\n                }\n#endif\n#elif defined(VERSION_US)\n                if (lineNum >= lowerBound && lineNum <= (lowerBound + linesPerBox)) {\n                    if (linePos != 0 || xMatrix != 1) {\n                        create_dl_translation_matrix(\n                            MENU_MTX_NOPUSH, (f32)(gDialogCharWidths[DIALOG_CHAR_SPACE] * (xMatrix - 1)), 0, 0);\n                    }\n\n                    render_generic_char(strChar);\n                    create_dl_translation_matrix(MENU_MTX_NOPUSH, (f32)(gDialogCharWidths[strChar]), 0, 0);\n                    xMatrix = 1;\n                    linePos++;\n                }\n#else // VERSION_EU\n                if (lineNum >= lowerBound && lineNum <= (lowerBound + linesPerBox)) {\n                    render_generic_dialog_char_at_pos(dialog, gDialogX, gDialogY, strChar);\n                }\n                gDialogX += gDialogCharWidths[strChar];\n#endif\n        }\n\n#ifdef VERSION_JP\n        if (linePos == 12) {\n            if (str[strIndex + 1] == DIALOG_CHAR_PERIOD) {\n                adjust_pos_and_print_period_char(&xMatrix, &linePos);\n                strIndex++;\n            }\n\n            if (str[strIndex + 1] == DIALOG_CHAR_COMMA) {\n                create_dl_translation_matrix(MENU_MTX_NOPUSH, 10 * xMatrix, 0, 0);\n                render_generic_char(DIALOG_CHAR_COMMA);\n                strIndex++;\n            }\n\n            if (str[strIndex + 1] == DIALOG_CHAR_NEWLINE) {\n                strIndex++;\n            }\n\n            if (str[strIndex + 1] == DIALOG_CHAR_TERMINATOR) {\n                pageState = DIALOG_PAGE_STATE_END;\n                gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);\n                break; // exit loop\n            } else {\n                lineNum++;\n                handle_dialog_scroll_page_state(lineNum, totalLines, &pageState, &xMatrix, &linePos);\n            }\n        }\n#endif\n\n#ifdef VERSION_CN\n        strIndex += 2;\n#else\n        strIndex++;\n#endif\n    }\n\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_end);\n\n    if (gMenuState == MENU_STATE_DIALOG_OPEN) {\n        if (pageState == DIALOG_PAGE_STATE_END) {\n            gNextDialogPageStartStrIndex = -1;\n        } else {\n            gNextDialogPageStartStrIndex = strIndex;\n        }\n    }\n\n    gLastDialogLineNum = lineNum;\n}\n\n#if defined(VERSION_JP) || defined(VERSION_SH)\n    #define X_VAL4_1 50\n    #define X_VAL4_2 25\n    #define Y_VAL4_1 1\n    #define Y_VAL4_2 20\n#elif defined(VERSION_CN)\n    #define X_VAL4_1 58\n    #define X_VAL4_2 0\n    #define Y_VAL4_1 2\n    #define Y_VAL4_2 20\n#else\n    #define X_VAL4_1 56\n    #define X_VAL4_2 9\n    #define Y_VAL4_1 2\n    #define Y_VAL4_2 16\n#endif\n\nvoid render_dialog_triangle_choice(void) {\n    if (gMenuState == MENU_STATE_DIALOG_OPEN) {\n        handle_menu_scrolling(MENU_SCROLL_HORIZONTAL, &gMenuLineNum, 1, 2);\n    }\n\n    create_dl_translation_matrix(MENU_MTX_NOPUSH, ((gMenuLineNum - 1) * X_VAL4_1) + X_VAL4_2, Y_VAL4_1 - (gLastDialogLineNum * Y_VAL4_2), 0);\n\n    if (gDialogBoxType == DIALOG_TYPE_ROTATE) { // White Text\n        gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, 255);\n    } else { // Black Text\n        gDPSetEnvColor(gDisplayListHead++, 0, 0, 0, 255);\n    }\n\n    gSPDisplayList(gDisplayListHead++, dl_draw_triangle);\n}\n\n#if defined(VERSION_JP) || defined(VERSION_SH)\n    #define X_VAL5 123.0f\n    #define Y_VAL5_1 -20\n    #define Y_VAL5_2 2\n    #define X_Y_VAL6 0.8f\n#elif defined(VERSION_US)\n    #define X_VAL5 118.0f\n    #define Y_VAL5_1 -16\n    #define Y_VAL5_2 5\n    #define X_Y_VAL6 0.8f\n#elif defined(VERSION_EU)\n    #define X_VAL5 122.0f\n    #define Y_VAL5_1 -16\n    #define Y_VAL5_2 3\n    #define X_Y_VAL6 0.5f\n#elif defined(VERSION_CN)\n    #define X_VAL5 118.0f\n    #define Y_VAL5_1 -18\n    #define Y_VAL5_2 5\n    #define X_Y_VAL6 0.8f\n#endif\n\nvoid render_dialog_triangle_next(s8 linesPerBox) {\n    s32 globalTimer = gGlobalTimer;\n\n    if (globalTimer & 8) {\n        return;\n    }\n\n    create_dl_translation_matrix(MENU_MTX_PUSH, X_VAL5, (linesPerBox * Y_VAL5_1) + Y_VAL5_2, 0);\n    create_dl_scale_matrix(MENU_MTX_NOPUSH, X_Y_VAL6, X_Y_VAL6, 1.0f);\n    create_dl_rotation_matrix(MENU_MTX_NOPUSH, -90.0f, 0, 0, 1.0f);\n\n    if (gDialogBoxType == DIALOG_TYPE_ROTATE) { // White Text\n        gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, 255);\n    } else { // Black Text\n        gDPSetEnvColor(gDisplayListHead++, 0, 0, 0, 255);\n    }\n\n    gSPDisplayList(gDisplayListHead++, dl_draw_triangle);\n    gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);\n}\n\nvoid handle_special_dialog_text(s16 dialogID) { // dialog ID tables, in order\n    // King Bob-omb (Start), Whomp (Start), King Bob-omb (throw him out), Eyerock (Start), Wiggler (Start)\n    s16 dialogBossStart[] = { DIALOG_017, DIALOG_114, DIALOG_128, DIALOG_117, DIALOG_150 };\n    // Koopa the Quick (BoB), Koopa the Quick (THI), Penguin Race, Fat Penguin Race (120 stars)\n    s16 dialogRaceSound[] = { DIALOG_005, DIALOG_009, DIALOG_055, DIALOG_164 };\n    // Red Switch, Green Switch, Blue Switch, 100 coins star, Bowser Red Coin Star\n    s16 dialogStarSound[] = { DIALOG_010, DIALOG_011, DIALOG_012, DIALOG_013, DIALOG_014 };\n    // King Bob-omb (Start), Whomp (Defeated), King Bob-omb (Defeated, missing in JP), Eyerock (Defeated), Wiggler (Defeated)\n#if BUGFIX_KING_BOB_OMB_FADE_MUSIC\n    s16 dialogBossStop[] = { DIALOG_017, DIALOG_115, DIALOG_116, DIALOG_118, DIALOG_152 };\n#else\n    //! @bug JP misses King Bob-omb defeated DIALOG_116, meaning that the boss music will still\n    //! play after King Bob-omb is defeated until BoB loads it's music after the star cutscene\n    s16 dialogBossStop[] = { DIALOG_017, DIALOG_115, DIALOG_118, DIALOG_152 };\n#endif\n    s16 i;\n\n    for (i = 0; i < (s16) ARRAY_COUNT(dialogBossStart); i++) {\n        if (dialogBossStart[i] == dialogID) {\n            seq_player_unlower_volume(SEQ_PLAYER_LEVEL, 60);\n            play_music(SEQ_PLAYER_LEVEL, SEQUENCE_ARGS(4, SEQ_EVENT_BOSS), 0);\n            return;\n        }\n    }\n\n    for (i = 0; i < (s16) ARRAY_COUNT(dialogRaceSound); i++) {\n        if (dialogRaceSound[i] == dialogID && gMenuLineNum == DIALOG_RESPONSE_YES) {\n            play_race_fanfare();\n            return;\n        }\n    }\n\n    for (i = 0; i < (s16) ARRAY_COUNT(dialogStarSound); i++) {\n        if (dialogStarSound[i] == dialogID && gMenuLineNum == DIALOG_RESPONSE_YES) {\n            play_sound(SOUND_MENU_STAR_SOUND, gGlobalSoundSource);\n            return;\n        }\n    }\n\n    for (i = 0; i < (s16) ARRAY_COUNT(dialogBossStop); i++) {\n        if (dialogBossStop[i] == dialogID) {\n            seq_player_fade_out(SEQ_PLAYER_LEVEL, 1);\n            return;\n        }\n    }\n}\n\ns16 gMenuMode = MENU_MODE_NONE;\n\n#ifdef VERSION_CN\nu8 gEndCutsceneStrEn0[] = { TEXT_EMPTY_STRING };\nu8 gEndCutsceneStrEn1[] = { TEXT_EMPTY_STRING };\nu8 gEndCutsceneStrEn2[] = { TEXT_EMPTY_STRING };\nu8 gEndCutsceneStrEn3[] = { TEXT_EMPTY_STRING };\nu8 gEndCutsceneStrEn4[] = { TEXT_EMPTY_STRING };\nu8 gEndCutsceneStrEn5[] = { TEXT_EMPTY_STRING };\nu8 gEndCutsceneStrEn6[] = { TEXT_EMPTY_STRING };\nu8 gEndCutsceneStrEn7[] = { TEXT_EMPTY_STRING };\nu8 gEndCutsceneStrEn8[] = { TEXT_EMPTY_STRING };\n#else\nu8 gEndCutsceneStrEn0[] = { TEXT_FILE_MARIO_EXCLAMATION };\nu8 gEndCutsceneStrEn1[] = { TEXT_POWER_STARS_RESTORED };\nu8 gEndCutsceneStrEn2[] = { TEXT_THANKS_TO_YOU };\nu8 gEndCutsceneStrEn3[] = { TEXT_THANK_YOU_MARIO };\nu8 gEndCutsceneStrEn4[] = { TEXT_SOMETHING_SPECIAL };\nu8 gEndCutsceneStrEn5[] = { TEXT_LISTEN_EVERYBODY };\nu8 gEndCutsceneStrEn6[] = { TEXT_LETS_HAVE_CAKE };\nu8 gEndCutsceneStrEn7[] = { TEXT_FOR_MARIO };\nu8 gEndCutsceneStrEn8[] = { TEXT_FILE_MARIO_QUESTION };\n#endif\n\nu8 *gEndCutsceneStringsEn[] = {\n    gEndCutsceneStrEn0,\n    gEndCutsceneStrEn1,\n    gEndCutsceneStrEn2,\n    gEndCutsceneStrEn3,\n    gEndCutsceneStrEn4,\n    gEndCutsceneStrEn5,\n    gEndCutsceneStrEn6,\n    gEndCutsceneStrEn7,\n    // This [8] string is actually unused. In the cutscene handler, the developers do not\n    // set the 8th one, but use the first string again at the very end, so Peach ends up\n    // saying \"Mario!\" twice. It is likely that she was originally meant to say \"Mario?\" at\n    // the end but the developers changed their mind, possibly because the line recorded\n    // sounded more like an exclamation than a question.\n    gEndCutsceneStrEn8,\n    NULL\n};\n\n#ifdef VERSION_EU\nu8 gEndCutsceneStrFr0[] = { TEXT_FILE_MARIO_EXCLAMATION };\nu8 gEndCutsceneStrFr1[] = { TEXT_POWER_STARS_RESTORED_FR };\nu8 gEndCutsceneStrFr2[] = { TEXT_THANKS_TO_YOU_FR };\nu8 gEndCutsceneStrFr3[] = { TEXT_THANK_YOU_MARIO_FR };\nu8 gEndCutsceneStrFr4[] = { TEXT_SOMETHING_SPECIAL_FR };\nu8 gEndCutsceneStrFr5[] = { TEXT_COME_ON_EVERYBODY_FR };\nu8 gEndCutsceneStrFr6[] = { TEXT_LETS_HAVE_CAKE_FR };\nu8 gEndCutsceneStrFr7[] = { TEXT_FOR_MARIO_FR };\nu8 gEndCutsceneStrFr8[] = { TEXT_FILE_MARIO_QUESTION };\n\nu8 *gEndCutsceneStringsFr[] = {\n    gEndCutsceneStrFr0,\n    gEndCutsceneStrFr1,\n    gEndCutsceneStrFr2,\n    gEndCutsceneStrFr3,\n    gEndCutsceneStrFr4,\n    gEndCutsceneStrFr5,\n    gEndCutsceneStrFr6,\n    gEndCutsceneStrFr7,\n    gEndCutsceneStrFr8,\n    NULL\n};\n\nu8 gEndCutsceneStrDe0[] = { TEXT_FILE_MARIO_EXCLAMATION };\nu8 gEndCutsceneStrDe1[] = { TEXT_POWER_STARS_RESTORED_DE };\nu8 gEndCutsceneStrDe2[] = { TEXT_THANKS_TO_YOU_DE };\nu8 gEndCutsceneStrDe3[] = { TEXT_THANK_YOU_MARIO_DE };\nu8 gEndCutsceneStrDe4[] = { TEXT_SOMETHING_SPECIAL_DE };\nu8 gEndCutsceneStrDe5[] = { TEXT_COME_ON_EVERYBODY_DE };\nu8 gEndCutsceneStrDe6[] = { TEXT_LETS_HAVE_CAKE_DE };\nu8 gEndCutsceneStrDe7[] = { TEXT_FOR_MARIO_DE };\nu8 gEndCutsceneStrDe8[] = { TEXT_FILE_MARIO_QUESTION };\n\nu8 *gEndCutsceneStringsDe[] = {\n    gEndCutsceneStrDe0,\n    gEndCutsceneStrDe1,\n    gEndCutsceneStrDe2,\n    gEndCutsceneStrDe3,\n    gEndCutsceneStrDe4,\n    gEndCutsceneStrDe5,\n    gEndCutsceneStrDe6,\n    gEndCutsceneStrDe7,\n    gEndCutsceneStrDe8,\n    NULL\n};\n#endif\n\nu16 gCutsceneMsgFade = 0;\ns16 gCutsceneMsgIndex = -1;\ns16 gCutsceneMsgDuration = -1;\ns16 gCutsceneMsgTimer = 0;\ns8 gDialogCameraAngleIndex = CAM_SELECTION_MARIO;\ns8 gDialogCourseActNum = 1;\n\n#if defined(VERSION_JP) || defined(VERSION_SH)\n    #define DIAG_VAL1 20\n    #define DIAG_VAL2 240\n    #define DIAG_VAL3 130\n    #define DIAG_VAL4 4\n#else\n    #define DIAG_VAL1 16\n#if defined(VERSION_US) || defined(VERSION_CN)\n    #define DIAG_VAL2 240\n#else\n    #define DIAG_VAL2 238\n#endif\n    #define DIAG_VAL3 132\n    #define DIAG_VAL4 5\n#endif\n\nvoid render_dialog_entries(void) {\n#ifdef VERSION_EU\n    s8 lowerBound;\n#endif\n    void **dialogTable;\n    struct DialogEntry *dialog;\n#if defined(VERSION_US) || defined(VERSION_SH) || defined(VERSION_CN)\n    s8 lowerBound;\n#endif\n\n#ifdef VERSION_EU\n    gInGameLanguage = eu_get_language();\n    switch (gInGameLanguage) {\n        case LANGUAGE_ENGLISH:\n            dialogTable = segmented_to_virtual(dialog_table_eu_en);\n            break;\n        case LANGUAGE_FRENCH:\n            dialogTable = segmented_to_virtual(dialog_table_eu_fr);\n            break;\n        case LANGUAGE_GERMAN:\n            dialogTable = segmented_to_virtual(dialog_table_eu_de);\n            break;\n    }\n#else\n    dialogTable = segmented_to_virtual(seg2_dialog_table);\n#endif\n    dialog = segmented_to_virtual(dialogTable[gDialogID]);\n\n    // if the dialog entry is invalid, set the ID to DIALOG_NONE.\n    if (dialog == segmented_to_virtual(NULL)) {\n        gDialogID = DIALOG_NONE;\n        return;\n    }\n\n#ifdef VERSION_EU\n    gDialogX = 0;\n    gDialogY = 0;\n#endif\n\n    switch (gMenuState) {\n        case MENU_STATE_DIALOG_OPENING:\n            if (gDialogBoxAngle == DIALOG_BOX_ANGLE_DEFAULT) {\n                play_dialog_sound(gDialogID);\n                play_sound(SOUND_MENU_MESSAGE_APPEAR, gGlobalSoundSource);\n            }\n\n            if (gDialogBoxType == DIALOG_TYPE_ROTATE) {\n                gDialogBoxAngle -= 7.5;\n                gDialogBoxScale -= 1.5;\n            } else {\n                gDialogBoxAngle -= 10.0;\n                gDialogBoxScale -= 2.0;\n            }\n\n            if (gDialogBoxAngle == 0.0f) {\n                gMenuState = MENU_STATE_DIALOG_OPEN;\n                gMenuLineNum = 1;\n            }\n#ifndef VERSION_JP\n            lowerBound = 1;\n#endif\n            break;\n\n        case MENU_STATE_DIALOG_OPEN:\n            gDialogBoxAngle = 0.0f;\n\n            if ((gPlayer3Controller->buttonPressed & A_BUTTON)\n             || (gPlayer3Controller->buttonPressed & B_BUTTON)) {\n                if (gNextDialogPageStartStrIndex == -1) {\n                    handle_special_dialog_text(gDialogID);\n                    gMenuState = MENU_STATE_DIALOG_CLOSING;\n                } else {\n                    gMenuState = MENU_STATE_DIALOG_SCROLLING;\n                    play_sound(SOUND_MENU_MESSAGE_NEXT_PAGE, gGlobalSoundSource);\n                }\n            }\n#ifndef VERSION_JP\n            lowerBound = 1;\n#endif\n            break;\n\n        case MENU_STATE_DIALOG_SCROLLING:\n            gDialogScrollOffsetY += dialog->linesPerBox * 2;\n\n            if (gDialogScrollOffsetY >= dialog->linesPerBox * DIAG_VAL1) {\n                gDialogPageStartStrIndex = gNextDialogPageStartStrIndex;\n                gMenuState = MENU_STATE_DIALOG_OPEN;\n                gDialogScrollOffsetY = 0;\n            }\n#ifndef VERSION_JP\n            lowerBound = (gDialogScrollOffsetY / DIAG_VAL1) + 1;\n#endif\n            break;\n\n        case MENU_STATE_DIALOG_CLOSING:\n            if (gDialogBoxAngle == 20.0f) {\n                level_set_transition(0, NULL);\n                play_sound(SOUND_MENU_MESSAGE_DISAPPEAR, gGlobalSoundSource);\n\n                if (gDialogBoxType == DIALOG_TYPE_ZOOM) {\n                    trigger_cutscene_dialog(2);\n                }\n\n                gDialogResponse = gMenuLineNum;\n            }\n\n            gDialogBoxAngle += 10.0f;\n            gDialogBoxScale += 2.0f;\n\n            if (gDialogBoxAngle == DIALOG_BOX_ANGLE_DEFAULT) {\n                gMenuState = MENU_STATE_DEFAULT;\n                gDialogID = DIALOG_NONE;\n                gDialogPageStartStrIndex = 0;\n                gDialogWithChoice = FALSE;\n                gNextDialogPageStartStrIndex = 0;\n                gDialogResponse = DIALOG_RESPONSE_NONE;\n            }\n#ifndef VERSION_JP\n            lowerBound = 1;\n#endif\n            break;\n    }\n\n    render_dialog_box_type(dialog, dialog->linesPerBox);\n\n#ifdef VERSION_CN\n// This isn't really a diff. The iQue compiler doesn't allow the use of ifdefs inside a macro for some reason, so those were eliminated.\n#ifdef WIDESCREEN\n#define ulx 0\n#define lrx SCREEN_WIDTH\n#else\n#define ulx ensure_nonnegative(dialog->leftOffset)\n#define lrx ensure_nonnegative(dialog->leftOffset + DIAG_VAL3)\n#endif\n    gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, ulx, ensure_nonnegative(DIAG_VAL2 - dialog->width),\n        lrx, ensure_nonnegative((256 - dialog->width) + (dialog->linesPerBox * 80 / DIAG_VAL4)));\n#undef ulx\n#undef lrx\n#else\n    gDPSetScissor(\n        gDisplayListHead++, G_SC_NON_INTERLACE,\n        // Horizontal scissoring isn't really required and can potentially mess up widescreen enhancements.\n#ifdef WIDESCREEN\n        0,\n#else\n        ensure_nonnegative(dialog->leftOffset),\n#endif\n        ensure_nonnegative(DIAG_VAL2 - dialog->width),\n#ifdef VERSION_EU\n#ifdef WIDESCREEN\n        SCREEN_WIDTH,\n#else\n        ensure_nonnegative(dialog->leftOffset + (DIAG_VAL3 / gDialogBoxScale)),\n#endif\n        ensure_nonnegative((240 - dialog->width) + (dialog->linesPerBox * 80 / DIAG_VAL4 / gDialogBoxScale))\n#else\n#ifdef WIDESCREEN\n        SCREEN_WIDTH,\n#else\n        ensure_nonnegative(dialog->leftOffset + DIAG_VAL3),\n#endif\n        ensure_nonnegative((240 - dialog->width) + (dialog->linesPerBox * 80 / DIAG_VAL4))\n#endif\n    );\n#endif\n\n#ifdef VERSION_JP\n    handle_dialog_text_and_pages(0, dialog);\n#else\n    handle_dialog_text_and_pages(0, dialog, lowerBound);\n#endif\n\n    if (gNextDialogPageStartStrIndex == -1 && gDialogWithChoice == TRUE) {\n        render_dialog_triangle_choice();\n    }\n\n    #ifdef VERSION_EU\n    #undef BORDER_HEIGHT\n    #define BORDER_HEIGHT 8\n    #endif\n    gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 2, 2, SCREEN_WIDTH - BORDER_HEIGHT / 2, SCREEN_HEIGHT - BORDER_HEIGHT / 2);\n    #ifdef VERSION_EU\n    #undef BORDER_HEIGHT\n    #define BORDER_HEIGHT 1\n    #endif\n\n    if (gNextDialogPageStartStrIndex != -1 && gMenuState == MENU_STATE_DIALOG_OPEN) {\n        render_dialog_triangle_next(dialog->linesPerBox);\n    }\n}\n\n// Calls a gMenuMode value defined by render_menus_and_dialogs cases\nvoid set_menu_mode(s16 mode) {\n    if (gMenuMode == MENU_MODE_NONE) {\n        gMenuMode = mode;\n    }\n}\n\nvoid reset_cutscene_msg_fade(void) {\n    gCutsceneMsgFade = 0;\n}\n\nvoid dl_rgba16_begin_cutscene_msg_fade(void) {\n    gSPDisplayList(gDisplayListHead++, dl_rgba16_text_begin);\n    gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, gCutsceneMsgFade);\n}\n\nvoid dl_rgba16_stop_cutscene_msg_fade(void) {\n    gSPDisplayList(gDisplayListHead++, dl_rgba16_text_end);\n\n    if (gCutsceneMsgFade < 250) {\n        gCutsceneMsgFade += 25;\n    } else {\n        gCutsceneMsgFade = 255;\n    }\n}\n\nu8 ascii_to_credits_char(u8 c) {\n    if (c >= 'A' && c <= 'Z') {\n        return (c - ('A' - 0xA));\n    }\n\n    if (c >= 'a' && c <= 'z') { // remap lower to upper case\n        return (c - ('a' - 0xA));\n    }\n\n    if (c == ' ') {\n        return GLOBAL_CHAR_SPACE;\n    }\n\n    if (c == '.') {\n        return 0x24;\n    }\n\n    if (c == '3') {\n        return ASCII_TO_DIALOG('3');\n    }\n\n    if (c == '4') {\n        return ASCII_TO_DIALOG('4');\n    }\n\n    if (c == '6') {\n        return ASCII_TO_DIALOG('6');\n    }\n\n    return GLOBAL_CHAR_SPACE;\n}\n\nvoid print_credits_str_ascii(s16 x, s16 y, const char *str) {\n    s32 pos = 0;\n    u8 c = str[pos];\n    u8 creditStr[100];\n\n    while (c != '\\0') {\n        creditStr[pos++] = ascii_to_credits_char(c);\n        c = str[pos];\n    }\n\n    creditStr[pos] = GLOBAL_CHAR_TERMINATOR;\n\n    print_credits_string(x, y, creditStr);\n}\n\nvoid set_cutscene_message(s16 xOffset, s16 yOffset, s16 msgIndex, s16 msgDuration) {\n    // is message done printing?\n    if (gCutsceneMsgIndex == -1) {\n        gCutsceneMsgIndex = msgIndex;\n        gCutsceneMsgDuration = msgDuration;\n        gCutsceneMsgTimer = 0;\n        gCutsceneMsgXOffset = xOffset;\n        gCutsceneMsgYOffset = yOffset;\n        gCutsceneMsgFade = 0;\n    }\n}\n\nvoid do_cutscene_handler(void) {\n    s16 x;\n\n    // is a cutscene playing? do not perform this handler's actions if so.\n    if (gCutsceneMsgIndex == -1) {\n        return;\n    }\n\n    create_dl_ortho_matrix();\n\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_begin);\n    gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, gCutsceneMsgFade);\n\n#ifdef VERSION_EU\n    switch (eu_get_language()) {\n        case LANGUAGE_ENGLISH:\n            x = get_str_x_pos_from_center(gCutsceneMsgXOffset, gEndCutsceneStringsEn[gCutsceneMsgIndex], 10.0f);\n            print_generic_string(x, 240 - gCutsceneMsgYOffset, gEndCutsceneStringsEn[gCutsceneMsgIndex]);\n            break;\n        case LANGUAGE_FRENCH:\n            x = get_str_x_pos_from_center(gCutsceneMsgXOffset, gEndCutsceneStringsFr[gCutsceneMsgIndex], 10.0f);\n            print_generic_string(x, 240 - gCutsceneMsgYOffset, gEndCutsceneStringsFr[gCutsceneMsgIndex]);\n            break;\n        case LANGUAGE_GERMAN:\n            x = get_str_x_pos_from_center(gCutsceneMsgXOffset, gEndCutsceneStringsDe[gCutsceneMsgIndex], 10.0f);\n            print_generic_string(x, 240 - gCutsceneMsgYOffset, gEndCutsceneStringsDe[gCutsceneMsgIndex]);\n            break;\n    }\n#else\n    // get the x coordinate of where the cutscene string starts.\n    x = get_str_x_pos_from_center(gCutsceneMsgXOffset, gEndCutsceneStringsEn[gCutsceneMsgIndex], 10.0f);\n    print_generic_string(x, 240 - gCutsceneMsgYOffset, gEndCutsceneStringsEn[gCutsceneMsgIndex]);\n#endif\n\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_end);\n\n    // if the timing variable is less than 5, increment\n    // the fade until we are at full opacity.\n    if (gCutsceneMsgTimer < 5) {\n        gCutsceneMsgFade += 50;\n    }\n\n    // if the cutscene frame length + the fade-in counter is\n    // less than the timer, it means we have exceeded the\n    // time that the message is supposed to remain on\n    // screen. if (message_duration = 50) and (msg_timer = 55)\n    // then after the first 5 frames, the message will remain\n    // on screen for another 50 frames until it starts fading.\n    if (gCutsceneMsgDuration + 5 < gCutsceneMsgTimer) {\n        gCutsceneMsgFade -= 50;\n    }\n\n    // like the first check, it takes 5 frames to fade out, so\n    // perform a + 10 to account for the earlier check (10-5=5).\n    if (gCutsceneMsgDuration + 10 < gCutsceneMsgTimer) {\n        gCutsceneMsgIndex = -1;\n        gCutsceneMsgFade = 0;\n        gCutsceneMsgTimer = 0;\n        return;\n    }\n\n    gCutsceneMsgTimer++;\n}\n\n#ifdef VERSION_JP\n    #define PEACH_MESSAGE_TIMER 170\n#else\n    #define PEACH_MESSAGE_TIMER 250\n#endif\n\n#if defined(VERSION_JP) || defined(VERSION_SH)\n    #define STR_X 53\n    #define STR_Y 136\n#else\n    #define STR_X 38\n    #define STR_Y 142\n#endif\n\n// \"Dear Mario\" message handler\nvoid print_peach_letter_message(void) {\n    void **dialogTable;\n    struct DialogEntry *dialog;\n    u8 *str;\n\n#ifdef VERSION_EU\n    gInGameLanguage = eu_get_language();\n    switch (gInGameLanguage) {\n        case LANGUAGE_ENGLISH:\n            dialogTable = segmented_to_virtual(dialog_table_eu_en);\n            break;\n        case LANGUAGE_FRENCH:\n            dialogTable = segmented_to_virtual(dialog_table_eu_fr);\n            break;\n        case LANGUAGE_GERMAN:\n            dialogTable = segmented_to_virtual(dialog_table_eu_de);\n            break;\n    }\n#else\n    dialogTable = segmented_to_virtual(seg2_dialog_table);\n#endif\n    dialog = segmented_to_virtual(dialogTable[gDialogID]);\n    str = segmented_to_virtual(dialog->str);\n\n    create_dl_translation_matrix(MENU_MTX_PUSH, 97.0f, 118.0f, 0);\n\n    gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, gCutsceneMsgFade);\n    gSPDisplayList(gDisplayListHead++, castle_grounds_seg7_dl_0700EA58);\n    gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_begin);\n    gDPSetEnvColor(gDisplayListHead++, 20, 20, 20, gCutsceneMsgFade);\n\n    print_generic_string(STR_X, STR_Y, str);\n#if defined(VERSION_JP)\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_end);\n#endif\n    gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, 255);\n#ifndef VERSION_JP\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_end);\n    gDPSetEnvColor(gDisplayListHead++, 200, 80, 120, gCutsceneMsgFade);\n    gSPDisplayList(gDisplayListHead++, castle_grounds_seg7_us_dl_0700F2E8);\n#endif\n\n    // at the start/end of message, reset the fade.\n    if (gCutsceneMsgTimer == 0) {\n        gCutsceneMsgFade = 0;\n    }\n\n    // we're less than 20 increments, so increase the fade.\n    if (gCutsceneMsgTimer < 20) {\n        gCutsceneMsgFade += 10;\n    }\n\n    // we're after PEACH_MESSAGE_TIMER increments, so decrease the fade.\n    if (gCutsceneMsgTimer > PEACH_MESSAGE_TIMER) {\n        gCutsceneMsgFade -= 10;\n    }\n\n    // 20 increments after the start of the decrease, we're\n    // back where we are, so reset everything at the end.\n    if (gCutsceneMsgTimer > (PEACH_MESSAGE_TIMER + 20)) {\n        gCutsceneMsgIndex = -1;\n        gCutsceneMsgFade = 0; //! uselessly reset since the next execution will just set it to 0 again.\n        gDialogID = DIALOG_NONE;\n        gCutsceneMsgTimer = 0;\n        return; // return to avoid incrementing the timer\n    }\n\n    gCutsceneMsgTimer++;\n}\n\n/**\n * Renders the cannon reticle when Mario is inside a cannon.\n * Formed by four triangles.\n */\nvoid render_hud_cannon_reticle(void) {\n    create_dl_translation_matrix(MENU_MTX_PUSH, 160.0f, 120.0f, 0);\n\n    gDPSetEnvColor(gDisplayListHead++, 50, 50, 50, 180);\n    create_dl_translation_matrix(MENU_MTX_PUSH, -20.0f, -8.0f, 0);\n    gSPDisplayList(gDisplayListHead++, dl_draw_triangle);\n    gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);\n\n    create_dl_translation_matrix(MENU_MTX_PUSH, 20.0f, 8.0f, 0);\n    create_dl_rotation_matrix(MENU_MTX_NOPUSH, 180.0f, 0, 0, 1.0f);\n    gSPDisplayList(gDisplayListHead++, dl_draw_triangle);\n    gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);\n\n    create_dl_translation_matrix(MENU_MTX_PUSH, 8.0f, -20.0f, 0);\n    create_dl_rotation_matrix(MENU_MTX_NOPUSH, 90.0f, 0, 0, 1.0f);\n    gSPDisplayList(gDisplayListHead++, dl_draw_triangle);\n    gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);\n\n    create_dl_translation_matrix(MENU_MTX_PUSH, -8.0f, 20.0f, 0);\n    create_dl_rotation_matrix(MENU_MTX_NOPUSH, -90.0f, 0, 0, 1.0f);\n    gSPDisplayList(gDisplayListHead++, dl_draw_triangle);\n    gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);\n\n    gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);\n}\n\nvoid reset_red_coins_collected(void) {\n    gRedCoinsCollected = 0;\n}\n\nvoid change_dialog_camera_angle(void) {\n    if (cam_select_alt_mode(0) == CAM_SELECTION_MARIO) {\n        gDialogCameraAngleIndex = CAM_SELECTION_MARIO;\n    } else {\n        gDialogCameraAngleIndex = CAM_SELECTION_FIXED;\n    }\n}\n\nvoid shade_screen(void) {\n    create_dl_translation_matrix(MENU_MTX_PUSH, GFX_DIMENSIONS_FROM_LEFT_EDGE(0), SCREEN_HEIGHT, 0);\n\n    // This is a bit weird. It reuses the dialog text box (width 130, height -80),\n    // so scale to at least fit the screen.\n#ifdef WIDESCREEN\n    create_dl_scale_matrix(MENU_MTX_NOPUSH,\n                           GFX_DIMENSIONS_ASPECT_RATIO * SCREEN_HEIGHT / 130.0f, 3.0f, 1.0f);\n#else\n    create_dl_scale_matrix(MENU_MTX_NOPUSH, 2.6f, 3.4f, 1.0f);\n#endif\n\n    gDPSetEnvColor(gDisplayListHead++, 0, 0, 0, 110);\n    gSPDisplayList(gDisplayListHead++, dl_draw_text_bg_box);\n    gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);\n}\n\nvoid print_animated_red_coin(s16 x, s16 y) {\n    u32 globalTimer = gGlobalTimer;\n\n    create_dl_translation_matrix(MENU_MTX_PUSH, x, y, 0);\n    create_dl_scale_matrix(MENU_MTX_NOPUSH, 0.2f, 0.2f, 1.0f);\n    gDPSetRenderMode(gDisplayListHead++, G_RM_TEX_EDGE, G_RM_TEX_EDGE2);\n\n    switch (globalTimer & 6) {\n        case 0:\n            gSPDisplayList(gDisplayListHead++, coin_seg3_dl_03007940);\n            break;\n        case 2:\n            gSPDisplayList(gDisplayListHead++, coin_seg3_dl_03007968);\n            break;\n        case 4:\n            gSPDisplayList(gDisplayListHead++, coin_seg3_dl_03007990);\n            break;\n        case 6:\n            gSPDisplayList(gDisplayListHead++, coin_seg3_dl_030079B8);\n            break;\n    }\n\n    gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);\n    gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);\n}\n\nvoid render_pause_red_coins(void) {\n    s8 x;\n\n    for (x = 0; x < gRedCoinsCollected; x++) {\n        print_animated_red_coin(GFX_DIMENSIONS_FROM_RIGHT_EDGE(30) - x * 20, 16);\n    }\n}\n\n#ifdef VERSION_EU\nu8 gTextCourse[][7] = {\n    { TEXT_COURSE },\n    { TEXT_COURSE_FR },\n    { TEXT_COURSE_DE }\n};\n#define textCourse gTextCourse\n#endif\n\n#if defined(VERSION_JP) || defined(VERSION_SH)\n    #define CRS_NUM_X1 93\n#elif defined(VERSION_US) || defined(VERSION_CN)\n    #define CRS_NUM_X1 100\n#elif defined(VERSION_EU)\n    #define CRS_NUM_X1 get_string_width(LANGUAGE_ARRAY(textCourse)) + 51\n#endif\n\n#if defined(VERSION_EU)\n    #define TXT_COURSE_X      48\n    #define TXT_STAR_X        89\n    #define ACT_NAME_X        107\n    #define CRS_NAME_START    3\n    #define CRS_NAME_X        108\n    #define SECRET_CRS_NAME_X get_str_x_pos_from_center(159, &courseName[CRS_NAME_START], 10.0f)\n    #define MYSCORE_X         48\n#elif defined(VERSION_CN)\n    #define TXT_COURSE_X      63\n    #define TXT_STAR_X        98\n    #define ACT_NAME_X        112\n    #define CRS_NAME_START    6\n    #define CRS_NAME_X        117\n    #define SECRET_CRS_NAME_X 94\n    #define MYSCORE_X         42\n#else\n    #define TXT_COURSE_X      63\n    #define TXT_STAR_X        98\n    #define ACT_NAME_X        116\n    #define CRS_NAME_START    3\n    #define CRS_NAME_X        117\n    #define SECRET_CRS_NAME_X 94\n    #define MYSCORE_X         62\n#endif\n\nvoid render_pause_my_score_coins(void) {\n#ifdef VERSION_EU\n    u8 textMyScore[][10] = {\n        { TEXT_MY_SCORE },\n        { TEXT_MY_SCORE_FR },\n        { TEXT_MY_SCORE_DE }\n    };\n#else\n    u8 textCourse[] = { TEXT_COURSE };\n    u8 textMyScore[] = { TEXT_MY_SCORE };\n#endif\n    u8 textStar[] = { TEXT_STAR_DIFF };\n    u8 textUnfilledStar[] = { TEXT_UNFILLED_STAR };\n\n    u8 strCourseNum[4];\n    void **courseNameTbl;\n    u8 *courseName;\n    void **actNameTbl;\n    u8 *actName;\n    u8 courseIndex;\n    u8 starFlags;\n\n#ifndef VERSION_EU\n    courseNameTbl = segmented_to_virtual(seg2_course_name_table);\n    actNameTbl = segmented_to_virtual(seg2_act_name_table);\n#endif\n\n    courseIndex = COURSE_NUM_TO_INDEX(gCurrCourseNum);\n    starFlags = save_file_get_star_flags(gCurrSaveFileNum - 1, COURSE_NUM_TO_INDEX(gCurrCourseNum));\n\n#ifdef VERSION_EU\n    switch (gInGameLanguage) {\n        case LANGUAGE_ENGLISH:\n            actNameTbl = segmented_to_virtual(act_name_table_eu_en);\n            courseNameTbl = segmented_to_virtual(course_name_table_eu_en);\n            break;\n        case LANGUAGE_FRENCH:\n            actNameTbl = segmented_to_virtual(act_name_table_eu_fr);\n            courseNameTbl = segmented_to_virtual(course_name_table_eu_fr);\n            break;\n        case LANGUAGE_GERMAN:\n            actNameTbl = segmented_to_virtual(act_name_table_eu_de);\n            courseNameTbl = segmented_to_virtual(course_name_table_eu_de);\n            break;\n    }\n#endif\n\n    gSPDisplayList(gDisplayListHead++, dl_rgba16_text_begin);\n    gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, gMenuTextAlpha);\n\n    if (courseIndex <= COURSE_NUM_TO_INDEX(COURSE_STAGES_MAX)) {\n        print_hud_my_score_coins(1, gCurrSaveFileNum - 1, courseIndex, 178, 103);\n        print_hud_my_score_stars(gCurrSaveFileNum - 1, courseIndex, 118, 103);\n    }\n\n    gSPDisplayList(gDisplayListHead++, dl_rgba16_text_end);\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_begin);\n\n    gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, gMenuTextAlpha);\n\n    if (courseIndex <= COURSE_NUM_TO_INDEX(COURSE_STAGES_MAX)\n        && save_file_get_course_star_count(gCurrSaveFileNum - 1, courseIndex) != 0) {\n        print_generic_string(MYSCORE_X, 121, LANGUAGE_ARRAY(textMyScore));\n    }\n\n    courseName = segmented_to_virtual(courseNameTbl[courseIndex]);\n\n    if (courseIndex <= COURSE_NUM_TO_INDEX(COURSE_STAGES_MAX)) {\n        print_generic_string(TXT_COURSE_X, 157, LANGUAGE_ARRAY(textCourse));\n        INT_TO_STR_DIFF(gCurrCourseNum, strCourseNum);\n        print_generic_string(CRS_NUM_X1, 157, strCourseNum);\n\n        actName = segmented_to_virtual(actNameTbl[COURSE_NUM_TO_INDEX(gCurrCourseNum) * 6 + gDialogCourseActNum - 1]);\n\n        if (starFlags & (1 << (gDialogCourseActNum - 1))) {\n            print_generic_string(TXT_STAR_X, 140, textStar);\n        } else {\n            print_generic_string(TXT_STAR_X, 140, textUnfilledStar);\n        }\n\n        print_generic_string(ACT_NAME_X, 140, actName);\n#ifndef VERSION_JP\n        print_generic_string(CRS_NAME_X, 157, &courseName[CRS_NAME_START]);\n    } else {\n        print_generic_string(SECRET_CRS_NAME_X, 157, &courseName[CRS_NAME_START]);\n#endif\n    }\n\n#ifdef VERSION_JP\n    print_generic_string(CRS_NAME_X, 157, &courseName[CRS_NAME_START]);\n#endif\n\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_end);\n}\n\n#if defined(VERSION_JP) || defined(VERSION_SH)\n    #define TXT1_X 4\n    #define TXT2_X 116\n    #define Y_VAL7 0\n#else\n    #define TXT1_X 3\n    #define TXT2_X 119\n    #define Y_VAL7 2\n#endif\n\nvoid render_pause_camera_options(s16 x, s16 y, s8 *index, s16 xIndex) {\n    UNUSED_CN u8 textLakituMario[] = { TEXT_LAKITU_MARIO };\n    UNUSED_CN u8 textLakituStop[] = { TEXT_LAKITU_STOP };\n#ifdef VERSION_EU\n    u8 textNormalUpClose[][20] = {\n        { TEXT_NORMAL_UPCLOSE },\n        { TEXT_NORMAL_UPCLOSE_FR },\n        { TEXT_NORMAL_UPCLOSE_DE }\n    };\n    u8 textNormalFixed[][17] = {\n        { TEXT_NORMAL_FIXED },\n        { TEXT_NORMAL_FIXED_FR },\n        { TEXT_NORMAL_FIXED_DE },\n    };\n#else\n    u8 textNormalUpClose[] = { TEXT_NORMAL_UPCLOSE };\n    u8 textNormalFixed[] = { TEXT_NORMAL_FIXED };\n#endif\n\n    handle_menu_scrolling(MENU_SCROLL_HORIZONTAL, index, 1, 2);\n\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_begin);\n    gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, gMenuTextAlpha);\n\n#ifdef VERSION_CN\n    print_generic_string(x + 14, y + 2, textNormalUpClose);\n    print_generic_string(x + 124, y + 2, textNormalFixed);\n#else\n    print_generic_string(x + 14, y + 2, textLakituMario);\n    print_generic_string(x + TXT1_X, y - 13, LANGUAGE_ARRAY(textNormalUpClose));\n    print_generic_string(x + 124, y + 2, textLakituStop);\n    print_generic_string(x + TXT2_X, y - 13, LANGUAGE_ARRAY(textNormalFixed));\n#endif\n\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_end);\n    create_dl_translation_matrix(MENU_MTX_PUSH, x + ((*index - 1) * xIndex), y + Y_VAL7, 0);\n    gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, gMenuTextAlpha);\n    gSPDisplayList(gDisplayListHead++, dl_draw_triangle);\n    gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);\n\n    switch (*index) {\n        case CAM_SELECTION_MARIO:\n            cam_select_alt_mode(CAM_SELECTION_MARIO);\n            break;\n        case CAM_SELECTION_FIXED:\n            cam_select_alt_mode(CAM_SELECTION_FIXED);\n            break;\n    }\n}\n\n#if defined(VERSION_JP) || defined(VERSION_SH)\n    #define X_VAL8 0\n    #define Y_VAL8 4\n    #define Y_OFFSET1 17\n    #define Y_OFFSET2 33\n#elif defined(VERSION_US) || defined(VERSION_EU)\n    #define X_VAL8 4\n    #define Y_VAL8 2\n    #define Y_OFFSET1 17\n    #define Y_OFFSET2 33\n#elif defined(VERSION_CN)\n    #define X_VAL8 4\n    #define Y_VAL8 2\n    #define Y_OFFSET1 20\n    #define Y_OFFSET2 38\n#endif\n\nvoid render_pause_course_options(s16 x, s16 y, s8 *index, s16 yIndex) {\n#ifdef VERSION_EU\n    u8 textContinue[][10] = {\n        { TEXT_CONTINUE },\n        { TEXT_CONTINUE_FR },\n        { TEXT_CONTINUE_DE }\n    };\n    u8 textExitCourse[][15] = {\n        { TEXT_EXIT_COURSE },\n        { TEXT_EXIT_COURSE_FR },\n        { TEXT_EXIT_COURSE_DE }\n    };\n    u8 textCameraAngleR[][24] = {\n        { TEXT_CAMERA_ANGLE_R },\n        { TEXT_CAMERA_ANGLE_R_FR },\n        { TEXT_CAMERA_ANGLE_R_DE }\n    };\n#else\n    u8 textContinue[] = { TEXT_CONTINUE };\n    u8 textExitCourse[] = { TEXT_EXIT_COURSE };\n    u8 textCameraAngleR[] = { TEXT_CAMERA_ANGLE_R };\n#endif\n\n    handle_menu_scrolling(MENU_SCROLL_VERTICAL, index, 1, 3);\n\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_begin);\n    gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, gMenuTextAlpha);\n\n    print_generic_string(x + 10, y - 2, LANGUAGE_ARRAY(textContinue));\n    print_generic_string(x + 10, y - Y_OFFSET1, LANGUAGE_ARRAY(textExitCourse));\n\n    if (*index != MENU_OPT_CAMERA_ANGLE_R) {\n        print_generic_string(x + 10, y - Y_OFFSET2, LANGUAGE_ARRAY(textCameraAngleR));\n        gSPDisplayList(gDisplayListHead++, dl_ia_text_end);\n\n        create_dl_translation_matrix(MENU_MTX_PUSH, x - X_VAL8, (y - ((*index - 1) * yIndex)) - Y_VAL8, 0);\n\n        gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, gMenuTextAlpha);\n        gSPDisplayList(gDisplayListHead++, dl_draw_triangle);\n        gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);\n    }\n\n    if (*index == MENU_OPT_CAMERA_ANGLE_R) {\n        render_pause_camera_options(x - 42, y - 42, &gDialogCameraAngleIndex, 110);\n    }\n}\n\nvoid render_pause_castle_menu_box(s16 x, s16 y) {\n    create_dl_translation_matrix(MENU_MTX_PUSH, x - 78, y - 32, 0);\n    create_dl_scale_matrix(MENU_MTX_NOPUSH, 1.2f, 0.8f, 1.0f);\n    gDPSetEnvColor(gDisplayListHead++, 0, 0, 0, 105);\n    gSPDisplayList(gDisplayListHead++, dl_draw_text_bg_box);\n    gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);\n\n    create_dl_translation_matrix(MENU_MTX_PUSH, x + 6, y - 28, 0);\n    create_dl_rotation_matrix(MENU_MTX_NOPUSH, 90.0f, 0, 0, 1.0f);\n    gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, gMenuTextAlpha);\n    gSPDisplayList(gDisplayListHead++, dl_draw_triangle);\n    gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);\n\n    create_dl_translation_matrix(MENU_MTX_PUSH, x - 9, y - 101, 0);\n    create_dl_rotation_matrix(MENU_MTX_NOPUSH, 270.0f, 0, 0, 1.0f);\n    gSPDisplayList(gDisplayListHead++, dl_draw_triangle);\n    gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);\n}\n\nvoid highlight_last_course_complete_stars(void) {\n    u8 completedCourseIndex;\n\n    if (gLastCompletedCourseNum == COURSE_NONE) {\n        completedCourseIndex = 0;\n    } else {\n        completedCourseIndex = COURSE_NUM_TO_INDEX(gLastCompletedCourseNum);\n\n        if (completedCourseIndex >= COURSE_NUM_TO_INDEX(COURSE_BONUS_STAGES)) {\n            completedCourseIndex = COURSE_NUM_TO_INDEX(COURSE_BONUS_STAGES);\n        }\n    }\n\n    gMenuLineNum = completedCourseIndex;\n}\n\n#if defined(VERSION_EU)\n    #define PAUSE_X get_str_x_pos_from_center_scale(SCREEN_WIDTH / 2, textPause, 12.0f)\n#elif defined(VERSION_CN)\n    #define PAUSE_X 113\n#else\n    #define PAUSE_X 123\n#endif\n\nvoid print_hud_pause_colorful_str(void) {\n    u8 textPause[] = { TEXT_PAUSE };\n\n    gSPDisplayList(gDisplayListHead++, dl_rgba16_text_begin);\n    gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, gMenuTextAlpha);\n\n    print_hud_lut_string(HUD_LUT_GLOBAL, PAUSE_X, 81, textPause);\n\n    gSPDisplayList(gDisplayListHead++, dl_rgba16_text_end);\n}\n\nvoid render_pause_castle_course_stars(s16 x, s16 y, s16 fileIndex, s16 courseIndex) {\n    s16 hasStar = 0;\n\n#ifdef VERSION_CN\n    u8 str[60];\n#else\n    u8 str[30];\n#endif\n\n    u8 textStar[] = { TEXT_STAR };\n\n    u8 starFlags = save_file_get_star_flags(fileIndex, courseIndex);\n    u16 starCount = save_file_get_course_star_count(fileIndex, courseIndex);\n\n    u16 nextStar = 0;\n\n    if (starFlags & (1 << 6)) {\n        starCount--;\n        print_generic_string(x + 89, y - 5, textStar);\n    }\n\n    while (hasStar != starCount) {\n        if (starFlags & (1 << nextStar)) {\n#ifdef VERSION_CN\n            str[nextStar * 4] = 0x00;\n            str[nextStar * 4 + 1] = DIALOG_CHAR_STAR_FILLED;\n#else\n            str[nextStar * 2] = DIALOG_CHAR_STAR_FILLED;\n#endif\n            hasStar++;\n        } else {\n#ifdef VERSION_CN\n            str[nextStar * 4] = 0x00;\n            str[nextStar * 4 + 1] = DIALOG_CHAR_STAR_OPEN;\n#else\n            str[nextStar * 2] = DIALOG_CHAR_STAR_OPEN;\n#endif\n        }\n\n#ifdef VERSION_CN\n        str[nextStar * 4 + 2] = DIALOG_CHAR_SPECIAL_MODIFIER;\n        str[nextStar * 4 + 3] = DIALOG_CHAR_SPACE;\n#else\n        str[nextStar * 2 + 1] = DIALOG_CHAR_SPACE;\n#endif\n        nextStar++;\n    }\n\n    if (starCount == nextStar && starCount != 6) {\n#ifdef VERSION_CN\n        str[nextStar * 4] = DIALOG_CHAR_SPECIAL_MODIFIER;\n        str[nextStar * 4 + 1] = DIALOG_CHAR_SLASH; //! Meant to be DIALOG_CHAR_STAR_OPEN?\n        str[nextStar * 4 + 2] = DIALOG_CHAR_SPECIAL_MODIFIER;\n        str[nextStar * 4 + 3] = DIALOG_CHAR_SPACE;\n#else\n        str[nextStar * 2] = DIALOG_CHAR_STAR_OPEN;\n        str[nextStar * 2 + 1] = DIALOG_CHAR_SPACE;\n#endif\n        nextStar++;\n    }\n\n#ifdef VERSION_CN\n    str[nextStar * 4] = DIALOG_CHAR_SPECIAL_MODIFIER;\n    str[nextStar * 4 + 1] = DIALOG_CHAR_TERMINATOR;\n#else\n    str[nextStar * 2] = DIALOG_CHAR_TERMINATOR;\n#endif\n\n    print_generic_string(x + 14, y + 13, str);\n}\n\nvoid render_pause_castle_main_strings(s16 x, s16 y) {\n#ifdef VERSION_EU\n    void **courseNameTbl;\n#else\n    void **courseNameTbl = segmented_to_virtual(seg2_course_name_table);\n#endif\n\n#ifdef VERSION_EU\n    u8 textCoin[] = { TEXT_COIN };\n    u8 textX[] = { TEXT_VARIABLE_X };\n#else\n    u8 textCoin[] = { TEXT_COIN_X };\n#endif\n\n    void *courseName;\n\n    u8 strVal[8];\n    s16 prevCourseIndex = gMenuLineNum;\n\n#ifdef VERSION_EU\n    switch (gInGameLanguage) {\n        case LANGUAGE_ENGLISH:\n            courseNameTbl = segmented_to_virtual(course_name_table_eu_en);\n            break;\n        case LANGUAGE_FRENCH:\n            courseNameTbl = segmented_to_virtual(course_name_table_eu_fr);\n            break;\n        case LANGUAGE_GERMAN:\n            courseNameTbl = segmented_to_virtual(course_name_table_eu_de);\n            break;\n    }\n#endif\n\n    handle_menu_scrolling(\n        MENU_SCROLL_VERTICAL, &gMenuLineNum,\n        COURSE_NUM_TO_INDEX(COURSE_MIN) - 1, COURSE_NUM_TO_INDEX(COURSE_BONUS_STAGES) + 1\n    );\n\n    if (gMenuLineNum == COURSE_NUM_TO_INDEX(COURSE_BONUS_STAGES) + 1) {\n        gMenuLineNum = COURSE_NUM_TO_INDEX(COURSE_MIN); // Exceeded max, set to min\n    }\n\n    if (gMenuLineNum == COURSE_NUM_TO_INDEX(COURSE_MIN) - 1) {\n        gMenuLineNum = COURSE_NUM_TO_INDEX(COURSE_BONUS_STAGES); // Exceeded min, set to max\n    }\n\n    if (gMenuLineNum != COURSE_NUM_TO_INDEX(COURSE_BONUS_STAGES)) {\n        while (save_file_get_course_star_count(gCurrSaveFileNum - 1, gMenuLineNum) == 0) {\n            if (gMenuLineNum >= prevCourseIndex) {\n                gMenuLineNum++;\n            } else {\n                gMenuLineNum--;\n            }\n\n            if (gMenuLineNum == COURSE_NUM_TO_INDEX(COURSE_STAGES_MAX) + 1\n                || gMenuLineNum == COURSE_NUM_TO_INDEX(COURSE_MIN) - 1) {\n                gMenuLineNum = COURSE_NUM_TO_INDEX(COURSE_BONUS_STAGES);\n                break;\n            }\n        }\n    }\n\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_begin);\n    gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, gMenuTextAlpha);\n\n    if (gMenuLineNum <= COURSE_NUM_TO_INDEX(COURSE_STAGES_MAX)) { // Main courses\n        courseName = segmented_to_virtual(courseNameTbl[gMenuLineNum]);\n        render_pause_castle_course_stars(x, y, gCurrSaveFileNum - 1, gMenuLineNum);\n        print_generic_string(x + 34, y - 5, textCoin);\n#ifdef VERSION_EU\n        print_generic_string(x + 44, y - 5, textX);\n#endif\n        INT_TO_STR_DIFF(save_file_get_course_coin_score(gCurrSaveFileNum - 1, gMenuLineNum), strVal);\n        print_generic_string(x + 54, y - 5, strVal);\n#ifdef VERSION_EU\n        print_generic_string(x - 17, y + 30, courseName);\n#endif\n    } else { // Castle secret stars\n        u8 textStarX[] = { TEXT_STAR_X };\n        courseName = segmented_to_virtual(courseNameTbl[COURSE_MAX]);\n        print_generic_string(x + 40, y + 13, textStarX);\n        INT_TO_STR_DIFF(save_file_get_total_star_count(gCurrSaveFileNum - 1, COURSE_BONUS_STAGES - 1, COURSE_MAX - 1), strVal);\n        print_generic_string(x + 60, y + 13, strVal);\n#ifdef VERSION_EU\n        print_generic_string(get_str_x_pos_from_center(x + 51, courseName, 10.0f), y + 30, courseName);\n#endif\n    }\n\n#ifndef VERSION_EU\n    print_generic_string(x - 9, y + 30, courseName);\n#endif\n\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_end);\n}\n\ns8 gCourseCompleteCoinsEqual = FALSE;\ns32 gCourseCompleteScreenTimer = 0;\ns32 gCourseCompleteCoins = 0;\ns8 gHudFlash = 0;\n\ns16 render_pause_screen(void) {\n    s16 index;\n\n#ifdef VERSION_EU\n    gInGameLanguage = eu_get_language();\n#endif\n\n    switch (gMenuState) {\n        case MENU_STATE_PAUSE_SCREEN_OPENING:\n            gMenuLineNum = MENU_OPT_DEFAULT;\n            gMenuTextAlpha = 0;\n            level_set_transition(-1, NULL);\n            play_sound(SOUND_MENU_PAUSE, gGlobalSoundSource);\n\n            if (gCurrCourseNum >= COURSE_MIN && gCurrCourseNum <= COURSE_MAX) {\n                change_dialog_camera_angle();\n                gMenuState = MENU_STATE_PAUSE_SCREEN_COURSE;\n            } else {\n                highlight_last_course_complete_stars();\n                gMenuState = MENU_STATE_PAUSE_SCREEN_CASTLE;\n            }\n            break;\n\n        case MENU_STATE_PAUSE_SCREEN_COURSE:\n            shade_screen();\n            render_pause_my_score_coins();\n            render_pause_red_coins();\n\n            if (gMarioStates[0].action & ACT_FLAG_PAUSE_EXIT) {\n                render_pause_course_options(99, 93, &gMenuLineNum, 15);\n            }\n\n#ifdef VERSION_EU\n            if (gPlayer3Controller->buttonPressed & (A_BUTTON | START_BUTTON | Z_TRIG))\n#else\n            if ((gPlayer3Controller->buttonPressed & A_BUTTON)\n             || (gPlayer3Controller->buttonPressed & START_BUTTON))\n#endif\n            {\n                level_set_transition(0, NULL);\n                play_sound(SOUND_MENU_PAUSE_2, gGlobalSoundSource);\n                gMenuState = MENU_STATE_DEFAULT;\n                gMenuMode = MENU_MODE_NONE;\n\n                if (gMenuLineNum == MENU_OPT_EXIT_COURSE) {\n                    index = gMenuLineNum;\n                } else { // MENU_OPT_CONTINUE or MENU_OPT_CAMERA_ANGLE_R\n                    index = MENU_OPT_DEFAULT;\n                }\n\n                return index;\n            }\n            break;\n\n        case MENU_STATE_PAUSE_SCREEN_CASTLE:\n            shade_screen();\n            print_hud_pause_colorful_str();\n            render_pause_castle_menu_box(160, 143);\n            render_pause_castle_main_strings(104, 60);\n\n#ifdef VERSION_EU\n            if (gPlayer3Controller->buttonPressed & (A_BUTTON | START_BUTTON | Z_TRIG))\n#else\n            if ((gPlayer3Controller->buttonPressed & A_BUTTON)\n             || (gPlayer3Controller->buttonPressed & START_BUTTON))\n#endif\n            {\n                level_set_transition(0, NULL);\n                play_sound(SOUND_MENU_PAUSE_2, gGlobalSoundSource);\n                gMenuMode = MENU_MODE_NONE;\n                gMenuState = MENU_STATE_DEFAULT;\n\n                return MENU_OPT_DEFAULT;\n            }\n            break;\n    }\n\n    if (gMenuTextAlpha < 250) {\n        gMenuTextAlpha += 25;\n    }\n\n    return MENU_OPT_NONE;\n}\n\n#if defined(VERSION_JP)\n    #define TXT_HISCORE_X 112\n    #define TXT_HISCORE_Y 48\n    #define TXT_CONGRATS_X 60\n    #define TXT_CONGRATS_Y 67\n#elif defined(VERSION_US)\n    #define TXT_HISCORE_X 109\n    #define TXT_HISCORE_Y 36\n    #define TXT_CONGRATS_X 70\n    #define TXT_CONGRATS_Y 67\n#elif defined(VERSION_EU)\n    #define TXT_HISCORE_X get_str_x_pos_from_center_scale(160, LANGUAGE_ARRAY(textHiScore), 12.0f)\n    #define TXT_HISCORE_Y 36\n    #define TXT_CONGRATS_X get_str_x_pos_from_center_scale(160, LANGUAGE_ARRAY(textCongratulations), 12.0f)\n    #define TXT_CONGRATS_Y 67\n#elif defined(VERSION_SH)\n    #define TXT_HISCORE_X 118\n    #define TXT_HISCORE_Y 48\n    #define TXT_CONGRATS_X 70\n    #define TXT_CONGRATS_Y 67\n#elif defined(VERSION_CN)\n    #define TXT_HISCORE_X 109\n    #define TXT_HISCORE_Y 26\n    #define TXT_CONGRATS_X 100\n    #define TXT_CONGRATS_Y 62\n#endif\n\n#define HUD_PRINT_HISCORE         0\n#define HUD_PRINT_CONGRATULATIONS 1\n\nvoid print_hud_course_complete_string(s8 str) {\n#ifdef VERSION_EU\n    u8 textHiScore[][15] = {\n        { TEXT_HUD_HI_SCORE },\n        { TEXT_HUD_HI_SCORE_FR },\n        { TEXT_HUD_HI_SCORE_DE }\n    };\n    u8 textCongratulations[][16] = {\n        { TEXT_HUD_CONGRATULATIONS },\n        { TEXT_HUD_CONGRATULATIONS_FR },\n        { TEXT_HUD_CONGRATULATIONS_DE }\n    };\n#else\n    u8 textHiScore[] = { TEXT_HUD_HI_SCORE };\n    u8 textCongratulations[] = { TEXT_HUD_CONGRATULATIONS };\n#endif\n\n    u8 color = sins(gMenuTextColorTransTimer) * 50.0f + 200.0f;\n\n    gSPDisplayList(gDisplayListHead++, dl_rgba16_text_begin);\n    gDPSetEnvColor(gDisplayListHead++, color, color, color, 255);\n\n    if (str == HUD_PRINT_HISCORE) {\n        print_hud_lut_string(HUD_LUT_GLOBAL, TXT_HISCORE_X, TXT_HISCORE_Y, LANGUAGE_ARRAY(textHiScore));\n    } else { // HUD_PRINT_CONGRATULATIONS\n        print_hud_lut_string(HUD_LUT_GLOBAL, TXT_CONGRATS_X, TXT_CONGRATS_Y, LANGUAGE_ARRAY(textCongratulations));\n    }\n\n    gSPDisplayList(gDisplayListHead++, dl_rgba16_text_end);\n}\n\nvoid print_hud_course_complete_coins(s16 x, s16 y) {\n    u8 courseCompleteCoinsStr[4];\n    u8 hudTextSymCoin[] = { GLYPH_COIN, GLYPH_SPACE };\n    u8 hudTextSymX[] = { GLYPH_MULTIPLY, GLYPH_SPACE };\n\n    gSPDisplayList(gDisplayListHead++, dl_rgba16_text_begin);\n    gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, 255);\n\n    print_hud_lut_string(HUD_LUT_GLOBAL, x, y, hudTextSymCoin);\n    print_hud_lut_string(HUD_LUT_GLOBAL, x + 16, y, hudTextSymX);\n\n    int_to_str(gCourseCompleteCoins, courseCompleteCoinsStr);\n    print_hud_lut_string(HUD_LUT_GLOBAL, x + 32, y, courseCompleteCoinsStr);\n\n    gSPDisplayList(gDisplayListHead++, dl_rgba16_text_end);\n\n    if (gCourseCompleteCoins >= gHudDisplay.coins) {\n        gCourseCompleteCoinsEqual = TRUE;\n        gCourseCompleteCoins = gHudDisplay.coins;\n\n        if (gGotFileCoinHiScore) {\n            print_hud_course_complete_string(HUD_PRINT_HISCORE);\n        }\n    } else {\n        if ((gCourseCompleteScreenTimer & 1) || gHudDisplay.coins > 70) {\n            gCourseCompleteCoins++;\n            play_sound(SOUND_MENU_YOSHI_GAIN_LIVES, gGlobalSoundSource);\n\n            if (gCourseCompleteCoins == 50 || gCourseCompleteCoins == 100 || gCourseCompleteCoins == 150) {\n                play_sound(SOUND_GENERAL_COLLECT_1UP, gGlobalSoundSource);\n                gMarioState->numLives++;\n            }\n        }\n\n        if (gCourseCompleteCoins == gHudDisplay.coins && gGotFileCoinHiScore) {\n            play_sound(SOUND_MENU_MARIO_CASTLE_WARP2, gGlobalSoundSource);\n        }\n    }\n}\n\nvoid play_star_fanfare_and_flash_hud(s32 arg, u8 starFlag) {\n    if (gCourseCompleteCoins == gHudDisplay.coins && !(gCurrCourseStarFlags & starFlag) && gHudFlash == 0) {\n        play_star_fanfare();\n        gHudFlash = arg;\n    }\n}\n\n#ifdef VERSION_EU\n    #define TXT_NAME_X1 centerX\n    #define TXT_NAME_X2 centerX - 1\n#else\n    #define TXT_NAME_X1 71\n    #define TXT_NAME_X2 TXT_NAME_X1 - 2\n#endif\n\n#if defined(VERSION_JP) || defined(VERSION_SH)\n    #define CRS_NUM_X2 95\n    #define CRS_NUM_X3 CRS_NUM_X2 - 2\n    #define TXT_CLEAR_X1 205\n    #define TXT_CLEAR_X2 TXT_CLEAR_X1 - 2\n#else\n    #define CRS_NUM_X2 104\n    #define CRS_NUM_X3 CRS_NUM_X2 - 2\n    #define TXT_CLEAR_X1 get_string_width(name) + 81\n    #define TXT_CLEAR_X2 TXT_CLEAR_X1 - 2\n#endif\n\nvoid render_course_complete_lvl_info_and_hud_str(void) {\n#if defined(VERSION_JP)\n    u8 textSymStar[] = { GLYPH_STAR, GLYPH_SPACE };\n    u8 textCourse[] = { TEXT_COURSE };\n    u8 textCatch[] = { TEXT_CATCH };\n    u8 textClear[] = { TEXT_CLEAR };\n#elif defined(VERSION_EU)\n    UNUSED u8 textCatch[] = { TEXT_CATCH }; // unused in EU\n    u8 textSymStar[] = { GLYPH_STAR, GLYPH_SPACE };\n#else\n    u8 textCourse[] = { TEXT_COURSE };\n    UNUSED u8 textCatch[] = { TEXT_CATCH }; // unused in US and iQue\n    u8 textClear[] = { TEXT_CLEAR };\n    u8 textSymStar[] = { GLYPH_STAR, GLYPH_SPACE };\n#endif\n\n    void **actNameTbl;\n    void **courseNameTbl;\n    u8 *name;\n\n    u8 strCourseNum[4];\n\n#ifdef VERSION_EU\n    s16 centerX;\n    switch (gInGameLanguage) {\n        case LANGUAGE_ENGLISH:\n            actNameTbl = segmented_to_virtual(act_name_table_eu_en);\n            courseNameTbl = segmented_to_virtual(course_name_table_eu_en);\n            break;\n        case LANGUAGE_FRENCH:\n            actNameTbl = segmented_to_virtual(act_name_table_eu_fr);\n            courseNameTbl = segmented_to_virtual(course_name_table_eu_fr);\n            break;\n        case LANGUAGE_GERMAN:\n            actNameTbl = segmented_to_virtual(act_name_table_eu_de);\n            courseNameTbl = segmented_to_virtual(course_name_table_eu_de);\n            break;\n    }\n#else\n    actNameTbl = segmented_to_virtual(seg2_act_name_table);\n    courseNameTbl = segmented_to_virtual(seg2_course_name_table);\n#endif\n\n    if (gLastCompletedCourseNum <= COURSE_STAGES_MAX) { // Main courses\n        print_hud_course_complete_coins(118, 103);\n        play_star_fanfare_and_flash_hud(1, 1 << (gLastCompletedStarNum - 1));\n\n        if (gLastCompletedStarNum == 7) {\n            name = segmented_to_virtual(actNameTbl[COURSE_STAGES_MAX * 6 + 1]);\n        } else {\n            name = segmented_to_virtual(actNameTbl[COURSE_NUM_TO_INDEX(gLastCompletedCourseNum) * 6 + gLastCompletedStarNum - 1]);\n        }\n\n        // Print course number\n        gSPDisplayList(gDisplayListHead++, dl_ia_text_begin);\n\n        INT_TO_STR_DIFF(gLastCompletedCourseNum, strCourseNum);\n\n        gDPSetEnvColor(gDisplayListHead++, 0, 0, 0, gMenuTextAlpha);\n        print_generic_string(65, 165, LANGUAGE_ARRAY(textCourse));\n        print_generic_string(CRS_NUM_X2, 165, strCourseNum);\n\n        gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, gMenuTextAlpha);\n        print_generic_string(63, 167, LANGUAGE_ARRAY(textCourse));\n        print_generic_string(CRS_NUM_X3, 167, strCourseNum);\n\n        gSPDisplayList(gDisplayListHead++, dl_ia_text_end);\n    } else if (gLastCompletedCourseNum == COURSE_BITDW || gLastCompletedCourseNum == COURSE_BITFS) { // Bowser courses\n        name = segmented_to_virtual(courseNameTbl[COURSE_NUM_TO_INDEX(gLastCompletedCourseNum)]);\n\n        // Print course name and clear text\n        gSPDisplayList(gDisplayListHead++, dl_ia_text_begin);\n\n        gDPSetEnvColor(gDisplayListHead++, 0, 0, 0, gMenuTextAlpha);\n#ifdef VERSION_EU\n        centerX = get_str_x_pos_from_center(153, name, 12.0f);\n#endif\n        print_generic_string(TXT_NAME_X1, 130, name);\n#ifndef VERSION_EU\n        print_generic_string(TXT_CLEAR_X1, 130, textClear);\n#endif\n\n        gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, gMenuTextAlpha);\n        print_generic_string(TXT_NAME_X2, 132, name);\n#ifndef VERSION_EU\n        print_generic_string(TXT_CLEAR_X2, 132, textClear);\n#endif\n\n        gSPDisplayList(gDisplayListHead++, dl_ia_text_end);\n\n        print_hud_course_complete_string(HUD_PRINT_CONGRATULATIONS);\n        print_hud_course_complete_coins(118, 111);\n        play_star_fanfare_and_flash_hud(2, 0); //! 2 isn't defined, originally for key hud?\n\n        return;\n    } else { // Castle secret stars\n        name = segmented_to_virtual(actNameTbl[COURSE_STAGES_MAX * 6]);\n\n        print_hud_course_complete_coins(118, 103);\n        play_star_fanfare_and_flash_hud(1, 1 << (gLastCompletedStarNum - 1));\n    }\n\n    // Print star glyph\n    gSPDisplayList(gDisplayListHead++, dl_rgba16_text_begin);\n\n    gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, gMenuTextAlpha);\n    print_hud_lut_string(HUD_LUT_GLOBAL, 55, 77, textSymStar);\n\n    gSPDisplayList(gDisplayListHead++, dl_rgba16_text_end);\n\n    // Print act name and catch text\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_begin);\n\n    gDPSetEnvColor(gDisplayListHead++, 0, 0, 0, gMenuTextAlpha);\n    print_generic_string(76, 145, name);\n#if defined(VERSION_JP) || defined(VERSION_SH)\n    print_generic_string(220, 145, textCatch);\n#endif\n\n    gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, gMenuTextAlpha);\n    print_generic_string(74, 147, name);\n#if defined(VERSION_JP) || defined(VERSION_SH)\n    print_generic_string(218, 147, textCatch);\n#endif\n\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_end);\n}\n\n#if defined(VERSION_JP) || defined(VERSION_SH)\n    #define X_VAL9 x\n    #define TXT_SAVEOPTIONS_X x + 10\n    #define TXT_SAVECONT_Y 2\n    #define TXT_SAVEQUIT_Y 18\n    #define TXT_CONTNOSAVE_Y 38\n#else\n#ifdef VERSION_EU\n    #define X_VAL9 xOffset - 12\n    #define TXT_SAVEOPTIONS_X xOffset\n#else\n    #define X_VAL9 x\n    #define TXT_SAVEOPTIONS_X x + 12\n#endif\n    #define TXT_SAVECONT_Y 0\n    #define TXT_SAVEQUIT_Y 20\n    #define TXT_CONTNOSAVE_Y 40\n#endif\n\n#ifdef VERSION_EU\nvoid render_save_confirmation(s16 y, s8 *index, s16 yOffset)\n#else\nvoid render_save_confirmation(s16 x, s16 y, s8 *index, s16 yOffset)\n#endif\n{\n#ifdef VERSION_EU\n    u8 textSaveAndContinue[][24] = {\n        { TEXT_SAVE_AND_CONTINUE },\n        { TEXT_SAVE_AND_CONTINUE_FR },\n        { TEXT_SAVE_AND_CONTINUE_DE }\n    };\n    u8 textSaveAndQuit[][22] = {\n        { TEXT_SAVE_AND_QUIT },\n        { TEXT_SAVE_AND_QUIT_FR },\n        { TEXT_SAVE_AND_QUIT_DE }\n    };\n    u8 textContinueWithoutSave[][27] = {\n        { TEXT_CONTINUE_WITHOUT_SAVING },\n        { TEXT_CONTINUE_WITHOUT_SAVING_FR },\n        { TEXT_CONTINUE_WITHOUT_SAVING_DE }\n    };\n    s16 xOffset = get_str_x_pos_from_center(160, LANGUAGE_ARRAY(textContinueWithoutSave), 12.0f);\n#else\n    u8 textSaveAndContinue[] = { TEXT_SAVE_AND_CONTINUE };\n    u8 textSaveAndQuit[] = { TEXT_SAVE_AND_QUIT };\n    u8 textContinueWithoutSave[] = { TEXT_CONTINUE_WITHOUT_SAVING };\n#endif\n\n    handle_menu_scrolling(MENU_SCROLL_VERTICAL, index, 1, 3);\n\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_begin);\n    gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, gMenuTextAlpha);\n\n    print_generic_string(TXT_SAVEOPTIONS_X, y + TXT_SAVECONT_Y, LANGUAGE_ARRAY(textSaveAndContinue));\n    print_generic_string(TXT_SAVEOPTIONS_X, y - TXT_SAVEQUIT_Y, LANGUAGE_ARRAY(textSaveAndQuit));\n    print_generic_string(TXT_SAVEOPTIONS_X, y - TXT_CONTNOSAVE_Y, LANGUAGE_ARRAY(textContinueWithoutSave));\n\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_end);\n\n    create_dl_translation_matrix(MENU_MTX_PUSH, X_VAL9, y - ((*index - 1) * yOffset), 0);\n\n    gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, gMenuTextAlpha);\n    gSPDisplayList(gDisplayListHead++, dl_draw_triangle);\n\n    gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);\n}\n\ns16 render_course_complete_screen(void) {\n    s16 index;\n#ifdef VERSION_EU\n    gInGameLanguage = eu_get_language();\n#endif\n\n    switch (gMenuState) {\n        case MENU_STATE_COURSE_COMPLETE_SCREEN_OPENING:\n            render_course_complete_lvl_info_and_hud_str();\n            if (gCourseCompleteScreenTimer > 100 && gCourseCompleteCoinsEqual == TRUE) {\n                gMenuState = MENU_STATE_COURSE_COMPLETE_SCREEN_OPEN;\n                level_set_transition(-1, NULL);\n                gMenuTextAlpha = 0;\n                gMenuLineNum = MENU_OPT_DEFAULT;\n            }\n            break;\n\n        case MENU_STATE_COURSE_COMPLETE_SCREEN_OPEN:\n            shade_screen();\n            render_course_complete_lvl_info_and_hud_str();\n#ifdef VERSION_EU\n            render_save_confirmation(86, &gMenuLineNum, 20);\n#else\n            render_save_confirmation(100, 86, &gMenuLineNum, 20);\n#endif\n\n            if (gCourseCompleteScreenTimer > 110\n                && ((gPlayer3Controller->buttonPressed & A_BUTTON)\n                 || (gPlayer3Controller->buttonPressed & START_BUTTON)\n#ifdef VERSION_EU\n                 || (gPlayer3Controller->buttonPressed & Z_TRIG)\n#endif\n                )) {\n                level_set_transition(0, NULL);\n                play_sound(SOUND_MENU_STAR_SOUND, gGlobalSoundSource);\n                gMenuState = MENU_STATE_DEFAULT;\n                gMenuMode = MENU_MODE_NONE;\n                index = gMenuLineNum;\n                gCourseCompleteScreenTimer = 0;\n                gCourseCompleteCoins = 0;\n                gCourseCompleteCoinsEqual = FALSE;\n                gHudFlash = 0;\n\n                return index;\n            }\n            break;\n    }\n\n    if (gMenuTextAlpha < 250) {\n        gMenuTextAlpha += 25;\n    }\n\n    gCourseCompleteScreenTimer++;\n\n    return MENU_OPT_NONE;\n}\n\ns16 render_menus_and_dialogs(void) {\n    s16 index = MENU_OPT_NONE;\n\n    create_dl_ortho_matrix();\n\n    if (gMenuMode != MENU_MODE_NONE) {\n        switch (gMenuMode) {\n            case MENU_MODE_UNUSED_0:\n                index = render_pause_screen();\n                break;\n            case MENU_MODE_RENDER_PAUSE_SCREEN:\n                index = render_pause_screen();\n                break;\n            case MENU_MODE_RENDER_COURSE_COMPLETE_SCREEN:\n                index = render_course_complete_screen();\n                break;\n            case MENU_MODE_UNUSED_3:\n                index = render_course_complete_screen();\n                break;\n        }\n\n        gMenuTextColorTransTimer = (s16) gMenuTextColorTransTimer + 0x1000;\n    } else if (gDialogID != DIALOG_NONE) {\n        // The Peach \"Dear Mario\" message needs to be repositioned separately\n        if (gDialogID == DIALOG_020) {\n            print_peach_letter_message();\n            return index;\n        }\n\n        render_dialog_entries();\n        gMenuTextColorTransTimer = (s16) gMenuTextColorTransTimer + 0x1000;\n    }\n\n    return index;\n}\n"
  },
  {
    "path": "src/game/ingame_menu.h",
    "content": "#ifndef INGAME_MENU_H\n#define INGAME_MENU_H\n\n#include <PR/ultratypes.h>\n\n#define ASCII_TO_DIALOG(asc)                                       \\\n    (((asc) >= '0' && (asc) <= '9') ? ((asc) - '0') :              \\\n     ((asc) >= 'A' && (asc) <= 'Z') ? ((asc) - 'A' + 0x0A) :       \\\n     ((asc) >= 'a' && (asc) <= 'z') ? ((asc) - 'a' + 0x24) : 0x00)\n\n\n#define MENU_MTX_PUSH   1\n#define MENU_MTX_NOPUSH 2\n\n#define MENU_SCROLL_VERTICAL   1\n#define MENU_SCROLL_HORIZONTAL 2\n\n// Japanese File Select uses an unique table\n// to print specific Japanese HUD chars\n#define HUD_LUT_JPMENU 1\n#define HUD_LUT_GLOBAL 2\n\n// For file select JP HUD difference\n#if defined(VERSION_JP) || defined(VERSION_SH)\n#define HUD_LUT_DIFF HUD_LUT_JPMENU\n#else\n#define HUD_LUT_DIFF HUD_LUT_GLOBAL\n#endif\n\n// They didn't change it everywhere in iQue\n#ifdef VERSION_CN\n#define HUD_LUT_DIFF2 HUD_LUT_JPMENU\n#else\n#define HUD_LUT_DIFF2 HUD_LUT_DIFF\n#endif\n\nenum MenuMode {\n    MENU_MODE_NONE = -1,\n    MENU_MODE_UNUSED_0,\n    MENU_MODE_RENDER_PAUSE_SCREEN,\n    MENU_MODE_RENDER_COURSE_COMPLETE_SCREEN,\n    MENU_MODE_UNUSED_3\n};\n\nextern s8 gDialogCourseActNum;\nextern s8 gHudFlash;\n\nstruct DialogEntry {\n    /*0x00*/ u32 unused;\n    /*0x04*/ s8 linesPerBox;\n    /*0x06*/ s16 leftOffset;\n    /*0x08*/ s16 width;\n    /*0x0C*/ const u8 *str;\n};\n\n// EU only\nenum HudSpecialCharsEU {\n    HUD_CHAR_A_UMLAUT = 0x3A,\n    HUD_CHAR_O_UMLAUT = 0x3B,\n    HUD_CHAR_U_UMLAUT = 0x3C\n};\n\nenum SpecialFontChars {\n    GLOBAL_CHAR_SPACE = 0x9E,\n#ifdef VERSION_CN\n    GLOBAL_CHAR_NEWLINE = 0xFE,\n#endif\n    GLOBAL_CHAR_TERMINATOR = 0xFF\n};\n\nenum DialogMark {\n    DIALOG_MARK_NONE,\n    DIALOG_MARK_DAKUTEN,\n    DIALOG_MARK_HANDAKUTEN\n};\n\n// definitions for some of the special characters defined in charmap.txt\nenum DialogSpecialChars {\n#ifdef VERSION_EU\n    DIALOG_CHAR_LOWER_A_GRAVE = 0x60,      // 'a' grave\n    DIALOG_CHAR_LOWER_A_CIRCUMFLEX = 0x61, // 'a' circumflex\n    DIALOG_CHAR_LOWER_A_UMLAUT = 0x62,     // 'a' umlaut\n    DIALOG_CHAR_UPPER_A_GRAVE = 0x64,      // 'A' grave\n    DIALOG_CHAR_UPPER_A_CIRCUMFLEX = 0x65, // 'A' circumflex\n    DIALOG_CHAR_UPPER_A_UMLAUT = 0x66,     // 'A' umlaut\n    DIALOG_CHAR_LOWER_E_GRAVE = 0x70,      // 'e' grave\n    DIALOG_CHAR_LOWER_E_CIRCUMFLEX = 0x71, // 'e' circumflex\n    DIALOG_CHAR_LOWER_E_UMLAUT = 0x72,     // 'e' umlaut\n    DIALOG_CHAR_LOWER_E_ACUTE = 0x73,      // 'e' acute\n    DIALOG_CHAR_UPPER_E_GRAVE = 0x74,      // 'E' grave\n    DIALOG_CHAR_UPPER_E_CIRCUMFLEX = 0x75, // 'E' circumflex\n    DIALOG_CHAR_UPPER_E_UMLAUT = 0x76,     // 'E' umlaut\n    DIALOG_CHAR_UPPER_E_ACUTE = 0x77,      // 'E' acute\n    DIALOG_CHAR_LOWER_U_GRAVE = 0x80,      // 'u' grave\n    DIALOG_CHAR_LOWER_U_CIRCUMFLEX = 0x81, // 'u' circumflex\n    DIALOG_CHAR_LOWER_U_UMLAUT = 0x82,     // 'u' umlaut\n    DIALOG_CHAR_UPPER_U_GRAVE = 0x84,      // 'U' grave\n    DIALOG_CHAR_UPPER_U_CIRCUMFLEX = 0x85, // 'U' circumflex\n    DIALOG_CHAR_UPPER_U_UMLAUT = 0x86,     // 'U' umlaut\n    DIALOG_CHAR_LOWER_O_CIRCUMFLEX = 0x91, // 'o' circumflex\n    DIALOG_CHAR_LOWER_O_UMLAUT = 0x92,     // 'o' umlaut\n    DIALOG_CHAR_UPPER_O_CIRCUMFLEX = 0x95, // 'O' circumflex\n    DIALOG_CHAR_UPPER_O_UMLAUT = 0x96,     // 'O' umlaut\n    DIALOG_CHAR_LOWER_I_CIRCUMFLEX = 0xA1, // 'i' circumflex\n    DIALOG_CHAR_LOWER_I_UMLAUT = 0xA2,     // 'i' umlaut\n    DIALOG_CHAR_I_NO_DIA = 0xEB,           // 'i' without diacritic\n    DIALOG_CHAR_DOUBLE_LOW_QUOTE = 0xF0,   // German opening quotation mark\n#endif\n#if defined(VERSION_US) || defined(VERSION_EU) || defined(VERSION_CN)\n    DIALOG_CHAR_SLASH = 0xD0,\n    DIALOG_CHAR_MULTI_THE = 0xD1, // 'the'\n    DIALOG_CHAR_MULTI_YOU = 0xD2, // 'you'\n#endif\n    DIALOG_CHAR_PERIOD = 0x6E,\n    DIALOG_CHAR_COMMA = 0x6F,\n    DIALOG_CHAR_SPACE = 0x9E,\n    DIALOG_CHAR_STAR_COUNT = 0xE0, // number of stars\n    DIALOG_CHAR_UMLAUT = 0xE9,\n    DIALOG_CHAR_MARK_START = 0xEF,\n    DIALOG_CHAR_DAKUTEN = DIALOG_CHAR_MARK_START + DIALOG_MARK_DAKUTEN,\n    DIALOG_CHAR_PERIOD_OR_HANDAKUTEN = DIALOG_CHAR_MARK_START + DIALOG_MARK_HANDAKUTEN,\n    DIALOG_CHAR_STAR_FILLED = 0xFA,\n    DIALOG_CHAR_STAR_OPEN = 0xFD,\n    DIALOG_CHAR_NEWLINE = 0xFE,\n    DIALOG_CHAR_TERMINATOR = 0xFF\n};\n\n#ifdef VERSION_CN\n#define DIALOG_CHAR_SPECIAL_MODIFIER 0xFF\n#define SPECIAL_CHAR(x) (DIALOG_CHAR_SPECIAL_MODIFIER << 8 | (x))\n#else\n#define SPECIAL_CHAR(x) (x)\n#endif\n\n// gDialogResponse\nenum DialogResponseDefines {\n    DIALOG_RESPONSE_NONE,\n    DIALOG_RESPONSE_YES,\n    DIALOG_RESPONSE_NO,\n    DIALOG_RESPONSE_NOT_DEFINED\n};\n\nextern s32 gDialogResponse;\nextern u16 gMenuTextColorTransTimer;\nextern s8 gLastDialogLineNum;\nextern s32 gDialogVariable;\nextern u16 gMenuTextAlpha;\nextern s16 gCutsceneMsgXOffset;\nextern s16 gCutsceneMsgYOffset;\nextern s8 gRedCoinsCollected;\n\nvoid create_dl_identity_matrix(void);\nvoid create_dl_translation_matrix(s8 pushOp, f32 x, f32 y, f32 z);\nvoid create_dl_ortho_matrix(void);\n\nvoid print_generic_string(s16 x, s16 y, const u8 *str);\nvoid print_hud_lut_string(s8 hudLUT, s16 x, s16 y, const u8 *str);\nvoid print_menu_generic_string(s16 x, s16 y, const u8 *str);\n\nvoid handle_menu_scrolling(s8 scrollDirection, s8 *currentIndex, s8 minIndex, s8 maxIndex);\n#if defined(VERSION_US) || defined(VERSION_EU) || defined(VERSION_CN)\ns16 get_str_x_pos_from_center(s16 centerPos, u8 *str, f32 scale);\n#endif\n#if defined(VERSION_JP) || defined(VERSION_SH)\n#define get_str_x_pos_from_center get_str_x_pos_from_center_scale\n#endif\n#if defined(VERSION_JP) || defined(VERSION_EU) || defined(VERSION_SH)\ns16 get_str_x_pos_from_center_scale(s16 centerPos, u8 *str, f32 scale);\n#endif\nvoid print_hud_my_score_coins(s32 useCourseCoinScore, s8 fileIndex, s8 courseIndex, s16 x, s16 y);\n\nvoid int_to_str(s32 num, u8 *dst);\n\n#ifdef VERSION_CN\nvoid int_to_str_2(s32 num, u8 *dst);\n#endif\n\n#ifdef VERSION_CN\n#define INT_TO_STR_DIFF int_to_str_2\n#else\n#define INT_TO_STR_DIFF int_to_str\n#endif\n\ns16 get_dialog_id(void);\nvoid create_dialog_box(s16 dialog);\nvoid create_dialog_box_with_var(s16 dialog, s32 dialogVar);\nvoid create_dialog_inverted_box(s16 dialog);\nvoid create_dialog_box_with_response(s16 dialog);\nvoid reset_dialog_render_state(void);\nvoid set_menu_mode(s16 mode);\nvoid reset_cutscene_msg_fade(void);\nvoid dl_rgba16_begin_cutscene_msg_fade(void);\nvoid dl_rgba16_stop_cutscene_msg_fade(void);\nvoid print_credits_str_ascii(s16 x, s16 y, const char *str);\nvoid set_cutscene_message(s16 xOffset, s16 yOffset, s16 msgIndex, s16 msgDuration);\nvoid do_cutscene_handler(void);\nvoid render_hud_cannon_reticle(void);\nvoid reset_red_coins_collected(void);\ns16 render_menus_and_dialogs(void);\n\n#endif // INGAME_MENU_H\n"
  },
  {
    "path": "src/game/interaction.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"area.h\"\n#include \"actors/common1.h\"\n#include \"audio/external.h\"\n#include \"behavior_actions.h\"\n#include \"behavior_data.h\"\n#include \"camera.h\"\n#include \"course_table.h\"\n#include \"dialog_ids.h\"\n#include \"engine/math_util.h\"\n#include \"engine/surface_collision.h\"\n#include \"game_init.h\"\n#include \"interaction.h\"\n#include \"level_update.h\"\n#include \"mario.h\"\n#include \"mario_step.h\"\n#include \"memory.h\"\n#include \"obj_behaviors.h\"\n#include \"object_helpers.h\"\n#include \"save_file.h\"\n#include \"seq_ids.h\"\n#include \"sm64.h\"\n#include \"sound_init.h\"\n#include \"rumble_init.h\"\n\n#define INT_GROUND_POUND_OR_TWIRL (1 << 0) // 0x01\n#define INT_PUNCH                 (1 << 1) // 0x02\n#define INT_KICK                  (1 << 2) // 0x04\n#define INT_TRIP                  (1 << 3) // 0x08\n#define INT_SLIDE_KICK            (1 << 4) // 0x10\n#define INT_FAST_ATTACK_OR_SHELL  (1 << 5) // 0x20\n#define INT_HIT_FROM_ABOVE        (1 << 6) // 0x40\n#define INT_HIT_FROM_BELOW        (1 << 7) // 0x80\n\n#define INT_ATTACK_NOT_FROM_BELOW                                                 \\\n    (INT_GROUND_POUND_OR_TWIRL | INT_PUNCH | INT_KICK | INT_TRIP | INT_SLIDE_KICK \\\n     | INT_FAST_ATTACK_OR_SHELL | INT_HIT_FROM_ABOVE)\n\n#define INT_ANY_ATTACK                                                            \\\n    (INT_GROUND_POUND_OR_TWIRL | INT_PUNCH | INT_KICK | INT_TRIP | INT_SLIDE_KICK \\\n     | INT_FAST_ATTACK_OR_SHELL | INT_HIT_FROM_ABOVE | INT_HIT_FROM_BELOW)\n\n#define INT_ATTACK_NOT_WEAK_FROM_ABOVE                                                \\\n    (INT_GROUND_POUND_OR_TWIRL | INT_PUNCH | INT_KICK | INT_TRIP | INT_HIT_FROM_BELOW)\n\nu8 sDelayInvincTimer;\ns16 sInvulnerable;\nu32 interact_coin(struct MarioState *, u32, struct Object *);\nu32 interact_water_ring(struct MarioState *, u32, struct Object *);\nu32 interact_star_or_key(struct MarioState *, u32, struct Object *);\nu32 interact_bbh_entrance(struct MarioState *, u32, struct Object *);\nu32 interact_warp(struct MarioState *, u32, struct Object *);\nu32 interact_warp_door(struct MarioState *, u32, struct Object *);\nu32 interact_door(struct MarioState *, u32, struct Object *);\nu32 interact_cannon_base(struct MarioState *, u32, struct Object *);\nu32 interact_igloo_barrier(struct MarioState *, u32, struct Object *);\nu32 interact_tornado(struct MarioState *, u32, struct Object *);\nu32 interact_whirlpool(struct MarioState *, u32, struct Object *);\nu32 interact_strong_wind(struct MarioState *, u32, struct Object *);\nu32 interact_flame(struct MarioState *, u32, struct Object *);\nu32 interact_snufit_bullet(struct MarioState *, u32, struct Object *);\nu32 interact_clam_or_bubba(struct MarioState *, u32, struct Object *);\nu32 interact_bully(struct MarioState *, u32, struct Object *);\nu32 interact_shock(struct MarioState *, u32, struct Object *);\nu32 interact_mr_blizzard(struct MarioState *, u32, struct Object *);\nu32 interact_hit_from_below(struct MarioState *, u32, struct Object *);\nu32 interact_bounce_top(struct MarioState *, u32, struct Object *);\nu32 interact_unknown_08(struct MarioState *, u32, struct Object *);\nu32 interact_damage(struct MarioState *, u32, struct Object *);\nu32 interact_breakable(struct MarioState *, u32, struct Object *);\nu32 interact_koopa_shell(struct MarioState *, u32, struct Object *);\nu32 interact_pole(struct MarioState *, u32, struct Object *);\nu32 interact_hoot(struct MarioState *, u32, struct Object *);\nu32 interact_cap(struct MarioState *, u32, struct Object *);\nu32 interact_grabbable(struct MarioState *, u32, struct Object *);\nu32 interact_text(struct MarioState *, u32, struct Object *);\n\nstruct InteractionHandler {\n    u32 interactType;\n    u32 (*handler)(struct MarioState *, u32, struct Object *);\n};\n\nstatic struct InteractionHandler sInteractionHandlers[] = {\n    { INTERACT_COIN,           interact_coin },\n    { INTERACT_WATER_RING,     interact_water_ring },\n    { INTERACT_STAR_OR_KEY,    interact_star_or_key },\n    { INTERACT_BBH_ENTRANCE,   interact_bbh_entrance },\n    { INTERACT_WARP,           interact_warp },\n    { INTERACT_WARP_DOOR,      interact_warp_door },\n    { INTERACT_DOOR,           interact_door },\n    { INTERACT_CANNON_BASE,    interact_cannon_base },\n    { INTERACT_IGLOO_BARRIER,  interact_igloo_barrier },\n    { INTERACT_TORNADO,        interact_tornado },\n    { INTERACT_WHIRLPOOL,      interact_whirlpool },\n    { INTERACT_STRONG_WIND,    interact_strong_wind },\n    { INTERACT_FLAME,          interact_flame },\n    { INTERACT_SNUFIT_BULLET,  interact_snufit_bullet },\n    { INTERACT_CLAM_OR_BUBBA,  interact_clam_or_bubba },\n    { INTERACT_BULLY,          interact_bully },\n    { INTERACT_SHOCK,          interact_shock },\n    { INTERACT_BOUNCE_TOP2,    interact_bounce_top },\n    { INTERACT_MR_BLIZZARD,    interact_mr_blizzard },\n    { INTERACT_HIT_FROM_BELOW, interact_hit_from_below },\n    { INTERACT_BOUNCE_TOP,     interact_bounce_top },\n    { INTERACT_DAMAGE,         interact_damage },\n    { INTERACT_POLE,           interact_pole },\n    { INTERACT_HOOT,           interact_hoot },\n    { INTERACT_BREAKABLE,      interact_breakable },\n    { INTERACT_KOOPA,          interact_bounce_top },\n    { INTERACT_KOOPA_SHELL,    interact_koopa_shell },\n    { INTERACT_UNKNOWN_08,     interact_unknown_08 },\n    { INTERACT_CAP,            interact_cap },\n    { INTERACT_GRABBABLE,      interact_grabbable },\n    { INTERACT_TEXT,           interact_text },\n};\n\nstatic u32 sForwardKnockbackActions[][3] = {\n    { ACT_SOFT_FORWARD_GROUND_KB, ACT_FORWARD_GROUND_KB, ACT_HARD_FORWARD_GROUND_KB },\n    { ACT_FORWARD_AIR_KB,         ACT_FORWARD_AIR_KB,    ACT_HARD_FORWARD_AIR_KB },\n    { ACT_FORWARD_WATER_KB,       ACT_FORWARD_WATER_KB,  ACT_FORWARD_WATER_KB },\n};\n\nstatic u32 sBackwardKnockbackActions[][3] = {\n    { ACT_SOFT_BACKWARD_GROUND_KB, ACT_BACKWARD_GROUND_KB, ACT_HARD_BACKWARD_GROUND_KB },\n    { ACT_BACKWARD_AIR_KB,         ACT_BACKWARD_AIR_KB,    ACT_HARD_BACKWARD_AIR_KB },\n    { ACT_BACKWARD_WATER_KB,       ACT_BACKWARD_WATER_KB,  ACT_BACKWARD_WATER_KB },\n};\n\nstatic u8 sDisplayingDoorText = FALSE;\nstatic u8 sJustTeleported = FALSE;\nstatic u8 sPSSSlideStarted = FALSE;\n\n/**\n * Returns the type of cap Mario is wearing.\n */\nu32 get_mario_cap_flag(struct Object *capObject) {\n    const BehaviorScript *script = virtual_to_segmented(0x13, capObject->behavior);\n\n    if (script == bhvNormalCap) {\n        return MARIO_NORMAL_CAP;\n    } else if (script == bhvMetalCap) {\n        return MARIO_METAL_CAP;\n    } else if (script == bhvWingCap) {\n        return MARIO_WING_CAP;\n    } else if (script == bhvVanishCap) {\n        return MARIO_VANISH_CAP;\n    }\n\n    return 0;\n}\n\n/**\n * Returns true if the passed in object has a moving angle yaw\n * in the angular range given towards Mario.\n */\nu32 object_facing_mario(struct MarioState *m, struct Object *o, s16 angleRange) {\n    f32 dx = m->pos[0] - o->oPosX;\n    f32 dz = m->pos[2] - o->oPosZ;\n\n    s16 angleToMario = atan2s(dz, dx);\n    s16 dAngle = angleToMario - o->oMoveAngleYaw;\n\n    if (-angleRange <= dAngle && dAngle <= angleRange) {\n        return TRUE;\n    }\n\n    return FALSE;\n}\n\ns16 mario_obj_angle_to_object(struct MarioState *m, struct Object *o) {\n    f32 dx = o->oPosX - m->pos[0];\n    f32 dz = o->oPosZ - m->pos[2];\n\n    return atan2s(dz, dx);\n}\n\n/**\n * Determines Mario's interaction with a given object depending on their proximity,\n * action, speed, and position.\n */\nu32 determine_interaction(struct MarioState *m, struct Object *o) {\n    u32 interaction = 0;\n    u32 action = m->action;\n\n    if (action & ACT_FLAG_ATTACKING) {\n        if (action == ACT_PUNCHING || action == ACT_MOVE_PUNCHING || action == ACT_JUMP_KICK) {\n            s16 dYawToObject = mario_obj_angle_to_object(m, o) - m->faceAngle[1];\n\n            if (m->flags & MARIO_PUNCHING) {\n                // 120 degrees total, or 60 each way\n                if (-0x2AAA <= dYawToObject && dYawToObject <= 0x2AAA) {\n                    interaction = INT_PUNCH;\n                }\n            }\n            if (m->flags & MARIO_KICKING) {\n                // 120 degrees total, or 60 each way\n                if (-0x2AAA <= dYawToObject && dYawToObject <= 0x2AAA) {\n                    interaction = INT_KICK;\n                }\n            }\n            if (m->flags & MARIO_TRIPPING) {\n                // 180 degrees total, or 90 each way\n                if (-0x4000 <= dYawToObject && dYawToObject <= 0x4000) {\n                    interaction = INT_TRIP;\n                }\n            }\n        } else if (action == ACT_GROUND_POUND || action == ACT_TWIRLING) {\n            if (m->vel[1] < 0.0f) {\n                interaction = INT_GROUND_POUND_OR_TWIRL;\n            }\n        } else if (action == ACT_GROUND_POUND_LAND || action == ACT_TWIRL_LAND) {\n            // Neither ground pounding nor twirling change Mario's vertical speed on landing.,\n            // so the speed check is nearly always true (perhaps not if you land while going upwards?)\n            // Additionally, actionState it set on each first thing in their action, so this is\n            // only true prior to the very first frame (i.e. active 1 frame prior to it run).\n            if (m->vel[1] < 0.0f && m->actionState == 0) {\n                interaction = INT_GROUND_POUND_OR_TWIRL;\n            }\n        } else if (action == ACT_SLIDE_KICK || action == ACT_SLIDE_KICK_SLIDE) {\n            interaction = INT_SLIDE_KICK;\n        } else if (action & ACT_FLAG_RIDING_SHELL) {\n            interaction = INT_FAST_ATTACK_OR_SHELL;\n        } else if (m->forwardVel <= -26.0f || 26.0f <= m->forwardVel) {\n            interaction = INT_FAST_ATTACK_OR_SHELL;\n        }\n    }\n\n    // Prior to this, the interaction type could be overwritten. This requires, however,\n    // that the interaction not be set prior. This specifically overrides turning a ground\n    // pound into just a bounce.\n    if (interaction == 0 && (action & ACT_FLAG_AIR)) {\n        if (m->vel[1] < 0.0f) {\n            if (m->pos[1] > o->oPosY) {\n                interaction = INT_HIT_FROM_ABOVE;\n            }\n        } else {\n            if (m->pos[1] < o->oPosY) {\n                interaction = INT_HIT_FROM_BELOW;\n            }\n        }\n    }\n\n    return interaction;\n}\n\n/**\n * Sets the interaction types for INT_STATUS_INTERACTED, INT_STATUS_WAS_ATTACKED\n */\nu32 attack_object(struct Object *o, s32 interaction) {\n    u32 attackType = 0;\n\n    switch (interaction) {\n        case INT_GROUND_POUND_OR_TWIRL:\n            attackType = ATTACK_GROUND_POUND_OR_TWIRL;\n            break;\n        case INT_PUNCH:\n            attackType = ATTACK_PUNCH;\n            break;\n        case INT_KICK:\n        case INT_TRIP:\n            attackType = ATTACK_KICK_OR_TRIP;\n            break;\n        case INT_SLIDE_KICK:\n        case INT_FAST_ATTACK_OR_SHELL:\n            attackType = ATTACK_FAST_ATTACK;\n            break;\n        case INT_HIT_FROM_ABOVE:\n            attackType = ATTACK_FROM_ABOVE;\n            break;\n        case INT_HIT_FROM_BELOW:\n            attackType = ATTACK_FROM_BELOW;\n            break;\n    }\n\n    o->oInteractStatus = attackType + (INT_STATUS_INTERACTED | INT_STATUS_WAS_ATTACKED);\n    return attackType;\n}\n\nvoid mario_stop_riding_object(struct MarioState *m) {\n    if (m->riddenObj != NULL) {\n        m->riddenObj->oInteractStatus = INT_STATUS_STOP_RIDING;\n        stop_shell_music();\n        m->riddenObj = NULL;\n    }\n}\n\nvoid mario_grab_used_object(struct MarioState *m) {\n    if (m->heldObj == NULL) {\n        m->heldObj = m->usedObj;\n        obj_set_held_state(m->heldObj, bhvCarrySomething3);\n    }\n}\n\nvoid mario_drop_held_object(struct MarioState *m) {\n    if (m->heldObj != NULL) {\n        if (m->heldObj->behavior == segmented_to_virtual(bhvKoopaShellUnderwater)) {\n            stop_shell_music();\n        }\n\n        obj_set_held_state(m->heldObj, bhvCarrySomething4);\n\n        // ! When dropping an object instead of throwing it, it will be put at Mario's\n        // y-positon instead of the HOLP's y-position. This fact is often exploited when\n        // cloning objects.\n        m->heldObj->oPosX = m->marioBodyState->heldObjLastPosition[0];\n        m->heldObj->oPosY = m->pos[1];\n        m->heldObj->oPosZ = m->marioBodyState->heldObjLastPosition[2];\n\n        m->heldObj->oMoveAngleYaw = m->faceAngle[1];\n\n        m->heldObj = NULL;\n    }\n}\n\nvoid mario_throw_held_object(struct MarioState *m) {\n    if (m->heldObj != NULL) {\n        if (m->heldObj->behavior == segmented_to_virtual(bhvKoopaShellUnderwater)) {\n            stop_shell_music();\n        }\n\n        obj_set_held_state(m->heldObj, bhvCarrySomething5);\n\n        m->heldObj->oPosX = m->marioBodyState->heldObjLastPosition[0] + 32.0f * sins(m->faceAngle[1]);\n        m->heldObj->oPosY = m->marioBodyState->heldObjLastPosition[1];\n        m->heldObj->oPosZ = m->marioBodyState->heldObjLastPosition[2] + 32.0f * coss(m->faceAngle[1]);\n\n        m->heldObj->oMoveAngleYaw = m->faceAngle[1];\n\n        m->heldObj = NULL;\n    }\n}\n\nvoid mario_stop_riding_and_holding(struct MarioState *m) {\n    mario_drop_held_object(m);\n    mario_stop_riding_object(m);\n\n    if (m->action == ACT_RIDING_HOOT) {\n        m->usedObj->oInteractStatus = FALSE;\n        m->usedObj->oHootMarioReleaseTime = gGlobalTimer;\n    }\n}\n\nu32 does_mario_have_normal_cap_on_head(struct MarioState *m) {\n    return (m->flags & (MARIO_CAPS | MARIO_CAP_ON_HEAD)) == (MARIO_NORMAL_CAP | MARIO_CAP_ON_HEAD);\n}\n\nvoid mario_blow_off_cap(struct MarioState *m, f32 capSpeed) {\n    struct Object *capObject;\n\n    if (does_mario_have_normal_cap_on_head(m)) {\n        save_file_set_cap_pos(m->pos[0], m->pos[1], m->pos[2]);\n\n        m->flags &= ~(MARIO_NORMAL_CAP | MARIO_CAP_ON_HEAD);\n\n        capObject = spawn_object(m->marioObj, MODEL_MARIOS_CAP, bhvNormalCap);\n\n        capObject->oPosY += (m->action & ACT_FLAG_SHORT_HITBOX) ? 120.0f : 180.0f;\n        capObject->oForwardVel = capSpeed;\n        capObject->oMoveAngleYaw = (s16)(m->faceAngle[1] + 0x400);\n\n        if (m->forwardVel < 0.0f) {\n            capObject->oMoveAngleYaw = (s16)(capObject->oMoveAngleYaw + 0x8000);\n        }\n    }\n}\n\nu32 mario_lose_cap_to_enemy(u32 arg) {\n    u32 wasWearingCap = FALSE;\n\n    if (does_mario_have_normal_cap_on_head(gMarioState)) {\n        save_file_set_flags(arg == 1 ? SAVE_FLAG_CAP_ON_KLEPTO : SAVE_FLAG_CAP_ON_UKIKI);\n        gMarioState->flags &= ~(MARIO_NORMAL_CAP | MARIO_CAP_ON_HEAD);\n        wasWearingCap = TRUE;\n    }\n\n    return wasWearingCap;\n}\n\nvoid mario_retrieve_cap(void) {\n    mario_drop_held_object(gMarioState);\n    save_file_clear_flags(SAVE_FLAG_CAP_ON_KLEPTO | SAVE_FLAG_CAP_ON_UKIKI);\n    gMarioState->flags &= ~MARIO_CAP_ON_HEAD;\n    gMarioState->flags |= MARIO_NORMAL_CAP | MARIO_CAP_IN_HAND;\n}\n\nu32 able_to_grab_object(struct MarioState *m, UNUSED struct Object *o) {\n    u32 action = m->action;\n\n    if (action == ACT_DIVE_SLIDE || action == ACT_DIVE) {\n        if (!(o->oInteractionSubtype & INT_SUBTYPE_GRABS_MARIO)) {\n            return TRUE;\n        }\n    } else if (action == ACT_PUNCHING || action == ACT_MOVE_PUNCHING) {\n        if (m->actionArg < 2) {\n            return TRUE;\n        }\n    }\n\n    return FALSE;\n}\n\nstruct Object *mario_get_collided_object(struct MarioState *m, u32 interactType) {\n    s32 i;\n    struct Object *object;\n\n    for (i = 0; i < m->marioObj->numCollidedObjs; i++) {\n        object = m->marioObj->collidedObjs[i];\n\n        if (object->oInteractType == interactType) {\n            return object;\n        }\n    }\n\n    return NULL;\n}\n\nu32 mario_check_object_grab(struct MarioState *m) {\n    u32 result = FALSE;\n    const BehaviorScript *script;\n\n    if (m->input & INPUT_INTERACT_OBJ_GRABBABLE) {\n        script = virtual_to_segmented(0x13, m->interactObj->behavior);\n\n        if (script == bhvBowser) {\n            s16 facingDYaw = m->faceAngle[1] - m->interactObj->oMoveAngleYaw;\n            if (facingDYaw >= -0x5555 && facingDYaw <= 0x5555) {\n                m->faceAngle[1] = m->interactObj->oMoveAngleYaw;\n                m->usedObj = m->interactObj;\n                result = set_mario_action(m, ACT_PICKING_UP_BOWSER, 0);\n            }\n        } else {\n            s16 facingDYaw = mario_obj_angle_to_object(m, m->interactObj) - m->faceAngle[1];\n            if (facingDYaw >= -0x2AAA && facingDYaw <= 0x2AAA) {\n                m->usedObj = m->interactObj;\n\n                if (!(m->action & ACT_FLAG_AIR)) {\n                    set_mario_action(\n                        m, (m->action & ACT_FLAG_DIVING) ? ACT_DIVE_PICKING_UP : ACT_PICKING_UP, 0);\n                }\n\n                result = TRUE;\n            }\n        }\n    }\n\n    return result;\n}\n\nu32 bully_knock_back_mario(struct MarioState *mario) {\n    struct BullyCollisionData marioData;\n    struct BullyCollisionData bullyData;\n    s16 newMarioYaw;\n    s16 newBullyYaw;\n    s16 marioDYaw;\n    UNUSED s16 bullyDYaw;\n\n    u32 bonkAction = 0;\n\n    struct Object *bully = mario->interactObj;\n\n    //! Conversion ratios multiply to more than 1 (could allow unbounded speed\n    // with bonk cancel - but this isn't important for regular bully battery)\n    f32 bullyToMarioRatio = bully->hitboxRadius * 3 / 53;\n    f32 marioToBullyRatio = 53.0f / bully->hitboxRadius;\n\n    init_bully_collision_data(&marioData, mario->pos[0], mario->pos[2], mario->forwardVel,\n                              mario->faceAngle[1], bullyToMarioRatio, 52.0f);\n\n    init_bully_collision_data(&bullyData, bully->oPosX, bully->oPosZ, bully->oForwardVel,\n                              bully->oMoveAngleYaw, marioToBullyRatio, bully->hitboxRadius + 2.0f);\n\n    if (mario->forwardVel != 0.0f) {\n        transfer_bully_speed(&marioData, &bullyData);\n    } else {\n        transfer_bully_speed(&bullyData, &marioData);\n    }\n\n    newMarioYaw = atan2s(marioData.velZ, marioData.velX);\n    newBullyYaw = atan2s(bullyData.velZ, bullyData.velX);\n\n    marioDYaw = newMarioYaw - mario->faceAngle[1];\n    bullyDYaw = newBullyYaw - bully->oMoveAngleYaw;\n\n    mario->faceAngle[1] = newMarioYaw;\n    mario->forwardVel = sqrtf(marioData.velX * marioData.velX + marioData.velZ * marioData.velZ);\n    mario->pos[0] = marioData.posX;\n    mario->pos[2] = marioData.posZ;\n\n    bully->oMoveAngleYaw = newBullyYaw;\n    bully->oForwardVel = sqrtf(bullyData.velX * bullyData.velX + bullyData.velZ * bullyData.velZ);\n    bully->oPosX = bullyData.posX;\n    bully->oPosZ = bullyData.posZ;\n\n    if (marioDYaw < -0x4000 || marioDYaw > 0x4000) {\n        mario->faceAngle[1] += 0x8000;\n        mario->forwardVel *= -1.0f;\n\n        if (mario->action & ACT_FLAG_AIR) {\n            bonkAction = ACT_BACKWARD_AIR_KB;\n        } else {\n            bonkAction = ACT_SOFT_BACKWARD_GROUND_KB;\n        }\n    } else {\n        if (mario->action & ACT_FLAG_AIR) {\n            bonkAction = ACT_FORWARD_AIR_KB;\n        } else {\n            bonkAction = ACT_SOFT_FORWARD_GROUND_KB;\n        }\n    }\n\n    return bonkAction;\n}\n\nvoid bounce_off_object(struct MarioState *m, struct Object *o, f32 velY) {\n    m->pos[1] = o->oPosY + o->hitboxHeight;\n    m->vel[1] = velY;\n\n    m->flags &= ~MARIO_UNKNOWN_08;\n\n    play_sound(SOUND_ACTION_BOUNCE_OFF_OBJECT, m->marioObj->header.gfx.cameraToObject);\n}\n\nvoid hit_object_from_below(struct MarioState *m, UNUSED struct Object *o) {\n    m->vel[1] = 0.0f;\n    set_camera_shake_from_hit(SHAKE_HIT_FROM_BELOW);\n}\n\nUNUSED static u32 unused_determine_knockback_action(struct MarioState *m) {\n    u32 bonkAction;\n    s16 angleToObject = mario_obj_angle_to_object(m, m->interactObj);\n    s16 facingDYaw = angleToObject - m->faceAngle[1];\n\n    if (m->forwardVel < 16.0f) {\n        m->forwardVel = 16.0f;\n    }\n\n    m->faceAngle[1] = angleToObject;\n\n    if (facingDYaw >= -0x4000 && facingDYaw <= 0x4000) {\n        m->forwardVel *= -1.0f;\n        if (m->action & (ACT_FLAG_AIR | ACT_FLAG_ON_POLE | ACT_FLAG_HANGING)) {\n            bonkAction = ACT_BACKWARD_AIR_KB;\n        } else {\n            bonkAction = ACT_SOFT_BACKWARD_GROUND_KB;\n        }\n    } else {\n        m->faceAngle[1] += 0x8000;\n        if (m->action & (ACT_FLAG_AIR | ACT_FLAG_ON_POLE | ACT_FLAG_HANGING)) {\n            bonkAction = ACT_FORWARD_AIR_KB;\n        } else {\n            bonkAction = ACT_SOFT_FORWARD_GROUND_KB;\n        }\n    }\n\n    return bonkAction;\n}\n\nu32 determine_knockback_action(struct MarioState *m, UNUSED s32 arg) {\n    u32 bonkAction;\n\n    s16 terrainIndex = 0; // 1 = air, 2 = water, 0 = default\n    s16 strengthIndex = 0;\n\n    s16 angleToObject = mario_obj_angle_to_object(m, m->interactObj);\n    s16 facingDYaw = angleToObject - m->faceAngle[1];\n    s16 remainingHealth = m->health - 0x40 * m->hurtCounter;\n\n    if (m->action & (ACT_FLAG_SWIMMING | ACT_FLAG_METAL_WATER)) {\n        terrainIndex = 2;\n    } else if (m->action & (ACT_FLAG_AIR | ACT_FLAG_ON_POLE | ACT_FLAG_HANGING)) {\n        terrainIndex = 1;\n    }\n\n    if (remainingHealth < 0x100) {\n        strengthIndex = 2;\n    } else if (m->interactObj->oDamageOrCoinValue >= 4) {\n        strengthIndex = 2;\n    } else if (m->interactObj->oDamageOrCoinValue >= 2) {\n        strengthIndex = 1;\n    }\n\n    m->faceAngle[1] = angleToObject;\n\n    if (terrainIndex == 2) {\n        if (m->forwardVel < 28.0f) {\n            mario_set_forward_vel(m, 28.0f);\n        }\n\n        if (m->pos[1] >= m->interactObj->oPosY) {\n            if (m->vel[1] < 20.0f) {\n                m->vel[1] = 20.0f;\n            }\n        } else {\n            if (m->vel[1] > 0.0f) {\n                m->vel[1] = 0.0f;\n            }\n        }\n    } else {\n        if (m->forwardVel < 16.0f) {\n            mario_set_forward_vel(m, 16.0f);\n        }\n    }\n\n    if (-0x4000 <= facingDYaw && facingDYaw <= 0x4000) {\n        m->forwardVel *= -1.0f;\n        bonkAction = sBackwardKnockbackActions[terrainIndex][strengthIndex];\n    } else {\n        m->faceAngle[1] += 0x8000;\n        bonkAction = sForwardKnockbackActions[terrainIndex][strengthIndex];\n    }\n\n    return bonkAction;\n}\n\nvoid push_mario_out_of_object(struct MarioState *m, struct Object *o, f32 padding) {\n    f32 minDistance = o->hitboxRadius + m->marioObj->hitboxRadius + padding;\n\n    f32 offsetX = m->pos[0] - o->oPosX;\n    f32 offsetZ = m->pos[2] - o->oPosZ;\n    f32 distance = sqrtf(offsetX * offsetX + offsetZ * offsetZ);\n\n    if (distance < minDistance) {\n        struct Surface *floor;\n        s16 pushAngle;\n        f32 newMarioX;\n        f32 newMarioZ;\n\n        if (distance == 0.0f) {\n            pushAngle = m->faceAngle[1];\n        } else {\n            pushAngle = atan2s(offsetZ, offsetX);\n        }\n\n        newMarioX = o->oPosX + minDistance * sins(pushAngle);\n        newMarioZ = o->oPosZ + minDistance * coss(pushAngle);\n\n        f32_find_wall_collision(&newMarioX, &m->pos[1], &newMarioZ, 60.0f, 50.0f);\n\n        find_floor(newMarioX, m->pos[1], newMarioZ, &floor);\n        if (floor != NULL) {\n            //! Doesn't update Mario's referenced floor (allows oob death when\n            // an object pushes you into a steep slope while in a ground action)\n            m->pos[0] = newMarioX;\n            m->pos[2] = newMarioZ;\n        }\n    }\n}\n\nvoid bounce_back_from_attack(struct MarioState *m, u32 interaction) {\n    if (interaction & (INT_PUNCH | INT_KICK | INT_TRIP)) {\n        if (m->action == ACT_PUNCHING) {\n            m->action = ACT_MOVE_PUNCHING;\n        }\n\n        if (m->action & ACT_FLAG_AIR) {\n            mario_set_forward_vel(m, -16.0f);\n        } else {\n            mario_set_forward_vel(m, -48.0f);\n        }\n\n        set_camera_shake_from_hit(SHAKE_ATTACK);\n        m->particleFlags |= PARTICLE_TRIANGLE;\n    }\n\n    if (interaction & (INT_PUNCH | INT_KICK | INT_TRIP | INT_FAST_ATTACK_OR_SHELL)) {\n        play_sound(SOUND_ACTION_HIT_2, m->marioObj->header.gfx.cameraToObject);\n    }\n}\n\nu32 should_push_or_pull_door(struct MarioState *m, struct Object *o) {\n    f32 dx = o->oPosX - m->pos[0];\n    f32 dz = o->oPosZ - m->pos[2];\n\n    s16 dYaw = o->oMoveAngleYaw - atan2s(dz, dx);\n\n    return (dYaw >= -0x4000 && dYaw <= 0x4000) ? 0x00000001 : 0x00000002;\n}\n\nu32 take_damage_from_interact_object(struct MarioState *m) {\n    s32 shake;\n    s32 damage = m->interactObj->oDamageOrCoinValue;\n\n    if (damage >= 4) {\n        shake = SHAKE_LARGE_DAMAGE;\n    } else if (damage >= 2) {\n        shake = SHAKE_MED_DAMAGE;\n    } else {\n        shake = SHAKE_SMALL_DAMAGE;\n    }\n\n    if (!(m->flags & MARIO_CAP_ON_HEAD)) {\n        damage += (damage + 1) / 2;\n    }\n\n    if (m->flags & MARIO_METAL_CAP) {\n        damage = 0;\n    }\n\n    m->hurtCounter += 4 * damage;\n\n#if ENABLE_RUMBLE\n    queue_rumble_data(5, 80);\n#endif\n    set_camera_shake_from_hit(shake);\n\n    return damage;\n}\n\nu32 take_damage_and_knock_back(struct MarioState *m, struct Object *o) {\n    u32 damage;\n\n    if (!sInvulnerable && !(m->flags & MARIO_VANISH_CAP)\n        && !(o->oInteractionSubtype & INT_SUBTYPE_DELAY_INVINCIBILITY)) {\n        o->oInteractStatus = INT_STATUS_INTERACTED | INT_STATUS_ATTACKED_MARIO;\n        m->interactObj = o;\n\n        damage = take_damage_from_interact_object(m);\n\n        if (o->oInteractionSubtype & INT_SUBTYPE_BIG_KNOCKBACK) {\n            m->forwardVel = 40.0f;\n        }\n\n        if (o->oDamageOrCoinValue > 0) {\n            play_sound(SOUND_MARIO_ATTACKED, m->marioObj->header.gfx.cameraToObject);\n        }\n\n        update_mario_sound_and_camera(m);\n        return drop_and_set_mario_action(m, determine_knockback_action(m, o->oDamageOrCoinValue),\n                                         damage);\n    }\n\n    return FALSE;\n}\n\nvoid reset_mario_pitch(struct MarioState *m) {\n    if (m->action == ACT_WATER_JUMP || m->action == ACT_SHOT_FROM_CANNON || m->action == ACT_FLYING) {\n        set_camera_mode(m->area->camera, m->area->camera->defMode, 1);\n        m->faceAngle[0] = 0;\n    }\n}\n\nu32 interact_coin(struct MarioState *m, UNUSED u32 interactType, struct Object *o) {\n    m->numCoins += o->oDamageOrCoinValue;\n    m->healCounter += 4 * o->oDamageOrCoinValue;\n\n    o->oInteractStatus = INT_STATUS_INTERACTED;\n\n    if (COURSE_IS_MAIN_COURSE(gCurrCourseNum)\n        && m->numCoins - o->oDamageOrCoinValue < 100 && m->numCoins >= 100) {\n        bhv_spawn_star_no_level_exit(STAR_INDEX_100_COINS);\n    }\n\n#if ENABLE_RUMBLE\n    if (o->oDamageOrCoinValue >= 2) {\n        queue_rumble_data(5, 80);\n    }\n#endif\n\n    return FALSE;\n}\n\nu32 interact_water_ring(struct MarioState *m, UNUSED u32 interactType, struct Object *o) {\n    m->healCounter += 4 * o->oDamageOrCoinValue;\n    o->oInteractStatus = INT_STATUS_INTERACTED;\n    return FALSE;\n}\n\nu32 interact_star_or_key(struct MarioState *m, UNUSED u32 interactType, struct Object *o) {\n    u32 starIndex;\n    u32 starGrabAction = ACT_STAR_DANCE_EXIT;\n    u32 noExit = (o->oInteractionSubtype & INT_SUBTYPE_NO_EXIT) != 0;\n    u32 grandStar = (o->oInteractionSubtype & INT_SUBTYPE_GRAND_STAR) != 0;\n\n    if (m->health >= 0x100) {\n        mario_stop_riding_and_holding(m);\n#if ENABLE_RUMBLE\n        queue_rumble_data(5, 80);\n#endif\n\n        if (!noExit) {\n            m->hurtCounter = 0;\n            m->healCounter = 0;\n            if (m->capTimer > 1) {\n                m->capTimer = 1;\n            }\n        }\n\n        if (noExit) {\n            starGrabAction = ACT_STAR_DANCE_NO_EXIT;\n        }\n\n        if (m->action & ACT_FLAG_SWIMMING) {\n            starGrabAction = ACT_STAR_DANCE_WATER;\n        }\n\n        if (m->action & ACT_FLAG_METAL_WATER) {\n            starGrabAction = ACT_STAR_DANCE_WATER;\n        }\n\n        if (m->action & ACT_FLAG_AIR) {\n            starGrabAction = ACT_FALL_AFTER_STAR_GRAB;\n        }\n\n        spawn_object(o, MODEL_NONE, bhvStarKeyCollectionPuffSpawner);\n\n        o->oInteractStatus = INT_STATUS_INTERACTED;\n        m->interactObj = o;\n        m->usedObj = o;\n\n        starIndex = (o->oBhvParams >> 24) & 0x1F;\n        save_file_collect_star_or_key(m->numCoins, starIndex);\n\n        m->numStars =\n            save_file_get_total_star_count(gCurrSaveFileNum - 1, COURSE_MIN - 1, COURSE_MAX - 1);\n\n        if (!noExit) {\n            drop_queued_background_music();\n            fadeout_level_music(126);\n        }\n\n        play_sound(SOUND_MENU_STAR_SOUND, m->marioObj->header.gfx.cameraToObject);\n#ifndef VERSION_JP\n        update_mario_sound_and_camera(m);\n#endif\n\n        if (grandStar) {\n            return set_mario_action(m, ACT_JUMBO_STAR_CUTSCENE, 0);\n        }\n\n        return set_mario_action(m, starGrabAction, noExit + 2 * grandStar);\n    }\n\n    return FALSE;\n}\n\nu32 interact_bbh_entrance(struct MarioState *m, UNUSED u32 interactType, struct Object *o) {\n    if (m->action != ACT_BBH_ENTER_SPIN && m->action != ACT_BBH_ENTER_JUMP) {\n        mario_stop_riding_and_holding(m);\n\n        o->oInteractStatus = INT_STATUS_INTERACTED;\n        m->interactObj = o;\n        m->usedObj = o;\n\n        if (m->action & ACT_FLAG_AIR) {\n            return set_mario_action(m, ACT_BBH_ENTER_SPIN, 0);\n        }\n\n        return set_mario_action(m, ACT_BBH_ENTER_JUMP, 0);\n    }\n\n    return FALSE;\n}\n\nu32 interact_warp(struct MarioState *m, UNUSED u32 interactType, struct Object *o) {\n    u32 action;\n\n    if (o->oInteractionSubtype & INT_SUBTYPE_FADING_WARP) {\n        action = m->action;\n\n        if (action == ACT_TELEPORT_FADE_IN) {\n            sJustTeleported = TRUE;\n\n        } else if (!sJustTeleported) {\n            if (action == ACT_IDLE || action == ACT_PANTING || action == ACT_STANDING_AGAINST_WALL\n                || action == ACT_CROUCHING) {\n                m->interactObj = o;\n                m->usedObj = o;\n\n                sJustTeleported = TRUE;\n                return set_mario_action(m, ACT_TELEPORT_FADE_OUT, 0);\n            }\n        }\n    } else {\n        if (m->action != ACT_EMERGE_FROM_PIPE) {\n            o->oInteractStatus = INT_STATUS_INTERACTED;\n            m->interactObj = o;\n            m->usedObj = o;\n\n#if ENABLE_RUMBLE\n            if (o->collisionData == segmented_to_virtual(warp_pipe_seg3_collision_03009AC8)) {\n                play_sound(SOUND_MENU_ENTER_PIPE, m->marioObj->header.gfx.cameraToObject);\n                queue_rumble_data(15, 80);\n            } else {\n                play_sound(SOUND_MENU_ENTER_HOLE, m->marioObj->header.gfx.cameraToObject);\n                queue_rumble_data(12, 80);\n            }\n#else\n            play_sound(o->collisionData == segmented_to_virtual(warp_pipe_seg3_collision_03009AC8)\n                           ? SOUND_MENU_ENTER_PIPE\n                           : SOUND_MENU_ENTER_HOLE,\n                       m->marioObj->header.gfx.cameraToObject);\n#endif\n\n            mario_stop_riding_object(m);\n            return set_mario_action(m, ACT_DISAPPEARED, (WARP_OP_WARP_OBJECT << 16) + 2);\n        }\n    }\n\n    return FALSE;\n}\n\nu32 interact_warp_door(struct MarioState *m, UNUSED u32 interactType, struct Object *o) {\n    u32 doorAction = 0;\n    u32 saveFlags = save_file_get_flags();\n    s16 warpDoorId = o->oBhvParams >> 24;\n    u32 actionArg;\n\n    if (m->action == ACT_WALKING || m->action == ACT_DECELERATING) {\n        if (warpDoorId == 1 && !(saveFlags & SAVE_FLAG_UNLOCKED_UPSTAIRS_DOOR)) {\n            if (!(saveFlags & SAVE_FLAG_HAVE_KEY_2)) {\n                if (!sDisplayingDoorText) {\n                    set_mario_action(m, ACT_READING_AUTOMATIC_DIALOG,\n                                     (saveFlags & SAVE_FLAG_HAVE_KEY_1) ? DIALOG_023 : DIALOG_022);\n                }\n                sDisplayingDoorText = TRUE;\n\n                return FALSE;\n            }\n\n            doorAction = ACT_UNLOCKING_KEY_DOOR;\n        }\n\n        if (warpDoorId == 2 && !(saveFlags & SAVE_FLAG_UNLOCKED_BASEMENT_DOOR)) {\n            if (!(saveFlags & SAVE_FLAG_HAVE_KEY_1)) {\n                if (!sDisplayingDoorText) {\n                    // Moat door skip was intended confirmed\n                    set_mario_action(m, ACT_READING_AUTOMATIC_DIALOG,\n                                     (saveFlags & SAVE_FLAG_HAVE_KEY_2) ? DIALOG_023 : DIALOG_022);\n                }\n                sDisplayingDoorText = TRUE;\n\n                return FALSE;\n            }\n\n            doorAction = ACT_UNLOCKING_KEY_DOOR;\n        }\n\n        if (m->action == ACT_WALKING || m->action == ACT_DECELERATING) {\n            actionArg = should_push_or_pull_door(m, o) + 0x00000004;\n\n            if (doorAction == 0) {\n                if (actionArg & 0x00000001) {\n                    doorAction = ACT_PULLING_DOOR;\n                } else {\n                    doorAction = ACT_PUSHING_DOOR;\n                }\n            }\n\n            m->interactObj = o;\n            m->usedObj = o;\n            return set_mario_action(m, doorAction, actionArg);\n        }\n    }\n\n    return FALSE;\n}\n\nu32 get_door_save_file_flag(struct Object *door) {\n    u32 saveFileFlag = 0;\n    s16 requiredNumStars = door->oBhvParams >> 24;\n\n    s16 isCCMDoor = door->oPosX < 0.0f;\n    s16 isPSSDoor = door->oPosY > 500.0f;\n\n    switch (requiredNumStars) {\n        case 1:\n            if (isPSSDoor) {\n                saveFileFlag = SAVE_FLAG_UNLOCKED_PSS_DOOR;\n            } else {\n                saveFileFlag = SAVE_FLAG_UNLOCKED_WF_DOOR;\n            }\n            break;\n\n        case 3:\n            if (isCCMDoor) {\n                saveFileFlag = SAVE_FLAG_UNLOCKED_CCM_DOOR;\n            } else {\n                saveFileFlag = SAVE_FLAG_UNLOCKED_JRB_DOOR;\n            }\n            break;\n\n        case 8:\n            saveFileFlag = SAVE_FLAG_UNLOCKED_BITDW_DOOR;\n            break;\n\n        case 30:\n            saveFileFlag = SAVE_FLAG_UNLOCKED_BITFS_DOOR;\n            break;\n\n        case 50:\n            saveFileFlag = SAVE_FLAG_UNLOCKED_50_STAR_DOOR;\n            break;\n    }\n\n    return saveFileFlag;\n}\n\nu32 interact_door(struct MarioState *m, UNUSED u32 interactType, struct Object *o) {\n    s16 requiredNumStars = o->oBhvParams >> 24;\n    s16 numStars = save_file_get_total_star_count(gCurrSaveFileNum - 1, COURSE_MIN - 1, COURSE_MAX - 1);\n\n    if (m->action == ACT_WALKING || m->action == ACT_DECELERATING) {\n        if (numStars >= requiredNumStars) {\n            u32 actionArg = should_push_or_pull_door(m, o);\n            u32 enterDoorAction;\n            u32 doorSaveFileFlag;\n\n            if (actionArg & 0x00000001) {\n                enterDoorAction = ACT_PULLING_DOOR;\n            } else {\n                enterDoorAction = ACT_PUSHING_DOOR;\n            }\n\n            doorSaveFileFlag = get_door_save_file_flag(o);\n            m->interactObj = o;\n            m->usedObj = o;\n\n            if (o->oInteractionSubtype & INT_SUBTYPE_STAR_DOOR) {\n                enterDoorAction = ACT_ENTERING_STAR_DOOR;\n            }\n\n            if (doorSaveFileFlag != 0 && !(save_file_get_flags() & doorSaveFileFlag)) {\n                enterDoorAction = ACT_UNLOCKING_STAR_DOOR;\n            }\n\n            return set_mario_action(m, enterDoorAction, actionArg);\n        } else if (!sDisplayingDoorText) {\n            u32 text = DIALOG_022 << 16;\n\n            switch (requiredNumStars) {\n                case 1:\n                    text = DIALOG_024 << 16;\n                    break;\n                case 3:\n                    text = DIALOG_025 << 16;\n                    break;\n                case 8:\n                    text = DIALOG_026 << 16;\n                    break;\n                case 30:\n                    text = DIALOG_027 << 16;\n                    break;\n                case 50:\n                    text = DIALOG_028 << 16;\n                    break;\n                case 70:\n                    text = DIALOG_029 << 16;\n                    break;\n            }\n\n            text += requiredNumStars - numStars;\n\n            sDisplayingDoorText = TRUE;\n            return set_mario_action(m, ACT_READING_AUTOMATIC_DIALOG, text);\n        }\n    } else if (m->action == ACT_IDLE && sDisplayingDoorText == TRUE && requiredNumStars == 70) {\n        m->interactObj = o;\n        m->usedObj = o;\n        return set_mario_action(m, ACT_ENTERING_STAR_DOOR, should_push_or_pull_door(m, o));\n    }\n\n    return FALSE;\n}\n\nu32 interact_cannon_base(struct MarioState *m, UNUSED u32 interactType, struct Object *o) {\n    if (m->action != ACT_IN_CANNON) {\n        mario_stop_riding_and_holding(m);\n        o->oInteractStatus = INT_STATUS_INTERACTED;\n        m->interactObj = o;\n        m->usedObj = o;\n        return set_mario_action(m, ACT_IN_CANNON, 0);\n    }\n\n    return FALSE;\n}\n\nu32 interact_igloo_barrier(struct MarioState *m, UNUSED u32 interactType, struct Object *o) {\n    //! Sets used object without changing action (LOTS of interesting glitches,\n    // but unfortunately the igloo barrier is the only object with this interaction\n    // type)\n    m->interactObj = o;\n    m->usedObj = o;\n    push_mario_out_of_object(m, o, 5.0f);\n    return FALSE;\n}\n\nu32 interact_tornado(struct MarioState *m, UNUSED u32 interactType, struct Object *o) {\n    struct Object *marioObj = m->marioObj;\n\n    if (m->action != ACT_TORNADO_TWIRLING && m->action != ACT_SQUISHED) {\n        mario_stop_riding_and_holding(m);\n        mario_set_forward_vel(m, 0.0f);\n        update_mario_sound_and_camera(m);\n\n        o->oInteractStatus = INT_STATUS_INTERACTED;\n        m->interactObj = o;\n        m->usedObj = o;\n\n        marioObj->oMarioTornadoYawVel = 0x400;\n        marioObj->oMarioTornadoPosY = m->pos[1] - o->oPosY;\n\n        play_sound(SOUND_MARIO_WAAAOOOW, m->marioObj->header.gfx.cameraToObject);\n#if ENABLE_RUMBLE\n        queue_rumble_data(30, 60);\n#endif\n        return set_mario_action(m, ACT_TORNADO_TWIRLING, m->action == ACT_TWIRLING);\n    }\n\n    return FALSE;\n}\n\nu32 interact_whirlpool(struct MarioState *m, UNUSED u32 interactType, struct Object *o) {\n    struct Object *marioObj = m->marioObj;\n\n    if (m->action != ACT_CAUGHT_IN_WHIRLPOOL) {\n        mario_stop_riding_and_holding(m);\n        o->oInteractStatus = INT_STATUS_INTERACTED;\n        m->interactObj = o;\n        m->usedObj = o;\n\n        m->forwardVel = 0.0f;\n\n        marioObj->oMarioWhirlpoolPosY = m->pos[1] - o->oPosY;\n\n        play_sound(SOUND_MARIO_WAAAOOOW, m->marioObj->header.gfx.cameraToObject);\n#if ENABLE_RUMBLE\n        queue_rumble_data(30, 60);\n#endif\n        return set_mario_action(m, ACT_CAUGHT_IN_WHIRLPOOL, 0);\n    }\n\n    return FALSE;\n}\n\nu32 interact_strong_wind(struct MarioState *m, UNUSED u32 interactType, struct Object *o) {\n    UNUSED struct Object *marioObj = m->marioObj;\n\n    if (m->action != ACT_GETTING_BLOWN) {\n        mario_stop_riding_and_holding(m);\n        o->oInteractStatus = INT_STATUS_INTERACTED;\n        m->interactObj = o;\n        m->usedObj = o;\n\n        m->faceAngle[1] = o->oMoveAngleYaw + 0x8000;\n        m->gettingBlownGravity = 0.4f;\n        m->forwardVel = -24.0f;\n        m->vel[1] = 12.0f;\n\n        play_sound(SOUND_MARIO_WAAAOOOW, m->marioObj->header.gfx.cameraToObject);\n        update_mario_sound_and_camera(m);\n        return set_mario_action(m, ACT_GETTING_BLOWN, 0);\n    }\n\n    return FALSE;\n}\n\nu32 interact_flame(struct MarioState *m, UNUSED u32 interactType, struct Object *o) {\n    u32 burningAction = ACT_BURNING_JUMP;\n\n    if (!sInvulnerable && !(m->flags & MARIO_METAL_CAP) && !(m->flags & MARIO_VANISH_CAP)\n        && !(o->oInteractionSubtype & INT_SUBTYPE_DELAY_INVINCIBILITY)) {\n#if ENABLE_RUMBLE\n        queue_rumble_data(5, 80);\n#endif\n        o->oInteractStatus = INT_STATUS_INTERACTED;\n        m->interactObj = o;\n\n        if ((m->action & (ACT_FLAG_SWIMMING | ACT_FLAG_METAL_WATER))\n            || m->waterLevel - m->pos[1] > 50.0f) {\n            play_sound(SOUND_GENERAL_FLAME_OUT, m->marioObj->header.gfx.cameraToObject);\n        } else {\n            m->marioObj->oMarioBurnTimer = 0;\n            update_mario_sound_and_camera(m);\n            play_sound(SOUND_MARIO_ON_FIRE, m->marioObj->header.gfx.cameraToObject);\n\n            if ((m->action & ACT_FLAG_AIR) && m->vel[1] <= 0.0f) {\n                burningAction = ACT_BURNING_FALL;\n            }\n\n            return drop_and_set_mario_action(m, burningAction, 1);\n        }\n    }\n\n    return FALSE;\n}\n\nu32 interact_snufit_bullet(struct MarioState *m, UNUSED u32 interactType, struct Object *o) {\n    if (!sInvulnerable && !(m->flags & MARIO_VANISH_CAP)) {\n        if (m->flags & MARIO_METAL_CAP) {\n            o->oInteractStatus = INT_STATUS_INTERACTED | INT_STATUS_WAS_ATTACKED;\n            play_sound(SOUND_ACTION_UNKNOWN458, m->marioObj->header.gfx.cameraToObject);\n        } else {\n            o->oInteractStatus = INT_STATUS_INTERACTED | INT_STATUS_ATTACKED_MARIO;\n            m->interactObj = o;\n            take_damage_from_interact_object(m);\n\n            play_sound(SOUND_MARIO_ATTACKED, m->marioObj->header.gfx.cameraToObject);\n            update_mario_sound_and_camera(m);\n\n            return drop_and_set_mario_action(m, determine_knockback_action(m, o->oDamageOrCoinValue),\n                                             o->oDamageOrCoinValue);\n        }\n    }\n\n    if (!(o->oInteractionSubtype & INT_SUBTYPE_DELAY_INVINCIBILITY)) {\n        sDelayInvincTimer = TRUE;\n    }\n\n    return FALSE;\n}\n\nu32 interact_clam_or_bubba(struct MarioState *m, UNUSED u32 interactType, struct Object *o) {\n    if (o->oInteractionSubtype & INT_SUBTYPE_EATS_MARIO) {\n        o->oInteractStatus = INT_STATUS_INTERACTED;\n        m->interactObj = o;\n        return set_mario_action(m, ACT_EATEN_BY_BUBBA, 0);\n    } else if (take_damage_and_knock_back(m, o)) {\n        return TRUE;\n    }\n\n    if (!(o->oInteractionSubtype & INT_SUBTYPE_DELAY_INVINCIBILITY)) {\n        sDelayInvincTimer = TRUE;\n    }\n\n    return TRUE;\n}\n\nu32 interact_bully(struct MarioState *m, UNUSED u32 interactType, struct Object *o) {\n    UNUSED u8 filler[4];\n\n    u32 interaction;\n    if (m->flags & MARIO_METAL_CAP) {\n        interaction = INT_FAST_ATTACK_OR_SHELL;\n    } else {\n        interaction = determine_interaction(m, o);\n    }\n\n    m->interactObj = o;\n\n    if (interaction & INT_ATTACK_NOT_FROM_BELOW) {\n#if ENABLE_RUMBLE\n        queue_rumble_data(5, 80);\n#endif\n        push_mario_out_of_object(m, o, 5.0f);\n\n        m->forwardVel = -16.0f;\n        o->oMoveAngleYaw = m->faceAngle[1];\n        o->oForwardVel = 3392.0f / o->hitboxRadius;\n\n        attack_object(o, interaction);\n        bounce_back_from_attack(m, interaction);\n        return TRUE;\n    }\n\n    else if (!sInvulnerable && !(m->flags & MARIO_VANISH_CAP)\n             && !(o->oInteractionSubtype & INT_SUBTYPE_DELAY_INVINCIBILITY)) {\n        o->oInteractStatus = INT_STATUS_INTERACTED;\n        m->invincTimer = 2;\n\n        update_mario_sound_and_camera(m);\n        play_sound(SOUND_MARIO_EEUH, m->marioObj->header.gfx.cameraToObject);\n        play_sound(SOUND_OBJ_BULLY_METAL, m->marioObj->header.gfx.cameraToObject);\n\n        push_mario_out_of_object(m, o, 5.0f);\n        drop_and_set_mario_action(m, bully_knock_back_mario(m), 0);\n#if ENABLE_RUMBLE\n        queue_rumble_data(5, 80);\n#endif\n        return TRUE;\n    }\n\n    return FALSE;\n}\n\nu32 interact_shock(struct MarioState *m, UNUSED u32 interactType, struct Object *o) {\n    if (!sInvulnerable && !(m->flags & MARIO_VANISH_CAP)\n        && !(o->oInteractionSubtype & INT_SUBTYPE_DELAY_INVINCIBILITY)) {\n        u32 actionArg = (m->action & (ACT_FLAG_AIR | ACT_FLAG_ON_POLE | ACT_FLAG_HANGING)) == 0;\n\n        o->oInteractStatus = INT_STATUS_INTERACTED | INT_STATUS_ATTACKED_MARIO;\n        m->interactObj = o;\n\n        take_damage_from_interact_object(m);\n        play_sound(SOUND_MARIO_ATTACKED, m->marioObj->header.gfx.cameraToObject);\n#if ENABLE_RUMBLE\n        queue_rumble_data(70, 60);\n#endif\n\n        if (m->action & (ACT_FLAG_SWIMMING | ACT_FLAG_METAL_WATER)) {\n            return drop_and_set_mario_action(m, ACT_WATER_SHOCKED, 0);\n        } else {\n            update_mario_sound_and_camera(m);\n            return drop_and_set_mario_action(m, ACT_SHOCKED, actionArg);\n        }\n    }\n\n    if (!(o->oInteractionSubtype & INT_SUBTYPE_DELAY_INVINCIBILITY)) {\n        sDelayInvincTimer = TRUE;\n    }\n\n    return FALSE;\n}\n\nUNUSED static u32 interact_stub(UNUSED struct MarioState *m, UNUSED u32 interactType, struct Object *o) {\n    if (!(o->oInteractionSubtype & INT_SUBTYPE_DELAY_INVINCIBILITY)) {\n        sDelayInvincTimer = TRUE;\n    }\n    return FALSE;\n}\n\nu32 interact_mr_blizzard(struct MarioState *m, UNUSED u32 interactType, struct Object *o) {\n    if (take_damage_and_knock_back(m, o)) {\n        return TRUE;\n    }\n\n    if (!(o->oInteractionSubtype & INT_SUBTYPE_DELAY_INVINCIBILITY)) {\n        sDelayInvincTimer = TRUE;\n    }\n\n    return FALSE;\n}\n\nu32 interact_hit_from_below(struct MarioState *m, UNUSED u32 interactType, struct Object *o) {\n    UNUSED u8 filler[4];\n\n    u32 interaction;\n    if (m->flags & MARIO_METAL_CAP) {\n        interaction = INT_FAST_ATTACK_OR_SHELL;\n    } else {\n        interaction = determine_interaction(m, o);\n    }\n\n    if (interaction & INT_ANY_ATTACK) {\n#if ENABLE_RUMBLE\n        queue_rumble_data(5, 80);\n#endif\n        attack_object(o, interaction);\n        bounce_back_from_attack(m, interaction);\n\n        if (interaction & INT_HIT_FROM_BELOW) {\n            hit_object_from_below(m, o);\n        }\n\n        if (interaction & INT_HIT_FROM_ABOVE) {\n            if (o->oInteractionSubtype & INT_SUBTYPE_TWIRL_BOUNCE) {\n                bounce_off_object(m, o, 80.0f);\n                reset_mario_pitch(m);\n#ifndef VERSION_JP\n                play_sound(SOUND_MARIO_TWIRL_BOUNCE, m->marioObj->header.gfx.cameraToObject);\n#endif\n                return drop_and_set_mario_action(m, ACT_TWIRLING, 0);\n            } else {\n                bounce_off_object(m, o, 30.0f);\n            }\n        }\n    } else if (take_damage_and_knock_back(m, o)) {\n        return TRUE;\n    }\n\n    if (!(o->oInteractionSubtype & INT_SUBTYPE_DELAY_INVINCIBILITY)) {\n        sDelayInvincTimer = TRUE;\n    }\n\n    return FALSE;\n}\n\nu32 interact_bounce_top(struct MarioState *m, UNUSED u32 interactType, struct Object *o) {\n    u32 interaction;\n    if (m->flags & MARIO_METAL_CAP) {\n        interaction = INT_FAST_ATTACK_OR_SHELL;\n    } else {\n        interaction = determine_interaction(m, o);\n    }\n\n    if (interaction & INT_ATTACK_NOT_FROM_BELOW) {\n#if ENABLE_RUMBLE\n        queue_rumble_data(5, 80);\n#endif\n        attack_object(o, interaction);\n        bounce_back_from_attack(m, interaction);\n\n        if (interaction & INT_HIT_FROM_ABOVE) {\n            if (o->oInteractionSubtype & INT_SUBTYPE_TWIRL_BOUNCE) {\n                bounce_off_object(m, o, 80.0f);\n                reset_mario_pitch(m);\n#ifndef VERSION_JP\n                play_sound(SOUND_MARIO_TWIRL_BOUNCE, m->marioObj->header.gfx.cameraToObject);\n#endif\n                return drop_and_set_mario_action(m, ACT_TWIRLING, 0);\n            } else {\n                bounce_off_object(m, o, 30.0f);\n            }\n        }\n    } else if (take_damage_and_knock_back(m, o)) {\n        return TRUE;\n    }\n\n    if (!(o->oInteractionSubtype & INT_SUBTYPE_DELAY_INVINCIBILITY)) {\n        sDelayInvincTimer = TRUE;\n    }\n\n    return FALSE;\n}\n\nu32 interact_unknown_08(struct MarioState *m, UNUSED u32 interactType, struct Object *o) {\n    u32 interaction = determine_interaction(m, o);\n\n    if (interaction & INT_PUNCH) {\n        o->oInteractStatus = INT_STATUS_INTERACTED | INT_STATUS_WAS_ATTACKED | ATTACK_PUNCH;\n        bounce_back_from_attack(m, interaction);\n    } else if (take_damage_and_knock_back(m, o)) {\n        return TRUE;\n    }\n\n    if (!(o->oInteractionSubtype & INT_SUBTYPE_DELAY_INVINCIBILITY)) {\n        sDelayInvincTimer = TRUE;\n    }\n\n    return FALSE;\n}\n\nu32 interact_damage(struct MarioState *m, UNUSED u32 interactType, struct Object *o) {\n    if (take_damage_and_knock_back(m, o)) {\n        return TRUE;\n    }\n\n    if (!(o->oInteractionSubtype & INT_SUBTYPE_DELAY_INVINCIBILITY)) {\n        sDelayInvincTimer = TRUE;\n    }\n\n    return FALSE;\n}\n\nu32 interact_breakable(struct MarioState *m, UNUSED u32 interactType, struct Object *o) {\n    u32 interaction = determine_interaction(m, o);\n\n    if (interaction & INT_ATTACK_NOT_WEAK_FROM_ABOVE) {\n        attack_object(o, interaction);\n        bounce_back_from_attack(m, interaction);\n\n        m->interactObj = o;\n\n        switch (interaction) {\n            case INT_HIT_FROM_ABOVE:\n                bounce_off_object(m, o, 30.0f); //! Not in the 0x8F mask\n                break;\n\n            case INT_HIT_FROM_BELOW:\n                hit_object_from_below(m, o);\n                break;\n        }\n\n        return TRUE;\n    }\n\n    return FALSE;\n}\n\nu32 interact_koopa_shell(struct MarioState *m, UNUSED u32 interactType, struct Object *o) {\n    if (!(m->action & ACT_FLAG_RIDING_SHELL)) {\n        u32 interaction = determine_interaction(m, o);\n\n        if (interaction == INT_HIT_FROM_ABOVE || m->action == ACT_WALKING\n            || m->action == ACT_HOLD_WALKING) {\n            m->interactObj = o;\n            m->usedObj = o;\n            m->riddenObj = o;\n\n            attack_object(o, interaction);\n            update_mario_sound_and_camera(m);\n            play_shell_music();\n            mario_drop_held_object(m);\n\n            //! Puts Mario in ground action even when in air, making it easy to\n            // escape air actions into crouch slide (shell cancel)\n            return set_mario_action(m, ACT_RIDING_SHELL_GROUND, 0);\n        }\n\n        push_mario_out_of_object(m, o, 2.0f);\n    }\n\n    return FALSE;\n}\n\nu32 check_object_grab_mario(struct MarioState *m, UNUSED u32 interactType, struct Object *o) {\n    if ((!(m->action & (ACT_FLAG_AIR | ACT_FLAG_INVULNERABLE | ACT_FLAG_ATTACKING)) || !sInvulnerable)\n        && (o->oInteractionSubtype & INT_SUBTYPE_GRABS_MARIO)) {\n        if (object_facing_mario(m, o, 0x2AAA)) {\n            mario_stop_riding_and_holding(m);\n            o->oInteractStatus = INT_STATUS_INTERACTED | INT_STATUS_GRABBED_MARIO;\n\n            m->faceAngle[1] = o->oMoveAngleYaw;\n            m->interactObj = o;\n            m->usedObj = o;\n\n            update_mario_sound_and_camera(m);\n            play_sound(SOUND_MARIO_OOOF, m->marioObj->header.gfx.cameraToObject);\n#if ENABLE_RUMBLE\n            queue_rumble_data(5, 80);\n#endif\n            return set_mario_action(m, ACT_GRABBED, 0);\n        }\n    }\n\n    push_mario_out_of_object(m, o, -5.0f);\n    return FALSE;\n}\n\nu32 interact_pole(struct MarioState *m, UNUSED u32 interactType, struct Object *o) {\n    s32 actionId = m->action & ACT_ID_MASK;\n    if (actionId >= 0x080 && actionId < 0x0A0) {\n        if (!(m->prevAction & ACT_FLAG_ON_POLE) || m->usedObj != o) {\n#if defined(VERSION_SH) || defined(VERSION_CN)\n            f32 velConv = m->forwardVel; // conserve the velocity.\n            struct Object *marioObj = m->marioObj;\n            u32 lowSpeed;\n#else\n            u32 lowSpeed = (m->forwardVel <= 10.0f);\n            struct Object *marioObj = m->marioObj;\n#endif\n\n            mario_stop_riding_and_holding(m);\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n            lowSpeed = (velConv <= 10.0f);\n#endif\n\n            m->interactObj = o;\n            m->usedObj = o;\n            m->vel[1] = 0.0f;\n            m->forwardVel = 0.0f;\n\n            marioObj->oMarioPoleUnk108 = 0;\n            marioObj->oMarioPoleYawVel = 0;\n            marioObj->oMarioPolePos = m->pos[1] - o->oPosY;\n\n            if (lowSpeed) {\n                return set_mario_action(m, ACT_GRAB_POLE_SLOW, 0);\n            }\n\n            //! @bug Using m->forwardVel here is assumed to be 0.0f due to the set from earlier.\n            //       This is fixed in the Shindou version.\n#if defined(VERSION_SH) || defined(VERSION_CN)\n            marioObj->oMarioPoleYawVel = (s32)(velConv * 0x100 + 0x1000);\n#else\n            marioObj->oMarioPoleYawVel = (s32)(m->forwardVel * 0x100 + 0x1000);\n#endif\n            reset_mario_pitch(m);\n#if ENABLE_RUMBLE\n            queue_rumble_data(5, 80);\n#endif\n            return set_mario_action(m, ACT_GRAB_POLE_FAST, 0);\n        }\n    }\n\n    return FALSE;\n}\n\nu32 interact_hoot(struct MarioState *m, UNUSED u32 interactType, struct Object *o) {\n    s32 actionId = m->action & ACT_ID_MASK;\n\n    //! Can pause to advance the global timer without falling too far, allowing\n    // you to regrab after letting go.\n    if (actionId >= 0x080 && actionId < 0x098\n        && (gGlobalTimer - m->usedObj->oHootMarioReleaseTime > 30)) {\n        mario_stop_riding_and_holding(m);\n\n        o->oInteractStatus = TRUE; //! Note: Not a flag, treated as a TRUE/FALSE statement\n        m->interactObj = o;\n        m->usedObj = o;\n\n#if ENABLE_RUMBLE\n        queue_rumble_data(5, 80);\n#endif\n        update_mario_sound_and_camera(m);\n        return set_mario_action(m, ACT_RIDING_HOOT, 0);\n    }\n\n    return FALSE;\n}\n\nu32 interact_cap(struct MarioState *m, UNUSED u32 interactType, struct Object *o) {\n    u32 capFlag = get_mario_cap_flag(o);\n    u16 capMusic = 0;\n    u16 capTime = 0;\n\n    if (m->action != ACT_GETTING_BLOWN && capFlag != 0) {\n        m->interactObj = o;\n        o->oInteractStatus = INT_STATUS_INTERACTED;\n\n        m->flags &= ~MARIO_CAP_ON_HEAD & ~MARIO_CAP_IN_HAND;\n        m->flags |= capFlag;\n\n        switch (capFlag) {\n            case MARIO_VANISH_CAP:\n                capTime = 600;\n                capMusic = SEQUENCE_ARGS(4, SEQ_EVENT_POWERUP);\n                break;\n\n            case MARIO_METAL_CAP:\n                capTime = 600;\n                capMusic = SEQUENCE_ARGS(4, SEQ_EVENT_METAL_CAP);\n                break;\n\n            case MARIO_WING_CAP:\n                capTime = 1800;\n                capMusic = SEQUENCE_ARGS(4, SEQ_EVENT_POWERUP);\n                break;\n        }\n\n        if (capTime > m->capTimer) {\n            m->capTimer = capTime;\n        }\n\n        if ((m->action & ACT_FLAG_IDLE) || m->action == ACT_WALKING) {\n            m->flags |= MARIO_CAP_IN_HAND;\n            set_mario_action(m, ACT_PUTTING_ON_CAP, 0);\n        } else {\n            m->flags |= MARIO_CAP_ON_HEAD;\n        }\n\n        play_sound(SOUND_MENU_STAR_SOUND, m->marioObj->header.gfx.cameraToObject);\n        play_sound(SOUND_MARIO_HERE_WE_GO, m->marioObj->header.gfx.cameraToObject);\n\n        if (capMusic != 0) {\n            play_cap_music(capMusic);\n        }\n\n        return TRUE;\n    }\n\n    return FALSE;\n}\n\nu32 interact_grabbable(struct MarioState *m, u32 interactType, struct Object *o) {\n    const BehaviorScript *script = virtual_to_segmented(0x13, o->behavior);\n\n    if (o->oInteractionSubtype & INT_SUBTYPE_KICKABLE) {\n        u32 interaction = determine_interaction(m, o);\n        if (interaction & (INT_KICK | INT_TRIP)) {\n            attack_object(o, interaction);\n            bounce_back_from_attack(m, interaction);\n            return FALSE;\n        }\n    }\n\n    if ((o->oInteractionSubtype & INT_SUBTYPE_GRABS_MARIO)) {\n        if (check_object_grab_mario(m, interactType, o)) {\n            return TRUE;\n        }\n    }\n\n    if (able_to_grab_object(m, o)) {\n        if (!(o->oInteractionSubtype & INT_SUBTYPE_NOT_GRABBABLE)) {\n            m->interactObj = o;\n            m->input |= INPUT_INTERACT_OBJ_GRABBABLE;\n            return TRUE;\n        }\n    }\n\n    if (script != bhvBowser) {\n        push_mario_out_of_object(m, o, -5.0f);\n    }\n\n    return FALSE;\n}\n\nu32 mario_can_talk(struct MarioState *m, u32 arg) {\n    s16 val6;\n\n    if ((m->action & ACT_FLAG_IDLE) != 0x00000000) {\n        return TRUE;\n    }\n\n    if (m->action == ACT_WALKING) {\n        if (arg) {\n            return TRUE;\n        }\n\n        val6 = m->marioObj->header.gfx.animInfo.animID;\n\n        if (val6 == 0x0080 || val6 == 0x007F || val6 == 0x006C) {\n            return TRUE;\n        }\n    }\n\n    return FALSE;\n}\n\n#ifdef VERSION_JP\n#define READ_MASK (INPUT_B_PRESSED)\n#else\n#define READ_MASK (INPUT_B_PRESSED | INPUT_A_PRESSED)\n#endif\n\n#ifdef VERSION_JP\n#define SIGN_RANGE 0x38E3\n#else\n#define SIGN_RANGE 0x4000\n#endif\n\nu32 check_read_sign(struct MarioState *m, struct Object *o) {\n    if ((m->input & READ_MASK) && mario_can_talk(m, 0) && object_facing_mario(m, o, SIGN_RANGE)) {\n        s16 facingDYaw = (s16)(o->oMoveAngleYaw + 0x8000) - m->faceAngle[1];\n        if (facingDYaw >= -SIGN_RANGE && facingDYaw <= SIGN_RANGE) {\n            f32 targetX = o->oPosX + 105.0f * sins(o->oMoveAngleYaw);\n            f32 targetZ = o->oPosZ + 105.0f * coss(o->oMoveAngleYaw);\n\n            m->marioObj->oMarioReadingSignDYaw = facingDYaw;\n            m->marioObj->oMarioReadingSignDPosX = targetX - m->pos[0];\n            m->marioObj->oMarioReadingSignDPosZ = targetZ - m->pos[2];\n\n            m->interactObj = o;\n            m->usedObj = o;\n            return set_mario_action(m, ACT_READING_SIGN, 0);\n        }\n    }\n\n    return FALSE;\n}\n\nu32 check_npc_talk(struct MarioState *m, struct Object *o) {\n    if ((m->input & READ_MASK) && mario_can_talk(m, 1)) {\n        s16 facingDYaw = mario_obj_angle_to_object(m, o) - m->faceAngle[1];\n        if (facingDYaw >= -0x4000 && facingDYaw <= 0x4000) {\n            o->oInteractStatus = INT_STATUS_INTERACTED;\n\n            m->interactObj = o;\n            m->usedObj = o;\n\n            push_mario_out_of_object(m, o, -10.0f);\n            return set_mario_action(m, ACT_WAITING_FOR_DIALOG, 0);\n        }\n    }\n\n    push_mario_out_of_object(m, o, -10.0f);\n    return FALSE;\n}\n\nu32 interact_text(struct MarioState *m, UNUSED u32 interactType, struct Object *o) {\n    u32 interact = FALSE;\n\n    if (o->oInteractionSubtype & INT_SUBTYPE_SIGN) {\n        interact = check_read_sign(m, o);\n    } else if (o->oInteractionSubtype & INT_SUBTYPE_NPC) {\n        interact = check_npc_talk(m, o);\n    } else {\n        push_mario_out_of_object(m, o, 2.0f);\n    }\n\n    return interact;\n}\n\nvoid check_kick_or_punch_wall(struct MarioState *m) {\n    if (m->flags & (MARIO_PUNCHING | MARIO_KICKING | MARIO_TRIPPING)) {\n        Vec3f detector;\n        detector[0] = m->pos[0] + 50.0f * sins(m->faceAngle[1]);\n        detector[2] = m->pos[2] + 50.0f * coss(m->faceAngle[1]);\n        detector[1] = m->pos[1];\n\n        if (resolve_and_return_wall_collisions(detector, 80.0f, 5.0f) != NULL) {\n            if (m->action != ACT_MOVE_PUNCHING || m->forwardVel >= 0.0f) {\n                if (m->action == ACT_PUNCHING) {\n                    m->action = ACT_MOVE_PUNCHING;\n                }\n\n                mario_set_forward_vel(m, -48.0f);\n                play_sound(SOUND_ACTION_HIT_2, m->marioObj->header.gfx.cameraToObject);\n                m->particleFlags |= PARTICLE_TRIANGLE;\n            } else if (m->action & ACT_FLAG_AIR) {\n                mario_set_forward_vel(m, -16.0f);\n                play_sound(SOUND_ACTION_HIT_2, m->marioObj->header.gfx.cameraToObject);\n                m->particleFlags |= PARTICLE_TRIANGLE;\n            }\n        }\n    }\n}\n\nvoid mario_process_interactions(struct MarioState *m) {\n    sDelayInvincTimer = FALSE;\n    sInvulnerable = (m->action & ACT_FLAG_INVULNERABLE) || m->invincTimer != 0;\n\n    if (!(m->action & ACT_FLAG_INTANGIBLE) && m->collidedObjInteractTypes != 0) {\n        s32 i;\n        for (i = 0; i < ARRAY_COUNT(sInteractionHandlers); i++) {\n            u32 interactType = sInteractionHandlers[i].interactType;\n            if (m->collidedObjInteractTypes & interactType) {\n                struct Object *object = mario_get_collided_object(m, interactType);\n\n                m->collidedObjInteractTypes &= ~interactType;\n\n                if (!(object->oInteractStatus & INT_STATUS_INTERACTED)) {\n                    if (sInteractionHandlers[i].handler(m, interactType, object)) {\n                        break;\n                    }\n                }\n            }\n        }\n    }\n\n    if (m->invincTimer > 0 && !sDelayInvincTimer) {\n        m->invincTimer--;\n    }\n\n    //! If the kick/punch flags are set and an object collision changes Mario's\n    // action, he will get the kick/punch wall speed anyway.\n    check_kick_or_punch_wall(m);\n    m->flags &= ~MARIO_PUNCHING & ~MARIO_KICKING & ~MARIO_TRIPPING;\n\n    if (!(m->marioObj->collidedObjInteractTypes & (INTERACT_WARP_DOOR | INTERACT_DOOR))) {\n        sDisplayingDoorText = FALSE;\n    }\n    if (!(m->marioObj->collidedObjInteractTypes & INTERACT_WARP)) {\n        sJustTeleported = FALSE;\n    }\n}\n\nvoid check_death_barrier(struct MarioState *m) {\n    if (m->pos[1] < m->floorHeight + 2048.0f) {\n        if (level_trigger_warp(m, WARP_OP_WARP_FLOOR) == 20 && !(m->flags & MARIO_UNKNOWN_18)) {\n            play_sound(SOUND_MARIO_WAAAOOOW, m->marioObj->header.gfx.cameraToObject);\n        }\n    }\n}\n\nvoid check_lava_boost(struct MarioState *m) {\n    if (!(m->action & ACT_FLAG_RIDING_SHELL) && m->pos[1] < m->floorHeight + 10.0f) {\n        if (!(m->flags & MARIO_METAL_CAP)) {\n            m->hurtCounter += (m->flags & MARIO_CAP_ON_HEAD) ? 12 : 18;\n        }\n\n        update_mario_sound_and_camera(m);\n        drop_and_set_mario_action(m, ACT_LAVA_BOOST, 0);\n    }\n}\n\nvoid pss_begin_slide(UNUSED struct MarioState *m) {\n    if (!(gHudDisplay.flags & HUD_DISPLAY_FLAG_TIMER)) {\n        level_control_timer(TIMER_CONTROL_SHOW);\n        level_control_timer(TIMER_CONTROL_START);\n        sPSSSlideStarted = TRUE;\n    }\n}\n\nvoid pss_end_slide(struct MarioState *m) {\n    //! This flag isn't set on death or level entry, allowing double star spawn\n    if (sPSSSlideStarted) {\n        u16 slideTime = level_control_timer(TIMER_CONTROL_STOP);\n        if (slideTime < 630) {\n            m->marioObj->oBhvParams = (STAR_INDEX_ACT_2 << 24);\n            spawn_default_star(-6358.0f, -4300.0f, 4700.0f);\n        }\n        sPSSSlideStarted = FALSE;\n    }\n}\n\nvoid mario_handle_special_floors(struct MarioState *m) {\n    if ((m->action & ACT_GROUP_MASK) == ACT_GROUP_CUTSCENE) {\n        return;\n    }\n\n    if (m->floor != NULL) {\n        s32 floorType = m->floor->type;\n\n        switch (floorType) {\n            case SURFACE_DEATH_PLANE:\n            case SURFACE_VERTICAL_WIND:\n                check_death_barrier(m);\n                break;\n\n            case SURFACE_WARP:\n                level_trigger_warp(m, WARP_OP_WARP_FLOOR);\n                break;\n\n            case SURFACE_TIMER_START:\n                pss_begin_slide(m);\n                break;\n\n            case SURFACE_TIMER_END:\n                pss_end_slide(m);\n                break;\n        }\n\n        if (!(m->action & ACT_FLAG_AIR) && !(m->action & ACT_FLAG_SWIMMING)) {\n            switch (floorType) {\n                case SURFACE_BURNING:\n                    check_lava_boost(m);\n                    break;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/game/interaction.h",
    "content": "#ifndef INTERACTION_H\n#define INTERACTION_H\n\n#include <PR/ultratypes.h>\n\n#include \"types.h\"\n\n#define INTERACT_HOOT           /* 0x00000001 */ (1 <<  0)\n#define INTERACT_GRABBABLE      /* 0x00000002 */ (1 <<  1)\n#define INTERACT_DOOR           /* 0x00000004 */ (1 <<  2)\n#define INTERACT_DAMAGE         /* 0x00000008 */ (1 <<  3)\n#define INTERACT_COIN           /* 0x00000010 */ (1 <<  4)\n#define INTERACT_CAP            /* 0x00000020 */ (1 <<  5)\n#define INTERACT_POLE           /* 0x00000040 */ (1 <<  6)\n#define INTERACT_KOOPA          /* 0x00000080 */ (1 <<  7)\n#define INTERACT_UNKNOWN_08     /* 0x00000100 */ (1 <<  8)\n#define INTERACT_BREAKABLE      /* 0x00000200 */ (1 <<  9)\n#define INTERACT_STRONG_WIND    /* 0x00000400 */ (1 << 10)\n#define INTERACT_WARP_DOOR      /* 0x00000800 */ (1 << 11)\n#define INTERACT_STAR_OR_KEY    /* 0x00001000 */ (1 << 12)\n#define INTERACT_WARP           /* 0x00002000 */ (1 << 13)\n#define INTERACT_CANNON_BASE    /* 0x00004000 */ (1 << 14)\n#define INTERACT_BOUNCE_TOP     /* 0x00008000 */ (1 << 15)\n#define INTERACT_WATER_RING     /* 0x00010000 */ (1 << 16)\n#define INTERACT_BULLY          /* 0x00020000 */ (1 << 17)\n#define INTERACT_FLAME          /* 0x00040000 */ (1 << 18)\n#define INTERACT_KOOPA_SHELL    /* 0x00080000 */ (1 << 19)\n#define INTERACT_BOUNCE_TOP2    /* 0x00100000 */ (1 << 20)\n#define INTERACT_MR_BLIZZARD    /* 0x00200000 */ (1 << 21)\n#define INTERACT_HIT_FROM_BELOW /* 0x00400000 */ (1 << 22)\n#define INTERACT_TEXT           /* 0x00800000 */ (1 << 23)\n#define INTERACT_TORNADO        /* 0x01000000 */ (1 << 24)\n#define INTERACT_WHIRLPOOL      /* 0x02000000 */ (1 << 25)\n#define INTERACT_CLAM_OR_BUBBA  /* 0x04000000 */ (1 << 26)\n#define INTERACT_BBH_ENTRANCE   /* 0x08000000 */ (1 << 27)\n#define INTERACT_SNUFIT_BULLET  /* 0x10000000 */ (1 << 28)\n#define INTERACT_SHOCK          /* 0x20000000 */ (1 << 29)\n#define INTERACT_IGLOO_BARRIER  /* 0x40000000 */ (1 << 30)\n#define INTERACT_UNKNOWN_31     /* 0x80000000 */ (1 << 31)\n\n\n// INTERACT_WARP\n#define INT_SUBTYPE_FADING_WARP 0x00000001\n\n// Damaging interactions\n#define INT_SUBTYPE_DELAY_INVINCIBILITY 0x00000002\n#define INT_SUBTYPE_BIG_KNOCKBACK 0x00000008 /* Used by Bowser, sets Mario's forward velocity to 40 on hit */\n\n// INTERACT_GRABBABLE\n#define INT_SUBTYPE_GRABS_MARIO 0x00000004 /* Also makes the object heavy */\n#define INT_SUBTYPE_HOLDABLE_NPC 0x00000010 /* Allows the object to be gently dropped, and sets vertical speed to 0 when dropped with no forwards velocity */\n#define INT_SUBTYPE_DROP_IMMEDIATELY 0x00000040 /* This gets set by grabbable NPCs that talk to Mario to make him drop them after the dialog is finished */\n#define INT_SUBTYPE_KICKABLE 0x00000100\n#define INT_SUBTYPE_NOT_GRABBABLE 0x00000200 /* Used by Heavy-Ho to allow it to throw Mario, without Mario being able to pick it up */\n\n// INTERACT_DOOR\n#define INT_SUBTYPE_STAR_DOOR 0x00000020\n\n//INTERACT_BOUNCE_TOP\n#define INT_SUBTYPE_TWIRL_BOUNCE 0x00000080\n\n// INTERACT_STAR_OR_KEY\n#define INT_SUBTYPE_NO_EXIT 0x00000400\n#define INT_SUBTYPE_GRAND_STAR 0x00000800\n\n// INTERACT_TEXT\n#define INT_SUBTYPE_SIGN 0x00001000\n#define INT_SUBTYPE_NPC 0x00004000\n\n// INTERACT_CLAM_OR_BUBBA\n#define INT_SUBTYPE_EATS_MARIO 0x00002000\n\n\n#define ATTACK_PUNCH                 1\n#define ATTACK_KICK_OR_TRIP          2\n#define ATTACK_FROM_ABOVE            3\n#define ATTACK_GROUND_POUND_OR_TWIRL 4\n#define ATTACK_FAST_ATTACK           5\n#define ATTACK_FROM_BELOW            6\n\n#define INT_STATUS_ATTACK_MASK 0x000000FF\n\n// Mario Interaction Status\n#define INT_STATUS_MARIO_STUNNED         (1 <<  0) /* 0x00000001 */\n#define INT_STATUS_MARIO_KNOCKBACK_DMG   (1 <<  1) /* 0x00000002 */\n#define INT_STATUS_MARIO_UNK2            (1 <<  2) /* 0x00000004 */\n#define INT_STATUS_MARIO_DROP_OBJECT     (1 <<  3) /* 0x00000008 */\n#define INT_STATUS_MARIO_SHOCKWAVE       (1 <<  4) /* 0x00000010 */\n#define INT_STATUS_MARIO_UNK5            (1 <<  5) /* 0x00000020 */\n#define INT_STATUS_MARIO_UNK6            (1 <<  6) /* 0x00000040 */\n#define INT_STATUS_MARIO_UNK7            (1 <<  7) /* 0x00000080 */\n\n// Object Interaction Status\n#define INT_STATUS_GRABBED_MARIO         (1 << 11) /* 0x00000800 */\n#define INT_STATUS_ATTACKED_MARIO        (1 << 13) /* 0x00002000 */\n#define INT_STATUS_WAS_ATTACKED          (1 << 14) /* 0x00004000 */\n#define INT_STATUS_INTERACTED            (1 << 15) /* 0x00008000 */\n#define INT_STATUS_UNK16                 (1 << 16) /* 0x00010000 */\n#define INT_STATUS_UNK17                 (1 << 17) /* 0x00020000 */\n#define INT_STATUS_UNK18                 (1 << 18) /* 0x00040000 */\n#define INT_STATUS_UNK19                 (1 << 19) /* 0x00080000 */\n#define INT_STATUS_TRAP_TURN             (1 << 20) /* 0x00100000 */\n#define INT_STATUS_HIT_MINE              (1 << 21) /* 0x00200000 */\n#define INT_STATUS_STOP_RIDING           (1 << 22) /* 0x00400000 */\n#define INT_STATUS_TOUCHED_BOB_OMB       (1 << 23) /* 0x00800000 */\n\n\ns16 mario_obj_angle_to_object(struct MarioState *m, struct Object *o);\nvoid mario_stop_riding_object(struct MarioState *m);\nvoid mario_grab_used_object(struct MarioState *m);\nvoid mario_drop_held_object(struct MarioState *m);\nvoid mario_throw_held_object(struct MarioState *m);\nvoid mario_stop_riding_and_holding(struct MarioState *m);\nu32 does_mario_have_normal_cap_on_head(struct MarioState *m);\nvoid mario_blow_off_cap(struct MarioState *m, f32 capSpeed);\nu32 mario_lose_cap_to_enemy(u32 arg);\nvoid mario_retrieve_cap(void);\nstruct Object *mario_get_collided_object(struct MarioState *m, u32 interactType);\nu32 mario_check_object_grab(struct MarioState *m);\nu32 get_door_save_file_flag(struct Object *door);\nvoid mario_process_interactions(struct MarioState *m);\nvoid mario_handle_special_floors(struct MarioState *m);\n\n#endif // INTERACTION_H\n"
  },
  {
    "path": "src/game/level_geo.c",
    "content": "#include <ultra64.h>\n\n#include \"sm64.h\"\n#include \"rendering_graph_node.h\"\n#include \"mario_misc.h\"\n#include \"skybox.h\"\n#include \"engine/math_util.h\"\n#include \"camera.h\"\n#include \"envfx_snow.h\"\n#include \"level_geo.h\"\n\n/**\n * Geo function that generates a displaylist for environment effects such as\n * snow or jet stream bubbles.\n */\nGfx *geo_envfx_main(s32 callContext, struct GraphNode *node, Mat4 mtxf) {\n    Vec3s marioPos;\n    Vec3s camFrom;\n    Vec3s camTo;\n    void *particleList;\n    Gfx *gfx = NULL;\n\n    if (callContext == GEO_CONTEXT_RENDER && gCurGraphNodeCamera != NULL) {\n        struct GraphNodeGenerated *execNode = (struct GraphNodeGenerated *) node;\n        u32 *params = &execNode->parameter; // accessed a s32 as 2 u16s by pointing to the variable and\n                                            // casting to a local struct as necessary.\n\n        if (GET_HIGH_U16_OF_32(*params) != gAreaUpdateCounter) {\n            UNUSED struct Camera *sp2C = gCurGraphNodeCamera->config.camera;\n            s32 snowMode = GET_LOW_U16_OF_32(*params);\n\n            vec3f_to_vec3s(camTo, gCurGraphNodeCamera->focus);\n            vec3f_to_vec3s(camFrom, gCurGraphNodeCamera->pos);\n            vec3f_to_vec3s(marioPos, gPlayerCameraState->pos);\n            particleList = envfx_update_particles(snowMode, marioPos, camTo, camFrom);\n            if (particleList != NULL) {\n                Mtx *mtx = alloc_display_list(sizeof(*mtx));\n\n                gfx = alloc_display_list(2 * sizeof(*gfx));\n                mtxf_to_mtx(mtx, mtxf);\n                gSPMatrix(&gfx[0], VIRTUAL_TO_PHYSICAL(mtx), G_MTX_MODELVIEW | G_MTX_LOAD | G_MTX_NOPUSH);\n                gSPBranchList(&gfx[1], VIRTUAL_TO_PHYSICAL(particleList));\n                execNode->fnNode.node.flags = (execNode->fnNode.node.flags & 0xFF) | 0x400;\n            }\n            SET_HIGH_U16_OF_32(*params, gAreaUpdateCounter);\n        }\n    } else if (callContext == GEO_CONTEXT_AREA_INIT) {\n        // Give these arguments some dummy values. Not used in ENVFX_MODE_NONE\n        vec3s_copy(camTo, gVec3sZero);\n        vec3s_copy(camFrom, gVec3sZero);\n        vec3s_copy(marioPos, gVec3sZero);\n        envfx_update_particles(ENVFX_MODE_NONE, marioPos, camTo, camFrom);\n    }\n\n    return gfx;\n}\n\n/**\n * Geo function that generates a displaylist for the skybox. Can be assigned\n * as the function of a GraphNodeBackground.\n */\nGfx *geo_skybox_main(s32 callContext, struct GraphNode *node, UNUSED Mat4 *mtx) {\n    Gfx *gfx = NULL;\n    struct GraphNodeBackground *backgroundNode = (struct GraphNodeBackground *) node;\n\n    if (callContext == GEO_CONTEXT_AREA_LOAD) {\n        backgroundNode->unused = 0;\n    } else if (callContext == GEO_CONTEXT_RENDER) {\n        struct GraphNodeCamera *camNode = (struct GraphNodeCamera *) gCurGraphNodeRoot->views[0];\n        struct GraphNodePerspective *camFrustum =\n            (struct GraphNodePerspective *) camNode->fnNode.node.parent;\n\n        gfx = create_skybox_facing_camera(0, backgroundNode->background, camFrustum->fov, gLakituState.pos[0],\n                            gLakituState.pos[1], gLakituState.pos[2], gLakituState.focus[0],\n                            gLakituState.focus[1], gLakituState.focus[2]);\n    }\n\n    return gfx;\n}\n"
  },
  {
    "path": "src/game/level_geo.h",
    "content": "#ifndef LEVEL_GEO_H\n#define LEVEL_GEO_H\n\n#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\nGfx *geo_envfx_main(s32 callContext, struct GraphNode *node, Mat4 mtxf);\nGfx *geo_skybox_main(s32 callContext, struct GraphNode *node, UNUSED Mat4 *mtx);\n\n#endif // LEVEL_GEO_H\n"
  },
  {
    "path": "src/game/level_update.c",
    "content": "#include <ultra64.h>\n\n#include \"sm64.h\"\n#include \"seq_ids.h\"\n#include \"dialog_ids.h\"\n#include \"audio/external.h\"\n#include \"level_update.h\"\n#include \"game_init.h\"\n#include \"level_update.h\"\n#include \"main.h\"\n#include \"engine/math_util.h\"\n#include \"engine/graph_node.h\"\n#include \"area.h\"\n#include \"save_file.h\"\n#include \"sound_init.h\"\n#include \"mario.h\"\n#include \"camera.h\"\n#include \"object_list_processor.h\"\n#include \"ingame_menu.h\"\n#include \"obj_behaviors.h\"\n#include \"save_file.h\"\n#include \"debug_course.h\"\n#ifdef VERSION_EU\n#include \"memory.h\"\n#include \"eu_translation.h\"\n#include \"segment_symbols.h\"\n#endif\n#include \"level_table.h\"\n#include \"course_table.h\"\n#include \"rumble_init.h\"\n\n#define PLAY_MODE_NORMAL 0\n#define PLAY_MODE_PAUSED 2\n#define PLAY_MODE_CHANGE_AREA 3\n#define PLAY_MODE_CHANGE_LEVEL 4\n#define PLAY_MODE_FRAME_ADVANCE 5\n\n#define WARP_TYPE_NOT_WARPING 0\n#define WARP_TYPE_CHANGE_LEVEL 1\n#define WARP_TYPE_CHANGE_AREA 2\n#define WARP_TYPE_SAME_AREA 3\n\n// TODO: Make these ifdefs better\nconst char *credits01[] = { \"1GAME DIRECTOR\", \"SHIGERU MIYAMOTO\" };\nconst char *credits02[] = { \"2ASSISTANT DIRECTORS\", \"YOSHIAKI KOIZUMI\", \"TAKASHI TEZUKA\" };\nconst char *credits03[] = { \"2SYSTEM PROGRAMMERS\", \"YASUNARI NISHIDA\", \"YOSHINORI TANIMOTO\" };\nconst char *credits04[] = { \"3PROGRAMMERS\", \"HAJIME YAJIMA\", \"DAIKI IWAMOTO\", \"TOSHIO IWAWAKI\" };\n\n#if defined(VERSION_JP) || defined(VERSION_SH) || defined(VERSION_CN)\n\nconst char *credits05[] = { \"1CAMERA PROGRAMMER\", \"TAKUMI KAWAGOE\" };\nconst char *credits06[] = { \"1MARIO FACE PROGRAMMER\", \"GILES GODDARD\" };\nconst char *credits07[] = { \"2COURSE DIRECTORS\", \"YOICHI YAMADA\", \"YASUHISA YAMAMURA\" };\nconst char *credits08[] = { \"2COURSE DESIGNERS\", \"KENTA USUI\", \"NAOKI MORI\" };\nconst char *credits09[] = { \"3COURSE DESIGNERS\", \"YOSHIKI HARUHANA\", \"MAKOTO MIYANAGA\", \"KATSUHIKO KANNO\" };\nconst char *credits10[] = { \"1SOUND COMPOSER\", \"KOJI KONDO\" };\n\n#ifdef VERSION_JP\nconst char *credits11[] = { \"1SOUND EFFECTS\", \"YOJI INAGAKI\" };\nconst char *credits12[] = { \"1SOUND PROGRAMMER\", \"HIDEAKI SHIMIZU\" };\nconst char *credits13[] = { \"23D ANIMATORS\", \"YOSHIAKI KOIZUMI\", \"SATORU TAKIZAWA\" };\nconst char *credits14[] = { \"1CG DESIGNER\", \"MASANAO ARIMOTO\" };\nconst char *credits15[] = { \"3TECHNICAL SUPPORT\", \"TAKAO SAWANO\", \"HIROHITO YOSHIMOTO\", \"HIROTO YADA\" };\nconst char *credits16[] = { \"1TECHNICAL SUPPORT\", \"SGI. 64PROJECT STAFF\" };\nconst char *credits17[] = { \"2PROGRESS MANAGEMENT\", \"KIMIYOSHI FUKUI\", \"KEIZO KATO\" };\n#else // VERSION_SH || VERSION_CN\n// Shindou and iQue combine sound effects and sound programmer in order to make room for Mario voice and Peach voice\nconst char *credits11[] = { \"4SOUND EFFECTS\", \"SOUND PROGRAMMER\", \"YOJI INAGAKI\", \"HIDEAKI SHIMIZU\" };\nconst char *credits12[] = { \"23D ANIMATORS\", \"YOSHIAKI KOIZUMI\", \"SATORU TAKIZAWA\" };\nconst char *credits13[] = { \"1CG DESIGNER\", \"MASANAO ARIMOTO\" };\nconst char *credits14[] = { \"3TECHNICAL SUPPORT\", \"TAKAO SAWANO\", \"HIROHITO YOSHIMOTO\", \"HIROTO YADA\" };\nconst char *credits15[] = { \"1TECHNICAL SUPPORT\", \"SGI. 64PROJECT STAFF\" };\nconst char *credits16[] = { \"2PROGRESS MANAGEMENT\", \"KIMIYOSHI FUKUI\", \"KEIZO KATO\" };\n#endif\n\n#else // VERSION_US || VERSION_EU\n\n// US and EU combine camera programmer and Mario face programmer...\nconst char *credits05[] = { \"4CAMERA PROGRAMMER\", \"MARIO FACE PROGRAMMER\", \"TAKUMI KAWAGOE\", \"GILES GODDARD\" };\nconst char *credits06[] = { \"2COURSE DIRECTORS\", \"YOICHI YAMADA\", \"YASUHISA YAMAMURA\" };\nconst char *credits07[] = { \"2COURSE DESIGNERS\", \"KENTA USUI\", \"NAOKI MORI\" };\nconst char *credits08[] = { \"3COURSE DESIGNERS\", \"YOSHIKI HARUHANA\", \"MAKOTO MIYANAGA\", \"KATSUHIKO KANNO\" };\n\n#ifdef VERSION_US\nconst char *credits09[] = { \"1SOUND COMPOSER\", \"KOJI KONDO\" };\n// ...as well as sound effects and sound programmer in order to make room for screen text writer, Mario voice, and Peach voice\nconst char *credits10[] = { \"4SOUND EFFECTS\", \"SOUND PROGRAMMER\", \"YOJI INAGAKI\", \"HIDEAKI SHIMIZU\" };\nconst char *credits11[] = { \"23-D ANIMATORS\", \"YOSHIAKI KOIZUMI\", \"SATORU TAKIZAWA\" };\nconst char *credits12[] = { \"1ADDITIONAL GRAPHICS\", \"MASANAO ARIMOTO\" };\nconst char *credits13[] = { \"3TECHNICAL SUPPORT\", \"TAKAO SAWANO\", \"HIROHITO YOSHIMOTO\", \"HIROTO YADA\" };\nconst char *credits14[] = { \"1TECHNICAL SUPPORT\", \"SGI N64 PROJECT STAFF\" };\nconst char *credits15[] = { \"2PROGRESS MANAGEMENT\", \"KIMIYOSHI FUKUI\", \"KEIZO KATO\" };\nconst char *credits16[] = { \"5SCREEN TEXT WRITER\", \"TRANSLATION\", \"LESLIE SWAN\", \"MINA AKINO\", \"HIRO YAMADA\" };\n#else // VERSION_EU\n// ...as well as sound composer, sound effects, and sound programmer, and...\nconst char *credits09[] = { \"7SOUND COMPOSER\", \"SOUND EFFECTS\", \"SOUND PROGRAMMER\", \"KOJI KONDO\", \"YOJI INAGAKI\", \"HIDEAKI SHIMIZU\" };\n// ...3D animators and additional graphics in order to make room for screen text writer(s), Mario voice, and Peach voice\nconst char *credits10[] = { \"63-D ANIMATORS\", \"ADDITIONAL GRAPHICS\", \"YOSHIAKI KOIZUMI\", \"SATORU TAKIZAWA\", \"MASANAO ARIMOTO\" };\nconst char *credits11[] = { \"3TECHNICAL SUPPORT\", \"TAKAO SAWANO\", \"HIROHITO YOSHIMOTO\", \"HIROTO YADA\" };\nconst char *credits12[] = { \"1TECHNICAL SUPPORT\", \"SGI N64 PROJECT STAFF\" };\nconst char *credits13[] = { \"2PROGRESS MANAGEMENT\", \"KIMIYOSHI FUKUI\", \"KEIZO KATO\" };\nconst char *credits14[] = { \"5SCREEN TEXT WRITER\", \"ENGLISH TRANSLATION\", \"LESLIE SWAN\", \"MINA AKINO\", \"HIRO YAMADA\" };\nconst char *credits15[] = { \"4SCREEN TEXT WRITER\", \"FRENCH TRANSLATION\", \"JULIEN BARDAKOFF\", \"KENJI HARAGUCHI\" };\nconst char *credits16[] = { \"4SCREEN TEXT WRITER\", \"GERMAN TRANSLATION\", \"THOMAS GOERG\", \"THOMAS SPINDLER\" };\n#endif\n\n#endif\n\n#ifndef VERSION_JP\nconst char *credits17[] = { \"4MARIO VOICE\", \"PEACH VOICE\", \"CHARLES MARTINET\", \"LESLIE SWAN\" };\n#endif\n\n#if defined(VERSION_JP) || defined(VERSION_SH) || defined(VERSION_CN)\n// iQue uses this despite Jyoho Kaihatubu being Japanese\nconst char *credits18[] = { \"3SPECIAL THANKS TO\", \"JYOHO KAIHATUBU\", \"ALL NINTENDO\", \"MARIO CLUB STAFF\" };\n#elif defined(VERSION_US)\nconst char *credits18[] = { \"3SPECIAL THANKS TO\", \"EAD STAFF\", \"ALL NINTENDO PERSONNEL\", \"MARIO CLUB STAFF\" };\n#else // VERSION_EU\nconst char *credits18[] = { \"3SPECIAL THANKS TO\", \"EAD STAFF\", \"ALL NINTENDO PERSONNEL\", \"SUPER MARIO CLUB STAFF\" };\n#endif\n\n#ifdef VERSION_CN\n// iQue combines producer and executive producer in order to make room for China production\nconst char *credits19[] = { \"4PRODUCER\", \"EXECUTIVE PRODUCER\", \"SHIGERU MIYAMOTO\", \"HIROSHI YAMAUCHI\" };\nconst char *credits20[] = { \"1CHINA PRODUCTION\", \"IQUE ENGINEERING\" };\n#else\nconst char *credits19[] = { \"1PRODUCER\", \"SHIGERU MIYAMOTO\" };\nconst char *credits20[] = { \"1EXECUTIVE PRODUCER\", \"HIROSHI YAMAUCHI\" };\n#endif\n\nstruct CreditsEntry sCreditsSequence[] = {\n    { LEVEL_CASTLE_GROUNDS, 1, 1, -128, { 0, 8000, 0 }, NULL },\n    { LEVEL_BOB, 1, 1, 117, { 713, 3918, -3889 }, credits01 },\n    { LEVEL_WF, 1, 50, 46, { 347, 5376, 326 }, credits02 },\n    { LEVEL_JRB, 1, 18, 22, { 3800, -4840, 2727 }, credits03 },\n    { LEVEL_CCM, 2, 34, 25, { -5464, 6656, -6575 }, credits04 },\n    { LEVEL_BBH, 1, 1, 60, { 257, 1922, 2580 }, credits05 },\n    { LEVEL_HMC, 1, -15, 123, { -6469, 1616, -6054 }, credits06 },\n    { LEVEL_THI, 3, 17, -32, { 508, 1024, 1942 }, credits07 },\n    { LEVEL_LLL, 2, 33, 124, { -73, 82, -1467 }, credits08 },\n    { LEVEL_SSL, 1, 65, 98, { -5906, 1024, -2576 }, credits09 },\n    { LEVEL_DDD, 1, 50, 47, { -4884, -4607, -272 }, credits10 },\n    { LEVEL_SL, 1, 17, -34, { 1925, 3328, 563 }, credits11 },\n    { LEVEL_WDW, 1, 33, 105, { -537, 1850, 1818 }, credits12 },\n    { LEVEL_TTM, 1, 2, -33, { 2613, 313, 1074 }, credits13 },\n    { LEVEL_THI, 1, 51, 54, { -2609, 512, 856 }, credits14 },\n    { LEVEL_TTC, 1, 17, -72, { -1304, -71, -967 }, credits15 },\n    { LEVEL_RR, 1, 33, 64, { 1565, 1024, -148 }, credits16 },\n    { LEVEL_SA, 1, 1, 24, { -1050, -1330, -1559 }, credits17 },\n    { LEVEL_COTMC, 1, 49, -16, { -254, 415, -6045 }, credits18 },\n    { LEVEL_DDD, 2, -111, -64, { 3948, 1185, -104 }, credits19 },\n    { LEVEL_CCM, 1, 33, 31, { 3169, -4607, 5240 }, credits20 },\n    { LEVEL_CASTLE_GROUNDS, 1, 1, -128, { 0, 906, -1200 }, NULL },\n    { LEVEL_NONE, 0, 1, 0, { 0, 0, 0 }, NULL },\n};\n\nstruct MarioState gMarioStates[1];\nstruct HudDisplay gHudDisplay;\n\nFORCE_BSS s16 sCurrPlayMode;\nFORCE_BSS u16 D_80339ECA;\nFORCE_BSS s16 sTransitionTimer;\nFORCE_BSS void (*sTransitionUpdate)(s16 *);\nFORCE_BSS struct WarpDest sWarpDest;\nFORCE_BSS s16 D_80339EE0;\nFORCE_BSS s16 sDelayedWarpOp;\nFORCE_BSS s16 sDelayedWarpTimer;\nFORCE_BSS s16 sSourceWarpNodeId;\nFORCE_BSS s32 sDelayedWarpArg;\nFORCE_BSS s16 sUnusedLevelUpdateBss;\nFORCE_BSS s8 sTimerRunning;\ns8 gNeverEnteredCastle;\n\nstruct MarioState *gMarioState = &gMarioStates[0];\nu8 unused1[2] = { 0 };\ns8 sWarpCheckpointActive = FALSE;\nu8 unused2[4];\n\nu16 level_control_timer(s32 timerOp) {\n    switch (timerOp) {\n        case TIMER_CONTROL_SHOW:\n            gHudDisplay.flags |= HUD_DISPLAY_FLAG_TIMER;\n            sTimerRunning = FALSE;\n            gHudDisplay.timer = 0;\n            break;\n\n        case TIMER_CONTROL_START:\n            sTimerRunning = TRUE;\n            break;\n\n        case TIMER_CONTROL_STOP:\n            sTimerRunning = FALSE;\n            break;\n\n        case TIMER_CONTROL_HIDE:\n            gHudDisplay.flags &= ~HUD_DISPLAY_FLAG_TIMER;\n            sTimerRunning = FALSE;\n            gHudDisplay.timer = 0;\n            break;\n    }\n\n    return gHudDisplay.timer;\n}\n\nu32 pressed_pause(void) {\n    u32 dialogActive = get_dialog_id() >= 0;\n    u32 intangible = (gMarioState->action & ACT_FLAG_INTANGIBLE) != 0;\n\n    if (!intangible && !dialogActive && !gWarpTransition.isActive && sDelayedWarpOp == WARP_OP_NONE\n        && (gPlayer1Controller->buttonPressed & START_BUTTON)) {\n        return TRUE;\n    }\n\n    return FALSE;\n}\n\nvoid set_play_mode(s16 playMode) {\n    sCurrPlayMode = playMode;\n    D_80339ECA = 0;\n}\n\nvoid warp_special(s32 arg) {\n    sCurrPlayMode = PLAY_MODE_CHANGE_LEVEL;\n    D_80339ECA = 0;\n    D_80339EE0 = arg;\n}\n\nvoid fade_into_special_warp(u32 arg, u32 color) {\n    if (color != 0) {\n        color = 0xFF;\n    }\n\n    fadeout_music(190);\n    play_transition(WARP_TRANSITION_FADE_INTO_COLOR, 0x10, color, color, color);\n    level_set_transition(30, NULL);\n\n    warp_special(arg);\n}\n\nvoid stub_level_update_1(void) {\n}\n\nvoid load_level_init_text(u32 arg) {\n    s32 gotAchievement;\n    s32 dialogID = gCurrentArea->dialog[arg];\n\n    switch (dialogID) {\n        case DIALOG_129:\n            gotAchievement = save_file_get_flags() & SAVE_FLAG_HAVE_VANISH_CAP;\n            break;\n\n        case DIALOG_130:\n            gotAchievement = save_file_get_flags() & SAVE_FLAG_HAVE_METAL_CAP;\n            break;\n\n        case DIALOG_131:\n            gotAchievement = save_file_get_flags() & SAVE_FLAG_HAVE_WING_CAP;\n            break;\n\n        case (u8)DIALOG_NONE: // 255, cast value to u8 to match (-1)\n            gotAchievement = TRUE;\n            break;\n\n        default:\n            gotAchievement =\n                save_file_get_star_flags(gCurrSaveFileNum - 1, COURSE_NUM_TO_INDEX(gCurrCourseNum));\n            break;\n    }\n\n    if (!gotAchievement) {\n        level_set_transition(-1, NULL);\n        create_dialog_box(dialogID);\n    }\n}\n\nvoid init_door_warp(struct SpawnInfo *spawnInfo, u32 arg1) {\n    if (arg1 & 0x00000002) {\n        spawnInfo->startAngle[1] += 0x8000;\n    }\n\n    spawnInfo->startPos[0] += 300.0f * sins(spawnInfo->startAngle[1]);\n    spawnInfo->startPos[2] += 300.0f * coss(spawnInfo->startAngle[1]);\n}\n\nvoid set_mario_initial_cap_powerup(struct MarioState *m) {\n    s32 capCourseIndex = gCurrCourseNum - COURSE_CAP_COURSES;\n\n    switch (capCourseIndex) {\n        case COURSE_COTMC - COURSE_CAP_COURSES:\n            m->flags |= MARIO_METAL_CAP | MARIO_CAP_ON_HEAD;\n            m->capTimer = 600;\n            break;\n\n        case COURSE_TOTWC - COURSE_CAP_COURSES:\n            m->flags |= MARIO_WING_CAP | MARIO_CAP_ON_HEAD;\n            m->capTimer = 1200;\n            break;\n\n        case COURSE_VCUTM - COURSE_CAP_COURSES:\n            m->flags |= MARIO_VANISH_CAP | MARIO_CAP_ON_HEAD;\n            m->capTimer = 600;\n            break;\n    }\n}\n\nvoid set_mario_initial_action(struct MarioState *m, u32 spawnType, u32 actionArg) {\n    switch (spawnType) {\n        case MARIO_SPAWN_DOOR_WARP:\n            set_mario_action(m, ACT_WARP_DOOR_SPAWN, actionArg);\n            break;\n        case MARIO_SPAWN_UNKNOWN_02:\n            set_mario_action(m, ACT_IDLE, 0);\n            break;\n        case MARIO_SPAWN_UNKNOWN_03:\n            set_mario_action(m, ACT_EMERGE_FROM_PIPE, 0);\n            break;\n        case MARIO_SPAWN_TELEPORT:\n            set_mario_action(m, ACT_TELEPORT_FADE_IN, 0);\n            break;\n        case MARIO_SPAWN_INSTANT_ACTIVE:\n            set_mario_action(m, ACT_IDLE, 0);\n            break;\n        case MARIO_SPAWN_AIRBORNE:\n            set_mario_action(m, ACT_SPAWN_NO_SPIN_AIRBORNE, 0);\n            break;\n        case MARIO_SPAWN_HARD_AIR_KNOCKBACK:\n            set_mario_action(m, ACT_HARD_BACKWARD_AIR_KB, 0);\n            break;\n        case MARIO_SPAWN_SPIN_AIRBORNE_CIRCLE:\n            set_mario_action(m, ACT_SPAWN_SPIN_AIRBORNE, 0);\n            break;\n        case MARIO_SPAWN_DEATH:\n            set_mario_action(m, ACT_FALLING_DEATH_EXIT, 0);\n            break;\n        case MARIO_SPAWN_SPIN_AIRBORNE:\n            set_mario_action(m, ACT_SPAWN_SPIN_AIRBORNE, 0);\n            break;\n        case MARIO_SPAWN_FLYING:\n            set_mario_action(m, ACT_FLYING, 2);\n            break;\n        case MARIO_SPAWN_SWIMMING:\n            set_mario_action(m, ACT_WATER_IDLE, 1);\n            break;\n        case MARIO_SPAWN_PAINTING_STAR_COLLECT:\n            set_mario_action(m, ACT_EXIT_AIRBORNE, 0);\n            break;\n        case MARIO_SPAWN_PAINTING_DEATH:\n            set_mario_action(m, ACT_DEATH_EXIT, 0);\n            break;\n        case MARIO_SPAWN_AIRBORNE_STAR_COLLECT:\n            set_mario_action(m, ACT_FALLING_EXIT_AIRBORNE, 0);\n            break;\n        case MARIO_SPAWN_AIRBORNE_DEATH:\n            set_mario_action(m, ACT_UNUSED_DEATH_EXIT, 0);\n            break;\n        case MARIO_SPAWN_LAUNCH_STAR_COLLECT:\n            set_mario_action(m, ACT_SPECIAL_EXIT_AIRBORNE, 0);\n            break;\n        case MARIO_SPAWN_LAUNCH_DEATH:\n            set_mario_action(m, ACT_SPECIAL_DEATH_EXIT, 0);\n            break;\n    }\n\n    set_mario_initial_cap_powerup(m);\n}\n\nvoid init_mario_after_warp(void) {\n    struct ObjectWarpNode *spawnNode = area_get_warp_node(sWarpDest.nodeId);\n    u32 marioSpawnType = get_mario_spawn_type(spawnNode->object);\n\n    if (gMarioState->action != ACT_UNINITIALIZED) {\n        gPlayerSpawnInfos[0].startPos[0] = (s16) spawnNode->object->oPosX;\n        gPlayerSpawnInfos[0].startPos[1] = (s16) spawnNode->object->oPosY;\n        gPlayerSpawnInfos[0].startPos[2] = (s16) spawnNode->object->oPosZ;\n\n        gPlayerSpawnInfos[0].startAngle[0] = 0;\n        gPlayerSpawnInfos[0].startAngle[1] = spawnNode->object->oMoveAngleYaw;\n        gPlayerSpawnInfos[0].startAngle[2] = 0;\n\n        if (marioSpawnType == MARIO_SPAWN_DOOR_WARP) {\n            init_door_warp(&gPlayerSpawnInfos[0], sWarpDest.arg);\n        }\n\n        if (sWarpDest.type == WARP_TYPE_CHANGE_LEVEL || sWarpDest.type == WARP_TYPE_CHANGE_AREA) {\n            gPlayerSpawnInfos[0].areaIndex = sWarpDest.areaIdx;\n            load_mario_area();\n        }\n\n        init_mario();\n        set_mario_initial_action(gMarioState, marioSpawnType, sWarpDest.arg);\n\n        gMarioState->interactObj = spawnNode->object;\n        gMarioState->usedObj = spawnNode->object;\n    }\n\n    reset_camera(gCurrentArea->camera);\n    sWarpDest.type = WARP_TYPE_NOT_WARPING;\n    sDelayedWarpOp = WARP_OP_NONE;\n\n    switch (marioSpawnType) {\n        case MARIO_SPAWN_UNKNOWN_03:\n            play_transition(WARP_TRANSITION_FADE_FROM_STAR, 0x10, 0x00, 0x00, 0x00);\n            break;\n        case MARIO_SPAWN_DOOR_WARP:\n            play_transition(WARP_TRANSITION_FADE_FROM_CIRCLE, 0x10, 0x00, 0x00, 0x00);\n            break;\n        case MARIO_SPAWN_TELEPORT:\n            play_transition(WARP_TRANSITION_FADE_FROM_COLOR, 0x14, 0xFF, 0xFF, 0xFF);\n            break;\n        case MARIO_SPAWN_SPIN_AIRBORNE:\n            play_transition(WARP_TRANSITION_FADE_FROM_COLOR, 0x1A, 0xFF, 0xFF, 0xFF);\n            break;\n        case MARIO_SPAWN_SPIN_AIRBORNE_CIRCLE:\n            play_transition(WARP_TRANSITION_FADE_FROM_CIRCLE, 0x10, 0x00, 0x00, 0x00);\n            break;\n        case MARIO_SPAWN_UNKNOWN_27:\n            play_transition(WARP_TRANSITION_FADE_FROM_COLOR, 0x10, 0x00, 0x00, 0x00);\n            break;\n        default:\n            play_transition(WARP_TRANSITION_FADE_FROM_STAR, 0x10, 0x00, 0x00, 0x00);\n            break;\n    }\n\n    if (gCurrDemoInput == NULL) {\n        set_background_music(gCurrentArea->musicParam, gCurrentArea->musicParam2, 0);\n\n        if (gMarioState->flags & MARIO_METAL_CAP) {\n            play_cap_music(SEQUENCE_ARGS(4, SEQ_EVENT_METAL_CAP));\n        }\n\n        if (gMarioState->flags & (MARIO_VANISH_CAP | MARIO_WING_CAP)) {\n            play_cap_music(SEQUENCE_ARGS(4, SEQ_EVENT_POWERUP));\n        }\n\n#if BUGFIX_KOOPA_RACE_MUSIC\n        if (gCurrLevelNum == LEVEL_BOB\n            && get_current_background_music() != SEQUENCE_ARGS(4, SEQ_LEVEL_SLIDE) && sTimerRunning) {\n            play_music(SEQ_PLAYER_LEVEL, SEQUENCE_ARGS(4, SEQ_LEVEL_SLIDE), 0);\n        }\n#endif\n\n        if (sWarpDest.levelNum == LEVEL_CASTLE && sWarpDest.areaIdx == 1\n#ifndef VERSION_JP\n            && (sWarpDest.nodeId == 31 || sWarpDest.nodeId == 32)\n#else\n            && sWarpDest.nodeId == 31\n#endif\n        ) {\n            play_sound(SOUND_MENU_MARIO_CASTLE_WARP, gGlobalSoundSource);\n        }\n\n#ifndef VERSION_JP\n        if (sWarpDest.levelNum == LEVEL_CASTLE_GROUNDS && sWarpDest.areaIdx == 1\n            && (sWarpDest.nodeId == 7 || sWarpDest.nodeId == 10 || sWarpDest.nodeId == 20\n                || sWarpDest.nodeId == 30)) {\n            play_sound(SOUND_MENU_MARIO_CASTLE_WARP, gGlobalSoundSource);\n        }\n#endif\n    }\n}\n\n// used for warps inside one level\nvoid warp_area(void) {\n    if (sWarpDest.type != WARP_TYPE_NOT_WARPING) {\n        if (sWarpDest.type == WARP_TYPE_CHANGE_AREA) {\n            level_control_timer(TIMER_CONTROL_HIDE);\n            unload_mario_area();\n            load_area(sWarpDest.areaIdx);\n        }\n\n        init_mario_after_warp();\n    }\n}\n\n// used for warps between levels\nvoid warp_level(void) {\n    gCurrLevelNum = sWarpDest.levelNum;\n\n    level_control_timer(TIMER_CONTROL_HIDE);\n\n    load_area(sWarpDest.areaIdx);\n    init_mario_after_warp();\n}\n\nvoid warp_credits(void) {\n    s32 marioAction;\n\n    switch (sWarpDest.nodeId) {\n        case WARP_NODE_CREDITS_START:\n            marioAction = ACT_END_PEACH_CUTSCENE;\n            break;\n\n        case WARP_NODE_CREDITS_NEXT:\n            marioAction = ACT_CREDITS_CUTSCENE;\n            break;\n\n        case WARP_NODE_CREDITS_END:\n            marioAction = ACT_END_WAVING_CUTSCENE;\n            break;\n    }\n\n    gCurrLevelNum = sWarpDest.levelNum;\n\n    load_area(sWarpDest.areaIdx);\n\n    vec3s_set(gPlayerSpawnInfos[0].startPos, gCurrCreditsEntry->marioPos[0],\n              gCurrCreditsEntry->marioPos[1], gCurrCreditsEntry->marioPos[2]);\n\n    vec3s_set(gPlayerSpawnInfos[0].startAngle, 0, gCurrCreditsEntry->marioAngle << 8, 0);\n\n    gPlayerSpawnInfos[0].areaIndex = sWarpDest.areaIdx;\n\n    load_mario_area();\n    init_mario();\n\n    set_mario_action(gMarioState, marioAction, 0);\n\n    reset_camera(gCurrentArea->camera);\n\n    sWarpDest.type = WARP_TYPE_NOT_WARPING;\n    sDelayedWarpOp = WARP_OP_NONE;\n\n    play_transition(WARP_TRANSITION_FADE_FROM_COLOR, 0x14, 0x00, 0x00, 0x00);\n\n    if (gCurrCreditsEntry == NULL || gCurrCreditsEntry == sCreditsSequence) {\n        set_background_music(gCurrentArea->musicParam, gCurrentArea->musicParam2, 0);\n    }\n}\n\nvoid check_instant_warp(void) {\n    s16 cameraAngle;\n    struct Surface *floor;\n\n    if (gCurrLevelNum == LEVEL_CASTLE\n        && save_file_get_total_star_count(gCurrSaveFileNum - 1, COURSE_MIN - 1, COURSE_MAX - 1) >= 70) {\n        return;\n    }\n\n    if ((floor = gMarioState->floor) != NULL) {\n        s32 index = floor->type - SURFACE_INSTANT_WARP_1B;\n        if (index >= INSTANT_WARP_INDEX_START && index < INSTANT_WARP_INDEX_STOP\n            && gCurrentArea->instantWarps != NULL) {\n            struct InstantWarp *warp = &gCurrentArea->instantWarps[index];\n\n            if (warp->id != 0) {\n                gMarioState->pos[0] += warp->displacement[0];\n                gMarioState->pos[1] += warp->displacement[1];\n                gMarioState->pos[2] += warp->displacement[2];\n\n                gMarioState->marioObj->oPosX = gMarioState->pos[0];\n                gMarioState->marioObj->oPosY = gMarioState->pos[1];\n                gMarioState->marioObj->oPosZ = gMarioState->pos[2];\n\n                cameraAngle = gMarioState->area->camera->yaw;\n\n                change_area(warp->area);\n                gMarioState->area = gCurrentArea;\n\n                warp_camera(warp->displacement[0], warp->displacement[1], warp->displacement[2]);\n\n                gMarioState->area->camera->yaw = cameraAngle;\n            }\n        }\n    }\n}\n\ns16 music_changed_through_warp(s16 arg) {\n    struct ObjectWarpNode *warpNode = area_get_warp_node(arg);\n    s16 levelNum = warpNode->node.destLevel & 0x7F;\n\n#if BUGFIX_KOOPA_RACE_MUSIC\n\n    s16 destArea = warpNode->node.destArea;\n    s16 val4 = TRUE;\n    s16 sp2C;\n\n    if (levelNum == LEVEL_BOB && levelNum == gCurrLevelNum && destArea == gCurrAreaIndex) {\n        sp2C = get_current_background_music();\n        if (sp2C == SEQUENCE_ARGS(4, SEQ_EVENT_POWERUP | SEQ_VARIATION)\n            || sp2C == SEQUENCE_ARGS(4, SEQ_EVENT_POWERUP)) {\n            val4 = FALSE;\n        }\n    } else {\n        u16 val8 = gAreas[destArea].musicParam;\n        u16 val6 = gAreas[destArea].musicParam2;\n\n        val4 = levelNum == gCurrLevelNum && val8 == gCurrentArea->musicParam\n               && val6 == gCurrentArea->musicParam2;\n\n        if (get_current_background_music() != val6) {\n            val4 = FALSE;\n        }\n    }\n    return val4;\n\n#else\n\n    u16 val8 = gAreas[warpNode->node.destArea].musicParam;\n    u16 val6 = gAreas[warpNode->node.destArea].musicParam2;\n\n    s16 val4 = levelNum == gCurrLevelNum && val8 == gCurrentArea->musicParam\n               && val6 == gCurrentArea->musicParam2;\n\n    if (get_current_background_music() != val6) {\n        val4 = FALSE;\n    }\n    return val4;\n\n#endif\n}\n\n/**\n * Set the current warp type and destination level/area/node.\n */\nvoid initiate_warp(s16 destLevel, s16 destArea, s16 destWarpNode, s32 arg3) {\n    if (destWarpNode >= WARP_NODE_CREDITS_MIN) {\n        sWarpDest.type = WARP_TYPE_CHANGE_LEVEL;\n    } else if (destLevel != gCurrLevelNum) {\n        sWarpDest.type = WARP_TYPE_CHANGE_LEVEL;\n    } else if (destArea != gCurrentArea->index) {\n        sWarpDest.type = WARP_TYPE_CHANGE_AREA;\n    } else {\n        sWarpDest.type = WARP_TYPE_SAME_AREA;\n    }\n\n    sWarpDest.levelNum = destLevel;\n    sWarpDest.areaIdx = destArea;\n    sWarpDest.nodeId = destWarpNode;\n    sWarpDest.arg = arg3;\n}\n\n// From Surface 0xD3 to 0xFC\n#define PAINTING_WARP_INDEX_START 0x00 // Value greater than or equal to Surface 0xD3\n#define PAINTING_WARP_INDEX_FA 0x2A    // THI Huge Painting index left\n#define PAINTING_WARP_INDEX_END 0x2D   // Value less than Surface 0xFD\n\n/**\n * Check if Mario is above and close to a painting warp floor, and return the\n * corresponding warp node.\n */\nstruct WarpNode *get_painting_warp_node(void) {\n    struct WarpNode *warpNode = NULL;\n    s32 paintingIndex = gMarioState->floor->type - SURFACE_PAINTING_WARP_D3;\n\n    if (paintingIndex >= PAINTING_WARP_INDEX_START && paintingIndex < PAINTING_WARP_INDEX_END) {\n        if (paintingIndex < PAINTING_WARP_INDEX_FA\n            || gMarioState->pos[1] - gMarioState->floorHeight < 80.0f) {\n            warpNode = &gCurrentArea->paintingWarpNodes[paintingIndex];\n        }\n    }\n\n    return warpNode;\n}\n\n/**\n * Check is Mario has entered a painting, and if so, initiate a warp.\n */\nvoid initiate_painting_warp(void) {\n    if (gCurrentArea->paintingWarpNodes != NULL && gMarioState->floor != NULL) {\n        struct WarpNode warpNode;\n        struct WarpNode *pWarpNode = get_painting_warp_node();\n\n        if (pWarpNode != NULL) {\n            if (gMarioState->action & ACT_FLAG_INTANGIBLE) {\n                play_painting_eject_sound();\n            } else if (pWarpNode->id != 0) {\n                warpNode = *pWarpNode;\n\n                if (!(warpNode.destLevel & 0x80)) {\n                    sWarpCheckpointActive = check_warp_checkpoint(&warpNode);\n                }\n\n                initiate_warp(warpNode.destLevel & 0x7F, warpNode.destArea, warpNode.destNode, 0);\n                check_if_should_set_warp_checkpoint(&warpNode);\n\n                play_transition_after_delay(WARP_TRANSITION_FADE_INTO_COLOR, 30, 255, 255, 255, 45);\n                level_set_transition(74, basic_update);\n\n                set_mario_action(gMarioState, ACT_DISAPPEARED, 0);\n\n                gMarioState->marioObj->header.gfx.node.flags &= ~GRAPH_RENDER_ACTIVE;\n\n                play_sound(SOUND_MENU_STAR_SOUND, gGlobalSoundSource);\n                fadeout_music(398);\n#if ENABLE_RUMBLE\n                queue_rumble_data(80, 70);\n                func_sh_8024C89C(1);\n#endif\n            }\n        }\n    }\n}\n\n/**\n * If there is not already a delayed warp, schedule one. The source node is\n * based on the warp operation and sometimes Mario's used object.\n * Return the time left until the delayed warp is initiated.\n */\ns16 level_trigger_warp(struct MarioState *m, s32 warpOp) {\n    s32 val04 = TRUE;\n\n    if (sDelayedWarpOp == WARP_OP_NONE) {\n        m->invincTimer = -1;\n        sDelayedWarpArg = 0;\n        sDelayedWarpOp = warpOp;\n\n        switch (warpOp) {\n            case WARP_OP_DEMO_NEXT:\n            case WARP_OP_DEMO_END: sDelayedWarpTimer = 20; // Must be one line to match on -O2\n                sSourceWarpNodeId = WARP_NODE_SUCCESS;\n                gSavedCourseNum = COURSE_NONE;\n                val04 = FALSE;\n                play_transition(WARP_TRANSITION_FADE_INTO_STAR, 0x14, 0x00, 0x00, 0x00);\n                break;\n\n            case WARP_OP_CREDITS_END:\n                sDelayedWarpTimer = 60;\n                sSourceWarpNodeId = WARP_NODE_SUCCESS;\n                val04 = FALSE;\n                gSavedCourseNum = COURSE_NONE;\n                play_transition(WARP_TRANSITION_FADE_INTO_COLOR, 0x3C, 0x00, 0x00, 0x00);\n                break;\n\n            case WARP_OP_STAR_EXIT:\n                sDelayedWarpTimer = 32;\n                sSourceWarpNodeId = WARP_NODE_SUCCESS;\n                gSavedCourseNum = COURSE_NONE;\n                play_transition(WARP_TRANSITION_FADE_INTO_MARIO, 0x20, 0x00, 0x00, 0x00);\n                break;\n\n            case WARP_OP_DEATH:\n                if (m->numLives == 0) {\n                    sDelayedWarpOp = WARP_OP_GAME_OVER;\n                }\n                sDelayedWarpTimer = 48;\n                sSourceWarpNodeId = WARP_NODE_DEATH;\n                play_transition(WARP_TRANSITION_FADE_INTO_BOWSER, 0x30, 0x00, 0x00, 0x00);\n                play_sound(SOUND_MENU_BOWSER_LAUGH, gGlobalSoundSource);\n                break;\n\n            case WARP_OP_WARP_FLOOR:\n                sSourceWarpNodeId = WARP_NODE_WARP_FLOOR;\n                if (area_get_warp_node(sSourceWarpNodeId) == NULL) {\n                    if (m->numLives == 0) {\n                        sDelayedWarpOp = WARP_OP_GAME_OVER;\n                    } else {\n                        sSourceWarpNodeId = WARP_NODE_DEATH;\n                    }\n                }\n                sDelayedWarpTimer = 20;\n                play_transition(WARP_TRANSITION_FADE_INTO_CIRCLE, 0x14, 0x00, 0x00, 0x00);\n                break;\n\n            case WARP_OP_UNKNOWN_01: // enter TotWC\n                sDelayedWarpTimer = 30;\n                sSourceWarpNodeId = WARP_NODE_TOTWC;\n                play_transition(WARP_TRANSITION_FADE_INTO_COLOR, 0x1E, 0xFF, 0xFF, 0xFF);\n#ifndef VERSION_JP\n                play_sound(SOUND_MENU_STAR_SOUND, gGlobalSoundSource);\n#endif\n                break;\n\n            case WARP_OP_UNKNOWN_02: // enter BBH\n                sDelayedWarpTimer = 30;\n                sSourceWarpNodeId = (m->usedObj->oBhvParams & 0x00FF0000) >> 16;\n                play_transition(WARP_TRANSITION_FADE_INTO_COLOR, 0x1E, 0xFF, 0xFF, 0xFF);\n                break;\n\n            case WARP_OP_TELEPORT:\n                sDelayedWarpTimer = 20;\n                sSourceWarpNodeId = (m->usedObj->oBhvParams & 0x00FF0000) >> 16;\n                val04 = !music_changed_through_warp(sSourceWarpNodeId);\n                play_transition(WARP_TRANSITION_FADE_INTO_COLOR, 0x14, 0xFF, 0xFF, 0xFF);\n                break;\n\n            case WARP_OP_WARP_DOOR:\n                sDelayedWarpTimer = 20;\n                sDelayedWarpArg = m->actionArg;\n                sSourceWarpNodeId = (m->usedObj->oBhvParams & 0x00FF0000) >> 16;\n                val04 = !music_changed_through_warp(sSourceWarpNodeId);\n                play_transition(WARP_TRANSITION_FADE_INTO_CIRCLE, 0x14, 0x00, 0x00, 0x00);\n                break;\n\n            case WARP_OP_WARP_OBJECT:\n                sDelayedWarpTimer = 20;\n                sSourceWarpNodeId = (m->usedObj->oBhvParams & 0x00FF0000) >> 16;\n                val04 = !music_changed_through_warp(sSourceWarpNodeId);\n                play_transition(WARP_TRANSITION_FADE_INTO_STAR, 0x14, 0x00, 0x00, 0x00);\n                break;\n\n            case WARP_OP_CREDITS_START:\n                sDelayedWarpTimer = 30;\n                play_transition(WARP_TRANSITION_FADE_INTO_COLOR, 0x1E, 0x00, 0x00, 0x00);\n                break;\n\n            case WARP_OP_CREDITS_NEXT:\n                if (gCurrCreditsEntry == &sCreditsSequence[0]) {\n                    sDelayedWarpTimer = 60;\n                    play_transition(WARP_TRANSITION_FADE_INTO_COLOR, 0x3C, 0x00, 0x00, 0x00);\n                } else {\n                    sDelayedWarpTimer = 20;\n                    play_transition(WARP_TRANSITION_FADE_INTO_COLOR, 0x14, 0x00, 0x00, 0x00);\n                }\n                val04 = FALSE;\n                break;\n        }\n\n        if (val04 && gCurrDemoInput == NULL) {\n            fadeout_music((3 * sDelayedWarpTimer / 2) * 8 - 2);\n        }\n    }\n\n    return sDelayedWarpTimer;\n}\n\n/**\n * If a delayed warp is ready, initiate it.\n */\nvoid initiate_delayed_warp(void) {\n    struct ObjectWarpNode *warpNode;\n    s32 destWarpNode;\n\n    if (sDelayedWarpOp != WARP_OP_NONE && --sDelayedWarpTimer == 0) {\n        reset_dialog_render_state();\n\n        if (gDebugLevelSelect && (sDelayedWarpOp & WARP_OP_TRIGGERS_LEVEL_SELECT)) {\n            warp_special(-9);\n        } else if (gCurrDemoInput != NULL) {\n            if (sDelayedWarpOp == WARP_OP_DEMO_END) {\n                warp_special(-8);\n            } else {\n                warp_special(-2);\n            }\n        } else {\n            switch (sDelayedWarpOp) {\n                case WARP_OP_GAME_OVER:\n                    save_file_reload();\n                    warp_special(-3);\n                    break;\n\n                case WARP_OP_CREDITS_END:\n                    warp_special(-1);\n                    sound_banks_enable(SEQ_PLAYER_SFX,\n                                       SOUND_BANKS_ALL & ~SOUND_BANKS_DISABLED_AFTER_CREDITS);\n                    break;\n\n                case WARP_OP_DEMO_NEXT:\n                    warp_special(-2);\n                    break;\n\n                case WARP_OP_CREDITS_START:\n                    gCurrCreditsEntry = &sCreditsSequence[0];\n                    initiate_warp(gCurrCreditsEntry->levelNum, gCurrCreditsEntry->areaIndex,\n                                  WARP_NODE_CREDITS_START, 0);\n                    break;\n\n                case WARP_OP_CREDITS_NEXT:\n                    sound_banks_disable(SEQ_PLAYER_SFX, SOUND_BANKS_ALL);\n\n                    gCurrCreditsEntry++;\n                    gCurrActNum = gCurrCreditsEntry->unk02 & 0x07;\n                    if ((gCurrCreditsEntry + 1)->levelNum == LEVEL_NONE) {\n                        destWarpNode = WARP_NODE_CREDITS_END;\n                    } else {\n                        destWarpNode = WARP_NODE_CREDITS_NEXT;\n                    }\n\n                    initiate_warp(gCurrCreditsEntry->levelNum, gCurrCreditsEntry->areaIndex,\n                                  destWarpNode, 0);\n                    break;\n\n                default:\n                    warpNode = area_get_warp_node(sSourceWarpNodeId);\n\n                    initiate_warp(warpNode->node.destLevel & 0x7F, warpNode->node.destArea,\n                                  warpNode->node.destNode, sDelayedWarpArg);\n\n                    check_if_should_set_warp_checkpoint(&warpNode->node);\n                    if (sWarpDest.type != WARP_TYPE_CHANGE_LEVEL) {\n                        level_set_transition(2, NULL);\n                    }\n                    break;\n            }\n        }\n    }\n}\n\nvoid update_hud_values(void) {\n    if (gCurrCreditsEntry == NULL) {\n        s16 numHealthWedges = gMarioState->health > 0 ? gMarioState->health >> 8 : 0;\n\n        if (gCurrCourseNum >= COURSE_MIN) {\n            gHudDisplay.flags |= HUD_DISPLAY_FLAG_COIN_COUNT;\n        } else {\n            gHudDisplay.flags &= ~HUD_DISPLAY_FLAG_COIN_COUNT;\n        }\n\n        if (gHudDisplay.coins < gMarioState->numCoins) {\n            if (gGlobalTimer & 1) {\n                u32 coinSound;\n                if (gMarioState->action & (ACT_FLAG_SWIMMING | ACT_FLAG_METAL_WATER)) {\n                    coinSound = SOUND_GENERAL_COIN_WATER;\n                } else {\n                    coinSound = SOUND_GENERAL_COIN;\n                }\n\n                gHudDisplay.coins++;\n                play_sound(coinSound, gMarioState->marioObj->header.gfx.cameraToObject);\n            }\n        }\n\n        if (gMarioState->numLives > 100) {\n            gMarioState->numLives = 100;\n        }\n\n#if BUGFIX_MAX_LIVES\n        if (gMarioState->numCoins > 999) {\n            gMarioState->numCoins = 999;\n        }\n\n        if (gHudDisplay.coins > 999) {\n            gHudDisplay.coins = 999;\n        }\n#else\n        if (gMarioState->numCoins > 999) {\n            gMarioState->numLives = (s8) 999; //! Wrong variable\n        }\n#endif\n\n        gHudDisplay.stars = gMarioState->numStars;\n        gHudDisplay.lives = gMarioState->numLives;\n        gHudDisplay.keys = gMarioState->numKeys;\n\n        if (numHealthWedges > gHudDisplay.wedges) {\n            play_sound(SOUND_MENU_POWER_METER, gGlobalSoundSource);\n        }\n        gHudDisplay.wedges = numHealthWedges;\n\n        if (gMarioState->hurtCounter > 0) {\n            gHudDisplay.flags |= HUD_DISPLAY_FLAG_EMPHASIZE_POWER;\n        } else {\n            gHudDisplay.flags &= ~HUD_DISPLAY_FLAG_EMPHASIZE_POWER;\n        }\n    }\n}\n\n/**\n * Update objects, HUD, and camera. This update function excludes things like\n * endless staircase, warps, pausing, etc. This is used when entering a painting,\n * presumably to allow painting and camera updating while avoiding triggering the\n * warp twice.\n */\nvoid basic_update(UNUSED s16 *arg) {\n    area_update_objects();\n    update_hud_values();\n\n    if (gCurrentArea != NULL) {\n        update_camera(gCurrentArea->camera);\n    }\n}\n\ns32 play_mode_normal(void) {\n    if (gCurrDemoInput != NULL) {\n        print_intro_text();\n        if (gPlayer1Controller->buttonPressed & END_DEMO) {\n            level_trigger_warp(gMarioState,\n                               gCurrLevelNum == LEVEL_PSS ? WARP_OP_DEMO_END : WARP_OP_DEMO_NEXT);\n        } else if (!gWarpTransition.isActive && sDelayedWarpOp == WARP_OP_NONE\n                   && (gPlayer1Controller->buttonPressed & START_BUTTON)) {\n            level_trigger_warp(gMarioState, WARP_OP_DEMO_NEXT);\n        }\n    }\n\n    warp_area();\n    check_instant_warp();\n\n    if (sTimerRunning && gHudDisplay.timer < 17999) {\n        gHudDisplay.timer++;\n    }\n\n    area_update_objects();\n    update_hud_values();\n\n    if (gCurrentArea != NULL) {\n        update_camera(gCurrentArea->camera);\n    }\n\n    initiate_painting_warp();\n    initiate_delayed_warp();\n\n    // If either initiate_painting_warp or initiate_delayed_warp initiated a\n    // warp, change play mode accordingly.\n    if (sCurrPlayMode == PLAY_MODE_NORMAL) {\n        if (sWarpDest.type == WARP_TYPE_CHANGE_LEVEL) {\n            set_play_mode(PLAY_MODE_CHANGE_LEVEL);\n        } else if (sTransitionTimer != 0) {\n            set_play_mode(PLAY_MODE_CHANGE_AREA);\n        } else if (pressed_pause()) {\n            lower_background_noise(1);\n#if ENABLE_RUMBLE\n            cancel_rumble();\n#endif\n            gCameraMovementFlags |= CAM_MOVE_PAUSE_SCREEN;\n            set_play_mode(PLAY_MODE_PAUSED);\n        }\n    }\n\n    return 0;\n}\n\ns32 play_mode_paused(void) {\n    if (gMenuOptSelectIndex == MENU_OPT_NONE) {\n        set_menu_mode(MENU_MODE_RENDER_PAUSE_SCREEN);\n    } else if (gMenuOptSelectIndex == MENU_OPT_DEFAULT) {\n        raise_background_noise(1);\n        gCameraMovementFlags &= ~CAM_MOVE_PAUSE_SCREEN;\n        set_play_mode(PLAY_MODE_NORMAL);\n    } else { // MENU_OPT_EXIT_COURSE\n        if (gDebugLevelSelect) {\n            fade_into_special_warp(-9, 1);\n        } else {\n            initiate_warp(LEVEL_CASTLE, 1, 0x1F, 0);\n            fade_into_special_warp(0, 0);\n            gSavedCourseNum = COURSE_NONE;\n        }\n\n        gCameraMovementFlags &= ~CAM_MOVE_PAUSE_SCREEN;\n    }\n\n    return 0;\n}\n\n/**\n * Debug mode that lets you frame advance by pressing D-pad down. Unfortunately\n * it uses the pause camera, making it basically unusable in most levels.\n */\ns32 play_mode_frame_advance(void) {\n    if (gPlayer1Controller->buttonPressed & D_JPAD) {\n        gCameraMovementFlags &= ~CAM_MOVE_PAUSE_SCREEN;\n        play_mode_normal();\n    } else if (gPlayer1Controller->buttonPressed & START_BUTTON) {\n        gCameraMovementFlags &= ~CAM_MOVE_PAUSE_SCREEN;\n        raise_background_noise(1);\n        set_play_mode(PLAY_MODE_NORMAL);\n    } else {\n        gCameraMovementFlags |= CAM_MOVE_PAUSE_SCREEN;\n    }\n\n    return 0;\n}\n\n/**\n * Set the transition, which is a period of time after the warp is initiated\n * but before it actually occurs. If updateFunction is not NULL, it will be\n * called each frame during the transition.\n */\nvoid level_set_transition(s16 length, void (*updateFunction)(s16 *)) {\n    sTransitionTimer = length;\n    sTransitionUpdate = updateFunction;\n}\n\n/**\n * Play the transition and then return to normal play mode.\n */\ns32 play_mode_change_area(void) {\n    //! This maybe was supposed to be sTransitionTimer == -1? sTransitionUpdate\n    // is never set to -1.\n    if (sTransitionUpdate == (void (*)(s16 *)) -1) {\n        update_camera(gCurrentArea->camera);\n    } else if (sTransitionUpdate != NULL) {\n        sTransitionUpdate(&sTransitionTimer);\n    }\n\n    if (sTransitionTimer > 0) {\n        sTransitionTimer--;\n    }\n\n    if (sTransitionTimer == 0) {\n        sTransitionUpdate = NULL;\n        set_play_mode(PLAY_MODE_NORMAL);\n    }\n\n    return 0;\n}\n\n/**\n * Play the transition and then return to normal play mode.\n */\ns32 play_mode_change_level(void) {\n    if (sTransitionUpdate != NULL) {\n        sTransitionUpdate(&sTransitionTimer);\n    }\n\n    if (--sTransitionTimer == -1) {\n        gHudDisplay.flags = HUD_DISPLAY_NONE;\n        sTransitionTimer = 0;\n        sTransitionUpdate = NULL;\n\n        if (sWarpDest.type != WARP_TYPE_NOT_WARPING) {\n            return sWarpDest.levelNum;\n        } else {\n            return D_80339EE0;\n        }\n    }\n\n    return 0;\n}\n\n/**\n * Unused play mode. Doesn't call transition update and doesn't reset transition at the end.\n */\nUNUSED static s32 play_mode_unused(void) {\n    if (--sTransitionTimer == -1) {\n        gHudDisplay.flags = HUD_DISPLAY_NONE;\n\n        if (sWarpDest.type != WARP_TYPE_NOT_WARPING) {\n            return sWarpDest.levelNum;\n        } else {\n            return D_80339EE0;\n        }\n    }\n\n    return 0;\n}\n\ns32 update_level(void) {\n    s32 changeLevel;\n\n    switch (sCurrPlayMode) {\n        case PLAY_MODE_NORMAL:\n            changeLevel = play_mode_normal();\n            break;\n        case PLAY_MODE_PAUSED:\n            changeLevel = play_mode_paused();\n            break;\n        case PLAY_MODE_CHANGE_AREA:\n            changeLevel = play_mode_change_area();\n            break;\n        case PLAY_MODE_CHANGE_LEVEL:\n            changeLevel = play_mode_change_level();\n            break;\n        case PLAY_MODE_FRAME_ADVANCE:\n            changeLevel = play_mode_frame_advance();\n            break;\n    }\n\n    if (changeLevel) {\n        reset_volume();\n        enable_background_sound();\n    }\n\n    return changeLevel;\n}\n\ns32 init_level(void) {\n    s32 val4 = FALSE;\n\n    set_play_mode(PLAY_MODE_NORMAL);\n\n    sDelayedWarpOp = WARP_OP_NONE;\n    sTransitionTimer = 0;\n    D_80339EE0 = 0;\n    gHudDisplay.flags = gCurrCreditsEntry == NULL ? HUD_DISPLAY_DEFAULT : HUD_DISPLAY_NONE;\n    sTimerRunning = FALSE;\n\n    if (sWarpDest.type != WARP_TYPE_NOT_WARPING) {\n        if (sWarpDest.nodeId >= WARP_NODE_CREDITS_MIN) {\n            warp_credits();\n        } else {\n            warp_level();\n        }\n    } else {\n        if (gPlayerSpawnInfos[0].areaIndex >= 0) {\n            load_mario_area();\n            init_mario();\n        }\n\n        if (gCurrentArea != NULL) {\n            reset_camera(gCurrentArea->camera);\n\n            if (gCurrDemoInput != NULL) {\n                set_mario_action(gMarioState, ACT_IDLE, 0);\n            } else if (!gDebugLevelSelect) {\n                if (gMarioState->action != ACT_UNINITIALIZED) {\n                    if (save_file_exists(gCurrSaveFileNum - 1)) {\n                        set_mario_action(gMarioState, ACT_IDLE, 0);\n                    } else {\n                        set_mario_action(gMarioState, ACT_INTRO_CUTSCENE, 0);\n                        val4 = TRUE;\n                    }\n                }\n            }\n        }\n\n        if (val4) {\n            play_transition(WARP_TRANSITION_FADE_FROM_COLOR, 0x5A, 0xFF, 0xFF, 0xFF);\n        } else {\n            play_transition(WARP_TRANSITION_FADE_FROM_STAR, 0x10, 0xFF, 0xFF, 0xFF);\n        }\n\n        if (gCurrDemoInput == NULL) {\n            set_background_music(gCurrentArea->musicParam, gCurrentArea->musicParam2, 0);\n        }\n    }\n#if ENABLE_RUMBLE\n    if (gCurrDemoInput == NULL) {\n        cancel_rumble();\n    }\n#endif\n\n    if (gMarioState->action == ACT_INTRO_CUTSCENE) {\n        sound_banks_disable(SEQ_PLAYER_SFX, SOUND_BANKS_DISABLED_DURING_INTRO_CUTSCENE);\n    }\n\n    return 1;\n}\n\n/**\n * Initialize the current level if initOrUpdate is 0, or update the level if it is 1.\n */\ns32 lvl_init_or_update(s16 initOrUpdate, UNUSED s32 unused) {\n    s32 result = 0;\n\n    switch (initOrUpdate) {\n        case 0:\n            result = init_level();\n            break;\n        case 1:\n            result = update_level();\n            break;\n    }\n\n    return result;\n}\n\ns32 lvl_init_from_save_file(UNUSED s16 arg0, s32 levelNum) {\n#ifdef VERSION_EU\n    s16 language = eu_get_language();\n    switch (language) {\n        case LANGUAGE_ENGLISH:\n            load_segment_decompress(0x19, _translation_en_mio0SegmentRomStart,\n                                    _translation_en_mio0SegmentRomEnd);\n            break;\n        case LANGUAGE_FRENCH:\n            load_segment_decompress(0x19, _translation_fr_mio0SegmentRomStart,\n                                    _translation_fr_mio0SegmentRomEnd);\n            break;\n        case LANGUAGE_GERMAN:\n            load_segment_decompress(0x19, _translation_de_mio0SegmentRomStart,\n                                    _translation_de_mio0SegmentRomEnd);\n            break;\n    }\n#endif\n    sWarpDest.type = WARP_TYPE_NOT_WARPING;\n    sDelayedWarpOp = WARP_OP_NONE;\n    gNeverEnteredCastle = !save_file_exists(gCurrSaveFileNum - 1);\n\n    gCurrLevelNum = levelNum;\n    gCurrCourseNum = COURSE_NONE;\n    gSavedCourseNum = COURSE_NONE;\n    gCurrCreditsEntry = NULL;\n    gSpecialTripleJump = FALSE;\n\n    init_mario_from_save_file();\n    disable_warp_checkpoint();\n    save_file_move_cap_to_default_location();\n    select_mario_cam_mode();\n    set_yoshi_as_not_dead();\n\n    return levelNum;\n}\n\ns32 lvl_set_current_level(UNUSED s16 arg0, s32 levelNum) {\n    s32 warpCheckpointActive = sWarpCheckpointActive;\n\n    sWarpCheckpointActive = FALSE;\n    gCurrLevelNum = levelNum;\n    gCurrCourseNum = gLevelToCourseNumTable[levelNum - 1];\n\n    if (gCurrDemoInput != NULL || gCurrCreditsEntry != NULL || gCurrCourseNum == COURSE_NONE) {\n        return 0;\n    }\n\n    if (gCurrLevelNum != LEVEL_BOWSER_1 && gCurrLevelNum != LEVEL_BOWSER_2\n        && gCurrLevelNum != LEVEL_BOWSER_3) {\n        gMarioState->numCoins = 0;\n        gHudDisplay.coins = 0;\n        gCurrCourseStarFlags =\n            save_file_get_star_flags(gCurrSaveFileNum - 1, COURSE_NUM_TO_INDEX(gCurrCourseNum));\n    }\n\n    if (gSavedCourseNum != gCurrCourseNum) {\n        gSavedCourseNum = gCurrCourseNum;\n        nop_change_course();\n        disable_warp_checkpoint();\n    }\n\n    if (gCurrCourseNum > COURSE_STAGES_MAX || warpCheckpointActive) {\n        return 0;\n    }\n\n    if (gDebugLevelSelect && !gShowProfiler) {\n        return 0;\n    }\n\n    return 1;\n}\n\n/**\n * Play the \"thank you so much for to playing my game\" sound.\n */\ns32 lvl_play_the_end_screen_sound(UNUSED s16 arg0, UNUSED s32 arg1) {\n    play_sound(SOUND_MENU_THANK_YOU_PLAYING_MY_GAME, gGlobalSoundSource);\n    return 1;\n}\n"
  },
  {
    "path": "src/game/level_update.h",
    "content": "#ifndef LEVEL_UPDATE_H\n#define LEVEL_UPDATE_H\n\n#include <PR/ultratypes.h>\n\n#include \"types.h\"\n\n\n#define TIMER_CONTROL_SHOW  0\n#define TIMER_CONTROL_START 1\n#define TIMER_CONTROL_STOP  2\n#define TIMER_CONTROL_HIDE  3\n\n#define WARP_OP_NONE          0x00\n#define WARP_OP_UNKNOWN_01    0x01\n#define WARP_OP_UNKNOWN_02    0x02\n#define WARP_OP_WARP_DOOR     0x03\n#define WARP_OP_WARP_OBJECT   0x04\n#define WARP_OP_TELEPORT      0x05\n#define WARP_OP_STAR_EXIT     0x11\n#define WARP_OP_DEATH         0x12\n#define WARP_OP_WARP_FLOOR    0x13\n#define WARP_OP_GAME_OVER     0x14\n#define WARP_OP_CREDITS_END   0x15\n#define WARP_OP_DEMO_NEXT     0x16\n#define WARP_OP_CREDITS_START 0x17\n#define WARP_OP_CREDITS_NEXT  0x18\n#define WARP_OP_DEMO_END      0x19\n\n#define WARP_OP_TRIGGERS_LEVEL_SELECT 0x10\n\n#define MARIO_SPAWN_DOOR_WARP             0x01\n#define MARIO_SPAWN_UNKNOWN_02            0x02\n#define MARIO_SPAWN_UNKNOWN_03            0x03\n#define MARIO_SPAWN_TELEPORT              0x04\n#define MARIO_SPAWN_INSTANT_ACTIVE        0x10\n#define MARIO_SPAWN_SWIMMING              0x11\n#define MARIO_SPAWN_AIRBORNE              0x12\n#define MARIO_SPAWN_HARD_AIR_KNOCKBACK    0x13\n#define MARIO_SPAWN_SPIN_AIRBORNE_CIRCLE  0x14\n#define MARIO_SPAWN_DEATH                 0x15\n#define MARIO_SPAWN_SPIN_AIRBORNE         0x16\n#define MARIO_SPAWN_FLYING                0x17\n#define MARIO_SPAWN_PAINTING_STAR_COLLECT 0x20\n#define MARIO_SPAWN_PAINTING_DEATH        0x21\n#define MARIO_SPAWN_AIRBORNE_STAR_COLLECT 0x22\n#define MARIO_SPAWN_AIRBORNE_DEATH        0x23\n#define MARIO_SPAWN_LAUNCH_STAR_COLLECT   0x24\n#define MARIO_SPAWN_LAUNCH_DEATH          0x25\n#define MARIO_SPAWN_UNKNOWN_27            0x27\n\nenum WarpNodes {\n    WARP_NODE_00,\n    WARP_NODE_01,\n    WARP_NODE_02,\n    WARP_NODE_03,\n    WARP_NODE_04,\n    WARP_NODE_05,\n    WARP_NODE_06,\n    WARP_NODE_07,\n    WARP_NODE_08,\n    WARP_NODE_09,\n    WARP_NODE_0A,\n    WARP_NODE_0B,\n    WARP_NODE_0C,\n    WARP_NODE_0D,\n    WARP_NODE_0E,\n    WARP_NODE_0F,\n    WARP_NODE_10,\n    WARP_NODE_11,\n    WARP_NODE_14 = 0x14,\n    WARP_NODE_15,\n    WARP_NODE_16,\n    WARP_NODE_17,\n    WARP_NODE_18,\n    WARP_NODE_19,\n    WARP_NODE_1A,\n    WARP_NODE_1B,\n    WARP_NODE_1C,\n    WARP_NODE_1D,\n    WARP_NODE_1E,\n    WARP_NODE_1F,\n    WARP_NODE_20,\n    WARP_NODE_21,\n    WARP_NODE_22,\n    WARP_NODE_23,\n    WARP_NODE_24,\n    WARP_NODE_25,\n    WARP_NODE_26,\n    WARP_NODE_27,\n    WARP_NODE_28,\n    WARP_NODE_29,\n    WARP_NODE_2A,\n    WARP_NODE_32 = 0x32,\n    WARP_NODE_33,\n    WARP_NODE_34,\n    WARP_NODE_35,\n    WARP_NODE_36,\n    WARP_NODE_37,\n    WARP_NODE_38,\n    WARP_NODE_3A = 0x3A,\n    WARP_NODE_64 = 0x64,\n    WARP_NODE_65,\n    WARP_NODE_66,\n    WARP_NODE_67,\n    WARP_NODE_68,\n    WARP_NODE_69,\n    WARP_NODE_6B = 0x6B,\n    WARP_NODE_6C,\n    WARP_NODE_6D,\n\n    // Special Warps\n    WARP_NODE_SUCCESS = 0xF0,\n    WARP_NODE_DEATH = 0xF1,\n    WARP_NODE_TOTWC = 0xF2,\n    WARP_NODE_WARP_FLOOR = 0xF3,\n    WARP_NODE_CREDITS_START = 0xF8,\n    WARP_NODE_CREDITS_MIN = WARP_NODE_CREDITS_START,\n    WARP_NODE_CREDITS_NEXT = 0xF9,\n    WARP_NODE_CREDITS_END = 0xFA\n};\n\n\nstruct CreditsEntry {\n    /*0x00*/ u8 levelNum;\n    /*0x01*/ u8 areaIndex;\n    /*0x02*/ u8 unk02;\n    /*0x03*/ s8 marioAngle;\n    /*0x04*/ Vec3s marioPos;\n    /*0x0C*/ const char **unk0C;\n};\n\nextern struct CreditsEntry *gCurrCreditsEntry;\n\nextern struct MarioState gMarioStates[];\nextern struct MarioState *gMarioState;\n\nextern s16 sCurrPlayMode;\nextern u16 D_80339ECA;\nextern s16 sTransitionTimer;\nextern void (*sTransitionUpdate)(s16 *);\nextern u8 unused2[4];\n\nstruct WarpDest {\n    u8 type;\n    u8 levelNum;\n    u8 areaIdx;\n    u8 nodeId;\n    u32 arg;\n};\n\nextern struct WarpDest sWarpDest;\n\nextern s16 D_80339EE0;\nextern s16 sDelayedWarpOp;\nextern s16 sDelayedWarpTimer;\nextern s16 sSourceWarpNodeId;\nextern s32 sDelayedWarpArg;\nextern s16 sUnusedLevelUpdateBss;\nextern s8 sTimerRunning;\n\nstruct HudDisplay {\n    /*0x00*/ s16 lives;\n    /*0x02*/ s16 coins;\n    /*0x04*/ s16 stars;\n    /*0x06*/ s16 wedges;\n    /*0x08*/ s16 keys;\n    /*0x0A*/ s16 flags;\n    /*0x0C*/ u16 timer;\n};\n\nextern struct HudDisplay gHudDisplay;\nextern s8 gNeverEnteredCastle;\n\nenum HUDDisplayFlag {\n    HUD_DISPLAY_FLAG_LIVES = 0x0001,\n    HUD_DISPLAY_FLAG_COIN_COUNT = 0x0002,\n    HUD_DISPLAY_FLAG_STAR_COUNT = 0x0004,\n    HUD_DISPLAY_FLAG_CAMERA_AND_POWER = 0x0008,\n    HUD_DISPLAY_FLAG_KEYS = 0x0010,\n    HUD_DISPLAY_FLAG_UNKNOWN_0020 = 0x0020,\n    HUD_DISPLAY_FLAG_TIMER = 0x0040,\n    HUD_DISPLAY_FLAG_EMPHASIZE_POWER = 0x8000,\n\n    HUD_DISPLAY_NONE = 0x0000,\n    HUD_DISPLAY_DEFAULT = HUD_DISPLAY_FLAG_LIVES | HUD_DISPLAY_FLAG_COIN_COUNT | HUD_DISPLAY_FLAG_STAR_COUNT | HUD_DISPLAY_FLAG_CAMERA_AND_POWER | HUD_DISPLAY_FLAG_KEYS | HUD_DISPLAY_FLAG_UNKNOWN_0020\n};\n\n\nu16 level_control_timer(s32 timerOp);\nvoid fade_into_special_warp(u32 arg, u32 color);\nvoid load_level_init_text(u32 arg);\ns16 level_trigger_warp(struct MarioState *m, s32 warpOp);\nvoid level_set_transition(s16 length, void (*updateFunction)(s16 *));\n\ns32 lvl_init_or_update(s16 initOrUpdate, UNUSED s32 unused);\ns32 lvl_init_from_save_file(UNUSED s16 arg0, s32 levelNum);\ns32 lvl_set_current_level(UNUSED s16 arg0, s32 levelNum);\ns32 lvl_play_the_end_screen_sound(UNUSED s16 arg0, UNUSED s32 arg1);\nvoid basic_update(UNUSED s16 *arg);\n\n#endif // LEVEL_UPDATE_H\n"
  },
  {
    "path": "src/game/macro_special_objects.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"sm64.h\"\n#include \"object_helpers.h\"\n#include \"macro_special_objects.h\"\n#include \"object_list_processor.h\"\n#include \"behavior_data.h\"\n\n#include \"macro_presets.inc.c\"\n#include \"special_presets.inc.c\"\n\n/*\n * Converts the rotation value supplied by macro objects into one\n * that can be used by in-game objects.\n */\ns16 convert_rotation(s16 inRotation) {\n    u16 rotation = ((u16)(inRotation & 0xFF));\n    rotation <<= 8;\n\n    if (rotation == 0x3F00) {\n        rotation = 0x4000;\n    }\n\n    if (rotation == 0x7F00) {\n        rotation = 0x8000;\n    }\n\n    if (rotation == 0xBF00) {\n        rotation = 0xC000;\n    }\n\n    if (rotation == 0xFF00) {\n        rotation = 0x0000;\n    }\n\n    return (s16) rotation;\n}\n\n/*\n * Spawns an object at an absolute location with rotation around the y-axis and\n * parameters filling up the upper 2 bytes of newObj->oBhvParams.\n * The object will not spawn if 'behavior' is NULL.\n */\nvoid spawn_macro_abs_yrot_2params(s32 model, const BehaviorScript *behavior, s16 x, s16 y, s16 z, s16 ry, s16 params) {\n    if (behavior != NULL) {\n        struct Object *newObj = spawn_object_abs_with_rot(\n            &gMacroObjectDefaultParent, 0, model, behavior, x, y, z, 0, convert_rotation(ry), 0);\n        newObj->oBhvParams = ((u32) params) << 16;\n    }\n}\n\n/*\n * Spawns an object at an absolute location with rotation around the y-axis and\n * a single parameter filling up the upper byte of newObj->oBhvParams.\n * The object will not spawn if 'behavior' is NULL.\n */\nvoid spawn_macro_abs_yrot_param1(s32 model, const BehaviorScript *behavior, s16 x, s16 y, s16 z, s16 ry, s16 param) {\n    if (behavior != NULL) {\n        struct Object *newObj = spawn_object_abs_with_rot(\n            &gMacroObjectDefaultParent, 0, model, behavior, x, y, z, 0, convert_rotation(ry), 0);\n        newObj->oBhvParams = ((u32) param) << 24;\n    }\n}\n\n/*\n * Spawns an object at an absolute location with currently 3 unknown variables that get converted to\n * floats. Oddly enough, this function doesn't care if 'behavior' is NULL or not.\n */\nvoid spawn_macro_abs_special(s32 model, const BehaviorScript *behavior, s16 x, s16 y, s16 z, s16 unkA, s16 unkB,\n                             s16 unkC) {\n    struct Object *newObj =\n        spawn_object_abs_with_rot(&gMacroObjectDefaultParent, 0, model, behavior, x, y, z, 0, 0, 0);\n\n    // Are all three of these values unused?\n    newObj->oMacroUnk108 = (f32) unkA;\n    newObj->oMacroUnk10C = (f32) unkB;\n    newObj->oMacroUnk110 = (f32) unkC;\n}\n\n#define MACRO_OBJ_Y_ROT 0\n#define MACRO_OBJ_X 1\n#define MACRO_OBJ_Y 2\n#define MACRO_OBJ_Z 3\n#define MACRO_OBJ_PARAMS 4\n\nUNUSED static void spawn_macro_coin_unknown(const BehaviorScript *behavior, s16 objInfo[]) {\n    struct Object *coin;\n    s16 model = bhvYellowCoin == behavior ? MODEL_YELLOW_COIN : MODEL_NONE;\n\n    coin = spawn_object_abs_with_rot(&gMacroObjectDefaultParent, 0, model, behavior,\n                                     objInfo[MACRO_OBJ_X], objInfo[MACRO_OBJ_Y], objInfo[MACRO_OBJ_Z],\n                                     0, convert_rotation(objInfo[MACRO_OBJ_Y_ROT]), 0);\n    coin->oUnusedBhvParams = objInfo[MACRO_OBJ_PARAMS];\n    coin->oBhvParams = (objInfo[MACRO_OBJ_PARAMS] & 0xFF) >> 16;\n}\n\nstruct LoadedPreset {\n    /* 0x00 */ const BehaviorScript *behavior;\n    /* 0x04 */ s16 param; // huh? why does the below function swap these.. just use the struct..\n    /* 0x06 */ s16 model;\n};\n\nvoid spawn_macro_objects(s16 areaIndex, s16 *macroObjList) {\n    UNUSED u8 filler[4];\n    s32 presetID;\n\n    s16 macroObject[5]; // see the 5 #define statements above\n    struct Object *newObj;\n    struct LoadedPreset preset;\n\n    gMacroObjectDefaultParent.header.gfx.areaIndex = areaIndex;\n    gMacroObjectDefaultParent.header.gfx.activeAreaIndex = areaIndex;\n\n    while (TRUE) {\n        if (*macroObjList == -1) { // An encountered value of -1 means the list has ended.\n            break;\n        }\n\n        presetID = (*macroObjList & 0x1FF) - 31; // Preset identifier for sMacroObjectPresets array\n\n        if (presetID < 0) {\n            break;\n        }\n\n        // Set macro object properties from the list\n        macroObject[MACRO_OBJ_Y_ROT] = ((*macroObjList++ >> 9) & 0x7F) << 1; // Y-Rotation\n        macroObject[MACRO_OBJ_X] = *macroObjList++;                          // X position\n        macroObject[MACRO_OBJ_Y] = *macroObjList++;                          // Y position\n        macroObject[MACRO_OBJ_Z] = *macroObjList++;                          // Z position\n        macroObject[MACRO_OBJ_PARAMS] = *macroObjList++;                     // Behavior params\n\n        // Get the preset values from the sMacroObjectPresets list.\n        preset.model = sMacroObjectPresets[presetID].model;\n        preset.behavior = sMacroObjectPresets[presetID].behavior;\n        preset.param = sMacroObjectPresets[presetID].param;\n\n        if (preset.param != 0) {\n            macroObject[MACRO_OBJ_PARAMS] =\n                (macroObject[MACRO_OBJ_PARAMS] & 0xFF00) + (preset.param & 0x00FF);\n        }\n\n        // If object has been killed, prevent it from respawning\n        if (((macroObject[MACRO_OBJ_PARAMS] >> 8) & RESPAWN_INFO_DONT_RESPAWN)\n            != RESPAWN_INFO_DONT_RESPAWN) {\n            // Spawn the new macro object.\n            newObj = spawn_object_abs_with_rot(\n                         &gMacroObjectDefaultParent, // Parent object\n                         0,                          // Unused\n                         preset.model,               // Model ID\n                         preset.behavior,            // Behavior address\n                         macroObject[MACRO_OBJ_X],   // X-position\n                         macroObject[MACRO_OBJ_Y],   // Y-position\n                         macroObject[MACRO_OBJ_Z],   // Z-position\n                         0,                          // X-rotation\n                         convert_rotation(macroObject[MACRO_OBJ_Y_ROT]), // Y-rotation\n                         0                                               // Z-rotation\n                     );\n\n            newObj->oUnusedBhvParams = macroObject[MACRO_OBJ_PARAMS];\n            newObj->oBhvParams = ((macroObject[MACRO_OBJ_PARAMS] & 0x00FF) << 16)\n                                 + (macroObject[MACRO_OBJ_PARAMS] & 0xFF00);\n            newObj->oBhvParams2ndByte = macroObject[MACRO_OBJ_PARAMS] & 0x00FF;\n            newObj->respawnInfoType = RESPAWN_INFO_TYPE_16;\n            newObj->respawnInfo = macroObjList - 1;\n            newObj->parentObj = newObj;\n        }\n    }\n}\n\nvoid spawn_macro_objects_hardcoded(s16 areaIndex, s16 *macroObjList) {\n    UNUSED u8 filler1[8];\n\n    // This version of macroObjList has the preset and Y-Rotation separated,\n    // and lacks behavior params. Might be an early version of the macro object list?\n    s16 macroObjX;\n    s16 macroObjY;\n    s16 macroObjZ;\n    s16 macroObjPreset;\n    s16 macroObjRY; // Y Rotation\n\n    UNUSED u8 filler2[10];\n\n    gMacroObjectDefaultParent.header.gfx.areaIndex = areaIndex;\n    gMacroObjectDefaultParent.header.gfx.activeAreaIndex = areaIndex;\n\n    while (TRUE) {\n        macroObjPreset = *macroObjList++;\n\n        if (macroObjPreset < 0) {\n            break;\n        }\n\n        macroObjX = *macroObjList++;\n        macroObjY = *macroObjList++;\n        macroObjZ = *macroObjList++;\n        macroObjRY = *macroObjList++;\n\n        // Spawn objects based on hardcoded presets, and most seem to be for Big Boo's Haunt.\n        // However, BBH doesn't use this function so this might just be an early test?\n        switch (macroObjPreset) {\n            case 0:\n                spawn_macro_abs_yrot_2params(MODEL_NONE, bhvBooStaircase, macroObjX, macroObjY,\n                                             macroObjZ, macroObjRY, 0);\n                break;\n            case 1:\n                spawn_macro_abs_yrot_2params(MODEL_BBH_TILTING_FLOOR_PLATFORM,\n                                             bhvBBHTiltingTrapPlatform, macroObjX, macroObjY, macroObjZ,\n                                             macroObjRY, 0);\n                break;\n            case 2:\n                spawn_macro_abs_yrot_2params(MODEL_BBH_TUMBLING_PLATFORM, bhvBBHTumblingBridge,\n                                             macroObjX, macroObjY, macroObjZ, macroObjRY, 0);\n                break;\n            case 3:\n                spawn_macro_abs_yrot_2params(MODEL_BBH_MOVING_BOOKSHELF, bhvHauntedBookshelf, macroObjX,\n                                             macroObjY, macroObjZ, macroObjRY, 0);\n                break;\n            case 4:\n                spawn_macro_abs_yrot_2params(MODEL_BBH_MESH_ELEVATOR, bhvMeshElevator, macroObjX,\n                                             macroObjY, macroObjZ, macroObjRY, 0);\n                break;\n            case 20:\n                spawn_macro_abs_yrot_2params(MODEL_YELLOW_COIN, bhvYellowCoin, macroObjX, macroObjY,\n                                             macroObjZ, macroObjRY, 0);\n                break;\n            case 21:\n                spawn_macro_abs_yrot_2params(MODEL_YELLOW_COIN, bhvYellowCoin, macroObjX, macroObjY,\n                                             macroObjZ, macroObjRY, 0);\n                break;\n            default:\n                break;\n        }\n    }\n}\n\nvoid spawn_special_objects(s16 areaIndex, TerrainData **specialObjList) {\n    s32 numOfSpecialObjects;\n    s32 i;\n    s32 offset;\n    s16 x;\n    s16 y;\n    s16 z;\n    s16 extraParams[4];\n    u8 model;\n    u8 type;\n    u8 presetID;\n    u8 defaultParam;\n    const BehaviorScript *behavior;\n\n    numOfSpecialObjects = **specialObjList;\n    (*specialObjList)++;\n\n    gMacroObjectDefaultParent.header.gfx.areaIndex = areaIndex;\n    gMacroObjectDefaultParent.header.gfx.activeAreaIndex = areaIndex;\n\n    for (i = 0; i < numOfSpecialObjects; i++) {\n        presetID = (u8) **specialObjList;\n        (*specialObjList)++;\n        x = **specialObjList;\n        (*specialObjList)++;\n        y = **specialObjList;\n        (*specialObjList)++;\n        z = **specialObjList;\n        (*specialObjList)++;\n\n        offset = 0;\n        while (TRUE) {\n            if (sSpecialObjectPresets[offset].presetID == presetID) {\n                break;\n            }\n\n            if (sSpecialObjectPresets[offset].presetID == special_null_end) {\n            }\n\n            offset++;\n        }\n\n        model = sSpecialObjectPresets[offset].model;\n        behavior = sSpecialObjectPresets[offset].behavior;\n        type = sSpecialObjectPresets[offset].type;\n        defaultParam = sSpecialObjectPresets[offset].defParam;\n\n        switch (type) {\n            case SPTYPE_NO_YROT_OR_PARAMS:\n                spawn_macro_abs_yrot_2params(model, behavior, x, y, z, 0, 0);\n                break;\n            case SPTYPE_YROT_NO_PARAMS:\n                extraParams[0] = **specialObjList; // Y-rotation\n                (*specialObjList)++;\n                spawn_macro_abs_yrot_2params(model, behavior, x, y, z, extraParams[0], 0);\n                break;\n            case SPTYPE_PARAMS_AND_YROT:\n                extraParams[0] = **specialObjList; // Y-rotation\n                (*specialObjList)++;\n                extraParams[1] = **specialObjList; // Params\n                (*specialObjList)++;\n                spawn_macro_abs_yrot_2params(model, behavior, x, y, z, extraParams[0], extraParams[1]);\n                break;\n            case SPTYPE_UNKNOWN:\n                extraParams[0] =\n                    **specialObjList; // Unknown, gets put into obj->oMacroUnk108 as a float\n                (*specialObjList)++;\n                extraParams[1] =\n                    **specialObjList; // Unknown, gets put into obj->oMacroUnk10C as a float\n                (*specialObjList)++;\n                extraParams[2] =\n                    **specialObjList; // Unknown, gets put into obj->oMacroUnk110 as a float\n                (*specialObjList)++;\n                spawn_macro_abs_special(model, behavior, x, y, z, extraParams[0], extraParams[1],\n                                        extraParams[2]);\n                break;\n            case SPTYPE_DEF_PARAM_AND_YROT:\n                extraParams[0] = **specialObjList; // Y-rotation\n                (*specialObjList)++;\n                spawn_macro_abs_yrot_param1(model, behavior, x, y, z, extraParams[0], defaultParam);\n                break;\n            default:\n                break;\n        }\n    }\n}\n\n#ifdef NO_SEGMENTED_MEMORY\nu32 get_special_objects_size(s16 *data) {\n    s16 *startPos = data;\n    s32 numOfSpecialObjects;\n    s32 i;\n    u8 presetID;\n    s32 offset;\n\n    numOfSpecialObjects = *data++;\n\n    for (i = 0; i < numOfSpecialObjects; i++) {\n        presetID = (u8) *data++;\n        data += 3;\n        offset = 0;\n\n        while (TRUE) {\n            if (sSpecialObjectPresets[offset].presetID == presetID) {\n                break;\n            }\n            offset++;\n        }\n\n        switch (sSpecialObjectPresets[offset].type) {\n            case SPTYPE_NO_YROT_OR_PARAMS:\n                break;\n            case SPTYPE_YROT_NO_PARAMS:\n                data++;\n                break;\n            case SPTYPE_PARAMS_AND_YROT:\n                data += 2;\n                break;\n            case SPTYPE_UNKNOWN:\n                data += 3;\n                break;\n            case SPTYPE_DEF_PARAM_AND_YROT:\n                data++;\n                break;\n            default:\n                break;\n        }\n    }\n\n    return data - startPos;\n}\n#endif\n"
  },
  {
    "path": "src/game/macro_special_objects.h",
    "content": "#ifndef MACRO_SPECIAL_OBJECTS_H\n#define MACRO_SPECIAL_OBJECTS_H\n\n#include <PR/ultratypes.h>\n\n#include \"types.h\"\n\ns16 convert_rotation(s16 inRotation);\n\nvoid spawn_macro_abs_yrot_2params(s32 model, const BehaviorScript *behavior, s16 x, s16 y, s16 z, s16 ry, s16 params);\nvoid spawn_macro_abs_yrot_param1(s32 model, const BehaviorScript *behavior, s16 x, s16 y, s16 z, s16 ry, s16 params);\nvoid spawn_macro_abs_special(s32 model, const BehaviorScript *behavior, s16 x, s16 y, s16 z, s16 unkA, s16 unkB, s16 unkC);\n\nvoid spawn_macro_objects(s16 areaIndex, s16 *macroObjList);\nvoid spawn_macro_objects_hardcoded(s16 areaIndex, s16 *macroObjList);\nvoid spawn_special_objects(s16 areaIndex, TerrainData **specialObjList);\n#ifdef NO_SEGMENTED_MEMORY\nu32 get_special_objects_size(s16 *data);\n#endif\n\n#endif // MACRO_SPECIAL_OBJECTS_H\n"
  },
  {
    "path": "src/game/main.c",
    "content": "#include <ultra64.h>\n#include <stdio.h>\n\n#include \"sm64.h\"\n#include \"audio/external.h\"\n#include \"game_init.h\"\n#include \"memory.h\"\n#include \"sound_init.h\"\n#include \"profiler.h\"\n#include \"buffers/buffers.h\"\n#include \"segments.h\"\n#include \"segment_symbols.h\"\n#include \"main.h\"\n#include \"rumble_init.h\"\n\n// Message IDs\n#define MESG_SP_COMPLETE 100\n#define MESG_DP_COMPLETE 101\n#define MESG_VI_VBLANK 102\n#define MESG_START_GFX_SPTASK 103\n#define MESG_NMI_REQUEST 104\n\nOSThread D_80339210; // unused?\nOSThread gIdleThread;\nOSThread gMainThread;\nOSThread gGameLoopThread;\nOSThread gSoundThread;\n\nOSIoMesg gDmaIoMesg;\nOSMesg gMainReceivedMesg;\n\nOSMesgQueue gDmaMesgQueue;\nOSMesgQueue gSIEventMesgQueue;\nOSMesgQueue gPIMesgQueue;\nOSMesgQueue gIntrMesgQueue;\nOSMesgQueue gSPTaskMesgQueue;\n\nOSMesg gDmaMesgBuf[1];\nOSMesg gPIMesgBuf[32];\nOSMesg gSIEventMesgBuf[1];\nOSMesg gIntrMesgBuf[16];\nOSMesg gUnknownMesgBuf[16];\n\nstruct VblankHandler *gVblankHandler1 = NULL;\nstruct VblankHandler *gVblankHandler2 = NULL;\nstruct SPTask *gActiveSPTask = NULL;\nstruct SPTask *sCurrentAudioSPTask = NULL;\nstruct SPTask *sCurrentDisplaySPTask = NULL;\nstruct SPTask *sNextAudioSPTask = NULL;\nstruct SPTask *sNextDisplaySPTask = NULL;\ns8 sAudioEnabled = TRUE;\nu32 gNumVblanks = 0;\ns8 gResetTimer = 0;\ns8 gNmiResetBarsTimer = 0;\ns8 gDebugLevelSelect = FALSE;\ns8 D_8032C650 = 0;\n\ns8 gShowProfiler = FALSE;\ns8 gShowDebugText = FALSE;\n\n// unused\nvoid handle_debug_key_sequences(void) {\n    static u16 sProfilerKeySequence[] = {\n        U_JPAD, U_JPAD, D_JPAD, D_JPAD, L_JPAD, R_JPAD, L_JPAD, R_JPAD\n    };\n    static u16 sDebugTextKeySequence[] = { D_JPAD, D_JPAD, U_JPAD, U_JPAD,\n                                           L_JPAD, R_JPAD, L_JPAD, R_JPAD };\n    static s16 sProfilerKey = 0;\n    static s16 sDebugTextKey = 0;\n    if (gPlayer3Controller->buttonPressed != 0) {\n        if (sProfilerKeySequence[sProfilerKey++] == gPlayer3Controller->buttonPressed) {\n            if (sProfilerKey == ARRAY_COUNT(sProfilerKeySequence)) {\n                sProfilerKey = 0, gShowProfiler ^= 1;\n            }\n        } else {\n            sProfilerKey = 0;\n        }\n\n        if (sDebugTextKeySequence[sDebugTextKey++] == gPlayer3Controller->buttonPressed) {\n            if (sDebugTextKey == ARRAY_COUNT(sDebugTextKeySequence)) {\n                sDebugTextKey = 0, gShowDebugText ^= 1;\n            }\n        } else {\n            sDebugTextKey = 0;\n        }\n    }\n}\n\nvoid unknown_main_func(void) {\n    // uninitialized\n    OSTime time;\n    u32 b;\n#ifdef AVOID_UB\n    time = 0;\n    b = 0;\n#endif\n\n    osSetTime(time);\n    osMapTLB(0, b, NULL, 0, 0, 0);\n    osUnmapTLBAll();\n\n#pragma GCC diagnostic push\n#pragma GCC diagnostic ignored \"-Wnonnull\"\n    sprintf(NULL, NULL);\n#pragma GCC diagnostic pop\n}\n\nvoid stub_main_1(void) {\n}\n\nvoid stub_main_2(void) {\n}\n\nvoid stub_main_3(void) {\n}\n\nvoid setup_mesg_queues(void) {\n    osCreateMesgQueue(&gDmaMesgQueue, gDmaMesgBuf, ARRAY_COUNT(gDmaMesgBuf));\n    osCreateMesgQueue(&gSIEventMesgQueue, gSIEventMesgBuf, ARRAY_COUNT(gSIEventMesgBuf));\n    osSetEventMesg(OS_EVENT_SI, &gSIEventMesgQueue, NULL);\n\n    osCreateMesgQueue(&gSPTaskMesgQueue, gUnknownMesgBuf, ARRAY_COUNT(gUnknownMesgBuf));\n    osCreateMesgQueue(&gIntrMesgQueue, gIntrMesgBuf, ARRAY_COUNT(gIntrMesgBuf));\n    osViSetEvent(&gIntrMesgQueue, (OSMesg) MESG_VI_VBLANK, 1);\n\n    osSetEventMesg(OS_EVENT_SP, &gIntrMesgQueue, (OSMesg) MESG_SP_COMPLETE);\n    osSetEventMesg(OS_EVENT_DP, &gIntrMesgQueue, (OSMesg) MESG_DP_COMPLETE);\n    osSetEventMesg(OS_EVENT_PRENMI, &gIntrMesgQueue, (OSMesg) MESG_NMI_REQUEST);\n}\n\nvoid alloc_pool(void) {\n    void *start = (void *) SEG_POOL_START;\n    void *end = (void *) SEG_POOL_END;\n\n    main_pool_init(start, end);\n    gEffectsMemoryPool = mem_pool_init(0x4000, MEMORY_POOL_LEFT);\n}\n\nvoid create_thread(OSThread *thread, OSId id, void (*entry)(void *), void *arg, void *sp, OSPri pri) {\n    thread->next = NULL;\n    thread->queue = NULL;\n    osCreateThread(thread, id, entry, arg, sp, pri);\n}\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\nextern void func_sh_802f69cc(void);\n#endif\n\nvoid handle_nmi_request(void) {\n    gResetTimer = 1;\n    gNmiResetBarsTimer = 0;\n    stop_sounds_in_continuous_banks();\n    sound_banks_disable(SEQ_PLAYER_SFX, SOUND_BANKS_BACKGROUND);\n    fadeout_music(90);\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    func_sh_802f69cc();\n#endif\n}\n\nvoid receive_new_tasks(void) {\n    struct SPTask *spTask;\n\n    while (osRecvMesg(&gSPTaskMesgQueue, (OSMesg *) &spTask, OS_MESG_NOBLOCK) != -1) {\n        spTask->state = SPTASK_STATE_NOT_STARTED;\n        switch (spTask->task.t.type) {\n            case 2:\n                sNextAudioSPTask = spTask;\n                break;\n            case 1:\n                sNextDisplaySPTask = spTask;\n                break;\n        }\n    }\n\n    if (sCurrentAudioSPTask == NULL && sNextAudioSPTask != NULL) {\n        sCurrentAudioSPTask = sNextAudioSPTask;\n        sNextAudioSPTask = NULL;\n    }\n\n    if (sCurrentDisplaySPTask == NULL && sNextDisplaySPTask != NULL) {\n        sCurrentDisplaySPTask = sNextDisplaySPTask;\n        sNextDisplaySPTask = NULL;\n    }\n}\n\nvoid start_sptask(s32 taskType) {\n    UNUSED u8 filler[4];\n\n    if (taskType == M_AUDTASK) {\n        gActiveSPTask = sCurrentAudioSPTask;\n    } else {\n        gActiveSPTask = sCurrentDisplaySPTask;\n    }\n\n    osSpTaskLoad(&gActiveSPTask->task);\n    osSpTaskStartGo(&gActiveSPTask->task);\n    gActiveSPTask->state = SPTASK_STATE_RUNNING;\n}\n\nvoid interrupt_gfx_sptask(void) {\n    if (gActiveSPTask->task.t.type == M_GFXTASK) {\n        gActiveSPTask->state = SPTASK_STATE_INTERRUPTED;\n        osSpTaskYield();\n    }\n}\n\nvoid start_gfx_sptask(void) {\n    if (gActiveSPTask == NULL && sCurrentDisplaySPTask != NULL\n        && sCurrentDisplaySPTask->state == SPTASK_STATE_NOT_STARTED) {\n        profiler_log_gfx_time(TASKS_QUEUED);\n        start_sptask(M_GFXTASK);\n    }\n}\n\nvoid pretend_audio_sptask_done(void) {\n    gActiveSPTask = sCurrentAudioSPTask;\n    gActiveSPTask->state = SPTASK_STATE_RUNNING;\n    osSendMesg(&gIntrMesgQueue, (OSMesg) MESG_SP_COMPLETE, OS_MESG_NOBLOCK);\n}\n\nvoid handle_vblank(void) {\n    UNUSED u8 filler[4];\n\n    stub_main_3();\n    gNumVblanks++;\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    if (gResetTimer > 0 && gResetTimer < 100) {\n        gResetTimer++;\n    }\n#else\n    if (gResetTimer > 0) {\n        gResetTimer++;\n    }\n#endif\n\n    receive_new_tasks();\n\n    // First try to kick off an audio task. If the gfx task is currently\n    // running, we need to asynchronously interrupt it -- handle_sp_complete\n    // will pick up on what we're doing and start the audio task for us.\n    // If there is already an audio task running, there is nothing to do.\n    // If there is no audio task available, try a gfx task instead.\n    if (sCurrentAudioSPTask != NULL) {\n        if (gActiveSPTask != NULL) {\n            interrupt_gfx_sptask();\n        } else {\n            profiler_log_vblank_time();\n            if (sAudioEnabled) {\n                start_sptask(M_AUDTASK);\n            } else {\n                pretend_audio_sptask_done();\n            }\n        }\n    } else {\n        if (gActiveSPTask == NULL && sCurrentDisplaySPTask != NULL\n            && sCurrentDisplaySPTask->state != SPTASK_STATE_FINISHED) {\n            profiler_log_gfx_time(TASKS_QUEUED);\n            start_sptask(M_GFXTASK);\n        }\n    }\n#if ENABLE_RUMBLE\n    rumble_thread_update_vi();\n#endif\n\n    // Notify the game loop about the vblank.\n    if (gVblankHandler1 != NULL) {\n        osSendMesg(gVblankHandler1->queue, gVblankHandler1->msg, OS_MESG_NOBLOCK);\n    }\n    if (gVblankHandler2 != NULL) {\n        osSendMesg(gVblankHandler2->queue, gVblankHandler2->msg, OS_MESG_NOBLOCK);\n    }\n}\n\nvoid handle_sp_complete(void) {\n    struct SPTask *curSPTask = gActiveSPTask;\n\n    gActiveSPTask = NULL;\n\n    if (curSPTask->state == SPTASK_STATE_INTERRUPTED) {\n        // handle_vblank tried to start an audio task while there was already a\n        // gfx task running, so it had to interrupt the gfx task. That interruption\n        // just finished.\n        if (osSpTaskYielded(&curSPTask->task) == 0) {\n            // The gfx task completed before we had time to interrupt it.\n            // Mark it finished, just like below.\n            curSPTask->state = SPTASK_STATE_FINISHED;\n            profiler_log_gfx_time(RSP_COMPLETE);\n        }\n\n        // Start the audio task, as expected by handle_vblank.\n        profiler_log_vblank_time();\n        if (sAudioEnabled) {\n            start_sptask(M_AUDTASK);\n        } else {\n            pretend_audio_sptask_done();\n        }\n    } else {\n        curSPTask->state = SPTASK_STATE_FINISHED;\n        if (curSPTask->task.t.type == M_AUDTASK) {\n            // After audio tasks come gfx tasks.\n            profiler_log_vblank_time();\n            if (sCurrentDisplaySPTask != NULL\n                && sCurrentDisplaySPTask->state != SPTASK_STATE_FINISHED) {\n                if (sCurrentDisplaySPTask->state != SPTASK_STATE_INTERRUPTED) {\n                    profiler_log_gfx_time(TASKS_QUEUED);\n                }\n                start_sptask(M_GFXTASK);\n            }\n            sCurrentAudioSPTask = NULL;\n            if (curSPTask->msgqueue != NULL) {\n                osSendMesg(curSPTask->msgqueue, curSPTask->msg, OS_MESG_NOBLOCK);\n            }\n        } else {\n            // The SP process is done, but there is still a Display Processor notification\n            // that needs to arrive before we can consider the task completely finished and\n            // null out sCurrentDisplaySPTask. That happens in handle_dp_complete.\n            profiler_log_gfx_time(RSP_COMPLETE);\n        }\n    }\n}\n\nvoid handle_dp_complete(void) {\n    // Gfx SP task is completely done.\n    if (sCurrentDisplaySPTask->msgqueue != NULL) {\n        osSendMesg(sCurrentDisplaySPTask->msgqueue, sCurrentDisplaySPTask->msg, OS_MESG_NOBLOCK);\n    }\n    profiler_log_gfx_time(RDP_COMPLETE);\n    sCurrentDisplaySPTask->state = SPTASK_STATE_FINISHED_DP;\n    sCurrentDisplaySPTask = NULL;\n}\n\nvoid thread3_main(UNUSED void *arg) {\n    setup_mesg_queues();\n    alloc_pool();\n    load_engine_code_segment();\n\n    create_thread(&gSoundThread, 4, thread4_sound, NULL, gThread4Stack + 0x2000, 20);\n    osStartThread(&gSoundThread);\n\n    create_thread(&gGameLoopThread, 5, thread5_game_loop, NULL, gThread5Stack + 0x2000, 10);\n    osStartThread(&gGameLoopThread);\n\n    while (TRUE) {\n        OSMesg msg;\n\n        osRecvMesg(&gIntrMesgQueue, &msg, OS_MESG_BLOCK);\n        switch ((uintptr_t) msg) {\n            case MESG_VI_VBLANK:\n                handle_vblank();\n                break;\n            case MESG_SP_COMPLETE:\n                handle_sp_complete();\n                break;\n            case MESG_DP_COMPLETE:\n                handle_dp_complete();\n                break;\n            case MESG_START_GFX_SPTASK:\n                start_gfx_sptask();\n                break;\n            case MESG_NMI_REQUEST:\n                handle_nmi_request();\n                break;\n        }\n        stub_main_2();\n    }\n}\n\nvoid set_vblank_handler(s32 index, struct VblankHandler *handler, OSMesgQueue *queue, OSMesg *msg) {\n    handler->queue = queue;\n    handler->msg = msg;\n\n    switch (index) {\n        case 1:\n            gVblankHandler1 = handler;\n            break;\n        case 2:\n            gVblankHandler2 = handler;\n            break;\n    }\n}\n\nvoid send_sp_task_message(OSMesg *msg) {\n    osWritebackDCacheAll();\n    osSendMesg(&gSPTaskMesgQueue, msg, OS_MESG_NOBLOCK);\n}\n\nvoid dispatch_audio_sptask(struct SPTask *spTask) {\n    if (sAudioEnabled && spTask != NULL) {\n        osWritebackDCacheAll();\n        osSendMesg(&gSPTaskMesgQueue, spTask, OS_MESG_NOBLOCK);\n    }\n}\n\nvoid exec_display_list(struct SPTask *spTask) {\n    if (spTask != NULL) {\n        osWritebackDCacheAll();\n        spTask->state = SPTASK_STATE_NOT_STARTED;\n        if (sCurrentDisplaySPTask == NULL) {\n            sCurrentDisplaySPTask = spTask;\n            sNextDisplaySPTask = NULL;\n            osSendMesg(&gIntrMesgQueue, (OSMesg) MESG_START_GFX_SPTASK, OS_MESG_NOBLOCK);\n        } else {\n            sNextDisplaySPTask = spTask;\n        }\n    }\n}\n\nvoid turn_on_audio(void) {\n    sAudioEnabled = TRUE;\n}\n\nvoid turn_off_audio(void) {\n    sAudioEnabled = FALSE;\n    while (sCurrentAudioSPTask != NULL) {\n        ;\n    }\n}\n\n/**\n * Initialize hardware, start main thread, then idle.\n */\nvoid thread1_idle(UNUSED void *arg) {\n#if defined(VERSION_US) || defined(VERSION_SH) || defined(VERSION_CN)\n    s32 sp24 = osTvType;\n#endif\n\n    osCreateViManager(OS_PRIORITY_VIMGR);\n#if defined(VERSION_US) || defined(VERSION_SH) || defined(VERSION_CN)\n    if (sp24 == TV_TYPE_NTSC) {\n        osViSetMode(&osViModeTable[OS_VI_NTSC_LAN1]);\n    } else {\n        osViSetMode(&osViModeTable[OS_VI_PAL_LAN1]);\n    }\n#elif defined(VERSION_JP)\n    osViSetMode(&osViModeTable[OS_VI_NTSC_LAN1]);\n#else // VERSION_EU\n    osViSetMode(&osViModeTable[OS_VI_PAL_LAN1]);\n#endif\n    osViBlack(TRUE);\n    osViSetSpecialFeatures(OS_VI_DITHER_FILTER_ON);\n    osViSetSpecialFeatures(OS_VI_GAMMA_OFF);\n    osCreatePiManager(OS_PRIORITY_PIMGR, &gPIMesgQueue, gPIMesgBuf, ARRAY_COUNT(gPIMesgBuf));\n    create_thread(&gMainThread, 3, thread3_main, NULL, gThread3Stack + 0x2000, 100);\n    if (D_8032C650 == 0) {\n        osStartThread(&gMainThread);\n    }\n    osSetThreadPri(NULL, 0);\n\n    // halt\n    while (TRUE) {\n        ;\n    }\n}\n\nvoid main_func(void) {\n    UNUSED u8 filler[64];\n\n    osInitialize();\n    stub_main_1();\n    create_thread(&gIdleThread, 1, thread1_idle, NULL, gIdleThreadStack + 0x800, 100);\n    osStartThread(&gIdleThread);\n}\n"
  },
  {
    "path": "src/game/main.h",
    "content": "#ifndef MAIN_H\n#define MAIN_H\n\n#include \"config.h\"\n\nextern OSThread D_80339210;\nextern OSThread gIdleThread;\nextern OSThread gMainThread;\nextern OSThread gGameLoopThread;\nextern OSThread gSoundThread;\n\nextern OSMesgQueue gPIMesgQueue;\nextern OSMesgQueue gIntrMesgQueue;\nextern OSMesgQueue gSPTaskMesgQueue;\n\nextern OSMesg gDmaMesgBuf[1];\nextern OSMesg gPIMesgBuf[32];\nextern OSMesg gSIEventMesgBuf[1];\nextern OSMesg gIntrMesgBuf[16];\nextern OSMesg gUnknownMesgBuf[16];\nextern OSIoMesg gDmaIoMesg;\nextern OSMesg gMainReceivedMesg;\nextern OSMesgQueue gDmaMesgQueue;\nextern OSMesgQueue gSIEventMesgQueue;\n\nextern struct VblankHandler *gVblankHandler1;\nextern struct VblankHandler *gVblankHandler2;\nextern struct SPTask *gActiveSPTask;\nextern u32 gNumVblanks;\nextern s8 gResetTimer;\nextern s8 gNmiResetBarsTimer;\nextern s8 gDebugLevelSelect;\nextern s8 D_8032C650;\nextern s8 gShowProfiler;\nextern s8 gShowDebugText;\n\nvoid set_vblank_handler(s32 index, struct VblankHandler *handler, OSMesgQueue *queue, OSMesg *msg);\nvoid dispatch_audio_sptask(struct SPTask *spTask);\nvoid exec_display_list(struct SPTask *spTask);\n\n#endif // MAIN_H\n"
  },
  {
    "path": "src/game/mario.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"sm64.h\"\n#include \"area.h\"\n#include \"audio/external.h\"\n#include \"behavior_actions.h\"\n#include \"behavior_data.h\"\n#include \"camera.h\"\n#include \"engine/graph_node.h\"\n#include \"engine/math_util.h\"\n#include \"engine/surface_collision.h\"\n#include \"game_init.h\"\n#include \"interaction.h\"\n#include \"level_table.h\"\n#include \"level_update.h\"\n#include \"main.h\"\n#include \"mario.h\"\n#include \"mario_actions_airborne.h\"\n#include \"mario_actions_automatic.h\"\n#include \"mario_actions_cutscene.h\"\n#include \"mario_actions_moving.h\"\n#include \"mario_actions_object.h\"\n#include \"mario_actions_stationary.h\"\n#include \"mario_actions_submerged.h\"\n#include \"mario_misc.h\"\n#include \"mario_step.h\"\n#include \"memory.h\"\n#include \"object_fields.h\"\n#include \"object_helpers.h\"\n#include \"object_list_processor.h\"\n#include \"print.h\"\n#include \"save_file.h\"\n#include \"sound_init.h\"\n#include \"rumble_init.h\"\n\nu32 unused80339F10;\nu8 unused80339F1C[20];\n\n/**************************************************\n *                    ANIMATIONS                  *\n **************************************************/\n\n/**\n * Checks if Mario's animation has reached its end point.\n */\ns32 is_anim_at_end(struct MarioState *m) {\n    struct Object *o = m->marioObj;\n\n    return (o->header.gfx.animInfo.animFrame + 1) == o->header.gfx.animInfo.curAnim->loopEnd;\n}\n\n/**\n * Checks if Mario's animation has surpassed 2 frames before its end point.\n */\ns32 is_anim_past_end(struct MarioState *m) {\n    struct Object *o = m->marioObj;\n\n    return o->header.gfx.animInfo.animFrame >= (o->header.gfx.animInfo.curAnim->loopEnd - 2);\n}\n\n/**\n * Sets Mario's animation without any acceleration, running at its default rate.\n */\ns16 set_mario_animation(struct MarioState *m, s32 targetAnimID) {\n    struct Object *o = m->marioObj;\n    struct Animation *targetAnim = m->animList->bufTarget;\n\n    if (load_patchable_table(m->animList, targetAnimID)) {\n        targetAnim->values = (void *) VIRTUAL_TO_PHYSICAL((u8 *) targetAnim + (uintptr_t) targetAnim->values);\n        targetAnim->index = (void *) VIRTUAL_TO_PHYSICAL((u8 *) targetAnim + (uintptr_t) targetAnim->index);\n    }\n\n    if (o->header.gfx.animInfo.animID != targetAnimID) {\n        o->header.gfx.animInfo.animID = targetAnimID;\n        o->header.gfx.animInfo.curAnim = targetAnim;\n        o->header.gfx.animInfo.animAccel = 0;\n        o->header.gfx.animInfo.animYTrans = m->unkB0;\n\n        if (targetAnim->flags & ANIM_FLAG_2) {\n            o->header.gfx.animInfo.animFrame = targetAnim->startFrame;\n        } else {\n            if (targetAnim->flags & ANIM_FLAG_BACKWARD) {\n                o->header.gfx.animInfo.animFrame = targetAnim->startFrame + 1;\n            } else {\n                o->header.gfx.animInfo.animFrame = targetAnim->startFrame - 1;\n            }\n        }\n    }\n\n    return o->header.gfx.animInfo.animFrame;\n}\n\n/**\n * Sets Mario's animation where the animation is sped up or\n * slowed down via acceleration.\n */\ns16 set_mario_anim_with_accel(struct MarioState *m, s32 targetAnimID, s32 accel) {\n    struct Object *o = m->marioObj;\n    struct Animation *targetAnim = m->animList->bufTarget;\n\n    if (load_patchable_table(m->animList, targetAnimID)) {\n        targetAnim->values = (void *) VIRTUAL_TO_PHYSICAL((u8 *) targetAnim + (uintptr_t) targetAnim->values);\n        targetAnim->index = (void *) VIRTUAL_TO_PHYSICAL((u8 *) targetAnim + (uintptr_t) targetAnim->index);\n    }\n\n    if (o->header.gfx.animInfo.animID != targetAnimID) {\n        o->header.gfx.animInfo.animID = targetAnimID;\n        o->header.gfx.animInfo.curAnim = targetAnim;\n        o->header.gfx.animInfo.animYTrans = m->unkB0;\n\n        if (targetAnim->flags & ANIM_FLAG_2) {\n            o->header.gfx.animInfo.animFrameAccelAssist = (targetAnim->startFrame << 0x10);\n        } else {\n            if (targetAnim->flags & ANIM_FLAG_BACKWARD) {\n                o->header.gfx.animInfo.animFrameAccelAssist = (targetAnim->startFrame << 0x10) + accel;\n            } else {\n                o->header.gfx.animInfo.animFrameAccelAssist = (targetAnim->startFrame << 0x10) - accel;\n            }\n        }\n\n        o->header.gfx.animInfo.animFrame = (o->header.gfx.animInfo.animFrameAccelAssist >> 0x10);\n    }\n\n    o->header.gfx.animInfo.animAccel = accel;\n\n    return o->header.gfx.animInfo.animFrame;\n}\n\n/**\n * Sets the animation to a specific \"next\" frame from the frame given.\n */\nvoid set_anim_to_frame(struct MarioState *m, s16 animFrame) {\n    struct AnimInfo *animInfo = &m->marioObj->header.gfx.animInfo;\n    struct Animation *curAnim = animInfo->curAnim;\n\n    if (animInfo->animAccel != 0) {\n        if (curAnim->flags & ANIM_FLAG_BACKWARD) {\n            animInfo->animFrameAccelAssist = (animFrame << 0x10) + animInfo->animAccel;\n        } else {\n            animInfo->animFrameAccelAssist = (animFrame << 0x10) - animInfo->animAccel;\n        }\n    } else {\n        if (curAnim->flags & ANIM_FLAG_BACKWARD) {\n            animInfo->animFrame = animFrame + 1;\n        } else {\n            animInfo->animFrame = animFrame - 1;\n        }\n    }\n}\n\ns32 is_anim_past_frame(struct MarioState *m, s16 animFrame) {\n    s32 isPastFrame;\n    s32 acceleratedFrame = animFrame << 0x10;\n    struct AnimInfo *animInfo = &m->marioObj->header.gfx.animInfo;\n    struct Animation *curAnim = animInfo->curAnim;\n\n    if (animInfo->animAccel != 0) {\n        if (curAnim->flags & ANIM_FLAG_BACKWARD) {\n            isPastFrame =\n                (animInfo->animFrameAccelAssist > acceleratedFrame)\n                && (acceleratedFrame >= (animInfo->animFrameAccelAssist - animInfo->animAccel));\n        } else {\n            isPastFrame =\n                (animInfo->animFrameAccelAssist < acceleratedFrame)\n                && (acceleratedFrame <= (animInfo->animFrameAccelAssist + animInfo->animAccel));\n        }\n    } else {\n        if (curAnim->flags & ANIM_FLAG_BACKWARD) {\n            isPastFrame = (animInfo->animFrame == (animFrame + 1));\n        } else {\n            isPastFrame = ((animInfo->animFrame + 1) == animFrame);\n        }\n    }\n\n    return isPastFrame;\n}\n\n/**\n * Rotates the animation's translation into the global coordinate system\n * and returns the animation's flags.\n */\ns16 find_mario_anim_flags_and_translation(struct Object *obj, s32 yaw, Vec3s translation) {\n    f32 dx;\n    f32 dz;\n\n    struct Animation *curAnim = (void *) obj->header.gfx.animInfo.curAnim;\n    s16 animFrame = geo_update_animation_frame(&obj->header.gfx.animInfo, NULL);\n    u16 *animIndex = segmented_to_virtual((void *) curAnim->index);\n    s16 *animValues = segmented_to_virtual((void *) curAnim->values);\n\n    f32 s = (f32) sins(yaw);\n    f32 c = (f32) coss(yaw);\n\n    dx = *(animValues + (retrieve_animation_index(animFrame, &animIndex))) / 4.0f;\n    translation[1] = *(animValues + (retrieve_animation_index(animFrame, &animIndex))) / 4.0f;\n    dz = *(animValues + (retrieve_animation_index(animFrame, &animIndex))) / 4.0f;\n\n    translation[0] = (dx * c) + (dz * s);\n    translation[2] = (-dx * s) + (dz * c);\n\n    return curAnim->flags;\n}\n\n/**\n * Updates Mario's position from his animation's translation.\n */\nvoid update_mario_pos_for_anim(struct MarioState *m) {\n    Vec3s translation;\n    s16 flags;\n\n    flags = find_mario_anim_flags_and_translation(m->marioObj, m->faceAngle[1], translation);\n\n    if (flags & (ANIM_FLAG_HOR_TRANS | ANIM_FLAG_6)) {\n        m->pos[0] += (f32) translation[0];\n        m->pos[2] += (f32) translation[2];\n    }\n\n    if (flags & (ANIM_FLAG_VERT_TRANS | ANIM_FLAG_6)) {\n        m->pos[1] += (f32) translation[1];\n    }\n}\n\n/**\n * Finds the vertical translation from Mario's animation.\n */\ns16 return_mario_anim_y_translation(struct MarioState *m) {\n    Vec3s translation;\n    find_mario_anim_flags_and_translation(m->marioObj, 0, translation);\n\n    return translation[1];\n}\n\n/**************************************************\n *                      AUDIO                     *\n **************************************************/\n\n/**\n * Plays a sound if if Mario doesn't have the flag being checked.\n */\nvoid play_sound_if_no_flag(struct MarioState *m, u32 soundBits, u32 flags) {\n    if (!(m->flags & flags)) {\n        play_sound(soundBits, m->marioObj->header.gfx.cameraToObject);\n        m->flags |= flags;\n    }\n}\n\n/**\n * Plays a jump sound if one has not been played since the last action change.\n */\nvoid play_mario_jump_sound(struct MarioState *m) {\n    if (!(m->flags & MARIO_MARIO_SOUND_PLAYED)) {\n#ifndef VERSION_JP\n        if (m->action == ACT_TRIPLE_JUMP) {\n            play_sound(SOUND_MARIO_YAHOO_WAHA_YIPPEE + ((gAudioRandom % 5) << 16),\n                       m->marioObj->header.gfx.cameraToObject);\n        } else {\n#endif\n            play_sound(SOUND_MARIO_YAH_WAH_HOO + ((gAudioRandom % 3) << 16),\n                       m->marioObj->header.gfx.cameraToObject);\n#ifndef VERSION_JP\n        }\n#endif\n        m->flags |= MARIO_MARIO_SOUND_PLAYED;\n    }\n}\n\n/**\n * Adjusts the volume/pitch of sounds from Mario's speed.\n */\nvoid adjust_sound_for_speed(struct MarioState *m) {\n    s32 absForwardVel = (m->forwardVel > 0.0f) ? m->forwardVel : -m->forwardVel;\n    set_sound_moving_speed(SOUND_BANK_MOVING, (absForwardVel > 100) ? 100 : absForwardVel);\n}\n\n/**\n * Spawns particles if the step sound says to, then either plays a step sound or relevant other sound.\n */\nvoid play_sound_and_spawn_particles(struct MarioState *m, u32 soundBits, u32 waveParticleType) {\n    if (m->terrainSoundAddend == (SOUND_TERRAIN_WATER << 16)) {\n        if (waveParticleType != 0) {\n            m->particleFlags |= PARTICLE_SHALLOW_WATER_SPLASH;\n        } else {\n            m->particleFlags |= PARTICLE_SHALLOW_WATER_WAVE;\n        }\n    } else {\n        if (m->terrainSoundAddend == (SOUND_TERRAIN_SAND << 16)) {\n            m->particleFlags |= PARTICLE_DIRT;\n        } else if (m->terrainSoundAddend == (SOUND_TERRAIN_SNOW << 16)) {\n            m->particleFlags |= PARTICLE_SNOW;\n        }\n    }\n\n    if ((m->flags & MARIO_METAL_CAP) || soundBits == SOUND_ACTION_UNSTUCK_FROM_GROUND\n        || soundBits == SOUND_MARIO_PUNCH_HOO) {\n        play_sound(soundBits, m->marioObj->header.gfx.cameraToObject);\n    } else {\n        play_sound(m->terrainSoundAddend + soundBits, m->marioObj->header.gfx.cameraToObject);\n    }\n}\n\n/**\n * Plays an environmental sound if one has not been played since the last action change.\n */\nvoid play_mario_action_sound(struct MarioState *m, u32 soundBits, u32 waveParticleType) {\n    if (!(m->flags & MARIO_ACTION_SOUND_PLAYED)) {\n        play_sound_and_spawn_particles(m, soundBits, waveParticleType);\n        m->flags |= MARIO_ACTION_SOUND_PLAYED;\n    }\n}\n\n/**\n * Plays a landing sound, accounting for metal cap.\n */\nvoid play_mario_landing_sound(struct MarioState *m, u32 soundBits) {\n    play_sound_and_spawn_particles(\n        m, (m->flags & MARIO_METAL_CAP) ? SOUND_ACTION_METAL_LANDING : soundBits, 1);\n}\n\n/**\n * Plays a landing sound, accounting for metal cap. Unlike play_mario_landing_sound,\n * this function uses play_mario_action_sound, making sure the sound is only\n * played once per action.\n */\nvoid play_mario_landing_sound_once(struct MarioState *m, u32 soundBits) {\n    play_mario_action_sound(\n        m, (m->flags & MARIO_METAL_CAP) ? SOUND_ACTION_METAL_LANDING : soundBits, 1);\n}\n\n/**\n * Plays a heavy landing (ground pound, etc.) sound, accounting for metal cap.\n */\nvoid play_mario_heavy_landing_sound(struct MarioState *m, u32 soundBits) {\n    play_sound_and_spawn_particles(\n        m, (m->flags & MARIO_METAL_CAP) ? SOUND_ACTION_METAL_HEAVY_LANDING : soundBits, 1);\n}\n\n/**\n * Plays a heavy landing (ground pound, etc.) sound, accounting for metal cap.\n * Unlike play_mario_heavy_landing_sound, this function uses play_mario_action_sound,\n * making sure the sound is only played once per action.\n */\nvoid play_mario_heavy_landing_sound_once(struct MarioState *m, u32 soundBits) {\n    play_mario_action_sound(\n        m, (m->flags & MARIO_METAL_CAP) ? SOUND_ACTION_METAL_HEAVY_LANDING : soundBits, 1);\n}\n\n/**\n * Plays action and Mario sounds relevant to what was passed into the function.\n */\nvoid play_mario_sound(struct MarioState *m, s32 actionSound, s32 marioSound) {\n    if (actionSound == SOUND_ACTION_TERRAIN_JUMP) {\n        play_mario_action_sound(m, (m->flags & MARIO_METAL_CAP) ? (s32) SOUND_ACTION_METAL_JUMP\n                                                                : (s32) SOUND_ACTION_TERRAIN_JUMP, 1);\n    } else {\n        play_sound_if_no_flag(m, actionSound, MARIO_ACTION_SOUND_PLAYED);\n    }\n\n    if (marioSound == 0) {\n        play_mario_jump_sound(m);\n    }\n\n    if (marioSound != -1) {\n        play_sound_if_no_flag(m, marioSound, MARIO_MARIO_SOUND_PLAYED);\n    }\n}\n\n/**************************************************\n *                     ACTIONS                    *\n **************************************************/\n\n/**\n * Sets Mario's other velocities from his forward speed.\n */\nvoid mario_set_forward_vel(struct MarioState *m, f32 forwardVel) {\n    m->forwardVel = forwardVel;\n\n    m->slideVelX = sins(m->faceAngle[1]) * m->forwardVel;\n    m->slideVelZ = coss(m->faceAngle[1]) * m->forwardVel;\n\n    m->vel[0] = (f32) m->slideVelX;\n    m->vel[2] = (f32) m->slideVelZ;\n}\n\n/**\n * Returns the slipperiness class of Mario's floor.\n */\ns32 mario_get_floor_class(struct MarioState *m) {\n    s32 floorClass;\n\n    // The slide terrain type defaults to slide slipperiness.\n    // This doesn't matter too much since normally the slide terrain\n    // is checked for anyways.\n    if ((m->area->terrainType & TERRAIN_MASK) == TERRAIN_SLIDE) {\n        floorClass = SURFACE_CLASS_VERY_SLIPPERY;\n    } else {\n        floorClass = SURFACE_CLASS_DEFAULT;\n    }\n\n    if (m->floor != NULL) {\n        switch (m->floor->type) {\n            case SURFACE_NOT_SLIPPERY:\n            case SURFACE_HARD_NOT_SLIPPERY:\n            case SURFACE_SWITCH:\n                floorClass = SURFACE_CLASS_NOT_SLIPPERY;\n                break;\n\n            case SURFACE_SLIPPERY:\n            case SURFACE_NOISE_SLIPPERY:\n            case SURFACE_HARD_SLIPPERY:\n            case SURFACE_NO_CAM_COL_SLIPPERY:\n                floorClass = SURFACE_CLASS_SLIPPERY;\n                break;\n\n            case SURFACE_VERY_SLIPPERY:\n            case SURFACE_ICE:\n            case SURFACE_HARD_VERY_SLIPPERY:\n            case SURFACE_NOISE_VERY_SLIPPERY_73:\n            case SURFACE_NOISE_VERY_SLIPPERY_74:\n            case SURFACE_NOISE_VERY_SLIPPERY:\n            case SURFACE_NO_CAM_COL_VERY_SLIPPERY:\n                floorClass = SURFACE_CLASS_VERY_SLIPPERY;\n                break;\n        }\n    }\n\n    // Crawling allows Mario to not slide on certain steeper surfaces.\n    if (m->action == ACT_CRAWLING && m->floor->normal.y > 0.5f && floorClass == SURFACE_CLASS_DEFAULT) {\n        floorClass = SURFACE_CLASS_NOT_SLIPPERY;\n    }\n\n    return floorClass;\n}\n\n// clang-format off\ns8 sTerrainSounds[7][6] = {\n    // default,              hard,                 slippery,\n    // very slippery,        noisy default,        noisy slippery\n    { SOUND_TERRAIN_DEFAULT, SOUND_TERRAIN_STONE,  SOUND_TERRAIN_GRASS,\n      SOUND_TERRAIN_GRASS,   SOUND_TERRAIN_GRASS,  SOUND_TERRAIN_DEFAULT }, // TERRAIN_GRASS\n    { SOUND_TERRAIN_STONE,   SOUND_TERRAIN_STONE,  SOUND_TERRAIN_STONE,\n      SOUND_TERRAIN_STONE,   SOUND_TERRAIN_GRASS,  SOUND_TERRAIN_GRASS }, // TERRAIN_STONE\n    { SOUND_TERRAIN_SNOW,    SOUND_TERRAIN_ICE,    SOUND_TERRAIN_SNOW,\n      SOUND_TERRAIN_ICE,     SOUND_TERRAIN_STONE,  SOUND_TERRAIN_STONE }, // TERRAIN_SNOW\n    { SOUND_TERRAIN_SAND,    SOUND_TERRAIN_STONE,  SOUND_TERRAIN_SAND,\n      SOUND_TERRAIN_SAND,    SOUND_TERRAIN_STONE,  SOUND_TERRAIN_STONE }, // TERRAIN_SAND\n    { SOUND_TERRAIN_SPOOKY,  SOUND_TERRAIN_SPOOKY, SOUND_TERRAIN_SPOOKY,\n      SOUND_TERRAIN_SPOOKY,  SOUND_TERRAIN_STONE,  SOUND_TERRAIN_STONE }, // TERRAIN_SPOOKY\n    { SOUND_TERRAIN_DEFAULT, SOUND_TERRAIN_STONE,  SOUND_TERRAIN_GRASS,\n      SOUND_TERRAIN_ICE,     SOUND_TERRAIN_STONE,  SOUND_TERRAIN_ICE }, // TERRAIN_WATER\n    { SOUND_TERRAIN_STONE,   SOUND_TERRAIN_STONE,  SOUND_TERRAIN_STONE,\n      SOUND_TERRAIN_STONE,   SOUND_TERRAIN_ICE,    SOUND_TERRAIN_ICE }, // TERRAIN_SLIDE\n};\n// clang-format on\n\n/**\n * Computes a value that should be added to terrain sounds before playing them.\n * This depends on surfaces and terrain.\n */\nu32 mario_get_terrain_sound_addend(struct MarioState *m) {\n    s16 floorSoundType;\n    s16 terrainType = m->area->terrainType & TERRAIN_MASK;\n    s32 ret = SOUND_TERRAIN_DEFAULT << 16;\n    s32 floorType;\n\n    if (m->floor != NULL) {\n        floorType = m->floor->type;\n\n        if ((gCurrLevelNum != LEVEL_LLL) && (m->floorHeight < (m->waterLevel - 10))) {\n            // Water terrain sound, excluding LLL since it uses water in the volcano.\n            ret = SOUND_TERRAIN_WATER << 16;\n        } else if (SURFACE_IS_QUICKSAND(floorType)) {\n            ret = SOUND_TERRAIN_SAND << 16;\n        } else {\n            switch (floorType) {\n                default:\n                    floorSoundType = 0;\n                    break;\n\n                case SURFACE_NOT_SLIPPERY:\n                case SURFACE_HARD:\n                case SURFACE_HARD_NOT_SLIPPERY:\n                case SURFACE_SWITCH:\n                    floorSoundType = 1;\n                    break;\n\n                case SURFACE_SLIPPERY:\n                case SURFACE_HARD_SLIPPERY:\n                case SURFACE_NO_CAM_COL_SLIPPERY:\n                    floorSoundType = 2;\n                    break;\n\n                case SURFACE_VERY_SLIPPERY:\n                case SURFACE_ICE:\n                case SURFACE_HARD_VERY_SLIPPERY:\n                case SURFACE_NOISE_VERY_SLIPPERY_73:\n                case SURFACE_NOISE_VERY_SLIPPERY_74:\n                case SURFACE_NOISE_VERY_SLIPPERY:\n                case SURFACE_NO_CAM_COL_VERY_SLIPPERY:\n                    floorSoundType = 3;\n                    break;\n\n                case SURFACE_NOISE_DEFAULT:\n                    floorSoundType = 4;\n                    break;\n\n                case SURFACE_NOISE_SLIPPERY:\n                    floorSoundType = 5;\n                    break;\n            }\n\n            ret = sTerrainSounds[terrainType][floorSoundType] << 16;\n        }\n    }\n\n    return ret;\n}\n\n/**\n * Collides with walls and returns the most recent wall.\n */\nstruct Surface *resolve_and_return_wall_collisions(Vec3f pos, f32 offset, f32 radius) {\n    struct WallCollisionData collisionData;\n    struct Surface *wall = NULL;\n\n    collisionData.x = pos[0];\n    collisionData.y = pos[1];\n    collisionData.z = pos[2];\n    collisionData.radius = radius;\n    collisionData.offsetY = offset;\n\n    if (find_wall_collisions(&collisionData)) {\n        wall = collisionData.walls[collisionData.numWalls - 1];\n    }\n\n    pos[0] = collisionData.x;\n    pos[1] = collisionData.y;\n    pos[2] = collisionData.z;\n\n    // This only returns the most recent wall and can also return NULL\n    // there are no wall collisions.\n    return wall;\n}\n\n/**\n * Finds the ceiling from a vec3f horizontally and a height (with 80 vertical buffer).\n */\nf32 vec3f_find_ceil(Vec3f pos, f32 height, struct Surface **ceil) {\n    UNUSED u8 filler[4];\n\n    return find_ceil(pos[0], height + 80.0f, pos[2], ceil);\n}\n\n/**\n * Determines if Mario is facing \"downhill.\"\n */\ns32 mario_facing_downhill(struct MarioState *m, s32 turnYaw) {\n    s16 faceAngleYaw = m->faceAngle[1];\n\n    // This is never used in practice, as turnYaw is\n    // always passed as zero.\n    if (turnYaw && m->forwardVel < 0.0f) {\n        faceAngleYaw += 0x8000;\n    }\n\n    faceAngleYaw = m->floorAngle - faceAngleYaw;\n\n    return (-0x4000 < faceAngleYaw) && (faceAngleYaw < 0x4000);\n}\n\n/**\n * Determines if a surface is slippery based on the surface class.\n */\nu32 mario_floor_is_slippery(struct MarioState *m) {\n    f32 normY;\n\n    if ((m->area->terrainType & TERRAIN_MASK) == TERRAIN_SLIDE\n        && m->floor->normal.y < 0.9998477f //~cos(1 deg)\n    ) {\n        return TRUE;\n    }\n\n    switch (mario_get_floor_class(m)) {\n        case SURFACE_VERY_SLIPPERY:\n            normY = 0.9848077f; //~cos(10 deg)\n            break;\n\n        case SURFACE_SLIPPERY:\n            normY = 0.9396926f; //~cos(20 deg)\n            break;\n\n        default:\n            normY = 0.7880108f; //~cos(38 deg)\n            break;\n\n        case SURFACE_NOT_SLIPPERY:\n            normY = 0.0f;\n            break;\n    }\n\n    return m->floor->normal.y <= normY;\n}\n\n/**\n * Determines if a surface is a slope based on the surface class.\n */\ns32 mario_floor_is_slope(struct MarioState *m) {\n    f32 normY;\n\n    if ((m->area->terrainType & TERRAIN_MASK) == TERRAIN_SLIDE\n        && m->floor->normal.y < 0.9998477f) { // ~cos(1 deg)\n        return TRUE;\n    }\n\n    switch (mario_get_floor_class(m)) {\n        case SURFACE_VERY_SLIPPERY:\n            normY = 0.9961947f; // ~cos(5 deg)\n            break;\n\n        case SURFACE_SLIPPERY:\n            normY = 0.9848077f; // ~cos(10 deg)\n            break;\n\n        default:\n            normY = 0.9659258f; // ~cos(15 deg)\n            break;\n\n        case SURFACE_NOT_SLIPPERY:\n            normY = 0.9396926f; // ~cos(20 deg)\n            break;\n    }\n\n    return m->floor->normal.y <= normY;\n}\n\n/**\n * Determines if a surface is steep based on the surface class.\n */\ns32 mario_floor_is_steep(struct MarioState *m) {\n    f32 normY;\n    s32 result = FALSE;\n\n    // Interestingly, this function does not check for the\n    // slide terrain type. This means that steep behavior persists for\n    // non-slippery and slippery surfaces.\n    // This does not matter in vanilla game practice.\n    if (!mario_facing_downhill(m, FALSE)) {\n        switch (mario_get_floor_class(m)) {\n            case SURFACE_VERY_SLIPPERY:\n                normY = 0.9659258f; // ~cos(15 deg)\n                break;\n\n            case SURFACE_SLIPPERY:\n                normY = 0.9396926f; // ~cos(20 deg)\n                break;\n\n            default:\n                normY = 0.8660254f; // ~cos(30 deg)\n                break;\n\n            case SURFACE_NOT_SLIPPERY:\n                normY = 0.8660254f; // ~cos(30 deg)\n                break;\n        }\n\n        result = m->floor->normal.y <= normY;\n    }\n\n    return result;\n}\n\n/**\n * Finds the floor height relative from Mario given polar displacement.\n */\nf32 find_floor_height_relative_polar(struct MarioState *m, s16 angleFromMario, f32 distFromMario) {\n    struct Surface *floor;\n    f32 floorY;\n\n    f32 y = sins(m->faceAngle[1] + angleFromMario) * distFromMario;\n    f32 x = coss(m->faceAngle[1] + angleFromMario) * distFromMario;\n\n    floorY = find_floor(m->pos[0] + y, m->pos[1] + 100.0f, m->pos[2] + x, &floor);\n\n    return floorY;\n}\n\n/**\n * Returns the slope of the floor based off points around Mario.\n */\ns16 find_floor_slope(struct MarioState *m, s16 yawOffset) {\n    struct Surface *floor;\n    f32 forwardFloorY, backwardFloorY;\n    f32 forwardYDelta, backwardYDelta;\n    s16 result;\n\n    f32 x = sins(m->faceAngle[1] + yawOffset) * 5.0f;\n    f32 z = coss(m->faceAngle[1] + yawOffset) * 5.0f;\n\n    forwardFloorY = find_floor(m->pos[0] + x, m->pos[1] + 100.0f, m->pos[2] + z, &floor);\n    backwardFloorY = find_floor(m->pos[0] - x, m->pos[1] + 100.0f, m->pos[2] - z, &floor);\n\n    //! If Mario is near OOB, these floorY's can sometimes be -11000.\n    //  This will cause these to be off and give improper slopes.\n    forwardYDelta = forwardFloorY - m->pos[1];\n    backwardYDelta = m->pos[1] - backwardFloorY;\n\n    if (forwardYDelta * forwardYDelta < backwardYDelta * backwardYDelta) {\n        result = atan2s(5.0f, forwardYDelta);\n    } else {\n        result = atan2s(5.0f, backwardYDelta);\n    }\n\n    return result;\n}\n\n/**\n * Adjusts Mario's camera and sound based on his action status.\n */\nvoid update_mario_sound_and_camera(struct MarioState *m) {\n    u32 action = m->action;\n    s32 camPreset = m->area->camera->mode;\n\n    if (action == ACT_FIRST_PERSON) {\n        raise_background_noise(2);\n        gCameraMovementFlags &= ~CAM_MOVE_C_UP_MODE;\n        // Go back to the last camera mode\n        set_camera_mode(m->area->camera, -1, 1);\n    } else if (action == ACT_SLEEPING) {\n        raise_background_noise(2);\n    }\n\n    if (!(action & (ACT_FLAG_SWIMMING | ACT_FLAG_METAL_WATER))) {\n        if (camPreset == CAMERA_MODE_BEHIND_MARIO || camPreset == CAMERA_MODE_WATER_SURFACE) {\n            set_camera_mode(m->area->camera, m->area->camera->defMode, 1);\n        }\n    }\n}\n\n/**\n * Transitions Mario to a steep jump action.\n */\nvoid set_steep_jump_action(struct MarioState *m) {\n    m->marioObj->oMarioSteepJumpYaw = m->faceAngle[1];\n\n    if (m->forwardVel > 0.0f) {\n        //! ((s16)0x8000) has undefined behavior. Therefore, this downcast has\n        // undefined behavior if m->floorAngle >= 0.\n        s16 angleTemp = m->floorAngle + 0x8000;\n        s16 faceAngleTemp = m->faceAngle[1] - angleTemp;\n\n        f32 y = sins(faceAngleTemp) * m->forwardVel;\n        f32 x = coss(faceAngleTemp) * m->forwardVel * 0.75f;\n\n        m->forwardVel = sqrtf(y * y + x * x);\n        m->faceAngle[1] = atan2s(x, y) + angleTemp;\n    }\n\n    drop_and_set_mario_action(m, ACT_STEEP_JUMP, 0);\n}\n\n/**\n * Sets Mario's vertical speed from his forward speed.\n */\nstatic void set_mario_y_vel_based_on_fspeed(struct MarioState *m, f32 initialVelY, f32 multiplier) {\n    // get_additive_y_vel_for_jumps is always 0 and a stubbed function.\n    // It was likely trampoline related based on code location.\n    m->vel[1] = initialVelY + get_additive_y_vel_for_jumps() + m->forwardVel * multiplier;\n\n    if (m->squishTimer != 0 || m->quicksandDepth > 1.0f) {\n        m->vel[1] *= 0.5f;\n    }\n}\n\n/**\n * Transitions for a variety of airborne actions.\n */\nstatic u32 set_mario_action_airborne(struct MarioState *m, u32 action, u32 actionArg) {\n    f32 forwardVel;\n\n    if ((m->squishTimer != 0 || m->quicksandDepth >= 1.0f)\n        && (action == ACT_DOUBLE_JUMP || action == ACT_TWIRLING)) {\n        action = ACT_JUMP;\n    }\n\n    switch (action) {\n        case ACT_DOUBLE_JUMP:\n            set_mario_y_vel_based_on_fspeed(m, 52.0f, 0.25f);\n            m->forwardVel *= 0.8f;\n            break;\n\n        case ACT_BACKFLIP:\n            m->marioObj->header.gfx.animInfo.animID = -1;\n            m->forwardVel = -16.0f;\n            set_mario_y_vel_based_on_fspeed(m, 62.0f, 0.0f);\n            break;\n\n        case ACT_TRIPLE_JUMP:\n            set_mario_y_vel_based_on_fspeed(m, 69.0f, 0.0f);\n            m->forwardVel *= 0.8f;\n            break;\n\n        case ACT_FLYING_TRIPLE_JUMP:\n            set_mario_y_vel_based_on_fspeed(m, 82.0f, 0.0f);\n            break;\n\n        case ACT_WATER_JUMP:\n        case ACT_HOLD_WATER_JUMP:\n            if (actionArg == 0) {\n                set_mario_y_vel_based_on_fspeed(m, 42.0f, 0.0f);\n            }\n            break;\n\n        case ACT_BURNING_JUMP:\n            m->vel[1] = 31.5f;\n            m->forwardVel = 8.0f;\n            break;\n\n        case ACT_RIDING_SHELL_JUMP:\n            set_mario_y_vel_based_on_fspeed(m, 42.0f, 0.25f);\n            break;\n\n        case ACT_JUMP:\n        case ACT_HOLD_JUMP:\n            m->marioObj->header.gfx.animInfo.animID = -1;\n            set_mario_y_vel_based_on_fspeed(m, 42.0f, 0.25f);\n            m->forwardVel *= 0.8f;\n            break;\n\n        case ACT_WALL_KICK_AIR:\n        case ACT_TOP_OF_POLE_JUMP:\n            set_mario_y_vel_based_on_fspeed(m, 62.0f, 0.0f);\n            if (m->forwardVel < 24.0f) {\n                m->forwardVel = 24.0f;\n            }\n            m->wallKickTimer = 0;\n            break;\n\n        case ACT_SIDE_FLIP:\n            set_mario_y_vel_based_on_fspeed(m, 62.0f, 0.0f);\n            m->forwardVel = 8.0f;\n            m->faceAngle[1] = m->intendedYaw;\n            break;\n\n        case ACT_STEEP_JUMP:\n            m->marioObj->header.gfx.animInfo.animID = -1;\n            set_mario_y_vel_based_on_fspeed(m, 42.0f, 0.25f);\n            m->faceAngle[0] = -0x2000;\n            break;\n\n        case ACT_LAVA_BOOST:\n            m->vel[1] = 84.0f;\n            if (actionArg == 0) {\n                m->forwardVel = 0.0f;\n            }\n            break;\n\n        case ACT_DIVE:\n            if ((forwardVel = m->forwardVel + 15.0f) > 48.0f) {\n                forwardVel = 48.0f;\n            }\n            mario_set_forward_vel(m, forwardVel);\n            break;\n\n        case ACT_LONG_JUMP:\n            m->marioObj->header.gfx.animInfo.animID = -1;\n            set_mario_y_vel_based_on_fspeed(m, 30.0f, 0.0f);\n            m->marioObj->oMarioLongJumpIsSlow = m->forwardVel > 16.0f ? FALSE : TRUE;\n\n            //! (BLJ's) This properly handles long jumps from getting forward speed with\n            //  too much velocity, but misses backwards longs allowing high negative speeds.\n            if ((m->forwardVel *= 1.5f) > 48.0f) {\n                m->forwardVel = 48.0f;\n            }\n            break;\n\n        case ACT_SLIDE_KICK:\n            m->vel[1] = 12.0f;\n            if (m->forwardVel < 32.0f) {\n                m->forwardVel = 32.0f;\n            }\n            break;\n\n        case ACT_JUMP_KICK:\n            m->vel[1] = 20.0f;\n            break;\n    }\n\n    m->peakHeight = m->pos[1];\n    m->flags |= MARIO_UNKNOWN_08;\n\n    return action;\n}\n\n/**\n * Transitions for a variety of moving actions.\n */\nstatic u32 set_mario_action_moving(struct MarioState *m, u32 action, UNUSED u32 actionArg) {\n    s16 floorClass = mario_get_floor_class(m);\n    f32 forwardVel = m->forwardVel;\n    f32 mag = min(m->intendedMag, 8.0f);\n\n    switch (action) {\n        case ACT_WALKING:\n            if (floorClass != SURFACE_CLASS_VERY_SLIPPERY) {\n                if (0.0f <= forwardVel && forwardVel < mag) {\n                    m->forwardVel = mag;\n                }\n            }\n\n            m->marioObj->oMarioWalkingPitch = 0;\n            break;\n\n        case ACT_HOLD_WALKING:\n            if (0.0f <= forwardVel && forwardVel < mag / 2.0f) {\n                m->forwardVel = mag / 2.0f;\n            }\n            break;\n\n        case ACT_BEGIN_SLIDING:\n            if (mario_facing_downhill(m, FALSE)) {\n                action = ACT_BUTT_SLIDE;\n            } else {\n                action = ACT_STOMACH_SLIDE;\n            }\n            break;\n\n        case ACT_HOLD_BEGIN_SLIDING:\n            if (mario_facing_downhill(m, FALSE)) {\n                action = ACT_HOLD_BUTT_SLIDE;\n            } else {\n                action = ACT_HOLD_STOMACH_SLIDE;\n            }\n            break;\n    }\n\n    return action;\n}\n\n/**\n * Transition for certain submerged actions, which is actually just the metal jump actions.\n */\nstatic u32 set_mario_action_submerged(struct MarioState *m, u32 action, UNUSED u32 actionArg) {\n    if (action == ACT_METAL_WATER_JUMP || action == ACT_HOLD_METAL_WATER_JUMP) {\n        m->vel[1] = 32.0f;\n    }\n\n    return action;\n}\n\n/**\n * Transitions for a variety of cutscene actions.\n */\nstatic u32 set_mario_action_cutscene(struct MarioState *m, u32 action, UNUSED u32 actionArg) {\n    switch (action) {\n        case ACT_EMERGE_FROM_PIPE:\n            m->vel[1] = 52.0f;\n            break;\n\n        case ACT_FALL_AFTER_STAR_GRAB:\n            mario_set_forward_vel(m, 0.0f);\n            break;\n\n        case ACT_SPAWN_SPIN_AIRBORNE:\n            mario_set_forward_vel(m, 2.0f);\n            break;\n\n        case ACT_SPECIAL_EXIT_AIRBORNE:\n        case ACT_SPECIAL_DEATH_EXIT:\n            m->vel[1] = 64.0f;\n            break;\n    }\n\n    return action;\n}\n\n/**\n * Puts Mario into a given action, putting Mario through the appropriate\n * specific function if needed.\n */\nu32 set_mario_action(struct MarioState *m, u32 action, u32 actionArg) {\n    switch (action & ACT_GROUP_MASK) {\n        case ACT_GROUP_MOVING:\n            action = set_mario_action_moving(m, action, actionArg);\n            break;\n\n        case ACT_GROUP_AIRBORNE:\n            action = set_mario_action_airborne(m, action, actionArg);\n            break;\n\n        case ACT_GROUP_SUBMERGED:\n            action = set_mario_action_submerged(m, action, actionArg);\n            break;\n\n        case ACT_GROUP_CUTSCENE:\n            action = set_mario_action_cutscene(m, action, actionArg);\n            break;\n    }\n\n    // Resets the sound played flags, meaning Mario can play those sound types again.\n    m->flags &= ~(MARIO_ACTION_SOUND_PLAYED | MARIO_MARIO_SOUND_PLAYED);\n\n    if (!(m->action & ACT_FLAG_AIR)) {\n        m->flags &= ~MARIO_UNKNOWN_18;\n    }\n\n    // Initialize the action information.\n    m->prevAction = m->action;\n    m->action = action;\n    m->actionArg = actionArg;\n    m->actionState = 0;\n    m->actionTimer = 0;\n\n    return TRUE;\n}\n\n/**\n * Puts Mario into a specific jumping action from a landing action.\n */\ns32 set_jump_from_landing(struct MarioState *m) {\n    if (m->quicksandDepth >= 11.0f) {\n        if (m->heldObj == NULL) {\n            return set_mario_action(m, ACT_QUICKSAND_JUMP_LAND, 0);\n        } else {\n            return set_mario_action(m, ACT_HOLD_QUICKSAND_JUMP_LAND, 0);\n        }\n    }\n\n    if (mario_floor_is_steep(m)) {\n        set_steep_jump_action(m);\n    } else {\n        if ((m->doubleJumpTimer == 0) || (m->squishTimer != 0)) {\n            set_mario_action(m, ACT_JUMP, 0);\n        } else {\n            switch (m->prevAction) {\n                case ACT_JUMP_LAND:\n                    set_mario_action(m, ACT_DOUBLE_JUMP, 0);\n                    break;\n\n                case ACT_FREEFALL_LAND:\n                    set_mario_action(m, ACT_DOUBLE_JUMP, 0);\n                    break;\n\n                case ACT_SIDE_FLIP_LAND_STOP:\n                    set_mario_action(m, ACT_DOUBLE_JUMP, 0);\n                    break;\n\n                case ACT_DOUBLE_JUMP_LAND:\n                    // If Mario has a wing cap, he ignores the typical speed\n                    // requirement for a triple jump.\n                    if (m->flags & MARIO_WING_CAP) {\n                        set_mario_action(m, ACT_FLYING_TRIPLE_JUMP, 0);\n                    } else if (m->forwardVel > 20.0f) {\n                        set_mario_action(m, ACT_TRIPLE_JUMP, 0);\n                    } else {\n                        set_mario_action(m, ACT_JUMP, 0);\n                    }\n                    break;\n\n                default:\n                    set_mario_action(m, ACT_JUMP, 0);\n                    break;\n            }\n        }\n    }\n\n    m->doubleJumpTimer = 0;\n\n    return TRUE;\n}\n\n/**\n * Puts Mario in a given action, as long as it is not overruled by\n * either a quicksand or steep jump.\n */\ns32 set_jumping_action(struct MarioState *m, u32 action, u32 actionArg) {\n    UNUSED u32 currAction = m->action;\n\n    if (m->quicksandDepth >= 11.0f) {\n        // Checks whether Mario is holding an object or not.\n        if (m->heldObj == NULL) {\n            return set_mario_action(m, ACT_QUICKSAND_JUMP_LAND, 0);\n        } else {\n            return set_mario_action(m, ACT_HOLD_QUICKSAND_JUMP_LAND, 0);\n        }\n    }\n\n    if (mario_floor_is_steep(m)) {\n        set_steep_jump_action(m);\n    } else {\n        set_mario_action(m, action, actionArg);\n    }\n\n    return TRUE;\n}\n\n/**\n * Drop anything Mario is holding and set a new action.\n */\ns32 drop_and_set_mario_action(struct MarioState *m, u32 action, u32 actionArg) {\n    mario_stop_riding_and_holding(m);\n\n    return set_mario_action(m, action, actionArg);\n}\n\n/**\n * Increment Mario's hurt counter and set a new action.\n */\ns32 hurt_and_set_mario_action(struct MarioState *m, u32 action, u32 actionArg, s16 hurtCounter) {\n    m->hurtCounter = hurtCounter;\n\n    return set_mario_action(m, action, actionArg);\n}\n\n/**\n * Checks a variety of inputs for common transitions between many different\n * actions. A common variant of the below function.\n */\ns32 check_common_action_exits(struct MarioState *m) {\n    if (m->input & INPUT_A_PRESSED) {\n        return set_mario_action(m, ACT_JUMP, 0);\n    }\n    if (m->input & INPUT_OFF_FLOOR) {\n        return set_mario_action(m, ACT_FREEFALL, 0);\n    }\n    if (m->input & INPUT_NONZERO_ANALOG) {\n        return set_mario_action(m, ACT_WALKING, 0);\n    }\n    if (m->input & INPUT_ABOVE_SLIDE) {\n        return set_mario_action(m, ACT_BEGIN_SLIDING, 0);\n    }\n\n    return FALSE;\n}\n\n/**\n * Checks a variety of inputs for common transitions between many different\n * object holding actions. A holding variant of the above function.\n */\ns32 check_common_hold_action_exits(struct MarioState *m) {\n    if (m->input & INPUT_A_PRESSED) {\n        return set_mario_action(m, ACT_HOLD_JUMP, 0);\n    }\n    if (m->input & INPUT_OFF_FLOOR) {\n        return set_mario_action(m, ACT_HOLD_FREEFALL, 0);\n    }\n    if (m->input & INPUT_NONZERO_ANALOG) {\n        return set_mario_action(m, ACT_HOLD_WALKING, 0);\n    }\n    if (m->input & INPUT_ABOVE_SLIDE) {\n        return set_mario_action(m, ACT_HOLD_BEGIN_SLIDING, 0);\n    }\n\n    return FALSE;\n}\n\n/**\n * Transitions Mario from a submerged action to a walking action.\n */\ns32 transition_submerged_to_walking(struct MarioState *m) {\n    set_camera_mode(m->area->camera, m->area->camera->defMode, 1);\n\n    vec3s_set(m->angleVel, 0, 0, 0);\n\n    if (m->heldObj == NULL) {\n        return set_mario_action(m, ACT_WALKING, 0);\n    } else {\n        return set_mario_action(m, ACT_HOLD_WALKING, 0);\n    }\n}\n\n/**\n * This is the transition function typically for entering a submerged action for a\n * non-submerged action. This also applies the water surface camera preset.\n */\ns32 set_water_plunge_action(struct MarioState *m) {\n    m->forwardVel = m->forwardVel / 4.0f;\n    m->vel[1] = m->vel[1] / 2.0f;\n\n    m->pos[1] = m->waterLevel - 100;\n\n    m->faceAngle[2] = 0;\n\n    vec3s_set(m->angleVel, 0, 0, 0);\n\n    if (!(m->action & ACT_FLAG_DIVING)) {\n        m->faceAngle[0] = 0;\n    }\n\n    if (m->area->camera->mode != CAMERA_MODE_WATER_SURFACE) {\n        set_camera_mode(m->area->camera, CAMERA_MODE_WATER_SURFACE, 1);\n    }\n\n    return set_mario_action(m, ACT_WATER_PLUNGE, 0);\n}\n\n/**\n * These are the scaling values for the x and z axis for Mario\n * when he is close to unsquishing.\n */\nu8 sSquishScaleOverTime[16] = { 0x46, 0x32, 0x32, 0x3C, 0x46, 0x50, 0x50, 0x3C,\n                                0x28, 0x14, 0x14, 0x1E, 0x32, 0x3C, 0x3C, 0x28 };\n\n/**\n * Applies the squish to Mario's model via scaling.\n */\nvoid squish_mario_model(struct MarioState *m) {\n    if (m->squishTimer != 0xFF) {\n        // If no longer squished, scale back to default.\n        if (m->squishTimer == 0) {\n            vec3f_set(m->marioObj->header.gfx.scale, 1.0f, 1.0f, 1.0f);\n        }\n        // If timer is less than 16, rubber-band Mario's size scale up and down.\n        else if (m->squishTimer <= 16) {\n            m->squishTimer -= 1;\n\n            m->marioObj->header.gfx.scale[1] =\n                1.0f - ((sSquishScaleOverTime[15 - m->squishTimer] * 0.6f) / 100.0f);\n            m->marioObj->header.gfx.scale[0] =\n                ((sSquishScaleOverTime[15 - m->squishTimer] * 0.4f) / 100.0f) + 1.0f;\n\n            m->marioObj->header.gfx.scale[2] = m->marioObj->header.gfx.scale[0];\n        } else {\n            m->squishTimer -= 1;\n\n            vec3f_set(m->marioObj->header.gfx.scale, 1.4f, 0.4f, 1.4f);\n        }\n    }\n}\n\n/**\n * Debug function that prints floor normal, velocity, and action information.\n */\nvoid debug_print_speed_action_normal(struct MarioState *m) {\n    f32 steepness;\n    f32 floor_nY;\n\n    if (gShowDebugText) {\n        steepness = sqrtf(\n            ((m->floor->normal.x * m->floor->normal.x) + (m->floor->normal.z * m->floor->normal.z)));\n        floor_nY = m->floor->normal.y;\n\n        print_text_fmt_int(210, 88, \"ANG %d\", (atan2s(floor_nY, steepness) * 180.0f) / 32768.0f);\n\n        print_text_fmt_int(210, 72, \"SPD %d\", m->forwardVel);\n\n        // STA short for \"status,\" the official action name via SMS map.\n        print_text_fmt_int(210, 56, \"STA %x\", (m->action & ACT_ID_MASK));\n    }\n}\n\n/**\n * Update the button inputs for Mario.\n */\nvoid update_mario_button_inputs(struct MarioState *m) {\n    if (m->controller->buttonPressed & A_BUTTON) {\n        m->input |= INPUT_A_PRESSED;\n    }\n\n    if (m->controller->buttonDown & A_BUTTON) {\n        m->input |= INPUT_A_DOWN;\n    }\n\n    // Don't update for these buttons if squished.\n    if (m->squishTimer == 0) {\n        if (m->controller->buttonPressed & B_BUTTON) {\n            m->input |= INPUT_B_PRESSED;\n        }\n\n        if (m->controller->buttonDown & Z_TRIG) {\n            m->input |= INPUT_Z_DOWN;\n        }\n\n        if (m->controller->buttonPressed & Z_TRIG) {\n            m->input |= INPUT_Z_PRESSED;\n        }\n    }\n\n    if (m->input & INPUT_A_PRESSED) {\n        m->framesSinceA = 0;\n    } else if (m->framesSinceA < 0xFF) {\n        m->framesSinceA++;\n    }\n\n    if (m->input & INPUT_B_PRESSED) {\n        m->framesSinceB = 0;\n    } else if (m->framesSinceB < 0xFF) {\n        m->framesSinceB++;\n    }\n}\n\n/**\n * Updates the joystick intended magnitude.\n */\nvoid update_mario_joystick_inputs(struct MarioState *m) {\n    struct Controller *controller = m->controller;\n    f32 mag = ((controller->stickMag / 64.0f) * (controller->stickMag / 64.0f)) * 64.0f;\n\n    if (m->squishTimer == 0) {\n        m->intendedMag = mag / 2.0f;\n    } else {\n        m->intendedMag = mag / 8.0f;\n    }\n\n    if (m->intendedMag > 0.0f) {\n        m->intendedYaw = atan2s(-controller->stickY, controller->stickX) + m->area->camera->yaw;\n        m->input |= INPUT_NONZERO_ANALOG;\n    } else {\n        m->intendedYaw = m->faceAngle[1];\n    }\n}\n\n/**\n * Resolves wall collisions, and updates a variety of inputs.\n */\nvoid update_mario_geometry_inputs(struct MarioState *m) {\n    f32 gasLevel;\n    f32 ceilToFloorDist;\n\n    f32_find_wall_collision(&m->pos[0], &m->pos[1], &m->pos[2], 60.0f, 50.0f);\n    f32_find_wall_collision(&m->pos[0], &m->pos[1], &m->pos[2], 30.0f, 24.0f);\n\n    m->floorHeight = find_floor(m->pos[0], m->pos[1], m->pos[2], &m->floor);\n\n    // If Mario is OOB, move his position to his graphical position (which was not updated)\n    // and check for the floor there.\n    // This can cause errant behavior when combined with astral projection,\n    // since the graphical position was not Mario's previous location.\n    if (m->floor == NULL) {\n        vec3f_copy(m->pos, m->marioObj->header.gfx.pos);\n        m->floorHeight = find_floor(m->pos[0], m->pos[1], m->pos[2], &m->floor);\n    }\n\n    m->ceilHeight = vec3f_find_ceil(m->pos, m->floorHeight, &m->ceil);\n    gasLevel = find_poison_gas_level(m->pos[0], m->pos[2]);\n    m->waterLevel = find_water_level(m->pos[0], m->pos[2]);\n\n    if (m->floor != NULL) {\n        m->floorAngle = atan2s(m->floor->normal.z, m->floor->normal.x);\n        m->terrainSoundAddend = mario_get_terrain_sound_addend(m);\n\n        if ((m->pos[1] > m->waterLevel - 40) && mario_floor_is_slippery(m)) {\n            m->input |= INPUT_ABOVE_SLIDE;\n        }\n\n        if ((m->floor->flags & SURFACE_FLAG_DYNAMIC)\n            || (m->ceil && m->ceil->flags & SURFACE_FLAG_DYNAMIC)) {\n            ceilToFloorDist = m->ceilHeight - m->floorHeight;\n\n            if ((0.0f <= ceilToFloorDist) && (ceilToFloorDist <= 150.0f)) {\n                m->input |= INPUT_SQUISHED;\n            }\n        }\n\n        if (m->pos[1] > m->floorHeight + 100.0f) {\n            m->input |= INPUT_OFF_FLOOR;\n        }\n\n        if (m->pos[1] < (m->waterLevel - 10)) {\n            m->input |= INPUT_IN_WATER;\n        }\n\n        if (m->pos[1] < (gasLevel - 100.0f)) {\n            m->input |= INPUT_IN_POISON_GAS;\n        }\n\n    } else {\n        level_trigger_warp(m, WARP_OP_DEATH);\n    }\n}\n\n/**\n * Handles Mario's input flags as well as a couple timers.\n */\nvoid update_mario_inputs(struct MarioState *m) {\n    m->particleFlags = 0;\n    m->input = 0;\n    m->collidedObjInteractTypes = m->marioObj->collidedObjInteractTypes;\n    m->flags &= 0xFFFFFF;\n\n    update_mario_button_inputs(m);\n    update_mario_joystick_inputs(m);\n    update_mario_geometry_inputs(m);\n\n    debug_print_speed_action_normal(m);\n\n    if (gCameraMovementFlags & CAM_MOVE_C_UP_MODE) {\n        if (m->action & ACT_FLAG_ALLOW_FIRST_PERSON) {\n            m->input |= INPUT_FIRST_PERSON;\n        } else {\n            gCameraMovementFlags &= ~CAM_MOVE_C_UP_MODE;\n        }\n    }\n\n    if (!(m->input & (INPUT_NONZERO_ANALOG | INPUT_A_PRESSED))) {\n        m->input |= INPUT_UNKNOWN_5;\n    }\n\n    // These 3 flags are defined by Bowser stomping attacks\n    if (m->marioObj->oInteractStatus\n        & (INT_STATUS_MARIO_STUNNED | INT_STATUS_MARIO_KNOCKBACK_DMG | INT_STATUS_MARIO_SHOCKWAVE)) {\n        m->input |= INPUT_STOMPED;\n    }\n\n    // This function is located near other unused trampoline functions,\n    // perhaps logically grouped here with the timers.\n    stub_mario_step_1(m);\n\n    if (m->wallKickTimer > 0) {\n        m->wallKickTimer--;\n    }\n\n    if (m->doubleJumpTimer > 0) {\n        m->doubleJumpTimer--;\n    }\n}\n\n/**\n * Set's the camera preset for submerged action behaviors.\n */\nvoid set_submerged_cam_preset_and_spawn_bubbles(struct MarioState *m) {\n    f32 heightBelowWater;\n    s16 camPreset;\n\n    if ((m->action & ACT_GROUP_MASK) == ACT_GROUP_SUBMERGED) {\n        heightBelowWater = (f32)(m->waterLevel - 80) - m->pos[1];\n        camPreset = m->area->camera->mode;\n\n        if (m->action & ACT_FLAG_METAL_WATER) {\n            if (camPreset != CAMERA_MODE_CLOSE) {\n                set_camera_mode(m->area->camera, CAMERA_MODE_CLOSE, 1);\n            }\n        } else {\n            if ((heightBelowWater > 800.0f) && (camPreset != CAMERA_MODE_BEHIND_MARIO)) {\n                set_camera_mode(m->area->camera, CAMERA_MODE_BEHIND_MARIO, 1);\n            }\n\n            if ((heightBelowWater < 400.0f) && (camPreset != CAMERA_MODE_WATER_SURFACE)) {\n                set_camera_mode(m->area->camera, CAMERA_MODE_WATER_SURFACE, 1);\n            }\n\n            // As long as Mario isn't drowning or at the top\n            // of the water with his head out, spawn bubbles.\n            if (!(m->action & ACT_FLAG_INTANGIBLE)) {\n                if ((m->pos[1] < (f32)(m->waterLevel - 160)) || (m->faceAngle[0] < -0x800)) {\n                    m->particleFlags |= PARTICLE_BUBBLE;\n                }\n            }\n        }\n    }\n}\n\n/**\n * Both increments and decrements Mario's HP.\n */\nvoid update_mario_health(struct MarioState *m) {\n    s32 terrainIsSnow;\n\n    if (m->health >= 0x100) {\n        // When already healing or hurting Mario, Mario's HP is not changed any more here.\n        if (((u32) m->healCounter | (u32) m->hurtCounter) == 0) {\n            if ((m->input & INPUT_IN_POISON_GAS) && !(m->action & ACT_FLAG_INTANGIBLE)) {\n                if (!(m->flags & MARIO_METAL_CAP) && !gDebugLevelSelect) {\n                    m->health -= 4;\n                }\n            } else {\n                if ((m->action & ACT_FLAG_SWIMMING) && !(m->action & ACT_FLAG_INTANGIBLE)) {\n                    terrainIsSnow = (m->area->terrainType & TERRAIN_MASK) == TERRAIN_SNOW;\n\n                    // When Mario is near the water surface, recover health (unless in snow),\n                    // when in snow terrains lose 3 health.\n                    // If using the debug level select, do not lose any HP to water.\n                    if ((m->pos[1] >= (m->waterLevel - 140)) && !terrainIsSnow) {\n                        m->health += 0x1A;\n                    } else if (!gDebugLevelSelect) {\n                        m->health -= (terrainIsSnow ? 3 : 1);\n                    }\n                }\n            }\n        }\n\n        if (m->healCounter > 0) {\n            m->health += 0x40;\n            m->healCounter--;\n        }\n        if (m->hurtCounter > 0) {\n            m->health -= 0x40;\n            m->hurtCounter--;\n        }\n\n        if (m->health > 0x880) {\n            m->health = 0x880;\n        }\n        if (m->health < 0x100) {\n            m->health = 0xFF;\n        }\n\n        // Play a noise to alert the player when Mario is close to drowning.\n        if (((m->action & ACT_GROUP_MASK) == ACT_GROUP_SUBMERGED) && (m->health < 0x300)) {\n            play_sound(SOUND_MOVING_ALMOST_DROWNING, gGlobalSoundSource);\n#if ENABLE_RUMBLE\n            if (gRumblePakTimer == 0) {\n                gRumblePakTimer = 36;\n                if (is_rumble_finished_and_queue_empty()) {\n                    queue_rumble_data(3, 30);\n                }\n            }\n        } else {\n            gRumblePakTimer = 0;\n#endif\n        }\n    }\n}\n\n/**\n * Updates some basic info for camera usage.\n */\nvoid update_mario_info_for_cam(struct MarioState *m) {\n    m->marioBodyState->action = m->action;\n    m->statusForCamera->action = m->action;\n\n    vec3s_copy(m->statusForCamera->faceAngle, m->faceAngle);\n\n    if (!(m->flags & MARIO_UNKNOWN_25)) {\n        vec3f_copy(m->statusForCamera->pos, m->pos);\n    }\n}\n\n/**\n * Resets Mario's model, done every time an action is executed.\n */\nvoid mario_reset_bodystate(struct MarioState *m) {\n    struct MarioBodyState *bodyState = m->marioBodyState;\n\n    bodyState->capState = MARIO_HAS_DEFAULT_CAP_OFF;\n    bodyState->eyeState = MARIO_EYES_BLINK;\n    bodyState->handState = MARIO_HAND_FISTS;\n    bodyState->modelState = 0;\n    bodyState->wingFlutter = FALSE;\n\n    m->flags &= ~MARIO_METAL_SHOCK;\n}\n\n/**\n * Adjusts Mario's graphical height for quicksand.\n */\nvoid sink_mario_in_quicksand(struct MarioState *m) {\n    struct Object *o = m->marioObj;\n\n    if (o->header.gfx.throwMatrix) {\n        (*o->header.gfx.throwMatrix)[3][1] -= m->quicksandDepth;\n    }\n\n    o->header.gfx.pos[1] -= m->quicksandDepth;\n}\n\n/**\n * Is a binary representation of the frames to flicker Mario's cap when the timer\n * is running out.\n *\n * Equals [1000]^5 . [100]^8 . [10]^9 . [1] in binary, which is\n * 100010001000100010001001001001001001001001001010101010101010101.\n */\nu64 sCapFlickerFrames = 0x4444449249255555;\n\n/**\n * Updates the cap flags mainly based on the cap timer.\n */\nu32 update_and_return_cap_flags(struct MarioState *m) {\n    u32 flags = m->flags;\n    u32 action;\n\n    if (m->capTimer > 0) {\n        action = m->action;\n\n        if ((m->capTimer <= 60)\n            || ((action != ACT_READING_AUTOMATIC_DIALOG) && (action != ACT_READING_NPC_DIALOG)\n                && (action != ACT_READING_SIGN) && (action != ACT_IN_CANNON))) {\n            m->capTimer -= 1;\n        }\n\n        if (m->capTimer == 0) {\n            stop_cap_music();\n\n            m->flags &= ~MARIO_SPECIAL_CAPS;\n            if (!(m->flags & MARIO_CAPS)) {\n                m->flags &= ~MARIO_CAP_ON_HEAD;\n            }\n        }\n\n        if (m->capTimer == 60) {\n            fadeout_cap_music();\n        }\n\n        // This code flickers the cap through a long binary string, increasing in how\n        // common it flickers near the end.\n        if ((m->capTimer < 64) && ((1ULL << m->capTimer) & sCapFlickerFrames)) {\n            flags &= ~MARIO_SPECIAL_CAPS;\n            if (!(flags & MARIO_CAPS)) {\n                flags &= ~MARIO_CAP_ON_HEAD;\n            }\n        }\n    }\n\n    return flags;\n}\n\n/**\n * Updates the Mario's cap, rendering, and hitbox.\n */\nvoid mario_update_hitbox_and_cap_model(struct MarioState *m) {\n    struct MarioBodyState *bodyState = m->marioBodyState;\n    s32 flags = update_and_return_cap_flags(m);\n\n    if (flags & MARIO_VANISH_CAP) {\n        bodyState->modelState = MODEL_STATE_NOISE_ALPHA;\n    }\n\n    if (flags & MARIO_METAL_CAP) {\n        bodyState->modelState |= MODEL_STATE_METAL;\n    }\n\n    if (flags & MARIO_METAL_SHOCK) {\n        bodyState->modelState |= MODEL_STATE_METAL;\n    }\n\n    //! (Pause buffered hitstun) Since the global timer increments while paused,\n    //  this can be paused through to give continual invisibility. This leads to\n    //  no interaction with objects.\n    if ((m->invincTimer >= 3) && (gGlobalTimer & 1)) {\n        gMarioState->marioObj->header.gfx.node.flags |= GRAPH_RENDER_INVISIBLE;\n    }\n\n    if (flags & MARIO_CAP_IN_HAND) {\n        if (flags & MARIO_WING_CAP) {\n            bodyState->handState = MARIO_HAND_HOLDING_WING_CAP;\n        } else {\n            bodyState->handState = MARIO_HAND_HOLDING_CAP;\n        }\n    }\n\n    if (flags & MARIO_CAP_ON_HEAD) {\n        if (flags & MARIO_WING_CAP) {\n            bodyState->capState = MARIO_HAS_WING_CAP_ON;\n        } else {\n            bodyState->capState = MARIO_HAS_DEFAULT_CAP_ON;\n        }\n    }\n\n    // Short hitbox for crouching/crawling/etc.\n    if (m->action & ACT_FLAG_SHORT_HITBOX) {\n        m->marioObj->hitboxHeight = 100.0f;\n    } else {\n        m->marioObj->hitboxHeight = 160.0f;\n    }\n\n    if ((m->flags & MARIO_TELEPORTING) && (m->fadeWarpOpacity != 0xFF)) {\n        bodyState->modelState &= ~0xFF;\n        bodyState->modelState |= (0x100 | m->fadeWarpOpacity);\n    }\n}\n\n/**\n * An unused and possibly a debug function. Z + another button input\n * sets Mario with a different cap.\n */\nUNUSED static void debug_update_mario_cap(u16 button, s32 flags, u16 capTimer, u16 capMusic) {\n    // This checks for Z_TRIG instead of Z_DOWN flag\n    // (which is also what other debug functions do),\n    // so likely debug behavior rather than unused behavior.\n    if ((gPlayer1Controller->buttonDown & Z_TRIG) && (gPlayer1Controller->buttonPressed & button)\n        && !(gMarioState->flags & flags)) {\n        gMarioState->flags |= (flags + MARIO_CAP_ON_HEAD);\n\n        if (capTimer > gMarioState->capTimer) {\n            gMarioState->capTimer = capTimer;\n        }\n\n        play_cap_music(capMusic);\n    }\n}\n\n#if ENABLE_RUMBLE\nvoid func_sh_8025574C(void) {\n    if (gMarioState->particleFlags & PARTICLE_HORIZONTAL_STAR) {\n        queue_rumble_data(5, 80);\n    } else if (gMarioState->particleFlags & PARTICLE_VERTICAL_STAR) {\n        queue_rumble_data(5, 80);\n    } else if (gMarioState->particleFlags & PARTICLE_TRIANGLE) {\n        queue_rumble_data(5, 80);\n    }\n    if (gMarioState->heldObj && gMarioState->heldObj->behavior == segmented_to_virtual(bhvBobomb)) {\n        reset_rumble_timers();\n    }\n}\n#endif\n\n/**\n * Main function for executing Mario's behavior.\n */\ns32 execute_mario_action(UNUSED struct Object *o) {\n    s32 inLoop = TRUE;\n\n    if (gMarioState->action) {\n        gMarioState->marioObj->header.gfx.node.flags &= ~GRAPH_RENDER_INVISIBLE;\n        mario_reset_bodystate(gMarioState);\n        update_mario_inputs(gMarioState);\n        mario_handle_special_floors(gMarioState);\n        mario_process_interactions(gMarioState);\n\n        // If Mario is OOB, stop executing actions.\n        if (gMarioState->floor == NULL) {\n            return 0;\n        }\n\n        // The function can loop through many action shifts in one frame,\n        // which can lead to unexpected sub-frame behavior. Could potentially hang\n        // if a loop of actions were found, but there has not been a situation found.\n        while (inLoop) {\n            switch (gMarioState->action & ACT_GROUP_MASK) {\n                case ACT_GROUP_STATIONARY:\n                    inLoop = mario_execute_stationary_action(gMarioState);\n                    break;\n\n                case ACT_GROUP_MOVING:\n                    inLoop = mario_execute_moving_action(gMarioState);\n                    break;\n\n                case ACT_GROUP_AIRBORNE:\n                    inLoop = mario_execute_airborne_action(gMarioState);\n                    break;\n\n                case ACT_GROUP_SUBMERGED:\n                    inLoop = mario_execute_submerged_action(gMarioState);\n                    break;\n\n                case ACT_GROUP_CUTSCENE:\n                    inLoop = mario_execute_cutscene_action(gMarioState);\n                    break;\n\n                case ACT_GROUP_AUTOMATIC:\n                    inLoop = mario_execute_automatic_action(gMarioState);\n                    break;\n\n                case ACT_GROUP_OBJECT:\n                    inLoop = mario_execute_object_action(gMarioState);\n                    break;\n            }\n        }\n\n        sink_mario_in_quicksand(gMarioState);\n        squish_mario_model(gMarioState);\n        set_submerged_cam_preset_and_spawn_bubbles(gMarioState);\n        update_mario_health(gMarioState);\n        update_mario_info_for_cam(gMarioState);\n        mario_update_hitbox_and_cap_model(gMarioState);\n\n        // Both of the wind handling portions play wind audio only in\n        // non-Japanese releases.\n        if (gMarioState->floor->type == SURFACE_HORIZONTAL_WIND) {\n            spawn_wind_particles(0, (gMarioState->floor->force << 8));\n#ifndef VERSION_JP\n            play_sound(SOUND_ENV_WIND2, gMarioState->marioObj->header.gfx.cameraToObject);\n#endif\n        }\n\n        if (gMarioState->floor->type == SURFACE_VERTICAL_WIND) {\n            spawn_wind_particles(1, 0);\n#ifndef VERSION_JP\n            play_sound(SOUND_ENV_WIND2, gMarioState->marioObj->header.gfx.cameraToObject);\n#endif\n        }\n\n        play_infinite_stairs_music();\n        gMarioState->marioObj->oInteractStatus = 0;\n#if ENABLE_RUMBLE\n        func_sh_8025574C();\n#endif\n\n        return gMarioState->particleFlags;\n    }\n\n    return 0;\n}\n\n/**************************************************\n *                  INITIALIZATION                *\n **************************************************/\n\nvoid init_mario(void) {\n    Vec3s capPos;\n    struct Object *capObject;\n\n    unused80339F10 = 0;\n\n    gMarioState->actionTimer = 0;\n    gMarioState->framesSinceA = 0xFF;\n    gMarioState->framesSinceB = 0xFF;\n\n    gMarioState->invincTimer = 0;\n\n    if (save_file_get_flags()\n        & (SAVE_FLAG_CAP_ON_GROUND | SAVE_FLAG_CAP_ON_KLEPTO | SAVE_FLAG_CAP_ON_UKIKI\n           | SAVE_FLAG_CAP_ON_MR_BLIZZARD)) {\n        gMarioState->flags = 0;\n    } else {\n        gMarioState->flags = (MARIO_NORMAL_CAP | MARIO_CAP_ON_HEAD);\n    }\n\n    gMarioState->forwardVel = 0.0f;\n    gMarioState->squishTimer = 0;\n\n    gMarioState->hurtCounter = 0;\n    gMarioState->healCounter = 0;\n\n    gMarioState->capTimer = 0;\n    gMarioState->quicksandDepth = 0.0f;\n\n    gMarioState->heldObj = NULL;\n    gMarioState->riddenObj = NULL;\n    gMarioState->usedObj = NULL;\n\n    gMarioState->waterLevel =\n        find_water_level(gMarioSpawnInfo->startPos[0], gMarioSpawnInfo->startPos[2]);\n\n    gMarioState->area = gCurrentArea;\n    gMarioState->marioObj = gMarioObject;\n    gMarioState->marioObj->header.gfx.animInfo.animID = -1;\n    vec3s_copy(gMarioState->faceAngle, gMarioSpawnInfo->startAngle);\n    vec3s_set(gMarioState->angleVel, 0, 0, 0);\n    vec3s_to_vec3f(gMarioState->pos, gMarioSpawnInfo->startPos);\n    vec3f_set(gMarioState->vel, 0, 0, 0);\n    gMarioState->floorHeight =\n        find_floor(gMarioState->pos[0], gMarioState->pos[1], gMarioState->pos[2], &gMarioState->floor);\n\n    if (gMarioState->pos[1] < gMarioState->floorHeight) {\n        gMarioState->pos[1] = gMarioState->floorHeight;\n    }\n\n    gMarioState->marioObj->header.gfx.pos[1] = gMarioState->pos[1];\n\n    gMarioState->action =\n        (gMarioState->pos[1] <= (gMarioState->waterLevel - 100)) ? ACT_WATER_IDLE : ACT_IDLE;\n\n    mario_reset_bodystate(gMarioState);\n    update_mario_info_for_cam(gMarioState);\n    gMarioState->marioBodyState->punchState = 0;\n\n    gMarioState->marioObj->oPosX = gMarioState->pos[0];\n    gMarioState->marioObj->oPosY = gMarioState->pos[1];\n    gMarioState->marioObj->oPosZ = gMarioState->pos[2];\n\n    gMarioState->marioObj->oMoveAnglePitch = gMarioState->faceAngle[0];\n    gMarioState->marioObj->oMoveAngleYaw = gMarioState->faceAngle[1];\n    gMarioState->marioObj->oMoveAngleRoll = gMarioState->faceAngle[2];\n\n    vec3f_copy(gMarioState->marioObj->header.gfx.pos, gMarioState->pos);\n    vec3s_set(gMarioState->marioObj->header.gfx.angle, 0, gMarioState->faceAngle[1], 0);\n\n    if (save_file_get_cap_pos(capPos)) {\n        capObject = spawn_object(gMarioState->marioObj, MODEL_MARIOS_CAP, bhvNormalCap);\n\n        capObject->oPosX = capPos[0];\n        capObject->oPosY = capPos[1];\n        capObject->oPosZ = capPos[2];\n\n        capObject->oForwardVelS32 = 0;\n\n        capObject->oMoveAngleYaw = 0;\n    }\n}\n\nvoid init_mario_from_save_file(void) {\n    gMarioState->unk00 = 0;\n    gMarioState->flags = 0;\n    gMarioState->action = 0;\n    gMarioState->spawnInfo = &gPlayerSpawnInfos[0];\n    gMarioState->statusForCamera = &gPlayerCameraState[0];\n    gMarioState->marioBodyState = &gBodyStates[0];\n    gMarioState->controller = &gControllers[0];\n    gMarioState->animList = &gMarioAnimsBuf;\n\n    gMarioState->numCoins = 0;\n    gMarioState->numStars =\n        save_file_get_total_star_count(gCurrSaveFileNum - 1, COURSE_MIN - 1, COURSE_MAX - 1);\n    gMarioState->numKeys = 0;\n\n    gMarioState->numLives = 4;\n    gMarioState->health = 0x880;\n\n    gMarioState->prevNumStarsForDialog = gMarioState->numStars;\n    gMarioState->unkB0 = 0xBD;\n\n    gHudDisplay.coins = 0;\n    gHudDisplay.wedges = 8;\n}\n"
  },
  {
    "path": "src/game/mario.h",
    "content": "#ifndef MARIO_H\n#define MARIO_H\n\n#include <PR/ultratypes.h>\n\n#include \"macros.h\"\n#include \"types.h\"\n\ns32 is_anim_at_end(struct MarioState *m);\ns32 is_anim_past_end(struct MarioState *m);\ns16 set_mario_animation(struct MarioState *m, s32 targetAnimID);\ns16 set_mario_anim_with_accel(struct MarioState *m, s32 targetAnimID, s32 accel);\nvoid set_anim_to_frame(struct MarioState *m, s16 animFrame);\ns32 is_anim_past_frame(struct MarioState *m, s16 animFrame);\ns16 find_mario_anim_flags_and_translation(struct Object *o, s32 yaw, Vec3s translation);\nvoid update_mario_pos_for_anim(struct MarioState *m);\ns16 return_mario_anim_y_translation(struct MarioState *m);\nvoid play_sound_if_no_flag(struct MarioState *m, u32 soundBits, u32 flags);\nvoid play_mario_jump_sound(struct MarioState *m);\nvoid adjust_sound_for_speed(struct MarioState *m);\nvoid play_sound_and_spawn_particles(struct MarioState *m, u32 soundBits, u32 waveParticleType);\nvoid play_mario_action_sound(struct MarioState *m, u32 soundBits, u32 waveParticleType);\nvoid play_mario_landing_sound(struct MarioState *m, u32 soundBits);\nvoid play_mario_landing_sound_once(struct MarioState *m, u32 soundBits);\nvoid play_mario_heavy_landing_sound(struct MarioState *m, u32 soundBits);\nvoid play_mario_heavy_landing_sound_once(struct MarioState *m, u32 soundBits);\nvoid play_mario_sound(struct MarioState *m, s32 primarySoundBits, s32 scondarySoundBits);\nvoid mario_set_forward_vel(struct MarioState *m, f32 speed);\ns32 mario_get_floor_class(struct MarioState *m);\nu32 mario_get_terrain_sound_addend(struct MarioState *m);\nstruct Surface *resolve_and_return_wall_collisions(Vec3f pos, f32 offset, f32 radius);\nf32 vec3f_find_ceil(Vec3f pos, f32 height, struct Surface **ceil);\ns32 mario_facing_downhill(struct MarioState *m, s32 turnYaw);\nu32 mario_floor_is_slippery(struct MarioState *m);\ns32 mario_floor_is_slope(struct MarioState *m);\ns32 mario_floor_is_steep(struct MarioState *m);\nf32 find_floor_height_relative_polar(struct MarioState *m, s16 angleFromMario, f32 distFromMario);\ns16 find_floor_slope(struct MarioState *m, s16 yawOffset);\nvoid update_mario_sound_and_camera(struct MarioState *m);\nvoid set_steep_jump_action(struct MarioState *m);\nu32 set_mario_action(struct MarioState *, u32 action, u32 actionArg);\ns32 set_jump_from_landing(struct MarioState *m);\ns32 set_jumping_action(struct MarioState *m, u32 action, u32 actionArg);\ns32 drop_and_set_mario_action(struct MarioState *m, u32 action, u32 actionArg);\ns32 hurt_and_set_mario_action(struct MarioState *m, u32 action, u32 actionArg, s16 hurtCounter);\ns32 check_common_action_exits(struct MarioState *m);\ns32 check_common_hold_action_exits(struct MarioState *m);\ns32 transition_submerged_to_walking(struct MarioState *m);\ns32 set_water_plunge_action(struct MarioState *m);\ns32 execute_mario_action(UNUSED struct Object *o);\nvoid init_mario(void);\nvoid init_mario_from_save_file(void);\n\n#endif // MARIO_H\n"
  },
  {
    "path": "src/game/mario_actions_airborne.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"sm64.h\"\n#include \"area.h\"\n#include \"audio/external.h\"\n#include \"camera.h\"\n#include \"engine/graph_node.h\"\n#include \"engine/math_util.h\"\n#include \"game_init.h\"\n#include \"interaction.h\"\n#include \"level_update.h\"\n#include \"mario.h\"\n#include \"mario_step.h\"\n#include \"save_file.h\"\n#include \"rumble_init.h\"\n\nvoid play_flip_sounds(struct MarioState *m, s16 frame1, s16 frame2, s16 frame3) {\n    s32 animFrame = m->marioObj->header.gfx.animInfo.animFrame;\n    if (animFrame == frame1 || animFrame == frame2 || animFrame == frame3) {\n        play_sound(SOUND_ACTION_SPIN, m->marioObj->header.gfx.cameraToObject);\n    }\n}\n\nvoid play_far_fall_sound(struct MarioState *m) {\n    u32 action = m->action;\n    if (!(action & ACT_FLAG_INVULNERABLE) && action != ACT_TWIRLING && action != ACT_FLYING\n        && !(m->flags & MARIO_UNKNOWN_18)) {\n        if (m->peakHeight - m->pos[1] > 1150.0f) {\n            play_sound(SOUND_MARIO_WAAAOOOW, m->marioObj->header.gfx.cameraToObject);\n            m->flags |= MARIO_UNKNOWN_18;\n        }\n    }\n}\n\n#ifndef VERSION_JP\nvoid play_knockback_sound(struct MarioState *m) {\n    if (m->actionArg == 0 && (m->forwardVel <= -28.0f || m->forwardVel >= 28.0f)) {\n        play_sound_if_no_flag(m, SOUND_MARIO_DOH, MARIO_MARIO_SOUND_PLAYED);\n    } else {\n        play_sound_if_no_flag(m, SOUND_MARIO_UH, MARIO_MARIO_SOUND_PLAYED);\n    }\n}\n#endif\n\ns32 lava_boost_on_wall(struct MarioState *m) {\n    m->faceAngle[1] = atan2s(m->wall->normal.z, m->wall->normal.x);\n\n    if (m->forwardVel < 24.0f) {\n        m->forwardVel = 24.0f;\n    }\n\n    if (!(m->flags & MARIO_METAL_CAP)) {\n        m->hurtCounter += (m->flags & MARIO_CAP_ON_HEAD) ? 12 : 18;\n    }\n\n    play_sound(SOUND_MARIO_ON_FIRE, m->marioObj->header.gfx.cameraToObject);\n    update_mario_sound_and_camera(m);\n    return drop_and_set_mario_action(m, ACT_LAVA_BOOST, 1);\n}\n\ns32 check_fall_damage(struct MarioState *m, u32 hardFallAction) {\n    f32 fallHeight;\n    f32 damageHeight;\n\n    fallHeight = m->peakHeight - m->pos[1];\n\n#pragma GCC diagnostic push\n#if defined(__clang__)\n#pragma GCC diagnostic ignored \"-Wtautological-constant-out-of-range-compare\"\n#elif defined(__GNUC__)\n#pragma GCC diagnostic ignored \"-Wtype-limits\"\n#endif\n\n    //! Never true\n    if (m->actionState == ACT_GROUND_POUND) {\n        damageHeight = 600.0f;\n    } else {\n        damageHeight = 1150.0f;\n    }\n\n#pragma GCC diagnostic pop\n\n    if (m->action != ACT_TWIRLING && m->floor->type != SURFACE_BURNING) {\n        if (m->vel[1] < -55.0f) {\n            if (fallHeight > 3000.0f) {\n                m->hurtCounter += (m->flags & MARIO_CAP_ON_HEAD) ? 16 : 24;\n#if ENABLE_RUMBLE\n                queue_rumble_data(5, 80);\n#endif\n                set_camera_shake_from_hit(SHAKE_FALL_DAMAGE);\n                play_sound(SOUND_MARIO_ATTACKED, m->marioObj->header.gfx.cameraToObject);\n                return drop_and_set_mario_action(m, hardFallAction, 4);\n            } else if (fallHeight > damageHeight && !mario_floor_is_slippery(m)) {\n                m->hurtCounter += (m->flags & MARIO_CAP_ON_HEAD) ? 8 : 12;\n                m->squishTimer = 30;\n#if ENABLE_RUMBLE\n                queue_rumble_data(5, 80);\n#endif\n                set_camera_shake_from_hit(SHAKE_FALL_DAMAGE);\n                play_sound(SOUND_MARIO_ATTACKED, m->marioObj->header.gfx.cameraToObject);\n            }\n        }\n    }\n\n    return FALSE;\n}\n\ns32 check_kick_or_dive_in_air(struct MarioState *m) {\n    if (m->input & INPUT_B_PRESSED) {\n        return set_mario_action(m, m->forwardVel > 28.0f ? ACT_DIVE : ACT_JUMP_KICK, 0);\n    }\n    return FALSE;\n}\n\ns32 should_get_stuck_in_ground(struct MarioState *m) {\n    u32 terrainType = m->area->terrainType & TERRAIN_MASK;\n    struct Surface *floor = m->floor;\n    s32 flags = floor->flags;\n    s32 type = floor->type;\n\n    if (floor != NULL && (terrainType == TERRAIN_SNOW || terrainType == TERRAIN_SAND)\n        && type != SURFACE_BURNING && SURFACE_IS_NOT_HARD(type)) {\n        if (!(flags & 0x01) && m->peakHeight - m->pos[1] > 1000.0f && floor->normal.y >= 0.8660254f) {\n            return TRUE;\n        }\n    }\n\n    return FALSE;\n}\n\ns32 check_fall_damage_or_get_stuck(struct MarioState *m, u32 hardFallAction) {\n    if (should_get_stuck_in_ground(m)) {\n#ifdef VERSION_JP\n        play_sound(SOUND_MARIO_OOOF, m->marioObj->header.gfx.cameraToObject);\n#else\n        play_sound(SOUND_MARIO_OOOF2, m->marioObj->header.gfx.cameraToObject);\n#endif\n        m->particleFlags |= PARTICLE_MIST_CIRCLE;\n        drop_and_set_mario_action(m, ACT_FEET_STUCK_IN_GROUND, 0);\n#if ENABLE_RUMBLE\n        queue_rumble_data(5, 80);\n#endif\n        return TRUE;\n    }\n\n    return check_fall_damage(m, hardFallAction);\n}\n\ns32 check_horizontal_wind(struct MarioState *m) {\n    struct Surface *floor;\n    f32 speed;\n    s16 pushAngle;\n\n    floor = m->floor;\n\n    if (floor->type == SURFACE_HORIZONTAL_WIND) {\n        pushAngle = floor->force << 8;\n\n        m->slideVelX += 1.2f * sins(pushAngle);\n        m->slideVelZ += 1.2f * coss(pushAngle);\n\n        speed = sqrtf(m->slideVelX * m->slideVelX + m->slideVelZ * m->slideVelZ);\n\n        if (speed > 48.0f) {\n            m->slideVelX = m->slideVelX * 48.0f / speed;\n            m->slideVelZ = m->slideVelZ * 48.0f / speed;\n            speed = 32.0f; //! This was meant to be 48?\n        } else if (speed > 32.0f) {\n            speed = 32.0f;\n        }\n\n        m->vel[0] = m->slideVelX;\n        m->vel[2] = m->slideVelZ;\n        m->slideYaw = atan2s(m->slideVelZ, m->slideVelX);\n        m->forwardVel = speed * coss(m->faceAngle[1] - m->slideYaw);\n\n#ifdef VERSION_JP\n        play_sound(SOUND_ENV_WIND2, m->marioObj->header.gfx.cameraToObject);\n#endif\n        return TRUE;\n    }\n\n    return FALSE;\n}\n\nvoid update_air_with_turn(struct MarioState *m) {\n    f32 dragThreshold;\n    s16 intendedDYaw;\n    f32 intendedMag;\n\n    if (!check_horizontal_wind(m)) {\n        dragThreshold = m->action == ACT_LONG_JUMP ? 48.0f : 32.0f;\n        m->forwardVel = approach_f32(m->forwardVel, 0.0f, 0.35f, 0.35f);\n\n        if (m->input & INPUT_NONZERO_ANALOG) {\n            intendedDYaw = m->intendedYaw - m->faceAngle[1];\n            intendedMag = m->intendedMag / 32.0f;\n\n            m->forwardVel += 1.5f * coss(intendedDYaw) * intendedMag;\n            m->faceAngle[1] += 512.0f * sins(intendedDYaw) * intendedMag;\n        }\n\n        //! Uncapped air speed. Net positive when moving forward.\n        if (m->forwardVel > dragThreshold) {\n            m->forwardVel -= 1.0f;\n        }\n        if (m->forwardVel < -16.0f) {\n            m->forwardVel += 2.0f;\n        }\n\n        m->vel[0] = m->slideVelX = m->forwardVel * sins(m->faceAngle[1]);\n        m->vel[2] = m->slideVelZ = m->forwardVel * coss(m->faceAngle[1]);\n    }\n}\n\nvoid update_air_without_turn(struct MarioState *m) {\n    f32 sidewaysSpeed = 0.0f;\n    f32 dragThreshold;\n    s16 intendedDYaw;\n    f32 intendedMag;\n\n    if (!check_horizontal_wind(m)) {\n        dragThreshold = m->action == ACT_LONG_JUMP ? 48.0f : 32.0f;\n        m->forwardVel = approach_f32(m->forwardVel, 0.0f, 0.35f, 0.35f);\n\n        if (m->input & INPUT_NONZERO_ANALOG) {\n            intendedDYaw = m->intendedYaw - m->faceAngle[1];\n            intendedMag = m->intendedMag / 32.0f;\n\n            m->forwardVel += intendedMag * coss(intendedDYaw) * 1.5f;\n            sidewaysSpeed = intendedMag * sins(intendedDYaw) * 10.0f;\n        }\n\n        //! Uncapped air speed. Net positive when moving forward.\n        if (m->forwardVel > dragThreshold) {\n            m->forwardVel -= 1.0f;\n        }\n        if (m->forwardVel < -16.0f) {\n            m->forwardVel += 2.0f;\n        }\n\n        m->slideVelX = m->forwardVel * sins(m->faceAngle[1]);\n        m->slideVelZ = m->forwardVel * coss(m->faceAngle[1]);\n\n        m->slideVelX += sidewaysSpeed * sins(m->faceAngle[1] + 0x4000);\n        m->slideVelZ += sidewaysSpeed * coss(m->faceAngle[1] + 0x4000);\n\n        m->vel[0] = m->slideVelX;\n        m->vel[2] = m->slideVelZ;\n    }\n}\n\nvoid update_lava_boost_or_twirling(struct MarioState *m) {\n    s16 intendedDYaw;\n    f32 intendedMag;\n\n    if (m->input & INPUT_NONZERO_ANALOG) {\n        intendedDYaw = m->intendedYaw - m->faceAngle[1];\n        intendedMag = m->intendedMag / 32.0f;\n\n        m->forwardVel += coss(intendedDYaw) * intendedMag;\n        m->faceAngle[1] += sins(intendedDYaw) * intendedMag * 1024.0f;\n\n        if (m->forwardVel < 0.0f) {\n            m->faceAngle[1] += 0x8000;\n            m->forwardVel *= -1.0f;\n        }\n\n        if (m->forwardVel > 32.0f) {\n            m->forwardVel -= 2.0f;\n        }\n    }\n\n    m->vel[0] = m->slideVelX = m->forwardVel * sins(m->faceAngle[1]);\n    m->vel[2] = m->slideVelZ = m->forwardVel * coss(m->faceAngle[1]);\n}\n\nvoid update_flying_yaw(struct MarioState *m) {\n    s16 targetYawVel = -(s16)(m->controller->stickX * (m->forwardVel / 4.0f));\n\n    if (targetYawVel > 0) {\n        if (m->angleVel[1] < 0) {\n            m->angleVel[1] += 0x40;\n            if (m->angleVel[1] > 0x10) {\n                m->angleVel[1] = 0x10;\n            }\n        } else {\n            m->angleVel[1] = approach_s32(m->angleVel[1], targetYawVel, 0x10, 0x20);\n        }\n    } else if (targetYawVel < 0) {\n        if (m->angleVel[1] > 0) {\n            m->angleVel[1] -= 0x40;\n            if (m->angleVel[1] < -0x10) {\n                m->angleVel[1] = -0x10;\n            }\n        } else {\n            m->angleVel[1] = approach_s32(m->angleVel[1], targetYawVel, 0x20, 0x10);\n        }\n    } else {\n        m->angleVel[1] = approach_s32(m->angleVel[1], 0, 0x40, 0x40);\n    }\n\n    m->faceAngle[1] += m->angleVel[1];\n    m->faceAngle[2] = 20 * -m->angleVel[1];\n}\n\nvoid update_flying_pitch(struct MarioState *m) {\n    s16 targetPitchVel = -(s16)(m->controller->stickY * (m->forwardVel / 5.0f));\n\n    if (targetPitchVel > 0) {\n        if (m->angleVel[0] < 0) {\n            m->angleVel[0] += 0x40;\n            if (m->angleVel[0] > 0x20) {\n                m->angleVel[0] = 0x20;\n            }\n        } else {\n            m->angleVel[0] = approach_s32(m->angleVel[0], targetPitchVel, 0x20, 0x40);\n        }\n    } else if (targetPitchVel < 0) {\n        if (m->angleVel[0] > 0) {\n            m->angleVel[0] -= 0x40;\n            if (m->angleVel[0] < -0x20) {\n                m->angleVel[0] = -0x20;\n            }\n        } else {\n            m->angleVel[0] = approach_s32(m->angleVel[0], targetPitchVel, 0x40, 0x20);\n        }\n    } else {\n        m->angleVel[0] = approach_s32(m->angleVel[0], 0, 0x40, 0x40);\n    }\n}\n\nvoid update_flying(struct MarioState *m) {\n    UNUSED u8 filler[4];\n\n    update_flying_pitch(m);\n    update_flying_yaw(m);\n\n    m->forwardVel -= 2.0f * ((f32) m->faceAngle[0] / 0x4000) + 0.1f;\n    m->forwardVel -= 0.5f * (1.0f - coss(m->angleVel[1]));\n\n    if (m->forwardVel < 0.0f) {\n        m->forwardVel = 0.0f;\n    }\n\n    if (m->forwardVel > 16.0f) {\n        m->faceAngle[0] += (m->forwardVel - 32.0f) * 6.0f;\n    } else if (m->forwardVel > 4.0f) {\n        m->faceAngle[0] += (m->forwardVel - 32.0f) * 10.0f;\n    } else {\n        m->faceAngle[0] -= 0x400;\n    }\n\n    m->faceAngle[0] += m->angleVel[0];\n\n    if (m->faceAngle[0] > 0x2AAA) {\n        m->faceAngle[0] = 0x2AAA;\n    }\n    if (m->faceAngle[0] < -0x2AAA) {\n        m->faceAngle[0] = -0x2AAA;\n    }\n\n    m->vel[0] = m->forwardVel * coss(m->faceAngle[0]) * sins(m->faceAngle[1]);\n    m->vel[1] = m->forwardVel * sins(m->faceAngle[0]);\n    m->vel[2] = m->forwardVel * coss(m->faceAngle[0]) * coss(m->faceAngle[1]);\n\n    m->slideVelX = m->vel[0];\n    m->slideVelZ = m->vel[2];\n}\n\nu32 common_air_action_step(struct MarioState *m, u32 landAction, s32 animation, u32 stepArg) {\n    u32 stepResult;\n\n    update_air_without_turn(m);\n\n    stepResult = perform_air_step(m, stepArg);\n    switch (stepResult) {\n        case AIR_STEP_NONE:\n            set_mario_animation(m, animation);\n            break;\n\n        case AIR_STEP_LANDED:\n            if (!check_fall_damage_or_get_stuck(m, ACT_HARD_BACKWARD_GROUND_KB)) {\n                set_mario_action(m, landAction, 0);\n            }\n            break;\n\n        case AIR_STEP_HIT_WALL:\n            set_mario_animation(m, animation);\n\n            if (m->forwardVel > 16.0f) {\n#if ENABLE_RUMBLE\n                queue_rumble_data(5, 40);\n#endif\n                mario_bonk_reflection(m, FALSE);\n                m->faceAngle[1] += 0x8000;\n\n                if (m->wall != NULL) {\n                    set_mario_action(m, ACT_AIR_HIT_WALL, 0);\n                } else {\n                    if (m->vel[1] > 0.0f) {\n                        m->vel[1] = 0.0f;\n                    }\n\n                    //! Hands-free holding. Bonking while no wall is referenced\n                    // sets Mario's action to a non-holding action without\n                    // dropping the object, causing the hands-free holding\n                    // glitch. This can be achieved using an exposed ceiling,\n                    // out of bounds, grazing the bottom of a wall while\n                    // falling such that the final quarter step does not find a\n                    // wall collision, or by rising into the top of a wall such\n                    // that the final quarter step detects a ledge, but you are\n                    // not able to ledge grab it.\n                    if (m->forwardVel >= 38.0f) {\n                        m->particleFlags |= PARTICLE_VERTICAL_STAR;\n                        set_mario_action(m, ACT_BACKWARD_AIR_KB, 0);\n                    } else {\n                        if (m->forwardVel > 8.0f) {\n                            mario_set_forward_vel(m, -8.0f);\n                        }\n                        return set_mario_action(m, ACT_SOFT_BONK, 0);\n                    }\n                }\n            } else {\n                mario_set_forward_vel(m, 0.0f);\n            }\n            break;\n\n        case AIR_STEP_GRABBED_LEDGE:\n            set_mario_animation(m, MARIO_ANIM_IDLE_ON_LEDGE);\n            drop_and_set_mario_action(m, ACT_LEDGE_GRAB, 0);\n            break;\n\n        case AIR_STEP_GRABBED_CEILING:\n            set_mario_action(m, ACT_START_HANGING, 0);\n            break;\n\n        case AIR_STEP_HIT_LAVA_WALL:\n            lava_boost_on_wall(m);\n            break;\n    }\n\n    return stepResult;\n}\n\ns32 act_jump(struct MarioState *m) {\n    if (check_kick_or_dive_in_air(m)) {\n        return TRUE;\n    }\n\n    if (m->input & INPUT_Z_PRESSED) {\n        return set_mario_action(m, ACT_GROUND_POUND, 0);\n    }\n\n    play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, 0);\n    common_air_action_step(m, ACT_JUMP_LAND, MARIO_ANIM_SINGLE_JUMP,\n                           AIR_STEP_CHECK_LEDGE_GRAB | AIR_STEP_CHECK_HANG);\n    return FALSE;\n}\n\ns32 act_double_jump(struct MarioState *m) {\n    s32 animation = (m->vel[1] >= 0.0f)\n        ? MARIO_ANIM_DOUBLE_JUMP_RISE\n        : MARIO_ANIM_DOUBLE_JUMP_FALL;\n\n    if (check_kick_or_dive_in_air(m)) {\n        return TRUE;\n    }\n\n    if (m->input & INPUT_Z_PRESSED) {\n        return set_mario_action(m, ACT_GROUND_POUND, 0);\n    }\n\n    play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, SOUND_MARIO_HOOHOO);\n    common_air_action_step(m, ACT_DOUBLE_JUMP_LAND, animation,\n                           AIR_STEP_CHECK_LEDGE_GRAB | AIR_STEP_CHECK_HANG);\n    return FALSE;\n}\n\ns32 act_triple_jump(struct MarioState *m) {\n    if (gSpecialTripleJump) {\n        return set_mario_action(m, ACT_SPECIAL_TRIPLE_JUMP, 0);\n    }\n\n    if (m->input & INPUT_B_PRESSED) {\n        return set_mario_action(m, ACT_DIVE, 0);\n    }\n\n    if (m->input & INPUT_Z_PRESSED) {\n        return set_mario_action(m, ACT_GROUND_POUND, 0);\n    }\n\n#ifndef VERSION_JP\n    play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, 0);\n#else\n    play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, SOUND_MARIO_YAHOO);\n#endif\n\n    common_air_action_step(m, ACT_TRIPLE_JUMP_LAND, MARIO_ANIM_TRIPLE_JUMP, 0);\n#if ENABLE_RUMBLE\n    if (m->action == ACT_TRIPLE_JUMP_LAND) {\n        queue_rumble_data(5, 40);\n    }\n#endif\n    play_flip_sounds(m, 2, 8, 20);\n    return FALSE;\n}\n\ns32 act_backflip(struct MarioState *m) {\n    if (m->input & INPUT_Z_PRESSED) {\n        return set_mario_action(m, ACT_GROUND_POUND, 0);\n    }\n\n    play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, SOUND_MARIO_YAH_WAH_HOO);\n    common_air_action_step(m, ACT_BACKFLIP_LAND, MARIO_ANIM_BACKFLIP, 0);\n#if ENABLE_RUMBLE\n    if (m->action == ACT_BACKFLIP_LAND) {\n        queue_rumble_data(5, 40);\n    }\n#endif\n    play_flip_sounds(m, 2, 3, 17);\n    return FALSE;\n}\n\ns32 act_freefall(struct MarioState *m) {\n    s32 animation;\n\n    if (m->input & INPUT_B_PRESSED) {\n        return set_mario_action(m, ACT_DIVE, 0);\n    }\n\n    if (m->input & INPUT_Z_PRESSED) {\n        return set_mario_action(m, ACT_GROUND_POUND, 0);\n    }\n\n    switch (m->actionArg) {\n        case 0:\n            animation = MARIO_ANIM_GENERAL_FALL;\n            break;\n        case 1:\n            animation = MARIO_ANIM_FALL_FROM_SLIDE;\n            break;\n        case 2:\n            animation = MARIO_ANIM_FALL_FROM_SLIDE_KICK;\n            break;\n    }\n\n    common_air_action_step(m, ACT_FREEFALL_LAND, animation, AIR_STEP_CHECK_LEDGE_GRAB);\n    return FALSE;\n}\n\ns32 act_hold_jump(struct MarioState *m) {\n    if (m->marioObj->oInteractStatus & INT_STATUS_MARIO_DROP_OBJECT) {\n        return drop_and_set_mario_action(m, ACT_FREEFALL, 0);\n    }\n\n    if ((m->input & INPUT_B_PRESSED) && !(m->heldObj->oInteractionSubtype & INT_SUBTYPE_HOLDABLE_NPC)) {\n        return set_mario_action(m, ACT_AIR_THROW, 0);\n    }\n\n    if (m->input & INPUT_Z_PRESSED) {\n        return drop_and_set_mario_action(m, ACT_GROUND_POUND, 0);\n    }\n\n    play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, 0);\n    common_air_action_step(m, ACT_HOLD_JUMP_LAND, MARIO_ANIM_JUMP_WITH_LIGHT_OBJ,\n                           AIR_STEP_CHECK_LEDGE_GRAB);\n    return FALSE;\n}\n\ns32 act_hold_freefall(struct MarioState *m) {\n    s32 animation;\n    if (m->actionArg == 0) {\n        animation = MARIO_ANIM_FALL_WITH_LIGHT_OBJ;\n    } else {\n        animation = MARIO_ANIM_FALL_FROM_SLIDING_WITH_LIGHT_OBJ;\n    }\n\n    if (m->marioObj->oInteractStatus & INT_STATUS_MARIO_DROP_OBJECT) {\n        return drop_and_set_mario_action(m, ACT_FREEFALL, 0);\n    }\n\n    if ((m->input & INPUT_B_PRESSED) && !(m->heldObj->oInteractionSubtype & INT_SUBTYPE_HOLDABLE_NPC)) {\n        return set_mario_action(m, ACT_AIR_THROW, 0);\n    }\n\n    if (m->input & INPUT_Z_PRESSED) {\n        return drop_and_set_mario_action(m, ACT_GROUND_POUND, 0);\n    }\n\n    common_air_action_step(m, ACT_HOLD_FREEFALL_LAND, animation, AIR_STEP_CHECK_LEDGE_GRAB);\n    return FALSE;\n}\n\ns32 act_side_flip(struct MarioState *m) {\n    if (m->input & INPUT_B_PRESSED) {\n        return set_mario_action(m, ACT_DIVE, 0);\n    }\n\n    if (m->input & INPUT_Z_PRESSED) {\n        return set_mario_action(m, ACT_GROUND_POUND, 0);\n    }\n\n    play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, 0);\n\n    if (common_air_action_step(m, ACT_SIDE_FLIP_LAND, MARIO_ANIM_SLIDEFLIP, AIR_STEP_CHECK_LEDGE_GRAB)\n        != AIR_STEP_GRABBED_LEDGE) {\n        m->marioObj->header.gfx.angle[1] += 0x8000;\n    }\n\n    // This must be one line to match on -O2\n    // clang-format off\n    if (m->marioObj->header.gfx.animInfo.animFrame == 6) play_sound(SOUND_ACTION_SIDE_FLIP_UNK, m->marioObj->header.gfx.cameraToObject);\n    // clang-format on\n    return FALSE;\n}\n\ns32 act_wall_kick_air(struct MarioState *m) {\n    if (m->input & INPUT_B_PRESSED) {\n        return set_mario_action(m, ACT_DIVE, 0);\n    }\n\n    if (m->input & INPUT_Z_PRESSED) {\n        return set_mario_action(m, ACT_GROUND_POUND, 0);\n    }\n\n    play_mario_jump_sound(m);\n    common_air_action_step(m, ACT_JUMP_LAND, MARIO_ANIM_SLIDEJUMP, AIR_STEP_CHECK_LEDGE_GRAB);\n    return FALSE;\n}\n\ns32 act_long_jump(struct MarioState *m) {\n    s32 animation;\n    if (!m->marioObj->oMarioLongJumpIsSlow) {\n        animation = MARIO_ANIM_FAST_LONGJUMP;\n    } else {\n        animation = MARIO_ANIM_SLOW_LONGJUMP;\n    }\n\n    play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, SOUND_MARIO_YAHOO);\n\n    if (m->floor->type == SURFACE_VERTICAL_WIND && m->actionState == 0) {\n        play_sound(SOUND_MARIO_HERE_WE_GO, m->marioObj->header.gfx.cameraToObject);\n        m->actionState = 1;\n    }\n\n    common_air_action_step(m, ACT_LONG_JUMP_LAND, animation, AIR_STEP_CHECK_LEDGE_GRAB);\n#if ENABLE_RUMBLE\n    if (m->action == ACT_LONG_JUMP_LAND) {\n        queue_rumble_data(5, 40);\n    }\n#endif\n    return FALSE;\n}\n\ns32 act_riding_shell_air(struct MarioState *m) {\n    play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, 0);\n    set_mario_animation(m, MARIO_ANIM_JUMP_RIDING_SHELL);\n\n    update_air_without_turn(m);\n\n    switch (perform_air_step(m, 0)) {\n        case AIR_STEP_LANDED:\n            set_mario_action(m, ACT_RIDING_SHELL_GROUND, 1);\n            break;\n\n        case AIR_STEP_HIT_WALL:\n            mario_set_forward_vel(m, 0.0f);\n            break;\n\n        case AIR_STEP_HIT_LAVA_WALL:\n            lava_boost_on_wall(m);\n            break;\n    }\n\n    m->marioObj->header.gfx.pos[1] += 42.0f;\n    return FALSE;\n}\n\ns32 act_twirling(struct MarioState *m) {\n    s16 startTwirlYaw = m->twirlYaw;\n    s16 yawVelTarget;\n\n    if (m->input & INPUT_A_DOWN) {\n        yawVelTarget = 0x2000;\n    } else {\n        yawVelTarget = 0x1800;\n    }\n\n    m->angleVel[1] = approach_s32(m->angleVel[1], yawVelTarget, 0x200, 0x200);\n    m->twirlYaw += m->angleVel[1];\n\n    set_mario_animation(m, m->actionArg == 0 ? MARIO_ANIM_START_TWIRL : MARIO_ANIM_TWIRL);\n    if (is_anim_past_end(m)) {\n        m->actionArg = 1;\n    }\n\n    if (startTwirlYaw > m->twirlYaw) {\n        play_sound(SOUND_ACTION_TWIRL, m->marioObj->header.gfx.cameraToObject);\n    }\n\n    update_lava_boost_or_twirling(m);\n\n    switch (perform_air_step(m, 0)) {\n        case AIR_STEP_LANDED:\n            set_mario_action(m, ACT_TWIRL_LAND, 0);\n            break;\n\n        case AIR_STEP_HIT_WALL:\n            mario_bonk_reflection(m, FALSE);\n            break;\n\n        case AIR_STEP_HIT_LAVA_WALL:\n            lava_boost_on_wall(m);\n            break;\n    }\n\n    m->marioObj->header.gfx.angle[1] += m->twirlYaw;\n#if ENABLE_RUMBLE\n    reset_rumble_timers();\n#endif\n    return FALSE;\n}\n\ns32 act_dive(struct MarioState *m) {\n    if (m->actionArg == 0) {\n        play_mario_sound(m, SOUND_ACTION_THROW, SOUND_MARIO_HOOHOO);\n    } else {\n        play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, 0);\n    }\n\n    set_mario_animation(m, MARIO_ANIM_DIVE);\n    if (mario_check_object_grab(m)) {\n        mario_grab_used_object(m);\n        m->marioBodyState->grabPos = GRAB_POS_LIGHT_OBJ;\n        if (m->action != ACT_DIVE) {\n            return TRUE;\n        }\n    }\n\n    update_air_without_turn(m);\n\n    switch (perform_air_step(m, 0)) {\n        case AIR_STEP_NONE:\n            if (m->vel[1] < 0.0f && m->faceAngle[0] > -0x2AAA) {\n                m->faceAngle[0] -= 0x200;\n                if (m->faceAngle[0] < -0x2AAA) {\n                    m->faceAngle[0] = -0x2AAA;\n                }\n            }\n            m->marioObj->header.gfx.angle[0] = -m->faceAngle[0];\n            break;\n\n        case AIR_STEP_LANDED:\n            if (should_get_stuck_in_ground(m) && m->faceAngle[0] == -0x2AAA) {\n#if ENABLE_RUMBLE\n                queue_rumble_data(5, 80);\n#endif\n#ifdef VERSION_JP\n                play_sound(SOUND_MARIO_OOOF, m->marioObj->header.gfx.cameraToObject);\n#else\n                play_sound(SOUND_MARIO_OOOF2, m->marioObj->header.gfx.cameraToObject);\n#endif\n                m->particleFlags |= PARTICLE_MIST_CIRCLE;\n                drop_and_set_mario_action(m, ACT_HEAD_STUCK_IN_GROUND, 0);\n            } else if (!check_fall_damage(m, ACT_HARD_FORWARD_GROUND_KB)) {\n                if (m->heldObj == NULL) {\n                    set_mario_action(m, ACT_DIVE_SLIDE, 0);\n                } else {\n                    set_mario_action(m, ACT_DIVE_PICKING_UP, 0);\n                }\n            }\n            m->faceAngle[0] = 0;\n            break;\n\n        case AIR_STEP_HIT_WALL:\n            mario_bonk_reflection(m, TRUE);\n            m->faceAngle[0] = 0;\n\n            if (m->vel[1] > 0.0f) {\n                m->vel[1] = 0.0f;\n            }\n\n            m->particleFlags |= PARTICLE_VERTICAL_STAR;\n            drop_and_set_mario_action(m, ACT_BACKWARD_AIR_KB, 0);\n            break;\n\n        case AIR_STEP_HIT_LAVA_WALL:\n            lava_boost_on_wall(m);\n            break;\n    }\n\n    return FALSE;\n}\n\ns32 act_air_throw(struct MarioState *m) {\n    if (++(m->actionTimer) == 4) {\n        mario_throw_held_object(m);\n    }\n\n    play_sound_if_no_flag(m, SOUND_MARIO_WAH2, MARIO_MARIO_SOUND_PLAYED);\n    set_mario_animation(m, MARIO_ANIM_THROW_LIGHT_OBJECT);\n    update_air_without_turn(m);\n\n    switch (perform_air_step(m, 0)) {\n        case AIR_STEP_LANDED:\n            if (!check_fall_damage_or_get_stuck(m, ACT_HARD_BACKWARD_GROUND_KB)) {\n                m->action = ACT_AIR_THROW_LAND;\n            }\n            break;\n\n        case AIR_STEP_HIT_WALL:\n            mario_set_forward_vel(m, 0.0f);\n            break;\n\n        case AIR_STEP_HIT_LAVA_WALL:\n            lava_boost_on_wall(m);\n            break;\n    }\n\n    return FALSE;\n}\n\ns32 act_water_jump(struct MarioState *m) {\n    if (m->forwardVel < 15.0f) {\n        mario_set_forward_vel(m, 15.0f);\n    }\n\n    play_mario_sound(m, SOUND_ACTION_UNKNOWN432, 0);\n    set_mario_animation(m, MARIO_ANIM_SINGLE_JUMP);\n\n    switch (perform_air_step(m, AIR_STEP_CHECK_LEDGE_GRAB)) {\n        case AIR_STEP_LANDED:\n            set_mario_action(m, ACT_JUMP_LAND, 0);\n            set_camera_mode(m->area->camera, m->area->camera->defMode, 1);\n            break;\n\n        case AIR_STEP_HIT_WALL:\n            mario_set_forward_vel(m, 15.0f);\n            break;\n\n        case AIR_STEP_GRABBED_LEDGE:\n#ifndef VERSION_JP\n            set_mario_animation(m, MARIO_ANIM_IDLE_ON_LEDGE);\n#endif\n            set_mario_action(m, ACT_LEDGE_GRAB, 0);\n            set_camera_mode(m->area->camera, m->area->camera->defMode, 1);\n            break;\n\n        case AIR_STEP_HIT_LAVA_WALL:\n            lava_boost_on_wall(m);\n            break;\n    }\n\n    return FALSE;\n}\n\ns32 act_hold_water_jump(struct MarioState *m) {\n    if (m->marioObj->oInteractStatus & INT_STATUS_MARIO_DROP_OBJECT) {\n        return drop_and_set_mario_action(m, ACT_FREEFALL, 0);\n    }\n\n    if (m->forwardVel < 15.0f) {\n        mario_set_forward_vel(m, 15.0f);\n    }\n\n    play_mario_sound(m, SOUND_ACTION_UNKNOWN432, 0);\n    set_mario_animation(m, MARIO_ANIM_JUMP_WITH_LIGHT_OBJ);\n\n    switch (perform_air_step(m, 0)) {\n        case AIR_STEP_LANDED:\n            set_mario_action(m, ACT_HOLD_JUMP_LAND, 0);\n            set_camera_mode(m->area->camera, m->area->camera->defMode, 1);\n            break;\n\n        case AIR_STEP_HIT_WALL:\n            mario_set_forward_vel(m, 15.0f);\n            break;\n\n        case AIR_STEP_HIT_LAVA_WALL:\n            lava_boost_on_wall(m);\n            break;\n    }\n\n    return FALSE;\n}\n\ns32 act_steep_jump(struct MarioState *m) {\n    if (m->input & INPUT_B_PRESSED) {\n        return set_mario_action(m, ACT_DIVE, 0);\n    }\n\n    play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, 0);\n    mario_set_forward_vel(m, 0.98f * m->forwardVel);\n\n    switch (perform_air_step(m, 0)) {\n        case AIR_STEP_LANDED:\n            if (!check_fall_damage_or_get_stuck(m, ACT_HARD_BACKWARD_GROUND_KB)) {\n                m->faceAngle[0] = 0;\n                set_mario_action(m, m->forwardVel < 0.0f ? ACT_BEGIN_SLIDING : ACT_JUMP_LAND, 0);\n            }\n            break;\n\n        case AIR_STEP_HIT_WALL:\n            mario_set_forward_vel(m, 0.0f);\n            break;\n\n        case AIR_STEP_HIT_LAVA_WALL:\n            lava_boost_on_wall(m);\n            break;\n    }\n\n    set_mario_animation(m, MARIO_ANIM_SINGLE_JUMP);\n    m->marioObj->header.gfx.angle[1] = m->marioObj->oMarioSteepJumpYaw;\n    return FALSE;\n}\n\ns32 act_ground_pound(struct MarioState *m) {\n    u32 stepResult;\n    f32 yOffset;\n\n    play_sound_if_no_flag(m, SOUND_ACTION_THROW, MARIO_ACTION_SOUND_PLAYED);\n\n    if (m->actionState == 0) {\n        if (m->actionTimer < 10) {\n            yOffset = 20 - 2 * m->actionTimer;\n            if (m->pos[1] + yOffset + 160.0f < m->ceilHeight) {\n                m->pos[1] += yOffset;\n                m->peakHeight = m->pos[1];\n                vec3f_copy(m->marioObj->header.gfx.pos, m->pos);\n            }\n        }\n\n        m->vel[1] = -50.0f;\n        mario_set_forward_vel(m, 0.0f);\n\n        set_mario_animation(m, m->actionArg == 0 ? MARIO_ANIM_START_GROUND_POUND\n                                                 : MARIO_ANIM_TRIPLE_JUMP_GROUND_POUND);\n        if (m->actionTimer == 0) {\n            play_sound(SOUND_ACTION_SPIN, m->marioObj->header.gfx.cameraToObject);\n        }\n\n        m->actionTimer++;\n        if (m->actionTimer >= m->marioObj->header.gfx.animInfo.curAnim->loopEnd + 4) {\n            play_sound(SOUND_MARIO_GROUND_POUND_WAH, m->marioObj->header.gfx.cameraToObject);\n            m->actionState = 1;\n        }\n    } else {\n        set_mario_animation(m, MARIO_ANIM_GROUND_POUND);\n\n        stepResult = perform_air_step(m, 0);\n        if (stepResult == AIR_STEP_LANDED) {\n            if (should_get_stuck_in_ground(m)) {\n#if ENABLE_RUMBLE\n                queue_rumble_data(5, 80);\n#endif\n#ifdef VERSION_JP\n                play_sound(SOUND_MARIO_OOOF, m->marioObj->header.gfx.cameraToObject);\n#else\n                play_sound(SOUND_MARIO_OOOF2, m->marioObj->header.gfx.cameraToObject);\n#endif\n                m->particleFlags |= PARTICLE_MIST_CIRCLE;\n                set_mario_action(m, ACT_BUTT_STUCK_IN_GROUND, 0);\n            } else {\n                play_mario_heavy_landing_sound(m, SOUND_ACTION_TERRAIN_HEAVY_LANDING);\n                if (!check_fall_damage(m, ACT_HARD_BACKWARD_GROUND_KB)) {\n                    m->particleFlags |= PARTICLE_MIST_CIRCLE | PARTICLE_HORIZONTAL_STAR;\n                    set_mario_action(m, ACT_GROUND_POUND_LAND, 0);\n                }\n            }\n            set_camera_shake_from_hit(SHAKE_GROUND_POUND);\n        } else if (stepResult == AIR_STEP_HIT_WALL) {\n            mario_set_forward_vel(m, -16.0f);\n            if (m->vel[1] > 0.0f) {\n                m->vel[1] = 0.0f;\n            }\n\n            m->particleFlags |= PARTICLE_VERTICAL_STAR;\n            set_mario_action(m, ACT_BACKWARD_AIR_KB, 0);\n        }\n    }\n\n    return FALSE;\n}\n\ns32 act_burning_jump(struct MarioState *m) {\n    play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, m->actionArg == 0 ? 0 : -1);\n    mario_set_forward_vel(m, m->forwardVel);\n\n    if (perform_air_step(m, 0) == AIR_STEP_LANDED) {\n        play_mario_landing_sound(m, SOUND_ACTION_TERRAIN_LANDING);\n        set_mario_action(m, ACT_BURNING_GROUND, 0);\n    }\n\n    set_mario_animation(m, m->actionArg == 0 ? MARIO_ANIM_SINGLE_JUMP : MARIO_ANIM_FIRE_LAVA_BURN);\n    m->particleFlags |= PARTICLE_FIRE;\n    play_sound(SOUND_MOVING_LAVA_BURN, m->marioObj->header.gfx.cameraToObject);\n\n    m->marioObj->oMarioBurnTimer += 3;\n\n    m->health -= 10;\n    if (m->health < 0x100) {\n        m->health = 0xFF;\n    }\n#if ENABLE_RUMBLE\n    reset_rumble_timers();\n#endif\n    return FALSE;\n}\n\ns32 act_burning_fall(struct MarioState *m) {\n    mario_set_forward_vel(m, m->forwardVel);\n\n    if (perform_air_step(m, 0) == AIR_STEP_LANDED) {\n        play_mario_landing_sound(m, SOUND_ACTION_TERRAIN_LANDING);\n        set_mario_action(m, ACT_BURNING_GROUND, 0);\n    }\n\n    set_mario_animation(m, MARIO_ANIM_GENERAL_FALL);\n    m->particleFlags |= PARTICLE_FIRE;\n    m->marioObj->oMarioBurnTimer += 3;\n\n    m->health -= 10;\n    if (m->health < 0x100) {\n        m->health = 0xFF;\n    }\n#if ENABLE_RUMBLE\n    reset_rumble_timers();\n#endif\n    return FALSE;\n}\n\ns32 act_crazy_box_bounce(struct MarioState *m) {\n    f32 minSpeed;\n\n    if (m->actionTimer == 0) {\n        switch (m->actionArg) {\n            case 0:\n                m->vel[1] = 45.0f;\n                minSpeed = 32.0f;\n                break;\n\n            case 1:\n                m->vel[1] = 60.0f;\n                minSpeed = 36.0f;\n                break;\n\n            case 2:\n                m->vel[1] = 100.0f;\n                minSpeed = 48.0f;\n                break;\n        }\n\n        play_sound(minSpeed < 40.0f ? SOUND_GENERAL_BOING1 : SOUND_GENERAL_BOING2,\n                   m->marioObj->header.gfx.cameraToObject);\n\n        if (m->forwardVel < minSpeed) {\n            mario_set_forward_vel(m, minSpeed);\n        }\n\n        m->actionTimer = 1;\n    }\n\n    play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, 0);\n    set_mario_animation(m, MARIO_ANIM_DIVE);\n\n    update_air_without_turn(m);\n\n    switch (perform_air_step(m, 0)) {\n        case AIR_STEP_LANDED:\n            if (m->actionArg < 2) {\n                set_mario_action(m, ACT_CRAZY_BOX_BOUNCE, m->actionArg + 1);\n            } else {\n                m->heldObj->oInteractStatus = INT_STATUS_STOP_RIDING;\n                m->heldObj = NULL;\n                set_mario_action(m, ACT_STOMACH_SLIDE, 0);\n            }\n#if ENABLE_RUMBLE\n            queue_rumble_data(5, 80);\n#endif\n            m->particleFlags |= PARTICLE_MIST_CIRCLE;\n            break;\n\n        case AIR_STEP_HIT_WALL:\n            mario_bonk_reflection(m, FALSE);\n            break;\n\n        case AIR_STEP_HIT_LAVA_WALL:\n            lava_boost_on_wall(m);\n            break;\n    }\n\n    m->marioObj->header.gfx.angle[0] = atan2s(m->forwardVel, -m->vel[1]);\n    return FALSE;\n}\n\nu32 common_air_knockback_step(struct MarioState *m, u32 landAction, u32 hardFallAction, s32 animation,\n                              f32 speed) {\n    u32 stepResult;\n\n    mario_set_forward_vel(m, speed);\n\n    stepResult = perform_air_step(m, 0);\n    switch (stepResult) {\n        case AIR_STEP_NONE:\n            set_mario_animation(m, animation);\n            break;\n\n        case AIR_STEP_LANDED:\n#if ENABLE_RUMBLE\n            if (m->action != ACT_SOFT_BONK) {\n                queue_rumble_data(5, 40);\n            }\n#endif\n            if (!check_fall_damage_or_get_stuck(m, hardFallAction)) {\n#ifndef VERSION_JP\n                if (m->action == ACT_THROWN_FORWARD || m->action == ACT_THROWN_BACKWARD) {\n                    set_mario_action(m, landAction, m->hurtCounter);\n                } else {\n                    set_mario_action(m, landAction, m->actionArg);\n                }\n#else\n                set_mario_action(m, landAction, m->actionArg);\n#endif\n            }\n            break;\n\n        case AIR_STEP_HIT_WALL:\n            set_mario_animation(m, MARIO_ANIM_BACKWARD_AIR_KB);\n            mario_bonk_reflection(m, FALSE);\n\n            if (m->vel[1] > 0.0f) {\n                m->vel[1] = 0.0f;\n            }\n\n            mario_set_forward_vel(m, -speed);\n            break;\n\n        case AIR_STEP_HIT_LAVA_WALL:\n            lava_boost_on_wall(m);\n            break;\n    }\n\n    return stepResult;\n}\n\ns32 check_wall_kick(struct MarioState *m) {\n    if ((m->input & INPUT_A_PRESSED) && m->wallKickTimer != 0 && m->prevAction == ACT_AIR_HIT_WALL) {\n        m->faceAngle[1] += 0x8000;\n        return set_mario_action(m, ACT_WALL_KICK_AIR, 0);\n    }\n\n    return FALSE;\n}\n\ns32 act_backward_air_kb(struct MarioState *m) {\n    if (check_wall_kick(m)) {\n        return TRUE;\n    }\n\n#ifndef VERSION_JP\n    play_knockback_sound(m);\n#else\n    play_sound_if_no_flag(m, SOUND_MARIO_UH, MARIO_MARIO_SOUND_PLAYED);\n#endif\n    common_air_knockback_step(m, ACT_BACKWARD_GROUND_KB, ACT_HARD_BACKWARD_GROUND_KB, 0x0002, -16.0f);\n    return FALSE;\n}\n\ns32 act_forward_air_kb(struct MarioState *m) {\n    if (check_wall_kick(m)) {\n        return TRUE;\n    }\n\n#ifndef VERSION_JP\n    play_knockback_sound(m);\n#else\n    play_sound_if_no_flag(m, SOUND_MARIO_UH, MARIO_MARIO_SOUND_PLAYED);\n#endif\n    common_air_knockback_step(m, ACT_FORWARD_GROUND_KB, ACT_HARD_FORWARD_GROUND_KB, 0x002D, 16.0f);\n    return FALSE;\n}\n\ns32 act_hard_backward_air_kb(struct MarioState *m) {\n#ifndef VERSION_JP\n    play_knockback_sound(m);\n#else\n    play_sound_if_no_flag(m, SOUND_MARIO_UH, MARIO_MARIO_SOUND_PLAYED);\n#endif\n    common_air_knockback_step(m, ACT_HARD_BACKWARD_GROUND_KB, ACT_HARD_BACKWARD_GROUND_KB, 0x0002,\n                              -16.0f);\n    return FALSE;\n}\n\ns32 act_hard_forward_air_kb(struct MarioState *m) {\n#ifndef VERSION_JP\n    play_knockback_sound(m);\n#else\n    play_sound_if_no_flag(m, SOUND_MARIO_UH, MARIO_MARIO_SOUND_PLAYED);\n#endif\n    common_air_knockback_step(m, ACT_HARD_FORWARD_GROUND_KB, ACT_HARD_FORWARD_GROUND_KB, 0x002D, 16.0f);\n    return FALSE;\n}\n\ns32 act_thrown_backward(struct MarioState *m) {\n    u32 landAction;\n    if (m->actionArg != 0) {\n        landAction = ACT_HARD_BACKWARD_GROUND_KB;\n    } else {\n        landAction = ACT_BACKWARD_GROUND_KB;\n    }\n\n    play_sound_if_no_flag(m, SOUND_MARIO_WAAAOOOW, MARIO_MARIO_SOUND_PLAYED);\n\n    common_air_knockback_step(m, landAction, ACT_HARD_BACKWARD_GROUND_KB, 0x0002, m->forwardVel);\n\n    m->forwardVel *= 0.98f;\n    return FALSE;\n}\n\ns32 act_thrown_forward(struct MarioState *m) {\n    s16 pitch;\n\n    u32 landAction;\n    if (m->actionArg != 0) {\n        landAction = ACT_HARD_FORWARD_GROUND_KB;\n    } else {\n        landAction = ACT_FORWARD_GROUND_KB;\n    }\n\n    play_sound_if_no_flag(m, SOUND_MARIO_WAAAOOOW, MARIO_MARIO_SOUND_PLAYED);\n\n    if (common_air_knockback_step(m, landAction, ACT_HARD_FORWARD_GROUND_KB, 0x002D, m->forwardVel)\n        == AIR_STEP_NONE) {\n        pitch = atan2s(m->forwardVel, -m->vel[1]);\n        if (pitch > 0x1800) {\n            pitch = 0x1800;\n        }\n\n        m->marioObj->header.gfx.angle[0] = pitch + 0x1800;\n    }\n\n    m->forwardVel *= 0.98f;\n    return FALSE;\n}\n\ns32 act_soft_bonk(struct MarioState *m) {\n    if (check_wall_kick(m)) {\n        return TRUE;\n    }\n\n#ifndef VERSION_JP\n    play_knockback_sound(m);\n#else\n    play_sound_if_no_flag(m, SOUND_MARIO_UH, MARIO_MARIO_SOUND_PLAYED);\n#endif\n\n    common_air_knockback_step(m, ACT_FREEFALL_LAND, ACT_HARD_BACKWARD_GROUND_KB, 0x0056, m->forwardVel);\n    return FALSE;\n}\n\ns32 act_getting_blown(struct MarioState *m) {\n    if (m->actionState == 0) {\n        if (m->forwardVel > -60.0f) {\n            m->forwardVel -= 6.0f;\n        } else {\n            m->actionState = 1;\n        }\n    } else {\n        if (m->forwardVel < -16.0f) {\n            m->forwardVel += 0.8f;\n        }\n\n        if (m->vel[1] < 0.0f && m->gettingBlownGravity < 4.0f) {\n            m->gettingBlownGravity += 0.05f;\n        }\n    }\n\n    if (++(m->actionTimer) == 20) {\n        mario_blow_off_cap(m, 50.0f);\n    }\n\n    mario_set_forward_vel(m, m->forwardVel);\n#ifdef VERSION_JP\n    play_sound_if_no_flag(m, SOUND_MARIO_UH, MARIO_MARIO_SOUND_PLAYED);\n#endif\n    set_mario_animation(m, MARIO_ANIM_BACKWARD_AIR_KB);\n\n    switch (perform_air_step(m, 0)) {\n        case AIR_STEP_LANDED:\n            set_mario_action(m, ACT_HARD_BACKWARD_AIR_KB, 0);\n            break;\n\n        case AIR_STEP_HIT_WALL:\n            set_mario_animation(m, MARIO_ANIM_AIR_FORWARD_KB);\n            mario_bonk_reflection(m, FALSE);\n\n            if (m->vel[1] > 0.0f) {\n                m->vel[1] = 0.0f;\n            }\n\n            mario_set_forward_vel(m, -m->forwardVel);\n            break;\n    }\n\n    return FALSE;\n}\n\ns32 act_air_hit_wall(struct MarioState *m) {\n    if (m->heldObj != NULL) {\n        mario_drop_held_object(m);\n    }\n\n    if (++(m->actionTimer) <= 2) {\n        if (m->input & INPUT_A_PRESSED) {\n            m->vel[1] = 52.0f;\n            m->faceAngle[1] += 0x8000;\n            return set_mario_action(m, ACT_WALL_KICK_AIR, 0);\n        }\n    } else if (m->forwardVel >= 38.0f) {\n        m->wallKickTimer = 5;\n        if (m->vel[1] > 0.0f) {\n            m->vel[1] = 0.0f;\n        }\n\n        m->particleFlags |= PARTICLE_VERTICAL_STAR;\n        return set_mario_action(m, ACT_BACKWARD_AIR_KB, 0);\n    } else {\n        m->wallKickTimer = 5;\n        if (m->vel[1] > 0.0f) {\n            m->vel[1] = 0.0f;\n        }\n\n        if (m->forwardVel > 8.0f) {\n            mario_set_forward_vel(m, -8.0f);\n        }\n        return set_mario_action(m, ACT_SOFT_BONK, 0);\n    }\n\n#ifdef AVOID_UB\n    return\n#endif\n    set_mario_animation(m, MARIO_ANIM_START_WALLKICK);\n\n    //! Missing return statement. The returned value is the result of the call\n    // to set_mario_animation. In practice, this value is nonzero.\n    // This results in this action \"cancelling\" into itself. It is supposed to\n    // execute on two frames, but instead it executes twice on the same frame.\n    // This results in firsties only being possible for a single frame, instead\n    // of two.\n}\n\ns32 act_forward_rollout(struct MarioState *m) {\n    if (m->actionState == 0) {\n        m->vel[1] = 30.0f;\n        m->actionState = 1;\n    }\n\n    play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, 0);\n\n    update_air_without_turn(m);\n\n    switch (perform_air_step(m, 0)) {\n        case AIR_STEP_NONE:\n            if (m->actionState == 1) {\n                if (set_mario_animation(m, MARIO_ANIM_FORWARD_SPINNING) == 4) {\n                    play_sound(SOUND_ACTION_SPIN, m->marioObj->header.gfx.cameraToObject);\n                }\n            } else {\n                set_mario_animation(m, MARIO_ANIM_GENERAL_FALL);\n            }\n            break;\n\n        case AIR_STEP_LANDED:\n            set_mario_action(m, ACT_FREEFALL_LAND_STOP, 0);\n            play_mario_landing_sound(m, SOUND_ACTION_TERRAIN_LANDING);\n            break;\n\n        case AIR_STEP_HIT_WALL:\n            mario_set_forward_vel(m, 0.0f);\n            break;\n\n        case AIR_STEP_HIT_LAVA_WALL:\n            lava_boost_on_wall(m);\n            break;\n    }\n\n    if (m->actionState == 1 && is_anim_past_end(m)) {\n        m->actionState = 2;\n    }\n    return FALSE;\n}\n\ns32 act_backward_rollout(struct MarioState *m) {\n    if (m->actionState == 0) {\n        m->vel[1] = 30.0f;\n        m->actionState = 1;\n    }\n\n    play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, 0);\n\n    update_air_without_turn(m);\n\n    switch (perform_air_step(m, 0)) {\n        case AIR_STEP_NONE:\n            if (m->actionState == 1) {\n                if (set_mario_animation(m, MARIO_ANIM_BACKWARD_SPINNING) == 4) {\n                    play_sound(SOUND_ACTION_SPIN, m->marioObj->header.gfx.cameraToObject);\n                }\n            } else {\n                set_mario_animation(m, MARIO_ANIM_GENERAL_FALL);\n            }\n            break;\n\n        case AIR_STEP_LANDED:\n            set_mario_action(m, ACT_FREEFALL_LAND_STOP, 0);\n            play_mario_landing_sound(m, SOUND_ACTION_TERRAIN_LANDING);\n            break;\n\n        case AIR_STEP_HIT_WALL:\n            mario_set_forward_vel(m, 0.0f);\n            break;\n\n        case AIR_STEP_HIT_LAVA_WALL:\n            lava_boost_on_wall(m);\n            break;\n    }\n\n    if (m->actionState == 1 && m->marioObj->header.gfx.animInfo.animFrame == 2) {\n        m->actionState = 2;\n    }\n    return FALSE;\n}\n\ns32 act_butt_slide_air(struct MarioState *m) {\n    if (++(m->actionTimer) > 30 && m->pos[1] - m->floorHeight > 500.0f) {\n        return set_mario_action(m, ACT_FREEFALL, 1);\n    }\n\n    update_air_with_turn(m);\n\n    switch (perform_air_step(m, 0)) {\n        case AIR_STEP_LANDED:\n            if (m->actionState == 0 && m->vel[1] < 0.0f && m->floor->normal.y >= 0.9848077f) {\n                m->vel[1] = -m->vel[1] / 2.0f;\n                m->actionState = 1;\n            } else {\n                set_mario_action(m, ACT_BUTT_SLIDE, 0);\n            }\n            play_mario_landing_sound(m, SOUND_ACTION_TERRAIN_LANDING);\n            break;\n\n        case AIR_STEP_HIT_WALL:\n            if (m->vel[1] > 0.0f) {\n                m->vel[1] = 0.0f;\n            }\n            m->particleFlags |= PARTICLE_VERTICAL_STAR;\n            set_mario_action(m, ACT_BACKWARD_AIR_KB, 0);\n            break;\n\n        case AIR_STEP_HIT_LAVA_WALL:\n            lava_boost_on_wall(m);\n            break;\n    }\n\n    set_mario_animation(m, MARIO_ANIM_SLIDE);\n    return FALSE;\n}\n\ns32 act_hold_butt_slide_air(struct MarioState *m) {\n    if (m->marioObj->oInteractStatus & INT_STATUS_MARIO_DROP_OBJECT) {\n        return drop_and_set_mario_action(m, ACT_HOLD_FREEFALL, 1);\n    }\n\n    if (++m->actionTimer > 30 && m->pos[1] - m->floorHeight > 500.0f) {\n        return set_mario_action(m, ACT_HOLD_FREEFALL, 1);\n    }\n\n    update_air_with_turn(m);\n\n    switch (perform_air_step(m, 0)) {\n        case AIR_STEP_LANDED:\n            if (m->actionState == 0 && m->vel[1] < 0.0f && m->floor->normal.y >= 0.9848077f) {\n                m->vel[1] = -m->vel[1] / 2.0f;\n                m->actionState = 1;\n            } else {\n                set_mario_action(m, ACT_HOLD_BUTT_SLIDE, 0);\n            }\n            play_mario_landing_sound(m, SOUND_ACTION_TERRAIN_LANDING);\n            break;\n\n        case AIR_STEP_HIT_WALL:\n            if (m->vel[1] > 0.0f) {\n                m->vel[1] = 0.0f;\n            }\n\n            mario_drop_held_object(m);\n            m->particleFlags |= PARTICLE_VERTICAL_STAR;\n            set_mario_action(m, ACT_BACKWARD_AIR_KB, 0);\n            break;\n\n        case AIR_STEP_HIT_LAVA_WALL:\n            lava_boost_on_wall(m);\n            break;\n    }\n\n    set_mario_animation(m, MARIO_ANIM_SLIDING_ON_BOTTOM_WITH_LIGHT_OBJ);\n    return FALSE;\n}\n\ns32 act_lava_boost(struct MarioState *m) {\n#if ENABLE_RUMBLE\n    if (!(m->flags & MARIO_MARIO_SOUND_PLAYED)) {\n#endif\n        play_sound_if_no_flag(m, SOUND_MARIO_ON_FIRE, MARIO_MARIO_SOUND_PLAYED);\n#if ENABLE_RUMBLE\n        queue_rumble_data(5, 80);\n    }\n#endif\n\n    if (!(m->input & INPUT_NONZERO_ANALOG)) {\n        m->forwardVel = approach_f32(m->forwardVel, 0.0f, 0.35f, 0.35f);\n    }\n\n    update_lava_boost_or_twirling(m);\n\n    switch (perform_air_step(m, 0)) {\n        case AIR_STEP_LANDED:\n            if (m->floor->type == SURFACE_BURNING) {\n                m->actionState = 0;\n                if (!(m->flags & MARIO_METAL_CAP)) {\n                    m->hurtCounter += (m->flags & MARIO_CAP_ON_HEAD) ? 12 : 18;\n                }\n                m->vel[1] = 84.0f;\n                play_sound(SOUND_MARIO_ON_FIRE, m->marioObj->header.gfx.cameraToObject);\n#if ENABLE_RUMBLE\n                queue_rumble_data(5, 80);\n#endif\n            } else {\n                play_mario_heavy_landing_sound(m, SOUND_ACTION_TERRAIN_BODY_HIT_GROUND);\n                if (m->actionState < 2 && m->vel[1] < 0.0f) {\n                    m->vel[1] = -m->vel[1] * 0.4f;\n                    mario_set_forward_vel(m, m->forwardVel * 0.5f);\n                    m->actionState++;\n                } else {\n                    set_mario_action(m, ACT_LAVA_BOOST_LAND, 0);\n                }\n            }\n            break;\n\n        case AIR_STEP_HIT_WALL:\n            mario_bonk_reflection(m, FALSE);\n            break;\n\n        case AIR_STEP_HIT_LAVA_WALL:\n            lava_boost_on_wall(m);\n            break;\n    }\n\n    set_mario_animation(m, MARIO_ANIM_FIRE_LAVA_BURN);\n    if ((m->area->terrainType & TERRAIN_MASK) != TERRAIN_SNOW && !(m->flags & MARIO_METAL_CAP)\n        && m->vel[1] > 0.0f) {\n        m->particleFlags |= PARTICLE_FIRE;\n        if (m->actionState == 0) {\n            play_sound(SOUND_MOVING_LAVA_BURN, m->marioObj->header.gfx.cameraToObject);\n        }\n    }\n\n    if (m->health < 0x100) {\n        level_trigger_warp(m, WARP_OP_DEATH);\n    }\n\n    m->marioBodyState->eyeState = MARIO_EYES_DEAD;\n#if ENABLE_RUMBLE\n    reset_rumble_timers();\n#endif\n    return FALSE;\n}\n\ns32 act_slide_kick(struct MarioState *m) {\n    if (m->actionState == 0 && m->actionTimer == 0) {\n        play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, SOUND_MARIO_HOOHOO);\n        set_mario_animation(m, MARIO_ANIM_SLIDE_KICK);\n    }\n\n    if (++(m->actionTimer) > 30 && m->pos[1] - m->floorHeight > 500.0f) {\n        return set_mario_action(m, ACT_FREEFALL, 2);\n    }\n\n    update_air_without_turn(m);\n\n    switch (perform_air_step(m, 0)) {\n        case AIR_STEP_NONE:\n            if (m->actionState == 0) {\n                m->marioObj->header.gfx.angle[0] = atan2s(m->forwardVel, -m->vel[1]);\n                if (m->marioObj->header.gfx.angle[0] > 0x1800) {\n                    m->marioObj->header.gfx.angle[0] = 0x1800;\n                }\n            }\n            break;\n\n        case AIR_STEP_LANDED:\n            if (m->actionState == 0 && m->vel[1] < 0.0f) {\n                m->vel[1] = -m->vel[1] / 2.0f;\n                m->actionState = 1;\n                m->actionTimer = 0;\n            } else {\n                set_mario_action(m, ACT_SLIDE_KICK_SLIDE, 0);\n            }\n            play_mario_landing_sound(m, SOUND_ACTION_TERRAIN_LANDING);\n            break;\n\n        case AIR_STEP_HIT_WALL:\n            if (m->vel[1] > 0.0f) {\n                m->vel[1] = 0.0f;\n            }\n\n            m->particleFlags |= PARTICLE_VERTICAL_STAR;\n\n            set_mario_action(m, ACT_BACKWARD_AIR_KB, 0);\n            break;\n\n        case AIR_STEP_HIT_LAVA_WALL:\n            lava_boost_on_wall(m);\n            break;\n    }\n\n    return FALSE;\n}\n\ns32 act_jump_kick(struct MarioState *m) {\n    s32 animFrame;\n\n    if (m->actionState == 0) {\n        play_sound_if_no_flag(m, SOUND_MARIO_PUNCH_HOO, MARIO_ACTION_SOUND_PLAYED);\n        m->marioObj->header.gfx.animInfo.animID = -1;\n        set_mario_animation(m, MARIO_ANIM_AIR_KICK);\n        m->actionState = 1;\n    }\n\n    animFrame = m->marioObj->header.gfx.animInfo.animFrame;\n    if (animFrame == 0) {\n        m->marioBodyState->punchState = (2 << 6) | 6;\n    }\n    if (animFrame >= 0 && animFrame < 8) {\n        m->flags |= MARIO_KICKING;\n    }\n\n    update_air_without_turn(m);\n\n    switch (perform_air_step(m, 0)) {\n        case AIR_STEP_LANDED:\n            if (!check_fall_damage_or_get_stuck(m, ACT_HARD_BACKWARD_GROUND_KB)) {\n                set_mario_action(m, ACT_FREEFALL_LAND, 0);\n            }\n            break;\n\n        case AIR_STEP_HIT_WALL:\n            mario_set_forward_vel(m, 0.0f);\n            break;\n    }\n\n    return FALSE;\n}\n\ns32 act_shot_from_cannon(struct MarioState *m) {\n    if (m->area->camera->mode != CAMERA_MODE_BEHIND_MARIO) {\n        m->statusForCamera->cameraEvent = CAM_EVENT_SHOT_FROM_CANNON;\n    }\n\n    mario_set_forward_vel(m, m->forwardVel);\n\n    play_sound_if_no_flag(m, SOUND_MARIO_YAHOO, MARIO_MARIO_SOUND_PLAYED);\n\n    switch (perform_air_step(m, 0)) {\n        case AIR_STEP_NONE:\n            set_mario_animation(m, MARIO_ANIM_AIRBORNE_ON_STOMACH);\n            m->faceAngle[0] = atan2s(m->forwardVel, m->vel[1]);\n            m->marioObj->header.gfx.angle[0] = -m->faceAngle[0];\n            break;\n\n        case AIR_STEP_LANDED:\n            set_mario_action(m, ACT_DIVE_SLIDE, 0);\n            m->faceAngle[0] = 0;\n            set_camera_mode(m->area->camera, m->area->camera->defMode, 1);\n#if ENABLE_RUMBLE\n            queue_rumble_data(5, 80);\n#endif\n            break;\n\n        case AIR_STEP_HIT_WALL:\n            mario_set_forward_vel(m, -16.0f);\n\n            m->faceAngle[0] = 0;\n            if (m->vel[1] > 0.0f) {\n                m->vel[1] = 0.0f;\n            }\n\n            m->particleFlags |= PARTICLE_VERTICAL_STAR;\n            set_mario_action(m, ACT_BACKWARD_AIR_KB, 0);\n            set_camera_mode(m->area->camera, m->area->camera->defMode, 1);\n            break;\n\n        case AIR_STEP_HIT_LAVA_WALL:\n            lava_boost_on_wall(m);\n            break;\n    }\n\n    if ((m->flags & MARIO_WING_CAP) && m->vel[1] < 0.0f) {\n        set_mario_action(m, ACT_FLYING, 0);\n    }\n\n    if ((m->forwardVel -= 0.05) < 10.0f) {\n        mario_set_forward_vel(m, 10.0f);\n    }\n\n    if (m->vel[1] > 0.0f) {\n        m->particleFlags |= PARTICLE_DUST;\n    }\n#if ENABLE_RUMBLE\n    reset_rumble_timers();\n#endif\n    return FALSE;\n}\n\ns32 act_flying(struct MarioState *m) {\n    s16 startPitch = m->faceAngle[0];\n\n    if (m->input & INPUT_Z_PRESSED) {\n        if (m->area->camera->mode == CAMERA_MODE_BEHIND_MARIO) {\n            set_camera_mode(m->area->camera, m->area->camera->defMode, 1);\n        }\n        return set_mario_action(m, ACT_GROUND_POUND, 1);\n    }\n\n    if (!(m->flags & MARIO_WING_CAP)) {\n        if (m->area->camera->mode == CAMERA_MODE_BEHIND_MARIO) {\n            set_camera_mode(m->area->camera, m->area->camera->defMode, 1);\n        }\n        return set_mario_action(m, ACT_FREEFALL, 0);\n    }\n\n    if (m->area->camera->mode != CAMERA_MODE_BEHIND_MARIO) {\n        set_camera_mode(m->area->camera, CAMERA_MODE_BEHIND_MARIO, 1);\n    }\n\n    if (m->actionState == 0) {\n        if (m->actionArg == 0) {\n            set_mario_animation(m, MARIO_ANIM_FLY_FROM_CANNON);\n        } else {\n            set_mario_animation(m, MARIO_ANIM_FORWARD_SPINNING_FLIP);\n            if (m->marioObj->header.gfx.animInfo.animFrame == 1) {\n                play_sound(SOUND_ACTION_SPIN, m->marioObj->header.gfx.cameraToObject);\n            }\n        }\n\n        if (is_anim_at_end(m)) {\n            if (m->actionArg == 2) {\n                load_level_init_text(0);\n                m->actionArg = 1;\n            }\n\n            set_mario_animation(m, MARIO_ANIM_WING_CAP_FLY);\n            m->actionState = 1;\n        }\n    }\n\n    update_flying(m);\n\n    switch (perform_air_step(m, 0)) {\n        case AIR_STEP_NONE:\n            m->marioObj->header.gfx.angle[0] = -m->faceAngle[0];\n            m->marioObj->header.gfx.angle[2] = m->faceAngle[2];\n            m->actionTimer = 0;\n            break;\n\n        case AIR_STEP_LANDED:\n            set_mario_action(m, ACT_DIVE_SLIDE, 0);\n\n            set_mario_animation(m, MARIO_ANIM_DIVE);\n            set_anim_to_frame(m, 7);\n\n            m->faceAngle[0] = 0;\n            set_camera_mode(m->area->camera, m->area->camera->defMode, 1);\n#if ENABLE_RUMBLE\n            queue_rumble_data(5, 60);\n#endif\n            break;\n\n        case AIR_STEP_HIT_WALL:\n            if (m->wall != NULL) {\n                mario_set_forward_vel(m, -16.0f);\n                m->faceAngle[0] = 0;\n\n                if (m->vel[1] > 0.0f) {\n                    m->vel[1] = 0.0f;\n                }\n\n                play_sound((m->flags & MARIO_METAL_CAP) ? SOUND_ACTION_METAL_BONK\n                                                        : SOUND_ACTION_BONK,\n                           m->marioObj->header.gfx.cameraToObject);\n\n                m->particleFlags |= PARTICLE_VERTICAL_STAR;\n                set_mario_action(m, ACT_BACKWARD_AIR_KB, 0);\n                set_camera_mode(m->area->camera, m->area->camera->defMode, 1);\n            } else {\n                if (m->actionTimer++ == 0) {\n                    play_sound(SOUND_ACTION_HIT, m->marioObj->header.gfx.cameraToObject);\n                }\n\n                if (m->actionTimer == 30) {\n                    m->actionTimer = 0;\n                }\n\n                m->faceAngle[0] -= 0x200;\n                if (m->faceAngle[0] < -0x2AAA) {\n                    m->faceAngle[0] = -0x2AAA;\n                }\n\n                m->marioObj->header.gfx.angle[0] = -m->faceAngle[0];\n                m->marioObj->header.gfx.angle[2] = m->faceAngle[2];\n            }\n            break;\n\n        case AIR_STEP_HIT_LAVA_WALL:\n            lava_boost_on_wall(m);\n            break;\n    }\n\n    if (m->faceAngle[0] > 0x800 && m->forwardVel >= 48.0f) {\n        m->particleFlags |= PARTICLE_DUST;\n    }\n\n    if (startPitch <= 0 && m->faceAngle[0] > 0 && m->forwardVel >= 48.0f) {\n        play_sound(SOUND_ACTION_FLYING_FAST, m->marioObj->header.gfx.cameraToObject);\n#ifndef VERSION_JP\n        play_sound(SOUND_MARIO_YAHOO_WAHA_YIPPEE + ((gAudioRandom % 5) << 16),\n                   m->marioObj->header.gfx.cameraToObject);\n#endif\n#if ENABLE_RUMBLE\n        queue_rumble_data(50, 40);\n#endif\n    }\n\n    play_sound(SOUND_MOVING_FLYING, m->marioObj->header.gfx.cameraToObject);\n    adjust_sound_for_speed(m);\n    return FALSE;\n}\n\ns32 act_riding_hoot(struct MarioState *m) {\n    if (!(m->input & INPUT_A_DOWN) || (m->marioObj->oInteractStatus & INT_STATUS_MARIO_UNK7)) {\n        m->usedObj->oInteractStatus = 0;\n        m->usedObj->oHootMarioReleaseTime = gGlobalTimer;\n\n        play_sound_if_no_flag(m, SOUND_MARIO_UH, MARIO_MARIO_SOUND_PLAYED);\n#if ENABLE_RUMBLE\n        queue_rumble_data(4, 40);\n#endif\n        return set_mario_action(m, ACT_FREEFALL, 0);\n    }\n\n    m->pos[0] = m->usedObj->oPosX;\n    m->pos[1] = m->usedObj->oPosY - 92.5f;\n    m->pos[2] = m->usedObj->oPosZ;\n\n    m->faceAngle[1] = 0x4000 - m->usedObj->oMoveAngleYaw;\n\n    if (m->actionState == 0) {\n        set_mario_animation(m, MARIO_ANIM_HANG_ON_CEILING);\n        if (is_anim_at_end(m)) {\n            set_mario_animation(m, MARIO_ANIM_HANG_ON_OWL);\n            m->actionState = 1;\n        }\n    }\n\n    vec3f_set(m->vel, 0.0f, 0.0f, 0.0f);\n    vec3f_set(m->marioObj->header.gfx.pos, m->pos[0], m->pos[1], m->pos[2]);\n    vec3s_set(m->marioObj->header.gfx.angle, 0, 0x4000 - m->faceAngle[1], 0);\n    return FALSE;\n}\n\ns32 act_flying_triple_jump(struct MarioState *m) {\n#ifndef VERSION_JP\n    if (m->input & (INPUT_B_PRESSED | INPUT_Z_PRESSED)) {\n        if (m->area->camera->mode == CAMERA_MODE_BEHIND_MARIO) {\n            set_camera_mode(m->area->camera, m->area->camera->defMode, 1);\n        }\n        if (m->input & INPUT_B_PRESSED) {\n            return set_mario_action(m, ACT_DIVE, 0);\n        } else {\n            return set_mario_action(m, ACT_GROUND_POUND, 0);\n        }\n    }\n#else\n    if (m->input & INPUT_B_PRESSED) {\n        return set_mario_action(m, ACT_DIVE, 0);\n    }\n\n    if (m->input & INPUT_Z_PRESSED) {\n        return set_mario_action(m, ACT_GROUND_POUND, 0);\n    }\n#endif\n\n    play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, SOUND_MARIO_YAHOO);\n    if (m->actionState == 0) {\n        set_mario_animation(m, MARIO_ANIM_TRIPLE_JUMP_FLY);\n\n        if (m->marioObj->header.gfx.animInfo.animFrame == 7) {\n            play_sound(SOUND_ACTION_SPIN, m->marioObj->header.gfx.cameraToObject);\n        }\n\n        if (is_anim_past_end(m)) {\n            set_mario_animation(m, MARIO_ANIM_FORWARD_SPINNING);\n#if ENABLE_RUMBLE\n            queue_rumble_data(8, 80);\n#endif\n            m->actionState = 1;\n        }\n    }\n\n    if (m->actionState == 1 && m->marioObj->header.gfx.animInfo.animFrame == 1) {\n        play_sound(SOUND_ACTION_SPIN, m->marioObj->header.gfx.cameraToObject);\n    }\n\n    if (m->vel[1] < 4.0f) {\n        if (m->area->camera->mode != CAMERA_MODE_BEHIND_MARIO) {\n            set_camera_mode(m->area->camera, CAMERA_MODE_BEHIND_MARIO, 1);\n        }\n\n        if (m->forwardVel < 32.0f) {\n            mario_set_forward_vel(m, 32.0f);\n        }\n\n        set_mario_action(m, ACT_FLYING, 1);\n    }\n\n    if (m->actionTimer++ == 10 && m->area->camera->mode != CAMERA_MODE_BEHIND_MARIO) {\n        set_camera_mode(m->area->camera, CAMERA_MODE_BEHIND_MARIO, 1);\n    }\n\n    update_air_without_turn(m);\n\n    switch (perform_air_step(m, 0)) {\n        case AIR_STEP_LANDED:\n            if (!check_fall_damage_or_get_stuck(m, ACT_HARD_BACKWARD_GROUND_KB)) {\n                set_mario_action(m, ACT_DOUBLE_JUMP_LAND, 0);\n            }\n            break;\n\n        case AIR_STEP_HIT_WALL:\n            mario_bonk_reflection(m, FALSE);\n            break;\n\n        case AIR_STEP_HIT_LAVA_WALL:\n            lava_boost_on_wall(m);\n            break;\n    }\n\n    return FALSE;\n}\n\ns32 act_top_of_pole_jump(struct MarioState *m) {\n    play_mario_jump_sound(m);\n    common_air_action_step(m, ACT_FREEFALL_LAND, MARIO_ANIM_HANDSTAND_JUMP, AIR_STEP_CHECK_LEDGE_GRAB);\n    return FALSE;\n}\n\ns32 act_vertical_wind(struct MarioState *m) {\n    s16 intendedDYaw = m->intendedYaw - m->faceAngle[1];\n    f32 intendedMag = m->intendedMag / 32.0f;\n\n    play_sound_if_no_flag(m, SOUND_MARIO_HERE_WE_GO, MARIO_MARIO_SOUND_PLAYED);\n    if (m->actionState == 0) {\n        set_mario_animation(m, MARIO_ANIM_FORWARD_SPINNING_FLIP);\n        if (m->marioObj->header.gfx.animInfo.animFrame == 1) {\n            play_sound(SOUND_ACTION_SPIN, m->marioObj->header.gfx.cameraToObject);\n#if ENABLE_RUMBLE\n            queue_rumble_data(8, 80);\n#endif\n        }\n\n        if (is_anim_past_end(m)) {\n            m->actionState = 1;\n        }\n    } else {\n        set_mario_animation(m, MARIO_ANIM_AIRBORNE_ON_STOMACH);\n    }\n\n    update_air_without_turn(m);\n\n    switch (perform_air_step(m, 0)) {\n        case AIR_STEP_LANDED:\n            set_mario_action(m, ACT_DIVE_SLIDE, 0);\n            break;\n\n        case AIR_STEP_HIT_WALL:\n            mario_set_forward_vel(m, -16.0f);\n            break;\n    }\n\n    m->marioObj->header.gfx.angle[0] = (s16)(6144.0f * intendedMag * coss(intendedDYaw));\n    m->marioObj->header.gfx.angle[2] = (s16)(-4096.0f * intendedMag * sins(intendedDYaw));\n    return FALSE;\n}\n\ns32 act_special_triple_jump(struct MarioState *m) {\n    if (m->input & INPUT_B_PRESSED) {\n        return set_mario_action(m, ACT_DIVE, 0);\n    }\n\n    if (m->input & INPUT_Z_PRESSED) {\n        return set_mario_action(m, ACT_GROUND_POUND, 0);\n    }\n\n    play_mario_sound(m, SOUND_ACTION_TERRAIN_JUMP, SOUND_MARIO_YAHOO);\n\n    update_air_without_turn(m);\n\n    switch (perform_air_step(m, 0)) {\n        case AIR_STEP_LANDED:\n            if (m->actionState++ == 0) {\n                m->vel[1] = 42.0f;\n            } else {\n                set_mario_action(m, ACT_FREEFALL_LAND_STOP, 0);\n            }\n            play_mario_landing_sound(m, SOUND_ACTION_TERRAIN_LANDING);\n            break;\n\n        case AIR_STEP_HIT_WALL:\n            mario_bonk_reflection(m, TRUE);\n            break;\n    }\n\n    if (m->actionState == 0 || m->vel[1] > 0.0f) {\n        if (set_mario_animation(m, MARIO_ANIM_FORWARD_SPINNING) == 0) {\n            play_sound(SOUND_ACTION_SPIN, m->marioObj->header.gfx.cameraToObject);\n        }\n    } else {\n        set_mario_animation(m, MARIO_ANIM_GENERAL_FALL);\n    }\n\n    m->particleFlags |= PARTICLE_SPARKLES;\n    return FALSE;\n}\n\ns32 check_common_airborne_cancels(struct MarioState *m) {\n    if (m->pos[1] < m->waterLevel - 100) {\n        return set_water_plunge_action(m);\n    }\n\n    if (m->input & INPUT_SQUISHED) {\n        return drop_and_set_mario_action(m, ACT_SQUISHED, 0);\n    }\n\n    if (m->floor->type == SURFACE_VERTICAL_WIND && (m->action & ACT_FLAG_ALLOW_VERTICAL_WIND_ACTION)) {\n        return drop_and_set_mario_action(m, ACT_VERTICAL_WIND, 0);\n    }\n\n    m->quicksandDepth = 0.0f;\n    return FALSE;\n}\n\ns32 mario_execute_airborne_action(struct MarioState *m) {\n    u32 cancel;\n\n    if (check_common_airborne_cancels(m)) {\n        return TRUE;\n    }\n\n    play_far_fall_sound(m);\n\n    /* clang-format off */\n    switch (m->action) {\n        case ACT_JUMP:                 cancel = act_jump(m);                 break;\n        case ACT_DOUBLE_JUMP:          cancel = act_double_jump(m);          break;\n        case ACT_FREEFALL:             cancel = act_freefall(m);             break;\n        case ACT_HOLD_JUMP:            cancel = act_hold_jump(m);            break;\n        case ACT_HOLD_FREEFALL:        cancel = act_hold_freefall(m);        break;\n        case ACT_SIDE_FLIP:            cancel = act_side_flip(m);            break;\n        case ACT_WALL_KICK_AIR:        cancel = act_wall_kick_air(m);        break;\n        case ACT_TWIRLING:             cancel = act_twirling(m);             break;\n        case ACT_WATER_JUMP:           cancel = act_water_jump(m);           break;\n        case ACT_HOLD_WATER_JUMP:      cancel = act_hold_water_jump(m);      break;\n        case ACT_STEEP_JUMP:           cancel = act_steep_jump(m);           break;\n        case ACT_BURNING_JUMP:         cancel = act_burning_jump(m);         break;\n        case ACT_BURNING_FALL:         cancel = act_burning_fall(m);         break;\n        case ACT_TRIPLE_JUMP:          cancel = act_triple_jump(m);          break;\n        case ACT_BACKFLIP:             cancel = act_backflip(m);             break;\n        case ACT_LONG_JUMP:            cancel = act_long_jump(m);            break;\n        case ACT_RIDING_SHELL_JUMP:\n        case ACT_RIDING_SHELL_FALL:    cancel = act_riding_shell_air(m);     break;\n        case ACT_DIVE:                 cancel = act_dive(m);                 break;\n        case ACT_AIR_THROW:            cancel = act_air_throw(m);            break;\n        case ACT_BACKWARD_AIR_KB:      cancel = act_backward_air_kb(m);      break;\n        case ACT_FORWARD_AIR_KB:       cancel = act_forward_air_kb(m);       break;\n        case ACT_HARD_FORWARD_AIR_KB:  cancel = act_hard_forward_air_kb(m);  break;\n        case ACT_HARD_BACKWARD_AIR_KB: cancel = act_hard_backward_air_kb(m); break;\n        case ACT_SOFT_BONK:            cancel = act_soft_bonk(m);            break;\n        case ACT_AIR_HIT_WALL:         cancel = act_air_hit_wall(m);         break;\n        case ACT_FORWARD_ROLLOUT:      cancel = act_forward_rollout(m);      break;\n        case ACT_SHOT_FROM_CANNON:     cancel = act_shot_from_cannon(m);     break;\n        case ACT_BUTT_SLIDE_AIR:       cancel = act_butt_slide_air(m);       break;\n        case ACT_HOLD_BUTT_SLIDE_AIR:  cancel = act_hold_butt_slide_air(m);  break;\n        case ACT_LAVA_BOOST:           cancel = act_lava_boost(m);           break;\n        case ACT_GETTING_BLOWN:        cancel = act_getting_blown(m);        break;\n        case ACT_BACKWARD_ROLLOUT:     cancel = act_backward_rollout(m);     break;\n        case ACT_CRAZY_BOX_BOUNCE:     cancel = act_crazy_box_bounce(m);     break;\n        case ACT_SPECIAL_TRIPLE_JUMP:  cancel = act_special_triple_jump(m);  break;\n        case ACT_GROUND_POUND:         cancel = act_ground_pound(m);         break;\n        case ACT_THROWN_FORWARD:       cancel = act_thrown_forward(m);       break;\n        case ACT_THROWN_BACKWARD:      cancel = act_thrown_backward(m);      break;\n        case ACT_FLYING_TRIPLE_JUMP:   cancel = act_flying_triple_jump(m);   break;\n        case ACT_SLIDE_KICK:           cancel = act_slide_kick(m);           break;\n        case ACT_JUMP_KICK:            cancel = act_jump_kick(m);            break;\n        case ACT_FLYING:               cancel = act_flying(m);               break;\n        case ACT_RIDING_HOOT:          cancel = act_riding_hoot(m);          break;\n        case ACT_TOP_OF_POLE_JUMP:     cancel = act_top_of_pole_jump(m);     break;\n        case ACT_VERTICAL_WIND:        cancel = act_vertical_wind(m);        break;\n    }\n    /* clang-format on */\n\n    return cancel;\n}\n"
  },
  {
    "path": "src/game/mario_actions_airborne.h",
    "content": "#ifndef MARIO_ACTIONS_AIRBORNE_H\n#define MARIO_ACTIONS_AIRBORNE_H\n\n#include <PR/ultratypes.h>\n\n#include \"types.h\"\n\ns32 mario_execute_airborne_action(struct MarioState *m);\n\n#endif // MARIO_ACTIONS_AIRBORNE_H\n"
  },
  {
    "path": "src/game/mario_actions_automatic.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"sm64.h\"\n#include \"behavior_data.h\"\n#include \"mario_actions_automatic.h\"\n#include \"audio/external.h\"\n#include \"area.h\"\n#include \"mario.h\"\n#include \"mario_step.h\"\n#include \"engine/math_util.h\"\n#include \"memory.h\"\n#include \"engine/graph_node.h\"\n#include \"save_file.h\"\n#include \"engine/surface_collision.h\"\n#include \"interaction.h\"\n#include \"camera.h\"\n#include \"level_table.h\"\n#include \"rumble_init.h\"\n\n#define POLE_NONE          0\n#define POLE_TOUCHED_FLOOR 1\n#define POLE_FELL_OFF      2\n\n#define HANG_NONE            0\n#define HANG_HIT_CEIL_OR_OOB 1\n#define HANG_LEFT_CEIL       2\n\nvoid add_tree_leaf_particles(struct MarioState *m) {\n    f32 leafHeight;\n\n    if (m->usedObj->behavior == segmented_to_virtual(bhvTree)) {\n        // make leaf effect spawn higher on the Shifting Sand Land palm tree\n        if (gCurrLevelNum == LEVEL_SSL) {\n            leafHeight = 250.0f;\n        } else {\n            leafHeight = 100.0f;\n        }\n        if (m->pos[1] - m->floorHeight > leafHeight) {\n            m->particleFlags |= PARTICLE_LEAF;\n        }\n    }\n}\n\nvoid play_climbing_sounds(struct MarioState *m, s32 b) {\n    s32 isOnTree = (m->usedObj->behavior == segmented_to_virtual(bhvTree));\n\n    if (b == 1) {\n        if (is_anim_past_frame(m, 1)) {\n            play_sound(isOnTree ? SOUND_ACTION_CLIMB_UP_TREE : SOUND_ACTION_CLIMB_UP_POLE,\n                       m->marioObj->header.gfx.cameraToObject);\n        }\n    } else {\n        play_sound(isOnTree ? SOUND_MOVING_SLIDE_DOWN_TREE : SOUND_MOVING_SLIDE_DOWN_POLE,\n                   m->marioObj->header.gfx.cameraToObject);\n    }\n}\n\ns32 set_pole_position(struct MarioState *m, f32 offsetY) {\n    UNUSED u8 filler[12];\n    struct Surface *floor;\n    struct Surface *ceil;\n    f32 floorHeight;\n    f32 ceilHeight;\n    s32 collided;\n    s32 result = POLE_NONE;\n    f32 poleTop = m->usedObj->hitboxHeight - 100.0f;\n    struct Object *marioObj = m->marioObj;\n\n    if (marioObj->oMarioPolePos > poleTop) {\n        marioObj->oMarioPolePos = poleTop;\n    }\n\n    m->pos[0] = m->usedObj->oPosX;\n    m->pos[2] = m->usedObj->oPosZ;\n    m->pos[1] = m->usedObj->oPosY + marioObj->oMarioPolePos + offsetY;\n\n    collided = f32_find_wall_collision(&m->pos[0], &m->pos[1], &m->pos[2], 60.0f, 50.0f);\n    collided |= f32_find_wall_collision(&m->pos[0], &m->pos[1], &m->pos[2], 30.0f, 24.0f);\n\n    ceilHeight = vec3f_find_ceil(m->pos, m->pos[1], &ceil);\n    if (m->pos[1] > ceilHeight - 160.0f) {\n        m->pos[1] = ceilHeight - 160.0f;\n        marioObj->oMarioPolePos = m->pos[1] - m->usedObj->oPosY;\n    }\n\n    floorHeight = find_floor(m->pos[0], m->pos[1], m->pos[2], &floor);\n    if (m->pos[1] < floorHeight) {\n        m->pos[1] = floorHeight;\n        set_mario_action(m, ACT_IDLE, 0);\n        result = POLE_TOUCHED_FLOOR;\n    } else if (marioObj->oMarioPolePos < -m->usedObj->hitboxDownOffset) {\n        m->pos[1] = m->usedObj->oPosY - m->usedObj->hitboxDownOffset;\n        set_mario_action(m, ACT_FREEFALL, 0);\n        result = POLE_FELL_OFF;\n    } else if (collided) {\n        if (m->pos[1] > floorHeight + 20.0f) {\n            m->forwardVel = -2.0f;\n            set_mario_action(m, ACT_SOFT_BONK, 0);\n            result = POLE_FELL_OFF;\n        } else {\n            set_mario_action(m, ACT_IDLE, 0);\n            result = POLE_TOUCHED_FLOOR;\n        }\n    }\n\n    vec3f_copy(m->marioObj->header.gfx.pos, m->pos);\n    vec3s_set(m->marioObj->header.gfx.angle, m->usedObj->oMoveAnglePitch, m->faceAngle[1],\n              m->usedObj->oMoveAngleRoll);\n\n    return result;\n}\n\ns32 act_holding_pole(struct MarioState *m) {\n    struct Object *marioObj = m->marioObj;\n\n#ifdef VERSION_JP\n    if (m->input & INPUT_A_PRESSED) {\n        add_tree_leaf_particles(m);\n        m->faceAngle[1] += 0x8000;\n        return set_mario_action(m, ACT_WALL_KICK_AIR, 0);\n    }\n\n    if (m->input & INPUT_Z_PRESSED) {\n        add_tree_leaf_particles(m);\n        m->forwardVel = -2.0f;\n        return set_mario_action(m, ACT_SOFT_BONK, 0);\n    }\n#else\n    if ((m->input & INPUT_Z_PRESSED) || m->health < 0x100) {\n        add_tree_leaf_particles(m);\n        m->forwardVel = -2.0f;\n        return set_mario_action(m, ACT_SOFT_BONK, 0);\n    }\n\n    if (m->input & INPUT_A_PRESSED) {\n        add_tree_leaf_particles(m);\n        m->faceAngle[1] += 0x8000;\n        return set_mario_action(m, ACT_WALL_KICK_AIR, 0);\n    }\n#endif\n\n    if (m->controller->stickY > 16.0f) {\n        f32 poleTop = m->usedObj->hitboxHeight - 100.0f;\n        const BehaviorScript *poleBehavior = virtual_to_segmented(0x13, m->usedObj->behavior);\n\n        if (marioObj->oMarioPolePos < poleTop - 0.4f) {\n            return set_mario_action(m, ACT_CLIMBING_POLE, 0);\n        }\n\n        if (poleBehavior != bhvGiantPole && m->controller->stickY > 50.0f) {\n            return set_mario_action(m, ACT_TOP_OF_POLE_TRANSITION, 0);\n        }\n    }\n\n    if (m->controller->stickY < -16.0f) {\n        marioObj->oMarioPoleYawVel -= m->controller->stickY * 2;\n        if (marioObj->oMarioPoleYawVel > 0x1000) {\n            marioObj->oMarioPoleYawVel = 0x1000;\n        }\n\n        m->faceAngle[1] += marioObj->oMarioPoleYawVel;\n        marioObj->oMarioPolePos -= marioObj->oMarioPoleYawVel / 0x100;\n\n        if (m->usedObj->behavior == segmented_to_virtual(bhvTree)) {\n            //! The Shifting Sand Land palm tree check is done climbing up in\n            // add_tree_leaf_particles, but not here, when climbing down.\n            if (m->pos[1] - m->floorHeight > 100.0f) {\n                m->particleFlags |= PARTICLE_LEAF;\n            }\n        }\n        play_climbing_sounds(m, 2);\n#if ENABLE_RUMBLE\n        reset_rumble_timers();\n#endif\n        set_sound_moving_speed(SOUND_BANK_MOVING, marioObj->oMarioPoleYawVel / 0x100 * 2);\n    } else {\n        marioObj->oMarioPoleYawVel = 0;\n        m->faceAngle[1] -= m->controller->stickX * 16.0f;\n    }\n\n    if (set_pole_position(m, 0.0f) == POLE_NONE) {\n        set_mario_animation(m, MARIO_ANIM_IDLE_ON_POLE);\n    }\n\n    return FALSE;\n}\n\ns32 act_climbing_pole(struct MarioState *m) {\n    s32 sp24;\n    struct Object *marioObj = m->marioObj;\n    s16 cameraAngle = m->area->camera->yaw;\n\n#ifndef VERSION_JP\n    if (m->health < 0x100) {\n        add_tree_leaf_particles(m);\n        m->forwardVel = -2.0f;\n        return set_mario_action(m, ACT_SOFT_BONK, 0);\n    }\n#endif\n\n    if (m->input & INPUT_A_PRESSED) {\n        add_tree_leaf_particles(m);\n        m->faceAngle[1] += 0x8000;\n        return set_mario_action(m, ACT_WALL_KICK_AIR, 0);\n    }\n\n    if (m->controller->stickY < 8.0f) {\n        return set_mario_action(m, ACT_HOLDING_POLE, 0);\n    }\n\n    marioObj->oMarioPolePos += m->controller->stickY / 8.0f;\n    marioObj->oMarioPoleYawVel = 0;\n    m->faceAngle[1] = cameraAngle - approach_s32((s16)(cameraAngle - m->faceAngle[1]), 0, 0x400, 0x400);\n\n    if (set_pole_position(m, 0.0f) == POLE_NONE) {\n        sp24 = m->controller->stickY / 4.0f * 0x10000;\n        set_mario_anim_with_accel(m, MARIO_ANIM_CLIMB_UP_POLE, sp24);\n        add_tree_leaf_particles(m);\n        play_climbing_sounds(m, 1);\n    }\n\n    return FALSE;\n}\n\ns32 act_grab_pole_slow(struct MarioState *m) {\n    play_sound_if_no_flag(m, SOUND_MARIO_WHOA, MARIO_MARIO_SOUND_PLAYED);\n\n    if (set_pole_position(m, 0.0f) == POLE_NONE) {\n        set_mario_animation(m, MARIO_ANIM_GRAB_POLE_SHORT);\n        if (is_anim_at_end(m)) {\n            set_mario_action(m, ACT_HOLDING_POLE, 0);\n        }\n        add_tree_leaf_particles(m);\n    }\n\n    return FALSE;\n}\n\ns32 act_grab_pole_fast(struct MarioState *m) {\n    struct Object *marioObj = m->marioObj;\n\n    play_sound_if_no_flag(m, SOUND_MARIO_WHOA, MARIO_MARIO_SOUND_PLAYED);\n    m->faceAngle[1] += marioObj->oMarioPoleYawVel;\n    marioObj->oMarioPoleYawVel = marioObj->oMarioPoleYawVel * 8 / 10;\n\n    if (set_pole_position(m, 0.0f) == POLE_NONE) {\n        if (marioObj->oMarioPoleYawVel > 0x800) {\n            set_mario_animation(m, MARIO_ANIM_GRAB_POLE_SWING_PART1);\n        } else {\n            set_mario_animation(m, MARIO_ANIM_GRAB_POLE_SWING_PART2);\n            if (is_anim_at_end(m)) {\n                marioObj->oMarioPoleYawVel = 0;\n                set_mario_action(m, ACT_HOLDING_POLE, 0);\n            }\n        }\n        add_tree_leaf_particles(m);\n    }\n\n    return FALSE;\n}\n\ns32 act_top_of_pole_transition(struct MarioState *m) {\n    struct Object *marioObj = m->marioObj;\n\n    marioObj->oMarioPoleYawVel = 0;\n    if (m->actionArg == 0) {\n        set_mario_animation(m, MARIO_ANIM_START_HANDSTAND);\n        if (is_anim_at_end(m)) {\n            return set_mario_action(m, ACT_TOP_OF_POLE, 0);\n        }\n    } else {\n        set_mario_animation(m, MARIO_ANIM_RETURN_FROM_HANDSTAND);\n        if (m->marioObj->header.gfx.animInfo.animFrame == 0) {\n            return set_mario_action(m, ACT_HOLDING_POLE, 0);\n        }\n    }\n\n    set_pole_position(m, return_mario_anim_y_translation(m));\n    return FALSE;\n}\n\ns32 act_top_of_pole(struct MarioState *m) {\n    UNUSED struct Object *marioObj = m->marioObj;\n\n    if (m->input & INPUT_A_PRESSED) {\n        return set_mario_action(m, ACT_TOP_OF_POLE_JUMP, 0);\n    }\n    if (m->controller->stickY < -16.0f) {\n        return set_mario_action(m, ACT_TOP_OF_POLE_TRANSITION, 1);\n    }\n\n    m->faceAngle[1] -= m->controller->stickX * 16.0f;\n\n    set_mario_animation(m, MARIO_ANIM_HANDSTAND_IDLE);\n    set_pole_position(m, return_mario_anim_y_translation(m));\n    return FALSE;\n}\n\ns32 perform_hanging_step(struct MarioState *m, Vec3f nextPos) {\n    UNUSED u8 filler[4];\n    struct Surface *ceil;\n    struct Surface *floor;\n    f32 ceilHeight;\n    f32 floorHeight;\n    f32 ceilOffset;\n\n    m->wall = resolve_and_return_wall_collisions(nextPos, 50.0f, 50.0f);\n    floorHeight = find_floor(nextPos[0], nextPos[1], nextPos[2], &floor);\n    ceilHeight = vec3f_find_ceil(nextPos, floorHeight, &ceil);\n\n    if (floor == NULL) {\n        return HANG_HIT_CEIL_OR_OOB;\n    }\n    if (ceil == NULL) {\n        return HANG_LEFT_CEIL;\n    }\n    if (ceilHeight - floorHeight <= 160.0f) {\n        return HANG_HIT_CEIL_OR_OOB;\n    }\n    if (ceil->type != SURFACE_HANGABLE) {\n        return HANG_LEFT_CEIL;\n    }\n\n    ceilOffset = ceilHeight - (nextPos[1] + 160.0f);\n    if (ceilOffset < -30.0f) {\n        return HANG_HIT_CEIL_OR_OOB;\n    }\n    if (ceilOffset > 30.0f) {\n        return HANG_LEFT_CEIL;\n    }\n\n    nextPos[1] = m->ceilHeight - 160.0f;\n    vec3f_copy(m->pos, nextPos);\n\n    m->floor = floor;\n    m->floorHeight = floorHeight;\n    m->ceil = ceil;\n    m->ceilHeight = ceilHeight;\n\n    return HANG_NONE;\n}\n\ns32 update_hang_moving(struct MarioState *m) {\n    s32 stepResult;\n    Vec3f nextPos;\n    f32 maxSpeed = 4.0f;\n\n    m->forwardVel += 1.0f;\n    if (m->forwardVel > maxSpeed) {\n        m->forwardVel = maxSpeed;\n    }\n\n    m->faceAngle[1] =\n        m->intendedYaw - approach_s32((s16)(m->intendedYaw - m->faceAngle[1]), 0, 0x800, 0x800);\n\n    m->slideYaw = m->faceAngle[1];\n    m->slideVelX = m->forwardVel * sins(m->faceAngle[1]);\n    m->slideVelZ = m->forwardVel * coss(m->faceAngle[1]);\n\n    m->vel[0] = m->slideVelX;\n    m->vel[1] = 0.0f;\n    m->vel[2] = m->slideVelZ;\n\n    nextPos[0] = m->pos[0] - m->ceil->normal.y * m->vel[0];\n    nextPos[2] = m->pos[2] - m->ceil->normal.y * m->vel[2];\n    nextPos[1] = m->pos[1];\n\n    stepResult = perform_hanging_step(m, nextPos);\n\n    vec3f_copy(m->marioObj->header.gfx.pos, m->pos);\n    vec3s_set(m->marioObj->header.gfx.angle, 0, m->faceAngle[1], 0);\n    return stepResult;\n}\n\nvoid update_hang_stationary(struct MarioState *m) {\n    m->forwardVel = 0.0f;\n    m->slideVelX = 0.0f;\n    m->slideVelZ = 0.0f;\n\n    m->pos[1] = m->ceilHeight - 160.0f;\n    vec3f_copy(m->vel, gVec3fZero);\n    vec3f_copy(m->marioObj->header.gfx.pos, m->pos);\n}\n\ns32 act_start_hanging(struct MarioState *m) {\n#if ENABLE_RUMBLE\n    if (m->actionTimer++ == 0) {\n        queue_rumble_data(5, 80);\n    }\n#else\n    m->actionTimer++;\n#endif\n\n    if ((m->input & INPUT_NONZERO_ANALOG) && m->actionTimer >= 31) {\n        return set_mario_action(m, ACT_HANGING, 0);\n    }\n\n    if (!(m->input & INPUT_A_DOWN)) {\n        return set_mario_action(m, ACT_FREEFALL, 0);\n    }\n\n    if (m->input & INPUT_Z_PRESSED) {\n        return set_mario_action(m, ACT_GROUND_POUND, 0);\n    }\n\n    //! Crash if Mario's referenced ceiling is NULL (same for other hanging actions)\n    if (m->ceil->type != SURFACE_HANGABLE) {\n        return set_mario_action(m, ACT_FREEFALL, 0);\n    }\n\n    set_mario_animation(m, MARIO_ANIM_HANG_ON_CEILING);\n    play_sound_if_no_flag(m, SOUND_ACTION_HANGING_STEP, MARIO_ACTION_SOUND_PLAYED);\n    update_hang_stationary(m);\n\n    if (is_anim_at_end(m)) {\n        set_mario_action(m, ACT_HANGING, 0);\n    }\n\n    return FALSE;\n}\n\ns32 act_hanging(struct MarioState *m) {\n    if (m->input & INPUT_NONZERO_ANALOG) {\n        return set_mario_action(m, ACT_HANG_MOVING, m->actionArg);\n    }\n\n    if (!(m->input & INPUT_A_DOWN)) {\n        return set_mario_action(m, ACT_FREEFALL, 0);\n    }\n\n    if (m->input & INPUT_Z_PRESSED) {\n        return set_mario_action(m, ACT_GROUND_POUND, 0);\n    }\n\n    if (m->ceil->type != SURFACE_HANGABLE) {\n        return set_mario_action(m, ACT_FREEFALL, 0);\n    }\n\n    if (m->actionArg & 1) {\n        set_mario_animation(m, MARIO_ANIM_HANDSTAND_LEFT);\n    } else {\n        set_mario_animation(m, MARIO_ANIM_HANDSTAND_RIGHT);\n    }\n\n    update_hang_stationary(m);\n\n    return FALSE;\n}\n\ns32 act_hang_moving(struct MarioState *m) {\n    if (!(m->input & INPUT_A_DOWN)) {\n        return set_mario_action(m, ACT_FREEFALL, 0);\n    }\n\n    if (m->input & INPUT_Z_PRESSED) {\n        return set_mario_action(m, ACT_GROUND_POUND, 0);\n    }\n\n    if (m->ceil->type != SURFACE_HANGABLE) {\n        return set_mario_action(m, ACT_FREEFALL, 0);\n    }\n\n    if (m->actionArg & 1) {\n        set_mario_animation(m, MARIO_ANIM_MOVE_ON_WIRE_NET_RIGHT);\n    } else {\n        set_mario_animation(m, MARIO_ANIM_MOVE_ON_WIRE_NET_LEFT);\n    }\n\n    if (m->marioObj->header.gfx.animInfo.animFrame == 12) {\n        play_sound(SOUND_ACTION_HANGING_STEP, m->marioObj->header.gfx.cameraToObject);\n#if ENABLE_RUMBLE\n        queue_rumble_data(1, 30);\n#endif\n    }\n\n    if (is_anim_past_end(m)) {\n        m->actionArg ^= 1;\n        if (m->input & INPUT_UNKNOWN_5) {\n            return set_mario_action(m, ACT_HANGING, m->actionArg);\n        }\n    }\n\n    if (update_hang_moving(m) == HANG_LEFT_CEIL) {\n        set_mario_action(m, ACT_FREEFALL, 0);\n    }\n\n    return FALSE;\n}\n\ns32 let_go_of_ledge(struct MarioState *m) {\n    f32 floorHeight;\n    struct Surface *floor;\n\n    m->vel[1] = 0.0f;\n    m->forwardVel = -8.0f;\n    m->pos[0] -= 60.0f * sins(m->faceAngle[1]);\n    m->pos[2] -= 60.0f * coss(m->faceAngle[1]);\n\n    floorHeight = find_floor(m->pos[0], m->pos[1], m->pos[2], &floor);\n    if (floorHeight < m->pos[1] - 100.0f) {\n        m->pos[1] -= 100.0f;\n    } else {\n        m->pos[1] = floorHeight;\n    }\n\n    return set_mario_action(m, ACT_SOFT_BONK, 0);\n}\n\nvoid climb_up_ledge(struct MarioState *m) {\n    set_mario_animation(m, MARIO_ANIM_IDLE_HEAD_LEFT);\n    m->pos[0] += 14.0f * sins(m->faceAngle[1]);\n    m->pos[2] += 14.0f * coss(m->faceAngle[1]);\n    vec3f_copy(m->marioObj->header.gfx.pos, m->pos);\n}\n\nvoid update_ledge_climb_camera(struct MarioState *m) {\n    f32 sp4;\n\n    if (m->actionTimer < 14) {\n        sp4 = m->actionTimer;\n    } else {\n        sp4 = 14.0f;\n    }\n    m->statusForCamera->pos[0] = m->pos[0] + sp4 * sins(m->faceAngle[1]);\n    m->statusForCamera->pos[2] = m->pos[2] + sp4 * coss(m->faceAngle[1]);\n    m->statusForCamera->pos[1] = m->pos[1];\n    m->actionTimer++;\n    m->flags |= MARIO_UNKNOWN_25;\n}\n\nvoid update_ledge_climb(struct MarioState *m, s32 animation, u32 endAction) {\n    stop_and_set_height_to_floor(m);\n\n    set_mario_animation(m, animation);\n    if (is_anim_at_end(m)) {\n        set_mario_action(m, endAction, 0);\n        if (endAction == ACT_IDLE) {\n            climb_up_ledge(m);\n        }\n    }\n}\n\ns32 act_ledge_grab(struct MarioState *m) {\n    f32 heightAboveFloor;\n    s16 intendedDYaw = m->intendedYaw - m->faceAngle[1];\n    s32 hasSpaceForMario = (m->ceilHeight - m->floorHeight >= 160.0f);\n\n    if (m->actionTimer < 10) {\n        m->actionTimer++;\n    }\n\n    if (m->floor->normal.y < 0.9063078f) {\n        return let_go_of_ledge(m);\n    }\n\n    if (m->input & (INPUT_Z_PRESSED | INPUT_OFF_FLOOR)) {\n        return let_go_of_ledge(m);\n    }\n\n    if ((m->input & INPUT_A_PRESSED) && hasSpaceForMario) {\n        return set_mario_action(m, ACT_LEDGE_CLIMB_FAST, 0);\n    }\n\n    if (m->input & INPUT_STOMPED) {\n        if (m->marioObj->oInteractStatus & INT_STATUS_MARIO_KNOCKBACK_DMG) {\n            m->hurtCounter += (m->flags & MARIO_CAP_ON_HEAD) ? 12 : 18;\n        }\n        return let_go_of_ledge(m);\n    }\n    if (m->actionTimer == 10 && (m->input & INPUT_NONZERO_ANALOG)\n#ifdef VERSION_EU\n        // On EU, you can't slow climb up ledges while holding A.\n        && !(m->input & INPUT_A_DOWN)\n#endif\n    ) {\n        if (intendedDYaw >= -0x4000 && intendedDYaw <= 0x4000) {\n            if (hasSpaceForMario) {\n                return set_mario_action(m, ACT_LEDGE_CLIMB_SLOW_1, 0);\n            }\n        } else {\n            return let_go_of_ledge(m);\n        }\n    }\n\n    heightAboveFloor = m->pos[1] - find_floor_height_relative_polar(m, -0x8000, 30.0f);\n    if (hasSpaceForMario && heightAboveFloor < 100.0f) {\n        return set_mario_action(m, ACT_LEDGE_CLIMB_FAST, 0);\n    }\n\n    if (m->actionArg == 0) {\n        play_sound_if_no_flag(m, SOUND_MARIO_WHOA, MARIO_MARIO_SOUND_PLAYED);\n    }\n\n    stop_and_set_height_to_floor(m);\n    set_mario_animation(m, MARIO_ANIM_IDLE_ON_LEDGE);\n\n    return FALSE;\n}\n\ns32 act_ledge_climb_slow(struct MarioState *m) {\n    if (m->input & INPUT_OFF_FLOOR) {\n        return let_go_of_ledge(m);\n    }\n\n    if (m->actionTimer >= 28\n        && (m->input\n            & (INPUT_NONZERO_ANALOG | INPUT_A_PRESSED | INPUT_OFF_FLOOR | INPUT_ABOVE_SLIDE))) {\n        climb_up_ledge(m);\n        return check_common_action_exits(m);\n    }\n\n    if (m->actionTimer == 10) {\n        play_sound_if_no_flag(m, SOUND_MARIO_EEUH, MARIO_MARIO_SOUND_PLAYED);\n    }\n\n    update_ledge_climb(m, MARIO_ANIM_SLOW_LEDGE_GRAB, ACT_IDLE);\n\n    update_ledge_climb_camera(m);\n    if (m->marioObj->header.gfx.animInfo.animFrame == 17) {\n        m->action = ACT_LEDGE_CLIMB_SLOW_2;\n    }\n\n    return FALSE;\n}\n\ns32 act_ledge_climb_down(struct MarioState *m) {\n    if (m->input & INPUT_OFF_FLOOR) {\n        return let_go_of_ledge(m);\n    }\n\n    play_sound_if_no_flag(m, SOUND_MARIO_WHOA, MARIO_MARIO_SOUND_PLAYED);\n\n    update_ledge_climb(m, MARIO_ANIM_CLIMB_DOWN_LEDGE, ACT_LEDGE_GRAB);\n    m->actionArg = 1;\n\n    return FALSE;\n}\n\ns32 act_ledge_climb_fast(struct MarioState *m) {\n    if (m->input & INPUT_OFF_FLOOR) {\n        return let_go_of_ledge(m);\n    }\n\n    play_sound_if_no_flag(m, SOUND_MARIO_UH2, MARIO_MARIO_SOUND_PLAYED);\n\n    update_ledge_climb(m, MARIO_ANIM_FAST_LEDGE_GRAB, ACT_IDLE);\n\n    if (m->marioObj->header.gfx.animInfo.animFrame == 8) {\n        play_mario_landing_sound(m, SOUND_ACTION_TERRAIN_LANDING);\n    }\n    update_ledge_climb_camera(m);\n\n    return FALSE;\n}\n\ns32 act_grabbed(struct MarioState *m) {\n    if (m->marioObj->oInteractStatus & INT_STATUS_MARIO_UNK2) {\n        s32 thrown = (m->marioObj->oInteractStatus & INT_STATUS_MARIO_UNK6) == 0;\n\n        m->faceAngle[1] = m->usedObj->oMoveAngleYaw;\n        vec3f_copy(m->pos, m->marioObj->header.gfx.pos);\n#if ENABLE_RUMBLE\n        queue_rumble_data(5, 60);\n#endif\n\n        return set_mario_action(m, (m->forwardVel >= 0.0f) ? ACT_THROWN_FORWARD : ACT_THROWN_BACKWARD,\n                                thrown);\n    }\n\n    set_mario_animation(m, MARIO_ANIM_BEING_GRABBED);\n    return FALSE;\n}\n\ns32 act_in_cannon(struct MarioState *m) {\n    struct Object *marioObj = m->marioObj;\n    s16 startFacePitch = m->faceAngle[0];\n    s16 startFaceYaw = m->faceAngle[1];\n\n    switch (m->actionState) {\n        case 0:\n            m->marioObj->header.gfx.node.flags &= ~GRAPH_RENDER_ACTIVE;\n            m->usedObj->oInteractStatus = INT_STATUS_INTERACTED;\n\n            m->statusForCamera->cameraEvent = CAM_EVENT_CANNON;\n            m->statusForCamera->usedObj = m->usedObj;\n\n            vec3f_set(m->vel, 0.0f, 0.0f, 0.0f);\n\n            m->pos[0] = m->usedObj->oPosX;\n            m->pos[1] = m->usedObj->oPosY + 350.0f;\n            m->pos[2] = m->usedObj->oPosZ;\n\n            m->forwardVel = 0.0f;\n\n            m->actionState = 1;\n            break;\n\n        case 1:\n            if (m->usedObj->oAction == 1) {\n                m->faceAngle[0] = m->usedObj->oMoveAnglePitch;\n                m->faceAngle[1] = m->usedObj->oMoveAngleYaw;\n\n                marioObj->oMarioCannonObjectYaw = m->usedObj->oMoveAngleYaw;\n                marioObj->oMarioCannonInputYaw = 0;\n\n                m->actionState = 2;\n            }\n            break;\n\n        case 2:\n            m->faceAngle[0] -= (s16)(m->controller->stickY * 10.0f);\n            marioObj->oMarioCannonInputYaw -= (s16)(m->controller->stickX * 10.0f);\n\n            if (m->faceAngle[0] > 0x38E3) {\n                m->faceAngle[0] = 0x38E3;\n            }\n            if (m->faceAngle[0] < 0) {\n                m->faceAngle[0] = 0;\n            }\n\n            if (marioObj->oMarioCannonInputYaw > 0x4000) {\n                marioObj->oMarioCannonInputYaw = 0x4000;\n            }\n            if (marioObj->oMarioCannonInputYaw < -0x4000) {\n                marioObj->oMarioCannonInputYaw = -0x4000;\n            }\n\n            m->faceAngle[1] = marioObj->oMarioCannonObjectYaw + marioObj->oMarioCannonInputYaw;\n            if (m->input & INPUT_A_PRESSED) {\n                m->forwardVel = 100.0f * coss(m->faceAngle[0]);\n\n                m->vel[1] = 100.0f * sins(m->faceAngle[0]);\n\n                m->pos[0] += 120.0f * coss(m->faceAngle[0]) * sins(m->faceAngle[1]);\n                m->pos[1] += 120.0f * sins(m->faceAngle[0]);\n                m->pos[2] += 120.0f * coss(m->faceAngle[0]) * coss(m->faceAngle[1]);\n\n                play_sound(SOUND_ACTION_FLYING_FAST, m->marioObj->header.gfx.cameraToObject);\n                play_sound(SOUND_OBJ_POUNDING_CANNON, m->marioObj->header.gfx.cameraToObject);\n\n                m->marioObj->header.gfx.node.flags |= GRAPH_RENDER_ACTIVE;\n\n                set_mario_action(m, ACT_SHOT_FROM_CANNON, 0);\n#if ENABLE_RUMBLE\n                queue_rumble_data(60, 70);\n#endif\n                m->usedObj->oAction = 2;\n                return FALSE;\n            } else if (m->faceAngle[0] != startFacePitch || m->faceAngle[1] != startFaceYaw) {\n                play_sound(SOUND_MOVING_AIM_CANNON, m->marioObj->header.gfx.cameraToObject);\n#if ENABLE_RUMBLE\n                reset_rumble_timers_2(0);\n#endif\n            }\n    }\n\n    vec3f_copy(m->marioObj->header.gfx.pos, m->pos);\n    vec3s_set(m->marioObj->header.gfx.angle, 0, m->faceAngle[1], 0);\n    set_mario_animation(m, MARIO_ANIM_DIVE);\n\n    return FALSE;\n}\n\ns32 act_tornado_twirling(struct MarioState *m) {\n    struct Surface *floor;\n    Vec3f nextPos;\n    f32 sinAngleVel;\n    f32 cosAngleVel;\n    f32 floorHeight;\n    struct Object *marioObj = m->marioObj;\n    struct Object *usedObj = m->usedObj;\n    s16 prevTwirlYaw = m->twirlYaw;\n\n    f32 dx = (m->pos[0] - usedObj->oPosX) * 0.95f;\n    f32 dz = (m->pos[2] - usedObj->oPosZ) * 0.95f;\n\n    if (m->vel[1] < 60.0f) {\n        m->vel[1] += 1.0f;\n    }\n\n    if ((marioObj->oMarioTornadoPosY += m->vel[1]) < 0.0f) {\n        marioObj->oMarioTornadoPosY = 0.0f;\n    }\n    if (marioObj->oMarioTornadoPosY > usedObj->hitboxHeight) {\n        if (m->vel[1] < 20.0f) {\n            m->vel[1] = 20.0f;\n        }\n        return set_mario_action(m, ACT_TWIRLING, 1);\n    }\n\n    if (m->angleVel[1] < 0x3000) {\n        m->angleVel[1] += 0x100;\n    }\n\n    if (marioObj->oMarioTornadoYawVel < 0x1000) {\n        marioObj->oMarioTornadoYawVel += 0x100;\n    }\n\n    m->twirlYaw += m->angleVel[1];\n\n    sinAngleVel = sins(marioObj->oMarioTornadoYawVel);\n    cosAngleVel = coss(marioObj->oMarioTornadoYawVel);\n\n    nextPos[0] = usedObj->oPosX + dx * cosAngleVel + dz * sinAngleVel;\n    nextPos[2] = usedObj->oPosZ - dx * sinAngleVel + dz * cosAngleVel;\n    nextPos[1] = usedObj->oPosY + marioObj->oMarioTornadoPosY;\n\n    f32_find_wall_collision(&nextPos[0], &nextPos[1], &nextPos[2], 60.0f, 50.0f);\n\n    floorHeight = find_floor(nextPos[0], nextPos[1], nextPos[2], &floor);\n    if (floor != NULL) {\n        m->floor = floor;\n        m->floorHeight = floorHeight;\n        vec3f_copy(m->pos, nextPos);\n    } else {\n        if (nextPos[1] >= m->floorHeight) {\n            m->pos[1] = nextPos[1];\n        } else {\n            m->pos[1] = m->floorHeight;\n        }\n    }\n\n    m->actionTimer++;\n\n    set_mario_animation(m, (m->actionArg == 0) ? MARIO_ANIM_START_TWIRL : MARIO_ANIM_TWIRL);\n\n    if (is_anim_past_end(m)) {\n        m->actionArg = 1;\n    }\n\n    // Play sound on angle overflow\n    if (prevTwirlYaw > m->twirlYaw) {\n        play_sound(SOUND_ACTION_TWIRL, m->marioObj->header.gfx.cameraToObject);\n    }\n\n    vec3f_copy(m->marioObj->header.gfx.pos, m->pos);\n    vec3s_set(m->marioObj->header.gfx.angle, 0, m->faceAngle[1] + m->twirlYaw, 0);\n#if ENABLE_RUMBLE\n    reset_rumble_timers();\n#endif\n\n    return FALSE;\n}\n\ns32 check_common_automatic_cancels(struct MarioState *m) {\n    if (m->pos[1] < m->waterLevel - 100) {\n        return set_water_plunge_action(m);\n    }\n\n    return FALSE;\n}\n\ns32 mario_execute_automatic_action(struct MarioState *m) {\n    s32 cancel;\n\n    if (check_common_automatic_cancels(m)) {\n        return TRUE;\n    }\n\n    m->quicksandDepth = 0.0f;\n\n    /* clang-format off */\n    switch (m->action) {\n        case ACT_HOLDING_POLE:           cancel = act_holding_pole(m);           break;\n        case ACT_GRAB_POLE_SLOW:         cancel = act_grab_pole_slow(m);         break;\n        case ACT_GRAB_POLE_FAST:         cancel = act_grab_pole_fast(m);         break;\n        case ACT_CLIMBING_POLE:          cancel = act_climbing_pole(m);          break;\n        case ACT_TOP_OF_POLE_TRANSITION: cancel = act_top_of_pole_transition(m); break;\n        case ACT_TOP_OF_POLE:            cancel = act_top_of_pole(m);            break;\n        case ACT_START_HANGING:          cancel = act_start_hanging(m);          break;\n        case ACT_HANGING:                cancel = act_hanging(m);                break;\n        case ACT_HANG_MOVING:            cancel = act_hang_moving(m);            break;\n        case ACT_LEDGE_GRAB:             cancel = act_ledge_grab(m);             break;\n        case ACT_LEDGE_CLIMB_SLOW_1:     cancel = act_ledge_climb_slow(m);       break;\n        case ACT_LEDGE_CLIMB_SLOW_2:     cancel = act_ledge_climb_slow(m);       break;\n        case ACT_LEDGE_CLIMB_DOWN:       cancel = act_ledge_climb_down(m);       break;\n        case ACT_LEDGE_CLIMB_FAST:       cancel = act_ledge_climb_fast(m);       break;\n        case ACT_GRABBED:                cancel = act_grabbed(m);                break;\n        case ACT_IN_CANNON:              cancel = act_in_cannon(m);              break;\n        case ACT_TORNADO_TWIRLING:       cancel = act_tornado_twirling(m);       break;\n    }\n    /* clang-format on */\n\n    return cancel;\n}\n"
  },
  {
    "path": "src/game/mario_actions_automatic.h",
    "content": "#ifndef MARIO_ACTIONS_AUTOMATIC_H\n#define MARIO_ACTIONS_AUTOMATIC_H\n\n#include <PR/ultratypes.h>\n\n#include \"types.h\"\n\ns32 mario_execute_automatic_action(struct MarioState *m);\n\n#endif // MARIO_ACTIONS_AUTOMATIC_H\n"
  },
  {
    "path": "src/game/mario_actions_cutscene.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"prevent_bss_reordering.h\"\n#include \"sm64.h\"\n#include \"area.h\"\n#include \"audio/external.h\"\n#include \"behavior_data.h\"\n#include \"camera.h\"\n#include \"dialog_ids.h\"\n#include \"engine/behavior_script.h\"\n#include \"engine/graph_node.h\"\n#include \"engine/math_util.h\"\n#include \"engine/surface_collision.h\"\n#include \"game_init.h\"\n#include \"gfx_dimensions.h\"\n#include \"ingame_menu.h\"\n#include \"interaction.h\"\n#include \"level_table.h\"\n#include \"level_update.h\"\n#include \"mario.h\"\n#include \"mario_actions_cutscene.h\"\n#include \"mario_actions_moving.h\"\n#include \"mario_step.h\"\n#include \"moving_texture.h\"\n#include \"object_helpers.h\"\n#include \"object_list_processor.h\"\n#include \"save_file.h\"\n#include \"seq_ids.h\"\n#include \"sound_init.h\"\n#include \"rumble_init.h\"\n\nstatic struct Object *sIntroWarpPipeObj;\nstatic struct Object *sEndPeachObj;\nstatic struct Object *sEndRightToadObj;\nstatic struct Object *sEndLeftToadObj;\nstatic struct Object *sEndJumboStarObj;\nstatic UNUSED s32 sUnused;\nstatic s16 sEndPeachAnimation;\nstatic s16 sEndToadAnims[2];\n\nstatic Vp sEndCutsceneVp = { { { 640, 480, 511, 0 }, { 640, 480, 511, 0 } } };\nstatic struct CreditsEntry *sDispCreditsEntry = NULL;\n\n// related to peach gfx?\nstatic s8 D_8032CBE4 = 0;\nstatic s8 D_8032CBE8 = 0;\nstatic s8 D_8032CBEC[7] = { 2, 3, 2, 1, 2, 3, 2 };\n\nstatic u8 sStarsNeededForDialog[] = { 1, 3, 8, 30, 50, 70 };\n\n/**\n * Data for the jumbo star cutscene. It specifies the flight path after triple\n * jumping. Each entry is one keyframe.\n * The first number is playback speed, 1000 is the maximum and means it lasts\n * 1 frame. 20 means that it lasts 1000/20 = 50 frames.\n * Speed 0 marks the last keyframe. Since the cubic spline looks 3 keyframes\n * ahead, there should be at least 2 more entries afterwards.\n * The last three numbers of each entry are x, y and z coordinates of points\n * that define the curve.\n */\nstatic Vec4s sJumboStarKeyframes[27] = {\n    { 20, 0, 678, -2916 },      { 30, 0, 680, -3500 },      { 40, 1000, 700, -4000 },\n    { 50, 2500, 750, -3500 },   { 50, 3500, 800, -2000 },   { 50, 4000, 850, 0 },\n    { 50, 3500, 900, 2000 },    { 50, 2000, 950, 3500 },    { 50, 0, 1000, 4000 },\n    { 50, -2000, 1050, 3500 },  { 50, -3500, 1100, 2000 },  { 50, -4000, 1150, 0 },\n    { 50, -3500, 1200, -2000 }, { 50, -2000, 1250, -3500 }, { 50, 0, 1300, -4000 },\n    { 50, 2000, 1350, -3500 },  { 50, 3500, 1400, -2000 },  { 50, 4000, 1450, 0 },\n    { 50, 3500, 1500, 2000 },   { 50, 2000, 1600, 3500 },   { 50, 0, 1700, 4000 },\n    { 50, -2000, 1800, 3500 },  { 50, -3500, 1900, 2000 },  { 30, -4000, 2000, 0 },\n    { 0, -3500, 2100, -2000 },  { 0, -2000, 2200, -3500 },  { 0, 0, 2300, -4000 },\n};\n\n/**\n * get_credits_str_width: Calculate width of a Credits String\n * Loop over each character in a credits string and increment the length. If the\n * character is a space, increment by 4; otherwise increment by 7. Once the next\n * character is a null character (equal to 0), stop counting the length since\n * that's the end of the string.\n */\ns32 get_credits_str_width(char *str) {\n    u32 c;\n    s32 length = 0;\n\n    while ((c = *str++) != 0) {\n        length += (c == ' ' ? 4 : 7);\n    }\n\n    return length;\n}\n\n#define CREDIT_TEXT_MARGIN_X ((s32)(GFX_DIMENSIONS_ASPECT_RATIO * 21))\n#define CREDIT_TEXT_X_LEFT GFX_DIMENSIONS_RECT_FROM_LEFT_EDGE(CREDIT_TEXT_MARGIN_X)\n#define CREDIT_TEXT_X_RIGHT GFX_DIMENSIONS_RECT_FROM_RIGHT_EDGE(CREDIT_TEXT_MARGIN_X)\n\n/**\n * print_displaying_credits_entry: Print the current displaying Credits Entry\n * Called in render_game. This function checks if sDispCreditsEntry points to a\n * credits entry (see act_credits_cutscene), and if so, display it. The reason\n * this is called every frame in render_game is because the credits need to\n * display on top of everything else.\n * To print a credits entry, we take the first character of the first string,\n * subtract the value of the 0 character, and use that as the number of lines to\n * print, excluding the title. Then, we print the title (after advancing the\n * pointer by 1) at X 28, Y either 28 or 172, depending on the print at bottom\n * flag. Finally, we print each line using the number of lines previously stored\n * as a counter, and increase the Y value by either the constant 16 (JP only) or\n * by the value of lineHeight.\n */\nvoid print_displaying_credits_entry(void) {\n    char **currStrPtr;\n    char *titleStr;\n    s16 numLines;\n    s16 strY;\n#ifndef VERSION_JP\n    s16 lineHeight;\n#endif\n\n    if (sDispCreditsEntry != NULL) {\n        currStrPtr = (char **) sDispCreditsEntry->unk0C;\n        titleStr = *currStrPtr++;\n        numLines = *titleStr++ - '0';\n\n        strY = (sDispCreditsEntry->unk02 & 0x20 ? 28 : 172) + (numLines == 1) * 16;\n#ifndef VERSION_JP\n        lineHeight = 16;\n#endif\n\n        dl_rgba16_begin_cutscene_msg_fade();\n        print_credits_str_ascii(CREDIT_TEXT_X_LEFT, strY, titleStr);\n\n#ifndef VERSION_JP\n        switch (numLines) {\n            case 4:\n                print_credits_str_ascii(CREDIT_TEXT_X_LEFT, strY + 24, *currStrPtr++);\n                numLines = 2;\n                lineHeight = 24;\n                break;\n            case 5:\n                print_credits_str_ascii(CREDIT_TEXT_X_LEFT, strY + 16, *currStrPtr++);\n                numLines = 3;\n                break;\n#ifdef VERSION_EU\n            case 6:\n                print_credits_str_ascii(CREDIT_TEXT_X_LEFT, strY + 32, *currStrPtr++);\n                numLines = 3;\n                break;\n            case 7:\n                print_credits_str_ascii(CREDIT_TEXT_X_LEFT, strY + 16, *currStrPtr++);\n                print_credits_str_ascii(CREDIT_TEXT_X_LEFT, strY + 32, *currStrPtr++);\n                numLines = 3;\n                break;\n#endif\n        }\n#endif\n\n        while (numLines-- > 0) {\n            print_credits_str_ascii(CREDIT_TEXT_X_RIGHT - get_credits_str_width(*currStrPtr), strY, *currStrPtr);\n\n#ifdef VERSION_JP\n            strY += 16;\n#else\n            strY += lineHeight;\n#endif\n\n            currStrPtr++;\n        }\n\n        dl_rgba16_stop_cutscene_msg_fade();\n        sDispCreditsEntry = NULL;\n    }\n}\n\nvoid bhv_end_peach_loop(void) {\n    cur_obj_init_animation_with_sound(sEndPeachAnimation);\n    if (cur_obj_check_if_near_animation_end()) {\n        // anims: 0-3, 4, 5, 6-8, 9, 10, 11\n        if (sEndPeachAnimation < 3 || sEndPeachAnimation == 6 || sEndPeachAnimation == 7) {\n            sEndPeachAnimation++;\n        }\n    }\n}\n\nvoid bhv_end_toad_loop(void) {\n    s32 toadAnimIndex = (gCurrentObject->oPosX >= 0.0f);\n\n    cur_obj_init_animation_with_sound(sEndToadAnims[toadAnimIndex]);\n    if (cur_obj_check_if_near_animation_end()) {\n        // 0-1, 2-3, 4, 5, 6, 7\n        if (sEndToadAnims[toadAnimIndex] == 0 || sEndToadAnims[toadAnimIndex] == 2) {\n            sEndToadAnims[toadAnimIndex]++;\n        }\n    }\n}\n\n// Geo switch case function for controlling Peach's eye state.\ns32 geo_switch_peach_eyes(s32 run, struct GraphNode *node, UNUSED s32 a2) {\n    struct GraphNodeSwitchCase *switchCase = (struct GraphNodeSwitchCase *) node;\n    s16 timer;\n\n    if (run == TRUE) {\n        if (D_8032CBE4 == 0) {\n            timer = (gAreaUpdateCounter + 0x20) >> 1 & 0x1F;\n            if (timer < 7) {\n                switchCase->selectedCase = D_8032CBE8 * 4 + D_8032CBEC[timer];\n            } else {\n                switchCase->selectedCase = D_8032CBE8 * 4 + 1;\n            }\n        } else {\n            switchCase->selectedCase = D_8032CBE8 * 4 + D_8032CBE4 - 1;\n        }\n    }\n\n    return 0;\n}\n\n// unused\nUNUSED static void stub_is_textbox_active(u16 *arg) {\n    if (get_dialog_id() == DIALOG_NONE) {\n        *arg = 0;\n    }\n}\n\n/**\n * get_star_collection_dialog: Determine what dialog should show when Mario\n * collects a star.\n * Determines if Mario has collected enough stars to get a dialog for it, and\n * if so, return the dialog ID. Otherwise, return 0. A dialog is returned if\n * numStars has reached a milestone and prevNumStarsForDialog has not reached it.\n */\ns32 get_star_collection_dialog(struct MarioState *m) {\n    s32 i;\n    s32 dialogID = 0;\n    s32 numStarsRequired;\n\n    for (i = 0; i < ARRAY_COUNT(sStarsNeededForDialog); i++) {\n        numStarsRequired = sStarsNeededForDialog[i];\n        if (m->prevNumStarsForDialog < numStarsRequired && m->numStars >= numStarsRequired) {\n            dialogID = i + DIALOG_141;\n            break;\n        }\n    }\n\n    m->prevNumStarsForDialog = m->numStars;\n    return dialogID;\n}\n\n// save menu handler\nvoid handle_save_menu(struct MarioState *m) {\n    s32 dialogID;\n    // wait for the menu to show up\n    if (is_anim_past_end(m) && gSaveOptSelectIndex != MENU_OPT_NONE) {\n        // save and continue / save and quit\n        if (gSaveOptSelectIndex == MENU_OPT_SAVE_AND_CONTINUE || gSaveOptSelectIndex == MENU_OPT_SAVE_AND_QUIT) {\n            save_file_do_save(gCurrSaveFileNum - 1);\n\n            if (gSaveOptSelectIndex == MENU_OPT_SAVE_AND_QUIT) {\n                fade_into_special_warp(-2, 0); // reset game\n            }\n        }\n\n        // not quitting\n        if (gSaveOptSelectIndex != MENU_OPT_SAVE_AND_QUIT) {\n            disable_time_stop();\n            m->faceAngle[1] += 0x8000;\n            // figure out what dialog to show, if we should\n            dialogID = get_star_collection_dialog(m);\n            if (dialogID) {\n                play_peachs_jingle();\n                // look up for dialog\n                set_mario_action(m, ACT_READING_AUTOMATIC_DIALOG, dialogID);\n            } else {\n                set_mario_action(m, ACT_IDLE, 0);\n            }\n        }\n    }\n}\n\n/**\n * spawn_obj_at_mario_rel_yaw: Spawns object at Mario with relative yaw.\n * Spawns object with given behavior and model and copies over Mario's position\n * and yaw plus relative yaw.\n */\nstruct Object *spawn_obj_at_mario_rel_yaw(struct MarioState *m, s32 model, const BehaviorScript *behavior, s16 relYaw) {\n    struct Object *o = spawn_object(m->marioObj, model, behavior);\n\n    o->oFaceAngleYaw = m->faceAngle[1] + relYaw;\n    o->oPosX = m->pos[0];\n    o->oPosY = m->pos[1];\n    o->oPosZ = m->pos[2];\n\n    return o;\n}\n\n/**\n * cutscene_take_cap_off: Put Mario's cap on.\n * Clears \"cap on head\" flag, sets \"cap in hand\" flag, plays sound\n * SOUND_ACTION_UNKNOWN43D.\n */\nvoid cutscene_take_cap_off(struct MarioState *m) {\n    m->flags &= ~MARIO_CAP_ON_HEAD;\n    m->flags |= MARIO_CAP_IN_HAND;\n    play_sound(SOUND_ACTION_UNKNOWN43D, m->marioObj->header.gfx.cameraToObject);\n}\n\n/**\n * cutscene_put_cap_on: Put Mario's cap on.\n * Clears \"cap in hand\" flag, sets \"cap on head\" flag, plays sound\n * SOUND_ACTION_UNKNOWN43E.\n */\nvoid cutscene_put_cap_on(struct MarioState *m) {\n    m->flags &= ~MARIO_CAP_IN_HAND;\n    m->flags |= MARIO_CAP_ON_HEAD;\n    play_sound(SOUND_ACTION_UNKNOWN43E, m->marioObj->header.gfx.cameraToObject);\n}\n\n/**\n * mario_ready_to_speak: Determine if Mario is able to speak to a NPC\n * The following conditions must be met in order for Mario to be considered\n * ready to speak.\n * 1: Mario's action must be in the stationary or moving action groups, or if\n *    not, he must be in the \"waiting for dialog\" state.\n * 2: Mario mat not be riding a shell or be invulnerable.\n * 3: Mario must not be in first person mode.\n */\ns32 mario_ready_to_speak(void) {\n    u32 actionGroup = gMarioState->action & ACT_GROUP_MASK;\n    s32 isReadyToSpeak = FALSE;\n\n    if ((gMarioState->action == ACT_WAITING_FOR_DIALOG || actionGroup == ACT_GROUP_STATIONARY\n         || actionGroup == ACT_GROUP_MOVING)\n        && (!(gMarioState->action & (ACT_FLAG_RIDING_SHELL | ACT_FLAG_INVULNERABLE))\n            && gMarioState->action != ACT_FIRST_PERSON)) {\n        isReadyToSpeak = TRUE;\n    }\n\n    return isReadyToSpeak;\n}\n\n// (can) place Mario in dialog?\n// initiate dialog?\n// return values:\n// 0 = not in dialog\n// 1 = starting dialog\n// 2 = speaking\ns32 set_mario_npc_dialog(s32 actionArg) {\n    s32 dialogState = MARIO_DIALOG_STATUS_NONE;\n\n    // in dialog\n    if (gMarioState->action == ACT_READING_NPC_DIALOG) {\n        if (gMarioState->actionState < 8) {\n            dialogState = MARIO_DIALOG_STATUS_START; // starting dialog\n        }\n        if (gMarioState->actionState == 8) {\n            if (actionArg == MARIO_DIALOG_STOP) {\n                gMarioState->actionState++; // exit dialog\n            } else {\n                dialogState = MARIO_DIALOG_STATUS_SPEAK;\n            }\n        }\n    } else if (actionArg != 0 && mario_ready_to_speak()) {\n        gMarioState->usedObj = gCurrentObject;\n        set_mario_action(gMarioState, ACT_READING_NPC_DIALOG, actionArg);\n        dialogState = MARIO_DIALOG_STATUS_START; // starting dialog\n    }\n\n    return dialogState;\n}\n\n// actionargs:\n// 1 : no head turn\n// 2 : look up\n// 3 : look down\n// actionstate values:\n// 0 - 7: looking toward npc\n// 8: in dialog\n// 9 - 22: looking away from npc\n// 23: end\ns32 act_reading_npc_dialog(struct MarioState *m) {\n    s32 headTurnAmount = 0;\n    s16 angleToNPC;\n\n    if (m->actionArg == MARIO_DIALOG_LOOK_UP) {\n        headTurnAmount = -1024;\n    }\n    if (m->actionArg == MARIO_DIALOG_LOOK_DOWN) {\n        headTurnAmount = 384;\n    }\n\n    if (m->actionState < 8) {\n        // turn to NPC\n        angleToNPC = mario_obj_angle_to_object(m, m->usedObj);\n        m->faceAngle[1] =\n            angleToNPC - approach_s32((angleToNPC - m->faceAngle[1]) << 16 >> 16, 0, 2048, 2048);\n        // turn head to npc\n        m->actionTimer += headTurnAmount;\n        // set animation\n        set_mario_animation(m, m->heldObj == NULL ? MARIO_ANIM_FIRST_PERSON\n                                                  : MARIO_ANIM_IDLE_WITH_LIGHT_OBJ);\n    } else if (m->actionState >= 9 && m->actionState < 17) {\n        // look back from facing NPC\n        m->actionTimer -= headTurnAmount;\n    } else if (m->actionState == 23) {\n        if (m->flags & MARIO_CAP_IN_HAND) {\n            set_mario_action(m, ACT_PUTTING_ON_CAP, 0);\n        } else {\n            set_mario_action(m, m->heldObj == NULL ? ACT_IDLE : ACT_HOLD_IDLE, 0);\n        }\n    }\n    vec3f_copy(m->marioObj->header.gfx.pos, m->pos);\n    vec3s_set(m->marioObj->header.gfx.angle, 0, m->faceAngle[1], 0);\n    vec3s_set(m->marioBodyState->headAngle, m->actionTimer, 0, 0);\n\n    if (m->actionState != 8) {\n        m->actionState++;\n    }\n\n    return FALSE;\n}\n\n// puts Mario in a state where he's waiting for (npc) dialog; doesn't do much\ns32 act_waiting_for_dialog(struct MarioState *m) {\n    set_mario_animation(m, m->heldObj == NULL ? MARIO_ANIM_FIRST_PERSON\n                                              : MARIO_ANIM_IDLE_WITH_LIGHT_OBJ);\n    vec3f_copy(m->marioObj->header.gfx.pos, m->pos);\n    vec3s_set(m->marioObj->header.gfx.angle, 0, m->faceAngle[1], 0);\n    return FALSE;\n}\n\n// makes Mario disappear and triggers warp\ns32 act_disappeared(struct MarioState *m) {\n    set_mario_animation(m, MARIO_ANIM_A_POSE);\n    stop_and_set_height_to_floor(m);\n    m->marioObj->header.gfx.node.flags &= ~GRAPH_RENDER_ACTIVE;\n    if (m->actionArg) {\n        m->actionArg--;\n        if ((m->actionArg & 0xFFFF) == 0) {\n            level_trigger_warp(m, m->actionArg >> 16);\n        }\n    }\n    return FALSE;\n}\n\ns32 act_reading_automatic_dialog(struct MarioState *m) {\n    u32 actionArg;\n\n    m->actionState++;\n    if (m->actionState == 2) {\n        enable_time_stop();\n    }\n    if (m->actionState < 9) {\n        set_mario_animation(m, m->prevAction == ACT_STAR_DANCE_WATER ? MARIO_ANIM_WATER_IDLE\n                                                                     : MARIO_ANIM_FIRST_PERSON);\n        // always look up for automatic dialogs\n        m->actionTimer -= 1024;\n    } else {\n        // set Mario dialog\n        if (m->actionState == 9) {\n            actionArg = m->actionArg;\n            if (GET_HIGH_U16_OF_32(actionArg) == 0) {\n                create_dialog_box(GET_LOW_U16_OF_32(actionArg));\n            } else {\n                create_dialog_box_with_var(GET_HIGH_U16_OF_32(actionArg), GET_LOW_U16_OF_32(actionArg));\n            }\n        }\n        // wait until dialog is done\n        else if (m->actionState == 10) {\n            if (get_dialog_id() >= 0) {\n                m->actionState--;\n            }\n        }\n        // look back down\n        else if (m->actionState < 19) {\n            m->actionTimer += 1024;\n        }\n        // finished action\n        else if (m->actionState == 25) {\n            disable_time_stop();\n            if (gNeverEnteredCastle) {\n                gNeverEnteredCastle = FALSE;\n                play_cutscene_music(SEQUENCE_ARGS(0, SEQ_LEVEL_INSIDE_CASTLE));\n            }\n            if (m->prevAction == ACT_STAR_DANCE_WATER) {\n                set_mario_action(m, ACT_WATER_IDLE, 0); // 100c star?\n            } else {\n                // make Mario walk into door after star dialog\n                set_mario_action(m, m->prevAction == ACT_UNLOCKING_STAR_DOOR ? ACT_WALKING : ACT_IDLE,\n                                 0);\n            }\n        }\n    }\n    // apply head turn\n    vec3s_set(m->marioBodyState->headAngle, m->actionTimer, 0, 0);\n    return FALSE;\n}\n\ns32 act_reading_sign(struct MarioState *m) {\n    struct Object *marioObj = m->marioObj;\n\n    play_sound_if_no_flag(m, SOUND_ACTION_READ_SIGN, MARIO_ACTION_SOUND_PLAYED);\n\n    switch (m->actionState) {\n        // start dialog\n        case 0:\n            trigger_cutscene_dialog(1);\n            enable_time_stop();\n            // reading sign\n            set_mario_animation(m, MARIO_ANIM_FIRST_PERSON);\n            m->actionState = 1;\n            // intentional fall through\n        // turn toward sign\n        case 1:\n            m->faceAngle[1] += marioObj->oMarioPoleUnk108 / 11;\n            m->pos[0] += marioObj->oMarioReadingSignDPosX / 11.0f;\n            m->pos[2] += marioObj->oMarioReadingSignDPosZ / 11.0f;\n            // create the text box\n            if (m->actionTimer++ == 10) {\n                create_dialog_inverted_box(m->usedObj->oBhvParams2ndByte);\n                m->actionState = 2;\n            }\n            break;\n        // in dialog\n        case 2:\n            // dialog finished\n            if (gCamera->cutscene == 0) {\n                disable_time_stop();\n                set_mario_action(m, ACT_IDLE, 0);\n            }\n            break;\n    }\n\n    vec3f_copy(marioObj->header.gfx.pos, m->pos);\n    vec3s_set(marioObj->header.gfx.angle, 0, m->faceAngle[1], 0);\n    return FALSE;\n}\n\ns32 act_debug_free_move(struct MarioState *m) {\n    struct Surface *surf;\n    f32 floorHeight;\n    Vec3f pos;\n    f32 speed;\n    u32 action;\n\n    // integer immediates, generates convert instructions for some reason\n    speed = gPlayer1Controller->buttonDown & B_BUTTON ? 4 : 1;\n    if (gPlayer1Controller->buttonDown & L_TRIG) {\n        speed = 0.01f;\n    }\n\n    set_mario_animation(m, MARIO_ANIM_A_POSE);\n    vec3f_copy(pos, m->pos);\n\n    if (gPlayer1Controller->buttonDown & U_JPAD) {\n        pos[1] += 16.0f * speed;\n    }\n    if (gPlayer1Controller->buttonDown & D_JPAD) {\n        pos[1] -= 16.0f * speed;\n    }\n\n    if (m->intendedMag > 0) {\n        pos[0] += 32.0f * speed * sins(m->intendedYaw);\n        pos[2] += 32.0f * speed * coss(m->intendedYaw);\n    }\n\n    resolve_and_return_wall_collisions(pos, 60.0f, 50.0f);\n\n    floorHeight = find_floor(pos[0], pos[1], pos[2], &surf);\n    if (surf != NULL) {\n        if (pos[1] < floorHeight) {\n            pos[1] = floorHeight;\n        }\n        vec3f_copy(m->pos, pos);\n    }\n\n    m->faceAngle[1] = m->intendedYaw;\n    vec3f_copy(m->marioObj->header.gfx.pos, m->pos);\n    vec3s_set(m->marioObj->header.gfx.angle, 0, m->faceAngle[1], 0);\n\n    if (gPlayer1Controller->buttonPressed == A_BUTTON) {\n        if (m->pos[1] <= m->waterLevel - 100) {\n            action = ACT_WATER_IDLE;\n        } else {\n            action = ACT_IDLE;\n        }\n        set_mario_action(m, action, 0);\n    }\n\n    return FALSE;\n}\n\nvoid general_star_dance_handler(struct MarioState *m, s32 isInWater) {\n    s32 dialogID;\n    if (m->actionState == 0) {\n        switch (++m->actionTimer) {\n            case 1:\n                spawn_object(m->marioObj, MODEL_STAR, bhvCelebrationStar);\n                disable_background_sound();\n                if (m->actionArg & 1) {\n                    play_course_clear();\n                } else {\n                    if (gCurrLevelNum == LEVEL_BOWSER_1 || gCurrLevelNum == LEVEL_BOWSER_2) {\n                        play_music(SEQ_PLAYER_ENV, SEQUENCE_ARGS(15, SEQ_EVENT_CUTSCENE_COLLECT_KEY), 0);\n                    } else {\n                        play_music(SEQ_PLAYER_ENV, SEQUENCE_ARGS(15, SEQ_EVENT_CUTSCENE_COLLECT_STAR), 0);\n                    }\n                }\n                break;\n\n            case 42:\n                play_sound(SOUND_MARIO_HERE_WE_GO, m->marioObj->header.gfx.cameraToObject);\n                break;\n\n            case 80:\n                if (!(m->actionArg & 1)) {\n                    level_trigger_warp(m, WARP_OP_STAR_EXIT);\n                } else {\n                    enable_time_stop();\n                    create_dialog_box_with_response(gLastCompletedStarNum == 7 ? DIALOG_013 : DIALOG_014);\n                    m->actionState = 1;\n                }\n                break;\n        }\n    } else if (m->actionState == 1 && gDialogResponse != DIALOG_RESPONSE_NONE) {\n        if (gDialogResponse == DIALOG_RESPONSE_YES) {\n            save_file_do_save(gCurrSaveFileNum - 1);\n        }\n        m->actionState = 2;\n    } else if (m->actionState == 2 && is_anim_at_end(m)) {\n        disable_time_stop();\n        enable_background_sound();\n        dialogID = get_star_collection_dialog(m);\n        if (dialogID) {\n            // look up for dialog\n            set_mario_action(m, ACT_READING_AUTOMATIC_DIALOG, dialogID);\n        } else {\n            set_mario_action(m, isInWater ? ACT_WATER_IDLE : ACT_IDLE, 0);\n        }\n    }\n}\n\ns32 act_star_dance(struct MarioState *m) {\n    m->faceAngle[1] = m->area->camera->yaw;\n    set_mario_animation(m, m->actionState == 2 ? MARIO_ANIM_RETURN_FROM_STAR_DANCE\n                                               : MARIO_ANIM_STAR_DANCE);\n    general_star_dance_handler(m, 0);\n    if (m->actionState != 2 && m->actionTimer >= 40) {\n        m->marioBodyState->handState = MARIO_HAND_PEACE_SIGN;\n    }\n    stop_and_set_height_to_floor(m);\n    return FALSE;\n}\n\ns32 act_star_dance_water(struct MarioState *m) {\n    m->faceAngle[1] = m->area->camera->yaw;\n    set_mario_animation(m, m->actionState == 2 ? MARIO_ANIM_RETURN_FROM_WATER_STAR_DANCE\n                                               : MARIO_ANIM_WATER_STAR_DANCE);\n    vec3f_copy(m->marioObj->header.gfx.pos, m->pos);\n    vec3s_set(m->marioObj->header.gfx.angle, 0, m->faceAngle[1], 0);\n    general_star_dance_handler(m, 1);\n    if (m->actionState != 2 && m->actionTimer >= 62) {\n        m->marioBodyState->handState = MARIO_HAND_PEACE_SIGN;\n    }\n    return FALSE;\n}\n\ns32 act_fall_after_star_grab(struct MarioState *m) {\n    if (m->pos[1] < m->waterLevel - 130) {\n        play_sound(SOUND_ACTION_UNKNOWN430, m->marioObj->header.gfx.cameraToObject);\n        m->particleFlags |= PARTICLE_WATER_SPLASH;\n        return set_mario_action(m, ACT_STAR_DANCE_WATER, m->actionArg);\n    }\n    if (perform_air_step(m, 1) == AIR_STEP_LANDED) {\n        play_mario_landing_sound(m, SOUND_ACTION_TERRAIN_LANDING);\n        set_mario_action(m, m->actionArg & 1 ? ACT_STAR_DANCE_NO_EXIT : ACT_STAR_DANCE_EXIT,\n                         m->actionArg);\n    }\n    set_mario_animation(m, MARIO_ANIM_GENERAL_FALL);\n    return FALSE;\n}\n\ns32 common_death_handler(struct MarioState *m, s32 animation, s32 frameToDeathWarp) {\n    s32 animFrame = set_mario_animation(m, animation);\n    if (animFrame == frameToDeathWarp) {\n        level_trigger_warp(m, WARP_OP_DEATH);\n    }\n    m->marioBodyState->eyeState = MARIO_EYES_DEAD;\n    stop_and_set_height_to_floor(m);\n    return animFrame;\n}\n\ns32 act_standing_death(struct MarioState *m) {\n    if (m->input & INPUT_IN_POISON_GAS) {\n        return set_mario_action(m, ACT_SUFFOCATION, 0);\n    }\n\n    play_sound_if_no_flag(m, SOUND_MARIO_DYING, MARIO_ACTION_SOUND_PLAYED);\n    common_death_handler(m, MARIO_ANIM_DYING_FALL_OVER, 80);\n    if (m->marioObj->header.gfx.animInfo.animFrame == 77) {\n        play_mario_landing_sound(m, SOUND_ACTION_TERRAIN_BODY_HIT_GROUND);\n    }\n    return FALSE;\n}\n\ns32 act_electrocution(struct MarioState *m) {\n    play_sound_if_no_flag(m, SOUND_MARIO_DYING, MARIO_ACTION_SOUND_PLAYED);\n    common_death_handler(m, MARIO_ANIM_ELECTROCUTION, 43);\n    return FALSE;\n}\n\ns32 act_suffocation(struct MarioState *m) {\n    play_sound_if_no_flag(m, SOUND_MARIO_DYING, MARIO_ACTION_SOUND_PLAYED);\n    common_death_handler(m, MARIO_ANIM_SUFFOCATING, 86);\n    return FALSE;\n}\n\ns32 act_death_on_back(struct MarioState *m) {\n    play_sound_if_no_flag(m, SOUND_MARIO_DYING, MARIO_ACTION_SOUND_PLAYED);\n    if (common_death_handler(m, MARIO_ANIM_DYING_ON_BACK, 54) == 40) {\n        play_mario_heavy_landing_sound(m, SOUND_ACTION_TERRAIN_BODY_HIT_GROUND);\n    }\n    return FALSE;\n}\n\ns32 act_death_on_stomach(struct MarioState *m) {\n    play_sound_if_no_flag(m, SOUND_MARIO_DYING, MARIO_ACTION_SOUND_PLAYED);\n    if (common_death_handler(m, MARIO_ANIM_DYING_ON_STOMACH, 37) == 37) {\n        play_mario_heavy_landing_sound(m, SOUND_ACTION_TERRAIN_BODY_HIT_GROUND);\n    }\n    return FALSE;\n}\n\ns32 act_quicksand_death(struct MarioState *m) {\n    if (m->actionState == 0) {\n        set_mario_animation(m, MARIO_ANIM_DYING_IN_QUICKSAND);\n        set_anim_to_frame(m, 60);\n        m->actionState = 1;\n    }\n    if (m->actionState == 1) {\n        if (m->quicksandDepth >= 100.0f) {\n            play_sound_if_no_flag(m, SOUND_MARIO_WAAAOOOW, MARIO_ACTION_SOUND_PLAYED);\n        }\n        if ((m->quicksandDepth += 5.0f) >= 180.0f) {\n            level_trigger_warp(m, WARP_OP_DEATH);\n            m->actionState = 2;\n        }\n    }\n    stationary_ground_step(m);\n    play_sound(SOUND_MOVING_QUICKSAND_DEATH, m->marioObj->header.gfx.cameraToObject);\n    return FALSE;\n}\n\ns32 act_eaten_by_bubba(struct MarioState *m) {\n    play_sound_if_no_flag(m, SOUND_MARIO_DYING, MARIO_ACTION_SOUND_PLAYED);\n    set_mario_animation(m, MARIO_ANIM_A_POSE);\n    m->marioObj->header.gfx.node.flags &= ~GRAPH_RENDER_ACTIVE;\n    m->health = 0xFF;\n    if (m->actionTimer++ == 60) {\n        level_trigger_warp(m, WARP_OP_DEATH);\n    }\n    return FALSE;\n}\n\n// set animation and forwardVel; when perform_air_step returns AIR_STEP_LANDED,\n// set the new action\ns32 launch_mario_until_land(struct MarioState *m, s32 endAction, s32 animation, f32 forwardVel) {\n    s32 airStepLanded;\n    mario_set_forward_vel(m, forwardVel);\n    set_mario_animation(m, animation);\n    airStepLanded = (perform_air_step(m, 0) == AIR_STEP_LANDED);\n    if (airStepLanded) {\n        set_mario_action(m, endAction, 0);\n    }\n    return airStepLanded;\n}\n\ns32 act_unlocking_key_door(struct MarioState *m) {\n    m->faceAngle[1] = m->usedObj->oMoveAngleYaw;\n\n    m->pos[0] = m->usedObj->oPosX + coss(m->faceAngle[1]) * 75.0f;\n    m->pos[2] = m->usedObj->oPosZ + sins(m->faceAngle[1]) * 75.0f;\n\n    if (m->actionArg & 2) {\n        m->faceAngle[1] += 0x8000;\n    }\n\n    if (m->actionTimer == 0) {\n        spawn_obj_at_mario_rel_yaw(m, MODEL_BOWSER_KEY_CUTSCENE, bhvBowserKeyUnlockDoor, 0);\n        set_mario_animation(m, MARIO_ANIM_UNLOCK_DOOR);\n    }\n\n    switch (m->marioObj->header.gfx.animInfo.animFrame) {\n        case 79:\n            play_sound(SOUND_GENERAL_DOOR_INSERT_KEY, m->marioObj->header.gfx.cameraToObject);\n            break;\n        case 111:\n            play_sound(SOUND_GENERAL_DOOR_TURN_KEY, m->marioObj->header.gfx.cameraToObject);\n            break;\n    }\n\n    update_mario_pos_for_anim(m);\n    stop_and_set_height_to_floor(m);\n\n    if (is_anim_at_end(m)) {\n        if (m->usedObj->oBhvParams >> 24 == 1) {\n            save_file_set_flags(SAVE_FLAG_UNLOCKED_UPSTAIRS_DOOR);\n            save_file_clear_flags(SAVE_FLAG_HAVE_KEY_2);\n        } else {\n            save_file_set_flags(SAVE_FLAG_UNLOCKED_BASEMENT_DOOR);\n            save_file_clear_flags(SAVE_FLAG_HAVE_KEY_1);\n        }\n        set_mario_action(m, ACT_WALKING, 0);\n    }\n\n    m->actionTimer++;\n    return FALSE;\n}\n\ns32 act_unlocking_star_door(struct MarioState *m) {\n    switch (m->actionState) {\n        case 0:\n            m->faceAngle[1] = m->usedObj->oMoveAngleYaw;\n            if (m->actionArg & 2) {\n                m->faceAngle[1] += 0x8000;\n            }\n            m->marioObj->oMarioReadingSignDPosX = m->pos[0];\n            m->marioObj->oMarioReadingSignDPosZ = m->pos[2];\n            set_mario_animation(m, MARIO_ANIM_SUMMON_STAR);\n            m->actionState++;\n            break;\n        case 1:\n            if (is_anim_at_end(m)) {\n                spawn_object(m->marioObj, MODEL_STAR, bhvUnlockDoorStar);\n                m->actionState++;\n            }\n            break;\n        case 2:\n            if (m->actionTimer++ == 70) {\n                set_mario_animation(m, MARIO_ANIM_RETURN_STAR_APPROACH_DOOR);\n                m->actionState++;\n            }\n            break;\n        case 3:\n            if (is_anim_at_end(m)) {\n                save_file_set_flags(get_door_save_file_flag(m->usedObj));\n                set_mario_action(m, ACT_READING_AUTOMATIC_DIALOG, DIALOG_038);\n            }\n            break;\n    }\n\n    m->pos[0] = m->marioObj->oMarioReadingSignDPosX;\n    m->pos[2] = m->marioObj->oMarioReadingSignDPosZ;\n\n    update_mario_pos_for_anim(m);\n    stop_and_set_height_to_floor(m);\n\n    return FALSE;\n}\n\ns32 act_entering_star_door(struct MarioState *m) {\n    f32 targetDX;\n    f32 targetDZ;\n    s16 targetAngle;\n\n    if (m->actionTimer++ == 0) {\n        m->interactObj->oInteractStatus = INT_STATUS_UNK16;\n\n        // ~30 degrees / 1/12 rot\n        targetAngle = m->usedObj->oMoveAngleYaw + 0x1555;\n        if (m->actionArg & 2) {\n            targetAngle += 0x5556; // ~120 degrees / 1/3 rot (total 150d / 5/12)\n        }\n\n        // targetDX and targetDZ are the offsets to add to Mario's position to\n        // have Mario stand 150 units in front of the door\n\n        targetDX = m->usedObj->oPosX + 150.0f * sins(targetAngle) - m->pos[0];\n        targetDZ = m->usedObj->oPosZ + 150.0f * coss(targetAngle) - m->pos[2];\n\n        m->marioObj->oMarioReadingSignDPosX = targetDX / 20.0f;\n        m->marioObj->oMarioReadingSignDPosZ = targetDZ / 20.0f;\n\n        m->faceAngle[1] = atan2s(targetDZ, targetDX);\n    }\n\n    // set Mario's animation\n    if (m->actionTimer < 15) {\n        set_mario_animation(m, MARIO_ANIM_FIRST_PERSON);\n    }\n\n    // go through door? for 20 frames\n    else if (m->actionTimer < 35) {\n        m->pos[0] += m->marioObj->oMarioReadingSignDPosX;\n        m->pos[2] += m->marioObj->oMarioReadingSignDPosZ;\n\n        set_mario_anim_with_accel(m, MARIO_ANIM_WALKING, 0x00028000);\n    }\n\n    else {\n        m->faceAngle[1] = m->usedObj->oMoveAngleYaw;\n\n        if (m->actionArg & 2) {\n            m->faceAngle[1] += 0x8000;\n        }\n\n        m->pos[0] += 12.0f * sins(m->faceAngle[1]);\n        m->pos[2] += 12.0f * coss(m->faceAngle[1]);\n\n        set_mario_anim_with_accel(m, MARIO_ANIM_WALKING, 0x00028000);\n    }\n\n    stop_and_set_height_to_floor(m);\n\n    if (m->actionTimer == 48) {\n        set_mario_action(m, ACT_IDLE, 0);\n    }\n\n    return FALSE;\n}\n\ns32 act_going_through_door(struct MarioState *m) {\n    if (m->actionTimer == 0) {\n        if (m->actionArg & 1) {\n            m->interactObj->oInteractStatus = INT_STATUS_UNK16;\n            set_mario_animation(m, MARIO_ANIM_PULL_DOOR_WALK_IN);\n        } else {\n            m->interactObj->oInteractStatus = INT_STATUS_UNK17;\n            set_mario_animation(m, MARIO_ANIM_PUSH_DOOR_WALK_IN);\n        }\n    }\n    m->faceAngle[1] = m->usedObj->oMoveAngleYaw;\n    m->pos[0] = m->usedObj->oPosX;\n    m->pos[2] = m->usedObj->oPosZ;\n\n    update_mario_pos_for_anim(m);\n    stop_and_set_height_to_floor(m);\n\n    if (m->actionArg & 4) {\n        if (m->actionTimer == 16) {\n            level_trigger_warp(m, WARP_OP_WARP_DOOR);\n        }\n    } else if (is_anim_at_end(m)) {\n        if (m->actionArg & 2) {\n            m->faceAngle[1] += 0x8000;\n        }\n        set_mario_action(m, ACT_IDLE, 0);\n    }\n\n    m->actionTimer++;\n    return FALSE;\n}\n\ns32 act_warp_door_spawn(struct MarioState *m) {\n    if (m->actionState == 0) {\n        m->actionState = 1;\n        if (m->actionArg & 1) {\n            m->usedObj->oInteractStatus = INT_STATUS_UNK18;\n        } else {\n            m->usedObj->oInteractStatus = INT_STATUS_UNK19;\n        }\n    } else if (m->usedObj->oAction == 0) {\n        if (gNeverEnteredCastle == TRUE && gCurrLevelNum == LEVEL_CASTLE) {\n            set_mario_action(m, ACT_READING_AUTOMATIC_DIALOG, DIALOG_021);\n        } else {\n            set_mario_action(m, ACT_IDLE, 0);\n        }\n    }\n    set_mario_animation(m, MARIO_ANIM_FIRST_PERSON);\n    stop_and_set_height_to_floor(m);\n    return FALSE;\n}\n\ns32 act_emerge_from_pipe(struct MarioState *m) {\n    struct Object *marioObj = m->marioObj;\n\n    if (m->actionTimer++ < 11) {\n        marioObj->header.gfx.node.flags &= ~GRAPH_RENDER_ACTIVE;\n        return FALSE;\n    }\n\n    marioObj->header.gfx.node.flags |= GRAPH_RENDER_ACTIVE;\n\n    play_sound_if_no_flag(m, SOUND_MARIO_YAHOO, MARIO_MARIO_SOUND_PLAYED);\n\n    if (gCurrLevelNum == LEVEL_THI) {\n        if (gCurrAreaIndex == 2) {\n            play_sound_if_no_flag(m, SOUND_MENU_EXIT_PIPE, MARIO_ACTION_SOUND_PLAYED);\n        } else {\n            play_sound_if_no_flag(m, SOUND_MENU_ENTER_PIPE, MARIO_ACTION_SOUND_PLAYED);\n        }\n    }\n\n    if (launch_mario_until_land(m, ACT_JUMP_LAND_STOP, MARIO_ANIM_SINGLE_JUMP, 8.0f)) {\n        mario_set_forward_vel(m, 0.0f);\n        play_mario_landing_sound(m, SOUND_ACTION_TERRAIN_LANDING);\n    }\n    return FALSE;\n}\n\ns32 act_spawn_spin_airborne(struct MarioState *m) {\n    // entered water, exit action\n    if (m->pos[1] < m->waterLevel - 100) {\n        load_level_init_text(0);\n        return set_water_plunge_action(m);\n    }\n\n    // updates all velocity variables based on m->forwardVel\n    mario_set_forward_vel(m, m->forwardVel);\n\n    // landed on floor, play spawn land animation\n    if (perform_air_step(m, 0.0) == AIR_STEP_LANDED) {\n        play_mario_landing_sound(m, SOUND_ACTION_TERRAIN_LANDING);\n        set_mario_action(m, ACT_SPAWN_SPIN_LANDING, 0);\n    }\n\n    // is 300 units above floor, spin and play woosh sounds\n    if (m->actionState == 0 && m->pos[1] - m->floorHeight > 300.0f) {\n        if (set_mario_animation(m, MARIO_ANIM_FORWARD_SPINNING) == 0) { // first anim frame\n            play_sound(SOUND_ACTION_SPIN, m->marioObj->header.gfx.cameraToObject);\n        }\n    }\n\n    // under 300 units above floor, enter freefall animation\n    else {\n        m->actionState = 1;\n        set_mario_animation(m, MARIO_ANIM_GENERAL_FALL);\n    }\n\n    return FALSE;\n}\n\ns32 act_spawn_spin_landing(struct MarioState *m) {\n    stop_and_set_height_to_floor(m);\n    set_mario_animation(m, MARIO_ANIM_GENERAL_LAND);\n    if (is_anim_at_end(m)) {\n        load_level_init_text(0);\n        set_mario_action(m, ACT_IDLE, 0);\n    }\n    return FALSE;\n}\n\n/**\n * act_exit_airborne: Jump out of a level after collecting a Power Star (no\n ** sparkles)\n * Mario always faces a level entrance when he launches out of it, whether he\n * died or he collected a star/key. Because of that, we need him to move away\n * from the painting by setting his speed to -32.0f and have him face away from\n * the painting by adding 0x8000 (180 deg) to his graphics angle. We also set\n * his heal counter to 31 to restore 7.75 units of his health, and enable the\n * particle flag that generates sparkles.\n */\ns32 act_exit_airborne(struct MarioState *m) {\n    if (15 < m->actionTimer++\n        && launch_mario_until_land(m, ACT_EXIT_LAND_SAVE_DIALOG, MARIO_ANIM_GENERAL_FALL, -32.0f)) {\n        // heal Mario\n        m->healCounter = 31;\n    }\n    // rotate him to face away from the entrance\n    m->marioObj->header.gfx.angle[1] += 0x8000;\n    m->particleFlags |= PARTICLE_SPARKLES;\n    return FALSE;\n}\n\ns32 act_falling_exit_airborne(struct MarioState *m) {\n    if (launch_mario_until_land(m, ACT_EXIT_LAND_SAVE_DIALOG, MARIO_ANIM_GENERAL_FALL, 0.0f)) {\n        // heal Mario\n        m->healCounter = 31;\n    }\n    // rotate Mario to face away from the entrance\n    m->marioObj->header.gfx.angle[1] += 0x8000;\n    m->particleFlags |= PARTICLE_SPARKLES;\n    return FALSE;\n}\n\ns32 act_exit_land_save_dialog(struct MarioState *m) {\n    s32 animFrame;\n    stationary_ground_step(m);\n    play_mario_landing_sound_once(m, SOUND_ACTION_TERRAIN_LANDING);\n    switch (m->actionState) {\n        // determine type of exit\n        case 0:\n            set_mario_animation(m, m->actionArg == 0 ? MARIO_ANIM_GENERAL_LAND\n                                                     : MARIO_ANIM_LAND_FROM_SINGLE_JUMP);\n            if (is_anim_past_end(m)) {\n                if (gLastCompletedCourseNum != COURSE_BITDW\n                    && gLastCompletedCourseNum != COURSE_BITFS) {\n                    enable_time_stop();\n                }\n\n                set_menu_mode(MENU_MODE_RENDER_COURSE_COMPLETE_SCREEN);\n                gSaveOptSelectIndex = MENU_OPT_NONE;\n\n                m->actionState = 3; // star exit with cap\n                if (!(m->flags & MARIO_CAP_ON_HEAD)) {\n                    m->actionState = 2; // star exit without cap\n                }\n                if (gLastCompletedCourseNum == COURSE_BITDW\n                    || gLastCompletedCourseNum == COURSE_BITFS) {\n                    m->actionState = 1; // key exit\n                }\n            }\n            break;\n        // key exit\n        case 1:\n            animFrame = set_mario_animation(m, MARIO_ANIM_THROW_CATCH_KEY);\n            switch (animFrame) {\n                case -1:\n                    spawn_obj_at_mario_rel_yaw(m, MODEL_BOWSER_KEY_CUTSCENE, bhvBowserKeyCourseExit, -32768);\n                    //! fallthrough\n                case 67:\n                    play_sound(SOUND_ACTION_KEY_SWISH, m->marioObj->header.gfx.cameraToObject);\n                    //! fallthrough\n                case 83:\n                    play_sound(SOUND_ACTION_PAT_BACK, m->marioObj->header.gfx.cameraToObject);\n                    //! fallthrough\n                case 111:\n                    play_sound(SOUND_ACTION_UNKNOWN45C, m->marioObj->header.gfx.cameraToObject);\n                    // no break\n            }\n            handle_save_menu(m);\n            break;\n        // exit without cap\n        case 2:\n            animFrame = set_mario_animation(m, MARIO_ANIM_MISSING_CAP);\n            if ((animFrame >= 18 && animFrame < 55) || (animFrame >= 112 && animFrame < 134)) {\n                m->marioBodyState->handState = MARIO_HAND_OPEN;\n            }\n            if (!(animFrame < 109) && animFrame < 154) {\n                m->marioBodyState->eyeState = MARIO_EYES_HALF_CLOSED;\n            }\n\n            handle_save_menu(m);\n            break;\n        // exit with cap\n        case 3:\n            animFrame = set_mario_animation(m, MARIO_ANIM_TAKE_CAP_OFF_THEN_ON);\n            switch (animFrame) {\n                case 12:\n                    cutscene_take_cap_off(m);\n                    break;\n                case 37:\n                // fallthrough\n                case 53:\n                    play_sound(SOUND_ACTION_BRUSH_HAIR, m->marioObj->header.gfx.cameraToObject);\n                    break;\n                case 82:\n                    cutscene_put_cap_on(m);\n                    break;\n            }\n            handle_save_menu(m);\n            break;\n    }\n\n    m->marioObj->header.gfx.angle[1] += 0x8000;\n    return FALSE;\n}\n\ns32 act_death_exit(struct MarioState *m) {\n    if (15 < m->actionTimer++\n        && launch_mario_until_land(m, ACT_DEATH_EXIT_LAND, MARIO_ANIM_GENERAL_FALL, -32.0f)) {\n#ifdef VERSION_JP\n        play_sound(SOUND_MARIO_OOOF, m->marioObj->header.gfx.cameraToObject);\n#else\n        play_sound(SOUND_MARIO_OOOF2, m->marioObj->header.gfx.cameraToObject);\n#endif\n#if ENABLE_RUMBLE\n        queue_rumble_data(5, 80);\n#endif\n        m->numLives--;\n        // restore 7.75 units of health\n        m->healCounter = 31;\n    }\n    // one unit of health\n    m->health = 0x0100;\n    return FALSE;\n}\n\ns32 act_unused_death_exit(struct MarioState *m) {\n    if (launch_mario_until_land(m, ACT_FREEFALL_LAND_STOP, MARIO_ANIM_GENERAL_FALL, 0.0f)) {\n#ifdef VERSION_JP\n        play_sound(SOUND_MARIO_OOOF, m->marioObj->header.gfx.cameraToObject);\n#else\n        play_sound(SOUND_MARIO_OOOF2, m->marioObj->header.gfx.cameraToObject);\n#endif\n        m->numLives--;\n        // restore 7.75 units of health\n        m->healCounter = 31;\n    }\n    // one unit of health\n    m->health = 0x0100;\n    return FALSE;\n}\n\ns32 act_falling_death_exit(struct MarioState *m) {\n    if (launch_mario_until_land(m, ACT_DEATH_EXIT_LAND, MARIO_ANIM_GENERAL_FALL, 0.0f)) {\n#ifdef VERSION_JP\n        play_sound(SOUND_MARIO_OOOF, m->marioObj->header.gfx.cameraToObject);\n#else\n        play_sound(SOUND_MARIO_OOOF2, m->marioObj->header.gfx.cameraToObject);\n#endif\n#if ENABLE_RUMBLE\n        queue_rumble_data(5, 80);\n#endif\n        m->numLives--;\n        // restore 7.75 units of health\n        m->healCounter = 31;\n    }\n    // one unit of health\n    m->health = 0x0100;\n    return FALSE;\n}\n\n// waits 11 frames before actually executing, also has reduced fvel\ns32 act_special_exit_airborne(struct MarioState *m) {\n    struct Object *marioObj = m->marioObj;\n\n    play_sound_if_no_flag(m, SOUND_MARIO_YAHOO, MARIO_MARIO_SOUND_PLAYED);\n\n    if (m->actionTimer++ < 11) {\n        marioObj->header.gfx.node.flags &= ~GRAPH_RENDER_ACTIVE;\n        return FALSE;\n    }\n\n    if (launch_mario_until_land(m, ACT_EXIT_LAND_SAVE_DIALOG, MARIO_ANIM_SINGLE_JUMP, -24.0f)) {\n        // heal Mario\n        m->healCounter = 31;\n        m->actionArg = 1;\n    }\n\n    m->particleFlags |= PARTICLE_SPARKLES;\n    // rotate Mario to face away from the entrance\n    marioObj->header.gfx.angle[1] += 0x8000;\n    // show Mario\n    marioObj->header.gfx.node.flags |= GRAPH_RENDER_ACTIVE;\n\n    return FALSE;\n}\n\ns32 act_special_death_exit(struct MarioState *m) {\n    struct Object *marioObj = m->marioObj;\n\n    if (m->actionTimer++ < 11) {\n        marioObj->header.gfx.node.flags &= ~GRAPH_RENDER_ACTIVE;\n        return FALSE;\n    }\n\n    if (launch_mario_until_land(m, ACT_HARD_BACKWARD_GROUND_KB, MARIO_ANIM_BACKWARD_AIR_KB, -24.0f)) {\n#if ENABLE_RUMBLE\n        queue_rumble_data(5, 80);\n#endif\n        m->numLives--;\n        m->healCounter = 31;\n    }\n    // show Mario\n    marioObj->header.gfx.node.flags |= GRAPH_RENDER_ACTIVE;\n    // one unit of health\n    m->health = 0x0100;\n\n    return FALSE;\n}\n\ns32 act_spawn_no_spin_airborne(struct MarioState *m) {\n    launch_mario_until_land(m, ACT_SPAWN_NO_SPIN_LANDING, MARIO_ANIM_GENERAL_FALL, 0.0f);\n    if (m->pos[1] < m->waterLevel - 100) {\n        set_water_plunge_action(m);\n    }\n    return FALSE;\n}\n\ns32 act_spawn_no_spin_landing(struct MarioState *m) {\n    play_mario_landing_sound_once(m, SOUND_ACTION_TERRAIN_LANDING);\n    set_mario_animation(m, MARIO_ANIM_GENERAL_LAND);\n    stop_and_set_height_to_floor(m);\n    if (is_anim_at_end(m)) {\n        load_level_init_text(0);\n        set_mario_action(m, ACT_IDLE, 0);\n    }\n    return FALSE;\n}\n\ns32 act_bbh_enter_spin(struct MarioState *m) {\n    f32 floorDist;\n    f32 scale;\n    f32 cageDX;\n    f32 cageDZ;\n    f32 cageDist;\n    f32 forwardVel;\n\n    cageDX = m->usedObj->oPosX - m->pos[0];\n    cageDZ = m->usedObj->oPosZ - m->pos[2];\n    cageDist = sqrtf(cageDX * cageDX + cageDZ * cageDZ);\n\n    if (cageDist > 20.0f) {\n        forwardVel = 10.0f;\n    } else {\n        forwardVel = cageDist / 2.0f;\n    }\n    if (forwardVel < 0.5f) {\n        forwardVel = 0.0f;\n    }\n\n    switch (m->actionState) {\n        case 0:\n            floorDist = 512.0f - (m->pos[1] - m->floorHeight);\n            m->vel[1] = floorDist > 0 ? sqrtf(4.0f * floorDist + 1.0f) - 1.0f : 2.0f;\n\n            m->actionState = 1;\n            m->actionTimer = 100;\n            // fallthrough\n\n        case 1:\n            m->faceAngle[1] = atan2s(cageDZ, cageDX);\n            mario_set_forward_vel(m, forwardVel);\n\n            if (set_mario_animation(m, MARIO_ANIM_FORWARD_SPINNING) == 0) {\n                play_sound(SOUND_ACTION_SPIN, m->marioObj->header.gfx.cameraToObject);\n            }\n\n            m->flags &= ~MARIO_UNKNOWN_08;\n            perform_air_step(m, 0);\n            if (m->vel[1] <= 0) {\n                m->actionState = 2;\n            }\n            break;\n\n        case 2:\n            // fallthrough\n        case 3:\n            m->faceAngle[1] = atan2s(cageDZ, cageDX);\n            mario_set_forward_vel(m, forwardVel);\n            m->flags &= ~MARIO_UNKNOWN_08;\n            if (perform_air_step(m, 0) == AIR_STEP_LANDED) {\n                level_trigger_warp(m, WARP_OP_UNKNOWN_02);\n#if ENABLE_RUMBLE\n                queue_rumble_data(15, 80);\n#endif\n                m->actionState = 4;\n            }\n            if (m->actionState == 2) {\n                if (m->marioObj->header.gfx.animInfo.animFrame == 0) {\n                    m->actionState = 3;\n                }\n            } else {\n                play_sound_if_no_flag(m, SOUND_ACTION_SHRINK_INTO_BBH, MARIO_ACTION_SOUND_PLAYED);\n                set_mario_animation(m, MARIO_ANIM_DIVE);\n                m->marioObj->header.gfx.angle[0] = atan2s(m->forwardVel, -m->vel[1]);\n            }\n            m->squishTimer = 0xFF;\n            if (m->actionTimer >= 11) {\n                m->actionTimer -= 6;\n                scale = m->actionTimer / 100.0f;\n                vec3f_set(m->marioObj->header.gfx.scale, scale, scale, scale);\n            }\n            break;\n\n        case 4:\n            stop_and_set_height_to_floor(m);\n            m->marioObj->header.gfx.node.flags |= GRAPH_RENDER_INVISIBLE;\n            break;\n    }\n\n    return FALSE;\n}\n\ns32 act_bbh_enter_jump(struct MarioState *m) {\n    f32 cageDX;\n    f32 cageDZ;\n    f32 cageDist;\n\n    play_mario_action_sound(\n        m, m->flags & MARIO_METAL_CAP ? SOUND_ACTION_METAL_JUMP : SOUND_ACTION_TERRAIN_JUMP, 1);\n    play_mario_jump_sound(m);\n\n    if (m->actionState == 0) {\n        cageDX = m->usedObj->oPosX - m->pos[0];\n        cageDZ = m->usedObj->oPosZ - m->pos[2];\n        cageDist = sqrtf(cageDX * cageDX + cageDZ * cageDZ);\n\n        m->vel[1] = 60.0f;\n        m->faceAngle[1] = atan2s(cageDZ, cageDX);\n        mario_set_forward_vel(m, cageDist / 20.0f);\n\n        m->flags &= ~MARIO_UNKNOWN_08;\n        m->actionState = 1;\n    }\n\n    set_mario_animation(m, MARIO_ANIM_DOUBLE_JUMP_RISE);\n    perform_air_step(m, 0);\n\n    if (m->vel[1] <= 0.0f) {\n        set_mario_action(m, ACT_BBH_ENTER_SPIN, 0);\n    }\n\n    return FALSE;\n}\n\ns32 act_teleport_fade_out(struct MarioState *m) {\n    play_sound_if_no_flag(m, SOUND_ACTION_TELEPORT, MARIO_ACTION_SOUND_PLAYED);\n    set_mario_animation(m, m->prevAction == ACT_CROUCHING ? MARIO_ANIM_CROUCHING\n                                                          : MARIO_ANIM_FIRST_PERSON);\n\n#if ENABLE_RUMBLE\n    if (m->actionTimer == 0) {\n        queue_rumble_data(30, 70);\n        func_sh_8024C89C(2);\n    }\n#endif\n\n    m->flags |= MARIO_TELEPORTING;\n\n    if (m->actionTimer < 32) {\n        m->fadeWarpOpacity = (-m->actionTimer << 3) + 0xF8;\n    }\n\n    if (m->actionTimer++ == 20) {\n        level_trigger_warp(m, WARP_OP_TELEPORT);\n    }\n\n    stop_and_set_height_to_floor(m);\n\n    return FALSE;\n}\n\ns32 act_teleport_fade_in(struct MarioState *m) {\n    play_sound_if_no_flag(m, SOUND_ACTION_TELEPORT, MARIO_ACTION_SOUND_PLAYED);\n    set_mario_animation(m, MARIO_ANIM_FIRST_PERSON);\n\n#if ENABLE_RUMBLE\n    if (m->actionTimer == 0) {\n        queue_rumble_data(30, 70);\n        func_sh_8024C89C(2);\n    }\n#endif\n\n    if (m->actionTimer < 32) {\n        m->flags |= MARIO_TELEPORTING;\n        m->fadeWarpOpacity = m->actionTimer << 3;\n    } else {\n        m->flags &= ~MARIO_TELEPORTING;\n    }\n\n    if (m->actionTimer++ == 32) {\n        if (m->pos[1] < m->waterLevel - 100) {\n            // Check if the camera is not underwater.\n            if (m->area->camera->mode != CAMERA_MODE_WATER_SURFACE) {\n                set_camera_mode(m->area->camera, CAMERA_MODE_WATER_SURFACE, 1);\n            }\n            set_mario_action(m, ACT_WATER_IDLE, 0);\n        } else {\n            set_mario_action(m, ACT_IDLE, 0);\n        }\n    }\n\n    stop_and_set_height_to_floor(m);\n\n    return FALSE;\n}\n\ns32 act_shocked(struct MarioState *m) {\n    play_sound_if_no_flag(m, SOUND_MARIO_WAAAOOOW, MARIO_ACTION_SOUND_PLAYED);\n    play_sound(SOUND_MOVING_SHOCKED, m->marioObj->header.gfx.cameraToObject);\n    set_camera_shake_from_hit(SHAKE_SHOCK);\n\n    if (set_mario_animation(m, MARIO_ANIM_SHOCKED) == 0) {\n        m->actionTimer++;\n        m->flags |= MARIO_METAL_SHOCK;\n    }\n\n    if (m->actionArg == 0) {\n        mario_set_forward_vel(m, 0.0f);\n        if (perform_air_step(m, 1) == AIR_STEP_LANDED) {\n            play_mario_landing_sound(m, SOUND_ACTION_TERRAIN_LANDING);\n            m->actionArg = 1;\n        }\n    } else {\n        if (m->actionTimer >= 6) {\n            m->invincTimer = 30;\n            set_mario_action(m, m->health < 0x0100 ? ACT_ELECTROCUTION : ACT_IDLE, 0);\n        }\n        stop_and_set_height_to_floor(m);\n    }\n\n    return FALSE;\n}\n\ns32 act_squished(struct MarioState *m) {\n    UNUSED u8 filler[4];\n    f32 squishAmount;\n    f32 spaceUnderCeil;\n    s16 surfAngle;\n    s32 underSteepSurf = FALSE; // seems to be responsible for setting velocity?\n\n    if ((spaceUnderCeil = m->ceilHeight - m->floorHeight) < 0) {\n        spaceUnderCeil = 0;\n    }\n\n    switch (m->actionState) {\n        case 0:\n            if (spaceUnderCeil > 160.0f) {\n                m->squishTimer = 0;\n                return set_mario_action(m, ACT_IDLE, 0);\n            }\n\n            m->squishTimer = 0xFF;\n\n            if (spaceUnderCeil >= 10.1f) {\n                // Mario becomes a pancake\n                squishAmount = spaceUnderCeil / 160.0f;\n                vec3f_set(m->marioObj->header.gfx.scale, 2.0f - squishAmount, squishAmount,\n                          2.0f - squishAmount);\n            } else {\n                if (!(m->flags & MARIO_METAL_CAP) && m->invincTimer == 0) {\n                    // cap on: 3 units; cap off: 4.5 units\n                    m->hurtCounter += m->flags & MARIO_CAP_ON_HEAD ? 12 : 18;\n                    play_sound_if_no_flag(m, SOUND_MARIO_ATTACKED, MARIO_MARIO_SOUND_PLAYED);\n                }\n\n                // Both of the 1.8's are really floats, but one of them has to\n                // be written as a double for this to match on -O2.\n                vec3f_set(m->marioObj->header.gfx.scale, 1.8, 0.05f, 1.8f);\n#if ENABLE_RUMBLE\n                queue_rumble_data(10, 80);\n#endif\n                m->actionState = 1;\n            }\n            break;\n        case 1:\n            if (spaceUnderCeil >= 30.0f) {\n                m->actionState = 2;\n            }\n            break;\n        case 2:\n            m->actionTimer++;\n            if (m->actionTimer >= 15) {\n                // 1 unit of health\n                if (m->health < 0x0100) {\n                    level_trigger_warp(m, WARP_OP_DEATH);\n                    // woosh, he's gone!\n                    set_mario_action(m, ACT_DISAPPEARED, 0);\n                } else if (m->hurtCounter == 0) {\n                    // un-squish animation\n                    m->squishTimer = 30;\n                    set_mario_action(m, ACT_IDLE, 0);\n                }\n            }\n            break;\n    }\n\n    // steep floor\n    if (m->floor != NULL && m->floor->normal.y < 0.5f) {\n        surfAngle = atan2s(m->floor->normal.z, m->floor->normal.x);\n        underSteepSurf = TRUE;\n    }\n    // steep ceiling\n    if (m->ceil != NULL && -0.5f < m->ceil->normal.y) {\n        surfAngle = atan2s(m->ceil->normal.z, m->ceil->normal.x);\n        underSteepSurf = TRUE;\n    }\n\n    if (underSteepSurf) {\n        m->vel[0] = sins(surfAngle) * 10.0f;\n        m->vel[2] = coss(surfAngle) * 10.0f;\n        m->vel[1] = 0;\n\n        // check if there's no floor 10 units away from the surface\n        if (perform_ground_step(m) == GROUND_STEP_LEFT_GROUND) {\n            // instant un-squish\n            m->squishTimer = 0;\n            set_mario_action(m, ACT_IDLE, 0);\n            return FALSE;\n        }\n    }\n\n    // squished for more than 10 seconds, so kill Mario\n    if (m->actionArg++ > 300) {\n        // 0 units of health\n        m->health = 0x00FF;\n        m->hurtCounter = 0;\n        level_trigger_warp(m, WARP_OP_DEATH);\n        // woosh, he's gone!\n        set_mario_action(m, ACT_DISAPPEARED, 0);\n    }\n    stop_and_set_height_to_floor(m);\n    set_mario_animation(m, MARIO_ANIM_A_POSE);\n    return FALSE;\n}\n\ns32 act_putting_on_cap(struct MarioState *m) {\n    s32 animFrame = set_mario_animation(m, MARIO_ANIM_PUT_CAP_ON);\n\n    if (animFrame == 0) {\n        enable_time_stop();\n    }\n\n    if (animFrame == 28) {\n        cutscene_put_cap_on(m);\n    }\n\n    if (is_anim_at_end(m)) {\n        set_mario_action(m, ACT_IDLE, 0);\n        disable_time_stop();\n    }\n\n    stationary_ground_step(m);\n    return FALSE;\n}\n\nvoid stuck_in_ground_handler(struct MarioState *m, s32 animation, s32 unstuckFrame, s32 target2,\n                             s32 target3, s32 endAction) {\n    s32 animFrame = set_mario_animation(m, animation);\n\n    if (m->input & INPUT_A_PRESSED) {\n        m->actionTimer++;\n        if (m->actionTimer >= 5 && animFrame < unstuckFrame - 1) {\n            animFrame = unstuckFrame - 1;\n            set_anim_to_frame(m, animFrame);\n        }\n    }\n\n    stop_and_set_height_to_floor(m);\n\n    if (animFrame == -1) {\n        play_sound_and_spawn_particles(m, SOUND_ACTION_TERRAIN_STUCK_IN_GROUND, 1);\n    } else if (animFrame == unstuckFrame) {\n#if ENABLE_RUMBLE\n        queue_rumble_data(5, 80);\n#endif\n        play_sound_and_spawn_particles(m, SOUND_ACTION_UNSTUCK_FROM_GROUND, 1);\n    } else if (animFrame == target2 || animFrame == target3) {\n        play_mario_landing_sound(m, SOUND_ACTION_TERRAIN_LANDING);\n    }\n\n    if (is_anim_at_end(m)) {\n        set_mario_action(m, endAction, 0);\n    }\n}\n\ns32 act_head_stuck_in_ground(struct MarioState *m) {\n    stuck_in_ground_handler(m, MARIO_ANIM_HEAD_STUCK_IN_GROUND, 96, 105, 135, ACT_IDLE);\n    return FALSE;\n}\n\ns32 act_butt_stuck_in_ground(struct MarioState *m) {\n    stuck_in_ground_handler(m, MARIO_ANIM_BOTTOM_STUCK_IN_GROUND, 127, 136, -2, ACT_GROUND_POUND_LAND);\n    return FALSE;\n}\n\ns32 act_feet_stuck_in_ground(struct MarioState *m) {\n    stuck_in_ground_handler(m, MARIO_ANIM_LEGS_STUCK_IN_GROUND, 116, 129, -2, ACT_IDLE);\n    return FALSE;\n}\n\n/**\n * advance_cutscene_step: Advances the current step in the current cutscene.\n * Resets action state and action timer, adds 1 to the action arg (responsible\n * for keeping track of what step of the cutscene Mario is in.)\n */\nstatic void advance_cutscene_step(struct MarioState *m) {\n    m->actionState = 0;\n    m->actionTimer = 0;\n    m->actionArg++;\n}\n\nstatic void intro_cutscene_hide_hud_and_mario(struct MarioState *m) {\n    gHudDisplay.flags = HUD_DISPLAY_NONE;\n    m->statusForCamera->cameraEvent = CAM_EVENT_START_INTRO;\n    m->marioObj->header.gfx.node.flags &= ~GRAPH_RENDER_ACTIVE;\n    advance_cutscene_step(m);\n}\n\n#ifdef VERSION_EU\n    #define TIMER_SPAWN_PIPE 47\n#else\n    #define TIMER_SPAWN_PIPE 37\n#endif\n\nstatic void intro_cutscene_peach_lakitu_scene(struct MarioState *m) {\n    if ((s16) m->statusForCamera->cameraEvent != CAM_EVENT_START_INTRO) {\n        if (m->actionTimer++ == TIMER_SPAWN_PIPE) {\n            sIntroWarpPipeObj =\n                spawn_object_abs_with_rot(gCurrentObject, 0, MODEL_CASTLE_GROUNDS_WARP_PIPE,\n                                          bhvStaticObject, -1328, 60, 4664, 0, 180, 0);\n            advance_cutscene_step(m);\n        }\n    }\n}\n#undef TIMER_SPAWN_PIPE\n\n#ifdef VERSION_EU\n    #define TIMER_RAISE_PIPE 28\n#else\n    #define TIMER_RAISE_PIPE 38\n#endif\n\nstatic void intro_cutscene_raise_pipe(struct MarioState *m) {\n    sIntroWarpPipeObj->oPosY = camera_approach_f32_symmetric(sIntroWarpPipeObj->oPosY, 260.0f, 10.0f);\n\n    if (m->actionTimer == 0) {\n        play_sound(SOUND_MENU_EXIT_PIPE, sIntroWarpPipeObj->header.gfx.cameraToObject);\n    }\n\n    if (m->actionTimer++ == TIMER_RAISE_PIPE) {\n        m->vel[1] = 60.0f;\n        advance_cutscene_step(m);\n    }\n}\n#undef TIMER_RAISE_PIPE\n\nstatic void intro_cutscene_jump_out_of_pipe(struct MarioState *m) {\n    if (m->actionTimer == 25) {\n        gHudDisplay.flags = HUD_DISPLAY_DEFAULT;\n    }\n\n    if (m->actionTimer++ >= 118) {\n        m->marioObj->header.gfx.node.flags |= GRAPH_RENDER_ACTIVE;\n\n#ifdef VERSION_EU\n        // For some reason these calls were swapped.\n        play_sound_if_no_flag(m, SOUND_ACTION_HIT_3, MARIO_ACTION_SOUND_PLAYED);\n        play_sound_if_no_flag(m, SOUND_MARIO_YAHOO, MARIO_MARIO_SOUND_PLAYED);\n#else\n        play_sound_if_no_flag(m, SOUND_MARIO_YAHOO, MARIO_MARIO_SOUND_PLAYED);\n#ifndef VERSION_JP\n        play_sound_if_no_flag(m, SOUND_ACTION_HIT_3, MARIO_ACTION_SOUND_PLAYED);\n#endif\n#endif\n\n        set_mario_animation(m, MARIO_ANIM_SINGLE_JUMP);\n        mario_set_forward_vel(m, 10.0f);\n        if (perform_air_step(m, 0) == AIR_STEP_LANDED) {\n            sound_banks_enable(SEQ_PLAYER_SFX, SOUND_BANKS_DISABLED_DURING_INTRO_CUTSCENE);\n            play_mario_landing_sound(m, SOUND_ACTION_TERRAIN_LANDING);\n#ifndef VERSION_JP\n            play_sound(SOUND_MARIO_HAHA, m->marioObj->header.gfx.cameraToObject);\n#endif\n            advance_cutscene_step(m);\n        }\n    }\n}\n\nstatic void intro_cutscene_land_outside_pipe(struct MarioState *m) {\n    set_mario_animation(m, MARIO_ANIM_LAND_FROM_SINGLE_JUMP);\n\n    if (is_anim_at_end(m)) {\n        advance_cutscene_step(m);\n    }\n\n    stop_and_set_height_to_floor(m);\n}\n\nstatic void intro_cutscene_lower_pipe(struct MarioState *m) {\n    if (m->actionTimer++ == 0) {\n        play_sound(SOUND_MENU_ENTER_PIPE, sIntroWarpPipeObj->header.gfx.cameraToObject);\n        set_mario_animation(m, MARIO_ANIM_FIRST_PERSON);\n    }\n\n    sIntroWarpPipeObj->oPosY -= 5.0f;\n    if (sIntroWarpPipeObj->oPosY <= 50.0f) {\n        obj_mark_for_deletion(sIntroWarpPipeObj);\n        advance_cutscene_step(m);\n    }\n\n    stop_and_set_height_to_floor(m);\n}\n\nstatic void intro_cutscene_set_mario_to_idle(struct MarioState *m) {\n    if (gCamera->cutscene == 0) {\n        gCameraMovementFlags &= ~CAM_MOVE_C_UP_MODE;\n        set_mario_action(m, ACT_IDLE, 0);\n    }\n\n    stop_and_set_height_to_floor(m);\n}\n\nenum {\n    INTRO_CUTSCENE_HIDE_HUD_AND_MARIO,\n    INTRO_CUTSCENE_PEACH_LAKITU_SCENE,\n    INTRO_CUTSCENE_RAISE_PIPE,\n    INTRO_CUTSCENE_JUMP_OUT_OF_PIPE,\n    INTRO_CUTSCENE_LAND_OUTSIDE_PIPE,\n    INTRO_CUTSCENE_LOWER_PIPE,\n    INTRO_CUTSCENE_SET_MARIO_TO_IDLE\n};\n\nstatic s32 act_intro_cutscene(struct MarioState *m) {\n    switch (m->actionArg) {\n        case INTRO_CUTSCENE_HIDE_HUD_AND_MARIO:\n            intro_cutscene_hide_hud_and_mario(m);\n            break;\n        case INTRO_CUTSCENE_PEACH_LAKITU_SCENE:\n            intro_cutscene_peach_lakitu_scene(m);\n            break;\n        case INTRO_CUTSCENE_RAISE_PIPE:\n            intro_cutscene_raise_pipe(m);\n            break;\n        case INTRO_CUTSCENE_JUMP_OUT_OF_PIPE:\n            intro_cutscene_jump_out_of_pipe(m);\n            break;\n        case INTRO_CUTSCENE_LAND_OUTSIDE_PIPE:\n            intro_cutscene_land_outside_pipe(m);\n            break;\n        case INTRO_CUTSCENE_LOWER_PIPE:\n            intro_cutscene_lower_pipe(m);\n            break;\n        case INTRO_CUTSCENE_SET_MARIO_TO_IDLE:\n            intro_cutscene_set_mario_to_idle(m);\n            break;\n    }\n    return FALSE;\n}\n\n// jumbo star cutscene: Mario lands after grabbing the jumbo star\nstatic void jumbo_star_cutscene_falling(struct MarioState *m) {\n    if (m->actionState == 0) {\n        m->input |= INPUT_A_DOWN;\n        m->flags |= (MARIO_WING_CAP | MARIO_CAP_ON_HEAD);\n\n        m->faceAngle[1] = -0x8000;\n        m->pos[0] = 0.0f;\n        m->pos[2] = 0.0f;\n\n        mario_set_forward_vel(m, 0.0f);\n        set_mario_animation(m, MARIO_ANIM_GENERAL_FALL);\n\n        if (perform_air_step(m, 1) == AIR_STEP_LANDED) {\n            play_cutscene_music(SEQUENCE_ARGS(15, SEQ_EVENT_CUTSCENE_VICTORY));\n            play_mario_landing_sound(m, SOUND_ACTION_TERRAIN_LANDING);\n            m->actionState++;\n        }\n    } else {\n        set_mario_animation(m, MARIO_ANIM_GENERAL_LAND);\n        if (is_anim_at_end(m)) {\n            m->statusForCamera->cameraEvent = CAM_EVENT_START_GRAND_STAR;\n            advance_cutscene_step(m);\n        }\n    }\n}\n\n// jumbo star cutscene: Mario takes off\nstatic s32 jumbo_star_cutscene_taking_off(struct MarioState *m) {\n    struct Object *marioObj = m->marioObj;\n    s32 animFrame;\n\n    if (m->actionState == 0) {\n        set_mario_animation(m, MARIO_ANIM_FINAL_BOWSER_RAISE_HAND_SPIN);\n        marioObj->rawData.asF32[0x22] = 0.0f;\n\n        if (is_anim_past_end(m)) {\n            play_mario_landing_sound(m, SOUND_ACTION_TERRAIN_LANDING);\n            m->actionState++;\n        }\n    } else {\n        animFrame = set_mario_animation(m, MARIO_ANIM_FINAL_BOWSER_WING_CAP_TAKE_OFF);\n        if (animFrame == 3 || animFrame == 28 || animFrame == 60) {\n            play_sound_and_spawn_particles(m, SOUND_ACTION_TERRAIN_JUMP, 1);\n        }\n        if (animFrame >= 3) {\n            marioObj->rawData.asF32[0x22] -= 32.0f;\n        }\n\n        switch (animFrame) {\n            case 3:\n                play_sound(SOUND_MARIO_YAH_WAH_HOO + (gAudioRandom % 3 << 16),\n                           m->marioObj->header.gfx.cameraToObject);\n                break;\n\n            case 28:\n                play_sound(SOUND_MARIO_HOOHOO, m->marioObj->header.gfx.cameraToObject);\n                break;\n\n            case 60:\n                play_sound(SOUND_MARIO_YAHOO, m->marioObj->header.gfx.cameraToObject);\n                break;\n        }\n        m->particleFlags |= PARTICLE_SPARKLES;\n\n        if (is_anim_past_end(m)) {\n            advance_cutscene_step(m);\n        }\n    }\n\n    vec3f_set(m->pos, 0.0f, 307.0, marioObj->rawData.asF32[0x22]);\n    update_mario_pos_for_anim(m);\n    vec3f_copy(marioObj->header.gfx.pos, m->pos);\n    vec3s_set(marioObj->header.gfx.angle, 0, m->faceAngle[1], 0);\n\n    // not sure why they did this, probably was from being used to action\n    // functions\n    return FALSE;\n}\n\n// jumbo star cutscene: Mario flying\nstatic s32 jumbo_star_cutscene_flying(struct MarioState *m) {\n    Vec3f targetPos;\n    UNUSED struct Object *marioObj = m->marioObj;\n    f32 targetDX;\n    f32 targetDY;\n    f32 targetDZ;\n    f32 targetHyp;\n    s16 targetAngle;\n\n    switch (m->actionState) {\n        case 0:\n            set_mario_animation(m, MARIO_ANIM_WING_CAP_FLY);\n            anim_spline_init(sJumboStarKeyframes);\n            m->actionState++;\n            // fallthrough\n        case 1:\n            if (anim_spline_poll(targetPos)) {\n                // does this twice\n                set_mario_action(m, ACT_FREEFALL, 0);\n                m->actionState++;\n            } else {\n                targetDX = targetPos[0] - m->pos[0];\n                targetDY = targetPos[1] - m->pos[1];\n                targetDZ = targetPos[2] - m->pos[2];\n                targetHyp = sqrtf(targetDX * targetDX + targetDZ * targetDZ);\n                targetAngle = atan2s(targetDZ, targetDX);\n\n                vec3f_copy(m->pos, targetPos);\n                m->marioObj->header.gfx.angle[0] = -atan2s(targetHyp, targetDY);\n                m->marioObj->header.gfx.angle[1] = targetAngle;\n                m->marioObj->header.gfx.angle[2] = ((m->faceAngle[1] - targetAngle) << 16 >> 16) * 20;\n                m->faceAngle[1] = targetAngle;\n            }\n            break;\n        case 2:\n            set_mario_action(m, ACT_FREEFALL, 0);\n            break;\n    }\n\n    m->marioBodyState->handState = MARIO_HAND_RIGHT_OPEN;\n    vec3f_copy(m->marioObj->header.gfx.pos, m->pos);\n    m->particleFlags |= PARTICLE_SPARKLES;\n\n    if (m->actionTimer++ == 500) {\n        level_trigger_warp(m, WARP_OP_CREDITS_START);\n    }\n\n    return FALSE;\n}\n\nenum { JUMBO_STAR_CUTSCENE_FALLING, JUMBO_STAR_CUTSCENE_TAKING_OFF, JUMBO_STAR_CUTSCENE_FLYING };\n\nstatic s32 act_jumbo_star_cutscene(struct MarioState *m) {\n    switch (m->actionArg) {\n        case JUMBO_STAR_CUTSCENE_FALLING:\n            jumbo_star_cutscene_falling(m);\n            break;\n        case JUMBO_STAR_CUTSCENE_TAKING_OFF:\n            jumbo_star_cutscene_taking_off(m);\n            break;\n        case JUMBO_STAR_CUTSCENE_FLYING:\n            jumbo_star_cutscene_flying(m);\n            break;\n    }\n    return FALSE;\n}\n\nvoid generate_yellow_sparkles(s16 x, s16 y, s16 z, f32 radius) {\n    static s32 sSparkleGenTheta = 0;\n    static s32 sSparkleGenPhi = 0;\n\n    s16 offsetX = radius * coss(sSparkleGenTheta) * sins(sSparkleGenPhi);\n    s16 offsetY = radius * sins(sSparkleGenTheta);\n    s16 offsetZ = radius * coss(sSparkleGenTheta) * coss(sSparkleGenPhi);\n\n    spawn_object_abs_with_rot(gCurrentObject, 0, MODEL_NONE, bhvSparkleSpawn, x + offsetX, y + offsetY,\n                              z + offsetZ, 0, 0, 0);\n\n    //! copy paste error\n    offsetX = offsetX * 4 / 3;\n    offsetX = offsetY * 4 / 3;\n    offsetX = offsetZ * 4 / 3;\n\n    spawn_object_abs_with_rot(gCurrentObject, 0, MODEL_NONE, bhvSparkleSpawn, x - offsetX, y - offsetY,\n                              z - offsetZ, 0, 0, 0);\n\n    sSparkleGenTheta += 0x3800;\n    sSparkleGenPhi += 0x6000;\n}\n\n// not sure what this does, returns the height of the floor.\n// (animation related?)\nstatic f32 end_obj_set_visual_pos(struct Object *o) {\n    struct Surface *surf;\n    Vec3s sp24;\n    f32 sp20;\n    f32 sp1C;\n    f32 sp18;\n\n    find_mario_anim_flags_and_translation(o, o->header.gfx.angle[1], sp24);\n\n    sp20 = o->header.gfx.pos[0] + sp24[0];\n    sp1C = o->header.gfx.pos[1] + 10.0f;\n    sp18 = o->header.gfx.pos[2] + sp24[2];\n\n    return find_floor(sp20, sp1C, sp18, &surf);\n}\n\n// make Mario fall and soften wing cap gravity\nstatic void end_peach_cutscene_mario_falling(struct MarioState *m) {\n    if (m->actionTimer == 1) {\n        m->statusForCamera->cameraEvent = CAM_EVENT_START_ENDING;\n    }\n\n    m->input |= INPUT_A_DOWN;\n    m->flags |= (MARIO_WING_CAP | MARIO_CAP_ON_HEAD);\n\n    set_mario_animation(m, MARIO_ANIM_GENERAL_FALL);\n    mario_set_forward_vel(m, 0.0f);\n\n    if (perform_air_step(m, 0) == AIR_STEP_LANDED) {\n        play_mario_landing_sound(m, SOUND_ACTION_TERRAIN_LANDING);\n        advance_cutscene_step(m);\n    }\n}\n\n// set Mario on the ground, wait and spawn the jumbo star outside the castle.\nstatic void end_peach_cutscene_mario_landing(struct MarioState *m) {\n    set_mario_animation(m, MARIO_ANIM_GENERAL_LAND);\n    stop_and_set_height_to_floor(m);\n\n    if (is_anim_at_end(m)) {\n        // make wing cap run out\n        m->capTimer = 60;\n\n        sEndJumboStarObj = spawn_object_abs_with_rot(gCurrentObject, 0, MODEL_STAR, bhvStaticObject, 0,\n                                                     2528, -1800, 0, 0, 0);\n        obj_scale(sEndJumboStarObj, 3.0);\n        advance_cutscene_step(m);\n    }\n}\n\n// raise hand animation, lower hand animation, do some special effects\nstatic void end_peach_cutscene_summon_jumbo_star(struct MarioState *m) {\n    set_mario_animation(m, m->actionState == 0 ? MARIO_ANIM_CREDITS_RAISE_HAND\n                                               : MARIO_ANIM_CREDITS_LOWER_HAND);\n\n    if (m->actionState == 0 && is_anim_past_end(m)) {\n        m->actionState++;\n    }\n    if (m->actionTimer == 90) {\n        play_cutscene_music(SEQUENCE_ARGS(0, SEQ_EVENT_CUTSCENE_ENDING));\n    }\n    if (m->actionTimer == 255) {\n        advance_cutscene_step(m);\n    }\n\n    sEndJumboStarObj->oFaceAngleYaw += 0x400;\n    generate_yellow_sparkles(0, 2528, -1800, 250.0f);\n    play_sound(SOUND_AIR_PEACH_TWINKLE, sEndJumboStarObj->header.gfx.cameraToObject);\n}\n\n#if defined(VERSION_EU)\n    #define TIMER_FADE_IN_PEACH 201\n    #define TIMER_DESCEND_PEACH 280\n#elif defined(VERSION_SH) || defined(VERSION_CN)\n    #define TIMER_FADE_IN_PEACH 276\n    #define TIMER_DESCEND_PEACH 400\n#else\n    #define TIMER_FADE_IN_PEACH 276\n    #define TIMER_DESCEND_PEACH 355\n#endif\n\n// free peach from the stained glass window\nstatic void end_peach_cutscene_spawn_peach(struct MarioState *m) {\n    if (m->actionTimer == 1) {\n        play_transition(WARP_TRANSITION_FADE_INTO_COLOR, 14, 255, 255, 255);\n    }\n    if (m->actionTimer == 2) {\n        play_sound(SOUND_MENU_STAR_SOUND, gGlobalSoundSource);\n    }\n    if (m->actionTimer == 44) {\n        play_transition(WARP_TRANSITION_FADE_FROM_COLOR, 192, 255, 255, 255);\n    }\n    if (m->actionTimer == 40) {\n        obj_mark_for_deletion(sEndJumboStarObj);\n\n        sEndPeachObj = spawn_object_abs_with_rot(gCurrentObject, 0, MODEL_PEACH, bhvEndPeach, 0, 2428,\n                                                 -1300, 0, 0, 0);\n        gCutsceneFocus = sEndPeachObj;\n\n        sEndRightToadObj = spawn_object_abs_with_rot(gCurrentObject, 0, MODEL_TOAD, bhvEndToad, 200,\n                                                     906, -1290, 0, 0, 0);\n\n        sEndLeftToadObj = spawn_object_abs_with_rot(gCurrentObject, 0, MODEL_TOAD, bhvEndToad, -200,\n                                                    906, -1290, 0, 0, 0);\n\n        sEndPeachObj->oOpacity = 127;\n        sEndRightToadObj->oOpacity = 255;\n        sEndLeftToadObj->oOpacity = 255;\n\n        D_8032CBE4 = 4;\n        sEndPeachAnimation = 4;\n\n        sEndToadAnims[0] = 4;\n        sEndToadAnims[1] = 5;\n    }\n\n    if (m->actionTimer >= TIMER_FADE_IN_PEACH) {\n        sEndPeachObj->oOpacity = camera_approach_f32_symmetric(sEndPeachObj->oOpacity, 255.0f, 2.0f);\n    }\n    if (m->actionTimer >= 40) {\n        generate_yellow_sparkles(0, 2628, -1300, 150.0f);\n    }\n\n    if (m->actionTimer == TIMER_DESCEND_PEACH) {\n        advance_cutscene_step(m);\n    }\n    // probably added sounds later and missed the previous >= 40 check\n    if (m->actionTimer >= 40) {\n        play_sound(SOUND_AIR_PEACH_TWINKLE, sEndPeachObj->header.gfx.cameraToObject);\n    }\n}\n\n#ifdef VERSION_EU\n    #define TIMER_RUN_TO_PEACH 531\n#else\n    #define TIMER_RUN_TO_PEACH 584\n#endif\n\n// descend peach\nstatic void end_peach_cutscene_descend_peach(struct MarioState *m) {\n    generate_yellow_sparkles(0, sEndPeachObj->oPosY, -1300, 150.0f);\n\n    if (sEndPeachObj->oPosY >= 1300.0f) {\n        if (m->actionState < 60) {\n            m->actionState += 5;\n        }\n    } else {\n        if (m->actionState >= 27) {\n            m->actionState -= 2;\n        }\n        set_mario_animation(m, MARIO_ANIM_CREDITS_RETURN_FROM_LOOK_UP);\n    }\n\n    if ((sEndPeachObj->oPosY -= m->actionState / 10) <= 907.0f) {\n        sEndPeachObj->oPosY = 906.0f;\n    }\n\n    play_sound(SOUND_AIR_PEACH_TWINKLE, sEndPeachObj->header.gfx.cameraToObject);\n\n    if (m->actionTimer >= TIMER_RUN_TO_PEACH) {\n        advance_cutscene_step(m);\n    }\n}\n\n#undef TIMER_RUN_TO_PEACH\n\n// Mario runs to peach\nstatic void end_peach_cutscene_run_to_peach(struct MarioState *m) {\n    struct Surface *surf;\n\n    if (m->actionTimer == 22) {\n        sEndPeachAnimation = 5;\n    }\n\n    if ((m->pos[2] -= 20.0f) <= -1181.0f) {\n        m->pos[2] = -1180.0f;\n        advance_cutscene_step(m);\n    }\n\n    m->pos[1] = find_floor(m->pos[0], m->pos[1], m->pos[2], &surf);\n\n    set_mario_anim_with_accel(m, MARIO_ANIM_RUNNING, 0x00080000);\n    play_step_sound(m, 9, 45);\n\n    vec3f_copy(m->marioObj->header.gfx.pos, m->pos);\n    m->particleFlags |= PARTICLE_DUST;\n}\n\n// dialog 1\n// \"Mario!\"\n// \"The power of the Stars is restored to the castle...\"\nstatic void end_peach_cutscene_dialog_1(struct MarioState *m) {\n    s32 animFrame = set_mario_animation(m, m->actionState == 0 ? MARIO_ANIM_CREDITS_TAKE_OFF_CAP\n                                                               : MARIO_ANIM_CREDITS_LOOK_UP);\n\n    if (m->actionState == 0) {\n        if (animFrame == 8) {\n            cutscene_take_cap_off(m);\n        }\n\n        if (is_anim_at_end(m)) {\n            m->actionState++;\n        }\n    }\n\n    switch (m->actionTimer) {\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        case 110:\n#else\n        case 80:\n#endif\n            sEndPeachAnimation = 6;\n            break;\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        case 111:\n#else\n        case 81:\n#endif\n            D_8032CBE4 = 3;\n            break;\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        case 175:\n#else\n        case 145:\n#endif\n            D_8032CBE4 = 2;\n            break;\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        case 258:\n#else\n        case 228:\n#endif\n            D_8032CBE4 = 1;\n            D_8032CBE8 = 1;\n            break;\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        case 260:\n#else\n        case 230:\n#endif\n            set_cutscene_message(160, 227, 0, 30);\n#ifndef VERSION_JP\n            seq_player_lower_volume(SEQ_PLAYER_LEVEL, 60, 40);\n            play_sound(SOUND_PEACH_MARIO, sEndPeachObj->header.gfx.cameraToObject);\n#endif\n            break;\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        case 305:\n#else\n        case 275:\n#endif\n            D_8032CBE4 = 0;\n            D_8032CBE8 = 0;\n            break;\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        case 320:\n#else\n        case 290:\n#endif\n            set_cutscene_message(160, 227, 1, 60);\n#ifndef VERSION_JP\n            play_sound(SOUND_PEACH_POWER_OF_THE_STARS, sEndPeachObj->header.gfx.cameraToObject);\n#endif\n            break;\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        case 510:\n#else\n        case 480:\n#endif\n            advance_cutscene_step(m);\n            break;\n    }\n}\n\n#if defined(VERSION_EU)\n    #define TIMER_SOMETHING_SPECIAL 150\n    #define TIMER_PEACH_KISS        260\n#elif defined(VERSION_SH) || defined(VERSION_CN)\n    #define TIMER_SOMETHING_SPECIAL 170\n    #define TIMER_PEACH_KISS        250\n#else\n    #define TIMER_SOMETHING_SPECIAL 130\n    #define TIMER_PEACH_KISS        200\n#endif\n\n// dialog 2\n// \"...and it's all thanks to you!\"\n// \"Thank you Mario!\"\n// \"We have to do something special for you...\"\nstatic void end_peach_cutscene_dialog_2(struct MarioState *m) {\n    sEndPeachAnimation = 9;\n\n    switch (m->actionTimer) {\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        case 39:\n#else\n        case 29:\n#endif\n            set_cutscene_message(160, 227, 2, 30);\n#ifndef VERSION_JP\n            play_sound(SOUND_PEACH_THANKS_TO_YOU, sEndPeachObj->header.gfx.cameraToObject);\n#endif\n            break;\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        case 65:\n#else\n        case 45:\n#endif\n            D_8032CBE8 = 1;\n            break;\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n        case 105:\n#else\n        case 75:\n#endif\n            set_cutscene_message(160, 227, 3, 30);\n#ifndef VERSION_JP\n            play_sound(SOUND_PEACH_THANK_YOU_MARIO, sEndPeachObj->header.gfx.cameraToObject);\n#endif\n            break;\n\n        case TIMER_SOMETHING_SPECIAL:\n            set_cutscene_message(160, 227, 4, 40);\n#ifndef VERSION_JP\n            play_sound(SOUND_PEACH_SOMETHING_SPECIAL, sEndPeachObj->header.gfx.cameraToObject);\n#endif\n            break;\n\n        case TIMER_PEACH_KISS:\n            advance_cutscene_step(m);\n            break;\n    }\n}\n\n#undef TIMER_SOMETHING_SPECIAL\n#undef TIMER_PEACH_KISS\n\n// blink twice then have half-shut eyes (see end_peach_cutscene_kiss_from_peach)\nstatic u8 sMarioBlinkOverride[20] = {\n    MARIO_EYES_HALF_CLOSED, MARIO_EYES_HALF_CLOSED, MARIO_EYES_CLOSED, MARIO_EYES_CLOSED,\n    MARIO_EYES_HALF_CLOSED, MARIO_EYES_HALF_CLOSED, MARIO_EYES_OPEN,   MARIO_EYES_OPEN,\n    MARIO_EYES_HALF_CLOSED, MARIO_EYES_HALF_CLOSED, MARIO_EYES_CLOSED, MARIO_EYES_CLOSED,\n    MARIO_EYES_HALF_CLOSED, MARIO_EYES_HALF_CLOSED, MARIO_EYES_OPEN,   MARIO_EYES_OPEN,\n    MARIO_EYES_HALF_CLOSED, MARIO_EYES_HALF_CLOSED, MARIO_EYES_CLOSED, MARIO_EYES_CLOSED,\n};\n\nstatic void end_peach_cutscene_kiss_from_peach(struct MarioState *m) {\n    sEndPeachAnimation = 10;\n\n    if (m->actionTimer >= 90) {\n        m->marioBodyState->eyeState =\n            m->actionTimer < 110 ? sMarioBlinkOverride[m->actionTimer - 90] : MARIO_EYES_HALF_CLOSED;\n    }\n\n    switch (m->actionTimer) {\n        case 8:\n            D_8032CBE8 = 0;\n            break;\n\n        case 10:\n            D_8032CBE4 = 3;\n            break;\n\n        case 50:\n            D_8032CBE4 = 4;\n            break;\n\n        case 75:\n            m->marioBodyState->eyeState = MARIO_EYES_HALF_CLOSED;\n            break;\n\n        case 76:\n            m->marioBodyState->eyeState = MARIO_EYES_CLOSED;\n            break;\n\n        case 100:\n            D_8032CBE4 = 3;\n            break;\n\n        case 136:\n            D_8032CBE4 = 0;\n            break;\n\n        case 140:\n            advance_cutscene_step(m);\n            break;\n    }\n}\n\nstatic void end_peach_cutscene_star_dance(struct MarioState *m) {\n    s32 animFrame = set_mario_animation(m, MARIO_ANIM_CREDITS_PEACE_SIGN);\n\n    if (animFrame == 77) {\n        cutscene_put_cap_on(m);\n    }\n    if (animFrame == 88) {\n        play_sound(SOUND_MARIO_HERE_WE_GO, m->marioObj->header.gfx.cameraToObject);\n    }\n    if (animFrame >= 98) {\n        m->marioBodyState->handState = MARIO_HAND_PEACE_SIGN;\n    }\n\n    if (m->actionTimer < 52) {\n        m->marioBodyState->eyeState = MARIO_EYES_HALF_CLOSED;\n    }\n\n    switch (m->actionTimer) {\n        case 70:\n            D_8032CBE4 = 1;\n            break;\n\n        case 86:\n            D_8032CBE4 = 2;\n            break;\n\n        case 90:\n            D_8032CBE4 = 3;\n            break;\n\n        case 120:\n            D_8032CBE4 = 0;\n            break;\n\n        case 140:\n#ifndef VERSION_JP\n            seq_player_unlower_volume(SEQ_PLAYER_LEVEL, 60);\n#endif\n            play_cutscene_music(SEQUENCE_ARGS(15, SEQ_EVENT_CUTSCENE_CREDITS));\n            break;\n\n        case 142:\n            advance_cutscene_step(m);\n            break;\n    }\n}\n\n// dialog 3\n// \"Listen everybody\"\n// \"let's bake a delicious cake...\"\n// \"...for Mario...\"\nstatic void end_peach_cutscene_dialog_3(struct MarioState *m) {\n    set_mario_animation(m, MARIO_ANIM_FIRST_PERSON);\n\n    sEndPeachObj->oPosY = end_obj_set_visual_pos(sEndPeachObj);\n    sEndRightToadObj->oPosY = end_obj_set_visual_pos(sEndRightToadObj);\n    sEndLeftToadObj->oPosY = end_obj_set_visual_pos(sEndLeftToadObj);\n\n    switch (m->actionTimer) {\n        case 1:\n            sEndPeachAnimation = 0;\n            sEndToadAnims[0] = 0;\n            sEndToadAnims[1] = 2;\n            D_8032CBE8 = 1;\n            set_cutscene_message(160, 227, 5, 30);\n#ifndef VERSION_JP\n            play_sound(SOUND_PEACH_BAKE_A_CAKE, sEndPeachObj->header.gfx.cameraToObject);\n#endif\n            break;\n\n        case 55:\n            set_cutscene_message(160, 227, 6, 40);\n            break;\n\n        case 130:\n            set_cutscene_message(160, 227, 7, 50);\n#ifndef VERSION_JP\n            play_sound(SOUND_PEACH_FOR_MARIO, sEndPeachObj->header.gfx.cameraToObject);\n#endif\n            break;\n    }\n\n    if (m->actionTimer == 350) {\n        advance_cutscene_step(m);\n    }\n}\n\n// \"Mario!\"\nstatic void end_peach_cutscene_run_to_castle(struct MarioState *m) {\n    set_mario_animation(m, m->actionState == 0 ? MARIO_ANIM_CREDITS_START_WALK_LOOK_UP\n                                               : MARIO_ANIM_CREDITS_LOOK_BACK_THEN_RUN);\n\n    m->marioObj->header.gfx.pos[1] = end_obj_set_visual_pos(m->marioObj);\n\n    if (m->actionState == 0 && is_anim_past_end(m)) {\n        m->actionState = 1;\n    }\n\n    if (m->actionTimer == 95) {\n        set_cutscene_message(160, 227, 0, 40);\n#ifndef VERSION_JP\n        play_sound(SOUND_PEACH_MARIO2, sEndPeachObj->header.gfx.cameraToObject);\n#endif\n    }\n    if (m->actionTimer == 389) {\n        advance_cutscene_step(m);\n    }\n}\n\nstatic void end_peach_cutscene_fade_out(struct MarioState *m) {\n    if (m->actionState == 0) {\n        level_trigger_warp(m, WARP_OP_CREDITS_NEXT);\n        gPaintingMarioYEntry = 1500.0f; // ensure medium water level in WDW credits cutscene\n        m->actionState = 1;\n    }\n}\n\nenum {\n    END_PEACH_CUTSCENE_MARIO_FALLING,\n    END_PEACH_CUTSCENE_MARIO_LANDING,\n    END_PEACH_CUTSCENE_SUMMON_JUMBO_STAR,\n    END_PEACH_CUTSCENE_SPAWN_PEACH,\n    END_PEACH_CUTSCENE_DESCEND_PEACH,\n    END_PEACH_CUTSCENE_RUN_TO_PEACH,\n    END_PEACH_CUTSCENE_DIALOG_1,\n    END_PEACH_CUTSCENE_DIALOG_2,\n    END_PEACH_CUTSCENE_KISS_FROM_PEACH,\n    END_PEACH_CUTSCENE_STAR_DANCE,\n    END_PEACH_CUTSCENE_DIALOG_3,\n    END_PEACH_CUTSCENE_RUN_TO_CASTLE,\n    END_PEACH_CUTSCENE_FADE_OUT\n};\n\nstatic s32 act_end_peach_cutscene(struct MarioState *m) {\n    switch (m->actionArg) {\n        case END_PEACH_CUTSCENE_MARIO_FALLING:\n            end_peach_cutscene_mario_falling(m);\n            break;\n        case END_PEACH_CUTSCENE_MARIO_LANDING:\n            end_peach_cutscene_mario_landing(m);\n            break;\n        case END_PEACH_CUTSCENE_SUMMON_JUMBO_STAR:\n            end_peach_cutscene_summon_jumbo_star(m);\n            break;\n        case END_PEACH_CUTSCENE_SPAWN_PEACH:\n            end_peach_cutscene_spawn_peach(m);\n            break;\n        case END_PEACH_CUTSCENE_DESCEND_PEACH:\n            end_peach_cutscene_descend_peach(m);\n            break;\n        case END_PEACH_CUTSCENE_RUN_TO_PEACH:\n            end_peach_cutscene_run_to_peach(m);\n            break;\n        case END_PEACH_CUTSCENE_DIALOG_1:\n            end_peach_cutscene_dialog_1(m);\n            break;\n        case END_PEACH_CUTSCENE_DIALOG_2:\n            end_peach_cutscene_dialog_2(m);\n            break;\n        case END_PEACH_CUTSCENE_KISS_FROM_PEACH:\n            end_peach_cutscene_kiss_from_peach(m);\n            break;\n        case END_PEACH_CUTSCENE_STAR_DANCE:\n            end_peach_cutscene_star_dance(m);\n            break;\n        case END_PEACH_CUTSCENE_DIALOG_3:\n            end_peach_cutscene_dialog_3(m);\n            break;\n        case END_PEACH_CUTSCENE_RUN_TO_CASTLE:\n            end_peach_cutscene_run_to_castle(m);\n            break;\n        case END_PEACH_CUTSCENE_FADE_OUT:\n            end_peach_cutscene_fade_out(m);\n            break;\n    }\n\n    m->actionTimer++;\n\n    sEndCutsceneVp.vp.vscale[0] = 640;\n    sEndCutsceneVp.vp.vscale[1] = 360;\n    sEndCutsceneVp.vp.vtrans[0] = 640;\n    sEndCutsceneVp.vp.vtrans[1] = 480;\n    override_viewport_and_clip(NULL, &sEndCutsceneVp, 0, 0, 0);\n\n    return FALSE;\n}\n\n#if defined(VERSION_EU)\n    #define TIMER_CREDITS_SHOW      51\n    #define TIMER_CREDITS_PROGRESS  80\n    #define TIMER_CREDITS_WARP     160\n#elif defined(VERSION_SH) || defined(VERSION_CN)\n    #define TIMER_CREDITS_SHOW      61\n    #define TIMER_CREDITS_PROGRESS  90\n    #define TIMER_CREDITS_WARP     204\n#else\n    #define TIMER_CREDITS_SHOW      61\n    #define TIMER_CREDITS_PROGRESS  90\n    #define TIMER_CREDITS_WARP     200\n#endif\n\nstatic s32 act_credits_cutscene(struct MarioState *m) {\n    s32 width;\n    s32 height;\n\n    m->statusForCamera->cameraEvent = CAM_EVENT_START_CREDITS;\n    // checks if Mario is underwater (JRB, DDD, SA, etc.)\n    if (m->pos[1] < m->waterLevel - 100) {\n        if (m->area->camera->mode != CAMERA_MODE_BEHIND_MARIO) {\n            set_camera_mode(m->area->camera, CAMERA_MODE_BEHIND_MARIO, 1);\n        }\n        set_mario_animation(m, MARIO_ANIM_WATER_IDLE);\n        vec3f_copy(m->marioObj->header.gfx.pos, m->pos);\n        // will copy over roll and pitch, if set\n        vec3s_copy(m->marioObj->header.gfx.angle, m->faceAngle);\n        m->particleFlags |= PARTICLE_BUBBLE;\n    } else {\n        set_mario_animation(m, MARIO_ANIM_FIRST_PERSON);\n        if (m->actionTimer > 0) {\n            stop_and_set_height_to_floor(m);\n        }\n    }\n\n    if (m->actionTimer >= TIMER_CREDITS_SHOW) {\n        if (m->actionState < 40) {\n            m->actionState += 2;\n        }\n\n        width = m->actionState * 640 / 100;\n        height = m->actionState * 480 / 100;\n\n        sEndCutsceneVp.vp.vscale[0] = 640 - width;\n        sEndCutsceneVp.vp.vscale[1] = 480 - height;\n        sEndCutsceneVp.vp.vtrans[0] =\n            (gCurrCreditsEntry->unk02 & 0x10 ? width : -width) * 56 / 100 + 640;\n        sEndCutsceneVp.vp.vtrans[1] =\n            (gCurrCreditsEntry->unk02 & 0x20 ? height : -height) * 66 / 100 + 480;\n\n        override_viewport_and_clip(&sEndCutsceneVp, 0, 0, 0, 0);\n    }\n\n    if (m->actionTimer == TIMER_CREDITS_PROGRESS) {\n        reset_cutscene_msg_fade();\n    }\n\n    if (m->actionTimer >= TIMER_CREDITS_PROGRESS) {\n        sDispCreditsEntry = gCurrCreditsEntry;\n    }\n\n    if (m->actionTimer++ == TIMER_CREDITS_WARP) {\n        level_trigger_warp(m, WARP_OP_CREDITS_NEXT);\n    }\n\n    m->marioObj->header.gfx.angle[1] += (gCurrCreditsEntry->unk02 & 0xC0) << 8;\n\n    return FALSE;\n}\n\nstatic s32 act_end_waving_cutscene(struct MarioState *m) {\n    if (m->actionState == 0) {\n        m->statusForCamera->cameraEvent = CAM_EVENT_START_END_WAVING;\n\n        sEndPeachObj = spawn_object_abs_with_rot(gCurrentObject, 0, MODEL_PEACH, bhvEndPeach, 60, 906,\n                                                 -1180, 0, 0, 0);\n\n        sEndRightToadObj = spawn_object_abs_with_rot(gCurrentObject, 0, MODEL_TOAD, bhvEndToad, 180,\n                                                     906, -1170, 0, 0, 0);\n\n        sEndLeftToadObj = spawn_object_abs_with_rot(gCurrentObject, 0, MODEL_TOAD, bhvEndToad, -180,\n                                                    906, -1170, 0, 0, 0);\n\n        sEndPeachObj->oOpacity = 255;\n        sEndRightToadObj->oOpacity = 255;\n        sEndLeftToadObj->oOpacity = 255;\n\n        sEndPeachAnimation = 11;\n        sEndToadAnims[0] = 6;\n        sEndToadAnims[1] = 7;\n\n        m->actionState = 1;\n    }\n\n    set_mario_animation(m, MARIO_ANIM_CREDITS_WAVING);\n    stop_and_set_height_to_floor(m);\n\n    m->marioObj->header.gfx.angle[1] += 0x8000;\n    m->marioObj->header.gfx.pos[0] -= 60.0f;\n    m->marioBodyState->handState = MARIO_HAND_RIGHT_OPEN;\n\n    if (m->actionTimer++ == 300) {\n        level_trigger_warp(m, WARP_OP_CREDITS_END);\n    }\n\n    return FALSE;\n}\n\nstatic s32 check_for_instant_quicksand(struct MarioState *m) {\n    if (m->floor->type == SURFACE_INSTANT_QUICKSAND && m->action & ACT_FLAG_INVULNERABLE\n        && m->action != ACT_QUICKSAND_DEATH) {\n        update_mario_sound_and_camera(m);\n        return drop_and_set_mario_action(m, ACT_QUICKSAND_DEATH, 0);\n    }\n    return FALSE;\n}\n\ns32 mario_execute_cutscene_action(struct MarioState *m) {\n    s32 cancel;\n\n    if (check_for_instant_quicksand(m)) {\n        return TRUE;\n    }\n\n    /* clang-format off */\n    switch (m->action) {\n        case ACT_DISAPPEARED:                cancel = act_disappeared(m);                break;\n        case ACT_INTRO_CUTSCENE:             cancel = act_intro_cutscene(m);             break;\n        case ACT_STAR_DANCE_EXIT:            cancel = act_star_dance(m);                 break;\n        case ACT_STAR_DANCE_NO_EXIT:         cancel = act_star_dance(m);                 break;\n        case ACT_STAR_DANCE_WATER:           cancel = act_star_dance_water(m);           break;\n        case ACT_FALL_AFTER_STAR_GRAB:       cancel = act_fall_after_star_grab(m);       break;\n        case ACT_READING_AUTOMATIC_DIALOG:   cancel = act_reading_automatic_dialog(m);   break;\n        case ACT_READING_NPC_DIALOG:         cancel = act_reading_npc_dialog(m);         break;\n        case ACT_DEBUG_FREE_MOVE:            cancel = act_debug_free_move(m);            break;\n        case ACT_READING_SIGN:               cancel = act_reading_sign(m);               break;\n        case ACT_JUMBO_STAR_CUTSCENE:        cancel = act_jumbo_star_cutscene(m);        break;\n        case ACT_WAITING_FOR_DIALOG:         cancel = act_waiting_for_dialog(m);         break;\n        case ACT_STANDING_DEATH:             cancel = act_standing_death(m);             break;\n        case ACT_QUICKSAND_DEATH:            cancel = act_quicksand_death(m);            break;\n        case ACT_ELECTROCUTION:              cancel = act_electrocution(m);              break;\n        case ACT_SUFFOCATION:                cancel = act_suffocation(m);                break;\n        case ACT_DEATH_ON_STOMACH:           cancel = act_death_on_stomach(m);           break;\n        case ACT_DEATH_ON_BACK:              cancel = act_death_on_back(m);              break;\n        case ACT_EATEN_BY_BUBBA:             cancel = act_eaten_by_bubba(m);             break;\n        case ACT_END_PEACH_CUTSCENE:         cancel = act_end_peach_cutscene(m);         break;\n        case ACT_CREDITS_CUTSCENE:           cancel = act_credits_cutscene(m);           break;\n        case ACT_END_WAVING_CUTSCENE:        cancel = act_end_waving_cutscene(m);        break;\n        case ACT_PULLING_DOOR:\n        case ACT_PUSHING_DOOR:               cancel = act_going_through_door(m);         break;\n        case ACT_WARP_DOOR_SPAWN:            cancel = act_warp_door_spawn(m);            break;\n        case ACT_EMERGE_FROM_PIPE:           cancel = act_emerge_from_pipe(m);           break;\n        case ACT_SPAWN_SPIN_AIRBORNE:        cancel = act_spawn_spin_airborne(m);        break;\n        case ACT_SPAWN_SPIN_LANDING:         cancel = act_spawn_spin_landing(m);         break;\n        case ACT_EXIT_AIRBORNE:              cancel = act_exit_airborne(m);              break;\n        case ACT_EXIT_LAND_SAVE_DIALOG:      cancel = act_exit_land_save_dialog(m);      break;\n        case ACT_DEATH_EXIT:                 cancel = act_death_exit(m);                 break;\n        case ACT_UNUSED_DEATH_EXIT:          cancel = act_unused_death_exit(m);          break;\n        case ACT_FALLING_DEATH_EXIT:         cancel = act_falling_death_exit(m);         break;\n        case ACT_SPECIAL_EXIT_AIRBORNE:      cancel = act_special_exit_airborne(m);      break;\n        case ACT_SPECIAL_DEATH_EXIT:         cancel = act_special_death_exit(m);         break;\n        case ACT_FALLING_EXIT_AIRBORNE:      cancel = act_falling_exit_airborne(m);      break;\n        case ACT_UNLOCKING_KEY_DOOR:         cancel = act_unlocking_key_door(m);         break;\n        case ACT_UNLOCKING_STAR_DOOR:        cancel = act_unlocking_star_door(m);        break;\n        case ACT_ENTERING_STAR_DOOR:         cancel = act_entering_star_door(m);         break;\n        case ACT_SPAWN_NO_SPIN_AIRBORNE:     cancel = act_spawn_no_spin_airborne(m);     break;\n        case ACT_SPAWN_NO_SPIN_LANDING:      cancel = act_spawn_no_spin_landing(m);      break;\n        case ACT_BBH_ENTER_JUMP:             cancel = act_bbh_enter_jump(m);             break;\n        case ACT_BBH_ENTER_SPIN:             cancel = act_bbh_enter_spin(m);             break;\n        case ACT_TELEPORT_FADE_OUT:          cancel = act_teleport_fade_out(m);          break;\n        case ACT_TELEPORT_FADE_IN:           cancel = act_teleport_fade_in(m);           break;\n        case ACT_SHOCKED:                    cancel = act_shocked(m);                    break;\n        case ACT_SQUISHED:                   cancel = act_squished(m);                   break;\n        case ACT_HEAD_STUCK_IN_GROUND:       cancel = act_head_stuck_in_ground(m);       break;\n        case ACT_BUTT_STUCK_IN_GROUND:       cancel = act_butt_stuck_in_ground(m);       break;\n        case ACT_FEET_STUCK_IN_GROUND:       cancel = act_feet_stuck_in_ground(m);       break;\n        case ACT_PUTTING_ON_CAP:             cancel = act_putting_on_cap(m);             break;\n    }\n    /* clang-format on */\n\n    if (!cancel && (m->input & INPUT_IN_WATER)) {\n        m->particleFlags |= PARTICLE_IDLE_WATER_WAVE;\n    }\n\n    return cancel;\n}\n"
  },
  {
    "path": "src/game/mario_actions_cutscene.h",
    "content": "#ifndef MARIO_ACTIONS_CUTSCENE_H\n#define MARIO_ACTIONS_CUTSCENE_H\n\n#include <PR/ultratypes.h>\n\n#include \"macros.h\"\n#include \"types.h\"\n\n// set_mario_npc_dialog\n// actionArg\n#define MARIO_DIALOG_STOP       0\n#define MARIO_DIALOG_LOOK_FRONT 1 // no head turn\n#define MARIO_DIALOG_LOOK_UP    2\n#define MARIO_DIALOG_LOOK_DOWN  3\n// dialogState\n#define MARIO_DIALOG_STATUS_NONE  0\n#define MARIO_DIALOG_STATUS_START 1\n#define MARIO_DIALOG_STATUS_SPEAK 2\n\nvoid print_displaying_credits_entry(void);\nvoid bhv_end_peach_loop(void);\nvoid bhv_end_toad_loop(void);\ns32 geo_switch_peach_eyes(s32 run, struct GraphNode *node, UNUSED s32 a2);\ns32 mario_ready_to_speak(void);\ns32 set_mario_npc_dialog(s32 actionArg);\ns32 mario_execute_cutscene_action(struct MarioState *m);\n\n#endif // MARIO_ACTIONS_CUTSCENE_H\n"
  },
  {
    "path": "src/game/mario_actions_moving.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"sm64.h\"\n#include \"mario.h\"\n#include \"audio/external.h\"\n#include \"engine/math_util.h\"\n#include \"engine/surface_collision.h\"\n#include \"mario_step.h\"\n#include \"area.h\"\n#include \"interaction.h\"\n#include \"mario_actions_object.h\"\n#include \"memory.h\"\n#include \"behavior_data.h\"\n#include \"rumble_init.h\"\n\nstruct LandingAction {\n    s16 numFrames;\n    s16 unk02;\n    u32 verySteepAction;\n    u32 endAction;\n    u32 aPressedAction;\n    u32 offFloorAction;\n    u32 slideAction;\n};\n\nstruct LandingAction sJumpLandAction = {\n    4, 5, ACT_FREEFALL, ACT_JUMP_LAND_STOP, ACT_DOUBLE_JUMP, ACT_FREEFALL, ACT_BEGIN_SLIDING,\n};\n\nstruct LandingAction sFreefallLandAction = {\n    4, 5, ACT_FREEFALL, ACT_FREEFALL_LAND_STOP, ACT_DOUBLE_JUMP, ACT_FREEFALL, ACT_BEGIN_SLIDING,\n};\n\nstruct LandingAction sSideFlipLandAction = {\n    4, 5, ACT_FREEFALL, ACT_SIDE_FLIP_LAND_STOP, ACT_DOUBLE_JUMP, ACT_FREEFALL, ACT_BEGIN_SLIDING,\n};\n\nstruct LandingAction sHoldJumpLandAction = {\n    4, 5, ACT_HOLD_FREEFALL, ACT_HOLD_JUMP_LAND_STOP, ACT_HOLD_JUMP, ACT_HOLD_FREEFALL, ACT_HOLD_BEGIN_SLIDING,\n};\n\nstruct LandingAction sHoldFreefallLandAction = {\n    4, 5, ACT_HOLD_FREEFALL, ACT_HOLD_FREEFALL_LAND_STOP, ACT_HOLD_JUMP, ACT_HOLD_FREEFALL, ACT_HOLD_BEGIN_SLIDING,\n};\n\nstruct LandingAction sLongJumpLandAction = {\n    6, 5, ACT_FREEFALL, ACT_LONG_JUMP_LAND_STOP, ACT_LONG_JUMP, ACT_FREEFALL, ACT_BEGIN_SLIDING,\n};\n\nstruct LandingAction sDoubleJumpLandAction = {\n    4, 5, ACT_FREEFALL, ACT_DOUBLE_JUMP_LAND_STOP, ACT_JUMP, ACT_FREEFALL, ACT_BEGIN_SLIDING,\n};\n\nstruct LandingAction sTripleJumpLandAction = {\n    4, 0, ACT_FREEFALL, ACT_TRIPLE_JUMP_LAND_STOP, ACT_UNINITIALIZED, ACT_FREEFALL, ACT_BEGIN_SLIDING,\n};\n\nstruct LandingAction sBackflipLandAction = {\n    4, 0, ACT_FREEFALL, ACT_BACKFLIP_LAND_STOP, ACT_BACKFLIP, ACT_FREEFALL, ACT_BEGIN_SLIDING,\n};\n\nMat4 sFloorAlignMatrix[2];\n\ns16 tilt_body_running(struct MarioState *m) {\n    s16 pitch = find_floor_slope(m, 0);\n    pitch = pitch * m->forwardVel / 40.0f;\n    return -pitch;\n}\n\nvoid play_step_sound(struct MarioState *m, s16 frame1, s16 frame2) {\n    if (is_anim_past_frame(m, frame1) || is_anim_past_frame(m, frame2)) {\n        if (m->flags & MARIO_METAL_CAP) {\n            if (m->marioObj->header.gfx.animInfo.animID == MARIO_ANIM_TIPTOE) {\n                play_sound_and_spawn_particles(m, SOUND_ACTION_METAL_STEP_TIPTOE, 0);\n            } else {\n                play_sound_and_spawn_particles(m, SOUND_ACTION_METAL_STEP, 0);\n            }\n        } else if (m->quicksandDepth > 50.0f) {\n            play_sound(SOUND_ACTION_QUICKSAND_STEP, m->marioObj->header.gfx.cameraToObject);\n        } else if (m->marioObj->header.gfx.animInfo.animID == MARIO_ANIM_TIPTOE) {\n            play_sound_and_spawn_particles(m, SOUND_ACTION_TERRAIN_STEP_TIPTOE, 0);\n        } else {\n            play_sound_and_spawn_particles(m, SOUND_ACTION_TERRAIN_STEP, 0);\n        }\n    }\n}\n\nvoid align_with_floor(struct MarioState *m) {\n    m->pos[1] = m->floorHeight;\n    mtxf_align_terrain_triangle(sFloorAlignMatrix[m->unk00], m->pos, m->faceAngle[1], 40.0f);\n    m->marioObj->header.gfx.throwMatrix = &sFloorAlignMatrix[m->unk00];\n}\n\ns32 begin_walking_action(struct MarioState *m, f32 forwardVel, u32 action, u32 actionArg) {\n    m->faceAngle[1] = m->intendedYaw;\n    mario_set_forward_vel(m, forwardVel);\n    return set_mario_action(m, action, actionArg);\n}\n\nvoid check_ledge_climb_down(struct MarioState *m) {\n    struct WallCollisionData wallCols;\n    struct Surface *floor;\n    f32 floorHeight;\n    struct Surface *wall;\n    s16 wallAngle;\n    s16 wallDYaw;\n\n    if (m->forwardVel < 10.0f) {\n        wallCols.x = m->pos[0];\n        wallCols.y = m->pos[1];\n        wallCols.z = m->pos[2];\n        wallCols.radius = 10.0f;\n        wallCols.offsetY = -10.0f;\n\n        if (find_wall_collisions(&wallCols) != 0) {\n            floorHeight = find_floor(wallCols.x, wallCols.y, wallCols.z, &floor);\n            if (floor != NULL && (wallCols.y - floorHeight > 160.0f)) {\n                wall = wallCols.walls[wallCols.numWalls - 1];\n                wallAngle = atan2s(wall->normal.z, wall->normal.x);\n                wallDYaw = wallAngle - m->faceAngle[1];\n\n                if (wallDYaw > -0x4000 && wallDYaw < 0x4000) {\n                    m->pos[0] = wallCols.x - 20.0f * wall->normal.x;\n                    m->pos[2] = wallCols.z - 20.0f * wall->normal.z;\n\n                    m->faceAngle[0] = 0;\n                    m->faceAngle[1] = wallAngle + 0x8000;\n\n                    set_mario_action(m, ACT_LEDGE_CLIMB_DOWN, 0);\n                    set_mario_animation(m, MARIO_ANIM_CLIMB_DOWN_LEDGE);\n                }\n            }\n        }\n    }\n}\n\nvoid slide_bonk(struct MarioState *m, u32 fastAction, u32 slowAction) {\n    if (m->forwardVel > 16.0f) {\n        mario_bonk_reflection(m, TRUE);\n        drop_and_set_mario_action(m, fastAction, 0);\n    } else {\n        mario_set_forward_vel(m, 0.0f);\n        set_mario_action(m, slowAction, 0);\n    }\n}\n\ns32 set_triple_jump_action(struct MarioState *m, UNUSED u32 action, UNUSED u32 actionArg) {\n    if (m->flags & MARIO_WING_CAP) {\n        return set_mario_action(m, ACT_FLYING_TRIPLE_JUMP, 0);\n    } else if (m->forwardVel > 20.0f) {\n        return set_mario_action(m, ACT_TRIPLE_JUMP, 0);\n    } else {\n        return set_mario_action(m, ACT_JUMP, 0);\n    }\n\n    return FALSE;\n}\n\nvoid update_sliding_angle(struct MarioState *m, f32 accel, f32 lossFactor) {\n    s32 newFacingDYaw;\n    s16 facingDYaw;\n\n    struct Surface *floor = m->floor;\n    s16 slopeAngle = atan2s(floor->normal.z, floor->normal.x);\n    f32 steepness = sqrtf(floor->normal.x * floor->normal.x + floor->normal.z * floor->normal.z);\n    UNUSED f32 normalY = floor->normal.y;\n\n    m->slideVelX += accel * steepness * sins(slopeAngle);\n    m->slideVelZ += accel * steepness * coss(slopeAngle);\n\n    m->slideVelX *= lossFactor;\n    m->slideVelZ *= lossFactor;\n\n    m->slideYaw = atan2s(m->slideVelZ, m->slideVelX);\n\n    facingDYaw = m->faceAngle[1] - m->slideYaw;\n    newFacingDYaw = facingDYaw;\n\n    //! -0x4000 not handled - can slide down a slope while facing perpendicular to it\n    if (newFacingDYaw > 0 && newFacingDYaw <= 0x4000) {\n        if ((newFacingDYaw -= 0x200) < 0) {\n            newFacingDYaw = 0;\n        }\n    } else if (newFacingDYaw > -0x4000 && newFacingDYaw < 0) {\n        if ((newFacingDYaw += 0x200) > 0) {\n            newFacingDYaw = 0;\n        }\n    } else if (newFacingDYaw > 0x4000 && newFacingDYaw < 0x8000) {\n        if ((newFacingDYaw += 0x200) > 0x8000) {\n            newFacingDYaw = 0x8000;\n        }\n    } else if (newFacingDYaw > -0x8000 && newFacingDYaw < -0x4000) {\n        if ((newFacingDYaw -= 0x200) < -0x8000) {\n            newFacingDYaw = -0x8000;\n        }\n    }\n\n    m->faceAngle[1] = m->slideYaw + newFacingDYaw;\n\n    m->vel[0] = m->slideVelX;\n    m->vel[1] = 0.0f;\n    m->vel[2] = m->slideVelZ;\n\n    mario_update_moving_sand(m);\n    mario_update_windy_ground(m);\n\n    //! Speed is capped a frame late (butt slide HSG)\n    m->forwardVel = sqrtf(m->slideVelX * m->slideVelX + m->slideVelZ * m->slideVelZ);\n    if (m->forwardVel > 100.0f) {\n        m->slideVelX = m->slideVelX * 100.0f / m->forwardVel;\n        m->slideVelZ = m->slideVelZ * 100.0f / m->forwardVel;\n    }\n\n    if (newFacingDYaw < -0x4000 || newFacingDYaw > 0x4000) {\n        m->forwardVel *= -1.0f;\n    }\n}\n\ns32 update_sliding(struct MarioState *m, f32 stopSpeed) {\n    f32 lossFactor;\n    f32 accel;\n    f32 oldSpeed;\n    f32 newSpeed;\n\n    s32 stopped = FALSE;\n\n    s16 intendedDYaw = m->intendedYaw - m->slideYaw;\n    f32 forward = coss(intendedDYaw);\n    f32 sideward = sins(intendedDYaw);\n\n    //! 10k glitch\n    if (forward < 0.0f && m->forwardVel >= 0.0f) {\n        forward *= 0.5f + 0.5f * m->forwardVel / 100.0f;\n    }\n\n    switch (mario_get_floor_class(m)) {\n        case SURFACE_CLASS_VERY_SLIPPERY:\n            accel = 10.0f;\n            lossFactor = m->intendedMag / 32.0f * forward * 0.02f + 0.98f;\n            break;\n\n        case SURFACE_CLASS_SLIPPERY:\n            accel = 8.0f;\n            lossFactor = m->intendedMag / 32.0f * forward * 0.02f + 0.96f;\n            break;\n\n        default:\n            accel = 7.0f;\n            lossFactor = m->intendedMag / 32.0f * forward * 0.02f + 0.92f;\n            break;\n\n        case SURFACE_CLASS_NOT_SLIPPERY:\n            accel = 5.0f;\n            lossFactor = m->intendedMag / 32.0f * forward * 0.02f + 0.92f;\n            break;\n    }\n\n    oldSpeed = sqrtf(m->slideVelX * m->slideVelX + m->slideVelZ * m->slideVelZ);\n\n    //! This is attempting to use trig derivatives to rotate Mario's speed.\n    // It is slightly off/asymmetric since it uses the new X speed, but the old\n    // Z speed.\n    m->slideVelX += m->slideVelZ * (m->intendedMag / 32.0f) * sideward * 0.05f;\n    m->slideVelZ -= m->slideVelX * (m->intendedMag / 32.0f) * sideward * 0.05f;\n\n    newSpeed = sqrtf(m->slideVelX * m->slideVelX + m->slideVelZ * m->slideVelZ);\n\n    if (oldSpeed > 0.0f && newSpeed > 0.0f) {\n        m->slideVelX = m->slideVelX * oldSpeed / newSpeed;\n        m->slideVelZ = m->slideVelZ * oldSpeed / newSpeed;\n    }\n\n    update_sliding_angle(m, accel, lossFactor);\n\n    if (!mario_floor_is_slope(m) && m->forwardVel * m->forwardVel < stopSpeed * stopSpeed) {\n        mario_set_forward_vel(m, 0.0f);\n        stopped = TRUE;\n    }\n\n    return stopped;\n}\n\nvoid apply_slope_accel(struct MarioState *m) {\n    f32 slopeAccel;\n\n    struct Surface *floor = m->floor;\n    f32 steepness = sqrtf(floor->normal.x * floor->normal.x + floor->normal.z * floor->normal.z);\n\n    UNUSED f32 normalY = floor->normal.y;\n    s16 floorDYaw = m->floorAngle - m->faceAngle[1];\n\n    if (mario_floor_is_slope(m)) {\n        s16 slopeClass = 0;\n\n        if (m->action != ACT_SOFT_BACKWARD_GROUND_KB && m->action != ACT_SOFT_FORWARD_GROUND_KB) {\n            slopeClass = mario_get_floor_class(m);\n        }\n\n        switch (slopeClass) {\n            case SURFACE_CLASS_VERY_SLIPPERY:\n                slopeAccel = 5.3f;\n                break;\n            case SURFACE_CLASS_SLIPPERY:\n                slopeAccel = 2.7f;\n                break;\n            default:\n                slopeAccel = 1.7f;\n                break;\n            case SURFACE_CLASS_NOT_SLIPPERY:\n                slopeAccel = 0.0f;\n                break;\n        }\n\n        if (floorDYaw > -0x4000 && floorDYaw < 0x4000) {\n            m->forwardVel += slopeAccel * steepness;\n        } else {\n            m->forwardVel -= slopeAccel * steepness;\n        }\n    }\n\n    m->slideYaw = m->faceAngle[1];\n\n    m->slideVelX = m->forwardVel * sins(m->faceAngle[1]);\n    m->slideVelZ = m->forwardVel * coss(m->faceAngle[1]);\n\n    m->vel[0] = m->slideVelX;\n    m->vel[1] = 0.0f;\n    m->vel[2] = m->slideVelZ;\n\n    mario_update_moving_sand(m);\n    mario_update_windy_ground(m);\n}\n\ns32 apply_landing_accel(struct MarioState *m, f32 frictionFactor) {\n    s32 stopped = FALSE;\n\n    apply_slope_accel(m);\n\n    if (!mario_floor_is_slope(m)) {\n        m->forwardVel *= frictionFactor;\n        if (m->forwardVel * m->forwardVel < 1.0f) {\n            mario_set_forward_vel(m, 0.0f);\n            stopped = TRUE;\n        }\n    }\n\n    return stopped;\n}\n\nvoid update_shell_speed(struct MarioState *m) {\n    f32 maxTargetSpeed;\n    f32 targetSpeed;\n\n    if (m->floorHeight < m->waterLevel) {\n        m->floorHeight = m->waterLevel;\n        m->floor = &gWaterSurfacePseudoFloor;\n        m->floor->originOffset = m->waterLevel; //! Negative origin offset\n    }\n\n    if (m->floor != NULL && m->floor->type == SURFACE_SLOW) {\n        maxTargetSpeed = 48.0f;\n    } else {\n        maxTargetSpeed = 64.0f;\n    }\n\n    targetSpeed = m->intendedMag * 2.0f;\n    if (targetSpeed > maxTargetSpeed) {\n        targetSpeed = maxTargetSpeed;\n    }\n    if (targetSpeed < 24.0f) {\n        targetSpeed = 24.0f;\n    }\n\n    if (m->forwardVel <= 0.0f) {\n        m->forwardVel += 1.1f;\n    } else if (m->forwardVel <= targetSpeed) {\n        m->forwardVel += 1.1f - m->forwardVel / 58.0f;\n    } else if (m->floor->normal.y >= 0.95f) {\n        m->forwardVel -= 1.0f;\n    }\n\n    //! No backward speed cap (shell hyperspeed)\n    if (m->forwardVel > 64.0f) {\n        m->forwardVel = 64.0f;\n    }\n\n    m->faceAngle[1] =\n        m->intendedYaw - approach_s32((s16)(m->intendedYaw - m->faceAngle[1]), 0, 0x800, 0x800);\n\n    apply_slope_accel(m);\n}\n\ns32 apply_slope_decel(struct MarioState *m, f32 decelCoef) {\n    f32 decel;\n    s32 stopped = FALSE;\n\n    switch (mario_get_floor_class(m)) {\n        case SURFACE_CLASS_VERY_SLIPPERY:\n            decel = decelCoef * 0.2f;\n            break;\n        case SURFACE_CLASS_SLIPPERY:\n            decel = decelCoef * 0.7f;\n            break;\n        default:\n            decel = decelCoef * 2.0f;\n            break;\n        case SURFACE_CLASS_NOT_SLIPPERY:\n            decel = decelCoef * 3.0f;\n            break;\n    }\n\n    if ((m->forwardVel = approach_f32(m->forwardVel, 0.0f, decel, decel)) == 0.0f) {\n        stopped = TRUE;\n    }\n\n    apply_slope_accel(m);\n    return stopped;\n}\n\ns32 update_decelerating_speed(struct MarioState *m) {\n    s32 stopped = FALSE;\n\n    if ((m->forwardVel = approach_f32(m->forwardVel, 0.0f, 1.0f, 1.0f)) == 0.0f) {\n        stopped = TRUE;\n    }\n\n    mario_set_forward_vel(m, m->forwardVel);\n    mario_update_moving_sand(m);\n    mario_update_windy_ground(m);\n\n    return stopped;\n}\n\nvoid update_walking_speed(struct MarioState *m) {\n    f32 maxTargetSpeed;\n    f32 targetSpeed;\n\n    if (m->floor != NULL && m->floor->type == SURFACE_SLOW) {\n        maxTargetSpeed = 24.0f;\n    } else {\n        maxTargetSpeed = 32.0f;\n    }\n\n    targetSpeed = m->intendedMag < maxTargetSpeed ? m->intendedMag : maxTargetSpeed;\n\n    if (m->quicksandDepth > 10.0f) {\n        targetSpeed *= 6.25 / m->quicksandDepth;\n    }\n\n    if (m->forwardVel <= 0.0f) {\n        m->forwardVel += 1.1f;\n    } else if (m->forwardVel <= targetSpeed) {\n        m->forwardVel += 1.1f - m->forwardVel / 43.0f;\n    } else if (m->floor->normal.y >= 0.95f) {\n        m->forwardVel -= 1.0f;\n    }\n\n    if (m->forwardVel > 48.0f) {\n        m->forwardVel = 48.0f;\n    }\n\n    m->faceAngle[1] =\n        m->intendedYaw - approach_s32((s16)(m->intendedYaw - m->faceAngle[1]), 0, 0x800, 0x800);\n    apply_slope_accel(m);\n}\n\ns32 should_begin_sliding(struct MarioState *m) {\n    if (m->input & INPUT_ABOVE_SLIDE) {\n        s32 slideLevel = (m->area->terrainType & TERRAIN_MASK) == TERRAIN_SLIDE;\n        s32 movingBackward = m->forwardVel <= -1.0f;\n\n        if (slideLevel || movingBackward || mario_facing_downhill(m, FALSE)) {\n            return TRUE;\n        }\n    }\n\n    return FALSE;\n}\n\ns32 analog_stick_held_back(struct MarioState *m) {\n    s16 intendedDYaw = m->intendedYaw - m->faceAngle[1];\n    return intendedDYaw < -0x471C || intendedDYaw > 0x471C;\n}\n\ns32 check_ground_dive_or_punch(struct MarioState *m) {\n    UNUSED u8 filler[4];\n\n    if (m->input & INPUT_B_PRESSED) {\n        //! Speed kick (shoutouts to SimpleFlips)\n        if (m->forwardVel >= 29.0f && m->controller->stickMag > 48.0f) {\n            m->vel[1] = 20.0f;\n            return set_mario_action(m, ACT_DIVE, 1);\n        }\n\n        return set_mario_action(m, ACT_MOVE_PUNCHING, 0);\n    }\n\n    return FALSE;\n}\n\ns32 begin_braking_action(struct MarioState *m) {\n    mario_drop_held_object(m);\n\n    if (m->actionState == 1) {\n        m->faceAngle[1] = m->actionArg;\n        return set_mario_action(m, ACT_STANDING_AGAINST_WALL, 0);\n    }\n\n    if (m->forwardVel >= 16.0f && m->floor->normal.y >= 0.17364818f) {\n        return set_mario_action(m, ACT_BRAKING, 0);\n    }\n\n    return set_mario_action(m, ACT_DECELERATING, 0);\n}\n\nvoid anim_and_audio_for_walk(struct MarioState *m) {\n    s32 val14;\n    struct Object *marioObj = m->marioObj;\n    s32 val0C = TRUE;\n    s16 targetPitch = 0;\n    f32 val04;\n\n    val04 = m->intendedMag > m->forwardVel ? m->intendedMag : m->forwardVel;\n\n    if (val04 < 4.0f) {\n        val04 = 4.0f;\n    }\n\n    if (m->quicksandDepth > 50.0f) {\n        val14 = (s32)(val04 / 4.0f * 0x10000);\n        set_mario_anim_with_accel(m, MARIO_ANIM_MOVE_IN_QUICKSAND, val14);\n        play_step_sound(m, 19, 93);\n        m->actionTimer = 0;\n    } else {\n        while (val0C) {\n            switch (m->actionTimer) {\n                case 0:\n                    if (val04 > 8.0f) {\n                        m->actionTimer = 2;\n                    } else {\n                        //! (Speed Crash) If Mario's speed is more than 2^17.\n                        if ((val14 = (s32)(val04 / 4.0f * 0x10000)) < 0x1000) {\n                            val14 = 0x1000;\n                        }\n                        set_mario_anim_with_accel(m, MARIO_ANIM_START_TIPTOE, val14);\n                        play_step_sound(m, 7, 22);\n                        if (is_anim_past_frame(m, 23)) {\n                            m->actionTimer = 2;\n                        }\n\n                        val0C = FALSE;\n                    }\n                    break;\n\n                case 1:\n                    if (val04 > 8.0f) {\n                        m->actionTimer = 2;\n                    } else {\n                        //! (Speed Crash) If Mario's speed is more than 2^17.\n                        if ((val14 = (s32)(val04 * 0x10000)) < 0x1000) {\n                            val14 = 0x1000;\n                        }\n                        set_mario_anim_with_accel(m, MARIO_ANIM_TIPTOE, val14);\n                        play_step_sound(m, 14, 72);\n\n                        val0C = FALSE;\n                    }\n                    break;\n\n                case 2:\n                    if (val04 < 5.0f) {\n                        m->actionTimer = 1;\n                    } else if (val04 > 22.0f) {\n                        m->actionTimer = 3;\n                    } else {\n                        //! (Speed Crash) If Mario's speed is more than 2^17.\n                        val14 = (s32)(val04 / 4.0f * 0x10000);\n                        set_mario_anim_with_accel(m, MARIO_ANIM_WALKING, val14);\n                        play_step_sound(m, 10, 49);\n\n                        val0C = FALSE;\n                    }\n                    break;\n\n                case 3:\n                    if (val04 < 18.0f) {\n                        m->actionTimer = 2;\n                    } else {\n                        //! (Speed Crash) If Mario's speed is more than 2^17.\n                        val14 = (s32)(val04 / 4.0f * 0x10000);\n                        set_mario_anim_with_accel(m, MARIO_ANIM_RUNNING, val14);\n                        play_step_sound(m, 9, 45);\n                        targetPitch = tilt_body_running(m);\n\n                        val0C = FALSE;\n                    }\n                    break;\n            }\n        }\n    }\n\n    marioObj->oMarioWalkingPitch =\n        (s16) approach_s32(marioObj->oMarioWalkingPitch, targetPitch, 0x800, 0x800);\n    marioObj->header.gfx.angle[0] = marioObj->oMarioWalkingPitch;\n}\n\nvoid anim_and_audio_for_hold_walk(struct MarioState *m) {\n    s32 val0C;\n    s32 val08 = TRUE;\n    f32 val04;\n\n    val04 = m->intendedMag > m->forwardVel ? m->intendedMag : m->forwardVel;\n\n    if (val04 < 2.0f) {\n        val04 = 2.0f;\n    }\n\n    while (val08) {\n        switch (m->actionTimer) {\n            case 0:\n                if (val04 > 6.0f) {\n                    m->actionTimer = 1;\n                } else {\n                    //! (Speed Crash) Crashes if Mario's speed exceeds or equals 2^15.\n                    val0C = (s32)(val04 * 0x10000);\n                    set_mario_anim_with_accel(m, MARIO_ANIM_SLOW_WALK_WITH_LIGHT_OBJ, val0C);\n                    play_step_sound(m, 12, 62);\n\n                    val08 = FALSE;\n                }\n                break;\n\n            case 1:\n                if (val04 < 3.0f) {\n                    m->actionTimer = 0;\n                } else if (val04 > 11.0f) {\n                    m->actionTimer = 2;\n                } else {\n                    //! (Speed Crash) Crashes if Mario's speed exceeds or equals 2^15.\n                    val0C = (s32)(val04 * 0x10000);\n                    set_mario_anim_with_accel(m, MARIO_ANIM_WALK_WITH_LIGHT_OBJ, val0C);\n                    play_step_sound(m, 12, 62);\n\n                    val08 = FALSE;\n                }\n                break;\n\n            case 2:\n                if (val04 < 8.0f) {\n                    m->actionTimer = 1;\n                } else {\n                    //! (Speed Crash) Crashes if Mario's speed exceeds or equals 2^16.\n                    val0C = (s32)(val04 / 2.0f * 0x10000);\n                    set_mario_anim_with_accel(m, MARIO_ANIM_RUN_WITH_LIGHT_OBJ, val0C);\n                    play_step_sound(m, 10, 49);\n\n                    val08 = FALSE;\n                }\n                break;\n        }\n    }\n}\n\nvoid anim_and_audio_for_heavy_walk(struct MarioState *m) {\n    s32 val04 = (s32)(m->intendedMag * 0x10000);\n    set_mario_anim_with_accel(m, MARIO_ANIM_WALK_WITH_HEAVY_OBJ, val04);\n    play_step_sound(m, 26, 79);\n}\n\nvoid push_or_sidle_wall(struct MarioState *m, Vec3f startPos) {\n    s16 wallAngle;\n    s16 dWallAngle;\n    f32 dx = m->pos[0] - startPos[0];\n    f32 dz = m->pos[2] - startPos[2];\n    f32 movedDistance = sqrtf(dx * dx + dz * dz);\n    //! (Speed Crash) If a wall is after moving 16384 distance, this crashes.\n    s32 val04 = (s32)(movedDistance * 2.0f * 0x10000);\n\n    if (m->forwardVel > 6.0f) {\n        mario_set_forward_vel(m, 6.0f);\n    }\n\n    if (m->wall != NULL) {\n        wallAngle = atan2s(m->wall->normal.z, m->wall->normal.x);\n        dWallAngle = wallAngle - m->faceAngle[1];\n    }\n\n    if (m->wall == NULL || dWallAngle <= -0x71C8 || dWallAngle >= 0x71C8) {\n        m->flags |= MARIO_UNKNOWN_31;\n        set_mario_animation(m, MARIO_ANIM_PUSHING);\n        play_step_sound(m, 6, 18);\n    } else {\n        if (dWallAngle < 0) {\n            set_mario_anim_with_accel(m, MARIO_ANIM_SIDESTEP_RIGHT, val04);\n        } else {\n            set_mario_anim_with_accel(m, MARIO_ANIM_SIDESTEP_LEFT, val04);\n        }\n\n        if (m->marioObj->header.gfx.animInfo.animFrame < 20) {\n            play_sound(SOUND_MOVING_TERRAIN_SLIDE + m->terrainSoundAddend, m->marioObj->header.gfx.cameraToObject);\n            m->particleFlags |= PARTICLE_DUST;\n        }\n\n        m->actionState = 1;\n        m->actionArg = wallAngle + 0x8000;\n        m->marioObj->header.gfx.angle[1] = wallAngle + 0x8000;\n        m->marioObj->header.gfx.angle[2] = find_floor_slope(m, 0x4000);\n    }\n}\n\nvoid tilt_body_walking(struct MarioState *m, s16 startYaw) {\n    struct MarioBodyState *val0C = m->marioBodyState;\n    UNUSED struct Object *marioObj = m->marioObj;\n    s16 animID = m->marioObj->header.gfx.animInfo.animID;\n\n    if (animID == MARIO_ANIM_WALKING || animID == MARIO_ANIM_RUNNING) {\n        s16 dYaw = m->faceAngle[1] - startYaw;\n        //! (Speed Crash) These casts can cause a crash if (dYaw * forwardVel / 12) or\n        //! (forwardVel * 170) exceed or equal 2^31.\n        s16 val02 = -(s16)(dYaw * m->forwardVel / 12.0f);\n        s16 val00 = (s16)(m->forwardVel * 170.0f);\n\n        if (val02 > 0x1555) {\n            val02 = 0x1555;\n        }\n        if (val02 < -0x1555) {\n            val02 = -0x1555;\n        }\n\n        if (val00 > 0x1555) {\n            val00 = 0x1555;\n        }\n        if (val00 < 0) {\n            val00 = 0;\n        }\n\n        val0C->torsoAngle[2] = approach_s32(val0C->torsoAngle[2], val02, 0x400, 0x400);\n        val0C->torsoAngle[0] = approach_s32(val0C->torsoAngle[0], val00, 0x400, 0x400);\n    } else {\n        val0C->torsoAngle[2] = 0;\n        val0C->torsoAngle[0] = 0;\n    }\n}\n\nvoid tilt_body_ground_shell(struct MarioState *m, s16 startYaw) {\n    struct MarioBodyState *val0C = m->marioBodyState;\n    struct Object *marioObj = m->marioObj;\n    s16 dYaw = m->faceAngle[1] - startYaw;\n    //! (Speed Crash) These casts can cause a crash if (dYaw * forwardVel / 12) or\n    //! (forwardVel * 170) exceed or equal 2^31. Harder (if not impossible to do)\n    //! while on a Koopa Shell making this less of an issue.\n    s16 val04 = -(s16)(dYaw * m->forwardVel / 12.0f);\n    s16 val02 = (s16)(m->forwardVel * 170.0f);\n\n    if (val04 > 0x1800) {\n        val04 = 0x1800;\n    }\n    if (val04 < -0x1800) {\n        val04 = -0x1800;\n    }\n\n    if (val02 > 0x1000) {\n        val02 = 0x1000;\n    }\n    if (val02 < 0) {\n        val02 = 0;\n    }\n\n    val0C->torsoAngle[2] = approach_s32(val0C->torsoAngle[2], val04, 0x200, 0x200);\n    val0C->torsoAngle[0] = approach_s32(val0C->torsoAngle[0], val02, 0x200, 0x200);\n    val0C->headAngle[2] = -val0C->torsoAngle[2];\n\n    marioObj->header.gfx.angle[2] = val0C->torsoAngle[2];\n    marioObj->header.gfx.pos[1] += 45.0f;\n}\n\ns32 act_walking(struct MarioState *m) {\n    Vec3f startPos;\n    s16 startYaw = m->faceAngle[1];\n\n    mario_drop_held_object(m);\n\n    if (should_begin_sliding(m)) {\n        return set_mario_action(m, ACT_BEGIN_SLIDING, 0);\n    }\n\n    if (m->input & INPUT_FIRST_PERSON) {\n        return begin_braking_action(m);\n    }\n\n    if (m->input & INPUT_A_PRESSED) {\n        return set_jump_from_landing(m);\n    }\n\n    if (check_ground_dive_or_punch(m)) {\n        return TRUE;\n    }\n\n    if (m->input & INPUT_UNKNOWN_5) {\n        return begin_braking_action(m);\n    }\n\n    if (analog_stick_held_back(m) && m->forwardVel >= 16.0f) {\n        return set_mario_action(m, ACT_TURNING_AROUND, 0);\n    }\n\n    if (m->input & INPUT_Z_PRESSED) {\n        return set_mario_action(m, ACT_CROUCH_SLIDE, 0);\n    }\n\n    m->actionState = 0;\n\n    vec3f_copy(startPos, m->pos);\n    update_walking_speed(m);\n\n    switch (perform_ground_step(m)) {\n        case GROUND_STEP_LEFT_GROUND:\n            set_mario_action(m, ACT_FREEFALL, 0);\n            set_mario_animation(m, MARIO_ANIM_GENERAL_FALL);\n            break;\n\n        case GROUND_STEP_NONE:\n            anim_and_audio_for_walk(m);\n            if (m->intendedMag - m->forwardVel > 16.0f) {\n                m->particleFlags |= PARTICLE_DUST;\n            }\n            break;\n\n        case GROUND_STEP_HIT_WALL:\n            push_or_sidle_wall(m, startPos);\n            m->actionTimer = 0;\n            break;\n    }\n\n    check_ledge_climb_down(m);\n    tilt_body_walking(m, startYaw);\n    return FALSE;\n}\n\ns32 act_move_punching(struct MarioState *m) {\n    if (should_begin_sliding(m)) {\n        return set_mario_action(m, ACT_BEGIN_SLIDING, 0);\n    }\n\n    if (m->actionState == 0 && (m->input & INPUT_A_DOWN)) {\n        return set_mario_action(m, ACT_JUMP_KICK, 0);\n    }\n\n    m->actionState = 1;\n\n    mario_update_punch_sequence(m);\n\n    if (m->forwardVel >= 0.0f) {\n        apply_slope_decel(m, 0.5f);\n    } else {\n        if ((m->forwardVel += 8.0f) >= 0.0f) {\n            m->forwardVel = 0.0f;\n        }\n        apply_slope_accel(m);\n    }\n\n    switch (perform_ground_step(m)) {\n        case GROUND_STEP_LEFT_GROUND:\n            set_mario_action(m, ACT_FREEFALL, 0);\n            break;\n\n        case GROUND_STEP_NONE:\n            m->particleFlags |= PARTICLE_DUST;\n            break;\n    }\n\n    return FALSE;\n}\n\ns32 act_hold_walking(struct MarioState *m) {\n    if (m->heldObj->behavior == segmented_to_virtual(bhvJumpingBox)) {\n        return set_mario_action(m, ACT_CRAZY_BOX_BOUNCE, 0);\n    }\n\n    if (m->marioObj->oInteractStatus & INT_STATUS_MARIO_DROP_OBJECT) {\n        return drop_and_set_mario_action(m, ACT_WALKING, 0);\n    }\n\n    if (should_begin_sliding(m)) {\n        return set_mario_action(m, ACT_HOLD_BEGIN_SLIDING, 0);\n    }\n\n    if (m->input & INPUT_B_PRESSED) {\n        return set_mario_action(m, ACT_THROWING, 0);\n    }\n\n    if (m->input & INPUT_A_PRESSED) {\n        return set_jumping_action(m, ACT_HOLD_JUMP, 0);\n    }\n\n    if (m->input & INPUT_UNKNOWN_5) {\n        return set_mario_action(m, ACT_HOLD_DECELERATING, 0);\n    }\n\n    if (m->input & INPUT_Z_PRESSED) {\n        return drop_and_set_mario_action(m, ACT_CROUCH_SLIDE, 0);\n    }\n\n    m->intendedMag *= 0.4f;\n\n    update_walking_speed(m);\n\n    switch (perform_ground_step(m)) {\n        case GROUND_STEP_LEFT_GROUND:\n            set_mario_action(m, ACT_HOLD_FREEFALL, 0);\n            break;\n\n        case GROUND_STEP_HIT_WALL:\n            if (m->forwardVel > 16.0f) {\n                mario_set_forward_vel(m, 16.0f);\n            }\n            break;\n    }\n\n    anim_and_audio_for_hold_walk(m);\n\n    if (0.4f * m->intendedMag - m->forwardVel > 10.0f) {\n        m->particleFlags |= PARTICLE_DUST;\n    }\n\n    return FALSE;\n}\n\ns32 act_hold_heavy_walking(struct MarioState *m) {\n    if (m->input & INPUT_B_PRESSED) {\n        return set_mario_action(m, ACT_HEAVY_THROW, 0);\n    }\n\n    if (should_begin_sliding(m)) {\n        return drop_and_set_mario_action(m, ACT_BEGIN_SLIDING, 0);\n    }\n\n    if (m->input & INPUT_UNKNOWN_5) {\n        return set_mario_action(m, ACT_HOLD_HEAVY_IDLE, 0);\n    }\n\n    m->intendedMag *= 0.1f;\n\n    update_walking_speed(m);\n\n    switch (perform_ground_step(m)) {\n        case GROUND_STEP_LEFT_GROUND:\n            drop_and_set_mario_action(m, ACT_FREEFALL, 0);\n            break;\n\n        case GROUND_STEP_HIT_WALL:\n            if (m->forwardVel > 10.0f) {\n                mario_set_forward_vel(m, 10.0f);\n            }\n            break;\n    }\n\n    anim_and_audio_for_heavy_walk(m);\n    return FALSE;\n}\n\ns32 act_turning_around(struct MarioState *m) {\n    if (m->input & INPUT_ABOVE_SLIDE) {\n        return set_mario_action(m, ACT_BEGIN_SLIDING, 0);\n    }\n\n    if (m->input & INPUT_A_PRESSED) {\n        return set_jumping_action(m, ACT_SIDE_FLIP, 0);\n    }\n\n    if (m->input & INPUT_UNKNOWN_5) {\n        return set_mario_action(m, ACT_BRAKING, 0);\n    }\n\n    if (!analog_stick_held_back(m)) {\n        return set_mario_action(m, ACT_WALKING, 0);\n    }\n\n    if (apply_slope_decel(m, 2.0f)) {\n        return begin_walking_action(m, 8.0f, ACT_FINISH_TURNING_AROUND, 0);\n    }\n\n    play_sound(SOUND_MOVING_TERRAIN_SLIDE + m->terrainSoundAddend, m->marioObj->header.gfx.cameraToObject);\n\n    adjust_sound_for_speed(m);\n\n    switch (perform_ground_step(m)) {\n        case GROUND_STEP_LEFT_GROUND:\n            set_mario_action(m, ACT_FREEFALL, 0);\n            break;\n\n        case GROUND_STEP_NONE:\n            m->particleFlags |= PARTICLE_DUST;\n            break;\n    }\n\n    if (m->forwardVel >= 18.0f) {\n        set_mario_animation(m, MARIO_ANIM_TURNING_PART1);\n    } else {\n        set_mario_animation(m, MARIO_ANIM_TURNING_PART2);\n        if (is_anim_at_end(m)) {\n            if (m->forwardVel > 0.0f) {\n                begin_walking_action(m, -m->forwardVel, ACT_WALKING, 0);\n            } else {\n                begin_walking_action(m, 8.0f, ACT_WALKING, 0);\n            }\n        }\n    }\n\n    return FALSE;\n}\n\ns32 act_finish_turning_around(struct MarioState *m) {\n    if (m->input & INPUT_ABOVE_SLIDE) {\n        return set_mario_action(m, ACT_BEGIN_SLIDING, 0);\n    }\n\n    if (m->input & INPUT_A_PRESSED) {\n        return set_jumping_action(m, ACT_SIDE_FLIP, 0);\n    }\n\n    update_walking_speed(m);\n    set_mario_animation(m, MARIO_ANIM_TURNING_PART2);\n\n    if (perform_ground_step(m) == GROUND_STEP_LEFT_GROUND) {\n        set_mario_action(m, ACT_FREEFALL, 0);\n    }\n\n    if (is_anim_at_end(m)) {\n        set_mario_action(m, ACT_WALKING, 0);\n    }\n\n    m->marioObj->header.gfx.angle[1] += 0x8000;\n    return FALSE;\n}\n\ns32 act_braking(struct MarioState *m) {\n    if (!(m->input & INPUT_FIRST_PERSON)\n        && (m->input\n            & (INPUT_NONZERO_ANALOG | INPUT_A_PRESSED | INPUT_OFF_FLOOR | INPUT_ABOVE_SLIDE))) {\n        return check_common_action_exits(m);\n    }\n\n    if (apply_slope_decel(m, 2.0f)) {\n        return set_mario_action(m, ACT_BRAKING_STOP, 0);\n    }\n\n    if (m->input & INPUT_B_PRESSED) {\n        return set_mario_action(m, ACT_MOVE_PUNCHING, 0);\n    }\n\n    switch (perform_ground_step(m)) {\n        case GROUND_STEP_LEFT_GROUND:\n            set_mario_action(m, ACT_FREEFALL, 0);\n            break;\n\n        case GROUND_STEP_NONE:\n            m->particleFlags |= PARTICLE_DUST;\n            break;\n\n        case GROUND_STEP_HIT_WALL:\n            slide_bonk(m, ACT_BACKWARD_GROUND_KB, ACT_BRAKING_STOP);\n            break;\n    }\n\n    play_sound(SOUND_MOVING_TERRAIN_SLIDE + m->terrainSoundAddend, m->marioObj->header.gfx.cameraToObject);\n    adjust_sound_for_speed(m);\n    set_mario_animation(m, MARIO_ANIM_SKID_ON_GROUND);\n    return FALSE;\n}\n\ns32 act_decelerating(struct MarioState *m) {\n    s32 val0C;\n    s16 slopeClass = mario_get_floor_class(m);\n\n    if (!(m->input & INPUT_FIRST_PERSON)) {\n        if (should_begin_sliding(m)) {\n            return set_mario_action(m, ACT_BEGIN_SLIDING, 0);\n        }\n\n        if (m->input & INPUT_A_PRESSED) {\n            return set_jump_from_landing(m);\n        }\n\n        if (check_ground_dive_or_punch(m)) {\n            return TRUE;\n        }\n\n        if (m->input & INPUT_NONZERO_ANALOG) {\n            return set_mario_action(m, ACT_WALKING, 0);\n        }\n\n        if (m->input & INPUT_Z_PRESSED) {\n            return set_mario_action(m, ACT_CROUCH_SLIDE, 0);\n        }\n    }\n\n    if (update_decelerating_speed(m)) {\n        return set_mario_action(m, ACT_IDLE, 0);\n    }\n\n    switch (perform_ground_step(m)) {\n        case GROUND_STEP_LEFT_GROUND:\n            set_mario_action(m, ACT_FREEFALL, 0);\n            break;\n\n        case GROUND_STEP_HIT_WALL:\n            if (slopeClass == SURFACE_CLASS_VERY_SLIPPERY) {\n                mario_bonk_reflection(m, TRUE);\n            } else {\n                mario_set_forward_vel(m, 0.0f);\n            }\n            break;\n    }\n\n    if (slopeClass == SURFACE_CLASS_VERY_SLIPPERY) {\n        set_mario_animation(m, MARIO_ANIM_IDLE_HEAD_LEFT);\n        play_sound(SOUND_MOVING_TERRAIN_SLIDE + m->terrainSoundAddend, m->marioObj->header.gfx.cameraToObject);\n        adjust_sound_for_speed(m);\n        m->particleFlags |= PARTICLE_DUST;\n    } else {\n        // (Speed Crash) Crashes if speed exceeds 2^17.\n        if ((val0C = (s32)(m->forwardVel / 4.0f * 0x10000)) < 0x1000) {\n            val0C = 0x1000;\n        }\n\n        set_mario_anim_with_accel(m, MARIO_ANIM_WALKING, val0C);\n        play_step_sound(m, 10, 49);\n    }\n\n    return FALSE;\n}\n\ns32 act_hold_decelerating(struct MarioState *m) {\n    s32 val0C;\n    s16 slopeClass = mario_get_floor_class(m);\n\n    if (m->marioObj->oInteractStatus & INT_STATUS_MARIO_DROP_OBJECT) {\n        return drop_and_set_mario_action(m, ACT_WALKING, 0);\n    }\n\n    if (should_begin_sliding(m)) {\n        return set_mario_action(m, ACT_HOLD_BEGIN_SLIDING, 0);\n    }\n\n    if (m->input & INPUT_B_PRESSED) {\n        return set_mario_action(m, ACT_THROWING, 0);\n    }\n\n    if (m->input & INPUT_A_PRESSED) {\n        return set_jumping_action(m, ACT_HOLD_JUMP, 0);\n    }\n\n    if (m->input & INPUT_Z_PRESSED) {\n        return drop_and_set_mario_action(m, ACT_CROUCH_SLIDE, 0);\n    }\n\n    if (m->input & INPUT_NONZERO_ANALOG) {\n        return set_mario_action(m, ACT_HOLD_WALKING, 0);\n    }\n\n    if (update_decelerating_speed(m)) {\n        return set_mario_action(m, ACT_HOLD_IDLE, 0);\n    }\n\n    m->intendedMag *= 0.4f;\n\n    switch (perform_ground_step(m)) {\n        case GROUND_STEP_LEFT_GROUND:\n            set_mario_action(m, ACT_HOLD_FREEFALL, 0);\n            break;\n\n        case GROUND_STEP_HIT_WALL:\n            if (slopeClass == SURFACE_CLASS_VERY_SLIPPERY) {\n                mario_bonk_reflection(m, TRUE);\n            } else {\n                mario_set_forward_vel(m, 0.0f);\n            }\n            break;\n    }\n\n    if (slopeClass == SURFACE_CLASS_VERY_SLIPPERY) {\n        set_mario_animation(m, MARIO_ANIM_IDLE_WITH_LIGHT_OBJ);\n        play_sound(SOUND_MOVING_TERRAIN_SLIDE + m->terrainSoundAddend, m->marioObj->header.gfx.cameraToObject);\n        adjust_sound_for_speed(m);\n        m->particleFlags |= PARTICLE_DUST;\n    } else {\n        //! (Speed Crash) This crashes if Mario has more speed than 2^15 speed.\n        if ((val0C = (s32)(m->forwardVel * 0x10000)) < 0x1000) {\n            val0C = 0x1000;\n        }\n\n        set_mario_anim_with_accel(m, MARIO_ANIM_WALK_WITH_LIGHT_OBJ, val0C);\n        play_step_sound(m, 12, 62);\n    }\n\n    return FALSE;\n}\n\ns32 act_riding_shell_ground(struct MarioState *m) {\n    s16 startYaw = m->faceAngle[1];\n\n    if (m->input & INPUT_A_PRESSED) {\n        return set_mario_action(m, ACT_RIDING_SHELL_JUMP, 0);\n    }\n\n    if (m->input & INPUT_Z_PRESSED) {\n        mario_stop_riding_object(m);\n        if (m->forwardVel < 24.0f) {\n            mario_set_forward_vel(m, 24.0f);\n        }\n        return set_mario_action(m, ACT_CROUCH_SLIDE, 0);\n    }\n\n    update_shell_speed(m);\n    set_mario_animation(m, m->actionArg == 0 ? MARIO_ANIM_START_RIDING_SHELL : MARIO_ANIM_RIDING_SHELL);\n\n    switch (perform_ground_step(m)) {\n        case GROUND_STEP_LEFT_GROUND:\n            set_mario_action(m, ACT_RIDING_SHELL_FALL, 0);\n            break;\n\n        case GROUND_STEP_HIT_WALL:\n            mario_stop_riding_object(m);\n            play_sound(m->flags & MARIO_METAL_CAP ? SOUND_ACTION_METAL_BONK : SOUND_ACTION_BONK,\n                       m->marioObj->header.gfx.cameraToObject);\n            m->particleFlags |= PARTICLE_VERTICAL_STAR;\n            set_mario_action(m, ACT_BACKWARD_GROUND_KB, 0);\n            break;\n    }\n\n    tilt_body_ground_shell(m, startYaw);\n    if (m->floor->type == SURFACE_BURNING) {\n        play_sound(SOUND_MOVING_RIDING_SHELL_LAVA, m->marioObj->header.gfx.cameraToObject);\n    } else {\n        play_sound(SOUND_MOVING_TERRAIN_RIDING_SHELL + m->terrainSoundAddend,\n                   m->marioObj->header.gfx.cameraToObject);\n    }\n\n    adjust_sound_for_speed(m);\n#if ENABLE_RUMBLE\n    reset_rumble_timers();\n#endif\n    return FALSE;\n}\n\ns32 act_crawling(struct MarioState *m) {\n    s32 val04;\n\n    if (should_begin_sliding(m)) {\n        return set_mario_action(m, ACT_BEGIN_SLIDING, 0);\n    }\n\n    if (m->input & INPUT_FIRST_PERSON) {\n        return set_mario_action(m, ACT_STOP_CRAWLING, 0);\n    }\n\n    if (m->input & INPUT_A_PRESSED) {\n        return set_jumping_action(m, ACT_JUMP, 0);\n    }\n\n    if (check_ground_dive_or_punch(m)) {\n        return TRUE;\n    }\n\n    if (m->input & INPUT_UNKNOWN_5) {\n        return set_mario_action(m, ACT_STOP_CRAWLING, 0);\n    }\n\n    if (!(m->input & INPUT_Z_DOWN)) {\n        return set_mario_action(m, ACT_STOP_CRAWLING, 0);\n    }\n\n    m->intendedMag *= 0.1f;\n\n    update_walking_speed(m);\n\n    switch (perform_ground_step(m)) {\n        case GROUND_STEP_LEFT_GROUND:\n            set_mario_action(m, ACT_FREEFALL, 0);\n            break;\n\n        case GROUND_STEP_HIT_WALL:\n            if (m->forwardVel > 10.0f) {\n                mario_set_forward_vel(m, 10.0f);\n            }\n            //! Possibly unintended missing break\n\n        case GROUND_STEP_NONE:\n            align_with_floor(m);\n            break;\n    }\n\n    val04 = (s32)(m->intendedMag * 2.0f * 0x10000);\n    set_mario_anim_with_accel(m, MARIO_ANIM_CRAWLING, val04);\n    play_step_sound(m, 26, 79);\n    return FALSE;\n}\n\ns32 act_burning_ground(struct MarioState *m) {\n    if (m->input & INPUT_A_PRESSED) {\n        return set_mario_action(m, ACT_BURNING_JUMP, 0);\n    }\n\n    m->marioObj->oMarioBurnTimer += 2;\n    if (m->marioObj->oMarioBurnTimer > 160) {\n        return set_mario_action(m, ACT_WALKING, 0);\n    }\n\n    if (m->waterLevel - m->floorHeight > 50.0f) {\n        play_sound(SOUND_GENERAL_FLAME_OUT, m->marioObj->header.gfx.cameraToObject);\n        return set_mario_action(m, ACT_WALKING, 0);\n    }\n\n    if (m->forwardVel < 8.0f) {\n        m->forwardVel = 8.0f;\n    }\n    if (m->forwardVel > 48.0f) {\n        m->forwardVel = 48.0f;\n    }\n\n    m->forwardVel = approach_f32(m->forwardVel, 32.0f, 4.0f, 1.0f);\n\n    if (m->input & INPUT_NONZERO_ANALOG) {\n        m->faceAngle[1] =\n            m->intendedYaw - approach_s32((s16)(m->intendedYaw - m->faceAngle[1]), 0, 0x600, 0x600);\n    }\n\n    apply_slope_accel(m);\n\n    if (perform_ground_step(m) == GROUND_STEP_LEFT_GROUND) {\n        set_mario_action(m, ACT_BURNING_FALL, 0);\n    }\n\n    set_mario_anim_with_accel(m, MARIO_ANIM_RUNNING, (s32)(m->forwardVel / 2.0f * 0x10000));\n    play_step_sound(m, 9, 45);\n\n    m->particleFlags |= PARTICLE_FIRE;\n    play_sound(SOUND_MOVING_LAVA_BURN, m->marioObj->header.gfx.cameraToObject);\n\n    m->health -= 10;\n    if (m->health < 0x100) {\n        set_mario_action(m, ACT_STANDING_DEATH, 0);\n    }\n\n    m->marioBodyState->eyeState = MARIO_EYES_DEAD;\n#if ENABLE_RUMBLE\n    reset_rumble_timers();\n#endif\n    return FALSE;\n}\n\nvoid tilt_body_butt_slide(struct MarioState *m) {\n    s16 intendedDYaw = m->intendedYaw - m->faceAngle[1];\n    m->marioBodyState->torsoAngle[0] = (s32)(5461.3335f * m->intendedMag / 32.0f * coss(intendedDYaw));\n    m->marioBodyState->torsoAngle[2] = (s32)(-(5461.3335f * m->intendedMag / 32.0f * sins(intendedDYaw)));\n}\n\nvoid common_slide_action(struct MarioState *m, u32 endAction, u32 airAction, s32 animation) {\n    Vec3f pos;\n\n    vec3f_copy(pos, m->pos);\n    play_sound(SOUND_MOVING_TERRAIN_SLIDE + m->terrainSoundAddend, m->marioObj->header.gfx.cameraToObject);\n\n#if ENABLE_RUMBLE\n    reset_rumble_timers();\n#endif\n\n    adjust_sound_for_speed(m);\n\n    switch (perform_ground_step(m)) {\n        case GROUND_STEP_LEFT_GROUND:\n            set_mario_action(m, airAction, 0);\n            if (m->forwardVel < -50.0f || 50.0f < m->forwardVel) {\n                play_sound(SOUND_MARIO_HOOHOO, m->marioObj->header.gfx.cameraToObject);\n            }\n            break;\n\n        case GROUND_STEP_NONE:\n            set_mario_animation(m, animation);\n            align_with_floor(m);\n            m->particleFlags |= PARTICLE_DUST;\n            break;\n\n        case GROUND_STEP_HIT_WALL:\n            if (!mario_floor_is_slippery(m)) {\n#ifdef VERSION_JP\n                m->particleFlags |= PARTICLE_VERTICAL_STAR;\n#else\n                if (m->forwardVel > 16.0f) {\n                    m->particleFlags |= PARTICLE_VERTICAL_STAR;\n                }\n#endif\n                slide_bonk(m, ACT_GROUND_BONK, endAction);\n            } else if (m->wall != NULL) {\n                s16 wallAngle = atan2s(m->wall->normal.z, m->wall->normal.x);\n                f32 slideSpeed = sqrtf(m->slideVelX * m->slideVelX + m->slideVelZ * m->slideVelZ);\n\n                if ((slideSpeed *= 0.9) < 4.0f) {\n                    slideSpeed = 4.0f;\n                }\n\n                m->slideYaw = wallAngle - (s16)(m->slideYaw - wallAngle) + 0x8000;\n\n                m->vel[0] = m->slideVelX = slideSpeed * sins(m->slideYaw);\n                m->vel[2] = m->slideVelZ = slideSpeed * coss(m->slideYaw);\n            }\n\n            align_with_floor(m);\n            break;\n    }\n}\n\ns32 common_slide_action_with_jump(struct MarioState *m, u32 stopAction, u32 jumpAction, u32 airAction,\n                                  s32 animation) {\n    if (m->actionTimer == 5) {\n        if (m->input & INPUT_A_PRESSED) {\n            return set_jumping_action(m, jumpAction, 0);\n        }\n    } else {\n        m->actionTimer++;\n    }\n\n    if (update_sliding(m, 4.0f)) {\n        return set_mario_action(m, stopAction, 0);\n    }\n\n    common_slide_action(m, stopAction, airAction, animation);\n    return FALSE;\n}\n\ns32 act_butt_slide(struct MarioState *m) {\n    s32 cancel = common_slide_action_with_jump(m, ACT_BUTT_SLIDE_STOP, ACT_JUMP, ACT_BUTT_SLIDE_AIR,\n                                               MARIO_ANIM_SLIDE);\n    tilt_body_butt_slide(m);\n    return cancel;\n}\n\ns32 act_hold_butt_slide(struct MarioState *m) {\n    s32 cancel;\n\n    if (m->marioObj->oInteractStatus & INT_STATUS_MARIO_DROP_OBJECT) {\n        return drop_and_set_mario_action(m, ACT_BUTT_SLIDE, 0);\n    }\n\n    cancel = common_slide_action_with_jump(m, ACT_HOLD_BUTT_SLIDE_STOP, ACT_HOLD_JUMP, ACT_HOLD_BUTT_SLIDE_AIR,\n                                           MARIO_ANIM_SLIDING_ON_BOTTOM_WITH_LIGHT_OBJ);\n    tilt_body_butt_slide(m);\n    return cancel;\n}\n\ns32 act_crouch_slide(struct MarioState *m) {\n    s32 cancel;\n\n    if (m->input & INPUT_ABOVE_SLIDE) {\n        return set_mario_action(m, ACT_BUTT_SLIDE, 0);\n    }\n\n    if (m->actionTimer < 30) {\n        m->actionTimer++;\n        if (m->input & INPUT_A_PRESSED) {\n            if (m->forwardVel > 10.0f) {\n                return set_jumping_action(m, ACT_LONG_JUMP, 0);\n            }\n        }\n    }\n\n    if (m->input & INPUT_B_PRESSED) {\n        if (m->forwardVel >= 10.0f) {\n            return set_mario_action(m, ACT_SLIDE_KICK, 0);\n        } else {\n            return set_mario_action(m, ACT_MOVE_PUNCHING, 0x0009);\n        }\n    }\n\n    if (m->input & INPUT_A_PRESSED) {\n        return set_jumping_action(m, ACT_JUMP, 0);\n    }\n\n    if (m->input & INPUT_FIRST_PERSON) {\n        return set_mario_action(m, ACT_BRAKING, 0);\n    }\n\n    cancel = common_slide_action_with_jump(m, ACT_CROUCHING, ACT_JUMP, ACT_FREEFALL,\n                                           MARIO_ANIM_START_CROUCHING);\n    return cancel;\n}\n\ns32 act_slide_kick_slide(struct MarioState *m) {\n    if (m->input & INPUT_A_PRESSED) {\n#if ENABLE_RUMBLE\n        queue_rumble_data(5, 80);\n#endif\n        return set_jumping_action(m, ACT_FORWARD_ROLLOUT, 0);\n    }\n\n    set_mario_animation(m, MARIO_ANIM_SLIDE_KICK);\n    if (is_anim_at_end(m) && m->forwardVel < 1.0f) {\n        return set_mario_action(m, ACT_SLIDE_KICK_SLIDE_STOP, 0);\n    }\n\n    update_sliding(m, 1.0f);\n    switch (perform_ground_step(m)) {\n        case GROUND_STEP_LEFT_GROUND:\n            set_mario_action(m, ACT_FREEFALL, 2);\n            break;\n\n        case GROUND_STEP_HIT_WALL:\n            mario_bonk_reflection(m, TRUE);\n            m->particleFlags |= PARTICLE_VERTICAL_STAR;\n            set_mario_action(m, ACT_BACKWARD_GROUND_KB, 0);\n            break;\n    }\n\n    play_sound(SOUND_MOVING_TERRAIN_SLIDE + m->terrainSoundAddend, m->marioObj->header.gfx.cameraToObject);\n    m->particleFlags |= PARTICLE_DUST;\n    return FALSE;\n}\n\ns32 stomach_slide_action(struct MarioState *m, u32 stopAction, u32 airAction, s32 animation) {\n    if (m->actionTimer == 5) {\n        if (!(m->input & INPUT_ABOVE_SLIDE) && (m->input & (INPUT_A_PRESSED | INPUT_B_PRESSED))) {\n#if ENABLE_RUMBLE\n            queue_rumble_data(5, 80);\n#endif\n            return drop_and_set_mario_action(\n                m, m->forwardVel >= 0.0f ? ACT_FORWARD_ROLLOUT : ACT_BACKWARD_ROLLOUT, 0);\n        }\n    } else {\n        m->actionTimer++;\n    }\n\n    if (update_sliding(m, 4.0f)) {\n        return set_mario_action(m, stopAction, 0);\n    }\n\n    common_slide_action(m, stopAction, airAction, animation);\n    return FALSE;\n}\n\ns32 act_stomach_slide(struct MarioState *m) {\n    s32 cancel = stomach_slide_action(m, ACT_STOMACH_SLIDE_STOP, ACT_FREEFALL, MARIO_ANIM_SLIDE_DIVE);\n    return cancel;\n}\n\ns32 act_hold_stomach_slide(struct MarioState *m) {\n    s32 cancel;\n\n    if (m->marioObj->oInteractStatus & INT_STATUS_MARIO_DROP_OBJECT) {\n        return drop_and_set_mario_action(m, ACT_STOMACH_SLIDE, 0);\n    }\n\n    cancel = stomach_slide_action(m, ACT_DIVE_PICKING_UP, ACT_HOLD_FREEFALL, MARIO_ANIM_SLIDE_DIVE);\n    return cancel;\n}\n\ns32 act_dive_slide(struct MarioState *m) {\n    if (!(m->input & INPUT_ABOVE_SLIDE) && (m->input & (INPUT_A_PRESSED | INPUT_B_PRESSED))) {\n#if ENABLE_RUMBLE\n        queue_rumble_data(5, 80);\n#endif\n        return set_mario_action(m, m->forwardVel > 0.0f ? ACT_FORWARD_ROLLOUT : ACT_BACKWARD_ROLLOUT,\n                                0);\n    }\n\n    play_mario_landing_sound_once(m, SOUND_ACTION_TERRAIN_BODY_HIT_GROUND);\n\n    //! If the dive slide ends on the same frame that we pick up on object,\n    // Mario will not be in the dive slide action for the call to\n    // mario_check_object_grab, and so will end up in the regular picking action,\n    // rather than the picking up after dive action.\n\n    if (update_sliding(m, 8.0f) && is_anim_at_end(m)) {\n        mario_set_forward_vel(m, 0.0f);\n        set_mario_action(m, ACT_STOMACH_SLIDE_STOP, 0);\n    }\n\n    if (mario_check_object_grab(m)) {\n        mario_grab_used_object(m);\n        m->marioBodyState->grabPos = GRAB_POS_LIGHT_OBJ;\n        return TRUE;\n    }\n\n    common_slide_action(m, ACT_STOMACH_SLIDE_STOP, ACT_FREEFALL, MARIO_ANIM_DIVE);\n    return FALSE;\n}\n\ns32 common_ground_knockback_action(struct MarioState *m, s32 animation, s32 arg2, s32 arg3, s32 arg4) {\n    s32 animFrame;\n\n    if (arg3) {\n        play_mario_heavy_landing_sound_once(m, SOUND_ACTION_TERRAIN_BODY_HIT_GROUND);\n    }\n\n    if (arg4 > 0) {\n        play_sound_if_no_flag(m, SOUND_MARIO_ATTACKED, MARIO_MARIO_SOUND_PLAYED);\n    } else {\n#ifdef VERSION_JP\n        play_sound_if_no_flag(m, SOUND_MARIO_OOOF, MARIO_MARIO_SOUND_PLAYED);\n#else\n        play_sound_if_no_flag(m, SOUND_MARIO_OOOF2, MARIO_MARIO_SOUND_PLAYED);\n#endif\n    }\n\n    if (m->forwardVel > 32.0f) {\n        m->forwardVel = 32.0f;\n    }\n    if (m->forwardVel < -32.0f) {\n        m->forwardVel = -32.0f;\n    }\n\n    animFrame = set_mario_animation(m, animation);\n    if (animFrame < arg2) {\n        apply_landing_accel(m, 0.9f);\n    } else if (m->forwardVel >= 0.0f) {\n        mario_set_forward_vel(m, 0.1f);\n    } else {\n        mario_set_forward_vel(m, -0.1f);\n    }\n\n    if (perform_ground_step(m) == GROUND_STEP_LEFT_GROUND) {\n        if (m->forwardVel >= 0.0f) {\n            set_mario_action(m, ACT_FORWARD_AIR_KB, arg4);\n        } else {\n            set_mario_action(m, ACT_BACKWARD_AIR_KB, arg4);\n        }\n    } else if (is_anim_at_end(m)) {\n        if (m->health < 0x100) {\n            set_mario_action(m, ACT_STANDING_DEATH, 0);\n        } else {\n            if (arg4 > 0) {\n                m->invincTimer = 30;\n            }\n            set_mario_action(m, ACT_IDLE, 0);\n        }\n    }\n\n    return animFrame;\n}\n\ns32 act_hard_backward_ground_kb(struct MarioState *m) {\n    s32 animFrame =\n        common_ground_knockback_action(m, MARIO_ANIM_FALL_OVER_BACKWARDS, 43, TRUE, m->actionArg);\n    if (animFrame == 43 && m->health < 0x100) {\n        set_mario_action(m, ACT_DEATH_ON_BACK, 0);\n    }\n\n#ifndef VERSION_JP\n    if (animFrame == 54 && m->prevAction == ACT_SPECIAL_DEATH_EXIT) {\n        play_sound(SOUND_MARIO_MAMA_MIA, m->marioObj->header.gfx.cameraToObject);\n    }\n#endif\n\n    if (animFrame == 69) {\n        play_mario_landing_sound_once(m, SOUND_ACTION_TERRAIN_LANDING);\n    }\n\n    return FALSE;\n}\n\ns32 act_hard_forward_ground_kb(struct MarioState *m) {\n    s32 animFrame =\n        common_ground_knockback_action(m, MARIO_ANIM_LAND_ON_STOMACH, 21, TRUE, m->actionArg);\n    if (animFrame == 23 && m->health < 0x100) {\n        set_mario_action(m, ACT_DEATH_ON_STOMACH, 0);\n    }\n\n    return FALSE;\n}\n\ns32 act_backward_ground_kb(struct MarioState *m) {\n    common_ground_knockback_action(m, MARIO_ANIM_BACKWARD_KB, 22, TRUE, m->actionArg);\n    return FALSE;\n}\n\ns32 act_forward_ground_kb(struct MarioState *m) {\n    common_ground_knockback_action(m, MARIO_ANIM_FORWARD_KB, 20, TRUE, m->actionArg);\n    return FALSE;\n}\n\ns32 act_soft_backward_ground_kb(struct MarioState *m) {\n    common_ground_knockback_action(m, MARIO_ANIM_SOFT_BACK_KB, 100, FALSE, m->actionArg);\n    return FALSE;\n}\n\ns32 act_soft_forward_ground_kb(struct MarioState *m) {\n    common_ground_knockback_action(m, MARIO_ANIM_SOFT_FRONT_KB, 100, FALSE, m->actionArg);\n    return FALSE;\n}\n\ns32 act_ground_bonk(struct MarioState *m) {\n    s32 animFrame =\n        common_ground_knockback_action(m, MARIO_ANIM_GROUND_BONK, 32, TRUE, m->actionArg);\n    if (animFrame == 32) {\n        play_mario_landing_sound(m, SOUND_ACTION_TERRAIN_LANDING);\n    }\n    return FALSE;\n}\n\ns32 act_death_exit_land(struct MarioState *m) {\n    s32 animFrame;\n\n    apply_landing_accel(m, 0.9f);\n    play_mario_heavy_landing_sound_once(m, SOUND_ACTION_TERRAIN_BODY_HIT_GROUND);\n\n    animFrame = set_mario_animation(m, MARIO_ANIM_FALL_OVER_BACKWARDS);\n\n    if (animFrame == 54) {\n        play_sound(SOUND_MARIO_MAMA_MIA, m->marioObj->header.gfx.cameraToObject);\n    }\n    if (animFrame == 68) {\n        play_mario_landing_sound(m, SOUND_ACTION_TERRAIN_LANDING);\n    }\n\n    if (is_anim_at_end(m)) {\n        set_mario_action(m, ACT_IDLE, 0);\n    }\n\n    return FALSE;\n}\n\nu32 common_landing_action(struct MarioState *m, s16 animation, u32 airAction) {\n    u32 stepResult;\n\n    if (m->input & INPUT_NONZERO_ANALOG) {\n        apply_landing_accel(m, 0.98f);\n    } else if (m->forwardVel >= 16.0f) {\n        apply_slope_decel(m, 2.0f);\n    } else {\n        m->vel[1] = 0.0f;\n    }\n\n    stepResult = perform_ground_step(m);\n    switch (stepResult) {\n        case GROUND_STEP_LEFT_GROUND:\n            set_mario_action(m, airAction, 0);\n            break;\n\n        case GROUND_STEP_HIT_WALL:\n            set_mario_animation(m, MARIO_ANIM_PUSHING);\n            break;\n    }\n\n    if (m->forwardVel > 16.0f) {\n        m->particleFlags |= PARTICLE_DUST;\n    }\n\n    set_mario_animation(m, animation);\n    play_mario_landing_sound_once(m, SOUND_ACTION_TERRAIN_LANDING);\n\n    if (m->floor->type >= SURFACE_SHALLOW_QUICKSAND && m->floor->type <= SURFACE_MOVING_QUICKSAND) {\n        m->quicksandDepth += (4 - m->actionTimer) * 3.5f - 0.5f;\n    }\n\n    return stepResult;\n}\n\ns32 common_landing_cancels(struct MarioState *m, struct LandingAction *landingAction,\n                           s32 (*setAPressAction)(struct MarioState *, u32, u32)) {\n    //! Everything here, including floor steepness, is checked before checking\n    // if Mario is actually on the floor. This leads to e.g. remote sliding.\n\n    if (m->floor->normal.y < 0.2923717f) {\n        return mario_push_off_steep_floor(m, landingAction->verySteepAction, 0);\n    }\n\n    m->doubleJumpTimer = landingAction->unk02;\n\n    if (should_begin_sliding(m)) {\n        return set_mario_action(m, landingAction->slideAction, 0);\n    }\n\n    if (m->input & INPUT_FIRST_PERSON) {\n        return set_mario_action(m, landingAction->endAction, 0);\n    }\n\n    if (++m->actionTimer >= landingAction->numFrames) {\n        return set_mario_action(m, landingAction->endAction, 0);\n    }\n\n    if (m->input & INPUT_A_PRESSED) {\n        return setAPressAction(m, landingAction->aPressedAction, 0);\n    }\n\n    if (m->input & INPUT_OFF_FLOOR) {\n        return set_mario_action(m, landingAction->offFloorAction, 0);\n    }\n\n    return FALSE;\n}\n\ns32 act_jump_land(struct MarioState *m) {\n    if (common_landing_cancels(m, &sJumpLandAction, set_jumping_action)) {\n        return TRUE;\n    }\n\n    common_landing_action(m, MARIO_ANIM_LAND_FROM_SINGLE_JUMP, ACT_FREEFALL);\n    return FALSE;\n}\n\ns32 act_freefall_land(struct MarioState *m) {\n    if (common_landing_cancels(m, &sFreefallLandAction, set_jumping_action)) {\n        return TRUE;\n    }\n\n    common_landing_action(m, MARIO_ANIM_GENERAL_LAND, ACT_FREEFALL);\n    return FALSE;\n}\n\ns32 act_side_flip_land(struct MarioState *m) {\n    if (common_landing_cancels(m, &sSideFlipLandAction, set_jumping_action)) {\n        return TRUE;\n    }\n\n    if (common_landing_action(m, MARIO_ANIM_SLIDEFLIP_LAND, ACT_FREEFALL) != GROUND_STEP_HIT_WALL) {\n        m->marioObj->header.gfx.angle[1] += 0x8000;\n    }\n    return FALSE;\n}\n\ns32 act_hold_jump_land(struct MarioState *m) {\n    if (m->marioObj->oInteractStatus & INT_STATUS_MARIO_DROP_OBJECT) {\n        return drop_and_set_mario_action(m, ACT_JUMP_LAND_STOP, 0);\n    }\n\n    if (common_landing_cancels(m, &sHoldJumpLandAction, set_jumping_action)) {\n        return TRUE;\n    }\n\n    common_landing_action(m, MARIO_ANIM_JUMP_LAND_WITH_LIGHT_OBJ, ACT_HOLD_FREEFALL);\n    return FALSE;\n}\n\ns32 act_hold_freefall_land(struct MarioState *m) {\n    if (m->marioObj->oInteractStatus & INT_STATUS_MARIO_DROP_OBJECT) {\n        return drop_and_set_mario_action(m, ACT_FREEFALL_LAND_STOP, 0);\n    }\n\n    if (common_landing_cancels(m, &sHoldFreefallLandAction, set_jumping_action)) {\n        return TRUE;\n    }\n\n    common_landing_action(m, MARIO_ANIM_FALL_LAND_WITH_LIGHT_OBJ, ACT_HOLD_FREEFALL);\n    return FALSE;\n}\n\ns32 act_long_jump_land(struct MarioState *m) {\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    // BLJ (Backwards Long Jump) speed build up fix, crushing SimpleFlips's dreams since July 1997\n    if (m->forwardVel < 0.0f) {\n        m->forwardVel = 0.0f;\n    }\n#endif\n\n    if (!(m->input & INPUT_Z_DOWN)) {\n        m->input &= ~INPUT_A_PRESSED;\n    }\n\n    if (common_landing_cancels(m, &sLongJumpLandAction, set_jumping_action)) {\n        return TRUE;\n    }\n\n    if (!(m->input & INPUT_NONZERO_ANALOG)) {\n        play_sound_if_no_flag(m, SOUND_MARIO_UH2_2, MARIO_MARIO_SOUND_PLAYED);\n    }\n\n    common_landing_action(m,\n                          !m->marioObj->oMarioLongJumpIsSlow ? MARIO_ANIM_CROUCH_FROM_FAST_LONGJUMP\n                                                             : MARIO_ANIM_CROUCH_FROM_SLOW_LONGJUMP,\n                          ACT_FREEFALL);\n    return FALSE;\n}\n\ns32 act_double_jump_land(struct MarioState *m) {\n    if (common_landing_cancels(m, &sDoubleJumpLandAction, set_triple_jump_action)) {\n        return TRUE;\n    }\n    common_landing_action(m, MARIO_ANIM_LAND_FROM_DOUBLE_JUMP, ACT_FREEFALL);\n    return FALSE;\n}\n\ns32 act_triple_jump_land(struct MarioState *m) {\n    m->input &= ~INPUT_A_PRESSED;\n\n    if (common_landing_cancels(m, &sTripleJumpLandAction, set_jumping_action)) {\n        return TRUE;\n    }\n\n    if (!(m->input & INPUT_NONZERO_ANALOG)) {\n        play_sound_if_no_flag(m, SOUND_MARIO_HAHA, MARIO_MARIO_SOUND_PLAYED);\n    }\n\n    common_landing_action(m, MARIO_ANIM_TRIPLE_JUMP_LAND, ACT_FREEFALL);\n    return FALSE;\n}\n\ns32 act_backflip_land(struct MarioState *m) {\n    if (!(m->input & INPUT_Z_DOWN)) {\n        m->input &= ~INPUT_A_PRESSED;\n    }\n\n    if (common_landing_cancels(m, &sBackflipLandAction, set_jumping_action)) {\n        return TRUE;\n    }\n\n    if (!(m->input & INPUT_NONZERO_ANALOG)) {\n        play_sound_if_no_flag(m, SOUND_MARIO_HAHA, MARIO_MARIO_SOUND_PLAYED);\n    }\n\n    common_landing_action(m, MARIO_ANIM_TRIPLE_JUMP_LAND, ACT_FREEFALL);\n    return FALSE;\n}\n\ns32 quicksand_jump_land_action(struct MarioState *m, s32 animation1, s32 animation2, u32 endAction,\n                               u32 airAction) {\n    if (m->actionTimer++ < 6) {\n        m->quicksandDepth -= (7 - m->actionTimer) * 0.8f;\n        if (m->quicksandDepth < 1.0f) {\n            m->quicksandDepth = 1.1f;\n        }\n\n        play_mario_jump_sound(m);\n        set_mario_animation(m, animation1);\n    } else {\n        if (m->actionTimer >= 13) {\n            return set_mario_action(m, endAction, 0);\n        }\n\n        set_mario_animation(m, animation2);\n    }\n\n    apply_landing_accel(m, 0.95f);\n    if (perform_ground_step(m) == GROUND_STEP_LEFT_GROUND) {\n        set_mario_action(m, airAction, 0);\n    }\n\n    return FALSE;\n}\n\ns32 act_quicksand_jump_land(struct MarioState *m) {\n    s32 cancel = quicksand_jump_land_action(m, MARIO_ANIM_SINGLE_JUMP, MARIO_ANIM_LAND_FROM_SINGLE_JUMP,\n                                            ACT_JUMP_LAND_STOP, ACT_FREEFALL);\n    return cancel;\n}\n\ns32 act_hold_quicksand_jump_land(struct MarioState *m) {\n    s32 cancel = quicksand_jump_land_action(m, MARIO_ANIM_JUMP_WITH_LIGHT_OBJ,\n                                            MARIO_ANIM_JUMP_LAND_WITH_LIGHT_OBJ, ACT_HOLD_JUMP_LAND_STOP,\n                                            ACT_HOLD_FREEFALL);\n    return cancel;\n}\n\ns32 check_common_moving_cancels(struct MarioState *m) {\n    if (m->pos[1] < m->waterLevel - 100) {\n        return set_water_plunge_action(m);\n    }\n\n    if (!(m->action & ACT_FLAG_INVULNERABLE) && (m->input & INPUT_STOMPED)) {\n        return drop_and_set_mario_action(m, ACT_SHOCKWAVE_BOUNCE, 0);\n    }\n\n    if (m->input & INPUT_SQUISHED) {\n        return drop_and_set_mario_action(m, ACT_SQUISHED, 0);\n    }\n\n    if (!(m->action & ACT_FLAG_INVULNERABLE)) {\n        if (m->health < 0x100) {\n            return drop_and_set_mario_action(m, ACT_STANDING_DEATH, 0);\n        }\n    }\n\n    return FALSE;\n}\n\ns32 mario_execute_moving_action(struct MarioState *m) {\n    s32 cancel;\n\n    if (check_common_moving_cancels(m)) {\n        return TRUE;\n    }\n\n    if (mario_update_quicksand(m, 0.25f)) {\n        return TRUE;\n    }\n\n    /* clang-format off */\n    switch (m->action) {\n        case ACT_WALKING:                  cancel = act_walking(m);                  break;\n        case ACT_HOLD_WALKING:             cancel = act_hold_walking(m);             break;\n        case ACT_HOLD_HEAVY_WALKING:       cancel = act_hold_heavy_walking(m);       break;\n        case ACT_TURNING_AROUND:           cancel = act_turning_around(m);           break;\n        case ACT_FINISH_TURNING_AROUND:    cancel = act_finish_turning_around(m);    break;\n        case ACT_BRAKING:                  cancel = act_braking(m);                  break;\n        case ACT_RIDING_SHELL_GROUND:      cancel = act_riding_shell_ground(m);      break;\n        case ACT_CRAWLING:                 cancel = act_crawling(m);                 break;\n        case ACT_BURNING_GROUND:           cancel = act_burning_ground(m);           break;\n        case ACT_DECELERATING:             cancel = act_decelerating(m);             break;\n        case ACT_HOLD_DECELERATING:        cancel = act_hold_decelerating(m);        break;\n        case ACT_BUTT_SLIDE:               cancel = act_butt_slide(m);               break;\n        case ACT_STOMACH_SLIDE:            cancel = act_stomach_slide(m);            break;\n        case ACT_HOLD_BUTT_SLIDE:          cancel = act_hold_butt_slide(m);          break;\n        case ACT_HOLD_STOMACH_SLIDE:       cancel = act_hold_stomach_slide(m);       break;\n        case ACT_DIVE_SLIDE:               cancel = act_dive_slide(m);               break;\n        case ACT_MOVE_PUNCHING:            cancel = act_move_punching(m);            break;\n        case ACT_CROUCH_SLIDE:             cancel = act_crouch_slide(m);             break;\n        case ACT_SLIDE_KICK_SLIDE:         cancel = act_slide_kick_slide(m);         break;\n        case ACT_HARD_BACKWARD_GROUND_KB:  cancel = act_hard_backward_ground_kb(m);  break;\n        case ACT_HARD_FORWARD_GROUND_KB:   cancel = act_hard_forward_ground_kb(m);   break;\n        case ACT_BACKWARD_GROUND_KB:       cancel = act_backward_ground_kb(m);       break;\n        case ACT_FORWARD_GROUND_KB:        cancel = act_forward_ground_kb(m);        break;\n        case ACT_SOFT_BACKWARD_GROUND_KB:  cancel = act_soft_backward_ground_kb(m);  break;\n        case ACT_SOFT_FORWARD_GROUND_KB:   cancel = act_soft_forward_ground_kb(m);   break;\n        case ACT_GROUND_BONK:              cancel = act_ground_bonk(m);              break;\n        case ACT_DEATH_EXIT_LAND:          cancel = act_death_exit_land(m);          break;\n        case ACT_JUMP_LAND:                cancel = act_jump_land(m);                break;\n        case ACT_FREEFALL_LAND:            cancel = act_freefall_land(m);            break;\n        case ACT_DOUBLE_JUMP_LAND:         cancel = act_double_jump_land(m);         break;\n        case ACT_SIDE_FLIP_LAND:           cancel = act_side_flip_land(m);           break;\n        case ACT_HOLD_JUMP_LAND:           cancel = act_hold_jump_land(m);           break;\n        case ACT_HOLD_FREEFALL_LAND:       cancel = act_hold_freefall_land(m);       break;\n        case ACT_TRIPLE_JUMP_LAND:         cancel = act_triple_jump_land(m);         break;\n        case ACT_BACKFLIP_LAND:            cancel = act_backflip_land(m);            break;\n        case ACT_QUICKSAND_JUMP_LAND:      cancel = act_quicksand_jump_land(m);      break;\n        case ACT_HOLD_QUICKSAND_JUMP_LAND: cancel = act_hold_quicksand_jump_land(m); break;\n        case ACT_LONG_JUMP_LAND:           cancel = act_long_jump_land(m);           break;\n    }\n    /* clang-format on */\n\n    if (!cancel && (m->input & INPUT_IN_WATER)) {\n        m->particleFlags |= PARTICLE_WAVE_TRAIL;\n        m->particleFlags &= ~PARTICLE_DUST;\n    }\n\n    return cancel;\n}\n"
  },
  {
    "path": "src/game/mario_actions_moving.h",
    "content": "#ifndef MARIO_ACTIONS_MOVING\n#define MARIO_ACTIONS_MOVING\n\n#include <PR/ultratypes.h>\n\n#include \"types.h\"\n\nvoid play_step_sound(struct MarioState *m, s16 frame1, s16 frame2);\ns32 mario_execute_moving_action(struct MarioState *m);\n\n#endif // MARIO_ACTIONS_MOVING\n"
  },
  {
    "path": "src/game/mario_actions_object.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"sm64.h\"\n#include \"mario_actions_object.h\"\n#include \"types.h\"\n#include \"mario_step.h\"\n#include \"mario.h\"\n#include \"audio/external.h\"\n#include \"interaction.h\"\n#include \"engine/math_util.h\"\n#include \"rumble_init.h\"\n\n/**\n * Used by act_punching() to determine Mario's forward velocity during each\n * animation frame.\n */\ns8 sPunchingForwardVelocities[8] = { 0, 1, 1, 2, 3, 5, 7, 10 };\n\nvoid animated_stationary_ground_step(struct MarioState *m, s32 animation, u32 endAction) {\n    stationary_ground_step(m);\n    set_mario_animation(m, animation);\n    if (is_anim_at_end(m)) {\n        set_mario_action(m, endAction, 0);\n    }\n}\n\ns32 mario_update_punch_sequence(struct MarioState *m) {\n    u32 endAction, crouchEndAction;\n    s32 animFrame;\n\n    if (m->action & ACT_FLAG_MOVING) {\n        endAction = ACT_WALKING, crouchEndAction = ACT_CROUCH_SLIDE;\n    } else {\n        endAction = ACT_IDLE, crouchEndAction = ACT_CROUCHING;\n    }\n\n    switch (m->actionArg) {\n        case 0:\n            play_sound(SOUND_MARIO_PUNCH_YAH, m->marioObj->header.gfx.cameraToObject);\n            // fallthrough\n        case 1:\n            set_mario_animation(m, MARIO_ANIM_FIRST_PUNCH);\n            if (is_anim_past_end(m)) {\n                m->actionArg = 2;\n            } else {\n                m->actionArg = 1;\n            }\n\n            if (m->marioObj->header.gfx.animInfo.animFrame >= 2) {\n                if (mario_check_object_grab(m)) {\n                    return TRUE;\n                }\n\n                m->flags |= MARIO_PUNCHING;\n            }\n\n            if (m->actionArg == 2) {\n                m->marioBodyState->punchState = (0 << 6) | 4;\n            }\n            break;\n\n        case 2:\n            set_mario_animation(m, MARIO_ANIM_FIRST_PUNCH_FAST);\n\n            if (m->marioObj->header.gfx.animInfo.animFrame <= 0) {\n                m->flags |= MARIO_PUNCHING;\n            }\n\n            if (m->input & INPUT_B_PRESSED) {\n                m->actionArg = 3;\n            }\n\n            if (is_anim_at_end(m)) {\n                set_mario_action(m, endAction, 0);\n            }\n            break;\n\n        case 3:\n            play_sound(SOUND_MARIO_PUNCH_WAH, m->marioObj->header.gfx.cameraToObject);\n            // fallthrough\n        case 4:\n            set_mario_animation(m, MARIO_ANIM_SECOND_PUNCH);\n            if (is_anim_past_end(m)) {\n                m->actionArg = 5;\n            } else {\n                m->actionArg = 4;\n            }\n\n            if (m->marioObj->header.gfx.animInfo.animFrame > 0) {\n                m->flags |= MARIO_PUNCHING;\n            }\n\n            if (m->actionArg == 5) {\n                m->marioBodyState->punchState = (1 << 6) | 4;\n            }\n            break;\n\n        case 5:\n            set_mario_animation(m, MARIO_ANIM_SECOND_PUNCH_FAST);\n            if (m->marioObj->header.gfx.animInfo.animFrame <= 0) {\n                m->flags |= MARIO_PUNCHING;\n            }\n\n            if (m->input & INPUT_B_PRESSED) {\n                m->actionArg = 6;\n            }\n\n            if (is_anim_at_end(m)) {\n                set_mario_action(m, endAction, 0);\n            }\n            break;\n\n        case 6:\n            play_mario_action_sound(m, SOUND_MARIO_PUNCH_HOO, 1);\n            animFrame = set_mario_animation(m, MARIO_ANIM_GROUND_KICK);\n            if (animFrame == 0) {\n                m->marioBodyState->punchState = (2 << 6) | 6;\n            }\n\n            if (animFrame >= 0 && animFrame < 8) {\n                m->flags |= MARIO_KICKING;\n            }\n\n            if (is_anim_at_end(m)) {\n                set_mario_action(m, endAction, 0);\n            }\n            break;\n\n        case 9:\n            play_mario_action_sound(m, SOUND_MARIO_PUNCH_HOO, 1);\n            set_mario_animation(m, MARIO_ANIM_BREAKDANCE);\n            animFrame = m->marioObj->header.gfx.animInfo.animFrame;\n\n            if (animFrame >= 2 && animFrame < 8) {\n                m->flags |= MARIO_TRIPPING;\n            }\n\n            if (is_anim_at_end(m)) {\n                set_mario_action(m, crouchEndAction, 0);\n            }\n            break;\n    }\n\n    return FALSE;\n}\n\ns32 act_punching(struct MarioState *m) {\n    if (m->input & INPUT_STOMPED) {\n        return drop_and_set_mario_action(m, ACT_SHOCKWAVE_BOUNCE, 0);\n    }\n\n    if (m->input & (INPUT_NONZERO_ANALOG | INPUT_A_PRESSED | INPUT_OFF_FLOOR | INPUT_ABOVE_SLIDE)) {\n        return check_common_action_exits(m);\n    }\n\n    if (m->actionState == 0 && (m->input & INPUT_A_DOWN)) {\n        return set_mario_action(m, ACT_JUMP_KICK, 0);\n    }\n\n    m->actionState = 1;\n    if (m->actionArg == 0) {\n        m->actionTimer = 7;\n    }\n\n    mario_set_forward_vel(m, sPunchingForwardVelocities[m->actionTimer]);\n    if (m->actionTimer > 0) {\n        m->actionTimer--;\n    }\n\n    mario_update_punch_sequence(m);\n    perform_ground_step(m);\n    return FALSE;\n}\n\ns32 act_picking_up(struct MarioState *m) {\n    if (m->input & INPUT_STOMPED) {\n        return drop_and_set_mario_action(m, ACT_SHOCKWAVE_BOUNCE, 0);\n    }\n\n    if (m->input & INPUT_OFF_FLOOR) {\n        return drop_and_set_mario_action(m, ACT_FREEFALL, 0);\n    }\n\n    if (m->actionState == 0 && is_anim_at_end(m)) {\n        //! While the animation is playing, it is possible for the used object\n        // to unload. This allows you to pick up a vacant or newly loaded object\n        // slot (cloning via fake object).\n        mario_grab_used_object(m);\n        play_sound_if_no_flag(m, SOUND_MARIO_HRMM, MARIO_MARIO_SOUND_PLAYED);\n        m->actionState = 1;\n    }\n\n    if (m->actionState == 1) {\n        if (m->heldObj->oInteractionSubtype & INT_SUBTYPE_GRABS_MARIO) {\n            m->marioBodyState->grabPos = GRAB_POS_HEAVY_OBJ;\n            set_mario_animation(m, MARIO_ANIM_GRAB_HEAVY_OBJECT);\n            if (is_anim_at_end(m)) {\n                set_mario_action(m, ACT_HOLD_HEAVY_IDLE, 0);\n            }\n        } else {\n            m->marioBodyState->grabPos = GRAB_POS_LIGHT_OBJ;\n            set_mario_animation(m, MARIO_ANIM_PICK_UP_LIGHT_OBJ);\n            if (is_anim_at_end(m)) {\n                set_mario_action(m, ACT_HOLD_IDLE, 0);\n            }\n        }\n    }\n\n    stationary_ground_step(m);\n    return FALSE;\n}\n\ns32 act_dive_picking_up(struct MarioState *m) {\n    if (m->input & INPUT_STOMPED) {\n        return drop_and_set_mario_action(m, ACT_SHOCKWAVE_BOUNCE, 0);\n    }\n\n    //! Hands-free holding. Landing on a slope or being pushed off a ledge while\n    // landing from a dive grab sets Mario's action to a non-holding action\n    // without dropping the object, causing the hands-free holding glitch.\n    if (m->input & INPUT_OFF_FLOOR) {\n        return set_mario_action(m, ACT_FREEFALL, 0);\n    }\n\n    if (m->input & INPUT_ABOVE_SLIDE) {\n        return set_mario_action(m, ACT_BEGIN_SLIDING, 0);\n    }\n\n    animated_stationary_ground_step(m, MARIO_ANIM_STOP_SLIDE_LIGHT_OBJ, ACT_HOLD_IDLE);\n    return FALSE;\n}\n\ns32 act_placing_down(struct MarioState *m) {\n    if (m->input & INPUT_STOMPED) {\n        return drop_and_set_mario_action(m, ACT_SHOCKWAVE_BOUNCE, 0);\n    }\n\n    if (m->input & INPUT_OFF_FLOOR) {\n        return drop_and_set_mario_action(m, ACT_FREEFALL, 0);\n    }\n\n    if (++m->actionTimer == 8) {\n        mario_drop_held_object(m);\n    }\n\n    animated_stationary_ground_step(m, MARIO_ANIM_PLACE_LIGHT_OBJ, ACT_IDLE);\n    return FALSE;\n}\n\ns32 act_throwing(struct MarioState *m) {\n    if (m->heldObj && (m->heldObj->oInteractionSubtype & INT_SUBTYPE_HOLDABLE_NPC)) {\n        return set_mario_action(m, ACT_PLACING_DOWN, 0);\n    }\n\n    if (m->input & INPUT_STOMPED) {\n        return drop_and_set_mario_action(m, ACT_SHOCKWAVE_BOUNCE, 0);\n    }\n\n    if (m->input & INPUT_OFF_FLOOR) {\n        return drop_and_set_mario_action(m, ACT_FREEFALL, 0);\n    }\n\n    if (++m->actionTimer == 7) {\n        mario_throw_held_object(m);\n        play_sound_if_no_flag(m, SOUND_MARIO_WAH2, MARIO_MARIO_SOUND_PLAYED);\n        play_sound_if_no_flag(m, SOUND_ACTION_THROW, MARIO_ACTION_SOUND_PLAYED);\n#if ENABLE_RUMBLE\n        queue_rumble_data(3, 50);\n#endif\n    }\n\n    animated_stationary_ground_step(m, MARIO_ANIM_GROUND_THROW, ACT_IDLE);\n    return FALSE;\n}\n\ns32 act_heavy_throw(struct MarioState *m) {\n    if (m->input & INPUT_STOMPED) {\n        return drop_and_set_mario_action(m, ACT_SHOCKWAVE_BOUNCE, 0);\n    }\n\n    if (m->input & INPUT_OFF_FLOOR) {\n        return drop_and_set_mario_action(m, ACT_FREEFALL, 0);\n    }\n\n    if (++m->actionTimer == 13) {\n        mario_drop_held_object(m);\n        play_sound_if_no_flag(m, SOUND_MARIO_WAH2, MARIO_MARIO_SOUND_PLAYED);\n        play_sound_if_no_flag(m, SOUND_ACTION_THROW, MARIO_ACTION_SOUND_PLAYED);\n#if ENABLE_RUMBLE\n        queue_rumble_data(3, 50);\n#endif\n    }\n\n    animated_stationary_ground_step(m, MARIO_ANIM_HEAVY_THROW, ACT_IDLE);\n    return FALSE;\n}\n\ns32 act_stomach_slide_stop(struct MarioState *m) {\n    if (m->input & INPUT_STOMPED) {\n        return set_mario_action(m, ACT_SHOCKWAVE_BOUNCE, 0);\n    }\n\n    if (m->input & INPUT_OFF_FLOOR) {\n        return set_mario_action(m, ACT_FREEFALL, 0);\n    }\n\n    if (m->input & INPUT_ABOVE_SLIDE) {\n        return set_mario_action(m, ACT_BEGIN_SLIDING, 0);\n    }\n\n    animated_stationary_ground_step(m, MARIO_ANIM_SLOW_LAND_FROM_DIVE, ACT_IDLE);\n    return FALSE;\n}\n\ns32 act_picking_up_bowser(struct MarioState *m) {\n    if (m->actionState == 0) {\n        m->actionState = 1;\n        m->angleVel[1] = 0;\n        m->marioBodyState->grabPos = GRAB_POS_BOWSER;\n        mario_grab_used_object(m);\n#if ENABLE_RUMBLE\n        queue_rumble_data(5, 80);\n#endif\n        play_sound(SOUND_MARIO_HRMM, m->marioObj->header.gfx.cameraToObject);\n    }\n\n    set_mario_animation(m, MARIO_ANIM_GRAB_BOWSER);\n    if (is_anim_at_end(m)) {\n        set_mario_action(m, ACT_HOLDING_BOWSER, 0);\n    }\n\n    stationary_ground_step(m);\n    return FALSE;\n}\n\ns32 act_holding_bowser(struct MarioState *m) {\n    s16 spin;\n\n    if (m->input & INPUT_B_PRESSED) {\n#ifndef VERSION_JP\n        if (m->angleVel[1] <= -0xE00 || m->angleVel[1] >= 0xE00) {\n            play_sound(SOUND_MARIO_SO_LONGA_BOWSER, m->marioObj->header.gfx.cameraToObject);\n        } else {\n            play_sound(SOUND_MARIO_HERE_WE_GO, m->marioObj->header.gfx.cameraToObject);\n        }\n#else\n        play_sound(SOUND_MARIO_HERE_WE_GO, m->marioObj->header.gfx.cameraToObject);\n#endif\n        return set_mario_action(m, ACT_RELEASING_BOWSER, 0);\n    }\n\n    if (m->angleVel[1] == 0) {\n        if (m->actionTimer++ > 120) {\n            return set_mario_action(m, ACT_RELEASING_BOWSER, 1);\n        }\n\n        set_mario_animation(m, MARIO_ANIM_HOLDING_BOWSER);\n    } else {\n        m->actionTimer = 0;\n        set_mario_animation(m, MARIO_ANIM_SWINGING_BOWSER);\n    }\n\n    if (m->intendedMag > 20.0f) {\n        if (m->actionArg == 0) {\n            m->actionArg = 1;\n            m->twirlYaw = m->intendedYaw;\n        } else {\n            // spin = acceleration\n            spin = (s16)(m->intendedYaw - m->twirlYaw) / 0x80;\n\n            if (spin < -0x80) {\n                spin = -0x80;\n            }\n            if (spin > 0x80) {\n                spin = 0x80;\n            }\n\n            m->twirlYaw = m->intendedYaw;\n            m->angleVel[1] += spin;\n\n            if (m->angleVel[1] > 0x1000) {\n                m->angleVel[1] = 0x1000;\n            }\n            if (m->angleVel[1] < -0x1000) {\n                m->angleVel[1] = -0x1000;\n            }\n        }\n    } else {\n        m->actionArg = 0;\n        m->angleVel[1] = approach_s32(m->angleVel[1], 0, 64, 64);\n    }\n\n    // spin = starting yaw\n    spin = m->faceAngle[1];\n    m->faceAngle[1] += m->angleVel[1];\n\n    // play sound on overflow\n    if (m->angleVel[1] <= -0x100 && spin < m->faceAngle[1]) {\n#if ENABLE_RUMBLE\n        queue_rumble_data(4, 20);\n#endif\n        play_sound(SOUND_OBJ_BOWSER_SPINNING, m->marioObj->header.gfx.cameraToObject);\n    }\n    if (m->angleVel[1] >= 0x100 && spin > m->faceAngle[1]) {\n#if ENABLE_RUMBLE\n        queue_rumble_data(4, 20);\n#endif\n        play_sound(SOUND_OBJ_BOWSER_SPINNING, m->marioObj->header.gfx.cameraToObject);\n    }\n\n    stationary_ground_step(m);\n    if (m->angleVel[1] >= 0) {\n        m->marioObj->header.gfx.angle[0] = -m->angleVel[1];\n    } else {\n        m->marioObj->header.gfx.angle[0] = m->angleVel[1];\n    }\n\n    return FALSE;\n}\n\ns32 act_releasing_bowser(struct MarioState *m) {\n    if (++m->actionTimer == 1) {\n        if (m->actionArg == 0) {\n#if ENABLE_RUMBLE\n            queue_rumble_data(5, 50);\n#endif\n            mario_throw_held_object(m);\n        } else {\n#if ENABLE_RUMBLE\n            queue_rumble_data(4, 50);\n#endif\n            mario_drop_held_object(m);\n        }\n    }\n\n    m->angleVel[1] = 0;\n    animated_stationary_ground_step(m, MARIO_ANIM_RELEASE_BOWSER, ACT_IDLE);\n    return FALSE;\n}\n\ns32 check_common_object_cancels(struct MarioState *m) {\n    f32 waterSurface = m->waterLevel - 100;\n    if (m->pos[1] < waterSurface) {\n        return set_water_plunge_action(m);\n    }\n\n    if (m->input & INPUT_SQUISHED) {\n        return drop_and_set_mario_action(m, ACT_SQUISHED, 0);\n    }\n\n    if (m->health < 0x100) {\n        return drop_and_set_mario_action(m, ACT_STANDING_DEATH, 0);\n    }\n\n    return FALSE;\n}\n\ns32 mario_execute_object_action(struct MarioState *m) {\n    s32 cancel;\n\n    if (check_common_object_cancels(m)) {\n        return TRUE;\n    }\n\n    if (mario_update_quicksand(m, 0.5f)) {\n        return TRUE;\n    }\n\n    /* clang-format off */\n    switch (m->action) {\n        case ACT_PUNCHING:           cancel = act_punching(m);           break;\n        case ACT_PICKING_UP:         cancel = act_picking_up(m);         break;\n        case ACT_DIVE_PICKING_UP:    cancel = act_dive_picking_up(m);    break;\n        case ACT_STOMACH_SLIDE_STOP: cancel = act_stomach_slide_stop(m); break;\n        case ACT_PLACING_DOWN:       cancel = act_placing_down(m);       break;\n        case ACT_THROWING:           cancel = act_throwing(m);           break;\n        case ACT_HEAVY_THROW:        cancel = act_heavy_throw(m);        break;\n        case ACT_PICKING_UP_BOWSER:  cancel = act_picking_up_bowser(m);  break;\n        case ACT_HOLDING_BOWSER:     cancel = act_holding_bowser(m);     break;\n        case ACT_RELEASING_BOWSER:   cancel = act_releasing_bowser(m);   break;\n    }\n    /* clang-format on */\n\n    if (!cancel && (m->input & INPUT_IN_WATER)) {\n        m->particleFlags |= PARTICLE_IDLE_WATER_WAVE;\n    }\n\n    return cancel;\n}\n"
  },
  {
    "path": "src/game/mario_actions_object.h",
    "content": "#ifndef MARIO_ACTIONS_OBJECT_H\n#define MARIO_ACTIONS_OBJECT_H\n\n#include <PR/ultratypes.h>\n\n#include \"types.h\"\n\ns32 mario_update_punch_sequence(struct MarioState *m);\ns32 mario_execute_object_action(struct MarioState *m);\n\n#endif // MARIO_ACTIONS_OBJECT_H\n"
  },
  {
    "path": "src/game/mario_actions_stationary.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"sm64.h\"\n#include \"area.h\"\n#include \"audio/external.h\"\n#include \"behavior_data.h\"\n#include \"camera.h\"\n#include \"engine/math_util.h\"\n#include \"interaction.h\"\n#include \"level_update.h\"\n#include \"mario.h\"\n#include \"mario_actions_stationary.h\"\n#include \"mario_step.h\"\n#include \"memory.h\"\n#include \"save_file.h\"\n#include \"sound_init.h\"\n#include \"surface_terrains.h\"\n#include \"rumble_init.h\"\n\ns32 check_common_idle_cancels(struct MarioState *m) {\n    mario_drop_held_object(m);\n    if (m->floor->normal.y < 0.29237169f) {\n        return mario_push_off_steep_floor(m, ACT_FREEFALL, 0);\n    }\n\n    if (m->input & INPUT_STOMPED) {\n        return set_mario_action(m, ACT_SHOCKWAVE_BOUNCE, 0);\n    }\n\n    if (m->input & INPUT_A_PRESSED) {\n        return set_jumping_action(m, ACT_JUMP, 0);\n    }\n\n    if (m->input & INPUT_OFF_FLOOR) {\n        return set_mario_action(m, ACT_FREEFALL, 0);\n    }\n\n    if (m->input & INPUT_ABOVE_SLIDE) {\n        return set_mario_action(m, ACT_BEGIN_SLIDING, 0);\n    }\n\n    if (m->input & INPUT_FIRST_PERSON) {\n        return set_mario_action(m, ACT_FIRST_PERSON, 0);\n    }\n\n    if (m->input & INPUT_NONZERO_ANALOG) {\n        m->faceAngle[1] = (s16) m->intendedYaw;\n        return set_mario_action(m, ACT_WALKING, 0);\n    }\n\n    if (m->input & INPUT_B_PRESSED) {\n        return set_mario_action(m, ACT_PUNCHING, 0);\n    }\n\n    if (m->input & INPUT_Z_DOWN) {\n        return set_mario_action(m, ACT_START_CROUCHING, 0);\n    }\n\n    return FALSE;\n}\n\ns32 check_common_hold_idle_cancels(struct MarioState *m) {\n    if (m->floor->normal.y < 0.29237169f) {\n        return mario_push_off_steep_floor(m, ACT_HOLD_FREEFALL, 0);\n    }\n\n    if (m->heldObj->oInteractionSubtype & INT_SUBTYPE_DROP_IMMEDIATELY) {\n        m->heldObj->oInteractionSubtype =\n            (s32)(m->heldObj->oInteractionSubtype & ~INT_SUBTYPE_DROP_IMMEDIATELY);\n        return set_mario_action(m, ACT_PLACING_DOWN, 0);\n    }\n\n    if (m->input & INPUT_STOMPED) {\n        return drop_and_set_mario_action(m, ACT_SHOCKWAVE_BOUNCE, 0);\n    }\n\n    if (m->input & INPUT_A_PRESSED) {\n        return set_jumping_action(m, ACT_HOLD_JUMP, 0);\n    }\n\n    if (m->input & INPUT_OFF_FLOOR) {\n        return set_mario_action(m, ACT_HOLD_FREEFALL, 0);\n    }\n\n    if (m->input & INPUT_ABOVE_SLIDE) {\n        return set_mario_action(m, ACT_HOLD_BEGIN_SLIDING, 0);\n    }\n\n    if (m->input & INPUT_NONZERO_ANALOG) {\n        m->faceAngle[1] = (s16) m->intendedYaw;\n        return set_mario_action(m, ACT_HOLD_WALKING, 0);\n    }\n\n    if (m->input & INPUT_B_PRESSED) {\n        return set_mario_action(m, ACT_THROWING, 0);\n    }\n\n    if (m->input & INPUT_Z_DOWN) {\n        return drop_and_set_mario_action(m, ACT_START_CROUCHING, 0);\n    }\n\n    return FALSE;\n}\n\ns32 act_idle(struct MarioState *m) {\n    if (m->quicksandDepth > 30.0f) {\n        return set_mario_action(m, ACT_IN_QUICKSAND, 0);\n    }\n\n    if (m->input & INPUT_IN_POISON_GAS) {\n        return set_mario_action(m, ACT_COUGHING, 0);\n    }\n\n    if (!(m->actionArg & 1) && m->health < 0x300) {\n        return set_mario_action(m, ACT_PANTING, 0);\n    }\n\n    if (check_common_idle_cancels(m)) {\n        return TRUE;\n    }\n\n    if (m->actionState == 3) {\n        if ((m->area->terrainType & TERRAIN_MASK) == TERRAIN_SNOW) {\n            return set_mario_action(m, ACT_SHIVERING, 0);\n        } else {\n            return set_mario_action(m, ACT_START_SLEEPING, 0);\n        }\n    }\n\n    if (m->actionArg & 1) {\n        set_mario_animation(m, MARIO_ANIM_STAND_AGAINST_WALL);\n    } else {\n        switch (m->actionState) {\n            case 0:\n                set_mario_animation(m, MARIO_ANIM_IDLE_HEAD_LEFT);\n                break;\n\n            case 1:\n                set_mario_animation(m, MARIO_ANIM_IDLE_HEAD_RIGHT);\n                break;\n\n            case 2:\n                set_mario_animation(m, MARIO_ANIM_IDLE_HEAD_CENTER);\n                break;\n        }\n\n        if (is_anim_at_end(m)) {\n            // Fall asleep after 10 head turning cycles.\n            // act_start_sleeping is triggered earlier in the function\n            // when actionState == 3. This happens when Mario's done\n            // turning his head back and forth. However, we do some checks\n            // here to make sure that Mario would be able to sleep here,\n            // and that he's gone through 10 cycles before sleeping.\n            // actionTimer is used to track how many cycles have passed.\n            if (++m->actionState == 3) {\n                f32 deltaYOfFloorBehindMario = m->pos[1] - find_floor_height_relative_polar(m, -0x8000, 60.0f);\n                if (deltaYOfFloorBehindMario < -24.0f || 24.0f < deltaYOfFloorBehindMario || m->floor->flags & SURFACE_FLAG_DYNAMIC) {\n                    m->actionState = 0;\n                } else {\n                    // If Mario hasn't turned his head 10 times yet, stay idle instead of going to sleep.\n                    m->actionTimer++;\n                    if (m->actionTimer < 10) {\n                        m->actionState = 0;\n                    }\n                }\n            }\n        }\n    }\n\n    stationary_ground_step(m);\n\n    return FALSE;\n}\n\nvoid play_anim_sound(struct MarioState *m, u32 actionState, s32 animFrame, u32 sound) {\n    if (m->actionState == actionState && m->marioObj->header.gfx.animInfo.animFrame == animFrame) {\n        play_sound(sound, m->marioObj->header.gfx.cameraToObject);\n    }\n}\n\ns32 act_start_sleeping(struct MarioState *m) {\n#ifndef VERSION_JP\n    s32 animFrame;\n#endif\n\n    if (check_common_idle_cancels(m)) {\n        return TRUE;\n    }\n\n    if (m->quicksandDepth > 30.0f) {\n        return set_mario_action(m, ACT_IN_QUICKSAND, 0);\n    }\n\n    if (m->actionState == 4) {\n        return set_mario_action(m, ACT_SLEEPING, 0);\n    }\n\n    switch (m->actionState) {\n        case 0:\n#ifndef VERSION_JP\n            animFrame =\n#endif\n            set_mario_animation(m, MARIO_ANIM_START_SLEEP_IDLE);\n            break;\n\n        case 1:\n#ifndef VERSION_JP\n            animFrame =\n#endif\n            set_mario_animation(m, MARIO_ANIM_START_SLEEP_SCRATCH);\n            break;\n\n        case 2:\n#ifndef VERSION_JP\n            animFrame =\n#endif\n            set_mario_animation(m, MARIO_ANIM_START_SLEEP_YAWN);\n            m->marioBodyState->eyeState = MARIO_EYES_HALF_CLOSED;\n            break;\n\n        case 3:\n#ifndef VERSION_JP\n            animFrame =\n#endif\n            set_mario_animation(m, MARIO_ANIM_START_SLEEP_SITTING);\n            m->marioBodyState->eyeState = MARIO_EYES_HALF_CLOSED;\n            break;\n    }\n\n    play_anim_sound(m, 1, 41, SOUND_ACTION_PAT_BACK);\n    play_anim_sound(m, 1, 49, SOUND_ACTION_PAT_BACK);\n    play_anim_sound(m, 3, 15, m->terrainSoundAddend + SOUND_ACTION_TERRAIN_BODY_HIT_GROUND);\n\n    if (is_anim_at_end(m)) {\n        m->actionState++;\n    }\n\n#ifndef VERSION_JP\n    if (m->actionState == 2 && animFrame == -1) {\n        play_sound(SOUND_MARIO_YAWNING, m->marioObj->header.gfx.cameraToObject);\n    }\n\n    if (m->actionState == 1 && animFrame == -1) {\n        play_sound(SOUND_MARIO_IMA_TIRED, m->marioObj->header.gfx.cameraToObject);\n    }\n#else\n    if (m->actionState == 2) {\n        play_sound_if_no_flag(m, SOUND_MARIO_YAWNING, MARIO_MARIO_SOUND_PLAYED);\n    }\n#endif\n\n    stationary_ground_step(m);\n    return FALSE;\n}\n\ns32 act_sleeping(struct MarioState *m) {\n    s32 animFrame;\n    if (m->input\n        & (INPUT_NONZERO_ANALOG | INPUT_A_PRESSED | INPUT_OFF_FLOOR | INPUT_ABOVE_SLIDE\n           | INPUT_FIRST_PERSON | INPUT_STOMPED | INPUT_B_PRESSED | INPUT_Z_PRESSED)) {\n        return set_mario_action(m, ACT_WAKING_UP, m->actionState);\n    }\n\n    if (m->quicksandDepth > 30.0f) {\n        return set_mario_action(m, ACT_WAKING_UP, m->actionState);\n    }\n\n    if (m->pos[1] - find_floor_height_relative_polar(m, -0x8000, 60.0f) > 24.0f) {\n        return set_mario_action(m, ACT_WAKING_UP, m->actionState);\n    }\n\n    m->marioBodyState->eyeState = MARIO_EYES_CLOSED;\n    stationary_ground_step(m);\n    switch (m->actionState) {\n        case 0:\n            animFrame = set_mario_animation(m, MARIO_ANIM_SLEEP_IDLE);\n\n            if (animFrame == -1 && !m->actionTimer) {\n                lower_background_noise(2);\n            }\n\n            if (animFrame == 2) {\n                play_sound(SOUND_MARIO_SNORING1, m->marioObj->header.gfx.cameraToObject);\n            }\n\n            if (animFrame == 20) {\n                play_sound(SOUND_MARIO_SNORING2, m->marioObj->header.gfx.cameraToObject);\n            }\n\n            if (is_anim_at_end(m)) {\n                m->actionTimer++;\n                if (m->actionTimer > 45) {\n                    m->actionState++;\n                }\n            }\n            break;\n\n        case 1:\n            if (set_mario_animation(m, MARIO_ANIM_SLEEP_START_LYING) == 18) {\n                play_mario_heavy_landing_sound(m, SOUND_ACTION_TERRAIN_BODY_HIT_GROUND);\n            }\n\n            if (is_anim_at_end(m)) {\n                m->actionState++;\n            }\n            break;\n\n        case 2:\n            animFrame = set_mario_animation(m, MARIO_ANIM_SLEEP_LYING);\n#ifndef VERSION_JP\n            play_sound_if_no_flag(m, SOUND_MARIO_SNORING3, MARIO_ACTION_SOUND_PLAYED);\n#else\n            if (animFrame == 2) {\n                play_sound(SOUND_MARIO_SNORING2, m->marioObj->header.gfx.cameraToObject);\n            }\n\n            if (animFrame == 25) {\n                play_sound(SOUND_MARIO_SNORING1, m->marioObj->header.gfx.cameraToObject);\n            }\n#endif\n            break;\n    }\n    return FALSE;\n}\n\ns32 act_waking_up(struct MarioState *m) {\n    if (!m->actionTimer) {\n        stop_sound(SOUND_MARIO_SNORING1, m->marioObj->header.gfx.cameraToObject);\n        stop_sound(SOUND_MARIO_SNORING2, m->marioObj->header.gfx.cameraToObject);\n#ifndef VERSION_JP\n        stop_sound(SOUND_MARIO_SNORING3, m->marioObj->header.gfx.cameraToObject);\n#endif\n        raise_background_noise(2);\n    }\n\n    if (m->input & INPUT_STOMPED) {\n        return set_mario_action(m, ACT_SHOCKWAVE_BOUNCE, 0);\n    }\n\n    if (m->input & INPUT_OFF_FLOOR) {\n        return set_mario_action(m, ACT_FREEFALL, 0);\n    }\n\n    if (m->input & INPUT_ABOVE_SLIDE) {\n        return set_mario_action(m, ACT_BEGIN_SLIDING, 0);\n    }\n\n    m->actionTimer++;\n\n    if (m->actionTimer > 20) {\n        return set_mario_action(m, ACT_IDLE, 0);\n    }\n\n    stationary_ground_step(m);\n\n    set_mario_animation(m, !m->actionArg ? MARIO_ANIM_WAKE_FROM_SLEEP : MARIO_ANIM_WAKE_FROM_LYING);\n\n    return FALSE;\n}\n\ns32 act_shivering(struct MarioState *m) {\n    s32 animFrame;\n\n    if (m->input & INPUT_STOMPED) {\n        return set_mario_action(m, ACT_SHOCKWAVE_BOUNCE, 0);\n    }\n\n    if (m->input & INPUT_OFF_FLOOR) {\n        return set_mario_action(m, ACT_FREEFALL, 0);\n    }\n\n    if (m->input & INPUT_ABOVE_SLIDE) {\n        return set_mario_action(m, ACT_BEGIN_SLIDING, 0);\n    }\n\n    if (m->input\n        & (INPUT_NONZERO_ANALOG | INPUT_A_PRESSED | INPUT_OFF_FLOOR | INPUT_ABOVE_SLIDE\n           | INPUT_FIRST_PERSON | INPUT_STOMPED | INPUT_B_PRESSED | INPUT_Z_PRESSED)) {\n        m->actionState = 2;\n    }\n\n    stationary_ground_step(m);\n    switch (m->actionState) {\n        case 0:\n            animFrame = set_mario_animation(m, MARIO_ANIM_SHIVERING_WARMING_HAND);\n            if (animFrame == 49) {\n                m->particleFlags |= PARTICLE_BREATH;\n                play_sound(SOUND_MARIO_PANTING_COLD, m->marioObj->header.gfx.cameraToObject);\n            }\n            if (animFrame == 7 || animFrame == 81) {\n                play_sound(SOUND_ACTION_CLAP_HANDS_COLD, m->marioObj->header.gfx.cameraToObject);\n            }\n            if (is_anim_past_end(m)) {\n                m->actionState = 1;\n            }\n            break;\n\n        case 1:\n            animFrame = set_mario_animation(m, MARIO_ANIM_SHIVERING);\n            if (animFrame == 9 || animFrame == 25 || animFrame == 44) {\n                play_sound(SOUND_ACTION_CLAP_HANDS_COLD, m->marioObj->header.gfx.cameraToObject);\n            }\n            break;\n\n        case 2:\n            set_mario_animation(m, MARIO_ANIM_SHIVERING_RETURN_TO_IDLE);\n            if (is_anim_past_end(m)) {\n                set_mario_action(m, ACT_IDLE, 0);\n            }\n            break;\n    }\n    return FALSE;\n}\n\ns32 act_coughing(struct MarioState *m) {\n    s32 animFrame;\n\n    if (check_common_idle_cancels(m)) {\n        return TRUE;\n    }\n\n    stationary_ground_step(m);\n    animFrame = set_mario_animation(m, MARIO_ANIM_COUGHING);\n    if (animFrame == 25 || animFrame == 35) {\n        play_sound(SOUND_MARIO_COUGHING3, m->marioObj->header.gfx.cameraToObject);\n    }\n\n    if (animFrame == 50 || animFrame == 58) {\n        play_sound(SOUND_MARIO_COUGHING2, m->marioObj->header.gfx.cameraToObject);\n    }\n\n    if (animFrame == 71 || animFrame == 80) {\n        play_sound(SOUND_MARIO_COUGHING1, m->marioObj->header.gfx.cameraToObject);\n    }\n\n    return FALSE;\n}\n\ns32 act_hold_idle(struct MarioState *m) {\n    if (segmented_to_virtual(&bhvJumpingBox) == m->heldObj->behavior) {\n        return set_mario_action(m, ACT_CRAZY_BOX_BOUNCE, 0);\n    }\n\n    if (m->marioObj->oInteractStatus & INT_STATUS_MARIO_DROP_OBJECT) {\n        return drop_and_set_mario_action(m, ACT_IDLE, 0);\n    }\n\n    if (m->quicksandDepth > 30.0f) {\n        return drop_and_set_mario_action(m, ACT_IN_QUICKSAND, 0);\n    }\n\n    if (check_common_hold_idle_cancels(m)) {\n        return TRUE;\n    }\n\n    stationary_ground_step(m);\n    set_mario_animation(m, MARIO_ANIM_IDLE_WITH_LIGHT_OBJ);\n    return FALSE;\n}\n\ns32 act_hold_heavy_idle(struct MarioState *m) {\n    if (m->input & INPUT_STOMPED) {\n        return drop_and_set_mario_action(m, ACT_SHOCKWAVE_BOUNCE, 0);\n    }\n\n    if (m->input & INPUT_OFF_FLOOR) {\n        return drop_and_set_mario_action(m, ACT_FREEFALL, 0);\n    }\n\n    if (m->input & INPUT_ABOVE_SLIDE) {\n        return drop_and_set_mario_action(m, ACT_BEGIN_SLIDING, 0);\n    }\n\n    if (m->input & INPUT_NONZERO_ANALOG) {\n        return set_mario_action(m, ACT_HOLD_HEAVY_WALKING, 0);\n    }\n\n    if (m->input & INPUT_B_PRESSED) {\n        return set_mario_action(m, ACT_HEAVY_THROW, 0);\n    }\n\n    stationary_ground_step(m);\n    set_mario_animation(m, MARIO_ANIM_IDLE_HEAVY_OBJ);\n    return FALSE;\n}\n\ns32 act_standing_against_wall(struct MarioState *m) {\n    if (m->input & INPUT_STOMPED) {\n        return set_mario_action(m, ACT_SHOCKWAVE_BOUNCE, 0);\n    }\n\n    if (m->input & (INPUT_NONZERO_ANALOG | INPUT_A_PRESSED | INPUT_OFF_FLOOR | INPUT_ABOVE_SLIDE)) {\n        return check_common_action_exits(m);\n    }\n\n    if (m->input & INPUT_FIRST_PERSON) {\n        return set_mario_action(m, ACT_FIRST_PERSON, 0);\n    }\n\n    if (m->input & INPUT_B_PRESSED) {\n        return set_mario_action(m, ACT_PUNCHING, 0);\n    }\n\n    set_mario_animation(m, MARIO_ANIM_STAND_AGAINST_WALL);\n    stationary_ground_step(m);\n    return FALSE;\n}\n\ns32 act_in_quicksand(struct MarioState *m) {\n    if (m->quicksandDepth < 30.0f) {\n        return set_mario_action(m, ACT_IDLE, 0);\n    }\n\n    if (check_common_idle_cancels(m)) {\n        return TRUE;\n    }\n\n    if (m->quicksandDepth > 70.0f) {\n        set_mario_animation(m, MARIO_ANIM_DYING_IN_QUICKSAND);\n    } else {\n        set_mario_animation(m, MARIO_ANIM_IDLE_IN_QUICKSAND);\n    }\n\n    stationary_ground_step(m);\n    return FALSE;\n}\n\ns32 act_crouching(struct MarioState *m) {\n    if (m->input & INPUT_STOMPED) {\n        return set_mario_action(m, ACT_SHOCKWAVE_BOUNCE, 0);\n    }\n\n    if (m->input & INPUT_A_PRESSED) {\n        return set_jumping_action(m, ACT_BACKFLIP, 0);\n    }\n\n    if (m->input & INPUT_OFF_FLOOR) {\n        return set_mario_action(m, ACT_FREEFALL, 0);\n    }\n\n    if (m->input & INPUT_ABOVE_SLIDE) {\n        return set_mario_action(m, ACT_BEGIN_SLIDING, 0);\n    }\n\n    if (m->input & INPUT_FIRST_PERSON) {\n        return set_mario_action(m, ACT_STOP_CROUCHING, 0);\n    }\n\n    if (!(m->input & INPUT_Z_DOWN)) {\n        return set_mario_action(m, ACT_STOP_CROUCHING, 0);\n    }\n\n    if (m->input & INPUT_NONZERO_ANALOG) {\n        return set_mario_action(m, ACT_START_CRAWLING, 0);\n    }\n\n    if (m->input & INPUT_B_PRESSED) {\n        return set_mario_action(m, ACT_PUNCHING, 9);\n    }\n\n    stationary_ground_step(m);\n    set_mario_animation(m, MARIO_ANIM_CROUCHING);\n    return FALSE;\n}\n\ns32 act_panting(struct MarioState *m) {\n    if (m->input & INPUT_STOMPED) {\n        return set_mario_action(m, ACT_SHOCKWAVE_BOUNCE, 0);\n    }\n\n    if (m->health >= 0x500) {\n        return set_mario_action(m, ACT_IDLE, 0);\n    }\n\n    if (check_common_idle_cancels(m)) {\n        return TRUE;\n    }\n\n    if (set_mario_animation(m, MARIO_ANIM_WALK_PANTING) == 1) {\n        play_sound(SOUND_MARIO_PANTING + ((gAudioRandom % 3U) << 0x10),\n                   m->marioObj->header.gfx.cameraToObject);\n    }\n\n    stationary_ground_step(m);\n    m->marioBodyState->eyeState = MARIO_EYES_HALF_CLOSED;\n    return FALSE;\n}\n\ns32 act_hold_panting_unused(struct MarioState *m) {\n    if (m->marioObj->oInteractStatus & INT_STATUS_MARIO_DROP_OBJECT) {\n        return drop_and_set_mario_action(m, ACT_PANTING, 0);\n    }\n\n    if (m->input & INPUT_STOMPED) {\n        return drop_and_set_mario_action(m, ACT_SHOCKWAVE_BOUNCE, 0);\n    }\n\n    if (m->health >= 0x500) {\n        return set_mario_action(m, ACT_HOLD_IDLE, 0);\n    }\n\n    if (check_common_hold_idle_cancels(m)) {\n        return TRUE;\n    }\n\n    set_mario_animation(m, MARIO_ANIM_WALK_PANTING);\n    stationary_ground_step(m);\n    m->marioBodyState->eyeState = MARIO_EYES_HALF_CLOSED;\n    return FALSE;\n}\n\nvoid stopping_step(struct MarioState *m, s32 animID, u32 action) {\n    stationary_ground_step(m);\n    set_mario_animation(m, animID);\n    if (is_anim_at_end(m)) {\n        set_mario_action(m, action, 0);\n    }\n}\n\ns32 act_braking_stop(struct MarioState *m) {\n    if (m->input & INPUT_STOMPED) {\n        return set_mario_action(m, ACT_SHOCKWAVE_BOUNCE, 0);\n    }\n\n    if (m->input & INPUT_OFF_FLOOR) {\n        return set_mario_action(m, ACT_FREEFALL, 0);\n    }\n\n    if (m->input & INPUT_B_PRESSED) {\n        return set_mario_action(m, ACT_PUNCHING, 0);\n    }\n\n    if (!(m->input & INPUT_FIRST_PERSON)\n        && m->input & (INPUT_NONZERO_ANALOG | INPUT_A_PRESSED | INPUT_OFF_FLOOR | INPUT_ABOVE_SLIDE)) {\n        return check_common_action_exits(m);\n    }\n\n    stopping_step(m, MARIO_ANIM_STOP_SKID, ACT_IDLE);\n    return FALSE;\n}\n\ns32 act_butt_slide_stop(struct MarioState *m) {\n    if (m->input & INPUT_STOMPED) {\n        return set_mario_action(m, ACT_SHOCKWAVE_BOUNCE, 0);\n    }\n\n    if (m->input & (INPUT_NONZERO_ANALOG | INPUT_A_PRESSED | INPUT_OFF_FLOOR | INPUT_ABOVE_SLIDE)) {\n        return check_common_action_exits(m);\n    }\n\n    stopping_step(m, MARIO_ANIM_STOP_SLIDE, ACT_IDLE);\n    if (m->marioObj->header.gfx.animInfo.animFrame == 6) {\n        play_mario_landing_sound(m, SOUND_ACTION_TERRAIN_LANDING);\n    }\n\n    return FALSE;\n}\n\ns32 act_hold_butt_slide_stop(struct MarioState *m) {\n    if (m->marioObj->oInteractStatus & INT_STATUS_MARIO_DROP_OBJECT) {\n        return drop_and_set_mario_action(m, ACT_IDLE, 0);\n    }\n\n    if (m->input & INPUT_STOMPED) {\n        return drop_and_set_mario_action(m, ACT_SHOCKWAVE_BOUNCE, 0);\n    }\n\n    if (m->input & (INPUT_NONZERO_ANALOG | INPUT_A_PRESSED | INPUT_OFF_FLOOR | INPUT_ABOVE_SLIDE)) {\n        return check_common_hold_action_exits(m);\n    }\n\n    if (m->input & INPUT_B_PRESSED) {\n        return set_mario_action(m, ACT_THROWING, 0);\n    }\n\n    stopping_step(m, MARIO_ANIM_STAND_UP_FROM_SLIDING_WITH_LIGHT_OBJ, ACT_HOLD_IDLE);\n    return FALSE;\n}\n\ns32 act_slide_kick_slide_stop(struct MarioState *m) {\n    if (m->input & INPUT_STOMPED) {\n        return drop_and_set_mario_action(m, ACT_SHOCKWAVE_BOUNCE, 0);\n    }\n\n    if (m->input & INPUT_OFF_FLOOR) {\n        return drop_and_set_mario_action(m, ACT_FREEFALL, 0);\n    }\n\n    stopping_step(m, MARIO_ANIM_CROUCH_FROM_SLIDE_KICK, ACT_CROUCHING);\n    return FALSE;\n}\n\ns32 act_start_crouching(struct MarioState *m) {\n    if (m->input & INPUT_STOMPED) {\n        return set_mario_action(m, ACT_SHOCKWAVE_BOUNCE, 0);\n    }\n\n    if (m->input & INPUT_OFF_FLOOR) {\n        return set_mario_action(m, ACT_FREEFALL, 0);\n    }\n\n    if (m->input & INPUT_A_PRESSED) {\n        return set_jumping_action(m, ACT_BACKFLIP, 0);\n    }\n\n    if (m->input & INPUT_ABOVE_SLIDE) {\n        return set_mario_action(m, ACT_BEGIN_SLIDING, 0);\n    }\n\n    stationary_ground_step(m);\n    set_mario_animation(m, MARIO_ANIM_START_CROUCHING);\n    if (is_anim_past_end(m)) {\n        set_mario_action(m, ACT_CROUCHING, 0);\n    }\n    return FALSE;\n}\n\ns32 act_stop_crouching(struct MarioState *m) {\n    if (m->input & INPUT_STOMPED) {\n        return set_mario_action(m, ACT_SHOCKWAVE_BOUNCE, 0);\n    }\n\n    if (m->input & INPUT_OFF_FLOOR) {\n        return set_mario_action(m, ACT_FREEFALL, 0);\n    }\n\n    if (m->input & INPUT_A_PRESSED) {\n        return set_jumping_action(m, ACT_BACKFLIP, 0);\n    }\n\n    if (m->input & INPUT_ABOVE_SLIDE) {\n        return set_mario_action(m, ACT_BEGIN_SLIDING, 0);\n    }\n\n    stationary_ground_step(m);\n    set_mario_animation(m, MARIO_ANIM_STOP_CROUCHING);\n    if (is_anim_past_end(m)) {\n        set_mario_action(m, ACT_IDLE, 0);\n    }\n    return FALSE;\n}\n\ns32 act_start_crawling(struct MarioState *m) {\n    if (m->input & INPUT_FIRST_PERSON) {\n        return set_mario_action(m, ACT_STOP_CROUCHING, 0);\n    }\n\n    if (m->input & INPUT_OFF_FLOOR) {\n        return set_mario_action(m, ACT_FREEFALL, 0);\n    }\n\n    if (m->input & INPUT_STOMPED) {\n        return set_mario_action(m, ACT_SHOCKWAVE_BOUNCE, 0);\n    }\n\n    if (m->input & INPUT_ABOVE_SLIDE) {\n        return set_mario_action(m, ACT_BEGIN_SLIDING, 0);\n    }\n\n    stationary_ground_step(m);\n    set_mario_animation(m, MARIO_ANIM_START_CRAWLING);\n    if (is_anim_past_end(m)) {\n        set_mario_action(m, ACT_CRAWLING, 0);\n    }\n\n    return FALSE;\n}\n\ns32 act_stop_crawling(struct MarioState *m) {\n    if (m->input & INPUT_STOMPED) {\n        return set_mario_action(m, ACT_SHOCKWAVE_BOUNCE, 0);\n    }\n\n    if (m->input & INPUT_OFF_FLOOR) {\n        return set_mario_action(m, ACT_FREEFALL, 0);\n    }\n\n    if (m->input & INPUT_ABOVE_SLIDE) {\n        return set_mario_action(m, ACT_BEGIN_SLIDING, 0);\n    }\n\n    stationary_ground_step(m);\n    set_mario_animation(m, MARIO_ANIM_STOP_CRAWLING);\n    if (is_anim_past_end(m)) {\n        set_mario_action(m, ACT_CROUCHING, 0);\n    }\n    return FALSE;\n}\n\ns32 act_shockwave_bounce(struct MarioState *m) {\n    s16 sp1E;\n    f32 sp18;\n\n    if (m->marioObj->oInteractStatus & INT_STATUS_MARIO_SHOCKWAVE) {\n#if ENABLE_RUMBLE\n        queue_rumble_data(70, 40);\n#endif\n        return hurt_and_set_mario_action(m, ACT_SHOCKED, 0, 4);\n    }\n\n    if (m->actionTimer == 0) {\n#if ENABLE_RUMBLE\n        queue_rumble_data(70, 40);\n#endif\n        if (m->marioObj->oInteractStatus & INT_STATUS_MARIO_KNOCKBACK_DMG) {\n            return hurt_and_set_mario_action(m, ACT_BACKWARD_GROUND_KB, 0, 0xc);\n        }\n    }\n\n    if (++m->actionTimer == 48) {\n        return set_mario_action(m, ACT_IDLE, 0);\n    }\n\n    sp1E = (m->actionTimer % 16) << 12;\n    sp18 = (f32)(((f32)(6 - m->actionTimer / 8) * 8.0f) + 4.0f);\n    mario_set_forward_vel(m, 0);\n    vec3f_set(m->vel, 0.0f, 0.0f, 0.0f);\n    if (sins(sp1E) >= 0.0f) {\n        m->pos[1] = sins(sp1E) * sp18 + m->floorHeight;\n    } else {\n        m->pos[1] = m->floorHeight - sins(sp1E) * sp18;\n    }\n\n    vec3f_copy(m->marioObj->header.gfx.pos, m->pos);\n    vec3s_set(m->marioObj->header.gfx.angle, 0, m->faceAngle[1], 0);\n    set_mario_animation(m, MARIO_ANIM_A_POSE);\n    return FALSE;\n}\n\ns32 landing_step(struct MarioState *m, s32 arg1, u32 action) {\n    stationary_ground_step(m);\n    set_mario_animation(m, arg1);\n    if (is_anim_at_end(m)) {\n        return set_mario_action(m, action, 0);\n    }\n    return FALSE;\n}\n\ns32 check_common_landing_cancels(struct MarioState *m, u32 action) {\n    if (m->input & INPUT_STOMPED) {\n        return set_mario_action(m, ACT_SHOCKWAVE_BOUNCE, 0);\n    }\n\n    if (m->input & INPUT_FIRST_PERSON) {\n        return set_mario_action(m, ACT_IDLE, 0);\n    }\n\n    if (m->input & INPUT_A_PRESSED) {\n        if (!action) {\n            return set_jump_from_landing(m);\n        } else {\n            return set_jumping_action(m, action, 0);\n        }\n    }\n\n    if (m->input & (INPUT_NONZERO_ANALOG | INPUT_A_PRESSED | INPUT_OFF_FLOOR | INPUT_ABOVE_SLIDE)) {\n        return check_common_action_exits(m);\n    }\n\n    if (m->input & INPUT_B_PRESSED) {\n        return set_mario_action(m, ACT_PUNCHING, 0);\n    }\n\n    return FALSE;\n}\n\ns32 act_jump_land_stop(struct MarioState *m) {\n    if (check_common_landing_cancels(m, 0)) {\n        return TRUE;\n    }\n\n    landing_step(m, MARIO_ANIM_LAND_FROM_SINGLE_JUMP, ACT_IDLE);\n    return FALSE;\n}\n\ns32 act_double_jump_land_stop(struct MarioState *m) {\n    if (check_common_landing_cancels(m, 0)) {\n        return TRUE;\n    }\n\n    landing_step(m, MARIO_ANIM_LAND_FROM_DOUBLE_JUMP, ACT_IDLE);\n    return FALSE;\n}\n\ns32 act_side_flip_land_stop(struct MarioState *m) {\n    if (check_common_landing_cancels(m, 0)) {\n        return TRUE;\n    }\n\n    landing_step(m, MARIO_ANIM_SLIDEFLIP_LAND, ACT_IDLE);\n    m->marioObj->header.gfx.angle[1] += 0x8000;\n    return FALSE;\n}\n\ns32 act_freefall_land_stop(struct MarioState *m) {\n    if (check_common_landing_cancels(m, 0)) {\n        return TRUE;\n    }\n\n    landing_step(m, MARIO_ANIM_GENERAL_LAND, ACT_IDLE);\n    return FALSE;\n}\n\ns32 act_triple_jump_land_stop(struct MarioState *m) {\n    if (check_common_landing_cancels(m, ACT_JUMP)) {\n        return TRUE;\n    }\n\n    landing_step(m, MARIO_ANIM_TRIPLE_JUMP_LAND, ACT_IDLE);\n    return FALSE;\n}\n\ns32 act_backflip_land_stop(struct MarioState *m) {\n    if (!(m->input & INPUT_Z_DOWN) || m->marioObj->header.gfx.animInfo.animFrame >= 6) {\n        m->input &= ~INPUT_A_PRESSED;\n    }\n\n    if (check_common_landing_cancels(m, ACT_BACKFLIP)) {\n        return TRUE;\n    }\n\n    landing_step(m, MARIO_ANIM_TRIPLE_JUMP_LAND, ACT_IDLE);\n    return FALSE;\n}\n\ns32 act_lava_boost_land(struct MarioState *m) {\n    m->input &= ~(INPUT_FIRST_PERSON | INPUT_B_PRESSED);\n\n    if (check_common_landing_cancels(m, 0)) {\n        return TRUE;\n    }\n\n    landing_step(m, MARIO_ANIM_STAND_UP_FROM_LAVA_BOOST, ACT_IDLE);\n    return FALSE;\n}\n\ns32 act_long_jump_land_stop(struct MarioState *m) {\n    m->input &= ~INPUT_B_PRESSED;\n    if (check_common_landing_cancels(m, ACT_JUMP)) {\n        return TRUE;\n    }\n\n    landing_step(m, !m->marioObj->oMarioLongJumpIsSlow ? MARIO_ANIM_CROUCH_FROM_FAST_LONGJUMP\n                                                       : MARIO_ANIM_CROUCH_FROM_SLOW_LONGJUMP,\n                 ACT_CROUCHING);\n    return FALSE;\n}\n\ns32 act_hold_jump_land_stop(struct MarioState *m) {\n    if (m->marioObj->oInteractStatus & INT_STATUS_MARIO_DROP_OBJECT) {\n        return drop_and_set_mario_action(m, ACT_IDLE, 0);\n    }\n\n    if (m->input & INPUT_STOMPED) {\n        return drop_and_set_mario_action(m, ACT_SHOCKWAVE_BOUNCE, 0);\n    }\n\n    if (m->input & (INPUT_NONZERO_ANALOG | INPUT_A_PRESSED | INPUT_OFF_FLOOR | INPUT_ABOVE_SLIDE)) {\n        return check_common_hold_action_exits(m);\n    }\n\n    if (m->input & INPUT_B_PRESSED) {\n        return set_mario_action(m, ACT_THROWING, 0);\n    }\n\n    landing_step(m, MARIO_ANIM_JUMP_LAND_WITH_LIGHT_OBJ, ACT_HOLD_IDLE);\n    return FALSE;\n}\n\ns32 act_hold_freefall_land_stop(struct MarioState *m) {\n    if (m->marioObj->oInteractStatus & INT_STATUS_MARIO_DROP_OBJECT) {\n        return drop_and_set_mario_action(m, ACT_IDLE, 0);\n    }\n\n    if (m->input & INPUT_STOMPED) {\n        return drop_and_set_mario_action(m, ACT_SHOCKWAVE_BOUNCE, 0);\n    }\n\n    if (m->input & (INPUT_NONZERO_ANALOG | INPUT_A_PRESSED | INPUT_OFF_FLOOR | INPUT_ABOVE_SLIDE)) {\n        return check_common_hold_action_exits(m);\n    }\n\n    if (m->input & INPUT_B_PRESSED) {\n        return set_mario_action(m, ACT_THROWING, 0);\n    }\n    landing_step(m, MARIO_ANIM_FALL_LAND_WITH_LIGHT_OBJ, ACT_HOLD_IDLE);\n    return FALSE;\n}\n\ns32 act_air_throw_land(struct MarioState *m) {\n    if (m->input & INPUT_STOMPED) {\n        return set_mario_action(m, ACT_SHOCKWAVE_BOUNCE, 0);\n    }\n\n    if (m->input & INPUT_OFF_FLOOR) {\n        return set_mario_action(m, ACT_FREEFALL, 0);\n    }\n\n    if (++m->actionTimer == 4) {\n        mario_throw_held_object(m);\n    }\n\n    landing_step(m, MARIO_ANIM_THROW_LIGHT_OBJECT, ACT_IDLE);\n    return FALSE;\n}\n\ns32 act_twirl_land(struct MarioState *m) {\n    m->actionState = 1;\n    if (m->input & INPUT_STOMPED) {\n        return set_mario_action(m, ACT_SHOCKWAVE_BOUNCE, 0);\n    }\n\n    if (m->input & INPUT_OFF_FLOOR) {\n        return set_mario_action(m, ACT_FREEFALL, 0);\n    }\n\n    stationary_ground_step(m);\n    set_mario_animation(m, MARIO_ANIM_TWIRL_LAND);\n    if (m->angleVel[1] > 0) {\n        m->angleVel[1] -= 0x400;\n        if (m->angleVel[1] < 0) {\n            m->angleVel[1] = 0;\n        }\n\n        m->twirlYaw += m->angleVel[1];\n    }\n\n    m->marioObj->header.gfx.angle[1] += m->twirlYaw;\n    if (is_anim_at_end(m) && m->angleVel[1] == 0) {\n        m->faceAngle[1] += m->twirlYaw;\n        set_mario_action(m, ACT_IDLE, 0);\n    }\n\n    return FALSE;\n}\n\ns32 act_ground_pound_land(struct MarioState *m) {\n    m->actionState = 1;\n    if (m->input & INPUT_STOMPED) {\n        return drop_and_set_mario_action(m, ACT_SHOCKWAVE_BOUNCE, 0);\n    }\n\n    if (m->input & INPUT_OFF_FLOOR) {\n        return set_mario_action(m, ACT_FREEFALL, 0);\n    }\n\n    if (m->input & INPUT_ABOVE_SLIDE) {\n        return set_mario_action(m, ACT_BUTT_SLIDE, 0);\n    }\n\n    landing_step(m, MARIO_ANIM_GROUND_POUND_LANDING, ACT_BUTT_SLIDE_STOP);\n    return FALSE;\n}\n\ns32 act_first_person(struct MarioState *m) {\n    s32 sp1C = (m->input & (INPUT_OFF_FLOOR | INPUT_ABOVE_SLIDE | INPUT_STOMPED)) != 0;\n\n    if (m->actionState == 0) {\n        lower_background_noise(2);\n        set_camera_mode(m->area->camera, CAMERA_MODE_C_UP, 0x10);\n        m->actionState = 1;\n    } else if (!(m->input & INPUT_FIRST_PERSON) || sp1C) {\n        raise_background_noise(2);\n        // Go back to the last camera mode\n        set_camera_mode(m->area->camera, -1, 1);\n        return set_mario_action(m, ACT_IDLE, 0);\n    }\n\n    if (m->floor->type == SURFACE_LOOK_UP_WARP\n        && save_file_get_total_star_count(gCurrSaveFileNum - 1, COURSE_MIN - 1, COURSE_MAX - 1) >= 10) {\n        s16 sp1A = m->statusForCamera->headRotation[0];\n        s16 sp18 = ((m->statusForCamera->headRotation[1] * 4) / 3) + m->faceAngle[1];\n        if (sp1A == -0x1800 && (sp18 < -0x6FFF || sp18 >= 0x7000)) {\n            level_trigger_warp(m, WARP_OP_UNKNOWN_01);\n        }\n    }\n\n    stationary_ground_step(m);\n    set_mario_animation(m, MARIO_ANIM_FIRST_PERSON);\n    return FALSE;\n}\n\ns32 check_common_stationary_cancels(struct MarioState *m) {\n    if (m->pos[1] < m->waterLevel - 100) {\n        if (m->action == ACT_SPAWN_SPIN_LANDING) {\n            load_level_init_text(0);\n        }\n        update_mario_sound_and_camera(m);\n        return set_water_plunge_action(m);\n    }\n\n    if (m->input & INPUT_SQUISHED) {\n        update_mario_sound_and_camera(m);\n        return drop_and_set_mario_action(m, ACT_SQUISHED, 0);\n    }\n\n    if (m->action != ACT_UNKNOWN_0002020E) {\n        if (m->health < 0x100) {\n            update_mario_sound_and_camera(m);\n            return drop_and_set_mario_action(m, ACT_STANDING_DEATH, 0);\n        }\n    }\n    return FALSE;\n}\n\ns32 mario_execute_stationary_action(struct MarioState *m) {\n    s32 cancel;\n\n    if (check_common_stationary_cancels(m)) {\n        return TRUE;\n    }\n\n    if (mario_update_quicksand(m, 0.5f)) {\n        return TRUE;\n    }\n\n    /* clang-format off */\n    switch (m->action) {\n        case ACT_IDLE:                    cancel = act_idle(m);                             break;\n        case ACT_START_SLEEPING:          cancel = act_start_sleeping(m);                   break;\n        case ACT_SLEEPING:                cancel = act_sleeping(m);                         break;\n        case ACT_WAKING_UP:               cancel = act_waking_up(m);                        break;\n        case ACT_PANTING:                 cancel = act_panting(m);                          break;\n        case ACT_HOLD_PANTING_UNUSED:     cancel = act_hold_panting_unused(m);              break;\n        case ACT_HOLD_IDLE:               cancel = act_hold_idle(m);                        break;\n        case ACT_HOLD_HEAVY_IDLE:         cancel = act_hold_heavy_idle(m);                  break;\n        case ACT_IN_QUICKSAND:            cancel = act_in_quicksand(m);                     break;\n        case ACT_STANDING_AGAINST_WALL:   cancel = act_standing_against_wall(m);            break;\n        case ACT_COUGHING:                cancel = act_coughing(m);                         break;\n        case ACT_SHIVERING:               cancel = act_shivering(m);                        break;\n        case ACT_CROUCHING:               cancel = act_crouching(m);                        break;\n        case ACT_START_CROUCHING:         cancel = act_start_crouching(m);                  break;\n        case ACT_STOP_CROUCHING:          cancel = act_stop_crouching(m);                   break;\n        case ACT_START_CRAWLING:          cancel = act_start_crawling(m);                   break;\n        case ACT_STOP_CRAWLING:           cancel = act_stop_crawling(m);                    break;\n        case ACT_SLIDE_KICK_SLIDE_STOP:   cancel = act_slide_kick_slide_stop(m);            break;\n        case ACT_SHOCKWAVE_BOUNCE:        cancel = act_shockwave_bounce(m);                 break;\n        case ACT_FIRST_PERSON:            cancel = act_first_person(m);                     break;\n        case ACT_JUMP_LAND_STOP:          cancel = act_jump_land_stop(m);                   break;\n        case ACT_DOUBLE_JUMP_LAND_STOP:   cancel = act_double_jump_land_stop(m);            break;\n        case ACT_FREEFALL_LAND_STOP:      cancel = act_freefall_land_stop(m);               break;\n        case ACT_SIDE_FLIP_LAND_STOP:     cancel = act_side_flip_land_stop(m);              break;\n        case ACT_HOLD_JUMP_LAND_STOP:     cancel = act_hold_jump_land_stop(m);              break;\n        case ACT_HOLD_FREEFALL_LAND_STOP: cancel = act_hold_freefall_land_stop(m);          break;\n        case ACT_AIR_THROW_LAND:          cancel = act_air_throw_land(m);                   break;\n        case ACT_LAVA_BOOST_LAND:         cancel = act_lava_boost_land(m);                  break;\n        case ACT_TWIRL_LAND:              cancel = act_twirl_land(m);                       break;\n        case ACT_TRIPLE_JUMP_LAND_STOP:   cancel = act_triple_jump_land_stop(m);            break;\n        case ACT_BACKFLIP_LAND_STOP:      cancel = act_backflip_land_stop(m);               break;\n        case ACT_LONG_JUMP_LAND_STOP:     cancel = act_long_jump_land_stop(m);              break;\n        case ACT_GROUND_POUND_LAND:       cancel = act_ground_pound_land(m);                break;\n        case ACT_BRAKING_STOP:            cancel = act_braking_stop(m);                     break;\n        case ACT_BUTT_SLIDE_STOP:         cancel = act_butt_slide_stop(m);                  break;\n        case ACT_HOLD_BUTT_SLIDE_STOP:    cancel = act_hold_butt_slide_stop(m);             break;\n    }\n    /* clang-format on */\n\n    if (!cancel && (m->input & INPUT_IN_WATER)) {\n        m->particleFlags |= PARTICLE_IDLE_WATER_WAVE;\n    }\n\n    return cancel;\n}\n"
  },
  {
    "path": "src/game/mario_actions_stationary.h",
    "content": "#ifndef MARIO_ACTIONS_STATIONARY\n#define MARIO_ACTIONS_STATIONARY\n\n#include <PR/ultratypes.h>\n\n#include \"types.h\"\n\ns32 check_common_idle_cancels(struct MarioState *m);\ns32 check_common_hold_idle_cancels(struct MarioState *m);\ns32 act_idle(struct MarioState *m);\nvoid play_anim_sound(struct MarioState *m, u32 actionState, s32 animFrame, u32 sound);\ns32 act_start_sleeping(struct MarioState *m);\ns32 act_sleeping(struct MarioState *m);\ns32 act_waking_up(struct MarioState *m);\ns32 act_shivering(struct MarioState *m);\ns32 act_coughing(struct MarioState *m);\ns32 act_standing_against_wall(struct MarioState *m);\ns32 act_in_quicksand(struct MarioState *m);\ns32 act_crouching(struct MarioState *m);\ns32 act_panting(struct MarioState *m);\nvoid stopping_step(struct MarioState *m, s32 animID, u32 action);\ns32 act_braking_stop(struct MarioState *m);\ns32 act_butt_slide_stop(struct MarioState *m);\ns32 act_hold_butt_slide_stop(struct MarioState *m);\ns32 act_slide_kick_slide_stop(struct MarioState *m);\ns32 act_start_crouching(struct MarioState *m);\ns32 act_stop_crouching(struct MarioState *m);\ns32 act_start_crawling(struct MarioState *m);\ns32 act_stop_crawling(struct MarioState *m);\ns32 act_shockwave_bounce(struct MarioState *m);\ns32 landing_step(struct MarioState *m, s32 arg1, u32 action);\ns32 check_common_landing_cancels(struct MarioState *m, u32 action);\ns32 act_jump_land_stop(struct MarioState *m);\ns32 act_double_jump_land_stop(struct MarioState *m);\ns32 act_side_flip_land_stop(struct MarioState *m);\ns32 act_freefall_land_stop(struct MarioState *m);\ns32 act_triple_jump_land_stop(struct MarioState *m);\ns32 act_backflip_land_stop(struct MarioState *m);\ns32 act_lava_boost_land(struct MarioState *m);\ns32 act_long_jump_land_stop(struct MarioState *m);\ns32 act_hold_jump_land_stop(struct MarioState *m);\ns32 act_hold_freefall_land_stop(struct MarioState *m);\ns32 act_air_throw_land(struct MarioState *m);\ns32 act_twirl_land(struct MarioState *m);\ns32 act_ground_pound_land(struct MarioState *m);\ns32 act_first_person(struct MarioState *m);\ns32 check_common_stationary_cancels(struct MarioState *m);\ns32 mario_execute_stationary_action(struct MarioState *m);\n\n#endif // MARIO_ACTIONS_STATIONARY\n"
  },
  {
    "path": "src/game/mario_actions_submerged.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"sm64.h\"\n#include \"level_update.h\"\n#include \"memory.h\"\n#include \"engine/math_util.h\"\n#include \"area.h\"\n#include \"save_file.h\"\n#include \"sound_init.h\"\n#include \"engine/surface_collision.h\"\n#include \"interaction.h\"\n#include \"mario.h\"\n#include \"mario_step.h\"\n#include \"camera.h\"\n#include \"audio/external.h\"\n#include \"behavior_data.h\"\n#include \"level_table.h\"\n#include \"rumble_init.h\"\n\n#define MIN_SWIM_STRENGTH 160\n#define MIN_SWIM_SPEED 16.0f\n\nstatic s16 sWasAtSurface = FALSE;\nstatic s16 sSwimStrength = MIN_SWIM_STRENGTH;\nstatic s16 sWaterCurrentSpeeds[] = { 28, 12, 8, 4 };\n\nstatic s16 sBobTimer;\nstatic s16 sBobIncrement;\nstatic f32 sBobHeight;\n\nstatic void set_swimming_at_surface_particles(struct MarioState *m, u32 particleFlag) {\n    s16 atSurface = m->pos[1] >= m->waterLevel - 130;\n\n    if (atSurface) {\n        m->particleFlags |= particleFlag;\n        if (atSurface ^ sWasAtSurface) {\n            play_sound(SOUND_ACTION_UNKNOWN431, m->marioObj->header.gfx.cameraToObject);\n        }\n    }\n\n    sWasAtSurface = atSurface;\n}\n\nstatic s32 swimming_near_surface(struct MarioState *m) {\n    if (m->flags & MARIO_METAL_CAP) {\n        return FALSE;\n    }\n\n    return (m->waterLevel - 80) - m->pos[1] < 400.0f;\n}\n\nstatic f32 get_buoyancy(struct MarioState *m) {\n    f32 buoyancy = 0.0f;\n\n    if (m->flags & MARIO_METAL_CAP) {\n        if (m->action & ACT_FLAG_INVULNERABLE) {\n            buoyancy = -2.0f;\n        } else {\n            buoyancy = -18.0f;\n        }\n    } else if (swimming_near_surface(m)) {\n        buoyancy = 1.25f;\n    } else if (!(m->action & ACT_FLAG_MOVING)) {\n        buoyancy = -2.0f;\n    }\n\n    return buoyancy;\n}\n\nstatic u32 perform_water_full_step(struct MarioState *m, Vec3f nextPos) {\n    struct Surface *wall;\n    struct Surface *ceil;\n    struct Surface *floor;\n    f32 ceilHeight;\n    f32 floorHeight;\n\n    wall = resolve_and_return_wall_collisions(nextPos, 10.0f, 110.0f);\n    floorHeight = find_floor(nextPos[0], nextPos[1], nextPos[2], &floor);\n    ceilHeight = vec3f_find_ceil(nextPos, floorHeight, &ceil);\n\n    if (floor == NULL) {\n        return WATER_STEP_CANCELLED;\n    }\n\n    if (nextPos[1] >= floorHeight) {\n        if (ceilHeight - nextPos[1] >= 160.0f) {\n            vec3f_copy(m->pos, nextPos);\n            m->floor = floor;\n            m->floorHeight = floorHeight;\n\n            if (wall != NULL) {\n                return WATER_STEP_HIT_WALL;\n            } else {\n                return WATER_STEP_NONE;\n            }\n        }\n\n        if (ceilHeight - floorHeight < 160.0f) {\n            return WATER_STEP_CANCELLED;\n        }\n\n        //! Water ceiling downwarp\n        vec3f_set(m->pos, nextPos[0], ceilHeight - 160.0f, nextPos[2]);\n        m->floor = floor;\n        m->floorHeight = floorHeight;\n        return WATER_STEP_HIT_CEILING;\n    } else {\n        if (ceilHeight - floorHeight < 160.0f) {\n            return WATER_STEP_CANCELLED;\n        }\n\n        vec3f_set(m->pos, nextPos[0], floorHeight, nextPos[2]);\n        m->floor = floor;\n        m->floorHeight = floorHeight;\n        return WATER_STEP_HIT_FLOOR;\n    }\n}\n\nstatic void apply_water_current(struct MarioState *m, Vec3f step) {\n    s32 i;\n    f32 whirlpoolRadius = 2000.0f;\n\n    if (m->floor->type == SURFACE_FLOWING_WATER) {\n        s16 currentAngle = m->floor->force << 8;\n        f32 currentSpeed = sWaterCurrentSpeeds[m->floor->force >> 8];\n\n        step[0] += currentSpeed * sins(currentAngle);\n        step[2] += currentSpeed * coss(currentAngle);\n    }\n\n    for (i = 0; i < 2; i++) {\n        struct Whirlpool *whirlpool = gCurrentArea->whirlpools[i];\n        if (whirlpool != NULL) {\n            f32 strength = 0.0f;\n\n            f32 dx = whirlpool->pos[0] - m->pos[0];\n            f32 dy = whirlpool->pos[1] - m->pos[1];\n            f32 dz = whirlpool->pos[2] - m->pos[2];\n\n            f32 lateralDist = sqrtf(dx * dx + dz * dz);\n            f32 distance = sqrtf(lateralDist * lateralDist + dy * dy);\n\n            s16 pitchToWhirlpool = atan2s(lateralDist, dy);\n            s16 yawToWhirlpool = atan2s(dz, dx);\n\n            yawToWhirlpool -= (s16)(0x2000 * 1000.0f / (distance + 1000.0f));\n\n            if (whirlpool->strength >= 0) {\n                if (gCurrLevelNum == LEVEL_DDD && gCurrAreaIndex == 2) {\n                    whirlpoolRadius = 4000.0f;\n                }\n\n                if (distance >= 26.0f && distance < whirlpoolRadius) {\n                    strength = whirlpool->strength * (1.0f - distance / whirlpoolRadius);\n                }\n            } else if (distance < 2000.0f) {\n                strength = whirlpool->strength * (1.0f - distance / 2000.0f);\n            }\n\n            step[0] += strength * coss(pitchToWhirlpool) * sins(yawToWhirlpool);\n            step[1] += strength * sins(pitchToWhirlpool);\n            step[2] += strength * coss(pitchToWhirlpool) * coss(yawToWhirlpool);\n        }\n    }\n}\n\nstatic u32 perform_water_step(struct MarioState *m) {\n    UNUSED u8 filler[4];\n    u32 stepResult;\n    Vec3f nextPos;\n    Vec3f step;\n    struct Object *marioObj = m->marioObj;\n\n    vec3f_copy(step, m->vel);\n\n    if (m->action & ACT_FLAG_SWIMMING) {\n        apply_water_current(m, step);\n    }\n\n    nextPos[0] = m->pos[0] + step[0];\n    nextPos[1] = m->pos[1] + step[1];\n    nextPos[2] = m->pos[2] + step[2];\n\n    if (nextPos[1] > m->waterLevel - 80) {\n        nextPos[1] = m->waterLevel - 80;\n        m->vel[1] = 0.0f;\n    }\n\n    stepResult = perform_water_full_step(m, nextPos);\n\n    vec3f_copy(marioObj->header.gfx.pos, m->pos);\n    vec3s_set(marioObj->header.gfx.angle, -m->faceAngle[0], m->faceAngle[1], m->faceAngle[2]);\n\n    return stepResult;\n}\n\nstatic BAD_RETURN(u32) update_water_pitch(struct MarioState *m) {\n    struct Object *marioObj = m->marioObj;\n\n    if (marioObj->header.gfx.angle[0] > 0) {\n        marioObj->header.gfx.pos[1] +=\n            60.0f * sins(marioObj->header.gfx.angle[0]) * sins(marioObj->header.gfx.angle[0]);\n    }\n\n    if (marioObj->header.gfx.angle[0] < 0) {\n        marioObj->header.gfx.angle[0] = marioObj->header.gfx.angle[0] * 6 / 10;\n    }\n\n    if (marioObj->header.gfx.angle[0] > 0) {\n        marioObj->header.gfx.angle[0] = marioObj->header.gfx.angle[0] * 10 / 8;\n    }\n}\n\nstatic void stationary_slow_down(struct MarioState *m) {\n    f32 buoyancy = get_buoyancy(m);\n\n    m->angleVel[0] = 0;\n    m->angleVel[1] = 0;\n\n    m->forwardVel = approach_f32(m->forwardVel, 0.0f, 1.0f, 1.0f);\n    m->vel[1] = approach_f32(m->vel[1], buoyancy, 2.0f, 1.0f);\n\n    m->faceAngle[0] = approach_s32(m->faceAngle[0], 0, 0x200, 0x200);\n    m->faceAngle[2] = approach_s32(m->faceAngle[2], 0, 0x100, 0x100);\n\n    m->vel[0] = m->forwardVel * coss(m->faceAngle[0]) * sins(m->faceAngle[1]);\n    m->vel[2] = m->forwardVel * coss(m->faceAngle[0]) * coss(m->faceAngle[1]);\n}\n\nstatic void update_swimming_speed(struct MarioState *m, f32 decelThreshold) {\n    f32 buoyancy = get_buoyancy(m);\n    f32 maxSpeed = 28.0f;\n\n    if (m->action & ACT_FLAG_STATIONARY) {\n        m->forwardVel -= 2.0f;\n    }\n\n    if (m->forwardVel < 0.0f) {\n        m->forwardVel = 0.0f;\n    }\n\n    if (m->forwardVel > maxSpeed) {\n        m->forwardVel = maxSpeed;\n    }\n\n    if (m->forwardVel > decelThreshold) {\n        m->forwardVel -= 0.5f;\n    }\n\n    m->vel[0] = m->forwardVel * coss(m->faceAngle[0]) * sins(m->faceAngle[1]);\n    m->vel[1] = m->forwardVel * sins(m->faceAngle[0]) + buoyancy;\n    m->vel[2] = m->forwardVel * coss(m->faceAngle[0]) * coss(m->faceAngle[1]);\n}\n\nstatic void update_swimming_yaw(struct MarioState *m) {\n    s16 targetYawVel = -(s16)(10.0f * m->controller->stickX);\n\n    if (targetYawVel > 0) {\n        if (m->angleVel[1] < 0) {\n            m->angleVel[1] += 0x40;\n            if (m->angleVel[1] > 0x10) {\n                m->angleVel[1] = 0x10;\n            }\n        } else {\n            m->angleVel[1] = approach_s32(m->angleVel[1], targetYawVel, 0x10, 0x20);\n        }\n    } else if (targetYawVel < 0) {\n        if (m->angleVel[1] > 0) {\n            m->angleVel[1] -= 0x40;\n            if (m->angleVel[1] < -0x10) {\n                m->angleVel[1] = -0x10;\n            }\n        } else {\n            m->angleVel[1] = approach_s32(m->angleVel[1], targetYawVel, 0x20, 0x10);\n        }\n    } else {\n        m->angleVel[1] = approach_s32(m->angleVel[1], 0, 0x40, 0x40);\n    }\n\n    m->faceAngle[1] += m->angleVel[1];\n    m->faceAngle[2] = -m->angleVel[1] * 8;\n}\n\nstatic void update_swimming_pitch(struct MarioState *m) {\n    s16 targetPitch = -(s16)(252.0f * m->controller->stickY);\n\n    s16 pitchVel;\n    if (m->faceAngle[0] < 0) {\n        pitchVel = 0x100;\n    } else {\n        pitchVel = 0x200;\n    }\n\n    if (m->faceAngle[0] < targetPitch) {\n        if ((m->faceAngle[0] += pitchVel) > targetPitch) {\n            m->faceAngle[0] = targetPitch;\n        }\n    } else if (m->faceAngle[0] > targetPitch) {\n        if ((m->faceAngle[0] -= pitchVel) < targetPitch) {\n            m->faceAngle[0] = targetPitch;\n        }\n    }\n}\n\nstatic void common_idle_step(struct MarioState *m, s32 animation, s32 arg) {\n    s16 *val = &m->marioBodyState->headAngle[0];\n\n    update_swimming_yaw(m);\n    update_swimming_pitch(m);\n    update_swimming_speed(m, MIN_SWIM_SPEED);\n    perform_water_step(m);\n    update_water_pitch(m);\n\n    if (m->faceAngle[0] > 0) {\n        *val = approach_s32(*val, m->faceAngle[0] / 2, 0x80, 0x200);\n    } else {\n        *val = approach_s32(*val, 0, 0x200, 0x200);\n    }\n\n    if (arg == 0) {\n        set_mario_animation(m, animation);\n    } else {\n        set_mario_anim_with_accel(m, animation, arg);\n    }\n\n    set_swimming_at_surface_particles(m, PARTICLE_IDLE_WATER_WAVE);\n}\n\nstatic s32 act_water_idle(struct MarioState *m) {\n    u32 val = 0x10000;\n\n    if (m->flags & MARIO_METAL_CAP) {\n        return set_mario_action(m, ACT_METAL_WATER_FALLING, 1);\n    }\n\n    if (m->input & INPUT_B_PRESSED) {\n        return set_mario_action(m, ACT_WATER_PUNCH, 0);\n    }\n\n    if (m->input & INPUT_A_PRESSED) {\n        return set_mario_action(m, ACT_BREASTSTROKE, 0);\n    }\n\n    if (m->faceAngle[0] < -0x1000) {\n        val = 0x30000;\n    }\n\n    common_idle_step(m, MARIO_ANIM_WATER_IDLE, val);\n    return FALSE;\n}\n\nstatic s32 act_hold_water_idle(struct MarioState *m) {\n    if (m->flags & MARIO_METAL_CAP) {\n        return set_mario_action(m, ACT_HOLD_METAL_WATER_FALLING, 0);\n    }\n\n    if (m->marioObj->oInteractStatus & INT_STATUS_MARIO_DROP_OBJECT) {\n        return drop_and_set_mario_action(m, ACT_WATER_IDLE, 0);\n    }\n\n    if (m->input & INPUT_B_PRESSED) {\n        return set_mario_action(m, ACT_WATER_THROW, 0);\n    }\n\n    if (m->input & INPUT_A_PRESSED) {\n        return set_mario_action(m, ACT_HOLD_BREASTSTROKE, 0);\n    }\n\n    common_idle_step(m, MARIO_ANIM_WATER_IDLE_WITH_OBJ, 0);\n    return FALSE;\n}\n\nstatic s32 act_water_action_end(struct MarioState *m) {\n    if (m->flags & MARIO_METAL_CAP) {\n        return set_mario_action(m, ACT_METAL_WATER_FALLING, 1);\n    }\n\n    if (m->input & INPUT_B_PRESSED) {\n        return set_mario_action(m, ACT_WATER_PUNCH, 0);\n    }\n\n    if (m->input & INPUT_A_PRESSED) {\n        return set_mario_action(m, ACT_BREASTSTROKE, 0);\n    }\n\n    common_idle_step(m, MARIO_ANIM_WATER_ACTION_END, 0);\n    if (is_anim_at_end(m)) {\n        set_mario_action(m, ACT_WATER_IDLE, 0);\n    }\n    return FALSE;\n}\n\nstatic s32 act_hold_water_action_end(struct MarioState *m) {\n    if (m->flags & MARIO_METAL_CAP) {\n        return set_mario_action(m, ACT_HOLD_METAL_WATER_FALLING, 0);\n    }\n\n    if (m->marioObj->oInteractStatus & INT_STATUS_MARIO_DROP_OBJECT) {\n        return drop_and_set_mario_action(m, ACT_WATER_IDLE, 0);\n    }\n\n    if (m->input & INPUT_B_PRESSED) {\n        return set_mario_action(m, ACT_WATER_THROW, 0);\n    }\n\n    if (m->input & INPUT_A_PRESSED) {\n        return set_mario_action(m, ACT_HOLD_BREASTSTROKE, 0);\n    }\n\n    common_idle_step(\n        m, m->actionArg == 0 ? MARIO_ANIM_WATER_ACTION_END_WITH_OBJ : MARIO_ANIM_STOP_GRAB_OBJ_WATER,\n        0);\n    if (is_anim_at_end(m)) {\n        set_mario_action(m, ACT_HOLD_WATER_IDLE, 0);\n    }\n    return FALSE;\n}\n\nstatic void reset_bob_variables(struct MarioState *m) {\n    sBobTimer = 0;\n    sBobIncrement = 0x800;\n    sBobHeight = m->faceAngle[0] / 256.0f + 20.0f;\n}\n\n/**\n * Controls the bobbing that happens when you swim near the surface.\n */\nstatic void surface_swim_bob(struct MarioState *m) {\n    if (sBobIncrement != 0 && m->pos[1] > m->waterLevel - 85 && m->faceAngle[0] >= 0) {\n        if ((sBobTimer += sBobIncrement) >= 0) {\n            m->marioObj->header.gfx.pos[1] += sBobHeight * sins(sBobTimer);\n            return;\n        }\n    }\n\n    sBobIncrement = 0;\n}\n\nstatic void common_swimming_step(struct MarioState *m, s16 swimStrength) {\n    s16 floorPitch;\n    UNUSED struct Object *marioObj = m->marioObj;\n\n    update_swimming_yaw(m);\n    update_swimming_pitch(m);\n    update_swimming_speed(m, swimStrength / 10.0f);\n\n    switch (perform_water_step(m)) {\n        case WATER_STEP_HIT_FLOOR:\n            floorPitch = -find_floor_slope(m, -0x8000);\n            if (m->faceAngle[0] < floorPitch) {\n                m->faceAngle[0] = floorPitch;\n            }\n            break;\n\n        case WATER_STEP_HIT_CEILING:\n            if (m->faceAngle[0] > -0x3000) {\n                m->faceAngle[0] -= 0x100;\n            }\n            break;\n\n        case WATER_STEP_HIT_WALL:\n            if (m->controller->stickY == 0.0f) {\n                if (m->faceAngle[0] > 0.0f) {\n                    m->faceAngle[0] += 0x200;\n                    if (m->faceAngle[0] > 0x3F00) {\n                        m->faceAngle[0] = 0x3F00;\n                    }\n                } else {\n                    m->faceAngle[0] -= 0x200;\n                    if (m->faceAngle[0] < -0x3F00) {\n                        m->faceAngle[0] = -0x3F00;\n                    }\n                }\n            }\n            break;\n    }\n\n    update_water_pitch(m);\n    m->marioBodyState->headAngle[0] = approach_s32(m->marioBodyState->headAngle[0], 0, 0x200, 0x200);\n\n    surface_swim_bob(m);\n    set_swimming_at_surface_particles(m, PARTICLE_WAVE_TRAIL);\n}\n\nstatic void play_swimming_noise(struct MarioState *m) {\n    s16 animFrame = m->marioObj->header.gfx.animInfo.animFrame;\n\n    // This must be one line to match on -O2\n    if (animFrame == 0 || animFrame == 12) play_sound(SOUND_ACTION_UNKNOWN434, m->marioObj->header.gfx.cameraToObject);\n}\n\nstatic s32 check_water_jump(struct MarioState *m) {\n    s32 probe = (s32)(m->pos[1] + 1.5f);\n\n    if (m->input & INPUT_A_PRESSED) {\n        if (probe >= m->waterLevel - 80 && m->faceAngle[0] >= 0 && m->controller->stickY < -60.0f) {\n            vec3s_set(m->angleVel, 0, 0, 0);\n\n            m->vel[1] = 62.0f;\n\n            if (m->heldObj == NULL) {\n                return set_mario_action(m, ACT_WATER_JUMP, 0);\n            } else {\n                return set_mario_action(m, ACT_HOLD_WATER_JUMP, 0);\n            }\n        }\n    }\n\n    return FALSE;\n}\n\nstatic s32 act_breaststroke(struct MarioState *m) {\n    if (m->actionArg == 0) {\n        sSwimStrength = MIN_SWIM_STRENGTH;\n    }\n\n    if (m->flags & MARIO_METAL_CAP) {\n        return set_mario_action(m, ACT_METAL_WATER_FALLING, 1);\n    }\n\n    if (m->input & INPUT_B_PRESSED) {\n        return set_mario_action(m, ACT_WATER_PUNCH, 0);\n    }\n\n    if (++m->actionTimer == 14) {\n        return set_mario_action(m, ACT_FLUTTER_KICK, 0);\n    }\n\n    if (check_water_jump(m)) {\n        return TRUE;\n    }\n\n    if (m->actionTimer < 6) {\n        m->forwardVel += 0.5f;\n    }\n\n    if (m->actionTimer >= 9) {\n        m->forwardVel += 1.5f;\n    }\n\n    if (m->actionTimer >= 2) {\n        if (m->actionTimer < 6 && (m->input & INPUT_A_PRESSED)) {\n            m->actionState = 1;\n        }\n\n        if (m->actionTimer == 9 && m->actionState == 1) {\n            set_anim_to_frame(m, 0);\n            m->actionState = 0;\n            m->actionTimer = 1;\n            sSwimStrength = MIN_SWIM_STRENGTH;\n        }\n    }\n\n    if (m->actionTimer == 1) {\n        play_sound(sSwimStrength == MIN_SWIM_STRENGTH ? SOUND_ACTION_SWIM : SOUND_ACTION_SWIM_FAST,\n                   m->marioObj->header.gfx.cameraToObject);\n        reset_bob_variables(m);\n    }\n\n#if ENABLE_RUMBLE\n    if (m->actionTimer < 6) {\n        func_sh_8024CA04();\n    }\n#endif\n\n    set_mario_animation(m, MARIO_ANIM_SWIM_PART1);\n    common_swimming_step(m, sSwimStrength);\n\n    return FALSE;\n}\n\nstatic s32 act_swimming_end(struct MarioState *m) {\n    if (m->flags & MARIO_METAL_CAP) {\n        return set_mario_action(m, ACT_METAL_WATER_FALLING, 1);\n    }\n\n    if (m->input & INPUT_B_PRESSED) {\n        return set_mario_action(m, ACT_WATER_PUNCH, 0);\n    }\n\n    if (m->actionTimer >= 15) {\n        return set_mario_action(m, ACT_WATER_ACTION_END, 0);\n    }\n\n    if (check_water_jump(m)) {\n        return TRUE;\n    }\n\n    if ((m->input & INPUT_A_DOWN) && m->actionTimer >= 7) {\n        if (m->actionTimer == 7 && sSwimStrength < 280) {\n            sSwimStrength += 10;\n        }\n        return set_mario_action(m, ACT_BREASTSTROKE, 1);\n    }\n\n    if (m->actionTimer >= 7) {\n        sSwimStrength = MIN_SWIM_STRENGTH;\n    }\n\n    m->actionTimer++;\n\n    m->forwardVel -= 0.25f;\n    set_mario_animation(m, MARIO_ANIM_SWIM_PART2);\n    common_swimming_step(m, sSwimStrength);\n\n    return FALSE;\n}\n\nstatic s32 act_flutter_kick(struct MarioState *m) {\n    if (m->flags & MARIO_METAL_CAP) {\n        return set_mario_action(m, ACT_METAL_WATER_FALLING, 1);\n    }\n\n    if (m->input & INPUT_B_PRESSED) {\n        return set_mario_action(m, ACT_WATER_PUNCH, 0);\n    }\n\n    if (!(m->input & INPUT_A_DOWN)) {\n        if (m->actionTimer == 0 && sSwimStrength < 280) {\n            sSwimStrength += 10;\n        }\n        return set_mario_action(m, ACT_SWIMMING_END, 0);\n    }\n\n    m->forwardVel = approach_f32(m->forwardVel, 12.0f, 0.1f, 0.15f);\n    m->actionTimer = 1;\n    sSwimStrength = MIN_SWIM_STRENGTH;\n\n    if (m->forwardVel < 14.0f) {\n        play_swimming_noise(m);\n        set_mario_animation(m, MARIO_ANIM_FLUTTERKICK);\n    }\n\n    common_swimming_step(m, sSwimStrength);\n    return FALSE;\n}\n\nstatic s32 act_hold_breaststroke(struct MarioState *m) {\n    if (m->flags & MARIO_METAL_CAP) {\n        return set_mario_action(m, ACT_HOLD_METAL_WATER_FALLING, 0);\n    }\n\n    if (m->marioObj->oInteractStatus & INT_STATUS_MARIO_DROP_OBJECT) {\n        return drop_and_set_mario_action(m, ACT_WATER_IDLE, 0);\n    }\n\n    if (++m->actionTimer == 17) {\n        return set_mario_action(m, ACT_HOLD_FLUTTER_KICK, 0);\n    }\n\n    if (m->input & INPUT_B_PRESSED) {\n        return set_mario_action(m, ACT_WATER_THROW, 0);\n    }\n\n    if (check_water_jump(m)) {\n        return TRUE;\n    }\n\n    if (m->actionTimer < 6) {\n        m->forwardVel += 0.5f;\n    }\n\n    if (m->actionTimer >= 9) {\n        m->forwardVel += 1.5f;\n    }\n\n    if (m->actionTimer >= 2) {\n        if (m->actionTimer < 6 && (m->input & INPUT_A_PRESSED)) {\n            m->actionState = 1;\n        }\n\n        if (m->actionTimer == 9 && m->actionState == 1) {\n            set_anim_to_frame(m, 0);\n            m->actionState = 0;\n            m->actionTimer = 1;\n        }\n    }\n\n    if (m->actionTimer == 1) {\n        play_sound(SOUND_ACTION_SWIM, m->marioObj->header.gfx.cameraToObject);\n        reset_bob_variables(m);\n    }\n\n    set_mario_animation(m, MARIO_ANIM_SWIM_WITH_OBJ_PART1);\n    common_swimming_step(m, 0x00A0);\n    return FALSE;\n}\n\nstatic s32 act_hold_swimming_end(struct MarioState *m) {\n    if (m->flags & MARIO_METAL_CAP) {\n        return set_mario_action(m, ACT_HOLD_METAL_WATER_FALLING, 0);\n    }\n\n    if (m->marioObj->oInteractStatus & INT_STATUS_MARIO_DROP_OBJECT) {\n        return drop_and_set_mario_action(m, ACT_WATER_IDLE, 0);\n    }\n\n    if (m->actionTimer >= 15) {\n        return set_mario_action(m, ACT_HOLD_WATER_ACTION_END, 0);\n    }\n\n    if (m->input & INPUT_B_PRESSED) {\n        return set_mario_action(m, ACT_WATER_THROW, 0);\n    }\n\n    if (check_water_jump(m)) {\n        return TRUE;\n    }\n\n    if ((m->input & INPUT_A_DOWN) && m->actionTimer >= 7) {\n        return set_mario_action(m, ACT_HOLD_BREASTSTROKE, 0);\n    }\n\n    m->actionTimer++;\n\n    m->forwardVel -= 0.25f;\n    set_mario_animation(m, MARIO_ANIM_SWIM_WITH_OBJ_PART2);\n    common_swimming_step(m, 0x00A0);\n    return FALSE;\n}\n\nstatic s32 act_hold_flutter_kick(struct MarioState *m) {\n    if (m->flags & MARIO_METAL_CAP) {\n        return set_mario_action(m, ACT_HOLD_METAL_WATER_FALLING, 0);\n    }\n\n    if (m->marioObj->oInteractStatus & INT_STATUS_MARIO_DROP_OBJECT) {\n        return drop_and_set_mario_action(m, ACT_WATER_IDLE, 0);\n    }\n\n    if (m->input & INPUT_B_PRESSED) {\n        return set_mario_action(m, ACT_WATER_THROW, 0);\n    }\n\n    if (!(m->input & INPUT_A_DOWN)) {\n        return set_mario_action(m, ACT_HOLD_SWIMMING_END, 0);\n    }\n\n    m->forwardVel = approach_f32(m->forwardVel, 12.0f, 0.1f, 0.15f);\n    if (m->forwardVel < 14.0f) {\n        play_swimming_noise(m);\n        set_mario_animation(m, MARIO_ANIM_FLUTTERKICK_WITH_OBJ);\n    }\n    common_swimming_step(m, 0x00A0);\n    return FALSE;\n}\n\nstatic s32 act_water_shell_swimming(struct MarioState *m) {\n    if (m->marioObj->oInteractStatus & INT_STATUS_MARIO_DROP_OBJECT) {\n        return drop_and_set_mario_action(m, ACT_WATER_IDLE, 0);\n    }\n\n    if (m->input & INPUT_B_PRESSED) {\n        return set_mario_action(m, ACT_WATER_THROW, 0);\n    }\n\n    if (m->actionTimer++ == 240) {\n        m->heldObj->oInteractStatus = INT_STATUS_STOP_RIDING;\n        m->heldObj = NULL;\n        stop_shell_music();\n        set_mario_action(m, ACT_FLUTTER_KICK, 0);\n    }\n\n    m->forwardVel = approach_f32(m->forwardVel, 30.0f, 2.0f, 1.0f);\n\n    play_swimming_noise(m);\n    set_mario_animation(m, MARIO_ANIM_FLUTTERKICK_WITH_OBJ);\n    common_swimming_step(m, 0x012C);\n\n    return FALSE;\n}\n\nstatic s32 check_water_grab(struct MarioState *m) {\n    //! Heave hos have the grabbable interaction type but are not normally\n    // grabbable. Since water grabbing doesn't check the appropriate input flag,\n    // you can use water grab to pick up heave ho.\n    if (m->marioObj->collidedObjInteractTypes & INTERACT_GRABBABLE) {\n        struct Object *object = mario_get_collided_object(m, INTERACT_GRABBABLE);\n        f32 dx = object->oPosX - m->pos[0];\n        f32 dz = object->oPosZ - m->pos[2];\n        s16 dAngleToObject = atan2s(dz, dx) - m->faceAngle[1];\n\n        if (dAngleToObject >= -0x2AAA && dAngleToObject <= 0x2AAA) {\n            m->usedObj = object;\n            mario_grab_used_object(m);\n            m->marioBodyState->grabPos = GRAB_POS_LIGHT_OBJ;\n            return TRUE;\n        }\n    }\n\n    return FALSE;\n}\n\nstatic s32 act_water_throw(struct MarioState *m) {\n    update_swimming_yaw(m);\n    update_swimming_pitch(m);\n    update_swimming_speed(m, MIN_SWIM_SPEED);\n    perform_water_step(m);\n    update_water_pitch(m);\n\n    set_mario_animation(m, MARIO_ANIM_WATER_THROW_OBJ);\n    play_sound_if_no_flag(m, SOUND_ACTION_SWIM, MARIO_ACTION_SOUND_PLAYED);\n\n    m->marioBodyState->headAngle[0] = approach_s32(m->marioBodyState->headAngle[0], 0, 0x200, 0x200);\n\n    if (m->actionTimer++ == 5) {\n        mario_throw_held_object(m);\n#if ENABLE_RUMBLE\n        queue_rumble_data(3, 50);\n#endif\n    }\n\n    if (is_anim_at_end(m)) {\n        set_mario_action(m, ACT_WATER_IDLE, 0);\n    }\n\n    return FALSE;\n}\n\nstatic s32 act_water_punch(struct MarioState *m) {\n    if (m->forwardVel < 7.0f) {\n        m->forwardVel += 1.0f;\n    }\n\n    update_swimming_yaw(m);\n    update_swimming_pitch(m);\n    update_swimming_speed(m, MIN_SWIM_SPEED);\n    perform_water_step(m);\n    update_water_pitch(m);\n\n    m->marioBodyState->headAngle[0] = approach_s32(m->marioBodyState->headAngle[0], 0, 0x200, 0x200);\n\n    play_sound_if_no_flag(m, SOUND_ACTION_SWIM, MARIO_ACTION_SOUND_PLAYED);\n\n    switch (m->actionState) {\n        case 0:\n            set_mario_animation(m, MARIO_ANIM_WATER_GRAB_OBJ_PART1);\n            if (is_anim_at_end(m)) {\n                m->actionState = check_water_grab(m) + 1;\n            }\n            break;\n\n        case 1:\n            set_mario_animation(m, MARIO_ANIM_WATER_GRAB_OBJ_PART2);\n            if (is_anim_at_end(m)) {\n                set_mario_action(m, ACT_WATER_ACTION_END, 0);\n            }\n            break;\n\n        case 2:\n            set_mario_animation(m, MARIO_ANIM_WATER_PICK_UP_OBJ);\n            if (is_anim_at_end(m)) {\n                if (m->heldObj->behavior == segmented_to_virtual(bhvKoopaShellUnderwater)) {\n                    play_shell_music();\n                    set_mario_action(m, ACT_WATER_SHELL_SWIMMING, 0);\n                } else {\n                    set_mario_action(m, ACT_HOLD_WATER_ACTION_END, 1);\n                }\n            }\n            break;\n    }\n\n    return FALSE;\n}\n\nstatic void common_water_knockback_step(struct MarioState *m, s32 animation, u32 endAction, s32 arg3) {\n    stationary_slow_down(m);\n    perform_water_step(m);\n    set_mario_animation(m, animation);\n\n    m->marioBodyState->headAngle[0] = 0;\n\n    if (is_anim_at_end(m)) {\n        if (arg3 > 0) {\n            m->invincTimer = 30;\n        }\n\n        set_mario_action(m, m->health >= 0x100 ? endAction : ACT_WATER_DEATH, 0);\n    }\n}\n\nstatic s32 act_backward_water_kb(struct MarioState *m) {\n    common_water_knockback_step(m, MARIO_ANIM_BACKWARDS_WATER_KB, ACT_WATER_IDLE, m->actionArg);\n    return FALSE;\n}\n\nstatic s32 act_forward_water_kb(struct MarioState *m) {\n    common_water_knockback_step(m, MARIO_ANIM_WATER_FORWARD_KB, ACT_WATER_IDLE, m->actionArg);\n    return FALSE;\n}\n\nstatic s32 act_water_shocked(struct MarioState *m) {\n    play_sound_if_no_flag(m, SOUND_MARIO_WAAAOOOW, MARIO_ACTION_SOUND_PLAYED);\n    play_sound(SOUND_MOVING_SHOCKED, m->marioObj->header.gfx.cameraToObject);\n    set_camera_shake_from_hit(SHAKE_SHOCK);\n\n    if (set_mario_animation(m, MARIO_ANIM_SHOCKED) == 0) {\n        m->actionTimer++;\n        m->flags |= MARIO_METAL_SHOCK;\n    }\n\n    if (m->actionTimer >= 6) {\n        m->invincTimer = 30;\n        set_mario_action(m, m->health < 0x100 ? ACT_WATER_DEATH : ACT_WATER_IDLE, 0);\n    }\n\n    stationary_slow_down(m);\n    perform_water_step(m);\n    m->marioBodyState->headAngle[0] = 0;\n    return FALSE;\n}\n\nstatic s32 act_drowning(struct MarioState *m) {\n    switch (m->actionState) {\n        case 0:\n            set_mario_animation(m, MARIO_ANIM_DROWNING_PART1);\n            m->marioBodyState->eyeState = MARIO_EYES_HALF_CLOSED;\n            if (is_anim_at_end(m)) {\n                m->actionState = 1;\n            }\n            break;\n\n        case 1:\n            set_mario_animation(m, MARIO_ANIM_DROWNING_PART2);\n            m->marioBodyState->eyeState = MARIO_EYES_DEAD;\n            if (m->marioObj->header.gfx.animInfo.animFrame == 30) {\n                level_trigger_warp(m, WARP_OP_DEATH);\n            }\n            break;\n    }\n\n    play_sound_if_no_flag(m, SOUND_MARIO_DROWNING, MARIO_ACTION_SOUND_PLAYED);\n    stationary_slow_down(m);\n    perform_water_step(m);\n\n    return FALSE;\n}\n\nstatic s32 act_water_death(struct MarioState *m) {\n    stationary_slow_down(m);\n    perform_water_step(m);\n\n    m->marioBodyState->eyeState = MARIO_EYES_DEAD;\n\n    set_mario_animation(m, MARIO_ANIM_WATER_DYING);\n    if (set_mario_animation(m, MARIO_ANIM_WATER_DYING) == 35) {\n        level_trigger_warp(m, WARP_OP_DEATH);\n    }\n\n    return FALSE;\n}\n\nstatic s32 act_water_plunge(struct MarioState *m) {\n    u32 stepResult;\n    s32 stateFlags = m->heldObj != NULL;\n\n    f32 endVSpeed;\n    if (swimming_near_surface(m)) {\n        endVSpeed = 0.0f;\n    } else {\n        endVSpeed = -5.0f;\n    }\n\n    if (m->flags & MARIO_METAL_CAP) {\n        stateFlags |= 4;\n    } else if ((m->prevAction & ACT_FLAG_DIVING) || (m->input & INPUT_A_DOWN)) {\n        stateFlags |= 2;\n    }\n\n    m->actionTimer++;\n\n    stationary_slow_down(m);\n\n    stepResult = perform_water_step(m);\n\n    if (m->actionState == 0) {\n        play_sound(SOUND_ACTION_UNKNOWN430, m->marioObj->header.gfx.cameraToObject);\n        if (m->peakHeight - m->pos[1] > 1150.0f) {\n            play_sound(SOUND_MARIO_HAHA_2, m->marioObj->header.gfx.cameraToObject);\n        }\n\n        m->particleFlags |= PARTICLE_WATER_SPLASH;\n        m->actionState = 1;\n#if ENABLE_RUMBLE\n        if (m->prevAction & ACT_FLAG_AIR) {\n            queue_rumble_data(5, 80);\n        }\n#endif\n    }\n\n    if (stepResult == WATER_STEP_HIT_FLOOR || m->vel[1] >= endVSpeed || m->actionTimer > 20) {\n        switch (stateFlags) {\n            case 0:\n                set_mario_action(m, ACT_WATER_ACTION_END, 0);\n                break;\n            case 1:\n                set_mario_action(m, ACT_HOLD_WATER_ACTION_END, 0);\n                break;\n            case 2:\n                set_mario_action(m, ACT_FLUTTER_KICK, 0);\n                break;\n            case 3:\n                set_mario_action(m, ACT_HOLD_FLUTTER_KICK, 0);\n                break;\n            case 4:\n                set_mario_action(m, ACT_METAL_WATER_FALLING, 0);\n                break;\n            case 5:\n                set_mario_action(m, ACT_HOLD_METAL_WATER_FALLING, 0);\n                break;\n        }\n        sBobIncrement = 0;\n    }\n\n    switch (stateFlags) {\n        case 0:\n            set_mario_animation(m, MARIO_ANIM_WATER_ACTION_END);\n            break;\n        case 1:\n            set_mario_animation(m, MARIO_ANIM_WATER_ACTION_END_WITH_OBJ);\n            break;\n        case 2:\n            set_mario_animation(m, MARIO_ANIM_FLUTTERKICK);\n            break;\n        case 3:\n            set_mario_animation(m, MARIO_ANIM_FLUTTERKICK_WITH_OBJ);\n            break;\n        case 4:\n            set_mario_animation(m, MARIO_ANIM_GENERAL_FALL);\n            break;\n        case 5:\n            set_mario_animation(m, MARIO_ANIM_FALL_WITH_LIGHT_OBJ);\n            break;\n    }\n\n    m->particleFlags |= PARTICLE_PLUNGE_BUBBLE;\n    return FALSE;\n}\n\nstatic s32 act_caught_in_whirlpool(struct MarioState *m) {\n    f32 sinAngleChange;\n    f32 cosAngleChange;\n    f32 newDistance;\n    s16 angleChange;\n\n    struct Object *marioObj = m->marioObj;\n    struct Object *whirlpool = m->usedObj;\n\n    f32 dx = m->pos[0] - whirlpool->oPosX;\n    f32 dz = m->pos[2] - whirlpool->oPosZ;\n    f32 distance = sqrtf(dx * dx + dz * dz);\n\n    if ((marioObj->oMarioWhirlpoolPosY += m->vel[1]) < 0.0f) {\n        marioObj->oMarioWhirlpoolPosY = 0.0f;\n        if (distance < 16.1f && m->actionTimer++ == 16) {\n            level_trigger_warp(m, WARP_OP_DEATH);\n        }\n    }\n\n    if (distance <= 28.0f) {\n        newDistance = 16.0f;\n        angleChange = 0x1800;\n    } else if (distance < 256.0f) {\n        newDistance = distance - (12.0f - distance / 32.0f);\n        angleChange = (s16)(0x1C00 - distance * 20.0f);\n    } else {\n        newDistance = distance - 4.0f;\n        angleChange = 0x800;\n    }\n\n    m->vel[1] = -640.0f / (newDistance + 16.0f);\n\n    sinAngleChange = sins(angleChange);\n    cosAngleChange = coss(angleChange);\n\n    if (distance < 1.0f) {\n        dx = newDistance * sins(m->faceAngle[1]);\n        dz = newDistance * coss(m->faceAngle[1]);\n    } else {\n        dx *= newDistance / distance;\n        dz *= newDistance / distance;\n    }\n\n    m->pos[0] = whirlpool->oPosX + dx * cosAngleChange + dz * sinAngleChange;\n    m->pos[2] = whirlpool->oPosZ - dx * sinAngleChange + dz * cosAngleChange;\n    m->pos[1] = whirlpool->oPosY + marioObj->oMarioWhirlpoolPosY;\n\n    m->faceAngle[1] = atan2s(dz, dx) + 0x8000;\n\n    set_mario_animation(m, MARIO_ANIM_GENERAL_FALL);\n    vec3f_copy(m->marioObj->header.gfx.pos, m->pos);\n    vec3s_set(m->marioObj->header.gfx.angle, 0, m->faceAngle[1], 0);\n#if ENABLE_RUMBLE\n    reset_rumble_timers();\n#endif\n\n    return FALSE;\n}\n\nstatic void play_metal_water_jumping_sound(struct MarioState *m, u32 landing) {\n    if (!(m->flags & MARIO_ACTION_SOUND_PLAYED)) {\n        m->particleFlags |= PARTICLE_MIST_CIRCLE;\n    }\n\n    play_sound_if_no_flag(m, landing ? SOUND_ACTION_METAL_LAND_WATER : SOUND_ACTION_METAL_JUMP_WATER,\n                          MARIO_ACTION_SOUND_PLAYED);\n}\n\nstatic void play_metal_water_walking_sound(struct MarioState *m) {\n    if (is_anim_past_frame(m, 10) || is_anim_past_frame(m, 49)) {\n        play_sound(SOUND_ACTION_METAL_STEP_WATER, m->marioObj->header.gfx.cameraToObject);\n        m->particleFlags |= PARTICLE_DUST;\n    }\n}\n\nstatic void update_metal_water_walking_speed(struct MarioState *m) {\n    f32 val = m->intendedMag / 1.5f;\n\n    if (m->forwardVel <= 0.0f) {\n        m->forwardVel += 1.1f;\n    } else if (m->forwardVel <= val) {\n        m->forwardVel += 1.1f - m->forwardVel / 43.0f;\n    } else if (m->floor->normal.y >= 0.95f) {\n        m->forwardVel -= 1.0f;\n    }\n\n    if (m->forwardVel > 32.0f) {\n        m->forwardVel = 32.0f;\n    }\n\n    m->faceAngle[1] =\n        m->intendedYaw - approach_s32((s16)(m->intendedYaw - m->faceAngle[1]), 0, 0x800, 0x800);\n\n    m->slideVelX = m->forwardVel * sins(m->faceAngle[1]);\n    m->slideVelZ = m->forwardVel * coss(m->faceAngle[1]);\n\n    m->vel[0] = m->slideVelX;\n    m->vel[1] = 0.0f;\n    m->vel[2] = m->slideVelZ;\n}\n\nstatic s32 update_metal_water_jump_speed(struct MarioState *m) {\n    UNUSED f32 nextY = m->pos[1] + m->vel[1];\n    f32 waterSurface = m->waterLevel - 100;\n\n    if (m->vel[1] > 0.0f && m->pos[1] > waterSurface) {\n        return TRUE;\n    }\n\n    if (m->input & INPUT_NONZERO_ANALOG) {\n        s16 intendedDYaw = m->intendedYaw - m->faceAngle[1];\n        m->forwardVel += 0.8f * coss(intendedDYaw);\n        m->faceAngle[1] += 0x200 * sins(intendedDYaw);\n    } else {\n        m->forwardVel = approach_f32(m->forwardVel, 0.0f, 0.25f, 0.25f);\n    }\n\n    if (m->forwardVel > 16.0f) {\n        m->forwardVel -= 1.0f;\n    }\n\n    if (m->forwardVel < 0.0f) {\n        m->forwardVel += 2.0f;\n    }\n\n    m->vel[0] = m->slideVelX = m->forwardVel * sins(m->faceAngle[1]);\n    m->vel[2] = m->slideVelZ = m->forwardVel * coss(m->faceAngle[1]);\n    return FALSE;\n}\n\nstatic s32 act_metal_water_standing(struct MarioState *m) {\n    if (!(m->flags & MARIO_METAL_CAP)) {\n        return set_mario_action(m, ACT_WATER_IDLE, 0);\n    }\n\n    if (m->input & INPUT_A_PRESSED) {\n        return set_mario_action(m, ACT_METAL_WATER_JUMP, 0);\n    }\n\n    if (m->input & INPUT_NONZERO_ANALOG) {\n        return set_mario_action(m, ACT_METAL_WATER_WALKING, 0);\n    }\n\n    switch (m->actionState) {\n        case 0:\n            set_mario_animation(m, MARIO_ANIM_IDLE_HEAD_LEFT);\n            break;\n        case 1:\n            set_mario_animation(m, MARIO_ANIM_IDLE_HEAD_RIGHT);\n            break;\n        case 2:\n            set_mario_animation(m, MARIO_ANIM_IDLE_HEAD_CENTER);\n            break;\n    }\n\n    if (is_anim_at_end(m) && ++m->actionState == 3) {\n        m->actionState = 0;\n    }\n\n    stop_and_set_height_to_floor(m);\n    if (m->pos[1] >= m->waterLevel - 150) {\n        m->particleFlags |= PARTICLE_IDLE_WATER_WAVE;\n    }\n\n    return FALSE;\n}\n\nstatic s32 act_hold_metal_water_standing(struct MarioState *m) {\n    if (m->marioObj->oInteractStatus & INT_STATUS_MARIO_DROP_OBJECT) {\n        return drop_and_set_mario_action(m, ACT_METAL_WATER_STANDING, 0);\n    }\n\n    if (!(m->flags & MARIO_METAL_CAP)) {\n        return set_mario_action(m, ACT_HOLD_WATER_IDLE, 0);\n    }\n\n    if (m->input & INPUT_A_PRESSED) {\n        return set_mario_action(m, ACT_HOLD_METAL_WATER_JUMP, 0);\n    }\n\n    if (m->input & INPUT_NONZERO_ANALOG) {\n        return set_mario_action(m, ACT_HOLD_METAL_WATER_WALKING, 0);\n    }\n\n    stop_and_set_height_to_floor(m);\n    set_mario_animation(m, MARIO_ANIM_IDLE_WITH_LIGHT_OBJ);\n    return FALSE;\n}\n\nstatic s32 act_metal_water_walking(struct MarioState *m) {\n    s32 val04;\n\n    if (!(m->flags & MARIO_METAL_CAP)) {\n        return set_mario_action(m, ACT_WATER_IDLE, 0);\n    }\n\n    if (m->input & INPUT_FIRST_PERSON) {\n        return set_mario_action(m, ACT_METAL_WATER_STANDING, 0);\n    }\n\n    if (m->input & INPUT_A_PRESSED) {\n        return set_mario_action(m, ACT_METAL_WATER_JUMP, 0);\n    }\n\n    if (m->input & INPUT_UNKNOWN_5) {\n        return set_mario_action(m, ACT_METAL_WATER_STANDING, 0);\n    }\n\n    if ((val04 = (s32)(m->forwardVel / 4.0f * 0x10000)) < 0x1000) {\n        val04 = 0x1000;\n    }\n\n    set_mario_anim_with_accel(m, MARIO_ANIM_WALKING, val04);\n    play_metal_water_walking_sound(m);\n    update_metal_water_walking_speed(m);\n\n    switch (perform_ground_step(m)) {\n        case GROUND_STEP_LEFT_GROUND:\n            set_mario_action(m, ACT_METAL_WATER_FALLING, 1);\n            break;\n\n        case GROUND_STEP_HIT_WALL:\n            m->forwardVel = 0.0f;\n            break;\n    }\n\n    return FALSE;\n}\n\nstatic s32 act_hold_metal_water_walking(struct MarioState *m) {\n    s32 val04;\n\n    if (m->marioObj->oInteractStatus & INT_STATUS_MARIO_DROP_OBJECT) {\n        return drop_and_set_mario_action(m, ACT_METAL_WATER_WALKING, 0);\n    }\n\n    if (!(m->flags & MARIO_METAL_CAP)) {\n        return set_mario_action(m, ACT_HOLD_WATER_IDLE, 0);\n    }\n\n    if (m->input & INPUT_A_PRESSED) {\n        return set_mario_action(m, ACT_HOLD_METAL_WATER_JUMP, 0);\n    }\n\n    if (m->input & INPUT_UNKNOWN_5) {\n        return set_mario_action(m, ACT_HOLD_METAL_WATER_STANDING, 0);\n    }\n\n    m->intendedMag *= 0.4f;\n\n    if ((val04 = (s32)(m->forwardVel / 2.0f * 0x10000)) < 0x1000) {\n        val04 = 0x1000;\n    }\n\n    set_mario_anim_with_accel(m, MARIO_ANIM_RUN_WITH_LIGHT_OBJ, val04);\n    play_metal_water_walking_sound(m);\n    update_metal_water_walking_speed(m);\n\n    switch (perform_ground_step(m)) {\n        case GROUND_STEP_LEFT_GROUND:\n            set_mario_action(m, ACT_HOLD_METAL_WATER_FALLING, 1);\n            break;\n\n        case GROUND_STEP_HIT_WALL:\n            m->forwardVel = 0.0f;\n            break;\n    }\n\n    return FALSE;\n}\n\nstatic s32 act_metal_water_jump(struct MarioState *m) {\n    if (!(m->flags & MARIO_METAL_CAP)) {\n        return set_mario_action(m, ACT_WATER_IDLE, 0);\n    }\n\n    if (update_metal_water_jump_speed(m)) {\n        return set_mario_action(m, ACT_WATER_JUMP, 1);\n    }\n\n    play_metal_water_jumping_sound(m, FALSE);\n    set_mario_animation(m, MARIO_ANIM_SINGLE_JUMP);\n\n    switch (perform_air_step(m, 0)) {\n        case AIR_STEP_LANDED:\n            set_mario_action(m, ACT_METAL_WATER_JUMP_LAND, 0);\n            break;\n\n        case AIR_STEP_HIT_WALL:\n            m->forwardVel = 0.0f;\n            break;\n    }\n\n    return FALSE;\n}\n\nstatic s32 act_hold_metal_water_jump(struct MarioState *m) {\n    if (m->marioObj->oInteractStatus & INT_STATUS_MARIO_DROP_OBJECT) {\n        return drop_and_set_mario_action(m, ACT_METAL_WATER_FALLING, 0);\n    }\n\n    if (!(m->flags & MARIO_METAL_CAP)) {\n        return set_mario_action(m, ACT_HOLD_WATER_IDLE, 0);\n    }\n\n    if (update_metal_water_jump_speed(m)) {\n        return set_mario_action(m, ACT_HOLD_WATER_JUMP, 1);\n    }\n\n    play_metal_water_jumping_sound(m, FALSE);\n    set_mario_animation(m, MARIO_ANIM_JUMP_WITH_LIGHT_OBJ);\n\n    switch (perform_air_step(m, 0)) {\n        case AIR_STEP_LANDED:\n            set_mario_action(m, ACT_HOLD_METAL_WATER_JUMP_LAND, 0);\n            break;\n\n        case AIR_STEP_HIT_WALL:\n            m->forwardVel = 0.0f;\n            break;\n    }\n\n    return FALSE;\n}\n\nstatic s32 act_metal_water_falling(struct MarioState *m) {\n    if (!(m->flags & MARIO_METAL_CAP)) {\n        return set_mario_action(m, ACT_WATER_IDLE, 0);\n    }\n\n    if (m->input & INPUT_NONZERO_ANALOG) {\n        m->faceAngle[1] += 0x400 * sins(m->intendedYaw - m->faceAngle[1]);\n    }\n\n    set_mario_animation(m, m->actionArg == 0 ? MARIO_ANIM_GENERAL_FALL : MARIO_ANIM_FALL_FROM_WATER);\n    stationary_slow_down(m);\n\n    if (perform_water_step(m) & WATER_STEP_HIT_FLOOR) { // hit floor or cancelled\n        set_mario_action(m, ACT_METAL_WATER_FALL_LAND, 0);\n    }\n\n    return FALSE;\n}\n\nstatic s32 act_hold_metal_water_falling(struct MarioState *m) {\n    if (m->marioObj->oInteractStatus & INT_STATUS_MARIO_DROP_OBJECT) {\n        return drop_and_set_mario_action(m, ACT_METAL_WATER_FALLING, 0);\n    }\n\n    if (!(m->flags & MARIO_METAL_CAP)) {\n        return set_mario_action(m, ACT_HOLD_WATER_IDLE, 0);\n    }\n\n    if (m->input & INPUT_NONZERO_ANALOG) {\n        m->faceAngle[1] += 0x400 * sins(m->intendedYaw - m->faceAngle[1]);\n    }\n\n    set_mario_animation(m, MARIO_ANIM_FALL_WITH_LIGHT_OBJ);\n    stationary_slow_down(m);\n\n    if (perform_water_step(m) & WATER_STEP_HIT_FLOOR) { // hit floor or cancelled\n        set_mario_action(m, ACT_HOLD_METAL_WATER_FALL_LAND, 0);\n    }\n\n    return FALSE;\n}\n\nstatic s32 act_metal_water_jump_land(struct MarioState *m) {\n    play_metal_water_jumping_sound(m, TRUE);\n\n    if (!(m->flags & MARIO_METAL_CAP)) {\n        return set_mario_action(m, ACT_WATER_IDLE, 0);\n    }\n\n    if (m->input & INPUT_NONZERO_ANALOG) {\n        return set_mario_action(m, ACT_METAL_WATER_WALKING, 0);\n    }\n\n    stop_and_set_height_to_floor(m);\n    set_mario_animation(m, MARIO_ANIM_LAND_FROM_SINGLE_JUMP);\n\n    if (is_anim_at_end(m)) {\n        return set_mario_action(m, ACT_METAL_WATER_STANDING, 0);\n    }\n\n    return FALSE;\n}\n\nstatic s32 act_hold_metal_water_jump_land(struct MarioState *m) {\n    play_metal_water_jumping_sound(m, TRUE);\n\n    if (m->marioObj->oInteractStatus & INT_STATUS_MARIO_DROP_OBJECT) {\n        return drop_and_set_mario_action(m, ACT_METAL_WATER_STANDING, 0);\n    }\n\n    if (!(m->flags & MARIO_METAL_CAP)) {\n        return set_mario_action(m, ACT_HOLD_WATER_IDLE, 0);\n    }\n\n    if (m->input & INPUT_NONZERO_ANALOG) {\n        return set_mario_action(m, ACT_HOLD_METAL_WATER_WALKING, 0);\n    }\n\n    stop_and_set_height_to_floor(m);\n    set_mario_animation(m, MARIO_ANIM_JUMP_LAND_WITH_LIGHT_OBJ);\n\n    if (is_anim_at_end(m)) {\n        return set_mario_action(m, ACT_HOLD_METAL_WATER_STANDING, 0);\n    }\n\n    return FALSE;\n}\n\nstatic s32 act_metal_water_fall_land(struct MarioState *m) {\n    play_metal_water_jumping_sound(m, TRUE);\n\n    if (!(m->flags & MARIO_METAL_CAP)) {\n        return set_mario_action(m, ACT_WATER_IDLE, 0);\n    }\n\n    if (m->input & INPUT_NONZERO_ANALOG) {\n        return set_mario_action(m, ACT_METAL_WATER_WALKING, 0);\n    }\n\n    stop_and_set_height_to_floor(m);\n    set_mario_animation(m, MARIO_ANIM_GENERAL_LAND);\n\n    if (is_anim_at_end(m)) {\n        return set_mario_action(m, ACT_METAL_WATER_STANDING, 0);\n    }\n\n    return FALSE;\n}\n\nstatic s32 act_hold_metal_water_fall_land(struct MarioState *m) {\n    play_metal_water_jumping_sound(m, TRUE);\n\n    if (m->marioObj->oInteractStatus & INT_STATUS_MARIO_DROP_OBJECT) {\n        return drop_and_set_mario_action(m, ACT_METAL_WATER_STANDING, 0);\n    }\n\n    if (!(m->flags & MARIO_METAL_CAP)) {\n        return set_mario_action(m, ACT_HOLD_WATER_IDLE, 0);\n    }\n\n    if (m->input & INPUT_NONZERO_ANALOG) {\n        return set_mario_action(m, ACT_HOLD_METAL_WATER_WALKING, 0);\n    }\n\n    stop_and_set_height_to_floor(m);\n    set_mario_animation(m, MARIO_ANIM_FALL_LAND_WITH_LIGHT_OBJ);\n\n    if (is_anim_at_end(m)) {\n        return set_mario_action(m, ACT_HOLD_METAL_WATER_STANDING, 0);\n    }\n\n    return FALSE;\n}\n\nstatic s32 check_common_submerged_cancels(struct MarioState *m) {\n    if (m->pos[1] > m->waterLevel - 80) {\n        if (m->waterLevel - 80 > m->floorHeight) {\n            m->pos[1] = m->waterLevel - 80;\n        } else {\n            //! If you press B to throw the shell, there is a ~5 frame window\n            // where your held object is the shell, but you are not in the\n            // water shell swimming action. This allows you to hold the water\n            // shell on land (used for cloning in DDD).\n            if (m->action == ACT_WATER_SHELL_SWIMMING && m->heldObj != NULL) {\n                m->heldObj->oInteractStatus = INT_STATUS_STOP_RIDING;\n                m->heldObj = NULL;\n                stop_shell_music();\n            }\n\n            return transition_submerged_to_walking(m);\n        }\n    }\n\n    if (m->health < 0x100 && !(m->action & (ACT_FLAG_INTANGIBLE | ACT_FLAG_INVULNERABLE))) {\n        set_mario_action(m, ACT_DROWNING, 0);\n    }\n\n    return FALSE;\n}\n\ns32 mario_execute_submerged_action(struct MarioState *m) {\n    s32 cancel;\n\n    if (check_common_submerged_cancels(m)) {\n        return TRUE;\n    }\n\n    m->quicksandDepth = 0.0f;\n\n    m->marioBodyState->headAngle[1] = 0;\n    m->marioBodyState->headAngle[2] = 0;\n\n    /* clang-format off */\n    switch (m->action) {\n        case ACT_WATER_IDLE:                 cancel = act_water_idle(m);                 break;\n        case ACT_HOLD_WATER_IDLE:            cancel = act_hold_water_idle(m);            break;\n        case ACT_WATER_ACTION_END:           cancel = act_water_action_end(m);           break;\n        case ACT_HOLD_WATER_ACTION_END:      cancel = act_hold_water_action_end(m);      break;\n        case ACT_DROWNING:                   cancel = act_drowning(m);                   break;\n        case ACT_BACKWARD_WATER_KB:          cancel = act_backward_water_kb(m);          break;\n        case ACT_FORWARD_WATER_KB:           cancel = act_forward_water_kb(m);           break;\n        case ACT_WATER_DEATH:                cancel = act_water_death(m);                break;\n        case ACT_WATER_SHOCKED:              cancel = act_water_shocked(m);              break;\n        case ACT_BREASTSTROKE:               cancel = act_breaststroke(m);               break;\n        case ACT_SWIMMING_END:               cancel = act_swimming_end(m);               break;\n        case ACT_FLUTTER_KICK:               cancel = act_flutter_kick(m);               break;\n        case ACT_HOLD_BREASTSTROKE:          cancel = act_hold_breaststroke(m);          break;\n        case ACT_HOLD_SWIMMING_END:          cancel = act_hold_swimming_end(m);          break;\n        case ACT_HOLD_FLUTTER_KICK:          cancel = act_hold_flutter_kick(m);          break;\n        case ACT_WATER_SHELL_SWIMMING:       cancel = act_water_shell_swimming(m);       break;\n        case ACT_WATER_THROW:                cancel = act_water_throw(m);                break;\n        case ACT_WATER_PUNCH:                cancel = act_water_punch(m);                break;\n        case ACT_WATER_PLUNGE:               cancel = act_water_plunge(m);               break;\n        case ACT_CAUGHT_IN_WHIRLPOOL:        cancel = act_caught_in_whirlpool(m);        break;\n        case ACT_METAL_WATER_STANDING:       cancel = act_metal_water_standing(m);       break;\n        case ACT_METAL_WATER_WALKING:        cancel = act_metal_water_walking(m);        break;\n        case ACT_METAL_WATER_FALLING:        cancel = act_metal_water_falling(m);        break;\n        case ACT_METAL_WATER_FALL_LAND:      cancel = act_metal_water_fall_land(m);      break;\n        case ACT_METAL_WATER_JUMP:           cancel = act_metal_water_jump(m);           break;\n        case ACT_METAL_WATER_JUMP_LAND:      cancel = act_metal_water_jump_land(m);      break;\n        case ACT_HOLD_METAL_WATER_STANDING:  cancel = act_hold_metal_water_standing(m);  break;\n        case ACT_HOLD_METAL_WATER_WALKING:   cancel = act_hold_metal_water_walking(m);   break;\n        case ACT_HOLD_METAL_WATER_FALLING:   cancel = act_hold_metal_water_falling(m);   break;\n        case ACT_HOLD_METAL_WATER_FALL_LAND: cancel = act_hold_metal_water_fall_land(m); break;\n        case ACT_HOLD_METAL_WATER_JUMP:      cancel = act_hold_metal_water_jump(m);      break;\n        case ACT_HOLD_METAL_WATER_JUMP_LAND: cancel = act_hold_metal_water_jump_land(m); break;\n    }\n    /* clang-format on */\n\n    return cancel;\n}\n"
  },
  {
    "path": "src/game/mario_actions_submerged.h",
    "content": "#ifndef MARIO_ACTIONS_SUBMERGED_H\n#define MARIO_ACTIONS_SUBMERGED_H\n\n#include <PR/ultratypes.h>\n\n#include \"types.h\"\n\ns32 mario_execute_submerged_action(struct MarioState *m);\n\n#endif // MARIO_ACTIONS_SUBMERGED_H\n"
  },
  {
    "path": "src/game/mario_misc.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"sm64.h\"\n#include \"area.h\"\n#include \"audio/external.h\"\n#include \"behavior_actions.h\"\n#include \"behavior_data.h\"\n#include \"camera.h\"\n#include \"dialog_ids.h\"\n#include \"engine/behavior_script.h\"\n#include \"engine/graph_node.h\"\n#include \"engine/math_util.h\"\n#include \"envfx_snow.h\"\n#include \"game_init.h\"\n#include \"goddard/renderer.h\"\n#include \"interaction.h\"\n#include \"level_update.h\"\n#include \"mario_actions_cutscene.h\"\n#include \"mario_misc.h\"\n#include \"memory.h\"\n#include \"object_helpers.h\"\n#include \"object_list_processor.h\"\n#include \"rendering_graph_node.h\"\n#include \"save_file.h\"\n#include \"skybox.h\"\n#include \"sound_init.h\"\n\n#define TOAD_STAR_1_REQUIREMENT 12\n#define TOAD_STAR_2_REQUIREMENT 25\n#define TOAD_STAR_3_REQUIREMENT 35\n\n#define TOAD_STAR_1_DIALOG DIALOG_082\n#define TOAD_STAR_2_DIALOG DIALOG_076\n#define TOAD_STAR_3_DIALOG DIALOG_083\n\n#define TOAD_STAR_1_DIALOG_AFTER DIALOG_154\n#define TOAD_STAR_2_DIALOG_AFTER DIALOG_155\n#define TOAD_STAR_3_DIALOG_AFTER DIALOG_156\n\nenum ToadMessageStates {\n    TOAD_MESSAGE_FADED,\n    TOAD_MESSAGE_OPAQUE,\n    TOAD_MESSAGE_OPACIFYING,\n    TOAD_MESSAGE_FADING,\n    TOAD_MESSAGE_TALKING\n};\n\nenum UnlockDoorStarStates {\n    UNLOCK_DOOR_STAR_RISING,\n    UNLOCK_DOOR_STAR_WAITING,\n    UNLOCK_DOOR_STAR_SPAWNING_PARTICLES,\n    UNLOCK_DOOR_STAR_DONE\n};\n\n/**\n * The eye texture on succesive frames of Mario's blink animation.\n * He intentionally blinks twice each time.\n */\nstatic s8 gMarioBlinkAnimation[7] = { 1, 2, 1, 0, 1, 2, 1 };\n\n/**\n * The scale values per frame for Mario's foot/hand for his attack animation\n * There are 3 scale animations in groups of 6 frames.\n * The first animation starts at frame index 3 and goes down, the others start at frame index 5.\n * The values get divided by 10 before assigning, so e.g. 12 gives a scale factor 1.2.\n * All combined, this means e.g. the first animation scales Mario's fist by {2.4, 1.6, 1.2, 1.0} on\n * successive frames.\n */\nstatic s8 gMarioAttackScaleAnimation[3 * 6] = {\n    10, 12, 16, 24, 10, 10, 10, 14, 20, 30, 10, 10, 10, 16, 20, 26, 26, 20,\n};\n\nstruct MarioBodyState gBodyStates[2]; // 2nd is never accessed in practice, most likely Luigi related\nstruct GraphNodeObject gMirrorMario;  // copy of Mario's geo node for drawing mirror Mario\n\n// This whole file is weirdly organized. It has to be the same file due\n// to rodata boundaries and function aligns, which means the programmer\n// treated this like a \"misc\" file for vaguely Mario related things\n// (message NPC related things, the Mario head geo, and Mario geo\n// functions)\n\n/**\n * Geo node script that draws Mario's head on the title screen.\n */\nGfx *geo_draw_mario_head_goddard(s32 callContext, struct GraphNode *node, Mat4 *c) {\n    Gfx *gfx = NULL;\n    s16 sfx = 0;\n    struct GraphNodeGenerated *asGenerated = (struct GraphNodeGenerated *) node;\n    UNUSED Mat4 *transform = c;\n\n    if (callContext == GEO_CONTEXT_RENDER) {\n        if (gPlayer1Controller->controllerData != NULL && !gWarpTransition.isActive) {\n            gd_copy_p1_contpad(gPlayer1Controller->controllerData);\n        }\n        gfx = (Gfx *) PHYSICAL_TO_VIRTUAL(gdm_gettestdl(asGenerated->parameter));\n        gGoddardVblankCallback = gd_vblank;\n        sfx = gd_sfx_to_play();\n        play_menu_sounds(sfx);\n    }\n    return gfx;\n}\n\nstatic void toad_message_faded(void) {\n    if (gCurrentObject->oDistanceToMario > 700.0f) {\n        gCurrentObject->oToadMessageRecentlyTalked = FALSE;\n    }\n    if (!gCurrentObject->oToadMessageRecentlyTalked && gCurrentObject->oDistanceToMario < 600.0f) {\n        gCurrentObject->oToadMessageState = TOAD_MESSAGE_OPACIFYING;\n    }\n}\n\nstatic void toad_message_opaque(void) {\n    if (gCurrentObject->oDistanceToMario > 700.0f) {\n        gCurrentObject->oToadMessageState = TOAD_MESSAGE_FADING;\n    } else if (!gCurrentObject->oToadMessageRecentlyTalked) {\n        gCurrentObject->oInteractionSubtype = INT_SUBTYPE_NPC;\n        if (gCurrentObject->oInteractStatus & INT_STATUS_INTERACTED) {\n            gCurrentObject->oInteractStatus = 0;\n            gCurrentObject->oToadMessageState = TOAD_MESSAGE_TALKING;\n            play_toads_jingle();\n        }\n    }\n}\n\nstatic void toad_message_talking(void) {\n    if (cur_obj_update_dialog_with_cutscene(MARIO_DIALOG_LOOK_DOWN,\n        DIALOG_FLAG_TURN_TO_MARIO, CUTSCENE_DIALOG, gCurrentObject->oToadMessageDialogID)) {\n        gCurrentObject->oToadMessageRecentlyTalked = TRUE;\n        gCurrentObject->oToadMessageState = TOAD_MESSAGE_FADING;\n        switch (gCurrentObject->oToadMessageDialogID) {\n            case TOAD_STAR_1_DIALOG:\n                gCurrentObject->oToadMessageDialogID = TOAD_STAR_1_DIALOG_AFTER;\n                bhv_spawn_star_no_level_exit(STAR_INDEX_ACT_1);\n                break;\n            case TOAD_STAR_2_DIALOG:\n                gCurrentObject->oToadMessageDialogID = TOAD_STAR_2_DIALOG_AFTER;\n                bhv_spawn_star_no_level_exit(STAR_INDEX_ACT_2);\n                break;\n            case TOAD_STAR_3_DIALOG:\n                gCurrentObject->oToadMessageDialogID = TOAD_STAR_3_DIALOG_AFTER;\n                bhv_spawn_star_no_level_exit(STAR_INDEX_ACT_3);\n                break;\n        }\n    }\n}\n\nstatic void toad_message_opacifying(void) {\n    if ((gCurrentObject->oOpacity += 6) == 255) {\n        gCurrentObject->oToadMessageState = TOAD_MESSAGE_OPAQUE;\n    }\n}\n\nstatic void toad_message_fading(void) {\n    if ((gCurrentObject->oOpacity -= 6) == 81) {\n        gCurrentObject->oToadMessageState = TOAD_MESSAGE_FADED;\n    }\n}\n\nvoid bhv_toad_message_loop(void) {\n    if (gCurrentObject->header.gfx.node.flags & GRAPH_RENDER_ACTIVE) {\n        gCurrentObject->oInteractionSubtype = 0;\n        switch (gCurrentObject->oToadMessageState) {\n            case TOAD_MESSAGE_FADED:\n                toad_message_faded();\n                break;\n            case TOAD_MESSAGE_OPAQUE:\n                toad_message_opaque();\n                break;\n            case TOAD_MESSAGE_OPACIFYING:\n                toad_message_opacifying();\n                break;\n            case TOAD_MESSAGE_FADING:\n                toad_message_fading();\n                break;\n            case TOAD_MESSAGE_TALKING:\n                toad_message_talking();\n                break;\n        }\n    }\n}\n\nvoid bhv_toad_message_init(void) {\n    s32 saveFlags = save_file_get_flags();\n    s32 starCount = save_file_get_total_star_count(gCurrSaveFileNum - 1, COURSE_MIN - 1, COURSE_MAX - 1);\n    s32 dialogID = (gCurrentObject->oBhvParams >> 24) & 0xFF;\n    s32 enoughStars = TRUE;\n\n    switch (dialogID) {\n        case TOAD_STAR_1_DIALOG:\n            enoughStars = (starCount >= TOAD_STAR_1_REQUIREMENT);\n            if (saveFlags & SAVE_FLAG_COLLECTED_TOAD_STAR_1) {\n                dialogID = TOAD_STAR_1_DIALOG_AFTER;\n            }\n            break;\n        case TOAD_STAR_2_DIALOG:\n            enoughStars = (starCount >= TOAD_STAR_2_REQUIREMENT);\n            if (saveFlags & SAVE_FLAG_COLLECTED_TOAD_STAR_2) {\n                dialogID = TOAD_STAR_2_DIALOG_AFTER;\n            }\n            break;\n        case TOAD_STAR_3_DIALOG:\n            enoughStars = (starCount >= TOAD_STAR_3_REQUIREMENT);\n            if (saveFlags & SAVE_FLAG_COLLECTED_TOAD_STAR_3) {\n                dialogID = TOAD_STAR_3_DIALOG_AFTER;\n            }\n            break;\n    }\n\n    if (enoughStars) {\n        gCurrentObject->oToadMessageDialogID = dialogID;\n        gCurrentObject->oToadMessageRecentlyTalked = FALSE;\n        gCurrentObject->oToadMessageState = TOAD_MESSAGE_FADED;\n        gCurrentObject->oOpacity = 81;\n    } else {\n        obj_mark_for_deletion(gCurrentObject);\n    }\n}\n\nstatic void star_door_unlock_spawn_particles(s16 angleOffset) {\n    struct Object *sparkleParticle = spawn_object(gCurrentObject, 0, bhvSparkleSpawn);\n\n    sparkleParticle->oPosX +=\n        100.0f * sins((gCurrentObject->oUnlockDoorStarTimer * 0x2800) + angleOffset);\n    sparkleParticle->oPosZ +=\n        100.0f * coss((gCurrentObject->oUnlockDoorStarTimer * 0x2800) + angleOffset);\n    // Particles are spawned lower each frame\n    sparkleParticle->oPosY -= gCurrentObject->oUnlockDoorStarTimer * 10.0f;\n}\n\nvoid bhv_unlock_door_star_init(void) {\n    gCurrentObject->oUnlockDoorStarState = UNLOCK_DOOR_STAR_RISING;\n    gCurrentObject->oUnlockDoorStarTimer = 0;\n    gCurrentObject->oUnlockDoorStarYawVel = 0x1000;\n    gCurrentObject->oPosX += 30.0f * sins(gMarioState->faceAngle[1] - 0x4000);\n    gCurrentObject->oPosY += 160.0f;\n    gCurrentObject->oPosZ += 30.0f * coss(gMarioState->faceAngle[1] - 0x4000);\n    gCurrentObject->oMoveAngleYaw = 0x7800;\n    obj_scale(gCurrentObject, 0.5f);\n}\n\nvoid bhv_unlock_door_star_loop(void) {\n    UNUSED u8 filler1[4];\n    s16 prevYaw = gCurrentObject->oMoveAngleYaw;\n    UNUSED u8 filler2[4];\n\n    // Speed up the star every frame\n    if (gCurrentObject->oUnlockDoorStarYawVel < 0x2400) {\n        gCurrentObject->oUnlockDoorStarYawVel += 0x60;\n    }\n    switch (gCurrentObject->oUnlockDoorStarState) {\n        case UNLOCK_DOOR_STAR_RISING:\n            gCurrentObject->oPosY += 3.4f; // Raise the star up in the air\n            gCurrentObject->oMoveAngleYaw +=\n                gCurrentObject->oUnlockDoorStarYawVel; // Apply yaw velocity\n            obj_scale(gCurrentObject, gCurrentObject->oUnlockDoorStarTimer / 50.0f\n                                             + 0.5f); // Scale the star to be bigger\n            if (++gCurrentObject->oUnlockDoorStarTimer == 30) {\n                gCurrentObject->oUnlockDoorStarTimer = 0;\n                gCurrentObject->oUnlockDoorStarState++; // Sets state to UNLOCK_DOOR_STAR_WAITING\n            }\n            break;\n        case UNLOCK_DOOR_STAR_WAITING:\n            gCurrentObject->oMoveAngleYaw +=\n                gCurrentObject->oUnlockDoorStarYawVel; // Apply yaw velocity\n            if (++gCurrentObject->oUnlockDoorStarTimer == 30) {\n                play_sound(SOUND_MENU_STAR_SOUND,\n                           gCurrentObject->header.gfx.cameraToObject); // Play final sound\n                cur_obj_hide();                                            // Hide the object\n                gCurrentObject->oUnlockDoorStarTimer = 0;\n                gCurrentObject\n                    ->oUnlockDoorStarState++; // Sets state to UNLOCK_DOOR_STAR_SPAWNING_PARTICLES\n            }\n            break;\n        case UNLOCK_DOOR_STAR_SPAWNING_PARTICLES:\n            // Spawn two particles, opposite sides of the star.\n            star_door_unlock_spawn_particles(0);\n            star_door_unlock_spawn_particles(0x8000);\n            if (gCurrentObject->oUnlockDoorStarTimer++ == 20) {\n                gCurrentObject->oUnlockDoorStarTimer = 0;\n                gCurrentObject->oUnlockDoorStarState++; // Sets state to UNLOCK_DOOR_STAR_DONE\n            }\n            break;\n        case UNLOCK_DOOR_STAR_DONE: // The object stays loaded for an additional 50 frames so that the\n                                    // sound doesn't immediately stop.\n            if (gCurrentObject->oUnlockDoorStarTimer++ == 50) {\n                obj_mark_for_deletion(gCurrentObject);\n            }\n            break;\n    }\n    // Checks if the angle has cycled back to 0.\n    // This means that the code will execute when the star completes a full revolution.\n    if (prevYaw > (s16) gCurrentObject->oMoveAngleYaw) {\n        play_sound(\n            SOUND_GENERAL_SHORT_STAR,\n            gCurrentObject->header.gfx.cameraToObject); // Play a sound every time the star spins once\n    }\n}\n\n/**\n * Generate a display list that sets the correct blend mode and color for mirror Mario.\n */\nstatic Gfx *make_gfx_mario_alpha(struct GraphNodeGenerated *node, s16 alpha) {\n    Gfx *gfx;\n    Gfx *gfxHead = NULL;\n\n    if (alpha == 255) {\n        node->fnNode.node.flags = (node->fnNode.node.flags & 0xFF) | (LAYER_OPAQUE << 8);\n        gfxHead = alloc_display_list(2 * sizeof(*gfxHead));\n        gfx = gfxHead;\n    } else {\n        node->fnNode.node.flags = (node->fnNode.node.flags & 0xFF) | (LAYER_TRANSPARENT << 8);\n        gfxHead = alloc_display_list(3 * sizeof(*gfxHead));\n        gfx = gfxHead;\n        gDPSetAlphaCompare(gfx++, G_AC_DITHER);\n    }\n    gDPSetEnvColor(gfx++, 255, 255, 255, alpha);\n    gSPEndDisplayList(gfx);\n    return gfxHead;\n}\n\n/**\n * Sets the correct blend mode and color for mirror Mario.\n */\nGfx *geo_mirror_mario_set_alpha(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c) {\n    UNUSED u8 filler1[4];\n    Gfx *gfx = NULL;\n    struct GraphNodeGenerated *asGenerated = (struct GraphNodeGenerated *) node;\n    struct MarioBodyState *bodyState = &gBodyStates[asGenerated->parameter];\n    s16 alpha;\n    UNUSED u8 filler2[4];\n\n    if (callContext == GEO_CONTEXT_RENDER) {\n        alpha = (bodyState->modelState & 0x100) ? (bodyState->modelState & 0xFF) : 255;\n        gfx = make_gfx_mario_alpha(asGenerated, alpha);\n    }\n    return gfx;\n}\n\n/**\n * Determines if Mario is standing or running for the level of detail of his model.\n * If Mario is standing still, he is always high poly. If he is running,\n * his level of detail depends on the distance to the camera.\n */\nGfx *geo_switch_mario_stand_run(s32 callContext, struct GraphNode *node, UNUSED Mat4 *mtx) {\n    struct GraphNodeSwitchCase *switchCase = (struct GraphNodeSwitchCase *) node;\n    struct MarioBodyState *bodyState = &gBodyStates[switchCase->numCases];\n\n    if (callContext == GEO_CONTEXT_RENDER) {\n        // assign result. 0 if moving, 1 if stationary.\n        switchCase->selectedCase = ((bodyState->action & ACT_FLAG_STATIONARY) == 0);\n    }\n    return NULL;\n}\n\n/**\n * Geo node script that makes Mario blink\n */\nGfx *geo_switch_mario_eyes(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c) {\n    struct GraphNodeSwitchCase *switchCase = (struct GraphNodeSwitchCase *) node;\n    struct MarioBodyState *bodyState = &gBodyStates[switchCase->numCases];\n    s16 blinkFrame;\n\n    if (callContext == GEO_CONTEXT_RENDER) {\n        if (bodyState->eyeState == 0) {\n            blinkFrame = ((switchCase->numCases * 32 + gAreaUpdateCounter) >> 1) & 0x1F;\n            if (blinkFrame < 7) {\n                switchCase->selectedCase = gMarioBlinkAnimation[blinkFrame];\n            } else {\n                switchCase->selectedCase = 0;\n            }\n        } else {\n            switchCase->selectedCase = bodyState->eyeState - 1;\n        }\n    }\n    return NULL;\n}\n\n/**\n * Makes Mario's upper body tilt depending on the rotation stored in his bodyState\n */\nGfx *geo_mario_tilt_torso(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c) {\n    struct GraphNodeGenerated *asGenerated = (struct GraphNodeGenerated *) node;\n    struct MarioBodyState *bodyState = &gBodyStates[asGenerated->parameter];\n    s32 action = bodyState->action;\n\n    if (callContext == GEO_CONTEXT_RENDER) {\n        struct GraphNodeRotation *rotNode = (struct GraphNodeRotation *) node->next;\n\n        if (action != ACT_BUTT_SLIDE && action != ACT_HOLD_BUTT_SLIDE && action != ACT_WALKING\n            && action != ACT_RIDING_SHELL_GROUND) {\n            vec3s_copy(bodyState->torsoAngle, gVec3sZero);\n        }\n        rotNode->rotation[0] = bodyState->torsoAngle[1];\n        rotNode->rotation[1] = bodyState->torsoAngle[2];\n        rotNode->rotation[2] = bodyState->torsoAngle[0];\n    }\n    return NULL;\n}\n\n/**\n * Makes Mario's head rotate with the camera angle when in C-up mode\n */\nGfx *geo_mario_head_rotation(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c) {\n    struct GraphNodeGenerated *asGenerated = (struct GraphNodeGenerated *) node;\n    struct MarioBodyState *bodyState = &gBodyStates[asGenerated->parameter];\n    s32 action = bodyState->action;\n\n    if (callContext == GEO_CONTEXT_RENDER) {\n        struct GraphNodeRotation *rotNode = (struct GraphNodeRotation *) node->next;\n        struct Camera *camera = gCurGraphNodeCamera->config.camera;\n\n        if (camera->mode == CAMERA_MODE_C_UP) {\n            rotNode->rotation[0] = gPlayerCameraState->headRotation[1];\n            rotNode->rotation[2] = gPlayerCameraState->headRotation[0];\n        } else if (action & ACT_FLAG_WATER_OR_TEXT) {\n            rotNode->rotation[0] = bodyState->headAngle[1];\n            rotNode->rotation[1] = bodyState->headAngle[2];\n            rotNode->rotation[2] = bodyState->headAngle[0];\n        } else {\n            vec3s_set(bodyState->headAngle, 0, 0, 0);\n            vec3s_set(rotNode->rotation, 0, 0, 0);\n        }\n    }\n    return NULL;\n}\n\n/**\n * Switch between hand models.\n * Possible options are described in the MarioHandGSCId enum.\n */\nGfx *geo_switch_mario_hand(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c) {\n    struct GraphNodeSwitchCase *switchCase = (struct GraphNodeSwitchCase *) node;\n    struct MarioBodyState *bodyState = &gBodyStates[0];\n\n    if (callContext == GEO_CONTEXT_RENDER) {\n        if (bodyState->handState == MARIO_HAND_FISTS) {\n            // switch between fists (0) and open (1)\n            switchCase->selectedCase = ((bodyState->action & ACT_FLAG_SWIMMING_OR_FLYING) != 0);\n        } else {\n            if (switchCase->numCases == 0) {\n                switchCase->selectedCase =\n                    (bodyState->handState < 5) ? bodyState->handState : MARIO_HAND_OPEN;\n            } else {\n                switchCase->selectedCase =\n                    (bodyState->handState < 2) ? bodyState->handState : MARIO_HAND_FISTS;\n            }\n        }\n    }\n    return NULL;\n}\n\n/**\n * Increase Mario's hand / foot size when he punches / kicks.\n * Since animation geo nodes only support rotation, this scaling animation\n * was scripted separately. The node with this script should be placed before\n * a scaling node containing the hand / foot geo layout.\n * ! Since the animation gets updated in GEO_CONTEXT_RENDER, drawing Mario multiple times\n * (such as in the mirror room) results in a faster and desynced punch / kick animation.\n */\nGfx *geo_mario_hand_foot_scaler(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c) {\n    static s16 sMarioAttackAnimCounter = 0;\n    struct GraphNodeGenerated *asGenerated = (struct GraphNodeGenerated *) node;\n    struct GraphNodeScale *scaleNode = (struct GraphNodeScale *) node->next;\n    struct MarioBodyState *bodyState = &gBodyStates[0];\n\n    if (callContext == GEO_CONTEXT_RENDER) {\n        scaleNode->scale = 1.0f;\n        if (asGenerated->parameter == bodyState->punchState >> 6) {\n            if (sMarioAttackAnimCounter != gAreaUpdateCounter && (bodyState->punchState & 0x3F) > 0) {\n                bodyState->punchState -= 1;\n                sMarioAttackAnimCounter = gAreaUpdateCounter;\n            }\n            scaleNode->scale =\n                gMarioAttackScaleAnimation[asGenerated->parameter * 6 + (bodyState->punchState & 0x3F)]\n                / 10.0f;\n        }\n    }\n    return NULL;\n}\n\n/**\n * Switch between normal cap, wing cap, vanish cap and metal cap.\n */\nGfx *geo_switch_mario_cap_effect(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c) {\n    struct GraphNodeSwitchCase *switchCase = (struct GraphNodeSwitchCase *) node;\n    struct MarioBodyState *bodyState = &gBodyStates[switchCase->numCases];\n\n    if (callContext == GEO_CONTEXT_RENDER) {\n        switchCase->selectedCase = bodyState->modelState >> 8;\n    }\n    return NULL;\n}\n\n/**\n * Determine whether Mario's head is drawn with or without a cap on.\n * Also sets the visibility of the wing cap wings on or off.\n */\nGfx *geo_switch_mario_cap_on_off(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c) {\n    struct GraphNode *next = node->next;\n    struct GraphNodeSwitchCase *switchCase = (struct GraphNodeSwitchCase *) node;\n    struct MarioBodyState *bodyState = &gBodyStates[switchCase->numCases];\n\n    if (callContext == GEO_CONTEXT_RENDER) {\n        switchCase->selectedCase = bodyState->capState & 1;\n        while (next != node) {\n            if (next->type == GRAPH_NODE_TYPE_TRANSLATION_ROTATION) {\n                if (bodyState->capState & 2) {\n                    next->flags |= GRAPH_RENDER_ACTIVE;\n                } else {\n                    next->flags &= ~GRAPH_RENDER_ACTIVE;\n                }\n            }\n            next = next->next;\n        }\n    }\n    return NULL;\n}\n\n/**\n * Geo node script that makes the wings on Mario's wing cap flap.\n * Should be placed before a rotation node.\n */\nGfx *geo_mario_rotate_wing_cap_wings(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c) {\n    s16 rotX;\n    struct GraphNodeGenerated *asGenerated = (struct GraphNodeGenerated *) node;\n\n    if (callContext == GEO_CONTEXT_RENDER) {\n        struct GraphNodeRotation *rotNode = (struct GraphNodeRotation *) node->next;\n\n        if (!gBodyStates[asGenerated->parameter >> 1].wingFlutter) {\n            rotX = (coss((gAreaUpdateCounter & 0xF) << 12) + 1.0f) * 4096.0f;\n        } else {\n            rotX = (coss((gAreaUpdateCounter & 7) << 13) + 1.0f) * 6144.0f;\n        }\n        if (!(asGenerated->parameter & 1)) {\n            rotNode->rotation[0] = -rotX;\n        } else {\n            rotNode->rotation[0] = rotX;\n        }\n    }\n    return NULL;\n}\n\n/**\n * Geo node that updates the held object node and the HOLP.\n */\nGfx *geo_switch_mario_hand_grab_pos(s32 callContext, struct GraphNode *b, Mat4 *mtx) {\n    struct GraphNodeHeldObject *asHeldObj = (struct GraphNodeHeldObject *) b;\n    Mat4 *curTransform = mtx;\n    struct MarioState *marioState = &gMarioStates[asHeldObj->playerIndex];\n\n    if (callContext == GEO_CONTEXT_RENDER) {\n        asHeldObj->objNode = NULL;\n        if (marioState->heldObj != NULL) {\n            asHeldObj->objNode = marioState->heldObj;\n            switch (marioState->marioBodyState->grabPos) {\n                case GRAB_POS_LIGHT_OBJ:\n                    if (marioState->action & ACT_FLAG_THROWING) {\n                        vec3s_set(asHeldObj->translation, 50, 0, 0);\n                    } else {\n                        vec3s_set(asHeldObj->translation, 50, 0, 110);\n                    }\n                    break;\n                case GRAB_POS_HEAVY_OBJ:\n                    vec3s_set(asHeldObj->translation, 145, -173, 180);\n                    break;\n                case GRAB_POS_BOWSER:\n                    vec3s_set(asHeldObj->translation, 80, -270, 1260);\n                    break;\n            }\n        }\n    } else if (callContext == GEO_CONTEXT_HELD_OBJ) {\n        // ! The HOLP is set here, which is why it only updates when the held object is drawn.\n        // This is why it won't update during a pause buffered hitstun or when the camera is very far\n        // away.\n        get_pos_from_transform_mtx(marioState->marioBodyState->heldObjLastPosition, *curTransform,\n                                   *gCurGraphNodeCamera->matrixPtr);\n    }\n    return NULL;\n}\n\n// X position of the mirror\n#define MIRROR_X 4331.53\n\n/**\n * Geo node that creates a clone of Mario's geo node and updates it to becomes\n * a mirror image of the player.\n */\nGfx *geo_render_mirror_mario(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c) {\n    f32 mirroredX;\n    struct Object *mario = gMarioStates[0].marioObj;\n\n    switch (callContext) {\n        case GEO_CONTEXT_CREATE:\n            init_graph_node_object(NULL, &gMirrorMario, NULL, gVec3fZero, gVec3sZero, gVec3fOne);\n            break;\n        case GEO_CONTEXT_AREA_LOAD:\n            geo_add_child(node, &gMirrorMario.node);\n            break;\n        case GEO_CONTEXT_AREA_UNLOAD:\n            geo_remove_child(&gMirrorMario.node);\n            break;\n        case GEO_CONTEXT_RENDER:\n            if (mario->header.gfx.pos[0] > 1700.0f) {\n                // TODO: Is this a geo layout copy or a graph node copy?\n                gMirrorMario.sharedChild = mario->header.gfx.sharedChild;\n                gMirrorMario.areaIndex = mario->header.gfx.areaIndex;\n                vec3s_copy(gMirrorMario.angle, mario->header.gfx.angle);\n                vec3f_copy(gMirrorMario.pos, mario->header.gfx.pos);\n                vec3f_copy(gMirrorMario.scale, mario->header.gfx.scale);\n\n                gMirrorMario.animInfo = mario->header.gfx.animInfo;\n                mirroredX = MIRROR_X - gMirrorMario.pos[0];\n                gMirrorMario.pos[0] = mirroredX + MIRROR_X;\n                gMirrorMario.angle[1] = -gMirrorMario.angle[1];\n                gMirrorMario.scale[0] *= -1.0f;\n                ((struct GraphNode *) &gMirrorMario)->flags |= GRAPH_RENDER_ACTIVE;\n            } else {\n                ((struct GraphNode *) &gMirrorMario)->flags &= ~GRAPH_RENDER_ACTIVE;\n            }\n            break;\n    }\n    return NULL;\n}\n\n/**\n * Since Mirror Mario has an x scale of -1, the mesh becomes inside out.\n * This node corrects that by changing the culling mode accordingly.\n */\nGfx *geo_mirror_mario_backface_culling(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c) {\n    struct GraphNodeGenerated *asGenerated = (struct GraphNodeGenerated *) node;\n    Gfx *gfx = NULL;\n\n    if (callContext == GEO_CONTEXT_RENDER && gCurGraphNodeObject == &gMirrorMario) {\n        gfx = alloc_display_list(3 * sizeof(*gfx));\n\n        if (asGenerated->parameter == 0) {\n            gSPClearGeometryMode(&gfx[0], G_CULL_BACK);\n            gSPSetGeometryMode(&gfx[1], G_CULL_FRONT);\n            gSPEndDisplayList(&gfx[2]);\n        } else {\n            gSPClearGeometryMode(&gfx[0], G_CULL_FRONT);\n            gSPSetGeometryMode(&gfx[1], G_CULL_BACK);\n            gSPEndDisplayList(&gfx[2]);\n        }\n        asGenerated->fnNode.node.flags = (asGenerated->fnNode.node.flags & 0xFF) | (LAYER_OPAQUE << 8);\n    }\n\n    return gfx;\n}\n"
  },
  {
    "path": "src/game/mario_misc.h",
    "content": "#ifndef MARIO_MISC_H\n#define MARIO_MISC_H\n\n#include <PR/ultratypes.h>\n\n#include \"macros.h\"\n#include \"types.h\"\n\nextern struct GraphNodeObject gMirrorMario;\nextern struct MarioBodyState gBodyStates[2];\n\nGfx *geo_draw_mario_head_goddard(s32 callContext, struct GraphNode *node, Mat4 *c);\nvoid bhv_toad_message_loop(void);\nvoid bhv_toad_message_init(void);\nvoid bhv_unlock_door_star_init(void);\nvoid bhv_unlock_door_star_loop(void);\nGfx *geo_mirror_mario_set_alpha(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c);\nGfx *geo_switch_mario_stand_run(s32 callContext, struct GraphNode *node, UNUSED Mat4 *mtx);\nGfx *geo_switch_mario_eyes(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c);\nGfx *geo_mario_tilt_torso(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c);\nGfx *geo_mario_head_rotation(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c);\nGfx *geo_switch_mario_hand(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c);\nGfx *geo_mario_hand_foot_scaler(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c);\nGfx *geo_switch_mario_cap_effect(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c);\nGfx *geo_switch_mario_cap_on_off(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c);\nGfx *geo_mario_rotate_wing_cap_wings(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c);\nGfx *geo_switch_mario_hand_grab_pos(s32 callContext, struct GraphNode *b, Mat4 *mtx);\nGfx *geo_render_mirror_mario(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c);\nGfx *geo_mirror_mario_backface_culling(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c);\n\n#endif // MARIO_MISC_H\n"
  },
  {
    "path": "src/game/mario_step.c",
    "content": "#include <ultra64.h>\n\n#include \"sm64.h\"\n#include \"engine/math_util.h\"\n#include \"engine/surface_collision.h\"\n#include \"mario.h\"\n#include \"audio/external.h\"\n#include \"game_init.h\"\n#include \"interaction.h\"\n#include \"mario_step.h\"\n\nstatic s16 sMovingSandSpeeds[] = { 12, 8, 4, 0 };\n\nstruct Surface gWaterSurfacePseudoFloor = {\n    SURFACE_VERY_SLIPPERY, 0,    0,    0, 0, 0, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 },\n    { 0.0f, 1.0f, 0.0f },  0.0f, NULL,\n};\n\n/**\n * Always returns zero. This may have been intended\n * to be used for the beta trampoline. Its return value\n * is used by set_mario_y_vel_based_on_fspeed as a constant\n * addition to Mario's Y velocity. Given the closeness of\n * this function to stub_mario_step_2, it is probable that this\n * was intended to check whether a trampoline had made itself\n * known through stub_mario_step_2 and whether Mario was on it,\n * and if so return a higher value than 0.\n */\nf32 get_additive_y_vel_for_jumps(void) {\n    return 0.0f;\n}\n\n/**\n * Does nothing, but takes in a MarioState. This is only ever\n * called by update_mario_inputs, which is called as part of Mario's\n * update routine. Due to its proximity to stub_mario_step_2, an\n * incomplete trampoline function, and get_additive_y_vel_for_jumps,\n * a potentially trampoline-related function, it is plausible that\n * this could be used for checking if Mario was on the trampoline.\n * It could, for example, make him bounce.\n */\nvoid stub_mario_step_1(UNUSED struct MarioState *x) {\n}\n\n/**\n * Does nothing. This is only called by the beta trampoline.\n * Due to its proximity to get_additive_y_vel_for_jumps, another\n * currently-pointless function, it is probable that this was used\n * by the trampoline to make itself known to get_additive_y_vel_for_jumps,\n * or to set a variable with its intended additive Y vel.\n */\nvoid stub_mario_step_2(void) {\n}\n\nvoid transfer_bully_speed(struct BullyCollisionData *obj1, struct BullyCollisionData *obj2) {\n    f32 rx = obj2->posX - obj1->posX;\n    f32 rz = obj2->posZ - obj1->posZ;\n\n    //! Bully NaN crash\n    f32 projectedV1 = (rx * obj1->velX + rz * obj1->velZ) / (rx * rx + rz * rz);\n    f32 projectedV2 = (-rx * obj2->velX - rz * obj2->velZ) / (rx * rx + rz * rz);\n\n    // Kill speed along r. Convert one object's speed along r and transfer it to\n    // the other object.\n    obj2->velX += obj2->conversionRatio * projectedV1 * rx - projectedV2 * -rx;\n    obj2->velZ += obj2->conversionRatio * projectedV1 * rz - projectedV2 * -rz;\n\n    obj1->velX += -projectedV1 * rx + obj1->conversionRatio * projectedV2 * -rx;\n    obj1->velZ += -projectedV1 * rz + obj1->conversionRatio * projectedV2 * -rz;\n\n    //! Bully battery\n}\n\nBAD_RETURN(s32) init_bully_collision_data(struct BullyCollisionData *data, f32 posX, f32 posZ,\n                               f32 forwardVel, s16 yaw, f32 conversionRatio, f32 radius) {\n    if (forwardVel < 0.0f) {\n        forwardVel *= -1.0f;\n        yaw += 0x8000;\n    }\n\n    data->radius = radius;\n    data->conversionRatio = conversionRatio;\n    data->posX = posX;\n    data->posZ = posZ;\n    data->velX = forwardVel * sins(yaw);\n    data->velZ = forwardVel * coss(yaw);\n}\n\nvoid mario_bonk_reflection(struct MarioState *m, u32 negateSpeed) {\n    if (m->wall != NULL) {\n        s16 wallAngle = atan2s(m->wall->normal.z, m->wall->normal.x);\n        m->faceAngle[1] = wallAngle - (s16)(m->faceAngle[1] - wallAngle);\n\n        play_sound((m->flags & MARIO_METAL_CAP) ? SOUND_ACTION_METAL_BONK : SOUND_ACTION_BONK,\n                   m->marioObj->header.gfx.cameraToObject);\n    } else {\n        play_sound(SOUND_ACTION_HIT, m->marioObj->header.gfx.cameraToObject);\n    }\n\n    if (negateSpeed) {\n        mario_set_forward_vel(m, -m->forwardVel);\n    } else {\n        m->faceAngle[1] += 0x8000;\n    }\n}\n\nu32 mario_update_quicksand(struct MarioState *m, f32 sinkingSpeed) {\n    if (m->action & ACT_FLAG_RIDING_SHELL) {\n        m->quicksandDepth = 0.0f;\n    } else {\n        if (m->quicksandDepth < 1.1f) {\n            m->quicksandDepth = 1.1f;\n        }\n\n        switch (m->floor->type) {\n            case SURFACE_SHALLOW_QUICKSAND:\n                if ((m->quicksandDepth += sinkingSpeed) >= 10.0f) {\n                    m->quicksandDepth = 10.0f;\n                }\n                break;\n\n            case SURFACE_SHALLOW_MOVING_QUICKSAND:\n                if ((m->quicksandDepth += sinkingSpeed) >= 25.0f) {\n                    m->quicksandDepth = 25.0f;\n                }\n                break;\n\n            case SURFACE_QUICKSAND:\n            case SURFACE_MOVING_QUICKSAND:\n                if ((m->quicksandDepth += sinkingSpeed) >= 60.0f) {\n                    m->quicksandDepth = 60.0f;\n                }\n                break;\n\n            case SURFACE_DEEP_QUICKSAND:\n            case SURFACE_DEEP_MOVING_QUICKSAND:\n                if ((m->quicksandDepth += sinkingSpeed) >= 160.0f) {\n                    update_mario_sound_and_camera(m);\n                    return drop_and_set_mario_action(m, ACT_QUICKSAND_DEATH, 0);\n                }\n                break;\n\n            case SURFACE_INSTANT_QUICKSAND:\n            case SURFACE_INSTANT_MOVING_QUICKSAND:\n                update_mario_sound_and_camera(m);\n                return drop_and_set_mario_action(m, ACT_QUICKSAND_DEATH, 0);\n                break;\n\n            default:\n                m->quicksandDepth = 0.0f;\n                break;\n        }\n    }\n\n    return FALSE;\n}\n\nu32 mario_push_off_steep_floor(struct MarioState *m, u32 action, u32 actionArg) {\n    s16 floorDYaw = m->floorAngle - m->faceAngle[1];\n\n    if (floorDYaw > -0x4000 && floorDYaw < 0x4000) {\n        m->forwardVel = 16.0f;\n        m->faceAngle[1] = m->floorAngle;\n    } else {\n        m->forwardVel = -16.0f;\n        m->faceAngle[1] = m->floorAngle + 0x8000;\n    }\n\n    return set_mario_action(m, action, actionArg);\n}\n\nu32 mario_update_moving_sand(struct MarioState *m) {\n    struct Surface *floor = m->floor;\n    s32 floorType = floor->type;\n\n    if (floorType == SURFACE_DEEP_MOVING_QUICKSAND || floorType == SURFACE_SHALLOW_MOVING_QUICKSAND\n        || floorType == SURFACE_MOVING_QUICKSAND || floorType == SURFACE_INSTANT_MOVING_QUICKSAND) {\n        s16 pushAngle = floor->force << 8;\n        f32 pushSpeed = sMovingSandSpeeds[floor->force >> 8];\n\n        m->vel[0] += pushSpeed * sins(pushAngle);\n        m->vel[2] += pushSpeed * coss(pushAngle);\n\n        return TRUE;\n    }\n\n    return FALSE;\n}\n\nu32 mario_update_windy_ground(struct MarioState *m) {\n    struct Surface *floor = m->floor;\n\n    if (floor->type == SURFACE_HORIZONTAL_WIND) {\n        f32 pushSpeed;\n        s16 pushAngle = floor->force << 8;\n\n        if (m->action & ACT_FLAG_MOVING) {\n            s16 pushDYaw = m->faceAngle[1] - pushAngle;\n\n            pushSpeed = m->forwardVel > 0.0f ? -m->forwardVel * 0.5f : -8.0f;\n\n            if (pushDYaw > -0x4000 && pushDYaw < 0x4000) {\n                pushSpeed *= -1.0f;\n            }\n\n            pushSpeed *= coss(pushDYaw);\n        } else {\n            pushSpeed = 3.2f + (gGlobalTimer % 4);\n        }\n\n        m->vel[0] += pushSpeed * sins(pushAngle);\n        m->vel[2] += pushSpeed * coss(pushAngle);\n\n#ifdef VERSION_JP\n        play_sound(SOUND_ENV_WIND2, m->marioObj->header.gfx.cameraToObject);\n#endif\n        return TRUE;\n    }\n\n    return FALSE;\n}\n\nvoid stop_and_set_height_to_floor(struct MarioState *m) {\n    struct Object *marioObj = m->marioObj;\n\n    mario_set_forward_vel(m, 0.0f);\n    m->vel[1] = 0.0f;\n\n    //! This is responsible for some downwarps.\n    m->pos[1] = m->floorHeight;\n\n    vec3f_copy(marioObj->header.gfx.pos, m->pos);\n    vec3s_set(marioObj->header.gfx.angle, 0, m->faceAngle[1], 0);\n}\n\ns32 stationary_ground_step(struct MarioState *m) {\n    u32 takeStep;\n    struct Object *marioObj = m->marioObj;\n    u32 stepResult = GROUND_STEP_NONE;\n\n    mario_set_forward_vel(m, 0.0f);\n\n    takeStep = mario_update_moving_sand(m);\n    takeStep |= mario_update_windy_ground(m);\n    if (takeStep) {\n        stepResult = perform_ground_step(m);\n    } else {\n        //! This is responsible for several stationary downwarps.\n        m->pos[1] = m->floorHeight;\n\n        vec3f_copy(marioObj->header.gfx.pos, m->pos);\n        vec3s_set(marioObj->header.gfx.angle, 0, m->faceAngle[1], 0);\n    }\n\n    return stepResult;\n}\n\nstatic s32 perform_ground_quarter_step(struct MarioState *m, Vec3f nextPos) {\n    UNUSED struct Surface *lowerWall;\n    struct Surface *upperWall;\n    struct Surface *ceil;\n    struct Surface *floor;\n    f32 ceilHeight;\n    f32 floorHeight;\n    f32 waterLevel;\n\n    lowerWall = resolve_and_return_wall_collisions(nextPos, 30.0f, 24.0f);\n    upperWall = resolve_and_return_wall_collisions(nextPos, 60.0f, 50.0f);\n\n    floorHeight = find_floor(nextPos[0], nextPos[1], nextPos[2], &floor);\n    ceilHeight = vec3f_find_ceil(nextPos, floorHeight, &ceil);\n\n    waterLevel = find_water_level(nextPos[0], nextPos[2]);\n\n    m->wall = upperWall;\n\n    if (floor == NULL) {\n        return GROUND_STEP_HIT_WALL_STOP_QSTEPS;\n    }\n\n    if ((m->action & ACT_FLAG_RIDING_SHELL) && floorHeight < waterLevel) {\n        floorHeight = waterLevel;\n        floor = &gWaterSurfacePseudoFloor;\n        floor->originOffset = floorHeight; //! Wrong origin offset (no effect)\n    }\n\n    if (nextPos[1] > floorHeight + 100.0f) {\n        if (nextPos[1] + 160.0f >= ceilHeight) {\n            return GROUND_STEP_HIT_WALL_STOP_QSTEPS;\n        }\n\n        vec3f_copy(m->pos, nextPos);\n        m->floor = floor;\n        m->floorHeight = floorHeight;\n        return GROUND_STEP_LEFT_GROUND;\n    }\n\n    if (floorHeight + 160.0f >= ceilHeight) {\n        return GROUND_STEP_HIT_WALL_STOP_QSTEPS;\n    }\n\n    vec3f_set(m->pos, nextPos[0], floorHeight, nextPos[2]);\n    m->floor = floor;\n    m->floorHeight = floorHeight;\n\n    if (upperWall != NULL) {\n        s16 wallDYaw = atan2s(upperWall->normal.z, upperWall->normal.x) - m->faceAngle[1];\n\n        if (wallDYaw >= 0x2AAA && wallDYaw <= 0x5555) {\n            return GROUND_STEP_NONE;\n        }\n        if (wallDYaw <= -0x2AAA && wallDYaw >= -0x5555) {\n            return GROUND_STEP_NONE;\n        }\n\n        return GROUND_STEP_HIT_WALL_CONTINUE_QSTEPS;\n    }\n\n    return GROUND_STEP_NONE;\n}\n\ns32 perform_ground_step(struct MarioState *m) {\n    s32 i;\n    u32 stepResult;\n    Vec3f intendedPos;\n\n    for (i = 0; i < 4; i++) {\n        intendedPos[0] = m->pos[0] + m->floor->normal.y * (m->vel[0] / 4.0f);\n        intendedPos[2] = m->pos[2] + m->floor->normal.y * (m->vel[2] / 4.0f);\n        intendedPos[1] = m->pos[1];\n\n        stepResult = perform_ground_quarter_step(m, intendedPos);\n        if (stepResult == GROUND_STEP_LEFT_GROUND || stepResult == GROUND_STEP_HIT_WALL_STOP_QSTEPS) {\n            break;\n        }\n    }\n\n    m->terrainSoundAddend = mario_get_terrain_sound_addend(m);\n    vec3f_copy(m->marioObj->header.gfx.pos, m->pos);\n    vec3s_set(m->marioObj->header.gfx.angle, 0, m->faceAngle[1], 0);\n\n    if (stepResult == GROUND_STEP_HIT_WALL_CONTINUE_QSTEPS) {\n        stepResult = GROUND_STEP_HIT_WALL;\n    }\n    return stepResult;\n}\n\nu32 check_ledge_grab(struct MarioState *m, struct Surface *wall, Vec3f intendedPos, Vec3f nextPos) {\n    struct Surface *ledgeFloor;\n    Vec3f ledgePos;\n    f32 displacementX;\n    f32 displacementZ;\n\n    if (m->vel[1] > 0) {\n        return FALSE;\n    }\n\n    displacementX = nextPos[0] - intendedPos[0];\n    displacementZ = nextPos[2] - intendedPos[2];\n\n    // Only ledge grab if the wall displaced Mario in the opposite direction of\n    // his velocity.\n    if (displacementX * m->vel[0] + displacementZ * m->vel[2] > 0.0f) {\n        return FALSE;\n    }\n\n    //! Since the search for floors starts at y + 160, we will sometimes grab\n    // a higher ledge than expected (glitchy ledge grab)\n    ledgePos[0] = nextPos[0] - wall->normal.x * 60.0f;\n    ledgePos[2] = nextPos[2] - wall->normal.z * 60.0f;\n    ledgePos[1] = find_floor(ledgePos[0], nextPos[1] + 160.0f, ledgePos[2], &ledgeFloor);\n\n    if (ledgePos[1] - nextPos[1] <= 100.0f) {\n        return FALSE;\n    }\n\n    vec3f_copy(m->pos, ledgePos);\n    m->floor = ledgeFloor;\n    m->floorHeight = ledgePos[1];\n\n    m->floorAngle = atan2s(ledgeFloor->normal.z, ledgeFloor->normal.x);\n\n    m->faceAngle[0] = 0;\n    m->faceAngle[1] = atan2s(wall->normal.z, wall->normal.x) + 0x8000;\n    return TRUE;\n}\n\ns32 perform_air_quarter_step(struct MarioState *m, Vec3f intendedPos, u32 stepArg) {\n    s16 wallDYaw;\n    Vec3f nextPos;\n    struct Surface *upperWall;\n    struct Surface *lowerWall;\n    struct Surface *ceil;\n    struct Surface *floor;\n    f32 ceilHeight;\n    f32 floorHeight;\n    f32 waterLevel;\n\n    vec3f_copy(nextPos, intendedPos);\n\n    upperWall = resolve_and_return_wall_collisions(nextPos, 150.0f, 50.0f);\n    lowerWall = resolve_and_return_wall_collisions(nextPos, 30.0f, 50.0f);\n\n    floorHeight = find_floor(nextPos[0], nextPos[1], nextPos[2], &floor);\n    ceilHeight = vec3f_find_ceil(nextPos, floorHeight, &ceil);\n\n    waterLevel = find_water_level(nextPos[0], nextPos[2]);\n\n    m->wall = NULL;\n\n    //! The water pseudo floor is not referenced when your intended qstep is\n    // out of bounds, so it won't detect you as landing.\n\n    if (floor == NULL) {\n        if (nextPos[1] <= m->floorHeight) {\n            m->pos[1] = m->floorHeight;\n            return AIR_STEP_LANDED;\n        }\n\n        m->pos[1] = nextPos[1];\n        return AIR_STEP_HIT_WALL;\n    }\n\n    if ((m->action & ACT_FLAG_RIDING_SHELL) && floorHeight < waterLevel) {\n        floorHeight = waterLevel;\n        floor = &gWaterSurfacePseudoFloor;\n        floor->originOffset = floorHeight; //! Incorrect origin offset (no effect)\n    }\n\n    //! This check uses f32, but findFloor uses short (overflow jumps)\n    if (nextPos[1] <= floorHeight) {\n        if (ceilHeight - floorHeight > 160.0f) {\n            m->pos[0] = nextPos[0];\n            m->pos[2] = nextPos[2];\n            m->floor = floor;\n            m->floorHeight = floorHeight;\n        }\n\n        //! When ceilHeight - floorHeight <= 160, the step result says that\n        // Mario landed, but his movement is cancelled and his referenced floor\n        // isn't updated (pedro spots)\n        m->pos[1] = floorHeight;\n        return AIR_STEP_LANDED;\n    }\n\n    if (nextPos[1] + 160.0f > ceilHeight) {\n        if (m->vel[1] >= 0.0f) {\n            m->vel[1] = 0.0f;\n\n            //! Uses referenced ceiling instead of ceil (ceiling hang upwarp)\n            if ((stepArg & AIR_STEP_CHECK_HANG) && m->ceil != NULL\n                && m->ceil->type == SURFACE_HANGABLE) {\n                return AIR_STEP_GRABBED_CEILING;\n            }\n\n            return AIR_STEP_NONE;\n        }\n\n        //! Potential subframe downwarp->upwarp?\n        if (nextPos[1] <= m->floorHeight) {\n            m->pos[1] = m->floorHeight;\n            return AIR_STEP_LANDED;\n        }\n\n        m->pos[1] = nextPos[1];\n        return AIR_STEP_HIT_WALL;\n    }\n\n    //! When the wall is not completely vertical or there is a slight wall\n    // misalignment, you can activate these conditions in unexpected situations\n    if ((stepArg & AIR_STEP_CHECK_LEDGE_GRAB) && upperWall == NULL && lowerWall != NULL) {\n        if (check_ledge_grab(m, lowerWall, intendedPos, nextPos)) {\n            return AIR_STEP_GRABBED_LEDGE;\n        }\n\n        vec3f_copy(m->pos, nextPos);\n        m->floor = floor;\n        m->floorHeight = floorHeight;\n        return AIR_STEP_NONE;\n    }\n\n    vec3f_copy(m->pos, nextPos);\n    m->floor = floor;\n    m->floorHeight = floorHeight;\n\n    if (upperWall != NULL || lowerWall != NULL) {\n        m->wall = upperWall != NULL ? upperWall : lowerWall;\n        wallDYaw = atan2s(m->wall->normal.z, m->wall->normal.x) - m->faceAngle[1];\n\n        if (m->wall->type == SURFACE_BURNING) {\n            return AIR_STEP_HIT_LAVA_WALL;\n        }\n\n        if (wallDYaw < -0x6000 || wallDYaw > 0x6000) {\n            m->flags |= MARIO_UNKNOWN_30;\n            return AIR_STEP_HIT_WALL;\n        }\n    }\n\n    return AIR_STEP_NONE;\n}\n\nvoid apply_twirl_gravity(struct MarioState *m) {\n    f32 terminalVelocity;\n    f32 heaviness = 1.0f;\n\n    if (m->angleVel[1] > 1024) {\n        heaviness = 1024.0f / m->angleVel[1];\n    }\n\n    terminalVelocity = -75.0f * heaviness;\n\n    m->vel[1] -= 4.0f * heaviness;\n    if (m->vel[1] < terminalVelocity) {\n        m->vel[1] = terminalVelocity;\n    }\n}\n\nu32 should_strengthen_gravity_for_jump_ascent(struct MarioState *m) {\n    if (!(m->flags & MARIO_UNKNOWN_08)) {\n        return FALSE;\n    }\n\n    if (m->action & (ACT_FLAG_INTANGIBLE | ACT_FLAG_INVULNERABLE)) {\n        return FALSE;\n    }\n\n    if (!(m->input & INPUT_A_DOWN) && m->vel[1] > 20.0f) {\n        return (m->action & ACT_FLAG_CONTROL_JUMP_HEIGHT) != 0;\n    }\n\n    return FALSE;\n}\n\nvoid apply_gravity(struct MarioState *m) {\n    if (m->action == ACT_TWIRLING && m->vel[1] < 0.0f) {\n        apply_twirl_gravity(m);\n    } else if (m->action == ACT_SHOT_FROM_CANNON) {\n        m->vel[1] -= 1.0f;\n        if (m->vel[1] < -75.0f) {\n            m->vel[1] = -75.0f;\n        }\n    } else if (m->action == ACT_LONG_JUMP || m->action == ACT_SLIDE_KICK\n               || m->action == ACT_BBH_ENTER_SPIN) {\n        m->vel[1] -= 2.0f;\n        if (m->vel[1] < -75.0f) {\n            m->vel[1] = -75.0f;\n        }\n    } else if (m->action == ACT_LAVA_BOOST || m->action == ACT_FALL_AFTER_STAR_GRAB) {\n        m->vel[1] -= 3.2f;\n        if (m->vel[1] < -65.0f) {\n            m->vel[1] = -65.0f;\n        }\n    } else if (m->action == ACT_GETTING_BLOWN) {\n        m->vel[1] -= m->gettingBlownGravity;\n        if (m->vel[1] < -75.0f) {\n            m->vel[1] = -75.0f;\n        }\n    } else if (should_strengthen_gravity_for_jump_ascent(m)) {\n        m->vel[1] /= 4.0f;\n    } else if (m->action & ACT_FLAG_METAL_WATER) {\n        m->vel[1] -= 1.6f;\n        if (m->vel[1] < -16.0f) {\n            m->vel[1] = -16.0f;\n        }\n    } else if ((m->flags & MARIO_WING_CAP) && m->vel[1] < 0.0f && (m->input & INPUT_A_DOWN)) {\n        m->marioBodyState->wingFlutter = TRUE;\n\n        m->vel[1] -= 2.0f;\n        if (m->vel[1] < -37.5f) {\n            if ((m->vel[1] += 4.0f) > -37.5f) {\n                m->vel[1] = -37.5f;\n            }\n        }\n    } else {\n        m->vel[1] -= 4.0f;\n        if (m->vel[1] < -75.0f) {\n            m->vel[1] = -75.0f;\n        }\n    }\n}\n\nvoid apply_vertical_wind(struct MarioState *m) {\n    f32 maxVelY;\n    f32 offsetY;\n\n    if (m->action != ACT_GROUND_POUND) {\n        offsetY = m->pos[1] - -1500.0f;\n\n        if (m->floor->type == SURFACE_VERTICAL_WIND && -3000.0f < offsetY && offsetY < 2000.0f) {\n            if (offsetY >= 0.0f) {\n                maxVelY = 10000.0f / (offsetY + 200.0f);\n            } else {\n                maxVelY = 50.0f;\n            }\n\n            if (m->vel[1] < maxVelY) {\n                if ((m->vel[1] += maxVelY / 8.0f) > maxVelY) {\n                    m->vel[1] = maxVelY;\n                }\n            }\n\n#ifdef VERSION_JP\n            play_sound(SOUND_ENV_WIND2, m->marioObj->header.gfx.cameraToObject);\n#endif\n        }\n    }\n}\n\ns32 perform_air_step(struct MarioState *m, u32 stepArg) {\n    Vec3f intendedPos;\n    s32 i;\n    s32 quarterStepResult;\n    s32 stepResult = AIR_STEP_NONE;\n\n    m->wall = NULL;\n\n    for (i = 0; i < 4; i++) {\n        intendedPos[0] = m->pos[0] + m->vel[0] / 4.0f;\n        intendedPos[1] = m->pos[1] + m->vel[1] / 4.0f;\n        intendedPos[2] = m->pos[2] + m->vel[2] / 4.0f;\n\n        quarterStepResult = perform_air_quarter_step(m, intendedPos, stepArg);\n\n        //! On one qf, hit OOB/ceil/wall to store the 2 return value, and continue\n        // getting 0s until your last qf. Graze a wall on your last qf, and it will\n        // return the stored 2 with a sharply angled reference wall. (some gwks)\n\n        if (quarterStepResult != AIR_STEP_NONE) {\n            stepResult = quarterStepResult;\n        }\n\n        if (quarterStepResult == AIR_STEP_LANDED || quarterStepResult == AIR_STEP_GRABBED_LEDGE\n            || quarterStepResult == AIR_STEP_GRABBED_CEILING\n            || quarterStepResult == AIR_STEP_HIT_LAVA_WALL) {\n            break;\n        }\n    }\n\n    if (m->vel[1] >= 0.0f) {\n        m->peakHeight = m->pos[1];\n    }\n\n    m->terrainSoundAddend = mario_get_terrain_sound_addend(m);\n\n    if (m->action != ACT_FLYING) {\n        apply_gravity(m);\n    }\n    apply_vertical_wind(m);\n\n    vec3f_copy(m->marioObj->header.gfx.pos, m->pos);\n    vec3s_set(m->marioObj->header.gfx.angle, 0, m->faceAngle[1], 0);\n\n    return stepResult;\n}\n\n// They had these functions the whole time and never used them? Lol\n\nvoid set_vel_from_pitch_and_yaw(struct MarioState *m) {\n    m->vel[0] = m->forwardVel * coss(m->faceAngle[0]) * sins(m->faceAngle[1]);\n    m->vel[1] = m->forwardVel * sins(m->faceAngle[0]);\n    m->vel[2] = m->forwardVel * coss(m->faceAngle[0]) * coss(m->faceAngle[1]);\n}\n\nvoid set_vel_from_yaw(struct MarioState *m) {\n    m->vel[0] = m->slideVelX = m->forwardVel * sins(m->faceAngle[1]);\n    m->vel[1] = 0.0f;\n    m->vel[2] = m->slideVelZ = m->forwardVel * coss(m->faceAngle[1]);\n}\n"
  },
  {
    "path": "src/game/mario_step.h",
    "content": "#ifndef MARIO_STEP_H\n#define MARIO_STEP_H\n\n#include <PR/ultratypes.h>\n\n#include \"types.h\"\n\nstruct BullyCollisionData {\n  /*0x00*/ f32 conversionRatio;\n  /*0x04*/ f32 radius;\n  /*0x08*/ f32 posX;\n  /*0x0C*/ f32 posZ;\n  /*0x10*/ f32 velX;\n  /*0x14*/ f32 velZ;\n};\n\nextern struct Surface gWaterSurfacePseudoFloor;\n\nf32 get_additive_y_vel_for_jumps(void);\nvoid stub_mario_step_1(struct MarioState *);\nvoid stub_mario_step_2(void);\n\nvoid mario_bonk_reflection(struct MarioState *, u32);\nvoid transfer_bully_speed(struct BullyCollisionData *obj1, struct BullyCollisionData *obj2);\nBAD_RETURN(s32) init_bully_collision_data(struct BullyCollisionData *data, f32 posX, f32 posZ,\n                                          f32 forwardVel, s16 yaw, f32 conversionRatio, f32 radius);\nu32 mario_update_quicksand(struct MarioState *, f32);\nu32 mario_push_off_steep_floor(struct MarioState *, u32, u32);\nu32 mario_update_moving_sand(struct MarioState *);\nu32 mario_update_windy_ground(struct MarioState *);\nvoid stop_and_set_height_to_floor(struct MarioState *);\ns32 stationary_ground_step(struct MarioState *);\ns32 perform_ground_step(struct MarioState *);\ns32 perform_air_step(struct MarioState *, u32);\n\n#endif // MARIO_STEP_H\n"
  },
  {
    "path": "src/game/memory.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"sm64.h\"\n\n#define INCLUDED_FROM_MEMORY_C\n\n#include \"buffers/zbuffer.h\"\n#include \"buffers/buffers.h\"\n#include \"decompress.h\"\n#include \"game_init.h\"\n#include \"main.h\"\n#include \"memory.h\"\n#include \"segments.h\"\n#include \"segment_symbols.h\"\n\n// round up to the next multiple\n#define ALIGN4(val) (((val) + 0x3) & ~0x3)\n#define ALIGN8(val) (((val) + 0x7) & ~0x7)\n#define ALIGN16(val) (((val) + 0xF) & ~0xF)\n\nstruct MainPoolState {\n    u32 freeSpace;\n    struct MainPoolBlock *listHeadL;\n    struct MainPoolBlock *listHeadR;\n    struct MainPoolState *prev;\n};\n\nstruct MainPoolBlock {\n    struct MainPoolBlock *prev;\n    struct MainPoolBlock *next;\n};\n\nstruct MemoryBlock {\n    struct MemoryBlock *next;\n    u32 size;\n};\n\nstruct MemoryPool {\n    u32 totalSpace;\n    struct MemoryBlock *firstBlock;\n    struct MemoryBlock freeList;\n};\n\n// Double declared to preserve US bss ordering.\nextern uintptr_t sSegmentTable[32];\nextern u32 sPoolFreeSpace;\nextern u8 *sPoolStart;\nextern u8 *sPoolEnd;\nextern struct MainPoolBlock *sPoolListHeadL;\nextern struct MainPoolBlock *sPoolListHeadR;\n\n\n/**\n * Memory pool for small graphical effects that aren't connected to Objects.\n * Used for colored text, paintings, and environmental snow and bubbles.\n */\nstruct MemoryPool *gEffectsMemoryPool;\n\nFORCE_BSS uintptr_t sSegmentTable[32];\nFORCE_BSS u32 sPoolFreeSpace;\nFORCE_BSS u8 *sPoolStart;\nFORCE_BSS u8 *sPoolEnd;\nFORCE_BSS struct MainPoolBlock *sPoolListHeadL;\nFORCE_BSS struct MainPoolBlock *sPoolListHeadR;\n\nstatic struct MainPoolState *gMainPoolState = NULL;\n\nuintptr_t set_segment_base_addr(s32 segment, void *addr) {\n    sSegmentTable[segment] = (uintptr_t) addr & 0x1FFFFFFF;\n    return sSegmentTable[segment];\n}\n\nvoid *get_segment_base_addr(s32 segment) {\n    return (void *) (sSegmentTable[segment] | 0x80000000);\n}\n\n#ifndef NO_SEGMENTED_MEMORY\nvoid *segmented_to_virtual(const void *addr) {\n    size_t segment = (uintptr_t) addr >> 24;\n    size_t offset = (uintptr_t) addr & 0x00FFFFFF;\n\n    return (void *) ((sSegmentTable[segment] + offset) | 0x80000000);\n}\n\nvoid *virtual_to_segmented(u32 segment, const void *addr) {\n    size_t offset = ((uintptr_t) addr & 0x1FFFFFFF) - sSegmentTable[segment];\n\n    return (void *) ((segment << 24) + offset);\n}\n\nvoid move_segment_table_to_dmem(void) {\n    s32 i;\n\n    for (i = 0; i < 16; i++) {\n        gSPSegment(gDisplayListHead++, i, sSegmentTable[i]);\n    }\n}\n#else\nvoid *segmented_to_virtual(const void *addr) {\n    return (void *) addr;\n}\n\nvoid *virtual_to_segmented(u32 segment, const void *addr) {\n    return (void *) addr;\n}\n\nvoid move_segment_table_to_dmem(void) {\n}\n#endif\n\n/**\n * Initialize the main memory pool. This pool is conceptually a pair of stacks\n * that grow inward from the left and right. It therefore only supports\n * freeing the object that was most recently allocated from a side.\n */\nvoid main_pool_init(UNUSED_CN void *start, void *end) {\n#if defined(VERSION_CN) && !defined(USE_EXT_RAM)\n    sPoolStart = (u8 *) ALIGN16((uintptr_t) &gZBufferEnd) + 16;\n#else\n    sPoolStart = (u8 *) ALIGN16((uintptr_t) start) + 16;\n#endif\n    sPoolEnd = (u8 *) ALIGN16((uintptr_t) end - 15) - 16;\n    sPoolFreeSpace = sPoolEnd - sPoolStart;\n\n    sPoolListHeadL = (struct MainPoolBlock *) (sPoolStart - 16);\n    sPoolListHeadR = (struct MainPoolBlock *) sPoolEnd;\n    sPoolListHeadL->prev = NULL;\n    sPoolListHeadL->next = NULL;\n    sPoolListHeadR->prev = NULL;\n    sPoolListHeadR->next = NULL;\n}\n\n/**\n * Allocate a block of memory from the pool of given size, and from the\n * specified side of the pool (MEMORY_POOL_LEFT or MEMORY_POOL_RIGHT).\n * If there is not enough space, return NULL.\n */\nvoid *main_pool_alloc(u32 size, u32 side) {\n    struct MainPoolBlock *newListHead;\n    void *addr = NULL;\n\n    size = ALIGN16(size) + 16;\n    if (size != 0 && sPoolFreeSpace >= size) {\n        sPoolFreeSpace -= size;\n        if (side == MEMORY_POOL_LEFT) {\n            newListHead = (struct MainPoolBlock *) ((u8 *) sPoolListHeadL + size);\n            sPoolListHeadL->next = newListHead;\n            newListHead->prev = sPoolListHeadL;\n            newListHead->next = NULL;\n            addr = (u8 *) sPoolListHeadL + 16;\n            sPoolListHeadL = newListHead;\n        } else {\n            newListHead = (struct MainPoolBlock *) ((u8 *) sPoolListHeadR - size);\n            sPoolListHeadR->prev = newListHead;\n            newListHead->next = sPoolListHeadR;\n            newListHead->prev = NULL;\n            sPoolListHeadR = newListHead;\n            addr = (u8 *) sPoolListHeadR + 16;\n        }\n    }\n    return addr;\n}\n\n/**\n * Free a block of memory that was allocated from the pool. The block must be\n * the most recently allocated block from its end of the pool, otherwise all\n * newer blocks are freed as well.\n * Return the amount of free space left in the pool.\n */\nu32 main_pool_free(void *addr) {\n    struct MainPoolBlock *block = (struct MainPoolBlock *) ((u8 *) addr - 16);\n    struct MainPoolBlock *oldListHead = (struct MainPoolBlock *) ((u8 *) addr - 16);\n\n    if (oldListHead < sPoolListHeadL) {\n        while (oldListHead->next != NULL) {\n            oldListHead = oldListHead->next;\n        }\n        sPoolListHeadL = block;\n        sPoolListHeadL->next = NULL;\n        sPoolFreeSpace += (uintptr_t) oldListHead - (uintptr_t) sPoolListHeadL;\n    } else {\n        while (oldListHead->prev != NULL) {\n            oldListHead = oldListHead->prev;\n        }\n        sPoolListHeadR = block->next;\n        sPoolListHeadR->prev = NULL;\n        sPoolFreeSpace += (uintptr_t) sPoolListHeadR - (uintptr_t) oldListHead;\n    }\n    return sPoolFreeSpace;\n}\n\n/**\n * Resize a block of memory that was allocated from the left side of the pool.\n * If the block is increasing in size, it must be the most recently allocated\n * block from the left side.\n * The block does not move.\n */\nvoid *main_pool_realloc(void *addr, u32 size) {\n    void *newAddr = NULL;\n    struct MainPoolBlock *block = (struct MainPoolBlock *) ((u8 *) addr - 16);\n\n    if (block->next == sPoolListHeadL) {\n        main_pool_free(addr);\n        newAddr = main_pool_alloc(size, MEMORY_POOL_LEFT);\n    }\n    return newAddr;\n}\n\n/**\n * Return the size of the largest block that can currently be allocated from the\n * pool.\n */\nu32 main_pool_available(void) {\n    return sPoolFreeSpace - 16;\n}\n\n/**\n * Push pool state, to be restored later. Return the amount of free space left\n * in the pool.\n */\nu32 main_pool_push_state(void) {\n    struct MainPoolState *prevState = gMainPoolState;\n    u32 freeSpace = sPoolFreeSpace;\n    struct MainPoolBlock *lhead = sPoolListHeadL;\n    struct MainPoolBlock *rhead = sPoolListHeadR;\n\n    gMainPoolState = main_pool_alloc(sizeof(*gMainPoolState), MEMORY_POOL_LEFT);\n    gMainPoolState->freeSpace = freeSpace;\n    gMainPoolState->listHeadL = lhead;\n    gMainPoolState->listHeadR = rhead;\n    gMainPoolState->prev = prevState;\n    return sPoolFreeSpace;\n}\n\n/**\n * Restore pool state from a previous call to main_pool_push_state. Return the\n * amount of free space left in the pool.\n */\nu32 main_pool_pop_state(void) {\n    sPoolFreeSpace = gMainPoolState->freeSpace;\n    sPoolListHeadL = gMainPoolState->listHeadL;\n    sPoolListHeadR = gMainPoolState->listHeadR;\n    gMainPoolState = gMainPoolState->prev;\n    return sPoolFreeSpace;\n}\n\n/**\n * Perform a DMA read from ROM. The transfer is split into 4KB blocks, and this\n * function blocks until completion.\n */\nstatic void dma_read(u8 *dest, u8 *srcStart, u8 *srcEnd) {\n    u32 size = ALIGN16(srcEnd - srcStart);\n\n    osInvalDCache(dest, size);\n    while (size != 0) {\n        u32 copySize = (size >= 0x1000) ? 0x1000 : size;\n\n        osPiStartDma(&gDmaIoMesg, OS_MESG_PRI_NORMAL, OS_READ, (uintptr_t) srcStart, dest, copySize,\n                     &gDmaMesgQueue);\n        osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK);\n\n        dest += copySize;\n        srcStart += copySize;\n        size -= copySize;\n    }\n}\n\n/**\n * Perform a DMA read from ROM, allocating space in the memory pool to write to.\n * Return the destination address.\n */\nstatic void *dynamic_dma_read(u8 *srcStart, u8 *srcEnd, u32 side) {\n    void *dest;\n    u32 size = ALIGN16(srcEnd - srcStart);\n\n    dest = main_pool_alloc(size, side);\n    if (dest != NULL) {\n        dma_read(dest, srcStart, srcEnd);\n    }\n    return dest;\n}\n\n#ifndef NO_SEGMENTED_MEMORY\n/**\n * Load data from ROM into a newly allocated block, and set the segment base\n * address to this block.\n */\nvoid *load_segment(s32 segment, u8 *srcStart, u8 *srcEnd, u32 side) {\n    void *addr = dynamic_dma_read(srcStart, srcEnd, side);\n\n    if (addr != NULL) {\n        set_segment_base_addr(segment, addr);\n    }\n    return addr;\n}\n\n/*\n * Allocate a block of memory starting at destAddr and ending at the end of\n * the memory pool. Then copy srcStart through srcEnd from ROM to this block.\n * If this block is not large enough to hold the ROM data, or that portion\n * of the pool is already allocated, return NULL.\n */\nvoid *load_to_fixed_pool_addr(u8 *destAddr, u8 *srcStart, u8 *srcEnd) {\n    void *dest = NULL;\n    u32 srcSize = ALIGN16(srcEnd - srcStart);\n    u32 destSize = ALIGN16((u8 *) sPoolListHeadR - destAddr);\n\n    if (srcSize <= destSize) {\n        dest = main_pool_alloc(destSize, MEMORY_POOL_RIGHT);\n        if (dest != NULL) {\n            bzero(dest, destSize);\n            osWritebackDCacheAll();\n            dma_read(dest, srcStart, srcEnd);\n            osInvalICache(dest, destSize);\n            osInvalDCache(dest, destSize);\n        }\n    } else {\n    }\n    return dest;\n}\n\n/**\n * Decompress the block of ROM data from srcStart to srcEnd and return a\n * pointer to an allocated buffer holding the decompressed data. Set the\n * base address of segment to this address.\n */\nvoid *load_segment_decompress(s32 segment, u8 *srcStart, u8 *srcEnd) {\n    void *dest = NULL;\n\n    u32 compSize = ALIGN16(srcEnd - srcStart);\n    u8 *compressed = main_pool_alloc(compSize, MEMORY_POOL_RIGHT);\n\n    // Decompressed size from mio0 header\n    u32 *size = (u32 *) (compressed + 4);\n\n    if (compressed != NULL) {\n        dma_read(compressed, srcStart, srcEnd);\n        dest = main_pool_alloc(*size, MEMORY_POOL_LEFT);\n        if (dest != NULL) {\n            CN_DEBUG_PRINTF((\"start decompress\\n\"));\n            decompress(compressed, dest);\n            CN_DEBUG_PRINTF((\"end decompress\\n\"));\n\n            set_segment_base_addr(segment, dest);\n            main_pool_free(compressed);\n        } else {\n        }\n    } else {\n    }\n    return dest;\n}\n\nvoid *load_segment_decompress_heap(u32 segment, u8 *srcStart, u8 *srcEnd) {\n    UNUSED void *dest = NULL;\n    u32 compSize = ALIGN16(srcEnd - srcStart);\n    u8 *compressed = main_pool_alloc(compSize, MEMORY_POOL_RIGHT);\n    UNUSED u32 *pUncSize = (u32 *) (compressed + 4);\n\n    if (compressed != NULL) {\n        dma_read(compressed, srcStart, srcEnd);\n        decompress(compressed, gDecompressionHeap);\n        set_segment_base_addr(segment, gDecompressionHeap);\n        main_pool_free(compressed);\n    } else {\n    }\n    return gDecompressionHeap;\n}\n\nvoid load_engine_code_segment(void) {\n    void *startAddr = (void *) SEG_ENGINE;\n    u32 totalSize = SEG_FRAMEBUFFERS - SEG_ENGINE;\n    UNUSED u32 alignedSize = ALIGN16(_engineSegmentRomEnd - _engineSegmentRomStart);\n\n    bzero(startAddr, totalSize);\n    osWritebackDCacheAll();\n    dma_read(startAddr, _engineSegmentRomStart, _engineSegmentRomEnd);\n    osInvalICache(startAddr, totalSize);\n    osInvalDCache(startAddr, totalSize);\n}\n#endif\n\n/**\n * Allocate an allocation-only pool from the main pool. This pool doesn't\n * support freeing allocated memory.\n * Return NULL if there is not enough space in the main pool.\n */\nstruct AllocOnlyPool *alloc_only_pool_init(u32 size, u32 side) {\n    void *addr;\n    struct AllocOnlyPool *subPool = NULL;\n\n    size = ALIGN4(size);\n    addr = main_pool_alloc(size + sizeof(struct AllocOnlyPool), side);\n    if (addr != NULL) {\n        subPool = (struct AllocOnlyPool *) addr;\n        subPool->totalSpace = size;\n        subPool->usedSpace = 0;\n        subPool->startPtr = (u8 *) addr + sizeof(struct AllocOnlyPool);\n        subPool->freePtr = (u8 *) addr + sizeof(struct AllocOnlyPool);\n    }\n    return subPool;\n}\n\n/**\n * Allocate from an allocation-only pool.\n * Return NULL if there is not enough space.\n */\nvoid *alloc_only_pool_alloc(struct AllocOnlyPool *pool, s32 size) {\n    void *addr = NULL;\n\n    size = ALIGN4(size);\n    if (size > 0 && pool->usedSpace + size <= pool->totalSpace) {\n        addr = pool->freePtr;\n        pool->freePtr += size;\n        pool->usedSpace += size;\n    }\n    return addr;\n}\n\n/**\n * Resize an allocation-only pool.\n * If the pool is increasing in size, the pool must be the last thing allocated\n * from the left end of the main pool.\n * The pool does not move.\n */\nstruct AllocOnlyPool *alloc_only_pool_resize(struct AllocOnlyPool *pool, u32 size) {\n    struct AllocOnlyPool *newPool;\n\n    size = ALIGN4(size);\n    newPool = main_pool_realloc(pool, size + sizeof(struct AllocOnlyPool));\n    if (newPool != NULL) {\n        pool->totalSpace = size;\n    }\n    return newPool;\n}\n\n/**\n * Allocate a memory pool from the main pool. This pool supports arbitrary\n * order for allocation/freeing.\n * Return NULL if there is not enough space in the main pool.\n */\nstruct MemoryPool *mem_pool_init(u32 size, u32 side) {\n    void *addr;\n    struct MemoryBlock *block;\n    struct MemoryPool *pool = NULL;\n\n    size = ALIGN4(size);\n    addr = main_pool_alloc(size + sizeof(struct MemoryPool), side);\n    if (addr != NULL) {\n        pool = (struct MemoryPool *) addr;\n\n        pool->totalSpace = size;\n        pool->firstBlock = (struct MemoryBlock *) ((u8 *) addr + sizeof(struct MemoryPool));\n        pool->freeList.next = (struct MemoryBlock *) ((u8 *) addr + sizeof(struct MemoryPool));\n\n        block = pool->firstBlock;\n        block->next = NULL;\n        block->size = pool->totalSpace;\n    }\n    return pool;\n}\n\n/**\n * Allocate from a memory pool. Return NULL if there is not enough space.\n */\nvoid *mem_pool_alloc(struct MemoryPool *pool, u32 size) {\n    struct MemoryBlock *freeBlock = &pool->freeList;\n    void *addr = NULL;\n\n    size = ALIGN4(size) + sizeof(struct MemoryBlock);\n    while (freeBlock->next != NULL) {\n        if (freeBlock->next->size >= size) {\n            addr = (u8 *) freeBlock->next + sizeof(struct MemoryBlock);\n            if (freeBlock->next->size - size <= sizeof(struct MemoryBlock)) {\n                freeBlock->next = freeBlock->next->next;\n            } else {\n                struct MemoryBlock *newBlock = (struct MemoryBlock *) ((u8 *) freeBlock->next + size);\n                newBlock->size = freeBlock->next->size - size;\n                newBlock->next = freeBlock->next->next;\n                freeBlock->next->size = size;\n                freeBlock->next = newBlock;\n            }\n            break;\n        }\n        freeBlock = freeBlock->next;\n    }\n    return addr;\n}\n\n/**\n * Free a block that was allocated using mem_pool_alloc.\n */\nBAD_RETURN(s32) mem_pool_free(struct MemoryPool *pool, void *addr) {\n    struct MemoryBlock *block = (struct MemoryBlock *) ((u8 *) addr - sizeof(struct MemoryBlock));\n    struct MemoryBlock *freeList = pool->freeList.next;\n\n    if (pool->freeList.next == NULL) {\n        pool->freeList.next = block;\n        block->next = NULL;\n    } else {\n        if (block < pool->freeList.next) {\n            if ((u8 *) pool->freeList.next == (u8 *) block + block->size) {\n                block->size += freeList->size;\n                block->next = freeList->next;\n                pool->freeList.next = block;\n            } else {\n                block->next = pool->freeList.next;\n                pool->freeList.next = block;\n            }\n        } else {\n            while (freeList->next != NULL) {\n                if (freeList < block && block < freeList->next) {\n                    break;\n                }\n\n                freeList = freeList->next;\n            }\n\n            if (block == (struct MemoryBlock *) ((u8 *) freeList + freeList->size)) {\n                freeList->size += block->size;\n                block = freeList;\n            } else {\n                block->next = freeList->next;\n                freeList->next = block;\n            }\n\n            if (block->next != NULL && (u8 *) block->next == (u8 *) block + block->size) {\n                block->size = block->size + block->next->size;\n                block->next = block->next->next;\n            }\n        }\n    }\n    // nothing is returned, but must have non-void return type for render_text_labels to match on iQue\n}\n\nvoid *alloc_display_list(u32 size) {\n    void *ptr = NULL;\n\n    size = ALIGN8(size);\n    if (gGfxPoolEnd - size >= (u8 *) gDisplayListHead) {\n        gGfxPoolEnd -= size;\n        ptr = gGfxPoolEnd;\n    } else {\n    }\n    return ptr;\n}\n\nstatic struct DmaTable *load_dma_table_address(u8 *srcAddr) {\n    struct DmaTable *table = dynamic_dma_read(srcAddr, srcAddr + sizeof(u32),\n                                                             MEMORY_POOL_LEFT);\n    u32 size = table->count * sizeof(struct OffsetSizePair) +\n        sizeof(struct DmaTable) - sizeof(struct OffsetSizePair);\n    main_pool_free(table);\n\n    table = dynamic_dma_read(srcAddr, srcAddr + size, MEMORY_POOL_LEFT);\n    table->srcAddr = srcAddr;\n    return table;\n}\n\nvoid setup_dma_table_list(struct DmaHandlerList *list, void *srcAddr, void *buffer) {\n    if (srcAddr != NULL) {\n        list->dmaTable = load_dma_table_address(srcAddr);\n    }\n    list->currentAddr = NULL;\n    list->bufTarget = buffer;\n}\n\ns32 load_patchable_table(struct DmaHandlerList *list, s32 index) {\n    s32 ret = FALSE;\n    struct DmaTable *table = list->dmaTable;\n\n    if ((u32)index < table->count) {\n        u8 *addr = table->srcAddr + table->anim[index].offset;\n        s32 size = table->anim[index].size;\n\n        if (addr != list->currentAddr) {\n            dma_read(list->bufTarget, addr, addr + size);\n            list->currentAddr = addr;\n            ret = TRUE;\n        }\n    }\n    return ret;\n}\n"
  },
  {
    "path": "src/game/memory.h",
    "content": "#ifndef MEMORY_H\n#define MEMORY_H\n\n#include <PR/ultratypes.h>\n\n#include \"types.h\"\n\n#define MEMORY_POOL_LEFT  0\n#define MEMORY_POOL_RIGHT 1\n\nstruct AllocOnlyPool {\n    s32 totalSpace;\n    s32 usedSpace;\n    u8 *startPtr;\n    u8 *freePtr;\n};\n\nstruct MemoryPool;\n\nstruct OffsetSizePair {\n    u32 offset;\n    u32 size;\n};\n\nstruct DmaTable {\n    u32 count;\n    u8 *srcAddr;\n    struct OffsetSizePair anim[1]; // dynamic size\n};\n\nstruct DmaHandlerList {\n    struct DmaTable *dmaTable;\n    void *currentAddr;\n    void *bufTarget;\n};\n\n#ifndef INCLUDED_FROM_MEMORY_C\n// Declaring this variable extern puts it in the wrong place in the bss order\n// when this file is included from memory.c (first instead of last). Hence,\n// ifdef hack. It was very likely subject to bss reordering originally.\nextern struct MemoryPool *gEffectsMemoryPool;\n#endif\n\nuintptr_t set_segment_base_addr(s32 segment, void *addr);\nvoid *get_segment_base_addr(s32 segment);\nvoid *segmented_to_virtual(const void *addr);\nvoid *virtual_to_segmented(u32 segment, const void *addr);\nvoid move_segment_table_to_dmem(void);\n\nvoid main_pool_init(void *start, void *end);\nvoid *main_pool_alloc(u32 size, u32 side);\nu32 main_pool_free(void *addr);\nvoid *main_pool_realloc(void *addr, u32 size);\nu32 main_pool_available(void);\nu32 main_pool_push_state(void);\nu32 main_pool_pop_state(void);\n\n#ifndef NO_SEGMENTED_MEMORY\nvoid *load_segment(s32 segment, u8 *srcStart, u8 *srcEnd, u32 side);\nvoid *load_to_fixed_pool_addr(u8 *destAddr, u8 *srcStart, u8 *srcEnd);\nvoid *load_segment_decompress(s32 segment, u8 *srcStart, u8 *srcEnd);\nvoid *load_segment_decompress_heap(u32 segment, u8 *srcStart, u8 *srcEnd);\nvoid load_engine_code_segment(void);\n#else\n#define load_segment(...)\n#define load_to_fixed_pool_addr(...)\n#define load_segment_decompress(...)\n#define load_segment_decompress_heap(...)\n#define load_engine_code_segment(...)\n#endif\n\nstruct AllocOnlyPool *alloc_only_pool_init(u32 size, u32 side);\nvoid *alloc_only_pool_alloc(struct AllocOnlyPool *pool, s32 size);\nstruct AllocOnlyPool *alloc_only_pool_resize(struct AllocOnlyPool *pool, u32 size);\n\nstruct MemoryPool *mem_pool_init(u32 size, u32 side);\nvoid *mem_pool_alloc(struct MemoryPool *pool, u32 size);\nBAD_RETURN(s32) mem_pool_free(struct MemoryPool *pool, void *addr);\n\nvoid *alloc_display_list(u32 size);\nvoid setup_dma_table_list(struct DmaHandlerList *list, void *srcAddr, void *buffer);\ns32 load_patchable_table(struct DmaHandlerList *list, s32 index);\n\n#endif // MEMORY_H\n"
  },
  {
    "path": "src/game/moving_texture.c",
    "content": "#include <ultra64.h>\n\n#include \"sm64.h\"\n#include \"moving_texture.h\"\n#include \"area.h\"\n#include \"camera.h\"\n#include \"rendering_graph_node.h\"\n#include \"engine/math_util.h\"\n#include \"memory.h\"\n#include \"save_file.h\"\n#include \"segment2.h\"\n#include \"engine/surface_collision.h\"\n#include \"geo_misc.h\"\n#include \"rendering_graph_node.h\"\n#include \"object_list_processor.h\"\n\n/**\n * This file contains functions for generating display lists with moving textures\n * (abbreviated movtex). This is used for water, sand, haze, mist and treadmills.\n * Each mesh using this system has the animated vertices stored as an array of shorts.\n * The first entry is the texture movement speed. After that the vertices are stored\n * in one of two layouts: one without per-vertex color attributes and one with.\n * [speed, v0(x,y,z, s,t)      , v1(x,y,z, s,t)      , ...]\n * [speed, v0(x,y,z, r,g,b s,t), v1(x,y,z, r,g,b s,t), ...]\n * x, y, z = vertex position as integers\n * s, t = texture coordinates as 6.10 fixed point number. That means coordinates in\n * range [0, 1024] are a unique part of the image, after that it repeats the image.\n *\n * The first vertex 'v0' is special because all subsequent vertices inherit its\n * texture offset. So to animate e.g. a treadmill, the speed component arr[0] is\n * simply added to the s component arr[7] every frame and the texture scrolls\n * horizontally over the entire mesh without changing the rest of the array.\n * Note that while the system allows many kinds of vertex animations, in\n * practice the only animation used is horizontally scrolling textures.\n *\n * After updating the base mesh, the vertices are converted to the format the RSP\n * understands and a display list is generated. The RSP can buffer 16 vertices at\n * a time, and this code assumes everything fits in one buffer, so every moving\n * texture mesh must have at most 16 vertices. As a result some meshes are split\n * up into multiple parts, like the sand pathway inside the pyramid which has 3\n * parts. The water stream in the Cavern of the Metal Cap fits in one mesh.\n *\n * Apart from this general system, there is also a simpler system for flat\n * quads with a rotating texture. This is often used for water, but also\n * for mist, toxic haze and lava inside the volcano. One quad is described\n * by the struct MovtexQuad, and multiple MovtexQuads form a MovtexQuadCollection.\n * A geo node has an id that corresponds to the id of a certain MovtexQuadCollection,\n * which will then be matched with the id of entries in gEnvironmentRegions to get the\n * y-position. The x and z coordinates are stored in the MovtexQuads themself,\n * so the water rectangle is separate from the actually drawn rectangle.\n */\n\n// First entry in array is texture movement speed for both layouts\n#define MOVTEX_ATTR_SPEED 0\n\n// Different layouts for vertices\n#define MOVTEX_LAYOUT_NOCOLOR 0\n#define MOVTEX_LAYOUT_COLORED 1\n\n// Attributes for movtex vertices\n#define MOVTEX_ATTR_X 1\n#define MOVTEX_ATTR_Y 2\n#define MOVTEX_ATTR_Z 3\n\n// For MOVTEX_LAYOUT_NOCOLOR only\n#define MOVTEX_ATTR_NOCOLOR_S 4\n#define MOVTEX_ATTR_NOCOLOR_T 5\n\n// For MOVTEX_LAYOUT_COLORED only\n#define MOVTEX_ATTR_COLORED_R 4\n#define MOVTEX_ATTR_COLORED_G 5\n#define MOVTEX_ATTR_COLORED_B 6\n#define MOVTEX_ATTR_COLORED_S 7\n#define MOVTEX_ATTR_COLORED_T 8\n\n/**\n * An object containing all info for a mesh with moving textures.\n * Contains the vertices that are animated, but also the display list which\n * determines the connectivity, as well as the texture, texture blend color\n * and drawing layer.\n */\nstruct MovtexObject {\n    /// number that geo nodes have as parameter to refer to this mesh\n    u32 geoId;\n    /// which texture to use for this mesh, index into gMovtexIdToTexture\n    s32 textureId;\n    /// amount of moving vertices\n    s32 vtx_count;\n    /// segmented address to movtex mesh with vertices\n    void *movtexVerts;\n    /// display list inserted before moving triangles\n    Gfx *beginDl;\n    /// display list inserted after moving triangles\n    Gfx *endDl;\n    /// display list with the actual moving texture triangles.\n    /// Assumes the animated vertices are buffered and correct texture is set\n    Gfx *triDl;\n    // if the list does not have per-vertex colors, all vertices have these colors\n    u8 r;      /// red\n    u8 g;      /// green\n    u8 b;      /// blue\n    u8 a;      /// alpha\n    s32 layer; /// the drawing layer for this mesh\n};\n\n/// Counters to make textures move iff the game is not paused.\ns16 gMovtexCounter = 1;\ns16 gMovtexCounterPrev = 0;\n\n// Vertex colors for rectangles. Used to give mist a tint\n#define MOVTEX_VTX_COLOR_DEFAULT 0 // no tint (white vertex colors)\n#define MOVTEX_VTX_COLOR_YELLOW 1  // used for Hazy Maze Cave toxic haze\n#define MOVTEX_VTX_COLOR_RED 2     // used for Shifting Sand Land around the Tox box maze\n\ns8 gMovtexVtxColor = MOVTEX_VTX_COLOR_DEFAULT;\n\n/// The height at which Mario entered the last painting. Used for Wet-Dry World only.\nfloat gPaintingMarioYEntry = 0.0f;\n\n/// Variable to ensure the initial Wet-Dry World water level is set only once\ns32 gWDWWaterLevelSet = FALSE;\n\nextern u8 ssl_quicksand[];\nextern u8 ssl_pyramid_sand[];\nextern u8 ttc_yellow_triangle[];\n\n/**\n * An array for converting a movtex texture id to a pointer that can\n * be passed to gDPSetTextureImage.\n */\nu8 *gMovtexIdToTexture[] = { texture_waterbox_water,     texture_waterbox_mist,\n                             texture_waterbox_jrb_water, texture_waterbox_unknown_water,\n                             texture_waterbox_lava,      ssl_quicksand,\n                             ssl_pyramid_sand,           ttc_yellow_triangle };\n\nextern Gfx castle_grounds_dl_waterfall[];\nextern s16 castle_grounds_movtex_tris_waterfall[];\nextern s16 ssl_movtex_tris_pyramid_sand_pathway_front[];\nextern Gfx ssl_dl_pyramid_sand_pathway_begin[];\nextern Gfx ssl_dl_pyramid_sand_pathway_end[];\nextern Gfx ssl_dl_pyramid_sand_pathway_front_end[];\nextern s16 ssl_movtex_tris_pyramid_sand_pathway_floor[];\nextern Gfx ssl_dl_pyramid_sand_pathway_floor_begin[];\nextern Gfx ssl_dl_pyramid_sand_pathway_floor_end[];\nextern s16 ssl_movtex_tris_pyramid_sand_pathway_side[];\nextern Gfx ssl_dl_pyramid_sand_pathway_side_end[];\nextern s16 bitfs_movtex_tris_lava_first_section[];\nextern Gfx bitfs_dl_lava_sections[];\nextern s16 bitfs_movtex_tris_lava_second_section[];\nextern s16 bitfs_movtex_tris_lava_floor[];\nextern Gfx bitfs_dl_lava_floor[];\nextern s16 lll_movtex_tris_lava_floor[];\nextern Gfx lll_dl_lava_floor[];\nextern s16 lll_movtex_tris_lavafall_volcano[];\nextern Gfx lll_dl_lavafall_volcano[];\nextern s16 cotmc_movtex_tris_water[];\nextern Gfx cotmc_dl_water_begin[];\nextern Gfx cotmc_dl_water_end[];\nextern Gfx cotmc_dl_water[];\nextern s16 ttm_movtex_tris_begin_waterfall[];\nextern Gfx ttm_dl_waterfall[];\nextern s16 ttm_movtex_tris_end_waterfall[];\nextern s16 ttm_movtex_tris_begin_puddle_waterfall[];\nextern Gfx ttm_dl_bottom_waterfall[];\nextern s16 ttm_movtex_tris_end_puddle_waterfall[];\nextern s16 ttm_movtex_tris_puddle_waterfall[];\nextern Gfx ttm_dl_puddle_waterfall[];\nextern s16 ssl_movtex_tris_pyramid_quicksand[];\nextern Gfx ssl_dl_quicksand_begin[];\nextern Gfx ssl_dl_quicksand_end[];\nextern Gfx ssl_dl_pyramid_quicksand[];\nextern s16 ssl_movtex_tris_pyramid_corners_quicksand[];\nextern Gfx ssl_dl_pyramid_corners_quicksand[];\nextern s16 ssl_movtex_tris_sides_quicksand[];\nextern Gfx ssl_dl_sides_quicksand[];\nextern s16 ttc_movtex_tris_big_surface_treadmill[];\nextern Gfx ttc_dl_surface_treadmill_begin[];\nextern Gfx ttc_dl_surface_treadmill_end[];\nextern Gfx ttc_dl_surface_treadmill[];\nextern s16 ttc_movtex_tris_small_surface_treadmill[];\nextern s16 ssl_movtex_tris_quicksand_pit[];\nextern Gfx ssl_dl_quicksand_pit_begin[];\nextern Gfx ssl_dl_quicksand_pit_end[];\nextern Gfx ssl_dl_quicksand_pit[];\nextern s16 ssl_movtex_tris_pyramid_quicksand_pit[];\nextern Gfx ssl_dl_pyramid_quicksand_pit_begin[];\nextern Gfx ssl_dl_pyramid_quicksand_pit_end[];\n\n/**\n * MovtexObjects that have no color attributes per vertex (though the mesh\n * as a whole can have a blend color).\n */\nstruct MovtexObject gMovtexNonColored[] = {\n    // Inside the pyramid there is a sand pathway with the 5 secrets on it.\n    // pathway_front is the highest 'sand fall', pathway_floor is the horizontal\n    // sand stream and pathway_side is the lower 'sand fall'.\n    { MOVTEX_PYRAMID_SAND_PATHWAY_FRONT, TEX_PYRAMID_SAND_SSL, 8,\n      ssl_movtex_tris_pyramid_sand_pathway_front, ssl_dl_pyramid_sand_pathway_begin,\n      ssl_dl_pyramid_sand_pathway_end, ssl_dl_pyramid_sand_pathway_front_end, 0xff, 0xff, 0xff, 0xff,\n      LAYER_TRANSPARENT_INTER },\n    { MOVTEX_PYRAMID_SAND_PATHWAY_FLOOR, TEX_PYRAMID_SAND_SSL, 8,\n      ssl_movtex_tris_pyramid_sand_pathway_floor, ssl_dl_pyramid_sand_pathway_floor_begin,\n      ssl_dl_pyramid_sand_pathway_floor_end, ssl_dl_pyramid_sand_pathway_front_end, 0xff, 0xff, 0xff,\n      0xff, LAYER_OPAQUE_INTER },\n    { MOVTEX_PYRAMID_SAND_PATHWAY_SIDE, TEX_PYRAMID_SAND_SSL, 6,\n      ssl_movtex_tris_pyramid_sand_pathway_side, ssl_dl_pyramid_sand_pathway_begin,\n      ssl_dl_pyramid_sand_pathway_end, ssl_dl_pyramid_sand_pathway_side_end, 0xff, 0xff, 0xff, 0xff,\n      LAYER_TRANSPARENT_INTER },\n\n    // The waterfall outside the castle\n    { MOVTEX_CASTLE_WATERFALL, TEXTURE_WATER, 15, castle_grounds_movtex_tris_waterfall,\n      dl_waterbox_rgba16_begin, dl_waterbox_end, castle_grounds_dl_waterfall, 0xff, 0xff, 0xff, 0xb4,\n      LAYER_TRANSPARENT_INTER },\n\n    // Bowser in the Fire Sea has lava at 3 heights, lava_floor is the lowest\n    // and lava_second_section is the highest\n    { MOVTEX_BITFS_LAVA_FIRST, TEXTURE_LAVA, 4, bitfs_movtex_tris_lava_first_section,\n      dl_waterbox_rgba16_begin, dl_waterbox_end, bitfs_dl_lava_sections, 0xff, 0xff, 0xff, 0xff,\n      LAYER_OPAQUE },\n    { MOVTEX_BITFS_LAVA_SECOND, TEXTURE_LAVA, 4, bitfs_movtex_tris_lava_second_section,\n      dl_waterbox_rgba16_begin, dl_waterbox_end, bitfs_dl_lava_sections, 0xff, 0xff, 0xff, 0xb4,\n      LAYER_TRANSPARENT },\n    { MOVTEX_BITFS_LAVA_FLOOR, TEXTURE_LAVA, 9, bitfs_movtex_tris_lava_floor, dl_waterbox_rgba16_begin,\n      dl_waterbox_end, bitfs_dl_lava_floor, 0xff, 0xff, 0xff, 0xb4, LAYER_TRANSPARENT },\n\n    // Lava floor in Lethal Lava Land and the lava fall in the volcano\n    //! Note that the lava floor in the volcano is actually a quad.\n    // The quad collection index LLL_MOVTEX_VOLCANO_FLOOR_LAVA is actually\n    // 2 | MOVTEX_AREA_LLL, suggesting that the lava floor of LLL used to be a\n    // quad too, with index 1.\n    // It was probably too large however, resulting in overflowing texture\n    // coordinates or other artifacts, so they converted it to a movtex\n    // mesh with 9 vertices, subdividing the rectangle into 4 smaller ones.\n    { MOVTEX_LLL_LAVA_FLOOR, TEXTURE_LAVA, 9, lll_movtex_tris_lava_floor, dl_waterbox_rgba16_begin,\n      dl_waterbox_end, lll_dl_lava_floor, 0xff, 0xff, 0xff, 0xc8, LAYER_TRANSPARENT },\n    { MOVTEX_VOLCANO_LAVA_FALL, TEXTURE_LAVA, 16, lll_movtex_tris_lavafall_volcano,\n      dl_waterbox_rgba16_begin, dl_waterbox_end, lll_dl_lavafall_volcano, 0xff, 0xff, 0xff, 0xb4,\n      LAYER_TRANSPARENT_INTER },\n\n    // Cavern of the metal Cap has a waterfall source above the switch platform,\n    // the stream, around the switch, and the waterfall that's the same as the one\n    // outside the castle. They are all part of the same mesh.\n    { MOVTEX_COTMC_WATER, TEXTURE_WATER, 14, cotmc_movtex_tris_water, cotmc_dl_water_begin,\n      cotmc_dl_water_end, cotmc_dl_water, 0xff, 0xff, 0xff, 0xb4, LAYER_TRANSPARENT_INTER },\n\n    // Tall, Tall mountain has water going from the top to the bottom of the mountain.\n    { MOVTEX_TTM_BEGIN_WATERFALL, TEXTURE_WATER, 6, ttm_movtex_tris_begin_waterfall,\n      dl_waterbox_rgba16_begin, dl_waterbox_end, ttm_dl_waterfall, 0xff, 0xff, 0xff, 0xb4,\n      LAYER_TRANSPARENT },\n    { MOVTEX_TTM_END_WATERFALL, TEXTURE_WATER, 6, ttm_movtex_tris_end_waterfall,\n      dl_waterbox_rgba16_begin, dl_waterbox_end, ttm_dl_waterfall, 0xff, 0xff, 0xff, 0xb4,\n      LAYER_TRANSPARENT },\n    { MOVTEX_TTM_BEGIN_PUDDLE_WATERFALL, TEXTURE_WATER, 4, ttm_movtex_tris_begin_puddle_waterfall,\n      dl_waterbox_rgba16_begin, dl_waterbox_end, ttm_dl_bottom_waterfall, 0xff, 0xff, 0xff, 0xb4,\n      LAYER_TRANSPARENT_INTER },\n    { MOVTEX_TTM_END_PUDDLE_WATERFALL, TEXTURE_WATER, 4, ttm_movtex_tris_end_puddle_waterfall,\n      dl_waterbox_rgba16_begin, dl_waterbox_end, ttm_dl_bottom_waterfall, 0xff, 0xff, 0xff, 0xb4,\n      LAYER_TRANSPARENT_INTER },\n    { MOVTEX_TTM_PUDDLE_WATERFALL, TEXTURE_WATER, 8, ttm_movtex_tris_puddle_waterfall,\n      dl_waterbox_rgba16_begin, dl_waterbox_end, ttm_dl_puddle_waterfall, 0xff, 0xff, 0xff, 0xb4,\n      LAYER_TRANSPARENT_INTER },\n    { 0x00000000, 0x00000000, 0, NULL, NULL, NULL, NULL, 0x00, 0x00, 0x00, 0x00, 0x00000000 },\n};\n\n/**\n * MovtexObjects that have color attributes per vertex.\n */\nstruct MovtexObject gMovtexColored[] = {\n    { MOVTEX_SSL_PYRAMID_SIDE, TEX_QUICKSAND_SSL, 12, ssl_movtex_tris_pyramid_quicksand,\n      ssl_dl_quicksand_begin, ssl_dl_quicksand_end, ssl_dl_pyramid_quicksand, 0xff, 0xff, 0xff, 0xff,\n      LAYER_OPAQUE },\n    { MOVTEX_SSL_PYRAMID_CORNER, TEX_QUICKSAND_SSL, 16, ssl_movtex_tris_pyramid_corners_quicksand,\n      ssl_dl_quicksand_begin, ssl_dl_quicksand_end, ssl_dl_pyramid_corners_quicksand, 0xff, 0xff, 0xff,\n      0xff, LAYER_OPAQUE },\n    { MOVTEX_SSL_COURSE_EDGE, TEX_QUICKSAND_SSL, 15, ssl_movtex_tris_sides_quicksand,\n      ssl_dl_quicksand_begin, ssl_dl_quicksand_end, ssl_dl_sides_quicksand, 0xff, 0xff, 0xff, 0xff,\n      LAYER_OPAQUE },\n    { MOVTEX_TREADMILL_BIG, TEX_YELLOW_TRI_TTC, 12, ttc_movtex_tris_big_surface_treadmill,\n      ttc_dl_surface_treadmill_begin, ttc_dl_surface_treadmill_end, ttc_dl_surface_treadmill, 0xff,\n      0xff, 0xff, 0xff, LAYER_OPAQUE },\n    { MOVTEX_TREADMILL_SMALL, TEX_YELLOW_TRI_TTC, 12, ttc_movtex_tris_small_surface_treadmill,\n      ttc_dl_surface_treadmill_begin, ttc_dl_surface_treadmill_end, ttc_dl_surface_treadmill, 0xff,\n      0xff, 0xff, 0xff, LAYER_OPAQUE },\n    { 0x00000000, 0x00000000, 0, NULL, NULL, NULL, NULL, 0x00, 0x00, 0x00, 0x00, 0x00000000 },\n};\n\n/**\n * Treated identically to gMovtexColored.\n */\nstruct MovtexObject gMovtexColored2[] = {\n    { MOVTEX_SSL_SAND_PIT_OUTSIDE, TEX_QUICKSAND_SSL, 8, ssl_movtex_tris_quicksand_pit,\n      ssl_dl_quicksand_pit_begin, ssl_dl_quicksand_pit_end, ssl_dl_quicksand_pit, 0xff, 0xff, 0xff,\n      0xff, LAYER_OPAQUE },\n    { MOVTEX_SSL_SAND_PIT_PYRAMID, TEX_PYRAMID_SAND_SSL, 8, ssl_movtex_tris_pyramid_quicksand_pit,\n      ssl_dl_pyramid_quicksand_pit_begin, ssl_dl_pyramid_quicksand_pit_end, ssl_dl_quicksand_pit, 0xff,\n      0xff, 0xff, 0xff, LAYER_OPAQUE },\n    { 0x00000000, 0x00000000, 0, NULL, NULL, NULL, NULL, 0x00, 0x00, 0x00, 0x00, 0x00000000 },\n};\n\n/**\n * Sets the initial water level in Wet-Dry World based on how high Mario\n * jumped into the painting.\n */\nGfx *geo_wdw_set_initial_water_level(s32 callContext, UNUSED struct GraphNode *node, UNUSED Mat4 mtx) {\n    s32 i;\n    UNUSED u8 unused[] = { 1, 0, 4, 0, 7, 0, 10, 0 };\n    s16 wdwWaterHeight;\n\n    // Why was this global variable needed when they could just check for GEO_CONTEXT_AREA_LOAD?\n    if (callContext != GEO_CONTEXT_RENDER) {\n        gWDWWaterLevelSet = FALSE;\n    } else if (callContext == GEO_CONTEXT_RENDER && gEnvironmentRegions != NULL\n               && !gWDWWaterLevelSet) {\n        if (gPaintingMarioYEntry <= 1382.4) {\n            wdwWaterHeight = 31;\n        } else if (gPaintingMarioYEntry >= 1600.0) {\n            wdwWaterHeight = 2816;\n        } else {\n            wdwWaterHeight = 1024;\n        }\n        for (i = 0; i < *gEnvironmentRegions; i++) {\n            gEnvironmentRegions[i * 6 + 6] = wdwWaterHeight;\n        }\n        gWDWWaterLevelSet = TRUE;\n    }\n    return NULL;\n}\n\n/**\n * Update moving texture counters that determine when to update the coordinates.\n * Textures update when gMovtexCounterPrev != gMovtexCounter.\n * This ensures water / sand flow stops when the game pauses.\n */\nGfx *geo_movtex_pause_control(s32 callContext, UNUSED struct GraphNode *node, UNUSED Mat4 mtx) {\n    if (callContext != GEO_CONTEXT_RENDER) {\n        gMovtexCounterPrev = gAreaUpdateCounter - 1;\n        gMovtexCounter = gAreaUpdateCounter;\n    } else {\n        gMovtexCounterPrev = gMovtexCounter;\n        gMovtexCounter = gAreaUpdateCounter;\n    }\n    return NULL;\n}\n\n/**\n * Make a vertex that's part of a quad with rotating texture.\n * verts: array of RSP vertices\n * n: index in 'verts' where the vertex is written\n * x, y, z: position\n * rot: base rotation of the texture\n * rotOffset: gets added to base rotation\n * scale: how often the texture repeats, 1 = no repeat\n */\nvoid movtex_make_quad_vertex(Vtx *verts, s32 index, s16 x, s16 y, s16 z, s16 rot, s16 rotOffset,\n                             f32 scale, u8 alpha) {\n    s16 s = 32.0 * (32.0 * scale - 1.0) * sins(rot + rotOffset);\n    s16 t = 32.0 * (32.0 * scale - 1.0) * coss(rot + rotOffset);\n\n    if (gMovtexVtxColor == MOVTEX_VTX_COLOR_YELLOW) {\n        make_vertex(verts, index, x, y, z, s, t, 255, 255, 0, alpha);\n    } else if (gMovtexVtxColor == MOVTEX_VTX_COLOR_RED) {\n        make_vertex(verts, index, x, y, z, s, t, 255, 0, 0, alpha);\n    } else {\n        make_vertex(verts, index, x, y, z, s, t, 255, 255, 255, alpha);\n    }\n}\n\n/**\n * Represents a single flat quad with a rotating texture\n * Stores x and z for 4 vertices, though it is often just a rectangle.\n * Does not store the y-position, since that can be dynamic for water levels.\n */\nstruct MovtexQuad {\n    /// the current texture rotation in this quad\n    s16 rot;\n    /// gets added to rot every frame\n    s16 rotspeed;\n    /// the amount of times the texture repeats. 1 = no repeat.\n    s16 scale;\n    /// Coordinates of vertices\n    s16 x1;\n    s16 z1;\n    s16 x2;\n    s16 z2;\n    s16 x3;\n    s16 z3;\n    s16 x4;\n    s16 z4;\n    s16 rotDir;    /// if 1, it rotates counter-clockwise\n    s16 alpha;     /// opacity, 255 = fully opaque\n    s16 textureId; /// texture id\n};\n\n/// Variable for a little optimization: only set the texture when it differs from the previous texture\ns16 gMovetexLastTextureId;\n\n/**\n * Generates and returns a display list for a single MovtexQuad at height y.\n */\nGfx *movtex_gen_from_quad(s16 y, struct MovtexQuad *quad) {\n    s16 rot;\n    s16 rotspeed = quad->rotspeed;\n    s16 scale = quad->scale;\n    s16 x1 = quad->x1;\n    s16 z1 = quad->z1;\n    s16 x2 = quad->x2;\n    s16 z2 = quad->z2;\n    s16 x3 = quad->x3;\n    s16 z3 = quad->z3;\n    s16 x4 = quad->x4;\n    s16 z4 = quad->z4;\n    s16 rotDir = quad->rotDir;\n    s16 alpha = quad->alpha;\n    s16 textureId = quad->textureId;\n    Vtx *verts = alloc_display_list(4 * sizeof(*verts));\n    Gfx *gfxHead;\n    Gfx *gfx;\n\n    if (textureId == gMovetexLastTextureId) {\n        gfxHead = alloc_display_list(3 * sizeof(*gfxHead));\n    } else {\n        gfxHead = alloc_display_list(8 * sizeof(*gfxHead));\n    }\n\n    if (gfxHead == NULL || verts == NULL) {\n        return NULL;\n    }\n    gfx = gfxHead;\n    if (gMovtexCounter != gMovtexCounterPrev) {\n        quad->rot += rotspeed;\n    }\n    rot = quad->rot;\n    if (rotDir == ROTATE_CLOCKWISE) {\n        movtex_make_quad_vertex(verts, 0, x1, y, z1, rot, 0, scale, alpha);\n        movtex_make_quad_vertex(verts, 1, x2, y, z2, rot, 16384, scale, alpha);\n        movtex_make_quad_vertex(verts, 2, x3, y, z3, rot, -32768, scale, alpha);\n        movtex_make_quad_vertex(verts, 3, x4, y, z4, rot, -16384, scale, alpha);\n    } else { // ROTATE_COUNTER_CLOCKWISE\n        movtex_make_quad_vertex(verts, 0, x1, y, z1, rot, 0, scale, alpha);\n        movtex_make_quad_vertex(verts, 1, x2, y, z2, rot, -16384, scale, alpha);\n        movtex_make_quad_vertex(verts, 2, x3, y, z3, rot, -32768, scale, alpha);\n        movtex_make_quad_vertex(verts, 3, x4, y, z4, rot, 16384, scale, alpha);\n    }\n\n    // Only add commands to change the texture when necessary\n    if (textureId != gMovetexLastTextureId) {\n        switch (textureId) {\n            case TEXTURE_MIST: // an ia16 texture\n                gLoadBlockTexture(gfx++, 32, 32, G_IM_FMT_IA, gMovtexIdToTexture[textureId]);\n                break;\n            default: // any rgba16 texture\n                gLoadBlockTexture(gfx++, 32, 32, G_IM_FMT_RGBA, gMovtexIdToTexture[textureId]);\n                break;\n        }\n        gMovetexLastTextureId = textureId;\n    }\n    gSPVertex(gfx++, VIRTUAL_TO_PHYSICAL2(verts), 4, 0);\n    gSPDisplayList(gfx++, dl_draw_quad_verts_0123);\n    gSPEndDisplayList(gfx);\n    return gfxHead;\n}\n\n/**\n * Generate a display list drawing an array of MoxtexQuad at height 'y'.\n * y: y position of the quads\n * quadArrSegmented: a segmented address to an array of s16. The first number\n * is the number of entries, followed by that number of MovtexQuad structs.\n */\nGfx *movtex_gen_from_quad_array(s16 y, void *quadArrSegmented) {\n    s16 *quadArr = segmented_to_virtual(quadArrSegmented);\n    s16 numLists = quadArr[0];\n    Gfx *gfxHead = alloc_display_list((numLists + 1) * sizeof(*gfxHead));\n    Gfx *gfx = gfxHead;\n    Gfx *subList;\n    s32 i;\n\n    if (gfxHead == NULL) {\n        return NULL;\n    }\n    for (i = 0; i < numLists; i++) {\n        // quadArr is an array of s16, so sizeof(MovtexQuad) gets divided by 2\n        subList = movtex_gen_from_quad(\n            y, (struct MovtexQuad *) (&quadArr[i * (sizeof(struct MovtexQuad) / 2) + 1]));\n        if (subList != NULL) {\n            gSPDisplayList(gfx++, VIRTUAL_TO_PHYSICAL(subList));\n        }\n    }\n    gSPEndDisplayList(gfx);\n    return gfxHead;\n}\n\n/**\n * Generate the display list for a list of quads by searching through a collection\n * for a given id.\n * id: id of quad array to generate a list for\n * y: height at which the quads are drawn\n * movetexQuadsSegmented: segmented address to the MovtexQuadCollection array\n * that will be searched.\n */\nGfx *movtex_gen_quads_id(s16 id, s16 y, void *movetexQuadsSegmented) {\n    struct MovtexQuadCollection *collection = segmented_to_virtual(movetexQuadsSegmented);\n    s32 i = 0;\n\n    while (collection[i].id != -1) {\n        if (collection[i].id == id) {\n            return movtex_gen_from_quad_array(y, collection[i].quadArraySegmented);\n        }\n        i++;\n    }\n    return NULL;\n}\n\nextern u8 bbh_movtex_merry_go_round_water_entrance[];\nextern u8 bbh_movtex_merry_go_round_water_side[];\nextern u8 ccm_movtex_penguin_puddle_water[];\nextern u8 inside_castle_movtex_green_room_water[];\nextern u8 inside_castle_movtex_moat_water[];\nextern u8 hmc_movtex_dorrie_pool_water[];\nextern u8 hmc_movtex_toxic_maze_mist[];\nextern u8 ssl_movtex_puddle_water[];\nextern u8 ssl_movtex_toxbox_quicksand_mist[];\nextern u8 sl_movtex_water[];\nextern u8 wdw_movtex_area1_water[];\nextern u8 wdw_movtex_area2_water[];\nextern u8 jrb_movtex_water[];\nextern u8 jrb_movtex_initial_mist[];\nextern u8 jrb_movtex_sunken_ship_water[];\nextern u8 thi_movtex_area1_water[];\nextern u8 thi_movtex_area2_water[];\nextern u8 castle_grounds_movtex_water[];\nextern u8 lll_movtex_volcano_floor_lava[];\nextern u8 ddd_movtex_area1_water[];\nextern u8 ddd_movtex_area2_water[];\nextern u8 wf_movtex_water[];\nextern u8 castle_courtyard_movtex_star_statue_water[];\nextern u8 ttm_movtex_puddle[];\n\n/**\n * Find the quadCollection for a given quad collection id.\n */\nvoid *get_quad_collection_from_id(u32 id) {\n    switch (id) {\n        case BBH_MOVTEX_MERRY_GO_ROUND_WATER_ENTRANCE:\n            return bbh_movtex_merry_go_round_water_entrance;\n        case BBH_MOVTEX_MERRY_GO_ROUND_WATER_SIDE:\n            return bbh_movtex_merry_go_round_water_side;\n        case CCM_MOVTEX_PENGUIN_PUDDLE_WATER:\n            return ccm_movtex_penguin_puddle_water;\n        case INSIDE_CASTLE_MOVTEX_GREEN_ROOM_WATER:\n            return inside_castle_movtex_green_room_water;\n        case INSIDE_CASTLE_MOVTEX_MOAT_WATER:\n            return inside_castle_movtex_moat_water;\n        case HMC_MOVTEX_DORRIE_POOL_WATER:\n            return hmc_movtex_dorrie_pool_water;\n        case HMC_MOVTEX_TOXIC_MAZE_MIST:\n            return hmc_movtex_toxic_maze_mist;\n        case SSL_MOVTEX_PUDDLE_WATER:\n            return ssl_movtex_puddle_water;\n        case SSL_MOVTEX_TOXBOX_QUICKSAND_MIST:\n            return ssl_movtex_toxbox_quicksand_mist;\n        case SL_MOVTEX_WATER:\n            return sl_movtex_water;\n        case WDW_MOVTEX_AREA1_WATER:\n            return wdw_movtex_area1_water;\n        case WDW_MOVTEX_AREA2_WATER:\n            return wdw_movtex_area2_water;\n        case JRB_MOVTEX_WATER:\n            return jrb_movtex_water;\n        case JRB_MOVTEX_INITIAL_MIST:\n            return jrb_movtex_initial_mist;\n        case JRB_MOVTEX_SUNKEN_SHIP_WATER:\n            return jrb_movtex_sunken_ship_water;\n        case THI_MOVTEX_AREA1_WATER:\n            return thi_movtex_area1_water;\n        case THI_MOVTEX_AREA2_WATER:\n            return thi_movtex_area2_water;\n        case CASTLE_GROUNDS_MOVTEX_WATER:\n            return castle_grounds_movtex_water;\n        case LLL_MOVTEX_VOLCANO_FLOOR_LAVA:\n            return lll_movtex_volcano_floor_lava;\n        case DDD_MOVTEX_AREA1_WATER:\n            return ddd_movtex_area1_water;\n        case DDD_MOVTEX_AREA2_WATER:\n            return ddd_movtex_area2_water;\n        case WF_MOVTEX_WATER:\n            return wf_movtex_water;\n        case CASTLE_COURTYARD_MOVTEX_STAR_STATUE_WATER:\n            return castle_courtyard_movtex_star_statue_water;\n        case TTM_MOVTEX_PUDDLE:\n            return ttm_movtex_puddle;\n        default:\n            return NULL;\n    }\n}\n\n/**\n * Write to 'gfx' a command to set the current texture format for the given\n * quadCollection.\n */\nvoid movtex_change_texture_format(u32 quadCollectionId, Gfx **gfx) {\n    switch (quadCollectionId) {\n        case HMC_MOVTEX_TOXIC_MAZE_MIST:\n            gSPDisplayList((*gfx)++, dl_waterbox_ia16_begin);\n            break;\n        case SSL_MOVTEX_TOXBOX_QUICKSAND_MIST:\n            gSPDisplayList((*gfx)++, dl_waterbox_ia16_begin);\n            break;\n        case JRB_MOVTEX_INITIAL_MIST:\n            gSPDisplayList((*gfx)++, dl_waterbox_ia16_begin);\n            break;\n        default:\n            gSPDisplayList((*gfx)++, dl_waterbox_rgba16_begin);\n            break;\n    }\n}\n\n/**\n * Geo script responsible for drawing quads with a moving texture at the height\n * of the corresponding water region. The node's parameter determines which quad\n * collection is drawn, see moving_texture.h.\n */\nGfx *geo_movtex_draw_water_regions(s32 callContext, struct GraphNode *node, UNUSED Mat4 mtx) {\n    Gfx *gfxHead = NULL;\n    Gfx *gfx = NULL;\n    Gfx *subList;\n    void *quadCollection;\n    struct GraphNodeGenerated *asGenerated;\n    s16 numWaterBoxes;\n    s16 waterId;\n    s16 waterY;\n    s32 i;\n\n    if (callContext == GEO_CONTEXT_RENDER) {\n        gMovtexVtxColor = MOVTEX_VTX_COLOR_DEFAULT;\n        if (gEnvironmentRegions == NULL) {\n            return NULL;\n        }\n        numWaterBoxes = gEnvironmentRegions[0];\n        gfxHead = alloc_display_list((numWaterBoxes + 3) * sizeof(*gfxHead));\n        if (gfxHead == NULL) {\n            return NULL;\n        } else {\n            gfx = gfxHead;\n        }\n        asGenerated = (struct GraphNodeGenerated *) node;\n        if (asGenerated->parameter == JRB_MOVTEX_INITIAL_MIST) {\n            if (gLakituState.goalPos[1] < 1024.0) { // if camera under water\n                return NULL;\n            }\n            if (save_file_get_star_flags(gCurrSaveFileNum - 1, COURSE_NUM_TO_INDEX(COURSE_JRB))\n                & (1 << 0)) { // the \"Plunder in the Sunken Ship\" star in JRB is collected\n                return NULL;\n            }\n        } else if (asGenerated->parameter == HMC_MOVTEX_TOXIC_MAZE_MIST) {\n            gMovtexVtxColor = MOVTEX_VTX_COLOR_YELLOW;\n        } else if (asGenerated->parameter == SSL_MOVTEX_TOXBOX_QUICKSAND_MIST) {\n            gMovtexVtxColor = MOVTEX_VTX_COLOR_RED;\n        }\n        quadCollection = get_quad_collection_from_id(asGenerated->parameter);\n        if (quadCollection == NULL) {\n            return NULL;\n        }\n\n        asGenerated->fnNode.node.flags =\n            (asGenerated->fnNode.node.flags & 0xFF) | (LAYER_TRANSPARENT_INTER << 8);\n\n        movtex_change_texture_format(asGenerated->parameter, &gfx);\n        gMovetexLastTextureId = -1;\n        for (i = 0; i < numWaterBoxes; i++) {\n            waterId = gEnvironmentRegions[i * 6 + 1];\n            waterY = gEnvironmentRegions[i * 6 + 6];\n            subList = movtex_gen_quads_id(waterId, waterY, quadCollection);\n            if (subList != NULL) {\n                gSPDisplayList(gfx++, VIRTUAL_TO_PHYSICAL(subList));\n            }\n        }\n        gSPDisplayList(gfx++, dl_waterbox_end);\n        gSPEndDisplayList(gfx);\n    }\n    return gfxHead;\n}\n\n/**\n * Updates a movtex mesh by adding the movtex's speed to the horizontal or\n * vertical texture coordinates depending on 'attr'.\n * movtexVerts: vertices to update\n * attr: which attribute to change\n */\nvoid update_moving_texture_offset(s16 *movtexVerts, s32 attr) {\n    s16 movSpeed = movtexVerts[MOVTEX_ATTR_SPEED];\n    s16 *curOffset = movtexVerts + attr;\n\n    if (gMovtexCounter != gMovtexCounterPrev) {\n        *curOffset += movSpeed;\n        // note that texture coordinates are 6.10 fixed point, so this does modulo 1\n        if (*curOffset >= 1024) {\n            *curOffset -= 1024;\n        }\n        if (*curOffset <= -1024) {\n            *curOffset += 1024;\n        }\n    }\n}\n\n/**\n * Make the first vertex of a moving texture with index 0.\n * This vertex is the base of all vertices with index > 0, which use this\n * vertex's coordinates as base on which to apply offset.\n * The first vertex has offset 0 by definition, simplifying the calculations a bit.\n */\nvoid movtex_write_vertex_first(Vtx *vtx, s16 *movtexVerts, struct MovtexObject *c, s8 attrLayout) {\n    s16 x = movtexVerts[MOVTEX_ATTR_X];\n    s16 y = movtexVerts[MOVTEX_ATTR_Y];\n    s16 z = movtexVerts[MOVTEX_ATTR_Z];\n    u8 alpha = c->a;\n    u8 r1;\n    u8 g1;\n    u8 b1;\n    s8 r2;\n    s8 g2;\n    s8 b2;\n    s16 s;\n    s16 t;\n\n    switch (attrLayout) {\n        case MOVTEX_LAYOUT_NOCOLOR:\n            r1 = c->r;\n            g1 = c->g;\n            b1 = c->b;\n            s = movtexVerts[MOVTEX_ATTR_NOCOLOR_S];\n            t = movtexVerts[MOVTEX_ATTR_NOCOLOR_T];\n            make_vertex(vtx, 0, x, y, z, s, t, r1, g1, b1, alpha);\n            break;\n        case MOVTEX_LAYOUT_COLORED:\n            r2 = movtexVerts[MOVTEX_ATTR_COLORED_R];\n            g2 = movtexVerts[MOVTEX_ATTR_COLORED_G];\n            b2 = movtexVerts[MOVTEX_ATTR_COLORED_B];\n            s = movtexVerts[MOVTEX_ATTR_COLORED_S];\n            t = movtexVerts[MOVTEX_ATTR_COLORED_T];\n            make_vertex(vtx, 0, x, y, z, s, t, r2, g2, b2, alpha);\n            break;\n    }\n}\n\n/**\n * Make a vertex with index > 0. The vertex with index 0 is made in\n * movtex_write_vertex_first and subsequent vertices use vertex 0 as a base\n * for their texture coordinates.\n */\nvoid movtex_write_vertex_index(Vtx *verts, s32 index, s16 *movtexVerts, struct MovtexObject *d,\n                               s8 attrLayout) {\n    u8 alpha = d->a;\n    s16 x;\n    s16 y;\n    s16 z;\n    s16 baseS;\n    s16 baseT;\n    s16 s;\n    s16 t;\n    s16 offS;\n    s16 offT;\n    u8 r1;\n    u8 g1;\n    u8 b1;\n    s8 r2;\n    s8 g2;\n    s8 b2;\n\n    switch (attrLayout) {\n        case MOVTEX_LAYOUT_NOCOLOR:\n            x = movtexVerts[index * 5 + MOVTEX_ATTR_X];\n            y = movtexVerts[index * 5 + MOVTEX_ATTR_Y];\n            z = movtexVerts[index * 5 + MOVTEX_ATTR_Z];\n            baseS = movtexVerts[MOVTEX_ATTR_NOCOLOR_S];\n            baseT = movtexVerts[MOVTEX_ATTR_NOCOLOR_T];\n            offS = movtexVerts[index * 5 + MOVTEX_ATTR_NOCOLOR_S];\n            offT = movtexVerts[index * 5 + MOVTEX_ATTR_NOCOLOR_T];\n            s = baseS + ((offS * 32) * 32U);\n            t = baseT + ((offT * 32) * 32U);\n            r1 = d->r;\n            g1 = d->g;\n            b1 = d->b;\n            make_vertex(verts, index, x, y, z, s, t, r1, g1, b1, alpha);\n            break;\n        case MOVTEX_LAYOUT_COLORED:\n            x = movtexVerts[index * 8 + MOVTEX_ATTR_X];\n            y = movtexVerts[index * 8 + MOVTEX_ATTR_Y];\n            z = movtexVerts[index * 8 + MOVTEX_ATTR_Z];\n            baseS = movtexVerts[7];\n            baseT = movtexVerts[8];\n            offS = movtexVerts[index * 8 + 7];\n            offT = movtexVerts[index * 8 + 8];\n            s = baseS + ((offS * 32) * 32U);\n            t = baseT + ((offT * 32) * 32U);\n            r2 = movtexVerts[index * 8 + MOVTEX_ATTR_COLORED_R];\n            g2 = movtexVerts[index * 8 + MOVTEX_ATTR_COLORED_G];\n            b2 = movtexVerts[index * 8 + MOVTEX_ATTR_COLORED_B];\n            make_vertex(verts, index, x, y, z, s, t, r2, g2, b2, alpha);\n            break;\n    }\n}\n\n/**\n * Generate a displaylist for a MovtexObject.\n * 'attrLayout' is one of MOVTEX_LAYOUT_NOCOLOR and MOVTEX_LAYOUT_COLORED.\n */\nGfx *movtex_gen_list(s16 *movtexVerts, struct MovtexObject *movtexList, s8 attrLayout) {\n    Vtx *verts = alloc_display_list(movtexList->vtx_count * sizeof(*verts));\n    Gfx *gfxHead = alloc_display_list(11 * sizeof(*gfxHead));\n    Gfx *gfx = gfxHead;\n    s32 i;\n\n    if (verts == NULL || gfxHead == NULL) {\n        return NULL;\n    }\n\n    movtex_write_vertex_first(verts, movtexVerts, movtexList, attrLayout);\n    for (i = 1; i < movtexList->vtx_count; i++) {\n        movtex_write_vertex_index(verts, i, movtexVerts, movtexList, attrLayout);\n    }\n\n    gSPDisplayList(gfx++, movtexList->beginDl);\n    gLoadBlockTexture(gfx++, 32, 32, G_IM_FMT_RGBA, gMovtexIdToTexture[movtexList->textureId]);\n    gSPVertex(gfx++, VIRTUAL_TO_PHYSICAL2(verts), movtexList->vtx_count, 0);\n    gSPDisplayList(gfx++, movtexList->triDl);\n    gSPDisplayList(gfx++, movtexList->endDl);\n    gSPEndDisplayList(gfx);\n    return gfxHead;\n}\n\n/**\n * Function for a geo node that draws a MovtexObject in the gMovtexNonColored list.\n */\nGfx *geo_movtex_draw_nocolor(s32 callContext, struct GraphNode *node, UNUSED Mat4 mtx) {\n    s32 i;\n    s16 *movtexVerts;\n    struct GraphNodeGenerated *asGenerated;\n    Gfx *gfx = NULL;\n\n    if (callContext == GEO_CONTEXT_RENDER) {\n        i = 0;\n        asGenerated = (struct GraphNodeGenerated *) node;\n        while (gMovtexNonColored[i].movtexVerts != 0) {\n            if (gMovtexNonColored[i].geoId == asGenerated->parameter) {\n                asGenerated->fnNode.node.flags =\n                    (asGenerated->fnNode.node.flags & 0xFF) | (gMovtexNonColored[i].layer << 8);\n                movtexVerts = segmented_to_virtual(gMovtexNonColored[i].movtexVerts);\n                update_moving_texture_offset(movtexVerts, MOVTEX_ATTR_NOCOLOR_S);\n                gfx = movtex_gen_list(movtexVerts, &gMovtexNonColored[i],\n                                      MOVTEX_LAYOUT_NOCOLOR); // no perVertex colors\n                break;\n            }\n            i++;\n        }\n    }\n    return gfx;\n}\n\n/**\n * Function for a geo node that draws a MovtexObject in the gMovtexColored list.\n */\nGfx *geo_movtex_draw_colored(s32 callContext, struct GraphNode *node, UNUSED Mat4 mtx) {\n    s32 i;\n    s16 *movtexVerts;\n    struct GraphNodeGenerated *asGenerated;\n    Gfx *gfx = NULL;\n\n    if (callContext == GEO_CONTEXT_RENDER) {\n        i = 0;\n        asGenerated = (struct GraphNodeGenerated *) node;\n        while (gMovtexColored[i].movtexVerts != 0) {\n            if (gMovtexColored[i].geoId == asGenerated->parameter) {\n                asGenerated->fnNode.node.flags =\n                    (asGenerated->fnNode.node.flags & 0xFF) | (gMovtexColored[i].layer << 8);\n                movtexVerts = segmented_to_virtual(gMovtexColored[i].movtexVerts);\n                update_moving_texture_offset(movtexVerts, MOVTEX_ATTR_COLORED_S);\n                gfx = movtex_gen_list(movtexVerts, &gMovtexColored[i], MOVTEX_LAYOUT_COLORED);\n                break;\n            }\n            i++;\n        }\n    }\n    return gfx;\n}\n\n/**\n * Function for a geo node that draws a MovtexObject in the gMovtexColored list,\n * but it doesn't call update_moving_texture_offset since that happens in\n * geo_movtex_update_horizontal. This is for when a MovtexObject has multiple\n * instances (like TTC treadmills) so you don't want the animation speed to\n * increase the more instances there are.\n */\nGfx *geo_movtex_draw_colored_no_update(s32 callContext, struct GraphNode *node, UNUSED Mat4 mtx) {\n    s32 i;\n    s16 *movtexVerts;\n    struct GraphNodeGenerated *asGenerated;\n    Gfx *gfx = NULL;\n\n    if (callContext == GEO_CONTEXT_RENDER) {\n        i = 0;\n        asGenerated = (struct GraphNodeGenerated *) node;\n        while (gMovtexColored[i].movtexVerts != 0) {\n            if (gMovtexColored[i].geoId == asGenerated->parameter) {\n                asGenerated->fnNode.node.flags =\n                    (asGenerated->fnNode.node.flags & 0xFF) | (gMovtexColored[i].layer << 8);\n                movtexVerts = segmented_to_virtual(gMovtexColored[i].movtexVerts);\n                gfx = movtex_gen_list(movtexVerts, &gMovtexColored[i], MOVTEX_LAYOUT_COLORED);\n                break;\n            }\n            i++;\n        }\n    }\n    return gfx;\n}\n\n/**\n * Exact copy of geo_movtex_draw_colored_no_update, but now using the gMovtexColored2 array.\n * Used for the sand pits in SSL, both outside and inside the pyramid.\n */\nGfx *geo_movtex_draw_colored_2_no_update(s32 callContext, struct GraphNode *node, UNUSED Mat4 mtx) {\n    s32 i;\n    s16 *movtexVerts;\n    struct GraphNodeGenerated *asGenerated;\n    Gfx *gfx = NULL;\n\n    if (callContext == GEO_CONTEXT_RENDER) {\n        i = 0;\n        asGenerated = (struct GraphNodeGenerated *) node;\n        while (gMovtexColored2[i].movtexVerts != 0) {\n            if (gMovtexColored2[i].geoId == asGenerated->parameter) {\n                asGenerated->fnNode.node.flags =\n                    (asGenerated->fnNode.node.flags & 0xFF) | (gMovtexColored2[i].layer << 8);\n                movtexVerts = segmented_to_virtual(gMovtexColored2[i].movtexVerts);\n                gfx = movtex_gen_list(movtexVerts, &gMovtexColored2[i], MOVTEX_LAYOUT_COLORED);\n                break;\n            }\n            i++;\n        }\n    }\n    return gfx;\n}\n\n/**\n * Make textures move horizontally by simply adding a number to the 's' texture coordinate.\n * Used for:\n * - treadmills in Tick Tock Clock\n * - sand pits outside and inside the pyramid in Shifting Sand\n * Note that the drawing for these happen in different nodes with functions\n * geo_movtex_draw_colored_no_update and geo_movtex_draw_colored_2_no_update.\n * Usually the updating happens in the same function that draws it, but in\n * these cases the same model has multiple instances, and you don't want the\n * model to update multiple times.\n * Note that the final TTC only has one big treadmill though.\n */\nGfx *geo_movtex_update_horizontal(s32 callContext, struct GraphNode *node, UNUSED Mat4 mtx) {\n    void *movtexVerts;\n\n    if (callContext == GEO_CONTEXT_RENDER) {\n        struct GraphNodeGenerated *asGenerated = (struct GraphNodeGenerated *) node;\n\n        switch (asGenerated->parameter) {\n            case MOVTEX_SSL_SAND_PIT_OUTSIDE:\n                movtexVerts = segmented_to_virtual(ssl_movtex_tris_quicksand_pit);\n                break;\n            case MOVTEX_SSL_SAND_PIT_PYRAMID:\n                movtexVerts = segmented_to_virtual(ssl_movtex_tris_pyramid_quicksand_pit);\n                break;\n            case MOVTEX_TREADMILL_BIG:\n                movtexVerts = segmented_to_virtual(ttc_movtex_tris_big_surface_treadmill);\n                break;\n            case MOVTEX_TREADMILL_SMALL:\n                movtexVerts = segmented_to_virtual(ttc_movtex_tris_small_surface_treadmill);\n                break;\n        }\n        update_moving_texture_offset(movtexVerts, MOVTEX_ATTR_COLORED_S);\n    }\n    return NULL;\n}\n"
  },
  {
    "path": "src/game/moving_texture.h",
    "content": "#ifndef MOVING_TEXTURE_H\n#define MOVING_TEXTURE_H\n\n#include <PR/ultratypes.h>\n\n#include \"macros.h\"\n#include \"types.h\"\n\n#define ROTATE_CLOCKWISE         0\n#define ROTATE_COUNTER_CLOCKWISE 1\n\n/// Ids for textures used for moving textures\nenum MovtexRectTextureId {\n    TEXTURE_WATER,\n    TEXTURE_MIST,\n    TEXTURE_JRB_WATER,\n    TEXTURE_UNK_WATER,\n    TEXTURE_LAVA,\n    TEX_QUICKSAND_SSL,\n    TEX_PYRAMID_SAND_SSL,\n    TEX_YELLOW_TRI_TTC\n};\n\n/**\n * Contains an id and an array of MovtexQuad structs.\n */\nstruct MovtexQuadCollection {\n    /// identifier for geo nodes to refer to this MovtexQuad collection\n    s16 id;\n    /// points to a short 'n' followed by an array of n MovtexQuad structs\n    Movtex *quadArraySegmented;\n};\n\nextern f32 gPaintingMarioYEntry;\n\n// Moving texture mesh ids have for bits 8-16 a course identifier.\n// This corresponds to the numbers used in debug level select, except they are\n// re-interpreted as hexadecimal numbers. TTM is course 36, so the id is 0x36\n// and the first water quad collection in TTM has id 0x3601.\n#define MOVTEX_AREA_BBH              (0x04 << 8)\n#define MOVTEX_AREA_CCM              (0x05 << 8)\n#define MOVTEX_AREA_INSIDE_CASTLE    (0x06 << 8)\n#define MOVTEX_AREA_HMC              (0x07 << 8)\n#define MOVTEX_AREA_SSL              (0x08 << 8)\n#define MOVTEX_AREA_SL               (0x10 << 8)\n#define MOVTEX_AREA_WDW              (0x11 << 8)\n#define MOVTEX_AREA_JRB              (0x12 << 8)\n#define MOVTEX_AREA_THI              (0x13 << 8)\n#define MOVTEX_AREA_TTC              (0x14 << 8)\n#define MOVTEX_AREA_CASTLE_GROUNDS   (0x16 << 8)\n#define MOVTEX_AREA_BITFS            (0x19 << 8)\n#define MOVTEX_AREA_LLL              (0x22 << 8)\n#define MOVTEX_AREA_DDD              (0x23 << 8)\n#define MOVTEX_AREA_WF               (0x24 << 8)\n#define MOVTEX_AREA_CASTLE_COURTYARD (0x26 << 8)\n#define MOVTEX_AREA_COTMC            (0x28 << 8)\n#define MOVTEX_AREA_TTM              (0x36 << 8)\n\n// Quad collections\n#define BBH_MOVTEX_MERRY_GO_ROUND_WATER_ENTRANCE    (   0 | MOVTEX_AREA_BBH)\n#define BBH_MOVTEX_MERRY_GO_ROUND_WATER_SIDE        (   1 | MOVTEX_AREA_BBH)\n#define CCM_MOVTEX_PENGUIN_PUDDLE_WATER             (   1 | MOVTEX_AREA_CCM)\n#define INSIDE_CASTLE_MOVTEX_GREEN_ROOM_WATER       (   0 | MOVTEX_AREA_INSIDE_CASTLE)\n#define INSIDE_CASTLE_MOVTEX_MOAT_WATER             (0x12 | MOVTEX_AREA_INSIDE_CASTLE)\n#define HMC_MOVTEX_DORRIE_POOL_WATER                (   1 | MOVTEX_AREA_HMC)\n#define HMC_MOVTEX_TOXIC_MAZE_MIST                  (   2 | MOVTEX_AREA_HMC)\n#define SSL_MOVTEX_PUDDLE_WATER                     (   1 | MOVTEX_AREA_SSL)\n#define SSL_MOVTEX_TOXBOX_QUICKSAND_MIST            (0x51 | MOVTEX_AREA_SSL)\n#define SL_MOVTEX_WATER                             (   1 | MOVTEX_AREA_SL)\n#define WDW_MOVTEX_AREA1_WATER                      (   1 | MOVTEX_AREA_WDW)\n#define WDW_MOVTEX_AREA2_WATER                      (   2 | MOVTEX_AREA_WDW)\n#define JRB_MOVTEX_WATER                            (   1 | MOVTEX_AREA_JRB)\n#define JRB_MOVTEX_INITIAL_MIST                     (   5 | MOVTEX_AREA_JRB)\n#define JRB_MOVTEX_SUNKEN_SHIP_WATER                (   2 | MOVTEX_AREA_JRB)\n#define THI_MOVTEX_AREA1_WATER                      (   1 | MOVTEX_AREA_THI)\n#define THI_MOVTEX_AREA2_WATER                      (   2 | MOVTEX_AREA_THI)\n#define CASTLE_GROUNDS_MOVTEX_WATER                 (   1 | MOVTEX_AREA_CASTLE_GROUNDS)\n#define LLL_MOVTEX_VOLCANO_FLOOR_LAVA               (   2 | MOVTEX_AREA_LLL)\n#define DDD_MOVTEX_AREA1_WATER                      (   1 | MOVTEX_AREA_DDD)\n#define DDD_MOVTEX_AREA2_WATER                      (   2 | MOVTEX_AREA_DDD)\n#define WF_MOVTEX_WATER                             (   1 | MOVTEX_AREA_WF)\n#define CASTLE_COURTYARD_MOVTEX_STAR_STATUE_WATER   (   1 | MOVTEX_AREA_CASTLE_COURTYARD)\n#define TTM_MOVTEX_PUDDLE                           (   1 | MOVTEX_AREA_TTM)\n\n// Non-colored, unique movtex meshes (drawn in level geo)\n#define MOVTEX_PYRAMID_SAND_PATHWAY_FRONT (1 | MOVTEX_AREA_SSL)\n#define MOVTEX_PYRAMID_SAND_PATHWAY_FLOOR (2 | MOVTEX_AREA_SSL)\n#define MOVTEX_PYRAMID_SAND_PATHWAY_SIDE  (3 | MOVTEX_AREA_SSL)\n#define MOVTEX_CASTLE_WATERFALL           (1 | MOVTEX_AREA_CASTLE_GROUNDS)\n#define MOVTEX_BITFS_LAVA_FIRST           (1 | MOVTEX_AREA_BITFS)\n#define MOVTEX_BITFS_LAVA_SECOND          (2 | MOVTEX_AREA_BITFS)\n#define MOVTEX_BITFS_LAVA_FLOOR           (3 | MOVTEX_AREA_BITFS)\n#define MOVTEX_LLL_LAVA_FLOOR             (1 | MOVTEX_AREA_LLL)\n#define MOVTEX_VOLCANO_LAVA_FALL          (2 | MOVTEX_AREA_LLL)\n#define MOVTEX_COTMC_WATER                (1 | MOVTEX_AREA_COTMC)\n#define MOVTEX_TTM_BEGIN_WATERFALL        (1 | MOVTEX_AREA_TTM)\n#define MOVTEX_TTM_END_WATERFALL          (2 | MOVTEX_AREA_TTM)\n#define MOVTEX_TTM_BEGIN_PUDDLE_WATERFALL (3 | MOVTEX_AREA_TTM)\n#define MOVTEX_TTM_END_PUDDLE_WATERFALL   (4 | MOVTEX_AREA_TTM)\n#define MOVTEX_TTM_PUDDLE_WATERFALL       (5 | MOVTEX_AREA_TTM)\n\n// Colored, unique movtex meshes (drawn in level geo)\n#define MOVTEX_SSL_PYRAMID_SIDE    (1 | MOVTEX_AREA_SSL)\n#define MOVTEX_SSL_PYRAMID_CORNER  (2 | MOVTEX_AREA_SSL)\n#define MOVTEX_SSL_COURSE_EDGE     (3 | MOVTEX_AREA_SSL)\n\n// Shared movtex meshes (drawn in object geo)\n#define MOVTEX_SSL_SAND_PIT_OUTSIDE  (1 | MOVTEX_AREA_SSL)\n#define MOVTEX_SSL_SAND_PIT_PYRAMID  (2 | MOVTEX_AREA_SSL)\n#define MOVTEX_TREADMILL_BIG         (0 | MOVTEX_AREA_TTC)\n#define MOVTEX_TREADMILL_SMALL       (1 | MOVTEX_AREA_TTC)\n\nGfx *geo_wdw_set_initial_water_level(s32 callContext, UNUSED struct GraphNode *node, UNUSED Mat4 mtx);\nGfx *geo_movtex_pause_control(s32 callContext, UNUSED struct GraphNode *node, UNUSED Mat4 mtx);\nGfx *geo_movtex_draw_water_regions(s32 callContext, struct GraphNode *node, UNUSED Mat4 mtx);\nGfx *geo_movtex_draw_nocolor(s32 callContext, struct GraphNode *node, UNUSED Mat4 mtx);\nGfx *geo_movtex_draw_colored(s32 callContext, struct GraphNode *node, UNUSED Mat4 mtx);\nGfx *geo_movtex_draw_colored_no_update(s32 callContext, struct GraphNode *node, UNUSED Mat4 mtx);\nGfx *geo_movtex_draw_colored_2_no_update(s32 callContext, struct GraphNode *node, UNUSED Mat4 mtx);\nGfx *geo_movtex_update_horizontal(s32 callContext, struct GraphNode *node, UNUSED Mat4 mtx);\nGfx *geo_movtex_draw_colored_no_update(s32 callContext, struct GraphNode *node, UNUSED Mat4 mtx);\n\n#endif // MOVING_TEXTURE_H\n"
  },
  {
    "path": "src/game/obj_behaviors.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"sm64.h\"\n#include \"area.h\"\n#include \"audio/external.h\"\n#include \"behavior_actions.h\"\n#include \"behavior_data.h\"\n#include \"camera.h\"\n#include \"course_table.h\"\n#include \"dialog_ids.h\"\n#include \"engine/behavior_script.h\"\n#include \"engine/math_util.h\"\n#include \"engine/surface_collision.h\"\n#include \"envfx_bubbles.h\"\n#include \"game_init.h\"\n#include \"ingame_menu.h\"\n#include \"interaction.h\"\n#include \"level_misc_macros.h\"\n#include \"level_table.h\"\n#include \"level_update.h\"\n#include \"levels/bob/header.h\"\n#include \"levels/ttm/header.h\"\n#include \"mario.h\"\n#include \"mario_actions_cutscene.h\"\n#include \"mario_misc.h\"\n#include \"memory.h\"\n#include \"obj_behaviors.h\"\n#include \"object_helpers.h\"\n#include \"object_list_processor.h\"\n#include \"rendering_graph_node.h\"\n#include \"save_file.h\"\n#include \"spawn_object.h\"\n#include \"spawn_sound.h\"\n#include \"rumble_init.h\"\n\n/**\n * @file obj_behaviors.c\n * This file contains a portion of the obj behaviors and many helper functions for those\n * specific behaviors. Few functions besides the bhv_ functions are used elsewhere in the repo.\n */\n\n#define o gCurrentObject\n\n#define OBJ_COL_FLAG_GROUNDED   (1 << 0)\n#define OBJ_COL_FLAG_HIT_WALL   (1 << 1)\n#define OBJ_COL_FLAG_UNDERWATER (1 << 2)\n#define OBJ_COL_FLAG_NO_Y_VEL   (1 << 3)\n#define OBJ_COL_FLAGS_LANDED    (OBJ_COL_FLAG_GROUNDED | OBJ_COL_FLAG_NO_Y_VEL)\n\n/**\n * Current object floor as defined in object_step.\n */\nstatic struct Surface *sObjFloor;\n\n/**\n * Set to false when an object close to the floor should not be oriented in reference\n * to it. Happens with boulder, falling pillar, and the rolling snowman body.\n */\nstatic s8 sOrientObjWithFloor = TRUE;\n\n/**\n * Keeps track of Mario's previous non-zero room.\n * Helps keep track of room when Mario is over an object.\n */\ns16 sPrevCheckMarioRoom = 0;\n\n/**\n * Tracks whether or not Yoshi has walked/jumped off the roof.\n */\ns8 sYoshiDead = FALSE;\n\nextern void *ccm_seg7_trajectory_snowman;\nextern void *inside_castle_seg7_trajectory_mips;\n\n/**\n * Resets yoshi as spawned/despawned upon new file select.\n * Possibly a function with stubbed code.\n */\nvoid set_yoshi_as_not_dead(void) {\n    sYoshiDead = FALSE;\n}\n\n/**\n * An unused geo function. Bears strong similarity to geo_bits_bowser_coloring, and relates something\n * of the opacity of an object to something else. Perhaps like, giving a parent object the same\n * opacity?\n */\nGfx UNUSED *geo_obj_transparency_something(s32 callContext, struct GraphNode *node, UNUSED Mat4 *mtx) {\n    Gfx *gfxHead;\n    Gfx *gfx;\n    struct Object *heldObject;\n    struct Object *obj;\n    UNUSED struct Object *unusedObject;\n    UNUSED u8 filler[4];\n\n    gfxHead = NULL;\n\n    if (callContext == GEO_CONTEXT_RENDER) {\n        heldObject = (struct Object *) gCurGraphNodeObject;\n        obj = (struct Object *) node;\n        unusedObject = (struct Object *) node;\n\n        if (gCurGraphNodeHeldObject != NULL) {\n            heldObject = gCurGraphNodeHeldObject->objNode;\n        }\n\n        gfxHead = alloc_display_list(3 * sizeof(Gfx));\n        gfx = gfxHead;\n        obj->header.gfx.node.flags =\n            (obj->header.gfx.node.flags & 0xFF) | (GRAPH_NODE_TYPE_FUNCTIONAL | GRAPH_NODE_TYPE_400);\n\n        gDPSetEnvColor(gfx++, 255, 255, 255, heldObject->oOpacity);\n\n        gSPEndDisplayList(gfx);\n    }\n\n    return gfxHead;\n}\n\n/**\n * An absolute value function.\n */\nf32 absf_2(f32 f) {\n    if (f < 0) {\n        f *= -1.0f;\n    }\n    return f;\n}\n\n/**\n * Turns an object away from floors/walls that it runs into.\n */\nvoid turn_obj_away_from_surface(f32 velX, f32 velZ, f32 nX, UNUSED f32 nY, f32 nZ, f32 *objYawX,\n                            f32 *objYawZ) {\n    *objYawX = (nZ * nZ - nX * nX) * velX / (nX * nX + nZ * nZ)\n               - 2 * velZ * (nX * nZ) / (nX * nX + nZ * nZ);\n\n    *objYawZ = (nX * nX - nZ * nZ) * velZ / (nX * nX + nZ * nZ)\n               - 2 * velX * (nX * nZ) / (nX * nX + nZ * nZ);\n}\n\n/**\n * Finds any wall collisions, applies them, and turns away from the surface.\n */\ns8 obj_find_wall(f32 objNewX, f32 objY, f32 objNewZ, f32 objVelX, f32 objVelZ) {\n    struct WallCollisionData hitbox;\n    f32 wall_nX, wall_nY, wall_nZ, objVelXCopy, objVelZCopy, objYawX, objYawZ;\n\n    hitbox.x = objNewX;\n    hitbox.y = objY;\n    hitbox.z = objNewZ;\n    hitbox.offsetY = o->hitboxHeight / 2;\n    hitbox.radius = o->hitboxRadius;\n\n    if (find_wall_collisions(&hitbox) != 0) {\n        o->oPosX = hitbox.x;\n        o->oPosY = hitbox.y;\n        o->oPosZ = hitbox.z;\n\n        wall_nX = hitbox.walls[0]->normal.x;\n        wall_nY = hitbox.walls[0]->normal.y;\n        wall_nZ = hitbox.walls[0]->normal.z;\n\n        objVelXCopy = objVelX;\n        objVelZCopy = objVelZ;\n\n        // Turns away from the first wall only.\n        turn_obj_away_from_surface(objVelXCopy, objVelZCopy, wall_nX, wall_nY, wall_nZ, &objYawX, &objYawZ);\n\n        o->oMoveAngleYaw = atan2s(objYawZ, objYawX);\n        return FALSE;\n    }\n\n    return TRUE;\n}\n\n/**\n * Turns an object away from steep floors, similarly to walls.\n */\ns8 turn_obj_away_from_steep_floor(struct Surface *objFloor, f32 floorY, f32 objVelX, f32 objVelZ) {\n    f32 floor_nX, floor_nY, floor_nZ, objVelXCopy, objVelZCopy, objYawX, objYawZ;\n\n    if (objFloor == NULL) {\n        //! (OOB Object Crash) TRUNC overflow exception after 36 minutes\n        o->oMoveAngleYaw += 32767.999200000002; /* ¯\\_(ツ)_/¯ */\n        return FALSE;\n    }\n\n    floor_nX = objFloor->normal.x;\n    floor_nY = objFloor->normal.y;\n    floor_nZ = objFloor->normal.z;\n\n    // If the floor is steep and we are below it (i.e. walking into it), turn away from the floor.\n    if (floor_nY < 0.5 && floorY > o->oPosY) {\n        objVelXCopy = objVelX;\n        objVelZCopy = objVelZ;\n        turn_obj_away_from_surface(objVelXCopy, objVelZCopy, floor_nX, floor_nY, floor_nZ, &objYawX,\n                               &objYawZ);\n        o->oMoveAngleYaw = atan2s(objYawZ, objYawX);\n        return FALSE;\n    }\n\n    return TRUE;\n}\n\n/**\n * Orients an object with the given normals, typically the surface under the object.\n */\nvoid obj_orient_graph(struct Object *obj, f32 normalX, f32 normalY, f32 normalZ) {\n    Vec3f objVisualPosition, surfaceNormals;\n\n    Mat4 *throwMatrix;\n\n    // Passes on orienting certain objects that shouldn't be oriented, like boulders.\n    if (!sOrientObjWithFloor) {\n        return;\n    }\n\n    // Passes on orienting billboard objects, i.e. coins, trees, etc.\n    if (obj->header.gfx.node.flags & GRAPH_RENDER_BILLBOARD) {\n        return;\n    }\n\n    throwMatrix = alloc_display_list(sizeof(*throwMatrix));\n    // If out of memory, fail to try orienting the object.\n    if (throwMatrix == NULL) {\n        return;\n    }\n\n    objVisualPosition[0] = obj->oPosX;\n    objVisualPosition[1] = obj->oPosY + obj->oGraphYOffset;\n    objVisualPosition[2] = obj->oPosZ;\n\n    surfaceNormals[0] = normalX;\n    surfaceNormals[1] = normalY;\n    surfaceNormals[2] = normalZ;\n\n    mtxf_align_terrain_normal(*throwMatrix, surfaceNormals, objVisualPosition, obj->oFaceAngleYaw);\n    obj->header.gfx.throwMatrix = throwMatrix;\n}\n\n/**\n * Determines an object's forward speed multiplier.\n */\nvoid calc_obj_friction(f32 *objFriction, f32 floor_nY) {\n    if (floor_nY < 0.2 && o->oFriction < 0.9999) {\n        *objFriction = 0;\n    } else {\n        *objFriction = o->oFriction;\n    }\n}\n\n/**\n * Updates an objects speed for gravity and updates Y position.\n */\nvoid calc_new_obj_vel_and_pos_y(struct Surface *objFloor, f32 objFloorY, f32 objVelX, f32 objVelZ) {\n    f32 floor_nX = objFloor->normal.x;\n    f32 floor_nY = objFloor->normal.y;\n    f32 floor_nZ = objFloor->normal.z;\n    f32 objFriction;\n\n    // Caps vertical speed with a \"terminal velocity\".\n    o->oVelY -= o->oGravity;\n    if (o->oVelY > 75.0) {\n        o->oVelY = 75.0;\n    }\n    if (o->oVelY < -75.0) {\n        o->oVelY = -75.0;\n    }\n\n    o->oPosY += o->oVelY;\n\n    //Snap the object up to the floor.\n    if (o->oPosY < objFloorY) {\n        o->oPosY = objFloorY;\n\n        // Bounces an object if the ground is hit fast enough.\n        if (o->oVelY < -17.5) {\n            o->oVelY = -(o->oVelY / 2);\n        } else {\n            o->oVelY = 0;\n        }\n    }\n\n    //! (Obj Position Crash) If you got an object with height past 2^31, the game would crash.\n    if ((s32) o->oPosY >= (s32) objFloorY && (s32) o->oPosY < (s32) objFloorY + 37) {\n        obj_orient_graph(o, floor_nX, floor_nY, floor_nZ);\n\n        // Adds horizontal component of gravity for horizontal speed.\n        objVelX += floor_nX * (floor_nX * floor_nX + floor_nZ * floor_nZ)\n                   / (floor_nX * floor_nX + floor_nY * floor_nY + floor_nZ * floor_nZ) * o->oGravity\n                   * 2;\n        objVelZ += floor_nZ * (floor_nX * floor_nX + floor_nZ * floor_nZ)\n                   / (floor_nX * floor_nX + floor_nY * floor_nY + floor_nZ * floor_nZ) * o->oGravity\n                   * 2;\n\n        if (objVelX < 0.000001 && objVelX > -0.000001) {\n            objVelX = 0;\n        }\n        if (objVelZ < 0.000001 && objVelZ > -0.000001) {\n            objVelZ = 0;\n        }\n\n        if (objVelX != 0 || objVelZ != 0) {\n            o->oMoveAngleYaw = atan2s(objVelZ, objVelX);\n        }\n\n        calc_obj_friction(&objFriction, floor_nY);\n        o->oForwardVel = sqrtf(objVelX * objVelX + objVelZ * objVelZ) * objFriction;\n    }\n}\n\nvoid calc_new_obj_vel_and_pos_y_underwater(struct Surface *objFloor, f32 floorY, f32 objVelX, f32 objVelZ,\n                                    f32 waterY) {\n    f32 floor_nX = objFloor->normal.x;\n    f32 floor_nY = objFloor->normal.y;\n    f32 floor_nZ = objFloor->normal.z;\n\n    f32 netYAccel = (1.0f - o->oBuoyancy) * (-1.0f * o->oGravity);\n    o->oVelY -= netYAccel;\n\n    // Caps vertical speed with a \"terminal velocity\".\n    if (o->oVelY > 75.0) {\n        o->oVelY = 75.0;\n    }\n    if (o->oVelY < -75.0) {\n        o->oVelY = -75.0;\n    }\n\n    o->oPosY += o->oVelY;\n\n    //Snap the object up to the floor.\n    if (o->oPosY < floorY) {\n        o->oPosY = floorY;\n\n        // Bounces an object if the ground is hit fast enough.\n        if (o->oVelY < -17.5) {\n            o->oVelY = -(o->oVelY / 2);\n        } else {\n            o->oVelY = 0;\n        }\n    }\n\n    // If moving fast near the surface of the water, flip vertical speed? To emulate skipping?\n    if (o->oForwardVel > 12.5 && (waterY + 30.0f) > o->oPosY && (waterY - 30.0f) < o->oPosY) {\n        o->oVelY = -o->oVelY;\n    }\n\n    if ((s32) o->oPosY >= (s32) floorY && (s32) o->oPosY < (s32) floorY + 37) {\n        obj_orient_graph(o, floor_nX, floor_nY, floor_nZ);\n\n        // Adds horizontal component of gravity for horizontal speed.\n        objVelX += floor_nX * (floor_nX * floor_nX + floor_nZ * floor_nZ)\n                   / (floor_nX * floor_nX + floor_nY * floor_nY + floor_nZ * floor_nZ) * netYAccel * 2;\n        objVelZ += floor_nZ * (floor_nX * floor_nX + floor_nZ * floor_nZ)\n                   / (floor_nX * floor_nX + floor_nY * floor_nY + floor_nZ * floor_nZ) * netYAccel * 2;\n    }\n\n    if (objVelX < 0.000001 && objVelX > -0.000001) {\n        objVelX = 0;\n    }\n    if (objVelZ < 0.000001 && objVelZ > -0.000001) {\n        objVelZ = 0;\n    }\n\n    if (o->oVelY < 0.000001 && o->oVelY > -0.000001) {\n        o->oVelY = 0;\n    }\n\n    if (objVelX != 0 || objVelZ != 0) {\n        o->oMoveAngleYaw = atan2s(objVelZ, objVelX);\n    }\n\n    // Decreases both vertical velocity and forward velocity. Likely so that skips above\n    // don't loop infinitely.\n    o->oForwardVel = sqrtf(objVelX * objVelX + objVelZ * objVelZ) * 0.8;\n    o->oVelY *= 0.8;\n}\n\n/**\n * Updates an objects position from oForwardVel and oMoveAngleYaw.\n */\nvoid obj_update_pos_vel_xz(void) {\n    f32 xVel = o->oForwardVel * sins(o->oMoveAngleYaw);\n    f32 zVel = o->oForwardVel * coss(o->oMoveAngleYaw);\n\n    o->oPosX += xVel;\n    o->oPosZ += zVel;\n}\n\n/**\n * Generates splashes if at surface of water, entering water, or bubbles\n * if underwater.\n */\nvoid obj_splash(s32 waterY, s32 objY) {\n    u32 globalTimer = gGlobalTimer;\n\n    // Spawns waves if near surface of water and plays a noise if entering.\n    if ((f32)(waterY + 30) > o->oPosY && o->oPosY > (f32)(waterY - 30)) {\n        spawn_object(o, MODEL_IDLE_WATER_WAVE, bhvObjectWaterWave);\n\n        if (o->oVelY < -20.0f) {\n            cur_obj_play_sound_2(SOUND_OBJ_DIVING_INTO_WATER);\n        }\n    }\n\n    // Spawns bubbles if underwater.\n    if ((objY + 50) < waterY && !(globalTimer & 31)) {\n        spawn_object(o, MODEL_WHITE_PARTICLE_SMALL, bhvObjectBubble);\n    }\n}\n\n/**\n * Generic object move function. Handles walls, water, floors, and gravity.\n * Returns flags for certain interactions.\n */\ns16 object_step(void) {\n    f32 objX = o->oPosX;\n    f32 objY = o->oPosY;\n    f32 objZ = o->oPosZ;\n\n    f32 floorY;\n    f32 waterY = FLOOR_LOWER_LIMIT_MISC;\n\n    f32 objVelX = o->oForwardVel * sins(o->oMoveAngleYaw);\n    f32 objVelZ = o->oForwardVel * coss(o->oMoveAngleYaw);\n\n    s16 collisionFlags = 0;\n\n    // Find any wall collisions, receive the push, and set the flag.\n    if (obj_find_wall(objX + objVelX, objY, objZ + objVelZ, objVelX, objVelZ) == 0) {\n        collisionFlags += OBJ_COL_FLAG_HIT_WALL;\n    }\n\n    floorY = find_floor(objX + objVelX, objY, objZ + objVelZ, &sObjFloor);\n    if (turn_obj_away_from_steep_floor(sObjFloor, floorY, objVelX, objVelZ) == 1) {\n        waterY = find_water_level(objX + objVelX, objZ + objVelZ);\n        if (waterY > objY) {\n            calc_new_obj_vel_and_pos_y_underwater(sObjFloor, floorY, objVelX, objVelZ, waterY);\n            collisionFlags += OBJ_COL_FLAG_UNDERWATER;\n        } else {\n            calc_new_obj_vel_and_pos_y(sObjFloor, floorY, objVelX, objVelZ);\n        }\n    } else {\n        // Treat any awkward floors similar to a wall.\n        collisionFlags +=\n            ((collisionFlags & OBJ_COL_FLAG_HIT_WALL) ^ OBJ_COL_FLAG_HIT_WALL);\n    }\n\n    obj_update_pos_vel_xz();\n    if ((s32) o->oPosY == (s32) floorY) {\n        collisionFlags += OBJ_COL_FLAG_GROUNDED;\n    }\n\n    if ((s32) o->oVelY == 0) {\n        collisionFlags += OBJ_COL_FLAG_NO_Y_VEL;\n    }\n\n    // Generate a splash if in water.\n    obj_splash((s32) waterY, (s32) o->oPosY);\n    return collisionFlags;\n}\n\n/**\n * Takes an object step but does not orient with the object's floor.\n * Used for boulders, falling pillars, and the rolling snowman body.\n */\ns16 object_step_without_floor_orient(void) {\n    s16 collisionFlags = 0;\n    sOrientObjWithFloor = FALSE;\n    collisionFlags = object_step();\n    sOrientObjWithFloor = TRUE;\n\n    return collisionFlags;\n}\n\n/**\n * Uses an object's forward velocity and yaw to move its X, Y, and Z positions.\n * This does accept an object as an argument, though it is always called with `o`.\n * If it wasn't called with `o`, it would modify `o`'s X and Z velocities based on\n * `obj`'s forward velocity and yaw instead of `o`'s, and wouldn't update `o`'s\n * position.\n */\nvoid obj_move_xyz_using_fvel_and_yaw(struct Object *obj) {\n    o->oVelX = obj->oForwardVel * sins(obj->oMoveAngleYaw);\n    o->oVelZ = obj->oForwardVel * coss(obj->oMoveAngleYaw);\n\n    obj->oPosX += o->oVelX;\n    obj->oPosY += obj->oVelY;\n    obj->oPosZ += o->oVelZ;\n}\n\n/**\n * Checks if a point is within distance from Mario's graphical position. Test is exclusive.\n */\ns8 is_point_within_radius_of_mario(f32 x, f32 y, f32 z, s32 dist) {\n    f32 mGfxX = gMarioObject->header.gfx.pos[0];\n    f32 mGfxY = gMarioObject->header.gfx.pos[1];\n    f32 mGfxZ = gMarioObject->header.gfx.pos[2];\n\n    if ((x - mGfxX) * (x - mGfxX) + (y - mGfxY) * (y - mGfxY) + (z - mGfxZ) * (z - mGfxZ)\n        < (f32)(dist * dist)) {\n        return TRUE;\n    }\n\n    return FALSE;\n}\n\n/**\n * Checks whether a point is within distance of a given point. Test is exclusive.\n */\ns8 is_point_close_to_object(struct Object *obj, f32 x, f32 y, f32 z, s32 dist) {\n    f32 objX = obj->oPosX;\n    f32 objY = obj->oPosY;\n    f32 objZ = obj->oPosZ;\n\n    if ((x - objX) * (x - objX) + (y - objY) * (y - objY) + (z - objZ) * (z - objZ)\n        < (f32)(dist * dist)) {\n        return TRUE;\n    }\n\n    return FALSE;\n}\n\n/**\n * Sets an object as visible if within a certain distance of Mario's graphical position.\n */\nvoid set_object_visibility(struct Object *obj, s32 dist) {\n    f32 objX = obj->oPosX;\n    f32 objY = obj->oPosY;\n    f32 objZ = obj->oPosZ;\n\n    if (is_point_within_radius_of_mario(objX, objY, objZ, dist) == TRUE) {\n        obj->header.gfx.node.flags &= ~GRAPH_RENDER_INVISIBLE;\n    } else {\n        obj->header.gfx.node.flags |= GRAPH_RENDER_INVISIBLE;\n    }\n}\n\n/**\n * Turns an object towards home if Mario is not near to it.\n */\ns8 obj_return_home_if_safe(struct Object *obj, f32 homeX, f32 y, f32 homeZ, s32 dist) {\n    f32 homeDistX = homeX - obj->oPosX;\n    f32 homeDistZ = homeZ - obj->oPosZ;\n    s16 angleTowardsHome = atan2s(homeDistZ, homeDistX);\n\n    if (is_point_within_radius_of_mario(homeX, y, homeZ, dist) == TRUE) {\n        return TRUE;\n    } else {\n        obj->oMoveAngleYaw = approach_s16_symmetric(obj->oMoveAngleYaw, angleTowardsHome, 320);\n    }\n\n    return FALSE;\n}\n\n/**\n * Randomly displaces an objects home if RNG says to, and turns the object towards its home.\n */\nvoid obj_return_and_displace_home(struct Object *obj, f32 homeX, UNUSED f32 homeY, f32 homeZ, s32 baseDisp) {\n    s16 angleToNewHome;\n    f32 homeDistX, homeDistZ;\n\n    if ((s32)(random_float() * 50.0f) == 0) {\n        obj->oHomeX = (f32)(baseDisp * 2) * random_float() - (f32) baseDisp + homeX;\n        obj->oHomeZ = (f32)(baseDisp * 2) * random_float() - (f32) baseDisp + homeZ;\n    }\n\n    homeDistX = obj->oHomeX - obj->oPosX;\n    homeDistZ = obj->oHomeZ - obj->oPosZ;\n    angleToNewHome = atan2s(homeDistZ, homeDistX);\n    obj->oMoveAngleYaw = approach_s16_symmetric(obj->oMoveAngleYaw, angleToNewHome, 320);\n}\n\n/**\n * A series of checks using sin and cos to see if a given angle is facing in the same direction\n * of a given angle, within a certain range.\n */\ns8 obj_check_if_facing_toward_angle(u32 base, u32 goal, s16 range) {\n    s16 dAngle = (u16) goal - (u16) base;\n\n    if (((f32) sins(-range) < (f32) sins(dAngle)) && ((f32) sins(dAngle) < (f32) sins(range))\n        && (coss(dAngle) > 0)) {\n        return TRUE;\n    }\n\n    return FALSE;\n}\n\n/**\n * Finds any wall collisions and returns what the displacement vector would be.\n */\ns8 obj_find_wall_displacement(Vec3f dist, f32 x, f32 y, f32 z, f32 radius) {\n    struct WallCollisionData hitbox;\n    UNUSED u8 filler[32];\n\n    hitbox.x = x;\n    hitbox.y = y;\n    hitbox.z = z;\n    hitbox.offsetY = 10.0f;\n    hitbox.radius = radius;\n\n    if (find_wall_collisions(&hitbox) != 0) {\n        dist[0] = hitbox.x - x;\n        dist[1] = hitbox.y - y;\n        dist[2] = hitbox.z - z;\n        return TRUE;\n    } else {\n        return FALSE;\n    }\n}\n\n/**\n * Spawns a number of coins at the location of an object\n * with a random forward velocity, y velocity, and direction.\n */\nvoid obj_spawn_yellow_coins(struct Object *obj, s8 nCoins) {\n    struct Object *coin;\n    s8 count;\n\n    for (count = 0; count < nCoins; count++) {\n        coin = spawn_object(obj, MODEL_YELLOW_COIN, bhvMovingYellowCoin);\n        coin->oForwardVel = random_float() * 20;\n        coin->oVelY = random_float() * 40 + 20;\n        coin->oMoveAngleYaw = random_u16();\n    }\n}\n\n/**\n * Controls whether certain objects should flicker/when to despawn.\n */\ns8 obj_flicker_and_disappear(struct Object *obj, s16 lifeSpan) {\n    if (obj->oTimer < lifeSpan) {\n        return FALSE;\n    }\n\n    if (obj->oTimer < lifeSpan + 40) {\n        if (obj->oTimer % 2 != 0) {\n            obj->header.gfx.node.flags |= GRAPH_RENDER_INVISIBLE;\n        } else {\n            obj->header.gfx.node.flags &= ~GRAPH_RENDER_INVISIBLE;\n        }\n    } else {\n        obj->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n        return TRUE;\n    }\n\n    return FALSE;\n}\n\n/**\n * Checks if a given room is Mario's current room, even if on an object.\n */\ns8 current_mario_room_check(s16 room) {\n    s16 result;\n\n    // Since object surfaces have room 0, this tests if the surface is an\n    // object first and uses the last room if so.\n    if (gMarioCurrentRoom == 0) {\n        if (room == sPrevCheckMarioRoom) {\n            return TRUE;\n        } else {\n            return FALSE;\n        }\n    } else {\n        if (room == gMarioCurrentRoom) {\n            result = TRUE;\n        } else {\n            result = FALSE;\n        }\n\n        sPrevCheckMarioRoom = gMarioCurrentRoom;\n    }\n\n    return result;\n}\n\n/**\n * Triggers dialog when Mario is facing an object and controls it while in the dialog.\n */\ns16 trigger_obj_dialog_when_facing(s32 *inDialog, s16 dialogID, f32 dist, s32 actionArg) {\n    if ((is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, (s32) dist) == TRUE\n         && obj_check_if_facing_toward_angle(o->oFaceAngleYaw, gMarioObject->header.gfx.angle[1] + 0x8000, 0x1000) == TRUE\n         && obj_check_if_facing_toward_angle(o->oMoveAngleYaw, o->oAngleToMario, 0x1000) == TRUE)\n        || (*inDialog == TRUE)) {\n        *inDialog = TRUE;\n\n        if (set_mario_npc_dialog(actionArg) == MARIO_DIALOG_STATUS_SPEAK) { //If Mario is speaking.\n            s16 dialogResponse = cutscene_object_with_dialog(CUTSCENE_DIALOG, o, dialogID);\n            if (dialogResponse != DIALOG_RESPONSE_NONE) {\n                set_mario_npc_dialog(MARIO_DIALOG_STOP);\n                *inDialog = FALSE;\n                return dialogResponse;\n            }\n            return 0;\n        }\n    }\n\n    return 0;\n}\n\n/**\n *Checks if a floor is one that should cause an object to \"die\".\n */\nvoid obj_check_floor_death(s16 collisionFlags, struct Surface *floor) {\n    if (floor == NULL) {\n        return;\n    }\n\n    if ((collisionFlags & OBJ_COL_FLAG_GROUNDED) == OBJ_COL_FLAG_GROUNDED) {\n        switch (floor->type) {\n            case SURFACE_BURNING:\n                o->oAction = OBJ_ACT_LAVA_DEATH;\n                break;\n            //! @BUG Doesn't check for the vertical wind death floor.\n            case SURFACE_DEATH_PLANE:\n                o->oAction = OBJ_ACT_DEATH_PLANE_DEATH;\n                break;\n            default:\n                break;\n        }\n    }\n}\n\n/**\n * Controls an object dying in lava by creating smoke, sinking the object, playing\n * audio, and eventually despawning it. Returns TRUE when the obj is dead.\n */\ns8 obj_lava_death(void) {\n    struct Object *deathSmoke;\n\n    if (o->oTimer > 30) {\n        o->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n        return TRUE;\n    } else {\n        // Sinking effect\n        o->oPosY -= 10.0f;\n    }\n\n    if ((o->oTimer % 8) == 0) {\n        cur_obj_play_sound_2(SOUND_OBJ_BULLY_EXPLODE_2);\n        deathSmoke = spawn_object(o, MODEL_SMOKE, bhvBobombBullyDeathSmoke);\n        deathSmoke->oPosX += random_float() * 20.0f;\n        deathSmoke->oPosY += random_float() * 20.0f;\n        deathSmoke->oPosZ += random_float() * 20.0f;\n        deathSmoke->oForwardVel = random_float() * 10.0f;\n    }\n\n    return FALSE;\n}\n\n/**\n * Spawns an orange number object relatively, such as those that count up for secrets.\n */\nvoid spawn_orange_number(s8 bhvParam, s16 relX, s16 relY, s16 relZ) {\n    struct Object *orangeNumber;\n\n    if (bhvParam >= 10) {\n        return;\n    }\n\n    orangeNumber = spawn_object_relative(bhvParam, relX, relY, relZ, o, MODEL_NUMBER, bhvOrangeNumber);\n    orangeNumber->oPosY += 25.0f;\n}\n\n/**\n * Unused variables for debug_sequence_tracker.\n */\ns8 sDebugSequenceTracker = 0;\ns8 sDebugTimer = 0;\n\n/**\n * Unused presumably debug function that tracks for a sequence of inputs.\n */\nUNUSED s8 debug_sequence_tracker(s16 debugInputSequence[]) {\n    // If end of sequence reached, return true.\n    if (debugInputSequence[sDebugSequenceTracker] == 0) {\n        sDebugSequenceTracker = 0;\n        return TRUE;\n    }\n\n    // If the third controller button pressed is next in sequence, reset timer and progress to next value.\n    if (debugInputSequence[sDebugSequenceTracker] & gPlayer3Controller->buttonPressed) {\n        sDebugSequenceTracker++;\n        sDebugTimer = 0;\n    // If wrong input or timer reaches 10, reset sequence progress.\n    } else if (sDebugTimer == 10 || gPlayer3Controller->buttonPressed != 0) {\n        sDebugSequenceTracker = 0;\n        sDebugTimer = 0;\n        return FALSE;\n    }\n    sDebugTimer++;\n\n    return FALSE;\n}\n\n#include \"behaviors/moving_coin.inc.c\"\n#include \"behaviors/seaweed.inc.c\"\n#include \"behaviors/bobomb.inc.c\"\n#include \"behaviors/cannon_door.inc.c\"\n#include \"behaviors/whirlpool.inc.c\"\n#include \"behaviors/amp.inc.c\"\n#include \"behaviors/butterfly.inc.c\"\n#include \"behaviors/hoot.inc.c\"\n#include \"behaviors/beta_holdable_object.inc.c\"\n#include \"behaviors/bubble.inc.c\"\n#include \"behaviors/water_wave.inc.c\"\n#include \"behaviors/explosion.inc.c\"\n#include \"behaviors/corkbox.inc.c\"\n#include \"behaviors/bully.inc.c\"\n#include \"behaviors/water_ring.inc.c\"\n#include \"behaviors/bowser_bomb.inc.c\"\n#include \"behaviors/celebration_star.inc.c\"\n#include \"behaviors/drawbridge.inc.c\"\n#include \"behaviors/bomp.inc.c\"\n#include \"behaviors/sliding_platform.inc.c\"\n#include \"behaviors/moneybag.inc.c\"\n#include \"behaviors/bowling_ball.inc.c\"\n#include \"behaviors/cruiser.inc.c\"\n#include \"behaviors/spindel.inc.c\"\n#include \"behaviors/pyramid_wall.inc.c\"\n#include \"behaviors/pyramid_elevator.inc.c\"\n#include \"behaviors/pyramid_top.inc.c\"\n#include \"behaviors/sound_waterfall.inc.c\"\n#include \"behaviors/sound_volcano.inc.c\"\n#include \"behaviors/castle_flag.inc.c\"\n#include \"behaviors/sound_birds.inc.c\"\n#include \"behaviors/sound_ambient.inc.c\"\n#include \"behaviors/sound_sand.inc.c\"\n#include \"behaviors/castle_cannon_grate.inc.c\"\n#include \"behaviors/snowman.inc.c\"\n#include \"behaviors/boulder.inc.c\"\n#include \"behaviors/cap.inc.c\"\n#include \"behaviors/spawn_star.inc.c\"\n#include \"behaviors/red_coin.inc.c\"\n#include \"behaviors/hidden_star.inc.c\"\n#include \"behaviors/rolling_log.inc.c\"\n#include \"behaviors/mushroom_1up.inc.c\"\n#include \"behaviors/controllable_platform.inc.c\"\n#include \"behaviors/breakable_box_small.inc.c\"\n#include \"behaviors/snow_mound.inc.c\"\n#include \"behaviors/floating_platform.inc.c\"\n#include \"behaviors/arrow_lift.inc.c\"\n#include \"behaviors/orange_number.inc.c\"\n#include \"behaviors/manta_ray.inc.c\"\n#include \"behaviors/falling_pillar.inc.c\"\n#include \"behaviors/floating_box.inc.c\"\n#include \"behaviors/decorative_pendulum.inc.c\"\n#include \"behaviors/treasure_chest.inc.c\"\n#include \"behaviors/mips.inc.c\"\n#include \"behaviors/yoshi.inc.c\"\n"
  },
  {
    "path": "src/game/obj_behaviors.h",
    "content": "#ifndef OBJ_BEHAVIORS_H\n#define OBJ_BEHAVIORS_H\n\n#include <PR/ultratypes.h>\n\n#include \"engine/surface_collision.h\"\n#include \"macros.h\"\n#include \"types.h\"\n\nvoid set_yoshi_as_not_dead(void);\ns32 coin_step(s16 *collisionFlagsPtr);\nvoid moving_coin_flicker(void);\nvoid coin_collected(void);\nvoid bhv_moving_yellow_coin_init(void);\nvoid bhv_moving_yellow_coin_loop(void);\nvoid bhv_moving_blue_coin_init(void);\nvoid bhv_moving_blue_coin_loop(void);\nvoid bhv_blue_coin_sliding_jumping_init(void);\nvoid blue_coin_sliding_away_from_mario(void); /* likely unused */\nvoid blue_coin_sliding_slow_down(void); /* likely unused */\nvoid bhv_blue_coin_sliding_loop(void); /* likely unused */\nvoid bhv_blue_coin_jumping_loop(void); /* likely unused */\nvoid bhv_seaweed_init(void);\nvoid bhv_seaweed_bundle_init(void);\nvoid bhv_bobomb_init(void);\nvoid bobomb_spawn_coin(void);\nvoid bobomb_act_explode(void);\nvoid bobomb_check_interactions(void);\nvoid bobomb_act_patrol(void);\nvoid bobomb_act_chase_mario(void);\nvoid bobomb_act_launched(void);\nvoid generic_bobomb_free_loop(void);\nvoid stationary_bobomb_free_loop(void);\nvoid bobomb_free_loop(void);\nvoid bobomb_held_loop(void);\nvoid bobomb_dropped_loop(void);\nvoid bobomb_thrown_loop(void);\nvoid curr_obj_random_blink(s32 *blinkTimer);\nvoid bhv_bobomb_loop(void);\nvoid bhv_bobomb_fuse_smoke_init(void);\nvoid bhv_bobomb_buddy_init(void);\nvoid bobomb_buddy_act_idle(void);\nvoid bobomb_buddy_cannon_dialog(s16 dialogFirstText, s16 dialogSecondText);\nvoid bobomb_buddy_act_talk(void);\nvoid bobomb_buddy_act_turn_to_talk(void);\nvoid bobomb_buddy_actions(void);\nvoid bhv_bobomb_buddy_loop(void);\nvoid bhv_cannon_closed_init(void);\nvoid cannon_door_act_opening(void);\nvoid bhv_cannon_closed_loop(void);\nvoid bhv_whirlpool_init(void);\nvoid whirlpool_set_hitbox(void);\nvoid bhv_whirlpool_loop(void);\nvoid bhv_jet_stream_loop(void);\nvoid bhv_homing_amp_init(void);\nvoid bhv_homing_amp_loop(void);\nvoid bhv_circling_amp_init(void);\nvoid bhv_circling_amp_loop(void);\nvoid bhv_butterfly_init(void);\nvoid butterfly_step(s32 speed);\nvoid butterfly_calculate_angle(void);\nvoid butterfly_act_rest(void);\nvoid butterfly_act_follow_mario(void);\nvoid butterfly_act_return_home(void);\nvoid bhv_butterfly_loop(void);\nvoid bhv_hoot_init(void);\nf32 hoot_find_next_floor(struct FloorGeometry **arg0, f32 arg1);\nvoid hoot_floor_bounce(void);\nvoid hoot_free_step(s16 fastOscY, s32 speed);\nvoid hoot_player_set_yaw(void);\nvoid hoot_carry_step(s32 speed, UNUSED f32 xPrev, UNUSED f32 zPrev);\nvoid hoot_surface_collision(f32 xPrev, UNUSED f32 yPrev, f32 zPrev);\nvoid hoot_act_ascent(f32 xPrev, f32 zPrev);\nvoid hoot_action_loop(void);\nvoid hoot_turn_to_home(void);\nvoid hoot_awake_loop(void);\nvoid bhv_hoot_loop(void);\nvoid bhv_beta_holdable_object_init(void); /* unused */\nvoid bhv_beta_holdable_object_loop(void); /* unused */\nvoid bhv_object_bubble_init(void);\nvoid bhv_object_bubble_loop(void);\nvoid bhv_object_water_wave_init(void);\nvoid bhv_object_water_wave_loop(void);\nvoid bhv_explosion_init(void);\nvoid bhv_explosion_loop(void);\nvoid bhv_bobomb_bully_death_smoke_init(void);\nvoid bhv_bobomb_explosion_bubble_init(void);\nvoid bhv_bobomb_explosion_bubble_loop(void);\nvoid bhv_respawner_loop(void);\nvoid create_respawner(s32 arg0, const BehaviorScript *behToSpawn, s32 minSpawnDist);\nvoid bhv_small_bully_init(void);\nvoid bhv_big_bully_init(void);\nvoid bully_check_mario_collision(void);\nvoid bully_act_chase_mario(void);\nvoid bully_act_knockback(void);\nvoid bully_act_back_up(void);\nvoid bully_backup_check(s16 collisionFlags);\nvoid bully_play_stomping_sound(void);\nvoid bully_step(void);\nvoid bully_spawn_coin(void);\nvoid bully_act_level_death(void);\nvoid bhv_bully_loop(void);\nvoid big_bully_spawn_minion(s32 arg0, s32 arg1, s32 arg2, s16 arg3);\nvoid bhv_big_bully_with_minions_init(void);\nvoid big_bully_spawn_star(void);\nvoid bhv_big_bully_with_minions_loop(void);\nf32 water_ring_calc_mario_dist(void);\nvoid water_ring_init(void);\nvoid bhv_jet_stream_water_ring_init(void);\nvoid water_ring_check_collection(f32 avgScale, struct Object *ringManager);\nvoid water_ring_set_scale(f32 avgScale);\nvoid water_ring_act_collected(void);\nvoid water_ring_act_not_collected(void);\nvoid bhv_jet_stream_water_ring_loop(void);\nvoid spawn_manta_ray_ring_manager(void); /* unused */\nvoid water_ring_spawner_act_inactive(void);\nvoid bhv_jet_stream_ring_spawner_loop(void);\nvoid bhv_manta_ray_water_ring_init(void);\nvoid manta_water_ring_act_not_collected(void);\nvoid bhv_manta_ray_water_ring_loop(void);\nvoid bhv_bowser_bomb_loop(void);\nvoid bhv_bowser_bomb_explosion_loop(void);\nvoid bhv_bowser_bomb_smoke_loop(void);\nvoid bhv_celebration_star_init(void);\nvoid celeb_star_act_spin_around_mario(void);\nvoid celeb_star_act_face_camera(void);\nvoid bhv_celebration_star_loop(void);\nvoid bhv_celebration_star_sparkle_loop(void);\nvoid bhv_star_key_collection_puff_spawner_loop(void);\nvoid bhv_lll_drawbridge_spawner_loop(void);\nvoid bhv_lll_drawbridge_loop(void);\nvoid bhv_small_bomp_init(void);\nvoid bhv_small_bomp_loop(void);\nvoid bhv_large_bomp_init(void);\nvoid bhv_large_bomp_loop(void);\nvoid bhv_wf_sliding_platform_init(void);\nvoid bhv_wf_sliding_platform_loop(void);\nvoid bhv_moneybag_init(void);\nvoid moneybag_check_mario_collision(void);\nvoid moneybag_jump(s8 collisionFlags);\nvoid moneybag_act_move_around(void);\nvoid moneybag_act_return_home(void);\nvoid moneybag_act_disappear(void);\nvoid moneybag_act_death(void);\nvoid bhv_moneybag_loop(void);\nvoid bhv_moneybag_hidden_loop(void);\nvoid bhv_bowling_ball_init(void);\nvoid bowling_ball_set_hitbox(void);\nvoid bowling_ball_set_waypoints(void);\nvoid bhv_bowling_ball_roll_loop(void);\nvoid bhv_bowling_ball_initialize_loop(void);\nvoid bhv_bowling_ball_loop(void);\nvoid bhv_generic_bowling_ball_spawner_init(void);\nvoid bhv_generic_bowling_ball_spawner_loop(void);\nvoid bhv_thi_bowling_ball_spawner_loop(void);\nvoid bhv_bob_pit_bowling_ball_init(void);\nvoid bhv_bob_pit_bowling_ball_loop(void);\nvoid bhv_free_bowling_ball_init(void); /* likely unused */\nvoid bhv_free_bowling_ball_roll_loop(void); /* likely unused */\nvoid bhv_free_bowling_ball_loop(void); /* likely unused */\nvoid bhv_rr_cruiser_wing_init(void);\nvoid bhv_rr_cruiser_wing_loop(void);\nvoid spawn_default_star(f32 homeX, f32 homeY, f32 homeZ);\n\n#endif // OBJ_BEHAVIORS_H\n"
  },
  {
    "path": "src/game/obj_behaviors_2.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"sm64.h\"\n#include \"actors/common0.h\"\n#include \"actors/group11.h\"\n#include \"actors/group17.h\"\n#include \"audio/external.h\"\n#include \"behavior_actions.h\"\n#include \"behavior_data.h\"\n#include \"camera.h\"\n#include \"dialog_ids.h\"\n#include \"engine/behavior_script.h\"\n#include \"engine/math_util.h\"\n#include \"engine/surface_collision.h\"\n#include \"engine/surface_load.h\"\n#include \"game_init.h\"\n#include \"geo_misc.h\"\n#include \"ingame_menu.h\"\n#include \"interaction.h\"\n#include \"level_table.h\"\n#include \"level_update.h\"\n#include \"levels/bitdw/header.h\"\n#include \"levels/bitfs/header.h\"\n#include \"levels/bits/header.h\"\n#include \"levels/bob/header.h\"\n#include \"levels/ccm/header.h\"\n#include \"levels/hmc/header.h\"\n#include \"levels/jrb/header.h\"\n#include \"levels/lll/header.h\"\n#include \"levels/rr/header.h\"\n#include \"levels/ssl/header.h\"\n#include \"levels/thi/header.h\"\n#include \"levels/ttc/header.h\"\n#include \"levels/vcutm/header.h\"\n#include \"mario.h\"\n#include \"mario_actions_cutscene.h\"\n#include \"memory.h\"\n#include \"obj_behaviors.h\"\n#include \"obj_behaviors_2.h\"\n#include \"object_constants.h\"\n#include \"object_helpers.h\"\n#include \"object_list_processor.h\"\n#include \"platform_displacement.h\"\n#include \"rendering_graph_node.h\"\n#include \"save_file.h\"\n#include \"seq_ids.h\"\n#include \"spawn_sound.h\"\n\n#define POS_OP_SAVE_POSITION 0\n#define POS_OP_COMPUTE_VELOCITY 1\n#define POS_OP_RESTORE_POSITION 2\n\n#define o gCurrentObject\n\n/* BSS (declared to force order) */\nextern s32 sNumActiveFirePiranhaPlants;\nextern s32 sNumKilledFirePiranhaPlants;\nextern f32 sObjSavedPosX;\nextern f32 sObjSavedPosY;\nextern f32 sObjSavedPosZ;\nextern struct Object *sMontyMoleHoleList;\nextern s32 sMontyMoleKillStreak;\nextern f32 sMontyMoleLastKilledPosX;\nextern f32 sMontyMoleLastKilledPosY;\nextern f32 sMontyMoleLastKilledPosZ;\nextern struct Object *sMasterTreadmill;\n\n/**\n * The treadmill that plays sounds and controls the others on random setting.\n */\nstruct Object *sMasterTreadmill;\n\nf32 sObjSavedPosX;\nf32 sObjSavedPosY;\nf32 sObjSavedPosZ;\n\nvoid wiggler_jumped_on_attack_handler(void);\nvoid huge_goomba_weakly_attacked(void);\n\nstatic s32 obj_is_rendering_enabled(void) {\n    if (o->header.gfx.node.flags & GRAPH_RENDER_ACTIVE) {\n        return TRUE;\n    } else {\n        return FALSE;\n    }\n}\n\nstatic s16 obj_get_pitch_from_vel(void) {\n    return -atan2s(o->oForwardVel, o->oVelY);\n}\n\n/**\n * Show dialog proposing a race.\n * If the player accepts the race, then leave time stop enabled and Mario in the\n * text action so that the racing object can wait before starting the race.\n * If the player declines the race, then disable time stop and allow Mario to\n * move again.\n */\nstatic s32 obj_update_race_proposition_dialog(s16 dialogID) {\n    s32 dialogResponse =\n        cur_obj_update_dialog_with_cutscene(MARIO_DIALOG_LOOK_UP,\n        (DIALOG_FLAG_TURN_TO_MARIO | DIALOG_FLAG_TIME_STOP_ENABLED), CUTSCENE_RACE_DIALOG, dialogID);\n\n    if (dialogResponse == DIALOG_RESPONSE_NO) {\n        set_mario_npc_dialog(MARIO_DIALOG_STOP);\n        disable_time_stop_including_mario();\n    }\n\n    return dialogResponse;\n}\n\nstatic void obj_set_dist_from_home(f32 distFromHome) {\n    o->oPosX = o->oHomeX + distFromHome * coss(o->oMoveAngleYaw);\n    o->oPosZ = o->oHomeZ + distFromHome * sins(o->oMoveAngleYaw);\n}\n\nstatic s32 obj_is_near_to_and_facing_mario(f32 maxDist, s16 maxAngleDiff) {\n    if (o->oDistanceToMario < maxDist\n        && abs_angle_diff(o->oMoveAngleYaw, o->oAngleToMario) < maxAngleDiff) {\n        return TRUE;\n    }\n    return FALSE;\n}\n\n//! Although having no return value, this function\n//! must be u32 to match other functions on -O2.\nstatic BAD_RETURN(u32) obj_perform_position_op(s32 op) {\n    switch (op) {\n        case POS_OP_SAVE_POSITION:\n            sObjSavedPosX = o->oPosX;\n            sObjSavedPosY = o->oPosY;\n            sObjSavedPosZ = o->oPosZ;\n            break;\n\n        case POS_OP_COMPUTE_VELOCITY:\n            o->oVelX = o->oPosX - sObjSavedPosX;\n            o->oVelY = o->oPosY - sObjSavedPosY;\n            o->oVelZ = o->oPosZ - sObjSavedPosZ;\n            break;\n\n        case POS_OP_RESTORE_POSITION:\n            o->oPosX = sObjSavedPosX;\n            o->oPosY = sObjSavedPosY;\n            o->oPosZ = sObjSavedPosZ;\n            break;\n    }\n}\n\nstatic void platform_on_track_update_pos_or_spawn_ball(s32 ballIndex, f32 x, f32 y, f32 z) {\n    struct Object *trackBall;\n    struct Waypoint *initialPrevWaypoint;\n    struct Waypoint *nextWaypoint;\n    struct Waypoint *prevWaypoint;\n    UNUSED u8 filler[4];\n    f32 amountToMove;\n    f32 dx;\n    f32 dy;\n    f32 dz;\n    f32 distToNextWaypoint;\n\n    if (ballIndex == 0 || ((u16)(o->oBhvParams >> 16) & 0x0080)) {\n        initialPrevWaypoint = o->oPlatformOnTrackPrevWaypoint;\n        nextWaypoint = initialPrevWaypoint;\n\n        if (ballIndex != 0) {\n            amountToMove = 300.0f * ballIndex;\n        } else {\n            obj_perform_position_op(POS_OP_SAVE_POSITION);\n            o->oPlatformOnTrackPrevWaypointFlags = 0;\n            amountToMove = o->oForwardVel;\n        }\n\n        do {\n            prevWaypoint = nextWaypoint;\n\n            nextWaypoint++;\n            if (nextWaypoint->flags == WAYPOINT_FLAGS_END) {\n                if (ballIndex == 0) {\n                    o->oPlatformOnTrackPrevWaypointFlags = WAYPOINT_FLAGS_END;\n                }\n\n                if (((u16)(o->oBhvParams >> 16) & PLATFORM_ON_TRACK_BP_RETURN_TO_START)) {\n                    nextWaypoint = o->oPlatformOnTrackStartWaypoint;\n                } else {\n                    return;\n                }\n            }\n\n            dx = nextWaypoint->pos[0] - x;\n            dy = nextWaypoint->pos[1] - y;\n            dz = nextWaypoint->pos[2] - z;\n\n            distToNextWaypoint = sqrtf(dx * dx + dy * dy + dz * dz);\n\n            // Move directly to the next waypoint, even if it's farther away\n            // than amountToMove\n            amountToMove -= distToNextWaypoint;\n            x += dx;\n            y += dy;\n            z += dz;\n        } while (amountToMove > 0.0f);\n\n        // If we moved farther than amountToMove, move in the opposite direction\n        // No risk of near-zero division: If distToNextWaypoint is close to\n        // zero, then that means we didn't cross a waypoint this frame (since\n        // otherwise distToNextWaypoint would equal the distance between two\n        // waypoints, which should never be that small). But this implies that\n        // amountToMove - distToNextWaypoint <= 0, and amountToMove is at least\n        // 0.1 (from platform on track behavior).\n        distToNextWaypoint = amountToMove / distToNextWaypoint;\n        x += dx * distToNextWaypoint;\n        y += dy * distToNextWaypoint;\n        z += dz * distToNextWaypoint;\n\n        if (ballIndex != 0) {\n            trackBall = spawn_object_relative(o->oPlatformOnTrackBaseBallIndex + ballIndex, 0, 0, 0, o,\n                                              MODEL_TRAJECTORY_MARKER_BALL, bhvTrackBall);\n\n            if (trackBall != NULL) {\n                trackBall->oPosX = x;\n                trackBall->oPosY = y;\n                trackBall->oPosZ = z;\n            }\n        } else {\n            if (prevWaypoint != initialPrevWaypoint) {\n                if (o->oPlatformOnTrackPrevWaypointFlags == 0) {\n                    o->oPlatformOnTrackPrevWaypointFlags = initialPrevWaypoint->flags;\n                }\n                o->oPlatformOnTrackPrevWaypoint = prevWaypoint;\n            }\n\n            o->oPosX = x;\n            o->oPosY = y;\n            o->oPosZ = z;\n\n            obj_perform_position_op(POS_OP_COMPUTE_VELOCITY);\n\n            o->oPlatformOnTrackPitch =\n                atan2s(sqrtf(o->oVelX * o->oVelX + o->oVelZ * o->oVelZ), -o->oVelY);\n            o->oPlatformOnTrackYaw = atan2s(o->oVelZ, o->oVelX);\n        }\n    }\n}\n\nstatic void cur_obj_spin_all_dimensions(f32 arg0, f32 arg1) {\n    f32 val24;\n    f32 val20;\n    f32 val1C;\n    f32 c;\n    f32 s;\n    f32 val10;\n    f32 val0C;\n    f32 val08;\n    f32 val04;\n    f32 val00;\n\n    if (o->oForwardVel == 0.0f) {\n        val24 = val20 = val1C = 0.0f;\n\n        if (o->oMoveFlags & OBJ_MOVE_IN_AIR) {\n            val20 = 50.0f;\n        } else {\n            if (o->oFaceAnglePitch < 0) {\n                val1C = -arg0;\n            } else if (o->oFaceAnglePitch > 0) {\n                val1C = arg0;\n            }\n\n            if (o->oFaceAngleRoll < 0) {\n                val24 = -arg1;\n            } else if (o->oFaceAngleRoll > 0) {\n                val24 = arg1;\n            }\n        }\n\n        c = coss(o->oFaceAnglePitch);\n        s = sins(o->oFaceAnglePitch);\n        val08 = val1C * c + val20 * s;\n        val0C = val20 * c - val1C * s;\n\n        c = coss(o->oFaceAngleRoll);\n        s = sins(o->oFaceAngleRoll);\n        val04 = val24 * c + val0C * s;\n        val0C = val0C * c - val24 * s;\n\n        c = coss(o->oFaceAngleYaw);\n        s = sins(o->oFaceAngleYaw);\n        val10 = val04 * c - val08 * s;\n        val08 = val08 * c + val04 * s;\n\n        val04 = val24 * c - val1C * s;\n        val00 = val1C * c + val24 * s;\n\n        o->oPosX = o->oHomeX - val04 + val10;\n        o->oGraphYOffset = val20 - val0C;\n        o->oPosZ = o->oHomeZ + val00 - val08;\n    }\n}\n\nstatic void obj_rotate_yaw_and_bounce_off_walls(s16 targetYaw, s16 turnAmount) {\n    if (o->oMoveFlags & OBJ_MOVE_HIT_WALL) {\n        targetYaw = cur_obj_reflect_move_angle_off_wall();\n    }\n    cur_obj_rotate_yaw_toward(targetYaw, turnAmount);\n}\n\nstatic s16 obj_get_pitch_to_home(f32 latDistToHome) {\n    return atan2s(latDistToHome, o->oPosY - o->oHomeY);\n}\n\nstatic void obj_compute_vel_from_move_pitch(f32 speed) {\n    o->oForwardVel = speed * coss(o->oMoveAnglePitch);\n    o->oVelY = speed * -sins(o->oMoveAnglePitch);\n}\n\nstatic s32 clamp_s16(s16 *value, s16 minimum, s16 maximum) {\n    if (*value <= minimum) {\n        *value = minimum;\n    } else if (*value >= maximum) {\n        *value = maximum;\n    } else {\n        return FALSE;\n    }\n\n    return TRUE;\n}\n\nstatic s32 clamp_f32(f32 *value, f32 minimum, f32 maximum) {\n    if (*value <= minimum) {\n        *value = minimum;\n    } else if (*value >= maximum) {\n        *value = maximum;\n    } else {\n        return FALSE;\n    }\n\n    return TRUE;\n}\n\nstatic void cur_obj_init_anim_extend(s32 arg0) {\n    cur_obj_init_animation_with_sound(arg0);\n    cur_obj_extend_animation_if_at_end();\n}\n\nstatic s32 cur_obj_init_anim_and_check_if_end(s32 arg0) {\n    cur_obj_init_animation_with_sound(arg0);\n    return cur_obj_check_if_near_animation_end();\n}\n\nstatic s32 cur_obj_init_anim_check_frame(s32 arg0, s32 arg1) {\n    cur_obj_init_animation_with_sound(arg0);\n    return cur_obj_check_anim_frame(arg1);\n}\n\nstatic s32 cur_obj_set_anim_if_at_end(s32 arg0) {\n    if (cur_obj_check_if_at_animation_end()) {\n        cur_obj_init_animation_with_sound(arg0);\n        return TRUE;\n    }\n    return FALSE;\n}\n\nstatic s32 cur_obj_play_sound_at_anim_range(s8 arg0, s8 arg1, u32 sound) {\n    s32 val04;\n\n    if ((val04 = o->header.gfx.animInfo.animAccel / 0x10000) <= 0) {\n        val04 = 1;\n    }\n\n    if (cur_obj_check_anim_frame_in_range(arg0, val04) || cur_obj_check_anim_frame_in_range(arg1, val04)) {\n        cur_obj_play_sound_2(sound);\n        return TRUE;\n    }\n\n    return FALSE;\n}\n\nstatic s16 obj_turn_pitch_toward_mario(f32 targetOffsetY, s16 turnAmount) {\n    s16 targetPitch;\n\n    o->oPosY -= targetOffsetY;\n    targetPitch = obj_turn_toward_object(o, gMarioObject, O_MOVE_ANGLE_PITCH_INDEX, turnAmount);\n    o->oPosY += targetOffsetY;\n\n    return targetPitch;\n}\n\nstatic s32 approach_f32_ptr(f32 *px, f32 target, f32 delta) {\n    if (*px > target) {\n        delta = -delta;\n    }\n\n    *px += delta;\n\n    if ((*px - target) * delta >= 0) {\n        *px = target;\n        return TRUE;\n    }\n    return FALSE;\n}\n\nstatic s32 obj_forward_vel_approach(f32 target, f32 delta) {\n    return approach_f32_ptr(&o->oForwardVel, target, delta);\n}\n\nstatic s32 obj_y_vel_approach(f32 target, f32 delta) {\n    return approach_f32_ptr(&o->oVelY, target, delta);\n}\n\nstatic s32 obj_move_pitch_approach(s16 target, s16 delta) {\n    o->oMoveAnglePitch = approach_s16_symmetric(o->oMoveAnglePitch, target, delta);\n\n    if ((s16) o->oMoveAnglePitch == target) {\n        return TRUE;\n    }\n\n    return FALSE;\n}\n\nstatic s32 obj_face_pitch_approach(s16 targetPitch, s16 deltaPitch) {\n    o->oFaceAnglePitch = approach_s16_symmetric(o->oFaceAnglePitch, targetPitch, deltaPitch);\n\n    if ((s16) o->oFaceAnglePitch == targetPitch) {\n        return TRUE;\n    }\n\n    return FALSE;\n}\n\nstatic s32 obj_face_yaw_approach(s16 targetYaw, s16 deltaYaw) {\n    o->oFaceAngleYaw = approach_s16_symmetric(o->oFaceAngleYaw, targetYaw, deltaYaw);\n\n    if ((s16) o->oFaceAngleYaw == targetYaw) {\n        return TRUE;\n    }\n\n    return FALSE;\n}\n\nstatic s32 obj_face_roll_approach(s16 targetRoll, s16 deltaRoll) {\n    o->oFaceAngleRoll = approach_s16_symmetric(o->oFaceAngleRoll, targetRoll, deltaRoll);\n\n    if ((s16) o->oFaceAngleRoll == targetRoll) {\n        return TRUE;\n    }\n\n    return FALSE;\n}\n\nstatic s32 obj_smooth_turn(s16 *angleVel, s32 *angle, s16 targetAngle, f32 targetSpeedProportion,\n                           s16 accel, s16 minSpeed, s16 maxSpeed) {\n    s16 currentSpeed;\n    s16 currentAngle = (s16)(*angle);\n\n    *angleVel =\n        approach_s16_symmetric(*angleVel, (targetAngle - currentAngle) * targetSpeedProportion, accel);\n\n    currentSpeed = absi(*angleVel);\n    clamp_s16(&currentSpeed, minSpeed, maxSpeed);\n\n    *angle = approach_s16_symmetric(*angle, targetAngle, currentSpeed);\n    return (s16)(*angle) == targetAngle;\n}\n\nstatic void obj_roll_to_match_yaw_turn(s16 targetYaw, s16 maxRoll, s16 rollSpeed) {\n    s16 targetRoll = o->oMoveAngleYaw - targetYaw;\n    clamp_s16(&targetRoll, -maxRoll, maxRoll);\n    obj_face_roll_approach(targetRoll, rollSpeed);\n}\n\nstatic s16 random_linear_offset(s16 base, s16 range) {\n    return base + (s16)(range * random_float());\n}\n\nstatic s16 random_mod_offset(s16 base, s16 step, s16 mod) {\n    return base + step * (random_u16() % mod);\n}\n\nstatic s16 obj_random_fixed_turn(s16 delta) {\n    return o->oMoveAngleYaw + (s16) random_sign() * delta;\n}\n\n/**\n * Begin by increasing the object's scale by *scaleVel, and slowly decreasing\n * scaleVel. Once the object starts to shrink, wait a bit, and then begin to\n * scale the object toward endScale. The first time it reaches below\n * shootFireScale during this time, return 1.\n * Return -1 once it's reached endScale.\n */\nstatic s32 obj_grow_then_shrink(f32 *scaleVel, f32 shootFireScale, f32 endScale) {\n    if (o->oTimer < 2) {\n        o->header.gfx.scale[0] += *scaleVel;\n\n        if ((*scaleVel -= 0.01f) > -0.03f) {\n            o->oTimer = 0;\n        }\n    } else if (o->oTimer > 10) {\n        if (approach_f32_ptr(&o->header.gfx.scale[0], endScale, 0.05f)) {\n            return -1;\n        } else if (*scaleVel != 0.0f && o->header.gfx.scale[0] < shootFireScale) {\n            *scaleVel = 0.0f;\n            return 1;\n        }\n    }\n\n    return 0;\n}\n\nstatic s32 oscillate_toward(s32 *value, f32 *vel, s32 target, f32 velCloseToZero, f32 accel,\n                            f32 slowdown) {\n    s32 startValue = *value;\n    *value += (s32) *vel;\n\n    if (*value == target\n        || ((*value - target) * (startValue - target) < 0 && *vel > -velCloseToZero\n            && *vel < velCloseToZero)) {\n        *value = target;\n        *vel = 0.0f;\n        return TRUE;\n    } else {\n        if (*value >= target) {\n            accel = -accel;\n        }\n        if (*vel * accel < 0.0f) {\n            accel *= slowdown;\n        }\n\n        *vel += accel;\n    }\n\n    return FALSE;\n}\n\nstatic void obj_update_blinking(s32 *blinkTimer, s16 baseCycleLength, s16 cycleLengthRange,\n                                s16 blinkLength) {\n    if (*blinkTimer != 0) {\n        (*blinkTimer)--;\n    } else {\n        *blinkTimer = random_linear_offset(baseCycleLength, cycleLengthRange);\n    }\n\n    if (*blinkTimer > blinkLength) {\n        o->oAnimState = 0;\n    } else {\n        o->oAnimState = 1;\n    }\n}\n\nstatic s32 obj_resolve_object_collisions(s32 *targetYaw) {\n    struct Object *otherObject;\n    f32 dx;\n    f32 dz;\n    s16 angle;\n    f32 radius;\n    f32 otherRadius;\n    f32 relativeRadius;\n    f32 newCenterX;\n    f32 newCenterZ;\n\n    if (o->numCollidedObjs != 0) {\n        otherObject = o->collidedObjs[0];\n        if (otherObject != gMarioObject) {\n            //! If one object moves after collisions are detected and this code\n            //  runs, the objects can move toward each other (transport cloning)\n\n            dx = otherObject->oPosX - o->oPosX;\n            dz = otherObject->oPosZ - o->oPosZ;\n            angle = atan2s(dx, dz); //! This should be atan2s(dz, dx)\n\n            radius = o->hitboxRadius;\n            otherRadius = otherObject->hitboxRadius;\n            relativeRadius = radius / (radius + otherRadius);\n\n            newCenterX = o->oPosX + dx * relativeRadius;\n            newCenterZ = o->oPosZ + dz * relativeRadius;\n\n            o->oPosX = newCenterX - radius * coss(angle);\n            o->oPosZ = newCenterZ - radius * sins(angle);\n\n            otherObject->oPosX = newCenterX + otherRadius * coss(angle);\n            otherObject->oPosZ = newCenterZ + otherRadius * sins(angle);\n\n            if (targetYaw != NULL && abs_angle_diff(o->oMoveAngleYaw, angle) < 0x4000) {\n                // Bounce off object (or it would, if the above atan2s bug\n                // were fixed)\n                *targetYaw = (s16)(angle - o->oMoveAngleYaw + angle + 0x8000);\n                return TRUE;\n            }\n        }\n    }\n\n    return FALSE;\n}\n\nstatic s32 obj_bounce_off_walls_edges_objects(s32 *targetYaw) {\n    if (o->oMoveFlags & OBJ_MOVE_HIT_WALL) {\n        *targetYaw = cur_obj_reflect_move_angle_off_wall();\n    } else if (o->oMoveFlags & OBJ_MOVE_HIT_EDGE) {\n        *targetYaw = (s16)(o->oMoveAngleYaw + 0x8000);\n    } else if (!obj_resolve_object_collisions(targetYaw)) {\n        return FALSE;\n    }\n\n    return TRUE;\n}\n\nstatic s32 obj_resolve_collisions_and_turn(s16 targetYaw, s16 turnSpeed) {\n    obj_resolve_object_collisions(NULL);\n\n    if (cur_obj_rotate_yaw_toward(targetYaw, turnSpeed)) {\n        return FALSE;\n    } else {\n        return TRUE;\n    }\n}\n\nstatic void obj_die_if_health_non_positive(void) {\n    if (o->oHealth <= 0) {\n        if (o->oDeathSound == 0) {\n            spawn_mist_particles_with_sound(SOUND_OBJ_DEFAULT_DEATH);\n        } else if (o->oDeathSound > 0) {\n            spawn_mist_particles_with_sound(o->oDeathSound);\n        } else {\n            spawn_mist_particles();\n        }\n\n        if (o->oNumLootCoins < 0) {\n            spawn_object(o, MODEL_BLUE_COIN, bhvSpawnedBlueCoin);\n        } else {\n            obj_spawn_loot_yellow_coins(o, o->oNumLootCoins, 20.0f);\n        }\n        // This doesn't do anything\n        obj_spawn_loot_yellow_coins(o, o->oNumLootCoins, 20.0f);\n\n        if (o->oHealth < 0) {\n            cur_obj_hide();\n            cur_obj_become_intangible();\n        } else {\n            obj_mark_for_deletion(o);\n        }\n    }\n}\n\nUNUSED static void obj_unused_die(void) {\n    o->oHealth = 0;\n    obj_die_if_health_non_positive();\n}\n\nstatic void obj_set_knockback_action(s32 attackType) {\n    switch (attackType) {\n        case ATTACK_KICK_OR_TRIP:\n        case ATTACK_FAST_ATTACK:\n            o->oAction = OBJ_ACT_VERTICAL_KNOCKBACK;\n            o->oForwardVel = 20.0f;\n            o->oVelY = 50.0f;\n            break;\n\n        default:\n            o->oAction = OBJ_ACT_HORIZONTAL_KNOCKBACK;\n            o->oForwardVel = 50.0f;\n            o->oVelY = 30.0f;\n            break;\n    }\n\n    o->oFlags &= ~OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW;\n    o->oMoveAngleYaw = obj_angle_to_object(gMarioObject, o);\n}\n\nstatic void obj_set_squished_action(void) {\n    cur_obj_play_sound_2(SOUND_OBJ_STOMPED);\n    o->oAction = OBJ_ACT_SQUISHED;\n}\n\nstatic s32 obj_die_if_above_lava_and_health_non_positive(void) {\n    if (o->oMoveFlags & OBJ_MOVE_UNDERWATER_ON_GROUND) {\n        if (o->oGravity + o->oBuoyancy > 0.0f\n            || find_water_level(o->oPosX, o->oPosZ) - o->oPosY < 150.0f) {\n            return FALSE;\n        }\n    } else if (!(o->oMoveFlags & OBJ_MOVE_ABOVE_LAVA)) {\n        if (o->oMoveFlags & OBJ_MOVE_ENTERED_WATER) {\n            if (o->oWallHitboxRadius < 200.0f) {\n                cur_obj_play_sound_2(SOUND_OBJ_DIVING_INTO_WATER);\n            } else {\n                cur_obj_play_sound_2(SOUND_OBJ_DIVING_IN_WATER);\n            }\n        }\n        return FALSE;\n    }\n\n    obj_die_if_health_non_positive();\n    return TRUE;\n}\n\nstatic s32 obj_handle_attacks(struct ObjectHitbox *hitbox, s32 attackedMarioAction,\n                              u8 *attackHandlers) {\n    s32 attackType;\n\n    obj_set_hitbox(o, hitbox);\n\n    //! Die immediately if above lava\n    if (obj_die_if_above_lava_and_health_non_positive()) {\n        return 1;\n    } else if (o->oInteractStatus & INT_STATUS_INTERACTED) {\n        if (o->oInteractStatus & INT_STATUS_ATTACKED_MARIO) {\n            if (o->oAction != attackedMarioAction) {\n                o->oAction = attackedMarioAction;\n                o->oTimer = 0;\n            }\n        } else {\n            attackType = o->oInteractStatus & INT_STATUS_ATTACK_MASK;\n\n            switch (attackHandlers[attackType - 1]) {\n                case ATTACK_HANDLER_NOP:\n                    break;\n\n                case ATTACK_HANDLER_DIE_IF_HEALTH_NON_POSITIVE:\n                    obj_die_if_health_non_positive();\n                    break;\n\n                case ATTACK_HANDLER_KNOCKBACK:\n                    obj_set_knockback_action(attackType);\n                    break;\n\n                case ATTACK_HANDLER_SQUISHED:\n                    obj_set_squished_action();\n                    break;\n\n                case ATTACK_HANDLER_SPECIAL_KOOPA_LOSE_SHELL:\n                    shelled_koopa_attack_handler(attackType);\n                    break;\n\n                case ATTACK_HANDLER_SET_SPEED_TO_ZERO:\n                    obj_set_speed_to_zero();\n                    break;\n\n                case ATTACK_HANDLER_SPECIAL_WIGGLER_JUMPED_ON:\n                    wiggler_jumped_on_attack_handler();\n                    break;\n\n                case ATTACK_HANDLER_SPECIAL_HUGE_GOOMBA_WEAKLY_ATTACKED:\n                    huge_goomba_weakly_attacked();\n                    break;\n\n                case ATTACK_HANDLER_SQUISHED_WITH_BLUE_COIN:\n                    o->oNumLootCoins = -1;\n                    obj_set_squished_action();\n                    break;\n            }\n\n            o->oInteractStatus = 0;\n            return attackType;\n        }\n    }\n\n    o->oInteractStatus = 0;\n    return 0;\n}\n\nstatic void obj_act_knockback(UNUSED f32 baseScale) {\n    cur_obj_update_floor_and_walls();\n\n    if (o->header.gfx.animInfo.curAnim != NULL) {\n        cur_obj_extend_animation_if_at_end();\n    }\n\n    //! Dies immediately if above lava\n    if ((o->oMoveFlags\n         & (OBJ_MOVE_MASK_ON_GROUND | OBJ_MOVE_MASK_IN_WATER | OBJ_MOVE_HIT_WALL | OBJ_MOVE_ABOVE_LAVA))\n        || (o->oAction == OBJ_ACT_VERTICAL_KNOCKBACK && o->oTimer >= 9)) {\n        obj_die_if_health_non_positive();\n    }\n\n    cur_obj_move_standard(-78);\n}\n\nstatic void obj_act_squished(f32 baseScale) {\n    f32 targetScaleY = baseScale * 0.3f;\n\n    cur_obj_update_floor_and_walls();\n\n    if (o->header.gfx.animInfo.curAnim != NULL) {\n        cur_obj_extend_animation_if_at_end();\n    }\n\n    if (approach_f32_ptr(&o->header.gfx.scale[1], targetScaleY, baseScale * 0.14f)) {\n        o->header.gfx.scale[0] = o->header.gfx.scale[2] = baseScale * 2.0f - o->header.gfx.scale[1];\n\n        if (o->oTimer > 15) {\n            obj_die_if_health_non_positive();\n        }\n    }\n\n    o->oForwardVel = 0.0f;\n    cur_obj_move_standard(-78);\n}\n\nstatic s32 obj_update_standard_actions(f32 scale) {\n    if (o->oAction < 100) {\n        return TRUE;\n    } else {\n        cur_obj_become_intangible();\n\n        switch (o->oAction) {\n            case OBJ_ACT_HORIZONTAL_KNOCKBACK:\n            case OBJ_ACT_VERTICAL_KNOCKBACK:\n                obj_act_knockback(scale);\n                break;\n\n            case OBJ_ACT_SQUISHED:\n                obj_act_squished(scale);\n                break;\n        }\n\n        return FALSE;\n    }\n}\n\nstatic s32 obj_check_attacks(struct ObjectHitbox *hitbox, s32 attackedMarioAction) {\n    s32 attackType;\n\n    obj_set_hitbox(o, hitbox);\n\n    //! Dies immediately if above lava\n    if (obj_die_if_above_lava_and_health_non_positive()) {\n        return 1;\n    } else if (o->oInteractStatus & INT_STATUS_INTERACTED) {\n        if (o->oInteractStatus & INT_STATUS_ATTACKED_MARIO) {\n            if (o->oAction != attackedMarioAction) {\n                o->oAction = attackedMarioAction;\n                o->oTimer = 0;\n            }\n        } else {\n            attackType = o->oInteractStatus & INT_STATUS_ATTACK_MASK;\n            obj_die_if_health_non_positive();\n            o->oInteractStatus = 0;\n            return attackType;\n        }\n    }\n\n    o->oInteractStatus = 0;\n    return 0;\n}\n\nstatic s32 obj_move_for_one_second(s32 endAction) {\n    cur_obj_update_floor_and_walls();\n    cur_obj_extend_animation_if_at_end();\n\n    if (o->oTimer > 30) {\n        o->oAction = endAction;\n        return TRUE;\n    }\n\n    cur_obj_move_standard(-78);\n    return FALSE;\n}\n\n/**\n * If we are far from home (> threshold away), then set oAngleToMario to the\n * angle to home and oDistanceToMario to 25000.\n * If we are close to home, but Mario is far from us (> threshold away), then\n * keep oAngleToMario the same and set oDistanceToMario to 20000.\n * If we are close to both home and Mario, then keep both oAngleToMario and\n * oDistanceToMario the same.\n *\n * The point of this function is to avoid having to write extra code to get\n * the object to return to home. When Mario is far away and the object is far\n * from home, it could theoretically re-use the \"approach Mario\" logic to approach\n * its home instead.\n * However, most objects that use this function handle the far-from-home case\n * separately anyway.\n * This function causes seemingly erroneous behavior in some objects that try to\n * attack Mario (e.g. fly guy shooting fire or lunging), especially when combined\n * with partial updates.\n */\nstatic void treat_far_home_as_mario(f32 threshold) {\n    f32 dx = o->oHomeX - o->oPosX;\n    f32 dy = o->oHomeY - o->oPosY;\n    f32 dz = o->oHomeZ - o->oPosZ;\n    f32 distance = sqrtf(dx * dx + dy * dy + dz * dz);\n\n    if (distance > threshold) {\n        o->oAngleToMario = atan2s(dz, dx);\n        o->oDistanceToMario = 25000.0f;\n    } else {\n        dx = o->oHomeX - gMarioObject->oPosX;\n        dy = o->oHomeY - gMarioObject->oPosY;\n        dz = o->oHomeZ - gMarioObject->oPosZ;\n        distance = sqrtf(dx * dx + dy * dy + dz * dz);\n\n        if (distance > threshold) {\n            o->oDistanceToMario = 20000.0f;\n        }\n    }\n}\n\n#include \"behaviors/koopa.inc.c\" // TODO: Text arg field name\n#include \"behaviors/pokey.inc.c\"\n#include \"behaviors/swoop.inc.c\"\n#include \"behaviors/fly_guy.inc.c\"\n#include \"behaviors/goomba.inc.c\"\n#include \"behaviors/chain_chomp.inc.c\" // TODO: chain_chomp_sub_act_lunge documentation\n#include \"behaviors/wiggler.inc.c\"     // TODO\n#include \"behaviors/spiny.inc.c\"\n#include \"behaviors/enemy_lakitu.inc.c\" // TODO\n#include \"behaviors/cloud.inc.c\"\n#include \"behaviors/camera_lakitu.inc.c\" // TODO: 104 label, follow cam documentation\n#include \"behaviors/monty_mole.inc.c\"    // TODO\n#include \"behaviors/platform_on_track.inc.c\"\n#include \"behaviors/seesaw_platform.inc.c\"\n#include \"behaviors/ferris_wheel.inc.c\"\n#include \"behaviors/water_bomb.inc.c\" // TODO: Shadow position\n#include \"behaviors/ttc_rotating_solid.inc.c\"\n#include \"behaviors/ttc_pendulum.inc.c\"\n#include \"behaviors/ttc_treadmill.inc.c\" // TODO\n#include \"behaviors/ttc_moving_bar.inc.c\"\n#include \"behaviors/ttc_cog.inc.c\"\n#include \"behaviors/ttc_pit_block.inc.c\"\n#include \"behaviors/ttc_elevator.inc.c\"\n#include \"behaviors/ttc_2d_rotator.inc.c\"\n#include \"behaviors/ttc_spinner.inc.c\"\n#include \"behaviors/mr_blizzard.inc.c\"\n#include \"behaviors/sliding_platform_2.inc.c\"\n#include \"behaviors/rotating_octagonal_plat.inc.c\"\n#include \"behaviors/animated_floor_switch.inc.c\"\n#include \"behaviors/activated_bf_plat.inc.c\"\n#include \"behaviors/recovery_heart.inc.c\"\n#include \"behaviors/water_bomb_cannon.inc.c\"\n#include \"behaviors/unagi.inc.c\"\n#include \"behaviors/dorrie.inc.c\"\n#include \"behaviors/haunted_chair.inc.c\"\n#include \"behaviors/mad_piano.inc.c\"\n#include \"behaviors/flying_bookend_switch.inc.c\"\n\n/**\n * Used by bowser, fly guy, piranha plant, and fire spitters.\n */\nvoid obj_spit_fire(s16 relativePosX, s16 relativePosY, s16 relativePosZ, f32 scale, s32 model,\n                   f32 startSpeed, f32 endSpeed, s16 movePitch) {\n    struct Object *obj = spawn_object_relative_with_scale(1, relativePosX, relativePosY, relativePosZ,\n                                                           scale, o, model, bhvSmallPiranhaFlame);\n\n    if (obj != NULL) {\n        obj->oSmallPiranhaFlameStartSpeed = startSpeed;\n        obj->oSmallPiranhaFlameEndSpeed = endSpeed;\n        obj->oSmallPiranhaFlameModel = model;\n        obj->oMoveAnglePitch = movePitch;\n    }\n}\n\n#include \"behaviors/fire_piranha_plant.inc.c\"\n#include \"behaviors/fire_spitter.inc.c\"\n#include \"behaviors/flame.inc.c\"\n#include \"behaviors/snufit.inc.c\"\n#include \"behaviors/horizontal_grindel.inc.c\"\n#include \"behaviors/eyerok.inc.c\"\n#include \"behaviors/klepto.inc.c\"\n#include \"behaviors/bird.inc.c\"\n#include \"behaviors/racing_penguin.inc.c\"\n#include \"behaviors/coffin.inc.c\"\n#include \"behaviors/clam.inc.c\"\n#include \"behaviors/skeeter.inc.c\"\n#include \"behaviors/swing_platform.inc.c\"\n#include \"behaviors/donut_platform.inc.c\"\n#include \"behaviors/ddd_pole.inc.c\"\n#include \"behaviors/reds_star_marker.inc.c\"\n#include \"behaviors/triplet_butterfly.inc.c\"\n#include \"behaviors/bubba.inc.c\"\n"
  },
  {
    "path": "src/game/obj_behaviors_2.h",
    "content": "#ifndef OBJ_BEHAVIORS_2_H\n#define OBJ_BEHAVIORS_2_H\n\n#include <PR/ultratypes.h>\n\n#include \"types.h\"\n\n#define ATTACK_HANDLER_NOP 0\n#define ATTACK_HANDLER_DIE_IF_HEALTH_NON_POSITIVE 1\n#define ATTACK_HANDLER_KNOCKBACK 2\n#define ATTACK_HANDLER_SQUISHED 3\n#define ATTACK_HANDLER_SPECIAL_KOOPA_LOSE_SHELL 4\n#define ATTACK_HANDLER_SET_SPEED_TO_ZERO 5\n#define ATTACK_HANDLER_SPECIAL_WIGGLER_JUMPED_ON 6\n#define ATTACK_HANDLER_SPECIAL_HUGE_GOOMBA_WEAKLY_ATTACKED 7\n#define ATTACK_HANDLER_SQUISHED_WITH_BLUE_COIN 8\n\nvoid shelled_koopa_attack_handler(s32 attackType);\nvoid obj_spit_fire(s16 relativePosX, s16 relativePosY, s16 relativePosZ, f32 scale, s32 model,\n                   f32 startSpeed, f32 endSpeed, s16 movePitch);\nvoid obj_set_speed_to_zero(void);\n\n#endif // OBJ_BEHAVIORS_2_H\n"
  },
  {
    "path": "src/game/object_collision.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"sm64.h\"\n#include \"debug.h\"\n#include \"interaction.h\"\n#include \"mario.h\"\n#include \"object_list_processor.h\"\n#include \"spawn_object.h\"\n\nstruct Object *debug_print_obj_collision(struct Object *a) {\n    struct Object *sp24;\n    UNUSED u8 filler[4];\n    s32 i;\n\n    for (i = 0; i < a->numCollidedObjs; i++) {\n        print_debug_top_down_objectinfo(\"ON\", 0);\n        sp24 = a->collidedObjs[i];\n        if (sp24 != gMarioObject) {\n            return sp24;\n        }\n    }\n    return NULL;\n}\n\ns32 detect_object_hitbox_overlap(struct Object *a, struct Object *b) {\n    f32 sp3C = a->oPosY - a->hitboxDownOffset;\n    f32 sp38 = b->oPosY - b->hitboxDownOffset;\n    f32 dx = a->oPosX - b->oPosX;\n    UNUSED f32 sp30 = sp3C - sp38;\n    f32 dz = a->oPosZ - b->oPosZ;\n    f32 collisionRadius = a->hitboxRadius + b->hitboxRadius;\n    f32 distance = sqrtf(dx * dx + dz * dz);\n\n    if (collisionRadius > distance) {\n        f32 sp20 = a->hitboxHeight + sp3C;\n        f32 sp1C = b->hitboxHeight + sp38;\n\n        if (sp3C > sp1C) {\n            return 0;\n        }\n        if (sp20 < sp38) {\n            return 0;\n        }\n        if (a->numCollidedObjs >= 4) {\n            return 0;\n        }\n        if (b->numCollidedObjs >= 4) {\n            return 0;\n        }\n        a->collidedObjs[a->numCollidedObjs] = b;\n        b->collidedObjs[b->numCollidedObjs] = a;\n        a->collidedObjInteractTypes |= b->oInteractType;\n        b->collidedObjInteractTypes |= a->oInteractType;\n        a->numCollidedObjs++;\n        b->numCollidedObjs++;\n        return 1;\n    }\n\n    //! no return value\n#ifdef AVOID_UB\n    return 0;\n#endif\n}\n\ns32 detect_object_hurtbox_overlap(struct Object *a, struct Object *b) {\n    f32 sp3C = a->oPosY - a->hitboxDownOffset;\n    f32 sp38 = b->oPosY - b->hitboxDownOffset;\n    f32 sp34 = a->oPosX - b->oPosX;\n    UNUSED f32 sp30 = sp3C - sp38;\n    f32 sp2C = a->oPosZ - b->oPosZ;\n    f32 sp28 = a->hurtboxRadius + b->hurtboxRadius;\n    f32 sp24 = sqrtf(sp34 * sp34 + sp2C * sp2C);\n\n    if (a == gMarioObject) {\n        b->oInteractionSubtype |= INT_SUBTYPE_DELAY_INVINCIBILITY;\n    }\n\n    if (sp28 > sp24) {\n        f32 sp20 = a->hitboxHeight + sp3C;\n        f32 sp1C = b->hurtboxHeight + sp38;\n\n        if (sp3C > sp1C) {\n            return 0;\n        }\n        if (sp20 < sp38) {\n            return 0;\n        }\n        if (a == gMarioObject) {\n            b->oInteractionSubtype &= ~INT_SUBTYPE_DELAY_INVINCIBILITY;\n        }\n        return 1;\n    }\n\n    //! no return value\n#ifdef AVOID_UB\n    return 0;\n#endif\n}\n\nvoid clear_object_collision(struct Object *a) {\n    struct Object *sp4 = (struct Object *) a->header.next;\n\n    while (sp4 != a) {\n        sp4->numCollidedObjs = 0;\n        sp4->collidedObjInteractTypes = 0;\n        if (sp4->oIntangibleTimer > 0) {\n            sp4->oIntangibleTimer--;\n        }\n        sp4 = (struct Object *) sp4->header.next;\n    }\n}\n\nvoid check_collision_in_list(struct Object *a, struct Object *b, struct Object *c) {\n    if (a->oIntangibleTimer == 0) {\n        while (b != c) {\n            if (b->oIntangibleTimer == 0) {\n                if (detect_object_hitbox_overlap(a, b) && b->hurtboxRadius != 0.0f) {\n                    detect_object_hurtbox_overlap(a, b);\n                }\n            }\n            b = (struct Object *) b->header.next;\n        }\n    }\n}\n\nvoid check_player_object_collision(void) {\n    struct Object *sp1C = (struct Object *) &gObjectLists[OBJ_LIST_PLAYER];\n    struct Object *sp18 = (struct Object *) sp1C->header.next;\n\n    while (sp18 != sp1C) {\n        check_collision_in_list(sp18, (struct Object *) sp18->header.next, sp1C);\n        check_collision_in_list(sp18, (struct Object *) gObjectLists[OBJ_LIST_POLELIKE].next,\n                      (struct Object *) &gObjectLists[OBJ_LIST_POLELIKE]);\n        check_collision_in_list(sp18, (struct Object *) gObjectLists[OBJ_LIST_LEVEL].next,\n                      (struct Object *) &gObjectLists[OBJ_LIST_LEVEL]);\n        check_collision_in_list(sp18, (struct Object *) gObjectLists[OBJ_LIST_GENACTOR].next,\n                      (struct Object *) &gObjectLists[OBJ_LIST_GENACTOR]);\n        check_collision_in_list(sp18, (struct Object *) gObjectLists[OBJ_LIST_PUSHABLE].next,\n                      (struct Object *) &gObjectLists[OBJ_LIST_PUSHABLE]);\n        check_collision_in_list(sp18, (struct Object *) gObjectLists[OBJ_LIST_SURFACE].next,\n                      (struct Object *) &gObjectLists[OBJ_LIST_SURFACE]);\n        check_collision_in_list(sp18, (struct Object *) gObjectLists[OBJ_LIST_DESTRUCTIVE].next,\n                      (struct Object *) &gObjectLists[OBJ_LIST_DESTRUCTIVE]);\n        sp18 = (struct Object *) sp18->header.next;\n    }\n}\n\nvoid check_pushable_object_collision(void) {\n    struct Object *sp1C = (struct Object *) &gObjectLists[OBJ_LIST_PUSHABLE];\n    struct Object *sp18 = (struct Object *) sp1C->header.next;\n\n    while (sp18 != sp1C) {\n        check_collision_in_list(sp18, (struct Object *) sp18->header.next, sp1C);\n        sp18 = (struct Object *) sp18->header.next;\n    }\n}\n\nvoid check_destructive_object_collision(void) {\n    struct Object *sp1C = (struct Object *) &gObjectLists[OBJ_LIST_DESTRUCTIVE];\n    struct Object *sp18 = (struct Object *) sp1C->header.next;\n\n    while (sp18 != sp1C) {\n        if (sp18->oDistanceToMario < 2000.0f && !(sp18->activeFlags & ACTIVE_FLAG_UNK9)) {\n            check_collision_in_list(sp18, (struct Object *) sp18->header.next, sp1C);\n            check_collision_in_list(sp18, (struct Object *) gObjectLists[OBJ_LIST_GENACTOR].next,\n                          (struct Object *) &gObjectLists[OBJ_LIST_GENACTOR]);\n            check_collision_in_list(sp18, (struct Object *) gObjectLists[OBJ_LIST_PUSHABLE].next,\n                          (struct Object *) &gObjectLists[OBJ_LIST_PUSHABLE]);\n            check_collision_in_list(sp18, (struct Object *) gObjectLists[OBJ_LIST_SURFACE].next,\n                          (struct Object *) &gObjectLists[OBJ_LIST_SURFACE]);\n        }\n        sp18 = (struct Object *) sp18->header.next;\n    }\n}\n\nvoid detect_object_collisions(void) {\n    clear_object_collision((struct Object *) &gObjectLists[OBJ_LIST_POLELIKE]);\n    clear_object_collision((struct Object *) &gObjectLists[OBJ_LIST_PLAYER]);\n    clear_object_collision((struct Object *) &gObjectLists[OBJ_LIST_PUSHABLE]);\n    clear_object_collision((struct Object *) &gObjectLists[OBJ_LIST_GENACTOR]);\n    clear_object_collision((struct Object *) &gObjectLists[OBJ_LIST_LEVEL]);\n    clear_object_collision((struct Object *) &gObjectLists[OBJ_LIST_SURFACE]);\n    clear_object_collision((struct Object *) &gObjectLists[OBJ_LIST_DESTRUCTIVE]);\n    check_player_object_collision();\n    check_destructive_object_collision();\n    check_pushable_object_collision();\n}\n"
  },
  {
    "path": "src/game/object_collision.h",
    "content": "#ifndef OBJECT_COLLISION_H\n#define OBJECT_COLLISION_H\n\nvoid detect_object_collisions(void);\n\n#endif // OBJECT_COLLISION_H\n"
  },
  {
    "path": "src/game/object_helpers.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"sm64.h\"\n#include \"area.h\"\n#include \"behavior_actions.h\"\n#include \"behavior_data.h\"\n#include \"camera.h\"\n#include \"debug.h\"\n#include \"dialog_ids.h\"\n#include \"engine/behavior_script.h\"\n#include \"engine/geo_layout.h\"\n#include \"engine/math_util.h\"\n#include \"engine/surface_collision.h\"\n#include \"game_init.h\"\n#include \"helper_macros.h\"\n#include \"ingame_menu.h\"\n#include \"interaction.h\"\n#include \"level_table.h\"\n#include \"level_update.h\"\n#include \"mario.h\"\n#include \"mario_actions_cutscene.h\"\n#include \"memory.h\"\n#include \"obj_behaviors.h\"\n#include \"object_helpers.h\"\n#include \"object_list_processor.h\"\n#include \"rendering_graph_node.h\"\n#include \"spawn_object.h\"\n#include \"spawn_sound.h\"\n\nstatic s8 sBBHStairJiggleOffsets[] = { -8, 8, -4, 4 };\nstatic s16 sPowersOfTwo[] = { 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80 };\nstatic s8 sLevelsWithRooms[] = { LEVEL_BBH, LEVEL_CASTLE, LEVEL_HMC, -1 };\n\nstatic s32 clear_move_flag(u32 *, s32);\n\n#define o gCurrentObject\n\nGfx *geo_update_projectile_pos_from_parent(s32 callContext, UNUSED struct GraphNode *node, Mat4 mtx) {\n    if (callContext == GEO_CONTEXT_RENDER) {\n        Mat4 sp20;\n        struct Object *obj = (struct Object *) gCurGraphNodeObject; // TODO: change global type to Object pointer\n        if (obj->prevObj) {\n            create_transformation_from_matrices(sp20, mtx, *gCurGraphNodeCamera->matrixPtr);\n            obj_update_pos_from_parent_transformation(sp20, obj->prevObj);\n            obj_set_gfx_pos_from_pos(obj->prevObj);\n        }\n    }\n\n    return NULL;\n}\n\nGfx *geo_update_layer_transparency(s32 callContext, struct GraphNode *node, UNUSED void *context) {\n    Gfx *dlStart, *dlHead;\n    struct Object *objectGraphNode;\n    struct GraphNodeGenerated *currentGraphNode;\n    UNUSED struct GraphNodeGenerated *sp2C;\n    s32 objectOpacity;\n\n    dlStart = NULL;\n\n    if (callContext == GEO_CONTEXT_RENDER) {\n        objectGraphNode = (struct Object *) gCurGraphNodeObject; // TODO: change this to object pointer?\n        currentGraphNode = (struct GraphNodeGenerated *) node;\n        sp2C = (struct GraphNodeGenerated *) node;\n\n        if (gCurGraphNodeHeldObject != NULL) {\n            objectGraphNode = gCurGraphNodeHeldObject->objNode;\n        }\n\n        objectOpacity = objectGraphNode->oOpacity;\n        dlStart = alloc_display_list(sizeof(Gfx) * 3);\n\n        dlHead = dlStart;\n\n        if (objectOpacity == 0xFF) {\n            if (currentGraphNode->parameter == 20) {\n                currentGraphNode->fnNode.node.flags =\n                0x600 | (currentGraphNode->fnNode.node.flags & 0xFF);\n            } else {\n                currentGraphNode->fnNode.node.flags =\n                0x100 | (currentGraphNode->fnNode.node.flags & 0xFF);\n            }\n\n            objectGraphNode->oAnimState = 0;\n        } else {\n            if (currentGraphNode->parameter == 20) {\n                currentGraphNode->fnNode.node.flags =\n                0x600 | (currentGraphNode->fnNode.node.flags & 0xFF);\n            } else {\n                currentGraphNode->fnNode.node.flags =\n                0x500 | (currentGraphNode->fnNode.node.flags & 0xFF);\n            }\n\n            objectGraphNode->oAnimState = 1;\n\n#ifdef VERSION_JP\n            if (currentGraphNode->parameter == 10) {\n                if (gDebugInfo[DEBUG_PAGE_ENEMYINFO][3]) {\n                    gDPSetAlphaCompare(dlHead++, G_AC_DITHER);\n                }\n            } else {\n                if (objectGraphNode->activeFlags & ACTIVE_FLAG_DITHERED_ALPHA) {\n                    gDPSetAlphaCompare(dlHead++, G_AC_DITHER);\n                }\n            }\n#else // gDebugInfo accesses were removed in all non-JP versions.\n            if (objectOpacity == 0 && segmented_to_virtual(bhvBowser) == objectGraphNode->behavior) {\n                objectGraphNode->oAnimState = 2;\n            }\n            // the debug info check was removed in US. so we need to\n            // perform the only necessary check instead of the debuginfo\n            // one.\n            if (currentGraphNode->parameter != 10) {\n                if (objectGraphNode->activeFlags & ACTIVE_FLAG_DITHERED_ALPHA) {\n                    gDPSetAlphaCompare(dlHead++, G_AC_DITHER);\n                }\n            }\n#endif\n        }\n\n        gDPSetEnvColor(dlHead++, 255, 255, 255, objectOpacity);\n        gSPEndDisplayList(dlHead);\n    }\n\n    return dlStart;\n}\n\n/**\n * @bug Every geo function declares the 3 parameters of callContext, node, and\n * the matrix array. This one (see also geo_switch_area) doesn't. When executed,\n * the node function executor passes the 3rd argument to a function that doesn't\n * declare it. This is undefined behavior, but harmless in practice due to the\n * o32 calling convention.\n */\n#ifdef AVOID_UB\nGfx *geo_switch_anim_state(s32 callContext, struct GraphNode *node, UNUSED void *context)\n#else\nGfx *geo_switch_anim_state(s32 callContext, struct GraphNode *node)\n#endif\n{\n    struct Object *obj;\n    struct GraphNodeSwitchCase *switchCase;\n\n    if (callContext == GEO_CONTEXT_RENDER) {\n        obj = (struct Object *) gCurGraphNodeObject; // TODO: change global type to Object pointer\n\n        // move to a local var because GraphNodes are passed in all geo functions.\n        // cast the pointer.\n        switchCase = (struct GraphNodeSwitchCase *) node;\n\n        if (gCurGraphNodeHeldObject != NULL) {\n            obj = gCurGraphNodeHeldObject->objNode;\n        }\n\n        // if the case is greater than the number of cases, set to 0 to avoid overflowing\n        // the switch.\n        if (obj->oAnimState >= switchCase->numCases) {\n            obj->oAnimState = 0;\n        }\n\n        // assign the case number for execution.\n        switchCase->selectedCase = obj->oAnimState;\n    }\n\n    return NULL;\n}\n\n//! @bug Same issue as geo_switch_anim_state.\n#ifdef AVOID_UB\nGfx *geo_switch_area(s32 callContext, struct GraphNode *node, UNUSED void *context)\n#else\nGfx *geo_switch_area(s32 callContext, struct GraphNode *node)\n#endif\n{\n    s16 sp26;\n    struct Surface *sp20;\n    UNUSED struct Object *sp1C =\n        (struct Object *) gCurGraphNodeObject; // TODO: change global type to Object pointer\n    struct GraphNodeSwitchCase *switchCase = (struct GraphNodeSwitchCase *) node;\n\n    if (callContext == GEO_CONTEXT_RENDER) {\n        if (gMarioObject == NULL) {\n            switchCase->selectedCase = 0;\n        } else {\n            gFindFloorIncludeSurfaceIntangible = TRUE;\n\n            find_floor(gMarioObject->oPosX, gMarioObject->oPosY, gMarioObject->oPosZ, &sp20);\n\n            if (sp20) {\n                gMarioCurrentRoom = sp20->room;\n                sp26 = sp20->room - 1;\n                print_debug_top_down_objectinfo(\"areainfo %d\", sp20->room);\n\n                if (sp26 >= 0) {\n                    switchCase->selectedCase = sp26;\n                }\n            }\n        }\n    } else {\n        switchCase->selectedCase = 0;\n    }\n\n    return NULL;\n}\n\nvoid obj_update_pos_from_parent_transformation(Mat4 a0, struct Object *a1) {\n    f32 spC = a1->oParentRelativePosX;\n    f32 sp8 = a1->oParentRelativePosY;\n    f32 sp4 = a1->oParentRelativePosZ;\n\n    a1->oPosX = spC * a0[0][0] + sp8 * a0[1][0] + sp4 * a0[2][0] + a0[3][0];\n    a1->oPosY = spC * a0[0][1] + sp8 * a0[1][1] + sp4 * a0[2][1] + a0[3][1];\n    a1->oPosZ = spC * a0[0][2] + sp8 * a0[1][2] + sp4 * a0[2][2] + a0[3][2];\n}\n\nvoid obj_apply_scale_to_matrix(struct Object *obj, Mat4 dst, Mat4 src) {\n    dst[0][0] = src[0][0] * obj->header.gfx.scale[0];\n    dst[1][0] = src[1][0] * obj->header.gfx.scale[1];\n    dst[2][0] = src[2][0] * obj->header.gfx.scale[2];\n    dst[3][0] = src[3][0];\n\n    dst[0][1] = src[0][1] * obj->header.gfx.scale[0];\n    dst[1][1] = src[1][1] * obj->header.gfx.scale[1];\n    dst[2][1] = src[2][1] * obj->header.gfx.scale[2];\n    dst[3][1] = src[3][1];\n\n    dst[0][2] = src[0][2] * obj->header.gfx.scale[0];\n    dst[1][2] = src[1][2] * obj->header.gfx.scale[1];\n    dst[2][2] = src[2][2] * obj->header.gfx.scale[2];\n    dst[3][2] = src[3][2];\n\n    dst[0][3] = src[0][3];\n    dst[1][3] = src[1][3];\n    dst[2][3] = src[2][3];\n    dst[3][3] = src[3][3];\n}\n\nvoid create_transformation_from_matrices(Mat4 a0, Mat4 a1, Mat4 a2) {\n    f32 spC, sp8, sp4;\n\n    spC = a2[3][0] * a2[0][0] + a2[3][1] * a2[0][1] + a2[3][2] * a2[0][2];\n    sp8 = a2[3][0] * a2[1][0] + a2[3][1] * a2[1][1] + a2[3][2] * a2[1][2];\n    sp4 = a2[3][0] * a2[2][0] + a2[3][1] * a2[2][1] + a2[3][2] * a2[2][2];\n\n    a0[0][0] = a1[0][0] * a2[0][0] + a1[0][1] * a2[0][1] + a1[0][2] * a2[0][2];\n    a0[0][1] = a1[0][0] * a2[1][0] + a1[0][1] * a2[1][1] + a1[0][2] * a2[1][2];\n    a0[0][2] = a1[0][0] * a2[2][0] + a1[0][1] * a2[2][1] + a1[0][2] * a2[2][2];\n\n    a0[1][0] = a1[1][0] * a2[0][0] + a1[1][1] * a2[0][1] + a1[1][2] * a2[0][2];\n    a0[1][1] = a1[1][0] * a2[1][0] + a1[1][1] * a2[1][1] + a1[1][2] * a2[1][2];\n    a0[1][2] = a1[1][0] * a2[2][0] + a1[1][1] * a2[2][1] + a1[1][2] * a2[2][2];\n\n    a0[2][0] = a1[2][0] * a2[0][0] + a1[2][1] * a2[0][1] + a1[2][2] * a2[0][2];\n    a0[2][1] = a1[2][0] * a2[1][0] + a1[2][1] * a2[1][1] + a1[2][2] * a2[1][2];\n    a0[2][2] = a1[2][0] * a2[2][0] + a1[2][1] * a2[2][1] + a1[2][2] * a2[2][2];\n\n    a0[3][0] = a1[3][0] * a2[0][0] + a1[3][1] * a2[0][1] + a1[3][2] * a2[0][2] - spC;\n    a0[3][1] = a1[3][0] * a2[1][0] + a1[3][1] * a2[1][1] + a1[3][2] * a2[1][2] - sp8;\n    a0[3][2] = a1[3][0] * a2[2][0] + a1[3][1] * a2[2][1] + a1[3][2] * a2[2][2] - sp4;\n\n    a0[0][3] = 0.0f;\n    a0[1][3] = 0.0f;\n    a0[2][3] = 0.0f;\n    a0[3][3] = 1.0f;\n}\n\nvoid obj_set_held_state(struct Object *obj, const BehaviorScript *heldBehavior) {\n    obj->parentObj = o;\n\n    if (obj->oFlags & OBJ_FLAG_HOLDABLE) {\n        if (heldBehavior == bhvCarrySomething3) {\n            obj->oHeldState = HELD_HELD;\n        }\n\n        if (heldBehavior == bhvCarrySomething5) {\n            obj->oHeldState = HELD_THROWN;\n        }\n\n        if (heldBehavior == bhvCarrySomething4) {\n            obj->oHeldState = HELD_DROPPED;\n        }\n    } else {\n        obj->curBhvCommand = segmented_to_virtual(heldBehavior);\n        obj->bhvStackIndex = 0;\n    }\n}\n\nf32 lateral_dist_between_objects(struct Object *obj1, struct Object *obj2) {\n    f32 dx = obj1->oPosX - obj2->oPosX;\n    f32 dz = obj1->oPosZ - obj2->oPosZ;\n\n    return sqrtf(dx * dx + dz * dz);\n}\n\nf32 dist_between_objects(struct Object *obj1, struct Object *obj2) {\n    f32 dx = obj1->oPosX - obj2->oPosX;\n    f32 dy = obj1->oPosY - obj2->oPosY;\n    f32 dz = obj1->oPosZ - obj2->oPosZ;\n\n    return sqrtf(dx * dx + dy * dy + dz * dz);\n}\n\nvoid cur_obj_forward_vel_approach_upward(f32 target, f32 increment) {\n    if (o->oForwardVel >= target) {\n        o->oForwardVel = target;\n    } else {\n        o->oForwardVel += increment;\n    }\n}\n\ns32 approach_f32_signed(f32 *value, f32 target, f32 increment) {\n    s32 reachedTarget = FALSE;\n\n    *value += increment;\n\n    if (increment >= 0.0f) {\n        if (*value > target) {\n            *value = target;\n            reachedTarget = TRUE;\n        }\n    } else {\n        if (*value < target) {\n            *value = target;\n            reachedTarget = TRUE;\n        }\n    }\n\n    return reachedTarget;\n}\n\nf32 approach_f32_symmetric(f32 value, f32 target, f32 increment) {\n    f32 dist;\n\n    if ((dist = target - value) >= 0.0f) {\n        if (dist > increment) {\n            value += increment;\n        } else {\n            value = target;\n        }\n    } else {\n        if (dist < -increment) {\n            value -= increment;\n        } else {\n            value = target;\n        }\n    }\n\n    return value;\n}\n\ns16 approach_s16_symmetric(s16 value, s16 target, s16 increment) {\n    s16 dist = target - value;\n\n    if (dist >= 0) {\n        if (dist > increment) {\n            value += increment;\n        } else {\n            value = target;\n        }\n    } else {\n        if (dist < -increment) {\n            value -= increment;\n        } else {\n            value = target;\n        }\n    }\n\n    return value;\n}\n\ns32 cur_obj_rotate_yaw_toward(s16 target, s16 increment) {\n    s16 startYaw;\n\n    startYaw = (s16) o->oMoveAngleYaw;\n    o->oMoveAngleYaw = approach_s16_symmetric(o->oMoveAngleYaw, target, increment);\n\n    if ((o->oAngleVelYaw = (s16)((s16) o->oMoveAngleYaw - startYaw)) == 0) {\n        return TRUE;\n    } else {\n        return FALSE;\n    }\n}\n\ns16 obj_angle_to_object(struct Object *obj1, struct Object *obj2) {\n    f32 z1, x1, z2, x2;\n    s16 angle;\n\n    z1 = obj1->oPosZ; z2 = obj2->oPosZ; // ordering of instructions..\n    x1 = obj1->oPosX; x2 = obj2->oPosX;\n\n    angle = atan2s(z2 - z1, x2 - x1);\n    return angle;\n}\n\ns16 obj_turn_toward_object(struct Object *obj, struct Object *target, s16 angleIndex, s16 turnAmount) {\n    f32 a, b, c, d;\n    UNUSED u8 filler[4];\n    s16 targetAngle, startAngle;\n\n    switch (angleIndex) {\n        case O_MOVE_ANGLE_PITCH_INDEX:\n        case O_FACE_ANGLE_PITCH_INDEX:\n            a = target->oPosX - obj->oPosX;\n            c = target->oPosZ - obj->oPosZ;\n            a = sqrtf(a * a + c * c);\n\n            b = -obj->oPosY;\n            d = -target->oPosY;\n\n            targetAngle = atan2s(a, d - b);\n            break;\n\n        case O_MOVE_ANGLE_YAW_INDEX:\n        case O_FACE_ANGLE_YAW_INDEX:\n            a = obj->oPosZ;\n            c = target->oPosZ;\n            b = obj->oPosX;\n            d = target->oPosX;\n\n            targetAngle = atan2s(c - a, d - b);\n            break;\n    }\n\n    startAngle = o->rawData.asU32[angleIndex];\n    o->rawData.asU32[angleIndex] = approach_s16_symmetric(startAngle, targetAngle, turnAmount);\n    return targetAngle;\n}\n\nvoid obj_set_parent_relative_pos(struct Object *obj, s16 relX, s16 relY, s16 relZ) {\n    obj->oParentRelativePosX = relX;\n    obj->oParentRelativePosY = relY;\n    obj->oParentRelativePosZ = relZ;\n}\n\nvoid obj_set_pos(struct Object *obj, s16 x, s16 y, s16 z) {\n    obj->oPosX = x;\n    obj->oPosY = y;\n    obj->oPosZ = z;\n}\n\nvoid obj_set_angle(struct Object *obj, s16 pitch, s16 yaw, s16 roll) {\n    obj->oFaceAnglePitch = pitch;\n    obj->oFaceAngleYaw = yaw;\n    obj->oFaceAngleRoll = roll;\n\n    obj->oMoveAnglePitch = pitch;\n    obj->oMoveAngleYaw = yaw;\n    obj->oMoveAngleRoll = roll;\n}\n\n/*\n * Spawns an object at an absolute location with a specified angle.\n */\nstruct Object *spawn_object_abs_with_rot(struct Object *parent, s16 uselessArg, u32 model,\n                                         const BehaviorScript *behavior,\n                                         s16 x, s16 y, s16 z, s16 pitch, s16 yaw, s16 roll) {\n    // 'uselessArg' is unused in the function spawn_object_at_origin()\n    struct Object *newObj = spawn_object_at_origin(parent, uselessArg, model, behavior);\n    obj_set_pos(newObj, x, y, z);\n    obj_set_angle(newObj, pitch, yaw, roll);\n\n    return newObj;\n}\n\n/*\n * Spawns an object relative to the parent with a specified angle... is what it is supposed to do.\n * The roll argument is never used, and the z offset is used for z-rotation instead. This is most likely\n * a copy-paste typo by one of the programmers.\n */\nstruct Object *spawn_object_rel_with_rot(struct Object *parent, u32 model, const BehaviorScript *behavior,\n                                         s16 xOff, s16 yOff, s16 zOff, s16 pitch, s16 yaw, UNUSED s16 roll) {\n    struct Object *newObj = spawn_object_at_origin(parent, 0, model, behavior);\n    newObj->oFlags |= OBJ_FLAG_TRANSFORM_RELATIVE_TO_PARENT;\n    obj_set_parent_relative_pos(newObj, xOff, yOff, zOff);\n    obj_set_angle(newObj, pitch, yaw, zOff); // Nice typo you got there Nintendo.\n\n    return newObj;\n}\n\nstruct Object *spawn_obj_with_transform_flags(struct Object *sp20, s32 model, const BehaviorScript *sp28) {\n    struct Object *sp1C = spawn_object(sp20, model, sp28);\n    sp1C->oFlags |= OBJ_FLAG_0020 | OBJ_FLAG_SET_THROW_MATRIX_FROM_TRANSFORM;\n    return sp1C;\n}\n\nstruct Object *spawn_water_droplet(struct Object *parent, struct WaterDropletParams *params) {\n    f32 randomScale;\n    struct Object *newObj = spawn_object(parent, params->model, params->behavior);\n\n    if (params->flags & WATER_DROPLET_FLAG_RAND_ANGLE) {\n        newObj->oMoveAngleYaw = random_u16();\n    }\n\n    if (params->flags & WATER_DROPLET_FLAG_RAND_ANGLE_INCR_PLUS_8000) {\n        newObj->oMoveAngleYaw = (s16)(newObj->oMoveAngleYaw + 0x8000)\n                                + (s16) random_f32_around_zero(params->moveAngleRange);\n    }\n\n    if (params->flags & WATER_DROPLET_FLAG_RAND_ANGLE_INCR) {\n        newObj->oMoveAngleYaw =\n            (s16) newObj->oMoveAngleYaw + (s16) random_f32_around_zero(params->moveAngleRange);\n    }\n\n    if (params->flags & WATER_DROPLET_FLAG_SET_Y_TO_WATER_LEVEL) {\n        newObj->oPosY = find_water_level(newObj->oPosX, newObj->oPosZ);\n    }\n\n    if (params->flags & WATER_DROPLET_FLAG_RAND_OFFSET_XZ) {\n        obj_translate_xz_random(newObj, params->moveRange);\n    }\n\n    if (params->flags & WATER_DROPLET_FLAG_RAND_OFFSET_XYZ) {\n        obj_translate_xyz_random(newObj, params->moveRange);\n    }\n\n    newObj->oForwardVel = random_float() * params->randForwardVelScale + params->randForwardVelOffset;\n    newObj->oVelY = random_float() * params->randYVelScale + params->randYVelOffset;\n\n    randomScale = random_float() * params->randSizeScale + params->randSizeOffset;\n    obj_scale(newObj, randomScale);\n\n    return newObj;\n}\n\nstruct Object *spawn_object_at_origin(struct Object *parent, UNUSED s32 unusedArg, u32 model,\n                                      const BehaviorScript *behavior) {\n    struct Object *obj;\n    const BehaviorScript *behaviorAddr;\n\n    behaviorAddr = segmented_to_virtual(behavior);\n    obj = create_object(behaviorAddr);\n\n    obj->parentObj = parent;\n    obj->header.gfx.areaIndex = parent->header.gfx.areaIndex;\n    obj->header.gfx.activeAreaIndex = parent->header.gfx.areaIndex;\n\n    geo_obj_init((struct GraphNodeObject *) &obj->header.gfx, gLoadedGraphNodes[model], gVec3fZero,\n                 gVec3sZero);\n\n    return obj;\n}\n\nstruct Object *spawn_object(struct Object *parent, s32 model, const BehaviorScript *behavior) {\n    struct Object *obj = spawn_object_at_origin(parent, 0, model, behavior);\n\n    obj_copy_pos_and_angle(obj, parent);\n\n    return obj;\n}\n\nstruct Object *try_to_spawn_object(s16 offsetY, f32 scale, struct Object *parent, s32 model,\n                                   const BehaviorScript *behavior) {\n    struct Object *obj;\n\n    if (gFreeObjectList.next != NULL) {\n        obj = spawn_object(parent, model, behavior);\n        obj->oPosY += offsetY;\n        obj_scale(obj, scale);\n        return obj;\n    } else {\n        return NULL;\n    }\n}\n\nstruct Object *spawn_object_with_scale(struct Object *parent, s32 model, const BehaviorScript *behavior, f32 scale) {\n    struct Object *obj = spawn_object_at_origin(parent, 0, model, behavior);\n\n    obj_copy_pos_and_angle(obj, parent);\n    obj_scale(obj, scale);\n\n    return obj;\n}\n\nstatic void obj_build_relative_transform(struct Object *obj) {\n    obj_build_transform_from_pos_and_angle(obj, O_PARENT_RELATIVE_POS_INDEX, O_FACE_ANGLE_INDEX);\n    obj_translate_local(obj, O_POS_INDEX, O_PARENT_RELATIVE_POS_INDEX);\n}\n\nstruct Object *spawn_object_relative(s16 behaviorParam, s16 relativePosX, s16 relativePosY, s16 relativePosZ,\n                                     struct Object *parent, s32 model, const BehaviorScript *behavior) {\n    struct Object *obj = spawn_object_at_origin(parent, 0, model, behavior);\n\n    obj_copy_pos_and_angle(obj, parent);\n    obj_set_parent_relative_pos(obj, relativePosX, relativePosY, relativePosZ);\n    obj_build_relative_transform(obj);\n\n    obj->oBhvParams2ndByte = behaviorParam;\n    obj->oBhvParams = (behaviorParam & 0xFF) << 16;\n\n    return obj;\n}\n\nstruct Object *spawn_object_relative_with_scale(s16 behaviorParam, s16 relativePosX, s16 relativePosY,\n                                                s16 relativePosZ, f32 scale, struct Object *parent,\n                                                s32 model, const BehaviorScript *behavior) {\n    struct Object *obj = spawn_object_relative(behaviorParam, relativePosX, relativePosY, relativePosZ,\n                                               parent, model, behavior);\n    obj_scale(obj, scale);\n\n    return obj;\n}\n\nvoid cur_obj_move_using_vel(void) {\n    o->oPosX += o->oVelX;\n    o->oPosY += o->oVelY;\n    o->oPosZ += o->oVelZ;\n}\n\nvoid obj_copy_graph_y_offset(struct Object *dst, struct Object *src) {\n    dst->oGraphYOffset = src->oGraphYOffset;\n}\n\nvoid obj_copy_pos_and_angle(struct Object *dst, struct Object *src) {\n    obj_copy_pos(dst, src);\n    obj_copy_angle(dst, src);\n}\n\nvoid obj_copy_pos(struct Object *dst, struct Object *src) {\n    dst->oPosX = src->oPosX;\n    dst->oPosY = src->oPosY;\n    dst->oPosZ = src->oPosZ;\n}\n\nvoid obj_copy_angle(struct Object *dst, struct Object *src) {\n    dst->oMoveAnglePitch = src->oMoveAnglePitch;\n    dst->oMoveAngleYaw = src->oMoveAngleYaw;\n    dst->oMoveAngleRoll = src->oMoveAngleRoll;\n\n    dst->oFaceAnglePitch = src->oFaceAnglePitch;\n    dst->oFaceAngleYaw = src->oFaceAngleYaw;\n    dst->oFaceAngleRoll = src->oFaceAngleRoll;\n}\n\nvoid obj_set_gfx_pos_from_pos(struct Object *obj) {\n    obj->header.gfx.pos[0] = obj->oPosX;\n    obj->header.gfx.pos[1] = obj->oPosY;\n    obj->header.gfx.pos[2] = obj->oPosZ;\n}\n\nvoid obj_init_animation(struct Object *obj, s32 animIndex) {\n    struct Animation **anims = o->oAnimations;\n    geo_obj_init_animation(&obj->header.gfx, &anims[animIndex]);\n}\n\n/**\n * Multiply a vector by a matrix of the form\n * | ? ? ? 0 |\n * | ? ? ? 0 |\n * | ? ? ? 0 |\n * | 0 0 0 1 |\n * i.e. a matrix representing a linear transformation over 3 space.\n */\nvoid linear_mtxf_mul_vec3f(Mat4 m, Vec3f dst, Vec3f v) {\n    s32 i;\n    for (i = 0; i < 3; i++) {\n        dst[i] = m[0][i] * v[0] + m[1][i] * v[1] + m[2][i] * v[2];\n    }\n}\n\n/**\n * Multiply a vector by the transpose of a matrix of the form\n * | ? ? ? 0 |\n * | ? ? ? 0 |\n * | ? ? ? 0 |\n * | 0 0 0 1 |\n * i.e. a matrix representing a linear transformation over 3 space.\n */\nvoid linear_mtxf_transpose_mul_vec3f(Mat4 m, Vec3f dst, Vec3f v) {\n    s32 i;\n    for (i = 0; i < 3; i++) {\n        dst[i] = m[i][0] * v[0] + m[i][1] * v[1] + m[i][2] * v[2];\n    }\n}\n\nvoid obj_apply_scale_to_transform(struct Object *obj) {\n    f32 scaleX = obj->header.gfx.scale[0];\n    f32 scaleY = obj->header.gfx.scale[1];\n    f32 scaleZ = obj->header.gfx.scale[2];\n\n    obj->transform[0][0] *= scaleX;\n    obj->transform[0][1] *= scaleX;\n    obj->transform[0][2] *= scaleX;\n\n    obj->transform[1][0] *= scaleY;\n    obj->transform[1][1] *= scaleY;\n    obj->transform[1][2] *= scaleY;\n\n    obj->transform[2][0] *= scaleZ;\n    obj->transform[2][1] *= scaleZ;\n    obj->transform[2][2] *= scaleZ;\n}\n\nvoid obj_copy_scale(struct Object *dst, struct Object *src) {\n    dst->header.gfx.scale[0] = src->header.gfx.scale[0];\n    dst->header.gfx.scale[1] = src->header.gfx.scale[1];\n    dst->header.gfx.scale[2] = src->header.gfx.scale[2];\n}\n\nvoid obj_scale_xyz(struct Object *obj, f32 xScale, f32 yScale, f32 zScale) {\n    obj->header.gfx.scale[0] = xScale;\n    obj->header.gfx.scale[1] = yScale;\n    obj->header.gfx.scale[2] = zScale;\n}\n\nvoid obj_scale(struct Object *obj, f32 scale) {\n    obj->header.gfx.scale[0] = scale;\n    obj->header.gfx.scale[1] = scale;\n    obj->header.gfx.scale[2] = scale;\n}\n\nvoid cur_obj_scale(f32 scale) {\n    o->header.gfx.scale[0] = scale;\n    o->header.gfx.scale[1] = scale;\n    o->header.gfx.scale[2] = scale;\n}\n\nvoid cur_obj_init_animation(s32 animIndex) {\n    struct Animation **anims = o->oAnimations;\n    geo_obj_init_animation(&o->header.gfx, &anims[animIndex]);\n}\n\nvoid cur_obj_init_animation_with_sound(s32 animIndex) {\n    struct Animation **anims = o->oAnimations;\n    geo_obj_init_animation(&o->header.gfx, &anims[animIndex]);\n    o->oSoundStateID = animIndex;\n}\n\nvoid cur_obj_init_animation_with_accel_and_sound(s32 animIndex, f32 accel) {\n    struct Animation **anims = o->oAnimations;\n    s32 animAccel = (s32)(accel * 65536.0f);\n    geo_obj_init_animation_accel(&o->header.gfx, &anims[animIndex], animAccel);\n    o->oSoundStateID = animIndex;\n}\n\nvoid obj_init_animation_with_sound(struct Object *obj, const struct Animation * const* animations, s32 animIndex) {\n    struct Animation **anims = (struct Animation **) animations;\n    obj->oAnimations = (struct Animation **) animations;\n    geo_obj_init_animation(&obj->header.gfx, &anims[animIndex]);\n    obj->oSoundStateID = animIndex;\n}\n\nvoid cur_obj_enable_rendering_and_become_tangible(struct Object *obj) {\n    obj->header.gfx.node.flags |= GRAPH_RENDER_ACTIVE;\n    obj->oIntangibleTimer = 0;\n}\n\nvoid cur_obj_enable_rendering(void) {\n    o->header.gfx.node.flags |= GRAPH_RENDER_ACTIVE;\n}\n\nvoid cur_obj_disable_rendering_and_become_intangible(struct Object *obj) {\n    obj->header.gfx.node.flags &= ~GRAPH_RENDER_ACTIVE;\n    obj->oIntangibleTimer = -1;\n}\n\nvoid cur_obj_disable_rendering(void) {\n    o->header.gfx.node.flags &= ~GRAPH_RENDER_ACTIVE;\n}\n\nvoid cur_obj_unhide(void) {\n    o->header.gfx.node.flags &= ~GRAPH_RENDER_INVISIBLE;\n}\n\nvoid cur_obj_hide(void) {\n    o->header.gfx.node.flags |= GRAPH_RENDER_INVISIBLE;\n}\n\nvoid cur_obj_set_pos_relative(struct Object *other, f32 dleft, f32 dy, f32 dforward) {\n    f32 facingZ = coss(other->oMoveAngleYaw);\n    f32 facingX = sins(other->oMoveAngleYaw);\n\n    f32 dz = dforward * facingZ - dleft * facingX;\n    f32 dx = dforward * facingX + dleft * facingZ;\n\n    o->oMoveAngleYaw = other->oMoveAngleYaw;\n\n    o->oPosX = other->oPosX + dx;\n    o->oPosY = other->oPosY + dy;\n    o->oPosZ = other->oPosZ + dz;\n}\n\nvoid cur_obj_set_pos_relative_to_parent(f32 dleft, f32 dy, f32 dforward) {\n    cur_obj_set_pos_relative(o->parentObj, dleft, dy, dforward);\n}\n\nvoid cur_obj_enable_rendering_2(void) {\n    cur_obj_enable_rendering();\n}\n\nvoid cur_obj_unused_init_on_floor(void) {\n    cur_obj_enable_rendering();\n\n    o->oPosY = find_floor_height(o->oPosX, o->oPosY, o->oPosZ);\n    if (o->oPosY < FLOOR_LOWER_LIMIT_MISC) {\n        cur_obj_set_pos_relative_to_parent(0, 0, -70);\n        o->oPosY = find_floor_height(o->oPosX, o->oPosY, o->oPosZ);\n    }\n}\n\nvoid obj_set_face_angle_to_move_angle(struct Object *obj) {\n    obj->oFaceAnglePitch = obj->oMoveAnglePitch;\n    obj->oFaceAngleYaw = obj->oMoveAngleYaw;\n    obj->oFaceAngleRoll = obj->oMoveAngleRoll;\n}\n\nu32 get_object_list_from_behavior(const BehaviorScript *behavior) {\n    u32 objectList;\n\n    // If the first behavior command is \"begin\", then get the object list header\n    // from there\n    if ((behavior[0] >> 24) == 0) {\n        objectList = (behavior[0] >> 16) & 0xFFFF;\n    } else {\n        objectList = OBJ_LIST_DEFAULT;\n    }\n\n    return objectList;\n}\n\nstruct Object *cur_obj_nearest_object_with_behavior(const BehaviorScript *behavior) {\n    struct Object *obj;\n    f32 dist;\n\n    obj = cur_obj_find_nearest_object_with_behavior(behavior, &dist);\n\n    return obj;\n}\n\nf32 cur_obj_dist_to_nearest_object_with_behavior(const BehaviorScript *behavior) {\n    struct Object *obj;\n    f32 dist;\n\n    obj = cur_obj_find_nearest_object_with_behavior(behavior, &dist);\n    if (obj == NULL) {\n        dist = 15000.0f;\n    }\n\n    return dist;\n}\n\nstruct Object *cur_obj_find_nearest_object_with_behavior(const BehaviorScript *behavior, f32 *dist) {\n    uintptr_t *behaviorAddr = segmented_to_virtual(behavior);\n    struct Object *closestObj = NULL;\n    struct Object *obj;\n    struct ObjectNode *listHead;\n    f32 minDist = 0x20000;\n\n    listHead = &gObjectLists[get_object_list_from_behavior(behaviorAddr)];\n    obj = (struct Object *) listHead->next;\n\n    while (obj != (struct Object *) listHead) {\n        if (obj->behavior == behaviorAddr) {\n            if (obj->activeFlags != ACTIVE_FLAG_DEACTIVATED && obj != o) {\n                f32 objDist = dist_between_objects(o, obj);\n                if (objDist < minDist) {\n                    closestObj = obj;\n                    minDist = objDist;\n                }\n            }\n        }\n        obj = (struct Object *) obj->header.next;\n    }\n\n    *dist = minDist;\n    return closestObj;\n}\n\nstruct Object *find_unimportant_object(void) {\n    struct ObjectNode *listHead = &gObjectLists[OBJ_LIST_UNIMPORTANT];\n    struct ObjectNode *obj = listHead->next;\n\n    if (listHead == obj) {\n        obj = NULL;\n    }\n\n    return (struct Object *) obj;\n}\n\ns32 count_unimportant_objects(void) {\n    struct ObjectNode *listHead = &gObjectLists[OBJ_LIST_UNIMPORTANT];\n    struct ObjectNode *obj = listHead->next;\n    s32 count = 0;\n\n    while (listHead != obj) {\n        count++;\n        obj = obj->next;\n    }\n\n    return count;\n}\n\ns32 count_objects_with_behavior(const BehaviorScript *behavior) {\n    uintptr_t *behaviorAddr = segmented_to_virtual(behavior);\n    struct ObjectNode *listHead = &gObjectLists[get_object_list_from_behavior(behaviorAddr)];\n    struct ObjectNode *obj = listHead->next;\n    s32 count = 0;\n\n    while (listHead != obj) {\n        if (((struct Object *) obj)->behavior == behaviorAddr) {\n            count++;\n        }\n\n        obj = obj->next;\n    }\n\n    return count;\n}\n\nstruct Object *cur_obj_find_nearby_held_actor(const BehaviorScript *behavior, f32 maxDist) {\n    const BehaviorScript *behaviorAddr = segmented_to_virtual(behavior);\n    struct ObjectNode *listHead = &gObjectLists[OBJ_LIST_GENACTOR];\n    struct Object *obj = (struct Object *) listHead->next;\n    struct Object *foundObj = NULL;\n\n    while ((struct Object *) listHead != obj) {\n        if (obj->behavior == behaviorAddr) {\n            if (obj->activeFlags != ACTIVE_FLAG_DEACTIVATED) {\n                // This includes the dropped and thrown states. By combining instant\n                // release, this allows us to activate mama penguin remotely\n                if (obj->oHeldState != HELD_FREE) {\n                    if (dist_between_objects(o, obj) < maxDist) {\n                        foundObj = obj;\n                        break;\n                    }\n                }\n            }\n        }\n\n        obj = (struct Object *) obj->header.next;\n    }\n\n    return foundObj;\n}\n\nstatic void cur_obj_reset_timer_and_subaction(void) {\n    o->oTimer = 0;\n    o->oSubAction = 0;\n}\n\nvoid cur_obj_change_action(s32 action) {\n    o->oAction = action;\n    o->oPrevAction = action;\n    cur_obj_reset_timer_and_subaction();\n}\n\nvoid cur_obj_set_vel_from_mario_vel(f32 objBaseForwardVel, f32 multiplier) {\n    f32 marioForwardVel = gMarioStates[0].forwardVel;\n    f32 objForwardVel = objBaseForwardVel * multiplier;\n\n    if (marioForwardVel < objForwardVel) {\n        o->oForwardVel = objForwardVel;\n    } else {\n        o->oForwardVel = marioForwardVel * multiplier;\n    }\n}\n\nBAD_RETURN(s16) cur_obj_reverse_animation(void) {\n    if (o->header.gfx.animInfo.animFrame >= 0) {\n        o->header.gfx.animInfo.animFrame--;\n    }\n}\n\nBAD_RETURN(s32) cur_obj_extend_animation_if_at_end(void) {\n    s32 animFrame = o->header.gfx.animInfo.animFrame;\n    s32 sp0 = o->header.gfx.animInfo.curAnim->loopEnd - 2;\n\n    if (animFrame == sp0) {\n        o->header.gfx.animInfo.animFrame--;\n    }\n}\n\ns32 cur_obj_check_if_near_animation_end(void) {\n    u32 animFlags = (s32) o->header.gfx.animInfo.curAnim->flags;\n    s32 animFrame = o->header.gfx.animInfo.animFrame;\n    s32 nearLoopEnd = o->header.gfx.animInfo.curAnim->loopEnd - 2;\n    s32 isNearEnd = FALSE;\n\n    if (animFlags & ANIM_FLAG_NOLOOP && nearLoopEnd + 1 == animFrame) {\n        isNearEnd = TRUE;\n    }\n\n    if (animFrame == nearLoopEnd) {\n        isNearEnd = TRUE;\n    }\n\n    return isNearEnd;\n}\n\ns32 cur_obj_check_if_at_animation_end(void) {\n    s32 animFrame = o->header.gfx.animInfo.animFrame;\n    s32 lastFrame = o->header.gfx.animInfo.curAnim->loopEnd - 1;\n\n    if (animFrame == lastFrame) {\n        return TRUE;\n    } else {\n        return FALSE;\n    }\n}\n\ns32 cur_obj_check_anim_frame(s32 frame) {\n    s32 animFrame = o->header.gfx.animInfo.animFrame;\n\n    if (animFrame == frame) {\n        return TRUE;\n    } else {\n        return FALSE;\n    }\n}\n\ns32 cur_obj_check_anim_frame_in_range(s32 startFrame, s32 rangeLength) {\n    s32 animFrame = o->header.gfx.animInfo.animFrame;\n\n    if (animFrame >= startFrame && animFrame < startFrame + rangeLength) {\n        return TRUE;\n    } else {\n        return FALSE;\n    }\n}\n\ns32 cur_obj_check_frame_prior_current_frame(s16 *a0) {\n    s16 sp6 = o->header.gfx.animInfo.animFrame;\n\n    while (*a0 != -1) {\n        if (*a0 == sp6) {\n            return TRUE;\n        }\n\n        a0++;\n    }\n\n    return FALSE;\n}\n\ns32 mario_is_in_air_action(void) {\n    if (gMarioStates[0].action & ACT_FLAG_AIR) {\n        return TRUE;\n    } else {\n        return FALSE;\n    }\n}\n\ns32 mario_is_dive_sliding(void) {\n    if (gMarioStates[0].action == ACT_DIVE_SLIDE) {\n        return TRUE;\n    } else {\n        return FALSE;\n    }\n}\n\nvoid cur_obj_set_y_vel_and_animation(f32 yVel, s32 animIndex) {\n    o->oVelY = yVel;\n    cur_obj_init_animation_with_sound(animIndex);\n}\n\nvoid cur_obj_unrender_set_action_and_anim(s32 animIndex, s32 action) {\n    cur_obj_become_intangible();\n    cur_obj_disable_rendering();\n\n    // only set animation if non-negative value\n    if (animIndex >= 0) {\n        cur_obj_init_animation_with_sound(animIndex);\n    }\n\n    o->oAction = action;\n}\n\nstatic void cur_obj_move_after_thrown_or_dropped(f32 forwardVel, f32 velY) {\n    o->oMoveFlags = 0;\n    o->oFloorHeight = find_floor_height(o->oPosX, o->oPosY + 160.0f, o->oPosZ);\n\n    if (o->oFloorHeight > o->oPosY) {\n        o->oPosY = o->oFloorHeight;\n    } else if (o->oFloorHeight < FLOOR_LOWER_LIMIT_MISC) {\n        //! OoB failsafe\n        obj_copy_pos(o, gMarioObject);\n        o->oFloorHeight = find_floor_height(o->oPosX, o->oPosY, o->oPosZ);\n    }\n\n    o->oForwardVel = forwardVel;\n    o->oVelY = velY;\n\n    if (o->oForwardVel != 0) {\n        cur_obj_move_y(/*gravity*/ -4.0f, /*bounciness*/ -0.1f, /*buoyancy*/ 2.0f);\n    }\n}\n\nvoid cur_obj_get_thrown_or_placed(f32 forwardVel, f32 velY, s32 thrownAction) {\n    if (o->behavior == segmented_to_virtual(bhvBowser)) {\n        // Interestingly, when bowser is thrown, he is offset slightly to\n        // Mario's right\n        cur_obj_set_pos_relative_to_parent(-41.684f, 85.859f, 321.577f);\n    } else {\n    }\n\n    cur_obj_become_tangible();\n    cur_obj_enable_rendering();\n\n    o->oHeldState = HELD_FREE;\n\n    if ((o->oInteractionSubtype & INT_SUBTYPE_HOLDABLE_NPC) || forwardVel == 0.0f) {\n        cur_obj_move_after_thrown_or_dropped(0.0f, 0.0f);\n    } else {\n        o->oAction = thrownAction;\n        cur_obj_move_after_thrown_or_dropped(forwardVel, velY);\n    }\n}\n\nvoid cur_obj_get_dropped(void) {\n    cur_obj_become_tangible();\n    cur_obj_enable_rendering();\n\n    o->oHeldState = HELD_FREE;\n    cur_obj_move_after_thrown_or_dropped(0.0f, 0.0f);\n}\n\nvoid cur_obj_set_model(s32 modelID) {\n    o->header.gfx.sharedChild = gLoadedGraphNodes[modelID];\n}\n\nvoid mario_set_flag(s32 flag) {\n    gMarioStates[0].flags |= flag;\n}\n\ns32 cur_obj_clear_interact_status_flag(s32 flag) {\n    if (o->oInteractStatus & flag) {\n        o->oInteractStatus &= flag ^ 0xFFFFFFFF;\n        return TRUE;\n    }\n    return FALSE;\n}\n\n/**\n * Mark an object to be unloaded at the end of the frame.\n */\nvoid obj_mark_for_deletion(struct Object *obj) {\n    //! This clears all activeFlags. Since some of these flags disable behavior,\n    //  setting it to 0 could potentially enable unexpected behavior. After an\n    //  object is marked for deletion, it still updates on that frame (I think),\n    //  so this is worth looking into.\n    obj->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n}\n\nvoid cur_obj_disable(void) {\n    cur_obj_disable_rendering();\n    cur_obj_hide();\n    cur_obj_become_intangible();\n}\n\nvoid cur_obj_become_intangible(void) {\n    // When the timer is negative, the object is intangible and the timer\n    // doesn't count down\n    o->oIntangibleTimer = -1;\n}\n\nvoid cur_obj_become_tangible(void) {\n    o->oIntangibleTimer = 0;\n}\n\nvoid obj_become_tangible(struct Object *obj) {\n    obj->oIntangibleTimer = 0;\n}\n\nvoid cur_obj_update_floor_height(void) {\n    struct Surface *floor;\n    o->oFloorHeight = find_floor(o->oPosX, o->oPosY, o->oPosZ, &floor);\n}\n\nstruct Surface *cur_obj_update_floor_height_and_get_floor(void) {\n    struct Surface *floor;\n    o->oFloorHeight = find_floor(o->oPosX, o->oPosY, o->oPosZ, &floor);\n    return floor;\n}\n\nstatic void apply_drag_to_value(f32 *value, f32 dragStrength) {\n    f32 decel;\n\n    if (*value != 0) {\n        //! Can overshoot if |*value| > 1/(dragStrength * 0.0001)\n        decel = (*value) * (*value) * (dragStrength * 0.0001L);\n\n        if (*value > 0) {\n            *value -= decel;\n            if (*value < 0.001L) {\n                *value = 0;\n            }\n        } else {\n            *value += decel;\n            if (*value > -0.001L) {\n                *value = 0;\n            }\n        }\n    }\n}\n\nvoid cur_obj_apply_drag_xz(f32 dragStrength) {\n    apply_drag_to_value(&o->oVelX, dragStrength);\n    apply_drag_to_value(&o->oVelZ, dragStrength);\n}\n\nstatic s32 cur_obj_move_xz(f32 steepSlopeNormalY, s32 careAboutEdgesAndSteepSlopes) {\n    struct Surface *intendedFloor;\n\n    f32 intendedX = o->oPosX + o->oVelX;\n    f32 intendedZ = o->oPosZ + o->oVelZ;\n\n    f32 intendedFloorHeight = find_floor(intendedX, o->oPosY, intendedZ, &intendedFloor);\n    f32 deltaFloorHeight = intendedFloorHeight - o->oFloorHeight;\n\n    UNUSED u8 filler[4];\n    UNUSED f32 ny;\n\n    o->oMoveFlags &= ~OBJ_MOVE_HIT_EDGE;\n\n    if (o->oRoom != -1 && intendedFloor != NULL) {\n        if (intendedFloor->room != 0 && o->oRoom != intendedFloor->room && intendedFloor->room != 18) {\n            // Don't leave native room\n            return FALSE;\n        }\n    }\n\n    if (intendedFloorHeight < FLOOR_LOWER_LIMIT_MISC) {\n        // Don't move into OoB\n        o->oMoveFlags |= OBJ_MOVE_HIT_EDGE;\n        return FALSE;\n    } else if (deltaFloorHeight < 5.0f) {\n        if (!careAboutEdgesAndSteepSlopes) {\n            // If we don't care about edges or steep slopes, okay to move\n            o->oPosX = intendedX;\n            o->oPosZ = intendedZ;\n            return TRUE;\n        } else if (deltaFloorHeight < -50.0f && (o->oMoveFlags & OBJ_MOVE_ON_GROUND)) {\n            // Don't walk off an edge\n            o->oMoveFlags |= OBJ_MOVE_HIT_EDGE;\n            return FALSE;\n        } else if (intendedFloor->normal.y > steepSlopeNormalY) {\n            // Allow movement onto a slope, provided it's not too steep\n            o->oPosX = intendedX;\n            o->oPosZ = intendedZ;\n            return TRUE;\n        } else {\n            // We are likely trying to move onto a steep downward slope\n            o->oMoveFlags |= OBJ_MOVE_HIT_EDGE;\n            return FALSE;\n        }\n    } else if ((ny = intendedFloor->normal.y) > steepSlopeNormalY || o->oPosY > intendedFloorHeight) {\n        // Allow movement upward, provided either:\n        // - The target floor is flat enough (e.g. walking up stairs)\n        // - We are above the target floor (most likely in the air)\n        o->oPosX = intendedX;\n        o->oPosZ = intendedZ;\n        //! Returning FALSE but moving anyway (not exploitable; return value is\n        //  never used)\n    }\n\n    // We are likely trying to move onto a steep upward slope\n    return FALSE;\n}\n\nstatic void cur_obj_move_update_underwater_flags(void) {\n    f32 decelY = (f32)(sqrtf(o->oVelY * o->oVelY) * (o->oDragStrength * 7.0f)) / 100.0L;\n\n    if (o->oVelY > 0) {\n        o->oVelY -= decelY;\n    } else {\n        o->oVelY += decelY;\n    }\n\n    if (o->oPosY < o->oFloorHeight) {\n        o->oPosY = o->oFloorHeight;\n        o->oMoveFlags |= OBJ_MOVE_UNDERWATER_ON_GROUND;\n    } else {\n        o->oMoveFlags |= OBJ_MOVE_UNDERWATER_OFF_GROUND;\n    }\n}\n\nstatic void cur_obj_move_update_ground_air_flags(UNUSED f32 gravity, f32 bounciness) {\n    o->oMoveFlags &= ~OBJ_MOVE_BOUNCE;\n\n    if (o->oPosY < o->oFloorHeight) {\n        // On the first frame that we touch the ground, set OBJ_MOVE_LANDED.\n        // On subsequent frames, set OBJ_MOVE_ON_GROUND\n        if (!(o->oMoveFlags & OBJ_MOVE_ON_GROUND)) {\n            if (clear_move_flag(&o->oMoveFlags, OBJ_MOVE_LANDED)) {\n                o->oMoveFlags |= OBJ_MOVE_ON_GROUND;\n            } else {\n                o->oMoveFlags |= OBJ_MOVE_LANDED;\n            }\n        }\n\n        o->oPosY = o->oFloorHeight;\n\n        if (o->oVelY < 0.0f) {\n            o->oVelY *= bounciness;\n        }\n\n        if (o->oVelY > 5.0f) {\n            //! This overestimates since velY could be > 5 here\n            //! without bounce (e.g. jump into misa).\n            o->oMoveFlags |= OBJ_MOVE_BOUNCE;\n        }\n    } else {\n        o->oMoveFlags &= ~OBJ_MOVE_LANDED;\n        if (clear_move_flag(&o->oMoveFlags, OBJ_MOVE_ON_GROUND)) {\n            o->oMoveFlags |= OBJ_MOVE_LEFT_GROUND;\n        }\n    }\n\n    o->oMoveFlags &= ~OBJ_MOVE_MASK_IN_WATER;\n}\n\nstatic f32 cur_obj_move_y_and_get_water_level(f32 gravity, f32 buoyancy) {\n    f32 waterLevel;\n\n    o->oVelY += gravity + buoyancy;\n    if (o->oVelY < -78.0f) {\n        o->oVelY = -78.0f;\n    }\n\n    o->oPosY += o->oVelY;\n    if (o->activeFlags & ACTIVE_FLAG_UNK10) {\n        waterLevel = FLOOR_LOWER_LIMIT;\n    } else {\n        waterLevel = find_water_level(o->oPosX, o->oPosZ);\n    }\n\n    return waterLevel;\n}\n\nvoid cur_obj_move_y(f32 gravity, f32 bounciness, f32 buoyancy) {\n    f32 waterLevel;\n\n    o->oMoveFlags &= ~OBJ_MOVE_LEFT_GROUND;\n\n    if (o->oMoveFlags & OBJ_MOVE_AT_WATER_SURFACE) {\n        if (o->oVelY > 5.0f) {\n            o->oMoveFlags &= ~OBJ_MOVE_MASK_IN_WATER;\n            o->oMoveFlags |= OBJ_MOVE_LEAVING_WATER;\n        }\n    }\n\n    if (!(o->oMoveFlags & OBJ_MOVE_MASK_IN_WATER)) {\n        waterLevel = cur_obj_move_y_and_get_water_level(gravity, 0.0f);\n        if (o->oPosY > waterLevel) {\n            //! We only handle floor collision if the object does not enter\n            //  water. This allows e.g. coins to clip through floors if they\n            //  enter water on the same frame.\n            cur_obj_move_update_ground_air_flags(gravity, bounciness);\n        } else {\n            o->oMoveFlags |= OBJ_MOVE_ENTERED_WATER;\n            o->oMoveFlags &= ~OBJ_MOVE_MASK_ON_GROUND;\n        }\n    } else {\n        o->oMoveFlags &= ~OBJ_MOVE_ENTERED_WATER;\n\n        waterLevel = cur_obj_move_y_and_get_water_level(gravity, buoyancy);\n        if (o->oPosY < waterLevel) {\n            cur_obj_move_update_underwater_flags();\n        } else {\n            if (o->oPosY < o->oFloorHeight) {\n                o->oPosY = o->oFloorHeight;\n                o->oMoveFlags &= ~OBJ_MOVE_MASK_IN_WATER;\n            } else {\n                o->oPosY = waterLevel;\n                o->oVelY = 0.0f;\n                o->oMoveFlags &= ~(OBJ_MOVE_UNDERWATER_OFF_GROUND | OBJ_MOVE_UNDERWATER_ON_GROUND);\n                o->oMoveFlags |= OBJ_MOVE_AT_WATER_SURFACE;\n            }\n        }\n    }\n\n    if (o->oMoveFlags & (OBJ_MOVE_MASK_ON_GROUND | OBJ_MOVE_AT_WATER_SURFACE\n        | OBJ_MOVE_UNDERWATER_OFF_GROUND)) {\n        o->oMoveFlags &= ~OBJ_MOVE_IN_AIR;\n    } else {\n        o->oMoveFlags |= OBJ_MOVE_IN_AIR;\n    }\n}\n\nUNUSED static void stub_obj_helpers_1(void) {\n}\n\nstatic s32 clear_move_flag(u32 *bitSet, s32 flag) {\n    if (*bitSet & flag) {\n        *bitSet &= flag ^ 0xFFFFFFFF;\n        return TRUE;\n    } else {\n        return FALSE;\n    }\n}\n\nvoid cur_obj_unused_resolve_wall_collisions(f32 offsetY, f32 radius) {\n    if (radius > 0.1L) {\n        f32_find_wall_collision(&o->oPosX, &o->oPosY, &o->oPosZ, offsetY, radius);\n    }\n}\n\ns16 abs_angle_diff(s16 x0, s16 x1) {\n    s16 diff = x1 - x0;\n\n    if (diff == -0x8000) {\n        diff = -0x7FFF;\n    }\n\n    if (diff < 0) {\n        diff = -diff;\n    }\n\n    return diff;\n}\n\nvoid cur_obj_move_xz_using_fvel_and_yaw(void) {\n    o->oVelX = o->oForwardVel * sins(o->oMoveAngleYaw);\n    o->oVelZ = o->oForwardVel * coss(o->oMoveAngleYaw);\n\n    o->oPosX += o->oVelX;\n    o->oPosZ += o->oVelZ;\n}\n\nvoid cur_obj_move_y_with_terminal_vel(void) {\n    if (o->oVelY < -70.0f) {\n        o->oVelY = -70.0f;\n    }\n\n    o->oPosY += o->oVelY;\n}\n\nvoid cur_obj_compute_vel_xz(void) {\n    o->oVelX = o->oForwardVel * sins(o->oMoveAngleYaw);\n    o->oVelZ = o->oForwardVel * coss(o->oMoveAngleYaw);\n}\n\nf32 increment_velocity_toward_range(f32 value, f32 center, f32 zeroThreshold, f32 increment) {\n    f32 relative;\n    if ((relative = value - center) > 0) {\n        if (relative < zeroThreshold) {\n            return 0.0f;\n        } else {\n            return -increment;\n        }\n    } else {\n        if (relative > -zeroThreshold) {\n            return 0.0f;\n        } else {\n            return increment;\n        }\n    }\n}\n\ns32 obj_check_if_collided_with_object(struct Object *obj1, struct Object *obj2) {\n    s32 i;\n    for (i = 0; i < obj1->numCollidedObjs; i++) {\n        if (obj1->collidedObjs[i] == obj2) {\n            return TRUE;\n        }\n    }\n\n    return FALSE;\n}\n\nvoid cur_obj_set_behavior(const BehaviorScript *behavior) {\n    o->behavior = segmented_to_virtual(behavior);\n}\n\nvoid obj_set_behavior(struct Object *obj, const BehaviorScript *behavior) {\n    obj->behavior = segmented_to_virtual(behavior);\n}\n\ns32 cur_obj_has_behavior(const BehaviorScript *behavior) {\n    if (o->behavior == segmented_to_virtual(behavior)) {\n        return TRUE;\n    } else {\n        return FALSE;\n    }\n}\n\ns32 obj_has_behavior(struct Object *obj, const BehaviorScript *behavior) {\n    if (obj->behavior == segmented_to_virtual(behavior)) {\n        return TRUE;\n    } else {\n        return FALSE;\n    }\n}\n\nf32 cur_obj_lateral_dist_from_mario_to_home(void) {\n    f32 dist;\n    f32 dx = o->oHomeX - gMarioObject->oPosX;\n    f32 dz = o->oHomeZ - gMarioObject->oPosZ;\n\n    dist = sqrtf(dx * dx + dz * dz);\n    return dist;\n}\n\nf32 cur_obj_lateral_dist_to_home(void) {\n    f32 dist;\n    f32 dx = o->oHomeX - o->oPosX;\n    f32 dz = o->oHomeZ - o->oPosZ;\n\n    dist = sqrtf(dx * dx + dz * dz);\n    return dist;\n}\n\ns32 cur_obj_outside_home_square(f32 halfLength) {\n    if (o->oHomeX - halfLength > o->oPosX) {\n        return TRUE;\n    }\n\n    if (o->oHomeX + halfLength < o->oPosX) {\n        return TRUE;\n    }\n\n    if (o->oHomeZ - halfLength > o->oPosZ) {\n        return TRUE;\n    }\n\n    if (o->oHomeZ + halfLength < o->oPosZ) {\n        return TRUE;\n    }\n\n    return FALSE;\n}\n\ns32 cur_obj_outside_home_rectangle(f32 minX, f32 maxX, f32 minZ, f32 maxZ) {\n    if (o->oHomeX + minX > o->oPosX) {\n        return TRUE;\n    }\n\n    if (o->oHomeX + maxX < o->oPosX) {\n        return TRUE;\n    }\n\n    if (o->oHomeZ + minZ > o->oPosZ) {\n        return TRUE;\n    }\n\n    if (o->oHomeZ + maxZ < o->oPosZ) {\n        return TRUE;\n    }\n\n    return FALSE;\n}\n\nvoid cur_obj_set_pos_to_home(void) {\n    o->oPosX = o->oHomeX;\n    o->oPosY = o->oHomeY;\n    o->oPosZ = o->oHomeZ;\n}\n\nvoid cur_obj_set_pos_to_home_and_stop(void) {\n    cur_obj_set_pos_to_home();\n\n    o->oForwardVel = 0.0f;\n    o->oVelY = 0.0f;\n}\n\nvoid cur_obj_shake_y(f32 amount) {\n    //! Technically could cause a bit of drift, but not much\n    if (o->oTimer % 2 == 0) {\n        o->oPosY += amount;\n    } else {\n        o->oPosY -= amount;\n    }\n}\n\nvoid cur_obj_start_cam_event(UNUSED struct Object *obj, s32 cameraEvent) {\n    gPlayerCameraState->cameraEvent = (s16) cameraEvent;\n    gSecondCameraFocus = o;\n}\n\n// unused, self explanatory, maybe oInteractStatus originally had TRUE/FALSE statements\nvoid set_mario_interact_true_if_in_range(UNUSED s32 arg0, UNUSED s32 arg1, f32 range) {\n    if (o->oDistanceToMario < range) {\n        gMarioObject->oInteractStatus = TRUE;\n    }\n}\n\nvoid obj_set_billboard(struct Object *obj) {\n    obj->header.gfx.node.flags |= GRAPH_RENDER_BILLBOARD;\n}\n\nvoid cur_obj_set_hitbox_radius_and_height(f32 radius, f32 height) {\n    o->hitboxRadius = radius;\n    o->hitboxHeight = height;\n}\n\nvoid cur_obj_set_hurtbox_radius_and_height(f32 radius, f32 height) {\n    o->hurtboxRadius = radius;\n    o->hurtboxHeight = height;\n}\n\nstatic void obj_spawn_loot_coins(struct Object *obj, s32 numCoins, f32 baseVelY,\n                                    const BehaviorScript *coinBehavior,\n                                    s16 posJitter, s16 model) {\n    s32 i;\n    f32 spawnHeight;\n    struct Surface *floor;\n    struct Object *coin;\n\n    spawnHeight = find_floor(obj->oPosX, obj->oPosY, obj->oPosZ, &floor);\n    if (obj->oPosY - spawnHeight > 100.0f) {\n        spawnHeight = obj->oPosY;\n    }\n\n    for (i = 0; i < numCoins; i++) {\n        if (obj->oNumLootCoins <= 0) {\n            break;\n        }\n\n        obj->oNumLootCoins--;\n\n        coin = spawn_object(obj, model, coinBehavior);\n        obj_translate_xz_random(coin, posJitter);\n        coin->oPosY = spawnHeight;\n        coin->oCoinBaseVelY = baseVelY;\n    }\n}\n\nvoid obj_spawn_loot_blue_coins(struct Object *obj, s32 numCoins, f32 baseVelY, s16 posJitter) {\n    obj_spawn_loot_coins(obj, numCoins, baseVelY, bhvBlueCoinJumping, posJitter, MODEL_BLUE_COIN);\n}\n\nvoid obj_spawn_loot_yellow_coins(struct Object *obj, s32 numCoins, f32 baseVelY) {\n    obj_spawn_loot_coins(obj, numCoins, baseVelY, bhvSingleCoinGetsSpawned, 0, MODEL_YELLOW_COIN);\n}\n\nvoid cur_obj_spawn_loot_coin_at_mario_pos(void) {\n    struct Object *coin;\n    if (o->oNumLootCoins <= 0) {\n        return;\n    }\n\n    o->oNumLootCoins--;\n\n    coin = spawn_object(o, MODEL_YELLOW_COIN, bhvSingleCoinGetsSpawned);\n    coin->oVelY = 30.0f;\n\n    obj_copy_pos(coin, gMarioObject);\n}\n\nf32 cur_obj_abs_y_dist_to_home(void) {\n    f32 dist = o->oHomeY - o->oPosY;\n\n    if (dist < 0) {\n        dist = -dist;\n    }\n\n    return dist;\n}\n\ns32 cur_obj_advance_looping_anim(void) {\n    s32 animFrame = o->header.gfx.animInfo.animFrame;\n    s32 loopEnd = o->header.gfx.animInfo.curAnim->loopEnd;\n    s32 result;\n\n    if (animFrame < 0) {\n        animFrame = 0;\n    } else if (loopEnd - 1 == animFrame) {\n        animFrame = 0;\n    } else {\n        animFrame++;\n    }\n\n    result = (animFrame << 16) / loopEnd;\n\n    return result;\n}\n\nstatic s32 cur_obj_detect_steep_floor(s16 steepAngleDegrees) {\n    struct Surface *intendedFloor;\n    f32 intendedX, intendedFloorHeight, intendedZ;\n    f32 deltaFloorHeight;\n    f32 steepNormalY = coss((s16)(steepAngleDegrees * (0x10000 / 360)));\n\n    if (o->oForwardVel != 0.0f) {\n        intendedX = o->oPosX + o->oVelX;\n        intendedZ = o->oPosZ + o->oVelZ;\n        intendedFloorHeight = find_floor(intendedX, o->oPosY, intendedZ, &intendedFloor);\n        deltaFloorHeight = intendedFloorHeight - o->oFloorHeight;\n\n        if (intendedFloorHeight < FLOOR_LOWER_LIMIT_MISC) {\n            o->oWallAngle = o->oMoveAngleYaw + 0x8000;\n            return 2;\n        } else if (intendedFloor->normal.y < steepNormalY && deltaFloorHeight > 0\n                   && intendedFloorHeight > o->oPosY) {\n            o->oWallAngle = atan2s(intendedFloor->normal.z, intendedFloor->normal.x);\n            return 1;\n        } else {\n            return 0;\n        }\n    }\n\n    return 0;\n}\n\ns32 cur_obj_resolve_wall_collisions(void) {\n    s32 numCollisions;\n    struct Surface *wall;\n    struct WallCollisionData collisionData;\n\n    f32 offsetY = 10.0f;\n    f32 radius = o->oWallHitboxRadius;\n\n    if (radius > 0.1L) {\n        collisionData.offsetY = offsetY;\n        collisionData.radius = radius;\n        collisionData.x = (s16) o->oPosX;\n        collisionData.y = (s16) o->oPosY;\n        collisionData.z = (s16) o->oPosZ;\n\n        numCollisions = find_wall_collisions(&collisionData);\n        if (numCollisions != 0) {\n            o->oPosX = collisionData.x;\n            o->oPosY = collisionData.y;\n            o->oPosZ = collisionData.z;\n            wall = collisionData.walls[collisionData.numWalls - 1];\n\n            o->oWallAngle = atan2s(wall->normal.z, wall->normal.x);\n            if (abs_angle_diff(o->oWallAngle, o->oMoveAngleYaw) > 0x4000) {\n                return TRUE;\n            } else {\n                return FALSE;\n            }\n        }\n    }\n\n    return FALSE;\n}\n\nstatic void cur_obj_update_floor(void) {\n    struct Surface *floor = cur_obj_update_floor_height_and_get_floor();\n    o->oFloor = floor;\n\n    if (floor != NULL) {\n        if (floor->type == SURFACE_BURNING) {\n            o->oMoveFlags |= OBJ_MOVE_ABOVE_LAVA;\n        }\n#ifndef VERSION_JP\n        else if (floor->type == SURFACE_DEATH_PLANE) {\n            //! This misses SURFACE_VERTICAL_WIND (and maybe SURFACE_WARP)\n            o->oMoveFlags |= OBJ_MOVE_ABOVE_DEATH_BARRIER;\n        }\n#endif\n\n        o->oFloorType = floor->type;\n        o->oFloorRoom = floor->room;\n    } else {\n        o->oFloorType = 0;\n        o->oFloorRoom = 0;\n    }\n}\n\nstatic void cur_obj_update_floor_and_resolve_wall_collisions(s16 steepSlopeDegrees) {\n#ifdef VERSION_JP\n    o->oMoveFlags &= ~OBJ_MOVE_ABOVE_LAVA;\n#else\n    o->oMoveFlags &= ~(OBJ_MOVE_ABOVE_LAVA | OBJ_MOVE_ABOVE_DEATH_BARRIER);\n#endif\n\n    if (o->activeFlags & (ACTIVE_FLAG_FAR_AWAY | ACTIVE_FLAG_IN_DIFFERENT_ROOM)) {\n        cur_obj_update_floor();\n        o->oMoveFlags &= ~(OBJ_MOVE_HIT_WALL | OBJ_MOVE_MASK_IN_WATER);\n\n        if (o->oPosY > o->oFloorHeight) {\n            o->oMoveFlags |= OBJ_MOVE_IN_AIR;\n        }\n    } else {\n        o->oMoveFlags &= ~OBJ_MOVE_HIT_WALL;\n        if (cur_obj_resolve_wall_collisions()) {\n            o->oMoveFlags |= OBJ_MOVE_HIT_WALL;\n        }\n\n        cur_obj_update_floor();\n\n        if (o->oPosY > o->oFloorHeight) {\n            o->oMoveFlags |= OBJ_MOVE_IN_AIR;\n        }\n\n        if (cur_obj_detect_steep_floor(steepSlopeDegrees)) {\n            o->oMoveFlags |= OBJ_MOVE_HIT_WALL;\n        }\n    }\n}\n\nvoid cur_obj_update_floor_and_walls(void) {\n    cur_obj_update_floor_and_resolve_wall_collisions(60);\n}\n\nvoid cur_obj_move_standard(s16 steepSlopeAngleDegrees) {\n    f32 gravity = o->oGravity;\n    f32 bounciness = o->oBounciness;\n    f32 buoyancy = o->oBuoyancy;\n    f32 dragStrength = o->oDragStrength;\n    f32 steepSlopeNormalY;\n    s32 careAboutEdgesAndSteepSlopes = FALSE;\n    s32 negativeSpeed = FALSE;\n\n    //! Because some objects allow these active flags to be set but don't\n    //  avoid updating when they are, we end up with \"partial\" updates, where\n    //  an object's internal state will be updated, but it doesn't move.\n    //  This allows numerous glitches and is typically referred to as\n    //  deactivation (though this term has a different meaning in the code).\n    //  Objects that do this will be marked with //PARTIAL_UPDATE.\n    if (!(o->activeFlags & (ACTIVE_FLAG_FAR_AWAY | ACTIVE_FLAG_IN_DIFFERENT_ROOM))) {\n        if (steepSlopeAngleDegrees < 0) {\n            // clang-format off\n            careAboutEdgesAndSteepSlopes = TRUE; steepSlopeAngleDegrees = -steepSlopeAngleDegrees;\n            // clang-format on\n        }\n\n        steepSlopeNormalY = coss(steepSlopeAngleDegrees * (0x10000 / 360));\n\n        cur_obj_compute_vel_xz();\n        cur_obj_apply_drag_xz(dragStrength);\n\n        cur_obj_move_xz(steepSlopeNormalY, careAboutEdgesAndSteepSlopes);\n        cur_obj_move_y(gravity, bounciness, buoyancy);\n\n        if (o->oForwardVel < 0.0f) {\n            negativeSpeed = TRUE;\n        }\n        o->oForwardVel = sqrtf(sqr(o->oVelX) + sqr(o->oVelZ));\n        if (negativeSpeed == TRUE) {\n            o->oForwardVel = -o->oForwardVel;\n        }\n    }\n}\n\nstatic s32 cur_obj_within_12k_bounds(void) {\n    if (o->oPosX < -12000.0f || 12000.0f < o->oPosX) {\n        return FALSE;\n    }\n\n    if (o->oPosY < -12000.0f || 12000.0f < o->oPosY) {\n        return FALSE;\n    }\n\n    if (o->oPosZ < -12000.0f || 12000.0f < o->oPosZ) {\n        return FALSE;\n    }\n\n    return TRUE;\n}\n\nvoid cur_obj_move_using_vel_and_gravity(void) {\n    if (cur_obj_within_12k_bounds()) {\n        o->oPosX += o->oVelX;\n        o->oPosZ += o->oVelZ;\n        o->oVelY += o->oGravity; //! No terminal velocity\n        o->oPosY += o->oVelY;\n    }\n}\n\nvoid cur_obj_move_using_fvel_and_gravity(void) {\n    cur_obj_compute_vel_xz();\n    cur_obj_move_using_vel_and_gravity(); //! No terminal velocity\n}\n\nvoid obj_set_pos_relative(struct Object *obj, struct Object *other, f32 dleft, f32 dy,\n                             f32 dforward) {\n    f32 facingZ = coss(other->oMoveAngleYaw);\n    f32 facingX = sins(other->oMoveAngleYaw);\n\n    f32 dz = dforward * facingZ - dleft * facingX;\n    f32 dx = dforward * facingX + dleft * facingZ;\n\n    obj->oMoveAngleYaw = other->oMoveAngleYaw;\n\n    obj->oPosX = other->oPosX + dx;\n    obj->oPosY = other->oPosY + dy;\n    obj->oPosZ = other->oPosZ + dz;\n}\n\ns16 cur_obj_angle_to_home(void) {\n    s16 angle;\n    f32 dx = o->oHomeX - o->oPosX;\n    f32 dz = o->oHomeZ - o->oPosZ;\n\n    angle = atan2s(dz, dx);\n    return angle;\n}\n\nvoid obj_set_gfx_pos_at_obj_pos(struct Object *obj1, struct Object *obj2) {\n    obj1->header.gfx.pos[0] = obj2->oPosX;\n    obj1->header.gfx.pos[1] = obj2->oPosY + obj2->oGraphYOffset;\n    obj1->header.gfx.pos[2] = obj2->oPosZ;\n\n    obj1->header.gfx.angle[0] = obj2->oMoveAnglePitch & 0xFFFF;\n    obj1->header.gfx.angle[1] = obj2->oMoveAngleYaw & 0xFFFF;\n    obj1->header.gfx.angle[2] = obj2->oMoveAngleRoll & 0xFFFF;\n}\n\n/**\n * Transform the vector at localTranslateIndex into the object's local\n * coordinates, and then add it to the vector at posIndex.\n */\nvoid obj_translate_local(struct Object *obj, s16 posIndex, s16 localTranslateIndex) {\n    f32 dx = obj->rawData.asF32[localTranslateIndex + 0];\n    f32 dy = obj->rawData.asF32[localTranslateIndex + 1];\n    f32 dz = obj->rawData.asF32[localTranslateIndex + 2];\n\n    obj->rawData.asF32[posIndex + 0] +=\n        obj->transform[0][0] * dx + obj->transform[1][0] * dy + obj->transform[2][0] * dz;\n    obj->rawData.asF32[posIndex + 1] +=\n        obj->transform[0][1] * dx + obj->transform[1][1] * dy + obj->transform[2][1] * dz;\n    obj->rawData.asF32[posIndex + 2] +=\n        obj->transform[0][2] * dx + obj->transform[1][2] * dy + obj->transform[2][2] * dz;\n}\n\nvoid obj_build_transform_from_pos_and_angle(struct Object *obj, s16 posIndex, s16 angleIndex) {\n    f32 translate[3];\n    s16 rotation[3];\n\n    translate[0] = obj->rawData.asF32[posIndex + 0];\n    translate[1] = obj->rawData.asF32[posIndex + 1];\n    translate[2] = obj->rawData.asF32[posIndex + 2];\n\n    rotation[0] = obj->rawData.asS32[angleIndex + 0];\n    rotation[1] = obj->rawData.asS32[angleIndex + 1];\n    rotation[2] = obj->rawData.asS32[angleIndex + 2];\n\n    mtxf_rotate_zxy_and_translate(obj->transform, translate, rotation);\n}\n\nvoid obj_set_throw_matrix_from_transform(struct Object *obj) {\n    if (obj->oFlags & OBJ_FLAG_0020) {\n        obj_build_transform_from_pos_and_angle(obj, O_POS_INDEX, O_FACE_ANGLE_INDEX);\n        obj_apply_scale_to_transform(obj);\n    }\n\n    obj->header.gfx.throwMatrix = &obj->transform;\n\n    //! Sets scale of gCurrentObject instead of obj. Not exploitable since this\n    //  function is only called with obj = gCurrentObject\n    cur_obj_scale(1.0f);\n}\n\nvoid obj_build_transform_relative_to_parent(struct Object *obj) {\n    struct Object *parent = obj->parentObj;\n\n    obj_build_transform_from_pos_and_angle(obj, O_PARENT_RELATIVE_POS_INDEX, O_FACE_ANGLE_INDEX);\n    obj_apply_scale_to_transform(obj);\n    mtxf_mul(obj->transform, obj->transform, parent->transform);\n\n    obj->oPosX = obj->transform[3][0];\n    obj->oPosY = obj->transform[3][1];\n    obj->oPosZ = obj->transform[3][2];\n\n    obj->header.gfx.throwMatrix = &obj->transform;\n\n    //! Sets scale of gCurrentObject instead of obj. Not exploitable since this\n    //  function is only called with obj = gCurrentObject\n    cur_obj_scale(1.0f);\n}\n\nvoid obj_create_transform_from_self(struct Object *obj) {\n    obj->oFlags &= ~OBJ_FLAG_TRANSFORM_RELATIVE_TO_PARENT;\n    obj->oFlags |= OBJ_FLAG_SET_THROW_MATRIX_FROM_TRANSFORM;\n\n    obj->transform[3][0] = obj->oPosX;\n    obj->transform[3][1] = obj->oPosY;\n    obj->transform[3][2] = obj->oPosZ;\n}\n\nvoid cur_obj_rotate_move_angle_using_vel(void) {\n    o->oMoveAnglePitch += o->oAngleVelPitch;\n    o->oMoveAngleYaw += o->oAngleVelYaw;\n    o->oMoveAngleRoll += o->oAngleVelRoll;\n}\n\nvoid cur_obj_rotate_face_angle_using_vel(void) {\n    o->oFaceAnglePitch += o->oAngleVelPitch;\n    o->oFaceAngleYaw += o->oAngleVelYaw;\n    o->oFaceAngleRoll += o->oAngleVelRoll;\n}\n\nvoid cur_obj_set_face_angle_to_move_angle(void) {\n    o->oFaceAnglePitch = o->oMoveAnglePitch;\n    o->oFaceAngleYaw = o->oMoveAngleYaw;\n    o->oFaceAngleRoll = o->oMoveAngleRoll;\n}\n\ns32 cur_obj_follow_path(UNUSED s32 unusedArg) {\n    struct Waypoint *startWaypoint;\n    struct Waypoint *lastWaypoint;\n    struct Waypoint *targetWaypoint;\n    f32 prevToNextX, prevToNextY, prevToNextZ;\n    UNUSED u8 filler[4];\n    f32 objToNextXZ;\n    f32 objToNextX, objToNextY, objToNextZ;\n\n    if (o->oPathedPrevWaypointFlags == 0) {\n        o->oPathedPrevWaypoint = o->oPathedStartWaypoint;\n        o->oPathedPrevWaypointFlags = WAYPOINT_FLAGS_INITIALIZED;\n    }\n\n    startWaypoint = o->oPathedStartWaypoint;\n    lastWaypoint = o->oPathedPrevWaypoint;\n\n    if ((lastWaypoint + 1)->flags != WAYPOINT_FLAGS_END) {\n        targetWaypoint = lastWaypoint + 1;\n    } else {\n        targetWaypoint = startWaypoint;\n    }\n\n    o->oPathedPrevWaypointFlags = lastWaypoint->flags | WAYPOINT_FLAGS_INITIALIZED;\n\n    prevToNextX = targetWaypoint->pos[0] - lastWaypoint->pos[0];\n    prevToNextY = targetWaypoint->pos[1] - lastWaypoint->pos[1];\n    prevToNextZ = targetWaypoint->pos[2] - lastWaypoint->pos[2];\n\n    objToNextX = targetWaypoint->pos[0] - o->oPosX;\n    objToNextY = targetWaypoint->pos[1] - o->oPosY;\n    objToNextZ = targetWaypoint->pos[2] - o->oPosZ;\n    objToNextXZ = sqrtf(sqr(objToNextX) + sqr(objToNextZ));\n\n    o->oPathedTargetYaw = atan2s(objToNextZ, objToNextX);\n    o->oPathedTargetPitch = atan2s(objToNextXZ, -objToNextY);\n\n    // If dot(prevToNext, objToNext) <= 0 (i.e. reached other side of target waypoint)\n    if (prevToNextX * objToNextX + prevToNextY * objToNextY + prevToNextZ * objToNextZ <= 0.0f) {\n        o->oPathedPrevWaypoint = targetWaypoint;\n        if ((targetWaypoint + 1)->flags == WAYPOINT_FLAGS_END) {\n            return PATH_REACHED_END;\n        } else {\n            return PATH_REACHED_WAYPOINT;\n        }\n    }\n\n    return PATH_NONE;\n}\n\nvoid chain_segment_init(struct ChainSegment *segment) {\n    segment->posX = 0.0f;\n    segment->posY = 0.0f;\n    segment->posZ = 0.0f;\n\n    segment->pitch = 0;\n    segment->yaw = 0;\n    segment->roll = 0;\n}\n\nf32 random_f32_around_zero(f32 diameter) {\n    return random_float() * diameter - diameter / 2;\n}\n\nvoid obj_scale_random(struct Object *obj, f32 rangeLength, f32 minScale) {\n    f32 scale = random_float() * rangeLength + minScale;\n    obj_scale_xyz(obj, scale, scale, scale);\n}\n\nvoid obj_translate_xyz_random(struct Object *obj, f32 rangeLength) {\n    obj->oPosX += random_float() * rangeLength - rangeLength * 0.5f;\n    obj->oPosY += random_float() * rangeLength - rangeLength * 0.5f;\n    obj->oPosZ += random_float() * rangeLength - rangeLength * 0.5f;\n}\n\nvoid obj_translate_xz_random(struct Object *obj, f32 rangeLength) {\n    obj->oPosX += random_float() * rangeLength - rangeLength * 0.5f;\n    obj->oPosZ += random_float() * rangeLength - rangeLength * 0.5f;\n}\n\nstatic void obj_build_vel_from_transform(struct Object *obj) {\n    f32 up = obj->oUpVel;\n    f32 left = obj->oLeftVel;\n    f32 forward = obj->oForwardVel;\n\n    //! Typo, up and left should be swapped\n    obj->oVelX = obj->transform[0][0] * up + obj->transform[1][0] * left + obj->transform[2][0] * forward;\n    obj->oVelY = obj->transform[0][1] * up + obj->transform[1][1] * left + obj->transform[2][1] * forward;\n    obj->oVelZ = obj->transform[0][2] * up + obj->transform[1][2] * left + obj->transform[2][2] * forward;\n}\n\nvoid cur_obj_set_pos_via_transform(void) {\n    obj_build_transform_from_pos_and_angle(o, O_PARENT_RELATIVE_POS_INDEX, O_MOVE_ANGLE_INDEX);\n    obj_build_vel_from_transform(o);\n    o->oPosX += o->oVelX;\n    o->oPosY += o->oVelY;\n    o->oPosZ += o->oVelZ;\n}\n\ns16 cur_obj_reflect_move_angle_off_wall(void) {\n    s16 angle = o->oWallAngle - ((s16) o->oMoveAngleYaw - (s16) o->oWallAngle) + 0x8000;\n    return angle;\n}\n\nvoid cur_obj_spawn_particles(struct SpawnParticlesInfo *info) {\n    struct Object *particle;\n    s32 i;\n    f32 scale;\n    s32 numParticles = info->count;\n\n    // If there are a lot of objects already, limit the number of particles\n    if ((gPrevFrameObjectCount > (OBJECT_POOL_CAPACITY - 90)) && numParticles > 10) {\n        numParticles = 10;\n    }\n\n    // We're close to running out of object slots, so don't spawn particles at\n    // all\n    if (gPrevFrameObjectCount > (OBJECT_POOL_CAPACITY - 30)) {\n        numParticles = 0;\n    }\n\n    for (i = 0; i < numParticles; i++) {\n        scale = random_float() * (info->sizeRange * 0.1f) + info->sizeBase * 0.1f;\n\n        particle = spawn_object(o, info->model, bhvWhitePuffExplosion);\n\n        particle->oBhvParams2ndByte = info->bhvParam;\n        particle->oMoveAngleYaw = random_u16();\n        particle->oGravity = info->gravity;\n        particle->oDragStrength = info->dragStrength;\n\n        particle->oPosY += info->offsetY;\n        particle->oForwardVel = random_float() * info->forwardVelRange + info->forwardVelBase;\n        particle->oVelY = random_float() * info->velYRange + info->velYBase;\n\n        obj_scale_xyz(particle, scale, scale, scale);\n    }\n}\n\nvoid obj_set_hitbox(struct Object *obj, struct ObjectHitbox *hitbox) {\n    if (!(obj->oFlags & OBJ_FLAG_30)) {\n        obj->oFlags |= OBJ_FLAG_30;\n\n        obj->oInteractType = hitbox->interactType;\n        obj->oDamageOrCoinValue = hitbox->damageOrCoinValue;\n        obj->oHealth = hitbox->health;\n        obj->oNumLootCoins = hitbox->numLootCoins;\n\n        cur_obj_become_tangible();\n    }\n\n    obj->hitboxRadius = obj->header.gfx.scale[0] * hitbox->radius;\n    obj->hitboxHeight = obj->header.gfx.scale[1] * hitbox->height;\n    obj->hurtboxRadius = obj->header.gfx.scale[0] * hitbox->hurtboxRadius;\n    obj->hurtboxHeight = obj->header.gfx.scale[1] * hitbox->hurtboxHeight;\n    obj->hitboxDownOffset = obj->header.gfx.scale[1] * hitbox->downOffset;\n}\n\ns32 signum_positive(s32 x) {\n    if (x >= 0) {\n        return 1;\n    } else {\n        return -1;\n    }\n}\n\nf32 absf(f32 x) {\n    if (x >= 0) {\n        return x;\n    } else {\n        return -x;\n    }\n}\n\ns32 absi(s32 x) {\n    if (x >= 0) {\n        return x;\n    } else {\n        return -x;\n    }\n}\n\ns32 cur_obj_wait_then_blink(s32 timeUntilBlinking, s32 numBlinks) {\n    s32 done = FALSE;\n    s32 timeBlinking;\n\n    if (o->oTimer >= timeUntilBlinking) {\n        if ((timeBlinking = o->oTimer - timeUntilBlinking) % 2 != 0) {\n            o->header.gfx.node.flags |= GRAPH_RENDER_INVISIBLE;\n            if (timeBlinking / 2 > numBlinks) {\n                done = TRUE;\n            }\n        } else {\n            o->header.gfx.node.flags &= ~GRAPH_RENDER_INVISIBLE;\n        }\n    }\n\n    return done;\n}\n\ns32 cur_obj_is_mario_ground_pounding_platform(void) {\n    if (gMarioObject->platform == o) {\n        if (gMarioStates[0].action == ACT_GROUND_POUND_LAND) {\n            return TRUE;\n        }\n    }\n\n    return FALSE;\n}\n\nvoid spawn_mist_particles(void) {\n    spawn_mist_particles_variable(0, 0, 46.0f);\n}\n\nvoid spawn_mist_particles_with_sound(u32 soundMagic) {\n    spawn_mist_particles_variable(0, 0, 46.0f);\n    create_sound_spawner(soundMagic);\n}\n\nvoid cur_obj_push_mario_away(f32 radius) {\n    f32 marioRelX = gMarioObject->oPosX - o->oPosX;\n    f32 marioRelZ = gMarioObject->oPosZ - o->oPosZ;\n    f32 marioDist = sqrtf(sqr(marioRelX) + sqr(marioRelZ));\n\n    if (marioDist < radius) {\n        //! If this function pushes Mario out of bounds, it will trigger Mario's\n        //  oob failsafe\n        gMarioStates[0].pos[0] += (radius - marioDist) / radius * marioRelX;\n        gMarioStates[0].pos[2] += (radius - marioDist) / radius * marioRelZ;\n    }\n}\n\nvoid cur_obj_push_mario_away_from_cylinder(f32 radius, f32 extentY) {\n    f32 marioRelY = gMarioObject->oPosY - o->oPosY;\n\n    if (marioRelY < 0.0f) {\n        marioRelY = -marioRelY;\n    }\n\n    if (marioRelY < extentY) {\n        cur_obj_push_mario_away(radius);\n    }\n}\n\nvoid bhv_dust_smoke_loop(void) {\n    o->oPosX += o->oVelX;\n    o->oPosY += o->oVelY;\n    o->oPosZ += o->oVelZ;\n\n    if (o->oSmokeTimer == 10) {\n        obj_mark_for_deletion(o);\n    }\n\n    o->oSmokeTimer++;\n}\n\nUNUSED static void stub_obj_helpers_2(void) {\n}\n\ns32 cur_obj_set_action_table(s8 *actionTable) {\n    o->oToxBoxActionTable = actionTable;\n    o->oToxBoxActionStep = 0;\n\n    return *(s8 *) o->oToxBoxActionTable;\n}\n\ns32 cur_obj_progress_action_table(void) {\n    s8 nextAction;\n    s8 *actionTable = o->oToxBoxActionTable;\n    s32 nextActionIndex = o->oToxBoxActionStep + 1;\n\n    if (actionTable[nextActionIndex] != TOX_BOX_ACT_TABLE_END) {\n        nextAction = actionTable[nextActionIndex];\n        o->oToxBoxActionStep++;\n    } else {\n        nextAction = actionTable[0];\n        o->oToxBoxActionStep = 0;\n    }\n\n    return nextAction;\n}\n\nvoid stub_obj_helpers_3(UNUSED s32 arg0, UNUSED s32 arg1) {\n}\n\nvoid cur_obj_scale_over_time(s32 a0, s32 a1, f32 sp10, f32 sp14) {\n    f32 sp4 = sp14 - sp10;\n    f32 sp0 = (f32) o->oTimer / a1;\n\n    if (a0 & 0x01) {\n        o->header.gfx.scale[0] = sp4 * sp0 + sp10;\n    }\n\n    if (a0 & 0x02) {\n        o->header.gfx.scale[1] = sp4 * sp0 + sp10;\n    }\n\n    if (a0 & 0x04) {\n        o->header.gfx.scale[2] = sp4 * sp0 + sp10;\n    }\n}\n\nvoid cur_obj_set_pos_to_home_with_debug(void) {\n    o->oPosX = o->oHomeX + gDebugInfo[DEBUG_PAGE_ENEMYINFO][0];\n    o->oPosY = o->oHomeY + gDebugInfo[DEBUG_PAGE_ENEMYINFO][1];\n    o->oPosZ = o->oHomeZ + gDebugInfo[DEBUG_PAGE_ENEMYINFO][2];\n    cur_obj_scale(gDebugInfo[DEBUG_PAGE_ENEMYINFO][3] / 100.0f + 1.0l);\n}\n\nvoid stub_obj_helpers_4(void) {\n}\n\ns32 cur_obj_is_mario_on_platform(void) {\n    if (gMarioObject->platform == o) {\n        return TRUE;\n    } else {\n        return FALSE;\n    }\n}\n\ns32 cur_obj_shake_y_until(s32 cycles, s32 amount) {\n    if (o->oTimer % 2 != 0) {\n        o->oPosY -= amount;\n    } else {\n        o->oPosY += amount;\n    }\n\n    if (o->oTimer == cycles * 2) {\n        return TRUE;\n    } else {\n        return FALSE;\n    }\n}\n\ns32 jiggle_bbh_stair(s32 a0) {\n    if (a0 >= 4 || a0 < 0) {\n        return TRUE;\n    }\n\n    o->oPosY += sBBHStairJiggleOffsets[a0];\n    return FALSE;\n}\n\nvoid cur_obj_call_action_function(void (*actionFunctions[])(void)) {\n    void (*actionFunction)(void) = actionFunctions[o->oAction];\n    actionFunction();\n}\n\nstatic struct Object *spawn_star_with_no_lvl_exit(s32 sp20, s32 sp24) {\n    struct Object *sp1C = spawn_object(o, MODEL_STAR, bhvSpawnedStarNoLevelExit);\n    sp1C->oSparkleSpawnUnk1B0 = sp24;\n    sp1C->oBhvParams = o->oBhvParams;\n    sp1C->oBhvParams2ndByte = sp20;\n\n    return sp1C;\n}\n\n// old unused initializer for 2d star spawn behavior.\n// uses behavior parameters not used in the current sparkle code.\nvoid spawn_base_star_with_no_lvl_exit(void) {\n    spawn_star_with_no_lvl_exit(0, 0);\n}\n\ns32 bit_shift_left(s32 a0) {\n    return sPowersOfTwo[a0];\n}\n\ns32 cur_obj_mario_far_away(void) {\n    f32 dx = o->oHomeX - gMarioObject->oPosX;\n    f32 dy = o->oHomeY - gMarioObject->oPosY;\n    f32 dz = o->oHomeZ - gMarioObject->oPosZ;\n    f32 marioDistToHome = sqrtf(dx * dx + dy * dy + dz * dz);\n\n    if (o->oDistanceToMario > 2000.0f && marioDistToHome > 2000.0f) {\n        return TRUE;\n    } else {\n        return FALSE;\n    }\n}\n\ns32 is_mario_moving_fast_or_in_air(s32 speedThreshold) {\n    if (gMarioStates[0].forwardVel > speedThreshold) {\n        return TRUE;\n    }\n\n    if (gMarioStates[0].action & ACT_FLAG_AIR) {\n        return TRUE;\n    } else {\n        return FALSE;\n    }\n}\n\ns32 is_item_in_array(s8 item, s8 *array) {\n    while (*array != -1) {\n        if (*array == item) {\n            return TRUE;\n        }\n\n        array++;\n    }\n\n    return FALSE;\n}\n\nUNUSED static void stub_obj_helpers_5(void) {\n}\n\nvoid bhv_init_room(void) {\n    struct Surface *floor;\n    f32 floorHeight;\n\n    if (is_item_in_array(gCurrLevelNum, sLevelsWithRooms)) {\n        floorHeight = find_floor(o->oPosX, o->oPosY, o->oPosZ, &floor);\n\n        if (floor != NULL) {\n            if (floor->room != 0) {\n                o->oRoom = floor->room;\n            } else {\n                // Floor probably belongs to a platform object. Try looking\n                // underneath it\n                find_floor(o->oPosX, floorHeight - 100.0f, o->oPosZ, &floor);\n                if (floor != NULL) {\n                    //! Technically possible that the room could still be 0 here\n                    o->oRoom = floor->room;\n                }\n            }\n        }\n    } else {\n        o->oRoom = -1;\n    }\n}\n\nvoid cur_obj_enable_rendering_if_mario_in_room(void) {\n    register s32 marioInRoom;\n\n    if (o->oRoom != -1 && gMarioCurrentRoom != 0) {\n        if (gMarioCurrentRoom == o->oRoom) {\n            marioInRoom = TRUE;\n        } else if (gDoorAdjacentRooms[gMarioCurrentRoom][0] == o->oRoom) {\n            marioInRoom = TRUE;\n        } else if (gDoorAdjacentRooms[gMarioCurrentRoom][1] == o->oRoom) {\n            marioInRoom = TRUE;\n        } else {\n            marioInRoom = FALSE;\n        }\n\n        if (marioInRoom) {\n            cur_obj_enable_rendering();\n            o->activeFlags &= ~ACTIVE_FLAG_IN_DIFFERENT_ROOM;\n            gNumRoomedObjectsInMarioRoom++;\n        } else {\n            cur_obj_disable_rendering();\n            o->activeFlags |= ACTIVE_FLAG_IN_DIFFERENT_ROOM;\n            gNumRoomedObjectsNotInMarioRoom++;\n        }\n    }\n}\n\ns32 cur_obj_set_hitbox_and_die_if_attacked(struct ObjectHitbox *hitbox, s32 deathSound, s32 noLootCoins) {\n    s32 interacted = FALSE;\n\n    obj_set_hitbox(o, hitbox);\n\n    if (noLootCoins) {\n        o->oNumLootCoins = 0;\n    }\n\n    if (o->oInteractStatus & INT_STATUS_INTERACTED) {\n        if (o->oInteractStatus & INT_STATUS_WAS_ATTACKED) {\n            spawn_mist_particles();\n            obj_spawn_loot_yellow_coins(o, o->oNumLootCoins, 20.0f);\n            obj_mark_for_deletion(o);\n            create_sound_spawner(deathSound);\n        } else {\n            interacted = TRUE;\n        }\n    }\n\n    o->oInteractStatus = 0;\n    return interacted;\n}\n\nvoid obj_explode_and_spawn_coins(f32 mistParticleSize, s32 sp1C) {\n    spawn_mist_particles_variable(0, 0, mistParticleSize);\n    spawn_triangle_break_particles(30, MODEL_DIRT_ANIMATION, 3.0f, 4);\n    obj_mark_for_deletion(o);\n\n    if (sp1C == 1) {\n        obj_spawn_loot_yellow_coins(o, o->oNumLootCoins, 20.0f);\n    } else if (sp1C == 2) {\n        obj_spawn_loot_blue_coins(o, o->oNumLootCoins, 20.0f, 150);\n    }\n}\n\nvoid obj_set_collision_data(struct Object *obj, const void *segAddr) {\n    obj->collisionData = segmented_to_virtual(segAddr);\n}\n\nvoid cur_obj_if_hit_wall_bounce_away(void) {\n    if (o->oMoveFlags & OBJ_MOVE_HIT_WALL) {\n        o->oMoveAngleYaw = o->oWallAngle;\n    }\n}\n\ns32 cur_obj_hide_if_mario_far_away_y(f32 distY) {\n    if (absf(o->oPosY - gMarioObject->oPosY) < distY) {\n        cur_obj_unhide();\n        return FALSE;\n    } else {\n        cur_obj_hide();\n        return TRUE;\n    }\n}\n\nGfx *geo_offset_klepto_held_object(s32 callContext, struct GraphNode *node, UNUSED Mat4 mtx) {\n    if (callContext == GEO_CONTEXT_RENDER) {\n        ((struct GraphNodeTranslationRotation *) node->next)->translation[0] = 300;\n        ((struct GraphNodeTranslationRotation *) node->next)->translation[1] = 300;\n        ((struct GraphNodeTranslationRotation *) node->next)->translation[2] = 0;\n    }\n\n    return NULL;\n}\n\nGfx *geo_offset_klepto_debug(s32 callContext, struct GraphNode *node, UNUSED Mat4 mtx) {\n    if (callContext == GEO_CONTEXT_RENDER) {\n        ((struct GraphNodeTranslationRotation *) node->next)->translation[0] = gDebugInfo[DEBUG_PAGE_EFFECTINFO][0];\n        ((struct GraphNodeTranslationRotation *) node->next)->translation[1] = gDebugInfo[DEBUG_PAGE_EFFECTINFO][1];\n        ((struct GraphNodeTranslationRotation *) node->next)->translation[2] = gDebugInfo[DEBUG_PAGE_EFFECTINFO][2];\n        ((struct GraphNodeTranslationRotation *) node->next)->rotation[0]    = gDebugInfo[DEBUG_PAGE_EFFECTINFO][3];\n        ((struct GraphNodeTranslationRotation *) node->next)->rotation[1]    = gDebugInfo[DEBUG_PAGE_EFFECTINFO][4];\n        ((struct GraphNodeTranslationRotation *) node->next)->rotation[2]    = gDebugInfo[DEBUG_PAGE_EFFECTINFO][5];\n    }\n\n    return NULL;\n}\n\ns32 obj_is_hidden(struct Object *obj) {\n    if (obj->header.gfx.node.flags & GRAPH_RENDER_INVISIBLE) {\n        return TRUE;\n    } else {\n        return FALSE;\n    }\n}\n\nvoid enable_time_stop(void) {\n    gTimeStopState |= TIME_STOP_ENABLED;\n}\n\nvoid disable_time_stop(void) {\n    gTimeStopState &= ~TIME_STOP_ENABLED;\n}\n\nvoid set_time_stop_flags(s32 flags) {\n    gTimeStopState |= flags;\n}\n\nvoid clear_time_stop_flags(s32 flags) {\n    gTimeStopState = gTimeStopState & (flags ^ 0xFFFFFFFF);\n}\n\ns32 cur_obj_can_mario_activate_textbox(f32 radius, f32 height, UNUSED s32 unused) {\n    if (o->oDistanceToMario < 1500.0f) {\n        f32 latDistToMario = lateral_dist_between_objects(o, gMarioObject);\n        UNUSED s16 angleFromMario = obj_angle_to_object(gMarioObject, o);\n\n        if (latDistToMario < radius && o->oPosY < gMarioObject->oPosY + 160.0f\n            && gMarioObject->oPosY < o->oPosY + height && !(gMarioStates[0].action & ACT_FLAG_AIR)\n            && mario_ready_to_speak()) {\n            return TRUE;\n        }\n    }\n\n    return FALSE;\n}\n\ns32 cur_obj_can_mario_activate_textbox_2(f32 radius, f32 height) {\n    // The last argument here is unused. When this function is called directly the argument is always set to 0x7FFF.\n    return cur_obj_can_mario_activate_textbox(radius, height, 0x1000);\n}\n\nstatic void cur_obj_end_dialog(s32 dialogFlags, s32 dialogResult) {\n    o->oDialogResponse = dialogResult;\n    o->oDialogState++;\n\n    if (!(dialogFlags & DIALOG_FLAG_TIME_STOP_ENABLED)) {\n        set_mario_npc_dialog(MARIO_DIALOG_STOP);\n    }\n}\n\ns32 cur_obj_update_dialog(s32 actionArg, s32 dialogFlags, s32 dialogID, UNUSED s32 unused) {\n    s32 dialogResponse = DIALOG_RESPONSE_NONE;\n    UNUSED s32 doneTurning = TRUE;\n\n    switch (o->oDialogState) {\n#if BUGFIX_DIALOG_TIME_STOP\n        case DIALOG_STATUS_ENABLE_TIME_STOP:\n            // Patched :(\n            // Wait for Mario to be ready to speak, and then enable time stop\n            if (mario_ready_to_speak() || gMarioState->action == ACT_READING_NPC_DIALOG) {\n                gTimeStopState |= TIME_STOP_ENABLED;\n                o->activeFlags |= ACTIVE_FLAG_INITIATED_TIME_STOP;\n                o->oDialogState++;\n            } else {\n                break;\n            }\n            // Fall through so that Mario's action is interrupted immediately\n            // after time is stopped\n#else\n        case DIALOG_STATUS_ENABLE_TIME_STOP:\n            //! We enable time stop even if Mario is not ready to speak. This\n            //  allows us to move during time stop as long as Mario never enters\n            //  an action that can be interrupted with text.\n            if (gMarioState->health >= 0x100) {\n                gTimeStopState |= TIME_STOP_ENABLED;\n                o->activeFlags |= ACTIVE_FLAG_INITIATED_TIME_STOP;\n                o->oDialogState++;\n            }\n            break;\n#endif\n        case DIALOG_STATUS_INTERRUPT:\n            // Interrupt until Mario is actually speaking with the NPC\n            if (set_mario_npc_dialog(actionArg) == MARIO_DIALOG_STATUS_SPEAK) {\n                o->oDialogState++;\n            }\n            break;\n\n        case DIALOG_STATUS_START_DIALOG:\n            // Starts dialog, depending of the flag defined, it calls\n            // a default dialog or a dialog with response.\n            if (dialogFlags & DIALOG_FLAG_TEXT_RESPONSE) {\n                create_dialog_box_with_response(dialogID);\n            } else if (dialogFlags & DIALOG_FLAG_TEXT_DEFAULT) {\n                create_dialog_box(dialogID);\n            }\n            o->oDialogState++;\n            break;\n\n        case DIALOG_STATUS_STOP_DIALOG:\n            // Stops dialog, if the flag dialog response was called\n            // then it defines the value to let the object do the rest.\n            if (dialogFlags & DIALOG_FLAG_TEXT_RESPONSE) {\n                if (gDialogResponse != DIALOG_RESPONSE_NONE) {\n                    cur_obj_end_dialog(dialogFlags, gDialogResponse);\n                }\n            } else if (dialogFlags & DIALOG_FLAG_TEXT_DEFAULT) {\n                if (get_dialog_id() == DIALOG_NONE) {\n                    cur_obj_end_dialog(dialogFlags, DIALOG_RESPONSE_NOT_DEFINED);\n                }\n            } else {\n                cur_obj_end_dialog(dialogFlags, DIALOG_RESPONSE_NOT_DEFINED);\n            }\n            break;\n\n        case DIALOG_STATUS_DISABLE_TIME_STOP:\n            // We disable time stop for a few seconds when Mario is no longer\n            // speaking or the flag is defined, then we enable it again.\n            // Usually, an object disables time stop using a separate function\n            // after a certain condition is met.\n            if (gMarioState->action != ACT_READING_NPC_DIALOG || (dialogFlags & DIALOG_FLAG_TIME_STOP_ENABLED)) {\n                gTimeStopState &= ~TIME_STOP_ENABLED;\n                o->activeFlags &= ~ACTIVE_FLAG_INITIATED_TIME_STOP;\n                dialogResponse = o->oDialogResponse;\n                o->oDialogState = DIALOG_STATUS_ENABLE_TIME_STOP;\n            }\n            break;\n\n        default:\n            o->oDialogState = DIALOG_STATUS_ENABLE_TIME_STOP;\n            break;\n    }\n\n    return dialogResponse;\n}\n\ns32 cur_obj_update_dialog_with_cutscene(s32 actionArg, s32 dialogFlags, s32 cutsceneTable, s32 dialogID) {\n    s32 dialogResponse = DIALOG_RESPONSE_NONE;\n    s32 doneTurning = TRUE;\n\n    switch (o->oDialogState) {\n#if BUGFIX_DIALOG_TIME_STOP\n        case DIALOG_STATUS_ENABLE_TIME_STOP:\n            // Wait for Mario to be ready to speak, and then enable time stop\n            if (mario_ready_to_speak() || gMarioState->action == ACT_READING_NPC_DIALOG) {\n                gTimeStopState |= TIME_STOP_ENABLED;\n                o->activeFlags |= ACTIVE_FLAG_INITIATED_TIME_STOP;\n                o->oDialogState++;\n                o->oDialogResponse = DIALOG_RESPONSE_NONE;\n            } else {\n                break;\n            }\n            // Fall through so that Mario's action is interrupted immediately\n            // after time is stopped\n#else\n        case DIALOG_STATUS_ENABLE_TIME_STOP:\n            //! We enable time stop even if Mario is not ready to speak. This\n            //  allows us to move during time stop as long as Mario never enters\n            //  an action that can be interrupted with text.\n            if (gMarioState->health >= 0x0100) {\n                gTimeStopState |= TIME_STOP_ENABLED;\n                o->activeFlags |= ACTIVE_FLAG_INITIATED_TIME_STOP;\n                o->oDialogState++;\n                o->oDialogResponse = DIALOG_RESPONSE_NONE;\n            }\n            break;\n#endif\n        case DIALOG_STATUS_INTERRUPT:\n            // Additional flag that makes the NPC rotate towards to Mario\n            if (dialogFlags & DIALOG_FLAG_TURN_TO_MARIO) {\n                doneTurning = cur_obj_rotate_yaw_toward(obj_angle_to_object(o, gMarioObject), 0x800);\n                // Failsafe just in case it takes more than 33 frames somehow\n                if (o->oDialogResponse >= 33) {\n                    doneTurning = TRUE;\n                }\n            }\n            // Interrupt status until Mario is actually speaking with the NPC and if the\n            // object is done turning to Mario\n            if (set_mario_npc_dialog(actionArg) == MARIO_DIALOG_STATUS_SPEAK && doneTurning) {\n                o->oDialogResponse = 0;\n                o->oDialogState++;\n            } else {\n                o->oDialogResponse++; // treated as a timer for the failsafe\n            }\n            break;\n\n        case DIALOG_STATUS_START_DIALOG:\n            // Special check for Cap Switch cutscene since the cutscene itself\n            // handles what dialog should use\n            if (cutsceneTable == CUTSCENE_CAP_SWITCH_PRESS) {\n                if ((o->oDialogResponse = cutscene_object_without_dialog(cutsceneTable, o))) {\n                    o->oDialogState++;\n                }\n            } else {\n                // General dialog cutscene function, most of the time\n                // the \"CUTSCENE_DIALOG\" cutscene is called\n                if ((o->oDialogResponse = cutscene_object_with_dialog(cutsceneTable, o, dialogID))) {\n                    o->oDialogState++;\n                }\n            }\n            break;\n\n        case DIALOG_STATUS_STOP_DIALOG:\n            // If flag defined, keep time stop enabled until the object\n            // decided to disable it independently\n            if (dialogFlags & DIALOG_FLAG_TIME_STOP_ENABLED) {\n                dialogResponse = o->oDialogResponse;\n                o->oDialogState = DIALOG_STATUS_ENABLE_TIME_STOP;\n            } else if (gMarioState->action != ACT_READING_NPC_DIALOG) {\n                // Disable time stop, then enable time stop for a frame\n                // until the set_mario_npc_dialog function disables it\n                gTimeStopState &= ~TIME_STOP_ENABLED;\n                o->activeFlags &= ~ACTIVE_FLAG_INITIATED_TIME_STOP;\n                dialogResponse = o->oDialogResponse;\n                o->oDialogState = DIALOG_STATUS_ENABLE_TIME_STOP;\n            } else {\n                // And finally stop Mario dialog status\n                set_mario_npc_dialog(MARIO_DIALOG_STOP);\n            }\n            break;\n    }\n\n    return dialogResponse;\n}\n\ns32 cur_obj_has_model(u16 modelID) {\n    if (o->header.gfx.sharedChild == gLoadedGraphNodes[modelID]) {\n        return TRUE;\n    } else {\n        return FALSE;\n    }\n}\n\nvoid cur_obj_align_gfx_with_floor(void) {\n    struct Surface *floor;\n    Vec3f floorNormal;\n    Vec3f position;\n\n    position[0] = o->oPosX;\n    position[1] = o->oPosY;\n    position[2] = o->oPosZ;\n\n    find_floor(position[0], position[1], position[2], &floor);\n    if (floor != NULL) {\n        floorNormal[0] = floor->normal.x;\n        floorNormal[1] = floor->normal.y;\n        floorNormal[2] = floor->normal.z;\n\n        mtxf_align_terrain_normal(o->transform, floorNormal, position, o->oFaceAngleYaw);\n        o->header.gfx.throwMatrix = &o->transform;\n    }\n}\n\ns32 mario_is_within_rectangle(s16 minX, s16 maxX, s16 minZ, s16 maxZ) {\n    if (gMarioObject->oPosX < minX || maxX < gMarioObject->oPosX) {\n        return FALSE;\n    }\n\n    if (gMarioObject->oPosZ < minZ || maxZ < gMarioObject->oPosZ) {\n        return FALSE;\n    }\n\n    return TRUE;\n}\n\nvoid cur_obj_shake_screen(s32 shake) {\n    set_camera_shake_from_point(shake, o->oPosX, o->oPosY, o->oPosZ);\n}\n\ns32 obj_attack_collided_from_other_object(struct Object *obj) {\n    s32 numCollidedObjs;\n    struct Object *other;\n    s32 touchedOtherObject = FALSE;\n\n    numCollidedObjs = obj->numCollidedObjs;\n    if (numCollidedObjs != 0) {\n        other = obj->collidedObjs[0];\n\n        if (other != gMarioObject) {\n            other->oInteractStatus |= ATTACK_PUNCH | INT_STATUS_WAS_ATTACKED | INT_STATUS_INTERACTED\n                                      | INT_STATUS_TOUCHED_BOB_OMB;\n            touchedOtherObject = TRUE;\n        }\n    }\n\n    return touchedOtherObject;\n}\n\ns32 cur_obj_was_attacked_or_ground_pounded(void) {\n    s32 attacked = FALSE;\n\n    if ((o->oInteractStatus & INT_STATUS_INTERACTED)\n        && (o->oInteractStatus & INT_STATUS_WAS_ATTACKED)) {\n        attacked = TRUE;\n    }\n\n    if (cur_obj_is_mario_ground_pounding_platform()) {\n        attacked = TRUE;\n    }\n\n    o->oInteractStatus = 0;\n    return attacked;\n}\n\nvoid obj_copy_behavior_params(struct Object *dst, struct Object *src) {\n    dst->oBhvParams = src->oBhvParams;\n    dst->oBhvParams2ndByte = src->oBhvParams2ndByte;\n}\n\nvoid cur_obj_init_animation_and_anim_frame(s32 animIndex, s32 animFrame) {\n    cur_obj_init_animation_with_sound(animIndex);\n    o->header.gfx.animInfo.animFrame = animFrame;\n}\n\ns32 cur_obj_init_animation_and_check_if_near_end(s32 animIndex) {\n    cur_obj_init_animation_with_sound(animIndex);\n    return cur_obj_check_if_near_animation_end();\n}\n\nvoid cur_obj_init_animation_and_extend_if_at_end(s32 animIndex) {\n    cur_obj_init_animation_with_sound(animIndex);\n    cur_obj_extend_animation_if_at_end();\n}\n\ns32 cur_obj_check_grabbed_mario(void) {\n    if (o->oInteractStatus & INT_STATUS_GRABBED_MARIO) {\n        o->oKingBobombUnk88 = 1;\n        cur_obj_become_intangible();\n        return TRUE;\n    }\n\n    return FALSE;\n}\n\ns32 player_performed_grab_escape_action(void) {\n    static s32 grabReleaseState;\n    s32 result = FALSE;\n\n    if (gPlayer1Controller->stickMag < 30.0f) {\n        grabReleaseState = 0;\n    }\n\n    if (grabReleaseState == 0 && gPlayer1Controller->stickMag > 40.0f) {\n        grabReleaseState = 1;\n        result = TRUE;\n    }\n\n    if (gPlayer1Controller->buttonPressed & A_BUTTON) {\n        result = TRUE;\n    }\n\n    return result;\n}\n\nvoid cur_obj_unused_play_footstep_sound(s32 animFrame1, s32 animFrame2, s32 sound) {\n    if (cur_obj_check_anim_frame(animFrame1) || cur_obj_check_anim_frame(animFrame2)) {\n        cur_obj_play_sound_2(sound);\n    }\n}\n\nvoid enable_time_stop_including_mario(void) {\n    gTimeStopState |= TIME_STOP_ENABLED | TIME_STOP_MARIO_AND_DOORS;\n    o->activeFlags |= ACTIVE_FLAG_INITIATED_TIME_STOP;\n}\n\nvoid disable_time_stop_including_mario(void) {\n    gTimeStopState &= ~(TIME_STOP_ENABLED | TIME_STOP_MARIO_AND_DOORS);\n    o->activeFlags &= ~ACTIVE_FLAG_INITIATED_TIME_STOP;\n}\n\ns32 cur_obj_check_interacted(void) {\n    if (o->oInteractStatus & INT_STATUS_INTERACTED) {\n        o->oInteractStatus = 0;\n        return TRUE;\n    } else {\n        return FALSE;\n    }\n}\n\nvoid cur_obj_spawn_loot_blue_coin(void) {\n    if (o->oNumLootCoins >= 5) {\n        spawn_object(o, MODEL_BLUE_COIN, bhvSpawnedBlueCoin);\n        o->oNumLootCoins -= 5;\n    }\n}\n\n#ifndef VERSION_JP\nvoid cur_obj_spawn_star_at_y_offset(f32 targetX, f32 targetY, f32 targetZ, f32 offsetY) {\n    f32 objectPosY = o->oPosY;\n    o->oPosY += offsetY + gDebugInfo[DEBUG_PAGE_ENEMYINFO][0];\n    spawn_default_star(targetX, targetY, targetZ);\n    o->oPosY = objectPosY;\n}\n#endif\n"
  },
  {
    "path": "src/game/object_helpers.h",
    "content": "#ifndef OBJECT_HELPERS_H\n#define OBJECT_HELPERS_H\n\n#include <PR/ultratypes.h>\n\n#include \"macros.h\"\n#include \"types.h\"\n\n// used for chain chomp and wiggler\nstruct ChainSegment {\n    f32 posX;\n    f32 posY;\n    f32 posZ;\n    s16 pitch;\n    s16 yaw;\n    s16 roll;\n};\n\n#define WATER_DROPLET_FLAG_RAND_ANGLE                0x02\n#define WATER_DROPLET_FLAG_RAND_OFFSET_XZ            0x04 // Unused\n#define WATER_DROPLET_FLAG_RAND_OFFSET_XYZ           0x08 // Unused\n#define WATER_DROPLET_FLAG_SET_Y_TO_WATER_LEVEL      0x20\n#define WATER_DROPLET_FLAG_RAND_ANGLE_INCR_PLUS_8000 0x40\n#define WATER_DROPLET_FLAG_RAND_ANGLE_INCR           0x80 // Unused\n\n// Call spawn_water_droplet with this struct to spawn an object.\nstruct WaterDropletParams {\n    s16 flags; // Droplet spawn flags, see defines above\n    s16 model;\n    const BehaviorScript *behavior;\n    s16 moveAngleRange; // Only used for RAND_ANGLE_INCR flags\n    s16 moveRange;      // Only used for RAND_OFFSET flags\n    f32 randForwardVelOffset;\n    f32 randForwardVelScale;\n    f32 randYVelOffset;\n    f32 randYVelScale;\n    f32 randSizeOffset;\n    f32 randSizeScale;\n};\n\nstruct struct802A1230 {\n    /*0x00*/ s16 unk00;\n    /*0x02*/ s16 unk02;\n};\n\nstruct Struct802A272C {\n    Vec3f vecF;\n    Vec3s vecS;\n};\n\nstruct SpawnParticlesInfo {\n    /*0x00*/ s8 bhvParam;\n    /*0x01*/ s8 count;\n    /*0x02*/ u8 model;\n    /*0x03*/ s8 offsetY;\n    /*0x04*/ s8 forwardVelBase;\n    /*0x05*/ s8 forwardVelRange;\n    /*0x06*/ s8 velYBase;\n    /*0x07*/ s8 velYRange;\n    /*0x08*/ s8 gravity;\n    /*0x09*/ s8 dragStrength;\n    /*0x0C*/ f32 sizeBase;\n    /*0x10*/ f32 sizeRange;\n};\n\nGfx *geo_update_projectile_pos_from_parent(s32 callContext, UNUSED struct GraphNode *node, Mat4 mtx);\nGfx *geo_update_layer_transparency(s32 callContext, struct GraphNode *node, UNUSED void *context);\n#ifdef AVOID_UB\nGfx *geo_switch_anim_state(s32 callContext, struct GraphNode *node, UNUSED void *context);\nGfx *geo_switch_area(s32 callContext, struct GraphNode *node, UNUSED void *context);\n#else\nGfx *geo_switch_anim_state(s32 callContext, struct GraphNode *node);\nGfx *geo_switch_area(s32 callContext, struct GraphNode *node);\n#endif\nvoid obj_update_pos_from_parent_transformation(Mat4 a0, struct Object *a1);\nvoid obj_apply_scale_to_matrix(struct Object *obj, Mat4 dst, Mat4 src);\nvoid create_transformation_from_matrices(Mat4 a0, Mat4 a1, Mat4 a2);\nvoid obj_set_held_state(struct Object *obj, const BehaviorScript *heldBehavior);\nf32 lateral_dist_between_objects(struct Object *obj1, struct Object *obj2);\nf32 dist_between_objects(struct Object *obj1, struct Object *obj2);\nvoid cur_obj_forward_vel_approach_upward(f32 target, f32 increment);\ns32 approach_f32_signed(f32 *value, f32 target, f32 increment);\nf32 approach_f32_symmetric(f32 value, f32 target, f32 increment);\ns16 approach_s16_symmetric(s16 value, s16 target, s16 increment);\ns32 cur_obj_rotate_yaw_toward(s16 target, s16 increment);\ns16 obj_angle_to_object(struct Object *obj1, struct Object *obj2);\ns16 obj_turn_toward_object(struct Object *obj, struct Object *target, s16 angleIndex, s16 turnAmount);\nvoid obj_set_parent_relative_pos(struct Object *obj, s16 relX, s16 relY, s16 relZ);\nvoid obj_set_pos(struct Object *obj, s16 x, s16 y, s16 z);\nvoid obj_set_angle(struct Object *obj, s16 pitch, s16 yaw, s16 roll);\nstruct Object *spawn_object_abs_with_rot(struct Object *parent, s16 uselessArg, u32 model,\n                                         const BehaviorScript *behavior,\n                                         s16 x, s16 y, s16 z, s16 pitch, s16 yaw, s16 roll);\nstruct Object *spawn_object_rel_with_rot(struct Object *parent, u32 model, const BehaviorScript *behavior,\n                                         s16 xOff, s16 yOff, s16 zOff, s16 pitch, s16 yaw, UNUSED s16 roll);\nstruct Object *spawn_obj_with_transform_flags(struct Object *sp20, s32 model, const BehaviorScript *sp28);\nstruct Object *spawn_water_droplet(struct Object *parent, struct WaterDropletParams *params);\nstruct Object *spawn_object_at_origin(struct Object *, s32, u32, const BehaviorScript *);\nstruct Object *spawn_object_at_origin(struct Object *parent, UNUSED s32 unusedArg, u32 model, const BehaviorScript *behavior);\nstruct Object *spawn_object(struct Object *parent, s32 model, const BehaviorScript *behavior);\nstruct Object *try_to_spawn_object(s16 offsetY, f32 scale, struct Object *parent, s32 model, const BehaviorScript *behavior);\nstruct Object *spawn_object_with_scale(struct Object *parent, s32 model, const BehaviorScript *behavior, f32 scale);\nstruct Object *spawn_object_relative(s16 behaviorParam, s16 relativePosX, s16 relativePosY, s16 relativePosZ,\n                                     struct Object *parent, s32 model, const BehaviorScript *behavior);\nstruct Object *spawn_object_relative_with_scale(s16 behaviorParam, s16 relativePosX, s16 relativePosY,\n                                                s16 relativePosZ, f32 scale, struct Object *parent,\n                                                s32 model, const BehaviorScript *behavior);\nvoid cur_obj_move_using_vel(void);\nvoid obj_copy_graph_y_offset(struct Object *dst, struct Object *src);\nvoid obj_copy_pos_and_angle(struct Object *dst, struct Object *src);\nvoid obj_copy_pos(struct Object *dst, struct Object *src);\nvoid obj_copy_angle(struct Object *dst, struct Object *src);\nvoid obj_set_gfx_pos_from_pos(struct Object *obj);\nvoid linear_mtxf_mul_vec3f(Mat4 m, Vec3f dst, Vec3f v);\nvoid linear_mtxf_transpose_mul_vec3f(Mat4 m, Vec3f dst, Vec3f v);\nvoid obj_apply_scale_to_transform(struct Object *obj);\nvoid obj_copy_scale(struct Object *dst, struct Object *src);\nvoid obj_scale_xyz(struct Object *obj, f32 xScale, f32 yScale, f32 zScale);\nvoid obj_scale(struct Object *obj, f32 scale);\nvoid cur_obj_scale(f32 scale);\nvoid cur_obj_init_animation_with_sound(s32 animIndex);\nvoid cur_obj_init_animation_with_accel_and_sound(s32 animIndex, f32 accel);\nvoid cur_obj_init_animation(s32 animIndex);\nvoid obj_init_animation_with_sound(struct Object *obj, const struct Animation * const* animations, s32 animIndex);\nvoid cur_obj_enable_rendering(void);\nvoid cur_obj_disable_rendering(void);\nvoid cur_obj_unhide(void);\nvoid cur_obj_hide(void);\nvoid cur_obj_set_pos_relative(struct Object *other, f32 dleft, f32 dy, f32 dforward);\nvoid cur_obj_set_pos_relative_to_parent(f32 dleft, f32 dy, f32 dforward);\nvoid cur_obj_enable_rendering_2(void);\nvoid obj_set_face_angle_to_move_angle(struct Object *obj);\nu32 get_object_list_from_behavior(const BehaviorScript *behavior);\nstruct Object *cur_obj_nearest_object_with_behavior(const BehaviorScript *behavior);\nf32 cur_obj_dist_to_nearest_object_with_behavior(const BehaviorScript* behavior);\nstruct Object *cur_obj_find_nearest_object_with_behavior(const BehaviorScript * behavior, f32 *dist);\nstruct Object *find_unimportant_object(void);\ns32 count_unimportant_objects(void);\ns32 count_objects_with_behavior(const BehaviorScript *behavior);\nstruct Object *cur_obj_find_nearby_held_actor(const BehaviorScript *behavior, f32 maxDist);\nvoid cur_obj_change_action(s32 action);\nvoid cur_obj_set_vel_from_mario_vel(f32 objBaseForwardVel, f32 multiplier);\nBAD_RETURN(s16) cur_obj_reverse_animation(void);\nBAD_RETURN(s32) cur_obj_extend_animation_if_at_end(void);\ns32 cur_obj_check_if_near_animation_end(void);\ns32 cur_obj_check_if_at_animation_end(void);\ns32 cur_obj_check_anim_frame(s32 frame);\ns32 cur_obj_check_anim_frame_in_range(s32 startFrame, s32 rangeLength);\ns32 cur_obj_check_frame_prior_current_frame(s16 *a0);\ns32 mario_is_in_air_action(void);\ns32 mario_is_dive_sliding(void);\nvoid cur_obj_set_y_vel_and_animation(f32 sp18, s32 sp1C);\nvoid cur_obj_unrender_set_action_and_anim(s32 sp18, s32 sp1C);\nvoid cur_obj_get_thrown_or_placed(f32 forwardVel, f32 velY, s32 thrownAction);\nvoid cur_obj_get_dropped(void);\nvoid cur_obj_set_model(s32 modelID);\nvoid mario_set_flag(s32 flag);\ns32 cur_obj_clear_interact_status_flag(s32 flag);\nvoid obj_mark_for_deletion(struct Object *obj);\nvoid cur_obj_disable(void);\nvoid cur_obj_become_intangible(void);\nvoid cur_obj_become_tangible(void);\nvoid obj_become_tangible(struct Object *obj);\nvoid cur_obj_update_floor_height(void);\nstruct Surface *cur_obj_update_floor_height_and_get_floor(void);\nvoid cur_obj_apply_drag_xz(f32 dragStrength);\nvoid cur_obj_move_y(f32 gravity, f32 bounciness, f32 buoyancy);\nvoid cur_obj_unused_resolve_wall_collisions(f32 offsetY, f32 radius);\ns16 abs_angle_diff(s16 x0, s16 x1);\nvoid cur_obj_move_xz_using_fvel_and_yaw(void);\nvoid cur_obj_move_y_with_terminal_vel(void);\nvoid cur_obj_compute_vel_xz(void);\nf32 increment_velocity_toward_range(f32 value, f32 center, f32 zeroThreshold, f32 increment);\ns32 obj_check_if_collided_with_object(struct Object *obj1, struct Object *obj2);\nvoid cur_obj_set_behavior(const BehaviorScript *behavior);\nvoid obj_set_behavior(struct Object *obj, const BehaviorScript *behavior);\ns32 cur_obj_has_behavior(const BehaviorScript *behavior);\ns32 obj_has_behavior(struct Object *obj, const BehaviorScript *behavior);\nf32 cur_obj_lateral_dist_from_mario_to_home(void);\nf32 cur_obj_lateral_dist_to_home(void);\nvoid cur_obj_set_pos_to_home(void);\nvoid cur_obj_set_pos_to_home_and_stop(void);\nvoid cur_obj_shake_y(f32 amount);\nvoid cur_obj_start_cam_event(UNUSED struct Object *obj, s32 cameraEvent);\nvoid set_mario_interact_true_if_in_range(UNUSED s32 arg0, UNUSED s32 arg1, f32 range);\nvoid obj_set_billboard(struct Object *obj);\nvoid cur_obj_set_hitbox_radius_and_height(f32 radius, f32 height);\nvoid cur_obj_set_hurtbox_radius_and_height(f32 radius, f32 height);\nvoid obj_spawn_loot_blue_coins(struct Object *obj, s32 numCoins, f32 baseVelY, s16 posJitter);\nvoid obj_spawn_loot_yellow_coins(struct Object *obj, s32 numCoins, f32 baseVelY);\nvoid cur_obj_spawn_loot_coin_at_mario_pos(void);\ns32 cur_obj_advance_looping_anim(void);\ns32 cur_obj_resolve_wall_collisions(void);\nvoid cur_obj_update_floor_and_walls(void);\nvoid cur_obj_move_standard(s16 steepSlopeAngleDegrees);\nvoid cur_obj_move_using_vel_and_gravity(void);\nvoid cur_obj_move_using_fvel_and_gravity(void);\ns16 cur_obj_angle_to_home(void);\nvoid obj_set_gfx_pos_at_obj_pos(struct Object *obj1, struct Object *obj2);\nvoid obj_translate_local(struct Object *obj, s16 posIndex, s16 localTranslateIndex);\nvoid obj_build_transform_from_pos_and_angle(struct Object *obj, s16 posIndex, s16 angleIndex);\nvoid obj_set_throw_matrix_from_transform(struct Object *obj);\nvoid obj_build_transform_relative_to_parent(struct Object *obj);\nvoid obj_create_transform_from_self(struct Object *obj);\nvoid  cur_obj_rotate_face_angle_using_vel(void);\ns32 cur_obj_follow_path(UNUSED s32 unused);\nvoid chain_segment_init(struct ChainSegment *segment);\nf32 random_f32_around_zero(f32 diameter);\nvoid obj_scale_random(struct Object *obj, f32 rangeLength, f32 minScale);\nvoid obj_translate_xyz_random(struct Object *obj, f32 rangeLength);\nvoid obj_translate_xz_random(struct Object *obj, f32 rangeLength);\nvoid cur_obj_set_pos_via_transform(void);\nvoid cur_obj_spawn_particles(struct SpawnParticlesInfo *info);\ns16 cur_obj_reflect_move_angle_off_wall(void);\n\n#define WAYPOINT_FLAGS_END -1\n#define WAYPOINT_FLAGS_INITIALIZED 0x8000\n#define WAYPOINT_MASK_00FF 0x00FF\n#define WAYPOINT_FLAGS_PLATFORM_ON_TRACK_PAUSE 3\n\n#define PATH_NONE 0\n#define PATH_REACHED_END -1\n#define PATH_REACHED_WAYPOINT 1\n\nvoid obj_set_hitbox(struct Object *obj, struct ObjectHitbox *hitbox);\ns32 signum_positive(s32 x);\nf32 absf(f32 x);\ns32 absi(s32 a0);\ns32 cur_obj_wait_then_blink(s32 timeUntilBlinking, s32 numBlinks);\ns32 cur_obj_is_mario_ground_pounding_platform(void);\nvoid spawn_mist_particles(void);\nvoid spawn_mist_particles_with_sound(u32 soundMagic);\nvoid cur_obj_push_mario_away(f32 radius);\nvoid cur_obj_push_mario_away_from_cylinder(f32 radius, f32 extentY);\ns32 cur_obj_set_action_table(s8 *actionTable);\ns32 cur_obj_progress_action_table(void);\nvoid stub_obj_helpers_3(UNUSED s32 arg0, UNUSED s32 arg1);\nvoid cur_obj_scale_over_time(s32 a0, s32 a1, f32 sp10, f32 sp14);\nvoid cur_obj_set_pos_to_home_with_debug(void);\ns32 cur_obj_is_mario_on_platform(void);\ns32 jiggle_bbh_stair(s32 a0);\nvoid cur_obj_call_action_function(void (*actionFunctions[])(void));\nvoid spawn_base_star_with_no_lvl_exit(void);\ns32 bit_shift_left(s32 a0);\ns32 cur_obj_mario_far_away(void);\ns32 is_mario_moving_fast_or_in_air(s32 speedThreshold);\ns32 is_item_in_array(s8 item, s8 *array);\nvoid cur_obj_enable_rendering_if_mario_in_room(void);\ns32 cur_obj_set_hitbox_and_die_if_attacked(struct ObjectHitbox *hitbox, s32 deathSound, s32 noLootCoins);\nvoid obj_explode_and_spawn_coins(f32 mistParticleSize, s32 sp1C);\nvoid obj_set_collision_data(struct Object *obj, const void *segAddr);\nvoid cur_obj_if_hit_wall_bounce_away(void);\ns32 cur_obj_hide_if_mario_far_away_y(f32 distY);\nGfx *geo_offset_klepto_held_object(s32 callContext, struct GraphNode *node, UNUSED Mat4 mtx);\nGfx *geo_offset_klepto_debug(s32 callContext, struct GraphNode *node, UNUSED Mat4 mtx);\ns32 obj_is_hidden(struct Object *obj);\nvoid enable_time_stop(void);\nvoid disable_time_stop(void);\nvoid set_time_stop_flags(s32 flags);\nvoid clear_time_stop_flags(s32 flags);\ns32 cur_obj_can_mario_activate_textbox(f32 radius, f32 height, UNUSED s32 unused);\ns32 cur_obj_can_mario_activate_textbox_2(f32 radius, f32 height);\ns32 cur_obj_update_dialog(s32 actionArg, s32 dialogFlags, s32 dialogID, UNUSED s32 unused);\ns32 cur_obj_update_dialog_with_cutscene(s32 actionArg, s32 dialogFlags, s32 cutsceneTable, s32 dialogID);\ns32 cur_obj_has_model(u16 modelID);\nvoid cur_obj_align_gfx_with_floor(void);\ns32 mario_is_within_rectangle(s16 minX, s16 maxX, s16 minZ, s16 maxZ);\nvoid cur_obj_shake_screen(s32 shake);\ns32 obj_attack_collided_from_other_object(struct Object *obj);\ns32 cur_obj_was_attacked_or_ground_pounded(void);\nvoid obj_copy_behavior_params(struct Object *dst, struct Object *src);\nvoid cur_obj_init_animation_and_anim_frame(s32 animIndex, s32 animFrame);\ns32 cur_obj_init_animation_and_check_if_near_end(s32 animIndex);\nvoid cur_obj_init_animation_and_extend_if_at_end(s32 animIndex);\ns32 cur_obj_check_grabbed_mario(void);\ns32 player_performed_grab_escape_action(void);\nvoid cur_obj_unused_play_footstep_sound(s32 animFrame1, s32 animFrame2, s32 sound);\nvoid enable_time_stop_including_mario(void);\nvoid disable_time_stop_including_mario(void);\ns32 cur_obj_check_interacted(void);\nvoid cur_obj_spawn_loot_blue_coin(void);\n\n#ifndef VERSION_JP\nvoid cur_obj_spawn_star_at_y_offset(f32 targetX, f32 targetY, f32 targetZ, f32 offsetY);\n#endif\n\n#endif // OBJECT_HELPERS_H\n"
  },
  {
    "path": "src/game/object_list_processor.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"sm64.h\"\n#include \"area.h\"\n#include \"behavior_data.h\"\n#include \"camera.h\"\n#include \"debug.h\"\n#include \"engine/behavior_script.h\"\n#include \"engine/graph_node.h\"\n#include \"engine/surface_collision.h\"\n#include \"engine/surface_load.h\"\n#include \"interaction.h\"\n#include \"level_update.h\"\n#include \"mario.h\"\n#include \"memory.h\"\n#include \"object_collision.h\"\n#include \"object_helpers.h\"\n#include \"object_list_processor.h\"\n#include \"platform_displacement.h\"\n#include \"profiler.h\"\n#include \"spawn_object.h\"\n\n\n/**\n * Flags controlling what debug info is displayed.\n */\ns32 gDebugInfoFlags;\n\n/**\n * The number of times per frame find_floor found no floor beneath an\n * object, and therefore either returned a dynamic floor or NULL.\n */\ns32 gNumFindFloorMisses;\n\nUNUSED s32 unused_8033BEF8;\n\n/**\n * An unused debug counter with the label \"WALL\".\n */\ns32 gUnknownWallCount;\n\n/**\n * Roughly the number of objects that have been processed this frame so far.\n * A bug in update_terrain_objects makes this count inaccurate.\n */\nu32 gObjectCounter;\n\n/**\n * The number of times find_floor, find_ceil, and find_wall_collisions have been called respectively.\n */\nstruct NumTimesCalled gNumCalls;\n\n/**\n * An array of debug controls that could be used to tweak in-game parameters.\n * The only used rows are [4] and [5] (effectinfo and enemyinfo).\n */\ns16 gDebugInfo[16][8];\ns16 gDebugInfoOverwrite[16][8];\n\n/**\n * A set of flags to control which objects are updated on a given frame.\n * This is used during dialog and cutscenes to freeze most objects in place.\n */\nu32 gTimeStopState;\n\n/**\n * The pool that objects are allocated from.\n */\nstruct Object gObjectPool[OBJECT_POOL_CAPACITY];\n\n/**\n * A special object whose purpose is to act as a parent for macro objects.\n */\nstruct Object gMacroObjectDefaultParent;\n\n/**\n * A pointer to gObjectListArray.\n * Given an object list index idx, gObjectLists[idx] is the head of a doubly\n * linked list of all currently spawned objects in the list.\n */\nstruct ObjectNode *gObjectLists;\n\n/**\n * A singly linked list of available slots in the object pool.\n */\nstruct ObjectNode gFreeObjectList;\n\n/**\n * The object representing Mario.\n */\nstruct Object *gMarioObject;\n\n/**\n * An object variable that may have been used to represent the planned\n * second player. This is speculation, based on its position and its usage in\n * shadow.c.\n */\nstruct Object *gLuigiObject;\n\n/**\n * The object whose behavior script is currently being updated.\n * This object is used frequently in object behavior code, and so is often\n * aliased as \"o\".\n */\nstruct Object *gCurrentObject;\n\n/**\n * The next object behavior command to be executed.\n */\nconst BehaviorScript *gCurBhvCommand;\n\n/**\n * The number of objects that were processed last frame, which may miss some\n * objects that were spawned last frame and all objects that were spawned this\n * frame. It also includes objects that were unloaded last frame.\n * Besides this, a bug in update_terrain_objects makes this count inaccurate.\n */\ns16 gPrevFrameObjectCount;\n\n/**\n * The total number of surface nodes allocated (a node is allocated for each\n * spatial partition cell that a surface intersects).\n */\ns32 gSurfaceNodesAllocated;\n\n/**\n * The total number of surfaces allocated.\n */\ns32 gSurfacesAllocated;\n\n/**\n * The number of nodes that have been created for surfaces.\n */\ns32 gNumStaticSurfaceNodes;\n\n/**\n * The number of surfaces in the pool.\n */\ns32 gNumStaticSurfaces;\n\n/**\n * A pool used by chain chomp and wiggler to allocate their body parts.\n */\nstruct MemoryPool *gObjectMemoryPool;\n\n\ns16 gCheckingSurfaceCollisionsForCamera;\ns16 gFindFloorIncludeSurfaceIntangible;\nTerrainData *gEnvironmentRegions;\ns32 gEnvironmentLevels[20];\nRoomData gDoorAdjacentRooms[60][2];\ns16 gMarioCurrentRoom;\ns16 D_8035FEE2;\ns16 D_8035FEE4;\ns16 gTHIWaterDrained;\ns16 gTTCSpeedSetting;\ns16 gMarioShotFromCannon;\ns16 gCCMEnteredSlide;\ns16 gNumRoomedObjectsInMarioRoom;\ns16 gNumRoomedObjectsNotInMarioRoom;\ns16 gWDWWaterLevelChanging;\ns16 gMarioOnMerryGoRound;\n\n/**\n * Nodes used to represent the doubly linked object lists.\n */\nstruct ObjectNode gObjectListArray[16];\n\n/**\n * The order that object lists are processed in a frame.\n */\ns8 sObjectListUpdateOrder[] = { OBJ_LIST_SPAWNER,\n                                OBJ_LIST_SURFACE,\n                                OBJ_LIST_POLELIKE,\n                                OBJ_LIST_PLAYER,\n                                OBJ_LIST_PUSHABLE,\n                                OBJ_LIST_GENACTOR,\n                                OBJ_LIST_DESTRUCTIVE,\n                                OBJ_LIST_LEVEL,\n                                OBJ_LIST_DEFAULT,\n                                OBJ_LIST_UNIMPORTANT,\n                                -1 };\n\n/**\n * Info needed to spawn particles and keep track of which have been spawned for\n * an object.\n */\nstruct ParticleProperties {\n    u32 particleFlag;\n    u32 activeParticleFlag;\n    u8 model;\n    const BehaviorScript *behavior;\n};\n\n/**\n * A table mapping particle flags to various properties use when spawning a particle.\n */\nstruct ParticleProperties sParticleTypes[] = {\n    { PARTICLE_DUST,                 ACTIVE_PARTICLE_DUST,                 MODEL_MIST,                 bhvMistParticleSpawner },\n    { PARTICLE_VERTICAL_STAR,        ACTIVE_PARTICLE_V_STAR,               MODEL_NONE,                 bhvVertStarParticleSpawner },\n    { PARTICLE_HORIZONTAL_STAR,      ACTIVE_PARTICLE_H_STAR,               MODEL_NONE,                 bhvHorStarParticleSpawner },\n    { PARTICLE_SPARKLES,             ACTIVE_PARTICLE_SPARKLES,             MODEL_SPARKLES,             bhvSparkleParticleSpawner },\n    { PARTICLE_BUBBLE,               ACTIVE_PARTICLE_BUBBLE,               MODEL_BUBBLE,               bhvBubbleParticleSpawner },\n    { PARTICLE_WATER_SPLASH,         ACTIVE_PARTICLE_WATER_SPLASH,         MODEL_WATER_SPLASH,         bhvWaterSplash },\n    { PARTICLE_IDLE_WATER_WAVE,      ACTIVE_PARTICLE_IDLE_WATER_WAVE,      MODEL_IDLE_WATER_WAVE,      bhvIdleWaterWave },\n    { PARTICLE_PLUNGE_BUBBLE,        ACTIVE_PARTICLE_PLUNGE_BUBBLE,        MODEL_WHITE_PARTICLE_SMALL, bhvPlungeBubble },\n    { PARTICLE_WAVE_TRAIL,           ACTIVE_PARTICLE_WAVE_TRAIL,           MODEL_WAVE_TRAIL,           bhvWaveTrail },\n    { PARTICLE_FIRE,                 ACTIVE_PARTICLE_FIRE,                 MODEL_RED_FLAME,            bhvFireParticleSpawner },\n    { PARTICLE_SHALLOW_WATER_WAVE,   ACTIVE_PARTICLE_SHALLOW_WATER_WAVE,   MODEL_NONE,                 bhvShallowWaterWave },\n    { PARTICLE_SHALLOW_WATER_SPLASH, ACTIVE_PARTICLE_SHALLOW_WATER_SPLASH, MODEL_NONE,                 bhvShallowWaterSplash },\n    { PARTICLE_LEAF,                 ACTIVE_PARTICLE_LEAF,                 MODEL_NONE,                 bhvLeafParticleSpawner },\n    { PARTICLE_SNOW,                 ACTIVE_PARTICLE_SNOW,                 MODEL_NONE,                 bhvSnowParticleSpawner },\n    { PARTICLE_BREATH,               ACTIVE_PARTICLE_BREATH,               MODEL_NONE,                 bhvBreathParticleSpawner },\n    { PARTICLE_DIRT,                 ACTIVE_PARTICLE_DIRT,                 MODEL_NONE,                 bhvDirtParticleSpawner },\n    { PARTICLE_MIST_CIRCLE,          ACTIVE_PARTICLE_MIST_CIRCLE,          MODEL_NONE,                 bhvMistCircParticleSpawner },\n    { PARTICLE_TRIANGLE,             ACTIVE_PARTICLE_TRIANGLE,             MODEL_NONE,                 bhvTriangleParticleSpawner },\n    { 0, 0, MODEL_NONE, NULL },\n};\n\n/**\n * Copy position, velocity, and angle variables from MarioState to the Mario\n * object.\n */\nvoid copy_mario_state_to_object(void) {\n    s32 i = 0;\n    // L is real\n    if (gCurrentObject != gMarioObject) {\n        i++;\n    }\n\n    gCurrentObject->oVelX = gMarioStates[i].vel[0];\n    gCurrentObject->oVelY = gMarioStates[i].vel[1];\n    gCurrentObject->oVelZ = gMarioStates[i].vel[2];\n\n    gCurrentObject->oPosX = gMarioStates[i].pos[0];\n    gCurrentObject->oPosY = gMarioStates[i].pos[1];\n    gCurrentObject->oPosZ = gMarioStates[i].pos[2];\n\n    gCurrentObject->oMoveAnglePitch = gCurrentObject->header.gfx.angle[0];\n    gCurrentObject->oMoveAngleYaw = gCurrentObject->header.gfx.angle[1];\n    gCurrentObject->oMoveAngleRoll = gCurrentObject->header.gfx.angle[2];\n\n    gCurrentObject->oFaceAnglePitch = gCurrentObject->header.gfx.angle[0];\n    gCurrentObject->oFaceAngleYaw = gCurrentObject->header.gfx.angle[1];\n    gCurrentObject->oFaceAngleRoll = gCurrentObject->header.gfx.angle[2];\n\n    gCurrentObject->oAngleVelPitch = gMarioStates[i].angleVel[0];\n    gCurrentObject->oAngleVelYaw = gMarioStates[i].angleVel[1];\n    gCurrentObject->oAngleVelRoll = gMarioStates[i].angleVel[2];\n}\n\n/**\n * Spawn a particle at gCurrentObject's location.\n */\nvoid spawn_particle(u32 activeParticleFlag, s16 model, const BehaviorScript *behavior) {\n    if (!(gCurrentObject->oActiveParticleFlags & activeParticleFlag)) {\n        struct Object *particle;\n        gCurrentObject->oActiveParticleFlags |= activeParticleFlag;\n        particle = spawn_object_at_origin(gCurrentObject, 0, model, behavior);\n        obj_copy_pos_and_angle(particle, gCurrentObject);\n    }\n}\n\n/**\n * Mario's primary behavior update function.\n */\nvoid bhv_mario_update(void) {\n    u32 particleFlags = 0;\n    s32 i;\n\n    particleFlags = execute_mario_action(gCurrentObject);\n    gCurrentObject->oMarioParticleFlags = particleFlags;\n\n    // Mario code updates MarioState's versions of position etc, so we need\n    // to sync it with the Mario object\n    copy_mario_state_to_object();\n\n    i = 0;\n    while (sParticleTypes[i].particleFlag != 0) {\n        if (particleFlags & sParticleTypes[i].particleFlag) {\n            spawn_particle(sParticleTypes[i].activeParticleFlag, sParticleTypes[i].model,\n                           sParticleTypes[i].behavior);\n        }\n\n        i++;\n    }\n}\n\n/**\n * Update every object that occurs after firstObj in the given object list,\n * including firstObj itself. Return the number of objects that were updated.\n */\ns32 update_objects_starting_at(struct ObjectNode *objList, struct ObjectNode *firstObj) {\n    s32 count = 0;\n\n    while (objList != firstObj) {\n        gCurrentObject = (struct Object *) firstObj;\n\n        gCurrentObject->header.gfx.node.flags |= GRAPH_RENDER_HAS_ANIMATION;\n        cur_obj_update();\n\n        firstObj = firstObj->next;\n        count++;\n    }\n\n    return count;\n}\n\n/**\n * Update objects in objList starting with firstObj while time stop is active.\n * This means that only certain select objects will be updated, such as Mario,\n * doors, unimportant objects, and the object that initiated time stop.\n * The exact set of objects that are updated depends on which flags are set\n * in gTimeStopState.\n * Return the total number of objects in the list (including those that weren't\n * updated)\n */\ns32 update_objects_during_time_stop(struct ObjectNode *objList, struct ObjectNode *firstObj) {\n    s32 count = 0;\n    s32 unfrozen;\n\n    while (objList != firstObj) {\n        gCurrentObject = (struct Object *) firstObj;\n\n        unfrozen = FALSE;\n\n        // Selectively unfreeze certain objects\n        if (!(gTimeStopState & TIME_STOP_ALL_OBJECTS)) {\n            if (gCurrentObject == gMarioObject && !(gTimeStopState & TIME_STOP_MARIO_AND_DOORS)) {\n                unfrozen = TRUE;\n            }\n\n            if ((gCurrentObject->oInteractType & (INTERACT_DOOR | INTERACT_WARP_DOOR))\n                && !(gTimeStopState & TIME_STOP_MARIO_AND_DOORS)) {\n                unfrozen = TRUE;\n            }\n\n            if (gCurrentObject->activeFlags\n                & (ACTIVE_FLAG_UNIMPORTANT | ACTIVE_FLAG_INITIATED_TIME_STOP)) {\n                unfrozen = TRUE;\n            }\n        }\n\n        // Only update if unfrozen\n        if (unfrozen) {\n            gCurrentObject->header.gfx.node.flags |= GRAPH_RENDER_HAS_ANIMATION;\n            cur_obj_update();\n        } else {\n            gCurrentObject->header.gfx.node.flags &= ~GRAPH_RENDER_HAS_ANIMATION;\n        }\n\n        firstObj = firstObj->next;\n        count++;\n    }\n\n    return count;\n}\n\n/**\n * Update every object in the given list. Return the total number of objects in\n * the list.\n */\ns32 update_objects_in_list(struct ObjectNode *objList) {\n    s32 count;\n    struct ObjectNode *firstObj = objList->next;\n\n    if (!(gTimeStopState & TIME_STOP_ACTIVE)) {\n        count = update_objects_starting_at(objList, firstObj);\n    } else {\n        count = update_objects_during_time_stop(objList, firstObj);\n    }\n\n    return count;\n}\n\n/**\n * Unload any objects in the list that have been deactivated.\n */\ns32 unload_deactivated_objects_in_list(struct ObjectNode *objList) {\n    struct ObjectNode *obj = objList->next;\n\n    while (objList != obj) {\n        gCurrentObject = (struct Object *) obj;\n\n        obj = obj->next;\n\n        if ((gCurrentObject->activeFlags & ACTIVE_FLAG_ACTIVE) != ACTIVE_FLAG_ACTIVE) {\n            // Prevent object from respawning after exiting and re-entering the\n            // area\n            if (!(gCurrentObject->oFlags & OBJ_FLAG_PERSISTENT_RESPAWN)) {\n                set_object_respawn_info_bits(gCurrentObject, RESPAWN_INFO_DONT_RESPAWN);\n            }\n\n            unload_object(gCurrentObject);\n        }\n    }\n\n    return 0;\n}\n\n/**\n * OR the object's respawn info with bits << 8. If bits = 0xFF, this prevents\n * the object from respawning after leaving and re-entering the area.\n * For macro objects, respawnInfo points to the 16 bit entry in the macro object\n * list. For other objects, it points to the 32 bit behaviorArg in the\n * SpawnInfo.\n */\nvoid set_object_respawn_info_bits(struct Object *obj, u8 bits) {\n    u32 *info32;\n    u16 *info16;\n\n    switch (obj->respawnInfoType) {\n        case RESPAWN_INFO_TYPE_32:\n            info32 = (u32 *) obj->respawnInfo;\n            *info32 |= bits << 8;\n            break;\n\n        case RESPAWN_INFO_TYPE_16:\n            info16 = (u16 *) obj->respawnInfo;\n            *info16 |= bits << 8;\n            break;\n    }\n}\n\n/**\n * Unload all objects whose activeAreaIndex is areaIndex.\n */\nvoid unload_objects_from_area(UNUSED s32 unused, s32 areaIndex) {\n    struct Object *obj;\n    struct ObjectNode *node;\n    struct ObjectNode *list;\n    s32 i;\n    gObjectLists = gObjectListArray;\n\n    for (i = 0; i < NUM_OBJ_LISTS; i++) {\n        list = gObjectLists + i;\n        node = list->next;\n\n        while (node != list) {\n            obj = (struct Object *) node;\n            node = node->next;\n\n            if (obj->header.gfx.activeAreaIndex == areaIndex) {\n                unload_object(obj);\n            }\n        }\n    }\n}\n\n/**\n * Spawn objects given a list of SpawnInfos. Called when loading an area.\n */\nvoid spawn_objects_from_info(UNUSED s32 unused, struct SpawnInfo *spawnInfo) {\n    gObjectLists = gObjectListArray;\n    gTimeStopState = 0;\n\n    gWDWWaterLevelChanging = FALSE;\n    gMarioOnMerryGoRound = FALSE;\n\n    //! (Spawning Displacement) On the Japanese version, Mario's platform object\n    //  isn't cleared when transitioning between areas. This can cause Mario to\n    //  receive displacement after spawning.\n#ifndef VERSION_JP\n    clear_mario_platform();\n#endif\n\n    if (gCurrAreaIndex == 2) {\n        gCCMEnteredSlide |= 1;\n    }\n\n    while (spawnInfo != NULL) {\n        struct Object *object;\n        UNUSED u8 filler[4];\n        const BehaviorScript *script;\n        UNUSED s16 arg16 = (s16)(spawnInfo->behaviorArg & 0xFFFF);\n\n        script = segmented_to_virtual(spawnInfo->behaviorScript);\n\n        // If the object was previously killed/collected, don't respawn it\n        if ((spawnInfo->behaviorArg & (RESPAWN_INFO_DONT_RESPAWN << 8))\n            != (RESPAWN_INFO_DONT_RESPAWN << 8)) {\n            object = create_object(script);\n\n            // Behavior parameters are often treated as four separate bytes, but\n            // are stored as an s32.\n            object->oBhvParams = spawnInfo->behaviorArg;\n            // The second byte of the behavior parameters is copied over to a special field\n            // as it is the most frequently used by objects.\n            object->oBhvParams2ndByte = ((spawnInfo->behaviorArg) >> 16) & 0xFF;\n\n            object->behavior = script;\n            object->unused1 = 0;\n\n            // Record death/collection in the SpawnInfo\n            object->respawnInfoType = RESPAWN_INFO_TYPE_32;\n            object->respawnInfo = &spawnInfo->behaviorArg;\n\n            if (spawnInfo->behaviorArg & 0x01) {\n                gMarioObject = object;\n                geo_make_first_child(&object->header.gfx.node);\n            }\n\n            geo_obj_init_spawninfo(&object->header.gfx, spawnInfo);\n\n            object->oPosX = spawnInfo->startPos[0];\n            object->oPosY = spawnInfo->startPos[1];\n            object->oPosZ = spawnInfo->startPos[2];\n\n            object->oFaceAnglePitch = spawnInfo->startAngle[0];\n            object->oFaceAngleYaw = spawnInfo->startAngle[1];\n            object->oFaceAngleRoll = spawnInfo->startAngle[2];\n\n            object->oMoveAnglePitch = spawnInfo->startAngle[0];\n            object->oMoveAngleYaw = spawnInfo->startAngle[1];\n            object->oMoveAngleRoll = spawnInfo->startAngle[2];\n        }\n\n        spawnInfo = spawnInfo->next;\n    }\n}\n\nvoid stub_obj_list_processor_1(void) {\n}\n\n/**\n * Clear objects, dynamic surfaces, and some miscellaneous level data used by objects.\n */\nvoid clear_objects(void) {\n    s32 i;\n\n    gTHIWaterDrained = 0;\n    gTimeStopState = 0;\n    gMarioObject = NULL;\n    gMarioCurrentRoom = 0;\n\n    for (i = 0; i < 60; i++) {\n        gDoorAdjacentRooms[i][0] = 0;\n        gDoorAdjacentRooms[i][1] = 0;\n    }\n\n    debug_unknown_level_select_check();\n\n    init_free_object_list();\n    clear_object_lists(gObjectListArray);\n\n    stub_behavior_script_2();\n    stub_obj_list_processor_1();\n\n    for (i = 0; i < OBJECT_POOL_CAPACITY; i++) {\n        gObjectPool[i].activeFlags = ACTIVE_FLAG_DEACTIVATED;\n        geo_reset_object_node(&gObjectPool[i].header.gfx);\n    }\n\n    gObjectMemoryPool = mem_pool_init(0x800, MEMORY_POOL_LEFT);\n    gObjectLists = gObjectListArray;\n\n    clear_dynamic_surfaces();\n}\n\n/**\n * Update spawner and surface objects.\n */\nvoid update_terrain_objects(void) {\n    gObjectCounter = update_objects_in_list(&gObjectLists[OBJ_LIST_SPAWNER]);\n    //! This was meant to be +=\n    gObjectCounter = update_objects_in_list(&gObjectLists[OBJ_LIST_SURFACE]);\n}\n\n/**\n * Update all other object lists besides spawner and surface objects, using\n * the order specified by sObjectListUpdateOrder.\n */\nvoid update_non_terrain_objects(void) {\n    UNUSED u8 filler[4];\n    s32 listIndex;\n\n    s32 i = 2;\n    while ((listIndex = sObjectListUpdateOrder[i]) != -1) {\n        gObjectCounter += update_objects_in_list(&gObjectLists[listIndex]);\n        i++;\n    }\n}\n\n/**\n * Unload deactivated objects in any object list.\n */\nvoid unload_deactivated_objects(void) {\n    UNUSED u8 filler[4];\n    s32 listIndex;\n\n    s32 i = 0;\n    while ((listIndex = sObjectListUpdateOrder[i]) != -1) {\n        unload_deactivated_objects_in_list(&gObjectLists[listIndex]);\n        i++;\n    }\n\n    // TIME_STOP_UNKNOWN_0 was most likely intended to be used to track whether\n    // any objects had been deactivated\n    gTimeStopState &= ~TIME_STOP_UNKNOWN_0;\n}\n\n/**\n * Unused profiling function.\n */\nUNUSED static u16 unused_get_elapsed_time(u64 *cycleCounts, s32 index) {\n    u16 time;\n    f64 cycles;\n\n    cycles = cycleCounts[index] - cycleCounts[index - 1];\n    if (cycles < 0) {\n        cycles = 0;\n    }\n\n    time = (u16)(((u64) cycles * 1000000 / osClockRate) / 16667.0 * 1000.0);\n    if (time > 999) {\n        time = 999;\n    }\n\n    return time;\n}\n\n/**\n * Update all objects. This includes script execution, object collision detection,\n * and object surface management.\n */\nvoid update_objects(UNUSED s32 unused) {\n    s64 cycleCounts[30];\n\n    cycleCounts[0] = get_current_clock();\n\n    gTimeStopState &= ~TIME_STOP_MARIO_OPENED_DOOR;\n\n    gNumRoomedObjectsInMarioRoom = 0;\n    gNumRoomedObjectsNotInMarioRoom = 0;\n    gCheckingSurfaceCollisionsForCamera = FALSE;\n\n    reset_debug_objectinfo();\n    stub_debug_5();\n\n    gObjectLists = gObjectListArray;\n\n    // If time stop is not active, unload object surfaces\n    cycleCounts[1] = get_clock_difference(cycleCounts[0]);\n    clear_dynamic_surfaces();\n\n    // Update spawners and objects with surfaces\n    cycleCounts[2] = get_clock_difference(cycleCounts[0]);\n    update_terrain_objects();\n\n    // If Mario was touching a moving platform at the end of last frame, apply\n    // displacement now\n    //! If the platform object unloaded and a different object took its place,\n    //  displacement could be applied incorrectly\n    apply_mario_platform_displacement();\n\n    // Detect which objects are intersecting\n    cycleCounts[3] = get_clock_difference(cycleCounts[0]);\n    detect_object_collisions();\n\n    // Update all other objects that haven't been updated yet\n    cycleCounts[4] = get_clock_difference(cycleCounts[0]);\n    update_non_terrain_objects();\n\n    // Unload any objects that have been deactivated\n    cycleCounts[5] = get_clock_difference(cycleCounts[0]);\n    unload_deactivated_objects();\n\n    // Check if Mario is on a platform object and save this object\n    cycleCounts[6] = get_clock_difference(cycleCounts[0]);\n    update_mario_platform();\n\n    cycleCounts[7] = get_clock_difference(cycleCounts[0]);\n\n    cycleCounts[0] = 0;\n    try_print_debug_mario_object_info();\n\n    // If time stop was enabled this frame, activate it now so that it will\n    // take effect next frame\n    if (gTimeStopState & TIME_STOP_ENABLED) {\n        gTimeStopState |= TIME_STOP_ACTIVE;\n    } else {\n        gTimeStopState &= ~TIME_STOP_ACTIVE;\n    }\n\n    gPrevFrameObjectCount = gObjectCounter;\n}\n"
  },
  {
    "path": "src/game/object_list_processor.h",
    "content": "#ifndef OBJECT_LIST_PROCESSOR_H\n#define OBJECT_LIST_PROCESSOR_H\n\n#include <PR/ultratypes.h>\n\n#include \"area.h\"\n#include \"macros.h\"\n#include \"types.h\"\n\n/**\n * Flags for gTimeStopState. These control which objects are processed each frame\n * and also track some miscellaneous info.\n */\n#define TIME_STOP_UNKNOWN_0         (1 << 0)\n#define TIME_STOP_ENABLED           (1 << 1)\n#define TIME_STOP_DIALOG            (1 << 2)\n#define TIME_STOP_MARIO_AND_DOORS   (1 << 3)\n#define TIME_STOP_ALL_OBJECTS       (1 << 4)\n#define TIME_STOP_MARIO_OPENED_DOOR (1 << 5)\n#define TIME_STOP_ACTIVE            (1 << 6)\n\n\n/**\n * The maximum number of objects that can be loaded at once.\n */\n#define OBJECT_POOL_CAPACITY 240\n\n/**\n * Every object is categorized into an object list, which controls the order\n * they are processed and which objects they can collide with.\n */\nenum ObjectList {\n    OBJ_LIST_PLAYER,      //  (0) Mario\n    OBJ_LIST_UNUSED_1,    //  (1) (unused)\n    OBJ_LIST_DESTRUCTIVE, //  (2) things that can be used to destroy other objects, like\n                          //      bob-ombs and corkboxes\n    OBJ_LIST_UNUSED_3,    //  (3) (unused)\n    OBJ_LIST_GENACTOR,    //  (4) general actors. most normal 'enemies' or actors are\n                          //      on this list. (MIPS, bullet bill, bully, etc)\n    OBJ_LIST_PUSHABLE,    //  (5) pushable actors. This is a group of objects which\n                          //      can push each other around as well as their parent\n                          //      objects. (goombas, koopas, spinies)\n    OBJ_LIST_LEVEL,       //  (6) level objects. general level objects such as heart, star\n    OBJ_LIST_UNUSED_7,    //  (7) (unused)\n    OBJ_LIST_DEFAULT,     //  (8) default objects. objects that didnt start with a 00\n                          //      command are put here, so this is treated as a default.\n    OBJ_LIST_SURFACE,     //  (9) surface objects. objects that specifically have surface\n                          //      collision and not object collision. (thwomp, whomp, etc)\n    OBJ_LIST_POLELIKE,    // (10) polelike objects. objects that attract or otherwise\n                          //      \"cling\" Mario similar to a pole action. (hoot,\n                          //      whirlpool, trees/poles, etc)\n    OBJ_LIST_SPAWNER,     // (11) spawners\n    OBJ_LIST_UNIMPORTANT, // (12) unimportant objects. objects that will not load\n                          //      if there are not enough object slots: they will also\n                          //      be manually unloaded to make room for slots if the list\n                          //      gets exhausted.\n    NUM_OBJ_LISTS\n};\n\n\nextern struct ObjectNode gObjectListArray[];\n\nextern s32 gDebugInfoFlags;\nextern s32 gNumFindFloorMisses;\nextern UNUSED s32 unused_8033BEF8;\nextern s32 gUnknownWallCount;\nextern u32 gObjectCounter;\n\nstruct NumTimesCalled {\n    /*0x00*/ s16 floor;\n    /*0x02*/ s16 ceil;\n    /*0x04*/ s16 wall;\n};\n\nextern struct NumTimesCalled gNumCalls;\n\nextern s16 gDebugInfo[][8];\nextern s16 gDebugInfoOverwrite[][8];\n\nextern u32 gTimeStopState;\nextern struct Object gObjectPool[];\nextern struct Object gMacroObjectDefaultParent;\nextern struct ObjectNode *gObjectLists;\nextern struct ObjectNode gFreeObjectList;\n\nextern struct Object *gMarioObject;\nextern struct Object *gLuigiObject;\nextern struct Object *gCurrentObject;\n\nextern const BehaviorScript *gCurBhvCommand;\nextern s16 gPrevFrameObjectCount;\n\nextern s32 gSurfaceNodesAllocated;\nextern s32 gSurfacesAllocated;\nextern s32 gNumStaticSurfaceNodes;\nextern s32 gNumStaticSurfaces;\n\nextern struct MemoryPool *gObjectMemoryPool;\n\nextern s16 gCheckingSurfaceCollisionsForCamera;\nextern s16 gFindFloorIncludeSurfaceIntangible;\nextern TerrainData *gEnvironmentRegions;\nextern s32 gEnvironmentLevels[20];\nextern RoomData gDoorAdjacentRooms[60][2];\nextern s16 gMarioCurrentRoom;\nextern s16 D_8035FEE2;\nextern s16 D_8035FEE4;\nextern s16 gTHIWaterDrained;\nextern s16 gTTCSpeedSetting;\nextern s16 gMarioShotFromCannon;\nextern s16 gCCMEnteredSlide;\nextern s16 gNumRoomedObjectsInMarioRoom;\nextern s16 gNumRoomedObjectsNotInMarioRoom;\nextern s16 gWDWWaterLevelChanging;\nextern s16 gMarioOnMerryGoRound;\n\n\nvoid bhv_mario_update(void);\nvoid set_object_respawn_info_bits(struct Object *obj, u8 bits);\nvoid unload_objects_from_area(UNUSED s32 unused, s32 areaIndex);\nvoid spawn_objects_from_info(UNUSED s32 unused, struct SpawnInfo *spawnInfo);\nvoid clear_objects(void);\nvoid update_objects(UNUSED s32 unused);\n\n\n#endif // OBJECT_LIST_PROCESSOR_H\n"
  },
  {
    "path": "src/game/paintings.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"sm64.h\"\n#include \"area.h\"\n#include \"engine/graph_node.h\"\n#include \"engine/surface_collision.h\"\n#include \"game_init.h\"\n#include \"geo_misc.h\"\n#include \"levels/castle_inside/header.h\"\n#include \"levels/hmc/header.h\"\n#include \"levels/ttm/header.h\"\n#include \"mario.h\"\n#include \"memory.h\"\n#include \"moving_texture.h\"\n#include \"object_list_processor.h\"\n#include \"paintings.h\"\n#include \"save_file.h\"\n#include \"segment2.h\"\n\n/**\n * @file paintings.c\n *\n * Implements the rippling painting effect. Paintings are GraphNodes that exist without being connected\n * to any particular object.\n *\n * Paintings are defined in level data. Look at levels/castle_inside/painting.inc.c for examples.\n *\n * The ripple effect uses data that is split into several parts:\n *      The mesh positions are generated from a base mesh. See seg2_painting_triangle_mesh near the\n *          bottom of bin/segment2.c\n *\n *      The lighting for the ripple is also generated from a base table, seg2_painting_mesh_neighbor_tris\n *          in bin/segment2.c\n *\n *      Each painting's texture uses yet another table to map its texture to the mesh.\n *          These maps are in level data, see levels/castle_inside/painting.inc.c for example.\n *\n *      Finally, each painting has two display lists, normal and rippling, which are defined in the same\n *      level data file as the Painting itself. See levels/castle_inside/painting.inc.c.\n *\n *\n * Painting state machine:\n * Paintings spawn in the PAINTING_IDLE state\n *      From IDLE, paintings can change to PAINTING_RIPPLE or PAINTING_ENTERED\n *        - This state checks for ENTERED because if Mario waits long enough, a PROXIMITY painting could\n *          reset to IDLE\n *\n * Paintings in the PAINTING_RIPPLE state are passively rippling.\n *      For RIPPLE_TRIGGER_PROXIMITY paintings, this means Mario bumped the wall in front of the\n *          painting.\n *\n *      Paintings that use RIPPLE_TRIGGER_CONTINUOUS try to transition to this state as soon as possible,\n *          usually when Mario enters the room.\n *\n *      A PROXIMITY painting will automatically reset to IDLE if its ripple magnitude becomes small\n *          enough.\n *\n * Paintings in the PAINTING_ENTERED state have been entered by Mario.\n *      A CONTINUOUS painting will automatically reset to RIPPLE if its ripple magnitude becomes small\n *          enough.\n */\n\n/**\n * Triggers a passive ripple on the left side of the painting.\n */\n#define RIPPLE_LEFT 0x20\n\n/**\n * Triggers a passive ripple in the middle the painting.\n */\n#define RIPPLE_MIDDLE 0x10\n\n/**\n * Triggers a passive ripple on the right side of the painting.\n */\n#define RIPPLE_RIGHT 0x8\n\n/**\n * Triggers an entry ripple on the left side of the painting.\n */\n#define ENTER_LEFT 0x4\n\n/**\n * Triggers an entry ripple in the middle of the painting.\n */\n#define ENTER_MIDDLE 0x2\n\n/**\n * Triggers an entry ripple on the right side of the painting.\n */\n#define ENTER_RIGHT 0x1\n\n/**\n * Use the 1/4th part of the painting that is nearest to Mario's current floor.\n */\n#define NEAREST_4TH 30\n\n/**\n * Use Mario's relative x position.\n * @see painting_mario_x\n */\n#define MARIO_X 40\n\n/**\n * Use the x center of the painting.\n */\n#define MIDDLE_X 50\n\n/**\n * Use Mario's relative y position.\n * @see painting_mario_y\n */\n#define MARIO_Y 60\n\n/**\n * Use Mario's relative z position.\n * @see painting_mario_z\n */\n#define MARIO_Z 70\n\n/**\n * Use the y center of the painting.\n */\n#define MIDDLE_Y 80\n\n/**\n * Does nothing to the timer.\n * Why -56 instead of false? Who knows.\n */\n#define DONT_RESET -56\n\n/**\n * Reset the timer to 0.\n */\n#define RESET_TIMER 100\n\n/// A copy of the type of floor Mario is standing on.\ns16 gPaintingMarioFloorType;\n// A copy of Mario's position\nf32 gPaintingMarioXPos;\nf32 gPaintingMarioYPos;\nf32 gPaintingMarioZPos;\n\n/**\n * When a painting is rippling, this mesh is generated each frame using the Painting's parameters.\n *\n * This mesh only contains the vertex positions and normals.\n * Paintings use an additional array to map textures to the mesh.\n */\nstruct PaintingMeshVertex *gPaintingMesh;\n\n/**\n * The painting's surface normals, used to approximate each of the vertex normals (for gouraud shading).\n */\nVec3f *gPaintingTriNorms;\n\n/**\n * The painting that is currently rippling. Only one painting can be rippling at once.\n */\nstruct Painting *gRipplingPainting;\n\n/**\n * Whether the DDD painting is moved forward, should being moving backwards, or has already moved backwards.\n */\ns8 gDDDPaintingStatus;\n\nstruct Painting *sHMCPaintings[] = {\n    &cotmc_painting,\n    NULL,\n};\n\nstruct Painting *sInsideCastlePaintings[] = {\n    &bob_painting, &ccm_painting, &wf_painting,  &jrb_painting,      &lll_painting,\n    &ssl_painting, &hmc_painting, &ddd_painting, &wdw_painting,      &thi_tiny_painting,\n    &ttm_painting, &ttc_painting, &sl_painting,  &thi_huge_painting, NULL,\n};\n\nstruct Painting *sTTMPaintings[] = {\n    &ttm_slide_painting,\n    NULL,\n};\n\nstruct Painting **sPaintingGroups[] = {\n    sHMCPaintings,\n    sInsideCastlePaintings,\n    sTTMPaintings,\n};\n\ns16 gPaintingUpdateCounter = 1;\ns16 gLastPaintingUpdateCounter = 0;\n\n/**\n * Stop paintings in paintingGroup from rippling if their id is different from *idptr.\n */\nvoid stop_other_paintings(s16 *idptr, struct Painting *paintingGroup[]) {\n    s16 index;\n    s16 id = *idptr;\n\n    index = 0;\n    while (paintingGroup[index] != NULL) {\n        struct Painting *painting = segmented_to_virtual(paintingGroup[index]);\n\n        // stop all rippling except for the selected painting\n        if (painting->id != id) {\n            painting->state = 0;\n        }\n        index++;\n    }\n}\n\n/**\n * @return Mario's y position inside the painting (bounded).\n */\nf32 painting_mario_y(struct Painting *painting) {\n    //! Unnecessary use of double constants\n    // Add 50 to make the ripple closer to Mario's center of mass.\n    f32 relY = gPaintingMarioYPos - painting->posY + 50.0;\n\n    if (relY < 0.0) {\n        relY = 0.0;\n    } else if (relY > painting->size) {\n        relY = painting->size;\n    }\n    return relY;\n}\n\n/**\n * @return Mario's z position inside the painting (bounded).\n */\nf32 painting_mario_z(struct Painting *painting) {\n    f32 relZ = painting->posZ - gPaintingMarioZPos;\n\n    if (relZ < 0.0) {\n        relZ = 0.0;\n    } else if (relZ > painting->size) {\n        relZ = painting->size;\n    }\n    return relZ;\n}\n\n/**\n * @return The y origin for the ripple, based on ySource.\n *         For floor paintings, the z-axis is treated as y.\n */\nf32 painting_ripple_y(struct Painting *painting, s8 ySource) {\n    switch (ySource) {\n        case MARIO_Y:\n            return painting_mario_y(painting); // normal wall paintings\n            break;\n        case MARIO_Z:\n            return painting_mario_z(painting); // floor paintings use X and Z\n            break;\n        case MIDDLE_Y:\n            return painting->size / 2.0; // some concentric ripples don't care about Mario\n            break;\n    }\n#ifdef AVOID_UB\n    return 0.0f;\n#endif\n}\n\n/**\n * Return the quarter of the painting that is closest to the floor Mario entered.\n */\nf32 painting_nearest_4th(struct Painting *painting) {\n    f32 firstQuarter = painting->size / 4.0;       // 1/4 of the way across the painting\n    f32 secondQuarter = painting->size / 2.0;      // 1/2 of the way across the painting\n    f32 thirdQuarter = painting->size * 3.0 / 4.0; // 3/4 of the way across the painting\n\n    if (painting->floorEntered & RIPPLE_LEFT) {\n        return firstQuarter;\n    } else if (painting->floorEntered & RIPPLE_MIDDLE) {\n        return secondQuarter;\n    } else if (painting->floorEntered & RIPPLE_RIGHT) {\n        return thirdQuarter;\n\n    // Same as ripple floors.\n    } else if (painting->floorEntered & ENTER_LEFT) {\n        return firstQuarter;\n    } else if (painting->floorEntered & ENTER_MIDDLE) {\n        return secondQuarter;\n    } else if (painting->floorEntered & ENTER_RIGHT) {\n        return thirdQuarter;\n    }\n#ifdef AVOID_UB\n    return 0.0f;\n#endif\n}\n\n/**\n * @return Mario's x position inside the painting (bounded).\n */\nf32 painting_mario_x(struct Painting *painting) {\n    f32 relX = gPaintingMarioXPos - painting->posX;\n\n    if (relX < 0.0) {\n        relX = 0.0;\n    } else if (relX > painting->size) {\n        relX = painting->size;\n    }\n    return relX;\n}\n\n/**\n * @return The x origin for the ripple, based on xSource.\n */\nf32 painting_ripple_x(struct Painting *painting, s8 xSource) {\n    switch (xSource) {\n        case NEAREST_4TH: // normal wall paintings\n            return painting_nearest_4th(painting);\n            break;\n        case MARIO_X: // horizontally placed paintings use X and Z\n            return painting_mario_x(painting);\n            break;\n        case MIDDLE_X: // concentric rippling may not care about Mario\n            return painting->size / 2.0;\n            break;\n    }\n#ifdef AVOID_UB\n    return 0.0f;\n#endif\n}\n\n/**\n * Set the painting's state, causing it to start a passive ripple or a ripple from Mario entering.\n *\n * @param state The state to enter\n * @param painting,paintingGroup identifies the painting that is changing state\n * @param xSource,ySource what to use for the x and y origin of the ripple\n * @param resetTimer if 100, set the timer to 0\n */\nvoid painting_state(s8 state, struct Painting *painting, struct Painting *paintingGroup[],\n                    s8 xSource, s8 ySource, s8 resetTimer) {\n    // make sure no other paintings are rippling\n    stop_other_paintings(&painting->id, paintingGroup);\n\n    // use a different set of variables depending on the state\n    switch (state) {\n        case PAINTING_RIPPLE:\n            painting->currRippleMag    = painting->passiveRippleMag;\n            painting->rippleDecay      = painting->passiveRippleDecay;\n            painting->currRippleRate   = painting->passiveRippleRate;\n            painting->dispersionFactor = painting->passiveDispersionFactor;\n            break;\n\n        case PAINTING_ENTERED:\n            painting->currRippleMag    = painting->entryRippleMag;\n            painting->rippleDecay      = painting->entryRippleDecay;\n            painting->currRippleRate   = painting->entryRippleRate;\n            painting->dispersionFactor = painting->entryDispersionFactor;\n            break;\n    }\n    painting->state = state;\n    painting->rippleX = painting_ripple_x(painting, xSource);\n    painting->rippleY = painting_ripple_y(painting, ySource);\n    gPaintingMarioYEntry = gPaintingMarioYPos;\n\n    // Because true or false would be too simple...\n    if (resetTimer == RESET_TIMER) {\n        painting->rippleTimer = 0.0f;\n    }\n    gRipplingPainting = painting;\n}\n\n/**\n * Idle update function for wall paintings that use RIPPLE_TRIGGER_PROXIMITY.\n */\nvoid wall_painting_proximity_idle(struct Painting *painting, struct Painting *paintingGroup[]) {\n    // Check for Mario triggering a ripple\n    if (painting->floorEntered & RIPPLE_LEFT) {\n        painting_state(PAINTING_RIPPLE, painting, paintingGroup, NEAREST_4TH, MARIO_Y, RESET_TIMER);\n    } else if (painting->floorEntered & RIPPLE_MIDDLE) {\n        painting_state(PAINTING_RIPPLE, painting, paintingGroup, NEAREST_4TH, MARIO_Y, RESET_TIMER);\n    } else if (painting->floorEntered & RIPPLE_RIGHT) {\n        painting_state(PAINTING_RIPPLE, painting, paintingGroup, NEAREST_4TH, MARIO_Y, RESET_TIMER);\n\n    // Check for Mario entering\n    } else if (painting->floorEntered & ENTER_LEFT) {\n        painting_state(PAINTING_ENTERED, painting, paintingGroup, NEAREST_4TH, MARIO_Y, RESET_TIMER);\n    } else if (painting->floorEntered & ENTER_MIDDLE) {\n        painting_state(PAINTING_ENTERED, painting, paintingGroup, NEAREST_4TH, MARIO_Y, RESET_TIMER);\n    } else if (painting->floorEntered & ENTER_RIGHT) {\n        painting_state(PAINTING_ENTERED, painting, paintingGroup, NEAREST_4TH, MARIO_Y, RESET_TIMER);\n    }\n}\n\n/**\n * Rippling update function for wall paintings that use RIPPLE_TRIGGER_PROXIMITY.\n */\nvoid wall_painting_proximity_rippling(struct Painting *painting, struct Painting *paintingGroup[]) {\n    if (painting->floorEntered & ENTER_LEFT) {\n        painting_state(PAINTING_ENTERED, painting, paintingGroup, NEAREST_4TH, MARIO_Y, RESET_TIMER);\n    } else if (painting->floorEntered & ENTER_MIDDLE) {\n        painting_state(PAINTING_ENTERED, painting, paintingGroup, NEAREST_4TH, MARIO_Y, RESET_TIMER);\n    } else if (painting->floorEntered & ENTER_RIGHT) {\n        painting_state(PAINTING_ENTERED, painting, paintingGroup, NEAREST_4TH, MARIO_Y, RESET_TIMER);\n    }\n}\n\n/**\n * Idle update function for wall paintings that use RIPPLE_TRIGGER_CONTINUOUS.\n */\nvoid wall_painting_continuous_idle(struct Painting *painting, struct Painting *paintingGroup[]) {\n    // Check for Mario triggering a ripple\n    if (painting->floorEntered & RIPPLE_LEFT) {\n        painting_state(PAINTING_RIPPLE, painting, paintingGroup, MIDDLE_X, MIDDLE_Y, RESET_TIMER);\n    } else if (painting->floorEntered & RIPPLE_MIDDLE) {\n        painting_state(PAINTING_RIPPLE, painting, paintingGroup, MIDDLE_X, MIDDLE_Y, RESET_TIMER);\n    } else if (painting->floorEntered & RIPPLE_RIGHT) {\n        painting_state(PAINTING_RIPPLE, painting, paintingGroup, MIDDLE_X, MIDDLE_Y, RESET_TIMER);\n\n    // Check for Mario entering\n    } else if (painting->floorEntered & ENTER_LEFT) {\n        painting_state(PAINTING_ENTERED, painting, paintingGroup, NEAREST_4TH, MARIO_Y, RESET_TIMER);\n    } else if (painting->floorEntered & ENTER_MIDDLE) {\n        painting_state(PAINTING_ENTERED, painting, paintingGroup, NEAREST_4TH, MARIO_Y, RESET_TIMER);\n    } else if (painting->floorEntered & ENTER_RIGHT) {\n        painting_state(PAINTING_ENTERED, painting, paintingGroup, NEAREST_4TH, MARIO_Y, RESET_TIMER);\n    }\n}\n\n/**\n * Rippling update function for wall paintings that use RIPPLE_TRIGGER_CONTINUOUS.\n */\nvoid wall_painting_continuous_rippling(struct Painting *painting, struct Painting *paintingGroup[]) {\n    if (painting->floorEntered & ENTER_LEFT) {\n        painting_state(PAINTING_ENTERED, painting, paintingGroup, NEAREST_4TH, MARIO_Y, DONT_RESET);\n    } else if (painting->floorEntered & ENTER_MIDDLE) {\n        painting_state(PAINTING_ENTERED, painting, paintingGroup, NEAREST_4TH, MARIO_Y, DONT_RESET);\n    } else if (painting->floorEntered & ENTER_RIGHT) {\n        painting_state(PAINTING_ENTERED, painting, paintingGroup, NEAREST_4TH, MARIO_Y, DONT_RESET);\n    }\n}\n\n/**\n * Idle update function for floor paintings that use RIPPLE_TRIGGER_PROXIMITY.\n *\n * No floor paintings use RIPPLE_TRIGGER_PROXIMITY in the game.\n */\nvoid floor_painting_proximity_idle(struct Painting *painting, struct Painting *paintingGroup[]) {\n    // Check for Mario triggering a ripple\n    if (painting->floorEntered & RIPPLE_LEFT) {\n        painting_state(PAINTING_RIPPLE, painting, paintingGroup, MARIO_X, MARIO_Z, RESET_TIMER);\n    } else if (painting->floorEntered & RIPPLE_MIDDLE) {\n        painting_state(PAINTING_RIPPLE, painting, paintingGroup, MARIO_X, MARIO_Z, RESET_TIMER);\n    } else if (painting->floorEntered & RIPPLE_RIGHT) {\n        painting_state(PAINTING_RIPPLE, painting, paintingGroup, MARIO_X, MARIO_Z, RESET_TIMER);\n\n    // Only check for Mario entering if he jumped below the surface\n    } else if (painting->marioWentUnder) {\n        if (painting->currFloor & ENTER_LEFT) {\n            painting_state(PAINTING_ENTERED, painting, paintingGroup, MARIO_X, MARIO_Z, RESET_TIMER);\n        } else if (painting->currFloor & ENTER_MIDDLE) {\n            painting_state(PAINTING_ENTERED, painting, paintingGroup, MARIO_X, MARIO_Z, RESET_TIMER);\n        } else if (painting->currFloor & ENTER_RIGHT) {\n            painting_state(PAINTING_ENTERED, painting, paintingGroup, MARIO_X, MARIO_Z, RESET_TIMER);\n        }\n    }\n}\n\n/**\n * Rippling update function for floor paintings that use RIPPLE_TRIGGER_PROXIMITY.\n *\n * No floor paintings use RIPPLE_TRIGGER_PROXIMITY in the game.\n */\nvoid floor_painting_proximity_rippling(struct Painting *painting, struct Painting *paintingGroup[]) {\n    if (painting->marioWentUnder) {\n        if (painting->currFloor & ENTER_LEFT) {\n            painting_state(PAINTING_ENTERED, painting, paintingGroup, MARIO_X, MARIO_Z, RESET_TIMER);\n        } else if (painting->currFloor & ENTER_MIDDLE) {\n            painting_state(PAINTING_ENTERED, painting, paintingGroup, MARIO_X, MARIO_Z, RESET_TIMER);\n        } else if (painting->currFloor & ENTER_RIGHT) {\n            painting_state(PAINTING_ENTERED, painting, paintingGroup, MARIO_X, MARIO_Z, RESET_TIMER);\n        }\n    }\n}\n\n/**\n * Idle update function for floor paintings that use RIPPLE_TRIGGER_CONTINUOUS.\n *\n * Both floor paintings (HMC and CotMC) are hidden behind a door, which hides the ripple's start up.\n * The floor just inside the doorway is RIPPLE_LEFT, so the painting starts rippling as soon as Mario\n * enters the room.\n */\nvoid floor_painting_continuous_idle(struct Painting *painting, struct Painting *paintingGroup[]) {\n    // Check for Mario triggering a ripple\n    if (painting->floorEntered & RIPPLE_LEFT) {\n        painting_state(PAINTING_RIPPLE, painting, paintingGroup, MIDDLE_X, MIDDLE_Y, RESET_TIMER);\n    } else if (painting->floorEntered & RIPPLE_MIDDLE) {\n        painting_state(PAINTING_RIPPLE, painting, paintingGroup, MIDDLE_X, MIDDLE_Y, RESET_TIMER);\n    } else if (painting->floorEntered & RIPPLE_RIGHT) {\n        painting_state(PAINTING_RIPPLE, painting, paintingGroup, MIDDLE_X, MIDDLE_Y, RESET_TIMER);\n\n    // Check for Mario entering\n    } else if (painting->currFloor & ENTER_LEFT) {\n        painting_state(PAINTING_ENTERED, painting, paintingGroup, MARIO_X, MARIO_Z, RESET_TIMER);\n    } else if (painting->currFloor & ENTER_MIDDLE) {\n        painting_state(PAINTING_ENTERED, painting, paintingGroup, MARIO_X, MARIO_Z, RESET_TIMER);\n    } else if (painting->currFloor & ENTER_RIGHT) {\n        painting_state(PAINTING_ENTERED, painting, paintingGroup, MARIO_X, MARIO_Z, RESET_TIMER);\n    }\n}\n\n/**\n * Rippling update function for floor paintings that use RIPPLE_TRIGGER_CONTINUOUS.\n */\nvoid floor_painting_continuous_rippling(struct Painting *painting, struct Painting *paintingGroup[]) {\n    if (painting->marioWentUnder) {\n        if (painting->currFloor & ENTER_LEFT) {\n            painting_state(PAINTING_ENTERED, painting, paintingGroup, MARIO_X, MARIO_Z, DONT_RESET);\n        } else if (painting->currFloor & ENTER_MIDDLE) {\n            painting_state(PAINTING_ENTERED, painting, paintingGroup, MARIO_X, MARIO_Z, DONT_RESET);\n        } else if (painting->currFloor & ENTER_RIGHT) {\n            painting_state(PAINTING_ENTERED, painting, paintingGroup, MARIO_X, MARIO_Z, DONT_RESET);\n        }\n    }\n}\n\n/**\n * Check for Mario entering one of the special floors associated with the painting.\n */\nvoid painting_update_floors(struct Painting *painting) {\n    s16 paintingId = painting->id;\n    s8 rippleLeft = 0;\n    s8 rippleMiddle = 0;\n    s8 rippleRight = 0;\n    s8 enterLeft = 0;\n    s8 enterMiddle = 0;\n    s8 enterRight = 0;\n\n    /* The area in front of every painting in the game (except HMC and CotMC, which   *\\\n    |* act a little differently) is made up of 3 special floor triangles with special *|\n    |* (unique) surface types. This code checks which surface Mario is currently on   *|\n    \\* and sets a bitfield accordingly.                                               */\n\n    // check if Mario's current floor is one of the special floors\n    if (gPaintingMarioFloorType == paintingId * 3 + SURFACE_PAINTING_WOBBLE_A6) {\n        rippleLeft = RIPPLE_LEFT;\n    }\n    if (gPaintingMarioFloorType == paintingId * 3 + SURFACE_PAINTING_WOBBLE_A7) {\n        rippleMiddle = RIPPLE_MIDDLE;\n    }\n    if (gPaintingMarioFloorType == paintingId * 3 + SURFACE_PAINTING_WOBBLE_A8) {\n        rippleRight = RIPPLE_RIGHT;\n    }\n    if (gPaintingMarioFloorType == paintingId * 3 + SURFACE_PAINTING_WARP_D3) {\n        enterLeft = ENTER_LEFT;\n    }\n    if (gPaintingMarioFloorType == paintingId * 3 + SURFACE_PAINTING_WARP_D4) {\n        enterMiddle = ENTER_MIDDLE;\n    }\n    if (gPaintingMarioFloorType == paintingId * 3 + SURFACE_PAINTING_WARP_D5) {\n        enterRight = ENTER_RIGHT;\n    }\n\n    painting->lastFloor = painting->currFloor;\n    // at most 1 of these will be nonzero;\n    painting->currFloor = rippleLeft + rippleMiddle + rippleRight + enterLeft + enterMiddle + enterRight;\n\n    // floorEntered is true iff currFloor is true and lastFloor is false\n    // (Mario just entered the floor on this frame)\n    painting->floorEntered = (painting->lastFloor ^ painting->currFloor) & painting->currFloor;\n\n    painting->marioWasUnder = painting->marioIsUnder;\n    // Check if Mario has fallen below the painting (used for floor paintings)\n    if (gPaintingMarioYPos < painting->posY) {\n        painting->marioIsUnder = TRUE;\n    } else {\n        painting->marioIsUnder = FALSE;\n    }\n\n    // Mario \"went under\" if he was not under last frame, but is under now\n    painting->marioWentUnder = (painting->marioWasUnder ^ painting->marioIsUnder) & painting->marioIsUnder;\n}\n\n/**\n * Update the ripple's timer and magnitude, making it propagate outwards.\n *\n * Automatically changes the painting back to IDLE state (or RIPPLE for continuous paintings) if the\n * ripple's magnitude becomes small enough.\n */\nvoid painting_update_ripple_state(struct Painting *painting) {\n    if (gPaintingUpdateCounter != gLastPaintingUpdateCounter) {\n        painting->currRippleMag *= painting->rippleDecay;\n\n        //! After ~6.47 days, paintings with RIPPLE_TRIGGER_CONTINUOUS will increment this to\n        //! 16777216 (1 << 24), at which point it will freeze (due to floating-point\n        //! imprecision?) and the painting will stop rippling. This happens to HMC, DDD, and\n        //! CotMC.\n        painting->rippleTimer += 1.0;\n    }\n    if (painting->rippleTrigger == RIPPLE_TRIGGER_PROXIMITY) {\n        // if the painting is barely rippling, make it stop rippling\n        if (painting->currRippleMag <= 1.0) {\n            painting->state = PAINTING_IDLE;\n            gRipplingPainting = NULL;\n        }\n    } else if (painting->rippleTrigger == RIPPLE_TRIGGER_CONTINUOUS) {\n\n        // if the painting is doing the entry ripple but the ripples are as small as those from the\n        // passive ripple, make it do a passive ripple\n        // If Mario goes below the surface but doesn't warp, the painting will eventually reset.\n        if (painting->state == PAINTING_ENTERED && painting->currRippleMag <= painting->passiveRippleMag) {\n\n            painting->state = PAINTING_RIPPLE;\n            painting->currRippleMag = painting->passiveRippleMag;\n            painting->rippleDecay = painting->passiveRippleDecay;\n            painting->currRippleRate = painting->passiveRippleRate;\n            painting->dispersionFactor = painting->passiveDispersionFactor;\n        }\n    }\n}\n\n/**\n * @return the ripple function at posX, posY\n * note that posX and posY correspond to a point on the face of the painting, not actual axes\n */\ns16 calculate_ripple_at_point(struct Painting *painting, f32 posX, f32 posY) {\n    /// Controls the peaks of the ripple.\n    f32 rippleMag = painting->currRippleMag;\n    /// Controls the ripple's frequency\n    f32 rippleRate = painting->currRippleRate;\n    /// Controls how fast the ripple spreads\n    f32 dispersionFactor = painting->dispersionFactor;\n    /// How far the ripple has spread\n    f32 rippleTimer = painting->rippleTimer;\n    /// x and y ripple origin\n    f32 rippleX = painting->rippleX;\n    f32 rippleY = painting->rippleY;\n\n    f32 distanceToOrigin;\n    f32 rippleDistance;\n\n    posX *= painting->size / PAINTING_SIZE;\n    posY *= painting->size / PAINTING_SIZE;\n    distanceToOrigin = sqrtf((posX - rippleX) * (posX - rippleX) + (posY - rippleY) * (posY - rippleY));\n    // A larger dispersionFactor makes the ripple spread slower\n    rippleDistance = distanceToOrigin / dispersionFactor;\n    if (rippleTimer < rippleDistance) {\n        // if the ripple hasn't reached the point yet, make the point magnitude 0\n        return 0;\n    } else {\n        // use a cosine wave to make the ripple go up and down,\n        // scaled by the painting's ripple magnitude\n        f32 rippleZ = rippleMag * cosf(rippleRate * (2 * M_PI) * (rippleTimer - rippleDistance));\n\n        // round it to an int and return it\n        return round_float(rippleZ);\n    }\n}\n\n/**\n * If movable, return the ripple function at (posX, posY)\n * else return 0\n */\ns16 ripple_if_movable(struct Painting *painting, s16 movable, s16 posX, s16 posY) {\n    s16 rippleZ = 0;\n\n    if (movable) {\n        rippleZ = calculate_ripple_at_point(painting, posX, posY);\n    }\n    return rippleZ;\n}\n\n/**\n * Allocates and generates a mesh for the rippling painting effect by modifying the passed in `mesh`\n * based on the painting's current ripple state.\n *\n * The `mesh` table describes the location of mesh vertices, whether they move when rippling, and what\n * triangles they belong to.\n *\n * The static mesh passed in is organized into two lists. This function only uses the first list,\n * painting_calculate_triangle_normals below uses the second one.\n *\n * The first list describes the vertices in this format:\n *      numVertices\n *      v0 x, v0 y, movable\n *      ...\n *      vN x, vN y, movable\n *      Where x and y are from 0 to PAINTING_SIZE, movable is 0 or 1.\n *\n * The mesh used in game, seg2_painting_triangle_mesh, is in bin/segment2.c.\n */\nvoid painting_generate_mesh(struct Painting *painting, s16 *mesh, s16 numTris) {\n    s16 i;\n\n    gPaintingMesh = mem_pool_alloc(gEffectsMemoryPool, numTris * sizeof(struct PaintingMeshVertex));\n    if (gPaintingMesh == NULL) {\n    }\n    // accesses are off by 1 since the first entry is the number of vertices\n    for (i = 0; i < numTris; i++) {\n        gPaintingMesh[i].pos[0] = mesh[i * 3 + 1];\n        gPaintingMesh[i].pos[1] = mesh[i * 3 + 2];\n        // The \"z coordinate\" of each vertex in the mesh is either 1 or 0. Instead of being an\n        // actual coordinate, it just determines whether the vertex moves\n        gPaintingMesh[i].pos[2] = ripple_if_movable(painting, mesh[i * 3 + 3],\n                                                    gPaintingMesh[i].pos[0], gPaintingMesh[i].pos[1]);\n    }\n}\n\n/**\n * Calculate the surface normals of each triangle in the generated ripple mesh.\n *\n * The static mesh passed in is organized into two lists. This function uses the second list,\n * painting_generate_mesh above uses the first one.\n *\n * The second list in `mesh` describes the mesh's triangles in this format:\n *      numTris\n *      tri0 v0, tri0 v1, tri0 v2\n *      ...\n *      triN v0, triN v1, triN v2\n *      Where each v0, v1, v2 is an index into the first list in `mesh`.\n *\n * The mesh used in game, seg2_painting_triangle_mesh, is in bin/segment2.c.\n */\nvoid painting_calculate_triangle_normals(s16 *mesh, s16 numVtx, s16 numTris) {\n    s16 i;\n\n    gPaintingTriNorms = mem_pool_alloc(gEffectsMemoryPool, numTris * sizeof(Vec3f));\n    if (gPaintingTriNorms == NULL) {\n    }\n    for (i = 0; i < numTris; i++) {\n        s16 tri = numVtx * 3 + i * 3 + 2; // Add 2 because of the 2 length entries preceding the list\n        s16 v0 = mesh[tri];\n        s16 v1 = mesh[tri + 1];\n        s16 v2 = mesh[tri + 2];\n\n        f32 x0 = gPaintingMesh[v0].pos[0];\n        f32 y0 = gPaintingMesh[v0].pos[1];\n        f32 z0 = gPaintingMesh[v0].pos[2];\n\n        f32 x1 = gPaintingMesh[v1].pos[0];\n        f32 y1 = gPaintingMesh[v1].pos[1];\n        f32 z1 = gPaintingMesh[v1].pos[2];\n\n        f32 x2 = gPaintingMesh[v2].pos[0];\n        f32 y2 = gPaintingMesh[v2].pos[1];\n        f32 z2 = gPaintingMesh[v2].pos[2];\n\n        // Cross product to find each triangle's normal vector\n        gPaintingTriNorms[i][0] = (y1 - y0) * (z2 - z1) - (z1 - z0) * (y2 - y1);\n        gPaintingTriNorms[i][1] = (z1 - z0) * (x2 - x1) - (x1 - x0) * (z2 - z1);\n        gPaintingTriNorms[i][2] = (x1 - x0) * (y2 - y1) - (y1 - y0) * (x2 - x1);\n    }\n}\n\n/**\n * Rounds a floating-point component of a normal vector to an s8 by multiplying it by 127 or 128 and\n * rounding away from 0.\n */\ns8 normalize_component(f32 comp) {\n    s8 rounded;\n\n    if (comp > 0.0) {\n        rounded = comp * 127.0 + 0.5; // round up\n    } else if (comp < 0.0) {\n        rounded = comp * 128.0 - 0.5; // round down\n    } else {\n        rounded = 0;                  // don't round 0\n    }\n    return rounded;\n}\n\n/**\n * Approximates the painting mesh's vertex normals by averaging the normals of all triangles sharing a\n * vertex. Used for Gouraud lighting.\n *\n * After each triangle's surface normal is calculated, the `neighborTris` table describes which triangles\n * each vertex should use when calculating the average normal vector.\n *\n * The table is a list of entries in this format:\n *      numNeighbors, tri0, tri1, ..., triN\n *\n *      Where each 'tri' is an index into gPaintingTriNorms.\n *      Entry i in `neighborTris` corresponds to the vertex at gPaintingMesh[i]\n *\n * The table used in game, seg2_painting_mesh_neighbor_tris, is in bin/segment2.c.\n */\nvoid painting_average_vertex_normals(s16 *neighborTris, s16 numVtx) {\n    UNUSED s16 unused;\n    s16 tri;\n    s16 i;\n    s16 j;\n    s16 neighbors;\n    s16 entry = 0;\n\n    for (i = 0; i < numVtx; i++) {\n        f32 nx = 0.0f;\n        f32 ny = 0.0f;\n        f32 nz = 0.0f;\n        f32 nlen;\n\n        // The first number of each entry is the number of adjacent tris\n        neighbors = neighborTris[entry];\n        for (j = 0; j < neighbors; j++) {\n            tri = neighborTris[entry + j + 1];\n            nx += gPaintingTriNorms[tri][0];\n            ny += gPaintingTriNorms[tri][1];\n            nz += gPaintingTriNorms[tri][2];\n        }\n        // Move to the next vertex's entry\n        entry += neighbors + 1;\n\n        // average the surface normals from each neighboring tri\n        nx /= neighbors;\n        ny /= neighbors;\n        nz /= neighbors;\n        nlen = sqrtf(nx * nx + ny * ny + nz * nz);\n\n        if (nlen == 0.0) {\n            gPaintingMesh[i].norm[0] = 0;\n            gPaintingMesh[i].norm[1] = 0;\n            gPaintingMesh[i].norm[2] = 0;\n        } else {\n            gPaintingMesh[i].norm[0] = normalize_component(nx / nlen);\n            gPaintingMesh[i].norm[1] = normalize_component(ny / nlen);\n            gPaintingMesh[i].norm[2] = normalize_component(nz / nlen);\n        }\n    }\n}\n\n/**\n * Creates a display list that draws the rippling painting, with 'img' mapped to the painting's mesh,\n * using 'textureMap'.\n *\n * If the textureMap doesn't describe the whole mesh, then multiple calls are needed to draw the whole\n * painting.\n */\nGfx *render_painting(u8 *img, s16 tWidth, s16 tHeight, s16 *textureMap, s16 mapVerts, s16 mapTris, u8 alpha) {\n    s16 group;\n    s16 map;\n    s16 triGroup;\n    s16 mapping;\n    s16 meshVtx;\n    s16 tx;\n    s16 ty;\n\n    // We can fit 15 (16 / 3) vertices in the RSP's vertex buffer.\n    // Group triangles by 5, with one remainder group.\n    s16 triGroups = mapTris / 5;\n    s16 remGroupTris = mapTris % 5;\n    s16 numVtx = mapTris * 3;\n\n    s16 commands = triGroups * 2 + remGroupTris + 7;\n    Vtx *verts = alloc_display_list(numVtx * sizeof(Vtx));\n    Gfx *dlist = alloc_display_list(commands * sizeof(Gfx));\n    Gfx *gfx = dlist;\n\n    if (verts == NULL || dlist == NULL) {\n    }\n\n    gLoadBlockTexture(gfx++, tWidth, tHeight, G_IM_FMT_RGBA, img);\n\n    // Draw the groups of 5 first\n    for (group = 0; group < triGroups; group++) {\n\n        // The triangle groups are the second part of the texture map.\n        // Each group is a list of 15 mappings\n        triGroup = mapVerts * 3 + group * 15 + 2;\n        for (map = 0; map < 15; map++) {\n            // The mapping is just an index into the earlier part of the textureMap\n            // Some mappings are repeated, for example, when multiple triangles share a vertex\n            mapping = textureMap[triGroup + map];\n\n            // The first entry is the ID of the vertex in the mesh\n            meshVtx = textureMap[mapping * 3 + 1];\n\n            // The next two are the texture coordinates for that vertex\n            tx = textureMap[mapping * 3 + 2];\n            ty = textureMap[mapping * 3 + 3];\n\n            // Map the texture and place it in the verts array\n            make_vertex(verts, group * 15 + map, gPaintingMesh[meshVtx].pos[0], gPaintingMesh[meshVtx].pos[1],\n                        gPaintingMesh[meshVtx].pos[2], tx, ty, gPaintingMesh[meshVtx].norm[0],\n                        gPaintingMesh[meshVtx].norm[1], gPaintingMesh[meshVtx].norm[2], alpha);\n        }\n\n        // Load the vertices and draw the 5 triangles\n        gSPVertex(gfx++, VIRTUAL_TO_PHYSICAL(verts + group * 15), 15, 0);\n        gSPDisplayList(gfx++, dl_paintings_draw_ripples);\n    }\n\n    // One group left with < 5 triangles\n    triGroup = mapVerts * 3 + triGroups * 15 + 2;\n    // Map the texture to the triangles\n    for (map = 0; map < remGroupTris * 3; map++) {\n        mapping = textureMap[triGroup + map];\n        meshVtx = textureMap[mapping * 3 + 1];\n        tx = textureMap[mapping * 3 + 2];\n        ty = textureMap[mapping * 3 + 3];\n        make_vertex(verts, triGroups * 15 + map, gPaintingMesh[meshVtx].pos[0], gPaintingMesh[meshVtx].pos[1],\n                    gPaintingMesh[meshVtx].pos[2], tx, ty, gPaintingMesh[meshVtx].norm[0],\n                    gPaintingMesh[meshVtx].norm[1], gPaintingMesh[meshVtx].norm[2], alpha);\n    }\n\n    // Draw the triangles individually\n    gSPVertex(gfx++, VIRTUAL_TO_PHYSICAL(verts + triGroups * 15), remGroupTris * 3, 0);\n    for (group = 0; group < remGroupTris; group++) {\n        gSP1Triangle(gfx++, group * 3, group * 3 + 1, group * 3 + 2, 0);\n    }\n\n    gSPEndDisplayList(gfx);\n    return dlist;\n}\n\n/**\n * Orient the painting mesh for rendering.\n */\nGfx *painting_model_view_transform(struct Painting *painting) {\n    f32 sizeRatio = painting->size / PAINTING_SIZE;\n    Mtx *rotX = alloc_display_list(sizeof(Mtx));\n    Mtx *rotY = alloc_display_list(sizeof(Mtx));\n    Mtx *translate = alloc_display_list(sizeof(Mtx));\n    Mtx *scale = alloc_display_list(sizeof(Mtx));\n    Gfx *dlist = alloc_display_list(5 * sizeof(Gfx));\n    Gfx *gfx = dlist;\n\n    if (rotX == NULL || rotY == NULL || translate == NULL || dlist == NULL) {\n    }\n\n    guTranslate(translate, painting->posX, painting->posY, painting->posZ);\n    guRotate(rotX, painting->pitch, 1.0f, 0.0f, 0.0f);\n    guRotate(rotY, painting->yaw, 0.0f, 1.0f, 0.0f);\n    guScale(scale, sizeRatio, sizeRatio, sizeRatio);\n\n    gSPMatrix(gfx++, translate, G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_PUSH);\n    gSPMatrix(gfx++, rotX,      G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_NOPUSH);\n    gSPMatrix(gfx++, rotY,      G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_NOPUSH);\n    gSPMatrix(gfx++, scale,     G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_NOPUSH);\n    gSPEndDisplayList(gfx);\n\n    return dlist;\n}\n\n/**\n * Ripple a painting that has 1 or more images that need to be mapped\n */\nGfx *painting_ripple_image(struct Painting *painting) {\n    s16 meshVerts;\n    s16 meshTris;\n    s16 i;\n    s16 *textureMap;\n    s16 imageCount = painting->imageCount;\n    s16 tWidth = painting->textureWidth;\n    s16 tHeight = painting->textureHeight;\n    s16 **textureMaps = segmented_to_virtual(painting->textureMaps);\n    u8 **textures = segmented_to_virtual(painting->textureArray);\n    Gfx *dlist = alloc_display_list((imageCount + 6) * sizeof(Gfx));\n    Gfx *gfx = dlist;\n\n    if (dlist == NULL) {\n        return dlist;\n    }\n\n    gSPDisplayList(gfx++, painting_model_view_transform(painting));\n    gSPDisplayList(gfx++, dl_paintings_rippling_begin);\n    gSPDisplayList(gfx++, painting->rippleDisplayList);\n\n    // Map each image to the mesh's vertices\n    for (i = 0; i < imageCount; i++) {\n        textureMap = segmented_to_virtual(textureMaps[i]);\n        meshVerts = textureMap[0];\n        meshTris = textureMap[meshVerts * 3 + 1];\n        gSPDisplayList(gfx++, render_painting(textures[i], tWidth, tHeight, textureMap, meshVerts, meshTris, painting->alpha));\n    }\n\n    // Update the ripple, may automatically reset the painting's state.\n    painting_update_ripple_state(painting);\n\n    gSPPopMatrix(gfx++, G_MTX_MODELVIEW);\n    gSPDisplayList(gfx++, dl_paintings_rippling_end);\n    gSPEndDisplayList(gfx);\n    return dlist;\n}\n\n/**\n * Ripple a painting that has 1 \"environment map\" texture.\n */\nGfx *painting_ripple_env_mapped(struct Painting *painting) {\n    s16 meshVerts;\n    s16 meshTris;\n    s16 *textureMap;\n    s16 tWidth = painting->textureWidth;\n    s16 tHeight = painting->textureHeight;\n    s16 **textureMaps = segmented_to_virtual(painting->textureMaps);\n    u8 **tArray = segmented_to_virtual(painting->textureArray);\n    Gfx *dlist = alloc_display_list(7 * sizeof(Gfx));\n    Gfx *gfx = dlist;\n\n    if (dlist == NULL) {\n        return dlist;\n    }\n\n    gSPDisplayList(gfx++, painting_model_view_transform(painting));\n    gSPDisplayList(gfx++, dl_paintings_env_mapped_begin);\n    gSPDisplayList(gfx++, painting->rippleDisplayList);\n\n    // Map the image to the mesh's vertices\n    textureMap = segmented_to_virtual(textureMaps[0]);\n    meshVerts = textureMap[0];\n    meshTris = textureMap[meshVerts * 3 + 1];\n    gSPDisplayList(gfx++, render_painting(tArray[0], tWidth, tHeight, textureMap, meshVerts, meshTris, painting->alpha));\n\n    // Update the ripple, may automatically reset the painting's state.\n    painting_update_ripple_state(painting);\n\n    gSPPopMatrix(gfx++, G_MTX_MODELVIEW);\n    gSPDisplayList(gfx++, dl_paintings_env_mapped_end);\n    gSPEndDisplayList(gfx);\n    return dlist;\n}\n\n/**\n * Generates a mesh, calculates vertex normals for lighting, and renders a rippling painting.\n * The mesh and vertex normals are regenerated and freed every frame.\n */\nGfx *display_painting_rippling(struct Painting *painting) {\n    s16 *mesh = segmented_to_virtual(seg2_painting_triangle_mesh);\n    s16 *neighborTris = segmented_to_virtual(seg2_painting_mesh_neighbor_tris);\n    s16 numVtx = mesh[0];\n    s16 numTris = mesh[numVtx * 3 + 1];\n    Gfx *dlist;\n\n    // Generate the mesh and its lighting data\n    painting_generate_mesh(painting, mesh, numVtx);\n    painting_calculate_triangle_normals(mesh, numVtx, numTris);\n    painting_average_vertex_normals(neighborTris, numVtx);\n\n    // Map the painting's texture depending on the painting's texture type.\n    switch (painting->textureType) {\n        case PAINTING_IMAGE:\n            dlist = painting_ripple_image(painting);\n            break;\n        case PAINTING_ENV_MAP:\n            dlist = painting_ripple_env_mapped(painting);\n            break;\n    }\n\n    // The mesh data is freed every frame.\n    mem_pool_free(gEffectsMemoryPool, gPaintingMesh);\n    mem_pool_free(gEffectsMemoryPool, gPaintingTriNorms);\n    return dlist;\n}\n\n/**\n * Render a normal painting.\n */\nGfx *display_painting_not_rippling(struct Painting *painting) {\n    Gfx *dlist = alloc_display_list(4 * sizeof(Gfx));\n    Gfx *gfx = dlist;\n\n    if (dlist == NULL) {\n        return dlist;\n    }\n    gSPDisplayList(gfx++, painting_model_view_transform(painting));\n    gSPDisplayList(gfx++, painting->normalDisplayList);\n    gSPPopMatrix(gfx++, G_MTX_MODELVIEW);\n    gSPEndDisplayList(gfx);\n    return dlist;\n}\n\n/**\n * Clear Mario-related state and clear gRipplingPainting.\n */\nvoid reset_painting(struct Painting *painting) {\n    painting->lastFloor = 0;\n    painting->currFloor = 0;\n    painting->floorEntered = 0;\n    painting->marioWasUnder = 0;\n    painting->marioIsUnder = 0;\n    painting->marioWentUnder = 0;\n\n    gRipplingPainting = NULL;\n\n#ifdef NO_SEGMENTED_MEMORY\n    // Make sure all variables are reset correctly.\n    // With segmented memory the segments that contain the relevant\n    // Painting structs are reloaded from ROM upon level load.\n    painting->state = PAINTING_IDLE;\n    painting->currRippleMag = 0.0f;\n    painting->rippleDecay = 1.0f;\n    painting->currRippleRate = 0.0f;\n    painting->dispersionFactor = 0.0f;\n    painting->rippleTimer = 0.0f;\n    painting->rippleX = 0.0f;\n    painting->rippleY = 0.0f;\n    if (painting == &ddd_painting) {\n        // Move DDD painting to initial position, in case the animation\n        // that moves the painting stops during level unload.\n        painting->posX = 3456.0f;\n    }\n#endif\n}\n\n/**\n * Controls the x coordinate of the DDD painting.\n *\n * Before Mario gets the \"Board Bowser's Sub\" star in DDD, the painting spawns at frontPos.\n *\n * If Mario just got the star, the painting's x coordinate moves to backPos at a rate of `speed` units.\n *\n * When the painting reaches backPos, a save flag is set so that the painting will spawn at backPos\n * whenever it loads.\n *\n * This function also sets gDDDPaintingStatus, which controls the warp:\n *  0 (0b00): set x coordinate to frontPos\n *  2 (0b10): set x coordinate to backPos\n *  3 (0b11): same as 2. Bit 0 is ignored\n */\nvoid move_ddd_painting(struct Painting *painting, f32 frontPos, f32 backPos, f32 speed) {\n    // Obtain the DDD star flags\n    u32 dddFlags = save_file_get_star_flags(gCurrSaveFileNum - 1, COURSE_NUM_TO_INDEX(COURSE_DDD));\n    // Get the other save file flags\n    u32 saveFileFlags = save_file_get_flags();\n    // Find out whether Board Bowser's Sub was collected\n    u32 bowsersSubBeaten = dddFlags & BOARD_BOWSERS_SUB;\n    // Check whether DDD has already moved back\n    u32 dddBack = saveFileFlags & SAVE_FLAG_DDD_MOVED_BACK;\n\n    if (!bowsersSubBeaten && !dddBack) {\n        // If we haven't collected the star or moved the painting, put the painting at the front\n        painting->posX = frontPos;\n        gDDDPaintingStatus = 0;\n    } else if (bowsersSubBeaten && !dddBack) {\n        // If we've collected the star but not moved the painting back,\n        // Each frame, move the painting by a certain speed towards the back area.\n        painting->posX += speed;\n        gDDDPaintingStatus = BOWSERS_SUB_BEATEN;\n        if (painting->posX >= backPos) {\n            painting->posX = backPos;\n            // Tell the save file that we've moved DDD back.\n            save_file_set_flags(SAVE_FLAG_DDD_MOVED_BACK);\n        }\n    } else if (bowsersSubBeaten && dddBack) {\n        // If the painting has already moved back, place it in the back position.\n        painting->posX = backPos;\n        gDDDPaintingStatus = BOWSERS_SUB_BEATEN | DDD_BACK;\n    }\n}\n\n/**\n * Set the painting's node's layer based on its alpha\n */\nvoid set_painting_layer(struct GraphNodeGenerated *gen, struct Painting *painting) {\n    switch (painting->alpha) {\n        case 0xFF: // Opaque\n            gen->fnNode.node.flags = (gen->fnNode.node.flags & 0xFF) | (LAYER_OPAQUE << 8);\n            break;\n        default:\n            gen->fnNode.node.flags = (gen->fnNode.node.flags & 0xFF) | (LAYER_TRANSPARENT << 8);\n            break;\n    }\n}\n\n/**\n * Display either a normal painting or a rippling one depending on the painting's ripple status\n */\nGfx *display_painting(struct Painting *painting) {\n    switch (painting->state) {\n        case PAINTING_IDLE:\n            return display_painting_not_rippling(painting);\n            break;\n        default:\n            return display_painting_rippling(painting);\n            break;\n    }\n}\n\n/**\n * Update function for wall paintings.\n * Calls a different update function depending on the painting's ripple trigger and current state.\n */\nvoid wall_painting_update(struct Painting *painting, struct Painting *paintingGroup[]) {\n    if (painting->rippleTrigger == RIPPLE_TRIGGER_PROXIMITY) {\n        switch (painting->state) {\n            case PAINTING_IDLE:\n                wall_painting_proximity_idle(painting, paintingGroup);\n                break;\n            case PAINTING_RIPPLE:\n                wall_painting_proximity_rippling(painting, paintingGroup);\n                break;\n        }\n    } else if (painting->rippleTrigger == RIPPLE_TRIGGER_CONTINUOUS) {\n        switch (painting->state) {\n            case PAINTING_IDLE:\n                wall_painting_continuous_idle(painting, paintingGroup);\n                break;\n            case PAINTING_RIPPLE:\n                wall_painting_continuous_rippling(painting, paintingGroup);\n                break;\n        }\n    }\n}\n\n/**\n * Update function for floor paintings (HMC and CotMC)\n * Calls a different update function depending on the painting's ripple trigger and current state.\n *\n * No floor paintings use RIPPLE_TRIGGER_PROXIMITY in the game.\n */\nvoid floor_painting_update(struct Painting *painting, struct Painting *paintingGroup[]) {\n    if (painting->rippleTrigger == RIPPLE_TRIGGER_PROXIMITY) {\n        switch (painting->state) {\n            case PAINTING_IDLE:\n                floor_painting_proximity_idle(painting, paintingGroup);\n                break;\n            case PAINTING_RIPPLE:\n                floor_painting_proximity_rippling(painting, paintingGroup);\n                break;\n        }\n    } else if (painting->rippleTrigger == RIPPLE_TRIGGER_CONTINUOUS) {\n        switch (painting->state) {\n            case PAINTING_IDLE:\n                floor_painting_continuous_idle(painting, paintingGroup);\n                break;\n            case PAINTING_RIPPLE:\n                floor_painting_continuous_rippling(painting, paintingGroup);\n                break;\n        }\n    }\n}\n\n/**\n * Render and update the painting whose id and group matches the values in the GraphNode's parameter.\n * Use PAINTING_ID(id, group) to set the right parameter in a level's geo layout.\n */\nGfx *geo_painting_draw(s32 callContext, struct GraphNode *node, UNUSED void *context) {\n    struct GraphNodeGenerated *gen = (struct GraphNodeGenerated *) node;\n    s32 group = (gen->parameter >> 8) & 0xFF;\n    s32 id = gen->parameter & 0xFF;\n    Gfx *paintingDlist = NULL;\n    struct Painting **paintingGroup = sPaintingGroups[group];\n    struct Painting *painting = segmented_to_virtual(paintingGroup[id]);\n\n    if (callContext != GEO_CONTEXT_RENDER) {\n        reset_painting(painting);\n    } else if (callContext == GEO_CONTEXT_RENDER) {\n\n        // Update the ddd painting before drawing\n        if (group == 1 && id == PAINTING_ID_DDD) {\n            move_ddd_painting(painting, 3456.0f, 5529.6f, 20.0f);\n        }\n\n        // Determine if the painting is transparent\n        set_painting_layer(gen, painting);\n\n        // Draw before updating\n        paintingDlist = display_painting(painting);\n\n        // Update the painting\n        painting_update_floors(painting);\n        switch ((s16) painting->pitch) {\n            // only paintings with 0 pitch are treated as walls\n            case 0:\n                wall_painting_update(painting, paintingGroup);\n                break;\n            default:\n                floor_painting_update(painting, paintingGroup);\n                break;\n        }\n    }\n    return paintingDlist;\n}\n\n/**\n * Update the painting system's local copy of Mario's current floor and position.\n */\nGfx *geo_painting_update(s32 callContext, UNUSED struct GraphNode *node, UNUSED Mat4 c) {\n    struct Surface *surface;\n\n    // Reset the update counter\n    if (callContext != GEO_CONTEXT_RENDER) {\n        gLastPaintingUpdateCounter = gAreaUpdateCounter - 1;\n        gPaintingUpdateCounter = gAreaUpdateCounter;\n    } else {\n        gLastPaintingUpdateCounter = gPaintingUpdateCounter;\n        gPaintingUpdateCounter = gAreaUpdateCounter;\n\n        // Store Mario's floor and position\n        find_floor(gMarioObject->oPosX, gMarioObject->oPosY, gMarioObject->oPosZ, &surface);\n        gPaintingMarioFloorType = surface->type;\n        gPaintingMarioXPos = gMarioObject->oPosX;\n        gPaintingMarioYPos = gMarioObject->oPosY;\n        gPaintingMarioZPos = gMarioObject->oPosZ;\n    }\n    return NULL;\n}\n"
  },
  {
    "path": "src/game/paintings.h",
    "content": "#ifndef PAINTINGS_H\n#define PAINTINGS_H\n\n#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\n#include \"macros.h\"\n#include \"types.h\"\n\n/// Use to properly set a GraphNodeGenerated's parameter to point to the right painting\n#define PAINTING_ID(id, grp) id | (grp << 8)\n\n/// The default painting side length\n#define PAINTING_SIZE 614.0\n\n#define PAINTING_ID_DDD 7\n\n#define BOARD_BOWSERS_SUB (1 << 0)\n\n#define BOWSERS_SUB_BEATEN 0x2\n#define DDD_BACK 0x1\n\n#define PAINTING_IDLE 0\n#define PAINTING_RIPPLE 1\n#define PAINTING_ENTERED 2\n\n#define RIPPLE_TRIGGER_PROXIMITY 10\n#define RIPPLE_TRIGGER_CONTINUOUS 20\n\n/// Painting that uses 1 or more images as a texture\n#define PAINTING_IMAGE 0\n/// Painting that has one texture used for an environment map effect\n#define PAINTING_ENV_MAP 1\n\nstruct Painting {\n    s16 id;\n    /// How many images should be drawn when the painting is rippling.\n    s8 imageCount;\n    /// Either PAINTING_IMAGE or PAINTING_ENV_MAP\n    s8 textureType;\n\n    /// The floor Mario was on last frame\n    s8 lastFloor;\n    /// The floor Mario is currently on\n    s8 currFloor;\n    /// The floor Mario just entered\n    s8 floorEntered;\n\n    /// The painting's state, see top of paintings.c\n    s8 state;\n\n    /// The painting's rotation\n    f32 pitch;\n    f32 yaw;\n\n    /// The painting's position\n    f32 posX;\n    f32 posY;\n    f32 posZ;\n\n    /// Controls how high the peaks of the ripple are.\n    f32 currRippleMag;\n    f32 passiveRippleMag;\n    f32 entryRippleMag;\n\n    /// Multiplier that controls how fast the ripple regresses to the IDLE state.\n    f32 rippleDecay;\n    f32 passiveRippleDecay;\n    f32 entryRippleDecay;\n\n    /// Controls the ripple's frequency\n    f32 currRippleRate;\n    f32 passiveRippleRate;\n    f32 entryRippleRate;\n\n    /// The rate at which the magnitude of the ripple decreases as you move farther from the central\n    /// point of the ripple\n    f32 dispersionFactor;\n    f32 passiveDispersionFactor;\n    f32 entryDispersionFactor;\n\n    /// How far the ripple has spread\n    f32 rippleTimer;\n\n    /// The x and y origin of the ripple\n    f32 rippleX;\n    f32 rippleY;\n\n    /// Display list used when the painting is normal.\n    const Gfx *normalDisplayList;\n    /// Data used to map the texture to the mesh\n    const s16 *const *textureMaps;\n\n    // Texture data\n    const Texture *const *textureArray;\n    s16 textureWidth;\n    s16 textureHeight;\n\n    /// Display list used when the painting is rippling.\n    const Gfx *rippleDisplayList;\n    /// Controls when a passive ripple starts. RIPPLE_TRIGGER_CONTINUOUS or RIPPLE_TRIGGER_PROXIMITY.\n    s8 rippleTrigger;\n\n    /// The painting's transparency. Determines what layer the painting is in.\n    u8 alpha;\n\n    /// True if Mario was under the painting's y coordinate last frame\n    s8 marioWasUnder;\n    /// True if Mario is currently under the painting's y coordinate\n    s8 marioIsUnder;\n    /// True if Mario just went under the painting's y coordinate on this frame\n    s8 marioWentUnder;\n\n    /// Uniformly scales the painting to a multiple of PAINTING_SIZE.\n    /// By default a painting is 614.0 x 614.0\n    f32 size;\n};\n\n/**\n * Contains the position and normal of a vertex in the painting's generated mesh.\n */\nstruct PaintingMeshVertex {\n    /*0x00*/ s16 pos[3];\n    /*0x06*/ s8 norm[3];\n};\n\nextern s16 gPaintingMarioFloorType;\nextern f32 gPaintingMarioXPos;\nextern f32 gPaintingMarioYPos;\nextern f32 gPaintingMarioZPos;\n\nextern struct PaintingMeshVertex *gPaintingMesh;\nextern Vec3f *gPaintingTriNorms;\nextern struct Painting *gRipplingPainting;\nextern s8 gDDDPaintingStatus;\n\nGfx *geo_painting_draw(s32 callContext, struct GraphNode *node, UNUSED void *context);\nGfx *geo_painting_update(s32 callContext, UNUSED struct GraphNode *node, UNUSED Mat4 c);\n\n#endif // PAINTINGS_H\n"
  },
  {
    "path": "src/game/platform_displacement.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"engine/math_util.h\"\n#include \"engine/surface_collision.h\"\n#include \"level_update.h\"\n#include \"object_fields.h\"\n#include \"object_helpers.h\"\n#include \"object_list_processor.h\"\n#include \"platform_displacement.h\"\n#include \"types.h\"\n\nu16 D_8032FEC0 = 0;\n\nu32 unused_8032FEC4[4] = { 0 };\n\nstruct Object *gMarioPlatform = NULL;\n\n/**\n * Determine if Mario is standing on a platform object, meaning that he is\n * within 4 units of the floor. Set his referenced platform object accordingly.\n */\nvoid update_mario_platform(void) {\n    struct Surface *floor;\n    UNUSED u8 filler[4];\n    f32 marioX;\n    f32 marioY;\n    f32 marioZ;\n    f32 floorHeight;\n    u32 awayFromFloor;\n\n    if (gMarioObject == NULL) {\n        return;\n    }\n\n    //! If Mario moves onto a rotating platform in a PU, the find_floor call\n    //  will detect the platform and he will end up receiving a large amount\n    //  of displacement since he is considered to be far from the platform's\n    //  axis of rotation.\n\n    marioX = gMarioObject->oPosX;\n    marioY = gMarioObject->oPosY;\n    marioZ = gMarioObject->oPosZ;\n    floorHeight = find_floor(marioX, marioY, marioZ, &floor);\n\n    if (absf(marioY - floorHeight) < 4.0f) {\n        awayFromFloor = 0;\n    } else {\n        awayFromFloor = 1;\n    }\n\n    switch (awayFromFloor) {\n        case 1:\n            gMarioPlatform = NULL;\n            gMarioObject->platform = NULL;\n            break;\n\n        case 0:\n            if (floor != NULL && floor->object != NULL) {\n                gMarioPlatform = floor->object;\n                gMarioObject->platform = floor->object;\n            } else {\n                gMarioPlatform = NULL;\n                gMarioObject->platform = NULL;\n            }\n            break;\n    }\n}\n\n/**\n * Get Mario's position and store it in x, y, and z.\n */\nvoid get_mario_pos(f32 *x, f32 *y, f32 *z) {\n    *x = gMarioStates[0].pos[0];\n    *y = gMarioStates[0].pos[1];\n    *z = gMarioStates[0].pos[2];\n}\n\n/**\n * Set Mario's position.\n */\nvoid set_mario_pos(f32 x, f32 y, f32 z) {\n    gMarioStates[0].pos[0] = x;\n    gMarioStates[0].pos[1] = y;\n    gMarioStates[0].pos[2] = z;\n}\n\n/**\n * Apply one frame of platform rotation to Mario or an object using the given\n * platform. If isMario is false, use gCurrentObject.\n */\nvoid apply_platform_displacement(u32 isMario, struct Object *platform) {\n    f32 x;\n    f32 y;\n    f32 z;\n    f32 platformPosX;\n    f32 platformPosY;\n    f32 platformPosZ;\n    Vec3f currentObjectOffset;\n    Vec3f relativeOffset;\n    Vec3f newObjectOffset;\n    Vec3s rotation;\n    UNUSED s16 unusedPitch;\n    UNUSED s16 unusedRoll;\n    UNUSED s16 unusedYaw;\n    f32 displaceMatrix[4][4];\n\n    rotation[0] = platform->oAngleVelPitch;\n    rotation[1] = platform->oAngleVelYaw;\n    rotation[2] = platform->oAngleVelRoll;\n\n    if (isMario) {\n        D_8032FEC0 = 0;\n        get_mario_pos(&x, &y, &z);\n    } else {\n        x = gCurrentObject->oPosX;\n        y = gCurrentObject->oPosY;\n        z = gCurrentObject->oPosZ;\n    }\n\n    x += platform->oVelX;\n    z += platform->oVelZ;\n\n    if (rotation[0] != 0 || rotation[1] != 0 || rotation[2] != 0) {\n        unusedPitch = rotation[0];\n        unusedRoll  = rotation[2];\n        unusedYaw   = platform->oFaceAngleYaw;\n\n        if (isMario) {\n            gMarioStates[0].faceAngle[1] += rotation[1];\n        }\n\n        platformPosX = platform->oPosX;\n        platformPosY = platform->oPosY;\n        platformPosZ = platform->oPosZ;\n\n        currentObjectOffset[0] = x - platformPosX;\n        currentObjectOffset[1] = y - platformPosY;\n        currentObjectOffset[2] = z - platformPosZ;\n\n        rotation[0] = platform->oFaceAnglePitch - platform->oAngleVelPitch;\n        rotation[1] = platform->oFaceAngleYaw - platform->oAngleVelYaw;\n        rotation[2] = platform->oFaceAngleRoll - platform->oAngleVelRoll;\n\n        mtxf_rotate_zxy_and_translate(displaceMatrix, currentObjectOffset, rotation);\n        linear_mtxf_transpose_mul_vec3f(displaceMatrix, relativeOffset, currentObjectOffset);\n\n        rotation[0] = platform->oFaceAnglePitch;\n        rotation[1] = platform->oFaceAngleYaw;\n        rotation[2] = platform->oFaceAngleRoll;\n\n        mtxf_rotate_zxy_and_translate(displaceMatrix, currentObjectOffset, rotation);\n        linear_mtxf_mul_vec3f(displaceMatrix, newObjectOffset, relativeOffset);\n\n        x = platformPosX + newObjectOffset[0];\n        y = platformPosY + newObjectOffset[1];\n        z = platformPosZ + newObjectOffset[2];\n    }\n\n    if (isMario) {\n        set_mario_pos(x, y, z);\n    } else {\n        gCurrentObject->oPosX = x;\n        gCurrentObject->oPosY = y;\n        gCurrentObject->oPosZ = z;\n    }\n}\n\n/**\n * If Mario's platform is not null, apply platform displacement.\n */\nvoid apply_mario_platform_displacement(void) {\n    struct Object *platform = gMarioPlatform;\n\n    if (!(gTimeStopState & TIME_STOP_ACTIVE) && gMarioObject != NULL && platform != NULL) {\n        apply_platform_displacement(TRUE, platform);\n    }\n}\n\n#ifndef VERSION_JP\n/**\n * Set Mario's platform to NULL.\n */\nvoid clear_mario_platform(void) {\n    gMarioPlatform = NULL;\n}\n#endif\n"
  },
  {
    "path": "src/game/platform_displacement.h",
    "content": "#ifndef PLATFORM_DISPLACEMENT_H\n#define PLATFORM_DISPLACEMENT_H\n\n#include <PR/ultratypes.h>\n\n#include \"types.h\"\n\nvoid update_mario_platform(void);\nvoid get_mario_pos(f32 *x, f32 *y, f32 *z);\nvoid set_mario_pos(f32 x, f32 y, f32 z);\nvoid apply_platform_displacement(u32 isMario, struct Object *platform);\nvoid apply_mario_platform_displacement(void);\n#ifndef VERSION_JP\nvoid clear_mario_platform(void);\n#endif\n\n#endif // PLATFORM_DISPLACEMENT_H\n"
  },
  {
    "path": "src/game/print.c",
    "content": "#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\n#include \"config.h\"\n#include \"gfx_dimensions.h\"\n#include \"game_init.h\"\n#include \"memory.h\"\n#include \"print.h\"\n#include \"segment2.h\"\n\n/**\n * This file handles printing and formatting the colorful text that\n * appears when printing things such as \"PRESS START\".\n */\n\nstruct TextLabel {\n    u32 x;\n    u32 y;\n    s16 length;\n    char buffer[50];\n};\n\n/**\n * Stores the text to be rendered on screen\n * and how they are to be rendered.\n */\nFORCE_BSS struct TextLabel *sTextLabels[52];\ns16 sTextLabelsCount = 0;\n\n/**\n * Returns n to the exponent power, only for non-negative powers.\n */\ns32 int_pow(s32 n, s32 exponent) {\n    s32 result = 1;\n    s32 i;\n\n    for (i = 0; i < exponent; i++) {\n        result = n * result;\n    }\n\n    return result;\n}\n\n/**\n * Formats an integer n for print by fitting it to width, prefixing with a negative,\n * and converting the base.\n */\nvoid format_integer(s32 n, s32 base, char *dest, s32 *totalLength, u8 width, s8 zeroPad) {\n    u32 powBase;\n    s32 numDigits = 0;\n    s32 i;\n    s32 len = 0;\n    s8 digit;\n    s8 negative = FALSE;\n    char pad;\n\n    if (zeroPad == TRUE) {\n        pad = '0';\n    } else {\n        pad = -1;\n    }\n\n    if (n != 0) {\n        // Formats a negative number for negative prefix.\n        if (n < 0) {\n            n = -n;\n            negative = TRUE;\n        }\n\n        // Increments the number of digits until length is long enough.\n        while (TRUE) {\n            powBase = int_pow(base, numDigits);\n\n            if (powBase > (u32) n) {\n                break;\n            }\n\n            numDigits++;\n        }\n\n        // Add leading pad to fit width.\n        if (width > numDigits) {\n            for (len = 0; len < width - numDigits; len++) dest[len] = pad;\n\n            // Needs 1 length to print negative prefix.\n            if (negative == TRUE) {\n                len--;\n            }\n        }\n\n        // Use 'M' prefix to indicate negative numbers.\n        if (negative == TRUE) {\n            dest[len] = 'M';\n            len++;\n        }\n\n        // Transfer the digits into the proper base.\n        for (i = numDigits - 1; i >= 0; i--) {\n            powBase = int_pow(base, i);\n            digit = n / powBase;\n\n            if (digit < 10) {\n                *(dest + len + (numDigits - 1) - i) = digit + '0';\n            } else {\n                *(dest + len + (numDigits - 1) - i) = digit + '7';\n            }\n\n            n -= digit * powBase;\n        }\n    } else { // n is zero.\n        numDigits = 1;\n        if (width > numDigits) {\n            for (len = 0; len < width - numDigits; len++) dest[len] = pad;\n        }\n        dest[len] = '0';\n    }\n\n    *totalLength += numDigits + len;\n}\n\n/**\n * Determines the width of the number for printing, writing to 'width'.\n * Additionally, this determines if a number should be zero-padded,\n * writing to 'zeroPad'.\n */\nvoid parse_width_field(const char *str, s32 *srcIndex, u8 *width, s8 *zeroPad) {\n    s8 digits[12]; // unknown length\n    s8 digitsLen = 0;\n    s16 i;\n\n    // If first character is 0, then the string should be zero padded.\n    if (str[*srcIndex] == '0') {\n        *zeroPad = TRUE;\n    }\n\n    // Read width digits up until the 'd' or 'x' format specifier.\n    while (str[*srcIndex] != 'd' && str[*srcIndex] != 'x') {\n        digits[digitsLen] = str[*srcIndex] - '0';\n\n        if (digits[digitsLen] < 0 || digits[digitsLen] >= 10) { // not a valid digit\n            *width = 0;\n            return;\n        }\n\n        digitsLen++;\n        (*srcIndex)++;\n    }\n\n    // No digits\n    if (digitsLen == 0) {\n        return;\n    }\n\n    // Sum the digits to calculate the total width.\n    for (i = 0; i < digitsLen - 1; i++) {\n        *width = *width + ((digitsLen - i - 1) * 10) * digits[i];\n    }\n\n    *width = *width + digits[digitsLen - 1];\n}\n\n/**\n * Takes a number, finds the intended base, formats the number, and prints it\n * at the given X & Y coordinates.\n *\n * Warning: this fails on too large numbers, because format_integer has bugs\n * related to overflow. For romhacks, prefer sprintf + print_text.\n */\nvoid print_text_fmt_int(s32 x, s32 y, const char *str, s32 n) {\n    char c = 0;\n    s8 zeroPad = FALSE;\n    u8 width = 0;\n    s32 base = 0;\n    s32 len = 0;\n    s32 srcIndex = 0;\n\n    // Don't continue if there is no memory to do so.\n    if ((sTextLabels[sTextLabelsCount] = mem_pool_alloc(gEffectsMemoryPool,\n                                                        sizeof(struct TextLabel))) == NULL) {\n        return;\n    }\n\n    sTextLabels[sTextLabelsCount]->x = x;\n    sTextLabels[sTextLabelsCount]->y = y;\n\n    c = str[srcIndex];\n\n    while (c != '\\0') {\n        if (c == '%') {\n            srcIndex++;\n\n            parse_width_field(str, &srcIndex, &width, &zeroPad);\n\n            if (str[srcIndex] != 'd' && str[srcIndex] != 'x') {\n                break;\n            }\n            if (str[srcIndex] == 'd') {\n                base = 10;\n            }\n            if (str[srcIndex] == 'x') {\n                base = 16;\n            }\n\n            srcIndex++;\n\n            format_integer(n, base, sTextLabels[sTextLabelsCount]->buffer + len, &len, width, zeroPad);\n        } else { // straight copy\n            sTextLabels[sTextLabelsCount]->buffer[len] = c;\n            len++;\n            srcIndex++;\n        }\n        c = str[srcIndex];\n    }\n\n    sTextLabels[sTextLabelsCount]->length = len;\n    sTextLabelsCount++;\n}\n\n/**\n * Prints text in the colorful lettering at given X, Y coordinates.\n */\nvoid print_text(s32 x, s32 y, const char *str) {\n    char c = 0;\n    s32 length = 0;\n    s32 srcIndex = 0;\n\n    // Don't continue if there is no memory to do so.\n    if ((sTextLabels[sTextLabelsCount] = mem_pool_alloc(gEffectsMemoryPool,\n                                                        sizeof(struct TextLabel))) == NULL) {\n        return;\n    }\n\n    sTextLabels[sTextLabelsCount]->x = x;\n    sTextLabels[sTextLabelsCount]->y = y;\n\n    c = str[srcIndex];\n\n    // Set the array with the text to print while finding length.\n    while (c != '\\0') {\n        sTextLabels[sTextLabelsCount]->buffer[length] = c;\n        length++;\n        srcIndex++;\n        c = str[srcIndex];\n    }\n\n    sTextLabels[sTextLabelsCount]->length = length;\n    sTextLabelsCount++;\n}\n\n/**\n * Prints text in the colorful lettering centered at given X, Y coordinates.\n */\nvoid print_text_centered(s32 x, s32 y, const char *str) {\n    char c = 0;\n    UNUSED s8 unused1 = 0;\n    UNUSED s32 unused2 = 0;\n    s32 length = 0;\n    s32 srcIndex = 0;\n#ifdef VERSION_CN\n    s32 width = 0;\n#endif\n\n    // Don't continue if there is no memory to do so.\n    if ((sTextLabels[sTextLabelsCount] = mem_pool_alloc(gEffectsMemoryPool,\n                                                        sizeof(struct TextLabel))) == NULL) {\n        return;\n    }\n\n    c = str[srcIndex];\n\n    // Set the array with the text to print while finding length.\n    while (c != '\\0') {\n#ifdef VERSION_CN\n        if ((u8) c == 0xB0 || (u8) c == 0xC0) {\n            width = 16;\n        } else {\n            width = 12;\n        }\n#endif\n        sTextLabels[sTextLabelsCount]->buffer[length] = c;\n        length++;\n        srcIndex++;\n        c = str[srcIndex];\n    }\n\n    sTextLabels[sTextLabelsCount]->length = length;\n#ifdef VERSION_CN\n    sTextLabels[sTextLabelsCount]->x = x - width * length / 2;\n#else\n    sTextLabels[sTextLabelsCount]->x = x - 12 * length / 2;\n#endif\n    sTextLabels[sTextLabelsCount]->y = y;\n    sTextLabelsCount++;\n}\n\n/**\n * Converts a char into the proper colorful glyph for the char.\n */\ns8 char_to_glyph_index(char c) {\n    if (c >= 'A' && c <= 'Z') {\n        return c - 55;\n    }\n\n    if (c >= 'a' && c <= 'z') {\n        return c - 87;\n    }\n\n    if (c >= '0' && c <= '9') {\n        return c - 48;\n    }\n\n    if (c == ' ') {\n        return GLYPH_SPACE;\n    }\n\n    if (c == '!') {\n        return GLYPH_EXCLAMATION_PNT; // !, JP only\n    }\n\n    if (c == '#') {\n        return GLYPH_TWO_EXCLAMATION; // !!, JP only\n    }\n\n    if (c == '?') {\n        return GLYPH_QUESTION_MARK; // ?, JP only\n    }\n\n    if (c == '&') {\n        return GLYPH_AMPERSAND; // &, JP only\n    }\n\n    if (c == '%') {\n        return GLYPH_PERCENT; // %, JP only\n    }\n\n    if (c == '*') {\n        return GLYPH_MULTIPLY; // x\n    }\n\n    if (c == '+') {\n        return GLYPH_COIN; // coin\n    }\n\n    if (c == ',') {\n        return GLYPH_MARIO_HEAD; // Imagine I drew Mario's head\n    }\n\n    if (c == '-') {\n        return GLYPH_STAR; // star\n    }\n\n    if (c == '.') {\n        return GLYPH_PERIOD; // large shaded dot, JP only\n    }\n\n    if (c == '/') {\n        return GLYPH_BETA_KEY; // beta key, JP only. Reused for Ü in EU.\n    }\n\n    return GLYPH_SPACE;\n}\n\n/**\n * Adds an individual glyph to be rendered.\n */\nvoid add_glyph_texture(s8 glyphIndex) {\n    const u8 *const *glyphs = segmented_to_virtual(main_hud_lut);\n\n    gDPPipeSync(gDisplayListHead++);\n#ifdef VERSION_CN\n    gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, glyphs[(u8) glyphIndex]);\n#else\n    gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, glyphs[glyphIndex]);\n#endif\n    gSPDisplayList(gDisplayListHead++, dl_hud_img_load_tex_block);\n}\n\n#ifndef WIDESCREEN\n/**\n * Clips textrect into the boundaries defined.\n */\nvoid clip_to_bounds(s32 *x, s32 *y) {\n    if (*x < TEXRECT_MIN_X) {\n        *x = TEXRECT_MIN_X;\n    }\n\n    if (*x > TEXRECT_MAX_X) {\n        *x = TEXRECT_MAX_X;\n    }\n\n    if (*y < TEXRECT_MIN_Y) {\n        *y = TEXRECT_MIN_Y;\n    }\n\n    if (*y > TEXRECT_MAX_Y) {\n        *y = TEXRECT_MAX_Y;\n    }\n}\n#endif\n\n/**\n * Renders the glyph that's set at the given position.\n */\n#ifdef VERSION_CN\nvoid render_textrect(s32 x, s32 y, s32 pos, s32 width) {\n    s32 rectBaseX = x + pos * width;\n#else\nvoid render_textrect(s32 x, s32 y, s32 pos) {\n    s32 rectBaseX = x + pos * 12;\n#endif\n    s32 rectBaseY = 224 - y;\n    s32 rectX;\n    s32 rectY;\n\n#ifndef WIDESCREEN\n    // For widescreen we must allow drawing outside the usual area\n    clip_to_bounds(&rectBaseX, &rectBaseY);\n#endif\n    rectX = rectBaseX;\n    rectY = rectBaseY;\n    gSPTextureRectangle(gDisplayListHead++, rectX << 2, rectY << 2, (rectX + 15) << 2,\n                        (rectY + 15) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10);\n}\n\n/**\n * Renders the text in sTextLabels on screen at the proper locations by iterating\n * a for loop.\n */\nvoid render_text_labels(void) {\n    s32 i;\n    s32 j;\n    s8 glyphIndex;\n    Mtx *mtx;\n\n    if (sTextLabelsCount == 0) {\n        return;\n    }\n\n    mtx = alloc_display_list(sizeof(*mtx));\n\n    if (mtx == NULL) {\n        sTextLabelsCount = 0;\n        return;\n    }\n\n    guOrtho(mtx, 0.0f, SCREEN_WIDTH, 0.0f, SCREEN_HEIGHT, -10.0f, 10.0f, 1.0f);\n    gSPPerspNormalize((Gfx *) (gDisplayListHead++), 0xFFFF);\n    gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(mtx), G_MTX_PROJECTION | G_MTX_LOAD | G_MTX_NOPUSH);\n    gSPDisplayList(gDisplayListHead++, dl_hud_img_begin);\n\n    for (i = 0; i < sTextLabelsCount; i++) {\n        for (j = 0; j < sTextLabels[i]->length; j++) {\n#ifdef VERSION_CN\n            if ((u8) sTextLabels[i]->buffer[j] < 0xA0) {\n                glyphIndex = char_to_glyph_index(sTextLabels[i]->buffer[j]);\n            } else if ((u8) sTextLabels[i]->buffer[j] == 0xB0) {\n                glyphIndex = 0xB0;\n            } else if ((u8) sTextLabels[i]->buffer[j] == 0xC0) {\n                glyphIndex = 0xC0;\n            } else {\n                glyphIndex = GLYPH_SPACE;\n            }\n#else\n            glyphIndex = char_to_glyph_index(sTextLabels[i]->buffer[j]);\n#endif\n\n            if (glyphIndex != GLYPH_SPACE) {\n#ifdef VERSION_EU\n                // Beta Key was removed by EU, so glyph slot reused.\n                // This produces a colorful Ü.\n                if (glyphIndex == GLYPH_BETA_KEY) {\n                    add_glyph_texture(GLYPH_U);\n                    render_textrect(sTextLabels[i]->x, sTextLabels[i]->y, j);\n\n                    add_glyph_texture(GLYPH_UMLAUT);\n                    render_textrect(sTextLabels[i]->x, sTextLabels[i]->y + 3, j);\n                } else {\n                    add_glyph_texture(glyphIndex);\n                    render_textrect(sTextLabels[i]->x, sTextLabels[i]->y, j);\n                }\n#elif defined(VERSION_CN)\n                if ((u8) glyphIndex == 0xB0) {\n                    add_glyph_texture(0x92);\n                    render_textrect(45, 50, 0, 16);\n                    add_glyph_texture(0x93);\n                    render_textrect(45, 50, 1, 16);\n                    add_glyph_texture(0x94);\n                    render_textrect(45, 34, 0, 16);\n                    add_glyph_texture(0x95);\n                    render_textrect(45, 34, 1, 16);\n                } else if ((u8) glyphIndex == 0xC0) {\n                    add_glyph_texture(0xAE);\n                    render_textrect(GFX_DIMENSIONS_RECT_FROM_RIGHT_EDGE(150), 193, 0, 16);\n                    add_glyph_texture(0xAF);\n                    render_textrect(GFX_DIMENSIONS_RECT_FROM_RIGHT_EDGE(150), 193, 1, 16);\n                    add_glyph_texture(0xB0);\n                    render_textrect(GFX_DIMENSIONS_RECT_FROM_RIGHT_EDGE(150), 177, 0, 16);\n                    add_glyph_texture(0xB1);\n                    render_textrect(GFX_DIMENSIONS_RECT_FROM_RIGHT_EDGE(150), 177, 1, 16);\n                    add_glyph_texture(0xB2);\n                    render_textrect(GFX_DIMENSIONS_RECT_FROM_RIGHT_EDGE(150), 193, 2, 16);\n                    add_glyph_texture(0xB3);\n                    render_textrect(GFX_DIMENSIONS_RECT_FROM_RIGHT_EDGE(150), 193, 3, 16);\n                    add_glyph_texture(0xB4);\n                    render_textrect(GFX_DIMENSIONS_RECT_FROM_RIGHT_EDGE(150), 177, 2, 16);\n                    add_glyph_texture(0xB5);\n                    render_textrect(GFX_DIMENSIONS_RECT_FROM_RIGHT_EDGE(150), 177, 3, 16);\n                } else {\n                    add_glyph_texture(glyphIndex);\n                    render_textrect(sTextLabels[i]->x, sTextLabels[i]->y, j, 12);\n                }\n#else\n                add_glyph_texture(glyphIndex);\n                render_textrect(sTextLabels[i]->x, sTextLabels[i]->y, j);\n#endif\n            }\n        }\n\n        mem_pool_free(gEffectsMemoryPool, sTextLabels[i]);\n    }\n\n    gSPDisplayList(gDisplayListHead++, dl_hud_img_end);\n\n    sTextLabelsCount = 0;\n}\n"
  },
  {
    "path": "src/game/print.h",
    "content": "#ifndef PRINT_H\n#define PRINT_H\n\n#include <PR/ultratypes.h>\n\n#define TEXRECT_MIN_X 10\n#define TEXRECT_MAX_X 300\n#define TEXRECT_MIN_Y 5\n#define TEXRECT_MAX_Y 220\n\n#define GLYPH_SPACE           -1\n#define GLYPH_U               30\n#define GLYPH_EXCLAMATION_PNT 36\n#define GLYPH_TWO_EXCLAMATION 37\n#define GLYPH_QUESTION_MARK   38\n#define GLYPH_AMPERSAND       39\n#define GLYPH_PERCENT         40\n#define GLYPH_MULTIPLY        50\n#define GLYPH_COIN            51\n#define GLYPH_MARIO_HEAD      52\n#define GLYPH_STAR            53\n#define GLYPH_PERIOD          54\n#define GLYPH_BETA_KEY        55\n#define GLYPH_APOSTROPHE      56\n#define GLYPH_DOUBLE_QUOTE    57\n#define GLYPH_UMLAUT          58\n\nvoid print_text_fmt_int(s32 x, s32 y, const char *str, s32 n);\nvoid print_text(s32 x, s32 y, const char *str);\nvoid print_text_centered(s32 x, s32 y, const char *str);\nvoid render_text_labels(void);\n\n#endif // PRINT_H\n"
  },
  {
    "path": "src/game/profiler.c",
    "content": "#include <PR/ultratypes.h>\n#include <PR/os_time.h>\n#include <PR/gbi.h>\n\n#include \"sm64.h\"\n#include \"profiler.h\"\n#include \"game_init.h\"\n\ns16 gProfilerMode = 0;\n\n// the thread 3 info is logged on the opposite profiler from what is used by\n// the thread4 and 5 loggers. It's likely because the sound thread runs at a\n// much faster rate and shouldn't be flipping the index for the \"slower\" game\n// threads, which could leave the frame data in a possibly corrupt or incomplete\n// state.\ns16 gCurrentFrameIndex1 = 1;\ns16 gCurrentFrameIndex2 = 0;\n\nstruct ProfilerFrameData gProfilerFrameData[2];\n\n// log the current osTime to the appropriate idx for current thread5 processes.\nvoid profiler_log_thread5_time(enum ProfilerGameEvent eventID) {\n    gProfilerFrameData[gCurrentFrameIndex1].gameTimes[eventID] = osGetTime();\n\n    // event ID 4 is the last profiler event for after swapping\n    // buffers: switch the Info after updating.\n    if (eventID == THREAD5_END) {\n        gCurrentFrameIndex1 ^= 1;\n        gProfilerFrameData[gCurrentFrameIndex1].numSoundTimes = 0;\n    }\n}\n\n// log the audio system before and after osTimes in pairs to the soundTimes array.\nvoid profiler_log_thread4_time(void) {\n    struct ProfilerFrameData *profiler = &gProfilerFrameData[gCurrentFrameIndex1];\n\n    if (profiler->numSoundTimes < ARRAY_COUNT(profiler->soundTimes)) {\n        profiler->soundTimes[profiler->numSoundTimes++] = osGetTime();\n    }\n}\n\n// log the times for gfxTimes: RSP completes, and RDP completes.\nvoid profiler_log_gfx_time(enum ProfilerGfxEvent eventID) {\n    if (eventID == TASKS_QUEUED) {\n        gCurrentFrameIndex2 ^= 1;\n        gProfilerFrameData[gCurrentFrameIndex2].numVblankTimes = 0;\n    }\n\n    gProfilerFrameData[gCurrentFrameIndex2].gfxTimes[eventID] = osGetTime();\n}\n\n// log the times between vblank started and ended.\nvoid profiler_log_vblank_time(void) {\n    struct ProfilerFrameData *profiler = &gProfilerFrameData[gCurrentFrameIndex2];\n\n    if (profiler->numVblankTimes < ARRAY_COUNT(profiler->vblankTimes)) {\n        profiler->vblankTimes[profiler->numVblankTimes++] = osGetTime();\n    }\n}\n\n// draw the specified profiler given the information passed.\nvoid draw_profiler_bar(OSTime clockBase, OSTime clockStart, OSTime clockEnd, s16 posY, u16 color) {\n    s64 durationStart, durationEnd;\n    s32 rectX1, rectX2;\n\n    // set the duration to start, and floor to 0 if the result is below 0.\n    if ((durationStart = clockStart - clockBase) < 0) {\n        durationStart = 0;\n    }\n    // like the above, but with end.\n    if ((durationEnd = clockEnd - clockBase) < 0) {\n        durationEnd = 0;\n    }\n\n    // calculate the x coordinates of where start and end begins, respectively.\n    rectX1 = ((((durationStart * 1000000) / osClockRate * 3) / 1000) + 30);\n    rectX2 = ((((durationEnd * 1000000) / osClockRate * 3) / 1000) + 30);\n\n    //! I believe this is supposed to cap rectX1 and rectX2 to 320, but the\n    //  code seems to use the wrong variables... it's possible that the variable\n    //  names were very similar within a single letter.\n    if (rectX1 > 319) {\n        clockStart = 319;\n    }\n    if (rectX2 > 319) {\n        clockEnd = 319;\n    }\n\n    // perform the render if start is less than end. in most cases, it should be.\n    if (rectX1 < rectX2) {\n        gDPPipeSync(gDisplayListHead++);\n        gDPSetFillColor(gDisplayListHead++, color << 16 | color);\n        gDPFillRectangle(gDisplayListHead++, rectX1, posY, rectX2, posY + 2);\n    }\n}\n\nvoid draw_reference_profiler_bars(void) {\n    // Draws the reference \"max\" bars underneath the real thing.\n\n    // Blue\n    gDPPipeSync(gDisplayListHead++);\n    gDPSetFillColor(gDisplayListHead++,\n                    GPACK_RGBA5551(40, 80, 255, 1) << 16 | GPACK_RGBA5551(40, 80, 255, 1));\n    gDPFillRectangle(gDisplayListHead++, 30, 220, 79, 222);\n\n    // Yellow\n    gDPPipeSync(gDisplayListHead++);\n    gDPSetFillColor(gDisplayListHead++,\n                    GPACK_RGBA5551(255, 255, 40, 1) << 16 | GPACK_RGBA5551(255, 255, 40, 1));\n    gDPFillRectangle(gDisplayListHead++, 79, 220, 128, 222);\n\n    // Orange\n    gDPPipeSync(gDisplayListHead++);\n    gDPSetFillColor(gDisplayListHead++,\n                    GPACK_RGBA5551(255, 120, 40, 1) << 16 | GPACK_RGBA5551(255, 120, 40, 1));\n    gDPFillRectangle(gDisplayListHead++, 128, 220, 177, 222);\n\n    // Red\n    gDPPipeSync(gDisplayListHead++);\n    gDPSetFillColor(gDisplayListHead++,\n                    GPACK_RGBA5551(255, 40, 40, 1) << 16 | GPACK_RGBA5551(255, 40, 40, 1));\n    gDPFillRectangle(gDisplayListHead++, 177, 220, 226, 222);\n}\n\n/*\n  Draw Profiler Mode 1. This mode draws a traditional per-event bar for durations of tasks\n  recorded by the profiler calls of various threads.\n\n  Information:\n\n  (yellow): Level Scripts Execution\n  (orange): Rendering\n  (blue): Display Lists Send\n  (red): Sound Updates\n  (yellow): Time from SP tasks queued to RSP complete\n  (orange): Time from RSP complete to RDP complete (possibly bugged, see //! note below)\n  (red): VBlank Times\n*/\nvoid draw_profiler_mode_1(void) {\n    s32 i;\n    struct ProfilerFrameData *profiler;\n    OSTime clockBase;\n\n    // the profiler logs 2 frames of data: last frame and current frame. Indexes are used\n    // to keep track of the current frame, so the index is xor'd to retrieve the last frame's\n    // data.\n    profiler = &gProfilerFrameData[gCurrentFrameIndex1 ^ 1];\n\n    // calculate the clockBase.\n    clockBase = profiler->soundTimes[0] - (16433 * osClockRate / 1000000);\n\n    // draw the profiler for the time it takes for level scripts to execute. (yellow)\n    draw_profiler_bar(clockBase, profiler->gameTimes[0], profiler->gameTimes[1], 212,\n                      GPACK_RGBA5551(255, 255, 40, 1));\n\n    // draw the profiler for the time it takes for the game to render (between level scripts and\n    // pre-display lists). (orange)\n    draw_profiler_bar(clockBase, profiler->gameTimes[1], profiler->gameTimes[2], 212,\n                      GPACK_RGBA5551(255, 120, 40, 1));\n\n    // draw the profiler for the time it takes for the display lists to send. (blue)\n    draw_profiler_bar(clockBase, profiler->gameTimes[2], profiler->gameTimes[3], 212,\n                      GPACK_RGBA5551(40, 192, 230, 1));\n\n    // we need to get the amount of finished numSoundTimes pairs, so get rid of the odd bit to get the\n    // limit of finished pairs.\n    profiler->numSoundTimes &= 0xFFFE;\n\n    // draw the sound update times. (red)\n    for (i = 0; i < profiler->numSoundTimes; i += 2) {\n        draw_profiler_bar(clockBase, profiler->soundTimes[i], profiler->soundTimes[i + 1], 212,\n                          GPACK_RGBA5551(255, 40, 40, 1));\n    }\n\n    //! RSP and RDP run in parallel, so while they are not absolutely guaranteed to return in order,\n    //  it is theoretically possible they might not. In all cases, the RDP should finish later than RSP.\n    //  Thus, this is not really a bug in practice, but should still be noted that the C doesn't check\n    //  this.\n    draw_profiler_bar(clockBase, profiler->gfxTimes[0], profiler->gfxTimes[1], 216,\n                      GPACK_RGBA5551(255, 255, 40, 1));\n    // (orange)\n    draw_profiler_bar(clockBase, profiler->gfxTimes[1], profiler->gfxTimes[2], 216,\n                      GPACK_RGBA5551(255, 120, 40, 1));\n\n    // like earlier, toss the odd bit.\n    profiler->numVblankTimes &= 0xFFFE;\n\n    // render the vblank time pairs. (red)\n    for (i = 0; i < profiler->numVblankTimes; i += 2) {\n        draw_profiler_bar(clockBase, profiler->vblankTimes[i], profiler->vblankTimes[i + 1], 216,\n                          GPACK_RGBA5551(255, 40, 40, 1));\n    }\n\n    draw_reference_profiler_bars();\n}\n\n/*\n  Draw Profiler Mode 0. This mode renders bars over each other to make it\n  easier to see which processes take the longest.\n\n  Information:\n\n  (red): Sound Updates\n  (yellow): Level Script Execution\n  (orange): Rendering\n  (orange): RDP Duration\n  (yellow): RSP Duration\n  (red): VBlank Duration\n*/\nvoid draw_profiler_mode_0(void) {\n    s32 i;\n    struct ProfilerFrameData *profiler;\n\n    u64 clockStart;\n    u64 levelScriptDuration;\n    u64 renderDuration;\n    u64 taskStart;\n    u64 rspDuration;\n    u64 rdpDuration;\n    u64 vblank;\n    u64 soundDuration;\n\n    // get the last frame profiler. gCurrentFrameIndex1 has the current frame being processed, so\n    // xor it to get the last frame profiler.\n    profiler = &gProfilerFrameData[gCurrentFrameIndex1 ^ 1];\n\n    // was thread 5 ran before thread 4? set the lower one to be the clockStart.\n    clockStart = profiler->gameTimes[0] <= profiler->soundTimes[0] ? profiler->gameTimes[0]\n                                                                    : profiler->soundTimes[0];\n\n    // set variables for duration of tasks.\n    levelScriptDuration = profiler->gameTimes[1] - clockStart;\n    renderDuration = profiler->gameTimes[2] - profiler->gameTimes[1];\n    taskStart = 0;\n    rspDuration = profiler->gfxTimes[1] - profiler->gfxTimes[0];\n    rdpDuration = profiler->gfxTimes[2] - profiler->gfxTimes[0];\n    vblank = 0;\n\n    // like above functions, toss the odd bit.\n    profiler->numSoundTimes &= 0xFFFE;\n\n    // sound duration seems to be rendered with empty space and not actually drawn.\n    for (i = 0; i < profiler->numSoundTimes; i += 2) {\n        // calculate sound duration of max - min\n        soundDuration = profiler->soundTimes[i + 1] - profiler->soundTimes[i];\n        taskStart += soundDuration;\n        // was the sound time minimum less than level script execution?\n        if (profiler->soundTimes[i] < profiler->gameTimes[1]) {\n            // overlay the levelScriptDuration onto the profiler by subtracting the soundDuration.\n            levelScriptDuration -= soundDuration;\n        } else if (profiler->soundTimes[i] < profiler->gameTimes[2]) {\n            // overlay the renderDuration onto the profiler by subtracting the soundDuration.\n            renderDuration -= soundDuration;\n        }\n    }\n\n    // same as above. toss the odd bit.\n    profiler->numSoundTimes &= 0xFFFE;\n\n    //! wrong index used to retrieve vblankTimes, thus empty pairs can\n    //  potentially be passed to draw_profiler_bar, because it could be sending\n    //  pairs that are beyond the numVblankTimes enforced non-odd limit, due to\n    //  using the wrong num value.\n    for (i = 0; i < profiler->numSoundTimes; i += 2) {\n        vblank += (profiler->vblankTimes[i + 1] - profiler->vblankTimes[i]);\n    }\n\n    // Draw top profilers.\n\n    // draw sound duration as the first bar. (red)\n    clockStart = 0;\n    draw_profiler_bar(0, clockStart, clockStart + taskStart, 212, GPACK_RGBA5551(255, 40, 40, 1));\n\n    // draw level script execution duration. (yellow)\n    clockStart += taskStart;\n    draw_profiler_bar(0, clockStart, clockStart + levelScriptDuration, 212,\n                      GPACK_RGBA5551(255, 255, 40, 1));\n\n    // draw render duration. (orange)\n    clockStart += levelScriptDuration;\n    draw_profiler_bar(0, clockStart, clockStart + renderDuration, 212,\n                      GPACK_RGBA5551(255, 120, 40, 1));\n\n    // Draw bottom profilers.\n\n    // rdp duration (orange)\n    draw_profiler_bar(0, 0, rdpDuration, 216, GPACK_RGBA5551(255, 120, 40, 1));\n    // rsp duration (yellow)\n    draw_profiler_bar(0, 0, rspDuration, 216, GPACK_RGBA5551(255, 255, 40, 1));\n    // vblank duration (red)\n    draw_profiler_bar(0, 0, vblank, 216, GPACK_RGBA5551(255, 40, 40, 1));\n\n    draw_reference_profiler_bars();\n}\n\n// Draw the Profiler per frame. Toggle the mode if the player presses L while this\n// renderer is active.\nvoid draw_profiler(void) {\n    if (gPlayer1Controller->buttonPressed & L_TRIG) {\n        gProfilerMode ^= 1;\n    }\n\n    if (gProfilerMode == 0) {\n        draw_profiler_mode_0();\n    } else {\n        draw_profiler_mode_1();\n    }\n}\n"
  },
  {
    "path": "src/game/profiler.h",
    "content": "#ifndef PROFILER_H\n#define PROFILER_H\n\n#include <PR/ultratypes.h>\n#include <PR/os_time.h>\n\n#include \"types.h\"\n\nextern u64 osClockRate;\n\nstruct ProfilerFrameData {\n    /* 0x00 */ s16 numSoundTimes;\n    /* 0x02 */ s16 numVblankTimes;\n    // gameTimes:\n    // 0: thread 5 start\n    // 1: level script execution\n    // 2: render\n    // 3: display lists\n    // 4: thread 4 end (0 terminated)\n    /* 0x08 */ OSTime gameTimes[5];\n    // gfxTimes:\n    // 0: processors queued\n    // 1: rsp completed\n    // 2: rdp completed\n    /* 0x30 */ OSTime gfxTimes[3];\n    /* 0x48 */ OSTime soundTimes[8];\n    /* 0x88 */ OSTime vblankTimes[8];\n};\n\n// thread event IDs\nenum ProfilerGameEvent {\n    THREAD5_START,\n    LEVEL_SCRIPT_EXECUTE,\n    BEFORE_DISPLAY_LISTS,\n    AFTER_DISPLAY_LISTS,\n    THREAD5_END\n};\n\nenum ProfilerGfxEvent {\n    TASKS_QUEUED,\n    RSP_COMPLETE,\n    RDP_COMPLETE\n};\n\nvoid profiler_log_thread5_time(enum ProfilerGameEvent eventID);\nvoid profiler_log_thread4_time(void);\nvoid profiler_log_gfx_time(enum ProfilerGfxEvent eventID);\nvoid profiler_log_vblank_time(void);\nvoid draw_profiler(void);\n\n#endif // PROFILER_H\n"
  },
  {
    "path": "src/game/rendering_graph_node.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"area.h\"\n#include \"engine/math_util.h\"\n#include \"game_init.h\"\n#include \"gfx_dimensions.h\"\n#include \"main.h\"\n#include \"memory.h\"\n#include \"print.h\"\n#include \"rendering_graph_node.h\"\n#include \"shadow.h\"\n#include \"sm64.h\"\n\n/**\n * This file contains the code that processes the scene graph for rendering.\n * The scene graph is responsible for drawing everything except the HUD / text boxes.\n * First the root of the scene graph is processed when geo_process_root\n * is called from level_script.c. The rest of the tree is traversed recursively\n * using the function geo_process_node_and_siblings, which switches over all\n * geo node types and calls a specialized function accordingly.\n * The types are defined in engine/graph_node.h\n *\n * The scene graph typically looks like:\n * - Root (viewport)\n *  - Master list\n *   - Ortho projection\n *    - Background (skybox)\n *  - Master list\n *   - Perspective\n *    - Camera\n *     - <area-specific display lists>\n *     - Object parent\n *      - <group with 240 object nodes>\n *  - Master list\n *   - Script node (Cannon overlay)\n *\n */\n\ns16 gMatStackIndex;\nMat4 gMatStack[32];\nMtx *gMatStackFixed[32];\n\n/**\n * Animation nodes have state in global variables, so this struct captures\n * the animation state so a 'context switch' can be made when rendering the\n * held object.\n */\nstruct GeoAnimState {\n    /*0x00*/ u8 type;\n    /*0x01*/ u8 enabled;\n    /*0x02*/ s16 frame;\n    /*0x04*/ f32 translationMultiplier;\n    /*0x08*/ u16 *attribute;\n    /*0x0C*/ s16 *data;\n};\n\n// For some reason, this is a GeoAnimState struct, but the current state consists\n// of separate global variables. It won't match EU otherwise.\nstruct GeoAnimState gGeoTempState;\n\nu8 gCurrAnimType;\nu8 gCurrAnimEnabled;\ns16 gCurrAnimFrame;\nf32 gCurrAnimTranslationMultiplier;\nu16 *gCurrAnimAttribute;\ns16 *gCurrAnimData;\n\nstruct AllocOnlyPool *gDisplayListHeap;\n\nstruct RenderModeContainer {\n    u32 modes[8];\n};\n\n/* Rendermode settings for cycle 1 for all 8 layers. */\nstruct RenderModeContainer renderModeTable_1Cycle[2] = { { {\n    G_RM_OPA_SURF,\n    G_RM_AA_OPA_SURF,\n    G_RM_AA_OPA_SURF,\n    G_RM_AA_OPA_SURF,\n    G_RM_AA_TEX_EDGE,\n    G_RM_AA_XLU_SURF,\n    G_RM_AA_XLU_SURF,\n    G_RM_AA_XLU_SURF,\n    } },\n    { {\n    /* z-buffered */\n    G_RM_ZB_OPA_SURF,\n    G_RM_AA_ZB_OPA_SURF,\n    G_RM_AA_ZB_OPA_DECAL,\n    G_RM_AA_ZB_OPA_INTER,\n    G_RM_AA_ZB_TEX_EDGE,\n    G_RM_AA_ZB_XLU_SURF,\n    G_RM_AA_ZB_XLU_DECAL,\n    G_RM_AA_ZB_XLU_INTER,\n    } } };\n\n/* Rendermode settings for cycle 2 for all 8 layers. */\nstruct RenderModeContainer renderModeTable_2Cycle[2] = { { {\n    G_RM_OPA_SURF2,\n    G_RM_AA_OPA_SURF2,\n    G_RM_AA_OPA_SURF2,\n    G_RM_AA_OPA_SURF2,\n    G_RM_AA_TEX_EDGE2,\n    G_RM_AA_XLU_SURF2,\n    G_RM_AA_XLU_SURF2,\n    G_RM_AA_XLU_SURF2,\n    } },\n    { {\n    /* z-buffered */\n    G_RM_ZB_OPA_SURF2,\n    G_RM_AA_ZB_OPA_SURF2,\n    G_RM_AA_ZB_OPA_DECAL2,\n    G_RM_AA_ZB_OPA_INTER2,\n    G_RM_AA_ZB_TEX_EDGE2,\n    G_RM_AA_ZB_XLU_SURF2,\n    G_RM_AA_ZB_XLU_DECAL2,\n    G_RM_AA_ZB_XLU_INTER2,\n    } } };\n\nstruct GraphNodeRoot *gCurGraphNodeRoot = NULL;\nstruct GraphNodeMasterList *gCurGraphNodeMasterList = NULL;\nstruct GraphNodePerspective *gCurGraphNodeCamFrustum = NULL;\nstruct GraphNodeCamera *gCurGraphNodeCamera = NULL;\nstruct GraphNodeObject *gCurGraphNodeObject = NULL;\nstruct GraphNodeHeldObject *gCurGraphNodeHeldObject = NULL;\nu16 gAreaUpdateCounter = 0;\n\n#ifdef F3DEX_GBI_2\nLookAt lookAt;\n#endif\n\n/**\n * Process a master list node.\n */\nstatic void geo_process_master_list_sub(struct GraphNodeMasterList *node) {\n    struct DisplayListNode *currList;\n    s32 i;\n    s32 enableZBuffer = (node->node.flags & GRAPH_RENDER_Z_BUFFER) != 0;\n    struct RenderModeContainer *modeList = &renderModeTable_1Cycle[enableZBuffer];\n    struct RenderModeContainer *mode2List = &renderModeTable_2Cycle[enableZBuffer];\n\n    // @bug This is where the LookAt values should be calculated but aren't.\n    // As a result, environment mapping is broken on Fast3DEX2 without the\n    // changes below.\n#ifdef F3DEX_GBI_2\n    Mtx lMtx;\n    guLookAtReflect(&lMtx, &lookAt, 0, 0, 0, /* eye */ 0, 0, 1, /* at */ 1, 0, 0 /* up */);\n#endif\n\n    if (enableZBuffer != 0) {\n        gDPPipeSync(gDisplayListHead++);\n        gSPSetGeometryMode(gDisplayListHead++, G_ZBUFFER);\n    }\n\n    for (i = 0; i < GFX_NUM_MASTER_LISTS; i++) {\n        if ((currList = node->listHeads[i]) != NULL) {\n            gDPSetRenderMode(gDisplayListHead++, modeList->modes[i], mode2List->modes[i]);\n            while (currList != NULL) {\n                gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(currList->transform),\n                          G_MTX_MODELVIEW | G_MTX_LOAD | G_MTX_NOPUSH);\n                gSPDisplayList(gDisplayListHead++, currList->displayList);\n                currList = currList->next;\n            }\n        }\n    }\n    if (enableZBuffer != 0) {\n        gDPPipeSync(gDisplayListHead++);\n        gSPClearGeometryMode(gDisplayListHead++, G_ZBUFFER);\n    }\n}\n\n/**\n * Appends the display list to one of the master lists based on the layer\n * parameter. Look at the RenderModeContainer struct to see the corresponding\n * render modes of layers.\n */\nstatic void geo_append_display_list(void *displayList, s16 layer) {\n\n#ifdef F3DEX_GBI_2\n    gSPLookAt(gDisplayListHead++, &lookAt);\n#endif\n    if (gCurGraphNodeMasterList != 0) {\n        struct DisplayListNode *listNode =\n            alloc_only_pool_alloc(gDisplayListHeap, sizeof(struct DisplayListNode));\n\n        listNode->transform = gMatStackFixed[gMatStackIndex];\n        listNode->displayList = displayList;\n        listNode->next = 0;\n        if (gCurGraphNodeMasterList->listHeads[layer] == 0) {\n            gCurGraphNodeMasterList->listHeads[layer] = listNode;\n        } else {\n            gCurGraphNodeMasterList->listTails[layer]->next = listNode;\n        }\n        gCurGraphNodeMasterList->listTails[layer] = listNode;\n    }\n}\n\n/**\n * Process the master list node.\n */\nstatic void geo_process_master_list(struct GraphNodeMasterList *node) {\n    s32 i;\n    UNUSED u8 filler[4];\n\n    if (gCurGraphNodeMasterList == NULL && node->node.children != NULL) {\n        gCurGraphNodeMasterList = node;\n        for (i = 0; i < GFX_NUM_MASTER_LISTS; i++) {\n            node->listHeads[i] = NULL;\n        }\n        geo_process_node_and_siblings(node->node.children);\n        geo_process_master_list_sub(node);\n        gCurGraphNodeMasterList = NULL;\n    }\n}\n\n/**\n * Process an orthographic projection node.\n */\nstatic void geo_process_ortho_projection(struct GraphNodeOrthoProjection *node) {\n    if (node->node.children != NULL) {\n        Mtx *mtx = alloc_display_list(sizeof(*mtx));\n        f32 left = (gCurGraphNodeRoot->x - gCurGraphNodeRoot->width) / 2.0f * node->scale;\n        f32 right = (gCurGraphNodeRoot->x + gCurGraphNodeRoot->width) / 2.0f * node->scale;\n        f32 top = (gCurGraphNodeRoot->y - gCurGraphNodeRoot->height) / 2.0f * node->scale;\n        f32 bottom = (gCurGraphNodeRoot->y + gCurGraphNodeRoot->height) / 2.0f * node->scale;\n\n        guOrtho(mtx, left, right, bottom, top, -2.0f, 2.0f, 1.0f);\n        gSPPerspNormalize(gDisplayListHead++, 0xFFFF);\n        gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(mtx), G_MTX_PROJECTION | G_MTX_LOAD | G_MTX_NOPUSH);\n\n        geo_process_node_and_siblings(node->node.children);\n    }\n}\n\n/**\n * Process a perspective projection node.\n */\nstatic void geo_process_perspective(struct GraphNodePerspective *node) {\n    if (node->fnNode.func != NULL) {\n        node->fnNode.func(GEO_CONTEXT_RENDER, &node->fnNode.node, gMatStack[gMatStackIndex]);\n    }\n    if (node->fnNode.node.children != NULL) {\n        u16 perspNorm;\n        Mtx *mtx = alloc_display_list(sizeof(*mtx));\n\n#ifdef VERSION_EU\n        f32 aspect = ((f32) gCurGraphNodeRoot->width / (f32) gCurGraphNodeRoot->height) * 1.1f;\n#else\n        f32 aspect = (f32) gCurGraphNodeRoot->width / (f32) gCurGraphNodeRoot->height;\n#endif\n\n        guPerspective(mtx, &perspNorm, node->fov, aspect, node->near, node->far, 1.0f);\n        gSPPerspNormalize(gDisplayListHead++, perspNorm);\n\n        gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(mtx), G_MTX_PROJECTION | G_MTX_LOAD | G_MTX_NOPUSH);\n\n        gCurGraphNodeCamFrustum = node;\n        geo_process_node_and_siblings(node->fnNode.node.children);\n        gCurGraphNodeCamFrustum = NULL;\n    }\n}\n\n/**\n * Process a level of detail node. From the current transformation matrix,\n * the perpendicular distance to the camera is extracted and the children\n * of this node are only processed if that distance is within the render\n * range of this node.\n */\nstatic void geo_process_level_of_detail(struct GraphNodeLevelOfDetail *node) {\n#ifdef GBI_FLOATS\n    Mtx *mtx = gMatStackFixed[gMatStackIndex];\n    s16 distanceFromCam = (s32) -mtx->m[3][2]; // z-component of the translation column\n#else\n    // The fixed point Mtx type is defined as 16 longs, but it's actually 16\n    // shorts for the integer parts followed by 16 shorts for the fraction parts\n    Mtx *mtx = gMatStackFixed[gMatStackIndex];\n    s16 distanceFromCam = -GET_HIGH_S16_OF_32(mtx->m[1][3]); // z-component of the translation column\n#endif\n\n    if (node->minDistance <= distanceFromCam && distanceFromCam < node->maxDistance) {\n        if (node->node.children != 0) {\n            geo_process_node_and_siblings(node->node.children);\n        }\n    }\n}\n\n/**\n * Process a switch case node. The node's selection function is called\n * if it is 0, and among the node's children, only the selected child is\n * processed next.\n */\nstatic void geo_process_switch(struct GraphNodeSwitchCase *node) {\n    struct GraphNode *selectedChild = node->fnNode.node.children;\n    s32 i;\n\n    if (node->fnNode.func != NULL) {\n        node->fnNode.func(GEO_CONTEXT_RENDER, &node->fnNode.node, gMatStack[gMatStackIndex]);\n    }\n    for (i = 0; selectedChild != NULL && node->selectedCase > i; i++) {\n        selectedChild = selectedChild->next;\n    }\n    if (selectedChild != NULL) {\n        geo_process_node_and_siblings(selectedChild);\n    }\n}\n\n/**\n * Process a camera node.\n */\nstatic void geo_process_camera(struct GraphNodeCamera *node) {\n    Mat4 cameraTransform;\n    Mtx *rollMtx = alloc_display_list(sizeof(*rollMtx));\n    Mtx *mtx = alloc_display_list(sizeof(*mtx));\n\n    if (node->fnNode.func != NULL) {\n        node->fnNode.func(GEO_CONTEXT_RENDER, &node->fnNode.node, gMatStack[gMatStackIndex]);\n    }\n    mtxf_rotate_xy(rollMtx, node->rollScreen);\n\n    gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(rollMtx), G_MTX_PROJECTION | G_MTX_MUL | G_MTX_NOPUSH);\n\n    mtxf_lookat(cameraTransform, node->pos, node->focus, node->roll);\n    mtxf_mul(gMatStack[gMatStackIndex + 1], cameraTransform, gMatStack[gMatStackIndex]);\n    gMatStackIndex++;\n    mtxf_to_mtx(mtx, gMatStack[gMatStackIndex]);\n    gMatStackFixed[gMatStackIndex] = mtx;\n    if (node->fnNode.node.children != 0) {\n        gCurGraphNodeCamera = node;\n        node->matrixPtr = &gMatStack[gMatStackIndex];\n        geo_process_node_and_siblings(node->fnNode.node.children);\n        gCurGraphNodeCamera = NULL;\n    }\n    gMatStackIndex--;\n}\n\n/**\n * Process a translation / rotation node. A transformation matrix based\n * on the node's translation and rotation is created and pushed on both\n * the float and fixed point matrix stacks.\n * For the rest it acts as a normal display list node.\n */\nstatic void geo_process_translation_rotation(struct GraphNodeTranslationRotation *node) {\n    Mat4 mtxf;\n    Vec3f translation;\n    Mtx *mtx = alloc_display_list(sizeof(*mtx));\n\n    vec3s_to_vec3f(translation, node->translation);\n    mtxf_rotate_zxy_and_translate(mtxf, translation, node->rotation);\n    mtxf_mul(gMatStack[gMatStackIndex + 1], mtxf, gMatStack[gMatStackIndex]);\n    gMatStackIndex++;\n    mtxf_to_mtx(mtx, gMatStack[gMatStackIndex]);\n    gMatStackFixed[gMatStackIndex] = mtx;\n    if (node->displayList != NULL) {\n        geo_append_display_list(node->displayList, node->node.flags >> 8);\n    }\n    if (node->node.children != NULL) {\n        geo_process_node_and_siblings(node->node.children);\n    }\n    gMatStackIndex--;\n}\n\n/**\n * Process a translation node. A transformation matrix based on the node's\n * translation is created and pushed on both the float and fixed point matrix stacks.\n * For the rest it acts as a normal display list node.\n */\nstatic void geo_process_translation(struct GraphNodeTranslation *node) {\n    Mat4 mtxf;\n    Vec3f translation;\n    Mtx *mtx = alloc_display_list(sizeof(*mtx));\n\n    vec3s_to_vec3f(translation, node->translation);\n    mtxf_rotate_zxy_and_translate(mtxf, translation, gVec3sZero);\n    mtxf_mul(gMatStack[gMatStackIndex + 1], mtxf, gMatStack[gMatStackIndex]);\n    gMatStackIndex++;\n    mtxf_to_mtx(mtx, gMatStack[gMatStackIndex]);\n    gMatStackFixed[gMatStackIndex] = mtx;\n    if (node->displayList != NULL) {\n        geo_append_display_list(node->displayList, node->node.flags >> 8);\n    }\n    if (node->node.children != NULL) {\n        geo_process_node_and_siblings(node->node.children);\n    }\n    gMatStackIndex--;\n}\n\n/**\n * Process a rotation node. A transformation matrix based on the node's\n * rotation is created and pushed on both the float and fixed point matrix stacks.\n * For the rest it acts as a normal display list node.\n */\nstatic void geo_process_rotation(struct GraphNodeRotation *node) {\n    Mat4 mtxf;\n    Mtx *mtx = alloc_display_list(sizeof(*mtx));\n\n    mtxf_rotate_zxy_and_translate(mtxf, gVec3fZero, node->rotation);\n    mtxf_mul(gMatStack[gMatStackIndex + 1], mtxf, gMatStack[gMatStackIndex]);\n    gMatStackIndex++;\n    mtxf_to_mtx(mtx, gMatStack[gMatStackIndex]);\n    gMatStackFixed[gMatStackIndex] = mtx;\n    if (node->displayList != NULL) {\n        geo_append_display_list(node->displayList, node->node.flags >> 8);\n    }\n    if (node->node.children != NULL) {\n        geo_process_node_and_siblings(node->node.children);\n    }\n    gMatStackIndex--;\n}\n\n/**\n * Process a scaling node. A transformation matrix based on the node's\n * scale is created and pushed on both the float and fixed point matrix stacks.\n * For the rest it acts as a normal display list node.\n */\nstatic void geo_process_scale(struct GraphNodeScale *node) {\n    UNUSED Mat4 transform;\n    Vec3f scaleVec;\n    Mtx *mtx = alloc_display_list(sizeof(*mtx));\n\n    vec3f_set(scaleVec, node->scale, node->scale, node->scale);\n    mtxf_scale_vec3f(gMatStack[gMatStackIndex + 1], gMatStack[gMatStackIndex], scaleVec);\n    gMatStackIndex++;\n    mtxf_to_mtx(mtx, gMatStack[gMatStackIndex]);\n    gMatStackFixed[gMatStackIndex] = mtx;\n    if (node->displayList != NULL) {\n        geo_append_display_list(node->displayList, node->node.flags >> 8);\n    }\n    if (node->node.children != NULL) {\n        geo_process_node_and_siblings(node->node.children);\n    }\n    gMatStackIndex--;\n}\n\n/**\n * Process a billboard node. A transformation matrix is created that makes its\n * children face the camera, and it is pushed on the floating point and fixed\n * point matrix stacks.\n * For the rest it acts as a normal display list node.\n */\nstatic void geo_process_billboard(struct GraphNodeBillboard *node) {\n    Vec3f translation;\n    Mtx *mtx = alloc_display_list(sizeof(*mtx));\n\n    gMatStackIndex++;\n    vec3s_to_vec3f(translation, node->translation);\n    mtxf_billboard(gMatStack[gMatStackIndex], gMatStack[gMatStackIndex - 1], translation,\n                   gCurGraphNodeCamera->roll);\n    if (gCurGraphNodeHeldObject != NULL) {\n        mtxf_scale_vec3f(gMatStack[gMatStackIndex], gMatStack[gMatStackIndex],\n                         gCurGraphNodeHeldObject->objNode->header.gfx.scale);\n    } else if (gCurGraphNodeObject != NULL) {\n        mtxf_scale_vec3f(gMatStack[gMatStackIndex], gMatStack[gMatStackIndex],\n                         gCurGraphNodeObject->scale);\n    }\n\n    mtxf_to_mtx(mtx, gMatStack[gMatStackIndex]);\n    gMatStackFixed[gMatStackIndex] = mtx;\n\n    if (node->displayList != NULL) {\n        geo_append_display_list(node->displayList, node->node.flags >> 8);\n    }\n\n    if (node->node.children != NULL) {\n        geo_process_node_and_siblings(node->node.children);\n    }\n\n    gMatStackIndex--;\n}\n\n/**\n * Process a display list node. It draws a display list without first pushing\n * a transformation on the stack, so all transformations are inherited from the\n * parent node. It processes its children if it has them.\n */\nstatic void geo_process_display_list(struct GraphNodeDisplayList *node) {\n    if (node->displayList != NULL) {\n        geo_append_display_list(node->displayList, node->node.flags >> 8);\n    }\n    if (node->node.children != NULL) {\n        geo_process_node_and_siblings(node->node.children);\n    }\n}\n\n/**\n * Process a generated list. Instead of storing a pointer to a display list,\n * the list is generated on the fly by a function.\n */\nstatic void geo_process_generated_list(struct GraphNodeGenerated *node) {\n    if (node->fnNode.func != NULL) {\n        Gfx *list = node->fnNode.func(GEO_CONTEXT_RENDER, &node->fnNode.node,\n                                     (struct AllocOnlyPool *) gMatStack[gMatStackIndex]);\n\n        if (list != NULL) {\n            geo_append_display_list((void *) VIRTUAL_TO_PHYSICAL(list), node->fnNode.node.flags >> 8);\n        }\n    }\n    if (node->fnNode.node.children != NULL) {\n        geo_process_node_and_siblings(node->fnNode.node.children);\n    }\n}\n\n/**\n * Process a background node. Tries to retrieve a background display list from\n * the function of the node. If that function is null or returns null, a black\n * rectangle is drawn instead.\n */\nstatic void geo_process_background(struct GraphNodeBackground *node) {\n    Gfx *list = NULL;\n\n    if (node->fnNode.func != NULL) {\n        list = node->fnNode.func(GEO_CONTEXT_RENDER, &node->fnNode.node,\n                                 (struct AllocOnlyPool *) gMatStack[gMatStackIndex]);\n    }\n    if (list != NULL) {\n        geo_append_display_list((void *) VIRTUAL_TO_PHYSICAL(list), node->fnNode.node.flags >> 8);\n    } else if (gCurGraphNodeMasterList != NULL) {\n#ifndef F3DEX_GBI_2E\n        Gfx *gfxStart = alloc_display_list(sizeof(Gfx) * 7);\n#else\n        Gfx *gfxStart = alloc_display_list(sizeof(Gfx) * 8);\n#endif\n        Gfx *gfx = gfxStart;\n\n        gDPPipeSync(gfx++);\n        gDPSetCycleType(gfx++, G_CYC_FILL);\n        gDPSetFillColor(gfx++, node->background);\n        gDPFillRectangle(gfx++, GFX_DIMENSIONS_RECT_FROM_LEFT_EDGE(0), BORDER_HEIGHT,\n        GFX_DIMENSIONS_RECT_FROM_RIGHT_EDGE(0) - 1, SCREEN_HEIGHT - BORDER_HEIGHT - 1);\n        gDPPipeSync(gfx++);\n        gDPSetCycleType(gfx++, G_CYC_1CYCLE);\n        gSPEndDisplayList(gfx++);\n\n        geo_append_display_list((void *) VIRTUAL_TO_PHYSICAL(gfxStart), 0);\n    }\n    if (node->fnNode.node.children != NULL) {\n        geo_process_node_and_siblings(node->fnNode.node.children);\n    }\n}\n\n/**\n * Render an animated part. The current animation state is not part of the node\n * but set in global variables. If an animated part is skipped, everything afterwards desyncs.\n */\nstatic void geo_process_animated_part(struct GraphNodeAnimatedPart *node) {\n    Mat4 matrix;\n    Vec3s rotation;\n    Vec3f translation;\n    Mtx *matrixPtr = alloc_display_list(sizeof(*matrixPtr));\n\n    vec3s_copy(rotation, gVec3sZero);\n    vec3f_set(translation, node->translation[0], node->translation[1], node->translation[2]);\n    if (gCurrAnimType == ANIM_TYPE_TRANSLATION) {\n        translation[0] += gCurrAnimData[retrieve_animation_index(gCurrAnimFrame, &gCurrAnimAttribute)]\n                          * gCurrAnimTranslationMultiplier;\n        translation[1] += gCurrAnimData[retrieve_animation_index(gCurrAnimFrame, &gCurrAnimAttribute)]\n                          * gCurrAnimTranslationMultiplier;\n        translation[2] += gCurrAnimData[retrieve_animation_index(gCurrAnimFrame, &gCurrAnimAttribute)]\n                          * gCurrAnimTranslationMultiplier;\n        gCurrAnimType = ANIM_TYPE_ROTATION;\n    } else {\n        if (gCurrAnimType == ANIM_TYPE_LATERAL_TRANSLATION) {\n            translation[0] +=\n                gCurrAnimData[retrieve_animation_index(gCurrAnimFrame, &gCurrAnimAttribute)]\n                * gCurrAnimTranslationMultiplier;\n            gCurrAnimAttribute += 2;\n            translation[2] +=\n                gCurrAnimData[retrieve_animation_index(gCurrAnimFrame, &gCurrAnimAttribute)]\n                * gCurrAnimTranslationMultiplier;\n            gCurrAnimType = ANIM_TYPE_ROTATION;\n        } else {\n            if (gCurrAnimType == ANIM_TYPE_VERTICAL_TRANSLATION) {\n                gCurrAnimAttribute += 2;\n                translation[1] +=\n                    gCurrAnimData[retrieve_animation_index(gCurrAnimFrame, &gCurrAnimAttribute)]\n                    * gCurrAnimTranslationMultiplier;\n                gCurrAnimAttribute += 2;\n                gCurrAnimType = ANIM_TYPE_ROTATION;\n            } else if (gCurrAnimType == ANIM_TYPE_NO_TRANSLATION) {\n                gCurrAnimAttribute += 6;\n                gCurrAnimType = ANIM_TYPE_ROTATION;\n            }\n        }\n    }\n\n    if (gCurrAnimType == ANIM_TYPE_ROTATION) {\n        rotation[0] = gCurrAnimData[retrieve_animation_index(gCurrAnimFrame, &gCurrAnimAttribute)];\n        rotation[1] = gCurrAnimData[retrieve_animation_index(gCurrAnimFrame, &gCurrAnimAttribute)];\n        rotation[2] = gCurrAnimData[retrieve_animation_index(gCurrAnimFrame, &gCurrAnimAttribute)];\n    }\n    mtxf_rotate_xyz_and_translate(matrix, translation, rotation);\n    mtxf_mul(gMatStack[gMatStackIndex + 1], matrix, gMatStack[gMatStackIndex]);\n    gMatStackIndex++;\n    mtxf_to_mtx(matrixPtr, gMatStack[gMatStackIndex]);\n    gMatStackFixed[gMatStackIndex] = matrixPtr;\n    if (node->displayList != NULL) {\n        geo_append_display_list(node->displayList, node->node.flags >> 8);\n    }\n    if (node->node.children != NULL) {\n        geo_process_node_and_siblings(node->node.children);\n    }\n    gMatStackIndex--;\n}\n\n/**\n * Initialize the animation-related global variables for the currently drawn\n * object's animation.\n */\nvoid geo_set_animation_globals(struct AnimInfo *node, s32 hasAnimation) {\n    struct Animation *anim = node->curAnim;\n\n    if (hasAnimation) {\n        node->animFrame = geo_update_animation_frame(node, &node->animFrameAccelAssist);\n    }\n    node->animTimer = gAreaUpdateCounter;\n    if (anim->flags & ANIM_FLAG_HOR_TRANS) {\n        gCurrAnimType = ANIM_TYPE_VERTICAL_TRANSLATION;\n    } else if (anim->flags & ANIM_FLAG_VERT_TRANS) {\n        gCurrAnimType = ANIM_TYPE_LATERAL_TRANSLATION;\n    } else if (anim->flags & ANIM_FLAG_6) {\n        gCurrAnimType = ANIM_TYPE_NO_TRANSLATION;\n    } else {\n        gCurrAnimType = ANIM_TYPE_TRANSLATION;\n    }\n\n    gCurrAnimFrame = node->animFrame;\n    gCurrAnimEnabled = (anim->flags & ANIM_FLAG_5) == 0;\n    gCurrAnimAttribute = segmented_to_virtual((void *) anim->index);\n    gCurrAnimData = segmented_to_virtual((void *) anim->values);\n\n    if (anim->animYTransDivisor == 0) {\n        gCurrAnimTranslationMultiplier = 1.0f;\n    } else {\n        gCurrAnimTranslationMultiplier = (f32) node->animYTrans / (f32) anim->animYTransDivisor;\n    }\n}\n\n/**\n * Process a shadow node. Renders a shadow under an object offset by the\n * translation of the first animated component and rotated according to\n * the floor below it.\n */\nstatic void geo_process_shadow(struct GraphNodeShadow *node) {\n    Gfx *shadowList;\n    Mat4 mtxf;\n    Vec3f shadowPos;\n    Vec3f animOffset;\n    f32 objScale;\n    f32 shadowScale;\n    f32 sinAng;\n    f32 cosAng;\n    struct GraphNode *geo;\n    Mtx *mtx;\n\n    if (gCurGraphNodeCamera != NULL && gCurGraphNodeObject != NULL) {\n        if (gCurGraphNodeHeldObject != NULL) {\n            get_pos_from_transform_mtx(shadowPos, gMatStack[gMatStackIndex],\n                                       *gCurGraphNodeCamera->matrixPtr);\n            shadowScale = node->shadowScale;\n        } else {\n            vec3f_copy(shadowPos, gCurGraphNodeObject->pos);\n            shadowScale = node->shadowScale * gCurGraphNodeObject->scale[0];\n        }\n\n        objScale = 1.0f;\n        if (gCurrAnimEnabled) {\n            if (gCurrAnimType == ANIM_TYPE_TRANSLATION\n                || gCurrAnimType == ANIM_TYPE_LATERAL_TRANSLATION) {\n                geo = node->node.children;\n                if (geo != NULL && geo->type == GRAPH_NODE_TYPE_SCALE) {\n                    objScale = ((struct GraphNodeScale *) geo)->scale;\n                }\n                animOffset[0] =\n                    gCurrAnimData[retrieve_animation_index(gCurrAnimFrame, &gCurrAnimAttribute)]\n                    * gCurrAnimTranslationMultiplier * objScale;\n                animOffset[1] = 0.0f;\n                gCurrAnimAttribute += 2;\n                animOffset[2] =\n                    gCurrAnimData[retrieve_animation_index(gCurrAnimFrame, &gCurrAnimAttribute)]\n                    * gCurrAnimTranslationMultiplier * objScale;\n                gCurrAnimAttribute -= 6;\n\n                // simple matrix rotation so the shadow offset rotates along with the object\n                sinAng = sins(gCurGraphNodeObject->angle[1]);\n                cosAng = coss(gCurGraphNodeObject->angle[1]);\n\n                shadowPos[0] += animOffset[0] * cosAng + animOffset[2] * sinAng;\n                shadowPos[2] += -animOffset[0] * sinAng + animOffset[2] * cosAng;\n            }\n        }\n\n        shadowList = create_shadow_below_xyz(shadowPos[0], shadowPos[1], shadowPos[2], shadowScale,\n                                             node->shadowSolidity, node->shadowType);\n        if (shadowList != NULL) {\n            mtx = alloc_display_list(sizeof(*mtx));\n            gMatStackIndex++;\n            mtxf_translate(mtxf, shadowPos);\n            mtxf_mul(gMatStack[gMatStackIndex], mtxf, *gCurGraphNodeCamera->matrixPtr);\n            mtxf_to_mtx(mtx, gMatStack[gMatStackIndex]);\n            gMatStackFixed[gMatStackIndex] = mtx;\n            if (gShadowAboveWaterOrLava == TRUE) {\n                geo_append_display_list((void *) VIRTUAL_TO_PHYSICAL(shadowList), 4);\n            } else if (gMarioOnIceOrCarpet == 1) {\n                geo_append_display_list((void *) VIRTUAL_TO_PHYSICAL(shadowList), 5);\n            } else {\n                geo_append_display_list((void *) VIRTUAL_TO_PHYSICAL(shadowList), 6);\n            }\n            gMatStackIndex--;\n        }\n    }\n\n    if (node->node.children != NULL) {\n        geo_process_node_and_siblings(node->node.children);\n    }\n}\n\n/**\n * Check whether an object is in view to determine whether it should be drawn.\n * This is known as frustum culling.\n * It checks whether the object is far away, very close / behind the camera,\n * or horizontally out of view. It does not check whether it is vertically\n * out of view. It assumes a sphere of 300 units around the object's position\n * unless the object has a culling radius node that specifies otherwise.\n *\n * The matrix parameter should be the top of the matrix stack, which is the\n * object's transformation matrix times the camera 'look-at' matrix. The math\n * is counter-intuitive, but it checks column 3 (translation vector) of this\n * matrix to determine where the origin (0,0,0) in object space will be once\n * transformed to camera space (x+ = right, y+ = up, z = 'coming out the screen').\n * In 3D graphics, you typically model the world as being moved in front of a\n * static camera instead of a moving camera through a static world, which in\n * this case simplifies calculations. Note that the perspective matrix is not\n * on the matrix stack, so there are still calculations with the fov to compute\n * the slope of the lines of the frustum.\n *\n *        z-\n *\n *  \\     |     /\n *   \\    |    /\n *    \\   |   /\n *     \\  |  /\n *      \\ | /\n *       \\|/\n *        C       x+\n *\n * Since (0,0,0) is unaffected by rotation, columns 0, 1 and 2 are ignored.\n */\nstatic s32 obj_is_in_view(struct GraphNodeObject *node, Mat4 matrix) {\n    s16 cullingRadius;\n    s16 halfFov; // half of the fov in in-game angle units instead of degrees\n    struct GraphNode *geo;\n    f32 hScreenEdge;\n\n    if (node->node.flags & GRAPH_RENDER_INVISIBLE) {\n        return FALSE;\n    }\n\n    geo = node->sharedChild;\n\n    // ! @bug The aspect ratio is not accounted for. When the fov value is 45,\n    // the horizontal effective fov is actually 60 degrees, so you can see objects\n    // visibly pop in or out at the edge of the screen.\n    halfFov = (gCurGraphNodeCamFrustum->fov / 2.0f + 1.0f) * 32768.0f / 180.0f + 0.5f;\n\n    hScreenEdge = -matrix[3][2] * sins(halfFov) / coss(halfFov);\n    // -matrix[3][2] is the depth, which gets multiplied by tan(halfFov) to get\n    // the amount of units between the center of the screen and the horizontal edge\n    // given the distance from the object to the camera.\n\n#ifdef WIDESCREEN\n    // This multiplication should really be performed on 4:3 as well,\n    // but the issue will be more apparent on widescreen.\n    hScreenEdge *= GFX_DIMENSIONS_ASPECT_RATIO;\n#endif\n\n    if (geo != NULL && geo->type == GRAPH_NODE_TYPE_CULLING_RADIUS) {\n        cullingRadius =\n            (f32)((struct GraphNodeCullingRadius *) geo)->cullingRadius; //! Why is there a f32 cast?\n    } else {\n        cullingRadius = 300;\n    }\n\n    // Don't render if the object is close to or behind the camera\n    if (matrix[3][2] > -100.0f + cullingRadius) {\n        return FALSE;\n    }\n\n    //! This makes the HOLP not update when the camera is far away, and it\n    //  makes PU travel safe when the camera is locked on the main map.\n    //  If Mario were rendered with a depth over 65536 it would cause overflow\n    //  when converting the transformation matrix to a fixed point matrix.\n    if (matrix[3][2] < -20000.0f - cullingRadius) {\n        return FALSE;\n    }\n\n    // Check whether the object is horizontally in view\n    if (matrix[3][0] > hScreenEdge + cullingRadius) {\n        return FALSE;\n    }\n    if (matrix[3][0] < -hScreenEdge - cullingRadius) {\n        return FALSE;\n    }\n    return TRUE;\n}\n\n/**\n * Process an object node.\n */\nstatic void geo_process_object(struct Object *node) {\n    Mat4 mtxf;\n    s32 hasAnimation = (node->header.gfx.node.flags & GRAPH_RENDER_HAS_ANIMATION) != 0;\n\n    if (node->header.gfx.areaIndex == gCurGraphNodeRoot->areaIndex) {\n        if (node->header.gfx.throwMatrix != NULL) {\n            mtxf_mul(gMatStack[gMatStackIndex + 1], *node->header.gfx.throwMatrix,\n                     gMatStack[gMatStackIndex]);\n        } else if (node->header.gfx.node.flags & GRAPH_RENDER_BILLBOARD) {\n            mtxf_billboard(gMatStack[gMatStackIndex + 1], gMatStack[gMatStackIndex],\n                           node->header.gfx.pos, gCurGraphNodeCamera->roll);\n        } else {\n            mtxf_rotate_zxy_and_translate(mtxf, node->header.gfx.pos, node->header.gfx.angle);\n            mtxf_mul(gMatStack[gMatStackIndex + 1], mtxf, gMatStack[gMatStackIndex]);\n        }\n\n        mtxf_scale_vec3f(gMatStack[gMatStackIndex + 1], gMatStack[gMatStackIndex + 1],\n                         node->header.gfx.scale);\n        node->header.gfx.throwMatrix = &gMatStack[++gMatStackIndex];\n        node->header.gfx.cameraToObject[0] = gMatStack[gMatStackIndex][3][0];\n        node->header.gfx.cameraToObject[1] = gMatStack[gMatStackIndex][3][1];\n        node->header.gfx.cameraToObject[2] = gMatStack[gMatStackIndex][3][2];\n\n        // FIXME: correct types\n        if (node->header.gfx.animInfo.curAnim != NULL) {\n            geo_set_animation_globals(&node->header.gfx.animInfo, hasAnimation);\n        }\n        if (obj_is_in_view(&node->header.gfx, gMatStack[gMatStackIndex])) {\n            Mtx *mtx = alloc_display_list(sizeof(*mtx));\n\n            mtxf_to_mtx(mtx, gMatStack[gMatStackIndex]);\n            gMatStackFixed[gMatStackIndex] = mtx;\n            if (node->header.gfx.sharedChild != NULL) {\n                gCurGraphNodeObject = (struct GraphNodeObject *) node;\n                node->header.gfx.sharedChild->parent = &node->header.gfx.node;\n                geo_process_node_and_siblings(node->header.gfx.sharedChild);\n                node->header.gfx.sharedChild->parent = NULL;\n                gCurGraphNodeObject = NULL;\n            }\n            if (node->header.gfx.node.children != NULL) {\n                geo_process_node_and_siblings(node->header.gfx.node.children);\n            }\n        }\n\n        gMatStackIndex--;\n        gCurrAnimType = ANIM_TYPE_NONE;\n        node->header.gfx.throwMatrix = NULL;\n    }\n}\n\n/**\n * Process an object parent node. Temporarily assigns itself as the parent of\n * the subtree rooted at 'sharedChild' and processes the subtree, after which the\n * actual children are be processed. (in practice they are null though)\n */\nstatic void geo_process_object_parent(struct GraphNodeObjectParent *node) {\n    if (node->sharedChild != NULL) {\n        node->sharedChild->parent = (struct GraphNode *) node;\n        geo_process_node_and_siblings(node->sharedChild);\n        node->sharedChild->parent = NULL;\n    }\n    if (node->node.children != NULL) {\n        geo_process_node_and_siblings(node->node.children);\n    }\n}\n\n/**\n * Process a held object node.\n */\nvoid geo_process_held_object(struct GraphNodeHeldObject *node) {\n    Mat4 mat;\n    Vec3f translation;\n    Mtx *mtx = alloc_display_list(sizeof(*mtx));\n\n#ifdef F3DEX_GBI_2\n    gSPLookAt(gDisplayListHead++, &lookAt);\n#endif\n\n    if (node->fnNode.func != NULL) {\n        node->fnNode.func(GEO_CONTEXT_RENDER, &node->fnNode.node, gMatStack[gMatStackIndex]);\n    }\n    if (node->objNode != NULL && node->objNode->header.gfx.sharedChild != NULL) {\n        s32 hasAnimation = (node->objNode->header.gfx.node.flags & GRAPH_RENDER_HAS_ANIMATION) != 0;\n\n        translation[0] = node->translation[0] / 4.0f;\n        translation[1] = node->translation[1] / 4.0f;\n        translation[2] = node->translation[2] / 4.0f;\n\n        mtxf_translate(mat, translation);\n        mtxf_copy(gMatStack[gMatStackIndex + 1], *gCurGraphNodeObject->throwMatrix);\n        gMatStack[gMatStackIndex + 1][3][0] = gMatStack[gMatStackIndex][3][0];\n        gMatStack[gMatStackIndex + 1][3][1] = gMatStack[gMatStackIndex][3][1];\n        gMatStack[gMatStackIndex + 1][3][2] = gMatStack[gMatStackIndex][3][2];\n        mtxf_mul(gMatStack[gMatStackIndex + 1], mat, gMatStack[gMatStackIndex + 1]);\n        mtxf_scale_vec3f(gMatStack[gMatStackIndex + 1], gMatStack[gMatStackIndex + 1],\n                         node->objNode->header.gfx.scale);\n        if (node->fnNode.func != NULL) {\n            node->fnNode.func(GEO_CONTEXT_HELD_OBJ, &node->fnNode.node,\n                              (struct AllocOnlyPool *) gMatStack[gMatStackIndex + 1]);\n        }\n        gMatStackIndex++;\n        mtxf_to_mtx(mtx, gMatStack[gMatStackIndex]);\n        gMatStackFixed[gMatStackIndex] = mtx;\n        gGeoTempState.type = gCurrAnimType;\n        gGeoTempState.enabled = gCurrAnimEnabled;\n        gGeoTempState.frame = gCurrAnimFrame;\n        gGeoTempState.translationMultiplier = gCurrAnimTranslationMultiplier;\n        gGeoTempState.attribute = gCurrAnimAttribute;\n        gGeoTempState.data = gCurrAnimData;\n        gCurrAnimType = 0;\n        gCurGraphNodeHeldObject = (void *) node;\n        if (node->objNode->header.gfx.animInfo.curAnim != NULL) {\n            geo_set_animation_globals(&node->objNode->header.gfx.animInfo, hasAnimation);\n        }\n\n        geo_process_node_and_siblings(node->objNode->header.gfx.sharedChild);\n        gCurGraphNodeHeldObject = NULL;\n        gCurrAnimType = gGeoTempState.type;\n        gCurrAnimEnabled = gGeoTempState.enabled;\n        gCurrAnimFrame = gGeoTempState.frame;\n        gCurrAnimTranslationMultiplier = gGeoTempState.translationMultiplier;\n        gCurrAnimAttribute = gGeoTempState.attribute;\n        gCurrAnimData = gGeoTempState.data;\n        gMatStackIndex--;\n    }\n\n    if (node->fnNode.node.children != NULL) {\n        geo_process_node_and_siblings(node->fnNode.node.children);\n    }\n}\n\n/**\n * Processes the children of the given GraphNode if it has any\n */\nvoid geo_try_process_children(struct GraphNode *node) {\n    if (node->children != NULL) {\n        geo_process_node_and_siblings(node->children);\n    }\n}\n\n/**\n * Process a generic geo node and its siblings.\n * The first argument is the start node, and all its siblings will\n * be iterated over.\n */\nvoid geo_process_node_and_siblings(struct GraphNode *firstNode) {\n    s16 iterateChildren = TRUE;\n    struct GraphNode *curGraphNode = firstNode;\n    struct GraphNode *parent = curGraphNode->parent;\n\n    // In the case of a switch node, exactly one of the children of the node is\n    // processed instead of all children like usual\n    if (parent != NULL) {\n        iterateChildren = (parent->type != GRAPH_NODE_TYPE_SWITCH_CASE);\n    }\n\n    do {\n        if (curGraphNode->flags & GRAPH_RENDER_ACTIVE) {\n            if (curGraphNode->flags & GRAPH_RENDER_CHILDREN_FIRST) {\n                geo_try_process_children(curGraphNode);\n            } else {\n                switch (curGraphNode->type) {\n                    case GRAPH_NODE_TYPE_ORTHO_PROJECTION:\n                        geo_process_ortho_projection((struct GraphNodeOrthoProjection *) curGraphNode);\n                        break;\n                    case GRAPH_NODE_TYPE_PERSPECTIVE:\n                        geo_process_perspective((struct GraphNodePerspective *) curGraphNode);\n                        break;\n                    case GRAPH_NODE_TYPE_MASTER_LIST:\n                        geo_process_master_list((struct GraphNodeMasterList *) curGraphNode);\n                        break;\n                    case GRAPH_NODE_TYPE_LEVEL_OF_DETAIL:\n                        geo_process_level_of_detail((struct GraphNodeLevelOfDetail *) curGraphNode);\n                        break;\n                    case GRAPH_NODE_TYPE_SWITCH_CASE:\n                        geo_process_switch((struct GraphNodeSwitchCase *) curGraphNode);\n                        break;\n                    case GRAPH_NODE_TYPE_CAMERA:\n                        geo_process_camera((struct GraphNodeCamera *) curGraphNode);\n                        break;\n                    case GRAPH_NODE_TYPE_TRANSLATION_ROTATION:\n                        geo_process_translation_rotation(\n                            (struct GraphNodeTranslationRotation *) curGraphNode);\n                        break;\n                    case GRAPH_NODE_TYPE_TRANSLATION:\n                        geo_process_translation((struct GraphNodeTranslation *) curGraphNode);\n                        break;\n                    case GRAPH_NODE_TYPE_ROTATION:\n                        geo_process_rotation((struct GraphNodeRotation *) curGraphNode);\n                        break;\n                    case GRAPH_NODE_TYPE_OBJECT:\n                        geo_process_object((struct Object *) curGraphNode);\n                        break;\n                    case GRAPH_NODE_TYPE_ANIMATED_PART:\n                        geo_process_animated_part((struct GraphNodeAnimatedPart *) curGraphNode);\n                        break;\n                    case GRAPH_NODE_TYPE_BILLBOARD:\n                        geo_process_billboard((struct GraphNodeBillboard *) curGraphNode);\n                        break;\n                    case GRAPH_NODE_TYPE_DISPLAY_LIST:\n                        geo_process_display_list((struct GraphNodeDisplayList *) curGraphNode);\n                        break;\n                    case GRAPH_NODE_TYPE_SCALE:\n                        geo_process_scale((struct GraphNodeScale *) curGraphNode);\n                        break;\n                    case GRAPH_NODE_TYPE_SHADOW:\n                        geo_process_shadow((struct GraphNodeShadow *) curGraphNode);\n                        break;\n                    case GRAPH_NODE_TYPE_OBJECT_PARENT:\n                        geo_process_object_parent((struct GraphNodeObjectParent *) curGraphNode);\n                        break;\n                    case GRAPH_NODE_TYPE_GENERATED_LIST:\n                        geo_process_generated_list((struct GraphNodeGenerated *) curGraphNode);\n                        break;\n                    case GRAPH_NODE_TYPE_BACKGROUND:\n                        geo_process_background((struct GraphNodeBackground *) curGraphNode);\n                        break;\n                    case GRAPH_NODE_TYPE_HELD_OBJ:\n                        geo_process_held_object((struct GraphNodeHeldObject *) curGraphNode);\n                        break;\n                    default:\n                        geo_try_process_children((struct GraphNode *) curGraphNode);\n                        break;\n                }\n            }\n        } else {\n            if (curGraphNode->type == GRAPH_NODE_TYPE_OBJECT) {\n                ((struct GraphNodeObject *) curGraphNode)->throwMatrix = NULL;\n            }\n        }\n    } while (iterateChildren && (curGraphNode = curGraphNode->next) != firstNode);\n}\n\n/**\n * Process a root node. This is the entry point for processing the scene graph.\n * The root node itself sets up the viewport, then all its children are processed\n * to set up the projection and draw display lists.\n */\nvoid geo_process_root(struct GraphNodeRoot *node, Vp *b, Vp *c, s32 clearColor) {\n    UNUSED u8 filler[4];\n\n    if (node->node.flags & GRAPH_RENDER_ACTIVE) {\n        Mtx *initialMatrix;\n        Vp *viewport = alloc_display_list(sizeof(*viewport));\n\n        gDisplayListHeap = alloc_only_pool_init(main_pool_available() - sizeof(struct AllocOnlyPool),\n                                                MEMORY_POOL_LEFT);\n        initialMatrix = alloc_display_list(sizeof(*initialMatrix));\n        gMatStackIndex = 0;\n        gCurrAnimType = 0;\n        vec3s_set(viewport->vp.vtrans, node->x * 4, node->y * 4, 511);\n        vec3s_set(viewport->vp.vscale, node->width * 4, node->height * 4, 511);\n        if (b != NULL) {\n            clear_framebuffer(clearColor);\n            make_viewport_clip_rect(b);\n            *viewport = *b;\n        }\n\n        else if (c != NULL) {\n            clear_framebuffer(clearColor);\n            make_viewport_clip_rect(c);\n        }\n\n        mtxf_identity(gMatStack[gMatStackIndex]);\n        mtxf_to_mtx(initialMatrix, gMatStack[gMatStackIndex]);\n        gMatStackFixed[gMatStackIndex] = initialMatrix;\n        gSPViewport(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(viewport));\n        gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(gMatStackFixed[gMatStackIndex]),\n                  G_MTX_MODELVIEW | G_MTX_LOAD | G_MTX_NOPUSH);\n        gCurGraphNodeRoot = node;\n        if (node->node.children != NULL) {\n            geo_process_node_and_siblings(node->node.children);\n        }\n        gCurGraphNodeRoot = NULL;\n        if (gShowDebugText) {\n            print_text_fmt_int(180, 36, \"MEM %d\",\n                               gDisplayListHeap->totalSpace - gDisplayListHeap->usedSpace);\n        }\n        main_pool_free(gDisplayListHeap);\n    }\n}\n"
  },
  {
    "path": "src/game/rendering_graph_node.h",
    "content": "#ifndef RENDERING_GRAPH_NODE_H\n#define RENDERING_GRAPH_NODE_H\n\n#include <PR/ultratypes.h>\n\n#include \"engine/graph_node.h\"\n\nextern struct GraphNodeRoot *gCurGraphNodeRoot;\nextern struct GraphNodeMasterList *gCurGraphNodeMasterList;\nextern struct GraphNodePerspective *gCurGraphNodeCamFrustum;\nextern struct GraphNodeCamera *gCurGraphNodeCamera;\nextern struct GraphNodeObject *gCurGraphNodeObject;\nextern struct GraphNodeHeldObject *gCurGraphNodeHeldObject;\nextern u16 gAreaUpdateCounter;\n\n// after processing an object, the type is reset to this\n#define ANIM_TYPE_NONE                  0\n\n// Not all parts have full animation: to save space, some animations only\n// have xz, y, or no translation at all. All animations have rotations though\n#define ANIM_TYPE_TRANSLATION           1\n#define ANIM_TYPE_VERTICAL_TRANSLATION  2\n#define ANIM_TYPE_LATERAL_TRANSLATION   3\n#define ANIM_TYPE_NO_TRANSLATION        4\n\n// Every animation includes rotation, after processing any of the above\n// translation types the type is set to this\n#define ANIM_TYPE_ROTATION              5\n\nvoid geo_process_node_and_siblings(struct GraphNode *firstNode);\nvoid geo_process_root(struct GraphNodeRoot *node, Vp *b, Vp *c, s32 clearColor);\n\n#endif // RENDERING_GRAPH_NODE_H\n"
  },
  {
    "path": "src/game/rumble_init.c",
    "content": "#include \"config.h\"\n\n#if ENABLE_RUMBLE\n\n#include <ultra64.h>\n#include <PR/os.h>\n#include \"macros.h\"\n\n#include \"buffers/buffers.h\"\n#include \"main.h\"\n#include \"rumble_init.h\"\n\nFORCE_BSS OSThread gRumblePakThread;\n\nFORCE_BSS OSPfs gRumblePakPfs;\n\nFORCE_BSS OSMesg gRumblePakSchedulerMesgBuf;\nFORCE_BSS OSMesgQueue gRumblePakSchedulerMesgQueue;\nFORCE_BSS OSMesg gRumbleThreadVIMesgBuf;\nFORCE_BSS OSMesgQueue gRumbleThreadVIMesgQueue;\n\nFORCE_BSS struct RumbleData gRumbleDataQueue[3];\nFORCE_BSS struct StructSH8031D9B0 gCurrRumbleSettings;\n\ns32 sRumblePakThreadActive = FALSE;\ns32 sRumblePakActive = FALSE;\ns32 sRumblePakErrorCount = 0;\ns32 gRumblePakTimer = 0;\n\nvoid init_rumble_pak_scheduler_queue(void) {\n    osCreateMesgQueue(&gRumblePakSchedulerMesgQueue, &gRumblePakSchedulerMesgBuf, 1);\n    osSendMesg(&gRumblePakSchedulerMesgQueue, (OSMesg) 0, OS_MESG_NOBLOCK);\n}\n\nvoid block_until_rumble_pak_free(void) {\n    OSMesg msg;\n    osRecvMesg(&gRumblePakSchedulerMesgQueue, &msg, OS_MESG_BLOCK);\n}\n\nvoid release_rumble_pak_control(void) {\n    osSendMesg(&gRumblePakSchedulerMesgQueue, (OSMesg) 0, OS_MESG_NOBLOCK);\n}\n\nstatic void start_rumble(void) {\n    if (!sRumblePakActive) {\n        return;\n    }\n\n    block_until_rumble_pak_free();\n\n#ifdef VERSION_CN\n    if (!__osMotorAccess(&gRumblePakPfs, MOTOR_START)) {\n#else\n    if (!osMotorStart(&gRumblePakPfs)) {\n#endif\n        sRumblePakErrorCount = 0;\n    } else {\n        sRumblePakErrorCount++;\n    }\n\n    release_rumble_pak_control();\n}\n\nstatic void stop_rumble(void) {\n    if (!sRumblePakActive) {\n        return;\n    }\n\n    block_until_rumble_pak_free();\n\n#ifdef VERSION_CN\n    if (!__osMotorAccess(&gRumblePakPfs, MOTOR_STOP)) {\n#else\n    if (!osMotorStop(&gRumblePakPfs)) {\n#endif\n        sRumblePakErrorCount = 0;\n    } else {\n        sRumblePakErrorCount++;\n    }\n\n    release_rumble_pak_control();\n}\n\nstatic void update_rumble_pak(void) {\n    if (gResetTimer > 0) {\n        stop_rumble();\n        return;\n    }\n\n    if (gCurrRumbleSettings.unk08 > 0) {\n        gCurrRumbleSettings.unk08--;\n        start_rumble();\n    } else if (gCurrRumbleSettings.unk04 > 0) {\n        gCurrRumbleSettings.unk04--;\n\n        gCurrRumbleSettings.unk02 -= gCurrRumbleSettings.unk0E;\n        if (gCurrRumbleSettings.unk02 < 0) {\n            gCurrRumbleSettings.unk02 = 0;\n        }\n\n        if (gCurrRumbleSettings.unk00 == 1) {\n            start_rumble();\n        } else if (gCurrRumbleSettings.unk06 >= 0x100) {\n            gCurrRumbleSettings.unk06 -= 0x100;\n            start_rumble();\n        } else {\n            gCurrRumbleSettings.unk06 +=\n                ((gCurrRumbleSettings.unk02 * gCurrRumbleSettings.unk02 * gCurrRumbleSettings.unk02) / (1 << 9)) + 4;\n\n            stop_rumble();\n        }\n    } else {\n        gCurrRumbleSettings.unk04 = 0;\n\n        if (gCurrRumbleSettings.unk0A >= 5) {\n            start_rumble();\n        } else if ((gCurrRumbleSettings.unk0A >= 2) && (gNumVblanks % gCurrRumbleSettings.unk0C == 0)) {\n            start_rumble();\n        } else {\n            stop_rumble();\n        }\n    }\n\n    if (gCurrRumbleSettings.unk0A > 0) {\n        gCurrRumbleSettings.unk0A--;\n    }\n}\n\nstatic void update_rumble_data_queue(void) {\n    if (gRumbleDataQueue[0].unk00) {\n        gCurrRumbleSettings.unk06 = 0;\n        gCurrRumbleSettings.unk08 = 4;\n        gCurrRumbleSettings.unk00 = gRumbleDataQueue[0].unk00;\n        gCurrRumbleSettings.unk04 = gRumbleDataQueue[0].unk02;\n        gCurrRumbleSettings.unk02 = gRumbleDataQueue[0].unk01;\n        gCurrRumbleSettings.unk0E = gRumbleDataQueue[0].unk04;\n    }\n\n    gRumbleDataQueue[0] = gRumbleDataQueue[1];\n    gRumbleDataQueue[1] = gRumbleDataQueue[2];\n\n    gRumbleDataQueue[2].unk00 = 0;\n}\n\nvoid queue_rumble_data(s16 a0, s16 a1) {\n    if (gCurrDemoInput != NULL) {\n        return;\n    }\n\n    if (a1 > 70) {\n        gRumbleDataQueue[2].unk00 = 1;\n    } else {\n        gRumbleDataQueue[2].unk00 = 2;\n    }\n\n    gRumbleDataQueue[2].unk01 = a1;\n    gRumbleDataQueue[2].unk02 = a0;\n    gRumbleDataQueue[2].unk04 = 0;\n}\n\nvoid func_sh_8024C89C(s16 a0) {\n    gRumbleDataQueue[2].unk04 = a0;\n}\n\nu8 is_rumble_finished_and_queue_empty(void) {\n    if (gCurrRumbleSettings.unk08 + gCurrRumbleSettings.unk04 >= 4) {\n        return FALSE;\n    }\n\n    if (gRumbleDataQueue[0].unk00 != 0) {\n        return FALSE;\n    }\n\n    if (gRumbleDataQueue[1].unk00 != 0) {\n        return FALSE;\n    }\n\n    if (gRumbleDataQueue[2].unk00 != 0) {\n        return FALSE;\n    }\n\n    return TRUE;\n}\n\nvoid reset_rumble_timers(void) {\n    if (gCurrDemoInput != NULL) {\n        return;\n    }\n\n    if (gCurrRumbleSettings.unk0A == 0) {\n        gCurrRumbleSettings.unk0A = 7;\n    }\n\n    if (gCurrRumbleSettings.unk0A < 4) {\n        gCurrRumbleSettings.unk0A = 4;\n    }\n\n    gCurrRumbleSettings.unk0C = 7;\n}\n\nvoid reset_rumble_timers_2(s32 a0) {\n    if (gCurrDemoInput != NULL) {\n        return;\n    }\n\n    if (gCurrRumbleSettings.unk0A == 0) {\n        gCurrRumbleSettings.unk0A = 7;\n    }\n\n    if (gCurrRumbleSettings.unk0A < 4) {\n        gCurrRumbleSettings.unk0A = 4;\n    }\n\n    if (a0 == 4) {\n        gCurrRumbleSettings.unk0C = 1;\n    }\n\n    if (a0 == 3) {\n        gCurrRumbleSettings.unk0C = 2;\n    }\n\n    if (a0 == 2) {\n        gCurrRumbleSettings.unk0C = 3;\n    }\n\n    if (a0 == 1) {\n        gCurrRumbleSettings.unk0C = 4;\n    }\n\n    if (a0 == 0) {\n        gCurrRumbleSettings.unk0C = 5;\n    }\n}\n\nvoid func_sh_8024CA04(void) {\n    if (gCurrDemoInput != NULL) {\n        return;\n    }\n\n    gCurrRumbleSettings.unk0A = 4;\n    gCurrRumbleSettings.unk0C = 4;\n}\n\nstatic void thread6_rumble_loop(UNUSED void *a0) {\n    OSMesg msg;\n\n    CN_DEBUG_PRINTF((\"start motor thread\\n\"));\n\n    cancel_rumble();\n    sRumblePakThreadActive = TRUE;\n\n    CN_DEBUG_PRINTF((\"go motor thread\\n\"));\n\n    while (TRUE) {\n        // Block until VI\n        osRecvMesg(&gRumbleThreadVIMesgQueue, &msg, OS_MESG_BLOCK);\n\n        update_rumble_data_queue();\n        update_rumble_pak();\n\n        if (sRumblePakActive) {\n            if (sRumblePakErrorCount >= 30) {\n                sRumblePakActive = FALSE;\n            }\n        } else if (gNumVblanks % 60 == 0) {\n            sRumblePakActive = osMotorInit(&gSIEventMesgQueue, &gRumblePakPfs, gPlayer1Controller->port) == 0;\n            sRumblePakErrorCount = 0;\n        }\n\n        if (gRumblePakTimer > 0) {\n            gRumblePakTimer--;\n        }\n    }\n}\n\nvoid cancel_rumble(void) {\n    sRumblePakActive = osMotorInit(&gSIEventMesgQueue, &gRumblePakPfs, gPlayer1Controller->port) == 0;\n\n    if (sRumblePakActive) {\n#ifdef VERSION_CN\n        __osMotorAccess(&gRumblePakPfs, MOTOR_STOP);\n#else\n        osMotorStop(&gRumblePakPfs);\n#endif\n    }\n\n    gRumbleDataQueue[0].unk00 = 0;\n    gRumbleDataQueue[1].unk00 = 0;\n    gRumbleDataQueue[2].unk00 = 0;\n\n    gCurrRumbleSettings.unk04 = 0;\n    gCurrRumbleSettings.unk0A = 0;\n\n    gRumblePakTimer = 0;\n}\n\nvoid create_thread_6(void) {\n    osCreateMesgQueue(&gRumbleThreadVIMesgQueue, &gRumbleThreadVIMesgBuf, 1);\n    osCreateThread(&gRumblePakThread, 6, thread6_rumble_loop, NULL, gThread6Stack + 0x2000, 30);\n    osStartThread(&gRumblePakThread);\n}\n\nvoid rumble_thread_update_vi(void) {\n    if (!sRumblePakThreadActive) {\n        return;\n    }\n\n#pragma GCC diagnostic push\n#pragma GCC diagnostic ignored \"-Wmultichar\"\n    osSendMesg(&gRumbleThreadVIMesgQueue, (OSMesg) 'VRTC', OS_MESG_NOBLOCK);\n#pragma GCC diagnostic pop\n}\n\n#endif\n"
  },
  {
    "path": "src/game/rumble_init.h",
    "content": "#ifndef RUMBLE_INIT_H\n#define RUMBLE_INIT_H\n\n#include \"config.h\"\n\n#if ENABLE_RUMBLE\n\nstruct RumbleData {\n    u8 unk00;\n    u8 unk01;\n    s16 unk02;\n    s16 unk04;\n};\n\nstruct StructSH8031D9B0 {\n    s16 unk00;\n    s16 unk02;\n    s16 unk04;\n    s16 unk06;\n    s16 unk08;\n    s16 unk0A;\n    s16 unk0C;\n    s16 unk0E;\n};\n\nextern OSThread gRumblePakThread;\n\nextern OSPfs gRumblePakPfs;\n\nextern OSMesg gRumblePakSchedulerMesgBuf;\nextern OSMesgQueue gRumblePakSchedulerMesgQueue;\nextern OSMesg gRumbleThreadVIMesgBuf;\nextern OSMesgQueue gRumbleThreadVIMesgQueue;\n\nextern struct RumbleData gRumbleDataQueue[3];\nextern struct StructSH8031D9B0 gCurrRumbleSettings;\n\nextern s32 gRumblePakTimer;\n\nvoid init_rumble_pak_scheduler_queue(void);\nvoid block_until_rumble_pak_free(void);\nvoid release_rumble_pak_control(void);\nvoid queue_rumble_data(s16 a0, s16 a1);\nvoid func_sh_8024C89C(s16 a0);\nu8 is_rumble_finished_and_queue_empty(void);\nvoid reset_rumble_timers(void);\nvoid reset_rumble_timers_2(s32 a0);\nvoid func_sh_8024CA04(void);\nvoid cancel_rumble(void);\nvoid create_thread_6(void);\nvoid rumble_thread_update_vi(void);\n\n#endif // ENABLE_RUMBLE\n\n#endif // RUMBLE_INIT_H\n"
  },
  {
    "path": "src/game/save_file.c",
    "content": "#include <ultra64.h>\n\n#include \"sm64.h\"\n#include \"game_init.h\"\n#include \"main.h\"\n#include \"engine/math_util.h\"\n#include \"area.h\"\n#include \"level_update.h\"\n#include \"save_file.h\"\n#include \"sound_init.h\"\n#include \"level_table.h\"\n#include \"course_table.h\"\n#include \"rumble_init.h\"\n\n#define MENU_DATA_MAGIC 0x4849\n#define SAVE_FILE_MAGIC 0x4441\n\nSTATIC_ASSERT(sizeof(struct SaveBuffer) == EEPROM_SIZE, \"eeprom buffer size must match\");\n\nextern struct SaveBuffer gSaveBuffer;\n\nstruct WarpCheckpoint gWarpCheckpoint;\n\ns8 gMainMenuDataModified;\ns8 gSaveFileModified;\n\nu8 gLastCompletedCourseNum = COURSE_NONE;\nu8 gLastCompletedStarNum = 0;\ns8 sUnusedGotGlobalCoinHiScore = FALSE;\nu8 gGotFileCoinHiScore = FALSE;\nu8 gCurrCourseStarFlags = 0;\n\nu8 gSpecialTripleJump = FALSE;\n\n#define STUB_LEVEL(_0, _1, courseenum, _3, _4, _5, _6, _7, _8) courseenum,\n#define DEFINE_LEVEL(_0, _1, courseenum, _3, _4, _5, _6, _7, _8, _9, _10) courseenum,\n\ns8 gLevelToCourseNumTable[] = {\n    #include \"levels/level_defines.h\"\n};\n#undef STUB_LEVEL\n#undef DEFINE_LEVEL\n\nSTATIC_ASSERT(ARRAY_COUNT(gLevelToCourseNumTable) == LEVEL_COUNT - 1,\n              \"change this array if you are adding levels\");\n\n// This was probably used to set progress to 100% for debugging, but\n// it was removed from the release ROM.\nstatic void stub_save_file_1(void) {\n    UNUSED u8 filler[4];\n}\n\n/**\n * Read from EEPROM to a given address.\n * The EEPROM address is computed using the offset of the destination address from gSaveBuffer.\n * Try at most 4 times, and return 0 on success. On failure, return the status returned from\n * osEepromLongRead. It also returns 0 if EEPROM isn't loaded correctly in the system.\n */\nstatic s32 read_eeprom_data(void *buffer, s32 size) {\n    s32 status = 0;\n\n    if (gEepromProbe != 0) {\n        s32 triesLeft = 4;\n        u32 offset = (u32)((u8 *) buffer - (u8 *) &gSaveBuffer) / 8;\n\n        do {\n#if ENABLE_RUMBLE\n            block_until_rumble_pak_free();\n#endif\n            triesLeft--;\n            status = osEepromLongRead(&gSIEventMesgQueue, offset, buffer, size);\n#if ENABLE_RUMBLE\n            release_rumble_pak_control();\n#endif\n        } while (triesLeft > 0 && status != 0);\n    }\n\n    return status;\n}\n\n/**\n * Write data to EEPROM.\n * The EEPROM address is computed using the offset of the source address from gSaveBuffer.\n * Try at most 4 times, and return 0 on success. On failure, return the status returned from\n * osEepromLongWrite. Unlike read_eeprom_data, return 1 if EEPROM isn't loaded.\n */\nstatic s32 write_eeprom_data(void *buffer, s32 size) {\n    s32 status = 1;\n\n    if (gEepromProbe != 0) {\n        s32 triesLeft = 4;\n        u32 offset = (u32)((u8 *) buffer - (u8 *) &gSaveBuffer) >> 3;\n\n        do {\n#if ENABLE_RUMBLE\n            block_until_rumble_pak_free();\n#endif\n            triesLeft--;\n            status = osEepromLongWrite(&gSIEventMesgQueue, offset, buffer, size);\n#if ENABLE_RUMBLE\n            release_rumble_pak_control();\n#endif\n        } while (triesLeft > 0 && status != 0);\n    }\n\n    return status;\n}\n\n/**\n * Sum the bytes in data to data + size - 2. The last two bytes are ignored\n * because that is where the checksum is stored.\n */\nstatic u16 calc_checksum(u8 *data, s32 size) {\n    u16 chksum = 0;\n\n    while (size-- > 2) {\n        chksum += *data++;\n    }\n    return chksum;\n}\n\n/**\n * Verify the signature at the end of the block to check if the data is valid.\n */\nstatic s32 verify_save_block_signature(void *buffer, s32 size, u16 magic) {\n    struct SaveBlockSignature *sig = (struct SaveBlockSignature *) ((size - 4) + (u8 *) buffer);\n\n    if (sig->magic != magic) {\n        return FALSE;\n    }\n    if (sig->chksum != calc_checksum(buffer, size)) {\n        return FALSE;\n    }\n    return TRUE;\n}\n\n/**\n * Write a signature at the end of the block to make sure the data is valid\n */\nstatic void add_save_block_signature(void *buffer, s32 size, u16 magic) {\n    struct SaveBlockSignature *sig = (struct SaveBlockSignature *) ((size - 4) + (u8 *) buffer);\n\n    sig->magic = magic;\n    sig->chksum = calc_checksum(buffer, size);\n}\n\n/**\n * Copy main menu data from one backup slot to the other slot.\n */\nstatic void restore_main_menu_data(s32 srcSlot) {\n    s32 destSlot = srcSlot ^ 1;\n\n    // Compute checksum on source data\n    add_save_block_signature(&gSaveBuffer.menuData[srcSlot], sizeof(gSaveBuffer.menuData[srcSlot]), MENU_DATA_MAGIC);\n\n    // Copy source data to destination\n    bcopy(&gSaveBuffer.menuData[srcSlot], &gSaveBuffer.menuData[destSlot], sizeof(gSaveBuffer.menuData[destSlot]));\n\n    // Write destination data to EEPROM\n    write_eeprom_data(&gSaveBuffer.menuData[destSlot], sizeof(gSaveBuffer.menuData[destSlot]));\n}\n\nstatic void save_main_menu_data(void) {\n    if (gMainMenuDataModified) {\n        // Compute checksum\n        add_save_block_signature(&gSaveBuffer.menuData[0], sizeof(gSaveBuffer.menuData[0]), MENU_DATA_MAGIC);\n\n        // Back up data\n        bcopy(&gSaveBuffer.menuData[0], &gSaveBuffer.menuData[1], sizeof(gSaveBuffer.menuData[1]));\n\n        // Write to EEPROM\n        write_eeprom_data(gSaveBuffer.menuData, sizeof(gSaveBuffer.menuData));\n\n        gMainMenuDataModified = FALSE;\n    }\n}\n\nstatic void wipe_main_menu_data(void) {\n    bzero(&gSaveBuffer.menuData[0], sizeof(gSaveBuffer.menuData[0]));\n\n    // Set score ages for all courses to 3, 2, 1, and 0, respectively.\n    gSaveBuffer.menuData[0].coinScoreAges[0] = 0x3FFFFFFF;\n    gSaveBuffer.menuData[0].coinScoreAges[1] = 0x2AAAAAAA;\n    gSaveBuffer.menuData[0].coinScoreAges[2] = 0x15555555;\n\n    gMainMenuDataModified = TRUE;\n    save_main_menu_data();\n}\n\nstatic s32 get_coin_score_age(s32 fileIndex, s32 courseIndex) {\n    return (gSaveBuffer.menuData[0].coinScoreAges[fileIndex] >> (2 * courseIndex)) & 0x3;\n}\n\nstatic void set_coin_score_age(s32 fileIndex, s32 courseIndex, s32 age) {\n    s32 mask = 0x3 << (2 * courseIndex);\n\n    gSaveBuffer.menuData[0].coinScoreAges[fileIndex] &= ~mask;\n    gSaveBuffer.menuData[0].coinScoreAges[fileIndex] |= age << (2 * courseIndex);\n}\n\n/**\n * Mark a coin score for a save file as the newest out of all save files.\n */\nstatic void touch_coin_score_age(s32 fileIndex, s32 courseIndex) {\n    s32 i;\n    u32 age;\n    u32 currentAge = get_coin_score_age(fileIndex, courseIndex);\n\n    if (currentAge != 0) {\n        for (i = 0; i < NUM_SAVE_FILES; i++) {\n            age = get_coin_score_age(i, courseIndex);\n            if (age < currentAge) {\n                set_coin_score_age(i, courseIndex, age + 1);\n            }\n        }\n\n        set_coin_score_age(fileIndex, courseIndex, 0);\n        gMainMenuDataModified = TRUE;\n    }\n}\n\n/**\n * Mark all coin scores for a save file as new.\n */\nstatic void touch_high_score_ages(s32 fileIndex) {\n    s32 i;\n\n    for (i = COURSE_NUM_TO_INDEX(COURSE_MIN); i <= COURSE_NUM_TO_INDEX(COURSE_STAGES_MAX); i++) {\n        touch_coin_score_age(fileIndex, i);\n    }\n}\n\n/**\n * Copy save file data from one backup slot to the other slot.\n */\nstatic void restore_save_file_data(s32 fileIndex, s32 srcSlot) {\n    s32 destSlot = srcSlot ^ 1;\n\n    // Compute checksum on source data\n    add_save_block_signature(&gSaveBuffer.files[fileIndex][srcSlot],\n                             sizeof(gSaveBuffer.files[fileIndex][srcSlot]), SAVE_FILE_MAGIC);\n\n    // Copy source data to destination slot\n    bcopy(&gSaveBuffer.files[fileIndex][srcSlot], &gSaveBuffer.files[fileIndex][destSlot],\n          sizeof(gSaveBuffer.files[fileIndex][destSlot]));\n\n    // Write destination data to EEPROM\n    write_eeprom_data(&gSaveBuffer.files[fileIndex][destSlot],\n                      sizeof(gSaveBuffer.files[fileIndex][destSlot]));\n}\n\nvoid save_file_do_save(s32 fileIndex) {\n    if (gSaveFileModified) {\n        // Compute checksum\n        add_save_block_signature(&gSaveBuffer.files[fileIndex][0],\n                                 sizeof(gSaveBuffer.files[fileIndex][0]), SAVE_FILE_MAGIC);\n\n        // Copy to backup slot\n        bcopy(&gSaveBuffer.files[fileIndex][0], &gSaveBuffer.files[fileIndex][1],\n              sizeof(gSaveBuffer.files[fileIndex][1]));\n\n        // Write to EEPROM\n        write_eeprom_data(gSaveBuffer.files[fileIndex], sizeof(gSaveBuffer.files[fileIndex]));\n\n        gSaveFileModified = FALSE;\n    }\n\n    save_main_menu_data();\n}\n\nvoid save_file_erase(s32 fileIndex) {\n    touch_high_score_ages(fileIndex);\n    bzero(&gSaveBuffer.files[fileIndex][0], sizeof(gSaveBuffer.files[fileIndex][0]));\n\n    gSaveFileModified = TRUE;\n    save_file_do_save(fileIndex);\n}\n\n//! Needs to be s32 to match on -O2, despite no return value.\nBAD_RETURN(s32) save_file_copy(s32 srcFileIndex, s32 destFileIndex) {\n    UNUSED u8 filler[4];\n\n    touch_high_score_ages(destFileIndex);\n    bcopy(&gSaveBuffer.files[srcFileIndex][0], &gSaveBuffer.files[destFileIndex][0],\n          sizeof(gSaveBuffer.files[destFileIndex][0]));\n\n    gSaveFileModified = TRUE;\n    save_file_do_save(destFileIndex);\n}\n\nvoid save_file_load_all(void) {\n    s32 file;\n    s32 validSlots;\n\n    gMainMenuDataModified = FALSE;\n    gSaveFileModified = FALSE;\n\n    bzero(&gSaveBuffer, sizeof(gSaveBuffer));\n    read_eeprom_data(&gSaveBuffer, sizeof(gSaveBuffer));\n\n    // Verify the main menu data and create a backup copy if only one of the slots is valid.\n    validSlots = verify_save_block_signature(&gSaveBuffer.menuData[0], sizeof(gSaveBuffer.menuData[0]), MENU_DATA_MAGIC);\n    validSlots |= verify_save_block_signature(&gSaveBuffer.menuData[1], sizeof(gSaveBuffer.menuData[1]),MENU_DATA_MAGIC) << 1;\n    switch (validSlots) {\n        case 0: // Neither copy is correct\n            wipe_main_menu_data();\n            break;\n        case 1: // Slot 0 is correct and slot 1 is incorrect\n            restore_main_menu_data(0);\n            break;\n        case 2: // Slot 1 is correct and slot 0 is incorrect\n            restore_main_menu_data(1);\n            break;\n    }\n\n    for (file = 0; file < NUM_SAVE_FILES; file++) {\n        // Verify the save file and create a backup copy if only one of the slots is valid.\n        validSlots = verify_save_block_signature(&gSaveBuffer.files[file][0], sizeof(gSaveBuffer.files[file][0]), SAVE_FILE_MAGIC);\n        validSlots |= verify_save_block_signature(&gSaveBuffer.files[file][1], sizeof(gSaveBuffer.files[file][1]), SAVE_FILE_MAGIC) << 1;\n        switch (validSlots) {\n            case 0: // Neither copy is correct\n                save_file_erase(file);\n                break;\n            case 1: // Slot 0 is correct and slot 1 is incorrect\n                restore_save_file_data(file, 0);\n                break;\n            case 2: // Slot 1 is correct and slot 0 is incorrect\n                restore_save_file_data(file, 1);\n                break;\n        }\n    }\n\n    stub_save_file_1();\n}\n\n/**\n * Reload the current save file from its backup copy, which is effectively a\n * a cached copy of what has been written to EEPROM.\n * This is used after getting a game over.\n */\nvoid save_file_reload(void) {\n    // Copy save file data from backup\n    bcopy(&gSaveBuffer.files[gCurrSaveFileNum - 1][1], &gSaveBuffer.files[gCurrSaveFileNum - 1][0],\n          sizeof(gSaveBuffer.files[gCurrSaveFileNum - 1][0]));\n\n    // Copy main menu data from backup\n    bcopy(&gSaveBuffer.menuData[1], &gSaveBuffer.menuData[0], sizeof(gSaveBuffer.menuData[0]));\n\n    gMainMenuDataModified = FALSE;\n    gSaveFileModified = FALSE;\n}\n\n/**\n * Update the current save file after collecting a star or a key.\n * If coin score is greater than the current high score, update it.\n */\nvoid save_file_collect_star_or_key(s16 coinScore, s16 starIndex) {\n    s32 fileIndex = gCurrSaveFileNum - 1;\n    s32 courseIndex = COURSE_NUM_TO_INDEX(gCurrCourseNum);\n\n    s32 starFlag = 1 << starIndex;\n    UNUSED s32 flags = save_file_get_flags();\n\n    gLastCompletedCourseNum = courseIndex + 1;\n    gLastCompletedStarNum = starIndex + 1;\n    sUnusedGotGlobalCoinHiScore = FALSE;\n    gGotFileCoinHiScore = FALSE;\n\n    if (courseIndex >= COURSE_NUM_TO_INDEX(COURSE_MIN)\n        && courseIndex <= COURSE_NUM_TO_INDEX(COURSE_STAGES_MAX)) {\n        //! Compares the coin score as a 16 bit value, but only writes the 8 bit\n        // truncation. This can allow a high score to decrease.\n\n        if (coinScore > ((u16) save_file_get_max_coin_score(courseIndex) & 0xFFFF)) {\n            sUnusedGotGlobalCoinHiScore = TRUE;\n        }\n\n        if (coinScore > save_file_get_course_coin_score(fileIndex, courseIndex)) {\n            gSaveBuffer.files[fileIndex][0].courseCoinScores[courseIndex] = coinScore;\n            touch_coin_score_age(fileIndex, courseIndex);\n\n            gGotFileCoinHiScore = TRUE;\n            gSaveFileModified = TRUE;\n        }\n    }\n\n    switch (gCurrLevelNum) {\n        case LEVEL_BOWSER_1:\n            if (!(save_file_get_flags() & (SAVE_FLAG_HAVE_KEY_1 | SAVE_FLAG_UNLOCKED_BASEMENT_DOOR))) {\n                save_file_set_flags(SAVE_FLAG_HAVE_KEY_1);\n            }\n            break;\n\n        case LEVEL_BOWSER_2:\n            if (!(save_file_get_flags() & (SAVE_FLAG_HAVE_KEY_2 | SAVE_FLAG_UNLOCKED_UPSTAIRS_DOOR))) {\n                save_file_set_flags(SAVE_FLAG_HAVE_KEY_2);\n            }\n            break;\n\n        case LEVEL_BOWSER_3:\n            break;\n\n        default:\n            if (!(save_file_get_star_flags(fileIndex, courseIndex) & starFlag)) {\n                save_file_set_star_flags(fileIndex, courseIndex, starFlag);\n            }\n            break;\n    }\n}\n\ns32 save_file_exists(s32 fileIndex) {\n    return (gSaveBuffer.files[fileIndex][0].flags & SAVE_FLAG_FILE_EXISTS) != 0;\n}\n\n/**\n * Get the maximum coin score across all files for a course. The lower 16 bits\n * of the returned value are the score, and the upper 16 bits are the file number\n * of the save file with this score.\n */\nu32 save_file_get_max_coin_score(s32 courseIndex) {\n    s32 fileIndex;\n    s32 maxCoinScore = -1;\n    s32 maxScoreAge = -1;\n    s32 maxScoreFileNum = 0;\n\n    for (fileIndex = 0; fileIndex < NUM_SAVE_FILES; fileIndex++) {\n        if (save_file_get_star_flags(fileIndex, courseIndex) != 0) {\n            s32 coinScore = save_file_get_course_coin_score(fileIndex, courseIndex);\n            s32 scoreAge = get_coin_score_age(fileIndex, courseIndex);\n\n            if (coinScore > maxCoinScore || (coinScore == maxCoinScore && scoreAge > maxScoreAge)) {\n                maxCoinScore = coinScore;\n                maxScoreAge = scoreAge;\n                maxScoreFileNum = fileIndex + 1;\n            }\n        }\n    }\n    return (maxScoreFileNum << 16) + max(maxCoinScore, 0);\n}\n\ns32 save_file_get_course_star_count(s32 fileIndex, s32 courseIndex) {\n    s32 i;\n    s32 count = 0;\n    u8 flag = 1;\n    u8 starFlags = save_file_get_star_flags(fileIndex, courseIndex);\n\n    for (i = 0; i < 7; i++, flag <<= 1) {\n        if (starFlags & flag) {\n            count++;\n        }\n    }\n    return count;\n}\n\ns32 save_file_get_total_star_count(s32 fileIndex, s32 minCourse, s32 maxCourse) {\n    s32 count = 0;\n\n    // Get standard course star count.\n    for (; minCourse <= maxCourse; minCourse++) {\n        count += save_file_get_course_star_count(fileIndex, minCourse);\n    }\n\n    // Add castle secret star count.\n    return save_file_get_course_star_count(fileIndex, COURSE_NUM_TO_INDEX(COURSE_NONE)) + count;\n}\n\nvoid save_file_set_flags(u32 flags) {\n    gSaveBuffer.files[gCurrSaveFileNum - 1][0].flags |= (flags | SAVE_FLAG_FILE_EXISTS);\n    gSaveFileModified = TRUE;\n}\n\nvoid save_file_clear_flags(u32 flags) {\n    gSaveBuffer.files[gCurrSaveFileNum - 1][0].flags &= ~flags;\n    gSaveBuffer.files[gCurrSaveFileNum - 1][0].flags |= SAVE_FLAG_FILE_EXISTS;\n    gSaveFileModified = TRUE;\n}\n\nu32 save_file_get_flags(void) {\n    if (gCurrCreditsEntry != NULL || gCurrDemoInput != NULL) {\n        return 0;\n    }\n    return gSaveBuffer.files[gCurrSaveFileNum - 1][0].flags;\n}\n\n/**\n * Return the bitset of obtained stars in the specified course.\n * If course is COURSE_NONE, return the bitset of obtained castle secret stars.\n */\nu32 save_file_get_star_flags(s32 fileIndex, s32 courseIndex) {\n    u32 starFlags;\n\n    if (courseIndex == COURSE_NUM_TO_INDEX(COURSE_NONE)) {\n        starFlags = SAVE_FLAG_TO_STAR_FLAG(gSaveBuffer.files[fileIndex][0].flags);\n    } else {\n        starFlags = gSaveBuffer.files[fileIndex][0].courseStars[courseIndex] & 0x7F;\n    }\n\n    return starFlags;\n}\n\n/**\n * Add to the bitset of obtained stars in the specified course.\n * If course is COURSE_NONE, add to the bitset of obtained castle secret stars.\n */\nvoid save_file_set_star_flags(s32 fileIndex, s32 courseIndex, u32 starFlags) {\n    if (courseIndex == COURSE_NUM_TO_INDEX(COURSE_NONE)) {\n        gSaveBuffer.files[fileIndex][0].flags |= STAR_FLAG_TO_SAVE_FLAG(starFlags);\n    } else {\n        gSaveBuffer.files[fileIndex][0].courseStars[courseIndex] |= starFlags;\n    }\n\n    gSaveBuffer.files[fileIndex][0].flags |= SAVE_FLAG_FILE_EXISTS;\n    gSaveFileModified = TRUE;\n}\n\ns32 save_file_get_course_coin_score(s32 fileIndex, s32 courseIndex) {\n    return gSaveBuffer.files[fileIndex][0].courseCoinScores[courseIndex];\n}\n\n/**\n * Return TRUE if the cannon is unlocked in the current course.\n */\ns32 save_file_is_cannon_unlocked(void) {\n    return (gSaveBuffer.files[gCurrSaveFileNum - 1][0].courseStars[gCurrCourseNum] & (1 << 7)) != 0;\n}\n\n/**\n * Sets the cannon status to unlocked in the current course.\n */\nvoid save_file_set_cannon_unlocked(void) {\n    gSaveBuffer.files[gCurrSaveFileNum - 1][0].courseStars[gCurrCourseNum] |= (1 << 7);\n    gSaveBuffer.files[gCurrSaveFileNum - 1][0].flags |= SAVE_FLAG_FILE_EXISTS;\n    gSaveFileModified = TRUE;\n}\n\nvoid save_file_set_cap_pos(s16 x, s16 y, s16 z) {\n    struct SaveFile *saveFile = &gSaveBuffer.files[gCurrSaveFileNum - 1][0];\n\n    saveFile->capLevel = gCurrLevelNum;\n    saveFile->capArea = gCurrAreaIndex;\n    vec3s_set(saveFile->capPos, x, y, z);\n    save_file_set_flags(SAVE_FLAG_CAP_ON_GROUND);\n}\n\ns32 save_file_get_cap_pos(Vec3s capPos) {\n    struct SaveFile *saveFile = &gSaveBuffer.files[gCurrSaveFileNum - 1][0];\n    s32 flags = save_file_get_flags();\n\n    if (saveFile->capLevel == gCurrLevelNum && saveFile->capArea == gCurrAreaIndex\n        && (flags & SAVE_FLAG_CAP_ON_GROUND)) {\n        vec3s_copy(capPos, saveFile->capPos);\n        return TRUE;\n    }\n    return FALSE;\n}\n\nvoid save_file_set_sound_mode(u16 mode) {\n    set_sound_mode(mode);\n    gSaveBuffer.menuData[0].soundMode = mode;\n\n    gMainMenuDataModified = TRUE;\n    save_main_menu_data();\n}\n\nu16 save_file_get_sound_mode(void) {\n    return gSaveBuffer.menuData[0].soundMode;\n}\n\nvoid save_file_move_cap_to_default_location(void) {\n    if (save_file_get_flags() & SAVE_FLAG_CAP_ON_GROUND) {\n        switch (gSaveBuffer.files[gCurrSaveFileNum - 1][0].capLevel) {\n            case LEVEL_SSL:\n                save_file_set_flags(SAVE_FLAG_CAP_ON_KLEPTO);\n                break;\n            case LEVEL_SL:\n                save_file_set_flags(SAVE_FLAG_CAP_ON_MR_BLIZZARD);\n                break;\n            case LEVEL_TTM:\n                save_file_set_flags(SAVE_FLAG_CAP_ON_UKIKI);\n                break;\n        }\n        save_file_clear_flags(SAVE_FLAG_CAP_ON_GROUND);\n    }\n}\n\n#ifdef VERSION_EU\nvoid eu_set_language(u16 language) {\n    gSaveBuffer.menuData[0].language = language;\n    gMainMenuDataModified = TRUE;\n    save_main_menu_data();\n}\n\nu16 eu_get_language(void) {\n    return gSaveBuffer.menuData[0].language;\n}\n#endif\n\nvoid disable_warp_checkpoint(void) {\n    // check_warp_checkpoint() checks to see if gWarpCheckpoint.courseNum != COURSE_NONE\n    gWarpCheckpoint.courseNum = COURSE_NONE;\n}\n\n/**\n * Checks the upper bit of the WarpNode->destLevel byte to see if the\n * game should set a warp checkpoint.\n */\nvoid check_if_should_set_warp_checkpoint(struct WarpNode *warpNode) {\n    if (warpNode->destLevel & 0x80) {\n        // Overwrite the warp checkpoint variables.\n        gWarpCheckpoint.actNum = gCurrActNum;\n        gWarpCheckpoint.courseNum = gCurrCourseNum;\n        gWarpCheckpoint.levelID = warpNode->destLevel & 0x7F;\n        gWarpCheckpoint.areaNum = warpNode->destArea;\n        gWarpCheckpoint.warpNode = warpNode->destNode;\n    }\n}\n\n/**\n * Checks to see if a checkpoint is properly active or not. This will\n * also update the level, area, and destination node of the input WarpNode.\n * returns TRUE if input WarpNode was updated, and FALSE if not.\n */\ns32 check_warp_checkpoint(struct WarpNode *warpNode) {\n    s16 warpCheckpointActive = FALSE;\n    s16 currCourseNum = gLevelToCourseNumTable[(warpNode->destLevel & 0x7F) - 1];\n\n    // gSavedCourseNum is only used in this function.\n    if (gWarpCheckpoint.courseNum != COURSE_NONE && gSavedCourseNum == currCourseNum\n        && gWarpCheckpoint.actNum == gCurrActNum) {\n        warpNode->destLevel = gWarpCheckpoint.levelID;\n        warpNode->destArea = gWarpCheckpoint.areaNum;\n        warpNode->destNode = gWarpCheckpoint.warpNode;\n        warpCheckpointActive = TRUE;\n    } else {\n        // Disable the warp checkpoint just in case the other 2 conditions failed?\n        gWarpCheckpoint.courseNum = COURSE_NONE;\n    }\n\n    return warpCheckpointActive;\n}\n"
  },
  {
    "path": "src/game/save_file.h",
    "content": "#ifndef SAVE_FILE_H\n#define SAVE_FILE_H\n\n#include <PR/ultratypes.h>\n\n#include \"types.h\"\n#include \"area.h\"\n\n#include \"course_table.h\"\n\n#define EEPROM_SIZE 0x200\n#define NUM_SAVE_FILES 4\n\nstruct SaveBlockSignature {\n    u16 magic;\n    u16 chksum;\n};\n\nstruct SaveFile {\n    // Location of lost cap.\n    // Note: the coordinates get set, but are never actually used, since the\n    // cap can always be found in a fixed spot within the course\n    u8 capLevel;\n    u8 capArea;\n    Vec3s capPos;\n\n    u32 flags;\n\n    // Star flags for each course.\n    // The most significant bit of the byte *following* each course is set if the\n    // cannon is open.\n    u8 courseStars[COURSE_COUNT];\n\n    u8 courseCoinScores[COURSE_STAGES_COUNT];\n\n    struct SaveBlockSignature signature;\n};\n\nenum SaveFileIndex {\n    SAVE_FILE_A,\n    SAVE_FILE_B,\n    SAVE_FILE_C,\n    SAVE_FILE_D\n};\n\nstruct MainMenuSaveData {\n    // Each save file has a 2 bit \"age\" for each course. The higher this value,\n    // the older the high score is. This is used for tie-breaking when displaying\n    // on the high score screen.\n    u32 coinScoreAges[NUM_SAVE_FILES];\n    u16 soundMode;\n\n#ifdef VERSION_EU\n    u16 language;\n#define SUBTRAHEND 8\n#else\n#define SUBTRAHEND 6\n#endif\n\n    // Pad to match the EEPROM size of 0x200 (10 bytes on JP/US, 8 bytes on EU)\n    u8 filler[EEPROM_SIZE / 2 - SUBTRAHEND - NUM_SAVE_FILES * (4 + sizeof(struct SaveFile))];\n\n    struct SaveBlockSignature signature;\n};\n\nstruct SaveBuffer {\n    // Each of the four save files has two copies. If one is bad, the other is used as a backup.\n    struct SaveFile files[NUM_SAVE_FILES][2];\n    // The main menu data has two copies. If one is bad, the other is used as a backup.\n    struct MainMenuSaveData menuData[2];\n};\n\nextern u8 gLastCompletedCourseNum;\nextern u8 gLastCompletedStarNum;\nextern s8 sUnusedGotGlobalCoinHiScore;\nextern u8 gGotFileCoinHiScore;\nextern u8 gCurrCourseStarFlags;\nextern u8 gSpecialTripleJump;\nextern s8 gLevelToCourseNumTable[];\n\n// game progress flags\n#define SAVE_FLAG_FILE_EXISTS            /* 0x00000001 */ (1 << 0)\n#define SAVE_FLAG_HAVE_WING_CAP          /* 0x00000002 */ (1 << 1)\n#define SAVE_FLAG_HAVE_METAL_CAP         /* 0x00000004 */ (1 << 2)\n#define SAVE_FLAG_HAVE_VANISH_CAP        /* 0x00000008 */ (1 << 3)\n#define SAVE_FLAG_HAVE_KEY_1             /* 0x00000010 */ (1 << 4)\n#define SAVE_FLAG_HAVE_KEY_2             /* 0x00000020 */ (1 << 5)\n#define SAVE_FLAG_UNLOCKED_BASEMENT_DOOR /* 0x00000040 */ (1 << 6)\n#define SAVE_FLAG_UNLOCKED_UPSTAIRS_DOOR /* 0x00000080 */ (1 << 7)\n#define SAVE_FLAG_DDD_MOVED_BACK         /* 0x00000100 */ (1 << 8)\n#define SAVE_FLAG_MOAT_DRAINED           /* 0x00000200 */ (1 << 9)\n#define SAVE_FLAG_UNLOCKED_PSS_DOOR      /* 0x00000400 */ (1 << 10)\n#define SAVE_FLAG_UNLOCKED_WF_DOOR       /* 0x00000800 */ (1 << 11)\n#define SAVE_FLAG_UNLOCKED_CCM_DOOR      /* 0x00001000 */ (1 << 12)\n#define SAVE_FLAG_UNLOCKED_JRB_DOOR      /* 0x00002000 */ (1 << 13)\n#define SAVE_FLAG_UNLOCKED_BITDW_DOOR    /* 0x00004000 */ (1 << 14)\n#define SAVE_FLAG_UNLOCKED_BITFS_DOOR    /* 0x00008000 */ (1 << 15)\n#define SAVE_FLAG_CAP_ON_GROUND          /* 0x00010000 */ (1 << 16)\n#define SAVE_FLAG_CAP_ON_KLEPTO          /* 0x00020000 */ (1 << 17)\n#define SAVE_FLAG_CAP_ON_UKIKI           /* 0x00040000 */ (1 << 18)\n#define SAVE_FLAG_CAP_ON_MR_BLIZZARD     /* 0x00080000 */ (1 << 19)\n#define SAVE_FLAG_UNLOCKED_50_STAR_DOOR  /* 0x00100000 */ (1 << 20)\n#define SAVE_FLAG_COLLECTED_TOAD_STAR_1  /* 0x01000000 */ (1 << 24)\n#define SAVE_FLAG_COLLECTED_TOAD_STAR_2  /* 0x02000000 */ (1 << 25)\n#define SAVE_FLAG_COLLECTED_TOAD_STAR_3  /* 0x04000000 */ (1 << 26)\n#define SAVE_FLAG_COLLECTED_MIPS_STAR_1  /* 0x08000000 */ (1 << 27)\n#define SAVE_FLAG_COLLECTED_MIPS_STAR_2  /* 0x10000000 */ (1 << 28)\n\n#define SAVE_FLAG_TO_STAR_FLAG(cmd) (((cmd) >> 24) & 0x7F)\n#define STAR_FLAG_TO_SAVE_FLAG(cmd) ((cmd) << 24)\n\n// Variable for setting a warp checkpoint.\n\n// possibly a WarpDest struct where arg is a union. TODO: Check?\nstruct WarpCheckpoint {\n    /*0x00*/ u8 actNum;\n    /*0x01*/ u8 courseNum;\n    /*0x02*/ u8 levelID;\n    /*0x03*/ u8 areaNum;\n    /*0x04*/ u8 warpNode;\n};\n\nextern struct WarpCheckpoint gWarpCheckpoint;\n\nextern s8 gMainMenuDataModified;\nextern s8 gSaveFileModified;\n\nvoid save_file_do_save(s32 fileIndex);\nvoid save_file_erase(s32 fileIndex);\nBAD_RETURN(s32) save_file_copy(s32 srcFileIndex, s32 destFileIndex);\nvoid save_file_load_all(void);\nvoid save_file_reload(void);\nvoid save_file_collect_star_or_key(s16 coinScore, s16 starIndex);\ns32 save_file_exists(s32 fileIndex);\nu32 save_file_get_max_coin_score(s32 courseIndex);\ns32 save_file_get_course_star_count(s32 fileIndex, s32 courseIndex);\ns32 save_file_get_total_star_count(s32 fileIndex, s32 minCourse, s32 maxCourse);\nvoid save_file_set_flags(u32 flags);\nvoid save_file_clear_flags(u32 flags);\nu32 save_file_get_flags(void);\nu32 save_file_get_star_flags(s32 fileIndex, s32 courseIndex);\nvoid save_file_set_star_flags(s32 fileIndex, s32 courseIndex, u32 starFlags);\ns32 save_file_get_course_coin_score(s32 fileIndex, s32 courseIndex);\ns32 save_file_is_cannon_unlocked(void);\nvoid save_file_set_cannon_unlocked(void);\nvoid save_file_set_cap_pos(s16 x, s16 y, s16 z);\ns32 save_file_get_cap_pos(Vec3s capPos);\nvoid save_file_set_sound_mode(u16 mode);\nu16 save_file_get_sound_mode(void);\nvoid save_file_move_cap_to_default_location(void);\n\nvoid disable_warp_checkpoint(void);\nvoid check_if_should_set_warp_checkpoint(struct WarpNode *warpNode);\ns32 check_warp_checkpoint(struct WarpNode *warpNode);\n\n#ifdef VERSION_EU\nenum EuLanguages {\n    LANGUAGE_ENGLISH,\n    LANGUAGE_FRENCH,\n    LANGUAGE_GERMAN\n};\n\nvoid eu_set_language(u16 language);\nu16 eu_get_language(void);\n#endif\n\n#endif // SAVE_FILE_H\n"
  },
  {
    "path": "src/game/screen_transition.c",
    "content": "#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\n#include \"area.h\"\n#include \"camera.h\"\n#include \"engine/graph_node.h\"\n#include \"engine/math_util.h\"\n#include \"game/game_init.h\"\n#include \"geo_misc.h\"\n#include \"gfx_dimensions.h\"\n#include \"memory.h\"\n#include \"screen_transition.h\"\n#include \"segment2.h\"\n#include \"sm64.h\"\n\nu8 sTransitionColorFadeCount[4] = { 0 };\nu16 sTransitionTextureFadeCount[2] = { 0 };\n\ns32 set_and_reset_transition_fade_timer(s8 fadeTimer, u8 transTime) {\n    s32 reset = FALSE;\n\n    sTransitionColorFadeCount[fadeTimer]++;\n\n    if (sTransitionColorFadeCount[fadeTimer] == transTime) {\n        sTransitionColorFadeCount[fadeTimer] = 0;\n        sTransitionTextureFadeCount[fadeTimer] = 0;\n        reset = TRUE;\n    }\n    return reset;\n}\n\nu8 set_transition_color_fade_alpha(s8 fadeType, s8 fadeTimer, u8 transTime) {\n    u8 time;\n\n    switch (fadeType) {\n        case 0:\n            time = (f32) sTransitionColorFadeCount[fadeTimer] * 255.0 / (f32)(transTime - 1) + 0.5; // fade in\n            break;\n        case 1:\n            time = (1.0 - sTransitionColorFadeCount[fadeTimer] / (f32)(transTime - 1)) * 255.0 + 0.5; // fade out\n            break;\n    }\n    return time;\n}\n\nVtx *vertex_transition_color(struct WarpTransitionData *transData, u8 alpha) {\n    Vtx *verts = alloc_display_list(4 * sizeof(*verts));\n    u8 r = transData->red;\n    u8 g = transData->green;\n    u8 b = transData->blue;\n\n    if (verts != NULL) {\n        make_vertex(verts, 0, GFX_DIMENSIONS_FROM_LEFT_EDGE(0), 0, -1, 0, 0, r, g, b, alpha);\n        make_vertex(verts, 1, GFX_DIMENSIONS_FROM_RIGHT_EDGE(0), 0, -1, 0, 0, r, g, b, alpha);\n        make_vertex(verts, 2, GFX_DIMENSIONS_FROM_RIGHT_EDGE(0), SCREEN_HEIGHT, -1, 0, 0, r, g, b, alpha);\n        make_vertex(verts, 3, GFX_DIMENSIONS_FROM_LEFT_EDGE(0), SCREEN_HEIGHT, -1, 0, 0, r, g, b, alpha);\n    } else {\n    }\n    return verts;\n}\n\ns32 dl_transition_color(s8 fadeTimer, u8 transTime, struct WarpTransitionData *transData, u8 alpha) {\n    Vtx *verts = vertex_transition_color(transData, alpha);\n\n    if (verts != NULL) {\n        gSPDisplayList(gDisplayListHead++, dl_proj_mtx_fullscreen);\n        gDPSetCombineMode(gDisplayListHead++, G_CC_SHADE, G_CC_SHADE);\n        gDPSetRenderMode(gDisplayListHead++, G_RM_AA_XLU_SURF, G_RM_AA_XLU_SURF2);\n        gSPVertex(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(verts), 4, 0);\n        gSPDisplayList(gDisplayListHead++, dl_draw_quad_verts_0123);\n        gSPDisplayList(gDisplayListHead++, dl_screen_transition_end);\n    }\n    return set_and_reset_transition_fade_timer(fadeTimer, transTime);\n}\n\ns32 render_fade_transition_from_color(s8 fadeTimer, u8 transTime, struct WarpTransitionData *transData) {\n    u8 alpha = set_transition_color_fade_alpha(1, fadeTimer, transTime);\n\n    return dl_transition_color(fadeTimer, transTime, transData, alpha);\n}\n\ns32 render_fade_transition_into_color(s8 fadeTimer, u8 transTime, struct WarpTransitionData *transData) {\n    u8 alpha = set_transition_color_fade_alpha(0, fadeTimer, transTime);\n\n    return dl_transition_color(fadeTimer, transTime, transData, alpha);\n}\n\ns16 calc_tex_transition_radius(s8 fadeTimer, s8 transTime, struct WarpTransitionData *transData) {\n    f32 texRadius = transData->endTexRadius - transData->startTexRadius;\n    f32 radiusTime = sTransitionColorFadeCount[fadeTimer] * texRadius / (f32)(transTime - 1);\n    f32 result = transData->startTexRadius + radiusTime;\n\n    return (s16)(result + 0.5);\n}\n\nf32 calc_tex_transition_time(s8 fadeTimer, s8 transTime, struct WarpTransitionData *transData) {\n    f32 startX = transData->startTexX;\n    f32 startY = transData->startTexY;\n    f32 endX = transData->endTexX;\n    f32 endY = transData->endTexY;\n    f32 sqrtfXY = sqrtf((startX - endX) * (startX - endX) + (startY - endY) * (startY - endY));\n    f32 result = (f32) sTransitionColorFadeCount[fadeTimer] * sqrtfXY / (f32)(transTime - 1);\n\n    return result;\n}\n\nu16 convert_tex_transition_angle_to_pos(struct WarpTransitionData *transData) {\n    f32 x = transData->endTexX - transData->startTexX;\n    f32 y = transData->endTexY - transData->startTexY;\n\n    return atan2s(x, y);\n}\n\ns16 center_tex_transition_x(struct WarpTransitionData *transData, f32 texTransTime, u16 texTransPos) {\n    f32 x = transData->startTexX + coss(texTransPos) * texTransTime;\n\n    return (s16)(x + 0.5);\n}\n\ns16 center_tex_transition_y(struct WarpTransitionData *transData, f32 texTransTime, u16 texTransPos) {\n    f32 y = transData->startTexY + sins(texTransPos) * texTransTime;\n\n    return (s16)(y + 0.5);\n}\n\nvoid make_tex_transition_vertex(Vtx *verts, s32 n, s8 fadeTimer, struct WarpTransitionData *transData, s16 centerTransX, s16 centerTransY,\n                   s16 texRadius1, s16 texRadius2, s16 tx, s16 ty) {\n    u8 r = transData->red;\n    u8 g = transData->green;\n    u8 b = transData->blue;\n    u16 zeroTimer = sTransitionTextureFadeCount[fadeTimer];\n    f32 centerX = texRadius1 * coss(zeroTimer) - texRadius2 * sins(zeroTimer) + centerTransX;\n    f32 centerY = texRadius1 * sins(zeroTimer) + texRadius2 * coss(zeroTimer) + centerTransY;\n    s16 x = round_float(centerX);\n    s16 y = round_float(centerY);\n\n    make_vertex(verts, n, x, y, -1, tx * 32, ty * 32, r, g, b, 255);\n}\n\nvoid load_tex_transition_vertex(Vtx *verts, s8 fadeTimer, struct WarpTransitionData *transData, s16 centerTransX, s16 centerTransY,\n                   s16 texTransRadius, s8 transTexType) {\n    switch (transTexType) {\n        case TRANS_TYPE_MIRROR:\n            make_tex_transition_vertex(verts, 0, fadeTimer, transData, centerTransX, centerTransY, -texTransRadius, -texTransRadius, -31, 63);\n            make_tex_transition_vertex(verts, 1, fadeTimer, transData, centerTransX, centerTransY, texTransRadius, -texTransRadius, 31, 63);\n            make_tex_transition_vertex(verts, 2, fadeTimer, transData, centerTransX, centerTransY, texTransRadius, texTransRadius, 31, 0);\n            make_tex_transition_vertex(verts, 3, fadeTimer, transData, centerTransX, centerTransY, -texTransRadius, texTransRadius, -31, 0);\n            break;\n        case TRANS_TYPE_CLAMP:\n            make_tex_transition_vertex(verts, 0, fadeTimer, transData, centerTransX, centerTransY, -texTransRadius, -texTransRadius, 0, 63);\n            make_tex_transition_vertex(verts, 1, fadeTimer, transData, centerTransX, centerTransY, texTransRadius, -texTransRadius, 63, 63);\n            make_tex_transition_vertex(verts, 2, fadeTimer, transData, centerTransX, centerTransY, texTransRadius, texTransRadius, 63, 0);\n            make_tex_transition_vertex(verts, 3, fadeTimer, transData, centerTransX, centerTransY, -texTransRadius, texTransRadius, 0, 0);\n            break;\n    }\n    make_tex_transition_vertex(verts, 4, fadeTimer, transData, centerTransX, centerTransY, -2000, -2000, 0, 0);\n    make_tex_transition_vertex(verts, 5, fadeTimer, transData, centerTransX, centerTransY, 2000, -2000, 0, 0);\n    make_tex_transition_vertex(verts, 6, fadeTimer, transData, centerTransX, centerTransY, 2000, 2000, 0, 0);\n    make_tex_transition_vertex(verts, 7, fadeTimer, transData, centerTransX, centerTransY, -2000, 2000, 0, 0);\n}\n\nvoid *sTextureTransitionID[] = {\n    texture_transition_star_half,\n    texture_transition_circle_half,\n    texture_transition_mario,\n    texture_transition_bowser_half,\n};\n\ns32 render_textured_transition(s8 fadeTimer, s8 transTime, struct WarpTransitionData *transData, s8 texID, s8 transTexType) {\n    f32 texTransTime = calc_tex_transition_time(fadeTimer, transTime, transData);\n    u16 texTransPos = convert_tex_transition_angle_to_pos(transData);\n    s16 centerTransX = center_tex_transition_x(transData, texTransTime, texTransPos);\n    s16 centerTransY = center_tex_transition_y(transData, texTransTime, texTransPos);\n    s16 texTransRadius = calc_tex_transition_radius(fadeTimer, transTime, transData);\n    Vtx *verts = alloc_display_list(8 * sizeof(*verts));\n\n    if (verts != NULL) {\n        load_tex_transition_vertex(verts, fadeTimer, transData, centerTransX, centerTransY, texTransRadius, transTexType);\n        gSPDisplayList(gDisplayListHead++, dl_proj_mtx_fullscreen)\n        gDPSetCombineMode(gDisplayListHead++, G_CC_SHADE, G_CC_SHADE);\n        gDPSetRenderMode(gDisplayListHead++, G_RM_AA_OPA_SURF, G_RM_AA_OPA_SURF2);\n        gSPVertex(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(verts), 8, 0);\n        gSPDisplayList(gDisplayListHead++, dl_transition_draw_filled_region);\n        gDPPipeSync(gDisplayListHead++);\n        gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA);\n        gDPSetRenderMode(gDisplayListHead++, G_RM_AA_XLU_SURF, G_RM_AA_XLU_SURF2);\n        gDPSetTextureFilter(gDisplayListHead++, G_TF_BILERP);\n        switch (transTexType) {\n        case TRANS_TYPE_MIRROR:\n            gDPLoadTextureBlock(gDisplayListHead++, sTextureTransitionID[texID], G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, 0,\n                G_TX_WRAP | G_TX_MIRROR, G_TX_WRAP | G_TX_MIRROR, 5, 6, G_TX_NOLOD, G_TX_NOLOD);\n            break;\n        case TRANS_TYPE_CLAMP:\n            gDPLoadTextureBlock(gDisplayListHead++, sTextureTransitionID[texID], G_IM_FMT_IA, G_IM_SIZ_8b, 64, 64, 0,\n                G_TX_CLAMP, G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD);\n            break;\n        }\n        gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);\n        gSPVertex(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(verts), 4, 0);\n        gSPDisplayList(gDisplayListHead++, dl_draw_quad_verts_0123);\n        gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF);\n        gSPDisplayList(gDisplayListHead++, dl_screen_transition_end);\n        sTransitionTextureFadeCount[fadeTimer] += transData->texTimer;\n    } else {\n    }\n    return set_and_reset_transition_fade_timer(fadeTimer, transTime);\n}\n\ns32 render_screen_transition(s8 fadeTimer, s8 transType, u8 transTime, struct WarpTransitionData *transData) {\n    switch (transType) {\n        case WARP_TRANSITION_FADE_FROM_COLOR:\n            return render_fade_transition_from_color(fadeTimer, transTime, transData);\n            break;\n        case WARP_TRANSITION_FADE_INTO_COLOR:\n            return render_fade_transition_into_color(fadeTimer, transTime, transData);\n            break;\n        case WARP_TRANSITION_FADE_FROM_STAR:\n            return render_textured_transition(fadeTimer, transTime, transData, TEX_TRANS_STAR, TRANS_TYPE_MIRROR);\n            break;\n        case WARP_TRANSITION_FADE_INTO_STAR:\n            return render_textured_transition(fadeTimer, transTime, transData, TEX_TRANS_STAR, TRANS_TYPE_MIRROR);\n            break;\n        case WARP_TRANSITION_FADE_FROM_CIRCLE:\n            return render_textured_transition(fadeTimer, transTime, transData, TEX_TRANS_CIRCLE, TRANS_TYPE_MIRROR);\n            break;\n        case WARP_TRANSITION_FADE_INTO_CIRCLE:\n            return render_textured_transition(fadeTimer, transTime, transData, TEX_TRANS_CIRCLE, TRANS_TYPE_MIRROR);\n            break;\n        case WARP_TRANSITION_FADE_FROM_MARIO:\n            return render_textured_transition(fadeTimer, transTime, transData, TEX_TRANS_MARIO, TRANS_TYPE_CLAMP);\n            break;\n        case WARP_TRANSITION_FADE_INTO_MARIO:\n            return render_textured_transition(fadeTimer, transTime, transData, TEX_TRANS_MARIO, TRANS_TYPE_CLAMP);\n            break;\n        case WARP_TRANSITION_FADE_FROM_BOWSER:\n            return render_textured_transition(fadeTimer, transTime, transData, TEX_TRANS_BOWSER, TRANS_TYPE_MIRROR);\n            break;\n        case WARP_TRANSITION_FADE_INTO_BOWSER:\n            return render_textured_transition(fadeTimer, transTime, transData, TEX_TRANS_BOWSER, TRANS_TYPE_MIRROR);\n            break;\n    }\n#ifdef AVOID_UB\n    return 0;\n#endif\n}\n\nGfx *render_cannon_circle_base(void) {\n#ifdef WIDESCREEN\n    Vtx *verts = alloc_display_list(8 * sizeof(*verts));\n    Gfx *dlist = alloc_display_list(20 * sizeof(*dlist));\n#else\n    Vtx *verts = alloc_display_list(4 * sizeof(*verts));\n    Gfx *dlist = alloc_display_list(16 * sizeof(*dlist));\n#endif\n    Gfx *g = dlist;\n\n    if (verts != NULL && dlist != NULL) {\n        make_vertex(verts, 0, 0, 0, -1, -1152, 1824, 0, 0, 0, 255);\n        make_vertex(verts, 1, SCREEN_WIDTH, 0, -1, 1152, 1824, 0, 0, 0, 255);\n        make_vertex(verts, 2, SCREEN_WIDTH, SCREEN_HEIGHT, -1, 1152, 192, 0, 0, 0, 255);\n        make_vertex(verts, 3, 0, SCREEN_HEIGHT, -1, -1152, 192, 0, 0, 0, 255);\n\n#ifdef WIDESCREEN\n        // Render black rectangles outside the 4:3 area.\n        make_vertex(verts, 4, GFX_DIMENSIONS_FROM_LEFT_EDGE(0), 0, -1, 0, 0, 0, 0, 0, 255);\n        make_vertex(verts, 5, GFX_DIMENSIONS_FROM_RIGHT_EDGE(0), 0, -1, 0, 0, 0, 0, 0, 255);\n        make_vertex(verts, 6, GFX_DIMENSIONS_FROM_RIGHT_EDGE(0), SCREEN_HEIGHT, -1, 0, 0, 0, 0, 0, 255);\n        make_vertex(verts, 7, GFX_DIMENSIONS_FROM_LEFT_EDGE(0), SCREEN_HEIGHT, -1, 0, 0, 0, 0, 0, 255);\n#endif\n\n        gSPDisplayList(g++, dl_proj_mtx_fullscreen);\n        gDPSetCombineMode(g++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA);\n        gDPSetTextureFilter(g++, G_TF_BILERP);\n        gDPLoadTextureBlock(g++, sTextureTransitionID[TEX_TRANS_CIRCLE], G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, 0,\n            G_TX_WRAP | G_TX_MIRROR, G_TX_WRAP | G_TX_MIRROR, 5, 6, G_TX_NOLOD, G_TX_NOLOD);\n        gSPTexture(g++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);\n        gSPVertex(g++, VIRTUAL_TO_PHYSICAL(verts), 4, 0);\n        gSPDisplayList(g++, dl_draw_quad_verts_0123);\n        gSPTexture(g++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF);\n#ifdef WIDESCREEN\n        gDPSetCombineMode(g++, G_CC_SHADE, G_CC_SHADE);\n        gSPVertex(g++, VIRTUAL_TO_PHYSICAL(verts + 4), 4, 4);\n        gSP2Triangles(g++, 4, 0, 3, 0, 4, 3, 7, 0);\n        gSP2Triangles(g++, 1, 5, 6, 0, 1, 6, 2, 0);\n#endif\n        gSPDisplayList(g++, dl_screen_transition_end);\n        gSPEndDisplayList(g);\n    } else {\n        return NULL;\n    }\n    return dlist;\n}\n\nGfx *geo_cannon_circle_base(s32 callContext, struct GraphNode *node, UNUSED Mat4 mtx) {\n    struct GraphNodeGenerated *graphNode = (struct GraphNodeGenerated *) node;\n    Gfx *dlist = NULL;\n\n    if (callContext == GEO_CONTEXT_RENDER && gCurrentArea != NULL\n        && gCurrentArea->camera->mode == CAMERA_MODE_INSIDE_CANNON) {\n        graphNode->fnNode.node.flags = (graphNode->fnNode.node.flags & 0xFF) | 0x500;\n        dlist = render_cannon_circle_base();\n    }\n    return dlist;\n}\n"
  },
  {
    "path": "src/game/screen_transition.h",
    "content": "#ifndef SCREEN_TRANSITION_H\n#define SCREEN_TRANSITION_H\n\n#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\n#include \"macros.h\"\n#include \"types.h\"\n\nenum TextureTransitionID {\n    TEX_TRANS_STAR,\n    TEX_TRANS_CIRCLE,\n    TEX_TRANS_MARIO,\n    TEX_TRANS_BOWSER\n};\n\nenum TextureTransitionType {\n    TRANS_TYPE_MIRROR,\n    TRANS_TYPE_CLAMP\n};\n\ns32 render_screen_transition(s8 fadeTimer, s8 transType, u8 transTime, struct WarpTransitionData *transData);\nGfx *geo_cannon_circle_base(s32 callContext, struct GraphNode *node, UNUSED Mat4 mtx);\n\n#endif // SCREEN_TRANSITION_H\n"
  },
  {
    "path": "src/game/segment2.h",
    "content": "#ifndef SEGMENT2_H\n#define SEGMENT2_H\n\n#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\nextern u8 seg2_course_name_table[];\nextern u8 seg2_act_name_table[];\nextern Gfx dl_rgba16_text_begin[];\nextern Gfx dl_rgba16_text_end[];\nextern Gfx dl_ia_text_begin[];\nextern Gfx dl_ia_text_end[];\nextern u8 texture_transition_star_half[];\nextern u8 texture_transition_circle_half[];\nextern u8 texture_transition_mario[];\nextern u8 texture_transition_bowser_half[];\nextern u8 texture_waterbox_water[];\nextern u8 texture_waterbox_mist[];\nextern u8 texture_waterbox_jrb_water[];\nextern u8 texture_waterbox_unknown_water[];\nextern u8 texture_waterbox_lava[];\nextern Gfx dl_proj_mtx_fullscreen[];\nextern Gfx dl_draw_quad_verts_0123[];\nextern Gfx dl_screen_transition_end[];\nextern Gfx dl_transition_draw_filled_region[];\nextern Gfx dl_shadow_circle[];\nextern Gfx dl_shadow_square[];\nextern Gfx dl_shadow_9_verts[];\nextern Gfx dl_shadow_4_verts[];\nextern Gfx dl_shadow_end[];\nextern Gfx dl_skybox_begin[];\nextern Gfx dl_skybox_tile_tex_settings[];\nextern Gfx dl_skybox_end[];\nextern Gfx dl_waterbox_ia16_begin[];\nextern Gfx dl_waterbox_rgba16_begin[];\nextern Gfx dl_waterbox_end[];\nextern Gfx dl_paintings_draw_ripples[];\nextern Gfx dl_paintings_rippling_begin[];\nextern Gfx dl_paintings_rippling_end[];\nextern Gfx dl_paintings_env_mapped_begin[];\nextern Gfx dl_paintings_env_mapped_end[];\nextern u8 seg2_painting_triangle_mesh[];\nextern u8 seg2_painting_mesh_neighbor_tris[];\nextern u8* main_hud_lut[58];\nextern Gfx dl_hud_img_load_tex_block[];\nextern Gfx dl_hud_img_begin[];\nextern Gfx dl_hud_img_end[];\nextern void *main_font_lut[];\nextern Gfx dl_ia_text_tex_settings[];\nextern Gfx dl_rgba16_load_tex_block[];\nextern void *main_credits_font_lut[];\nextern u8* main_hud_camera_lut[6];\nextern Gfx dl_draw_text_bg_box[];\nextern Gfx dl_draw_triangle[];\nextern void *seg2_dialog_table[];\nextern Gfx dl_billboard_num_0[];\nextern Gfx dl_billboard_num_1[];\nextern Gfx dl_billboard_num_2[];\nextern Gfx dl_billboard_num_3[];\nextern Gfx dl_billboard_num_4[];\nextern Gfx dl_billboard_num_5[];\nextern Gfx dl_billboard_num_6[];\nextern Gfx dl_billboard_num_7[];\nextern Gfx dl_billboard_num_8[];\nextern Gfx dl_billboard_num_9[];\n\n#endif // SEGMENT2_H\n"
  },
  {
    "path": "src/game/segment7.h",
    "content": "#ifndef SEGMENT7_H\n#define SEGMENT7_H\n\n#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\n// from main menu segment 7\nextern u8 dl_menu_idle_hand[];\nextern u8 dl_menu_grabbing_hand[];\nextern u8 menu_hud_lut[];\nextern u8 menu_font_lut[];\nextern u8 dl_menu_ia8_text_begin[];\nextern u8 dl_menu_ia8_text_end[];\nextern u8 dl_menu_rgba16_wood_course[];\n#ifdef VERSION_EU\nextern u8 dl_menu_rgba16_wood_course_end[];\nextern u8 dl_menu_texture_course_upper[];\nextern u8 dl_menu_texture_niveau_upper[];\nextern u8 dl_menu_texture_kurs_upper[];\n\nextern const u8 eu_course_strings_en_table[];\nextern const u8 eu_course_strings_fr_table[];\nextern const u8 eu_course_strings_de_table[];\n#endif\n\n// from intro_segment7\nextern Gfx *intro_seg7_dl_logo;\nextern Gfx *intro_seg7_dl_copyright;\nextern f32 intro_seg7_table_0700C790[];\nextern f32 intro_seg7_table_0700C880[];\n\n#endif // SEGMENT7_H\n"
  },
  {
    "path": "src/game/shadow.c",
    "content": "#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n#include <math.h>\n\n#include \"engine/math_util.h\"\n#include \"engine/surface_collision.h\"\n#include \"geo_misc.h\"\n#include \"level_table.h\"\n#include \"memory.h\"\n#include \"object_list_processor.h\"\n#include \"rendering_graph_node.h\"\n#include \"segment2.h\"\n#include \"shadow.h\"\n#include \"sm64.h\"\n\n/**\n * @file shadow.c\n * This file implements a self-contained subsystem used to draw shadows.\n */\n\n/**\n * Encapsulation of information about a shadow.\n */\nstruct Shadow {\n    /* The (x, y, z) position of the object whose shadow this is. */\n    f32 parentX;\n    f32 parentY;\n    f32 parentZ;\n    /* The y-position of the floor (or water or lava) underneath the object. */\n    f32 floorHeight;\n    /* Initial (unmodified) size of the shadow. */\n    f32 shadowScale;\n    /* (nx, ny, nz) normal vector of the floor underneath the object. */\n    f32 floorNormalX;\n    f32 floorNormalY;\n    f32 floorNormalZ;\n    /* \"originOffset\" of the floor underneath the object. */\n    f32 floorOriginOffset;\n    /* Angle describing \"which way a marble would roll,\" in degrees. */\n    f32 floorDownwardAngle;\n    /* Angle describing \"how tilted the ground is\" in degrees (-90 to 90). */\n    f32 floorTilt;\n    /* Initial solidity of the shadow, from 0 to 255 (just an alpha value). */\n    u8 solidity;\n};\n\n/**\n * Constant to indicate that a shadow should not be drawn.\n * This is used to disable shadows during specific frames of Mario's\n * animations.\n */\n#define SHADOW_SOLIDITY_NO_SHADOW 0\n/**\n * Constant to indicate that a shadow's solidity has been pre-set by a previous\n * function and should not be overwritten.\n */\n#define SHADOW_SOILDITY_ALREADY_SET 1\n/**\n * Constant to indicate that a shadow's solidity has not yet been set.\n */\n#define SHADOW_SOLIDITY_NOT_YET_SET 2\n\n/**\n * Constant to indicate any sort of circular shadow.\n */\n#define SHADOW_SHAPE_CIRCLE 10\n/**\n * Constant to indicate any sort of rectangular shadow.\n */\n#define SHADOW_SHAPE_SQUARE 20\n\n/**\n * Constant to indicate a shadow consists of 9 vertices.\n */\n#define SHADOW_WITH_9_VERTS 0\n/**\n * Constant to indicate a shadow consists of 4 vertices.\n */\n#define SHADOW_WITH_4_VERTS 1\n\n/**\n * A struct containing info about hardcoded rectangle shadows.\n */\ntypedef struct {\n    /* Half the width of the rectangle. */\n    f32 halfWidth;\n    /* Half the length of the rectangle. */\n    f32 halfLength;\n    /* Flag for if this shadow be smaller when its object is further away. */\n    s8 scaleWithDistance;\n} shadowRectangle;\n\n/**\n * An array consisting of all the hardcoded rectangle shadows in the game.\n */\nshadowRectangle rectangles[2] = {\n    /* Shadow for Spindels. */\n    { 360.0f, 230.0f, TRUE },\n    /* Shadow for Whomps. */\n    { 200.0f, 180.0f, TRUE }\n};\n\n// See shadow.h for documentation.\ns8 gShadowAboveWaterOrLava;\ns8 gMarioOnIceOrCarpet;\ns8 sMarioOnFlyingCarpet;\ns16 sSurfaceTypeBelowShadow;\n\n/**\n * Let (oldZ, oldX) be the relative coordinates of a point on a rectangle,\n * assumed to be centered at the origin on the standard SM64 X-Z plane. This\n * function will update (newZ, newX) to equal the new coordinates of that point\n * after a rotation equal to the yaw of the current graph node object.\n */\nvoid rotate_rectangle(f32 *newZ, f32 *newX, f32 oldZ, f32 oldX) {\n    struct Object *obj = (struct Object *) gCurGraphNodeObject;\n    *newZ = oldZ * coss(obj->oFaceAngleYaw) - oldX * sins(obj->oFaceAngleYaw);\n    *newX = oldZ * sins(obj->oFaceAngleYaw) + oldX * coss(obj->oFaceAngleYaw);\n}\n\n/**\n * Return atan2(a, b) in degrees. Note that the argument order is swapped from\n * the standard atan2.\n */\nf32 atan2_deg(f32 a, f32 b) {\n    return ((f32) atan2s(a, b) / 65535.0 * 360.0);\n}\n\n/**\n * Shrink a shadow when its parent object is further from the floor, given the\n * initial size of the shadow and the current distance.\n */\nf32 scale_shadow_with_distance(f32 initial, f32 distFromFloor) {\n    f32 newScale;\n\n    if (distFromFloor <= 0.0) {\n        newScale = initial;\n    } else if (distFromFloor >= 600.0) {\n        newScale = initial * 0.5;\n    } else {\n        newScale = initial * (1.0 - (0.5 * distFromFloor / 600.0));\n    }\n\n    return newScale;\n}\n\n/**\n * Disable a shadow when its parent object is more than 600 units from the ground.\n */\nf32 disable_shadow_with_distance(f32 shadowScale, f32 distFromFloor) {\n    if (distFromFloor >= 600.0) {\n        return 0.0f;\n    } else {\n        return shadowScale;\n    }\n}\n\n/**\n * Dim a shadow when its parent object is further from the ground.\n */\nu8 dim_shadow_with_distance(u8 solidity, f32 distFromFloor) {\n    f32 ret;\n\n    if (solidity < 121) {\n        return solidity;\n    } else if (distFromFloor <= 0.0) {\n        return solidity;\n    } else if (distFromFloor >= 600.0) {\n        return 120;\n    } else {\n        ret = ((120 - solidity) * distFromFloor) / 600.0 + (f32) solidity;\n        return ret;\n    }\n}\n\n/**\n * Return the water level below a shadow, or 0 if the water level is below\n * -10,000.\n */\nf32 get_water_level_below_shadow(struct Shadow *s) {\n    f32 waterLevel = find_water_level(s->parentX, s->parentZ);\n    if (waterLevel < FLOOR_LOWER_LIMIT_SHADOW) {\n        return 0;\n    } else if (s->parentY >= waterLevel && s->floorHeight <= waterLevel) {\n        gShadowAboveWaterOrLava = TRUE;\n        return waterLevel;\n    }\n    //! @bug Missing return statement. This compiles to return `waterLevel`\n    //! incidentally.\n#ifdef AVOID_UB\n    return waterLevel;\n#endif\n}\n\n/**\n * Initialize a shadow. Return 0 on success, 1 on failure.\n *\n * @param xPos,yPos,zPos Position of the parent object (not the shadow)\n * @param shadowScale Diameter of the shadow\n * @param overwriteSolidity Flag for whether the existing shadow solidity should\n *                          be dimmed based on its distance to the floor\n */\ns8 init_shadow(struct Shadow *s, f32 xPos, f32 yPos, f32 zPos, s16 shadowScale, u8 overwriteSolidity) {\n    f32 waterLevel;\n    f32 floorSteepness;\n    struct FloorGeometry *floorGeometry;\n\n    s->parentX = xPos;\n    s->parentY = yPos;\n    s->parentZ = zPos;\n\n    s->floorHeight = find_floor_height_and_data(s->parentX, s->parentY, s->parentZ, &floorGeometry);\n\n    if (gEnvironmentRegions != NULL) {\n        waterLevel = get_water_level_below_shadow(s);\n    }\n    if (gShadowAboveWaterOrLava) {\n        //! @bug Use of potentially undefined variable `waterLevel`\n        s->floorHeight = waterLevel;\n\n        // Assume that the water is flat.\n        s->floorNormalX = 0;\n        s->floorNormalY = 1.0;\n        s->floorNormalZ = 0;\n        s->floorOriginOffset = -waterLevel;\n    } else {\n        // Don't draw a shadow if the floor is lower than expected possible,\n        // or if the y-normal is negative (an unexpected result).\n        if (s->floorHeight < FLOOR_LOWER_LIMIT_SHADOW || floorGeometry->normalY <= 0.0) {\n            return 1;\n        }\n\n        s->floorNormalX = floorGeometry->normalX;\n        s->floorNormalY = floorGeometry->normalY;\n        s->floorNormalZ = floorGeometry->normalZ;\n        s->floorOriginOffset = floorGeometry->originOffset;\n    }\n\n    if (overwriteSolidity) {\n        s->solidity = dim_shadow_with_distance(overwriteSolidity, yPos - s->floorHeight);\n    }\n\n    s->shadowScale = scale_shadow_with_distance(shadowScale, yPos - s->floorHeight);\n\n    s->floorDownwardAngle = atan2_deg(s->floorNormalZ, s->floorNormalX);\n\n    floorSteepness = sqrtf(s->floorNormalX * s->floorNormalX + s->floorNormalZ * s->floorNormalZ);\n\n    // This if-statement avoids dividing by 0.\n    if (floorSteepness == 0.0) {\n        s->floorTilt = 0;\n    } else {\n        s->floorTilt = 90.0 - atan2_deg(floorSteepness, s->floorNormalY);\n    }\n    return 0;\n}\n\n/**\n * Given a `vertexNum` from a shadow with nine vertices, update the\n * texture coordinates corresponding to that vertex. That is:\n *      0 = (-15, -15)         1 = (0, -15)         2 = (15, -15)\n *      3 = (-15,   0)         4 = (0,   0)         5 = (15,   0)\n *      6 = (-15,  15)         7 = (0,  15)         8 = (15,  15)\n */\nvoid get_texture_coords_9_vertices(s8 vertexNum, s16 *textureX, s16 *textureY) {\n    *textureX = vertexNum % 3 * 15 - 15;\n    *textureY = vertexNum / 3 * 15 - 15;\n}\n\n/**\n * Given a `vertexNum` from a shadow with four vertices, update the\n * texture coordinates corresponding to that vertex. That is:\n *      0 = (-15, -15)         1 = (15, -15)\n *      2 = (-15,  15)         3 = (15,  15)\n */\nvoid get_texture_coords_4_vertices(s8 vertexNum, s16 *textureX, s16 *textureY) {\n    *textureX = (vertexNum % 2) * 2 * 15 - 15;\n    *textureY = (vertexNum / 2) * 2 * 15 - 15;\n}\n\n/**\n * Make a shadow's vertex at a position relative to its parent.\n *\n * @param vertices A preallocated display list for vertices\n * @param index Index into `vertices` to insert the vertex\n * @param relX,relY,relZ Vertex position relative to its parent object\n * @param alpha Opacity of the vertex\n * @param shadowVertexType One of SHADOW_WITH_9_VERTS or SHADOW_WITH_4_VERTS\n */\nvoid make_shadow_vertex_at_xyz(Vtx *vertices, s8 index, f32 relX, f32 relY, f32 relZ, u8 alpha,\n                               s8 shadowVertexType) {\n    s16 vtxX = round_float(relX);\n    s16 vtxY = round_float(relY);\n    s16 vtxZ = round_float(relZ);\n    s16 textureX, textureY;\n\n    switch (shadowVertexType) {\n        case SHADOW_WITH_9_VERTS:\n            get_texture_coords_9_vertices(index, &textureX, &textureY);\n            break;\n        case SHADOW_WITH_4_VERTS:\n            get_texture_coords_4_vertices(index, &textureX, &textureY);\n            break;\n    }\n\n    // Move the shadow up and over slightly while standing on a flying carpet.\n    if (sMarioOnFlyingCarpet) {\n        vtxX += 5;\n        vtxY += 5;\n        vtxZ += 5;\n    }\n    make_vertex( // shadows are black\n        vertices, index, vtxX, vtxY, vtxZ, textureX << 5, textureY << 5, 255, 255, 255, alpha\n    );\n}\n\n/**\n * Given an (x, z)-position close to a shadow, extrapolate the y-position\n * according to the floor's normal vector.\n */\nf32 extrapolate_vertex_y_position(struct Shadow s, f32 vtxX, f32 vtxZ) {\n    return -(s.floorNormalX * vtxX + s.floorNormalZ * vtxZ + s.floorOriginOffset) / s.floorNormalY;\n}\n\n/**\n * Given a shadow vertex with the given `index`, return the corresponding texture\n * coordinates ranging in the square with corners at (-1, -1), (1, -1), (-1, 1),\n * and (1, 1) in the x-z plane. See `get_texture_coords_9_vertices()` and\n * `get_texture_coords_4_vertices()`, which have similar functionality, but\n * return 15 times these values.\n */\nvoid get_vertex_coords(s8 index, s8 shadowVertexType, s8 *xCoord, s8 *zCoord) {\n    *xCoord = index % (3 - shadowVertexType) - 1;\n    *zCoord = index / (3 - shadowVertexType) - 1;\n\n    // This just corrects the 4-vertex case to have consistent results with the\n    // 9-vertex case.\n    if (shadowVertexType == SHADOW_WITH_4_VERTS) {\n        if (*xCoord == 0) {\n            *xCoord = 1;\n        }\n        if (*zCoord == 0) {\n            *zCoord = 1;\n        }\n    }\n}\n\n/**\n * Populate `xPosVtx`, `yPosVtx`, and `zPosVtx` with the (x, y, z) position of the\n * shadow vertex with the given index. If the shadow is to have 9 vertices,\n * then each of those vertices is clamped down to the floor below it. Otherwise,\n * in the 4 vertex case, the vertex positions are extrapolated from the center\n * of the shadow.\n *\n * In practice, due to the if-statement in `make_shadow_vertex()`, the 9\n * vertex and 4 vertex cases are identical, and the above-described clamping\n * behavior is overwritten.\n */\nvoid calculate_vertex_xyz(s8 index, struct Shadow s, f32 *xPosVtx, f32 *yPosVtx, f32 *zPosVtx,\n                          s8 shadowVertexType) {\n    f32 tiltedScale = cosf(s.floorTilt * M_PI / 180.0) * s.shadowScale;\n    f32 downwardAngle = s.floorDownwardAngle * M_PI / 180.0;\n    f32 halfScale;\n    f32 halfTiltedScale;\n    s8 xCoordUnit;\n    s8 zCoordUnit;\n    struct FloorGeometry *dummy;\n\n    // This makes xCoordUnit and yCoordUnit each one of -1, 0, or 1.\n    get_vertex_coords(index, shadowVertexType, &xCoordUnit, &zCoordUnit);\n\n    halfScale = (xCoordUnit * s.shadowScale) / 2.0;\n    halfTiltedScale = (zCoordUnit * tiltedScale) / 2.0;\n\n    *xPosVtx = (halfTiltedScale * sinf(downwardAngle)) + (halfScale * cosf(downwardAngle)) + s.parentX;\n    *zPosVtx = (halfTiltedScale * cosf(downwardAngle)) - (halfScale * sinf(downwardAngle)) + s.parentZ;\n\n    if (gShadowAboveWaterOrLava) {\n        *yPosVtx = s.floorHeight;\n    } else {\n        switch (shadowVertexType) {\n            /**\n             * Note that this dichotomy is later overwritten in\n             * make_shadow_vertex().\n             */\n            case SHADOW_WITH_9_VERTS:\n                // Clamp this vertex's y-position to that of the floor directly\n                // below it, which may differ from the floor below the center\n                // vertex.\n                *yPosVtx = find_floor_height_and_data(*xPosVtx, s.parentY, *zPosVtx, &dummy);\n                break;\n            case SHADOW_WITH_4_VERTS:\n                // Do not clamp. Instead, extrapolate the y-position of this\n                // vertex based on the directly floor below the parent object.\n                *yPosVtx = extrapolate_vertex_y_position(s, *xPosVtx, *zPosVtx);\n                break;\n        }\n    }\n}\n\n/**\n * Given a vertex's location, return the dot product of the\n * position of that vertex (relative to the shadow's center) with the floor\n * normal (at the shadow's center).\n *\n * Since it is a dot product, this returns 0 if these two vectors are\n * perpendicular, meaning the ground is locally flat. It returns nonzero\n * in most cases where `vtxY` is on a different floor triangle from the\n * center vertex, as in the case with SHADOW_WITH_9_VERTS, which sets\n * the y-value from `find_floor_height_and_data`. (See the bottom of\n * `calculate_vertex_xyz`.)\n */\ns16 floor_local_tilt(struct Shadow s, f32 vtxX, f32 vtxY, f32 vtxZ) {\n    f32 relX = vtxX - s.parentX;\n    f32 relY = vtxY - s.floorHeight;\n    f32 relZ = vtxZ - s.parentZ;\n\n    f32 ret = (relX * s.floorNormalX) + (relY * s.floorNormalY) + (relZ * s.floorNormalZ);\n    return ret;\n}\n\n/**\n * Make a particular vertex from a shadow, calculating its position and solidity.\n */\nvoid make_shadow_vertex(Vtx *vertices, s8 index, struct Shadow s, s8 shadowVertexType) {\n    f32 xPosVtx, yPosVtx, zPosVtx;\n    f32 relX, relY, relZ;\n\n    u8 solidity = s.solidity;\n    if (gShadowAboveWaterOrLava) {\n        solidity = 200;\n    }\n\n    calculate_vertex_xyz(index, s, &xPosVtx, &yPosVtx, &zPosVtx, shadowVertexType);\n\n    /**\n     * This is the hack that makes \"SHADOW_WITH_9_VERTS\" act identically to\n     * \"SHADOW_WITH_4_VERTS\" in the game; this same hack is disabled by the\n     * GameShark code in this video: https://youtu.be/MSIh4rtNGF0. The code in\n     * the video makes `extrapolate_vertex_y_position` return the same value as\n     * the last-called function that returns a float; in this case, that's\n     * `find_floor_height_and_data`, which this if-statement was designed to\n     * overwrite in the first place. Thus, this if-statement is disabled by that\n     * code.\n     *\n     * The last condition here means the y-position calculated previously\n     * was probably on a different floor triangle from the center vertex.\n     * The gShadowAboveWaterOrLava check is redundant, since `floor_local_tilt`\n     * will always be 0 over water or lava (since they are always flat).\n     */\n    if (shadowVertexType == SHADOW_WITH_9_VERTS && !gShadowAboveWaterOrLava\n        && floor_local_tilt(s, xPosVtx, yPosVtx, zPosVtx) != 0) {\n        yPosVtx = extrapolate_vertex_y_position(s, xPosVtx, zPosVtx);\n        solidity = 0;\n    }\n    relX = xPosVtx - s.parentX;\n    relY = yPosVtx - s.parentY;\n    relZ = zPosVtx - s.parentZ;\n\n    make_shadow_vertex_at_xyz(vertices, index, relX, relY, relZ, solidity, shadowVertexType);\n}\n\n/**\n * Add a shadow to the given display list.\n */\nvoid add_shadow_to_display_list(Gfx *displayListHead, Vtx *verts, s8 shadowVertexType, s8 shadowShape) {\n    switch (shadowShape) {\n        case SHADOW_SHAPE_CIRCLE:\n            gSPDisplayList(displayListHead++, dl_shadow_circle);\n            break;\n        case SHADOW_SHAPE_SQUARE:\n            gSPDisplayList(displayListHead++, dl_shadow_square) break;\n    }\n    switch (shadowVertexType) {\n        case SHADOW_WITH_9_VERTS:\n            gSPVertex(displayListHead++, verts, 9, 0);\n            gSPDisplayList(displayListHead++, dl_shadow_9_verts);\n            break;\n        case SHADOW_WITH_4_VERTS:\n            gSPVertex(displayListHead++, verts, 4, 0);\n            gSPDisplayList(displayListHead++, dl_shadow_4_verts);\n            break;\n    }\n    gSPDisplayList(displayListHead++, dl_shadow_end);\n    gSPEndDisplayList(displayListHead);\n}\n\n/**\n * Linearly interpolate a shadow's solidity between zero and finalSolidity\n * depending on curr's relation to start and end.\n */\nvoid linearly_interpolate_solidity_positive(struct Shadow *s, u8 finalSolidity, s16 curr, s16 start,\n                                            s16 end) {\n    if (curr >= 0 && curr < start) {\n        s->solidity = 0;\n    } else if (end < curr) {\n        s->solidity = finalSolidity;\n    } else {\n        s->solidity = (f32) finalSolidity * (curr - start) / (end - start);\n    }\n}\n\n/**\n * Linearly interpolate a shadow's solidity between initialSolidity and zero\n * depending on curr's relation to start and end. Note that if curr < start,\n * the solidity will be zero.\n */\nvoid linearly_interpolate_solidity_negative(struct Shadow *s, u8 initialSolidity, s16 curr, s16 start,\n                                            s16 end) {\n    // The curr < start case is not handled. Thus, if start != 0, this function\n    // will have the surprising behavior of hiding the shadow until start.\n    // This is not necessarily a bug, since this function is only used once,\n    // with start == 0.\n    if (curr >= start && end >= curr) {\n        s->solidity = ((f32) initialSolidity * (1.0 - (f32)(curr - start) / (end - start)));\n    } else {\n        s->solidity = 0;\n    }\n}\n\n/**\n * Change a shadow's solidity based on the player's current animation frame.\n */\ns8 correct_shadow_solidity_for_animations(s32 isLuigi, u8 initialSolidity, struct Shadow *shadow) {\n    struct Object *player;\n    s8 ret;\n    s16 animFrame;\n\n    switch (isLuigi) {\n        case 0:\n            player = gMarioObject;\n            break;\n        case 1:\n            /**\n             * This is evidence of a removed second player, likely Luigi.\n             * This variable lies in memory just after the gMarioObject and\n             * has the same type of shadow that Mario does. The `isLuigi`\n             * variable is never 1 in the game. Note that since this was a\n             * switch-case, not an if-statement, the programmers possibly\n             * intended there to be even more than 2 characters.\n             */\n            player = gLuigiObject;\n            break;\n    }\n\n    animFrame = player->header.gfx.animInfo.animFrame;\n    switch (player->header.gfx.animInfo.animID) {\n        case MARIO_ANIM_IDLE_ON_LEDGE:\n            ret = SHADOW_SOLIDITY_NO_SHADOW;\n            break;\n        case MARIO_ANIM_FAST_LEDGE_GRAB:\n            linearly_interpolate_solidity_positive(shadow, initialSolidity, animFrame, 5, 14);\n            ret = SHADOW_SOILDITY_ALREADY_SET;\n            break;\n        case MARIO_ANIM_SLOW_LEDGE_GRAB:\n            linearly_interpolate_solidity_positive(shadow, initialSolidity, animFrame, 21, 33);\n            ret = SHADOW_SOILDITY_ALREADY_SET;\n            break;\n        case MARIO_ANIM_CLIMB_DOWN_LEDGE:\n            linearly_interpolate_solidity_negative(shadow, initialSolidity, animFrame, 0, 5);\n            ret = SHADOW_SOILDITY_ALREADY_SET;\n            break;\n        default:\n            ret = SHADOW_SOLIDITY_NOT_YET_SET;\n            break;\n    }\n    return ret;\n}\n\n/**\n * Slightly change the height of a shadow in levels with lava.\n */\nvoid correct_lava_shadow_height(struct Shadow *s) {\n    if (gCurrLevelNum == LEVEL_BITFS && sSurfaceTypeBelowShadow == SURFACE_BURNING) {\n        if (s->floorHeight < -3000.0) {\n            s->floorHeight = -3062.0;\n            gShadowAboveWaterOrLava = TRUE;\n        } else if (s->floorHeight > 3400.0) {\n            s->floorHeight = 3492.0;\n            gShadowAboveWaterOrLava = TRUE;\n        }\n    } else if (gCurrLevelNum == LEVEL_LLL && gCurrAreaIndex == 1\n               && sSurfaceTypeBelowShadow == SURFACE_BURNING) {\n        s->floorHeight = 5.0;\n        gShadowAboveWaterOrLava = TRUE;\n    }\n}\n\n/**\n * Create a shadow under a player, correcting that shadow's opacity during\n * appropriate animations and other states.\n */\nGfx *create_shadow_player(f32 xPos, f32 yPos, f32 zPos, s16 shadowScale, u8 solidity, s32 isLuigi) {\n    Vtx *verts;\n    Gfx *displayList;\n    struct Shadow shadow;\n    s8 ret;\n    s32 i;\n\n    // Update global variables about whether Mario is on a flying carpet.\n    if (gCurrLevelNum == LEVEL_RR && sSurfaceTypeBelowShadow != SURFACE_DEATH_PLANE) {\n        switch (gFlyingCarpetState) {\n            case FLYING_CARPET_MOVING_WITHOUT_MARIO:\n                gMarioOnIceOrCarpet = 1;\n                sMarioOnFlyingCarpet = 1;\n                break;\n            case FLYING_CARPET_MOVING_WITH_MARIO:\n                gMarioOnIceOrCarpet = 1;\n                break;\n        }\n    }\n\n    switch (correct_shadow_solidity_for_animations(isLuigi, solidity, &shadow)) {\n        case SHADOW_SOLIDITY_NO_SHADOW:\n            return NULL;\n            break;\n        case SHADOW_SOILDITY_ALREADY_SET:\n            ret = init_shadow(&shadow, xPos, yPos, zPos, shadowScale, /* overwriteSolidity */ 0);\n            break;\n        case SHADOW_SOLIDITY_NOT_YET_SET:\n            ret = init_shadow(&shadow, xPos, yPos, zPos, shadowScale, solidity);\n            break;\n    }\n    if (ret != 0) {\n        return NULL;\n    }\n\n    verts = alloc_display_list(9 * sizeof(Vtx));\n    displayList = alloc_display_list(5 * sizeof(Gfx));\n    if (verts == NULL || displayList == NULL) {\n        return NULL;\n    }\n\n    correct_lava_shadow_height(&shadow);\n\n    for (i = 0; i < 9; i++) {\n        make_shadow_vertex(verts, i, shadow, SHADOW_WITH_9_VERTS);\n    }\n    add_shadow_to_display_list(displayList, verts, SHADOW_WITH_9_VERTS, SHADOW_SHAPE_CIRCLE);\n    return displayList;\n}\n\n/**\n * Create a circular shadow composed of 9 vertices.\n */\nGfx *create_shadow_circle_9_verts(f32 xPos, f32 yPos, f32 zPos, s16 shadowScale, u8 solidity) {\n    Vtx *verts;\n    Gfx *displayList;\n    struct Shadow shadow;\n    s32 i;\n\n    if (init_shadow(&shadow, xPos, yPos, zPos, shadowScale, solidity) != 0) {\n        return NULL;\n    }\n\n    verts = alloc_display_list(9 * sizeof(Vtx));\n    displayList = alloc_display_list(5 * sizeof(Gfx));\n\n    if (verts == NULL || displayList == NULL) {\n        return 0;\n    }\n    for (i = 0; i < 9; i++) {\n        make_shadow_vertex(verts, i, shadow, SHADOW_WITH_9_VERTS);\n    }\n    add_shadow_to_display_list(displayList, verts, SHADOW_WITH_9_VERTS, SHADOW_SHAPE_CIRCLE);\n    return displayList;\n}\n\n/**\n * Create a circular shadow composed of 4 vertices.\n */\nGfx *create_shadow_circle_4_verts(f32 xPos, f32 yPos, f32 zPos, s16 shadowScale, u8 solidity) {\n    Vtx *verts;\n    Gfx *displayList;\n    struct Shadow shadow;\n    s32 i;\n\n    if (init_shadow(&shadow, xPos, yPos, zPos, shadowScale, solidity) != 0) {\n        return NULL;\n    }\n\n    verts = alloc_display_list(4 * sizeof(Vtx));\n    displayList = alloc_display_list(5 * sizeof(Gfx));\n\n    if (verts == NULL || displayList == NULL) {\n        return 0;\n    }\n\n    for (i = 0; i < 4; i++) {\n        make_shadow_vertex(verts, i, shadow, SHADOW_WITH_4_VERTS);\n    }\n    add_shadow_to_display_list(displayList, verts, SHADOW_WITH_4_VERTS, SHADOW_SHAPE_CIRCLE);\n    return displayList;\n}\n\n/**\n * Create a circular shadow composed of 4 vertices and assume that the ground\n * underneath it is totally flat.\n */\nGfx *create_shadow_circle_assuming_flat_ground(f32 xPos, f32 yPos, f32 zPos, s16 shadowScale,\n                                               u8 solidity) {\n    Vtx *verts;\n    Gfx *displayList;\n    struct FloorGeometry *dummy; // only for calling find_floor_height_and_data\n    f32 distBelowFloor;\n    f32 floorHeight = find_floor_height_and_data(xPos, yPos, zPos, &dummy);\n    f32 radius = shadowScale / 2;\n\n    if (floorHeight < FLOOR_LOWER_LIMIT_SHADOW) {\n        return NULL;\n    } else {\n        distBelowFloor = floorHeight - yPos;\n    }\n\n    verts = alloc_display_list(4 * sizeof(Vtx));\n    displayList = alloc_display_list(5 * sizeof(Gfx));\n\n    if (verts == NULL || displayList == NULL) {\n        return 0;\n    }\n\n    make_shadow_vertex_at_xyz(verts, 0, -radius, distBelowFloor, -radius, solidity, 1);\n    make_shadow_vertex_at_xyz(verts, 1, radius, distBelowFloor, -radius, solidity, 1);\n    make_shadow_vertex_at_xyz(verts, 2, -radius, distBelowFloor, radius, solidity, 1);\n    make_shadow_vertex_at_xyz(verts, 3, radius, distBelowFloor, radius, solidity, 1);\n\n    add_shadow_to_display_list(displayList, verts, SHADOW_WITH_4_VERTS, SHADOW_SHAPE_CIRCLE);\n    return displayList;\n}\n\n/**\n * Create a rectangular shadow composed of 4 vertices. This assumes the ground\n * underneath the shadow is totally flat.\n */\nGfx *create_shadow_rectangle(f32 halfWidth, f32 halfLength, f32 relY, u8 solidity) {\n    Vtx *verts = alloc_display_list(4 * sizeof(Vtx));\n    Gfx *displayList = alloc_display_list(5 * sizeof(Gfx));\n    f32 frontLeftX, frontLeftZ, frontRightX, frontRightZ, backLeftX, backLeftZ, backRightX, backRightZ;\n\n    if (verts == NULL || displayList == NULL) {\n        return NULL;\n    }\n\n    // Rotate the shadow based on the parent object's face angle.\n    rotate_rectangle(&frontLeftZ, &frontLeftX, -halfLength, -halfWidth);\n    rotate_rectangle(&frontRightZ, &frontRightX, -halfLength, halfWidth);\n    rotate_rectangle(&backLeftZ, &backLeftX, halfLength, -halfWidth);\n    rotate_rectangle(&backRightZ, &backRightX, halfLength, halfWidth);\n\n    make_shadow_vertex_at_xyz(verts, 0, frontLeftX, relY, frontLeftZ, solidity, 1);\n    make_shadow_vertex_at_xyz(verts, 1, frontRightX, relY, frontRightZ, solidity, 1);\n    make_shadow_vertex_at_xyz(verts, 2, backLeftX, relY, backLeftZ, solidity, 1);\n    make_shadow_vertex_at_xyz(verts, 3, backRightX, relY, backRightZ, solidity, 1);\n\n    add_shadow_to_display_list(displayList, verts, SHADOW_WITH_4_VERTS, SHADOW_SHAPE_SQUARE);\n    return displayList;\n}\n\n/**\n * Populate `shadowHeight` and `solidity` appropriately; the default solidity\n * value is 200. Return 0 if a shadow should be drawn, 1 if not.\n */\ns32 get_shadow_height_solidity(f32 xPos, f32 yPos, f32 zPos, f32 *shadowHeight, u8 *solidity) {\n    struct FloorGeometry *dummy;\n    f32 waterLevel;\n    *shadowHeight = find_floor_height_and_data(xPos, yPos, zPos, &dummy);\n\n    if (*shadowHeight < FLOOR_LOWER_LIMIT_SHADOW) {\n        return 1;\n    } else {\n        waterLevel = find_water_level(xPos, zPos);\n\n        if (waterLevel < FLOOR_LOWER_LIMIT_SHADOW) {\n            // Dead if-statement. There may have been an assert here.\n        } else if (yPos >= waterLevel && waterLevel >= *shadowHeight) {\n            gShadowAboveWaterOrLava = TRUE;\n            *shadowHeight = waterLevel;\n            *solidity = 200;\n        }\n    }\n    return 0;\n}\n\n/**\n * Create a square shadow composed of 4 vertices.\n */\nGfx *create_shadow_square(f32 xPos, f32 yPos, f32 zPos, s16 shadowScale, u8 solidity, s8 shadowType) {\n    f32 shadowHeight;\n    f32 distFromShadow;\n    f32 shadowRadius;\n\n    if (get_shadow_height_solidity(xPos, yPos, zPos, &shadowHeight, &solidity) != 0) {\n        return NULL;\n    }\n\n    distFromShadow = yPos - shadowHeight;\n    switch (shadowType) {\n        case SHADOW_SQUARE_PERMANENT:\n            shadowRadius = shadowScale / 2;\n            break;\n        case SHADOW_SQUARE_SCALABLE:\n            shadowRadius = scale_shadow_with_distance(shadowScale, distFromShadow) / 2.0;\n            break;\n        case SHADOW_SQUARE_TOGGLABLE:\n            shadowRadius = disable_shadow_with_distance(shadowScale, distFromShadow) / 2.0;\n            break;\n        default:\n            return NULL;\n    }\n\n    return create_shadow_rectangle(shadowRadius, shadowRadius, -distFromShadow, solidity);\n}\n\n/**\n * Create a rectangular shadow whose parameters have been hardcoded in the\n * `rectangles` array.\n */\nGfx *create_shadow_hardcoded_rectangle(f32 xPos, f32 yPos, f32 zPos, UNUSED s16 shadowScale,\n                                       u8 solidity, s8 shadowType) {\n    f32 shadowHeight;\n    f32 distFromShadow;\n    f32 halfWidth;\n    f32 halfLength;\n    s8 idx = shadowType - SHADOW_RECTANGLE_HARDCODED_OFFSET;\n\n    if (get_shadow_height_solidity(xPos, yPos, zPos, &shadowHeight, &solidity) != 0) {\n        return NULL;\n    }\n\n    distFromShadow = yPos - shadowHeight;\n    /**\n     * Note that idx could be negative or otherwise out of the bounds of\n     * the `rectangles` array. In practice, it never is, because this was\n     * only used twice.\n     */\n    if (rectangles[idx].scaleWithDistance == TRUE) {\n        halfWidth = scale_shadow_with_distance(rectangles[idx].halfWidth, distFromShadow);\n        halfLength = scale_shadow_with_distance(rectangles[idx].halfLength, distFromShadow);\n    } else {\n        // This code is never used because the third element of the rectangle\n        // struct is always TRUE.\n        halfWidth = rectangles[idx].halfWidth;\n        halfLength = rectangles[idx].halfLength;\n    }\n    return create_shadow_rectangle(halfWidth, halfLength, -distFromShadow, solidity);\n}\n\n/**\n * Create a shadow at the absolute position given, with the given parameters.\n * Return a pointer to the display list representing the shadow.\n */\nGfx *create_shadow_below_xyz(f32 xPos, f32 yPos, f32 zPos, s16 shadowScale, u8 shadowSolidity,\n                             s8 shadowType) {\n    Gfx *displayList = NULL;\n    struct Surface *pfloor;\n    find_floor(xPos, yPos, zPos, &pfloor);\n\n    gShadowAboveWaterOrLava = FALSE;\n    gMarioOnIceOrCarpet = 0;\n    sMarioOnFlyingCarpet = 0;\n    if (pfloor != NULL) {\n        if (pfloor->type == SURFACE_ICE) {\n            gMarioOnIceOrCarpet = 1;\n        }\n        sSurfaceTypeBelowShadow = pfloor->type;\n    }\n    switch (shadowType) {\n        case SHADOW_CIRCLE_9_VERTS:\n            displayList = create_shadow_circle_9_verts(xPos, yPos, zPos, shadowScale, shadowSolidity);\n            break;\n        case SHADOW_CIRCLE_4_VERTS:\n            displayList = create_shadow_circle_4_verts(xPos, yPos, zPos, shadowScale, shadowSolidity);\n            break;\n        case SHADOW_CIRCLE_4_VERTS_FLAT_UNUSED: // unused shadow type\n            displayList = create_shadow_circle_assuming_flat_ground(xPos, yPos, zPos, shadowScale,\n                                                                    shadowSolidity);\n            break;\n        case SHADOW_SQUARE_PERMANENT:\n            displayList =\n                create_shadow_square(xPos, yPos, zPos, shadowScale, shadowSolidity, shadowType);\n            break;\n        case SHADOW_SQUARE_SCALABLE:\n            displayList =\n                create_shadow_square(xPos, yPos, zPos, shadowScale, shadowSolidity, shadowType);\n            break;\n        case SHADOW_SQUARE_TOGGLABLE:\n            displayList =\n                create_shadow_square(xPos, yPos, zPos, shadowScale, shadowSolidity, shadowType);\n            break;\n        case SHADOW_CIRCLE_PLAYER:\n            displayList = create_shadow_player(xPos, yPos, zPos, shadowScale, shadowSolidity,\n                                               /* isLuigi */ FALSE);\n            break;\n        default:\n            displayList = create_shadow_hardcoded_rectangle(xPos, yPos, zPos, shadowScale,\n                                                            shadowSolidity, shadowType);\n            break;\n    }\n    return displayList;\n}\n"
  },
  {
    "path": "src/game/shadow.h",
    "content": "#ifndef SHADOW_H\n#define SHADOW_H\n\n#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\n/**\n * Shadow types. Shadows are circles, squares, or hardcoded rectangles, and\n * can be composed of either 4 or 9 vertices.\n */\nenum ShadowType {\n    SHADOW_CIRCLE_9_VERTS = 0,\n    SHADOW_CIRCLE_4_VERTS = 1,\n    SHADOW_CIRCLE_4_VERTS_FLAT_UNUSED = 2,\n    SHADOW_SQUARE_PERMANENT = 10,\n    SHADOW_SQUARE_SCALABLE = 11,\n    SHADOW_SQUARE_TOGGLABLE = 12,\n    /**\n     * This defines an offset after which rectangular shadows with custom\n     * widths and heights can be defined.\n     */\n    SHADOW_RECTANGLE_HARDCODED_OFFSET = 50,\n    SHADOW_CIRCLE_PLAYER = 99\n};\n\n/**\n * Flag for if Mario is on a flying carpet.\n */\nextern s8 sMarioOnFlyingCarpet;\n\n/**\n * The surface type below the current shadow.\n */\nextern s16 sSurfaceTypeBelowShadow;\n\n/**\n * Flag for if the current shadow is above water or lava.\n */\nextern s8 gShadowAboveWaterOrLava;\n\n/**\n * Flag for if Mario is on ice or a flying carpet.\n */\nextern s8 gMarioOnIceOrCarpet;\n\n/**\n * Given the (x, y, z) location of an object, create a shadow below that object\n * with the given initial solidity and \"shadowType\" (described above).\n */\nGfx *create_shadow_below_xyz(f32 xPos, f32 yPos, f32 zPos, s16 shadowScale, u8 shadowSolidity, s8 shadowType);\n\n#endif // SHADOW_H\n"
  },
  {
    "path": "src/game/skybox.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"area.h\"\n#include \"engine/math_util.h\"\n#include \"geo_misc.h\"\n#include \"gfx_dimensions.h\"\n#include \"level_update.h\"\n#include \"memory.h\"\n#include \"save_file.h\"\n#include \"segment2.h\"\n#include \"sm64.h\"\n\n\n/**\n * @file skybox.c\n *\n * Implements the skybox background.\n *\n * It's not exactly a sky\"box\": it's more of a sky tilemap. It renders a 3x3 grid of 32x32 pieces of the\n * whole skybox image, starting from the top left based on the camera's rotation. A skybox image has 64\n * unique 32x32 tiles, with the first two columns duplicated for a total of 80.\n *\n * The tiles are mapped to world space such that 2 full tiles fit on the screen, for a total of\n * 8 tiles around the full 360 degrees. Each tile takes up 45 degrees of the camera's field of view, and\n * the code draws 3 tiles or 135 degrees of the skybox in a frame. But only 2 tiles, or 90 degrees, can\n * fit on-screen at a time.\n *\n * @bug FOV is handled strangely by the code. It is used to scale and rotate the skybox, when really it\n * should probably only be used to calculate the distance drawn from the center of the looked-at tile.\n * But since the game always sets it to 90 degrees, the skybox always scales and rotates the same,\n * regardless of the camera's actual FOV. So even if the camera's FOV is 10 degrees the game draws a\n * full 90 degrees of the skybox, which makes the sky look really far away.\n *\n * @bug Skyboxes unnecessarily repeat the first 2 columns when they could just wrap the col index.\n * Although, the wasted space is only about 128 bytes for each image.\n */\n\n/**\n * Describes the position, tiles, and orientation of the skybox image.\n *\n * Describes the scaled x and y offset into the tilemap, based on the yaw and pitch.  Computes the\n * upperLeftTile index into the skybox's tile list using scaledX and scaledY. See get_top_left_tile_idx.\n *\n * The skybox is always drawn behind everything, because in the level's geo script, the skybox is drawn\n * first, in a display list with the Z buffer disabled\n */\nstruct Skybox {\n    /// The camera's yaw, from 0 to 65536, which maps to 0 to 360 degrees\n    u16 yaw;\n    /// The camera's pitch, which is bounded by +-16384, which maps to -90 to 90 degrees\n    s16 pitch;\n    /// The skybox's X position in world space\n    s32 scaledX;\n    /// The skybox's Y position in world space\n    s32 scaledY;\n\n    /// The index of the upper-left tile in the 3x3 grid that gets drawn\n    s32 upperLeftTile;\n};\n\nstruct Skybox sSkyBoxInfo[2];\n\ntypedef const u8 *const SkyboxTexture[80];\n\nextern SkyboxTexture bbh_skybox_ptrlist;\nextern SkyboxTexture bidw_skybox_ptrlist;\nextern SkyboxTexture bitfs_skybox_ptrlist;\nextern SkyboxTexture bits_skybox_ptrlist;\nextern SkyboxTexture ccm_skybox_ptrlist;\nextern SkyboxTexture cloud_floor_skybox_ptrlist;\nextern SkyboxTexture clouds_skybox_ptrlist;\nextern SkyboxTexture ssl_skybox_ptrlist;\nextern SkyboxTexture water_skybox_ptrlist;\nextern SkyboxTexture wdw_skybox_ptrlist;\n\nSkyboxTexture *sSkyboxTextures[10] = {\n    &water_skybox_ptrlist,\n    &bitfs_skybox_ptrlist,\n    &wdw_skybox_ptrlist,\n    &cloud_floor_skybox_ptrlist,\n    &ccm_skybox_ptrlist,\n    &ssl_skybox_ptrlist,\n    &bbh_skybox_ptrlist,\n    &bidw_skybox_ptrlist,\n    &clouds_skybox_ptrlist,\n    &bits_skybox_ptrlist,\n};\n\n/**\n * The skybox color mask.\n * The final color of each pixel is computed from the bitwise AND of the color and the texture.\n */\nu8 sSkyboxColors[][3] = {\n    { 0x50, 0x64, 0x5A },\n    { 0xFF, 0xFF, 0xFF },\n};\n\n/**\n * Constant used to scale the skybox horizontally to a multiple of the screen's width\n */\n#define SKYBOX_WIDTH (4 * SCREEN_WIDTH)\n/**\n * Constant used to scale the skybox vertically to a multiple of the screen's height\n */\n#define SKYBOX_HEIGHT (4 * SCREEN_HEIGHT)\n\n/**\n * The tile's width in world space.\n * By default, two full tiles can fit in the screen.\n */\n#define SKYBOX_TILE_WIDTH (SCREEN_WIDTH / 2)\n/**\n * The tile's height in world space.\n * By default, two full tiles can fit in the screen.\n */\n#define SKYBOX_TILE_HEIGHT (SCREEN_HEIGHT / 2)\n\n/**\n * The horizontal length of the skybox tilemap in tiles.\n */\n#define SKYBOX_COLS (10)\n/**\n * The vertical length of the skybox tilemap in tiles.\n */\n#define SKYBOX_ROWS (8)\n\n\n/**\n * Convert the camera's yaw into an x position into the scaled skybox image.\n *\n * fov is always 90 degrees, set in draw_skybox_facing_camera.\n *\n * The calculation performed is equivalent to (360 / fov) * (yaw / 65536) * SCREEN_WIDTH\n * in other words: (the number of fov-sized parts of the circle there are) *\n *                 (how far is the camera rotated from 0, scaled 0 to 1)   *\n *                 (the screen width)\n */\ns32 calculate_skybox_scaled_x(s8 player, f32 fov) {\n    f32 yaw = sSkyBoxInfo[player].yaw;\n\n    //! double literals are used instead of floats\n    f32 yawScaled = SCREEN_WIDTH * 360.0 * yaw / (fov * 65536.0);\n    // Round the scaled yaw. Since yaw is a u16, it doesn't need to check for < 0\n    s32 scaledX = yawScaled + 0.5;\n\n    if (scaledX > SKYBOX_WIDTH) {\n        scaledX -= scaledX / SKYBOX_WIDTH * SKYBOX_WIDTH;\n    }\n    return SKYBOX_WIDTH - scaledX;\n}\n\n/**\n * Convert the camera's pitch into a y position in the scaled skybox image.\n *\n * fov may have been used in an earlier version, but the developers changed the function to always use\n * 90 degrees.\n */\ns32 calculate_skybox_scaled_y(s8 player, UNUSED f32 fov) {\n    // Convert pitch to degrees. Pitch is bounded between -90 (looking down) and 90 (looking up).\n    f32 pitchInDegrees = (f32) sSkyBoxInfo[player].pitch * 360.0 / 65535.0;\n\n    // Scale by 360 / fov\n    f32 degreesToScale = 360.0f * pitchInDegrees / 90.0;\n    s32 roundedY = round_float(degreesToScale);\n\n    // Since pitch can be negative, and the tile grid starts 1 octant above the camera's focus, add\n    // 5 octants to the y position\n    s32 scaledY = roundedY + 5 * SKYBOX_TILE_HEIGHT;\n\n    if (scaledY > SKYBOX_HEIGHT) {\n        scaledY = SKYBOX_HEIGHT;\n    }\n    if (scaledY < SCREEN_HEIGHT) {\n        scaledY = SCREEN_HEIGHT;\n    }\n    return scaledY;\n}\n\n/**\n * Converts the upper left xPos and yPos to the index of the upper left tile in the skybox.\n */\nstatic s32 get_top_left_tile_idx(s8 player) {\n    s32 tileCol = sSkyBoxInfo[player].scaledX / SKYBOX_TILE_WIDTH;\n    s32 tileRow = (SKYBOX_HEIGHT - sSkyBoxInfo[player].scaledY) / SKYBOX_TILE_HEIGHT;\n\n    return tileRow * SKYBOX_COLS + tileCol;\n}\n\n/**\n * Generates vertices for the skybox tile.\n *\n * @param tileIndex The index into the 32x32 sections of the whole skybox image. The index is converted\n *                  into an x and y by modulus and division by SKYBOX_COLS. x and y are then scaled by\n *                  SKYBOX_TILE_WIDTH to get a point in world space.\n */\nVtx *make_skybox_rect(s32 tileIndex, s8 colorIndex) {\n    Vtx *verts = alloc_display_list(4 * sizeof(*verts));\n    s16 x = tileIndex % SKYBOX_COLS * SKYBOX_TILE_WIDTH;\n    s16 y = SKYBOX_HEIGHT - tileIndex / SKYBOX_COLS * SKYBOX_TILE_HEIGHT;\n\n    if (verts != NULL) {\n        make_vertex(verts, 0, x, y, -1, 0, 0, sSkyboxColors[colorIndex][0], sSkyboxColors[colorIndex][1],\n                    sSkyboxColors[colorIndex][2], 255);\n        make_vertex(verts, 1, x, y - SKYBOX_TILE_HEIGHT, -1, 0, 31 << 5, sSkyboxColors[colorIndex][0], sSkyboxColors[colorIndex][1],\n                    sSkyboxColors[colorIndex][2], 255);\n        make_vertex(verts, 2, x + SKYBOX_TILE_WIDTH, y - SKYBOX_TILE_HEIGHT, -1, 31 << 5, 31 << 5, sSkyboxColors[colorIndex][0],\n                    sSkyboxColors[colorIndex][1], sSkyboxColors[colorIndex][2], 255);\n        make_vertex(verts, 3, x + SKYBOX_TILE_WIDTH, y, -1, 31 << 5, 0, sSkyboxColors[colorIndex][0], sSkyboxColors[colorIndex][1],\n                    sSkyboxColors[colorIndex][2], 255);\n    } else {\n    }\n    return verts;\n}\n\n/**\n * Draws a 3x3 grid of 32x32 sections of the original skybox image.\n * The row and column are converted into an index into the skybox's tile list, which is then drawn in\n * world space so that the tiles will rotate with the camera.\n */\nvoid draw_skybox_tile_grid(Gfx **dlist, s8 background, s8 player, s8 colorIndex) {\n    s32 row;\n    s32 col;\n\n    for (row = 0; row < 3; row++) {\n        for (col = 0; col < 3; col++) {\n            s32 tileIndex = sSkyBoxInfo[player].upperLeftTile + row * SKYBOX_COLS + col;\n            const u8 *const texture =\n                (*(SkyboxTexture *) segmented_to_virtual(sSkyboxTextures[background]))[tileIndex];\n            Vtx *vertices = make_skybox_rect(tileIndex, colorIndex);\n\n            gLoadBlockTexture((*dlist)++, 32, 32, G_IM_FMT_RGBA, texture);\n            gSPVertex((*dlist)++, VIRTUAL_TO_PHYSICAL(vertices), 4, 0);\n            gSPDisplayList((*dlist)++, dl_draw_quad_verts_0123);\n        }\n    }\n}\n\nvoid *create_skybox_ortho_matrix(s8 player) {\n    f32 left = sSkyBoxInfo[player].scaledX;\n    f32 right = sSkyBoxInfo[player].scaledX + SCREEN_WIDTH;\n    f32 bottom = sSkyBoxInfo[player].scaledY - SCREEN_HEIGHT;\n    f32 top = sSkyBoxInfo[player].scaledY;\n    Mtx *mtx = alloc_display_list(sizeof(*mtx));\n\n#ifdef WIDESCREEN\n    f32 half_width = (4.0f / 3.0f) / GFX_DIMENSIONS_ASPECT_RATIO * SCREEN_WIDTH / 2;\n    f32 center = (sSkyBoxInfo[player].scaledX + SCREEN_WIDTH / 2);\n    if (half_width < SCREEN_WIDTH / 2) {\n        // A wider screen than 4:3\n        left = center - half_width;\n        right = center + half_width;\n    }\n#endif\n\n    if (mtx != NULL) {\n        guOrtho(mtx, left, right, bottom, top, 0.0f, 3.0f, 1.0f);\n    } else {\n    }\n\n    return mtx;\n}\n\n/**\n * Creates the skybox's display list, then draws the 3x3 grid of tiles.\n */\nGfx *init_skybox_display_list(s8 player, s8 background, s8 colorIndex) {\n    s32 dlCommandCount = 5 + (3 * 3) * 7; // 5 for the start and end, plus 9 skybox tiles\n    void *skybox = alloc_display_list(dlCommandCount * sizeof(Gfx));\n    Gfx *dlist = skybox;\n\n    if (skybox == NULL) {\n        return NULL;\n    } else {\n        Mtx *ortho = create_skybox_ortho_matrix(player);\n\n        gSPDisplayList(dlist++, dl_skybox_begin);\n        gSPMatrix(dlist++, VIRTUAL_TO_PHYSICAL(ortho), G_MTX_PROJECTION | G_MTX_MUL | G_MTX_NOPUSH);\n        gSPDisplayList(dlist++, dl_skybox_tile_tex_settings);\n        draw_skybox_tile_grid(&dlist, background, player, colorIndex);\n        gSPDisplayList(dlist++, dl_skybox_end);\n        gSPEndDisplayList(dlist);\n    }\n    return skybox;\n}\n\n/**\n * Draw a skybox facing the direction from pos to foc.\n *\n * @param player Unused, determines which orientation info struct to update\n * @param background The skybox image to use\n * @param fov Unused. It SHOULD control how much the skybox is scaled, but the way it's coded it just\n *            controls how fast the skybox rotates. The given value is replaced with 90 right before the\n *            dl is created\n * @param posX,posY,posZ The camera's position\n * @param focX,focY,focZ The camera's focus.\n */\nGfx *create_skybox_facing_camera(s8 player, s8 background, f32 fov,\n                                    f32 posX, f32 posY, f32 posZ,\n                                    f32 focX, f32 focY, f32 focZ) {\n    f32 cameraFaceX = focX - posX;\n    f32 cameraFaceY = focY - posY;\n    f32 cameraFaceZ = focZ - posZ;\n    s8 colorIndex = 1;\n\n    // If the \"Plunder in the Sunken Ship\" star in JRB is collected, make the sky darker and slightly green\n    if (background == 8\n        && !(save_file_get_star_flags(gCurrSaveFileNum - 1, COURSE_NUM_TO_INDEX(COURSE_JRB)) & (1 << 0))) {\n        colorIndex = 0;\n    }\n\n    //! fov is always set to 90.0f. If this line is removed, then the game crashes because fov is 0 on\n    //! the first frame, which causes a floating point divide by 0\n    fov = 90.0f;\n    sSkyBoxInfo[player].yaw = atan2s(cameraFaceZ, cameraFaceX);\n    sSkyBoxInfo[player].pitch = atan2s(sqrtf(cameraFaceX * cameraFaceX + cameraFaceZ * cameraFaceZ), cameraFaceY);\n    sSkyBoxInfo[player].scaledX = calculate_skybox_scaled_x(player, fov);\n    sSkyBoxInfo[player].scaledY = calculate_skybox_scaled_y(player, fov);\n    sSkyBoxInfo[player].upperLeftTile = get_top_left_tile_idx(player);\n\n    return init_skybox_display_list(player, background, colorIndex);\n}\n"
  },
  {
    "path": "src/game/skybox.h",
    "content": "#ifndef SKYBOX_H\n#define SKYBOX_H\n\n#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\nGfx *create_skybox_facing_camera(s8 player, s8 background, f32 fov,\n                                 f32 posX, f32 posY, f32 posZ,\n                                 f32 focX, f32 focY, f32 focZ);\n\n#endif // SKYBOX_H\n"
  },
  {
    "path": "src/game/sound_init.c",
    "content": "#include <ultra64.h>\n\n#include \"area.h\"\n#include \"audio/external.h\"\n#include \"engine/graph_node.h\"\n#include \"engine/math_util.h\"\n#include \"level_table.h\"\n#include \"level_update.h\"\n#include \"main.h\"\n#include \"paintings.h\"\n#include \"print.h\"\n#include \"profiler.h\"\n#include \"save_file.h\"\n#include \"seq_ids.h\"\n#include \"sm64.h\"\n#include \"sound_init.h\"\n#include \"rumble_init.h\"\n\n#define MUSIC_NONE 0xFFFF\n\nstatic Vec3f unused80339DC0;\nstatic OSMesgQueue sSoundMesgQueue;\nstatic OSMesg sSoundMesgBuf[1];\nstatic struct VblankHandler sSoundVblankHandler;\n\n// Only written to, never read.\nstatic u8 sMusicVolume = 0;\n\nstatic u8 sBgMusicDisabled = FALSE;\nstatic u16 sCurrentMusic = MUSIC_NONE;\nstatic u16 sCurrentShellMusic = MUSIC_NONE;\nstatic u16 sCurrentCapMusic = MUSIC_NONE;\nstatic u8 sPlayingInfiniteStairs = FALSE;\nUNUSED static u8 unused8032C6D8[16] = { 0 };\nstatic s16 sSoundMenuModeToSoundMode[] = { SOUND_MODE_STEREO, SOUND_MODE_MONO, SOUND_MODE_HEADSET };\n// Only the 20th array element is used.\nstatic u32 sMenuSoundsExtra[] = {\n    SOUND_MOVING_TERRAIN_SLIDE + (0 << 16),\n    SOUND_MOVING_TERRAIN_SLIDE + (1 << 16),\n    SOUND_MOVING_TERRAIN_SLIDE + (2 << 16),\n    SOUND_MOVING_TERRAIN_SLIDE + (3 << 16),\n    SOUND_MOVING_TERRAIN_SLIDE + (4 << 16),\n    SOUND_MOVING_TERRAIN_SLIDE + (5 << 16),\n    SOUND_MOVING_TERRAIN_SLIDE + (6 << 16),\n    SOUND_MOVING_LAVA_BURN,\n    SOUND_MOVING_SLIDE_DOWN_TREE,\n    SOUND_MOVING_SLIDE_DOWN_POLE,\n    SOUND_MOVING_QUICKSAND_DEATH,\n    SOUND_MOVING_TERRAIN_RIDING_SHELL,\n    NO_SOUND,\n    SOUND_ENV_BOAT_ROCKING1,\n    SOUND_ENV_ELEVATOR3,\n    SOUND_ENV_UNKNOWN2,\n    SOUND_ENV_WATERFALL1,\n    SOUND_ENV_WATERFALL2,\n    SOUND_ENV_ELEVATOR1,\n    SOUND_ENV_DRONING1,\n    SOUND_ENV_DRONING2,\n    SOUND_ENV_ELEVATOR2,\n    SOUND_ENV_WIND1,\n    SOUND_ENV_WATER,\n    SOUND_AIR_BOWSER_SPIT_FIRE,\n    SOUND_MOVING_AIM_CANNON,\n    SOUND_AIR_LAKITU_FLY,\n    SOUND_AIR_AMP_BUZZ,\n    SOUND_AIR_CASTLE_OUTDOORS_AMBIENT,\n    SOUND_OBJ2_BIRD_CHIRP1,\n    SOUND_GENERAL2_BIRD_CHIRP2,\n    SOUND_OBJ_BIRD_CHIRP3,\n    SOUND_ENV_ELEVATOR2,\n    SOUND_AIR_BLOW_WIND,\n    SOUND_AIR_BLOW_FIRE,\n    SOUND_ENV_ELEVATOR4,\n};\nstatic s8 sPaintingEjectSoundPlayed = FALSE;\n\nvoid play_menu_sounds_extra(s32 a, void *b);\n\n/**\n * Called from threads: thread5_game_loop\n */\nvoid reset_volume(void) {\n    sMusicVolume = 0;\n}\n\n/**\n * Called from threads: thread5_game_loop\n */\nvoid lower_background_noise(s32 a) {\n    switch (a) {\n        case 1:\n            set_audio_muted(TRUE);\n            break;\n        case 2:\n            seq_player_lower_volume(SEQ_PLAYER_LEVEL, 60, 40);\n            break;\n    }\n    sMusicVolume |= a;\n}\n\n/**\n * Called from threads: thread5_game_loop\n */\nvoid raise_background_noise(s32 a) {\n    switch (a) {\n        case 1:\n            set_audio_muted(FALSE);\n            break;\n        case 2:\n            seq_player_unlower_volume(SEQ_PLAYER_LEVEL, 60);\n            break;\n    }\n    sMusicVolume &= ~a;\n}\n\n/**\n * Called from threads: thread5_game_loop\n */\nvoid disable_background_sound(void) {\n    if (sBgMusicDisabled == FALSE) {\n        sBgMusicDisabled = TRUE;\n        sound_banks_disable(SEQ_PLAYER_SFX, SOUND_BANKS_BACKGROUND);\n    }\n}\n\n/**\n * Called from threads: thread5_game_loop\n */\nvoid enable_background_sound(void) {\n    if (sBgMusicDisabled == TRUE) {\n        sBgMusicDisabled = FALSE;\n        sound_banks_enable(SEQ_PLAYER_SFX, SOUND_BANKS_BACKGROUND);\n    }\n}\n\n/**\n * Sets the sound mode\n *\n * Called from threads: thread5_game_loop\n */\nvoid set_sound_mode(u16 soundMode) {\n    if (soundMode < 3) {\n        audio_set_sound_mode(sSoundMenuModeToSoundMode[soundMode]);\n    }\n}\n\n/**\n * Wrapper method by menu used to set the sound via flags.\n *\n * Called from threads: thread5_game_loop\n */\nvoid play_menu_sounds(s16 soundMenuFlags) {\n    if (soundMenuFlags & SOUND_MENU_FLAG_HANDAPPEAR) {\n        play_sound(SOUND_MENU_HAND_APPEAR, gGlobalSoundSource);\n    } else if (soundMenuFlags & SOUND_MENU_FLAG_HANDISAPPEAR) {\n        play_sound(SOUND_MENU_HAND_DISAPPEAR, gGlobalSoundSource);\n    } else if (soundMenuFlags & SOUND_MENU_FLAG_UNKNOWN1) {\n        play_sound(SOUND_MENU_UNK0C, gGlobalSoundSource);\n    } else if (soundMenuFlags & SOUND_MENU_FLAG_PINCHMARIOFACE) {\n        play_sound(SOUND_MENU_PINCH_MARIO_FACE, gGlobalSoundSource);\n    } else if (soundMenuFlags & SOUND_MENU_FLAG_PINCHMARIOFACE2) {\n        play_sound(SOUND_MENU_PINCH_MARIO_FACE, gGlobalSoundSource);\n    } else if (soundMenuFlags & SOUND_MENU_FLAG_LETGOMARIOFACE) {\n        play_sound(SOUND_MENU_LET_GO_MARIO_FACE, gGlobalSoundSource);\n    } else if (soundMenuFlags & SOUND_MENU_FLAG_CAMERAZOOMIN) {\n        play_sound(SOUND_MENU_CAMERA_ZOOM_IN, gGlobalSoundSource);\n    } else if (soundMenuFlags & SOUND_MENU_FLAG_CAMERAZOOMOUT) {\n        play_sound(SOUND_MENU_CAMERA_ZOOM_OUT, gGlobalSoundSource);\n    }\n\n    if (soundMenuFlags & 0x100) {\n        play_menu_sounds_extra(20, NULL);\n    }\n#if ENABLE_RUMBLE\n    if (soundMenuFlags & SOUND_MENU_FLAG_LETGOMARIOFACE) {\n        queue_rumble_data(10, 60);\n    }\n#endif\n}\n\n/**\n * Plays the painting eject sound effect if it has not already been played\n *\n * Called from threads: thread5_game_loop\n */\nvoid play_painting_eject_sound(void) {\n    if (gRipplingPainting != NULL && gRipplingPainting->state == PAINTING_ENTERED) {\n        // ripple when Mario enters painting\n        if (!sPaintingEjectSoundPlayed) {\n            play_sound(SOUND_GENERAL_PAINTING_EJECT,\n                       gMarioStates[0].marioObj->header.gfx.cameraToObject);\n        }\n        sPaintingEjectSoundPlayed = TRUE;\n    } else {\n        sPaintingEjectSoundPlayed = FALSE;\n    }\n}\n\n/**\n * Called from threads: thread5_game_loop\n */\nvoid play_infinite_stairs_music(void) {\n    u8 shouldPlay = FALSE;\n\n    /* Infinite stairs? */\n    if (gCurrLevelNum == LEVEL_CASTLE && gCurrAreaIndex == 2 && gMarioState->numStars < 70) {\n        if (gMarioState->floor != NULL && gMarioState->floor->room == 6) {\n            if (gMarioState->pos[2] < 2540.0f) {\n                shouldPlay = TRUE;\n            }\n        }\n    }\n\n    if (sPlayingInfiniteStairs ^ shouldPlay) {\n        sPlayingInfiniteStairs = shouldPlay;\n        if (shouldPlay) {\n            play_secondary_music(SEQ_EVENT_ENDLESS_STAIRS, 0, 255, 1000);\n        } else {\n            func_80321080(500);\n        }\n    }\n}\n\n/**\n * Called from threads: thread5_game_loop\n */\nvoid set_background_music(u16 a, u16 seqArgs, s16 fadeTimer) {\n    if (gResetTimer == 0 && seqArgs != sCurrentMusic) {\n        if (gCurrCreditsEntry != NULL) {\n            sound_reset(7);\n        } else {\n            sound_reset(a);\n        }\n\n        if (!gNeverEnteredCastle || seqArgs != SEQ_LEVEL_INSIDE_CASTLE) {\n            play_music(SEQ_PLAYER_LEVEL, seqArgs, fadeTimer);\n            sCurrentMusic = seqArgs;\n        }\n    }\n}\n\n/**\n * Called from threads: thread3_main, thread5_game_loop\n */\nvoid fadeout_music(s16 fadeOutTime) {\n    func_803210D4(fadeOutTime);\n    sCurrentMusic = MUSIC_NONE;\n    sCurrentShellMusic = MUSIC_NONE;\n    sCurrentCapMusic = MUSIC_NONE;\n}\n\n/**\n * Called from threads: thread5_game_loop\n */\nvoid fadeout_level_music(s16 fadeTimer) {\n    seq_player_fade_out(SEQ_PLAYER_LEVEL, fadeTimer);\n    sCurrentMusic = MUSIC_NONE;\n    sCurrentShellMusic = MUSIC_NONE;\n    sCurrentCapMusic = MUSIC_NONE;\n}\n\n/**\n * Called from threads: thread5_game_loop\n */\nvoid play_cutscene_music(u16 seqArgs) {\n    play_music(SEQ_PLAYER_LEVEL, seqArgs, 0);\n    sCurrentMusic = seqArgs;\n}\n\n/**\n * Called from threads: thread5_game_loop\n */\nvoid play_shell_music(void) {\n    play_music(SEQ_PLAYER_LEVEL, SEQUENCE_ARGS(4, SEQ_EVENT_POWERUP | SEQ_VARIATION), 0);\n    sCurrentShellMusic = SEQUENCE_ARGS(4, SEQ_EVENT_POWERUP | SEQ_VARIATION);\n}\n\n/**\n * Called from threads: thread5_game_loop\n */\nvoid stop_shell_music(void) {\n    if (sCurrentShellMusic != MUSIC_NONE) {\n        stop_background_music(sCurrentShellMusic);\n        sCurrentShellMusic = MUSIC_NONE;\n    }\n}\n\n/**\n * Called from threads: thread5_game_loop\n */\nvoid play_cap_music(u16 seqArgs) {\n    play_music(SEQ_PLAYER_LEVEL, seqArgs, 0);\n    if (sCurrentCapMusic != MUSIC_NONE && sCurrentCapMusic != seqArgs) {\n        stop_background_music(sCurrentCapMusic);\n    }\n    sCurrentCapMusic = seqArgs;\n}\n\n/**\n * Called from threads: thread5_game_loop\n */\nvoid fadeout_cap_music(void) {\n    if (sCurrentCapMusic != MUSIC_NONE) {\n        fadeout_background_music(sCurrentCapMusic, 600);\n    }\n}\n\n/**\n * Called from threads: thread5_game_loop\n */\nvoid stop_cap_music(void) {\n    if (sCurrentCapMusic != MUSIC_NONE) {\n        stop_background_music(sCurrentCapMusic);\n        sCurrentCapMusic = MUSIC_NONE;\n    }\n}\n\n/**\n * Called from threads: thread5_game_loop\n */\nvoid play_menu_sounds_extra(s32 a, void *b) {\n    play_sound(sMenuSoundsExtra[a], b);\n}\n\n/**\n * Called from threads: thread5_game_loop\n */\nvoid audio_game_loop_tick(void) {\n    audio_signal_game_loop_tick();\n}\n\n/**\n * Sound processing thread. Runs at 60 FPS.\n */\nvoid thread4_sound(UNUSED void *arg) {\n    audio_init();\n    sound_init();\n\n    // Zero-out unused vector\n    vec3f_copy(unused80339DC0, gVec3fZero);\n\n    osCreateMesgQueue(&sSoundMesgQueue, sSoundMesgBuf, ARRAY_COUNT(sSoundMesgBuf));\n    set_vblank_handler(1, &sSoundVblankHandler, &sSoundMesgQueue, (OSMesg) 512);\n\n    while (TRUE) {\n        OSMesg msg;\n\n        osRecvMesg(&sSoundMesgQueue, &msg, OS_MESG_BLOCK);\n        if (gResetTimer < 25) {\n            struct SPTask *spTask;\n            profiler_log_thread4_time();\n            spTask = create_next_audio_frame_task();\n            if (spTask != NULL) {\n                dispatch_audio_sptask(spTask);\n            }\n            profiler_log_thread4_time();\n        }\n    }\n}\n"
  },
  {
    "path": "src/game/sound_init.h",
    "content": "#ifndef SOUND_INIT_H\n#define SOUND_INIT_H\n\n#include <PR/ultratypes.h>\n\n#include \"macros.h\"\n\n#define SOUND_MENU_FLAG_HANDAPPEAR              0x01\n#define SOUND_MENU_FLAG_HANDISAPPEAR            0x02\n#define SOUND_MENU_FLAG_UNKNOWN1                0x04\n#define SOUND_MENU_FLAG_PINCHMARIOFACE          0x08\n#define SOUND_MENU_FLAG_PINCHMARIOFACE2         0x10\n#define SOUND_MENU_FLAG_LETGOMARIOFACE          0x20\n#define SOUND_MENU_FLAG_CAMERAZOOMIN            0x40\n#define SOUND_MENU_FLAG_CAMERAZOOMOUT           0x80\n\n#define SOUND_MENU_MODE_STEREO       0\n#define SOUND_MENU_MODE_MONO         1\n#define SOUND_MENU_MODE_HEADSET      2\n\nvoid reset_volume(void);\nvoid raise_background_noise(s32 a);\nvoid lower_background_noise(s32 a);\nvoid disable_background_sound(void);\nvoid enable_background_sound(void);\nvoid set_sound_mode(u16 soundMode);\nvoid play_menu_sounds(s16 soundMenuFlags);\nvoid play_painting_eject_sound(void);\nvoid play_infinite_stairs_music(void);\nvoid set_background_music(u16 a, u16 seqArgs, s16 fadeTimer);\nvoid fadeout_music(s16 fadeOutTime);\nvoid fadeout_level_music(s16 fadeTimer);\nvoid play_cutscene_music(u16 seqArgs);\nvoid play_shell_music(void);\nvoid stop_shell_music(void);\nvoid play_cap_music(u16 seqArgs);\nvoid fadeout_cap_music(void);\nvoid stop_cap_music(void);\nvoid audio_game_loop_tick(void);\nvoid thread4_sound(UNUSED void *arg);\n\n#endif // SOUND_INIT_H\n"
  },
  {
    "path": "src/game/spawn_object.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"audio/external.h\"\n#include \"engine/geo_layout.h\"\n#include \"engine/graph_node.h\"\n#include \"engine/math_util.h\"\n#include \"engine/surface_collision.h\"\n#include \"level_table.h\"\n#include \"object_constants.h\"\n#include \"object_fields.h\"\n#include \"object_helpers.h\"\n#include \"object_list_processor.h\"\n#include \"spawn_object.h\"\n#include \"types.h\"\n\n/**\n * An unused linked list struct that seems to have been replaced by ObjectNode.\n */\nstruct LinkedList {\n    struct LinkedList *next;\n    struct LinkedList *prev;\n};\n\n/**\n * Clear the doubly linked usedList. Singly link each item in the pool into\n * a list, and return this list in pFreeList.\n * Appears to have been replaced by init_free_object_list.\n */\nvoid unused_init_free_list(struct LinkedList *usedList, struct LinkedList **pFreeList,\n                           struct LinkedList *pool, s32 itemSize, s32 poolLength) {\n    s32 i;\n    struct LinkedList *node = pool;\n\n    usedList->next = usedList;\n    usedList->prev = usedList;\n\n    *pFreeList = pool;\n\n    for (i = 0; i < poolLength - 1; i++) {\n        // Add next node to free list\n        node = (struct LinkedList *) ((u8 *) node + itemSize);\n        pool->next = node;\n        pool = node;\n    }\n\n    // End the list\n    pool->next = NULL;\n}\n\n/**\n * Attempt to allocate a node from freeList (singly linked) and append it\n * to the end of destList (doubly linked). Return the object, or NULL if\n * freeList is empty.\n * Appears to have been replaced by try_allocate_object.\n */\nstruct LinkedList *unused_try_allocate(struct LinkedList *destList,\n                                       struct LinkedList *freeList) {\n    struct LinkedList *node = freeList->next;\n\n    if (node != NULL) {\n        // Remove from free list\n        freeList->next = node->next;\n\n        // Insert at the end of destination list\n        node->prev = destList->prev;\n        node->next = destList;\n        destList->prev->next = node;\n        destList->prev = node;\n    }\n\n    return node;\n}\n\n/**\n * Attempt to allocate an object from freeList (singly linked) and append it\n * to the end of destList (doubly linked). Return the object, or NULL if\n * freeList is empty.\n */\nstruct Object *try_allocate_object(struct ObjectNode *destList, struct ObjectNode *freeList) {\n    struct ObjectNode *nextObj;\n\n    if ((nextObj = freeList->next) != NULL) {\n        // Remove from free list\n        freeList->next = nextObj->next;\n\n        // Insert at end of destination list\n        nextObj->prev = destList->prev;\n        nextObj->next = destList;\n        destList->prev->next = nextObj;\n        destList->prev = nextObj;\n    } else {\n        return NULL;\n    }\n\n    geo_remove_child(&nextObj->gfx.node);\n    geo_add_child(&gObjParentGraphNode, &nextObj->gfx.node);\n\n    return (struct Object *) nextObj;\n}\n\n/**\n * Remove the node from the doubly linked list it's in, and place it in the\n * singly linked freeList.\n * This function seems to have been replaced by deallocate_object.\n */\nvoid unused_deallocate(struct LinkedList *freeList, struct LinkedList *node) {\n    // Remove from doubly linked list\n    node->next->prev = node->prev;\n    node->prev->next = node->next;\n\n    // Insert at beginning of singly linked list\n    node->next = freeList->next;\n    freeList->next = node;\n}\n/**\n * Remove the given object from the object list that it's currently in, and\n * insert it at the beginning of the free list (singly linked).\n */\nstatic void deallocate_object(struct ObjectNode *freeList, struct ObjectNode *obj) {\n    // Remove from object list\n    obj->next->prev = obj->prev;\n    obj->prev->next = obj->next;\n\n    // Insert at beginning of free list\n    obj->next = freeList->next;\n    freeList->next = obj;\n}\n\n/**\n * Add every object in the pool to the free object list.\n */\nvoid init_free_object_list(void) {\n    s32 i;\n    s32 poolLength = OBJECT_POOL_CAPACITY;\n\n    // Add the first object in the pool to the free list\n    struct Object *obj = &gObjectPool[0];\n    gFreeObjectList.next = (struct ObjectNode *) obj;\n\n    // Link each object in the pool to the following object\n    for (i = 0; i < poolLength - 1; i++) {\n        obj->header.next = &(obj + 1)->header;\n        obj++;\n    }\n\n    // End the list\n    obj->header.next = NULL;\n}\n\n/**\n * Clear each object list, without adding the objects back to the free list.\n */\nvoid clear_object_lists(struct ObjectNode *objLists) {\n    s32 i;\n\n    for (i = 0; i < NUM_OBJ_LISTS; i++) {\n        objLists[i].next = &objLists[i];\n        objLists[i].prev = &objLists[i];\n    }\n}\n\n/**\n * This function looks broken, but it appears to attempt to delete the leaf\n * graph nodes under obj and obj's siblings.\n */\nUNUSED static void unused_delete_leaf_nodes(struct Object *obj) {\n    struct Object *children;\n    struct Object *sibling;\n    struct Object *obj0 = obj;\n\n    if ((children = (struct Object *) obj->header.gfx.node.children) != NULL) {\n        unused_delete_leaf_nodes(children);\n    } else {\n        // No children\n        mark_obj_for_deletion(obj);\n    }\n\n    // Probably meant to be !=\n    while ((sibling = (struct Object *) obj->header.gfx.node.next) == obj0) {\n        unused_delete_leaf_nodes(sibling);\n        obj = (struct Object *) sibling->header.gfx.node.next;\n    }\n}\n\n/**\n * Free the given object.\n */\nvoid unload_object(struct Object *obj) {\n    obj->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n    obj->prevObj = NULL;\n\n    obj->header.gfx.throwMatrix = NULL;\n    stop_sounds_from_source(obj->header.gfx.cameraToObject);\n    geo_remove_child(&obj->header.gfx.node);\n    geo_add_child(&gObjParentGraphNode, &obj->header.gfx.node);\n\n    obj->header.gfx.node.flags &= ~GRAPH_RENDER_BILLBOARD;\n    obj->header.gfx.node.flags &= ~GRAPH_RENDER_ACTIVE;\n\n    deallocate_object(&gFreeObjectList, &obj->header);\n}\n\n/**\n * Attempt to allocate a new object slot into the given object list, freeing\n * an unimportant object if necessary. If this is not possible, hang using an\n * infinite loop.\n */\nstruct Object *allocate_object(struct ObjectNode *objList) {\n    s32 i;\n    struct Object *obj = try_allocate_object(objList, &gFreeObjectList);\n\n    // The object list is full if the newly created pointer is NULL.\n    // If this happens, we first attempt to unload unimportant objects\n    // in order to finish allocating the object.\n    if (obj == NULL) {\n        // Look for an unimportant object to kick out.\n        struct Object *unimportantObj = find_unimportant_object();\n\n        // If no unimportant object exists, then the object pool is exhausted.\n        if (unimportantObj == NULL) {\n            // We've met with a terrible fate.\n            while (TRUE) {\n            }\n        } else {\n            // If an unimportant object does exist, unload it and take its slot.\n            unload_object(unimportantObj);\n            obj = try_allocate_object(objList, &gFreeObjectList);\n            if (gCurrentObject == obj) {\n                //! Uh oh, the unimportant object was in the middle of\n                //  updating! This could cause some interesting logic errors,\n                //  but I don't know of any unimportant objects that spawn\n                //  other objects.\n            }\n        }\n    }\n\n    // Initialize object fields\n\n    obj->activeFlags = ACTIVE_FLAG_ACTIVE | ACTIVE_FLAG_UNK8;\n    obj->parentObj = obj;\n    obj->prevObj = NULL;\n    obj->collidedObjInteractTypes = 0;\n    obj->numCollidedObjs = 0;\n\n#if IS_64_BIT\n    for (i = 0; i < 0x50; i++) {\n        obj->rawData.asS32[i] = 0;\n        obj->ptrData.asVoidPtr[i] = NULL;\n    }\n#else\n    // -O2 needs everything until = on the same line\n    for (i = 0; i < 0x50; i++) obj->rawData.asS32[i] = 0;\n#endif\n\n    obj->unused1 = 0;\n    obj->bhvStackIndex = 0;\n    obj->bhvDelayTimer = 0;\n\n    obj->hitboxRadius = 50.0f;\n    obj->hitboxHeight = 100.0f;\n    obj->hurtboxRadius = 0.0f;\n    obj->hurtboxHeight = 0.0f;\n    obj->hitboxDownOffset = 0.0f;\n    obj->unused2 = 0;\n\n    obj->platform = NULL;\n    obj->collisionData = NULL;\n    obj->oIntangibleTimer = -1;\n    obj->oDamageOrCoinValue = 0;\n    obj->oHealth = 2048;\n\n    obj->oCollisionDistance = 1000.0f;\n    if (gCurrLevelNum == LEVEL_TTC) {\n        obj->oDrawingDistance = 2000.0f;\n    } else {\n        obj->oDrawingDistance = 4000.0f;\n    }\n\n    mtxf_identity(obj->transform);\n\n    obj->respawnInfoType = RESPAWN_INFO_TYPE_NULL;\n    obj->respawnInfo = NULL;\n\n    obj->oDistanceToMario = 19000.0f;\n    obj->oRoom = -1;\n\n    obj->header.gfx.node.flags &= ~GRAPH_RENDER_INVISIBLE;\n    obj->header.gfx.pos[0] = -10000.0f;\n    obj->header.gfx.pos[1] = -10000.0f;\n    obj->header.gfx.pos[2] = -10000.0f;\n    obj->header.gfx.throwMatrix = NULL;\n\n    return obj;\n}\n\n/**\n * If the object is close to being on the floor, move it to be exactly on the floor.\n */\nstatic void snap_object_to_floor(struct Object *obj) {\n    struct Surface *surface;\n\n    obj->oFloorHeight = find_floor(obj->oPosX, obj->oPosY, obj->oPosZ, &surface);\n\n    if (obj->oFloorHeight + 2.0f > obj->oPosY && obj->oPosY > obj->oFloorHeight - 10.0f) {\n        obj->oPosY = obj->oFloorHeight;\n        obj->oMoveFlags |= OBJ_MOVE_ON_GROUND;\n    }\n}\n\n/**\n * Spawn an object at the origin with the behavior script at virtual address bhvScript.\n */\nstruct Object *create_object(const BehaviorScript *bhvScript) {\n    s32 objListIndex;\n    struct Object *obj;\n    struct ObjectNode *objList;\n    const BehaviorScript *behavior = bhvScript;\n\n    // If the first behavior script command is \"begin <object list>\", then\n    // extract the object list from it\n    if ((bhvScript[0] >> 24) == 0) {\n        objListIndex = (bhvScript[0] >> 16) & 0xFFFF;\n    } else {\n        objListIndex = OBJ_LIST_DEFAULT;\n    }\n\n    objList = &gObjectLists[objListIndex];\n    obj = allocate_object(objList);\n\n    obj->curBhvCommand = bhvScript;\n    obj->behavior = behavior;\n\n    if (objListIndex == OBJ_LIST_UNIMPORTANT) {\n        obj->activeFlags |= ACTIVE_FLAG_UNIMPORTANT;\n    }\n\n    //! They intended to snap certain objects to the floor when they spawn.\n    //  However, at this point the object's position is the origin. So this will\n    //  place the object at the floor beneath the origin. Typically this\n    //  doesn't matter since the caller of this function sets oPosX/Y/Z\n    //  themselves.\n    switch (objListIndex) {\n        case OBJ_LIST_GENACTOR:\n        case OBJ_LIST_PUSHABLE:\n        case OBJ_LIST_POLELIKE:\n            snap_object_to_floor(obj);\n            break;\n        default:\n            break;\n    }\n\n    return obj;\n}\n\n/**\n * Mark an object to be unloaded at the end of the frame.\n */\nvoid mark_obj_for_deletion(struct Object *obj) {\n    //! Same issue as obj_mark_for_deletion\n    obj->activeFlags = ACTIVE_FLAG_DEACTIVATED;\n}\n"
  },
  {
    "path": "src/game/spawn_object.h",
    "content": "#ifndef SPAWN_OBJECT_H\n#define SPAWN_OBJECT_H\n\n#include \"types.h\"\n\nvoid init_free_object_list(void);\nvoid clear_object_lists(struct ObjectNode *objLists);\nvoid unload_object(struct Object *obj);\nstruct Object *create_object(const BehaviorScript *bhvScript);\nvoid mark_obj_for_deletion(struct Object *obj);\n\n#endif // SPAWN_OBJECT_H\n"
  },
  {
    "path": "src/game/spawn_sound.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"audio/external.h\"\n#include \"behavior_data.h\"\n#include \"engine/behavior_script.h\"\n#include \"engine/graph_node.h\"\n#include \"object_helpers.h\"\n#include \"object_list_processor.h\"\n#include \"sm64.h\"\n#include \"spawn_sound.h\"\n#include \"rumble_init.h\"\n\n/*\n * execute an object's current sound state with a provided array\n * of sound states. Used for the stepping sounds of various\n * objects. (King Bobomb, Bowser, King Whomp)\n */\nvoid exec_anim_sound_state(struct SoundState *soundStates) {\n    s32 stateIdx = gCurrentObject->oSoundStateID;\n\n    switch (soundStates[stateIdx].playSound) {\n        // since we have an array of sound states corresponding to\n        // various behaviors, not all entries intend to play sounds. the\n        // boolean being 0 for unused entries skips these states.\n        case FALSE:\n            break;\n        case TRUE: {\n            s32 animFrame;\n\n            // in the sound state information, -1 (0xFF) is for empty\n            // animFrame entries. These checks skips them.\n            if ((animFrame = soundStates[stateIdx].animFrame1) >= 0) {\n                if (cur_obj_check_anim_frame(animFrame)) {\n                    cur_obj_play_sound_2(soundStates[stateIdx].soundMagic);\n                }\n            }\n\n            if ((animFrame = soundStates[stateIdx].animFrame2) >= 0) {\n                if (cur_obj_check_anim_frame(animFrame)) {\n                    cur_obj_play_sound_2(soundStates[stateIdx].soundMagic);\n                }\n            }\n        } break;\n    }\n}\n\n/*\n * Create a sound spawner for objects that need a sound play once.\n * (Breakable walls, King Bobomb exploding, etc)\n */\nvoid create_sound_spawner(s32 soundMagic) {\n    struct Object *obj = spawn_object(gCurrentObject, 0, bhvSoundSpawner);\n\n    obj->oSoundEffectUnkF4 = soundMagic;\n}\n\n/*\n * The following 2 functions are relevant to the sound state function\n * above. While only cur_obj_play_sound_2 is used, they may have been intended as\n * separate left/right leg functions that went unused.\n */\nvoid cur_obj_play_sound_1(s32 soundMagic) {\n    if (gCurrentObject->header.gfx.node.flags & GRAPH_RENDER_ACTIVE) {\n        play_sound(soundMagic, gCurrentObject->header.gfx.cameraToObject);\n    }\n}\n\nvoid cur_obj_play_sound_2(s32 soundMagic) {\n    if (gCurrentObject->header.gfx.node.flags & GRAPH_RENDER_ACTIVE) {\n        play_sound(soundMagic, gCurrentObject->header.gfx.cameraToObject);\n#if ENABLE_RUMBLE\n        if (soundMagic == SOUND_OBJ_BOWSER_WALK) {\n            queue_rumble_data(3, 60);\n        }\n        if (soundMagic == SOUND_OBJ_POUNDING_LOUD) {\n            queue_rumble_data(3, 60);\n        }\n        if (soundMagic == SOUND_OBJ_WHOMP) {\n            queue_rumble_data(5, 80);\n        }\n#endif\n    }\n}\n\n/*\n * These 2 functions below are completely unreferenced in all versions\n * of Super Mario 64. They are likely functions which facilitated\n * calculation of distance of an object to volume, since these are\n * common implementations of such a concept, and the fact they are\n * adjacent to other sound functions. The fact there are 2 functions\n * might show that the developers were testing several ranges, or certain\n * objects had different ranges, or had these for other unknown purposes.\n * Technically, these functions are only educated guesses. Trust these\n * interpretations at your own discretion.\n */\ns32 calc_dist_to_volume_range_1(f32 distance) { // range from 60-124\n    s32 volume;\n\n    if (distance < 500.0f) {\n        volume = 127;\n    } else if (1500.0f < distance) {\n        volume = 0;\n    } else {\n        volume = (((distance - 500.0f) / 1000.0f) * 64.0f) + 60.0f;\n    }\n\n    return volume;\n}\n\ns32 calc_dist_to_volume_range_2(f32 distance) { // range from 79.2-143.2\n    s32 volume;\n\n    if (distance < 1300.0f) {\n        volume = 127;\n    } else if (2300.0f < distance) {\n        volume = 0;\n    } else {\n        volume = (((distance - 1000.0f) / 1000.0f) * 64.0f) + 60.0f;\n    }\n\n    return volume;\n}\n"
  },
  {
    "path": "src/game/spawn_sound.h",
    "content": "#ifndef SPAWN_SOUND_H\n#define SPAWN_SOUND_H\n\n#include <PR/ultratypes.h>\n\nstruct SoundState {\n    s16 playSound; // if this is 1, the info below will\n                   // be used to determine the sound behavior\n                   // for the object. if 0, this is skipped.\n    s8 animFrame1; // the sound state provides 2 anim frames for\n                   // when the provided sound can be played.\n                   // these 2 variables probably coorespond to\n                   // left/right foot.\n    s8 animFrame2;\n    s32 soundMagic;\n};\n\nvoid cur_obj_play_sound_1(s32 soundMagic);\nvoid cur_obj_play_sound_2(s32 soundMagic);\nvoid create_sound_spawner(s32 soundMagic);\nvoid exec_anim_sound_state(struct SoundState *soundStates);\n\n#endif // SPAWN_SOUND_H\n"
  },
  {
    "path": "src/goddard/bad_declarations.h",
    "content": "#ifndef GD_BAD_DECLARATIONS_H\n#define GD_BAD_DECLARATIONS_H\n\n#include \"gd_types.h\"\n\n/**\n * @file bad_declarations.h\n *\n * Match incorrect type promotion for two declared functions.\n *\n * There is an issue with the compiled code for these function calls in files\n * outside of the files in which they were defined: instead of passing f32's,\n * the caller passes f64's.\n *\n * The only possible reason I can come up with for this behavior is that\n * goddard only declared (not prototyped) his functions in the headers,\n * and didn't include the header in the function's defining .c file.\n * (Even IDO 5.3 cares about illegal promotion of types!) This results in\n * default argument promotion, which is incorrect in this case.\n *\n * Since that's an awful practice to emulate, include this file (first!) to prevent\n * the proper prototypes of these functions from being seen by files with the\n * the incorrectly compiled calls.\n*/\n\n#ifndef AVOID_UB\n\n#define GD_USE_BAD_DECLARATIONS\n\n/* shape_helper.h */\nextern struct ObjFace *make_face_with_colour();\n/* should be: make_face_with_colour(f32, f32, f32) */\n\n/* old_menu.h */\nextern struct ObjLabel *make_label();\n/* should be: make_label(struct ObjValPtr *, char *, s32, f32, f32, f32) */\n\n#endif /* !AVOID_UB */\n\n#endif // GD_BAD_DECLARATIONS_H\n"
  },
  {
    "path": "src/goddard/debug_utils.c",
    "content": "#include <PR/ultratypes.h>\n#include <stdarg.h>\n\n#include \"debug_utils.h\"\n#include \"gd_types.h\"\n#include \"macros.h\"\n#include \"renderer.h\"\n#include \"draw_objects.h\"\n\n// types\nstruct UnkBufThing {\n    /* 0x00 */ s32 size;\n    /* 0x04 */ char name[0x40];\n}; /* sizeof = 0x44 */\n\n// data\nstatic s32 sNumRoutinesInStack = 0; // @ 801A8280\nstatic s32 sTimerGadgetColours[7] = {\n    COLOUR_RED,\n    COLOUR_WHITE,\n    COLOUR_GREEN,\n    COLOUR_BLUE,\n    COLOUR_GRAY,\n    COLOUR_YELLOW,\n    COLOUR_PINK\n};\nstatic s32 sNumActiveMemTrackers = 0;   // @ 801A82A0\nstatic u32 sPrimarySeed = 0x12345678;   // @ 801A82A4\nstatic u32 sSecondarySeed = 0x58374895; // @ 801A82A8\n\n// bss\nu8 *gGdStreamBuffer;                                        // @ 801BA190\nstatic const char *sRoutineNames[64];                       // @ 801BA198\nstatic s32 sTimingActive;                                   // @ 801BA298\nstatic struct GdTimer sTimers[GD_NUM_TIMERS];               // @ 801BA2A0\nstatic struct MemTracker sMemTrackers[GD_NUM_MEM_TRACKERS]; // @ 801BA720\nstatic struct MemTracker *sActiveMemTrackers[16];           // @ 801BA920\n\n/*\n * Memtrackers\n *\n * These are used to monitor how much heap memory is being used by certain\n * operations.\n * To create a memtracker, call new_memtracker with a unique name.\n * To record the amount of memory used by a certain allocation, call\n * start_memtracker before allocating memory, and call stop_memtracker after\n * allocating memory.\n * The memtracker keeps track of the memory allocated between a single\n * start_memtracker/stop_memtracker pair as well as the total memory allocated\n * of all start_memtracker/stop_memtracker pairs.\n */\n\n/**\n * Creates a new memtracker with the specified name\n */\nstruct MemTracker *new_memtracker(const char *name) {\n    s32 i;\n    struct MemTracker *tracker = NULL;\n\n    for (i = 0; i < ARRAY_COUNT(sMemTrackers); i++) {\n        if (sMemTrackers[i].name == NULL) {\n            sMemTrackers[i].name = name;\n            tracker = &sMemTrackers[i];\n            break;\n        }\n    }\n\n    if (tracker != NULL) {\n        tracker->total = 0.0f;\n    }\n\n    return tracker;\n}\n\n/**\n * Returns the memtracker with the specified name, or NULL if it\n * does not exist\n */\nstruct MemTracker *get_memtracker(const char *name) {\n    s32 i;\n\n    for (i = 0; i < ARRAY_COUNT(sMemTrackers); i++) {\n        if (sMemTrackers[i].name != NULL) {\n            if (gd_str_not_equal(sMemTrackers[i].name, name) == FALSE) {\n                return &sMemTrackers[i];\n            }\n        }\n    }\n\n    return NULL;\n}\n\n/**\n * Records the amount of heap usage before allocating memory.\n */\nstruct MemTracker *start_memtracker(const char *name) {\n    struct MemTracker *tracker = get_memtracker(name);\n\n    // Create one if it doesn't exist\n    if (tracker == NULL) {\n        tracker = new_memtracker(name);\n        if (tracker == NULL) {\n            fatal_printf(\"Unable to make memtracker '%s'\", name);\n        }\n    }\n\n    tracker->begin = (f32) get_alloc_mem_amt();\n    if (sNumActiveMemTrackers >= ARRAY_COUNT(sActiveMemTrackers)) {\n        fatal_printf(\"too many memtracker calls\");\n    }\n\n    sActiveMemTrackers[sNumActiveMemTrackers++] = tracker;\n\n    return tracker;\n}\n\n/* @ 23ABE0 -> 23AC28; not called; orig name: Unknown8018C410 */\nvoid print_most_recent_memtracker_name(void) {\n    gd_printf(\"%s\\n\", sActiveMemTrackers[sNumActiveMemTrackers - 1]->name);\n}\n\n/**\n * Records the amount of heap usage after allocating memory.\n */\nu32 stop_memtracker(const char *name) {\n    struct MemTracker *tracker;\n\n    if (sNumActiveMemTrackers-- < 0) {\n        fatal_printf(\"bad mem tracker count\");\n    }\n\n    tracker = get_memtracker(name);\n    if (tracker == NULL) {\n        fatal_printf(\"memtracker '%s' not found\", name);\n    }\n\n    tracker->end = get_alloc_mem_amt();\n    tracker->total += (tracker->end - tracker->begin);\n\n    return (u32) tracker->total;\n}\n\n/**\n * Destroys all memtrackers\n */\nvoid remove_all_memtrackers(void) {\n    s32 i;\n\n    for (i = 0; i < ARRAY_COUNT(sMemTrackers); i++) {\n        sMemTrackers[i].name = NULL;\n        sMemTrackers[i].begin = 0.0f;\n        sMemTrackers[i].end = 0.0f;\n        sMemTrackers[i].total = 0.0f;\n    }\n\n#ifdef AVOID_UB\n    sNumActiveMemTrackers = 0;\n#endif\n}\n\n/**\n * Returns a memtracker by index rather than name\n */\nstruct MemTracker *get_memtracker_by_index(s32 index) {\n    return &sMemTrackers[index];\n}\n\n/**\n * Prints the total memory allocated for each memtracker\n */\nvoid print_all_memtrackers(void) {\n    s32 i;\n\n    for (i = 0; i < ARRAY_COUNT(sMemTrackers); i++) {\n        if (sMemTrackers[i].name != NULL) {\n            gd_printf(\"'%s' = %dk\\n\", sMemTrackers[i].name, (s32)(sMemTrackers[i].total / 1024.0f));\n        }\n    }\n}\n\n/*\n * Timers\n *\n * These are used to profile the code by measuring the time it takes to perform\n * operations.\n * To record elapsed time, call start_timer, perform some operations, then call stop_timer.\n * You can also use restart_timer/split_timer instead of start_timer/stop_timer\n * to keep a running total.\n */\n\n/* 23AEFC -> 23AFB0; orig name: func_8018C72C */\nvoid print_all_timers(void) {\n    s32 i;\n\n    gd_printf(\"\\nTimers:\\n\");\n    for (i = 0; i < ARRAY_COUNT(sTimers); i++) {\n        if (sTimers[i].name != NULL) {\n            gd_printf(\"'%s' = %f (%d)\\n\", sTimers[i].name, sTimers[i].scaledTotal,\n                      sTimers[i].resetCount);\n        }\n    }\n}\n\n/* 23AFB0 -> 23AFC8; orig name: func_8018C7E0 */\nvoid deactivate_timing(void) {\n    sTimingActive = FALSE;\n}\n\n/* 23AFC8 -> 23AFE4; orig name: func_8018C7F8 */\nvoid activate_timing(void) {\n    sTimingActive = TRUE;\n}\n\n/**\n * Destroys all timers\n */\nvoid remove_all_timers(void) {\n    s32 i;\n\n    for (i = 0; i < ARRAY_COUNT(sTimers); i++) {\n        sTimers[i].name = NULL;\n        sTimers[i].total = 0;\n        sTimers[i].unused = 0.0f;\n        sTimers[i].scaledTotal = 0.0f;\n        sTimers[i].prevScaledTotal = 0.0f;\n        sTimers[i].gadgetColourNum = sTimerGadgetColours[(u32) i % 7];\n        sTimers[i].resetCount = 0;\n    }\n    activate_timing();\n}\n\n/**\n * Creates a new timer with the specified name\n */\nstatic struct GdTimer *new_timer(const char *name) {\n    s32 i;\n    struct GdTimer *timer = NULL;\n\n    for (i = 0; i < ARRAY_COUNT(sTimers); i++) {\n        if (sTimers[i].name == NULL) {\n            sTimers[i].name = name;\n            timer = &sTimers[i];\n            break;\n        }\n    }\n\n    return timer;\n}\n\n/**\n * Returns the timer with the specified name, or NULL if it does not exist.\n */\nstruct GdTimer *get_timer(const char *timerName) {\n    s32 i;\n\n    for (i = 0; i < ARRAY_COUNT(sTimers); i++) {\n        if (sTimers[i].name != NULL) {\n            if (gd_str_not_equal(sTimers[i].name, timerName) == FALSE) {\n                return &sTimers[i];\n            }\n        }\n    }\n\n    return NULL;\n}\n\n/**\n * Returns the timer with the specified name, or aborts the program if it does\n * not exist.\n */\nstatic struct GdTimer *get_timer_checked(const char *timerName) {\n    struct GdTimer *timer;\n\n    timer = get_timer(timerName);\n    if (timer == NULL) {\n        fatal_printf(\"Timer '%s' not found\", timerName);\n    }\n\n    return timer;\n}\n\n/**\n * Returns a timer by index rather than name\n */\nstruct GdTimer *get_timernum(s32 index) {\n    if (index >= ARRAY_COUNT(sTimers)) {\n        fatal_printf(\"get_timernum(): Timer number %d out of range (MAX %d)\", index, ARRAY_COUNT(sTimers));\n    }\n\n    return &sTimers[index];\n}\n\n/* 23B350 -> 23B42C; orig name: func_8018CB80 */\nvoid split_timer_ptr(struct GdTimer *timer) {\n    if (!sTimingActive) {\n        return;\n    }\n\n    timer->end = gd_get_ostime();\n    timer->total += timer->end - timer->start;\n\n    if (timer->total < 0) {\n        timer->total = 0;\n    }\n\n    timer->scaledTotal = ((f32) timer->total) / get_time_scale();\n    timer->start = timer->end;\n}\n\n/* 23B42C -> 23B49C; not called; orig name: Unknown8018CC5C */\nvoid split_all_timers(void) {\n    s32 i;\n    struct GdTimer *timer;\n\n    for (i = 0; i < ARRAY_COUNT(sTimers); i++) {\n        timer = get_timernum(i);\n        if (timer->name != NULL) {\n            split_timer_ptr(timer);\n        }\n    }\n}\n\n/**\n * Unused - records the start time for all timers\n */\nvoid start_all_timers(void) {\n    s32 i;\n    struct GdTimer *timer;\n\n    if (!sTimingActive) {\n        return;\n    }\n\n    for (i = 0; i < ARRAY_COUNT(sTimers); i++) {\n        timer = get_timernum(i);\n\n        if (timer->name != NULL) {\n            timer->start = gd_get_ostime();\n        }\n    }\n}\n\n/**\n * Records the current time before performing an operation\n */\nvoid start_timer(const char *name) {\n    struct GdTimer *timer;\n\n    if (!sTimingActive) {\n        return;\n    }\n\n    // Create timer if it does not exist.\n    timer = get_timer(name);\n    if (timer == NULL) {\n        timer = new_timer(name);\n        if (timer == NULL) {\n            fatal_printf(\"start_timer(): Unable to make timer '%s'\", name);\n        }\n    }\n\n    timer->prevScaledTotal = timer->scaledTotal;\n    timer->start = gd_get_ostime();\n    timer->total = 0;\n    timer->resetCount = 1;\n}\n\n/**\n * Records the current time before performing an operation\n */\nvoid restart_timer(const char *name) {\n    struct GdTimer *timer;\n\n    if (!sTimingActive) {\n        return;\n    }\n\n    // Create timer if it does not exist.\n    timer = get_timer(name);\n    if (timer == NULL) {\n        timer = new_timer(name);\n        if (timer == NULL) {\n            fatal_printf(\"restart_timer(): Unable to make timer '%s'\", name);\n        }\n    }\n\n    timer->start = gd_get_ostime();\n    timer->resetCount++;\n}\n\n/**\n * Records the current time after performing an operation, adds the elapsed time\n * to the total, then restarts the timer\n */\nvoid split_timer(const char *name) {\n    struct GdTimer *timer;\n\n    if (!sTimingActive) {\n        return;\n    }\n\n    timer = get_timer_checked(name);\n    split_timer_ptr(timer);\n}\n\n/**\n * Records the current time after performing an operation\n */\nvoid stop_timer(const char *name) {\n    struct GdTimer *timer;\n\n    if (!sTimingActive) {\n        return;\n    }\n\n    timer = get_timer_checked(name);\n    timer->end = gd_get_ostime();\n    timer->total += timer->end - timer->start;\n    if (timer->total < 0) {\n        timer->total = 0;\n    }\n\n    timer->scaledTotal = ((f32) timer->total) / get_time_scale();\n}\n\n/**\n * Returns the scaled total for the specified timer\n */\nf32 get_scaled_timer_total(const char *name) {\n    struct GdTimer *timer = get_timer_checked(name);\n\n    return timer->scaledTotal;\n}\n\n/**\n * Unused - returns the raw total for the specified timer\n */\nf32 get_timer_total(const char *name) {\n    struct GdTimer *timer = get_timer_checked(name);\n\n    return (f32) timer->total;\n}\n\n\n/*\n * Miscellaneous debug functions\n */\n\n\n/**\n * Prints the given string, prints the stack trace, and exits the program\n */\nvoid fatal_print(const char *str) {\n    fatal_printf(str);\n}\n\n/**\n * Prints the stack trace registered by callng imin()/imout()\n */\nvoid print_stack_trace(void) {\n    s32 i;\n\n    for (i = 0; i < sNumRoutinesInStack; i++) {\n        gd_printf(\"\\tIn: '%s'\\n\", sRoutineNames[i]);\n    }\n}\n\n/**\n * Prints the formatted string, prints the stack trace, and exits the program\n */\nvoid fatal_printf(const char *fmt, ...) {\n    char cur;\n    UNUSED u8 filler[4];\n    va_list vl;\n\n    va_start(vl, fmt);\n    while ((cur = *fmt++)) {\n        switch (cur) {\n            case '%':\n                switch (cur = *fmt++) {\n                    case 'd':\n                        gd_printf(\"%d\", va_arg(vl, s32));\n                        break;\n                    case 'f':\n                        gd_printf(\"%f\", va_arg(vl, double));\n                        break;\n                    case 's':\n                        gd_printf(\"%s\", va_arg(vl, char *));\n                        break;\n                    case 'c':\n#ifdef AVOID_UB\n                        gd_printf(\"%c\", (char)va_arg(vl, int));\n#else\n                        gd_printf(\"%c\", va_arg(vl, char));\n#endif\n                        break;\n                    case 'x':\n                        gd_printf(\"%x\", va_arg(vl, s32));\n                        break;\n                    default:\n                        gd_printf(\"%c\", cur);\n                }\n                break;\n            case '\\\\':\n                gd_printf(\"\\\\\");\n                break;\n            case '\\n':\n                gd_printf(\"\\n\");\n                break;\n            default:\n                gd_printf(\"%c\", cur);\n        }\n    }\n    va_end(vl);\n\n    gd_printf(\"\\n\");\n    print_stack_trace();\n    gd_printf(\"\\n\");\n    gd_exit(-1);\n}\n\n/**\n * \"I'm in\"\n * Adds the function name to the stack trace\n */\nvoid imin(const char *routine) {\n    sRoutineNames[sNumRoutinesInStack++] = routine;\n    sRoutineNames[sNumRoutinesInStack] = NULL;  //! array bounds is checked after writing this.\n\n    if (sNumRoutinesInStack >= ARRAY_COUNT(sRoutineNames)) {\n        fatal_printf(\"You're in too many routines\");\n    }\n}\n\n/**\n * \"I'm out\"\n * Removes the function name from the stack trace\n */\nvoid imout(void) {\n    s32 i;\n\n    if (--sNumRoutinesInStack < 0) {\n        for (i = 0; i < ARRAY_COUNT(sRoutineNames); i++) {\n            if (sRoutineNames[i] != NULL) {\n                gd_printf(\" - %s\\n\", sRoutineNames[i]);\n            } else {\n                break;\n            }\n        }\n\n        fatal_printf(\"imout() - imout() called too many times\");\n    }\n}\n\n/**\n * Returns a random floating point number between 0 and 1 (inclusive)\n * TODO: figure out type of rng generator?\n */\nf32 gd_rand_float(void) {\n    u32 temp;\n    u32 i;\n    f32 val;\n\n    for (i = 0; i < 4; i++) {\n        if (sPrimarySeed & 0x80000000) {\n            sPrimarySeed = sPrimarySeed << 1 | 1;\n        } else {\n            sPrimarySeed <<= 1;\n        }\n    }\n    sPrimarySeed += 4;\n\n    /* Seed Switch */\n    if ((sPrimarySeed ^= gd_get_ostime()) & 1) {\n        temp = sPrimarySeed;\n        sPrimarySeed = sSecondarySeed;\n        sSecondarySeed = temp;\n    }\n\n    val = (sPrimarySeed & 0xFFFF) / 65535.0; // 65535.0f\n\n    return val;\n}\n\n/**\n * Reimplementation of the standard \"atoi\" function\n */\ns32 gd_atoi(const char *str) {\n    char cur;\n    const char *origstr = str;\n    s32 curval;\n    s32 out = 0;\n    s32 isNegative = FALSE;\n\n    while (TRUE) {\n        cur = *str++;\n\n        // Each character must be either a digit or a minus sign\n        if ((cur < '0' || cur > '9') && (cur != '-'))\n            fatal_printf(\"gd_atoi() bad number '%s'\", origstr);\n\n        if (cur == '-') {\n            isNegative = TRUE;\n        } else {\n            curval = cur - '0';\n            out += curval & 0xFF;\n\n            if (*str == '\\0' || *str == '.' || *str < '0' || *str > '9') {\n                break;\n            }\n\n            out *= 10;\n        }\n    }\n\n    if (isNegative) {\n        out = -out;\n    }\n\n    return out;\n}\n\n/**\n * Like the standard \"atof\" function, but only supports integer values\n */\nf64 gd_lazy_atof(const char *str, UNUSED u32 *unk) {\n    return gd_atoi(str);\n}\n\nstatic char sHexNumerals[] = {\"0123456789ABCDEF\"};\n\n/* 23C018 -> 23C078; orig name: func_8018D848 */\nchar *format_number_hex(char *str, s32 val) {\n    s32 shift;\n\n    for (shift = 28; shift > -4; shift -= 4) {\n        *str++ = sHexNumerals[(val >> shift) & 0xF];\n    }\n\n    *str = '\\0';\n\n    return str;\n}\n\nstatic s32 sPadNumPrint = 0; // @ 801A82C0\n\n/* 23C078 -> 23C174; orig name: func_8018D8A8 */\n/* padnum = a decimal number with the max desired output width */\nchar *format_number_decimal(char *str, s32 val, s32 padnum) {\n    s32 i;\n\n    if (val == 0) {\n        *str++ = '0';\n        *str = '\\0';\n        return str;\n    }\n\n    if (val < 0) {\n        val = -val;\n        *str++ = '-';\n    }\n\n    while (padnum > 0) {\n        if (padnum <= val) {\n            sPadNumPrint = TRUE;\n\n            for (i = 0; i < 9; i++) {\n                val -= padnum;\n                if (val < 0) {\n                    val += padnum;\n                    break;\n                }\n            }\n\n            *str++ = i + '0';\n        } else {\n            if (sPadNumPrint) {\n                *str++ = '0';\n            }\n        }\n\n        padnum /= 10;\n    }\n\n    *str = '\\0';\n\n    return str;\n}\n\n/* 23C174 -> 23C1C8; orig name: func_8018D9A4 */\nstatic s32 int_sci_notation(s32 base, s32 significand) {\n    s32 i;\n\n    for (i = 1; i < significand; i++) {\n        base *= 10;\n    }\n\n    return base;\n}\n\n/* 23C1C8 -> 23C468; orig name: func_8018D9F8 */\nchar *sprint_val_withspecifiers(char *str, union PrintVal val, char *specifiers) {\n    s32 fracPart; // sp3C\n    s32 intPart;  // sp38\n    s32 intPrec;  // sp34\n    s32 fracPrec; // sp30\n    UNUSED u8 filler[4];\n    char cur; // sp2B\n\n    fracPrec = 6;\n    intPrec = 6;\n\n    while ((cur = *specifiers++)) {\n        if (cur == 'd') {\n            sPadNumPrint = FALSE;\n            str = format_number_decimal(str, val.i, 1000000000);\n        } else if (cur == 'x') {\n            sPadNumPrint = TRUE; /* doesn't affect hex printing, though... */\n            str = format_number_hex(str, val.i);\n        } else if (cur == 'f') {\n            intPart = (s32) val.f;\n            fracPart = (s32)((val.f - (f32) intPart) * (f32) int_sci_notation(10, fracPrec));\n            sPadNumPrint = FALSE;\n            str = format_number_decimal(str, intPart, int_sci_notation(10, intPrec));\n            *str++ = '.';\n            sPadNumPrint = TRUE;\n            str = format_number_decimal(str, fracPart, int_sci_notation(10, fracPrec - 1));\n        } else if (cur >= '0' && cur <= '9') {\n            cur = cur - '0';\n            intPrec = cur;\n            if (*specifiers++) {\n                fracPrec = (*specifiers++) - '0';\n            }\n        } else {\n            gd_strcpy(str, \"<BAD TYPE>\");\n            str += 10;\n        }\n    }\n\n    return str;\n}\n\n/* 23C468 -> 23C4AC; orig name: func_8018DC98 */\nvoid gd_strcpy(char *dst, const char *src) {\n    while ((*dst++ = *src++)) {\n        ;\n    }\n}\n\n/* 23C4AC -> 23C52C; not called; orig name: Unknown8018DCDC */\nvoid ascii_to_uppercase(char *str) {\n    char c;\n\n    while ((c = *str)) {\n        if (c >= 'a' && c <= 'z') {\n            *str = c & 0xDF;\n        }\n        str++;\n    }\n}\n\n/* 23C52C -> 23C5A8; orig name: func_8018DD5C */\nchar *gd_strdup(const char *src) {\n    char *dst; // sp24\n\n    dst = gd_malloc_perm((gd_strlen(src) + 1) * sizeof(char));\n\n    if (dst == NULL) {\n        fatal_printf(\"gd_strdup(): out of memory\");\n    }\n    gd_strcpy(dst, src);\n\n    return dst;\n}\n\n/* 23C5A8 -> 23C5FC; orig name: func_8018DDD8 */\nu32 gd_strlen(const char *str) {\n    u32 len = 0;\n\n    while (*str++) {\n        len++;\n    }\n\n    return len;\n}\n\n/* 23C5FC -> 23C680; orig name: func_8018DE2C */\nchar *gd_strcat(char *dst, const char *src) {\n    while (*dst++) {\n        ;\n    }\n\n    if (*src) {\n        dst--;\n        while ((*dst++ = *src++)) {\n            ;\n        }\n    }\n\n    return --dst;\n}\n\n/* 23C67C -> 23C728; orig name: func_8018DEB0 */\n/* Returns a bool, not the position of the mismatch */\ns32 gd_str_not_equal(const char *str1, const char *str2) {\n    while (*str1 && *str2) {\n        if (*str1++ != *str2++) {\n            return TRUE;\n        }\n    }\n\n    return *str1 != '\\0' || *str2 != '\\0';\n}\n\n/* 23C728 -> 23C7B8; orig name; func_8018DF58 */\ns32 gd_str_contains(const char *str1, const char *str2) {\n    const char *startsub = str2;\n\n    while (*str1 && *str2) {\n        if (*str1++ != *str2++) {\n            str2 = startsub;\n        }\n    }\n\n    return !*str2;\n}\n\n/* 23C7B8 -> 23C7DC; orig name: func_8018DFE8 */\ns32 gd_feof(struct GdFile *f) {\n    return f->flags & 0x4;\n}\n\n/* 23C7DC -> 23C7FC; orig name: func_8018E00C */\nvoid gd_set_feof(struct GdFile *f) {\n    f->flags |= 0x4;\n}\n\n/* 23C7FC -> 23CA0C */\nstruct GdFile *gd_fopen(const char *filename, const char *mode) {\n    struct GdFile *f; // sp74\n    char *loadedname; // sp70\n    u32 i;            // sp6C\n    UNUSED u8 filler[4];\n    struct UnkBufThing buf; // sp24\n    u8 *bufbytes;           // sp20\n    u8 *fileposptr;         // sp1C\n    s32 filecsr;            // sp18\n\n    filecsr = 0;\n\n    while (TRUE) {\n        bufbytes = (u8 *) &buf;\n        for (i = 0; i < sizeof(struct UnkBufThing); i++) {\n            *bufbytes++ = gGdStreamBuffer[filecsr++];\n        }\n        stub_renderer_13(&buf);\n        fileposptr = &gGdStreamBuffer[filecsr];\n        filecsr += buf.size;\n\n        loadedname = buf.name;\n\n        if (buf.size == 0) {\n            break;\n        }\n        if (!gd_str_not_equal(filename, loadedname)) {\n            break;\n        }\n    }\n\n    if (buf.size == 0) {\n        fatal_printf(\"gd_fopen() File not found '%s'\", filename);\n        return NULL;\n    }\n\n    f = gd_malloc_perm(sizeof(struct GdFile));\n    if (f == NULL) {\n        fatal_printf(\"gd_fopen() Out of memory loading '%s'\", filename);\n        return NULL;\n    }\n\n    f->stream = (s8 *) fileposptr;\n    f->size = buf.size;\n    f->pos = f->flags = 0;\n    if (gd_str_contains(mode, \"w\")) {\n        f->flags |= 0x1;\n    }\n    if (gd_str_contains(mode, \"b\")) {\n        f->flags |= 0x2;\n    }\n\n    return f;\n}\n\n/* 23CA0C -> 23CB38; orig name: func_8018E23C */\ns32 gd_fread(s8 *buf, s32 bytes, UNUSED s32 count, struct GdFile *f) {\n    s32 bytesToRead = bytes;\n    s32 bytesread;\n\n    if (f->pos + bytesToRead > f->size) {\n        bytesToRead = f->size - f->pos;\n    }\n\n    if (bytesToRead == 0) {\n        gd_set_feof(f);\n        return -1;\n    }\n\n    bytesread = bytesToRead;\n    while (bytesread--) {\n        *buf++ = f->stream[f->pos++];\n    }\n\n    return bytesToRead;\n}\n\n/* 23CB38 -> 23CB54; orig name: func_8018E368 */\nvoid gd_fclose(UNUSED struct GdFile *f) {\n    return;\n}\n\n/* 23CB54 -> 23CB70; orig name: func_8018E384 */\nu32 gd_get_file_size(struct GdFile *f) {\n    return f->size;\n}\n\n/* 23CB70 -> 23CBA8; orig name: func_8018E3A0 */\ns32 is_newline(char c) {\n    return c == '\\r' || c == '\\n';\n}\n\n/* 23CBA8 -> 23CCF0; orig name: func_8018E3D8 */\ns32 gd_fread_line(char *buf, u32 size, struct GdFile *f) {\n    signed char c;\n    u32 pos = 0;\n    UNUSED u8 filler[4];\n\n    do {\n        if (gd_fread(&c, 1, 1, f) == -1) {\n            break;\n        }\n    } while (is_newline(c));\n\n    while (!is_newline(c)) {\n        if (c == -1) {\n            break;\n        }\n        if (pos > size) {\n            break;\n        }\n        buf[pos++] = c;\n        if (gd_fread(&c, 1, 1, f) == -1) {\n            break;\n        }\n    }\n    buf[pos++] = '\\0';\n\n    return pos;\n}\n"
  },
  {
    "path": "src/goddard/debug_utils.h",
    "content": "#ifndef GD_DEBUGGING_UTILS_H\n#define GD_DEBUGGING_UTILS_H\n\n#include <PR/ultratypes.h>\n\n#include \"gd_types.h\"\n#include \"macros.h\"\n\n#define GD_NUM_MEM_TRACKERS 32\n#define GD_NUM_TIMERS 32\n\n// structs\nstruct MemTracker {\n    /* 0x00 */ const char *name;  // name (used as an identifier)\n    /* 0x04 */ f32 begin;         // used heap space (in bytes) before allocating memory\n    /* 0x08 */ f32 end;           // used heap space (in bytes) after allocating memory\n    /* 0x0C */ f32 total;         // total memory (in bytes) allocated between all start_memtracker/stop_memtracker calls\n};\n\nstruct GdTimer {\n    /* 0x00 */ s32 start;   // in cycles\n    /* 0x04 */ s32 end;     // in cycles\n    /* 0x08 */ s32 total;   // in cycles\n    /* 0x0C */ f32 unused;\n    /* 0x10 */ f32 scaledTotal;  // total / sTimeScaleFactor (1.0f) Unused function modified value\n    /* 0x14 */ f32 prevScaledTotal;\n    /* 0x18 */ const char *name;\n    /* 0x1C */ s32 gadgetColourNum;  // color of gadget that represents timer?\n    /* 0x20 */ s32 resetCount;\n}; // sizeof = 0x24\n\nunion PrintVal {\n    f32 f;\n    s32 i;\n    s64 pad;\n};\n\n/* based on fields set in gd_fopen; gd_malloc_perm(84) for size */\nstruct GdFile {\n    /* 0x00 */ u8  filler1[4];\n    /* 0x04 */ u32 pos;\n    /* 0x08 */ s8 *stream;\n    /* Known Flags for +0xC field:\n    ** 1 : write mode\n    ** 2 : binary mode\n    ** 4 : eof */\n    /* 0x0C */ u32 flags;\n    /* 0x10 */ u8  filler2[64];\n    /* 0x50 */ u32 size;\n}; /* sizeof() = 0x54 */\n\n// bss\nextern u8 *gGdStreamBuffer;\n\n// functions\nextern struct MemTracker *start_memtracker(const char *);\nextern u32 stop_memtracker(const char *);\nextern void remove_all_memtrackers(void);\nextern struct MemTracker *get_memtracker_by_index(s32);\nextern void print_all_memtrackers(void);\nextern void print_all_timers(void);\nextern void deactivate_timing(void);\nextern void activate_timing(void);\nextern void remove_all_timers(void);\nextern struct GdTimer *get_timer(const char *);\nextern struct GdTimer *get_timernum(s32);\nextern void start_timer(const char *);\nextern void restart_timer(const char *);\nextern void split_timer(const char *);\nextern void stop_timer(const char *);\nextern f32 get_scaled_timer_total(const char *);\nextern void fatal_print(const char *) NORETURN;\nextern void fatal_printf(const char *, ...) NORETURN;\nextern void imin(const char *);\nextern void imout(void);\nextern f32 gd_rand_float(void);\nextern s32 gd_atoi(const char *);\nextern f64 gd_lazy_atof(const char *, u32 *);\nextern char *sprint_val_withspecifiers(char *, union PrintVal, char *);\nextern void gd_strcpy(char *, const char *);\nextern char *gd_strdup(const char *);\nextern u32 gd_strlen(const char *);\nextern char *gd_strcat(char *, const char *);\nextern s32 gd_str_not_equal(const char *, const char *);\nextern s32 gd_str_contains(const char *, const char *);\nextern s32 gd_feof(struct GdFile *);\nextern struct GdFile *gd_fopen(const char *, const char *);\nextern s32 gd_fread(s8 *, s32, s32, struct GdFile *);\nextern void gd_fclose(struct GdFile *);\nextern u32 gd_get_file_size(struct GdFile *);\nextern s32 gd_fread_line(char *, u32, struct GdFile *);\n\n#endif // GD_DEBUGGING_UTILS_H\n"
  },
  {
    "path": "src/goddard/draw_objects.c",
    "content": "#include <PR/ultratypes.h>\n#include <stdio.h>\n\n#if defined(VERSION_JP) || defined(VERSION_US)\n#include \"prevent_bss_reordering.h\"\n#endif\n\n#include \"debug_utils.h\"\n#include \"dynlist_proc.h\"\n#include \"gd_macros.h\"\n#include \"gd_main.h\"\n#include \"gd_math.h\"\n#include \"gd_types.h\"\n#include \"macros.h\"\n#include \"objects.h\"\n#include \"old_menu.h\"\n#include \"renderer.h\"\n#include \"shape_helper.h\"\n#include \"draw_objects.h\"\n\n/**\n * @file draw_objects.c\n * This file contains the functions and helpers for rendering the various\n * GdObj primitives to the screen.\n */\n\n// forward declarations\nvoid func_80179B64(struct ObjGroup *);\nvoid update_shaders(struct ObjShape *, struct GdVec3f *);\nvoid draw_shape_faces(struct ObjShape *);\nvoid register_light(struct ObjLight *);\n\n// types\n/**\n * Modes for drawscene()\n */\nenum SceneType {\n    RENDER_SCENE = 26, ///< render the primitives to screen\n    FIND_PICKS = 27    ///< only check position of primitives relative to cursor click\n};\n\n/**\n * A possible remnant of an early `ObjVertex` structure that contained\n * texture S,T coordinates.\n */\nstruct BetaVtx {\n    /* 0x00 */ u8 filler[68];\n    /* 0x44 */ f32 s;\n    /* 0x48 */ f32 t;\n};\n\n// data\nstatic struct GdColour sClrWhite = { 1.0, 1.0, 1.0 };            // @ 801A8070\nstatic struct GdColour sClrRed = { 1.0, 0.0, 0.0 };              // @ 801A807C\nstatic struct GdColour sClrGreen = { 0.0, 1.0, 0.0 };            // @ 801A8088\nstatic struct GdColour sClrBlue = { 0.0, 0.0, 1.0 };             // @ 801A8094\nstatic struct GdColour sClrErrDarkBlue = { 0.0, 0.0, 6.0 };      // @ 801A80A0\nstatic struct GdColour sClrPink = { 1.0, 0.0, 1.0 };             // @ 801A80AC\nstatic struct GdColour sClrBlack = { 0.0, 0.0, 0.0 };            // @ 801A80B8\nstatic struct GdColour sClrGrey = { 0.6, 0.6, 0.6 };             // @ 801A80C4\nstatic struct GdColour sClrDarkGrey = { 0.4, 0.4, 0.4 };         // @ 801A80D0\nstatic struct GdColour sClrYellow = { 1.0, 1.0, 0.0 };           // @ 801A80DC\nstatic struct GdColour sLightColours[1] = { { 1.0, 1.0, 0.0 } }; // @ 801A80E8\nstatic struct GdColour *sSelectedColour = &sClrRed;              // @ 801A80F4\nstruct ObjCamera *gViewUpdateCamera = NULL;                      // @ 801A80F8\nUNUSED static void *sUnref801A80FC = NULL;\nstatic s32 sUnreadShapeFlag = 0;       // @ 801A8100\nstruct GdColour *sColourPalette[5] = { // @ 801A8104\n    &sClrWhite, &sClrYellow, &sClrRed, &sClrBlack, &sClrBlack\n};\nstruct GdColour *sWhiteBlack[2] = {\n    //@ 801A8118\n    &sClrWhite,\n    &sClrBlack,\n};\nUNUSED static Mat4f sUnref801A8120 = {\n    { 1.0, 0.0, 0.0, 0.0 }, { 0.0, 0.0, 0.0, 0.0 }, { 0.0, 0.0, 1.0, 0.0 }, { 0.0, 0.0, 0.0, 1.0 }\n};\nUNUSED static Mat4f sUnrefIden801A8160 = {\n    { 1.0, 0.0, 0.0, 0.0 }, { 0.0, 1.0, 0.0, 0.0 }, { 0.0, 0.0, 1.0, 0.0 }, { 0.0, 0.0, 0.0, 1.0 }\n};\nstatic s32 sLightDlCounter = 1; // @ 801A81A0\nUNUSED static s32 sUnref801A81A4[4] = { 0 };\n\n// bss\nu8 gUnref_801B9B30[0x88];\nstruct ObjGroup *gGdLightGroup; // @ 801B9BB8; is this the main light group? only light group?\n\nUNUSED static u8 sUnref_801B9BBC[0x40];\nstatic enum SceneType sSceneProcessType; // @ 801B9C00\nstatic s32 sUseSelectedColor;            // @ 801B9C04\nstatic s16 sPickBuffer[100];             ///< buffer of objects near click\nstatic s32 sPickDataTemp;                ///< now, only data is the object number of a selected joint\nstatic f32 sPickObjDistance;             ///< distance between object position and cursor click location\nstatic struct GdObj *sPickedObject;      ///< object selected with cursor\n/// Various counters and pointers set in update_view() and used in various `draw_XXX` functions\nstatic struct {\n    u8 filler1[4];        // @ 801B9CE0\n    struct ObjView *view; // @ 801B9CE4\n    s32 unreadCounter;    // @ 801B9CE8\n    s32 mtlDlNum;         // @ 801B9CEC; name is a big guess\n    s32 shapesDrawn;      // @ 801B9CF0\n    s32 unused;           // @ 801B9CF4\n} sUpdateViewState;\nstatic struct ObjLight *sPhongLight;          // material light? phong light?\nstatic struct GdVec3f sPhongLightPosition;    //@ 801B9D00; guess; light source unit position for light\n                                              // flagged 0x20 (sPhongLight)\nstatic struct GdVec3f sLightPositionOffset;   // @ 801B9D10\nstatic struct GdVec3f sLightPositionCache[8]; // @ 801B9D20; unit positions\nstatic s32 sNumActiveLights;                  // @ 801B9D80; maybe?\nstatic struct GdVec3f sGrabCords;             ///< x, y grabbable point near cursor\n\n/**\n * Set the ambient light color and turn on G_CULL_BACK.\n */\nvoid setup_lights(void) {\n    set_light_num(NUMLIGHTS_2);\n    gd_setproperty(GD_PROP_AMB_COLOUR, 0.5f, 0.5f, 0.5f);\n    gd_setproperty(GD_PROP_CULLING, 1.0f, 0.0f, 0.0f); // set G_CULL_BACK\n    return;\n\n    // dead code\n    gd_setproperty(GD_PROP_STUB17, 2.0f, 0.0f, 0.0f);\n    gd_setproperty(GD_PROP_ZBUF_FN, 24.0f, 0.0f, 0.0f);\n    gd_setproperty(GD_PROP_CULLING, 1.0f, 0.0f, 0.0f);\n    return;\n}\n\n/**\n * @note Not called\n */\nvoid Unknown801781DC(struct ObjZone *zone) {\n    struct GdVec3f lightPos; // 3c\n    struct ObjUnk200000 *unk;\n    f32 sp34;\n    f32 sp30;\n    f32 sp2C;\n    struct ObjLight *light;\n    register struct ListNode *link = zone->unk30->firstMember; // s0 (24)\n    struct GdObj *obj;                                 // 20\n\n    while (link != NULL) {\n        obj = link->obj;\n        light = (struct ObjLight *) gGdLightGroup->firstMember->obj;\n        lightPos.x = light->position.x;\n        lightPos.y = light->position.y;\n        lightPos.z = light->position.z;\n        unk = (struct ObjUnk200000 *) obj;\n        sp34 = gd_dot_vec3f(&unk->unk34->normal, &unk->unk30->pos);\n        sp30 = gd_dot_vec3f(&unk->unk34->normal, &lightPos);\n        lightPos.x -= unk->unk34->normal.x * (sp30 - sp34);\n        lightPos.y -= unk->unk34->normal.y * (sp30 - sp34);\n        lightPos.z -= unk->unk34->normal.z * (sp30 - sp34);\n        unk->unk30->pos.x = lightPos.x;\n        unk->unk30->pos.y = lightPos.y;\n        unk->unk30->pos.z = lightPos.z;\n        sp2C = ABS((sp30 - sp34));\n        if (sp2C > 600.0f) {\n            sp2C = 600.0f;\n        }\n        sp2C = 1.0 - sp2C / 600.0;\n        unk->unk30->normal.x = sp2C * light->colour.r;\n        unk->unk30->normal.y = sp2C * light->colour.g;\n        unk->unk30->normal.z = sp2C * light->colour.b;\n        link = link->next;\n    }\n}\n\n/* 226C6C -> 226FDC */\nvoid draw_shape(struct ObjShape *shape, s32 flag, f32 c, f32 d, f32 e, // \"sweep\" indices 0-2 x, y, z\n                f32 f, f32 g, f32 h, // translate shape + store offset (unused)\n                f32 i, f32 j, f32 k, // translate shape\n                f32 l, f32 m, f32 n, // rotate x, y, z\n                s32 colorIdx, Mat4f *rotMtx) {\n    UNUSED u8 filler[8];\n    struct GdVec3f sp1C;\n\n    restart_timer(\"drawshape\");\n    sUpdateViewState.shapesDrawn++;\n\n    if (shape == NULL) {\n        return;\n    }\n\n    sp1C.x = sp1C.y = sp1C.z = 0.0f;\n    if (flag & 2) {\n        gd_dl_load_trans_matrix(f, g, h);\n        sp1C.x += f;\n        sp1C.y += g;\n        sp1C.z += h;\n    }\n\n    if ((flag & 0x10) && rotMtx != NULL) {\n        gd_dl_load_matrix(rotMtx);\n        sp1C.x += (*rotMtx)[3][0];\n        sp1C.y += (*rotMtx)[3][1];\n        sp1C.z += (*rotMtx)[3][2];\n    }\n\n    if (flag & 8) {\n        if (m != 0.0f) {\n            func_8019F2C4(m, 121);\n        }\n        if (l != 0.0f) {\n            func_8019F2C4(l, 120);\n        }\n        if (n != 0.0f) {\n            func_8019F2C4(n, 122);\n        }\n    }\n\n    if (colorIdx != 0) {\n        sUseSelectedColor = TRUE;\n        sSelectedColour = gd_get_colour(colorIdx);\n        if (sSelectedColour != NULL) {\n            gd_dl_material_lighting(-1, sSelectedColour, GD_MTL_LIGHTS);\n        } else {\n            fatal_print(\"Draw_shape(): Bad colour\");\n        }\n    } else {\n        sUseSelectedColor = FALSE;\n        sSelectedColour = NULL;\n    }\n\n    if (sNumActiveLights != 0 && shape->mtlGroup != NULL) {\n        if (rotMtx != NULL) {\n            sp1C.x = (*rotMtx)[3][0];\n            sp1C.y = (*rotMtx)[3][1];\n            sp1C.z = (*rotMtx)[3][2];\n        } else {\n            sp1C.x = sp1C.y = sp1C.z = 0.0f;\n        }\n        update_shaders(shape, &sp1C);\n    }\n\n    if (flag & 4) {\n        gd_dl_mul_trans_matrix(i, j, k);\n    }\n\n    if (flag & 1) {\n        gd_dl_scale(c, d, e);\n    }\n\n    draw_shape_faces(shape);\n    sUseSelectedColor = FALSE;\n    split_timer(\"drawshape\");\n}\n\nvoid draw_shape_2d(struct ObjShape *shape, s32 flag, UNUSED f32 c, UNUSED f32 d, UNUSED f32 e, f32 f,\n                   f32 g, f32 h, UNUSED f32 i, UNUSED f32 j, UNUSED f32 k, UNUSED f32 l, UNUSED f32 m,\n                   UNUSED f32 n, UNUSED s32 color, UNUSED s32 p) {\n    UNUSED u8 filler[8];\n    struct GdVec3f sp1C;\n\n    restart_timer(\"drawshape2d\");\n    sUpdateViewState.shapesDrawn++;\n\n    if (shape == NULL) {\n        return;\n    }\n\n    if (flag & 2) {\n        sp1C.x = f;\n        sp1C.y = g;\n        sp1C.z = h;\n        if (gViewUpdateCamera != NULL) {\n            gd_rotate_and_translate_vec3f(&sp1C, &gViewUpdateCamera->unkE8);\n        }\n        gd_dl_load_trans_matrix(sp1C.x, sp1C.y, sp1C.z);\n    }\n    draw_shape_faces(shape);\n    split_timer(\"drawshape2d\");\n}\n\nvoid draw_light(struct ObjLight *light) {\n    struct GdVec3f sp94;\n    Mat4f sp54;\n    UNUSED Mat4f *uMatPtr;\n    UNUSED f32 uMultiplier;\n    struct ObjShape *shape;\n\n    if (sSceneProcessType == FIND_PICKS) {\n        return;\n    }\n\n    sLightColours[0].r = light->colour.r;\n    sLightColours[0].g = light->colour.g;\n    sLightColours[0].b = light->colour.b;\n\n    if (light->flags & LIGHT_UNK02) {\n        gd_set_identity_mat4(&sp54);\n        sp94.x = -light->unk80.x;\n        sp94.y = -light->unk80.y;\n        sp94.z = -light->unk80.z;\n        gd_create_origin_lookat(&sp54, &sp94, 0.0f);\n        uMultiplier = light->unk38 / 45.0;\n        shape = gSpotShape;\n        uMatPtr = &sp54;\n    } else {\n        uMultiplier = 1.0f;\n        shape = light->unk9C;\n        uMatPtr = NULL;\n        if (++sLightDlCounter >= 17) {\n            sLightDlCounter = 1;\n        }\n        shape->unk50 = sLightDlCounter;\n    }\n\n    draw_shape_2d(shape, 2, 1.0f, 1.0f, 1.0f, light->position.x, light->position.y, light->position.z,\n                  0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, -1, 0);\n}\n\nvoid draw_material(struct ObjMaterial *mtl) {\n    s32 mtlType = mtl->type; // 24\n\n    if (mtlType == GD_MTL_SHINE_DL) {\n        if (sPhongLight != NULL && sPhongLight->unk30 > 0.0f) {\n            if (gViewUpdateCamera != NULL) {\n                gd_dl_hilite(mtl->gddlNumber, gViewUpdateCamera, &sPhongLight->position,\n                              &sLightPositionOffset, &sPhongLightPosition, &sPhongLight->colour);\n            } else {\n                fatal_printf(\"draw_material() no active camera for phong\");\n            }\n        } else {\n            mtlType = GD_MTL_BREAK;\n        }\n    }\n    if (sUseSelectedColor == FALSE) {\n        gd_dl_material_lighting(mtl->gddlNumber, &mtl->Kd, mtlType);\n    } else {\n        gd_dl_material_lighting(mtl->gddlNumber, sSelectedColour, GD_MTL_LIGHTS);\n    }\n}\n\n/**\n * Create a `GdDisplayList` and store its number in the input `ObjMaterial`\n * if this material doesn't have one\n */\nvoid create_mtl_gddl_if_empty(struct ObjMaterial *mtl) {\n    if (mtl->gddlNumber == 0) {\n        mtl->gddlNumber = create_mtl_gddl(mtl->type);\n    }\n}\n\n/**\n * A function for checking if an `ObjFace` has bad vertices. These could be either\n * unconverted vertex data, or old vertex structures (like `BetaVtx`)\n * @note Not called\n */\nvoid check_face_bad_vtx(struct ObjFace *face) {\n    s32 i;\n    struct ObjVertex *vtx;\n\n    for (i = 0; i < face->vtxCount; i++) {\n        vtx = face->vertices[i];\n        // These seem to be checks against bad conversions, or an outdated vertex structure..?\n        if ((uintptr_t) vtx == 39) {\n            gd_printf(\"bad1\\n\");\n            return;\n        }\n        if ((uintptr_t) vtx->gbiVerts == 0x3F800000) {\n            fatal_printf(\"bad2 %x,%d,%d,%d\\n\", (u32) (uintptr_t) vtx, vtx->scaleFactor, vtx->id, vtx->header.type);\n        }\n    }\n}\n\n/**\n * @brief Convert a numeric index into pointer to a struct GdColour\n *\n * A simple switch case to convert from index @p idx to a pointer to the\n * three f32 GdColour structure. Goddard stored the index in a structure,\n * and uses this function to get the colour RGB values if needed.\n * -1 uses the environment colour.\n * A possible enhancement for this is to ennumerate all colours, and then\n * use those enumerations and/or enum type where ever a colour is requested\n *\n * @param idx Index of colour\n * @return Pointer to a GdColour struct\n */\nstruct GdColour *gd_get_colour(s32 idx) {\n    switch (idx) {\n        case COLOUR_BLACK:\n            return &sClrBlack;\n            break;\n        case COLOUR_WHITE:\n            return &sClrWhite;\n            break;\n        case COLOUR_RED:\n            return &sClrRed;\n            break;\n        case COLOUR_GREEN:\n            return &sClrGreen;\n            break;\n        case COLOUR_BLUE:\n            return &sClrBlue;\n            break;\n        case COLOUR_GRAY:\n            return &sClrGrey;\n            break;\n        case COLOUR_DARK_GRAY:\n            return &sClrDarkGrey;\n            break;\n        case COLOUR_DARK_BLUE:\n            return &sClrErrDarkBlue;\n            break;\n        case COLOUR_BLACK2:\n            return &sClrBlack;\n            break;\n        case COLOUR_YELLOW:\n            return &sClrYellow;\n            break;\n        case COLOUR_PINK:\n            return &sClrPink;\n            break;\n        case -1:\n            return &sLightColours[0];\n            break;\n        default:\n            return NULL;\n    }\n}\n\n/**\n * Uncalled function that would render a triangle\n * @note Not called\n */\nvoid Unknown80178ECC(f32 v0X, f32 v0Y, f32 v0Z, f32 v1X, f32 v1Y, f32 v1Z) {\n    f32 difY = v1Y - v0Y;\n    f32 difX = v1X - v0X;\n    f32 difZ = v1Z - v0Z;\n\n    gd_dl_make_triangle(v0X, v0Y, v0Z, v1X, v1Y, v1Z, v0X + difY * 0.1, v0Y + difX * 0.1, v0Z + difZ * 0.1);\n}\n\n/**\n * Rendering function for `ObjFace` structures. It has a fair amount\n * of stub code\n */\nvoid draw_face(struct ObjFace *face) {\n    struct ObjVertex *vtx; // 3c\n    f32 z;                 // 38\n    f32 y;                 // 34\n    f32 x;                 // 30\n    UNUSED u8 filler[12];\n    s32 i;             // 20; also used to store mtl's gddl number\n    s32 hasTextCoords; // 1c\n    Vtx *gbiVtx;       // 18\n\n    imin(\"draw_face\");\n    hasTextCoords = FALSE;\n    if (sUseSelectedColor == FALSE && face->mtlId >= 0) { // -1 == colored face\n        if (face->mtl != NULL) {\n            if ((i = face->mtl->gddlNumber) != 0) {\n                if (i != sUpdateViewState.mtlDlNum) {\n                    gd_dl_flush_vertices();\n                    branch_to_gddl(i);\n                    sUpdateViewState.mtlDlNum = i;\n                }\n            }\n        }\n\n        if (FALSE) {\n        }\n    }\n\n    check_tri_display(face->vtxCount);\n\n    if (!gGdUseVtxNormal) {\n        set_Vtx_norm_buf_1(&face->normal);\n    }\n\n    for (i = 0; i < face->vtxCount; i++) {\n        vtx = face->vertices[i];\n        x = vtx->pos.x;\n        y = vtx->pos.y;\n        z = vtx->pos.z;\n        if (gGdUseVtxNormal) {\n            set_Vtx_norm_buf_2(&vtx->normal);\n        }\n        //! @bug This function seems to have some parts based on older versions of ObjVertex\n        //!      as the struct requests fields passed the end of an ObjVertex.\n        //!      The bad code is statically unreachable, so...\n        if (hasTextCoords) {\n            set_vtx_tc_buf(((struct BetaVtx *) vtx)->s, ((struct BetaVtx *) vtx)->t);\n        }\n\n        gbiVtx = gd_dl_make_vertex(x, y, z, vtx->alpha);\n\n        if (gbiVtx != NULL) {\n            vtx->gbiVerts = make_vtx_link(vtx->gbiVerts, gbiVtx);\n        }\n    }\n    func_8019FEF0();\n    imout();\n}\n\n/**\n * Render a filled rectangle from (`ulx`, `uly`) to (`lrx`, `lry`).\n *\n * @param color `GdColour` index\n * @param ulx,uly upper left point\n * @param lrx,lry lower right point\n */\nvoid draw_rect_fill(s32 color, f32 ulx, f32 uly, f32 lrx, f32 lry) {\n    gd_dl_set_fill(gd_get_colour(color));\n    gd_draw_rect(ulx, uly, lrx, lry);\n}\n\n/**\n * Render a stroked rectangle (aka border box) from (`ulx`, `uly`) to (`lrx`, `lry`).\n *\n * @param color `GdColour` index\n * @param ulx,uly upper left point\n * @param lrx,lry lower right point\n */\nvoid draw_rect_stroke(s32 color, f32 ulx, f32 uly, f32 lrx, f32 lry) {\n    gd_dl_set_fill(gd_get_colour(color));\n    gd_draw_border_rect(ulx, uly, lrx, lry);\n}\n\n/**\n * Uncalled function that calls other orphan stub functions.\n * @note Not called\n */\nvoid Unknown801792F0(struct GdObj *obj) {\n    char objId[32];\n    struct GdVec3f objPos;\n\n    format_object_id(objId, obj);\n    set_cur_dynobj(obj);\n    d_get_world_pos(&objPos);\n    func_801A4438(objPos.x, objPos.y, objPos.z);\n    stub_draw_label_text(objId);\n}\n\n/**\n * Draws a label\n */\nvoid draw_label(struct ObjLabel *label) {\n    struct GdVec3f position;\n    char strbuf[0x100];\n    UNUSED u8 filler[16];\n    struct ObjValPtr *valptr;\n    union ObjVarVal varval;\n    valptrproc_t valfn = label->valfn;\n\n    if ((valptr = label->valptr) != NULL) {\n        if (valptr->flag == 0x40000) {\n            // position is offset from object\n            set_cur_dynobj(valptr->obj);\n            d_get_world_pos(&position);\n        } else {\n            // position is absolute\n            position.x = position.y = position.z = 0.0f;\n        }\n\n        switch (valptr->datatype) {\n            case OBJ_VALUE_FLOAT:\n                get_objvalue(&varval, OBJ_VALUE_FLOAT, valptr->obj, valptr->offset);\n                if (valfn != NULL) {\n                    valfn(&varval, varval);\n                }\n                sprintf(strbuf, label->fmtstr, varval.f);\n                break;\n            case OBJ_VALUE_INT:\n                get_objvalue(&varval, OBJ_VALUE_INT, valptr->obj, valptr->offset);\n                if (valfn != NULL) {\n                    valfn(&varval, varval);\n                }\n                sprintf(strbuf, label->fmtstr, varval.i);\n                break;\n            default:\n                if (label->fmtstr != NULL) {\n                    gd_strcpy(strbuf, label->fmtstr);\n                } else {\n                    gd_strcpy(strbuf, \"NONAME\");\n                }\n                break;\n        }\n    } else {\n        position.x = position.y = position.z = 0.0f;\n        if (label->fmtstr != NULL) {\n            gd_strcpy(strbuf, label->fmtstr);\n        } else {\n            gd_strcpy(strbuf, \"NONAME\");\n        }\n    }\n    position.x += label->position.x;\n    position.y += label->position.y;\n    position.z += label->position.z;\n    func_801A4438(position.x, position.y, position.z);\n    stub_renderer_10(label->unk30);\n    stub_draw_label_text(strbuf);\n}\n\n/* 227DF8 -> 227F3C; orig name: Proc80179628 */\nvoid draw_net(struct ObjNet *self) {\n    struct ObjNet *net = self;\n    s32 netColor;\n    UNUSED u8 filler[80];\n\n    if (sSceneProcessType == FIND_PICKS) {\n        return;\n    }\n\n    if (net->header.drawFlags & OBJ_HIGHLIGHTED) {\n        netColor = COLOUR_YELLOW;\n    } else {\n        netColor = net->colourNum;\n    }\n\n    if (net->shapePtr != NULL) {\n        draw_shape(net->shapePtr, 0x10, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,\n                   0.0f, 0.0f, 0.0f, 0.0f, 0.0f, netColor, &net->mat168);\n    }\n\n    if (net->unk1C8 != NULL) {\n        draw_group(net->unk1C8);\n    }\n}\n\n/**\n * Draws a gadget\n */\nvoid draw_gadget(struct ObjGadget *gdgt) {\n    s32 colour = 0;\n\n    if (gdgt->colourNum != 0) {\n        colour = gdgt->colourNum;\n    }\n\n    draw_rect_fill(colour,\n        gdgt->worldPos.x,\n        gdgt->worldPos.y,\n        gdgt->worldPos.x + gdgt->sliderPos * gdgt->size.x,\n        gdgt->worldPos.y + gdgt->size.y);\n\n    if (gdgt->header.drawFlags & OBJ_HIGHLIGHTED) {\n        draw_rect_stroke(COLOUR_YELLOW,\n            gdgt->worldPos.x,\n            gdgt->worldPos.y,\n            gdgt->worldPos.x + gdgt->sliderPos * gdgt->size.x,\n            gdgt->worldPos.y + gdgt->size.y);\n    }\n    gdgt->header.drawFlags &= ~OBJ_HIGHLIGHTED;\n}\n\n/* 22803C -> 22829C */\nvoid draw_camera(struct ObjCamera *cam) {\n    struct GdVec3f sp44;\n    UNUSED f32 sp40 = 0.0f;\n\n    sp44.x = 0.0f;\n    sp44.y = 0.0f;\n    sp44.z = 0.0f;\n    if (cam->unk30 != NULL) {\n        set_cur_dynobj(cam->unk30);\n        d_get_world_pos(&sp44);\n        sp44.x += cam->lookAt.x;\n        sp44.y += cam->lookAt.y;\n        sp44.z += cam->lookAt.z;\n        ; // needed to match\n    } else {\n        sp44.x = cam->lookAt.x;\n        sp44.y = cam->lookAt.y;\n        sp44.z = cam->lookAt.z;\n    }\n\n    if (0) {\n        // dead code\n        gd_printf(\"%f,%f,%f\\n\", cam->worldPos.x, cam->worldPos.y, cam->worldPos.z);\n    }\n\n    if (ABS(cam->worldPos.x - sp44.x) + ABS(cam->worldPos.z - sp44.z) == 0.0f) {\n        gd_printf(\"Draw_Camera(): Zero view distance\\n\");\n        return;\n    }\n    gd_dl_lookat(cam, cam->worldPos.x, cam->worldPos.y, cam->worldPos.z, sp44.x, sp44.y, sp44.z, cam->unkA4);\n}\n\n/**\n * Forms uncalled recursive loop with func_80179B64().\n * This function seems to turn off the otherwise unused `OBJ_DRAW_UNK01` flag\n * for the GdObj.drawFlags\n * @note Not called\n */\nvoid Unknown80179ACC(struct GdObj *obj) {\n    switch (obj->type) {\n        case OBJ_TYPE_NETS:\n            if (((struct ObjNet *) obj)->unk1C8 != NULL) {\n                func_80179B64(((struct ObjNet *) obj)->unk1C8);\n            }\n            break;\n        default:\n            break;\n    }\n    obj->drawFlags &= ~OBJ_DRAW_UNK01;\n}\n\n/**\n * Forms uncalled recursive loop with Unknown80179ACC()\n * @note Not called\n */\nvoid func_80179B64(struct ObjGroup *group) {\n    apply_to_obj_types_in_group(OBJ_TYPE_LABELS | OBJ_TYPE_GADGETS | OBJ_TYPE_CAMERAS | OBJ_TYPE_NETS\n                                    | OBJ_TYPE_JOINTS | OBJ_TYPE_BONES,\n                                (applyproc_t) Unknown80179ACC, group);\n}\n\n/* 22836C -> 228498 */\nvoid world_pos_to_screen_coords(struct GdVec3f *pos, struct ObjCamera *cam, struct ObjView *view) {\n    gd_rotate_and_translate_vec3f(pos, &cam->unkE8);\n    if (pos->z > -256.0f) {\n        return;\n    }\n\n    pos->x *= 256.0 / -pos->z;\n    pos->y *= 256.0 / pos->z;\n    pos->x += view->lowerRight.x / 2.0f;\n    pos->y += view->lowerRight.y / 2.0f;\n}\n\n/**\n * Check if the current cursor position is near enough to @p input to\n * grab that `GdObj`. The range is +/- 20 units for being close to a\n * grab point.\n *\n * If the object can be grabbed, its information is stored in a buffer by\n * `store_in_pickbuf()`.\n *\n * @param input `GdObj` to check position of\n * @return void\n */\nvoid check_grabbable_click(struct GdObj *input) {\n    struct GdVec3f objPos;\n    UNUSED u8 filler[12];\n    struct GdObj *obj;\n    Mat4f *mtx;\n\n    if (gViewUpdateCamera == NULL) {\n        return;\n    }\n    obj = input;\n    if (!(obj->drawFlags & OBJ_IS_GRABBABLE)) {\n        return;\n    }\n\n    set_cur_dynobj(obj);\n    mtx = d_get_rot_mtx_ptr();\n    objPos.x = (*mtx)[3][0];\n    objPos.y = (*mtx)[3][1];\n    objPos.z = (*mtx)[3][2];\n    world_pos_to_screen_coords(&objPos, gViewUpdateCamera, sUpdateViewState.view);\n    if (ABS(gGdCtrl.csrX - objPos.x) < 20.0f) {\n        if (ABS(gGdCtrl.csrY - objPos.y) < 20.0f) {\n            // store (size, Obj Type, Obj Index) in s16 pick buffer array\n            store_in_pickbuf(2);\n            store_in_pickbuf(obj->type);\n            store_in_pickbuf(obj->index);\n            sGrabCords.x = objPos.x;\n            sGrabCords.y = objPos.y;\n        }\n    }\n}\n\n/**\n * The main function for rendering the components of an `ObjView`. It called\n * both for drawing the various `GdObj` primatives as well as when checking\n * the location of a cursor click.\n * @note This has to be called from update_view() due to that function setting\n *       state variables on which this function relies\n *\n * @param process determines if this is rendering the scene\n *                or just checking click location\n * @param interactables components of `ObjView`\n * @param lightgrp lights of `ObjView\n */\nvoid drawscene(enum SceneType process, struct ObjGroup *interactables, struct ObjGroup *lightgrp) {\n    UNUSED u8 filler[16];\n\n    restart_timer(\"drawscene\");\n    imin(\"draw_scene()\");\n    sUnreadShapeFlag = 0;\n    sUpdateViewState.unreadCounter = 0;\n    restart_timer(\"draw1\");\n    set_gd_mtx_parameters(G_MTX_PROJECTION | G_MTX_MUL | G_MTX_PUSH);\n    if (sUpdateViewState.view->projectionType == 1) {\n        gd_create_perspective_matrix(sUpdateViewState.view->clipping.z,\n                      sUpdateViewState.view->lowerRight.x / sUpdateViewState.view->lowerRight.y,\n                      sUpdateViewState.view->clipping.x, sUpdateViewState.view->clipping.y);\n    } else {\n        gd_create_ortho_matrix(\n            -sUpdateViewState.view->lowerRight.x / 2.0, sUpdateViewState.view->lowerRight.x / 2.0,\n            -sUpdateViewState.view->lowerRight.y / 2.0, sUpdateViewState.view->lowerRight.y / 2.0,\n            sUpdateViewState.view->clipping.x, sUpdateViewState.view->clipping.y);\n    }\n\n    if (lightgrp != NULL) {\n        set_gd_mtx_parameters(G_MTX_MODELVIEW | G_MTX_LOAD | G_MTX_PUSH);\n        apply_to_obj_types_in_group(OBJ_TYPE_LIGHTS | OBJ_TYPE_PARTICLES,\n                                    (applyproc_t) apply_obj_draw_fn, lightgrp);\n        set_gd_mtx_parameters(G_MTX_PROJECTION | G_MTX_MUL | G_MTX_PUSH);\n    }\n\n    if (gViewUpdateCamera != NULL) {\n        draw_camera(gViewUpdateCamera);\n    } else {\n        gd_dl_mul_trans_matrix(0.0f, 0.0f, -1000.0f);\n    }\n\n    setup_lights();\n    set_gd_mtx_parameters(G_MTX_MODELVIEW | G_MTX_LOAD | G_MTX_PUSH);\n    gd_dl_push_matrix();\n    sSceneProcessType = process;\n\n    if ((sNumActiveLights = sUpdateViewState.view->flags & VIEW_LIGHT)) {\n        sUpdateViewState.view->flags &= ~VIEW_LIGHT;\n    }\n\n    sNumActiveLights = 1;\n    apply_to_obj_types_in_group(OBJ_TYPE_LIGHTS, (applyproc_t) register_light, gGdLightGroup);\n    split_timer(\"draw1\");\n    restart_timer(\"drawobj\");\n    imin(\"process_group\");\n    if (sSceneProcessType == FIND_PICKS) {\n        apply_to_obj_types_in_group(OBJ_TYPE_ALL, (applyproc_t) check_grabbable_click, interactables);\n    } else {\n        apply_to_obj_types_in_group(OBJ_TYPE_LIGHTS | OBJ_TYPE_GADGETS | OBJ_TYPE_NETS\n                                        | OBJ_TYPE_PARTICLES,\n                                    (applyproc_t) apply_obj_draw_fn, interactables);\n    }\n    imout();\n    split_timer(\"drawobj\");\n    gd_setproperty(GD_PROP_LIGHTING, 0.0f, 0.0f, 0.0f);\n    apply_to_obj_types_in_group(OBJ_TYPE_LABELS, (applyproc_t) apply_obj_draw_fn, interactables);\n    gd_setproperty(GD_PROP_LIGHTING, 1.0f, 0.0f, 0.0f);\n    gd_dl_pop_matrix();\n    imout();\n    split_timer(\"drawscene\");\n    return;\n}\n\n/**\n * A drawing function that does nothing. This function is used for\n * `GdObj`s that don't need to be rendered\n */\nvoid draw_nothing(UNUSED struct GdObj *nop) {\n}\n\n/**\n * Render the `faceGroup` of an `ObjShape`. This is called from\n * draw_shape() and draw_shape_2d(), or when creating the shape\n * `GdDisplayList` when calling create_shape_gddl()\n */\nvoid draw_shape_faces(struct ObjShape *shape) {\n    sUpdateViewState.mtlDlNum = 0;\n    sUpdateViewState.unreadCounter = 0;\n    gddl_is_loading_stub_dl(FALSE);\n    sUnreadShapeFlag = (s32) shape->flag & 1;\n    set_render_alpha(shape->alpha);\n    if (shape->dlNums[gGdFrameBufNum] != 0) {\n        draw_indexed_dl(shape->dlNums[gGdFrameBufNum], shape->unk50);\n    } else if (shape->faceGroup != NULL) {\n        func_801A0038();\n        draw_group(shape->faceGroup);\n        gd_dl_flush_vertices();\n    }\n}\n\n/**\n * Rendering function for `ObjParticle`.\n */\nvoid draw_particle(struct GdObj *obj) {\n    struct ObjParticle *ptc = (struct ObjParticle *) obj;\n    UNUSED u8 filler1[16];\n    struct GdColour *white;\n    struct GdColour *black;\n    f32 brightness;\n    UNUSED u8 filler2[16];\n\n    if (ptc->timeout > 0) {\n        white = sColourPalette[0];\n        black = sWhiteBlack[1];\n        brightness = ptc->timeout / 10.0;\n        sLightColours[0].r = (white->r - black->r) * brightness + black->r;\n        sLightColours[0].g = (white->g - black->g) * brightness + black->g;\n        sLightColours[0].b = (white->b - black->b) * brightness + black->b;\n        ; // needed to match\n    } else {\n        sLightColours[0].r = 0.0f;\n        sLightColours[0].g = 0.0f;\n        sLightColours[0].b = 0.0f;\n    }\n\n    if (ptc->timeout > 0) {\n        ptc->shapePtr->unk50 = ptc->timeout;\n        draw_shape_2d(ptc->shapePtr, 2, 1.0f, 1.0f, 1.0f, ptc->pos.x, ptc->pos.y, ptc->pos.z, 0.0f,\n                      0.0f, 0.0f, 0.0f, 0.0f, 0.0f, -1, 0);\n    }\n    if (ptc->unk60 == 3) {\n        if (ptc->subParticlesGrp != NULL) {\n            draw_group(ptc->subParticlesGrp);\n        }\n    }\n}\n\n/**\n * Rendering fucntion for `ObjBone`.\n *\n * @note This function returns before doing any work. It seems\n *       that Goddard moved away from using bones in the final code\n */\nvoid draw_bone(struct GdObj *obj) {\n    struct ObjBone *bone = (struct ObjBone *) obj;\n    UNUSED u8 filler1[4];\n    s32 colour;\n    UNUSED u8 filler2[4];\n    struct GdVec3f scale; // guess\n\n    return;\n\n    // dead code\n    scale.x = 1.0f;\n    scale.y = 1.0f;\n    scale.z = bone->unkF8 / 50.0f;\n\n    if (bone->header.drawFlags & OBJ_HIGHLIGHTED) {\n        colour = COLOUR_YELLOW;\n    } else {\n        colour = bone->colourNum;\n    }\n    bone->header.drawFlags &= ~OBJ_HIGHLIGHTED;\n\n    if (sSceneProcessType != FIND_PICKS) {\n        draw_shape(bone->shapePtr, 0x1B, scale.x, scale.y, scale.z, bone->worldPos.x, bone->worldPos.y,\n                   bone->worldPos.z, 0.0f, 0.0f, 0.0f, bone->unk28.x, bone->unk28.y, bone->unk28.z, colour,\n                   &bone->mat70);\n    }\n}\n\n/**\n * Rendering function for `ObjJoint`.\n */\nvoid draw_joint(struct GdObj *obj) {\n    struct ObjJoint *joint = (struct ObjJoint *) obj;\n    UNUSED u8 filler1[4];\n    UNUSED f32 sp7C = 70.0f;\n    UNUSED u8 filler2[4];\n    UNUSED s32 sp74 = 1;\n    s32 colour;\n    UNUSED u8 filler3[8];\n    struct ObjShape *boneShape;\n    UNUSED u8 filler4[28];\n\n    if ((boneShape = joint->shapePtr) == NULL) {\n        return;\n    }\n\n    if (joint->header.drawFlags & OBJ_HIGHLIGHTED) {\n        colour = COLOUR_YELLOW;\n    } else {\n        colour = joint->colourNum;\n    }\n\n    draw_shape(boneShape, 0x10, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,\n               colour, &joint->mat128);\n}\n\n/**\n * Call `apply_obj_draw_fn()` to all `GdObj` in input `ObjGroup`\n *\n * @param grp `ObjGroup` of objects to draw\n * @return void\n */\nvoid draw_group(struct ObjGroup *grp) {\n    if (grp == NULL) {\n        fatal_print(\"Draw_Group: Bad group definition!\");\n    }\n\n    apply_to_obj_types_in_group(OBJ_TYPE_ALL, (applyproc_t) apply_obj_draw_fn, grp);\n}\n\n/**\n * Rendering function for `ObjPlane`.\n */\nvoid draw_plane(struct GdObj *obj) {\n    struct ObjPlane *plane = (struct ObjPlane *) obj;\n\n    if (obj->drawFlags & OBJ_HIGHLIGHTED) {\n        obj->drawFlags &= ~OBJ_HIGHLIGHTED;\n        ; // needed to match; presumably setting up the color to draw the plane with\n    } else {\n        sUseSelectedColor = FALSE;\n    }\n    draw_face(plane->unk40);\n}\n\n/**\n * Apply `GdObj.objDrawFn` to the input `GdObj` if that object is draw-able.\n *\n * @param obj `GdObj` to draw\n * @return void\n */\nvoid apply_obj_draw_fn(struct GdObj *obj) {\n    if (obj == NULL) {\n        fatal_print(\"Bad object!\");\n    }\n    if (obj->drawFlags & OBJ_INVISIBLE) {\n        return;\n    }\n\n    obj->objDrawFn(obj);\n}\n\n/**\n * Count input `ObjLight` as an active light, if it wasn't already counted.\n */\nvoid register_light(struct ObjLight *light) {\n    set_light_id(light->id);\n    gd_setproperty(GD_PROP_LIGHTING, 2.0f, 0.0f, 0.0f);\n    if (light->flags & LIGHT_NEW_UNCOUNTED) {\n        sNumActiveLights++;\n    }\n    light->flags &= ~LIGHT_NEW_UNCOUNTED;\n}\n\n/* 229180 -> 229564 */\nvoid Proc8017A980(struct ObjLight *light) {\n    f32 sp24; // diffuse factor?\n    f32 sp20;\n    f32 sp1C;\n\n    light->colour.r = light->diffuse.r * light->unk30;\n    light->colour.g = light->diffuse.g * light->unk30;\n    light->colour.b = light->diffuse.b * light->unk30;\n    sLightPositionCache[light->id].x = light->position.x - sLightPositionOffset.x;\n    sLightPositionCache[light->id].y = light->position.y - sLightPositionOffset.y;\n    sLightPositionCache[light->id].z = light->position.z - sLightPositionOffset.z;\n    gd_normalize_vec3f(&sLightPositionCache[light->id]);\n    if (light->flags & LIGHT_UNK20) {\n        sPhongLightPosition.x = sLightPositionCache[light->id].x;\n        sPhongLightPosition.y = sLightPositionCache[light->id].y;\n        sPhongLightPosition.z = sLightPositionCache[light->id].z;\n        sPhongLight = light;\n    }\n    sp24 = light->unk30;\n    if (light->flags & LIGHT_UNK02) {\n        sp20 = -gd_dot_vec3f(&sLightPositionCache[light->id], &light->unk80);\n        sp1C = 1.0 - light->unk38 / 90.0;\n        if (sp20 > sp1C) {\n            sp20 = (sp20 - sp1C) * (1.0 / (1.0 - sp1C));\n            if (sp20 > 1.0) {\n                sp20 = 1.0;\n            } else if (sp20 < 0.0f) {\n                sp20 = 0.0f;\n            }\n        } else {\n            sp20 = 0.0f;\n        }\n        sp24 *= sp20;\n    }\n    set_light_id(light->id);\n    gd_setproperty(GD_PROP_DIFUSE_COLOUR, light->diffuse.r * sp24, light->diffuse.g * sp24,\n                   light->diffuse.b * sp24);\n    gd_setproperty(GD_PROP_LIGHT_DIR, sLightPositionCache[light->id].x,\n                   sLightPositionCache[light->id].y, sLightPositionCache[light->id].z);\n    gd_setproperty(GD_PROP_LIGHTING, 2.0f, 0.0f, 0.0f);\n}\n\n/* 229568 -> 229658; orig name: func_8017AD98 */\nvoid update_shaders(struct ObjShape *shape, struct GdVec3f *offset) {\n    restart_timer(\"updateshaders\");\n    stash_current_gddl();\n    sLightPositionOffset.x = offset->x;\n    sLightPositionOffset.y = offset->y;\n    sLightPositionOffset.z = offset->z;\n    sPhongLight = NULL;\n    if (gGdLightGroup != NULL) {\n        apply_to_obj_types_in_group(OBJ_TYPE_LIGHTS, (applyproc_t) Proc8017A980, gGdLightGroup);\n    }\n    if (shape->mtlGroup != NULL) {\n        apply_to_obj_types_in_group(OBJ_TYPE_MATERIALS, (applyproc_t) apply_obj_draw_fn,\n                                    shape->mtlGroup);\n    }\n    pop_gddl_stash();\n    split_timer(\"updateshaders\");\n}\n\n/**\n * Create `GdDisplayList`s for any `ObjMaterial`s in `shape` that don't already\n * have a GdDL. Doesn't do anything if `shape`'s `mtlGroup` is NULL\n *\n * @param shape Input `ObjShape` to create material GdDLs for\n * @return void\n */\nvoid create_shape_mtl_gddls(struct ObjShape *shape) {\n    if (shape->mtlGroup != NULL) {\n        apply_to_obj_types_in_group(OBJ_TYPE_MATERIALS, (applyproc_t) create_mtl_gddl_if_empty,\n                                    shape->mtlGroup);\n    }\n}\n\n/**\n * Uncalled function that calls a stubbed function (`stub_objects_1()`) for all\n * `GdObj`s in @p grp\n *\n * @param grp Unknown group of objects\n * @return void\n * @note Not called\n */\nvoid unref_8017AEDC(struct ObjGroup *grp) {\n    register struct ListNode *link = grp->firstMember;\n\n    while (link != NULL) {\n        struct GdObj *obj = link->obj;\n\n        stub_objects_1(grp, obj);\n        link = link->next;\n    }\n}\n\n/**\n * Start a new `GdDisplayList` struct and store its reference index\n * in the input `ObjShape`.\n *\n * @param s `ObjShape` to create GdDL for\n * @return Either `-1` if the DL couldn't be created,\n *         or the created DL's reference index\n * @bug Nothing is returned if the DL is created\n * @note Contains string literals that suggest a removed `printf` call\n */\n#ifdef AVOID_UB\nvoid\n#else\ns32\n#endif\ncreate_shape_gddl(struct ObjShape *s) {\n    struct ObjShape *shape = s; // 24\n    s32 shapedl;                // 20\n    UNUSED s32 enddl;           // 1C\n\n    create_shape_mtl_gddls(shape);\n    shapedl = gd_startdisplist(7);\n    if (shapedl == 0) {\n#ifdef AVOID_UB\n        return;\n#else\n        return -1;\n#endif\n    }\n\n    setup_lights();\n    sUseSelectedColor = FALSE;\n    if (shape->unk3C == 0) {\n        draw_shape_faces(shape);\n    }\n    enddl = gd_enddlsplist_parent();\n    shape->dlNums[0] = shapedl;\n    shape->dlNums[1] = shapedl;\n\n    if (shape->name[0] != '\\0') {\n        printf(\"Generated '%s' (%d) display list ok.(%d)\\n\", shape->name, shapedl, enddl);\n    } else {\n        printf(\"Generated 'UNKNOWN' (%d) display list ok.(%d)\\n\", shapedl, enddl);\n    }\n}\n\n/**\n * Create `GdDisplayList` structs for all `ObjShapes` in `grp` by calling\n * `create_shape_gddl()`.\n *\n * @param grp `ObjGroup` containing `ObjShape` to create GdDLs for\n * @return void\n * @note Contains string literals that suggest a removed `printf` call\n */\nvoid create_gddl_for_shapes(struct ObjGroup *grp) {\n    UNUSED s32 shapedls =\n        apply_to_obj_types_in_group(OBJ_TYPE_SHAPES, (applyproc_t) create_shape_gddl, grp);\n    printf(\"made %d display lists\\n\", shapedls);\n}\n\n/**\n * Map material id's to `ObjMaterial` pointers for an `ObjGroup` of `ObjFace` structs.\n * This is the final function used in dynlist processing (see `chk_shapegen()`)\n *\n * @param[in,out] faces `ObjGroup` of `ObjFace` structs to map over\n * @param[in]     mtls  `ObjGroup` of `ObjMaterial` structs to map ids to pointers\n * @return void\n */\nvoid map_face_materials(struct ObjGroup *faces, struct ObjGroup *mtls) {\n    struct ObjFace *face;\n    register struct ListNode *linkFaces;\n    struct GdObj *temp;\n    register struct ListNode *linkMtls;\n    struct ObjMaterial *mtl;\n\n    linkFaces = faces->firstMember;\n    while (linkFaces != NULL) {\n        temp = linkFaces->obj;\n        face = (struct ObjFace *) temp;\n        linkMtls = mtls->firstMember;\n        while (linkMtls != NULL) {\n            mtl = (struct ObjMaterial *) linkMtls->obj;\n            if (mtl->id == face->mtlId) {\n                break;\n            }\n            linkMtls = linkMtls->next;\n        }\n\n        if (linkMtls != NULL) {\n            face->mtl = mtl;\n        }\n\n        linkFaces = linkFaces->next;\n    }\n}\n\n/**\n * @brief Calculate the normal for @p vtx by averaging the normals of all\n *  `ObjFaces` in @p facegrp\n *\n * Calculate the normal for the input `ObjVetex` @p vtx based on the\n * `ObjFace` structures in @p facegrp of which that vertex is a part.\n *\n * @param vtx     `ObjVertex` to update normal\n * @param facegrp `ObjGroup` of `ObjFace` structures that use @p vtx\n * @return void\n */\nstatic void calc_vtx_normal(struct ObjVertex *vtx, struct ObjGroup *facegrp) {\n    s32 i;\n    s32 faceCount;\n    register struct ListNode *node;\n    struct ObjFace *curFace;\n\n    vtx->normal.x = vtx->normal.y = vtx->normal.z = 0.0f;\n\n    faceCount = 0;\n    node = facegrp->firstMember;\n    while (node != NULL) {\n        curFace = (struct ObjFace *) node->obj;\n        for (i = 0; i < curFace->vtxCount; i++) {\n            if (curFace->vertices[i] == vtx) {\n                vtx->normal.x += curFace->normal.x;\n                vtx->normal.y += curFace->normal.y;\n                vtx->normal.z += curFace->normal.z;\n                faceCount++;\n            }\n        }\n        node = node->next;\n    }\n    if (faceCount != 0) {\n        vtx->normal.x /= faceCount;\n        vtx->normal.y /= faceCount;\n        vtx->normal.z /= faceCount;\n    }\n}\n\n/**\n * @brief Convert vertex indices in an `ObjFace` into pointers and computes the\n * face's normal\n *\n * Using the group of `ObjVertex` or `ObjParticle` structures in @p verts,\n * convert indices in @p face into pointers. The indices are indices\n * into the list contained in @p vertexGrp group\n *\n * @param face  `ObjFace` to find vertices for\n * @param vertexGrp  `ObjGroup` to index in for `ObjVertex` or `ObjPaticle` structures\n * @return void\n */\nstatic void find_thisface_verts(struct ObjFace *face, struct ObjGroup *vertexGrp) {\n    s32 i;\n    u32 currIndex;\n    struct ListNode *node;\n\n    for (i = 0; i < face->vtxCount; i++) {\n        // find the vertex or particle whose index in vertexGrp equals face->vertices[i]\n        node = vertexGrp->firstMember;\n        currIndex = 0;\n        while (node != NULL) {\n            if (node->obj->type == OBJ_TYPE_VERTICES || node->obj->type == OBJ_TYPE_PARTICLES) {\n                if (currIndex++ == (u32) (uintptr_t) face->vertices[i]) {\n                    break;\n                }\n            }\n            node = node->next;\n        }\n        if (node == NULL) {\n            fatal_printf(\"find_thisface_verts(): Vertex not found\");\n        }\n\n        // set the vertex to point to the resolved `ObjVertex`\n        face->vertices[i] = (struct ObjVertex *) node->obj;\n    }\n    calc_face_normal(face);\n}\n\n/**\n * @brief Convert vertex ID numbers for an `ObjGroup` of `ObjFace`s into pointers\n *        to `ObjVertex` structures\n *\n * This function takes an `ObjGroup` of `ObjFace` structures whose `vertices` field\n * has indices and not pointers. These indices are transformed into pointers of\n * `ObjVertex` or `ObjParticle` structures from the @p vtxgrp `ObjGroup`.\n *\n * @param facegrp `ObjGroup` of `ObjFaces` to map vertex indices to pointers\n * @param vtxgrp  `ObjGroup` of `ObjVertices`/`ObjParticles` to be mapped against\n * @return void\n * @note It seems that this function was replaced by `chk_shapegen()`, which performs\n *       a very similar task...\n */\nvoid map_vertices(struct ObjGroup *facegrp, struct ObjGroup *vtxgrp) {\n    register struct ListNode *faceNode;\n    struct ObjFace *curFace;\n    register struct ListNode *vtxNode;\n    struct ObjVertex *vtx;\n\n    imin(\"map_vertices\");\n\n    // resolve vertex indices to actual vertices\n    faceNode = facegrp->firstMember;\n    while (faceNode != NULL) {\n        curFace = (struct ObjFace *) faceNode->obj;\n        find_thisface_verts(curFace, vtxgrp);\n        faceNode = faceNode->next;\n    }\n\n    // compute normals of vertices in vtxgrp\n    vtxNode = vtxgrp->firstMember;\n    while (vtxNode != NULL) {\n        vtx = (struct ObjVertex *) vtxNode->obj;\n        calc_vtx_normal(vtx, facegrp);\n        vtxNode = vtxNode->next;\n    }\n\n    imout();\n}\n\n/**\n * Unselect a grabbable objects\n *\n * @param obj `GdObj` to unselect\n * @return void\n * @note Not Called\n */\nvoid unpick_obj(struct GdObj *obj) {\n    struct GdObj *why = obj;\n    if (why->drawFlags & OBJ_IS_GRABBABLE) {\n        why->drawFlags &= ~(OBJ_PICKED | OBJ_HIGHLIGHTED);\n    }\n}\n\n/**\n * @brief Find the closest object to the cursor on an A-button press\n *\n * This function is applied to all objects in an `ObjView.components` group\n * to find the object closest to the cursor when there's an A press\n *\n * @param input `GdObj` to check\n * @return void\n */\nvoid find_closest_pickable_obj(struct GdObj *input) {\n    struct GdObj *obj = input;\n    UNUSED u8 filler[12];\n    f32 distance;\n\n    if (obj->drawFlags & OBJ_IS_GRABBABLE) {\n        if (obj->index == sPickDataTemp) {\n            if (gViewUpdateCamera != NULL) {\n                distance = d_calc_world_dist_btwn(&gViewUpdateCamera->header, obj);\n            } else {\n                distance = 0.0f;\n            }\n\n            if (distance < sPickObjDistance) {\n                sPickObjDistance = distance;\n                sPickedObject = obj;\n            }\n        }\n    }\n}\n\n/**\n * @brief Set the global view camera if not already set.\n *\n * This function is used to find the first `ObjCamera` when running `update_view()`.\n *\n * @param cam `ObjCamera` to set to the update camera, if possible\n * @return void\n */\nvoid set_view_update_camera(struct ObjCamera *cam) {\n    if (gViewUpdateCamera != NULL) {\n        return;\n    }\n\n    gViewUpdateCamera = cam;\n}\n\n/**\n * @brief The main per-frame function for handling a view\n *\n * This function handles updating and rendering a given `ObjView` structure.\n * It also handles the A button input for grabbing an area of an `ObjShape`\n * that is contained in the `ObjView.components` group\n *\n * @param view The `ObjView` to update\n * @return void\n */\nvoid update_view(struct ObjView *view) {\n    s32 i;\n    s32 pickOffset;\n    s32 pickDataSize;\n    s32 j;\n    s32 pickDataIdx;\n    s32 pickedObjType;\n    char objTypeAbbr[0x100];\n\n    sUpdateViewState.shapesDrawn = 0;\n    sUpdateViewState.unused = 0;\n\n    if (!(view->flags & VIEW_UPDATE)) {\n        view->flags &= ~VIEW_WAS_UPDATED;\n        return;\n    }\n\n    imin(\"UpdateView()\");\n    if (view->proc != NULL) {\n        view->proc(view);\n    }\n\n    if (!(view->flags & VIEW_WAS_UPDATED)) {\n        view->flags |= VIEW_WAS_UPDATED;\n    }\n\n    gViewUpdateCamera = NULL;\n    if (view->components != NULL) {\n        apply_to_obj_types_in_group(OBJ_TYPE_CAMERAS, (applyproc_t) set_view_update_camera,\n                                    view->components);\n        view->activeCam = gViewUpdateCamera;\n\n        if (view->activeCam != NULL) {\n            gViewUpdateCamera->unk18C = view;\n        }\n    }\n\n    if (view->flags & VIEW_MOVEMENT) {\n        split_timer(\"dlgen\");\n        restart_timer(\"dynamics\");\n        proc_view_movement(view);\n        split_timer(\"dynamics\");\n        restart_timer(\"dlgen\");\n        gViewUpdateCamera = view->activeCam;\n    }\n\n    if (!(view->flags & VIEW_DRAW)) {\n        imout();\n        return;\n    }\n\n    sUpdateViewState.view = view;\n    set_active_view(view);\n    view->gdDlNum = gd_startdisplist(8);\n    start_view_dl(sUpdateViewState.view);\n    gd_shading(9);\n\n    if (view->flags & (VIEW_UNK_2000 | VIEW_UNK_4000)) {\n        gd_set_one_cycle();\n    }\n\n    if (view->components != NULL) {\n        if (gGdCtrl.dragging) {\n            if (gd_getproperty(3, 0) != FALSE && gGdCtrl.startedDragging != FALSE) {\n                init_pick_buf(sPickBuffer, ARRAY_COUNT(sPickBuffer));\n                drawscene(FIND_PICKS, sUpdateViewState.view->components, NULL);\n                pickOffset = get_cur_pickbuf_offset(sPickBuffer);\n                sPickDataTemp = 0;\n                sPickedObject = NULL;\n                sPickObjDistance = 10000000.0f;\n\n                if (pickOffset < 0) {\n                    fatal_printf(\"UpdateView(): Pick buffer too small\");\n                } else if (pickOffset > 0) {\n                    pickDataIdx = 0;\n                    for (i = 0; i < pickOffset; i++) {\n                        pickDataSize = sPickBuffer[pickDataIdx++];\n                        if (pickDataSize != 0) {\n                            switch ((pickedObjType = sPickBuffer[pickDataIdx++])) {\n                                case OBJ_TYPE_JOINTS:\n                                    gd_strcpy(objTypeAbbr, \"J\");\n                                    break;\n                                case OBJ_TYPE_NETS:\n                                    gd_strcpy(objTypeAbbr, \"N\");\n                                    break;\n                                case OBJ_TYPE_PARTICLES:\n                                    gd_strcpy(objTypeAbbr, \"P\");\n                                    break;\n                                default:\n                                    gd_strcpy(objTypeAbbr, \"?\");\n                                    break;\n                            }\n                        }\n\n                        if (pickDataSize >= 2) {\n                            for (j = 0; j < pickDataSize - 1; j++) {\n                                sPickDataTemp = sPickBuffer[pickDataIdx++];\n                                apply_to_obj_types_in_group(pickedObjType,\n                                                            (applyproc_t) find_closest_pickable_obj,\n                                                            sUpdateViewState.view->components);\n                            }\n                        }\n                    }\n                }\n\n                if (sPickedObject != NULL) {\n                    sPickedObject->drawFlags |= OBJ_PICKED;\n                    sPickedObject->drawFlags |= OBJ_HIGHLIGHTED;\n                    sUpdateViewState.view->pickedObj = sPickedObject;\n                    gGdCtrl.dragStartX = gGdCtrl.csrX = sGrabCords.x;\n                    gGdCtrl.dragStartY = gGdCtrl.csrY = sGrabCords.y;\n                }\n            }\n\n            find_and_drag_picked_object(sUpdateViewState.view->components);\n        } else { // check for any previously picked objects, and turn off?\n            if (sUpdateViewState.view->pickedObj != NULL) {\n                sUpdateViewState.view->pickedObj->drawFlags &= ~OBJ_PICKED;\n                sUpdateViewState.view->pickedObj->drawFlags &= ~OBJ_HIGHLIGHTED;\n                sUpdateViewState.view->pickedObj = NULL;\n            }\n        }\n\n        drawscene(RENDER_SCENE, sUpdateViewState.view->components, sUpdateViewState.view->lights);\n    }\n\n    border_active_view();\n    gd_enddlsplist_parent();\n    imout();\n    return;\n}\n/**\n * Stub function.\n * @note Not Called\n */\nvoid stub_draw_objects_1(void) {\n}\n"
  },
  {
    "path": "src/goddard/draw_objects.h",
    "content": "#ifndef GD_DRAW_OBJECTS_H\n#define GD_DRAW_OBJECTS_H\n\n#include <PR/ultratypes.h>\n\n#include \"gd_types.h\"\n#include \"macros.h\"\n\n// TODO: make this an enum without causing bss reordering\n#define COLOUR_BLACK     0\n#define COLOUR_WHITE     1\n#define COLOUR_RED       2\n#define COLOUR_GREEN     3\n#define COLOUR_BLUE      4\n#define COLOUR_GRAY      5\n#define COLOUR_DARK_GRAY 6\n#define COLOUR_DARK_BLUE 7\n#define COLOUR_YELLOW    8\n#define COLOUR_PINK      9\n#define COLOUR_BLACK2   10  // same as COLOUR_BLACK\n\n// data\nextern struct ObjCamera *gViewUpdateCamera;\n\n// bss\n// this is unused, but it needs to be declared before gGdLightGroup\nextern u8 gUnref_801B9B30[0x88];\nextern struct ObjGroup *gGdLightGroup;  // ObjGroup* of ObjLights\n\n// functions\nvoid draw_light(struct ObjLight *light);\nvoid draw_material(struct ObjMaterial *mtl);\nstruct GdColour *gd_get_colour(s32 idx);\nvoid draw_face(struct ObjFace *face);\nvoid draw_label(struct ObjLabel *label);\nvoid draw_net(struct ObjNet *self);\nvoid draw_gadget(struct ObjGadget *gdgt);\nvoid draw_camera(struct ObjCamera *cam);\nvoid world_pos_to_screen_coords(struct GdVec3f *pos, struct ObjCamera *cam, struct ObjView *view);\nvoid draw_nothing(UNUSED struct GdObj *nop);\nvoid draw_particle(struct GdObj *obj);\nvoid draw_bone(struct GdObj *obj);\nvoid draw_joint(struct GdObj *obj);\nvoid draw_group(struct ObjGroup *grp);\nvoid draw_plane(struct GdObj *obj);\nvoid apply_obj_draw_fn(struct GdObj *obj);\nvoid create_gddl_for_shapes(struct ObjGroup *grp);\nvoid map_face_materials(struct ObjGroup *faces, struct ObjGroup *mtls);\nvoid map_vertices(struct ObjGroup *facegrp, struct ObjGroup *vtxgrp);\nvoid update_view(struct ObjView *view);\n\n#endif // GD_DRAW_OBJECTS_H\n"
  },
  {
    "path": "src/goddard/dynlist_proc.c",
    "content": "#include <PR/ultratypes.h>\n#include <stdio.h>\n\n#include \"bad_declarations.h\"\n#include \"debug_utils.h\"\n#include \"draw_objects.h\"\n#include \"dynlist_proc.h\"\n#include \"gd_main.h\"\n#include \"gd_math.h\"\n#include \"gd_types.h\"\n#include \"joints.h\"\n#include \"macros.h\"\n#include \"objects.h\"\n#include \"old_menu.h\"\n#include \"particles.h\"\n#include \"renderer.h\"\n#include \"shape_helper.h\"\n#include \"skin.h\"\n\n/**\n * @file dynlist_proc.c\n *\n * Functions for parsing and processing Goddard's DynList object format.\n * It also has utility functions for abstracting at runtime over the various\n * flavors of `GdObj`s.\n */\n\n// constants\n/// Size of the dynamic object name buffer\n#define DYNOBJ_NAME_SIZE 8\n/// Total number of dynamic `GdObj`s that can be created\n#define DYNOBJ_LIST_SIZE 3000\n/// Maximum number of verticies supported when adding vertices node to an `ObjShape`\n#define VTX_BUF_SIZE 3000\n\n// types\n/// Information about a dynamically created `GdObj`\nstruct DynObjInfo {\n    char name[DYNOBJ_NAME_SIZE];\n    struct GdObj *obj;\n    s32 num;\n    s32 unk;\n};\n/// @name DynList Accessors\n/// Accessor marcos for easy interpretation of data in a `DynList` packet\n///@{\n#define Dyn1AsInt(dyn) ((dyn)->w1.word)\n#define Dyn1AsPtr(dyn) ((dyn)->w1.ptr)\n#define Dyn1AsStr(dyn) ((dyn)->w1.str)\n#define Dyn1AsName(dyn) ((DynObjName)((dyn)->w1.ptr))\n\n#define Dyn2AsInt(dyn) ((dyn)->w2.word)\n#define Dyn2AsPtr(dyn) ((dyn)->w2.ptr)\n#define Dyn2AsStr(dyn) ((dyn)->w2.str)\n#define Dyn2AsName(dyn) ((DynObjName)((dyn)->w2.ptr))\n\n#define DynVec(dyn) (&(dyn)->vec)\n#define DynVecX(dyn) ((dyn)->vec.x)\n#define DynVecY(dyn) ((dyn)->vec.y)\n#define DynVecZ(dyn) ((dyn)->vec.z)\n///@}\n\n// data\nstatic struct DynObjInfo *sGdDynObjList = NULL; // @ 801A8250; info for all loaded/made dynobjs\nstatic struct GdObj *sDynListCurObj = NULL;     // @ 801A8254\nstatic struct GdBoundingBox sNullBoundingBox = {        // @ 801A8258\n    0.0, 0.0, 0.0,\n    0.0, 0.0, 0.0\n};\nstatic s32 sUseIntegerNames = FALSE;  // if TRUE, then all DynNames are specified as integers\n\n// bss\nstatic char sIntToStringBuf[DYNOBJ_NAME_SIZE]; ///< buffer for returning formated string from\n                                               ///< `integer_name_to_string()`\nstatic struct DynObjInfo sNullDynObjInfo;      // @ 801B9F08\nstatic char sDynNameSuffix[DYNOBJ_NAME_SIZE];       // @ 801B9F20; small buf for printing dynid to?\nstatic s32\n    sUnnamedObjCount;      // @ 801B9F28; used to print empty string ids (not NULL char *) to sDynNameSuffix\nstatic s32 sLoadedDynObjs; // @ 801B9F2C; total loaded dynobjs\nstatic struct DynObjInfo *sDynListCurInfo; // @ 801B9F30; info for most recently added object\nstatic struct DynObjInfo *sParentObjInfo; ///< Information for `ObjNet` made by `d_add_net_with_subgroup()` or `ObjJoint` made by `d_attach_joint_to_net()`\nstatic struct DynObjInfo *sStashedDynObjInfo; // @ 801B9F38\nstatic struct GdObj *sStashedDynObj;          // @ 801B9F3C\nstatic s32 sDynNetCount;                      // @ 801B9F40\nstatic char sDynNetNameSuffix[0x20];               // @ 801B9F48\nstatic char sStashedDynNameSuffix[0x100];                  // @ 801B9F68\n\n// necessary foreward declarations\nvoid d_add_net_with_subgroup(s32, DynObjName);\nvoid d_end_net_with_subgroup(DynObjName);\nvoid d_attach_joint_to_net(s32, DynObjName);\nvoid d_addto_group(DynObjName);\nvoid d_link_with(DynObjName);\nvoid d_link_with_ptr(void *);\nvoid d_set_normal(f32, f32, f32);\nvoid d_make_vertex(struct GdVec3f *);\nvoid d_set_rotation(f32, f32, f32);\nvoid d_center_of_gravity(f32, f32, f32);\nvoid d_set_shape_offset(f32, f32, f32);\nvoid d_clear_flags(s32);\nvoid d_attach(DynObjName);\nvoid d_attach_to(s32, struct GdObj *);\nvoid d_attachto_dynid(s32, DynObjName);\nvoid d_set_att_offset(const struct GdVec3f *);\nvoid d_set_nodegroup(DynObjName);\nvoid d_set_matgroup(DynObjName);\nvoid d_set_skinshape(DynObjName);\nvoid d_set_planegroup(DynObjName);\nvoid d_set_shapeptr(DynObjName);\nvoid d_friction(f32, f32, f32);\nvoid d_set_spring(f32);\nvoid d_set_ambient(f32, f32, f32);\nvoid d_set_control_type(s32);\nvoid d_set_skin_weight(s32, f32);\nvoid d_set_id(s32);\nvoid d_set_material(void *, s32);\nvoid d_map_materials(DynObjName);\nvoid d_map_vertices(DynObjName);\nvoid d_set_texture_st(f32, f32);\nvoid d_use_texture(void *);\nvoid d_make_netfromshapeid(DynObjName);\nvoid d_make_netfromshape_ptrptr(struct ObjShape **);\nvoid add_to_dynobj_list(struct GdObj *, DynObjName);\n\n/**\n * Store the active dynamic `GdObj` into a one object stash.\n */\nvoid d_stash_dynobj(void) {\n    sStashedDynObjInfo = sDynListCurInfo;\n    sStashedDynObj = sDynListCurObj;\n}\n\n/**\n * Set the stashed `GdObj` as the active dynamic `GdObj`.\n */\nvoid d_unstash_dynobj(void) {\n    sDynListCurObj = sStashedDynObj;\n    sDynListCurInfo = sStashedDynObjInfo;\n}\n\n/**\n * Reset dynlist related variables to a starting state\n */\nvoid reset_dynlist(void) {\n    sUnnamedObjCount = 0;\n    sLoadedDynObjs = 0;\n    sDynNameSuffix[0] = '\\0';\n    sGdDynObjList = NULL;\n    sDynListCurObj = NULL;\n    sDynNetCount = 0;\n    sUseIntegerNames = FALSE;\n    gd_strcpy(sNullDynObjInfo.name, \"NullObj\");\n}\n\n/**\n * Parse a `DynList` array into active `GdObj`s.\n *\n * @returns Pointer to current dynamically created dynamic `GdObj`.\n *          Normally the dynlist specifically sets an object for return.\n */\nstruct GdObj *proc_dynlist(struct DynList *dylist) {\n    UNUSED u8 filler[8];\n\n    if (dylist++->cmd != 0xD1D4) {\n        fatal_printf(\"proc_dynlist() not a valid dyn list\");\n    }\n\n    while (dylist->cmd != 58) {\n        switch (dylist->cmd) {\n            case 43:\n                d_set_name_suffix(Dyn1AsStr(dylist));\n                break;\n            case 15:\n                d_makeobj(Dyn2AsInt(dylist), Dyn1AsName(dylist));\n                break;\n            case 46:\n                d_add_net_with_subgroup(Dyn2AsInt(dylist), Dyn1AsName(dylist));\n                break;\n            case 48:\n                d_end_net_with_subgroup(Dyn1AsName(dylist));\n                break;\n            case 47:\n                d_attach_joint_to_net(Dyn2AsInt(dylist), Dyn1AsName(dylist));\n                break;\n            case 16:\n                d_start_group(Dyn1AsName(dylist));\n                break;\n            case 17:\n                d_end_group(Dyn1AsName(dylist));\n                break;\n            case 18:\n                d_addto_group(Dyn1AsName(dylist));\n                break;\n            case 30:\n                d_use_obj(Dyn1AsName(dylist));\n                break;\n            case 28:\n                d_link_with(Dyn1AsName(dylist));\n                break;\n            case 50:\n                d_add_valptr(Dyn1AsName(dylist), (u32) DynVecY(dylist), Dyn2AsInt(dylist),\n                             (size_t) DynVecX(dylist));\n                break;\n            case 29:\n                d_link_with_ptr(Dyn1AsPtr(dylist));\n                break;\n            case 12:\n                proc_dynlist(Dyn1AsPtr(dylist));\n                break;\n            case 0:\n                d_use_integer_names(Dyn2AsInt(dylist));\n                break;\n            case 1:\n                d_set_init_pos(DynVecX(dylist), DynVecY(dylist), DynVecZ(dylist));\n                break;\n            case 2:\n                d_set_rel_pos(DynVecX(dylist), DynVecY(dylist), DynVecZ(dylist));\n                break;\n            case 3:\n                d_set_world_pos(DynVecX(dylist), DynVecY(dylist), DynVecZ(dylist));\n                break;\n            case 4:\n                d_set_normal(DynVecX(dylist), DynVecY(dylist), DynVecZ(dylist));\n                break;\n            case 5:\n                d_set_scale(DynVecX(dylist), DynVecY(dylist), DynVecZ(dylist));\n                break;\n            case 49:\n                d_make_vertex(DynVec(dylist));\n                break;\n            case 6:\n                d_set_rotation(DynVecX(dylist), DynVecY(dylist), DynVecZ(dylist));\n                break;\n            case 27:\n                d_center_of_gravity(DynVecX(dylist), DynVecY(dylist), DynVecZ(dylist));\n                break;\n            case 26:\n                d_set_shape_offset(DynVecX(dylist), DynVecY(dylist), DynVecZ(dylist));\n                break;\n            case 44:\n                d_set_parm_f(Dyn2AsInt(dylist), DynVecX(dylist));\n                break;\n            case 45:\n                d_set_parm_ptr(Dyn2AsInt(dylist), Dyn1AsPtr(dylist));\n                break;\n            case 8:\n                d_set_flags(Dyn2AsInt(dylist));\n                break;\n            case 9:\n                d_clear_flags(Dyn2AsInt(dylist));\n                break;\n            case 7:\n                d_set_obj_draw_flag(Dyn2AsInt(dylist));\n                break;\n            case 39:\n                d_attach(Dyn1AsName(dylist));\n                break;\n            case 40:\n                d_attachto_dynid(Dyn2AsInt(dylist), Dyn1AsName(dylist));\n                break;\n            case 41:\n                d_set_att_offset(DynVec(dylist));\n                break;\n            case 21:\n                d_set_nodegroup(Dyn1AsName(dylist));\n                break;\n            case 20:\n                d_set_matgroup(Dyn1AsName(dylist));\n                break;\n            case 22:\n                d_set_skinshape(Dyn1AsName(dylist));\n                break;\n            case 23:\n                d_set_planegroup(Dyn1AsName(dylist));\n                break;\n            case 24:\n                d_set_shapeptrptr(Dyn1AsPtr(dylist));\n                break;\n            case 25:\n                d_set_shapeptr(Dyn1AsName(dylist));\n                break;\n            case 19:\n                d_set_type(Dyn2AsInt(dylist));\n                break;\n            case 13:\n                d_set_colour_num(Dyn2AsInt(dylist));\n                break;\n            case 10:\n                d_friction(DynVecX(dylist), DynVecY(dylist), DynVecZ(dylist));\n                break;\n            case 11:\n                d_set_spring(DynVecX(dylist));\n                break;\n            case 33:\n                d_set_ambient(DynVecX(dylist), DynVecY(dylist), DynVecZ(dylist));\n                break;\n            case 34:\n                d_set_diffuse(DynVecX(dylist), DynVecY(dylist), DynVecZ(dylist));\n                break;\n            case 31:\n                d_set_control_type(Dyn2AsInt(dylist));\n                break;\n            case 32:\n                d_set_skin_weight(Dyn2AsInt(dylist), DynVecX(dylist));\n                break;\n            case 35:\n                d_set_id(Dyn2AsInt(dylist));\n                break;\n            case 36:\n                d_set_material(Dyn1AsPtr(dylist), Dyn2AsInt(dylist));\n                break;\n            case 37:\n                d_map_materials(Dyn1AsName(dylist));\n                break;\n            case 38:\n                d_map_vertices(Dyn1AsName(dylist));\n                break;\n            case 53:\n                d_set_texture_st(DynVecX(dylist), DynVecY(dylist));\n                break;\n            case 52:\n                d_use_texture(Dyn2AsPtr(dylist));\n                break;\n            case 54:\n                d_make_netfromshapeid(Dyn1AsName(dylist));\n                break;\n            case 55:\n                d_make_netfromshape_ptrptr(Dyn1AsPtr(dylist));\n                break;\n            default:\n                fatal_printf(\"proc_dynlist(): unkown command\");\n        }\n        dylist++;\n    }\n\n    return sDynListCurObj;\n}\n\n/**\n * Copy input `str` into a buffer that will be concatenated to a dynamic\n * `GdObj`'s name string when creating a new dynamic object. If input\n * is `NULL`, then a generic string is created based on the number of\n * unnamed objects.\n */\nvoid d_set_name_suffix(char *str) {\n    if (str != NULL) {\n        if (str[0] == '\\0') {\n            sprintf(sDynNameSuffix, \"__%d\", ++sUnnamedObjCount);\n        } else {\n            gd_strcpy(sDynNameSuffix, str);\n        }\n    } else {\n        sDynNameSuffix[0] = '\\0';\n    }\n}\n\n/**\n * Concatenate input `str` into a buffer that will be concatenated to a dynamic\n * `GdObj`'s name string when creating a new dynamic object. If input\n * is `NULL`, then a generic string is created based on the number of\n * unnamed objects.\n *\n * @note Not called\n */\nvoid d_append_to_name_suffix(char *str) {\n    char buf[0xff + 1];\n\n    if (str != NULL) {\n        if (str[0] == '\\0') {\n            sprintf(buf, \"__%d\", ++sUnnamedObjCount);\n        } else {\n            gd_strcpy(buf, str);\n        }\n    } else {\n        buf[0] = '\\0';\n    }\n\n    gd_strcat(sDynNameSuffix, buf);\n}\n\n/**\n * Stash the current string that is appended to a created dynamic `GdObj` name.\n */\nstatic void stash_name_suffix(void) {\n    gd_strcpy(sStashedDynNameSuffix, sDynNameSuffix);\n}\n\n/**\n * Pop the stash for the string that is appended to a created dynamic `GdObj` name.\n */\nstatic void unstash_name_suffix(void) {\n    gd_strcpy(sDynNameSuffix, sStashedDynNameSuffix);\n}\n\n/**\n * Get the `DynObjInfo` struct for object `name`\n *\n * @param name Either a string or integer id for a dynamic `GdObj`\n * @returns pointer to that object's information\n */\nstatic struct DynObjInfo *get_dynobj_info(DynObjName name) {\n    struct DynObjInfo *foundDynobj;\n    char buf[0x100];\n    s32 i;\n\n    if (sLoadedDynObjs == 0) {\n        return NULL;\n    }\n\n    if (sUseIntegerNames) {\n        sprintf(buf, \"N%d\", DynNameAsInt(name));\n    } else {\n        gd_strcpy(buf, DynNameAsStr(name));\n    }\n\n    gd_strcat(buf, sDynNameSuffix);\n    foundDynobj = NULL;\n    for (i = 0; i < sLoadedDynObjs; i++) {\n        if (gd_str_not_equal(sGdDynObjList[i].name, buf) == 0) {\n            foundDynobj = &sGdDynObjList[i];\n            break;\n        }\n    }\n\n    return foundDynobj;\n}\n\n/**\n * Reset the number of created dynamic objects and\n * free the dynamic object information list (`sGdDynObjList`).\n * The objects themselves still exist, though.\n *\n * @note Not called\n */\nvoid reset_dynamic_objs(void) {\n    UNUSED u8 filler[4];\n\n    if (sLoadedDynObjs == 0) {\n        return;\n    }\n\n    gd_free(sGdDynObjList);\n    sLoadedDynObjs = 0;\n    sGdDynObjList = NULL;\n}\n\n/**\n * Create an `ObjNet` and an associated node `ObjGroup`. This function creates\n * its own naming string to append to later created dynamic objects.\n */\nvoid d_add_net_with_subgroup(UNUSED s32 a0, DynObjName name) {\n    d_makeobj(D_NET, name);\n    d_set_obj_draw_flag(OBJ_INVISIBLE);\n    // this creates a string to append to the names of the objs created after this\n    sprintf(sDynNetNameSuffix, \"c%d\", ++sDynNetCount);\n    d_set_type(4);\n    stash_name_suffix();\n    d_set_name_suffix(sDynNetNameSuffix);\n    d_start_group(name);\n    unstash_name_suffix();\n    d_use_obj(name);\n    sParentObjInfo = sDynListCurInfo;\n}\n\n/**\n * End the `ObjNet`+`ObjGroup` set created by `d_add_net_with_subgroup()`.\n */\nvoid d_end_net_with_subgroup(DynObjName name) {\n    d_use_obj(name);\n    stash_name_suffix();\n    d_set_name_suffix(sDynNetNameSuffix);\n    d_end_group(name);\n    d_set_nodegroup(name);\n    unstash_name_suffix();\n    sParentObjInfo = NULL;\n}\n\n/**\n * Create an `ObjJoint` and attach that to the `ObjNet` created by\n * `d_add_net_with_subgroup()` or the most recent `ObjJoint` created\n * by `d_attach_joint_to_net()`.\n *\n * @param arg0 Not used\n * @param name   Name for created `ObjJoint`\n */\nvoid d_attach_joint_to_net(UNUSED s32 arg0, DynObjName name) {\n    UNUSED struct DynObjInfo *curInfo = sDynListCurInfo;\n    UNUSED u8 filler[8];\n\n    d_makeobj(D_JOINT, name);\n    d_set_type(3);\n    d_set_shapeptrptr(NULL);\n    d_attach_to(0xD, sParentObjInfo->obj);\n    sParentObjInfo = sDynListCurInfo;\n}\n\n/**\n * Create a new `ObjNet` linked with the dynamic `ObjShape` `name`.\n * The newly made net is added to the dynamic object list.\n */\nvoid d_make_netfromshapeid(DynObjName name) {\n    struct DynObjInfo *dyninfo = get_dynobj_info(name);\n    struct ObjNet *net;\n\n    if (dyninfo == NULL) {\n        fatal_printf(\"dMakeNetFromShape(\\\"%s\\\"): Undefined object\", DynNameAsStr(name));\n    }\n\n    net = make_netfromshape((struct ObjShape *) dyninfo->obj);\n    add_to_dynobj_list(&net->header, NULL);\n}\n\n/**\n * Create a new `ObjNet` linked with the doubly indirected `ObjShape`.\n * The newly made net is added to the dynamic object list, but\n * the shape is not moved into the dynamic list.\n */\nvoid d_make_netfromshape_ptrptr(struct ObjShape **shapePtr) {\n    UNUSED u8 filler[4];\n    struct ObjNet *net = make_netfromshape(*shapePtr);\n\n    printf(\"dMakeNetFromShapePtrPtr\\n\");\n\n    add_to_dynobj_list(&net->header, NULL);\n}\n\n/**\n * Add `newobj` identified by `name` to the dynamic `GdObj` list. Once a `GdObj`\n * is in the dynamic list, it can referred to by its `name` when that object is\n * needed later.\n */\nvoid add_to_dynobj_list(struct GdObj *newobj, DynObjName name) {\n    UNUSED u8 filler[4];\n    char idbuf[0x100];\n\n    start_memtracker(\"dynlist\");\n\n    if (sGdDynObjList == NULL) {\n        sGdDynObjList = gd_malloc_temp(DYNOBJ_LIST_SIZE * sizeof(struct DynObjInfo));\n        if (sGdDynObjList == NULL) {\n            fatal_printf(\"dMakeObj(): Cant allocate dynlist memory\");\n        }\n    }\n\n    stop_memtracker(\"dynlist\");\n\n    if (sUseIntegerNames) {\n        sprintf(idbuf, \"N%d\", DynNameAsInt(name));\n        name = NULL;\n    } else {\n        sprintf(idbuf, \"U%d\", ((u32) sLoadedDynObjs) + 1);\n    }\n\n    if (DynNameAsStr(name) != NULL) {\n        if (get_dynobj_info(name) != NULL) {\n            fatal_printf(\"dMakeObj(\\\"%s\\\"): Object with same name already exists\", DynNameAsStr(name));\n        }\n        gd_strcpy(sGdDynObjList[sLoadedDynObjs].name, DynNameAsStr(name));\n    } else {\n        gd_strcpy(sGdDynObjList[sLoadedDynObjs].name, idbuf);\n    }\n\n    gd_strcat(sGdDynObjList[sLoadedDynObjs].name, sDynNameSuffix);\n\n    if (gd_strlen(sGdDynObjList[sLoadedDynObjs].name) > (DYNOBJ_NAME_SIZE - 1)) {\n        fatal_printf(\"dyn list obj name too long '%s'\", sGdDynObjList[sLoadedDynObjs].name);\n    }\n\n    sGdDynObjList[sLoadedDynObjs].num = sLoadedDynObjs;\n    sDynListCurInfo = &sGdDynObjList[sLoadedDynObjs];\n    sGdDynObjList[sLoadedDynObjs++].obj = newobj;\n\n    // A good place to bounds-check your array is\n    // after you finish writing a new member to it.\n    if (sLoadedDynObjs >= DYNOBJ_LIST_SIZE) {\n        fatal_printf(\"dMakeObj(): Too many dynlist objects\");\n    }\n\n    sDynListCurObj = newobj;\n}\n\n/**\n * Format `name` into string, if `DynObjName`s are currently being interpreted\n * as numbers.\n *\n * @returns pointer to global buffer for id\n * @retval NULL if `name` is `NULL` or if `DynObjName`s are interpreted as strings\n */\nstatic char *integer_name_to_string(DynObjName name) {\n    if (DynNameAsInt(name) != 0 && sUseIntegerNames) {\n        sprintf(sIntToStringBuf, \"N%d\", DynNameAsInt(name));\n        return sIntToStringBuf;\n    }\n\n    return NULL;\n}\n\n/**\n * Create a new `GdObj` of `type` and add that object to the\n * dynamic object list with `name`. Created objects have default\n * parameters, which are usually 0 or NULL.\n *\n * @returns pointer to created object\n */\nstruct GdObj *d_makeobj(enum DObjTypes type, DynObjName name) {\n    struct GdObj *dobj;\n    UNUSED struct ObjGroup *dgroup;\n\n    switch (type) {\n        case D_CAR_DYNAMICS:\n            fatal_printf(\"dmakeobj() Car dynamics are missing!\");\n            break;\n        case D_JOINT:\n            dobj = &make_joint(0, 0.0f, 0.0f, 0.0f)->header;\n            break;\n        case D_ANOTHER_JOINT:\n            dobj = &make_joint(0, 0.0f, 0.0f, 0.0f)->header;\n            break;\n        case D_NET:\n            dobj = &make_net(0, NULL, NULL, NULL, NULL)->header;\n            break;\n        case D_GROUP:\n            dobj = &make_group(0)->header;\n            dgroup = (struct ObjGroup *) dobj;\n            break;\n        case D_DATA_GRP:\n            d_makeobj(D_GROUP, name);\n            ((struct ObjGroup *) sDynListCurObj)->linkType = 1;\n//! @bug Returns garbage when making `D_DATA_GRP` object\n#ifdef AVOID_UB\n            return NULL;\n#else\n            return;\n#endif\n        case D_CAMERA:\n            dobj = &make_camera(0, NULL)->header;\n            break;\n        case D_BONE:\n            dobj = &make_bone(0, NULL, NULL, 0)->header;\n            break;\n        case D_PARTICLE:\n            dobj = &make_particle(0, 0, 0.0f, 0.0f, 0.0f)->header;\n            break;\n        case D_VERTEX:\n            dobj = &gd_make_vertex(0.0f, 0.0f, 0.0f)->header;\n            break;\n        case D_FACE:\n            dobj = &make_face_with_colour(1.0, 1.0, 1.0)->header;\n            break;\n        case D_PLANE:\n            dobj = &make_plane(FALSE, NULL)->header;\n            break;\n        case D_MATERIAL:\n            dobj = &make_material(0, NULL, 0)->header;\n            break;\n        case D_SHAPE:\n            dobj = &make_shape(0, integer_name_to_string(name))->header;\n            break;\n        case D_GADGET:\n            dobj = &make_gadget(0, 0)->header;\n            break;\n        case D_LABEL:\n            //! @bug When making a `D_LABEL`, the call to `make_label()`\n            //!      compiles incorrectly due to Goddard only declaring\n            //!      the functions, not prototyping the functions\n            dobj = &make_label(NULL, NULL, 8, 0, 0, 0)->header;\n            break;\n        case D_VIEW:\n            dobj = &make_view(NULL,\n                              (VIEW_2_COL_BUF | VIEW_ALLOC_ZBUF | VIEW_UNK_2000 | VIEW_UNK_4000\n                               | VIEW_1_CYCLE | VIEW_MOVEMENT | VIEW_DRAW),\n                              2, 0, 0, 0, 0, NULL)\n                        ->header;\n            break;\n        case D_ANIMATOR:\n            dobj = &make_animator()->header;\n            break;\n        case D_LIGHT:\n            dobj = &make_light(0, NULL, 0)->header;\n            addto_group(gGdLightGroup, dobj);\n            break;\n        default:\n            fatal_printf(\"dMakeObj(): Unkown object type\");\n    }\n\n    add_to_dynobj_list(dobj, name);\n    return dobj;\n}\n\n/**\n * Attach dynamic object `name` to the current active `ObjJoint` object.\n *\n * @note This function doesn't actually do anything.\n */\nvoid d_attach(DynObjName name) {\n    struct DynObjInfo *info;\n\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    info = get_dynobj_info(name);\n    if (info == NULL) {\n        fatal_printf(\"dAttach(\\\"%s\\\"): Undefined object\", DynNameAsStr(name));\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_JOINTS:\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dAttach()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Attach the current dynamic `GdObj` into the proper subgroup of `obj` and set\n * the \"attach flags\" of the current dynamic object to `flag`\n */\nvoid d_attach_to(s32 flag, struct GdObj *obj) {\n    UNUSED u8 filler1[4];\n    struct ObjGroup *attgrp;\n    UNUSED u8 filler2[8];\n    UNUSED struct DynObjInfo *curInfo = sDynListCurInfo;\n    struct GdVec3f currObjPos; // transformed into attach offset\n    struct GdVec3f objPos;\n\n    d_stash_dynobj();\n\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    // find or generate attachment groups\n    switch (obj->type) {\n        case OBJ_TYPE_JOINTS:\n            if ((attgrp = ((struct ObjJoint *) obj)->attachedObjsGrp) == NULL) {\n                attgrp = ((struct ObjJoint *) obj)->attachedObjsGrp = make_group(0);\n            }\n            break;\n        case OBJ_TYPE_NETS:\n            if ((attgrp = ((struct ObjNet *) obj)->attachedObjsGrp) == NULL) {\n                attgrp = ((struct ObjNet *) obj)->attachedObjsGrp = make_group(0);\n            }\n            break;\n        case OBJ_TYPE_PARTICLES:\n            if ((attgrp = ((struct ObjParticle *) obj)->attachedObjsGrp) == NULL) {\n                attgrp = ((struct ObjParticle *) obj)->attachedObjsGrp = make_group(0);\n            }\n            break;\n        case OBJ_TYPE_ANIMATORS:\n            if ((attgrp = ((struct ObjAnimator *) obj)->attachedObjsGrp) == NULL) {\n                attgrp = ((struct ObjAnimator *) obj)->attachedObjsGrp = make_group(0);\n            }\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dAttachTo()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n\n    if (group_contains_obj(attgrp, sDynListCurObj)) {\n        return;\n    }\n\n    addto_group(attgrp, sDynListCurObj);\n\n    if (flag & 9) {\n        d_get_world_pos(&currObjPos);\n        set_cur_dynobj(obj);\n        d_get_world_pos(&objPos);\n\n        currObjPos.x -= objPos.x;\n        currObjPos.y -= objPos.y;\n        currObjPos.z -= objPos.z;\n    }\n\n    d_unstash_dynobj();\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_JOINTS:\n            ((struct ObjJoint *) sDynListCurObj)->attachFlags = flag;\n            ((struct ObjJoint *) sDynListCurObj)->attachedToObj = obj;\n            break;\n        case OBJ_TYPE_NETS:\n            ((struct ObjNet *) sDynListCurObj)->attachFlags = flag;\n            ((struct ObjNet *) sDynListCurObj)->attachedToObj = obj;\n            break;\n        case OBJ_TYPE_PARTICLES:\n            ((struct ObjParticle *) sDynListCurObj)->attachFlags = flag;\n            ((struct ObjParticle *) sDynListCurObj)->attachedToObj = obj;\n            break;\n        case OBJ_TYPE_ANIMATORS:\n            ((struct ObjAnimator *) sDynListCurObj)->attachFlags = flag;\n            ((struct ObjAnimator *) sDynListCurObj)->attachedToObj = obj;\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dAttachTo()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n\n    if (flag & 9) {\n        d_set_att_offset(&currObjPos);\n    }\n}\n\n/**\n * Attach the current dynamic object to dynamic object `name`. This function\n * is a wrapper around `d_attach_to()`\n */\nvoid d_attachto_dynid(s32 flag, DynObjName name) {\n    struct DynObjInfo *info;\n\n    if (name == NULL) {\n        return;\n    }\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    info = get_dynobj_info(name);\n    if (info == NULL) {\n        fatal_printf(\"dAttachTo(\\\"%s\\\"): Undefined object\", DynNameAsStr(name));\n    }\n\n    d_attach_to(flag, info->obj);\n}\n\n/**\n * Helper function to copy bytes. Where's memcpy when you need it?\n */\nvoid copy_bytes(u8 *src, u8 *dst, s32 num) {\n    if (num == 0) {\n        return;\n    }\n    while (num--) {\n        *dst++ = *src++;\n    }\n}\n\n/**\n * Allocate the animation data for `animator` onto the goddard heap.\n * Animation data of type `::GD_ANIM_SCALE3S_POS3S_ROT3S` is converted to a `AnimMtxVec` struct,\n * rather than solely byted copied like the other types.\n */\nvoid alloc_animdata(struct ObjAnimator *animator) {\n    UNUSED u8 filler1[4];\n    // probably should be three GdVec3fs, not triangle...\n    // vec0 = position; vec1 = scale? rotation?; vec2 = translation\n    struct GdTriangleF tri;           //+58; temp float for converting half to f32?\n    s16(*halfarr)[9];                 //+54; data to convert into a AnimMtxVec\n    struct AnimDataInfo *curAnimSrc;  //+50; source animation data...\n    struct AnimDataInfo *animDst;     //+4c; destination anim data II\n    struct AnimDataInfo *animDataArr; //+48; start of allocated anim data memory\n    struct ObjGroup *animgrp;         //+44\n    s32 datasize;                     //+40; anim data allocation size?\n    s32 dataIdx;                      //+3C; byte count?\n    s32 animCnt;                      //+38; count of animdata \"info\" structs\n    s32 i;                            //+34\n    void *allocSpace;                 //+30; allocated animdata space\n    f32 allocMtxScale = 0.1f;         //+2C; scale postion/rotation of GD_ANIM_SCALE3S_POS3S_ROT3S data\n    struct AnimMtxVec *curMtxVec;     //+28\n    UNUSED u8 filler2[4];\n\n    start_memtracker(\"animdata\");\n\n    if ((animgrp = animator->animdataGrp) == NULL) {\n        fatal_printf(\"no anim group\");\n    }\n\n    if ((curAnimSrc = (struct AnimDataInfo *) animgrp->firstMember->obj) == NULL) {\n        fatal_printf(\"no animation data\");\n    }\n\n    // count number of array-ed animation data structs\n    animDst = curAnimSrc;\n    animCnt = 0;\n    while (animDst++->count >= 0) {\n        animCnt++;\n    }\n\n    animDst = gd_malloc_perm(animCnt * sizeof(struct AnimDataInfo)); // gd_alloc_perm\n    if ((animDataArr = animDst) == NULL) {\n        fatal_printf(\"cant allocate animation data\");\n    }\n\n    for (i = 0; i < animCnt; i++) {\n        allocSpace = NULL;\n        if (curAnimSrc->type != 0) {\n            switch (curAnimSrc->type) {\n                case GD_ANIM_CAMERA_EYE3S_LOOKAT3S:\n                    datasize = sizeof(s16[6]);\n                    break;\n                case GD_ANIM_ROT3S:\n                    datasize = sizeof(s16[3]);\n                    break;\n                case GD_ANIM_POS3S:\n                    datasize = sizeof(s16[3]);\n                    break;\n                case GD_ANIM_ROT3S_POS3S:\n                    datasize = sizeof(s16[6]);\n                    break;\n                case GD_ANIM_SCALE3F_ROT3F_POS3F:\n                    datasize = sizeof(f32[3][3]);\n                    break;\n                /* This function will convert the s16[9] array into a struct AnimMtxVec */\n                case GD_ANIM_SCALE3S_POS3S_ROT3S:\n                    datasize = sizeof(struct AnimMtxVec);\n                    break;\n                case GD_ANIM_MTX4x4:\n                    datasize = sizeof(Mat4f);\n                    break;\n                default:\n                    fatal_printf(\"unknown anim type for allocation\");\n                    break;\n            }\n\n            allocSpace = gd_malloc_perm(curAnimSrc->count * datasize); // gd_alloc_perm\n            if (allocSpace == NULL) {\n                fatal_printf(\"cant allocate animation data\");\n            }\n\n            if (curAnimSrc->type == GD_ANIM_SCALE3S_POS3S_ROT3S) {\n                for (dataIdx = 0; dataIdx < curAnimSrc->count; dataIdx++) {\n                    halfarr = &((s16(*)[9]) curAnimSrc->data)[dataIdx];\n                    curMtxVec = &((struct AnimMtxVec *) allocSpace)[dataIdx];\n\n                    tri.p0.x = (f32)(*halfarr)[0] * allocMtxScale;\n                    tri.p0.y = (f32)(*halfarr)[1] * allocMtxScale;\n                    tri.p0.z = (f32)(*halfarr)[2] * allocMtxScale;\n                    tri.p1.x = (f32)(*halfarr)[3] * allocMtxScale;\n                    tri.p1.y = (f32)(*halfarr)[4] * allocMtxScale;\n                    tri.p1.z = (f32)(*halfarr)[5] * allocMtxScale;\n                    tri.p2.x = (f32)(*halfarr)[6];\n                    tri.p2.y = (f32)(*halfarr)[7];\n                    tri.p2.z = (f32)(*halfarr)[8];\n\n                    gd_set_identity_mat4(&curMtxVec->matrix);\n                    gd_rot_mat_about_vec(&curMtxVec->matrix, &tri.p1);\n                    gd_add_vec3f_to_mat4f_offset(&curMtxVec->matrix, &tri.p2);\n\n                    ((struct AnimMtxVec *) allocSpace)[dataIdx].vec.x = tri.p0.x;\n                    ((struct AnimMtxVec *) allocSpace)[dataIdx].vec.y = tri.p0.y;\n                    ((struct AnimMtxVec *) allocSpace)[dataIdx].vec.z = tri.p0.z;\n                }\n                curAnimSrc->type = GD_ANIM_MTX4x4F_SCALE3F;\n            } else {\n                copy_bytes(curAnimSrc->data, allocSpace, curAnimSrc->count * datasize);\n            }\n        }\n\n        animDst[i].type = curAnimSrc->type;\n        animDst[i].count = curAnimSrc->count;\n        animDst[i].data = allocSpace;\n\n        curAnimSrc++; // next anim data struct\n    }\n\n    animgrp->firstMember->obj = (void *) animDataArr;\n    stop_memtracker(\"animdata\");\n}\n\n/**\n * Generate or create the various `ObjVertex`, `ObjFace`, and/or\n * `ObjMaterial` when groups of those structures are attached to\n * `shape`. This function is called when `d_set_nodegroup()`,\n * `d_set_planegroup()`, or `d_set_matgroup()` are called\n * when an `ObjShape` is the active dynamic object.\n *\n * @note Face/vertices need to be set before materials\n */\nvoid chk_shapegen(struct ObjShape *shape) {\n    struct ObjFace *face;        // sp5C; made face\n    struct ObjVertex *vtx;       // sp58; made gdvtx\n    struct ObjVertex **vtxbuf;   // sp54; heap storage for made gd vtx\n    struct ObjGroup *shapeMtls;  // sp50\n    struct ObjGroup *shapeFaces; // sp4C\n    struct ObjGroup *shapeVtx;   // sp48\n    UNUSED u8 filler[4];\n    struct ObjGroup *madeFaces;  // sp40\n    struct ObjGroup *madeVtx;    // sp3C\n    u32 i;                       // sp38\n    struct GdVtxData *vtxdata;   // sp34\n    struct GdFaceData *facedata; // sp30\n    struct GdObj *oldObjHead;    // sp2C\n\n    start_memtracker(\"chk_shapegen\");\n    imin(\"chk_shapegen\");\n    shapeMtls = shape->mtlGroup;\n    shapeFaces = shape->faceGroup;\n    shapeVtx = shape->vtxGroup;\n\n    if (shapeVtx != NULL && shapeFaces != NULL) {\n        if ((shapeVtx->linkType & 1) && (shapeFaces->linkType & 1)) { //? needs the double if\n            // These ListNodes point to special, compressed data structures\n            vtxdata = (struct GdVtxData *) shapeVtx->firstMember->obj;\n            facedata = (struct GdFaceData *) shapeFaces->firstMember->obj;\n            if (facedata->type != 1) {\n                fatal_printf(\"unsupported poly type\");\n            }\n\n            if (vtxdata->type != 1) {\n                fatal_printf(\"unsupported vertex type\");\n            }\n\n            if (vtxdata->count >= VTX_BUF_SIZE) {\n                fatal_printf(\"shapegen() too many vertices\");\n            }\n\n            vtxbuf = gd_malloc_temp(VTX_BUF_SIZE * sizeof(struct ObjVertex *));\n            oldObjHead = gGdObjectList;\n\n            for (i = 0; i < vtxdata->count; i++) {\n                vtx = gd_make_vertex(vtxdata->data[i][0], vtxdata->data[i][1], vtxdata->data[i][2]);\n                vtx->normal.x = vtx->normal.y = vtx->normal.z = 0.0f;\n                vtxbuf[i] = vtx;\n            }\n\n            madeVtx = make_group_of_type(OBJ_TYPE_VERTICES, oldObjHead, NULL);\n\n            oldObjHead = gGdObjectList;\n            for (i = 0; i < facedata->count; i++) {\n                //! @bug Call to `make_face_with_colour()` compiles incorrectly\n                //!      due to Goddard only declaring the functions,\n                //!      not prototyping the functions\n                face = make_face_with_colour(1.0, 1.0, 1.0);\n                face->mtlId = (s32) facedata->data[i][0];\n                add_3_vtx_to_face(face, vtxbuf[facedata->data[i][1]], vtxbuf[facedata->data[i][2]],\n                                  vtxbuf[facedata->data[i][3]]);\n                vtxbuf[facedata->data[i][1]]->normal.x += face->normal.x;\n                vtxbuf[facedata->data[i][1]]->normal.y += face->normal.y;\n                vtxbuf[facedata->data[i][1]]->normal.z += face->normal.z;\n\n                vtxbuf[facedata->data[i][2]]->normal.x += face->normal.x;\n                vtxbuf[facedata->data[i][2]]->normal.y += face->normal.y;\n                vtxbuf[facedata->data[i][2]]->normal.z += face->normal.z;\n\n                vtxbuf[facedata->data[i][3]]->normal.x += face->normal.x;\n                vtxbuf[facedata->data[i][3]]->normal.y += face->normal.y;\n                vtxbuf[facedata->data[i][3]]->normal.z += face->normal.z;\n            }\n\n            if (shape->flag & 0x10) {\n                for (i = 0; i < vtxdata->count; i++) {\n                    vtxbuf[i]->normal.x = vtxbuf[i]->pos.x;\n                    vtxbuf[i]->normal.y = vtxbuf[i]->pos.y;\n                    vtxbuf[i]->normal.z = vtxbuf[i]->pos.z;\n                    gd_normalize_vec3f(&vtxbuf[i]->normal);\n                }\n            } else {\n                for (i = 0; i < vtxdata->count; i++) {\n                    gd_normalize_vec3f(&vtxbuf[i]->normal);\n                }\n            }\n\n            gd_free(vtxbuf);\n            madeFaces = make_group_of_type(OBJ_TYPE_FACES, oldObjHead, NULL);\n            shape->faceGroup = madeFaces;\n            shape->vtxGroup = madeVtx;\n        }\n    }\n\n    if (shapeMtls != NULL) {\n        if (shape->faceGroup) {\n            map_face_materials(shape->faceGroup, shapeMtls);\n        } else {\n            fatal_printf(\"chk_shapegen() please set face group before mats\");\n        }\n    }\n\n    imout();\n    stop_memtracker(\"chk_shapegen\");\n}\n\n/**\n * Set the \"node group\" of the current dynamic object to dynamic object `name`.\n * The node group depends on the type of the current dynamic object:\n * * the vertex group is set for `ObjShape`\n * * the joints/weight group is set for `ObjNet`\n * * data is set for `ObjAnimator`\n * * something is set for `ObjGadget`\n */\nvoid d_set_nodegroup(DynObjName name) {\n    struct DynObjInfo *info; // sp2C\n    UNUSED u8 filler[8];\n\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    info = get_dynobj_info(name);\n    if (info == NULL) {\n        fatal_printf(\"dSetNodeGroup(\\\"%s\\\"): Undefined group\", DynNameAsStr(name));\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_NETS:\n            ((struct ObjNet *) sDynListCurObj)->unk1C8 = (struct ObjGroup *) info->obj;\n            ((struct ObjNet *) sDynListCurObj)->unk1D0 = (struct ObjGroup *) info->obj;\n            break;\n        case OBJ_TYPE_SHAPES:\n            ((struct ObjShape *) sDynListCurObj)->vtxGroup = (struct ObjGroup *) info->obj;\n            chk_shapegen((struct ObjShape *) sDynListCurObj);\n            break;\n        case OBJ_TYPE_GADGETS:\n            ((struct ObjGadget *) sDynListCurObj)->unk54 = (struct ObjGroup *) info->obj;\n            break;\n        case OBJ_TYPE_ANIMATORS:\n            ((struct ObjAnimator *) sDynListCurObj)->animdataGrp = (struct ObjGroup *) info->obj;\n            alloc_animdata((struct ObjAnimator *) sDynListCurObj);\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dSetNodeGroup()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Set the material group of the current dynamic `ObjShape` to `name`.\n */\nvoid d_set_matgroup(DynObjName name) {\n    struct DynObjInfo *info;\n\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    info = get_dynobj_info(name);\n    if (info == NULL) {\n        fatal_printf(\"dSetMatGroup(\\\"%s\\\"): Undefined group\", DynNameAsStr(name));\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_SHAPES:\n            ((struct ObjShape *) sDynListCurObj)->mtlGroup = (struct ObjGroup *) info->obj;\n            chk_shapegen((struct ObjShape *) sDynListCurObj);\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dSetMatGroup()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * At one time in the past, this set the s and t value of the current\n * dynamic `ObjVertex`. However, this function does nothing now.\n * See `BetaVtx` for a possible remnant of vertex code that had\n * ST coordinates.\n */\nvoid d_set_texture_st(UNUSED f32 s, UNUSED f32 t) {\n    UNUSED u8 filler[8];\n\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_VERTICES:\n            break; // ifdef-ed out?\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dSetTextureST()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Set the texture pointer of the current dynamic `ObjMaterial`.\n */\nvoid d_use_texture(void *texture) {\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_MATERIALS:\n            ((struct ObjMaterial *) sDynListCurObj)->texture = texture;\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dUseTexture()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Set the current dynamic `ObjNet`'s skin group with the vertex group from\n * the dynamic `ObjShape` with `name`.\n */\nvoid d_set_skinshape(DynObjName name) {\n    struct DynObjInfo *info;\n\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    info = get_dynobj_info(name);\n    if (info == NULL) {\n        fatal_printf(\"dSetSkinShape(\\\"%s\\\"): Undefined object\", DynNameAsStr(name));\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_NETS:\n            ((struct ObjNet *) sDynListCurObj)->skinGrp = ((struct ObjShape *) info->obj)->vtxGroup;\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dSetSkinShape()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Map the material ids for the `ObjFace`s in the current dynamic `ObjGroup`\n * to pointer to `ObjMaterial`s in the `ObjGroup` `name`.\n *\n * See `map_face_materials()` for more info.\n */\nvoid d_map_materials(DynObjName name) {\n    struct DynObjInfo *info;\n\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    info = get_dynobj_info(name);\n    if (info == NULL) {\n        fatal_printf(\"dMapMaterials(\\\"%s\\\"): Undefined group\", DynNameAsStr(name));\n    }\n\n    map_face_materials((struct ObjGroup *) sDynListCurObj, (struct ObjGroup *) info->obj);\n}\n\n/**\n * For all faces in the current `ObjGroup`, resolve their vertex indices to\n * `ObjVertex` pointers that point to vertices in the specified vertex group.\n * Also compute normals for all faces in the current `ObjGroup` and all vertices\n * in the specified vertex group.\n * See `map_vertices()` for more info.\n * @param name  name of a vertex group dynobj\n */\nvoid d_map_vertices(DynObjName name) {\n    struct DynObjInfo *info;\n\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    info = get_dynobj_info(name);\n    if (info == NULL) {\n        fatal_printf(\"dMapVertices(\\\"%s\\\"): Undefined group\", DynNameAsStr(name));\n    }\n\n    map_vertices((struct ObjGroup *) sDynListCurObj, (struct ObjGroup *) info->obj);\n}\n\n/**\n * In practice, this is used to set the faces of the current\n * active dynamic `ObjShape` to the dynamic group `name` of `ObjFace`s.\n * It also has interactions with `ObjNet`s, but there are no examples\n * of that usage in existing code.\n */\nvoid d_set_planegroup(DynObjName name) {\n    struct DynObjInfo *info;\n    UNUSED u8 filler[8];\n\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    info = get_dynobj_info(name);\n    if (info == NULL) {\n        fatal_printf(\"dSetPlaneGroup(\\\"%s\\\"): Undefined group\", DynNameAsStr(name));\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_NETS:\n            ((struct ObjNet *) sDynListCurObj)->unk1CC = (struct ObjGroup *) info->obj;\n            break;\n        case OBJ_TYPE_SHAPES:\n            ((struct ObjShape *) sDynListCurObj)->faceGroup = (struct ObjGroup *) info->obj;\n            chk_shapegen((struct ObjShape *) sDynListCurObj);\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dSetPlaneGroup()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Set the shape pointer of the current active dynamic object to the\n * pointer pointed to by `shpPtrptr`.\n */\nvoid d_set_shapeptrptr(struct ObjShape **shpPtrptr) {\n    struct ObjShape *defaultptr = NULL;\n\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    if (shpPtrptr == NULL) {\n        shpPtrptr = &defaultptr;\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_JOINTS:\n            ((struct ObjJoint *) sDynListCurObj)->shapePtr = *shpPtrptr;\n            ((struct ObjJoint *) sDynListCurObj)->colourNum = 0;\n            break;\n        case OBJ_TYPE_NETS:\n            ((struct ObjNet *) sDynListCurObj)->shapePtr = *shpPtrptr;\n            break;\n        case OBJ_TYPE_BONES:\n            ((struct ObjBone *) sDynListCurObj)->shapePtr = *shpPtrptr;\n            break;\n        case OBJ_TYPE_GADGETS:\n            ((struct ObjGadget *) sDynListCurObj)->shapePtr = *shpPtrptr;\n            break;\n        case OBJ_TYPE_PARTICLES:\n            ((struct ObjParticle *) sDynListCurObj)->shapePtr = *shpPtrptr;\n            break;\n        case OBJ_TYPE_LIGHTS:\n            ((struct ObjLight *) sDynListCurObj)->unk9C = *shpPtrptr;\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dSetShapePtrPtr()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Set the shape pointer of the current active dynamic object to dynamic\n * `ObjShape` `name`.\n */\nvoid d_set_shapeptr(DynObjName name) {\n    struct DynObjInfo *info;\n    if (name == NULL) {\n        return;\n    }\n\n    info = get_dynobj_info(name);\n    if (info == NULL) {\n        fatal_printf(\"dSetShapePtr(\\\"%s\\\"): Undefined object\", DynNameAsStr(name));\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_JOINTS:\n            ((struct ObjJoint *) sDynListCurObj)->shapePtr = (struct ObjShape *) info->obj;\n            ((struct ObjJoint *) sDynListCurObj)->colourNum = 0;\n            break;\n        case OBJ_TYPE_NETS:\n            ((struct ObjNet *) sDynListCurObj)->shapePtr = (struct ObjShape *) info->obj;\n            break;\n        case OBJ_TYPE_BONES:\n            ((struct ObjBone *) sDynListCurObj)->shapePtr = (struct ObjShape *) info->obj;\n            break;\n        case OBJ_TYPE_GADGETS:\n            ((struct ObjGadget *) sDynListCurObj)->shapePtr = (struct ObjShape *) info->obj;\n            break;\n        case OBJ_TYPE_PARTICLES:\n            ((struct ObjParticle *) sDynListCurObj)->shapePtr = (struct ObjShape *) info->obj;\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dSetShapePtr()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Set the current active dynamic object to object `name`.\n */\nstruct GdObj *d_use_obj(DynObjName name) {\n    struct DynObjInfo *info = get_dynobj_info(name);\n    if (info == NULL) {\n        fatal_printf(\"dUseObj(\\\"%s\\\"): Undefined object\", DynNameAsStr(name));\n    }\n\n    sDynListCurObj = info->obj;\n    sDynListCurInfo = info;\n\n    return info->obj;\n}\n\n/**\n * Set the current active dynamic object to `obj`. This object can\n * any type of `GdObj`, not just an object created through the\n * dynmaic object system.\n */\nvoid set_cur_dynobj(struct GdObj *obj) {\n    sDynListCurObj = obj;\n    sDynListCurInfo = &sNullDynObjInfo;\n}\n\n/**\n * Start a dynamic `ObjGroup` identified with `name`.\n */\nvoid d_start_group(DynObjName name) {\n    d_makeobj(D_GROUP, name);\n}\n\n/**\n * Add all dynamic objects created between the start of dynamic `ObjGroup` `name`\n * and this call.\n */\nvoid d_end_group(DynObjName name) {\n    UNUSED u8 filler[4];\n    struct DynObjInfo *info = get_dynobj_info(name);\n    struct ObjGroup *dynGrp;\n    s32 i;\n\n    if (info == NULL) {\n        fatal_printf(\"dEndGroup(\\\"%s\\\"): Undefined group\", DynNameAsStr(name));\n    }\n\n    dynGrp = (struct ObjGroup *) info->obj;\n    for (i = info->num + 1; i < sLoadedDynObjs; i++) {\n        if (sGdDynObjList[i].obj->type != OBJ_TYPE_GROUPS) {\n            addto_group(dynGrp, sGdDynObjList[i].obj);\n        }\n    }\n}\n\n/**\n * Add the current dynamic object to the dynamic `ObjGroup` `name`.\n */\nvoid d_addto_group(DynObjName name) {\n    UNUSED u8 filler[4];\n    struct DynObjInfo *info = get_dynobj_info(name);\n    struct ObjGroup *targetGrp;\n\n    if (info == NULL) {\n        fatal_printf(\"dAddToGroup(\\\"%s\\\"): Undefined group\", DynNameAsStr(name));\n    }\n\n    targetGrp = (struct ObjGroup *) info->obj;\n    addto_group(targetGrp, sDynListCurObj);\n}\n\n/**\n * Set if `DynObjName` should be treated as integer values,\n * or as `char *` string pointers.\n *\n * @param isIntBool `TRUE` to interpret ids as integers\n */\nvoid d_use_integer_names(s32 isIntBool) {\n    sUseIntegerNames = isIntBool;\n}\n\n/**\n * Set the initial position of the current dynamic object\n * to `(x, y, z)`.\n */\nvoid d_set_init_pos(f32 x, f32 y, f32 z) {\n    UNUSED u8 filler1[12];\n    struct GdObj *dynobj = sDynListCurObj; // sp28\n    UNUSED u8 filler2[4];\n\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_JOINTS:\n            ((struct ObjJoint *) dynobj)->worldPos.x = x;\n            ((struct ObjJoint *) dynobj)->worldPos.y = y;\n            ((struct ObjJoint *) dynobj)->worldPos.z = z;\n\n            ((struct ObjJoint *) dynobj)->unk3C.x = x;\n            ((struct ObjJoint *) dynobj)->unk3C.y = y;\n            ((struct ObjJoint *) dynobj)->unk3C.z = z;\n\n            ((struct ObjJoint *) dynobj)->initPos.x = x;\n            ((struct ObjJoint *) dynobj)->initPos.y = y;\n            ((struct ObjJoint *) dynobj)->initPos.z = z;\n            break;\n        case OBJ_TYPE_NETS:\n            ((struct ObjNet *) dynobj)->worldPos.x = x;\n            ((struct ObjNet *) dynobj)->worldPos.y = y;\n            ((struct ObjNet *) dynobj)->worldPos.z = z;\n\n            ((struct ObjNet *) dynobj)->initPos.x = x;\n            ((struct ObjNet *) dynobj)->initPos.y = y;\n            ((struct ObjNet *) dynobj)->initPos.z = z;\n            break;\n        case OBJ_TYPE_PARTICLES:\n            ((struct ObjParticle *) dynobj)->pos.x = x;\n            ((struct ObjParticle *) dynobj)->pos.y = y;\n            ((struct ObjParticle *) dynobj)->pos.z = z;\n            break;\n        case OBJ_TYPE_CAMERAS:\n            ((struct ObjCamera *) dynobj)->worldPos.x = x;\n            ((struct ObjCamera *) dynobj)->worldPos.y = y;\n            ((struct ObjCamera *) dynobj)->worldPos.z = z;\n            break;\n        case OBJ_TYPE_VERTICES:\n            d_set_rel_pos(x, y, z);\n\n            ((struct ObjVertex *) dynobj)->initPos.x = x;\n            ((struct ObjVertex *) dynobj)->initPos.y = y;\n            ((struct ObjVertex *) dynobj)->initPos.z = z;\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dSetInitPos()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Set the velocity of the current active dynamic object. The\n * values of the input `GdVec3f` are copied into the object.\n */\nvoid d_set_velocity(const struct GdVec3f *vel) {\n    struct GdObj *dynobj = sDynListCurObj;\n\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_JOINTS:\n            ((struct ObjJoint *) dynobj)->velocity.x = vel->x;\n            ((struct ObjJoint *) dynobj)->velocity.y = vel->y;\n            ((struct ObjJoint *) dynobj)->velocity.z = vel->z;\n            break;\n        case OBJ_TYPE_NETS:\n            ((struct ObjNet *) dynobj)->velocity.x = vel->x;\n            ((struct ObjNet *) dynobj)->velocity.y = vel->y;\n            ((struct ObjNet *) dynobj)->velocity.z = vel->z;\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dSetVelocity()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Read the velocity value of the current dynamic object into `dst`\n *\n * @param[out] dst values are copied to this `GdVec3f`\n */\nvoid d_get_velocity(struct GdVec3f *dst) {\n    struct GdObj *dynobj = sDynListCurObj;\n\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_JOINTS:\n            dst->x = ((struct ObjJoint *) dynobj)->velocity.x;\n            dst->y = ((struct ObjJoint *) dynobj)->velocity.y;\n            dst->z = ((struct ObjJoint *) dynobj)->velocity.z;\n            break;\n        case OBJ_TYPE_NETS:\n            dst->x = ((struct ObjNet *) dynobj)->velocity.x;\n            dst->y = ((struct ObjNet *) dynobj)->velocity.y;\n            dst->z = ((struct ObjNet *) dynobj)->velocity.z;\n            break;\n        default:\n            dst->x = dst->y = dst->z = 0.0f;\n            break;\n    }\n}\n\n/**\n * Set the torque vectore for the current dynamic object.\n * Values from input `GdVec3f` are copied into the object.\n *\n * @note Not called\n */\nvoid d_set_torque(const struct GdVec3f *src) {\n    struct GdObj *dynobj = sDynListCurObj;\n\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_NETS:\n            ((struct ObjNet *) dynobj)->torque.x = src->x;\n            ((struct ObjNet *) dynobj)->torque.y = src->y;\n            ((struct ObjNet *) dynobj)->torque.z = src->z;\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dSetTorque()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Get the initial position of the current dynamic object and\n * store in `dst`.\n */\nvoid d_get_init_pos(struct GdVec3f *dst) {\n    struct GdObj *dynobj = sDynListCurObj;\n\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_JOINTS:\n            dst->x = ((struct ObjJoint *) dynobj)->initPos.x;\n            dst->y = ((struct ObjJoint *) dynobj)->initPos.y;\n            dst->z = ((struct ObjJoint *) dynobj)->initPos.z;\n            break;\n        case OBJ_TYPE_NETS:\n            dst->x = ((struct ObjNet *) dynobj)->initPos.x;\n            dst->y = ((struct ObjNet *) dynobj)->initPos.y;\n            dst->z = ((struct ObjNet *) dynobj)->initPos.z;\n            break;\n        case OBJ_TYPE_VERTICES:\n            dst->x = ((struct ObjVertex *) dynobj)->initPos.x;\n            dst->y = ((struct ObjVertex *) dynobj)->initPos.y;\n            dst->z = ((struct ObjVertex *) dynobj)->initPos.z;\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dGetInitPos()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Get the initial rotation of the current dynamic object and\n * store in `dst`.\n */\nvoid d_get_init_rot(struct GdVec3f *dst) {\n    struct GdObj *dynobj = sDynListCurObj;\n\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_JOINTS:\n            dst->x = ((struct ObjJoint *) dynobj)->unk6C.x;\n            dst->y = ((struct ObjJoint *) dynobj)->unk6C.y;\n            dst->z = ((struct ObjJoint *) dynobj)->unk6C.z;\n            break;\n        case OBJ_TYPE_NETS:\n            dst->x = ((struct ObjNet *) dynobj)->unk68.x;\n            dst->y = ((struct ObjNet *) dynobj)->unk68.y;\n            dst->z = ((struct ObjNet *) dynobj)->unk68.z;\n            break;\n        case OBJ_TYPE_LIGHTS:\n            dst->x = dst->y = dst->z = 0.0f;\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dGetInitRot()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Set the position of the current dynamic object.\n *\n * @note This function automatically adjusts the three zoom levels\n *       for an `ObjCamera`.\n */\nvoid d_set_rel_pos(f32 x, f32 y, f32 z) {\n    struct GdObj *dynobj = sDynListCurObj; // sp34\n    UNUSED struct GdVec3f unusedVec;       // sp28\n\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_JOINTS:\n            ((struct ObjJoint *) dynobj)->unk3C.x = x;\n            ((struct ObjJoint *) dynobj)->unk3C.y = y;\n            ((struct ObjJoint *) dynobj)->unk3C.z = z;\n            break;\n        case OBJ_TYPE_CAMERAS:\n            unusedVec.x = x;\n            unusedVec.y = y;\n            unusedVec.z = z;\n\n            ((struct ObjCamera *) dynobj)->unk40.x = x;\n            ((struct ObjCamera *) dynobj)->unk40.y = y;\n            ((struct ObjCamera *) dynobj)->unk40.z = z;\n\n            ((struct ObjCamera *) dynobj)->zoomPositions[0].x = x;\n            ((struct ObjCamera *) dynobj)->zoomPositions[0].y = y;\n            ((struct ObjCamera *) dynobj)->zoomPositions[0].z = z;\n\n            ((struct ObjCamera *) dynobj)->zoomPositions[1].x = x * 1.5; //? 1.5f\n            ((struct ObjCamera *) dynobj)->zoomPositions[1].y = y * 1.5; //? 1.5f\n            ((struct ObjCamera *) dynobj)->zoomPositions[1].z = z * 1.5; //? 1.5f\n\n            ((struct ObjCamera *) dynobj)->zoomPositions[2].x = x * 2.0f;\n            ((struct ObjCamera *) dynobj)->zoomPositions[2].y = y * 2.0f;\n            ((struct ObjCamera *) dynobj)->zoomPositions[2].z = z * 2.0f;\n\n            ((struct ObjCamera *) dynobj)->maxZoomLevel = 2;\n            break;\n        case OBJ_TYPE_VERTICES:\n            ((struct ObjVertex *) dynobj)->pos.x = x;\n            ((struct ObjVertex *) dynobj)->pos.y = y;\n            ((struct ObjVertex *) dynobj)->pos.z = z;\n            break;\n        case OBJ_TYPE_LABELS:\n            ((struct ObjLabel *) dynobj)->position.x = x;\n            ((struct ObjLabel *) dynobj)->position.y = y;\n            ((struct ObjLabel *) dynobj)->position.z = z;\n            break;\n        case OBJ_TYPE_PARTICLES:\n            ((struct ObjParticle *) dynobj)->pos.x = x;\n            ((struct ObjParticle *) dynobj)->pos.y = y;\n            ((struct ObjParticle *) dynobj)->pos.z = z;\n            break;\n        case OBJ_TYPE_NETS:\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dSetRelPos()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Offset the current position of the current dynamic object.\n */\nvoid d_addto_rel_pos(struct GdVec3f *src) {\n    struct GdObj *dynobj = sDynListCurObj; // sp24\n\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_VERTICES:\n            ((struct ObjVertex *) dynobj)->pos.x += src->x;\n            ((struct ObjVertex *) dynobj)->pos.y += src->y;\n            ((struct ObjVertex *) dynobj)->pos.z += src->z;\n            break;\n        case OBJ_TYPE_JOINTS:\n            ((struct ObjJoint *) dynobj)->unk3C.x += src->x;\n            ((struct ObjJoint *) dynobj)->unk3C.y += src->y;\n            ((struct ObjJoint *) dynobj)->unk3C.z += src->z;\n            break;\n        case OBJ_TYPE_PARTICLES:\n            ((struct ObjParticle *) dynobj)->pos.x += src->x;\n            ((struct ObjParticle *) dynobj)->pos.y += src->y;\n            ((struct ObjParticle *) dynobj)->pos.z += src->z;\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dAddToRelPos()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Store the current dynamic object's position into `dst`.\n */\nvoid d_get_rel_pos(struct GdVec3f *dst) {\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_VERTICES:\n            dst->x = ((struct ObjVertex *) sDynListCurObj)->pos.x;\n            dst->y = ((struct ObjVertex *) sDynListCurObj)->pos.y;\n            dst->z = ((struct ObjVertex *) sDynListCurObj)->pos.z;\n            break;\n        case OBJ_TYPE_JOINTS:\n            dst->x = ((struct ObjJoint *) sDynListCurObj)->unk3C.x;\n            dst->y = ((struct ObjJoint *) sDynListCurObj)->unk3C.y;\n            dst->z = ((struct ObjJoint *) sDynListCurObj)->unk3C.z;\n            break;\n        case OBJ_TYPE_CAMERAS:\n            dst->x = ((struct ObjCamera *) sDynListCurObj)->unk40.x;\n            dst->y = ((struct ObjCamera *) sDynListCurObj)->unk40.y;\n            dst->z = ((struct ObjCamera *) sDynListCurObj)->unk40.z;\n            break;\n        case OBJ_TYPE_PARTICLES:\n            dst->x = ((struct ObjParticle *) sDynListCurObj)->pos.x;\n            dst->y = ((struct ObjParticle *) sDynListCurObj)->pos.y;\n            dst->z = ((struct ObjParticle *) sDynListCurObj)->pos.z;\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dGetRelPos()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Return a pointer to the attached object group of the current\n * dynamic object.\n */\nstruct ObjGroup *d_get_att_objgroup(void) {\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_JOINTS:\n            return ((struct ObjJoint *) sDynListCurObj)->attachedObjsGrp;\n            break; // lol\n        case OBJ_TYPE_NETS:\n            return ((struct ObjNet *) sDynListCurObj)->attachedObjsGrp;\n            break; // lol\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dGetAttObjGroup()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n    // No null return due to `fatal_printf()` being a non-returning function?\n}\n\n/**\n * Return a pointer to the object that the current dynamic object is attached to.\n */\nstruct GdObj *d_get_att_to_obj(void) {\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_JOINTS:\n            return ((struct ObjJoint *) sDynListCurObj)->attachedToObj;\n            break; // lol\n        case OBJ_TYPE_NETS:\n            return ((struct ObjNet *) sDynListCurObj)->attachedToObj;\n            break; // lol\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dGetAttToObj()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n    // No null return due to `fatal_printf()` being a non-returning function?\n}\n\n/**\n * Store the current dynamic object's scale into `dst`.\n */\nvoid d_get_scale(struct GdVec3f *dst) {\n    struct GdObj *dynobj; // sp24\n\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    dynobj = sDynListCurObj;\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_JOINTS:\n            dst->x = ((struct ObjJoint *) dynobj)->scale.x;\n            dst->y = ((struct ObjJoint *) dynobj)->scale.y;\n            dst->z = ((struct ObjJoint *) dynobj)->scale.z;\n            break;\n        case OBJ_TYPE_NETS:\n            dst->x = ((struct ObjNet *) dynobj)->scale.x;\n            dst->y = ((struct ObjNet *) dynobj)->scale.y;\n            dst->z = ((struct ObjNet *) dynobj)->scale.z;\n            break;\n        case OBJ_TYPE_LIGHTS:\n            dst->x = 1.0f;\n            dst->y = 1.0f;\n            dst->z = 1.0f;\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dGetScale()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Set the offset of the attached object on the current dynamic object.\n */\nvoid d_set_att_offset(const struct GdVec3f *off) {\n    struct GdObj *dynobj; // sp24\n\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    dynobj = sDynListCurObj;\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_JOINTS:\n            ((struct ObjJoint *) dynobj)->attachOffset.x = off->x;\n            ((struct ObjJoint *) dynobj)->attachOffset.y = off->y;\n            ((struct ObjJoint *) dynobj)->attachOffset.z = off->z;\n\n            ((struct ObjJoint *) dynobj)->initPos.x = off->x;\n            ((struct ObjJoint *) dynobj)->initPos.y = off->y;\n            ((struct ObjJoint *) dynobj)->initPos.z = off->z;\n            break;\n        case OBJ_TYPE_NETS:\n            ((struct ObjNet *) dynobj)->attachOffset.x = off->x;\n            ((struct ObjNet *) dynobj)->attachOffset.y = off->y;\n            ((struct ObjNet *) dynobj)->attachOffset.z = off->z;\n\n            ((struct ObjNet *) dynobj)->initPos.x = off->x;\n            ((struct ObjNet *) dynobj)->initPos.y = off->y;\n            ((struct ObjNet *) dynobj)->initPos.z = off->z;\n            break;\n        case OBJ_TYPE_PARTICLES:\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dSetAttOffset()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * An incorrectly-coded recursive function that was presumably supposed to\n * set the offset of an attached object. Now, it will only call itself\n * until it encounters a NULL pointer, which will trigger a `fatal_printf()`\n * call.\n *\n * @note Not called\n */\nvoid d_set_att_to_offset(UNUSED u32 a) {\n    struct GdObj *dynobj; // sp3c\n    UNUSED u8 filler[24];\n\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    dynobj = sDynListCurObj;\n    d_stash_dynobj();\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_JOINTS:\n            set_cur_dynobj(((struct ObjJoint *) dynobj)->attachedToObj);\n            break;\n        case OBJ_TYPE_NETS:\n            set_cur_dynobj(((struct ObjNet *) dynobj)->attachedToObj);\n            break;\n        case OBJ_TYPE_PARTICLES:\n            set_cur_dynobj(((struct ObjParticle *) dynobj)->attachedToObj);\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dSetAttToOffset()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"dSetAttOffset(): Object '%s' isnt attached to anything\",\n                     sStashedDynObjInfo->name);\n    }\n    d_set_att_to_offset(a);\n    d_unstash_dynobj();\n}\n\n/**\n * Store the offset of the attached object into `dst`.\n *\n * @note Not called\n */\nvoid d_get_att_offset(struct GdVec3f *dst) {\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_JOINTS:\n            dst->x = ((struct ObjJoint *) sDynListCurObj)->attachOffset.x;\n            dst->y = ((struct ObjJoint *) sDynListCurObj)->attachOffset.y;\n            dst->z = ((struct ObjJoint *) sDynListCurObj)->attachOffset.z;\n            break;\n        case OBJ_TYPE_NETS:\n            dst->x = ((struct ObjNet *) sDynListCurObj)->attachOffset.x;\n            dst->y = ((struct ObjNet *) sDynListCurObj)->attachOffset.y;\n            dst->z = ((struct ObjNet *) sDynListCurObj)->attachOffset.z;\n            break;\n        case OBJ_TYPE_PARTICLES:\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dGetAttOffset()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Get the attached object flags for the current dynamic object.\n */\ns32 d_get_att_flags(void) {\n    s32 attflag; // sp24\n\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_JOINTS:\n            attflag = ((struct ObjJoint *) sDynListCurObj)->attachFlags;\n            break;\n        case OBJ_TYPE_NETS:\n            attflag = ((struct ObjNet *) sDynListCurObj)->attachFlags;\n            break;\n        case OBJ_TYPE_PARTICLES:\n            attflag = ((struct ObjParticle *) sDynListCurObj)->attachFlags;\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dGetAttFlags()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n\n    return attflag;\n}\n\n/**\n * Set the world position of the current dynamic object.\n *\n * @note Sets the upper left coordinates of an `ObjView`\n */\nvoid d_set_world_pos(f32 x, f32 y, f32 z) {\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_CAMERAS:\n            ((struct ObjCamera *) sDynListCurObj)->worldPos.x = x;\n            ((struct ObjCamera *) sDynListCurObj)->worldPos.y = y;\n            ((struct ObjCamera *) sDynListCurObj)->worldPos.z = z;\n            break;\n        case OBJ_TYPE_JOINTS:\n            ((struct ObjJoint *) sDynListCurObj)->worldPos.x = x;\n            ((struct ObjJoint *) sDynListCurObj)->worldPos.y = y;\n            ((struct ObjJoint *) sDynListCurObj)->worldPos.z = z;\n            break;\n        case OBJ_TYPE_NETS:\n            ((struct ObjNet *) sDynListCurObj)->worldPos.x = x;\n            ((struct ObjNet *) sDynListCurObj)->worldPos.y = y;\n            ((struct ObjNet *) sDynListCurObj)->worldPos.z = z;\n            break;\n        case OBJ_TYPE_GADGETS:\n            ((struct ObjGadget *) sDynListCurObj)->worldPos.x = x;\n            ((struct ObjGadget *) sDynListCurObj)->worldPos.y = y;\n            ((struct ObjGadget *) sDynListCurObj)->worldPos.z = z;\n            break;\n        case OBJ_TYPE_VIEWS:\n            ((struct ObjView *) sDynListCurObj)->upperLeft.x = x;\n            ((struct ObjView *) sDynListCurObj)->upperLeft.y = y;\n            ((struct ObjView *) sDynListCurObj)->upperLeft.z = z;\n            break;\n        case OBJ_TYPE_VERTICES:\n            ((struct ObjVertex *) sDynListCurObj)->pos.x = x;\n            ((struct ObjVertex *) sDynListCurObj)->pos.y = y;\n            ((struct ObjVertex *) sDynListCurObj)->pos.z = z;\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dSetWorldPos()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Set the normal of the current dynamic `ObjVertex`. The input `x, y, z` values\n * are normalized into a unit vector before setting the vertex normal.\n */\nvoid d_set_normal(f32 x, f32 y, f32 z) {\n    struct GdVec3f normal; // sp1C\n\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    normal.x = x;\n    normal.y = y;\n    normal.z = z;\n    gd_normalize_vec3f(&normal);\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_VERTICES:\n            ((struct ObjVertex *) sDynListCurObj)->normal.x = normal.x;\n            ((struct ObjVertex *) sDynListCurObj)->normal.y = normal.y;\n            ((struct ObjVertex *) sDynListCurObj)->normal.z = normal.z;\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dSetNormal()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Get a pointer to the world position vector of the active\n * dynamic object. This is a pointer inside the actual object.\n *\n * @note Not called.\n */\nstruct GdVec3f *d_get_world_pos_ptr(void) {\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_VERTICES:\n            return &((struct ObjVertex *) sDynListCurObj)->pos;\n            break;\n        case OBJ_TYPE_PARTICLES:\n            return &((struct ObjParticle *) sDynListCurObj)->pos;\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dGetWorldPosPtr()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n    // No null return due to `fatal_printf()` being a non-returning function?\n}\n\n/**\n * Copy the world position of the current dynamic object into `dst`.\n */\nvoid d_get_world_pos(struct GdVec3f *dst) {\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_VERTICES:\n            dst->x = ((struct ObjVertex *) sDynListCurObj)->pos.x;\n            dst->y = ((struct ObjVertex *) sDynListCurObj)->pos.y;\n            dst->z = ((struct ObjVertex *) sDynListCurObj)->pos.z;\n            break;\n        case OBJ_TYPE_JOINTS:\n            dst->x = ((struct ObjJoint *) sDynListCurObj)->worldPos.x;\n            dst->y = ((struct ObjJoint *) sDynListCurObj)->worldPos.y;\n            dst->z = ((struct ObjJoint *) sDynListCurObj)->worldPos.z;\n            break;\n        case OBJ_TYPE_NETS:\n            dst->x = ((struct ObjNet *) sDynListCurObj)->worldPos.x;\n            dst->y = ((struct ObjNet *) sDynListCurObj)->worldPos.y;\n            dst->z = ((struct ObjNet *) sDynListCurObj)->worldPos.z;\n            break;\n        case OBJ_TYPE_PARTICLES:\n            dst->x = ((struct ObjParticle *) sDynListCurObj)->pos.x;\n            dst->y = ((struct ObjParticle *) sDynListCurObj)->pos.y;\n            dst->z = ((struct ObjParticle *) sDynListCurObj)->pos.z;\n            break;\n        case OBJ_TYPE_CAMERAS:\n            dst->x = ((struct ObjCamera *) sDynListCurObj)->worldPos.x;\n            dst->y = ((struct ObjCamera *) sDynListCurObj)->worldPos.y;\n            dst->z = ((struct ObjCamera *) sDynListCurObj)->worldPos.z;\n            break;\n        case OBJ_TYPE_BONES:\n            dst->x = ((struct ObjBone *) sDynListCurObj)->worldPos.x;\n            dst->y = ((struct ObjBone *) sDynListCurObj)->worldPos.y;\n            dst->z = ((struct ObjBone *) sDynListCurObj)->worldPos.z;\n            break;\n        case OBJ_TYPE_SHAPES:\n            dst->x = dst->y = dst->z = 0.0f;\n            break;\n        case OBJ_TYPE_LABELS:\n            dst->x = dst->y = dst->z = 0.0f;\n            break;\n        case OBJ_TYPE_GADGETS:\n            dst->x = ((struct ObjGadget *) sDynListCurObj)->worldPos.x;\n            dst->y = ((struct ObjGadget *) sDynListCurObj)->worldPos.y;\n            dst->z = ((struct ObjGadget *) sDynListCurObj)->worldPos.z;\n            break;\n        case OBJ_TYPE_PLANES:\n            dst->x = ((struct ObjPlane *) sDynListCurObj)->boundingBox.minX;\n            dst->y = ((struct ObjPlane *) sDynListCurObj)->boundingBox.minY;\n            dst->z = ((struct ObjPlane *) sDynListCurObj)->boundingBox.minZ;\n\n            dst->x += ((struct ObjPlane *) sDynListCurObj)->boundingBox.maxX;\n            dst->y += ((struct ObjPlane *) sDynListCurObj)->boundingBox.maxY;\n            dst->z += ((struct ObjPlane *) sDynListCurObj)->boundingBox.maxZ;\n\n            dst->x *= 0.5; //? 0.5f\n            dst->y *= 0.5; //? 0.5f\n            dst->z *= 0.5; //? 0.5f\n            break;\n        case OBJ_TYPE_ZONES:\n            dst->x = ((struct ObjZone *) sDynListCurObj)->boundingBox.minX;\n            dst->y = ((struct ObjZone *) sDynListCurObj)->boundingBox.minY;\n            dst->z = ((struct ObjZone *) sDynListCurObj)->boundingBox.minZ;\n\n            dst->x += ((struct ObjZone *) sDynListCurObj)->boundingBox.maxX;\n            dst->y += ((struct ObjZone *) sDynListCurObj)->boundingBox.maxY;\n            dst->z += ((struct ObjZone *) sDynListCurObj)->boundingBox.maxZ;\n\n            dst->x *= 0.5; //? 0.5f\n            dst->y *= 0.5; //? 0.5f\n            dst->z *= 0.5; //? 0.5f\n            break;\n        case OBJ_TYPE_LIGHTS:\n            dst->x = ((struct ObjLight *) sDynListCurObj)->position.x;\n            dst->y = ((struct ObjLight *) sDynListCurObj)->position.y;\n            dst->z = ((struct ObjLight *) sDynListCurObj)->position.z;\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dGetWorldPos()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Create a new dynamic `ObjVertex` at point `pos`.\n *\n * @param[in] pos values are copied to set vertex position\n */\nvoid d_make_vertex(struct GdVec3f *pos) {\n    d_makeobj(D_VERTEX, AsDynName(NULL));\n    d_set_init_pos(pos->x, pos->y, pos->z);\n}\n\n/**\n * Scale the current dynamic object by factor `(x, y, z)`.\n *\n * @note Sets the lower right coordinates of an `ObjView`\n */\nvoid d_set_scale(f32 x, f32 y, f32 z) {\n    struct GdObj *initDynobj;\n\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    initDynobj = sDynListCurObj;\n    d_stash_dynobj();\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_JOINTS:\n            ((struct ObjJoint *) initDynobj)->scale.x = x;\n            ((struct ObjJoint *) initDynobj)->scale.y = y;\n            ((struct ObjJoint *) initDynobj)->scale.z = z;\n            break;\n        case OBJ_TYPE_NETS:\n            ((struct ObjNet *) initDynobj)->scale.x = x;\n            ((struct ObjNet *) initDynobj)->scale.y = y;\n            ((struct ObjNet *) initDynobj)->scale.z = z;\n            break;\n        case OBJ_TYPE_VIEWS:\n            ((struct ObjView *) initDynobj)->lowerRight.x = x;\n            ((struct ObjView *) initDynobj)->lowerRight.y = y;\n            ((struct ObjView *) initDynobj)->lowerRight.z = z;\n            break;\n        case OBJ_TYPE_PARTICLES:\n            break;\n        case OBJ_TYPE_GADGETS:\n            if (((struct ObjGadget *) initDynobj)->shapePtr != NULL) {\n                scale_verts_in_shape(((struct ObjGadget *) initDynobj)->shapePtr, x, y, z);\n            }\n            ((struct ObjGadget *) initDynobj)->size.x = x;\n            ((struct ObjGadget *) initDynobj)->size.y = y;\n            ((struct ObjGadget *) initDynobj)->size.z = z;\n            break;\n        case OBJ_TYPE_LIGHTS:\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dSetScale()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n    d_unstash_dynobj();\n}\n\n/**\n * Set the rotation value of the current active dynamic object.\n */\nvoid d_set_rotation(f32 x, f32 y, f32 z) {\n    struct GdObj *dynobj; // sp2C\n    UNUSED u8 filler[4];\n\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    dynobj = sDynListCurObj;\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_JOINTS:\n            ((struct ObjJoint *) dynobj)->unk6C.x = x;\n            ((struct ObjJoint *) dynobj)->unk6C.y = y;\n            ((struct ObjJoint *) dynobj)->unk6C.z = z;\n            break;\n        case OBJ_TYPE_NETS:\n            ((struct ObjNet *) dynobj)->unk68.x = x;\n            ((struct ObjNet *) dynobj)->unk68.y = y;\n            ((struct ObjNet *) dynobj)->unk68.z = z;\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dSetRotation()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Set the center of gravity of the current dynamic `ObjNet`.\n */\nvoid d_center_of_gravity(f32 x, f32 y, f32 z) {\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_NETS:\n            ((struct ObjNet *) sDynListCurObj)->centerOfGravity.x = x;\n            ((struct ObjNet *) sDynListCurObj)->centerOfGravity.y = y;\n            ((struct ObjNet *) sDynListCurObj)->centerOfGravity.z = z;\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dCofG()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Set the shape offset of the current dynamic `ObjJoint`.\n */\nvoid d_set_shape_offset(f32 x, f32 y, f32 z) {\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_JOINTS:\n            ((struct ObjJoint *) sDynListCurObj)->shapeOffset.x = x;\n            ((struct ObjJoint *) sDynListCurObj)->shapeOffset.y = y;\n            ((struct ObjJoint *) sDynListCurObj)->shapeOffset.z = z;\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dShapeOffset()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Creates a new `ObjValPtr`.\n * If `vflags` is 0x40000, then `name` is the name of an object, and `offset`\n * is an offset to a field in that object. Otherwise, `offset` specifies a\n * the address of a standalone variable.\n */\nvoid d_add_valptr(DynObjName name, u32 vflags, enum ValPtrType type, size_t offset) {\n    struct GdObj *dynobj;\n    struct ObjValPtr *valptr;\n    struct DynObjInfo *info;\n\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    dynobj = sDynListCurObj;\n\n    if (vflags == 0x40000) {\n        // value is an object field, and objId is the name of the object\n        info = get_dynobj_info(name);\n        if (info == NULL) {\n            fatal_printf(\"dAddValPtr(\\\"%s\\\"): Undefined object\", DynNameAsStr(name));\n        }\n\n        valptr = make_valptr(info->obj, vflags, type, offset);\n    } else {\n        // value is a standalone variable\n        valptr = make_valptr(name, vflags, type, offset);\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_GADGETS:\n            if (((struct ObjGadget *) dynobj)->valueGrp == NULL) {\n                ((struct ObjGadget *) dynobj)->valueGrp = make_group(0);\n            }\n            addto_group(((struct ObjGadget *) dynobj)->valueGrp, &valptr->header);\n            break;\n        case OBJ_TYPE_LABELS:\n            ((struct ObjLabel *) dynobj)->valptr = valptr;\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dAddValPtr()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Add a value processing function (`valptrproc_t`) to the current\n * dynamic `ObjLabel`.\n */\nvoid d_add_valproc(valptrproc_t proc) {\n    struct GdObj *dynobj;\n\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    dynobj = sDynListCurObj;\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_LABELS:\n            ((struct ObjLabel *) dynobj)->valfn = proc;\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dAddValProc()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Link a variable pointer to the current active dynamic object.\n * In the final game, this is used to link arrays of raw vertex, face,\n * or animation data to `ObjGroup`s, or to link joints to `ObjAnimator`s.\n */\nvoid d_link_with_ptr(void *ptr) {\n    struct GdObj *dynobj;      // sp34\n    struct ObjValPtr *valptr; // sp30\n    struct ListNode *link;        // sp2C\n\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    dynobj = sDynListCurObj;\n    imin(\"dLinkWithPtr\");\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_CAMERAS:\n            ((struct ObjCamera *) dynobj)->unk30 = ptr;\n            break;\n        case OBJ_TYPE_GROUPS:\n            link = make_link_to_obj(NULL, ptr);\n            ((struct ObjGroup *) dynobj)->firstMember = link;\n            break;\n        case OBJ_TYPE_BONES:\n            add_joint2bone((struct ObjBone *) dynobj, ptr);\n            break;\n        case OBJ_TYPE_VIEWS:\n            ((struct ObjView *) dynobj)->components = ptr;\n            ((struct ObjView *) dynobj)->unk1C =\n                setup_view_buffers(((struct ObjView *) dynobj)->namePtr, ((struct ObjView *) dynobj),\n                                   (s32)((struct ObjView *) dynobj)->upperLeft.x,\n                                   (s32)((struct ObjView *) dynobj)->upperLeft.y,\n                                   (s32)((struct ObjView *) dynobj)->lowerRight.x,\n                                   (s32)((struct ObjView *) dynobj)->lowerRight.y);\n            reset_nets_and_gadgets(((struct ObjView *) dynobj)->components);\n            break;\n        case OBJ_TYPE_FACES:\n            if (((struct ObjFace *) dynobj)->vtxCount >= 4) {\n                fatal_printf(\"too many points\");\n            }\n\n            ((struct ObjFace *) dynobj)->vertices[((struct ObjFace *) dynobj)->vtxCount] = ptr;\n            ((struct ObjFace *) dynobj)->vtxCount++;\n\n            if (((struct ObjFace *) dynobj)->vtxCount >= 3) {\n                calc_face_normal((struct ObjFace *) dynobj);\n            }\n\n            break;\n        case OBJ_TYPE_ANIMATORS:\n            if (((struct ObjAnimator *) dynobj)->animatedPartsGrp == NULL) {\n                ((struct ObjAnimator *) dynobj)->animatedPartsGrp = make_group(0);\n            }\n\n            addto_group(((struct ObjAnimator *) dynobj)->animatedPartsGrp, ptr);\n            break;\n        case OBJ_TYPE_LABELS:\n            valptr = make_valptr(ptr, OBJ_TYPE_ALL, 0, 0);\n            ((struct ObjLabel *) dynobj)->valptr = valptr;\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dLinkWithPtr()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n    imout();\n}\n\n/**\n * Link the dynamic object `name` to the current dynamic object by wrapping\n * `d_link_with_ptr()`.\n */\nvoid d_link_with(DynObjName name) {\n    struct DynObjInfo *info;                       // sp1C\n    struct DynObjInfo *origInfo = sDynListCurInfo; // sp18\n\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    if (name == NULL) {\n        return;\n    }\n\n    info = get_dynobj_info(name);\n    if (info == NULL) {\n        fatal_printf(\"dLinkWith(\\\"%s\\\"): Undefined object\", DynNameAsStr(name));\n    }\n\n    d_link_with_ptr(info->obj);\n    set_cur_dynobj(origInfo->obj);\n    sDynListCurInfo = origInfo;\n}\n\n/**\n * Set the object specific flags of the current dynamic object.\n */\nvoid d_set_flags(s32 flags) {\n    struct GdObj *dynobj; // sp24\n\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    dynobj = sDynListCurObj;\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_JOINTS:\n            ((struct ObjJoint *) dynobj)->flags |= flags;\n            break;\n        case OBJ_TYPE_BONES:\n            ((struct ObjBone *) dynobj)->unk104 |= flags;\n            break;\n        case OBJ_TYPE_NETS:\n            ((struct ObjNet *) dynobj)->flags |= flags;\n            break;\n        case OBJ_TYPE_CAMERAS:\n            ((struct ObjCamera *) dynobj)->flags |= flags;\n            break;\n        case OBJ_TYPE_VIEWS:\n            ((struct ObjView *) dynobj)->flags |= flags;\n            break;\n        case OBJ_TYPE_SHAPES:\n            ((struct ObjShape *) dynobj)->flag |= flags;\n            break;\n        case OBJ_TYPE_PARTICLES:\n            ((struct ObjParticle *) dynobj)->flags |= flags;\n            break;\n        case OBJ_TYPE_LIGHTS:\n            ((struct ObjLight *) dynobj)->flags |= flags;\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dSetFlags()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Clear object specific flags from the current dynamic object.\n */\nvoid d_clear_flags(s32 flags) {\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_JOINTS:\n            ((struct ObjJoint *) sDynListCurObj)->flags &= ~flags;\n            break;\n        case OBJ_TYPE_BONES:\n            ((struct ObjBone *) sDynListCurObj)->unk104 &= ~flags;\n            break;\n        case OBJ_TYPE_NETS:\n            ((struct ObjNet *) sDynListCurObj)->flags &= ~flags;\n            break;\n        case OBJ_TYPE_CAMERAS:\n            ((struct ObjCamera *) sDynListCurObj)->flags &= ~flags;\n            break;\n        case OBJ_TYPE_PARTICLES:\n            ((struct ObjParticle *) sDynListCurObj)->flags &= ~flags;\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dClrFlags()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Set variable float parameters on the current dynamic object.\n * These are mainly used for `ObjGadget`s to set the drawing size\n * range.\n */\nvoid d_set_parm_f(enum DParmF param, f32 val) {\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_SHAPES:\n            switch (param) {\n                case PARM_F_ALPHA:\n                    ((struct ObjShape *) sDynListCurObj)->alpha = val;\n                    break;\n                default:\n                    fatal_printf(\"%s: Object '%s'(%x) does not support this function.\",\n                                 \"dSetParmf() - unsupported parm.\", sDynListCurInfo->name,\n                                 sDynListCurObj->type);\n            }\n            break;\n        case OBJ_TYPE_GADGETS:\n            switch (param) {\n                case PARM_F_RANGE_MIN:\n                    ((struct ObjGadget *) sDynListCurObj)->rangeMin = val;\n                    break;\n                case PARM_F_RANGE_MAX:\n                    ((struct ObjGadget *) sDynListCurObj)->rangeMax = val;\n                    break;\n                case PARM_F_VARVAL:\n                    ((struct ObjGadget *) sDynListCurObj)->varval.f = val;\n                    break;\n                default:\n                    fatal_printf(\"%s: Object '%s'(%x) does not support this function.\",\n                                 \"dSetParmf() - unsupported parm.\", sDynListCurInfo->name,\n                                 sDynListCurObj->type);\n            }\n            break;\n        case OBJ_TYPE_VERTICES:\n            switch (param) {\n                case PARM_F_ALPHA:\n                    ((struct ObjVertex *) sDynListCurObj)->alpha = val;\n                    break;\n                default:\n                    fatal_printf(\"%s: Object '%s'(%x) does not support this function.\",\n                                 \"dSetParmf() - unsupported parm.\", sDynListCurInfo->name,\n                                 sDynListCurObj->type);\n            }\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dSetParmf()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Set various pointer parameters for the current dynamic object.\n * Normally, this is used to set `char *` pointer for various objects,\n * but it can also set the vertices for an `ObjFace`.\n */\nvoid d_set_parm_ptr(enum DParmPtr param, void *ptr) {\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_LABELS:\n            switch (param) {\n                case PARM_PTR_CHAR:\n                    ((struct ObjLabel *) sDynListCurObj)->fmtstr = ptr;\n                    break;\n                default:\n                    fatal_printf(\"Bad parm\");\n            }\n            break;\n        case OBJ_TYPE_VIEWS:\n            switch (param) {\n                case PARM_PTR_CHAR:\n                    ((struct ObjView *) sDynListCurObj)->namePtr = ptr;\n                    break;\n                default:\n                    fatal_printf(\"Bad parm\");\n            }\n            break;\n        case OBJ_TYPE_FACES:\n            switch (param) {\n                case PARM_PTR_OBJ_VTX:\n                    // Don't allow more than 4 vertices in a face\n                    if (((struct ObjFace *) sDynListCurObj)->vtxCount >= 4) {\n                        fatal_printf(\"dsetparmp() too many points\");\n                    }\n                    // `ptr` here is a vertex index, not an actual pointer.\n                    // These vertex indices later get converted to `ObjVertex` pointers when `find_thisface_verts` is called.\n                    ((struct ObjFace *) sDynListCurObj)->vertices[((struct ObjFace *) sDynListCurObj)->vtxCount++] = ptr;\n                    break;\n                default:\n                    fatal_printf(\"Bad parm\");\n            }\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dSetParmp()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Set the generic drawing flags for the current dynamic object.\n */\nvoid d_set_obj_draw_flag(enum ObjDrawingFlags flag) {\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    sDynListCurObj->drawFlags |= flag;\n}\n\n/**\n * Set an object specific type field for the current dynamic object.\n */\nvoid d_set_type(s32 type) {\n    struct GdObj *dynobj = sDynListCurObj; // sp24\n\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_NETS:\n            ((struct ObjNet *) dynobj)->netType = type;\n            break;\n        case OBJ_TYPE_GADGETS:\n            ((struct ObjGadget *) dynobj)->type = type;\n            break;\n        case OBJ_TYPE_GROUPS:\n            ((struct ObjGroup *) dynobj)->debugPrint = type;\n            break;\n        case OBJ_TYPE_JOINTS:\n            ((struct ObjJoint *) dynobj)->type = type;\n            break;\n        case OBJ_TYPE_PARTICLES:\n            ((struct ObjParticle *) dynobj)->unk60 = type;\n            break;\n        case OBJ_TYPE_MATERIALS:\n            ((struct ObjMaterial *) dynobj)->type = type;\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dSetType()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Set the specific object ID field for the current dynamic object.\n */\nvoid d_set_id(s32 id) {\n    struct GdObj *dynobj = sDynListCurObj; // sp24\n\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_MATERIALS:\n            ((struct ObjMaterial *) dynobj)->id = id;\n            break;\n        case OBJ_TYPE_JOINTS:\n            ((struct ObjJoint *) dynobj)->id = id;\n            break;\n        case OBJ_TYPE_VERTICES:\n            ((struct ObjVertex *) dynobj)->id = id;\n            break;\n        case OBJ_TYPE_LIGHTS:\n            ((struct ObjLight *) dynobj)->id = id;\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dSetID()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n// TODO: enumerate colors?\n/**\n * Set the colour of the current dynamic object. The input color is an index\n * for `gd_get_colour()`\n */\nvoid d_set_colour_num(s32 colornum) {\n    struct GdColour *rgbcolor;\n\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_JOINTS:\n            ((struct ObjJoint *) sDynListCurObj)->colourNum = colornum;\n            break;\n        case OBJ_TYPE_PARTICLES:\n            ((struct ObjParticle *) sDynListCurObj)->colourNum = colornum;\n            break;\n        case OBJ_TYPE_NETS:\n            ((struct ObjNet *) sDynListCurObj)->colourNum = colornum;\n            break;\n        case OBJ_TYPE_GADGETS:\n            ((struct ObjGadget *) sDynListCurObj)->colourNum = colornum;\n            break;\n        case OBJ_TYPE_FACES:\n            rgbcolor = gd_get_colour(colornum);\n            if (rgbcolor != NULL) {\n                ((struct ObjFace *) sDynListCurObj)->colour.r = rgbcolor->r;\n                ((struct ObjFace *) sDynListCurObj)->colour.g = rgbcolor->g;\n                ((struct ObjFace *) sDynListCurObj)->colour.b = rgbcolor->b;\n                ((struct ObjFace *) sDynListCurObj)->colourNum = colornum;\n            } else {\n                fatal_printf(\"dSetColNum: Unkown colour number\");\n            }\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dColourNum()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Set the material ID of the current dynamic `ObjFace`.\n */\nvoid d_set_material(UNUSED void *a0, s32 mtlId) {\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_FACES:\n            ((struct ObjFace *) sDynListCurObj)->mtlId = mtlId;\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dSetMaterial()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Set the friction vec of the current dynamic `ObjJoint`.\n */\nvoid d_friction(f32 x, f32 y, f32 z) {\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_JOINTS:\n            ((struct ObjJoint *) sDynListCurObj)->friction.x = x;\n            ((struct ObjJoint *) sDynListCurObj)->friction.y = y;\n            ((struct ObjJoint *) sDynListCurObj)->friction.z = z;\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dFriction()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Set the spring constant of the current dynamic `ObjBone`.\n */\nvoid d_set_spring(f32 spring) {\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_BONES:\n            ((struct ObjBone *) sDynListCurObj)->spring = spring;\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dSetSpring()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Set the ambient color of the current dynamic `ObjMaterial`.\n */\nvoid d_set_ambient(f32 r, f32 g, f32 b) {\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_MATERIALS:\n            ((struct ObjMaterial *) sDynListCurObj)->Ka.r = r;\n            ((struct ObjMaterial *) sDynListCurObj)->Ka.g = g;\n            ((struct ObjMaterial *) sDynListCurObj)->Ka.b = b;\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dSetAmbient()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Set the diffuse color of the current dynamic `ObjMaterial` or `ObjLight`.\n */\nvoid d_set_diffuse(f32 r, f32 g, f32 b) {\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_MATERIALS:\n            ((struct ObjMaterial *) sDynListCurObj)->Kd.r = r;\n            ((struct ObjMaterial *) sDynListCurObj)->Kd.g = g;\n            ((struct ObjMaterial *) sDynListCurObj)->Kd.b = b;\n            break;\n        case OBJ_TYPE_LIGHTS:\n            ((struct ObjLight *) sDynListCurObj)->diffuse.r = r;\n            ((struct ObjLight *) sDynListCurObj)->diffuse.g = g;\n            ((struct ObjLight *) sDynListCurObj)->diffuse.b = b;\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dSetDiffuse()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Set the control type of the current dynamic `ObjNet`.\n */\nvoid d_set_control_type(s32 ctrltype) {\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_NETS:\n            ((struct ObjNet *) sDynListCurObj)->ctrlType = ctrltype;\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dControlType()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Get a pointer to a `GdBoundingBox` in the current dynamic object.\n * If the current object does not have a bounding box, a pointer to\n * a global bounding box at (0,0) is returned.\n */\nstruct GdBoundingBox *d_get_bounding_box(void) {\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_NETS:\n            return &((struct ObjNet *) sDynListCurObj)->boundingBox;\n            break;\n        case OBJ_TYPE_PLANES:\n            return &((struct ObjPlane *) sDynListCurObj)->boundingBox;\n            break;\n        case OBJ_TYPE_ZONES:\n            return &((struct ObjZone *) sDynListCurObj)->boundingBox;\n            break;\n        default:\n            return &sNullBoundingBox;\n    }\n}\n\n/**\n * Copy the matrix from the current dynamic object into `dst`.\n */\nvoid d_get_matrix(Mat4f *dst) {\n    struct GdObj *dynobj; // sp24\n\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    dynobj = sDynListCurObj;\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_NETS:\n            gd_copy_mat4f(&((struct ObjNet *) dynobj)->mat128, dst);\n            break;\n            break; // lol\n        case OBJ_TYPE_JOINTS:\n            gd_copy_mat4f(&((struct ObjJoint *) dynobj)->matE8, dst);\n            break;\n        case OBJ_TYPE_CAMERAS:\n            gd_copy_mat4f(&((struct ObjCamera *) dynobj)->unkE8, dst);\n            break;\n        case OBJ_TYPE_PARTICLES:\n            gd_set_identity_mat4(dst);\n            break;\n        case OBJ_TYPE_SHAPES:\n            gd_set_identity_mat4(dst);\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dGetMatrix()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Set the matrix of the current dynamic object by copying `src` into the object.\n */\nvoid d_set_matrix(Mat4f *src) {\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_NETS:\n            gd_copy_mat4f(src, &((struct ObjNet *) sDynListCurObj)->mat128);\n            //! @bug When setting an `ObjNet` matrix, the source is copied twice\n            //!      due to a probable copy-paste line repeat error\n            gd_copy_mat4f(src, &((struct ObjNet *) sDynListCurObj)->mat128);\n            break;\n        case OBJ_TYPE_JOINTS:\n            gd_copy_mat4f(src, &((struct ObjJoint *) sDynListCurObj)->matE8);\n            break;\n        case OBJ_TYPE_CAMERAS:\n            gd_copy_mat4f(src, &((struct ObjCamera *) sDynListCurObj)->unk64);\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dSetMatrix()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Set the rotation matrix of the current dynamic object by copying\n * the input matrix `src`.\n */\nvoid d_set_rot_mtx(Mat4f *src) {\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_JOINTS:\n            gd_copy_mat4f(src, &((struct ObjJoint *) sDynListCurObj)->mat128);\n            break;\n        case OBJ_TYPE_NETS:\n            gd_copy_mat4f(src, &((struct ObjNet *) sDynListCurObj)->mat168);\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dSetRMatrix()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Get a pointer to the current dynamic object's rotation matrix.\n */\nMat4f *d_get_rot_mtx_ptr(void) {\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_JOINTS:\n            return &((struct ObjJoint *) sDynListCurObj)->mat128;\n        case OBJ_TYPE_NETS:\n            return &((struct ObjNet *) sDynListCurObj)->mat168;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dGetRMatrixPtr()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n    // No null return due to `fatal_printf()` being a non-returning function?\n}\n\n/**\n * Copy `src` into the matrix of the current dynamic object.\n * TODO: What is an IMatrix?\n */\nvoid d_set_i_matrix(Mat4f *src) {\n    struct GdObj *dynobj;\n\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    dynobj = sDynListCurObj;\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_NETS:\n            gd_copy_mat4f(src, &((struct ObjNet *) dynobj)->matE8);\n            break;\n        case OBJ_TYPE_JOINTS:\n            gd_copy_mat4f(src, &((struct ObjJoint *) dynobj)->mat168);\n            break;\n        case OBJ_TYPE_LIGHTS:\n            ((struct ObjLight *) dynobj)->position.x = (*src)[3][0];\n            ((struct ObjLight *) dynobj)->position.y = (*src)[3][1];\n            ((struct ObjLight *) dynobj)->position.z = (*src)[3][2];\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dSetIMatrix()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n\n/**\n * Get a pointer to the current dynamic object's matrix.\n */\nMat4f *d_get_matrix_ptr(void) {\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_NETS:\n            return &((struct ObjNet *) sDynListCurObj)->mat128;\n            break;\n        case OBJ_TYPE_CAMERAS:\n            return &((struct ObjCamera *) sDynListCurObj)->unk64;\n            break;\n        case OBJ_TYPE_BONES:\n            return &((struct ObjBone *) sDynListCurObj)->mat70;\n            break;\n        case OBJ_TYPE_JOINTS:\n            return &((struct ObjJoint *) sDynListCurObj)->matE8;\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dGetMatrixPtr()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n    // No null return due to `fatal_printf()` being a non-returning function?\n}\n\n/**\n * Get a pointer to the current dynamic object's matrix.\n * TODO: What is an IMatrix?\n */\nMat4f *d_get_i_mtx_ptr(void) {\n    struct GdObj *dynobj; // sp24\n\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    dynobj = sDynListCurObj;\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_NETS:\n            return &((struct ObjNet *) dynobj)->matE8;\n            break;\n        case OBJ_TYPE_JOINTS:\n            return &((struct ObjJoint *) dynobj)->mat168;\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dGetIMatrixPtr()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n    // No null return due to `fatal_printf()` being a non-returning function?\n}\n\n/**\n * Use the dynamic object system to calculate the distance between\n * two `GdObj`s. The objects don't have to be dynamic objects.\n */\nf32 d_calc_world_dist_btwn(struct GdObj *obj1, struct GdObj *obj2) {\n    struct GdVec3f obj1pos; // sp34\n    struct GdVec3f obj2pos; // sp28\n    struct GdVec3f posdiff; // sp1C\n\n    set_cur_dynobj(obj1);\n    d_get_world_pos(&obj1pos);\n    set_cur_dynobj(obj2);\n    d_get_world_pos(&obj2pos);\n\n    posdiff.x = obj2pos.x - obj1pos.x;\n    posdiff.y = obj2pos.y - obj1pos.y;\n    posdiff.z = obj2pos.z - obj1pos.z;\n\n    return gd_vec3f_magnitude(&posdiff);\n}\n\n/**\n * Create a new weight for the vertex `vtxId` in the current dynamic `ObjJoint`.\n * The input weight value is out of 100.\n */\nvoid d_set_skin_weight(s32 vtxId, f32 percentWeight) {\n    if (sDynListCurObj == NULL) {\n        fatal_printf(\"proc_dynlist(): No current object\");\n    }\n\n    switch (sDynListCurObj->type) {\n        case OBJ_TYPE_JOINTS:\n            set_skin_weight((struct ObjJoint *) sDynListCurObj, vtxId, NULL,\n                            percentWeight / 100.0);\n            break;\n        default:\n            fatal_printf(\"%s: Object '%s'(%x) does not support this function.\", \"dSetSkinWeight()\",\n                         sDynListCurInfo->name, sDynListCurObj->type);\n    }\n}\n"
  },
  {
    "path": "src/goddard/dynlist_proc.h",
    "content": "#ifndef GD_DYNLIST_PROCESSOR_H\n#define GD_DYNLIST_PROCESSOR_H\n\n#include <PR/ultratypes.h>\n\n#include \"gd_types.h\"\n\n// types\n/// @name DynObjName Type\n/// @{\n/// A new type for identification of `GdObj`s in the dynamic object list.\ntypedef void *DynObjName;\n/// Macros for casting between types of names,\n/// as the name can be either a number or a string.\n/// @{\n#define DynNameAsStr(name) ((char *)(name))\n#define DynNameAsInt(name) ((u32)(uintptr_t)(name))\n#define AsDynName(unk)   ((DynObjName)(unk))\n/// @}\n/// @}\n\n/// parameters types for `d_set_parm_ptr()`\nenum DParmPtr {\n    PARM_PTR_OBJ_VTX = 1, ///< parameter is the index of a vertex to add to an `ObjFace`\n    PARM_PTR_CHAR    = 5  ///< parameter is a `char *`\n};\n\n/// parameters for `d_set_parm_f()`\nenum DParmF {\n    PARM_F_ALPHA = 1,       ///< Set the alpha value for an `ObjShape` or `ObjVertex`\n    PARM_F_RANGE_MIN = 2,  ///< Set the left range for an `ObjGadget`\n    PARM_F_RANGE_MAX = 3, ///< Set the right range for an `ObjGadget`\n    PARM_F_VARVAL = 6       ///< Set the float variable value union in an `ObjGadget`\n};\n\n/// `d_makeobj()` object types\nenum DObjTypes {\n    D_CAR_DYNAMICS  = 0,\n    D_NET           = 1,\n    D_JOINT         = 2,\n    D_ANOTHER_JOINT = 3,\n    D_CAMERA        = 4,\n    D_VERTEX        = 5,\n    D_FACE          = 6,\n    D_PLANE         = 7,\n    D_BONE          = 8,\n    D_MATERIAL      = 9,\n    D_SHAPE         = 10,\n    D_GADGET        = 11,\n    D_LABEL         = 12,\n    D_VIEW          = 13,\n    D_ANIMATOR      = 14,\n    D_DATA_GRP      = 15, ///< An `ObjGroup` that links to raw vertex or face data\n    D_PARTICLE      = 16,\n    D_LIGHT         = 17,\n    D_GROUP         = 18\n};\n\n// functions\nvoid d_stash_dynobj(void);\nvoid d_unstash_dynobj(void);\nvoid reset_dynlist(void);\nstruct GdObj *proc_dynlist(struct DynList *dylist);\nvoid d_set_name_suffix(char *str);\nstruct GdObj *d_makeobj(enum DObjTypes type, DynObjName name);\nvoid d_set_shapeptrptr(struct ObjShape **shpPtrptr);\nstruct GdObj *d_use_obj(DynObjName name);\nvoid set_cur_dynobj(struct GdObj *obj);\nvoid d_start_group(DynObjName name);\nvoid d_end_group(DynObjName name);\nvoid d_use_integer_names(s32 isIntBool);\nvoid d_set_init_pos(f32 x, f32 y, f32 z);\nvoid d_get_init_pos(struct GdVec3f *dst);\nvoid d_get_init_rot(struct GdVec3f *dst);\nvoid d_set_rel_pos(f32 x, f32 y, f32 z);\nvoid d_get_rel_pos(struct GdVec3f *dst);\nstruct ObjGroup *d_get_att_objgroup(void);\nvoid d_get_scale(struct GdVec3f *dst);\nvoid d_set_world_pos(f32 x, f32 y, f32 z);\nvoid d_get_world_pos(struct GdVec3f *dst);\nvoid d_set_scale(f32 x, f32 y, f32 z);\nvoid d_add_valptr(DynObjName name, u32 vflags, enum ValPtrType type, size_t offset);\nvoid d_add_valproc(union ObjVarVal * (*)(union ObjVarVal *, union ObjVarVal));\nvoid d_set_flags(s32 flags);\nvoid d_set_parm_f(enum DParmF param, f32 val);\nvoid d_set_parm_ptr(enum DParmPtr param, void *ptr);\nvoid d_set_obj_draw_flag(enum ObjDrawingFlags flag);\nvoid d_set_type(s32 type);\nvoid d_set_colour_num(s32 colornum);\nvoid d_set_diffuse(f32 r, f32 g, f32 b);\nstruct GdBoundingBox* d_get_bounding_box(void);\nvoid d_get_matrix(Mat4f *dst);\nMat4f *d_get_rot_mtx_ptr(void);\nvoid d_set_i_matrix(Mat4f *src);\nMat4f *d_get_matrix_ptr(void);\nMat4f *d_get_i_mtx_ptr(void);\nf32 d_calc_world_dist_btwn(struct GdObj *obj1, struct GdObj *obj2);\n\n#endif // GD_DYNLIST_PROCESSOR_H\n"
  },
  {
    "path": "src/goddard/dynlists/anim_group_1.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"macros.h\"\n#include \"animdata.h\"\n#include \"../gd_types.h\"\n\nstatic s16 animdata_mario_eyebrows_equalizer_1[][3] = {\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, -1 },\n    { 0, 0, -1 },   { 0, 0, -2 },   { 0, 0, -2 },   { 0, 0, -3 },   { 0, 0, -3 },   { 0, 0, -4 },\n    { 0, 0, -4 },   { 0, 0, -5 },   { 0, 0, -5 },   { 0, 0, -5 },   { 0, 0, -6 },   { 0, 0, -6 },\n    { 0, 0, -7 },   { 0, 0, -7 },   { 0, 0, -8 },   { 0, 0, -8 },   { 0, 0, -9 },   { 0, 0, -9 },\n    { 0, 0, -10 },  { 0, 0, -10 },  { 0, 0, -10 },  { 0, 0, -11 },  { 0, 0, -11 },  { 0, 0, -12 },\n    { 0, 0, -12 },  { 0, 0, -13 },  { 0, 0, -13 },  { 0, 0, -14 },  { 0, 0, -14 },  { 0, 0, -14 },\n    { 0, 0, -15 },  { 0, 0, -15 },  { 0, 0, -16 },  { 0, 0, -16 },  { 0, 0, -17 },  { 0, 0, -17 },\n    { 0, 0, -17 },  { 0, 0, -18 },  { 0, 0, -18 },  { 0, 0, -19 },  { 0, 0, -19 },  { 0, 0, -20 },\n    { 0, 0, -20 },  { 0, 0, -21 },  { 0, 0, -21 },  { 0, 0, -21 },  { 0, 0, -22 },  { 0, 0, -22 },\n    { 0, 0, -23 },  { 0, 0, -23 },  { 0, 0, -24 },  { 0, 0, -24 },  { 0, 0, -24 },  { 0, 0, -25 },\n    { 0, 0, -25 },  { 0, 0, -26 },  { 0, 0, -26 },  { 0, 0, -27 },  { 0, 0, -27 },  { 0, 0, -27 },\n    { 0, 0, -28 },  { 0, 0, -28 },  { 0, 0, -29 },  { 0, 0, -29 },  { 0, 0, -30 },  { 0, 0, -30 },\n    { 0, 0, -30 },  { 0, 0, -31 },  { 0, 0, -31 },  { 0, 0, -32 },  { 0, 0, -32 },  { 0, 0, -33 },\n    { 0, 0, -33 },  { 0, 0, -33 },  { 0, 0, -34 },  { 0, 0, -34 },  { 0, 0, -35 },  { 0, 0, -35 },\n    { 0, 0, -36 },  { 0, 0, -36 },  { 0, 0, -37 },  { 0, 0, -37 },  { 0, 0, -37 },  { 0, 0, -38 },\n    { 0, 0, -38 },  { 0, 0, -39 },  { 0, 0, -39 },  { 0, 0, -40 },  { 0, 0, -40 },  { 0, 0, -40 },\n    { 0, 0, -41 },  { 0, 0, -41 },  { 0, 0, -42 },  { 0, 0, -42 },  { 0, 0, -43 },  { 0, 0, -43 },\n    { 0, 0, -44 },  { 0, 0, -44 },  { 0, 0, -45 },  { 0, 0, -45 },  { 0, 0, -45 },  { 0, 0, -46 },\n    { 0, 0, -46 },  { 0, 0, -47 },  { 0, 0, -47 },  { 0, 0, -48 },  { 0, 0, -48 },  { 0, 0, -49 },\n    { 0, 0, -49 },  { 0, 0, -50 },  { 0, 0, -50 },  { 0, 0, -50 },  { 0, 0, -51 },  { 0, 0, -51 },\n    { 0, 0, -52 },  { 0, 0, -52 },  { 0, 0, -53 },  { 0, 0, -53 },  { 0, 0, -54 },  { 0, 0, -54 },\n    { 0, 0, -55 },  { 0, 0, -55 },  { 0, 0, -56 },  { 0, 0, -56 },  { 0, 0, -57 },  { 0, 0, -57 },\n    { 0, 0, -57 },  { 0, 0, -58 },  { 0, 0, -58 },  { 0, 0, -59 },  { 0, 0, -59 },  { 0, 0, -60 },\n    { 0, 0, -60 },  { 0, 0, -61 },  { 0, 0, -61 },  { 0, 0, -62 },  { 0, 0, -62 },  { 0, 0, -63 },\n    { 0, 0, -63 },  { 0, 0, -64 },  { 0, 0, -64 },  { 0, 0, -65 },  { 0, 0, -65 },  { 0, 0, -66 },\n    { 0, 0, -66 },  { 0, 0, -67 },  { 0, 0, -67 },  { 0, 0, -68 },  { 0, 0, -68 },  { 0, 0, -69 },\n    { 0, 0, -69 },  { 0, 0, -70 },  { 0, 0, -70 },  { 0, 0, -71 },  { 0, 0, -72 },  { 0, 0, -72 },\n    { 0, 0, -73 },  { 0, 0, -73 },  { 0, 0, -74 },  { 0, 0, -74 },  { 0, 0, -75 },  { 0, 0, -75 },\n    { 0, 0, -76 },  { 0, 0, -76 },  { 0, 0, -77 },  { 0, 0, -77 },  { 0, 0, -78 },  { 0, 0, -79 },\n    { 0, 0, -79 },  { 0, 0, -80 },  { 0, 0, -80 },  { 0, 0, -81 },  { 0, 0, -81 },  { 0, 0, -82 },\n    { 0, 0, -82 },  { 0, 0, -83 },  { 0, 0, -84 },  { 0, 0, -84 },  { 0, 0, -85 },  { 0, 0, -85 },\n    { 0, 0, -86 },  { 0, 0, -86 },  { 0, 0, -87 },  { 0, 0, -88 },  { 0, 0, -88 },  { 0, 0, -89 },\n    { 0, 0, -89 },  { 0, 0, -90 },  { 0, 0, -91 },  { 0, 0, -91 },  { 0, 0, -92 },  { 0, 0, -92 },\n    { 0, 0, -93 },  { 0, 0, -94 },  { 0, 0, -94 },  { 0, 0, -95 },  { 0, 0, -96 },  { 0, 0, -96 },\n    { 0, 0, -97 },  { 0, 0, -97 },  { 0, 0, -98 },  { 0, 0, -99 },  { 0, 0, -99 },  { 0, 0, -100 },\n    { 0, 0, -101 }, { 0, 0, -101 }, { 0, 0, -102 }, { 0, 0, -103 }, { 0, 0, -103 }, { 0, 0, -104 },\n    { 0, 0, -105 }, { 0, 0, -105 }, { 0, 0, -106 }, { 0, 0, -107 }, { 0, 0, -107 }, { 0, 0, -108 },\n    { 0, 0, -110 }, { 0, 0, -113 }, { 0, 0, -119 }, { 0, 0, -125 }, { 0, 0, -131 }, { 0, 0, -138 },\n    { 0, 0, -145 }, { 0, 0, -150 }, { 0, 0, -154 }, { 0, 0, -156 }, { 0, 0, -157 }, { 0, 0, -156 },\n    { 0, 0, -155 }, { 0, 0, -154 }, { 0, 0, -154 }, { 0, 0, -153 }, { 0, 0, -152 }, { 0, 0, -152 },\n    { 0, 0, -151 }, { 0, 0, -150 }, { 0, 0, -150 }, { 0, 0, -149 }, { 0, 0, -148 }, { 0, 0, -148 },\n    { 0, 0, -147 }, { 0, 0, -147 }, { 0, 0, -146 }, { 0, 0, -145 }, { 0, 0, -145 }, { 0, 0, -144 },\n    { 0, 0, -143 }, { 0, 0, -143 }, { 0, 0, -142 }, { 0, 0, -141 }, { 0, 0, -141 }, { 0, 0, -140 },\n    { 0, 0, -139 }, { 0, 0, -139 }, { 0, 0, -138 }, { 0, 0, -137 }, { 0, 0, -137 }, { 0, 0, -136 },\n    { 0, 0, -135 }, { 0, 0, -135 }, { 0, 0, -134 }, { 0, 0, -134 }, { 0, 0, -133 }, { 0, 0, -132 },\n    { 0, 0, -132 }, { 0, 0, -131 }, { 0, 0, -130 }, { 0, 0, -130 }, { 0, 0, -129 }, { 0, 0, -128 },\n    { 0, 0, -128 }, { 0, 0, -127 }, { 0, 0, -126 }, { 0, 0, -126 }, { 0, 0, -125 }, { 0, 0, -124 },\n    { 0, 0, -124 }, { 0, 0, -123 }, { 0, 0, -122 }, { 0, 0, -122 }, { 0, 0, -121 }, { 0, 0, -120 },\n    { 0, 0, -120 }, { 0, 0, -119 }, { 0, 0, -118 }, { 0, 0, -118 }, { 0, 0, -117 }, { 0, 0, -116 },\n    { 0, 0, -116 }, { 0, 0, -115 }, { 0, 0, -114 }, { 0, 0, -114 }, { 0, 0, -113 }, { 0, 0, -112 },\n    { 0, 0, -112 }, { 0, 0, -111 }, { 0, 0, -110 }, { 0, 0, -110 }, { 0, 0, -109 }, { 0, 0, -108 },\n    { 0, 0, -108 }, { 0, 0, -107 }, { 0, 0, -106 }, { 0, 0, -106 }, { 0, 0, -105 }, { 0, 0, -104 },\n    { 0, 0, -104 }, { 0, 0, -103 }, { 0, 0, -102 }, { 0, 0, -102 }, { 0, 0, -101 }, { 0, 0, -100 },\n    { 0, 0, -100 }, { 0, 0, -99 },  { 0, 0, -98 },  { 0, 0, -98 },  { 0, 0, -97 },  { 0, 0, -96 },\n    { 0, 0, -96 },  { 0, 0, -95 },  { 0, 0, -94 },  { 0, 0, -94 },  { 0, 0, -93 },  { 0, 0, -92 },\n    { 0, 0, -92 },  { 0, 0, -91 },  { 0, 0, -90 },  { 0, 0, -90 },  { 0, 0, -89 },  { 0, 0, -88 },\n    { 0, 0, -88 },  { 0, 0, -87 },  { 0, 0, -86 },  { 0, 0, -86 },  { 0, 0, -85 },  { 0, 0, -84 },\n    { 0, 0, -84 },  { 0, 0, -83 },  { 0, 0, -82 },  { 0, 0, -82 },  { 0, 0, -81 },  { 0, 0, -80 },\n    { 0, 0, -80 },  { 0, 0, -79 },  { 0, 0, -78 },  { 0, 0, -78 },  { 0, 0, -77 },  { 0, 0, -76 },\n    { 0, 0, -76 },  { 0, 0, -75 },  { 0, 0, -74 },  { 0, 0, -74 },  { 0, 0, -73 },  { 0, 0, -72 },\n    { 0, 0, -72 },  { 0, 0, -71 },  { 0, 0, -70 },  { 0, 0, -70 },  { 0, 0, -69 },  { 0, 0, -68 },\n    { 0, 0, -68 },  { 0, 0, -67 },  { 0, 0, -66 },  { 0, 0, -66 },  { 0, 0, -65 },  { 0, 0, -64 },\n    { 0, 0, -64 },  { 0, 0, -63 },  { 0, 0, -62 },  { 0, 0, -62 },  { 0, 0, -61 },  { 0, 0, -60 },\n    { 0, 0, -60 },  { 0, 0, -59 },  { 0, 0, -59 },  { 0, 0, -58 },  { 0, 0, -57 },  { 0, 0, -57 },\n    { 0, 0, -56 },  { 0, 0, -55 },  { 0, 0, -55 },  { 0, 0, -54 },  { 0, 0, -53 },  { 0, 0, -53 },\n    { 0, 0, -52 },  { 0, 0, -51 },  { 0, 0, -51 },  { 0, 0, -50 },  { 0, 0, -49 },  { 0, 0, -49 },\n    { 0, 0, -48 },  { 0, 0, -47 },  { 0, 0, -47 },  { 0, 0, -46 },  { 0, 0, -45 },  { 0, 0, -45 },\n    { 0, 0, -44 },  { 0, 0, -43 },  { 0, 0, -43 },  { 0, 0, -42 },  { 0, 0, -41 },  { 0, 0, -41 },\n    { 0, 0, -40 },  { 0, 0, -40 },  { 0, 0, -39 },  { 0, 0, -38 },  { 0, 0, -38 },  { 0, 0, -37 },\n    { 0, 0, -36 },  { 0, 0, -36 },  { 0, 0, -35 },  { 0, 0, -34 },  { 0, 0, -34 },  { 0, 0, -33 },\n    { 0, 0, -32 },  { 0, 0, -32 },  { 0, 0, -31 },  { 0, 0, -31 },  { 0, 0, -30 },  { 0, 0, -29 },\n    { 0, 0, -29 },  { 0, 0, -28 },  { 0, 0, -27 },  { 0, 0, -27 },  { 0, 0, -26 },  { 0, 0, -25 },\n    { 0, 0, -25 },  { 0, 0, -24 },  { 0, 0, -24 },  { 0, 0, -23 },  { 0, 0, -22 },  { 0, 0, -22 },\n    { 0, 0, -21 },  { 0, 0, -20 },  { 0, 0, -20 },  { 0, 0, -19 },  { 0, 0, -19 },  { 0, 0, -18 },\n    { 0, 0, -17 },  { 0, 0, -17 },  { 0, 0, -16 },  { 0, 0, -15 },  { 0, 0, -15 },  { 0, 0, -14 },\n    { 0, 0, -14 },  { 0, 0, -13 },  { 0, 0, -12 },  { 0, 0, -12 },  { 0, 0, -11 },  { 0, 0, -10 },\n    { 0, 0, -10 },  { 0, 0, -9 },   { 0, 0, -9 },   { 0, 0, -8 },   { 0, 0, -7 },   { 0, 0, -7 },\n    { 0, 0, -6 },   { 0, 0, -6 },   { 0, 0, -5 },   { 0, 0, -4 },   { 0, 0, -4 },   { 0, 0, -3 },\n    { 0, 0, -3 },   { 0, 0, -2 },   { 0, 0, -1 },   { 0, 0, -1 },   { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 1 },    { 0, 0, 1 },    { 0, 0, 1 },    { 0, 0, 1 },\n    { 0, 0, 1 },    { 0, 0, 1 },    { 0, 0, 1 },    { 0, 0, 1 },    { 0, 0, 1 },    { 0, 0, 1 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n};\n\nstruct AnimDataInfo anim_mario_eyebrows_equalizer[] = {\n    { ARRAY_COUNT(animdata_mario_eyebrows_equalizer_1), GD_ANIM_ROT3S, animdata_mario_eyebrows_equalizer_1 },\n    { 0, GD_ANIM_EMPTY, NULL },\n    END_ANIMDATA_INFO_ARR,\n};\n\nstatic s16 animdata_mario_eyebrows_2_1[][3] = {\n    { 28, 0, 1823 },    { 28, 0, 1823 },    { 28, 0, 1823 },    { 27, 0, 1822 },    { 26, 0, 1821 },\n    { 26, 0, 1819 },    { 25, 0, 1818 },    { 24, 0, 1816 },    { 23, 0, 1815 },    { 22, 0, 1814 },\n    { 21, 0, 1812 },    { 21, 0, 1811 },    { 20, 0, 1810 },    { 20, 0, 1810 },    { 20, 0, 1810 },\n    { 20, 0, 1810 },    { 20, 0, 1811 },    { 21, 0, 1812 },    { 22, 0, 1814 },    { 24, 0, 1816 },\n    { 26, 0, 1819 },    { 28, 0, 1823 },    { 40, 0, 1843 },    { 64, 0, 1880 },    { 86, -1, 1916 },\n    { 96, -1, 1932 },   { 95, -1, 1931 },   { 93, -1, 1926 },   { 88, -1, 1919 },   { 83, -1, 1911 },\n    { 76, -1, 1900 },   { 69, 0, 1889 },    { 62, 0, 1877 },    { 55, 0, 1866 },    { 48, 0, 1854 },\n    { 41, 0, 1844 },    { 36, 0, 1835 },    { 31, 0, 1828 },    { 28, 0, 1823 },    { 26, 0, 1820 },\n    { 25, 0, 1817 },    { 24, 0, 1815 },    { 23, 0, 1813 },    { 22, 0, 1812 },    { 22, 0, 1811 },\n    { 22, 0, 1811 },    { 22, 0, 1810 },    { 23, 0, 1810 },    { 23, 0, 1811 },    { 24, 0, 1811 },\n    { 25, 0, 1812 },    { 25, 0, 1813 },    { 26, 0, 1815 },    { 27, 0, 1816 },    { 27, 0, 1818 },\n    { 28, 0, 1819 },    { 28, 0, 1821 },    { 28, 0, 1823 },    { 28, 0, 1832 },    { 28, 0, 1847 },\n    { 28, -1, 1862 },   { 28, -2, 1869 },   { 28, -1, 1865 },   { 28, -1, 1856 },   { 28, 0, 1844 },\n    { 28, 0, 1832 },    { 28, 0, 1823 },    { 28, 0, 1822 },    { 28, 0, 1823 },    { 28, 0, 1823 },\n    { 28, 0, 1823 },    { 28, 0, 1824 },    { 28, 0, 1824 },    { 28, 0, 1824 },    { 28, 0, 1825 },\n    { 28, 0, 1825 },    { 28, 0, 1825 },    { 28, 0, 1826 },    { 28, 0, 1826 },    { 28, 0, 1826 },\n    { 28, 0, 1827 },    { 28, 0, 1827 },    { 28, 0, 1827 },    { 28, 0, 1826 },    { 28, 0, 1826 },\n    { 28, 0, 1826 },    { 28, 0, 1825 },    { 28, 0, 1824 },    { 28, 0, 1823 },    { 28, 0, 1820 },\n    { 28, 0, 1813 },    { 28, 1, 1805 },    { 28, 1, 1798 },    { 28, 1, 1795 },    { 28, 1, 1794 },\n    { 28, 1, 1792 },    { 28, 1, 1792 },    { 28, 1, 1791 },    { 28, 1, 1790 },    { 28, 1, 1790 },\n    { 28, 1, 1789 },    { 28, 1, 1789 },    { 28, 1, 1789 },    { 28, 1, 1789 },    { 28, 1, 1790 },\n    { 28, 1, 1790 },    { 28, 1, 1790 },    { 28, 1, 1791 },    { 28, 1, 1792 },    { 28, 1, 1793 },\n    { 28, 1, 1794 },    { 28, 1, 1795 },    { 28, 1, 1797 },    { 28, 1, 1803 },    { 28, 0, 1809 },\n    { 28, 0, 1815 },    { 28, 0, 1821 },    { 28, 0, 1823 },    { 28, 0, 1824 },    { 28, 0, 1824 },\n    { 28, 0, 1824 },    { 28, 0, 1823 },    { 28, 0, 1822 },    { 28, 0, 1820 },    { 28, 0, 1818 },\n    { 28, 0, 1817 },    { 28, 0, 1815 },    { 28, 0, 1813 },    { 28, 0, 1812 },    { 28, 0, 1810 },\n    { 28, 1, 1808 },    { 28, 1, 1806 },    { 28, 1, 1804 },    { 28, 1, 1802 },    { 28, 1, 1799 },\n    { 28, 1, 1798 },    { 28, 1, 1796 },    { 28, 1, 1795 },    { 28, 1, 1795 },    { 28, 1, 1795 },\n    { 28, 1, 1795 },    { 28, 1, 1795 },    { 28, 1, 1796 },    { 28, 1, 1797 },    { 28, 1, 1797 },\n    { 28, 1, 1798 },    { 28, 1, 1799 },    { 28, 1, 1800 },    { 28, 1, 1801 },    { 28, 1, 1802 },\n    { 28, 1, 1803 },    { 28, 1, 1804 },    { 28, 1, 1805 },    { 28, 1, 1807 },    { 28, 1, 1808 },\n    { 28, 1, 1808 },    { 28, 0, 1809 },    { 28, 0, 1810 },    { 28, 0, 1811 },    { 28, 0, 1811 },\n    { 28, 0, 1812 },    { 28, 0, 1812 },    { 28, 0, 1812 },    { 28, 0, 1811 },    { 28, 1, 1807 },\n    { 28, 1, 1802 },    { 28, 1, 1798 },    { 28, 1, 1795 },    { 28, 1, 1795 },    { 28, 1, 1800 },\n    { 28, 0, 1810 },    { 28, 0, 1821 },    { 28, 0, 1828 },    { 28, 0, 1829 },    { 28, 0, 1826 },\n    { 28, 0, 1823 },    { 28, 0, 1823 },    { 28, 0, 1823 },    { 28, 0, 1823 },    { 28, 0, 1823 },\n    { 28, 0, 1823 },    { 28, 0, 1823 },    { 28, 0, 1823 },    { 28, 0, 1823 },    { 28, 0, 1823 },\n    { 28, 0, 1823 },    { 28, 0, 1823 },    { 28, 0, 1823 },    { 28, 0, 1823 },    { 28, 0, 1823 },\n    { 28, 0, 1822 },    { 28, 0, 1820 },    { 28, 1, 1817 },    { 27, 1, 1814 },    { 27, 2, 1810 },\n    { 26, 2, 1807 },    { 26, 3, 1803 },    { 26, 3, 1799 },    { 25, 4, 1795 },    { 25, 4, 1791 },\n    { 25, 5, 1788 },    { 24, 5, 1785 },    { 24, 5, 1783 },    { 24, 6, 1781 },    { 24, 6, 1780 },\n    { 24, 6, 1780 },    { 24, 6, 1781 },    { 24, 5, 1783 },    { 24, 5, 1786 },    { 25, 4, 1790 },\n    { 25, 4, 1796 },    { 26, 2, 1803 },    { 27, 1, 1812 },    { 28, 0, 1823 },    { 33, -5, 1867 },\n    { 42, -17, 1956 },  { 52, -31, 2057 },  { 60, -43, 2141 },  { 64, -47, 2176 },  { 64, -46, 2163 },\n    { 63, -41, 2130 },  { 60, -34, 2082 },  { 57, -27, 2024 },  { 53, -18, 1964 },  { 46, -10, 1906 },\n    { 38, -4, 1857 },   { 28, 0, 1823 },    { 13, 2, 1804 },    { -7, 3, 1795 },    { -32, 3, 1793 },\n    { -56, 3, 1795 },   { -78, 2, 1800 },   { -95, 1, 1804 },   { -103, 1, 1806 },  { -105, 1, 1806 },\n    { -107, 1, 1805 },  { -109, 1, 1805 },  { -111, 1, 1805 },  { -113, 1, 1805 },  { -114, 1, 1805 },\n    { -115, 1, 1804 },  { -116, 1, 1804 },  { -117, 1, 1804 },  { -118, 1, 1804 },  { -119, 1, 1804 },\n    { -119, 1, 1804 },  { -119, 1, 1804 },  { -119, 1, 1804 },  { -120, 1, 1804 },  { -119, 1, 1804 },\n    { -119, 1, 1804 },  { -119, 1, 1804 },  { -119, 1, 1804 },  { -118, 1, 1804 },  { -118, 1, 1804 },\n    { -117, 1, 1804 },  { -117, 1, 1804 },  { -116, 1, 1804 },  { -115, 1, 1804 },  { -114, 1, 1805 },\n    { -114, 1, 1805 },  { -113, 1, 1805 },  { -112, 1, 1805 },  { -111, 1, 1805 },  { -110, 1, 1805 },\n    { -109, 1, 1805 },  { -109, 1, 1805 },  { -108, 1, 1805 },  { -107, 1, 1806 },  { -106, 1, 1806 },\n    { -106, 1, 1806 },  { -105, 1, 1806 },  { -104, 1, 1806 },  { -104, 1, 1806 },  { -103, 1, 1806 },\n    { -103, 1, 1806 },  { -103, 1, 1806 },  { -103, 1, 1806 },  { -103, 1, 1806 },  { -103, 1, 1806 },\n    { -103, 1, 1806 },  { -103, 1, 1806 },  { -103, 1, 1806 },  { -103, 1, 1805 },  { -103, 0, 1805 },\n    { -103, 0, 1805 },  { -103, 0, 1805 },  { -103, 0, 1804 },  { -103, 0, 1804 },  { -103, 0, 1804 },\n    { -103, 0, 1803 },  { -103, 0, 1803 },  { -103, 0, 1803 },  { -103, 0, 1803 },  { -103, 0, 1803 },\n    { -103, 0, 1803 },  { -103, 0, 1803 },  { -103, 0, 1803 },  { -103, 0, 1803 },  { -103, 0, 1804 },\n    { -103, 0, 1804 },  { -103, 0, 1805 },  { -103, 0, 1805 },  { -103, 1, 1806 },  { -103, 1, 1807 },\n    { -103, 1, 1809 },  { -103, 2, 1812 },  { -103, 2, 1815 },  { -103, 3, 1818 },  { -103, 3, 1822 },\n    { -102, 4, 1825 },  { -102, 5, 1829 },  { -102, 5, 1832 },  { -102, 6, 1835 },  { -102, 6, 1838 },\n    { -102, 7, 1840 },  { -102, 7, 1842 },  { -102, 7, 1843 },  { -102, 8, 1845 },  { -102, 8, 1845 },\n    { -102, 8, 1845 },  { -102, 7, 1843 },  { -102, 7, 1840 },  { -102, 6, 1834 },  { -102, 4, 1825 },\n    { -103, 2, 1814 },  { -103, 0, 1803 },  { -103, 0, 1794 },  { -103, -1, 1789 }, { -103, -2, 1787 },\n    { -103, -2, 1784 }, { -103, -3, 1782 }, { -103, -3, 1780 }, { -103, -3, 1778 }, { -103, -4, 1777 },\n    { -103, -4, 1775 }, { -103, -4, 1774 }, { -103, -4, 1773 }, { -103, -5, 1772 }, { -103, -5, 1771 },\n    { -103, -5, 1770 }, { -103, -5, 1770 }, { -103, -5, 1769 }, { -102, -5, 1769 }, { -102, -5, 1768 },\n    { -102, -5, 1768 }, { -102, -5, 1767 }, { -102, -5, 1767 }, { -102, -6, 1767 }, { -102, -6, 1766 },\n    { -102, -6, 1766 }, { -102, -6, 1766 }, { -102, -6, 1766 }, { -102, -6, 1765 }, { -102, -6, 1765 },\n    { -102, -6, 1765 }, { -102, -6, 1765 }, { -102, -6, 1765 }, { -102, -6, 1765 }, { -102, -6, 1765 },\n    { -102, -6, 1764 }, { -102, -6, 1764 }, { -102, -6, 1764 }, { -102, -6, 1764 }, { -102, -6, 1764 },\n    { -102, -6, 1764 }, { -102, -6, 1765 }, { -102, -6, 1765 }, { -102, -6, 1765 }, { -102, -6, 1765 },\n    { -102, -6, 1765 }, { -102, -6, 1765 }, { -102, -6, 1765 }, { -102, -6, 1765 }, { -102, -6, 1765 },\n    { -102, -6, 1765 }, { -102, -6, 1765 }, { -102, -6, 1766 }, { -102, -6, 1766 }, { -102, -6, 1766 },\n    { -102, -6, 1766 }, { -102, -6, 1766 }, { -102, -6, 1766 }, { -102, -6, 1766 }, { -102, -6, 1766 },\n    { -102, -6, 1766 }, { -102, -6, 1767 }, { -102, -6, 1767 }, { -102, -6, 1767 }, { -102, -6, 1767 },\n    { -102, -6, 1767 }, { -102, -6, 1767 }, { -102, -6, 1766 }, { -103, -6, 1763 }, { -103, -7, 1759 },\n    { -103, -8, 1755 }, { -103, -8, 1751 }, { -103, -9, 1747 }, { -103, -9, 1744 }, { -103, -10, 1743 },\n    { -103, -9, 1745 }, { -103, -9, 1749 }, { -103, -7, 1756 }, { -102, -6, 1767 }, { -101, 0, 1805 },\n    { -99, 12, 1873 },  { -97, 24, 1941 },  { -96, 30, 1976 },  { -96, 31, 1981 },  { -97, 31, 1980 },\n    { -97, 30, 1973 },  { -98, 28, 1961 },  { -99, 26, 1947 },  { -99, 23, 1931 },  { -100, 20, 1914 },\n    { -101, 17, 1899 }, { -101, 15, 1885 }, { -102, 12, 1869 }, { -102, 8, 1849 },  { -102, 5, 1829 },\n    { -103, 2, 1813 },  { -103, 1, 1806 },  { -103, 1, 1805 },  { -103, 0, 1805 },  { -103, 0, 1804 },\n    { -103, 0, 1803 },  { -103, 0, 1802 },  { -103, 0, 1802 },  { -103, 0, 1801 },  { -103, 0, 1801 },\n    { -103, 0, 1800 },  { -103, 0, 1800 },  { -103, 0, 1799 },  { -103, 0, 1799 },  { -103, 0, 1798 },\n    { -103, 0, 1798 },  { -103, 0, 1798 },  { -103, 0, 1797 },  { -103, 0, 1797 },  { -103, 0, 1797 },\n    { -103, 0, 1796 },  { -103, 0, 1796 },  { -103, 0, 1796 },  { -103, 0, 1796 },  { -103, 0, 1796 },\n    { -103, 0, 1795 },  { -103, 0, 1795 },  { -103, 0, 1795 },  { -103, 0, 1795 },  { -103, 0, 1795 },\n    { -103, 0, 1795 },  { -103, 0, 1795 },  { -103, 0, 1795 },  { -103, 0, 1795 },  { -103, 0, 1795 },\n    { -103, 0, 1795 },  { -103, 0, 1795 },  { -103, 0, 1795 },  { -103, 0, 1795 },  { -103, 0, 1795 },\n    { -103, 0, 1795 },  { -103, 0, 1796 },  { -103, 0, 1796 },  { -103, 0, 1796 },  { -103, 0, 1796 },\n    { -103, 0, 1796 },  { -103, 0, 1796 },  { -103, 0, 1797 },  { -103, 0, 1797 },  { -103, 0, 1797 },\n    { -103, 0, 1797 },  { -103, 0, 1797 },  { -103, 0, 1798 },  { -103, 0, 1798 },  { -103, 0, 1798 },\n    { -103, 0, 1798 },  { -103, 0, 1799 },  { -103, 0, 1799 },  { -103, 0, 1799 },  { -103, 0, 1799 },\n    { -103, 0, 1800 },  { -103, 0, 1800 },  { -103, 0, 1800 },  { -103, 0, 1801 },  { -103, 0, 1801 },\n    { -103, 0, 1801 },  { -103, 0, 1801 },  { -103, 0, 1802 },  { -103, 0, 1802 },  { -103, 0, 1802 },\n    { -103, 0, 1802 },  { -103, 0, 1803 },  { -103, 0, 1803 },  { -103, 0, 1803 },  { -103, 0, 1803 },\n    { -103, 0, 1804 },  { -103, 0, 1804 },  { -103, 0, 1804 },  { -103, 0, 1804 },  { -103, 0, 1804 },\n    { -103, 0, 1805 },  { -103, 0, 1805 },  { -103, 0, 1805 },  { -103, 0, 1805 },  { -103, 1, 1805 },\n    { -103, 1, 1805 },  { -103, 1, 1806 },  { -103, 1, 1806 },  { -103, 1, 1806 },  { -103, 1, 1806 },\n    { -103, 1, 1806 },  { -103, 1, 1806 },  { -103, 1, 1806 },  { -103, 1, 1806 },  { -103, 1, 1806 },\n    { -103, 1, 1806 },  { -104, 1, 1806 },  { -105, 1, 1806 },  { -107, 1, 1806 },  { -109, 1, 1805 },\n    { -111, 0, 1805 },  { -112, 0, 1805 },  { -113, 0, 1805 },  { -114, 0, 1805 },  { -114, 0, 1805 },\n    { -113, 0, 1805 },  { -111, 0, 1805 },  { -107, 1, 1806 },  { -103, 1, 1806 },  { -96, 1, 1807 },\n    { -87, 1, 1808 },   { -75, 1, 1809 },   { -63, 1, 1810 },   { -49, 2, 1812 },   { -34, 2, 1813 },\n    { -19, 2, 1815 },   { -5, 3, 1816 },    { 8, 3, 1818 },     { 21, 3, 1819 },    { 33, 3, 1820 },\n    { 43, 3, 1822 },    { 50, 4, 1822 },    { 55, 4, 1823 },    { 57, 4, 1823 },    { 55, 4, 1823 },\n    { 48, 4, 1822 },    { 38, 3, 1821 },    { 25, 3, 1820 },    { 10, 3, 1818 },    { -5, 3, 1816 },\n    { -22, 2, 1815 },   { -39, 2, 1813 },   { -56, 2, 1811 },   { -71, 1, 1809 },   { -84, 1, 1808 },\n    { -94, 1, 1807 },   { -100, 1, 1806 },  { -103, 1, 1806 },  { -101, 1, 1806 },  { -95, 1, 1807 },\n    { -86, 1, 1808 },   { -74, 1, 1809 },   { -61, 1, 1810 },   { -46, 2, 1812 },   { -30, 2, 1814 },\n    { -14, 2, 1815 },   { 0, 3, 1817 },     { 15, 3, 1819 },    { 29, 3, 1820 },    { 40, 3, 1821 },\n    { 49, 4, 1822 },    { 55, 4, 1823 },    { 57, 4, 1823 },    { 55, 4, 1823 },    { 48, 4, 1822 },\n    { 38, 3, 1821 },    { 25, 3, 1820 },    { 10, 3, 1818 },    { -5, 3, 1816 },    { -22, 2, 1815 },\n    { -39, 2, 1813 },   { -56, 2, 1811 },   { -71, 1, 1809 },   { -84, 1, 1808 },   { -94, 1, 1807 },\n    { -100, 1, 1806 },  { -103, 1, 1806 },  { -100, 1, 1806 },  { -92, 1, 1807 },   { -81, 1, 1808 },\n    { -66, 1, 1810 },   { -50, 2, 1812 },   { -32, 2, 1814 },   { -13, 2, 1816 },   { 4, 3, 1817 },\n    { 21, 3, 1819 },    { 35, 3, 1821 },    { 47, 4, 1822 },    { 54, 4, 1823 },    { 57, 4, 1823 },\n    { 55, 4, 1823 },    { 49, 4, 1822 },    { 41, 3, 1822 },    { 30, 3, 1821 },    { 17, 3, 1820 },\n    { 3, 3, 1819 },     { -11, 3, 1817 },   { -27, 2, 1816 },   { -42, 2, 1815 },   { -57, 2, 1813 },\n    { -71, 1, 1812 },   { -83, 1, 1810 },   { -92, 1, 1809 },   { -99, 1, 1807 },   { -103, 1, 1806 },\n    { -103, 1, 1805 },  { -102, 0, 1803 },  { -99, 0, 1802 },   { -94, 0, 1800 },   { -88, 0, 1798 },\n    { -82, 0, 1797 },   { -74, 0, 1795 },   { -65, 0, 1793 },   { -56, 0, 1792 },   { -47, 0, 1790 },\n    { -38, 0, 1789 },   { -30, 0, 1788 },   { -22, 0, 1787 },   { -14, 0, 1786 },   { -8, 0, 1785 },\n    { -3, 0, 1785 },    { 0, 0, 1785 },     { 3, 0, 1786 },     { 5, 0, 1786 },     { 8, 0, 1787 },\n    { 10, 0, 1788 },    { 12, 0, 1789 },    { 14, 0, 1790 },    { 15, 0, 1792 },    { 17, 0, 1793 },\n    { 18, 0, 1795 },    { 19, 0, 1796 },    { 20, 0, 1798 },    { 21, 0, 1799 },    { 22, 0, 1801 },\n    { 22, 0, 1803 },    { 23, 0, 1805 },    { 23, 0, 1806 },    { 24, 0, 1808 },    { 24, 0, 1810 },\n    { 25, 0, 1812 },    { 25, 0, 1813 },    { 25, 0, 1815 },    { 26, 0, 1816 },    { 26, 0, 1818 },\n    { 26, 0, 1819 },    { 27, 0, 1820 },    { 27, 0, 1821 },    { 28, 0, 1822 },    { 28, 0, 1823 },\n    { 29, 0, 1824 },    { 30, 0, 1825 },    { 31, 0, 1825 },    { 33, 0, 1825 },    { 34, 0, 1825 },\n    { 36, 0, 1825 },    { 38, 0, 1825 },    { 39, 0, 1825 },    { 41, 0, 1825 },    { 42, 0, 1825 },\n    { 43, 0, 1825 },    { 43, 0, 1824 },    { 43, 0, 1824 },    { 43, 0, 1824 },    { 42, 0, 1824 },\n    { 41, 0, 1823 },    { 39, 0, 1823 },    { 36, 0, 1823 },    { 33, 0, 1823 },    { 28, 0, 1823 },\n    { 21, 0, 1824 },    { 12, 0, 1824 },    { 0, 1, 1825 },     { -15, 1, 1826 },   { -30, 2, 1827 },\n    { -47, 3, 1828 },   { -64, 3, 1829 },   { -80, 4, 1829 },   { -94, 5, 1830 },   { -108, 5, 1829 },\n    { -118, 6, 1829 },  { -125, 6, 1828 },  { -131, 7, 1826 },  { -135, 7, 1823 },  { -138, 7, 1821 },\n    { -141, 8, 1817 },  { -143, 8, 1814 },  { -145, 9, 1810 },  { -145, 9, 1806 },  { -146, 9, 1802 },\n    { -146, 10, 1798 }, { -146, 10, 1795 }, { -145, 11, 1791 }, { -144, 11, 1788 }, { -144, 11, 1784 },\n    { -143, 11, 1782 }, { -142, 11, 1780 }, { -141, 12, 1778 }, { -141, 12, 1777 }, { -141, 12, 1776 },\n    { -141, 12, 1777 }, { -141, 12, 1777 }, { -140, 12, 1778 }, { -140, 11, 1780 }, { -139, 11, 1782 },\n    { -139, 11, 1784 }, { -138, 11, 1786 }, { -138, 11, 1789 }, { -137, 11, 1791 }, { -136, 10, 1794 },\n    { -135, 10, 1797 }, { -134, 10, 1800 }, { -133, 10, 1804 }, { -133, 9, 1807 },  { -132, 9, 1810 },\n    { -131, 9, 1813 },  { -130, 8, 1815 },  { -129, 8, 1818 },  { -128, 8, 1821 },  { -127, 7, 1823 },\n    { -127, 7, 1825 },  { -126, 7, 1826 },  { -125, 6, 1828 },  { -125, 5, 1825 },  { -125, 3, 1817 },\n    { -126, 2, 1809 },  { -126, 1, 1805 },  { -126, 2, 1811 },  { -126, 5, 1822 },  { -125, 6, 1828 },\n    { -126, 5, 1822 },  { -126, 3, 1812 },  { -126, 1, 1805 },  { -126, 2, 1807 },  { -126, 3, 1812 },\n    { -126, 4, 1816 },  { -126, 4, 1817 },  { -126, 4, 1817 },  { -126, 4, 1817 },  { -126, 4, 1816 },\n    { -126, 4, 1816 },  { -126, 4, 1816 },  { -126, 4, 1816 },  { -126, 4, 1816 },  { -126, 4, 1816 },\n    { -126, 4, 1816 },  { -126, 4, 1816 },  { -126, 4, 1816 },  { -126, 4, 1816 },  { -126, 4, 1816 },\n    { -126, 4, 1816 },  { -126, 4, 1816 },  { -126, 4, 1816 },  { -126, 4, 1816 },  { -126, 4, 1816 },\n    { -126, 4, 1816 },  { -126, 4, 1816 },  { -126, 4, 1816 },  { -126, 4, 1816 },  { -126, 4, 1816 },\n    { -126, 4, 1816 },  { -126, 4, 1816 },  { -126, 4, 1816 },  { -126, 4, 1816 },  { -126, 4, 1816 },\n    { -126, 4, 1816 },  { -126, 4, 1816 },  { -126, 4, 1816 },  { -126, 4, 1816 },  { -126, 4, 1816 },\n    { -126, 4, 1816 },  { -126, 4, 1816 },  { -126, 4, 1816 },  { -126, 4, 1816 },  { -126, 4, 1816 },\n    { -126, 4, 1816 },  { -126, 4, 1816 },  { -126, 4, 1816 },  { -126, 4, 1816 },  { -126, 4, 1816 },\n    { -126, 4, 1816 },  { -126, 4, 1816 },  { -126, 4, 1816 },  { -126, 4, 1816 },  { -126, 4, 1816 },\n    { -126, 4, 1816 },  { -126, 4, 1816 },  { -126, 4, 1816 },  { -126, 4, 1816 },  { -126, 4, 1816 },\n    { -126, 4, 1816 },  { -126, 4, 1816 },  { -126, 4, 1816 },  { -126, 4, 1816 },  { -126, 4, 1816 },\n    { -126, 4, 1816 },  { -126, 4, 1816 },  { -126, 4, 1816 },  { -129, 4, 1816 },  { -126, 4, 1816 },\n    { -111, 3, 1817 },  { -93, 3, 1818 },   { -73, 2, 1819 },   { -53, 2, 1820 },   { -32, 1, 1821 },\n    { -13, 1, 1821 },   { 3, 0, 1822 },     { 16, 0, 1823 },    { 25, 0, 1823 },    { 28, 0, 1823 },\n};\n\nstatic s16 animdata_mario_eyebrows_2_2[][3] = {\n    { 28, -5, 1943 },  { 28, -5, 1943 },  { 28, -5, 1943 },  { 28, -5, 1943 },  { 28, -5, 1943 },\n    { 28, -5, 1943 },  { 28, -5, 1943 },  { 28, -5, 1943 },  { 28, -5, 1943 },  { 28, -5, 1943 },\n    { 28, -5, 1943 },  { 28, -5, 1943 },  { 28, -5, 1943 },  { 28, -5, 1943 },  { 28, -5, 1943 },\n    { 28, -5, 1943 },  { 28, -5, 1943 },  { 28, -5, 1943 },  { 28, -5, 1943 },  { 28, -5, 1943 },\n    { 28, -5, 1943 },  { 28, -5, 1943 },  { 28, -5, 1943 },  { 28, -5, 1943 },  { 28, -5, 1943 },\n    { 28, -5, 1943 },  { 28, -5, 1943 },  { 28, -5, 1943 },  { 28, -5, 1943 },  { 28, -5, 1943 },\n    { 28, -5, 1943 },  { 28, -5, 1943 },  { 28, -5, 1943 },  { 28, -5, 1943 },  { 28, -5, 1943 },\n    { 28, -5, 1943 },  { 28, -5, 1943 },  { 28, -5, 1943 },  { 28, -5, 1943 },  { 28, -5, 1943 },\n    { 28, -5, 1943 },  { 28, -5, 1943 },  { 28, -5, 1943 },  { 28, -5, 1943 },  { 28, -5, 1943 },\n    { 28, -5, 1943 },  { 28, -5, 1942 },  { 28, -5, 1941 },  { 29, -5, 1939 },  { 29, -5, 1937 },\n    { 30, -5, 1934 },  { 30, -5, 1932 },  { 31, -5, 1929 },  { 31, -5, 1926 },  { 32, -5, 1922 },\n    { 32, -5, 1919 },  { 32, -4, 1916 },  { 32, -4, 1913 },  { 32, -4, 1910 },  { 31, -4, 1907 },\n    { 30, -4, 1905 },  { 29, -3, 1903 },  { 28, -3, 1901 },  { 26, -3, 1900 },  { 24, -2, 1898 },\n    { 22, -2, 1897 },  { 19, -2, 1896 },  { 16, -1, 1894 },  { 13, -1, 1893 },  { 10, -1, 1892 },\n    { 6, 0, 1891 },    { 3, 0, 1890 },    { 0, 0, 1889 },    { -3, 0, 1888 },   { -7, 1, 1887 },\n    { -10, 1, 1886 },  { -14, 2, 1885 },  { -18, 2, 1884 },  { -21, 2, 1883 },  { -24, 3, 1883 },\n    { -28, 3, 1882 },  { -31, 4, 1881 },  { -33, 4, 1880 },  { -36, 5, 1880 },  { -38, 5, 1879 },\n    { -40, 6, 1878 },  { -42, 7, 1877 },  { -44, 7, 1877 },  { -45, 8, 1876 },  { -45, 8, 1875 },\n    { -46, 9, 1874 },  { -45, 9, 1874 },  { -45, 10, 1873 }, { -45, 11, 1872 }, { -44, 11, 1872 },\n    { -43, 12, 1871 }, { -42, 13, 1870 }, { -40, 13, 1870 }, { -39, 14, 1869 }, { -37, 15, 1868 },\n    { -35, 16, 1868 }, { -33, 17, 1867 }, { -31, 18, 1867 }, { -29, 18, 1866 }, { -27, 19, 1866 },\n    { -24, 20, 1865 }, { -22, 21, 1864 }, { -20, 22, 1864 }, { -17, 23, 1863 }, { -14, 24, 1863 },\n    { -12, 24, 1862 }, { -9, 25, 1862 },  { -7, 26, 1861 },  { -4, 27, 1861 },  { -1, 27, 1860 },\n    { 0, 28, 1860 },   { 3, 29, 1859 },   { 5, 29, 1859 },   { 8, 30, 1858 },   { 10, 31, 1857 },\n    { 13, 31, 1857 },  { 15, 31, 1856 },  { 17, 32, 1856 },  { 19, 32, 1855 },  { 21, 32, 1855 },\n    { 23, 33, 1854 },  { 24, 33, 1853 },  { 26, 33, 1853 },  { 27, 33, 1852 },  { 28, 33, 1851 },\n    { 29, 33, 1851 },  { 30, 32, 1850 },  { 31, 32, 1849 },  { 31, 31, 1848 },  { 32, 31, 1847 },\n    { 32, 30, 1846 },  { 33, 29, 1845 },  { 33, 28, 1844 },  { 33, 27, 1844 },  { 33, 26, 1842 },\n    { 33, 25, 1841 },  { 33, 24, 1840 },  { 33, 22, 1839 },  { 33, 21, 1838 },  { 33, 20, 1837 },\n    { 33, 18, 1836 },  { 33, 17, 1835 },  { 33, 16, 1834 },  { 32, 14, 1833 },  { 32, 13, 1832 },\n    { 32, 12, 1831 },  { 31, 10, 1830 },  { 31, 9, 1830 },   { 31, 8, 1829 },   { 30, 7, 1828 },\n    { 30, 6, 1827 },   { 30, 5, 1827 },   { 30, 4, 1826 },   { 29, 3, 1825 },   { 29, 2, 1825 },\n    { 29, 1, 1824 },   { 29, 1, 1824 },   { 28, 0, 1824 },   { 28, 0, 1823 },   { 28, 0, 1823 },\n    { 28, 0, 1823 },\n};\n\nstruct AnimDataInfo anim_mario_eyebrows_2[] = {\n    { ARRAY_COUNT(animdata_mario_eyebrows_2_1), GD_ANIM_ROT3S, animdata_mario_eyebrows_2_1 },\n    { ARRAY_COUNT(animdata_mario_eyebrows_2_2), GD_ANIM_ROT3S, animdata_mario_eyebrows_2_2 },\n    END_ANIMDATA_INFO_ARR,\n};\n\nstatic s16 anim_mario_eyebrows_3_1[][3] = {\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, -1 },\n    { 0, 0, -1 },   { 0, 0, -2 },   { 0, 0, -2 },   { 0, 0, -3 },   { 0, 0, -3 },   { 0, 0, -4 },\n    { 0, 0, -4 },   { 0, 0, -5 },   { 0, 0, -5 },   { 0, 0, -5 },   { 0, 0, -6 },   { 0, 0, -6 },\n    { 0, 0, -7 },   { 0, 0, -7 },   { 0, 0, -8 },   { 0, 0, -8 },   { 0, 0, -9 },   { 0, 0, -9 },\n    { 0, 0, -10 },  { 0, 0, -10 },  { 0, 0, -10 },  { 0, 0, -11 },  { 0, 0, -11 },  { 0, 0, -12 },\n    { 0, 0, -12 },  { 0, 0, -13 },  { 0, 0, -13 },  { 0, 0, -14 },  { 0, 0, -14 },  { 0, 0, -14 },\n    { 0, 0, -15 },  { 0, 0, -15 },  { 0, 0, -16 },  { 0, 0, -16 },  { 0, 0, -17 },  { 0, 0, -17 },\n    { 0, 0, -17 },  { 0, 0, -18 },  { 0, 0, -18 },  { 0, 0, -19 },  { 0, 0, -19 },  { 0, 0, -20 },\n    { 0, 0, -20 },  { 0, 0, -21 },  { 0, 0, -21 },  { 0, 0, -21 },  { 0, 0, -22 },  { 0, 0, -22 },\n    { 0, 0, -23 },  { 0, 0, -23 },  { 0, 0, -24 },  { 0, 0, -24 },  { 0, 0, -24 },  { 0, 0, -25 },\n    { 0, 0, -25 },  { 0, 0, -26 },  { 0, 0, -26 },  { 0, 0, -27 },  { 0, 0, -27 },  { 0, 0, -27 },\n    { 0, 0, -28 },  { 0, 0, -28 },  { 0, 0, -29 },  { 0, 0, -29 },  { 0, 0, -30 },  { 0, 0, -30 },\n    { 0, 0, -30 },  { 0, 0, -31 },  { 0, 0, -31 },  { 0, 0, -32 },  { 0, 0, -32 },  { 0, 0, -33 },\n    { 0, 0, -33 },  { 0, 0, -33 },  { 0, 0, -34 },  { 0, 0, -34 },  { 0, 0, -35 },  { 0, 0, -35 },\n    { 0, 0, -36 },  { 0, 0, -36 },  { 0, 0, -37 },  { 0, 0, -37 },  { 0, 0, -37 },  { 0, 0, -38 },\n    { 0, 0, -38 },  { 0, 0, -39 },  { 0, 0, -39 },  { 0, 0, -40 },  { 0, 0, -40 },  { 0, 0, -40 },\n    { 0, 0, -41 },  { 0, 0, -41 },  { 0, 0, -42 },  { 0, 0, -42 },  { 0, 0, -43 },  { 0, 0, -43 },\n    { 0, 0, -44 },  { 0, 0, -44 },  { 0, 0, -45 },  { 0, 0, -45 },  { 0, 0, -45 },  { 0, 0, -46 },\n    { 0, 0, -46 },  { 0, 0, -47 },  { 0, 0, -47 },  { 0, 0, -48 },  { 0, 0, -48 },  { 0, 0, -49 },\n    { 0, 0, -49 },  { 0, 0, -50 },  { 0, 0, -50 },  { 0, 0, -50 },  { 0, 0, -51 },  { 0, 0, -51 },\n    { 0, 0, -52 },  { 0, 0, -52 },  { 0, 0, -53 },  { 0, 0, -53 },  { 0, 0, -54 },  { 0, 0, -54 },\n    { 0, 0, -55 },  { 0, 0, -55 },  { 0, 0, -56 },  { 0, 0, -56 },  { 0, 0, -57 },  { 0, 0, -57 },\n    { 0, 0, -57 },  { 0, 0, -58 },  { 0, 0, -58 },  { 0, 0, -59 },  { 0, 0, -59 },  { 0, 0, -60 },\n    { 0, 0, -60 },  { 0, 0, -61 },  { 0, 0, -61 },  { 0, 0, -62 },  { 0, 0, -62 },  { 0, 0, -63 },\n    { 0, 0, -63 },  { 0, 0, -64 },  { 0, 0, -64 },  { 0, 0, -65 },  { 0, 0, -65 },  { 0, 0, -66 },\n    { 0, 0, -66 },  { 0, 0, -67 },  { 0, 0, -67 },  { 0, 0, -68 },  { 0, 0, -68 },  { 0, 0, -69 },\n    { 0, 0, -69 },  { 0, 0, -70 },  { 0, 0, -70 },  { 0, 0, -71 },  { 0, 0, -72 },  { 0, 0, -72 },\n    { 0, 0, -73 },  { 0, 0, -73 },  { 0, 0, -74 },  { 0, 0, -74 },  { 0, 0, -75 },  { 0, 0, -75 },\n    { 0, 0, -76 },  { 0, 0, -76 },  { 0, 0, -77 },  { 0, 0, -77 },  { 0, 0, -78 },  { 0, 0, -79 },\n    { 0, 0, -79 },  { 0, 0, -80 },  { 0, 0, -80 },  { 0, 0, -81 },  { 0, 0, -81 },  { 0, 0, -82 },\n    { 0, 0, -82 },  { 0, 0, -83 },  { 0, 0, -84 },  { 0, 0, -84 },  { 0, 0, -85 },  { 0, 0, -85 },\n    { 0, 0, -86 },  { 0, 0, -86 },  { 0, 0, -87 },  { 0, 0, -88 },  { 0, 0, -88 },  { 0, 0, -89 },\n    { 0, 0, -89 },  { 0, 0, -90 },  { 0, 0, -91 },  { 0, 0, -91 },  { 0, 0, -92 },  { 0, 0, -92 },\n    { 0, 0, -93 },  { 0, 0, -94 },  { 0, 0, -94 },  { 0, 0, -95 },  { 0, 0, -96 },  { 0, 0, -96 },\n    { 0, 0, -97 },  { 0, 0, -97 },  { 0, 0, -98 },  { 0, 0, -99 },  { 0, 0, -99 },  { 0, 0, -100 },\n    { 0, 0, -101 }, { 0, 0, -101 }, { 0, 0, -102 }, { 0, 0, -103 }, { 0, 0, -103 }, { 0, 0, -104 },\n    { 0, 0, -105 }, { 0, 0, -105 }, { 0, 0, -106 }, { 0, 0, -107 }, { 0, 0, -107 }, { 0, 0, -108 },\n    { 0, 0, -110 }, { 0, 0, -113 }, { 0, 0, -119 }, { 0, 0, -125 }, { 0, 0, -131 }, { 0, 0, -138 },\n    { 0, 0, -145 }, { 0, 0, -150 }, { 0, 0, -154 }, { 0, 0, -156 }, { 0, 0, -157 }, { 0, 0, -156 },\n    { 0, 0, -155 }, { 0, 0, -154 }, { 0, 0, -154 }, { 0, 0, -153 }, { 0, 0, -152 }, { 0, 0, -152 },\n    { 0, 0, -151 }, { 0, 0, -150 }, { 0, 0, -150 }, { 0, 0, -149 }, { 0, 0, -148 }, { 0, 0, -148 },\n    { 0, 0, -147 }, { 0, 0, -147 }, { 0, 0, -146 }, { 0, 0, -145 }, { 0, 0, -145 }, { 0, 0, -144 },\n    { 0, 0, -143 }, { 0, 0, -143 }, { 0, 0, -142 }, { 0, 0, -141 }, { 0, 0, -141 }, { 0, 0, -140 },\n    { 0, 0, -139 }, { 0, 0, -139 }, { 0, 0, -138 }, { 0, 0, -137 }, { 0, 0, -137 }, { 0, 0, -136 },\n    { 0, 0, -135 }, { 0, 0, -135 }, { 0, 0, -134 }, { 0, 0, -134 }, { 0, 0, -133 }, { 0, 0, -132 },\n    { 0, 0, -132 }, { 0, 0, -131 }, { 0, 0, -130 }, { 0, 0, -130 }, { 0, 0, -129 }, { 0, 0, -128 },\n    { 0, 0, -128 }, { 0, 0, -127 }, { 0, 0, -126 }, { 0, 0, -126 }, { 0, 0, -125 }, { 0, 0, -124 },\n    { 0, 0, -124 }, { 0, 0, -123 }, { 0, 0, -122 }, { 0, 0, -122 }, { 0, 0, -121 }, { 0, 0, -120 },\n    { 0, 0, -120 }, { 0, 0, -119 }, { 0, 0, -118 }, { 0, 0, -118 }, { 0, 0, -117 }, { 0, 0, -116 },\n    { 0, 0, -116 }, { 0, 0, -115 }, { 0, 0, -114 }, { 0, 0, -114 }, { 0, 0, -113 }, { 0, 0, -112 },\n    { 0, 0, -112 }, { 0, 0, -111 }, { 0, 0, -110 }, { 0, 0, -110 }, { 0, 0, -109 }, { 0, 0, -108 },\n    { 0, 0, -108 }, { 0, 0, -107 }, { 0, 0, -106 }, { 0, 0, -106 }, { 0, 0, -105 }, { 0, 0, -104 },\n    { 0, 0, -104 }, { 0, 0, -103 }, { 0, 0, -102 }, { 0, 0, -102 }, { 0, 0, -101 }, { 0, 0, -100 },\n    { 0, 0, -100 }, { 0, 0, -99 },  { 0, 0, -98 },  { 0, 0, -98 },  { 0, 0, -97 },  { 0, 0, -96 },\n    { 0, 0, -96 },  { 0, 0, -95 },  { 0, 0, -94 },  { 0, 0, -94 },  { 0, 0, -93 },  { 0, 0, -92 },\n    { 0, 0, -92 },  { 0, 0, -91 },  { 0, 0, -90 },  { 0, 0, -90 },  { 0, 0, -89 },  { 0, 0, -88 },\n    { 0, 0, -88 },  { 0, 0, -87 },  { 0, 0, -86 },  { 0, 0, -86 },  { 0, 0, -85 },  { 0, 0, -84 },\n    { 0, 0, -84 },  { 0, 0, -83 },  { 0, 0, -82 },  { 0, 0, -82 },  { 0, 0, -81 },  { 0, 0, -80 },\n    { 0, 0, -80 },  { 0, 0, -79 },  { 0, 0, -78 },  { 0, 0, -78 },  { 0, 0, -77 },  { 0, 0, -76 },\n    { 0, 0, -76 },  { 0, 0, -75 },  { 0, 0, -74 },  { 0, 0, -74 },  { 0, 0, -73 },  { 0, 0, -72 },\n    { 0, 0, -72 },  { 0, 0, -71 },  { 0, 0, -70 },  { 0, 0, -70 },  { 0, 0, -69 },  { 0, 0, -68 },\n    { 0, 0, -68 },  { 0, 0, -67 },  { 0, 0, -66 },  { 0, 0, -66 },  { 0, 0, -65 },  { 0, 0, -64 },\n    { 0, 0, -64 },  { 0, 0, -63 },  { 0, 0, -62 },  { 0, 0, -62 },  { 0, 0, -61 },  { 0, 0, -60 },\n    { 0, 0, -60 },  { 0, 0, -59 },  { 0, 0, -59 },  { 0, 0, -58 },  { 0, 0, -57 },  { 0, 0, -57 },\n    { 0, 0, -56 },  { 0, 0, -55 },  { 0, 0, -55 },  { 0, 0, -54 },  { 0, 0, -53 },  { 0, 0, -53 },\n    { 0, 0, -52 },  { 0, 0, -51 },  { 0, 0, -51 },  { 0, 0, -50 },  { 0, 0, -49 },  { 0, 0, -49 },\n    { 0, 0, -48 },  { 0, 0, -47 },  { 0, 0, -47 },  { 0, 0, -46 },  { 0, 0, -45 },  { 0, 0, -45 },\n    { 0, 0, -44 },  { 0, 0, -43 },  { 0, 0, -43 },  { 0, 0, -42 },  { 0, 0, -41 },  { 0, 0, -41 },\n    { 0, 0, -40 },  { 0, 0, -40 },  { 0, 0, -39 },  { 0, 0, -38 },  { 0, 0, -38 },  { 0, 0, -37 },\n    { 0, 0, -36 },  { 0, 0, -36 },  { 0, 0, -35 },  { 0, 0, -34 },  { 0, 0, -34 },  { 0, 0, -33 },\n    { 0, 0, -32 },  { 0, 0, -32 },  { 0, 0, -31 },  { 0, 0, -31 },  { 0, 0, -30 },  { 0, 0, -29 },\n    { 0, 0, -29 },  { 0, 0, -28 },  { 0, 0, -27 },  { 0, 0, -27 },  { 0, 0, -26 },  { 0, 0, -25 },\n    { 0, 0, -25 },  { 0, 0, -24 },  { 0, 0, -24 },  { 0, 0, -23 },  { 0, 0, -22 },  { 0, 0, -22 },\n    { 0, 0, -21 },  { 0, 0, -20 },  { 0, 0, -20 },  { 0, 0, -19 },  { 0, 0, -19 },  { 0, 0, -18 },\n    { 0, 0, -17 },  { 0, 0, -17 },  { 0, 0, -16 },  { 0, 0, -15 },  { 0, 0, -15 },  { 0, 0, -14 },\n    { 0, 0, -14 },  { 0, 0, -13 },  { 0, 0, -12 },  { 0, 0, -12 },  { 0, 0, -11 },  { 0, 0, -10 },\n    { 0, 0, -10 },  { 0, 0, -9 },   { 0, 0, -9 },   { 0, 0, -8 },   { 0, 0, -7 },   { 0, 0, -7 },\n    { 0, 0, -6 },   { 0, 0, -6 },   { 0, 0, -5 },   { 0, 0, -4 },   { 0, 0, -4 },   { 0, 0, -3 },\n    { 0, 0, -3 },   { 0, 0, -2 },   { 0, 0, -1 },   { 0, 0, -1 },   { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 1 },    { 0, 0, 1 },    { 0, 0, 1 },    { 0, 0, 1 },\n    { 0, 0, 1 },    { 0, 0, 1 },    { 0, 0, 1 },    { 0, 0, 1 },    { 0, 0, 1 },    { 0, 0, 1 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },    { 0, 0, 0 },\n};\n\nstruct AnimDataInfo anim_mario_eyebrows_3[] = {\n    { ARRAY_COUNT(anim_mario_eyebrows_3_1), GD_ANIM_ROT3S, anim_mario_eyebrows_3_1 },\n    { 0, GD_ANIM_EMPTY, NULL },\n    END_ANIMDATA_INFO_ARR,\n};\n\nstatic s16 animdata_mario_eyebrows_4_1[][3] = {\n    { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1778 },  { -35, 0, -1780 },  { -36, 0, -1781 },\n    { -36, 0, -1784 },  { -37, 0, -1786 },  { -38, -1, -1788 }, { -39, -1, -1790 }, { -40, -1, -1793 },\n    { -41, -1, -1795 }, { -42, -1, -1797 }, { -42, -1, -1798 }, { -42, -1, -1799 }, { -43, -1, -1799 },\n    { -42, -1, -1799 }, { -42, -1, -1798 }, { -41, -1, -1796 }, { -40, -1, -1793 }, { -38, -1, -1789 },\n    { -36, 0, -1784 },  { -34, 0, -1777 },  { -21, 0, -1745 },  { 2, 2, -1685 },    { 25, 4, -1626 },\n    { 35, 5, -1600 },   { 34, 4, -1602 },   { 31, 4, -1610 },   { 27, 4, -1621 },   { 21, 3, -1635 },\n    { 15, 3, -1652 },   { 7, 2, -1670 },    { 0, 2, -1689 },    { -7, 1, -1708 },   { -14, 0, -1726 },\n    { -21, 0, -1743 },  { -26, 0, -1758 },  { -31, 0, -1769 },  { -34, 0, -1777 },  { -36, 0, -1782 },\n    { -37, 0, -1786 },  { -39, -1, -1789 }, { -39, -1, -1791 }, { -40, -1, -1792 }, { -40, -1, -1793 },\n    { -40, -1, -1793 }, { -40, -1, -1792 }, { -39, -1, -1791 }, { -39, -1, -1790 }, { -38, -1, -1788 },\n    { -37, 0, -1786 },  { -37, 0, -1784 },  { -36, 0, -1782 },  { -35, 0, -1781 },  { -35, 0, -1779 },\n    { -34, 0, -1778 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },\n    { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },\n    { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },\n    { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },\n    { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },\n    { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },\n    { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },\n    { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },\n    { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1776 },  { -34, 0, -1776 },\n    { -34, 0, -1776 },  { -34, 0, -1776 },  { -34, 0, -1776 },  { -34, 0, -1776 },  { -34, 0, -1776 },\n    { -34, 0, -1776 },  { -34, 0, -1776 },  { -34, 0, -1776 },  { -34, 0, -1776 },  { -34, 0, -1776 },\n    { -34, 0, -1776 },  { -34, 0, -1776 },  { -34, 0, -1776 },  { -34, 0, -1776 },  { -34, 0, -1776 },\n    { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1778 },  { -34, 0, -1778 },\n    { -34, 0, -1780 },  { -34, 0, -1781 },  { -34, -1, -1782 }, { -34, -1, -1784 }, { -34, -1, -1785 },\n    { -34, -1, -1787 }, { -34, -1, -1788 }, { -34, -1, -1788 }, { -34, -1, -1789 }, { -34, -1, -1789 },\n    { -34, -1, -1788 }, { -34, -1, -1788 }, { -34, -1, -1788 }, { -34, -1, -1788 }, { -34, -1, -1788 },\n    { -34, -1, -1788 }, { -34, -1, -1788 }, { -34, -1, -1788 }, { -34, -1, -1788 }, { -34, -1, -1787 },\n    { -34, -1, -1787 }, { -34, -1, -1787 }, { -34, -1, -1787 }, { -34, -1, -1786 }, { -34, -1, -1786 },\n    { -34, -1, -1786 }, { -34, -1, -1786 }, { -34, -1, -1785 }, { -34, -1, -1785 }, { -34, -1, -1785 },\n    { -34, -1, -1784 }, { -34, -1, -1784 }, { -34, -1, -1784 }, { -34, -1, -1783 }, { -34, -1, -1783 },\n    { -34, -1, -1783 }, { -34, -1, -1782 }, { -34, 0, -1782 },  { -34, 0, -1782 },  { -34, 0, -1781 },\n    { -34, 0, -1781 },  { -34, 0, -1781 },  { -34, 0, -1781 },  { -34, 0, -1780 },  { -34, 0, -1780 },\n    { -34, 0, -1780 },  { -34, 0, -1779 },  { -34, 0, -1779 },  { -34, 0, -1779 },  { -34, 0, -1778 },\n    { -34, 0, -1778 },  { -34, 0, -1778 },  { -34, 0, -1778 },  { -34, 0, -1777 },  { -34, 0, -1777 },\n    { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },\n    { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },\n    { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1778 },\n    { -34, 0, -1779 },  { -34, 0, -1781 },  { -34, -1, -1783 }, { -34, -1, -1786 }, { -34, -1, -1790 },\n    { -34, -1, -1794 }, { -34, -1, -1797 }, { -34, -2, -1801 }, { -34, -2, -1805 }, { -34, -2, -1809 },\n    { -34, -2, -1812 }, { -35, -2, -1815 }, { -35, -2, -1817 }, { -35, -3, -1819 }, { -35, -3, -1820 },\n    { -35, -3, -1820 }, { -35, -3, -1819 }, { -35, -2, -1817 }, { -34, -2, -1814 }, { -34, -2, -1810 },\n    { -34, -2, -1804 }, { -34, -1, -1797 }, { -34, -1, -1788 }, { -34, 0, -1777 },  { -33, 1, -1733 },\n    { -32, 6, -1646 },  { -30, 12, -1545 }, { -29, 17, -1463 }, { -28, 19, -1428 }, { -28, 18, -1440 },\n    { -29, 16, -1473 }, { -30, 13, -1521 }, { -31, 10, -1577 }, { -32, 7, -1637 },  { -32, 4, -1694 },\n    { -33, 1, -1743 },  { -34, 0, -1777 },  { -34, -1, -1797 }, { -34, -2, -1809 }, { -34, -2, -1814 },\n    { -34, -2, -1814 }, { -34, -2, -1812 }, { -34, -2, -1809 }, { -34, -2, -1808 }, { -34, -2, -1808 },\n    { -34, -2, -1807 }, { -34, -2, -1807 }, { -34, -2, -1807 }, { -34, -2, -1807 }, { -34, -2, -1806 },\n    { -34, -2, -1806 }, { -34, -2, -1806 }, { -34, -2, -1805 }, { -34, -2, -1804 }, { -34, -2, -1804 },\n    { -34, -2, -1803 }, { -34, -2, -1803 }, { -34, -2, -1802 }, { -34, -2, -1801 }, { -34, -2, -1800 },\n    { -34, -1, -1800 }, { -34, -1, -1799 }, { -34, -1, -1798 }, { -34, -1, -1797 }, { -34, -1, -1796 },\n    { -34, -1, -1795 }, { -34, -1, -1794 }, { -34, -1, -1793 }, { -34, -1, -1792 }, { -34, -1, -1792 },\n    { -34, -1, -1791 }, { -34, -1, -1790 }, { -34, -1, -1789 }, { -34, -1, -1788 }, { -34, -1, -1787 },\n    { -34, -1, -1786 }, { -34, -1, -1785 }, { -34, -1, -1784 }, { -34, -1, -1784 }, { -34, -1, -1783 },\n    { -34, 0, -1782 },  { -34, 0, -1781 },  { -34, 0, -1781 },  { -34, 0, -1780 },  { -34, 0, -1779 },\n    { -34, 0, -1779 },  { -34, 0, -1778 },  { -34, 0, -1778 },  { -34, 0, -1777 },  { -34, 0, -1777 },\n    { -34, 0, -1776 },  { -34, 0, -1776 },  { -34, 0, -1776 },  { -34, 0, -1776 },  { -34, 0, -1777 },\n    { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1778 },  { -34, 0, -1778 },\n    { -34, 0, -1778 },  { -34, 0, -1779 },  { -34, 0, -1779 },  { -34, 0, -1779 },  { -34, 0, -1780 },\n    { -34, 0, -1780 },  { -34, 0, -1780 },  { -34, 0, -1780 },  { -34, 0, -1780 },  { -34, 0, -1779 },\n    { -34, 0, -1779 },  { -34, 0, -1779 },  { -34, 0, -1778 },  { -34, 0, -1777 },  { -34, 0, -1776 },\n    { -34, 0, -1774 },  { -34, 0, -1771 },  { -34, 0, -1768 },  { -34, 0, -1765 },  { -34, 0, -1761 },\n    { -34, 0, -1758 },  { -34, 0, -1754 },  { -34, 0, -1751 },  { -34, 1, -1748 },  { -34, 1, -1745 },\n    { -34, 1, -1743 },  { -34, 1, -1741 },  { -34, 1, -1740 },  { -34, 1, -1739 },  { -34, 1, -1739 },\n    { -34, 1, -1739 },  { -34, 1, -1741 },  { -34, 1, -1743 },  { -34, 1, -1747 },  { -34, 0, -1753 },\n    { -34, 0, -1761 },  { -34, 0, -1768 },  { -34, 0, -1774 },  { -34, 0, -1777 },  { -34, 0, -1778 },\n    { -34, 0, -1779 },  { -34, 0, -1780 },  { -34, 0, -1780 },  { -34, 0, -1781 },  { -34, 0, -1781 },\n    { -34, 0, -1781 },  { -34, 0, -1781 },  { -34, 0, -1781 },  { -34, 0, -1780 },  { -34, 0, -1780 },\n    { -34, 0, -1780 },  { -34, 0, -1779 },  { -34, 0, -1779 },  { -34, 0, -1778 },  { -34, 0, -1778 },\n    { -34, 0, -1778 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },\n    { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },\n    { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },\n    { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },\n    { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },\n    { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },\n    { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },\n    { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },\n    { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1777 },\n    { -34, 0, -1777 },  { -34, 0, -1777 },  { -34, 0, -1778 },  { -34, 0, -1781 },  { -34, -1, -1785 },\n    { -34, -1, -1789 }, { -34, -1, -1793 }, { -34, -1, -1797 }, { -34, -1, -1800 }, { -34, -2, -1801 },\n    { -34, -1, -1799 }, { -34, -1, -1796 }, { -34, -1, -1788 }, { -34, 0, -1777 },  { -33, 1, -1738 },\n    { -32, 5, -1667 },  { -32, 9, -1599 },  { -31, 11, -1565 }, { -31, 11, -1563 }, { -31, 11, -1569 },\n    { -32, 10, -1581 }, { -32, 9, -1598 },  { -32, 8, -1618 },  { -33, 7, -1640 },  { -33, 6, -1662 },\n    { -33, 4, -1684 },  { -34, 3, -1703 },  { -34, 2, -1725 },  { -34, 0, -1752 },  { -34, 0, -1778 },\n    { -34, -1, -1799 }, { -34, -2, -1808 }, { -34, -2, -1809 }, { -34, -2, -1810 }, { -34, -2, -1811 },\n    { -34, -2, -1811 }, { -34, -2, -1812 }, { -34, -2, -1813 }, { -34, -2, -1814 }, { -34, -2, -1815 },\n    { -34, -2, -1815 }, { -34, -2, -1816 }, { -34, -2, -1817 }, { -34, -2, -1817 }, { -34, -3, -1818 },\n    { -34, -3, -1818 }, { -34, -3, -1819 }, { -34, -3, -1819 }, { -34, -3, -1820 }, { -34, -3, -1820 },\n    { -34, -3, -1820 }, { -34, -3, -1821 }, { -34, -3, -1821 }, { -34, -3, -1821 }, { -34, -3, -1822 },\n    { -34, -3, -1822 }, { -34, -3, -1822 }, { -34, -3, -1822 }, { -34, -3, -1822 }, { -34, -3, -1822 },\n    { -34, -3, -1822 }, { -34, -3, -1822 }, { -34, -3, -1822 }, { -34, -3, -1822 }, { -34, -3, -1822 },\n    { -34, -3, -1822 }, { -34, -3, -1822 }, { -34, -3, -1822 }, { -34, -3, -1822 }, { -34, -3, -1822 },\n    { -34, -3, -1822 }, { -34, -3, -1821 }, { -34, -3, -1821 }, { -34, -3, -1821 }, { -34, -3, -1821 },\n    { -34, -3, -1821 }, { -34, -3, -1820 }, { -34, -3, -1820 }, { -34, -3, -1820 }, { -34, -3, -1820 },\n    { -34, -3, -1819 }, { -34, -3, -1819 }, { -34, -3, -1819 }, { -34, -3, -1818 }, { -34, -3, -1818 },\n    { -34, -3, -1818 }, { -34, -2, -1817 }, { -34, -2, -1817 }, { -34, -2, -1817 }, { -34, -2, -1816 },\n    { -34, -2, -1816 }, { -34, -2, -1816 }, { -34, -2, -1815 }, { -34, -2, -1815 }, { -34, -2, -1815 },\n    { -34, -2, -1814 }, { -34, -2, -1814 }, { -34, -2, -1814 }, { -34, -2, -1813 }, { -34, -2, -1813 },\n    { -34, -2, -1812 }, { -34, -2, -1812 }, { -34, -2, -1812 }, { -34, -2, -1812 }, { -34, -2, -1811 },\n    { -34, -2, -1811 }, { -34, -2, -1811 }, { -34, -2, -1810 }, { -34, -2, -1810 }, { -34, -2, -1810 },\n    { -34, -2, -1809 }, { -34, -2, -1809 }, { -34, -2, -1809 }, { -34, -2, -1809 }, { -34, -2, -1809 },\n    { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 },\n    { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 },\n    { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 },\n    { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 },\n    { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 },\n    { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 },\n    { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 },\n    { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 },\n    { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 },\n    { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 },\n    { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 },\n    { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 },\n    { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 },\n    { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 },\n    { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 },\n    { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 },\n    { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 },\n    { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 },\n    { -34, -2, -1808 }, { -34, -2, -1809 }, { -34, -2, -1809 }, { -34, -2, -1809 }, { -34, -2, -1809 },\n    { -34, -2, -1809 }, { -34, -2, -1809 }, { -34, -2, -1809 }, { -34, -2, -1809 }, { -34, -2, -1809 },\n    { -34, -2, -1809 }, { -34, -2, -1809 }, { -34, -2, -1809 }, { -34, -2, -1809 }, { -34, -2, -1809 },\n    { -34, -2, -1809 }, { -34, -2, -1809 }, { -34, -2, -1808 }, { -34, -2, -1808 }, { -34, -2, -1808 },\n    { -34, -2, -1807 }, { -34, -2, -1807 }, { -34, -2, -1806 }, { -34, -2, -1806 }, { -34, -2, -1805 },\n    { -34, -2, -1805 }, { -34, -2, -1804 }, { -34, -2, -1803 }, { -34, -2, -1803 }, { -34, -2, -1802 },\n    { -34, -2, -1801 }, { -34, -2, -1801 }, { -34, -1, -1800 }, { -34, -1, -1799 }, { -34, -1, -1798 },\n    { -34, -1, -1798 }, { -34, -1, -1797 }, { -34, -1, -1796 }, { -34, -1, -1795 }, { -34, -1, -1795 },\n    { -34, -1, -1794 }, { -34, -1, -1793 }, { -34, -1, -1792 }, { -34, -1, -1791 }, { -34, -1, -1791 },\n    { -34, -1, -1790 }, { -34, -1, -1789 }, { -34, -1, -1788 }, { -34, -1, -1787 }, { -34, -1, -1787 },\n    { -34, -1, -1786 }, { -34, -1, -1785 }, { -34, -1, -1784 }, { -34, -1, -1784 }, { -34, -1, -1783 },\n    { -34, 0, -1782 },  { -34, 0, -1782 },  { -34, 0, -1781 },  { -34, 0, -1780 },  { -34, 0, -1780 },\n    { -34, 0, -1779 },  { -34, 0, -1779 },  { -34, 0, -1778 },  { -34, 0, -1778 },  { -34, 0, -1777 },\n    { -34, 0, -1777 },  { -34, 0, -1776 },  { -35, 0, -1776 },  { -36, 0, -1776 },  { -37, 0, -1776 },\n    { -38, 0, -1776 },  { -39, 0, -1776 },  { -40, 0, -1776 },  { -41, 0, -1776 },  { -41, 0, -1776 },\n    { -42, 0, -1776 },  { -43, 0, -1776 },  { -43, 0, -1776 },  { -43, 0, -1776 },  { -42, 0, -1777 },\n    { -42, 0, -1777 },  { -40, 0, -1777 },  { -39, 0, -1777 },  { -37, 0, -1777 },  { -34, 0, -1777 },\n    { -30, 0, -1777 },  { -23, 0, -1777 },  { -14, 0, -1777 },  { -4, 0, -1777 },   { 5, 0, -1777 },\n    { 16, 0, -1777 },   { 27, 0, -1777 },   { 38, 0, -1777 },   { 47, 0, -1777 },   { 54, 0, -1777 },\n    { 60, 0, -1777 },   { 63, 0, -1777 },   { 64, 0, -1777 },   { 65, 0, -1777 },   { 66, 0, -1777 },\n    { 67, 0, -1777 },   { 68, 0, -1777 },   { 69, 0, -1777 },   { 70, 0, -1777 },   { 71, 0, -1777 },\n    { 71, 0, -1777 },   { 72, 0, -1777 },   { 73, 0, -1777 },   { 73, 0, -1777 },   { 73, 0, -1777 },\n    { 74, 0, -1777 },   { 74, 0, -1777 },   { 74, 0, -1777 },   { 74, 0, -1777 },   { 74, 0, -1777 },\n    { 74, 0, -1777 },   { 74, 0, -1777 },   { 74, 0, -1777 },   { 74, 0, -1777 },   { 74, 0, -1777 },\n    { 74, 0, -1777 },   { 74, 0, -1777 },   { 74, 0, -1777 },   { 73, 0, -1777 },   { 73, 0, -1777 },\n    { 73, 0, -1777 },   { 72, 0, -1777 },   { 72, 0, -1777 },   { 71, 0, -1777 },   { 71, 0, -1777 },\n    { 71, 0, -1777 },   { 70, 0, -1777 },   { 70, 0, -1777 },   { 69, 0, -1777 },   { 69, 0, -1777 },\n    { 68, 0, -1777 },   { 68, 0, -1777 },   { 67, 0, -1777 },   { 67, 0, -1777 },   { 67, 0, -1777 },\n    { 66, 0, -1777 },   { 66, 0, -1777 },   { 65, 0, -1777 },   { 65, 0, -1777 },   { 65, 0, -1777 },\n    { 64, 0, -1777 },   { 64, 0, -1777 },   { 64, 0, -1777 },   { 63, 0, -1777 },   { 63, 0, -1777 },\n    { 63, 0, -1777 },   { 63, 0, -1777 },   { 63, 0, -1777 },   { 63, 0, -1777 },   { 63, 0, -1777 },\n    { 63, 0, -1777 },   { 63, 0, -1777 },   { 63, 0, -1777 },   { 63, 0, -1777 },   { 63, 0, -1777 },\n    { 63, 0, -1777 },   { 63, 0, -1777 },   { 63, 0, -1777 },   { 63, 0, -1777 },   { 63, 0, -1777 },\n    { 63, 0, -1777 },   { 63, 0, -1777 },   { 63, 0, -1777 },   { 63, 0, -1777 },   { 63, 0, -1777 },\n    { 63, 0, -1777 },   { 63, 0, -1777 },   { 63, 0, -1777 },   { 63, 0, -1777 },   { 63, 0, -1777 },\n    { 63, 0, -1777 },   { 63, 0, -1777 },   { 63, 0, -1777 },   { 63, 0, -1777 },   { 63, 0, -1777 },\n    { 63, 0, -1777 },   { 63, 0, -1777 },   { 63, 0, -1777 },   { 63, 0, -1777 },   { 63, 0, -1777 },\n    { 63, 0, -1777 },   { 63, 0, -1777 },   { 63, 0, -1777 },   { 63, 0, -1777 },   { 63, 0, -1777 },\n    { 63, 0, -1777 },   { 63, 0, -1777 },   { 63, 0, -1777 },   { 63, 0, -1777 },   { 63, 0, -1777 },\n    { 63, 0, -1777 },   { 63, 0, -1777 },   { 63, 0, -1777 },   { 63, 0, -1777 },   { 63, 0, -1777 },\n    { 63, 0, -1777 },   { 63, 0, -1777 },   { 63, 0, -1777 },   { 63, 0, -1777 },   { 63, 0, -1777 },\n    { 63, 0, -1777 },   { 63, 0, -1777 },   { 63, 0, -1777 },   { 63, 0, -1777 },   { 63, 0, -1777 },\n    { 63, 0, -1777 },   { 63, 0, -1777 },   { 63, 0, -1777 },   { 65, 0, -1777 },   { 63, 0, -1777 },\n    { 53, 0, -1777 },   { 42, 0, -1777 },   { 30, 0, -1777 },   { 17, 0, -1777 },   { 4, 0, -1777 },\n    { -7, 0, -1777 },   { -18, 0, -1777 },  { -26, 0, -1777 },  { -32, 0, -1777 },  { -34, 0, -1777 },\n};\n\nstatic s16 animdata_mario_eyebrows_4_2[][3] = {\n    { -34, 0, -1754 }, { -34, 0, -1754 }, { -34, 0, -1754 }, { -34, 0, -1754 }, { -34, 0, -1754 },\n    { -34, 0, -1754 }, { -34, 0, -1754 }, { -34, 0, -1754 }, { -34, 0, -1754 }, { -34, 0, -1754 },\n    { -34, 0, -1754 }, { -34, 0, -1754 }, { -34, 0, -1754 }, { -34, 0, -1754 }, { -34, 0, -1754 },\n    { -34, 0, -1754 }, { -34, 0, -1754 }, { -34, 0, -1754 }, { -34, 0, -1754 }, { -34, 0, -1754 },\n    { -34, 0, -1754 }, { -34, 0, -1754 }, { -34, 0, -1754 }, { -34, 0, -1754 }, { -34, 0, -1754 },\n    { -34, 0, -1754 }, { -34, 0, -1754 }, { -34, 0, -1754 }, { -34, 0, -1754 }, { -34, 0, -1754 },\n    { -34, 0, -1754 }, { -34, 0, -1754 }, { -34, 0, -1754 }, { -34, 0, -1754 }, { -34, 0, -1754 },\n    { -34, 0, -1754 }, { -34, 0, -1754 }, { -34, 0, -1754 }, { -34, 0, -1754 }, { -34, 0, -1754 },\n    { -34, 0, -1754 }, { -34, 0, -1754 }, { -34, 0, -1754 }, { -34, 0, -1754 }, { -34, 0, -1754 },\n    { -34, 0, -1754 }, { -34, 0, -1754 }, { -34, 0, -1755 }, { -34, 0, -1755 }, { -34, 0, -1756 },\n    { -34, 0, -1756 }, { -34, 0, -1757 }, { -34, 0, -1757 }, { -34, 0, -1758 }, { -34, 0, -1759 },\n    { -34, 0, -1759 }, { -34, 0, -1760 }, { -34, 0, -1760 }, { -34, 0, -1761 }, { -34, 0, -1761 },\n    { -34, 0, -1762 }, { -34, 0, -1762 }, { -34, 0, -1762 }, { -34, 0, -1762 }, { -34, 0, -1762 },\n    { -34, 0, -1763 }, { -34, 0, -1763 }, { -34, 0, -1763 }, { -34, 0, -1763 }, { -34, 0, -1763 },\n    { -34, 0, -1763 }, { -34, 0, -1763 }, { -34, 0, -1763 }, { -34, 0, -1763 }, { -34, 0, -1763 },\n    { -34, 0, -1763 }, { -34, 0, -1763 }, { -34, 0, -1763 }, { -34, 0, -1763 }, { -34, 0, -1763 },\n    { -34, 0, -1763 }, { -34, 0, -1763 }, { -34, 0, -1763 }, { -34, 0, -1763 }, { -34, 0, -1763 },\n    { -34, 0, -1762 }, { -34, 0, -1762 }, { -34, 0, -1762 }, { -34, 0, -1762 }, { -34, 0, -1762 },\n    { -34, 0, -1762 }, { -34, 0, -1762 }, { -34, 0, -1762 }, { -34, 0, -1762 }, { -34, 0, -1762 },\n    { -34, 0, -1762 }, { -34, 0, -1762 }, { -34, 0, -1762 }, { -34, 0, -1762 }, { -34, 0, -1762 },\n    { -34, 0, -1762 }, { -34, 0, -1762 }, { -34, 0, -1761 }, { -34, 0, -1761 }, { -34, 0, -1761 },\n    { -34, 0, -1761 }, { -34, 0, -1761 }, { -34, 0, -1761 }, { -34, 0, -1761 }, { -34, 0, -1761 },\n    { -34, 0, -1761 }, { -34, 0, -1761 }, { -34, 0, -1761 }, { -34, 0, -1761 }, { -34, 0, -1761 },\n    { -34, 0, -1761 }, { -34, 0, -1761 }, { -34, 0, -1761 }, { -34, 0, -1761 }, { -34, 0, -1761 },\n    { -34, 0, -1761 }, { -34, 0, -1761 }, { -34, 0, -1762 }, { -34, 0, -1762 }, { -34, 0, -1762 },\n    { -34, 0, -1762 }, { -34, 0, -1762 }, { -34, 0, -1762 }, { -34, 0, -1762 }, { -34, 0, -1762 },\n    { -34, 0, -1762 }, { -34, 0, -1763 }, { -34, 0, -1763 }, { -34, 0, -1763 }, { -34, 0, -1764 },\n    { -34, 0, -1764 }, { -34, 0, -1764 }, { -34, 0, -1765 }, { -34, 0, -1765 }, { -34, 0, -1766 },\n    { -34, 0, -1766 }, { -34, 0, -1767 }, { -34, 0, -1767 }, { -34, 0, -1768 }, { -34, 0, -1769 },\n    { -34, 0, -1769 }, { -34, 0, -1770 }, { -34, 0, -1770 }, { -34, 0, -1771 }, { -34, 0, -1771 },\n    { -34, 0, -1772 }, { -34, 0, -1773 }, { -34, 0, -1773 }, { -34, 0, -1774 }, { -34, 0, -1774 },\n    { -34, 0, -1775 }, { -34, 0, -1775 }, { -34, 0, -1775 }, { -34, 0, -1776 }, { -34, 0, -1776 },\n    { -34, 0, -1776 }, { -34, 0, -1777 }, { -34, 0, -1777 }, { -34, 0, -1777 }, { -34, 0, -1777 },\n    { -34, 0, -1777 },\n};\n\nstruct AnimDataInfo anim_mario_eyebrows_4[] = {\n    { ARRAY_COUNT(animdata_mario_eyebrows_4_1), GD_ANIM_ROT3S, animdata_mario_eyebrows_4_1 },\n    { ARRAY_COUNT(animdata_mario_eyebrows_4_2), GD_ANIM_ROT3S, animdata_mario_eyebrows_4_2 },\n    END_ANIMDATA_INFO_ARR,\n};\n\nstatic s16 animdata_mario_eyebrows_5_1[][3] = {\n    { 108, 0, 1775 },   { 108, 0, 1774 },   { 108, 0, 1774 },   { 107, 0, 1773 },   { 107, 0, 1771 },\n    { 106, 0, 1770 },   { 105, 1, 1768 },   { 104, 1, 1766 },   { 103, 1, 1764 },   { 103, 2, 1763 },\n    { 102, 2, 1761 },   { 101, 2, 1760 },   { 101, 3, 1759 },   { 100, 3, 1758 },   { 100, 3, 1758 },\n    { 100, 3, 1758 },   { 101, 2, 1759 },   { 101, 2, 1760 },   { 103, 2, 1763 },   { 104, 1, 1766 },\n    { 106, 0, 1770 },   { 108, 0, 1775 },   { 120, -4, 1799 },  { 143, -13, 1845 }, { 164, -21, 1890 },\n    { 174, -25, 1910 }, { 173, -25, 1908 }, { 170, -24, 1902 }, { 166, -22, 1894 }, { 161, -20, 1883 },\n    { 155, -18, 1870 }, { 148, -15, 1856 }, { 141, -12, 1842 }, { 134, -10, 1827 }, { 127, -7, 1813 },\n    { 121, -4, 1800 },  { 115, -2, 1789 },  { 111, -1, 1780 },  { 108, 0, 1775 },   { 107, 0, 1771 },\n    { 105, 1, 1767 },   { 104, 1, 1765 },   { 103, 2, 1763 },   { 103, 2, 1761 },   { 103, 2, 1760 },\n    { 103, 2, 1759 },   { 103, 2, 1759 },   { 103, 2, 1759 },   { 104, 2, 1760 },   { 104, 2, 1760 },\n    { 105, 2, 1762 },   { 106, 2, 1763 },   { 106, 1, 1765 },   { 107, 1, 1766 },   { 108, 1, 1768 },\n    { 108, 0, 1770 },   { 108, 0, 1772 },   { 108, 0, 1775 },   { 108, -1, 1784 },  { 108, -5, 1801 },\n    { 108, -8, 1818 },  { 108, -9, 1825 },  { 108, -8, 1821 },  { 108, -6, 1811 },  { 108, -4, 1798 },\n    { 108, -1, 1785 },  { 108, 0, 1775 },   { 108, 0, 1773 },   { 108, 0, 1775 },   { 108, 0, 1775 },\n    { 108, 0, 1774 },   { 108, 0, 1774 },   { 108, 0, 1774 },   { 108, 0, 1774 },   { 108, 0, 1773 },\n    { 108, 0, 1773 },   { 108, 0, 1773 },   { 108, 0, 1773 },   { 108, 0, 1772 },   { 108, 0, 1772 },\n    { 108, 0, 1772 },   { 108, 0, 1772 },   { 108, 0, 1772 },   { 108, 0, 1772 },   { 108, 0, 1772 },\n    { 108, 0, 1773 },   { 108, 0, 1773 },   { 108, 0, 1774 },   { 108, 0, 1775 },   { 108, 0, 1777 },\n    { 108, -1, 1783 },  { 108, -2, 1789 },  { 108, -3, 1794 },  { 108, -4, 1797 },  { 108, -4, 1798 },\n    { 108, -4, 1799 },  { 108, -4, 1800 },  { 108, -4, 1800 },  { 108, -4, 1801 },  { 108, -5, 1801 },\n    { 108, -5, 1801 },  { 108, -5, 1801 },  { 108, -5, 1801 },  { 108, -5, 1801 },  { 108, -5, 1801 },\n    { 108, -5, 1801 },  { 108, -4, 1801 },  { 108, -4, 1800 },  { 108, -4, 1799 },  { 108, -4, 1799 },\n    { 108, -4, 1798 },  { 108, -4, 1797 },  { 108, -3, 1795 },  { 108, -3, 1791 },  { 108, -2, 1787 },\n    { 108, -1, 1782 },  { 108, 0, 1778 },   { 108, 0, 1775 },   { 108, 0, 1773 },   { 108, 0, 1771 },\n    { 108, 1, 1769 },   { 108, 1, 1768 },   { 108, 1, 1767 },   { 108, 1, 1766 },   { 108, 1, 1765 },\n    { 108, 1, 1764 },   { 108, 2, 1764 },   { 108, 2, 1763 },   { 108, 2, 1763 },   { 108, 2, 1763 },\n    { 108, 2, 1763 },   { 108, 2, 1763 },   { 108, 2, 1764 },   { 108, 2, 1764 },   { 108, 2, 1764 },\n    { 108, 2, 1764 },   { 108, 2, 1764 },   { 108, 2, 1764 },   { 108, 1, 1764 },   { 108, 1, 1765 },\n    { 108, 1, 1765 },   { 108, 1, 1765 },   { 108, 1, 1765 },   { 108, 1, 1765 },   { 108, 1, 1766 },\n    { 108, 1, 1766 },   { 108, 1, 1766 },   { 108, 1, 1767 },   { 108, 1, 1767 },   { 108, 1, 1767 },\n    { 108, 1, 1767 },   { 108, 1, 1768 },   { 108, 1, 1768 },   { 108, 1, 1768 },   { 108, 1, 1769 },\n    { 108, 1, 1769 },   { 108, 1, 1769 },   { 108, 0, 1770 },   { 108, 0, 1770 },   { 108, 0, 1770 },\n    { 108, 0, 1771 },   { 108, 0, 1771 },   { 108, 0, 1771 },   { 108, 0, 1772 },   { 108, 0, 1772 },\n    { 108, 0, 1772 },   { 108, 0, 1772 },   { 108, 0, 1773 },   { 108, 0, 1773 },   { 108, 0, 1773 },\n    { 108, 0, 1774 },   { 108, 0, 1774 },   { 108, 0, 1774 },   { 108, 0, 1774 },   { 108, 0, 1774 },\n    { 108, 0, 1775 },   { 108, 0, 1775 },   { 108, 0, 1775 },   { 108, 0, 1775 },   { 108, 0, 1775 },\n    { 108, 0, 1775 },   { 108, 0, 1775 },   { 108, 0, 1775 },   { 108, 0, 1775 },   { 108, 0, 1775 },\n    { 108, 0, 1775 },   { 108, 0, 1775 },   { 108, 0, 1775 },   { 108, 0, 1775 },   { 108, 0, 1774 },\n    { 108, 0, 1773 },   { 109, 0, 1771 },   { 109, 1, 1768 },   { 109, 1, 1765 },   { 109, 2, 1762 },\n    { 109, 2, 1758 },   { 109, 3, 1755 },   { 110, 4, 1751 },   { 110, 4, 1747 },   { 110, 5, 1743 },\n    { 110, 6, 1740 },   { 110, 6, 1737 },   { 111, 7, 1735 },   { 111, 7, 1733 },   { 111, 7, 1732 },\n    { 111, 7, 1732 },   { 111, 7, 1733 },   { 111, 7, 1735 },   { 110, 6, 1738 },   { 110, 5, 1742 },\n    { 110, 4, 1748 },   { 109, 3, 1755 },   { 109, 1, 1764 },   { 108, 0, 1775 },   { 106, -7, 1818 },\n    { 101, -23, 1904 }, { 96, -41, 2003 },  { 91, -55, 2085 },  { 89, -62, 2119 },  { 90, -59, 2107 },\n    { 92, -53, 2073 },  { 94, -45, 2025 },  { 97, -34, 1968 },  { 101, -23, 1908 }, { 104, -13, 1852 },\n    { 107, -5, 1805 },  { 108, 0, 1775 },   { 109, 2, 1761 },   { 110, 2, 1760 },   { 110, 1, 1767 },\n    { 109, -1, 1779 },  { 109, -3, 1793 },  { 108, -5, 1803 },  { 108, -6, 1808 },  { 108, -6, 1809 },\n    { 108, -6, 1810 },  { 108, -6, 1810 },  { 108, -6, 1811 },  { 108, -6, 1811 },  { 108, -7, 1811 },\n    { 108, -7, 1812 },  { 108, -7, 1812 },  { 108, -7, 1812 },  { 108, -7, 1812 },  { 108, -7, 1812 },\n    { 108, -7, 1813 },  { 108, -7, 1813 },  { 108, -7, 1813 },  { 108, -7, 1813 },  { 108, -7, 1813 },\n    { 108, -7, 1813 },  { 108, -7, 1813 },  { 108, -7, 1812 },  { 108, -7, 1812 },  { 108, -7, 1812 },\n    { 108, -7, 1812 },  { 108, -7, 1812 },  { 108, -7, 1812 },  { 108, -7, 1812 },  { 108, -7, 1811 },\n    { 108, -7, 1811 },  { 108, -6, 1811 },  { 108, -6, 1811 },  { 108, -6, 1811 },  { 108, -6, 1810 },\n    { 108, -6, 1810 },  { 108, -6, 1810 },  { 108, -6, 1810 },  { 108, -6, 1809 },  { 108, -6, 1809 },\n    { 108, -6, 1809 },  { 108, -6, 1809 },  { 108, -6, 1809 },  { 108, -6, 1809 },  { 108, -6, 1809 },\n    { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },\n    { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1807 },\n    { 108, -6, 1807 },  { 108, -6, 1807 },  { 108, -6, 1806 },  { 108, -6, 1806 },  { 108, -6, 1806 },\n    { 108, -5, 1806 },  { 108, -5, 1805 },  { 108, -5, 1805 },  { 108, -5, 1805 },  { 108, -5, 1805 },\n    { 108, -5, 1805 },  { 108, -5, 1805 },  { 108, -5, 1805 },  { 108, -5, 1805 },  { 108, -5, 1806 },\n    { 108, -6, 1806 },  { 108, -6, 1807 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1810 },\n    { 108, -7, 1812 },  { 108, -7, 1814 },  { 108, -8, 1817 },  { 108, -8, 1820 },  { 108, -9, 1824 },\n    { 108, -10, 1828 }, { 108, -10, 1831 }, { 108, -11, 1834 }, { 108, -12, 1837 }, { 108, -12, 1840 },\n    { 108, -12, 1842 }, { 108, -13, 1844 }, { 108, -13, 1845 }, { 108, -13, 1846 }, { 108, -13, 1846 },\n    { 108, -13, 1846 }, { 108, -13, 1844 }, { 108, -12, 1842 }, { 108, -12, 1838 }, { 108, -10, 1832 },\n    { 108, -9, 1824 },  { 108, -8, 1817 },  { 108, -7, 1811 },  { 108, -6, 1808 },  { 108, -6, 1807 },\n    { 108, -6, 1806 },  { 108, -5, 1806 },  { 108, -5, 1805 },  { 108, -5, 1805 },  { 108, -5, 1805 },\n    { 108, -5, 1805 },  { 108, -5, 1805 },  { 108, -5, 1805 },  { 108, -5, 1805 },  { 108, -5, 1805 },\n    { 108, -6, 1806 },  { 108, -6, 1806 },  { 108, -6, 1807 },  { 108, -6, 1807 },  { 108, -6, 1808 },\n    { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },\n    { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },\n    { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },\n    { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },\n    { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },\n    { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },\n    { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },\n    { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },\n    { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },\n    { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1807 },  { 108, -5, 1805 },  { 109, -5, 1801 },\n    { 109, -4, 1797 },  { 109, -3, 1792 },  { 109, -2, 1789 },  { 109, -2, 1786 },  { 109, -2, 1785 },\n    { 109, -2, 1786 },  { 109, -3, 1790 },  { 109, -4, 1797 },  { 108, -6, 1808 },  { 106, -13, 1847 },\n    { 102, -26, 1917 }, { 99, -38, 1984 },  { 97, -44, 2018 },  { 97, -44, 2019 },  { 98, -43, 2013 },\n    { 99, -41, 2000 },  { 100, -38, 1983 }, { 101, -34, 1962 }, { 103, -30, 1941 }, { 104, -27, 1919 },\n    { 105, -23, 1899 }, { 106, -20, 1882 }, { 107, -17, 1864 }, { 108, -13, 1845 }, { 108, -10, 1827 },\n    { 108, -7, 1814 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1807 },  { 108, -6, 1806 },\n    { 108, -5, 1806 },  { 108, -5, 1805 },  { 108, -5, 1804 },  { 108, -5, 1804 },  { 108, -5, 1803 },\n    { 108, -5, 1803 },  { 108, -5, 1802 },  { 108, -5, 1802 },  { 108, -5, 1802 },  { 108, -5, 1801 },\n    { 108, -5, 1801 },  { 108, -4, 1800 },  { 108, -4, 1800 },  { 108, -4, 1800 },  { 108, -4, 1800 },\n    { 108, -4, 1799 },  { 108, -4, 1799 },  { 108, -4, 1799 },  { 108, -4, 1799 },  { 108, -4, 1799 },\n    { 108, -4, 1798 },  { 108, -4, 1798 },  { 108, -4, 1798 },  { 108, -4, 1798 },  { 108, -4, 1798 },\n    { 108, -4, 1798 },  { 108, -4, 1798 },  { 108, -4, 1798 },  { 108, -4, 1798 },  { 108, -4, 1798 },\n    { 108, -4, 1798 },  { 108, -4, 1798 },  { 108, -4, 1798 },  { 108, -4, 1798 },  { 108, -4, 1798 },\n    { 108, -4, 1799 },  { 108, -4, 1799 },  { 108, -4, 1799 },  { 108, -4, 1799 },  { 108, -4, 1799 },\n    { 108, -4, 1799 },  { 108, -4, 1799 },  { 108, -4, 1800 },  { 108, -4, 1800 },  { 108, -4, 1800 },\n    { 108, -4, 1800 },  { 108, -4, 1800 },  { 108, -5, 1801 },  { 108, -5, 1801 },  { 108, -5, 1801 },\n    { 108, -5, 1801 },  { 108, -5, 1802 },  { 108, -5, 1802 },  { 108, -5, 1802 },  { 108, -5, 1802 },\n    { 108, -5, 1802 },  { 108, -5, 1803 },  { 108, -5, 1803 },  { 108, -5, 1803 },  { 108, -5, 1803 },\n    { 108, -5, 1804 },  { 108, -5, 1804 },  { 108, -5, 1804 },  { 108, -5, 1804 },  { 108, -5, 1805 },\n    { 108, -5, 1805 },  { 108, -5, 1805 },  { 108, -5, 1805 },  { 108, -5, 1806 },  { 108, -6, 1806 },\n    { 108, -6, 1806 },  { 108, -6, 1806 },  { 108, -6, 1806 },  { 108, -6, 1807 },  { 108, -6, 1807 },\n    { 108, -6, 1807 },  { 108, -6, 1807 },  { 108, -6, 1807 },  { 108, -6, 1808 },  { 108, -6, 1808 },\n    { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },\n    { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },\n    { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },\n    { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },\n    { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },\n    { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },\n    { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },\n    { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },\n    { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },\n    { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },\n    { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },\n    { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },\n    { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },\n    { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },\n    { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },\n    { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },\n    { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },  { 108, -6, 1808 },\n    { 108, -6, 1809 },  { 108, -6, 1809 },  { 108, -6, 1809 },  { 108, -6, 1809 },  { 108, -6, 1809 },\n    { 108, -6, 1809 },  { 108, -6, 1809 },  { 108, -6, 1810 },  { 108, -6, 1810 },  { 108, -6, 1810 },\n    { 108, -6, 1810 },  { 108, -6, 1810 },  { 108, -6, 1810 },  { 108, -6, 1810 },  { 108, -6, 1810 },\n    { 108, -6, 1810 },  { 108, -6, 1810 },  { 108, -6, 1810 },  { 108, -6, 1810 },  { 108, -6, 1810 },\n    { 108, -6, 1810 },  { 108, -6, 1809 },  { 108, -6, 1809 },  { 108, -6, 1809 },  { 108, -6, 1808 },\n    { 108, -6, 1808 },  { 108, -6, 1807 },  { 108, -6, 1807 },  { 108, -6, 1806 },  { 108, -5, 1806 },\n    { 108, -5, 1805 },  { 108, -5, 1804 },  { 108, -5, 1804 },  { 108, -5, 1803 },  { 108, -5, 1802 },\n    { 108, -5, 1801 },  { 108, -5, 1801 },  { 108, -4, 1800 },  { 108, -4, 1799 },  { 108, -4, 1798 },\n    { 108, -4, 1797 },  { 108, -4, 1797 },  { 108, -4, 1796 },  { 108, -3, 1795 },  { 108, -3, 1794 },\n    { 108, -3, 1793 },  { 108, -3, 1792 },  { 108, -3, 1791 },  { 108, -3, 1790 },  { 108, -2, 1790 },\n    { 108, -2, 1789 },  { 108, -2, 1788 },  { 108, -2, 1787 },  { 108, -2, 1786 },  { 108, -2, 1785 },\n    { 108, -1, 1784 },  { 108, -1, 1784 },  { 108, -1, 1783 },  { 108, -1, 1782 },  { 108, -1, 1781 },\n    { 108, -1, 1780 },  { 108, 0, 1780 },   { 108, 0, 1779 },   { 108, 0, 1778 },   { 108, 0, 1778 },\n    { 108, 0, 1777 },   { 108, 0, 1776 },   { 108, 0, 1776 },   { 108, 0, 1775 },   { 108, 0, 1775 },\n    { 109, 0, 1774 },   { 109, 0, 1774 },   { 110, 0, 1773 },   { 111, 0, 1773 },   { 112, 0, 1772 },\n    { 113, 0, 1772 },   { 114, -1, 1772 },  { 115, -1, 1771 },  { 117, -1, 1771 },  { 118, -2, 1771 },\n    { 118, -2, 1771 },  { 119, -2, 1771 },  { 119, -2, 1771 },  { 119, -2, 1771 },  { 119, -2, 1772 },\n    { 118, -2, 1772 },  { 116, -2, 1773 },  { 114, -1, 1773 },  { 112, 0, 1774 },   { 108, 0, 1775 },\n    { 103, 1, 1776 },   { 95, 3, 1778 },    { 85, 6, 1780 },    { 73, 9, 1783 },    { 60, 12, 1786 },\n    { 47, 16, 1789 },   { 33, 19, 1792 },   { 21, 23, 1795 },   { 10, 25, 1797 },   { 1, 28, 1799 },\n    { -5, 30, 1801 },   { -8, 31, 1802 },   { -10, 31, 1802 },  { -11, 31, 1802 },  { -13, 32, 1803 },\n    { -14, 32, 1803 },  { -15, 32, 1803 },  { -16, 33, 1803 },  { -17, 33, 1804 },  { -18, 33, 1804 },\n    { -19, 33, 1804 },  { -20, 34, 1804 },  { -21, 34, 1804 },  { -21, 34, 1804 },  { -22, 34, 1805 },\n    { -22, 34, 1805 },  { -22, 34, 1805 },  { -22, 34, 1805 },  { -23, 34, 1805 },  { -23, 34, 1805 },\n    { -23, 34, 1805 },  { -23, 34, 1805 },  { -23, 34, 1805 },  { -23, 34, 1805 },  { -22, 34, 1805 },\n    { -22, 34, 1805 },  { -22, 34, 1805 },  { -22, 34, 1805 },  { -21, 34, 1804 },  { -21, 34, 1804 },\n    { -21, 34, 1804 },  { -20, 34, 1804 },  { -20, 33, 1804 },  { -19, 33, 1804 },  { -19, 33, 1804 },\n    { -18, 33, 1804 },  { -18, 33, 1804 },  { -17, 33, 1804 },  { -17, 33, 1803 },  { -16, 33, 1803 },\n    { -15, 32, 1803 },  { -15, 32, 1803 },  { -14, 32, 1803 },  { -14, 32, 1803 },  { -13, 32, 1803 },\n    { -13, 32, 1803 },  { -12, 32, 1802 },  { -12, 31, 1802 },  { -11, 31, 1802 },  { -11, 31, 1802 },\n    { -10, 31, 1802 },  { -10, 31, 1802 },  { -10, 31, 1802 },  { -9, 31, 1802 },   { -9, 31, 1802 },\n    { -9, 31, 1802 },   { -9, 31, 1802 },   { -8, 31, 1802 },   { -8, 31, 1802 },   { -8, 31, 1802 },\n    { -8, 31, 1802 },   { -8, 31, 1802 },   { -8, 31, 1802 },   { -8, 31, 1802 },   { -8, 31, 1802 },\n    { -8, 31, 1802 },   { -8, 31, 1802 },   { -8, 31, 1802 },   { -8, 31, 1802 },   { -8, 31, 1802 },\n    { -8, 31, 1802 },   { -8, 31, 1802 },   { -8, 31, 1802 },   { -8, 31, 1802 },   { -8, 31, 1802 },\n    { -8, 31, 1802 },   { -8, 31, 1802 },   { -8, 31, 1802 },   { -8, 31, 1802 },   { -8, 31, 1802 },\n    { -8, 31, 1802 },   { -8, 31, 1802 },   { -8, 31, 1802 },   { -8, 31, 1802 },   { -8, 31, 1802 },\n    { -8, 31, 1802 },   { -8, 31, 1802 },   { -8, 31, 1802 },   { -8, 31, 1802 },   { -8, 31, 1802 },\n    { -8, 31, 1802 },   { -8, 31, 1802 },   { -8, 31, 1802 },   { -8, 31, 1802 },   { -8, 31, 1802 },\n    { -8, 31, 1802 },   { -8, 31, 1802 },   { -8, 31, 1802 },   { -8, 31, 1802 },   { -8, 31, 1802 },\n    { -8, 31, 1802 },   { -8, 31, 1802 },   { -8, 31, 1802 },   { -8, 31, 1802 },   { -8, 31, 1802 },\n    { -8, 31, 1802 },   { -8, 31, 1802 },   { -8, 31, 1802 },   { -8, 31, 1802 },   { -8, 31, 1802 },\n    { -8, 31, 1802 },   { -8, 31, 1802 },   { -8, 31, 1802 },   { -8, 31, 1802 },   { -8, 31, 1802 },\n    { -8, 31, 1802 },   { -8, 31, 1802 },   { -8, 31, 1802 },   { -11, 31, 1802 },  { -8, 31, 1802 },\n    { 2, 28, 1799 },    { 15, 24, 1796 },   { 30, 20, 1792 },   { 46, 16, 1789 },   { 62, 12, 1785 },\n    { 76, 8, 1782 },    { 89, 5, 1779 },    { 99, 2, 1777 },    { 106, 0, 1775 },   { 108, 0, 1775 },\n};\n\nstruct AnimDataInfo anim_mario_eyebrows_5[] = {\n    { ARRAY_COUNT(animdata_mario_eyebrows_5_1), GD_ANIM_ROT3S, animdata_mario_eyebrows_5_1 },\n    { 0, GD_ANIM_EMPTY, NULL },\n    END_ANIMDATA_INFO_ARR,\n};\n\nstatic s16 animdata_mario_eye_left_1[][3] = {\n    { -68, 2, -974 },     { -68, 1, -974 },     { -68, 0, -974 },     { -68, -2, -974 },\n    { -68, -6, -973 },    { -68, -10, -973 },   { -68, -15, -972 },   { -68, -20, -972 },\n    { -68, -26, -971 },   { -69, -32, -970 },   { -69, -38, -970 },   { -69, -44, -969 },\n    { -69, -50, -968 },   { -69, -56, -968 },   { -69, -61, -967 },   { -69, -66, -966 },\n    { -69, -70, -966 },   { -69, -74, -966 },   { -69, -76, -965 },   { -69, -78, -965 },\n    { -69, -78, -965 },   { -69, -72, -966 },   { -69, -56, -968 },   { -69, -36, -970 },\n    { -69, -16, -973 },   { -68, 0, -975 },     { -68, 7, -976 },     { -68, 9, -976 },\n    { -68, 10, -976 },    { -68, 11, -976 },    { -68, 12, -976 },    { -68, 13, -976 },\n    { -68, 14, -977 },    { -68, 15, -977 },    { -68, 15, -977 },    { -68, 16, -977 },\n    { -68, 16, -977 },    { -68, 16, -977 },    { -68, 16, -977 },    { -68, 16, -977 },\n    { -68, 16, -977 },    { -68, 16, -976 },    { -68, 15, -976 },    { -68, 15, -976 },\n    { -68, 15, -976 },    { -68, 14, -976 },    { -68, 14, -976 },    { -68, 13, -976 },\n    { -68, 12, -976 },    { -68, 12, -976 },    { -68, 11, -976 },    { -68, 10, -975 },\n    { -68, 10, -975 },    { -68, 9, -975 },     { -68, 8, -975 },     { -68, 7, -975 },\n    { -68, 7, -975 },     { -68, 6, -975 },     { -68, 5, -975 },     { -68, 5, -975 },\n    { -68, 4, -974 },     { -68, 4, -974 },     { -68, 3, -974 },     { -68, 3, -974 },\n    { -68, 2, -974 },     { -68, 2, -974 },     { -68, 2, -974 },     { -68, 2, -974 },\n    { -68, 2, -974 },     { -68, 2, -974 },     { -68, 2, -974 },     { -68, 3, -975 },\n    { -68, 4, -975 },     { -68, 5, -975 },     { -68, 6, -976 },     { -68, 7, -976 },\n    { -68, 8, -976 },     { -68, 9, -977 },     { -68, 10, -977 },    { -68, 11, -977 },\n    { -68, 12, -977 },    { -68, 12, -977 },    { -68, 12, -977 },    { -68, 12, -977 },\n    { -68, 11, -977 },    { -68, 9, -977 },     { -68, 7, -976 },     { -68, 5, -975 },\n    { -68, 2, -974 },     { -68, -8, -971 },    { -67, -29, -964 },   { -67, -54, -956 },\n    { -66, -75, -950 },   { -66, -86, -946 },   { -66, -90, -945 },   { -66, -93, -944 },\n    { -66, -96, -943 },   { -66, -98, -942 },   { -66, -100, -942 },  { -66, -102, -941 },\n    { -66, -103, -941 },  { -66, -103, -941 },  { -66, -103, -941 },  { -66, -103, -941 },\n    { -66, -103, -941 },  { -66, -101, -942 },  { -66, -100, -942 },  { -66, -98, -943 },\n    { -66, -96, -943 },   { -66, -93, -944 },   { -66, -90, -945 },   { -66, -86, -946 },\n    { -66, -78, -949 },   { -67, -62, -954 },   { -67, -43, -960 },   { -68, -24, -966 },\n    { -68, -7, -971 },    { -68, 2, -974 },     { -68, 6, -975 },     { -67, 10, -975 },\n    { -66, 13, -974 },    { -64, 15, -972 },    { -63, 16, -970 },    { -62, 16, -968 },\n    { -61, 15, -967 },    { -62, 13, -967 },    { -63, 10, -968 },    { -65, 6, -970 },\n    { -68, 2, -974 },     { -78, -9, -986 },    { -95, -30, -1006 },  { -113, -54, -1029 },\n    { -129, -73, -1048 }, { -136, -82, -1057 }, { -137, -84, -1058 }, { -138, -85, -1059 },\n    { -138, -85, -1059 }, { -138, -86, -1058 }, { -138, -85, -1057 }, { -137, -85, -1055 },\n    { -136, -84, -1054 }, { -134, -83, -1051 }, { -133, -81, -1049 }, { -131, -80, -1046 },\n    { -129, -78, -1043 }, { -127, -75, -1040 }, { -125, -73, -1037 }, { -123, -70, -1034 },\n    { -120, -67, -1032 }, { -118, -64, -1029 }, { -116, -61, -1027 }, { -113, -58, -1024 },\n    { -111, -55, -1023 }, { -109, -51, -1021 }, { -107, -48, -1020 }, { -106, -44, -1020 },\n    { -104, -40, -1020 }, { -102, -33, -1023 }, { -100, -26, -1027 }, { -98, -17, -1031 },\n    { -96, -8, -1036 },   { -94, 0, -1041 },    { -91, 8, -1045 },    { -89, 16, -1049 },\n    { -87, 23, -1052 },   { -85, 29, -1053 },   { -83, 32, -1051 },   { -81, 33, -1047 },\n    { -79, 32, -1040 },   { -77, 28, -1031 },   { -75, 24, -1020 },   { -73, 18, -1008 },\n    { -72, 13, -997 },    { -70, 8, -987 },     { -69, 4, -979 },     { -68, 2, -974 },\n    { -68, 0, -971 },     { -67, 0, -969 },     { -67, 0, -968 },     { -67, 0, -967 },\n    { -67, 0, -967 },     { -67, 0, -968 },     { -67, 0, -969 },     { -67, 0, -970 },\n    { -68, 0, -971 },     { -68, 1, -972 },     { -68, 1, -973 },     { -68, 1, -974 },\n    { -68, 2, -974 },     { -68, 2, -974 },     { -68, 2, -974 },     { -68, 2, -974 },\n    { -68, 2, -974 },     { -68, 1, -975 },     { -68, 1, -975 },     { -68, 1, -975 },\n    { -68, 1, -975 },     { -68, 1, -976 },     { -68, 1, -976 },     { -68, 1, -976 },\n    { -68, 1, -977 },     { -68, 1, -977 },     { -68, 1, -977 },     { -68, 1, -978 },\n    { -68, 1, -978 },     { -68, 1, -978 },     { -68, 1, -979 },     { -68, 1, -979 },\n    { -68, 1, -979 },     { -68, 1, -979 },     { -68, 1, -980 },     { -68, 1, -980 },\n    { -68, 1, -980 },     { -68, 1, -980 },     { -68, 1, -980 },     { -68, 1, -980 },\n    { -68, 1, -980 },     { -68, 1, -980 },     { -68, 1, -979 },     { -68, 1, -979 },\n    { -68, 1, -979 },     { -68, 1, -978 },     { -68, 1, -978 },     { -68, 1, -977 },\n    { -68, 1, -977 },     { -68, 1, -976 },     { -68, 1, -975 },     { -68, 2, -974 },\n    { -68, 2, -970 },     { -68, 3, -963 },     { -68, 4, -953 },     { -68, 5, -943 },\n    { -68, 6, -934 },     { -68, 7, -929 },     { -68, 7, -926 },     { -68, 6, -925 },\n    { -68, 5, -924 },     { -68, 4, -925 },     { -68, 3, -925 },     { -68, 2, -926 },\n    { -68, 3, -927 },     { -68, 4, -928 },     { -68, 7, -929 },     { -68, 12, -929 },\n    { -68, 19, -929 },    { -68, 27, -929 },    { -68, 36, -930 },    { -68, 45, -930 },\n    { -68, 54, -931 },    { -68, 62, -932 },    { -68, 69, -933 },    { -68, 74, -934 },\n    { -69, 77, -935 },    { -69, 78, -938 },    { -69, 78, -941 },    { -69, 77, -943 },\n    { -69, 75, -946 },    { -69, 72, -947 },    { -69, 68, -948 },    { -69, 64, -947 },\n    { -69, 60, -946 },    { -69, 55, -946 },    { -69, 50, -944 },    { -69, 45, -943 },\n    { -69, 40, -942 },    { -69, 35, -941 },    { -69, 30, -939 },    { -68, 24, -938 },\n    { -68, 19, -936 },    { -68, 13, -935 },    { -68, 7, -933 },     { -68, 2, -931 },\n    { -68, -3, -930 },    { -68, -9, -929 },    { -68, -14, -927 },   { -68, -20, -926 },\n    { -68, -26, -925 },   { -68, -32, -924 },   { -68, -37, -923 },   { -68, -43, -923 },\n    { -68, -50, -922 },   { -68, -57, -922 },   { -68, -64, -922 },   { -68, -72, -922 },\n    { -68, -79, -922 },   { -68, -87, -922 },   { -68, -94, -922 },   { -68, -101, -922 },\n    { -68, -108, -923 },  { -68, -114, -923 },  { -68, -119, -923 },  { -68, -124, -923 },\n    { -68, -127, -924 },  { -68, -130, -924 },  { -68, -131, -923 },  { -69, -129, -921 },\n    { -69, -126, -918 },  { -69, -122, -915 },  { -69, -117, -912 },  { -69, -111, -911 },\n    { -69, -105, -910 },  { -69, -99, -912 },   { -69, -94, -916 },   { -69, -89, -923 },\n    { -69, -86, -933 },   { -69, -82, -946 },   { -68, -78, -961 },   { -68, -74, -978 },\n    { -68, -70, -996 },   { -68, -67, -1015 },  { -68, -63, -1034 },  { -67, -60, -1053 },\n    { -67, -57, -1071 },  { -67, -54, -1087 },  { -67, -51, -1101 },  { -67, -49, -1112 },\n    { -67, -48, -1121 },  { -67, -48, -1128 },  { -67, -50, -1132 },  { -67, -51, -1133 },\n    { -67, -52, -1131 },  { -67, -52, -1124 },  { -67, -49, -1112 },  { -67, -41, -1090 },\n    { -67, -28, -1055 },  { -68, -14, -1015 },  { -68, -1, -976 },    { -68, 7, -945 },\n    { -68, 7, -929 },     { -68, 2, -923 },     { -67, -4, -919 },    { -67, -12, -917 },\n    { -67, -21, -916 },   { -66, -30, -916 },   { -66, -40, -917 },   { -65, -51, -920 },\n    { -65, -62, -923 },   { -65, -74, -926 },   { -64, -85, -930 },   { -64, -96, -934 },\n    { -63, -108, -938 },  { -63, -118, -942 },  { -63, -128, -946 },  { -63, -138, -949 },\n    { -62, -146, -952 },  { -62, -154, -954 },  { -62, -160, -954 },  { -63, -161, -953 },\n    { -64, -153, -949 },  { -66, -141, -943 },  { -67, -130, -938 },  { -68, -124, -935 },\n    { -68, -121, -933 },  { -69, -120, -931 },  { -69, -119, -929 },  { -69, -119, -927 },\n    { -69, -119, -925 },  { -69, -119, -923 },  { -69, -119, -921 },  { -69, -119, -920 },\n    { -69, -119, -919 },  { -69, -119, -917 },  { -69, -118, -916 },  { -69, -116, -916 },\n    { -69, -114, -915 },  { -69, -110, -915 },  { -69, -106, -915 },  { -69, -99, -915 },\n    { -69, -90, -917 },   { -68, -80, -919 },   { -68, -68, -922 },   { -67, -55, -924 },\n    { -67, -41, -928 },   { -66, -28, -931 },   { -66, -16, -934 },   { -65, -5, -936 },\n    { -65, 4, -939 },     { -64, 11, -940 },    { -64, 17, -940 },    { -64, 20, -938 },\n    { -64, 21, -934 },    { -64, 21, -931 },    { -64, 20, -928 },    { -64, 17, -929 },\n    { -64, 15, -932 },    { -64, 11, -940 },    { -64, 6, -958 },     { -64, -1, -986 },\n    { -64, -11, -1018 },  { -63, -21, -1050 },  { -63, -29, -1077 },  { -63, -34, -1092 },\n    { -63, -36, -1099 },  { -63, -37, -1103 },  { -63, -38, -1105 },  { -63, -38, -1105 },\n    { -63, -37, -1103 },  { -63, -36, -1101 },  { -63, -35, -1098 },  { -63, -34, -1095 },\n    { -63, -34, -1092 },  { -63, -33, -1091 },  { -63, -33, -1091 },  { -63, -34, -1092 },\n    { -62, -43, -1121 },  { -62, -50, -1135 },  { -62, -43, -1092 },  { -62, -31, -1030 },\n    { -62, -19, -971 },   { -62, -11, -938 },   { -62, -8, -926 },    { -63, -4, -917 },\n    { -64, -1, -911 },    { -65, 1, -906 },     { -65, 4, -904 },     { -66, 7, -903 },\n    { -67, 8, -905 },     { -68, 10, -907 },    { -68, 10, -911 },    { -68, 10, -916 },\n    { -68, 9, -922 },     { -68, 7, -929 },     { -67, 4, -937 },     { -66, 0, -948 },\n    { -64, -6, -962 },    { -63, -13, -977 },   { -61, -20, -993 },   { -59, -28, -1011 },\n    { -57, -36, -1028 },  { -54, -44, -1045 },  { -52, -51, -1062 },  { -51, -58, -1077 },\n    { -49, -65, -1091 },  { -48, -70, -1102 },  { -47, -74, -1110 },  { -46, -77, -1117 },\n    { -45, -78, -1122 },  { -45, -80, -1127 },  { -44, -80, -1130 },  { -44, -81, -1132 },\n    { -44, -80, -1133 },  { -44, -80, -1133 },  { -44, -79, -1132 },  { -44, -78, -1130 },\n    { -45, -77, -1127 },  { -45, -76, -1122 },  { -46, -75, -1117 },  { -47, -74, -1110 },\n    { -48, -73, -1101 },  { -49, -71, -1086 },  { -51, -70, -1069 },  { -54, -68, -1049 },\n    { -56, -66, -1028 },  { -59, -63, -1007 },  { -61, -61, -987 },   { -63, -60, -969 },\n    { -65, -58, -954 },   { -66, -57, -943 },   { -66, -57, -938 },   { -66, -57, -938 },\n    { -66, -57, -941 },   { -65, -58, -946 },   { -64, -59, -954 },   { -63, -60, -964 },\n    { -62, -61, -975 },   { -60, -63, -987 },   { -59, -64, -999 },   { -57, -66, -1011 },\n    { -56, -67, -1023 },  { -55, -68, -1033 },  { -54, -69, -1042 },  { -53, -69, -1049 },\n    { -53, -69, -1054 },  { -53, -68, -1055 },  { -56, -65, -1043 },  { -61, -58, -1015 },\n    { -68, -50, -981 },   { -74, -44, -951 },   { -77, -40, -935 },   { -77, -39, -931 },\n    { -78, -38, -927 },   { -79, -38, -923 },   { -79, -37, -920 },   { -80, -36, -917 },\n    { -80, -36, -915 },   { -80, -35, -913 },   { -80, -35, -911 },   { -81, -35, -910 },\n    { -81, -35, -908 },   { -81, -35, -907 },   { -81, -34, -907 },   { -81, -34, -906 },\n    { -81, -34, -906 },   { -81, -35, -905 },   { -80, -35, -905 },   { -80, -35, -905 },\n    { -80, -35, -905 },   { -80, -35, -906 },   { -80, -35, -906 },   { -80, -35, -906 },\n    { -80, -35, -907 },   { -79, -35, -907 },   { -79, -36, -907 },   { -79, -36, -907 },\n    { -79, -36, -907 },   { -79, -36, -907 },   { -79, -36, -908 },   { -79, -36, -911 },\n    { -79, -37, -914 },   { -78, -37, -918 },   { -78, -38, -922 },   { -77, -39, -926 },\n    { -77, -39, -930 },   { -77, -40, -933 },   { -77, -40, -935 },   { -77, -40, -936 },\n    { -77, -40, -937 },   { -76, -40, -937 },   { -76, -40, -938 },   { -76, -40, -938 },\n    { -76, -40, -938 },   { -77, -40, -937 },   { -77, -40, -937 },   { -77, -40, -937 },\n    { -77, -40, -936 },   { -77, -40, -936 },   { -77, -40, -935 },   { -77, -40, -935 },\n    { -77, -40, -935 },   { -77, -40, -935 },   { -77, -40, -935 },   { -77, -40, -935 },\n    { -77, -40, -935 },   { -77, -40, -935 },   { -77, -40, -935 },   { -77, -40, -935 },\n    { -77, -40, -935 },   { -77, -40, -935 },   { -77, -40, -935 },   { -77, -40, -935 },\n    { -77, -40, -935 },   { -77, -40, -935 },   { -77, -40, -935 },   { -77, -40, -935 },\n    { -77, -40, -935 },   { -77, -40, -935 },   { -77, -40, -935 },   { -77, -40, -935 },\n    { -77, -40, -935 },   { -77, -40, -935 },   { -77, -40, -935 },   { -77, -40, -935 },\n    { -77, -40, -935 },   { -77, -40, -935 },   { -77, -40, -935 },   { -77, -40, -935 },\n    { -77, -40, -935 },   { -77, -40, -935 },   { -77, -40, -935 },   { -77, -40, -935 },\n    { -77, -40, -935 },   { -77, -40, -935 },   { -77, -40, -935 },   { -77, -40, -935 },\n    { -77, -40, -935 },   { -77, -40, -935 },   { -77, -40, -935 },   { -77, -40, -935 },\n    { -77, -40, -935 },   { -77, -40, -935 },   { -77, -40, -935 },   { -77, -40, -935 },\n    { -77, -40, -935 },   { -77, -40, -935 },   { -77, -40, -935 },   { -77, -40, -935 },\n    { -77, -40, -935 },   { -77, -40, -935 },   { -77, -40, -935 },   { -77, -40, -935 },\n    { -77, -40, -935 },   { -77, -40, -935 },   { -77, -40, -935 },   { -77, -40, -935 },\n    { -77, -40, -935 },   { -77, -40, -935 },   { -77, -40, -935 },   { -77, -40, -935 },\n    { -77, -40, -935 },   { -77, -40, -935 },   { -77, -40, -935 },   { -77, -40, -935 },\n    { -77, -41, -935 },   { -77, -41, -934 },   { -77, -41, -934 },   { -77, -41, -934 },\n    { -77, -41, -934 },   { -77, -42, -934 },   { -77, -42, -934 },   { -77, -42, -933 },\n    { -77, -42, -933 },   { -77, -42, -933 },   { -77, -42, -933 },   { -77, -42, -933 },\n    { -77, -42, -933 },   { -77, -42, -933 },   { -77, -42, -933 },   { -77, -42, -933 },\n    { -77, -42, -933 },   { -77, -42, -933 },   { -77, -42, -934 },   { -77, -41, -934 },\n    { -77, -41, -934 },   { -77, -41, -935 },   { -77, -40, -935 },   { -77, -39, -936 },\n    { -76, -39, -936 },   { -76, -38, -937 },   { -76, -37, -938 },   { -76, -37, -938 },\n    { -76, -36, -939 },   { -76, -35, -940 },   { -76, -34, -941 },   { -75, -33, -941 },\n    { -75, -32, -942 },   { -75, -31, -943 },   { -75, -30, -944 },   { -75, -29, -945 },\n    { -74, -28, -946 },   { -74, -27, -947 },   { -74, -26, -948 },   { -74, -25, -949 },\n    { -74, -24, -950 },   { -73, -23, -951 },   { -73, -22, -952 },   { -73, -21, -953 },\n    { -73, -20, -954 },   { -72, -19, -955 },   { -72, -17, -956 },   { -72, -16, -957 },\n    { -72, -15, -958 },   { -72, -14, -959 },   { -71, -13, -960 },   { -71, -12, -961 },\n    { -71, -11, -962 },   { -71, -10, -963 },   { -70, -9, -964 },    { -70, -8, -965 },\n    { -70, -7, -966 },    { -70, -6, -966 },    { -70, -5, -967 },    { -70, -4, -968 },\n    { -69, -3, -969 },    { -69, -2, -970 },    { -69, -1, -971 },    { -69, 0, -971 },\n    { -69, 0, -972 },     { -69, 0, -973 },     { -68, 1, -973 },     { -68, 2, -974 },\n    { -68, 2, -975 },     { -68, 3, -975 },     { -68, 3, -976 },     { -68, 4, -977 },\n    { -68, 4, -977 },     { -68, 5, -978 },     { -68, 5, -978 },     { -68, 6, -979 },\n    { -68, 6, -979 },     { -68, 6, -979 },     { -68, 6, -979 },     { -68, 6, -979 },\n    { -68, 6, -979 },     { -68, 6, -979 },     { -68, 5, -979 },     { -68, 5, -978 },\n    { -68, 4, -977 },     { -68, 3, -976 },     { -68, 3, -975 },     { -68, 2, -974 },\n    { -68, 0, -972 },     { -68, -1, -969 },    { -68, -4, -965 },    { -68, -8, -961 },\n    { -68, -12, -956 },   { -68, -16, -951 },   { -68, -20, -946 },   { -68, -23, -941 },\n    { -68, -27, -937 },   { -68, -29, -933 },   { -68, -31, -931 },   { -68, -32, -930 },\n    { -68, -33, -929 },   { -68, -33, -928 },   { -68, -34, -928 },   { -68, -34, -927 },\n    { -68, -35, -927 },   { -68, -35, -926 },   { -68, -35, -926 },   { -68, -35, -926 },\n    { -68, -36, -925 },   { -68, -36, -925 },   { -68, -36, -925 },   { -68, -36, -925 },\n    { -68, -36, -925 },   { -68, -37, -924 },   { -68, -37, -924 },   { -68, -37, -924 },\n    { -68, -37, -924 },   { -68, -37, -924 },   { -68, -37, -924 },   { -68, -37, -924 },\n    { -68, -37, -924 },   { -68, -37, -924 },   { -68, -37, -924 },   { -68, -37, -924 },\n    { -68, -37, -924 },   { -68, -36, -924 },   { -68, -36, -925 },   { -68, -36, -925 },\n    { -68, -36, -925 },   { -68, -36, -925 },   { -68, -36, -925 },   { -68, -36, -925 },\n    { -68, -36, -926 },   { -68, -35, -926 },   { -68, -35, -926 },   { -68, -35, -926 },\n    { -68, -35, -926 },   { -68, -35, -927 },   { -68, -35, -927 },   { -68, -34, -927 },\n    { -68, -34, -927 },   { -68, -34, -927 },   { -68, -34, -928 },   { -68, -34, -928 },\n    { -68, -34, -928 },   { -68, -33, -928 },   { -68, -33, -928 },   { -68, -33, -929 },\n    { -68, -33, -929 },   { -68, -33, -929 },   { -68, -33, -929 },   { -68, -33, -929 },\n    { -68, -33, -929 },   { -68, -33, -929 },   { -68, -33, -929 },   { -68, -33, -929 },\n    { -68, -32, -929 },   { -68, -32, -930 },   { -68, -32, -930 },   { -68, -32, -930 },\n    { -68, -32, -930 },   { -68, -32, -930 },   { -68, -32, -930 },   { -68, -32, -930 },\n    { -68, -32, -930 },   { -68, -32, -930 },   { -68, -32, -930 },   { -68, -32, -930 },\n    { -68, -32, -930 },   { -68, -32, -930 },   { -68, -32, -930 },   { -68, -32, -930 },\n    { -68, -32, -930 },   { -68, -32, -930 },   { -68, -32, -930 },   { -68, -32, -930 },\n    { -68, -32, -930 },   { -68, -32, -930 },   { -68, -32, -930 },   { -68, -32, -930 },\n    { -68, -32, -930 },   { -68, -32, -930 },   { -68, -32, -930 },   { -68, -32, -930 },\n    { -68, -32, -930 },   { -68, -32, -930 },   { -68, -32, -930 },   { -68, -32, -930 },\n    { -68, -32, -930 },   { -68, -32, -930 },   { -68, -32, -930 },   { -68, -32, -930 },\n    { -68, -32, -930 },   { -68, -32, -930 },   { -68, -32, -930 },   { -68, -32, -930 },\n    { -68, -32, -930 },   { -68, -32, -930 },   { -68, -32, -930 },   { -68, -32, -930 },\n    { -68, -32, -930 },   { -68, -32, -930 },   { -68, -32, -930 },   { -68, -32, -930 },\n    { -68, -32, -930 },   { -68, -32, -930 },   { -68, -32, -930 },   { -68, -32, -930 },\n    { -68, -32, -930 },   { -68, -32, -930 },   { -68, -32, -930 },   { -68, -32, -930 },\n    { -68, -32, -930 },   { -68, -32, -930 },   { -68, -32, -930 },   { -68, -32, -930 },\n    { -68, -33, -929 },   { -68, -32, -930 },   { -68, -29, -934 },   { -68, -25, -939 },\n    { -68, -21, -945 },   { -68, -16, -951 },   { -68, -11, -956 },   { -68, -7, -962 },\n    { -68, -3, -967 },    { -68, 0, -971 },     { -68, 1, -973 },     { -68, 2, -974 },\n};\n\nstatic s16 animdata_mario_eye_left_2[][3] = {\n    { -69, -86, -946 }, { -69, -86, -946 }, { -69, -83, -946 }, { -69, -79, -947 }, { -69, -73, -948 },\n    { -69, -67, -949 }, { -69, -59, -950 }, { -69, -50, -951 }, { -69, -41, -952 }, { -69, -31, -953 },\n    { -69, -20, -955 }, { -69, -9, -956 },  { -69, 1, -958 },   { -69, 12, -959 },  { -69, 24, -961 },\n    { -69, 34, -962 },  { -69, 45, -963 },  { -69, 55, -965 },  { -69, 65, -966 },  { -69, 73, -967 },\n    { -69, 81, -968 },  { -69, 88, -969 },  { -69, 93, -970 },  { -69, 97, -970 },  { -69, 100, -971 },\n    { -69, 101, -971 }, { -70, 81, -968 },  { -70, 35, -963 },  { -70, -19, -956 }, { -69, -66, -950 },\n    { -69, -86, -946 }, { -68, -75, -945 }, { -67, -43, -945 }, { -65, -1, -946 },  { -64, 40, -947 },\n    { -63, 72, -948 },  { -63, 85, -949 },  { -63, 78, -949 },  { -64, 58, -948 },  { -65, 31, -948 },\n    { -66, 0, -947 },   { -67, -32, -947 }, { -68, -59, -946 }, { -69, -79, -946 }, { -69, -86, -946 },\n    { -69, -68, -946 }, { -68, -26, -945 }, { -67, 25, -945 },  { -66, 69, -945 },  { -65, 89, -945 },\n    { -65, 80, -945 },  { -65, 54, -946 },  { -64, 19, -947 },  { -64, -16, -948 }, { -64, -44, -949 },\n    { -63, -57, -949 }, { -63, -51, -950 }, { -63, -33, -950 }, { -63, -7, -951 },  { -62, 21, -951 },\n    { -62, 48, -951 },  { -62, 71, -952 },  { -62, 73, -953 },  { -62, 73, -953 },  { -62, 73, -953 },\n    { -62, 73, -953 },  { -62, 73, -953 },  { -62, 73, -953 },  { -62, 73, -953 },  { -62, 73, -953 },\n    { -62, 73, -953 },  { -62, 73, -953 },  { -62, 74, -952 },  { -62, 74, -952 },  { -62, 74, -952 },\n    { -62, 74, -952 },  { -62, 74, -952 },  { -62, 75, -952 },  { -62, 75, -952 },  { -62, 75, -952 },\n    { -62, 75, -952 },  { -62, 75, -952 },  { -62, 76, -952 },  { -62, 76, -952 },  { -62, 76, -952 },\n    { -62, 76, -952 },  { -62, 77, -952 },  { -62, 77, -952 },  { -62, 77, -951 },  { -62, 77, -951 },\n    { -62, 77, -951 },  { -62, 78, -951 },  { -62, 78, -951 },  { -62, 78, -951 },  { -62, 78, -951 },\n    { -62, 78, -951 },  { -62, 79, -951 },  { -62, 79, -951 },  { -62, 79, -951 },  { -62, 79, -951 },\n    { -62, 79, -951 },  { -62, 79, -951 },  { -62, 79, -951 },  { -62, 79, -951 },  { -62, 79, -951 },\n    { -62, 79, -951 },  { -62, 79, -951 },  { -62, 79, -951 },  { -62, 79, -951 },  { -62, 79, -951 },\n    { -62, 79, -951 },  { -62, 79, -951 },  { -62, 79, -951 },  { -62, 79, -951 },  { -62, 79, -951 },\n    { -62, 79, -951 },  { -62, 78, -951 },  { -62, 78, -951 },  { -62, 78, -951 },  { -62, 78, -951 },\n    { -62, 77, -951 },  { -62, 77, -951 },  { -62, 76, -951 },  { -62, 76, -952 },  { -62, 75, -952 },\n    { -62, 75, -952 },  { -62, 74, -952 },  { -62, 74, -952 },  { -62, 73, -952 },  { -62, 73, -953 },\n    { -62, 72, -953 },  { -62, 71, -953 },  { -62, 69, -954 },  { -63, 68, -954 },  { -63, 66, -955 },\n    { -63, 64, -955 },  { -63, 62, -956 },  { -63, 60, -956 },  { -63, 58, -957 },  { -64, 56, -958 },\n    { -64, 53, -959 },  { -64, 50, -959 },  { -64, 48, -960 },  { -64, 45, -961 },  { -65, 42, -962 },\n    { -65, 40, -963 },  { -65, 37, -963 },  { -65, 34, -964 },  { -66, 31, -965 },  { -66, 28, -966 },\n    { -66, 26, -967 },  { -66, 23, -968 },  { -67, 21, -968 },  { -67, 18, -969 },  { -67, 16, -970 },\n    { -67, 14, -970 },  { -67, 11, -971 },  { -68, 10, -972 },  { -68, 8, -972 },   { -68, 6, -973 },\n    { -68, 5, -973 },   { -68, 4, -973 },   { -68, 3, -974 },   { -68, 2, -974 },   { -68, 2, -974 },\n    { -68, 2, -974 },\n};\n\nstruct AnimDataInfo anim_mario_eye_left[] = {\n    { ARRAY_COUNT(animdata_mario_eye_left_1), GD_ANIM_ROT3S, animdata_mario_eye_left_1 },\n    { ARRAY_COUNT(animdata_mario_eye_left_2), GD_ANIM_ROT3S, animdata_mario_eye_left_2 },\n    END_ANIMDATA_INFO_ARR,\n};\n\nstatic s16 animdata_mario_eye_right_1[][3] = {\n    { 1844, -1788, 824 }, { 1844, -1789, 824 }, { 1844, -1791, 825 }, { 1844, -1794, 825 },\n    { 1844, -1797, 826 }, { 1844, -1802, 826 }, { 1844, -1807, 827 }, { 1844, -1813, 828 },\n    { 1844, -1819, 829 }, { 1845, -1826, 829 }, { 1845, -1832, 830 }, { 1845, -1839, 831 },\n    { 1845, -1845, 832 }, { 1845, -1851, 833 }, { 1845, -1857, 834 }, { 1845, -1862, 835 },\n    { 1845, -1866, 836 }, { 1845, -1870, 836 }, { 1845, -1873, 837 }, { 1845, -1874, 838 },\n    { 1845, -1875, 838 }, { 1845, -1868, 838 }, { 1845, -1851, 837 }, { 1845, -1830, 835 },\n    { 1844, -1808, 834 }, { 1844, -1791, 832 }, { 1844, -1783, 832 }, { 1844, -1781, 831 },\n    { 1844, -1779, 831 }, { 1844, -1778, 831 }, { 1844, -1777, 830 }, { 1844, -1776, 830 },\n    { 1844, -1775, 830 }, { 1844, -1774, 830 }, { 1844, -1774, 829 }, { 1844, -1773, 829 },\n    { 1844, -1773, 829 }, { 1844, -1773, 829 }, { 1844, -1773, 828 }, { 1844, -1773, 828 },\n    { 1844, -1773, 828 }, { 1844, -1773, 828 }, { 1844, -1773, 827 }, { 1844, -1774, 827 },\n    { 1844, -1774, 827 }, { 1844, -1775, 827 }, { 1844, -1775, 827 }, { 1844, -1776, 826 },\n    { 1844, -1777, 826 }, { 1844, -1777, 826 }, { 1844, -1778, 826 }, { 1844, -1779, 826 },\n    { 1844, -1780, 826 }, { 1844, -1780, 825 }, { 1844, -1781, 825 }, { 1844, -1782, 825 },\n    { 1844, -1783, 825 }, { 1844, -1784, 825 }, { 1844, -1784, 825 }, { 1844, -1785, 825 },\n    { 1844, -1786, 825 }, { 1844, -1786, 825 }, { 1844, -1787, 825 }, { 1844, -1787, 824 },\n    { 1844, -1788, 824 }, { 1844, -1788, 824 }, { 1844, -1788, 824 }, { 1844, -1788, 824 },\n    { 1844, -1788, 824 }, { 1844, -1788, 825 }, { 1844, -1788, 825 }, { 1844, -1787, 826 },\n    { 1844, -1786, 827 }, { 1844, -1785, 829 }, { 1844, -1784, 830 }, { 1844, -1782, 832 },\n    { 1844, -1781, 833 }, { 1844, -1780, 835 }, { 1844, -1779, 836 }, { 1844, -1778, 837 },\n    { 1844, -1777, 838 }, { 1844, -1777, 838 }, { 1844, -1777, 838 }, { 1844, -1778, 838 },\n    { 1844, -1779, 837 }, { 1844, -1780, 835 }, { 1844, -1782, 832 }, { 1844, -1785, 829 },\n    { 1844, -1788, 824 }, { 1844, -1800, 810 }, { 1844, -1823, 782 }, { 1844, -1849, 749 },\n    { 1844, -1872, 720 }, { 1843, -1884, 705 }, { 1843, -1888, 701 }, { 1843, -1891, 696 },\n    { 1843, -1894, 693 }, { 1843, -1897, 689 }, { 1843, -1899, 687 }, { 1843, -1900, 685 },\n    { 1843, -1902, 684 }, { 1843, -1902, 683 }, { 1843, -1902, 683 }, { 1843, -1902, 683 },\n    { 1843, -1901, 684 }, { 1843, -1900, 685 }, { 1843, -1899, 687 }, { 1843, -1897, 690 },\n    { 1843, -1894, 693 }, { 1843, -1891, 697 }, { 1843, -1888, 701 }, { 1843, -1884, 705 },\n    { 1844, -1875, 717 }, { 1844, -1858, 738 }, { 1844, -1837, 763 }, { 1844, -1816, 789 },\n    { 1844, -1799, 811 }, { 1844, -1788, 824 }, { 1844, -1783, 830 }, { 1844, -1779, 834 },\n    { 1844, -1776, 835 }, { 1844, -1774, 835 }, { 1844, -1773, 834 }, { 1844, -1773, 832 },\n    { 1844, -1774, 830 }, { 1844, -1776, 828 }, { 1844, -1779, 826 }, { 1844, -1783, 825 },\n    { 1844, -1788, 824 }, { 1844, -1801, 825 }, { 1844, -1824, 827 }, { 1845, -1849, 829 },\n    { 1845, -1870, 831 }, { 1845, -1880, 832 }, { 1845, -1881, 832 }, { 1845, -1882, 832 },\n    { 1845, -1883, 832 }, { 1845, -1883, 831 }, { 1845, -1883, 831 }, { 1845, -1882, 831 },\n    { 1845, -1881, 830 }, { 1845, -1880, 830 }, { 1845, -1878, 830 }, { 1845, -1876, 829 },\n    { 1845, -1874, 829 }, { 1845, -1871, 828 }, { 1845, -1869, 828 }, { 1845, -1866, 828 },\n    { 1845, -1863, 827 }, { 1845, -1859, 827 }, { 1845, -1856, 827 }, { 1845, -1853, 827 },\n    { 1845, -1849, 827 }, { 1845, -1846, 827 }, { 1845, -1842, 828 }, { 1845, -1839, 828 },\n    { 1844, -1834, 829 }, { 1844, -1829, 831 }, { 1844, -1822, 834 }, { 1844, -1814, 836 },\n    { 1844, -1805, 839 }, { 1843, -1797, 842 }, { 1843, -1789, 845 }, { 1843, -1781, 848 },\n    { 1843, -1775, 850 }, { 1842, -1770, 851 }, { 1842, -1766, 851 }, { 1842, -1765, 850 },\n    { 1843, -1766, 848 }, { 1843, -1768, 845 }, { 1843, -1771, 841 }, { 1843, -1775, 837 },\n    { 1844, -1780, 833 }, { 1844, -1783, 829 }, { 1844, -1787, 826 }, { 1844, -1788, 824 },\n    { 1844, -1789, 823 }, { 1844, -1790, 823 }, { 1844, -1790, 822 }, { 1845, -1790, 822 },\n    { 1844, -1790, 822 }, { 1844, -1790, 822 }, { 1844, -1790, 823 }, { 1844, -1790, 823 },\n    { 1844, -1789, 823 }, { 1844, -1789, 824 }, { 1844, -1789, 824 }, { 1844, -1788, 824 },\n    { 1844, -1788, 824 }, { 1844, -1788, 824 }, { 1844, -1788, 824 }, { 1844, -1788, 824 },\n    { 1844, -1788, 824 }, { 1844, -1788, 824 }, { 1844, -1788, 823 }, { 1844, -1788, 823 },\n    { 1844, -1788, 823 }, { 1844, -1788, 823 }, { 1844, -1789, 822 }, { 1844, -1789, 822 },\n    { 1844, -1789, 821 }, { 1844, -1789, 821 }, { 1844, -1789, 821 }, { 1844, -1789, 820 },\n    { 1844, -1789, 820 }, { 1844, -1789, 820 }, { 1844, -1789, 819 }, { 1844, -1789, 819 },\n    { 1844, -1789, 819 }, { 1844, -1789, 818 }, { 1844, -1789, 818 }, { 1844, -1789, 818 },\n    { 1844, -1789, 818 }, { 1844, -1789, 818 }, { 1844, -1789, 818 }, { 1844, -1789, 818 },\n    { 1844, -1789, 818 }, { 1844, -1789, 818 }, { 1844, -1789, 818 }, { 1844, -1789, 819 },\n    { 1844, -1789, 819 }, { 1844, -1789, 819 }, { 1844, -1789, 820 }, { 1844, -1789, 821 },\n    { 1844, -1789, 821 }, { 1844, -1789, 822 }, { 1844, -1788, 823 }, { 1844, -1788, 824 },\n    { 1844, -1788, 828 }, { 1844, -1787, 837 }, { 1844, -1786, 848 }, { 1844, -1786, 860 },\n    { 1843, -1785, 870 }, { 1843, -1784, 876 }, { 1843, -1785, 878 }, { 1843, -1785, 880 },\n    { 1843, -1786, 880 }, { 1843, -1788, 880 }, { 1843, -1789, 879 }, { 1843, -1789, 878 },\n    { 1843, -1789, 877 }, { 1843, -1787, 876 }, { 1843, -1784, 876 }, { 1843, -1780, 876 },\n    { 1843, -1773, 878 }, { 1843, -1765, 879 }, { 1843, -1756, 881 }, { 1843, -1746, 883 },\n    { 1843, -1738, 883 }, { 1844, -1729, 883 }, { 1844, -1723, 882 }, { 1844, -1718, 878 },\n    { 1844, -1715, 872 }, { 1845, -1714, 863 }, { 1845, -1715, 851 }, { 1846, -1716, 839 },\n    { 1846, -1719, 827 }, { 1846, -1722, 816 }, { 1846, -1726, 808 }, { 1846, -1731, 801 },\n    { 1846, -1735, 794 }, { 1846, -1740, 788 }, { 1846, -1745, 781 }, { 1846, -1750, 774 },\n    { 1846, -1755, 768 }, { 1845, -1760, 761 }, { 1845, -1765, 755 }, { 1845, -1771, 748 },\n    { 1845, -1776, 742 }, { 1844, -1782, 737 }, { 1844, -1787, 731 }, { 1844, -1793, 725 },\n    { 1844, -1799, 720 }, { 1844, -1804, 715 }, { 1843, -1810, 711 }, { 1843, -1816, 706 },\n    { 1843, -1822, 703 }, { 1843, -1827, 699 }, { 1843, -1833, 696 }, { 1843, -1839, 693 },\n    { 1843, -1845, 690 }, { 1843, -1852, 687 }, { 1843, -1859, 685 }, { 1843, -1866, 683 },\n    { 1843, -1873, 682 }, { 1843, -1880, 681 }, { 1843, -1887, 681 }, { 1843, -1894, 681 },\n    { 1844, -1901, 682 }, { 1844, -1907, 684 }, { 1844, -1912, 687 }, { 1844, -1917, 691 },\n    { 1844, -1921, 697 }, { 1844, -1924, 703 }, { 1844, -1927, 712 }, { 1843, -1927, 726 },\n    { 1843, -1927, 744 }, { 1843, -1926, 763 }, { 1842, -1923, 784 }, { 1842, -1920, 805 },\n    { 1842, -1917, 825 }, { 1842, -1913, 843 }, { 1841, -1909, 857 }, { 1841, -1906, 868 },\n    { 1841, -1902, 874 }, { 1841, -1897, 878 }, { 1841, -1891, 880 }, { 1841, -1886, 881 },\n    { 1842, -1880, 881 }, { 1842, -1873, 879 }, { 1842, -1867, 877 }, { 1842, -1861, 875 },\n    { 1842, -1856, 873 }, { 1842, -1851, 871 }, { 1843, -1846, 869 }, { 1843, -1842, 869 },\n    { 1843, -1840, 869 }, { 1843, -1841, 869 }, { 1843, -1842, 869 }, { 1843, -1844, 869 },\n    { 1843, -1846, 869 }, { 1843, -1845, 869 }, { 1843, -1842, 869 }, { 1843, -1834, 869 },\n    { 1843, -1822, 870 }, { 1843, -1807, 870 }, { 1843, -1794, 871 }, { 1843, -1785, 871 },\n    { 1843, -1785, 870 }, { 1843, -1790, 869 }, { 1843, -1796, 868 }, { 1843, -1804, 867 },\n    { 1842, -1813, 867 }, { 1842, -1822, 866 }, { 1842, -1832, 866 }, { 1842, -1843, 866 },\n    { 1841, -1854, 865 }, { 1841, -1865, 864 }, { 1841, -1877, 863 }, { 1841, -1888, 862 },\n    { 1840, -1899, 860 }, { 1840, -1909, 858 }, { 1839, -1919, 855 }, { 1838, -1928, 852 },\n    { 1838, -1936, 849 }, { 1837, -1943, 844 }, { 1836, -1949, 839 }, { 1834, -1950, 829 },\n    { 1831, -1943, 811 }, { 1827, -1933, 789 }, { 1823, -1922, 767 }, { 1820, -1912, 749 },\n    { 1818, -1907, 739 }, { 1818, -1905, 735 }, { 1817, -1905, 731 }, { 1817, -1905, 728 },\n    { 1816, -1906, 725 }, { 1816, -1908, 724 }, { 1816, -1910, 723 }, { 1816, -1912, 722 },\n    { 1816, -1913, 723 }, { 1816, -1915, 724 }, { 1817, -1915, 726 }, { 1817, -1915, 728 },\n    { 1817, -1914, 731 }, { 1818, -1911, 735 }, { 1818, -1907, 739 }, { 1819, -1900, 745 },\n    { 1820, -1891, 754 }, { 1821, -1880, 764 }, { 1822, -1867, 776 }, { 1823, -1853, 788 },\n    { 1825, -1839, 801 }, { 1826, -1825, 814 }, { 1827, -1811, 826 }, { 1829, -1799, 837 },\n    { 1830, -1789, 847 }, { 1830, -1781, 854 }, { 1831, -1775, 860 }, { 1831, -1772, 865 },\n    { 1831, -1770, 869 }, { 1832, -1770, 871 }, { 1831, -1772, 871 }, { 1831, -1774, 869 },\n    { 1831, -1777, 863 }, { 1830, -1781, 854 }, { 1829, -1786, 836 }, { 1828, -1796, 808 },\n    { 1826, -1806, 775 }, { 1825, -1817, 742 }, { 1823, -1826, 716 }, { 1822, -1831, 700 },\n    { 1822, -1833, 693 }, { 1822, -1834, 689 }, { 1822, -1835, 687 }, { 1822, -1835, 687 },\n    { 1822, -1834, 689 }, { 1822, -1833, 692 }, { 1822, -1832, 695 }, { 1822, -1831, 698 },\n    { 1822, -1830, 700 }, { 1822, -1830, 702 }, { 1822, -1830, 702 }, { 1822, -1831, 700 },\n    { 1821, -1841, 671 }, { 1821, -1848, 656 }, { 1824, -1839, 699 }, { 1829, -1825, 762 },\n    { 1833, -1812, 821 }, { 1836, -1803, 855 }, { 1837, -1799, 867 }, { 1838, -1796, 875 },\n    { 1839, -1792, 881 }, { 1840, -1789, 884 }, { 1841, -1787, 885 }, { 1841, -1785, 884 },\n    { 1842, -1783, 883 }, { 1842, -1782, 881 }, { 1842, -1781, 878 }, { 1843, -1782, 877 },\n    { 1843, -1783, 876 }, { 1843, -1784, 876 }, { 1843, -1787, 877 }, { 1844, -1792, 878 },\n    { 1844, -1797, 878 }, { 1844, -1803, 879 }, { 1844, -1810, 879 }, { 1844, -1817, 880 },\n    { 1844, -1824, 880 }, { 1844, -1831, 880 }, { 1844, -1838, 881 }, { 1843, -1845, 881 },\n    { 1843, -1850, 881 }, { 1843, -1855, 881 }, { 1843, -1859, 881 }, { 1843, -1861, 882 },\n    { 1844, -1863, 884 }, { 1844, -1863, 886 }, { 1844, -1864, 889 }, { 1844, -1864, 891 },\n    { 1845, -1863, 894 }, { 1845, -1862, 896 }, { 1845, -1861, 897 }, { 1845, -1860, 897 },\n    { 1845, -1859, 896 }, { 1845, -1859, 893 }, { 1844, -1858, 888 }, { 1843, -1859, 881 },\n    { 1842, -1859, 871 }, { 1840, -1860, 854 }, { 1838, -1862, 835 }, { 1835, -1863, 812 },\n    { 1833, -1865, 788 }, { 1830, -1866, 765 }, { 1828, -1868, 742 }, { 1825, -1869, 722 },\n    { 1823, -1870, 706 }, { 1822, -1870, 696 }, { 1822, -1870, 691 }, { 1822, -1869, 692 },\n    { 1822, -1868, 695 }, { 1823, -1867, 699 }, { 1823, -1866, 705 }, { 1824, -1865, 713 },\n    { 1825, -1863, 722 }, { 1826, -1862, 732 }, { 1828, -1860, 742 }, { 1829, -1858, 754 },\n    { 1830, -1856, 766 }, { 1832, -1855, 778 }, { 1833, -1853, 790 }, { 1834, -1851, 802 },\n    { 1836, -1850, 813 }, { 1837, -1848, 824 }, { 1838, -1847, 834 }, { 1839, -1846, 844 },\n    { 1840, -1844, 852 }, { 1841, -1843, 858 }, { 1841, -1843, 863 }, { 1842, -1842, 867 },\n    { 1842, -1842, 870 }, { 1843, -1841, 873 }, { 1843, -1841, 876 }, { 1843, -1841, 878 },\n    { 1843, -1840, 880 }, { 1843, -1840, 881 }, { 1844, -1840, 882 }, { 1844, -1840, 883 },\n    { 1844, -1840, 884 }, { 1844, -1840, 884 }, { 1844, -1840, 885 }, { 1844, -1840, 885 },\n    { 1844, -1840, 885 }, { 1844, -1840, 885 }, { 1844, -1840, 884 }, { 1843, -1840, 884 },\n    { 1843, -1840, 883 }, { 1843, -1840, 883 }, { 1843, -1841, 882 }, { 1843, -1841, 882 },\n    { 1843, -1841, 881 }, { 1843, -1841, 881 }, { 1843, -1841, 880 }, { 1843, -1841, 880 },\n    { 1843, -1841, 880 }, { 1843, -1841, 880 }, { 1843, -1841, 879 }, { 1843, -1841, 878 },\n    { 1843, -1841, 876 }, { 1842, -1842, 873 }, { 1842, -1842, 871 }, { 1842, -1842, 868 },\n    { 1842, -1842, 866 }, { 1842, -1843, 864 }, { 1841, -1843, 863 }, { 1841, -1843, 862 },\n    { 1841, -1843, 862 }, { 1841, -1843, 862 }, { 1841, -1843, 861 }, { 1841, -1843, 861 },\n    { 1841, -1843, 862 }, { 1841, -1843, 862 }, { 1841, -1843, 862 }, { 1841, -1843, 862 },\n    { 1841, -1843, 862 }, { 1841, -1843, 863 }, { 1841, -1843, 863 }, { 1841, -1843, 863 },\n    { 1841, -1843, 863 }, { 1841, -1843, 863 }, { 1841, -1843, 863 }, { 1841, -1843, 863 },\n    { 1841, -1843, 863 }, { 1841, -1843, 863 }, { 1841, -1843, 863 }, { 1841, -1843, 863 },\n    { 1841, -1843, 863 }, { 1841, -1843, 863 }, { 1841, -1843, 863 }, { 1841, -1843, 863 },\n    { 1841, -1843, 863 }, { 1841, -1843, 863 }, { 1841, -1843, 863 }, { 1841, -1843, 863 },\n    { 1841, -1843, 863 }, { 1841, -1843, 863 }, { 1841, -1843, 863 }, { 1841, -1843, 863 },\n    { 1841, -1843, 863 }, { 1841, -1843, 863 }, { 1841, -1843, 863 }, { 1841, -1843, 863 },\n    { 1841, -1843, 863 }, { 1841, -1843, 863 }, { 1841, -1843, 863 }, { 1841, -1843, 863 },\n    { 1841, -1843, 863 }, { 1841, -1843, 863 }, { 1841, -1843, 863 }, { 1841, -1843, 863 },\n    { 1841, -1843, 863 }, { 1841, -1843, 863 }, { 1841, -1843, 863 }, { 1841, -1843, 863 },\n    { 1841, -1843, 863 }, { 1841, -1843, 863 }, { 1841, -1843, 863 }, { 1841, -1843, 863 },\n    { 1841, -1843, 863 }, { 1841, -1843, 863 }, { 1841, -1843, 863 }, { 1841, -1843, 863 },\n    { 1841, -1843, 863 }, { 1841, -1843, 863 }, { 1841, -1843, 863 }, { 1841, -1843, 863 },\n    { 1841, -1843, 863 }, { 1841, -1843, 863 }, { 1841, -1843, 863 }, { 1841, -1843, 863 },\n    { 1841, -1843, 863 }, { 1841, -1843, 863 }, { 1841, -1843, 863 }, { 1841, -1843, 863 },\n    { 1841, -1843, 863 }, { 1841, -1843, 863 }, { 1841, -1843, 863 }, { 1841, -1843, 863 },\n    { 1841, -1843, 863 }, { 1841, -1843, 863 }, { 1841, -1843, 863 }, { 1841, -1843, 863 },\n    { 1841, -1844, 863 }, { 1841, -1844, 864 }, { 1841, -1844, 864 }, { 1841, -1844, 864 },\n    { 1841, -1844, 864 }, { 1841, -1845, 864 }, { 1841, -1845, 865 }, { 1841, -1845, 865 },\n    { 1841, -1845, 865 }, { 1841, -1846, 865 }, { 1841, -1846, 865 }, { 1841, -1846, 865 },\n    { 1841, -1846, 865 }, { 1841, -1846, 865 }, { 1841, -1846, 865 }, { 1841, -1846, 865 },\n    { 1841, -1846, 865 }, { 1841, -1845, 865 }, { 1841, -1845, 865 }, { 1841, -1845, 864 },\n    { 1841, -1844, 864 }, { 1841, -1843, 863 }, { 1841, -1843, 863 }, { 1841, -1842, 862 },\n    { 1842, -1841, 862 }, { 1842, -1840, 861 }, { 1842, -1839, 861 }, { 1842, -1838, 860 },\n    { 1842, -1837, 859 }, { 1842, -1836, 858 }, { 1842, -1835, 858 }, { 1842, -1834, 857 },\n    { 1842, -1833, 856 }, { 1842, -1832, 855 }, { 1842, -1830, 854 }, { 1842, -1829, 853 },\n    { 1842, -1828, 852 }, { 1842, -1826, 851 }, { 1842, -1825, 850 }, { 1842, -1824, 849 },\n    { 1843, -1822, 849 }, { 1843, -1821, 848 }, { 1843, -1820, 847 }, { 1843, -1818, 846 },\n    { 1843, -1817, 845 }, { 1843, -1815, 844 }, { 1843, -1814, 843 }, { 1843, -1813, 842 },\n    { 1843, -1811, 841 }, { 1843, -1810, 840 }, { 1843, -1808, 839 }, { 1843, -1807, 838 },\n    { 1843, -1806, 837 }, { 1843, -1804, 836 }, { 1844, -1803, 835 }, { 1844, -1802, 834 },\n    { 1844, -1800, 833 }, { 1844, -1799, 832 }, { 1844, -1798, 831 }, { 1844, -1797, 830 },\n    { 1844, -1795, 829 }, { 1844, -1794, 829 }, { 1844, -1793, 828 }, { 1844, -1792, 827 },\n    { 1844, -1791, 826 }, { 1844, -1790, 826 }, { 1844, -1789, 825 }, { 1844, -1788, 824 },\n    { 1844, -1788, 824 }, { 1844, -1787, 823 }, { 1844, -1786, 823 }, { 1844, -1786, 822 },\n    { 1844, -1785, 822 }, { 1844, -1785, 821 }, { 1844, -1784, 821 }, { 1844, -1784, 821 },\n    { 1844, -1784, 821 }, { 1844, -1784, 820 }, { 1844, -1784, 820 }, { 1844, -1784, 820 },\n    { 1844, -1784, 821 }, { 1844, -1784, 821 }, { 1844, -1785, 821 }, { 1844, -1785, 821 },\n    { 1844, -1786, 822 }, { 1844, -1787, 823 }, { 1844, -1787, 823 }, { 1844, -1788, 824 },\n    { 1844, -1790, 826 }, { 1845, -1792, 828 }, { 1845, -1795, 831 }, { 1845, -1798, 834 },\n    { 1845, -1802, 837 }, { 1845, -1805, 841 }, { 1845, -1809, 844 }, { 1846, -1812, 848 },\n    { 1846, -1815, 851 }, { 1846, -1818, 853 }, { 1846, -1819, 855 }, { 1846, -1820, 856 },\n    { 1846, -1821, 856 }, { 1846, -1821, 856 }, { 1846, -1822, 857 }, { 1846, -1822, 857 },\n    { 1846, -1822, 857 }, { 1846, -1823, 858 }, { 1846, -1823, 858 }, { 1846, -1823, 858 },\n    { 1846, -1823, 858 }, { 1846, -1823, 859 }, { 1846, -1824, 859 }, { 1846, -1824, 859 },\n    { 1846, -1824, 859 }, { 1846, -1824, 859 }, { 1846, -1824, 859 }, { 1846, -1824, 859 },\n    { 1846, -1824, 859 }, { 1846, -1824, 859 }, { 1846, -1824, 859 }, { 1846, -1824, 859 },\n    { 1846, -1824, 859 }, { 1846, -1824, 859 }, { 1846, -1824, 859 }, { 1846, -1824, 859 },\n    { 1846, -1824, 859 }, { 1846, -1824, 859 }, { 1846, -1824, 859 }, { 1846, -1824, 859 },\n    { 1846, -1824, 859 }, { 1846, -1824, 859 }, { 1846, -1823, 859 }, { 1846, -1823, 858 },\n    { 1846, -1823, 858 }, { 1846, -1823, 858 }, { 1846, -1823, 858 }, { 1846, -1823, 858 },\n    { 1846, -1823, 858 }, { 1846, -1822, 858 }, { 1846, -1822, 857 }, { 1846, -1822, 857 },\n    { 1846, -1822, 857 }, { 1846, -1822, 857 }, { 1846, -1822, 857 }, { 1846, -1822, 857 },\n    { 1846, -1821, 857 }, { 1846, -1821, 856 }, { 1846, -1821, 856 }, { 1846, -1821, 856 },\n    { 1846, -1821, 856 }, { 1846, -1821, 856 }, { 1846, -1821, 856 }, { 1846, -1821, 856 },\n    { 1846, -1821, 856 }, { 1846, -1820, 856 }, { 1846, -1820, 856 }, { 1846, -1820, 856 },\n    { 1846, -1820, 856 }, { 1846, -1820, 856 }, { 1846, -1820, 856 }, { 1846, -1820, 856 },\n    { 1846, -1820, 856 }, { 1846, -1820, 856 }, { 1846, -1820, 856 }, { 1846, -1820, 856 },\n    { 1846, -1820, 856 }, { 1846, -1820, 856 }, { 1846, -1820, 856 }, { 1846, -1820, 856 },\n    { 1846, -1820, 856 }, { 1846, -1820, 856 }, { 1846, -1820, 856 }, { 1846, -1820, 856 },\n    { 1846, -1820, 856 }, { 1846, -1820, 856 }, { 1846, -1820, 856 }, { 1846, -1820, 856 },\n    { 1846, -1820, 856 }, { 1846, -1820, 856 }, { 1846, -1820, 856 }, { 1846, -1820, 856 },\n    { 1846, -1820, 856 }, { 1846, -1820, 856 }, { 1846, -1820, 856 }, { 1846, -1820, 856 },\n    { 1846, -1820, 856 }, { 1846, -1820, 856 }, { 1846, -1820, 856 }, { 1846, -1820, 856 },\n    { 1846, -1820, 856 }, { 1846, -1820, 856 }, { 1846, -1820, 856 }, { 1846, -1820, 856 },\n    { 1846, -1820, 856 }, { 1846, -1820, 856 }, { 1846, -1820, 856 }, { 1846, -1820, 856 },\n    { 1846, -1820, 856 }, { 1846, -1820, 856 }, { 1846, -1820, 856 }, { 1846, -1820, 856 },\n    { 1846, -1820, 856 }, { 1846, -1820, 856 }, { 1846, -1820, 856 }, { 1846, -1820, 856 },\n    { 1846, -1820, 856 }, { 1846, -1820, 856 }, { 1846, -1820, 856 }, { 1846, -1820, 856 },\n    { 1846, -1820, 856 }, { 1846, -1820, 856 }, { 1846, -1820, 856 }, { 1846, -1820, 856 },\n    { 1846, -1820, 856 }, { 1846, -1820, 856 }, { 1846, -1820, 856 }, { 1846, -1820, 856 },\n    { 1846, -1821, 856 }, { 1846, -1820, 856 }, { 1846, -1817, 853 }, { 1846, -1814, 849 },\n    { 1845, -1810, 845 }, { 1845, -1805, 841 }, { 1845, -1801, 837 }, { 1845, -1797, 833 },\n    { 1845, -1794, 829 }, { 1844, -1791, 827 }, { 1844, -1789, 825 }, { 1844, -1788, 824 },\n};\n\nstatic s16 animdata_mario_eye_right_2[][3] = {\n    { 1841, -1711, 853 }, { 1841, -1711, 853 }, { 1841, -1711, 853 }, { 1841, -1711, 853 },\n    { 1841, -1710, 853 }, { 1841, -1710, 853 }, { 1841, -1709, 853 }, { 1841, -1708, 853 },\n    { 1841, -1707, 853 }, { 1841, -1706, 853 }, { 1841, -1705, 853 }, { 1841, -1705, 853 },\n    { 1841, -1704, 853 }, { 1841, -1703, 853 }, { 1841, -1702, 852 }, { 1841, -1701, 852 },\n    { 1841, -1701, 852 }, { 1841, -1700, 852 }, { 1841, -1700, 852 }, { 1841, -1700, 852 },\n    { 1841, -1699, 852 }, { 1841, -1700, 852 }, { 1841, -1700, 852 }, { 1841, -1700, 852 },\n    { 1841, -1701, 852 }, { 1841, -1702, 852 }, { 1841, -1703, 853 }, { 1841, -1705, 853 },\n    { 1841, -1707, 853 }, { 1841, -1709, 853 }, { 1841, -1711, 853 }, { 1841, -1721, 854 },\n    { 1841, -1739, 855 }, { 1841, -1762, 857 }, { 1841, -1785, 858 }, { 1841, -1802, 860 },\n    { 1840, -1809, 860 }, { 1841, -1804, 860 }, { 1841, -1793, 859 }, { 1841, -1778, 858 },\n    { 1841, -1760, 857 }, { 1841, -1742, 855 }, { 1841, -1727, 854 }, { 1841, -1716, 853 },\n    { 1841, -1711, 853 }, { 1841, -1726, 852 }, { 1840, -1762, 848 }, { 1839, -1804, 843 },\n    { 1839, -1839, 837 }, { 1838, -1853, 833 }, { 1838, -1842, 830 }, { 1838, -1814, 827 },\n    { 1838, -1778, 824 }, { 1839, -1743, 822 }, { 1839, -1715, 820 }, { 1839, -1702, 819 },\n    { 1839, -1708, 820 }, { 1839, -1727, 821 }, { 1840, -1753, 823 }, { 1840, -1782, 825 },\n    { 1840, -1811, 827 }, { 1840, -1834, 828 }, { 1840, -1837, 828 }, { 1840, -1818, 833 },\n    { 1841, -1795, 838 }, { 1841, -1771, 844 }, { 1842, -1749, 849 }, { 1842, -1733, 853 },\n    { 1842, -1726, 855 }, { 1842, -1724, 855 }, { 1842, -1723, 855 }, { 1842, -1721, 856 },\n    { 1842, -1720, 856 }, { 1843, -1719, 856 }, { 1843, -1717, 857 }, { 1843, -1716, 857 },\n    { 1843, -1715, 857 }, { 1843, -1714, 858 }, { 1843, -1713, 858 }, { 1843, -1713, 858 },\n    { 1843, -1712, 858 }, { 1843, -1711, 858 }, { 1843, -1711, 859 }, { 1843, -1710, 859 },\n    { 1843, -1710, 859 }, { 1843, -1709, 859 }, { 1843, -1709, 859 }, { 1843, -1708, 859 },\n    { 1843, -1708, 860 }, { 1843, -1708, 860 }, { 1843, -1708, 860 }, { 1843, -1708, 860 },\n    { 1843, -1708, 860 }, { 1843, -1708, 860 }, { 1843, -1708, 860 }, { 1843, -1708, 860 },\n    { 1843, -1708, 860 }, { 1843, -1708, 860 }, { 1842, -1708, 860 }, { 1842, -1709, 860 },\n    { 1842, -1709, 860 }, { 1842, -1709, 860 }, { 1842, -1709, 860 }, { 1842, -1710, 860 },\n    { 1842, -1710, 860 }, { 1842, -1711, 860 }, { 1842, -1711, 860 }, { 1842, -1712, 859 },\n    { 1842, -1712, 859 }, { 1842, -1713, 859 }, { 1842, -1713, 859 }, { 1842, -1714, 859 },\n    { 1842, -1715, 859 }, { 1842, -1715, 859 }, { 1842, -1716, 858 }, { 1842, -1716, 858 },\n    { 1842, -1717, 858 }, { 1842, -1718, 858 }, { 1842, -1718, 858 }, { 1842, -1719, 857 },\n    { 1842, -1720, 857 }, { 1842, -1721, 857 }, { 1842, -1721, 857 }, { 1842, -1722, 856 },\n    { 1842, -1723, 856 }, { 1842, -1723, 856 }, { 1842, -1724, 856 }, { 1842, -1725, 855 },\n    { 1842, -1725, 855 }, { 1842, -1726, 855 }, { 1842, -1727, 854 }, { 1842, -1728, 854 },\n    { 1842, -1729, 853 }, { 1842, -1730, 853 }, { 1843, -1732, 852 }, { 1843, -1733, 851 },\n    { 1843, -1735, 850 }, { 1843, -1737, 849 }, { 1843, -1739, 848 }, { 1843, -1741, 847 },\n    { 1843, -1743, 846 }, { 1843, -1746, 845 }, { 1843, -1748, 844 }, { 1843, -1750, 843 },\n    { 1843, -1753, 842 }, { 1843, -1755, 840 }, { 1843, -1758, 839 }, { 1843, -1760, 838 },\n    { 1844, -1762, 837 }, { 1844, -1765, 836 }, { 1844, -1767, 835 }, { 1844, -1770, 833 },\n    { 1844, -1772, 832 }, { 1844, -1774, 831 }, { 1844, -1776, 830 }, { 1844, -1778, 829 },\n    { 1844, -1780, 829 }, { 1844, -1781, 828 }, { 1844, -1783, 827 }, { 1844, -1784, 826 },\n    { 1844, -1785, 826 }, { 1844, -1786, 825 }, { 1844, -1787, 825 }, { 1844, -1788, 825 },\n    { 1844, -1788, 824 }, { 1844, -1788, 824 },\n};\n\nstruct AnimDataInfo anim_mario_eye_right[] = {\n    { ARRAY_COUNT(animdata_mario_eye_right_1), GD_ANIM_ROT3S, animdata_mario_eye_right_1 },\n    { ARRAY_COUNT(animdata_mario_eye_right_2), GD_ANIM_ROT3S, animdata_mario_eye_right_2 },\n    END_ANIMDATA_INFO_ARR,\n};\n\nstatic s16 animdata_mario_cap_1[][3] = {\n    { 0, 0, 1539 },     { 0, 0, 1539 },     { 0, 0, 1539 },     { 0, 0, 1538 },     { 0, 0, 1538 },\n    { 0, 0, 1537 },     { 0, 0, 1537 },     { 0, 0, 1536 },     { 0, 0, 1536 },     { 0, 0, 1535 },\n    { 0, 0, 1535 },     { 0, 0, 1534 },     { 0, 0, 1534 },     { 0, 0, 1534 },     { 0, 0, 1534 },\n    { 0, 0, 1534 },     { 0, 0, 1534 },     { 0, 0, 1534 },     { 0, 0, 1535 },     { 0, 0, 1536 },\n    { 0, 0, 1537 },     { 0, 0, 1539 },     { 0, 0, 1550 },     { 0, 0, 1569 },     { 0, 0, 1579 },\n    { 0, 0, 1576 },     { 0, 0, 1568 },     { 0, 0, 1557 },     { 0, 0, 1548 },     { 0, 0, 1540 },\n    { 0, 0, 1539 },     { 0, 0, 1553 },     { 0, 0, 1580 },     { 0, 0, 1596 },     { 0, 0, 1592 },\n    { 0, 0, 1579 },     { 0, 0, 1567 },     { 0, 0, 1564 },     { 0, 0, 1562 },     { 0, 0, 1556 },\n    { 0, 0, 1540 },     { 0, 0, 1520 },     { 0, 0, 1510 },     { 0, 0, 1510 },     { 0, 0, 1509 },\n    { 0, 0, 1509 },     { 0, 0, 1510 },     { 0, 0, 1510 },     { 0, 0, 1511 },     { 0, 0, 1512 },\n    { 0, 0, 1513 },     { 0, 0, 1514 },     { 0, 0, 1515 },     { 0, 0, 1517 },     { 0, 0, 1518 },\n    { 0, 0, 1520 },     { 0, 0, 1521 },     { 0, 0, 1523 },     { 0, 0, 1525 },     { 0, 0, 1526 },\n    { 0, 0, 1528 },     { 0, 0, 1530 },     { 0, 0, 1531 },     { 0, 0, 1533 },     { 0, 0, 1534 },\n    { 0, 0, 1536 },     { 0, 0, 1537 },     { 0, 0, 1538 },     { 0, 0, 1539 },     { 0, 0, 1535 },\n    { 0, 0, 1526 },     { 0, 0, 1515 },     { 0, 0, 1506 },     { 0, 0, 1502 },     { 0, 0, 1503 },\n    { 0, 0, 1504 },     { 0, 0, 1506 },     { 0, 0, 1509 },     { 0, 0, 1512 },     { 0, 0, 1516 },\n    { 0, 0, 1520 },     { 0, 0, 1524 },     { 0, 0, 1527 },     { 0, 0, 1530 },     { 0, 0, 1533 },\n    { 0, 0, 1535 },     { 0, 0, 1536 },     { 0, 0, 1537 },     { 0, 0, 1536 },     { 0, 0, 1535 },\n    { 0, 0, 1533 },     { 0, 0, 1531 },     { 0, 0, 1528 },     { 0, 0, 1526 },     { 0, 0, 1522 },\n    { 0, 0, 1519 },     { 0, 0, 1516 },     { 0, 0, 1512 },     { 0, 0, 1509 },     { 0, 0, 1506 },\n    { 0, 0, 1503 },     { 0, 0, 1501 },     { 0, 0, 1498 },     { 0, 0, 1497 },     { 0, 0, 1496 },\n    { 0, 0, 1495 },     { 0, 0, 1496 },     { 0, 0, 1497 },     { 0, 0, 1499 },     { 0, 0, 1502 },\n    { 0, 0, 1505 },     { 0, 0, 1509 },     { 0, 0, 1513 },     { 0, 0, 1517 },     { 0, 0, 1521 },\n    { 0, 0, 1524 },     { 0, 0, 1528 },     { 0, 0, 1531 },     { 0, 0, 1533 },     { 0, 0, 1534 },\n    { 0, 0, 1536 },     { 0, 0, 1537 },     { 0, 0, 1539 },     { 0, 0, 1540 },     { 0, 0, 1541 },\n    { 0, 0, 1541 },     { 0, 0, 1542 },     { 0, 0, 1541 },     { 0, 0, 1541 },     { 0, 0, 1540 },\n    { 0, 0, 1538 },     { 0, 0, 1534 },     { 0, 0, 1529 },     { 0, 0, 1522 },     { 0, 0, 1514 },\n    { 0, 0, 1506 },     { 0, 0, 1500 },     { 0, 0, 1495 },     { 0, 0, 1493 },     { 0, 0, 1492 },\n    { 0, 0, 1492 },     { 0, 0, 1493 },     { 0, 0, 1493 },     { 0, 0, 1494 },     { 0, 0, 1495 },\n    { 0, 0, 1497 },     { 0, 0, 1498 },     { 0, 0, 1500 },     { 0, 0, 1502 },     { 0, 0, 1503 },\n    { 0, 0, 1505 },     { 0, 0, 1507 },     { 0, 0, 1509 },     { 0, 0, 1511 },     { 0, 0, 1513 },\n    { 0, 0, 1515 },     { 0, 0, 1516 },     { 0, 0, 1517 },     { 0, 0, 1519 },     { 0, 0, 1520 },\n    { 0, 0, 1520 },     { 0, 0, 1521 },     { 0, 0, 1521 },     { 0, 0, 1518 },     { 0, 0, 1512 },\n    { 0, 0, 1504 },     { 0, 0, 1497 },     { 0, 0, 1491 },     { 0, 0, 1490 },     { 0, 0, 1493 },\n    { 0, 0, 1500 },     { 0, 0, 1509 },     { 0, 0, 1518 },     { 0, 0, 1527 },     { 0, 0, 1534 },\n    { 0, 0, 1539 },     { 0, 0, 1541 },     { 0, 0, 1542 },     { 0, 0, 1543 },     { 0, 0, 1544 },\n    { 0, 0, 1544 },     { 0, 0, 1544 },     { 0, 0, 1544 },     { 0, 0, 1543 },     { 0, 0, 1542 },\n    { 0, 0, 1541 },     { 0, 0, 1540 },     { 0, 0, 1540 },     { 0, 0, 1539 },     { 0, 0, 1538 },\n    { 0, 0, 1536 },     { 0, 0, 1534 },     { 0, 0, 1532 },     { 0, 0, 1529 },     { 0, 0, 1525 },\n    { 0, 0, 1522 },     { 0, 0, 1518 },     { 0, 0, 1514 },     { 0, 0, 1511 },     { 0, 0, 1507 },\n    { 0, 0, 1504 },     { 0, 0, 1501 },     { 0, 0, 1498 },     { 0, 0, 1496 },     { 0, 0, 1494 },\n    { 0, 0, 1493 },     { 0, 0, 1492 },     { 0, 0, 1493 },     { 0, 0, 1494 },     { 0, 0, 1496 },\n    { 0, 0, 1499 },     { 0, 0, 1504 },     { 0, 0, 1509 },     { 0, 0, 1516 },     { 0, 0, 1546 },\n    { 0, 0, 1608 },     { 0, 0, 1679 },     { 0, 0, 1738 },     { 0, 0, 1762 },     { 0, 0, 1754 },\n    { 0, 0, 1731 },     { 0, 0, 1697 },     { 0, 0, 1657 },     { 0, 0, 1615 },     { 0, 0, 1575 },\n    { 0, 0, 1541 },     { 0, 0, 1516 },     { 0, 0, 1501 },     { 0, 0, 1492 },     { 0, 0, 1487 },\n    { 0, 0, 1486 },     { 0, 0, 1486 },     { 0, 0, 1487 },     { 0, 0, 1487 },     { 0, 0, 1486 },\n    { 0, 0, 1486 },     { 0, 0, 1485 },     { 0, 0, 1485 },     { 0, 0, 1484 },     { 0, 0, 1484 },\n    { 0, 0, 1484 },     { 0, 0, 1484 },     { 0, 0, 1484 },     { 0, 0, 1484 },     { 0, 0, 1484 },\n    { 0, 0, 1484 },     { 0, 0, 1485 },     { 0, 0, 1485 },     { 0, 0, 1485 },     { 0, 0, 1485 },\n    { 0, 0, 1486 },     { 0, 0, 1486 },     { 0, 0, 1486 },     { 0, 0, 1487 },     { 0, 0, 1487 },\n    { 0, 0, 1487 },     { 0, 0, 1487 },     { 0, 0, 1487 },     { 0, 0, 1487 },     { 0, 0, 1487 },\n    { 0, 0, 1487 },     { 1, 0, 1488 },     { 1, 0, 1488 },     { 2, 0, 1488 },     { 2, 0, 1488 },\n    { 3, 0, 1489 },     { 4, 0, 1489 },     { 4, 0, 1489 },     { 5, 0, 1489 },     { 6, 0, 1489 },\n    { 6, 0, 1490 },     { 7, 0, 1490 },     { 8, 0, 1490 },     { 8, 0, 1490 },     { 9, 0, 1489 },\n    { 10, 0, 1489 },    { 10, 0, 1489 },    { 11, 0, 1488 },    { 11, 0, 1487 },    { 11, 0, 1486 },\n    { 12, 0, 1485 },    { 12, 0, 1483 },    { 12, 0, 1480 },    { 12, 0, 1478 },    { 12, 0, 1475 },\n    { 12, 0, 1473 },    { 12, 0, 1470 },    { 12, 0, 1468 },    { 12, 0, 1465 },    { 12, 0, 1463 },\n    { 12, 0, 1461 },    { 12, 0, 1460 },    { 11, 0, 1459 },    { 11, 0, 1459 },    { 10, 0, 1459 },\n    { 10, 0, 1462 },    { 9, 0, 1465 },     { 9, 0, 1468 },     { 8, 0, 1473 },     { 6, 0, 1477 },\n    { 5, 0, 1481 },     { 4, 0, 1484 },     { 2, 0, 1486 },     { 0, 0, 1487 },     { -2, 0, 1487 },\n    { -5, 0, 1486 },    { -8, 0, 1485 },    { -11, 0, 1483 },   { -15, 0, 1481 },   { -19, 0, 1479 },\n    { -22, 0, 1476 },   { -26, 0, 1474 },   { -30, 0, 1471 },   { -33, 0, 1469 },   { -36, 0, 1466 },\n    { -40, 0, 1464 },   { -43, 0, 1462 },   { -47, 0, 1460 },   { -52, 0, 1457 },   { -55, 0, 1454 },\n    { -58, 0, 1453 },   { -58, 0, 1452 },   { -57, 0, 1453 },   { -51, 0, 1457 },   { -40, 0, 1463 },\n    { -27, 0, 1471 },   { -15, 0, 1479 },   { -5, 0, 1484 },    { 0, 0, 1487 },     { 1, 0, 1488 },\n    { 3, 0, 1488 },     { 4, 0, 1488 },     { 5, 0, 1487 },     { 6, 0, 1487 },     { 6, 0, 1486 },\n    { 6, 0, 1485 },     { 6, 0, 1484 },     { 5, 0, 1482 },     { 5, 0, 1481 },     { 4, 0, 1480 },\n    { 4, 0, 1478 },     { 3, 0, 1477 },     { 2, 0, 1475 },     { 2, 0, 1474 },     { 1, 0, 1473 },\n    { 0, 0, 1472 },     { 0, 0, 1471 },     { 0, 0, 1470 },     { 0, 0, 1470 },     { 0, 0, 1470 },\n    { 0, 0, 1470 },     { 0, 0, 1469 },     { 0, 0, 1469 },     { 0, 0, 1469 },     { 0, 0, 1469 },\n    { 0, 0, 1469 },     { 0, 0, 1469 },     { 0, 0, 1469 },     { 0, 0, 1468 },     { 0, 0, 1468 },\n    { 0, 0, 1468 },     { 0, 0, 1468 },     { 0, 0, 1468 },     { 0, 0, 1468 },     { 0, 0, 1468 },\n    { 0, 0, 1468 },     { 0, 0, 1468 },     { 0, 0, 1468 },     { 0, 0, 1469 },     { 0, 0, 1469 },\n    { 0, 0, 1469 },     { 0, 0, 1469 },     { 0, 0, 1469 },     { 0, 0, 1469 },     { 0, 0, 1469 },\n    { 0, 0, 1469 },     { 0, 0, 1469 },     { 0, 0, 1469 },     { 0, 0, 1469 },     { 0, 0, 1469 },\n    { 0, 0, 1469 },     { 0, 0, 1470 },     { 0, 0, 1470 },     { 0, 0, 1470 },     { 0, 0, 1470 },\n    { 0, 0, 1470 },     { 0, 0, 1470 },     { 0, 0, 1470 },     { 0, 0, 1470 },     { 0, 0, 1470 },\n    { 0, 0, 1470 },     { 0, 0, 1470 },     { 0, 0, 1469 },     { 0, 0, 1467 },     { 0, 0, 1464 },\n    { 0, 0, 1460 },     { 0, 0, 1456 },     { 0, 0, 1453 },     { 0, 0, 1451 },     { 0, 0, 1450 },\n    { 0, 0, 1451 },     { 0, 0, 1454 },     { 0, 0, 1460 },     { 0, 0, 1470 },     { 0, 0, 1493 },\n    { 0, 0, 1533 },     { 0, 0, 1581 },     { 0, 0, 1627 },     { 0, 0, 1662 },     { 0, 0, 1676 },\n    { 0, 0, 1674 },     { 0, 0, 1664 },     { 0, 0, 1650 },     { 0, 0, 1632 },     { 0, 0, 1610 },\n    { 0, 0, 1588 },     { 0, 0, 1564 },     { 0, 0, 1542 },     { 0, 0, 1522 },     { 0, 0, 1506 },\n    { 0, 0, 1493 },     { 0, 0, 1487 },     { 0, 0, 1484 },     { 0, 0, 1482 },     { 0, 0, 1480 },\n    { 0, 0, 1477 },     { 0, 0, 1475 },     { 0, 0, 1474 },     { 0, -1, 1472 },    { -1, -1, 1471 },\n    { -1, -1, 1470 },   { -1, -1, 1469 },   { -1, -2, 1468 },   { -2, -2, 1467 },   { -2, -3, 1467 },\n    { -2, -3, 1466 },   { -3, -3, 1466 },   { -3, -4, 1466 },   { -3, -4, 1466 },   { -4, -5, 1466 },\n    { -4, -5, 1466 },   { -4, -6, 1466 },   { -5, -6, 1467 },   { -5, -6, 1467 },   { -5, -7, 1468 },\n    { -6, -7, 1469 },   { -6, -8, 1469 },   { -6, -8, 1470 },   { -6, -8, 1471 },   { -7, -9, 1472 },\n    { -7, -9, 1473 },   { -7, -9, 1474 },   { -7, -9, 1475 },   { -7, -9, 1475 },   { -7, -10, 1476 },\n    { -7, -10, 1477 },  { -7, -10, 1478 },  { -7, -10, 1479 },  { -7, -10, 1480 },  { -7, -10, 1481 },\n    { -7, -9, 1482 },   { -7, -9, 1483 },   { -7, -9, 1484 },   { -7, -8, 1485 },   { -6, -8, 1485 },\n    { -6, -8, 1486 },   { -5, -7, 1486 },   { -5, -6, 1487 },   { -4, -6, 1487 },   { -4, -5, 1488 },\n    { -3, -4, 1488 },   { -2, -3, 1488 },   { -1, -2, 1488 },   { 0, -1, 1488 },    { 0, 0, 1487 },\n    { 8, 11, 1484 },    { 27, 35, 1477 },   { 47, 60, 1470 },   { 57, 74, 1466 },   { 60, 78, 1465 },\n    { 63, 81, 1464 },   { 65, 83, 1463 },   { 66, 85, 1463 },   { 67, 86, 1462 },   { 68, 87, 1462 },\n    { 67, 87, 1462 },   { 67, 86, 1463 },   { 66, 84, 1463 },   { 64, 83, 1464 },   { 62, 80, 1464 },\n    { 60, 77, 1465 },   { 57, 74, 1466 },   { 53, 68, 1468 },   { 48, 60, 1471 },   { 40, 49, 1475 },\n    { 31, 36, 1479 },   { 21, 24, 1483 },   { 11, 11, 1486 },   { 0, 0, 1487 },     { -21, -14, 1485 },\n    { -47, -29, 1479 }, { -56, -33, 1476 }, { -27, -13, 1476 }, { 19, 17, 1478 },   { 47, 34, 1480 },\n    { 32, 21, 1483 },   { -2, -5, 1487 },   { -26, -22, 1489 }, { -24, -20, 1489 }, { -10, -8, 1488 },\n    { 0, 0, 1487 },     { 2, 1, 1487 },     { 1, 1, 1487 },     { 0, 0, 1487 },     { 0, 0, 1487 },\n    { 0, 0, 1487 },     { 0, 0, 1487 },     { 0, 0, 1486 },     { 0, 0, 1486 },     { 0, 0, 1485 },\n    { 0, 0, 1485 },     { 0, 0, 1484 },     { 0, 0, 1484 },     { 0, 0, 1484 },     { 0, 0, 1484 },\n    { 0, 0, 1484 },     { 0, 0, 1485 },     { 0, 0, 1486 },     { 0, 0, 1487 },     { 0, 0, 1489 },\n    { 0, 0, 1492 },     { 0, 0, 1495 },     { 0, 0, 1499 },     { 0, 0, 1503 },     { 0, 0, 1507 },\n    { 0, 0, 1511 },     { 0, 0, 1515 },     { 0, 0, 1519 },     { 0, 0, 1523 },     { 0, 0, 1526 },\n    { 0, 0, 1529 },     { 0, 0, 1531 },     { 0, 0, 1533 },     { 0, 0, 1533 },     { 0, 0, 1532 },\n    { 0, 0, 1531 },     { 0, 0, 1528 },     { 0, 0, 1524 },     { 0, 0, 1520 },     { 0, 0, 1515 },\n    { 0, 0, 1510 },     { 0, 0, 1505 },     { 0, 0, 1501 },     { 0, 0, 1496 },     { 0, 0, 1493 },\n    { 0, 0, 1490 },     { 0, 0, 1488 },     { 0, 0, 1487 },     { 0, 0, 1488 },     { 0, 0, 1489 },\n    { 0, 0, 1492 },     { 0, 0, 1495 },     { 0, 0, 1499 },     { 0, 0, 1503 },     { 0, 0, 1508 },\n    { 0, 0, 1512 },     { 0, 0, 1517 },     { 0, 0, 1521 },     { 0, 0, 1525 },     { 0, 0, 1528 },\n    { 0, 0, 1531 },     { 0, 0, 1533 },     { 0, 0, 1533 },     { 0, 0, 1532 },     { 0, 0, 1531 },\n    { 0, 0, 1528 },     { 0, 0, 1524 },     { 0, 0, 1520 },     { 0, 0, 1515 },     { 0, 0, 1510 },\n    { 0, 0, 1505 },     { 0, 0, 1501 },     { 0, 0, 1496 },     { 0, 0, 1493 },     { 0, 0, 1490 },\n    { 0, 0, 1488 },     { 0, 0, 1487 },     { 0, 0, 1488 },     { 0, 0, 1490 },     { 0, 0, 1493 },\n    { 0, 0, 1498 },     { 0, 0, 1502 },     { 0, 0, 1508 },     { 0, 0, 1513 },     { 0, 0, 1518 },\n    { 0, 0, 1523 },     { 0, 0, 1527 },     { 0, 0, 1530 },     { 0, 0, 1532 },     { 0, 0, 1533 },\n    { 0, 0, 1533 },     { 0, 0, 1531 },     { 0, 0, 1529 },     { 0, 0, 1526 },     { 0, 0, 1522 },\n    { 0, 0, 1518 },     { 0, 0, 1514 },     { 0, 0, 1510 },     { 0, 0, 1506 },     { 0, 0, 1501 },\n    { 0, 0, 1498 },     { 0, 0, 1494 },     { 0, 0, 1491 },     { 0, 0, 1489 },     { 0, 0, 1487 },\n    { 0, 0, 1486 },     { 0, 0, 1486 },     { 0, 0, 1486 },     { 0, 0, 1486 },     { 0, 0, 1486 },\n    { 0, 0, 1487 },     { 0, 0, 1487 },     { 0, 0, 1488 },     { 0, 0, 1489 },     { 0, 0, 1491 },\n    { 0, 0, 1492 },     { 0, 0, 1493 },     { 0, 0, 1495 },     { 0, 0, 1496 },     { 0, 0, 1497 },\n    { 0, 0, 1499 },     { 0, 0, 1500 },     { 0, 0, 1501 },     { 0, 0, 1502 },     { 0, 0, 1504 },\n    { 0, 0, 1505 },     { 0, 0, 1507 },     { 0, 0, 1508 },     { 0, 0, 1510 },     { 0, 0, 1511 },\n    { 0, 0, 1513 },     { 0, 0, 1515 },     { 0, 0, 1517 },     { 0, 0, 1518 },     { 0, 0, 1520 },\n    { 0, 0, 1522 },     { 0, 0, 1523 },     { 0, 0, 1525 },     { 0, 0, 1527 },     { 0, 0, 1528 },\n    { 0, 0, 1530 },     { 0, 0, 1531 },     { 0, 0, 1532 },     { 0, 0, 1534 },     { 0, 0, 1535 },\n    { 0, 0, 1536 },     { 0, 0, 1537 },     { 0, 0, 1538 },     { 0, 0, 1538 },     { 0, 0, 1539 },\n    { 0, 0, 1539 },     { 0, 0, 1537 },     { 0, 0, 1535 },     { 0, 0, 1532 },     { 0, 0, 1529 },\n    { 0, 0, 1526 },     { 0, 0, 1523 },     { 0, 0, 1520 },     { 0, 0, 1519 },     { 0, 0, 1518 },\n    { 0, 0, 1518 },     { 0, 0, 1520 },     { 0, 0, 1522 },     { 0, 0, 1524 },     { 0, 0, 1527 },\n    { 0, 0, 1530 },     { 0, 0, 1533 },     { 0, 0, 1535 },     { 0, 0, 1537 },     { 0, 0, 1539 },\n    { 0, 0, 1540 },     { 0, 0, 1540 },     { 0, 0, 1540 },     { 0, 0, 1539 },     { 0, 0, 1539 },\n    { 0, 0, 1539 },     { 0, 0, 1539 },     { 0, 0, 1540 },     { 0, 0, 1541 },     { 0, 0, 1542 },\n    { 0, 0, 1544 },     { 0, 0, 1546 },     { 0, 0, 1548 },     { 0, 0, 1549 },     { 0, 0, 1550 },\n    { 0, 0, 1551 },     { 0, 0, 1551 },     { 0, 0, 1550 },     { 0, 0, 1549 },     { 0, 0, 1547 },\n    { 0, 0, 1544 },     { 0, 0, 1541 },     { 0, 0, 1537 },     { 0, 0, 1533 },     { 0, 0, 1529 },\n    { 0, 0, 1526 },     { 0, 0, 1523 },     { 0, 0, 1520 },     { 0, 0, 1518 },     { 0, 0, 1516 },\n    { 0, 0, 1516 },     { 0, 0, 1516 },     { 0, 0, 1517 },     { 0, 0, 1518 },     { 0, 0, 1520 },\n    { 0, 0, 1521 },     { 0, 0, 1523 },     { 0, 0, 1525 },     { 0, 0, 1528 },     { 0, 0, 1530 },\n    { 0, 0, 1532 },     { 0, 0, 1535 },     { 0, 0, 1538 },     { 0, 0, 1540 },     { 0, 0, 1543 },\n    { 0, 0, 1545 },     { 0, 0, 1547 },     { 0, 0, 1550 },     { 0, 0, 1552 },     { 0, 0, 1553 },\n    { 0, 0, 1555 },     { 0, 0, 1556 },     { 0, 0, 1557 },     { 0, 0, 1558 },     { 0, 0, 1558 },\n    { 0, 0, 1559 },     { 0, 0, 1559 },     { 0, 0, 1559 },     { 0, 0, 1559 },     { 0, 0, 1559 },\n    { 0, 0, 1559 },     { 0, 0, 1559 },     { 0, 0, 1558 },     { 0, 0, 1558 },     { 0, 0, 1558 },\n    { 0, 0, 1557 },     { 0, 0, 1557 },     { 0, 0, 1557 },     { 0, 0, 1556 },     { 0, 0, 1556 },\n    { 0, 0, 1556 },     { 0, 0, 1555 },     { 0, 0, 1555 },     { 0, 0, 1554 },     { 0, 0, 1554 },\n    { 0, 0, 1553 },     { 0, 0, 1552 },     { 0, 0, 1551 },     { 0, 0, 1551 },     { 0, 0, 1550 },\n    { 0, 0, 1549 },     { 0, 0, 1548 },     { 0, 0, 1548 },     { 0, 0, 1547 },     { 0, 0, 1546 },\n    { 0, 0, 1546 },     { 0, 0, 1545 },     { 0, 0, 1545 },     { 0, 0, 1545 },     { 0, 0, 1545 },\n    { 0, 0, 1545 },     { 0, 0, 1545 },     { 0, 0, 1546 },     { 0, 0, 1547 },     { 0, 0, 1549 },\n    { 0, 0, 1551 },     { 0, 0, 1553 },     { 0, 0, 1554 },     { 0, 0, 1555 },     { 0, 0, 1556 },\n    { 0, 0, 1556 },     { 0, 0, 1557 },     { 0, 0, 1557 },     { 0, 0, 1557 },     { 0, 0, 1557 },\n    { 0, 0, 1557 },     { 0, 0, 1557 },     { 0, 0, 1557 },     { 0, 0, 1557 },     { 0, 0, 1557 },\n    { 0, 0, 1557 },     { 0, 0, 1557 },     { 0, 0, 1557 },     { 0, 0, 1557 },     { 0, 0, 1557 },\n    { 0, 0, 1557 },     { 0, 0, 1557 },     { 0, 0, 1556 },     { 0, 0, 1556 },     { 0, 0, 1556 },\n    { 0, 0, 1556 },     { 0, 0, 1556 },     { 0, 0, 1556 },     { 0, 0, 1556 },     { 0, 0, 1556 },\n    { 0, 0, 1556 },     { 0, 0, 1556 },     { 0, 0, 1556 },     { 0, 0, 1556 },     { 0, 0, 1556 },\n    { 0, 0, 1554 },     { 0, 0, 1552 },     { 0, 0, 1550 },     { 0, 0, 1548 },     { 0, 0, 1546 },\n    { 0, 0, 1543 },     { 0, 0, 1542 },     { 0, 0, 1540 },     { 0, 0, 1539 },     { 0, 0, 1539 },\n};\n\nstatic s16 animdata_mario_cap_2[][3] = {\n    { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1538 }, { 0, 0, 1538 }, { 0, 0, 1538 },\n    { 0, 0, 1537 }, { 0, 0, 1537 }, { 0, 0, 1536 }, { 0, 0, 1536 }, { 0, 0, 1535 }, { 0, 0, 1535 },\n    { 0, 0, 1535 }, { 0, 0, 1534 }, { 0, 0, 1534 }, { 0, 0, 1534 }, { 0, 0, 1534 }, { 0, 0, 1534 },\n    { 0, 0, 1534 }, { 0, 0, 1535 }, { 0, 0, 1536 }, { 0, 0, 1536 }, { 0, 0, 1538 }, { 0, 0, 1539 },\n    { 0, 0, 1544 }, { 0, 0, 1554 }, { 0, 0, 1566 }, { 0, 0, 1575 }, { 0, 0, 1579 }, { 0, 0, 1579 },\n    { 0, 0, 1577 }, { 0, 0, 1575 }, { 0, 0, 1573 }, { 0, 0, 1570 }, { 0, 0, 1566 }, { 0, 0, 1563 },\n    { 0, 0, 1559 }, { 0, 0, 1555 }, { 0, 0, 1552 }, { 0, 0, 1548 }, { 0, 0, 1545 }, { 0, 0, 1543 },\n    { 0, 0, 1541 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 },\n    { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 },\n    { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 },\n    { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 },\n    { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 },\n    { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 },\n    { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 },\n    { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 },\n    { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 },\n    { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 },\n    { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 },\n    { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 },\n    { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 },\n    { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 },\n    { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 },\n    { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 },\n    { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 },\n    { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 },\n    { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 },\n    { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 },\n    { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 }, { 0, 0, 1539 },\n};\n\nstruct AnimDataInfo anim_mario_cap[] = {\n    { ARRAY_COUNT(animdata_mario_cap_1), GD_ANIM_ROT3S, animdata_mario_cap_1 },\n    { ARRAY_COUNT(animdata_mario_cap_2), GD_ANIM_ROT3S, animdata_mario_cap_2 },\n    END_ANIMDATA_INFO_ARR,\n};\n\nstatic s16 animdata_mario_lips_3_1[][3] = {\n    { 0, 0, -665 },       { 0, 0, -664 },       { 0, 0, -662 },       { 0, 0, -660 },\n    { -1, 0, -656 },      { -1, 0, -652 },      { -2, 0, -648 },      { -3, 1, -643 },\n    { -3, 1, -638 },      { -4, 1, -634 },      { -5, 2, -629 },      { -5, 2, -625 },\n    { -6, 2, -622 },      { -6, 2, -620 },      { -7, 2, -618 },      { -7, 2, -618 },\n    { -6, 2, -619 },      { -6, 2, -622 },      { -5, 2, -626 },      { -4, 1, -633 },\n    { -3, 1, -641 },      { -1, 0, -652 },      { 0, 0, -665 },       { 6, -1, -704 },\n    { 17, -5, -781 },     { 32, -10, -874 },    { 46, -14, -966 },    { 57, -19, -1036 },\n    { 63, -22, -1064 },   { 64, -25, -1061 },   { 64, -27, -1052 },   { 64, -30, -1038 },\n    { 64, -33, -1019 },   { 62, -36, -996 },    { 61, -39, -970 },    { 59, -42, -941 },\n    { 57, -44, -911 },    { 54, -47, -879 },    { 52, -49, -847 },    { 49, -51, -816 },\n    { 46, -53, -786 },    { 44, -55, -758 },    { 41, -56, -733 },    { 39, -57, -711 },\n    { 37, -57, -693 },    { 35, -56, -681 },    { 33, -56, -671 },    { 32, -54, -664 },\n    { 30, -53, -657 },    { 28, -50, -652 },    { 26, -48, -648 },    { 24, -45, -645 },\n    { 22, -42, -643 },    { 20, -39, -642 },    { 18, -35, -642 },    { 16, -32, -642 },\n    { 14, -28, -643 },    { 12, -25, -645 },    { 10, -21, -647 },    { 8, -18, -649 },\n    { 7, -14, -651 },     { 5, -11, -653 },     { 4, -8, -656 },      { 3, -6, -658 },\n    { 2, -4, -660 },      { 1, -2, -662 },      { 0, -1, -663 },      { 0, 0, -664 },\n    { 0, 0, -665 },       { 0, -1, -664 },      { 0, -6, -662 },      { 1, -12, -660 },\n    { 1, -21, -656 },     { 2, -31, -652 },     { 3, -42, -648 },     { 3, -54, -643 },\n    { 4, -65, -639 },     { 5, -76, -635 },     { 6, -85, -631 },     { 6, -94, -628 },\n    { 6, -100, -625 },    { 8, -104, -623 },    { 12, -107, -621 },   { 17, -108, -619 },\n    { 21, -108, -618 },   { 23, -107, -617 },   { 22, -106, -618 },   { 17, -103, -621 },\n    { 6, -100, -625 },    { -19, -93, -636 },   { -63, -83, -654 },   { -111, -71, -673 },\n    { -153, -61, -690 },  { -174, -55, -699 },  { -182, -54, -701 },  { -188, -53, -704 },\n    { -194, -52, -706 },  { -199, -52, -707 },  { -202, -53, -708 },  { -205, -53, -709 },\n    { -207, -54, -709 },  { -208, -55, -709 },  { -209, -56, -709 },  { -208, -57, -708 },\n    { -207, -58, -708 },  { -204, -59, -707 },  { -201, -60, -705 },  { -198, -60, -704 },\n    { -193, -59, -703 },  { -188, -59, -701 },  { -181, -57, -700 },  { -174, -55, -699 },\n    { -156, -50, -695 },  { -123, -39, -688 },  { -81, -26, -680 },   { -41, -13, -673 },\n    { -11, -3, -667 },    { 0, 0, -665 },       { 0, 0, -665 },       { 10, 9, -656 },\n    { 23, 20, -647 },     { 36, 32, -636 },     { 49, 44, -626 },     { 63, 57, -614 },\n    { 78, 69, -603 },     { 92, 82, -592 },     { 105, 94, -582 },    { 118, 105, -572 },\n    { 130, 116, -562 },   { 140, 125, -554 },   { 148, 132, -548 },   { 154, 138, -543 },\n    { 159, 141, -540 },   { 160, 143, -539 },   { 160, 143, -539 },   { 159, 142, -539 },\n    { 158, 141, -540 },   { 157, 140, -542 },   { 156, 139, -543 },   { 154, 137, -545 },\n    { 151, 135, -548 },   { 149, 133, -550 },   { 146, 130, -553 },   { 143, 128, -556 },\n    { 140, 125, -559 },   { 137, 122, -563 },   { 133, 118, -566 },   { 129, 115, -570 },\n    { 125, 111, -574 },   { 121, 108, -578 },   { 117, 104, -582 },   { 112, 100, -587 },\n    { 108, 95, -591 },    { 103, 91, -595 },    { 98, 87, -600 },     { 93, 82, -604 },\n    { 88, 78, -609 },     { 83, 74, -613 },     { 78, 69, -617 },     { 73, 64, -622 },\n    { 68, 60, -626 },     { 63, 55, -630 },     { 58, 51, -634 },     { 53, 46, -638 },\n    { 48, 42, -641 },     { 43, 37, -645 },     { 38, 33, -648 },     { 33, 29, -651 },\n    { 29, 25, -654 },     { 24, 21, -656 },     { 20, 17, -658 },     { 15, 13, -660 },\n    { 11, 9, -662 },      { 7, 6, -663 },       { 3, 3, -664 },       { 0, 0, -665 },\n    { -2, -1, -652 },     { -4, 0, -621 },      { -4, 0, -586 },      { -5, 2, -559 },\n    { -4, 1, -555 },      { -4, 0, -574 },      { -4, -2, -607 },     { -3, -5, -648 },\n    { -2, -8, -693 },     { -1, -11, -736 },    { 0, -14, -772 },     { 0, -16, -796 },\n    { 1, -17, -802 },     { 1, -16, -797 },     { 1, -15, -788 },     { 0, -14, -777 },\n    { 0, -12, -763 },     { 0, -10, -747 },     { 0, -7, -729 },      { -1, -4, -709 },\n    { -1, -1, -689 },     { -2, 1, -667 },      { -2, 4, -644 },      { -3, 7, -621 },\n    { -4, 10, -598 },     { -4, 13, -576 },     { -5, 15, -553 },     { -5, 17, -532 },\n    { -5, 19, -512 },     { -5, 20, -493 },     { -5, 20, -476 },     { -5, 20, -461 },\n    { -5, 19, -448 },     { -4, 17, -438 },     { -3, 14, -430 },     { -2, 10, -427 },\n    { -1, 5, -426 },      { 0, 0, -430 },       { 7, -25, -482 },     { 22, -76, -602 },\n    { 39, -136, -749 },   { 51, -188, -884 },   { 53, -217, -967 },   { 46, -222, -1002 },\n    { 33, -219, -1021 },  { 18, -208, -1028 },  { 0, -194, -1026 },   { -17, -177, -1019 },\n    { -34, -161, -1010 }, { -49, -147, -1004 }, { -60, -138, -1002 }, { -66, -133, -1005 },\n    { -70, -130, -1007 }, { -72, -129, -1008 }, { -73, -128, -1008 }, { -72, -128, -1009 },\n    { -72, -128, -1009 }, { -71, -129, -1009 }, { -71, -129, -1009 }, { -71, -129, -1009 },\n    { -71, -129, -1009 }, { -70, -129, -1010 }, { -70, -129, -1010 }, { -69, -128, -1011 },\n    { -69, -128, -1011 }, { -68, -128, -1012 }, { -67, -129, -1013 }, { -67, -129, -1013 },\n    { -66, -129, -1014 }, { -65, -129, -1014 }, { -64, -129, -1014 }, { -64, -129, -1014 },\n    { -63, -130, -1014 }, { -62, -130, -1014 }, { -62, -131, -1014 }, { -61, -131, -1013 },\n    { -61, -132, -1013 }, { -60, -133, -1012 }, { -60, -134, -1010 }, { -60, -135, -1009 },\n    { -59, -136, -1007 }, { -59, -137, -1005 }, { -60, -138, -1002 }, { -60, -140, -999 },\n    { -60, -142, -995 },  { -61, -144, -991 },  { -62, -147, -986 },  { -63, -149, -980 },\n    { -64, -152, -974 },  { -65, -155, -967 },  { -66, -159, -960 },  { -67, -162, -953 },\n    { -68, -165, -946 },  { -70, -169, -939 },  { -71, -172, -932 },  { -72, -175, -925 },\n    { -73, -178, -918 },  { -74, -181, -912 },  { -76, -184, -906 },  { -77, -187, -900 },\n    { -77, -189, -895 },  { -78, -191, -891 },  { -79, -193, -887 },  { -79, -194, -884 },\n    { -80, -196, -881 },  { -80, -197, -879 },  { -81, -198, -877 },  { -81, -199, -875 },\n    { -81, -199, -873 },  { -81, -200, -873 },  { -81, -200, -872 },  { -81, -200, -872 },\n    { -81, -200, -873 },  { -81, -199, -875 },  { -81, -198, -877 },  { -80, -197, -880 },\n    { -80, -195, -883 },  { -79, -193, -887 },  { -78, -190, -894 },  { -76, -185, -903 },\n    { -74, -179, -916 },  { -72, -173, -929 },  { -69, -166, -944 },  { -67, -159, -959 },\n    { -65, -152, -973 },  { -62, -146, -985 },  { -61, -142, -995 },  { -60, -138, -1002 },\n    { -59, -136, -1007 }, { -58, -135, -1010 }, { -58, -134, -1011 }, { -58, -134, -1012 },\n    { -58, -134, -1011 }, { -58, -135, -1010 }, { -58, -135, -1009 }, { -59, -136, -1007 },\n    { -59, -137, -1005 }, { -59, -138, -1004 }, { -59, -138, -1003 }, { -60, -138, -1002 },\n    { -60, -138, -1002 }, { -60, -138, -1002 }, { -60, -138, -1002 }, { -60, -138, -1002 },\n    { -60, -138, -1002 }, { -60, -138, -1002 }, { -60, -138, -1002 }, { -60, -138, -1002 },\n    { -60, -138, -1002 }, { -60, -138, -1002 }, { -60, -138, -1002 }, { -60, -138, -1002 },\n    { -60, -138, -1002 }, { -60, -138, -1002 }, { -60, -138, -1002 }, { -60, -138, -1003 },\n    { -59, -138, -1003 }, { -59, -138, -1003 }, { -59, -138, -1003 }, { -59, -138, -1003 },\n    { -59, -138, -1004 }, { -59, -139, -1004 }, { -59, -139, -1004 }, { -59, -139, -1005 },\n    { -59, -139, -1005 }, { -59, -139, -1005 }, { -59, -139, -1006 }, { -59, -139, -1006 },\n    { -59, -139, -1007 }, { -59, -139, -1007 }, { -58, -139, -1008 }, { -58, -139, -1008 },\n    { -58, -139, -1008 }, { -58, -139, -1009 }, { -58, -139, -1009 }, { -58, -139, -1010 },\n    { -58, -139, -1010 }, { -58, -140, -1011 }, { -58, -140, -1011 }, { -58, -140, -1011 },\n    { -58, -140, -1012 }, { -58, -140, -1012 }, { -57, -140, -1012 }, { -57, -140, -1013 },\n    { -57, -140, -1013 }, { -57, -140, -1013 }, { -57, -140, -1014 }, { -57, -140, -1014 },\n    { -57, -140, -1014 }, { -57, -140, -1014 }, { -57, -140, -1014 }, { -57, -140, -1014 },\n    { -57, -140, -1014 }, { -57, -140, -1014 }, { -57, -140, -1014 }, { -57, -140, -1014 },\n    { -57, -140, -1014 }, { -57, -140, -1013 }, { -57, -140, -1013 }, { -57, -140, -1013 },\n    { -58, -140, -1012 }, { -58, -140, -1012 }, { -58, -140, -1011 }, { -58, -139, -1010 },\n    { -58, -139, -1010 }, { -58, -139, -1009 }, { -58, -139, -1008 }, { -59, -139, -1007 },\n    { -59, -139, -1006 }, { -59, -139, -1005 }, { -59, -138, -1004 }, { -60, -138, -1002 },\n    { -62, -136, -989 },  { -68, -132, -962 },  { -74, -128, -934 },  { -77, -125, -918 },\n    { -78, -125, -915 },  { -78, -125, -914 },  { -78, -125, -915 },  { -77, -125, -918 },\n    { -77, -126, -921 },  { -76, -126, -925 },  { -75, -127, -928 },  { -75, -127, -931 },\n    { -74, -127, -932 },  { -75, -127, -930 },  { -76, -127, -926 },  { -77, -125, -918 },\n    { -81, -122, -898 },  { -89, -117, -862 },  { -97, -111, -819 },  { -106, -105, -779 },\n    { -112, -100, -750 }, { -114, -98, -742 },  { -113, -99, -751 },  { -110, -100, -768 },\n    { -107, -102, -791 }, { -102, -105, -818 }, { -97, -108, -848 },  { -92, -111, -880 },\n    { -86, -114, -911 },  { -81, -117, -940 },  { -77, -121, -966 },  { -74, -124, -987 },\n    { -72, -126, -1002 }, { -71, -129, -1009 }, { -72, -131, -1011 }, { -72, -132, -1011 },\n    { -73, -134, -1011 }, { -74, -136, -1011 }, { -76, -138, -1009 }, { -77, -140, -1007 },\n    { -79, -142, -1004 }, { -80, -143, -1000 }, { -82, -145, -996 },  { -84, -147, -991 },\n    { -86, -148, -986 },  { -88, -150, -980 },  { -90, -152, -974 },  { -93, -154, -968 },\n    { -95, -155, -961 },  { -97, -157, -954 },  { -100, -158, -947 }, { -102, -160, -940 },\n    { -104, -162, -933 }, { -107, -163, -925 }, { -109, -165, -918 }, { -111, -167, -911 },\n    { -113, -169, -904 }, { -115, -170, -897 }, { -117, -172, -891 }, { -119, -174, -884 },\n    { -121, -175, -878 }, { -123, -177, -873 }, { -124, -179, -868 }, { -126, -181, -863 },\n    { -127, -183, -859 }, { -128, -185, -855 }, { -129, -187, -852 }, { -129, -189, -850 },\n    { -130, -191, -849 }, { -130, -193, -848 }, { -130, -195, -847 }, { -130, -197, -847 },\n    { -130, -200, -846 }, { -130, -203, -846 }, { -130, -205, -847 }, { -129, -208, -847 },\n    { -129, -211, -848 }, { -128, -214, -849 }, { -128, -217, -850 }, { -127, -221, -851 },\n    { -126, -224, -852 }, { -126, -227, -854 }, { -125, -230, -856 }, { -124, -234, -857 },\n    { -123, -237, -859 }, { -122, -240, -861 }, { -121, -243, -864 }, { -120, -247, -866 },\n    { -119, -250, -868 }, { -118, -253, -871 }, { -116, -256, -873 }, { -115, -259, -876 },\n    { -114, -262, -878 }, { -113, -265, -881 }, { -111, -267, -884 }, { -110, -270, -887 },\n    { -109, -272, -889 }, { -108, -274, -892 }, { -106, -277, -895 }, { -105, -278, -898 },\n    { -104, -280, -900 }, { -103, -282, -903 }, { -102, -283, -905 }, { -100, -284, -908 },\n    { -99, -285, -910 },  { -98, -286, -913 },  { -97, -286, -915 },  { -96, -286, -917 },\n    { -95, -286, -919 },  { -94, -286, -921 },  { -93, -285, -923 },  { -93, -282, -925 },\n    { -92, -276, -928 },  { -90, -266, -932 },  { -89, -254, -935 },  { -88, -240, -939 },\n    { -87, -225, -942 },  { -86, -210, -945 },  { -85, -194, -948 },  { -85, -180, -950 },\n    { -84, -167, -951 },  { -84, -156, -951 },  { -84, -148, -950 },  { -85, -144, -947 },\n    { -90, -166, -926 },  { -100, -213, -890 }, { -105, -241, -868 }, { -107, -246, -864 },\n    { -110, -250, -862 }, { -113, -252, -860 }, { -116, -253, -859 }, { -120, -253, -859 },\n    { -123, -253, -859 }, { -125, -252, -860 }, { -127, -250, -862 }, { -128, -248, -863 },\n    { -127, -246, -865 }, { -125, -244, -866 }, { -121, -243, -867 }, { -114, -242, -868 },\n    { -105, -241, -868 }, { -93, -241, -868 },  { -75, -241, -868 },  { -55, -241, -868 },\n    { -31, -241, -868 },  { -5, -241, -868 },   { 21, -241, -868 },   { 48, -241, -868 },\n    { 75, -241, -868 },   { 102, -241, -868 },  { 126, -241, -868 },  { 147, -241, -868 },\n    { 166, -241, -868 },  { 179, -241, -868 },  { 188, -241, -868 },  { 192, -241, -868 },\n    { 187, -241, -868 },  { 175, -241, -868 },  { 156, -241, -868 },  { 133, -241, -868 },\n    { 105, -241, -868 },  { 74, -241, -868 },   { 43, -241, -868 },   { 11, -241, -868 },\n    { -18, -241, -868 },  { -46, -241, -868 },  { -70, -241, -868 },  { -89, -241, -868 },\n    { -101, -241, -868 }, { -105, -241, -868 }, { -102, -241, -868 }, { -91, -241, -868 },\n    { -74, -241, -868 },  { -53, -241, -868 },  { -28, -241, -868 },  { 0, -241, -868 },\n    { 28, -241, -868 },   { 57, -241, -868 },   { 87, -241, -868 },   { 114, -241, -868 },\n    { 139, -241, -868 },  { 161, -241, -868 },  { 177, -241, -868 },  { 188, -241, -868 },\n    { 192, -241, -868 },  { 187, -241, -868 },  { 175, -241, -868 },  { 156, -241, -868 },\n    { 133, -241, -868 },  { 105, -241, -868 },  { 74, -241, -868 },   { 43, -241, -868 },\n    { 11, -241, -868 },   { -18, -241, -868 },  { -46, -241, -868 },  { -70, -241, -868 },\n    { -89, -241, -868 },  { -101, -241, -868 }, { -105, -241, -868 }, { -100, -241, -868 },\n    { -86, -241, -868 },  { -65, -241, -868 },  { -38, -241, -868 },  { -7, -241, -868 },\n    { 25, -241, -868 },   { 60, -241, -868 },   { 93, -241, -868 },   { 124, -241, -868 },\n    { 151, -241, -868 },  { 173, -241, -868 },  { 187, -241, -868 },  { 192, -241, -868 },\n    { 188, -242, -869 },  { 178, -242, -869 },  { 162, -243, -870 },  { 142, -245, -871 },\n    { 118, -246, -872 },  { 91, -247, -873 },   { 63, -248, -874 },   { 34, -250, -875 },\n    { 5, -250, -876 },    { -21, -250, -876 },  { -46, -250, -876 },  { -68, -249, -875 },\n    { -86, -248, -874 },  { -99, -245, -871 },  { -105, -241, -868 }, { -108, -237, -865 },\n    { -111, -233, -861 }, { -113, -229, -858 }, { -114, -224, -854 }, { -115, -219, -850 },\n    { -116, -214, -845 }, { -116, -209, -841 }, { -116, -204, -837 }, { -115, -198, -832 },\n    { -114, -193, -828 }, { -113, -187, -823 }, { -111, -182, -818 }, { -109, -176, -813 },\n    { -107, -170, -808 }, { -105, -164, -803 }, { -102, -158, -798 }, { -99, -152, -793 },\n    { -96, -146, -788 },  { -92, -140, -783 },  { -89, -134, -778 },  { -85, -128, -773 },\n    { -81, -122, -768 },  { -78, -116, -762 },  { -73, -110, -757 },  { -69, -103, -752 },\n    { -65, -97, -747 },   { -61, -91, -742 },   { -57, -85, -737 },   { -53, -79, -732 },\n    { -48, -74, -727 },   { -44, -68, -722 },   { -40, -62, -717 },   { -36, -57, -713 },\n    { -32, -51, -708 },   { -28, -46, -703 },   { -24, -40, -699 },   { -21, -35, -695 },\n    { -17, -30, -690 },   { -14, -25, -686 },   { -11, -21, -682 },   { -8, -16, -678 },\n    { -6, -12, -675 },    { -3, -7, -671 },     { -1, -3, -668 },     { 0, 0, -665 },\n    { 1, 3, -662 },       { 2, 7, -659 },       { 3, 10, -656 },      { 4, 13, -654 },\n    { 4, 15, -653 },      { 4, 18, -651 },      { 4, 20, -650 },      { 3, 21, -649 },\n    { 3, 22, -648 },      { 2, 23, -648 },      { 2, 23, -648 },      { 1, 23, -649 },\n    { 1, 22, -649 },      { 0, 21, -650 },      { 0, 19, -652 },      { 0, 16, -654 },\n    { 0, 13, -656 },      { 0, 9, -658 },       { 0, 5, -661 },       { 0, 0, -665 },\n    { 0, -7, -669 },      { 2, -16, -677 },     { 3, -29, -686 },     { 5, -43, -697 },\n    { 6, -59, -709 },     { 8, -76, -721 },     { 10, -95, -733 },    { 12, -114, -745 },\n    { 14, -134, -756 },   { 15, -155, -765 },   { 17, -175, -772 },   { 18, -198, -778 },\n    { 19, -227, -782 },   { 20, -259, -786 },   { 22, -292, -788 },   { 22, -324, -790 },\n    { 23, -353, -790 },   { 24, -376, -790 },   { 24, -392, -789 },   { 23, -398, -788 },\n    { 22, -398, -785 },   { 21, -396, -782 },   { 20, -394, -779 },   { 19, -390, -775 },\n    { 18, -385, -771 },   { 16, -379, -766 },   { 14, -373, -762 },   { 13, -365, -757 },\n    { 11, -357, -752 },   { 9, -348, -747 },    { 7, -339, -741 },    { 6, -330, -736 },\n    { 4, -319, -731 },    { 2, -309, -726 },    { 1, -299, -722 },    { 0, -288, -717 },\n    { -1, -277, -713 },   { -3, -266, -709 },   { -4, -256, -706 },   { -5, -246, -703 },\n    { -6, -235, -701 },   { -6, -226, -699 },   { -7, -217, -698 },   { -7, -208, -698 },\n    { -7, -200, -698 },   { -6, -192, -700 },   { -4, -185, -705 },   { 0, -179, -718 },\n    { 7, -172, -735 },    { 15, -166, -756 },   { 23, -161, -778 },   { 31, -157, -800 },\n    { 37, -154, -820 },   { 41, -153, -837 },   { 42, -154, -849 },   { 32, -164, -848 },\n    { 11, -184, -836 },   { -9, -204, -820 },   { -23, -215, -809 },  { -24, -210, -806 },\n    { -19, -196, -807 },  { -11, -181, -807 },  { -6, -171, -803 },   { -5, -169, -790 },\n    { -4, -173, -770 },   { -5, -177, -753 },   { -5, -181, -736 },   { -6, -186, -719 },\n    { -6, -191, -706 },   { -6, -192, -700 },   { -6, -193, -699 },   { -6, -193, -698 },\n    { -6, -193, -697 },   { -6, -193, -697 },   { -6, -194, -696 },   { -6, -194, -696 },\n    { -6, -194, -695 },   { -6, -194, -695 },   { -6, -194, -694 },   { -7, -194, -694 },\n    { -7, -194, -693 },   { -7, -194, -693 },   { -7, -194, -693 },   { -7, -194, -693 },\n    { -7, -194, -693 },   { -7, -195, -693 },   { -7, -195, -693 },   { -7, -195, -692 },\n    { -7, -195, -693 },   { -7, -195, -693 },   { -7, -195, -693 },   { -7, -194, -693 },\n    { -7, -194, -693 },   { -7, -194, -693 },   { -7, -194, -693 },   { -7, -194, -693 },\n    { -7, -194, -694 },   { -7, -194, -694 },   { -7, -194, -694 },   { -6, -194, -694 },\n    { -6, -194, -695 },   { -6, -194, -695 },   { -6, -194, -695 },   { -6, -194, -695 },\n    { -6, -194, -696 },   { -6, -194, -696 },   { -6, -193, -696 },   { -6, -193, -697 },\n    { -6, -193, -697 },   { -6, -193, -697 },   { -6, -193, -697 },   { -6, -193, -698 },\n    { -6, -193, -698 },   { -6, -193, -698 },   { -6, -193, -698 },   { -6, -193, -699 },\n    { -6, -193, -699 },   { -6, -193, -699 },   { -6, -193, -699 },   { -6, -193, -699 },\n    { -6, -193, -700 },   { -6, -192, -700 },   { -6, -192, -700 },   { -6, -192, -700 },\n    { -6, -192, -700 },   { -6, -192, -700 },   { -6, -192, -700 },   { -6, -192, -700 },\n    { -6, -196, -701 },   { -6, -192, -700 },   { -6, -174, -696 },   { -5, -152, -692 },\n    { -4, -127, -688 },   { -3, -101, -683 },   { -2, -76, -679 },    { -1, -52, -674 },\n    { 0, -31, -670 },     { 0, -14, -667 },     { 0, -3, -665 },      { 0, 0, -665 },\n};\n\nstatic s16 animdata_mario_lips_3_2[][3] = {\n    { -269, -128, -669 }, { -269, -128, -669 }, { -269, -128, -669 }, { -269, -128, -669 },\n    { -269, -128, -669 }, { -269, -128, -669 }, { -269, -128, -669 }, { -269, -128, -669 },\n    { -269, -128, -669 }, { -269, -128, -669 }, { -269, -128, -669 }, { -269, -128, -669 },\n    { -269, -128, -669 }, { -269, -128, -669 }, { -269, -128, -669 }, { -269, -128, -669 },\n    { -269, -128, -669 }, { -269, -128, -669 }, { -269, -128, -669 }, { -269, -128, -669 },\n    { -269, -128, -669 }, { -269, -128, -669 }, { -269, -128, -669 }, { -269, -128, -669 },\n    { -269, -128, -669 }, { -269, -128, -669 }, { -269, -128, -669 }, { -269, -128, -669 },\n    { -269, -128, -669 }, { -269, -128, -669 }, { -269, -128, -669 }, { -269, -128, -669 },\n    { -269, -128, -669 }, { -269, -128, -669 }, { -269, -128, -669 }, { -269, -128, -669 },\n    { -269, -128, -669 }, { -269, -128, -669 }, { -269, -128, -669 }, { -269, -128, -669 },\n    { -269, -128, -669 }, { -269, -128, -669 }, { -269, -128, -669 }, { -269, -128, -669 },\n    { -269, -128, -669 }, { -269, -129, -669 }, { -267, -131, -668 }, { -265, -134, -666 },\n    { -262, -139, -664 }, { -259, -144, -661 }, { -254, -150, -658 }, { -250, -156, -655 },\n    { -245, -163, -651 }, { -239, -171, -647 }, { -234, -178, -643 }, { -228, -186, -639 },\n    { -223, -194, -635 }, { -217, -202, -631 }, { -211, -209, -627 }, { -206, -216, -624 },\n    { -201, -222, -620 }, { -197, -228, -617 }, { -190, -225, -617 }, { -190, -224, -617 },\n    { -190, -224, -617 }, { -190, -224, -617 }, { -190, -225, -617 }, { -190, -225, -617 },\n    { -191, -225, -617 }, { -191, -225, -616 }, { -191, -225, -616 }, { -191, -225, -616 },\n    { -192, -225, -615 }, { -192, -225, -615 }, { -192, -225, -615 }, { -193, -226, -614 },\n    { -193, -226, -614 }, { -193, -226, -613 }, { -194, -226, -613 }, { -194, -227, -612 },\n    { -195, -227, -612 }, { -195, -227, -611 }, { -196, -227, -611 }, { -196, -227, -610 },\n    { -197, -228, -610 }, { -197, -228, -609 }, { -198, -228, -609 }, { -198, -229, -608 },\n    { -199, -229, -608 }, { -199, -229, -607 }, { -200, -229, -607 }, { -200, -230, -606 },\n    { -201, -230, -606 }, { -201, -230, -605 }, { -202, -230, -605 }, { -202, -230, -604 },\n    { -203, -231, -604 }, { -203, -231, -603 }, { -203, -231, -603 }, { -204, -231, -603 },\n    { -204, -231, -603 }, { -204, -231, -602 }, { -205, -232, -602 }, { -205, -232, -602 },\n    { -205, -232, -602 }, { -205, -232, -602 }, { -205, -232, -602 }, { -205, -232, -602 },\n    { -205, -232, -602 }, { -205, -232, -602 }, { -205, -232, -602 }, { -205, -232, -602 },\n    { -205, -232, -602 }, { -204, -232, -603 }, { -204, -231, -603 }, { -204, -231, -603 },\n    { -203, -231, -604 }, { -203, -231, -604 }, { -202, -230, -605 }, { -201, -230, -606 },\n    { -201, -230, -607 }, { -200, -229, -608 }, { -199, -229, -608 }, { -198, -228, -609 },\n    { -197, -228, -611 }, { -196, -227, -612 }, { -194, -227, -613 }, { -193, -226, -614 },\n    { -192, -225, -616 }, { -190, -225, -617 }, { -186, -223, -622 }, { -177, -219, -632 },\n    { -165, -215, -646 }, { -151, -209, -662 }, { -135, -202, -679 }, { -119, -194, -697 },\n    { -103, -187, -713 }, { -89, -179, -727 },  { -78, -172, -736 },  { -70, -165, -741 },\n    { -65, -159, -742 },  { -60, -152, -742 },  { -55, -145, -741 },  { -50, -137, -740 },\n    { -46, -129, -738 },  { -42, -121, -735 },  { -38, -112, -732 },  { -34, -104, -729 },\n    { -30, -95, -725 },   { -27, -87, -721 },   { -23, -79, -716 },   { -20, -70, -712 },\n    { -18, -62, -707 },   { -15, -54, -702 },   { -12, -47, -697 },   { -10, -39, -693 },\n    { -8, -33, -688 },    { -6, -26, -684 },    { -5, -20, -680 },    { -3, -15, -676 },\n    { -2, -11, -673 },    { -1, -7, -670 },     { 0, -4, -668 },      { 0, -1, -666 },\n    { 0, 0, -665 },       { 0, 0, -665 },\n};\n\nstruct AnimDataInfo anim_mario_lips_3[] = {\n    { ARRAY_COUNT(animdata_mario_lips_3_1), GD_ANIM_ROT3S, animdata_mario_lips_3_1 },\n    { ARRAY_COUNT(animdata_mario_lips_3_2), GD_ANIM_ROT3S, animdata_mario_lips_3_2 },\n    END_ANIMDATA_INFO_ARR,\n};\n\nstatic s16 animdata_mario_lips_4_1[][3] = {\n    { 0, 0, -665 },       { 0, 0, -664 },       { 0, 0, -663 },       { 0, 0, -661 },\n    { 0, 0, -659 },       { 0, 0, -656 },       { 0, 0, -653 },       { 0, 0, -650 },\n    { 0, 0, -647 },       { 0, 0, -644 },       { 0, 0, -641 },       { 0, 0, -638 },\n    { 0, 0, -636 },       { 0, 0, -634 },       { 0, 0, -633 },       { 0, 0, -633 },\n    { 0, 0, -634 },       { 0, 0, -636 },       { 0, 0, -639 },       { 0, 0, -643 },\n    { 0, 0, -649 },       { 0, 0, -656 },       { 0, 0, -665 },       { 0, 0, -692 },\n    { 0, 2, -744 },       { 0, 3, -808 },       { 1, 5, -871 },       { 1, 6, -917 },\n    { 2, 7, -934 },       { 2, 7, -929 },       { 2, 7, -919 },       { 3, 7, -906 },\n    { 3, 7, -889 },       { 3, 7, -869 },       { 3, 7, -847 },       { 4, 7, -823 },\n    { 4, 7, -798 },       { 4, 6, -772 },       { 4, 6, -746 },       { 5, 6, -721 },\n    { 5, 6, -696 },       { 5, 5, -672 },       { 5, 5, -650 },       { 5, 5, -631 },\n    { 5, 5, -614 },       { 6, 5, -602 },       { 6, 5, -593 },       { 6, 5, -587 },\n    { 6, 6, -585 },       { 6, 7, -586 },       { 6, 8, -588 },       { 6, 9, -592 },\n    { 6, 9, -596 },       { 6, 10, -601 },      { 6, 10, -605 },      { 6, 10, -607 },\n    { 6, 9, -608 },       { 6, 7, -606 },       { 6, 5, -602 },       { 6, 0, -590 },\n    { 6, -7, -570 },      { 6, -16, -546 },     { 7, -26, -520 },     { 7, -36, -496 },\n    { 7, -45, -477 },     { 7, -51, -465 },     { 7, -53, -465 },     { 3, -27, -566 },\n    { 0, 0, -665 },       { 0, 0, -649 },       { 2, 1, -620 },       { 6, 5, -602 },\n    { 10, 10, -597 },     { 15, 17, -595 },     { 20, 24, -594 },     { 25, 32, -595 },\n    { 30, 39, -596 },     { 35, 46, -598 },     { 39, 52, -599 },     { 43, 58, -600 },\n    { 46, 62, -601 },     { 48, 65, -601 },     { 48, 67, -602 },     { 48, 68, -602 },\n    { 48, 69, -603 },     { 47, 69, -603 },     { 46, 67, -603 },     { 46, 65, -602 },\n    { 46, 62, -601 },     { 46, 55, -597 },     { 47, 43, -591 },     { 48, 30, -585 },\n    { 48, 20, -579 },     { 49, 14, -576 },     { 49, 12, -575 },     { 49, 11, -574 },\n    { 50, 10, -572 },     { 50, 9, -571 },      { 51, 9, -570 },      { 52, 9, -568 },\n    { 52, 9, -567 },      { 53, 10, -566 },     { 53, 10, -565 },     { 54, 11, -565 },\n    { 54, 12, -565 },     { 54, 13, -565 },     { 54, 13, -565 },     { 54, 14, -566 },\n    { 53, 14, -568 },     { 52, 14, -570 },     { 50, 14, -573 },     { 49, 14, -576 },\n    { 43, 12, -585 },     { 34, 10, -602 },     { 22, 6, -623 },      { 11, 3, -643 },\n    { 3, 0, -659 },       { 0, 0, -665 },       { 0, 0, -665 },       { -14, 0, -665 },\n    { -29, 0, -665 },     { -46, 0, -665 },     { -64, 0, -665 },     { -82, 0, -665 },\n    { -100, 0, -665 },    { -118, 0, -665 },    { -136, 0, -665 },    { -152, 0, -665 },\n    { -167, 0, -665 },    { -180, 0, -665 },    { -191, 0, -665 },    { -199, 0, -665 },\n    { -204, 0, -665 },    { -206, 0, -665 },    { -206, 0, -665 },    { -205, 0, -665 },\n    { -204, 0, -665 },    { -202, 0, -666 },    { -200, 0, -666 },    { -198, 0, -667 },\n    { -195, 0, -668 },    { -192, 0, -668 },    { -188, 0, -669 },    { -185, 0, -670 },\n    { -181, 0, -671 },    { -176, 0, -672 },    { -172, 0, -673 },    { -167, 0, -674 },\n    { -161, 0, -675 },    { -156, 0, -676 },    { -151, 0, -677 },    { -145, 0, -678 },\n    { -139, 0, -679 },    { -133, 0, -680 },    { -127, 0, -681 },    { -120, 0, -681 },\n    { -114, 0, -682 },    { -108, 0, -682 },    { -101, 0, -683 },    { -95, 0, -683 },\n    { -88, 0, -683 },     { -81, 0, -683 },     { -75, 0, -683 },     { -68, 0, -683 },\n    { -62, 0, -683 },     { -56, 0, -682 },     { -49, 0, -681 },     { -43, 0, -680 },\n    { -37, 0, -679 },     { -31, 0, -678 },     { -25, 0, -676 },     { -20, 0, -675 },\n    { -14, 0, -672 },     { -9, 0, -670 },      { -4, 0, -667 },      { 0, 0, -665 },\n    { 3, -1, -647 },      { 5, -3, -609 },      { 7, -4, -566 },      { 7, -4, -532 },\n    { 7, 0, -522 },       { 6, 6, -537 },       { 4, 17, -565 },      { 2, 30, -602 },\n    { 0, 42, -643 },      { -1, 55, -682 },     { -3, 65, -716 },     { -5, 72, -739 },\n    { -5, 74, -745 },     { -6, 73, -741 },     { -5, 71, -733 },     { -5, 67, -724 },\n    { -4, 64, -711 },     { -3, 59, -697 },     { -2, 54, -681 },     { -1, 48, -664 },\n    { 0, 42, -645 },      { 1, 35, -626 },      { 3, 28, -606 },      { 4, 22, -586 },\n    { 5, 15, -565 },      { 6, 8, -545 },       { 7, 2, -526 },       { 8, -3, -507 },\n    { 9, -8, -489 },      { 9, -13, -473 },     { 9, -17, -458 },     { 9, -20, -445 },\n    { 8, -23, -435 },     { 7, -24, -426 },     { 5, -24, -421 },     { 3, -23, -419 },\n    { 0, -20, -419 },     { -2, -16, -424 },    { -17, 8, -474 },     { -45, 64, -587 },\n    { -78, 130, -727 },   { -106, 187, -856 },  { -117, 218, -937 },  { -113, 222, -973 },\n    { -102, 216, -996 },  { -86, 203, -1007 },  { -68, 185, -1010 },  { -48, 165, -1008 },\n    { -29, 145, -1005 },  { -13, 128, -1003 },  { -2, 117, -1005 },   { 4, 111, -1009 },\n    { 8, 107, -1012 },    { 10, 104, -1014 },   { 10, 103, -1015 },   { 9, 103, -1016 },\n    { 9, 103, -1016 },    { 8, 104, -1016 },    { 8, 104, -1016 },    { 8, 104, -1016 },\n    { 7, 103, -1017 },    { 7, 103, -1017 },    { 6, 103, -1018 },    { 6, 103, -1018 },\n    { 5, 102, -1019 },    { 4, 102, -1020 },    { 3, 102, -1020 },    { 2, 102, -1021 },\n    { 1, 102, -1022 },    { 0, 102, -1022 },    { 0, 102, -1022 },    { 0, 102, -1022 },\n    { -1, 102, -1022 },   { -2, 103, -1022 },   { -2, 104, -1022 },   { -3, 105, -1021 },\n    { -3, 106, -1020 },   { -4, 107, -1018 },   { -4, 108, -1016 },   { -4, 110, -1014 },\n    { -3, 112, -1011 },   { -3, 114, -1008 },   { -2, 117, -1005 },   { -1, 120, -1000 },\n    { 0, 124, -995 },     { 1, 128, -989 },     { 3, 133, -981 },     { 6, 139, -973 },\n    { 8, 144, -965 },     { 11, 151, -956 },    { 14, 157, -946 },    { 17, 164, -936 },\n    { 20, 170, -927 },    { 23, 177, -917 },    { 27, 184, -907 },    { 30, 190, -897 },\n    { 33, 197, -888 },    { 36, 203, -879 },    { 38, 208, -870 },    { 41, 213, -863 },\n    { 43, 218, -856 },    { 45, 222, -849 },    { 46, 226, -844 },    { 48, 229, -840 },\n    { 49, 231, -836 },    { 50, 234, -832 },    { 51, 236, -829 },    { 52, 237, -827 },\n    { 52, 239, -825 },    { 53, 240, -824 },    { 53, 240, -824 },    { 53, 240, -824 },\n    { 52, 239, -825 },    { 52, 238, -827 },    { 51, 236, -830 },    { 50, 233, -834 },\n    { 48, 230, -838 },    { 46, 226, -844 },    { 44, 220, -853 },    { 39, 210, -867 },\n    { 34, 199, -884 },    { 28, 186, -903 },    { 22, 172, -923 },    { 16, 158, -944 },\n    { 10, 145, -963 },    { 4, 133, -981 },     { 0, 124, -995 },     { -2, 117, -1005 },\n    { -4, 113, -1011 },   { -5, 110, -1015 },   { -6, 109, -1017 },   { -6, 108, -1018 },\n    { -6, 109, -1017 },   { -5, 110, -1016 },   { -5, 111, -1014 },   { -4, 113, -1011 },\n    { -3, 114, -1009 },   { -3, 116, -1007 },   { -2, 117, -1005 },   { -2, 117, -1005 },\n    { -2, 117, -1005 },   { -2, 117, -1005 },   { -2, 117, -1005 },   { -2, 117, -1005 },\n    { -2, 117, -1005 },   { -2, 117, -1005 },   { -2, 117, -1005 },   { -2, 117, -1005 },\n    { -2, 117, -1005 },   { -2, 117, -1005 },   { -2, 117, -1005 },   { -2, 117, -1005 },\n    { -2, 117, -1005 },   { -2, 117, -1005 },   { -2, 117, -1005 },   { -2, 117, -1005 },\n    { -2, 117, -1005 },   { -2, 117, -1005 },   { -2, 117, -1006 },   { -2, 117, -1006 },\n    { -2, 117, -1006 },   { -2, 117, -1007 },   { -2, 117, -1007 },   { -3, 117, -1007 },\n    { -3, 117, -1008 },   { -3, 117, -1008 },   { -3, 117, -1009 },   { -3, 117, -1009 },\n    { -3, 117, -1010 },   { -3, 117, -1010 },   { -3, 117, -1011 },   { -3, 117, -1011 },\n    { -3, 117, -1012 },   { -3, 117, -1012 },   { -4, 117, -1013 },   { -4, 117, -1013 },\n    { -4, 117, -1014 },   { -4, 117, -1014 },   { -4, 117, -1015 },   { -4, 117, -1015 },\n    { -4, 117, -1015 },   { -4, 117, -1016 },   { -4, 117, -1016 },   { -4, 117, -1017 },\n    { -4, 117, -1017 },   { -4, 118, -1017 },   { -4, 118, -1017 },   { -5, 118, -1018 },\n    { -5, 118, -1018 },   { -5, 118, -1018 },   { -5, 118, -1018 },   { -5, 118, -1018 },\n    { -5, 118, -1018 },   { -5, 118, -1018 },   { -5, 118, -1018 },   { -5, 118, -1018 },\n    { -4, 118, -1018 },   { -4, 118, -1017 },   { -4, 117, -1017 },   { -4, 117, -1016 },\n    { -4, 117, -1016 },   { -4, 117, -1015 },   { -4, 117, -1015 },   { -4, 117, -1014 },\n    { -4, 117, -1013 },   { -3, 117, -1012 },   { -3, 117, -1011 },   { -3, 117, -1010 },\n    { -3, 117, -1009 },   { -3, 117, -1008 },   { -2, 117, -1006 },   { -2, 117, -1005 },\n    { 0, 116, -990 },     { 6, 115, -959 },     { 12, 113, -927 },    { 16, 112, -909 },\n    { 17, 112, -904 },    { 17, 112, -903 },    { 17, 112, -905 },    { 16, 112, -908 },\n    { 15, 113, -912 },    { 14, 113, -916 },    { 14, 113, -920 },    { 13, 113, -923 },\n    { 13, 113, -924 },    { 13, 113, -922 },    { 14, 113, -918 },    { 16, 112, -909 },\n    { 20, 111, -885 },    { 28, 110, -844 },    { 38, 108, -795 },    { 46, 106, -749 },\n    { 53, 104, -717 },    { 55, 103, -707 },    { 54, 102, -718 },    { 51, 102, -737 },\n    { 47, 101, -763 },    { 43, 101, -793 },    { 37, 100, -827 },    { 32, 100, -863 },\n    { 26, 100, -898 },    { 21, 100, -932 },    { 16, 100, -962 },    { 12, 101, -988 },\n    { 9, 102, -1006 },    { 8, 104, -1016 },    { 8, 106, -1020 },    { 8, 108, -1024 },\n    { 8, 110, -1027 },    { 8, 112, -1029 },    { 8, 114, -1031 },    { 9, 116, -1031 },\n    { 9, 118, -1032 },    { 10, 121, -1031 },   { 11, 123, -1030 },   { 12, 125, -1028 },\n    { 13, 128, -1026 },   { 14, 130, -1024 },   { 15, 133, -1021 },   { 17, 135, -1017 },\n    { 18, 138, -1014 },   { 19, 141, -1010 },   { 20, 143, -1006 },   { 22, 146, -1002 },\n    { 23, 148, -998 },    { 24, 151, -993 },    { 26, 154, -989 },    { 27, 157, -984 },\n    { 28, 159, -980 },    { 30, 162, -976 },    { 31, 165, -971 },    { 32, 167, -967 },\n    { 33, 170, -964 },    { 34, 173, -960 },    { 35, 176, -957 },    { 36, 178, -954 },\n    { 36, 181, -952 },    { 37, 184, -950 },    { 37, 186, -948 },    { 37, 189, -947 },\n    { 38, 192, -947 },    { 37, 194, -947 },    { 37, 197, -947 },    { 37, 200, -948 },\n    { 37, 202, -948 },    { 37, 205, -949 },    { 36, 208, -950 },    { 36, 211, -951 },\n    { 36, 214, -952 },    { 35, 216, -953 },    { 34, 219, -954 },    { 34, 222, -956 },\n    { 33, 225, -957 },    { 33, 228, -959 },    { 32, 231, -960 },    { 31, 234, -962 },\n    { 30, 237, -964 },    { 29, 240, -966 },    { 29, 243, -968 },    { 28, 246, -970 },\n    { 27, 248, -972 },    { 26, 251, -974 },    { 25, 254, -976 },    { 24, 257, -978 },\n    { 23, 260, -980 },    { 22, 263, -982 },    { 22, 266, -984 },    { 21, 268, -986 },\n    { 20, 271, -988 },    { 19, 274, -990 },    { 18, 276, -992 },    { 17, 279, -994 },\n    { 16, 282, -996 },    { 15, 284, -998 },    { 15, 287, -1000 },   { 14, 289, -1002 },\n    { 13, 291, -1004 },   { 12, 294, -1005 },   { 12, 296, -1007 },   { 11, 298, -1008 },\n    { 10, 300, -1010 },   { 10, 302, -1011 },   { 9, 304, -1012 },    { 9, 306, -1013 },\n    { 9, 307, -1014 },    { 8, 308, -1015 },    { 8, 309, -1015 },    { 8, 309, -1015 },\n    { 8, 309, -1015 },    { 8, 308, -1015 },    { 8, 308, -1015 },    { 9, 308, -1014 },\n    { 9, 307, -1014 },    { 9, 306, -1014 },    { 9, 306, -1013 },    { 9, 305, -1013 },\n    { 9, 305, -1013 },    { 9, 304, -1012 },    { 9, 304, -1012 },    { 10, 304, -1012 },\n    { 12, 304, -1013 },   { 14, 304, -1013 },   { 17, 305, -1013 },   { 20, 305, -1013 },\n    { 23, 305, -1013 },   { 26, 305, -1013 },   { 28, 305, -1014 },   { 29, 305, -1014 },\n    { 28, 305, -1014 },   { 27, 305, -1014 },   { 23, 305, -1013 },   { 17, 305, -1013 },\n    { 9, 304, -1012 },    { -1, 304, -1012 },   { -17, 303, -1011 },  { -36, 302, -1009 },\n    { -57, 300, -1008 },  { -80, 299, -1006 },  { -105, 298, -1005 }, { -130, 296, -1003 },\n    { -154, 295, -1001 }, { -178, 294, -1000 }, { -200, 293, -998 },  { -220, 292, -997 },\n    { -236, 291, -996 },  { -249, 290, -995 },  { -257, 290, -994 },  { -260, 289, -994 },\n    { -256, 290, -994 },  { -245, 290, -995 },  { -228, 291, -996 },  { -206, 292, -998 },\n    { -181, 294, -999 },  { -153, 295, -1001 }, { -125, 297, -1003 }, { -96, 298, -1005 },\n    { -68, 300, -1007 },  { -43, 301, -1009 },  { -22, 302, -1010 },  { -5, 303, -1011 },\n    { 5, 304, -1012 },    { 9, 304, -1012 },    { 6, 304, -1012 },    { -3, 303, -1011 },\n    { -18, 303, -1010 },  { -37, 302, -1009 },  { -60, 300, -1008 },  { -85, 299, -1006 },\n    { -111, 298, -1004 }, { -138, 296, -1002 }, { -165, 295, -1001 }, { -190, 293, -999 },\n    { -212, 292, -997 },  { -232, 291, -996 },  { -246, 290, -995 },  { -256, 290, -994 },\n    { -260, 289, -994 },  { -256, 290, -994 },  { -245, 290, -995 },  { -228, 291, -996 },\n    { -206, 292, -998 },  { -181, 294, -999 },  { -153, 295, -1001 }, { -125, 297, -1003 },\n    { -96, 298, -1005 },  { -68, 300, -1007 },  { -43, 301, -1009 },  { -22, 302, -1010 },\n    { -5, 303, -1011 },   { 5, 304, -1012 },    { 9, 304, -1012 },    { 5, 304, -1012 },\n    { -7, 303, -1011 },   { -26, 302, -1010 },  { -51, 301, -1008 },  { -79, 299, -1006 },\n    { -109, 298, -1004 }, { -140, 296, -1002 }, { -171, 294, -1000 }, { -199, 293, -998 },\n    { -223, 291, -997 },  { -242, 290, -995 },  { -255, 290, -994 },  { -260, 289, -994 },\n    { -256, 290, -995 },  { -247, 291, -996 },  { -234, 293, -999 },  { -216, 296, -1002 },\n    { -194, 299, -1005 }, { -171, 302, -1008 }, { -146, 304, -1012 }, { -120, 307, -1015 },\n    { -94, 309, -1018 },  { -69, 311, -1020 },  { -46, 312, -1021 },  { -26, 312, -1021 },\n    { -9, 311, -1020 },   { 2, 308, -1017 },    { 9, 304, -1012 },    { 13, 299, -1007 },\n    { 17, 294, -1001 },   { 21, 289, -995 },    { 24, 283, -988 },    { 26, 277, -981 },\n    { 29, 271, -974 },    { 30, 265, -967 },    { 32, 258, -960 },    { 33, 251, -952 },\n    { 35, 245, -944 },    { 35, 238, -937 },    { 36, 231, -928 },    { 36, 223, -920 },\n    { 36, 216, -912 },    { 36, 209, -903 },    { 36, 201, -895 },    { 35, 194, -886 },\n    { 35, 186, -877 },    { 34, 178, -869 },    { 33, 170, -860 },    { 32, 163, -851 },\n    { 30, 155, -842 },    { 29, 147, -833 },    { 27, 139, -824 },    { 26, 132, -816 },\n    { 24, 124, -807 },    { 23, 116, -798 },    { 21, 109, -789 },    { 19, 101, -781 },\n    { 17, 94, -772 },     { 16, 86, -764 },     { 14, 79, -755 },     { 12, 72, -747 },\n    { 11, 65, -739 },     { 9, 58, -731 },      { 7, 51, -724 },      { 6, 45, -716 },\n    { 5, 38, -709 },      { 3, 32, -702 },      { 2, 26, -695 },      { 1, 20, -688 },\n    { 1, 15, -682 },      { 0, 9, -676 },       { 0, 4, -670 },       { 0, 0, -665 },\n    { 0, -4, -660 },      { 0, -8, -655 },      { 0, -11, -652 },     { 0, -14, -649 },\n    { 0, -16, -647 },     { 0, -17, -646 },     { 0, -19, -645 },     { 0, -19, -644 },\n    { 0, -20, -644 },     { 0, -19, -645 },     { 0, -19, -646 },     { 0, -18, -647 },\n    { 0, -17, -648 },     { 0, -15, -650 },     { 0, -13, -652 },     { 0, -11, -654 },\n    { 0, -8, -657 },      { 0, -6, -659 },      { 0, -3, -662 },      { 0, 0, -665 },\n    { 0, 3, -668 },       { -1, 8, -673 },      { -1, 13, -679 },     { -2, 20, -685 },\n    { -3, 27, -693 },     { -4, 36, -701 },     { -6, 46, -710 },     { -7, 58, -719 },\n    { -9, 71, -728 },     { -11, 85, -737 },    { -14, 102, -746 },   { -18, 123, -756 },\n    { -23, 152, -770 },   { -30, 186, -784 },   { -37, 221, -799 },   { -44, 256, -813 },\n    { -50, 289, -825 },   { -54, 316, -834 },   { -56, 335, -838 },   { -54, 344, -836 },\n    { -51, 346, -830 },   { -47, 347, -823 },   { -42, 346, -815 },   { -37, 345, -806 },\n    { -31, 342, -796 },   { -25, 339, -785 },   { -19, 334, -773 },   { -12, 329, -761 },\n    { -6, 324, -748 },    { 0, 317, -735 },     { 7, 310, -722 },     { 15, 303, -709 },\n    { 22, 295, -695 },    { 29, 287, -682 },    { 36, 279, -669 },    { 43, 271, -656 },\n    { 50, 262, -644 },    { 57, 254, -632 },    { 63, 245, -621 },    { 69, 237, -611 },\n    { 75, 229, -601 },    { 80, 222, -593 },    { 85, 215, -586 },    { 90, 208, -580 },\n    { 93, 202, -576 },    { 97, 197, -573 },    { 97, 192, -577 },    { 94, 188, -591 },\n    { 89, 184, -613 },    { 81, 181, -641 },    { 72, 178, -671 },    { 63, 175, -701 },\n    { 55, 173, -728 },    { 48, 170, -750 },    { 44, 167, -765 },    { 46, 165, -759 },\n    { 53, 163, -734 },    { 60, 162, -709 },    { 61, 162, -706 },    { 52, 164, -736 },\n    { 37, 167, -787 },    { 22, 170, -839 },    { 12, 173, -873 },    { 12, 173, -875 },\n    { 17, 172, -857 },    { 23, 171, -836 },    { 29, 170, -817 },    { 36, 169, -794 },\n    { 41, 168, -774 },    { 44, 167, -765 },    { 44, 167, -764 },    { 45, 167, -763 },\n    { 45, 167, -762 },    { 45, 167, -761 },    { 45, 167, -760 },    { 46, 167, -760 },\n    { 46, 167, -759 },    { 46, 167, -758 },    { 46, 167, -758 },    { 46, 167, -757 },\n    { 46, 167, -757 },    { 47, 167, -757 },    { 47, 167, -756 },    { 47, 167, -756 },\n    { 47, 167, -756 },    { 47, 167, -756 },    { 47, 167, -756 },    { 47, 167, -756 },\n    { 47, 167, -756 },    { 47, 167, -756 },    { 47, 167, -756 },    { 47, 167, -756 },\n    { 47, 167, -756 },    { 47, 167, -756 },    { 47, 167, -756 },    { 47, 167, -757 },\n    { 46, 167, -757 },    { 46, 167, -757 },    { 46, 167, -758 },    { 46, 167, -758 },\n    { 46, 167, -758 },    { 46, 167, -759 },    { 46, 167, -759 },    { 46, 167, -759 },\n    { 46, 167, -760 },    { 45, 167, -760 },    { 45, 167, -761 },    { 45, 167, -761 },\n    { 45, 167, -761 },    { 45, 167, -762 },    { 45, 167, -762 },    { 45, 167, -763 },\n    { 45, 167, -763 },    { 45, 167, -763 },    { 44, 167, -764 },    { 44, 167, -764 },\n    { 44, 167, -764 },    { 44, 167, -764 },    { 44, 167, -765 },    { 44, 167, -765 },\n    { 44, 167, -765 },    { 44, 167, -765 },    { 44, 167, -765 },    { 44, 167, -765 },\n    { 44, 167, -765 },    { 44, 167, -765 },    { 44, 167, -765 },    { 44, 167, -765 },\n    { 45, 171, -767 },    { 44, 167, -765 },    { 40, 151, -756 },    { 35, 132, -744 },\n    { 29, 111, -731 },    { 23, 88, -718 },     { 17, 66, -704 },     { 11, 45, -692 },\n    { 7, 27, -681 },      { 3, 12, -672 },      { 0, 3, -667 },       { 0, 0, -665 },\n};\n\nstatic s16 animdata_mario_lips_4_2[][3] = {\n    { 51, 5, -623 },   { 51, 5, -623 },   { 51, 5, -623 },   { 51, 5, -623 },   { 51, 5, -623 },\n    { 51, 5, -623 },   { 51, 5, -623 },   { 51, 5, -623 },   { 51, 5, -623 },   { 51, 5, -623 },\n    { 51, 5, -623 },   { 51, 5, -623 },   { 51, 5, -623 },   { 51, 5, -623 },   { 51, 5, -623 },\n    { 51, 5, -623 },   { 51, 5, -623 },   { 51, 5, -623 },   { 51, 5, -623 },   { 51, 5, -623 },\n    { 51, 5, -623 },   { 51, 5, -623 },   { 51, 5, -623 },   { 51, 5, -623 },   { 51, 5, -623 },\n    { 51, 5, -623 },   { 51, 5, -623 },   { 51, 5, -623 },   { 51, 5, -623 },   { 51, 5, -623 },\n    { 51, 5, -623 },   { 51, 5, -623 },   { 51, 5, -623 },   { 51, 5, -623 },   { 51, 5, -623 },\n    { 51, 5, -623 },   { 51, 5, -623 },   { 51, 5, -623 },   { 51, 5, -623 },   { 51, 5, -623 },\n    { 51, 5, -623 },   { 51, 5, -623 },   { 51, 5, -623 },   { 51, 5, -623 },   { 51, 5, -623 },\n    { 51, 6, -623 },   { 51, 9, -623 },   { 50, 15, -624 },  { 49, 22, -624 },  { 48, 30, -624 },\n    { 47, 39, -625 },  { 46, 50, -625 },  { 45, 61, -626 },  { 43, 72, -626 },  { 42, 83, -627 },\n    { 40, 94, -627 },  { 39, 105, -627 }, { 38, 115, -628 }, { 37, 124, -628 }, { 36, 132, -629 },\n    { 35, 139, -629 }, { 35, 143, -629 }, { 34, 146, -629 }, { 34, 148, -629 }, { 34, 149, -629 },\n    { 34, 151, -629 }, { 34, 152, -629 }, { 33, 153, -629 }, { 33, 154, -629 }, { 33, 156, -628 },\n    { 33, 157, -628 }, { 33, 157, -627 }, { 33, 158, -627 }, { 33, 159, -627 }, { 33, 160, -626 },\n    { 33, 161, -626 }, { 34, 161, -625 }, { 34, 162, -624 }, { 34, 162, -624 }, { 34, 163, -623 },\n    { 34, 163, -622 }, { 34, 163, -622 }, { 34, 163, -621 }, { 34, 164, -620 }, { 35, 164, -620 },\n    { 35, 164, -619 }, { 35, 164, -618 }, { 35, 164, -618 }, { 35, 164, -617 }, { 36, 164, -616 },\n    { 36, 163, -615 }, { 36, 163, -615 }, { 36, 163, -614 }, { 36, 163, -614 }, { 36, 162, -613 },\n    { 37, 162, -612 }, { 37, 162, -612 }, { 37, 161, -611 }, { 37, 161, -611 }, { 37, 161, -610 },\n    { 37, 160, -610 }, { 38, 160, -610 }, { 38, 159, -609 }, { 38, 159, -609 }, { 38, 158, -609 },\n    { 38, 158, -609 }, { 38, 157, -609 }, { 38, 157, -609 }, { 38, 156, -609 }, { 38, 155, -609 },\n    { 38, 155, -609 }, { 38, 154, -609 }, { 38, 154, -609 }, { 38, 153, -610 }, { 38, 153, -610 },\n    { 38, 152, -611 }, { 38, 151, -611 }, { 38, 151, -612 }, { 38, 150, -613 }, { 38, 150, -614 },\n    { 37, 149, -615 }, { 37, 149, -616 }, { 37, 149, -617 }, { 37, 148, -619 }, { 36, 148, -620 },\n    { 36, 147, -622 }, { 36, 147, -623 }, { 35, 147, -625 }, { 35, 146, -627 }, { 34, 146, -629 },\n    { 33, 146, -635 }, { 30, 145, -649 }, { 26, 144, -667 }, { 21, 143, -689 }, { 15, 141, -712 },\n    { 10, 139, -736 }, { 5, 137, -757 },  { 0, 134, -775 },  { -2, 131, -788 }, { -4, 127, -793 },\n    { -5, 123, -793 }, { -5, 118, -792 }, { -6, 113, -790 }, { -6, 107, -787 }, { -6, 102, -784 },\n    { -7, 95, -779 },  { -7, 89, -774 },  { -7, 83, -768 },  { -6, 76, -761 },  { -6, 70, -754 },\n    { -6, 63, -747 },  { -5, 57, -739 },  { -5, 50, -732 },  { -4, 44, -724 },  { -4, 38, -717 },\n    { -3, 32, -709 },  { -3, 27, -702 },  { -2, 21, -695 },  { -2, 17, -689 },  { -1, 12, -683 },\n    { -1, 9, -678 },   { 0, 6, -673 },    { 0, 3, -670 },    { 0, 1, -667 },    { 0, 0, -665 },\n    { 0, 0, -665 },\n};\n\nstruct AnimDataInfo anim_mario_lips_4[] = {\n    { ARRAY_COUNT(animdata_mario_lips_4_1), GD_ANIM_ROT3S, animdata_mario_lips_4_1 },\n    { ARRAY_COUNT(animdata_mario_lips_4_2), GD_ANIM_ROT3S, animdata_mario_lips_4_2 },\n    END_ANIMDATA_INFO_ARR,\n};\n\nstatic s16 animdata_mario_ear_left_1[][3] = {\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1535 },\n    { 1800, 1800, -1535 }, { 1800, 1800, -1535 }, { 1800, 1800, -1535 }, { 1800, 1800, -1535 },\n    { 1800, 1800, -1535 }, { 1800, 1800, -1535 }, { 1800, 1800, -1536 }, { 1800, 1800, -1536 },\n    { 1800, 1800, -1536 }, { 1800, 1800, -1536 }, { 1800, 1800, -1536 }, { 1800, 1800, -1536 },\n    { 1800, 1800, -1537 }, { 1800, 1800, -1537 }, { 1800, 1800, -1537 }, { 1800, 1800, -1537 },\n    { 1800, 1800, -1538 }, { 1800, 1800, -1538 }, { 1800, 1800, -1538 }, { 1800, 1800, -1538 },\n    { 1800, 1800, -1538 }, { 1800, 1800, -1539 }, { 1800, 1800, -1539 }, { 1800, 1800, -1539 },\n    { 1800, 1800, -1539 }, { 1800, 1800, -1540 }, { 1800, 1800, -1540 }, { 1800, 1800, -1540 },\n    { 1800, 1800, -1540 }, { 1800, 1800, -1540 }, { 1800, 1800, -1541 }, { 1800, 1800, -1541 },\n    { 1800, 1800, -1541 }, { 1800, 1800, -1541 }, { 1800, 1800, -1541 }, { 1800, 1800, -1542 },\n    { 1800, 1800, -1542 }, { 1800, 1800, -1542 }, { 1800, 1800, -1542 }, { 1800, 1800, -1542 },\n    { 1800, 1800, -1543 }, { 1800, 1800, -1543 }, { 1800, 1800, -1543 }, { 1800, 1800, -1543 },\n    { 1800, 1800, -1543 }, { 1800, 1800, -1543 }, { 1800, 1800, -1544 }, { 1800, 1800, -1544 },\n    { 1800, 1800, -1544 }, { 1800, 1800, -1544 }, { 1800, 1800, -1544 }, { 1800, 1800, -1544 },\n    { 1800, 1800, -1544 }, { 1800, 1800, -1544 }, { 1800, 1800, -1544 }, { 1800, 1800, -1544 },\n    { 1800, 1800, -1545 }, { 1800, 1800, -1545 }, { 1800, 1800, -1545 }, { 1800, 1800, -1545 },\n    { 1800, 1800, -1545 }, { 1800, 1800, -1545 }, { 1800, 1800, -1545 }, { 1800, 1800, -1544 },\n    { 1800, 1800, -1544 }, { 1800, 1800, -1544 }, { 1800, 1800, -1544 }, { 1800, 1800, -1544 },\n    { 1800, 1800, -1544 }, { 1800, 1800, -1544 }, { 1800, 1800, -1544 }, { 1800, 1800, -1544 },\n    { 1800, 1800, -1543 }, { 1800, 1800, -1543 }, { 1800, 1800, -1543 }, { 1800, 1800, -1543 },\n    { 1800, 1800, -1543 }, { 1800, 1800, -1542 }, { 1800, 1800, -1542 }, { 1800, 1800, -1542 },\n    { 1800, 1800, -1541 }, { 1800, 1800, -1541 }, { 1800, 1800, -1541 }, { 1800, 1800, -1540 },\n    { 1800, 1800, -1540 }, { 1800, 1800, -1539 }, { 1800, 1800, -1539 }, { 1800, 1800, -1538 },\n    { 1800, 1800, -1538 }, { 1800, 1800, -1537 }, { 1800, 1800, -1537 }, { 1800, 1800, -1536 },\n    { 1800, 1800, -1536 }, { 1800, 1800, -1535 }, { 1800, 1800, -1535 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1510 }, { 1800, 1800, -1469 }, { 1800, 1800, -1459 }, { 1800, 1800, -1497 },\n    { 1800, 1800, -1557 }, { 1800, 1800, -1622 }, { 1800, 1800, -1676 }, { 1800, 1800, -1703 },\n    { 1800, 1800, -1691 }, { 1800, 1800, -1651 }, { 1800, 1800, -1601 }, { 1800, 1800, -1556 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1529 }, { 1800, 1800, -1525 }, { 1800, 1800, -1522 },\n    { 1800, 1800, -1520 }, { 1800, 1800, -1519 }, { 1800, 1800, -1519 }, { 1800, 1800, -1519 },\n    { 1800, 1800, -1520 }, { 1800, 1800, -1521 }, { 1800, 1800, -1523 }, { 1800, 1800, -1525 },\n    { 1800, 1800, -1528 }, { 1800, 1800, -1530 }, { 1800, 1800, -1532 }, { 1800, 1800, -1535 },\n    { 1800, 1800, -1537 }, { 1800, 1800, -1539 }, { 1800, 1800, -1540 }, { 1800, 1800, -1542 },\n    { 1800, 1800, -1542 }, { 1800, 1800, -1542 }, { 1800, 1800, -1541 }, { 1800, 1800, -1540 },\n    { 1800, 1800, -1537 }, { 1800, 1800, -1534 }, { 1800, 1800, -1519 }, { 1800, 1800, -1489 },\n    { 1800, 1800, -1454 }, { 1800, 1800, -1425 }, { 1800, 1800, -1414 }, { 1800, 1800, -1415 },\n    { 1800, 1800, -1419 }, { 1800, 1800, -1425 }, { 1800, 1800, -1432 }, { 1800, 1800, -1441 },\n    { 1800, 1800, -1452 }, { 1800, 1800, -1462 }, { 1800, 1800, -1474 }, { 1800, 1800, -1485 },\n    { 1800, 1800, -1496 }, { 1800, 1800, -1506 }, { 1800, 1800, -1516 }, { 1800, 1800, -1523 },\n    { 1800, 1800, -1530 }, { 1800, 1800, -1534 }, { 1800, 1800, -1537 }, { 1800, 1800, -1539 },\n    { 1800, 1800, -1541 }, { 1800, 1800, -1543 }, { 1800, 1800, -1545 }, { 1800, 1800, -1546 },\n    { 1800, 1800, -1547 }, { 1800, 1800, -1548 }, { 1800, 1800, -1548 }, { 1800, 1800, -1549 },\n    { 1800, 1800, -1549 }, { 1800, 1800, -1549 }, { 1800, 1800, -1548 }, { 1800, 1800, -1548 },\n    { 1800, 1800, -1547 }, { 1800, 1800, -1546 }, { 1800, 1800, -1545 }, { 1800, 1800, -1544 },\n    { 1800, 1800, -1543 }, { 1800, 1800, -1542 }, { 1800, 1800, -1540 }, { 1800, 1800, -1539 },\n    { 1800, 1800, -1537 }, { 1800, 1800, -1535 }, { 1800, 1800, -1534 }, { 1800, 1800, -1532 },\n    { 1800, 1800, -1529 }, { 1800, 1800, -1527 }, { 1800, 1800, -1523 }, { 1800, 1800, -1520 },\n    { 1800, 1800, -1516 }, { 1800, 1800, -1511 }, { 1800, 1800, -1507 }, { 1800, 1800, -1502 },\n    { 1800, 1800, -1498 }, { 1800, 1800, -1493 }, { 1800, 1800, -1489 }, { 1800, 1800, -1484 },\n    { 1800, 1800, -1480 }, { 1800, 1800, -1475 }, { 1800, 1800, -1472 }, { 1800, 1800, -1468 },\n    { 1800, 1800, -1465 }, { 1800, 1800, -1462 }, { 1800, 1800, -1459 }, { 1800, 1800, -1457 },\n    { 1800, 1800, -1455 }, { 1800, 1800, -1454 }, { 1800, 1800, -1452 }, { 1800, 1800, -1451 },\n    { 1800, 1800, -1450 }, { 1800, 1800, -1450 }, { 1800, 1800, -1450 }, { 1800, 1800, -1450 },\n    { 1800, 1800, -1450 }, { 1800, 1800, -1451 }, { 1800, 1800, -1453 }, { 1800, 1800, -1454 },\n    { 1800, 1800, -1457 }, { 1800, 1800, -1459 }, { 1800, 1800, -1463 }, { 1800, 1800, -1468 },\n    { 1800, 1800, -1474 }, { 1800, 1800, -1480 }, { 1800, 1800, -1488 }, { 1800, 1800, -1496 },\n    { 1800, 1800, -1505 }, { 1800, 1800, -1514 }, { 1800, 1800, -1524 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1544 }, { 1800, 1800, -1555 }, { 1800, 1800, -1567 }, { 1800, 1800, -1579 },\n    { 1800, 1800, -1592 }, { 1800, 1800, -1604 }, { 1800, 1800, -1617 }, { 1800, 1800, -1630 },\n    { 1800, 1800, -1642 }, { 1800, 1800, -1655 }, { 1800, 1800, -1666 }, { 1800, 1800, -1677 },\n    { 1800, 1800, -1689 }, { 1800, 1800, -1704 }, { 1800, 1800, -1718 }, { 1800, 1800, -1730 },\n    { 1800, 1800, -1739 }, { 1800, 1800, -1741 }, { 1800, 1800, -1734 }, { 1800, 1800, -1713 },\n    { 1800, 1800, -1676 }, { 1800, 1800, -1632 }, { 1800, 1800, -1588 }, { 1800, 1800, -1553 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1527 }, { 1800, 1800, -1521 }, { 1800, 1800, -1517 },\n    { 1800, 1800, -1514 }, { 1800, 1800, -1512 }, { 1800, 1800, -1511 }, { 1800, 1800, -1511 },\n    { 1800, 1800, -1512 }, { 1800, 1800, -1513 }, { 1800, 1800, -1515 }, { 1800, 1800, -1517 },\n    { 1800, 1800, -1519 }, { 1800, 1800, -1522 }, { 1800, 1800, -1524 }, { 1800, 1800, -1527 },\n    { 1800, 1800, -1529 }, { 1800, 1800, -1531 }, { 1800, 1800, -1532 }, { 1800, 1800, -1533 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1535 }, { 1800, 1800, -1536 }, { 1800, 1800, -1536 },\n    { 1800, 1800, -1537 }, { 1800, 1800, -1538 }, { 1800, 1800, -1539 }, { 1800, 1800, -1540 },\n    { 1800, 1800, -1541 }, { 1800, 1800, -1542 }, { 1800, 1800, -1544 }, { 1800, 1800, -1545 },\n    { 1800, 1800, -1546 }, { 1800, 1800, -1548 }, { 1800, 1800, -1549 }, { 1800, 1800, -1550 },\n    { 1800, 1800, -1552 }, { 1800, 1800, -1553 }, { 1800, 1800, -1554 }, { 1800, 1800, -1555 },\n    { 1800, 1800, -1557 }, { 1800, 1800, -1558 }, { 1800, 1800, -1559 }, { 1800, 1800, -1560 },\n    { 1800, 1800, -1561 }, { 1800, 1800, -1562 }, { 1800, 1800, -1563 }, { 1800, 1800, -1564 },\n    { 1800, 1800, -1564 }, { 1800, 1800, -1565 }, { 1800, 1800, -1565 }, { 1800, 1800, -1566 },\n    { 1800, 1800, -1566 }, { 1800, 1800, -1566 }, { 1800, 1800, -1565 }, { 1800, 1800, -1565 },\n    { 1800, 1800, -1565 }, { 1800, 1800, -1564 }, { 1800, 1800, -1563 }, { 1800, 1800, -1562 },\n    { 1800, 1800, -1561 }, { 1800, 1800, -1559 }, { 1800, 1800, -1557 }, { 1800, 1800, -1555 },\n    { 1800, 1800, -1553 }, { 1800, 1800, -1550 }, { 1800, 1800, -1548 }, { 1800, 1800, -1545 },\n    { 1800, 1800, -1541 }, { 1800, 1800, -1538 }, { 1800, 1800, -1534 }, { 1800, 1800, -1507 },\n    { 1800, 1800, -1448 }, { 1800, 1800, -1380 }, { 1800, 1800, -1323 }, { 1800, 1800, -1299 },\n    { 1800, 1800, -1300 }, { 1800, 1800, -1304 }, { 1800, 1800, -1309 }, { 1800, 1800, -1317 },\n    { 1800, 1800, -1326 }, { 1800, 1800, -1337 }, { 1800, 1800, -1349 }, { 1800, 1800, -1362 },\n    { 1800, 1800, -1376 }, { 1800, 1800, -1392 }, { 1800, 1800, -1407 }, { 1800, 1800, -1423 },\n    { 1800, 1800, -1440 }, { 1800, 1800, -1456 }, { 1800, 1800, -1473 }, { 1800, 1800, -1489 },\n    { 1800, 1800, -1505 }, { 1800, 1800, -1520 }, { 1800, 1800, -1534 }, { 1800, 1800, -1555 },\n    { 1800, 1800, -1583 }, { 1800, 1800, -1607 }, { 1800, 1800, -1614 }, { 1800, 1800, -1595 },\n    { 1800, 1800, -1557 }, { 1800, 1800, -1520 }, { 1800, 1800, -1499 }, { 1800, 1800, -1514 },\n    { 1800, 1800, -1549 }, { 1800, 1800, -1574 }, { 1800, 1800, -1580 }, { 1800, 1800, -1581 },\n    { 1800, 1800, -1578 }, { 1800, 1800, -1575 }, { 1800, 1800, -1574 }, { 1800, 1799, -1574 },\n    { 1800, 1799, -1574 }, { 1800, 1798, -1574 }, { 1800, 1797, -1574 }, { 1800, 1797, -1574 },\n    { 1800, 1796, -1574 }, { 1800, 1795, -1574 }, { 1800, 1794, -1574 }, { 1800, 1794, -1574 },\n    { 1800, 1794, -1574 }, { 1800, 1795, -1574 }, { 1800, 1796, -1574 }, { 1800, 1797, -1574 },\n    { 1800, 1800, -1574 }, { 1799, 1803, -1574 }, { 1799, 1807, -1574 }, { 1799, 1812, -1574 },\n    { 1799, 1818, -1574 }, { 1799, 1825, -1574 }, { 1799, 1831, -1574 }, { 1799, 1838, -1574 },\n    { 1799, 1845, -1574 }, { 1799, 1851, -1574 }, { 1799, 1858, -1574 }, { 1799, 1863, -1574 },\n    { 1799, 1867, -1574 }, { 1799, 1871, -1574 }, { 1799, 1873, -1574 }, { 1799, 1874, -1574 },\n    { 1799, 1873, -1574 }, { 1799, 1870, -1574 }, { 1799, 1865, -1574 }, { 1799, 1859, -1574 },\n    { 1799, 1852, -1574 }, { 1799, 1845, -1574 }, { 1799, 1837, -1574 }, { 1799, 1829, -1574 },\n    { 1799, 1821, -1574 }, { 1799, 1814, -1574 }, { 1799, 1808, -1574 }, { 1799, 1804, -1574 },\n    { 1799, 1801, -1574 }, { 1800, 1800, -1574 }, { 1799, 1800, -1574 }, { 1799, 1803, -1574 },\n    { 1799, 1807, -1574 }, { 1799, 1813, -1574 }, { 1799, 1819, -1574 }, { 1799, 1826, -1574 },\n    { 1799, 1833, -1574 }, { 1799, 1840, -1574 }, { 1799, 1848, -1574 }, { 1799, 1855, -1574 },\n    { 1799, 1861, -1574 }, { 1799, 1866, -1574 }, { 1799, 1870, -1574 }, { 1799, 1873, -1574 },\n    { 1799, 1874, -1574 }, { 1799, 1873, -1574 }, { 1799, 1870, -1574 }, { 1799, 1865, -1574 },\n    { 1799, 1859, -1574 }, { 1799, 1852, -1574 }, { 1799, 1845, -1574 }, { 1799, 1837, -1574 },\n    { 1799, 1829, -1574 }, { 1799, 1821, -1574 }, { 1799, 1814, -1574 }, { 1799, 1808, -1574 },\n    { 1799, 1804, -1574 }, { 1799, 1801, -1574 }, { 1800, 1800, -1574 }, { 1799, 1801, -1574 },\n    { 1799, 1804, -1574 }, { 1799, 1810, -1574 }, { 1799, 1816, -1574 }, { 1799, 1824, -1574 },\n    { 1799, 1832, -1574 }, { 1799, 1841, -1574 }, { 1799, 1849, -1574 }, { 1799, 1857, -1574 },\n    { 1799, 1864, -1574 }, { 1799, 1869, -1574 }, { 1799, 1873, -1574 }, { 1799, 1874, -1574 },\n    { 1799, 1873, -1574 }, { 1799, 1871, -1574 }, { 1799, 1867, -1574 }, { 1799, 1862, -1574 },\n    { 1799, 1856, -1575 }, { 1799, 1850, -1575 }, { 1799, 1843, -1575 }, { 1799, 1835, -1575 },\n    { 1799, 1828, -1575 }, { 1799, 1822, -1575 }, { 1799, 1815, -1575 }, { 1799, 1810, -1575 },\n    { 1799, 1805, -1575 }, { 1799, 1802, -1575 }, { 1800, 1800, -1574 }, { 1800, 1798, -1573 },\n    { 1800, 1797, -1573 }, { 1800, 1796, -1572 }, { 1800, 1795, -1571 }, { 1800, 1795, -1570 },\n    { 1800, 1794, -1569 }, { 1800, 1793, -1569 }, { 1800, 1793, -1568 }, { 1800, 1792, -1567 },\n    { 1800, 1792, -1566 }, { 1800, 1792, -1565 }, { 1800, 1791, -1564 }, { 1800, 1791, -1563 },\n    { 1800, 1791, -1562 }, { 1800, 1791, -1561 }, { 1800, 1791, -1560 }, { 1800, 1791, -1559 },\n    { 1800, 1791, -1558 }, { 1800, 1792, -1557 }, { 1800, 1792, -1556 }, { 1800, 1792, -1555 },\n    { 1800, 1792, -1554 }, { 1800, 1793, -1553 }, { 1800, 1793, -1552 }, { 1800, 1793, -1551 },\n    { 1800, 1794, -1550 }, { 1800, 1794, -1549 }, { 1800, 1795, -1548 }, { 1800, 1795, -1547 },\n    { 1800, 1795, -1546 }, { 1800, 1796, -1545 }, { 1800, 1796, -1544 }, { 1800, 1797, -1543 },\n    { 1800, 1797, -1542 }, { 1800, 1797, -1541 }, { 1800, 1798, -1541 }, { 1800, 1798, -1540 },\n    { 1800, 1798, -1539 }, { 1800, 1799, -1538 }, { 1800, 1799, -1537 }, { 1800, 1799, -1537 },\n    { 1800, 1799, -1536 }, { 1800, 1799, -1535 }, { 1800, 1799, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1533 }, { 1800, 1800, -1533 }, { 1800, 1800, -1533 }, { 1800, 1800, -1532 },\n    { 1800, 1800, -1532 }, { 1800, 1800, -1532 }, { 1800, 1800, -1532 }, { 1800, 1800, -1532 },\n    { 1800, 1800, -1532 }, { 1800, 1800, -1532 }, { 1800, 1800, -1532 }, { 1800, 1800, -1533 },\n    { 1800, 1800, -1533 }, { 1800, 1800, -1533 }, { 1800, 1800, -1533 }, { 1800, 1800, -1533 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1533 }, { 1800, 1800, -1532 }, { 1800, 1800, -1531 }, { 1800, 1800, -1529 },\n    { 1800, 1800, -1527 }, { 1800, 1800, -1525 }, { 1800, 1800, -1523 }, { 1800, 1800, -1522 },\n    { 1800, 1800, -1522 }, { 1800, 1800, -1523 }, { 1800, 1800, -1525 }, { 1800, 1800, -1529 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1541 }, { 1800, 1800, -1549 }, { 1800, 1800, -1559 },\n    { 1800, 1800, -1569 }, { 1800, 1800, -1581 }, { 1800, 1800, -1593 }, { 1800, 1800, -1605 },\n    { 1800, 1800, -1618 }, { 1800, 1800, -1631 }, { 1800, 1800, -1644 }, { 1800, 1800, -1657 },\n    { 1800, 1800, -1669 }, { 1800, 1800, -1681 }, { 1800, 1800, -1691 }, { 1800, 1800, -1701 },\n    { 1800, 1800, -1710 }, { 1800, 1800, -1717 }, { 1800, 1800, -1723 }, { 1800, 1800, -1728 },\n    { 1800, 1800, -1732 }, { 1800, 1800, -1735 }, { 1800, 1800, -1736 }, { 1800, 1800, -1737 },\n    { 1800, 1800, -1736 }, { 1800, 1800, -1733 }, { 1800, 1800, -1729 }, { 1800, 1800, -1724 },\n    { 1800, 1800, -1717 }, { 1800, 1800, -1708 }, { 1800, 1800, -1696 }, { 1800, 1800, -1682 },\n    { 1800, 1800, -1667 }, { 1800, 1800, -1650 }, { 1800, 1800, -1632 }, { 1800, 1800, -1615 },\n    { 1800, 1800, -1597 }, { 1800, 1800, -1581 }, { 1800, 1800, -1566 }, { 1800, 1800, -1553 },\n    { 1800, 1800, -1542 }, { 1800, 1800, -1534 }, { 1800, 1800, -1528 }, { 1800, 1800, -1524 },\n    { 1800, 1800, -1521 }, { 1800, 1800, -1520 }, { 1800, 1800, -1519 }, { 1800, 1800, -1519 },\n    { 1800, 1800, -1520 }, { 1800, 1800, -1521 }, { 1800, 1800, -1523 }, { 1800, 1800, -1525 },\n    { 1800, 1800, -1527 }, { 1800, 1800, -1529 }, { 1800, 1800, -1531 }, { 1800, 1800, -1532 },\n    { 1800, 1800, -1533 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n    { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 }, { 1800, 1800, -1534 },\n};\n\nstruct AnimDataInfo anim_mario_ear_left[] = {\n    { ARRAY_COUNT(animdata_mario_ear_left_1), GD_ANIM_ROT3S, animdata_mario_ear_left_1 },\n    { 0, GD_ANIM_EMPTY, NULL },\n    END_ANIMDATA_INFO_ARR,\n};\n"
  },
  {
    "path": "src/goddard/dynlists/anim_group_2.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"macros.h\"\n#include \"animdata.h\"\n#include \"../gd_types.h\"\n\nstatic s16 animdata_mario_ear_right_1[][3] = {\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 264 },   { 0, 0, 264 },   { 0, 0, 264 },   { 0, 0, 264 },\n    { 0, 0, 264 },   { 0, 0, 263 },   { 0, 0, 263 },   { 0, 0, 263 },   { 0, 0, 263 },\n    { 0, 0, 262 },   { 0, 0, 262 },   { 0, 0, 262 },   { 0, 0, 261 },   { 0, 0, 261 },\n    { 0, 0, 261 },   { 0, 0, 260 },   { 0, 0, 260 },   { 0, 0, 260 },   { 0, 0, 259 },\n    { 0, 0, 259 },   { 0, 0, 258 },   { 0, 0, 258 },   { 0, 0, 258 },   { 0, 0, 257 },\n    { 0, 0, 257 },   { 0, 0, 256 },   { 0, 0, 256 },   { 0, 0, 256 },   { 0, 0, 255 },\n    { 0, 0, 255 },   { 0, 0, 254 },   { 0, 0, 254 },   { 0, 0, 254 },   { 0, 0, 253 },\n    { 0, 0, 253 },   { 0, 0, 252 },   { 0, 0, 252 },   { 0, 0, 252 },   { 0, 0, 251 },\n    { 0, 0, 251 },   { 0, 0, 250 },   { 0, 0, 250 },   { 0, 0, 250 },   { 0, 0, 249 },\n    { 0, 0, 249 },   { 0, 0, 249 },   { 0, 0, 248 },   { 0, 0, 248 },   { 0, 0, 248 },\n    { 0, 0, 248 },   { 0, 0, 247 },   { 0, 0, 247 },   { 0, 0, 247 },   { 0, 0, 247 },\n    { 0, 0, 246 },   { 0, 0, 246 },   { 0, 0, 246 },   { 0, 0, 246 },   { 0, 0, 246 },\n    { 0, 0, 246 },   { 0, 0, 246 },   { 0, 0, 246 },   { 0, 0, 246 },   { 0, 0, 246 },\n    { 0, 0, 246 },   { 0, 0, 246 },   { 0, 0, 246 },   { 0, 0, 246 },   { 0, 0, 246 },\n    { 0, 0, 246 },   { 0, 0, 246 },   { 0, 0, 246 },   { 0, 0, 246 },   { 0, 0, 247 },\n    { 0, 0, 247 },   { 0, 0, 247 },   { 0, 0, 248 },   { 0, 0, 248 },   { 0, 0, 248 },\n    { 0, 0, 249 },   { 0, 0, 249 },   { 0, 0, 250 },   { 0, 0, 250 },   { 0, 0, 251 },\n    { 0, 0, 251 },   { 0, 0, 252 },   { 0, 0, 253 },   { 0, 0, 253 },   { 0, 0, 254 },\n    { 0, 0, 255 },   { 0, 0, 256 },   { 0, 0, 257 },   { 0, 0, 258 },   { 0, 0, 259 },\n    { 0, 0, 260 },   { 0, 0, 261 },   { 0, 0, 262 },   { 0, 0, 263 },   { 0, 0, 264 },\n    { 0, 0, 265 },   { 0, 0, 289 },   { 0, 0, 338 },   { 0, 0, 385 },   { 0, 0, 403 },\n    { 0, 0, 381 },   { 0, 0, 337 },   { 0, 0, 284 },   { 0, 0, 237 },   { 0, 0, 208 },\n    { 0, 0, 208 },   { 0, 0, 228 },   { 0, 0, 252 },   { 0, 0, 265 },   { 0, 0, 267 },\n    { 0, 0, 268 },   { 0, 0, 269 },   { 0, 0, 269 },   { 0, 0, 268 },   { 0, 0, 268 },\n    { 0, 0, 267 },   { 0, 0, 266 },   { 0, 0, 265 },   { 0, 0, 263 },   { 0, 0, 262 },\n    { 0, 0, 260 },   { 0, 0, 259 },   { 0, 0, 257 },   { 0, 0, 256 },   { 0, 0, 255 },\n    { 0, 0, 254 },   { 0, 0, 254 },   { 0, 0, 254 },   { 0, 0, 255 },   { 0, 0, 255 },\n    { 0, 0, 257 },   { 0, 0, 259 },   { 0, 0, 262 },   { 0, 0, 265 },   { 0, 0, 280 },\n    { 0, 0, 308 },   { 0, 0, 341 },   { 0, 0, 368 },   { 0, 0, 380 },   { 0, 0, 378 },\n    { 0, 0, 375 },   { 0, 0, 369 },   { 0, 0, 362 },   { 0, 0, 353 },   { 0, 0, 344 },\n    { 0, 0, 333 },   { 0, 0, 322 },   { 0, 0, 312 },   { 0, 0, 301 },   { 0, 0, 291 },\n    { 0, 0, 283 },   { 0, 0, 275 },   { 0, 0, 269 },   { 0, 0, 265 },   { 0, 0, 263 },\n    { 0, 0, 261 },   { 0, 0, 259 },   { 0, 0, 258 },   { 0, 0, 258 },   { 0, 0, 258 },\n    { 0, 0, 258 },   { 0, 0, 259 },   { 0, 0, 260 },   { 0, 0, 261 },   { 0, 0, 262 },\n    { 0, 0, 263 },   { 0, 0, 265 },   { 0, 0, 266 },   { 0, 0, 267 },   { 0, 0, 269 },\n    { 0, 0, 270 },   { 0, 0, 270 },   { 0, 0, 271 },   { 0, 0, 271 },   { 0, 0, 271 },\n    { 0, 0, 270 },   { 0, 0, 269 },   { 0, 0, 267 },   { 0, 0, 265 },   { 0, 0, 262 },\n    { 0, 0, 258 },   { 0, 0, 254 },   { 0, 0, 249 },   { 0, 0, 243 },   { 0, 0, 237 },\n    { 0, 0, 231 },   { 0, 0, 224 },   { 0, 0, 217 },   { 0, 0, 210 },   { 0, 0, 203 },\n    { 0, 0, 195 },   { 0, 0, 188 },   { 0, 0, 182 },   { 0, 0, 175 },   { 0, 0, 169 },\n    { 0, 0, 164 },   { 0, 0, 159 },   { 0, 0, 154 },   { 0, 0, 151 },   { 0, 0, 147 },\n    { 0, 0, 145 },   { 0, 0, 142 },   { 0, 0, 140 },   { 0, 0, 138 },   { 0, 0, 137 },\n    { 0, 0, 136 },   { 0, 0, 136 },   { 0, 0, 136 },   { 0, 0, 137 },   { 0, 0, 138 },\n    { 0, 0, 140 },   { 0, 0, 143 },   { 0, 0, 146 },   { 0, 0, 151 },   { 0, 0, 157 },\n    { 0, 0, 166 },   { 0, 0, 177 },   { 0, 0, 189 },   { 0, 0, 203 },   { 0, 0, 217 },\n    { 0, 0, 231 },   { 0, 0, 244 },   { 0, 0, 255 },   { 0, 0, 265 },   { 0, 0, 274 },\n    { 0, 0, 283 },   { 0, 0, 291 },   { 0, 0, 300 },   { 0, 0, 308 },   { 0, 0, 315 },\n    { 0, 0, 322 },   { 0, 0, 328 },   { 0, 0, 333 },   { 0, 0, 337 },   { 0, 0, 339 },\n    { 0, 0, 340 },   { 0, 0, 336 },   { 0, 0, 327 },   { 0, 0, 315 },   { 0, 0, 300 },\n    { 0, 0, 286 },   { 0, 0, 273 },   { 0, 0, 265 },   { 0, 0, 261 },   { 0, 0, 260 },\n    { 0, 0, 261 },   { 0, 0, 263 },   { 0, 0, 264 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 266 },\n    { 0, 0, 266 },   { 0, 0, 266 },   { 0, 0, 267 },   { 0, 0, 267 },   { 0, 0, 268 },\n    { 0, 0, 269 },   { 0, 0, 269 },   { 0, 0, 270 },   { 0, 0, 271 },   { 0, 0, 272 },\n    { 0, 0, 273 },   { 0, 0, 274 },   { 0, 0, 274 },   { 0, 0, 275 },   { 0, 0, 276 },\n    { 0, 0, 277 },   { 0, 0, 278 },   { 0, 0, 279 },   { 0, 0, 280 },   { 0, 0, 281 },\n    { 0, 0, 282 },   { 0, 0, 282 },   { 0, 0, 283 },   { 0, 0, 284 },   { 0, 0, 284 },\n    { 0, 0, 285 },   { 0, 0, 286 },   { 0, 0, 286 },   { 0, 0, 286 },   { 0, 0, 287 },\n    { 0, 0, 287 },   { 0, 0, 287 },   { 0, 0, 287 },   { 0, 0, 287 },   { 0, 0, 286 },\n    { 0, 0, 286 },   { 0, 0, 286 },   { 0, 0, 285 },   { 0, 0, 284 },   { 0, 0, 283 },\n    { 0, 0, 282 },   { 0, 0, 281 },   { 0, 0, 280 },   { 0, 0, 278 },   { 0, 0, 276 },\n    { 0, 0, 275 },   { 0, 0, 273 },   { 0, 0, 270 },   { 0, 0, 268 },   { 0, 0, 265 },\n    { 0, 0, 246 },   { 0, 0, 205 },   { 0, 0, 158 },   { 0, 0, 119 },   { 0, 0, 105 },\n    { 0, 0, 109 },   { 0, 0, 116 },   { 0, 0, 125 },   { 0, 0, 136 },   { 0, 0, 148 },\n    { 0, 0, 162 },   { 0, 0, 177 },   { 0, 0, 193 },   { 0, 0, 209 },   { 0, 0, 225 },\n    { 0, 0, 242 },   { 0, 0, 258 },   { 0, 0, 273 },   { 0, 0, 288 },   { 0, 0, 302 },\n    { 0, 0, 314 },   { 0, 0, 325 },   { 0, 0, 333 },   { 0, 0, 340 },   { 0, 0, 325 },\n    { 0, 0, 287 },   { 0, 0, 246 },   { 0, 0, 225 },   { 0, 0, 243 },   { 0, 0, 283 },\n    { 0, 0, 311 },   { 0, 0, 312 },   { 0, 0, 302 },   { 0, 0, 294 },   { 0, 0, 292 },\n    { 0, 0, 292 },   { 0, 0, 292 },   { 0, 0, 293 },   { 0, 0, 294 },   { 0, 0, 294 },\n    { 0, 0, 294 },   { 0, -1, 294 },  { 0, -2, 294 },  { 0, -3, 294 },  { 0, -4, 294 },\n    { 0, -6, 294 },  { 0, -7, 294 },  { 0, -8, 294 },  { 0, -8, 294 },  { 0, -8, 294 },\n    { 0, -7, 294 },  { 0, -6, 294 },  { 0, -3, 294 },  { 0, 0, 294 },   { 0, 5, 294 },\n    { 0, 12, 294 },  { 0, 20, 294 },  { 0, 30, 294 },  { 0, 40, 294 },  { 0, 51, 294 },\n    { 0, 62, 294 },  { 0, 73, 294 },  { 0, 83, 294 },  { 0, 93, 294 },  { 0, 102, 294 },\n    { 0, 109, 294 }, { 0, 115, 294 }, { 0, 119, 294 }, { 0, 120, 294 }, { 0, 118, 294 },\n    { 0, 113, 294 }, { 0, 106, 294 }, { 0, 96, 294 },  { 0, 85, 294 },  { 0, 72, 294 },\n    { 0, 60, 294 },  { 0, 47, 294 },  { 0, 35, 294 },  { 0, 23, 294 },  { 0, 14, 294 },\n    { 0, 6, 294 },   { 0, 1, 294 },   { 0, 0, 294 },   { 0, 1, 294 },   { 0, 5, 294 },\n    { 0, 12, 294 },  { 0, 21, 294 },  { 0, 31, 294 },  { 0, 42, 294 },  { 0, 54, 294 },\n    { 0, 66, 294 },  { 0, 77, 294 },  { 0, 89, 294 },  { 0, 99, 294 },  { 0, 107, 294 },\n    { 0, 114, 294 }, { 0, 118, 294 }, { 0, 120, 294 }, { 0, 118, 294 }, { 0, 113, 294 },\n    { 0, 106, 294 }, { 0, 96, 294 },  { 0, 85, 294 },  { 0, 72, 294 },  { 0, 60, 294 },\n    { 0, 47, 294 },  { 0, 35, 294 },  { 0, 23, 294 },  { 0, 14, 294 },  { 0, 6, 294 },\n    { 0, 1, 294 },   { 0, 0, 294 },   { 0, 2, 294 },   { 0, 7, 294 },   { 0, 16, 294 },\n    { 0, 27, 294 },  { 0, 39, 294 },  { 0, 53, 294 },  { 0, 67, 294 },  { 0, 80, 294 },\n    { 0, 93, 294 },  { 0, 104, 294 }, { 0, 112, 294 }, { 0, 118, 294 }, { 0, 120, 294 },\n    { 0, 118, 294 }, { 0, 114, 294 }, { 0, 108, 294 }, { 0, 100, 294 }, { 0, 91, 294 },\n    { 0, 80, 294 },  { 0, 69, 295 },  { 0, 58, 295 },  { 0, 46, 295 },  { 0, 35, 295 },\n    { 0, 25, 295 },  { 0, 16, 295 },  { 0, 8, 295 },   { 0, 3, 294 },   { 0, 0, 294 },\n    { 0, -1, 293 },  { 0, -3, 293 },  { 0, -5, 292 },  { 0, -6, 292 },  { 0, -7, 291 },\n    { 0, -9, 291 },  { 0, -10, 290 }, { 0, -10, 289 }, { 0, -11, 289 }, { 0, -12, 288 },\n    { 0, -12, 287 }, { 0, -12, 287 }, { 0, -13, 286 }, { 0, -13, 285 }, { 0, -13, 285 },\n    { 0, -13, 284 }, { 0, -13, 283 }, { 0, -12, 283 }, { 0, -12, 282 }, { 0, -12, 281 },\n    { 0, -11, 280 }, { 0, -11, 280 }, { 0, -11, 279 }, { 0, -10, 278 }, { 0, -9, 277 },\n    { 0, -9, 277 },  { 0, -8, 276 },  { 0, -8, 275 },  { 0, -7, 275 },  { 0, -6, 274 },\n    { 0, -6, 273 },  { 0, -5, 273 },  { 0, -4, 272 },  { 0, -4, 271 },  { 0, -3, 271 },\n    { 0, -2, 270 },  { 0, -2, 269 },  { 0, -1, 269 },  { 0, -1, 268 },  { 0, 0, 268 },\n    { 0, 0, 267 },   { 0, 0, 267 },   { 0, 0, 266 },   { 0, 0, 266 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 264 },   { 0, 0, 264 },   { 0, 0, 264 },   { 0, 0, 264 },\n    { 0, 0, 264 },   { 0, 0, 264 },   { 0, 0, 264 },   { 0, 0, 264 },   { 0, 0, 264 },\n    { 0, 0, 264 },   { 0, 0, 264 },   { 0, 0, 264 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 266 },   { 0, 0, 267 },   { 0, 0, 268 },   { 0, 0, 270 },   { 0, 0, 272 },\n    { 0, 0, 274 },   { 0, 0, 276 },   { 0, 0, 277 },   { 0, 0, 277 },   { 0, 0, 276 },\n    { 0, 0, 274 },   { 0, 0, 270 },   { 0, 0, 265 },   { 0, 0, 258 },   { 0, 0, 250 },\n    { 0, 0, 240 },   { 0, 0, 230 },   { 0, 0, 218 },   { 0, 0, 206 },   { 0, 0, 194 },\n    { 0, 0, 181 },   { 0, 0, 168 },   { 0, 0, 155 },   { 0, 0, 142 },   { 0, 0, 130 },\n    { 0, 0, 118 },   { 0, 0, 108 },   { 0, 0, 98 },    { 0, 0, 89 },    { 0, 0, 82 },\n    { 0, 0, 76 },    { 0, 0, 71 },    { 0, 0, 67 },    { 0, 0, 64 },    { 0, 0, 63 },\n    { 0, 0, 62 },    { 0, 0, 63 },    { 0, 0, 66 },    { 0, 0, 70 },    { 0, 0, 75 },\n    { 0, 0, 82 },    { 0, 0, 91 },    { 0, 0, 103 },   { 0, 0, 116 },   { 0, 0, 132 },\n    { 0, 0, 148 },   { 0, 0, 165 },   { 0, 0, 183 },   { 0, 0, 200 },   { 0, 0, 216 },\n    { 0, 0, 231 },   { 0, 0, 245 },   { 0, 0, 256 },   { 0, 0, 265 },   { 0, 0, 271 },\n    { 0, 0, 275 },   { 0, 0, 278 },   { 0, 0, 278 },   { 0, 0, 278 },   { 0, 0, 276 },\n    { 0, 0, 274 },   { 0, 0, 272 },   { 0, 0, 269 },   { 0, 0, 267 },   { 0, 0, 266 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n    { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },   { 0, 0, 265 },\n};\n\nstruct AnimDataInfo anim_mario_ear_right[] = {\n    { ARRAY_COUNT(animdata_mario_ear_right_1), GD_ANIM_ROT3S, animdata_mario_ear_right_1 },\n    { 0, GD_ANIM_EMPTY, NULL },\n    END_ANIMDATA_INFO_ARR,\n};\n\nstatic s16 animdata_mario_nose_1[][3] = {\n    { 0, 0, -1785 },    { 0, 0, -1785 },    { 0, 0, -1786 },    { 0, 0, -1786 },    { 0, 0, -1787 },\n    { 0, 0, -1788 },    { 0, 0, -1789 },    { 0, 0, -1790 },    { 0, 0, -1791 },    { 0, 0, -1792 },\n    { 0, 0, -1793 },    { 0, 0, -1793 },    { 0, 0, -1794 },    { 0, 0, -1794 },    { 0, 0, -1794 },\n    { 0, 0, -1794 },    { 0, 0, -1794 },    { 0, 0, -1793 },    { 0, 0, -1792 },    { 0, 0, -1790 },\n    { 0, 0, -1788 },    { 0, 0, -1785 },    { 0, 0, -1775 },    { 0, 0, -1755 },    { 0, 0, -1733 },\n    { 0, 0, -1715 },    { 0, 0, -1711 },    { 0, 0, -1722 },    { 0, 0, -1743 },    { 0, 0, -1770 },\n    { 0, 0, -1797 },    { 0, 0, -1819 },    { 0, 0, -1831 },    { 0, 0, -1833 },    { 0, 0, -1830 },\n    { 0, 0, -1823 },    { 0, 0, -1814 },    { 0, 0, -1804 },    { 0, 0, -1795 },    { 0, 0, -1788 },\n    { 0, 0, -1785 },    { 0, 0, -1789 },    { 0, 0, -1799 },    { 0, 0, -1811 },    { 0, 0, -1821 },\n    { 0, 0, -1825 },    { 0, 0, -1820 },    { 0, 0, -1806 },    { 0, 0, -1793 },    { 0, 0, -1785 },\n    { 0, 0, -1784 },    { 0, 0, -1783 },    { 0, 0, -1782 },    { 0, 0, -1781 },    { 0, 0, -1781 },\n    { 0, 0, -1780 },    { 0, 0, -1780 },    { 0, 0, -1781 },    { 0, 0, -1781 },    { 0, 0, -1781 },\n    { 0, 0, -1782 },    { 0, 0, -1783 },    { 0, 0, -1783 },    { 0, 0, -1784 },    { 0, 0, -1784 },\n    { 0, 0, -1785 },    { 0, 0, -1785 },    { 0, 0, -1785 },    { 0, 0, -1785 },    { 0, 0, -1785 },\n    { 0, 0, -1785 },    { 0, 0, -1786 },    { 0, 0, -1786 },    { 0, 0, -1786 },    { 0, -1, -1786 },\n    { 0, -1, -1787 },   { 0, -2, -1787 },   { 0, -2, -1787 },   { 0, -3, -1788 },   { 0, -4, -1789 },\n    { 0, -4, -1789 },   { 0, -5, -1790 },   { 0, -6, -1790 },   { 0, -7, -1791 },   { 0, -8, -1792 },\n    { 0, -9, -1793 },   { 0, -10, -1793 },  { 0, -11, -1794 },  { 0, -12, -1795 },  { 1, -13, -1796 },\n    { 1, -15, -1797 },  { 1, -16, -1798 },  { 1, -17, -1799 },  { 1, -19, -1800 },  { 1, -20, -1801 },\n    { 1, -21, -1802 },  { 1, -23, -1804 },  { 1, -24, -1805 },  { 1, -26, -1806 },  { 2, -28, -1807 },\n    { 2, -29, -1808 },  { 2, -31, -1810 },  { 2, -32, -1811 },  { 2, -34, -1812 },  { 2, -36, -1814 },\n    { 2, -38, -1815 },  { 2, -39, -1816 },  { 3, -41, -1818 },  { 3, -43, -1819 },  { 3, -45, -1821 },\n    { 3, -47, -1822 },  { 3, -49, -1823 },  { 3, -51, -1825 },  { 3, -53, -1826 },  { 4, -55, -1828 },\n    { 4, -56, -1829 },  { 4, -58, -1831 },  { 4, -60, -1832 },  { 4, -62, -1834 },  { 4, -64, -1835 },\n    { 4, -66, -1837 },  { 4, -68, -1839 },  { 5, -70, -1840 },  { 5, -72, -1842 },  { 5, -74, -1843 },\n    { 5, -76, -1845 },  { 5, -78, -1846 },  { 5, -81, -1848 },  { 5, -83, -1849 },  { 6, -85, -1851 },\n    { 6, -87, -1852 },  { 6, -89, -1854 },  { 6, -91, -1855 },  { 6, -93, -1857 },  { 6, -94, -1858 },\n    { 6, -96, -1860 },  { 6, -98, -1861 },  { 7, -100, -1863 }, { 7, -102, -1864 }, { 7, -104, -1865 },\n    { 7, -106, -1867 }, { 7, -108, -1868 }, { 7, -110, -1870 }, { 7, -112, -1871 }, { 7, -113, -1872 },\n    { 7, -115, -1873 }, { 8, -117, -1875 }, { 8, -119, -1876 }, { 8, -120, -1877 }, { 8, -122, -1878 },\n    { 8, -124, -1880 }, { 8, -125, -1881 }, { 8, -127, -1882 }, { 8, -128, -1883 }, { 8, -130, -1884 },\n    { 8, -131, -1885 }, { 8, -133, -1886 }, { 8, -134, -1887 }, { 8, -135, -1888 }, { 8, -137, -1889 },\n    { 8, -138, -1890 }, { 9, -139, -1890 }, { 9, -140, -1891 }, { 9, -141, -1892 }, { 9, -142, -1893 },\n    { 9, -143, -1893 }, { 9, -144, -1894 }, { 9, -145, -1895 }, { 9, -146, -1895 }, { 7, -140, -1885 },\n    { 3, -121, -1862 }, { 0, -85, -1837 },  { 1, -1, -1807 },   { 3, 71, -1782 },   { 1, 42, -1781 },\n    { 0, 0, -1785 },    { 0, -4, -1785 },   { 0, -6, -1785 },   { 0, -8, -1785 },   { 0, -9, -1785 },\n    { 0, -9, -1784 },   { 0, -8, -1784 },   { 0, -7, -1783 },   { 0, -5, -1783 },   { 0, -4, -1783 },\n    { 0, -2, -1783 },   { 0, -1, -1784 },   { 0, 0, -1784 },    { 0, 0, -1785 },    { 0, 0, -1789 },\n    { 0, 0, -1794 },    { 0, 0, -1801 },    { 0, 0, -1806 },    { 0, 0, -1808 },    { 0, 0, -1807 },\n    { 0, 0, -1803 },    { 0, 0, -1798 },    { 0, 0, -1793 },    { 0, 0, -1789 },    { 0, 0, -1785 },\n    { 0, 0, -1785 },    { 0, 0, -1788 },    { 0, 0, -1794 },    { 0, 0, -1801 },    { 0, 0, -1809 },\n    { 0, 0, -1815 },    { 0, 0, -1817 },    { 0, 0, -1816 },    { 0, 0, -1812 },    { 0, 0, -1806 },\n    { 0, 0, -1799 },    { 0, 0, -1793 },    { 0, 0, -1788 },    { 0, 0, -1785 },    { 0, 0, -1784 },\n    { 0, 0, -1783 },    { 0, 0, -1782 },    { 0, 0, -1781 },    { 0, 0, -1781 },    { 0, 0, -1780 },\n    { 0, 0, -1780 },    { 0, 0, -1779 },    { 0, 0, -1779 },    { 0, 0, -1779 },    { 0, 0, -1779 },\n    { 0, 0, -1779 },    { 0, 0, -1779 },    { 0, 0, -1779 },    { 0, 0, -1779 },    { 0, 0, -1779 },\n    { 0, 0, -1779 },    { 0, 0, -1779 },    { 0, 0, -1780 },    { 0, 0, -1780 },    { 0, 0, -1780 },\n    { 0, 0, -1780 },    { 0, 0, -1780 },    { 0, 0, -1780 },    { 0, 0, -1779 },    { 0, 0, -1779 },\n    { 0, 0, -1779 },    { 0, 0, -1779 },    { 0, 0, -1779 },    { 0, 0, -1779 },    { 0, 0, -1779 },\n    { 0, 0, -1779 },    { 0, 0, -1779 },    { 0, 0, -1779 },    { 0, 0, -1779 },    { 0, 0, -1779 },\n    { 0, 0, -1779 },    { 0, 0, -1779 },    { 0, 0, -1779 },    { 0, 0, -1779 },    { 0, 0, -1779 },\n    { 0, 0, -1779 },    { 0, 0, -1779 },    { 0, 0, -1779 },    { 0, 0, -1779 },    { 0, 0, -1779 },\n    { 0, 0, -1780 },    { 0, 0, -1780 },    { 0, 0, -1780 },    { 0, 0, -1780 },    { 0, 0, -1780 },\n    { 0, 0, -1780 },    { 0, 0, -1781 },    { 0, 0, -1781 },    { 0, 0, -1781 },    { 0, 0, -1781 },\n    { 0, 0, -1782 },    { 0, 0, -1782 },    { 0, 0, -1782 },    { 0, 0, -1783 },    { 0, 0, -1783 },\n    { 0, 0, -1784 },    { 0, 0, -1784 },    { 0, 0, -1785 },    { 0, 0, -1785 },    { 0, 0, -1786 },\n    { 0, 0, -1788 },    { 0, 0, -1789 },    { 0, 0, -1792 },    { 0, 0, -1794 },    { 0, 0, -1797 },\n    { 0, 0, -1799 },    { 0, 0, -1802 },    { 0, 0, -1805 },    { 0, 0, -1807 },    { 0, 0, -1809 },\n    { 0, 0, -1811 },    { 0, 0, -1813 },    { 0, 0, -1814 },    { 0, 0, -1814 },    { 0, 0, -1813 },\n    { 0, 0, -1811 },    { 0, 0, -1808 },    { 0, 0, -1804 },    { 0, 0, -1800 },    { 0, 0, -1795 },\n    { 0, 0, -1792 },    { 0, 0, -1788 },    { 0, 0, -1786 },    { 0, 0, -1785 },    { 0, 0, -1786 },\n    { 0, 0, -1787 },    { 0, 0, -1789 },    { 0, 0, -1791 },    { 0, 0, -1794 },    { 0, 0, -1797 },\n    { 0, 0, -1800 },    { 0, 0, -1803 },    { 0, 0, -1806 },    { 0, 0, -1809 },    { 0, 0, -1812 },\n    { 0, 0, -1814 },    { 0, 0, -1816 },    { 0, 0, -1819 },    { 0, 0, -1822 },    { 0, 0, -1825 },\n    { 0, 0, -1826 },    { 0, 0, -1827 },    { 0, 0, -1825 },    { 0, 0, -1821 },    { 0, 0, -1814 },\n    { 0, 0, -1805 },    { 0, 0, -1796 },    { 0, 0, -1789 },    { 0, 0, -1785 },    { 0, 0, -1784 },\n    { 0, 0, -1783 },    { 0, 0, -1782 },    { 0, 0, -1781 },    { 0, 0, -1781 },    { 0, 0, -1781 },\n    { 0, 0, -1781 },    { 0, 0, -1781 },    { 0, 0, -1781 },    { 0, 0, -1781 },    { 0, 0, -1782 },\n    { 0, 0, -1782 },    { 0, 0, -1783 },    { 0, 0, -1783 },    { 0, 0, -1784 },    { 0, 0, -1784 },\n    { 0, 0, -1785 },    { 0, 0, -1785 },    { 0, 0, -1785 },    { 0, 0, -1785 },    { 0, 0, -1785 },\n    { 0, 0, -1785 },    { 0, 0, -1785 },    { 0, 0, -1785 },    { 0, 0, -1785 },    { 0, 0, -1784 },\n    { 0, 0, -1784 },    { 0, 0, -1784 },    { 0, 0, -1783 },    { 0, 0, -1783 },    { 0, 0, -1783 },\n    { 0, 0, -1782 },    { 0, 0, -1782 },    { 0, 0, -1782 },    { 0, 0, -1781 },    { 0, 0, -1781 },\n    { 0, 0, -1781 },    { 0, 0, -1780 },    { 0, 0, -1780 },    { 0, 0, -1780 },    { 0, 0, -1779 },\n    { 0, 0, -1779 },    { 0, 0, -1779 },    { 0, 0, -1779 },    { 0, 0, -1779 },    { 0, 0, -1779 },\n    { 0, 0, -1779 },    { 0, 0, -1779 },    { 0, 0, -1779 },    { 0, 0, -1780 },    { 0, 0, -1780 },\n    { 0, 0, -1780 },    { 0, 0, -1781 },    { 0, 0, -1782 },    { 0, 0, -1782 },    { 0, 0, -1783 },\n    { 0, 0, -1784 },    { 0, 0, -1785 },    { 0, 0, -1791 },    { 0, 0, -1802 },    { 0, 0, -1816 },\n    { 0, 0, -1828 },    { 0, 0, -1835 },    { 0, 0, -1837 },    { 0, 0, -1838 },    { 0, 0, -1837 },\n    { 0, 0, -1836 },    { 0, 0, -1835 },    { 0, 0, -1833 },    { 0, 0, -1831 },    { 0, 0, -1830 },\n    { 0, 0, -1830 },    { 0, 0, -1830 },    { 0, 0, -1832 },    { 0, 0, -1835 },    { 0, 0, -1843 },\n    { 0, 0, -1858 },    { 0, 0, -1875 },    { 0, 0, -1892 },    { 0, 0, -1903 },    { 0, 0, -1906 },\n    { 0, 0, -1901 },    { 0, 0, -1893 },    { 0, 0, -1882 },    { 0, 0, -1869 },    { 0, 0, -1855 },\n    { 0, 0, -1841 },    { 0, 0, -1827 },    { 0, 0, -1813 },    { 0, 0, -1801 },    { 0, 0, -1791 },\n    { 0, 0, -1783 },    { 0, 0, -1780 },    { 0, 0, -1778 },    { 0, 0, -1776 },    { 0, 0, -1774 },\n    { 0, -1, -1773 },   { 0, -1, -1772 },   { 0, -2, -1771 },   { 0, -3, -1769 },   { 0, -4, -1768 },\n    { 0, -5, -1768 },   { 0, -6, -1767 },   { 0, -7, -1766 },   { 0, -8, -1766 },   { 0, -9, -1765 },\n    { 0, -11, -1765 },  { 0, -12, -1765 },  { 0, -13, -1764 },  { 0, -15, -1764 },  { 0, -16, -1764 },\n    { 0, -17, -1764 },  { 0, -19, -1764 },  { 0, -20, -1765 },  { 0, -21, -1765 },  { 0, -23, -1765 },\n    { 0, -24, -1765 },  { 0, -25, -1766 },  { 0, -26, -1766 },  { 0, -27, -1767 },  { 0, -28, -1767 },\n    { 0, -29, -1768 },  { 0, -30, -1768 },  { 0, -31, -1769 },  { 0, -31, -1769 },  { 0, -32, -1770 },\n    { 0, -32, -1771 },  { 0, -32, -1771 },  { 0, -32, -1772 },  { 0, -32, -1773 },  { 0, -32, -1773 },\n    { 0, -32, -1774 },  { 0, -31, -1774 },  { 0, -30, -1775 },  { 0, -29, -1776 },  { 0, -28, -1776 },\n    { 0, -27, -1777 },  { 0, -25, -1777 },  { 0, -23, -1778 },  { 0, -21, -1778 },  { 0, -19, -1778 },\n    { 0, -16, -1779 },  { 0, -14, -1779 },  { 0, -10, -1779 },  { 0, -7, -1779 },   { 0, -3, -1780 },\n    { 0, 0, -1780 },    { 0, 10, -1780 },   { 0, 33, -1780 },   { 0, 64, -1780 },   { 0, 101, -1780 },\n    { 0, 140, -1780 },  { 0, 178, -1779 },  { 0, 213, -1779 },  { 0, 240, -1779 },  { 0, 257, -1779 },\n    { 0, 269, -1779 },  { 0, 280, -1779 },  { 0, 291, -1779 },  { 0, 302, -1779 },  { 0, 310, -1779 },\n    { 0, 318, -1779 },  { 0, 323, -1779 },  { 0, 325, -1779 },  { 0, 324, -1779 },  { 0, 320, -1779 },\n    { 0, 311, -1779 },  { 0, 298, -1779 },  { 0, 281, -1779 },  { 0, 257, -1779 },  { 0, 174, -1779 },\n    { 0, 21, -1780 },   { 0, -130, -1780 }, { 0, -211, -1780 }, { 0, -150, -1780 }, { 0, -5, -1780 },\n    { 0, 91, -1779 },   { 0, 73, -1779 },   { 0, 7, -1780 },    { 0, -40, -1780 },  { 0, -37, -1780 },\n    { 0, -16, -1780 },  { 0, 0, -1780 },    { 0, 2, -1780 },    { 0, 1, -1780 },    { 0, 0, -1780 },\n    { 0, 0, -1779 },    { 0, 0, -1779 },    { 0, 0, -1779 },    { 0, 0, -1778 },    { 0, 0, -1778 },\n    { 0, 0, -1778 },    { 0, 0, -1777 },    { 0, 0, -1777 },    { 0, 0, -1777 },    { 0, 0, -1777 },\n    { 0, 0, -1777 },    { 0, 0, -1778 },    { 0, 0, -1778 },    { 0, 0, -1780 },    { 0, 0, -1781 },\n    { 0, 0, -1784 },    { 0, 0, -1786 },    { 0, 0, -1790 },    { 0, 0, -1793 },    { 0, 0, -1797 },\n    { 0, 0, -1800 },    { 0, 0, -1804 },    { 0, 0, -1808 },    { 0, 0, -1811 },    { 0, 0, -1814 },\n    { 0, 0, -1816 },    { 0, 0, -1818 },    { 0, 0, -1819 },    { 0, 0, -1820 },    { 0, 0, -1819 },\n    { 0, 0, -1817 },    { 0, 0, -1815 },    { 0, 0, -1812 },    { 0, 0, -1808 },    { 0, 0, -1804 },\n    { 0, 0, -1800 },    { 0, 0, -1795 },    { 0, 0, -1791 },    { 0, 0, -1788 },    { 0, 0, -1784 },\n    { 0, 0, -1782 },    { 0, 0, -1780 },    { 0, 0, -1780 },    { 0, 0, -1780 },    { 0, 0, -1782 },\n    { 0, 0, -1784 },    { 0, 0, -1787 },    { 0, 0, -1790 },    { 0, 0, -1794 },    { 0, 0, -1798 },\n    { 0, 0, -1802 },    { 0, 0, -1806 },    { 0, 0, -1809 },    { 0, 0, -1813 },    { 0, 0, -1816 },\n    { 0, 0, -1818 },    { 0, 0, -1819 },    { 0, 0, -1820 },    { 0, 0, -1819 },    { 0, 0, -1817 },\n    { 0, 0, -1815 },    { 0, 0, -1812 },    { 0, 0, -1808 },    { 0, 0, -1804 },    { 0, 0, -1800 },\n    { 0, 0, -1795 },    { 0, 0, -1791 },    { 0, 0, -1788 },    { 0, 0, -1784 },    { 0, 0, -1782 },\n    { 0, 0, -1780 },    { 0, 0, -1780 },    { 0, 0, -1780 },    { 0, 0, -1782 },    { 0, 0, -1785 },\n    { 0, 0, -1789 },    { 0, 0, -1793 },    { 0, 0, -1797 },    { 0, 0, -1802 },    { 0, 0, -1806 },\n    { 0, 0, -1811 },    { 0, 0, -1814 },    { 0, 0, -1817 },    { 0, 0, -1819 },    { 0, 0, -1820 },\n    { 0, 0, -1819 },    { 0, 0, -1818 },    { 0, 0, -1815 },    { 0, 0, -1813 },    { 0, 0, -1809 },\n    { 0, 0, -1805 },    { 0, 0, -1801 },    { 0, 0, -1797 },    { 0, 0, -1793 },    { 0, 0, -1790 },\n    { 0, 0, -1786 },    { 0, 0, -1784 },    { 0, 0, -1781 },    { 0, 0, -1780 },    { 0, 0, -1780 },\n    { 0, 0, -1780 },    { 0, 0, -1781 },    { 0, 0, -1783 },    { 0, 0, -1786 },    { 0, 0, -1789 },\n    { 0, 0, -1792 },    { 0, 0, -1796 },    { 0, 0, -1799 },    { 0, 0, -1803 },    { 0, 0, -1807 },\n    { 0, 0, -1810 },    { 0, 0, -1814 },    { 0, 0, -1817 },    { 0, 0, -1819 },    { 0, 0, -1821 },\n    { 0, 0, -1822 },    { 0, 0, -1823 },    { 0, 0, -1823 },    { 0, 0, -1823 },    { 0, 0, -1822 },\n    { 0, 0, -1822 },    { 0, 0, -1821 },    { 0, 0, -1820 },    { 0, 0, -1819 },    { 0, 0, -1817 },\n    { 0, 0, -1816 },    { 0, 0, -1814 },    { 0, 0, -1813 },    { 0, 0, -1811 },    { 0, 0, -1809 },\n    { 0, 0, -1807 },    { 0, 0, -1806 },    { 0, 0, -1804 },    { 0, 0, -1802 },    { 0, 0, -1800 },\n    { 0, 0, -1798 },    { 0, 0, -1796 },    { 0, 0, -1794 },    { 0, 0, -1793 },    { 0, 0, -1791 },\n    { 0, 0, -1790 },    { 0, 0, -1788 },    { 0, 0, -1787 },    { 0, 0, -1786 },    { 0, 0, -1785 },\n    { 0, 0, -1785 },    { 0, 0, -1784 },    { 0, 0, -1783 },    { 0, 0, -1782 },    { 0, 0, -1781 },\n    { 0, 0, -1780 },    { 0, 0, -1779 },    { 0, 0, -1778 },    { 0, 0, -1778 },    { 0, 0, -1777 },\n    { 0, 0, -1777 },    { 0, 0, -1777 },    { 0, 0, -1777 },    { 0, 0, -1777 },    { 0, 0, -1778 },\n    { 0, 0, -1779 },    { 0, 0, -1780 },    { 0, 0, -1781 },    { 0, 0, -1783 },    { 0, 0, -1785 },\n    { 0, 0, -1788 },    { 0, 0, -1792 },    { 0, 0, -1796 },    { 0, 0, -1801 },    { 0, 0, -1806 },\n    { 0, 0, -1812 },    { 0, 0, -1818 },    { 0, 0, -1824 },    { 0, 0, -1830 },    { 0, 0, -1837 },\n    { 0, 0, -1843 },    { 0, 0, -1849 },    { 0, 0, -1855 },    { 0, 0, -1861 },    { 0, 0, -1866 },\n    { 0, 0, -1871 },    { 0, 0, -1875 },    { 0, 0, -1878 },    { 0, 0, -1881 },    { 0, 0, -1883 },\n    { 0, 0, -1884 },    { 0, 0, -1885 },    { 0, 0, -1886 },    { 0, 0, -1887 },    { 0, 0, -1888 },\n    { 0, 0, -1889 },    { 0, 0, -1890 },    { 0, 0, -1891 },    { 0, 0, -1891 },    { 0, 0, -1892 },\n    { 0, 0, -1892 },    { 0, 0, -1892 },    { 0, 0, -1893 },    { 0, 0, -1893 },    { 0, 0, -1893 },\n    { 0, 0, -1893 },    { 0, 0, -1893 },    { 0, 0, -1893 },    { 0, 0, -1893 },    { 0, 0, -1893 },\n    { 0, 0, -1893 },    { 0, 0, -1892 },    { 0, 0, -1892 },    { 0, 0, -1892 },    { 0, 0, -1891 },\n    { 0, 0, -1891 },    { 0, 0, -1891 },    { 0, 0, -1890 },    { 0, 0, -1890 },    { 0, 0, -1889 },\n    { 0, 0, -1889 },    { 0, 0, -1889 },    { 0, 0, -1888 },    { 0, 0, -1888 },    { 0, 0, -1887 },\n    { 0, 0, -1887 },    { 0, 0, -1886 },    { 0, 0, -1886 },    { 0, 0, -1885 },    { 0, 0, -1885 },\n    { 0, 0, -1885 },    { 0, 0, -1884 },    { 0, 0, -1884 },    { 0, 0, -1884 },    { 0, 0, -1883 },\n    { 0, 0, -1883 },    { 0, 0, -1883 },    { 0, 0, -1883 },    { 0, 0, -1883 },    { 0, 0, -1883 },\n    { 0, 0, -1883 },    { 0, 0, -1883 },    { 0, 0, -1883 },    { 0, 0, -1883 },    { 0, 0, -1883 },\n    { 0, 0, -1883 },    { 0, 0, -1883 },    { 0, 0, -1883 },    { 0, 0, -1883 },    { 0, 0, -1883 },\n    { 0, 0, -1883 },    { 0, 0, -1883 },    { 0, 0, -1883 },    { 0, 0, -1883 },    { 0, 0, -1883 },\n    { 0, 0, -1883 },    { 0, 0, -1883 },    { 0, 0, -1883 },    { 0, 0, -1883 },    { 0, 0, -1883 },\n    { 0, 0, -1883 },    { 0, 0, -1883 },    { 0, 0, -1883 },    { 0, 0, -1883 },    { 0, 0, -1883 },\n    { 0, 0, -1883 },    { 0, 0, -1883 },    { 0, 0, -1883 },    { 0, 0, -1883 },    { 0, 0, -1883 },\n    { 0, 0, -1883 },    { 0, 0, -1883 },    { 0, 0, -1883 },    { 0, 0, -1883 },    { 0, 0, -1883 },\n    { 0, 0, -1883 },    { 0, 0, -1883 },    { 0, 0, -1883 },    { 0, 0, -1883 },    { 0, 0, -1883 },\n    { 0, 0, -1883 },    { 0, 0, -1883 },    { 0, 0, -1883 },    { 0, 0, -1883 },    { 0, 0, -1883 },\n    { 0, 0, -1883 },    { 0, 0, -1883 },    { 0, 0, -1883 },    { 0, 0, -1883 },    { 0, 0, -1883 },\n    { 0, 0, -1883 },    { 0, 0, -1883 },    { 0, 0, -1883 },    { 0, 0, -1883 },    { 0, 0, -1883 },\n    { 0, 0, -1883 },    { 0, 0, -1883 },    { 0, 0, -1883 },    { 0, 0, -1885 },    { 0, 0, -1883 },\n    { 0, 0, -1873 },    { 0, 0, -1862 },    { 0, 0, -1850 },    { 0, 0, -1837 },    { 0, 0, -1824 },\n    { 0, 0, -1812 },    { 0, 0, -1801 },    { 0, 0, -1793 },    { 0, 0, -1787 },    { 0, 0, -1785 },\n};\n\nstatic s16 animdata_mario_nose_2[][3] = {\n    { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1784 }, { 0, 0, -1783 },\n    { 0, 0, -1782 }, { 0, 0, -1780 }, { 0, 0, -1779 }, { 0, 0, -1777 }, { 0, 0, -1776 },\n    { 0, 0, -1775 }, { 0, 0, -1774 }, { 0, 0, -1773 }, { 0, 0, -1772 }, { 0, 0, -1772 },\n    { 0, 0, -1772 }, { 0, 0, -1773 }, { 0, 0, -1774 }, { 0, 0, -1776 }, { 0, 0, -1778 },\n    { 0, 0, -1782 }, { 0, 0, -1785 }, { 0, 0, -1839 }, { 0, 0, -1883 }, { 0, 0, -1835 },\n    { 0, 0, -1760 }, { 0, 0, -1717 }, { 0, 0, -1745 }, { 0, 0, -1807 }, { 0, 0, -1844 },\n    { 0, 0, -1827 }, { 0, 0, -1786 }, { 0, 0, -1759 }, { 0, 0, -1766 }, { 0, 0, -1787 },\n    { 0, 0, -1797 }, { 0, 0, -1783 }, { 0, 0, -1759 }, { 0, 0, -1745 }, { 0, 0, -1765 },\n    { 0, 0, -1789 }, { 0, 0, -1792 }, { 0, 0, -1790 }, { 0, 0, -1787 }, { 0, 0, -1785 },\n    { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 },\n    { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 },\n    { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 },\n    { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 },\n    { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 },\n    { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 },\n    { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 },\n    { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 },\n    { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 },\n    { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 },\n    { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 },\n    { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 },\n    { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 },\n    { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 },\n    { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 },\n    { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 },\n    { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 },\n    { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 },\n    { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 },\n    { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 },\n    { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 },\n    { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 },\n    { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 },\n    { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 }, { 0, 0, -1785 },\n    { 0, 0, -1785 },\n};\n\nstruct AnimDataInfo anim_mario_nose[] = {\n    { ARRAY_COUNT(animdata_mario_nose_1), GD_ANIM_ROT3S, animdata_mario_nose_1 },\n    { ARRAY_COUNT(animdata_mario_nose_2), GD_ANIM_ROT3S, animdata_mario_nose_2 },\n    END_ANIMDATA_INFO_ARR,\n};\n\nstatic s16 animdata_mario_lips_5_1[][3] = {\n    { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -310 }, { 0, 0, -310 }, { 0, 0, -309 }, { 0, 0, -307 },\n    { 0, 0, -306 }, { 0, 0, -304 }, { 0, 0, -302 }, { 0, 0, -300 }, { 0, 0, -297 }, { 0, 0, -295 },\n    { 0, 0, -292 }, { 0, 0, -289 }, { 0, 0, -286 }, { 0, 0, -283 }, { 0, 0, -280 }, { 0, 0, -276 },\n    { 0, 0, -273 }, { 0, 0, -269 }, { 0, 0, -266 }, { 0, 0, -262 }, { 0, 0, -258 }, { 0, 0, -255 },\n    { 0, 0, -251 }, { 0, 0, -248 }, { 0, 0, -244 }, { 0, 0, -240 }, { 0, 0, -237 }, { 0, 0, -234 },\n    { 0, 0, -230 }, { 0, 0, -227 }, { 0, 0, -224 }, { 0, 0, -221 }, { 0, 0, -218 }, { 0, 0, -216 },\n    { 0, 0, -213 }, { 0, 0, -211 }, { 0, 0, -209 }, { 0, 0, -207 }, { 0, 0, -206 }, { 0, 0, -205 },\n    { 0, 0, -204 }, { 0, 0, -203 }, { 0, 0, -202 }, { 0, 0, -202 }, { 0, 0, -203 }, { 0, 0, -204 },\n    { 0, 0, -207 }, { 0, 0, -211 }, { 0, 0, -215 }, { 0, 0, -221 }, { 0, 0, -226 }, { 0, 0, -233 },\n    { 0, 0, -239 }, { 0, 0, -246 }, { 0, 0, -253 }, { 0, 0, -260 }, { 0, 0, -267 }, { 0, 0, -274 },\n    { 0, 0, -281 }, { 0, 0, -287 }, { 0, 0, -293 }, { 0, 0, -298 }, { 0, 0, -302 }, { 0, 0, -306 },\n    { 0, 0, -309 }, { 0, 0, -310 }, { 0, 0, -311 }, { 0, 0, -302 }, { 0, 0, -277 }, { 0, 0, -242 },\n    { 0, 0, -202 }, { 0, 0, -163 }, { 0, 0, -131 }, { 0, 0, -101 }, { 0, 0, -70 },  { 0, 0, -40 },\n    { 0, 0, -12 },  { 0, 0, 10 },   { 0, 0, 26 },   { 0, 0, 37 },   { 0, 0, 44 },   { 0, 0, 49 },\n    { 0, 0, 49 },   { 0, 0, 46 },   { 0, 0, 38 },   { 0, 0, 26 },   { 0, 0, 3 },    { 0, 0, -31 },\n    { 0, 0, -73 },  { 0, 0, -113 }, { 0, 0, -145 }, { 0, 0, -162 }, { 0, 0, -169 }, { 0, 0, -173 },\n    { 0, 0, -176 }, { 0, 0, -177 }, { 0, 0, -176 }, { 0, 0, -175 }, { 0, 0, -172 }, { 0, 0, -169 },\n    { 0, 0, -166 }, { 0, 0, -162 }, { 0, 0, -159 }, { 0, 0, -156 }, { 0, 0, -154 }, { 0, 0, -152 },\n    { 0, 0, -152 }, { 0, 0, -154 }, { 0, 0, -157 }, { 0, 0, -162 }, { 0, 0, -176 }, { 0, 0, -201 },\n    { 0, 0, -233 }, { 0, 0, -265 }, { 0, 0, -293 }, { 0, 0, -311 }, { 0, 0, -322 }, { 0, 0, -333 },\n    { 0, 0, -343 }, { 0, 0, -353 }, { 0, 0, -362 }, { 0, 0, -371 }, { 0, 0, -378 }, { 0, 0, -386 },\n    { 0, 0, -392 }, { 0, 0, -398 }, { 0, 0, -403 }, { 0, 0, -407 }, { 0, 0, -410 }, { 0, 0, -412 },\n    { 0, 0, -414 }, { 0, 0, -414 }, { 0, 0, -414 }, { 0, 0, -414 }, { 0, 0, -413 }, { 0, 0, -412 },\n    { 0, 0, -411 }, { 0, 0, -409 }, { 0, 0, -408 }, { 0, 0, -406 }, { 0, 0, -404 }, { 0, 0, -401 },\n    { 0, 0, -399 }, { 0, 0, -396 }, { 0, 0, -394 }, { 0, 0, -391 }, { 0, 0, -388 }, { 0, 0, -385 },\n    { 0, 0, -381 }, { 0, 0, -378 }, { 0, 0, -375 }, { 0, 0, -371 }, { 0, 0, -368 }, { 0, 0, -365 },\n    { 0, 0, -361 }, { 0, 0, -358 }, { 0, 0, -354 }, { 0, 0, -351 }, { 0, 0, -348 }, { 0, 0, -344 },\n    { 0, 0, -341 }, { 0, 0, -338 }, { 0, 0, -335 }, { 0, 0, -332 }, { 0, 0, -329 }, { 0, 0, -326 },\n    { 0, 0, -324 }, { 0, 0, -321 }, { 0, 0, -319 }, { 0, 0, -317 }, { 0, 0, -315 }, { 0, 0, -314 },\n    { 0, 0, -312 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -313 }, { 0, 0, -316 }, { 0, 0, -320 },\n    { 0, 0, -325 }, { 0, 0, -331 }, { 0, 0, -336 }, { 0, 0, -342 }, { 0, 0, -347 }, { 0, 0, -351 },\n    { 0, 0, -355 }, { 0, 0, -357 }, { 0, 0, -357 }, { 0, 0, -356 }, { 0, 0, -355 }, { 0, 0, -354 },\n    { 0, 0, -353 }, { 0, 0, -352 }, { 0, 0, -350 }, { 0, 0, -349 }, { 0, 0, -347 }, { 0, 0, -345 },\n    { 0, 0, -343 }, { 0, 0, -340 }, { 0, 0, -338 }, { 0, 0, -335 }, { 0, 0, -332 }, { 0, 0, -329 },\n    { 0, 0, -325 }, { 0, 0, -322 }, { 0, 0, -318 }, { 0, 0, -314 }, { 0, 0, -309 }, { 0, 0, -304 },\n    { 0, 0, -299 }, { 0, 0, -294 }, { 0, 0, -288 }, { 0, 0, -282 }, { 0, 0, -268 }, { 0, 0, -243 },\n    { 0, 0, -213 }, { 0, 0, -188 }, { 0, 0, -174 }, { 0, 0, -168 }, { 0, 0, -164 }, { 0, 0, -160 },\n    { 0, 0, -158 }, { 0, 0, -156 }, { 0, 0, -155 }, { 0, 0, -155 }, { 0, 0, -155 }, { 0, 0, -155 },\n    { 0, 0, -156 }, { 0, 0, -157 }, { 0, 0, -158 }, { 0, 0, -159 }, { 0, 0, -159 }, { 0, 0, -159 },\n    { 0, 0, -159 }, { 0, 0, -160 }, { 0, 0, -160 }, { 0, 0, -160 }, { 0, 0, -161 }, { 0, 0, -161 },\n    { 0, 0, -162 }, { 0, 0, -162 }, { 0, 0, -163 }, { 0, 0, -164 }, { 0, 0, -165 }, { 0, 0, -165 },\n    { 0, 0, -166 }, { 0, 0, -167 }, { 0, 0, -168 }, { 0, 0, -168 }, { 0, 0, -169 }, { 0, 0, -170 },\n    { 0, 0, -171 }, { 0, 0, -171 }, { 0, 0, -172 }, { 0, 0, -172 }, { 0, 0, -173 }, { 0, 0, -173 },\n    { 0, 0, -174 }, { 0, 0, -174 }, { 0, 0, -174 }, { 0, 0, -174 }, { 0, 0, -174 }, { 0, 0, -174 },\n    { 0, 0, -174 }, { 0, 0, -175 }, { 0, 0, -175 }, { 0, 0, -175 }, { 0, 0, -175 }, { 0, 0, -175 },\n    { 0, 0, -175 }, { 0, 0, -175 }, { 0, 0, -175 }, { 0, 0, -175 }, { 0, 0, -175 }, { 0, 0, -175 },\n    { 0, 0, -175 }, { 0, 0, -174 }, { 0, 0, -174 }, { 0, 0, -174 }, { 0, 0, -174 }, { 0, 0, -174 },\n    { 0, 0, -174 }, { 0, 0, -174 }, { 0, 0, -174 }, { 0, 0, -174 }, { 0, 0, -174 }, { 0, 0, -174 },\n    { 0, 0, -174 }, { 0, 0, -174 }, { 0, 0, -174 }, { 0, 0, -174 }, { 0, 0, -174 }, { 0, 0, -174 },\n    { 0, 0, -174 }, { 0, 0, -174 }, { 0, 0, -174 }, { 0, 0, -174 }, { 0, 0, -174 }, { 0, 0, -174 },\n    { 0, 0, -174 }, { 0, 0, -174 }, { 0, 0, -174 }, { 0, 0, -174 }, { 0, 0, -174 }, { 0, 0, -174 },\n    { 0, 0, -175 }, { 0, 0, -176 }, { 0, 0, -178 }, { 0, 0, -179 }, { 0, 0, -180 }, { 0, 0, -182 },\n    { 0, 0, -183 }, { 0, 0, -184 }, { 0, 0, -185 }, { 0, 0, -185 }, { 0, 0, -185 }, { 0, 0, -185 },\n    { 0, 0, -184 }, { 0, 0, -182 }, { 0, 0, -180 }, { 0, 0, -177 }, { 0, 0, -174 }, { 0, 0, -148 },\n    { 0, 0, -105 }, { 0, 0, -82 },  { 0, 0, -81 },  { 0, 0, -79 },  { 0, 0, -78 },  { 0, 0, -77 },\n    { 0, 0, -76 },  { 0, 0, -75 },  { 0, 0, -74 },  { 0, 0, -74 },  { 0, 0, -73 },  { 0, 0, -72 },\n    { 0, 0, -72 },  { 0, 0, -71 },  { 0, 0, -71 },  { 0, 0, -70 },  { 0, 0, -70 },  { 0, 0, -70 },\n    { 0, 0, -69 },  { 0, 0, -69 },  { 0, 0, -69 },  { 0, 0, -69 },  { 0, 0, -69 },  { 0, 0, -69 },\n    { 0, 0, -69 },  { 0, 0, -69 },  { 0, 0, -69 },  { 0, 0, -69 },  { 0, 0, -69 },  { 0, 0, -70 },\n    { 0, 0, -70 },  { 0, 0, -70 },  { 0, 0, -70 },  { 0, 0, -71 },  { 0, 0, -71 },  { 0, 0, -71 },\n    { 0, 0, -72 },  { 0, 0, -72 },  { 0, 0, -72 },  { 0, 0, -73 },  { 0, 0, -73 },  { 0, 0, -74 },\n    { 0, 0, -74 },  { 0, 0, -74 },  { 0, 0, -75 },  { 0, 0, -75 },  { 0, 0, -76 },  { 0, 0, -76 },\n    { 0, 0, -77 },  { 0, 0, -77 },  { 0, 0, -78 },  { 0, 0, -78 },  { 0, 0, -78 },  { 0, 0, -79 },\n    { 0, 0, -79 },  { 0, 0, -79 },  { 0, 0, -80 },  { 0, 0, -80 },  { 0, 0, -80 },  { 0, 0, -81 },\n    { 0, 0, -81 },  { 0, 0, -81 },  { 0, 0, -81 },  { 0, 0, -82 },  { 0, 0, -82 },  { 0, 0, -82 },\n    { 0, 0, -82 },  { 0, 0, -82 },  { 0, 0, -82 },  { 0, 0, -81 },  { 0, 0, -80 },  { 0, 0, -80 },\n    { 0, 0, -79 },  { 0, 0, -78 },  { 0, 0, -77 },  { 0, 0, -77 },  { 0, 0, -77 },  { 0, 0, -78 },\n    { 0, 0, -80 },  { 0, 0, -82 },  { 0, 0, -85 },  { 0, 0, -88 },  { 0, 0, -93 },  { 0, 0, -97 },\n    { 0, 0, -102 }, { 0, 0, -107 }, { 0, 0, -113 }, { 0, 0, -118 }, { 0, 0, -124 }, { 0, 0, -129 },\n    { 0, 0, -135 }, { 0, 0, -140 }, { 0, 0, -145 }, { 0, 0, -149 }, { 0, 0, -152 }, { 0, 0, -155 },\n    { 0, 0, -158 }, { 0, 0, -159 }, { 0, 0, -160 }, { 0, 0, -161 }, { 0, 0, -162 }, { 0, 0, -163 },\n    { 0, 0, -164 }, { 0, 0, -164 }, { 0, 0, -165 }, { 0, 0, -166 }, { 0, 0, -166 }, { 0, 0, -166 },\n    { 0, 0, -167 }, { 0, 0, -167 }, { 0, 0, -167 }, { 0, 0, -168 }, { 0, 0, -168 }, { 0, 0, -168 },\n    { 0, 0, -168 }, { 0, 0, -168 }, { 0, 0, -168 }, { 0, 0, -168 }, { 0, 0, -168 }, { 0, 0, -168 },\n    { 0, 0, -168 }, { 0, 0, -167 }, { 0, 0, -167 }, { 0, 0, -167 }, { 0, 0, -167 }, { 0, 0, -166 },\n    { 0, 0, -166 }, { 0, 0, -166 }, { 0, 0, -165 }, { 0, 0, -165 }, { 0, 0, -165 }, { 0, 0, -164 },\n    { 0, 0, -164 }, { 0, 0, -164 }, { 0, 0, -163 }, { 0, 0, -163 }, { 0, 0, -163 }, { 0, 0, -162 },\n    { 0, 0, -162 }, { 0, 0, -162 }, { 0, 0, -161 }, { 0, 0, -161 }, { 0, 0, -161 }, { 0, 0, -160 },\n    { 0, 0, -160 }, { 0, 0, -160 }, { 0, 0, -160 }, { 0, 0, -160 }, { 0, 0, -160 }, { 0, 0, -159 },\n    { 0, 0, -159 }, { 0, 0, -159 }, { 0, 0, -159 }, { 0, 0, -160 }, { 0, 0, -160 }, { 0, 0, -160 },\n    { 0, 0, -160 }, { 0, 0, -161 }, { 0, 0, -161 }, { 0, 0, -162 }, { 0, 0, -162 }, { 0, 0, -163 },\n    { 0, 0, -164 }, { 0, 0, -164 }, { 0, 0, -165 }, { 0, 0, -165 }, { 0, 0, -166 }, { 0, 0, -167 },\n    { 0, 0, -167 }, { 0, 0, -168 }, { 0, 0, -168 }, { 0, 0, -169 }, { 0, 0, -169 }, { 0, 0, -170 },\n    { 0, 0, -170 }, { 0, 0, -170 }, { 0, 0, -170 }, { 0, 0, -170 }, { 0, 0, -170 }, { 0, 0, -170 },\n    { 0, 0, -170 }, { 0, 0, -169 }, { 0, 0, -169 }, { 0, 0, -168 }, { 0, 0, -167 }, { 0, 0, -167 },\n    { 0, 0, -165 }, { 0, 0, -164 }, { 0, 0, -163 }, { 0, 0, -161 }, { 0, 0, -159 }, { 0, 0, -157 },\n    { 0, 0, -152 }, { 0, 0, -146 }, { 0, 0, -139 }, { 0, 0, -132 }, { 0, 0, -123 }, { 0, 0, -114 },\n    { 0, 0, -105 }, { 0, 0, -96 },  { 0, 0, -87 },  { 0, 0, -79 },  { 0, 0, -71 },  { 0, 0, -64 },\n    { 0, 0, -59 },  { 0, 0, -54 },  { 0, 0, -50 },  { 0, 0, -46 },  { 0, 0, -42 },  { 0, 0, -39 },\n    { 0, 0, -36 },  { 0, 0, -33 },  { 0, 0, -30 },  { 0, 0, -28 },  { 0, 0, -26 },  { 0, 0, -25 },\n    { 0, 0, -23 },  { 0, 0, -23 },  { 0, 0, -22 },  { 0, 0, -22 },  { 0, 0, -22 },  { 0, 0, -24 },\n    { 0, 0, -26 },  { 0, 0, -29 },  { 0, 0, -33 },  { 0, 0, -36 },  { 0, 0, -40 },  { 0, 0, -44 },\n    { 0, 0, -48 },  { 0, 0, -52 },  { 0, 0, -55 },  { 0, 0, -57 },  { 0, 0, -58 },  { 0, 0, -59 },\n    { 0, 0, -58 },  { 0, 0, -57 },  { 0, 0, -55 },  { 0, 0, -52 },  { 0, 0, -49 },  { 0, 0, -46 },\n    { 0, 0, -42 },  { 0, 0, -39 },  { 0, 0, -35 },  { 0, 0, -31 },  { 0, 0, -28 },  { 0, 0, -26 },\n    { 0, 0, -24 },  { 0, 0, -22 },  { 0, 0, -22 },  { 0, 0, -22 },  { 0, 0, -24 },  { 0, 0, -26 },\n    { 0, 0, -29 },  { 0, 0, -33 },  { 0, 0, -36 },  { 0, 0, -40 },  { 0, 0, -44 },  { 0, 0, -48 },\n    { 0, 0, -52 },  { 0, 0, -55 },  { 0, 0, -57 },  { 0, 0, -58 },  { 0, 0, -59 },  { 0, 0, -58 },\n    { 0, 0, -57 },  { 0, 0, -54 },  { 0, 0, -51 },  { 0, 0, -47 },  { 0, 0, -43 },  { 0, 0, -38 },\n    { 0, 0, -34 },  { 0, 0, -30 },  { 0, 0, -27 },  { 0, 0, -24 },  { 0, 0, -22 },  { 0, 0, -22 },\n    { 0, 0, -22 },  { 0, 0, -23 },  { 0, 0, -23 },  { 0, 0, -25 },  { 0, 0, -26 },  { 0, 0, -28 },\n    { 0, 0, -30 },  { 0, 0, -33 },  { 0, 0, -35 },  { 0, 0, -39 },  { 0, 0, -42 },  { 0, 0, -46 },\n    { 0, 0, -50 },  { 0, 0, -54 },  { 0, 0, -59 },  { 0, 0, -64 },  { 0, 0, -69 },  { 0, 0, -74 },\n    { 0, 0, -79 },  { 0, 0, -85 },  { 0, 0, -90 },  { 0, 0, -96 },  { 0, 0, -102 }, { 0, 0, -107 },\n    { 0, 0, -113 }, { 0, 0, -119 }, { 0, 0, -125 }, { 0, 0, -131 }, { 0, 0, -137 }, { 0, 0, -144 },\n    { 0, 0, -150 }, { 0, 0, -156 }, { 0, 0, -162 }, { 0, 0, -168 }, { 0, 0, -175 }, { 0, 0, -181 },\n    { 0, 0, -187 }, { 0, 0, -193 }, { 0, 0, -200 }, { 0, 0, -206 }, { 0, 0, -212 }, { 0, 0, -218 },\n    { 0, 0, -224 }, { 0, 0, -230 }, { 0, 0, -236 }, { 0, 0, -242 }, { 0, 0, -247 }, { 0, 0, -253 },\n    { 0, 0, -259 }, { 0, 0, -264 }, { 0, 0, -269 }, { 0, 0, -275 }, { 0, 0, -280 }, { 0, 0, -285 },\n    { 0, 0, -289 }, { 0, 0, -294 }, { 0, 0, -299 }, { 0, 0, -303 }, { 0, 0, -307 }, { 0, 0, -311 },\n    { 0, 0, -315 }, { 0, 0, -318 }, { 0, 0, -321 }, { 0, 0, -324 }, { 0, 0, -326 }, { 0, 0, -329 },\n    { 0, 0, -330 }, { 0, 0, -331 }, { 0, 0, -332 }, { 0, 0, -333 }, { 0, 0, -333 }, { 0, 0, -332 },\n    { 0, 0, -331 }, { 0, 0, -330 }, { 0, 0, -328 }, { 0, 0, -326 }, { 0, 0, -323 }, { 0, 0, -320 },\n    { 0, 0, -316 }, { 0, 0, -311 }, { 0, 0, -305 }, { 0, 0, -296 }, { 0, 0, -285 }, { 0, 0, -272 },\n    { 0, 0, -258 }, { 0, 0, -243 }, { 0, 0, -228 }, { 0, 0, -212 }, { 0, 0, -197 }, { 0, 0, -182 },\n    { 0, 0, -168 }, { 0, 0, -156 }, { 0, 0, -144 }, { 0, 0, -130 }, { 0, 0, -116 }, { 0, 0, -104 },\n    { 0, 0, -93 },  { 0, 0, -86 },  { 0, 0, -84 },  { 0, 0, -88 },  { 0, 0, -100 }, { 0, 0, -123 },\n    { 0, 0, -151 }, { 0, 0, -182 }, { 0, 0, -213 }, { 0, 0, -240 }, { 0, 0, -261 }, { 0, 0, -271 },\n    { 0, 0, -275 }, { 0, 0, -278 }, { 0, 0, -281 }, { 0, 0, -284 }, { 0, 0, -286 }, { 0, 0, -288 },\n    { 0, 0, -289 }, { 0, 0, -291 }, { 0, 0, -292 }, { 0, 0, -293 }, { 0, 0, -293 }, { 0, 0, -293 },\n    { 0, 0, -293 }, { 0, 0, -293 }, { 0, 0, -293 }, { 0, 0, -292 }, { 0, 0, -292 }, { 0, 0, -291 },\n    { 0, 0, -290 }, { 0, 0, -289 }, { 0, 0, -288 }, { 0, 0, -286 }, { 0, 0, -285 }, { 0, 0, -284 },\n    { 0, 0, -283 }, { 0, 0, -281 }, { 0, 0, -280 }, { 0, 0, -279 }, { 0, 0, -277 }, { 0, 0, -276 },\n    { 0, 0, -275 }, { 0, 0, -274 }, { 0, 0, -273 }, { 0, 0, -272 }, { 0, 0, -272 }, { 0, 0, -271 },\n    { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 },\n    { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 },\n    { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 },\n    { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 },\n    { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 },\n    { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 },\n    { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 },\n    { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 },\n    { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 },\n    { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 },\n    { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -271 }, { 0, 0, -270 }, { 0, 0, -271 },\n    { 0, 0, -275 }, { 0, 0, -279 }, { 0, 0, -284 }, { 0, 0, -290 }, { 0, 0, -295 }, { 0, 0, -300 },\n    { 0, 0, -304 }, { 0, 0, -308 }, { 0, 0, -310 }, { 0, 0, -311 },\n};\n\nstatic s16 animdata_mario_lips_5_2[][3] = {\n    { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -310 }, { 0, 0, -309 }, { 0, 0, -308 },\n    { 0, 0, -307 }, { 0, 0, -306 }, { 0, 0, -305 }, { 0, 0, -303 }, { 0, 0, -302 }, { 0, 0, -300 },\n    { 0, 0, -299 }, { 0, 0, -297 }, { 0, 0, -296 }, { 0, 0, -294 }, { 0, 0, -293 }, { 0, 0, -292 },\n    { 0, 0, -290 }, { 0, 0, -289 }, { 0, 0, -289 }, { 0, 0, -288 }, { 0, 0, -287 }, { 0, 0, -287 },\n    { 0, 0, -287 }, { 0, 0, -288 }, { 0, 0, -288 }, { 0, 0, -289 }, { 0, 0, -290 }, { 0, 0, -292 },\n    { 0, 0, -294 }, { 0, 0, -297 }, { 0, 0, -300 }, { 0, 0, -303 }, { 0, 0, -307 }, { 0, 0, -311 },\n    { 0, 0, -333 }, { 0, 0, -379 }, { 0, 0, -432 }, { 0, 0, -476 }, { 0, 0, -494 }, { 0, 0, -466 },\n    { 0, 0, -403 }, { 0, 0, -340 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 },\n    { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 },\n    { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 },\n    { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 },\n    { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 },\n    { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 },\n    { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 },\n    { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 },\n    { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 },\n    { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 },\n    { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 },\n    { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 },\n    { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 },\n    { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 },\n    { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 },\n    { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 },\n    { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 },\n    { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 },\n    { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 },\n    { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 },\n    { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 }, { 0, 0, -311 },\n};\n\nstruct AnimDataInfo anim_mario_lips_5[] = {\n    { ARRAY_COUNT(animdata_mario_lips_5_1), GD_ANIM_ROT3S, animdata_mario_lips_5_1 },\n    { ARRAY_COUNT(animdata_mario_lips_5_2), GD_ANIM_ROT3S, animdata_mario_lips_5_2 },\n    END_ANIMDATA_INFO_ARR,\n};\n\nstatic s16 animdata_mario_lip_6_1[][3] = {\n    { 0, 0, -1115 },     { 0, 0, -1116 },     { 0, 0, -1117 },     { 0, 0, -1119 },\n    { 0, 0, -1122 },     { 0, 0, -1125 },     { 0, 0, -1129 },     { 0, 0, -1133 },\n    { 0, 0, -1137 },     { 0, 0, -1142 },     { 0, 0, -1146 },     { 0, 0, -1151 },\n    { 0, 0, -1155 },     { 0, 0, -1159 },     { 0, 0, -1163 },     { 0, 0, -1166 },\n    { 0, 0, -1169 },     { 0, 0, -1171 },     { 0, 0, -1172 },     { 0, 0, -1171 },\n    { 0, 0, -1167 },     { 0, 0, -1160 },     { 0, 0, -1152 },     { 0, 0, -1143 },\n    { 0, 0, -1136 },     { 0, 0, -1131 },     { 0, 0, -1129 },     { 0, 0, -1131 },\n    { 0, 0, -1138 },     { 0, 0, -1150 },     { 0, 0, -1167 },     { 0, 0, -1187 },\n    { 0, 0, -1209 },     { 0, 0, -1233 },     { 0, 0, -1259 },     { 0, 0, -1285 },\n    { 0, 0, -1310 },     { 0, 0, -1335 },     { 0, 0, -1358 },     { 0, 0, -1378 },\n    { 0, 0, -1395 },     { 0, 0, -1408 },     { 0, 0, -1417 },     { 0, 0, -1374 },\n    { 0, 0, -1287 },     { 0, 0, -1241 },     { 1, 1, -1247 },     { 3, 3, -1257 },\n    { 4, 4, -1272 },     { 6, 6, -1290 },     { 8, 8, -1310 },     { 10, 10, -1332 },\n    { 13, 12, -1355 },   { 15, 14, -1378 },   { 16, 16, -1400 },   { 18, 18, -1420 },\n    { 20, 19, -1438 },   { 21, 21, -1451 },   { 22, 22, -1461 },   { 23, 22, -1465 },\n    { 23, 22, -1463 },   { 22, 21, -1444 },   { 19, 19, -1402 },   { 15, 15, -1346 },\n    { 11, 11, -1283 },   { 7, 7, -1221 },     { 3, 3, -1167 },     { 0, 0, -1129 },\n    { 0, 0, -1115 },     { 0, 0, -1106 },     { 0, 0, -1115 },     { 0, 0, -1154 },\n    { 0, 0, -1199 },     { 0, 0, -1246 },     { 0, 0, -1296 },     { 0, 0, -1346 },\n    { 0, 0, -1395 },     { 0, 0, -1442 },     { 0, 0, -1484 },     { 0, 0, -1521 },\n    { 0, 0, -1551 },     { 0, 0, -1572 },     { 2, 2, -1586 },     { 3, 4, -1592 },\n    { 4, 5, -1591 },     { 5, 5, -1584 },     { 3, 4, -1570 },     { 0, 0, -1551 },\n    { -7, -9, -1515 },   { -19, -23, -1461 }, { -33, -40, -1397 }, { -47, -56, -1336 },\n    { -58, -69, -1286 }, { -64, -76, -1260 }, { -66, -79, -1249 }, { -68, -82, -1242 },\n    { -70, -84, -1237 }, { -72, -86, -1234 }, { -73, -87, -1234 }, { -74, -89, -1235 },\n    { -75, -89, -1238 }, { -75, -90, -1242 }, { -76, -90, -1246 }, { -75, -90, -1251 },\n    { -75, -89, -1255 }, { -74, -89, -1260 }, { -73, -87, -1263 }, { -72, -86, -1266 },\n    { -70, -84, -1267 }, { -68, -82, -1267 }, { -66, -79, -1264 }, { -64, -76, -1260 },\n    { -57, -68, -1244 }, { -46, -55, -1215 }, { -32, -38, -1180 }, { -18, -21, -1146 },\n    { -6, -7, -1122 },   { 0, 0, -1115 },     { 2, 3, -1121 },     { 4, 5, -1131 },\n    { 5, 6, -1143 },     { 6, 7, -1159 },     { 6, 8, -1176 },     { 6, 8, -1195 },\n    { 6, 7, -1214 },     { 5, 6, -1235 },     { 5, 5, -1255 },     { 4, 4, -1274 },\n    { 3, 3, -1293 },     { 2, 2, -1309 },     { 1, 1, -1324 },     { 0, 0, -1336 },\n    { 0, 0, -1345 },     { 0, 0, -1350 },     { 0, 0, -1353 },     { 0, 0, -1355 },\n    { 0, 0, -1356 },     { 0, 0, -1356 },     { 0, 0, -1356 },     { 0, 0, -1355 },\n    { 0, 0, -1354 },     { 0, 0, -1352 },     { 0, 0, -1349 },     { 0, 0, -1346 },\n    { 0, 0, -1342 },     { 0, 0, -1338 },     { 0, 0, -1334 },     { 0, 0, -1329 },\n    { 0, 0, -1324 },     { 0, 0, -1319 },     { 0, 0, -1313 },     { 0, 0, -1307 },\n    { 0, 0, -1301 },     { 0, 0, -1295 },     { 0, 0, -1288 },     { 0, 0, -1282 },\n    { 0, 0, -1275 },     { 0, 0, -1269 },     { 0, 0, -1262 },     { 0, 0, -1255 },\n    { 0, 0, -1249 },     { 0, 0, -1217 },     { 0, 0, -1169 },     { 0, 0, -1157 },\n    { 0, 0, -1231 },     { 0, 0, -1341 },     { 0, 0, -1396 },     { 0, 0, -1387 },\n    { 0, 0, -1367 },     { 0, 0, -1339 },     { 0, 0, -1306 },     { 0, 0, -1268 },\n    { 0, 0, -1228 },     { 0, 0, -1188 },     { 0, 0, -1149 },     { 0, 0, -1115 },\n    { 0, 0, -1078 },     { 0, 0, -1035 },     { 0, 0, -995 },      { 0, 0, -965 },\n    { 0, 0, -953 },      { 0, 0, -960 },      { 0, 0, -977 },      { 0, 0, -1001 },\n    { 0, 0, -1029 },     { 0, 0, -1058 },     { 0, 0, -1084 },     { 0, 0, -1104 },\n    { 0, 0, -1115 },     { 0, 0, -1120 },     { 0, 0, -1123 },     { 0, 0, -1126 },\n    { 0, 0, -1128 },     { 0, 0, -1129 },     { 0, 0, -1130 },     { 0, 0, -1130 },\n    { 0, 0, -1130 },     { 0, 0, -1130 },     { 0, 0, -1129 },     { 0, 0, -1127 },\n    { 0, 0, -1126 },     { 0, 0, -1124 },     { 0, 0, -1122 },     { 0, 0, -1121 },\n    { 0, 0, -1119 },     { 0, 0, -1117 },     { 0, 0, -1116 },     { 0, 0, -1114 },\n    { 0, 0, -1114 },     { 0, 0, -1113 },     { 0, 0, -1113 },     { 0, 0, -1113 },\n    { 0, 0, -1114 },     { 0, 0, -1115 },     { 0, 0, -1123 },     { 0, 0, -1137 },\n    { 0, 0, -1154 },     { 0, 0, -1166 },     { 0, 0, -1167 },     { 0, 0, -1157 },\n    { 0, 0, -1143 },     { 0, 0, -1125 },     { 0, 0, -1105 },     { 0, 0, -1084 },\n    { 0, 0, -1064 },     { 0, 0, -1048 },     { 0, 0, -1035 },     { 0, 0, -1026 },\n    { 0, 0, -1021 },     { 0, -1, -1018 },    { 1, -1, -1016 },    { 1, -2, -1016 },\n    { 1, -2, -1016 },    { 1, -3, -1016 },    { 2, -3, -1016 },    { 2, -3, -1016 },\n    { 2, -3, -1015 },    { 2, -4, -1015 },    { 3, -5, -1014 },    { 3, -5, -1013 },\n    { 4, -6, -1013 },    { 4, -7, -1012 },    { 5, -8, -1011 },    { 5, -9, -1011 },\n    { 6, -9, -1010 },    { 6, -10, -1010 },   { 7, -11, -1010 },   { 7, -11, -1010 },\n    { 7, -11, -1010 },   { 7, -11, -1011 },   { 7, -11, -1012 },   { 7, -11, -1013 },\n    { 7, -10, -1015 },   { 6, -9, -1017 },    { 5, -8, -1019 },    { 4, -7, -1022 },\n    { 3, -5, -1026 },    { 1, -2, -1030 },    { 0, 0, -1035 },     { -2, 3, -1041 },\n    { -5, 7, -1048 },    { -8, 12, -1058 },   { -12, 18, -1068 },  { -17, 24, -1080 },\n    { -22, 31, -1092 },  { -27, 38, -1105 },  { -33, 46, -1119 },  { -38, 54, -1133 },\n    { -44, 62, -1147 },  { -49, 70, -1161 },  { -55, 78, -1174 },  { -60, 86, -1187 },\n    { -65, 93, -1199 },  { -70, 101, -1210 }, { -74, 108, -1219 }, { -78, 114, -1228 },\n    { -81, 120, -1234 }, { -83, 126, -1239 }, { -85, 130, -1242 }, { -86, 135, -1241 },\n    { -86, 139, -1235 }, { -86, 143, -1226 }, { -84, 147, -1213 }, { -82, 150, -1199 },\n    { -80, 153, -1182 }, { -77, 156, -1165 }, { -74, 158, -1148 }, { -71, 159, -1132 },\n    { -67, 160, -1117 }, { -63, 159, -1104 }, { -59, 158, -1094 }, { -55, 156, -1088 },\n    { -52, 152, -1086 }, { -48, 148, -1089 }, { -44, 140, -1102 }, { -38, 128, -1127 },\n    { -32, 113, -1161 }, { -25, 95, -1201 },  { -18, 76, -1243 },  { -11, 57, -1286 },\n    { -6, 39, -1326 },   { -2, 22, -1359 },   { 0, 9, -1383 },     { 0, 0, -1396 },\n    { -2, -6, -1397 },   { -6, -10, -1392 },  { -12, -12, -1381 }, { -19, -13, -1365 },\n    { -27, -13, -1346 }, { -35, -13, -1324 }, { -44, -11, -1301 }, { -53, -10, -1278 },\n    { -61, -8, -1256 },  { -68, -7, -1236 },  { -74, -6, -1219 },  { -79, -6, -1206 },\n    { -83, -6, -1200 },  { -86, -6, -1198 },  { -88, -7, -1200 },  { -89, -7, -1203 },\n    { -87, -7, -1207 },  { -84, -6, -1208 },  { -79, -6, -1206 },  { -70, -5, -1200 },\n    { -55, -4, -1190 },  { -37, -2, -1179 },  { -20, -1, -1167 },  { -7, 0, -1157 },\n    { 0, 0, -1149 },     { 2, 0, -1144 },     { 4, 0, -1137 },     { 6, 0, -1131 },\n    { 7, 0, -1124 },     { 8, 0, -1117 },     { 9, 0, -1110 },     { 9, 0, -1103 },\n    { 9, 0, -1096 },     { 8, 0, -1089 },     { 8, 0, -1082 },     { 7, 0, -1076 },\n    { 7, 0, -1070 },     { 6, 0, -1064 },     { 5, 0, -1059 },     { 4, 0, -1055 },\n    { 3, 0, -1051 },     { 2, 0, -1048 },     { 1, 0, -1046 },     { 1, 0, -1044 },\n    { 0, 0, -1044 },     { 0, 0, -1045 },     { 0, 0, -1046 },     { 0, 0, -1049 },\n    { 0, 0, -1053 },     { 0, 0, -1058 },     { 0, 0, -1063 },     { 0, 0, -1069 },\n    { 0, 0, -1076 },     { 0, 0, -1084 },     { 0, 0, -1092 },     { 0, 0, -1100 },\n    { 0, 0, -1109 },     { 0, 0, -1119 },     { 0, 0, -1128 },     { 0, 0, -1138 },\n    { 0, 0, -1148 },     { 0, 0, -1158 },     { 0, 0, -1169 },     { 0, 0, -1179 },\n    { 0, 0, -1189 },     { 0, 0, -1199 },     { 0, 0, -1208 },     { 0, 0, -1218 },\n    { 0, 0, -1227 },     { 0, 0, -1235 },     { 0, 0, -1243 },     { 0, 0, -1251 },\n    { 0, 0, -1258 },     { 0, 0, -1264 },     { 0, 0, -1270 },     { 0, 0, -1276 },\n    { 0, 0, -1281 },     { 0, 0, -1285 },     { 0, 0, -1288 },     { 0, 0, -1288 },\n    { 0, 0, -1287 },     { 0, 0, -1282 },     { 0, 0, -1275 },     { 0, 0, -1264 },\n    { 0, 0, -1231 },     { 0, 0, -1173 },     { 0, 0, -1116 },     { 0, 0, -1084 },\n    { 0, 0, -1073 },     { 0, 0, -1062 },     { 0, 0, -1052 },     { 0, 0, -1043 },\n    { 0, 0, -1036 },     { 0, 0, -1032 },     { 0, 0, -1030 },     { 0, 0, -1032 },\n    { 0, 0, -1038 },     { 0, 0, -1048 },     { 0, 0, -1063 },     { 0, 0, -1084 },\n    { 0, 0, -1132 },     { 0, 0, -1215 },     { 0, 0, -1315 },     { 0, 0, -1409 },\n    { 0, 0, -1479 },     { 0, 0, -1505 },     { 0, 0, -1493 },     { 0, 0, -1468 },\n    { 0, 0, -1432 },     { 0, 0, -1387 },     { 0, -1, -1336 },    { 1, -1, -1281 },\n    { 1, -1, -1225 },    { 1, -2, -1170 },    { 1, -2, -1120 },    { 1, -2, -1075 },\n    { 1, -2, -1040 },    { 1, -3, -1016 },    { 2, -3, -1001 },    { 2, -3, -989 },\n    { 2, -3, -980 },     { 2, -3, -974 },     { 2, -3, -971 },     { 2, -3, -971 },\n    { 2, -3, -972 },     { 2, -3, -975 },     { 2, -3, -979 },     { 2, -3, -984 },\n    { 2, -3, -990 },     { 1, -3, -996 },     { 1, -3, -1002 },    { 1, -3, -1007 },\n    { 1, -3, -1012 },    { 1, -3, -1016 },    { 1, -3, -1019 },    { 2, -2, -1021 },\n    { 2, -2, -1024 },    { 2, -2, -1027 },    { 2, -2, -1030 },    { 2, -2, -1035 },\n    { 2, -2, -1041 },    { 2, -2, -1049 },    { 2, -2, -1059 },    { 2, -2, -1072 },\n    { 2, -2, -1088 },    { 2, -2, -1108 },    { 2, -2, -1139 },    { 2, -2, -1185 },\n    { 2, -1, -1241 },    { 3, -1, -1300 },    { 3, -1, -1356 },    { 3, -1, -1403 },\n    { 3, 0, -1434 },     { 3, 0, -1443 },     { 3, -1, -1416 },    { 3, -1, -1351 },\n    { 2, -1, -1266 },    { 2, -2, -1178 },    { 2, -2, -1104 },    { 2, -2, -1062 },\n    { 2, -2, -1045 },    { 2, -2, -1036 },    { 2, -3, -1033 },    { 2, -3, -1036 },\n    { 2, -2, -1042 },    { 2, -2, -1050 },    { 2, -2, -1058 },    { 2, -2, -1066 },\n    { 2, -2, -1072 },    { 2, -2, -1074 },    { 2, -2, -1071 },    { 2, -2, -1062 },\n    { 1, -3, -1005 },    { 1, -3, -914 },     { 1, -3, -867 },     { 1, -3, -870 },\n    { 1, -3, -875 },     { 1, -3, -883 },     { 1, -3, -894 },     { 1, -3, -906 },\n    { 1, -3, -920 },     { 1, -3, -935 },     { 1, -3, -951 },     { 1, -3, -968 },\n    { 1, -3, -986 },     { 1, -2, -1003 },    { 1, -2, -1021 },    { 2, -2, -1038 },\n    { 2, -2, -1055 },    { 2, -2, -1071 },    { 2, -2, -1086 },    { 2, -2, -1102 },\n    { 2, -2, -1119 },    { 2, -2, -1135 },    { 2, -2, -1148 },    { 2, -2, -1158 },\n    { 2, -2, -1167 },    { 2, -2, -1177 },    { 2, -2, -1186 },    { 2, -2, -1195 },\n    { 2, -2, -1203 },    { 2, -2, -1212 },    { 2, -2, -1220 },    { 2, -2, -1228 },\n    { 2, -2, -1235 },    { 2, -2, -1243 },    { 2, -1, -1250 },    { 3, -1, -1257 },\n    { 3, -1, -1263 },    { 3, -1, -1265 },    { 3, -1, -1257 },    { 2, -2, -1240 },\n    { 2, -2, -1220 },    { 2, -2, -1198 },    { 2, -2, -1174 },    { 2, -2, -1149 },\n    { 2, -2, -1123 },    { 2, -2, -1099 },    { 2, -2, -1076 },    { 2, -2, -1054 },\n    { 2, -2, -1036 },    { 2, -2, -1022 },    { 1, -3, -1013 },    { 1, -3, -1008 },\n    { 1, -3, -1010 },    { 1, -2, -1020 },    { 2, -2, -1038 },    { 2, -2, -1062 },\n    { 2, -2, -1092 },    { 2, -2, -1126 },    { 2, -2, -1163 },    { 2, -2, -1201 },\n    { 2, -1, -1240 },    { 2, -1, -1278 },    { 3, -1, -1313 },    { 3, -1, -1345 },\n    { 3, -1, -1372 },    { 3, -1, -1393 },    { 3, -1, -1407 },    { 3, -1, -1411 },\n    { 3, -1, -1406 },    { 3, -1, -1389 },    { 3, -1, -1364 },    { 3, -1, -1332 },\n    { 3, -1, -1294 },    { 2, -1, -1254 },    { 2, -2, -1211 },    { 2, -2, -1168 },\n    { 2, -2, -1127 },    { 2, -2, -1090 },    { 2, -2, -1058 },    { 2, -2, -1033 },\n    { 1, -3, -1016 },    { 1, -3, -1010 },    { 1, -3, -1015 },    { 2, -2, -1030 },\n    { 2, -2, -1052 },    { 2, -2, -1081 },    { 2, -2, -1114 },    { 2, -2, -1151 },\n    { 2, -2, -1191 },    { 2, -1, -1231 },    { 2, -1, -1270 },    { 3, -1, -1307 },\n    { 3, -1, -1341 },    { 3, -1, -1370 },    { 3, -1, -1392 },    { 3, -1, -1406 },\n    { 3, -1, -1411 },    { 3, -1, -1406 },    { 3, -1, -1389 },    { 3, -1, -1364 },\n    { 3, -1, -1332 },    { 3, -1, -1294 },    { 2, -1, -1254 },    { 2, -2, -1211 },\n    { 2, -2, -1168 },    { 2, -2, -1127 },    { 2, -2, -1090 },    { 2, -2, -1058 },\n    { 2, -2, -1033 },    { 1, -3, -1016 },    { 1, -3, -1010 },    { 1, -2, -1017 },\n    { 2, -2, -1036 },    { 2, -2, -1065 },    { 2, -2, -1101 },    { 2, -2, -1143 },\n    { 2, -2, -1188 },    { 2, -1, -1234 },    { 2, -1, -1279 },    { 3, -1, -1321 },\n    { 3, -1, -1357 },    { 3, -1, -1386 },    { 3, -1, -1405 },    { 3, -1, -1411 },\n    { 3, -1, -1407 },    { 3, -1, -1393 },    { 3, -1, -1372 },    { 3, -1, -1345 },\n    { 3, -1, -1313 },    { 2, -1, -1277 },    { 2, -1, -1239 },    { 2, -2, -1201 },\n    { 2, -2, -1162 },    { 2, -2, -1125 },    { 2, -2, -1091 },    { 2, -2, -1062 },\n    { 2, -2, -1037 },    { 2, -3, -1020 },    { 1, -3, -1010 },    { 1, -3, -1006 },\n    { 1, -2, -1002 },    { 1, -2, -998 },     { 1, -2, -996 },     { 1, -2, -994 },\n    { 1, -2, -992 },     { 1, -2, -991 },     { 1, -2, -990 },     { 1, -2, -990 },\n    { 1, -2, -991 },     { 1, -2, -992 },     { 1, -2, -993 },     { 1, -2, -995 },\n    { 1, -2, -997 },     { 1, -2, -999 },     { 1, -2, -1002 },    { 1, -2, -1005 },\n    { 1, -2, -1008 },    { 0, -1, -1012 },    { 0, -1, -1016 },    { 0, -1, -1020 },\n    { 0, -1, -1024 },    { 0, -1, -1028 },    { 0, -1, -1032 },    { 0, -1, -1037 },\n    { 0, -1, -1042 },    { 0, -1, -1046 },    { 0, -1, -1051 },    { 0, -1, -1056 },\n    { 0, -1, -1061 },    { 0, 0, -1065 },     { 0, 0, -1070 },     { 0, 0, -1075 },\n    { 0, 0, -1079 },     { 0, 0, -1084 },     { 0, 0, -1088 },     { 0, 0, -1092 },\n    { 0, 0, -1096 },     { 0, 0, -1099 },     { 0, 0, -1103 },     { 0, 0, -1106 },\n    { 0, 0, -1109 },     { 0, 0, -1111 },     { 0, 0, -1113 },     { 0, 0, -1115 },\n    { 0, 0, -1116 },     { 0, 0, -1116 },     { 0, 0, -1115 },     { 0, 0, -1114 },\n    { 0, 0, -1112 },     { 0, 0, -1109 },     { 0, 0, -1107 },     { 0, 0, -1104 },\n    { 0, 0, -1101 },     { 0, 0, -1098 },     { 0, 0, -1096 },     { 0, 0, -1094 },\n    { 0, 0, -1093 },     { 0, 0, -1092 },     { 0, 0, -1093 },     { 0, 0, -1095 },\n    { 0, 0, -1098 },     { 0, 0, -1102 },     { 0, 0, -1108 },     { 0, 0, -1115 },\n    { 0, 0, -1128 },     { 0, 0, -1148 },     { 0, 0, -1174 },     { 0, 0, -1205 },\n    { 0, 0, -1237 },     { 0, 0, -1270 },     { 0, 0, -1301 },     { 0, 0, -1329 },\n    { 0, 0, -1352 },     { 0, 0, -1368 },     { 0, 0, -1375 },     { 0, 0, -1372 },\n    { 0, 0, -1361 },     { 0, 0, -1342 },     { 0, 0, -1318 },     { 0, 0, -1290 },\n    { 0, 0, -1258 },     { 0, 0, -1225 },     { 0, 0, -1192 },     { 0, 0, -1161 },\n    { 0, 0, -1127 },     { 0, 0, -1086 },     { 0, 0, -1041 },     { 0, 0, -996 },\n    { 0, 0, -953 },      { 0, 0, -914 },      { 0, 0, -883 },      { 0, 0, -863 },\n    { 0, 0, -849 },      { 0, 0, -836 },      { 0, 0, -823 },      { 0, 0, -813 },\n    { 0, 0, -804 },      { 0, 0, -798 },      { 0, 0, -795 },      { 0, 0, -795 },\n    { 0, 0, -799 },      { 0, 0, -807 },      { 0, 0, -821 },      { 0, 0, -839 },\n    { 0, 0, -863 },      { 0, 0, -928 },      { 0, 0, -1045 },     { 0, 0, -1178 },\n    { 0, 0, -1291 },     { 0, 0, -1350 },     { 0, 0, -1368 },     { 0, 0, -1382 },\n    { 0, 0, -1392 },     { 0, 0, -1400 },     { 0, 0, -1405 },     { 0, 0, -1407 },\n    { 0, 0, -1408 },     { 0, 0, -1406 },     { 0, 0, -1403 },     { 0, 0, -1399 },\n    { 0, 0, -1393 },     { 0, 0, -1387 },     { 0, 0, -1381 },     { 0, 0, -1375 },\n    { 0, 0, -1368 },     { 0, 0, -1362 },     { 0, 0, -1357 },     { 0, 0, -1354 },\n    { 0, 0, -1351 },     { 0, 0, -1350 },     { 0, 0, -1350 },     { 0, 0, -1350 },\n    { 0, 0, -1350 },     { 0, 0, -1351 },     { 0, 0, -1351 },     { 0, 0, -1352 },\n    { 0, 0, -1352 },     { 0, 0, -1353 },     { 0, 0, -1353 },     { 0, 0, -1354 },\n    { 0, 0, -1355 },     { 0, 0, -1356 },     { 0, 0, -1357 },     { 0, 0, -1358 },\n    { 0, 0, -1359 },     { 0, 0, -1360 },     { 0, 0, -1361 },     { 0, 0, -1362 },\n    { 0, 0, -1363 },     { 0, 0, -1364 },     { 0, 0, -1365 },     { 0, 0, -1366 },\n    { 0, 0, -1367 },     { 0, 0, -1368 },     { 0, 0, -1369 },     { 0, 0, -1370 },\n    { 0, 0, -1371 },     { 0, 0, -1372 },     { 0, 0, -1373 },     { 0, 0, -1374 },\n    { 0, 0, -1375 },     { 0, 0, -1375 },     { 0, 0, -1376 },     { 0, 0, -1377 },\n    { 0, 0, -1378 },     { 0, 0, -1378 },     { 0, 0, -1379 },     { 0, 0, -1379 },\n    { 0, 0, -1379 },     { 0, 0, -1380 },     { 0, 0, -1380 },     { 0, 0, -1380 },\n    { 0, 0, -1380 },     { 0, 0, -1380 },     { 0, 0, -1380 },     { 0, 0, -1380 },\n    { 0, 0, -1379 },     { 0, 0, -1379 },     { 0, 0, -1378 },     { 0, 0, -1377 },\n    { 0, 0, -1376 },     { 0, 0, -1375 },     { 0, 0, -1374 },     { 0, 0, -1373 },\n    { 0, 0, -1371 },     { 0, 0, -1369 },     { 0, 0, -1368 },     { 0, 0, -1366 },\n    { 0, 0, -1363 },     { 0, 0, -1361 },     { 0, 0, -1359 },     { 0, 0, -1356 },\n    { 0, 0, -1353 },     { 0, 0, -1350 },     { 0, 0, -1341 },     { 0, 0, -1322 },\n    { 0, 0, -1295 },     { 0, 0, -1263 },     { 0, 0, -1229 },     { 0, 0, -1195 },\n    { 0, 0, -1164 },     { 0, 0, -1139 },     { 0, 0, -1121 },     { 0, 0, -1115 },\n};\n\nstatic s16 animdata_mario_lip_6_2[][3] = {\n    { 60, -96, -1085 },  { 59, -96, -1084 },  { 59, -97, -1081 },  { 58, -97, -1076 },\n    { 57, -98, -1070 },  { 56, -99, -1062 },  { 55, -99, -1054 },  { 53, -100, -1045 },\n    { 52, -101, -1036 }, { 50, -102, -1027 }, { 49, -103, -1018 }, { 47, -104, -1009 },\n    { 46, -105, -1002 }, { 45, -105, -995 },  { 44, -105, -990 },  { 43, -106, -987 },\n    { 43, -106, -985 },  { 43, -105, -986 },  { 43, -105, -989 },  { 44, -104, -995 },\n    { 45, -102, -1004 }, { 51, -97, -1047 },  { 64, -86, -1133 },  { 79, -74, -1232 },\n    { 91, -63, -1316 },  { 97, -59, -1354 },  { 96, -59, -1352 },  { 94, -61, -1336 },\n    { 90, -65, -1309 },  { 85, -69, -1275 },  { 80, -74, -1236 },  { 74, -79, -1196 },\n    { 68, -84, -1158 },  { 64, -89, -1125 },  { 60, -92, -1099 },  { 58, -94, -1084 },\n    { 57, -95, -1081 },  { 58, -95, -1088 },  { 59, -94, -1101 },  { 61, -93, -1120 },\n    { 64, -91, -1140 },  { 67, -89, -1160 },  { 70, -87, -1177 },  { 73, -85, -1190 },\n    { 77, -83, -1194 },  { 80, -82, -1193 },  { 84, -80, -1191 },  { 88, -78, -1187 },\n    { 92, -76, -1181 },  { 97, -74, -1175 },  { 102, -72, -1168 }, { 106, -70, -1160 },\n    { 111, -68, -1151 }, { 116, -66, -1142 }, { 120, -64, -1134 }, { 125, -62, -1125 },\n    { 129, -61, -1117 }, { 133, -59, -1109 }, { 136, -58, -1102 }, { 139, -56, -1096 },\n    { 141, -55, -1091 }, { 143, -55, -1087 }, { 144, -54, -1085 }, { 145, -54, -1083 },\n    { 146, -54, -1082 }, { 146, -53, -1081 }, { 147, -53, -1080 }, { 148, -53, -1079 },\n    { 149, -53, -1078 }, { 149, -53, -1077 }, { 150, -53, -1076 }, { 151, -52, -1076 },\n    { 152, -52, -1075 }, { 152, -52, -1074 }, { 153, -52, -1074 }, { 154, -52, -1073 },\n    { 154, -52, -1073 }, { 155, -53, -1072 }, { 156, -53, -1072 }, { 156, -53, -1072 },\n    { 157, -53, -1071 }, { 157, -53, -1071 }, { 158, -53, -1071 }, { 158, -53, -1071 },\n    { 159, -53, -1070 }, { 159, -54, -1070 }, { 160, -54, -1070 }, { 160, -54, -1070 },\n    { 160, -54, -1070 }, { 161, -54, -1070 }, { 161, -55, -1070 }, { 161, -55, -1071 },\n    { 162, -55, -1071 }, { 162, -55, -1071 }, { 162, -56, -1071 }, { 162, -56, -1071 },\n    { 163, -56, -1072 }, { 163, -56, -1072 }, { 163, -56, -1072 }, { 163, -57, -1072 },\n    { 163, -57, -1073 }, { 163, -57, -1073 }, { 163, -57, -1074 }, { 163, -57, -1074 },\n    { 163, -57, -1074 }, { 162, -58, -1075 }, { 162, -58, -1075 }, { 162, -58, -1076 },\n    { 162, -58, -1076 }, { 161, -58, -1076 }, { 161, -58, -1077 }, { 160, -58, -1077 },\n    { 160, -58, -1078 }, { 159, -58, -1078 }, { 159, -58, -1079 }, { 158, -58, -1079 },\n    { 158, -58, -1080 }, { 157, -58, -1080 }, { 156, -58, -1081 }, { 155, -58, -1081 },\n    { 154, -57, -1081 }, { 153, -57, -1082 }, { 152, -57, -1082 }, { 151, -57, -1083 },\n    { 150, -56, -1083 }, { 149, -56, -1083 }, { 148, -56, -1084 }, { 147, -55, -1084 },\n    { 145, -55, -1084 }, { 144, -54, -1085 }, { 142, -54, -1085 }, { 140, -53, -1086 },\n    { 138, -52, -1086 }, { 135, -51, -1087 }, { 131, -49, -1087 }, { 128, -48, -1088 },\n    { 123, -46, -1089 }, { 119, -45, -1090 }, { 114, -43, -1091 }, { 109, -41, -1092 },\n    { 104, -39, -1093 }, { 99, -37, -1094 },  { 94, -35, -1095 },  { 88, -33, -1096 },\n    { 83, -31, -1098 },  { 77, -29, -1099 },  { 71, -27, -1100 },  { 65, -24, -1101 },\n    { 60, -22, -1102 },  { 54, -20, -1104 },  { 49, -18, -1105 },  { 43, -16, -1106 },\n    { 38, -14, -1107 },  { 33, -12, -1108 },  { 28, -10, -1109 },  { 24, -9, -1110 },\n    { 20, -7, -1111 },   { 16, -6, -1112 },   { 12, -4, -1112 },   { 9, -3, -1113 },\n    { 6, -2, -1114 },    { 4, -1, -1114 },    { 2, 0, -1115 },     { 1, 0, -1115 },\n    { 0, 0, -1115 },     { 0, 0, -1115 },\n};\n\nstruct AnimDataInfo anim_mario_lips_6[] = {\n    { ARRAY_COUNT(animdata_mario_lip_6_1), GD_ANIM_ROT3S, animdata_mario_lip_6_1 },\n    { ARRAY_COUNT(animdata_mario_lip_6_2), GD_ANIM_ROT3S, animdata_mario_lip_6_2 },\n    END_ANIMDATA_INFO_ARR,\n};\n\nstatic s16 animdata_mario_eyelid_left_1[][3] = {\n    { 0, 0, 1620 },   { 0, 0, 1619 },   { 0, 0, 1617 },   { 0, 0, 1614 },   { 0, 0, 1611 },\n    { 0, 0, 1607 },   { 0, 0, 1602 },   { 0, 0, 1598 },   { 0, 0, 1593 },   { 0, 0, 1589 },\n    { 0, 0, 1585 },   { 0, 0, 1581 },   { 0, 0, 1579 },   { 0, 0, 1577 },   { 0, 0, 1576 },\n    { 0, 0, 1577 },   { 0, 0, 1579 },   { 0, 0, 1583 },   { 0, 0, 1589 },   { 0, 0, 1597 },\n    { 0, 0, 1607 },   { 0, 0, 1620 },   { 0, 0, 1783 },   { 0, 0, 1940 },   { 0, 0, 1936 },\n    { 0, 0, 1924 },   { 0, 0, 1906 },   { 0, 0, 1883 },   { 0, 0, 1855 },   { 0, 0, 1825 },\n    { 0, 0, 1792 },   { 0, 0, 1760 },   { 0, 0, 1728 },   { 0, 0, 1698 },   { 0, 0, 1671 },\n    { 0, 0, 1648 },   { 0, 0, 1630 },   { 0, 0, 1620 },   { 0, 0, 1613 },   { 0, 0, 1607 },\n    { 0, 0, 1602 },   { 0, 0, 1598 },   { 0, 0, 1594 },   { 0, 0, 1592 },   { 0, 0, 1590 },\n    { 0, 0, 1588 },   { 0, 0, 1587 },   { 0, 0, 1587 },   { 0, 0, 1587 },   { 0, 0, 1587 },\n    { 0, 0, 1588 },   { 0, 0, 1590 },   { 0, 0, 1591 },   { 0, 0, 1593 },   { 0, 0, 1595 },\n    { 0, 0, 1597 },   { 0, 0, 1599 },   { 0, 0, 1602 },   { 0, 0, 1604 },   { 0, 0, 1606 },\n    { 0, 0, 1609 },   { 0, 0, 1611 },   { 0, 0, 1613 },   { 0, 0, 1615 },   { 0, 0, 1616 },\n    { 0, 0, 1618 },   { 0, 0, 1619 },   { 0, 0, 1619 },   { 0, 0, 1620 },   { 0, 0, 1620 },\n    { 0, 0, 1620 },   { 0, 0, 1620 },   { 0, 0, 1620 },   { 0, 0, 1620 },   { 0, 0, 1620 },\n    { 0, 0, 1620 },   { 0, 0, 1620 },   { 0, 0, 1620 },   { 0, 0, 1620 },   { 0, 0, 1620 },\n    { 0, 0, 1620 },   { 0, 0, 1620 },   { 0, 0, 1637 },   { 0, 0, 1683 },   { 0, 0, 1746 },\n    { 0, 0, 1814 },   { 0, 0, 1877 },   { 0, 0, 1923 },   { 0, 0, 1940 },   { 0, 0, 1909 },\n    { 0, 0, 1834 },   { 0, 0, 1743 },   { 0, 0, 1662 },   { 0, 0, 1620 },   { 0, 0, 1607 },\n    { 0, 0, 1598 },   { 0, 0, 1591 },   { 0, 0, 1586 },   { 0, 0, 1583 },   { 0, 0, 1582 },\n    { 0, 0, 1583 },   { 0, 0, 1585 },   { 0, 0, 1588 },   { 0, 0, 1592 },   { 0, 0, 1596 },\n    { 0, 0, 1601 },   { 0, 0, 1606 },   { 0, 0, 1610 },   { 0, 0, 1614 },   { 0, 0, 1617 },\n    { 0, 0, 1619 },   { 0, 0, 1620 },   { 0, 0, 1617 },   { 0, 0, 1611 },   { 0, 0, 1606 },\n    { 0, 0, 1603 },   { 0, 0, 1607 },   { 0, 0, 1620 },   { 0, 0, 1642 },   { 0, 0, 1672 },\n    { 0, 0, 1707 },   { 0, 0, 1744 },   { 0, 0, 1783 },   { 0, 0, 1822 },   { 0, 0, 1857 },\n    { 0, 0, 1888 },   { 0, 0, 1913 },   { 0, 0, 1929 },   { 0, 0, 1935 },   { 0, 0, 1903 },\n    { 0, 0, 1828 },   { 0, 0, 1736 },   { 0, 0, 1658 },   { 0, 0, 1620 },   { 0, 0, 1612 },\n    { 0, 0, 1604 },   { 0, 0, 1597 },   { 0, 0, 1590 },   { 0, 0, 1583 },   { 0, 0, 1577 },\n    { 0, 0, 1571 },   { 0, 0, 1565 },   { 0, 0, 1560 },   { 0, 0, 1555 },   { 0, 0, 1551 },\n    { 0, 0, 1547 },   { 0, 0, 1544 },   { 0, 0, 1541 },   { 0, 0, 1538 },   { 0, 0, 1536 },\n    { 0, 0, 1534 },   { 0, 0, 1533 },   { 0, 0, 1532 },   { 0, 0, 1532 },   { 0, 0, 1532 },\n    { 0, 0, 1533 },   { 0, 0, 1534 },   { 0, 0, 1536 },   { 0, 0, 1538 },   { 0, 0, 1541 },\n    { 0, 0, 1544 },   { 0, 0, 1548 },   { 0, 0, 1552 },   { 0, 0, 1558 },   { 0, 0, 1563 },\n    { 0, 0, 1569 },   { 0, 0, 1576 },   { 0, 0, 1584 },   { 0, 0, 1592 },   { 0, 0, 1600 },\n    { 0, 0, 1951 },   { 0, 0, 1922 },   { 0, 0, 1846 },   { 0, 0, 1751 },   { 0, 0, 1666 },\n    { 0, 0, 1620 },   { 0, 0, 1604 },   { 0, 0, 1593 },   { 0, 0, 1587 },   { 0, 0, 1584 },\n    { 0, 0, 1585 },   { 0, 0, 1588 },   { 0, 0, 1593 },   { 0, 0, 1598 },   { 0, 0, 1604 },\n    { 0, 0, 1610 },   { 0, 0, 1615 },   { 0, 0, 1619 },   { 0, 0, 1620 },   { 0, 0, 1619 },\n    { 0, 0, 1617 },   { 0, 0, 1615 },   { 0, 0, 1612 },   { 0, 0, 1609 },   { 0, 0, 1605 },\n    { 0, 0, 1601 },   { 0, 0, 1597 },   { 0, 0, 1592 },   { 0, 0, 1588 },   { 0, 0, 1584 },\n    { 0, 0, 1581 },   { 0, 0, 1577 },   { 0, 0, 1574 },   { 0, 0, 1572 },   { 0, 0, 1571 },\n    { 0, 0, 1570 },   { 0, 0, 1570 },   { 0, 0, 1572 },   { 0, 0, 1574 },   { 0, 0, 1578 },\n    { 0, 0, 1583 },   { 0, 0, 1590 },   { 0, 0, 1598 },   { 0, 0, 1608 },   { 0, 0, 1648 },\n    { 0, 0, 1729 },   { 0, 0, 1824 },   { 0, 0, 1905 },   { 0, 0, 1946 },   { 0, 0, 1948 },\n    { 0, 0, 1932 },   { 0, 0, 1905 },   { 0, 0, 1870 },   { 0, 0, 1834 },   { 0, 0, 1801 },\n    { 0, 0, 1778 },   { 0, 0, 1769 },   { 0, 0, 1799 },   { 0, 0, 1866 },   { 0, 0, 1926 },\n    { 0, 0, 1940 },   { 0, 0, 1844 },   { 0, 0, 1689 },   { 0, 0, 1608 },   { 0, 0, 1662 },\n    { 0, 0, 1778 },   { 0, 0, 1894 },   { 0, 0, 1946 },   { 0, 0, 1897 },   { 0, 0, 1786 },\n    { 0, 0, 1668 },   { 0, 0, 1597 },   { 0, 0, 1575 },   { 0, 0, 1567 },   { 0, 0, 1571 },\n    { 0, 0, 1580 },   { 0, 0, 1593 },   { 0, 0, 1603 },   { 0, 0, 1608 },   { 0, 0, 1607 },\n    { 0, 0, 1604 },   { 0, 0, 1599 },   { 0, 0, 1594 },   { 0, 0, 1589 },   { 0, 0, 1586 },\n    { 0, 0, 1585 },   { 0, 0, 1588 },   { 0, 0, 1595 },   { 0, 0, 1608 },   { 0, 0, 1630 },\n    { 0, 0, 1663 },   { 0, 1, 1702 },   { 0, 1, 1746 },   { 0, 2, 1790 },   { 0, 2, 1831 },\n    { 0, 2, 1867 },   { 0, 1, 1893 },   { 0, 0, 1906 },   { 0, -2, 1908 },  { 0, -4, 1901 },\n    { 0, -8, 1889 },  { 0, -11, 1871 }, { 0, -15, 1850 }, { 1, -19, 1827 }, { 1, -23, 1803 },\n    { 1, -26, 1779 }, { 1, -30, 1758 }, { 2, -32, 1741 }, { 2, -34, 1728 }, { 2, -35, 1719 },\n    { 2, -36, 1712 }, { 3, -37, 1705 }, { 3, -38, 1699 }, { 4, -38, 1693 }, { 4, -38, 1689 },\n    { 4, -39, 1685 }, { 5, -38, 1681 }, { 5, -38, 1678 }, { 5, -38, 1675 }, { 6, -37, 1672 },\n    { 6, -37, 1669 }, { 6, -36, 1666 }, { 6, -35, 1663 }, { 6, -33, 1659 }, { 6, -31, 1656 },\n    { 5, -28, 1653 }, { 5, -25, 1650 }, { 4, -21, 1648 }, { 3, -17, 1646 }, { 2, -12, 1644 },\n    { 1, -8, 1642 },  { 1, -5, 1640 },  { 0, -2, 1639 },  { 0, 0, 1637 },   { 0, 1, 1635 },\n    { 0, 2, 1633 },   { 0, 2, 1632 },   { 0, 2, 1630 },   { 0, 2, 1629 },   { 0, 2, 1628 },\n    { 0, 1, 1626 },   { 0, 1, 1625 },   { 0, 0, 1624 },   { 0, 0, 1622 },   { 0, 0, 1621 },\n    { 0, 0, 1620 },   { 0, 0, 1617 },   { 0, 0, 1614 },   { 0, 0, 1610 },   { 0, 0, 1607 },\n    { 0, 0, 1605 },   { 0, 0, 1605 },   { 0, 0, 1608 },   { 0, 0, 1624 },   { 0, 0, 1649 },\n    { 0, 0, 1662 },   { 0, 0, 1647 },   { 0, 0, 1619 },   { 0, 0, 1602 },   { 0, 0, 1599 },\n    { 0, 0, 1595 },   { 0, 0, 1592 },   { 0, 0, 1589 },   { 0, 0, 1587 },   { 0, 0, 1584 },\n    { 0, 0, 1582 },   { 0, 0, 1580 },   { 0, 0, 1578 },   { 0, 0, 1577 },   { 0, 0, 1576 },\n    { 0, 0, 1575 },   { 0, 0, 1574 },   { 0, 0, 1573 },   { 0, 0, 1573 },   { 0, 0, 1573 },\n    { 0, 0, 1573 },   { 0, 0, 1573 },   { 0, 0, 1573 },   { 0, 0, 1574 },   { 0, 0, 1576 },\n    { 0, 0, 1581 },   { 0, 0, 1589 },   { 0, 0, 1597 },   { 0, 0, 1605 },   { 0, 0, 1612 },\n    { 0, 0, 1617 },   { 0, 0, 1620 },   { 0, 0, 1620 },   { 0, 0, 1620 },   { 0, 0, 1620 },\n    { 0, 0, 1620 },   { 0, 0, 1620 },   { 0, 0, 1619 },   { 0, 0, 1619 },   { 0, 0, 1619 },\n    { 0, 0, 1618 },   { 0, 0, 1617 },   { 0, 0, 1616 },   { 0, 0, 1615 },   { 0, 0, 1615 },\n    { 0, 0, 1614 },   { 0, 0, 1612 },   { 0, 0, 1611 },   { 0, 0, 1610 },   { 0, 0, 1609 },\n    { 0, 0, 1608 },   { 0, 0, 1607 },   { 0, 0, 1605 },   { 0, 0, 1604 },   { 0, 0, 1603 },\n    { 0, 0, 1602 },   { 0, 0, 1601 },   { 0, 0, 1599 },   { 0, 0, 1598 },   { 0, 0, 1597 },\n    { 0, 0, 1596 },   { 0, 0, 1595 },   { 0, 0, 1594 },   { 0, 0, 1593 },   { 0, 0, 1592 },\n    { 0, 0, 1592 },   { 0, 0, 1591 },   { 0, 0, 1589 },   { 0, 0, 1585 },   { 0, 0, 1580 },\n    { 0, 0, 1573 },   { 0, 0, 1567 },   { 0, 0, 1562 },   { 0, 0, 1559 },   { 0, 0, 1558 },\n    { 0, 0, 1559 },   { 0, 0, 1565 },   { 0, 0, 1575 },   { 0, 0, 1591 },   { 0, 0, 1628 },\n    { 0, 0, 1693 },   { 0, 0, 1770 },   { 0, 0, 1844 },   { 0, 0, 1901 },   { 0, 0, 1923 },\n    { 0, 0, 1918 },   { 0, 0, 1903 },   { 0, 0, 1878 },   { 0, 0, 1847 },   { 0, 0, 1812 },\n    { 0, 0, 1774 },   { 0, 0, 1736 },   { 0, 0, 1699 },   { 0, 0, 1666 },   { 0, 0, 1638 },\n    { 0, 0, 1618 },   { 0, 0, 1608 },   { 0, 0, 1604 },   { 0, 0, 1599 },   { 0, 0, 1595 },\n    { 0, 0, 1592 },   { 0, 0, 1589 },   { 0, 0, 1586 },   { 0, 0, 1584 },   { 0, 0, 1581 },\n    { 0, 0, 1580 },   { 0, 0, 1578 },   { 0, 0, 1577 },   { 0, 0, 1576 },   { 0, 0, 1575 },\n    { 0, 0, 1574 },   { 0, 0, 1574 },   { 0, 0, 1574 },   { 0, 0, 1574 },   { 0, 0, 1574 },\n    { 0, 0, 1574 },   { 0, 0, 1575 },   { 0, 0, 1576 },   { 0, 0, 1577 },   { 0, 0, 1578 },\n    { 0, 0, 1579 },   { 0, 0, 1580 },   { 0, 0, 1581 },   { 0, 0, 1583 },   { 0, 0, 1584 },\n    { 0, 0, 1586 },   { 0, 0, 1587 },   { 0, 0, 1589 },   { 0, 0, 1591 },   { 0, 0, 1592 },\n    { 0, 0, 1594 },   { 0, 0, 1595 },   { 0, 0, 1597 },   { 0, 0, 1599 },   { 0, 0, 1600 },\n    { 0, 0, 1602 },   { 0, 0, 1603 },   { 0, 0, 1604 },   { 0, 0, 1606 },   { 0, 0, 1607 },\n    { 0, 0, 1608 },   { 0, 0, 1608 },   { 0, 0, 1609 },   { 0, 0, 1610 },   { 0, 0, 1610 },\n    { 0, 0, 1610 },   { 0, 0, 1610 },   { 0, 0, 1610 },   { 0, 0, 1610 },   { 0, 0, 1609 },\n    { 0, 0, 1608 },   { 0, 0, 1593 },   { 0, 0, 1566 },   { 0, 0, 1551 },   { 0, 0, 1549 },\n    { 0, 0, 1546 },   { 0, 0, 1544 },   { 0, 0, 1542 },   { 0, 0, 1540 },   { 0, 0, 1538 },\n    { 0, 0, 1536 },   { 0, 0, 1535 },   { 0, 0, 1535 },   { 0, 0, 1535 },   { 0, 0, 1536 },\n    { 0, 0, 1539 },   { 0, 0, 1542 },   { 0, 0, 1547 },   { 0, 0, 1553 },   { 0, 0, 1560 },\n    { 0, 0, 1570 },   { 0, 0, 1618 },   { 0, 0, 1700 },   { 0, 0, 1751 },   { 0, 0, 1765 },\n    { 0, 0, 1774 },   { 0, 0, 1779 },   { 0, 0, 1782 },   { 0, 0, 1783 },   { 0, 0, 1783 },\n    { 0, 0, 1783 },   { 0, 0, 1783 },   { 0, 0, 1784 },   { 0, 0, 1788 },   { 0, 0, 1794 },\n    { 0, 0, 1805 },   { 0, 0, 1834 },   { 0, 0, 1881 },   { 0, 0, 1926 },   { 0, 0, 1946 },\n    { 0, 0, 1941 },   { 0, 0, 1928 },   { 0, 0, 1907 },   { 0, 0, 1881 },   { 0, 0, 1849 },\n    { 0, 0, 1815 },   { 0, 0, 1779 },   { 0, 0, 1742 },   { 0, 0, 1707 },   { 0, 0, 1673 },\n    { 0, 0, 1644 },   { 0, 0, 1619 },   { 0, 0, 1601 },   { 0, 0, 1591 },   { 0, 0, 1588 },\n    { 0, 0, 1590 },   { 0, 0, 1596 },   { 0, 0, 1606 },   { 0, 0, 1619 },   { 0, 0, 1635 },\n    { 0, 0, 1652 },   { 0, 0, 1670 },   { 0, 0, 1689 },   { 0, 0, 1708 },   { 0, 0, 1726 },\n    { 0, 0, 1742 },   { 0, 0, 1756 },   { 0, 0, 1767 },   { 0, 0, 1774 },   { 0, 0, 1779 },\n    { 0, 0, 1781 },   { 0, 0, 1782 },   { 0, 0, 1781 },   { 0, 0, 1779 },   { 0, 0, 1776 },\n    { 0, 0, 1772 },   { 0, 0, 1768 },   { 0, 0, 1764 },   { 0, 0, 1760 },   { 0, 0, 1757 },\n    { 0, 0, 1754 },   { 0, 0, 1752 },   { 0, 0, 1751 },   { 0, 0, 1752 },   { 0, 0, 1752 },\n    { 0, 0, 1754 },   { 0, 0, 1755 },   { 0, 0, 1757 },   { 0, 0, 1759 },   { 0, 0, 1762 },\n    { 0, 0, 1764 },   { 0, 0, 1766 },   { 0, 0, 1768 },   { 0, 0, 1770 },   { 0, 0, 1772 },\n    { 0, 0, 1773 },   { 0, 0, 1774 },   { 0, 0, 1774 },   { 0, 0, 1774 },   { 0, 0, 1773 },\n    { 0, 0, 1772 },   { 0, 0, 1770 },   { 0, 0, 1768 },   { 0, 0, 1765 },   { 0, 0, 1763 },\n    { 0, 0, 1760 },   { 0, 0, 1758 },   { 0, 0, 1756 },   { 0, 0, 1754 },   { 0, 0, 1753 },\n    { 0, 0, 1752 },   { 0, 0, 1751 },   { 0, 0, 1751 },   { 0, 0, 1751 },   { 0, 0, 1751 },\n    { 0, 0, 1751 },   { 0, 0, 1751 },   { 0, 0, 1751 },   { 0, 0, 1752 },   { 0, 0, 1754 },\n    { 0, 0, 1756 },   { 0, 0, 1759 },   { 0, 0, 1763 },   { 0, 0, 1768 },   { 0, 0, 1774 },\n    { 0, 0, 1783 },   { 0, 0, 1794 },   { 0, 0, 1808 },   { 0, 0, 1823 },   { 0, 0, 1840 },\n    { 0, 0, 1857 },   { 0, 0, 1874 },   { 0, 0, 1891 },   { 0, 0, 1906 },   { 0, 0, 1920 },\n    { 0, 0, 1932 },   { 0, 0, 1941 },   { 0, 0, 1947 },   { 0, 0, 1949 },   { 0, 0, 1946 },\n    { 0, 0, 1939 },   { 0, 0, 1929 },   { 0, 0, 1915 },   { 0, 0, 1898 },   { 0, 0, 1878 },\n    { 0, 0, 1857 },   { 0, 0, 1834 },   { 0, 0, 1810 },   { 0, 0, 1786 },   { 0, 0, 1761 },\n    { 0, 0, 1737 },   { 0, 0, 1713 },   { 0, 0, 1691 },   { 0, 0, 1671 },   { 0, 0, 1652 },\n    { 0, 0, 1636 },   { 0, 0, 1624 },   { 0, 0, 1615 },   { 0, 0, 1608 },   { 0, 0, 1602 },\n    { 0, 0, 1598 },   { 0, 0, 1594 },   { 0, 0, 1591 },   { 0, 0, 1589 },   { 0, 0, 1587 },\n    { 0, 0, 1587 },   { 0, 0, 1587 },   { 0, 0, 1587 },   { 0, 0, 1588 },   { 0, 0, 1589 },\n    { 0, 0, 1591 },   { 0, 0, 1593 },   { 0, 0, 1596 },   { 0, 0, 1598 },   { 0, 0, 1601 },\n    { 0, 0, 1603 },   { 0, 0, 1606 },   { 0, 0, 1609 },   { 0, 0, 1611 },   { 0, 0, 1613 },\n    { 0, 0, 1615 },   { 0, 0, 1617 },   { 0, 0, 1618 },   { 0, 0, 1619 },   { 0, 0, 1620 },\n    { 0, 0, 1620 },   { 0, 0, 1619 },   { 0, 0, 1619 },   { 0, 0, 1618 },   { 0, 0, 1617 },\n    { 0, 0, 1616 },   { 0, 0, 1615 },   { 0, 0, 1614 },   { 0, 0, 1613 },   { 0, 0, 1613 },\n    { 0, 0, 1612 },   { 0, 0, 1612 },   { 0, 0, 1611 },   { 0, 0, 1611 },   { 0, 0, 1612 },\n    { 0, 0, 1612 },   { 0, 0, 1613 },   { 0, 0, 1615 },   { 0, 0, 1617 },   { 0, 0, 1620 },\n    { 0, 0, 1622 },   { 0, 0, 1626 },   { 0, 0, 1629 },   { 0, 0, 1633 },   { 0, 0, 1638 },\n    { 0, 0, 1644 },   { 0, 0, 1651 },   { 0, 0, 1659 },   { 0, 0, 1670 },   { 0, 0, 1681 },\n    { 0, 0, 1695 },   { 0, 0, 1711 },   { 0, 0, 1735 },   { 0, 0, 1768 },   { 0, 0, 1808 },\n    { 0, 0, 1851 },   { 0, 0, 1891 },   { 0, 0, 1926 },   { 0, 0, 1951 },   { 0, 0, 1963 },\n    { 0, 0, 1960 },   { 0, 0, 1943 },   { 0, 0, 1916 },   { 0, 0, 1884 },   { 0, 0, 1850 },\n    { 0, 0, 1818 },   { 0, 0, 1792 },   { 0, 0, 1774 },   { 0, 0, 1764 },   { 0, 0, 1757 },\n    { 0, 0, 1753 },   { 0, 0, 1750 },   { 0, 0, 1750 },   { 0, 0, 1750 },   { 0, 0, 1751 },\n    { 0, 0, 1753 },   { 0, 0, 1754 },   { 0, 0, 1754 },   { 0, 0, 1754 },   { 0, 0, 1753 },\n    { 0, 0, 1753 },   { 0, 0, 1754 },   { 0, 0, 1755 },   { 0, 0, 1759 },   { 0, 0, 1765 },\n    { 0, 0, 1774 },   { 0, 0, 1787 },   { 0, 0, 1805 },   { 0, 0, 1826 },   { 0, 0, 1848 },\n    { 0, 0, 1870 },   { 0, 0, 1891 },   { 0, 0, 1910 },   { 0, 0, 1925 },   { 0, 0, 1935 },\n    { 0, 0, 1941 },   { 0, 0, 1945 },   { 0, 0, 1948 },   { 0, 0, 1949 },   { 0, 0, 1950 },\n    { 0, 0, 1949 },   { 0, 0, 1948 },   { 0, 0, 1946 },   { 0, 0, 1944 },   { 0, 0, 1942 },\n    { 0, 0, 1940 },   { 0, 0, 1938 },   { 0, 0, 1936 },   { 0, 0, 1935 },   { 0, 0, 1935 },\n    { 0, 0, 1935 },   { 0, 0, 1935 },   { 0, 0, 1935 },   { 0, 0, 1935 },   { 0, 0, 1935 },\n    { 0, 0, 1935 },   { 0, 0, 1935 },   { 0, 0, 1935 },   { 0, 0, 1935 },   { 0, 0, 1935 },\n    { 0, 0, 1935 },   { 0, 0, 1935 },   { 0, 0, 1935 },   { 0, 0, 1935 },   { 0, 0, 1935 },\n    { 0, 0, 1935 },   { 0, 0, 1935 },   { 0, 0, 1935 },   { 0, 0, 1935 },   { 0, 0, 1935 },\n    { 0, 0, 1935 },   { 0, 0, 1935 },   { 0, 0, 1935 },   { 0, 0, 1935 },   { 0, 0, 1935 },\n    { 0, 0, 1935 },   { 0, 0, 1935 },   { 0, 0, 1935 },   { 0, 0, 1935 },   { 0, 0, 1935 },\n    { 0, 0, 1935 },   { 0, 0, 1935 },   { 0, 0, 1935 },   { 0, 0, 1935 },   { 0, 0, 1935 },\n    { 0, 0, 1935 },   { 0, 0, 1935 },   { 0, 0, 1935 },   { 0, 0, 1935 },   { 0, 0, 1935 },\n    { 0, 0, 1935 },   { 0, 0, 1935 },   { 0, 0, 1935 },   { 0, 0, 1935 },   { 0, 0, 1935 },\n    { 0, 0, 1935 },   { 0, 0, 1935 },   { 0, 0, 1935 },   { 0, 0, 1935 },   { 0, 0, 1935 },\n    { 0, 0, 1935 },   { 0, 0, 1935 },   { 0, 0, 1935 },   { 0, 0, 1935 },   { 0, 0, 1935 },\n    { 0, 0, 1935 },   { 0, 0, 1935 },   { 0, 0, 1935 },   { 0, 0, 1941 },   { 0, 0, 1935 },\n    { 0, 0, 1897 },   { 0, 0, 1848 },   { 0, 0, 1798 },   { 0, 0, 1760 },   { 0, 0, 1744 },\n    { 0, 0, 1846 },   { 0, 0, 1936 },   { 0, 0, 1843 },   { 0, 0, 1696 },   { 0, 0, 1620 },\n};\n\nstatic s16 animdata_mario_eyelid_left_2[][3] = {\n    { 0, 0, 1717 }, { 0, 0, 1717 }, { 0, 0, 1715 }, { 0, 0, 1714 }, { 0, 0, 1711 }, { 0, 0, 1708 },\n    { 0, 0, 1705 }, { 0, 0, 1702 }, { 0, 0, 1699 }, { 0, 0, 1696 }, { 0, 0, 1694 }, { 0, 0, 1691 },\n    { 0, 0, 1689 }, { 0, 0, 1688 }, { 0, 0, 1688 }, { 0, 0, 1688 }, { 0, 0, 1690 }, { 0, 0, 1692 },\n    { 0, 0, 1696 }, { 0, 0, 1702 }, { 0, 0, 1708 }, { 0, 0, 1717 }, { 0, 0, 1759 }, { 0, 0, 1839 },\n    { 0, 0, 1917 }, { 0, 0, 1952 }, { 0, 0, 1927 }, { 0, 0, 1869 }, { 0, 0, 1800 }, { 0, 0, 1741 },\n    { 0, 0, 1717 }, { 0, 0, 1713 }, { 0, 0, 1703 }, { 0, 0, 1691 }, { 0, 0, 1681 }, { 0, 0, 1677 },\n    { 0, 0, 1678 }, { 0, 0, 1682 }, { 0, 0, 1687 }, { 0, 0, 1694 }, { 0, 0, 1700 }, { 0, 0, 1707 },\n    { 0, 0, 1712 }, { 0, 0, 1716 }, { 0, 0, 1717 }, { 0, 0, 1717 }, { 0, 0, 1718 }, { 0, 0, 1720 },\n    { 0, 0, 1722 }, { 0, 0, 1725 }, { 0, 0, 1728 }, { 0, 0, 1731 }, { 0, 0, 1735 }, { 0, 0, 1739 },\n    { 0, 0, 1744 }, { 0, 0, 1748 }, { 0, 0, 1754 }, { 0, 0, 1759 }, { 0, 0, 1764 }, { 0, 0, 1769 },\n    { 0, 0, 1775 }, { 0, 0, 1780 }, { 0, 0, 1786 }, { 0, 0, 1794 }, { 0, 0, 1806 }, { 0, 0, 1820 },\n    { 0, 0, 1833 }, { 0, 0, 1843 }, { 0, 0, 1847 }, { 0, 0, 1848 }, { 0, 0, 1849 }, { 0, 0, 1849 },\n    { 0, 0, 1850 }, { 0, 0, 1851 }, { 0, 0, 1851 }, { 0, 0, 1851 }, { 0, 0, 1851 }, { 0, 0, 1852 },\n    { 0, 0, 1852 }, { 0, 0, 1852 }, { 0, 0, 1852 }, { 0, 0, 1852 }, { 0, 0, 1851 }, { 0, 0, 1851 },\n    { 0, 0, 1851 }, { 0, 0, 1851 }, { 0, 0, 1850 }, { 0, 0, 1850 }, { 0, 0, 1849 }, { 0, 0, 1849 },\n    { 0, 0, 1848 }, { 0, 0, 1848 }, { 0, 0, 1847 }, { 0, 0, 1847 }, { 0, 0, 1846 }, { 0, 0, 1846 },\n    { 0, 0, 1845 }, { 0, 0, 1845 }, { 0, 0, 1844 }, { 0, 0, 1843 }, { 0, 0, 1843 }, { 0, 0, 1842 },\n    { 0, 0, 1842 }, { 0, 0, 1841 }, { 0, 0, 1841 }, { 0, 0, 1840 }, { 0, 0, 1840 }, { 0, 0, 1839 },\n    { 0, 0, 1839 }, { 0, 0, 1839 }, { 0, 0, 1839 }, { 0, 0, 1838 }, { 0, 0, 1838 }, { 0, 0, 1838 },\n    { 0, 0, 1838 }, { 0, 0, 1838 }, { 0, 0, 1838 }, { 0, 0, 1838 }, { 0, 0, 1838 }, { 0, 0, 1839 },\n    { 0, 0, 1839 }, { 0, 0, 1840 }, { 0, 0, 1840 }, { 0, 0, 1841 }, { 0, 0, 1842 }, { 0, 0, 1843 },\n    { 0, 0, 1844 }, { 0, 0, 1845 }, { 0, 0, 1846 }, { 0, 0, 1847 }, { 0, 0, 1853 }, { 0, 0, 1866 },\n    { 0, 0, 1883 }, { 0, 0, 1902 }, { 0, 0, 1921 }, { 0, 0, 1935 }, { 0, 0, 1943 }, { 0, 0, 1942 },\n    { 0, 0, 1935 }, { 0, 0, 1927 }, { 0, 0, 1917 }, { 0, 0, 1906 }, { 0, 0, 1894 }, { 0, 0, 1881 },\n    { 0, 0, 1867 }, { 0, 0, 1853 }, { 0, 0, 1837 }, { 0, 0, 1822 }, { 0, 0, 1806 }, { 0, 0, 1790 },\n    { 0, 0, 1775 }, { 0, 0, 1759 }, { 0, 0, 1743 }, { 0, 0, 1728 }, { 0, 0, 1713 }, { 0, 0, 1699 },\n    { 0, 0, 1686 }, { 0, 0, 1673 }, { 0, 0, 1662 }, { 0, 0, 1651 }, { 0, 0, 1642 }, { 0, 0, 1634 },\n    { 0, 0, 1628 }, { 0, 0, 1623 }, { 0, 0, 1621 }, { 0, 0, 1620 },\n};\n\nstruct AnimDataInfo anim_mario_eyelid_left[] = {\n    { ARRAY_COUNT(animdata_mario_eyelid_left_1), GD_ANIM_ROT3S, animdata_mario_eyelid_left_1 },\n    { ARRAY_COUNT(animdata_mario_eyelid_left_2), GD_ANIM_ROT3S, animdata_mario_eyelid_left_2 },\n    END_ANIMDATA_INFO_ARR,\n};\n\nstatic s16 animdata_mario_eyelid_right_1[][3] = {\n    { 0, 0, 1620 },   { 0, 0, 1619 },   { 0, 0, 1617 },   { 0, 0, 1614 },   { 0, 0, 1611 },\n    { 0, 0, 1607 },   { 0, 0, 1602 },   { 0, 0, 1598 },   { 0, 0, 1593 },   { 0, 0, 1589 },\n    { 0, 0, 1585 },   { 0, 0, 1581 },   { 0, 0, 1579 },   { 0, 0, 1577 },   { 0, 0, 1576 },\n    { 0, 0, 1577 },   { 0, 0, 1579 },   { 0, 0, 1583 },   { 0, 0, 1589 },   { 0, 0, 1597 },\n    { 0, 0, 1607 },   { 0, 0, 1620 },   { 0, 0, 1783 },   { 0, 0, 1940 },   { 0, 0, 1936 },\n    { 0, 0, 1925 },   { 0, 0, 1907 },   { 0, 0, 1885 },   { 0, 0, 1858 },   { 0, 0, 1828 },\n    { 0, 0, 1797 },   { 0, 0, 1764 },   { 0, 0, 1733 },   { 0, 0, 1702 },   { 0, 0, 1675 },\n    { 0, 0, 1651 },   { 0, 0, 1632 },   { 0, 0, 1620 },   { 0, 0, 1610 },   { 0, 0, 1602 },\n    { 0, 0, 1594 },   { 0, 0, 1587 },   { 0, 0, 1580 },   { 0, 0, 1574 },   { 0, 0, 1570 },\n    { 0, 0, 1566 },   { 0, 0, 1563 },   { 0, 0, 1561 },   { 0, 0, 1561 },   { 0, 0, 1562 },\n    { 0, 0, 1564 },   { 0, 0, 1567 },   { 0, 0, 1572 },   { 0, 0, 1578 },   { 0, 0, 1586 },\n    { 0, 0, 1595 },   { 0, 0, 1607 },   { 0, 0, 1620 },   { 0, 0, 1679 },   { 0, 0, 1793 },\n    { 0, 0, 1903 },   { 0, 0, 1952 },   { 0, 0, 1925 },   { 0, 0, 1858 },   { 0, 0, 1771 },\n    { 0, 0, 1685 },   { 0, 0, 1620 },   { 0, 0, 1608 },   { 0, 0, 1620 },   { 0, 0, 1620 },\n    { 0, 0, 1620 },   { 0, 0, 1620 },   { 0, 0, 1620 },   { 0, 0, 1620 },   { 0, 0, 1620 },\n    { 0, 0, 1620 },   { 0, 0, 1620 },   { 0, 0, 1620 },   { 0, 0, 1620 },   { 0, 0, 1620 },\n    { 0, 0, 1620 },   { 0, 0, 1620 },   { 0, 0, 1637 },   { 0, 0, 1683 },   { 0, 0, 1746 },\n    { 0, 0, 1814 },   { 0, 0, 1877 },   { 0, 0, 1923 },   { 0, 0, 1940 },   { 0, 0, 1909 },\n    { 0, 0, 1834 },   { 0, 0, 1743 },   { 0, 0, 1662 },   { 0, 0, 1620 },   { 0, 0, 1607 },\n    { 0, 0, 1598 },   { 0, 0, 1591 },   { 0, 0, 1586 },   { 0, 0, 1583 },   { 0, 0, 1582 },\n    { 0, 0, 1583 },   { 0, 0, 1585 },   { 0, 0, 1588 },   { 0, 0, 1592 },   { 0, 0, 1596 },\n    { 0, 0, 1601 },   { 0, 0, 1606 },   { 0, 0, 1610 },   { 0, 0, 1614 },   { 0, 0, 1617 },\n    { 0, 0, 1619 },   { 0, 0, 1620 },   { 0, 0, 1617 },   { 0, 0, 1611 },   { 0, 0, 1606 },\n    { 0, 0, 1603 },   { 0, 0, 1607 },   { 0, 0, 1620 },   { 0, 0, 1642 },   { 0, 0, 1672 },\n    { 0, 0, 1707 },   { 0, 0, 1744 },   { 0, 0, 1783 },   { 0, 0, 1822 },   { 0, 0, 1857 },\n    { 0, 0, 1888 },   { 0, 0, 1913 },   { 0, 0, 1929 },   { 0, 0, 1935 },   { 0, 0, 1903 },\n    { 0, 0, 1828 },   { 0, 0, 1736 },   { 0, 0, 1658 },   { 0, 0, 1620 },   { 0, 0, 1612 },\n    { 0, 0, 1604 },   { 0, 0, 1597 },   { 0, 0, 1590 },   { 0, 0, 1583 },   { 0, 0, 1577 },\n    { 0, 0, 1571 },   { 0, 0, 1565 },   { 0, 0, 1560 },   { 0, 0, 1555 },   { 0, 0, 1551 },\n    { 0, 0, 1547 },   { 0, 0, 1544 },   { 0, 0, 1541 },   { 0, 0, 1538 },   { 0, 0, 1536 },\n    { 0, 0, 1534 },   { 0, 0, 1533 },   { 0, 0, 1532 },   { 0, 0, 1532 },   { 0, 0, 1532 },\n    { 0, 0, 1533 },   { 0, 0, 1534 },   { 0, 0, 1536 },   { 0, 0, 1538 },   { 0, 0, 1541 },\n    { 0, 0, 1544 },   { 0, 0, 1548 },   { 0, 0, 1552 },   { 0, 0, 1558 },   { 0, 0, 1563 },\n    { 0, 0, 1569 },   { 0, 0, 1576 },   { 0, 0, 1584 },   { 0, 0, 1592 },   { 0, 0, 1600 },\n    { 0, 0, 1951 },   { 0, 0, 1922 },   { 0, 0, 1846 },   { 0, 0, 1751 },   { 0, 0, 1666 },\n    { 0, 0, 1620 },   { 0, 0, 1604 },   { 0, 0, 1593 },   { 0, 0, 1587 },   { 0, 0, 1584 },\n    { 0, 0, 1585 },   { 0, 0, 1588 },   { 0, 0, 1593 },   { 0, 0, 1598 },   { 0, 0, 1604 },\n    { 0, 0, 1610 },   { 0, 0, 1615 },   { 0, 0, 1619 },   { 0, 0, 1620 },   { 0, 0, 1619 },\n    { 0, 0, 1617 },   { 0, 0, 1615 },   { 0, 0, 1612 },   { 0, 0, 1609 },   { 0, 0, 1605 },\n    { 0, 0, 1601 },   { 0, 0, 1597 },   { 0, 0, 1592 },   { 0, 0, 1588 },   { 0, 0, 1584 },\n    { 0, 0, 1581 },   { 0, 0, 1577 },   { 0, 0, 1574 },   { 0, 0, 1572 },   { 0, 0, 1571 },\n    { 0, 0, 1570 },   { 0, 0, 1570 },   { 0, 0, 1572 },   { 0, 0, 1574 },   { 0, 0, 1578 },\n    { 0, 0, 1583 },   { 0, 0, 1590 },   { 0, 0, 1598 },   { 0, 0, 1608 },   { 0, 0, 1648 },\n    { 0, 0, 1729 },   { 0, 0, 1824 },   { 0, 0, 1905 },   { 0, 0, 1946 },   { 0, 0, 1948 },\n    { 0, 0, 1932 },   { 0, 0, 1905 },   { 0, 0, 1870 },   { 0, 0, 1834 },   { 0, 0, 1801 },\n    { 0, 0, 1778 },   { 0, 0, 1769 },   { 0, 0, 1799 },   { 0, 0, 1866 },   { 0, 0, 1926 },\n    { 0, 0, 1940 },   { 0, 0, 1844 },   { 0, 0, 1689 },   { 0, 0, 1608 },   { 0, 0, 1662 },\n    { 0, 0, 1778 },   { 0, 0, 1894 },   { 0, 0, 1946 },   { 0, 0, 1897 },   { 0, 0, 1786 },\n    { 0, 0, 1668 },   { 0, 0, 1597 },   { 0, 0, 1575 },   { 0, 0, 1567 },   { 0, 0, 1571 },\n    { 0, 0, 1580 },   { 0, 0, 1593 },   { 0, 0, 1603 },   { 0, 0, 1608 },   { 0, 0, 1607 },\n    { 0, 0, 1604 },   { 0, 0, 1599 },   { 0, 0, 1594 },   { 0, 0, 1589 },   { 0, 0, 1586 },\n    { 0, 0, 1585 },   { 0, 0, 1588 },   { 0, 0, 1595 },   { 0, 0, 1608 },   { 0, 0, 1631 },\n    { 0, 0, 1665 },   { 0, 0, 1706 },   { 0, 0, 1752 },   { 0, 0, 1797 },   { 0, 0, 1839 },\n    { 0, 0, 1874 },   { 0, 0, 1897 },   { 0, 0, 1906 },   { 0, 0, 1900 },   { 0, 0, 1884 },\n    { 0, 0, 1859 },   { 0, 0, 1828 },   { 0, 0, 1792 },   { 0, 0, 1755 },   { 0, 0, 1717 },\n    { 0, 0, 1681 },   { 0, 0, 1650 },   { 0, 0, 1625 },   { 0, 0, 1608 },   { 0, 0, 1597 },\n    { 0, 0, 1589 },   { 0, 0, 1583 },   { 0, 0, 1579 },   { 0, 0, 1577 },   { 0, 0, 1576 },\n    { 0, 0, 1576 },   { 0, 0, 1577 },   { 0, 0, 1580 },   { 0, 0, 1582 },   { 0, 0, 1585 },\n    { 0, 0, 1589 },   { 0, 0, 1592 },   { 0, 0, 1594 },   { 0, 0, 1597 },   { 0, 0, 1599 },\n    { 1, 0, 1602 },   { 2, 0, 1607 },   { 3, 0, 1612 },   { 4, 0, 1618 },   { 5, 0, 1624 },\n    { 5, 0, 1631 },   { 4, 0, 1639 },   { 3, 0, 1646 },   { 0, 0, 1654 },   { -4, 0, 1662 },\n    { -9, 0, 1671 },  { -15, 0, 1680 }, { -22, 0, 1690 }, { -30, 0, 1700 }, { -37, 0, 1710 },\n    { -45, 0, 1720 }, { -53, 0, 1731 }, { -61, 0, 1740 }, { -68, 0, 1750 }, { -74, 0, 1759 },\n    { -80, 0, 1767 }, { -85, 0, 1774 }, { -90, 0, 1782 }, { -93, 0, 1790 }, { -94, 0, 1796 },\n    { -94, 1, 1798 }, { -91, 1, 1796 }, { -85, 1, 1786 }, { -75, 1, 1763 }, { -58, 1, 1729 },\n    { -40, 0, 1689 }, { -22, 0, 1651 }, { -7, 0, 1620 },  { 0, 0, 1602 },   { 2, 0, 1595 },\n    { 5, 0, 1589 },   { 7, 0, 1583 },   { 8, 0, 1579 },   { 9, 0, 1576 },   { 9, 0, 1574 },\n    { 9, 0, 1572 },   { 9, 0, 1571 },   { 8, 0, 1570 },   { 8, 0, 1570 },   { 7, 0, 1571 },\n    { 6, 0, 1571 },   { 5, 0, 1572 },   { 4, 0, 1573 },   { 3, 0, 1573 },   { 2, 0, 1574 },\n    { 1, 0, 1575 },   { 0, 0, 1575 },   { 0, 0, 1574 },   { 0, 0, 1574 },   { 0, 0, 1573 },\n    { 0, 0, 1572 },   { 0, 0, 1571 },   { 0, 0, 1571 },   { 0, 0, 1571 },   { 0, 0, 1572 },\n    { 0, 0, 1572 },   { 0, 0, 1574 },   { 0, 0, 1576 },   { 0, 0, 1578 },   { 0, 0, 1580 },\n    { 0, 0, 1582 },   { 0, 0, 1585 },   { 0, 0, 1588 },   { 0, 0, 1591 },   { 0, 0, 1594 },\n    { 0, 0, 1597 },   { 0, 0, 1600 },   { 0, 0, 1602 },   { 0, 0, 1605 },   { 0, 0, 1608 },\n    { 0, 0, 1610 },   { 0, 0, 1613 },   { 0, 0, 1615 },   { 0, 0, 1616 },   { 0, 0, 1618 },\n    { 0, 0, 1619 },   { 0, 0, 1620 },   { 0, 0, 1620 },   { 0, 0, 1619 },   { 0, 0, 1618 },\n    { 0, 0, 1616 },   { 0, 0, 1614 },   { 0, 0, 1612 },   { 0, 0, 1610 },   { 0, 0, 1607 },\n    { 0, 0, 1604 },   { 0, 0, 1601 },   { 0, 0, 1599 },   { 0, 0, 1596 },   { 0, 0, 1594 },\n    { 0, 0, 1592 },   { 0, 0, 1591 },   { 0, 0, 1589 },   { 0, 0, 1584 },   { 0, 0, 1579 },\n    { 0, 0, 1573 },   { 0, 0, 1567 },   { 0, 0, 1562 },   { 0, 0, 1558 },   { 0, 0, 1557 },\n    { 0, 0, 1559 },   { 0, 0, 1565 },   { 0, 0, 1575 },   { 0, 0, 1591 },   { 0, 0, 1628 },\n    { 0, 0, 1693 },   { 0, 0, 1770 },   { 0, 0, 1844 },   { 0, 0, 1901 },   { 0, 0, 1923 },\n    { 0, 0, 1918 },   { 0, 0, 1903 },   { 0, 0, 1878 },   { 0, 0, 1847 },   { 0, 0, 1812 },\n    { 0, 0, 1774 },   { 0, 0, 1736 },   { 0, 0, 1699 },   { 0, 0, 1666 },   { 0, 0, 1638 },\n    { 0, 0, 1618 },   { 0, 0, 1608 },   { 0, 0, 1603 },   { 0, 0, 1599 },   { 0, 0, 1595 },\n    { 0, 0, 1591 },   { 0, 0, 1588 },   { 0, 0, 1584 },   { 0, 0, 1581 },   { 0, 0, 1578 },\n    { 0, 0, 1576 },   { 0, 0, 1573 },   { 0, 0, 1571 },   { 0, 0, 1569 },   { 0, 0, 1567 },\n    { 0, 0, 1565 },   { 0, 0, 1564 },   { 0, 0, 1563 },   { 0, 0, 1562 },   { 0, 0, 1561 },\n    { 0, 0, 1560 },   { 0, 0, 1560 },   { 0, 0, 1560 },   { 0, 0, 1559 },   { 0, 0, 1559 },\n    { 0, 0, 1560 },   { 0, 0, 1560 },   { 0, 0, 1560 },   { 0, 0, 1561 },   { 0, 0, 1562 },\n    { 0, 0, 1562 },   { 0, 0, 1563 },   { 0, 0, 1564 },   { 0, 0, 1566 },   { 0, 0, 1567 },\n    { 0, 0, 1568 },   { 0, 0, 1570 },   { 0, 0, 1571 },   { 0, 0, 1573 },   { 0, 0, 1575 },\n    { 0, 0, 1576 },   { 0, 0, 1578 },   { 0, 0, 1580 },   { 0, 0, 1582 },   { 0, 0, 1584 },\n    { 0, 0, 1586 },   { 0, 0, 1588 },   { 0, 0, 1590 },   { 0, 0, 1593 },   { 0, 0, 1595 },\n    { 0, 0, 1597 },   { 0, 0, 1599 },   { 0, 0, 1601 },   { 0, 0, 1604 },   { 0, 0, 1606 },\n    { 0, 0, 1608 },   { 0, 0, 1642 },   { 0, 0, 1703 },   { 0, 0, 1734 },   { 0, 0, 1731 },\n    { 0, 0, 1726 },   { 0, 0, 1718 },   { 0, 0, 1709 },   { 0, 0, 1698 },   { 0, 0, 1686 },\n    { 0, 0, 1673 },   { 0, 0, 1659 },   { 0, 0, 1646 },   { 0, 0, 1633 },   { 0, 0, 1621 },\n    { 0, 0, 1609 },   { 0, 0, 1599 },   { 0, 0, 1591 },   { 0, 0, 1585 },   { 0, 0, 1581 },\n    { 0, 0, 1581 },   { 0, 0, 1622 },   { 0, 0, 1701 },   { 0, 0, 1751 },   { 0, 0, 1764 },\n    { 0, 0, 1773 },   { 0, 0, 1778 },   { 0, 0, 1781 },   { 0, 0, 1782 },   { 0, 0, 1782 },\n    { 0, 0, 1782 },   { 0, 0, 1782 },   { 0, 0, 1784 },   { 0, 0, 1787 },   { 0, 0, 1794 },\n    { 0, 0, 1804 },   { 0, 0, 1833 },   { 0, 0, 1881 },   { 0, 0, 1926 },   { 0, 0, 1946 },\n    { 0, 0, 1941 },   { 0, 0, 1928 },   { 0, 0, 1907 },   { 0, 0, 1881 },   { 0, 0, 1849 },\n    { 0, 0, 1815 },   { 0, 0, 1779 },   { 0, 0, 1742 },   { 0, 0, 1707 },   { 0, 0, 1673 },\n    { 0, 0, 1644 },   { 0, 0, 1619 },   { 0, 0, 1601 },   { 0, 0, 1591 },   { 0, 0, 1588 },\n    { 0, 0, 1590 },   { 0, 0, 1596 },   { 0, 0, 1606 },   { 0, 0, 1619 },   { 0, 0, 1635 },\n    { 0, 0, 1652 },   { 0, 0, 1670 },   { 0, 0, 1689 },   { 0, 0, 1708 },   { 0, 0, 1726 },\n    { 0, 0, 1742 },   { 0, 0, 1756 },   { 0, 0, 1767 },   { 0, 0, 1774 },   { 0, 0, 1779 },\n    { 0, 0, 1781 },   { 0, 0, 1782 },   { 0, 0, 1781 },   { 0, 0, 1779 },   { 0, 0, 1776 },\n    { 0, 0, 1772 },   { 0, 0, 1768 },   { 0, 0, 1764 },   { 0, 0, 1760 },   { 0, 0, 1757 },\n    { 0, 0, 1754 },   { 0, 0, 1752 },   { 0, 0, 1751 },   { 0, 0, 1752 },   { 0, 0, 1752 },\n    { 0, 0, 1754 },   { 0, 0, 1755 },   { 0, 0, 1757 },   { 0, 0, 1759 },   { 0, 0, 1762 },\n    { 0, 0, 1764 },   { 0, 0, 1766 },   { 0, 0, 1768 },   { 0, 0, 1770 },   { 0, 0, 1772 },\n    { 0, 0, 1773 },   { 0, 0, 1774 },   { 0, 0, 1774 },   { 0, 0, 1774 },   { 0, 0, 1773 },\n    { 0, 0, 1772 },   { 0, 0, 1770 },   { 0, 0, 1768 },   { 0, 0, 1765 },   { 0, 0, 1763 },\n    { 0, 0, 1760 },   { 0, 0, 1758 },   { 0, 0, 1756 },   { 0, 0, 1754 },   { 0, 0, 1753 },\n    { 0, 0, 1752 },   { 0, 0, 1751 },   { 0, 0, 1751 },   { 0, 0, 1751 },   { 0, 0, 1751 },\n    { 0, 0, 1751 },   { 0, 0, 1751 },   { 0, 0, 1751 },   { 0, 0, 1752 },   { 0, 0, 1754 },\n    { 0, 0, 1756 },   { 0, 0, 1759 },   { 0, 0, 1763 },   { 0, 0, 1768 },   { 0, 0, 1774 },\n    { 0, 0, 1783 },   { 0, 0, 1794 },   { 0, 0, 1808 },   { 0, 0, 1823 },   { 0, 0, 1840 },\n    { 0, 0, 1857 },   { 0, 0, 1874 },   { 0, 0, 1891 },   { 0, 0, 1906 },   { 0, 0, 1920 },\n    { 0, 0, 1932 },   { 0, 0, 1941 },   { 0, 0, 1947 },   { 0, 0, 1949 },   { 0, 0, 1946 },\n    { 0, 0, 1939 },   { 0, 0, 1929 },   { 0, 0, 1915 },   { 0, 0, 1898 },   { 0, 0, 1878 },\n    { 0, 0, 1857 },   { 0, 0, 1834 },   { 0, 0, 1810 },   { 0, 0, 1786 },   { 0, 0, 1761 },\n    { 0, 0, 1737 },   { 0, 0, 1713 },   { 0, 0, 1691 },   { 0, 0, 1671 },   { 0, 0, 1652 },\n    { 0, 0, 1636 },   { 0, 0, 1624 },   { 0, 0, 1615 },   { 0, 0, 1608 },   { 0, 0, 1602 },\n    { 0, 0, 1598 },   { 0, 0, 1594 },   { 0, 0, 1591 },   { 0, 0, 1589 },   { 0, 0, 1587 },\n    { 0, 0, 1587 },   { 0, 0, 1587 },   { 0, 0, 1587 },   { 0, 0, 1588 },   { 0, 0, 1589 },\n    { 0, 0, 1591 },   { 0, 0, 1593 },   { 0, 0, 1596 },   { 0, 0, 1598 },   { 0, 0, 1601 },\n    { 0, 0, 1603 },   { 0, 0, 1606 },   { 0, 0, 1609 },   { 0, 0, 1611 },   { 0, 0, 1613 },\n    { 0, 0, 1615 },   { 0, 0, 1617 },   { 0, 0, 1618 },   { 0, 0, 1619 },   { 0, 0, 1620 },\n    { 0, 0, 1620 },   { 0, 0, 1619 },   { 0, 0, 1619 },   { 0, 0, 1618 },   { 0, 0, 1617 },\n    { 0, 0, 1616 },   { 0, 0, 1616 },   { 0, 0, 1615 },   { 0, 0, 1614 },   { 0, 0, 1613 },\n    { 0, 0, 1612 },   { 0, 0, 1612 },   { 0, 0, 1612 },   { 0, 0, 1612 },   { 0, 0, 1612 },\n    { 0, 0, 1613 },   { 0, 0, 1614 },   { 0, 0, 1615 },   { 0, 0, 1617 },   { 0, 0, 1620 },\n    { 0, 0, 1622 },   { 0, 0, 1625 },   { 0, 0, 1628 },   { 0, 0, 1632 },   { 0, 0, 1637 },\n    { 0, 0, 1642 },   { 0, 0, 1649 },   { 0, 0, 1657 },   { 0, 0, 1666 },   { 0, 0, 1677 },\n    { 0, 0, 1690 },   { 0, 0, 1706 },   { 0, 0, 1728 },   { 0, 0, 1760 },   { 0, 0, 1798 },\n    { 0, 0, 1838 },   { 0, 0, 1877 },   { 0, 0, 1910 },   { 0, 0, 1935 },   { 0, 0, 1946 },\n    { 0, 0, 1943 },   { 0, 0, 1927 },   { 0, 0, 1902 },   { 0, 0, 1873 },   { 0, 0, 1841 },\n    { 0, 0, 1810 },   { 0, 0, 1785 },   { 0, 0, 1769 },   { 0, 0, 1759 },   { 0, 0, 1752 },\n    { 0, 0, 1747 },   { 0, 0, 1744 },   { 0, 0, 1742 },   { 0, 0, 1742 },   { 0, 0, 1742 },\n    { 0, 0, 1743 },   { 0, 0, 1743 },   { 0, 0, 1744 },   { 0, 0, 1743 },   { 0, 0, 1743 },\n    { 0, 0, 1743 },   { 0, 0, 1744 },   { 0, 0, 1747 },   { 0, 0, 1752 },   { 0, 0, 1759 },\n    { 0, 0, 1769 },   { 0, 0, 1783 },   { 0, 0, 1801 },   { 0, 0, 1823 },   { 0, 0, 1846 },\n    { 0, 0, 1870 },   { 0, 0, 1892 },   { 0, 0, 1912 },   { 0, 0, 1929 },   { 0, 0, 1940 },\n    { 0, 0, 1948 },   { 0, 0, 1952 },   { 0, 0, 1954 },   { 0, 0, 1954 },   { 0, 0, 1953 },\n    { 0, 0, 1951 },   { 0, 0, 1948 },   { 0, 0, 1946 },   { 0, 0, 1943 },   { 0, 0, 1941 },\n    { 0, 0, 1940 },   { 0, 0, 1940 },   { 0, 0, 1940 },   { 0, 0, 1940 },   { 0, 0, 1940 },\n    { 0, 0, 1940 },   { 0, 0, 1940 },   { 0, 0, 1940 },   { 0, 0, 1940 },   { 0, 0, 1940 },\n    { 0, 0, 1940 },   { 0, 0, 1940 },   { 0, 0, 1940 },   { 0, 0, 1940 },   { 0, 0, 1940 },\n    { 0, 0, 1940 },   { 0, 0, 1940 },   { 0, 0, 1940 },   { 0, 0, 1940 },   { 0, 0, 1940 },\n    { 0, 0, 1940 },   { 0, 0, 1940 },   { 0, 0, 1940 },   { 0, 0, 1940 },   { 0, 0, 1940 },\n    { 0, 0, 1940 },   { 0, 0, 1940 },   { 0, 0, 1940 },   { 0, 0, 1940 },   { 0, 0, 1940 },\n    { 0, 0, 1940 },   { 0, 0, 1940 },   { 0, 0, 1940 },   { 0, 0, 1940 },   { 0, 0, 1940 },\n    { 0, 0, 1940 },   { 0, 0, 1940 },   { 0, 0, 1940 },   { 0, 0, 1940 },   { 0, 0, 1940 },\n    { 0, 0, 1940 },   { 0, 0, 1940 },   { 0, 0, 1940 },   { 0, 0, 1940 },   { 0, 0, 1940 },\n    { 0, 0, 1940 },   { 0, 0, 1940 },   { 0, 0, 1940 },   { 0, 0, 1940 },   { 0, 0, 1940 },\n    { 0, 0, 1940 },   { 0, 0, 1940 },   { 0, 0, 1940 },   { 0, 0, 1940 },   { 0, 0, 1940 },\n    { 0, 0, 1940 },   { 0, 0, 1940 },   { 0, 0, 1940 },   { 0, 0, 1940 },   { 0, 0, 1940 },\n    { 0, 0, 1940 },   { 0, 0, 1940 },   { 0, 0, 1940 },   { 0, 0, 1947 },   { 0, 0, 1940 },\n    { 0, 0, 1902 },   { 0, 0, 1852 },   { 0, 0, 1801 },   { 0, 0, 1762 },   { 0, 0, 1747 },\n    { 0, 0, 1851 },   { 0, 0, 1942 },   { 0, 0, 1847 },   { 0, 0, 1698 },   { 0, 0, 1620 },\n};\n\nstatic s16 animdata_mario_eyelid_right_2[][3] = {\n    { 0, 0, 1763 }, { 0, 0, 1762 }, { 0, 0, 1761 }, { 0, 0, 1760 }, { 0, 0, 1757 }, { 0, 0, 1755 },\n    { 0, 0, 1752 }, { 0, 0, 1749 }, { 0, 0, 1746 }, { 0, 0, 1744 }, { 0, 0, 1741 }, { 0, 0, 1739 },\n    { 0, 0, 1737 }, { 0, 0, 1736 }, { 0, 0, 1736 }, { 0, 0, 1736 }, { 0, 0, 1738 }, { 0, 0, 1740 },\n    { 0, 0, 1744 }, { 0, 0, 1749 }, { 0, 0, 1755 }, { 0, 0, 1763 }, { 0, 0, 1802 }, { 0, 0, 1876 },\n    { 0, 0, 1948 }, { 0, 0, 1981 }, { 0, 0, 1958 }, { 0, 0, 1904 }, { 0, 0, 1839 }, { 0, 0, 1785 },\n    { 0, 0, 1763 }, { 0, 0, 1757 }, { 0, 0, 1743 }, { 0, 0, 1726 }, { 0, 0, 1711 }, { 0, 0, 1706 },\n    { 0, 0, 1707 }, { 0, 0, 1713 }, { 0, 0, 1720 }, { 0, 0, 1729 }, { 0, 0, 1739 }, { 0, 0, 1748 },\n    { 0, 0, 1756 }, { 0, 0, 1761 }, { 0, 0, 1763 }, { 0, 0, 1762 }, { 0, 0, 1760 }, { 0, 0, 1758 },\n    { 0, 0, 1754 }, { 0, 0, 1750 }, { 0, 0, 1745 }, { 0, 0, 1740 }, { 0, 0, 1734 }, { 0, 0, 1729 },\n    { 0, 0, 1724 }, { 0, 0, 1719 }, { 0, 0, 1715 }, { 0, 0, 1712 }, { 0, 0, 1710 }, { 0, 0, 1708 },\n    { 0, 0, 1708 }, { 0, 0, 1709 }, { 0, 0, 1712 }, { 0, 0, 1725 }, { 0, 0, 1751 }, { 0, 0, 1784 },\n    { 0, 0, 1816 }, { 0, 0, 1842 }, { 0, 0, 1853 }, { 0, 0, 1855 }, { 0, 0, 1857 }, { 0, 0, 1859 },\n    { 0, 0, 1860 }, { 0, 0, 1861 }, { 0, 0, 1863 }, { 0, 0, 1864 }, { 0, 0, 1864 }, { 0, 0, 1865 },\n    { 0, 0, 1866 }, { 0, 0, 1866 }, { 0, 0, 1866 }, { 0, 0, 1867 }, { 0, 0, 1867 }, { 0, 0, 1867 },\n    { 0, 0, 1867 }, { 0, 0, 1866 }, { 0, 0, 1866 }, { 0, 0, 1866 }, { 0, 0, 1865 }, { 0, 0, 1865 },\n    { 0, 0, 1864 }, { 0, 0, 1863 }, { 0, 0, 1863 }, { 0, 0, 1862 }, { 0, 0, 1861 }, { 0, 0, 1860 },\n    { 0, 0, 1859 }, { 0, 0, 1858 }, { 0, 0, 1858 }, { 0, 0, 1857 }, { 0, 0, 1856 }, { 0, 0, 1855 },\n    { 0, 0, 1854 }, { 0, 0, 1853 }, { 0, 0, 1852 }, { 0, 0, 1851 }, { 0, 0, 1850 }, { 0, 0, 1850 },\n    { 0, 0, 1849 }, { 0, 0, 1848 }, { 0, 0, 1847 }, { 0, 0, 1847 }, { 0, 0, 1846 }, { 0, 0, 1846 },\n    { 0, 0, 1845 }, { 0, 0, 1845 }, { 0, 0, 1845 }, { 0, 0, 1845 }, { 0, 0, 1845 }, { 0, 0, 1845 },\n    { 0, 0, 1845 }, { 0, 0, 1845 }, { 0, 0, 1846 }, { 0, 0, 1847 }, { 0, 0, 1847 }, { 0, 0, 1848 },\n    { 0, 0, 1849 }, { 0, 0, 1850 }, { 0, 0, 1852 }, { 0, 0, 1853 }, { 0, 0, 1860 }, { 0, 0, 1875 },\n    { 0, 0, 1894 }, { 0, 0, 1916 }, { 0, 0, 1937 }, { 0, 0, 1954 }, { 0, 0, 1964 }, { 0, 0, 1963 },\n    { 0, 0, 1956 }, { 0, 0, 1947 }, { 0, 0, 1937 }, { 0, 0, 1925 }, { 0, 0, 1912 }, { 0, 0, 1899 },\n    { 0, 0, 1884 }, { 0, 0, 1869 }, { 0, 0, 1853 }, { 0, 0, 1836 }, { 0, 0, 1819 }, { 0, 0, 1803 },\n    { 0, 0, 1786 }, { 0, 0, 1769 }, { 0, 0, 1752 }, { 0, 0, 1736 }, { 0, 0, 1720 }, { 0, 0, 1705 },\n    { 0, 0, 1691 }, { 0, 0, 1677 }, { 0, 0, 1665 }, { 0, 0, 1654 }, { 0, 0, 1644 }, { 0, 0, 1635 },\n    { 0, 0, 1629 }, { 0, 0, 1624 }, { 0, 0, 1621 }, { 0, 0, 1620 },\n};\n\nstruct AnimDataInfo anim_mario_eyelid_right[] = {\n    { ARRAY_COUNT(animdata_mario_eyelid_right_1), GD_ANIM_ROT3S, animdata_mario_eyelid_right_1 },\n    { ARRAY_COUNT(animdata_mario_eyelid_right_2), GD_ANIM_ROT3S, animdata_mario_eyelid_right_2 },\n    END_ANIMDATA_INFO_ARR,\n};\n\nstatic s16 animdata_mario_intro_1[][6] = {\n    { 1128, 0, 0, 0, 0, -20010 },\n    { 1123, 0, 0, 0, -2, -19891 },\n    { 1108, 0, 0, 0, -7, -19548 },\n    { 1085, 0, 0, 0, -16, -19000 },\n    { 1053, 0, 0, 0, -27, -18268 },\n    { 1015, 0, 0, 0, -39, -17371 },\n    { 970, 0, 0, 0, -53, -16328 },\n    { 920, 0, 0, 0, -67, -15161 },\n    { 866, 0, 0, 0, -80, -13888 },\n    { 807, 0, 0, 0, -92, -12529 },\n    { 746, 0, 0, 0, -103, -11105 },\n    { 683, 0, 0, 0, -112, -9635 },\n    { 619, 0, 0, 0, -117, -8138 },\n    { 555, 0, 0, 0, -119, -6635 },\n    { 491, 0, 0, 0, -114, -5146 },\n    { 429, 0, 0, 0, -103, -3690 },\n    { 369, 0, 0, 0, -87, -2286 },\n    { 312, 0, 0, 0, -68, -956 },\n    { 259, 0, 0, 0, -48, 281 },\n    { 212, 0, 0, 0, -28, 535 },\n    { 169, 0, 0, 0, -12, 371 },\n    { 134, 0, 0, 0, 0, 146 },\n    { 132, 0, 0, 0, 5, -99 },\n    { 172, 0, 0, 0, 5, -327 },\n    { 231, 0, 0, 1, 3, -498 },\n    { 281, 0, 0, 1, 0, -572 },\n    { 297, 0, 0, 0, 0, -581 },\n    { 285, 0, 0, -3, 3, -563 },\n    { 267, 0, 0, -8, 9, -522 },\n    { 243, 0, 1, -14, 14, -462 },\n    { 215, 0, 2, -18, 18, -390 },\n    { 184, 0, 2, -19, 17, -309 },\n    { 151, 1, 3, -17, 12, -225 },\n    { 117, 1, 3, -15, 6, -142 },\n    { 84, 1, 3, -12, 0, -65 },\n    { 53, 0, 3, -8, -9, 1 },\n    { 24, 0, 1, -4, -18, 52 },\n    { 0, 0, 0, 0, -27, 81 },\n    { -23, 0, -3, 3, -36, 84 },\n    { -47, -1, -9, 7, -44, 67 },\n    { -71, -3, -15, 11, -51, 37 },\n    { -95, -4, -23, 14, -57, 3 },\n    { -117, -6, -31, 17, -61, -24 },\n    { -136, -7, -38, 18, -62, -40 },\n    { -152, -9, -44, 20, -62, -40 },\n    { -164, -11, -48, 20, -58, -36 },\n    { -170, -13, -50, 21, -53, -29 },\n    { -171, -15, -49, 21, -46, -19 },\n    { -164, -17, -44, 20, -38, -7 },\n    { -151, -19, -37, 19, -29, 4 },\n    { -132, -22, -28, 19, -20, 16 },\n    { -110, -26, -17, 18, -12, 27 },\n    { -85, -29, -5, 17, -5, 36 },\n    { -58, -32, 7, 16, 0, 43 },\n    { -31, -35, 19, 15, 3, 46 },\n    { -5, -37, 31, 14, 5, 46 },\n    { 19, -39, 42, 13, 7, 45 },\n    { 40, -41, 51, 12, 7, 43 },\n    { 57, -41, 58, 11, 8, 39 },\n    { 68, -41, 62, 9, 8, 34 },\n    { 72, -39, 62, 8, 7, 29 },\n    { 72, -35, 57, 7, 7, 24 },\n    { 67, -29, 49, 5, 6, 18 },\n    { 59, -23, 39, 4, 5, 12 },\n    { 48, -16, 28, 3, 4, 6 },\n    { 37, -10, 17, 2, 2, 1 },\n    { 25, -4, 8, 1, 1, -2 },\n    { 14, -1, 2, 0, 1, -6 },\n    { 5, 0, 0, 0, 0, -8 },\n    { 0, 0, 0, 0, 0, -10 },\n    { -3, -3, -8, 0, 0, -10 },\n    { -7, -8, -18, 0, 0, -10 },\n    { -11, -12, -27, 0, -1, -10 },\n    { -15, -16, -37, 0, -1, -11 },\n    { -18, -21, -47, 0, -2, -11 },\n    { -22, -25, -57, 0, -2, -11 },\n    { -25, -30, -68, 0, -3, -11 },\n    { -29, -34, -78, 0, -4, -11 },\n    { -32, -39, -89, 0, -4, -11 },\n    { -35, -44, -99, -1, -5, -11 },\n    { -38, -48, -109, -1, -6, -12 },\n    { -41, -53, -120, -1, -7, -12 },\n    { -44, -57, -130, -1, -7, -12 },\n    { -46, -62, -140, -1, -8, -12 },\n    { -49, -66, -149, -1, -8, -12 },\n    { -51, -70, -159, -1, -9, -12 },\n    { -54, -74, -168, -1, -9, -12 },\n    { -56, -78, -177, -1, -9, -12 },\n    { -58, -82, -185, -1, -10, -11 },\n    { -60, -85, -193, -1, -10, -11 },\n    { -62, -88, -200, -1, -9, -11 },\n    { -64, -91, -207, -1, -9, -11 },\n    { -66, -94, -213, -1, -9, -11 },\n    { -68, -97, -219, -1, -8, -11 },\n    { -69, -99, -224, -2, -7, -11 },\n    { -71, -101, -229, -2, -6, -10 },\n    { -72, -103, -233, -2, -5, -10 },\n    { -73, -105, -238, -2, -3, -10 },\n    { -74, -107, -241, -2, -1, -10 },\n    { -74, -108, -245, -2, 2, -10 },\n    { -75, -109, -247, -2, 6, -9 },\n    { -75, -110, -249, -2, 10, -9 },\n    { -75, -110, -251, -2, 15, -9 },\n    { -75, -111, -251, -2, 21, -9 },\n    { -75, -110, -251, -2, 26, -8 },\n    { -74, -110, -250, -2, 32, -8 },\n    { -74, -109, -247, -2, 37, -8 },\n    { -73, -107, -244, -2, 43, -7 },\n    { -72, -106, -240, -2, 48, -7 },\n    { -71, -103, -234, -2, 52, -7 },\n    { -69, -100, -227, -2, 56, -6 },\n    { -68, -97, -219, -2, 60, -6 },\n    { -64, -89, -199, -2, 62, -6 },\n    { -56, -75, -162, -2, 64, -5 },\n    { -47, -57, -116, -2, 65, -5 },\n    { -38, -38, -69, -2, 64, -5 },\n    { -30, -20, -28, -2, 63, -4 },\n    { -26, -6, -2, -2, 60, -4 },\n    { -24, 4, 14, -2, 57, -3 },\n    { -22, 15, 30, -2, 54, -3 },\n    { -21, 26, 47, -2, 49, -3 },\n    { -19, 37, 63, -2, 44, -2 },\n    { -17, 48, 79, -2, 39, -2 },\n    { -15, 58, 94, -2, 33, -2 },\n    { -14, 69, 109, -2, 27, -1 },\n    { -12, 80, 123, -2, 20, -1 },\n    { -11, 90, 137, -2, 13, 0 },\n    { -10, 100, 150, -2, 6, 0 },\n    { -9, 110, 161, -2, 0, 0 },\n    { -9, 120, 172, -2, -7, 0 },\n    { -9, 129, 182, -2, -14, 0 },\n    { -9, 139, 191, -2, -21, 1 },\n    { -10, 148, 198, -2, -28, 1 },\n    { -12, 156, 204, -2, -34, 1 },\n    { -14, 164, 208, -2, -41, 2 },\n    { -16, 172, 211, -2, -47, 2 },\n    { -19, 180, 213, -2, -52, 3 },\n    { -23, 187, 212, -2, -57, 3 },\n    { -27, 193, 210, -2, -62, 3 },\n    { -32, 199, 206, -2, -66, 4 },\n    { -38, 205, 201, -2, -70, 4 },\n    { -44, 211, 195, -2, -72, 4 },\n    { -50, 216, 187, -2, -74, 5 },\n    { -57, 221, 178, -2, -76, 5 },\n    { -64, 225, 168, -2, -76, 5 },\n    { -72, 230, 157, -2, -75, 6 },\n    { -80, 234, 146, -2, -73, 6 },\n    { -88, 238, 134, -2, -70, 6 },\n    { -96, 242, 121, -2, -67, 7 },\n    { -104, 246, 107, -2, -63, 7 },\n    { -113, 249, 94, -2, -59, 7 },\n    { -122, 253, 79, -2, -54, 8 },\n    { -130, 257, 65, -2, -50, 8 },\n    { -139, 260, 51, -2, -45, 8 },\n    { -148, 264, 37, -2, -39, 8 },\n    { -156, 268, 22, -2, -34, 9 },\n    { -165, 272, 8, -2, -29, 9 },\n    { -173, 276, -4, -2, -24, 9 },\n    { -181, 280, -18, -2, -20, 9 },\n    { -189, 285, -30, -2, -16, 9 },\n    { -196, 289, -42, -2, -12, 10 },\n    { -203, 294, -54, -2, -9, 10 },\n    { -210, 299, -64, -2, -7, 10 },\n    { -218, 311, -74, -2, -5, 10 },\n    { -227, 331, -82, -2, -4, 10 },\n    { -233, 350, -87, -2, -3, 10 },\n    { -233, 358, -89, -2, -2, 10 },\n    { -222, 347, -87, -2, -1, 10 },\n    { -202, 316, -79, -2, 0, 10 },\n    { -173, 273, -69, -2, 0, 10 },\n    { -140, 222, -56, -2, 1, 22 },\n    { -105, 167, -42, -2, 2, 81 },\n    { -71, 113, -28, -2, 3, 161 },\n    { -40, 64, -16, -2, 3, 232 },\n    { -15, 25, -6, -2, 4, 263 },\n    { 0, 0, 0, -2, 5, 230 },\n    { 9, -14, 3, -2, 5, 149 },\n    { 15, -23, 5, -2, 6, 60 },\n    { 18, -29, 7, -1, 6, 0 },\n    { 20, -31, 7, -1, 6, -6 },\n    { 20, -31, 7, -1, 7, -4 },\n    { 18, -28, 7, -1, 7, -2 },\n    { 15, -24, 6, -1, 7, 0 },\n    { 12, -19, 4, -1, 8, 0 },\n    { 9, -14, 3, -1, 8, 1 },\n    { 5, -8, 2, -1, 8, 1 },\n    { 2, -4, 1, -1, 8, 2 },\n    { 0, -1, 0, -1, 8, 2 },\n    { 0, 0, 0, -1, 8, 2 },\n    { 0, 0, 0, -1, 8, 2 },\n    { -1, 0, 0, -1, 8, 1 },\n    { -2, 0, 0, -1, 8, 1 },\n    { -4, 0, 0, -1, 8, 0 },\n    { -6, 0, 0, -1, 7, 0 },\n    { -8, 0, 0, -1, 7, 0 },\n    { -10, 0, 0, -1, 7, -1 },\n    { -12, 0, 0, -1, 6, -2 },\n    { -14, 0, 0, -1, 6, -3 },\n    { -16, 0, 0, -1, 5, -4 },\n    { -16, 0, 0, -1, 5, -5 },\n    { -17, 0, 0, -1, 4, -6 },\n    { -16, 0, 0, -1, 4, -7 },\n    { -15, 0, 0, -1, 3, -7 },\n    { -13, 0, 0, -1, 2, -8 },\n    { -10, 0, 0, -1, 2, -9 },\n    { -5, 0, 0, -1, 1, -9 },\n    { 0, 0, 0, -1, 0, -9 },\n    { 9, 0, 0, -1, 0, -10 },\n    { 24, 0, 0, -1, -2, -10 },\n    { 42, 0, 0, -1, -7, -10 },\n    { 63, 0, 0, -1, -13, -10 },\n    { 86, 0, 0, -1, -21, -10 },\n    { 110, 0, 0, -1, -29, -10 },\n    { 132, 0, 0, -1, -38, -10 },\n    { 153, 0, 0, -1, -45, -10 },\n    { 171, 0, 0, -1, -52, -10 },\n    { 185, 0, 0, -1, -57, -10 },\n    { 193, 0, 0, -1, -59, -10 },\n    { 194, 0, 0, -1, -59, -10 },\n    { 190, 0, 0, -1, -55, -10 },\n    { 182, 0, 0, -1, -39, -10 },\n    { 170, 0, 0, -1, -13, -10 },\n    { 155, 0, 0, -1, 18, -10 },\n    { 138, 0, 0, -1, 49, -10 },\n    { 119, 0, 0, -1, 75, -10 },\n    { 98, 0, 0, -1, 90, -10 },\n    { 77, 0, 0, -1, 89, -10 },\n    { 55, 0, 0, -1, 76, -10 },\n    { 34, 0, 0, -1, 54, -10 },\n    { 13, 0, 0, -1, 28, -10 },\n    { -5, 0, 0, -1, 0, -10 },\n    { -22, 0, 0, -1, -25, -10 },\n    { -37, 0, 0, -1, -45, -10 },\n    { -49, 0, 0, -1, -56, -10 },\n    { -57, 0, 0, -1, -58, -10 },\n    { -62, 0, 0, -1, -53, -10 },\n    { -64, 0, 0, -1, -42, -10 },\n    { -65, 0, 1, -1, -30, -10 },\n    { -64, 0, 1, -1, -17, -10 },\n    { -61, 0, 2, -1, -6, -10 },\n    { -57, 0, 3, -1, 0, -10 },\n    { -51, 0, 4, -1, 0, -10 },\n    { -46, 0, 4, -2, -5, -10 },\n    { -39, -1, 5, -2, -14, -10 },\n    { -33, -1, 5, -2, -26, -10 },\n    { -26, -1, 5, -1, -38, -10 },\n    { -20, -1, 5, -1, -49, -10 },\n    { -15, 0, 4, -2, -57, -10 },\n    { -10, 0, 3, -3, -60, -10 },\n    { -7, 0, 2, -5, -56, -10 },\n    { -5, 0, 0, -7, -47, -10 },\n    { -4, 0, -2, -9, -37, -10 },\n    { -4, 1, -5, -10, -28, -10 },\n    { -3, 1, -8, -12, -16, -10 },\n    { -2, 2, -11, -12, -5, -10 },\n    { -2, 2, -14, -12, 0, -10 },\n    { -2, 3, -18, -12, 0, -10 },\n    { -2, 4, -21, -10, 0, -10 },\n    { -2, 5, -25, -7, -1, -10 },\n    { -2, 5, -29, -2, -2, -10 },\n    { -2, 6, -33, 3, -4, -10 },\n    { -2, 7, -37, 11, -6, -10 },\n    { -3, 8, -41, 18, -8, -10 },\n    { -3, 9, -45, 26, -11, -10 },\n    { -3, 10, -50, 33, -13, -10 },\n    { -4, 10, -54, 41, -15, -10 },\n    { -4, 11, -58, 48, -16, -10 },\n    { -5, 12, -62, 54, -17, -10 },\n    { -5, 13, -67, 59, -18, -10 },\n    { -6, 14, -71, 64, -17, -10 },\n    { -7, 15, -75, 68, -16, -10 },\n    { -7, 15, -79, 71, -14, -10 },\n    { -8, 16, -83, 73, -12, -10 },\n    { -8, 17, -87, 74, -10, -10 },\n    { -9, 18, -90, 74, -8, -10 },\n    { -9, 18, -94, 74, -5, -10 },\n    { -10, 19, -97, 73, -3, -10 },\n    { -10, 20, -100, 72, 0, -10 },\n    { -10, 20, -103, 70, 2, -10 },\n    { -11, 21, -106, 68, 5, -10 },\n    { -11, 21, -108, 66, 9, -10 },\n    { -11, 22, -111, 64, 12, -10 },\n    { -11, 22, -113, 61, 15, -10 },\n    { -11, 23, -115, 58, 19, -10 },\n    { -11, 23, -117, 55, 22, -10 },\n    { -11, 24, -119, 52, 26, -10 },\n    { -12, 24, -121, 50, 30, -10 },\n    { -12, 24, -122, 47, 33, -10 },\n    { -12, 25, -123, 44, 37, -10 },\n    { -12, 25, -123, 42, 40, -10 },\n    { -12, 25, -123, 39, 44, -10 },\n    { -12, 25, -122, 36, 47, -10 },\n    { -12, 24, -121, 32, 51, -10 },\n    { -11, 24, -119, 29, 54, -10 },\n    { -11, 23, -116, 25, 58, -10 },\n    { -11, 22, -113, 20, 61, -10 },\n    { -11, 21, -108, 16, 64, -10 },\n    { -10, 20, -100, 11, 67, -10 },\n    { -9, 17, -86, 6, 70, -10 },\n    { -8, 13, -68, 1, 72, -10 },\n    { -7, 9, -48, -3, 75, -10 },\n    { -6, 5, -29, -8, 77, -10 },\n    { -5, 0, -12, -13, 79, -10 },\n    { -4, -5, 0, -18, 81, -10 },\n    { -4, -10, 9, -22, 83, -10 },\n    { -4, -16, 17, -27, 84, -10 },\n    { -4, -22, 25, -32, 86, -10 },\n    { -4, -28, 32, -36, 87, -10 },\n    { -4, -34, 39, -40, 87, -10 },\n    { -5, -41, 46, -43, 88, -10 },\n    { -5, -47, 52, -47, 87, -10 },\n    { -5, -53, 58, -49, 86, -10 },\n    { -6, -60, 64, -52, 83, -10 },\n    { -6, -66, 70, -54, 79, -10 },\n    { -7, -72, 75, -55, 75, -10 },\n    { -7, -78, 80, -56, 70, -10 },\n    { -8, -83, 85, -55, 65, -10 },\n    { -8, -89, 90, -53, 59, -10 },\n    { -8, -93, 96, -50, 53, -10 },\n    { -9, -98, 100, -46, 46, -10 },\n    { -9, -100, 102, -42, 40, -10 },\n    { -9, -99, 101, -37, 34, -10 },\n    { -8, -93, 96, -32, 27, -10 },\n    { -7, -82, 84, -26, 22, -10 },\n    { -6, -67, 68, -21, 16, -10 },\n    { -4, -49, 50, -15, 11, -10 },\n    { -2, -31, 32, -10, 7, -10 },\n    { -1, -16, 16, -6, 4, -10 },\n    { 0, -5, 5, -2, 1, -10 },\n    { 0, 0, 0, 0, 0, -10 },\n    { 0, 1, -1, 2, 0, -9 },\n    { 0, 2, -2, 4, -1, -9 },\n    { 0, 3, -3, 6, -2, -9 },\n    { 0, 4, -4, 9, -2, -9 },\n    { 0, 5, -5, 11, -2, -9 },\n    { 0, 5, -6, 13, -2, -9 },\n    { -1, 6, -6, 15, -2, -9 },\n    { -1, 7, -7, 17, -1, -9 },\n    { -2, 8, -8, 18, -1, -9 },\n    { -3, 8, -8, 20, 0, -9 },\n    { -3, 9, -9, 22, 0, -9 },\n    { -4, 9, -9, 23, 1, -9 },\n    { -5, 10, -10, 25, 2, -9 },\n    { -6, 10, -10, 26, 3, -8 },\n    { -7, 11, -11, 27, 4, -8 },\n    { -8, 11, -11, 29, 5, -8 },\n    { -9, 11, -11, 30, 6, -8 },\n    { -10, 11, -12, 30, 8, -8 },\n    { -11, 12, -12, 31, 9, -8 },\n    { -12, 12, -12, 32, 10, -8 },\n    { -13, 12, -12, 32, 12, -8 },\n    { -14, 12, -12, 33, 13, -7 },\n    { -15, 12, -12, 33, 15, -7 },\n    { -16, 12, -12, 33, 16, -7 },\n    { -18, 12, -12, 32, 17, -7 },\n    { -19, 12, -12, 32, 19, -7 },\n    { -20, 12, -12, 31, 20, -7 },\n    { -21, 12, -12, 30, 21, -7 },\n    { -22, 12, -12, 29, 22, -7 },\n    { -23, 12, -12, 28, 23, -6 },\n    { -24, 12, -12, 27, 24, -6 },\n    { -25, 11, -12, 25, 25, -6 },\n    { -26, 11, -12, 23, 26, -6 },\n    { -27, 11, -11, 22, 27, -6 },\n    { -28, 11, -11, 20, 27, -6 },\n    { -29, 11, -11, 18, 27, -6 },\n    { -30, 10, -10, 17, 28, -6 },\n    { -31, 10, -10, 15, 28, -5 },\n    { -32, 10, -10, 13, 27, -5 },\n    { -33, 9, -10, 12, 27, -5 },\n    { -33, 9, -9, 10, 27, -5 },\n    { -34, 9, -9, 9, 26, -5 },\n    { -35, 8, -8, 7, 25, -5 },\n    { -35, 8, -8, 6, 23, -5 },\n    { -36, 8, -8, 5, 20, -5 },\n    { -36, 7, -7, 5, 17, -5 },\n    { -36, 7, -7, 4, 13, -5 },\n    { -36, 6, -7, 4, 10, -4 },\n    { -37, 6, -6, 3, 5, -4 },\n    { -37, 6, -6, 3, 1, -4 },\n    { -37, 5, -5, 3, -3, -4 },\n    { -36, 5, -5, 3, -7, -4 },\n    { -36, 4, -5, 2, -12, -4 },\n    { -36, 4, -4, 2, -17, -4 },\n    { -35, 4, -4, 2, -22, -4 },\n    { -35, 3, -3, 2, -26, -4 },\n    { -34, 3, -3, 2, -30, -4 },\n    { -33, 3, -3, 1, -34, -4 },\n    { -32, 2, -2, 1, -38, -4 },\n    { -31, 2, -2, 1, -41, -6 },\n    { -30, 2, -2, 1, -44, -55 },\n    { -28, 1, -1, 1, -46, -149 },\n    { -27, 1, -1, 1, -48, -268 },\n    { -25, 1, -1, 0, -49, -391 },\n    { -23, 1, -1, 0, -49, -498 },\n    { -21, 0, 0, 0, -49, -567 },\n    { -19, 0, 0, 0, -48, -593 },\n    { -17, 0, 0, 0, -48, -609 },\n    { -14, 0, 0, 0, -46, -618 },\n    { -12, 0, 0, 0, -45, -620 },\n    { -9, 0, 0, 0, -43, -613 },\n    { -6, 0, 0, 0, -41, -598 },\n    { -3, 0, 0, 0, -38, -570 },\n    { 0, 0, 0, 0, -36, -525 },\n    { 22, 0, 0, 0, -33, -467 },\n    { 74, 0, 0, 0, -31, -399 },\n    { 140, 0, 0, 0, -28, -326 },\n    { 205, 0, 0, 0, -25, -251 },\n    { 255, 0, 0, 0, -23, -180 },\n    { 275, 0, 0, 0, -20, -115 },\n    { 271, 0, 0, -1, -18, -62 },\n    { 260, 0, 0, -1, -16, -24 },\n    { 244, -1, 0, -1, -14, -5 },\n    { 222, -1, 0, -1, -12, -4 },\n    { 198, -1, 0, -1, -11, -4 },\n    { 170, -1, 0, -1, -10, -4 },\n    { 142, -1, 0, -1, -9, -4 },\n    { 112, -1, 0, -1, -9, -4 },\n    { 84, -2, 0, -1, -8, -4 },\n    { 58, -3, 0, -1, -8, -4 },\n    { 34, -4, 0, -1, -8, -4 },\n    { 14, -6, 0, -1, -7, -4 },\n    { 0, -8, 0, -1, -7, -4 },\n    { -11, -10, 0, -1, -7, -4 },\n    { -22, -14, 0, -1, -7, -4 },\n    { -32, -25, -1, -2, -6, -4 },\n    { -42, -51, -2, -2, -6, -4 },\n    { -52, -87, -3, -2, -6, -4 },\n    { -61, -131, -3, -2, -6, -4 },\n    { -69, -180, -4, -2, -5, -4 },\n    { -78, -229, -3, -2, -5, -4 },\n    { -86, -276, -3, -2, -5, -4 },\n    { -93, -318, -2, -2, -5, -4 },\n    { -100, -352, 0, -2, -5, -5 },\n    { -107, -374, 2, -2, -4, -5 },\n    { -114, -389, 6, -2, -4, -5 },\n    { -120, -403, 11, -2, -4, -5 },\n    { -126, -417, 16, -2, -4, -5 },\n    { -132, -430, 22, -2, -4, -5 },\n    { -137, -441, 28, -2, -4, -5 },\n    { -143, -450, 34, -2, -3, -5 },\n    { -148, -456, 40, -2, -3, -5 },\n    { -153, -458, 45, -2, -3, -5 },\n    { -158, -457, 50, -2, -3, -5 },\n    { -163, -451, 55, -2, -3, -5 },\n    { -168, -440, 59, -2, -3, -5 },\n    { -173, -424, 62, -2, -3, -5 },\n    { -178, -402, 63, -2, -2, -5 },\n    { -182, -374, 64, -2, -2, -5 },\n    { -186, -330, 62, -2, -2, -5 },\n    { -187, -266, 58, -2, -2, -6 },\n    { -187, -187, 51, -2, -2, -6 },\n    { -185, -97, 43, -2, -2, -6 },\n    { -183, -1, 33, -2, -2, -6 },\n    { -180, 94, 24, -2, -2, -6 },\n    { -177, 187, 15, -2, -2, -6 },\n    { -174, 270, 6, -2, -2, -6 },\n    { -171, 340, 0, -1, -2, -6 },\n    { -170, 391, -5, -1, -2, -6 },\n    { -170, 425, -8, -1, -2, -6 },\n    { -172, 447, -9, -1, -2, -6 },\n    { -175, 458, -10, -1, -2, -6 },\n    { -178, 460, -9, -1, -2, -6 },\n    { -180, 455, -9, -1, -2, -6 },\n    { -181, 444, -7, -1, -2, -7 },\n    { -180, 429, -6, -1, -2, -7 },\n    { -177, 411, -5, -1, -2, -7 },\n    { -170, 391, -5, -1, -2, -7 },\n    { -159, 338, -4, -1, -2, -7 },\n    { -145, 231, -4, -1, -2, -7 },\n    { -129, 90, -3, -1, -2, -7 },\n    { -110, -66, -3, -1, -2, -7 },\n    { -91, -220, -2, -1, -2, -7 },\n    { -71, -351, -2, -1, -2, -7 },\n    { -52, -441, -1, -1, -2, -7 },\n    { -34, -469, -1, -1, -2, -7 },\n    { -19, -418, 0, -1, -2, -7 },\n    { -7, -268, 0, -1, -3, -8 },\n    { 0, 0, 0, -1, -3, -8 },\n    { 4, 374, 0, -1, -3, -8 },\n    { 8, 823, 0, 0, -3, -8 },\n    { 11, 1337, 0, 0, -3, -8 },\n    { 14, 1907, 0, 0, -3, -8 },\n    { 15, 2522, 0, 0, -3, -8 },\n    { 16, 3174, 0, 0, -4, -8 },\n    { 16, 262, 0, 0, -4, -8 },\n    { 15, 958, 0, 0, -4, -8 },\n    { 14, 1661, 0, 0, -4, -8 },\n    { 13, 2362, 0, 0, -4, -8 },\n    { 12, 3052, 0, 0, -4, -8 },\n    { 10, 130, 0, 0, -5, -8 },\n    { 8, 767, 0, 0, -5, -8 },\n    { 6, 1364, 0, 0, -5, -9 },\n    { 5, 1911, 0, 0, -5, -9 },\n    { 3, 2399, 0, 0, -6, -9 },\n    { 2, 2817, 0, 0, -6, -9 },\n    { 0, 3157, 0, 0, -6, -9 },\n    { 0, 3408, 0, 4, -6, -9 },\n    { 0, 3561, 0, 8, -7, -9 },\n    { 0, 3575, 0, 10, -7, -9 },\n    { -1, 3547, 0, 8, -7, -9 },\n    { -2, 29, 0, 3, -7, -9 },\n    { -4, 7, 0, -2, -8, -9 },\n    { -5, 3573, 0, -7, -8, -9 },\n    { -7, 3583, 0, -8, -8, -9 },\n    { -9, 11, 0, -5, -9, -9 },\n    { -10, 32, 0, 0, -9, -9 },\n    { -12, 49, 0, 5, -9, -9 },\n    { -12, 59, 0, 6, -10, -9 },\n    { -12, 60, 0, 2, -10, -9 },\n    { -12, 56, 0, -2, -10, -9 },\n    { -10, 49, 0, -5, -11, -9 },\n    { -8, 41, 0, -4, -11, -9 },\n    { -4, 34, 0, -3, -11, -9 },\n    { 0, 30, 0, -1, -12, -10 },\n    { 11, 28, 0, 0, -13, -10 },\n    { 30, 27, 0, 0, -15, -10 },\n    { 54, 27, 0, 0, -18, -10 },\n    { 80, 28, 0, 0, -21, -10 },\n    { 103, 29, 0, 0, -25, -10 },\n    { 119, 29, 0, 0, -29, -10 },\n    { 126, 30, 0, 0, -33, -10 },\n    { 123, 30, 0, 0, -38, -10 },\n    { 116, 30, 0, 0, -42, -10 },\n    { 106, 30, 0, 0, -45, -10 },\n    { 93, 30, 0, 0, -48, -10 },\n    { 78, 30, 0, 0, -51, -10 },\n    { 62, 30, 0, 0, -52, -10 },\n    { 46, 30, 0, 0, -52, -10 },\n    { 31, 30, 0, 0, -52, -10 },\n    { 18, 30, 0, 0, -51, -10 },\n    { 7, 30, 0, 0, -49, -10 },\n    { 0, 30, 0, 0, -46, -10 },\n    { -4, 30, 0, 0, -44, -10 },\n    { -8, 30, 0, 0, -41, -10 },\n    { -10, 30, 0, 0, -37, -10 },\n    { -11, 30, 0, 0, -34, -10 },\n    { -12, 30, 0, 0, -31, -10 },\n    { -11, 30, 0, 0, -27, -10 },\n    { -11, 30, 0, 0, -24, -10 },\n    { -9, 30, 0, 0, -21, -10 },\n    { -8, 30, 0, 0, -19, -10 },\n    { -6, 30, 0, 0, -17, -10 },\n    { -4, 30, 0, 0, -16, -10 },\n    { -2, 30, 0, 0, -15, -10 },\n    { 0, 30, 0, 0, -15, -10 },\n    { 2, 30, 0, 0, -17, -10 },\n    { 5, 30, 0, 0, -19, -10 },\n    { 9, 30, 0, 0, -21, -10 },\n    { 14, 30, 0, 0, -25, -10 },\n    { 18, 30, 0, 0, -28, -10 },\n    { 24, 30, 0, 0, -32, -10 },\n    { 29, 30, 0, 0, -36, -10 },\n    { 34, 30, 0, 0, -40, -10 },\n    { 38, 30, 0, 0, -44, -10 },\n    { 42, 30, 0, 0, -47, -10 },\n    { 46, 30, 0, 0, -50, -10 },\n    { 49, 30, 0, 0, -53, -10 },\n    { 50, 30, 0, 0, -54, -10 },\n    { 51, 30, 0, 0, -55, -10 },\n    { 50, 30, 0, 0, -54, -10 },\n    { 49, 30, 0, 0, -53, -10 },\n    { 46, 30, 0, 0, -51, -10 },\n    { 42, 30, 0, 0, -48, -10 },\n    { 38, 30, 0, 0, -44, -10 },\n    { 33, 30, 0, 0, -41, -10 },\n    { 28, 30, 0, 0, -37, -10 },\n    { 23, 30, 0, 0, -33, -10 },\n    { 18, 30, 0, 0, -29, -10 },\n    { 13, 30, 0, 0, -25, -10 },\n    { 9, 30, 0, 0, -22, -10 },\n    { 5, 30, 0, 0, -20, -10 },\n    { 2, 30, 0, 0, -18, -10 },\n    { 0, 30, 0, 0, -17, -10 },\n    { 0, 30, 0, 0, -18, -10 },\n    { 0, 30, 0, 0, -19, -10 },\n    { 2, 30, 0, 0, -22, -10 },\n    { 6, 30, 0, 0, -25, -10 },\n    { 10, 30, 0, 0, -29, -10 },\n    { 15, 30, 0, 0, -33, -10 },\n    { 20, 30, 0, 0, -38, -10 },\n    { 25, 30, 0, 0, -43, -10 },\n    { 31, 30, 0, 0, -47, -10 },\n    { 36, 30, 0, 0, -52, -10 },\n    { 41, 30, 0, 0, -56, -10 },\n    { 45, 30, 0, 0, -59, -10 },\n    { 48, 30, 0, 0, -61, -10 },\n    { 50, 30, 0, 0, -63, -10 },\n    { 51, 30, 0, 0, -63, -10 },\n    { 50, 30, 0, 0, -62, -10 },\n    { 48, 30, 0, 0, -60, -10 },\n    { 44, 30, 0, 0, -57, -10 },\n    { 39, 30, 0, 0, -52, -10 },\n    { 34, 30, 0, 0, -47, -10 },\n    { 28, 30, 0, 0, -42, -10 },\n    { 22, 30, 0, 0, -36, -10 },\n    { 17, 30, 0, 0, -31, -10 },\n    { 11, 30, 0, 0, -26, -10 },\n    { 6, 30, 0, 0, -22, -10 },\n    { 3, 30, 0, 0, -18, -10 },\n    { 0, 30, 0, 0, -16, -10 },\n    { 0, 30, 0, 0, -15, -10 },\n    { 0, 30, 0, 0, -16, -10 },\n    { 2, 30, 0, 0, -18, -10 },\n    { 5, 30, 0, 0, -21, -10 },\n    { 9, 30, 0, 0, -25, -10 },\n    { 13, 30, 0, 0, -30, -10 },\n    { 18, 30, 0, 0, -35, -10 },\n    { 23, 30, 0, 0, -41, -10 },\n    { 28, 30, 0, 0, -46, -10 },\n    { 33, 30, 0, 0, -51, -10 },\n    { 38, 30, 0, 0, -56, -10 },\n    { 42, 30, 0, 0, -60, -10 },\n    { 46, 30, 0, 0, -63, -10 },\n    { 49, 30, 0, 0, -65, -10 },\n    { 50, 30, 0, 0, -66, -10 },\n    { 51, 30, 0, 0, -65, -10 },\n    { 50, 30, 0, 0, -65, -10 },\n    { 49, 30, 0, 0, -64, -10 },\n    { 46, 30, 0, 0, -63, -10 },\n    { 43, 30, 0, 0, -62, -10 },\n    { 39, 30, 0, 0, -61, -10 },\n    { 35, 30, 0, 0, -60, -10 },\n    { 30, 30, 0, 0, -59, -10 },\n    { 25, 30, 0, 0, -58, -10 },\n    { 20, 30, 0, 0, -56, -10 },\n    { 16, 30, 0, 0, -54, -10 },\n    { 11, 30, 0, 0, -53, -10 },\n    { 7, 30, 0, 0, -51, -10 },\n    { 4, 30, 0, 0, -49, -10 },\n    { 1, 30, 0, 0, -47, -10 },\n    { 0, 30, 0, 0, -45, -10 },\n    { -1, 30, 0, 0, -43, -10 },\n    { -2, 30, 0, 0, -41, -10 },\n    { -2, 30, 0, 0, -39, -10 },\n    { -3, 30, 0, 0, -37, -10 },\n    { -4, 30, 0, 0, -35, -10 },\n    { -4, 30, 0, 0, -33, -10 },\n    { -4, 30, 0, 0, -31, -10 },\n    { -4, 30, 0, 0, -29, -10 },\n    { -4, 30, 0, 0, -27, -10 },\n    { -4, 30, 0, 0, -25, -10 },\n    { -4, 30, 0, 0, -23, -10 },\n    { -4, 30, 0, 0, -21, -10 },\n    { -4, 30, 0, 0, -19, -10 },\n    { -4, 30, 0, 0, -17, -10 },\n    { -3, 30, 0, 0, -15, -10 },\n    { -3, 30, 0, 0, -13, -10 },\n    { -3, 30, 0, 0, -11, -10 },\n    { -2, 30, 0, 0, -10, -10 },\n    { -2, 30, 0, 0, -8, -10 },\n    { -1, 30, 0, 0, -7, -10 },\n    { -1, 30, 0, 0, -5, -10 },\n    { -1, 30, 0, 0, -4, -10 },\n    { 0, 30, 0, 0, -3, -10 },\n    { 0, 30, 0, 0, -2, -10 },\n    { 0, 30, 0, 0, -1, -10 },\n    { 0, 30, 0, 0, -1, -10 },\n    { 0, 30, 0, 0, 0, -10 },\n    { 0, 30, 0, 0, 0, -10 },\n    { 0, 30, 0, 0, 0, -10 },\n    { 0, 30, 0, 0, 0, -10 },\n    { 0, 30, 0, 0, 0, -10 },\n    { -1, 30, 0, 0, 1, -10 },\n    { -1, 30, 0, 0, 1, -10 },\n    { -2, 30, 0, 0, 1, -10 },\n    { -3, 30, 0, 0, 2, -10 },\n    { -3, 30, 0, 0, 2, -10 },\n    { -4, 30, 0, 0, 2, -10 },\n    { -4, 30, 0, 0, 2, -10 },\n    { -5, 30, 0, 0, 3, -10 },\n    { -5, 30, 0, 0, 3, -10 },\n    { -5, 30, 0, 0, 3, -10 },\n    { -5, 30, 0, 0, 3, -10 },\n    { -5, 30, 0, 0, 4, -10 },\n    { -5, 30, 0, 0, 4, -10 },\n    { -4, 30, 0, 0, 4, -10 },\n    { -3, 30, 0, 0, 4, -10 },\n    { -1, 30, 0, 0, 4, -10 },\n    { 0, 30, 0, 0, 5, -10 },\n    { 2, 30, 0, 0, 5, -10 },\n    { 5, 30, 0, 0, 5, -10 },\n    { 9, 30, 0, 0, 5, -10 },\n    { 13, 30, 0, 0, 5, -10 },\n    { 17, 30, 0, 0, 5, -10 },\n    { 22, 30, 0, 0, 6, -10 },\n    { 28, 30, 0, 0, 6, -10 },\n    { 33, 30, 0, 0, 6, -10 },\n    { 38, 30, 0, 0, 6, -10 },\n    { 44, 30, 0, 0, 6, -10 },\n    { 49, 30, 0, 0, 6, -10 },\n    { 55, 30, 0, 0, 6, -10 },\n    { 60, 30, 0, 0, 6, -10 },\n    { 64, 30, 0, 0, 6, -10 },\n    { 69, 30, 0, 0, 7, -10 },\n    { 73, 30, 0, 0, 7, -10 },\n    { 76, 30, 0, 0, 7, -10 },\n    { 78, 30, 0, 0, 7, -10 },\n    { 80, 30, 0, 0, 7, -10 },\n    { 81, 30, 0, 0, 7, -10 },\n    { 81, 30, 0, 0, 7, -10 },\n    { 79, 30, 0, 0, 7, -10 },\n    { 72, 30, 0, 0, 7, -10 },\n    { 62, 30, 0, 0, 7, -10 },\n    { 50, 30, 0, 0, 7, -10 },\n    { 36, 30, 0, 0, 7, -10 },\n    { 23, 30, 0, 0, 7, -10 },\n    { 10, 30, 0, 0, 7, -10 },\n    { 0, 30, 0, 0, 7, -10 },\n    { -7, 30, 0, 0, 7, -10 },\n    { -12, 30, 0, 0, 7, -10 },\n    { -14, 30, 0, 0, 7, -10 },\n    { -15, 30, 0, 0, 7, -10 },\n    { -16, 30, 0, 0, 7, -10 },\n    { -17, 30, 0, 0, 7, -10 },\n    { -17, 30, 0, 0, 7, -10 },\n    { -17, 30, 0, 0, 7, -10 },\n    { -17, 30, 0, 0, 7, -10 },\n    { -16, 30, 0, 0, 7, -10 },\n    { -15, 30, 0, 0, 7, -10 },\n    { -14, 30, 0, 0, 7, -10 },\n    { -13, 30, 0, 0, 7, -10 },\n    { -12, 30, 0, 0, 7, -10 },\n    { -10, 30, 0, 0, 7, -10 },\n    { -8, 30, 0, 0, 7, -10 },\n    { -6, 30, 0, 0, 7, -10 },\n    { -5, 30, 0, 0, 7, -10 },\n    { -3, 30, 0, 0, 6, -10 },\n    { -1, 30, 0, 0, 6, -10 },\n    { 0, 30, 0, 0, 6, -10 },\n    { 2, 30, 0, 0, 6, -10 },\n    { 4, 30, 0, 0, 6, -10 },\n    { 6, 30, 0, 0, 6, -10 },\n    { 8, 30, 0, 0, 6, -10 },\n    { 10, 30, 0, 0, 6, -10 },\n    { 11, 30, 0, 0, 6, -10 },\n    { 13, 30, 0, 0, 6, -10 },\n    { 15, 30, 0, 0, 6, -10 },\n    { 17, 30, 0, 0, 6, -10 },\n    { 20, 30, 0, 0, 5, -10 },\n    { 22, 30, 0, 0, 5, -10 },\n    { 25, 30, 0, 0, 5, -10 },\n    { 28, 30, 0, 0, 5, -10 },\n    { 31, 30, 0, 0, 5, -10 },\n    { 34, 30, 0, 0, 5, -10 },\n    { 37, 30, 0, 0, 5, -10 },\n    { 40, 30, 0, 0, 5, -10 },\n    { 43, 30, 0, 0, 5, -10 },\n    { 46, 30, 0, 0, 5, -10 },\n    { 50, 30, 0, 0, 4, -10 },\n    { 53, 30, 0, 0, 4, -10 },\n    { 57, 30, 0, 0, 4, -10 },\n    { 61, 30, 0, 0, 4, -10 },\n    { 65, 30, 0, 0, 4, -10 },\n    { 70, 30, 0, 0, 4, -10 },\n    { 75, 30, 0, 0, 4, -10 },\n    { 80, 30, 0, 0, 4, -10 },\n    { 85, 30, 0, 0, 4, -10 },\n    { 90, 30, 0, 0, 3, -10 },\n    { 95, 30, 0, 0, 3, -10 },\n    { 100, 30, 0, 0, 3, -10 },\n    { 105, 30, 0, 0, 3, -10 },\n    { 111, 30, 0, 0, 3, -10 },\n    { 116, 30, 0, 0, 3, -10 },\n    { 121, 30, 0, 0, 3, -10 },\n    { 125, 30, 0, 0, 3, -10 },\n    { 130, 30, 0, 0, 3, -10 },\n    { 135, 30, 0, 0, 2, -10 },\n    { 139, 30, 0, 0, 2, -10 },\n    { 143, 30, 0, 0, 2, -10 },\n    { 146, 30, 0, 0, 2, -10 },\n    { 150, 30, 0, 0, 2, -10 },\n    { 153, 30, 0, 0, 2, -10 },\n    { 155, 30, 0, 0, 2, -10 },\n    { 157, 30, 0, 0, 2, -10 },\n    { 159, 30, 0, 0, 2, -10 },\n    { 160, 30, 0, 0, 1, -10 },\n    { 161, 30, 0, 0, 1, -10 },\n    { 161, 30, 0, 0, 1, -10 },\n    { 160, 30, 0, 0, 1, -10 },\n    { 159, 30, 0, 0, 1, -10 },\n    { 156, 30, 0, 0, 1, -10 },\n    { 153, 30, 0, 0, 1, -10 },\n    { 149, 30, 0, 0, 1, -10 },\n    { 145, 30, 0, 0, 1, -10 },\n    { 140, 30, 0, 0, 1, -10 },\n    { 134, 30, 0, 0, 1, -10 },\n    { 128, 30, 0, 0, 0, -10 },\n    { 121, 30, 0, 0, 0, -10 },\n    { 114, 30, 0, 0, 0, -10 },\n    { 106, 30, 0, 0, 0, -10 },\n    { 99, 30, 0, 0, 0, -10 },\n    { 91, 30, 0, 0, 0, -10 },\n    { 83, 30, 0, 0, 0, -10 },\n    { 74, 30, 0, 0, 0, -10 },\n    { 66, 30, 0, 0, 0, -10 },\n    { 58, 30, 0, 0, 0, -10 },\n    { 50, 30, 0, 0, 0, -10 },\n    { 42, 30, 0, 0, 0, -10 },\n    { 34, 30, 0, 0, 0, -10 },\n    { 26, 30, 0, 0, 0, -10 },\n    { 19, 30, 0, 0, 0, -10 },\n    { 12, 30, 0, 0, 0, -10 },\n    { 5, 30, 0, 0, 0, -10 },\n    { 0, 30, 0, 0, 0, -10 },\n    { -4, 30, 0, 0, 0, -10 },\n    { -5, 30, 0, 0, 0, -10 },\n    { 0, 30, 0, 0, 0, -10 },\n    { 27, 30, 0, 0, 0, -10 },\n    { 50, 30, 0, 0, 0, -10 },\n    { 48, 30, 0, 0, 0, -10 },\n    { 44, 30, 0, 0, 0, -10 },\n    { 39, 30, 0, 0, 0, -10 },\n    { 32, 30, 0, 0, 0, -10 },\n    { 25, 30, 0, 0, 0, -10 },\n    { 17, 30, 0, 0, 0, -10 },\n    { 10, 30, 0, 0, 0, -10 },\n    { 5, 30, 0, 0, 0, -10 },\n    { 1, 30, 0, 0, 0, -10 },\n    { 0, 30, 0, 0, 0, -10 },\n};\n\nstatic s16 animdata_mario_intro_2[][6] = {\n    { 0, 0, 10, 0, 0, -20000 },\n    { 0, 0, 3584, 19, -3, -19864 },\n    { 0, 0, 3541, 71, -14, -19484 },\n    { 0, 0, 3471, 147, -32, -18903 },\n    { 0, 0, 3377, 236, -54, -18164 },\n    { 0, 0, 3261, 331, -80, -17307 },\n    { 0, 0, 3126, 421, -108, -16377 },\n    { 0, 0, 2974, 497, -139, -15414 },\n    { 0, 0, 2807, 549, -170, -14462 },\n    { 0, 0, 2627, 570, -202, -13563 },\n    { 0, 0, 2438, 497, -253, -12576 },\n    { 0, 0, 2240, 328, -325, -11395 },\n    { 0, 0, 2037, 140, -384, -10116 },\n    { 0, 0, 1830, 10, -396, -8835 },\n    { 0, 0, 1623, -52, -350, -7546 },\n    { 0, 0, 1417, -90, -271, -6206 },\n    { 0, 0, 1214, -109, -174, -4859 },\n    { 0, 0, 1017, -117, -77, -3545 },\n    { 0, 0, 829, -119, 2, -2306 },\n    { 0, 0, 651, -93, 64, -1110 },\n    { 0, 0, 486, -40, 111, -47 },\n    { 0, 0, 336, 0, 136, 661 },\n    { 0, 0, 203, 11, 127, 833 },\n    { 0, 0, 90, 9, 96, 650 },\n    { 0, 0, 0, 7, 63, 430 },\n    { 0, 0, -70, 3, 30, 203 },\n    { 0, 0, -125, 0, 0, 0 },\n    { 0, 0, -166, 0, -21, -38 },\n    { 0, 0, -193, 0, -37, -19 },\n    { 0, 0, -208, 0, -44, 0 },\n    { 0, 0, -213, 0, -40, 0 },\n    { 0, 0, -208, 0, -32, 0 },\n    { 0, 0, -196, 0, -21, 0 },\n    { 0, 0, -177, 0, -10, 0 },\n    { 0, 0, -152, 0, 0, 0 },\n    { 0, 0, -124, 0, 0, 0 },\n    { 0, 0, -92, 0, 0, 0 },\n    { 0, 0, -59, 0, 0, 0 },\n    { 0, 0, -26, 0, 0, 0 },\n    { 0, 0, 4, 0, 0, 0 },\n    { 0, 0, 34, 0, 0, 0 },\n    { 0, 0, 59, 0, 0, 0 },\n    { 0, 0, 80, 0, 0, 0 },\n    { 0, 0, 94, 0, 0, 0 },\n    { 0, 0, 100, 0, 0, 0 },\n    { 0, 0, 100, 0, 0, 0 },\n    { 0, 0, 97, 0, 0, 0 },\n    { 0, 0, 93, 0, 0, 0 },\n    { 1, 0, 86, 0, 0, 0 },\n    { 1, 0, 79, 0, 0, 0 },\n    { 1, 0, 69, 0, 0, 0 },\n    { 1, 0, 59, 0, 0, 0 },\n    { 2, 1, 48, 0, 0, 0 },\n    { 2, 1, 37, 0, 0, 0 },\n    { 2, 1, 24, 0, 0, 0 },\n    { 3, 1, 12, 0, 0, 0 },\n    { 3, 1, 0, 0, 0, 0 },\n    { 4, 2, -12, 0, 0, 0 },\n    { 4, 2, -24, 0, 0, 0 },\n    { 5, 2, -35, 0, 0, 0 },\n    { 5, 2, -45, 0, 0, 0 },\n    { 6, 2, -55, 0, 0, 0 },\n    { 7, 3, -63, 0, 0, 0 },\n    { 8, 3, -70, 0, 0, 0 },\n    { 8, 3, -75, 0, 0, 0 },\n    { 9, 3, -78, 0, 0, 0 },\n    { 10, 3, -80, 0, 0, 0 },\n    { 11, 3, -81, 0, 0, 0 },\n    { 12, 3, -80, 0, 0, 0 },\n    { 14, 3, -79, 0, 0, 0 },\n    { 15, 2, -77, 0, 0, 0 },\n    { 17, 2, -74, 0, 0, 0 },\n    { 18, 2, -70, 0, 0, 0 },\n    { 20, 2, -66, 0, 0, 0 },\n    { 22, 2, -61, 0, 0, 0 },\n    { 23, 2, -56, 0, 0, 0 },\n    { 25, 1, -51, 0, 0, 0 },\n    { 27, 1, -45, 0, 0, 0 },\n    { 28, 1, -39, 0, 0, 0 },\n    { 30, 1, -34, 0, 0, 0 },\n    { 31, 1, -28, 0, 0, 0 },\n    { 33, 0, -23, 0, 0, 0 },\n    { 34, 0, -18, 0, 0, 0 },\n    { 35, 0, -13, 0, 0, 0 },\n    { 36, 0, -9, 0, 0, 0 },\n    { 37, 0, -6, 0, 0, 0 },\n    { 37, 0, -3, 0, 0, 0 },\n    { 37, 0, -1, 0, 0, 0 },\n    { 37, 0, 0, 0, 0, 0 },\n    { 37, 0, 0, 0, 0, 0 },\n    { 37, 0, 1, 0, 0, 0 },\n    { 37, 0, 2, 0, 0, 0 },\n    { 37, 0, 2, 0, 0, 0 },\n    { 36, 0, 3, 0, 0, 0 },\n    { 36, 0, 4, 0, 0, 0 },\n    { 36, 0, 4, 0, 0, 0 },\n    { 36, 0, 5, 0, 0, 0 },\n    { 35, 0, 5, 0, 0, 0 },\n    { 35, 0, 5, 0, 0, 0 },\n    { 34, 0, 6, 0, 0, 0 },\n    { 34, 0, 6, 0, 0, 0 },\n    { 34, 0, 7, 0, 0, 0 },\n    { 33, 0, 7, 0, 0, 0 },\n    { 33, 0, 7, 0, 0, 0 },\n    { 32, 0, 7, 0, 0, 0 },\n    { 32, 0, 8, 0, 0, 0 },\n    { 31, 0, 8, 0, 0, 0 },\n    { 31, 0, 8, 0, 0, 0 },\n    { 30, 0, 8, 0, 0, 0 },\n    { 29, 0, 8, 0, 0, 0 },\n    { 29, 0, 8, 0, 0, 0 },\n    { 28, 0, 8, 0, 0, 0 },\n    { 27, 0, 8, 0, 0, 0 },\n    { 27, 0, 8, 0, 0, 0 },\n    { 26, 0, 8, 0, 0, 0 },\n    { 26, 0, 8, 0, 0, 0 },\n    { 25, 0, 8, 0, 0, 0 },\n    { 24, 0, 8, 0, 0, 0 },\n    { 23, 0, 8, 0, 0, 0 },\n    { 23, 0, 8, 0, 0, 0 },\n    { 22, 0, 8, 0, 0, 0 },\n    { 21, 0, 8, 0, 0, 0 },\n    { 21, 0, 8, 0, 0, 0 },\n    { 20, 0, 8, 0, 0, 0 },\n    { 19, 0, 8, 0, 0, 0 },\n    { 19, 0, 7, 0, 0, 0 },\n    { 18, 0, 7, 0, 0, 0 },\n    { 17, 0, 7, 0, 0, 0 },\n    { 16, 0, 7, 0, 0, 0 },\n    { 16, 0, 7, 0, 0, 0 },\n    { 15, 0, 6, 0, 0, 0 },\n    { 14, 0, 6, 0, 0, 0 },\n    { 14, 0, 6, 0, 0, 0 },\n    { 13, 0, 6, 0, 0, 0 },\n    { 12, 0, 5, 0, 0, 0 },\n    { 12, 0, 5, 0, 0, 0 },\n    { 11, 0, 5, 0, 0, 0 },\n    { 10, 0, 5, 0, 0, 0 },\n    { 10, 0, 4, 0, 0, 0 },\n    { 9, 0, 4, 0, 0, 0 },\n    { 8, 0, 4, 0, 0, 0 },\n    { 8, 0, 4, 0, 0, 0 },\n    { 7, 0, 3, 0, 0, 0 },\n    { 7, 0, 3, 0, 0, 0 },\n    { 6, 0, 3, 0, 0, 0 },\n    { 5, 0, 3, 0, 0, 0 },\n    { 5, 0, 2, 0, 0, 0 },\n    { 4, 0, 2, 0, 0, 0 },\n    { 4, 0, 2, 0, 0, 0 },\n    { 3, 0, 2, 0, 0, 0 },\n    { 3, 0, 1, 0, 0, 0 },\n    { 3, 0, 1, 0, 0, 0 },\n    { 2, 0, 1, 0, 0, 0 },\n    { 2, 0, 1, 0, 0, 0 },\n    { 1, 0, 1, 0, 0, 0 },\n    { 1, 0, 0, 0, 0, 0 },\n    { 1, 0, 0, 0, 0, 0 },\n    { 1, 0, 0, 0, 0, 0 },\n    { 0, 0, 0, 0, 0, 0 },\n    { 0, 0, 0, 0, 0, 0 },\n    { 0, 0, 0, 0, 0, 0 },\n    { 0, 0, 0, 0, 0, 0 },\n    { 0, 0, 0, 0, 0, 0 },\n    { 0, 0, 0, 0, 0, 0 },\n    { 0, 0, 0, 0, 0, 0 },\n    { 0, 0, 0, 0, 0, 0 },\n};\n\nstruct AnimDataInfo anim_mario_intro[] = {\n    { ARRAY_COUNT(animdata_mario_intro_1), GD_ANIM_ROT3S_POS3S, animdata_mario_intro_1 },\n    { ARRAY_COUNT(animdata_mario_intro_2), GD_ANIM_ROT3S_POS3S, animdata_mario_intro_2 },\n    END_ANIMDATA_INFO_ARR,\n};\n\nstatic s16 animdata_silver_star_1[][6] = {\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1300, 1500, 2600 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1253, 1459, 2536 },  { 0, 0, 0, -1141, 1363, 2382 },\n    { 0, 0, 0, -977, 1224, 2157 },   { 0, 0, 0, -774, 1054, 1880 },   { 0, 0, 0, -548, 866, 1569 },\n    { 0, 0, 0, -312, 672, 1246 },    { 0, 0, 0, -80, 487, 928 },      { 0, 0, 0, 116, 389, 665 },\n    { 0, 0, 0, -62, 484, 790 },      { 0, 0, 0, -89, 400, 735 },      { 0, 0, 0, -90, 407, 739 },\n    { 0, 0, 0, -80, 462, 770 },      { 0, 0, 0, -38, 498, 798 },      { 0, 0, 0, -29, 499, 796 },\n    { 0, 0, 0, -42, 497, 798 },      { 0, 0, 0, -44, 496, 798 },      { 0, 0, 0, -38, 498, 798 },\n    { 0, 0, 0, -28, 500, 796 },      { 0, 0, 0, -18, 500, 791 },      { 0, 0, 0, -11, 499, 787 },\n    { 0, 0, 0, -11, 499, 787 },      { 0, 0, 0, -19, 500, 792 },      { 0, 0, 0, -41, 497, 798 },\n    { 0, 0, 0, -71, 475, 781 },      { 0, 0, 0, -89, 428, 749 },      { 0, 0, 0, -87, 392, 731 },\n    { 0, 0, 0, -82, 380, 723 },      { 0, 0, 0, -82, 380, 724 },      { 0, 0, 0, -86, 387, 728 },\n    { 0, 0, 0, -88, 395, 732 },      { 0, 0, 0, -88, 395, 733 },      { 0, 0, 0, -83, 382, 725 },\n    { 0, 0, 0, -70, 368, 713 },      { 0, 0, 0, -59, 368, 705 },      { 0, 0, 0, -55, 369, 702 },\n    { 0, 0, 0, -54, 370, 702 },      { 0, 0, 0, -56, 369, 703 },      { 0, 0, 0, -59, 368, 705 },\n    { 0, 0, 0, -59, 368, 705 },      { 0, 0, 0, -57, 369, 703 },      { 0, 0, 0, -49, 371, 698 },\n    { 0, 0, 0, -35, 378, 689 },      { 0, 0, 0, -11, 389, 675 },      { 0, 0, 0, 25, 396, 655 },\n    { 0, 0, 0, 58, 360, 644 },       { 0, 0, 0, 65, 303, 647 },       { 0, 0, 0, 62, 240, 653 },\n    { 0, 0, 0, 56, 174, 660 },       { 0, 0, 0, 48, 104, 668 },       { 0, 0, 0, 40, 31, 678 },\n    { 0, 0, 0, 32, -44, 689 },       { 0, 0, 0, 27, -122, 701 },      { 0, 0, 0, 25, -201, 715 },\n    { 0, 0, 0, 34, -281, 732 },      { 0, 0, 0, 72, -350, 756 },      { 0, 0, 0, 123, -378, 780 },\n    { 0, 0, 0, 154, -386, 793 },     { 0, 0, 0, 175, -388, 802 },     { 0, 0, 0, 200, -389, 811 },\n    { 0, 0, 0, 244, -388, 827 },     { 0, 0, 0, 322, -376, 854 },     { 0, 0, 0, 451, -343, 889 },\n    { 0, 0, 0, 709, -240, 937 },     { 0, 0, 0, 997, -15, 896 },      { 0, 0, 0, 1106, 176, 726 },\n    { 0, 0, 0, 1146, 282, 615 },     { 0, 0, 0, 1170, 377, 508 },     { 0, 0, 0, 1182, 461, 408 },\n    { 0, 0, 0, 1183, 537, 315 },     { 0, 0, 0, 1173, 605, 228 },     { 0, 0, 0, 1155, 665, 148 },\n    { 0, 0, 0, 1134, 718, 72 },      { 0, 0, 0, 1110, 766, 2 },       { 0, 0, 0, 1084, 810, -64 },\n    { 0, 0, 0, 1056, 852, -128 },    { 0, 0, 0, 1026, 891, -191 },    { 0, 0, 0, 994, 930, -252 },\n    { 0, 0, 0, 958, 967, -314 },     { 0, 0, 0, 918, 1004, -377 },    { 0, 0, 0, 872, 1041, -440 },\n    { 0, 0, 0, 817, 1077, -505 },    { 0, 0, 0, 750, 1111, -569 },    { 0, 0, 0, 679, 1136, -624 },\n    { 0, 0, 0, 615, 1153, -666 },    { 0, 0, 0, 560, 1164, -697 },    { 0, 0, 0, 513, 1172, -721 },\n    { 0, 0, 0, 472, 1177, -740 },    { 0, 0, 0, 437, 1180, -755 },    { 0, 0, 0, 404, 1183, -769 },\n    { 0, 0, 0, 372, 1185, -781 },    { 0, 0, 0, 339, 1187, -792 },    { 0, 0, 0, 302, 1188, -804 },\n    { 0, 0, 0, 261, 1189, -816 },    { 0, 0, 0, 229, 1189, -825 },    { 0, 0, 0, 207, 1188, -830 },\n    { 0, 0, 0, 193, 1188, -833 },    { 0, 0, 0, 185, 1188, -835 },    { 0, 0, 0, 179, 1188, -836 },\n    { 0, 0, 0, 175, 1188, -837 },    { 0, 0, 0, 168, 1187, -839 },    { 0, 0, 0, 157, 1187, -841 },\n    { 0, 0, 0, 140, 1186, -844 },    { 0, 0, 0, 114, 1185, -849 },    { 0, 0, 0, 76, 1183, -855 },\n    { 0, 0, 0, 23, 1179, -860 },     { 0, 0, 0, -44, 1173, -864 },    { 0, 0, 0, -129, 1162, -864 },\n    { 0, 0, 0, -225, 1147, -857 },   { 0, 0, 0, -333, 1125, -843 },   { 0, 0, 0, -450, 1097, -817 },\n    { 0, 0, 0, -571, 1059, -776 },   { 0, 0, 0, -691, 1008, -714 },   { 0, 0, 0, -795, 941, -623 },\n    { 0, 0, 0, -874, 860, -505 },    { 0, 0, 0, -931, 779, -381 },    { 0, 0, 0, -971, 703, -263 },\n    { 0, 0, 0, -996, 631, -150 },    { 0, 0, 0, -1006, 562, -39 },    { 0, 0, 0, -997, 494, 70 },\n    { 0, 0, 0, -956, 429, 179 },     { 0, 0, 0, -861, 376, 269 },     { 0, 0, 0, -731, 334, 340 },\n    { 0, 0, 0, -588, 301, 398 },     { 0, 0, 0, -450, 276, 446 },     { 0, 0, 0, -319, 257, 486 },\n    { 0, 0, 0, -199, 243, 522 },     { 0, 0, 0, -91, 235, 556 },      { 0, 0, 0, 1, 236, 591 },\n    { 0, 0, 0, 52, 277, 629 },       { 0, 0, 0, 27, 339, 638 },       { 0, 0, 0, 1, 386, 638 },\n    { 0, 0, 0, -17, 425, 637 },      { 0, 0, 0, -26, 459, 636 },      { 0, 0, 0, -22, 485, 636 },\n    { 0, 0, 0, -10, 501, 638 },      { 0, 0, 0, 1, 509, 639 },        { 0, 0, 0, 9, 513, 640 },\n    { 0, 0, 0, 14, 516, 641 },       { 0, 0, 0, 17, 517, 641 },       { 0, 0, 0, 19, 518, 642 },\n    { 0, 0, 0, 20, 518, 642 },       { 0, 0, 0, 22, 519, 642 },       { 0, 0, 0, 26, 521, 642 },\n    { 0, 0, 0, 32, 523, 643 },       { 0, 0, 0, 42, 527, 644 },       { 0, 0, 0, 57, 531, 645 },\n    { 0, 0, 0, 78, 538, 646 },       { 0, 0, 0, 106, 545, 648 },      { 0, 0, 0, 142, 554, 651 },\n    { 0, 0, 0, 185, 563, 653 },      { 0, 0, 0, 234, 572, 656 },      { 0, 0, 0, 287, 582, 658 },\n    { 0, 0, 0, 344, 591, 661 },      { 0, 0, 0, 404, 599, 664 },      { 0, 0, 0, 465, 607, 667 },\n    { 0, 0, 0, 528, 613, 671 },      { 0, 0, 0, 591, 617, 675 },      { 0, 0, 0, 653, 617, 679 },\n    { 0, 0, 0, 681, 587, 691 },      { 0, 0, 0, 640, 546, 703 },      { 0, 0, 0, 598, 512, 712 },\n    { 0, 0, 0, 557, 482, 719 },      { 0, 0, 0, 520, 458, 724 },      { 0, 0, 0, 486, 436, 728 },\n    { 0, 0, 0, 456, 418, 731 },      { 0, 0, 0, 428, 402, 734 },      { 0, 0, 0, 402, 387, 736 },\n    { 0, 0, 0, 379, 375, 737 },      { 0, 0, 0, 356, 363, 739 },      { 0, 0, 0, 335, 353, 739 },\n    { 0, 0, 0, 314, 343, 740 },      { 0, 0, 0, 293, 333, 740 },      { 0, 0, 0, 271, 324, 740 },\n    { 0, 0, 0, 248, 314, 740 },      { 0, 0, 0, 223, 305, 739 },      { 0, 0, 0, 196, 295, 738 },\n    { 0, 0, 0, 166, 285, 735 },      { 0, 0, 0, 131, 275, 732 },      { 0, 0, 0, 93, 266, 726 },\n    { 0, 0, 0, 50, 259, 718 },       { 0, 0, 0, 1, 252, 709 },        { 0, 0, 0, -53, 247, 699 },\n    { 0, 0, 0, -109, 243, 689 },     { 0, 0, 0, -161, 241, 679 },     { 0, 0, 0, -209, 239, 669 },\n    { 0, 0, 0, -255, 239, 660 },     { 0, 0, 0, -300, 238, 650 },     { 0, 0, 0, -345, 239, 640 },\n    { 0, 0, 0, -390, 240, 629 },     { 0, 0, 0, -437, 242, 617 },     { 0, 0, 0, -486, 244, 604 },\n    { 0, 0, 0, -540, 248, 589 },     { 0, 0, 0, -597, 253, 571 },     { 0, 0, 0, -660, 260, 549 },\n    { 0, 0, 0, -727, 270, 522 },     { 0, 0, 0, -800, 285, 487 },     { 0, 0, 0, -875, 306, 441 },\n    { 0, 0, 0, -943, 339, 374 },     { 0, 0, 0, -987, 389, 284 },     { 0, 0, 0, -1007, 458, 171 },\n    { 0, 0, 0, -1004, 544, 35 },     { 0, 0, 0, -977, 643, -115 },    { 0, 0, 0, -929, 748, -276 },\n    { 0, 0, 0, -856, 852, -440 },    { 0, 0, 0, -749, 943, -597 },    { 0, 0, 0, -605, 1002, -724 },\n    { 0, 0, 0, -454, 1040, -819 },   { 0, 0, 0, -308, 1066, -888 },   { 0, 0, 0, -172, 1086, -939 },\n    { 0, 0, 0, -49, 1102, -973 },    { 0, 0, 0, 61, 1116, -993 },     { 0, 0, 0, 160, 1124, -1003 },\n    { 0, 0, 0, 247, 1129, -1005 },   { 0, 0, 0, 323, 1132, -1002 },   { 0, 0, 0, 389, 1133, -996 },\n    { 0, 0, 0, 447, 1134, -989 },    { 0, 0, 0, 498, 1134, -980 },    { 0, 0, 0, 544, 1134, -970 },\n    { 0, 0, 0, 585, 1134, -959 },    { 0, 0, 0, 624, 1134, -947 },    { 0, 0, 0, 662, 1133, -934 },\n    { 0, 0, 0, 699, 1133, -918 },    { 0, 0, 0, 738, 1133, -901 },    { 0, 0, 0, 778, 1132, -879 },\n    { 0, 0, 0, 821, 1132, -851 },    { 0, 0, 0, 866, 1133, -816 },    { 0, 0, 0, 908, 1134, -775 },\n    { 0, 0, 0, 945, 1135, -735 },    { 0, 0, 0, 977, 1137, -695 },    { 0, 0, 0, 1006, 1138, -657 },\n    { 0, 0, 0, 1031, 1139, -619 },   { 0, 0, 0, 1053, 1140, -584 },   { 0, 0, 0, 1074, 1141, -549 },\n    { 0, 0, 0, 1092, 1141, -515 },   { 0, 0, 0, 1110, 1141, -481 },   { 0, 0, 0, 1125, 1141, -448 },\n    { 0, 0, 0, 1140, 1140, -416 },   { 0, 0, 0, 1154, 1139, -382 },   { 0, 0, 0, 1168, 1138, -349 },\n    { 0, 0, 0, 1180, 1136, -314 },   { 0, 0, 0, 1193, 1133, -277 },   { 0, 0, 0, 1204, 1129, -239 },\n    { 0, 0, 0, 1214, 1125, -199 },   { 0, 0, 0, 1224, 1118, -156 },   { 0, 0, 0, 1231, 1109, -111 },\n    { 0, 0, 0, 1236, 1096, -63 },    { 0, 0, 0, 1239, 1082, -17 },    { 0, 0, 0, 1241, 1068, 21 },\n    { 0, 0, 0, 1240, 1055, 54 },     { 0, 0, 0, 1240, 1043, 83 },     { 0, 0, 0, 1238, 1032, 108 },\n    { 0, 0, 0, 1236, 1022, 129 },    { 0, 0, 0, 1234, 1013, 149 },    { 0, 0, 0, 1232, 1004, 168 },\n    { 0, 0, 0, 1229, 995, 186 },     { 0, 0, 0, 1226, 986, 205 },     { 0, 0, 0, 1222, 976, 226 },\n    { 0, 0, 0, 1218, 965, 248 },     { 0, 0, 0, 1211, 952, 274 },     { 0, 0, 0, 1203, 937, 302 },\n    { 0, 0, 0, 1192, 920, 335 },     { 0, 0, 0, 1178, 900, 373 },     { 0, 0, 0, 1158, 879, 416 },\n    { 0, 0, 0, 1131, 855, 465 },     { 0, 0, 0, 1095, 830, 518 },     { 0, 0, 0, 1046, 806, 575 },\n    { 0, 0, 0, 980, 786, 634 },      { 0, 0, 0, 867, 768, 713 },      { 0, 0, 0, 682, 754, 812 },\n    { 0, 0, 0, 446, 749, 910 },      { 0, 0, 0, 182, 750, 989 },      { 0, 0, 0, -87, 752, 1023 },\n    { 0, 0, 0, -323, 758, 988 },     { 0, 0, 0, -511, 767, 919 },     { 0, 0, 0, -664, 776, 834 },\n    { 0, 0, 0, -792, 785, 734 },     { 0, 0, 0, -899, 791, 611 },     { 0, 0, 0, -966, 793, 474 },\n    { 0, 0, 0, -999, 791, 354 },     { 0, 0, 0, -1016, 789, 252 },    { 0, 0, 0, -1024, 788, 164 },\n    { 0, 0, 0, -1027, 787, 82 },     { 0, 0, 0, -1026, 786, 0 },      { 0, 0, 0, -1019, 787, -87 },\n    { 0, 0, 0, -1005, 788, -188 },   { 0, 0, 0, -978, 795, -307 },    { 0, 0, 0, -935, 807, -423 },\n    { 0, 0, 0, -887, 823, -520 },    { 0, 0, 0, -836, 839, -603 },    { 0, 0, 0, -781, 856, -679 },\n    { 0, 0, 0, -719, 873, -751 },    { 0, 0, 0, -644, 892, -822 },    { 0, 0, 0, -551, 911, -892 },\n    { 0, 0, 0, -429, 928, -955 },    { 0, 0, 0, -289, 941, -997 },    { 0, 0, 0, -151, 951, -1021 },\n    { 0, 0, 0, -17, 960, -1034 },    { 0, 0, 0, 112, 967, -1038 },    { 0, 0, 0, 238, 971, -1033 },\n    { 0, 0, 0, 360, 973, -1019 },    { 0, 0, 0, 476, 971, -994 },     { 0, 0, 0, 587, 964, -958 },\n    { 0, 0, 0, 688, 950, -904 },     { 0, 0, 0, 770, 929, -837 },     { 0, 0, 0, 832, 905, -767 },\n    { 0, 0, 0, 882, 882, -701 },     { 0, 0, 0, 923, 859, -640 },     { 0, 0, 0, 957, 838, -583 },\n    { 0, 0, 0, 986, 818, -530 },     { 0, 0, 0, 1012, 800, -480 },    { 0, 0, 0, 1034, 782, -431 },\n    { 0, 0, 0, 1055, 764, -384 },    { 0, 0, 0, 1075, 747, -336 },    { 0, 0, 0, 1093, 729, -285 },\n    { 0, 0, 0, 1111, 710, -232 },    { 0, 0, 0, 1128, 690, -174 },    { 0, 0, 0, 1143, 669, -110 },\n    { 0, 0, 0, 1156, 646, -38 },     { 0, 0, 0, 1164, 622, 43 },      { 0, 0, 0, 1163, 599, 130 },\n    { 0, 0, 0, 1147, 580, 215 },     { 0, 0, 0, 1110, 570, 292 },     { 0, 0, 0, 1054, 567, 356 },\n    { 0, 0, 0, 988, 568, 409 },      { 0, 0, 0, 918, 572, 453 },      { 0, 0, 0, 847, 578, 492 },\n    { 0, 0, 0, 774, 585, 526 },      { 0, 0, 0, 702, 593, 558 },      { 0, 0, 0, 630, 602, 588 },\n    { 0, 0, 0, 559, 611, 616 },      { 0, 0, 0, 489, 620, 644 },      { 0, 0, 0, 420, 630, 671 },\n    { 0, 0, 0, 352, 640, 699 },      { 0, 0, 0, 285, 649, 726 },      { 0, 0, 0, 220, 659, 755 },\n    { 0, 0, 0, 156, 669, 786 },      { 0, 0, 0, 95, 679, 820 },       { 0, 0, 0, 37, 688, 857 },\n    { 0, 0, 0, -16, 697, 898 },      { 0, 0, 0, -70, 704, 940 },      { 0, 0, 0, -121, 711, 984 },\n    { 0, 0, 0, -171, 718, 1028 },    { 0, 0, 0, -218, 725, 1074 },    { 0, 0, 0, -263, 733, 1121 },\n    { 0, 0, 0, -306, 742, 1170 },    { 0, 0, 0, -347, 753, 1219 },    { 0, 0, 0, -387, 766, 1268 },\n    { 0, 0, 0, -425, 781, 1317 },    { 0, 0, 0, -463, 798, 1366 },    { 0, 0, 0, -499, 817, 1414 },\n    { 0, 0, 0, -535, 837, 1462 },    { 0, 0, 0, -571, 859, 1509 },    { 0, 0, 0, -602, 880, 1559 },\n    { 0, 0, 0, -629, 901, 1610 },    { 0, 0, 0, -654, 921, 1662 },    { 0, 0, 0, -676, 940, 1713 },\n    { 0, 0, 0, -698, 959, 1764 },    { 0, 0, 0, -718, 978, 1815 },    { 0, 0, 0, -737, 997, 1864 },\n    { 0, 0, 0, -756, 1015, 1913 },   { 0, 0, 0, -774, 1034, 1961 },   { 0, 0, 0, -792, 1051, 2009 },\n    { 0, 0, 0, -809, 1069, 2055 },   { 0, 0, 0, -826, 1087, 2100 },   { 0, 0, 0, -843, 1104, 2144 },\n    { 0, 0, 0, -859, 1121, 2187 },   { 0, 0, 0, -875, 1138, 2229 },   { 0, 0, 0, -891, 1155, 2270 },\n    { 0, 0, 0, -907, 1171, 2309 },   { 0, 0, 0, -923, 1188, 2347 },   { 0, 0, 0, -939, 1204, 2384 },\n    { 0, 0, 0, -954, 1220, 2420 },   { 0, 0, 0, -970, 1236, 2454 },   { 0, 0, 0, -986, 1252, 2487 },\n    { 0, 0, 0, -1002, 1268, 2519 },  { 0, 0, 0, -1018, 1284, 2548 },  { 0, 0, 0, -1034, 1300, 2576 },\n    { 0, 0, 0, -1050, 1316, 2603 },  { 0, 0, 0, -1067, 1331, 2627 },  { 0, 0, 0, -1084, 1347, 2649 },\n    { 0, 0, 0, -1102, 1363, 2669 },  { 0, 0, 0, -1121, 1379, 2686 },  { 0, 0, 0, -1140, 1395, 2699 },\n    { 0, 0, 0, -1160, 1411, 2708 },  { 0, 0, 0, -1180, 1427, 2711 },  { 0, 0, 0, -1199, 1441, 2709 },\n    { 0, 0, 0, -1217, 1453, 2702 },  { 0, 0, 0, -1233, 1464, 2692 },  { 0, 0, 0, -1246, 1472, 2680 },\n    { 0, 0, 0, -1258, 1479, 2667 },  { 0, 0, 0, -1268, 1484, 2654 },  { 0, 0, 0, -1276, 1488, 2641 },\n    { 0, 0, 0, -1284, 1492, 2629 },  { 0, 0, 0, -1290, 1495, 2618 },  { 0, 0, 0, -1295, 1498, 2608 },\n    { 0, 0, 0, -1300, 1500, 2600 },  { 0, 0, 0, -1303, 1501, 2591 },  { 0, 0, 0, -1308, 1503, 2582 },\n    { 0, 0, 0, -1312, 1505, 2573 },  { 0, 0, 0, -1316, 1506, 2563 },  { 0, 0, 0, -1320, 1508, 2552 },\n    { 0, 0, 0, -1324, 1510, 2541 },  { 0, 0, 0, -1329, 1511, 2529 },  { 0, 0, 0, -1333, 1513, 2517 },\n    { 0, 0, 0, -1338, 1514, 2504 },  { 0, 0, 0, -1342, 1516, 2491 },  { 0, 0, 0, -1346, 1517, 2478 },\n    { 0, 0, 0, -1351, 1518, 2464 },  { 0, 0, 0, -1355, 1520, 2449 },  { 0, 0, 0, -1360, 1521, 2434 },\n    { 0, 0, 0, -1365, 1522, 2418 },  { 0, 0, 0, -1369, 1524, 2402 },  { 0, 0, 0, -1374, 1525, 2386 },\n    { 0, 0, 0, -1379, 1526, 2369 },  { 0, 0, 0, -1383, 1527, 2351 },  { 0, 0, 0, -1388, 1528, 2334 },\n    { 0, 0, 0, -1393, 1529, 2315 },  { 0, 0, 0, -1398, 1530, 2297 },  { 0, 0, 0, -1402, 1531, 2278 },\n    { 0, 0, 0, -1407, 1532, 2258 },  { 0, 0, 0, -1412, 1533, 2238 },  { 0, 0, 0, -1417, 1534, 2218 },\n    { 0, 0, 0, -1422, 1535, 2197 },  { 0, 0, 0, -1427, 1536, 2176 },  { 0, 0, 0, -1432, 1536, 2155 },\n    { 0, 0, 0, -1437, 1537, 2133 },  { 0, 0, 0, -1442, 1538, 2111 },  { 0, 0, 0, -1447, 1538, 2089 },\n    { 0, 0, 0, -1452, 1539, 2066 },  { 0, 0, 0, -1457, 1540, 2043 },  { 0, 0, 0, -1462, 1540, 2019 },\n    { 0, 0, 0, -1467, 1541, 1995 },  { 0, 0, 0, -1472, 1541, 1971 },  { 0, 0, 0, -1477, 1542, 1947 },\n    { 0, 0, 0, -1482, 1542, 1922 },  { 0, 0, 0, -1487, 1543, 1897 },  { 0, 0, 0, -1492, 1543, 1871 },\n    { 0, 0, 0, -1497, 1544, 1846 },  { 0, 0, 0, -1503, 1544, 1819 },  { 0, 0, 0, -1508, 1544, 1793 },\n    { 0, 0, 0, -1513, 1545, 1767 },  { 0, 0, 0, -1518, 1545, 1740 },  { 0, 0, 0, -1523, 1545, 1713 },\n    { 0, 0, 0, -1529, 1546, 1685 },  { 0, 0, 0, -1534, 1546, 1658 },  { 0, 0, 0, -1539, 1546, 1630 },\n    { 0, 0, 0, -1544, 1546, 1602 },  { 0, 0, 0, -1550, 1546, 1573 },  { 0, 0, 0, -1555, 1546, 1545 },\n    { 0, 0, 0, -1560, 1546, 1516 },  { 0, 0, 0, -1565, 1547, 1487 },  { 0, 0, 0, -1571, 1547, 1458 },\n    { 0, 0, 0, -1576, 1547, 1428 },  { 0, 0, 0, -1581, 1547, 1399 },  { 0, 0, 0, -1586, 1547, 1369 },\n    { 0, 0, 0, -1592, 1547, 1339 },  { 0, 0, 0, -1597, 1547, 1309 },  { 0, 0, 0, -1602, 1546, 1278 },\n    { 0, 0, 0, -1608, 1546, 1248 },  { 0, 0, 0, -1613, 1546, 1217 },  { 0, 0, 0, -1618, 1546, 1186 },\n    { 0, 0, 0, -1623, 1546, 1155 },  { 0, 0, 0, -1629, 1546, 1124 },  { 0, 0, 0, -1634, 1546, 1093 },\n    { 0, 0, 0, -1639, 1545, 1062 },  { 0, 0, 0, -1645, 1545, 1030 },  { 0, 0, 0, -1650, 1545, 998 },\n    { 0, 0, 0, -1655, 1545, 967 },   { 0, 0, 0, -1660, 1544, 935 },   { 0, 0, 0, -1666, 1544, 903 },\n    { 0, 0, 0, -1671, 1544, 871 },   { 0, 0, 0, -1676, 1543, 838 },   { 0, 0, 0, -1681, 1543, 806 },\n    { 0, 0, 0, -1687, 1543, 774 },   { 0, 0, 0, -1692, 1542, 741 },   { 0, 0, 0, -1697, 1542, 709 },\n    { 0, 0, 0, -1702, 1542, 676 },   { 0, 0, 0, -1708, 1541, 643 },   { 0, 0, 0, -1713, 1541, 611 },\n    { 0, 0, 0, -1718, 1540, 578 },   { 0, 0, 0, -1723, 1540, 545 },   { 0, 0, 0, -1728, 1539, 512 },\n    { 0, 0, 0, -1734, 1539, 480 },   { 0, 0, 0, -1739, 1539, 447 },   { 0, 0, 0, -1744, 1538, 414 },\n    { 0, 0, 0, -1749, 1538, 381 },   { 0, 0, 0, -1754, 1537, 348 },   { 0, 0, 0, -1759, 1536, 315 },\n    { 0, 0, 0, -1764, 1536, 282 },   { 0, 0, 0, -1769, 1535, 249 },   { 0, 0, 0, -1774, 1535, 217 },\n    { 0, 0, 0, -1779, 1534, 184 },   { 0, 0, 0, -1784, 1534, 151 },   { 0, 0, 0, -1789, 1533, 118 },\n    { 0, 0, 0, -1794, 1533, 85 },    { 0, 0, 0, -1799, 1532, 53 },    { 0, 0, 0, -1804, 1531, 20 },\n    { 0, 0, 0, -1809, 1531, -11 },   { 0, 0, 0, -1814, 1530, -44 },   { 0, 0, 0, -1819, 1530, -76 },\n    { 0, 0, 0, -1824, 1529, -109 },  { 0, 0, 0, -1829, 1528, -141 },  { 0, 0, 0, -1834, 1528, -173 },\n    { 0, 0, 0, -1839, 1527, -205 },  { 0, 0, 0, -1843, 1527, -237 },  { 0, 0, 0, -1848, 1526, -269 },\n    { 0, 0, 0, -1853, 1525, -301 },  { 0, 0, 0, -1858, 1525, -332 },  { 0, 0, 0, -1862, 1524, -364 },\n    { 0, 0, 0, -1867, 1524, -395 },  { 0, 0, 0, -1872, 1523, -427 },  { 0, 0, 0, -1876, 1522, -458 },\n    { 0, 0, 0, -1881, 1522, -489 },  { 0, 0, 0, -1885, 1521, -520 },  { 0, 0, 0, -1890, 1520, -550 },\n    { 0, 0, 0, -1895, 1520, -581 },  { 0, 0, 0, -1899, 1519, -611 },  { 0, 0, 0, -1903, 1519, -641 },\n    { 0, 0, 0, -1908, 1518, -671 },  { 0, 0, 0, -1912, 1517, -701 },  { 0, 0, 0, -1917, 1517, -730 },\n    { 0, 0, 0, -1921, 1516, -760 },  { 0, 0, 0, -1925, 1516, -789 },  { 0, 0, 0, -1930, 1515, -818 },\n    { 0, 0, 0, -1934, 1514, -847 },  { 0, 0, 0, -1938, 1514, -875 },  { 0, 0, 0, -1942, 1513, -903 },\n    { 0, 0, 0, -1947, 1513, -931 },  { 0, 0, 0, -1951, 1512, -959 },  { 0, 0, 0, -1955, 1512, -987 },\n    { 0, 0, 0, -1959, 1511, -1014 }, { 0, 0, 0, -1963, 1511, -1041 }, { 0, 0, 0, -1967, 1510, -1068 },\n    { 0, 0, 0, -1971, 1510, -1094 }, { 0, 0, 0, -1975, 1509, -1121 }, { 0, 0, 0, -1979, 1509, -1147 },\n    { 0, 0, 0, -1983, 1508, -1172 }, { 0, 0, 0, -1987, 1508, -1198 }, { 0, 0, 0, -1991, 1507, -1223 },\n    { 0, 0, 0, -1994, 1507, -1247 }, { 0, 0, 0, -1998, 1507, -1272 }, { 0, 0, 0, -2002, 1506, -1296 },\n    { 0, 0, 0, -2006, 1506, -1320 }, { 0, 0, 0, -2010, 1506, -1343 }, { 0, 0, 0, -2013, 1505, -1366 },\n    { 0, 0, 0, -2017, 1505, -1389 }, { 0, 0, 0, -2021, 1505, -1411 }, { 0, 0, 0, -2025, 1505, -1433 },\n    { 0, 0, 0, -2029, 1505, -1455 }, { 0, 0, 0, -2033, 1506, -1476 }, { 0, 0, 0, -2038, 1506, -1497 },\n    { 0, 0, 0, -2044, 1508, -1516 }, { 0, 0, 0, -2050, 1512, -1515 }, { 0, 0, 0, -2050, 1514, -1497 },\n    { 0, 0, 0, -2049, 1516, -1481 }, { 0, 0, 0, -2047, 1517, -1466 }, { 0, 0, 0, -2046, 1518, -1452 },\n    { 0, 0, 0, -2045, 1518, -1439 }, { 0, 0, 0, -2044, 1519, -1428 }, { 0, 0, 0, -2043, 1520, -1418 },\n    { 0, 0, 0, -2042, 1520, -1408 }, { 0, 0, 0, -2041, 1520, -1400 }, { 0, 0, 0, -2040, 1521, -1393 },\n    { 0, 0, 0, -2040, 1521, -1387 }, { 0, 0, 0, -2039, 1521, -1382 }, { 0, 0, 0, -2039, 1522, -1377 },\n    { 0, 0, 0, -2038, 1522, -1374 }, { 0, 0, 0, -2038, 1522, -1371 }, { 0, 0, 0, -2038, 1522, -1369 },\n    { 0, 0, 0, -2038, 1522, -1368 }, { 0, 0, 0, -2038, 1522, -1368 }, { 0, 0, 0, -2038, 1522, -1368 },\n    { 0, 0, 0, -2038, 1522, -1369 }, { 0, 0, 0, -2038, 1522, -1371 }, { 0, 0, 0, -2038, 1522, -1373 },\n    { 0, 0, 0, -2039, 1522, -1376 }, { 0, 0, 0, -2039, 1521, -1379 }, { 0, 0, 0, -2039, 1521, -1383 },\n    { 0, 0, 0, -2040, 1521, -1387 }, { 0, 0, 0, -2040, 1521, -1392 }, { 0, 0, 0, -2041, 1521, -1397 },\n    { 0, 0, 0, -2041, 1520, -1402 }, { 0, 0, 0, -2042, 1520, -1408 }, { 0, 0, 0, -2043, 1520, -1414 },\n    { 0, 0, 0, -2043, 1519, -1420 }, { 0, 0, 0, -2044, 1519, -1427 }, { 0, 0, 0, -2045, 1519, -1433 },\n    { 0, 0, 0, -2045, 1518, -1440 }, { 0, 0, 0, -2046, 1518, -1447 }, { 0, 0, 0, -2046, 1517, -1454 },\n    { 0, 0, 0, -2047, 1517, -1461 }, { 0, 0, 0, -2048, 1517, -1468 }, { 0, 0, 0, -2048, 1516, -1475 },\n    { 0, 0, 0, -2049, 1516, -1482 }, { 0, 0, 0, -2049, 1515, -1488 }, { 0, 0, 0, -2049, 1515, -1495 },\n    { 0, 0, 0, -2050, 1514, -1501 }, { 0, 0, 0, -2050, 1513, -1508 }, { 0, 0, 0, -2050, 1512, -1514 },\n    { 0, 0, 0, -2050, 1512, -1519 }, { 0, 0, 0, -2048, 1510, -1524 }, { 0, 0, 0, -2045, 1508, -1520 },\n    { 0, 0, 0, -2043, 1508, -1516 }, { 0, 0, 0, -2042, 1507, -1511 }, { 0, 0, 0, -2041, 1507, -1508 },\n    { 0, 0, 0, -2040, 1507, -1505 }, { 0, 0, 0, -2039, 1507, -1502 }, { 0, 0, 0, -2039, 1506, -1500 },\n    { 0, 0, 0, -2038, 1506, -1498 }, { 0, 0, 0, -2038, 1506, -1497 }, { 0, 0, 0, -2038, 1506, -1497 },\n    { 0, 0, 0, -2048, 1516, -1477 }, { 0, 0, 0, -2026, 1526, -1268 }, { 0, 0, 0, -1986, 1537, -960 },\n    { 0, 0, 0, -1935, 1547, -587 },  { 0, 0, 0, -1877, 1557, -181 },  { 0, 0, 0, -1817, 1565, 223 },\n    { 0, 0, 0, -1761, 1572, 596 },   { 0, 0, 0, -1714, 1577, 902 },   { 0, 0, 0, -1682, 1581, 1110 },\n    { 0, 0, 0, -1670, 1582, 1187 },\n};\n\nstatic s16 animdata_silver_star_2[][6] = {\n    { 0, 0, 0, -25, -1862, -21178 }, { 0, 0, 0, -23, -1860, -21094 }, { 0, 0, 0, -16, -1854, -20848 },\n    { 0, 0, 0, -5, -1845, -20453 },  { 0, 0, 0, 7, -1833, -19921 },   { 0, 0, 0, 21, -1817, -19267 },\n    { 0, 0, 0, 35, -1797, -18501 },  { 0, 0, 0, 48, -1774, -17638 },  { 0, 0, 0, 60, -1748, -16688 },\n    { 0, 0, 0, 69, -1719, -15666 },  { 0, 0, 0, 76, -1687, -14583 },  { 0, 0, 0, 80, -1653, -13453 },\n    { 0, 0, 0, 80, -1616, -12288 },  { 0, 0, 0, 77, -1578, -11100 },  { 0, 0, 0, 69, -1538, -9902 },\n    { 0, 0, 0, 57, -1496, -8707 },   { 0, 0, 0, 40, -1453, -7528 },   { 0, 0, 0, 17, -1410, -6377 },\n    { 0, 0, 0, -15, -1364, -5268 },  { 0, 0, 0, -61, -1317, -4212 },  { 0, 0, 0, -146, -1281, -3225 },\n    { 0, 0, 0, -304, -1258, -2326 }, { 0, 0, 0, -617, -1212, -1572 }, { 0, 0, 0, -918, -1009, -958 },\n    { 0, 0, 0, -1023, -781, -411 },  { 0, 0, 0, -1086, -572, 3 },     { 0, 0, 0, -1126, -407, 297 },\n    { 0, 0, 0, -1150, -293, 488 },   { 0, 0, 0, -1163, -228, 592 },   { 0, 0, 0, -1167, -209, 622 },\n    { 0, 0, 0, -1163, -227, 593 },   { 0, 0, 0, -1154, -276, 514 },   { 0, 0, 0, -1139, -346, 399 },\n    { 0, 0, 0, -1121, -429, 259 },   { 0, 0, 0, -1100, -516, 106 },   { 0, 0, 0, -1078, -600, -48 },\n    { 0, 0, 0, -1057, -674, -190 },  { 0, 0, 0, -1039, -732, -307 },  { 0, 0, 0, -1027, -769, -385 },\n    { 0, 0, 0, -1023, -781, -411 },  { 0, 0, 0, -1024, -779, -407 },  { 0, 0, 0, -1024, -777, -403 },\n    { 0, 0, 0, -1025, -776, -399 },  { 0, 0, 0, -1025, -774, -397 },  { 0, 0, 0, -1026, -773, -394 },\n    { 0, 0, 0, -1026, -772, -392 },  { 0, 0, 0, -1026, -772, -391 },  { 0, 0, 0, -1026, -771, -390 },\n    { 0, 0, 0, -1027, -771, -389 },  { 0, 0, 0, -1027, -771, -389 },  { 0, 0, 0, -1027, -771, -389 },\n    { 0, 0, 0, -1027, -771, -389 },  { 0, 0, 0, -1026, -771, -390 },  { 0, 0, 0, -1026, -771, -390 },\n    { 0, 0, 0, -1026, -772, -391 },  { 0, 0, 0, -1026, -772, -392 },  { 0, 0, 0, -1026, -773, -393 },\n    { 0, 0, 0, -1026, -773, -393 },  { 0, 0, 0, -1026, -773, -394 },  { 0, 0, 0, -1026, -774, -395 },\n    { 0, 0, 0, -1025, -774, -396 },  { 0, 0, 0, -1025, -774, -397 },  { 0, 0, 0, -1025, -775, -397 },\n    { 0, 0, 0, -1025, -775, -397 },  { 0, 0, 0, -1025, -775, -397 },  { 0, 0, 0, -1025, -775, -397 },\n    { 0, 0, 0, -1025, -775, -397 },  { 0, 0, 0, -1025, -774, -396 },  { 0, 0, 0, -1026, -774, -395 },\n    { 0, 0, 0, -1026, -773, -393 },  { 0, 0, 0, -1026, -772, -391 },  { 0, 0, 0, -1027, -771, -388 },\n    { 0, 0, 0, -1027, -769, -385 },  { 0, 0, 0, -1028, -767, -381 },  { 0, 0, 0, -1028, -765, -377 },\n    { 0, 0, 0, -1029, -763, -372 },  { 0, 0, 0, -1030, -760, -366 },  { 0, 0, 0, -1031, -757, -360 },\n    { 0, 0, 0, -1032, -754, -353 },  { 0, 0, 0, -1033, -750, -345 },  { 0, 0, 0, -1035, -746, -337 },\n    { 0, 0, 0, -1036, -742, -327 },  { 0, 0, 0, -1038, -737, -317 },  { 0, 0, 0, -1040, -731, -305 },\n    { 0, 0, 0, -1042, -725, -293 },  { 0, 0, 0, -1044, -719, -280 },  { 0, 0, 0, -1046, -712, -265 },\n    { 0, 0, 0, -1048, -704, -250 },  { 0, 0, 0, -1051, -696, -234 },  { 0, 0, 0, -1053, -687, -216 },\n    { 0, 0, 0, -1056, -678, -197 },  { 0, 0, 0, -1059, -668, -177 },  { 0, 0, 0, -1062, -657, -156 },\n    { 0, 0, 0, -1066, -645, -134 },  { 0, 0, 0, -1069, -633, -110 },  { 0, 0, 0, -1073, -620, -85 },\n    { 0, 0, 0, -1077, -606, -59 },   { 0, 0, 0, -1081, -591, -31 },   { 0, 0, 0, -1085, -575, 0 },\n    { 0, 0, 0, -1090, -557, 31 },    { 0, 0, 0, -1094, -539, 65 },    { 0, 0, 0, -1099, -519, 101 },\n    { 0, 0, 0, -1105, -498, 139 },   { 0, 0, 0, -1110, -475, 179 },   { 0, 0, 0, -1116, -452, 220 },\n    { 0, 0, 0, -1121, -427, 262 },   { 0, 0, 0, -1127, -402, 306 },   { 0, 0, 0, -1133, -375, 351 },\n    { 0, 0, 0, -1139, -347, 398 },   { 0, 0, 0, -1145, -319, 445 },   { 0, 0, 0, -1151, -289, 494 },\n    { 0, 0, 0, -1157, -258, 543 },   { 0, 0, 0, -1163, -227, 594 },   { 0, 0, 0, -1169, -194, 645 },\n    { 0, 0, 0, -1176, -161, 697 },   { 0, 0, 0, -1182, -127, 749 },   { 0, 0, 0, -1188, -92, 802 },\n    { 0, 0, 0, -1194, -56, 856 },    { 0, 0, 0, -1200, -20, 910 },    { 0, 0, 0, -1206, 16, 964 },\n    { 0, 0, 0, -1212, 54, 1019 },    { 0, 0, 0, -1217, 92, 1073 },    { 0, 0, 0, -1223, 131, 1128 },\n    { 0, 0, 0, -1229, 170, 1183 },   { 0, 0, 0, -1234, 210, 1238 },   { 0, 0, 0, -1239, 250, 1292 },\n    { 0, 0, 0, -1244, 291, 1346 },   { 0, 0, 0, -1249, 331, 1400 },   { 0, 0, 0, -1254, 372, 1454 },\n    { 0, 0, 0, -1259, 414, 1507 },   { 0, 0, 0, -1263, 455, 1560 },   { 0, 0, 0, -1268, 497, 1612 },\n    { 0, 0, 0, -1272, 539, 1664 },   { 0, 0, 0, -1276, 580, 1714 },   { 0, 0, 0, -1279, 622, 1764 },\n    { 0, 0, 0, -1283, 663, 1813 },   { 0, 0, 0, -1286, 705, 1861 },   { 0, 0, 0, -1289, 746, 1908 },\n    { 0, 0, 0, -1292, 787, 1954 },   { 0, 0, 0, -1294, 827, 1999 },   { 0, 0, 0, -1297, 867, 2042 },\n    { 0, 0, 0, -1299, 907, 2084 },   { 0, 0, 0, -1301, 946, 2125 },   { 0, 0, 0, -1302, 985, 2165 },\n    { 0, 0, 0, -1304, 1023, 2203 },  { 0, 0, 0, -1305, 1060, 2239 },  { 0, 0, 0, -1306, 1096, 2274 },\n    { 0, 0, 0, -1307, 1131, 2307 },  { 0, 0, 0, -1307, 1166, 2339 },  { 0, 0, 0, -1307, 1199, 2369 },\n    { 0, 0, 0, -1307, 1231, 2397 },  { 0, 0, 0, -1307, 1262, 2423 },  { 0, 0, 0, -1307, 1292, 2448 },\n    { 0, 0, 0, -1307, 1320, 2470 },  { 0, 0, 0, -1306, 1346, 2491 },  { 0, 0, 0, -1305, 1371, 2510 },\n    { 0, 0, 0, -1305, 1394, 2527 },  { 0, 0, 0, -1304, 1415, 2543 },  { 0, 0, 0, -1303, 1434, 2556 },\n    { 0, 0, 0, -1302, 1451, 2568 },  { 0, 0, 0, -1302, 1465, 2577 },  { 0, 0, 0, -1301, 1477, 2585 },\n    { 0, 0, 0, -1300, 1487, 2591 },  { 0, 0, 0, -1300, 1494, 2596 },  { 0, 0, 0, -1300, 1498, 2599 },\n    { 0, 0, 0, -1300, 1500, 2600 },\n};\n\nstruct AnimDataInfo anim_silver_star[] = {\n    { ARRAY_COUNT(animdata_silver_star_1), GD_ANIM_ROT3S_POS3S, animdata_silver_star_1 },\n    { ARRAY_COUNT(animdata_silver_star_2), GD_ANIM_ROT3S_POS3S, animdata_silver_star_2 },\n    END_ANIMDATA_INFO_ARR,\n};\n\nstatic s16 animdata_red_star_1[][6] = {\n    { 0, 0, 0, 0, 0, -20000 },     { 0, 0, 0, 0, 0, -20000 },     { 0, 0, 0, 0, 0, -20000 },\n    { 0, 0, 0, 0, 0, -20000 },     { 0, 0, 0, 0, 0, -20000 },     { 0, 0, 0, 0, 0, -20000 },\n    { 0, 0, 0, 0, 0, -20000 },     { 0, 0, 0, 0, 0, -20000 },     { 0, 0, 0, 0, 0, -20000 },\n    { 0, 0, 0, 0, 0, -20000 },     { 0, 0, 0, 0, 0, -20000 },     { 0, 0, 0, 0, 0, -20000 },\n    { 0, 0, 0, 0, 0, -20000 },     { 0, 0, 0, 0, 0, -20000 },     { 0, 0, 0, 0, 0, -20000 },\n    { 0, 0, 0, 0, 0, -20000 },     { 0, 0, 0, 0, 0, -20000 },     { 0, 0, 0, 0, 0, -20000 },\n    { 0, 0, 0, 0, 0, -20000 },     { 0, 0, 0, 0, 0, -20000 },     { 0, 0, 0, 0, 0, -20000 },\n    { 0, 0, 0, 0, 0, -20000 },     { 0, 0, 0, 0, 0, -20000 },     { 0, 0, 0, 0, 0, -20000 },\n    { 0, 0, 0, 0, 0, -20000 },     { 0, 0, 0, 0, 0, -20000 },     { 0, 0, 0, 0, 0, -20000 },\n    { 0, 0, 0, 0, 0, -20000 },     { 0, 0, 0, 0, 0, -20000 },     { 0, 0, 0, 0, 0, -20000 },\n    { 0, 0, 0, 0, 0, -20000 },     { 0, 0, 0, 0, 0, -20000 },     { 0, 0, 0, 0, 0, -20000 },\n    { 0, 0, 0, 0, 0, -20000 },     { 0, 0, 0, 0, 0, -20000 },     { 0, 0, 0, 0, 0, -20000 },\n    { 0, 0, 0, 0, 0, -20000 },     { 0, 0, 0, 0, 0, -20000 },     { 0, 0, 0, 0, 0, -20000 },\n    { 0, 0, 0, 0, 0, -20000 },     { 0, 0, 0, 0, 0, -20000 },     { 0, 0, 0, 0, 0, -20000 },\n    { 0, 0, 0, 0, 0, -20000 },     { 0, 0, 0, 0, 0, -20000 },     { 0, 0, 0, 0, 0, -20000 },\n    { 0, 0, 0, 0, 0, -20000 },     { 0, 0, 0, 0, 0, -20000 },     { 0, 0, 0, 0, 0, -20000 },\n    { 0, 0, 0, 0, 0, -20000 },     { 0, 0, 0, 0, 0, -20000 },     { 0, 0, 0, 0, 0, -20000 },\n    { 0, 0, 0, 0, 0, -19999 },     { 0, 0, 0, 0, 0, -19998 },     { 0, 0, 0, 1, 0, -19996 },\n    { 0, 0, 0, 1, 0, -19994 },     { 0, 0, 0, 2, 0, -19991 },     { 0, 0, 0, 2, 0, -19989 },\n    { 0, 0, 0, 2, 0, -19986 },     { 0, 0, 0, 2, 0, -19984 },     { 0, 0, 0, 3, 0, -19981 },\n    { 0, 0, 0, 3, 0, -19977 },     { 0, 0, 0, 3, 0, -19974 },     { 0, 0, 0, 3, 0, -19971 },\n    { 0, 0, 0, 4, 0, -19967 },     { 0, 0, 0, 4, 0, -19963 },     { 0, 0, 0, 4, 0, -19959 },\n    { 0, 0, 0, 4, 0, -19955 },     { 0, 0, 0, 4, 0, -19951 },     { 0, 0, 0, 5, 0, -19946 },\n    { 0, 0, 0, 5, 0, -19941 },     { 0, 0, 0, 5, 0, -19936 },     { 0, 0, 0, 5, 0, -19931 },\n    { 0, 0, 0, 6, 0, -19925 },     { 0, 0, 0, 6, 0, -19920 },     { 0, 0, 0, 6, 0, -19914 },\n    { 0, 0, 0, 6, 0, -19908 },     { 0, 0, 0, 6, 0, -19901 },     { 0, 0, 0, 7, 0, -19894 },\n    { 0, 0, 0, 7, 0, -19888 },     { 0, 0, 0, 7, 0, -19881 },     { 0, 0, 0, 7, 0, -19873 },\n    { 0, 0, 0, 7, 0, -19865 },     { 0, 0, 0, 8, 0, -19858 },     { 0, 0, 0, 8, 0, -19849 },\n    { 0, 0, 0, 8, 0, -19841 },     { 0, 0, 0, 8, 0, -19832 },     { 0, 0, 0, 8, 0, -19823 },\n    { 0, 0, 0, 9, 0, -19814 },     { 0, 0, 0, 9, 0, -19804 },     { 0, 0, 0, 9, 0, -19794 },\n    { 0, 0, 0, 9, 0, -19784 },     { 0, 0, 0, 9, 0, -19774 },     { 0, 0, 0, 10, 0, -19763 },\n    { 0, 0, 0, 10, 0, -19752 },    { 0, 0, 0, 10, 0, -19741 },    { 0, 0, 0, 10, 0, -19729 },\n    { 0, 0, 0, 10, 0, -19717 },    { 0, 0, 0, 10, 0, -19705 },    { 0, 0, 0, 11, 0, -19692 },\n    { 0, 0, 0, 11, 0, -19679 },    { 0, 0, 0, 11, 0, -19666 },    { 0, 0, 0, 11, 0, -19652 },\n    { 0, 0, 0, 11, 0, -19638 },    { 0, 0, 0, 12, 0, -19624 },    { 0, 0, 0, 12, 0, -19609 },\n    { 0, 0, 0, 12, 0, -19594 },    { 0, 0, 0, 12, 0, -19579 },    { 0, 0, 0, 12, 0, -19563 },\n    { 0, 0, 0, 12, 1, -19547 },    { 0, 0, 0, 13, 1, -19530 },    { 0, 0, 0, 13, 1, -19513 },\n    { 0, 0, 0, 13, 1, -19496 },    { 0, 0, 0, 13, 1, -19478 },    { 0, 0, 0, 13, 1, -19460 },\n    { 0, 0, 0, 13, 1, -19442 },    { 0, 0, 0, 13, 1, -19423 },    { 0, 0, 0, 14, 1, -19404 },\n    { 0, 0, 0, 14, 1, -19384 },    { 0, 0, 0, 14, 1, -19364 },    { 0, 0, 0, 14, 1, -19343 },\n    { 0, 0, 0, 14, 1, -19323 },    { 0, 0, 0, 14, 1, -19301 },    { 0, 0, 0, 14, 1, -19279 },\n    { 0, 0, 0, 15, 1, -19257 },    { 0, 0, 0, 15, 1, -19235 },    { 0, 0, 0, 15, 1, -19212 },\n    { 0, 0, 0, 15, 1, -19188 },    { 0, 0, 0, 15, 1, -19164 },    { 0, 0, 0, 15, 1, -19140 },\n    { 0, 0, 0, 15, 1, -19115 },    { 0, 0, 0, 15, 2, -19090 },    { 0, 0, 0, 16, 2, -19064 },\n    { 0, 0, 0, 16, 2, -19038 },    { 0, 0, 0, 16, 2, -19011 },    { 0, 0, 0, 16, 2, -18984 },\n    { 0, 0, 0, 16, 2, -18957 },    { 0, 0, 0, 16, 2, -18929 },    { 0, 0, 0, 16, 2, -18900 },\n    { 0, 0, 0, 16, 2, -18871 },    { 0, 0, 0, 16, 2, -18841 },    { 0, 0, 0, 16, 2, -18811 },\n    { 0, 0, 0, 17, 2, -18781 },    { 0, 0, 0, 17, 2, -18750 },    { 0, 0, 0, 17, 2, -18718 },\n    { 0, 0, 0, 17, 2, -18686 },    { 0, 0, 0, 17, 3, -18653 },    { 0, 0, 0, 17, 3, -18620 },\n    { 0, 0, 0, 17, 3, -18587 },    { 0, 0, 0, 17, 3, -18552 },    { 0, 0, 0, 17, 3, -18518 },\n    { 0, 0, 0, 17, 3, -18482 },    { 0, 0, 0, 17, 3, -18447 },    { 0, 0, 0, 17, 3, -18410 },\n    { 0, 0, 0, 17, 3, -18373 },    { 0, 0, 0, 17, 3, -18336 },    { 0, 0, 0, 17, 3, -18298 },\n    { 0, 0, 0, 17, 3, -18259 },    { 0, 0, 0, 17, 3, -18220 },    { 0, 0, 0, 18, 4, -18180 },\n    { 0, 0, 0, 18, 4, -18140 },    { 0, 0, 0, 18, 4, -18099 },    { 0, 0, 0, 18, 4, -18058 },\n    { 0, 0, 0, 18, 4, -18016 },    { 0, 0, 0, 18, 4, -17973 },    { 0, 0, 0, 18, 4, -17930 },\n    { 0, 0, 0, 18, 4, -17886 },    { 0, 0, 0, 18, 4, -17842 },    { 0, 0, 0, 18, 4, -17797 },\n    { 0, 0, 0, 18, 5, -17751 },    { 0, 0, 0, 18, 5, -17705 },    { 0, 0, 0, 17, 5, -17658 },\n    { 0, 0, 0, 17, 5, -17610 },    { 0, 0, 0, 17, 5, -17562 },    { 0, 0, 0, 17, 5, -17513 },\n    { 0, 0, 0, 17, 5, -17464 },    { 0, 0, 0, 17, 5, -17414 },    { 0, 0, 0, 17, 5, -17363 },\n    { 0, 0, 0, 17, 6, -17312 },    { 0, 0, 0, 17, 6, -17260 },    { 0, 0, 0, 17, 6, -17207 },\n    { 0, 0, 0, 17, 6, -17154 },    { 0, 0, 0, 17, 6, -17100 },    { 0, 0, 0, 17, 6, -17045 },\n    { 0, 0, 0, 17, 6, -16990 },    { 0, 0, 0, 17, 6, -16934 },    { 0, 0, 0, 17, 7, -16877 },\n    { 0, 0, 0, 16, 7, -16820 },    { 0, 0, 0, 16, 7, -16762 },    { 0, 0, 0, 16, 7, -16703 },\n    { 0, 0, 0, 16, 7, -16643 },    { 0, 0, 0, 16, 7, -16583 },    { 0, 0, 0, 16, 7, -16522 },\n    { 0, 0, 0, 16, 7, -16461 },    { 0, 0, 0, 15, 8, -16398 },    { 0, 0, 0, 15, 8, -16335 },\n    { 0, 0, 0, 15, 8, -16272 },    { 0, 0, 0, 15, 8, -16207 },    { 0, 0, 0, 15, 8, -16142 },\n    { 0, 0, 0, 15, 8, -16076 },    { 0, 0, 0, 14, 8, -16009 },    { 0, 0, 0, 14, 9, -15942 },\n    { 0, 0, 0, 14, 9, -15874 },    { 0, 0, 0, 14, 9, -15805 },    { 0, 0, 0, 14, 9, -15735 },\n    { 0, 0, 0, 13, 9, -15664 },    { 0, 0, 0, 13, 9, -15591 },    { 0, 0, 0, 13, 10, -15517 },\n    { 0, 0, 0, 13, 10, -15441 },   { 0, 0, 0, 12, 10, -15366 },   { 0, 0, 0, 12, 10, -15288 },\n    { 0, 0, 0, 12, 10, -15208 },   { 0, 0, 0, 12, 10, -15128 },   { 0, 0, 0, 12, 10, -15046 },\n    { 0, 0, 0, 11, 10, -14963 },   { 0, 0, 0, 11, 10, -14878 },   { 0, 0, 0, 11, 10, -14793 },\n    { 0, 0, 0, 11, 10, -14706 },   { 0, 0, 0, 11, 10, -14618 },   { 0, 0, 0, 10, 10, -14529 },\n    { 0, 0, 0, 10, 10, -14438 },   { 0, 0, 0, 10, 10, -14347 },   { 0, 0, 0, 10, 10, -14254 },\n    { 0, 0, 0, 9, 10, -14161 },    { 0, 0, 0, 9, 10, -14065 },    { 0, 0, 0, 9, 10, -13969 },\n    { 0, 0, 0, 9, 10, -13872 },    { 0, 0, 0, 9, 10, -13774 },    { 0, 0, 0, 8, 10, -13674 },\n    { 0, 0, 0, 8, 10, -13574 },    { 0, 0, 0, 8, 11, -13473 },    { 0, 0, 0, 8, 11, -13370 },\n    { 0, 0, 0, 7, 11, -13267 },    { 0, 0, 0, 7, 11, -13162 },    { 0, 0, 0, 7, 11, -13056 },\n    { 0, 0, 0, 7, 11, -12950 },    { 0, 0, 0, 6, 11, -12843 },    { 0, 0, 0, 6, 11, -12734 },\n    { 0, 0, 0, 6, 11, -12625 },    { 0, 0, 0, 6, 11, -12515 },    { 0, 0, 0, 5, 11, -12403 },\n    { 0, 0, 0, 5, 11, -12291 },    { 0, 0, 0, 5, 11, -12178 },    { 0, 0, 0, 5, 11, -12065 },\n    { 0, 0, 0, 4, 11, -11950 },    { 0, 0, 0, 4, 11, -11834 },    { 0, 0, 0, 4, 11, -11718 },\n    { 0, 0, 0, 4, 11, -11600 },    { 0, 0, 0, 3, 11, -11482 },    { 0, 0, 0, 3, 11, -11363 },\n    { 0, 0, 0, 3, 11, -11243 },    { 0, 0, 0, 3, 11, -11123 },    { 0, 0, 0, 2, 11, -11002 },\n    { 0, 0, 0, 2, 11, -10880 },    { 0, 0, 0, 2, 11, -10757 },    { 0, 0, 0, 2, 11, -10633 },\n    { 0, 0, 0, 1, 11, -10509 },    { 0, 0, 0, 1, 11, -10384 },    { 0, 0, 0, 1, 11, -10259 },\n    { 0, 0, 0, 1, 11, -10133 },    { 0, 0, 0, 0, 11, -10006 },    { 0, 0, 0, 0, 11, -9878 },\n    { 0, 0, 0, 0, 11, -9750 },     { 0, 0, 0, 0, 11, -9621 },     { 0, 0, 0, 0, 11, -9492 },\n    { 0, 0, 0, 0, 11, -9362 },     { 0, 0, 0, 0, 11, -9231 },     { 0, 0, 0, 0, 11, -9100 },\n    { 0, 0, 0, -1, 11, -8968 },    { 0, 0, 0, -1, 11, -8836 },    { 0, 0, 0, -1, 11, -8703 },\n    { 0, 0, 0, -1, 11, -8570 },    { 0, 0, 0, -2, 11, -8436 },    { 0, 0, 0, -2, 11, -8301 },\n    { 0, 0, 0, -2, 11, -8167 },    { 0, 0, 0, -2, 11, -8031 },    { 0, 0, 0, -3, 11, -7895 },\n    { 0, 0, 0, -3, 11, -7759 },    { 0, 0, 0, -3, 11, -7623 },    { 0, 0, 0, -3, 11, -7486 },\n    { 0, 0, 0, -4, 11, -7348 },    { 0, 0, 0, -4, 11, -7210 },    { 0, 0, 0, -4, 11, -7072 },\n    { 0, 0, 0, -4, 11, -6933 },    { 0, 0, 0, -4, 11, -6794 },    { 0, 0, 0, -5, 11, -6655 },\n    { 0, 0, 0, -5, 11, -6516 },    { 0, 0, 0, -5, 11, -6376 },    { 0, 0, 0, -5, 11, -6236 },\n    { 0, 0, 0, -5, 10, -6095 },    { 0, 0, 0, -6, 10, -5954 },    { 0, 0, 0, -6, 10, -5813 },\n    { 0, 0, 0, -6, 10, -5672 },    { 0, 0, 0, -6, 10, -5530 },    { 0, 0, 0, -6, 10, -5388 },\n    { 0, 0, 0, -7, 10, -5247 },    { 0, 0, 0, -7, 10, -5104 },    { 0, 0, 0, -7, 10, -4962 },\n    { 0, 0, 0, -7, 10, -4819 },    { 0, 0, 0, -7, 10, -4677 },    { 0, 0, 0, -7, 9, -4534 },\n    { 0, 0, 0, -7, 9, -4391 },     { 0, 0, 0, -7, 9, -4248 },     { 0, 0, 0, -8, 9, -4105 },\n    { 0, 0, 0, -8, 9, -3961 },     { 0, 0, 0, -8, 9, -3818 },     { 0, 0, 0, -8, 9, -3675 },\n    { 0, 0, 0, -8, 8, -3531 },     { 0, 0, 0, -8, 8, -3387 },     { 0, 0, 0, -8, 8, -3244 },\n    { 0, 0, 0, -8, 8, -3100 },     { 0, 0, 0, -8, 8, -2957 },     { 0, 0, 0, -8, 7, -2813 },\n    { 0, 0, 0, -8, 7, -2669 },     { 0, 0, 0, -8, 7, -2526 },     { 0, 0, 0, -7, 6, -2383 },\n    { 0, 0, 0, -7, 6, -2239 },     { 0, 0, 0, -7, 6, -2095 },     { 0, 0, 0, -7, 5, -1953 },\n    { 0, 0, 0, -6, 5, -1809 },     { 0, 0, 0, -6, 4, -1666 },     { 0, 0, 0, -5, 3, -1523 },\n    { 0, 0, 0, -4, 2, -1380 },     { 0, 0, 0, 33, 45, -1298 },    { 0, 0, 0, 109, 165, -1294 },\n    { 0, 0, 0, 186, 284, -1282 },  { 0, 0, 0, 265, 400, -1261 },  { 0, 0, 0, 348, 511, -1230 },\n    { 0, 0, 0, 433, 616, -1187 },  { 0, 0, 0, 521, 711, -1132 },  { 0, 0, 0, 611, 795, -1062 },\n    { 0, 0, 0, 702, 861, -976 },   { 0, 0, 0, 790, 907, -877 },   { 0, 0, 0, 873, 931, -766 },\n    { 0, 0, 0, 948, 933, -649 },   { 0, 0, 0, 1014, 923, -526 },  { 0, 0, 0, 1067, 909, -398 },\n    { 0, 0, 0, 1105, 893, -265 },  { 0, 0, 0, 1125, 875, -129 },  { 0, 0, 0, 1126, 854, 7 },\n    { 0, 0, 0, 1108, 833, 142 },   { 0, 0, 0, 1070, 811, 273 },   { 0, 0, 0, 1014, 791, 396 },\n    { 0, 0, 0, 941, 775, 511 },    { 0, 0, 0, 854, 764, 615 },    { 0, 0, 0, 751, 765, 705 },\n    { 0, 0, 0, 634, 794, 763 },    { 0, 0, 0, 508, 836, 788 },    { 0, 0, 0, 381, 878, 800 },\n    { 0, 0, 0, 252, 917, 806 },    { 0, 0, 0, 123, 951, 808 },    { 0, 0, 0, -6, 978, 808 },\n    { 0, 0, 0, -138, 997, 806 },   { 0, 0, 0, -270, 1005, 802 },  { 0, 0, 0, -401, 996, 798 },\n    { 0, 0, 0, -528, 965, 795 },   { 0, 0, 0, -642, 903, 794 },   { 0, 0, 0, -742, 820, 794 },\n    { 0, 0, 0, -830, 725, 793 },   { 0, 0, 0, -904, 620, 796 },   { 0, 0, 0, -963, 507, 803 },\n    { 0, 0, 0, -1007, 389, 819 },  { 0, 0, 0, -1037, 268, 844 },  { 0, 0, 0, -1052, 149, 882 },\n    { 0, 0, 0, -1055, 35, 933 },   { 0, 0, 0, -1046, -70, 998 },  { 0, 0, 0, -1026, -168, 1071 },\n    { 0, 0, 0, -986, -259, 1143 }, { 0, 0, 0, -924, -342, 1209 }, { 0, 0, 0, -843, -414, 1265 },\n    { 0, 0, 0, -745, -470, 1306 }, { 0, 0, 0, -633, -508, 1328 }, { 0, 0, 0, -515, -523, 1324 },\n    { 0, 0, 0, -403, -511, 1289 }, { 0, 0, 0, -311, -473, 1227 }, { 0, 0, 0, -240, -408, 1161 },\n    { 0, 0, 0, -183, -330, 1096 }, { 0, 0, 0, -135, -246, 1033 }, { 0, 0, 0, -93, -159, 971 },\n    { 0, 0, 0, -56, -70, 911 },    { 0, 0, 0, -23, 19, 852 },     { 0, 0, 0, 7, 109, 793 },\n    { 0, 0, 0, 32, 191, 739 },     { 0, 0, 0, 84, 217, 707 },     { 0, 0, 0, 163, 230, 699 },\n    { 0, 0, 0, 232, 244, 690 },    { 0, 0, 0, 292, 256, 683 },    { 0, 0, 0, 343, 267, 676 },\n    { 0, 0, 0, 387, 276, 670 },    { 0, 0, 0, 425, 283, 664 },    { 0, 0, 0, 456, 288, 659 },\n    { 0, 0, 0, 481, 293, 655 },    { 0, 0, 0, 502, 296, 651 },    { 0, 0, 0, 519, 299, 647 },\n    { 0, 0, 0, 533, 300, 644 },    { 0, 0, 0, 544, 301, 642 },    { 0, 0, 0, 553, 302, 640 },\n    { 0, 0, 0, 560, 303, 638 },    { 0, 0, 0, 568, 303, 636 },    { 0, 0, 0, 575, 303, 634 },\n    { 0, 0, 0, 583, 303, 631 },    { 0, 0, 0, 593, 303, 629 },    { 0, 0, 0, 605, 303, 625 },\n    { 0, 0, 0, 619, 304, 620 },    { 0, 0, 0, 637, 303, 614 },    { 0, 0, 0, 660, 303, 605 },\n    { 0, 0, 0, 686, 303, 594 },    { 0, 0, 0, 717, 301, 578 },    { 0, 0, 0, 752, 299, 556 },\n    { 0, 0, 0, 790, 294, 526 },    { 0, 0, 0, 829, 287, 486 },    { 0, 0, 0, 867, 276, 431 },\n    { 0, 0, 0, 903, 258, 352 },    { 0, 0, 0, 929, 232, 250 },    { 0, 0, 0, 939, 199, 130 },\n    { 0, 0, 0, 933, 161, -4 },     { 0, 0, 0, 912, 113, -147 },   { 0, 0, 0, 875, 43, -288 },\n    { 0, 0, 0, 821, -46, -421 },   { 0, 0, 0, 745, -150, -540 },  { 0, 0, 0, 646, -258, -641 },\n    { 0, 0, 0, 522, -359, -719 },  { 0, 0, 0, 375, -439, -772 },  { 0, 0, 0, 212, -487, -796 },\n    { 0, 0, 0, 47, -497, -797 },   { 0, 0, 0, -106, -478, -781 }, { 0, 0, 0, -243, -439, -752 },\n    { 0, 0, 0, -356, -390, -709 }, { 0, 0, 0, -446, -337, -659 }, { 0, 0, 0, -513, -288, -611 },\n    { 0, 0, 0, -560, -246, -568 }, { 0, 0, 0, -597, -209, -530 }, { 0, 0, 0, -629, -174, -493 },\n    { 0, 0, 0, -656, -139, -456 }, { 0, 0, 0, -679, -107, -421 }, { 0, 0, 0, -700, -75, -388 },\n    { 0, 0, 0, -717, -46, -356 },  { 0, 0, 0, -732, -18, -326 },  { 0, 0, 0, -745, 7, -297 },\n    { 0, 0, 0, -756, 31, -270 },   { 0, 0, 0, -766, 54, -245 },   { 0, 0, 0, -774, 75, -221 },\n    { 0, 0, 0, -781, 96, -198 },   { 0, 0, 0, -788, 115, -177 },  { 0, 0, 0, -793, 132, -157 },\n    { 0, 0, 0, -798, 149, -138 },  { 0, 0, 0, -802, 165, -120 },  { 0, 0, 0, -805, 180, -103 },\n    { 0, 0, 0, -809, 194, -87 },   { 0, 0, 0, -811, 208, -71 },   { 0, 0, 0, -814, 221, -55 },\n    { 0, 0, 0, -816, 234, -40 },   { 0, 0, 0, -817, 247, -26 },   { 0, 0, 0, -819, 260, -11 },\n    { 0, 0, 0, -820, 273, 3 },     { 0, 0, 0, -821, 285, 18 },    { 0, 0, 0, -822, 299, 33 },\n    { 0, 0, 0, -822, 312, 49 },    { 0, 0, 0, -822, 326, 65 },    { 0, 0, 0, -822, 340, 82 },\n    { 0, 0, 0, -821, 355, 100 },   { 0, 0, 0, -819, 371, 119 },   { 0, 0, 0, -817, 388, 140 },\n    { 0, 0, 0, -814, 406, 161 },   { 0, 0, 0, -809, 424, 184 },   { 0, 0, 0, -803, 444, 209 },\n    { 0, 0, 0, -794, 464, 235 },   { 0, 0, 0, -780, 484, 262 },   { 0, 0, 0, -761, 503, 290 },\n    { 0, 0, 0, -734, 518, 319 },   { 0, 0, 0, -702, 527, 348 },   { 0, 0, 0, -663, 532, 376 },\n    { 0, 0, 0, -620, 531, 404 },   { 0, 0, 0, -572, 525, 430 },   { 0, 0, 0, -520, 515, 455 },\n    { 0, 0, 0, -464, 502, 478 },   { 0, 0, 0, -404, 484, 501 },   { 0, 0, 0, -340, 463, 521 },\n    { 0, 0, 0, -272, 440, 541 },   { 0, 0, 0, -198, 414, 558 },   { 0, 0, 0, -116, 386, 572 },\n    { 0, 0, 0, -17, 356, 582 },    { 0, 0, 0, 98, 335, 584 },     { 0, 0, 0, 228, 319, 577 },\n    { 0, 0, 0, 368, 305, 551 },    { 0, 0, 0, 510, 291, 495 },    { 0, 0, 0, 643, 278, 401 },\n    { 0, 0, 0, 754, 267, 271 },    { 0, 0, 0, 837, 257, 112 },    { 0, 0, 0, 892, 249, -64 },\n    { 0, 0, 0, 925, 242, -251 },   { 0, 0, 0, 938, 236, -446 },   { 0, 0, 0, 926, 234, -643 },\n    { 0, 0, 0, 884, 235, -837 },   { 0, 0, 0, 805, 241, -1021 },  { 0, 0, 0, 693, 253, -1185 },\n    { 0, 0, 0, 558, 268, -1328 },  { 0, 0, 0, 413, 284, -1456 },  { 0, 0, 0, 279, 299, -1591 },\n    { 0, 0, 0, 214, 306, -1761 },  { 0, 0, 0, 199, 313, -1939 },  { 0, 0, 0, 187, 321, -2110 },\n    { 0, 0, 0, 175, 330, -2273 },  { 0, 0, 0, 165, 338, -2426 },  { 0, 0, 0, 155, 347, -2568 },\n    { 0, 0, 0, 147, 354, -2699 },  { 0, 0, 0, 139, 361, -2816 },  { 0, 0, 0, 132, 367, -2919 },\n    { 0, 0, 0, 126, 373, -3006 },  { 0, 0, 0, 122, 377, -3078 },  { 0, 0, 0, 118, 380, -3131 },\n    { 0, 0, 0, 116, 383, -3169 },  { 0, 0, 0, 113, 385, -3205 },  { 0, 0, 0, 111, 387, -3240 },\n    { 0, 0, 0, 109, 389, -3275 },  { 0, 0, 0, 107, 391, -3310 },  { 0, 0, 0, 104, 394, -3344 },\n    { 0, 0, 0, 102, 396, -3377 },  { 0, 0, 0, 100, 398, -3410 },  { 0, 0, 0, 98, 400, -3443 },\n    { 0, 0, 0, 96, 402, -3475 },   { 0, 0, 0, 94, 404, -3507 },   { 0, 0, 0, 92, 406, -3538 },\n    { 0, 0, 0, 90, 408, -3568 },   { 0, 0, 0, 88, 409, -3599 },   { 0, 0, 0, 86, 411, -3629 },\n    { 0, 0, 0, 84, 413, -3658 },   { 0, 0, 0, 82, 415, -3687 },   { 0, 0, 0, 80, 417, -3716 },\n    { 0, 0, 0, 79, 419, -3744 },   { 0, 0, 0, 77, 420, -3772 },   { 0, 0, 0, 75, 422, -3799 },\n    { 0, 0, 0, 73, 424, -3826 },   { 0, 0, 0, 72, 425, -3852 },   { 0, 0, 0, 70, 427, -3878 },\n    { 0, 0, 0, 68, 429, -3904 },   { 0, 0, 0, 67, 430, -3929 },   { 0, 0, 0, 65, 432, -3954 },\n    { 0, 0, 0, 64, 433, -3979 },   { 0, 0, 0, 62, 435, -4003 },   { 0, 0, 0, 61, 437, -4026 },\n    { 0, 0, 0, 59, 438, -4050 },   { 0, 0, 0, 58, 439, -4072 },   { 0, 0, 0, 56, 441, -4095 },\n    { 0, 0, 0, 55, 442, -4117 },   { 0, 0, 0, 54, 444, -4139 },   { 0, 0, 0, 52, 445, -4160 },\n    { 0, 0, 0, 51, 446, -4181 },   { 0, 0, 0, 50, 448, -4202 },   { 0, 0, 0, 48, 449, -4222 },\n    { 0, 0, 0, 47, 450, -4242 },   { 0, 0, 0, 46, 452, -4262 },   { 0, 0, 0, 45, 453, -4281 },\n    { 0, 0, 0, 43, 454, -4300 },   { 0, 0, 0, 42, 455, -4318 },   { 0, 0, 0, 41, 456, -4336 },\n    { 0, 0, 0, 40, 458, -4354 },   { 0, 0, 0, 39, 459, -4372 },   { 0, 0, 0, 38, 460, -4389 },\n    { 0, 0, 0, 37, 461, -4406 },   { 0, 0, 0, 36, 462, -4422 },   { 0, 0, 0, 35, 463, -4438 },\n    { 0, 0, 0, 34, 464, -4454 },   { 0, 0, 0, 33, 465, -4470 },   { 0, 0, 0, 32, 466, -4485 },\n    { 0, 0, 0, 31, 467, -4500 },   { 0, 0, 0, 30, 468, -4515 },   { 0, 0, 0, 29, 469, -4529 },\n    { 0, 0, 0, 28, 470, -4543 },   { 0, 0, 0, 27, 471, -4557 },   { 0, 0, 0, 26, 471, -4570 },\n    { 0, 0, 0, 26, 472, -4583 },   { 0, 0, 0, 25, 473, -4596 },   { 0, 0, 0, 24, 474, -4609 },\n    { 0, 0, 0, 23, 475, -4621 },   { 0, 0, 0, 22, 476, -4633 },   { 0, 0, 0, 22, 476, -4645 },\n    { 0, 0, 0, 21, 477, -4656 },   { 0, 0, 0, 20, 478, -4667 },   { 0, 0, 0, 20, 479, -4678 },\n    { 0, 0, 0, 19, 479, -4689 },   { 0, 0, 0, 18, 480, -4699 },   { 0, 0, 0, 18, 481, -4709 },\n    { 0, 0, 0, 17, 481, -4719 },   { 0, 0, 0, 16, 482, -4729 },   { 0, 0, 0, 16, 482, -4738 },\n    { 0, 0, 0, 15, 483, -4747 },   { 0, 0, 0, 15, 484, -4756 },   { 0, 0, 0, 14, 484, -4765 },\n    { 0, 0, 0, 14, 485, -4773 },   { 0, 0, 0, 13, 485, -4781 },   { 0, 0, 0, 13, 486, -4789 },\n    { 0, 0, 0, 12, 486, -4797 },   { 0, 0, 0, 12, 487, -4805 },   { 0, 0, 0, 11, 487, -4812 },\n    { 0, 0, 0, 11, 488, -4819 },   { 0, 0, 0, 10, 488, -4826 },   { 0, 0, 0, 10, 489, -4833 },\n    { 0, 0, 0, 10, 489, -4839 },   { 0, 0, 0, 9, 489, -4845 },    { 0, 0, 0, 9, 490, -4851 },\n    { 0, 0, 0, 8, 490, -4857 },    { 0, 0, 0, 8, 491, -4863 },    { 0, 0, 0, 8, 491, -4868 },\n    { 0, 0, 0, 7, 491, -4874 },    { 0, 0, 0, 7, 492, -4879 },    { 0, 0, 0, 7, 492, -4883 },\n    { 0, 0, 0, 6, 492, -4888 },    { 0, 0, 0, 6, 493, -4893 },    { 0, 0, 0, 6, 493, -4897 },\n    { 0, 0, 0, 6, 493, -4901 },    { 0, 0, 0, 5, 493, -4906 },    { 0, 0, 0, 5, 494, -4910 },\n    { 0, 0, 0, 5, 494, -4913 },    { 0, 0, 0, 5, 494, -4917 },    { 0, 0, 0, 4, 494, -4920 },\n    { 0, 0, 0, 4, 495, -4924 },    { 0, 0, 0, 4, 495, -4927 },    { 0, 0, 0, 4, 495, -4930 },\n    { 0, 0, 0, 4, 495, -4933 },    { 0, 0, 0, 3, 495, -4935 },    { 0, 0, 0, 3, 495, -4938 },\n    { 0, 0, 0, 3, 496, -4941 },    { 0, 0, 0, 3, 496, -4943 },    { 0, 0, 0, 3, 496, -4945 },\n    { 0, 0, 0, 3, 496, -4947 },    { 0, 0, 0, 3, 496, -4949 },    { 0, 0, 0, 3, 496, -4951 },\n    { 0, 0, 0, 2, 496, -4953 },    { 0, 0, 0, 2, 497, -4955 },    { 0, 0, 0, 2, 497, -4956 },\n    { 0, 0, 0, 2, 497, -4958 },    { 0, 0, 0, 2, 497, -4959 },    { 0, 0, 0, 2, 497, -4960 },\n    { 0, 0, 0, 2, 497, -4962 },    { 0, 0, 0, 2, 497, -4963 },    { 0, 0, 0, 2, 497, -4964 },\n    { 0, 0, 0, 2, 497, -4965 },    { 0, 0, 0, 2, 497, -4966 },    { 0, 0, 0, 2, 497, -4966 },\n    { 0, 0, 0, 2, 497, -4967 },    { 0, 0, 0, 1, 497, -4968 },    { 0, 0, 0, 1, 497, -4968 },\n    { 0, 0, 0, 1, 497, -4969 },    { 0, 0, 0, 1, 498, -4969 },    { 0, 0, 0, 1, 498, -4970 },\n    { 0, 0, 0, 1, 498, -4970 },    { 0, 0, 0, 1, 498, -4971 },    { 0, 0, 0, 1, 498, -4971 },\n    { 0, 0, 0, 1, 498, -4971 },    { 0, 0, 0, 1, 498, -4971 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },    { 0, 0, 0, 1, 498, -4972 },\n    { 0, 0, 0, 1, 498, -4972 },\n};\n\nstatic s16 animdata_red_star_2[][6] = {\n    { 0, 0, 0, 4291, 2080, 2392 },  { 0, 0, 0, 4290, 2079, 2391 },  { 0, 0, 0, 4289, 2079, 2389 },\n    { 0, 0, 0, 4287, 2078, 2385 },  { 0, 0, 0, 4283, 2077, 2379 },  { 0, 0, 0, 4279, 2075, 2372 },\n    { 0, 0, 0, 4274, 2073, 2364 },  { 0, 0, 0, 4268, 2071, 2354 },  { 0, 0, 0, 4262, 2069, 2342 },\n    { 0, 0, 0, 4254, 2066, 2329 },  { 0, 0, 0, 4245, 2063, 2314 },  { 0, 0, 0, 4236, 2059, 2298 },\n    { 0, 0, 0, 4226, 2056, 2281 },  { 0, 0, 0, 4215, 2052, 2262 },  { 0, 0, 0, 4203, 2047, 2242 },\n    { 0, 0, 0, 4191, 2043, 2221 },  { 0, 0, 0, 4178, 2038, 2198 },  { 0, 0, 0, 4164, 2033, 2174 },\n    { 0, 0, 0, 4149, 2027, 2148 },  { 0, 0, 0, 4133, 2021, 2122 },  { 0, 0, 0, 4117, 2015, 2094 },\n    { 0, 0, 0, 4100, 2009, 2065 },  { 0, 0, 0, 4082, 2003, 2034 },  { 0, 0, 0, 4064, 1996, 2003 },\n    { 0, 0, 0, 4045, 1989, 1970 },  { 0, 0, 0, 4025, 1982, 1936 },  { 0, 0, 0, 4005, 1974, 1901 },\n    { 0, 0, 0, 3984, 1966, 1865 },  { 0, 0, 0, 3962, 1958, 1828 },  { 0, 0, 0, 3940, 1950, 1790 },\n    { 0, 0, 0, 3917, 1942, 1750 },  { 0, 0, 0, 3893, 1933, 1710 },  { 0, 0, 0, 3869, 1924, 1669 },\n    { 0, 0, 0, 3845, 1915, 1626 },  { 0, 0, 0, 3819, 1906, 1583 },  { 0, 0, 0, 3794, 1896, 1539 },\n    { 0, 0, 0, 3767, 1887, 1493 },  { 0, 0, 0, 3740, 1877, 1447 },  { 0, 0, 0, 3713, 1866, 1400 },\n    { 0, 0, 0, 3685, 1856, 1352 },  { 0, 0, 0, 3657, 1846, 1303 },  { 0, 0, 0, 3628, 1835, 1254 },\n    { 0, 0, 0, 3599, 1824, 1203 },  { 0, 0, 0, 3569, 1813, 1152 },  { 0, 0, 0, 3538, 1802, 1100 },\n    { 0, 0, 0, 3508, 1791, 1047 },  { 0, 0, 0, 3477, 1779, 994 },   { 0, 0, 0, 3445, 1768, 940 },\n    { 0, 0, 0, 3413, 1756, 885 },   { 0, 0, 0, 3381, 1744, 829 },   { 0, 0, 0, 3348, 1732, 773 },\n    { 0, 0, 0, 3315, 1720, 716 },   { 0, 0, 0, 3281, 1707, 659 },   { 0, 0, 0, 3247, 1695, 601 },\n    { 0, 0, 0, 3213, 1682, 542 },   { 0, 0, 0, 3179, 1669, 483 },   { 0, 0, 0, 3144, 1657, 423 },\n    { 0, 0, 0, 3109, 1644, 363 },   { 0, 0, 0, 3073, 1631, 302 },   { 0, 0, 0, 3038, 1617, 240 },\n    { 0, 0, 0, 3002, 1604, 179 },   { 0, 0, 0, 2965, 1591, 117 },   { 0, 0, 0, 2929, 1577, 54 },\n    { 0, 0, 0, 2892, 1564, -8 },    { 0, 0, 0, 2855, 1550, -72 },   { 0, 0, 0, 2818, 1537, -135 },\n    { 0, 0, 0, 2781, 1523, -199 },  { 0, 0, 0, 2743, 1509, -264 },  { 0, 0, 0, 2706, 1495, -329 },\n    { 0, 0, 0, 2668, 1481, -394 },  { 0, 0, 0, 2630, 1467, -459 },  { 0, 0, 0, 2592, 1453, -524 },\n    { 0, 0, 0, 2553, 1439, -590 },  { 0, 0, 0, 2515, 1425, -656 },  { 0, 0, 0, 2476, 1410, -722 },\n    { 0, 0, 0, 2438, 1396, -789 },  { 0, 0, 0, 2399, 1382, -855 },  { 0, 0, 0, 2360, 1368, -922 },\n    { 0, 0, 0, 2321, 1353, -988 },  { 0, 0, 0, 2282, 1339, -1055 }, { 0, 0, 0, 2243, 1325, -1122 },\n    { 0, 0, 0, 2205, 1310, -1189 }, { 0, 0, 0, 2166, 1296, -1256 }, { 0, 0, 0, 2127, 1281, -1323 },\n    { 0, 0, 0, 2088, 1267, -1390 }, { 0, 0, 0, 2049, 1253, -1457 }, { 0, 0, 0, 2010, 1238, -1524 },\n    { 0, 0, 0, 1971, 1224, -1590 }, { 0, 0, 0, 1932, 1210, -1657 }, { 0, 0, 0, 1893, 1195, -1724 },\n    { 0, 0, 0, 1854, 1181, -1790 }, { 0, 0, 0, 1816, 1167, -1857 }, { 0, 0, 0, 1777, 1153, -1923 },\n    { 0, 0, 0, 1739, 1138, -1989 }, { 0, 0, 0, 1700, 1124, -2054 }, { 0, 0, 0, 1662, 1110, -2120 },\n    { 0, 0, 0, 1624, 1096, -2185 }, { 0, 0, 0, 1586, 1082, -2250 }, { 0, 0, 0, 1549, 1068, -2315 },\n    { 0, 0, 0, 1511, 1055, -2380 }, { 0, 0, 0, 1474, 1041, -2444 }, { 0, 0, 0, 1437, 1027, -2507 },\n    { 0, 0, 0, 1400, 1013, -2571 }, { 0, 0, 0, 1363, 1000, -2634 }, { 0, 0, 0, 1327, 986, -2696 },\n    { 0, 0, 0, 1290, 973, -2759 },  { 0, 0, 0, 1254, 960, -2820 },  { 0, 0, 0, 1219, 947, -2882 },\n    { 0, 0, 0, 1183, 934, -2942 },  { 0, 0, 0, 1148, 921, -3003 },  { 0, 0, 0, 1113, 908, -3063 },\n    { 0, 0, 0, 1079, 895, -3122 },  { 0, 0, 0, 1045, 882, -3181 },  { 0, 0, 0, 1011, 870, -3239 },\n    { 0, 0, 0, 977, 858, -3296 },   { 0, 0, 0, 944, 845, -3353 },   { 0, 0, 0, 911, 833, -3409 },\n    { 0, 0, 0, 879, 821, -3465 },   { 0, 0, 0, 847, 810, -3520 },   { 0, 0, 0, 816, 798, -3574 },\n    { 0, 0, 0, 784, 787, -3627 },   { 0, 0, 0, 754, 775, -3680 },   { 0, 0, 0, 723, 764, -3732 },\n    { 0, 0, 0, 694, 753, -3783 },   { 0, 0, 0, 664, 742, -3834 },   { 0, 0, 0, 635, 732, -3883 },\n    { 0, 0, 0, 607, 721, -3932 },   { 0, 0, 0, 579, 711, -3980 },   { 0, 0, 0, 552, 701, -4027 },\n    { 0, 0, 0, 525, 691, -4073 },   { 0, 0, 0, 498, 681, -4118 },   { 0, 0, 0, 473, 672, -4163 },\n    { 0, 0, 0, 447, 662, -4206 },   { 0, 0, 0, 423, 653, -4248 },   { 0, 0, 0, 399, 644, -4290 },\n    { 0, 0, 0, 375, 636, -4330 },   { 0, 0, 0, 352, 627, -4370 },   { 0, 0, 0, 330, 619, -4408 },\n    { 0, 0, 0, 308, 611, -4445 },   { 0, 0, 0, 287, 603, -4481 },   { 0, 0, 0, 267, 596, -4516 },\n    { 0, 0, 0, 247, 588, -4550 },   { 0, 0, 0, 228, 581, -4583 },   { 0, 0, 0, 210, 575, -4614 },\n    { 0, 0, 0, 192, 568, -4645 },   { 0, 0, 0, 175, 562, -4674 },   { 0, 0, 0, 159, 556, -4702 },\n    { 0, 0, 0, 143, 550, -4728 },   { 0, 0, 0, 128, 545, -4754 },   { 0, 0, 0, 114, 539, -4778 },\n    { 0, 0, 0, 101, 535, -4801 },   { 0, 0, 0, 89, 530, -4822 },    { 0, 0, 0, 77, 526, -4842 },\n    { 0, 0, 0, 66, 522, -4861 },    { 0, 0, 0, 56, 518, -4878 },    { 0, 0, 0, 47, 514, -4894 },\n    { 0, 0, 0, 38, 511, -4909 },    { 0, 0, 0, 30, 508, -4922 },    { 0, 0, 0, 24, 506, -4933 },\n    { 0, 0, 0, 18, 504, -4944 },    { 0, 0, 0, 13, 502, -4952 },    { 0, 0, 0, 9, 500, -4959 },\n    { 0, 0, 0, 5, 499, -4965 },     { 0, 0, 0, 3, 498, -4969 },     { 0, 0, 0, 2, 498, -4971 },\n    { 0, 0, 0, 1, 498, -4972 },\n};\n\nstruct AnimDataInfo anim_red_star[] = {\n    { ARRAY_COUNT(animdata_red_star_1), GD_ANIM_ROT3S_POS3S, animdata_red_star_1 },\n    { ARRAY_COUNT(animdata_red_star_2), GD_ANIM_ROT3S_POS3S, animdata_red_star_2 },\n    END_ANIMDATA_INFO_ARR,\n};\n"
  },
  {
    "path": "src/goddard/dynlists/anim_mario_eyebrows_1.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"macros.h\"\n#include \"animdata.h\"\n#include \"../gd_types.h\"\n\nstatic s16 animdata_mario_eyebrows_1_1[][3] = {\n    { -68, 0, 1775 },   { -68, 0, 1774 },   { -68, 0, 1774 },   { -68, 0, 1773 },   { -68, 0, 1773 },\n    { -68, 0, 1772 },   { -68, 0, 1771 },   { -68, 0, 1770 },   { -68, 0, 1768 },   { -68, 0, 1767 },\n    { -68, 0, 1766 },   { -68, -1, 1766 },  { -68, -1, 1765 },  { -68, -1, 1765 },  { -68, -1, 1764 },\n    { -68, -1, 1765 },  { -68, -1, 1765 },  { -68, -1, 1766 },  { -68, 0, 1767 },   { -68, 0, 1769 },\n    { -68, 0, 1772 },   { -68, 0, 1775 },   { -68, 0, 1782 },   { -68, 2, 1796 },   { -68, 4, 1814 },\n    { -68, 6, 1832 },   { -68, 8, 1849 },   { -67, 10, 1861 },  { -67, 10, 1866 },  { -67, 10, 1863 },\n    { -67, 9, 1857 },   { -68, 8, 1847 },   { -68, 7, 1836 },   { -68, 5, 1823 },   { -68, 4, 1810 },\n    { -68, 2, 1798 },   { -68, 1, 1787 },   { -68, 0, 1779 },   { -68, 0, 1775 },   { -68, 0, 1772 },\n    { -68, 0, 1771 },   { -68, 0, 1769 },   { -68, 0, 1768 },   { -68, 0, 1767 },   { -68, -1, 1766 },\n    { -68, -1, 1765 },  { -68, -1, 1765 },  { -68, -1, 1765 },  { -68, -1, 1764 },  { -68, -1, 1765 },\n    { -68, -1, 1765 },  { -68, -1, 1765 },  { -68, -1, 1766 },  { -68, -1, 1766 },  { -68, 0, 1767 },\n    { -68, 0, 1767 },   { -68, 0, 1768 },   { -68, 0, 1769 },   { -68, 0, 1770 },   { -68, 0, 1770 },\n    { -68, 0, 1771 },   { -68, 0, 1772 },   { -68, 0, 1772 },   { -68, 0, 1773 },   { -68, 0, 1774 },\n    { -68, 0, 1774 },   { -68, 0, 1774 },   { -68, 0, 1775 },   { -68, 0, 1775 },   { -68, 0, 1775 },\n    { -68, 0, 1775 },   { -68, 0, 1774 },   { -68, 0, 1774 },   { -68, 0, 1774 },   { -68, 0, 1774 },\n    { -68, 0, 1774 },   { -68, 0, 1774 },   { -68, 0, 1774 },   { -68, 0, 1773 },   { -68, 0, 1773 },\n    { -68, 0, 1773 },   { -68, 0, 1773 },   { -68, 0, 1773 },   { -68, 0, 1773 },   { -68, 0, 1773 },\n    { -68, 0, 1774 },   { -68, 0, 1774 },   { -68, 0, 1774 },   { -68, 0, 1775 },   { -68, 0, 1776 },\n    { -68, 0, 1779 },   { -68, 0, 1782 },   { -68, 1, 1785 },   { -68, 1, 1786 },   { -68, 1, 1786 },\n    { -68, 1, 1787 },   { -68, 1, 1787 },   { -68, 1, 1787 },   { -68, 1, 1788 },   { -68, 1, 1788 },\n    { -68, 1, 1788 },   { -68, 1, 1788 },   { -68, 1, 1788 },   { -68, 1, 1788 },   { -68, 1, 1788 },\n    { -68, 1, 1788 },   { -68, 1, 1788 },   { -68, 1, 1787 },   { -68, 1, 1787 },   { -68, 1, 1787 },\n    { -68, 1, 1786 },   { -68, 1, 1786 },   { -68, 1, 1785 },   { -68, 1, 1783 },   { -68, 0, 1780 },\n    { -68, 0, 1778 },   { -68, 0, 1776 },   { -68, 0, 1775 },   { -68, 0, 1774 },   { -68, 0, 1774 },\n    { -68, 0, 1774 },   { -68, 0, 1774 },   { -68, 0, 1774 },   { -68, 0, 1774 },   { -68, 0, 1774 },\n    { -68, 0, 1774 },   { -68, 0, 1774 },   { -68, 0, 1775 },   { -68, 0, 1775 },   { -68, 0, 1775 },\n    { -68, 0, 1775 },   { -68, 0, 1775 },   { -68, 0, 1775 },   { -68, 0, 1775 },   { -68, 0, 1775 },\n    { -68, 0, 1775 },   { -68, 0, 1775 },   { -68, 0, 1775 },   { -68, 0, 1775 },   { -68, 0, 1775 },\n    { -68, 0, 1775 },   { -68, 0, 1775 },   { -68, 0, 1775 },   { -68, 0, 1775 },   { -68, 0, 1775 },\n    { -68, 0, 1775 },   { -68, 0, 1775 },   { -68, 0, 1775 },   { -68, 0, 1775 },   { -68, 0, 1775 },\n    { -68, 0, 1775 },   { -68, 0, 1775 },   { -68, 0, 1775 },   { -68, 0, 1775 },   { -68, 0, 1775 },\n    { -68, 0, 1775 },   { -68, 0, 1775 },   { -68, 0, 1775 },   { -68, 0, 1775 },   { -68, 0, 1775 },\n    { -68, 0, 1775 },   { -68, 0, 1775 },   { -68, 0, 1775 },   { -68, 0, 1775 },   { -68, 0, 1775 },\n    { -68, 0, 1775 },   { -68, 0, 1775 },   { -68, 0, 1775 },   { -68, 0, 1775 },   { -68, 0, 1775 },\n    { -68, 0, 1775 },   { -68, 0, 1775 },   { -68, 0, 1775 },   { -68, 0, 1775 },   { -68, 0, 1775 },\n    { -68, 0, 1775 },   { -68, 0, 1775 },   { -68, 0, 1775 },   { -68, 0, 1775 },   { -68, 0, 1775 },\n    { -68, 0, 1775 },   { -68, 0, 1775 },   { -68, 0, 1775 },   { -68, 0, 1775 },   { -68, 0, 1775 },\n    { -68, 0, 1775 },   { -68, 0, 1775 },   { -68, 0, 1775 },   { -68, 0, 1775 },   { -68, 0, 1774 },\n    { -68, 0, 1773 },   { -68, 0, 1771 },   { -68, 0, 1768 },   { -69, -1, 1765 },  { -69, -1, 1762 },\n    { -69, -1, 1758 },  { -69, -2, 1754 },  { -69, -2, 1751 },  { -69, -3, 1747 },  { -69, -3, 1743 },\n    { -69, -3, 1740 },  { -70, -4, 1737 },  { -70, -4, 1735 },  { -70, -4, 1733 },  { -70, -4, 1732 },\n    { -70, -4, 1732 },  { -70, -4, 1733 },  { -70, -4, 1734 },  { -70, -4, 1738 },  { -69, -3, 1742 },\n    { -69, -3, 1748 },  { -69, -2, 1755 },  { -69, -1, 1764 },  { -68, 0, 1775 },   { -67, 4, 1818 },\n    { -64, 14, 1905 },  { -60, 26, 2005 },  { -57, 35, 2088 },  { -56, 39, 2122 },  { -56, 37, 2110 },\n    { -57, 34, 2076 },  { -59, 28, 2027 },  { -61, 22, 1970 },  { -63, 15, 1910 },  { -65, 8, 1853 },\n    { -67, 3, 1806 },   { -68, 0, 1775 },   { -69, -1, 1760 },  { -71, -1, 1758 },  { -72, -1, 1764 },\n    { -72, 0, 1776 },   { -73, 1, 1788 },   { -74, 2, 1798 },   { -74, 3, 1803 },   { -74, 3, 1804 },\n    { -74, 3, 1804 },   { -75, 3, 1804 },   { -75, 3, 1805 },   { -76, 3, 1805 },   { -77, 3, 1805 },\n    { -78, 3, 1804 },   { -78, 3, 1804 },   { -79, 3, 1804 },   { -80, 3, 1803 },   { -81, 3, 1803 },\n    { -82, 3, 1802 },   { -83, 3, 1802 },   { -84, 3, 1801 },   { -85, 3, 1801 },   { -85, 3, 1800 },\n    { -86, 2, 1800 },   { -87, 2, 1799 },   { -87, 2, 1799 },   { -87, 2, 1798 },   { -88, 2, 1798 },\n    { -88, 2, 1797 },   { -88, 2, 1797 },   { -88, 2, 1797 },   { -87, 2, 1797 },   { -87, 2, 1797 },\n    { -86, 2, 1797 },   { -85, 2, 1797 },   { -84, 2, 1798 },   { -82, 2, 1799 },   { -81, 2, 1799 },\n    { -79, 3, 1800 },   { -76, 3, 1802 },   { -74, 3, 1803 },   { -69, 3, 1806 },   { -61, 4, 1810 },\n    { -50, 5, 1816 },   { -37, 6, 1823 },   { -23, 7, 1830 },   { -9, 8, 1838 },    { 5, 9, 1846 },\n    { 18, 10, 1854 },   { 30, 11, 1861 },   { 40, 11, 1867 },   { 46, 12, 1871 },   { 51, 12, 1875 },\n    { 55, 12, 1878 },   { 58, 12, 1882 },   { 60, 12, 1885 },   { 62, 12, 1888 },   { 64, 12, 1891 },\n    { 64, 12, 1893 },   { 64, 12, 1895 },   { 64, 12, 1897 },   { 63, 11, 1898 },   { 61, 11, 1899 },\n    { 58, 11, 1899 },   { 55, 11, 1898 },   { 51, 10, 1896 },   { 47, 10, 1894 },   { 40, 9, 1890 },\n    { 29, 9, 1882 },    { 16, 8, 1872 },    { 1, 7, 1861 },     { -14, 6, 1849 },   { -30, 5, 1837 },\n    { -44, 5, 1826 },   { -57, 4, 1816 },   { -68, 3, 1808 },   { -74, 3, 1803 },   { -78, 3, 1800 },\n    { -81, 2, 1798 },   { -83, 2, 1796 },   { -85, 2, 1794 },   { -86, 2, 1793 },   { -86, 2, 1792 },\n    { -86, 1, 1792 },   { -86, 1, 1792 },   { -85, 1, 1792 },   { -84, 1, 1793 },   { -83, 1, 1793 },\n    { -81, 1, 1794 },   { -80, 1, 1795 },   { -79, 1, 1796 },   { -77, 2, 1798 },   { -76, 2, 1799 },\n    { -75, 2, 1800 },   { -74, 2, 1802 },   { -74, 3, 1803 },   { -73, 4, 1806 },   { -72, 6, 1812 },\n    { -71, 9, 1820 },   { -70, 11, 1828 },  { -69, 13, 1834 },  { -68, 15, 1837 },  { -68, 15, 1838 },\n    { -68, 15, 1839 },  { -68, 16, 1840 },  { -67, 16, 1840 },  { -67, 16, 1841 },  { -67, 16, 1841 },\n    { -67, 16, 1841 },  { -67, 16, 1841 },  { -67, 16, 1841 },  { -67, 16, 1840 },  { -68, 16, 1840 },\n    { -68, 15, 1839 },  { -68, 15, 1839 },  { -68, 15, 1839 },  { -68, 15, 1838 },  { -68, 15, 1838 },\n    { -68, 15, 1837 },  { -68, 15, 1837 },  { -68, 15, 1837 },  { -68, 15, 1837 },  { -68, 15, 1837 },\n    { -68, 15, 1837 },  { -68, 15, 1837 },  { -68, 15, 1837 },  { -68, 15, 1837 },  { -68, 15, 1837 },\n    { -68, 15, 1837 },  { -68, 15, 1837 },  { -68, 15, 1837 },  { -68, 15, 1837 },  { -68, 15, 1837 },\n    { -68, 15, 1837 },  { -68, 15, 1837 },  { -68, 15, 1837 },  { -68, 15, 1837 },  { -68, 15, 1837 },\n    { -68, 15, 1837 },  { -68, 15, 1837 },  { -68, 15, 1837 },  { -68, 15, 1837 },  { -68, 15, 1837 },\n    { -68, 15, 1837 },  { -68, 15, 1837 },  { -68, 15, 1837 },  { -68, 15, 1837 },  { -68, 15, 1837 },\n    { -68, 15, 1837 },  { -68, 15, 1837 },  { -68, 15, 1837 },  { -68, 15, 1837 },  { -68, 15, 1837 },\n    { -68, 15, 1837 },  { -68, 15, 1837 },  { -68, 15, 1837 },  { -68, 15, 1837 },  { -68, 15, 1837 },\n    { -68, 15, 1837 },  { -68, 15, 1837 },  { -68, 15, 1837 },  { -68, 15, 1837 },  { -68, 15, 1837 },\n    { -68, 15, 1837 },  { -68, 15, 1837 },  { -68, 14, 1836 },  { -68, 14, 1833 },  { -68, 14, 1830 },\n    { -69, 13, 1825 },  { -69, 13, 1821 },  { -69, 12, 1817 },  { -69, 12, 1814 },  { -69, 12, 1813 },\n    { -69, 12, 1815 },  { -69, 13, 1819 },  { -69, 13, 1826 },  { -68, 15, 1837 },  { -66, 19, 1876 },\n    { -62, 26, 1946 },  { -59, 34, 2015 },  { -57, 38, 2048 },  { -57, 38, 2050 },  { -57, 37, 2044 },\n    { -58, 36, 2032 },  { -59, 35, 2015 },  { -60, 33, 1996 },  { -62, 31, 1974 },  { -63, 28, 1951 },\n    { -64, 26, 1930 },  { -66, 23, 1911 },  { -67, 20, 1889 },  { -69, 14, 1861 },  { -71, 9, 1833 },\n    { -73, 5, 1812 },   { -74, 3, 1803 },   { -74, 3, 1802 },   { -74, 3, 1801 },   { -74, 2, 1800 },\n    { -74, 2, 1799 },   { -74, 2, 1798 },   { -74, 2, 1797 },   { -74, 2, 1796 },   { -74, 2, 1796 },\n    { -75, 1, 1795 },   { -75, 1, 1794 },   { -75, 1, 1794 },   { -75, 1, 1793 },   { -75, 1, 1792 },\n    { -75, 1, 1792 },   { -75, 1, 1791 },   { -75, 1, 1791 },   { -75, 1, 1791 },   { -75, 0, 1790 },\n    { -75, 0, 1790 },   { -75, 0, 1789 },   { -75, 0, 1789 },   { -75, 0, 1789 },   { -75, 0, 1789 },\n    { -75, 0, 1788 },   { -75, 0, 1788 },   { -75, 0, 1788 },   { -75, 0, 1788 },   { -75, 0, 1788 },\n    { -75, 0, 1788 },   { -75, 0, 1788 },   { -75, 0, 1788 },   { -75, 0, 1788 },   { -75, 0, 1788 },\n    { -75, 0, 1788 },   { -75, 0, 1788 },   { -75, 0, 1788 },   { -75, 0, 1788 },   { -75, 0, 1788 },\n    { -75, 0, 1789 },   { -75, 0, 1789 },   { -75, 0, 1789 },   { -75, 0, 1789 },   { -75, 0, 1789 },\n    { -75, 0, 1790 },   { -75, 0, 1790 },   { -75, 0, 1790 },   { -75, 1, 1790 },   { -75, 1, 1791 },\n    { -75, 1, 1791 },   { -75, 1, 1791 },   { -75, 1, 1792 },   { -75, 1, 1792 },   { -75, 1, 1792 },\n    { -75, 1, 1793 },   { -75, 1, 1793 },   { -75, 1, 1793 },   { -75, 1, 1794 },   { -75, 1, 1794 },\n    { -75, 1, 1794 },   { -75, 1, 1795 },   { -75, 1, 1795 },   { -74, 1, 1795 },   { -74, 2, 1796 },\n    { -74, 2, 1796 },   { -74, 2, 1797 },   { -74, 2, 1797 },   { -74, 2, 1797 },   { -74, 2, 1798 },\n    { -74, 2, 1798 },   { -74, 2, 1798 },   { -74, 2, 1799 },   { -74, 2, 1799 },   { -74, 2, 1799 },\n    { -74, 2, 1800 },   { -74, 2, 1800 },   { -74, 2, 1800 },   { -74, 2, 1801 },   { -74, 3, 1801 },\n    { -74, 3, 1801 },   { -74, 3, 1801 },   { -74, 3, 1802 },   { -74, 3, 1802 },   { -74, 3, 1802 },\n    { -74, 3, 1802 },   { -74, 3, 1802 },   { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },\n    { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },\n    { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },\n    { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },\n    { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },\n    { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },\n    { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },\n    { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },\n    { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },\n    { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },\n    { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },\n    { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },\n    { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },\n    { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },\n    { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },\n    { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },\n    { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },\n    { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1803 },   { -74, 3, 1804 },   { -74, 3, 1804 },\n    { -74, 3, 1804 },   { -74, 3, 1804 },   { -74, 3, 1804 },   { -74, 3, 1804 },   { -74, 3, 1804 },\n    { -74, 3, 1804 },   { -74, 3, 1804 },   { -74, 3, 1805 },   { -74, 3, 1805 },   { -74, 3, 1805 },\n    { -74, 3, 1805 },   { -74, 3, 1805 },   { -74, 3, 1805 },   { -74, 3, 1804 },   { -74, 3, 1804 },\n    { -74, 3, 1804 },   { -74, 3, 1804 },   { -74, 3, 1804 },   { -74, 3, 1803 },   { -74, 3, 1803 },\n    { -74, 3, 1803 },   { -74, 3, 1802 },   { -74, 3, 1802 },   { -74, 3, 1801 },   { -73, 3, 1801 },\n    { -73, 3, 1800 },   { -73, 3, 1800 },   { -73, 2, 1799 },   { -73, 2, 1798 },   { -73, 2, 1798 },\n    { -73, 2, 1797 },   { -73, 2, 1797 },   { -72, 2, 1796 },   { -72, 2, 1795 },   { -72, 2, 1795 },\n    { -72, 2, 1794 },   { -72, 2, 1793 },   { -72, 2, 1792 },   { -72, 2, 1792 },   { -71, 1, 1791 },\n    { -71, 1, 1790 },   { -71, 1, 1789 },   { -71, 1, 1789 },   { -71, 1, 1788 },   { -71, 1, 1787 },\n    { -71, 1, 1786 },   { -70, 1, 1786 },   { -70, 1, 1785 },   { -70, 1, 1784 },   { -70, 1, 1784 },\n    { -70, 0, 1783 },   { -70, 0, 1782 },   { -70, 0, 1782 },   { -69, 0, 1781 },   { -69, 0, 1780 },\n    { -69, 0, 1780 },   { -69, 0, 1779 },   { -69, 0, 1778 },   { -69, 0, 1778 },   { -69, 0, 1777 },\n    { -69, 0, 1777 },   { -69, 0, 1776 },   { -68, 0, 1776 },   { -68, 0, 1775 },   { -68, 0, 1775 },\n    { -68, 0, 1774 },   { -69, 0, 1774 },   { -70, 0, 1773 },   { -72, 0, 1773 },   { -73, 0, 1773 },\n    { -75, 1, 1772 },   { -77, 1, 1772 },   { -79, 2, 1772 },   { -80, 2, 1772 },   { -82, 2, 1772 },\n    { -83, 3, 1772 },   { -84, 3, 1772 },   { -84, 3, 1772 },   { -84, 3, 1772 },   { -84, 3, 1772 },\n    { -82, 2, 1773 },   { -80, 2, 1773 },   { -77, 1, 1773 },   { -73, 1, 1774 },   { -68, 0, 1775 },\n    { -60, -1, 1776 },  { -48, -4, 1777 },  { -33, -7, 1779 },  { -15, -11, 1781 }, { 4, -15, 1784 },\n    { 24, -19, 1786 },  { 44, -24, 1789 },  { 62, -28, 1791 },  { 79, -31, 1793 },  { 93, -34, 1795 },\n    { 103, -36, 1796 }, { 108, -37, 1796 }, { 110, -38, 1797 }, { 113, -38, 1797 }, { 115, -39, 1797 },\n    { 117, -39, 1798 }, { 118, -40, 1798 }, { 120, -40, 1798 }, { 122, -40, 1798 }, { 123, -40, 1798 },\n    { 124, -41, 1798 }, { 125, -41, 1799 }, { 126, -41, 1799 }, { 127, -41, 1799 }, { 128, -41, 1799 },\n    { 128, -42, 1799 }, { 129, -42, 1799 }, { 129, -42, 1799 }, { 129, -42, 1799 }, { 130, -42, 1799 },\n    { 130, -42, 1799 }, { 130, -42, 1799 }, { 130, -42, 1799 }, { 129, -42, 1799 }, { 129, -42, 1799 },\n    { 129, -42, 1799 }, { 128, -42, 1799 }, { 128, -42, 1799 }, { 127, -41, 1799 }, { 127, -41, 1799 },\n    { 126, -41, 1799 }, { 126, -41, 1799 }, { 125, -41, 1799 }, { 124, -41, 1798 }, { 123, -41, 1798 },\n    { 123, -40, 1798 }, { 122, -40, 1798 }, { 121, -40, 1798 }, { 120, -40, 1798 }, { 119, -40, 1798 },\n    { 119, -40, 1798 }, { 118, -39, 1798 }, { 117, -39, 1798 }, { 116, -39, 1797 }, { 115, -39, 1797 },\n    { 114, -39, 1797 }, { 114, -38, 1797 }, { 113, -38, 1797 }, { 112, -38, 1797 }, { 112, -38, 1797 },\n    { 111, -38, 1797 }, { 110, -38, 1797 }, { 110, -38, 1797 }, { 109, -38, 1797 }, { 109, -37, 1797 },\n    { 109, -37, 1797 }, { 108, -37, 1797 }, { 108, -37, 1796 }, { 108, -37, 1796 }, { 108, -37, 1796 },\n    { 108, -37, 1796 }, { 108, -37, 1796 }, { 108, -37, 1796 }, { 108, -37, 1796 }, { 108, -37, 1796 },\n    { 108, -37, 1796 }, { 108, -37, 1796 }, { 108, -37, 1796 }, { 108, -37, 1796 }, { 108, -37, 1796 },\n    { 108, -37, 1796 }, { 108, -37, 1796 }, { 108, -37, 1796 }, { 108, -37, 1796 }, { 108, -37, 1796 },\n    { 108, -37, 1796 }, { 108, -37, 1796 }, { 108, -37, 1796 }, { 108, -37, 1796 }, { 108, -37, 1796 },\n    { 108, -37, 1796 }, { 108, -37, 1796 }, { 108, -37, 1796 }, { 108, -37, 1796 }, { 108, -37, 1796 },\n    { 108, -37, 1796 }, { 108, -37, 1796 }, { 108, -37, 1796 }, { 108, -37, 1796 }, { 108, -37, 1796 },\n    { 108, -37, 1796 }, { 108, -37, 1796 }, { 108, -37, 1796 }, { 108, -37, 1796 }, { 108, -37, 1796 },\n    { 108, -37, 1796 }, { 108, -37, 1796 }, { 108, -37, 1796 }, { 108, -37, 1796 }, { 108, -37, 1796 },\n    { 108, -37, 1796 }, { 108, -37, 1796 }, { 108, -37, 1796 }, { 108, -37, 1796 }, { 108, -37, 1796 },\n    { 108, -37, 1796 }, { 108, -37, 1796 }, { 108, -37, 1796 }, { 108, -37, 1796 }, { 108, -37, 1796 },\n    { 108, -37, 1796 }, { 108, -37, 1796 }, { 108, -37, 1796 }, { 108, -37, 1796 }, { 108, -37, 1796 },\n    { 108, -37, 1796 }, { 108, -37, 1796 }, { 108, -37, 1796 }, { 112, -38, 1797 }, { 108, -37, 1796 },\n    { 91, -34, 1794 },  { 71, -29, 1792 },  { 48, -24, 1789 },  { 24, -19, 1786 },  { 1, -14, 1783 },\n    { -20, -10, 1781 }, { -39, -6, 1778 },  { -55, -2, 1776 },  { -65, 0, 1775 },   { -68, 0, 1775 },\n};\n\nstatic s16 animdata_mario_eyebrows_1_2[][3] = {\n    { -68, 5, 1820 }, { -68, 5, 1820 }, { -68, 5, 1820 }, { -68, 5, 1820 }, { -68, 5, 1820 },\n    { -68, 5, 1820 }, { -68, 5, 1820 }, { -68, 5, 1820 }, { -68, 5, 1820 }, { -68, 5, 1820 },\n    { -68, 5, 1820 }, { -68, 5, 1820 }, { -68, 5, 1820 }, { -68, 5, 1820 }, { -68, 5, 1820 },\n    { -68, 5, 1820 }, { -68, 5, 1820 }, { -68, 5, 1820 }, { -68, 5, 1820 }, { -68, 5, 1820 },\n    { -68, 5, 1820 }, { -68, 5, 1820 }, { -68, 5, 1820 }, { -68, 5, 1820 }, { -68, 5, 1820 },\n    { -68, 5, 1820 }, { -68, 5, 1820 }, { -68, 5, 1820 }, { -68, 5, 1820 }, { -68, 5, 1820 },\n    { -68, 5, 1820 }, { -68, 5, 1820 }, { -68, 5, 1820 }, { -68, 5, 1820 }, { -68, 5, 1820 },\n    { -68, 5, 1820 }, { -68, 5, 1820 }, { -68, 5, 1820 }, { -68, 5, 1820 }, { -68, 5, 1820 },\n    { -68, 5, 1820 }, { -68, 5, 1820 }, { -68, 5, 1820 }, { -68, 5, 1820 }, { -68, 5, 1820 },\n    { -68, 5, 1820 }, { -68, 5, 1820 }, { -68, 5, 1819 }, { -68, 5, 1818 }, { -68, 5, 1817 },\n    { -68, 5, 1816 }, { -68, 4, 1815 }, { -68, 4, 1814 }, { -68, 4, 1813 }, { -68, 4, 1811 },\n    { -68, 4, 1810 }, { -68, 4, 1809 }, { -68, 3, 1808 }, { -68, 3, 1807 }, { -68, 3, 1806 },\n    { -68, 3, 1805 }, { -68, 3, 1804 }, { -68, 3, 1804 }, { -68, 3, 1804 }, { -68, 3, 1804 },\n    { -68, 3, 1804 }, { -68, 3, 1803 }, { -68, 3, 1803 }, { -68, 3, 1803 }, { -68, 3, 1803 },\n    { -68, 3, 1803 }, { -68, 3, 1803 }, { -68, 3, 1803 }, { -68, 3, 1803 }, { -68, 3, 1803 },\n    { -68, 3, 1803 }, { -68, 3, 1803 }, { -68, 3, 1803 }, { -68, 3, 1803 }, { -68, 3, 1803 },\n    { -68, 3, 1803 }, { -68, 3, 1803 }, { -68, 3, 1803 }, { -68, 3, 1804 }, { -68, 3, 1804 },\n    { -68, 3, 1804 }, { -68, 3, 1804 }, { -68, 3, 1804 }, { -68, 3, 1804 }, { -68, 3, 1804 },\n    { -68, 3, 1804 }, { -68, 3, 1804 }, { -68, 3, 1804 }, { -68, 3, 1805 }, { -68, 3, 1805 },\n    { -68, 3, 1805 }, { -68, 3, 1805 }, { -68, 3, 1805 }, { -68, 3, 1805 }, { -68, 3, 1805 },\n    { -68, 3, 1805 }, { -68, 3, 1806 }, { -68, 3, 1806 }, { -68, 3, 1806 }, { -68, 3, 1806 },\n    { -68, 3, 1806 }, { -68, 3, 1806 }, { -68, 3, 1806 }, { -68, 3, 1806 }, { -68, 3, 1806 },\n    { -68, 3, 1806 }, { -68, 3, 1806 }, { -68, 3, 1806 }, { -68, 3, 1806 }, { -68, 3, 1806 },\n    { -68, 3, 1806 }, { -68, 3, 1806 }, { -68, 3, 1806 }, { -68, 3, 1806 }, { -68, 3, 1806 },\n    { -68, 3, 1806 }, { -68, 3, 1806 }, { -68, 3, 1806 }, { -68, 3, 1805 }, { -68, 3, 1805 },\n    { -68, 3, 1805 }, { -68, 3, 1805 }, { -68, 3, 1805 }, { -68, 3, 1804 }, { -68, 3, 1804 },\n    { -68, 3, 1804 }, { -68, 3, 1803 }, { -68, 3, 1803 }, { -68, 3, 1802 }, { -68, 3, 1801 },\n    { -68, 3, 1801 }, { -68, 3, 1800 }, { -68, 2, 1799 }, { -68, 2, 1798 }, { -68, 2, 1797 },\n    { -68, 2, 1796 }, { -68, 2, 1795 }, { -68, 2, 1794 }, { -68, 2, 1793 }, { -68, 2, 1792 },\n    { -68, 1, 1790 }, { -68, 1, 1789 }, { -68, 1, 1788 }, { -68, 1, 1787 }, { -68, 1, 1786 },\n    { -68, 1, 1785 }, { -68, 1, 1784 }, { -68, 0, 1783 }, { -68, 0, 1781 }, { -68, 0, 1781 },\n    { -68, 0, 1780 }, { -68, 0, 1779 }, { -68, 0, 1778 }, { -68, 0, 1777 }, { -68, 0, 1777 },\n    { -68, 0, 1776 }, { -68, 0, 1776 }, { -68, 0, 1775 }, { -68, 0, 1775 }, { -68, 0, 1775 },\n    { -68, 0, 1775 },\n};\n\nstruct AnimDataInfo anim_mario_eyebrows_1[] = {\n    { ARRAY_COUNT(animdata_mario_eyebrows_1_1), GD_ANIM_ROT3S, animdata_mario_eyebrows_1_1 },\n    { ARRAY_COUNT(animdata_mario_eyebrows_1_2), GD_ANIM_ROT3S, animdata_mario_eyebrows_1_2 },\n    END_ANIMDATA_INFO_ARR,\n};\n"
  },
  {
    "path": "src/goddard/dynlists/anim_mario_lips_1.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"macros.h\"\n#include \"animdata.h\"\n#include \"../gd_types.h\"\n\nstatic s16 animdata_mario_lips_1_1[][3] = {\n    { -80, -6, 1818 },   { -80, -6, 1818 },   { -80, -6, 1818 },   { -80, -6, 1817 },\n    { -80, -6, 1817 },   { -80, -6, 1816 },   { -80, -6, 1815 },   { -80, -6, 1815 },\n    { -80, -6, 1814 },   { -80, -6, 1813 },   { -80, -6, 1812 },   { -80, -6, 1812 },\n    { -80, -7, 1811 },   { -80, -7, 1811 },   { -80, -7, 1811 },   { -80, -7, 1811 },\n    { -80, -7, 1812 },   { -80, -6, 1812 },   { -80, -6, 1813 },   { -80, -6, 1814 },\n    { -80, -6, 1816 },   { -80, -6, 1818 },   { -80, -5, 1823 },   { -80, -4, 1833 },\n    { -80, -2, 1845 },   { -80, 0, 1857 },    { -80, 1, 1869 },    { -80, 2, 1877 },\n    { -80, 2, 1880 },    { -80, 2, 1879 },    { -80, 1, 1874 },    { -80, 0, 1868 },\n    { -80, 0, 1860 },    { -80, -1, 1851 },   { -80, -2, 1842 },   { -80, -3, 1834 },\n    { -80, -4, 1826 },   { -80, -5, 1821 },   { -80, -6, 1818 },   { -80, -6, 1817 },\n    { -80, -6, 1815 },   { -80, -6, 1814 },   { -80, -6, 1813 },   { -80, -6, 1813 },\n    { -80, -6, 1812 },   { -80, -7, 1812 },   { -80, -7, 1811 },   { -80, -7, 1811 },\n    { -80, -7, 1811 },   { -80, -7, 1811 },   { -80, -7, 1811 },   { -80, -7, 1811 },\n    { -80, -6, 1812 },   { -80, -6, 1812 },   { -80, -6, 1813 },   { -80, -6, 1813 },\n    { -80, -6, 1813 },   { -80, -6, 1814 },   { -80, -6, 1815 },   { -80, -6, 1815 },\n    { -80, -6, 1816 },   { -80, -6, 1816 },   { -80, -6, 1816 },   { -80, -6, 1817 },\n    { -80, -6, 1817 },   { -80, -6, 1818 },   { -80, -6, 1818 },   { -80, -6, 1818 },\n    { -80, -6, 1818 },   { -80, -6, 1818 },   { -80, -6, 1818 },   { -81, -6, 1818 },\n    { -82, -6, 1818 },   { -84, -6, 1818 },   { -85, -6, 1819 },   { -87, -6, 1819 },\n    { -88, -6, 1819 },   { -90, -6, 1819 },   { -91, -6, 1819 },   { -92, -6, 1819 },\n    { -93, -6, 1819 },   { -93, -6, 1819 },   { -93, -6, 1819 },   { -92, -6, 1819 },\n    { -91, -6, 1819 },   { -89, -6, 1819 },   { -87, -6, 1819 },   { -84, -6, 1818 },\n    { -80, -6, 1818 },   { -65, -5, 1817 },   { -38, -3, 1814 },   { -7, -2, 1811 },\n    { 20, 0, 1808 },     { 34, 0, 1806 },     { 39, 0, 1806 },     { 43, 0, 1805 },\n    { 46, 0, 1805 },     { 49, 1, 1805 },     { 52, 1, 1804 },     { 54, 1, 1804 },\n    { 55, 1, 1804 },     { 56, 1, 1804 },     { 56, 1, 1804 },     { 56, 1, 1804 },\n    { 55, 1, 1804 },     { 53, 1, 1804 },     { 51, 1, 1805 },     { 49, 1, 1805 },\n    { 46, 0, 1805 },     { 42, 0, 1805 },     { 38, 0, 1806 },     { 34, 0, 1806 },\n    { 23, 0, 1807 },     { 3, -1, 1809 },     { -21, -2, 1812 },   { -46, -4, 1815 },\n    { -67, -5, 1817 },   { -80, -6, 1818 },   { -85, -6, 1819 },   { -89, -6, 1819 },\n    { -90, -6, 1820 },   { -90, -6, 1820 },   { -90, -6, 1820 },   { -88, -6, 1820 },\n    { -86, -6, 1820 },   { -84, -6, 1820 },   { -82, -6, 1820 },   { -80, -6, 1819 },\n    { -80, -6, 1818 },   { -80, -6, 1816 },   { -79, -6, 1814 },   { -79, -6, 1812 },\n    { -79, -7, 1809 },   { -79, -7, 1806 },   { -79, -8, 1803 },   { -79, -8, 1800 },\n    { -79, -8, 1798 },   { -79, -9, 1796 },   { -79, -9, 1795 },   { -79, -9, 1795 },\n    { -79, -9, 1795 },   { -79, -9, 1795 },   { -79, -9, 1796 },   { -79, -9, 1796 },\n    { -79, -9, 1797 },   { -79, -8, 1797 },   { -79, -8, 1798 },   { -79, -8, 1799 },\n    { -79, -8, 1800 },   { -79, -8, 1801 },   { -79, -8, 1802 },   { -79, -8, 1803 },\n    { -79, -8, 1804 },   { -79, -7, 1805 },   { -79, -7, 1806 },   { -79, -7, 1806 },\n    { -79, -7, 1807 },   { -79, -7, 1808 },   { -79, -7, 1808 },   { -79, -7, 1809 },\n    { -79, -7, 1809 },   { -79, -7, 1809 },   { -79, -7, 1809 },   { -79, -7, 1806 },\n    { -79, -8, 1801 },   { -79, -9, 1794 },   { -79, -10, 1790 },  { -79, -10, 1790 },\n    { -79, -8, 1799 },   { -79, -6, 1814 },   { -80, -4, 1829 },   { -80, -3, 1837 },\n    { -80, -3, 1837 },   { -80, -4, 1830 },   { -80, -5, 1822 },   { -80, -6, 1818 },\n    { -80, -6, 1817 },   { -80, -6, 1816 },   { -80, -6, 1816 },   { -80, -6, 1816 },\n    { -80, -6, 1816 },   { -80, -6, 1816 },   { -80, -6, 1816 },   { -80, -6, 1817 },\n    { -80, -6, 1817 },   { -80, -6, 1817 },   { -80, -6, 1818 },   { -80, -6, 1818 },\n    { -80, -6, 1818 },   { -79, -6, 1818 },   { -79, -6, 1816 },   { -79, -7, 1814 },\n    { -79, -7, 1812 },   { -78, -8, 1809 },   { -78, -9, 1805 },   { -77, -10, 1802 },\n    { -77, -11, 1798 },  { -76, -12, 1794 },  { -75, -13, 1791 },  { -75, -14, 1787 },\n    { -74, -15, 1784 },  { -74, -16, 1781 },  { -74, -17, 1778 },  { -73, -17, 1777 },\n    { -73, -18, 1776 },  { -73, -18, 1776 },  { -73, -18, 1776 },  { -74, -17, 1778 },\n    { -74, -16, 1781 },  { -75, -15, 1786 },  { -76, -13, 1791 },  { -77, -11, 1799 },\n    { -78, -9, 1807 },   { -80, -6, 1818 },   { -86, 6, 1861 },    { -99, 30, 1947 },\n    { -114, 59, 2046 },  { -126, 82, 2127 },  { -131, 92, 2161 },  { -130, 88, 2149 },\n    { -127, 79, 2117 },  { -123, 65, 2070 },  { -117, 49, 2014 },  { -110, 32, 1955 },\n    { -101, 16, 1899 },  { -91, 3, 1851 },    { -80, -6, 1818 },   { -64, -11, 1799 },\n    { -42, -13, 1789 },  { -18, -13, 1786 },  { 5, -12, 1787 },    { 27, -11, 1790 },\n    { 43, -9, 1794 },    { 52, -9, 1795 },    { 55, -9, 1795 },    { 57, -9, 1794 },\n    { 59, -9, 1793 },    { 60, -9, 1793 },    { 62, -9, 1792 },    { 62, -9, 1792 },\n    { 63, -9, 1791 },    { 63, -9, 1790 },    { 62, -9, 1790 },    { 62, -9, 1789 },\n    { 61, -9, 1789 },    { 60, -9, 1788 },    { 59, -9, 1787 },    { 58, -9, 1787 },\n    { 56, -9, 1787 },    { 55, -9, 1786 },    { 53, -8, 1786 },    { 52, -8, 1786 },\n    { 51, -8, 1785 },    { 49, -8, 1785 },    { 48, -8, 1785 },    { 46, -8, 1785 },\n    { 45, -8, 1786 },    { 44, -8, 1786 },    { 44, -8, 1786 },    { 43, -8, 1787 },\n    { 43, -8, 1787 },    { 43, -8, 1788 },    { 44, -8, 1789 },    { 44, -8, 1790 },\n    { 45, -8, 1791 },    { 47, -9, 1792 },    { 49, -9, 1794 },    { 52, -9, 1795 },\n    { 57, -9, 1798 },    { 66, -9, 1803 },    { 79, -10, 1810 },   { 94, -10, 1818 },\n    { 110, -11, 1827 },  { 126, -11, 1836 },  { 142, -12, 1845 },  { 156, -13, 1853 },\n    { 167, -14, 1860 },  { 174, -14, 1866 },  { 176, -15, 1869 },  { 174, -17, 1871 },\n    { 170, -18, 1873 },  { 163, -20, 1874 },  { 155, -21, 1874 },  { 145, -23, 1874 },\n    { 134, -25, 1874 },  { 123, -27, 1873 },  { 110, -29, 1872 },  { 98, -31, 1870 },\n    { 86, -32, 1868 },   { 74, -34, 1866 },   { 64, -35, 1864 },   { 54, -36, 1861 },\n    { 46, -36, 1858 },   { 40, -36, 1855 },   { 36, -35, 1852 },   { 35, -33, 1847 },\n    { 35, -31, 1841 },   { 36, -27, 1834 },   { 39, -24, 1828 },   { 42, -20, 1820 },\n    { 45, -17, 1813 },   { 48, -13, 1807 },   { 50, -11, 1801 },   { 52, -9, 1795 },\n    { 52, -8, 1791 },    { 52, -7, 1786 },    { 53, -6, 1782 },    { 53, -5, 1778 },\n    { 53, -5, 1774 },    { 53, -5, 1770 },    { 53, -5, 1767 },    { 52, -5, 1763 },\n    { 52, -5, 1760 },    { 52, -5, 1756 },    { 52, -5, 1753 },    { 52, -5, 1750 },\n    { 54, -4, 1746 },    { 58, -3, 1742 },    { 63, -2, 1738 },    { 66, -1, 1734 },\n    { 67, -1, 1732 },    { 63, -1, 1731 },    { 52, -3, 1733 },    { 30, -7, 1738 },\n    { -4, -13, 1749 },   { -45, -20, 1761 },  { -84, -26, 1773 },  { -116, -32, 1782 },\n    { -132, -35, 1787 }, { -139, -36, 1788 }, { -144, -37, 1788 }, { -148, -38, 1788 },\n    { -150, -39, 1788 }, { -152, -39, 1787 }, { -153, -40, 1786 }, { -153, -40, 1785 },\n    { -152, -41, 1783 }, { -151, -41, 1781 }, { -149, -41, 1779 }, { -147, -41, 1778 },\n    { -145, -41, 1776 }, { -143, -41, 1774 }, { -140, -40, 1772 }, { -138, -40, 1770 },\n    { -136, -40, 1768 }, { -134, -40, 1767 }, { -132, -40, 1766 }, { -131, -40, 1765 },\n    { -131, -40, 1764 }, { -131, -40, 1764 }, { -131, -40, 1764 }, { -131, -40, 1763 },\n    { -131, -40, 1763 }, { -131, -40, 1763 }, { -131, -40, 1763 }, { -131, -40, 1763 },\n    { -131, -40, 1762 }, { -131, -40, 1762 }, { -131, -40, 1762 }, { -131, -40, 1762 },\n    { -131, -41, 1762 }, { -131, -41, 1762 }, { -131, -41, 1762 }, { -131, -41, 1762 },\n    { -131, -41, 1762 }, { -131, -41, 1762 }, { -131, -40, 1762 }, { -131, -40, 1762 },\n    { -131, -40, 1762 }, { -131, -40, 1762 }, { -131, -40, 1762 }, { -131, -40, 1763 },\n    { -131, -40, 1763 }, { -131, -40, 1763 }, { -131, -40, 1763 }, { -131, -40, 1763 },\n    { -131, -40, 1763 }, { -131, -40, 1763 }, { -131, -40, 1763 }, { -131, -40, 1763 },\n    { -131, -40, 1764 }, { -131, -40, 1764 }, { -131, -40, 1764 }, { -131, -40, 1764 },\n    { -131, -40, 1764 }, { -131, -40, 1764 }, { -131, -40, 1764 }, { -131, -40, 1764 },\n    { -131, -40, 1764 }, { -131, -40, 1764 }, { -131, -40, 1764 }, { -131, -40, 1764 },\n    { -131, -40, 1763 }, { -131, -41, 1761 }, { -131, -42, 1757 }, { -131, -43, 1753 },\n    { -131, -44, 1749 }, { -131, -45, 1745 }, { -131, -45, 1742 }, { -131, -46, 1741 },\n    { -131, -45, 1743 }, { -131, -44, 1746 }, { -131, -43, 1753 }, { -131, -40, 1764 },\n    { -131, -31, 1802 }, { -132, -15, 1869 }, { -134, 0, 1935 },   { -134, 9, 1971 },\n    { -136, 10, 1978 },  { -140, 10, 1980 },  { -144, 9, 1976 },   { -149, 6, 1969 },\n    { -153, 3, 1958 },   { -154, 0, 1945 },   { -153, -2, 1931 },  { -147, -5, 1917 },\n    { -137, -7, 1904 },  { -109, -8, 1885 },  { -61, -8, 1857 },   { -9, -9, 1828 },\n    { 33, -9, 1805 },    { 52, -9, 1795 },    { 53, -9, 1794 },    { 55, -9, 1793 },\n    { 57, -9, 1792 },    { 59, -9, 1791 },    { 60, -9, 1790 },    { 62, -9, 1789 },\n    { 63, -9, 1789 },    { 64, -9, 1788 },    { 66, -9, 1787 },    { 67, -9, 1786 },\n    { 68, -9, 1786 },    { 69, -9, 1785 },    { 70, -9, 1785 },    { 71, -9, 1784 },\n    { 72, -9, 1784 },    { 73, -9, 1783 },    { 73, -9, 1783 },    { 74, -9, 1782 },\n    { 75, -9, 1782 },    { 75, -9, 1782 },    { 76, -9, 1781 },    { 76, -9, 1781 },\n    { 77, -9, 1781 },    { 77, -9, 1781 },    { 77, -9, 1780 },    { 78, -9, 1780 },\n    { 78, -9, 1780 },    { 78, -9, 1780 },    { 78, -9, 1780 },    { 78, -9, 1780 },\n    { 78, -9, 1780 },    { 78, -9, 1780 },    { 78, -9, 1780 },    { 78, -9, 1780 },\n    { 78, -9, 1780 },    { 78, -9, 1780 },    { 77, -9, 1780 },    { 77, -9, 1781 },\n    { 77, -9, 1781 },    { 77, -9, 1781 },    { 76, -9, 1781 },    { 76, -9, 1781 },\n    { 76, -9, 1782 },    { 75, -9, 1782 },    { 75, -9, 1782 },    { 74, -9, 1782 },\n    { 74, -9, 1783 },    { 73, -9, 1783 },    { 73, -9, 1783 },    { 72, -9, 1783 },\n    { 72, -9, 1784 },    { 71, -9, 1784 },    { 70, -9, 1784 },    { 70, -9, 1785 },\n    { 69, -9, 1785 },    { 69, -9, 1785 },    { 68, -9, 1786 },    { 67, -9, 1786 },\n    { 67, -9, 1787 },    { 66, -9, 1787 },    { 65, -9, 1787 },    { 65, -9, 1788 },\n    { 64, -9, 1788 },    { 64, -9, 1788 },    { 63, -9, 1789 },    { 62, -9, 1789 },\n    { 62, -9, 1789 },    { 61, -9, 1790 },    { 60, -9, 1790 },    { 60, -9, 1791 },\n    { 59, -9, 1791 },    { 59, -9, 1791 },    { 58, -9, 1792 },    { 58, -9, 1792 },\n    { 57, -9, 1792 },    { 56, -9, 1792 },    { 56, -9, 1793 },    { 55, -9, 1793 },\n    { 55, -9, 1793 },    { 55, -9, 1794 },    { 54, -9, 1794 },    { 54, -9, 1794 },\n    { 53, -9, 1794 },    { 53, -9, 1794 },    { 53, -9, 1795 },    { 52, -9, 1795 },\n    { 52, -9, 1795 },    { 52, -9, 1795 },    { 52, -9, 1795 },    { 52, -9, 1795 },\n    { 52, -9, 1795 },    { 52, -9, 1795 },    { 52, -9, 1795 },    { 52, -9, 1795 },\n    { 52, -9, 1795 },    { 53, -9, 1795 },    { 54, -9, 1794 },    { 55, -9, 1794 },\n    { 56, -9, 1794 },    { 57, -9, 1794 },    { 57, -9, 1793 },    { 58, -9, 1793 },\n    { 58, -9, 1793 },    { 57, -9, 1793 },    { 56, -9, 1794 },    { 54, -9, 1794 },\n    { 52, -9, 1795 },    { 48, -9, 1796 },    { 43, -9, 1798 },    { 37, -9, 1800 },\n    { 30, -9, 1802 },    { 23, -10, 1805 },   { 15, -10, 1807 },   { 7, -10, 1810 },\n    { 0, -10, 1813 },    { -8, -11, 1815 },   { -15, -11, 1818 },  { -21, -11, 1820 },\n    { -26, -11, 1821 },  { -30, -11, 1823 },  { -33, -11, 1824 },  { -34, -11, 1824 },\n    { -33, -11, 1823 },  { -29, -11, 1822 },  { -24, -11, 1820 },  { -17, -11, 1818 },\n    { -9, -11, 1815 },   { 0, -10, 1813 },    { 8, -10, 1810 },    { 18, -10, 1807 },\n    { 26, -10, 1804 },   { 34, -9, 1801 },    { 41, -9, 1799 },    { 47, -9, 1797 },\n    { 50, -9, 1796 },    { 52, -9, 1795 },    { 50, -9, 1796 },    { 47, -9, 1797 },\n    { 43, -9, 1798 },    { 36, -9, 1800 },    { 29, -9, 1803 },    { 21, -10, 1805 },\n    { 13, -10, 1808 },   { 4, -10, 1811 },    { -3, -10, 1814 },   { -11, -11, 1816 },\n    { -19, -11, 1819 },  { -25, -11, 1821 },  { -30, -11, 1822 },  { -33, -11, 1823 },\n    { -34, -11, 1824 },  { -33, -11, 1823 },  { -29, -11, 1822 },  { -24, -11, 1820 },\n    { -17, -11, 1818 },  { -9, -11, 1815 },   { 0, -10, 1813 },    { 8, -10, 1810 },\n    { 18, -10, 1807 },   { 26, -10, 1804 },   { 34, -9, 1801 },    { 41, -9, 1799 },\n    { 47, -9, 1797 },    { 50, -9, 1796 },    { 52, -9, 1795 },    { 50, -9, 1796 },\n    { 46, -9, 1797 },    { 40, -9, 1799 },    { 32, -9, 1802 },    { 23, -10, 1805 },\n    { 13, -10, 1808 },   { 3, -10, 1811 },    { -5, -11, 1814 },   { -14, -11, 1817 },\n    { -22, -11, 1820 },  { -28, -11, 1822 },  { -32, -11, 1823 },  { -34, -11, 1824 },\n    { -33, -11, 1824 },  { -30, -11, 1823 },  { -25, -11, 1821 },  { -18, -11, 1820 },\n    { -11, -11, 1818 },  { -3, -11, 1816 },   { 5, -10, 1813 },    { 14, -10, 1811 },\n    { 22, -10, 1808 },   { 31, -10, 1805 },   { 38, -9, 1803 },    { 44, -9, 1801 },\n    { 48, -9, 1798 },    { 51, -9, 1797 },    { 52, -9, 1795 },    { 50, -9, 1794 },\n    { 47, -9, 1793 },    { 43, -9, 1792 },    { 37, -9, 1791 },    { 31, -9, 1789 },\n    { 24, -9, 1788 },    { 16, -9, 1787 },    { 8, -9, 1787 },     { 0, -9, 1786 },\n    { -8, -9, 1785 },    { -17, -9, 1785 },   { -25, -9, 1784 },   { -32, -9, 1784 },\n    { -39, -9, 1784 },   { -45, -9, 1784 },   { -50, -9, 1784 },   { -54, -9, 1785 },\n    { -56, -9, 1785 },   { -59, -9, 1786 },   { -61, -9, 1787 },   { -63, -8, 1788 },\n    { -65, -8, 1789 },   { -67, -8, 1790 },   { -69, -8, 1791 },   { -70, -8, 1792 },\n    { -71, -8, 1793 },   { -72, -8, 1795 },   { -73, -8, 1796 },   { -74, -7, 1798 },\n    { -74, -7, 1799 },   { -75, -7, 1801 },   { -75, -7, 1802 },   { -76, -7, 1804 },\n    { -76, -7, 1805 },   { -77, -7, 1807 },   { -77, -7, 1808 },   { -77, -6, 1809 },\n    { -77, -6, 1811 },   { -77, -6, 1812 },   { -78, -6, 1813 },   { -78, -6, 1814 },\n    { -78, -6, 1815 },   { -79, -6, 1816 },   { -79, -6, 1817 },   { -80, -6, 1818 },\n    { -80, -6, 1819 },   { -82, -6, 1819 },   { -84, -6, 1819 },   { -86, -6, 1819 },\n    { -89, -6, 1819 },   { -92, -6, 1819 },   { -94, -6, 1819 },   { -97, -6, 1819 },\n    { -99, -6, 1818 },   { -102, -6, 1818 },  { -103, -6, 1818 },  { -104, -6, 1817 },\n    { -105, -6, 1817 },  { -104, -6, 1817 },  { -103, -6, 1817 },  { -101, -6, 1817 },\n    { -98, -6, 1817 },   { -93, -6, 1817 },   { -87, -6, 1817 },   { -80, -6, 1818 },\n    { -68, -5, 1819 },   { -51, -5, 1821 },   { -30, -5, 1823 },   { -5, -4, 1826 },\n    { 21, -4, 1829 },    { 50, -3, 1831 },    { 78, -3, 1834 },    { 105, -3, 1836 },\n    { 131, -2, 1838 },   { 153, -2, 1839 },   { 171, -1, 1840 },   { 184, -1, 1839 },\n    { 193, -1, 1837 },   { 200, -1, 1834 },   { 206, -1, 1831 },   { 210, 0, 1827 },\n    { 214, 0, 1822 },    { 216, 0, 1818 },    { 217, 0, 1813 },    { 218, 0, 1808 },\n    { 218, 0, 1803 },    { 217, 0, 1798 },    { 216, 0, 1793 },    { 215, 0, 1788 },\n    { 214, 0, 1784 },    { 212, 0, 1781 },    { 211, 0, 1778 },    { 210, 0, 1775 },\n    { 209, 0, 1774 },    { 209, 0, 1773 },    { 208, 0, 1774 },    { 208, 0, 1774 },\n    { 208, 0, 1776 },    { 207, 0, 1778 },    { 206, 0, 1780 },    { 205, 0, 1783 },\n    { 204, 0, 1786 },    { 203, 0, 1789 },    { 202, -1, 1792 },   { 201, -1, 1796 },\n    { 199, -1, 1800 },   { 198, -1, 1804 },   { 197, -1, 1808 },   { 195, -2, 1812 },\n    { 194, -2, 1816 },   { 192, -2, 1819 },   { 191, -2, 1823 },   { 190, -2, 1826 },\n    { 188, -2, 1830 },   { 187, -2, 1832 },   { 186, -2, 1835 },   { 185, -1, 1837 },\n    { 184, -1, 1839 },   { 183, 0, 1835 },    { 183, 2, 1826 },    { 183, 6, 1816 },\n    { 184, 7, 1811 },    { 184, 5, 1818 },    { 184, 0, 1831 },    { 184, -1, 1839 },\n    { 184, 0, 1834 },    { 184, 3, 1824 },    { 184, 5, 1817 },    { 184, 5, 1819 },\n    { 184, 3, 1824 },    { 184, 1, 1828 },    { 184, 1, 1829 },    { 184, 1, 1829 },\n    { 184, 1, 1828 },    { 184, 1, 1828 },    { 184, 1, 1828 },    { 184, 1, 1828 },\n    { 184, 1, 1828 },    { 184, 1, 1828 },    { 184, 1, 1828 },    { 184, 1, 1828 },\n    { 184, 1, 1828 },    { 184, 1, 1828 },    { 184, 1, 1828 },    { 184, 1, 1828 },\n    { 184, 1, 1828 },    { 184, 1, 1828 },    { 184, 1, 1828 },    { 184, 1, 1828 },\n    { 184, 1, 1828 },    { 184, 1, 1828 },    { 184, 1, 1828 },    { 184, 1, 1828 },\n    { 184, 1, 1828 },    { 184, 1, 1828 },    { 184, 1, 1828 },    { 184, 1, 1828 },\n    { 184, 1, 1828 },    { 184, 1, 1828 },    { 184, 1, 1828 },    { 184, 1, 1828 },\n    { 184, 1, 1828 },    { 184, 1, 1828 },    { 184, 1, 1828 },    { 184, 1, 1828 },\n    { 184, 1, 1828 },    { 184, 1, 1828 },    { 184, 1, 1828 },    { 184, 1, 1828 },\n    { 184, 1, 1828 },    { 184, 1, 1828 },    { 184, 1, 1828 },    { 184, 1, 1828 },\n    { 184, 1, 1828 },    { 184, 1, 1828 },    { 184, 1, 1828 },    { 184, 1, 1828 },\n    { 184, 1, 1828 },    { 184, 1, 1828 },    { 184, 1, 1828 },    { 184, 1, 1828 },\n    { 184, 1, 1828 },    { 184, 1, 1828 },    { 184, 1, 1828 },    { 184, 1, 1828 },\n    { 184, 1, 1828 },    { 184, 1, 1828 },    { 184, 1, 1828 },    { 184, 1, 1828 },\n    { 184, 1, 1828 },    { 184, 1, 1828 },    { 184, 1, 1828 },    { 184, 1, 1828 },\n    { 189, 2, 1828 },    { 184, 1, 1828 },    { 158, 1, 1827 },    { 128, 0, 1826 },\n    { 94, 0, 1824 },     { 59, -1, 1823 },    { 24, -2, 1822 },    { -8, -3, 1821 },\n    { -36, -4, 1820 },   { -59, -5, 1819 },   { -74, -5, 1818 },   { -80, -6, 1818 },\n};\n\nstatic s16 animdata_mario_lips_1_2[][3] = {\n    { -97, -93, 1924 }, { -97, -93, 1924 }, { -97, -93, 1924 }, { -97, -93, 1924 }, { -97, -93, 1924 },\n    { -97, -93, 1924 }, { -97, -93, 1924 }, { -97, -93, 1924 }, { -97, -93, 1924 }, { -97, -93, 1924 },\n    { -97, -93, 1924 }, { -97, -93, 1924 }, { -97, -93, 1924 }, { -97, -93, 1924 }, { -97, -93, 1924 },\n    { -97, -93, 1924 }, { -97, -93, 1924 }, { -97, -93, 1924 }, { -97, -93, 1924 }, { -97, -93, 1924 },\n    { -97, -93, 1924 }, { -97, -93, 1924 }, { -97, -93, 1924 }, { -97, -93, 1924 }, { -97, -93, 1924 },\n    { -97, -93, 1924 }, { -97, -93, 1924 }, { -97, -93, 1924 }, { -97, -93, 1924 }, { -97, -93, 1924 },\n    { -97, -93, 1924 }, { -97, -93, 1924 }, { -97, -93, 1924 }, { -97, -93, 1924 }, { -97, -93, 1924 },\n    { -97, -93, 1924 }, { -97, -93, 1924 }, { -97, -93, 1924 }, { -97, -93, 1924 }, { -97, -93, 1924 },\n    { -97, -93, 1924 }, { -97, -93, 1924 }, { -97, -93, 1924 }, { -97, -93, 1924 }, { -97, -93, 1924 },\n    { -97, -93, 1924 }, { -97, -92, 1924 }, { -97, -91, 1922 }, { -97, -90, 1921 }, { -96, -88, 1919 },\n    { -96, -86, 1917 }, { -95, -84, 1914 }, { -95, -82, 1912 }, { -95, -79, 1909 }, { -94, -77, 1906 },\n    { -94, -74, 1904 }, { -93, -72, 1901 }, { -93, -70, 1898 }, { -92, -68, 1895 }, { -92, -66, 1893 },\n    { -92, -64, 1891 }, { -91, -63, 1889 }, { -91, -63, 1887 }, { -91, -62, 1885 }, { -91, -62, 1884 },\n    { -90, -62, 1882 }, { -90, -62, 1881 }, { -90, -62, 1880 }, { -90, -62, 1878 }, { -90, -62, 1877 },\n    { -90, -62, 1875 }, { -89, -63, 1874 }, { -89, -63, 1873 }, { -89, -64, 1871 }, { -89, -65, 1870 },\n    { -89, -65, 1869 }, { -89, -66, 1867 }, { -89, -66, 1866 }, { -88, -67, 1865 }, { -88, -68, 1864 },\n    { -88, -68, 1863 }, { -88, -69, 1862 }, { -88, -69, 1861 }, { -88, -69, 1860 }, { -88, -70, 1859 },\n    { -88, -70, 1858 }, { -88, -70, 1857 }, { -88, -70, 1856 }, { -87, -70, 1855 }, { -87, -69, 1855 },\n    { -87, -69, 1854 }, { -87, -68, 1853 }, { -87, -68, 1853 }, { -87, -67, 1852 }, { -87, -66, 1851 },\n    { -87, -66, 1851 }, { -86, -65, 1850 }, { -86, -64, 1849 }, { -86, -63, 1849 }, { -86, -63, 1848 },\n    { -86, -62, 1847 }, { -86, -61, 1847 }, { -86, -60, 1846 }, { -86, -59, 1845 }, { -85, -58, 1845 },\n    { -85, -57, 1844 }, { -85, -56, 1843 }, { -85, -55, 1842 }, { -85, -54, 1842 }, { -85, -53, 1841 },\n    { -85, -52, 1840 }, { -85, -51, 1840 }, { -84, -50, 1839 }, { -84, -49, 1839 }, { -84, -47, 1838 },\n    { -84, -46, 1837 }, { -84, -45, 1837 }, { -84, -44, 1836 }, { -84, -43, 1835 }, { -83, -42, 1835 },\n    { -83, -41, 1834 }, { -83, -39, 1833 }, { -83, -38, 1833 }, { -83, -37, 1832 }, { -83, -36, 1832 },\n    { -83, -35, 1831 }, { -83, -34, 1831 }, { -82, -33, 1830 }, { -82, -31, 1829 }, { -82, -30, 1829 },\n    { -82, -29, 1828 }, { -82, -28, 1828 }, { -82, -27, 1827 }, { -82, -26, 1827 }, { -82, -25, 1826 },\n    { -81, -24, 1826 }, { -81, -23, 1825 }, { -81, -22, 1825 }, { -81, -21, 1824 }, { -81, -20, 1824 },\n    { -81, -19, 1824 }, { -81, -18, 1823 }, { -81, -17, 1823 }, { -81, -16, 1822 }, { -81, -15, 1822 },\n    { -80, -15, 1822 }, { -80, -14, 1821 }, { -80, -13, 1821 }, { -80, -12, 1821 }, { -80, -12, 1820 },\n    { -80, -11, 1820 }, { -80, -10, 1820 }, { -80, -10, 1820 }, { -80, -9, 1819 },  { -80, -9, 1819 },\n    { -80, -8, 1819 },  { -80, -8, 1819 },  { -80, -7, 1819 },  { -80, -7, 1818 },  { -80, -7, 1818 },\n    { -80, -6, 1818 },  { -80, -6, 1818 },  { -80, -6, 1818 },  { -80, -6, 1818 },  { -80, -6, 1818 },\n    { -80, -6, 1818 },\n};\n\nstruct AnimDataInfo anim_mario_lips_1[] = {\n    { ARRAY_COUNT(animdata_mario_lips_1_1), GD_ANIM_ROT3S, animdata_mario_lips_1_1 },\n    { ARRAY_COUNT(animdata_mario_lips_1_2), GD_ANIM_ROT3S, animdata_mario_lips_1_2 },\n    END_ANIMDATA_INFO_ARR,\n};\n"
  },
  {
    "path": "src/goddard/dynlists/anim_mario_lips_2.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"macros.h\"\n#include \"animdata.h\"\n#include \"../gd_types.h\"\n\nstatic s16 animdata_mario_lips_2_1[][3] = {\n    { -97, -3, -1771 },   { -97, -3, -1772 },   { -97, -3, -1772 },   { -97, -4, -1773 },\n    { -97, -4, -1773 },   { -97, -4, -1774 },   { -97, -4, -1775 },   { -97, -4, -1776 },\n    { -97, -4, -1777 },   { -97, -5, -1778 },   { -97, -5, -1779 },   { -97, -5, -1780 },\n    { -97, -5, -1781 },   { -97, -5, -1781 },   { -97, -5, -1781 },   { -97, -5, -1781 },\n    { -97, -5, -1781 },   { -97, -5, -1780 },   { -97, -5, -1778 },   { -97, -4, -1777 },\n    { -97, -4, -1774 },   { -97, -3, -1771 },   { -97, -2, -1764 },   { -97, 0, -1750 },\n    { -97, 2, -1733 },    { -96, 5, -1714 },    { -96, 8, -1698 },    { -96, 10, -1686 },\n    { -96, 11, -1681 },   { -96, 11, -1683 },   { -96, 10, -1690 },   { -96, 8, -1699 },\n    { -96, 6, -1711 },    { -97, 4, -1723 },    { -97, 2, -1736 },    { -97, 0, -1748 },\n    { -97, -1, -1759 },   { -97, -3, -1767 },   { -97, -3, -1771 },   { -97, -4, -1773 },\n    { -97, -4, -1775 },   { -97, -4, -1777 },   { -97, -5, -1778 },   { -97, -5, -1779 },\n    { -97, -5, -1780 },   { -97, -5, -1781 },   { -97, -5, -1781 },   { -97, -5, -1781 },\n    { -97, -5, -1781 },   { -97, -5, -1781 },   { -97, -5, -1781 },   { -97, -5, -1781 },\n    { -97, -5, -1780 },   { -97, -5, -1780 },   { -97, -5, -1779 },   { -97, -5, -1779 },\n    { -97, -4, -1778 },   { -97, -4, -1777 },   { -97, -4, -1776 },   { -97, -4, -1776 },\n    { -97, -4, -1775 },   { -97, -4, -1774 },   { -97, -4, -1774 },   { -97, -4, -1773 },\n    { -97, -4, -1772 },   { -97, -3, -1772 },   { -97, -3, -1772 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1772 },   { -97, -4, -1773 },   { -97, -4, -1775 },\n    { -97, -4, -1776 },   { -97, -4, -1777 },   { -97, -4, -1777 },   { -97, -4, -1777 },\n    { -97, -4, -1778 },   { -97, -4, -1778 },   { -97, -4, -1778 },   { -97, -5, -1778 },\n    { -97, -5, -1778 },   { -97, -5, -1778 },   { -97, -5, -1778 },   { -97, -5, -1778 },\n    { -97, -5, -1778 },   { -97, -5, -1778 },   { -97, -4, -1778 },   { -97, -4, -1778 },\n    { -97, -4, -1778 },   { -97, -4, -1777 },   { -97, -4, -1777 },   { -97, -4, -1777 },\n    { -97, -4, -1776 },   { -97, -4, -1775 },   { -97, -4, -1774 },   { -97, -4, -1773 },\n    { -97, -3, -1772 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1772 },   { -97, -4, -1773 },   { -97, -4, -1775 },\n    { -97, -4, -1778 },   { -97, -5, -1781 },   { -97, -5, -1784 },   { -98, -6, -1788 },\n    { -98, -7, -1791 },   { -98, -7, -1795 },   { -98, -8, -1799 },   { -98, -8, -1803 },\n    { -98, -9, -1806 },   { -98, -9, -1809 },   { -99, -10, -1811 },  { -99, -10, -1813 },\n    { -99, -10, -1814 },  { -99, -10, -1814 },  { -99, -10, -1813 },  { -99, -10, -1811 },\n    { -98, -9, -1808 },   { -98, -9, -1804 },   { -98, -8, -1798 },   { -98, -7, -1791 },\n    { -97, -5, -1782 },   { -97, -3, -1771 },   { -95, 3, -1728 },    { -91, 17, -1641 },\n    { -87, 33, -1542 },   { -83, 46, -1460 },   { -82, 52, -1426 },   { -82, 50, -1438 },\n    { -84, 45, -1470 },   { -86, 37, -1517 },   { -88, 28, -1573 },   { -91, 18, -1632 },\n    { -93, 9, -1689 },    { -95, 1, -1737 },    { -97, -3, -1771 },   { -98, -7, -1792 },\n    { -98, -9, -1804 },   { -99, -10, -1810 },  { -99, -10, -1811 },  { -99, -10, -1809 },\n    { -99, -9, -1807 },   { -99, -9, -1805 },   { -99, -9, -1805 },   { -99, -9, -1805 },\n    { -99, -9, -1805 },   { -100, -9, -1805 },  { -100, -9, -1804 },  { -100, -9, -1804 },\n    { -100, -9, -1803 },  { -100, -9, -1802 },  { -101, -9, -1801 },  { -101, -9, -1800 },\n    { -101, -9, -1799 },  { -101, -8, -1798 },  { -102, -8, -1797 },  { -102, -8, -1796 },\n    { -102, -8, -1795 },  { -102, -8, -1794 },  { -103, -8, -1793 },  { -103, -8, -1791 },\n    { -103, -7, -1790 },  { -103, -7, -1789 },  { -103, -7, -1787 },  { -103, -7, -1786 },\n    { -103, -7, -1785 },  { -103, -6, -1783 },  { -102, -6, -1782 },  { -102, -6, -1781 },\n    { -102, -6, -1779 },  { -101, -5, -1778 },  { -101, -5, -1777 },  { -100, -5, -1776 },\n    { -100, -4, -1775 },  { -99, -4, -1773 },   { -98, -4, -1772 },   { -97, -3, -1771 },\n    { -95, -3, -1770 },   { -92, -2, -1769 },   { -88, -1, -1769 },   { -83, 0, -1768 },\n    { -78, 0, -1767 },    { -72, 1, -1766 },    { -67, 2, -1765 },    { -62, 3, -1764 },\n    { -57, 4, -1763 },    { -54, 5, -1762 },    { -51, 6, -1761 },    { -50, 6, -1759 },\n    { -48, 6, -1758 },    { -47, 7, -1756 },    { -46, 7, -1754 },    { -45, 8, -1752 },\n    { -45, 8, -1749 },    { -45, 8, -1747 },    { -45, 8, -1745 },    { -45, 8, -1743 },\n    { -45, 8, -1741 },    { -46, 8, -1740 },    { -47, 8, -1739 },    { -48, 8, -1738 },\n    { -49, 8, -1738 },    { -51, 8, -1738 },    { -54, 7, -1739 },    { -58, 6, -1742 },\n    { -63, 5, -1745 },    { -68, 3, -1749 },    { -74, 2, -1754 },    { -80, 0, -1758 },\n    { -86, 0, -1763 },    { -91, -2, -1767 },   { -94, -3, -1770 },   { -97, -3, -1771 },\n    { -98, -4, -1772 },   { -100, -4, -1773 },  { -101, -4, -1774 },  { -102, -5, -1774 },\n    { -103, -5, -1774 },  { -104, -5, -1774 },  { -104, -5, -1774 },  { -105, -5, -1773 },\n    { -105, -5, -1773 },  { -105, -5, -1773 },  { -105, -5, -1772 },  { -104, -5, -1772 },\n    { -104, -5, -1771 },  { -103, -5, -1771 },  { -102, -4, -1771 },  { -101, -4, -1771 },\n    { -100, -4, -1771 },  { -99, -4, -1771 },   { -97, -3, -1771 },   { -92, -3, -1773 },\n    { -84, -1, -1775 },   { -74, 0, -1777 },    { -64, 1, -1780 },    { -56, 3, -1782 },\n    { -52, 3, -1784 },    { -50, 4, -1784 },    { -49, 4, -1784 },    { -48, 4, -1785 },\n    { -47, 4, -1785 },    { -47, 4, -1785 },    { -46, 4, -1785 },    { -46, 4, -1785 },\n    { -47, 4, -1785 },    { -47, 4, -1785 },    { -47, 4, -1785 },    { -48, 4, -1785 },\n    { -48, 4, -1784 },    { -49, 4, -1784 },    { -49, 4, -1784 },    { -50, 4, -1784 },\n    { -50, 4, -1784 },    { -51, 4, -1784 },    { -51, 4, -1784 },    { -52, 3, -1784 },\n    { -52, 3, -1784 },    { -52, 3, -1784 },    { -52, 3, -1784 },    { -52, 3, -1784 },\n    { -52, 3, -1784 },    { -52, 3, -1784 },    { -52, 3, -1784 },    { -52, 3, -1784 },\n    { -52, 3, -1784 },    { -52, 3, -1784 },    { -52, 3, -1784 },    { -52, 3, -1784 },\n    { -52, 3, -1784 },    { -52, 3, -1784 },    { -52, 3, -1784 },    { -52, 3, -1784 },\n    { -52, 3, -1784 },    { -52, 3, -1784 },    { -52, 3, -1784 },    { -52, 3, -1784 },\n    { -52, 3, -1784 },    { -52, 3, -1784 },    { -52, 3, -1784 },    { -52, 3, -1784 },\n    { -52, 3, -1784 },    { -52, 3, -1784 },    { -52, 3, -1784 },    { -52, 3, -1784 },\n    { -52, 3, -1784 },    { -52, 3, -1784 },    { -52, 3, -1784 },    { -52, 3, -1784 },\n    { -52, 3, -1784 },    { -52, 3, -1784 },    { -52, 3, -1784 },    { -52, 3, -1784 },\n    { -52, 3, -1784 },    { -52, 3, -1784 },    { -52, 3, -1784 },    { -52, 3, -1784 },\n    { -52, 3, -1784 },    { -52, 3, -1784 },    { -52, 3, -1784 },    { -52, 3, -1784 },\n    { -52, 3, -1785 },    { -52, 3, -1787 },    { -52, 3, -1791 },    { -52, 2, -1795 },\n    { -52, 2, -1800 },    { -52, 2, -1803 },    { -52, 2, -1806 },    { -52, 1, -1807 },\n    { -52, 2, -1806 },    { -52, 2, -1802 },    { -52, 2, -1795 },    { -52, 3, -1784 },\n    { -51, 7, -1744 },    { -49, 13, -1674 },   { -47, 19, -1606 },   { -46, 22, -1572 },\n    { -46, 22, -1570 },   { -45, 22, -1576 },   { -44, 21, -1589 },   { -44, 20, -1606 },\n    { -44, 18, -1626 },   { -44, 16, -1648 },   { -45, 15, -1670 },   { -47, 12, -1691 },\n    { -51, 10, -1709 },   { -58, 7, -1730 },    { -70, 2, -1755 },    { -84, -3, -1779 },\n    { -94, -7, -1798 },   { -99, -9, -1805 },   { -100, -9, -1806 },  { -100, -9, -1807 },\n    { -101, -10, -1808 }, { -101, -10, -1809 }, { -101, -10, -1810 }, { -102, -10, -1811 },\n    { -102, -10, -1811 }, { -102, -10, -1812 }, { -103, -11, -1813 }, { -103, -11, -1813 },\n    { -103, -11, -1814 }, { -104, -11, -1814 }, { -104, -11, -1815 }, { -104, -11, -1815 },\n    { -104, -11, -1816 }, { -105, -11, -1816 }, { -105, -11, -1817 }, { -105, -12, -1817 },\n    { -105, -12, -1817 }, { -105, -12, -1818 }, { -105, -12, -1818 }, { -106, -12, -1818 },\n    { -106, -12, -1818 }, { -106, -12, -1818 }, { -106, -12, -1819 }, { -106, -12, -1819 },\n    { -106, -12, -1819 }, { -106, -12, -1819 }, { -106, -12, -1819 }, { -106, -12, -1819 },\n    { -106, -12, -1819 }, { -106, -12, -1819 }, { -106, -12, -1819 }, { -106, -12, -1819 },\n    { -106, -12, -1819 }, { -106, -12, -1819 }, { -106, -12, -1819 }, { -106, -12, -1819 },\n    { -106, -12, -1818 }, { -106, -12, -1818 }, { -106, -12, -1818 }, { -105, -12, -1818 },\n    { -105, -12, -1818 }, { -105, -12, -1817 }, { -105, -12, -1817 }, { -105, -12, -1817 },\n    { -105, -11, -1817 }, { -105, -11, -1817 }, { -105, -11, -1816 }, { -104, -11, -1816 },\n    { -104, -11, -1816 }, { -104, -11, -1815 }, { -104, -11, -1815 }, { -104, -11, -1815 },\n    { -104, -11, -1815 }, { -104, -11, -1814 }, { -103, -11, -1814 }, { -103, -11, -1814 },\n    { -103, -11, -1813 }, { -103, -11, -1813 }, { -103, -11, -1813 }, { -103, -11, -1812 },\n    { -102, -10, -1812 }, { -102, -10, -1812 }, { -102, -10, -1811 }, { -102, -10, -1811 },\n    { -102, -10, -1811 }, { -102, -10, -1810 }, { -101, -10, -1810 }, { -101, -10, -1810 },\n    { -101, -10, -1809 }, { -101, -10, -1809 }, { -101, -10, -1809 }, { -101, -10, -1809 },\n    { -101, -10, -1808 }, { -100, -10, -1808 }, { -100, -10, -1808 }, { -100, -10, -1807 },\n    { -100, -9, -1807 },  { -100, -9, -1807 },  { -100, -9, -1807 },  { -100, -9, -1807 },\n    { -100, -9, -1806 },  { -100, -9, -1806 },  { -99, -9, -1806 },   { -99, -9, -1806 },\n    { -99, -9, -1806 },   { -99, -9, -1806 },   { -99, -9, -1806 },   { -99, -9, -1806 },\n    { -99, -9, -1806 },   { -99, -9, -1806 },   { -99, -9, -1805 },   { -99, -9, -1805 },\n    { -99, -9, -1805 },   { -99, -9, -1805 },   { -99, -9, -1805 },   { -99, -9, -1805 },\n    { -99, -9, -1805 },   { -99, -9, -1805 },   { -99, -9, -1805 },   { -99, -9, -1805 },\n    { -99, -9, -1805 },   { -99, -9, -1805 },   { -99, -9, -1805 },   { -99, -9, -1805 },\n    { -99, -9, -1805 },   { -99, -9, -1805 },   { -99, -9, -1805 },   { -99, -9, -1805 },\n    { -99, -9, -1805 },   { -99, -9, -1805 },   { -99, -9, -1805 },   { -99, -9, -1805 },\n    { -99, -9, -1805 },   { -99, -9, -1805 },   { -99, -9, -1805 },   { -99, -9, -1805 },\n    { -99, -9, -1805 },   { -99, -9, -1805 },   { -99, -9, -1805 },   { -99, -9, -1805 },\n    { -99, -9, -1805 },   { -99, -9, -1805 },   { -99, -9, -1805 },   { -99, -9, -1805 },\n    { -99, -9, -1805 },   { -99, -9, -1805 },   { -99, -9, -1805 },   { -99, -9, -1805 },\n    { -99, -9, -1805 },   { -99, -9, -1805 },   { -99, -9, -1805 },   { -99, -9, -1805 },\n    { -99, -9, -1805 },   { -99, -9, -1805 },   { -99, -9, -1805 },   { -99, -9, -1805 },\n    { -99, -9, -1805 },   { -99, -9, -1805 },   { -99, -9, -1805 },   { -99, -9, -1805 },\n    { -99, -9, -1805 },   { -99, -9, -1805 },   { -99, -9, -1805 },   { -99, -9, -1805 },\n    { -99, -9, -1805 },   { -99, -9, -1805 },   { -99, -9, -1805 },   { -99, -9, -1805 },\n    { -99, -9, -1805 },   { -99, -9, -1805 },   { -99, -9, -1805 },   { -99, -9, -1805 },\n    { -99, -9, -1805 },   { -99, -9, -1805 },   { -99, -9, -1805 },   { -99, -9, -1805 },\n    { -99, -9, -1805 },   { -99, -9, -1805 },   { -99, -9, -1805 },   { -99, -9, -1805 },\n    { -99, -9, -1805 },   { -99, -9, -1805 },   { -99, -9, -1805 },   { -99, -9, -1806 },\n    { -99, -9, -1806 },   { -99, -9, -1806 },   { -99, -9, -1806 },   { -99, -9, -1806 },\n    { -99, -9, -1806 },   { -99, -9, -1806 },   { -99, -9, -1806 },   { -99, -9, -1806 },\n    { -99, -9, -1807 },   { -99, -9, -1807 },   { -99, -9, -1807 },   { -99, -9, -1807 },\n    { -99, -9, -1807 },   { -99, -9, -1807 },   { -99, -9, -1807 },   { -99, -9, -1807 },\n    { -99, -9, -1807 },   { -99, -9, -1807 },   { -99, -9, -1807 },   { -99, -9, -1807 },\n    { -99, -9, -1807 },   { -99, -9, -1807 },   { -99, -9, -1807 },   { -99, -9, -1807 },\n    { -99, -9, -1806 },   { -99, -9, -1806 },   { -99, -9, -1805 },   { -99, -9, -1805 },\n    { -99, -9, -1804 },   { -99, -9, -1804 },   { -99, -9, -1803 },   { -99, -9, -1803 },\n    { -99, -9, -1802 },   { -99, -8, -1801 },   { -99, -8, -1801 },   { -99, -8, -1800 },\n    { -99, -8, -1799 },   { -99, -8, -1799 },   { -99, -8, -1798 },   { -99, -8, -1797 },\n    { -99, -8, -1796 },   { -98, -7, -1795 },   { -98, -7, -1794 },   { -98, -7, -1794 },\n    { -98, -7, -1793 },   { -98, -7, -1792 },   { -98, -7, -1791 },   { -98, -7, -1790 },\n    { -98, -6, -1789 },   { -98, -6, -1788 },   { -98, -6, -1787 },   { -98, -6, -1787 },\n    { -98, -6, -1786 },   { -98, -6, -1785 },   { -98, -5, -1784 },   { -98, -5, -1783 },\n    { -98, -5, -1782 },   { -98, -5, -1781 },   { -97, -5, -1780 },   { -97, -5, -1780 },\n    { -97, -5, -1779 },   { -97, -4, -1778 },   { -97, -4, -1777 },   { -97, -4, -1777 },\n    { -97, -4, -1776 },   { -97, -4, -1775 },   { -97, -4, -1774 },   { -97, -4, -1774 },\n    { -97, -4, -1773 },   { -97, -4, -1772 },   { -97, -3, -1772 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1770 },   { -97, -3, -1770 },\n    { -97, -3, -1770 },   { -97, -3, -1770 },   { -97, -3, -1770 },   { -97, -3, -1770 },\n    { -97, -3, -1770 },   { -97, -3, -1770 },   { -97, -3, -1770 },   { -97, -3, -1770 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n    { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },   { -97, -3, -1771 },\n};\n\nstatic s16 animdata_mario_lips_2_2[][3] = {\n    { -96, -15, -1839 }, { -96, -15, -1839 }, { -96, -15, -1839 }, { -96, -15, -1839 },\n    { -96, -15, -1839 }, { -96, -15, -1839 }, { -96, -15, -1839 }, { -96, -15, -1839 },\n    { -96, -15, -1839 }, { -96, -15, -1839 }, { -96, -15, -1839 }, { -96, -15, -1839 },\n    { -96, -15, -1839 }, { -96, -15, -1839 }, { -96, -15, -1839 }, { -96, -15, -1839 },\n    { -96, -15, -1839 }, { -96, -15, -1839 }, { -96, -15, -1839 }, { -96, -15, -1839 },\n    { -96, -15, -1839 }, { -96, -15, -1839 }, { -96, -15, -1839 }, { -96, -15, -1839 },\n    { -96, -15, -1839 }, { -96, -15, -1839 }, { -96, -15, -1839 }, { -96, -15, -1839 },\n    { -96, -15, -1839 }, { -96, -15, -1839 }, { -96, -15, -1839 }, { -96, -15, -1839 },\n    { -96, -15, -1839 }, { -96, -15, -1839 }, { -96, -15, -1839 }, { -96, -15, -1839 },\n    { -96, -15, -1839 }, { -96, -15, -1839 }, { -96, -15, -1839 }, { -96, -15, -1839 },\n    { -96, -15, -1839 }, { -96, -15, -1839 }, { -96, -15, -1839 }, { -96, -15, -1839 },\n    { -96, -15, -1839 }, { -96, -15, -1839 }, { -96, -15, -1839 }, { -96, -15, -1838 },\n    { -96, -15, -1837 }, { -96, -14, -1836 }, { -96, -14, -1835 }, { -96, -14, -1834 },\n    { -96, -14, -1832 }, { -96, -13, -1831 }, { -96, -13, -1829 }, { -96, -13, -1827 },\n    { -96, -13, -1825 }, { -96, -12, -1824 }, { -96, -12, -1822 }, { -96, -12, -1820 },\n    { -96, -11, -1818 }, { -96, -11, -1817 }, { -96, -11, -1815 }, { -96, -11, -1814 },\n    { -96, -10, -1812 }, { -96, -10, -1810 }, { -96, -10, -1808 }, { -96, -9, -1807 },\n    { -96, -9, -1805 },  { -96, -9, -1803 },  { -96, -8, -1800 },  { -96, -8, -1798 },\n    { -96, -8, -1796 },  { -96, -7, -1794 },  { -96, -7, -1792 },  { -96, -7, -1790 },\n    { -96, -6, -1788 },  { -96, -6, -1786 },  { -97, -6, -1784 },  { -97, -5, -1782 },\n    { -97, -5, -1780 },  { -97, -5, -1779 },  { -97, -4, -1777 },  { -97, -4, -1776 },\n    { -97, -4, -1775 },  { -97, -4, -1774 },  { -97, -4, -1773 },  { -97, -3, -1772 },\n    { -97, -3, -1771 },  { -97, -3, -1771 },  { -97, -3, -1771 },  { -97, -3, -1771 },\n    { -97, -3, -1771 },  { -97, -3, -1772 },  { -97, -4, -1772 },  { -97, -4, -1773 },\n    { -97, -4, -1774 },  { -97, -4, -1775 },  { -97, -4, -1776 },  { -97, -4, -1777 },\n    { -97, -5, -1778 },  { -97, -5, -1779 },  { -97, -5, -1781 },  { -97, -5, -1782 },\n    { -96, -6, -1784 },  { -96, -6, -1786 },  { -96, -6, -1787 },  { -96, -6, -1789 },\n    { -96, -7, -1790 },  { -96, -7, -1792 },  { -96, -7, -1794 },  { -96, -8, -1796 },\n    { -96, -8, -1797 },  { -96, -8, -1799 },  { -96, -8, -1801 },  { -96, -9, -1802 },\n    { -96, -9, -1804 },  { -96, -9, -1805 },  { -96, -9, -1807 },  { -96, -10, -1808 },\n    { -96, -10, -1809 }, { -96, -10, -1810 }, { -96, -10, -1811 }, { -96, -10, -1812 },\n    { -96, -11, -1813 }, { -96, -11, -1814 }, { -96, -11, -1815 }, { -96, -11, -1815 },\n    { -96, -11, -1815 }, { -96, -11, -1815 }, { -96, -11, -1815 }, { -96, -11, -1815 },\n    { -96, -11, -1814 }, { -96, -11, -1814 }, { -96, -10, -1813 }, { -96, -10, -1812 },\n    { -96, -10, -1811 }, { -96, -10, -1810 }, { -96, -10, -1808 }, { -96, -9, -1807 },\n    { -96, -9, -1806 },  { -96, -9, -1804 },  { -96, -9, -1802 },  { -96, -8, -1801 },\n    { -96, -8, -1799 },  { -96, -8, -1797 },  { -96, -7, -1795 },  { -96, -7, -1793 },\n    { -96, -7, -1792 },  { -97, -7, -1790 },  { -97, -6, -1788 },  { -97, -6, -1786 },\n    { -97, -6, -1784 },  { -97, -5, -1783 },  { -97, -5, -1781 },  { -97, -5, -1780 },\n    { -97, -5, -1778 },  { -97, -4, -1777 },  { -97, -4, -1776 },  { -97, -4, -1775 },\n    { -97, -4, -1774 },  { -97, -4, -1773 },  { -97, -4, -1772 },  { -97, -3, -1772 },\n    { -97, -3, -1771 },  { -97, -3, -1771 },\n};\n\nstruct AnimDataInfo anim_mario_lips_2[] = {\n    { ARRAY_COUNT(animdata_mario_lips_2_1), GD_ANIM_ROT3S, animdata_mario_lips_2_1 },\n    { ARRAY_COUNT(animdata_mario_lips_2_2), GD_ANIM_ROT3S, animdata_mario_lips_2_2 },\n    END_ANIMDATA_INFO_ARR,\n};\n"
  },
  {
    "path": "src/goddard/dynlists/anim_mario_mustache_left.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"macros.h\"\n#include \"animdata.h\"\n#include \"../gd_types.h\"\n\nstatic s16 animdata_mario_mustache_left_1[][3] = {\n    { -1799, -1645, -293 }, { -1799, -1645, -293 }, { -1800, -1645, -292 }, { -1800, -1645, -291 },\n    { -1800, -1645, -290 }, { -1800, -1645, -289 }, { -1801, -1645, -287 }, { -1801, -1645, -286 },\n    { -1802, -1645, -284 }, { -1802, -1645, -283 }, { -1802, -1644, -281 }, { -1803, -1644, -280 },\n    { -1803, -1644, -280 }, { -1803, -1644, -279 }, { -1803, -1644, -279 }, { -1803, -1644, -280 },\n    { -1802, -1644, -281 }, { -1802, -1645, -283 }, { -1801, -1645, -285 }, { -1800, -1645, -289 },\n    { -1799, -1645, -293 }, { -1796, -1645, -305 }, { -1790, -1646, -329 }, { -1782, -1646, -357 },\n    { -1775, -1647, -385 }, { -1770, -1648, -405 }, { -1768, -1648, -412 }, { -1771, -1648, -402 },\n    { -1777, -1647, -379 }, { -1785, -1647, -349 }, { -1793, -1646, -317 }, { -1800, -1645, -289 },\n    { -1806, -1645, -269 }, { -1806, -1645, -269 }, { -1802, -1645, -284 }, { -1799, -1645, -293 },\n    { -1799, -1645, -294 }, { -1799, -1645, -294 }, { -1799, -1645, -295 }, { -1799, -1645, -295 },\n    { -1799, -1645, -295 }, { -1799, -1645, -296 }, { -1799, -1645, -296 }, { -1798, -1645, -296 },\n    { -1798, -1645, -296 }, { -1798, -1645, -296 }, { -1798, -1645, -296 }, { -1798, -1645, -296 },\n    { -1798, -1645, -296 }, { -1798, -1645, -296 }, { -1799, -1645, -296 }, { -1799, -1645, -296 },\n    { -1799, -1645, -296 }, { -1799, -1645, -295 }, { -1799, -1645, -295 }, { -1799, -1645, -295 },\n    { -1799, -1645, -295 }, { -1799, -1645, -295 }, { -1799, -1645, -294 }, { -1799, -1645, -294 },\n    { -1799, -1645, -294 }, { -1799, -1645, -294 }, { -1799, -1645, -293 }, { -1799, -1645, -293 },\n    { -1799, -1645, -293 }, { -1799, -1645, -293 }, { -1799, -1645, -293 }, { -1799, -1645, -293 },\n    { -1799, -1645, -293 }, { -1799, -1645, -293 }, { -1799, -1645, -293 }, { -1799, -1645, -293 },\n    { -1799, -1645, -293 }, { -1799, -1645, -293 }, { -1799, -1645, -293 }, { -1799, -1645, -293 },\n    { -1799, -1645, -293 }, { -1799, -1645, -293 }, { -1799, -1645, -293 }, { -1799, -1645, -293 },\n    { -1799, -1645, -293 }, { -1799, -1645, -293 }, { -1800, -1645, -292 }, { -1800, -1645, -289 },\n    { -1801, -1645, -286 }, { -1802, -1645, -283 }, { -1803, -1644, -281 }, { -1802, -1644, -281 },\n    { -1801, -1645, -285 }, { -1799, -1645, -293 }, { -1793, -1645, -317 }, { -1782, -1647, -358 },\n    { -1772, -1648, -397 }, { -1766, -1648, -418 }, { -1765, -1648, -423 }, { -1764, -1649, -428 },\n    { -1763, -1649, -432 }, { -1762, -1649, -435 }, { -1761, -1649, -438 }, { -1760, -1649, -440 },\n    { -1760, -1649, -441 }, { -1760, -1649, -442 }, { -1760, -1649, -442 }, { -1760, -1649, -442 },\n    { -1760, -1649, -441 }, { -1761, -1649, -439 }, { -1761, -1649, -437 }, { -1762, -1649, -434 },\n    { -1763, -1649, -431 }, { -1764, -1649, -427 }, { -1765, -1648, -423 }, { -1766, -1648, -418 },\n    { -1770, -1648, -405 }, { -1776, -1647, -381 }, { -1784, -1646, -352 }, { -1791, -1646, -324 },\n    { -1797, -1645, -302 }, { -1799, -1645, -293 }, { -1799, -1645, -293 }, { -1799, -1645, -293 },\n    { -1799, -1645, -295 }, { -1798, -1645, -298 }, { -1797, -1645, -301 }, { -1796, -1645, -306 },\n    { -1795, -1645, -310 }, { -1793, -1645, -316 }, { -1792, -1645, -322 }, { -1790, -1645, -328 },\n    { -1788, -1646, -334 }, { -1787, -1646, -341 }, { -1785, -1646, -347 }, { -1783, -1646, -354 },\n    { -1781, -1646, -360 }, { -1780, -1646, -366 }, { -1778, -1646, -372 }, { -1777, -1646, -378 },\n    { -1775, -1647, -383 }, { -1774, -1647, -387 }, { -1773, -1647, -391 }, { -1772, -1647, -394 },\n    { -1772, -1647, -397 }, { -1771, -1647, -399 }, { -1771, -1647, -401 }, { -1770, -1647, -403 },\n    { -1770, -1647, -404 }, { -1770, -1647, -405 }, { -1769, -1647, -405 }, { -1769, -1647, -405 },\n    { -1769, -1647, -405 }, { -1770, -1647, -405 }, { -1770, -1647, -404 }, { -1770, -1647, -403 },\n    { -1770, -1647, -401 }, { -1771, -1647, -399 }, { -1772, -1647, -397 }, { -1772, -1647, -394 },\n    { -1773, -1647, -391 }, { -1774, -1647, -388 }, { -1775, -1647, -383 }, { -1776, -1646, -379 },\n    { -1778, -1646, -373 }, { -1779, -1646, -368 }, { -1781, -1646, -362 }, { -1782, -1646, -356 },\n    { -1784, -1646, -350 }, { -1786, -1646, -344 }, { -1787, -1646, -338 }, { -1789, -1646, -332 },\n    { -1790, -1645, -326 }, { -1792, -1645, -320 }, { -1793, -1645, -315 }, { -1795, -1645, -310 },\n    { -1796, -1645, -305 }, { -1797, -1645, -300 }, { -1798, -1645, -296 }, { -1799, -1645, -293 },\n    { -1800, -1645, -290 }, { -1801, -1645, -288 }, { -1801, -1645, -287 }, { -1801, -1645, -286 },\n    { -1801, -1645, -286 }, { -1801, -1645, -286 }, { -1801, -1645, -286 }, { -1801, -1645, -287 },\n    { -1801, -1645, -288 }, { -1800, -1645, -289 }, { -1800, -1645, -290 }, { -1800, -1645, -292 },\n    { -1799, -1645, -293 }, { -1799, -1645, -294 }, { -1798, -1645, -296 }, { -1798, -1645, -299 },\n    { -1797, -1645, -301 }, { -1796, -1645, -304 }, { -1796, -1645, -307 }, { -1795, -1645, -310 },\n    { -1794, -1645, -314 }, { -1793, -1645, -317 }, { -1792, -1645, -320 }, { -1791, -1645, -324 },\n    { -1790, -1645, -327 }, { -1789, -1645, -330 }, { -1789, -1645, -333 }, { -1788, -1645, -336 },\n    { -1787, -1645, -338 }, { -1787, -1645, -341 }, { -1786, -1645, -342 }, { -1786, -1645, -344 },\n    { -1785, -1645, -345 }, { -1785, -1645, -345 }, { -1785, -1645, -345 }, { -1786, -1645, -344 },\n    { -1786, -1645, -343 }, { -1787, -1645, -340 }, { -1791, -1645, -326 }, { -1799, -1646, -295 },\n    { -1808, -1646, -258 }, { -1816, -1646, -228 }, { -1820, -1646, -216 }, { -1819, -1646, -220 },\n    { -1816, -1646, -232 }, { -1811, -1646, -249 }, { -1806, -1646, -269 }, { -1800, -1646, -290 },\n    { -1795, -1646, -311 }, { -1790, -1645, -328 }, { -1787, -1645, -340 }, { -1785, -1645, -348 },\n    { -1784, -1645, -352 }, { -1783, -1645, -353 }, { -1783, -1645, -353 }, { -1783, -1645, -352 },\n    { -1784, -1645, -351 }, { -1784, -1645, -351 }, { -1784, -1645, -351 }, { -1784, -1645, -351 },\n    { -1784, -1645, -351 }, { -1784, -1645, -350 }, { -1784, -1645, -350 }, { -1784, -1645, -350 },\n    { -1784, -1645, -350 }, { -1784, -1645, -349 }, { -1784, -1645, -349 }, { -1784, -1645, -349 },\n    { -1785, -1645, -348 }, { -1785, -1645, -348 }, { -1785, -1645, -347 }, { -1785, -1645, -347 },\n    { -1785, -1645, -346 }, { -1785, -1645, -346 }, { -1785, -1645, -345 }, { -1785, -1645, -345 },\n    { -1786, -1645, -344 }, { -1786, -1645, -344 }, { -1786, -1645, -343 }, { -1786, -1645, -343 },\n    { -1786, -1645, -342 }, { -1786, -1645, -342 }, { -1786, -1645, -342 }, { -1786, -1645, -341 },\n    { -1787, -1645, -341 }, { -1787, -1645, -340 }, { -1787, -1645, -340 }, { -1787, -1645, -340 },\n    { -1787, -1645, -339 }, { -1787, -1645, -339 }, { -1787, -1645, -339 }, { -1787, -1645, -339 },\n    { -1787, -1645, -339 }, { -1787, -1645, -339 }, { -1787, -1645, -339 }, { -1787, -1645, -339 },\n    { -1787, -1645, -339 }, { -1787, -1645, -339 }, { -1787, -1645, -339 }, { -1787, -1645, -339 },\n    { -1787, -1645, -340 }, { -1787, -1645, -340 }, { -1787, -1645, -340 }, { -1786, -1645, -342 },\n    { -1786, -1645, -344 }, { -1785, -1646, -346 }, { -1784, -1646, -350 }, { -1783, -1646, -354 },\n    { -1782, -1646, -358 }, { -1781, -1646, -362 }, { -1780, -1646, -367 }, { -1779, -1646, -371 },\n    { -1778, -1646, -374 }, { -1777, -1646, -378 }, { -1776, -1647, -380 }, { -1776, -1647, -382 },\n    { -1775, -1647, -383 }, { -1776, -1647, -382 }, { -1776, -1647, -379 }, { -1778, -1646, -373 },\n    { -1780, -1646, -365 }, { -1783, -1646, -355 }, { -1785, -1646, -345 }, { -1788, -1645, -335 },\n    { -1791, -1645, -325 }, { -1793, -1645, -318 }, { -1794, -1645, -313 }, { -1795, -1645, -311 },\n    { -1794, -1645, -312 }, { -1793, -1645, -315 }, { -1792, -1645, -320 }, { -1791, -1645, -326 },\n    { -1789, -1645, -333 }, { -1787, -1646, -341 }, { -1784, -1646, -349 }, { -1782, -1646, -357 },\n    { -1780, -1646, -365 }, { -1778, -1646, -372 }, { -1777, -1647, -377 }, { -1776, -1647, -382 },\n    { -1775, -1647, -386 }, { -1773, -1647, -390 }, { -1772, -1647, -394 }, { -1772, -1647, -396 },\n    { -1772, -1647, -395 }, { -1773, -1647, -391 }, { -1776, -1647, -382 }, { -1780, -1646, -364 },\n    { -1788, -1646, -336 }, { -1796, -1646, -304 }, { -1805, -1646, -273 }, { -1811, -1646, -250 },\n    { -1814, -1645, -239 }, { -1814, -1645, -238 }, { -1814, -1645, -239 }, { -1813, -1645, -241 },\n    { -1812, -1645, -244 }, { -1811, -1645, -248 }, { -1810, -1645, -253 }, { -1808, -1645, -259 },\n    { -1807, -1645, -265 }, { -1805, -1645, -272 }, { -1803, -1645, -279 }, { -1801, -1645, -287 },\n    { -1799, -1645, -294 }, { -1797, -1645, -301 }, { -1795, -1645, -308 }, { -1794, -1645, -315 },\n    { -1792, -1645, -320 }, { -1791, -1645, -325 }, { -1790, -1645, -330 }, { -1789, -1645, -333 },\n    { -1788, -1645, -335 }, { -1788, -1645, -336 }, { -1788, -1645, -337 }, { -1787, -1645, -338 },\n    { -1787, -1645, -339 }, { -1787, -1645, -340 }, { -1787, -1645, -341 }, { -1786, -1645, -342 },\n    { -1786, -1645, -343 }, { -1786, -1645, -343 }, { -1786, -1645, -344 }, { -1785, -1645, -345 },\n    { -1785, -1645, -346 }, { -1785, -1645, -346 }, { -1785, -1645, -347 }, { -1785, -1645, -347 },\n    { -1785, -1645, -348 }, { -1785, -1645, -348 }, { -1784, -1645, -349 }, { -1784, -1645, -349 },\n    { -1784, -1645, -350 }, { -1784, -1645, -350 }, { -1784, -1645, -350 }, { -1784, -1645, -351 },\n    { -1784, -1645, -351 }, { -1784, -1645, -351 }, { -1784, -1645, -351 }, { -1784, -1645, -352 },\n    { -1784, -1645, -352 }, { -1784, -1645, -352 }, { -1784, -1645, -352 }, { -1784, -1645, -352 },\n    { -1783, -1645, -352 }, { -1783, -1645, -352 }, { -1783, -1645, -352 }, { -1783, -1645, -352 },\n    { -1783, -1645, -352 }, { -1783, -1645, -352 }, { -1783, -1645, -352 }, { -1783, -1645, -352 },\n    { -1783, -1645, -352 }, { -1783, -1645, -352 }, { -1783, -1645, -352 }, { -1783, -1645, -352 },\n    { -1784, -1645, -352 }, { -1784, -1645, -352 }, { -1784, -1645, -352 }, { -1784, -1645, -352 },\n    { -1784, -1645, -352 }, { -1784, -1645, -352 }, { -1784, -1645, -352 }, { -1784, -1645, -351 },\n    { -1784, -1645, -351 }, { -1784, -1645, -351 }, { -1784, -1645, -351 }, { -1784, -1645, -351 },\n    { -1784, -1645, -351 }, { -1784, -1645, -351 }, { -1784, -1645, -351 }, { -1784, -1645, -351 },\n    { -1784, -1645, -351 }, { -1784, -1645, -351 }, { -1784, -1645, -351 }, { -1784, -1645, -350 },\n    { -1784, -1645, -350 }, { -1784, -1645, -350 }, { -1784, -1645, -350 }, { -1784, -1645, -350 },\n    { -1784, -1645, -350 }, { -1784, -1645, -350 }, { -1784, -1645, -351 }, { -1784, -1645, -351 },\n    { -1784, -1645, -351 }, { -1784, -1645, -351 }, { -1784, -1645, -351 }, { -1784, -1645, -351 },\n    { -1784, -1645, -351 }, { -1784, -1645, -351 }, { -1784, -1645, -351 }, { -1784, -1645, -350 },\n    { -1784, -1645, -350 }, { -1784, -1645, -350 }, { -1784, -1645, -349 }, { -1784, -1645, -349 },\n    { -1784, -1645, -348 }, { -1785, -1645, -348 }, { -1785, -1645, -347 }, { -1785, -1645, -347 },\n    { -1785, -1645, -346 }, { -1785, -1645, -346 }, { -1785, -1645, -345 }, { -1786, -1645, -344 },\n    { -1786, -1645, -344 }, { -1786, -1645, -343 }, { -1786, -1645, -343 }, { -1786, -1645, -342 },\n    { -1786, -1645, -341 }, { -1787, -1645, -341 }, { -1787, -1645, -340 }, { -1787, -1645, -340 },\n    { -1787, -1645, -339 }, { -1787, -1645, -339 }, { -1787, -1645, -338 }, { -1787, -1645, -338 },\n    { -1787, -1645, -337 }, { -1787, -1645, -337 }, { -1788, -1645, -337 }, { -1788, -1644, -337 },\n    { -1788, -1644, -336 }, { -1788, -1644, -336 }, { -1788, -1644, -336 }, { -1788, -1644, -336 },\n    { -1788, -1645, -337 }, { -1788, -1645, -337 }, { -1787, -1645, -337 }, { -1787, -1645, -338 },\n    { -1787, -1645, -338 }, { -1787, -1645, -339 }, { -1787, -1645, -339 }, { -1787, -1645, -340 },\n    { -1786, -1645, -341 }, { -1786, -1645, -342 }, { -1786, -1645, -343 }, { -1786, -1645, -344 },\n    { -1785, -1645, -346 }, { -1785, -1645, -347 }, { -1784, -1645, -349 }, { -1784, -1645, -351 },\n    { -1776, -1647, -379 }, { -1763, -1649, -430 }, { -1756, -1651, -458 }, { -1756, -1651, -457 },\n    { -1756, -1650, -455 }, { -1757, -1650, -452 }, { -1758, -1650, -449 }, { -1759, -1650, -444 },\n    { -1761, -1650, -439 }, { -1762, -1649, -433 }, { -1764, -1649, -427 }, { -1766, -1649, -420 },\n    { -1768, -1648, -413 }, { -1769, -1648, -406 }, { -1771, -1648, -399 }, { -1773, -1647, -392 },\n    { -1775, -1647, -385 }, { -1777, -1647, -378 }, { -1779, -1646, -371 }, { -1780, -1646, -365 },\n    { -1782, -1646, -360 }, { -1783, -1645, -355 }, { -1784, -1645, -351 }, { -1783, -1645, -356 },\n    { -1779, -1646, -369 }, { -1778, -1646, -375 }, { -1780, -1646, -364 }, { -1785, -1645, -348 },\n    { -1787, -1645, -339 }, { -1784, -1645, -350 }, { -1779, -1646, -368 }, { -1778, -1646, -375 },\n    { -1780, -1646, -366 }, { -1783, -1646, -353 }, { -1788, -1645, -337 }, { -1792, -1645, -320 },\n    { -1796, -1645, -304 }, { -1800, -1645, -290 }, { -1803, -1645, -280 }, { -1805, -1645, -272 },\n    { -1807, -1645, -263 }, { -1809, -1645, -255 }, { -1812, -1645, -247 }, { -1814, -1645, -239 },\n    { -1816, -1645, -232 }, { -1817, -1645, -225 }, { -1819, -1645, -219 }, { -1820, -1645, -214 },\n    { -1821, -1645, -211 }, { -1822, -1645, -209 }, { -1822, -1646, -209 }, { -1821, -1646, -210 },\n    { -1820, -1646, -214 }, { -1818, -1646, -221 }, { -1816, -1646, -232 }, { -1812, -1646, -246 },\n    { -1807, -1646, -262 }, { -1803, -1647, -281 }, { -1797, -1647, -300 }, { -1792, -1647, -320 },\n    { -1787, -1647, -340 }, { -1782, -1647, -359 }, { -1777, -1648, -377 }, { -1773, -1648, -393 },\n    { -1769, -1648, -406 }, { -1767, -1648, -416 }, { -1765, -1648, -421 }, { -1765, -1648, -422 },\n    { -1766, -1648, -417 }, { -1769, -1648, -406 }, { -1774, -1648, -389 }, { -1779, -1648, -368 },\n    { -1786, -1648, -344 }, { -1793, -1648, -318 }, { -1800, -1648, -292 }, { -1807, -1648, -265 },\n    { -1814, -1648, -239 }, { -1820, -1648, -216 }, { -1825, -1648, -196 }, { -1829, -1648, -180 },\n    { -1832, -1648, -170 }, { -1833, -1648, -167 }, { -1832, -1648, -170 }, { -1830, -1648, -179 },\n    { -1826, -1648, -193 }, { -1821, -1648, -211 }, { -1815, -1648, -233 }, { -1809, -1648, -257 },\n    { -1802, -1648, -282 }, { -1796, -1648, -307 }, { -1789, -1648, -332 }, { -1783, -1648, -356 },\n    { -1777, -1648, -377 }, { -1772, -1648, -395 }, { -1768, -1648, -410 }, { -1766, -1648, -419 },\n    { -1765, -1648, -422 }, { -1766, -1648, -418 }, { -1769, -1648, -408 }, { -1773, -1648, -392 },\n    { -1778, -1648, -371 }, { -1785, -1648, -348 }, { -1792, -1648, -322 }, { -1799, -1648, -294 },\n    { -1806, -1648, -267 }, { -1813, -1648, -241 }, { -1819, -1648, -217 }, { -1825, -1648, -197 },\n    { -1829, -1648, -181 }, { -1832, -1648, -170 }, { -1833, -1648, -167 }, { -1832, -1648, -171 },\n    { -1828, -1648, -183 }, { -1824, -1648, -201 }, { -1818, -1648, -224 }, { -1810, -1648, -251 },\n    { -1803, -1648, -280 }, { -1795, -1648, -309 }, { -1787, -1648, -338 }, { -1780, -1648, -364 },\n    { -1774, -1648, -388 }, { -1769, -1648, -406 }, { -1766, -1648, -418 }, { -1765, -1648, -422 },\n    { -1766, -1648, -419 }, { -1768, -1648, -410 }, { -1772, -1648, -397 }, { -1776, -1648, -379 },\n    { -1782, -1648, -358 }, { -1788, -1648, -335 }, { -1795, -1648, -311 }, { -1801, -1648, -286 },\n    { -1808, -1648, -261 }, { -1814, -1648, -238 }, { -1820, -1648, -216 }, { -1825, -1648, -198 },\n    { -1829, -1648, -182 }, { -1831, -1648, -172 }, { -1833, -1648, -167 }, { -1833, -1648, -166 },\n    { -1832, -1648, -170 }, { -1830, -1648, -176 }, { -1828, -1647, -185 }, { -1825, -1647, -197 },\n    { -1821, -1647, -210 }, { -1817, -1647, -224 }, { -1813, -1647, -240 }, { -1809, -1647, -256 },\n    { -1805, -1646, -272 }, { -1801, -1646, -288 }, { -1797, -1646, -303 }, { -1793, -1646, -317 },\n    { -1790, -1646, -329 }, { -1787, -1646, -339 }, { -1785, -1645, -346 }, { -1784, -1645, -351 },\n    { -1783, -1645, -353 }, { -1783, -1645, -355 }, { -1782, -1645, -356 }, { -1782, -1645, -356 },\n    { -1782, -1645, -356 }, { -1783, -1645, -356 }, { -1783, -1645, -354 }, { -1783, -1645, -353 },\n    { -1784, -1645, -351 }, { -1785, -1645, -348 }, { -1785, -1645, -346 }, { -1786, -1645, -343 },\n    { -1787, -1645, -339 }, { -1788, -1645, -336 }, { -1789, -1645, -332 }, { -1790, -1645, -329 },\n    { -1791, -1645, -325 }, { -1792, -1645, -321 }, { -1793, -1645, -317 }, { -1794, -1645, -314 },\n    { -1795, -1645, -310 }, { -1796, -1645, -307 }, { -1796, -1645, -304 }, { -1797, -1645, -301 },\n    { -1798, -1645, -298 }, { -1798, -1645, -296 }, { -1799, -1645, -294 }, { -1799, -1645, -293 },\n    { -1800, -1645, -292 }, { -1800, -1645, -291 }, { -1800, -1645, -291 }, { -1800, -1645, -292 },\n    { -1799, -1645, -292 }, { -1799, -1645, -293 }, { -1799, -1645, -294 }, { -1799, -1645, -295 },\n    { -1798, -1645, -296 }, { -1798, -1645, -297 }, { -1798, -1645, -298 }, { -1798, -1645, -299 },\n    { -1798, -1645, -299 }, { -1797, -1645, -300 }, { -1797, -1645, -300 }, { -1798, -1645, -299 },\n    { -1798, -1645, -299 }, { -1798, -1645, -297 }, { -1799, -1645, -295 }, { -1799, -1645, -293 },\n    { -1801, -1645, -288 }, { -1803, -1645, -281 }, { -1805, -1645, -271 }, { -1808, -1645, -260 },\n    { -1811, -1646, -248 }, { -1814, -1646, -236 }, { -1817, -1646, -225 }, { -1820, -1646, -216 },\n    { -1822, -1646, -208 }, { -1823, -1647, -204 }, { -1823, -1647, -204 }, { -1822, -1647, -207 },\n    { -1821, -1647, -212 }, { -1819, -1647, -219 }, { -1817, -1646, -227 }, { -1814, -1646, -237 },\n    { -1811, -1646, -247 }, { -1808, -1646, -258 }, { -1805, -1646, -270 }, { -1802, -1646, -282 },\n    { -1799, -1646, -293 }, { -1796, -1646, -304 }, { -1794, -1646, -314 }, { -1791, -1646, -323 },\n    { -1789, -1645, -331 }, { -1788, -1645, -337 }, { -1787, -1645, -340 }, { -1787, -1645, -339 },\n    { -1789, -1645, -331 }, { -1793, -1645, -318 }, { -1797, -1645, -303 }, { -1801, -1645, -288 },\n    { -1804, -1645, -276 }, { -1806, -1645, -269 }, { -1807, -1645, -265 }, { -1808, -1645, -262 },\n    { -1808, -1645, -259 }, { -1809, -1645, -256 }, { -1810, -1645, -253 }, { -1811, -1645, -251 },\n    { -1811, -1645, -248 }, { -1812, -1645, -246 }, { -1812, -1645, -244 }, { -1813, -1645, -242 },\n    { -1813, -1645, -241 }, { -1814, -1645, -239 }, { -1814, -1645, -238 }, { -1814, -1645, -237 },\n    { -1815, -1645, -235 }, { -1815, -1646, -234 }, { -1815, -1646, -233 }, { -1816, -1646, -232 },\n    { -1816, -1646, -231 }, { -1816, -1646, -230 }, { -1816, -1646, -229 }, { -1817, -1646, -228 },\n    { -1817, -1646, -227 }, { -1817, -1646, -226 }, { -1817, -1646, -226 }, { -1817, -1646, -226 },\n    { -1817, -1646, -227 }, { -1817, -1646, -227 }, { -1817, -1646, -228 }, { -1816, -1646, -228 },\n    { -1816, -1646, -229 }, { -1816, -1646, -229 }, { -1816, -1646, -229 }, { -1816, -1646, -229 },\n    { -1816, -1646, -229 }, { -1817, -1646, -228 }, { -1817, -1646, -226 }, { -1818, -1646, -224 },\n    { -1818, -1646, -223 }, { -1819, -1646, -221 }, { -1819, -1646, -218 }, { -1820, -1646, -216 },\n    { -1820, -1646, -214 }, { -1821, -1646, -211 }, { -1822, -1647, -209 }, { -1822, -1647, -206 },\n    { -1823, -1647, -203 }, { -1824, -1647, -201 }, { -1824, -1647, -198 }, { -1825, -1647, -195 },\n    { -1826, -1647, -193 }, { -1827, -1647, -190 }, { -1827, -1647, -188 }, { -1828, -1648, -185 },\n    { -1829, -1648, -183 }, { -1829, -1648, -181 }, { -1830, -1648, -178 }, { -1830, -1648, -176 },\n    { -1831, -1648, -175 }, { -1831, -1648, -173 }, { -1831, -1648, -172 }, { -1832, -1648, -170 },\n    { -1832, -1648, -169 }, { -1832, -1648, -169 }, { -1832, -1648, -168 }, { -1832, -1648, -168 },\n    { -1832, -1648, -168 }, { -1832, -1648, -169 }, { -1832, -1648, -170 }, { -1832, -1648, -171 },\n    { -1831, -1648, -173 }, { -1831, -1648, -174 }, { -1830, -1648, -177 }, { -1830, -1648, -179 },\n    { -1829, -1648, -181 }, { -1828, -1648, -184 }, { -1827, -1647, -187 }, { -1827, -1647, -190 },\n    { -1826, -1647, -193 }, { -1825, -1647, -196 }, { -1824, -1647, -199 }, { -1823, -1647, -202 },\n    { -1823, -1647, -205 }, { -1822, -1647, -208 }, { -1821, -1646, -212 }, { -1820, -1646, -215 },\n    { -1819, -1646, -217 }, { -1819, -1646, -220 }, { -1818, -1646, -223 }, { -1817, -1646, -225 },\n    { -1817, -1646, -228 }, { -1816, -1646, -228 }, { -1817, -1646, -228 }, { -1817, -1646, -228 },\n    { -1817, -1646, -226 }, { -1817, -1646, -228 }, { -1815, -1646, -234 }, { -1813, -1646, -241 },\n    { -1811, -1645, -250 }, { -1809, -1645, -258 }, { -1806, -1645, -267 }, { -1804, -1645, -275 },\n    { -1802, -1645, -282 }, { -1801, -1645, -288 }, { -1800, -1645, -292 }, { -1799, -1645, -293 },\n};\n\nstatic s16 animdata_mario_mustache_left_2[][3] = {\n    { -1756, -1651, -459 }, { -1756, -1651, -459 }, { -1756, -1651, -459 }, { -1756, -1651, -459 },\n    { -1756, -1651, -459 }, { -1756, -1651, -459 }, { -1756, -1651, -459 }, { -1756, -1651, -459 },\n    { -1756, -1651, -459 }, { -1756, -1651, -459 }, { -1756, -1651, -459 }, { -1756, -1651, -459 },\n    { -1756, -1651, -459 }, { -1756, -1651, -459 }, { -1756, -1651, -459 }, { -1756, -1651, -459 },\n    { -1756, -1651, -459 }, { -1756, -1651, -459 }, { -1756, -1651, -459 }, { -1756, -1651, -459 },\n    { -1756, -1651, -459 }, { -1756, -1651, -459 }, { -1756, -1651, -459 }, { -1754, -1651, -464 },\n    { -1753, -1652, -469 }, { -1756, -1652, -459 }, { -1770, -1648, -404 }, { -1783, -1646, -352 },\n    { -1787, -1645, -340 }, { -1789, -1645, -330 }, { -1792, -1645, -321 }, { -1793, -1645, -315 },\n    { -1795, -1645, -310 }, { -1795, -1645, -308 }, { -1795, -1645, -308 }, { -1795, -1645, -310 },\n    { -1793, -1646, -315 }, { -1790, -1646, -326 }, { -1786, -1647, -345 }, { -1779, -1648, -368 },\n    { -1773, -1649, -393 }, { -1766, -1649, -418 }, { -1761, -1650, -439 }, { -1757, -1651, -454 },\n    { -1756, -1651, -459 }, { -1756, -1651, -458 }, { -1756, -1651, -456 }, { -1757, -1651, -453 },\n    { -1758, -1651, -449 }, { -1760, -1650, -444 }, { -1761, -1650, -438 }, { -1763, -1650, -432 },\n    { -1765, -1650, -425 }, { -1767, -1649, -417 }, { -1769, -1649, -410 }, { -1771, -1649, -402 },\n    { -1773, -1649, -394 }, { -1775, -1648, -386 }, { -1777, -1648, -378 }, { -1779, -1648, -371 },\n    { -1780, -1647, -365 }, { -1782, -1647, -358 }, { -1783, -1647, -355 }, { -1787, -1647, -341 },\n    { -1791, -1647, -325 }, { -1795, -1647, -308 }, { -1800, -1648, -291 }, { -1804, -1648, -273 },\n    { -1809, -1648, -256 }, { -1813, -1648, -240 }, { -1817, -1648, -225 }, { -1821, -1648, -212 },\n    { -1823, -1648, -201 }, { -1825, -1648, -194 }, { -1827, -1648, -189 }, { -1827, -1648, -187 },\n    { -1828, -1649, -185 }, { -1828, -1649, -182 }, { -1829, -1649, -180 }, { -1829, -1649, -179 },\n    { -1830, -1649, -177 }, { -1830, -1649, -175 }, { -1831, -1649, -174 }, { -1831, -1649, -172 },\n    { -1831, -1649, -171 }, { -1832, -1649, -170 }, { -1832, -1649, -169 }, { -1832, -1649, -168 },\n    { -1832, -1649, -167 }, { -1833, -1649, -166 }, { -1833, -1649, -166 }, { -1833, -1649, -165 },\n    { -1833, -1649, -165 }, { -1833, -1649, -164 }, { -1833, -1649, -164 }, { -1833, -1649, -164 },\n    { -1833, -1649, -164 }, { -1833, -1649, -164 }, { -1833, -1649, -164 }, { -1833, -1649, -164 },\n    { -1833, -1649, -164 }, { -1833, -1649, -164 }, { -1833, -1649, -165 }, { -1833, -1649, -165 },\n    { -1833, -1649, -165 }, { -1833, -1649, -166 }, { -1833, -1649, -167 }, { -1832, -1649, -167 },\n    { -1832, -1649, -168 }, { -1832, -1649, -169 }, { -1832, -1649, -169 }, { -1832, -1649, -170 },\n    { -1831, -1649, -171 }, { -1831, -1649, -172 }, { -1831, -1649, -173 }, { -1831, -1649, -174 },\n    { -1830, -1649, -175 }, { -1830, -1649, -176 }, { -1830, -1649, -177 }, { -1830, -1649, -178 },\n    { -1829, -1649, -179 }, { -1829, -1649, -180 }, { -1829, -1649, -181 }, { -1828, -1649, -182 },\n    { -1828, -1649, -184 }, { -1828, -1649, -185 }, { -1827, -1649, -186 }, { -1827, -1649, -187 },\n    { -1827, -1649, -188 }, { -1827, -1648, -189 }, { -1826, -1648, -191 }, { -1826, -1648, -192 },\n    { -1825, -1648, -194 }, { -1825, -1648, -196 }, { -1824, -1648, -199 }, { -1823, -1648, -202 },\n    { -1822, -1648, -205 }, { -1822, -1648, -208 }, { -1821, -1648, -211 }, { -1820, -1648, -215 },\n    { -1819, -1647, -218 }, { -1818, -1647, -222 }, { -1817, -1647, -226 }, { -1816, -1647, -230 },\n    { -1815, -1647, -234 }, { -1814, -1647, -238 }, { -1813, -1647, -242 }, { -1812, -1646, -246 },\n    { -1811, -1646, -250 }, { -1809, -1646, -254 }, { -1808, -1646, -258 }, { -1807, -1646, -262 },\n    { -1806, -1646, -266 }, { -1806, -1646, -269 }, { -1805, -1646, -272 }, { -1804, -1645, -276 },\n    { -1803, -1645, -279 }, { -1802, -1645, -281 }, { -1802, -1645, -284 }, { -1801, -1645, -286 },\n    { -1801, -1645, -288 }, { -1800, -1645, -290 }, { -1800, -1645, -291 }, { -1800, -1645, -292 },\n    { -1799, -1645, -293 }, { -1799, -1645, -293 },\n};\n\nstruct AnimDataInfo anim_mario_mustache_left[] = {\n    { ARRAY_COUNT(animdata_mario_mustache_left_1), GD_ANIM_ROT3S, animdata_mario_mustache_left_1 },\n    { ARRAY_COUNT(animdata_mario_mustache_left_2), GD_ANIM_ROT3S, animdata_mario_mustache_left_2 },\n    END_ANIMDATA_INFO_ARR,\n};\n"
  },
  {
    "path": "src/goddard/dynlists/anim_mario_mustache_right.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"macros.h\"\n#include \"animdata.h\"\n#include \"../gd_types.h\"\n\nstatic s16 animdata_mario_mustache_right_1[][3] = {\n    { 0, 154, 1506 },   { 0, 154, 1506 },   { 0, 154, 1507 },   { 0, 154, 1508 },   { 0, 154, 1510 },\n    { 1, 154, 1511 },   { 1, 154, 1513 },   { 2, 154, 1515 },   { 2, 155, 1517 },   { 3, 155, 1518 },\n    { 3, 155, 1520 },   { 3, 155, 1521 },   { 4, 155, 1522 },   { 4, 155, 1522 },   { 4, 155, 1522 },\n    { 4, 155, 1522 },   { 3, 155, 1520 },   { 3, 155, 1518 },   { 2, 154, 1515 },   { 1, 154, 1511 },\n    { 0, 154, 1506 },   { -3, 154, 1491 },  { -11, 153, 1463 }, { -20, 152, 1429 }, { -28, 151, 1396 },\n    { -35, 150, 1372 }, { -37, 150, 1364 }, { -34, 150, 1375 }, { -27, 151, 1401 }, { -18, 151, 1436 },\n    { -8, 152, 1474 },  { 0, 153, 1507 },   { 6, 154, 1530 },   { 6, 154, 1531 },   { 2, 154, 1516 },\n    { 0, 154, 1506 },   { 0, 154, 1505 },   { 0, 154, 1505 },   { 0, 154, 1504 },   { 0, 154, 1504 },\n    { 0, 154, 1504 },   { 0, 154, 1503 },   { 0, 154, 1503 },   { 0, 154, 1503 },   { 0, 154, 1503 },\n    { 0, 154, 1503 },   { 0, 154, 1503 },   { 0, 154, 1503 },   { 0, 154, 1503 },   { 0, 154, 1503 },\n    { 0, 154, 1503 },   { 0, 154, 1503 },   { 0, 154, 1503 },   { 0, 154, 1504 },   { 0, 154, 1504 },\n    { 0, 154, 1504 },   { 0, 154, 1504 },   { 0, 154, 1504 },   { 0, 154, 1505 },   { 0, 154, 1505 },\n    { 0, 154, 1505 },   { 0, 154, 1505 },   { 0, 154, 1506 },   { 0, 154, 1506 },   { 0, 154, 1506 },\n    { 0, 154, 1506 },   { 0, 154, 1506 },   { 0, 154, 1506 },   { 0, 154, 1506 },   { 0, 154, 1506 },\n    { 0, 154, 1506 },   { 0, 154, 1506 },   { 0, 154, 1506 },   { 0, 154, 1506 },   { 0, 154, 1506 },\n    { 0, 154, 1506 },   { 0, 154, 1506 },   { 0, 154, 1506 },   { 0, 154, 1506 },   { 0, 154, 1506 },\n    { 0, 154, 1506 },   { 0, 154, 1506 },   { 0, 154, 1507 },   { 0, 154, 1509 },   { 1, 154, 1511 },\n    { 1, 154, 1513 },   { 2, 154, 1514 },   { 2, 154, 1514 },   { 1, 154, 1511 },   { 0, 154, 1506 },\n    { -4, 154, 1490 },  { -11, 153, 1463 }, { -18, 153, 1437 }, { -22, 153, 1423 }, { -23, 153, 1419 },\n    { -23, 153, 1416 }, { -24, 152, 1414 }, { -25, 152, 1411 }, { -25, 152, 1410 }, { -26, 152, 1408 },\n    { -26, 152, 1407 }, { -26, 152, 1407 }, { -26, 152, 1407 }, { -26, 152, 1407 }, { -26, 152, 1408 },\n    { -25, 152, 1409 }, { -25, 152, 1410 }, { -25, 152, 1412 }, { -24, 152, 1414 }, { -23, 153, 1417 },\n    { -22, 153, 1420 }, { -22, 153, 1423 }, { -19, 153, 1432 }, { -15, 153, 1448 }, { -10, 153, 1468 },\n    { -5, 154, 1487 },  { -1, 154, 1501 },  { 0, 154, 1506 },   { 0, 154, 1505 },   { 0, 154, 1503 },\n    { -1, 154, 1501 },  { -2, 154, 1497 },  { -3, 154, 1494 },  { -4, 154, 1489 },  { -5, 154, 1484 },\n    { -7, 154, 1479 },  { -8, 154, 1474 },  { -10, 153, 1468 }, { -11, 153, 1462 }, { -13, 153, 1456 },\n    { -14, 153, 1450 }, { -16, 153, 1444 }, { -18, 153, 1438 }, { -19, 153, 1433 }, { -20, 153, 1427 },\n    { -22, 152, 1422 }, { -23, 152, 1417 }, { -24, 152, 1413 }, { -25, 152, 1410 }, { -26, 152, 1407 },\n    { -27, 152, 1404 }, { -27, 152, 1402 }, { -28, 152, 1400 }, { -28, 152, 1399 }, { -28, 152, 1398 },\n    { -29, 152, 1397 }, { -29, 152, 1396 }, { -29, 152, 1396 }, { -29, 152, 1396 }, { -29, 152, 1397 },\n    { -28, 152, 1397 }, { -28, 152, 1399 }, { -28, 152, 1400 }, { -27, 152, 1402 }, { -27, 152, 1404 },\n    { -26, 152, 1407 }, { -25, 152, 1410 }, { -24, 152, 1413 }, { -23, 152, 1418 }, { -22, 152, 1422 },\n    { -20, 153, 1427 }, { -19, 153, 1433 }, { -18, 153, 1438 }, { -16, 153, 1444 }, { -14, 153, 1450 },\n    { -13, 153, 1456 }, { -11, 153, 1462 }, { -10, 153, 1468 }, { -8, 154, 1474 },  { -7, 154, 1479 },\n    { -5, 154, 1485 },  { -4, 154, 1490 },  { -3, 154, 1495 },  { -1, 154, 1499 },  { 0, 154, 1503 },\n    { 0, 154, 1506 },   { 0, 154, 1509 },   { 1, 154, 1511 },   { 1, 154, 1512 },   { 1, 154, 1513 },\n    { 2, 154, 1514 },   { 2, 154, 1514 },   { 1, 154, 1513 },   { 1, 154, 1513 },   { 1, 154, 1512 },\n    { 1, 154, 1510 },   { 0, 154, 1509 },   { 0, 154, 1508 },   { 0, 154, 1506 },   { 0, 154, 1504 },\n    { -1, 154, 1502 },  { -1, 154, 1500 },  { -2, 154, 1497 },  { -3, 154, 1493 },  { -4, 154, 1490 },\n    { -5, 154, 1487 },  { -6, 154, 1483 },  { -7, 154, 1479 },  { -8, 154, 1475 },  { -9, 154, 1471 },\n    { -10, 154, 1468 }, { -11, 154, 1464 }, { -12, 154, 1461 }, { -12, 154, 1457 }, { -13, 154, 1454 },\n    { -14, 154, 1452 }, { -15, 154, 1449 }, { -15, 154, 1447 }, { -16, 154, 1446 }, { -16, 154, 1445 },\n    { -16, 153, 1444 }, { -16, 153, 1444 }, { -16, 153, 1445 }, { -15, 153, 1447 }, { -12, 153, 1460 },\n    { -4, 153, 1488 },  { 3, 153, 1521 },   { 11, 154, 1548 },  { 14, 154, 1560 },  { 13, 154, 1556 },\n    { 10, 154, 1545 },  { 6, 154, 1530 },   { 1, 153, 1511 },   { -3, 153, 1492 },  { -8, 153, 1473 },\n    { -12, 153, 1458 }, { -15, 153, 1447 }, { -17, 153, 1440 }, { -18, 153, 1437 }, { -18, 153, 1435 },\n    { -18, 153, 1435 }, { -18, 153, 1436 }, { -18, 153, 1437 }, { -18, 153, 1437 }, { -18, 153, 1437 },\n    { -18, 153, 1438 }, { -18, 153, 1438 }, { -18, 153, 1438 }, { -18, 153, 1438 }, { -18, 153, 1438 },\n    { -17, 153, 1439 }, { -17, 153, 1439 }, { -17, 153, 1439 }, { -17, 153, 1440 }, { -17, 153, 1440 },\n    { -17, 153, 1441 }, { -17, 154, 1441 }, { -17, 154, 1442 }, { -17, 154, 1442 }, { -16, 154, 1443 },\n    { -16, 154, 1443 }, { -16, 154, 1444 }, { -16, 154, 1444 }, { -16, 154, 1445 }, { -16, 154, 1445 },\n    { -16, 154, 1446 }, { -15, 154, 1446 }, { -15, 154, 1447 }, { -15, 154, 1447 }, { -15, 154, 1448 },\n    { -15, 154, 1448 }, { -15, 154, 1449 }, { -15, 154, 1449 }, { -15, 154, 1449 }, { -15, 154, 1449 },\n    { -15, 154, 1450 }, { -15, 154, 1450 }, { -14, 154, 1450 }, { -14, 154, 1450 }, { -14, 154, 1450 },\n    { -14, 154, 1450 }, { -15, 154, 1450 }, { -15, 154, 1450 }, { -15, 154, 1449 }, { -15, 154, 1449 },\n    { -15, 153, 1448 }, { -15, 153, 1448 }, { -15, 153, 1447 }, { -15, 153, 1447 }, { -16, 153, 1445 },\n    { -16, 153, 1443 }, { -17, 153, 1439 }, { -19, 153, 1435 }, { -20, 153, 1430 }, { -21, 153, 1424 },\n    { -23, 152, 1419 }, { -24, 152, 1413 }, { -26, 152, 1408 }, { -27, 152, 1403 }, { -28, 152, 1399 },\n    { -29, 151, 1396 }, { -29, 151, 1394 }, { -30, 151, 1393 }, { -29, 151, 1393 }, { -28, 151, 1397 },\n    { -27, 152, 1404 }, { -24, 152, 1414 }, { -21, 152, 1426 }, { -17, 153, 1439 }, { -14, 153, 1452 },\n    { -11, 153, 1464 }, { -8, 154, 1473 },  { -7, 154, 1480 },  { -6, 154, 1482 },  { -6, 154, 1481 },\n    { -7, 154, 1478 },  { -9, 154, 1472 },  { -10, 154, 1465 }, { -13, 153, 1457 }, { -15, 153, 1448 },\n    { -18, 153, 1438 }, { -20, 153, 1429 }, { -22, 152, 1420 }, { -25, 152, 1411 }, { -26, 152, 1405 },\n    { -28, 152, 1399 }, { -29, 152, 1395 }, { -30, 151, 1391 }, { -31, 151, 1388 }, { -31, 151, 1387 },\n    { -31, 151, 1388 }, { -30, 151, 1392 }, { -28, 152, 1399 }, { -24, 152, 1414 }, { -18, 152, 1437 },\n    { -11, 153, 1464 }, { -4, 154, 1489 },  { 0, 154, 1509 },   { 3, 154, 1518 },   { 3, 154, 1520 },\n    { 3, 154, 1520 },   { 3, 154, 1520 },   { 3, 154, 1518 },   { 2, 154, 1516 },   { 1, 154, 1513 },\n    { 0, 154, 1509 },   { 0, 154, 1505 },   { -1, 154, 1501 },  { -2, 154, 1496 },  { -3, 154, 1491 },\n    { -5, 154, 1486 },  { -6, 154, 1481 },  { -7, 154, 1477 },  { -8, 154, 1472 },  { -10, 154, 1468 },\n    { -10, 154, 1465 }, { -11, 154, 1462 }, { -12, 154, 1460 }, { -12, 154, 1459 }, { -12, 154, 1458 },\n    { -13, 154, 1457 }, { -13, 154, 1456 }, { -13, 154, 1455 }, { -13, 154, 1455 }, { -13, 154, 1454 },\n    { -14, 154, 1453 }, { -14, 154, 1452 }, { -14, 154, 1452 }, { -14, 154, 1451 }, { -14, 154, 1451 },\n    { -14, 154, 1450 }, { -15, 154, 1449 }, { -15, 154, 1449 }, { -15, 154, 1448 }, { -15, 154, 1448 },\n    { -15, 154, 1447 }, { -15, 154, 1447 }, { -15, 154, 1447 }, { -15, 154, 1446 }, { -16, 154, 1446 },\n    { -16, 154, 1445 }, { -16, 154, 1445 }, { -16, 154, 1445 }, { -16, 154, 1444 }, { -16, 154, 1444 },\n    { -16, 154, 1444 }, { -16, 154, 1444 }, { -16, 154, 1443 }, { -16, 154, 1443 }, { -16, 154, 1443 },\n    { -16, 154, 1443 }, { -16, 154, 1442 }, { -17, 154, 1442 }, { -17, 154, 1442 }, { -17, 154, 1442 },\n    { -17, 153, 1442 }, { -17, 153, 1441 }, { -17, 153, 1441 }, { -17, 153, 1441 }, { -17, 153, 1441 },\n    { -17, 153, 1441 }, { -17, 153, 1441 }, { -17, 153, 1441 }, { -17, 153, 1440 }, { -17, 153, 1440 },\n    { -17, 153, 1440 }, { -17, 153, 1440 }, { -17, 153, 1440 }, { -17, 153, 1440 }, { -17, 153, 1440 },\n    { -17, 153, 1440 }, { -17, 153, 1440 }, { -17, 153, 1440 }, { -17, 153, 1439 }, { -17, 153, 1439 },\n    { -17, 153, 1439 }, { -17, 153, 1439 }, { -17, 153, 1439 }, { -17, 153, 1439 }, { -17, 153, 1439 },\n    { -17, 153, 1439 }, { -17, 153, 1439 }, { -17, 153, 1439 }, { -18, 153, 1439 }, { -18, 153, 1438 },\n    { -18, 153, 1438 }, { -18, 153, 1438 }, { -18, 153, 1438 }, { -18, 153, 1438 }, { -18, 153, 1438 },\n    { -18, 153, 1438 }, { -18, 153, 1437 }, { -18, 153, 1437 }, { -18, 153, 1437 }, { -18, 153, 1437 },\n    { -18, 153, 1437 }, { -18, 153, 1437 }, { -18, 153, 1438 }, { -18, 153, 1438 }, { -18, 153, 1438 },\n    { -18, 154, 1438 }, { -17, 154, 1439 }, { -17, 154, 1439 }, { -17, 154, 1440 }, { -17, 154, 1440 },\n    { -17, 154, 1441 }, { -17, 154, 1441 }, { -17, 154, 1442 }, { -17, 154, 1442 }, { -16, 154, 1443 },\n    { -16, 154, 1443 }, { -16, 154, 1444 }, { -16, 154, 1444 }, { -16, 154, 1445 }, { -16, 154, 1446 },\n    { -16, 154, 1446 }, { -15, 154, 1447 }, { -15, 154, 1447 }, { -15, 154, 1448 }, { -15, 154, 1448 },\n    { -15, 154, 1448 }, { -15, 154, 1449 }, { -15, 154, 1449 }, { -15, 154, 1449 }, { -15, 154, 1450 },\n    { -15, 154, 1450 }, { -15, 154, 1450 }, { -14, 154, 1450 }, { -14, 154, 1450 }, { -14, 154, 1450 },\n    { -15, 154, 1450 }, { -15, 154, 1450 }, { -15, 154, 1450 }, { -15, 154, 1449 }, { -15, 154, 1449 },\n    { -15, 154, 1448 }, { -15, 154, 1448 }, { -15, 154, 1447 }, { -16, 154, 1446 }, { -16, 154, 1445 },\n    { -16, 154, 1444 }, { -16, 154, 1443 }, { -17, 154, 1442 }, { -17, 154, 1441 }, { -17, 154, 1439 },\n    { -18, 153, 1437 }, { -24, 152, 1412 }, { -36, 150, 1367 }, { -43, 148, 1343 }, { -42, 149, 1343 },\n    { -42, 149, 1345 }, { -41, 149, 1348 }, { -40, 149, 1351 }, { -39, 149, 1355 }, { -38, 149, 1360 },\n    { -36, 150, 1366 }, { -35, 150, 1372 }, { -33, 150, 1378 }, { -32, 151, 1385 }, { -30, 151, 1392 },\n    { -28, 151, 1398 }, { -26, 152, 1405 }, { -25, 152, 1411 }, { -23, 152, 1417 }, { -22, 153, 1422 },\n    { -20, 153, 1427 }, { -19, 153, 1431 }, { -18, 153, 1435 }, { -18, 153, 1437 }, { -21, 153, 1426 },\n    { -27, 152, 1404 }, { -30, 151, 1390 }, { -28, 152, 1398 }, { -24, 153, 1415 }, { -21, 153, 1426 },\n    { -23, 153, 1416 }, { -28, 152, 1400 }, { -29, 152, 1396 }, { -26, 152, 1407 }, { -22, 152, 1423 },\n    { -17, 153, 1441 }, { -11, 153, 1461 }, { -6, 154, 1480 },  { -2, 154, 1496 },  { 0, 154, 1509 },\n    { 3, 154, 1519 },   { 6, 154, 1529 },   { 9, 154, 1540 },   { 11, 154, 1551 },  { 14, 154, 1561 },\n    { 17, 154, 1571 },  { 19, 154, 1580 },  { 21, 154, 1588 },  { 23, 154, 1595 },  { 24, 153, 1600 },\n    { 25, 153, 1603 },  { 25, 153, 1604 },  { 25, 153, 1602 },  { 24, 153, 1598 },  { 22, 152, 1590 },\n    { 18, 152, 1577 },  { 14, 152, 1560 },  { 9, 151, 1540 },   { 3, 151, 1518 },   { -3, 151, 1494 },\n    { -9, 150, 1470 },  { -15, 150, 1445 }, { -22, 150, 1422 }, { -27, 149, 1400 }, { -33, 149, 1381 },\n    { -37, 149, 1364 }, { -40, 149, 1352 }, { -42, 149, 1345 }, { -43, 148, 1343 }, { -41, 148, 1348 },\n    { -38, 149, 1360 }, { -33, 149, 1378 }, { -27, 149, 1401 }, { -20, 149, 1428 }, { -12, 149, 1457 },\n    { -4, 150, 1487 },  { 2, 150, 1517 },   { 10, 150, 1546 },  { 17, 151, 1572 },  { 23, 151, 1594 },\n    { 28, 151, 1612 },  { 31, 151, 1623 },  { 32, 151, 1628 },  { 31, 151, 1624 },  { 28, 151, 1614 },\n    { 24, 151, 1598 },  { 19, 151, 1578 },  { 12, 150, 1554 },  { 5, 150, 1527 },   { -1, 150, 1499 },\n    { -9, 150, 1471 },  { -16, 149, 1443 }, { -23, 149, 1416 }, { -29, 149, 1393 }, { -35, 149, 1372 },\n    { -39, 149, 1356 }, { -42, 149, 1346 }, { -43, 148, 1343 }, { -42, 149, 1347 }, { -38, 149, 1358 },\n    { -34, 149, 1376 }, { -28, 149, 1399 }, { -21, 149, 1426 }, { -13, 150, 1455 }, { -5, 150, 1485 },\n    { 2, 150, 1515 },   { 10, 150, 1544 },  { 17, 151, 1571 },  { 23, 151, 1594 },  { 28, 151, 1612 },\n    { 31, 151, 1623 },  { 32, 151, 1628 },  { 30, 151, 1623 },  { 27, 151, 1609 },  { 22, 151, 1589 },\n    { 15, 151, 1563 },  { 7, 150, 1534 },   { -1, 150, 1501 },  { -9, 150, 1469 },  { -18, 149, 1437 },\n    { -26, 149, 1407 }, { -32, 149, 1381 }, { -38, 149, 1361 }, { -41, 149, 1347 }, { -43, 148, 1343 },\n    { -42, 149, 1346 }, { -39, 149, 1356 }, { -35, 149, 1371 }, { -30, 149, 1390 }, { -24, 149, 1413 },\n    { -17, 149, 1438 }, { -10, 149, 1465 }, { -3, 150, 1493 },  { 3, 150, 1521 },   { 10, 150, 1547 },\n    { 17, 150, 1571 },  { 22, 151, 1592 },  { 27, 151, 1609 },  { 30, 151, 1621 },  { 32, 151, 1628 },\n    { 32, 151, 1629 },  { 31, 151, 1626 },  { 30, 152, 1620 },  { 27, 152, 1611 },  { 24, 152, 1599 },\n    { 21, 152, 1586 },  { 17, 152, 1571 },  { 12, 152, 1555 },  { 8, 153, 1538 },   { 3, 153, 1522 },\n    { 0, 153, 1506 },   { -4, 153, 1490 },  { -8, 153, 1476 },  { -11, 153, 1464 }, { -14, 153, 1453 },\n    { -16, 153, 1446 }, { -17, 154, 1441 }, { -18, 154, 1439 }, { -18, 154, 1437 }, { -18, 154, 1437 },\n    { -18, 154, 1436 }, { -18, 154, 1437 }, { -18, 154, 1438 }, { -18, 154, 1439 }, { -17, 154, 1441 },\n    { -16, 154, 1443 }, { -16, 154, 1446 }, { -15, 154, 1449 }, { -14, 154, 1452 }, { -13, 154, 1456 },\n    { -12, 154, 1460 }, { -11, 154, 1463 }, { -10, 154, 1467 }, { -9, 154, 1471 },  { -8, 154, 1475 },\n    { -7, 154, 1479 },  { -6, 154, 1483 },  { -5, 154, 1487 },  { -4, 154, 1491 },  { -3, 154, 1494 },\n    { -2, 154, 1497 },  { -1, 154, 1500 },  { 0, 154, 1502 },   { 0, 154, 1505 },   { 0, 154, 1506 },\n    { 0, 154, 1507 },   { 0, 154, 1508 },   { 0, 154, 1508 },   { 0, 154, 1508 },   { 0, 154, 1507 },\n    { 0, 154, 1507 },   { 0, 154, 1506 },   { 0, 154, 1505 },   { 0, 154, 1504 },   { 0, 154, 1503 },\n    { -1, 154, 1502 },  { -1, 154, 1501 },  { -1, 154, 1500 },  { -1, 154, 1500 },  { -1, 154, 1500 },\n    { -1, 154, 1500 },  { -1, 154, 1501 },  { -1, 154, 1502 },  { 0, 154, 1504 },   { 0, 154, 1506 },\n    { 1, 154, 1510 },   { 2, 154, 1517 },   { 5, 154, 1526 },   { 7, 154, 1535 },   { 10, 153, 1546 },\n    { 13, 153, 1557 },  { 16, 153, 1567 },  { 18, 153, 1576 },  { 20, 153, 1583 },  { 21, 153, 1588 },\n    { 22, 153, 1589 },  { 21, 153, 1588 },  { 21, 153, 1586 },  { 20, 153, 1582 },  { 18, 153, 1577 },\n    { 17, 153, 1571 },  { 15, 153, 1564 },  { 13, 153, 1557 },  { 11, 153, 1549 },  { 9, 154, 1542 },\n    { 7, 154, 1534 },   { 5, 154, 1527 },   { 4, 154, 1521 },   { 2, 154, 1515 },   { 1, 154, 1511 },\n    { 0, 154, 1508 },   { 0, 154, 1506 },   { 0, 154, 1509 },   { 3, 154, 1517 },   { 6, 154, 1529 },\n    { 9, 154, 1542 },   { 13, 153, 1555 },  { 16, 153, 1566 },  { 17, 153, 1571 },  { 18, 153, 1574 },\n    { 19, 153, 1577 },  { 19, 153, 1579 },  { 20, 153, 1581 },  { 20, 153, 1583 },  { 21, 153, 1585 },\n    { 21, 153, 1586 },  { 21, 153, 1587 },  { 22, 153, 1588 },  { 22, 153, 1589 },  { 22, 153, 1590 },\n    { 22, 153, 1591 },  { 22, 153, 1591 },  { 22, 153, 1592 },  { 23, 153, 1592 },  { 23, 153, 1592 },\n    { 23, 153, 1593 },  { 23, 152, 1593 },  { 23, 152, 1594 },  { 23, 152, 1594 },  { 23, 152, 1595 },\n    { 23, 152, 1595 },  { 24, 152, 1596 },  { 24, 152, 1596 },  { 24, 152, 1596 },  { 24, 152, 1596 },\n    { 23, 152, 1596 },  { 23, 152, 1595 },  { 23, 152, 1595 },  { 23, 152, 1594 },  { 23, 152, 1594 },\n    { 23, 152, 1594 },  { 23, 152, 1594 },  { 23, 152, 1594 },  { 23, 152, 1594 },  { 23, 152, 1595 },\n    { 24, 152, 1596 },  { 24, 152, 1597 },  { 24, 152, 1599 },  { 25, 152, 1600 },  { 25, 152, 1602 },\n    { 25, 152, 1603 },  { 26, 152, 1605 },  { 26, 152, 1607 },  { 27, 152, 1608 },  { 27, 152, 1610 },\n    { 28, 152, 1612 },  { 28, 151, 1614 },  { 29, 151, 1616 },  { 29, 151, 1618 },  { 30, 151, 1620 },\n    { 30, 151, 1621 },  { 31, 151, 1623 },  { 31, 151, 1625 },  { 32, 151, 1626 },  { 32, 151, 1628 },\n    { 32, 151, 1630 },  { 33, 151, 1631 },  { 33, 151, 1632 },  { 33, 151, 1633 },  { 34, 150, 1634 },\n    { 34, 150, 1635 },  { 34, 150, 1636 },  { 34, 150, 1636 },  { 34, 150, 1637 },  { 34, 150, 1637 },\n    { 34, 150, 1637 },  { 34, 150, 1636 },  { 34, 150, 1636 },  { 34, 150, 1635 },  { 33, 150, 1634 },\n    { 33, 151, 1632 },  { 33, 151, 1631 },  { 32, 151, 1629 },  { 32, 151, 1628 },  { 31, 151, 1626 },\n    { 31, 151, 1624 },  { 30, 151, 1622 },  { 30, 151, 1620 },  { 29, 151, 1617 },  { 29, 151, 1615 },\n    { 28, 152, 1613 },  { 27, 152, 1611 },  { 27, 152, 1609 },  { 26, 152, 1606 },  { 26, 152, 1604 },\n    { 25, 152, 1602 },  { 25, 152, 1600 },  { 24, 152, 1598 },  { 24, 152, 1597 },  { 23, 152, 1595 },\n    { 23, 152, 1595 },  { 23, 152, 1595 },  { 23, 152, 1595 },  { 24, 152, 1597 },  { 23, 152, 1595 },\n    { 21, 153, 1587 },  { 18, 153, 1576 },  { 15, 153, 1565 },  { 12, 153, 1553 },  { 9, 153, 1541 },\n    { 6, 154, 1530 },   { 3, 154, 1521 },   { 1, 154, 1513 },   { 0, 154, 1508 },   { 0, 154, 1506 },\n};\n\nstatic s16 animdata_mario_mustache_right_2[][3] = {\n    { 23, 152, 1595 },  { 23, 152, 1595 }, { 23, 152, 1596 }, { 24, 152, 1597 }, { 24, 152, 1598 },\n    { 24, 152, 1600 },  { 25, 152, 1602 }, { 25, 152, 1604 }, { 26, 152, 1605 }, { 26, 152, 1607 },\n    { 27, 152, 1609 },  { 27, 152, 1610 }, { 28, 152, 1611 }, { 28, 152, 1612 }, { 28, 152, 1613 },\n    { 28, 152, 1613 },  { 28, 152, 1613 }, { 28, 152, 1612 }, { 27, 152, 1610 }, { 26, 152, 1607 },\n    { 26, 152, 1604 },  { 25, 152, 1600 }, { 23, 152, 1595 }, { 13, 153, 1557 }, { -3, 153, 1493 },\n    { -12, 154, 1459 }, { -3, 153, 1493 }, { 13, 153, 1557 }, { 23, 152, 1595 }, { 23, 153, 1596 },\n    { 22, 153, 1590 },  { 19, 153, 1578 }, { 15, 154, 1563 }, { 11, 154, 1548 }, { 7, 154, 1534 },\n    { 4, 155, 1524 },   { 3, 155, 1520 },  { 4, 155, 1524 },  { 6, 154, 1532 },  { 10, 154, 1544 },\n    { 13, 154, 1558 },  { 17, 153, 1572 }, { 20, 153, 1584 }, { 22, 153, 1592 }, { 23, 152, 1595 },\n    { 23, 152, 1595 },  { 23, 152, 1596 }, { 24, 152, 1597 }, { 24, 152, 1598 }, { 24, 152, 1599 },\n    { 25, 152, 1601 },  { 25, 152, 1602 }, { 25, 152, 1604 }, { 26, 152, 1606 }, { 26, 152, 1608 },\n    { 27, 152, 1610 },  { 27, 151, 1612 }, { 28, 151, 1614 }, { 28, 151, 1615 }, { 29, 151, 1617 },\n    { 29, 151, 1619 },  { 30, 151, 1620 }, { 29, 151, 1618 }, { 29, 151, 1618 }, { 29, 151, 1618 },\n    { 29, 151, 1618 },  { 29, 151, 1618 }, { 29, 151, 1618 }, { 29, 151, 1618 }, { 29, 151, 1618 },\n    { 29, 151, 1619 },  { 29, 151, 1619 }, { 29, 151, 1619 }, { 29, 151, 1619 }, { 29, 151, 1619 },\n    { 30, 151, 1620 },  { 30, 151, 1620 }, { 30, 151, 1620 }, { 30, 151, 1621 }, { 30, 151, 1621 },\n    { 30, 151, 1621 },  { 30, 151, 1622 }, { 30, 151, 1622 }, { 30, 151, 1622 }, { 30, 151, 1623 },\n    { 30, 151, 1623 },  { 31, 151, 1623 }, { 31, 151, 1624 }, { 31, 151, 1624 }, { 31, 151, 1625 },\n    { 31, 151, 1625 },  { 31, 151, 1625 }, { 31, 151, 1626 }, { 31, 151, 1626 }, { 31, 151, 1626 },\n    { 31, 151, 1626 },  { 31, 151, 1627 }, { 31, 151, 1627 }, { 32, 151, 1627 }, { 32, 151, 1627 },\n    { 32, 151, 1628 },  { 32, 151, 1628 }, { 32, 151, 1628 }, { 32, 151, 1628 }, { 32, 151, 1628 },\n    { 32, 151, 1628 },  { 32, 151, 1628 }, { 32, 151, 1628 }, { 32, 151, 1628 }, { 32, 151, 1628 },\n    { 32, 151, 1628 },  { 32, 151, 1628 }, { 32, 151, 1628 }, { 32, 151, 1628 }, { 32, 151, 1628 },\n    { 32, 151, 1627 },  { 31, 151, 1627 }, { 31, 151, 1627 }, { 31, 151, 1626 }, { 31, 151, 1626 },\n    { 31, 151, 1625 },  { 31, 151, 1625 }, { 31, 151, 1624 }, { 30, 151, 1623 }, { 30, 151, 1622 },\n    { 30, 151, 1622 },  { 30, 151, 1621 }, { 30, 151, 1620 }, { 29, 151, 1619 }, { 29, 151, 1618 },\n    { 29, 151, 1617 },  { 28, 151, 1615 }, { 28, 151, 1613 }, { 27, 151, 1611 }, { 26, 151, 1608 },\n    { 26, 151, 1605 },  { 25, 151, 1602 }, { 24, 152, 1598 }, { 23, 152, 1595 }, { 22, 152, 1591 },\n    { 21, 152, 1587 },  { 20, 152, 1583 }, { 19, 152, 1579 }, { 18, 152, 1575 }, { 16, 152, 1570 },\n    { 15, 152, 1566 },  { 14, 153, 1561 }, { 13, 153, 1557 }, { 12, 153, 1553 }, { 11, 153, 1548 },\n    { 10, 153, 1544 },  { 8, 153, 1540 },  { 7, 153, 1536 },  { 6, 153, 1532 },  { 5, 154, 1528 },\n    { 4, 154, 1525 },   { 4, 154, 1522 },  { 3, 154, 1519 },  { 2, 154, 1516 },  { 1, 154, 1513 },\n    { 1, 154, 1511 },   { 0, 154, 1510 },  { 0, 154, 1508 },  { 0, 154, 1507 },  { 0, 154, 1506 },\n    { 0, 154, 1506 },\n};\n\nstruct AnimDataInfo anim_mario_mustache_right[3] = {\n    { ARRAY_COUNT(animdata_mario_mustache_right_1), GD_ANIM_ROT3S, animdata_mario_mustache_right_1 },\n    { ARRAY_COUNT(animdata_mario_mustache_right_2), GD_ANIM_ROT3S, animdata_mario_mustache_right_2 },\n    END_ANIMDATA_INFO_ARR,\n};\n"
  },
  {
    "path": "src/goddard/dynlists/animdata.h",
    "content": "#ifndef GD_ANIMDATA_H\n#define GD_ANIMDATA_H\n\n#include \"../gd_types.h\"\n#define END_ANIMDATA_INFO_ARR { -1, GD_ANIM_EMPTY, NULL }\n\nextern struct AnimDataInfo anim_mario_mustache_right[];\nextern struct AnimDataInfo anim_mario_mustache_left[];\nextern struct AnimDataInfo anim_mario_lips_1[];\nextern struct AnimDataInfo anim_mario_lips_2[];\nextern struct AnimDataInfo anim_mario_eyebrows_1[];\nextern struct AnimDataInfo anim_mario_eyebrows_equalizer[];\nextern struct AnimDataInfo anim_mario_eyebrows_2[];\nextern struct AnimDataInfo anim_mario_eyebrows_3[];\nextern struct AnimDataInfo anim_mario_eyebrows_4[];\nextern struct AnimDataInfo anim_mario_eyebrows_5[];\nextern struct AnimDataInfo anim_mario_eye_left[];\nextern struct AnimDataInfo anim_mario_eye_right[];\nextern struct AnimDataInfo anim_mario_cap[];\nextern struct AnimDataInfo anim_mario_lips_3[];\nextern struct AnimDataInfo anim_mario_lips_4[];\nextern struct AnimDataInfo anim_mario_ear_left[];\nextern struct AnimDataInfo anim_mario_ear_right[];\nextern struct AnimDataInfo anim_mario_nose[];\nextern struct AnimDataInfo anim_mario_lips_5[];\nextern struct AnimDataInfo anim_mario_lips_6[];\nextern struct AnimDataInfo anim_mario_eyelid_left[];\nextern struct AnimDataInfo anim_mario_eyelid_right[];\nextern struct AnimDataInfo anim_mario_intro[];\nextern struct AnimDataInfo anim_silver_star[];\nextern struct AnimDataInfo anim_red_star[];\n\n#endif // GD_ANIMDATA_H\n"
  },
  {
    "path": "src/goddard/dynlists/dynlist_macros.h",
    "content": "#ifndef GD_DYNLIST_MACROS_H\n#define GD_DYNLIST_MACROS_H\n\n/* DynListCmd Macros */\n\n/**\n * Must be the first command in a dynlist.\n */\n#define BeginList() \\\n    { 53716, {0}, {0}, {0.0, 0.0, 0.0} }\n\n/**\n * Must be the last command in a dynlist.\n */\n#define EndList() \\\n    { 58, {0}, {0}, {0.0, 0.0, 0.0} }\n\n/**\n * If `enable` is TRUE, then subsequent object names are treated as integers\n * rather than strings.\n */\n#define UseIntegerNames(enable) \\\n    { 0, {0}, {(void *)(enable)}, {0.0, 0.0, 0.0} }\n\n/**\n * Set the initial position of the current object\n * Supported Objs: joints, particles, nets, vertices, cameras\n */\n#define SetInitialPosition(x, y, z) \\\n    { 1, {0}, {0}, {(x), (y), (z)} }\n\n/**\n * Set the relative position of the current object\n * Supported Objs: joints, particles, vertices, cameras, labels\n */\n#define SetRelativePosition(x, y, z) \\\n    { 2, {0}, {0}, {(x), (y), (z)} }\n\n/**\n * Set the world position of the current object\n * Supported Objs: joints, nets, vertices, cameras, gadgets, views\n */\n#define SetWorldPosition(x, y, z) \\\n    { 3, {0}, {0}, {(x), (y), (z)} }\n\n/**\n * Set the normal of the current object\n * Supported Objs: vertices\n */\n#define SetNormal(x, y, z) \\\n    { 4, {0}, {0}, {(x), (y), (z)} }\n\n/**\n * Set the scale of the current object\n * Supported Objs: joints, particles, nets, gadgets, views, lights\n */\n#define SetScale(x, y, z) \\\n    { 5, {0}, {0}, {(x), (y), (z)} }\n\n/**\n * Set the rotation of the current object\n * Supported Objs: joints, nets\n */\n#define SetRotation(x, y, z) \\\n    { 6, {0}, {0}, {(x), (y), (z)} }\n\n/**\n * Set the specified bits in the object's `drawFlags` field\n * Supported Objs: all\n */\n#define SetDrawFlag(flags) \\\n    { 7, {0}, {(void *)(flags)}, {0.0, 0.0, 0.0} }\n\n/**\n * Set the specified bits in the object specific flag\n * Supported Objs: bones, joints, particles, shapes, nets, cameras, views, lights\n */\n#define SetFlag(flags) \\\n    { 8, {0}, {(void *)(flags)}, {0.0, 0.0, 0.0} }\n\n/**\n * Clear the specified bits in the object specific flag\n * Supported Objs: bones, joints, particles, nets, cameras\n */\n#define ClearFlag(flags) \\\n    { 9, {0}, {(void *)(flags)}, {0.0, 0.0, 0.0} }\n\n/**\n * Set the friction vector of a Joint\n * Supported Objs: joints\n */\n#define SetFriction(x, y, z) \\\n    { 10, {0}, {0}, {(x), (y), (z)} }\n\n/**\n * Set the spring value of a Bone\n * Supported Objs: bones\n */\n#define SetSpring(spring) \\\n    { 11, {0}, {0}, {(spring), 0.0, 0.0} }\n\n/**\n * Jump to pointed dynlist. Once that list has finished processing, flow returns\n * to the current list.\n */\n#define CallList(list) \\\n    { 12, {(void *)(list)}, {0}, {0.0, 0.0, 0.0} }\n\n/**\n * Sets the object's color to one of the predefined colors (see draw_objects.h\n * for the list of colors.\n * Supported Objs: joints, particles, nets, faces, gadgets\n */\n#define SetColourNum(colourNum) \\\n    { 13, {0}, {(void *)(colourNum)}, {0.0, 0.0, 0.0} }\n\n/**\n * Make an object of the specified type and name, and set it as the current\n * object.\n */\n#define MakeDynObj(type, name) \\\n    { 15, {(void *)(name)}, {(void *)(type)}, {0.0, 0.0, 0.0} }\n\n/**\n * Make a group that will contain all subsequently created objects once the\n * EndGroup command is called.\n */\n#define StartGroup(grpName) \\\n    { 16, {(void *)(grpName)}, {0}, {0.0, 0.0, 0.0} }\n\n/**\n * End a group. All objects created between StartGroup and EndGroup are added to\n * the group.\n */\n#define EndGroup(grpName) \\\n    { 17, {(void *)(grpName)}, {0}, {0.0, 0.0, 0.0} }\n\n/**\n * Add the current object to the specified group.\n * Supported Objs: all\n */\n#define AddToGroup(grpName) \\\n    { 18, {(void *)(grpName)}, {0}, {0.0, 0.0, 0.0} }\n\n/**\n * Set an object specific type flag.\n * Supported Objs: groups, joints, particles, nets, materials, gadgets\n */\n#define SetType(type) \\\n    { 19, {0}, {(void *)(type)}, {0.0, 0.0, 0.0} }\n\n/**\n * Set the current shape's material group to the specified group.\n * Supported Objs: shapes\n */\n#define SetMaterialGroup(mtlGrpName) \\\n    { 20, {(void *)(mtlGrpName)}, {0}, {0.0, 0.0, 0.0} }\n\n/**\n * Assign the specified group to the current object. The purpose of the group\n * depends on the current object's type. For shapes, it sets the vertex data.\n * For animators, it sets the animation data. For nets, it sets ???. For\n * gadgets, it sets ???.\n * Supported Objs: shapes, nets, gadgets, animators\n */\n#define SetNodeGroup(grpName) \\\n    { 21, {(void *)(grpName)}, {0}, {0.0, 0.0, 0.0} }\n\n/**\n * Set the skin group of the current Net object with the vertices from the\n * specified shape.\n * Supported Objs: nets\n */\n#define SetSkinShape(shapeName) \\\n    { 22, {(void *)(shapeName)}, {0}, {0.0, 0.0, 0.0} }\n\n/**\n * Set the plane (face) group of the current object.\n * Supported Objs: shapes, nets\n */\n#define SetPlaneGroup(planeGrpName) \\\n    { 23, {(void *)(planeGrpName)}, {0}, {0.0, 0.0, 0.0} }\n\n/**\n * Set the current object's shape, where `shapePtr` is a pointer to an\n * `ObjShape`.\n * Supported Objs: bones, joints, particles, nets, gadgets, lights\n */\n#define SetShapePtrPtr(shapePtr) \\\n    { 24, {(void *)(shapePtr)}, {0}, {0.0, 0.0, 0.0} }\n\n/**\n * Set the current object's shape, where `shapeName` is the name of a shape\n * object.\n * Supported Objs: bones, joints, particles, nets, gadgets\n */\n#define SetShapePtr(shapeName) \\\n    { 25, {(void *)(shapeName)}, {0}, {0.0, 0.0, 0.0} }\n\n/**\n * Set offset of the connected shape\n * Supported Objs: joints\n */\n#define SetShapeOffset(x, y, z) \\\n    { 26, {0}, {0}, {(x), (y), (z)} }\n\n/**\n * Set the center of gravity of the current Net object\n * Supported Objs: nets\n */\n#define SetCenterOfGravity(x, y, z) \\\n    { 27, {0}, {0}, {(x), (y), (z)} }\n\n// TODO:\n\n/* Link Object ID to the current dynobj */\n/* Supported Objs: groups, bones, faces, cameras, views, labels, animators */\n#define LinkWith(w1) \\\n    { 28, {(void *)(w1)}, {0}, {0.0, 0.0, 0.0} }\n\n/* Link Object pointer to the current dynobj */\n/* Supported Objs: groups, bones, faces, cameras, views, labels, animators */\n#define LinkWithPtr(w1) \\\n    { 29, {(void *)(w1)}, {0}, {0.0, 0.0, 0.0} }\n\n/**\n * Set the specified object as the current object.\n * Supported Objs: all\n */\n#define UseObj(name) \\\n    { 30, {(void *)(name)}, {0}, {0.0, 0.0, 0.0} }\n\n/**\n * Set the current Net object's control type field. Control type is never used\n * for anything, so this command effectively does nothing.\n * Supported Objs: nets\n */\n#define SetControlType(w2) \\\n    { 31, {0}, {(void *)(w2)}, {0.0, 0.0, 0.0} }\n\n/**\n * Set the weight percentage of the specified vertex controlled by the current\n * Joint object.\n * Supported Objs: joints\n */\n#define SetSkinWeight(vtxNum, weight) \\\n    { 32, {0}, {(void *)(vtxNum)}, {(weight), 0.0, 0.0} }\n\n/**\n * Set the ambient color of the current Material object.\n * Supported Objs: materials\n */\n#define SetAmbient(r, g, b) \\\n    { 33, {0}, {0}, {(r), (g), (b)} }\n\n/**\n * Set the diffuse color of the current Material or Light object.\n * Supported Objs: materials, lights\n */\n#define SetDiffuse(r, g, b) \\\n    { 34, {0}, {0}, {(r), (g), (b)} }\n\n/**\n * Set the object specific ID field.\n * Supported Objs: joints, vertices, materials, lights\n */\n#define SetId(id) \\\n    { 35, {0}, {(void *)(id)}, {0.0, 0.0, 0.0} }\n\n/**\n * Set the material id of the current Face\n * Supported Objs: faces\n */\n#define SetMaterial(id) \\\n    { 36, {0}, {(void *)(id)}, {0.0, 0.0, 0.0} }\n\n/**\n * For all faces in the current Group, resolve their material IDs to actual\n * `ObjMaterial`s.\n * Supported Objs: groups\n */\n#define MapMaterials(name) \\\n    { 37, {(void *)(name)}, {0}, {0.0, 0.0, 0.0} }\n\n/**\n * For all faces in the current Group, resolve their vertex indices to pointers\n * to actual `ObjVertex`es. Calculate normals for all vertices in the the group\n * specified by `name`\n * Supported Objs: groups\n */\n#define MapVertices(name) \\\n    { 38, {(void *)(name)}, {0}, {0.0, 0.0, 0.0} }\n\n/**\n * Stub command (does nothing).\n * Supported Objs: joints\n */\n#define Attach(name) \\\n    { 39, {(void *)(name)}, {0}, {0.0, 0.0, 0.0} }\n\n/**\n * Attach the current object to the specified object, using the specified flags.\n * Supported Objs: joints, particles, nets, animators\n */\n#define AttachTo(flags, name) \\\n    { 40, {(void *)(name)}, {(void *)(flags)}, {0.0, 0.0, 0.0} }\n\n/**\n * Set the point at which the current object is attached to its parent object\n * Supported Objs: joints, particles, nets\n */\n#define SetAttachOffset(x, y, z) \\\n    { 41, {0}, {0}, {(x), (y), (z)} }\n\n/**\n * Set a \"suffix\" to use with dynobj names. All commands that take a name as a\n * parameter will have this suffix appended to the name.\n */\n#define SetNameSuffix(suffix) \\\n    { 43, {(void *)(suffix)}, {0}, {0.0, 0.0, 0.0} }\n\n/**\n * Set the float paramter `param` to `value`.\n * For Shapes, the following parameters are supported:\n *     PARM_F_ALPHA - the alpha (opacity) of the shape\n * For Gadgets, the following parameters are supported:\n *     PARM_F_RANGE_MIN - the minimum value of the gadget\n *     PARM_F_RANGE_MAX - the maximum value of the gadget\n *     PARM_F_VARVAL - the current value of the gadget\n * For Vertices, the following parameters are supported:\n *     PARM_F_ALPHA - the alpha (opacity) of the vertex\n * Supported Objs: shapes, vertices, gadgets\n */\n#define SetParamF(param, value) \\\n    { 44, {0}, {(void *)(param)}, {(value), 0.0, 0.0} }\n\n/**\n * Set pointer paramter `param` to `value`\n * For Labels, the following parameters are supported:\n *     PARM_PTR_CHAR - the format string for the label text\n * For Views, the following parameters are supported:\n *     PARM_PTR_CHAR - the name of the view\n * For Faces, the following parameters are supported:\n *     PARM_PTR_OBJ_VTX - (not actually a pointer) index of a vertex created with `MakeVertex`.\n * Supported Objs: faces, views, labels */\n#define SetParamPtr(param, value) \\\n    { 45, {(void *)(value)}, {(void *)(param)}, {0.0, 0.0, 0.0} }\n\n/**\n * Create a Net with the specified name, and add a group to it.\n */\n#define MakeNetWithSubGroup(name) \\\n    { 46, {(void *)(name)}, {0}, {0.0, 0.0, 0.0} }\n\n/**\n * Make a Joint and attach it to the Net created with \"MakeNetWithSubGroup\".\n */\n#define MakeAttachedJoint(name) \\\n    { 47, {(void *)(name)}, {0}, {0.0, 0.0, 0.0} }\n\n/**\n * End a Net that was created with \"MakeNetWithSubGroup\"\n */\n#define EndNetWithSubGroup(name) \\\n    { 48, {(void *)(name)}, {0}, {0.0, 0.0, 0.0} }\n\n/**\n * Add a Vertex dynobj\n */\n#define MakeVertex(x, y, z) \\\n    { 49, {0}, {0}, {(x), (y), (z)} }\n\n/**\n * Add a ValPtr dynobj\n */\n#define MakeValPtr(id, flags, type, offset) \\\n    { 50, {(void *)(id)}, {(void *)(type)}, {(offset), (flags), 0.0} }\n\n/**\n * Set the texture of the current Material dynobj. Note that textures are not\n * actually supported.\n * Supported Objs: materials\n */\n#define UseTexture(texture) \\\n    { 52, {0}, {(void *)(texture)}, {0.0, 0.0, 0.0} }\n\n/**\n * Stub command (does nothing).\n * Supported Objs: vertices\n */\n#define SetTextureST(s, t) \\\n    { 53, {0}, {0}, {(s), (t), 0.0} }\n\n/* Make a new Net from Shape ID */\n#define MakeNetFromShape(shape) \\\n    { 54, {(void *)(shape)}, {0}, {0.0, 0.0, 0.0} }\n\n/* Make a new Net from Shape double pointer PTR */\n#define MakeNetFromShapePtrPtr(w1) \\\n    { 55, {(void *)(w1)}, {0}, {0.0, 0.0, 0.0} }\n\n#endif // GD_DYNLIST_MACROS_H\n"
  },
  {
    "path": "src/goddard/dynlists/dynlist_mario_face.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"macros.h\"\n#include \"dynlist_macros.h\"\n#include \"dynlists.h\"\n#include \"../dynlist_proc.h\"\n\nstatic s16 mario_Face_VtxData[][3] = {\n    { 434, 326, -209 },   { 283, 371, -268 },   { 344, 531, -97 },    { 360, 187, -363 },\n    { 162, -260, 265 },   { 172, -251, 175 },   { 218, -191, 287 },   { 173, 279, 296 },\n    { 192, 226, 279 },    { 233, 346, 216 },    { 135, -283, 182 },   { 165, -299, 114 },\n    { 283, -7, -283 },    { 252, -41, -396 },   { 339, 63, -209 },    { 128, 20, 390 },\n    { 203, -50, 366 },    { 219, 24, 358 },     { 127, -74, 423 },    { 0, -125, 459 },\n    { 125, -76, 401 },    { 83, 86, 359 },      { 124, 85, 409 },     { 144, 91, 567 },\n    { 151, 5, 459 },      { 65, -67, 636 },     { 106, -104, 567 },   { 117, 1, 636 },\n    { 0, 141, 459 },      { 0, 139, 567 },      { 66, 80, 636 },      { 99, -284, 284 },\n    { 125, -295, 252 },   { 343, -31, 227 },    { 296, 35, 287 },     { 267, -115, 314 },\n    { 374, -65, 73 },     { 366, -103, 153 },   { 369, -90, 62 },     { 77, -339, 122 },\n    { 94, -363, 22 },     { 0, -123, 567 },     { 63, -198, 357 },    { 115, -178, 351 },\n    { 53, -167, 398 },    { 311, 79, 200 },     { 265, 141, 195 },    { 242, 98, 288 },\n    { 54, 306, 339 },     { 127, 314, 325 },    { 123, 383, 276 },    { 195, 158, 286 },\n    { 490, 222, -179 },   { 410, 149, -123 },   { 281, 383, 493 },    { 349, 313, 311 },\n    { 243, 407, 458 },    { 323, 286, 131 },    { 445, 241, -29 },    { 466, 126, -176 },\n    { 432, 145, -125 },   { 465, 96, -107 },    { 327, -122, -180 },  { 348, -73, -156 },\n    { 297, -152, -126 },  { 496, 52, -220 },    { 424, 90, -198 },    { 431, 480, -59 },\n    { 356, 611, 78 },     { 119, 770, 199 },    { 243, 714, 165 },    { 183, 744, 77 },\n    { 117, 190, -556 },   { 206, 36, -541 },    { 273, -85, -230 },   { 132, 423, 573 },\n    { 263, 636, 246 },    { 236, 536, 288 },    { 318, 452, 218 },    { 114, 573, -114 },\n    { 49, 394, -230 },    { 127, 365, -303 },   { 41, 126, 357 },     { 0, 127, 368 },\n    { 342, -114, -82 },   { 144, -241, 291 },   { 128, -226, 276 },   { 0, -112, 421 },\n    { 385, 17, -116 },    { 430, 29, -155 },    { 484, -69, -165 },   { 436, -20, -205 },\n    { 504, 4, -195 },     { 308, -167, 222 },   { 288, -237, 119 },   { 341, -164, 56 },\n    { 257, -234, -64 },   { 143, 91, 333 },     { 35, -227, 201 },    { 0, -293, 274 },\n    { 66, -283, 272 },    { 91, -149, 273 },    { 50, -217, 325 },    { 74, -107, 155 },\n    { 75, -227, 201 },    { 74, -321, 190 },    { 186, -226, -173 },  { 97, -313, -200 },\n    { 159, -331, 5 },     { 157, -164, 336 },   { 162, -139, 369 },   { 164, -190, 319 },\n    { 156, -150, 317 },   { 41, -314, 282 },    { 62, -329, 252 },    { 0, -342, 252 },\n    { 0, -339, 190 },     { 0, -371, 136 },     { 379, 21, -58 },     { 345, -32, -2 },\n    { 375, -21, -59 },    { 314, 331, 289 },    { 425, -38, -132 },   { 483, 49, -147 },\n    { 177, 107, 315 },    { 311, 216, 143 },    { 56, 131, 305 },     { 82, 87, 283 },\n    { 59, 268, 295 },     { 0, 383, 308 },      { 46, 224, 357 },     { 73, 297, 289 },\n    { 124, 305, 270 },    { 161, 275, 258 },    { 181, 226, 248 },    { 167, 123, 248 },\n    { 138, 92, 249 },     { 348, -76, -25 },    { 416, -115, -95 },   { 396, 155, -77 },\n    { 345, 5, -6 },       { 407, 80, -78 },     { 399, 192, -5 },     { 351, 211, 49 },\n    { 385, -16, 93 },     { 471, 410, 0 },      { 406, 344, 72 },     { 299, 642, -9 },\n    { 99, 678, -16 },     { 61, 746, 77 },      { 0, 662, 326 },      { 144, 693, 290 },\n    { 367, 553, 169 },    { 246, -69, -335 },   { 179, 521, 305 },    { 145, 447, 317 },\n    { 67, 655, 314 },     { 148, 624, 303 },    { 237, 378, 229 },    { 127, -190, 213 },\n    { 168, 2, 567 },      { 0, 1, 662 },        { 209, 314, -391 },   { 41, 354, -332 },\n    { 406, 115, -313 },   { 260, -175, -198 },  { 90, -361, -92 },    { 401, -99, -132 },\n    { 470, -19, -130 },   { 355, 55, 133 },     { 325, 107, 130 },    { 411, 73, 85 },\n    { 362, 145, 57 },     { 83, 298, -450 },    { -41, 354, -332 },   { -83, 298, -450 },\n    { -112, 190, -556 },  { -2, -382, 60 },     { -90, -361, -92 },   { -97, -313, -200 },\n    { 108, -241, -280 },  { 0, -238, -280 },    { -67, 80, 636 },     { -66, -67, 636 },\n    { -113, 529, 326 },   { -179, 521, 305 },   { -145, 447, 317 },   { -74, -107, 155 },\n    { -50, -217, 325 },   { -35, -227, 201 },   { 0, 3, -569 },       { 0, -42, -443 },\n    { -119, 770, 199 },   { -99, 678, -16 },    { -114, 573, -114 },  { -61, 746, 77 },\n    { -54, 306, 339 },    { -46, 224, 357 },    { -63, -198, 357 },   { -53, -167, 398 },\n    { 98, -67, -392 },    { 127, 441, 523 },    { 0, 423, 573 },      { 292, -219, -231 },\n    { 78, -230, -456 },   { 56, -257, -404 },   { 32, -210, -431 },   { 124, -217, -428 },\n    { 125, -185, -370 },  { 97, -166, -483 },   { 56, -159, -486 },   { -3, -72, -404 },\n    { -3, -174, -377 },   { 303, -200, -423 },  { 243, -262, -358 },  { 204, -203, -428 },\n    { 241, -139, -464 },  { 166, -110, -445 },  { 277, -93, -416 },   { 174, -205, -404 },\n    { 294, -239, -381 },  { 258, -243, -302 },  { 345, -172, -370 },  { 342, -132, -280 },\n    { 382, 54, -197 },    { 439, 41, -227 },    { 389, 29, -202 },    { 390, -13, -203 },\n    { 412, -69, -184 },   { 422, -63, -95 },    { 0, 440, 529 },      { 364, 16, 148 },\n    { 424, 39, 39 },      { 401, 29, 97 },      { 391, 132, 5 },      { 395, 101, -33 },\n    { 172, -260, -335 },  { 103, -257, -404 },  { 295, -131, -457 },  { 403, 171, -41 },\n    { -471, 410, 0 },     { -490, 222, -179 },  { -445, 241, -29 },   { -410, 149, -123 },\n    { -396, 155, -77 },   { -403, 171, -41 },   { -323, 286, 131 },   { -406, 344, 72 },\n    { -399, 192, -5 },    { -318, 452, 218 },   { -209, 314, -391 },  { -283, 371, -268 },\n    { -127, 365, -303 },  { -98, -67, -392 },   { -125, -185, -370 }, { -166, -110, -445 },\n    { -246, -69, -335 },  { -277, -93, -416 },  { -342, -132, -280 }, { -292, -219, -231 },\n    { -258, -243, -302 }, { -113, -243, -280 }, { -172, -260, -335 }, { -358, 57, 132 },\n    { -363, 17, 151 },    { -311, 79, 200 },    { -407, 29, 97 },     { -345, 5, -6 },\n    { -395, 101, -33 },   { -391, 132, 5 },     { -351, 211, 49 },    { -362, 145, 57 },\n    { -385, -16, 93 },    { -343, -31, 227 },   { -283, -7, -287 },   { -273, -85, -230 },\n    { -360, 187, -363 },  { -206, 36, -541 },   { -406, 115, -313 },  { -303, -200, -423 },\n    { -345, -172, -370 }, { -295, -131, -457 }, { -241, -139, -464 }, { -204, -203, -428 },\n    { -294, -239, -381 }, { -243, -262, -358 }, { -78, -230, -456 },  { -56, -159, -486 },\n    { -32, -210, -431 },  { -97, -166, -483 },  { -124, -217, -428 }, { -103, -257, -404 },\n    { -56, -257, -404 },  { -174, -205, -404 }, { -311, 216, 143 },   { -418, 39, 39 },\n    { -411, 73, 85 },     { -327, 106, 129 },   { -374, -65, 73 },    { -348, -76, -25 },\n    { -345, -167, 56 },   { -369, -90, 62 },    { -345, -32, -2 },    { -237, 378, 229 },\n    { -314, 331, 289 },   { -243, 407, 458 },   { -127, 441, 523 },   { -439, 41, -227 },\n    { -436, -20, -205 },  { -504, 4, -195 },    { -416, -115, -95 },  { -422, -63, -95 },\n    { -339, 63, -209 },   { -348, -73, -156 },  { -390, -13, -203 },  { -401, -99, -132 },\n    { -342, -114, -82 },  { -484, -69, -165 },  { -412, -69, -184 },  { -470, -19, -130 },\n    { -425, -38, -132 },  { -375, -21, -59 },   { -407, 80, -78 },    { -385, 17, -116 },\n    { -379, 21, -58 },    { -424, 90, -198 },   { -382, 54, -197 },   { -389, 29, -202 },\n    { -496, 52, -220 },   { -483, 49, -147 },   { -466, 126, -176 },  { -432, 145, -125 },\n    { -465, 96, -107 },   { -186, -226, -173 }, { -260, -175, -198 }, { -132, 423, 573 },\n    { -94, -363, 22 },    { -77, -339, 122 },   { -123, 383, 276 },   { -252, -20, -373 },\n    { -430, 29, -155 },   { -254, -230, -63 },  { -159, -331, 5 },    { -297, -152, -126 },\n    { -322, -122, -180 }, { -49, 394, -230 },   { -145, 91, 567 },    { -124, 85, 409 },\n    { -169, 2, 567 },     { -151, 5, 459 },     { -119, -69, 429 },   { -106, -104, 567 },\n    { -118, 1, 636 },     { -128, 20, 390 },    { -115, -178, 351 },  { -157, -164, 336 },\n    { -155, -149, 317 },  { -127, -190, 214 },  { -75, -227, 201 },   { -367, 553, 169 },\n    { -236, 536, 288 },   { -263, 636, 246 },   { -148, 624, 303 },   { -144, 693, 290 },\n    { -67, 655, 314 },    { -434, 326, -209 },  { -243, 714, 165 },   { -356, 611, 78 },\n    { -183, 744, 77 },    { -299, 642, -9 },    { -344, 531, -97 },   { -366, -103, 153 },\n    { -267, -115, 314 },  { -296, 35, 287 },    { -242, 98, 288 },    { -192, 221, 279 },\n    { -162, -139, 369 },  { -91, -147, 273 },   { -288, -237, 119 },  { -165, -299, 114 },\n    { -172, -251, 176 },  { -219, 24, 358 },    { -143, 91, 333 },    { -203, -50, 366 },\n    { -125, -76, 401 },   { -82, 87, 288 },     { -83, 86, 359 },     { -41, 126, 357 },\n    { -138, 92, 254 },    { -177, 107, 311 },   { -167, 120, 250 },   { -198, 155, 286 },\n    { -181, 221, 239 },   { -161, 268, 247 },   { -169, 277, 296 },   { -124, 298, 270 },\n    { -127, 314, 325 },   { -73, 290, 291 },    { -56, 128, 309 },    { -59, 261, 299 },\n    { -265, 141, 195 },   { -233, 346, 207 },   { -281, 383, 493 },   { -349, 313, 311 },\n    { -308, -167, 222 },  { -135, -283, 182 },  { -74, -321, 190 },   { -218, -191, 287 },\n    { -164, -187, 321 },  { -162, -260, 265 },  { -144, -241, 291 },  { -99, -284, 283 },\n    { -62, -329, 252 },   { -41, -314, 282 },   { -66, -284, 272 },   { -125, -295, 252 },\n    { -127, -226, 276 },  { -431, 480, -59 },   { 0, -320, 282 },     { -181, 161, 238 },\n    { 0, 461, 348 },      { -72, 454, 336 },    { 72, 454, 336 },     { 181, 165, 241 },\n    { 0, 529, 345 },      { 113, 529, 326 },    { -59, 524, 333 },    { 59, 524, 333 },\n    { 0, 306, 339 },      { 0, 224, 357 },      { 162, 48, 567 },     { 156, -52, 567 },\n    { -77, 126, 434 },    { -156, -52, 567 },   { -90, 127, 567 },    { 88, 127, 567 },\n    { -67, -114, 567 },   { 66, -114, 567 },    { 76, 126, 434 },     { -157, 46, 567 },\n};\n\nstatic struct GdVtxData mario_Face_VtxInfo = { ARRAY_COUNT(mario_Face_VtxData), 0x1, mario_Face_VtxData };\n\nstatic u16 mario_Face_FaceData[][4] = {\n    { 0, 43, 102, 112 },  { 0, 102, 42, 188 },  { 0, 354, 356, 188 }, { 0, 188, 198, 354 },\n    { 0, 198, 188, 42 },  { 0, 43, 42, 102 },   { 1, 4, 5, 6 },       { 1, 7, 8, 9 },\n    { 1, 10, 11, 5 },     { 1, 15, 16, 17 },    { 1, 18, 19, 20 },    { 1, 21, 22, 15 },\n    { 1, 23, 24, 22 },    { 1, 27, 25, 26 },    { 1, 27, 26, 431 },   { 1, 435, 23, 22 },\n    { 1, 30, 23, 435 },   { 1, 4, 31, 32 },     { 1, 33, 34, 35 },    { 1, 36, 37, 38 },\n    { 1, 11, 39, 40 },    { 1, 437, 26, 25 },   { 1, 18, 26, 19 },    { 1, 42, 43, 44 },\n    { 1, 45, 46, 47 },    { 1, 48, 49, 50 },    { 1, 47, 46, 51 },    { 1, 59, 60, 61 },\n    { 1, 62, 63, 64 },    { 1, 59, 65, 66 },    { 1, 34, 33, 45 },    { 1, 24, 15, 22 },\n    { 1, 20, 15, 18 },    { 1, 82, 83, 28 },    { 1, 82, 28, 438 },   { 1, 84, 64, 63 },\n    { 1, 85, 86, 31 },    { 1, 87, 20, 19 },    { 1, 35, 16, 20 },    { 1, 88, 89, 61 },\n    { 1, 90, 91, 92 },    { 1, 6, 5, 93 },      { 1, 94, 95, 37 },    { 1, 96, 95, 94 },\n    { 1, 21, 15, 97 },    { 1, 10, 32, 105 },   { 1, 87, 44, 20 },    { 1, 106, 96, 107 },\n    { 1, 96, 64, 95 },    { 1, 94, 108, 96 },   { 1, 109, 35, 110 },  { 1, 35, 109, 6 },\n    { 1, 111, 109, 112 }, { 1, 100, 99, 113 },  { 1, 114, 113, 115 }, { 1, 114, 32, 31 },\n    { 1, 113, 31, 100 },  { 1, 5, 4, 10 },      { 1, 105, 114, 116 }, { 1, 4, 85, 31 },\n    { 1, 109, 111, 6 },   { 1, 6, 85, 4 },      { 1, 37, 93, 94 },    { 1, 35, 6, 93 },\n    { 1, 35, 93, 37 },    { 1, 20, 44, 110 },   { 1, 20, 110, 35 },   { 1, 38, 37, 95 },\n    { 1, 84, 95, 64 },    { 1, 105, 117, 39 },  { 1, 10, 39, 11 },    { 1, 108, 94, 11 },\n    { 1, 94, 93, 5 },     { 1, 118, 119, 120 }, { 1, 57, 9, 8 },      { 1, 88, 122, 89 },\n    { 1, 123, 59, 61 },   { 1, 49, 7, 9 },      { 1, 47, 51, 124 },   { 1, 47, 124, 97 },\n    { 1, 125, 8, 46 },    { 1, 50, 129, 48 },   { 1, 126, 130, 82 },  { 1, 128, 131, 48 },\n    { 1, 131, 49, 48 },   { 1, 132, 7, 49 },    { 1, 133, 8, 7 },     { 1, 134, 51, 8 },\n    { 1, 135, 124, 51 },  { 1, 136, 97, 124 },  { 1, 127, 21, 97 },   { 1, 127, 82, 21 },\n    { 1, 34, 17, 35 },    { 1, 35, 17, 16 },    { 1, 15, 20, 16 },    { 1, 97, 15, 17 },\n    { 1, 47, 97, 17 },    { 1, 34, 47, 17 },    { 1, 137, 84, 138 },  { 1, 88, 120, 122 },\n    { 1, 84, 137, 95 },   { 1, 94, 5, 11 },     { 1, 110, 44, 43 },   { 1, 60, 53, 139 },\n    { 1, 140, 141, 139 }, { 1, 57, 8, 125 },    { 1, 118, 140, 119 }, { 1, 34, 45, 47 },\n    { 1, 37, 144, 33 },   { 1, 37, 33, 35 },    { 1, 18, 15, 24 },    { 1, 431, 26, 18 },\n    { 1, 30, 27, 23 },    { 1, 161, 27, 30 },   { 1, 161, 25, 27 },   { 1, 430, 23, 27 },\n    { 1, 431, 160, 27 },  { 1, 19, 26, 437 },   { 1, 19, 437, 41 },   { 1, 430, 160, 24 },\n    { 1, 106, 64, 96 },   { 1, 40, 166, 108 },  { 1, 166, 107, 108 }, { 1, 96, 108, 107 },\n    { 1, 84, 63, 167 },   { 1, 89, 168, 123 },  { 1, 123, 61, 89 },   { 1, 59, 123, 65 },\n    { 1, 88, 118, 120 },  { 1, 59, 66, 53 },    { 1, 61, 139, 141 },  { 1, 61, 141, 88 },\n    { 1, 169, 170, 45 },  { 1, 39, 177, 40 },   { 1, 178, 166, 177 }, { 1, 107, 166, 179 },\n    { 1, 180, 107, 181 }, { 1, 161, 30, 182 },  { 1, 183, 25, 161 },  { 1, 129, 196, 428 },\n    { 1, 428, 196, 197 }, { 1, 429, 197, 387 }, { 1, 198, 44, 199 },  { 1, 199, 44, 87 },\n    { 1, 182, 30, 29 },   { 1, 41, 25, 183 },   { 1, 180, 165, 106 }, { 1, 180, 106, 107 },\n    { 1, 139, 61, 60 },   { 1, 59, 53, 60 },    { 1, 65, 123, 92 },   { 1, 224, 66, 225 },\n    { 1, 226, 225, 91 },  { 1, 227, 91, 228 },  { 1, 63, 227, 228 },  { 1, 63, 228, 167 },\n    { 1, 91, 90, 228 },   { 1, 66, 224, 53 },   { 1, 118, 141, 140 }, { 1, 141, 118, 88 },\n    { 1, 90, 92, 168 },   { 1, 120, 229, 122 }, { 1, 119, 137, 120 }, { 1, 90, 229, 138 },\n    { 1, 168, 122, 229 }, { 1, 90, 167, 228 },  { 1, 90, 138, 167 },  { 1, 167, 138, 84 },\n    { 1, 138, 229, 137 }, { 1, 225, 92, 91 },   { 1, 231, 45, 33 },   { 1, 140, 144, 119 },\n    { 1, 137, 119, 38 },  { 1, 137, 38, 95 },   { 1, 125, 170, 172 }, { 1, 36, 119, 144 },\n    { 1, 57, 125, 143 },  { 1, 144, 231, 33 },  { 1, 169, 45, 231 },  { 1, 263, 264, 265 },\n    { 1, 272, 273, 264 }, { 1, 246, 270, 294 }, { 1, 298, 272, 267 }, { 1, 294, 271, 297 },\n    { 1, 299, 300, 301 }, { 1, 299, 301, 302 }, { 1, 302, 298, 267 }, { 1, 264, 273, 265 },\n    { 1, 307, 308, 309 }, { 1, 310, 299, 311 }, { 1, 315, 316, 310 }, { 1, 317, 315, 310 },\n    { 1, 317, 318, 315 }, { 1, 319, 311, 320 }, { 1, 317, 310, 311 }, { 1, 302, 321, 299 },\n    { 1, 321, 320, 311 }, { 1, 317, 319, 309 }, { 1, 322, 323, 324 }, { 1, 324, 267, 322 },\n    { 1, 325, 243, 326 }, { 1, 308, 318, 317 }, { 1, 313, 315, 318 }, { 1, 313, 318, 314 },\n    { 1, 314, 318, 308 }, { 1, 327, 308, 307 }, { 1, 326, 307, 325 }, { 1, 328, 309, 329 },\n    { 1, 330, 331, 243 }, { 1, 244, 331, 332 }, { 1, 261, 179, 333 }, { 1, 261, 333, 334 },\n    { 1, 336, 177, 337 }, { 1, 178, 177, 336 }, { 1, 263, 265, 297 }, { 1, 332, 323, 322 },\n    { 1, 332, 322, 244 }, { 1, 330, 243, 325 }, { 1, 323, 321, 324 }, { 1, 330, 328, 329 },\n    { 1, 329, 340, 332 }, { 1, 340, 329, 319 }, { 1, 316, 315, 313 }, { 1, 341, 179, 342 },\n    { 1, 178, 342, 179 }, { 1, 336, 342, 178 }, { 1, 333, 341, 343 }, { 1, 434, 29, 28 },\n    { 1, 349, 350, 433 }, { 1, 436, 351, 19 },  { 1, 436, 19, 41 },   { 1, 433, 351, 352 },\n    { 1, 161, 352, 183 }, { 1, 161, 182, 352 }, { 1, 350, 349, 353 }, { 1, 354, 355, 356 },\n    { 1, 371, 372, 273 }, { 1, 371, 273, 272 }, { 1, 373, 374, 265 }, { 1, 324, 302, 267 },\n    { 1, 246, 294, 375 }, { 1, 267, 244, 322 }, { 1, 331, 244, 243 }, { 1, 376, 354, 199 },\n    { 1, 378, 379, 380 }, { 1, 316, 300, 299 }, { 1, 323, 320, 321 }, { 1, 299, 310, 316 },\n    { 1, 373, 381, 374 }, { 1, 374, 381, 382 }, { 1, 382, 381, 353 }, { 1, 353, 383, 384 },\n    { 1, 372, 383, 381 }, { 1, 373, 372, 381 }, { 1, 385, 386, 387 }, { 1, 385, 382, 386 },\n    { 1, 388, 389, 382 }, { 1, 390, 391, 389 }, { 1, 392, 375, 391 }, { 1, 393, 394, 375 },\n    { 1, 395, 396, 394 }, { 1, 397, 196, 396 }, { 1, 399, 197, 196 }, { 1, 398, 387, 197 },\n    { 1, 338, 196, 129 }, { 1, 401, 394, 396 }, { 1, 294, 400, 375 }, { 1, 374, 382, 389 },\n    { 1, 374, 389, 391 }, { 1, 329, 332, 330 }, { 1, 323, 340, 320 }, { 1, 246, 375, 401 },\n    { 1, 324, 321, 302 }, { 1, 378, 380, 404 }, { 1, 342, 379, 378 }, { 1, 405, 379, 337 },\n    { 1, 406, 337, 117 }, { 1, 316, 343, 300 }, { 1, 301, 300, 371 }, { 1, 384, 372, 376 },\n    { 1, 384, 376, 199 }, { 1, 372, 371, 404 }, { 1, 372, 404, 407 }, { 1, 371, 378, 404 },\n    { 1, 356, 355, 408 }, { 1, 407, 409, 410 }, { 1, 355, 407, 408 }, { 1, 409, 411, 410 },\n    { 1, 406, 116, 412 }, { 1, 380, 405, 409 }, { 1, 413, 414, 411 }, { 1, 412, 411, 415 },\n    { 1, 412, 115, 413 }, { 1, 414, 413, 99 },  { 1, 372, 407, 355 }, { 1, 355, 376, 372 },\n    { 1, 300, 341, 378 }, { 1, 341, 300, 343 }, { 1, 333, 179, 341 }, { 1, 87, 384, 199 },\n    { 1, 405, 406, 415 }, { 1, 386, 382, 353 }, { 1, 342, 378, 341 }, { 1, 378, 371, 300 },\n    { 1, 407, 404, 380 }, { 1, 317, 309, 308 }, { 1, 323, 332, 340 }, { 1, 372, 384, 383 },\n    { 1, 87, 19, 384 },   { 1, 347, 432, 387 }, { 1, 410, 411, 416 }, { 1, 384, 350, 353 },\n    { 1, 349, 347, 353 }, { 1, 373, 265, 273 }, { 1, 330, 325, 328 }, { 1, 343, 316, 313 },\n    { 1, 330, 332, 331 }, { 1, 374, 391, 400 }, { 1, 196, 338, 396 }, { 1, 265, 374, 400 },\n    { 1, 198, 199, 354 }, { 1, 350, 19, 351 },  { 1, 436, 41, 183 },  { 1, 379, 336, 337 },\n    { 1, 298, 301, 371 }, { 1, 273, 372, 373 }, { 1, 409, 415, 411 }, { 1, 434, 346, 182 },\n    { 1, 183, 352, 351 }, { 1, 346, 347, 349 }, { 1, 386, 353, 347 }, { 1, 350, 384, 19 },\n    { 1, 353, 381, 383 }, { 1, 405, 380, 379 }, { 1, 394, 401, 375 }, { 1, 409, 407, 380 },\n    { 1, 342, 336, 379 }, { 1, 307, 328, 325 }, { 1, 414, 416, 411 }, { 1, 412, 415, 406 },\n    { 1, 418, 99, 413 },  { 1, 418, 413, 115 }, { 1, 413, 411, 412 }, { 1, 415, 409, 405 },\n    { 1, 115, 412, 116 }, { 1, 116, 406, 117 }, { 1, 406, 405, 337 }, { 1, 391, 375, 400 },\n    { 1, 399, 398, 197 }, { 1, 395, 397, 396 }, { 1, 393, 395, 394 }, { 1, 392, 393, 375 },\n    { 1, 419, 392, 391 }, { 1, 419, 391, 390 }, { 1, 390, 389, 388 }, { 1, 388, 382, 385 },\n    { 1, 398, 385, 387 }, { 1, 355, 354, 376 }, { 1, 298, 371, 272 }, { 1, 334, 333, 343 },\n    { 1, 320, 340, 319 }, { 1, 400, 297, 265 }, { 1, 117, 337, 177 }, { 1, 327, 307, 326 },\n    { 1, 314, 308, 327 }, { 1, 329, 309, 319 }, { 1, 319, 317, 311 }, { 1, 321, 311, 299 },\n    { 1, 328, 307, 309 }, { 1, 298, 302, 301 }, { 1, 400, 294, 297 }, { 1, 271, 294, 270 },\n    { 1, 172, 143, 125 }, { 1, 46, 170, 125 },  { 1, 36, 38, 119 },   { 1, 65, 92, 225 },\n    { 1, 120, 137, 229 }, { 1, 168, 229, 90 },  { 1, 123, 168, 92 },  { 1, 227, 226, 91 },\n    { 1, 226, 224, 225 }, { 1, 42, 44, 198 },   { 1, 117, 177, 39 },  { 1, 179, 181, 107 },\n    { 1, 261, 181, 179 }, { 1, 178, 179, 166 }, { 1, 46, 45, 170 },   { 1, 122, 168, 89 },\n    { 1, 165, 64, 106 },  { 1, 112, 109, 43 },  { 1, 36, 144, 37 },   { 1, 109, 110, 43 },\n    { 1, 126, 82, 127 },  { 1, 136, 127, 97 },  { 1, 135, 136, 124 }, { 1, 423, 135, 51 },\n    { 1, 423, 51, 134 },  { 1, 134, 8, 133 },   { 1, 133, 7, 132 },   { 1, 132, 49, 131 },\n    { 1, 128, 130, 126 }, { 1, 51, 46, 8 },     { 1, 105, 39, 10 },   { 1, 116, 117, 105 },\n    { 1, 115, 116, 114 }, { 1, 32, 10, 4 },     { 1, 113, 114, 31 },  { 1, 418, 115, 113 },\n    { 1, 418, 113, 99 },  { 1, 114, 105, 32 },  { 1, 100, 31, 86 },   { 1, 225, 66, 65 },\n    { 1, 108, 11, 40 },   { 1, 166, 40, 177 },  { 1, 64, 165, 62 },   { 1, 343, 313, 344 },\n    { 1, 343, 344, 334 }, { 1, 111, 85, 6 },    { 1, 112, 86, 111 },  { 1, 408, 410, 416 },\n    { 1, 407, 410, 408 }, { 1, 416, 356, 408 }, { 1, 86, 85, 111 },   { 1, 428, 48, 129 },\n    { 1, 428, 429, 130 }, { 1, 130, 429, 83 },  { 1, 387, 83, 429 },  { 1, 83, 82, 130 },\n    { 1, 130, 48, 428 },  { 1, 197, 429, 428 }, { 1, 438, 22, 21 },   { 1, 432, 28, 83 },\n    { 1, 432, 83, 387 },  { 1, 387, 386, 347 }, { 1, 21, 82, 438 },   { 1, 347, 346, 434 },\n    { 1, 28, 29, 435 },   { 1, 183, 351, 436 }, { 1, 25, 41, 437 },   { 1, 27, 160, 430 },\n    { 1, 24, 23, 430 },   { 1, 431, 18, 24 },   { 1, 24, 160, 431 },  { 1, 350, 351, 433 },\n    { 1, 433, 348, 349 }, { 1, 352, 348, 433 }, { 1, 435, 29, 30 },   { 1, 182, 29, 434 },\n    { 1, 28, 432, 434 },  { 1, 435, 438, 28 },  { 1, 434, 432, 347 }, { 1, 22, 438, 435 },\n    { 1, 396, 338, 401 }, { 1, 9, 50, 49 },     { 1, 196, 397, 399 }, { 1, 48, 130, 128 },\n    { 1, 349, 348, 439 }, { 1, 439, 348, 352 }, { 1, 439, 346, 349 }, { 1, 439, 348, 352 },\n    { 1, 439, 352, 182 }, { 1, 182, 346, 439 }, { 2, 12, 13, 14 },    { 2, 153, 13, 12 },\n    { 2, 153, 191, 13 },  { 2, 153, 200, 191 }, { 2, 256, 191, 253 }, { 2, 256, 274, 339 },\n    { 2, 274, 312, 339 }, { 2, 256, 339, 191 }, { 3, 184, 185, 186 }, { 3, 156, 150, 424 },\n    { 3, 155, 154, 425 }, { 3, 426, 421, 420 }, { 3, 420, 422, 427 }, { 3, 184, 364, 362 },\n    { 3, 157, 156, 425 }, { 3, 150, 364, 424 }, { 3, 362, 185, 184 }, { 3, 425, 154, 157 },\n    { 4, 126, 127, 128 }, { 4, 398, 399, 385 }, { 4, 388, 385, 399 }, { 4, 390, 388, 399 },\n    { 4, 419, 390, 399 }, { 4, 392, 419, 399 }, { 4, 393, 392, 399 }, { 4, 395, 393, 399 },\n    { 4, 397, 395, 399 }, { 4, 136, 128, 127 }, { 4, 135, 128, 136 }, { 4, 423, 128, 135 },\n    { 4, 134, 128, 423 }, { 4, 133, 128, 134 }, { 4, 132, 128, 133 }, { 4, 131, 128, 132 },\n    { 5, 14, 63, 74 },    { 5, 14, 74, 12 },    { 5, 142, 57, 143 },  { 5, 74, 62, 165 },\n    { 5, 170, 171, 172 }, { 5, 180, 203, 165 }, { 5, 204, 205, 206 }, { 5, 207, 200, 208 },\n    { 5, 209, 210, 200 }, { 5, 211, 206, 212 }, { 5, 181, 212, 206 }, { 5, 213, 214, 215 },\n    { 5, 216, 217, 218 }, { 5, 216, 219, 217 }, { 5, 220, 221, 214 }, { 5, 222, 223, 221 },\n    { 5, 222, 218, 223 }, { 5, 14, 224, 226 },  { 5, 14, 226, 227 },  { 5, 14, 53, 224 },\n    { 5, 14, 227, 63 },   { 5, 232, 171, 233 }, { 5, 232, 233, 144 }, { 5, 234, 172, 171 },\n    { 5, 233, 231, 144 }, { 5, 171, 170, 169 }, { 5, 232, 234, 171 }, { 5, 140, 235, 232 },\n    { 5, 140, 232, 144 }, { 5, 210, 206, 211 }, { 5, 180, 207, 208 }, { 5, 236, 219, 214 },\n    { 5, 205, 181, 206 }, { 5, 209, 200, 207 }, { 5, 237, 207, 180 }, { 5, 205, 180, 181 },\n    { 5, 237, 180, 205 }, { 5, 211, 200, 210 }, { 5, 204, 237, 205 }, { 5, 204, 207, 237 },\n    { 5, 204, 209, 207 }, { 5, 204, 210, 209 }, { 5, 204, 206, 210 }, { 5, 213, 220, 214 },\n    { 5, 213, 222, 220 }, { 5, 216, 238, 213 }, { 5, 213, 215, 216 }, { 5, 213, 238, 222 },\n    { 5, 12, 74, 153 },   { 5, 143, 172, 234 }, { 5, 239, 234, 235 }, { 5, 239, 235, 139 },\n    { 5, 139, 235, 140 }, { 5, 169, 231, 233 }, { 5, 180, 208, 236 }, { 5, 180, 236, 203 },\n    { 5, 203, 221, 223 }, { 5, 153, 223, 218 }, { 5, 200, 153, 217 }, { 5, 200, 217, 208 },\n    { 5, 253, 254, 255 }, { 5, 253, 255, 256 }, { 5, 256, 257, 258 }, { 5, 259, 258, 260 },\n    { 5, 261, 259, 262 }, { 5, 261, 262, 254 }, { 5, 263, 266, 264 }, { 5, 244, 267, 268 },\n    { 5, 245, 244, 268 }, { 5, 245, 268, 269 }, { 5, 270, 269, 271 }, { 5, 274, 256, 275 },\n    { 5, 279, 280, 281 }, { 5, 279, 282, 283 }, { 5, 282, 279, 281 }, { 5, 279, 284, 280 },\n    { 5, 279, 285, 284 }, { 5, 286, 287, 288 }, { 5, 286, 289, 287 }, { 5, 286, 290, 289 },\n    { 5, 286, 291, 290 }, { 5, 286, 292, 291 }, { 5, 211, 287, 253 }, { 5, 291, 292, 261 },\n    { 5, 292, 181, 261 }, { 5, 291, 261, 290 }, { 5, 289, 290, 253 }, { 5, 292, 288, 181 },\n    { 5, 212, 288, 211 }, { 5, 262, 285, 293 }, { 5, 261, 254, 290 }, { 5, 287, 211, 288 },\n    { 5, 267, 272, 295 }, { 5, 267, 295, 268 }, { 5, 295, 296, 269 }, { 5, 296, 263, 297 },\n    { 5, 266, 272, 264 }, { 5, 269, 296, 271 }, { 5, 295, 272, 266 }, { 5, 295, 266, 296 },\n    { 5, 312, 313, 314 }, { 5, 312, 326, 243 }, { 5, 312, 314, 327 }, { 5, 312, 327, 326 },\n    { 5, 280, 258, 257 }, { 5, 280, 260, 258 }, { 5, 285, 262, 260 }, { 5, 282, 255, 293 },\n    { 5, 282, 257, 255 }, { 5, 279, 283, 285 }, { 5, 181, 288, 212 }, { 5, 289, 253, 287 },\n    { 5, 290, 254, 253 }, { 5, 286, 288, 292 }, { 5, 261, 334, 259 }, { 5, 297, 271, 296 },\n    { 5, 275, 334, 344 }, { 5, 312, 275, 313 }, { 5, 248, 270, 246 }, { 5, 275, 344, 313 },\n    { 5, 312, 274, 275 }, { 5, 284, 285, 260 }, { 5, 236, 214, 221 }, { 5, 259, 334, 275 },\n    { 5, 211, 253, 191 }, { 5, 281, 257, 282 }, { 5, 283, 282, 293 }, { 5, 284, 260, 280 },\n    { 5, 281, 280, 257 }, { 5, 266, 263, 296 }, { 5, 268, 295, 269 }, { 5, 283, 293, 285 },\n    { 5, 248, 269, 270 }, { 5, 248, 245, 269 }, { 5, 293, 254, 262 }, { 5, 260, 262, 259 },\n    { 5, 275, 258, 259 }, { 5, 275, 256, 258 }, { 5, 257, 256, 255 }, { 5, 293, 255, 254 },\n    { 5, 219, 208, 217 }, { 5, 218, 217, 153 }, { 5, 74, 223, 153 },  { 5, 74, 203, 223 },\n    { 5, 221, 203, 236 }, { 5, 219, 236, 208 }, { 5, 142, 234, 239 }, { 5, 142, 143, 234 },\n    { 5, 191, 200, 211 }, { 5, 215, 214, 219 }, { 5, 235, 234, 232 }, { 5, 233, 171, 169 },\n    { 5, 238, 218, 222 }, { 5, 220, 222, 221 }, { 5, 215, 219, 216 }, { 5, 238, 216, 218 },\n    { 5, 203, 74, 165 },  { 5, 74, 63, 62 },    { 6, 98, 99, 100 },   { 6, 101, 102, 103 },\n    { 6, 104, 100, 86 },  { 6, 112, 101, 103 }, { 6, 103, 98, 104 },  { 6, 103, 104, 159 },\n    { 6, 103, 159, 112 }, { 6, 102, 101, 112 }, { 6, 103, 102, 187 }, { 6, 99, 98, 189 },\n    { 6, 189, 98, 103 },  { 6, 189, 103, 187 }, { 6, 187, 356, 357 }, { 6, 187, 357, 358 },\n    { 6, 187, 358, 189 }, { 6, 356, 187, 377 }, { 6, 358, 416, 414 }, { 6, 377, 187, 188 },\n    { 6, 189, 414, 99 },  { 6, 358, 414, 189 }, { 6, 357, 416, 358 }, { 6, 357, 356, 416 },\n    { 6, 356, 377, 188 }, { 6, 188, 187, 102 }, { 6, 159, 86, 112 },  { 6, 159, 104, 86 },\n    { 6, 104, 98, 100 },  { 7, 0, 1, 2 },       { 7, 3, 1, 0 },       { 7, 52, 53, 14 },\n    { 7, 54, 55, 56 },    { 7, 55, 9, 57 },     { 7, 53, 52, 58 },    { 7, 67, 2, 68 },\n    { 7, 69, 70, 71 },    { 7, 72, 3, 73 },     { 7, 54, 56, 75 },    { 7, 76, 77, 78 },\n    { 7, 2, 1, 79 },      { 7, 80, 1, 81 },     { 7, 75, 50, 54 },    { 7, 57, 121, 55 },\n    { 7, 54, 50, 55 },    { 7, 145, 78, 146 },  { 7, 2, 79, 147 },    { 7, 71, 70, 147 },\n    { 7, 147, 148, 71 },  { 7, 71, 149, 69 },   { 7, 150, 151, 69 },  { 7, 52, 0, 145 },\n    { 7, 152, 145, 68 },  { 7, 76, 68, 70 },    { 7, 151, 70, 69 },   { 7, 52, 3, 0 },\n    { 7, 80, 79, 1 },     { 7, 77, 154, 155 },  { 7, 151, 156, 157 }, { 7, 151, 157, 76 },\n    { 7, 155, 158, 77 },  { 7, 158, 57, 78 },   { 7, 152, 78, 145 },  { 7, 72, 162, 3 },\n    { 7, 80, 81, 163 },   { 7, 52, 14, 164 },   { 7, 52, 164, 3 },    { 7, 72, 173, 162 },\n    { 7, 173, 174, 163 }, { 7, 175, 72, 176 },  { 7, 72, 73, 190 },   { 7, 150, 69, 192 },\n    { 7, 69, 149, 192 },  { 7, 193, 79, 194 },  { 7, 195, 148, 193 }, { 7, 79, 80, 194 },\n    { 7, 50, 75, 129 },   { 7, 75, 201, 202 },  { 7, 155, 230, 201 }, { 7, 155, 201, 56 },\n    { 7, 155, 56, 121 },  { 7, 158, 121, 57 },  { 7, 3, 164, 73 },    { 7, 175, 174, 173 },\n    { 7, 162, 173, 81 },  { 7, 162, 81, 1 },    { 7, 57, 146, 78 },   { 7, 239, 58, 142 },\n    { 7, 57, 142, 146 },  { 7, 139, 58, 239 },  { 7, 53, 58, 139 },   { 7, 145, 58, 52 },\n    { 7, 240, 241, 242 }, { 7, 243, 244, 242 }, { 7, 244, 245, 242 }, { 7, 246, 247, 248 },\n    { 7, 245, 248, 242 }, { 7, 246, 249, 247 }, { 7, 250, 251, 252 }, { 7, 250, 252, 175 },\n    { 7, 276, 277, 278 }, { 7, 303, 246, 304 }, { 7, 186, 304, 305 }, { 7, 186, 305, 306 },\n    { 7, 186, 306, 230 }, { 7, 335, 202, 306 }, { 7, 338, 129, 335 }, { 7, 339, 277, 191 },\n    { 7, 176, 250, 175 }, { 7, 241, 276, 278 }, { 7, 241, 278, 312 }, { 7, 345, 174, 252 },\n    { 7, 176, 276, 250 }, { 7, 359, 240, 249 }, { 7, 303, 249, 246 }, { 7, 186, 360, 303 },\n    { 7, 361, 185, 362 }, { 7, 363, 364, 150 }, { 7, 360, 186, 185 }, { 7, 345, 251, 194 },\n    { 7, 241, 365, 276 }, { 7, 339, 278, 277 }, { 7, 363, 192, 366 }, { 7, 361, 366, 367 },\n    { 7, 359, 367, 240 }, { 7, 241, 240, 365 }, { 7, 150, 192, 363 }, { 7, 368, 192, 195 },\n    { 7, 369, 368, 193 }, { 7, 368, 369, 366 }, { 7, 370, 369, 194 }, { 7, 240, 247, 249 },\n    { 7, 402, 403, 338 }, { 7, 246, 403, 304 }, { 7, 335, 402, 338 }, { 7, 345, 252, 251 },\n    { 7, 370, 194, 251 }, { 7, 361, 249, 360 }, { 7, 402, 335, 305 }, { 7, 176, 277, 276 },\n    { 7, 192, 368, 366 }, { 7, 417, 367, 370 }, { 7, 243, 242, 241 }, { 7, 403, 246, 401 },\n    { 7, 402, 305, 403 }, { 7, 241, 312, 243 }, { 7, 276, 365, 251 }, { 7, 365, 370, 251 },\n    { 7, 417, 370, 365 }, { 7, 250, 276, 251 }, { 7, 304, 403, 305 }, { 7, 369, 370, 367 },\n    { 7, 306, 305, 335 }, { 7, 359, 249, 361 }, { 7, 401, 338, 403 }, { 7, 193, 194, 369 },\n    { 7, 367, 366, 369 }, { 7, 195, 193, 368 }, { 7, 417, 365, 240 }, { 7, 417, 240, 367 },\n    { 7, 359, 361, 367 }, { 7, 361, 363, 366 }, { 7, 360, 185, 361 }, { 7, 249, 303, 360 },\n    { 7, 163, 174, 80 },  { 7, 190, 191, 277 }, { 7, 202, 335, 129 }, { 7, 230, 306, 202 },\n    { 7, 421, 186, 230 }, { 7, 421, 230, 420 }, { 7, 303, 304, 186 }, { 7, 174, 175, 252 },\n    { 7, 242, 248, 247 }, { 7, 247, 240, 242 }, { 7, 146, 58, 145 },  { 7, 58, 146, 142 },\n    { 7, 163, 81, 173 },  { 7, 158, 155, 121 }, { 7, 230, 155, 422 }, { 7, 230, 422, 420 },\n    { 7, 230, 202, 201 }, { 7, 202, 129, 75 },  { 7, 345, 194, 80 },  { 7, 149, 148, 195 },\n    { 7, 148, 79, 193 },  { 7, 195, 192, 149 }, { 7, 190, 73, 191 },  { 7, 176, 72, 190 },\n    { 7, 277, 176, 190 }, { 7, 173, 72, 175 },  { 7, 78, 77, 158 },   { 7, 77, 76, 154 },\n    { 7, 76, 70, 151 },   { 7, 152, 68, 76 },   { 7, 67, 68, 145 },   { 7, 67, 145, 0 },\n    { 7, 149, 71, 148 },  { 7, 68, 147, 70 },   { 7, 148, 147, 79 },  { 7, 9, 55, 50 },\n    { 7, 152, 76, 78 },   { 7, 201, 75, 56 },   { 7, 147, 68, 2 },    { 7, 121, 56, 55 },\n    { 7, 164, 14, 13 },   { 7, 162, 1, 3 },     { 7, 67, 0, 2 },      { 7, 345, 80, 174 },\n    { 7, 73, 13, 191 },   { 7, 73, 164, 13 },   { 7, 312, 278, 339 }, { 7, 186, 421, 184 },\n    { 7, 420, 424, 426 }, { 7, 422, 425, 427 }, { 7, 426, 424, 364 }, { 7, 425, 156, 427 },\n    { 7, 363, 361, 362 }, { 7, 362, 364, 363 }, { 7, 157, 154, 76 },  { 7, 151, 150, 156 },\n    { 7, 421, 426, 184 }, { 7, 422, 155, 425 }, { 7, 420, 427, 424 }, { 7, 364, 184, 426 },\n    { 7, 156, 424, 427 },\n};\n\nstatic struct GdFaceData mario_Face_FaceInfo = { ARRAY_COUNT(mario_Face_FaceData), 0x1, mario_Face_FaceData };\n\nstruct DynList dynlist_mario_face_shape[] = {\n    BeginList(),\n\n    MakeDynObj(D_DATA_GRP, DYNOBJ_MARIO_FACE_VTX_GROUP),\n        LinkWithPtr(&mario_Face_VtxInfo),\n\n    MakeDynObj(D_DATA_GRP, DYNOBJ_MARIO_FACE_TRI_GROUP),\n        LinkWithPtr(&mario_Face_FaceInfo),\n\n    StartGroup(DYNOBJ_MARIO_FACE_MTL_GROUP),\n        // Teeth color\n        MakeDynObj(D_MATERIAL, 0),\n            SetId(0),\n            SetAmbient(1.0, 1.0, 1.0),\n            SetDiffuse(1.0, 1.0, 1.0),\n        // Face color\n        MakeDynObj(D_MATERIAL, 0),\n            SetId(1),\n            SetAmbient(0.883, 0.602, 0.408),\n            SetDiffuse(0.883, 0.602, 0.408),\n        // Shadow on back of hat\n        MakeDynObj(D_MATERIAL, 0),\n            SetId(2),\n            SetAmbient(0.362, 0.0, 0.0),\n            SetDiffuse(0.362, 0.0, 0.0),\n        // Cap emblem color\n        MakeDynObj(D_MATERIAL, 0),\n            SetId(3),\n            SetAmbient(1.0, 1.0, 1.0),\n            SetDiffuse(1.0, 1.0, 1.0),\n        // Eye color\n        MakeDynObj(D_MATERIAL, 0),\n            SetId(4),\n            SetAmbient(1.0, 1.0, 1.0),\n            SetDiffuse(1.0, 1.0, 1.0),\n        // Hair color\n        MakeDynObj(D_MATERIAL, 0),\n            SetId(5),\n            SetAmbient(0.362, 0.0, 0.0),\n            SetDiffuse(0.362, 0.0, 0.0),\n        // Mouth color\n        MakeDynObj(D_MATERIAL, 0),\n            SetId(6),\n            SetAmbient(0.526, 0.0, 0.0),\n            SetDiffuse(0.526, 0.0, 0.0),\n        // Cap color\n        MakeDynObj(D_MATERIAL, 0),\n            SetId(7),\n            SetAmbient(1.0, 0.0, 0.0),\n            SetDiffuse(1.0, 0.0, 0.0),\n    EndGroup(DYNOBJ_MARIO_FACE_MTL_GROUP),\n\n    MakeDynObj(D_SHAPE, DYNOBJ_MARIO_FACE_SHAPE),\n        SetNodeGroup(DYNOBJ_MARIO_FACE_VTX_GROUP),\n        SetPlaneGroup(DYNOBJ_MARIO_FACE_TRI_GROUP),\n        SetMaterialGroup(DYNOBJ_MARIO_FACE_MTL_GROUP),\n\n    EndList(),\n};\n"
  },
  {
    "path": "src/goddard/dynlists/dynlist_mario_master.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"dynlist_macros.h\"\n#include \"dynlists.h\"\n#include \"animdata.h\"\n#include \"../dynlist_proc.h\"\n#include \"../shape_helper.h\"\n\nstruct DynList dynlist_mario_master[] = {\n    BeginList(),\n    UseIntegerNames(TRUE),  // Specify all object names as integers\n\n    StartGroup(DYNOBJ_MARIO_MAIN_SHAPES_GROUP),\n        CallList(dynlist_mario_face_shape),\n        CallList(dynlist_mario_eye_right_shape),\n        CallList(dynlist_mario_eye_left_shape),\n        CallList(dynlist_mario_eyebrow_right_shape),\n        CallList(dynlist_mario_eyebrow_left_shape),\n        CallList(dynlist_mario_mustache_shape),\n    EndGroup(DYNOBJ_MARIO_MAIN_SHAPES_GROUP),\n\n    MakeDynObj(D_LIGHT, DYNOBJ_SILVER_STAR_LIGHT),\n        SetId(1),\n        SetDiffuse(1.0, 1.0, 1.0),\n        SetFlag(0x20),\n        SetShapePtrPtr(&gShapeSilverStar),\n\n    MakeDynObj(D_LIGHT, DYNOBJ_RED_STAR_LIGHT),\n        SetId(0),\n        SetDiffuse(1.0, 0.0, 0.0),\n        SetShapePtrPtr(&gShapeRedStar),\n\n    StartGroup(0x1),\n\n        MakeDynObj(D_NET, DYNOBJ_MARIO_MAIN_NET),\n            SetType(2),\n            SetFlag(0x2),\n            SetShapePtr(DYNOBJ_MARIO_FACE_SHAPE),\n            SetScale(1.0, 1.0, 1.0),\n            SetRotation(112.873, 0.0, 0.0),\n            SetAttachOffset(0.0, 0.0, -20010.0),\n\n        // right eyelid skinning\n        MakeNetWithSubGroup(DYNOBJ_RIGHT_EYELID_SKIN_NET),\n            AttachTo(0xd, DYNOBJ_MARIO_MAIN_NET),\n            SetSkinShape(DYNOBJ_MARIO_FACE_SHAPE),\n            SetScale(1.0, 1.0, 1.0),\n            SetRotation(0.0, 90.0, 0.0),\n            SetAttachOffset(116.3, 182.6, -70.2),\n            MakeAttachedJoint(DYNOBJ_RIGHT_EYELID_JOINT_1),\n                SetScale(1.0, 1.0, 1.0),\n                SetRotation(0.0, 0.0, 162.007),\n                SetAttachOffset(0.0, 0.0, 0.0),\n                SetSkinWeight(7, 95.0),\n                SetSkinWeight(8, 70.0),\n                SetSkinWeight(48, 90.0),\n                SetSkinWeight(49, 100.0),\n                SetSkinWeight(128, 60.0),\n                SetSkinWeight(131, 90.0),\n                SetSkinWeight(132, 100.0),\n                SetSkinWeight(133, 95.0),\n                SetSkinWeight(134, 70.0),\n                SetSkinWeight(428, 50.0),\n                SetSkinWeight(429, 20.0),\n                SetSkinWeight(51, 35.0),\n                SetSkinWeight(124, 10.0),\n                SetSkinWeight(126, 10.0),\n                SetSkinWeight(127, 5.0),\n                SetSkinWeight(130, 50.0),\n                SetSkinWeight(135, 20.0),\n                SetSkinWeight(136, 10.0),\n                SetSkinWeight(423, 35.0),\n                SetSkinWeight(46, 40.0),\n                SetSkinWeight(47, 10.0),\n                SetSkinWeight(82, 10.0),\n                MakeAttachedJoint(DYNOBJ_RIGHT_EYELID_JOINT_2),  // What is this joint for?\n                    SetScale(1.0, 1.0, 1.0),\n                    SetRotation(0.0, 0.0, 0.0),\n                    SetAttachOffset(382.3, 0.0, 0.0),\n        EndNetWithSubGroup(DYNOBJ_RIGHT_EYELID_SKIN_NET),\n\n        // left eyelid skinning\n        MakeNetWithSubGroup(DYNOBJ_LEFT_EYELID_SKIN_NET),\n            AttachTo(0xd, DYNOBJ_MARIO_MAIN_NET),\n            SetSkinShape(DYNOBJ_MARIO_FACE_SHAPE),\n            SetScale(1.0, 1.0, 1.0),\n            SetRotation(0.0, 90.0, 0.0),\n            SetAttachOffset(-116.3, 182.6, -70.2),\n            MakeAttachedJoint(DYNOBJ_LEFT_EYELID_JOINT_1),\n                SetScale(1.0, 1.0, 1.0),\n                SetRotation(0.0, 0.0, 162.007),\n                SetAttachOffset(0.0, 0.0, 0.0),\n                SetSkinWeight(196, 90.0),\n                SetSkinWeight(375, 70.0),\n                SetSkinWeight(392, 70.0),\n                SetSkinWeight(393, 95.0),\n                SetSkinWeight(394, 95.0),\n                SetSkinWeight(395, 100.0),\n                SetSkinWeight(396, 100.0),\n                SetSkinWeight(397, 90.0),\n                SetSkinWeight(399, 60.0),\n                SetSkinWeight(428, 50.0),\n                SetSkinWeight(429, 20.0),\n                SetSkinWeight(197, 50.0),\n                SetSkinWeight(385, 5.0),\n                SetSkinWeight(388, 10.0),\n                SetSkinWeight(389, 10.0),\n                SetSkinWeight(390, 20.0),\n                SetSkinWeight(391, 35.0),\n                SetSkinWeight(398, 10.0),\n                SetSkinWeight(419, 35.0),\n                SetSkinWeight(400, 40.0),\n                SetSkinWeight(374, 10.0),\n                SetSkinWeight(387, 10.0),\n                MakeAttachedJoint(DYNOBJ_LEFT_EYELID_JOINT_2),  // What is this joint for?\n                    SetScale(1.0, 1.0, 1.0),\n                    SetRotation(0.0, 0.0, 0.0),\n                    SetAttachOffset(420.0, 0.0, 0.0),\n        EndNetWithSubGroup(DYNOBJ_LEFT_EYELID_SKIN_NET),\n\n        // right jaw skinning\n        MakeNetWithSubGroup(DYNOBJ_MARIO_JAW_SKIN_NET),\n            AttachTo(0xd, DYNOBJ_MARIO_MAIN_NET),\n            SetSkinShape(DYNOBJ_MARIO_FACE_SHAPE),\n            SetScale(1.0, 1.0, 1.0),\n            SetRotation(0.0, 90.0, 0.0),\n            SetAttachOffset(0.0, -154.9, 118.5),\n            MakeAttachedJoint(DYNOBJ_MARIO_RIGHT_JAW_JOINT),\n                SetScale(1.0, 1.0, 1.0),\n                SetRotation(0.0, 0.0, -111.558),\n                SetAttachOffset(0.0, 0.0, 0.0),\n                SetSkinWeight(98, 100.0),\n                SetSkinWeight(104, 100.0),\n                SetSkinWeight(189, 100.0),\n                SetSkinWeight(358, 100.0),\n                SetSkinWeight(5, 40.0),\n                SetSkinWeight(10, 38.0),\n                SetSkinWeight(380, 40.0),\n                SetSkinWeight(405, 38.0),\n                SetSkinWeight(39, 50.0),\n                SetSkinWeight(117, 50.0),\n                SetSkinWeight(337, 50.0),\n                SetSkinWeight(11, 40.0),\n                SetSkinWeight(379, 40.0),\n                SetSkinWeight(105, 50.0),\n                SetSkinWeight(116, 50.0),\n                SetSkinWeight(406, 50.0),\n                SetSkinWeight(85, 70.0),\n                SetSkinWeight(86, 60.0),\n                SetSkinWeight(111, 30.0),\n                SetSkinWeight(159, 50.0),\n                SetSkinWeight(357, 50.0),\n                SetSkinWeight(416, 60.0),\n                SetSkinWeight(6, 25.0),\n                SetSkinWeight(407, 25.0),\n                SetSkinWeight(408, 30.0),\n                SetSkinWeight(4, 30.0),\n                SetSkinWeight(410, 70.0),\n                SetSkinWeight(409, 30.0),\n                SetSkinWeight(109, 15.0),\n                SetSkinWeight(355, 15.0),\n                SetSkinWeight(35, 5.0),\n                SetSkinWeight(372, 5.0),\n                SetSkinWeight(376, 5.0),\n                SetSkinWeight(110, 5.0),\n                SetSkinWeight(16, 3.0),\n                SetSkinWeight(17, 3.0),\n                SetSkinWeight(34, 3.0),\n                SetSkinWeight(373, 3.0),\n                SetSkinWeight(381, 3.0),\n                SetSkinWeight(383, 3.0),\n                MakeAttachedJoint(DYNOBJ_MARIO_LEFT_JAW_JOINT),\n                    SetScale(1.0, 1.0, 1.0),\n                    SetRotation(0.0, 0.0, -31.153),\n                    SetAttachOffset(141.0, 0.0, 0.0),\n                    SetSkinWeight(31, 80.0),\n                    SetSkinWeight(32, 80.0),\n                    SetSkinWeight(39, 30.0),\n                    SetSkinWeight(40, 10.0),\n                    SetSkinWeight(99, 100.0),\n                    SetSkinWeight(100, 100.0),\n                    SetSkinWeight(105, 50.0),\n                    SetSkinWeight(113, 100.0),\n                    SetSkinWeight(114, 100.0),\n                    SetSkinWeight(115, 100.0),\n                    SetSkinWeight(116, 50.0),\n                    SetSkinWeight(117, 20.0),\n                    SetSkinWeight(177, 20.0),\n                    SetSkinWeight(336, 10.0),\n                    SetSkinWeight(337, 30.0),\n                    SetSkinWeight(406, 50.0),\n                    SetSkinWeight(411, 80.0),\n                    SetSkinWeight(412, 100.0),\n                    SetSkinWeight(413, 100.0),\n                    SetSkinWeight(414, 100.0),\n                    SetSkinWeight(415, 80.0),\n                    SetSkinWeight(418, 100.0),\n                    SetSkinWeight(409, 28.0),\n                    SetSkinWeight(86, 8.0),\n                    SetSkinWeight(416, 4.0),\n                    SetSkinWeight(4, 28.0),\n                    SetSkinWeight(5, 3.0),\n                    SetSkinWeight(10, 5.0),\n                    SetSkinWeight(380, 5.0),\n                    SetSkinWeight(405, 5.0),\n                    MakeAttachedJoint(DYNOBJ_MARIO_UNKNOWN_191),  // What is this joint for?\n                        SetScale(1.0, 1.0, 1.0),\n                        SetRotation(0.0, 0.0, 0.0),\n                        SetAttachOffset(80.1, 0.0, 0.0),\n        EndNetWithSubGroup(DYNOBJ_MARIO_JAW_SKIN_NET),\n\n        // nose skinning\n        MakeNetWithSubGroup(DYNOBJ_MARIO_NOSE_SKIN_NET),\n            AttachTo(0xd, DYNOBJ_MARIO_MAIN_NET),\n            SetSkinShape(DYNOBJ_MARIO_FACE_SHAPE),\n            SetScale(1.0, 1.0, 1.0),\n            SetRotation(0.0, 90.0, 0.0),\n            SetAttachOffset(0.0, 15.3, 295.1),\n            MakeAttachedJoint(DYNOBJ_MARIO_NOSE_JOINT_1),\n                SetScale(1.0, 1.0, 1.0),\n                SetRotation(0.0, 0.0, -178.586),\n                SetAttachOffset(0.0, 0.0, 0.0),\n                SetSkinWeight(15, 5.0),\n                SetSkinWeight(18, 30.0),\n                SetSkinWeight(23, 70.0),\n                SetSkinWeight(24, 40.0),\n                SetSkinWeight(25, 90.0),\n                SetSkinWeight(26, 70.0),\n                SetSkinWeight(27, 90.0),\n                SetSkinWeight(28, 40.0),\n                SetSkinWeight(29, 70.0),\n                SetSkinWeight(30, 90.0),\n                SetSkinWeight(41, 70.0),\n                SetSkinWeight(160, 70.0),\n                SetSkinWeight(161, 100.0),\n                SetSkinWeight(182, 90.0),\n                SetSkinWeight(183, 90.0),\n                SetSkinWeight(346, 70.0),\n                SetSkinWeight(347, 30.0),\n                SetSkinWeight(348, 70.0),\n                SetSkinWeight(349, 40.0),\n                SetSkinWeight(350, 30.0),\n                SetSkinWeight(351, 70.0),\n                SetSkinWeight(352, 90.0),\n                SetSkinWeight(353, 5.0),\n                SetSkinWeight(386, 5.0),\n                SetSkinWeight(430, 70.0),\n                SetSkinWeight(431, 70.0),\n                SetSkinWeight(433, 70.0),\n                SetSkinWeight(434, 70.0),\n                SetSkinWeight(435, 70.0),\n                SetSkinWeight(436, 70.0),\n                SetSkinWeight(437, 70.0),\n                SetSkinWeight(439, 70.0),\n                SetSkinWeight(19, 40.0),\n                SetSkinWeight(20, 5.0),\n                SetSkinWeight(21, 5.0),\n                SetSkinWeight(22, 30.0),\n                SetSkinWeight(82, 5.0),\n                SetSkinWeight(83, 5.0),\n                SetSkinWeight(87, 5.0),\n                SetSkinWeight(384, 5.0),\n                SetSkinWeight(387, 5.0),\n                SetSkinWeight(432, 40.0),\n                SetSkinWeight(438, 40.0),\n                MakeAttachedJoint(DYNOBJ_MARIO_NOSE_JOINT_2),  // What is this joint for?\n                    SetScale(1.0, 1.0, 1.0),\n                    SetRotation(0.0, 0.0, 0.0),\n                    SetAttachOffset(276.6, 0.0, 0.0),\n        EndNetWithSubGroup(DYNOBJ_MARIO_NOSE_SKIN_NET),\n\n        // right ear skinning\n        MakeNetWithSubGroup(DYNOBJ_MARIO_RIGHT_EAR_SKIN_NET),\n            AttachTo(0xd, DYNOBJ_MARIO_MAIN_NET),\n            SetSkinShape(DYNOBJ_MARIO_FACE_SHAPE),\n            SetScale(1.0, 1.0, 1.0),\n            SetRotation(-90.0, 0.0, 0.0),\n            SetAttachOffset(294.7, 13.1, -82.1),\n            MakeAttachedJoint(DYNOBJ_MARIO_RIGHT_EAR_JOINT_1),\n                SetScale(1.0, 1.0, 1.0),\n                SetRotation(0.0, 0.0, 26.565),\n                SetAttachOffset(0.0, 0.0, 0.0),\n                SetSkinWeight(59, 80.0),\n                SetSkinWeight(60, 50.0),\n                SetSkinWeight(61, 60.0),\n                SetSkinWeight(65, 100.0),\n                SetSkinWeight(66, 60.0),\n                SetSkinWeight(88, 10.0),\n                SetSkinWeight(89, 60.0),\n                SetSkinWeight(90, 80.0),\n                SetSkinWeight(91, 70.0),\n                SetSkinWeight(92, 100.0),\n                SetSkinWeight(118, 15.0),\n                SetSkinWeight(119, 5.0),\n                SetSkinWeight(120, 15.0),\n                SetSkinWeight(122, 60.0),\n                SetSkinWeight(123, 70.0),\n                SetSkinWeight(137, 10.0),\n                SetSkinWeight(138, 60.0),\n                SetSkinWeight(139, 10.0),\n                SetSkinWeight(140, 5.0),\n                SetSkinWeight(141, 10.0),\n                SetSkinWeight(167, 60.0),\n                SetSkinWeight(168, 70.0),\n                SetSkinWeight(224, 50.0),\n                SetSkinWeight(225, 70.0),\n                SetSkinWeight(226, 50.0),\n                SetSkinWeight(227, 50.0),\n                SetSkinWeight(228, 60.0),\n                SetSkinWeight(229, 60.0),\n                SetSkinWeight(235, 10.0),\n                MakeAttachedJoint(DYNOBJ_MARIO_RIGHT_EAR_JOINT_2),  // What is this joint for?\n                    SetScale(1.0, 1.0, 1.0),\n                    SetRotation(0.0, 0.0, 0.0),\n                    SetAttachOffset(200.9, 0.0, 0.0),\n        EndNetWithSubGroup(DYNOBJ_MARIO_RIGHT_EAR_SKIN_NET),\n\n        // left ear skinning\n        MakeNetWithSubGroup(DYNOBJ_MARIO_LEFT_EAR_SKIN_NET),\n            AttachTo(0xd, DYNOBJ_MARIO_MAIN_NET),\n            SetSkinShape(DYNOBJ_MARIO_FACE_SHAPE),\n            SetScale(1.0, 1.0, 1.0),\n            SetRotation(90.0, 180.0, 0.0),\n            SetAttachOffset(-294.7, 13.1, -82.1),\n            MakeAttachedJoint(DYNOBJ_MARIO_LEFT_EAR_JOINT_1),\n                SetScale(1.0, 1.0, 1.0),\n                SetRotation(180.0, 180.0, -153.435),\n                SetAttachOffset(0.0, 0.0, 0.0),\n                SetSkinWeight(244, 5.0),\n                SetSkinWeight(267, 5.0),\n                SetSkinWeight(268, 5.0),\n                SetSkinWeight(299, 5.0),\n                SetSkinWeight(302, 5.0),\n                SetSkinWeight(307, 70.0),\n                SetSkinWeight(308, 70.0),\n                SetSkinWeight(309, 100.0),\n                SetSkinWeight(310, 70.0),\n                SetSkinWeight(311, 70.0),\n                SetSkinWeight(314, 100.0),\n                SetSkinWeight(315, 70.0),\n                SetSkinWeight(317, 80.0),\n                SetSkinWeight(318, 70.0),\n                SetSkinWeight(319, 80.0),\n                SetSkinWeight(320, 70.0),\n                SetSkinWeight(321, 10.0),\n                SetSkinWeight(322, 10.0),\n                SetSkinWeight(323, 10.0),\n                SetSkinWeight(324, 10.0),\n                SetSkinWeight(325, 60.0),\n                SetSkinWeight(326, 100.0),\n                SetSkinWeight(327, 100.0),\n                SetSkinWeight(328, 100.0),\n                SetSkinWeight(329, 80.0),\n                SetSkinWeight(330, 80.0),\n                SetSkinWeight(331, 60.0),\n                SetSkinWeight(332, 70.0),\n                SetSkinWeight(340, 70.0),\n                MakeAttachedJoint(DYNOBJ_MARIO_LEFT_EAR_JOINT_2),  // What is this joint for?\n                    SetScale(1.0, 1.0, 1.0),\n                    SetRotation(0.0, 0.0, 0.02),\n                    SetAttachOffset(200.9, 0.0, 0.0),\n        EndNetWithSubGroup(DYNOBJ_MARIO_LEFT_EAR_SKIN_NET),\n\n        // right lip corner skinning\n        MakeNetWithSubGroup(DYNOBJ_MARIO_RIGHT_LIP_CORNER_SKIN_NET),\n            AttachTo(0xd, DYNOBJ_MARIO_MAIN_NET),\n            SetSkinShape(DYNOBJ_MARIO_FACE_SHAPE),\n            SetScale(1.0, 1.0, 1.0),\n            SetRotation(-90.0, 0.0, 0.0),\n            SetAttachOffset(119.7, -161.4, 125.5),\n            MakeAttachedJoint(DYNOBJ_MARIO_RIGHT_LIP_CORNER_JOINT_1),\n                SetScale(1.0, 1.0, 1.0),\n                SetRotation(-0.02, 0.0, -66.509),\n                SetAttachOffset(0.0, 0.0, 0.0),\n                SetSkinWeight(4, 42.0),\n                SetSkinWeight(5, 40.0),\n                SetSkinWeight(6, 75.0),\n                SetSkinWeight(10, 30.0),\n                SetSkinWeight(11, 40.0),\n                SetSkinWeight(16, 20.0),\n                SetSkinWeight(17, 15.0),\n                SetSkinWeight(33, 30.0),\n                SetSkinWeight(34, 20.0),\n                SetSkinWeight(35, 60.0),\n                SetSkinWeight(37, 10.0),\n                SetSkinWeight(43, 40.0),\n                SetSkinWeight(85, 30.0),\n                SetSkinWeight(86, 30.0),\n                SetSkinWeight(93, 30.0),\n                SetSkinWeight(94, 10.0),\n                SetSkinWeight(101, 100.0),\n                SetSkinWeight(103, 100.0),\n                SetSkinWeight(108, 10.0),\n                SetSkinWeight(109, 70.0),\n                SetSkinWeight(110, 80.0),\n                SetSkinWeight(111, 60.0),\n                SetSkinWeight(112, 70.0),\n                SetSkinWeight(159, 50.0),\n                SetSkinWeight(42, 30.0),\n                SetSkinWeight(102, 30.0),\n                SetSkinWeight(31, 20.0),\n                SetSkinWeight(32, 20.0),\n                SetSkinWeight(44, 15.0),\n                MakeAttachedJoint(DYNOBJ_MARIO_RIGHT_LIP_CORNER_JOINT_2),  // What is this joint for?\n                    SetScale(1.0, 1.0, 1.0),\n                    SetRotation(0.028, 0.0, 0.0),\n                    SetAttachOffset(184.5, 0.0, 0.0),\n        EndNetWithSubGroup(DYNOBJ_MARIO_RIGHT_LIP_CORNER_SKIN_NET),\n\n        // left lip corner skinning\n        MakeNetWithSubGroup(DYNOBJ_MARIO_LEFT_LIP_CORNER_SKIN_NET),\n            AttachTo(0xd, DYNOBJ_MARIO_MAIN_NET),\n            SetSkinShape(DYNOBJ_MARIO_FACE_SHAPE),\n            SetScale(1.0, 1.0, 1.0),\n            SetRotation(90.0, 180.0, 0.0),\n            SetAttachOffset(-119.7, -161.4, 125.5),\n            MakeAttachedJoint(DYNOBJ_MARIO_LEFT_LIP_CORNER_JOINT_1),\n                SetScale(1.0, 1.0, 1.0),\n                SetRotation(0.02, 0.0, -66.509),\n                SetAttachOffset(0.0, 0.0, 0.0),\n                SetSkinWeight(187, 100.0),\n                SetSkinWeight(273, 30.0),\n                SetSkinWeight(342, 10.0),\n                SetSkinWeight(354, 40.0),\n                SetSkinWeight(355, 70.0),\n                SetSkinWeight(356, 70.0),\n                SetSkinWeight(357, 50.0),\n                SetSkinWeight(371, 10.0),\n                SetSkinWeight(372, 60.0),\n                SetSkinWeight(373, 20.0),\n                SetSkinWeight(376, 80.0),\n                SetSkinWeight(377, 100.0),\n                SetSkinWeight(378, 10.0),\n                SetSkinWeight(379, 40.0),\n                SetSkinWeight(380, 30.0),\n                SetSkinWeight(381, 15.0),\n                SetSkinWeight(383, 20.0),\n                SetSkinWeight(404, 30.0),\n                SetSkinWeight(405, 30.0),\n                SetSkinWeight(407, 75.0),\n                SetSkinWeight(408, 60.0),\n                SetSkinWeight(409, 42.0),\n                SetSkinWeight(410, 30.0),\n                SetSkinWeight(416, 36.0),\n                SetSkinWeight(199, 15.0),\n                SetSkinWeight(415, 20.0),\n                SetSkinWeight(411, 20.0),\n                SetSkinWeight(188, 20.0),\n                SetSkinWeight(198, 20.0),\n                MakeAttachedJoint(DYNOBJ_MARIO_LEFT_LIP_CORNER_JOINT_2),  // What is this joint for?\n                    SetScale(1.0, 1.0, 1.0),\n                    SetRotation(-0.028, 0.0, 0.0),\n                    SetAttachOffset(184.5, 0.0, 0.0),\n        EndNetWithSubGroup(DYNOBJ_MARIO_LEFT_LIP_CORNER_SKIN_NET),\n\n        // ???\n        MakeNetWithSubGroup(0x8F),\n            AttachTo(0xd, DYNOBJ_MARIO_MAIN_NET),\n            SetSkinShape(DYNOBJ_MARIO_FACE_SHAPE),\n            SetScale(1.0, 1.0, 1.0),\n            SetRotation(0.0, 90.0, 0.0),\n            SetAttachOffset(0.0, -162.2, 121.0),\n            MakeAttachedJoint(DYNOBJ_MARIO_UNKNOWN_140),\n                SetScale(1.0, 1.0, 1.0),\n                SetRotation(0.0, 0.0, -176.775),\n                SetAttachOffset(0.0, 0.0, 0.0),\n                SetSkinWeight(42, 70.0),\n                SetSkinWeight(44, 85.0),\n                SetSkinWeight(102, 70.0),\n                SetSkinWeight(188, 80.0),\n                SetSkinWeight(198, 80.0),\n                SetSkinWeight(199, 85.0),\n                MakeAttachedJoint(DYNOBJ_MARIO_UNKNOWN_137),  // What is this joint for?\n                    SetScale(1.0, 1.0, 1.0),\n                    SetRotation(0.0, 0.0, 0.0),\n                    SetAttachOffset(242.8, 0.0, 0.0),\n        EndNetWithSubGroup(0x8F),\n\n        // cap skinning\n        MakeNetWithSubGroup(DYNOBJ_MARIO_CAP_SKIN_NET),\n            AttachTo(0xd, DYNOBJ_MARIO_MAIN_NET),\n            SetSkinShape(DYNOBJ_MARIO_FACE_SHAPE),\n            SetScale(1.0, 1.0, 1.0),\n            SetRotation(0.0, 90.0, 0.0),\n            SetAttachOffset(0.0, 233.8, -148.8),\n            MakeAttachedJoint(DYNOBJ_MARIO_CAP_JOINT_1),\n                SetScale(1.0, 1.0, 1.0),\n                SetRotation(0.0, 0.0, 153.932),\n                SetAttachOffset(0.0, 0.0, 0.0),\n                SetSkinWeight(68, 90.0),\n                SetSkinWeight(69, 100.0),\n                SetSkinWeight(70, 100.0),\n                SetSkinWeight(71, 100.0),\n                SetSkinWeight(75, 100.0),\n                SetSkinWeight(76, 100.0),\n                SetSkinWeight(77, 100.0),\n                SetSkinWeight(79, 80.0),\n                SetSkinWeight(129, 100.0),\n                SetSkinWeight(147, 90.0),\n                SetSkinWeight(148, 90.0),\n                SetSkinWeight(149, 100.0),\n                SetSkinWeight(150, 100.0),\n                SetSkinWeight(151, 100.0),\n                SetSkinWeight(154, 100.0),\n                SetSkinWeight(155, 100.0),\n                SetSkinWeight(156, 100.0),\n                SetSkinWeight(157, 100.0),\n                SetSkinWeight(184, 100.0),\n                SetSkinWeight(185, 100.0),\n                SetSkinWeight(192, 100.0),\n                SetSkinWeight(193, 90.0),\n                SetSkinWeight(194, 80.0),\n                SetSkinWeight(195, 100.0),\n                SetSkinWeight(201, 100.0),\n                SetSkinWeight(202, 100.0),\n                SetSkinWeight(230, 100.0),\n                SetSkinWeight(360, 100.0),\n                SetSkinWeight(361, 100.0),\n                SetSkinWeight(362, 100.0),\n                SetSkinWeight(363, 100.0),\n                SetSkinWeight(364, 100.0),\n                SetSkinWeight(366, 100.0),\n                SetSkinWeight(367, 90.0),\n                SetSkinWeight(368, 100.0),\n                SetSkinWeight(369, 90.0),\n                SetSkinWeight(420, 100.0),\n                SetSkinWeight(421, 100.0),\n                SetSkinWeight(422, 100.0),\n                SetSkinWeight(424, 100.0),\n                SetSkinWeight(425, 100.0),\n                SetSkinWeight(426, 100.0),\n                SetSkinWeight(427, 100.0),\n                SetSkinWeight(58, 100.0),\n                SetSkinWeight(242, 100.0),\n                SetSkinWeight(0, 100.0),\n                SetSkinWeight(1, 100.0),\n                SetSkinWeight(2, 80.0),\n                SetSkinWeight(9, 100.0),\n                SetSkinWeight(50, 100.0),\n                SetSkinWeight(54, 100.0),\n                SetSkinWeight(55, 100.0),\n                SetSkinWeight(56, 100.0),\n                SetSkinWeight(57, 100.0),\n                SetSkinWeight(67, 80.0),\n                SetSkinWeight(78, 90.0),\n                SetSkinWeight(80, 100.0),\n                SetSkinWeight(121, 100.0),\n                SetSkinWeight(142, 50.0),\n                SetSkinWeight(145, 80.0),\n                SetSkinWeight(146, 100.0),\n                SetSkinWeight(152, 90.0),\n                SetSkinWeight(158, 90.0),\n                SetSkinWeight(186, 100.0),\n                SetSkinWeight(240, 80.0),\n                SetSkinWeight(246, 100.0),\n                SetSkinWeight(247, 100.0),\n                SetSkinWeight(248, 50.0),\n                SetSkinWeight(249, 90.0),\n                SetSkinWeight(251, 100.0),\n                SetSkinWeight(303, 90.0),\n                SetSkinWeight(304, 100.0),\n                SetSkinWeight(305, 100.0),\n                SetSkinWeight(306, 100.0),\n                SetSkinWeight(335, 100.0),\n                SetSkinWeight(338, 100.0),\n                SetSkinWeight(345, 100.0),\n                SetSkinWeight(359, 90.0),\n                SetSkinWeight(365, 100.0),\n                SetSkinWeight(370, 80.0),\n                SetSkinWeight(401, 100.0),\n                SetSkinWeight(402, 100.0),\n                SetSkinWeight(403, 100.0),\n                SetSkinWeight(417, 80.0),\n                SetSkinWeight(125, 60.0),\n                SetSkinWeight(143, 50.0),\n                SetSkinWeight(270, 50.0),\n                SetSkinWeight(294, 60.0),\n                SetSkinWeight(239, 50.0),\n                SetSkinWeight(245, 50.0),\n                MakeAttachedJoint(DYNOBJ_MARIO_CAP_JOINT_2),  // What is this joint for?\n                    SetScale(1.0, 1.0, 1.0),\n                    SetRotation(0.0, 0.0, 0.0),\n                    SetAttachOffset(528.3, 0.0, 0.0),\n        EndNetWithSubGroup(DYNOBJ_MARIO_CAP_SKIN_NET),\n\n        // right eye skinning\n        MakeNetWithSubGroup(DYNOBJ_MARIO_RIGHT_EYE_SKIN_NET),\n            AttachTo(0xd, DYNOBJ_MARIO_MAIN_NET),\n            SetSkinShape(DYNOBJ_MARIO_FACE_SHAPE),\n            SetScale(1.0, 1.0, 1.0),\n            SetRotation(90.0, 180.0, 0.0),\n            SetAttachOffset(29.7, 192.4, -3.0),\n            MakeAttachedJoint(DYNOBJ_MARIO_RIGHT_EYE_JOINT_1),\n                SetScale(1.0, 1.0, 1.0),\n                SetRotation(184.483, -178.885, 82.485),\n                SetAttachOffset(0.0, 0.0, 0.0),\n                MakeAttachedJoint(DYNOBJ_MARIO_RIGHT_EYE_JOINT_2),  // What is this joint for?\n                    SetScale(1.0, 1.0, 1.0),\n                    SetRotation(0.0, 0.0, 0.0),\n                    SetAttachOffset(329.8, 0.0, 0.0),\n        EndNetWithSubGroup(DYNOBJ_MARIO_RIGHT_EYE_SKIN_NET),\n        MakeDynObj(D_NET, DYNOBJ_MARIO_RIGHT_EYE_UNKNOWN_NET),\n            SetType(3),\n            SetShapePtr(DYNOBJ_MARIO_RIGHT_EYE_SHAPE),\n            AttachTo(0xd, DYNOBJ_MARIO_RIGHT_EYE_JOINT_1),\n            SetScale(1.0, 1.0, 1.0),\n            SetRotation(0.0, 0.0, 0.0),\n            SetAttachOffset(0.0, 0.0, 0.0),\n\n        // left eye skinning\n        MakeNetWithSubGroup(DYNOBJ_MARIO_LEFT_EYE_SKIN_NET),\n            AttachTo(0xd, DYNOBJ_MARIO_MAIN_NET),\n            SetSkinShape(DYNOBJ_MARIO_FACE_SHAPE),\n            SetScale(1.0, 1.0, 1.0),\n            SetRotation(-90.0, 0.0, 0.0),\n            SetAttachOffset(-29.0, 192.3, -2.0),\n            MakeAttachedJoint(DYNOBJ_MARIO_LEFT_EYE_JOINT_1),\n                SetScale(1.0, 1.0, 1.0),\n                SetRotation(-6.873, 0.206, -97.461),\n                SetAttachOffset(0.0, 0.0, 0.0),\n                SetSkinWeight(429, 16.0),\n                MakeAttachedJoint(DYNOMJ_MARIO_LEFT_EYE_JOINT_2),  // What is this joint for?\n                    SetScale(1.0, 1.0, 1.0),\n                    SetRotation(0.0, 0.0, 0.0),\n                    SetAttachOffset(329.8, 0.0, 0.0),\n        EndNetWithSubGroup(DYNOBJ_MARIO_LEFT_EYE_SKIN_NET),\n        MakeDynObj(D_NET, DYNOBJ_MARIO_LEFT_EYE_UNKNOWN_NET),\n            SetType(3),\n            SetShapePtr(DYNOBJ_MARIO_LEFT_EYE_SHAPE),\n            AttachTo(0xd, DYNOBJ_MARIO_LEFT_EYE_JOINT_1),\n            SetScale(1.0, 1.0, 1.0),\n            SetRotation(0.0, 0.0, 0.0),\n            SetAttachOffset(0.0, 0.0, 0.0),\n\n        // right eyebrow net (attaches to head)\n        MakeDynObj(D_NET, DYNOBJ_MARIO_RIGHT_EYEBROW_NET),\n            SetType(2),\n            SetShapePtr(DYNOBJ_MARIO_RIGHT_EYEBROW_SHAPE),\n            // attach right eyebrow to head\n            AttachTo(0xd, DYNOBJ_MARIO_MAIN_NET),\n            SetScale(1.0, 1.0, 1.0),\n            SetRotation(0.0, 0.0, 0.0),\n            SetAttachOffset(20.8, 0.0, -8.5),\n        // right part of right eyebrow skinning\n        MakeNetWithSubGroup(DYNOBJ_MARIO_RIGHT_EYEBROW_RPART_SKIN_NET),\n            AttachTo(0xd, DYNOBJ_MARIO_RIGHT_EYEBROW_NET),\n            SetSkinShape(DYNOBJ_MARIO_RIGHT_EYEBROW_SHAPE),\n            SetScale(1.0, 1.0, 1.0),\n            SetRotation(-90.0, 90.0, -90.0),\n            SetAttachOffset(231.3, 287.1, -51.4),\n            MakeAttachedJoint(DYNOBJ_MARIO_RIGHT_EYEBROW_RPART_JOINT_1),\n                SetScale(1.0, 1.0, 1.0),\n                SetRotation(10.886, 0.0, 177.51),\n                SetAttachOffset(0.0, 0.0, 0.0),\n                SetSkinWeight(5, 70.0),\n                SetSkinWeight(6, 80.0),\n                SetSkinWeight(7, 70.0),\n                SetSkinWeight(8, 50.0),\n                SetSkinWeight(11, 70.0),\n                SetSkinWeight(12, 100.0),\n                SetSkinWeight(19, 50.0),\n                SetSkinWeight(20, 80.0),\n                SetSkinWeight(23, 70.0),\n                MakeAttachedJoint(DYNOBJ_MARIO_RIGHT_EYEBROW_RPART_JOINT_2),  // What is this joint for?\n                    SetScale(1.0, 1.0, 1.0),\n                    SetRotation(0.0, 0.0, 0.0),\n                    SetAttachOffset(345.5, 0.0, 0.0),\n        EndNetWithSubGroup(DYNOBJ_MARIO_RIGHT_EYEBROW_RPART_SKIN_NET),\n        // left part of right eyebrow skinning\n        MakeNetWithSubGroup(DYNOBJ_MARIO_RIGHT_EYEBROW_LPART_SKIN_NET),\n            AttachTo(0xd, DYNOBJ_MARIO_RIGHT_EYEBROW_NET),\n            SetSkinShape(DYNOBJ_MARIO_RIGHT_EYEBROW_SHAPE),\n            SetScale(1.0, 1.0, 1.0),\n            SetRotation(-90.0, 90.0, -90.0),\n            SetAttachOffset(23.0, 305.5, -44.6),\n            MakeAttachedJoint(DYNOBJ_MARIO_RIGHT_EYEBROW_LPART_JOINT_1),\n                SetScale(1.0, 1.0, 1.0),\n                SetRotation(-3.437, -0.069, -177.758),\n                SetAttachOffset(0.0, 0.0, 0.0),\n                SetSkinWeight(16, 80.0),\n                SetSkinWeight(17, 100.0),\n                SetSkinWeight(18, 80.0),\n                SetSkinWeight(22, 70.0),\n                SetSkinWeight(24, 50.0),\n                SetSkinWeight(25, 80.0),\n                SetSkinWeight(15, 30.0),\n                MakeAttachedJoint(DYNOBJ_MARIO_RIGHT_EYEBROW_LPART_JOINT_2),  // What is this joint for?\n                    SetScale(1.0, 1.0, 1.0),\n                    SetRotation(0.0, 0.0, 0.0),\n                    SetAttachOffset(399.5, 0.0, 0.0),\n        EndNetWithSubGroup(DYNOBJ_MARIO_RIGHT_EYEBROW_LPART_SKIN_NET),\n        // middle part of right eyebrow skinning\n        MakeNetWithSubGroup(DYNOBJ_MARIO_RIGHT_EYEBROW_MPART_SKIN_NET),\n            AttachTo(0xd, DYNOBJ_MARIO_RIGHT_EYEBROW_NET),\n            SetSkinShape(DYNOBJ_MARIO_RIGHT_EYEBROW_SHAPE),\n            SetScale(1.0, 1.0, 1.0),\n            SetRotation(-90.0, 90.0, -90.0),\n            SetAttachOffset(123.1, 385.5, -46.4),\n            MakeAttachedJoint(DYNOBJ_MARIO_RIGHT_EYEBROW_MPART_JOINT_1),\n                SetScale(1.0, 1.0, 1.0),\n                SetRotation(2.865, 0.029, 182.377),\n                SetAttachOffset(0.0, 0.0, 0.0),\n                SetSkinWeight(0, 100.0),\n                SetSkinWeight(1, 100.0),\n                SetSkinWeight(2, 100.0),\n                SetSkinWeight(3, 100.0),\n                SetSkinWeight(4, 100.0),\n                SetSkinWeight(9, 100.0),\n                SetSkinWeight(10, 100.0),\n                SetSkinWeight(13, 100.0),\n                SetSkinWeight(14, 100.0),\n                SetSkinWeight(15, 70.0),\n                SetSkinWeight(21, 100.0),\n                SetSkinWeight(16, 20.0),\n                SetSkinWeight(18, 20.0),\n                SetSkinWeight(22, 30.0),\n                SetSkinWeight(25, 20.0),\n                SetSkinWeight(6, 20.0),\n                SetSkinWeight(11, 30.0),\n                SetSkinWeight(20, 20.0),\n                SetSkinWeight(23, 30.0),\n                SetSkinWeight(5, 30.0),\n                SetSkinWeight(7, 30.0),\n                SetSkinWeight(8, 50.0),\n                SetSkinWeight(19, 50.0),\n                SetSkinWeight(24, 50.0),\n                MakeAttachedJoint(DYNOBJ_MARIO_RIGHT_EYEBROW_MPART_JOINT_2),  // What is this joint for?\n                    SetScale(1.0, 1.0, 1.0),\n                    SetRotation(0.0, 0.0, 0.0),\n                    SetAttachOffset(388.6, 0.0, 0.0),\n        EndNetWithSubGroup(DYNOBJ_MARIO_RIGHT_EYEBROW_MPART_SKIN_NET),\n\n        // left eyebrow net (attaches to head)\n        MakeDynObj(D_NET, DYNOBJ_MARIO_LEFT_EYEBROW_NET),\n            SetType(2),\n            SetShapePtr(DYNOBJ_MARIO_LEFT_EYEBROW_SHAPE),\n            // attach left eyebrow to head\n            AttachTo(0xd, DYNOBJ_MARIO_MAIN_NET),\n            SetScale(1.0, 1.0, 1.0),\n            SetRotation(0.0, 0.0, 0.0),\n            SetAttachOffset(-18.5, 0.0, -1.0),\n        // left part of left eyebrow skinning\n        MakeNetWithSubGroup(DYNOBJ_MARIO_LEFT_EYEBROW_LPART_SKIN_NET),\n            AttachTo(0xd, DYNOBJ_MARIO_LEFT_EYEBROW_NET),\n            SetSkinShape(DYNOBJ_MARIO_LEFT_EYEBROW_SHAPE),\n            SetScale(1.0, 1.0, 1.0),\n            SetRotation(0.0, 90.0, 0.0),\n            SetAttachOffset(-233.6, 287.1, -51.4),\n            MakeAttachedJoint(DYNOBJ_MARIO_LEFT_EYEBROW_LPART_JOINT_1),\n                SetScale(1.0, 1.0, 1.0),\n                SetRotation(-6.876, 0.0, 177.51),\n                SetAttachOffset(0.0, 0.0, 0.0),\n                SetSkinWeight(9, 100.0),\n                SetSkinWeight(10, 80.0),\n                SetSkinWeight(11, 80.0),\n                SetSkinWeight(13, 80.0),\n                SetSkinWeight(14, 80.0),\n                SetSkinWeight(18, 60.0),\n                SetSkinWeight(21, 60.0),\n                SetSkinWeight(25, 60.0),\n                MakeAttachedJoint(DYNOBJ_MARIO_LEFT_EYEBROW_LPART_JOINT_2),  // What is this joint for?\n                    SetScale(1.0, 1.0, 1.0),\n                    SetRotation(0.0, 0.0, 0.0),\n                    SetAttachOffset(345.5, 0.0, 0.0),\n        EndNetWithSubGroup(DYNOBJ_MARIO_LEFT_EYEBROW_LPART_SKIN_NET),\n        // right part of left eyebrow skinning\n        MakeNetWithSubGroup(DYNOBJ_MARIO_LEFT_EYEBROW_RPART_SKIN_NET),\n            AttachTo(0xd, DYNOBJ_MARIO_LEFT_EYEBROW_NET),\n            SetSkinShape(DYNOBJ_MARIO_LEFT_EYEBROW_SHAPE),\n            SetScale(1.0, 1.0, 1.0),\n            SetRotation(0.0, 90.0, 0.0),\n            SetAttachOffset(-25.3, 305.5, -44.6),\n            MakeAttachedJoint(DYNOBJ_MARIO_LEFT_EYEBROW_RPART_JOINT_1),\n                SetScale(1.0, 1.0, 1.0),\n                SetRotation(-9.733, -0.388, -177.186),\n                SetAttachOffset(0.0, 0.0, 0.0),\n                SetSkinWeight(0, 70.0),\n                SetSkinWeight(1, 100.0),\n                SetSkinWeight(2, 70.0),\n                SetSkinWeight(3, 70.0),\n                SetSkinWeight(5, 50.0),\n                SetSkinWeight(12, 70.0),\n                SetSkinWeight(19, 30.0),\n                SetSkinWeight(15, 30.0),\n                MakeAttachedJoint(DYNOBJ_MARIO_LEFT_EYEBROW_RPART_JOINT_2),  // What is this joint for?\n                    SetScale(1.0, 1.0, 1.0),\n                    SetRotation(0.0, 0.0, 0.0),\n                    SetAttachOffset(399.5, 0.0, 0.0),\n        EndNetWithSubGroup(DYNOBJ_MARIO_LEFT_EYEBROW_RPART_SKIN_NET),\n        // middle part of left eyebrow skinning\n        MakeNetWithSubGroup(DYNOBJ_MARIO_LEFT_EYEBROW_MPART_SKIN_NET),\n            AttachTo(0xd, DYNOBJ_MARIO_LEFT_EYEBROW_NET),\n            SetSkinShape(DYNOBJ_MARIO_LEFT_EYEBROW_SHAPE),\n            SetScale(1.0, 1.0, 1.0),\n            SetRotation(0.0, 90.0, 0.0),\n            SetAttachOffset(-125.4, 385.5, -46.4),\n            MakeAttachedJoint(DYNOBJ_MARIO_LEFT_EYEBROW_MPART_JOINT_1),\n                SetScale(1.0, 1.0, 1.0),\n                SetRotation(-8.004, -0.61, 181.847),\n                SetAttachOffset(0.0, 0.0, 0.0),\n                SetSkinWeight(4, 70.0),\n                SetSkinWeight(6, 100.0),\n                SetSkinWeight(7, 100.0),\n                SetSkinWeight(8, 80.0),\n                SetSkinWeight(15, 70.0),\n                SetSkinWeight(16, 80.0),\n                SetSkinWeight(17, 100.0),\n                SetSkinWeight(19, 70.0),\n                SetSkinWeight(20, 80.0),\n                SetSkinWeight(22, 80.0),\n                SetSkinWeight(23, 60.0),\n                SetSkinWeight(24, 100.0),\n                SetSkinWeight(5, 50.0),\n                SetSkinWeight(0, 30.0),\n                SetSkinWeight(2, 30.0),\n                SetSkinWeight(10, 20.0),\n                SetSkinWeight(11, 20.0),\n                SetSkinWeight(13, 20.0),\n                SetSkinWeight(14, 20.0),\n                SetSkinWeight(18, 40.0),\n                SetSkinWeight(21, 40.0),\n                SetSkinWeight(25, 40.0),\n                SetSkinWeight(3, 30.0),\n                SetSkinWeight(12, 30.0),\n                MakeAttachedJoint(DYNOBJ_MARIO_LEFT_EYEBROW_MPART_JOINT_2),  // What is this joint for?\n                    SetScale(1.0, 1.0, 1.0),\n                    SetRotation(0.0, 0.0, 0.0),\n                    SetAttachOffset(388.6, 0.0, 0.0),\n        EndNetWithSubGroup(DYNOBJ_MARIO_LEFT_EYEBROW_MPART_SKIN_NET),\n\n        // mustache net (attaches to head)\n        MakeDynObj(D_NET, DYNOBJ_MARIO_MUSTACHE_NET),\n            SetType(2),\n            SetShapePtr(DYNOBJ_MARIO_MUSTACHE_SHAPE),\n            // attach mustache to head\n            AttachTo(0xd, DYNOBJ_MARIO_MAIN_NET),\n            SetScale(1.0, 1.0, 1.0),\n            SetRotation(0.02, -0.002, 0.04),\n            SetAttachOffset(0.0, 0.0, 0.0),\n        // left mustache skinning\n        MakeNetWithSubGroup(DYNOBJ_MARIO_LEFT_MUSTACHE_SKIN_NET),\n            AttachTo(0xd, DYNOBJ_MARIO_MUSTACHE_NET),\n            SetSkinShape(DYNOBJ_MARIO_MUSTACHE_SHAPE),\n            SetScale(1.0, 1.0, 1.0),\n            SetRotation(0.0, 180.0, 0.0),\n            SetAttachOffset(4.2, -86.5, 415.5),\n            MakeAttachedJoint(DYNOBJ_MARIO_LEFT_MUSTACHE_JOINT_1),\n                SetScale(1.0, 1.0, 1.0),\n                SetRotation(-179.98, -164.53, -29.34),\n                SetAttachOffset(0.0, 0.0, 0.0),\n                SetSkinWeight(3, 50.0),\n                SetSkinWeight(4, 50.0),\n                SetSkinWeight(5, 50.0),\n                SetSkinWeight(11, 70.0),\n                SetSkinWeight(12, 80.0),\n                SetSkinWeight(13, 70.0),\n                SetSkinWeight(18, 80.0),\n                SetSkinWeight(19, 80.0),\n                SetSkinWeight(20, 80.0),\n                SetSkinWeight(21, 100.0),\n                SetSkinWeight(22, 100.0),\n                SetSkinWeight(23, 100.0),\n                SetSkinWeight(25, 100.0),\n                SetSkinWeight(27, 100.0),\n                SetSkinWeight(28, 50.0),\n                SetSkinWeight(29, 40.0),\n                SetSkinWeight(30, 40.0),\n                SetSkinWeight(31, 100.0),\n                SetSkinWeight(36, 50.0),\n                SetSkinWeight(37, 50.0),\n                SetSkinWeight(42, 40.0),\n                SetSkinWeight(45, 50.0),\n                SetSkinWeight(46, 50.0),\n                SetSkinWeight(47, 80.0),\n                SetSkinWeight(50, 40.0),\n                SetSkinWeight(51, 100.0),\n                SetSkinWeight(53, 40.0),\n                SetSkinWeight(54, 80.0),\n                MakeAttachedJoint(DYNOBJ_MARIO_LEFT_MUSTACHE_JOINT_2),  // What is this joint for?\n                    SetScale(1.0, 1.0, 1.0),\n                    SetRotation(-0.028, 0.0, 0.02),\n                    SetAttachOffset(292.7, 0.0, 0.0),\n        EndNetWithSubGroup(DYNOBJ_MARIO_LEFT_MUSTACHE_SKIN_NET),\n        // right mustache skinning\n        MakeNetWithSubGroup(DYNOBJ_MARIO_RIGHT_MUSTACHE_SKIN_NET),\n            AttachTo(0xd, DYNOBJ_MARIO_MUSTACHE_NET),\n            SetSkinShape(DYNOBJ_MARIO_MUSTACHE_SHAPE),\n            SetScale(1.0, 1.0, 1.0),\n            SetRotation(0.0, 0.0, 0.0),\n            SetAttachOffset(-4.2, -86.5, 415.5),\n            MakeAttachedJoint(DYNOBJ_MARIO_RIGHT_MUSTACHE_JOINT_1),\n                SetScale(1.0, 1.0, 1.0),\n                SetRotation(0.0, 15.47, 150.66),\n                SetAttachOffset(0.0, 0.0, 0.0),\n                SetSkinWeight(0, 100.0),\n                SetSkinWeight(1, 80.0),\n                SetSkinWeight(2, 80.0),\n                SetSkinWeight(6, 100.0),\n                SetSkinWeight(7, 100.0),\n                SetSkinWeight(8, 50.0),\n                SetSkinWeight(9, 50.0),\n                SetSkinWeight(10, 50.0),\n                SetSkinWeight(14, 50.0),\n                SetSkinWeight(15, 50.0),\n                SetSkinWeight(16, 50.0),\n                SetSkinWeight(17, 80.0),\n                SetSkinWeight(24, 100.0),\n                SetSkinWeight(26, 100.0),\n                SetSkinWeight(32, 80.0),\n                SetSkinWeight(33, 100.0),\n                SetSkinWeight(34, 70.0),\n                SetSkinWeight(35, 50.0),\n                SetSkinWeight(38, 40.0),\n                SetSkinWeight(39, 40.0),\n                SetSkinWeight(40, 40.0),\n                SetSkinWeight(41, 50.0),\n                SetSkinWeight(43, 50.0),\n                SetSkinWeight(44, 50.0),\n                SetSkinWeight(48, 80.0),\n                SetSkinWeight(49, 70.0),\n                SetSkinWeight(52, 40.0),\n                SetSkinWeight(55, 80.0),\n                MakeAttachedJoint(DYNOBJ_MARIO_RIGHT_MUSTACHE_JOINT_2),  // What is this joint for?\n                    SetScale(1.0, 1.0, 1.0),\n                    SetRotation(0.0, 0.0, 0.0),\n                    SetAttachOffset(292.7, 0.0, 0.0),\n        EndNetWithSubGroup(DYNOBJ_MARIO_RIGHT_MUSTACHE_SKIN_NET),\n\n        // right mustache animator\n        MakeDynObj(D_DATA_GRP, DYNOBJ_MARIO_RIGHT_MUSTACHE_ANIMDATA_GROUP),\n            LinkWithPtr(&anim_mario_mustache_right),\n        MakeDynObj(D_ANIMATOR, DYNOBJ_MARIO_RIGHT_MUSTACHE_ANIMATOR),\n            AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),\n            SetNodeGroup(DYNOBJ_MARIO_RIGHT_MUSTACHE_ANIMDATA_GROUP),\n            LinkWith(DYNOBJ_MARIO_RIGHT_MUSTACHE_JOINT_1),\n\n        // left mustache animator\n        MakeDynObj(D_DATA_GRP, DYNOBJ_MARIO_LEFT_MUSTACHE_ANIMDATA_GROUP),\n            LinkWithPtr(&anim_mario_mustache_left),\n        MakeDynObj(D_ANIMATOR, DYNOBJ_MARIO_LEFT_MUSTACHE_ANIMATOR),\n            AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),\n            SetNodeGroup(DYNOBJ_MARIO_LEFT_MUSTACHE_ANIMDATA_GROUP),\n            LinkWith(DYNOBJ_MARIO_LEFT_MUSTACHE_JOINT_1),\n\n        // left eyebrow animators\n        MakeDynObj(D_DATA_GRP, 32),\n            LinkWithPtr(&anim_mario_lips_1),\n        MakeDynObj(D_ANIMATOR, 33),\n            AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),\n            SetNodeGroup(32),\n            LinkWith(DYNOBJ_MARIO_LEFT_EYEBROW_MPART_JOINT_1),\n        MakeDynObj(D_DATA_GRP, 41),\n            LinkWithPtr(&anim_mario_lips_2),\n        MakeDynObj(D_ANIMATOR, 42),\n            AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),\n            SetNodeGroup(41),\n            LinkWith(DYNOBJ_MARIO_LEFT_EYEBROW_RPART_JOINT_1),\n        MakeDynObj(D_DATA_GRP, 50),\n            LinkWithPtr(&anim_mario_eyebrows_1),\n        MakeDynObj(D_ANIMATOR, 51),\n            AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),\n            SetNodeGroup(50),\n            LinkWith(DYNOBJ_MARIO_LEFT_EYEBROW_LPART_JOINT_1),\n\n        // right eyebrow animators\n        MakeDynObj(D_DATA_GRP, 63),\n            LinkWithPtr(&anim_mario_eyebrows_equalizer),\n        MakeDynObj(D_ANIMATOR, 64),\n            AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),\n            SetNodeGroup(63),\n            LinkWith(DYNOBJ_MARIO_RIGHT_EYEBROW_MPART_JOINT_2),\n        MakeDynObj(D_DATA_GRP, 66),\n            LinkWithPtr(&anim_mario_eyebrows_2),\n        MakeDynObj(D_ANIMATOR, 67),\n            AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),\n            SetNodeGroup(66),\n            LinkWith(DYNOBJ_MARIO_RIGHT_EYEBROW_MPART_JOINT_1),\n        MakeDynObj(D_DATA_GRP, 72),\n            LinkWithPtr(&anim_mario_eyebrows_3),\n        MakeDynObj(D_ANIMATOR, 73),\n            AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),\n            SetNodeGroup(72),\n            LinkWith(DYNOBJ_MARIO_RIGHT_EYEBROW_LPART_JOINT_2),\n        MakeDynObj(D_DATA_GRP, 75),\n            LinkWithPtr(&anim_mario_eyebrows_4),\n        MakeDynObj(D_ANIMATOR, 76),\n            AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),\n            SetNodeGroup(75),\n            LinkWith(DYNOBJ_MARIO_RIGHT_EYEBROW_LPART_JOINT_1),\n        MakeDynObj(D_DATA_GRP, 84),\n            LinkWithPtr(&anim_mario_eyebrows_5),\n        MakeDynObj(D_ANIMATOR, 85),\n            AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),\n            SetNodeGroup(84),\n            LinkWith(DYNOBJ_MARIO_RIGHT_EYEBROW_RPART_JOINT_1),\n\n        // left eye animator\n        MakeDynObj(D_DATA_GRP, DYNOBJ_MARIO_LEFT_EYE_ANIMDATA_GROUP),\n            LinkWithPtr(&anim_mario_eye_left),\n        MakeDynObj(D_ANIMATOR, DYNOBJ_MARIO_LEFT_EYE_ANIMATOR),\n            AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),\n            SetNodeGroup(DYNOBJ_MARIO_LEFT_EYE_ANIMDATA_GROUP),\n            LinkWith(DYNOBJ_MARIO_LEFT_EYE_JOINT_1),\n\n        // right eye animator\n        MakeDynObj(D_DATA_GRP, DYNOBJ_MARIO_RIGHT_EYE_ANIMDATA_GROUP),\n            LinkWithPtr(&anim_mario_eye_right),\n        MakeDynObj(D_ANIMATOR, DYNOBJ_MARIO_RIGHT_EYE_ANIMATOR),\n            AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),\n            SetNodeGroup(DYNOBJ_MARIO_RIGHT_EYE_ANIMDATA_GROUP),\n            LinkWith(DYNOBJ_MARIO_RIGHT_EYE_JOINT_1),\n\n        // cap animator\n        MakeDynObj(D_DATA_GRP, DYNOBJ_MARIO_CAP_ANIMDATA_GROUP),\n            LinkWithPtr(&anim_mario_cap),\n        MakeDynObj(D_ANIMATOR, DYNOBJ_MARIO_CAP_ANIMATOR),\n            AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),\n            SetNodeGroup(DYNOBJ_MARIO_CAP_ANIMDATA_GROUP),\n            LinkWith(DYNOBJ_MARIO_CAP_JOINT_1),\n\n        // left lip corner animator\n        MakeDynObj(D_DATA_GRP, DYNOBJ_MARIO_LEFT_LIP_CORNER_ANIMDATA_GROUP),\n            LinkWithPtr(&anim_mario_lips_3),\n        MakeDynObj(D_ANIMATOR, DYNOBJ_MARIO_LEFT_LIP_CORNER_ANIMATOR),\n            AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),\n            SetNodeGroup(DYNOBJ_MARIO_LEFT_LIP_CORNER_ANIMDATA_GROUP),\n            LinkWith(DYNOBJ_MARIO_LEFT_LIP_CORNER_JOINT_1),\n\n        // right lip corner animator\n        MakeDynObj(D_DATA_GRP, DYNOBJ_MARIO_RIGHT_LIP_CORNER_ANIMDATA_GROUP),\n            LinkWithPtr(&anim_mario_lips_4),\n        MakeDynObj(D_ANIMATOR, DYNOBJ_MARIO_RIGHT_LIP_CORNER_ANIMATOR),\n            AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),\n            SetNodeGroup(DYNOBJ_MARIO_RIGHT_LIP_CORNER_ANIMDATA_GROUP),\n            LinkWith(DYNOBJ_MARIO_RIGHT_LIP_CORNER_JOINT_1),\n\n        // left ear animator\n        MakeDynObj(D_DATA_GRP, DYNOBJ_MARIO_LEFT_EAR_ANIMDATA_GROUP),\n            LinkWithPtr(&anim_mario_ear_left),\n        MakeDynObj(D_ANIMATOR, DYNOBJ_MARIO_LEFT_EAR_ANIMATOR),\n            AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),\n            SetNodeGroup(DYNOBJ_MARIO_LEFT_EAR_ANIMDATA_GROUP),\n            LinkWith(DYNOBJ_MARIO_LEFT_EAR_JOINT_1),\n\n        // right ear animator\n        MakeDynObj(D_DATA_GRP, DYNOBJ_MARIO_RIGHT_EAR_ANIMADATA_GROUP),\n            LinkWithPtr(&anim_mario_ear_right),\n        MakeDynObj(D_ANIMATOR, DYNOBJ_MARIO_RIGHT_EAR_ANIMATOR),\n            AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),\n            SetNodeGroup(DYNOBJ_MARIO_RIGHT_EAR_ANIMADATA_GROUP),\n            LinkWith(DYNOBJ_MARIO_RIGHT_EAR_JOINT_1),\n\n        // nose animator\n        MakeDynObj(D_DATA_GRP, DYNOBJ_MARIO_NOSE_ANIMDATA_GROUP),\n            LinkWithPtr(&anim_mario_nose),\n        MakeDynObj(D_ANIMATOR, DYNOBJ_MARIO_NOSE_ANIMATOR),\n            AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),\n            SetNodeGroup(DYNOBJ_MARIO_NOSE_ANIMDATA_GROUP),\n            LinkWith(DYNOBJ_MARIO_NOSE_JOINT_1),\n\n        // animator for left side of jaw\n        MakeDynObj(D_DATA_GRP, DYNOBJ_MARIO_LEFT_JAW_ANIMDATA_GROUP),\n            LinkWithPtr(&anim_mario_lips_5),\n        MakeDynObj(D_ANIMATOR, DYNOBJ_MARIO_LEFT_JAW_ANIMATOR),\n            AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),\n            SetNodeGroup(DYNOBJ_MARIO_LEFT_JAW_ANIMDATA_GROUP),\n            LinkWith(DYNOBJ_MARIO_LEFT_JAW_JOINT),\n\n        // animator for right side of jaw\n        MakeDynObj(D_DATA_GRP, DYNOBJ_MARIO_RIGHT_JAW_ANIMDATA_GROUP),\n            LinkWithPtr(&anim_mario_lips_6),\n        MakeDynObj(D_ANIMATOR, DYNOBJ_MARIO_RIGHT_JAW_ANIMATOR),\n            AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),\n            SetNodeGroup(DYNOBJ_MARIO_RIGHT_JAW_ANIMDATA_GROUP),\n            LinkWith(DYNOBJ_MARIO_RIGHT_JAW_JOINT),\n\n        // left eyelid animator\n        MakeDynObj(D_DATA_GRP, DYNOBJ_LEFT_EYELID_ANIMDATA_GROUP),\n            LinkWithPtr(&anim_mario_eyelid_left),\n        MakeDynObj(D_ANIMATOR, DYNOBJ_LEFT_EYELID_ANIMATOR),\n            AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),\n            SetNodeGroup(DYNOBJ_LEFT_EYELID_ANIMDATA_GROUP),\n            LinkWith(DYNOBJ_LEFT_EYELID_JOINT_1),\n\n        // right eyelid animator\n        MakeDynObj(D_DATA_GRP, DYNOBJ_RIGHT_EYELID_ANIMDATA_GROUP),\n            LinkWithPtr(&anim_mario_eyelid_right),\n        MakeDynObj(D_ANIMATOR, DYNOBJ_RIGHT_EYELID_ANIMATOR),\n            AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),\n            SetNodeGroup(DYNOBJ_RIGHT_EYELID_ANIMDATA_GROUP),\n            LinkWith(DYNOBJ_RIGHT_EYELID_JOINT_1),\n\n        // whole head animator?\n        MakeDynObj(D_DATA_GRP, DYNOBJ_MARIO_HEAD_ANIMDATA_GROUP),\n            LinkWithPtr(&anim_mario_intro),\n        MakeDynObj(D_ANIMATOR, DYNOBJ_MARIO_HEAD_ANIMATOR),\n            AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),\n            SetNodeGroup(DYNOBJ_MARIO_HEAD_ANIMDATA_GROUP),\n            LinkWith(DYNOBJ_MARIO_MAIN_NET),\n\n        // silver star animator\n        MakeDynObj(D_DATA_GRP, DYNOBJ_SILVER_STAR_ANIMDATA_GROUP),\n            LinkWithPtr(&anim_silver_star),\n        MakeDynObj(D_ANIMATOR, DYNOBJ_SILVER_STAR_ANIMATOR),\n            AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),\n            SetNodeGroup(DYNOBJ_SILVER_STAR_ANIMDATA_GROUP),\n            LinkWith(DYNOBJ_SILVER_STAR_LIGHT),\n\n        // red star animator\n        MakeDynObj(D_DATA_GRP, DYNOBJ_RED_STAR_ANIMDATA_GROUP),\n            LinkWithPtr(&anim_red_star),\n        MakeDynObj(D_ANIMATOR, DYNOBJ_RED_STAR_ANIMATOR),\n            AttachTo(0x0, DYNOBJ_MARIO_MAIN_ANIMATOR),\n            SetNodeGroup(DYNOBJ_RED_STAR_ANIMDATA_GROUP),\n            LinkWith(DYNOBJ_RED_STAR_LIGHT),\n\n    EndGroup(0x1),\n\n    UseObj(0x1),\n\n    UseIntegerNames(FALSE),\n    EndList(),\n};\n"
  },
  {
    "path": "src/goddard/dynlists/dynlist_test_cube.c",
    "content": "// early unused test dynlist\n#include <PR/ultratypes.h>\n\n#include \"dynlist_macros.h\"\n#include \"dynlists.h\"\n#include \"../dynlist_proc.h\"\n// maybe move types into the dynlists.h file?\n\nstruct DynList dynlist_test_cube[] = {\n    BeginList(),\n\n    StartGroup(\"ico1vg\"),\n        MakeVertex(-2.0, 0.0, -2.0),\n        MakeVertex(-2.0, 0.0, 2.0),\n        MakeVertex(2.0, 0.0, 2.0),\n        MakeVertex(2.0, 0.0, -2.0),\n        MakeVertex(0.0, 3.0, 0.0),\n        MakeVertex(0.0, -3.0, 0.0),\n    EndGroup(\"ico1vg\"),\n\n    StartGroup(\"ico1pg\"),\n        MakeDynObj(D_FACE, NULL),\n            SetMaterial(0),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 0),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 1),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 2),\n        MakeDynObj(D_FACE, NULL),\n            SetMaterial(0),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 0),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 2),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 3),\n        MakeDynObj(D_FACE, NULL),\n            SetMaterial(0),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 4),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 2),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 3),\n        MakeDynObj(D_FACE, NULL),\n            SetMaterial(0),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 1),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 2),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 4),\n        MakeDynObj(D_FACE, NULL),\n            SetMaterial(0),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 1),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 4),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 0),\n        MakeDynObj(D_FACE, NULL),\n            SetMaterial(0),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 3),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 0),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 4),\n        MakeDynObj(D_FACE, NULL),\n            SetMaterial(0),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 5),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 3),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 2),\n        MakeDynObj(D_FACE, NULL),\n            SetMaterial(0),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 1),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 5),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 2),\n        MakeDynObj(D_FACE, NULL),\n            SetMaterial(0),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 1),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 0),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 5),\n        MakeDynObj(D_FACE, NULL),\n            SetMaterial(0),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 3),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 5),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 0),\n    EndGroup(\"ico1pg\"),\n\n    UseObj(\"ico1pg\"),\n        MapVertices(\"ico1vg\"),\n\n    MakeDynObj(D_SHAPE, \"ico1_sh\"),\n        SetNodeGroup(\"ico1vg\"),\n        SetPlaneGroup(\"ico1pg\"),\n\n    EndList(),\n};\n"
  },
  {
    "path": "src/goddard/dynlists/dynlist_unused.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"dynlist_macros.h\"\n#include \"dynlists.h\"\n#include \"../dynlist_proc.h\"\n\nstruct DynList dynlist_spot_shape[] = {\n    BeginList(),\n\n    StartGroup(\"spotvg\"),\n        MakeVertex(0.0, 0.0, 0.0),\n        MakeVertex(1.0, -1.0, 1.0),\n            SetParamF(PARM_F_ALPHA, 0.0),\n        MakeVertex(1.0, 1.0, 1.0),\n            SetParamF(PARM_F_ALPHA, 0.0),\n        MakeVertex(-1.0, 1.0, 1.0),\n            SetParamF(PARM_F_ALPHA, 0.0),\n        MakeVertex(-1.0, -1.0, 1.0),\n            SetParamF(PARM_F_ALPHA, 0.0),\n        MakeVertex(0.0, 0.0, 0.0),\n    EndGroup(\"spotvg\"),\n\n    StartGroup(\"spotpg\"),\n        MakeDynObj(D_FACE, NULL),\n            SetMaterial(0),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 2),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 3),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 5),\n        MakeDynObj(D_FACE, NULL),\n            SetMaterial(0),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 3),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 4),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 5),\n        MakeDynObj(D_FACE, NULL),\n            SetMaterial(0),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 4),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 1),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 5),\n        MakeDynObj(D_FACE, NULL),\n            SetMaterial(0),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 1),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 2),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 5),\n        MakeDynObj(D_FACE, NULL),\n            SetMaterial(0),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 0),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 3),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 2),\n        MakeDynObj(D_FACE, NULL),\n            SetMaterial(0),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 0),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 4),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 3),\n        MakeDynObj(D_FACE, NULL),\n            SetMaterial(0),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 0),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 1),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 4),\n        MakeDynObj(D_FACE, NULL),\n            SetMaterial(0),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 0),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 2),\n            SetParamPtr(PARM_PTR_OBJ_VTX, 1),\n    EndGroup(\"spotpg\"),\n\n    UseObj(\"spotpg\"),\n        MapVertices(\"spotvg\"),\n\n    MakeDynObj(D_SHAPE, \"spot_sh\"),\n        SetNodeGroup(\"spotvg\"),\n        SetPlaneGroup(\"spotpg\"),\n        SetParamF(PARM_F_ALPHA, 0.1),\n\n    EndList(),\n};\n"
  },
  {
    "path": "src/goddard/dynlists/dynlists.h",
    "content": "#ifndef GD_DYNLISTS_H\n#define GD_DYNLISTS_H\n\n#include \"../gd_types.h\"\n\n// Dynamic Object names\nenum {\n    DYNOBJ_MARIO_RIGHT_MUSTACHE_JOINT_2          = 3,\n    DYNOBJ_MARIO_RIGHT_MUSTACHE_JOINT_1          = 6,\n    DYNOBJ_MARIO_RIGHT_MUSTACHE_ANIMDATA_GROUP   = 7,\n    DYNOBJ_MARIO_RIGHT_MUSTACHE_ANIMATOR         = 8,\n    DYNOBJ_MARIO_RIGHT_MUSTACHE_SKIN_NET         = 9,\n    DYNOBJ_MARIO_LEFT_MUSTACHE_JOINT_2           = 12,\n    DYNOBJ_MARIO_LEFT_MUSTACHE_JOINT_1           = 15,\n    DYNOBJ_MARIO_LEFT_MUSTACHE_ANIMDATA_GROUP    = 16,\n    DYNOBJ_MARIO_LEFT_MUSTACHE_ANIMATOR          = 17,\n    DYNOBJ_MARIO_LEFT_MUSTACHE_SKIN_NET          = 18,\n    DYNOBJ_MARIO_MUSTACHE_NET                    = 21,  // (left and right mustache skin nets are attached to this net)\n    DYNOBJ_MARIO_MUSTACHE_VTX_GROUP              = 22,\n    DYNOBJ_MARIO_MUSTACHE_TRI_GROUP              = 23,\n    DYNOBJ_MARIO_MUSTACHE_MTL_GROUP              = 24,\n    DYNOBJ_MARIO_MUSTACHE_SHAPE                  = 25,\n    DYNOBJ_MARIO_LEFT_EYEBROW_MPART_JOINT_2      = 28,\n    DYNOBJ_MARIO_LEFT_EYEBROW_MPART_JOINT_1      = 31,\n    DYNOBJ_MARIO_LEFT_EYEBROW_MPART_SKIN_NET     = 34,\n    DYNOBJ_MARIO_LEFT_EYEBROW_RPART_JOINT_2      = 37,\n    DYNOBJ_MARIO_LEFT_EYEBROW_RPART_JOINT_1      = 40,\n    DYNOBJ_MARIO_LEFT_EYEBROW_RPART_SKIN_NET     = 43,\n    DYNOBJ_MARIO_LEFT_EYEBROW_LPART_JOINT_2      = 46,\n    DYNOBJ_MARIO_LEFT_EYEBROW_LPART_JOINT_1      = 49,\n    DYNOBJ_MARIO_LEFT_EYEBROW_LPART_SKIN_NET     = 52,\n    DYNOBJ_MARIO_LEFT_EYEBROW_NET                = 55,\n    DYNOBJ_MARIO_LEFT_EYEBROW_VTX_GROUP          = 56,\n    DYNOBJ_MARIO_LEFT_EYEBROW_TRI_GROUP          = 57,\n    DYNOBJ_MARIO_LEFT_EYEBROW_MTL_GROUP          = 58,\n    DYNOBJ_MARIO_LEFT_EYEBROW_SHAPE              = 59,\n    DYNOBJ_MARIO_RIGHT_EYEBROW_MPART_JOINT_2     = 62,\n    DYNOBJ_MARIO_RIGHT_EYEBROW_MPART_JOINT_1     = 65,\n    DYNOBJ_MARIO_RIGHT_EYEBROW_MPART_SKIN_NET    = 68,\n    DYNOBJ_MARIO_RIGHT_EYEBROW_LPART_JOINT_2     = 71,\n    DYNOBJ_MARIO_RIGHT_EYEBROW_LPART_JOINT_1     = 74,\n    DYNOBJ_MARIO_RIGHT_EYEBROW_LPART_SKIN_NET    = 77,\n    DYNOBJ_MARIO_RIGHT_EYEBROW_RPART_JOINT_2     = 80,\n    DYNOBJ_MARIO_RIGHT_EYEBROW_RPART_JOINT_1     = 83,\n    DYNOBJ_MARIO_RIGHT_EYEBROW_RPART_SKIN_NET    = 86,\n    DYNOBJ_MARIO_RIGHT_EYEBROW_NET               = 89,\n    DYNOBJ_MARIO_RIGHT_EYEBROW_VTX_GROUP         = 90,\n    DYNOBJ_MARIO_RIGHT_EYEBROW_TRI_GROUP         = 91,\n    DYNOBJ_MARIO_RIGHT_EYEBROW_MTL_GROUP         = 92,\n    DYNOBJ_MARIO_RIGHT_EYEBROW_SHAPE             = 93,\n    DYNOBJ_MARIO_LEFT_EYE_UNKNOWN_NET            = 96,\n    DYNOBJ_MARIO_LEFT_EYE_VTX_GROUP              = 97,\n    DYNOBJ_MARIO_LEFT_EYE_TRI_GROUP              = 98,\n    DYNOBJ_MARIO_LEFT_EYE_MTL_GROUP              = 99,\n    DYNOBJ_MARIO_LEFT_EYE_SHAPE                  = 100,\n    DYNOMJ_MARIO_LEFT_EYE_JOINT_2                = 103,\n    DYNOBJ_MARIO_LEFT_EYE_JOINT_1                = 106,\n    DYNOBJ_MARIO_LEFT_EYE_ANIMDATA_GROUP         = 107,\n    DYNOBJ_MARIO_LEFT_EYE_ANIMATOR               = 108,\n    DYNOBJ_MARIO_LEFT_EYE_SKIN_NET               = 109,\n    DYNOBJ_MARIO_RIGHT_EYE_UNKNOWN_NET           = 112,\n    DYNOBJ_MARIO_RIGHT_EYE_VTX_GROUP             = 113,\n    DYNOBJ_MARIO_RIGHT_EYE_TRI_GROUP             = 114,\n    DYNOBJ_MARIO_RIGHT_EYE_MTL_GROUP             = 115,\n    DYNOBJ_MARIO_RIGHT_EYE_SHAPE                 = 116,\n    DYNOBJ_MARIO_RIGHT_EYE_JOINT_2               = 119,\n    DYNOBJ_MARIO_RIGHT_EYE_JOINT_1               = 122,\n    DYNOBJ_MARIO_RIGHT_EYE_ANIMDATA_GROUP        = 123,\n    DYNOBJ_MARIO_RIGHT_EYE_ANIMATOR              = 124,\n    DYNOBJ_MARIO_RIGHT_EYE_SKIN_NET              = 125,\n    DYNOBJ_MARIO_CAP_JOINT_2                     = 128,\n    DYNOBJ_MARIO_CAP_JOINT_1                     = 131,\n    DYNOBJ_MARIO_CAP_ANIMDATA_GROUP              = 132,\n    DYNOBJ_MARIO_CAP_ANIMATOR                    = 133,\n    DYNOBJ_MARIO_CAP_SKIN_NET                    = 134,\n    DYNOBJ_MARIO_UNKNOWN_137                     = 137,\n    DYNOBJ_MARIO_UNKNOWN_140                     = 140,\n    DYNOBJ_MARIO_LEFT_LIP_CORNER_JOINT_2         = 146,\n    DYNOBJ_MARIO_LEFT_LIP_CORNER_JOINT_1         = 149,\n    DYNOBJ_MARIO_LEFT_LIP_CORNER_ANIMDATA_GROUP  = 150,\n    DYNOBJ_MARIO_LEFT_LIP_CORNER_ANIMATOR        = 151,\n    DYNOBJ_MARIO_LEFT_LIP_CORNER_SKIN_NET        = 152,\n    DYNOBJ_MARIO_RIGHT_LIP_CORNER_JOINT_2        = 155,\n    DYNOBJ_MARIO_RIGHT_LIP_CORNER_JOINT_1        = 158,\n    DYNOBJ_MARIO_RIGHT_LIP_CORNER_ANIMDATA_GROUP = 159,\n    DYNOBJ_MARIO_RIGHT_LIP_CORNER_ANIMATOR       = 160,\n    DYNOBJ_MARIO_RIGHT_LIP_CORNER_SKIN_NET       = 161,\n    DYNOBJ_MARIO_LEFT_EAR_JOINT_2                = 164,\n    DYNOBJ_MARIO_LEFT_EAR_JOINT_1                = 167,  // 167 \"N167l\"\n    DYNOBJ_MARIO_LEFT_EAR_ANIMDATA_GROUP         = 168,\n    DYNOBJ_MARIO_LEFT_EAR_ANIMATOR               = 169,\n    DYNOBJ_MARIO_LEFT_EAR_SKIN_NET               = 170,\n    DYNOBJ_MARIO_RIGHT_EAR_JOINT_2               = 173,\n    DYNOBJ_MARIO_RIGHT_EAR_JOINT_1               = 176,\n    DYNOBJ_MARIO_RIGHT_EAR_ANIMADATA_GROUP       = 177,\n    DYNOBJ_MARIO_RIGHT_EAR_ANIMATOR              = 178,\n    DYNOBJ_MARIO_RIGHT_EAR_SKIN_NET              = 179,\n    DYNOBJ_MARIO_NOSE_JOINT_2                    = 182,\n    DYNOBJ_MARIO_NOSE_JOINT_1                    = 185,\n    DYNOBJ_MARIO_NOSE_ANIMDATA_GROUP             = 186,\n    DYNOBJ_MARIO_NOSE_ANIMATOR                   = 187,\n    DYNOBJ_MARIO_NOSE_SKIN_NET                   = 188,\n    DYNOBJ_MARIO_UNKNOWN_191                     = 191,\n    DYNOBJ_MARIO_LEFT_JAW_JOINT                  = 194,\n    DYNOBJ_MARIO_LEFT_JAW_ANIMDATA_GROUP         = 195,\n    DYNOBJ_MARIO_LEFT_JAW_ANIMATOR               = 196,\n    DYNOBJ_MARIO_RIGHT_JAW_JOINT                 = 197,\n    DYNOBJ_MARIO_RIGHT_JAW_ANIMDATA_GROUP        = 198,\n    DYNOBJ_MARIO_RIGHT_JAW_ANIMATOR              = 199,\n    DYNOBJ_MARIO_JAW_SKIN_NET                    = 200,\n    DYNOBJ_LEFT_EYELID_JOINT_2                   = 203,\n    DYNOBJ_LEFT_EYELID_JOINT_1                   = 206,\n    DYNOBJ_LEFT_EYELID_ANIMDATA_GROUP            = 207,\n    DYNOBJ_LEFT_EYELID_ANIMATOR                  = 208,\n    DYNOBJ_LEFT_EYELID_SKIN_NET                  = 209,\n    DYNOBJ_RIGHT_EYELID_JOINT_2                  = 212,\n    DYNOBJ_RIGHT_EYELID_JOINT_1                  = 215,\n    DYNOBJ_RIGHT_EYELID_ANIMDATA_GROUP           = 216,\n    DYNOBJ_RIGHT_EYELID_ANIMATOR                 = 217,\n    DYNOBJ_RIGHT_EYELID_SKIN_NET                 = 218,\n    DYNOBJ_MARIO_MAIN_NET                        = 221,  // rename to HEAD_NET?\n    DYNOBJ_MARIO_FACE_VTX_GROUP                  = 222,\n    DYNOBJ_MARIO_FACE_TRI_GROUP                  = 223,\n    DYNOBJ_MARIO_FACE_MTL_GROUP                  = 224,\n    DYNOBJ_MARIO_FACE_SHAPE                      = 225,\n    DYNOBJ_MARIO_HEAD_ANIMDATA_GROUP             = 226,\n    DYNOBJ_MARIO_HEAD_ANIMATOR                   = 227,\n    DYNOBJ_SILVER_STAR_LIGHT                     = 228,  // \"N228l\"\n    DYNOBJ_SILVER_STAR_ANIMDATA_GROUP            = 229,\n    DYNOBJ_SILVER_STAR_ANIMATOR                  = 230,\n    DYNOBJ_RED_STAR_LIGHT                        = 231,  // \"N231l\"\n    DYNOBJ_RED_STAR_ANIMDATA_GROUP               = 232,\n    DYNOBJ_RED_STAR_ANIMATOR                     = 233,\n    DYNOBJ_MARIO_MAIN_SHAPES_GROUP               = 1000,  // \"N1000l\"\n    DYNOBJ_MARIO_MAIN_ANIMATOR                   = 1001  // root animator\n};\n\nextern struct DynList dynlist_test_cube[];\nextern struct DynList dynlist_spot_shape[];\nextern struct DynList dynlist_mario_face_shape[];\nextern struct DynList dynlist_mario_eye_right_shape[];\nextern struct DynList dynlist_mario_eye_left_shape[];\nextern struct DynList dynlist_mario_eyebrow_right_shape[];\nextern struct DynList dynlist_mario_eyebrow_left_shape[];\nextern struct DynList dynlist_mario_mustache_shape[];\nextern struct DynList dynlist_mario_master[];\n\n#endif // GD_DYNLISTS_H\n"
  },
  {
    "path": "src/goddard/dynlists/dynlists_mario_eyebrows_mustache.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"macros.h\"\n#include \"dynlist_macros.h\"\n#include \"dynlists.h\"\n#include \"../dynlist_proc.h\"\n\nstatic s16 verts_mario_eyebrow_right[][3] = {\n    { 105, 391, 363 }, { 62, 370, 378 },  { 86, 366, 370 },  { 171, 380, 339 }, { 139, 377, 353 },\n    { 193, 353, 331 }, { 204, 314, 297 }, { 175, 342, 305 }, { 209, 361, 291 }, { 124, 360, 323 },\n    { 161, 393, 306 }, { 230, 323, 286 }, { 233, 276, 289 }, { 123, 402, 319 }, { 85, 399, 334 },\n    { 73, 355, 342 },  { 45, 330, 354 },  { 17, 294, 356 },  { 29, 348, 361 },  { 212, 358, 323 },\n    { 214, 324, 318 }, { 139, 394, 353 }, { 57, 339, 377 },  { 231, 330, 311 }, { 58, 384, 349 },\n    { 41, 345, 382 },\n};\n\nstatic struct GdVtxData vtx_mario_eyebrow_right = { ARRAY_COUNT(verts_mario_eyebrow_right), 0x1, verts_mario_eyebrow_right };\n\nstatic u16 facedata_mario_eyebrow_right[][4] = {\n    { 0, 0, 1, 2 },    { 0, 3, 4, 5 },    { 0, 20, 23, 19 }, { 0, 1, 25, 22 }, { 0, 0, 21, 13 },\n    { 0, 2, 15, 9 },   { 0, 7, 6, 20 },   { 0, 3, 19, 8 },   { 0, 25, 1, 24 }, { 0, 19, 5, 20 },\n    { 0, 19, 3, 5 },   { 0, 3, 21, 4 },   { 0, 21, 0, 4 },   { 0, 0, 2, 4 },   { 0, 1, 22, 2 },\n    { 0, 20, 12, 23 }, { 0, 13, 14, 0 },  { 0, 4, 2, 9 },    { 0, 20, 5, 7 },  { 0, 22, 17, 16 },\n    { 0, 8, 10, 3 },   { 0, 24, 18, 25 }, { 0, 23, 11, 8 },  { 0, 14, 24, 1 }, { 0, 5, 4, 9 },\n    { 0, 2, 22, 15 },  { 0, 11, 23, 12 }, { 0, 25, 18, 17 }, { 0, 20, 6, 12 }, { 0, 10, 13, 21 },\n    { 0, 8, 19, 23 },  { 0, 25, 17, 22 }, { 0, 1, 0, 14 },   { 0, 21, 3, 10 }, { 0, 22, 16, 15 },\n    { 0, 9, 7, 5 },\n};\n\nstatic struct GdFaceData faces_mario_eyebrow_right = { ARRAY_COUNT(facedata_mario_eyebrow_right), 0x1, facedata_mario_eyebrow_right };\n\nstruct DynList dynlist_mario_eyebrow_right_shape[] = {\n    BeginList(),\n\n    MakeDynObj(D_DATA_GRP, DYNOBJ_MARIO_RIGHT_EYEBROW_VTX_GROUP),\n        LinkWithPtr(&vtx_mario_eyebrow_right),\n\n    MakeDynObj(D_DATA_GRP, DYNOBJ_MARIO_RIGHT_EYEBROW_TRI_GROUP),\n        LinkWithPtr(&faces_mario_eyebrow_right),\n\n    StartGroup(DYNOBJ_MARIO_RIGHT_EYEBROW_MTL_GROUP),\n        MakeDynObj(D_MATERIAL, 0),\n            SetId(0),\n            SetAmbient(0.0, 0.005, 0.0),  // Why is green 0.005 on the right eyebrow, but 0.0 on the left eyebrow?\n            SetDiffuse(0.0, 0.0, 0.0),\n    EndGroup(DYNOBJ_MARIO_RIGHT_EYEBROW_MTL_GROUP),\n\n    MakeDynObj(D_SHAPE, DYNOBJ_MARIO_RIGHT_EYEBROW_SHAPE),\n        SetNodeGroup(DYNOBJ_MARIO_RIGHT_EYEBROW_VTX_GROUP),\n        SetPlaneGroup(DYNOBJ_MARIO_RIGHT_EYEBROW_TRI_GROUP),\n        SetMaterialGroup(DYNOBJ_MARIO_RIGHT_EYEBROW_MTL_GROUP),\n\n    EndList(),\n};\n\nstatic s16 verts_mario_eyebrow_left[][3] = {\n    { -57, 339, 377 },  { -17, 294, 356 },  { -45, 341, 383 },  { -45, 330, 354 },  { -73, 355, 342 },\n    { -52, 377, 349 },  { -139, 394, 353 }, { -123, 402, 319 }, { -161, 393, 306 }, { -233, 276, 289 },\n    { -204, 314, 297 }, { -214, 324, 318 }, { -29, 335, 363 },  { -231, 330, 311 }, { -230, 323, 286 },\n    { -86, 366, 370 },  { -124, 360, 323 }, { -139, 377, 353 }, { -193, 353, 331 }, { -62, 370, 378 },\n    { -85, 399, 334 },  { -209, 361, 291 }, { -171, 380, 339 }, { -175, 342, 305 }, { -105, 391, 363 },\n    { -212, 358, 323 },\n};\n\nstatic struct GdVtxData vtx_mario_eyebrow_left = { ARRAY_COUNT(verts_mario_eyebrow_left), 0x1, verts_mario_eyebrow_left };\n\nstatic u16 facedata_mario_eyebrow_left[][4] = {\n    { 0, 0, 1, 2 },    { 0, 8, 22, 6 },   { 0, 6, 7, 8 },    { 0, 9, 10, 11 },  { 0, 1, 12, 2 },\n    { 0, 9, 13, 14 },  { 0, 4, 0, 15 },   { 0, 16, 17, 18 }, { 0, 19, 5, 20 },  { 0, 21, 14, 13 },\n    { 0, 2, 12, 5 },   { 0, 22, 8, 21 },  { 0, 3, 1, 0 },    { 0, 23, 18, 11 }, { 0, 16, 15, 17 },\n    { 0, 24, 20, 7 },  { 0, 13, 9, 11 },  { 0, 15, 0, 19 },  { 0, 17, 15, 24 }, { 0, 17, 24, 6 },\n    { 0, 17, 6, 22 },  { 0, 18, 22, 25 }, { 0, 11, 18, 25 }, { 0, 4, 3, 0 },    { 0, 18, 23, 16 },\n    { 0, 20, 24, 19 }, { 0, 13, 25, 21 }, { 0, 5, 19, 2 },   { 0, 21, 25, 22 }, { 0, 11, 10, 23 },\n    { 0, 18, 17, 22 }, { 0, 15, 19, 24 }, { 0, 16, 4, 15 },  { 0, 7, 6, 24 },   { 0, 0, 2, 19 },\n    { 0, 25, 13, 11 },\n};\n\nstatic struct GdFaceData faces_mario_eyebrow_left = { ARRAY_COUNT(facedata_mario_eyebrow_left), 0x1, facedata_mario_eyebrow_left };\n\nstruct DynList dynlist_mario_eyebrow_left_shape[] = {\n    BeginList(),\n\n    MakeDynObj(D_DATA_GRP, DYNOBJ_MARIO_LEFT_EYEBROW_VTX_GROUP),\n        LinkWithPtr(&vtx_mario_eyebrow_left),\n\n    MakeDynObj(D_DATA_GRP, DYNOBJ_MARIO_LEFT_EYEBROW_TRI_GROUP),\n        LinkWithPtr(&faces_mario_eyebrow_left),\n\n    StartGroup(DYNOBJ_MARIO_LEFT_EYEBROW_MTL_GROUP),\n        MakeDynObj(D_MATERIAL, 0),\n            SetId(0),\n            SetAmbient(0.0, 0.0, 0.0),\n            SetDiffuse(0.0, 0.0, 0.0),\n    EndGroup(DYNOBJ_MARIO_LEFT_EYEBROW_MTL_GROUP),\n\n    MakeDynObj(D_SHAPE, DYNOBJ_MARIO_LEFT_EYEBROW_SHAPE),\n        SetNodeGroup(DYNOBJ_MARIO_LEFT_EYEBROW_VTX_GROUP),\n        SetPlaneGroup(DYNOBJ_MARIO_LEFT_EYEBROW_TRI_GROUP),\n        SetMaterialGroup(DYNOBJ_MARIO_LEFT_EYEBROW_MTL_GROUP),\n\n    EndList(),\n};\n\nstatic s16 verts_mario_mustache[][3] = {\n    { -202, 15, 400 },   { -295, -13, 358 },  { -287, -45, 362 },  { 229, -89, 385 },\n    { 214, -126, 385 },  { 221, -131, 360 },  { -266, 73, 363 },   { -202, 15, 375 },\n    { -154, -160, 372 }, { -154, -148, 397 }, { -191, -150, 387 }, { 276, -74, 345 },\n    { 287, -45, 362 },   { 276, -74, 370 },   { -221, -131, 360 }, { -214, -126, 385 },\n    { -229, -89, 385 },  { -298, -45, 337 },  { 293, 20, 357 },    { 295, -13, 358 },\n    { 307, -13, 333 },   { 202, 15, 400 },    { 266, 73, 363 },    { 202, 15, 375 },\n    { -95, -25, 457 },   { 95, -25, 457 },    { -95, -25, 406 },   { 95, -25, 406 },\n    { 154, -148, 397 },  { 110, -178, 416 },  { 121, -188, 384 },  { 266, 88, 338 },\n    { -293, 20, 357 },   { -266, 88, 338 },   { -276, -74, 370 },  { -239, -95, 359 },\n    { 197, -155, 362 },  { 191, -150, 387 },  { -68, -181, 427 },  { -110, -178, 416 },\n    { -75, -191, 396 },  { -4, -157, 406 },   { 4, -157, 406 },    { -4, -157, 444 },\n    { -197, -155, 362 }, { 154, -160, 372 },  { 239, -95, 359 },   { 298, -45, 337 },\n    { -307, -13, 333 },  { -276, -74, 345 },  { 68, -181, 427 },   { 4, -157, 444 },\n    { -121, -188, 384 }, { 75, -191, 396 },   { 304, 20, 332 },    { -304, 20, 332 },\n};\n\nstatic struct GdVtxData vtx_mario_mustache = { ARRAY_COUNT(verts_mario_mustache), 0x1, verts_mario_mustache };\n\nstatic u16 facedata_mario_mustache[][4] = {\n    { 0, 0, 1, 2 },    { 0, 3, 4, 5 },    { 0, 3, 5, 46 },   { 0, 6, 0, 7 },    { 0, 6, 7, 33 },\n    { 0, 8, 9, 10 },   { 0, 8, 10, 44 },  { 0, 11, 47, 12 }, { 0, 11, 12, 13 }, { 0, 14, 15, 16 },\n    { 0, 14, 16, 35 }, { 0, 2, 1, 48 },   { 0, 2, 48, 17 },  { 0, 18, 19, 20 }, { 0, 18, 20, 54 },\n    { 0, 21, 22, 31 }, { 0, 21, 31, 23 }, { 0, 24, 25, 27 }, { 0, 24, 27, 26 }, { 0, 27, 25, 21 },\n    { 0, 27, 21, 23 }, { 0, 0, 24, 26 },  { 0, 0, 26, 7 },   { 0, 28, 29, 30 }, { 0, 28, 30, 45 },\n    { 0, 31, 22, 18 }, { 0, 31, 18, 54 }, { 0, 32, 6, 33 },  { 0, 32, 33, 55 }, { 0, 16, 34, 49 },\n    { 0, 16, 49, 35 }, { 0, 36, 5, 4 },   { 0, 36, 4, 37 },  { 0, 38, 39, 52 }, { 0, 38, 52, 40 },\n    { 0, 41, 42, 51 }, { 0, 41, 51, 43 }, { 0, 10, 15, 14 }, { 0, 10, 14, 44 }, { 0, 37, 28, 45 },\n    { 0, 37, 45, 36 }, { 0, 35, 7, 26 },  { 0, 13, 3, 46 },  { 0, 13, 46, 11 }, { 0, 19, 12, 47 },\n    { 0, 19, 47, 20 }, { 0, 1, 32, 55 },  { 0, 1, 55, 48 },  { 0, 34, 2, 17 },  { 0, 34, 17, 49 },\n    { 0, 43, 38, 40 }, { 0, 43, 40, 41 }, { 0, 42, 53, 50 }, { 0, 42, 50, 51 }, { 0, 39, 9, 8 },\n    { 0, 39, 8, 52 },  { 0, 29, 50, 53 }, { 0, 29, 53, 30 }, { 0, 51, 50, 25 }, { 0, 43, 51, 25 },\n    { 0, 43, 25, 24 }, { 0, 29, 28, 25 }, { 0, 3, 13, 12 },  { 0, 3, 12, 21 },  { 0, 3, 21, 25 },\n    { 0, 50, 29, 25 }, { 0, 25, 37, 4 },  { 0, 25, 28, 37 }, { 0, 25, 4, 3 },   { 0, 9, 39, 24 },\n    { 0, 16, 15, 24 }, { 0, 39, 38, 24 }, { 0, 38, 43, 24 }, { 0, 10, 9, 24 },  { 0, 24, 0, 16 },\n    { 0, 15, 10, 24 }, { 0, 8, 44, 14 },  { 0, 18, 22, 21 }, { 0, 19, 18, 21 }, { 0, 12, 19, 21 },\n    { 0, 0, 6, 32 },   { 0, 0, 32, 1 },   { 0, 2, 34, 16 },  { 0, 2, 16, 0 },   { 0, 23, 11, 46 },\n    { 0, 8, 14, 35 },  { 0, 23, 31, 54 }, { 0, 46, 27, 23 }, { 0, 8, 35, 26 },  { 0, 27, 46, 45 },\n    { 0, 54, 20, 47 }, { 0, 54, 47, 11 }, { 0, 55, 33, 7 },  { 0, 7, 49, 55 },  { 0, 49, 17, 55 },\n    { 0, 17, 48, 55 }, { 0, 35, 49, 7 },  { 0, 54, 11, 23 }, { 0, 46, 5, 45 },  { 0, 5, 36, 45 },\n};\n\nstatic struct GdFaceData faces_mario_mustache = { ARRAY_COUNT(facedata_mario_mustache), 0x1, facedata_mario_mustache };\n\nstruct DynList dynlist_mario_mustache_shape[] = {\n    BeginList(),\n\n    MakeDynObj(D_DATA_GRP, DYNOBJ_MARIO_MUSTACHE_VTX_GROUP),\n        LinkWithPtr(&vtx_mario_mustache),\n\n    MakeDynObj(D_DATA_GRP, DYNOBJ_MARIO_MUSTACHE_TRI_GROUP),\n        LinkWithPtr(&faces_mario_mustache),\n\n    StartGroup(DYNOBJ_MARIO_MUSTACHE_MTL_GROUP),\n        MakeDynObj(D_MATERIAL, 0),\n            SetId(0),\n            SetAmbient(0.0, 0.0, 0.0),\n            SetDiffuse(0.0, 0.0, 0.0),\n    EndGroup(DYNOBJ_MARIO_MUSTACHE_MTL_GROUP),\n\n    MakeDynObj(D_SHAPE, DYNOBJ_MARIO_MUSTACHE_SHAPE),\n        SetNodeGroup(DYNOBJ_MARIO_MUSTACHE_VTX_GROUP),\n        SetPlaneGroup(DYNOBJ_MARIO_MUSTACHE_TRI_GROUP),\n        SetMaterialGroup(DYNOBJ_MARIO_MUSTACHE_MTL_GROUP),\n\n    EndList(),\n};\n"
  },
  {
    "path": "src/goddard/dynlists/dynlists_mario_eyes.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"macros.h\"\n#include \"dynlist_macros.h\"\n#include \"dynlists.h\"\n#include \"../dynlist_proc.h\"\n\nstatic s16 verts_mario_eye_right[][3] = {\n    { 306, 26, 83 },   { 318, 18, 81 },   { 312, -13, 94 },  { 308, 43, 53 },   { 320, 35, 50 },\n    { 308, 47, 12 },   { 320, 39, 9 },    { 316, 31, -30 },  { 304, 39, -27 },  { 311, 11, -58 },\n    { 299, 19, -55 },  { 304, -21, -66 }, { 287, -46, -51 }, { 299, -54, -53 }, { 285, -64, -20 },\n    { 297, -72, -23 }, { 286, -69, 20 },  { 299, -76, 17 },  { 301, -68, 57 },  { 289, -60, 60 },\n    { 305, -47, 85 },  { 294, -40, 88 },  { 315, -35, 13 },  { 316, -33, 21 },  { 317, -28, 25 },\n    { 293, -14, -64 }, { 316, -17, 67 },  { 312, -37, 61 },  { 310, -50, 44 },  { 307, -53, -14 },\n    { 308, -42, -33 }, { 311, -22, -41 }, { 315, -2, -36 },  { 319, 10, -18 },  { 322, 13, 39 },\n    { 320, 2, 59 },    { 318, -20, 29 },  { 308, -57, 15 },  { 315, -34, 4 },   { 315, -30, 0 },\n    { 316, -22, -4 },  { 318, -14, -1 },  { 319, -9, 2 },    { 322, 16, 10 },   { 320, -8, 20 },\n    { 319, -13, 24 },  { 320, -7, 11 },   { 301, -6, 96 },\n};\n\nstatic struct GdVtxData vtx_mario_eye_right = { ARRAY_COUNT(verts_mario_eye_right), 0x1, verts_mario_eye_right };\n\nstatic u16 facedata_mario_eye_right[][4] = {\n    { 1, 2, 1, 0 },    { 1, 1, 4, 3 },    { 1, 4, 6, 5 },    { 1, 6, 7, 5 },    { 1, 7, 9, 8 },\n    { 1, 9, 11, 10 },  { 1, 11, 13, 12 }, { 1, 13, 15, 14 }, { 1, 15, 17, 16 }, { 1, 17, 18, 16 },\n    { 1, 18, 20, 19 }, { 1, 20, 2, 21 },  { 1, 0, 47, 2 },   { 1, 2, 26, 1 },   { 1, 20, 26, 2 },\n    { 1, 18, 27, 20 }, { 1, 17, 28, 18 }, { 1, 15, 29, 17 }, { 1, 13, 30, 15 }, { 1, 11, 31, 13 },\n    { 1, 9, 31, 11 },  { 1, 7, 32, 9 },   { 1, 6, 33, 7 },   { 1, 4, 34, 6 },   { 1, 1, 35, 4 },\n    { 1, 35, 34, 4 },  { 1, 34, 43, 6 },  { 1, 6, 43, 33 },  { 1, 7, 33, 32 },  { 1, 9, 32, 31 },\n    { 1, 31, 30, 13 }, { 1, 30, 29, 15 }, { 1, 29, 37, 17 }, { 1, 17, 37, 28 }, { 1, 18, 28, 27 },\n    { 1, 20, 27, 26 }, { 1, 26, 35, 1 },  { 1, 3, 0, 1 },    { 1, 5, 3, 4 },    { 1, 7, 8, 5 },\n    { 1, 9, 10, 8 },   { 1, 11, 25, 10 }, { 1, 12, 25, 11 }, { 1, 14, 12, 13 }, { 1, 16, 14, 15 },\n    { 1, 18, 19, 16 }, { 1, 2, 47, 21 },  { 1, 20, 21, 19 }, { 2, 26, 36, 35 }, { 2, 27, 36, 26 },\n    { 2, 28, 24, 27 }, { 2, 37, 23, 28 }, { 2, 29, 38, 37 }, { 2, 30, 39, 29 }, { 2, 31, 40, 30 },\n    { 2, 32, 40, 31 }, { 2, 33, 41, 32 }, { 2, 43, 42, 33 }, { 2, 34, 44, 43 }, { 2, 35, 45, 34 },\n    { 2, 45, 44, 34 }, { 2, 44, 46, 43 }, { 2, 43, 46, 42 }, { 2, 33, 42, 41 }, { 2, 32, 41, 40 },\n    { 2, 40, 39, 30 }, { 2, 39, 38, 29 }, { 2, 38, 22, 37 }, { 2, 37, 22, 23 }, { 2, 28, 23, 24 },\n    { 2, 27, 24, 36 }, { 2, 36, 45, 35 }, { 3, 24, 23, 22 }, { 3, 22, 36, 24 }, { 3, 22, 38, 36 },\n    { 3, 38, 39, 36 }, { 3, 39, 40, 36 }, { 3, 40, 41, 36 }, { 3, 41, 45, 36 }, { 3, 41, 42, 45 },\n    { 3, 42, 46, 45 }, { 3, 46, 44, 45 },\n};\n\nstatic struct GdFaceData faces_mario_eye_right = { ARRAY_COUNT(facedata_mario_eye_right), 0x1, facedata_mario_eye_right };\n\nstruct DynList dynlist_mario_eye_right_shape[] = {\n    BeginList(),\n\n    MakeDynObj(D_DATA_GRP, DYNOBJ_MARIO_RIGHT_EYE_VTX_GROUP),\n        LinkWithPtr(&vtx_mario_eye_right),\n\n    MakeDynObj(D_DATA_GRP, DYNOBJ_MARIO_RIGHT_EYE_TRI_GROUP),\n        LinkWithPtr(&faces_mario_eye_right),\n\n    StartGroup(DYNOBJ_MARIO_RIGHT_EYE_MTL_GROUP),\n        // ???\n        MakeDynObj(D_MATERIAL, 0),\n            SetId(0),\n            SetAmbient(0.0, 0.291, 1.0),\n            SetDiffuse(0.0, 0.291, 1.0),\n        // Iris color\n        MakeDynObj(D_MATERIAL, 0),\n            SetId(1),\n            SetAmbient(0.0, 0.576, 1.0),\n            SetDiffuse(0.0, 0.576, 1.0),\n        // Pupil color\n        MakeDynObj(D_MATERIAL, 0),\n            SetId(2),\n            SetAmbient(0.0, 0.0, 0.0),\n            SetDiffuse(0.0, 0.0, 0.0),\n        // Color of spot in the middle of pupil\n        MakeDynObj(D_MATERIAL, 0),\n            SetId(3),\n            SetAmbient(1.0, 1.0, 1.0),\n            SetDiffuse(1.0, 1.0, 1.0),\n    EndGroup(DYNOBJ_MARIO_RIGHT_EYE_MTL_GROUP),\n\n    MakeDynObj(D_SHAPE, DYNOBJ_MARIO_RIGHT_EYE_SHAPE),\n        SetNodeGroup(DYNOBJ_MARIO_RIGHT_EYE_VTX_GROUP),\n        SetPlaneGroup(DYNOBJ_MARIO_RIGHT_EYE_TRI_GROUP),\n        SetMaterialGroup(DYNOBJ_MARIO_RIGHT_EYE_MTL_GROUP),\n\n    EndList(),\n};\n\nstatic s16 verts_mario_eye_left[][3] = {\n    { 302, 35, -81 },  { 316, 28, -79 },  { 311, -2, -97 },  { 304, 48, -48 },  { 318, 40, -46 },\n    { 302, 46, -7 },   { 316, 38, -5 },   { 311, 24, 32 },   { 297, 32, 30 },   { 305, 0, 56 },\n    { 291, 7, 55 },    { 298, -34, 60 },  { 280, -57, 40 },  { 294, -64, 42 },  { 279, -70, 7 },\n    { 294, -78, 9 },   { 282, -68, -33 }, { 296, -76, -31 }, { 300, -62, -69 }, { 286, -54, -71 },\n    { 305, -37, -94 }, { 291, -29, -96 }, { 314, -35, -20 }, { 315, -32, -28 }, { 316, -27, -32 },\n    { 285, -26, 58 },  { 316, -9, -71 },  { 312, -30, -69 }, { 310, -46, -53 }, { 305, -58, 3 },\n    { 305, -49, 24 },  { 307, -30, 35 },  { 311, -10, 33 },  { 316, 4, 17 },    { 321, 16, -39 },\n    { 319, 8, -60 },   { 318, -18, -34 }, { 307, -56, -25 }, { 313, -35, -11 }, { 314, -32, -6 },\n    { 315, -25, 0 },   { 316, -17, -3 },  { 318, -11, -6 },  { 320, 14, -9 },   { 319, -8, -23 },\n    { 319, -11, -28 }, { 319, -8, -14 },  { 297, 5, -99 },\n};\n\nstatic struct GdVtxData vtx_mario_eye_left = { ARRAY_COUNT(verts_mario_eye_left), 0x1, verts_mario_eye_left };\n\nstatic u16 facedata_mario_eye_left[][4] = {\n    { 1, 0, 1, 2 },    { 1, 3, 4, 1 },    { 1, 5, 6, 4 },    { 1, 5, 7, 6 },    { 1, 8, 9, 7 },\n    { 1, 10, 11, 9 },  { 1, 12, 13, 11 }, { 1, 14, 15, 13 }, { 1, 16, 17, 15 }, { 1, 16, 18, 17 },\n    { 1, 19, 20, 18 }, { 1, 21, 2, 20 },  { 1, 2, 47, 0 },   { 1, 1, 26, 2 },   { 1, 2, 26, 20 },\n    { 1, 20, 27, 18 }, { 1, 18, 28, 17 }, { 1, 17, 29, 15 }, { 1, 15, 30, 13 }, { 1, 13, 31, 11 },\n    { 1, 11, 31, 9 },  { 1, 9, 32, 7 },   { 1, 7, 33, 6 },   { 1, 6, 34, 4 },   { 1, 4, 35, 1 },\n    { 1, 4, 34, 35 },  { 1, 6, 43, 34 },  { 1, 33, 43, 6 },  { 1, 32, 33, 7 },  { 1, 31, 32, 9 },\n    { 1, 13, 30, 31 }, { 1, 15, 29, 30 }, { 1, 17, 37, 29 }, { 1, 28, 37, 17 }, { 1, 27, 28, 18 },\n    { 1, 26, 27, 20 }, { 1, 1, 35, 26 },  { 1, 1, 0, 3 },    { 1, 4, 3, 5 },    { 1, 5, 8, 7 },\n    { 1, 8, 10, 9 },   { 1, 10, 25, 11 }, { 1, 11, 25, 12 }, { 1, 13, 12, 14 }, { 1, 15, 14, 16 },\n    { 1, 16, 19, 18 }, { 1, 21, 47, 2 },  { 1, 19, 21, 20 }, { 2, 35, 36, 26 }, { 2, 26, 36, 27 },\n    { 2, 27, 24, 28 }, { 2, 28, 23, 37 }, { 2, 37, 38, 29 }, { 2, 29, 39, 30 }, { 2, 30, 40, 31 },\n    { 2, 31, 40, 32 }, { 2, 32, 41, 33 }, { 2, 33, 42, 43 }, { 2, 43, 44, 34 }, { 2, 34, 45, 35 },\n    { 2, 34, 44, 45 }, { 2, 43, 46, 44 }, { 2, 42, 46, 43 }, { 2, 41, 42, 33 }, { 2, 40, 41, 32 },\n    { 2, 30, 39, 40 }, { 2, 29, 38, 39 }, { 2, 37, 22, 38 }, { 2, 23, 22, 37 }, { 2, 24, 23, 28 },\n    { 2, 36, 24, 27 }, { 2, 35, 45, 36 }, { 3, 22, 23, 24 }, { 3, 24, 36, 22 }, { 3, 36, 38, 22 },\n    { 3, 36, 39, 38 }, { 3, 36, 40, 39 }, { 3, 36, 41, 40 }, { 3, 36, 45, 41 }, { 3, 45, 42, 41 },\n    { 3, 45, 46, 42 }, { 3, 45, 44, 46 },\n};\n\nstatic struct GdFaceData faces_mario_eye_left = { ARRAY_COUNT(facedata_mario_eye_left), 0x1, facedata_mario_eye_left };\n\nstruct DynList dynlist_mario_eye_left_shape[28] = {\n    BeginList(),\n\n    MakeDynObj(D_DATA_GRP, DYNOBJ_MARIO_LEFT_EYE_VTX_GROUP),\n        LinkWithPtr(&vtx_mario_eye_left),\n\n    MakeDynObj(D_DATA_GRP, DYNOBJ_MARIO_LEFT_EYE_TRI_GROUP),\n        LinkWithPtr(&faces_mario_eye_left),\n\n    StartGroup(DYNOBJ_MARIO_LEFT_EYE_MTL_GROUP),\n        // ???\n        MakeDynObj(D_MATERIAL, 0),\n            SetId(0),\n            SetAmbient(0.0, 0.291, 1.0),\n            SetDiffuse(0.0, 0.291, 1.0),\n        // Iris color\n        MakeDynObj(D_MATERIAL, 0),\n            SetId(1),\n            SetAmbient(0.0, 0.576, 1.0),\n            SetDiffuse(0.0, 0.576, 1.0),\n        // Pupil color\n        MakeDynObj(D_MATERIAL, 0),\n            SetId(2),\n            SetAmbient(0.0, 0.0, 0.0),\n            SetDiffuse(0.0, 0.0, 0.0),\n        // Color of spot in the middle of pupil\n        MakeDynObj(D_MATERIAL, 0),\n            SetId(3),\n            SetAmbient(1.0, 1.0, 1.0),\n            SetDiffuse(1.0, 1.0, 1.0),\n    EndGroup(DYNOBJ_MARIO_LEFT_EYE_MTL_GROUP),\n\n    MakeDynObj(D_SHAPE, DYNOBJ_MARIO_LEFT_EYE_SHAPE),\n        SetNodeGroup(DYNOBJ_MARIO_LEFT_EYE_VTX_GROUP),\n        SetPlaneGroup(DYNOBJ_MARIO_LEFT_EYE_TRI_GROUP),\n        SetMaterialGroup(DYNOBJ_MARIO_LEFT_EYE_MTL_GROUP),\n\n    EndList(),\n};\n"
  },
  {
    "path": "src/goddard/gd_macros.h",
    "content": "#ifndef GD_MACROS_H\n#define GD_MACROS_H\n\n/**\n * @file gd_macros.h\n *\n * Common macros that Goddard used throughout the Mario Head subsytem code.\n */\n\n#define DEG_PER_RAD 57.29577950560105\n#define RAD_PER_DEG (1.0 / DEG_PER_RAD)\n\n#define ABS(val) (((val) < 0 ? (-(val)) : (val)))\n#define SQ(val) ((val) * (val))\n#define ALIGN(VAL_, ALIGNMENT_) (((VAL_) + ((ALIGNMENT_) - 1)) & ~((ALIGNMENT_) - 1))\n\n#endif // GD_MACROS_H\n"
  },
  {
    "path": "src/goddard/gd_main.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"debug_utils.h\"\n#include \"gd_main.h\"\n#include \"gd_memory.h\"\n#include \"macros.h\"\n#include \"objects.h\"\n#include \"renderer.h\"\n\n/* This file was spilt out of debug_memory.asm based on rodata.\n * The rodata for functions after this \"__main__\" function have string literals following\n * f32 literal, which implies that this is its own file\n */\n\n// data\ns32 gGdMoveScene = TRUE; // @ 801A8050\nUNUSED static s32 sUnref801A8054 = TRUE;\nf32 D_801A8058 = -600.0f;\ns32 gGdUseVtxNormal = TRUE; // @ 801A805C; instead of face normals\nUNUSED static s32 sUnrefScnWidth = 320;\nUNUSED static s32 sUnrefScnHeight = 240;\n\n// bss\nstruct GdControl gGdCtrl;     // @ 801B9920; processed controller info\nstruct GdControl gGdCtrlPrev; // @ 801B9A18; previous frame's controller info\n\n/**\n * Unused main function possibly from when this was a standalone demo\n */\nu32 __main__(void) {\n    UNUSED u8 filler[4];\n\n    gd_printf(\"%x, %x\\n\", (u32) (uintptr_t) &D_801A8058, (u32) (uintptr_t) &gGdMoveScene);\n    imin(\"main\");\n    gd_init();\n\n    gGdCtrl.unk88 = 0.46799f;\n    gGdCtrl.unkA0 = -34.0f;\n    gGdCtrl.unkAC = 34.0f;\n    gGdCtrl.unk00 = 2;\n    gGdCtrl.newStartPress = FALSE;\n    gGdCtrl.prevFrame = &gGdCtrlPrev;\n\n    imin(\"main - make_scene\");\n    make_scene();  // make_scene does nothing, though\n    imout();\n\n    gd_init_controllers();\n    print_all_memtrackers();\n\n    start_timer(\"dlgen\");\n    stop_timer(\"dlgen\");\n    mem_stats();\n\n    while (TRUE) {\n        func_801A520C();\n    }\n\n    imout();\n    return 0;\n}\n"
  },
  {
    "path": "src/goddard/gd_main.h",
    "content": "#ifndef GD_MAIN_H\n#define GD_MAIN_H\n\n#include <PR/ultratypes.h>\n\n// In various files of the Goddard subsystem, there are miscellaneous\n// unused rodata strings. These are likely byproducts of a printf macro\n// that was stubbed out as \"#define printf\", letting printf calls expand\n// to no-op comma expressions. (IDO doesn't support variadic macros, so\n// \"#define printf(...) /* nothing */\" wasn't an option.)\n// This macro is separate from the gd_printf function; one probably\n// forwarded to the other, but it is hard to tell in which direction.\n#ifdef __GNUC__\n#define printf(...)                                       \\\n    _Pragma (\"GCC diagnostic push\")                       \\\n    _Pragma (\"GCC diagnostic ignored \\\"-Wunused-value\\\"\") \\\n    (__VA_ARGS__);                                        \\\n    _Pragma (\"GCC diagnostic pop\")\n#else\n#define printf\n#endif\n\n// structs\nstruct GdControl { // gGdCtrl\n    /* 0x00 */ s32 unk00;  // set but never used\n    /* 0x04 */ u8  filler1[4];\n    /* 0x08 */ s32 dleft; // Dpad-left (mask)\n    /* 0x0C */ s32 dright; // Dpad-right (mask)\n    /* 0x10 */ s32 dup; // Dpad-up (mask)\n    /* 0x14 */ s32 ddown; // Dpad-down (mask)\n    /* 0x18 */ s32 cleft; // bool C-left\n    /* 0x1C */ s32 cright; // bool C-right\n    /* 0x20 */ s32 cup; // bool C-up\n    /* 0x24 */ s32 cdown; // bool C-down\n    /* 0x28 */ void * unk28;     // null-checked ptr? symbol not deref-ed in extant code?\n    /* 0x2C */ void * unk2C;     // some sort of old texture ptr? symbol not deref-ed in extant code?\n    /* 0x30 */ void * unk30;     // null-checked ptr? symbol not deref-ed in extant code?\n    /* 0x34 */ s32 btnA; // bool A button\n    /* 0x38 */ s32 btnB; // bool B button\n    /* 0x3C */ u8  filler2[8];\n    /* 0x44 */ s32 trgL; // bool L trigger pressed\n    /* 0x48 */ s32 trgR; // bool R trigger pressed\n    /* 0x4C */ s32 unk4C;\n    /* 0x50 */ s32 unk50;\n    /* 0x54 */ s32 newStartPress; // toggle bit? start pressed?\n    /* 0x58 */ u8  filler3[36];\n    /* 0x7C */ f32 stickXf;\n    /* 0x80 */ f32 stickYf;\n    /* 0x84 */ u8  filler4[4];\n    /* 0x88 */ f32 unk88;  // set but never used\n    /* 0x8C */ u8  filler5[20];\n    /* 0xA0 */ f32 unkA0;  // set but never used\n    /* 0xA4 */ u8  filler6[8];\n    /* 0xAC */ f32 unkAC;\n    /* 0xB0 */ u8  filler7[8];\n    /* 0xB8 */ s32 dragStartX; // cursor x position when there was a new (A) press?\n    /* 0xBC */ s32 dragStartY; // cursor y position when there was a new (A) press?\n    /* 0xC0 */ s32 stickDeltaX;\n    /* 0xC4 */ s32 stickDeltaY;\n    /* 0xC8 */ s32 stickX;\n    /* 0xCC */ s32 stickY;\n    /* 0xD0 */ s32 csrX; // bounded by screen view\n    /* 0xD4 */ s32 csrY; // bounded by screen view\n    /* 0xD8 */ /* hand/cursor state bitfield? */\n        /* b80 */ u8 dragging : 1;  // bool (A) pressed\n        /* b40 */ u8 unkD8b40 : 1; // set to FALSE and unused\n        /* b20 */ u8 unkD8b20 : 1; // set to FALSE and unused\n        /* b10 */ u8 startedDragging : 1;  // bool new (A) press\n        /* b08 */ u8 unkD8b08 : 1;\n        /* b04 */ u8 unkD8b04 : 1;\n        /* b02 */ u8 AbtnPressWait : 1;  // bool 10 frames between (A) presses (cursor cool down?)\n    /* 0xDC */ u32 dragStartFrame; // first frame of new a press\n    /* 0xE0 */ u8  filler8[8];\n    /* 0xE8 */ u32 currFrame; // frame count?\n    /* 0xEC */ u8  filler9[4];\n    /* 0xF0 */ struct GdControl *prevFrame; // previous frame data\n};\n\n// data\nextern s32 gGdMoveScene;\nextern f32 D_801A8058;\nextern s32 gGdUseVtxNormal;\n\n// bss\nextern struct GdControl gGdCtrl;\nextern struct GdControl gGdCtrlPrev;\n\n#endif // GD_MAIN_H\n"
  },
  {
    "path": "src/goddard/gd_math.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"debug_utils.h\"\n#include \"gd_macros.h\"\n#include \"gd_main.h\"\n#include \"gd_math.h\"\n#include \"gd_types.h\"\n#include \"macros.h\"\n#include \"renderer.h\"\n\n/**\n * Finds the square root of a float by treating\n * it as a double and finding the square root from there.\n */\nf32 gd_sqrt_f(f32 val) {\n    return (f32) gd_sqrt_d(val);\n}\n\n/**\n * Set mtx to a look-at matrix for the camera. The resulting transformation\n * transforms the world as if there exists a camera at position 'from' pointed\n * at the position 'to'.\n * An effective goddard copy of mtxf_lookat.\n */\nvoid gd_mat4f_lookat(Mat4f *mtx, f32 xFrom, f32 yFrom, f32 zFrom, f32 xTo, f32 yTo, f32 zTo,\n                     f32 zColY, f32 yColY, f32 xColY) {\n    f32 invLength;\n\n    struct GdVec3f d;\n    struct GdVec3f colX;\n    struct GdVec3f norm;\n\n    // No reason to do this? mtx is set lower.\n    gd_set_identity_mat4(mtx);\n\n    d.z = xTo - xFrom;\n    d.y = yTo - yFrom;\n    d.x = zTo - zFrom;\n\n    invLength = ABS(d.z) + ABS(d.y) + ABS(d.x);\n\n    // Scales 'd' if smaller than 10 or larger than 10,000 to be\n    // of a magnitude of 10,000.\n    if (invLength > 10000.0f || invLength < 10.0f) {\n        norm.x = d.z;\n        norm.y = d.y;\n        norm.z = d.x;\n        gd_normalize_vec3f(&norm);\n        norm.x *= 10000.0f;\n        norm.y *= 10000.0f;\n        norm.z *= 10000.0f;\n\n        d.z = norm.x;\n        d.y = norm.y;\n        d.x = norm.z;\n    }\n\n    invLength = -1.0 / gd_sqrt_f(SQ(d.z) + SQ(d.y) + SQ(d.x));\n    d.z *= invLength;\n    d.y *= invLength;\n    d.x *= invLength;\n\n    colX.z = yColY * d.x - xColY * d.y;\n    colX.y = xColY * d.z - zColY * d.x;\n    colX.x = zColY * d.y - yColY * d.z;\n\n    invLength = 1.0 / gd_sqrt_f(SQ(colX.z) + SQ(colX.y) + SQ(colX.x));\n\n    colX.z *= invLength;\n    colX.y *= invLength;\n    colX.x *= invLength;\n\n    zColY = d.y * colX.x - d.x * colX.y;\n    yColY = d.x * colX.z - d.z * colX.x;\n    xColY = d.z * colX.y - d.y * colX.z;\n\n    invLength = 1.0 / gd_sqrt_f(SQ(zColY) + SQ(yColY) + SQ(xColY));\n\n    zColY *= invLength;\n    yColY *= invLength;\n    xColY *= invLength;\n\n    (*mtx)[0][0] = colX.z;\n    (*mtx)[1][0] = colX.y;\n    (*mtx)[2][0] = colX.x;\n    (*mtx)[3][0] = -(xFrom * colX.z + yFrom * colX.y + zFrom * colX.x);\n\n    (*mtx)[0][1] = zColY;\n    (*mtx)[1][1] = yColY;\n    (*mtx)[2][1] = xColY;\n    (*mtx)[3][1] = -(xFrom * zColY + yFrom * yColY + zFrom * xColY);\n\n    (*mtx)[0][2] = d.z;\n    (*mtx)[1][2] = d.y;\n    (*mtx)[2][2] = d.x;\n    (*mtx)[3][2] = -(xFrom * d.z + yFrom * d.y + zFrom * d.x);\n\n    (*mtx)[0][3] = 0.0f;\n    (*mtx)[1][3] = 0.0f;\n    (*mtx)[2][3] = 0.0f;\n    (*mtx)[3][3] = 1.0f;\n}\n\n/**\n * Scales a mat4f in each dimension by a vector.\n */\nvoid gd_scale_mat4f_by_vec3f(Mat4f *mtx, struct GdVec3f *vec) {\n    (*mtx)[0][0] *= vec->x;\n    (*mtx)[0][1] *= vec->x;\n    (*mtx)[0][2] *= vec->x;\n    (*mtx)[1][0] *= vec->y;\n    (*mtx)[1][1] *= vec->y;\n    (*mtx)[1][2] *= vec->y;\n    (*mtx)[2][0] *= vec->z;\n    (*mtx)[2][1] *= vec->z;\n    (*mtx)[2][2] *= vec->z;\n}\n\n/**\n * Rotates the matrix 'mtx' about the vector given.\n */\nvoid gd_rot_mat_about_vec(Mat4f *mtx, struct GdVec3f *vec) {\n    if (vec->x != 0.0f) {\n        gd_absrot_mat4(mtx, GD_X_AXIS, vec->x);\n    }\n    if (vec->y != 0.0f) {\n        gd_absrot_mat4(mtx, GD_Y_AXIS, vec->y);\n    }\n    if (vec->z != 0.0f) {\n        gd_absrot_mat4(mtx, GD_Z_AXIS, vec->z);\n    }\n}\n\n/**\n * Adds each component of a vector to the\n * translation column of a mat4f matrix.\n */\nvoid gd_add_vec3f_to_mat4f_offset(Mat4f *mtx, struct GdVec3f *vec) {\n    UNUSED Mat4f temp;\n    f32 z, y, x;\n\n    x = vec->x;\n    y = vec->y;\n    z = vec->z;\n\n    (*mtx)[3][0] += x;\n    (*mtx)[3][1] += y;\n    (*mtx)[3][2] += z;\n}\n\n/**\n * Creates a lookat matrix, but specifically from the perspective of the origin.\n * Rolls is only ever 0 in practice, and this is really only ever used once.\n *\n * Matrix has form-  | -(cz+sxy)/h sh  (cx-syz)/h 0 |\n *                   |  (sz-cxy)/h ch -(sx+cyz)/h 0 |\n *                   |     -x      -y     -z      0 |\n *                   |      0       0      0      1 |\n */\nvoid gd_create_origin_lookat(Mat4f *mtx, struct GdVec3f *vec, f32 roll) {\n    f32 invertedHMag;\n    f32 hMag;\n    f32 c;\n    f32 s;\n    f32 radPerDeg = RAD_PER_DEG;\n    struct GdVec3f unit;\n\n    unit.x = vec->x;\n    unit.y = vec->y;\n    unit.z = vec->z;\n\n    gd_normalize_vec3f(&unit);\n    hMag = gd_sqrt_f(SQ(unit.x) + SQ(unit.z));\n\n    roll *= radPerDeg; // convert roll from degrees to radians\n    s = gd_sin_d(roll);\n    c = gd_cos_d(roll);\n\n    gd_set_identity_mat4(mtx);\n    if (hMag != 0.0f) {\n        invertedHMag = 1.0f / hMag;\n        (*mtx)[0][0] = ((-unit.z * c) - (s * unit.y * unit.x)) * invertedHMag;\n        (*mtx)[1][0] = ((unit.z * s) - (c * unit.y * unit.x)) * invertedHMag;\n        (*mtx)[2][0] = -unit.x;\n        (*mtx)[3][0] = 0.0f;\n\n        (*mtx)[0][1] = s * hMag;\n        (*mtx)[1][1] = c * hMag;\n        (*mtx)[2][1] = -unit.y;\n        (*mtx)[3][1] = 0.0f;\n\n        (*mtx)[0][2] = ((c * unit.x) - (s * unit.y * unit.z)) * invertedHMag;\n        (*mtx)[1][2] = ((-s * unit.x) - (c * unit.y * unit.z)) * invertedHMag;\n        (*mtx)[2][2] = -unit.z;\n        (*mtx)[3][2] = 0.0f;\n\n        (*mtx)[0][3] = 0.0f;\n        (*mtx)[1][3] = 0.0f;\n        (*mtx)[2][3] = 0.0f;\n        (*mtx)[3][3] = 1.0f;\n    } else {\n        (*mtx)[0][0] = 0.0f;\n        (*mtx)[1][0] = 1.0f;\n        (*mtx)[2][0] = 0.0f;\n        (*mtx)[3][0] = 0.0f;\n\n        (*mtx)[0][1] = 0.0f;\n        (*mtx)[1][1] = 0.0f;\n        (*mtx)[2][1] = 1.0f;\n        (*mtx)[3][1] = 0.0f;\n\n        (*mtx)[0][2] = 1.0f;\n        (*mtx)[1][2] = 0.0f;\n        (*mtx)[2][2] = 0.0f;\n        (*mtx)[3][2] = 0.0f;\n\n        (*mtx)[0][3] = 0.0f;\n        (*mtx)[1][3] = 0.0f;\n        (*mtx)[2][3] = 0.0f;\n        (*mtx)[3][3] = 1.0f;\n    }\n}\n\n/**\n * Clamps a float within a set range about zero.\n */\nf32 gd_clamp_f32(f32 a, f32 b) {\n    if (b < a) {\n        a = b;\n    } else if (a < -b) {\n        a = -b;\n    }\n\n    return a;\n}\n\n/**\n * Clamps a vector within a set range about zero.\n */\nvoid gd_clamp_vec3f(struct GdVec3f *vec, f32 limit) {\n    if (vec->x > limit) {\n        vec->x = limit;\n    } else if (vec->x < -limit) {\n        vec->x = -limit;\n    }\n\n    if (vec->y > limit) {\n        vec->y = limit;\n    } else if (vec->y < -limit) {\n        vec->y = -limit;\n    }\n\n    if (vec->z > limit) {\n        vec->z = limit;\n    } else if (vec->z < -limit) {\n        vec->z = -limit;\n    }\n}\n\n/**\n * Rotates a 2D vector by some angle in degrees.\n */\nvoid gd_rot_2d_vec(f32 deg, f32 *x, f32 *y) {\n    f32 xP;\n    f32 yP;\n    f32 rad;\n\n    rad = deg / DEG_PER_RAD;\n    xP = (*x * gd_cos_d(rad)) - (*y * gd_sin_d(rad));\n    yP = (*x * gd_sin_d(rad)) + (*y * gd_cos_d(rad));\n    *x = xP;\n    *y = yP;\n}\n\n/**\n * Rotates a matrix about one of its rows.\n */\nvoid UNUSED gd_rot_mat_about_row(Mat4f *mat, s32 row, f32 ang) {\n    Mat4f rot;\n    struct GdVec3f vec;\n\n    vec.x = (*mat)[row][0];\n    vec.y = (*mat)[row][1];\n    vec.z = (*mat)[row][2];\n\n    gd_create_rot_mat_angular(&rot, &vec, ang / 2.0);\n    gd_mult_mat4f(mat, &rot, mat);\n}\n\n/**\n * Rotates a mat4f matrix about a given axis\n * by a set angle in degrees.\n */\nvoid gd_absrot_mat4(Mat4f *mtx, s32 axisnum, f32 ang) {\n    Mat4f rMat;\n    struct GdVec3f rot;\n\n    switch (axisnum) {\n        case GD_X_AXIS:\n            rot.x = 1.0f;\n            rot.y = 0.0f;\n            rot.z = 0.0f;\n            break;\n        case GD_Y_AXIS:\n            rot.x = 0.0f;\n            rot.y = 1.0f;\n            rot.z = 0.0f;\n            break;\n        case GD_Z_AXIS:\n            rot.x = 0.0f;\n            rot.y = 0.0f;\n            rot.z = 1.0f;\n            break;\n        default:\n            fatal_printf(\"absrot_matrix4(): Bad axis num\");\n    }\n\n    gd_create_rot_mat_angular(&rMat, &rot, ang / 2.0); //? 2.0f\n    gd_mult_mat4f(mtx, &rMat, mtx);\n}\n\n\nf32 gd_vec3f_magnitude(struct GdVec3f *vec) {\n    return gd_sqrt_f(SQ(vec->x) + SQ(vec->y) + SQ(vec->z));\n}\n\n/**\n * Normalizes a vec3f to have a length of 1.\n */\ns32 gd_normalize_vec3f(struct GdVec3f *vec) {\n    f32 mag;\n    if ((mag = SQ(vec->x) + SQ(vec->y) + SQ(vec->z)) == 0.0f) {\n        return FALSE;\n    }\n\n    mag = gd_sqrt_f(mag);\n    // gd_sqrt_f rounds near 0 numbers to 0, so verify again.\n    if (mag == 0.0f) {\n        vec->x = 0.0f;\n        vec->y = 0.0f;\n        vec->z = 0.0f;\n        return FALSE;\n    }\n\n    vec->x /= mag;\n    vec->y /= mag;\n    vec->z /= mag;\n\n    return TRUE;\n}\n\n/**\n * Stores the cross product of 'a' x 'b' in 'dst'.\n */\nvoid gd_cross_vec3f(struct GdVec3f *a, struct GdVec3f *b, struct GdVec3f *dst) {\n    struct GdVec3f result;\n\n    result.x = (a->y * b->z) - (a->z * b->y);\n    result.y = (a->z * b->x) - (a->x * b->z);\n    result.z = (a->x * b->y) - (a->y * b->x);\n\n    dst->x = result.x;\n    dst->y = result.y;\n    dst->z = result.z;\n}\n\n/**\n * Returns the dot product of 'a' and 'b'.\n */\nf32 gd_dot_vec3f(struct GdVec3f *a, struct GdVec3f *b) {\n    return (a->x * b->x) + (a->y * b->y) + (a->z * b->z);\n}\n\n/**\n * Inverts each element of src into dst.\n */\nvoid UNUSED gd_invert_elements_mat4f(Mat4f *src, Mat4f *dst) {\n    s32 i;\n    s32 j;\n\n    for (i = 0; i < 4; i++) {\n        for (j = 0; j < 4; j++) {\n            (*dst)[i][j] = 1.0f / (*src)[i][j];\n        }\n    }\n}\n\n/**\n * Inverts a matrix from src and stores it into dst.\n * Reaches a fatal_print if the determinant is 0.\n */\nvoid gd_inverse_mat4f(Mat4f *src, Mat4f *dst) {\n    s32 i;\n    s32 j;\n    f32 determinant;\n\n    gd_adjunct_mat4f(src, dst);\n    determinant = gd_mat4f_det(dst);\n\n    if (ABS(determinant) < 1e-5) { //? 1e-5f\n        fatal_print(\"Non-singular matrix, no inverse!\\n\");\n    }\n\n    for (i = 0; i < 4; i++) {\n        for (j = 0; j < 4; j++) {\n            (*dst)[i][j] /= determinant;\n        }\n    }\n}\n\n/**\n * Takes a matrix from src and converts it into its adjunct in dst.\n */\nvoid gd_adjunct_mat4f(Mat4f *src, Mat4f *dst) {\n    struct InvMat4 inv;\n\n    inv.r3.c3 = (*src)[0][0];\n    inv.r2.c3 = (*src)[0][1];\n    inv.r1.c3 = (*src)[0][2];\n    inv.r0.c3 = (*src)[0][3];\n    inv.r3.c2 = (*src)[1][0];\n    inv.r2.c2 = (*src)[1][1];\n    inv.r1.c2 = (*src)[1][2];\n    inv.r0.c2 = (*src)[1][3];\n    inv.r3.c1 = (*src)[2][0];\n    inv.r2.c1 = (*src)[2][1];\n    inv.r1.c1 = (*src)[2][2];\n    inv.r0.c1 = (*src)[2][3];\n    inv.r3.c0 = (*src)[3][0];\n    inv.r2.c0 = (*src)[3][1];\n    inv.r1.c0 = (*src)[3][2];\n    inv.r0.c0 = (*src)[3][3];\n\n    (*dst)[0][0] = gd_3x3_det(inv.r2.c2, inv.r2.c1, inv.r2.c0, inv.r1.c2, inv.r1.c1, inv.r1.c0,\n                                 inv.r0.c2, inv.r0.c1, inv.r0.c0);\n    (*dst)[1][0] = -gd_3x3_det(inv.r3.c2, inv.r3.c1, inv.r3.c0, inv.r1.c2, inv.r1.c1, inv.r1.c0,\n                                  inv.r0.c2, inv.r0.c1, inv.r0.c0);\n    (*dst)[2][0] = gd_3x3_det(inv.r3.c2, inv.r3.c1, inv.r3.c0, inv.r2.c2, inv.r2.c1, inv.r2.c0,\n                                 inv.r0.c2, inv.r0.c1, inv.r0.c0);\n    (*dst)[3][0] = -gd_3x3_det(inv.r3.c2, inv.r3.c1, inv.r3.c0, inv.r2.c2, inv.r2.c1, inv.r2.c0,\n                                  inv.r1.c2, inv.r1.c1, inv.r1.c0);\n    (*dst)[0][1] = -gd_3x3_det(inv.r2.c3, inv.r2.c1, inv.r2.c0, inv.r1.c3, inv.r1.c1, inv.r1.c0,\n                                  inv.r0.c3, inv.r0.c1, inv.r0.c0);\n    (*dst)[1][1] = gd_3x3_det(inv.r3.c3, inv.r3.c1, inv.r3.c0, inv.r1.c3, inv.r1.c1, inv.r1.c0,\n                                 inv.r0.c3, inv.r0.c1, inv.r0.c0);\n    (*dst)[2][1] = -gd_3x3_det(inv.r3.c3, inv.r3.c1, inv.r3.c0, inv.r2.c3, inv.r2.c1, inv.r2.c0,\n                                  inv.r0.c3, inv.r0.c1, inv.r0.c0);\n    (*dst)[3][1] = gd_3x3_det(inv.r3.c3, inv.r3.c1, inv.r3.c0, inv.r2.c3, inv.r2.c1, inv.r2.c0,\n                                 inv.r1.c3, inv.r1.c1, inv.r1.c0);\n    (*dst)[0][2] = gd_3x3_det(inv.r2.c3, inv.r2.c2, inv.r2.c0, inv.r1.c3, inv.r1.c2, inv.r1.c0,\n                                 inv.r0.c3, inv.r0.c2, inv.r0.c0);\n    (*dst)[1][2] = -gd_3x3_det(inv.r3.c3, inv.r3.c2, inv.r3.c0, inv.r1.c3, inv.r1.c2, inv.r1.c0,\n                                  inv.r0.c3, inv.r0.c2, inv.r0.c0);\n    (*dst)[2][2] = gd_3x3_det(inv.r3.c3, inv.r3.c2, inv.r3.c0, inv.r2.c3, inv.r2.c2, inv.r2.c0,\n                                 inv.r0.c3, inv.r0.c2, inv.r0.c0);\n    (*dst)[3][2] = -gd_3x3_det(inv.r3.c3, inv.r3.c2, inv.r3.c0, inv.r2.c3, inv.r2.c2, inv.r2.c0,\n                                  inv.r1.c3, inv.r1.c2, inv.r1.c0);\n    (*dst)[0][3] = -gd_3x3_det(inv.r2.c3, inv.r2.c2, inv.r2.c1, inv.r1.c3, inv.r1.c2, inv.r1.c1,\n                                  inv.r0.c3, inv.r0.c2, inv.r0.c1);\n    (*dst)[1][3] = gd_3x3_det(inv.r3.c3, inv.r3.c2, inv.r3.c1, inv.r1.c3, inv.r1.c2, inv.r1.c1,\n                                 inv.r0.c3, inv.r0.c2, inv.r0.c1);\n    (*dst)[2][3] = -gd_3x3_det(inv.r3.c3, inv.r3.c2, inv.r3.c1, inv.r2.c3, inv.r2.c2, inv.r2.c1,\n                                  inv.r0.c3, inv.r0.c2, inv.r0.c1);\n    (*dst)[3][3] = gd_3x3_det(inv.r3.c3, inv.r3.c2, inv.r3.c1, inv.r2.c3, inv.r2.c2, inv.r2.c1,\n                                 inv.r1.c3, inv.r1.c2, inv.r1.c1);\n}\n\n/**\n * Returns the determinant of a mat4f matrix.\n */\nf32 gd_mat4f_det(Mat4f *mtx) {\n    f32 det;\n    struct InvMat4 inv;\n\n    inv.r3.c3 = (*mtx)[0][0];\n    inv.r2.c3 = (*mtx)[0][1];\n    inv.r1.c3 = (*mtx)[0][2];\n    inv.r0.c3 = (*mtx)[0][3];\n    inv.r3.c2 = (*mtx)[1][0];\n    inv.r2.c2 = (*mtx)[1][1];\n    inv.r1.c2 = (*mtx)[1][2];\n    inv.r0.c2 = (*mtx)[1][3];\n    inv.r3.c1 = (*mtx)[2][0];\n    inv.r2.c1 = (*mtx)[2][1];\n    inv.r1.c1 = (*mtx)[2][2];\n    inv.r0.c1 = (*mtx)[2][3];\n    inv.r3.c0 = (*mtx)[3][0];\n    inv.r2.c0 = (*mtx)[3][1];\n    inv.r1.c0 = (*mtx)[3][2];\n    inv.r0.c0 = (*mtx)[3][3];\n\n    det = (inv.r3.c3\n                * gd_3x3_det(inv.r2.c2, inv.r2.c1, inv.r2.c0,\n                             inv.r1.c2, inv.r1.c1, inv.r1.c0,\n                             inv.r0.c2, inv.r0.c1, inv.r0.c0)\n           - inv.r2.c3\n                * gd_3x3_det(inv.r3.c2, inv.r3.c1, inv.r3.c0,\n                             inv.r1.c2, inv.r1.c1, inv.r1.c0,\n                             inv.r0.c2, inv.r0.c1, inv.r0.c0))\n          + inv.r1.c3\n                * gd_3x3_det(inv.r3.c2, inv.r3.c1, inv.r3.c0,\n                             inv.r2.c2, inv.r2.c1, inv.r2.c0,\n                             inv.r0.c2, inv.r0.c1, inv.r0.c0)\n          - inv.r0.c3\n                * gd_3x3_det(inv.r3.c2, inv.r3.c1, inv.r3.c0,\n                             inv.r2.c2, inv.r2.c1, inv.r2.c0,\n                             inv.r1.c2, inv.r1.c1, inv.r1.c0);\n\n    return det;\n}\n\n/**\n * Takes the individual values of a 3 by 3 matrix and\n * returns the determinant.\n */\nf32 gd_3x3_det(f32 r0c0, f32 r0c1, f32 r0c2,\n               f32 r1c0, f32 r1c1, f32 r1c2,\n               f32 r2c0, f32 r2c1, f32 r2c2) {\n    f32 det;\n\n    det = r0c0 * gd_2x2_det(r1c1, r1c2, r2c1, r2c2) - r1c0 * gd_2x2_det(r0c1, r0c2, r2c1, r2c2)\n          + r2c0 * gd_2x2_det(r0c1, r0c2, r1c1, r1c2);\n\n    return det;\n}\n\n/**\n * Takes the individual values of a 2 by 2 matrix and\n * returns the determinant.\n */\nf32 gd_2x2_det(f32 a, f32 b, f32 c, f32 d) {\n    f32 det = a * d - b * c;\n\n    return det;\n}\n\n/**\n * Creates a vector negative to what was passed in. Also sets the first row of a mat4f\n * to 1 0 0 0. Perhaps meant to be used at the end of gd_create_quat_rot_mat? Not\n * sure of the purpose of the vector portion, though.\n */\nvoid UNUSED gd_create_neg_vec_zero_first_mat_row(Mat4f *mtx, struct GdVec3f *vec, f32 x, f32 y, f32 z) {\n    s32 i;\n\n    vec->x = -x;\n    vec->y = -y;\n    vec->z = -z;\n\n    (*mtx)[0][0] = 1.0f;\n\n    for (i = 1; i < 4; i++) {\n        (*mtx)[0][i] = 0.0f;\n    }\n}\n\n/**\n * This function quite literally does nothing.\n * Seems to have been meant to create a vector from a quaternion?\n */\nvoid UNUSED gd_broken_quat_to_vec3f(f32 quat[4], struct GdVec3f *vec, f32 zHalf, s32 i, s32 run) {\n    s32 j;\n    s32 k;\n    UNUSED f32 jVal;\n    UNUSED f32 kVal;\n    UNUSED struct GdVec3f uVec;\n    struct GdVec3f tVec;\n\n    tVec.x = vec->x;\n    tVec.y = vec->y;\n    tVec.z = vec->z;\n\n    if (run < 0) {\n        goto end;\n    }\n\n    if ((j = i + 1) >= 4) {\n        j = 1;\n    }\n\n    if ((k = j + 1) >= 4) {\n        k = 1;\n    }\n\n    jVal = quat[j];\n    kVal = quat[k];\n    uVec.x = quat[0];\n    uVec.y = quat[i];\n    uVec.z = zHalf + zHalf;\n\nend:\n    vec->x = tVec.x;\n    vec->y = tVec.y;\n    vec->z = tVec.z;\n}\n\n/**\n * This function is a pitch rotation of a quaternion, with the sign allowing both regular\n * and inverse multiplication.\n */\nvoid UNUSED gd_quat_rotation(f32 quat[4], UNUSED s32 unused, f32 c, f32 s, s32 i, s32 sign) {\n    s32 j;\n    s32 k;\n    f32 quatVal;\n    UNUSED u8 filler[8];\n\n    if ((j = i + 1) >= 4) {\n        j = 1;\n    }\n    if ((k = j + 1) >= 4) {\n        k = 1;\n    }\n\n    quatVal = quat[i];\n    quat[i] = sign * s * quat[0] + quatVal * c;\n    quat[0] = quat[0] * c - sign * s * quatVal;\n\n    quatVal = quat[j];\n    quat[j] = quat[k] * s + quatVal * c;\n    quat[k] = quat[k] * c - s * quatVal;\n}\n\n/**\n * Shifts a matrix up by one row, putting the top row on bottom.\n */\nvoid gd_shift_mat_up(Mat4f *mtx) {\n    s32 i;\n    s32 j;\n    f32 temp[3];\n\n    for (i = 0; i < 3; i++) {\n        temp[i] = (*mtx)[0][i + 1];\n    }\n    for (i = 1; i < 4; i++) {\n        for (j = 1; j < 4; j++) {\n            (*mtx)[i - 1][j - 1] = (*mtx)[i][j];\n        }\n    }\n\n    (*mtx)[0][3] = 0.0f;\n    (*mtx)[1][3] = 0.0f;\n    (*mtx)[2][3] = 0.0f;\n    (*mtx)[3][3] = 1.0f;\n\n    for (i = 0; i < 3; i++) {\n        (*mtx)[3][i] = temp[i];\n    }\n}\n\n/**\n * Creates a rotation matrix from a quaternion.\n *\n * Has form-\n * | 1        -               -               -        |\n * | 0 w^2+i^2-j^2-k^2     2ij+2wk         2ik+2wj     |\n * | 0     2ij-2wk     w^2+j^2-i^2-k^2     2jk+2wi     |\n * | 0     2ik+2wj         2jk-2wi     w^2+k^2-i^2-j^2 |\n *\n * Potentially broken if 'mtx' is not an identity matrix/zero'ed.\n */\nvoid UNUSED gd_create_quat_rot_mat(f32 quat[4], UNUSED s32 unused, Mat4f *mtx) {\n    f32 twoIJ;\n    f32 two0K;\n    f32 sqQuat[4];\n    s32 i;\n    s32 j;\n    s32 k;\n\n    for (i = 0; i < 4; i++) {\n        sqQuat[i] = SQ(quat[i]);\n    }\n\n    for (i = 1; i < 4; i++) {\n        if ((j = i + 1) >= 4) {\n            j = 1;\n        }\n\n        if ((k = j + 1) >= 4) {\n            k = 1;\n        }\n\n        twoIJ = 2.0 * quat[i] * quat[j];\n        two0K = 2.0 * quat[k] * quat[0];\n\n        (*mtx)[j][i] = twoIJ - two0K;\n        (*mtx)[i][j] = twoIJ + two0K;\n        (*mtx)[i][i] = sqQuat[i] + sqQuat[0] - sqQuat[j] - sqQuat[k];\n        (*mtx)[i][0] = 0.0f;\n    }\n\n    //! The first row only ever has the first value set to 1, but the\n    //! latter portions remain what they were originally. Perhaps this was meant\n    //! to call gd_create_neg_vec_zero_first_mat_row?\n    (*mtx)[0][0] = 1.0f;\n    gd_shift_mat_up(mtx);\n}\n\n/**\n * Creates a rotation matrix to multiply the primary matrix by.\n * s/c are sin(angle)/cos(angle). That angular rotation is about vector\n * 'vec'.\n *\n * Matrix has form-\n *\n * | (1-c)z^2+c (1-c)zy-sx (1-c)xz-sy 0 |\n * | (1-c)zy-sx (1-c)y^2+c (1-c)xy-sz 0 |\n * | (1-c)xz-sy (1-c)xy-sz (1-c)x^2+c 0 |\n * |      0          0          0     1 |\n */\nvoid gd_create_rot_matrix(Mat4f *mtx, struct GdVec3f *vec, f32 s, f32 c) {\n    f32 oneMinusCos;\n    struct GdVec3f rev;\n\n    rev.z = vec->x;\n    rev.y = vec->y;\n    rev.x = vec->z;\n\n    oneMinusCos = 1.0 - c;\n\n    (*mtx)[0][0] = oneMinusCos * rev.z * rev.z + c;\n    (*mtx)[0][1] = oneMinusCos * rev.z * rev.y + s * rev.x;\n    (*mtx)[0][2] = oneMinusCos * rev.z * rev.x - s * rev.y;\n    (*mtx)[0][3] = 0.0f;\n\n    (*mtx)[1][0] = oneMinusCos * rev.z * rev.y - s * rev.x;\n    (*mtx)[1][1] = oneMinusCos * rev.y * rev.y + c;\n    (*mtx)[1][2] = oneMinusCos * rev.y * rev.x + s * rev.z;\n    (*mtx)[1][3] = 0.0f;\n\n    (*mtx)[2][0] = oneMinusCos * rev.z * rev.x + s * rev.y;\n    (*mtx)[2][1] = oneMinusCos * rev.y * rev.x - s * rev.z;\n    (*mtx)[2][2] = oneMinusCos * rev.x * rev.x + c;\n    (*mtx)[2][3] = 0.0f;\n\n    (*mtx)[3][0] = 0.0f;\n    (*mtx)[3][1] = 0.0f;\n    (*mtx)[3][2] = 0.0f;\n    (*mtx)[3][3] = 1.0f;\n}\n\n/**\n * Creates a rotation matrix about vector 'vec' with ang in degrees.\n */\nvoid gd_create_rot_mat_angular(Mat4f *mtx, struct GdVec3f *vec, f32 ang) {\n    f32 s;\n    f32 c;\n\n    s = gd_sin_d(ang / (DEG_PER_RAD / 2.0));\n    c = gd_cos_d(ang / (DEG_PER_RAD / 2.0));\n\n    gd_create_rot_matrix(mtx, vec, s, c);\n}\n\n/**\n * Sets a mat4f matrix to an identity matrix.\n */\nvoid gd_set_identity_mat4(Mat4f *mtx) {\n    (*mtx)[0][0] = 1.0f;\n    (*mtx)[0][1] = 0.0f;\n    (*mtx)[0][2] = 0.0f;\n    (*mtx)[0][3] = 0.0f;\n    (*mtx)[1][0] = 0.0f;\n    (*mtx)[1][1] = 1.0f;\n    (*mtx)[1][2] = 0.0f;\n    (*mtx)[1][3] = 0.0f;\n    (*mtx)[2][0] = 0.0f;\n    (*mtx)[2][1] = 0.0f;\n    (*mtx)[2][2] = 1.0f;\n    (*mtx)[2][3] = 0.0f;\n    (*mtx)[3][0] = 0.0f;\n    (*mtx)[3][1] = 0.0f;\n    (*mtx)[3][2] = 0.0f;\n    (*mtx)[3][3] = 1.0f;\n}\n\n/**\n * Copies a mat4f from src to dst.\n */\nvoid gd_copy_mat4f(const Mat4f *src, Mat4f *dst) {\n    (*dst)[0][0] = (*src)[0][0];\n    (*dst)[0][1] = (*src)[0][1];\n    (*dst)[0][2] = (*src)[0][2];\n    (*dst)[0][3] = (*src)[0][3];\n    (*dst)[1][0] = (*src)[1][0];\n    (*dst)[1][1] = (*src)[1][1];\n    (*dst)[1][2] = (*src)[1][2];\n    (*dst)[1][3] = (*src)[1][3];\n    (*dst)[2][0] = (*src)[2][0];\n    (*dst)[2][1] = (*src)[2][1];\n    (*dst)[2][2] = (*src)[2][2];\n    (*dst)[2][3] = (*src)[2][3];\n    (*dst)[3][0] = (*src)[3][0];\n    (*dst)[3][1] = (*src)[3][1];\n    (*dst)[3][2] = (*src)[3][2];\n    (*dst)[3][3] = (*src)[3][3];\n}\n\n/**\n * Transforms a vec3f, rotating with the main 3x3 portion of the mat4f\n * and translating with the 4th column.\n */\nvoid gd_rotate_and_translate_vec3f(struct GdVec3f *vec, const Mat4f *mtx) {\n    struct GdVec3f out;\n\n    out.x = (*mtx)[0][0] * vec->x + (*mtx)[1][0] * vec->y + (*mtx)[2][0] * vec->z;\n    out.y = (*mtx)[0][1] * vec->x + (*mtx)[1][1] * vec->y + (*mtx)[2][1] * vec->z;\n    out.z = (*mtx)[0][2] * vec->x + (*mtx)[1][2] * vec->y + (*mtx)[2][2] * vec->z;\n    out.x += (*mtx)[3][0];\n    out.y += (*mtx)[3][1];\n    out.z += (*mtx)[3][2];\n\n    vec->x = out.x;\n    vec->y = out.y;\n    vec->z = out.z;\n}\n\n/**\n * Multiples a vec3f by the main 3x3 portion of a mat4f matrix.\n */\nvoid gd_mat4f_mult_vec3f(struct GdVec3f *vec, const Mat4f *mtx) {\n    struct GdVec3f out;\n\n    out.x = (*mtx)[0][0] * vec->x + (*mtx)[1][0] * vec->y + (*mtx)[2][0] * vec->z;\n    out.y = (*mtx)[0][1] * vec->x + (*mtx)[1][1] * vec->y + (*mtx)[2][1] * vec->z;\n    out.z = (*mtx)[0][2] * vec->x + (*mtx)[1][2] * vec->y + (*mtx)[2][2] * vec->z;\n\n    vec->x = out.x;\n    vec->y = out.y;\n    vec->z = out.z;\n}\n\n#define MAT4_DOT_PROD(A, B, R, row, col)                                                               \\\n    {                                                                                                  \\\n        (R)[(row)][(col)] = (A)[(row)][0] * (B)[0][(col)];                                             \\\n        (R)[(row)][(col)] += (A)[(row)][1] * (B)[1][(col)];                                            \\\n        (R)[(row)][(col)] += (A)[(row)][2] * (B)[2][(col)];                                            \\\n        (R)[(row)][(col)] += (A)[(row)][3] * (B)[3][(col)];                                            \\\n    }\n\n#define MAT4_MULTIPLY(A, B, R)                                                                         \\\n    {                                                                                                  \\\n        MAT4_DOT_PROD((A), (B), (R), 0, 0);                                                            \\\n        MAT4_DOT_PROD((A), (B), (R), 0, 1);                                                            \\\n        MAT4_DOT_PROD((A), (B), (R), 0, 2);                                                            \\\n        MAT4_DOT_PROD((A), (B), (R), 0, 3);                                                            \\\n        MAT4_DOT_PROD((A), (B), (R), 1, 0);                                                            \\\n        MAT4_DOT_PROD((A), (B), (R), 1, 1);                                                            \\\n        MAT4_DOT_PROD((A), (B), (R), 1, 2);                                                            \\\n        MAT4_DOT_PROD((A), (B), (R), 1, 3);                                                            \\\n        MAT4_DOT_PROD((A), (B), (R), 2, 0);                                                            \\\n        MAT4_DOT_PROD((A), (B), (R), 2, 1);                                                            \\\n        MAT4_DOT_PROD((A), (B), (R), 2, 2);                                                            \\\n        MAT4_DOT_PROD((A), (B), (R), 2, 3);                                                            \\\n        MAT4_DOT_PROD((A), (B), (R), 3, 0);                                                            \\\n        MAT4_DOT_PROD((A), (B), (R), 3, 1);                                                            \\\n        MAT4_DOT_PROD((A), (B), (R), 3, 2);                                                            \\\n        MAT4_DOT_PROD((A), (B), (R), 3, 3);                                                            \\\n    }\n\n/**\n * Multiplies two Mat4f matrices and puts it in dst.\n */\nvoid gd_mult_mat4f(const Mat4f *mA, const Mat4f *mB, Mat4f *dst) {\n    Mat4f res;\n\n    MAT4_MULTIPLY((*mA), (*mB), res);\n    gd_copy_mat4f(&res, dst);\n}\n\n#undef MAT4_MULTIPLY\n#undef MAT4_DOT_PROD\n\n/**\n * Prints a vec3f vector.\n *\n * Printed the prefix at some point, as shown by how the function is used.\n */\nvoid gd_print_vec(UNUSED const char *prefix, const struct GdVec3f *vec) {\n    UNUSED u8 filler[8];\n\n    printf(\"%f,%f,%f\\n\", vec->x, vec->y, vec->z);\n    printf(\"\\n\");\n}\n\n/**\n * Prints a plane's boundaries.\n *\n * Printed a prefix at some point, as shone by how the function is used.\n */\nvoid gd_print_bounding_box(UNUSED const char *prefix, UNUSED const struct GdBoundingBox *p) {\n    UNUSED u8 filler[8];\n\n    printf(\"Min X = %f, Max X = %f \\n\", p->minX, p->maxX);\n    printf(\"Min Y = %f, Max Y = %f \\n\", p->minY, p->maxY);\n    printf(\"Min Z = %f, Max Z = %f \\n\", p->minZ, p->maxZ);\n    printf(\"\\n\");\n}\n\n/**\n * Prints a Mat4f.\n *\n * Although the prefix input is unused, the one usage of this function\n * does have a \"Matrix:\" prefix, so it was definitely used at one point.\n */\nvoid gd_print_mtx(UNUSED const char *prefix, const Mat4f *mtx) {\n    s32 i;\n    s32 j;\n\n    for (i = 0; i < 4; i++) {\n        for (j = 0; j < 4; j++) {\n            gd_printf(\"%f \", (*mtx)[i][j]);\n        }\n        gd_printf(\"\\n\");\n    }\n}\n\n/**\n * Prints a quaternion along with a prefix.\n */\nvoid UNUSED gd_print_quat(const char *prefix, const f32 f[4]) {\n    s32 i;\n\n    gd_printf(prefix);\n    for (i = 0; i < 4; i++) {\n        gd_printf(\"%f \", f[i]);\n    }\n    gd_printf(\"\\n\");\n}\n\n/**\n * Rotates a matrix or creates a rotation matrix about a vector made from an offset\n * of 100 and the passed in x, y, and z values.\n */\nvoid UNUSED gd_rot_mat_offset(Mat4f *dst, f32 x, f32 y, f32 z, s32 copy) {\n    f32 adj = 100.0f;\n    Mat4f rot;\n    f32 c;\n    f32 s;\n    f32 opp;\n    f32 mag;\n    struct GdVec3f vec;\n\n    opp = gd_sqrt_f(SQ(x) + SQ(y) + SQ(z));\n\n    if (opp == 0.0f) {\n        if (copy) {\n            gd_set_identity_mat4(dst);\n        }\n        return;\n    }\n\n    mag = gd_sqrt_f(SQ(adj) + SQ(opp));\n    c = adj / mag;\n    s = opp / mag;\n\n    vec.x = -y / opp;\n    vec.y = -x / opp;\n    vec.z = -z / opp;\n\n    gd_create_rot_matrix(&rot, &vec, s, c);\n    if (!copy) {\n        gd_mult_mat4f(dst, &rot, dst);\n    } else {\n        gd_copy_mat4f(&rot, dst);\n    }\n}\n"
  },
  {
    "path": "src/goddard/gd_math.h",
    "content": "#ifndef GD_MATH_H\n#define GD_MATH_H\n\n#include <PR/ultratypes.h>\n\n#include \"gd_types.h\"\n#include \"macros.h\"\n\nstruct Row4 {\n    f32 c0, c1, c2, c3;\n};\n\nstruct InvMat4 {\n    struct Row4 r0, r1, r2, r3;\n};\n\nenum GdRotAxis {\n    GD_X_AXIS,\n    GD_Y_AXIS,\n    GD_Z_AXIS\n};\n\n// Needed for gd_math.c itself.\nvoid gd_adjunct_mat4f(Mat4f *src, Mat4f *dst);\nf32 gd_mat4f_det(Mat4f *mtx);\nf32 gd_3x3_det(f32 r0c0, f32 r0c1, f32 r0c2,\n               f32 r1c0, f32 r1c1, f32 r1c2,\n               f32 r2c0, f32 r2c1, f32 r2c2);\nf32 gd_2x2_det(f32 a, f32 b, f32 c, f32 d);\n\nvoid gd_mat4f_lookat(Mat4f *mtx, f32 xFrom, f32 yFrom, f32 zFrom, f32 xTo, f32 yTo, f32 zTo,\n                     f32 zColY, f32 yColY, f32 xColY);\nvoid gd_scale_mat4f_by_vec3f(Mat4f *mtx, struct GdVec3f *vec);\nvoid gd_rot_mat_about_vec(Mat4f *mtx, struct GdVec3f *vec);\nvoid gd_add_vec3f_to_mat4f_offset(Mat4f *mtx, struct GdVec3f *vec);\nvoid gd_create_origin_lookat(Mat4f *mtx, struct GdVec3f *vec, f32 roll);\nf32 gd_clamp_f32(f32 a, f32 b);\nvoid gd_clamp_vec3f(struct GdVec3f *vec, f32 limit);\nvoid gd_rot_2d_vec(f32 deg, f32 *x, f32 *y);\nvoid gd_absrot_mat4(Mat4f *mtx, s32 axisnum, f32 ang);\nf32 gd_vec3f_magnitude(struct GdVec3f *vec);\ns32 gd_normalize_vec3f(struct GdVec3f *vec);\nvoid gd_cross_vec3f(struct GdVec3f *a, struct GdVec3f *b, struct GdVec3f *dst);\nf32 gd_dot_vec3f(struct GdVec3f *a, struct GdVec3f *b);\nvoid gd_inverse_mat4f(Mat4f *src, Mat4f *dst);\nvoid gd_create_rot_mat_angular(Mat4f *mtx, struct GdVec3f *vec, f32 ang);\nvoid gd_set_identity_mat4(Mat4f *mtx);\nvoid gd_copy_mat4f(const Mat4f *src, Mat4f *dst);\nvoid gd_rotate_and_translate_vec3f(struct GdVec3f *vec, const Mat4f *mtx);\nvoid gd_mat4f_mult_vec3f(struct GdVec3f *vec, const Mat4f *mtx);\nvoid gd_mult_mat4f(const Mat4f *mA, const Mat4f *mB, Mat4f *dst);\nvoid gd_print_vec(UNUSED const char *prefix, const struct GdVec3f *vec);\nvoid gd_print_bounding_box(UNUSED const char *prefix, const struct GdBoundingBox *p);\nvoid gd_print_mtx(UNUSED const char *prefix, const Mat4f *mtx);\n\n#endif // GD_MATH_H\n"
  },
  {
    "path": "src/goddard/gd_memory.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"debug_utils.h\"\n#include \"gd_memory.h\"\n#include \"renderer.h\"\n\n/**\n * @file gd_memory.c\n *\n * This file contains the functions need to manage allocation in\n * goddard's heap. However, the actual, useable allocation functions\n * are `gd_malloc()`, `gd_malloc_perm()`, and `gd_malloc_temp()`, as\n * well as `gd_free()`. This file is for managing the underlying memory\n * block lists.\n */\n\n/* bss */\nstatic struct GMemBlock *sFreeBlockListHead;\nstatic struct GMemBlock *sUsedBlockListHead;\nstatic struct GMemBlock *sEmptyBlockListHead;\n\n/* Forward Declarations */\nvoid empty_mem_block(struct GMemBlock *);\nstruct GMemBlock *into_free_memblock(struct GMemBlock *);\nstruct GMemBlock *make_mem_block(u32, u8);\nu32 print_list_stats(struct GMemBlock *, s32, s32);\n\n/**\n * Empty a `GMemBlock` into a default state. This empty block\n * doesn't point to any data, nor does it have any size. The\n * block is removed from whatever list is was in, and is added\n * to the empty block list.\n */\nvoid empty_mem_block(struct GMemBlock *block) {\n    if (block->next != NULL) {\n        block->next->prev = block->prev;\n    }\n\n    if (block->prev != NULL) {\n        block->prev->next = block->next;\n    }\n\n    switch (block->blockType) {\n        case G_MEM_BLOCK_FREE:\n            if (block->prev == NULL) {\n                sFreeBlockListHead = block->next;\n            }\n            break;\n        case G_MEM_BLOCK_USED:\n            if (block->prev == NULL) {\n                sUsedBlockListHead = block->next;\n            }\n            break;\n    }\n\n    block->next = sEmptyBlockListHead;\n    if (block->next != NULL) {\n        sEmptyBlockListHead->prev = block;\n    }\n\n    sEmptyBlockListHead = block;\n    block->prev = NULL;\n    block->ptr = NULL;\n    block->size = 0;\n}\n\n/**\n * Transform a `GMemBlock` into a free block that points to memory available\n * for allocation.\n *\n * @returns pointer to the free `GMemBlock` */\nstruct GMemBlock *into_free_memblock(struct GMemBlock *block) {\n    struct GMemBlock *freeBlock;\n    void *ptr;\n    u8 permanence;\n    u32 space;\n\n    ptr = block->ptr;\n    space = block->size;\n    permanence = block->permFlag;\n\n    empty_mem_block(block);\n    freeBlock = make_mem_block(G_MEM_BLOCK_FREE, permanence);\n    freeBlock->ptr = ptr;\n    freeBlock->size = space;\n    freeBlock->permFlag = permanence;\n\n    return freeBlock;\n}\n\n/**\n * Allocate a new `GMemBlock` structure of the given type and permanence.\n * It does not assign any heap space to the new block.\n *\n * @param blockType either `G_MEM_BLOCK_FREE` or `G_MEM_BLOCK_USED`\n * @param permFlag  some sort of permanence value, where setting one the upper\n *                  four bits imply a permanent block, while setting one the lower\n *                  four bits imply a temporary block\n * @returns a pointer to the new `GMemBlock`\n */\nstruct GMemBlock *make_mem_block(u32 blockType, u8 permFlag) {\n    struct GMemBlock *newMemBlock;\n\n    if (sEmptyBlockListHead == NULL) {\n        sEmptyBlockListHead = (struct GMemBlock *) gd_allocblock(sizeof(struct GMemBlock));\n\n        if (sEmptyBlockListHead == NULL) {\n            fatal_printf(\"MakeMemBlock() unable to allocate\");\n        }\n\n        sEmptyBlockListHead->next = NULL;\n        sEmptyBlockListHead->prev = NULL;\n    }\n\n    newMemBlock = sEmptyBlockListHead;\n    if ((sEmptyBlockListHead = newMemBlock->next) != NULL) {\n        newMemBlock->next->prev = NULL;\n    }\n\n    switch (blockType) {\n        case G_MEM_BLOCK_FREE:\n            newMemBlock->next = sFreeBlockListHead;\n            if (newMemBlock->next != NULL) {\n                sFreeBlockListHead->prev = newMemBlock;\n            }\n            sFreeBlockListHead = newMemBlock;\n            break;\n        case G_MEM_BLOCK_USED:\n            newMemBlock->next = sUsedBlockListHead;\n            if (newMemBlock->next != NULL) {\n                sUsedBlockListHead->prev = newMemBlock;\n            }\n            sUsedBlockListHead = newMemBlock;\n            break;\n        default:\n            fatal_printf(\"unkown memblock type\");\n    }\n    newMemBlock->prev = NULL;\n    newMemBlock->blockType = (u8) blockType;\n    newMemBlock->permFlag = permFlag;\n\n    return newMemBlock;\n}\n\n/**\n * Free memory allocated on the goddard heap.\n *\n * @param ptr pointer to heap allocated memory\n * @returns size of memory freed\n * @retval  0    `ptr` did not point to a valid memory block\n */\nu32 gd_free_mem(void *ptr) {\n    register struct GMemBlock *curBlock;\n    u32 bytesFreed;\n    register u8 *targetBlock = ptr;\n\n    for (curBlock = sUsedBlockListHead; curBlock != NULL; curBlock = curBlock->next) {\n        if (targetBlock == curBlock->ptr) {\n            bytesFreed = curBlock->size;\n            into_free_memblock(curBlock);\n            return bytesFreed;\n        }\n    }\n\n    fatal_printf(\"Free() Not a valid memory block\");\n    return 0;\n}\n\n/**\n * Request a pointer to goddard heap memory of at least `size` and\n * of the same `permanence`.\n *\n * @return pointer to heap\n * @retval NULL could not fulfill the request\n */\nvoid *gd_request_mem(u32 size, u8 permanence) {\n    struct GMemBlock *foundBlock = NULL;\n    struct GMemBlock *curBlock;\n    struct GMemBlock *newBlock;\n\n    newBlock = make_mem_block(G_MEM_BLOCK_USED, permanence);\n    curBlock = sFreeBlockListHead;\n\n    while (curBlock != NULL) {\n        if (curBlock->permFlag & permanence) {\n            if (curBlock->size == size) {\n                foundBlock = curBlock;\n                break;\n            } else {\n                if (curBlock->size > size) {\n                    if (foundBlock != NULL) { /* find closest sized block */\n                        if (curBlock->size < foundBlock->size) {\n                            foundBlock = curBlock;\n                        }\n                    } else {\n                        foundBlock = curBlock;\n                    }\n                }\n            }\n        }\n        curBlock = curBlock->next;\n    }\n\n    if (foundBlock == NULL) {\n        return NULL;\n    }\n\n    if (foundBlock->size > size) { /* split free block */\n        newBlock->ptr = foundBlock->ptr;\n        newBlock->size = size;\n\n        foundBlock->size -= size;\n        foundBlock->ptr += size;\n    } else if (foundBlock->size == size) { /* recycle whole free block */\n        newBlock->ptr = foundBlock->ptr;\n        newBlock->size = size;\n        empty_mem_block(foundBlock);\n    }\n\n    return newBlock->ptr;\n}\n\n/**\n * Add memory of `size` at `addr` to the goddard heap for later allocation.\n *\n * @returns `GMemBlock` that contains info about the new heap memory\n */\nstruct GMemBlock *gd_add_mem_to_heap(u32 size, void *addr, u8 permanence) {\n    struct GMemBlock *newBlock;\n    /* eight-byte align the new block's data stats */\n    size = (size - 8) & ~7;\n    addr = (void *)(((uintptr_t) addr + 8) & ~7);\n\n    newBlock = make_mem_block(G_MEM_BLOCK_FREE, permanence);\n    newBlock->ptr = addr;\n    newBlock->size = size;\n\n    return newBlock;\n}\n\n/**\n * NULL the various `GMemBlock` list heads\n */\nvoid init_mem_block_lists(void) {\n    sFreeBlockListHead = NULL;\n    sUsedBlockListHead = NULL;\n    sEmptyBlockListHead = NULL;\n}\n\n/**\n * Print information (size, entries) about the `GMemBlock` list. It can print\n * information for individual blocks as well as summary info for the entry list.\n *\n * @param block          `GMemBlock` to start reading the list\n * @param printBlockInfo If `TRUE`, print information about every block\n *                       in the list\n * @param permanence     Limit info printed to blocks with this permanence\n * @returns number of entries\n */\nu32 print_list_stats(struct GMemBlock *block, s32 printBlockInfo, s32 permanence) {\n    u32 entries = 0;\n    u32 totalSize = 0;\n\n    while (block != NULL) {\n        if (block->permFlag & permanence) {\n            entries++;\n            if (printBlockInfo) {\n                gd_printf(\"     %6.2fk (%d bytes)\\n\",\n                          (f32) block->size / 1024.0, //? 1024.0f\n                          block->size);\n            }\n            totalSize += block->size;\n        }\n        block = block->next;\n    }\n\n    gd_printf(\"Total %6.2fk (%d bytes) in %d entries\\n\",\n              (f32) totalSize / 1024.0, //? 1024.0f\n              totalSize, entries);\n\n    return entries;\n}\n\n/**\n * Print summary information about all used, free, and empty\n * `GMemBlock`s.\n */\nvoid mem_stats(void) {\n    struct GMemBlock *list;\n\n    gd_printf(\"Perm Used blocks:\\n\");\n    list = sUsedBlockListHead;\n    print_list_stats(list, FALSE, PERM_G_MEM_BLOCK);\n    gd_printf(\"\\n\");\n\n    gd_printf(\"Perm Free blocks:\\n\");\n    list = sFreeBlockListHead;\n    print_list_stats(list, FALSE, PERM_G_MEM_BLOCK);\n    gd_printf(\"\\n\");\n\n    gd_printf(\"Temp Used blocks:\\n\");\n    list = sUsedBlockListHead;\n    print_list_stats(list, FALSE, TEMP_G_MEM_BLOCK);\n    gd_printf(\"\\n\");\n\n    gd_printf(\"Temp Free blocks:\\n\");\n    list = sFreeBlockListHead;\n    print_list_stats(list, FALSE, TEMP_G_MEM_BLOCK);\n    gd_printf(\"\\n\");\n\n    gd_printf(\"Empty blocks:\\n\");\n    list = sEmptyBlockListHead;\n    print_list_stats(list, FALSE, PERM_G_MEM_BLOCK | TEMP_G_MEM_BLOCK);\n}\n"
  },
  {
    "path": "src/goddard/gd_memory.h",
    "content": "#ifndef GD_MEMORY_H\n#define GD_MEMORY_H\n\n#include <PR/ultratypes.h>\n\n/// A structure that holds information about memory allocation on goddard's heap.\nstruct GMemBlock {\n    /* 0x00 */ u8 *ptr;\n    /* 0x04 */ u32 size;\n    /* 0x08 */ u8 blockType;\n    /* 0x09 */ u8 permFlag; ///< Permanent (upper four bits) or Temporary (lower four bits)\n    /* 0x0C */ struct GMemBlock *next;\n    /* 0x10 */ struct GMemBlock *prev;\n};\n\n/// Block list types for `GMemBlock.blockType`. Note that Empty Blocks don't have\n/// a specific value.\nenum GMemBlockTypes {\n    G_MEM_BLOCK_FREE = 1,\n    G_MEM_BLOCK_USED = 2\n};\n/* Block Permanence Defines */\n/* This may be collections of certain allocation types\n * eg. 0x10 = Object; 0x20 = Color Buffer; 0x40 = Z Buf; 0x01 = basic; etc. */\n#define PERM_G_MEM_BLOCK 0xF0\n#define TEMP_G_MEM_BLOCK 0x0F\n\n// functions\nextern u32 gd_free_mem(void *ptr);\nextern void *gd_request_mem(u32 size, u8 permanence);\nextern struct GMemBlock *gd_add_mem_to_heap(u32 size, void *addr, u8 permanence);\nextern void init_mem_block_lists(void);\nextern void mem_stats(void);\n\n#endif // GD_MEMORY_H\n"
  },
  {
    "path": "src/goddard/gd_types.h",
    "content": "#ifndef GD_TYPES_H\n#define GD_TYPES_H\n\n#include <ultra64.h>\n\n/* Vector Types */\nstruct GdVec3f {\n    f32 x, y, z;\n};\n\nstruct GdBoundingBox {\n    f32 minX, minY, minZ;\n    f32 maxX, maxY, maxZ;\n};\n\nstruct GdTriangleF {\n    struct GdVec3f p0, p1, p2;\n};\n\nstruct GdAnimTransform {\n    struct GdVec3f scale;\n    struct GdVec3f rotate;  // each component specifies the degrees to rotate about that axis\n    struct GdVec3f pos;\n};\n\ntypedef f32 Mat4f[4][4];\n\nstruct GdColour {\n    f32 r, g, b;\n};\n\n/* dynlist entries and types */\nunion DynUnion {\n    void *ptr;\n    char *str;\n    s32 word;\n};\n\nstruct DynList {\n    s32 cmd;\n    union DynUnion w1;\n    union DynUnion w2;\n    struct GdVec3f vec;\n};\n\n/* Goddard Code Object Structs */\n/* Object Type Flags */\nenum ObjTypeFlag {\n    OBJ_TYPE_GROUPS    = 0x00000001,\n    OBJ_TYPE_BONES     = 0x00000002,\n    OBJ_TYPE_JOINTS    = 0x00000004,\n    OBJ_TYPE_PARTICLES = 0x00000008,\n    OBJ_TYPE_SHAPES    = 0x00000010,\n    OBJ_TYPE_NETS      = 0x00000020,\n    OBJ_TYPE_PLANES    = 0x00000040,\n    OBJ_TYPE_FACES     = 0x00000080,\n    OBJ_TYPE_VERTICES  = 0x00000100,\n    OBJ_TYPE_CAMERAS   = 0x00000200,\n    // 0x400 was not used\n    OBJ_TYPE_MATERIALS = 0x00000800,\n    OBJ_TYPE_WEIGHTS   = 0x00001000,\n    OBJ_TYPE_GADGETS   = 0x00002000,\n    OBJ_TYPE_VIEWS     = 0x00004000,\n    OBJ_TYPE_LABELS    = 0x00008000,\n    OBJ_TYPE_ANIMATORS = 0x00010000,\n    OBJ_TYPE_VALPTRS   = 0x00020000,\n    // 0x40000 was not used\n    OBJ_TYPE_LIGHTS    = 0x00080000,\n    OBJ_TYPE_ZONES     = 0x00100000,\n    OBJ_TYPE_UNK200000 = 0x00200000\n};\n/* This constant seems to be used to indicate the type of any or all objects */\n#define OBJ_TYPE_ALL 0x00FFFFFF\n\n\n/// Function pointer for a `GdObj`'s drawing routine\ntypedef void (*drawmethod_t)(void *);\n/// Flags for the drawFlags field of an GdObj\nenum ObjDrawingFlags {\n    OBJ_DRAW_UNK01   = 0x01,\n    OBJ_INVISIBLE    = 0x02, ///< This `GdObj` shouldn't be drawn when updating a scene\n    OBJ_PICKED       = 0x04, ///< This `GdObj` is held by the cursor\n    OBJ_IS_GRABBABLE = 0x08, ///< This `GdObj` can be grabbed/picked by the cursor\n    OBJ_HIGHLIGHTED  = 0x10\n};\n\n/**\n * The base of structure of all of Goddard's objects. It is present as a \"header\"\n * at the beginning of all `ObjX` structures, and as such, this type is used\n * when we need to generalize code to take different `ObjX`es.\n * Every GdObj created is connected together in a linked list with `prev` and `next` pointers.\n */\nstruct GdObj {\n    /* 0x00 */ struct GdObj *prev;  // previous node in gGdObjectList linked list\n    /* 0x04 */ struct GdObj *next;  // next node in gGdObjectList linked list\n    /* 0x08 */ drawmethod_t objDrawFn;\n    /* 0x0C */ enum ObjTypeFlag type;\n    /* 0x10 */ s16 index;    ///< the index of this `GdObj` in the linked list\n    /* 0x12 */ u16 drawFlags; ///< enumerated in `::ObjDrawingFlags`\n    /* 0x14 Specific object data starts here  */\n};\n\n/* Used to create a linked list of objects (or data)\n** within an ObjGroup */\nstruct ListNode {\n    /* 0x00 */ struct ListNode *prev;\n    /* 0x04 */ struct ListNode *next;\n    /* 0x08 */ struct GdObj *obj;\n};\n\n// I think this is actually the same type as ListNode, and data is just a generic \"void *\" pointer.\nstruct VtxLink {\n    struct VtxLink *prev;\n    struct VtxLink *next;\n    Vtx *data;\n};\n\n/* These are the compressed versions of ObjFace or ObjVertex that are\n** pointed to by ListNode in the faceGroup and vtxGroup, if Group.linkType\n** is set to 0x01. See `chk_shapegen` */\nstruct GdFaceData {\n    u32 count;\n    s32 type;\n    u16 (*data)[4]; ///< (mtl id, vtx ids[3])\n};\n\nstruct GdVtxData {\n    u32 count;\n    s32 type;\n    s16 (*data)[3]; ///< [x, y, z]\n};\n\n\n/**\n * Used to group related objects together. Seems to mainly be used for `apply_to_obj_types_in_group`.\n */\nstruct ObjGroup {\n    /* 0x00 */ struct GdObj header;\n    /* 0x14 */ struct ObjGroup *prev;\n    /* 0x18 */ struct ObjGroup *next;\n    /* 0x1C */ struct ListNode *firstMember; ///< Head of a linked list for objects contained in this group\n    /* 0x20 */ struct ListNode *lastMember; ///< Tail of a linked list for objects contained in this group\n    /* 0x24 */ s32 memberTypes;   ///< OR'd collection of type flags for all objects in this group\n    /* 0x28 */ s32 memberCount;  // number of objects in this group\n    /* 0x2C */ s32 debugPrint;  // might also be a type?\n    /* 0x30 */ s32 linkType;\n    /* 0x34 */ char name[0x40]; ///< possibly, only referenced in old code\n    /* 0x74 */ s32 id;\n}; /* sizeof = 0x78 */\n\n/* Known linkTypes\n * 0x00 : Normal (link to GdObj)\n * 0x01 : Compressed (vtx or face data)\n */\n\nstruct ObjBone {\n    /* 0x000 */ struct GdObj header;\n    /* 0x014 */ struct GdVec3f worldPos;   // \"position\"?? from dead code in draw_bone\n    /* 0x020 */ struct ObjBone *prev;   // maybe, based on make_bone\n    /* 0x024 */ struct ObjBone *next;   // maybe, based on make_bone\n    /* 0x028 */ struct GdVec3f unk28;   // \"rotation\"?? from dead code in draw_bone\n    /* 0x034 */ u8  filler1[12];\n    /* 0x040 */ struct GdVec3f unk40;\n    /* 0x04C */ u8  filler2[12];\n    /* 0x058 */ struct GdVec3f unk58;  // orientation?\n    /* 0x064 */ struct GdVec3f unk64;\n    /* 0x070 */ Mat4f mat70;\n    /* 0x0B0 */ Mat4f matB0;\n    /* 0x0F0 */ struct ObjShape *shapePtr; // from dead code in draw_bone\n    /* 0x0F4 */ f32 unkF4;              // also length?\n    /* 0x0F8 */ f32 unkF8;              // length?\n    /* 0x0FC */ f32 unkFC;              // also length?\n    /* 0x100 */ s32 colourNum;             // \"colour\"\n    /* 0x104 */ s32 unk104;             // \"flags\"\n    /* 0x108 */ s32 id;\n    /* 0x10C */ struct ObjGroup *unk10C; // group of joints?\n    /* 0x110 */ f32 spring;\n    /* 0x114 */ f32 unk114;\n    /* 0x118 */ f32 unk118;\n    /* 0x11C */ u8  filler3[8];\n}; /* sizeof = 0x124 */\n\nstruct ObjJoint {\n    /* 0x000 */ struct GdObj header;\n    /* 0x014 */ struct GdVec3f worldPos;    // position in world space\n    /* 0x020 */ struct ObjShape *shapePtr;\n    /* 0x024 */ struct ObjJoint *prevjoint; // prev joint? linked joint?\n    /* 0x028 */ struct ObjJoint *nextjoint;\n    /* 0x02C */ void (*updateFunc)(struct ObjJoint*);  // seems to update attached objects? see grabbable_joint_update_func\n    /* 0x030 */ struct GdVec3f unk30;   // huge array of vecs? another matrix?\n    /* 0x03C */ struct GdVec3f unk3C;   // relative position?\n    /* 0x048 */ struct GdVec3f unk48;\n    /* 0x054 */ struct GdVec3f initPos;   // attached offset? (with +200 as well)\n    /* 0x060 */ u8  filler1[12];\n    /* 0x06C */ struct GdVec3f unk6C;   // initial rotation vec\n    /* 0x078 */ struct GdVec3f velocity;\n    /* 0x084 */ struct GdVec3f unk84;\n    /* 0x090 */ struct GdVec3f unk90;\n    /* 0x09C */ struct GdVec3f scale;\n    /* 0x0A8 */ struct GdVec3f unkA8;\n    /* 0x0B4 */ struct GdVec3f unkB4;\n    /* 0x0C0 */ struct GdVec3f shapeOffset;\n    /* 0x0CC */ struct GdVec3f unkCC;\n    /* 0x0D8 */ u8  filler2[4];\n    /* 0x0DC */ struct GdVec3f friction;\n    /* 0x0E8 */ Mat4f matE8;     //matrix4x4\n    /* 0x128 */ Mat4f mat128;    // \"rot matrix\"\n    /* 0x168 */ Mat4f mat168;    // \"id matrix\"\n    /* 0x1A8 */ struct GdVec3f unk1A8;\n    /* 0x1B4 */ s32 id;\n    /* 0x1B8 */ u8  filler3[4];\n    /* 0x1BC */ s32 flags;     // \"flags\" - 0x2000 = grabbed\n    /* 0x1C0 */ s32 unk1C0;\n    /* 0x1C4 */ struct ObjGroup *unk1C4;    // bone group?\n    /* 0x1C8 */ s32 colourNum;\n    /* 0x1CC */ s32 type;     // 0 = normal joint, 5 = grabbable joint. seems to be set, but never used\n    /* 0x1D0 */ struct ObjAnimator *rootAnimator;  // root animator? used by eye_joint_update_func\n    /* 0x1D4 */ u8  filler4[32];\n    /* 0x1F4 */ struct ObjGroup *weightGrp;    //Group of ObjWeights, only? skin weights?\n    /* 0x1F8 */ struct ObjGroup *attachedObjsGrp;    //attach object group\n    /* 0x1FC */ s32 attachFlags;                 //d_attach_to arg 0; \"AttFlag\"\n    /* 0x200 */ struct GdVec3f attachOffset;\n    /* 0x20C */ struct GdObj *attachedToObj;  // object that this object is attached to\n    /* 0x210 */ u8  filler5[24];\n    /* 0x228 */ f32 unk228;\n}; /* sizeof = 0x22C */\n\n/* Particle Types (+60)\n   3 = Has groups of other particles in 6C?\n*/\n\nstruct ObjParticle {\n    /* 0x00 */ struct GdObj header;\n    /* 0x14 */ u8 filler1[8];\n    /* 0x1C */ struct ObjShape *shapePtr;     // looks like a shape...\n    /* 0x20 */ struct GdVec3f pos;    // some kind of position - relative? world?\n    /* 0x2C */ u8 filler2[4];\n    /* 0x30 */ f32 unk30;\n    /* 0x34 */ u8 filler3[4];\n    /* 0x38 */ struct GdVec3f unk38;\n    /* 0x44 */ f32 unk44; //not vec?\n    /* 0x48 */ f32 unk48; //not vec?\n    /* 0x4C */ u8 filler4[4];\n    /* 0x50 */ s32 id;\n    /* 0x54 */ u32 flags;   // \"dflags\"?\n    /* 0x58 */ s32 colourNum;\n    /* 0x5C */ s32 timeout;  // when this reaches zero, the particle disappears\n    /* 0x60 */ s32 unk60;   //type?\n    /* 0x64 */ s32 unk64;   //type? (1 = has 50 sub-particles, 2,3 = has 30 sub-particles\n    /* 0x68 */ u8 filler5[4];\n    /* 0x6C */ struct ObjGroup *subParticlesGrp;   // group of other Particles ?\n    /* 0x70 */ u8 filler6[4];\n    /* 0x74 */ s32 unk74;\n    /* 0x78 */ u8 unk78[4];\n    /* 0x7C */ struct ObjAnimator *unk7C;   // guessing on type; doesn't seem to be used in final code\n    /* 0x80 */ struct ObjLight *unk80;  // could be a Net or Light; not seen as non-null in running code\n    /* 0x84 */ u8 filler7[44];\n    /* 0xB0 */ s32 unkB0;   //state?\n    /* 0xB4 */ struct ObjGroup *attachedObjsGrp;  // attach group? unused group of particles\n    /* 0xB8 */ s32 attachFlags;   //attached arg0; \"AttFlag\"\n    /* 0xBC */ struct GdObj *attachedToObj; // object that this object is attached to. looks like can be a Light or Camera\n}; /* sizeof = 0xC0 */\n\n/**\n * An object that represents the visual portion of a 3D model.\n */\nstruct ObjShape {\n    /* 0x00 */ struct GdObj header;\n    /* 0x14 */ struct ObjShape *prevShape;\n    /* 0x18 */ struct ObjShape *nextShape;\n    /* 0x1C */ struct ObjGroup *faceGroup;  /* face group; based on get_3DG1_shape */\n    /* 0x20 */ struct ObjGroup *vtxGroup;  /* vtx group; based on get_3DG1_shape */\n    /* 0x24 */ struct ObjGroup *scaledVtxGroup; /* group for type 2 shapenets only ? vertices whose scaleFactor is not 1 get put into this group. */\n    /* 0x28 */ u8 filler1[4];\n    /* 0x2C */ struct ObjGroup *mtlGroup;  /* what does this group do? materials? */\n    /* 0x30 */ s32 unk30;\n    /* 0x34 */ s32 faceCount;   /* face count? based on get_3DG1_shape */\n    /* 0x38 */ s32 vtxCount;   /* vtx count? based on get_3DG1_shape */\n    /* 0x3C */ s32 unk3C; // bool? if FALSE, then draw_shape_faces(shape)\n    /* 0x40 */ u32 id;\n    /* 0x44 */ s32 flag; // what are the flag values? only from dynlists?\n    /* 0x48 */ s32 dlNums[2];  // gd dl number for each frame buffer (??) [0, 1]\n               s32 unk50;      // frame number (index into dlNums)?\n    /* 0x54 */ u8  filler2[4]; // part of above array??\n    /* 0x58 */ f32 alpha;       // paramF? opacitiy? something with rendertype\n    /* 0x5C */ char name[0x40];\n}; /* sizeof = 0x9C */\n\n/* 0x44 Flag Values\n * 0x01 -\n * 0x10 - Use vtx position as vtx normal? (`chk_shapegen`)\n */\n\n/* netTypes\n * 0 - default?\n * 1 - shape net\n * 2 - something about the shape unk24 group having vertices too?\n * 3 - joints?\n * 4 - dynamic net? bone net?\n * 5 - particle net?\n * 6 - stub\n * 7 -\n */\n\nstruct ObjNet {\n    /* 0x000 */ struct GdObj header;\n    /* 0x014 */ struct GdVec3f worldPos;   // position? d_set_initpos + d_set_world_pos; print_net says world\n    /* 0x020 */ struct GdVec3f initPos;   // position? d_set_initpos? attached offset? dynamic? scratch?\n    /* 0x02C */ u8  filler1[8];\n    /* 0x034 */ s32 flags;       // \"dflags\"?\n    /* 0x038 */ u32 id;      // some sort of id? from move_net\n    /* 0x03C */ s32 unk3C;      // state flags? vertex info flags?\n    /* 0x040 */ s32 colourNum;\n    /* 0x044 */ struct GdVec3f unusedForce;   // \"force\" (unused)\n    /* 0x050 */ struct GdVec3f velocity;\n    /* 0x05C */ struct GdVec3f rotation;\n    /* 0x068 */ struct GdVec3f unk68;   //initial rotation?\n    /* 0x074 */ struct GdVec3f collDisp;   // what is this?\n    /* 0x080 */ struct GdVec3f collTorque;   // what is this?\n    /* 0x08C */ struct GdVec3f unusedCollTorqueL;   // unused\n    /* 0x098 */ struct GdVec3f unusedCollTorqueD;   // unused\n    /* 0x0A4 */ struct GdVec3f torque;   // torque\n    /* 0x0B0 */ struct GdVec3f centerOfGravity;   // \"CofG\" center of gravity?\n    /* 0x0BC */ struct GdBoundingBox boundingBox;\n    /* 0x0D4 */ struct GdVec3f unusedCollDispOff;   // unused\n    /* 0x0E0 */ f32 unusedCollMaxD;              // unused\n    /* 0x0E4 */ f32 maxRadius;\n    /* 0x0E8 */ Mat4f matE8;\n    /* 0x128 */ Mat4f mat128;\n    /* 0x168 */ Mat4f mat168;             // \"rotation matrix\"\n    /* 0x1A8 */ struct ObjShape *shapePtr;\n    /* 0x1AC */ struct GdVec3f scale;\n    /* 0x1B8 */ f32 unusedMass;              // unused\n    /* 0x1BC */ s32 numModes;              // unused\n    /* 0x1C0 */ struct ObjGroup *unk1C0;    // group of `ObjVertex` or `ObjParticle`\n    /* 0x1C4 */ struct ObjGroup *skinGrp;   // SkinGroup (from reset_weight) (joints and bones)\n    /* 0x1C8 */ struct ObjGroup *unk1C8;    // \"node group\" (joints, weights?)\n    /* 0x1CC */ struct ObjGroup *unk1CC;    // plane group (only type 1?)\n    /* 0x1D0 */ struct ObjGroup *unk1D0;    // vertex group\n    /* 0x1D4 */ struct ObjGroup *attachedObjsGrp;\n    /* 0x1D8 */ struct GdVec3f attachOffset;\n    /* 0x1E4 */ s32 attachFlags;                 // d_attach_to arg 0; \"AttFlag\"\n    /* 0x1E8 */ struct GdObj *attachedToObj;   // object that this object is attached to\n    /* 0x1EC */ s32 netType;    // from move_net\n    /* 0x1F0 */ struct ObjNet *unk1F0;  // or joint. guess from Unknown80192AD0\n    /* 0x1F4 */ struct GdVec3f unk1F4;\n    /* 0x200 */ struct GdVec3f unk200;\n    /* 0x20C */ struct ObjGroup *unk20C;\n    /* 0x210 */ s32 ctrlType;     // has no purpose\n    /* 0x214 */ u8  filler2[8];\n    /* 0x21C */ struct ObjGroup *unk21C;\n}; /* sizeof = 0x220 */\n\nstruct ObjPlane {\n    /* 0x00 */ struct GdObj header;\n    /* 0x14 */ u32 id;\n    /* 0x18 */ s32 unk18; //bool;  contained within zone? (from its parent Net?)\n    /* 0x1C */ f32 unk1C;\n    /* 0x20 */ s32 unk20;\n    /* 0x24 */ s32 unk24;\n    /* 0x28 */ struct GdBoundingBox boundingBox;\n    /* 0x40 */ struct ObjFace* unk40;\n}; /* sizeof = 0x44*/\n\nstruct ObjVertex {\n    /* 0x00 */ struct GdObj header;\n    /* 0x14 */ struct GdVec3f initPos;\n    /* 0x20 */ struct GdVec3f pos;     // new position after being moved by joints?\n    /* 0x2C */ struct GdVec3f normal;  // normal? also color (like gbi?)\n    /* 0x38 */ s16 id;\n    /* 0x3C */ f32 scaleFactor;\n    /* 0x40 */ f32 alpha;\n    /* 0x44 */ struct VtxLink *gbiVerts;\n}; /* sizeof = 0x48 */\n\n/**\n * An object that represents a face in an `ObjShape`. It connects 3 or 4 vertices.\n */\nstruct ObjFace {\n    /* 0x00 */ struct GdObj header;\n    /* 0x14 */ struct GdColour colour;\n    /* 0x20 */ s32 colourNum;                     // \"colour\" index\n    /* 0x24 */ struct GdVec3f normal;\n    /* 0x30 */ s32 vtxCount;\n    /* 0x34 */ struct ObjVertex *vertices[4];  // these can also be s32 indices? which are then replaced by `find_thisface_verts`\n    /* 0x44 */ s32 mtlId; // from compressed GdFaceData; -1 == coloured face?\n    /* 0x48 */ struct ObjMaterial *mtl; // initialize to NULL; set by `map_face_materials` from mtlId\n}; /* sizeof = 0x4C */\n\n#define CAMERA_FLAG_CONTROLLABLE 0x4\n\nstruct ObjCamera {\n    /* 0x000 */ struct GdObj header;\n    /* 0x014 */ struct GdVec3f worldPos;   // position vec? from d_set_initpos\n    /* 0x020 */ struct ObjCamera* prev;\n    /* 0x024 */ struct ObjCamera* next;\n    /* 0x028 */ s32 id;\n    /* 0x02C */ s32 flags;   // flag of some sort\n    /* 0x030 */ struct GdObj* unk30;   // pointer to some type of object\n    /* 0x034 */ struct GdVec3f lookAt;  // point that the camera faces\n    /* 0x040 */ struct GdVec3f unk40;   // relative position related?\n    /* 0x04C */ struct GdVec3f unk4C;\n    /* 0x058 */ f32 unk58;      // GdVec3f ?\n    /* 0x05C */ u8  filler[4];\n    /* 0x060 */ f32 unk60;\n    /* 0x064 */ Mat4f unk64;    //matrix4x4\n    /* 0x0A4 */ f32 unkA4;\n    /* 0x0A8 */ Mat4f unkA8;    //matrix4x4\n    /* 0x0E8 */ Mat4f unkE8;\n    /* 0x128 */ struct GdVec3f unk128;  //possibly\n    /* 0x134 */ struct GdVec3f unk134;\n    /* 0x140 */ struct GdVec3f zoomPositions[4]; // zoom positions (*1, *1.5, *2, empty fourth)\n    /* 0x170 */ s32 maxZoomLevel; // max number of zoom positions\n    /* 0x174 */ s32 zoomLevel; // index into zoomPositions array\n    /* 0x178 */ f32 unk178;\n    /* 0x17C */ f32 unk17C;\n    /* 0x180 */ struct GdVec3f unk180;\n    /* 0x18C */ struct ObjView *unk18C; // view that has/is using this camera?\n}; /* sizeof = 0x190 */\n\nenum GdMtlTypes {\n    GD_MTL_STUB_DL = 0x01,\n    GD_MTL_BREAK = 0x04,\n    GD_MTL_SHINE_DL = 0x10,\n    GD_MTL_TEX_OFF = 0x20,\n    GD_MTL_LIGHTS = 0x40 // uses default case\n};\n\nstruct ObjMaterial {\n    /* 0x00 */ struct GdObj header;\n    /* 0x14 */ u8  filler1[8];\n    /* 0x1C */ s32 id;\n    /* 0x20 */ char name[8];\n    /* 0x28 */ s32 type;\n    /* 0x2C */ u8  filler2[4];\n    /* 0x30 */ struct GdColour Ka;  // ambient color\n    /* 0x3C */ struct GdColour Kd;  // diffuse color\n    /* 0x48 */ u8  filler3[16];\n    /* 0x58 */ void *texture; //set by d_usetexture; never seems to be non-null though.\n    /* 0x5C */ s32 gddlNumber;\n}; /* sizeof = 0x60 */\n\nstruct ObjWeight {\n    /* 0x00 */ struct GdObj header;\n    /* 0x14 */ u8  filler1[8];\n    /* 0x1C */ s32 vtxId;  // ID of vertex that this weight applies to\n    /* 0x20 */ struct GdVec3f vec20;    // based on func_80181894? maybe a GdBoundingBox?\n    /* 0x2C */ u8  filler2[12];\n    /* 0x38 */ f32 weightVal; // weight (unit?)\n    /* 0x3C */ struct ObjVertex* vtx;\n}; /* sizeof = 0x40 */\n\n/* This union is used in ObjGadget for a variable typed field.\n** The type can be found by checking group unk4C */\nunion ObjVarVal {\n    s32 i;\n    f32 f;\n    u64 l;\n};\n\n/*\n * A slider control used to adjust the value of a variable\n */\nstruct ObjGadget {\n    /* 0x00 */ struct GdObj header;\n    /* 0x14 */ struct GdVec3f worldPos;    // \"world\" position vec?\n    /* 0x20 */ s32 unk20;  // unused; only ever set to 0\n    /* 0x24 */ s32 type;\n    /* 0x28 */ f32 sliderPos;  // position of the slider (from 0 to 1)\n    /* 0x2C */ u8 filler1[4];\n    /* 0x30 */ union ObjVarVal varval; //retype and rename varval30\n    /* 0x38 */ f32 rangeMin;\n    /* 0x3C */ f32 rangeMax;\n    /* 0x40 */ struct GdVec3f size;   // size (x = width, y = height)\n    /* 0x4C */ struct ObjGroup *valueGrp;  // group containing `ObjValPtr`s controlled by this gadget\n    /* 0x50 */ struct ObjShape *shapePtr;\n    /* 0x54 */ struct ObjGroup *unk54;  //node group?\n    /* 0x58 */ u8 filler2[4];\n    /* 0x5C */ s32 colourNum;\n}; /* sizeof = 0x60 */\n\nenum GdViewFlags {\n    VIEW_2_COL_BUF      = 0x000008,\n    VIEW_ALLOC_ZBUF     = 0x000010,\n    VIEW_SAVE_TO_GLOBAL = 0x000040,\n    VIEW_DEFAULT_PARENT = 0x000100,\n    VIEW_BORDERED       = 0x000400,\n    VIEW_UPDATE         = 0x000800,\n    VIEW_UNK_1000       = 0x001000, // used in setup_view_buffers\n    VIEW_UNK_2000       = 0x002000, // only see together with 0x4000\n    VIEW_UNK_4000       = 0x004000,\n    VIEW_COLOUR_BUF     = 0x008000,\n    VIEW_Z_BUF          = 0x010000,\n    VIEW_1_CYCLE        = 0x020000,\n    VIEW_MOVEMENT       = 0x040000,\n    VIEW_DRAW           = 0x080000,\n    VIEW_WAS_UPDATED    = 0x100000,\n    VIEW_LIGHT          = 0x200000\n};\n\nstruct ObjView {\n    /* 0x00 */ struct GdObj header;\n    /* 0x14 */ u8  filler1[8];\n    /* 0x1C */ s32 unk1C; // set as nonexistent return of `setup_view_buffers`\n    /* 0x20 */ s32 id;\n    /* 0x24 */ struct ObjCamera *activeCam; // is this really active?\n    /* 0x28 */ struct ObjGroup *components; // camera + joints + nets, etc..?\n    /* 0x2C */ struct ObjGroup *lights;     // only lights?\n    /* 0x30 */ struct GdObj *pickedObj; // selected with cursor (`update_view`)\n    /* 0x34 */ enum GdViewFlags flags;\n    /* 0x38 */ s32 projectionType; // enum? if 1 use guPerspective, if 0 (or 2?) use guOrtho (see `drawscene`)\n    /* 0x3C */ struct GdVec3f upperLeft; // position vec?\n    /* 0x48 */ f32 unk48; // what are these? are they another vec?\n    /* 0x4C */ f32 unk4C;\n    /* 0x50 */ u8  filler2[4];\n    /* 0x54 */ struct GdVec3f lowerRight;\n    /* 0x60 */ struct GdVec3f clipping; // z-coordinate of (x: near, y: far) clipping plane?\n    /* 0x6C */ const char *namePtr;\n    /* 0x70 */ s32 gdDlNum;\n    /* 0x74 */ s32 unk74;\n    /* 0x78 */ s32 unk78;\n    /* 0x7C */ struct GdColour colour;\n    /* 0x88 */ struct ObjView *parent; // maybe not a true parent, but link to buffers in parent?\n    /* 0x8C */ void *zbuf;\n    /* 0x90 */ void *colourBufs[2]; // frame buffers?\n    /* 0x98 */ void (*proc)(struct ObjView *);   // Never non-null in game...?\n    /* 0x9C */ s32 unk9C;\n}; /* sizeof = 0xA0 */\n\n\ntypedef union ObjVarVal * (*valptrproc_t)(union ObjVarVal *, union ObjVarVal);\n\nstruct ObjLabel {\n    /* 0x00 */ struct GdObj header;\n    /* 0x14 */ struct GdVec3f position;\n    /* 0x20 */ char *fmtstr;  // format string for displaying the value contained in `valptr`\n    /* 0x24 */ s32 unk24;  // always 8\n    /* 0x28 */ struct ObjValPtr *valptr;\n    /* 0x2C */ valptrproc_t valfn;\n    /* 0x30 */ s32 unk30;       // set to 3 or 4 in the code, but never actually used. could possibly be colourNum?\n}; /* sizeof = 0x34 */\n\n/* unk30 types:\n * 3 = f32? f32 pointer?\n**/\n\nstruct ObjAnimator {\n    /* 0x00 */ struct GdObj header;\n    /* 0x14 */ struct ObjGroup* animatedPartsGrp;  // group containing objects animated by this animator. I think all of them are joints.\n    /* 0x18 */ struct ObjGroup* animdataGrp;  //animation data? a group, but the link points to something weird..\n    /* 0x1C */ u8  filler1[4];\n    /* 0x20 */ s32 animSeqNum;  // which entry in the AnimDataInfo array to use\n    /* 0x24 */ f32 unk24;\n    /* 0x28 */ f32 frame;  // key frame number. This is a float so that it can interpolate between key frames, though I think in practice, it's always a whole number.\n    /* 0x2C */ u8  filler2[4];\n    /* 0x30 */ struct ObjGroup *attachedObjsGrp;\n    /* 0x34 */ s32 attachFlags;   //attach arg0, not used\n    /* 0x38 */ u8  filler3[12];\n    /* 0x44 */ struct GdObj* attachedToObj;   // object that this object is attached to. Normally another Objanimator?\n    /* 0x48 */ void (*controlFunc) (struct ObjAnimator *);  // function that \"controls\" the animation sequence by choosing the frame number\n    /* 0x4C */ s32 state;   //state enum?\n    /* 0x50 */ s32 nods;  // Counts the number of nods when Mario is dozing off. When this reaches zero, he wakes up again\n    /* 0x54 */ s32 stillTimer;  // number of frames to remain in the part where Mario's head stays still with his eyes following the cursor\n}; /* sizeof = 0x58 */\n\n/* Animation Data Types */\nenum GdAnimations {\n    GD_ANIM_EMPTY                 = 0,  // Listed types are how the data are arranged in memory; maybe not be exact type\n    GD_ANIM_MTX4x4                = 1,  // f32[4][4]\n    GD_ANIM_SCALE3F_ROT3F_POS3F   = 2,  // f32[3][3]\n    GD_ANIM_SCALE3S_POS3S_ROT3S   = 3,  // s16[9]\n    GD_ANIM_SCALE3F_ROT3F_POS3F_2 = 4,  // f32[3][3]\n    GD_ANIM_STUB                  = 5,\n    GD_ANIM_ROT3S                 = 6,  // s16[3]\n    GD_ANIM_POS3S                 = 7,  // s16[3]\n    GD_ANIM_ROT3S_POS3S           = 8,  // s16[6]\n    GD_ANIM_MTX4x4F_SCALE3F       = 9,  // {f32 mtx[4][4]; f32 vec[3];}\n    GD_ANIM_CAMERA_EYE3S_LOOKAT3S = 11  // s16[6]\n};\n/* This struct is pointed to by the `obj` field in ListNode struct in the `animdata` ObjGroup */\nstruct AnimDataInfo {\n    s32 count;  // count or -1 for end of array of AnimDataInfo structures\n    enum GdAnimations type;  // types are used in \"move_animator\"\n    void* data; // points to an array of `type` data\n};\n/* GD_ANIM_MTX4x4F_SCALE3F (9) type */\nstruct AnimMtxVec {\n    /* 0x00 */ Mat4f matrix;\n    /* 0x40 */ struct GdVec3f vec;  // seems to be a scale vec\n};\n\nenum ValPtrType {\n    OBJ_VALUE_INT   = 1,\n    OBJ_VALUE_FLOAT = 2\n};\n\n/**\n * An object that points to a value in memory (either a field of another object,\n * or a standalone variable). Used by `ObjLabel` and `ObjGadget` to manage their\n * values.\n */\nstruct ObjValPtr {\n    /* 0x00 */ struct GdObj header;\n    /* 0x14 */ struct GdObj *obj;   // maybe just a void *?\n    /* 0x18 */ uintptr_t offset;  // value pointed to is `obj` + `offset`\n    /* 0x1C */ enum ValPtrType datatype;\n    /* 0x20 */ s32 flag;       // TODO: better name for this? If 0x40000, then `offset` is an offset to a field in `obj`. Otherwise, `obj` is NULL, and `offset` is the address of a variable.\n}; /* sizeof = 0x24 */\n\nenum GdLightFlags {\n    LIGHT_UNK02 = 0x02, // old type of light?\n    LIGHT_NEW_UNCOUNTED = 0x10,\n    LIGHT_UNK20 = 0x20 // new, actually used type of light? used for phong shading?\n};\n\nstruct ObjLight {\n    /* 0x00 */ struct GdObj header;\n    /* 0x14 */ u8  filler1[8];\n    /* 0x1C */ s32 id;\n    /* 0x20 */ char name[8];\n    /* 0x28 */ u8  filler2[4];\n    /* 0x2C */ s32 flags;\n    /* 0x30 */ f32 unk30;       // color (5C) = Kd (50) * 30\n    /* 0x34 */ u8  filler3[4];\n    /* 0x38 */ f32 unk38; // calculated diffuse theta (in degrees?)\n    /* 0x3C */ s32 unk3C;\n    /* 0x40 */ s32 unk40;\n    /* 0x44 */ u8  filler4[8];\n    /* 0x4C */ s32 unk4C;\n    /* 0x50 */ struct GdColour diffuse;\n    /* 0x5C */ struct GdColour colour;\n    /* 0x68 */ struct GdVec3f unk68;\n    /* 0x74 */ struct GdVec3f position;\n    /* 0x80 */ struct GdVec3f unk80;\n    /* 0x8C */ struct GdVec3f unk8C;\n    /* 0x98 */ s32 unk98;\n    /* 0x9C */ struct ObjShape *unk9C;\n}; /* sizeof = 0xA0 */\n\nstruct ObjZone {\n    /* 0x00 */ struct GdObj header;\n    /* 0x14 */ struct GdBoundingBox boundingBox;\n    /* 0x2C */ struct ObjGroup *unk2C;   // plane group?\n    /* 0x30 */ struct ObjGroup *unk30;   // guess based on Unknown801781DC; might have to change later\n    /* 0x34 */ u8  filler[4];\n}; /* sizeof = 0x38*/\n\nstruct ObjUnk200000 {\n    /* 0x00 */ struct GdObj header;\n    /* 0x14 */ u8  filler[28];\n    /* 0x30 */ struct ObjVertex *unk30; //not sure; guessing for Unknown801781DC; 30 and 34 could switch with ObjZone\n    /* 0x34 */ struct ObjFace *unk34;   //not sure; guessing for Unknown801781DC\n}; /* sizeof = 0x38*/\n\n#endif // GD_TYPES_H\n"
  },
  {
    "path": "src/goddard/joints.c",
    "content": "#include <PR/ultratypes.h>\n\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\n#include \"prevent_bss_reordering.h\"\n#endif\n\n#include \"debug_utils.h\"\n#include \"draw_objects.h\"\n#include \"dynlist_proc.h\"\n#include \"gd_macros.h\"\n#include \"gd_main.h\"\n#include \"gd_math.h\"\n#include \"gd_types.h\"\n#include \"joints.h\"\n#include \"macros.h\"\n#include \"objects.h\"\n#include \"renderer.h\"\n#include \"sfx.h\"\n#include \"skin.h\"\n#include \"skin_movement.h\"\n\n// data\nstatic s32 D_801A82D0 = 0;\nstatic struct ObjBone *gGdTempBone = NULL; // @ 801A82D4\n\n// bss\ns32 sResetWeightVtxNum; // WTF? why is this not in skin_movement.c?\n\nstatic Mat4f *D_801BA964;\nstatic struct GdVec3f D_801BA968;\nstatic s32 sJointCount;                   // @ 801BA974\nstatic s32 sJointNotF1Count;              // @ 801BA978\nstatic s32 sBoneCount;                    // @ 801BA97C\nstatic s32 sJointArrLen;                  // @ 801BA980\nstatic struct ObjJoint *sJointArr[10];    // @ 801BA988\nstatic struct GdVec3f sJointArrVecs[10];  // @ 801BA9B0\nstatic s32 sJointArr2Len;                 // @ 801BAA28\nstatic struct ObjJoint *sJointArr2[10];   // @ 801BAA30\nstatic struct GdVec3f sJointArr2Vecs[10]; // @ 801BAA58\nstatic struct GdVec3f D_801BAAD0;\nstatic struct GdVec3f D_801BAAE0;\n\n// forward declarations\nvoid set_joint_vecs(struct ObjJoint *, f32, f32, f32);\n\n/**\n * Controls movement of grabbable joints\n */\nvoid grabbable_joint_update_func(struct ObjJoint *self) {\n    UNUSED u8 filler1[80];\n    Mat4f *attObjMtx;\n    UNUSED u8 filler2[4];\n    struct GdVec3f offset;  // difference between current position and initial position\n    UNUSED u8 filler3[16];\n    register struct ListNode *att;\n    UNUSED u8 filler4[8];\n    struct GdObj *attobj;\n\n    // The joint acts somewhat like a spring in that the further it is moved\n    // from its original position, the more resistance it has to moving further\n\n    offset.x = self->mat128[3][0] - self->initPos.x;\n    offset.y = self->mat128[3][1] - self->initPos.y;\n    offset.z = self->mat128[3][2] - self->initPos.z;\n\n    if (self->header.drawFlags & OBJ_PICKED) {\n        self->velocity.x = offset.x * -0.25;\n        self->velocity.y = offset.y * -0.25;\n        self->velocity.z = offset.z * -0.25;\n\n        self->flags |= 0x2000;\n        ;  // needed to match\n    } else {\n        if (gGdCtrl.trgR == FALSE) { // R trigger is released\n            // Set velocity so that the joint approaches its initial position\n            self->velocity.x -= offset.x * 0.5; //? 0.5f\n            self->velocity.y -= offset.y * 0.5; //? 0.5f\n            self->velocity.z -= offset.z * 0.5; //? 0.5f\n\n            // Decay the velocity\n            self->velocity.x *= 0.8; //? 0.8f\n            self->velocity.y *= 0.8; //? 0.8f\n            self->velocity.z *= 0.8; //? 0.8f\n\n            // If the joint's velocity has decayed enough and it is very close\n            // to its original position, stop its movement altogether\n            if (ABS(self->velocity.x) + ABS(self->velocity.y) + ABS(self->velocity.z) < 1.0) {\n                if (ABS(offset.x) + ABS(offset.y) + ABS(offset.z) < 1.0) {\n                    self->velocity.x = self->velocity.y = self->velocity.z = 0.0f;\n                    self->mat128[3][0] -= offset.x;\n                    self->mat128[3][1] -= offset.y;\n                    self->mat128[3][2] -= offset.z;\n                }\n            }\n\n            if (self->flags & 0x2000) {\n                gd_play_sfx(GD_SFX_LET_GO_FACE);\n            }\n\n            self->flags &= ~0x2000;\n            ; // necessary?\n        } else {\n            // freeze position of joint\n            self->velocity.x = self->velocity.y = self->velocity.z = 0.0f;\n        }\n    }\n\n    // update position\n    self->mat128[3][0] += self->velocity.x;\n    self->mat128[3][1] += self->velocity.y;\n    self->mat128[3][2] += self->velocity.z;\n\n    if (self->header.drawFlags & OBJ_PICKED) {\n        gGdCtrl.csrX -= (gGdCtrl.csrX - gGdCtrl.dragStartX) * 0.2;\n        gGdCtrl.csrY -= (gGdCtrl.csrY - gGdCtrl.dragStartY) * 0.2;\n    }\n\n    // update position of attached objects\n    offset.x = self->mat128[3][0] - self->initPos.x;\n    offset.y = self->mat128[3][1] - self->initPos.y;\n    offset.z = self->mat128[3][2] - self->initPos.z;\n    for (att = self->attachedObjsGrp->firstMember; att != NULL; att = att->next) {\n        attobj = att->obj;\n        set_cur_dynobj(attobj);\n        attObjMtx = d_get_matrix_ptr();\n        gd_add_vec3f_to_mat4f_offset(attObjMtx, &offset);\n    }\n}\n\n/**\n * Update function for Mario's eye joints, which makes them follow the cursor\n */\nvoid eye_joint_update_func(struct ObjJoint *self) {\n    Mat4f *sp5C;\n    struct GdVec3f sp50;\n    struct GdVec3f sp44;\n    UNUSED u8 filler[24];\n    register struct ListNode *att;\n    struct GdObj *attobj;\n\n    if (sCurrentMoveCamera == NULL) {\n        return;\n    }\n\n    if (self->rootAnimator != NULL) {\n        if (self->rootAnimator->state != 7) {\n            return;\n        }\n    }\n\n    set_cur_dynobj((struct GdObj *)self);\n    sp5C = d_get_rot_mtx_ptr();\n    sp44.x = (*sp5C)[3][0];\n    sp44.y = (*sp5C)[3][1];\n    sp44.z = (*sp5C)[3][2];\n    world_pos_to_screen_coords(&sp44, sCurrentMoveCamera, sCurrentMoveView);\n\n    sp50.x = gGdCtrl.csrX - sp44.x;\n    sp50.y = -(gGdCtrl.csrY - sp44.y);\n    sp50.z = 0.0f;\n\n    sp50.x *= 2.0; //?2.0f\n    sp50.y *= 2.0; //?2.0f\n    sp50.z *= 2.0; //?2.0f\n    if (gd_vec3f_magnitude(&sp50) > 30.0f) {\n        gd_normalize_vec3f(&sp50);\n        sp50.x *= 30.0f;\n        sp50.y *= 30.0f;\n        sp50.z *= 30.0f;\n    }\n\n    for (att = self->attachedObjsGrp->firstMember; att != NULL; att = att->next) {\n        attobj = att->obj;\n        set_cur_dynobj(attobj);\n        sp5C = d_get_rot_mtx_ptr();\n        gd_add_vec3f_to_mat4f_offset(sp5C, &sp50);\n    }\n}\n\n/* 23D62C -> 23D748; not called */\nvoid func_8018EE5C(struct ObjJoint *j1, struct ObjJoint *j2, struct ObjJoint *j3) {\n    struct GdVec3f vec;\n    struct ObjJoint *curj;\n\n    if (j3 == NULL) {\n        return;\n    }\n\n    vec.z = j3->worldPos.x;\n    vec.y = j3->worldPos.y;\n    vec.x = j3->worldPos.z;\n\n    curj = j1;\n    while (curj != NULL) {\n        set_joint_vecs(curj, curj->worldPos.x + vec.z, curj->worldPos.y + vec.y, curj->worldPos.z + vec.x);\n        if (curj == j2) {\n            break;\n        }\n        curj = curj->prevjoint;\n    }\n}\n\n/* 23D748 -> 23D818; orig name: func_8018EF78 */\nvoid set_joint_vecs(struct ObjJoint *j, f32 x, f32 y, f32 z) {\n    j->worldPos.x = x;\n    j->worldPos.y = y;\n    j->worldPos.z = z;\n\n    j->unk30.x = x;\n    j->unk30.y = y;\n    j->unk30.z = z;\n\n    j->unk3C.x = x;\n    j->unk3C.y = y;\n    j->unk3C.z = z;\n\n    j->initPos.x = x;\n    j->initPos.y = y;\n    j->initPos.z = z;\n\n    j->mat128[3][0] = x;\n    j->mat128[3][1] = y;\n    j->mat128[3][2] = z;\n}\n\n/* 23D818 -> 23DA18 */\nstruct ObjJoint *make_joint(s32 flags, f32 x, f32 y, f32 z) {\n    struct ObjJoint *j; // sp24\n    struct ObjJoint *oldhead;\n    UNUSED u8 filler[4];\n\n    j = (struct ObjJoint *) make_object(OBJ_TYPE_JOINTS);\n    sJointCount++;\n    oldhead = gGdJointList;\n    gGdJointList = j;\n\n    if (oldhead != NULL) {\n        j->nextjoint = oldhead;\n        oldhead->prevjoint = j;\n    }\n    gd_set_identity_mat4(&j->matE8);\n    gd_set_identity_mat4(&j->mat128);\n    set_joint_vecs(j, x, y, z);\n    j->type = 0;\n    j->id = sJointCount;\n    j->flags = flags;\n\n    if (!(j->flags & 0x1)) {\n        sJointNotF1Count++;\n    }\n\n    if (j->flags & 0x1) {\n        j->colourNum = COLOUR_RED;\n    } else {\n        j->colourNum = COLOUR_PINK;\n    }\n\n    j->unk1C4 = NULL;\n    j->shapePtr = NULL;\n    j->scale.x = 1.0f;\n    j->scale.y = 1.0f;\n    j->scale.z = 1.0f;\n    j->friction.x = 0.0f;\n    j->friction.y = 0.0f;\n    j->friction.z = 0.0f;\n    j->updateFunc = NULL;\n\n    return j;\n}\n\n/**\n * Creates a joint that can be grabbed by the cursor. When moved, this joint\n * drags the joints in its unk1F8 group along with it. The `shape` does not\n * actually get rendered due to the joint's OBJ_INVISIBLE flag being set.\n */\nstruct ObjJoint *make_grabber_joint(struct ObjShape *shape, s32 flags, f32 x, f32 y, f32 z) {\n    struct ObjJoint *j;\n\n    j = make_joint(0, x, y, z);\n    j->shapePtr = shape;\n    j->type = 5;\n    j->flags |= flags;\n    j->colourNum = COLOUR_PINK;\n    j->header.drawFlags |= OBJ_IS_GRABBABLE;\n    j->header.drawFlags |= OBJ_INVISIBLE;\n    j->updateFunc = grabbable_joint_update_func;\n    j->rootAnimator = NULL;\n\n    return j;\n}\n\n/* 23DAF8 -> 23DC9C */\nvoid func_8018F328(struct ObjBone *b) {\n    struct ObjJoint *joint1;\n    struct ObjJoint *joint2;\n    struct ObjGroup *grp; // sp1C\n    struct ListNode *link;   // sp18\n\n    grp = b->unk10C;\n    link = grp->firstMember;\n    joint1 = (struct ObjJoint *) link->obj;\n    link = link->next;\n    joint2 = (struct ObjJoint *) link->obj;\n\n    // bone position is average of two connecting joints\n    b->worldPos.x = (joint1->worldPos.x + joint2->worldPos.x) / 2.0; //?2.0f\n    b->worldPos.y = (joint1->worldPos.y + joint2->worldPos.y) / 2.0; //?2.0f\n    b->worldPos.z = (joint1->worldPos.z + joint2->worldPos.z) / 2.0; //?2.0f\n\n    b->unk58.x = joint2->worldPos.x - joint1->worldPos.x;\n    b->unk58.y = joint2->worldPos.y - joint1->worldPos.y;\n    b->unk58.z = joint2->worldPos.z - joint1->worldPos.z;\n\n    gd_normalize_vec3f(&b->unk58);\n    gd_create_origin_lookat(&b->matB0, &b->unk58, 0); //? 0.0f\n}\n\n/* 23DC9C -> 23DCF0 */\nvoid func_8018F4CC(struct ObjJoint *j) {\n    if (j->flags & 0x1000) {\n        j->unkB4.x = D_801BA968.x;\n        j->unkB4.y = D_801BA968.y;\n        j->unkB4.z = D_801BA968.z;\n    }\n}\n\n/* 23DCF0 -> 23E06C */\nvoid func_8018F520(struct ObjBone *b) {\n    struct ObjJoint *joint1;\n    struct ObjJoint *joint2;\n    UNUSED u8 filler[12];\n    struct GdVec3f sp90;\n    struct GdVec3f sp84;\n    struct GdVec3f sp78;\n    struct GdVec3f sp6C;\n    f32 sp68;\n    f32 sp64;\n    struct ObjGroup *grp; // sp60\n    struct ListNode *link;\n    Mat4f mtx; // sp1C\n\n    grp = b->unk10C;\n    link = grp->firstMember;\n    joint1 = (struct ObjJoint *) link->obj;\n    link = link->next;\n    joint2 = (struct ObjJoint *) link->obj;\n\n    // bone position is average of two connecting joints\n    b->worldPos.x = (joint1->worldPos.x + joint2->worldPos.x) / 2.0; //? 2.0f;\n    b->worldPos.y = (joint1->worldPos.y + joint2->worldPos.y) / 2.0; //? 2.0f;\n    b->worldPos.z = (joint1->worldPos.z + joint2->worldPos.z) / 2.0; //? 2.0f;\n\n    sp90.x = b->unk58.x;\n    sp90.y = b->unk58.y;\n    sp90.z = b->unk58.z;\n\n    sp6C.x = sp90.x;\n    sp6C.y = sp90.y;\n    sp6C.z = sp90.z;\n\n    sp6C.x -= b->unk64.x;\n    sp6C.y -= b->unk64.y;\n    sp6C.z -= b->unk64.z;\n    b->unk64.x = sp90.x;\n    b->unk64.y = sp90.y;\n    b->unk64.z = sp90.z;\n\n    sp68 = 5.4 / b->unkF8; //? 5.4f\n    sp6C.x *= sp68;\n    sp6C.y *= sp68;\n    sp6C.z *= sp68;\n    sp90.x *= sp68;\n    sp90.y *= sp68;\n    sp90.z *= sp68;\n\n    gd_cross_vec3f(&sp90, &sp6C, &sp78);\n    sp84.x = sp78.x;\n    sp84.y = sp78.y;\n    sp84.z = sp78.z;\n\n    gd_normalize_vec3f(&sp84);\n    sp64 = gd_vec3f_magnitude(&sp78);\n    gd_create_rot_mat_angular(&mtx, &sp84, sp64);\n    gd_mult_mat4f(&b->mat70, &mtx, &b->mat70);\n    D_801BA968.x = b->mat70[2][0];\n    D_801BA968.y = b->mat70[2][1];\n    D_801BA968.z = b->mat70[2][2];\n    D_801BA964 = &b->mat70;\n\n    apply_to_obj_types_in_group(OBJ_TYPE_JOINTS, (applyproc_t) func_8018F4CC, b->unk10C);\n}\n\n/* 23E06C -> 23E238 */\nvoid func_8018F89C(struct ObjBone *b) {\n    struct ObjJoint *spAC;\n    struct ObjJoint *spA8;\n    UNUSED u8 filler[68];\n    struct ObjGroup *grp; // sp60\n    struct ListNode *link;   // sp5c\n    Mat4f mtx;            // sp1c\n\n    grp = b->unk10C;\n    link = grp->firstMember;\n    spAC = (struct ObjJoint *) link->obj;\n    link = link->next;\n    spA8 = (struct ObjJoint *) link->obj;\n\n    b->worldPos.x = (spAC->worldPos.x + spA8->worldPos.x) / 2.0; //? 2.0f;\n    b->worldPos.y = (spAC->worldPos.y + spA8->worldPos.y) / 2.0; //? 2.0f;\n    b->worldPos.z = (spAC->worldPos.z + spA8->worldPos.z) / 2.0; //? 2.0f;\n\n    gd_mult_mat4f(&b->matB0, &gGdSkinNet->mat128, &mtx);\n    gd_copy_mat4f(&mtx, &b->mat70);\n\n    D_801BA968.x = -b->mat70[2][0];\n    D_801BA968.y = -b->mat70[2][1];\n    D_801BA968.z = -b->mat70[2][2];\n    D_801BA964 = &b->mat70;\n\n    apply_to_obj_types_in_group(OBJ_TYPE_JOINTS, (applyproc_t) func_8018F4CC, b->unk10C);\n}\n\n/* 23E238 -> 23E298 */\nvoid func_8018FA68(struct ObjBone *b) {\n    if (b->unk104 & (0x8 | 0x2)) {\n        func_8018F89C(b);\n    } else {\n        func_8018F520(b);\n    }\n}\n\n/* 23E298 -> 23E328; orig name: func_8018FAC8 */\ns32 set_skin_weight(struct ObjJoint *j, s32 id, struct ObjVertex *vtx /* always NULL */, f32 weight) {\n    struct ObjWeight *w;\n\n    if (j->weightGrp == NULL) {\n        j->weightGrp = make_group(0);\n    }\n    w = make_weight(0, id, vtx, weight);\n    addto_group(j->weightGrp, &w->header);\n\n    return TRUE;\n}\n\n/* 23E328 -> 23E474 */\nvoid func_8018FB58(struct ObjBone *b) {\n    struct GdVec3f vec;  // sp2c\n    struct ObjJoint *j1; // sp28\n    struct ObjJoint *j2;\n    struct ListNode *link;\n    struct ObjGroup *grp;\n\n    grp = b->unk10C;\n    link = grp->firstMember;\n    j1 = (struct ObjJoint *) link->obj;\n    link = link->next;\n    j2 = (struct ObjJoint *) link->obj;\n\n    vec.x = j1->worldPos.x - j2->worldPos.x;\n    vec.y = j1->worldPos.y - j2->worldPos.y;\n    vec.z = j1->worldPos.z - j2->worldPos.z;\n\n    b->unkF8 = gd_sqrt_d((vec.x * vec.x) + (vec.y * vec.y) + (vec.z * vec.z));\n    b->unkF4 = b->unkF8;\n    b->unkFC = b->unkF8;\n    func_8018F328(b);\n}\n\n/* 23E474 -> 23E56C */\nvoid add_joint2bone(struct ObjBone *b, struct ObjJoint *j) {\n    if (j->header.type != OBJ_TYPE_JOINTS) {\n        fatal_printf(\"add_joint2bone(): Can only add Joints to Bones\");\n    }\n\n    if (b->unk10C == NULL) {\n        b->unk10C = make_group(0);\n    }\n    addto_group(b->unk10C, &j->header);\n\n    if (j->unk1C4 == NULL) {\n        j->unk1C4 = make_group(0);\n    }\n    addto_group(j->unk1C4, &b->header);\n\n    if (b->unk10C->memberCount == 2) {\n        func_8018FB58(b);\n    }\n}\n\n/* 23E56C -> 23E6E4 */\nstruct ObjBone *make_bone(s32 a0, struct ObjJoint *j1, struct ObjJoint *j2, UNUSED s32 a3) {\n    struct ObjBone *b; // sp34\n    struct ObjBone *oldhead;\n    UNUSED u8 filler[20];\n\n    b = (struct ObjBone *) make_object(OBJ_TYPE_BONES);\n    sBoneCount++;\n    b->id = sBoneCount;\n    oldhead = gGdBoneList;\n    gGdBoneList = b;\n\n    if (oldhead != NULL) {\n        b->next = oldhead;\n        oldhead->prev = b;\n    }\n    b->unk10C = NULL;\n    b->colourNum = 0;\n    b->unk104 = a0;\n    b->shapePtr = NULL;\n    gd_set_identity_mat4(&b->mat70);\n    b->spring = 0.8f;\n    b->unk114 = 0.9f;\n    b->unkF8 = 100.0f;\n\n    if (j1 != NULL && j2 != NULL) {\n        add_joint2bone(b, j1);\n        add_joint2bone(b, j2);\n    }\n\n    printf(\"Made bone %d\\n\", b->id);\n    return b;\n}\n\n/* 23E6E4 -> 23E6F8; not called */\nvoid stub_joints_1(UNUSED u32 a0) {\n}\n\n/* 23E6F8 -> 23E758; not called */\nvoid func_8018FF28(struct ObjJoint *a0, struct ObjJoint *a1) {\n    if (a1->flags & 0x1) {\n        a0->unk84.x -= a1->unk84.x;\n        a0->unk84.y -= a1->unk84.y;\n        a0->unk84.z -= a1->unk84.z;\n    }\n}\n\n/**\n * Unused (not called) - possibly was used to print indent levels inside\n * recursive functions\n */\nvoid print_some_spaces(s32 size) {\n    s32 i;\n\n    for (i = 0; i < size - 1; i++) {\n        gd_printf(\"  \");\n    }\n}\n\n/* 23E7B8 -> 23E938 */\ns32 func_8018FFE8(struct ObjBone **a0, struct ObjJoint **a1, struct ObjJoint *a2, struct ObjJoint *a3) {\n    struct ObjBone *b; // 1C\n    struct ObjJoint *sp18;\n    s32 sp14 = 0;\n    struct ObjGroup *bonegrp; // 10\n    struct ObjGroup *grp;     // 0c\n    struct ListNode *bonelink;   // 08\n    struct ListNode *link;       // 04\n\n    grp = a3->unk1C4;\n\n    if (grp == NULL) {\n        return 0;\n    }\n    link = grp->firstMember;\n    if (link == NULL) {\n        return 0;\n    }\n\n    while (link != NULL) {\n        if ((b = (struct ObjBone *) link->obj) != NULL) {\n            bonegrp = b->unk10C;\n            bonelink = bonegrp->firstMember;\n\n            while (bonelink != NULL) {\n                sp18 = (struct ObjJoint *) bonelink->obj;\n\n                if (sp18 != a3 && sp18 != a2) {\n                    a1[sp14] = sp18;\n                    a0[sp14] = b;\n                    sp14++;\n                }\n\n                bonelink = bonelink->next;\n            }\n        }\n        link = link->next;\n    }\n\n    return sp14;\n}\n\n/* 23E938 -> 23EBB8 */\nvoid func_80190168(struct ObjBone *b, UNUSED struct ObjJoint *a1, UNUSED struct ObjJoint *a2,\n                   struct GdVec3f *a3) {\n    struct GdVec3f sp7C;\n    UNUSED u8 filler1[24];\n    f32 sp60;\n    f32 sp5C;\n    f32 sp58;\n    UNUSED u8 filler2[60];\n\n    return;\n\n    b->unk58.x = sp7C.x;\n    b->unk58.y = sp7C.y;\n    b->unk58.z = sp7C.z;\n\n    if (b->unk104 & 0x8) {\n        sp58 = gd_vec3f_magnitude(&sp7C);\n        if (sp58 == 0.0f) {\n            sp58 = 1.0f;\n        }\n        sp60 = (b->unkF8 / sp58) * b->spring;\n    }\n\n    if (b->unk104 & 0x4) {\n        if (sp60 > (sp58 = gd_vec3f_magnitude(&sp7C))) {\n            sp5C = b->spring;\n            a3->x *= sp5C;\n            a3->y *= sp5C;\n            a3->z *= sp5C;\n        } else {\n            a3->x = 0.0f;\n            a3->y = 0.0f;\n            a3->z = 0.0f;\n        }\n    }\n\n    if (b->unk104 & 0x2) {\n        if (sp60 < (sp58 = gd_vec3f_magnitude(&sp7C))) {\n            sp5C = b->spring;\n            a3->x *= sp5C;\n            a3->y *= sp5C;\n            a3->z *= sp5C;\n        } else {\n            a3->x = 0.0f;\n            a3->y = 0.0f;\n            a3->z = 0.0f;\n        }\n    }\n}\n\n/* 23EBB8 -> 23ED44 */\nvoid func_801903E8(struct ObjJoint *j, struct GdVec3f *a1, f32 x, f32 y, f32 z) {\n    f32 sp14;\n    struct GdVec3f sp8;\n\n    if (j->flags & 0x1 || (j->flags & 0x1000) == 0) {\n        j->unk3C.x += x;\n        j->unk3C.y += y;\n        j->unk3C.z += z;\n        a1->x = a1->y = a1->z = 0.0f;\n        ;\n\n    } else {\n        sp14 = (j->unkB4.x * x) + (j->unkB4.y * y) + (j->unkB4.z * z);\n        sp8.x = j->unkB4.x * sp14;\n        sp8.y = j->unkB4.y * sp14;\n        sp8.z = j->unkB4.z * sp14;\n\n        j->unk3C.x += sp8.x;\n        j->unk3C.y += sp8.y;\n        j->unk3C.z += sp8.z;\n\n        a1->x = x - sp8.x;\n        a1->y = y - sp8.y;\n        a1->z = z - sp8.z;\n    }\n}\n\n/* 23EBB8 -> 23F184 */\nvoid func_80190574(s32 a0, struct ObjJoint *a1, struct ObjJoint *a2, f32 x, f32 y, f32 z) { // sp278\n    struct ObjJoint *sp274; // = a2?\n    struct ObjJoint *sp270; // mid-point of stack array?\n    struct ObjJoint *sp26C; // jointstackarr[i]? curjoint?\n    UNUSED u8 filler1[4];\n    UNUSED u32 unused = 0;\n    UNUSED u8 filler2[12]; // unused vec?\n    struct GdVec3f sp24C;\n    struct GdVec3f sp240;\n    UNUSED u8 filler3[8];\n    s32 sp234; // i?\n    s32 sp230;\n    s32 sp22C = 1;\n    UNUSED u8 filler4[4];\n    s32 sp224;\n    s32 sp220;\n    struct ObjJoint *sp120[0x40];\n    struct ObjBone *sp20[0x40];\n\n    for (sp230 = 1; sp230 < a0; sp230 *= 2) {\n        sp22C = sp22C * 2 + 1;\n    }\n\n    if (a0 & 0x8000) {\n        fatal_print(\"Too many nestings!\\n\");\n    }\n\n    printf(\"\\n\");\n    printf(\"NIDmask: %d /  \", a0);\n\n    a2->unk1C0 |= a0;\n    sp224 = func_8018FFE8(sp20, sp120, a1, a2);\n    func_801903E8(a2, &sp240, x, y, z);\n    for (sp234 = 0; sp234 < sp224; sp234++) {\n        if (a1 != NULL) {\n            printf(\"branch %d from j%d-j%d(%d): \", sp234, a2->id, a1->id, sp224);\n        } else {\n            printf(\"branch %d from j%d(%d): \", sp234, a2->id, sp224);\n        }\n\n        sp274 = a2;\n        sp26C = sp120[sp234];\n        func_80190168(sp20[sp234], sp274, sp26C, &sp24C);\n        do {\n            sp220 = func_8018FFE8(&sp20[0x20], &sp120[0x20], sp274, sp26C);\n            sp270 = sp120[0x20];\n            if (sp26C->unk1C0 & sp22C) {\n                break;\n            }\n\n            if (sp220 < 2) {\n                if (sp26C->flags & 0x1) {\n                    sJointArrLen++;\n                    sJointArr[sJointArrLen] = sp274;\n                    sJointArrVecs[sJointArrLen].x = -sp24C.x;\n                    sJointArrVecs[sJointArrLen].y = -sp24C.y;\n                    sJointArrVecs[sJointArrLen].z = -sp24C.z;\n\n                    sp26C->unk90.x += sp24C.x;\n                    sp26C->unk90.y += sp24C.y;\n                    sp26C->unk90.z += sp24C.z;\n\n                    sp26C->unk90.x += sp240.x;\n                    sp26C->unk90.y += sp240.y;\n                    sp26C->unk90.z += sp240.z;\n\n                    sp240.x = sp240.y = sp240.z = 0.0f;\n                    break;\n                } else {\n                    sp24C.x += sp240.x;\n                    sp24C.y += sp240.y;\n                    sp24C.z += sp240.z;\n\n                    func_801903E8(sp26C, &sp240, sp24C.x, sp24C.y, sp24C.z);\n                }\n\n                if (sp220 == 1) {\n                    func_80190168(sp20[0x20], sp26C, sp270, &sp24C);\n                }\n            }\n\n            if (sp220 > 1) {\n                func_80190574(a0 * 2, sp274, sp26C, sp24C.x, sp24C.y, sp24C.z);\n                break;\n            }\n\n            sp274 = sp26C;\n            sp26C = sp270;\n        } while (sp220);\n        printf(\"Exit\");\n        // probably sp274(sp26C) because it would make sense to print\n        // the iterations of both of these loops.\n        printf(\" %d(%d)\", sp274->id, sp26C->id);\n        printf(\"R \");\n        printf(\"\\n\");\n    }\n\n    printf(\"\\n\\n\");\n}\n\n/* 23F184 -> 23F1F0 */\nvoid func_801909B4(void) {\n    struct ObjJoint *node;\n\n    D_801A82D0 = 0;\n    node = gGdJointList;\n    while (node != NULL) {\n        node->unk1C0 = 0;\n        node = node->nextjoint;\n    }\n}\n\n/* 23F1F0 -> 23F324; not called */\nvoid func_80190A20(void) {\n    struct ObjJoint *j; // sp3c\n    UNUSED u8 filler[4];\n    struct GdVec3f vec; // sp2C\n    struct ObjGroup *grp;\n    struct ListNode *link;\n    struct ObjBone *b;\n\n    j = gGdJointList;\n    while (j != NULL) {\n        if (j->flags & 0x40) {\n            grp = j->unk1C4;\n            link = grp->firstMember;\n            b = (struct ObjBone *) link->obj;\n\n            vec.z = b->unk40.x * 100.0f;\n            vec.y = b->unk40.y * 100.0f;\n            vec.x = b->unk40.z * 100.0f;\n            func_80190574(1, NULL, j, vec.z, vec.y, vec.x);\n        }\n\n        j = j->nextjoint;\n    }\n}\n\n/* 23F324 -> 23F638 */\nvoid func_80190B54(struct ObjJoint *a0, struct ObjJoint *a1, struct GdVec3f *a2) { // b0\n    struct GdVec3f spA4;\n    UNUSED u8 filler1[12];\n    struct GdVec3f sp8C;\n    struct GdVec3f sp80;\n    f32 sp7C;\n    f32 sp78;\n    Mat4f sp38;\n    UNUSED u8 filler2[28];\n\n    if (a1 != NULL) {\n        spA4.x = a1->unk3C.x;\n        spA4.y = a1->unk3C.y;\n        spA4.z = a1->unk3C.z;\n\n        spA4.x -= a0->unk3C.x;\n        spA4.y -= a0->unk3C.y;\n        spA4.z -= a0->unk3C.z;\n\n        sp8C.x = spA4.x;\n        sp8C.y = spA4.y;\n        sp8C.z = spA4.z;\n        gd_normalize_vec3f(&sp8C);\n\n        sp7C = a1->unk228;\n\n        D_801BAAE0.x = spA4.x - (sp8C.x * sp7C);\n        D_801BAAE0.y = spA4.y - (sp8C.y * sp7C);\n        D_801BAAE0.z = spA4.z - (sp8C.z * sp7C);\n\n        sp78 = 5.4 / sp7C; //? 5.4f\n        D_801BAAD0.x *= sp78;\n        D_801BAAD0.y *= sp78;\n        D_801BAAD0.z *= sp78;\n\n        spA4.x *= sp78;\n        spA4.y *= sp78;\n        spA4.z *= sp78;\n\n        gd_cross_vec3f(&spA4, &D_801BAAD0, &sp80);\n        sp78 = gd_vec3f_magnitude(&sp80);\n        gd_normalize_vec3f(&sp80);\n        gd_create_rot_mat_angular(&sp38, &sp80, sp78);\n        gd_mult_mat4f(&a0->matE8, &sp38, &a0->matE8);\n\n    } else {\n        D_801BAAE0.x = a2->x;\n        D_801BAAE0.y = a2->y;\n        D_801BAAE0.z = a2->z;\n    }\n\n    a0->unk3C.x += D_801BAAE0.x;\n    a0->unk3C.y += D_801BAAE0.y;\n    a0->unk3C.z += D_801BAAE0.z;\n\n    D_801BAAD0.x = D_801BAAE0.x;\n    D_801BAAD0.y = D_801BAAE0.y;\n    D_801BAAD0.z = D_801BAAE0.z;\n}\n\n/* 23F638 -> 23F70C; not called */\nvoid func_80190E68(struct GdObj *obj, f32 x, f32 y, f32 z) {\n    struct ObjJoint *sp44;\n    struct GdObj *sp40;\n    struct GdVec3f vec;\n    UNUSED u8 filler[24];\n\n    vec.x = x;\n    vec.y = y;\n    vec.z = z;\n\n    sp44 = NULL;\n    sp40 = obj;\n    while (sp40 != NULL) {\n        if (sp40->type != OBJ_TYPE_JOINTS) {\n            break;\n        }\n\n        func_80190B54(((struct ObjJoint *) sp40), sp44, &vec);\n        sp44 = ((struct ObjJoint *) sp40);\n        sp40 = ((struct ObjJoint *) sp40)->attachedToObj;\n    }\n}\n\n/* 23F70C -> 23F978 */\nf32 func_80190F3C(struct ObjJoint *a0, f32 a1, f32 a2, f32 a3) {\n    struct ObjJoint *curj;\n    s32 i;\n    struct GdVec3f sp24;\n\n    sp24.x = a0->unk3C.x;\n    sp24.y = a0->unk3C.y;\n    sp24.z = a0->unk3C.z;\n\n    func_801909B4();\n    sJointArrLen = 0;\n    func_80190574(1, NULL, a0, a1, a2, a3);\n\n    for (i = 1; i <= sJointArrLen; i++) {\n        sJointArr2[i] = sJointArr[i];\n        sJointArr2Vecs[i].x = sJointArrVecs[i].x;\n        sJointArr2Vecs[i].y = sJointArrVecs[i].y;\n        sJointArr2Vecs[i].z = sJointArrVecs[i].z;\n    }\n    printf(\"Num return joints (pass 1): %d\\n\", i);\n\n    sJointArr2Len = sJointArrLen;\n    sJointArrLen = 0;\n\n    for (i = 1; i <= sJointArr2Len; i++) {\n        func_801909B4();\n        curj = sJointArr2[i];\n        func_80190574(1, NULL, curj, sJointArr2Vecs[i].x, sJointArr2Vecs[i].y, sJointArr2Vecs[i].z);\n    }\n    printf(\"Num return joints (pass 2): %d\\n\", i);\n\n    sp24.x -= a0->unk3C.x;\n    sp24.y -= a0->unk3C.y;\n    sp24.z -= a0->unk3C.z;\n\n    return gd_vec3f_magnitude(&sp24);\n}\n\n/* 23F978 -> 23F9F0 */\nvoid func_801911A8(struct ObjJoint *j) {\n    j->unkCC.x = j->shapeOffset.x;\n    j->unkCC.y = j->shapeOffset.y;\n    j->unkCC.z = j->shapeOffset.z;\n\n    gd_rotate_and_translate_vec3f(&j->unkCC, &gGdSkinNet->mat128);\n}\n\n/* 23F9F0 -> 23FB90 */\nvoid func_80191220(struct ObjJoint *j) {\n    j->unk48.x = j->initPos.x; // storing \"attached offset\"?\n    j->unk48.y = j->initPos.y;\n    j->unk48.z = j->initPos.z;\n\n    gd_mat4f_mult_vec3f(&j->unk48, &gGdSkinNet->mat128);\n    j->unk3C.x = j->unk48.x;\n    j->unk3C.y = j->unk48.y;\n    j->unk3C.z = j->unk48.z;\n    j->worldPos.x = gGdSkinNet->worldPos.x;\n    j->worldPos.y = gGdSkinNet->worldPos.y;\n    j->worldPos.z = gGdSkinNet->worldPos.z;\n\n    j->worldPos.x += j->unk3C.x;\n    j->worldPos.y += j->unk3C.y;\n    j->worldPos.z += j->unk3C.z;\n    j->unk1A8.x = j->unk1A8.y = j->unk1A8.z = 0.0f;\n    gGdCounter.ctr0++;\n}\n\n/* 23FB90 -> 23FBC0 */\nvoid func_801913C0(struct ObjJoint *j) {\n    UNUSED u8 filler[16];\n    func_80181894(j);\n}\n\n/* 23FBC0 -> 23FCC8 */\nvoid func_801913F0(struct ObjJoint *j) {\n    // hmm...\n    j->velocity.x = j->worldPos.x;\n    j->velocity.y = j->worldPos.y;\n    j->velocity.z = j->worldPos.z;\n\n    j->velocity.x -= j->unk30.x;\n    j->velocity.y -= j->unk30.y;\n    j->velocity.z -= j->unk30.z;\n\n    j->unk30.x = j->worldPos.x;\n    j->unk30.y = j->worldPos.y;\n    j->unk30.z = j->worldPos.z;\n\n    gd_copy_mat4f(&gGdSkinNet->mat128, &j->matE8);\n}\n\n/* 23FCC8 -> 23FCDC */\nvoid stub_joints_2(UNUSED struct ObjJoint *j) {\n}\n\n/* 23FCDC -> 23FDD4; not called */\nvoid func_8019150C(Mat4f *a0, struct GdVec3f *a1) {\n    struct GdVec3f sp1C;\n\n    sp1C.x = (*a0)[3][0] / 10.0; //? 10.0f\n    sp1C.y = (*a0)[3][1] / 10.0; //? 10.0f\n    sp1C.z = (*a0)[3][2] / 10.0; //? 10.0f\n\n    a1->x += sp1C.x;\n    a1->y += sp1C.y;\n    a1->z += sp1C.z;\n    gd_mat4f_mult_vec3f(a1, a0);\n}\n\n/* 23FDD4 -> 23FFF4 */\nvoid reset_joint(struct ObjJoint *j) {\n    j->worldPos.x = j->initPos.x;\n    j->worldPos.y = j->initPos.y;\n    j->worldPos.z = j->initPos.z;\n\n    j->unk30.x = j->initPos.x;\n    j->unk30.y = j->initPos.y;\n    j->unk30.z = j->initPos.z;\n\n    j->unk3C.x = j->initPos.x;\n    j->unk3C.y = j->initPos.y;\n    j->unk3C.z = j->initPos.z;\n\n    j->velocity.x = j->velocity.y = j->velocity.z = 0.0f;\n    j->unk84.x = j->unk84.y = j->unk84.z = 0.0f;\n    j->unk90.x = j->unk90.y = j->unk90.z = 0.0f;\n    j->unk1A8.x = j->unk1A8.y = j->unk1A8.z = 0.0f;\n\n    gd_set_identity_mat4(&j->mat168);\n    gd_scale_mat4f_by_vec3f(&j->mat168, (struct GdVec3f *) &j->scale);\n    gd_rot_mat_about_vec(&j->mat168, (struct GdVec3f *) &j->unk6C);\n    gd_add_vec3f_to_mat4f_offset(&j->mat168, &j->attachOffset);\n    gd_copy_mat4f(&j->mat168, &j->matE8);\n\n    gd_set_identity_mat4(&j->mat128);\n    gd_add_vec3f_to_mat4f_offset(&j->mat128, &j->initPos);\n}\n\n/* 23FFF4 -> 2400C4 */\nvoid func_80191824(struct ObjJoint *j) {\n    UNUSED struct ObjNet *sp14;\n    UNUSED u8 filler[16];\n\n    sp14 = gGdSkinNet->unk1F0;\n    if (j->flags & 0x1) {\n        j->worldPos.x = gGdSkinNet->worldPos.x;\n        j->worldPos.y = gGdSkinNet->worldPos.y;\n        j->worldPos.z = gGdSkinNet->worldPos.z;\n\n        j->unk3C.x = gGdSkinNet->worldPos.x;\n        j->unk3C.y = gGdSkinNet->worldPos.y;\n        j->unk3C.z = gGdSkinNet->worldPos.z;\n    }\n}\n\n/* 2400C4 -> 2401EC; not called */\nvoid func_801918F4(struct ObjJoint *j) {\n    f32 sp4;\n\n    j->velocity.x = j->unk3C.x;\n    j->velocity.y = j->unk3C.y;\n    j->velocity.z = j->unk3C.z;\n\n    j->velocity.x -= j->unk30.x;\n    j->velocity.y -= j->unk30.y;\n    j->velocity.z -= j->unk30.z;\n\n    j->unk30.x = j->unk3C.x;\n    j->unk30.y = j->unk3C.y;\n    j->unk30.z = j->unk3C.z;\n\n    sp4 = -4.0f;\n\n    if (!(j->flags & 0x41)) {\n        j->velocity.y += sp4 * 0.2; //? 0.2f\n\n        j->unk3C.x += j->velocity.x;\n        j->unk3C.y += j->velocity.y;\n        j->unk3C.z += j->velocity.z;\n    }\n}\n\n/* 2401EC -> 2403C8; not called */\nvoid func_80191A1C(struct ObjBone *a0) {\n    f32 sp3C;\n    f32 sp38 = 0.0f;\n    struct GdObj *argjoint;\n    struct GdObj *tempjoint;\n    struct GdVec3f sp24;\n    struct GdVec3f sp18;\n\n    if (gGdTempBone == NULL) {\n        gGdTempBone = a0;\n    }\n    sp3C = gd_dot_vec3f(&gGdTempBone->unk40, &a0->unk40);\n    a0->unk118 = sp3C;\n\n    if ((sp3C -= sp38) < 0.0f) {\n        tempjoint = gGdTempBone->unk10C->firstMember->obj;\n        argjoint = a0->unk10C->firstMember->next->obj;\n        set_cur_dynobj(argjoint);\n        d_get_rel_pos(&sp24);\n        set_cur_dynobj(tempjoint);\n        d_get_rel_pos(&sp18);\n\n        sp24.x -= sp18.x;\n        sp24.y -= sp18.y;\n        sp24.z -= sp18.z;\n        gd_normalize_vec3f(&sp24);\n\n        sp3C = -sp3C * 50.0; //? 50.0f\n        if (!(((struct ObjJoint *) argjoint)->flags & 0x1)) {\n            func_80190F3C((struct ObjJoint *) argjoint, sp24.x * sp3C, sp24.y * sp3C, sp24.z * sp3C);\n        }\n    }\n    gGdTempBone = a0;\n}\n\n/* 2403C8 -> 240530 */\nvoid func_80191BF8(struct ObjJoint *j) {\n    f32 sp1C;\n    f32 sp18 = -2.0f;\n\n    if (!(j->flags & 0x1)) {\n        j->unk3C.y += sp18;\n    }\n\n    if ((sp1C = j->unk3C.y - (D_801A8058 + 30.0f)) < 0.0f && j->velocity.y < 0.0f) {\n        sp1C += j->velocity.y;\n        sp1C *= 0.8; //? 0.8f\n        func_80190F3C(j, -j->velocity.x * 0.7, -sp1C, -j->velocity.z * 0.7);\n    }\n\n    func_80190F3C(j, 0.0f, 0.0f, 0.0f);\n}\n\n/* 240530 -> 240624 */\nvoid func_80191D60(struct ObjJoint *j) {\n    j->velocity.x += j->unk3C.x - j->worldPos.x;\n    j->velocity.y += j->unk3C.y - j->worldPos.y;\n    j->velocity.z += j->unk3C.z - j->worldPos.z;\n\n    j->velocity.x *= 0.9; //? 0.9f\n    j->velocity.y *= 0.9; //? 0.9f\n    j->velocity.z *= 0.9; //? 0.9f\n\n    j->worldPos.x += j->velocity.x;\n    j->worldPos.y += j->velocity.y;\n    j->worldPos.z += j->velocity.z;\n}\n\n/* 240624 -> 240658 */\nvoid func_80191E54(struct ObjJoint *j) {\n    j->unk3C.x = j->worldPos.x;\n    j->unk3C.y = j->worldPos.y;\n    j->unk3C.z = j->worldPos.z;\n}\n\n/* 240658 -> 2406B8 */\nvoid func_80191E88(struct ObjGroup *grp) {\n    apply_to_obj_types_in_group(OBJ_TYPE_JOINTS, (applyproc_t) func_80191BF8, grp);\n    apply_to_obj_types_in_group(OBJ_TYPE_JOINTS, (applyproc_t) func_80191D60, grp);\n    apply_to_obj_types_in_group(OBJ_TYPE_JOINTS, (applyproc_t) func_80191E54, grp);\n}\n\n/* 2406B8 -> 2406E0; orig name: func_80191EE8 */\nvoid reset_joint_counts(void) {\n    sJointCount = 0;\n    sJointNotF1Count = 0;\n    sBoneCount = 0;\n}\n"
  },
  {
    "path": "src/goddard/joints.h",
    "content": "#ifndef GD_JOINTS_H\n#define GD_JOINTS_H\n\n#include <PR/ultratypes.h>\n\n#include \"gd_types.h\"\n\n// bss\nextern s32 sResetWeightVtxNum;\n\n// functions\nvoid eye_joint_update_func(struct ObjJoint *self);\nstruct ObjJoint *make_joint(s32 flags, f32 x, f32 y, f32 z);\nstruct ObjJoint *make_grabber_joint(struct ObjShape *shape, s32 flags, f32 x, f32 y, f32 z);\nvoid func_8018F328(struct ObjBone *b);\nvoid func_8018FA68(struct ObjBone *b);\ns32 set_skin_weight(struct ObjJoint *j, s32 id, struct ObjVertex *vtx, f32 weight);\nvoid func_8018FB58(struct ObjBone *b);\nvoid add_joint2bone(struct ObjBone *b, struct ObjJoint *j);\nstruct ObjBone *make_bone(s32 a0, struct ObjJoint *j1, struct ObjJoint *j2, s32 a3);\nvoid func_801911A8(struct ObjJoint *j);\nvoid func_80191220(struct ObjJoint *j);\nvoid func_801913C0(struct ObjJoint *j);\nvoid func_801913F0(struct ObjJoint *j);\nvoid stub_joints_2(struct ObjJoint *j);\nvoid reset_joint(struct ObjJoint *j);\nvoid func_80191824(struct ObjJoint *j);\nvoid func_80191E88(struct ObjGroup *grp);\nvoid reset_joint_counts(void);\n\n#endif // GD_JOINTS_H\n"
  },
  {
    "path": "src/goddard/objects.c",
    "content": "#include <PR/ultratypes.h>\n#include <stdarg.h>\n#include <stdio.h>\n\n#include \"objects.h\"\n\n#include \"debug_utils.h\"\n#include \"draw_objects.h\"\n#include \"dynlist_proc.h\"\n#include \"gd_macros.h\"\n#include \"gd_main.h\"\n#include \"gd_math.h\"\n#include \"gd_types.h\"\n#include \"joints.h\"\n#include \"macros.h\"\n#include \"old_menu.h\"\n#include \"particles.h\"\n#include \"renderer.h\"\n#include \"sfx.h\"\n#include \"shape_helper.h\"\n#include \"skin.h\"\n\n// structs\nstruct Unk801B9E68 {\n    /* 0x00 */ s32 count;\n    /* 0x04 */ u8 filler[20];\n}; /* sizeof() = 0x18 */\n\nstruct Unk8017F3CC {\n    /*0x00*/ u8 filler[32];\n    /*0x20*/ struct GdVec3f unk20;\n};\n\n// data\nf32 D_801A81C0 = 0.0f;\nf32 D_801A81C4 = 0.0f;\n\n// bss\nstruct GdBoundingBox gSomeBoundingBox;\nstruct ObjCamera *sCurrentMoveCamera; // @ 801B9DB8\nstruct ObjView *sCurrentMoveView;     // @ 801B9DBC\nstruct DebugCounters gGdCounter;      // @ 801B9DC0\nMat4f D_801B9DC8;\nstruct GdVec3f D_801B9E08;\nstruct ObjGroup *sCurrentMoveGrp; // @ 801B9E14\nstruct GdVec3f D_801B9E18;\nstruct GdVec3f D_801B9E28;\nf32 D_801B9E34;\nMat4f *D_801B9E38;\nstruct ObjParticle *D_801B9E3C;\ns32 D_801B9E40;\ns32 D_801B9E44;\nMat4f *D_801B9E48;\nstruct ObjCamera *gGdCameraList; // @ 801B9E4C\nvoid *D_801B9E50;\nstruct ObjGroup *gGdGroupList;  // @ 801B9E54\ns32 gGdObjCount;                // @ 801B9E58\ns32 gGdGroupCount;              // @ 801B9E5C\ns32 gGdPlaneCount;              // @ 801B9E60\ns32 gGdCameraCount;             // @ 801B9E64\nstruct Unk801B9E68 sGdViewInfo; // @ 801B9E68\nvoid *D_801B9E80;\nstruct ObjJoint *gGdJointList;  // @ 801B9E84\nstruct ObjBone *gGdBoneList;    // @ 801B9E88\nstruct GdObj *gGdObjectList;    // head of linked list containing every single GdObj that was created\nstruct ObjGroup *gGdViewsGroup; // @ 801B9E90\n\n/* @ 22A480 for 0x70 */\nvoid reset_bounding_box(void) { /* Initialize Plane? */\n    gSomeBoundingBox.minX = 10000000.0f;\n    gSomeBoundingBox.minY = 10000000.0f;\n    gSomeBoundingBox.minZ = 10000000.0f;\n\n    gSomeBoundingBox.maxX = -10000000.0f;\n    gSomeBoundingBox.maxY = -10000000.0f;\n    gSomeBoundingBox.maxZ = -10000000.0f;\n}\n\nvoid add_obj_pos_to_bounding_box(struct GdObj *obj) {\n    struct GdVec3f pos;\n\n    set_cur_dynobj(obj);\n    d_get_world_pos(&pos);\n\n    if (pos.x < gSomeBoundingBox.minX) {\n        gSomeBoundingBox.minX = pos.x;\n    }\n\n    if (pos.y < gSomeBoundingBox.minY) {\n        gSomeBoundingBox.minY = pos.y;\n    }\n\n    if (pos.z < gSomeBoundingBox.minZ) {\n        gSomeBoundingBox.minZ = pos.z;\n    }\n\n    if (pos.x > gSomeBoundingBox.maxX) {\n        gSomeBoundingBox.maxX = pos.x;\n    }\n\n    if (pos.y > gSomeBoundingBox.maxY) {\n        gSomeBoundingBox.maxY = pos.y;\n    }\n\n    if (pos.z > gSomeBoundingBox.maxZ) {\n        gSomeBoundingBox.maxZ = pos.z;\n    }\n}\n\n/* @ 22A630 for 0x70 */\nvoid get_some_bounding_box(struct GdBoundingBox *a0) {\n    a0->minX = gSomeBoundingBox.minX;\n    a0->minY = gSomeBoundingBox.minY;\n    a0->minZ = gSomeBoundingBox.minZ;\n\n    a0->maxX = gSomeBoundingBox.maxX;\n    a0->maxY = gSomeBoundingBox.maxY;\n    a0->maxZ = gSomeBoundingBox.maxZ;\n}\n\n/* @ 22A6A0 for 0x24 */\nvoid stub_objects_1(UNUSED struct ObjGroup *a0, UNUSED struct GdObj *a1) {\n    UNUSED u8 filler[8];\n    /* Debug stub? */\n    return;\n}\n\n/**\n * Returns a string containing the name of the the object type\n */\nstatic const char *get_obj_name_str(enum ObjTypeFlag objFlag) {\n    const char *objName;\n    switch (objFlag) {\n        case OBJ_TYPE_JOINTS:\n            objName = \"joints\";\n            break;\n        case OBJ_TYPE_BONES:\n            objName = \"bones\";\n            break;\n        case OBJ_TYPE_GROUPS:\n            objName = \"groups\";\n            break;\n        case OBJ_TYPE_PARTICLES:\n            objName = \"particles\";\n            break;\n        case OBJ_TYPE_SHAPES:\n            objName = \"shapes\";\n            break;\n        case OBJ_TYPE_NETS:\n            objName = \"nets\";\n            break;\n        case OBJ_TYPE_PLANES:\n            objName = \"planes\";\n            break;\n        case OBJ_TYPE_VERTICES:\n            objName = \"vertices\";\n            break;\n        case OBJ_TYPE_CAMERAS:\n            objName = \"cameras\";\n            break;\n        case OBJ_TYPE_FACES:\n            objName = \"faces\";\n            break;\n        case OBJ_TYPE_MATERIALS:\n            objName = \"materials\";\n            break;\n        case OBJ_TYPE_LIGHTS:\n            objName = \"lights\";\n            break;\n        case OBJ_TYPE_WEIGHTS:\n            objName = \"weights\";\n            break;\n        case OBJ_TYPE_GADGETS:\n            objName = \"gadgets\";\n            break;\n        case OBJ_TYPE_VIEWS:\n            objName = \"views\";\n            break;\n        case OBJ_TYPE_LABELS:\n            objName = \"labels\";\n            break;\n        case OBJ_TYPE_ANIMATORS:\n            objName = \"animators\";\n            break;\n        case OBJ_TYPE_VALPTRS:\n            objName = \"valptrs\";\n            break;\n        case OBJ_TYPE_ZONES:\n            objName = \"zones\";\n            break;\n        default:\n            objName = \"unkown\";\n            break;\n    }\n    return objName;\n}\n\n/**\n * Creates an object of the specified type\n */\nstruct GdObj *make_object(enum ObjTypeFlag objType) {\n    struct GdObj *newObj;\n    struct GdObj *objListOldHead;\n    s32 objSize;\n    s32 i;\n    drawmethod_t objDrawFn;\n    const char *typeName;\n    u8 *newObjBytes;\n    s32 objPermanence = 0x10;\n\n    imin(\"make_object\");\n\n    switch (objType) {\n        case OBJ_TYPE_JOINTS:\n            objSize = sizeof(struct ObjJoint);\n            objDrawFn = (drawmethod_t) draw_joint;\n            break;\n        case OBJ_TYPE_BONES:\n            objSize = sizeof(struct ObjBone);\n            objDrawFn = (drawmethod_t) draw_bone;\n            break;\n        case OBJ_TYPE_GROUPS:\n            objSize = sizeof(struct ObjGroup);\n            objDrawFn = (drawmethod_t) draw_group;\n            break;\n        case OBJ_TYPE_PARTICLES:\n            objSize = sizeof(struct ObjParticle);\n            objDrawFn = (drawmethod_t) draw_particle;\n            break;\n        case OBJ_TYPE_SHAPES:\n            objSize = sizeof(struct ObjShape);\n            // Shapes get drawn by their parent object instead of automatically.\n            objDrawFn = (drawmethod_t) draw_nothing;\n            break;\n        case OBJ_TYPE_UNK200000:\n            objSize = sizeof(struct ObjUnk200000);\n            objDrawFn = (drawmethod_t) draw_nothing;\n            break;\n        case OBJ_TYPE_NETS:\n            objSize = sizeof(struct ObjNet);\n            objDrawFn = (drawmethod_t) draw_net;\n            break;\n        case OBJ_TYPE_PLANES:\n            objSize = sizeof(struct ObjPlane);\n            objDrawFn = (drawmethod_t) draw_plane;\n            break;\n        case OBJ_TYPE_VERTICES:\n            objSize = sizeof(struct ObjVertex);\n            objDrawFn = (drawmethod_t) draw_nothing;\n            break;\n        case OBJ_TYPE_CAMERAS:\n            objSize = sizeof(struct ObjCamera);\n            objDrawFn = (drawmethod_t) draw_camera;\n            break;\n        case OBJ_TYPE_FACES:\n            objSize = sizeof(struct ObjFace);\n            objDrawFn = (drawmethod_t) draw_face;\n            objPermanence = 1;\n            break;\n        case OBJ_TYPE_MATERIALS:\n            objSize = sizeof(struct ObjMaterial);\n            objDrawFn = (drawmethod_t) draw_material;\n            break;\n        case OBJ_TYPE_LIGHTS:\n            objSize = sizeof(struct ObjLight);\n            objDrawFn = (drawmethod_t) draw_light;\n            break;\n        case OBJ_TYPE_WEIGHTS:\n            objSize = sizeof(struct ObjWeight);\n            objDrawFn = (drawmethod_t) draw_nothing;\n            break;\n        case OBJ_TYPE_GADGETS:\n            objSize = sizeof(struct ObjGadget);\n            objDrawFn = (drawmethod_t) draw_gadget;\n            break;\n        case OBJ_TYPE_VIEWS:\n            objSize = sizeof(struct ObjView);\n            objDrawFn = (drawmethod_t) draw_nothing;\n            break;\n        case OBJ_TYPE_LABELS:\n            objSize = sizeof(struct ObjLabel);\n            objDrawFn = (drawmethod_t) draw_label;\n            break;\n        case OBJ_TYPE_ANIMATORS:\n            objSize = sizeof(struct ObjAnimator);\n            objDrawFn = (drawmethod_t) draw_nothing;\n            break;\n        case OBJ_TYPE_VALPTRS:\n            objSize = sizeof(struct ObjValPtr);\n            objDrawFn = (drawmethod_t) draw_nothing;\n            break;\n        case OBJ_TYPE_ZONES:\n            objSize = sizeof(struct ObjZone);\n            objDrawFn = (drawmethod_t) draw_nothing;\n            break;\n        default:\n            fatal_print(\"make_object() : Unkown object!\");\n    }\n\n    typeName = get_obj_name_str(objType);\n\n    // Allocate memory for the object\n    start_memtracker(typeName);\n    newObj = gd_malloc(objSize, objPermanence);\n    if (newObj == NULL) {\n        fatal_printf(\"Cant allocate object '%s' memory!\", typeName);\n    }\n    stop_memtracker(typeName);\n\n    // Zero out the object\n    newObjBytes = (u8 *) newObj;\n    for (i = 0; i < objSize; i++) {\n        newObjBytes[i] = 0;\n    }\n\n    // Add the new object to the beginning of gGdObjectList\n    gGdObjCount++;\n    objListOldHead = gGdObjectList;\n    gGdObjectList = newObj;\n    newObj->prev = NULL;\n    if (objListOldHead != NULL) {\n        newObj->next = objListOldHead;\n        objListOldHead->prev = newObj;\n    }\n\n    // Fill in required fields\n    newObj->index = gGdObjCount;\n    newObj->type = objType;\n    newObj->objDrawFn = objDrawFn;\n    newObj->drawFlags = 0;\n\n    imout();\n    return newObj;\n}\n\n/* @ 22AEA0 for 0xD0; orig name: func_8017C6D0 */\nstruct ObjZone *make_zone(struct ObjGroup *a0, struct GdBoundingBox *bbox, struct ObjGroup *a2) {\n    struct ObjZone *newZone = (struct ObjZone *) make_object(OBJ_TYPE_ZONES);\n\n    newZone->boundingBox.minX = bbox->minX;\n    newZone->boundingBox.minY = bbox->minY;\n    newZone->boundingBox.minZ = bbox->minZ;\n    newZone->boundingBox.maxX = bbox->maxX;\n    newZone->boundingBox.maxY = bbox->maxY;\n    newZone->boundingBox.maxZ = bbox->maxZ;\n    // pointers? prev, next?\n    newZone->unk2C = a2;\n    newZone->unk30 = a0;\n\n//! @bug Created `ObjZone` is not returned\n#ifdef AVOID_UB\n    return newZone;\n#endif\n}\n\n/* @ 22AF70 for 0x60 */\nstruct ObjUnk200000 *func_8017C7A0(struct ObjVertex *a0, struct ObjFace *a1) {\n    struct ObjUnk200000 *unk = (struct ObjUnk200000 *) make_object(OBJ_TYPE_UNK200000);\n\n    unk->unk30 = a0;\n    unk->unk34 = a1;\n\n    return unk;\n}\n\n/**\n * Creates a ListNode for the object. Adds the new node after `prevNode` if `prevNode` is not NULL.\n */\nstruct ListNode *make_link_to_obj(struct ListNode *prevNode, struct GdObj *obj) {\n    struct ListNode *newNode;\n\n    // Allocate link node\n    start_memtracker(\"links\");\n    newNode = gd_malloc_perm(sizeof(struct ListNode));\n    if (newNode == NULL) {\n        fatal_print(\"Cant allocate link memory!\");\n    }\n    stop_memtracker(\"links\");\n\n    // Append to `prevNode` if not NULL\n    if (prevNode != NULL) {\n        prevNode->next = newNode;\n    }\n\n    newNode->prev = prevNode;\n    newNode->next = NULL;\n    newNode->obj = obj;\n\n    return newNode;\n}\n\n/*\n * Creates a VtxLink for the vertex. Adds the new node after `prevNode` if `prevNode` is not NULL.\n */\nstruct VtxLink *make_vtx_link(struct VtxLink *prevNode, Vtx *data) {\n    struct VtxLink *newNode;\n\n    newNode = gd_malloc_perm(sizeof(struct VtxLink));\n    if (newNode == NULL) {\n        fatal_print(\"Cant allocate link memory!\");\n    }\n\n    // Append to `prevNode` if not NULL\n    if (prevNode != NULL) {\n        prevNode->next = newNode;\n    }\n\n    newNode->prev = prevNode;\n    newNode->next = NULL;\n    newNode->data = data;\n\n    // WTF? Not sure what this is supposed to check\n    if (((uintptr_t)(newNode)) == 0x3F800000) {\n        fatal_printf(\"bad3\\n\");\n    }\n\n    return newNode;\n}\n\n/* @ 22B154 for 0x88; orig name: func8017C984 */\nstruct ObjValPtr *make_valptr(struct GdObj *obj, s32 flag, enum ValPtrType type, size_t offset) {\n    struct ObjValPtr *sp1C = (struct ObjValPtr *) make_object(OBJ_TYPE_VALPTRS);\n\n    sp1C->obj = obj;\n    sp1C->flag = flag;\n    sp1C->offset = offset;\n    sp1C->datatype = type;\n\n    return sp1C;\n}\n\n/* @ 22B1DC for 0x430 */\nvoid reset_plane(struct ObjPlane *plane) {\n    struct ObjFace *sp4C;\n    f32 sp48;\n    f32 sp44;\n    UNUSED u8 filler[12];\n    s32 i;\n    s32 sp30;\n    register f32 sp28;\n\n    imin(\"reset_plane\");\n\n    sp4C = plane->unk40;\n    calc_face_normal(sp4C);\n    plane->unk1C = gd_dot_vec3f(&sp4C->vertices[0]->pos, &sp4C->normal);\n    sp48 = 0.0f;\n\n    sp28 = sp4C->normal.x < 0.0f ? -sp4C->normal.x : sp4C->normal.x;\n    sp44 = sp28;\n    if (sp44 > sp48) {\n        sp30 = 0;\n        sp48 = sp44;\n    }\n\n    sp28 = sp4C->normal.y < 0.0f ? -sp4C->normal.y : sp4C->normal.y;\n    sp44 = sp28;\n    if (sp44 > sp48) {\n        sp30 = 1;\n        sp48 = sp44;\n    }\n\n    sp28 = sp4C->normal.z < 0.0f ? -sp4C->normal.z : sp4C->normal.z;\n    sp44 = sp28;\n    if (sp44 > sp48) {\n        sp30 = 2;\n    }\n\n    switch (sp30) {\n        case 0:\n            plane->unk20 = 1;\n            plane->unk24 = 2;\n            break;\n        case 1:\n            plane->unk20 = 0;\n            plane->unk24 = 2;\n            break;\n        case 2:\n            plane->unk20 = 0;\n            plane->unk24 = 1;\n            break;\n    }\n\n    reset_bounding_box();\n\n    for (i = 0; i < sp4C->vtxCount; i++) {\n        add_obj_pos_to_bounding_box(&sp4C->vertices[i]->header);\n    }\n\n    plane->boundingBox.minX = gSomeBoundingBox.minX;\n    plane->boundingBox.minY = gSomeBoundingBox.minY;\n    plane->boundingBox.minZ = gSomeBoundingBox.minZ;\n    plane->boundingBox.maxX = gSomeBoundingBox.maxX;\n    plane->boundingBox.maxY = gSomeBoundingBox.maxY;\n    plane->boundingBox.maxZ = gSomeBoundingBox.maxZ;\n\n    if (plane->boundingBox.maxX - plane->boundingBox.minX < 100.0f) {\n        plane->boundingBox.maxX += 50.0f;\n        plane->boundingBox.minX -= 50.0f;\n    }\n\n    plane->boundingBox.maxY += 200.0f;\n    plane->boundingBox.minY -= 200.0f;\n\n    if (plane->boundingBox.maxZ - plane->boundingBox.minZ < 100.0f) {\n        plane->boundingBox.maxZ += 50.0f;\n        plane->boundingBox.minZ -= 50.0f;\n    }\n    imout();\n}\n\n/* @ 22B60C for 0x94; orig name: func_8017CE3C */\nstruct ObjPlane *make_plane(s32 inZone, struct ObjFace *a1) {\n    UNUSED u8 filler[4];\n    struct ObjPlane *newPlane = (struct ObjPlane *) make_object(OBJ_TYPE_PLANES);\n\n    gGdPlaneCount++;\n    newPlane->id = gGdPlaneCount;\n    newPlane->unk18 = inZone;\n    newPlane->unk40 = a1;\n    reset_plane(newPlane);\n\n    return newPlane;\n}\n\n/* @ 22B6A0 for 0x21C; orig name: func_8017CED0 */\nstruct ObjCamera *make_camera(s32 flags, struct GdObj *a1) {\n    struct ObjCamera *newCam;\n    struct ObjCamera *oldCameraHead;\n\n    newCam = (struct ObjCamera *) make_object(OBJ_TYPE_CAMERAS);\n\n    gGdCameraCount++;\n    newCam->id = gGdCameraCount;\n\n    oldCameraHead = gGdCameraList;\n    gGdCameraList = newCam;\n\n    if (oldCameraHead != NULL) {\n        newCam->next = oldCameraHead;\n        oldCameraHead->prev = newCam;\n    }\n\n    newCam->flags = flags | 0x10;\n    newCam->unk30 = a1;\n    gd_set_identity_mat4(&newCam->unk64);\n    gd_set_identity_mat4(&newCam->unkA8);\n\n    newCam->unk180.x = 1.0f;\n    newCam->unk180.y = 0.1f;\n    newCam->unk180.z = 1.0f;\n\n    newCam->unk134.x = 4.0f;\n    newCam->unk134.y = 4.0f;\n    newCam->unk134.z = 4.0f;\n\n    newCam->unk178 = 0.0f;\n    newCam->unk17C = 0.25f;\n\n    newCam->zoomLevel = 0;\n    newCam->maxZoomLevel = -1;\n\n    newCam->unkA4 = 0.0f;\n\n    newCam->lookAt.x = newCam->lookAt.y = newCam->lookAt.z = 0.0f;\n    newCam->worldPos.x = newCam->worldPos.y = newCam->worldPos.z = 0.0f;\n\n    return newCam;\n}\n\n/* @ 22B8BC for 0xA8; orig. name: func_8017D0EC */\nstruct ObjMaterial *make_material(UNUSED s32 a0, char *name, s32 id) {\n    struct ObjMaterial *newMtl;\n\n    newMtl = (struct ObjMaterial *) make_object(OBJ_TYPE_MATERIALS);\n\n    if (name != NULL) {\n        gd_strcpy(newMtl->name, name);\n    } else {\n        gd_strcpy(newMtl->name, \"NoName\");\n    }\n\n    newMtl->id = id;\n    newMtl->gddlNumber = 0;\n    newMtl->type = 16;\n\n    return newMtl;\n}\n\n/* @ 22B964 for 0x114; orig name: func_8017D194 */\nstruct ObjLight *make_light(s32 flags, char *name, s32 id) {\n    struct ObjLight *newLight;\n\n    newLight = (struct ObjLight *) make_object(OBJ_TYPE_LIGHTS);\n\n    if (name != NULL) {\n        gd_strcpy(newLight->name, name);\n    } else {\n        gd_strcpy(newLight->name, \"NoName\");\n    }\n\n    newLight->id = id;\n    newLight->unk30 = 1.0f;\n    newLight->unk4C = 0;\n    newLight->flags = flags | LIGHT_NEW_UNCOUNTED;\n    newLight->unk98 = 0;\n    newLight->unk40 = 0;\n\n    newLight->unk68.x = newLight->unk68.y = newLight->unk68.z = 0;\n\n    return newLight;\n}\n\n/* @ 22BA78 for 0x294; orig name: func_8017D2A8*/\nstruct ObjView *make_view(const char *name, s32 flags, s32 projectionType, s32 ulx, s32 uly, s32 lrx, s32 lry,\n                          struct ObjGroup *parts) {\n    struct ObjView *newView = (struct ObjView *) make_object(OBJ_TYPE_VIEWS);\n\n    if (gGdViewsGroup == NULL) {\n        gGdViewsGroup = make_group(0);\n    }\n\n    addto_group(gGdViewsGroup, &newView->header);\n\n    newView->flags = flags | VIEW_UPDATE | VIEW_LIGHT;\n    newView->id = sGdViewInfo.count++;\n\n    if ((newView->components = parts) != NULL) {\n        reset_nets_and_gadgets(parts);\n    }\n\n    newView->unk78 = 0;\n    newView->projectionType = projectionType;\n\n    newView->clipping.x = 30.0f;\n    newView->clipping.y = 5000.0f;\n    newView->clipping.z = 45.0f;\n\n    newView->upperLeft.x = (f32) ulx;\n    newView->upperLeft.y = (f32) uly;\n\n    newView->lowerRight.x = (f32) lrx;\n    newView->lowerRight.y = (f32) lry;\n\n    newView->unk48 = 1.0f;\n    newView->unk4C = 1.0f;\n\n    newView->colour.r = newView->id * 0.1; //? 0.1f, unless the extra precision was wanted for the tenth\n    newView->colour.g = 0.06f;\n    newView->colour.b = 1.0f;\n\n    newView->proc = NULL;\n    newView->unk9C = 0;\n\n    if (name != NULL) {\n        newView->unk1C = setup_view_buffers(name, newView, ulx, uly, lrx, lry);\n    }\n\n    newView->namePtr = name;\n    newView->lights = NULL;\n\n    return newView;\n}\n\n/* @ 22BD0C for 0x78; orig name: func_8017D53C */\nstruct ObjAnimator *make_animator(void) {\n    struct ObjAnimator *newAnim = (struct ObjAnimator *) make_object(OBJ_TYPE_ANIMATORS);\n    newAnim->unk24 = 1.0f;\n    newAnim->frame = 1.0f;\n\n    newAnim->controlFunc = NULL;\n    newAnim->state = 0;\n\n    return newAnim;\n}\n\n/* @ 22BD84 for 0x78; orig name: func_8017D5B4 */\nstruct ObjWeight *make_weight(UNUSED s32 a0, s32 vtxId, struct ObjVertex *vtx /* always NULL */, f32 weight) {\n    struct ObjWeight *newWeight = (struct ObjWeight *) make_object(OBJ_TYPE_WEIGHTS);\n\n    newWeight->vtxId = vtxId;\n    newWeight->weightVal = weight;\n    newWeight->vtx = vtx;  // is always NULL here. This vtx field actually gets set in reset_weight_vtx.\n\n    return newWeight;\n}\n\n/**\n * Makes a group, adding all objects from `fromObj` to `toObj` with type `type`\n * as members.\n */\nstruct ObjGroup *make_group_of_type(enum ObjTypeFlag type, struct GdObj *fromObj, struct GdObj *toObj) {\n    struct ObjGroup *newGroup;\n    struct GdObj *curObj;\n\n    newGroup = make_group(0);\n    curObj = fromObj;\n\n    while (curObj != NULL) {\n        if (curObj->type & type) {\n            addto_group(newGroup, curObj);\n        }\n\n        if (curObj == toObj) {\n            break;\n        }\n\n        curObj = curObj->prev;\n    }\n\n    return newGroup;\n}\n\n/**\n * Converts the object's ID to a string and places it in the buffer pointed to by `str`.\n */\nvoid format_object_id(char *str, struct GdObj *obj) {\n    enum ObjTypeFlag type = obj->type;\n\n    switch (type) {\n        case OBJ_TYPE_BONES:\n            sprintf(str, \"b%d \", ((struct ObjBone *) obj)->id);\n            break;\n        case OBJ_TYPE_JOINTS:\n            sprintf(str, \"j%d \", ((struct ObjJoint *) obj)->id);\n            break;\n        case OBJ_TYPE_GROUPS:\n            sprintf(str, \"g%d \", ((struct ObjGroup *) obj)->id);\n            break;\n        case OBJ_TYPE_PARTICLES:\n            sprintf(str, \"p%d \", ((struct ObjParticle *) obj)->id);\n            break;\n        case OBJ_TYPE_NETS:\n            sprintf(str, \"net(no id) \");\n            break;\n        case OBJ_TYPE_CAMERAS:\n            sprintf(str, \"c%d \", ((struct ObjCamera *) obj)->id);\n            break;\n        case OBJ_TYPE_VERTICES:\n            sprintf(str, \"v(no id) \");\n            break;\n        case OBJ_TYPE_PLANES:\n            sprintf(str, \"pl%d \", ((struct ObjPlane *) obj)->id);\n            break;\n        default:\n            sprintf(str, \"?%x \", type);\n            break;\n    }\n}\n\n/* @ 22C094 for 0x210 */\nstruct ObjGroup *make_group(s32 count, ...) {\n    va_list args;\n    s32 i;\n    UNUSED u8 filler1[4];\n    struct GdObj *curObj;\n    UNUSED u8 filler2[12];\n    struct ObjGroup *newGroup;\n    struct ObjGroup *oldGroupListHead;\n    struct GdObj *vargObj;\n    char idStrBuf[0x20];\n    struct ListNode *curLink;\n\n    newGroup = (struct ObjGroup *) make_object(OBJ_TYPE_GROUPS);\n    newGroup->id = ++gGdGroupCount;\n    newGroup->memberCount = 0;\n    newGroup->firstMember = newGroup->lastMember = NULL;\n\n    printf(\"Made group no.%d\\n\", newGroup->id);\n\n    oldGroupListHead = gGdGroupList;\n    gGdGroupList = newGroup;\n    if (oldGroupListHead != NULL) {\n        newGroup->next = oldGroupListHead;\n        oldGroupListHead->prev = newGroup;\n    }\n\n    if (count == 0) {\n        return newGroup;\n    }\n\n    va_start(args, count);\n    curLink = NULL;\n\n    for (i = 0; i < count; i++) {\n        // get the next pointer in the struct.\n        vargObj = va_arg(args, struct GdObj *);\n\n        if (vargObj == NULL) { // one of our pointers was NULL. raise an error.\n            fatal_printf(\"make_group() NULL group ptr\");\n        }\n\n        curObj = vargObj;\n        newGroup->memberTypes |= curObj->type;\n        addto_group(newGroup, vargObj);\n    }\n    va_end(args);\n\n    curLink = newGroup->firstMember;\n    printf(\"Made group no.%d from: \", newGroup->id);\n    while (curLink != NULL) {\n        curObj = curLink->obj;\n        format_object_id(idStrBuf, curObj);\n        printf(\"%s\", idStrBuf);\n        printf(\"\\n\");\n        curLink = curLink->next;\n    }\n\n    return newGroup;\n}\n\n/**\n * Adds the object as a member of the group, placing it at the end of the group's list.\n */\nvoid addto_group(struct ObjGroup *group, struct GdObj *obj) {\n    char strbuf[0x20];\n    UNUSED u8 filler[8];\n\n    imin(\"addto_group\");\n\n    // Add object to the end of group's member list\n    if (group->firstMember == NULL) {\n        group->firstMember = make_link_to_obj(NULL, obj);\n        group->lastMember = group->firstMember;\n    } else {\n        group->lastMember = make_link_to_obj(group->lastMember, obj);\n    }\n\n    group->memberTypes |= obj->type;\n    group->memberCount++;\n\n    printf(\"Added \");\n    format_object_id(strbuf, obj);\n    printf(\"%s\", strbuf);\n    printf(\" to \");\n    format_object_id(strbuf, &group->header);\n    printf(\"%s\", strbuf);\n    printf(\"\\n\");\n\n    imout();\n}\n\n/**\n * Adds the object as a member of the group, placing it at the beginning of the group's list.\n */\nvoid addto_groupfirst(struct ObjGroup *group, struct GdObj *obj) {\n    imin(\"addto_groupfirst\");\n\n    // Add object to the beginning of group's member list\n    if (group->firstMember == NULL) {\n        group->firstMember = make_link_to_obj(NULL, obj);\n        group->lastMember = group->firstMember;\n    } else {\n        struct ListNode *newNode = make_link_to_obj(NULL, obj);\n        group->firstMember->prev = newNode;\n        newNode->next = group->firstMember;\n        group->firstMember = newNode;\n    }\n\n    group->memberTypes |= obj->type;\n    group->memberCount++;\n\n    imout();\n}\n\n/**\n * Returns TRUE if `obj` is a member of `group`, or FALSE otherwise\n */\ns32 group_contains_obj(struct ObjGroup *group, struct GdObj *obj) {\n    struct ListNode *node = group->firstMember;\n\n    while (node != NULL) {\n        if (node->obj->index == obj->index) {\n            return TRUE;\n        }\n        node = node->next;\n    }\n\n    return FALSE;\n}\n\n/**\n * Unused (not called) - this shows details about all objects in the main object linked list\n */\nvoid show_details(enum ObjTypeFlag type) {\n    enum ObjTypeFlag curObjType;\n    struct ListNode *curGroupLink;\n    struct ObjGroup *curSubGroup;\n    struct GdObj *curObj;\n    char idStrBuf[0x24];\n    s32 curGroupTypes;\n\n    gd_printf(\"\\nDetails about: \");\n    switch (type) {\n        case OBJ_TYPE_GROUPS:\n            gd_printf(\"Groups\\n\");\n            break;\n        case OBJ_TYPE_BONES:\n            gd_printf(\"Bones\\n\");\n            break;\n        case OBJ_TYPE_JOINTS:\n            gd_printf(\"Joints\\n\");\n            break;\n        case OBJ_TYPE_PARTICLES:\n            gd_printf(\"Particles\\n\");\n            break;\n        default:\n            gd_printf(\"Everything?\\n\");\n            break;\n    }\n\n    curObj = gGdObjectList;\n    while (curObj != NULL) {\n        curObjType = curObj->type;\n        if (curObjType == type) {\n            format_object_id(idStrBuf, curObj);\n            switch (curObjType) {\n                case OBJ_TYPE_GROUPS:\n                    gd_printf(\"Group %s: \", idStrBuf);\n                    curGroupTypes = ((struct ObjGroup *) curObj)->memberTypes;\n\n                    if (curGroupTypes & OBJ_TYPE_GROUPS) {\n                        gd_printf(\"groups \");\n                    }\n                    if (curGroupTypes & OBJ_TYPE_BONES) {\n                        gd_printf(\"bones \");\n                    }\n                    if (curGroupTypes & OBJ_TYPE_JOINTS) {\n                        gd_printf(\"joints \");\n                    }\n                    if (curGroupTypes & OBJ_TYPE_PARTICLES) {\n                        gd_printf(\"particles \");\n                    }\n                    if (curGroupTypes & OBJ_TYPE_CAMERAS) {\n                        gd_printf(\"cameras \");\n                    }\n                    if (curGroupTypes & OBJ_TYPE_NETS) {\n                        gd_printf(\"nets \");\n                    }\n                    if (curGroupTypes & OBJ_TYPE_GADGETS) {\n                        gd_printf(\"gadgets \");\n                    }\n                    if (curGroupTypes & OBJ_TYPE_LABELS) {\n                        gd_printf(\"labels \");\n                    }\n                    if (curGroupTypes & OBJ_TYPE_FACES) {\n                        gd_printf(\"face \");\n                    }\n                    if (curGroupTypes & OBJ_TYPE_VERTICES) {\n                        gd_printf(\"vertex \");\n                    }\n\n                    curGroupLink = ((struct ObjGroup *) curObj)->firstMember;\n                    while (curGroupLink != NULL) {\n                        format_object_id(idStrBuf, curGroupLink->obj);\n                        gd_printf(\"%s\", idStrBuf);\n                        curGroupLink = curGroupLink->next;\n                    }\n                    gd_printf(\"\\n\");\n                    break;\n                case OBJ_TYPE_BONES:\n                    gd_printf(\"Bone %s: \", idStrBuf);\n                    curSubGroup = ((struct ObjBone *) curObj)->unk10C;\n                    curGroupLink = curSubGroup->firstMember;\n                    while (curGroupLink != NULL) {\n                        format_object_id(idStrBuf, curGroupLink->obj);\n                        gd_printf(\"%s\", idStrBuf);\n                        curGroupLink = curGroupLink->next;\n                    }\n                    gd_printf(\"\\n\");\n                    break;\n                case OBJ_TYPE_JOINTS:\n                    gd_printf(\"Joint %s: \", idStrBuf);\n                    curSubGroup = ((struct ObjJoint *) curObj)->unk1C4;\n                    curGroupLink = curSubGroup->firstMember;\n                    while (curGroupLink != NULL) {\n                        format_object_id(idStrBuf, curGroupLink->obj);\n                        gd_printf(\"%s\", idStrBuf);\n                        curGroupLink = curGroupLink->next;\n                    }\n                    gd_printf(\"\\n\");\n                    break;\n                default:;\n            }\n        }\n        curObj = curObj->next;\n    }\n}\n\n/* @ 22C9B8 for 0x24 */\ns32 stub_objects_2(void) {\n    s32 sp4 = 0;\n    return sp4;\n}\n\n/**\n * Unused - called by __main__\n */\ns32 make_scene(void) {\n    s32 sp4 = 0;\n    return sp4;\n}\n\n/* @ 22CA00 for 0x88 */\nstatic void reset_joint_or_net(struct GdObj *obj) {\n    struct GdObj *localObjPtr = obj;\n\n    switch (obj->type) {\n        case OBJ_TYPE_JOINTS:\n            reset_joint((struct ObjJoint *) localObjPtr);\n            break;\n        case OBJ_TYPE_NETS:\n            reset_net((struct ObjNet *) localObjPtr);\n            break;\n        default:;\n    }\n}\n\n/**\n * called when the user clicks the \"Reset Positions\" item from the\n * \"Dynamics\" menu.\n */\nvoid menu_cb_reset_positions(void) {\n    apply_to_obj_types_in_group(OBJ_TYPE_NETS, (applyproc_t) reset_joint_or_net, sCurrentMoveGrp);\n}\n\n/**\n * Unused (not called) - does nothing useful\n */\nstruct GdObj *func_8017E2F0(struct GdObj *obj, enum ObjTypeFlag type) {\n    UNUSED u8 filler[4];\n    enum ObjTypeFlag curObjType;\n    struct ListNode *node;\n\n    curObjType = obj->type;\n\n    switch (curObjType) {\n        case OBJ_TYPE_GROUPS:\n            node = ((struct ObjGroup *) obj)->firstMember;\n            while (node != NULL) {\n                func_8017E2F0(node->obj, type);\n                node = node->next;\n            }\n            break;\n        case OBJ_TYPE_BONES:\n            break;\n        default:;\n    }\n\n    if (curObjType == type) {\n        return obj;\n    }\n\n//! @bug Nothing is returned if a GdObj of `type` is not found\n#ifdef AVOID_UB\n    return NULL;\n#endif\n}\n\n/**\n * Recursively calls `func` on all members of `group` whose type is in the\n * `types` bitmask.\n * Returns the number of objects this function was called on.\n */\ns32 apply_to_obj_types_in_group(s32 types, applyproc_t func, struct ObjGroup *group) {\n    struct ListNode *curLink;\n    struct ListNode *nextLink;\n    struct GdObj *linkedObj;\n    enum ObjTypeFlag linkedObjType;\n    applyproc_t objFn;\n    UNUSED u8 filler[32];\n    s32 fnAppliedCount;\n\n    fnAppliedCount = 0;\n\n    //! @bug When `group` pointer is NULL, garbage is returned, not the\n    //!      count of `fn` calls\n    if (group == NULL) {\n#ifdef AVOID_UB\n        return fnAppliedCount;\n#else\n        return;\n#endif\n    }\n\n    if (group->linkType & 1) { // compressed data, not an Obj\n        return fnAppliedCount;\n    }\n\n    if (!((group->memberTypes & OBJ_TYPE_GROUPS) | (group->memberTypes & types))) {\n        return fnAppliedCount;\n    }\n\n    objFn = func;\n    curLink = group->firstMember;\n\n    while (curLink != NULL) {\n        linkedObj = curLink->obj;\n        linkedObjType = linkedObj->type;\n        nextLink = curLink->next;\n\n        if (linkedObjType == OBJ_TYPE_GROUPS) {\n            fnAppliedCount += apply_to_obj_types_in_group(types, func, (struct ObjGroup *) linkedObj);\n        }\n\n        if (linkedObjType & types) {\n            (*objFn)(linkedObj);\n            fnAppliedCount++;\n        }\n\n        curLink = nextLink;\n    }\n    return fnAppliedCount;\n}\n\n/* @ 22CD54 for 0x2B4 */\nvoid func_8017E584(struct ObjNet *a0, struct GdVec3f *a1, struct GdVec3f *a2) {\n    struct GdVec3f sp94;\n    struct GdVec3f sp88;\n    struct GdVec3f sp7C;\n    struct GdVec3f sp70;\n    UNUSED u8 filler1[64]; // unused MyMatrix4x4? f32[4][4]\n    f32 sp2C;\n    UNUSED u8 filler2[4];\n    struct GdVec3f sp1C;\n\n    sp70.x = a2->x;\n    sp70.y = a2->y;\n    sp70.z = a2->z;\n\n    gd_normalize_vec3f(&sp70);\n\n    sp7C.x = a1->x;\n    sp7C.y = a1->y;\n    sp7C.z = a1->z;\n\n    sp1C.x = a0->centerOfGravity.x;\n    sp1C.y = a0->centerOfGravity.y;\n    sp1C.z = a0->centerOfGravity.z;\n\n    gd_rotate_and_translate_vec3f(&sp1C, &a0->mat128);\n\n    sp7C.x -= sp1C.x;\n    sp7C.y -= sp1C.y;\n    sp7C.z -= sp1C.z;\n\n    if (gd_normalize_vec3f(&sp7C) == FALSE) {\n        sp7C.x = -sp70.x;\n        sp7C.y = -sp70.y;\n        sp7C.z = -sp70.z;\n    }\n\n    gd_cross_vec3f(&sp70, a1, &sp94);\n    sp2C = (f32) gd_sqrt_d((sp94.x * sp94.x) + (sp94.z * sp94.z));\n\n    if (sp2C > 1000.0) { //? 1000.0f\n        sp2C = 1000.0f;\n    }\n\n    sp2C /= 1000.0;    //? 1000.0f\n    sp2C = 1.0 - sp2C; //? 1.0f - sp2C\n\n    sp88.x = a2->x * sp2C;\n    sp88.y = a2->y * sp2C;\n    sp88.z = a2->z * sp2C;\n\n    a0->collDisp.x += sp88.x;\n    a0->collDisp.y += sp88.y;\n    a0->collDisp.z += sp88.z;\n}\n\n/* @ 22D008 for 0x1B4 */\nvoid func_8017E838(struct ObjNet *a0, struct GdVec3f *a1, struct GdVec3f *a2) {\n    UNUSED u8 filler1[12];\n    struct GdVec3f sp70;\n    struct GdVec3f sp64;\n    UNUSED u8 filler2[64];\n    struct GdVec3f sp18;\n\n    sp64.x = a1->x;\n    sp64.y = a1->y;\n    sp64.z = a1->z;\n\n    sp18.x = a0->centerOfGravity.x;\n    sp18.y = a0->centerOfGravity.y;\n    sp18.z = a0->centerOfGravity.z;\n\n    gd_rotate_and_translate_vec3f(&sp18, &a0->mat128);\n\n    sp64.x -= sp18.x;\n    sp64.y -= sp18.y;\n    sp64.z -= sp18.z;\n\n    sp64.x *= 0.01; //? 0.01f;\n    sp64.y *= 0.01; //? 0.01f;\n    sp64.z *= 0.01; //? 0.01f;\n\n    gd_cross_vec3f(a2, &sp64, &sp70);\n    gd_clamp_vec3f(&sp70, 5.0f);\n\n    a0->collTorque.x += sp70.x;\n    a0->collTorque.y += sp70.y;\n    a0->collTorque.z += sp70.z;\n}\n\n/* @ 22D1BC for 0xA8 */\nvoid func_8017E9EC(struct ObjNet *net) {\n    struct GdVec3f sp5C;\n    Mat4f sp1C;\n    f32 sp18;\n\n    sp5C.x = net->torque.x;\n    sp5C.y = net->torque.y;\n    sp5C.z = net->torque.z;\n\n    gd_normalize_vec3f(&sp5C);\n    sp18 = gd_vec3f_magnitude(&net->torque);\n    gd_create_rot_mat_angular(&sp1C, &sp5C, -sp18);\n    gd_mult_mat4f(&D_801B9DC8, &sp1C, &D_801B9DC8);\n}\n\n/**\n * Unused (not called)\n */\ns32 func_8017EA94(struct GdVec3f *vec, Mat4f matrix) {\n    if (vec->x >= matrix[2][2] && vec->x <= matrix[3][1] && vec->z >= matrix[3][0]\n        && vec->z <= matrix[3][3]) {\n        return 1;\n    }\n\n    return 0;\n}\n\n/**\n * Unused (not called)\n */\ns32 func_8017EB24(struct GdObj *obj1, struct GdObj *obj2) {\n    struct GdVec3f pos1;\n    struct GdVec3f pos2;\n    struct GdBoundingBox *bbox1;\n    struct GdBoundingBox *bbox2;\n    struct GdBoundingBox sp18;\n\n    set_cur_dynobj(obj1);\n    d_get_world_pos(&pos1);\n    bbox1 = d_get_bounding_box();\n\n    set_cur_dynobj(obj2);\n    d_get_world_pos(&pos2);\n    bbox2 = d_get_bounding_box();\n\n    // bbox2 is an offset for bbox1?\n    sp18.minX = bbox1->minX + bbox2->minX;\n    sp18.minY = bbox1->minY + bbox2->minY;\n    sp18.minZ = bbox1->minZ + bbox2->minZ;\n    sp18.maxX = bbox1->maxX + bbox2->maxX;\n    sp18.maxY = bbox1->maxY + bbox2->maxY;\n    sp18.maxZ = bbox1->maxZ + bbox2->maxZ;\n\n    D_801B9E08.x = pos2.x - pos1.x;\n    D_801B9E08.y = pos2.y - pos1.y;\n    D_801B9E08.z = pos2.z - pos1.z;\n\n    if (D_801B9E08.x >= sp18.minX) {\n        if (D_801B9E08.x <= sp18.maxX) {\n            if (D_801B9E08.z >= sp18.minZ) {\n                if (D_801B9E08.z <= sp18.maxZ) {\n                    return TRUE;\n                }\n            }\n        }\n    }\n\n    return FALSE;\n}\n\n/**\n * Unused (not called)\n */\ns32 is_obj_xz_in_bounding_box(struct GdObj *obj, struct GdBoundingBox *bbox) {\n    struct GdVec3f pos;\n\n    set_cur_dynobj(obj);\n    d_get_world_pos(&pos);\n\n    if (pos.x >= bbox->minX) {\n        if (pos.x <= bbox->maxX) {\n            if (pos.z >= bbox->minZ) {\n                if (pos.z <= bbox->maxZ) {\n                    return TRUE;\n                }\n            }\n        }\n    }\n\n    return FALSE;\n}\n\n/**\n * Unused (not called)\n */\ns32 is_point_xz_in_bounding_box(struct GdVec3f *point, struct GdBoundingBox *bbox) {\n    if (point->x >= bbox->minX) {\n        if (point->x <= bbox->maxX) {\n            if (point->z >= bbox->minZ) {\n                if (point->z <= bbox->maxZ) {\n                    return TRUE;\n                }\n            }\n        }\n    }\n\n    return FALSE;\n}\n\n/**\n * Unused (called by func_801A71CC) - returns TRUE if any of the four corners of\n * box1's X-Z plane lie within box2's X-Z plane\n */\ns32 gd_plane_point_within(struct GdBoundingBox *box1, struct GdBoundingBox *box2) {\n    // test if min x and min z of box1 are within box2\n    if (box1->minX >= box2->minX) {\n        if (box1->minX <= box2->maxX) {\n            if (box1->minZ >= box2->minZ) {\n                if (box1->minZ <= box2->maxZ) {\n                    return TRUE;\n                }\n            }\n        }\n    }\n\n    // test if max x and min z of box1 are within box2\n    if (box1->maxX >= box2->minX) {\n        if (box1->maxX <= box2->maxX) {\n            if (box1->minZ >= box2->minZ) {\n                if (box1->minZ <= box2->maxZ) {\n                    return TRUE;\n                }\n            }\n        }\n    }\n\n    // test if max x and max z of box1 are within box2\n    if (box1->maxX >= box2->minX) {\n        if (box1->maxX <= box2->maxX) {\n            if (box1->maxZ >= box2->minZ) {\n                if (box1->maxZ <= box2->maxZ) {\n                    return TRUE;\n                }\n            }\n        }\n    }\n\n    // test if min x and max z of box1 are within box2\n    if (box1->minX >= box2->minX) {\n        if (box1->minX <= box2->maxX) {\n            if (box1->maxZ >= box2->minZ) {\n                if (box1->maxZ <= box2->maxZ) {\n                    return TRUE;\n                }\n            }\n        }\n    }\n\n    return FALSE;\n}\n\n/* @ 22D824 for 0x1BC */\ns32 transform_child_objects_recursive(struct GdObj *obj, struct GdObj *parentObj) {\n    struct ListNode *curLink;\n    struct ObjGroup *curGroup;\n    UNUSED u8 filler1[4];\n    Mat4f *parentUnkMtx;\n    Mat4f *iMtx;\n    Mat4f *unkMtx;\n    Mat4f *rotMtx;\n    Mat4f *rotMtx2;\n    UNUSED u8 filler2[24];\n    struct GdVec3f scale;\n\n    if (parentObj != NULL) {\n        set_cur_dynobj(parentObj);\n        parentUnkMtx = d_get_matrix_ptr();\n        rotMtx = (Mat4f *) d_get_rot_mtx_ptr();\n\n        set_cur_dynobj(obj);\n        iMtx = d_get_i_mtx_ptr();\n        rotMtx2 = (Mat4f *) d_get_rot_mtx_ptr();\n\n        d_get_scale(&scale);\n\n        unkMtx = d_get_matrix_ptr();\n        gd_mult_mat4f(iMtx, parentUnkMtx, unkMtx);\n\n        gd_mult_mat4f(iMtx, rotMtx, rotMtx2);\n        gd_scale_mat4f_by_vec3f(rotMtx2, &scale);\n    } else {\n        set_cur_dynobj(obj);\n        unkMtx = d_get_matrix_ptr();\n        iMtx = d_get_i_mtx_ptr();\n        rotMtx = (Mat4f *) d_get_rot_mtx_ptr();\n\n        d_get_scale(&scale);\n        gd_set_identity_mat4(unkMtx);\n        gd_copy_mat4f(iMtx, rotMtx);\n        gd_scale_mat4f_by_vec3f(rotMtx, &scale);\n    }\n\n    // Recursively call this function on attached children\n    set_cur_dynobj(obj);\n    curGroup = d_get_att_objgroup();\n    if (curGroup != NULL) {\n        curLink = curGroup->firstMember;\n        while (curLink != NULL) {\n            transform_child_objects_recursive(curLink->obj, obj);\n            curLink = curLink->next;\n        }\n    }\n    return 0;\n}\n\n/* @ 22D9E0 for 0x1BC */\ns32 func_8017F210(struct GdObj *a0, struct GdObj *a1) {\n    struct ListNode *sp6C;\n    struct ObjGroup *sp68;\n    UNUSED u8 filler1[4];\n    UNUSED Mat4f *sp60;\n    Mat4f *sp5C;\n    UNUSED Mat4f *sp58;\n    Mat4f *sp54;\n    Mat4f *sp50;\n    UNUSED u8 filler2[24];\n    struct GdVec3f sp2C;\n    s32 count = 0;\n\n    count++;\n\n    if (a1 != NULL) {\n        set_cur_dynobj(a1);\n        sp60 = d_get_matrix_ptr();\n        sp54 = (Mat4f *) d_get_rot_mtx_ptr();\n\n        set_cur_dynobj(a0);\n        sp5C = d_get_i_mtx_ptr();\n        sp50 = (Mat4f *) d_get_rot_mtx_ptr();\n\n        d_get_scale(&sp2C);\n        gd_mult_mat4f(sp5C, sp54, sp50);\n        gd_scale_mat4f_by_vec3f(sp50, &sp2C);\n    } else {\n        set_cur_dynobj(a0);\n        sp58 = d_get_matrix_ptr();\n        sp5C = d_get_i_mtx_ptr();\n        sp54 = (Mat4f *) d_get_rot_mtx_ptr();\n\n        d_get_scale(&sp2C);\n        gd_copy_mat4f(sp5C, sp54);\n        gd_scale_mat4f_by_vec3f(sp54, &sp2C);\n    }\n\n    set_cur_dynobj(a0);\n    sp68 = d_get_att_objgroup();\n\n    if (sp68 != NULL) {\n        sp6C = sp68->firstMember;\n        while (sp6C != NULL) {\n            count += func_8017F210(sp6C->obj, a0);\n            sp6C = sp6C->next;\n        }\n    }\n    return count;\n}\n\n/* @ 22DB9C for 0x38; a0 might be ObjUnk200000* */\nvoid func_8017F3CC(struct Unk8017F3CC *a0) {\n    gd_rotate_and_translate_vec3f(&a0->unk20, D_801B9E48);\n}\n\n/* @ 22DBD4 for 0x20 */\nvoid stub_objects_3(UNUSED f32 a0, UNUSED struct GdObj *a1, UNUSED struct GdObj *a2) {\n    UNUSED u8 filler[48];\n}\n\n/**\n * Interpolates between animation transformations `t1` and `t2`, with `dt` as\n * the interpolation factor (between 0 and 1). Sets the current dynobj's matrix\n * as the result of the transformation.\n */\nvoid interpolate_animation_transform(struct GdAnimTransform *t1, struct GdAnimTransform *t2, f32 dt) {\n    Mat4f mtx;\n\n    gd_set_identity_mat4(&mtx);\n\n    if (dt != 0.0f) {\n        struct GdAnimTransform transform;\n\n        // interpolate rotation between t1 and t2\n        transform.rotate.x = t1->rotate.x + (t2->rotate.x - t1->rotate.x) * dt;\n        transform.rotate.y = t1->rotate.y + (t2->rotate.y - t1->rotate.y) * dt;\n        transform.rotate.z = t1->rotate.z + (t2->rotate.z - t1->rotate.z) * dt;\n\n        // interpolate position between t1 and t2\n        transform.pos.x = t1->pos.x + (t2->pos.x - t1->pos.x) * dt;\n        transform.pos.y = t1->pos.y + (t2->pos.y - t1->pos.y) * dt;\n        transform.pos.z = t1->pos.z + (t2->pos.z - t1->pos.z) * dt;\n\n        // not going to interpolate scale?\n\n        gd_scale_mat4f_by_vec3f(&mtx, &t1->scale);\n        gd_rot_mat_about_vec(&mtx, &transform.rotate);\n        gd_add_vec3f_to_mat4f_offset(&mtx, &transform.pos);\n    } else {\n        d_set_scale(t1->scale.x, t1->scale.y, t1->scale.z);\n        gd_rot_mat_about_vec(&mtx, &t1->rotate);\n        gd_add_vec3f_to_mat4f_offset(&mtx, &t1->pos);\n    }\n    d_set_i_matrix(&mtx);\n}\n\n/* @ 22DD94 for 0x1060; orig name: func_8017F5C4 */\nvoid move_animator(struct ObjAnimator *animObj) {\n    struct AnimDataInfo *animData; // array?\n    Mat4f *mtxArr;\n    Mat4f localMtx;\n    struct GdAnimTransform *triPtr;\n    struct GdAnimTransform currTransform;  // transformation for the current keyframe\n    struct GdAnimTransform nextTransform;  // transformation for the next keyframe\n    s16(*animData9s16)[9];              // GdTriangleH[]?\n    s16(*animData3s16)[3];             // MyVec3h[]?\n    s16(*animData6s16)[6];            // GdPlaneH[]?\n    s16(*animDataCam)[6];         // camera GdPlaneH[]?\n    struct GdObj *stubObj1 = NULL; // used only for call to stubbed function\n    struct GdObj *stubObj2 = NULL; // used only for call to stubbed function\n    UNUSED u8 filler[12];\n    UNUSED struct GdVec3f unusedVec;\n    s32 currKeyFrame;\n    s32 nextKeyFrame;\n    f32 dt;\n    f32 scale = 0.1f;\n    struct AnimMtxVec *sp28;\n    register struct ListNode *link;\n    struct GdObj *linkedObj;\n\n    if (animObj->controlFunc != NULL) {\n        animObj->controlFunc(animObj);\n    }\n\n    if (animObj->animatedPartsGrp == NULL) {\n        return;  // nothing to animate\n    }\n\n    animData = (struct AnimDataInfo *) animObj->animdataGrp->firstMember->obj;\n\n    if (animObj->attachedToObj != NULL) {\n        animObj->frame = ((struct ObjAnimator *) animObj->attachedToObj)->frame\n                         / ((struct ObjAnimator *) animObj->attachedToObj)->unk24;\n        animData += ((struct ObjAnimator *) animObj->attachedToObj)->animSeqNum;\n    }\n\n    if (animData->type == 0) {\n        return;\n    }\n\n    unusedVec.x = 4.0f;\n    unusedVec.y = 1.0f;\n    unusedVec.z = 1.0f;\n\n    if (animObj->frame > (f32) animData->count) {\n        animObj->frame = 1.0f;\n    } else if (animObj->frame < 0.0f) {\n        animObj->frame = (f32) animData->count;\n    }\n\n    currKeyFrame = (s32) animObj->frame;\n    dt = animObj->frame - (f32) currKeyFrame;\n    nextKeyFrame = currKeyFrame + 1;\n\n    if (nextKeyFrame > animData->count) {\n        nextKeyFrame = 1;\n    }\n\n    // convert frame numbers to zero-indexed\n    currKeyFrame--;\n    nextKeyFrame--;\n\n    link = animObj->animatedPartsGrp->firstMember;\n    while (link != NULL) {\n        linkedObj = link->obj;\n        set_cur_dynobj(linkedObj);\n        switch (animData->type) {\n            case GD_ANIM_MTX4x4: // data = Mat4f* (f32[4][4])\n                mtxArr = (Mat4f *) animData->data;\n                /* This needs be be un-dereferenced pointer addition to make the registers match */\n                d_set_i_matrix(mtxArr + (s32) animObj->frame);\n                break;\n            case GD_ANIM_ROT3S: // data = s16(*)[3] - rotation only\n                animData3s16 = (s16(*)[3]) animData->data;\n\n                // keep current object scale\n                d_get_scale(&currTransform.scale);\n                nextTransform.scale.x = currTransform.scale.x;\n                nextTransform.scale.y = currTransform.scale.y;\n                nextTransform.scale.z = currTransform.scale.z;\n\n                // keep current object position\n                d_get_init_pos(&currTransform.pos);\n                nextTransform.pos.x = currTransform.pos.x;\n                nextTransform.pos.y = currTransform.pos.y;\n                nextTransform.pos.z = currTransform.pos.z;\n\n                // use animation rotation\n                currTransform.rotate.x = (f32) animData3s16[currKeyFrame][0] * scale;\n                currTransform.rotate.y = (f32) animData3s16[currKeyFrame][1] * scale;\n                currTransform.rotate.z = (f32) animData3s16[currKeyFrame][2] * scale;\n\n                nextTransform.rotate.x = (f32) animData3s16[nextKeyFrame][0] * scale;\n                nextTransform.rotate.y = (f32) animData3s16[nextKeyFrame][1] * scale;\n                nextTransform.rotate.z = (f32) animData3s16[nextKeyFrame][2] * scale;\n\n                interpolate_animation_transform(&currTransform, &nextTransform, dt);\n                break;\n            case GD_ANIM_POS3S: // data = s16(*)[3] - position only\n                animData3s16 = (s16(*)[3]) animData->data;\n\n                // keep current object scale\n                d_get_scale(&currTransform.scale);\n                nextTransform.scale.x = currTransform.scale.x;\n                nextTransform.scale.y = currTransform.scale.y;\n                nextTransform.scale.z = currTransform.scale.z;\n\n                // keep current object rotation\n                d_get_init_rot(&currTransform.rotate);\n                nextTransform.rotate.x = currTransform.rotate.x;\n                nextTransform.rotate.y = currTransform.rotate.y;\n                nextTransform.rotate.z = currTransform.rotate.z;\n\n                // use animation position\n                currTransform.pos.x = (f32) animData3s16[currKeyFrame][0];\n                currTransform.pos.y = (f32) animData3s16[currKeyFrame][1];\n                currTransform.pos.z = (f32) animData3s16[currKeyFrame][2];\n\n                nextTransform.pos.x = (f32) animData3s16[nextKeyFrame][0];\n                nextTransform.pos.y = (f32) animData3s16[nextKeyFrame][1];\n                nextTransform.pos.z = (f32) animData3s16[nextKeyFrame][2];\n\n                interpolate_animation_transform(&currTransform, &nextTransform, dt);\n                break;\n            case GD_ANIM_ROT3S_POS3S: // data = s16(*)[6] - rotation and position\n                animData6s16 = (s16(*)[6]) animData->data;\n\n                // keep current object scale\n                d_get_scale(&currTransform.scale);\n                nextTransform.scale.x  = currTransform.scale.x;\n                nextTransform.scale.y  = currTransform.scale.y;\n                nextTransform.scale.z  = currTransform.scale.z;\n\n                // use animation rotation\n                currTransform.rotate.x = (f32) animData6s16[currKeyFrame][0] * scale;\n                currTransform.rotate.y = (f32) animData6s16[currKeyFrame][1] * scale;\n                currTransform.rotate.z = (f32) animData6s16[currKeyFrame][2] * scale;\n\n                nextTransform.rotate.x = (f32) animData6s16[nextKeyFrame][0] * scale;\n                nextTransform.rotate.y = (f32) animData6s16[nextKeyFrame][1] * scale;\n                nextTransform.rotate.z = (f32) animData6s16[nextKeyFrame][2] * scale;\n\n                // use animation position\n                currTransform.pos.x  = (f32) animData6s16[currKeyFrame][3];\n                currTransform.pos.y  = (f32) animData6s16[currKeyFrame][4];\n                currTransform.pos.z  = (f32) animData6s16[currKeyFrame][5];\n\n                nextTransform.pos.x  = (f32) animData6s16[nextKeyFrame][3];\n                nextTransform.pos.y  = (f32) animData6s16[nextKeyFrame][4];\n                nextTransform.pos.z  = (f32) animData6s16[nextKeyFrame][5];\n\n                interpolate_animation_transform(&currTransform, &nextTransform, dt);\n                break;\n            case GD_ANIM_SCALE3S_POS3S_ROT3S: // data = s16(*)[9] - scale, position, and rotation\n                animData9s16 = (s16(*)[9]) animData->data;\n\n                currTransform.scale.x  = (f32) animData9s16[currKeyFrame][0] * scale;\n                currTransform.scale.y  = (f32) animData9s16[currKeyFrame][1] * scale;\n                currTransform.scale.z  = (f32) animData9s16[currKeyFrame][2] * scale;\n\n                currTransform.rotate.x = (f32) animData9s16[currKeyFrame][3] * scale;\n                currTransform.rotate.y = (f32) animData9s16[currKeyFrame][4] * scale;\n                currTransform.rotate.z = (f32) animData9s16[currKeyFrame][5] * scale;\n\n                currTransform.pos.x  = (f32) animData9s16[currKeyFrame][6];\n                currTransform.pos.y  = (f32) animData9s16[currKeyFrame][7];\n                currTransform.pos.z  = (f32) animData9s16[currKeyFrame][8];\n\n                nextTransform.scale.x  = (f32) animData9s16[nextKeyFrame][0] * scale;\n                nextTransform.scale.y  = (f32) animData9s16[nextKeyFrame][1] * scale;\n                nextTransform.scale.z  = (f32) animData9s16[nextKeyFrame][2] * scale;\n\n                nextTransform.rotate.x = (f32) animData9s16[nextKeyFrame][3] * scale;\n                nextTransform.rotate.y = (f32) animData9s16[nextKeyFrame][4] * scale;\n                nextTransform.rotate.z = (f32) animData9s16[nextKeyFrame][5] * scale;\n\n                nextTransform.pos.x  = (f32) animData9s16[nextKeyFrame][6];\n                nextTransform.pos.y  = (f32) animData9s16[nextKeyFrame][7];\n                nextTransform.pos.z  = (f32) animData9s16[nextKeyFrame][8];\n\n                interpolate_animation_transform(&currTransform, &nextTransform, dt);\n                break;\n            case GD_ANIM_CAMERA_EYE3S_LOOKAT3S: // s16(*)[6]?\n                if (linkedObj->type == OBJ_TYPE_CAMERAS) {\n                    animDataCam = animData->data;\n\n                    // eye position\n                    currTransform.pos.x = (f32) animDataCam[currKeyFrame][0];\n                    currTransform.pos.y = (f32) animDataCam[currKeyFrame][1];\n                    currTransform.pos.z = (f32) animDataCam[currKeyFrame][2];\n\n                    // lookat position\n                    nextTransform.pos.x = (f32) animDataCam[currKeyFrame][3];\n                    nextTransform.pos.y = (f32) animDataCam[currKeyFrame][4];\n                    nextTransform.pos.z = (f32) animDataCam[currKeyFrame][5];\n\n                    ((struct ObjCamera *) linkedObj)->worldPos.x = currTransform.pos.x;\n                    ((struct ObjCamera *) linkedObj)->worldPos.y = currTransform.pos.y;\n                    ((struct ObjCamera *) linkedObj)->worldPos.z = currTransform.pos.z;\n\n                    ((struct ObjCamera *) linkedObj)->lookAt.x = nextTransform.pos.x;\n                    ((struct ObjCamera *) linkedObj)->lookAt.y = nextTransform.pos.y;\n                    ((struct ObjCamera *) linkedObj)->lookAt.z = nextTransform.pos.z;\n                }\n                break;\n            case GD_ANIM_SCALE3F_ROT3F_POS3F: // scale, rotation, and position (as floats)\n                triPtr = (struct GdAnimTransform *) animData->data;\n                interpolate_animation_transform(&triPtr[currKeyFrame], &triPtr[nextKeyFrame], dt);\n                break;\n            case GD_ANIM_MTX4x4F_SCALE3F: // AnimMtxVec[]\n                sp28 = &((struct AnimMtxVec *) animData->data)[currKeyFrame];\n                d_set_i_matrix(&sp28->matrix);\n                d_set_scale(sp28->vec.x, sp28->vec.y, sp28->vec.z);\n                break;\n            case GD_ANIM_SCALE3F_ROT3F_POS3F_2:  // similar to GD_ANIM_SCALE3F_ROT3F_POS3F, but no interpolation? what matrix does d_set_i_matrix set?\n                triPtr = (struct GdAnimTransform *) animData->data;\n                gd_set_identity_mat4(&localMtx);\n                gd_scale_mat4f_by_vec3f(&localMtx, &triPtr->scale);\n                gd_rot_mat_about_vec(&localMtx, &triPtr->rotate);\n                gd_add_vec3f_to_mat4f_offset(&localMtx, &triPtr->pos);\n                d_set_i_matrix(&localMtx);\n                break;\n            case GD_ANIM_STUB:\n                if (stubObj1 == NULL) {\n                    stubObj1 = linkedObj;\n                } else {\n                    if (stubObj2 == NULL) {\n                        stubObj2 = linkedObj;\n                        stub_objects_3(animObj->frame, stubObj1, stubObj2);\n                    } else {\n                        fatal_printf(\"Too many objects to morph\");\n                    }\n                }\n                break;\n            default:\n                fatal_printf(\"move_animator(): Unkown animation data type\");\n        }\n        link = link->next;\n    }\n}\n\n/* @ 22EDF4 for 0x300; orig name: func_80180624 */\nvoid drag_picked_object(struct GdObj *inputObj) {\n    UNUSED u8 filler1[12];\n    struct GdVec3f displacement;\n    struct GdVec3f spC4;\n    struct GdControl *ctrl;\n    Mat4f sp80;\n    Mat4f sp40;\n    UNUSED u8 filler2[12];\n    struct GdObj *obj;\n    UNUSED u8 filler3[4];\n    f32 dispMag;\n\n    ctrl = &gGdCtrl;\n\n    if (gViewUpdateCamera == NULL) {\n        return;\n    }\n\n    dispMag = gd_vec3f_magnitude(&gViewUpdateCamera->unk40);\n    dispMag /= 1000.0f;\n\n    displacement.x = ((f32)(ctrl->csrX - ctrl->dragStartX)) * dispMag;\n    displacement.y = ((f32) - (ctrl->csrY - ctrl->dragStartY)) * dispMag;\n    displacement.z = 0.0f;\n\n    gd_inverse_mat4f(&gViewUpdateCamera->unkE8, &sp40);\n    gd_mat4f_mult_vec3f(&displacement, &sp40);\n\n    obj = inputObj;\n    if ((inputObj->drawFlags & OBJ_PICKED) && gGdCtrl.dragging) {\n        gd_play_sfx(GD_SFX_PINCH_FACE);\n        // Note: this second sfx won't play, as it is \"overwritten\" by the first\n        if (ABS(ctrl->stickDeltaX) + ABS(ctrl->stickDeltaY) >= 11) {\n            gd_play_sfx(GD_SFX_PINCH_FACE_2);\n        }\n\n        switch (inputObj->type) {\n            case OBJ_TYPE_JOINTS:\n                ((struct ObjJoint *) obj)->mat128[3][0] += displacement.x;\n                ((struct ObjJoint *) obj)->mat128[3][1] += displacement.y;\n                ((struct ObjJoint *) obj)->mat128[3][2] += displacement.z;\n                break;\n            case OBJ_TYPE_GADGETS:\n                break;\n            case OBJ_TYPE_NETS:\n                gd_inverse_mat4f(&((struct ObjNet *) obj)->mat128, &sp80);\n                spC4.x = displacement.x;\n                spC4.y = displacement.y;\n                spC4.z = displacement.z;\n\n                gd_mat4f_mult_vec3f(&spC4, &sp80);\n                ((struct ObjNet *) obj)->matE8[3][0] += displacement.x;\n                ((struct ObjNet *) obj)->matE8[3][1] += displacement.y;\n                ((struct ObjNet *) obj)->matE8[3][2] += displacement.z;\n                break;\n            case OBJ_TYPE_PARTICLES:\n                break;\n            default:;\n        }\n    }\n}\n\n/* @ 22F0F4 for 0x50; orig name: func_80180924*/\nvoid move_animators(struct ObjGroup *group) {\n    restart_timer(\"move_animators\");\n    apply_to_obj_types_in_group(OBJ_TYPE_ANIMATORS, (applyproc_t) move_animator, group);\n    split_timer(\"move_animators\");\n}\n\n/* @ 22F144 for 0x3C; orig name: func_80180974 */\nvoid find_and_drag_picked_object(struct ObjGroup *group) {\n    apply_to_obj_types_in_group(OBJ_TYPE_ALL, (applyproc_t) drag_picked_object, group);\n}\n\n/* @ 22F180 for 0x624; orig name: func_801809B0 */\nvoid move_camera(struct ObjCamera *cam) {\n    struct GdObj *spEC;\n    struct GdVec3f spE0;\n    struct GdVec3f spD4;\n    struct GdVec3f spC8;\n    UNUSED u8 filler1[12];\n    struct GdVec3f spB0;\n    Mat4f sp70;\n    UNUSED u8 filler2[64];\n    Mat4f *sp2C;\n    struct GdControl *ctrl;\n\n    ctrl = &gGdCtrl;\n    if (!(cam->flags & 0x10)) {\n        return;\n    }\n\n    spE0.x = spE0.y = spE0.z = 0.0f;\n    spB0.x = spB0.y = spB0.z = 0.0f;\n\n    if ((spEC = cam->unk30) != NULL) {\n        set_cur_dynobj(spEC);\n        d_get_world_pos(&spE0);\n        d_get_matrix(&sp70);\n\n        spC8.x = sp70[2][0] - cam->unk58;\n        spC8.z = sp70[2][2] - cam->unk60;\n\n        cam->unk58 += spC8.x * cam->unk180.y;\n        cam->unk60 += spC8.z * cam->unk180.y;\n\n        cam->unkA8[2][0] = cam->unk58;\n        cam->unkA8[2][1] = 0.0f;\n        cam->unkA8[2][2] = cam->unk60;\n\n        cam->unkA8[0][0] = cam->unkA8[2][2];\n        cam->unkA8[0][1] = 0.0f;\n        cam->unkA8[0][2] = -cam->unkA8[2][0];\n\n        cam->unkA8[1][0] = 0.0f;\n        cam->unkA8[1][1] = 1.0f;\n        cam->unkA8[1][2] = 0.0f;\n\n        // setting the unkA8 matrix above is pointless, if we're just going to overwrite it with the identity matrix.\n        gd_set_identity_mat4(&cam->unkA8);\n    } else {\n        gd_set_identity_mat4(&cam->unkA8);\n    }\n\n    sp2C = &cam->unk64;\n    if ((cam->flags & CAMERA_FLAG_CONTROLLABLE) != 0) {\n        if (ctrl->btnB != FALSE && ctrl->prevFrame->btnB == FALSE) {  // new B press\n            cam->zoomLevel++;\n            if (cam->zoomLevel > cam->maxZoomLevel) {\n                cam->zoomLevel = 0;\n            }\n\n            switch (cam->zoomLevel) {\n                case 0:\n                    gd_play_sfx(GD_SFX_CAM_ZOOM_IN);\n                    break;\n                case 1:\n                case 2:\n                    gd_play_sfx(GD_SFX_CAM_ZOOM_OUT);\n                    break;\n            }\n        }\n\n        if (ctrl->cleft) {\n            cam->unk128.y += cam->unk134.y;\n        }\n\n        if (ctrl->cright) {\n            cam->unk128.y -= cam->unk134.y;\n        }\n\n        if (ctrl->cup) {\n            cam->unk128.x += cam->unk134.x;\n        }\n\n        if (ctrl->cdown) {\n            cam->unk128.x -= cam->unk134.x;\n        }\n\n        cam->unk128.x = gd_clamp_f32(cam->unk128.x, 80.0f);\n\n        cam->unk4C.x = cam->zoomPositions[cam->zoomLevel].x;\n        cam->unk4C.y = cam->zoomPositions[cam->zoomLevel].y;\n        cam->unk4C.z = cam->zoomPositions[cam->zoomLevel].z;\n\n        gd_rot_2d_vec(cam->unk128.x, &cam->unk4C.y, &cam->unk4C.z);\n        gd_rot_2d_vec(-cam->unk128.y, &cam->unk4C.x, &cam->unk4C.z);\n\n        cam->unk40.x += (cam->unk4C.x - cam->unk40.x) * cam->unk17C;\n        cam->unk40.y += (cam->unk4C.y - cam->unk40.y) * cam->unk17C;\n        cam->unk40.z += (cam->unk4C.z - cam->unk40.z) * cam->unk17C;\n    } else {\n        gd_set_identity_mat4(sp2C);\n    }\n\n    spD4.x = cam->unk40.x;\n    spD4.y = cam->unk40.y;\n    spD4.z = cam->unk40.z;\n\n    spD4.x += spB0.x;\n    spD4.y += spB0.y;\n    spD4.z += spB0.z;\n\n    gd_mult_mat4f(sp2C, &cam->unkA8, &cam->unkA8);\n    gd_mat4f_mult_vec3f(&spD4, &cam->unkA8);\n\n    cam->worldPos.x = spD4.x;\n    cam->worldPos.y = spD4.y;\n    cam->worldPos.z = spD4.z;\n\n    cam->worldPos.x += spE0.x;\n    cam->worldPos.y += spE0.y;\n    cam->worldPos.z += spE0.z;\n}\n\n/* @ 22F7A4 for 0x38; orig name: func_80180FD4 */\nvoid move_cameras_in_grp(struct ObjGroup *group) {\n    apply_to_obj_types_in_group(OBJ_TYPE_CAMERAS, (applyproc_t) move_camera, group);\n}\n\n/* @ 22F7DC for 0x36C*/\nvoid func_8018100C(struct ObjLight *light) {\n    Mat4f mtx;\n    UNUSED u8 filler[12];\n\n    if (light->unk40 == 3) {\n        if (light->unk30 > 0.0) { //? 0.0f\n            light->unk30 -= 0.2;  //? 0.2f\n        }\n\n        if (light->unk30 < 0.0f) {\n            light->unk30 = 0.0f;\n        }\n\n        if ((light->unk3C & 0x1) != 0) {\n            light->unk30 = 1.0f;\n        }\n\n        light->unk3C &= ~1;\n    }\n    // if (1)?\n    return;\n    // unreachable\n    light->position.x += light->unk80.x;\n    light->position.y += light->unk80.y;\n    light->position.z += light->unk80.z;\n\n    // should be position.x for second comparison?\n    if (light->position.x > 500.0f || light->position.y < -500.0f) {\n        light->unk80.x = -light->unk80.x;\n    }\n\n    if (light->position.y > 500.0f || light->position.y < -500.0f) {\n        light->unk80.y = -light->unk80.y;\n    }\n\n    if (light->position.z > 500.0f || light->position.z < -500.0f) {\n        light->unk80.z = -light->unk80.z;\n    }\n\n    return;\n    // more unreachable\n    D_801A81C0 += 1.0; //? 1.0f\n    D_801A81C4 += 0.6; //? 0.6f\n\n    gd_set_identity_mat4(&mtx);\n    gd_absrot_mat4(&mtx, GD_Y_AXIS, light->unk68.y);\n    gd_absrot_mat4(&mtx, GD_X_AXIS, light->unk68.x);\n    gd_absrot_mat4(&mtx, GD_Z_AXIS, light->unk68.z);\n    gd_mat4f_mult_vec3f(&light->unk8C, &mtx);\n\n    light->position.x = light->unk8C.x;\n    light->position.y = light->unk8C.y;\n    light->position.z = light->unk8C.z;\n    return;\n    // even more unreachable\n    gd_mat4f_mult_vec3f(&light->unk80, &mtx);\n    imout(); // this call would cause an issue if it was reachable\n}\n\n/* @ 22FB48 for 0x38; orig name: func_80181378 */\nvoid move_lights_in_grp(struct ObjGroup *group) {\n    apply_to_obj_types_in_group(OBJ_TYPE_LIGHTS, (applyproc_t) func_8018100C, group);\n}\n\n/* @ 22FB80 for 0xAC; orig name: func_801813B0 */\nvoid move_group_members(void) {\n    s32 i;\n\n    if (gGdMoveScene != 0) {\n        reset_gadgets_in_grp(sCurrentMoveGrp);\n        move_lights_in_grp(sCurrentMoveGrp);\n        move_particles_in_grp(sCurrentMoveGrp);\n        move_animators(sCurrentMoveGrp);\n\n        for (i = 0; i <= 0; i++) {\n            move_nets(sCurrentMoveGrp);\n        }\n\n        move_cameras_in_grp(sCurrentMoveGrp);\n    }\n}\n\n/* @ 22FC2C for 0x98; orig name: func_8018145C */\nvoid proc_view_movement(struct ObjView *view) {\n    imin(\"movement\");\n    sCurrentMoveCamera = view->activeCam;\n    sCurrentMoveView = view;\n    if ((sCurrentMoveGrp = view->components) != NULL) {\n        move_group_members();\n    }\n    if ((sCurrentMoveGrp = view->lights) != NULL) {\n        move_group_members();\n    }\n    imout();\n}\n\n/* @ 22FCC4 for 0x44; orig name: func_801814F4 */\nvoid reset_nets_and_gadgets(struct ObjGroup *group) {\n    func_80193848(group);\n    apply_to_obj_types_in_group(OBJ_TYPE_GADGETS, (applyproc_t) reset_gadget, group);\n}\n\n/* @ 22FD08 for 0x9C; orig name: func_80181538*/\nvoid null_obj_lists(void) {\n    D_801B9E44 = 0;\n    gGdObjCount = 0;\n    gGdGroupCount = 0;\n    gGdPlaneCount = 0;\n    gGdCameraCount = 0;\n    sGdViewInfo.count = 0;\n\n    gGdCameraList = NULL;\n    D_801B9E50 = NULL;\n    gGdBoneList = NULL;\n    gGdJointList = NULL;\n    gGdGroupList = NULL;\n    D_801B9E80 = NULL;\n    gGdObjectList = NULL;\n    gGdViewsGroup = NULL;\n\n    reset_net_count();\n    reset_joint_counts();\n}\n"
  },
  {
    "path": "src/goddard/objects.h",
    "content": "#ifndef GD_OBJECTS_H\n#define GD_OBJECTS_H\n\n#include <PR/ultratypes.h>\n\n#include \"gd_types.h\"\n#include \"macros.h\"\n\n// types\n// Type to erase for func arg to `apply_to_obj_types_in_group`. Maybe one day this\n// can be the proper type of 'void (*)(struct GdObj *)...\ntypedef void (*applyproc_t)(void *);\n\n// structs\nstruct DebugCounters {\n    u32 ctr0;\n    s32 ctr1;\n};\n\n// bss\nextern struct GdBoundingBox gSomeBoundingBox;\nextern struct ObjCamera *sCurrentMoveCamera;\nextern struct ObjView *sCurrentMoveView;\nextern struct DebugCounters gGdCounter;\nextern Mat4f D_801B9DC8;\nextern struct GdVec3f D_801B9E08;\nextern struct ObjGroup* sCurrentMoveGrp;\nextern struct GdVec3f D_801B9E18;\nextern struct GdVec3f D_801B9E28;\nextern f32 D_801B9E34;\nextern Mat4f* D_801B9E38;                /* never read from */\nextern struct ObjParticle *D_801B9E3C;  /* never read from */\nextern s32 D_801B9E40;                  /* always 0 */\nextern s32 D_801B9E44;\nextern Mat4f* D_801B9E48;\nextern struct ObjCamera* gGdCameraList;\nextern void* D_801B9E50;\nextern struct ObjGroup* gGdGroupList;\nextern s32 gGdObjCount;\nextern s32 gGdGroupCount;\nextern s32 gGdPlaneCount;\nextern s32 gGdCameraCount;\nextern struct Unk801B9E68 sGdViewInfo;   /* count in first member? */\nextern void* D_801B9E80;\nextern struct ObjJoint* gGdJointList;\nextern struct ObjBone* gGdBoneList;\nextern struct GdObj* gGdObjectList;\nextern struct ObjGroup* gGdViewsGroup;\n\n// functions\nvoid reset_bounding_box(void);\nvoid add_obj_pos_to_bounding_box(struct GdObj *a0);\nvoid get_some_bounding_box(struct GdBoundingBox *a0);\nvoid stub_objects_1(UNUSED struct ObjGroup *a0, UNUSED struct GdObj *a1);\nstruct GdObj *make_object(enum ObjTypeFlag objFlag);\nstruct ObjZone *make_zone(struct ObjGroup *a0, struct GdBoundingBox *a1, struct ObjGroup *a2);\nstruct ObjUnk200000 *func_8017C7A0(struct ObjVertex *a0, struct ObjFace *a1);\nstruct ListNode *make_link_to_obj(struct ListNode *head, struct GdObj *a1);\nstruct VtxLink *make_vtx_link(struct VtxLink *prevLink, Vtx *data);\nstruct ObjValPtr *make_valptr(struct GdObj *obj, s32 flags, enum ValPtrType type, size_t offset);\nvoid reset_plane(struct ObjPlane *plane);\nstruct ObjPlane *make_plane(s32 inZone, struct ObjFace *a1);\nstruct ObjCamera *make_camera(s32 a0, struct GdObj *a1);\nstruct ObjMaterial *make_material(UNUSED s32 a0, char *name, s32 id);\nstruct ObjLight *make_light(s32 flags, char *name, s32 id);\nstruct ObjView *make_view(const char *name, s32 flags, s32 a2, s32 ulx, s32 uly, s32 lrx, s32 lry,\n                          struct ObjGroup *parts);\nstruct ObjAnimator *make_animator(void);\nstruct ObjWeight *make_weight(UNUSED s32 a0, s32 id, struct ObjVertex *vtx, f32 weight);\nstruct ObjGroup *make_group_of_type(enum ObjTypeFlag, struct GdObj*, struct GdObj*);\nvoid format_object_id(char*, struct GdObj*);\nstruct ObjGroup* make_group(s32 count, ...);\nvoid addto_group(struct ObjGroup *group, struct GdObj *obj);\nvoid addto_groupfirst(struct ObjGroup *group, struct GdObj *obj);\ns32 group_contains_obj(struct ObjGroup *group, struct GdObj *obj);\nvoid show_details(enum ObjTypeFlag type);\ns32 stub_objects_2(void);\ns32 make_scene(void);\nvoid menu_cb_reset_positions(void);\ns32 apply_to_obj_types_in_group(s32 types, applyproc_t fn, struct ObjGroup *group);\nvoid func_8017E584(struct ObjNet *a0, struct GdVec3f *a1, struct GdVec3f *a2);\nvoid func_8017E838(struct ObjNet *a0, struct GdVec3f *a1, struct GdVec3f *a2);\nvoid func_8017E9EC(struct ObjNet *a0);\ns32 func_8017EA94(struct GdVec3f *vec, Mat4f matrix);\ns32 func_8017EB24(struct GdObj *a0, struct GdObj *a1);\ns32 is_obj_xz_in_bounding_box(struct GdObj *a0, struct GdBoundingBox *a1);\ns32 is_point_xz_in_bounding_box(struct GdVec3f *a0, struct GdBoundingBox *a1);\ns32 gd_plane_point_within(struct GdBoundingBox *a0, struct GdBoundingBox *a1);\ns32 transform_child_objects_recursive(struct GdObj *a0, struct GdObj *a1);\ns32 func_8017F210(struct GdObj *a0, struct GdObj *a1);\nvoid stub_objects_3(UNUSED f32 a0, UNUSED struct GdObj *a1, UNUSED struct GdObj *a2);\nvoid interpolate_animation_transform(struct GdAnimTransform *a0, struct GdAnimTransform *a1, f32 a2);\nvoid move_animator(struct ObjAnimator *animObj);\nvoid drag_picked_object(struct GdObj *inputObj);\nvoid move_animators(struct ObjGroup *group);\nvoid find_and_drag_picked_object(struct ObjGroup *group);\nvoid move_camera(struct ObjCamera *cam);\nvoid move_cameras_in_grp(struct ObjGroup *group);\nvoid func_8018100C(struct ObjLight *light);\nvoid move_lights_in_grp(struct ObjGroup *group);\nvoid proc_view_movement(struct ObjView *view);\nvoid reset_nets_and_gadgets(struct ObjGroup *group);\nvoid null_obj_lists(void);\n\n#endif // GD_OBJECTS_H\n"
  },
  {
    "path": "src/goddard/old_menu.c",
    "content": "#include <PR/ultratypes.h>\n#include <stdio.h>\n\n#include \"debug_utils.h\"\n#include \"dynlist_proc.h\"\n#include \"gd_types.h\"\n#include \"macros.h\"\n#include \"objects.h\"\n#include \"old_menu.h\"\n#include \"renderer.h\"\n\n/**\n * @file old_menu.c\n *\n * This file contains remnants of code for rendering what appears to be a GUI\n * that used the IRIX Graphics Library, from when this program was a standalone demo.\n * It also contains code for creating labels and gadget, which are `GdObj`s that\n * allow for displaying text and memory values on screen. Those `GdObj`s are not\n * created in-game, but there are some functions in `renderer.c` that use\n * them, and those functions may still work if called.\n */\n\n// bss\nstatic char sDefSettingsMenuStr[0x100];\nstatic struct GdVec3f sStaticVec;\nUNUSED static struct GdVec3f unusedVec;\nstatic struct ObjGadget *sCurGadgetPtr;\n\n// forward declarations\nstatic void reset_gadget_default(struct ObjGadget *);\n\n/* 239EC0 -> 239F78 */\nvoid get_objvalue(union ObjVarVal *dst, enum ValPtrType type, void *base, size_t offset) {\n    union ObjVarVal *objAddr = (void *) ((u8 *) base + offset);\n\n    switch (type) {\n        case OBJ_VALUE_INT:\n            dst->i = objAddr->i;\n            break;\n        case OBJ_VALUE_FLOAT:\n            dst->f = objAddr->f;\n            break;\n        default:\n            fatal_printf(\"%s: Undefined ValueType\", \"get_objvalue\");\n    }\n}\n\n/* 239F78 -> 23A00C */\nvoid Unknown8018B7A8(void *a0) {\n    struct GdVec3f sp1C;\n\n    set_cur_dynobj(a0);\n    d_get_init_pos(&sp1C);\n\n    sp1C.x += sStaticVec.x;\n    sp1C.y += sStaticVec.y;\n    sp1C.z += sStaticVec.z;\n    d_set_world_pos(sp1C.x, sp1C.y, sp1C.z);\n}\n\n/**\n * Unused - called when an item is selected from the \"Default Settings\" menu.\n *\n * @param itemId  ID of the menu item that was clicked\n */\nstatic void menu_cb_default_settings(intptr_t itemId) {\n    struct ObjGroup *group = (struct ObjGroup *)itemId;  // Unpack pointer from menu item ID\n    apply_to_obj_types_in_group(OBJ_TYPE_GADGETS, (applyproc_t) reset_gadget_default, group);\n    apply_to_obj_types_in_group(OBJ_TYPE_VIEWS, (applyproc_t) stub_renderer_6, gGdViewsGroup);\n}\n\n/**\n * Unused - appends a menu item for the group to sDefSettingsMenuStr.\n */\nstatic void add_item_to_default_settings_menu(struct ObjGroup *group) {\n    char buf[0x100];\n\n    if (group->debugPrint == 1) {\n        // Convert pointer to integer and store it as the menu item ID.\n        sprintf(buf, \"| %s %%x%d\", group->name, (u32) (intptr_t) group);\n        gd_strcat(sDefSettingsMenuStr, buf);\n    }\n}\n\n/**\n * Unused - creates a popup menu that allows the user to control some settings.\n */\nlong create_gui_menu(struct ObjGroup *grp) {\n    long dynamicsMenuId;\n    long defaultSettingMenuId;\n    long contTypeMenuId;\n\n    gd_strcpy(sDefSettingsMenuStr, \"Default Settings %t %F\");\n    apply_to_obj_types_in_group(OBJ_TYPE_GROUPS, (applyproc_t) add_item_to_default_settings_menu, grp);\n    defaultSettingMenuId = defpup(sDefSettingsMenuStr, &menu_cb_default_settings);\n\n    contTypeMenuId = defpup(\n        \"Control Type %t %F\"\n        \"| U-64 Analogue Joystick %x1 \"\n        \"| Keyboard %x2 \"\n        \"| Mouse %x3\",\n        &menu_cb_control_type);\n\n    dynamicsMenuId = defpup(\n        \"Dynamics %t \"\n        \"|\\t\\t\\tReset Positions %f \"\n        \"|\\t\\t\\tSet Defaults %m \"\n        \"|\\t\\t\\tSet Controller %m \"\n        \"|\\t\\t\\tRe-Calibrate Controller %f \"\n        \"|\\t\\t\\tQuit %f\",\n        &menu_cb_reset_positions, defaultSettingMenuId, contTypeMenuId, &menu_cb_recalibrate_controller, &gd_exit);\n\n    return dynamicsMenuId;\n}\n\n/* 23A190 -> 23A250 */\nstruct ObjLabel *make_label(struct ObjValPtr *ptr, char *str, s32 a2, f32 x, f32 y, f32 z) {\n    struct ObjLabel *label = (struct ObjLabel *) make_object(OBJ_TYPE_LABELS);\n    label->valfn = NULL;\n    label->valptr = ptr;\n    label->fmtstr = str;\n    label->unk24 = a2;\n    label->unk30 = 4;\n    label->position.x = x;\n    label->position.y = y;\n    label->position.z = z;\n\n    return label;\n}\n\n/* 23A250 -> 23A32C */\nstruct ObjGadget *make_gadget(UNUSED s32 a0, s32 a1) {\n    struct ObjGadget *gdgt = (struct ObjGadget *) make_object(OBJ_TYPE_GADGETS);\n    gdgt->valueGrp = NULL;\n    gdgt->rangeMax = 1.0f;\n    gdgt->rangeMin = 0.0f;\n    gdgt->unk20 = a1;\n    gdgt->colourNum = 0;\n    gdgt->sliderPos = 1.0f;\n    gdgt->size.x = 100.0f;\n    gdgt->size.y = 10.0f;\n    gdgt->size.z = 10.0f;  // how is this useful?\n\n    return gdgt;\n}\n\n/* 23A32C -> 23A3E4 */\nvoid set_objvalue(union ObjVarVal *src, enum ValPtrType type, void *base, size_t offset) {\n    union ObjVarVal *dst = (void *) ((u8 *) base + offset);\n    switch (type) {\n        case OBJ_VALUE_INT:\n            dst->i = src->i;\n            break;\n        case OBJ_VALUE_FLOAT:\n            dst->f = src->f;\n            break;\n        default:\n            fatal_printf(\"%s: Undefined ValueType\", \"set_objvalue\");\n    }\n}\n\n/* 23A3E4 -> 23A488; orig name: Unknown8018BD54 */\nvoid set_static_gdgt_value(struct ObjValPtr *vp) {\n    switch (vp->datatype) {\n        case OBJ_VALUE_FLOAT:\n            set_objvalue(&sCurGadgetPtr->varval, OBJ_VALUE_FLOAT, vp->obj, vp->offset);\n            break;\n        case OBJ_VALUE_INT:\n            set_objvalue(&sCurGadgetPtr->varval, OBJ_VALUE_INT, vp->obj, vp->offset);\n            break;\n    }\n}\n\n/* 23A488 -> 23A4D0 */\nstatic void reset_gadget_default(struct ObjGadget *gdgt) {\n    UNUSED u8 filler[4];\n\n    sCurGadgetPtr = gdgt;\n    apply_to_obj_types_in_group(OBJ_TYPE_VALPTRS, (applyproc_t) set_static_gdgt_value, gdgt->valueGrp);\n}\n\n/* 23A4D0 -> 23A784 */\nvoid adjust_gadget(struct ObjGadget *gdgt, s32 a1, s32 a2) {\n    UNUSED u8 filler[8];\n    f32 range;\n    struct ObjValPtr *vp;\n\n    if (gdgt->type == 1) {\n        gdgt->sliderPos += a2 * (-sCurrentMoveCamera->unk40.z * 1.0E-5);\n    } else if (gdgt->type == 2) {\n        gdgt->sliderPos += a1 * (-sCurrentMoveCamera->unk40.z * 1.0E-5);\n    }\n\n    // slider position must be between 0 and 1 (inclusive)\n    if (gdgt->sliderPos < 0.0f) {\n        gdgt->sliderPos = 0.0f;\n    } else if (gdgt->sliderPos > 1.0f) {\n        gdgt->sliderPos = 1.0f;\n    }\n\n    range = gdgt->rangeMax - gdgt->rangeMin;\n\n    if (gdgt->valueGrp != NULL) {\n        vp = (struct ObjValPtr *) gdgt->valueGrp->firstMember->obj;\n\n        switch (vp->datatype) {\n            case OBJ_VALUE_FLOAT:\n                gdgt->varval.f = gdgt->sliderPos * range + gdgt->rangeMin;\n                break;\n            case OBJ_VALUE_INT:\n                gdgt->varval.i = ((s32)(gdgt->sliderPos * range)) + gdgt->rangeMin;\n                break;\n            default:\n                fatal_printf(\"%s: Undefined ValueType\", \"adjust_gadget\");\n        }\n    }\n\n    reset_gadget_default(gdgt);\n}\n\n/* 23A784 -> 23A940; orig name: Unknown8018BFB4 */\nvoid reset_gadget(struct ObjGadget *gdgt) {\n    UNUSED u8 filler[8];\n    f32 range;\n    struct ObjValPtr *vp;\n\n    if (gdgt->rangeMax - gdgt->rangeMin == 0.0f) {\n        fatal_printf(\"gadget has zero range (%f -> %f)\\n\", gdgt->rangeMin, gdgt->rangeMax);\n    }\n\n    range = (f32)(1.0 / (gdgt->rangeMax - gdgt->rangeMin));\n\n    if (gdgt->valueGrp != NULL) {\n        vp = (struct ObjValPtr *) gdgt->valueGrp->firstMember->obj;\n\n        switch (vp->datatype) {\n            case OBJ_VALUE_FLOAT:\n                get_objvalue(&gdgt->varval, OBJ_VALUE_FLOAT, vp->obj, vp->offset);\n                gdgt->sliderPos = (gdgt->varval.f - gdgt->rangeMin) * range;\n                break;\n            case OBJ_VALUE_INT:\n                get_objvalue(&gdgt->varval, OBJ_VALUE_INT, vp->obj, vp->offset);\n                gdgt->sliderPos = (gdgt->varval.i - gdgt->rangeMin) * range;\n                break;\n            default:\n                fatal_printf(\"%s: Undefined ValueType\", \"reset_gadget\");\n        }\n    }\n}\n\n/* 23A940 -> 23A980 */\nvoid reset_gadgets_in_grp(struct ObjGroup *grp) {\n    apply_to_obj_types_in_group(OBJ_TYPE_GADGETS, (applyproc_t) reset_gadget, grp);\n}\n"
  },
  {
    "path": "src/goddard/old_menu.h",
    "content": "#ifndef GD_OLD_MENU_H\n#define GD_OLD_MENU_H\n\n#include <PR/ultratypes.h>\n\n#include \"gd_types.h\"\n#include \"macros.h\"\n\nvoid get_objvalue(union ObjVarVal *dst, enum ValPtrType type, void *base, size_t offset);\nstruct ObjGadget *make_gadget(UNUSED s32 a0, s32 a1);\nvoid reset_gadget(struct ObjGadget *gdgt);\nvoid reset_gadgets_in_grp(struct ObjGroup *grp);\n\n// see bad_declarations.h\n#ifndef GD_USE_BAD_DECLARATIONS\nstruct ObjLabel *make_label(struct ObjValPtr *ptr, char *str, s32 a2, f32 x, f32 y, f32 z);\n#endif\n\n#endif // GD_OLD_MENU_H\n"
  },
  {
    "path": "src/goddard/particles.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"debug_utils.h\"\n#include \"draw_objects.h\"\n#include \"dynlist_proc.h\"\n#include \"gd_math.h\"\n#include \"gd_types.h\"\n#include \"macros.h\"\n#include \"objects.h\"\n#include \"particles.h\"\n#include \"renderer.h\"\n#include \"skin.h\"\n\n// static types\ntypedef union {\n    struct ObjVertex *vtx;\n    struct ObjParticle *ptc;\n} VtxPtc;\n\nstruct Connection {\n    struct GdObj header;  // this header is never used\n    u8 filler[8];\n    VtxPtc node1;  // first connected vertex or particle\n    VtxPtc node2;  // second connected vertex or particle\n    f32 unk24;\n    u32 unk28; // union tag? 0 = vertex; 1 = particle?\n};\n\n// data\nUNUSED static void *sUnused801A81D0 = NULL;\nstatic s32 D_801A81D4[25] = {\n    /*  ID?    X    Y    Z */\n    9,  3,  12,  -14, 25, 5,  16,  -25, 42, 4,  15, -39, 55,\n    -6, 20, -23, 70,  -2, 20, -23, 135, 0,  16, 0,  0 /* Terminator */\n};\nstatic s32 D_801A8238[5] = {\n    /*  ID? X   Y  Z */\n    15, 0, 22, 0, 0 /* Terminator */\n};\n\n// static bss\nstatic struct ObjFace *D_801B9EF0;\n\n// fn declarations\nstruct Connection *make_connection(struct ObjVertex *, struct ObjVertex *);\nvoid Unknown80181D14(struct ObjFace *);\nvoid func_80181EB0(struct Connection *);\nvoid func_80182088(struct Connection *);\nvoid move_particle(struct ObjParticle *);\nstruct Connection *make_connection(struct ObjVertex *, struct ObjVertex *);\nint func_80182778(struct ObjParticle *);\nvoid func_80182A08(struct ObjParticle *, struct GdVec3f *b);\nvoid func_801838D0(struct ObjParticle *);\nvoid Unknown801835C8(struct ObjParticle *ptc);\n\nstatic void connect_vertices(struct ObjVertex *vtx1, struct ObjVertex *vtx2) {\n    struct Connection *newConn;\n    register struct ListNode *link;\n\n    if (vtx1 == vtx2) {\n        return;\n    }\n    link = gGdSkinNet->unk1C0->firstMember;\n    while (link != NULL) {\n        // FIXME: types\n        struct Connection *conn = (struct Connection *) link->obj;\n\n        if ((conn->node1.vtx == vtx1 || conn->node1.vtx == vtx2)\n         && (conn->node2.vtx == vtx1 || conn->node2.vtx == vtx2)) {\n            break;\n        }\n        link = link->next;\n    }\n    if (link == NULL) {\n        newConn = make_connection(vtx1, vtx2);\n        //! make_connection never sets the header, so not sure what happens here\n        addto_group(gGdSkinNet->unk1C0, &newConn->header);\n    }\n}\n\n/* 2304E4 -> 230680 */\nvoid Unknown80181D14(struct ObjFace *face) {\n    s32 i;\n    s32 j;\n    struct ObjVertex *vtx1;\n    struct ObjVertex *vtx2;\n\n    for (i = 0; i < face->vtxCount - 1; i++) {\n        vtx1 = face->vertices[i];\n        vtx2 = face->vertices[i + 1];\n        connect_vertices(vtx1, vtx2);\n    }\n    if (D_801B9EF0 != NULL) {\n        for (i = 0; i < face->vtxCount; i++) {\n            vtx1 = face->vertices[i];\n            for (j = 0; j < D_801B9EF0->vtxCount; j++) {\n                vtx2 = D_801B9EF0->vertices[j];\n                connect_vertices(vtx1, vtx2);\n            }\n        }\n    }\n    D_801B9EF0 = face;\n}\n\n/* 230680 -> 230858 */\nvoid func_80181EB0(struct Connection *cxn) {\n    struct GdVec3f sp34;\n    UNUSED u8 filler[44];\n    struct ObjParticle *sp4 = cxn->node1.ptc;\n    struct ObjParticle *sp0 = cxn->node2.ptc;\n\n    sp34.x = 0.0f;\n    sp34.y = sp4->pos.y - sp0->pos.y;\n    sp34.z = 0.0f;\n    sp34.y *= 0.01;\n    sp4->unk38.x -= sp34.x;\n    sp4->unk38.y -= sp34.y;\n    sp4->unk38.z -= sp34.z;\n    sp0->unk38.x += sp34.x;\n    sp0->unk38.y += sp34.y;\n    sp0->unk38.z += sp34.z;\n    if (!(sp4->flags & 2)) {\n        sp4->pos.x -= sp34.x;\n        sp4->pos.y -= sp34.y;\n        sp4->pos.z -= sp34.z;\n    }\n    if (!(sp0->flags & 2)) {\n        sp0->pos.x += sp34.x;\n        sp0->pos.y += sp34.y;\n        sp0->pos.z += sp34.z;\n    }\n}\n\n/* @ 230858 -> 230B70 */\nvoid func_80182088(struct Connection *cxn) {\n    struct GdVec3f sp4C;\n    UNUSED u8 filler[36];\n    f32 sp24;\n    f32 sp20;\n    struct ObjParticle *sp1C;\n    struct ObjParticle *sp18;\n\n    if (cxn->unk28 & 1) {\n        func_80181EB0(cxn);\n        return;\n    }\n    sp1C = cxn->node1.ptc;\n    sp18 = cxn->node2.ptc;\n    sp4C.x = sp1C->pos.x - sp18->pos.x;\n    sp4C.y = sp1C->pos.y - sp18->pos.y;\n    sp4C.z = sp1C->pos.z - sp18->pos.z;\n    sp20 = gd_vec3f_magnitude(&sp4C);\n    sp24 = sp20 - cxn->unk24;\n    sp4C.x /= sp20;\n    sp4C.y /= sp20;\n    sp4C.z /= sp20;\n    sp4C.x *= sp24 * 0.1;\n    sp4C.y *= sp24 * 0.1;\n    sp4C.z *= sp24 * 0.1;\n    sp1C->unk38.x -= sp4C.x;\n    sp1C->unk38.y -= sp4C.y;\n    sp1C->unk38.z -= sp4C.z;\n    sp18->unk38.x += sp4C.x;\n    sp18->unk38.y += sp4C.y;\n    sp18->unk38.z += sp4C.z;\n    if (!(sp1C->flags & 2)) {\n        sp1C->pos.x -= sp4C.x;\n        sp1C->pos.y -= sp4C.y;\n        sp1C->pos.z -= sp4C.z;\n    }\n    if (!(sp18->flags & 2)) {\n        sp18->pos.x += sp4C.x;\n        sp18->pos.y += sp4C.y;\n        sp18->pos.z += sp4C.z;\n    }\n}\n\n/* 230B70 -> 230CC0 */\nvoid func_801823A0(struct ObjNet *net) {\n    register struct ListNode *link;\n    struct Connection *cxn;\n\n    gGdSkinNet = net;\n    switch (net->unk3C) {\n        case 1: // Shape; Are these flags the same as net->netType (+0x1EC)?\n            net->unk1C8 = net->shapePtr->vtxGroup;\n            net->unk1C0 = make_group(0);\n            D_801B9EF0 = NULL;\n\n            apply_to_obj_types_in_group(OBJ_TYPE_FACES, (applyproc_t) Unknown80181D14,\n                                        net->shapePtr->faceGroup);\n            net->unk3C = 2;\n            break;\n        case 2:\n            link = net->unk1C0->firstMember;\n            while (link != NULL) {\n                // FIXME: types\n                cxn = (struct Connection *) link->obj;\n                func_80182088(cxn);\n                link = link->next;\n            }\n            apply_to_obj_types_in_group(OBJ_TYPE_PARTICLES, (applyproc_t) move_particle, net->unk1C8);\n            apply_to_obj_types_in_group(OBJ_TYPE_PLANES, (applyproc_t) reset_plane, net->unk1CC);\n            break;\n    }\n}\n\n/* 230CC0 -> 230DCC */\nstruct ObjParticle *make_particle(u32 flags, s32 colourNum, f32 x, f32 y, f32 z) {\n    struct ObjParticle *particle = (struct ObjParticle *) make_object(OBJ_TYPE_PARTICLES);\n    UNUSED u8 filler[8];\n\n    particle->pos.x = x;\n    particle->pos.y = y;\n    particle->pos.z = z;\n    particle->unk38.x = particle->unk38.y = particle->unk38.z = 0.0f;\n    particle->colourNum = colourNum;\n    particle->flags = flags | 8;\n    particle->timeout = -1;\n    particle->id = D_801B9E40; /* should this be D_801B9E40++? */\n    particle->shapePtr = NULL;\n    particle->unkB0 = 1;\n    return particle;\n}\n\n/* 230DCC -> 230F48 */\nstruct Connection *make_connection(struct ObjVertex *vtx1, struct ObjVertex *vtx2) {\n    struct Connection *conn = gd_malloc_perm(sizeof(struct Connection));\n    struct GdVec3f sp28;\n    struct GdVec3f sp1C;\n\n    if (conn == NULL) {\n        fatal_print(\"Cant allocate connection memory!\");\n    }\n    conn->node1.vtx = vtx1;\n    conn->node2.vtx = vtx2;\n    d_stash_dynobj();\n    set_cur_dynobj((struct GdObj *)vtx1);\n    d_get_world_pos(&sp28);\n    set_cur_dynobj((struct GdObj *)vtx2);\n    d_get_world_pos(&sp1C);\n    sp28.x -= sp1C.x;\n    sp28.y -= sp1C.y;\n    sp28.z -= sp1C.z;\n    conn->unk24 = gd_vec3f_magnitude(&sp28);\n    // Duplicate conditional. Possibly should've checked `vtx2`;\n    // Also, this shouldn't be called with particle types...\n    if (vtx1->header.type == OBJ_TYPE_PARTICLES && vtx1->header.type == OBJ_TYPE_PARTICLES) {\n        if ((((struct ObjParticle *) vtx1)->flags & 4) && (((struct ObjParticle *) vtx2)->flags & 4)) {\n            conn->unk28 |= 1;\n        }\n    }\n    d_unstash_dynobj();\n    return conn;\n}\n\n/* 230F48 -> 2311D8 */\nint func_80182778(struct ObjParticle *ptc) {\n    s32 sp4 = 0;\n\n    if (ptc->unk7C->animSeqNum == 2 && ptc->unk74 == 1) {\n        while (D_801A81D4[sp4] != 0) {\n            if (D_801A81D4[sp4] == ptc->unk7C->frame) {\n                ptc->pos.x = D_801A81D4[sp4 + 1] * 10.0f;\n                ptc->pos.y = D_801A81D4[sp4 + 2] * 10.0f;\n                ptc->pos.z = D_801A81D4[sp4 + 3] * 10.0f;\n                return TRUE;\n            }\n            sp4 += 4;\n        }\n    }\n    if (ptc->unk7C->animSeqNum == 1 && ptc->unk74 == 1) {\n        while (D_801A8238[sp4] != 0) {\n            if (D_801A8238[sp4] == ptc->unk7C->frame) {\n                ptc->pos.x = D_801A8238[sp4 + 1] * 10.0f;\n                ptc->pos.y = D_801A8238[sp4 + 2] * 10.0f;\n                ptc->pos.z = D_801A8238[sp4 + 3] * 10.0f;\n                return TRUE;\n            }\n            sp4 += 4;\n        }\n    }\n    return FALSE;\n}\n\n/* 2311D8 -> 231454 */\nvoid func_80182A08(struct ObjParticle *ptc, struct GdVec3f *b) {\n    register struct ListNode *link;\n    struct ObjParticle *sp20;\n\n    if (ptc->subParticlesGrp != NULL) {\n        link = ptc->subParticlesGrp->firstMember;\n        while (link != NULL) {\n            // FIXME: types\n            sp20 = (struct ObjParticle *) link->obj;\n            if (sp20->timeout <= 0) {\n                sp20->pos.x = ptc->pos.x;\n                sp20->pos.y = ptc->pos.y;\n                sp20->pos.z = ptc->pos.z;\n                sp20->timeout = 12.0f - gd_rand_float() * 5.0f;\n                do {\n                    sp20->unk38.x = gd_rand_float() * 50.0 - 25.0;\n                    sp20->unk38.y = gd_rand_float() * 50.0 - 25.0;\n                    sp20->unk38.z = gd_rand_float() * 50.0 - 25.0;\n                } while (gd_vec3f_magnitude(&sp20->unk38) > 30.0);\n                sp20->unk38.x += b->x;\n                sp20->unk38.y += b->y;\n                sp20->unk38.z += b->z;\n                sp20->header.drawFlags &= ~OBJ_INVISIBLE;\n                sp20->flags |= 8;\n            }\n            link = link->next;\n        }\n    }\n}\n\n/* 231454 -> 231D40; orig name: Unknown80182C84 */\nvoid move_particle(struct ObjParticle *ptc) {\n    f32 sp7C;\n    UNUSED u8 filler1[12];\n    struct GdVec3f sp64;\n    struct ObjParticle *sp60;\n    UNUSED u8 filler2[4];\n    s32 i;\n    UNUSED u8 filler3[8];\n    struct ObjCamera *sp4C;\n    struct GdVec3f sp40;\n    struct GdVec3f sp34;\n\n    if (ptc->flags & 2) {\n        return;\n    }\n    if (!(ptc->flags & 8)) {\n        return;\n    }\n    if (ptc->unk60 == 3) {\n        sp40.x = -gViewUpdateCamera->unkE8[2][0] * 50.0f;\n        sp40.y = -gViewUpdateCamera->unkE8[2][1] * 50.0f;\n        sp40.z = gViewUpdateCamera->unkE8[2][2] * 50.0f;\n        sp34.x = gViewUpdateCamera->unkE8[2][0] * -20.0f;\n        sp34.y = gViewUpdateCamera->unkE8[2][1] * -20.0f;\n        sp34.z = gViewUpdateCamera->unkE8[2][2] * -20.0f;\n    }\n    if (ptc->attachedToObj != NULL) {\n        set_cur_dynobj(ptc->attachedToObj);\n        if (ptc->unk60 == 3) {\n            if (ptc->unk64 == 3) {\n                sp4C = (struct ObjCamera *) ptc->attachedToObj;\n                // Camera->unk18C = ObjView here\n                if (sp4C->unk18C->pickedObj != NULL) {\n                    set_cur_dynobj(sp4C->unk18C->pickedObj);\n                    ptc->flags |= 0x20;\n                    ; // needed to match\n                } else {\n                    ptc->flags &= ~0x10;\n                    ptc->flags &= ~0x20;\n                }\n            }\n        }\n        d_get_world_pos(&sp64);\n        ptc->pos.x = sp64.x;\n        ptc->pos.y = sp64.y;\n        ptc->pos.z = sp64.z;\n    }\n    sp7C = -0.4f;\n    ptc->pos.x += ptc->unk38.x;\n    ptc->pos.y += ptc->unk38.y;\n    ptc->pos.z += ptc->unk38.z;\n    if (ptc->flags & 1) {\n        ptc->unk38.y += sp7C;\n    }\n    func_801838D0(ptc);\n    switch (ptc->unkB0) {\n        case 1:\n            ptc->unkB0 = 2;\n            if (ptc->unk60 == 3) {\n                switch (ptc->unk64) {\n                    case 1:\n                        ptc->subParticlesGrp = make_group(0);\n                        for (i = 0; i < 50; i++) {\n                            sp60 = make_particle(1, -1, ptc->pos.x, ptc->pos.y, ptc->pos.z);\n                            sp60->shapePtr = ptc->shapePtr;\n                            addto_group(ptc->subParticlesGrp, &sp60->header);\n                            sp60->flags &= ~8;\n                        }\n                        break;\n                    case 2:\n                    case 3:\n                        ptc->subParticlesGrp = make_group(0);\n                        for (i = 0; i < 30; i++) {\n                            sp60 = make_particle(1, -1, ptc->pos.x, ptc->pos.y, ptc->pos.z);\n                            sp60->shapePtr = ptc->shapePtr;\n                            addto_group(ptc->subParticlesGrp, &sp60->header);\n                            sp60->flags &= ~8;\n                        }\n                        break;\n                }\n            }\n            break;\n        default:\n            break;\n    }\n    ptc->unk38.x *= 0.9;\n    ptc->unk38.y *= 0.9;\n    ptc->unk38.z *= 0.9;\n    if (ptc->unk60 == 3) {\n        switch (ptc->unk64) {\n            case 1:\n                if (func_80182778(ptc) && ptc->subParticlesGrp != NULL) {\n                    register struct ListNode *link;\n\n                    if (ptc->unk80 != NULL) {\n                        ptc->unk80->unk3C |= 1;\n                        ptc->unk80->position.x = ptc->pos.x;\n                        ptc->unk80->position.y = ptc->pos.y;\n                        ptc->unk80->position.z = ptc->pos.z;\n                    }\n                    link = ptc->subParticlesGrp->firstMember;\n                    while (link != NULL) {\n                        struct ObjParticle *sp2C = (struct ObjParticle *) link->obj;\n\n                        sp2C->pos.x = ptc->pos.x;\n                        sp2C->pos.y = ptc->pos.y;\n                        sp2C->pos.z = ptc->pos.z;\n                        sp2C->timeout = 20;\n                        do {\n                            sp2C->unk38.x = gd_rand_float() * 64.0 - 32.0;\n                            sp2C->unk38.y = gd_rand_float() * 64.0 - 32.0;\n                            sp2C->unk38.z = gd_rand_float() * 64.0 - 32.0;\n                        } while (gd_vec3f_magnitude(&sp2C->unk38) > 32.0);\n                        sp2C->unk30 = gd_rand_float() * 180.0f;\n                        sp2C->header.drawFlags &= ~OBJ_INVISIBLE;\n                        sp2C->flags |= 8;\n                        link = link->next;\n                    }\n                }\n                break;\n            case 3:\n                if ((ptc->flags & 0x20) && !(ptc->flags & 0x10)) {\n                    func_80182A08(ptc, &sp40);\n                    ptc->flags |= 0x10;\n                }\n                break;\n            case 2:\n                func_80182A08(ptc, &sp34);\n                break;\n        }\n        apply_to_obj_types_in_group(OBJ_TYPE_PARTICLES, (applyproc_t) move_particle, ptc->subParticlesGrp);\n    }\n    if (ptc->timeout >= 0) {\n        if (ptc->timeout-- <= 0) {\n            ptc->header.drawFlags |= OBJ_INVISIBLE;\n            ptc->flags &= ~8;\n        }\n    }\n}\n\n/* 231D40 -> 231D98; orig name: func_80183570 */\nvoid move_particles_in_grp(struct ObjGroup *group) {\n    start_timer(\"particles\");\n    gGdSkinNet = NULL;\n    apply_to_obj_types_in_group(OBJ_TYPE_PARTICLES, (applyproc_t) move_particle, group);\n    stop_timer(\"particles\");\n}\n\n#define ABS(x) ((x) < 0.0f ? -(x) : (x))\n/* 231D98 -> 232040 */\nvoid Unknown801835C8(struct ObjParticle *ptc) {\n    struct GdVec3f sp54;\n    f32 sp50;\n    register struct ListNode *link;\n\n    gd_printf(\"p(%d)=\", ptc->attachedObjsGrp->memberCount);\n    link = ptc->attachedObjsGrp->firstMember;\n    while (link != NULL) {\n        // FIXME: types\n        struct ObjParticle *sp48 = (struct ObjParticle *) link->obj;\n\n        sp54.x = sp48->pos.x - ptc->pos.x;\n        sp54.y = sp48->pos.y - ptc->pos.y;\n        sp54.z = sp48->pos.z - ptc->pos.z;\n        sp50 = 150.0f - (ABS(sp54.x) + ABS(sp54.y) + ABS(sp54.z));\n        gd_printf(\",%f \", sp50);\n        sp50 *= 0.00000005;\n        ptc->pos.x += sp50 * sp54.x;\n        ptc->pos.y += sp50 * sp54.y;\n        ptc->pos.z += sp50 * sp54.z;\n        sp48->pos.x -= sp50 * sp54.x;\n        sp48->pos.y -= sp50 * sp54.y;\n        sp48->pos.z -= sp50 * sp54.z;\n        link = link->next;\n    }\n    gd_printf(\"\\n\");\n}\n\n/**\n * Unused\n */\nvoid stub_particles_1(UNUSED s32 a) {\n}\n\n/**\n * Unused\n */\nvoid stub_particles_2(UNUSED s32 a) {\n}\n\n/**\n * Unused\n */\nvoid stub_particles_3(UNUSED s32 a, UNUSED s32 b, UNUSED s32 c) {\n}\n\n/**\n * Unused\n */\nvoid stub_particles_4(UNUSED s32 a, UNUSED s32 b, UNUSED s32 c) {\n}\n\n/* 2320A0 -> 2320D4; pad to 2320E0 */\nvoid func_801838D0(struct ObjParticle *ptc) {\n    D_801B9E3C = ptc;\n    if (ptc->pos.y < -15.0f) {\n    }\n}\n"
  },
  {
    "path": "src/goddard/particles.h",
    "content": "#ifndef GD_PARTICLES_H\n#define GD_PARTICLES_H\n\n#include <PR/ultratypes.h>\n\n#include \"gd_types.h\"\n\n// functions\nvoid func_801823A0(struct ObjNet *net);\nstruct ObjParticle *make_particle(u32 a, s32 b, f32 x, f32 y, f32 z);\nvoid move_particles_in_grp(struct ObjGroup *group);\n\n#endif // GD_PARTICLES_H\n"
  },
  {
    "path": "src/goddard/renderer.c",
    "content": "#include <ultra64.h>\n#include <stdarg.h>\n#include <stdio.h>\n\n#include \"debug_utils.h\"\n#include \"draw_objects.h\"\n#include \"dynlist_proc.h\"\n#include \"dynlists/dynlists.h\"\n#include \"gd_macros.h\"\n#include \"gd_main.h\"\n#include \"gd_math.h\"\n#include \"gd_memory.h\"\n#include \"gd_types.h\"\n#include \"macros.h\"\n#include \"objects.h\"\n#include \"renderer.h\"\n#include \"sfx.h\"\n#include \"shape_helper.h\"\n#include \"skin.h\"\n#include \"types.h\"\n\n#define MAX_GD_DLS 1000\n#define OS_MESG_SI_COMPLETE 0x33333333\n\n#ifndef NO_SEGMENTED_MEMORY\n#define GD_VIRTUAL_TO_PHYSICAL(addr) ((uintptr_t)(addr) &0x0FFFFFFF)\n#define GD_LOWER_24(addr) ((uintptr_t)(addr) &0x00FFFFFF)\n#define GD_LOWER_29(addr) (((uintptr_t)(addr)) & 0x1FFFFFFF)\n#else\n#define GD_VIRTUAL_TO_PHYSICAL(addr) (addr)\n#define GD_LOWER_24(addr) ((uintptr_t)(addr))\n#define GD_LOWER_29(addr) (((uintptr_t)(addr)))\n#endif\n\n#define MTX_INTPART_PACK(w1, w2) (((w1) &0xFFFF0000) | (((w2) >> 16) & 0xFFFF))\n#define MTX_FRACPART_PACK(w1, w2) ((((w1) << 16) & 0xFFFF0000) | ((w2) &0xFFFF))\n#define LOOKAT_PACK(c) ((s32) MIN(((c) * (128.0)), 127.0) & 0xff)\n\n// structs\nstruct GdDisplayList {\n    /* Vertices */\n    /*0x00*/ s32 curVtxIdx;\n    /*0x04*/ s32 totalVtx;\n    /*0x08*/ Vtx *vtx;\n    /* Matrices */\n    /*0x0C*/ s32 curMtxIdx;\n    /*0x10*/ s32 totalMtx;\n    /*0x14*/ Mtx *mtx;\n    /* Lights */\n    /*0x18*/ s32 curLightIdx;\n    /*0x1C*/ s32 totalLights;\n    /*0x20*/ Lights4 *light;\n    /* Gfx-es */\n    /*0x24*/ s32 curGfxIdx;\n    /*0x28*/ s32 totalGfx;\n    /*0x2C*/ Gfx *gfx;    // active position in DL\n    /*0x30*/ Gfx **dlptr; // pointer to list/array of display lists for each frame?\n                          /* Viewports */\n    /*0x34*/ s32 curVpIdx;\n    /*0x38*/ s32 totalVp;\n    /*0x3C*/ Vp *vp;\n    /* GD DL Info */\n    /*0x40*/ u32 id;     // user specified\n    /*0x44*/ u32 number; // count\n    /*0x48*/ u8 filler[4];\n    /*0x4C*/ struct GdDisplayList *parent; // not quite sure?\n};                                         /* sizeof = 0x50 */\n// accessor macros for gd dl\n#define DL_CURRENT_VTX(dl)   ((dl)->vtx[(dl)->curVtxIdx])\n#define DL_CURRENT_MTX(dl)   ((dl)->mtx[(dl)->curMtxIdx])\n#define DL_CURRENT_LIGHT(dl) ((dl)->light[(dl)->curLightIdx])\n#define DL_CURRENT_GFX(dl)   ((dl)->gfx[(dl)->curGfxIdx])\n#define DL_CURRENT_VP(dl)    ((dl)->vp[(dl)->curVpIdx])\n\nstruct LightDirVec {\n    s32 x, y, z;\n};\n\nenum DynListBankFlag { TABLE_END = -1, STD_LIST_BANK = 3 };\n\nstruct DynListBankInfo {\n    /* 0x00 */ enum DynListBankFlag flag;\n    /* 0x04 */ struct DynList *list;\n};\n\n// bss\n#if defined(VERSION_EU) || defined(VERSION_SH) || defined(VERSION_CN)\nstatic OSMesgQueue D_801BE830; // controller msg queue\nstatic OSMesg D_801BE848[10];\nu8 EUpad1[0x40];\nstatic OSMesgQueue D_801BE8B0;\nstatic OSMesgQueue sGdDMAQueue; // @ 801BE8C8\n// static u32 unref_801be870[16];\n// static u32 unref_801be8e0[25];\n// static u32 unref_801be948[13];\nu8 EUpad2[0x64];\nstatic OSMesg sGdMesgBuf[1]; // @ 801BE944\nu8 EUpad3[0x34];\nstatic OSMesg sGdDMACompleteMsg; // msg buf for D_801BE8B0 queue\nstatic OSIoMesg sGdDMAReqMesg;\nstatic struct ObjView *D_801BE994; // store if View flag 0x40 set\n\nu8 EUpad4[0x88];\n#endif\nstatic OSContStatus D_801BAE60[4];\nstatic OSContPad sGdContPads[4];    // @ 801BAE70\nstatic OSContPad sPrevFrameCont[4]; // @ 801BAE88\nstatic u8 D_801BAEA0;\nstatic struct ObjGadget *sTimerGadgets[GD_NUM_TIMERS]; // @ 801BAEA8\nstatic u32 D_801BAF28;                                 // RAM addr offset?\nstatic s16 sTriangleBuf[13][8];                          // [[s16; 8]; 13]? vert indices?\nUNUSED static u32 unref_801bb000[3];\nstatic u8 *sMemBlockPoolBase; // @ 801BB00C\nstatic u32 sAllocMemory;      // @ 801BB010; malloc-ed bytes\nUNUSED static u32 unref_801bb014;\nstatic s32 D_801BB018;\nstatic s32 D_801BB01C;\nstatic void *sLoadedTextures[0x10];          // texture pointers\nstatic s32 sTextureDisplayLists[0x10];            // gd_dl indices\nstatic s16 sVtxCvrtTCBuf[2];            // @ 801BB0A0\nstatic s32 sCarGdDlNum;                 // @ 801BB0A4\nstatic struct ObjGroup *sYoshiSceneGrp; // @ 801BB0A8\nstatic s32 unusedDl801BB0AC;                  // unused DL number\nstatic struct ObjGroup *sMarioSceneGrp; // @ 801BB0B0\nstatic s32 D_801BB0B4;                  // second offset into sTriangleBuf\nstatic struct ObjGroup *sCarSceneGrp;   // @ 801BB0B8\nstatic s32 sVertexBufCount; // vtx's to load into RPD? Vtx len in GD Dl and in the lower bank (AF30)\nstatic struct ObjView *sYoshiSceneView; // @ 801BB0C0\nstatic s32 sTriangleBufCount;                  // number of triangles in sTriangleBuf\nstatic struct ObjView *sMSceneView;     // @ 801BB0C8; Mario scene view\nstatic s32 sVertexBufStartIndex;                  // Vtx start in GD Dl\nstatic struct ObjView *sCarSceneView;   // @ 801BB0D0\nstatic s32 sUpdateYoshiScene;           // @ 801BB0D4; update dl Vtx from ObjVertex?\nstatic s32 sUpdateMarioScene;           // @ 801BB0D8; update dl Vtx from ObjVertex?\nUNUSED static u32 unref_801bb0dc;\nstatic s32 sUpdateCarScene; // @ 801BB0E0; guess, not really used\nUNUSED static u32 unref_801bb0e4;\nstatic struct GdVec3f sTextDrawPos;  // position to draw text? only set in one function, never used\nUNUSED static u32 unref_801bb0f8[2];\nstatic Mtx sIdnMtx;           // @ 801BB100\nstatic Mat4f sInitIdnMat4;    // @ 801BB140\nstatic s8 sVtxCvrtNormBuf[3]; // @ 801BB180\nstatic s16 sAlpha;\nstatic s32 sNumLights;\nstatic struct GdColour sAmbScaleColour;       // @ 801BB190\nstatic struct GdColour sLightScaleColours[2]; // @ 801BB1A0\nstatic struct LightDirVec sLightDirections[2];\nstatic s32 sLightId;\nstatic Hilite sHilites[600];\nstatic struct GdVec3f D_801BD758;\nstatic struct GdVec3f D_801BD768; // had to migrate earlier\nstatic u32 D_801BD774;\nstatic struct GdObj *sMenuGadgets[9]; // @ 801BD778; d_obj ptr storage? menu?\nstatic struct ObjView *sDebugViews[2];  // Seems to be a list of ObjViews for displaying debug info\nstatic struct GdDisplayList *sStaticDl;     // @ 801BD7A8\nstatic struct GdDisplayList *sDynamicMainDls[2]; // @ 801BD7B0\nstatic struct GdDisplayList *sGdDlStash;    // @ 801BD7B8\nstatic struct GdDisplayList *sMHeadMainDls[2]; // @ 801BD7C0; two DLs, double buffered one per frame - seem to be basic dls that branch to actual lists?\nstatic struct GdDisplayList *sViewDls[3][2];       // I guess? 801BD7C8 -> 801BD7E0?\nstatic struct GdDisplayList *sGdDLArray[MAX_GD_DLS]; // @ 801BD7E0; indexed by dl number (gddl+0x44)\nstatic s32 sPickBufLen;                              // @ 801BE780\nstatic s32 sPickBufPosition;                         // @ 801BE784\nstatic s16 *sPickBuf;                                // @ 801BE788\nstatic LookAt D_801BE790[2];\nstatic LookAt D_801BE7D0[3];\n#if defined(VERSION_JP) || defined(VERSION_US)\nstatic OSMesgQueue D_801BE830; // controller msg queue\nstatic OSMesg D_801BE848[10];\nUNUSED static u32 unref_801be870[16];\nstatic OSMesgQueue D_801BE8B0;\nstatic OSMesgQueue sGdDMAQueue; // @ 801BE8C8\nUNUSED static u32 unref_801be8e0[25];\nstatic OSMesg sGdMesgBuf[1]; // @ 801BE944\nUNUSED static u32 unref_801be948[13];\nstatic OSMesg sGdDMACompleteMsg; // msg buf for D_801BE8B0 queue\nstatic OSIoMesg sGdDMAReqMesg;\nstatic struct ObjView *D_801BE994; // store if View flag 0x40 set\n#endif\n\n// data\nUNUSED static u32 unref_801a8670 = 0;\nstatic s32 D_801A8674 = 0;\nUNUSED static u32 unref_801a8678 = 0;\nstatic s32 D_801A867C = 0;\nstatic s32 D_801A8680 = 0;\nstatic f32 sTracked1FrameTime = 0.0f; // @ 801A8684\nstatic f32 sDynamicsTime = 0.0f;      // @ 801A8688\nstatic f32 sDLGenTime = 0.0f;         // @ 801A868C\nstatic f32 sRCPTime = 0.0f;           // @ 801A8690\nstatic f32 sTimeScaleFactor = 1.0f;   // @ D_801A8694\nstatic u32 sMemBlockPoolSize = 1;     // @ 801A8698\nstatic s32 sMemBlockPoolUsed = 0;     // @ 801A869C\nstatic s32 sTextureCount = 0;  // maybe?\nstatic struct GdTimer *D_801A86A4 = NULL; // timer for dlgen, dynamics, or rcp\nstatic struct GdTimer *D_801A86A8 = NULL; // timer for dlgen, dynamics, or rcp\nstatic struct GdTimer *D_801A86AC = NULL; // timer for dlgen, dynamics, or rcp\ns32 gGdFrameBufNum = 0;                      // @ 801A86B0\nUNUSED static u32 unref_801a86B4 = 0;\nstatic struct ObjShape *sHandShape = NULL; // @ 801A86B8\nstatic s32 D_801A86BC = 1;\nstatic s32 D_801A86C0 = 0; // gd_dl id for something?\nUNUSED static u32 unref_801a86C4 = 10;\nstatic s32 sMtxParamType = G_MTX_PROJECTION;\nstatic struct GdVec3f D_801A86CC = { 1.0f, 1.0f, 1.0f };\nstatic struct ObjView *sActiveView = NULL;  // @ 801A86D8 current view? used when drawing dl\nstatic struct ObjView *sScreenView = NULL; // @ 801A86DC\nstatic struct ObjView *D_801A86E0 = NULL;\nstatic struct ObjView *sHandView = NULL; // @ 801A86E4\nstatic struct ObjView *sMenuView = NULL; // @ 801A86E8\nstatic u32 sItemsInMenu = 0;             // @ 801A86EC\nstatic s32 sDebugViewsCount = 0;               // number of elements in the sDebugViews array\nstatic s32 sCurrDebugViewIndex = 0;             // @ 801A86F4; timing activate cool down counter?\nUNUSED static u32 unref_801a86F8 = 0;\nstatic struct GdDisplayList *sCurrentGdDl = NULL; // @ 801A86FC\nstatic u32 sGdDlCount = 0;                        // @ 801A8700\nstatic struct DynListBankInfo sDynLists[] = {     // @ 801A8704\n    { STD_LIST_BANK, dynlist_test_cube },\n    { STD_LIST_BANK, dynlist_spot_shape },\n    { STD_LIST_BANK, dynlist_mario_master },\n    { TABLE_END, NULL }\n};\n\n// textures and display list data\nUNUSED static Gfx gd_texture1_dummy_aligner1[] = { // @ 801A8728\n    gsSPEndDisplayList(),\n};\n\nALIGNED8 static Texture gd_texture_hand_open[] = {\n#include \"textures/intro_raw/hand_open.rgba16.inc.c\"\n};\n\nUNUSED static Gfx gd_texture2_dummy_aligner1[] = {\n    gsSPEndDisplayList()\n};\n\nALIGNED8 static Texture gd_texture_hand_closed[] = {\n#include \"textures/intro_raw/hand_closed.rgba16.inc.c\"\n};\n\nALIGNED8 static Texture gd_texture_red_star_0[] = {\n#include \"textures/intro_raw/red_star_0.rgba16.inc.c\"\n};\n\nALIGNED8 static Texture gd_texture_red_star_1[] = {\n#include \"textures/intro_raw/red_star_1.rgba16.inc.c\"\n};\n\nALIGNED8 static Texture gd_texture_red_star_2[] = {\n#include \"textures/intro_raw/red_star_2.rgba16.inc.c\"\n};\n\nALIGNED8 static Texture gd_texture_red_star_3[] = {\n#include \"textures/intro_raw/red_star_3.rgba16.inc.c\"\n};\n\nALIGNED8 static Texture gd_texture_red_star_4[] = {\n#include \"textures/intro_raw/red_star_4.rgba16.inc.c\"\n};\n\nALIGNED8 static Texture gd_texture_red_star_5[] = {\n#include \"textures/intro_raw/red_star_5.rgba16.inc.c\"\n};\n\nALIGNED8 static Texture gd_texture_red_star_6[] = {\n#include \"textures/intro_raw/red_star_6.rgba16.inc.c\"\n};\n\nALIGNED8 static Texture gd_texture_red_star_7[] = {\n#include \"textures/intro_raw/red_star_7.rgba16.inc.c\"\n};\n\nALIGNED8 static Texture gd_texture_white_star_0[] = {\n#include \"textures/intro_raw/white_star_0.rgba16.inc.c\"\n};\n\nALIGNED8 static Texture gd_texture_white_star_1[] = {\n#include \"textures/intro_raw/white_star_1.rgba16.inc.c\"\n};\n\nALIGNED8 static Texture gd_texture_white_star_2[] = {\n#include \"textures/intro_raw/white_star_2.rgba16.inc.c\"\n};\n\nALIGNED8 static Texture gd_texture_white_star_3[] = {\n#include \"textures/intro_raw/white_star_3.rgba16.inc.c\"\n};\n\nALIGNED8 static Texture gd_texture_white_star_4[] = {\n#include \"textures/intro_raw/white_star_4.rgba16.inc.c\"\n};\n\nALIGNED8 static Texture gd_texture_white_star_5[] = {\n#include \"textures/intro_raw/white_star_5.rgba16.inc.c\"\n};\n\nALIGNED8 static Texture gd_texture_white_star_6[] = {\n#include \"textures/intro_raw/white_star_6.rgba16.inc.c\"\n};\n\nALIGNED8 static Texture gd_texture_white_star_7[] = {\n#include \"textures/intro_raw/white_star_7.rgba16.inc.c\"\n};\n\nstatic Vtx_t gd_vertex_star[] = {\n    {{-64,   0, 0}, 0, {  0, 992}, {0x00, 0x00, 0x7F}},\n    {{ 64,   0, 0}, 0, {992, 992}, {0x00, 0x00, 0x7F}},\n    {{ 64, 128, 0}, 0, {992,   0}, {0x00, 0x00, 0x7F}},\n    {{-64, 128, 0}, 0, {  0,   0}, {0x00, 0x00, 0x7F}},\n};\n\n//! no references to these vertices\nUNUSED static Vtx_t gd_unused_vertex[] = {\n    {{16384, 0,     0}, 0, {0, 16384}, {0x00, 0x00, 0x00}},\n    {{    0, 0, 16384}, 0, {0,     0}, {0x00, 0x00, 0x40}},\n    {{    0, 0,     0}, 0, {0,     0}, {0x00, 0x00, 0x00}},\n    {{    0, 0,     0}, 0, {0,     0}, {0x00, 0x00, 0x00}},\n};\n\nstatic Gfx gd_dl_star_common[] = {\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsSPClearGeometryMode(G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR),\n    gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_NOOP2),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPVertex(gd_vertex_star, 4, 0),\n    gsSP2Triangles( 0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_INTER, G_RM_NOOP2),\n    gsSPEndDisplayList(),\n};\n\nstatic Gfx gd_dl_red_star_0[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_red_star_0),\n    gsSPBranchList(gd_dl_star_common),\n};\n\nstatic Gfx gd_dl_red_star_1[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_red_star_1),\n    gsSPBranchList(gd_dl_star_common),\n};\n\nstatic Gfx gd_dl_red_star_2[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_red_star_2),\n    gsSPBranchList(gd_dl_star_common),\n};\n\nstatic Gfx gd_dl_red_star_3[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_red_star_3),\n    gsSPBranchList(gd_dl_star_common),\n};\n\nstatic Gfx gd_dl_red_star_4[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_red_star_4),\n    gsSPBranchList(gd_dl_star_common),\n};\n\nstatic Gfx gd_dl_red_star_5[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_red_star_5),\n    gsSPBranchList(gd_dl_star_common),\n};\n\nstatic Gfx gd_dl_red_star_6[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_red_star_6),\n    gsSPBranchList(gd_dl_star_common),\n};\n\nstatic Gfx gd_dl_red_star_7[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_red_star_7),\n    gsSPBranchList(gd_dl_star_common),\n};\n\nstatic Gfx gd_dl_silver_star_0[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_white_star_0),\n    gsSPBranchList(gd_dl_star_common),\n};\n\nstatic Gfx gd_dl_silver_star_1[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_white_star_1),\n    gsSPBranchList(gd_dl_star_common),\n};\n\nstatic Gfx gd_dl_silver_star_2[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_white_star_2),\n    gsSPBranchList(gd_dl_star_common),\n};\n\nstatic Gfx gd_dl_silver_star_3[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_white_star_3),\n    gsSPBranchList(gd_dl_star_common),\n};\n\nstatic Gfx gd_dl_silver_star_4[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_white_star_4),\n    gsSPBranchList(gd_dl_star_common),\n};\n\nstatic Gfx gd_dl_silver_star_5[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_white_star_5),\n    gsSPBranchList(gd_dl_star_common),\n};\n\nstatic Gfx gd_dl_silver_star_6[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_white_star_6),\n    gsSPBranchList(gd_dl_star_common),\n};\n\nstatic Gfx gd_dl_silver_star_7[] = {\n    gsDPPipeSync(),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_white_star_7),\n    gsSPBranchList(gd_dl_star_common),\n};\n\nstatic Gfx *gd_red_star_dl_array[] = {\n    gd_dl_red_star_0,\n    gd_dl_red_star_0,\n    gd_dl_red_star_1,\n    gd_dl_red_star_1,\n    gd_dl_red_star_2,\n    gd_dl_red_star_2,\n    gd_dl_red_star_3,\n    gd_dl_red_star_3,\n    gd_dl_red_star_4,\n    gd_dl_red_star_4,\n    gd_dl_red_star_5,\n    gd_dl_red_star_5,\n    gd_dl_red_star_6,\n    gd_dl_red_star_6,\n    gd_dl_red_star_7,\n    gd_dl_red_star_7,\n};\n\nstatic Gfx *gd_silver_star_dl_array[] = {\n    gd_dl_silver_star_0,\n    gd_dl_silver_star_0,\n    gd_dl_silver_star_1,\n    gd_dl_silver_star_1,\n    gd_dl_silver_star_2,\n    gd_dl_silver_star_2,\n    gd_dl_silver_star_3,\n    gd_dl_silver_star_3,\n    gd_dl_silver_star_4,\n    gd_dl_silver_star_4,\n    gd_dl_silver_star_5,\n    gd_dl_silver_star_5,\n    gd_dl_silver_star_6,\n    gd_dl_silver_star_6,\n    gd_dl_silver_star_7,\n    gd_dl_silver_star_7,\n};\n\nALIGNED8 static Texture gd_texture_sparkle_0[] = {\n#include \"textures/intro_raw/sparkle_0.rgba16.inc.c\"\n};\n\nALIGNED8 static Texture gd_texture_sparkle_1[] = {\n#include \"textures/intro_raw/sparkle_1.rgba16.inc.c\"\n};\n\nALIGNED8 static Texture gd_texture_sparkle_2[] = {\n#include \"textures/intro_raw/sparkle_2.rgba16.inc.c\"\n};\n\nALIGNED8 static Texture gd_texture_sparkle_3[] = {\n#include \"textures/intro_raw/sparkle_3.rgba16.inc.c\"\n};\n\nALIGNED8 static Texture gd_texture_sparkle_4[] = {\n#include \"textures/intro_raw/sparkle_4.rgba16.inc.c\"\n};\n\n//! No reference to this texture. Two DL's uses the same previous texture\n//  instead of using this texture.\nUNUSED ALIGNED8 static Texture gd_texture_sparkle_5[] = {\n#include \"textures/intro_raw/sparkle_5.rgba16.inc.c\"\n};\n\nstatic Vtx_t gd_vertex_sparkle[] = {\n    {{   -32,      0,      0}, 0, {      0,   1984}, {  0x00, 0x00, 0x7F, 0x00}},\n    {{    32,      0,      0}, 0, {   1984,   1984}, {  0x00, 0x00, 0x7F, 0x00}},\n    {{    32,     64,      0}, 0, {   1984,      0}, {  0x00, 0x00, 0x7F, 0x00}},\n    {{   -32,     64,      0}, 0, {      0,      0}, {  0x00, 0x00, 0x7F, 0x00}},\n};\n\nstatic Gfx gd_dl_sparkle[] = {\n    gsDPSetCombineMode(G_CC_MODULATERGBA_PRIM, G_CC_MODULATERGBA_PRIM),\n    gsSPClearGeometryMode(G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR),\n    gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_NOOP2),\n    gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD,\n                G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPLoadSync(),\n    gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),\n    gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD,\n                G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),\n    gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),\n    gsSPVertex(gd_vertex_sparkle, 4, 0),\n    gsSP2Triangles(0,  1,  2, 0x0,  0,  2,  3, 0x0),\n    gsSPTexture(0x0001, 0x0001, 0, G_TX_RENDERTILE, G_OFF),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPSetRenderMode(G_RM_AA_ZB_OPA_INTER, G_RM_NOOP2),\n    gsSPEndDisplayList(),\n};\n\nstatic Gfx gd_dl_sparkle_red_color[] = {\n    gsDPSetPrimColor(0, 0, 255, 0, 0, 255),\n    gsSPEndDisplayList(),\n};\n\nstatic Gfx gd_dl_sparkle_white_color[] = {\n    gsDPSetPrimColor(0, 0, 255, 255, 255, 255),\n    gsSPEndDisplayList(),\n};\n\nstatic Gfx gd_dl_red_sparkle_0[] = {\n    gsDPPipeSync(),\n    gsSPDisplayList(gd_dl_sparkle_red_color),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_sparkle_0),\n    gsSPBranchList(gd_dl_sparkle),\n};\n\nstatic Gfx gd_dl_red_sparkle_1[] = {\n    gsDPPipeSync(),\n    gsSPDisplayList(gd_dl_sparkle_red_color),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_sparkle_1),\n    gsSPBranchList(gd_dl_sparkle),\n};\n\nstatic Gfx gd_dl_red_sparkle_2[] = {\n    gsDPPipeSync(),\n    gsSPDisplayList(gd_dl_sparkle_red_color),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_sparkle_2),\n    gsSPBranchList(gd_dl_sparkle),\n};\n\nstatic Gfx gd_dl_red_sparkle_3[] = {\n    gsDPPipeSync(),\n    gsSPDisplayList(gd_dl_sparkle_red_color),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_sparkle_3),\n    gsSPBranchList(gd_dl_sparkle),\n};\n\nstatic Gfx gd_dl_red_sparkle_4[] = {\n    gsDPPipeSync(),\n    gsSPDisplayList(gd_dl_sparkle_red_color),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_sparkle_4),\n    gsSPBranchList(gd_dl_sparkle),\n};\n\nstatic Gfx gd_dl_red_sparkle_4_dup[] ={\n    gsDPPipeSync(),\n    gsSPDisplayList(gd_dl_sparkle_red_color),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_sparkle_4), // 4 again, correct texture would be 5\n    gsSPBranchList(gd_dl_sparkle),\n};\n\nstatic Gfx gd_dl_silver_sparkle_0[] = {\n    gsDPPipeSync(),\n    gsSPDisplayList(gd_dl_sparkle_white_color),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_sparkle_0),\n    gsSPBranchList(gd_dl_sparkle),\n};\n\nstatic Gfx gd_dl_silver_sparkle_1[] = {\n    gsDPPipeSync(),\n    gsSPDisplayList(gd_dl_sparkle_white_color),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_sparkle_1),\n    gsSPBranchList(gd_dl_sparkle),\n};\n\nstatic Gfx gd_dl_silver_sparkle_2[] = {\n    gsDPPipeSync(),\n    gsSPDisplayList(gd_dl_sparkle_white_color),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_sparkle_2),\n    gsSPBranchList(gd_dl_sparkle),\n};\n\nstatic Gfx gd_dl_silver_sparkle_3[] = {\n    gsDPPipeSync(),\n    gsSPDisplayList(gd_dl_sparkle_white_color),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_sparkle_3),\n    gsSPBranchList(gd_dl_sparkle),\n};\n\nstatic Gfx gd_dl_silver_sparkle_4[] = {\n    gsDPPipeSync(),\n    gsSPDisplayList(gd_dl_sparkle_white_color),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_sparkle_4),\n    gsSPBranchList(gd_dl_sparkle),\n};\n\nstatic Gfx gd_dl_silver_sparkle_4_dup[] = {\n    gsDPPipeSync(),\n    gsSPDisplayList(gd_dl_sparkle_white_color),\n    gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_sparkle_4), // 4 again, correct texture would be 5\n    gsSPBranchList(gd_dl_sparkle),\n};\n\nstatic Gfx *gd_red_sparkle_dl_array[] = {\n    gd_dl_red_sparkle_4,\n    gd_dl_red_sparkle_4,\n    gd_dl_red_sparkle_3,\n    gd_dl_red_sparkle_3,\n    gd_dl_red_sparkle_2,\n    gd_dl_red_sparkle_2,\n    gd_dl_red_sparkle_1,\n    gd_dl_red_sparkle_1,\n    gd_dl_red_sparkle_0,\n    gd_dl_red_sparkle_0,\n    gd_dl_red_sparkle_4_dup,\n    gd_dl_red_sparkle_4_dup,\n};\n\nstatic Gfx *gd_silver_sparkle_dl_array[] = {\n    gd_dl_silver_sparkle_4,\n    gd_dl_silver_sparkle_4,\n    gd_dl_silver_sparkle_3,\n    gd_dl_silver_sparkle_3,\n    gd_dl_silver_sparkle_2,\n    gd_dl_silver_sparkle_2,\n    gd_dl_silver_sparkle_1,\n    gd_dl_silver_sparkle_1,\n    gd_dl_silver_sparkle_0,\n    gd_dl_silver_sparkle_0,\n    gd_dl_silver_sparkle_4_dup,\n    gd_dl_silver_sparkle_4_dup,\n};\n\nUNUSED static Gfx gd_texture3_dummy_aligner1[] = {\n    gsSPEndDisplayList(),\n};\n\nALIGNED8 static Texture gd_texture_mario_face_shine[] = {\n#include \"textures/intro_raw/mario_face_shine.ia8.inc.c\"\n};\n\nstatic Gfx gd_dl_mario_face_shine[] = {\n    gsSPSetGeometryMode(G_TEXTURE_GEN),\n    gsSPTexture(0x07C0, 0x07C0, 0, G_TX_RENDERTILE, G_ON),\n    gsDPSetTexturePersp(G_TP_PERSP),\n    gsDPSetTextureFilter(G_TF_BILERP),\n    gsDPSetCombineMode(G_CC_HILITERGBA, G_CC_HILITERGBA),\n    gsDPLoadTextureBlock(gd_texture_mario_face_shine, G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, 0,\n                        G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 5, 5, G_TX_NOLOD, G_TX_NOLOD),\n    gsDPPipeSync(),\n    gsSPEndDisplayList(),\n};\n\nstatic Gfx gd_dl_rsp_init[] = {\n    gsSPClearGeometryMode(0xFFFFFFFF),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH | G_SHADE),\n    gsSPEndDisplayList(),\n};\n\nstatic Gfx gd_dl_rdp_init[] = {\n    gsDPPipeSync(),\n    gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsDPSetTextureLOD(G_TL_TILE),\n    gsDPSetTextureLUT(G_TT_NONE),\n    gsDPSetTextureDetail(G_TD_CLAMP),\n    gsDPSetTexturePersp(G_TP_PERSP),\n    gsDPSetTextureFilter(G_TF_BILERP),\n    gsDPSetTextureConvert(G_TC_FILT),\n    gsDPSetCombineKey(G_CK_NONE),\n    gsDPSetAlphaCompare(G_AC_NONE),\n    gsDPSetRenderMode(G_RM_OPA_SURF, G_RM_OPA_SURF2),\n    gsDPNoOp(),\n    gsDPSetColorDither(G_CD_MAGICSQ),\n    gsDPPipeSync(),\n    gsSPEndDisplayList(),\n};\n\nUNUSED static u32 gd_unused_pad1 = 0;\n\nfloat sGdPerspTimer = 1.0;\n\nUNUSED static u32 gd_unused_pad2 = 0;\n\nUNUSED static Gfx gd_texture4_dummy_aligner1[] = {\n    gsDPPipeSync(),\n    gsSPEndDisplayList(),\n};\n\nstatic Vtx_t gd_unused_mesh_vertex_group1[] = {\n    {{-8,  8,  0}, 0, {  0,  0}, {  0x00, 0x00, 0x00, 0xFF}},\n    {{ 8, -2,  0}, 0, {  0,  0}, {  0x00, 0x00, 0x00, 0xFF}},\n    {{ 2, -8,  0}, 0, {  0,  0}, {  0x00, 0x00, 0x00, 0xFF}},\n};\n\nstatic Vtx_t gd_unused_mesh_vertex_group2[] = {\n    {{-6,  6,  0}, 0, {  0,  0}, {  0xFF, 0xFF, 0xFF, 0xFF}},\n    {{ 7, -3,  0}, 0, {  0,  0}, {  0xFF, 0x00, 0x00, 0xFF}},\n    {{ 3, -7,  0}, 0, {  0,  0}, {  0xFF, 0x00, 0x00, 0xFF}},\n};\n\nUNUSED static Gfx gd_dl_unused_mesh[] = {\n    gsDPPipeSync(),\n    gsDPSetRenderMode(G_RM_OPA_SURF, G_RM_OPA_SURF2),\n    gsSPClearGeometryMode(0xFFFFFFFF),\n    gsSPSetGeometryMode(G_SHADING_SMOOTH | G_SHADE),\n    gsDPPipeSync(),\n    gsSPVertex(gd_unused_mesh_vertex_group1, 3, 0),\n    gsSP1Triangle(0,  1,  2, 0x0),\n    gsSPVertex(gd_unused_mesh_vertex_group2, 3, 0),\n    gsSP1Triangle(0,  1,  2, 0x0),\n    gsSPEndDisplayList(),\n};\n\nstatic Gfx gd_dl_sprite_start_tex_block[] = {\n    gsDPPipeSync(),\n    gsDPSetCycleType(G_CYC_1CYCLE),\n    gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),\n    gsDPSetAlphaCompare(G_AC_THRESHOLD),\n    gsDPSetBlendColor(0, 0, 0, 1),\n    gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_NOOP2),\n    gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),\n    gsDPSetTextureFilter(G_TF_BILERP),\n    gsDPSetTexturePersp(G_TP_NONE),\n    gsSPEndDisplayList(),\n};\n\n// linker (ROM addresses)\nextern u8 _gd_dynlistsSegmentRomStart[];\nextern u8 _gd_dynlistsSegmentRomEnd[];\n\n// forward declarations\nu32 new_gddl_from(Gfx *, s32);\nvoid gd_setup_cursor(struct ObjGroup *);\nvoid parse_p1_controller(void);\nvoid update_cursor(void);\nvoid update_view_and_dl(struct ObjView *);\nstatic void update_render_mode(void);\nvoid gddl_is_loading_shine_dl(s32);\nvoid func_801A3370(f32, f32, f32);\nvoid gd_put_sprite(u16 *, s32, s32, s32, s32);\nvoid reset_cur_dl_indices(void);\n\n// TODO: make a gddl_num_t?\n\nu32 get_alloc_mem_amt(void) {\n    return sAllocMemory;\n}\n\n/**\n * Returns the current time\n */\ns32 gd_get_ostime(void) {\n    return osGetTime();\n}\n\nf32 get_time_scale(void) {\n    return sTimeScaleFactor;\n}\n\nvoid dump_disp_list(void) {\n    gd_printf(\"%d\\n\", sCurrentGdDl->id);\n    gd_printf(\"Vtx=%d/%d, Mtx=%d/%d, Light=%d/%d, Gfx=%d/%d\\n\", sCurrentGdDl->curVtxIdx,\n              sCurrentGdDl->totalVtx, sCurrentGdDl->curMtxIdx, sCurrentGdDl->totalMtx,\n              sCurrentGdDl->curLightIdx, sCurrentGdDl->totalLights, sCurrentGdDl->curGfxIdx,\n              sCurrentGdDl->totalGfx);\n}\n\n/**\n * Increments the current display list's Gfx index list and returns a pointer to the next Gfx element\n */\nstatic Gfx *next_gfx(void) {\n    if (sCurrentGdDl->curGfxIdx >= sCurrentGdDl->totalGfx) {\n        dump_disp_list();\n        fatal_printf(\"Gfx list overflow\");\n    }\n\n    return &sCurrentGdDl->gfx[sCurrentGdDl->curGfxIdx++];\n}\n\n/**\n * Increments the current display list's Light index list and returns a pointer to the next Light element\n */\nstatic Lights4 *next_light(void) {\n    if (sCurrentGdDl->curLightIdx >= sCurrentGdDl->totalLights) {\n        dump_disp_list();\n        fatal_printf(\"Light list overflow\");\n    }\n\n    return &sCurrentGdDl->light[sCurrentGdDl->curLightIdx++];\n}\n\n/**\n * Increments the current display list's matrix index list and returns a pointer to the next matrix element\n */\nstatic Mtx *next_mtx(void) {\n    if (sCurrentGdDl->curMtxIdx >= sCurrentGdDl->totalMtx) {\n        dump_disp_list();\n        fatal_printf(\"Mtx list overflow\");\n    }\n\n    return &sCurrentGdDl->mtx[sCurrentGdDl->curMtxIdx++];\n}\n\n/**\n * Increments the current display list's vertex index list and returns a pointer to the next vertex element\n */\nstatic Vtx *next_vtx(void) {\n    if (sCurrentGdDl->curVtxIdx >= sCurrentGdDl->totalVtx) {\n        dump_disp_list();\n        fatal_printf(\"Vtx list overflow\");\n    }\n\n    return &sCurrentGdDl->vtx[sCurrentGdDl->curVtxIdx++];\n}\n\n/**\n * Increments the current display list's viewport list and returns a pointer to the next viewport element\n */\nstatic Vp *next_vp(void) {\n    if (sCurrentGdDl->curVpIdx >= sCurrentGdDl->totalVp) {\n        dump_disp_list();\n        fatal_printf(\"Vp list overflow\");\n    }\n\n    return &sCurrentGdDl->vp[sCurrentGdDl->curVpIdx++];\n}\n\n/* 249AAC -> 249AEC */\nf64 gd_sin_d(f64 x) {\n    return sinf(x);\n}\n\n/* 249AEC -> 249B2C */\nf64 gd_cos_d(f64 x) {\n    return cosf(x);\n}\n\n/* 249B2C -> 249BA4 */\nf64 gd_sqrt_d(f64 x) {\n    if (x < 1.0e-7) {\n        return 0.0;\n    }\n    return sqrtf(x);\n}\n\n/**\n * Unused\n */\nf64 stub_renderer_1(UNUSED f64 x) {\n    return 0.0;\n}\n\n/* 249BCC -> 24A19C */\nvoid gd_printf(const char *format, ...) {\n    s32 i;\n    UNUSED u8 filler1[4];\n    char c;\n    char f;\n    UNUSED u8 filler2[4];\n    char buf[0x100];\n    char *csr = buf;\n    char spec[8];    // specifier string\n    UNUSED u8 filler3[4];\n    union PrintVal val;\n    va_list args;\n\n    *csr = '\\0';\n    va_start(args, format);\n    while ((c = *format++)) {\n        switch (c) {\n            case '%':\n                f = *format++;\n                i = 0;\n                // handle f32 precision formatter (N.Mf)\n                if (f >= '0' && f <= '9') {\n                    for (i = 0; i < 3; i++) {\n                        if ((f >= '0' && f <= '9') || f == '.') {\n                            spec[i] = f;\n                        } else {\n                            break;\n                        }\n\n                        f = *format++;\n                    }\n                }\n\n                spec[i] = f;\n                i++;\n                spec[i] = '\\0';\n\n                switch ((c = spec[0])) {\n                    case 'd':\n                        val.i = va_arg(args, s32);\n                        csr = sprint_val_withspecifiers(csr, val, spec);\n                        break;\n                    case 'x':\n                        val.i = va_arg(args, u32);\n                        csr = sprint_val_withspecifiers(csr, val, spec);\n                        break;\n                    case '%':\n                        *csr = '%';\n                        csr++;\n                        *csr = '\\0';\n                        break;\n                        break; // needed to match\n                    case 'f':\n                        val.f = (f32) va_arg(args, double);\n                        csr = sprint_val_withspecifiers(csr, val, spec);\n                        break;\n                    case 's':\n                        csr = gd_strcat(csr, va_arg(args, char *));\n                        break;\n                    case 'c':\n                        //! @bug formatter 'c' uses `s32` for va_arg instead of `char`\n                        *csr = va_arg(args, s32);\n                        csr++;\n                        *csr = '\\0';\n                        break;\n                    default:\n                        if (spec[3] == 'f') {\n                            val.f = (f32) va_arg(args, double);\n                            csr = sprint_val_withspecifiers(csr, val, spec);\n                        }\n                        break;\n                }\n                break;\n            case '\\\\':\n                *csr = '\\\\';\n                csr++;\n                *csr = '\\0';\n                break;\n            case '\\n':\n                *csr = '\\n';\n                csr++;\n                *csr = '\\0';\n                break;\n            default:\n                *csr = c;\n                csr++;\n                *csr = '\\0';\n                break;\n        }\n    }\n    va_end(args);\n\n    *csr = '\\0';\n    if (csr - buf >= ARRAY_COUNT(buf) - 1) {\n        fatal_printf(\"printf too long\");\n    }\n}\n\n/* 24A19C -> 24A1D4 */\nvoid gd_exit(UNUSED s32 code) {\n    gd_printf(\"exit\\n\");\n    while (TRUE) {\n    }\n}\n\n/* 24A1D4 -> 24A220; orig name: func_8019BA04 */\nvoid gd_free(void *ptr) {\n    sAllocMemory -= gd_free_mem(ptr);\n}\n\n/* 24A220 -> 24A318 */\nvoid *gd_allocblock(u32 size) {\n    void *block; // 1c\n\n    size = ALIGN(size, 8);\n    if ((sMemBlockPoolUsed + size) > sMemBlockPoolSize) {\n        gd_printf(\"gd_allocblock(): Failed request: %dk (%d bytes)\\n\", size / 1024, size);\n        gd_printf(\"gd_allocblock(): Heap usage: %dk (%d bytes) \\n\", sMemBlockPoolUsed / 1024,\n                  sMemBlockPoolUsed);\n        print_all_memtrackers();\n        mem_stats();\n        fatal_printf(\"exit\");\n    }\n\n    block = sMemBlockPoolBase + sMemBlockPoolUsed;\n    sMemBlockPoolUsed += size;\n    return block;\n}\n\n/* 24A318 -> 24A3E8 */\nvoid *gd_malloc(u32 size, u8 perm) {\n    void *ptr; // 1c\n    size = ALIGN(size, 8);\n    ptr = gd_request_mem(size, perm);\n\n    if (ptr == NULL) {\n        gd_printf(\"gd_malloc(): Failed request: %dk (%d bytes)\\n\", size / 1024, size);\n        gd_printf(\"gd_malloc(): Heap usage: %dk (%d bytes) \\n\", sAllocMemory / 1024, sAllocMemory);\n        print_all_memtrackers();\n        mem_stats();\n        return NULL;\n    }\n\n    sAllocMemory += size;\n\n    return ptr;\n}\n\n/* 24A3E8 -> 24A420; orig name: func_8019BC18 */\nvoid *gd_malloc_perm(u32 size) {\n    return gd_malloc(size, PERM_G_MEM_BLOCK);\n}\n\n/* 24A420 -> 24A458; orig name: func_8019BC50 */\nvoid *gd_malloc_temp(u32 size) {\n    return gd_malloc(size, TEMP_G_MEM_BLOCK);\n}\n\n/* 24A458 -> 24A4A4 */\nvoid *Unknown8019BC88(u32 size, u32 count) {\n    return gd_malloc_perm(size * count);\n}\n\n/* 24A4A4 -> 24A4DC */\nvoid *Unknown8019BCD4(u32 size) {\n    return gd_malloc_perm(size);\n}\n\n/* 24A4DC -> 24A598 */\nvoid draw_indexed_dl(s32 dlNum, s32 gfxIdx) {\n    Gfx *dl;\n\n    if (gfxIdx != 0) {\n        dl = sGdDLArray[dlNum]->dlptr[gfxIdx - 1];  // multiple display lists (determined by frame)\n    } else {\n        dl = sGdDLArray[dlNum]->gfx;  // only one display list\n    }\n    gSPDisplayList(next_gfx(), GD_VIRTUAL_TO_PHYSICAL(dl));\n}\n\n/* 24A598 -> 24A610; orig name: func_8019BDC8 */\nvoid branch_cur_dl_to_num(s32 dlNum) {\n    Gfx *dl;\n    UNUSED u8 filler[8];\n\n    dl = sGdDLArray[dlNum]->gfx;\n    gSPDisplayList(next_gfx(), GD_VIRTUAL_TO_PHYSICAL(dl));\n}\n\n/**\n * Unused (not called)\n */\nGfx *get_dl_gfx(s32 num) {\n    return sGdDLArray[num]->gfx;\n}\n\n/**\n * Creates `ObjShape`s for the stars and sparkles\n */\nvoid setup_stars(void) {\n    gShapeRedStar = make_shape(0, \"redstar\");\n    gShapeRedStar->dlNums[0] = new_gddl_from(NULL, 0);\n    gShapeRedStar->dlNums[1] = gShapeRedStar->dlNums[0];\n    sGdDLArray[gShapeRedStar->dlNums[0]]->dlptr = gd_red_star_dl_array;\n    sGdDLArray[gShapeRedStar->dlNums[1]]->dlptr = gd_red_star_dl_array;\n\n    gShapeSilverStar = make_shape(0, \"silverstar\");\n    gShapeSilverStar->dlNums[0] = new_gddl_from(NULL, 0);\n    gShapeSilverStar->dlNums[1] = gShapeSilverStar->dlNums[0];\n    sGdDLArray[gShapeSilverStar->dlNums[0]]->dlptr = gd_silver_star_dl_array;\n    sGdDLArray[gShapeSilverStar->dlNums[1]]->dlptr = gd_silver_star_dl_array;\n\n    // make_shape names of the dl array they call are misnamed (swapped)\n    // \"sspark\" calls red sparkles and \"rspark\" calls silver sparkles\n    gShapeRedSpark = make_shape(0, \"sspark\");\n    gShapeRedSpark->dlNums[0] = new_gddl_from(NULL, 0);\n    gShapeRedSpark->dlNums[1] = gShapeRedSpark->dlNums[0];\n    sGdDLArray[gShapeRedSpark->dlNums[0]]->dlptr = gd_red_sparkle_dl_array;\n    sGdDLArray[gShapeRedSpark->dlNums[1]]->dlptr = gd_red_sparkle_dl_array;\n\n    gShapeSilverSpark = make_shape(0, \"rspark\");\n    gShapeSilverSpark->dlNums[0] = new_gddl_from(NULL, 0);\n    gShapeSilverSpark->dlNums[1] = gShapeSilverSpark->dlNums[0];\n    sGdDLArray[gShapeSilverSpark->dlNums[0]]->dlptr = gd_silver_sparkle_dl_array;\n    sGdDLArray[gShapeSilverSpark->dlNums[1]]->dlptr = gd_silver_sparkle_dl_array;\n}\n\n/* 24A8D0 -> 24AA40 */\nvoid setup_timers(void) {\n    start_timer(\"updateshaders\");\n    stop_timer(\"updateshaders\");\n    start_timer(\"childpos\");\n    stop_timer(\"childpos\");\n    start_timer(\"netupd\");\n    stop_timer(\"netupd\");\n    start_timer(\"drawshape2d\");\n    stop_timer(\"drawshape2d\");\n\n    start_timer(\"drawshape\");\n    start_timer(\"drawobj\");\n    start_timer(\"drawscene\");\n    start_timer(\"camsearch\");\n    start_timer(\"move_animators\");\n    start_timer(\"move_nets\");\n    stop_timer(\"move_animators\");\n    stop_timer(\"move_nets\");\n    stop_timer(\"drawshape\");\n    stop_timer(\"drawobj\");\n    stop_timer(\"drawscene\");\n    stop_timer(\"camsearch\");\n\n    start_timer(\"move_bones\");\n    stop_timer(\"move_bones\");\n    start_timer(\"move_skin\");\n    stop_timer(\"move_skin\");\n    start_timer(\"draw1\");\n    stop_timer(\"draw1\");\n    start_timer(\"dynamics\");\n    stop_timer(\"dynamics\");\n}\n\n/* 24AA40 -> 24AA58 */\nvoid Unknown8019C270(u8 *buf) {\n    gGdStreamBuffer = buf;\n}\n\n/* 24AA58 -> 24AAA8 */\nvoid Unknown8019C288(s32 stickX, s32 stickY) {\n    struct GdControl *ctrl = &gGdCtrl; // 4\n\n    ctrl->stickXf = (f32) stickX;\n    ctrl->stickYf = (f32)(stickY / 2);\n}\n\n/* 24AAA8 -> 24AAE0; orig name: func_8019C2D8 */\nvoid gd_add_to_heap(void *addr, u32 size) {\n    // TODO: is this `1` for permanence special?\n    gd_add_mem_to_heap(size, addr, 1);\n}\n\n/* 24AAE0 -> 24AB7C */\nvoid gdm_init(void *blockpool, u32 size) {\n    UNUSED u8 filler[4];\n\n    imin(\"gdm_init\");\n    // Align downwards?\n    size = (size - 8) & ~7;\n    // Align to next double word boundry?\n    blockpool = (void *) (((uintptr_t) blockpool + 8) & ~7);\n    sMemBlockPoolBase = blockpool;\n    sMemBlockPoolSize = size;\n    sMemBlockPoolUsed = 0;\n    sAllocMemory = 0;\n    init_mem_block_lists();\n    gd_reset_sfx();\n    imout();\n}\n\n/**\n * Initializes the Mario head demo\n */\nvoid gdm_setup(void) {\n    UNUSED u8 filler[4];\n\n    imin(\"gdm_setup\");\n    sYoshiSceneGrp = NULL;\n    sMarioSceneGrp = NULL;\n    sUpdateYoshiScene = FALSE;\n    sUpdateMarioScene = FALSE;\n    sCarGdDlNum = 0;\n    osViSetSpecialFeatures(OS_VI_GAMMA_OFF);\n    osCreateMesgQueue(&sGdDMAQueue, sGdMesgBuf, ARRAY_COUNT(sGdMesgBuf));\n    gd_init();\n    load_shapes2();\n    reset_cur_dl_indices();\n    setup_stars();\n    imout();\n}\n\n/* 24AC18 -> 24AC2C */\nvoid stub_renderer_2(UNUSED u32 a0) {\n}\n\n/* 24AC2C -> 24AC80; not called; orig name: Unknown8019C45C */\nvoid print_gdm_stats(void) {\n    stop_memtracker(\"total\");\n    gd_printf(\"\\ngdm stats:\\n\");\n    print_all_memtrackers();\n    mem_stats();\n    start_memtracker(\"total\");\n}\n\n/* 24AC80 -> 24AD14; orig name: func_8019C4B0 */\nstruct ObjView *make_view_withgrp(char *name, struct ObjGroup *grp) {\n    struct ObjView *view = make_view(name, (VIEW_DRAW | VIEW_ALLOC_ZBUF | VIEW_MOVEMENT), 1, 0, 0, 320, 240, grp);\n    UNUSED struct ObjGroup *viewgrp = make_group(2, grp, view);\n\n    view->lights = gGdLightGroup;\n    return view;\n}\n\n/* 24AD14 -> 24AEB8 */\nvoid gdm_maketestdl(s32 id) {\n    UNUSED u8 filler[12];\n\n    imin(\"gdm_maketestdl\");\n    switch (id) {\n        case 0:\n            sYoshiSceneView = make_view_withgrp(\"yoshi_scene\", sYoshiSceneGrp);\n            break;\n        case 1:\n            reset_nets_and_gadgets(sYoshiSceneGrp);\n            break;\n        case 2: // normal Mario head\n            if (sMarioSceneGrp == NULL) {\n                load_mario_head(animate_mario_head_normal);\n                sMarioSceneGrp = gMarioFaceGrp; // gMarioFaceGrp set by load_mario_head\n                gd_setup_cursor(NULL);\n            }\n            sMSceneView = make_view_withgrp(\"mscene\", sMarioSceneGrp);\n            break;\n        case 3: // game over Mario head\n            if (sMarioSceneGrp == NULL) {\n                load_mario_head(animate_mario_head_gameover);\n                sMarioSceneGrp = gMarioFaceGrp;\n                gd_setup_cursor(NULL);\n            }\n            sMSceneView = make_view_withgrp(\"mscene\", sMarioSceneGrp);\n            break;\n        case 4:\n            sCarSceneView = make_view_withgrp(\"car_scene\", sCarSceneGrp);\n            break;\n        case 5:\n            reset_nets_and_gadgets(sCarSceneGrp);\n            break;\n        default:\n            fatal_printf(\"gdm_maketestdl(): unknown dl\");\n    }\n    imout();\n}\n\n/* 24AEB8 -> 24AED0 */\nvoid set_time_scale(f32 factor) {\n    sTimeScaleFactor = factor;\n}\n\n/* 24AED0 -> 24AF04 */\nvoid Unknown8019C840(void) {\n    gd_printf(\"\\n\");\n    print_all_timers();\n}\n\n/**\n * Runs every frame at V-blank. Handles input and updates state.\n */\nvoid gd_vblank(void) {\n    gd_sfx_update();\n    if (sUpdateYoshiScene) {\n        apply_to_obj_types_in_group(OBJ_TYPE_NETS, (applyproc_t) convert_net_verts, sYoshiSceneGrp);\n    }\n    if (sUpdateMarioScene) {\n        apply_to_obj_types_in_group(OBJ_TYPE_NETS, (applyproc_t) convert_net_verts, sMarioSceneGrp);\n    }\n    sUpdateYoshiScene = FALSE;\n    sUpdateMarioScene = FALSE;\n    gGdFrameBufNum ^= 1;\n    reset_cur_dl_indices();\n    parse_p1_controller();\n    update_cursor();\n}\n\n/**\n * Copies the player1 controller data from p1cont to sGdContPads[0].\n */\nvoid gd_copy_p1_contpad(OSContPad *p1cont) {\n    u32 i;                                    // 24\n    u8 *src = (u8 *) p1cont;             // 20\n    u8 *dest = (u8 *) &sGdContPads[0]; // 1c\n\n    for (i = 0; i < sizeof(OSContPad); i++) {\n        dest[i] = src[i];\n    }\n\n    if (p1cont->button & Z_TRIG) {\n        print_all_timers();\n    }\n}\n\n/* 24B058 -> 24B088; orig name: gd_sfx_to_play */\ns32 gd_sfx_to_play(void) {\n    return gd_new_sfx_to_play();\n}\n\n/* 24B088 -> 24B418 */\nGfx *gdm_gettestdl(s32 id) {\n    struct GdObj *dobj;\n    struct GdDisplayList *gddl;\n    UNUSED u8 filler[8];\n    struct GdVec3f vec;\n\n    start_timer(\"dlgen\");\n    vec.x = vec.y = vec.z = 0.0f;\n    gddl = NULL;\n\n    switch (id) {\n        case 0:\n            if (sYoshiSceneView == NULL) {\n                fatal_printf(\"gdm_gettestdl(): DL number %d undefined\", id);\n            }\n            //! @bug Code treats `sYoshiSceneView` as group; not called in game though\n            apply_to_obj_types_in_group(OBJ_TYPE_VIEWS, (applyproc_t) update_view,\n                                        (struct ObjGroup *) sYoshiSceneView);\n            dobj = d_use_obj(\"yoshi_scene\");\n            gddl = sGdDLArray[((struct ObjView *) dobj)->gdDlNum];\n            sUpdateYoshiScene = TRUE;\n            break;\n        case 1:\n            if (sYoshiSceneGrp == NULL) {\n                fatal_printf(\"gdm_gettestdl(): DL number %d undefined\", id);\n            }\n            dobj = d_use_obj(\"yoshi_sh_l1\");\n            gddl = sGdDLArray[((struct ObjShape *) dobj)->dlNums[gGdFrameBufNum]];\n            sUpdateYoshiScene = TRUE;\n            break;\n        case GD_SCENE_REGULAR_MARIO:\n        case GD_SCENE_DIZZY_MARIO:\n            setup_timers();\n            update_view_and_dl(sMSceneView);\n            if (sHandView != NULL) {\n                update_view_and_dl(sHandView);\n            }\n            sCurrentGdDl = sMHeadMainDls[gGdFrameBufNum];\n            gSPEndDisplayList(next_gfx());\n            gddl = sCurrentGdDl;\n            sUpdateMarioScene = TRUE;\n            break;\n        case 4:\n            if (sCarSceneView == NULL) {\n                fatal_printf(\"gdm_gettestdl(): DL number %d undefined\", id);\n            }\n            //! @bug Code treats `sCarSceneView` as group; not called in game though\n            apply_to_obj_types_in_group(OBJ_TYPE_VIEWS, (applyproc_t) update_view,\n                                        (struct ObjGroup *) sCarSceneView);\n            dobj = d_use_obj(\"car_scene\");\n            gddl = sGdDLArray[((struct ObjView *) dobj)->gdDlNum];\n            sUpdateCarScene = TRUE;\n            break;\n        case 5:\n            sActiveView = sScreenView;\n            set_gd_mtx_parameters(G_MTX_MODELVIEW | G_MTX_LOAD | G_MTX_PUSH);\n            dobj = d_use_obj(\"testnet2\");\n            sCarGdDlNum = gd_startdisplist(8);\n\n            if (sCarGdDlNum == 0) {\n                fatal_printf(\"no memory for car DL\\n\");\n            }\n            apply_obj_draw_fn(dobj);\n            gd_enddlsplist_parent();\n            gddl = sGdDLArray[sCarGdDlNum];\n            sUpdateCarScene = TRUE;\n            break;\n        default:\n            fatal_printf(\"gdm_gettestdl(): %d out of range\", id);\n    }\n\n    if (gddl == NULL) {\n        fatal_printf(\"no display list\");\n    }\n    stop_timer(\"dlgen\");\n    return (void *) osVirtualToPhysical(gddl->gfx);\n}\n\n/* 24B418 -> 24B4CC; not called */\nvoid gdm_getpos(s32 id, struct GdVec3f *dst) {\n    struct GdObj *dobj; // 1c\n    switch (id) {\n        case 5:\n            set_gd_mtx_parameters(G_MTX_MODELVIEW | G_MTX_LOAD | G_MTX_PUSH);\n            dobj = d_use_obj(\"testnet2\");\n            dst->x = ((struct ObjNet *) dobj)->worldPos.x;\n            dst->y = ((struct ObjNet *) dobj)->worldPos.y;\n            dst->z = ((struct ObjNet *) dobj)->worldPos.z;\n            break;\n        default:\n            fatal_printf(\"gdm_getpos(): %d out of range\", id);\n    }\n    return;\n}\n\n/**\n * Clamps the coordinates so that they are within the active view\n */\nstatic void clamp_coords_to_active_view(f32 *x, f32 *y) {\n    struct ObjView *view = sActiveView;\n\n    if (*x < 0.0f) {\n        *x = 0.0f;\n    } else if (*x > view->lowerRight.x) {\n        *x = view->lowerRight.x;\n    }\n\n    if (*y < 0.0f) {\n        *y = 0.0f;\n    } else if (*y > view->lowerRight.y) {\n        *y = view->lowerRight.y;\n    }\n}\n\n/* 24B5A8 -> 24B5D4; orig name: func_8019CDD8 */\nvoid fatal_no_dl_mem(void) {\n    fatal_printf(\"Out of DL mem\\n\");\n}\n\n/* 24B5D4 -> 24B6AC */\nstruct GdDisplayList *alloc_displaylist(u32 id) {\n    struct GdDisplayList *gdDl;\n\n    gdDl = gd_malloc_perm(sizeof(struct GdDisplayList));\n    if (gdDl == NULL) {\n        fatal_no_dl_mem();\n    }\n\n    gdDl->number = sGdDlCount++;\n    if (sGdDlCount >= MAX_GD_DLS) {\n        fatal_printf(\"alloc_displaylist() too many display lists %d (MAX %d)\", sGdDlCount + 1,\n                     MAX_GD_DLS);\n    }\n    sGdDLArray[gdDl->number] = gdDl;\n    gdDl->id = id;\n    return gdDl;\n}\n\n/* 24B6AC -> 24B7A0; orig name: func_8019CEDC */\nvoid cpy_remaining_gddl(struct GdDisplayList *dst, struct GdDisplayList *src) {\n    dst->vtx = &DL_CURRENT_VTX(src);\n    dst->mtx = &DL_CURRENT_MTX(src);\n    dst->light = &DL_CURRENT_LIGHT(src);\n    dst->gfx = &DL_CURRENT_GFX(src);\n    dst->vp = &DL_CURRENT_VP(src);\n    dst->totalVtx = src->totalVtx - src->curVtxIdx;\n    dst->totalMtx = src->totalMtx - src->curMtxIdx;\n    dst->totalLights = src->totalLights - src->curLightIdx;\n    dst->totalGfx = src->totalGfx - src->curGfxIdx;\n    dst->totalVp = src->totalVp - src->curVpIdx;\n    dst->curVtxIdx = 0;\n    dst->curMtxIdx = 0;\n    dst->curLightIdx = 0;\n    dst->curGfxIdx = 0;\n    dst->curVpIdx = 0;\n}\n\n/* 24B7A0 -> 24B7F8; orig name: func_8019CFD0 */\nstruct GdDisplayList *create_child_gdl(s32 id, struct GdDisplayList *srcDl) {\n    struct GdDisplayList *newDl;\n\n    newDl = alloc_displaylist(id);\n    newDl->parent = srcDl;\n    cpy_remaining_gddl(newDl, srcDl);\n//! @bug No return statement, despite return value being used.\n//!      Goddard lucked out that `v0` return from alloc_displaylist()\n//!      is not overwriten, as that pointer is what should be returned\n#ifdef AVOID_UB\n    return newDl;\n#endif\n}\n\n/* 24B7F8 -> 24BA48; orig name: func_8019D028 */\nstruct GdDisplayList *new_gd_dl(s32 id, s32 gfxs, s32 verts, s32 mtxs, s32 lights, s32 vps) {\n    struct GdDisplayList *dl; // 24\n\n    dl = alloc_displaylist(id);\n    dl->parent = NULL;\n    if (verts == 0) {\n        verts = 1;\n    }\n    dl->curVtxIdx = 0;\n    dl->totalVtx = verts;\n    if ((dl->vtx = gd_malloc_perm(verts * sizeof(Vtx))) == NULL) {\n        fatal_no_dl_mem();\n    }\n\n    if (mtxs == 0) {\n        mtxs = 1;\n    }\n    dl->curMtxIdx = 0;\n    dl->totalMtx = mtxs;\n    if ((dl->mtx = gd_malloc_perm(mtxs * sizeof(Mtx))) == NULL) {\n        fatal_no_dl_mem();\n    }\n\n    if (lights == 0) {\n        lights = 1;\n    }\n    dl->curLightIdx = 0;\n    dl->totalLights = lights;\n    if ((dl->light = gd_malloc_perm(lights * sizeof(Lights4))) == NULL) {\n        fatal_no_dl_mem();\n    }\n\n    if (gfxs == 0) {\n        gfxs = 1;\n    }\n    dl->curGfxIdx = 0;\n    dl->totalGfx = gfxs;\n    if ((dl->gfx = gd_malloc_perm(gfxs * sizeof(Gfx))) == NULL) {\n        fatal_no_dl_mem();\n    }\n\n    if (vps == 0) {\n        vps = 1;\n    }\n    dl->curVpIdx = 0;\n    dl->totalVp = vps;\n    if ((dl->vp = gd_malloc_perm(vps * sizeof(Vp))) == NULL) {\n        fatal_no_dl_mem();\n    }\n\n    dl->dlptr = NULL;\n    return dl;\n}\n\n/* 24BA48 -> 24BABC; not called */\nvoid gd_rsp_init(void) {\n    gSPDisplayList(next_gfx(), osVirtualToPhysical(&gd_dl_rsp_init));\n    gDPPipeSync(next_gfx());\n}\n\n/* 24BABC -> 24BB30; not called */\nvoid gd_rdp_init(void) {\n    gSPDisplayList(next_gfx(), osVirtualToPhysical(&gd_dl_rdp_init));\n    gDPPipeSync(next_gfx());\n}\n\n/* 24BB30 -> 24BED8; orig name: func_8019D360 */\nvoid gd_draw_rect(f32 ulx, f32 uly, f32 lrx, f32 lry) {\n    clamp_coords_to_active_view(&ulx, &uly);\n    clamp_coords_to_active_view(&lrx, &lry);\n\n    if (lrx > ulx && lry > uly) {\n        gDPFillRectangle(next_gfx(), (u32)(sActiveView->upperLeft.x + ulx),\n                         (u32)(uly + sActiveView->upperLeft.y), (u32)(sActiveView->upperLeft.x + lrx),\n                         (u32)(lry + sActiveView->upperLeft.y));\n    }\n\n    gDPPipeSync(next_gfx());\n    gDPSetCycleType(next_gfx(), G_CYC_1CYCLE);\n    gDPSetRenderMode(next_gfx(), G_RM_AA_ZB_OPA_INTER, G_RM_NOOP2);\n}\n\n/* 24BED8 -> 24CAC8; orig name: func_8019D708 */\nvoid gd_draw_border_rect(f32 ulx, f32 uly, f32 lrx, f32 lry) {\n    clamp_coords_to_active_view(&ulx, &uly);\n    clamp_coords_to_active_view(&lrx, &lry);\n\n    if (lrx > ulx && lry > uly) {\n        gDPFillRectangle(\n            next_gfx(), (u32)(sActiveView->upperLeft.x + ulx), (u32)(uly + sActiveView->upperLeft.y),\n            (u32)(sActiveView->upperLeft.x + ulx + 5.0f), (u32)(lry + sActiveView->upperLeft.y));\n        gDPFillRectangle(next_gfx(), (u32)(sActiveView->upperLeft.x + lrx - 5.0f),\n                         (u32)(uly + sActiveView->upperLeft.y), (u32)(sActiveView->upperLeft.x + lrx),\n                         (u32)(lry + sActiveView->upperLeft.y));\n        gDPFillRectangle(next_gfx(), (u32)(sActiveView->upperLeft.x + ulx),\n                         (u32)(uly + sActiveView->upperLeft.y), (u32)(sActiveView->upperLeft.x + lrx),\n                         (u32)(uly + sActiveView->upperLeft.y + 5.0f));\n        gDPFillRectangle(next_gfx(), (u32)(sActiveView->upperLeft.x + ulx),\n                         (u32)(lry + sActiveView->upperLeft.y - 5.0f),\n                         (u32)(sActiveView->upperLeft.x + lrx), (u32)(lry + sActiveView->upperLeft.y));\n    }\n\n    gDPPipeSync(next_gfx());\n    gDPSetCycleType(next_gfx(), G_CYC_1CYCLE);\n    gDPSetRenderMode(next_gfx(), G_RM_AA_ZB_OPA_INTER, G_RM_NOOP2);\n}\n\n/* 24CAC8 -> 24CDB4; orig name: func_8019E2F8 */\nvoid gd_dl_set_fill(struct GdColour *colour) {\n    u8 r, g, b;\n\n    r = colour->r * 255.0f;\n    g = colour->g * 255.0f;\n    b = colour->b * 255.0f;\n\n    gDPPipeSync(next_gfx());\n    gDPSetCycleType(next_gfx(), G_CYC_FILL);\n    gDPSetRenderMode(next_gfx(), G_RM_OPA_SURF, G_RM_OPA_SURF2);\n    gDPSetFillColor(next_gfx(), GPACK_RGBA5551(r, g, b, 1) << 16 | GPACK_RGBA5551(r, g, b, 1));\n}\n\n/* 24CDB4 -> 24CE10; orig name: func_8019E5E4 */\nvoid gd_dl_set_z_buffer_area(void) {\n    gDPSetDepthImage(next_gfx(), GD_LOWER_24(sActiveView->parent->zbuf));\n}\n\n/* 24CE10 -> 24CF2C; orig name: func_8019E640 */\nvoid gd_set_color_fb(void) {\n    gDPSetColorImage(next_gfx(), G_IM_FMT_RGBA, G_IM_SIZ_16b, sActiveView->parent->lowerRight.x,\n                     GD_LOWER_24(sActiveView->parent->colourBufs[gGdFrameBufNum]));\n}\n\n/* 24CF2C -> 24CFCC; orig name: func_8019E75C */\nvoid reset_cur_dl_indices(void) {\n    sMHeadMainDls[gGdFrameBufNum]->curGfxIdx = 0;\n    sCurrentGdDl = sDynamicMainDls[gGdFrameBufNum];\n    sCurrentGdDl->curVtxIdx = 0;\n    sCurrentGdDl->curMtxIdx = 0;\n    sCurrentGdDl->curLightIdx = 0;\n    sCurrentGdDl->curGfxIdx = 0;\n    sCurrentGdDl->curVpIdx = 0;\n}\n\n/* 24CFCC -> 24D044; orig name: func_8019E7FC */\nvoid begin_gddl(s32 num) {\n    sCurrentGdDl = sGdDLArray[num];\n    sCurrentGdDl->curVtxIdx = 0;\n    sCurrentGdDl->curMtxIdx = 0;\n    sCurrentGdDl->curLightIdx = 0;\n    sCurrentGdDl->curGfxIdx = 0;\n    sCurrentGdDl->curVpIdx = 0;\n}\n\n/* 24D044 -> 24D064; orig name: func_8019E874 */\nvoid stash_current_gddl(void) {\n    sGdDlStash = sCurrentGdDl;\n}\n\n/* 24D064 -> 24D084; orig name: func_8019E894 */\nvoid pop_gddl_stash(void) {\n    sCurrentGdDl = sGdDlStash;\n}\n\n/* 24D084 -> 24D1D4 */\ns32 gd_startdisplist(s32 memarea) {\n    D_801BB018 = 0;\n    D_801BB01C = 1;\n\n    switch (memarea) {\n        case 7:  // Create new display list as a child of sStaticDl\n            sCurrentGdDl = create_child_gdl(0, sStaticDl);\n            break;\n        case 8:  // Use the active view's display list\n            if (sActiveView->id > 2) {\n                fatal_printf(\"gd_startdisplist(): Too many views to display\");\n            }\n\n            sCurrentGdDl = sViewDls[sActiveView->id][gGdFrameBufNum];\n            cpy_remaining_gddl(sCurrentGdDl, sCurrentGdDl->parent);\n            break;\n        default:\n            fatal_printf(\"gd_startdisplist(): Unknown memory area\");\n            break;\n    }\n    gDPPipeSync(next_gfx());\n\n    return sCurrentGdDl->number;\n}\n\n/* 24D1D4 -> 24D23C */\nvoid gd_enddlsplist(void) {\n    gDPPipeSync(next_gfx());\n    gSPEndDisplayList(next_gfx());\n}\n\n/* 24D23C -> 24D39C; orig name: func_8019EA6C */\ns32 gd_enddlsplist_parent(void) {\n    s32 curDlIdx = 0; // 24\n\n    gDPPipeSync(next_gfx());\n    gSPEndDisplayList(next_gfx());\n    if (sCurrentGdDl->parent != NULL) {\n        sCurrentGdDl->parent->curVtxIdx = (sCurrentGdDl->parent->curVtxIdx + sCurrentGdDl->curVtxIdx);\n        sCurrentGdDl->parent->curMtxIdx = (sCurrentGdDl->parent->curMtxIdx + sCurrentGdDl->curMtxIdx);\n        sCurrentGdDl->parent->curLightIdx =\n            (sCurrentGdDl->parent->curLightIdx + sCurrentGdDl->curLightIdx);\n        sCurrentGdDl->parent->curGfxIdx = (sCurrentGdDl->parent->curGfxIdx + sCurrentGdDl->curGfxIdx);\n        sCurrentGdDl->parent->curVpIdx = (sCurrentGdDl->parent->curVpIdx + sCurrentGdDl->curVpIdx);\n    }\n    curDlIdx = sCurrentGdDl->curGfxIdx;\n    return curDlIdx;\n}\n\n/* 24D39C -> 24D3D8 */\nvoid Unknown8019EBCC(s32 num, uintptr_t gfxptr) {\n    sGdDLArray[num]->gfx = (Gfx *) (GD_LOWER_24(gfxptr) + D_801BAF28);\n}\n\n/* 24D3D8 -> 24D458; orig name: func_8019EC08 */\nu32 new_gddl_from(Gfx *dl, UNUSED s32 arg1) {\n    struct GdDisplayList *gddl;\n\n    gddl = new_gd_dl(0, 0, 0, 0, 0, 0);\n    gddl->gfx = (Gfx *) (GD_LOWER_24((uintptr_t) dl) + D_801BAF28);\n    return gddl->number;\n}\n\n/* 24D458 -> 24D4C4 */\nu32 Unknown8019EC88(Gfx *dl, UNUSED s32 arg1) {\n    struct GdDisplayList *gddl;\n\n    gddl = new_gd_dl(0, 0, 0, 0, 0, 0);\n    gddl->gfx = dl;\n    return gddl->number;\n}\n\n/* 24D4C4 -> 24D63C; orig name: func_8019ECF4 */\nvoid mat4_to_mtx(Mat4f *src, Mtx *dst) {\n#ifndef GBI_FLOATS\n    s32 i; // 14\n    s32 j; // 10\n    s32 w1;\n    s32 w2;\n    s32 *mtxInt = (s32 *) dst->m[0]; // s32 part\n    s32 *mtxFrc = (s32 *) dst->m[2]; // frac part\n\n    for (i = 0; i < 4; i++) {\n        for (j = 0; j < 2; j++) {\n            w1 = (s32)((*src)[i][j * 2] * 65536.0f);\n            w2 = (s32)((*src)[i][j * 2 + 1] * 65536.0f);\n            *mtxInt = MTX_INTPART_PACK(w1, w2);\n            mtxInt++;\n            *mtxFrc = MTX_FRACPART_PACK(w1, w2);\n            mtxFrc++;\n        }\n    }\n#else\n    guMtxF2L(*src, dst);\n#endif\n}\n\n/**\n * Adds a display list operation that multiplies the current matrix with `mtx`.\n */\nvoid gd_dl_mul_matrix(Mat4f *mtx) {\n    mat4_to_mtx(mtx, &DL_CURRENT_MTX(sCurrentGdDl));\n    gSPMatrix(next_gfx(), osVirtualToPhysical(&DL_CURRENT_MTX(sCurrentGdDl)), sMtxParamType | G_MTX_MUL | G_MTX_NOPUSH);\n    next_mtx();\n}\n\n/**\n * Adds a display list operation that replaces the current matrix with `mtx`.\n */\nvoid gd_dl_load_matrix(Mat4f *mtx) {\n    mat4_to_mtx(mtx, &DL_CURRENT_MTX(sCurrentGdDl));\n    gSPMatrix(next_gfx(), osVirtualToPhysical(&DL_CURRENT_MTX(sCurrentGdDl)),\n              sMtxParamType | G_MTX_LOAD | G_MTX_NOPUSH);\n    next_mtx();\n}\n\n/**\n * Adds a display list operation that replaces the current matrix with the\n * identity matrix.\n */\nvoid gd_dl_load_identity_matrix(void) {\n    gSPMatrix(next_gfx(), osVirtualToPhysical(&sIdnMtx), sMtxParamType | G_MTX_LOAD | G_MTX_NOPUSH);\n}\n\n/**\n * Adds a display list operation that pushes the current matrix onto the matrix\n * stack.\n */\nvoid gd_dl_push_matrix(void) {\n    gSPMatrix(next_gfx(), osVirtualToPhysical(&sIdnMtx), sMtxParamType | G_MTX_MUL | G_MTX_PUSH);\n}\n\n/**\n * Adds a display list operation that pops a matrix from the matrix stack.\n */\nvoid gd_dl_pop_matrix(void) {\n    gSPPopMatrix(next_gfx(), sMtxParamType);\n}\n\n/**\n * Adds a display list operation that translates the current matrix by `x`, `y`, and `z`.\n */\nvoid gd_dl_mul_trans_matrix(f32 x, f32 y, f32 z) {\n    guTranslate(&DL_CURRENT_MTX(sCurrentGdDl), x, y, z);\n    gSPMatrix(next_gfx(), osVirtualToPhysical(&DL_CURRENT_MTX(sCurrentGdDl)), sMtxParamType | G_MTX_MUL | G_MTX_NOPUSH);\n    next_mtx();\n}\n\n/**\n * Adds a display list operation that loads a translation matrix.\n */\nvoid gd_dl_load_trans_matrix(f32 x, f32 y, f32 z) {\n    guTranslate(&DL_CURRENT_MTX(sCurrentGdDl), x, y, z);\n    gSPMatrix(next_gfx(), osVirtualToPhysical(&DL_CURRENT_MTX(sCurrentGdDl)),\n              sMtxParamType | G_MTX_LOAD | G_MTX_NOPUSH);\n    next_mtx();\n}\n\n/**\n * Adds a display list operation that scales the current matrix by `x`, `y`, and `z`.\n */\nvoid gd_dl_scale(f32 x, f32 y, f32 z) {\n    Mat4f mtx;\n    struct GdVec3f vec;\n\n    vec.x = x;\n    vec.y = y;\n    vec.z = z;\n    gd_set_identity_mat4(&mtx);\n    gd_scale_mat4f_by_vec3f(&mtx, &vec);\n    gd_dl_mul_matrix(&mtx);\n}\n\n/* 24DA94 -> 24DAE8 */\nvoid func_8019F2C4(f32 arg0, s8 arg1) {\n    Mat4f mtx; // 18\n\n    gd_set_identity_mat4(&mtx);\n    gd_absrot_mat4(&mtx, arg1 - 120, -arg0);\n    gd_dl_mul_matrix(&mtx);\n}\n\n/* 24DAE8 -> 24E1A8 */\nvoid gd_dl_lookat(struct ObjCamera *cam, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, f32 arg7) {\n    LookAt *lookat;\n\n    arg7 *= RAD_PER_DEG;\n\n    gd_mat4f_lookat(&cam->unkE8, arg1, arg2, arg3, arg4, arg5, arg6, gd_sin_d(arg7), gd_cos_d(arg7),\n                  0.0f);\n\n    mat4_to_mtx(&cam->unkE8, &DL_CURRENT_MTX(sCurrentGdDl));\n    gSPMatrix(next_gfx(), osVirtualToPhysical(&DL_CURRENT_MTX(sCurrentGdDl)),\n            G_MTX_PROJECTION | G_MTX_MUL | G_MTX_NOPUSH);\n\n    /*  col           colc          dir\n        0  1  2   3   4  5  6   7   8  9  10  11\n    { { 0, 0, 0}, _, {0, 0, 0}, _, {0, 0, 0}, _}\n       16 17 18  19  20 21  22 23  24 25  26  27\n    { { 0, 0, 0}, _, {0, 0, 0}, _, {0, 0, 0}, _}\n    */\n    lookat = &D_801BE7D0[gGdFrameBufNum];\n\n    lookat->l[0].l.dir[0] = LOOKAT_PACK(cam->unkE8[0][0]);\n    lookat->l[0].l.dir[1] = LOOKAT_PACK(cam->unkE8[1][0]);\n    lookat->l[0].l.dir[2] = LOOKAT_PACK(cam->unkE8[2][0]);\n\n    lookat->l[1].l.dir[0] = LOOKAT_PACK(cam->unkE8[0][1]);\n    lookat->l[1].l.dir[1] = LOOKAT_PACK(cam->unkE8[1][1]);\n    lookat->l[1].l.dir[2] = LOOKAT_PACK(cam->unkE8[2][1]);\n\n    lookat->l[0].l.col[0] = 0;\n    lookat->l[0].l.col[1] = 0;\n    lookat->l[0].l.col[2] = 0;\n    lookat->l[0].l.pad1 = 0;\n    lookat->l[0].l.colc[0] = 0;\n    lookat->l[0].l.colc[1] = 0;\n    lookat->l[0].l.colc[2] = 0;\n    lookat->l[0].l.pad2 = 0;\n    lookat->l[1].l.col[0] = 0;\n    lookat->l[1].l.col[1] = 0x80;\n    lookat->l[1].l.col[2] = 0;\n    lookat->l[1].l.pad1 = 0;\n    lookat->l[1].l.colc[0] = 0;\n    lookat->l[1].l.colc[1] = 0x80;\n    lookat->l[1].l.colc[2] = 0;\n    lookat->l[1].l.pad2 = 0;\n\n    lookat = &D_801BE790[0];\n    lookat->l[0].l.dir[0] = 1;\n    lookat->l[0].l.dir[1] = 0;\n    lookat->l[0].l.dir[2] = 0;\n\n    lookat->l[1].l.dir[0] = 0;\n    lookat->l[1].l.dir[1] = 1;\n    lookat->l[1].l.dir[2] = 0;\n\n    lookat->l[0].l.col[0] = 0;\n    lookat->l[0].l.col[1] = 0;\n    lookat->l[0].l.col[2] = 0;\n    lookat->l[0].l.pad1 = 0;\n    lookat->l[0].l.colc[0] = 0;\n    lookat->l[0].l.colc[1] = 0;\n    lookat->l[0].l.colc[2] = 0;\n    lookat->l[0].l.pad2 = 0;\n    lookat->l[1].l.col[0] = 0;\n    lookat->l[1].l.col[1] = 0x80;\n    lookat->l[1].l.col[2] = 0;\n    lookat->l[1].l.pad1 = 0;\n    lookat->l[1].l.colc[0] = 0;\n    lookat->l[1].l.colc[1] = 0x80;\n    lookat->l[1].l.colc[2] = 0;\n    lookat->l[1].l.pad2 = 0;\n\n    gSPLookAt(next_gfx(), osVirtualToPhysical(&D_801BE7D0[gGdFrameBufNum]));\n    next_mtx();\n}\n\n/* 24E1A8 -> 24E230; orig name: func_8019F9D8 */\nvoid check_tri_display(s32 vtxcount) {\n    D_801A86C0 = sCurrentGdDl->curVtxIdx;\n    D_801BB0B4 = 0;\n    if (vtxcount != 3) {\n        fatal_printf(\"cant display no tris\\n\");\n    }\n    if (D_801BB018 != 0 || D_801BB01C != 0) {\n        ;\n    }\n}\n\n/**\n * Adds a vertex to the current display list. Returns a pointer to the vertex if\n * it is new, or NULL if the vertex already exists.\n */\nVtx *gd_dl_make_vertex(f32 x, f32 y, f32 z, f32 alpha) {\n    Vtx *vtx = NULL;\n    s32 i;\n\n    // Add the vertex index to the buffer if it doesn't already exist\n    for (i = sVertexBufStartIndex; i < (sVertexBufStartIndex + sVertexBufCount); i++) {\n        // the ifs need to be separate to match...\n        if (sCurrentGdDl->vtx[i].n.ob[0] == (s16) x) {\n            if (sCurrentGdDl->vtx[i].n.ob[1] == (s16) y) {\n                if (sCurrentGdDl->vtx[i].n.ob[2] == (s16) z) {\n                    sTriangleBuf[sTriangleBufCount][D_801BB0B4++] = (s16) i;\n                    return NULL;\n                }\n            }\n        }\n    }\n\n    sVertexBufCount++;\n    sTriangleBuf[sTriangleBufCount][D_801BB0B4++] = (s16) sCurrentGdDl->curVtxIdx;\n\n    DL_CURRENT_VTX(sCurrentGdDl).n.ob[0] = (s16) x;\n    DL_CURRENT_VTX(sCurrentGdDl).n.ob[1] = (s16) y;\n    DL_CURRENT_VTX(sCurrentGdDl).n.ob[2] = (s16) z;\n    DL_CURRENT_VTX(sCurrentGdDl).n.flag = 0;\n    DL_CURRENT_VTX(sCurrentGdDl).n.tc[0] = sVtxCvrtTCBuf[0];\n    DL_CURRENT_VTX(sCurrentGdDl).n.tc[1] = sVtxCvrtTCBuf[1];\n    DL_CURRENT_VTX(sCurrentGdDl).n.n[0] = sVtxCvrtNormBuf[0];\n    DL_CURRENT_VTX(sCurrentGdDl).n.n[1] = sVtxCvrtNormBuf[1];\n    DL_CURRENT_VTX(sCurrentGdDl).n.n[2] = sVtxCvrtNormBuf[2];\n    DL_CURRENT_VTX(sCurrentGdDl).n.a = (u8)(alpha * 255.0f);\n\n    vtx = &DL_CURRENT_VTX(sCurrentGdDl);\n    next_vtx();\n    return vtx;\n}\n\n/* 24E6C0 -> 24E724 */\nvoid func_8019FEF0(void) {\n    sTriangleBufCount++;\n    if (sVertexBufCount >= 12) {\n        gd_dl_flush_vertices();\n        func_801A0038();\n    }\n    D_801BB018 = 0;\n}\n\n/**\n * Adds a triange to the current display list.\n */\nvoid gd_dl_make_triangle(f32 x1, f32 y1, f32 z1, f32 x2, f32 y2, f32 z2, f32 x3, f32 y3, f32 z3) {\n    Vtx *vtx;\n\n    vtx = &DL_CURRENT_VTX(sCurrentGdDl);\n    gd_dl_make_vertex(x1, y1, z1, 1.0f);\n    gd_dl_make_vertex(x2, y2, z2, 1.0f);\n    gd_dl_make_vertex(x3, y3, z3, 1.0f);\n\n    gSPVertex(next_gfx(), osVirtualToPhysical(vtx), 3, 0);\n    gSP1Triangle(next_gfx(), 0, 1, 2, 0);\n}\n\n/* 24E808 -> 24E840 */\nvoid func_801A0038(void) {\n    sVertexBufCount = 0;\n    sTriangleBufCount = 0;\n    sVertexBufStartIndex = sCurrentGdDl->curVtxIdx;\n}\n\n/* 24E840 -> 24E9BC */\nvoid gd_dl_flush_vertices(void) {\n    UNUSED u8 filler[4];\n    s32 i;\n    UNUSED s32 startvtx = sVertexBufStartIndex;\n\n    if (sVertexBufCount != 0) {\n        // load vertex data\n        gSPVertex(next_gfx(), osVirtualToPhysical(&sCurrentGdDl->vtx[sVertexBufStartIndex]), sVertexBufCount, 0);\n        // load triangle data\n        for (i = 0; i < sTriangleBufCount; i++) {\n            gSP1Triangle(next_gfx(),\n                sTriangleBuf[i][0] - sVertexBufStartIndex,\n                sTriangleBuf[i][1] - sVertexBufStartIndex,\n                sTriangleBuf[i][2] - sVertexBufStartIndex,\n                0);\n        }\n    }\n    func_801A0038();\n}\n\n/**\n * Unused - called by func_801A520C\n */\nstatic void func_801A01EC(void) {\n    if (D_801BE8B0.validCount >= D_801BE8B0.msgCount) {\n        osRecvMesg(&D_801BE8B0, &sGdDMACompleteMsg, OS_MESG_BLOCK);\n    }\n    osRecvMesg(&D_801BE8B0, &sGdDMACompleteMsg, OS_MESG_BLOCK);\n}\n\n/**\n * Unused - called by func_801A520C\n */\nstatic void func_801A025C(void) {\n    gGdFrameBufNum ^= 1;\n    osViSwapBuffer(sScreenView->parent->colourBufs[gGdFrameBufNum]);\n}\n\n/* 24EA88 -> 24EAF4 */\nvoid set_render_alpha(f32 alpha) {\n    sAlpha = alpha * 255.0f;\n    update_render_mode();\n}\n\n/* 24EAF4 -> 24EB0C */\n// light id?\nvoid set_light_id(s32 index) {\n    sLightId = index;\n}\n\n/* 24EB0C -> 24EB24; orig name: func_801A033C */\nvoid set_light_num(s32 n) {\n    sNumLights = n;\n}\n\n/* 24EB24 -> 24EC18 */\ns32 create_mtl_gddl(UNUSED s32 mtlType) {\n    s32 dlnum;            // 24\n    struct GdColour blue; // 18\n\n    blue.r = 0.0f;\n    blue.g = 0.0f;\n    blue.b = 1.0f;\n    dlnum = gd_startdisplist(7);\n    gd_dl_material_lighting(dlnum, &blue, GD_MTL_TEX_OFF);\n    gd_enddlsplist_parent();\n    sCurrentGdDl->totalVtx = sCurrentGdDl->curVtxIdx;\n    sCurrentGdDl->totalMtx = sCurrentGdDl->curMtxIdx;\n    sCurrentGdDl->totalLights = sCurrentGdDl->curLightIdx;\n    sCurrentGdDl->totalGfx = sCurrentGdDl->curGfxIdx;\n    sCurrentGdDl->totalVp = sCurrentGdDl->curVpIdx;\n    return dlnum;\n}\n\n/* 24EC18 -> 24EC48; orig name: func_801A0448 */\nvoid branch_to_gddl(s32 dlNum) {\n    branch_cur_dl_to_num(dlNum);\n}\n\n/* 24EC48 -> 24F03C */\n// phong shading function?\nvoid gd_dl_hilite(s32 idx, // material GdDl number; offsets into hilite array\n                   struct ObjCamera *cam, UNUSED struct GdVec3f *arg2, UNUSED struct GdVec3f *arg3,\n                   struct GdVec3f *arg4,   // vector to light source?\n                   struct GdColour *colour // light color\n) {\n    UNUSED u8 filler1[96];\n    Hilite *hilite; // 4c\n    struct GdVec3f sp40;\n    f32 sp3C; // magnitude of sp40\n    f32 sp38;\n    f32 sp34;\n    UNUSED u8 filler2[24];\n\n    sp38 = 32.0f; // x scale factor?\n    sp34 = 32.0f; // y scale factor?\n    if (idx >= 0xc8) {\n        fatal_printf(\"too many hilites\");\n    }\n    hilite = &sHilites[idx];\n\n    gDPSetPrimColor(next_gfx(), 0, 0, (s32)(colour->r * 255.0f), (s32)(colour->g * 255.0f),\n                    (s32)(colour->b * 255.0f), 255);\n    sp40.z = cam->unkE8[0][2] + arg4->x;\n    sp40.y = cam->unkE8[1][2] + arg4->y;\n    sp40.x = cam->unkE8[2][2] + arg4->z;\n    sp3C = sqrtf(SQ(sp40.z) + SQ(sp40.y) + SQ(sp40.x));\n    if (sp3C > 0.1) {\n        sp3C = 1.0 / sp3C; //? 1.0f\n        sp40.z *= sp3C;\n        sp40.y *= sp3C;\n        sp40.x *= sp3C;\n\n        hilite->h.x1 =\n            (((sp40.z * cam->unkE8[0][0]) + (sp40.y * cam->unkE8[1][0]) + (sp40.x * cam->unkE8[2][0]))\n             * sp38 * 2.0f)\n            + (sp38 * 4.0f);\n        hilite->h.y1 =\n            (((sp40.z * cam->unkE8[0][1]) + (sp40.y * cam->unkE8[1][1]) + (sp40.x * cam->unkE8[2][1]))\n             * sp34 * 2.0f)\n            + (sp34 * 4.0f);\n    } else {\n        hilite->h.x1 = sp38 * 2.0f;\n        hilite->h.y1 = sp34 * 2.0f;\n    }\n}\n\n/**\n * Adds some display list commands that perform lighting for a material\n */\ns32 gd_dl_material_lighting(s32 id, struct GdColour *colour, s32 material) {\n    UNUSED u8 filler[8];\n    s32 i;\n    s32 numLights = sNumLights;\n    s32 scaledColours[3];\n    s32 lightDir[3];\n\n    if (id > 0) {\n        begin_gddl(id);\n    }\n    switch (material) {\n        case GD_MTL_TEX_OFF:\n            gddl_is_loading_stub_dl(FALSE);\n            gddl_is_loading_stub_dl(FALSE);\n            gddl_is_loading_stub_dl(FALSE);\n            gddl_is_loading_stub_dl(FALSE);\n            gddl_is_loading_shine_dl(FALSE);\n            gddl_is_loading_shine_dl(FALSE);\n            gddl_is_loading_shine_dl(FALSE);\n            gddl_is_loading_shine_dl(FALSE);\n            numLights = NUMLIGHTS_2;\n            break;\n        case GD_MTL_STUB_DL:\n            gddl_is_loading_stub_dl(TRUE);\n            break;\n        case GD_MTL_SHINE_DL:\n            gddl_is_loading_shine_dl(TRUE);\n            if (id >= 200) {\n                fatal_printf(\"too many hilites\");\n            }\n            gDPSetHilite1Tile(next_gfx(), G_TX_RENDERTILE, &sHilites[id], 32, 32);\n            break;\n        case GD_MTL_BREAK:\n            break;\n        default:\n            gddl_is_loading_stub_dl(FALSE);\n            gddl_is_loading_shine_dl(FALSE);\n\n            DL_CURRENT_LIGHT(sCurrentGdDl).a.l.col[0] = colour->r * 255.0f;\n            DL_CURRENT_LIGHT(sCurrentGdDl).a.l.col[1] = colour->g * 255.0f;\n            DL_CURRENT_LIGHT(sCurrentGdDl).a.l.col[2] = colour->b * 255.0f;\n\n            DL_CURRENT_LIGHT(sCurrentGdDl).a.l.colc[0] = DL_CURRENT_LIGHT(sCurrentGdDl).a.l.col[0];\n            DL_CURRENT_LIGHT(sCurrentGdDl).a.l.colc[1] = DL_CURRENT_LIGHT(sCurrentGdDl).a.l.col[1];\n            DL_CURRENT_LIGHT(sCurrentGdDl).a.l.colc[2] = DL_CURRENT_LIGHT(sCurrentGdDl).a.l.col[2];\n            // 801A0D04\n            DL_CURRENT_LIGHT(sCurrentGdDl).l[0].l.col[0] = 0;\n            DL_CURRENT_LIGHT(sCurrentGdDl).l[0].l.col[1] = 0;\n            DL_CURRENT_LIGHT(sCurrentGdDl).l[0].l.col[2] = 0;\n\n            DL_CURRENT_LIGHT(sCurrentGdDl).l[0].l.colc[0] = 0;\n            DL_CURRENT_LIGHT(sCurrentGdDl).l[0].l.colc[1] = 0;\n            DL_CURRENT_LIGHT(sCurrentGdDl).l[0].l.colc[2] = 0;\n\n            gSPNumLights(next_gfx(), NUMLIGHTS_1);\n            gSPLight(next_gfx(), osVirtualToPhysical(&DL_CURRENT_LIGHT(sCurrentGdDl).l), LIGHT_1);\n            gSPLight(next_gfx(), osVirtualToPhysical(&DL_CURRENT_LIGHT(sCurrentGdDl).a), LIGHT_2);\n            next_light();\n            if (id > 0) {\n                gd_enddlsplist();\n            }\n            return 0;\n            break;\n    }\n    // L801A0EF4\n    scaledColours[0] = (s32)(colour->r * sAmbScaleColour.r * 255.0f);\n    scaledColours[1] = (s32)(colour->g * sAmbScaleColour.g * 255.0f);\n    scaledColours[2] = (s32)(colour->b * sAmbScaleColour.b * 255.0f);\n    // 801A0FE4\n    DL_CURRENT_LIGHT(sCurrentGdDl).a.l.col[0] = scaledColours[0];\n    DL_CURRENT_LIGHT(sCurrentGdDl).a.l.col[1] = scaledColours[1];\n    DL_CURRENT_LIGHT(sCurrentGdDl).a.l.col[2] = scaledColours[2];\n    // 801A1068\n    DL_CURRENT_LIGHT(sCurrentGdDl).a.l.colc[0] = scaledColours[0];\n    DL_CURRENT_LIGHT(sCurrentGdDl).a.l.colc[1] = scaledColours[1];\n    DL_CURRENT_LIGHT(sCurrentGdDl).a.l.colc[2] = scaledColours[2];\n    // 801A10EC\n    gSPNumLights(next_gfx(), numLights);\n    for (i = 0; i < numLights; i++) { // L801A1134\n        scaledColours[0] = colour->r * sLightScaleColours[i].r * 255.0f;\n        scaledColours[1] = colour->g * sLightScaleColours[i].g * 255.0f;\n        scaledColours[2] = colour->b * sLightScaleColours[i].b * 255.0f;\n        // 801A1260\n        DL_CURRENT_LIGHT(sCurrentGdDl).l[i].l.col[0] = scaledColours[0];\n        DL_CURRENT_LIGHT(sCurrentGdDl).l[i].l.col[1] = scaledColours[1];\n        DL_CURRENT_LIGHT(sCurrentGdDl).l[i].l.col[2] = scaledColours[2];\n        DL_CURRENT_LIGHT(sCurrentGdDl).l[i].l.colc[0] = scaledColours[0];\n        DL_CURRENT_LIGHT(sCurrentGdDl).l[i].l.colc[1] = scaledColours[1];\n        DL_CURRENT_LIGHT(sCurrentGdDl).l[i].l.colc[2] = scaledColours[2];\n\n        // 801A13B0\n        lightDir[0] = (s8)sLightDirections[i].x;\n        lightDir[1] = (s8)sLightDirections[i].y;\n        lightDir[2] = (s8)sLightDirections[i].z;\n        // 801A141C\n        DL_CURRENT_LIGHT(sCurrentGdDl).l[i].l.dir[0] = lightDir[0];\n        DL_CURRENT_LIGHT(sCurrentGdDl).l[i].l.dir[1] = lightDir[1];\n        DL_CURRENT_LIGHT(sCurrentGdDl).l[i].l.dir[2] = lightDir[2];\n        // 801A14C4\n        gSPLight(next_gfx(), osVirtualToPhysical(&DL_CURRENT_LIGHT(sCurrentGdDl).l[i]), i + 1);\n    }\n    // L801A1550\n    gSPLight(next_gfx(), osVirtualToPhysical(&DL_CURRENT_LIGHT(sCurrentGdDl)), i + 1);\n    next_light();\n    gd_enddlsplist();\n    return 0;\n}\n\n/* 24FDB8 -> 24FE94; orig name: func_801A15E8; only from faces? */\nvoid set_Vtx_norm_buf_1(struct GdVec3f *norm) {\n    sVtxCvrtNormBuf[0] = (s8)(norm->x * 127.0f);\n    sVtxCvrtNormBuf[1] = (s8)(norm->y * 127.0f);\n    sVtxCvrtNormBuf[2] = (s8)(norm->z * 127.0f);\n}\n\n/* 24FE94 -> 24FF80; orig name: func_801A16C4; only from verts? */\nvoid set_Vtx_norm_buf_2(struct GdVec3f *norm) {\n    sVtxCvrtNormBuf[0] = (s8)(norm->x * 127.0f);\n    sVtxCvrtNormBuf[1] = (s8)(norm->y * 127.0f);\n    sVtxCvrtNormBuf[2] = (s8)(norm->z * 127.0f);\n\n    //? are these stub functions?\n    return; // @ 801A17A0\n    return; // @ 801A17A8\n}\n\n/* 24FF80 -> 24FFDC; orig name: func_801A17B0 */\nvoid set_gd_mtx_parameters(s32 params) {\n    switch (params) {\n        case G_MTX_PROJECTION | G_MTX_MUL | G_MTX_PUSH:\n            sMtxParamType = G_MTX_PROJECTION;\n            break;\n        case G_MTX_MODELVIEW | G_MTX_LOAD | G_MTX_PUSH:\n            sMtxParamType = G_MTX_MODELVIEW;\n            break;\n    }\n}\n\n/**\n * Adds a viewport to the current display list based on the current active view\n */\nstatic void gd_dl_viewport(void) {\n    Vp *vp;\n\n    vp = &DL_CURRENT_VP(sCurrentGdDl);\n\n    vp->vp.vscale[0] = (s16)(sActiveView->lowerRight.x * 2.0f);  // x scale\n    vp->vp.vscale[1] = (s16)(sActiveView->lowerRight.y * 2.0f);  // y scale\n    vp->vp.vscale[2] = 0x1FF;  // z scale\n    vp->vp.vscale[3] = 0x000;\n\n    vp->vp.vtrans[0] = (s16)((sActiveView->upperLeft.x * 4.0f) + (sActiveView->lowerRight.x * 2.0f));  // x offset\n    vp->vp.vtrans[1] = (s16)((sActiveView->upperLeft.y * 4.0f) + (sActiveView->lowerRight.y * 2.0f));  // y offset\n    vp->vp.vtrans[2] = 0x1FF;  // z offset\n    vp->vp.vtrans[3] = 0x000;\n\n    gSPViewport(next_gfx(), osVirtualToPhysical(vp));\n    next_vp();\n}\n\n/* 2501D0 -> 250300 */\nstatic void update_render_mode(void) {\n    if ((sActiveView->flags & VIEW_ALLOC_ZBUF) != 0) {\n        if (sAlpha != 0xff) {\n            gDPSetRenderMode(next_gfx(), G_RM_AA_ZB_XLU_SURF, G_RM_AA_ZB_XLU_SURF2);\n        } else {\n            gDPSetRenderMode(next_gfx(), G_RM_AA_ZB_OPA_INTER, G_RM_NOOP2);\n        }\n    } else {\n        if (sAlpha != 0xff) {\n            gDPSetRenderMode(next_gfx(), G_RM_AA_XLU_SURF, G_RM_AA_XLU_SURF2);\n        } else {\n            gDPSetRenderMode(next_gfx(), G_RM_AA_ZB_OPA_INTER, G_RM_NOOP2);\n        }\n    }\n}\n\n/* 250300 -> 250640 */\nvoid Unknown801A1B30(void) {\n    gDPPipeSync(next_gfx());\n    gd_set_color_fb();\n    gd_dl_set_fill(&sActiveView->colour);\n    gDPFillRectangle(next_gfx(), (u32)(sActiveView->upperLeft.x), (u32)(sActiveView->upperLeft.y),\n                     (u32)(sActiveView->upperLeft.x + sActiveView->lowerRight.x - 1.0f),\n                     (u32)(sActiveView->upperLeft.y + sActiveView->lowerRight.y - 1.0f));\n    gDPPipeSync(next_gfx());\n}\n\n/* 250640 -> 250AE0 */\nvoid Unknown801A1E70(void) {\n    gDPPipeSync(next_gfx());\n    gDPSetCycleType(next_gfx(), G_CYC_FILL);\n    gDPSetRenderMode(next_gfx(), G_RM_OPA_SURF, G_RM_OPA_SURF2);\n    gd_dl_set_z_buffer_area();\n    gDPSetColorImage(next_gfx(), G_IM_FMT_RGBA, G_IM_SIZ_16b, sActiveView->parent->lowerRight.x,\n                     GD_LOWER_24(sActiveView->parent->zbuf));\n    gDPSetFillColor(next_gfx(), GPACK_ZDZ(G_MAXFBZ, 0) << 16 | GPACK_ZDZ(G_MAXFBZ, 0));\n    gDPFillRectangle(next_gfx(), (u32)(sActiveView->upperLeft.x), (u32)(sActiveView->upperLeft.y),\n                     (u32)(sActiveView->upperLeft.x + sActiveView->lowerRight.x - 1.0f),\n                     (u32)(sActiveView->upperLeft.y + sActiveView->lowerRight.y - 1.0f));\n    gDPPipeSync(next_gfx());\n    gd_set_color_fb();\n}\n\n/* 250AE0 -> 250B30; orig name: func_801A2310 */\nvoid gd_set_one_cycle(void) {\n    gDPSetCycleType(next_gfx(), G_CYC_1CYCLE);\n    update_render_mode();\n}\n\n/* 250B30 -> 250B44 */\nvoid stub_renderer_3(void) {\n    UNUSED u8 filler[16];\n}\n\n/* 250B44 -> 250B58 */\nvoid gddl_is_loading_stub_dl(UNUSED s32 dlLoad) {\n}\n\n/* 250B58 -> 250C18 */\nvoid gddl_is_loading_shine_dl(s32 dlLoad) {\n    if (dlLoad) {\n        gSPDisplayList(next_gfx(), osVirtualToPhysical(&gd_dl_mario_face_shine));\n    } else {\n        gSPTexture(next_gfx(), 0x8000, 0x8000, 0, G_TX_RENDERTILE, G_OFF);\n        gDPSetCombineMode(next_gfx(), G_CC_SHADE, G_CC_SHADE);\n    }\n}\n\n/* 250C18 -> 251014; orig name: func_801A2448 */\nvoid start_view_dl(struct ObjView *view) {\n    f32 ulx;\n    f32 uly;\n    f32 lrx;\n    f32 lry;\n\n    if (view->upperLeft.x < view->parent->upperLeft.x) {\n        ulx = view->parent->upperLeft.x;\n    } else {\n        ulx = view->upperLeft.x;\n    }\n\n    if (view->upperLeft.x + view->lowerRight.x\n        > view->parent->upperLeft.x + view->parent->lowerRight.x) {\n        lrx = view->parent->upperLeft.x + view->parent->lowerRight.x;\n    } else {\n        lrx = view->upperLeft.x + view->lowerRight.x;\n    }\n\n    if (view->upperLeft.y < view->parent->upperLeft.y) {\n        uly = view->parent->upperLeft.y;\n    } else {\n        uly = view->upperLeft.y;\n    }\n\n    if (view->upperLeft.y + view->lowerRight.y\n        > view->parent->upperLeft.y + view->parent->lowerRight.y) {\n        lry = view->parent->upperLeft.y + view->parent->lowerRight.y;\n    } else {\n        lry = view->upperLeft.y + view->lowerRight.y;\n    }\n\n    if (ulx >= lrx) {\n        ulx = lrx - 1.0f;\n    }\n    if (uly >= lry) {\n        uly = lry - 1.0f;\n    }\n\n    gDPSetScissor(next_gfx(), G_SC_NON_INTERLACE, ulx, uly, lrx, lry);\n    gSPClearGeometryMode(next_gfx(), 0xFFFFFFFF);\n    gSPSetGeometryMode(next_gfx(), G_LIGHTING | G_CULL_BACK | G_SHADING_SMOOTH | G_SHADE);\n    if (view->flags & VIEW_ALLOC_ZBUF) {\n        gSPSetGeometryMode(next_gfx(), G_ZBUFFER);\n    }\n    gd_dl_viewport();\n    update_render_mode();\n    gDPPipeSync(next_gfx());\n}\n\n/* 251014 -> 251A1C; orig name: func_801A2844 */\nvoid parse_p1_controller(void) {\n    u32 i;\n    struct GdControl *gdctrl = &gGdCtrl;\n    OSContPad *currInputs;\n    OSContPad *prevInputs;\n\n    // Copy current inputs to previous\n    u8 *src = (u8 *) gdctrl;\n    u8 *dest = (u8 *) gdctrl->prevFrame;\n    for (i = 0; i < sizeof(struct GdControl); i++) {\n        *dest++ = *src++;\n    }\n\n    gdctrl->unk50 = gdctrl->unk4C = gdctrl->dup = gdctrl->ddown = 0;\n\n    currInputs = &sGdContPads[0];\n    prevInputs = &sPrevFrameCont[0];\n    // stick values\n    gdctrl->stickXf     = currInputs->stick_x;\n    gdctrl->stickYf     = currInputs->stick_y;\n    gdctrl->stickDeltaX = gdctrl->stickX;\n    gdctrl->stickDeltaY = gdctrl->stickY;\n    gdctrl->stickX      = currInputs->stick_x;\n    gdctrl->stickY      = currInputs->stick_y;\n    gdctrl->stickDeltaX -= gdctrl->stickX;\n    gdctrl->stickDeltaY -= gdctrl->stickY;\n    // button values (as bools)\n    gdctrl->trgL   = (currInputs->button & L_TRIG) != 0;\n    gdctrl->trgR   = (currInputs->button & R_TRIG) != 0;\n    gdctrl->btnA   = (currInputs->button & A_BUTTON) != 0;\n    gdctrl->btnB   = (currInputs->button & B_BUTTON) != 0;\n    gdctrl->cleft  = (currInputs->button & L_CBUTTONS) != 0;\n    gdctrl->cright = (currInputs->button & R_CBUTTONS) != 0;\n    gdctrl->cup    = (currInputs->button & U_CBUTTONS) != 0;\n    gdctrl->cdown  = (currInputs->button & D_CBUTTONS) != 0;\n    // but not these buttons??\n    gdctrl->dleft  = currInputs->button & L_JPAD;\n    gdctrl->dright = currInputs->button & R_JPAD;\n    gdctrl->dup    = currInputs->button & U_JPAD;\n    gdctrl->ddown  = currInputs->button & D_JPAD;\n\n    if (gdctrl->btnA && !gdctrl->dragging) {\n        gdctrl->startedDragging = TRUE;\n    } else {\n        gdctrl->startedDragging = FALSE;\n    }\n    // toggle if A is pressed? or is this just some seed for an rng?\n    gdctrl->dragging = gdctrl->btnA;\n    gdctrl->unkD8b20 = gdctrl->unkD8b40 = FALSE;\n    gdctrl->AbtnPressWait = FALSE;\n\n    if (gdctrl->startedDragging) {\n        gdctrl->dragStartX = gdctrl->csrX;\n        gdctrl->dragStartY = gdctrl->csrY;\n\n        if (gdctrl->currFrame - gdctrl->dragStartFrame < 10) {\n            gdctrl->AbtnPressWait = TRUE;\n        }\n    }\n\n    if (gdctrl->dragging) {\n        gdctrl->dragStartFrame = gdctrl->currFrame;\n    }\n    gdctrl->currFrame++;\n\n    if (currInputs->button & START_BUTTON && !(prevInputs->button & START_BUTTON)) {\n        gdctrl->newStartPress ^= 1;\n    }\n\n    if (currInputs->button & Z_TRIG && !(prevInputs->button & Z_TRIG)) {\n        sCurrDebugViewIndex++;\n    }\n\n    if (sCurrDebugViewIndex > sDebugViewsCount) {\n        sCurrDebugViewIndex = 0;\n    } else if (sCurrDebugViewIndex < 0) {\n        sCurrDebugViewIndex = sDebugViewsCount;\n    }\n\n    if (sCurrDebugViewIndex) {\n        deactivate_timing();\n    } else {\n        activate_timing();\n    }\n\n    for (i = 0; ((s32) i) < sDebugViewsCount; i++) {\n        sDebugViews[i]->flags &= ~VIEW_UPDATE;\n    }\n\n    if (sCurrDebugViewIndex) {\n        sDebugViews[sCurrDebugViewIndex - 1]->flags |= VIEW_UPDATE;\n    }\n\n    // deadzone checks\n    if (ABS(gdctrl->stickX) >= 6) {\n        gdctrl->csrX += gdctrl->stickX * 0.1;\n    }\n    if (ABS(gdctrl->stickY) >= 6) {\n        gdctrl->csrY -= gdctrl->stickY * 0.1;\n    }\n\n    // clamp cursor position within screen view bounds\n    if (gdctrl->csrX < sScreenView->parent->upperLeft.x + 16.0f) {\n        gdctrl->csrX = sScreenView->parent->upperLeft.x + 16.0f;\n    }\n    if (gdctrl->csrX > sScreenView->parent->upperLeft.x + sScreenView->parent->lowerRight.x - 48.0f) {\n        gdctrl->csrX = sScreenView->parent->upperLeft.x + sScreenView->parent->lowerRight.x - 48.0f;\n    }\n    if (gdctrl->csrY < sScreenView->parent->upperLeft.y + 16.0f) {\n        gdctrl->csrY = sScreenView->parent->upperLeft.y + 16.0f;\n    }\n    if (gdctrl->csrY > sScreenView->parent->upperLeft.y + sScreenView->parent->lowerRight.y - 32.0f) {\n        gdctrl->csrY = sScreenView->parent->upperLeft.y + sScreenView->parent->lowerRight.y - 32.0f;\n    }\n\n    for (i = 0; i < sizeof(OSContPad); i++) {\n        ((u8 *) prevInputs)[i] = ((u8 *) currInputs)[i];\n    }\n}\n\nvoid stub_renderer_4(f32 arg0) {\n    return;\n\n    // dead code\n    if (D_801BD768.x * D_801A86CC.x + arg0 * 2.0f > 160.0) {\n        func_801A3370(D_801BD758.x - D_801BD768.x, -20.0f, 0.0f);\n        D_801BD768.x = D_801BD758.x;\n    }\n}\n\n/**\n * Unused\n */\nvoid Unknown801A32F4(s32 arg0) {\n    D_801BD774 = GD_LOWER_24(arg0) + D_801BAF28;\n}\n\n/* 251AF4 -> 251B40 */\nvoid func_801A3324(f32 x, f32 y, f32 z) {\n    D_801BD768.x = x;\n    D_801BD768.y = y;\n    D_801BD768.z = z;\n    D_801BD758.x = x;\n    D_801BD758.y = y;\n    D_801BD758.z = z;\n}\n\n/* 251B40 -> 251BC8 */\nvoid func_801A3370(f32 x, f32 y, f32 z) {\n    gd_dl_mul_trans_matrix(x, y, z);\n    D_801BD768.x += x;\n    D_801BD768.y += y;\n    D_801BD768.z += z;\n}\n\n/**\n * Unused\n */\nvoid Unknown801A33F8(f32 x, f32 y, f32 z) {\n    gd_dl_mul_trans_matrix(x - D_801BD768.x, y - D_801BD768.y, z - D_801BD768.z);\n\n    D_801BD768.x = x;\n    D_801BD768.y = y;\n    D_801BD768.z = z;\n}\n\n/**\n * Unused\n */\nvoid Unknown801A347C(f32 x, f32 y, f32 z) {\n    D_801A86CC.x = x;\n    D_801A86CC.y = y;\n    D_801A86CC.z = z;\n    gd_dl_scale(x, y, z);\n}\n\n/* 251CB0 -> 251D44; orig name: func_801A34E0 */\nvoid border_active_view(void) {\n    if (sActiveView->flags & VIEW_BORDERED) {\n        gd_dl_set_fill(gd_get_colour(1));\n        gd_draw_border_rect(0.0f, 0.0f, (sActiveView->lowerRight.x - 1.0f),\n                            (sActiveView->lowerRight.y - 1.0f));\n    }\n}\n\n/* 251D44 -> 251DAC */\nvoid gd_shading(s32 model) {\n    switch (model) {\n        case 9:\n            break;\n        case 10:\n            break;\n        default:\n            fatal_printf(\"gd_shading(): Unknown shading model\");\n    }\n}\n\n/* 251DAC -> 251E18 */\ns32 gd_getproperty(s32 prop, UNUSED void *arg1) {\n    s32 got = FALSE;\n\n    switch (prop) {\n        case 3:\n            got = TRUE;\n            break;\n        default:\n            fatal_printf(\"gd_getproperty(): Unkown property\");\n    }\n\n    return got;\n}\n\n/* 251E18 -> 2522B0 */\nvoid gd_setproperty(enum GdProperty prop, f32 f1, f32 f2, f32 f3) {\n    UNUSED f32 sp3C = 1.0f;\n    s32 parm;\n\n    switch (prop) {\n        case GD_PROP_LIGHTING:\n            parm = (s32) f1;\n            switch (parm) {\n                case 1:\n                    gSPSetGeometryMode(next_gfx(), G_LIGHTING);\n                    break;\n                case 0:\n                    gSPClearGeometryMode(next_gfx(), G_LIGHTING);\n                    break;\n            }\n            break;\n        case GD_PROP_AMB_COLOUR:\n            sAmbScaleColour.r = f1;\n            sAmbScaleColour.g = f2;\n            sAmbScaleColour.b = f3;\n            break;\n        case GD_PROP_LIGHT_DIR:\n            sLightDirections[sLightId].x = (s32)(f1 * 120.f);\n            sLightDirections[sLightId].y = (s32)(f2 * 120.f);\n            sLightDirections[sLightId].z = (s32)(f3 * 120.f);\n            break;\n        case GD_PROP_DIFUSE_COLOUR:\n            sLightScaleColours[sLightId].r = f1;\n            sLightScaleColours[sLightId].g = f2;\n            sLightScaleColours[sLightId].b = f3;\n            break;\n        case GD_PROP_CULLING:\n            parm = (s32) f1;\n            switch (parm) {\n                case 1:\n                    gSPSetGeometryMode(next_gfx(), G_CULL_BACK);\n                    break;\n                case 0:\n                    gSPClearGeometryMode(next_gfx(), G_CULL_BACK);\n                    break;\n            }\n            break;\n        case GD_PROP_OVERLAY:\n            parm = (s32) f1;\n            switch (parm) {\n                case 1:\n                    break;\n                case 0:\n                    break;\n                default:\n                    fatal_printf(\"Bad GD_OVERLAY parm\");\n            }\n            break;\n        case GD_PROP_ZBUF_FN:\n            parm = (s32) f1;\n            switch (parm) {\n                case 23:\n                    break;\n                case 24:\n                    break;\n                case 25:\n                    break;\n                default:\n                    fatal_printf(\"Bad zbuf function\");\n            }\n            //? no break?\n        case GD_PROP_STUB17:\n            break;\n        case GD_PROP_STUB18:\n            break;\n        case GD_PROP_STUB19:\n            break;\n        case GD_PROP_STUB20:\n            break;\n        case GD_PROP_STUB21:\n            break;\n        default:\n            fatal_printf(\"gd_setproperty(): Unkown property\");\n    }\n}\n\n/* 2522B0 -> 2522C0 */\nvoid stub_renderer_5(void) {\n}\n\n/* 2522C0 -> 25245C */\nvoid gd_create_ortho_matrix(f32 l, f32 r, f32 b, f32 t, f32 n, f32 f) {\n    uintptr_t orthoMtx;\n    uintptr_t rotMtx;\n\n    // Should produce G_RDPHALF_1 in Fast3D\n    gSPPerspNormalize(next_gfx(), 0xFFFF);\n\n    guOrtho(&DL_CURRENT_MTX(sCurrentGdDl), l, r, b, t, n, f, 1.0f);\n    orthoMtx = GD_LOWER_29(&DL_CURRENT_MTX(sCurrentGdDl));\n    gSPMatrix(next_gfx(), orthoMtx, G_MTX_PROJECTION | G_MTX_LOAD | G_MTX_NOPUSH);\n\n    next_mtx();\n    guRotate(&DL_CURRENT_MTX(sCurrentGdDl), 0.0f, 0.0f, 0.0f, 1.0f);\n    rotMtx = GD_LOWER_29(&DL_CURRENT_MTX(sCurrentGdDl));\n    gSPMatrix(next_gfx(), rotMtx, G_MTX_MODELVIEW | G_MTX_LOAD | G_MTX_NOPUSH);\n\n    func_801A3324(0.0f, 0.0f, 0.0f);\n    next_mtx();\n}\n\n/* 25245C -> 25262C */\nvoid gd_create_perspective_matrix(f32 fovy, f32 aspect, f32 near, f32 far) {\n    u16 perspNorm;\n    UNUSED u8 filler1[4];\n    uintptr_t perspecMtx;\n    uintptr_t rotMtx;\n    UNUSED u8 filler2[4];\n    UNUSED f32 unused = 0.0625f;\n\n    sGdPerspTimer += 0.1;\n    guPerspective(&DL_CURRENT_MTX(sCurrentGdDl), &perspNorm, fovy, aspect, near, far, 1.0f);\n\n    gSPPerspNormalize(next_gfx(), perspNorm);\n\n    perspecMtx = GD_LOWER_29(&DL_CURRENT_MTX(sCurrentGdDl));\n    gSPMatrix(next_gfx(), perspecMtx, G_MTX_PROJECTION | G_MTX_LOAD | G_MTX_NOPUSH);\n    next_mtx();\n\n    guRotate(&DL_CURRENT_MTX(sCurrentGdDl), 0.0f, 0.0f, 0.0f, 1.0f);\n    rotMtx = GD_LOWER_29(&DL_CURRENT_MTX(sCurrentGdDl));\n    gSPMatrix(next_gfx(), rotMtx, G_MTX_MODELVIEW | G_MTX_LOAD | G_MTX_NOPUSH);\n    func_801A3324(0.0f, 0.0f, 0.0f);\n    next_mtx();\n}\n\n/* 25262C -> 252AF8 */\ns32 setup_view_buffers(const char *name, struct ObjView *view, UNUSED s32 ulx, UNUSED s32 uly,\n                       UNUSED s32 lrx, UNUSED s32 lry) {\n    char memtrackerName[0x100];\n\n    if (view->flags & (VIEW_Z_BUF | VIEW_COLOUR_BUF) && !(view->flags & VIEW_UNK_1000)) {\n        if (view->flags & VIEW_COLOUR_BUF) {\n            sprintf(memtrackerName, \"%s CBuf\", name);\n            start_memtracker(memtrackerName);\n            view->colourBufs[0] =\n                gd_malloc((u32)(2.0f * view->lowerRight.x * view->lowerRight.y + 64.0f), 0x20);\n\n            if (view->flags & VIEW_2_COL_BUF) {\n                view->colourBufs[1] =\n                    gd_malloc((u32)(2.0f * view->lowerRight.x * view->lowerRight.y + 64.0f), 0x20);\n            } else {\n                view->colourBufs[1] = view->colourBufs[0];\n            }\n\n            view->colourBufs[0] = (void *) ALIGN((uintptr_t) view->colourBufs[0], 64);\n            view->colourBufs[1] = (void *) ALIGN((uintptr_t) view->colourBufs[1], 64);\n            stop_memtracker(memtrackerName);\n\n            if (view->colourBufs[0] == NULL || view->colourBufs[1] == NULL) {\n                fatal_printf(\"Not enough DRAM for colour buffers\\n\");\n            }\n            view->parent = view;\n        } else {\n            view->parent = sScreenView;\n        }\n\n        if (view->flags & VIEW_Z_BUF) {\n            sprintf(memtrackerName, \"%s ZBuf\", name);\n            start_memtracker(memtrackerName);\n            if (view->flags & VIEW_ALLOC_ZBUF) {\n                view->zbuf =\n                    gd_malloc((u32)(2.0f * view->lowerRight.x * view->lowerRight.y + 64.0f), 0x40);\n                if (view->zbuf == NULL) {\n                    fatal_printf(\"Not enough DRAM for Z buffer\\n\");\n                }\n                view->zbuf = (void *) ALIGN((uintptr_t) view->zbuf, 64);\n            }\n            stop_memtracker(memtrackerName);\n        } else {\n            view->zbuf = sScreenView->zbuf;\n        }\n    } else {\n        view->parent = sScreenView;\n    }\n\n    view->gdDlNum = 0;\n    view->unk74 = 0;\n\n    if (view->flags & VIEW_DEFAULT_PARENT) {\n        view->parent = D_801A86E0;\n    }\n\n//! @bug No actual return, but the return value is used.\n//!      There is no obvious value to return. Since the function\n//!      doesn't use four of its parameters, this function may have\n//!      had a fair amount of its code commented out. In game, the\n//!      returned value is always 0, so the fix returns that value\n#ifdef AVOID_UB\n    return 0;\n#endif\n}\n\n/* 252AF8 -> 252BAC; orig name: _InitControllers */\nvoid gd_init_controllers(void) {\n    OSContPad *p1cont = &sPrevFrameCont[0]; // 1c\n    u32 i;                                  // 18\n\n    osCreateMesgQueue(&D_801BE830, D_801BE848, ARRAY_COUNT(D_801BE848));\n    osSetEventMesg(OS_EVENT_SI, &D_801BE830, (OSMesg) OS_MESG_SI_COMPLETE);\n    osContInit(&D_801BE830, &D_801BAEA0, D_801BAE60);\n    osContStartReadData(&D_801BE830);\n\n    for (i = 0; i < sizeof(OSContPad); i++) {\n        ((u8 *) p1cont)[i] = 0;\n    }\n}\n\n/* 252BAC -> 252BC0 */\nvoid stub_renderer_6(UNUSED struct GdObj *obj) {\n}\n\n/**\n * Unused - This is likely a stub version of the `defpup` function from the IRIX\n * Graphics Library. It was used to define a popup menu. See the IRIX \"Graphics\n * Library Reference Manual, C Edition\" for details.\n *\n * @param menufmt  a format string defining the menu items to be added to the\n *                 popup menu.\n * @return  an identifier of the menu just defined\n */\nlong defpup(UNUSED const char *menufmt, ...) {\n    //! @bug no return; function was stubbed\n#ifdef AVOID_UB\n   return 0;\n#endif\n}\n\n/**\n * Unused - called when the user picks an item from the \"Control Type\" menu.\n * Presumably, this would allow switching inputs between controller, keyboard,\n * and mouse.\n *\n * @param itemId  ID of the menu item that was clicked\n *                (1 = \"U-64 Analogue Joystick\", 2 = \"Keyboard\", 3 = \"Mouse\")\n */\nvoid menu_cb_control_type(UNUSED u32 itemId) {\n}\n\n/**\n * Unused - called when the user clicks the \"Re-Calibrate Controller\" item from\n * the \"Dynamics\" menu.\n */\nvoid menu_cb_recalibrate_controller(UNUSED u32 itemId) {\n}\n\n/* 252C08 -> 252C70 */\nvoid func_801A4438(f32 x, f32 y, f32 z) {\n    sTextDrawPos.x = x - (sActiveView->lowerRight.x / 2.0f);\n    sTextDrawPos.y = (sActiveView->lowerRight.y / 2.0f) - y;\n    sTextDrawPos.z = z;\n}\n\n/* 252C70 -> 252DB4 */\ns32 gd_gentexture(void *texture, s32 fmt, s32 size, UNUSED u32 arg3, UNUSED u32 arg4) {\n    UNUSED s32 sp2C;\n    UNUSED s32 sp28 = 1;\n    s32 dl; // 24\n\n    switch (fmt) {\n        case 29:\n            fmt = 0;\n            break;\n        case 31:\n            fmt = 3;\n            break;\n        default:\n            fatal_printf(\"gd_gentexture(): bad format\");\n    }\n\n    switch (size) {\n        case 33:\n            size = 2;\n            sp2C = 16;\n            break;\n        default:\n            fatal_printf(\"gd_gentexture(): bad size\");\n    }\n\n    sLoadedTextures[++sTextureCount] = texture;\n    dl = gd_startdisplist(7);\n\n    if (dl == 0) {\n        fatal_printf(\"Cant generate DL for texture\");\n    }\n    gd_enddlsplist_parent();\n    sTextureDisplayLists[sTextureCount] = dl;\n\n    return dl;\n}\n\n/**\n * Unused (not called)\n */\nvoid *load_texture_from_file(const char *file, s32 fmt, s32 size, u32 arg3, u32 arg4) {\n    struct GdFile *txFile; // 3c\n    void *texture;         // 38\n    u32 txSize;            // 34\n    u32 i;                 // 30\n    u16 *txHalf;           // 2C\n    u8 buf[3];             // 28\n    u8 alpha;              // 27\n    s32 dl;                // 20\n\n    txFile = gd_fopen(file, \"r\");\n    if (txFile == NULL) {\n        fatal_print(\"Cant load texture\");\n    }\n    txSize = gd_get_file_size(txFile);\n    texture = gd_malloc_perm(txSize / 3 * 2);\n    if (texture == NULL) {\n        fatal_printf(\"Cant allocate memory for texture\");\n    }\n    txHalf = (u16 *) texture;\n    for (i = 0; i < txSize / 3; i++) {\n        gd_fread((s8 *) buf, 3, 1, txFile);\n        alpha = 0xFF;\n        *txHalf = ((buf[2] >> 3) << 11) | ((buf[1] >> 3) << 6) | ((buf[0] >> 3) << 1) | (alpha >> 7);\n        txHalf++;\n    }\n    gd_printf(\"Loaded texture '%s' (%d bytes)\\n\", file, txSize);\n    gd_fclose(txFile);\n    dl = gd_gentexture(texture, fmt, size, arg3, arg4);\n    gd_printf(\"Generated '%s' (%d) display list ok.\\n\", file, dl);\n\n    return texture;\n}\n\n/* 252F88 -> 252FAC */\nvoid Unknown801A47B8(struct ObjView *v) {\n    if (v->flags & VIEW_SAVE_TO_GLOBAL) {\n        D_801BE994 = v;\n    }\n}\n\nvoid stub_renderer_7(void) {\n}\n\n/* 252FC4 -> 252FD8 */\nvoid stub_renderer_8(UNUSED u32 arg0) {\n}\n\n/**\n * Unused - called by func_801A520C and Unknown801A5344\n */\nvoid func_801A4808(void) {\n    while (D_801A8674 != 0) {\n        ;\n    }\n\n    return;\n}\n\n/* 253018 -> 253084 */\nvoid func_801A4848(s32 linkDl) {\n    struct GdDisplayList *curDl;\n\n    curDl = sCurrentGdDl;\n    sCurrentGdDl = sMHeadMainDls[gGdFrameBufNum];\n    branch_cur_dl_to_num(linkDl);\n    sCurrentGdDl = curDl;\n}\n\n/**\n * Unused - called by func_801A520C and Unknown801A5344\n */\nvoid stub_renderer_9(void) {\n}\n\n/* 253094 -> 2530A8 */\nvoid stub_renderer_10(UNUSED u32 arg0) {\n}\n\n/* 2530A8 -> 2530C0 */\nvoid stub_draw_label_text(UNUSED char *s) {\n    UNUSED u8 filler1[4];\n    UNUSED char *save = s;\n    UNUSED u8 filler2[24];\n}\n\n/* 2530C0 -> 2530D8; orig name: func_801A48F0 */\nvoid set_active_view(struct ObjView *v) {\n    sActiveView = v;\n}\n\nvoid stub_renderer_11(void) {\n}\n\n/**\n * Unused - called by func_801A520C\n */\nvoid func_801A4918(void) {\n    f32 x;     // c\n    f32 y;     // 8\n    u32 ydiff; // 4\n\n    if (sHandView == NULL || sMenuView == NULL) {\n        return;\n    }\n\n    x = sHandView->upperLeft.x;\n    y = sHandView->upperLeft.y;\n\n    if (!(x > sMenuView->upperLeft.x && x < sMenuView->upperLeft.x + sMenuView->lowerRight.x\n          && y > sMenuView->upperLeft.y && y < sMenuView->upperLeft.y + sMenuView->lowerRight.y)) {\n        return;\n    }\n    ydiff = (y - sMenuView->upperLeft.y) / 25.0f;\n\n    if (ydiff < sItemsInMenu) {\n        sMenuGadgets[ydiff]->drawFlags |= OBJ_HIGHLIGHTED;\n    }\n}\n\n/* 2532D4 -> 2533DC */\nvoid Unknown801A4B04(void) {\n    if (D_801A86AC != NULL) {\n        D_801A86AC->prevScaledTotal = 20.0f;\n    }\n    if (D_801A86A4 != NULL) {\n        D_801A86A4->prevScaledTotal = (f32)((sDLGenTime * 50.0f) + 20.0f);\n    }\n    if (D_801A86A8 != NULL) {\n        D_801A86A8->prevScaledTotal = (f32)((sDLGenTime * 50.0f) + 20.0f);\n    }\n    sDLGenTime = get_scaled_timer_total(\"dlgen\");\n    sRCPTime = get_scaled_timer_total(\"rcp\");\n    sDynamicsTime = get_scaled_timer_total(\"dynamics\");\n}\n\n/* 2533DC -> 253728; orig name: func_801A4C0C */\nvoid update_cursor(void) {\n    if (sHandView == NULL)\n        return;\n\n    if (gGdCtrl.currFrame - gGdCtrl.dragStartFrame < 300) {\n        sHandView->flags |= VIEW_UPDATE;\n        // by playing the sfx every frame, it will only play once as it\n        // never leaves the \"sfx played last frame\" buffer\n        gd_play_sfx(GD_SFX_HAND_APPEAR);\n    } else {\n        sHandView->flags &= ~VIEW_UPDATE;\n        gd_play_sfx(GD_SFX_HAND_DISAPPEAR);\n    }\n\n    sHandView->upperLeft.x = (f32) gGdCtrl.csrX;\n    sHandView->upperLeft.y = (f32) gGdCtrl.csrY;\n\n    // Make hand display list\n    begin_gddl(sHandShape->dlNums[gGdFrameBufNum]);\n    if (gGdCtrl.dragging) {\n        gd_put_sprite((u16 *) gd_texture_hand_closed, sHandView->upperLeft.x, sHandView->upperLeft.y, 0x20, 0x20);\n    } else {\n        gd_put_sprite((u16 *) gd_texture_hand_open, sHandView->upperLeft.x, sHandView->upperLeft.y, 0x20, 0x20);\n    }\n    gd_enddlsplist_parent();\n\n    if (sHandView->upperLeft.x < sHandView->parent->upperLeft.x) {\n        sHandView->upperLeft.x = sHandView->parent->upperLeft.x;\n    }\n    if (sHandView->upperLeft.x > (sHandView->parent->upperLeft.x + sHandView->parent->lowerRight.x)) {\n        sHandView->upperLeft.x = sHandView->parent->upperLeft.x + sHandView->parent->lowerRight.x;\n    }\n\n    if (sHandView->upperLeft.y < sHandView->parent->upperLeft.y) {\n        sHandView->upperLeft.y = sHandView->parent->upperLeft.y;\n    }\n    if (sHandView->upperLeft.y > (sHandView->parent->upperLeft.y + sHandView->parent->lowerRight.y)) {\n        sHandView->upperLeft.y = sHandView->parent->upperLeft.y + sHandView->parent->lowerRight.y;\n    }\n}\n\n/* 253728 -> 2538E0 */\nvoid Unknown801A4F58(void) {\n    register s16 *cbufOff; // a0\n    register s16 *cbufOn;  // a1\n    register u16 *zbuf;    // a2\n    register s16 colour;   // a3\n    register s16 r;        // t0\n    register s16 g;        // t1\n    register s16 b;        // t2\n    register s32 i;        // t3\n\n    cbufOff = sScreenView->colourBufs[gGdFrameBufNum ^ 1];\n    cbufOn = sScreenView->colourBufs[gGdFrameBufNum];\n    zbuf = sScreenView->zbuf;\n\n    for (i = 0; i < (320 * 240); i++) { // L801A4FCC\n        colour = cbufOff[i];\n        if (colour) {\n            r = (s16)(colour >> 11 & 0x1F);\n            g = (s16)(colour >> 6 & 0x1F);\n            b = (s16)(colour >> 1 & 0x1F);\n            if (--r < 0) {\n                r = 0;\n            }\n            if (--g < 0) {\n                g = 0;\n            }\n            if (--b < 0) {\n                b = 0;\n            }\n\n            colour = (s16)(r << 11 | g << 6 | b << 1);\n            cbufOff[i] = colour;\n            cbufOn[i] = colour;\n        } else { // L801A50D8\n            zbuf[i] = 0xFFFC;\n        }\n    }\n}\n\n/* 2538E0 -> 253938 */\nvoid Proc801A5110(struct ObjView *view) {\n    if (view->flags & VIEW_UPDATE) {\n        apply_to_obj_types_in_group(OBJ_TYPE_NETS, (applyproc_t) convert_net_verts, view->components);\n    }\n}\n\n/* 253938 -> 2539DC; orig name: func_801A5168 */\nvoid update_view_and_dl(struct ObjView *view) {\n    UNUSED u8 filler[4];\n    s32 prevFlags; // 18\n\n    prevFlags = view->flags;\n    update_view(view);\n    if (prevFlags & VIEW_UPDATE) {\n        sCurrentGdDl = sMHeadMainDls[gGdFrameBufNum];\n        if (view->gdDlNum != 0) {\n            func_801A4848(view->gdDlNum);\n        }\n    }\n}\n\n/**\n * Unused - called by __main__\n */\nvoid func_801A520C(void) {\n    UNUSED u8 filler[8];\n\n    start_timer(\"1frame\");\n    start_timer(\"cpu\");\n    stub_renderer_9();\n    reset_cur_dl_indices();\n    parse_p1_controller();\n    setup_timers();\n    start_timer(\"dlgen\");\n    apply_to_obj_types_in_group(OBJ_TYPE_VIEWS, (applyproc_t) update_view_and_dl, gGdViewsGroup);\n    stop_timer(\"dlgen\");\n    restart_timer(\"netupd\");\n    if (!gGdCtrl.newStartPress) {\n        apply_to_obj_types_in_group(OBJ_TYPE_VIEWS, (applyproc_t) Proc801A5110, gGdViewsGroup);\n    }\n    split_timer(\"netupd\");\n    split_timer(\"cpu\");\n    func_801A4808();\n    restart_timer(\"cpu\");\n    func_801A025C();\n    update_cursor();\n    func_801A4918();\n    stop_timer(\"1frame\");\n    sTracked1FrameTime = get_scaled_timer_total(\"1frame\");\n    split_timer(\"cpu\");\n    func_801A01EC();\n}\n\n/**\n * Unused\n */\nvoid Unknown801A5344(void) {\n    if ((sActiveView = sScreenView) == NULL) {\n        return;\n    }\n\n    reset_cur_dl_indices();\n    sScreenView->gdDlNum = gd_startdisplist(8);\n    start_view_dl(sScreenView);\n    gd_set_one_cycle();\n    gd_enddlsplist_parent();\n    func_801A4848(sScreenView->gdDlNum);\n    stub_renderer_9();\n    func_801A4808();\n    sScreenView->gdDlNum = 0;\n}\n\n/* 253BC8 -> 2540E0 */\nvoid gd_init(void) {\n    s32 i; // 34\n    UNUSED u8 filler[4];\n    s8 *data; // 2c\n\n    imin(\"gd_init\");\n    i = (u32)(sMemBlockPoolSize - DOUBLE_SIZE_ON_64_BIT(0x3E800));\n    data = gd_allocblock(i);\n    gd_add_mem_to_heap(i, data, 0x10);\n    sAlpha = (u16) 0xff;\n    D_801A867C = 0;\n    D_801A8680 = 0;\n    sTextureCount = 0;\n    gGdFrameBufNum = 0;\n    D_801A86BC = 1;\n    sItemsInMenu = 0;\n    sDebugViewsCount = 0;\n    sCurrDebugViewIndex = 0;\n    sGdDlCount = 0;\n    D_801A8674 = 0;\n    sLightId = 0;\n    sAmbScaleColour.r = 0.0f;\n    sAmbScaleColour.g = 0.0f;\n    sAmbScaleColour.b = 0.0f;\n\n    for (i = 0; i < ARRAY_COUNT(sLightScaleColours); i++) {\n        sLightScaleColours[i].r = 1.0f;\n        sLightScaleColours[i].g = 0.0f;\n        sLightScaleColours[i].b = 0.0f;\n        sLightDirections[i].x = 0;\n        sLightDirections[i].y = 120;\n        sLightDirections[i].z = 0;\n    }\n\n    sNumLights = NUMLIGHTS_2;\n    gd_set_identity_mat4(&sInitIdnMat4);\n    mat4_to_mtx(&sInitIdnMat4, &sIdnMtx);\n    remove_all_memtrackers();\n    null_obj_lists();\n    start_memtracker(\"total\");\n    remove_all_timers();\n\n    start_memtracker(\"Static DL\");\n    sStaticDl = new_gd_dl(0, 1900, 4000, 1, 300, 8);\n    stop_memtracker(\"Static DL\");\n\n    start_memtracker(\"Dynamic DLs\");\n    sDynamicMainDls[0] = new_gd_dl(1, 600, 10, 200, 10, 3);\n    sDynamicMainDls[1] = new_gd_dl(1, 600, 10, 200, 10, 3);\n    stop_memtracker(\"Dynamic DLs\");\n\n    sMHeadMainDls[0] = new_gd_dl(1, 100, 0, 0, 0, 0);\n    sMHeadMainDls[1] = new_gd_dl(1, 100, 0, 0, 0, 0);\n\n    for (i = 0; i < ARRAY_COUNT(sViewDls); i++) {\n        sViewDls[i][0] = create_child_gdl(1, sDynamicMainDls[0]);\n        sViewDls[i][1] = create_child_gdl(1, sDynamicMainDls[1]);\n    }\n\n    sScreenView =\n        make_view(\"screenview2\", (VIEW_2_COL_BUF | VIEW_UNK_1000 | VIEW_COLOUR_BUF | VIEW_Z_BUF), 0, 0,\n                  0, 320, 240, NULL);\n    sScreenView->colour.r = 0.0f;\n    sScreenView->colour.g = 0.0f;\n    sScreenView->colour.b = 0.0f;\n    sScreenView->parent = sScreenView;\n    sScreenView->flags &= ~VIEW_UPDATE;\n    sActiveView = sScreenView;\n\n    // Zero out controller inputs\n    data = (s8 *) &gGdCtrl;\n    for (i = 0; (u32) i < sizeof(struct GdControl); i++) {\n        *data++ = 0;\n    }\n\n    // 801A5868\n    gGdCtrl.unk88 = 1.0f;\n    gGdCtrl.unkA0 = -45.0f;\n    gGdCtrl.unkAC = 45.0f;\n    gGdCtrl.unk00 = 2;\n    gGdCtrl.newStartPress = FALSE;\n    gGdCtrl.prevFrame = &gGdCtrlPrev;\n    gGdCtrl.csrX = 160;\n    gGdCtrl.csrY = 120;\n    gGdCtrl.dragStartFrame = -1000;\n    unusedDl801BB0AC = create_mtl_gddl(4);\n    imout();\n}\n\n/**\n * Unused - reverses the characters in `str`.\n */\nvoid reverse_string(char *str, s32 len) {\n    char buf[100];\n    s32 i;\n\n    for (i = 0; i < len; i++) {\n        buf[i] = str[len - i - 1];\n    }\n\n    for (i = 0; i < len; i++) {\n        str[i] = buf[i];\n    }\n}\n\n/* 254168 -> 25417C */\nvoid stub_renderer_12(UNUSED s8 *arg0) {\n}\n\n/* 25417C -> 254190 */\nvoid stub_renderer_13(UNUSED void *arg0) {\n}\n\n/* 254190 -> 2541A4 */\nvoid stub_renderer_14(UNUSED s8 *arg0) {\n}\n\n/**\n * Initializes the pick buffer. This functions like the `pick` or `gselect`\n * functions from IRIS GL.\n * @param buf  pointer to an array of 16-bit values\n * @param len  maximum number of values to store\n */\nvoid init_pick_buf(s16 *buf, s32 len) {\n    buf[0] = 0;\n    buf[1] = 0;\n    sPickBufLen = len;\n    sPickBuf = buf;\n    sPickBufPosition = 0;\n}\n\n/**\n * Stores a 16-bit value into the pick buffer. This functions like the\n * `pushname` function from IRIS GL.\n */\nvoid store_in_pickbuf(s16 data) {\n    sPickBuf[sPickBufPosition++] = data;\n}\n\n/* 25421C -> 254250; orig name: func_801A5A4C\n** Divides by 3, since in the final game, only thing stored\n** in the pick buf is a tupple of three halves: (datasize, objtype, objnumber)\n** (datasize is always 2) */\ns32 get_cur_pickbuf_offset(UNUSED s16 *arg0) {\n    return sPickBufPosition / 3;\n}\n\n/* 254250 -> 254264 */\nvoid stub_renderer_15(UNUSED u32 arg0) {\n}\n\n/* 254264 -> 254278 */\nvoid stub_renderer_16(UNUSED u32 arg0) {\n}\n\n/* 254278 -> 254288 */\nvoid stub_renderer_17(void) {\n}\n\n/* 254288 -> 2542B0 */\nvoid *Unknown801A5AB8(s32 texnum) {\n    return sLoadedTextures[texnum];\n}\n\n/* 2542B0 -> 254328 */\nvoid Unknown801A5AE0(s32 arg0) {\n    D_801BB018 = arg0;\n    if (D_801BB01C != D_801BB018) {\n        branch_cur_dl_to_num(sTextureDisplayLists[arg0]);\n        D_801BB01C = D_801BB018;\n    }\n}\n\n/* 254328 -> 2543B8; orig name: func_801A5B58 */\nvoid set_vtx_tc_buf(f32 tcS, f32 tcT) {\n    sVtxCvrtTCBuf[0] = (s16)(tcS * 512.0f);\n    sVtxCvrtTCBuf[1] = (s16)(tcT * 512.0f);\n}\n\n/* 2543B8 -> 2543F4 */\nvoid add_debug_view(struct ObjView *view) {\n    sDebugViews[sDebugViewsCount++] = view;\n}\n\n/* 2543F4 -> 254450; orig name: Unknown801A5C24 */\nunion ObjVarVal *cvrt_val_to_kb(union ObjVarVal *dst, union ObjVarVal src) {\n    union ObjVarVal temp;\n\n    temp.f = src.f / 1024.0; //? 1024.0f\n    return (*dst = temp, dst);\n}\n\n/* 254450 -> 254560 */\nvoid Unknown801A5C80(struct ObjGroup *parentGroup) {\n    struct ObjLabel *label;      // 3c\n    struct ObjGroup *debugGroup; // 38\n\n    d_start_group(\"debugg\");\n    label = (struct ObjLabel *) d_makeobj(D_LABEL, 0);\n    d_set_rel_pos(10.0f, 230.0f, 0.0f);\n    d_set_parm_ptr(PARM_PTR_CHAR, gd_strdup(\"FT %2.2f\"));\n    d_add_valptr(NULL, 0, OBJ_VALUE_FLOAT, (uintptr_t) &sTracked1FrameTime);\n    label->unk30 = 3;\n    d_end_group(\"debugg\");\n\n    debugGroup = (struct ObjGroup *) d_use_obj(\"debugg\");\n    make_view(\"debugview\", (VIEW_2_COL_BUF | VIEW_ALLOC_ZBUF | VIEW_1_CYCLE | VIEW_DRAW), 2, 0, 0, 320,\n              240, debugGroup);\n\n    if (parentGroup != NULL) {\n        addto_group(parentGroup, &debugGroup->header);\n    }\n}\n\n/* 254560 -> 2547C8 */\nvoid Unknown801A5D90(struct ObjGroup *arg0) {\n    struct ObjLabel *mtLabel;  // 254\n    struct ObjGroup *labelgrp; // 250\n    struct ObjView *memview;   // 24c\n    s32 trackerNum;                 // memtracker id and/or i\n    s32 sp244;                 // label y position?\n    s32 sp240;                 // done checking all memtrakcers\n    s32 sp23C;                 // memtracker label made?\n    char mtStatsFmt[0x100];    // 13c\n    char groupId[0x100];       // 3c\n    struct MemTracker *mt;     // 38\n\n    sp240 = FALSE;\n    trackerNum = -1;\n\n    while (!sp240) {\n        sprintf(groupId, \"memg%d\\n\", trackerNum);\n        d_start_group(AsDynName(groupId));\n        sp244 = 20;\n        sp23C = FALSE;\n\n        for (;;) {\n            trackerNum++;\n            mt = get_memtracker_by_index(trackerNum);\n\n            if (mt->name != NULL) {\n                sprintf(mtStatsFmt, \"%s  %%6.2fk\", mt->name);\n                mtLabel = (struct ObjLabel *) d_makeobj(D_LABEL, AsDynName(0));\n                d_set_rel_pos(10.0f, sp244, 0.0f);\n                d_set_parm_ptr(PARM_PTR_CHAR, gd_strdup(mtStatsFmt));\n                d_add_valptr(NULL, 0, OBJ_VALUE_FLOAT, (uintptr_t) &mt->total);\n                mtLabel->unk30 = 3;\n                d_add_valproc(cvrt_val_to_kb);\n                sp23C = TRUE;\n                sp244 += 14;\n                if (sp244 > 200) {\n                    break;\n                }\n            }\n\n            if (trackerNum >= GD_NUM_MEM_TRACKERS) {\n                sp240 = TRUE;\n                break;\n            }\n        }\n\n        d_end_group(AsDynName(groupId));\n        labelgrp = (struct ObjGroup *) d_use_obj(AsDynName(groupId));\n\n        if (sp23C) {\n            memview = make_view(\"memview\",\n                                (VIEW_2_COL_BUF | VIEW_ALLOC_ZBUF | VIEW_UNK_2000 | VIEW_UNK_4000\n                                 | VIEW_1_CYCLE | VIEW_DRAW),\n                                2, 0, 10, 320, 200, labelgrp);\n            memview->colour.r = 0.0f;\n            memview->colour.g = 0.0f;\n            memview->colour.b = 0.0f;\n            addto_group(arg0, &labelgrp->header);\n            memview->flags &= ~VIEW_UPDATE;\n            add_debug_view(memview);\n        }\n    }\n}\n\n/* 2547C8 -> 254AC0 */\nvoid Unknown801A5FF8(struct ObjGroup *arg0) {\n    struct ObjView *menuview;      // 3c\n    UNUSED struct ObjLabel *label; // 38\n    struct ObjGroup *menugrp;      // 34\n    UNUSED u8 filler[8];\n\n    d_start_group(\"menug\");\n    sMenuGadgets[0] = d_makeobj(D_GADGET, \"menu0\");\n    d_set_obj_draw_flag(OBJ_IS_GRABBABLE);\n    d_set_world_pos(5.0f, 0.0f, 0.0f);\n    d_set_scale(100.0f, 20.0f, 0.0f);\n    d_set_type(6);\n    d_set_colour_num(2);\n    label = (struct ObjLabel *) d_makeobj(D_LABEL, AsDynName(0));\n    d_set_rel_pos(5.0f, 18.0f, 0.0f);\n    d_set_parm_ptr(PARM_PTR_CHAR, \"ITEM 1\");\n    d_add_valptr(\"menu0\", 0x40000, 0, (uintptr_t) NULL);\n\n    sMenuGadgets[1] = d_makeobj(D_GADGET, \"menu1\");\n    d_set_obj_draw_flag(OBJ_IS_GRABBABLE);\n    d_set_world_pos(5.0f, 25.0f, 0.0f);\n    d_set_scale(100.0f, 20.0f, 0.0f);\n    d_set_type(6);\n    d_set_colour_num(4);\n    label = (struct ObjLabel *) d_makeobj(D_LABEL, AsDynName(0));\n    d_set_rel_pos(5.0f, 18.0f, 0.0f);\n    d_set_parm_ptr(PARM_PTR_CHAR, \"ITEM 2\");\n    d_add_valptr(\"menu1\", 0x40000, 0, (uintptr_t) NULL);\n\n    sMenuGadgets[2] = d_makeobj(D_GADGET, \"menu2\");\n    d_set_obj_draw_flag(OBJ_IS_GRABBABLE);\n    d_set_world_pos(5.0f, 50.0f, 0.0f);\n    d_set_scale(100.0f, 20.0f, 0.0f);\n    d_set_type(6);\n    d_set_colour_num(3);\n    label = (struct ObjLabel *) d_makeobj(D_LABEL, AsDynName(0));\n    d_set_rel_pos(5.0f, 18.0f, 0.0f);\n    d_set_parm_ptr(PARM_PTR_CHAR, \"ITEM 3\");\n    d_add_valptr(\"menu2\", 0x40000, 0, (uintptr_t) NULL);\n    sItemsInMenu = 3;\n    d_end_group(\"menug\");\n\n    menugrp = (struct ObjGroup *) d_use_obj(\"menug\");\n    menuview = make_view(\n        \"menuview\", (VIEW_2_COL_BUF | VIEW_ALLOC_ZBUF | VIEW_BORDERED | VIEW_UNK_2000 | VIEW_UNK_4000),\n        2, 100, 20, 110, 150, menugrp);\n    menuview->colour.r = 0.0f;\n    menuview->colour.g = 0.0f;\n    menuview->colour.b = 0.0f;\n    addto_group(arg0, &menugrp->header);\n    sMenuView = menuview;\n}\n\n/* 254AC0 -> 254DFC; orig name: PutSprite */\nvoid gd_put_sprite(u16 *sprite, s32 x, s32 y, s32 wx, s32 wy) {\n    s32 c; // 5c\n    s32 r; // 58\n\n    gSPDisplayList(next_gfx(), osVirtualToPhysical(gd_dl_sprite_start_tex_block));\n    for (r = 0; r < wy; r += 32) {\n        for (c = 0; c < wx; c += 32) {\n             gDPLoadTextureBlock(next_gfx(), (r * 32) + sprite + c, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0,\n                G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD)\n             gSPTextureRectangle(next_gfx(), x << 2, (y + r) << 2, (x + 32) << 2, (y + r + 32) << 2,\n                G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);\n        }\n    }\n\n    gDPPipeSync(next_gfx());\n    gDPSetCycleType(next_gfx(), G_CYC_1CYCLE);\n    gDPSetRenderMode(next_gfx(), G_RM_AA_ZB_OPA_INTER, G_RM_NOOP2);\n    gSPTexture(next_gfx(), 0x8000, 0x8000, 0, G_TX_RENDERTILE, G_OFF);\n}\n\n/* 254DFC -> 254F94; orig name: proc_dyn_list */\nvoid gd_setup_cursor(struct ObjGroup *parentgrp) {\n    struct ObjView *mouseview; // 34\n    struct ObjGroup *mousegrp; // 30\n    UNUSED struct ObjNet *net; // 2c\n\n    sHandShape = make_shape(0, \"mouse\");\n    sHandShape->dlNums[0] = gd_startdisplist(7);\n    gd_put_sprite((u16 *) gd_texture_hand_open, 100, 100, 32, 32);\n    gd_enddlsplist_parent();\n    sHandShape->dlNums[1] = gd_startdisplist(7);\n    gd_put_sprite((u16 *) gd_texture_hand_open, 100, 100, 32, 32);\n    gd_enddlsplist_parent();\n\n    d_start_group(\"mouseg\");\n    net = (struct ObjNet *) d_makeobj(D_NET, AsDynName(0));\n    d_set_init_pos(0.0f, 0.0f, 0.0f);\n    d_set_type(3);\n    d_set_shapeptrptr(&sHandShape);\n    d_end_group(\"mouseg\");\n\n    mousegrp = (struct ObjGroup *) d_use_obj(\"mouseg\");\n    mouseview = make_view(\"mouseview\",\n                          (VIEW_2_COL_BUF | VIEW_ALLOC_ZBUF | VIEW_1_CYCLE | VIEW_MOVEMENT | VIEW_DRAW),\n                          2, 0, 0, 32, 32, mousegrp);\n    mouseview->flags &= ~VIEW_UPDATE;\n    sHandView = mouseview;\n    if (parentgrp != NULL) {\n        addto_group(parentgrp, &mousegrp->header);\n    }\n}\n\n/**\n * 254F94 -> 254FE4; orig name: Proc801A67C4\n * This prints all timers if the view was not updated for a frame\n **/\nvoid view_proc_print_timers(struct ObjView *self) {\n    if (self->flags & VIEW_WAS_UPDATED) {\n        return;\n    }\n\n    print_all_timers();\n}\n\n/* 254FE4 -> 255600; not called; orig name: Unknown801A6814 */\nvoid make_timer_gadgets(void) {\n    struct ObjLabel *timerLabel;\n    struct ObjGroup *timerg;\n    UNUSED u8 filler[4];\n    struct ObjView *timersview;\n    struct ObjGadget *bar1;\n    struct ObjGadget *bar2;\n    struct ObjGadget *bar3;\n    struct ObjGadget *bar4;\n    struct ObjGadget *bar5;\n    struct ObjGadget *bar6;\n    struct GdTimer *timer;\n    s32 i;\n    char timerNameBuf[0x20];\n\n    d_start_group(\"timerg\");\n    d_makeobj(D_GADGET, \"bar1\");\n    d_set_obj_draw_flag(OBJ_IS_GRABBABLE);\n    d_set_world_pos(20.0f, 5.0f, 0.0f);\n    d_set_scale(50.0f, 5.0f, 0.0f);\n    d_set_type(4);\n    d_set_parm_f(PARM_F_RANGE_MIN, 0);\n    d_set_parm_f(PARM_F_RANGE_MAX, sTimeScaleFactor);\n    d_add_valptr(NULL, 0, OBJ_VALUE_FLOAT, (uintptr_t) &sTimeScaleFactor);\n    bar1 = (struct ObjGadget *) d_use_obj(\"bar1\");\n    bar1->colourNum = COLOUR_WHITE;\n\n    d_makeobj(D_GADGET, \"bar2\");\n    d_set_obj_draw_flag(OBJ_IS_GRABBABLE);\n    d_set_world_pos(70.0f, 5.0f, 0.0f);\n    d_set_scale(50.0f, 5.0f, 0.0f);\n    d_set_type(4);\n    d_set_parm_f(PARM_F_RANGE_MIN, 0);\n    d_set_parm_f(PARM_F_RANGE_MAX, sTimeScaleFactor);\n    d_add_valptr(NULL, 0, OBJ_VALUE_FLOAT, (uintptr_t) &sTimeScaleFactor);\n    bar2 = (struct ObjGadget *) d_use_obj(\"bar2\");\n    bar2->colourNum = COLOUR_PINK;\n\n    d_makeobj(D_GADGET, \"bar3\");\n    d_set_obj_draw_flag(OBJ_IS_GRABBABLE);\n    d_set_world_pos(120.0f, 5.0f, 0.0f);\n    d_set_scale(50.0f, 5.0f, 0.0f);\n    d_set_type(4);\n    d_set_parm_f(PARM_F_RANGE_MIN, 0);\n    d_set_parm_f(PARM_F_RANGE_MAX, sTimeScaleFactor);\n    d_add_valptr(NULL, 0, OBJ_VALUE_FLOAT, (uintptr_t) &sTimeScaleFactor);\n    bar3 = (struct ObjGadget *) d_use_obj(\"bar3\");\n    bar3->colourNum = COLOUR_WHITE;\n\n    d_makeobj(D_GADGET, \"bar4\");\n    d_set_obj_draw_flag(OBJ_IS_GRABBABLE);\n    d_set_world_pos(170.0f, 5.0f, 0.0f);\n    d_set_scale(50.0f, 5.0f, 0.0f);\n    d_set_type(4);\n    d_set_parm_f(PARM_F_RANGE_MIN, 0);\n    d_set_parm_f(PARM_F_RANGE_MAX, sTimeScaleFactor);\n    d_add_valptr(NULL, 0, OBJ_VALUE_FLOAT, (uintptr_t) &sTimeScaleFactor);\n    bar4 = (struct ObjGadget *) d_use_obj(\"bar4\");\n    bar4->colourNum = COLOUR_PINK;\n\n    d_makeobj(D_GADGET, \"bar5\");\n    d_set_obj_draw_flag(OBJ_IS_GRABBABLE);\n    d_set_world_pos(220.0f, 5.0f, 0.0f);\n    d_set_scale(50.0f, 5.0f, 0.0f);\n    d_set_type(4);\n    d_set_parm_f(PARM_F_RANGE_MIN, 0);\n    d_set_parm_f(PARM_F_RANGE_MAX, sTimeScaleFactor);\n    d_add_valptr(NULL, 0, OBJ_VALUE_FLOAT, (uintptr_t) &sTimeScaleFactor);\n    bar5 = (struct ObjGadget *) d_use_obj(\"bar5\");\n    bar5->colourNum = COLOUR_WHITE;\n\n    d_makeobj(D_GADGET, \"bar6\");\n    d_set_obj_draw_flag(OBJ_IS_GRABBABLE);\n    d_set_world_pos(270.0f, 5.0f, 0.0f);\n    d_set_scale(50.0f, 5.0f, 0.0f);\n    d_set_type(4);\n    d_set_parm_f(PARM_F_RANGE_MIN, 0);\n    d_set_parm_f(PARM_F_RANGE_MAX, sTimeScaleFactor);\n    d_add_valptr(NULL, 0, OBJ_VALUE_FLOAT, (uintptr_t) &sTimeScaleFactor);\n    bar6 = (struct ObjGadget *) d_use_obj(\"bar6\");\n    bar6->colourNum = COLOUR_PINK;\n\n    for (i = 0; i < GD_NUM_TIMERS; i++) {\n        sprintf(timerNameBuf, \"tim%d\\n\", i);\n\n        timer = get_timernum(i);\n\n        d_makeobj(D_GADGET, timerNameBuf);\n        d_set_obj_draw_flag(OBJ_IS_GRABBABLE);\n        d_set_world_pos(20.0f, (f32)((i * 15) + 15), 0.0f);\n        d_set_scale(50.0f, 14.0f, 0);\n        d_set_type(4);\n        d_set_parm_f(PARM_F_RANGE_MIN, 0.0f);\n        d_set_parm_f(PARM_F_RANGE_MAX, 1.0f);\n        d_add_valptr(NULL, 0, OBJ_VALUE_FLOAT, (uintptr_t) &timer->prevScaledTotal);\n        sTimerGadgets[i] = (struct ObjGadget *) d_use_obj(timerNameBuf);\n        sTimerGadgets[i]->colourNum = timer->gadgetColourNum;\n\n        timerLabel = (struct ObjLabel *) d_makeobj(D_LABEL, AsDynName(0));\n        d_set_rel_pos(5.0f, 14.0f, 0);\n        d_set_parm_ptr(PARM_PTR_CHAR, (void *) timer->name);\n        d_add_valptr(timerNameBuf, 0x40000, 0, (uintptr_t) NULL);\n        timerLabel->unk30 = 3;\n    }\n\n    d_end_group(\"timerg\");\n    timerg = (struct ObjGroup *) d_use_obj(\"timerg\");\n    timersview = make_view(\n        \"timersview\", (VIEW_2_COL_BUF | VIEW_ALLOC_ZBUF | VIEW_1_CYCLE | VIEW_MOVEMENT | VIEW_DRAW), 2,\n        0, 10, 320, 270, timerg);\n    timersview->colour.r = 0.0f;\n    timersview->colour.g = 0.0f;\n    timersview->colour.b = 0.0f;\n    timersview->flags &= ~VIEW_UPDATE;\n    timersview->proc = view_proc_print_timers;\n    add_debug_view(timersview);\n\n    return;\n}\n\n/* 255600 -> 255614 */\nvoid stub_renderer_18(UNUSED u32 a0) {\n}\n\n/* 255614 -> 255628 */\nvoid stub_renderer_19(UNUSED u32 a0) {\n}\n\n#ifndef NO_SEGMENTED_MEMORY\n/**\n * Copies `size` bytes of data from ROM address `romAddr` to RAM address `vAddr`.\n */\nstatic void gd_block_dma(u32 romAddr, void *vAddr, s32 size) {\n    s32 blockSize;\n\n    do {\n        if ((blockSize = size) > 0x1000) {\n            blockSize = 0x1000;\n        }\n\n        osPiStartDma(&sGdDMAReqMesg, OS_MESG_PRI_NORMAL, OS_READ, romAddr, vAddr, blockSize, &sGdDMAQueue);\n        osRecvMesg(&sGdDMAQueue, &sGdDMACompleteMsg, OS_MESG_BLOCK);\n        romAddr += blockSize;\n        vAddr = (void *) ((uintptr_t) vAddr + blockSize);\n        size -= 0x1000;\n    } while (size > 0);\n}\n\n/**\n * Loads the specified DynList from ROM and processes it.\n */\nstruct GdObj *load_dynlist(struct DynList *dynlist) {\n    u32 segSize;\n    u8 *allocSegSpace;\n    void *allocPtr;\n    uintptr_t dynlistSegStart;\n    uintptr_t dynlistSegEnd;\n    s32 i;\n    s32 tlbEntries;\n    struct GdObj *loadedList;\n\n    i = -1;\n\n    // Make sure the dynlist exists\n    while (sDynLists[++i].list != NULL) {\n        if (sDynLists[i].list == dynlist) {\n            break;\n        }\n    }\n    if (sDynLists[i].list == NULL) {\n        fatal_printf(\"load_dynlist() ptr not found in any banks\");\n    }\n\n    switch (sDynLists[i].flag) {\n        case STD_LIST_BANK:\n            dynlistSegStart = (uintptr_t) _gd_dynlistsSegmentRomStart;\n            dynlistSegEnd = (uintptr_t) _gd_dynlistsSegmentRomEnd;\n            break;\n        default:\n            fatal_printf(\"load_dynlist() unkown bank\");\n    }\n\n#define PAGE_SIZE 65536  // size of a 64K TLB page\n\n    segSize = dynlistSegEnd - dynlistSegStart;\n    allocSegSpace = gd_malloc_temp(segSize + PAGE_SIZE);\n\n    if ((allocPtr = (void *) allocSegSpace) == NULL) {\n        fatal_printf(\"Not enough DRAM for DATA segment \\n\");\n    }\n\n    allocSegSpace = (u8 *) (((uintptr_t) allocSegSpace + PAGE_SIZE) & 0xFFFF0000);\n\n    // Copy the dynlist data from ROM\n    gd_block_dma(dynlistSegStart, (void *) allocSegSpace, segSize);\n\n    osUnmapTLBAll();\n\n    tlbEntries = (segSize / PAGE_SIZE) / 2 + 1;\n    if (tlbEntries >= 31) {\n        fatal_printf(\"load_dynlist() too many TLBs\");\n    }\n\n    // Map virtual address 0x04000000 to `allocSegSpace`\n    for (i = 0; i < tlbEntries; i++) {\n        osMapTLB(i, OS_PM_64K,\n            (void *) (uintptr_t) (0x04000000 + (i * 2 * PAGE_SIZE)),  // virtual address to map\n            GD_LOWER_24(((uintptr_t) allocSegSpace) + (i * 2 * PAGE_SIZE) + 0),  // even page address\n            GD_LOWER_24(((uintptr_t) allocSegSpace) + (i * 2 * PAGE_SIZE) + PAGE_SIZE),  // odd page address\n            -1);\n    }\n\n#undef PAGE_SIZE\n\n    // process the dynlist\n    loadedList = proc_dynlist(dynlist);\n\n    gd_free(allocPtr);\n    osUnmapTLBAll();\n\n    return loadedList;\n}\n#else\nstruct GdObj *load_dynlist(struct DynList *dynlist) {\n    return proc_dynlist(dynlist);\n}\n#endif\n\n/**\n * Unused (not called)\n */\nvoid stub_renderer_20(UNUSED u32 a0) {\n}\n\n/**\n * Unused (not called)\n */\nvoid func_801A71CC(struct ObjNet *net) {\n    s32 i; // spB4\n    s32 j; // spB0\n    f32 spAC;\n    f32 spA8;\n    struct GdBoundingBox bbox;\n    UNUSED u8 filler1[4];\n    struct ObjZone *sp88;\n    register struct ListNode *link;  // s0 (84)\n    s32 sp80;                     // linked planes contained in zone?\n    s32 sp7C;                     // linked planes in net count?\n    register struct ListNode *link1; // s1 (78)\n    register struct ListNode *link2; // s2 (74)\n    register struct ListNode *link3; // s3 (70)\n    struct GdVec3f sp64;\n    UNUSED u8 filler2[4];\n    struct ObjPlane *plane; // 5c\n    UNUSED u8 filler3[4];\n    struct ObjZone *linkedZone; // 54\n    UNUSED u8 filler4[4];\n    struct ObjPlane *planeL2; // 4c\n    UNUSED u8 filler5[4];\n    struct ObjPlane *planeL3; // 44\n\n    if (net->unk21C == NULL) {\n        net->unk21C = make_group(0);\n    }\n\n    gd_print_bounding_box(\"making zones for net=\", &net->boundingBox);\n\n    sp64.x = (ABS(net->boundingBox.minX) + ABS(net->boundingBox.maxX)) / 16.0f;\n    sp64.z = (ABS(net->boundingBox.minZ) + ABS(net->boundingBox.maxZ)) / 16.0f;\n\n    spA8 = net->boundingBox.minZ + sp64.z / 2.0f;\n\n    for (i = 0; i < 16; i++) {\n        spAC = net->boundingBox.minX + sp64.x / 2.0f;\n\n        for (j = 0; j < 16; j++) {\n            bbox.minX = spAC - (sp64.x / 2.0f);\n            bbox.minY = 0.0f;\n            bbox.minZ = spA8 - (sp64.z / 2.0f);\n\n            bbox.maxX = spAC + (sp64.x / 2.0f);\n            bbox.maxY = 0.0f;\n            bbox.maxZ = spA8 + (sp64.z / 2.0f);\n\n            sp88 = make_zone(NULL, &bbox, NULL);\n            addto_group(net->unk21C, &sp88->header);\n            sp88->unk2C = make_group(0);\n\n            spAC += sp64.x;\n        }\n        spA8 += sp64.z;\n    }\n\n    for (link = net->unk1CC->firstMember; link != NULL; link = link->next) {\n        plane = (struct ObjPlane *) link->obj;\n        plane->unk18 = FALSE;\n    }\n\n    i = 0; // acts as Zone N here... kinda\n    for (link1 = net->unk21C->firstMember; link1 != NULL; link1 = link1->next) {\n        linkedZone = (struct ObjZone *) link1->obj;\n        sp88 = linkedZone;\n        sp7C = 0;\n        sp80 = 0;\n\n        for (link2 = net->unk1CC->firstMember; link2 != NULL; link2 = link2->next) {\n            planeL2 = (struct ObjPlane *) link2->obj;\n            sp7C++;\n            if (gd_plane_point_within(&planeL2->boundingBox, &sp88->boundingBox)) {\n                planeL2->unk18 = TRUE;\n                addto_group(sp88->unk2C, &planeL2->header);\n                sp80++;\n            }\n        }\n\n        if (sp80 == 0) {\n            stub_objects_1(net->unk21C, &linkedZone->header); // stubbed fatal function?\n        } else {\n            gd_printf(\"%d/%d planes in zone %d\\n\", sp80, sp7C, i++);\n        }\n    }\n\n    for (link3 = net->unk1CC->firstMember; link3 != NULL; link3 = link3->next) {\n        planeL3 = (struct ObjPlane *) link3->obj;\n\n        if (!planeL3->unk18) {\n            gd_print_bounding_box(\"plane=\", &planeL3->boundingBox);\n            fatal_printf(\"plane not in any zones\\n\");\n        }\n    }\n}\n\n/* 255EB0 -> 255EC0 */\nvoid stub_renderer_21(void) {\n}\n"
  },
  {
    "path": "src/goddard/renderer.h",
    "content": "#ifndef GD_RENDERER_H\n#define GD_RENDERER_H\n\n#include <PR/ultratypes.h>\n#include <PR/os_cont.h>\n\n#include \"gd_types.h\"\n#include \"macros.h\"\n\n// types\n/// Properties types used in [gd_setproperty](@ref gd_setproperty); most are stubbed out.\nenum GdProperty {\n    GD_PROP_OVERLAY       = 4,\n    GD_PROP_LIGHTING      = 11,\n    GD_PROP_AMB_COLOUR    = 12,\n    GD_PROP_DIFUSE_COLOUR = 13,\n    GD_PROP_LIGHT_DIR     = 15,\n    GD_PROP_CULLING       = 16,\n    GD_PROP_STUB17        = 17,\n    GD_PROP_STUB18        = 18,\n    GD_PROP_STUB19        = 19,\n    GD_PROP_STUB20        = 20,\n    GD_PROP_STUB21        = 21,\n    GD_PROP_ZBUF_FN       = 22\n};\n\nenum GdSceneId {\n    GD_SCENE_YOSHI,  // create yoshi?\n    GD_SCENE_YOSHI1,  // destroy yoshi?\n    GD_SCENE_REGULAR_MARIO,\n    GD_SCENE_DIZZY_MARIO,\n    GD_SCENE_CAR,   // create car?\n    GD_SCENE_CAR5  // destroy car?\n};\n\n// data\nextern s32 gGdFrameBufNum;\n\n// functions\nu32 get_alloc_mem_amt(void);\ns32 gd_get_ostime(void);\nf32 get_time_scale(void);\nf64 gd_sin_d(f64 x);\nf64 gd_cos_d(f64 x);\nf64 gd_sqrt_d(f64 x);\nvoid gd_printf(const char *format, ...);\nvoid gd_exit(UNUSED s32 code) NORETURN;\nvoid gd_free(void *ptr);\nvoid *gd_allocblock(u32 size);\nvoid *gd_malloc(u32 size, u8 perm);\nvoid *gd_malloc_perm(u32 size);\nvoid *gd_malloc_temp(u32 size);\nvoid draw_indexed_dl(s32 dlNum, s32 gfxIdx);\nvoid gd_add_to_heap(void *addr, u32 size);\nvoid gdm_init(void *blockpool, u32 size);\nvoid gdm_setup(void);\nvoid gdm_maketestdl(s32 id);\nvoid gd_vblank(void);\nvoid gd_copy_p1_contpad(OSContPad *p1cont);\ns32 gd_sfx_to_play(void);\nGfx *gdm_gettestdl(s32 id);\nvoid gd_draw_rect(f32 ulx, f32 uly, f32 lrx, f32 lry);\nvoid gd_draw_border_rect(f32 ulx, f32 uly, f32 lrx, f32 lry);\nvoid gd_dl_set_fill(struct GdColour *colour);\nvoid stash_current_gddl(void);\nvoid pop_gddl_stash(void);\ns32 gd_startdisplist(s32 memarea);\ns32 gd_enddlsplist_parent(void);\nvoid gd_dl_load_matrix(Mat4f *mtx);\nvoid gd_dl_push_matrix(void);\nvoid gd_dl_pop_matrix(void);\nvoid gd_dl_mul_trans_matrix(f32 x, f32 y, f32 z);\nvoid gd_dl_load_trans_matrix(f32 x, f32 y, f32 z);\nvoid gd_dl_scale(f32 x, f32 y, f32 z);\nvoid func_8019F2C4(f32 arg0, s8 arg1);\nvoid gd_dl_lookat(struct ObjCamera *cam, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, f32 arg7);\nvoid check_tri_display(s32 vtxcount);\nVtx *gd_dl_make_vertex(f32 x, f32 y, f32 z, f32 alpha);\nvoid func_8019FEF0(void);\nvoid gd_dl_make_triangle(f32 x1, f32 y1, f32 z1, f32 x2, f32 y2, f32 z2, f32 x3, f32 y3, f32 z3);\nvoid func_801A0038(void);\nvoid gd_dl_flush_vertices(void);\nvoid set_render_alpha(f32 arg0);\nvoid set_light_id(s32 index);\nvoid set_light_num(s32 n);\ns32 create_mtl_gddl(s32 mtlType);\nvoid branch_to_gddl(s32 dlNum);\nvoid gd_dl_hilite(s32, struct ObjCamera *, struct GdVec3f *, struct GdVec3f *, struct GdVec3f *, struct GdColour *);\nvoid gd_dl_hilite(s32 idx, struct ObjCamera *cam, UNUSED struct GdVec3f *arg2, UNUSED struct GdVec3f *arg3,\n                   struct GdVec3f *arg4, struct GdColour *colour);\ns32 gd_dl_material_lighting(s32 id, struct GdColour *colour, s32 material);\nvoid set_Vtx_norm_buf_1(struct GdVec3f *norm);\nvoid set_Vtx_norm_buf_2(struct GdVec3f *norm);\nvoid set_gd_mtx_parameters(s32 params);\nvoid gd_set_one_cycle(void);\nvoid gddl_is_loading_stub_dl(UNUSED s32 dlLoad);\nvoid start_view_dl(struct ObjView *view);\nvoid border_active_view(void);\nvoid gd_shading(s32 model);\ns32 gd_getproperty(s32 prop, UNUSED void *arg1);\nvoid gd_setproperty(enum GdProperty prop, f32 f1, f32 f2, f32 f3);\nvoid gd_create_ortho_matrix(f32 l, f32 r, f32 b, f32 t, f32 n, f32 f);\nvoid gd_create_perspective_matrix(f32 fovy, f32 aspect, f32 near, f32 far);\ns32 setup_view_buffers(const char *name, struct ObjView *view, UNUSED s32 ulx, UNUSED s32 uly,\n                       UNUSED s32 lrx, UNUSED s32 lry);\nvoid gd_init_controllers(void);\nvoid stub_renderer_6(struct GdObj *obj); //apply to OBJ_TYPE_VIEWS\nlong defpup(UNUSED const char *menufmt, ...);\nvoid menu_cb_control_type(u32);\nvoid menu_cb_recalibrate_controller(u32);\nvoid func_801A4438(f32 x, f32 y, f32 z);\nvoid stub_renderer_10(u32 arg0);\nvoid stub_draw_label_text(UNUSED char *s);\nvoid set_active_view(struct ObjView *v);\nvoid func_801A520C(void);\nvoid gd_init(void);\nvoid stub_renderer_12(s8 *arg0);    /* convert LE bytes to BE word? */\nvoid stub_renderer_13(UNUSED void *arg0);\nvoid stub_renderer_14(UNUSED s8 *arg0);    /* convert LE bytes to BE f32? */\nvoid init_pick_buf(s16 *buf, s32 len);\nvoid store_in_pickbuf(s16 data);\ns32 get_cur_pickbuf_offset(UNUSED s16 *arg0);\nvoid set_vtx_tc_buf(f32 tcS, f32 tcT);\nstruct GdObj *load_dynlist(struct DynList *dynlist);\n\n#endif // GD_RENDERER_H\n"
  },
  {
    "path": "src/goddard/sfx.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"sfx.h\"\n\nstatic u32 sCurrSfx;  // bitset of currently playing sound effects\nstatic u32 sPrevSfx;  // bitset of sound effects that were playing on the previous frame\n\n/**\n * Stops all sound effects\n */\nvoid gd_reset_sfx(void) {\n    sPrevSfx = GD_SFX_NONE;\n    sCurrSfx = GD_SFX_NONE;\n}\n\n/**\n * Returns a bitset of the newly started sound effects.\n * This is used by geo_draw_mario_head_goddard to start new sounds.\n */\nu32 gd_new_sfx_to_play(void) {\n    return ~sPrevSfx & sCurrSfx;\n}\n\n/**\n * Called at the start of a frame.\n */\nvoid gd_sfx_update(void) {\n    sPrevSfx = sCurrSfx;\n    sCurrSfx = GD_SFX_NONE;\n}\n\n/**\n * Marks a sound effect to be played. This must be called repeatedly once per\n * frame to keep the sound effect playing.\n */\nvoid gd_play_sfx(enum GdSfx sfx) {\n    sCurrSfx |= sfx;\n}\n"
  },
  {
    "path": "src/goddard/sfx.h",
    "content": "#ifndef GD_SFX_H\n#define GD_SFX_H\n\n#include <PR/ultratypes.h>\n\n// Sfx for Mario Head Screen\nenum GdSfx {\n    GD_SFX_NONE           = 0x00,\n    GD_SFX_HAND_APPEAR    = 0x01,\n    GD_SFX_HAND_DISAPPEAR = 0x02,\n    GD_SFX_UNUSED_COIN    = 0x04,\n    GD_SFX_PINCH_FACE     = 0x08,\n    GD_SFX_PINCH_FACE_2   = 0x10,\n    GD_SFX_LET_GO_FACE    = 0x20,\n    GD_SFX_CAM_ZOOM_IN    = 0x40,\n    GD_SFX_CAM_ZOOM_OUT   = 0x80\n};\n\n// functions\nvoid gd_reset_sfx(void);\nu32 gd_new_sfx_to_play(void);\nvoid gd_sfx_update(void);\nvoid gd_play_sfx(enum GdSfx sfx);\n\n#endif // GD_SFX_H\n"
  },
  {
    "path": "src/goddard/shape_helper.c",
    "content": "#include <PR/ultratypes.h>\n\n#if defined(VERSION_JP) || defined(VERSION_US)\n#include \"prevent_bss_reordering.h\"\n#endif\n\n#include \"debug_utils.h\"\n#include \"draw_objects.h\"\n#include \"dynlist_proc.h\"\n#include \"dynlists/dynlist_macros.h\"\n#include \"dynlists/dynlists.h\"\n#include \"gd_main.h\"\n#include \"gd_math.h\"\n#include \"gd_types.h\"\n#include \"joints.h\"\n#include \"macros.h\"\n#include \"objects.h\"\n#include \"particles.h\"\n#include \"renderer.h\"\n#include \"shape_helper.h\"\n#include \"skin.h\"\n\n// data\nstruct ObjGroup *gMarioFaceGrp = NULL;     // @ 801A82E0; returned by load_dynlist\nstruct ObjShape *gSpotShape = NULL;        // Shape used for drawing lights?\nstatic struct ObjShape *sGrabJointTestShape = NULL; // Test shape for showing grab joints. This isn't rendered due to make_grabber_joint setting the drawFlags to OBJ_INVISIBLE.\nstruct ObjShape *gShapeRedSpark = NULL;    // @ 801A82EC\nstruct ObjShape *gShapeSilverSpark = NULL;    // @ 801A82F0\nstruct ObjShape *gShapeRedStar = NULL;     // @ 801A82F4\nstruct ObjShape *gShapeSilverStar = NULL;  // @ 801A82F8\n\n// Not sure what this data is, but it looks like stub animation data\n\nstatic struct GdAnimTransform unusedAnimData1[] = {\n    { {1.0, 1.0, 1.0}, {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0} },\n};\n\nUNUSED static struct AnimDataInfo unusedAnim1 = { ARRAY_COUNT(unusedAnimData1), GD_ANIM_SCALE3F_ROT3F_POS3F_2, unusedAnimData1 };\n\nstatic struct GdAnimTransform unusedAnimData2[] = {\n    { {1.0, 1.0, 1.0}, {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0} },\n};\n\nUNUSED static struct AnimDataInfo unusedAnim2 = { ARRAY_COUNT(unusedAnimData2), GD_ANIM_SCALE3F_ROT3F_POS3F_2, unusedAnimData2 };\n\nstatic struct GdAnimTransform unusedAnimData3[] = {\n    { {1.0, 1.0, 1.0}, {0.0, 0.0, 0.0}, {0.0, 0.0, 0.0} },\n};\n\nUNUSED static struct AnimDataInfo unusedAnim3 = { ARRAY_COUNT(unusedAnimData3), GD_ANIM_SCALE3F_ROT3F_POS3F_2, unusedAnimData3 };\n\nUNUSED static s32 sUnref801A838C[6] = { 0 };\nstruct ObjShape *sSimpleShape = NULL;\nUNUSED static s32 sUnref801A83A8[31] = { 0 };\nUNUSED static struct DynList sSimpleDylist[8] = {  // unused\n    BeginList(),\n    StartGroup(\"simpleg\"),\n    MakeDynObj(D_NET, \"simple\"),\n    SetType(3),\n    SetShapePtrPtr(&sSimpleShape),\n    EndGroup(\"simpleg\"),\n    UseObj(\"simpleg\"),\n    EndList(),\n};\nstatic struct DynList sDynlist801A84E4[3] = {\n    BeginList(),\n    SetFlag(0x1800),\n    EndList(),\n};\nUNUSED static struct DynList sDynlist801A85B3[5] = {\n    BeginList(), CallList(sDynlist801A84E4), SetFlag(0x400), SetFriction(0.04, 0.01, 0.01),\n    EndList(),\n};\nUNUSED static struct DynList sDynlist801A85A4[4] = {\n    BeginList(),\n    CallList(sDynlist801A84E4),\n    SetFriction(0.04, 0.01, 0.01),\n    EndList(),\n};\nUNUSED static struct DynList sDynlist801A8604[4] = {\n    BeginList(),\n    CallList(sDynlist801A84E4),\n    SetFriction(0.005, 0.005, 0.005),\n    EndList(),\n};\nstatic f64 D_801A8668 = 0.0;\n\n// bss\nUNUSED static u8 sUnrefSpaceB00[0x2C];    // @ 801BAB00\nstatic struct ObjGroup *sCubeShapeGroup;  // @ 801BAB2C\nUNUSED static u8 sUnrefSpaceB30[0xC];     // @ 801BAB30\nstatic struct ObjShape *sCubeShape;       // @ 801BAB3C\nUNUSED static u8 sUnrefSpaceB40[0x8];     // @ 801BAB40\nstatic char sGdLineBuf[0x100];            // @ 801BAB48\nstatic s32 sGdLineBufCsr;                 // @ 801BAC48\nstatic struct GdFile *sGdShapeFile;       // @ 801BAC4C\nstatic struct ObjShape *sGdShapeListHead; // @ 801BAC50\nstatic u32 sGdShapeCount;                 // @ 801BAC54\nUNUSED static u8 sUnrefSpaceC58[0x8];     // @ 801BAC58\nstatic struct GdVec3f D_801BAC60;\nUNUSED static u32 sUnrefSpaceC6C;         // @ 801BAC6C\nUNUSED static u32 sUnrefSpaceC70;         // @ 801BAC70\nstatic struct ObjPlane *D_801BAC74;\nstatic struct ObjPlane *D_801BAC78; // sShapeNetHead?\nUNUSED static u8 sUnrefSpaceC80[0x1C];    // @ 801BAC80\nstatic struct ObjFace *D_801BAC9C;\nstatic struct ObjFace *D_801BACA0;\nUNUSED static u8 sUnrefSpaceCA8[0x10];    // @ 801BACA8\n/// factor for scaling vertices in an `ObjShape` when calling `scale_verts_in_shape()`\nstatic struct GdVec3f sVertexScaleFactor;\n/// factor for translating vertices in an `ObjShape` when calling `translate_verts_in_shape()`\nstatic struct GdVec3f sVertexTranslateOffset;\nUNUSED static u8 sUnrefSpaceCD8[0x30];    // @ 801BACD8\nstatic struct ObjGroup *D_801BAD08; // group of planes from make_netfromshape\nUNUSED static u8 sUnrefSpaceD10[0x20];    // @ 801BAD10\nstatic struct GdVec3f sShapeCenter;   // printed with \"c=\"\nUNUSED static u8 sUnrefSpaceD40[0x120];   // @ 801BAD40\n\n// Forward Declarations\nstruct ObjMaterial *find_or_add_new_mtl(struct ObjGroup *, s32, f32, f32, f32);\n\n/* @ 245A50 for 0x40 */\n/* Something to do with shape list/group initialization? */\nvoid func_80197280(void) {\n    sGdShapeCount = 0;\n    sGdShapeListHead = NULL;\n    gGdLightGroup = make_group(0);\n}\n\n/**\n * Computes the normal vector for a face based on three of its vertices.\n */\nvoid calc_face_normal(struct ObjFace *face) {\n    UNUSED u8 filler1[4];\n    struct GdVec3f p1;\n    struct GdVec3f p2;\n    struct GdVec3f p3;\n    struct GdVec3f normal;\n    struct ObjVertex *vtx1;\n    struct ObjVertex *vtx2;\n    struct ObjVertex *vtx3;\n    UNUSED u8 filler2[4];\n    f32 mul = 1000.0f;\n\n    imin(\"calc_facenormal\");\n\n    if (face->vtxCount >= 3) {  // need at least three points to compute a normal\n        vtx1 = face->vertices[0];\n        p1.x = vtx1->pos.x;\n        p1.y = vtx1->pos.y;\n        p1.z = vtx1->pos.z;\n\n        vtx2 = face->vertices[1];\n        p2.x = vtx2->pos.x;\n        p2.y = vtx2->pos.y;\n        p2.z = vtx2->pos.z;\n\n        vtx3 = face->vertices[2];\n        p3.x = vtx3->pos.x;\n        p3.y = vtx3->pos.y;\n        p3.z = vtx3->pos.z;\n\n        // calculate the cross product of edges (p2 - p1) and (p3 - p2)\n        // not sure why each component is multiplied by 1000. maybe to avoid loss of precision when normalizing?\n        normal.x = (((p2.y - p1.y) * (p3.z - p2.z)) - ((p2.z - p1.z) * (p3.y - p2.y))) * mul;\n        normal.y = (((p2.z - p1.z) * (p3.x - p2.x)) - ((p2.x - p1.x) * (p3.z - p2.z))) * mul;\n        normal.z = (((p2.x - p1.x) * (p3.y - p2.y)) - ((p2.y - p1.y) * (p3.x - p2.x))) * mul;\n\n        gd_normalize_vec3f(&normal);\n\n        face->normal.x = normal.x;\n        face->normal.y = normal.y;\n        face->normal.z = normal.z;\n    }\n    imout();\n}\n\n/* @ 245CDC for 0x118 */\nstruct ObjVertex *gd_make_vertex(f32 x, f32 y, f32 z) {\n    struct ObjVertex *vtx;\n\n    vtx = (struct ObjVertex *) make_object(OBJ_TYPE_VERTICES);\n    vtx->id = 0xD1D4;\n\n    vtx->pos.x = x;\n    vtx->pos.y = y;\n    vtx->pos.z = z;\n\n    vtx->initPos.x = x;\n    vtx->initPos.y = y;\n    vtx->initPos.z = z;\n\n    vtx->scaleFactor = 1.0f;\n    vtx->gbiVerts = NULL;\n    vtx->alpha = 1.0f;\n\n    vtx->normal.x = 0.0f;\n    vtx->normal.y = 1.0f;\n    vtx->normal.z = 0.0f;\n\n    return vtx;\n}\n\n/* @ 245DF4 for 0xAC */\nstruct ObjFace *make_face_with_colour(f32 r, f32 g, f32 b) {\n    struct ObjFace *newFace;\n\n    imin(\"make_face\");\n    newFace = (struct ObjFace *) make_object(OBJ_TYPE_FACES);\n\n    newFace->colour.r = r;\n    newFace->colour.g = g;\n    newFace->colour.b = b;\n\n    newFace->vtxCount = 0;\n    newFace->mtlId = -1;\n    newFace->mtl = NULL;\n\n    imout();\n    return newFace;\n}\n\n/* @ 245EA0 for 0x6C */\nstruct ObjFace *make_face_with_material(struct ObjMaterial *mtl) {\n    struct ObjFace *newFace;\n\n    newFace = (struct ObjFace *) make_object(OBJ_TYPE_FACES);\n\n    newFace->vtxCount = 0;\n    newFace->mtlId = mtl->id;\n    newFace->mtl = mtl;\n\n    return newFace;\n}\n\n/* @ 245F0C for 0x88 */\nvoid add_4_vertices_to_face(struct ObjFace *face, struct ObjVertex *vtx1, struct ObjVertex *vtx2,\n                     struct ObjVertex *vtx3, struct ObjVertex *vtx4) {\n    face->vertices[0] = vtx1;\n    face->vertices[1] = vtx2;\n    face->vertices[2] = vtx3;\n    face->vertices[3] = vtx4;\n    face->vtxCount = 4;\n    calc_face_normal(face);\n}\n\n/* @ 245F94 for 0x78; orig name: func_801977C4 */\nvoid add_3_vtx_to_face(struct ObjFace *face, struct ObjVertex *vtx1, struct ObjVertex *vtx2,\n                       struct ObjVertex *vtx3) {\n    face->vertices[0] = vtx1;\n    face->vertices[1] = vtx2;\n    face->vertices[2] = vtx3;\n    face->vtxCount = 3;\n    calc_face_normal(face);\n}\n\n/**\n * Creates an `ObjShape` object\n */\nstruct ObjShape *make_shape(s32 flag, const char *name) {\n    struct ObjShape *newShape;\n    struct ObjShape *curShapeHead;\n    UNUSED u8 filler[4];\n\n    newShape = (struct ObjShape *) make_object(OBJ_TYPE_SHAPES);\n\n    if (name != NULL) {\n        gd_strcpy(newShape->name, name);\n    } else {\n        gd_strcpy(newShape->name, \"NoName\");\n    }\n\n    sGdShapeCount++;\n\n    curShapeHead = sGdShapeListHead;\n    sGdShapeListHead = newShape;\n\n    if (curShapeHead != NULL) {\n        newShape->nextShape = curShapeHead;\n        curShapeHead->prevShape = newShape;\n    }\n\n    newShape->id = sGdShapeCount;\n    newShape->flag = flag;\n\n    newShape->vtxCount = 0;\n    newShape->faceCount = 0;\n    newShape->dlNums[0] = 0;\n    newShape->dlNums[1] = 0;\n    newShape->unk3C = 0;\n    newShape->faceGroup = NULL; /* whoops, NULL-ed twice */\n\n    newShape->alpha = 1.0f;\n\n    newShape->vtxGroup = NULL;\n    newShape->faceGroup = NULL;\n    newShape->mtlGroup = NULL;\n    newShape->unk30 = 0;\n    newShape->unk50 = 0;\n\n    return newShape;\n}\n\n/* @ 2461A4 for 0x30; orig name: func_801979D4 */\nvoid clear_buf_to_cr(void) {\n    sGdLineBufCsr = 0;\n    sGdLineBuf[sGdLineBufCsr] = '\\r';\n}\n\n/* @ 2461D4 for 0x2c; orig name: func_80197A04 */\ns8 get_current_buf_char(void) {\n    return sGdLineBuf[sGdLineBufCsr];\n}\n\n/* @ 246200 for 0x64; orig name: func_80197A30 */\ns8 get_and_advance_buf(void) {\n    if (get_current_buf_char() == '\\0') {\n        return '\\0';\n    }\n\n    return sGdLineBuf[sGdLineBufCsr++];\n}\n\n/* @ 246264 for 0x80; orig name: func_80197A94 */\ns8 load_next_line_into_buf(void) {\n    sGdLineBufCsr = 0;\n\n    if (gd_feof(sGdShapeFile) != 0) {\n        sGdLineBuf[sGdLineBufCsr] = '\\0';\n    } else {\n        gd_fread_line(sGdLineBuf, 0xFF, sGdShapeFile);\n    }\n\n    return get_current_buf_char();\n}\n\n/* @ 2462E4 for 0x38; orig name: func_80197B14 */\ns32 is_line_end(char c) {\n    return c == '\\r' || c == '\\n';\n}\n\n/* @ 24631C for 0x38; orig name: func_80197B4C */\ns32 is_white_space(char c) {\n    return c == ' ' || c == '\\t';\n}\n\n/* @ 246354 for 0xEC; orig name: func_80197B84 */\n/* Advances buffer cursor to next non-white-space character, if possible.\n * Returns TRUE if a character is found, or FALSE if EOF or \\0 */\ns32 scan_to_next_non_whitespace(void) {\n    char curChar;\n\n    for (curChar = get_current_buf_char(); curChar != '\\0'; curChar = get_current_buf_char()) {\n        if (is_white_space(curChar)) {\n            get_and_advance_buf();\n            continue;\n        }\n\n        if (curChar == '\\x1a') { //'SUB' character: \"soft EOF\" in older systems\n            return FALSE;\n            continue; // unreachable\n        }\n\n        if (is_line_end(curChar)) {\n            if (load_next_line_into_buf() == '\\0') {\n                return FALSE;\n            }\n        } else {\n            break;\n        }\n    }\n\n    return !!curChar;\n}\n\n/* @ 246440 for 0xE0; orig name: func_80197C70 */\ns32 is_next_buf_word(char *a0) {\n    char curChar;\n    char wordBuf[0xfc];\n    u32 bufLength;\n\n    bufLength = 0;\n    for (curChar = get_and_advance_buf(); curChar != '\\0'; curChar = get_and_advance_buf()) {\n        if (is_white_space(curChar) || is_line_end(curChar)) {\n            break;\n            continue; // unreachable + nonsensical\n        }\n        wordBuf[bufLength] = curChar;\n        bufLength++;\n    }\n\n    wordBuf[bufLength] = '\\0';\n\n    return !gd_str_not_equal(a0, wordBuf);\n}\n\n/* @ 246520 for 0x198; orig name: func_80197D50 */\ns32 getfloat(f32 *floatPtr) {\n    char charBuf[0x100];\n    u32 bufCsr;\n    char curChar;\n    u32 sp34;\n    f64 parsedDouble;\n\n    imin(\"getfloat\");\n\n    if (is_line_end(get_current_buf_char())) {\n        fatal_printf(\"getfloat(): Unexpected EOL\");\n    }\n\n    while (is_white_space(get_current_buf_char())) {\n        get_and_advance_buf();\n    }\n\n    bufCsr = 0;\n\n    for (curChar = get_and_advance_buf(); curChar != '\\0'; curChar = get_and_advance_buf()) {\n        if (!is_white_space(curChar) && !is_line_end(curChar)) {\n            charBuf[bufCsr] = curChar;\n            bufCsr++;\n        } else {\n            break;\n        }\n    }\n\n    charBuf[bufCsr] = '\\0';\n\n    parsedDouble = gd_lazy_atof(charBuf, &sp34);\n    *floatPtr = (f32) parsedDouble;\n\n    imout();\n    return !!bufCsr;\n}\n\n/* @ 2466B8 for 0x180; orig name: func_80197EE8 */\ns32 getint(s32 *intPtr) {\n    char charBuf[0x100];\n    u32 bufCsr;\n    char curChar;\n\n    imin(\"getint\");\n\n    if (is_line_end(get_current_buf_char())) {\n        fatal_printf(\"getint(): Unexpected EOL\");\n    }\n\n    while (is_white_space(get_current_buf_char())) {\n        get_and_advance_buf();\n    }\n\n    bufCsr = 0;\n    for (curChar = get_and_advance_buf(); curChar != '\\0'; curChar = get_and_advance_buf()) {\n        if (is_white_space(curChar) || is_line_end(curChar)) {\n            break;\n        }\n\n        charBuf[bufCsr] = curChar;\n        bufCsr++;\n    }\n\n    charBuf[bufCsr] = '\\0';\n    *intPtr = gd_atoi(charBuf);\n\n    imout();\n    return !!bufCsr;\n}\n\n/* @ 246838 for 0x14 */\nvoid Unknown80198068(UNUSED f32 a0) {\n    printf(\"max=%f\\n\", a0);\n}\n\n/* @ 24684C for 0x6C */\nvoid func_8019807C(struct ObjVertex *vtx) {\n    gd_rot_2d_vec(D_801BAC60.x, &vtx->pos.y, &vtx->pos.z);\n    gd_rot_2d_vec(D_801BAC60.y, &vtx->pos.x, &vtx->pos.z);\n    gd_rot_2d_vec(D_801BAC60.z, &vtx->pos.x, &vtx->pos.y);\n}\n\n/* @ 2468B8 for 0x6C */\nvoid func_801980E8(f32 *a0) {\n    gd_rot_2d_vec(D_801BAC60.x, &a0[1], &a0[2]);\n    gd_rot_2d_vec(D_801BAC60.y, &a0[0], &a0[2]);\n    gd_rot_2d_vec(D_801BAC60.z, &a0[0], &a0[1]);\n}\n\n/* @ 246924 for 0x30 */\nvoid Unknown80198154(f32 x, f32 y, f32 z) {\n    D_801BAC60.x = x;\n    D_801BAC60.y = y;\n    D_801BAC60.z = z;\n}\n\n/* @ 246954 for 0x6c */\nvoid Unknown80198184(struct ObjShape *shape, f32 x, f32 y, f32 z) {\n    UNUSED struct GdVec3f unusedVec;\n    unusedVec.x = x;\n    unusedVec.y = y;\n    unusedVec.z = z;\n\n    apply_to_obj_types_in_group(OBJ_TYPE_VERTICES, (applyproc_t) func_8019807C, shape->vtxGroup);\n}\n\n/* @ 2469C0 for 0xc8 */\nvoid scale_obj_position(struct GdObj *obj) {\n    struct GdVec3f pos;\n\n    if (obj->type == OBJ_TYPE_GROUPS) {\n        return;\n    }\n\n    set_cur_dynobj(obj);\n    d_get_rel_pos(&pos);\n\n    pos.x *= sVertexScaleFactor.x;\n    pos.y *= sVertexScaleFactor.y;\n    pos.z *= sVertexScaleFactor.z;\n\n    d_set_rel_pos(pos.x, pos.y, pos.z);\n    d_set_init_pos(pos.x, pos.y, pos.z);\n}\n\n/* @ 246A88 for 0x94 */\nvoid translate_obj_position(struct GdObj *obj) {\n    struct GdVec3f pos;\n\n    set_cur_dynobj(obj);\n    d_get_rel_pos(&pos);\n\n    pos.x += sVertexTranslateOffset.x;\n    pos.y += sVertexTranslateOffset.y;\n    pos.z += sVertexTranslateOffset.z;\n\n    d_set_rel_pos(pos.x, pos.y, pos.z);\n}\n\n/* @ 246B1C for 0x88 */\nvoid scale_verts_in_shape(struct ObjShape *shape, f32 x, f32 y, f32 z) {\n    sVertexScaleFactor.x = x;\n    sVertexScaleFactor.y = y;\n    sVertexScaleFactor.z = z;\n\n    if (shape->vtxGroup != NULL) {\n        apply_to_obj_types_in_group(OBJ_TYPE_ALL, (applyproc_t) scale_obj_position, shape->vtxGroup);\n    }\n}\n\n/* @ 246BA4 for 0x70; not called */\n// Guessing on the type of a0\nvoid translate_verts_in_shape(struct ObjShape *shape, f32 x, f32 y, f32 z) {\n    sVertexTranslateOffset.x = x;\n    sVertexTranslateOffset.y = y;\n    sVertexTranslateOffset.z = z;\n\n    apply_to_obj_types_in_group(OBJ_TYPE_ALL, (applyproc_t) translate_obj_position, shape->vtxGroup);\n}\n\n/* @ 246C14 for 0xe0 */\nvoid Unknown80198444(struct ObjVertex *vtx) {\n    f64 distance;\n\n    add_obj_pos_to_bounding_box(&vtx->header);\n\n    distance = vtx->pos.x * vtx->pos.x + vtx->pos.y * vtx->pos.y + vtx->pos.z * vtx->pos.z;\n\n    if (distance != 0.0) {\n        distance = gd_sqrt_d(distance); // sqrtd?\n\n        if (distance > D_801A8668) {\n            D_801A8668 = distance;\n        }\n    }\n}\n\n/* @ 246CF4 for 0xc4 */\nvoid Unknown80198524(struct ObjVertex *vtx) {\n    vtx->pos.x -= sShapeCenter.x;\n    vtx->pos.y -= sShapeCenter.y;\n    vtx->pos.z -= sShapeCenter.z;\n\n    vtx->pos.x /= D_801A8668;\n    vtx->pos.y /= D_801A8668;\n    vtx->pos.z /= D_801A8668;\n}\n\n/* @ 246DB8 for 0x11c */\nvoid Unknown801985E8(struct ObjShape *shape) {\n    struct GdBoundingBox bbox;\n\n    D_801A8668 = 0.0;\n    reset_bounding_box();\n    apply_to_obj_types_in_group(OBJ_TYPE_VERTICES, (applyproc_t) Unknown80198444, shape->vtxGroup);\n\n    get_some_bounding_box(&bbox);\n\n    sShapeCenter.x = (f32)((bbox.minX + bbox.maxX) / 2.0); //? 2.0f\n    sShapeCenter.y = (f32)((bbox.minY + bbox.maxY) / 2.0); //? 2.0f\n    sShapeCenter.z = (f32)((bbox.minZ + bbox.maxZ) / 2.0); //? 2.0f\n\n    gd_print_vec(\"c=\", &sShapeCenter);\n\n    apply_to_obj_types_in_group(OBJ_TYPE_VERTICES, (applyproc_t) Unknown80198524, shape->vtxGroup);\n}\n\n/* @ 246ED4 for 0x4FC; orig name: func_80198704 */\nvoid get_3DG1_shape(struct ObjShape *shape) {\n    UNUSED u8 filler[8];\n    struct GdVec3f tempNormal; /* maybe? */\n    s32 curFaceVtx;\n    s32 faceVtxID;\n    s32 totalVtx;\n    s32 totalFacePoints;\n    struct GdVec3f tempVec;\n    struct ObjFace *newFace;\n    struct ObjVertex *vtxHead = NULL; // ptr to first made ObjVertex in the Obj* list\n    s32 vtxCount = 0;\n    struct ObjFace *faceHead = NULL; // ptr to first made OBjFace in the Obj* list\n    s32 faceCount = 0;\n    struct ObjFace **facePtrArr;\n    struct ObjVertex **vtxPtrArr;\n    struct ObjMaterial *mtl;\n\n    shape->mtlGroup = make_group(0);\n    imin(\"get_3DG1_shape\");\n\n    vtxPtrArr = gd_malloc_perm(72000 * sizeof(struct ObjVertex *)); // 288,000 = 72,000 * 4\n    facePtrArr = gd_malloc_perm(76000 * sizeof(struct ObjFace *));  // 304,000 = 76,000 * 4\n\n    tempNormal.x = 0.0f;\n    tempNormal.y = 0.0f;\n    tempNormal.z = 1.0f;\n\n    load_next_line_into_buf();\n    if (!getint(&totalVtx)) {\n        fatal_printf(\"Missing number of points\");\n    }\n\n    load_next_line_into_buf();\n    while (scan_to_next_non_whitespace()) {\n        getfloat(&tempVec.x);\n        getfloat(&tempVec.y);\n        getfloat(&tempVec.z);\n        vtxPtrArr[vtxCount] = gd_make_vertex(tempVec.x, tempVec.y, tempVec.z);\n\n        if (vtxHead == NULL) {\n            vtxHead = vtxPtrArr[vtxCount];\n        }\n\n        func_8019807C(vtxPtrArr[vtxCount]);\n        vtxCount++;\n\n        if (vtxCount >= 4000) {\n            fatal_printf(\"Too many vertices in shape data\");\n        }\n\n        shape->vtxCount++;\n        clear_buf_to_cr();\n\n        if (--totalVtx == 0) { /* Count down vertex ponts */\n            break;\n        }\n    }\n\n    while (scan_to_next_non_whitespace()) {\n        if (!getint(&totalFacePoints)) {\n            fatal_printf(\"Missing number of points in face\");\n        }\n\n        mtl = find_or_add_new_mtl(shape->mtlGroup, 0, tempNormal.x, tempNormal.y, tempNormal.z);\n        newFace = make_face_with_material(mtl);\n\n        if (faceHead == NULL) {\n            faceHead = newFace;\n        }\n\n        facePtrArr[faceCount] = newFace;\n        faceCount++;\n        if (faceCount >= 4000) {\n            fatal_printf(\"Too many faces in shape data\");\n        }\n\n        curFaceVtx = 0;\n        while (get_current_buf_char() != '\\0') {\n            getint(&faceVtxID);\n\n            if (curFaceVtx > 3) {\n                fatal_printf(\"Too many points in a face(%d)\", curFaceVtx);\n            }\n\n            newFace->vertices[curFaceVtx] = vtxPtrArr[faceVtxID];\n            curFaceVtx++;\n\n            if (is_line_end(get_current_buf_char()) || --totalFacePoints == 0) {\n                break;\n            }\n        }\n\n        newFace->vtxCount = curFaceVtx;\n\n        if (newFace->vtxCount > 3) {\n            fatal_printf(\"Too many points in a face(%d)\", newFace->vtxCount);\n        }\n\n        calc_face_normal(newFace);\n\n        tempNormal.x = newFace->normal.x > 0.0f ? 1.0f : 0.0f;\n        tempNormal.y = newFace->normal.y > 0.0f ? 1.0f : 0.0f;\n        tempNormal.z = newFace->normal.z > 0.0f ? 1.0f : 0.0f;\n\n        shape->faceCount++;\n\n        clear_buf_to_cr();\n    }\n\n    gd_free(vtxPtrArr);\n    gd_free(facePtrArr);\n\n    shape->vtxGroup = make_group_of_type(OBJ_TYPE_VERTICES, (struct GdObj *) vtxHead, NULL);\n    shape->faceGroup = make_group_of_type(OBJ_TYPE_FACES, (struct GdObj *) faceHead, NULL);\n\n    imout();\n}\n\n/* @ 2473D0 for 0x390; orig name: func_80198C00 */\nvoid get_OBJ_shape(struct ObjShape *shape) {\n    UNUSED u8 filler[4];\n    struct GdColour faceClr;\n    s32 curFaceVtx;\n    s32 faceVtxIndex;\n    struct GdVec3f tempVec;\n    struct ObjFace *newFace;\n    struct ObjVertex *vtxArr[4000];\n    struct ObjFace *faceArr[4000];\n    s32 faceCount = 0;\n    s32 vtxCount = 0;\n\n    faceClr.r = 1.0f;\n    faceClr.g = 0.5f;\n    faceClr.b = 1.0f;\n\n    sGdLineBufCsr = 0;\n\n    while (scan_to_next_non_whitespace()) {\n        switch (get_and_advance_buf()) {\n            case 'v':\n                getfloat(&tempVec.x);\n                getfloat(&tempVec.y);\n                getfloat(&tempVec.z);\n\n                vtxArr[vtxCount] = gd_make_vertex(tempVec.x, tempVec.y, tempVec.z);\n                func_8019807C(vtxArr[vtxCount]);\n                vtxCount++;\n\n                if (vtxCount >= 4000) {\n                    fatal_printf(\"Too many vertices in shape data\");\n                }\n\n                shape->vtxCount++;\n                break;\n\n            case 'f':\n                newFace = make_face_with_colour(faceClr.r, faceClr.g, faceClr.b);\n                faceArr[faceCount] = newFace;\n                faceCount++;\n\n                if (faceCount >= 4000) {\n                    fatal_printf(\"Too many faces in shape data\");\n                }\n\n                curFaceVtx = 0;\n                while (get_current_buf_char() != '\\0') {\n                    getint(&faceVtxIndex);\n\n                    if (curFaceVtx > 3) {\n                        fatal_printf(\"Too many points in a face(%d)\", curFaceVtx);\n                    }\n\n                    /* .obj vertex list is 1-indexed */\n                    newFace->vertices[curFaceVtx] = vtxArr[faceVtxIndex - 1];\n                    curFaceVtx++;\n\n                    if (is_line_end(get_current_buf_char())) {\n                        break;\n                    }\n                }\n\n                /* These are already set by make_face_with_colour... */\n                newFace->colour.r = faceClr.r;\n                newFace->colour.g = faceClr.g;\n                newFace->colour.b = faceClr.b;\n\n                newFace->vtxCount = curFaceVtx;\n\n                if (newFace->vtxCount > 3) {\n                    fatal_printf(\"Too many points in a face(%d)\", newFace->vtxCount);\n                }\n\n                calc_face_normal(newFace);\n\n                shape->faceCount++;\n                break;\n\n            case 'g':\n                break;\n            case '#':\n                break;\n            default:\n                break;\n        }\n\n        clear_buf_to_cr();\n    }\n\n    shape->vtxGroup = make_group_of_type(OBJ_TYPE_VERTICES, (struct GdObj *) vtxArr[0], NULL);\n    shape->faceGroup = make_group_of_type(OBJ_TYPE_FACES, (struct GdObj *) faceArr[0], NULL);\n}\n\n/* @ 247760 for 0x124; orig name: func_80198F90 */\nstruct ObjGroup *group_faces_in_mtl_grp(struct ObjGroup *mtlGroup, struct GdObj *fromObj,\n                                        struct GdObj *toObj) {\n    struct ObjMaterial *curObjAsMtl;\n    struct ObjGroup *newGroup;\n    struct GdObj *curObj;\n    register struct ListNode *node;\n    struct GdObj *curLinkedObj;\n\n    newGroup = make_group(0);\n\n    for (node = mtlGroup->firstMember; node != NULL; node = node->next) {\n        curLinkedObj = node->obj;\n        curObjAsMtl = (struct ObjMaterial *) curLinkedObj;\n\n        curObj = fromObj;\n        while (curObj != NULL) {\n            if (curObj == toObj) {\n                break;\n            }\n\n            if (curObj->type == OBJ_TYPE_FACES) {\n                if (((struct ObjFace *) curObj)->mtl == curObjAsMtl) {\n                    addto_group(newGroup, curObj);\n                }\n            }\n            curObj = curObj->prev;\n        }\n    }\n\n    return newGroup;\n}\n\n/* @ 247884 for 0x13c; orig name: func_801990B4 */\nstruct ObjMaterial *find_or_add_new_mtl(struct ObjGroup *group, UNUSED s32 a1, f32 r, f32 g, f32 b) {\n    struct ObjMaterial *newMtl;\n    register struct ListNode *node;\n    struct ObjMaterial *foundMtl;\n\n    for (node = group->firstMember; node != NULL; node = node->next) {\n        foundMtl = (struct ObjMaterial *) node->obj;\n\n        if (foundMtl->header.type == OBJ_TYPE_MATERIALS) {\n            if (foundMtl->Kd.r == r) {\n                if (foundMtl->Kd.g == g) {\n                    if (foundMtl->Kd.b == b) {\n                        return foundMtl;\n                    }\n                }\n            }\n        }\n    }\n\n    newMtl = make_material(0, NULL, 1);\n    set_cur_dynobj((struct GdObj *)newMtl);\n    d_set_diffuse(r, g, b);\n    addto_group(group, (struct GdObj *) newMtl);\n\n    return newMtl;\n}\n\n/* @ 2479C0 for 0x470; orig name: func_801991F0 */\nvoid read_ARK_shape(struct ObjShape *shape, char *fileName) {\n    union {\n        s8 bytes[0x48];\n        struct {\n            u8 filler[0x40];\n            s32 word40;\n            s32 word44;\n        } data;\n    } fileInfo;\n\n    union {\n        s8 bytes[0x10];\n        struct {\n            f32 v[3];\n            s32 faceCount;\n        } data;\n    } faceInfo; // face normal x,y,z? + count\n\n    union {\n        s8 bytes[0x10];\n        struct {\n            s32 vtxCount;\n            f32 x, y, z;\n        } data;\n    } face; // face vtx count + vtx x,y,z ?\n\n    union {\n        s8 bytes[0x18];\n        struct {\n            f32 v[3];\n            f32 nv[3]; /* Guessing on the normals; they aren't used */\n        } data;\n    } vtx;\n\n    UNUSED u8 filler[4];\n    struct GdVec3f sp48;\n    struct ObjFace *sp44;          // newly made face with mtl sp34;\n    struct ObjFace *sp40 = NULL;   // first made face\n    struct ObjVertex *sp3C;        // newly made vtx\n    struct ObjVertex *sp38 = NULL; // first made vtx\n    struct ObjMaterial *sp34;      // found or new mtl for face\n    UNUSED s32 sp30 = 0;\n    UNUSED s32 sp2C = 0;\n\n    shape->mtlGroup = make_group(0);\n\n    sp48.x = 1.0f;\n    sp48.y = 0.5f;\n    sp48.z = 1.0f;\n\n    sGdShapeFile = gd_fopen(fileName, \"rb\");\n\n    if (sGdShapeFile == NULL) {\n        fatal_printf(\"Cant load shape '%s'\", fileName);\n    }\n\n    gd_fread(fileInfo.bytes, 0x48, 1, sGdShapeFile);\n    stub_renderer_12(&fileInfo.bytes[0x40]); // face count?\n    stub_renderer_12(&fileInfo.bytes[0x44]);\n\n    while (fileInfo.data.word40-- > 0) {\n        gd_fread(faceInfo.bytes, 0x10, 1, sGdShapeFile);\n        stub_renderer_14(&faceInfo.bytes[0x0]);\n        stub_renderer_14(&faceInfo.bytes[0x4]);\n        stub_renderer_14(&faceInfo.bytes[0x8]);\n\n        sp48.x = faceInfo.data.v[0];\n        sp48.y = faceInfo.data.v[1];\n        sp48.z = faceInfo.data.v[2];\n\n        sp34 = find_or_add_new_mtl(shape->mtlGroup, 0, sp48.x, sp48.y, sp48.z);\n\n        stub_renderer_12(&faceInfo.bytes[0xC]);\n\n        while (faceInfo.data.faceCount-- > 0) {\n            shape->faceCount++;\n            gd_fread(face.bytes, 0x10, 1, sGdShapeFile);\n            stub_renderer_14(&face.bytes[0x4]); // read word as f32?\n            stub_renderer_14(&face.bytes[0x8]);\n            stub_renderer_14(&face.bytes[0xC]);\n\n            sp44 = make_face_with_material(sp34);\n\n            if (sp40 == NULL) {\n                sp40 = sp44;\n            }\n\n            stub_renderer_12(&face.bytes[0x0]);\n\n            if (face.data.vtxCount > 3) {\n                while (face.data.vtxCount-- > 0) {\n                    gd_fread(vtx.bytes, 0x18, 1, sGdShapeFile);\n                }\n                continue;\n            }\n\n            while (face.data.vtxCount-- > 0) {\n                shape->vtxCount++;\n                gd_fread(vtx.bytes, 0x18, 1, sGdShapeFile);\n                stub_renderer_14(&vtx.bytes[0x00]);\n                stub_renderer_14(&vtx.bytes[0x04]);\n                stub_renderer_14(&vtx.bytes[0x08]);\n                stub_renderer_14(&vtx.bytes[0x0C]);\n                stub_renderer_14(&vtx.bytes[0x10]);\n                stub_renderer_14(&vtx.bytes[0x14]);\n\n                func_801980E8(vtx.data.v);\n                sp3C = gd_make_vertex(vtx.data.v[0], vtx.data.v[1], vtx.data.v[2]);\n\n                if (sp44->vtxCount > 3) {\n                    fatal_printf(\"Too many points in a face(%d)\", sp44->vtxCount);\n                }\n\n                sp44->vertices[sp44->vtxCount] = sp3C;\n                sp44->vtxCount++;\n\n                if (sp38 == NULL) {\n                    sp38 = sp3C;\n                }\n            }\n\n            calc_face_normal(sp44);\n        }\n    }\n\n    shape->vtxGroup = make_group_of_type(OBJ_TYPE_VERTICES, (struct GdObj *) sp38, NULL);\n    shape->faceGroup = group_faces_in_mtl_grp(shape->mtlGroup, (struct GdObj *) sp40, NULL);\n    gd_fclose(sGdShapeFile);\n}\n\n/* @ 247E30 for 0x148; orig name: Unknown80199660 */\nstruct GdFile *get_shape_from_file(struct ObjShape *shape, char *fileName) {\n    printf(\"Loading %s...\\n\", fileName);\n    start_memtracker(fileName);\n    shape->unk3C = 0;\n    shape->faceCount = 0;\n    shape->vtxCount = 0;\n\n    if (gd_str_contains(fileName, \".ark\")) {\n        read_ARK_shape(shape, fileName);\n    } else {\n        sGdShapeFile = gd_fopen(fileName, \"r\");\n\n        if (sGdShapeFile == NULL) {\n            fatal_printf(\"Cant open shape '%s'\", fileName);\n        }\n\n        sGdLineBufCsr = 0;\n        sGdLineBuf[sGdLineBufCsr] = '\\0';\n        load_next_line_into_buf();\n\n        if (is_next_buf_word(\"3DG1\")) {\n            get_3DG1_shape(shape);\n        } else {\n            get_OBJ_shape(shape);\n        }\n\n        printf(\"Num Vertices=%d\\n\", shape->vtxCount);\n        printf(\"Num Faces=%d\\n\", shape->faceCount);\n        printf(\"\\n\");\n\n        gd_fclose(sGdShapeFile);\n    }\n\n    stop_memtracker(fileName);\n\n    return sGdShapeFile;\n}\n\n/* @ 247F78 for 0x69c; orig name: Unknown801997A8 */\nstruct ObjShape *make_grid_shape(enum ObjTypeFlag gridType, s32 a1, s32 a2, s32 a3, s32 a4) {\n    UNUSED u8 filler1[4];\n    void *objBuf[32][32]; // vertex or particle depending on gridType\n    f32 sp70;\n    f32 sp6C;\n    f32 sp68;\n    UNUSED u8 filler2[8];\n    f32 sp5C;\n    s32 parI;\n    s32 row;\n    s32 col;\n    UNUSED s32 sp4C = 0;\n    struct ObjShape *gridShape;\n    f32 sp44;\n    struct ObjFace *sp40 = NULL;  // first made shape?\n    struct ObjGroup *parOrVtxGrp; // group of made particles or vertices (based on gridType)\n    UNUSED u8 filler3[4];\n    struct ObjGroup *mtlGroup;\n    struct GdVec3f *sp30;     // GdVec3f* ? from gd_get_colour\n    struct GdVec3f *sp2C;     //^\n    struct ObjMaterial *mtl1; // first made material\n    struct ObjMaterial *mtl2; // second made material\n    UNUSED u8 filler4[4];\n\n    sp30 = (struct GdVec3f *) gd_get_colour(a1);\n    sp2C = (struct GdVec3f *) gd_get_colour(a2);\n\n    mtl1 = make_material(0, NULL, 1);\n    set_cur_dynobj((struct GdObj *) mtl1);\n    d_set_diffuse(sp30->x, sp30->y, sp30->z);\n    mtl1->type = 0x40;\n\n    mtl2 = make_material(0, NULL, 2);\n    set_cur_dynobj((struct GdObj *) mtl2);\n    d_set_diffuse(sp2C->x, sp2C->y, sp2C->z);\n    mtl2->type = 0x40;\n\n    mtlGroup = make_group(2, mtl1, mtl2);\n    gridShape = make_shape(0, \"grid\");\n    gridShape->faceCount = 0;\n    gridShape->vtxCount = 0;\n\n    sp44 = 2.0 / a3; //? 2.0f\n    sp5C = -1.0f;\n    sp6C = 0.0f;\n    sp70 = -1.0f;\n\n    for (col = 0; col <= a4; col++) {\n        sp68 = sp5C;\n        for (row = 0; row <= a3; row++) {\n            gridShape->vtxCount++;\n            if (gridType == OBJ_TYPE_VERTICES) {\n                objBuf[row][col] = gd_make_vertex(sp68, sp6C, sp70);\n            } else if (gridType == OBJ_TYPE_PARTICLES) {\n                objBuf[row][col] = make_particle(0, 0, sp68, sp6C + 2.0f, sp70);\n                ((struct ObjParticle *) objBuf[row][col])->unk44 = (1.0 + sp68) / 2.0;\n                ((struct ObjParticle *) objBuf[row][col])->unk48 = (1.0 + sp70) / 2.0;\n            }\n            sp68 += sp44;\n        }\n        sp70 += sp44;\n    }\n\n    for (col = 0; col < a4; col++) {\n        for (row = 0; row < a3; row++) {\n            gridShape->faceCount += 2;\n            if (a1 != a2) {\n                if ((row + col) & 1) {\n                    D_801BAC9C = make_face_with_material(mtl1);\n                    D_801BACA0 = make_face_with_material(mtl1);\n                } else {\n                    D_801BAC9C = make_face_with_material(mtl2);\n                    D_801BACA0 = make_face_with_material(mtl2);\n                }\n            } else {\n                D_801BAC9C = make_face_with_material(mtl1);\n                D_801BACA0 = make_face_with_material(mtl2);\n            }\n\n            if (sp40 == NULL) {\n                sp40 = D_801BAC9C;\n            }\n\n            add_3_vtx_to_face(D_801BAC9C, objBuf[row][col + 1], objBuf[row + 1][col + 1],\n                              objBuf[row][col]);\n            add_3_vtx_to_face(D_801BACA0, objBuf[row + 1][col + 1], objBuf[row + 1][col],\n                              objBuf[row][col]);\n        }\n    }\n\n    if (gridType == OBJ_TYPE_PARTICLES) {\n        for (parI = 0; parI <= a3; parI++) {\n            ((struct ObjParticle *) objBuf[parI][0])->flags |= 2;\n            ((struct ObjParticle *) objBuf[parI][a4])->flags |= 2;\n        }\n\n        for (parI = 0; parI <= a4; parI++) {\n            ((struct ObjParticle *) objBuf[0][parI])->flags |= 2;\n            ((struct ObjParticle *) objBuf[a3][parI])->flags |= 2;\n        }\n    }\n\n    parOrVtxGrp = make_group_of_type(gridType, (struct GdObj *) objBuf[0][0], NULL);\n    gridShape->vtxGroup = parOrVtxGrp;\n    gridShape->mtlGroup = mtlGroup;\n\n    gridShape->faceGroup = group_faces_in_mtl_grp(gridShape->mtlGroup, (struct GdObj *) sp40, NULL);\n\n    printf(\"grid: points=%d, faces=%d\\n\", gridShape->vtxGroup->id, gridShape->faceGroup->id);\n    return gridShape;\n}\n\n/* @ 248614 for 0x44 */\nvoid Unknown80199E44(UNUSED s32 a0, struct GdObj *a1, struct GdObj *a2, UNUSED s32 a3) {\n    UNUSED struct ObjGroup *sp1C = make_group(2, a1, a2);\n}\n\n/* @ 248658 for 0x5c */\nvoid Unknown80199E88(struct ObjFace *face) {\n    D_801BAC74 = make_plane(FALSE, face);\n\n    if (D_801BAC78 == NULL) {\n        D_801BAC78 = D_801BAC74;\n    }\n}\n\n/* @ 2486B4 for 0xbc; orig name: func_80199EE4 */\nstruct ObjNet *make_netfromshape(struct ObjShape *shape) {\n    struct ObjNet *newNet;\n\n    if (shape == NULL) {\n        fatal_printf(\"make_netfromshape(): null shape ptr\");\n    }\n\n    D_801BAC78 = NULL;\n    apply_to_obj_types_in_group(OBJ_TYPE_FACES, (applyproc_t) Unknown80199E88, shape->faceGroup);\n    D_801BAD08 = make_group_of_type(OBJ_TYPE_PLANES, (struct GdObj *) D_801BAC78, NULL);\n    newNet = make_net(0, shape, NULL, D_801BAD08, shape->vtxGroup);\n    newNet->netType = 1;\n\n    return newNet;\n}\n\n/**\n * Controls the dizzy (game over) animation of Mario's head.\n */\nvoid animate_mario_head_gameover(struct ObjAnimator *self) {\n    switch (self->state) {\n        case 0:\n            self->frame = 1.0f;\n            self->animSeqNum = 1;  // game over anim sequence\n            self->state = 1;\n            break;\n        case 1:\n            self->frame += 1.0f;\n            // After the gameover animation ends, switch to the normal animation\n            if (self->frame == 166.0f) {\n                self->frame = 69.0f;\n                self->state = 4;\n                self->controlFunc = animate_mario_head_normal;\n                self->animSeqNum = 0;  // normal anim sequence\n            }\n            break;\n    }\n}\n\n/**\n * Controls the normal animation of Mario's head. This functions like a state machine.\n */\nvoid animate_mario_head_normal(struct ObjAnimator *self) {\n    s32 state = 0; // TODO: label these states\n    s32 aBtnPressed = gGdCtrl.dragging;\n\n    switch (self->state) {\n        case 0:\n            // initialize?\n            self->frame = 1.0f;\n            self->animSeqNum = 0;  // normal anim sequence\n            state = 2;\n            self->nods = 5;\n            break;\n        case 2:\n            if (aBtnPressed) {\n                state = 5;\n            }\n\n            self->frame += 1.0f;\n\n            if (self->frame == 810.0f) {\n                self->frame = 750.0f;\n                self->nods--;\n                if (self->nods == 0) {\n                    state = 3;\n                }\n            }\n            break;\n        case 3:\n            self->frame += 1.0f;\n\n            if (self->frame == 820.0f) {\n                self->frame = 69.0f;\n                state = 4;\n            }\n            break;\n        case 4:\n            self->frame += 1.0f;\n\n            if (self->frame == 660.0f) {\n                self->frame = 661.0f;\n                state = 2;\n                self->nods = 5;\n            }\n            break;\n        case 5:\n            if (self->frame == 660.0f) {\n                state = 7;\n            } else if (self->frame > 660.0f) {\n                self->frame -= 1.0f;\n            } else if (self->frame < 660.0f) {\n                self->frame += 1.0f;\n            }\n\n            self->stillTimer = 150;\n            break;\n        case 7:  // Mario is staying still while his eyes follow the cursor\n            if (aBtnPressed) {\n                self->stillTimer = 300;\n            } else {\n                self->stillTimer--;\n                if (self->stillTimer == 0) {\n                    state = 6;\n                }\n            }\n            self->frame = 660.0f;\n            break;\n        case 6:\n            state = 2;\n            self->nods = 5;\n            break;\n    }\n\n    if (state != 0) {\n        self->state = state;\n    }\n}\n\n/**\n * Loads the Mario head from `dynlist_mario_master`, sets up grabbers, and makes\n * sparkle particles\n */\ns32 load_mario_head(void (*aniFn)(struct ObjAnimator *)) {\n    struct ObjNet *sp54; // net made with sp48 group\n    UNUSED u8 filler1[8];\n    struct ObjGroup *sp48; // Joint group\n    UNUSED u8 filler2[8];\n    struct ObjGroup *mainShapesGrp;\n    struct GdObj *sp38;       // object list head before making a bunch of joints\n    struct GdObj *faceJoint;        // joint on the face that `grabberJoint` pulls\n    struct ObjJoint *grabberJoint;  // joint that's dragged by the cursor\n    struct ObjCamera *camera;\n    struct ObjAnimator *animator;\n    struct ObjParticle *particle;\n\n    // Load Mario head from the dynlist\n\n    start_memtracker(\"mario face\");\n    d_set_name_suffix(\"l\");  // add \"l\" to the end of all dynobj names generated by the dynlist, for some reason\n\n    d_use_integer_names(TRUE);\n    animator = (struct ObjAnimator *) d_makeobj(D_ANIMATOR, AsDynName(DYNOBJ_MARIO_MAIN_ANIMATOR));\n    animator->controlFunc = aniFn;\n    d_use_integer_names(FALSE);\n    // FIXME: make segment address work once seg4 is disassembled\n    gMarioFaceGrp = (struct ObjGroup *) load_dynlist(dynlist_mario_master);\n    stop_memtracker(\"mario face\");\n\n    // Make camera\n\n    camera = (struct ObjCamera *) d_makeobj(D_CAMERA, NULL);\n    d_set_rel_pos(0.0f, 200.0f, 2000.0f);\n    d_set_world_pos(0.0f, 200.0f, 2000.0f);\n    d_set_flags(4);\n    camera->lookAt.x = 0.0f;\n    camera->lookAt.y = 200.0f;\n    camera->lookAt.z = 0.0f;\n\n    addto_group(gMarioFaceGrp, &camera->header);\n    addto_group(gMarioFaceGrp, &animator->header);\n\n    d_set_name_suffix(NULL);  // stop adding \"l\" to generated dynobj names\n\n    // Make sparkle particles\n\n    particle = make_particle(0, COLOUR_WHITE, 0.0f, 0.0f, 0.0f);\n    particle->unk60 = 3;\n    particle->unk64 = 3;\n    particle->attachedToObj = &camera->header;\n    particle->shapePtr = gShapeSilverSpark;\n    addto_group(gGdLightGroup, &particle->header);\n\n    particle = make_particle(0, COLOUR_WHITE, 0.0f, 0.0f, 0.0f);\n    particle->unk60 = 3;\n    particle->unk64 = 2;\n    particle->attachedToObj = d_use_obj(\"N228l\"); // DYNOBJ_SILVER_STAR_LIGHT\n    particle->shapePtr = gShapeSilverSpark;\n    addto_group(gGdLightGroup, &particle->header);\n\n    particle = make_particle(0, COLOUR_RED, 0.0f, 0.0f, 0.0f);\n    particle->unk60 = 3;\n    particle->unk64 = 2;\n    particle->attachedToObj = d_use_obj(\"N231l\"); // DYNOBJ_RED_STAR_LIGHT\n    particle->shapePtr = gShapeRedSpark;\n    addto_group(gGdLightGroup, &particle->header);\n\n    mainShapesGrp = (struct ObjGroup *) d_use_obj(\"N1000l\");  // DYNOBJ_MARIO_MAIN_SHAPES_GROUP\n    create_gddl_for_shapes(mainShapesGrp);\n    sp38 = gGdObjectList;\n\n    // Make grabbers to move the face with the cursor\n\n    grabberJoint = make_grabber_joint(sGrabJointTestShape, 0, -500.0f, 0.0f, -150.0f);\n    faceJoint = d_use_obj(\"N167l\");  // DYNOBJ_MARIO_LEFT_EAR_JOINT_1\n    grabberJoint->attachedObjsGrp = make_group(1, faceJoint);\n\n    grabberJoint = make_grabber_joint(sGrabJointTestShape, 0, 500.0f, 0.0f, -150.0f);\n    faceJoint = d_use_obj(\"N176l\");  // DYNOBJ_MARIO_RIGHT_EAR_JOINT_1\n    grabberJoint->attachedObjsGrp = make_group(1, faceJoint);\n\n    grabberJoint = make_grabber_joint(sGrabJointTestShape, 0, 0.0f, 700.0f, 300.0f);\n    faceJoint = d_use_obj(\"N131l\");  // DYNOBJ_MARIO_CAP_JOINT_1\n    grabberJoint->attachedObjsGrp = make_group(1, faceJoint);\n\n    // drag eyelids and eyebrows along with cap?\n    faceJoint = d_use_obj(\"N206l\");  // DYNOBJ_LEFT_EYELID_JOINT_1\n    addto_group(grabberJoint->attachedObjsGrp, faceJoint);\n    faceJoint = d_use_obj(\"N215l\");  // DYNOBJ_RIGHT_EYELID_JOINT_1\n    addto_group(grabberJoint->attachedObjsGrp, faceJoint);\n    faceJoint = d_use_obj(\"N31l\");  // DYNOBJ_MARIO_LEFT_EYEBROW_MPART_JOINT_1\n    addto_group(grabberJoint->attachedObjsGrp, faceJoint);\n    faceJoint = d_use_obj(\"N65l\");  // DYNOBJ_MARIO_RIGHT_EYEBROW_MPART_JOINT_1\n    addto_group(grabberJoint->attachedObjsGrp, faceJoint);\n\n    grabberJoint = make_grabber_joint(sGrabJointTestShape, 0, 0.0f, 0.0f, 600.0f);\n    faceJoint = d_use_obj(\"N185l\");  // DYNOBJ_MARIO_NOSE_JOINT_1\n    grabberJoint->attachedObjsGrp = make_group(1, faceJoint);\n\n    grabberJoint = make_grabber_joint(sGrabJointTestShape, 0, 0.0f, -300.0f, 300.0f);\n    faceJoint = d_use_obj(\"N194l\");  // DYNOBJ_MARIO_LEFT_JAW_JOINT\n    grabberJoint->attachedObjsGrp = make_group(1, faceJoint);\n\n    grabberJoint = make_grabber_joint(sGrabJointTestShape, 0, 250.0f, -150.0f, 300.0f);\n    faceJoint = d_use_obj(\"N158l\");  // DYNOBJ_MARIO_RIGHT_LIP_CORNER_JOINT_1\n    grabberJoint->attachedObjsGrp = make_group(1, faceJoint);\n\n    faceJoint = d_use_obj(\"N15l\");  // DYNOBJ_MARIO_LEFT_MUSTACHE_JOINT_1\n    addto_group(grabberJoint->attachedObjsGrp, faceJoint);\n\n    grabberJoint = make_grabber_joint(sGrabJointTestShape, 0, -250.0f, -150.0f, 300.0f);\n    faceJoint = d_use_obj(\"N149l\");  // DYNOBJ_MARIO_LEFT_LIP_CORNER_JOINT_1\n    grabberJoint->attachedObjsGrp = make_group(1, faceJoint);\n\n    faceJoint = d_use_obj(\"N6l\");  // DYNOBJ_MARIO_RIGHT_MUSTACHE_JOINT_1\n    addto_group(grabberJoint->attachedObjsGrp, faceJoint);\n\n    // make the left eye follow cursor\n    grabberJoint = make_grabber_joint(sGrabJointTestShape, 0, 100.0f, 200.0f, 400.0f);\n    faceJoint = d_use_obj(\"N112l\");  // DYNOBJ_MARIO_RIGHT_EYE_UNKNOWN_NET\n    grabberJoint->attachedObjsGrp = make_group(1, faceJoint);\n    grabberJoint->updateFunc = eye_joint_update_func;\n    grabberJoint->rootAnimator = animator;\n    grabberJoint->header.drawFlags &= ~OBJ_IS_GRABBABLE;\n\n    // make the right eye follow cursor\n    grabberJoint = make_grabber_joint(sGrabJointTestShape, 0, -100.0f, 200.0f, 400.0f);\n    faceJoint = d_use_obj(\"N96l\");  // DYNOBJ_MARIO_LEFT_EYE_UNKNOWN_NET\n    grabberJoint->attachedObjsGrp = make_group(1, faceJoint);\n    grabberJoint->updateFunc = eye_joint_update_func;\n    grabberJoint->rootAnimator = animator;\n    grabberJoint->header.drawFlags &= ~OBJ_IS_GRABBABLE;\n\n    sp48 = make_group_of_type(OBJ_TYPE_JOINTS, sp38, NULL);\n    sp54 = make_net(0, NULL, sp48, NULL, NULL);\n    sp54->netType = 3;\n    addto_group(gMarioFaceGrp, &sp48->header);\n    addto_groupfirst(gMarioFaceGrp, &sp54->header);\n\n    return 0;\n}\n\n/* @ 249288 for 0xe0 */\nvoid load_shapes2(void) {\n    imin(\"load_shapes2()\");\n    reset_dynlist();\n    func_80197280();\n\n    sCubeShape = make_shape(0, \"cube\");\n\n    gSpotShape = (struct ObjShape *) load_dynlist(dynlist_spot_shape);\n    scale_verts_in_shape(gSpotShape, 200.0f, 200.0f, 200.0f);\n\n    sGrabJointTestShape = (struct ObjShape *) load_dynlist(dynlist_test_cube);\n    scale_verts_in_shape(sGrabJointTestShape, 30.0f, 30.0f, 30.0f);\n\n    sCubeShapeGroup = make_group_of_type(OBJ_TYPE_SHAPES, &sCubeShape->header, NULL);\n    create_gddl_for_shapes(sCubeShapeGroup);\n\n    imout();\n}\n\n/* @ 249368 -> 249594 */\nstruct ObjGroup *Unknown8019AB98(UNUSED u32 a0) {\n    struct ObjLight *light1;\n    struct ObjLight *light2;\n    struct GdObj *oldObjHead = gGdObjectList; // obj head node before making lights\n\n    light1 = make_light(0, NULL, 0);\n    light1->position.x = 100.0f;\n    light1->position.y = 200.0f;\n    light1->position.z = 300.0f;\n\n    light1->diffuse.r = 1.0f;\n    light1->diffuse.g = 0.0f;\n    light1->diffuse.b = 0.0f;\n\n    light1->unk30 = 1.0f;\n\n    light1->unk68.x = 0.4f;\n    light1->unk68.y = 0.9f;\n\n    light1->unk80.x = 4.0f;\n    light1->unk80.y = 4.0f;\n    light1->unk80.z = 2.0f;\n\n    light2 = make_light(0, NULL, 1);\n    light2->position.x = 100.0f;\n    light2->position.y = 200.0f;\n    light2->position.z = 300.0f;\n\n    light2->diffuse.r = 0.0f;\n    light2->diffuse.g = 0.0f;\n    light2->diffuse.b = 1.0f;\n\n    light2->unk30 = 1.0f;\n\n    light2->unk80.x = -4.0f;\n    light2->unk80.y = 4.0f;\n    light2->unk80.z = -2.0f;\n\n    gGdLightGroup = make_group_of_type(OBJ_TYPE_LIGHTS, oldObjHead, NULL);\n\n    return gGdLightGroup;\n}\n\n/* @ 249594 for 0x100 */\nstruct ObjGroup *Unknown8019ADC4(UNUSED u32 a0) {\n    UNUSED struct ObjLight *unusedLight;\n    struct ObjLight *newLight;\n    struct GdObj *oldObjHead;\n\n    unusedLight = make_light(0, NULL, 0);\n    oldObjHead = gGdObjectList;\n    newLight = make_light(0, NULL, 0);\n\n    newLight->position.x = 0.0f;\n    newLight->position.y = -500.0f;\n    newLight->position.z = 0.0f;\n\n    newLight->diffuse.r = 1.0f;\n    newLight->diffuse.g = 0.0f;\n    newLight->diffuse.b = 0.0f;\n\n    newLight->unk30 = 1.0f;\n\n    gGdLightGroup = make_group_of_type(OBJ_TYPE_LIGHTS, oldObjHead, NULL);\n\n    return gGdLightGroup;\n}\n\n/* @ 249694 for 0x5c */\nstruct ObjGroup *Unknown8019AEC4(UNUSED u32 a0) {\n    UNUSED u8 filler[8];\n    UNUSED struct GdObj *sp1C = gGdObjectList;\n\n    gGdLightGroup = make_group(0);\n\n    return gGdLightGroup;\n}\n"
  },
  {
    "path": "src/goddard/shape_helper.h",
    "content": "#ifndef GD_SHAPE_HELPER_H\n#define GD_SHAPE_HELPER_H\n\n#include <PR/ultratypes.h>\n\n#include \"gd_types.h\"\n\n// data\nextern struct ObjGroup *gMarioFaceGrp;\nextern struct ObjShape *gSpotShape;\nextern struct ObjShape *gShapeRedSpark;\nextern struct ObjShape *gShapeSilverSpark;\nextern struct ObjShape *gShapeRedStar;\nextern struct ObjShape *gShapeSilverStar;\n\n// functions\nvoid calc_face_normal(struct ObjFace *face);\nstruct ObjVertex *gd_make_vertex(f32 x, f32 y, f32 z);\nvoid add_3_vtx_to_face(struct ObjFace *face, struct ObjVertex *vtx1, struct ObjVertex *vtx2, struct ObjVertex *vtx3);\nstruct ObjShape *make_shape(s32 flag, const char *name);\nvoid scale_verts_in_shape(struct ObjShape *shape, f32 x, f32 y, f32 z);\nstruct ObjNet *make_netfromshape(struct ObjShape *shape);\nvoid animate_mario_head_gameover(struct ObjAnimator *self);\nvoid animate_mario_head_normal(struct ObjAnimator *self);\ns32 load_mario_head(void (*aniFn)(struct ObjAnimator *));\nvoid load_shapes2(void);\n\n// see bad_declarations.h\n#ifndef GD_USE_BAD_DECLARATIONS\nstruct ObjFace* make_face_with_colour(f32 r, f32 g, f32 b);\n#endif\n\n#endif // GD_SHAPE_HELPER_H\n"
  },
  {
    "path": "src/goddard/skin.c",
    "content": "#include <PR/ultratypes.h>\n\n#ifdef VERSION_EU\n#include \"prevent_bss_reordering.h\"\n#endif\n\n#include \"debug_utils.h\"\n#include \"gd_main.h\"\n#include \"gd_math.h\"\n#include \"gd_types.h\"\n#include \"joints.h\"\n#include \"macros.h\"\n#include \"objects.h\"\n#include \"particles.h\"\n#include \"renderer.h\"\n#include \"skin.h\"\n#include \"skin_movement.h\"\n\n// bss\nstruct ObjNet *gGdSkinNet; // @ 801BAAF0\n\nstatic s32 D_801BAAF4;\nstatic s32 sNetCount; // @ 801BAAF8\n\n/* 2406E0 -> 240894 */\nvoid compute_net_bounding_box(struct ObjNet *net) {\n    reset_bounding_box();\n    if (net->unk1D0 != NULL) {\n        apply_to_obj_types_in_group(OBJ_TYPE_ALL, (applyproc_t) add_obj_pos_to_bounding_box, net->unk1D0);\n    }\n    if (net->unk1C8 != NULL) {\n        apply_to_obj_types_in_group(OBJ_TYPE_ALL, (applyproc_t) add_obj_pos_to_bounding_box, net->unk1C8);\n    }\n    gSomeBoundingBox.minX *= net->scale.x;\n    gSomeBoundingBox.maxX *= net->scale.x;\n    gSomeBoundingBox.minY *= net->scale.y;\n    gSomeBoundingBox.maxY *= net->scale.y;\n    gSomeBoundingBox.minZ *= net->scale.z;\n    gSomeBoundingBox.maxZ *= net->scale.z;\n\n    net->boundingBox.minX = gSomeBoundingBox.minX;\n    net->boundingBox.minY = gSomeBoundingBox.minY;\n    net->boundingBox.minZ = gSomeBoundingBox.minZ;\n    net->boundingBox.maxX = gSomeBoundingBox.maxX;\n    net->boundingBox.maxY = gSomeBoundingBox.maxY;\n    net->boundingBox.maxZ = gSomeBoundingBox.maxZ;\n}\n\n/* 240894 -> 240A64; orig name: func_801920C4 */\nvoid reset_net(struct ObjNet *net) {\n    struct ObjGroup *grp;\n\n    printf(\"reset_net %d\\n\", net->id);\n\n    net->worldPos.x = net->initPos.x;\n    net->worldPos.y = net->initPos.y;\n    net->worldPos.z = net->initPos.z;\n    net->velocity.x = net->velocity.y = net->velocity.z = 0.0f;\n    net->torque.x = net->torque.y = net->torque.z = 0.0f;\n\n    compute_net_bounding_box(net);\n    gd_print_vec(\"net scale: \", &net->scale);\n    gd_print_bounding_box(\"net box: \", &net->boundingBox);\n\n    gGdSkinNet = net;\n    D_801BAAF4 = 0;\n    gd_set_identity_mat4(&net->mat168);\n    gd_set_identity_mat4(&net->matE8);\n    gd_rot_mat_about_vec(&net->matE8, &net->unk68); // set rot mtx to initial rotation?\n    gd_add_vec3f_to_mat4f_offset(&net->matE8, &net->worldPos); // set to initial position?\n    gd_copy_mat4f(&net->matE8, &net->mat128);\n\n    if ((grp = net->unk1C8) != NULL) {\n        apply_to_obj_types_in_group(OBJ_TYPE_JOINTS, (applyproc_t) reset_joint, grp);\n        apply_to_obj_types_in_group(OBJ_TYPE_JOINTS, (applyproc_t) func_80191220, grp);\n        apply_to_obj_types_in_group(OBJ_TYPE_BONES, (applyproc_t) func_8018FB58, grp);\n        apply_to_obj_types_in_group(OBJ_TYPE_BONES, (applyproc_t) func_8018FA68, grp);\n    }\n}\n\n/* 240A64 -> 240ACC */\nvoid func_80192294(struct ObjNet *net) {\n    UNUSED s32 sp1C = 0;\n\n    if (net->attachedToObj == NULL) {\n        restart_timer(\"childpos\");\n        sp1C = transform_child_objects_recursive(&net->header, NULL);\n        split_timer(\"childpos\");\n    }\n}\n\n/* 240ACC -> 240B84 */\nvoid func_801922FC(struct ObjNet *net) {\n    struct ObjGroup *group; // 24\n    UNUSED u8 filler[8];\n\n    gGdSkinNet = net;\n    // TODO: netype constants?\n    if (net->netType == 4) {\n        if (net->shapePtr != NULL) {\n            D_801B9E38 = &net->mat128;\n            scale_verts(net->shapePtr->vtxGroup);\n        }\n        if ((group = net->unk1C8) != NULL) {\n            apply_to_obj_types_in_group(OBJ_TYPE_JOINTS, (applyproc_t) reset_joint_weights, group);\n        }\n    }\n}\n\n/* 240B84 -> 240CF8 */\nstruct ObjNet *make_net(UNUSED s32 a0, struct ObjShape *shapedata, struct ObjGroup *a2,\n                        struct ObjGroup *a3, struct ObjGroup *a4) {\n    struct ObjNet *net;\n\n    net = (struct ObjNet *) make_object(OBJ_TYPE_NETS);\n    gd_set_identity_mat4(&net->mat128);\n    net->initPos.x = net->initPos.y = net->initPos.z = 0.0f;\n    net->id = ++sNetCount;\n    net->scale.x = net->scale.y = net->scale.z = 1.0f;\n    net->shapePtr = shapedata;\n    net->unk1C8 = a2;\n    net->unk1CC = a3;\n    net->unk1D0 = a4;\n    net->netType = 0;\n    net->ctrlType = 0;\n    net->unk21C = NULL;\n    net->unk3C = 1;\n    net->colourNum = 0;\n    net->skinGrp = NULL;\n    reset_net(net);\n\n    return net;\n}\n\n/* 240CF8 -> 240E74 */\nvoid func_80192528(struct ObjNet *net) {\n    net->unusedForce.x = net->unusedForce.y = net->unusedForce.z = 0.0f;\n    net->collDisp.x = net->collDisp.y = net->collDisp.z = 0.0f;\n    net->collTorque.x = net->collTorque.y = net->collTorque.z = 0.0f;\n    net->unusedCollDispOff.x = net->unusedCollDispOff.y = net->unusedCollDispOff.z = 0.0f;\n    net->unusedCollMaxD = 0.0f;\n\n    gGdCounter.ctr0 = 0;\n    gGdCounter.ctr1 = 0;\n    D_801B9E18.x = 0.0f;\n    D_801B9E18.y = 0.0f;\n    D_801B9E18.z = 0.0f;\n    D_801B9E28.x = 0.0f;\n    D_801B9E28.y = 0.0f;\n    D_801B9E28.z = 0.0f;\n    D_801B9E34 = 0.0f;\n\n    if (net->flags & 0x1) {\n        net->velocity.y += -4.0; //? 4.0f\n    }\n\n    net->worldPos.x += net->velocity.x / 1.0f;\n    net->worldPos.y += net->velocity.y / 1.0f;\n    net->worldPos.z += net->velocity.z / 1.0f;\n}\n\n/* 240E74 -> 2412A0 */\nvoid collision_something_801926A4(struct ObjNet *net) {\n    if (gGdCounter.ctr1 != 0) {\n        if (D_801B9E34 != 0.0f) {\n            D_801B9E28.x /= D_801B9E34;\n            D_801B9E28.y /= D_801B9E34;\n            D_801B9E28.z /= D_801B9E34;\n        }\n\n        D_801B9E28.x *= 1.0 / gGdCounter.ctr1; // !1.0f\n        D_801B9E28.y *= 1.0 / gGdCounter.ctr1; // !1.0f\n        D_801B9E28.z *= 1.0 / gGdCounter.ctr1; // !1.0f\n        D_801B9E18.x *= 1.0 / gGdCounter.ctr1; // !1.0f\n        D_801B9E18.y *= 1.0 / gGdCounter.ctr1; // !1.0f\n        D_801B9E18.z *= 1.0 / gGdCounter.ctr1; // !1.0f\n\n        func_8017E584(gGdSkinNet, &D_801B9E28, &D_801B9E18);\n        func_8017E838(gGdSkinNet, &D_801B9E28, &D_801B9E18);\n    }\n\n    net->torque.x += net->collTorque.x;\n    net->torque.y += net->collTorque.y;\n    net->torque.z += net->collTorque.z;\n    net->collDisp.x *= 1.0; // 1.0f;\n    net->collDisp.y *= 1.0; // 1.0f;\n    net->collDisp.z *= 1.0; // 1.0f;\n    net->velocity.x += net->collDisp.x;\n    net->velocity.y += net->collDisp.y;\n    net->velocity.z += net->collDisp.z;\n    net->worldPos.x += net->collDisp.x;\n    net->worldPos.y += net->collDisp.y;\n    net->worldPos.z += net->collDisp.z;\n    func_8017E9EC(net);\n\n    net->torque.x *= 0.98; //? 0.98f\n    net->torque.z *= 0.98; //? 0.98f\n    net->torque.y *= 0.9;  //? 0.9f\n}\n\n/* 2412A0 -> 24142C; not called */\nvoid func_80192AD0(struct ObjNet *net) {\n    UNUSED u8 filler1[4];\n    struct ObjGroup *sp60;\n    UNUSED u8 filler2[68];\n    struct ObjNet *sp18;\n\n    if ((sp60 = net->unk1C8) == NULL) {\n        return;\n    }\n\n    sp18 = net->unk1F0;\n    net->worldPos.x = net->unk1F4.x;\n    net->worldPos.y = net->unk1F4.y;\n    net->worldPos.z = net->unk1F4.z;\n    gd_rotate_and_translate_vec3f(&net->worldPos, &sp18->mat128);\n\n    net->worldPos.x += net->unk1F0->worldPos.x;\n    net->worldPos.y += net->unk1F0->worldPos.y;\n    net->worldPos.z += net->unk1F0->worldPos.z;\n    net->unk200.x = 0.0f;\n    net->unk200.y = 10.0f;\n    net->unk200.z = -4.0f;\n    gd_rotate_and_translate_vec3f(&net->unk200, &sp18->mat128);\n\n    apply_to_obj_types_in_group(OBJ_TYPE_JOINTS, (applyproc_t) func_80191824, sp60);\n    func_80191E88(sp60);\n    apply_to_obj_types_in_group(OBJ_TYPE_BONES, (applyproc_t) func_8018F328, net->unk20C);\n}\n\n/* 24142C -> 24149C; orig name: func_80192C5C */\nvoid move_bonesnet(struct ObjNet *net) {\n    struct ObjGroup *sp24;\n    UNUSED u8 filler[12];\n\n    imin(\"move_bonesnet\");\n    gd_set_identity_mat4(&D_801B9DC8);\n    if ((sp24 = net->unk1C8) != NULL) {\n        apply_to_obj_types_in_group(OBJ_TYPE_JOINTS, (applyproc_t) func_801913C0, sp24);\n    }\n    imout();\n}\n\n/* 24149C -> 241768 */\nvoid func_80192CCC(struct ObjNet *net) {\n    Mat4f sp38;\n    UNUSED struct GdControl *ctrl; // 34\n    struct ObjGroup *group;        // 30\n    struct GdVec3f sp24;\n\n    ctrl = &gGdCtrl;\n    if (gGdCtrl.unk2C != NULL) {\n        menu_cb_reset_positions();\n    }\n    gd_set_identity_mat4(&D_801B9DC8);\n\n    if (gGdCtrl.unk30 != NULL) {\n        sp24.x = net->mat128[0][0];\n        sp24.y = net->mat128[0][1];\n        sp24.z = net->mat128[0][2];\n        gd_create_rot_mat_angular(&sp38, &sp24, 4.0f);\n        gd_mult_mat4f(&sp38, &D_801B9DC8, &D_801B9DC8);\n        net->torque.x = net->torque.y = net->torque.z = 0.0f;\n    }\n\n    if (gGdCtrl.unk28 != NULL) {\n        sp24.x = net->mat128[0][0];\n        sp24.y = net->mat128[0][1];\n        sp24.z = net->mat128[0][2];\n        gd_create_rot_mat_angular(&sp38, &sp24, -4.0f);\n        gd_mult_mat4f(&sp38, &D_801B9DC8, &D_801B9DC8);\n        net->torque.x = net->torque.y = net->torque.z = 0.0f;\n    }\n\n    if (gGdCtrl.newStartPress) {\n        return;\n    } // start was pressed\n\n    switch (net->ctrlType) {\n        case 2:\n            break;\n    }\n\n    func_80192528(net);\n    if ((group = net->unk1C8) != NULL) {\n        apply_to_obj_types_in_group(OBJ_TYPE_JOINTS, (applyproc_t) func_80191220, group);\n        apply_to_obj_types_in_group(OBJ_TYPE_JOINTS, (applyproc_t) func_801913F0, group);\n        apply_to_obj_types_in_group(OBJ_TYPE_JOINTS, (applyproc_t) stub_joints_2, group);\n        apply_to_obj_types_in_group(OBJ_TYPE_JOINTS, (applyproc_t) func_801911A8, group);\n    }\n\n    collision_something_801926A4(net);\n    gd_mult_mat4f(&net->mat128, &D_801B9DC8, &net->mat128);\n    if (group != NULL) {\n        apply_to_obj_types_in_group(OBJ_TYPE_JOINTS, (applyproc_t) func_801913C0, group);\n        apply_to_obj_types_in_group(OBJ_TYPE_BONES, (applyproc_t) func_8018FA68, group);\n    }\n}\n\n/* 241768 -> 241AB4; orig name: func_80192F98 */\nvoid convert_gd_verts_to_Vn(struct ObjGroup *grp) {\n    UNUSED u8 filler1[20];\n    Vtx *vn;       // 28\n    u8 nx, ny, nz; // 24, 25, 26\n    UNUSED u8 filler2[4];\n    register struct VtxLink *vtxlink; // a1\n#ifndef GBI_FLOATS\n    register s16 *vnPos;              // a2\n#endif\n    register s16 x;                   // a3\n    register s16 y;                   // t0\n    register s16 z;                   // t1\n    register struct ObjVertex *vtx;   // t2\n    register struct ListNode *link;      // t3\n    struct GdObj *obj;                // sp4\n\n    for (link = grp->firstMember; link != NULL; link = link->next) {\n        obj = link->obj;\n        vtx = (struct ObjVertex *) obj;\n        x = (s16) vtx->pos.x;\n        y = (s16) vtx->pos.y;\n        z = (s16) vtx->pos.z;\n\n        nx = (u8)(vtx->normal.x * 255.0f);\n        ny = (u8)(vtx->normal.y * 255.0f);\n        nz = (u8)(vtx->normal.z * 255.0f);\n\n        for (vtxlink = vtx->gbiVerts; vtxlink != NULL; vtxlink = vtxlink->prev) {\n#ifndef GBI_FLOATS\n            vnPos = vtxlink->data->n.ob;\n            vn = vtxlink->data;\n            *vnPos++ = x;\n            *vnPos++ = y;\n            *vnPos++ = z;\n#else\n            vn = vtxlink->data;\n            vn->n.ob[0] = x;\n            vn->n.ob[1] = y;\n            vn->n.ob[2] = z;\n#endif\n            vn->n.n[0] = nx;\n            vn->n.n[1] = ny;\n            vn->n.n[2] = nz;\n        }\n    }\n}\n\n/* 241AB4 -> 241BCC; orig name: func_801932E4 */\nvoid convert_gd_verts_to_Vtx(struct ObjGroup *grp) {\n    UNUSED u8 filler[24];\n    register struct VtxLink *vtxlink; // a1\n#ifndef GBI_FLOATS\n    register s16 *vtxcoords;          // a2\n#endif\n    register s16 x;                   // a3\n    register s16 y;                   // t0\n    register s16 z;                   // t1\n    register struct ObjVertex *vtx;   // t2\n    register struct ListNode *link;      // t3\n    struct GdObj *obj;                // sp4\n\n    for (link = grp->firstMember; link != NULL; link = link->next) {\n        obj = link->obj;\n        vtx = (struct ObjVertex *) obj;\n        x = (s16) vtx->pos.x;\n        y = (s16) vtx->pos.y;\n        z = (s16) vtx->pos.z;\n\n        for (vtxlink = vtx->gbiVerts; vtxlink != NULL; vtxlink = vtxlink->prev) {\n#ifndef GBI_FLOATS\n            vtxcoords = vtxlink->data->v.ob;\n            vtxcoords[0] = x;\n            vtxcoords[1] = y;\n            vtxcoords[2] = z;\n#else\n            vtxlink->data->v.ob[0] = x;\n            vtxlink->data->v.ob[1] = y;\n            vtxlink->data->v.ob[2] = z;\n#endif\n        }\n    }\n}\n\n/* 241BCC -> 241CA0; orig name: Proc801933FC */\nvoid convert_net_verts(struct ObjNet *net) {\n    if (net->shapePtr != NULL) {\n        if (net->shapePtr->unk30) {\n            convert_gd_verts_to_Vn(net->shapePtr->vtxGroup);\n        }\n    }\n\n    switch (net->netType) {\n        case 2:\n            if (net->shapePtr != NULL) {\n                convert_gd_verts_to_Vtx(net->shapePtr->scaledVtxGroup);\n            }\n            break;\n    }\n}\n\n/* 241CA0 -> 241D6C */\nstatic void move_joints_in_net(struct ObjNet *net) {\n    struct ObjGroup *grp;        // 2c\n    register struct ListNode *link; // s0\n    struct GdObj *obj;           // 24\n\n    if ((grp = net->unk1C8) != NULL) {\n        for (link = grp->firstMember; link != NULL; link = link->next) {\n            obj = link->obj;\n            switch (obj->type) {\n                case OBJ_TYPE_JOINTS:\n                    if (((struct ObjJoint *) obj)->updateFunc != NULL) {\n                        (*((struct ObjJoint *) obj)->updateFunc)((struct ObjJoint *) obj);\n                    }\n                    break;\n                default:;\n            }\n        }\n    }\n}\n\n/* 241D6C -> 241E94; orig name: func_8019359C */\nvoid move_net(struct ObjNet *net) {\n    gGdSkinNet = net;\n\n    switch (net->netType) {\n        case 1:\n            break;\n        case 7:\n            func_80192CCC(net);\n            break;\n        case 4:\n            restart_timer(\"move_bones\");\n            move_bonesnet(net);\n            split_timer(\"move_bones\");\n            break;\n        case 2:\n            restart_timer(\"move_skin\");\n            move_skin(net);\n            split_timer(\"move_skin\");\n            break;\n        case 3:\n            move_joints_in_net(net);\n            break;\n        case 5:\n            func_801823A0(net);\n            break;\n        case 6:\n            break;\n        default:\n            fatal_printf(\"move_net(%d(%d)): Undefined net type\", net->id, net->netType);\n    }\n}\n\n/* 241E94 -> 241F0C; orig name: func_801936C4 */\nvoid move_nets(struct ObjGroup *group) {\n    imin(\"move_nets\");\n    restart_timer(\"move_nets\");\n    apply_to_obj_types_in_group(OBJ_TYPE_NETS, (applyproc_t) func_80192294, group);\n    apply_to_obj_types_in_group(OBJ_TYPE_NETS, (applyproc_t) move_net, group);\n    split_timer(\"move_nets\");\n    imout();\n}\n\n/* 241F0C -> 242018 */\nvoid func_8019373C(struct ObjNet *net) {\n    register struct ListNode *link;\n    struct ObjVertex *vtx;\n\n    switch (net->netType) {\n        case 2:\n            if (net->shapePtr != NULL) {\n                net->shapePtr->scaledVtxGroup = make_group(0);\n                for (link = net->shapePtr->vtxGroup->firstMember; link != NULL; link = link->next) {\n                    vtx = (struct ObjVertex *) link->obj;\n                    if (vtx->scaleFactor != 1.0) {\n                        addto_group(net->shapePtr->scaledVtxGroup, &vtx->header);\n                    }\n                }\n            }\n            break;\n    }\n}\n\n/* 242018 -> 24208C */\nvoid func_80193848(struct ObjGroup *group) {\n    apply_to_obj_types_in_group(OBJ_TYPE_NETS, (applyproc_t) reset_net, group);\n    apply_to_obj_types_in_group(OBJ_TYPE_NETS, (applyproc_t) func_80192294, group);\n    apply_to_obj_types_in_group(OBJ_TYPE_NETS, (applyproc_t) func_801922FC, group);\n    apply_to_obj_types_in_group(OBJ_TYPE_NETS, (applyproc_t) func_8019373C, group);\n}\n\n/* 24208C -> 2422E0; not called; orig name: func_801938BC */\nvoid gd_print_net(struct ObjNet *net) {\n    gd_printf(\"Flags:%x\\n\", net->flags);\n    gd_print_vec(\"World:\", &net->worldPos);\n    gd_print_vec(\"Force:\", &net->unusedForce);\n    gd_print_vec(\"Vel:\", &net->velocity);\n    gd_print_vec(\"Rot:\", &net->rotation);\n    gd_print_vec(\"CollDisp:\", &net->collDisp);\n    gd_print_vec(\"CollTorque:\", &net->collTorque);\n    gd_print_vec(\"CollTorqueL:\", &net->unusedCollTorqueL);\n    gd_print_vec(\"CollTorqueD:\", &net->unusedCollTorqueD);\n    gd_print_vec(\"Torque:\", &net->torque);\n    gd_print_vec(\"CofG:\", &net->centerOfGravity);\n    gd_print_bounding_box(\"BoundBox:\", &net->boundingBox);\n    gd_print_vec(\"CollDispOff:\", &net->unusedCollDispOff);\n    gd_printf(\"CollMaxD: %f\\n\", net->unusedCollMaxD);\n    gd_printf(\"MaxRadius: %f\\n\", net->maxRadius);\n    gd_print_mtx(\"Matrix:\", &net->mat128);\n    if (net->shapePtr != NULL) {\n        gd_printf(\"ShapePtr: %x (%s)\\n\", (u32) (uintptr_t) net->shapePtr, net->shapePtr->name);\n    } else {\n        gd_printf(\"ShapePtr: NULL\\n\");\n    }\n    gd_print_vec(\"Scale:\", &net->scale);\n    gd_printf(\"Mass: %f\\n\", net->unusedMass);\n    gd_printf(\"NumModes: %d\\n\", net->numModes);\n    gd_printf(\"NodeGroup: %x\\n\", (u32) (uintptr_t) net->unk1C8);\n    gd_printf(\"PlaneGroup: %x\\n\", (u32) (uintptr_t) net->unk1CC);\n    gd_printf(\"VertexGroup: %x\\n\", (u32) (uintptr_t) net->unk1D0);\n}\n\n/* 2422E0 -> 2422F8; orig name: func_80193B10 */\nvoid reset_net_count(void) {\n    sNetCount = 0;\n}\n"
  },
  {
    "path": "src/goddard/skin.h",
    "content": "#ifndef GD_SKIN_H\n#define GD_SKIN_H\n\n#include <PR/ultratypes.h>\n\n#include \"gd_types.h\"\n\n// bss\nextern struct ObjNet* gGdSkinNet;   // @ 801BAAF0\n\n// functions\nvoid reset_net(struct ObjNet *net);\nstruct ObjNet *make_net(UNUSED s32 a0, struct ObjShape *shapedata, struct ObjGroup *a2,\n                        struct ObjGroup *a3, struct ObjGroup *a4);\nvoid convert_net_verts(struct ObjNet *net);\nvoid move_nets(struct ObjGroup *group);\nvoid func_80193848(struct ObjGroup *group);\nvoid reset_net_count(void);\n\n#endif // GD_SKIN_H\n"
  },
  {
    "path": "src/goddard/skin_movement.c",
    "content": "#include <PR/ultratypes.h>\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n#include \"prevent_bss_reordering.h\"\n#endif\n\n#include \"debug_utils.h\"\n#include \"gd_math.h\"\n#include \"gd_types.h\"\n#include \"joints.h\"\n#include \"macros.h\"\n#include \"objects.h\"\n#include \"skin.h\"\n#include \"skin_movement.h\"\n\n/* bss */\nstruct ObjWeight *sResetCurWeight;\nstatic Mat4f D_801B9EA8; // TODO: rename to sHead2Mtx?\nstatic struct ObjJoint *D_801B9EE8;  // set but not used\n\n/* @ 22FDB0 for 0x180 */\nvoid func_801815E0(Mat4f *mtx) {\n    struct GdVec3f scratchVec;\n\n    scratchVec.x = (*mtx)[0][0];\n    scratchVec.y = (*mtx)[0][1];\n    scratchVec.z = (*mtx)[0][2];\n    gd_normalize_vec3f(&scratchVec);\n    (*mtx)[0][0] = scratchVec.x;\n    (*mtx)[0][1] = scratchVec.y;\n    (*mtx)[0][2] = scratchVec.z;\n\n    scratchVec.x = (*mtx)[1][0];\n    scratchVec.y = (*mtx)[1][1];\n    scratchVec.z = (*mtx)[1][2];\n    gd_normalize_vec3f(&scratchVec);\n    (*mtx)[1][0] = scratchVec.x;\n    (*mtx)[1][1] = scratchVec.y;\n    (*mtx)[1][2] = scratchVec.z;\n\n    scratchVec.x = (*mtx)[2][0];\n    scratchVec.y = (*mtx)[2][1];\n    scratchVec.z = (*mtx)[2][2];\n    gd_normalize_vec3f(&scratchVec);\n    (*mtx)[2][0] = scratchVec.x;\n    (*mtx)[2][1] = scratchVec.y;\n    (*mtx)[2][2] = scratchVec.z;\n}\n\n/* @ 22FF30 for 0xDC */\n/* called with ObjNext->unk1A8 (variable obj ptr?) ->unk20 or ->unk24 ptr*/\n// TODO: figure out the proper object type for a0\nvoid scale_verts(struct ObjGroup *a0) {\n    register f32 sp1C;\n    register struct ListNode *link;\n    struct ObjVertex *vtx;\n\n    for (link = a0->firstMember; link != NULL; link = link->next) {\n        vtx = (struct ObjVertex *) link->obj;\n\n        if ((sp1C = vtx->scaleFactor) != 0.0f) {\n            vtx->pos.x = vtx->initPos.x * sp1C;\n            vtx->pos.y = vtx->initPos.y * sp1C;\n            vtx->pos.z = vtx->initPos.z * sp1C;\n        } else {\n            vtx->pos.x = vtx->pos.y = vtx->pos.z = 0.0f;\n        }\n    }\n}\n\n/* @ 23000C for 0x58; orig name: func8018183C*/\nvoid move_skin(struct ObjNet *net) {\n    UNUSED u8 filler[8];\n\n    if (net->shapePtr != NULL) {\n        scale_verts(net->shapePtr->scaledVtxGroup);\n    }\n}\n\n/* @ 230064 for 0x13C*/\nvoid func_80181894(struct ObjJoint *joint) {\n    register struct ObjGroup *weightGroup; // baseGroup? weights Only?\n    struct GdVec3f stackVec;\n    register struct ObjWeight *curWeight;\n    register struct ObjVertex *connectedVtx;\n    register struct ListNode *link;\n    register f32 scaleFactor;\n    struct GdObj *linkedObj;\n\n    weightGroup = joint->weightGrp;\n    if (weightGroup != NULL) {\n        for (link = weightGroup->firstMember; link != NULL; link = link->next) {\n            linkedObj = link->obj;\n            curWeight = (struct ObjWeight *) linkedObj;\n\n            if (curWeight->weightVal > 0.0) { //? 0.0f\n                stackVec.x = curWeight->vec20.x;\n                stackVec.y = curWeight->vec20.y;\n                stackVec.z = curWeight->vec20.z;\n                gd_rotate_and_translate_vec3f(&stackVec, &joint->matE8);\n\n                connectedVtx = curWeight->vtx;\n                scaleFactor = curWeight->weightVal;\n\n                connectedVtx->pos.x += stackVec.x * scaleFactor;\n                connectedVtx->pos.y += stackVec.y * scaleFactor;\n                connectedVtx->pos.z += stackVec.z * scaleFactor;\n            }\n        }\n    }\n}\n\n/* @ 2301A0 for 0x110 */\nvoid reset_weight_vtx(struct ObjVertex *vtx) {\n    struct GdVec3f localVec;\n    UNUSED u8 filler[16];\n\n    if (sResetWeightVtxNum++ == sResetCurWeight->vtxId) {  // found matching vertex\n        sResetCurWeight->vtx = vtx;\n        localVec.x = vtx->pos.x;\n        localVec.y = vtx->pos.y;\n        localVec.z = vtx->pos.z;\n\n        gd_rotate_and_translate_vec3f(&localVec, &D_801B9EA8);\n        sResetCurWeight->vec20.x = localVec.x;\n        sResetCurWeight->vec20.y = localVec.y;\n        sResetCurWeight->vec20.z = localVec.z;\n\n        vtx->scaleFactor -= sResetCurWeight->weightVal;\n    }\n}\n\nvoid reset_weight(struct ObjWeight *weight) {\n    UNUSED u32 vtxCount;\n    UNUSED u8 filler[4];\n    struct ObjGroup *skinGroup;\n\n    sResetCurWeight = weight;\n    sResetWeightVtxNum = 0;\n    if ((skinGroup = gGdSkinNet->skinGrp) != NULL) {\n        // Go through every vertex in the skin group, and reset the weight if the vertex is managed by the weight\n        vtxCount =\n            apply_to_obj_types_in_group(OBJ_TYPE_VERTICES, (applyproc_t) reset_weight_vtx, skinGroup);\n    } else {\n        fatal_printf(\"reset_weight(): Skin net has no SkinGroup\");\n    }\n\n    if (weight->vtx == NULL) {\n        fatal_printf(\"reset_weight(): Skin vertex ID %d not found\", weight->vtxId);\n    }\n}\n\nvoid reset_joint_weights(struct ObjJoint *joint) {\n    struct ObjGroup *group;\n\n    gd_inverse_mat4f(&joint->matE8, &D_801B9EA8);\n    D_801B9EE8 = joint;\n    if ((group = joint->weightGrp) != NULL) {\n        apply_to_obj_types_in_group(OBJ_TYPE_WEIGHTS, (applyproc_t) reset_weight, group);\n    }\n}\n"
  },
  {
    "path": "src/goddard/skin_movement.h",
    "content": "#ifndef GD_SKIN_MOVEMENT_H\n#define GD_SKIN_MOVEMENT_H\n\n#include \"gd_types.h\"\n\nvoid scale_verts(struct ObjGroup *a0);\nvoid move_skin(struct ObjNet *net);\nvoid func_80181894(struct ObjJoint *joint);\nvoid reset_joint_weights(struct ObjJoint *joint);\n\n#endif // GD_SKIN_MOVEMENT_H\n"
  },
  {
    "path": "src/menu/debug_level_select.h",
    "content": "#ifndef DEBUG_LEVEL_SELECT_H\n#define DEBUG_LEVEL_SELECT_H\n\n#include <PR/gbi.h>\n\nextern const Gfx debug_level_select_dl_07000858[];\nextern const Gfx debug_level_select_dl_07001100[];\nextern const Gfx debug_level_select_dl_07001BA0[];\nextern const Gfx debug_level_select_dl_070025F0[];\nextern const Gfx debug_level_select_dl_07003258[];\nextern const Gfx debug_level_select_dl_07003DB8[];\nextern const Gfx debug_level_select_dl_070048C8[];\nextern const Gfx debug_level_select_dl_07005558[];\nextern const Gfx debug_level_select_dl_070059F8[];\nextern const Gfx debug_level_select_dl_070063B0[];\n\n#endif // DEBUG_LEVEL_SELECT_H\n"
  },
  {
    "path": "src/menu/file_select.c",
    "content": "#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\n#include \"audio/external.h\"\n#include \"behavior_data.h\"\n#include \"dialog_ids.h\"\n#include \"engine/behavior_script.h\"\n#include \"engine/graph_node.h\"\n#include \"engine/math_util.h\"\n#include \"file_select.h\"\n#include \"game/area.h\"\n#include \"game/game_init.h\"\n#include \"game/ingame_menu.h\"\n#include \"game/object_helpers.h\"\n#include \"game/object_list_processor.h\"\n#include \"game/print.h\"\n#include \"game/save_file.h\"\n#include \"game/segment2.h\"\n#include \"game/segment7.h\"\n#include \"game/spawn_object.h\"\n#include \"game/rumble_init.h\"\n#include \"sm64.h\"\n#include \"text_strings.h\"\n\n#include \"eu_translation.h\"\n#ifdef VERSION_EU\n#undef LANGUAGE_FUNCTION\n#define LANGUAGE_FUNCTION sLanguageMode\n#endif\n\n#ifdef VERSION_CN\n#define FILE_SELECT_PRINT_STRING print_generic_string\n#define FILE_SELECT_TEXT_DL_BEGIN dl_ia_text_begin\n#define FILE_SELECT_TEXT_DL_END dl_ia_text_end\n#else\n#define FILE_SELECT_PRINT_STRING print_menu_generic_string\n#define FILE_SELECT_TEXT_DL_BEGIN dl_menu_ia8_text_begin\n#define FILE_SELECT_TEXT_DL_END dl_menu_ia8_text_end\n#endif\n\n/**\n * @file file_select.c\n * This file implements how the file select and it's menus render and function.\n * That includes button IDs rendered as object models, strings, hand cursor,\n * special menu messages and phases, button states and button clicked checks.\n */\n\n#ifdef VERSION_US\n// The current sound mode is automatically centered on US and Shindou.\nstatic s16 sSoundTextX;\n#endif\n\n//! @Bug (UB Array Access) For EU, more buttons were added than the array was extended.\n//! This causes no currently known issues on console (as the other variables are not changed\n//! while this is used) but can cause issues with other compilers.\n#if defined(VERSION_EU) && !defined(AVOID_UB)\n#define NUM_BUTTONS (MENU_BUTTON_OPTION_MAX - 1)\n#else\n#define NUM_BUTTONS MENU_BUTTON_OPTION_MAX\n#endif\n\n// Amount of main menu buttons defined in the code called by spawn_object_rel_with_rot.\n// See file_select.h for the names in MenuButtonTypes.\nstatic struct Object *sMainMenuButtons[NUM_BUTTONS];\n\n// Used to defined yes/no fade colors after a file is selected in the erase menu.\n// sYesNoColor[0]: YES | sYesNoColor[1]: NO\nstatic u8 sYesNoColor[2];\n\n// The button that is selected when it is clicked.\nstatic s8 sSelectedButtonID = MENU_BUTTON_NONE;\n\n// On iQue, the courses can't all fit on one screen; there are two pages,\n// switched between with the L and R triggers.\n#ifdef VERSION_CN\nstatic s8 sScorePage = 0;\n#endif\n\n// Whether we are on the main menu or one of the submenus.\nstatic s8 sCurrentMenuLevel = MENU_LAYER_MAIN;\n\n// Used for text opacifying. If it is below 250, it is constantly incremented.\nstatic u8 sTextBaseAlpha = 0;\n\n// 2D position of the cursor on the screen.\n// sCursorPos[0]: X | sCursorPos[1]: Y\nstatic f32 sCursorPos[] = {0, 0};\n\n// Determines which graphic to use for the cursor.\nstatic s16 sCursorClickingTimer = 0;\n\n// Equal to sCursorPos if the cursor gets clicked, {-10000, -10000} otherwise.\nstatic s16 sClickPos[] = {-10000, -10000};\n\n// Used for determining which file has been selected during copying and erasing.\nstatic s8 sSelectedFileIndex = -1;\n\n// Whether to fade out text or not.\nstatic s8 sFadeOutText = FALSE;\n\n// The message currently being displayed at the top of a menu.\nstatic s8 sStatusMessageID = 0;\n\n// Used for text fading. The alpha value of text is calculated as\n// sTextBaseAlpha - sTextFadeAlpha.\nstatic u8 sTextFadeAlpha = 0;\n\n// File select timer that keeps counting until it reaches 1000.\n// Used to prevent buttons from being clickable as soon as a menu loads.\n// Gets reset when you click an empty save, existing saves in copy and erase menus\n// and when you click yes/no in the erase confirmation prompt.\nstatic s16 sMainMenuTimer = 0;\n\n// Sound mode menu buttonID, has different values compared to gSoundMode in audio.\n// 0: gSoundMode = 0 (Stereo) | 1: gSoundMode = 3 (Mono) | 2: gSoundMode = 1 (Headset)\nstatic s8 sSoundMode = 0;\n\n// Active language for EU arrays, values defined similar to sSoundMode\n// 0: English | 1: French | 2: German\n#ifdef VERSION_EU\nstatic s8 sLanguageMode = LANGUAGE_ENGLISH;\n#endif\n\n// Tracks which button will be pressed in the erase confirmation prompt (yes/no).\nstatic s8 sEraseYesNoHoverState = MENU_ERASE_HOVER_NONE;\n\n// Used for the copy menu, defines if the game as all 4 save slots with data.\n// if TRUE, it doesn't allow copying more files.\nstatic s8 sAllFilesExist = FALSE;\n\n// Defines the value of the save slot selected in the menu.\n// Mario A: 1 | Mario B: 2 | Mario C: 3 | Mario D: 4\nstatic s8 sSelectedFileNum = 0;\n\n// Which coin score mode to use when scoring files. 0 for local\n// coin high score, 1 for high score across all files.\nstatic s8 sScoreFileCoinScoreMode = 0;\n\n// In EU, if no save file exists, open the language menu so the user can find it.\n#ifdef VERSION_EU\nstatic s8 sOpenLangSettings = FALSE;\n#endif\n\n#ifndef VERSION_EU\nstatic u8 textReturn[] = { TEXT_RETURN };\n#else\nstatic u8 textReturn[][8] = {{ TEXT_RETURN }, { TEXT_RETURN_FR }, { TEXT_RETURN_DE }};\n#endif\n\n#ifndef VERSION_EU\nstatic u8 textViewScore[] = { TEXT_CHECK_SCORE };\n#else\nstatic u8 textViewScore[][12] = {{ TEXT_CHECK_SCORE }, {TEXT_CHECK_SCORE_FR}, {TEXT_CHECK_SCORE_DE}};\n#endif\n\n#ifndef VERSION_EU\nstatic u8 textCopyFileButton[] = { TEXT_COPY_FILE_BUTTON };\n#else\nstatic u8 textCopyFileButton[][15] = {{ TEXT_COPY_FILE }, { TEXT_COPY_FILE_FR }, { TEXT_COPY_FILE_DE }};\n#endif\n\n#ifndef VERSION_EU\nstatic u8 textEraseFileButton[] = { TEXT_ERASE_FILE_BUTTON };\n#else\nstatic u8 textEraseFileButton[][16] = { {TEXT_ERASE_FILE}, {TEXT_ERASE_FILE_FR}, {TEXT_ERASE_FILE_DE} };\n#endif\n\n#ifndef VERSION_EU\nstatic u8 textSoundModes[][8] = { { TEXT_STEREO }, { TEXT_MONO }, { TEXT_HEADSET } };\n#endif\n\nstatic u8 textMarioA[] = { TEXT_FILE_MARIO_A };\nstatic u8 textMarioB[] = { TEXT_FILE_MARIO_B };\nstatic u8 textMarioC[] = { TEXT_FILE_MARIO_C };\nstatic u8 textMarioD[] = { TEXT_FILE_MARIO_D };\n\n#ifndef VERSION_EU\nstatic u8 textNew[] = { TEXT_NEW };\nstatic u8 starIcon[] = { GLYPH_STAR, GLYPH_SPACE };\nstatic u8 xIcon[] = { GLYPH_MULTIPLY, GLYPH_SPACE };\n#endif\n\n#ifndef VERSION_EU\nstatic u8 textSelectFile[] = { TEXT_SELECT_FILE };\n#else\nstatic u8 textSelectFile[][17] = {{ TEXT_SELECT_FILE }, { TEXT_SELECT_FILE_FR }, { TEXT_SELECT_FILE_DE }};\n#endif\n\n#ifndef VERSION_EU\nstatic u8 textScore[] = { TEXT_SCORE };\n#else\nstatic u8 textScore[][9] = {{ TEXT_SCORE }, { TEXT_SCORE_FR }, { TEXT_SCORE_DE }};\n#endif\n\n#ifndef VERSION_EU\nstatic u8 textCopy[] = { TEXT_COPY };\n#else\nstatic u8 textCopy[][9] = {{ TEXT_COPY }, { TEXT_COPY_FR }, { TEXT_COPY_DE }};\n#endif\n\n#ifndef VERSION_EU\nstatic u8 textErase[] = { TEXT_ERASE };\n#else\nstatic u8 textErase[][8] = {{ TEXT_ERASE }, { TEXT_ERASE_FR }, { TEXT_ERASE_DE }};\n#endif\n\n#ifdef VERSION_EU\nstatic u8 textOption[][9] = {{ TEXT_OPTION }, { TEXT_OPTION_FR }, { TEXT_OPTION_DE } };\n#endif\n\n#ifndef VERSION_EU\nstatic u8 textCheckFile[] = { TEXT_CHECK_FILE };\n#else\nstatic u8 textCheckFile[][18] = {{ TEXT_CHECK_FILE }, { TEXT_CHECK_FILE_FR }, { TEXT_CHECK_FILE_DE }};\n#endif\n\n#ifndef VERSION_EU\nstatic u8 textNoSavedDataExists[] = { TEXT_NO_SAVED_DATA_EXISTS };\n#else\nstatic u8 textNoSavedDataExists[][30] = {{ TEXT_NO_SAVED_DATA_EXISTS }, { TEXT_NO_SAVED_DATA_EXISTS_FR }, { TEXT_NO_SAVED_DATA_EXISTS_DE }};\n#endif\n\n#ifndef VERSION_EU\nstatic u8 textCopyFile[] = { TEXT_COPY_FILE };\n#else\nstatic u8 textCopyFile[][16] = {{ TEXT_COPY_FILE_BUTTON }, { TEXT_COPY_FILE_BUTTON_FR }, { TEXT_COPY_FILE_BUTTON_DE }};\n#endif\n\n#ifndef VERSION_EU\nstatic u8 textCopyItToWhere[] = { TEXT_COPY_IT_TO_WHERE };\n#else\nstatic u8 textCopyItToWhere[][18] = {{ TEXT_COPY_IT_TO_WHERE }, { TEXT_COPY_IT_TO_WHERE_FR }, { TEXT_COPY_IT_TO_WHERE_DE }};\n#endif\n\n#if !defined(VERSION_EU)\nstatic u8 textNoSavedDataExistsCopy[] = { TEXT_NO_SAVED_DATA_EXISTS };\n#endif\n\n#ifndef VERSION_EU\nstatic u8 textCopyCompleted[] = { TEXT_COPYING_COMPLETED };\n#else\nstatic u8 textCopyCompleted[][18] = {{ TEXT_COPYING_COMPLETED }, { TEXT_COPYING_COMPLETED_FR }, { TEXT_COPYING_COMPLETED_DE }};\n#endif\n\n#ifndef VERSION_EU\nstatic u8 textSavedDataExists[] = { TEXT_SAVED_DATA_EXISTS };\n#else\nstatic u8 textSavedDataExists[][20] = {{ TEXT_SAVED_DATA_EXISTS }, { TEXT_SAVED_DATA_EXISTS_FR }, { TEXT_SAVED_DATA_EXISTS_DE }};\n#endif\n\n#ifndef VERSION_EU\nstatic u8 textNoFileToCopyFrom[] = { TEXT_NO_FILE_TO_COPY_FROM };\n#else\nstatic u8 textNoFileToCopyFrom[][21] = {{ TEXT_NO_FILE_TO_COPY_FROM }, { TEXT_NO_FILE_TO_COPY_FROM_FR }, { TEXT_NO_FILE_TO_COPY_FROM_DE }};\n#endif\n\n#ifndef VERSION_EU\nstatic u8 textYes[] = { TEXT_YES };\n#else\nstatic u8 textYes[][4] = {{ TEXT_YES }, { TEXT_YES_FR }, { TEXT_YES_DE }};\n#endif\n\n#ifndef VERSION_EU\nstatic u8 textNo[] = { TEXT_NO };\n#else\nstatic u8 textNo[][5] = {{ TEXT_NO }, { TEXT_NO_FR }, { TEXT_NO_DE }};\n#endif\n\n#ifdef VERSION_EU\n// In EU, Erase File and Sound Select strings are outside it's print string function\nstatic u8 textEraseFile[][17] = {\n    { TEXT_ERASE_FILE_BUTTON }, { TEXT_ERASE_FILE_BUTTON_FR }, { TEXT_ERASE_FILE_BUTTON_DE }\n};\nstatic u8 textSure[][8] = {{ TEXT_SURE }, { TEXT_SURE_FR }, { TEXT_SURE_DE }};\nstatic u8 textMarioAJustErased[][20] = {\n    { TEXT_FILE_MARIO_A_JUST_ERASED }, { TEXT_FILE_MARIO_A_JUST_ERASED_FR }, { TEXT_FILE_MARIO_A_JUST_ERASED_DE }\n};\n\nstatic u8 textSoundSelect[][13] = {\n    { TEXT_SOUND_SELECT }, { TEXT_SOUND_SELECT_FR }, { TEXT_SOUND_SELECT_DE }\n};\n\nstatic u8 textLanguageSelect[][17] = {\n    { TEXT_LANGUAGE_SELECT }, { TEXT_LANGUAGE_SELECT_FR }, { TEXT_LANGUAGE_SELECT_DE }\n};\n\nstatic u8 textSoundModes[][10] = {\n    { TEXT_STEREO }, { TEXT_MONO }, { TEXT_HEADSET },\n    { TEXT_STEREO_FR }, { TEXT_MONO_FR }, { TEXT_HEADSET_FR },\n    { TEXT_STEREO_DE }, { TEXT_MONO_DE }, { TEXT_HEADSET_DE }\n};\n\nstatic u8 textLanguage[][9] = {{ TEXT_ENGLISH }, { TEXT_FRENCH }, { TEXT_GERMAN }};\n\nstatic u8 textMario[] = { TEXT_MARIO };\nstatic u8 textHiScore[][15] = {{ TEXT_HI_SCORE }, { TEXT_HI_SCORE_FR }, { TEXT_HI_SCORE_DE }};\nstatic u8 textMyScore[][10] = {{ TEXT_MY_SCORE }, { TEXT_MY_SCORE_FR }, { TEXT_MY_SCORE_DE }};\n\nstatic u8 textNew[][5] = {{ TEXT_NEW }, { TEXT_NEW_FR }, { TEXT_NEW_DE }};\nstatic u8 starIcon[] = { GLYPH_STAR, GLYPH_SPACE };\nstatic u8 xIcon[] = { GLYPH_MULTIPLY, GLYPH_SPACE };\n#endif\n\n/**\n * Yellow Background Menu Initial Action\n * Rotates the background at 180 grades and it's scale.\n * Although the scale is properly applied in the loop function.\n */\nvoid beh_yellow_background_menu_init(void) {\n    gCurrentObject->oFaceAngleYaw = 0x8000;\n    gCurrentObject->oMenuButtonScale = 9.0f;\n}\n\n/**\n * Yellow Background Menu Loop Action\n * Properly scales the background in the main menu.\n */\nvoid beh_yellow_background_menu_loop(void) {\n    cur_obj_scale(9.0f);\n}\n\n/**\n * Check if a button was clicked.\n * depth = 200.0 for main menu, 22.0 for submenus.\n */\ns32 check_clicked_button(s16 x, s16 y, f32 depth) {\n    f32 a = 52.4213;\n    f32 newX = ((f32) x * 160.0) / (a * depth);\n    f32 newY = ((f32) y * 120.0) / (a * 3 / 4 * depth);\n    s16 maxX = newX + 25.0f;\n    s16 minX = newX - 25.0f;\n    s16 maxY = newY + 21.0f;\n    s16 minY = newY - 21.0f;\n\n    if (sClickPos[0] < maxX && minX < sClickPos[0] && sClickPos[1] < maxY && minY < sClickPos[1]) {\n        return TRUE;\n    }\n    return FALSE;\n}\n\n/**\n * Grow from main menu, used by selecting files and menus.\n */\nstatic void bhv_menu_button_growing_from_main_menu(struct Object *button) {\n    if (button->oMenuButtonTimer < 16) {\n        button->oFaceAngleYaw += 0x800;\n    }\n    if (button->oMenuButtonTimer < 8) {\n        button->oFaceAnglePitch += 0x800;\n    }\n    if (button->oMenuButtonTimer >= 8 && button->oMenuButtonTimer < 16) {\n        button->oFaceAnglePitch -= 0x800;\n    }\n    button->oParentRelativePosX -= button->oMenuButtonOrigPosX / 16.0;\n    button->oParentRelativePosY -= button->oMenuButtonOrigPosY / 16.0;\n    if (button->oPosZ < button->oMenuButtonOrigPosZ + 17800.0) {\n        button->oParentRelativePosZ += 1112.5;\n    }\n    button->oMenuButtonTimer++;\n    if (button->oMenuButtonTimer == 16) {\n        button->oParentRelativePosX = 0.0f;\n        button->oParentRelativePosY = 0.0f;\n        button->oMenuButtonState = MENU_BUTTON_STATE_FULLSCREEN;\n        button->oMenuButtonTimer = 0;\n    }\n}\n\n/**\n * Shrink back to main menu, used to return back while inside menus.\n */\nstatic void bhv_menu_button_shrinking_to_main_menu(struct Object *button) {\n    if (button->oMenuButtonTimer < 16) {\n        button->oFaceAngleYaw -= 0x800;\n    }\n    if (button->oMenuButtonTimer < 8) {\n        button->oFaceAnglePitch -= 0x800;\n    }\n    if (button->oMenuButtonTimer >= 8 && button->oMenuButtonTimer < 16) {\n        button->oFaceAnglePitch += 0x800;\n    }\n    button->oParentRelativePosX += button->oMenuButtonOrigPosX / 16.0;\n    button->oParentRelativePosY += button->oMenuButtonOrigPosY / 16.0;\n    if (button->oPosZ > button->oMenuButtonOrigPosZ) {\n        button->oParentRelativePosZ -= 1112.5;\n    }\n    button->oMenuButtonTimer++;\n    if (button->oMenuButtonTimer == 16) {\n        button->oParentRelativePosX = button->oMenuButtonOrigPosX;\n        button->oParentRelativePosY = button->oMenuButtonOrigPosY;\n        button->oMenuButtonState = MENU_BUTTON_STATE_DEFAULT;\n        button->oMenuButtonTimer = 0;\n    }\n}\n\n/**\n * Grow from submenu, used by selecting a file in the score menu.\n */\nstatic void bhv_menu_button_growing_from_submenu(struct Object *button) {\n    if (button->oMenuButtonTimer < 16) {\n        button->oFaceAngleYaw += 0x800;\n    }\n    if (button->oMenuButtonTimer < 8) {\n        button->oFaceAnglePitch += 0x800;\n    }\n    if (button->oMenuButtonTimer >= 8 && button->oMenuButtonTimer < 16) {\n        button->oFaceAnglePitch -= 0x800;\n    }\n    button->oParentRelativePosX -= button->oMenuButtonOrigPosX / 16.0;\n    button->oParentRelativePosY -= button->oMenuButtonOrigPosY / 16.0;\n    button->oParentRelativePosZ -= 116.25;\n    button->oMenuButtonTimer++;\n    if (button->oMenuButtonTimer == 16) {\n        button->oParentRelativePosX = 0.0f;\n        button->oParentRelativePosY = 0.0f;\n        button->oMenuButtonState = MENU_BUTTON_STATE_FULLSCREEN;\n        button->oMenuButtonTimer = 0;\n    }\n}\n\n/**\n * Shrink back to submenu, used to return back while inside a score save menu.\n */\nstatic void bhv_menu_button_shrinking_to_submenu(struct Object *button) {\n    if (button->oMenuButtonTimer < 16) {\n        button->oFaceAngleYaw -= 0x800;\n    }\n    if (button->oMenuButtonTimer < 8) {\n        button->oFaceAnglePitch -= 0x800;\n    }\n    if (button->oMenuButtonTimer >= 8 && button->oMenuButtonTimer < 16) {\n        button->oFaceAnglePitch += 0x800;\n    }\n    button->oParentRelativePosX += button->oMenuButtonOrigPosX / 16.0;\n    button->oParentRelativePosY += button->oMenuButtonOrigPosY / 16.0;\n    if (button->oPosZ > button->oMenuButtonOrigPosZ) {\n        button->oParentRelativePosZ += 116.25;\n    }\n    button->oMenuButtonTimer++;\n    if (button->oMenuButtonTimer == 16) {\n        button->oParentRelativePosX = button->oMenuButtonOrigPosX;\n        button->oParentRelativePosY = button->oMenuButtonOrigPosY;\n        button->oMenuButtonState = MENU_BUTTON_STATE_DEFAULT;\n        button->oMenuButtonTimer = 0;\n    }\n}\n\n/**\n * A small increase and decrease in size.\n * Used by failed copy/erase/score operations and sound mode select.\n */\nstatic void bhv_menu_button_zoom_in_out(struct Object *button) {\n    if (sCurrentMenuLevel == MENU_LAYER_MAIN) {\n        if (button->oMenuButtonTimer < 4) {\n            button->oParentRelativePosZ -= 20.0f;\n        }\n        if (button->oMenuButtonTimer >= 4) {\n            button->oParentRelativePosZ += 20.0f;\n        }\n    } else {\n        if (button->oMenuButtonTimer < 4) {\n            button->oParentRelativePosZ += 20.0f;\n        }\n        if (button->oMenuButtonTimer >= 4) {\n            button->oParentRelativePosZ -= 20.0f;\n        }\n    }\n    button->oMenuButtonTimer++;\n    if (button->oMenuButtonTimer == 8) {\n        button->oMenuButtonState = MENU_BUTTON_STATE_DEFAULT;\n        button->oMenuButtonTimer = 0;\n    }\n}\n\n/**\n * A small temporary increase in size.\n * Used while selecting a target copy/erase file or yes/no erase confirmation prompt.\n */\nstatic void bhv_menu_button_zoom_in(struct Object *button) {\n    button->oMenuButtonScale += 0.0022;\n    button->oMenuButtonTimer++;\n    if (button->oMenuButtonTimer == 10) {\n        button->oMenuButtonState = MENU_BUTTON_STATE_DEFAULT;\n        button->oMenuButtonTimer = 0;\n    }\n}\n\n/**\n * A small temporary decrease in size.\n * Used after selecting a target copy/erase file or\n * yes/no erase confirmation prompt to undo the zoom in.\n */\nstatic void bhv_menu_button_zoom_out(struct Object *button) {\n    button->oMenuButtonScale -= 0.0022;\n    button->oMenuButtonTimer++;\n    if (button->oMenuButtonTimer == 10) {\n        button->oMenuButtonState = MENU_BUTTON_STATE_DEFAULT;\n        button->oMenuButtonTimer = 0;\n    }\n}\n\n/**\n * Menu Buttons Menu Initial Action\n * Aligns menu buttons so they can stay in their original\n * positions when you choose a button.\n */\nvoid bhv_menu_button_init(void) {\n    gCurrentObject->oMenuButtonOrigPosX = gCurrentObject->oParentRelativePosX;\n    gCurrentObject->oMenuButtonOrigPosY = gCurrentObject->oParentRelativePosY;\n}\n\n/**\n * Menu Buttons Menu Loop Action\n * Handles the functions of the button states and\n * object scale for each button.\n */\nvoid bhv_menu_button_loop(void) {\n    switch (gCurrentObject->oMenuButtonState) {\n        case MENU_BUTTON_STATE_DEFAULT: // Button state\n            gCurrentObject->oMenuButtonOrigPosZ = gCurrentObject->oPosZ;\n            break;\n        case MENU_BUTTON_STATE_GROWING: // Switching from button to menu state\n            if (sCurrentMenuLevel == MENU_LAYER_MAIN) {\n                bhv_menu_button_growing_from_main_menu(gCurrentObject);\n            }\n            if (sCurrentMenuLevel == MENU_LAYER_SUBMENU) {\n                bhv_menu_button_growing_from_submenu(gCurrentObject); // Only used for score files\n            }\n            sTextBaseAlpha = 0;\n            sCursorClickingTimer = 4;\n            break;\n        case MENU_BUTTON_STATE_FULLSCREEN: // Menu state\n            break;\n        case MENU_BUTTON_STATE_SHRINKING: // Switching from menu to button state\n            if (sCurrentMenuLevel == MENU_LAYER_MAIN) {\n                bhv_menu_button_shrinking_to_main_menu(gCurrentObject);\n            }\n            if (sCurrentMenuLevel == MENU_LAYER_SUBMENU) {\n                bhv_menu_button_shrinking_to_submenu(gCurrentObject); // Only used for score files\n            }\n            sTextBaseAlpha = 0;\n            sCursorClickingTimer = 4;\n            break;\n        case MENU_BUTTON_STATE_ZOOM_IN_OUT:\n            bhv_menu_button_zoom_in_out(gCurrentObject);\n            sCursorClickingTimer = 4;\n            break;\n        case MENU_BUTTON_STATE_ZOOM_IN:\n            bhv_menu_button_zoom_in(gCurrentObject);\n            sCursorClickingTimer = 4;\n            break;\n        case MENU_BUTTON_STATE_ZOOM_OUT:\n            bhv_menu_button_zoom_out(gCurrentObject);\n            sCursorClickingTimer = 4;\n            break;\n    }\n    cur_obj_scale(gCurrentObject->oMenuButtonScale);\n}\n\n/**\n * Handles how to exit the score file menu using button states.\n */\nvoid exit_score_file_to_score_menu(struct Object *scoreFileButton, s8 scoreButtonID) {\n    // Begin exit\n    if (scoreFileButton->oMenuButtonState == MENU_BUTTON_STATE_FULLSCREEN\n        && sCursorClickingTimer == 2) {\n        play_sound(SOUND_MENU_CAMERA_ZOOM_OUT, gGlobalSoundSource);\n#if ENABLE_RUMBLE\n        queue_rumble_data(5, 80);\n#endif\n        scoreFileButton->oMenuButtonState = MENU_BUTTON_STATE_SHRINKING;\n    }\n    // End exit\n    if (scoreFileButton->oMenuButtonState == MENU_BUTTON_STATE_DEFAULT) {\n        sSelectedButtonID = scoreButtonID;\n        if (sCurrentMenuLevel == MENU_LAYER_SUBMENU) {\n            sCurrentMenuLevel = MENU_LAYER_MAIN;\n        }\n    }\n}\n\n/**\n * Render buttons for the score menu.\n * Also check if the save file exists to render a different Mario button.\n */\nvoid render_score_menu_buttons(struct Object *scoreButton) {\n    // File A\n    if (save_file_exists(SAVE_FILE_A) == TRUE) {\n        sMainMenuButtons[MENU_BUTTON_SCORE_FILE_A] =\n            spawn_object_rel_with_rot(scoreButton, MODEL_MAIN_MENU_MARIO_SAVE_BUTTON, bhvMenuButton,\n                                      711, 311, -100, 0, -0x8000, 0);\n    } else {\n        sMainMenuButtons[MENU_BUTTON_SCORE_FILE_A] =\n            spawn_object_rel_with_rot(scoreButton, MODEL_MAIN_MENU_MARIO_NEW_BUTTON, bhvMenuButton, 711,\n                                      311, -100, 0, -0x8000, 0);\n    }\n    sMainMenuButtons[MENU_BUTTON_SCORE_FILE_A]->oMenuButtonScale = 0.11111111f;\n    // File B\n    if (save_file_exists(SAVE_FILE_B) == TRUE) {\n        sMainMenuButtons[MENU_BUTTON_SCORE_FILE_B] =\n            spawn_object_rel_with_rot(scoreButton, MODEL_MAIN_MENU_MARIO_SAVE_BUTTON, bhvMenuButton,\n                                      -166, 311, -100, 0, -0x8000, 0);\n    } else {\n        sMainMenuButtons[MENU_BUTTON_SCORE_FILE_B] =\n            spawn_object_rel_with_rot(scoreButton, MODEL_MAIN_MENU_MARIO_NEW_BUTTON, bhvMenuButton,\n                                      -166, 311, -100, 0, -0x8000, 0);\n    }\n    sMainMenuButtons[MENU_BUTTON_SCORE_FILE_B]->oMenuButtonScale = 0.11111111f;\n    // File C\n    if (save_file_exists(SAVE_FILE_C) == TRUE) {\n        sMainMenuButtons[MENU_BUTTON_SCORE_FILE_C] = spawn_object_rel_with_rot(\n            scoreButton, MODEL_MAIN_MENU_MARIO_SAVE_BUTTON, bhvMenuButton, 711, 0, -100, 0, -0x8000, 0);\n    } else {\n        sMainMenuButtons[MENU_BUTTON_SCORE_FILE_C] = spawn_object_rel_with_rot(\n            scoreButton, MODEL_MAIN_MENU_MARIO_NEW_BUTTON, bhvMenuButton, 711, 0, -100, 0, -0x8000, 0);\n    }\n    sMainMenuButtons[MENU_BUTTON_SCORE_FILE_C]->oMenuButtonScale = 0.11111111f;\n    // File D\n    if (save_file_exists(SAVE_FILE_D) == TRUE) {\n        sMainMenuButtons[MENU_BUTTON_SCORE_FILE_D] =\n            spawn_object_rel_with_rot(scoreButton, MODEL_MAIN_MENU_MARIO_SAVE_BUTTON, bhvMenuButton,\n                                      -166, 0, -100, 0, -0x8000, 0);\n    } else {\n        sMainMenuButtons[MENU_BUTTON_SCORE_FILE_D] = spawn_object_rel_with_rot(\n            scoreButton, MODEL_MAIN_MENU_MARIO_NEW_BUTTON, bhvMenuButton, -166, 0, -100, 0, -0x8000, 0);\n    }\n    sMainMenuButtons[MENU_BUTTON_SCORE_FILE_D]->oMenuButtonScale = 0.11111111f;\n    // Return to main menu button\n    sMainMenuButtons[MENU_BUTTON_SCORE_RETURN] = spawn_object_rel_with_rot(\n        scoreButton, MODEL_MAIN_MENU_YELLOW_FILE_BUTTON, bhvMenuButton, 711, -388, -100, 0, -0x8000, 0);\n    sMainMenuButtons[MENU_BUTTON_SCORE_RETURN]->oMenuButtonScale = 0.11111111f;\n    // Switch to copy menu button\n    sMainMenuButtons[MENU_BUTTON_SCORE_COPY_FILE] = spawn_object_rel_with_rot(\n        scoreButton, MODEL_MAIN_MENU_BLUE_COPY_BUTTON, bhvMenuButton, 0, -388, -100, 0, -0x8000, 0);\n    sMainMenuButtons[MENU_BUTTON_SCORE_COPY_FILE]->oMenuButtonScale = 0.11111111f;\n    // Switch to erase menu button\n    sMainMenuButtons[MENU_BUTTON_SCORE_ERASE_FILE] = spawn_object_rel_with_rot(\n        scoreButton, MODEL_MAIN_MENU_RED_ERASE_BUTTON, bhvMenuButton, -711, -388, -100, 0, -0x8000, 0);\n    sMainMenuButtons[MENU_BUTTON_SCORE_ERASE_FILE]->oMenuButtonScale = 0.11111111f;\n}\n\n#ifdef VERSION_EU\n    #define SCORE_TIMER 46\n#else\n    #define SCORE_TIMER 31\n#endif\n\n/**\n * In the score menu, checks if a button was clicked to play a sound, button state and other functions.\n */\nvoid check_score_menu_clicked_buttons(struct Object *scoreButton) {\n    if (scoreButton->oMenuButtonState == MENU_BUTTON_STATE_FULLSCREEN) {\n        s32 buttonID;\n        // Configure score menu button group\n        for (buttonID = MENU_BUTTON_SCORE_MIN; buttonID < MENU_BUTTON_SCORE_MAX; buttonID++) {\n            s16 buttonX = sMainMenuButtons[buttonID]->oPosX;\n            s16 buttonY = sMainMenuButtons[buttonID]->oPosY;\n\n            if (check_clicked_button(buttonX, buttonY, 22.0f) == TRUE && sMainMenuTimer >= SCORE_TIMER) {\n                // If menu button clicked, select it\n                if (buttonID == MENU_BUTTON_SCORE_RETURN || buttonID == MENU_BUTTON_SCORE_COPY_FILE\n                    || buttonID == MENU_BUTTON_SCORE_ERASE_FILE) {\n                    play_sound(SOUND_MENU_CLICK_FILE_SELECT, gGlobalSoundSource);\n#if ENABLE_RUMBLE\n                    queue_rumble_data(5, 80);\n#endif\n                    sMainMenuButtons[buttonID]->oMenuButtonState = MENU_BUTTON_STATE_ZOOM_IN_OUT;\n                    sSelectedButtonID = buttonID;\n                }\n                else { // Check if a save file is clicked\n                    if (sMainMenuTimer >= SCORE_TIMER) {\n                        // If clicked in a existing save file, select it too see it's score\n                        if (save_file_exists(buttonID - MENU_BUTTON_SCORE_MIN) == TRUE) {\n                            play_sound(SOUND_MENU_CAMERA_ZOOM_IN, gGlobalSoundSource);\n#if ENABLE_RUMBLE\n                            queue_rumble_data(5, 80);\n#endif\n                            sMainMenuButtons[buttonID]->oMenuButtonState = MENU_BUTTON_STATE_GROWING;\n                            sSelectedButtonID = buttonID;\n                        }\n                        else {\n                            // If clicked in a non-existing save file, play buzz sound\n                            play_sound(SOUND_MENU_CAMERA_BUZZ, gGlobalSoundSource);\n#if ENABLE_RUMBLE\n                            queue_rumble_data(5, 80);\n#endif\n                            sMainMenuButtons[buttonID]->oMenuButtonState =\n                                MENU_BUTTON_STATE_ZOOM_IN_OUT;\n                            if (sMainMenuTimer >= SCORE_TIMER) {\n                                sFadeOutText = TRUE;\n                                sMainMenuTimer = 0;\n                            }\n                        }\n                    }\n                }\n                sCurrentMenuLevel = MENU_LAYER_SUBMENU;\n                break;\n            }\n        }\n    }\n}\n\n#undef SCORE_TIMER\n\n/**\n * Render buttons for the copy menu.\n * Also check if the save file exists to render a different Mario button.\n */\nvoid render_copy_menu_buttons(struct Object *copyButton) {\n    // File A\n    if (save_file_exists(SAVE_FILE_A) == TRUE) {\n        sMainMenuButtons[MENU_BUTTON_COPY_FILE_A] =\n            spawn_object_rel_with_rot(copyButton, MODEL_MAIN_MENU_MARIO_SAVE_BUTTON, bhvMenuButton, 711,\n                                      311, -100, 0, -0x8000, 0);\n    } else {\n        sMainMenuButtons[MENU_BUTTON_COPY_FILE_A] = spawn_object_rel_with_rot(\n            copyButton, MODEL_MAIN_MENU_MARIO_NEW_BUTTON, bhvMenuButton, 711, 311, -100, 0, -0x8000, 0);\n    }\n    sMainMenuButtons[MENU_BUTTON_COPY_FILE_A]->oMenuButtonScale = 0.11111111f;\n    // File B\n    if (save_file_exists(SAVE_FILE_B) == TRUE) {\n        sMainMenuButtons[MENU_BUTTON_COPY_FILE_B] =\n            spawn_object_rel_with_rot(copyButton, MODEL_MAIN_MENU_MARIO_SAVE_BUTTON, bhvMenuButton,\n                                      -166, 311, -100, 0, -0x8000, 0);\n    } else {\n        sMainMenuButtons[MENU_BUTTON_COPY_FILE_B] =\n            spawn_object_rel_with_rot(copyButton, MODEL_MAIN_MENU_MARIO_NEW_BUTTON, bhvMenuButton, -166,\n                                      311, -100, 0, -0x8000, 0);\n    }\n    sMainMenuButtons[MENU_BUTTON_COPY_FILE_B]->oMenuButtonScale = 0.11111111f;\n    // File C\n    if (save_file_exists(SAVE_FILE_C) == TRUE) {\n        sMainMenuButtons[MENU_BUTTON_COPY_FILE_C] = spawn_object_rel_with_rot(\n            copyButton, MODEL_MAIN_MENU_MARIO_SAVE_BUTTON, bhvMenuButton, 711, 0, -100, 0, -0x8000, 0);\n    } else {\n        sMainMenuButtons[MENU_BUTTON_COPY_FILE_C] = spawn_object_rel_with_rot(\n            copyButton, MODEL_MAIN_MENU_MARIO_NEW_BUTTON, bhvMenuButton, 711, 0, -100, 0, -0x8000, 0);\n    }\n    sMainMenuButtons[MENU_BUTTON_COPY_FILE_C]->oMenuButtonScale = 0.11111111f;\n    // File D\n    if (save_file_exists(SAVE_FILE_D) == TRUE) {\n        sMainMenuButtons[MENU_BUTTON_COPY_FILE_D] = spawn_object_rel_with_rot(\n            copyButton, MODEL_MAIN_MENU_MARIO_SAVE_BUTTON, bhvMenuButton, -166, 0, -100, 0, -0x8000, 0);\n    } else {\n        sMainMenuButtons[MENU_BUTTON_COPY_FILE_D] = spawn_object_rel_with_rot(\n            copyButton, MODEL_MAIN_MENU_MARIO_NEW_BUTTON, bhvMenuButton, -166, 0, -100, 0, -0x8000, 0);\n    }\n    sMainMenuButtons[MENU_BUTTON_COPY_FILE_D]->oMenuButtonScale = 0.11111111f;\n    // Return to main menu button\n    sMainMenuButtons[MENU_BUTTON_COPY_RETURN] = spawn_object_rel_with_rot(\n        copyButton, MODEL_MAIN_MENU_YELLOW_FILE_BUTTON, bhvMenuButton, 711, -388, -100, 0, -0x8000, 0);\n    sMainMenuButtons[MENU_BUTTON_COPY_RETURN]->oMenuButtonScale = 0.11111111f;\n    // Switch to scire menu button\n    sMainMenuButtons[MENU_BUTTON_COPY_CHECK_SCORE] = spawn_object_rel_with_rot(\n        copyButton, MODEL_MAIN_MENU_GREEN_SCORE_BUTTON, bhvMenuButton, 0, -388, -100, 0, -0x8000, 0);\n    sMainMenuButtons[MENU_BUTTON_COPY_CHECK_SCORE]->oMenuButtonScale = 0.11111111f;\n    // Switch to erase menu button\n    sMainMenuButtons[MENU_BUTTON_COPY_ERASE_FILE] = spawn_object_rel_with_rot(\n        copyButton, MODEL_MAIN_MENU_RED_ERASE_BUTTON, bhvMenuButton, -711, -388, -100, 0, -0x8000, 0);\n    sMainMenuButtons[MENU_BUTTON_COPY_ERASE_FILE]->oMenuButtonScale = 0.11111111f;\n}\n\n#ifdef VERSION_EU\n    #define BUZZ_TIMER 36\n#else\n    #define BUZZ_TIMER 21\n#endif\n\n/**\n * Copy Menu phase actions that handles what to do when a file button is clicked.\n */\nvoid copy_action_file_button(struct Object *copyButton, s32 copyFileButtonID) {\n    switch (copyButton->oMenuButtonActionPhase) {\n        case COPY_PHASE_MAIN: // Copy Menu Main Phase\n            if (sAllFilesExist == TRUE) { // Don't enable copy if all save files exists\n                return;\n            }\n            if (save_file_exists(copyFileButtonID - MENU_BUTTON_COPY_MIN) == TRUE) {\n                // If clicked in a existing save file, ask where it wants to copy\n                play_sound(SOUND_MENU_CLICK_FILE_SELECT, gGlobalSoundSource);\n#if ENABLE_RUMBLE\n                queue_rumble_data(5, 80);\n#endif\n                sMainMenuButtons[copyFileButtonID]->oMenuButtonState = MENU_BUTTON_STATE_ZOOM_IN;\n                sSelectedFileIndex = copyFileButtonID - MENU_BUTTON_COPY_MIN;\n                copyButton->oMenuButtonActionPhase = COPY_PHASE_COPY_WHERE;\n                sFadeOutText = TRUE;\n                sMainMenuTimer = 0;\n            } else {\n                // If clicked in a non-existing save file, play buzz sound\n                play_sound(SOUND_MENU_CAMERA_BUZZ, gGlobalSoundSource);\n#if ENABLE_RUMBLE\n                queue_rumble_data(5, 80);\n#endif\n                sMainMenuButtons[copyFileButtonID]->oMenuButtonState = MENU_BUTTON_STATE_ZOOM_IN_OUT;\n                if (sMainMenuTimer >= BUZZ_TIMER) {\n                    sFadeOutText = TRUE;\n                    sMainMenuTimer = 0;\n                }\n            }\n            break;\n        case COPY_PHASE_COPY_WHERE: // Copy Menu \"COPY IT TO WHERE?\" Phase (after a file is selected)\n            sMainMenuButtons[copyFileButtonID]->oMenuButtonState = MENU_BUTTON_STATE_ZOOM_IN_OUT;\n            if (save_file_exists(copyFileButtonID - MENU_BUTTON_COPY_MIN) == FALSE) {\n                // If clicked in a non-existing save file, copy the file\n                play_sound(SOUND_MENU_STAR_SOUND, gGlobalSoundSource);\n#if ENABLE_RUMBLE\n                queue_rumble_data(5, 80);\n#endif\n                copyButton->oMenuButtonActionPhase = COPY_PHASE_COPY_COMPLETE;\n                sFadeOutText = TRUE;\n                sMainMenuTimer = 0;\n                save_file_copy(sSelectedFileIndex, copyFileButtonID - MENU_BUTTON_COPY_MIN);\n                sMainMenuButtons[copyFileButtonID]->header.gfx.sharedChild =\n                    gLoadedGraphNodes[MODEL_MAIN_MENU_MARIO_SAVE_BUTTON_FADE];\n                sMainMenuButtons[copyFileButtonID - MENU_BUTTON_COPY_MIN]->header.gfx.sharedChild =\n                    gLoadedGraphNodes[MODEL_MAIN_MENU_MARIO_SAVE_BUTTON_FADE];\n            } else {\n                // If clicked in a existing save file, play buzz sound\n                if (copyFileButtonID == MENU_BUTTON_COPY_FILE_A + sSelectedFileIndex) {\n                    play_sound(SOUND_MENU_CAMERA_BUZZ, gGlobalSoundSource);\n#if ENABLE_RUMBLE\n                    queue_rumble_data(5, 80);\n#endif\n                    sMainMenuButtons[MENU_BUTTON_COPY_FILE_A + sSelectedFileIndex]->oMenuButtonState =\n                        MENU_BUTTON_STATE_ZOOM_OUT;\n                    copyButton->oMenuButtonActionPhase = COPY_PHASE_MAIN;\n                    sFadeOutText = TRUE;\n                    return;\n                }\n                if (sMainMenuTimer >= BUZZ_TIMER) {\n                    sFadeOutText = TRUE;\n                    sMainMenuTimer = 0;\n                }\n            }\n            break;\n    }\n}\n\n#ifdef VERSION_EU\n    #define ACTION_TIMER      41\n    #define MAIN_RETURN_TIMER 36\n#else\n    #define ACTION_TIMER      31\n    #define MAIN_RETURN_TIMER 31\n#endif\n\n/**\n * In the copy menu, checks if a button was clicked to play a sound, button state and other functions.\n */\nvoid check_copy_menu_clicked_buttons(struct Object *copyButton) {\n    if (copyButton->oMenuButtonState == MENU_BUTTON_STATE_FULLSCREEN) {\n        s32 buttonID;\n        // Configure copy menu button group\n        for (buttonID = MENU_BUTTON_COPY_MIN; buttonID < MENU_BUTTON_COPY_MAX; buttonID++) {\n            s16 buttonX = sMainMenuButtons[buttonID]->oPosX;\n            s16 buttonY = sMainMenuButtons[buttonID]->oPosY;\n\n            if (check_clicked_button(buttonX, buttonY, 22.0f) == TRUE) {\n                // If menu button clicked, select it\n                if (buttonID == MENU_BUTTON_COPY_RETURN || buttonID == MENU_BUTTON_COPY_CHECK_SCORE\n                    || buttonID == MENU_BUTTON_COPY_ERASE_FILE) {\n                    if (copyButton->oMenuButtonActionPhase == COPY_PHASE_MAIN) {\n                        play_sound(SOUND_MENU_CLICK_FILE_SELECT, gGlobalSoundSource);\n#if ENABLE_RUMBLE\n                        queue_rumble_data(5, 80);\n#endif\n                        sMainMenuButtons[buttonID]->oMenuButtonState = MENU_BUTTON_STATE_ZOOM_IN_OUT;\n                        sSelectedButtonID = buttonID;\n                    }\n                }\n                else {\n                    // Check if a file button is clicked to play a copy action\n                    if (sMainMenuButtons[buttonID]->oMenuButtonState == MENU_BUTTON_STATE_DEFAULT\n                        && sMainMenuTimer >= ACTION_TIMER) {\n                        copy_action_file_button(copyButton, buttonID);\n                    }\n                }\n                sCurrentMenuLevel = MENU_LAYER_SUBMENU;\n                break;\n            }\n        }\n\n        // After copy is complete, return to main copy phase\n        if (copyButton->oMenuButtonActionPhase == COPY_PHASE_COPY_COMPLETE\n            && sMainMenuTimer >= MAIN_RETURN_TIMER) {\n            copyButton->oMenuButtonActionPhase = COPY_PHASE_MAIN;\n            sMainMenuButtons[MENU_BUTTON_COPY_MIN + sSelectedFileIndex]->oMenuButtonState =\n                MENU_BUTTON_STATE_ZOOM_OUT;\n        }\n    }\n}\n\n/**\n * Render buttons for the erase menu.\n * Also check if the save file exists to render a different Mario button.\n */\nvoid render_erase_menu_buttons(struct Object *eraseButton) {\n    // File A\n    if (save_file_exists(SAVE_FILE_A) == TRUE) {\n        sMainMenuButtons[MENU_BUTTON_ERASE_FILE_A] =\n            spawn_object_rel_with_rot(eraseButton, MODEL_MAIN_MENU_MARIO_SAVE_BUTTON, bhvMenuButton,\n                                      711, 311, -100, 0, -0x8000, 0);\n    } else {\n        sMainMenuButtons[MENU_BUTTON_ERASE_FILE_A] =\n            spawn_object_rel_with_rot(eraseButton, MODEL_MAIN_MENU_MARIO_NEW_BUTTON, bhvMenuButton, 711,\n                                      311, -100, 0, -0x8000, 0);\n    }\n    sMainMenuButtons[MENU_BUTTON_ERASE_FILE_A]->oMenuButtonScale = 0.11111111f;\n    // File B\n    if (save_file_exists(SAVE_FILE_B) == TRUE) {\n        sMainMenuButtons[MENU_BUTTON_ERASE_FILE_B] =\n            spawn_object_rel_with_rot(eraseButton, MODEL_MAIN_MENU_MARIO_SAVE_BUTTON, bhvMenuButton,\n                                      -166, 311, -100, 0, -0x8000, 0);\n    } else {\n        sMainMenuButtons[MENU_BUTTON_ERASE_FILE_B] =\n            spawn_object_rel_with_rot(eraseButton, MODEL_MAIN_MENU_MARIO_NEW_BUTTON, bhvMenuButton,\n                                      -166, 311, -100, 0, -0x8000, 0);\n    }\n    sMainMenuButtons[MENU_BUTTON_ERASE_FILE_B]->oMenuButtonScale = 0.11111111f;\n    // File C\n    if (save_file_exists(SAVE_FILE_C) == TRUE) {\n        sMainMenuButtons[MENU_BUTTON_ERASE_FILE_C] = spawn_object_rel_with_rot(\n            eraseButton, MODEL_MAIN_MENU_MARIO_SAVE_BUTTON, bhvMenuButton, 711, 0, -100, 0, -0x8000, 0);\n    } else {\n        sMainMenuButtons[MENU_BUTTON_ERASE_FILE_C] = spawn_object_rel_with_rot(\n            eraseButton, MODEL_MAIN_MENU_MARIO_NEW_BUTTON, bhvMenuButton, 711, 0, -100, 0, -0x8000, 0);\n    }\n    sMainMenuButtons[MENU_BUTTON_ERASE_FILE_C]->oMenuButtonScale = 0.11111111f;\n    // File D\n    if (save_file_exists(SAVE_FILE_D) == TRUE) {\n        sMainMenuButtons[MENU_BUTTON_ERASE_FILE_D] =\n            spawn_object_rel_with_rot(eraseButton, MODEL_MAIN_MENU_MARIO_SAVE_BUTTON, bhvMenuButton,\n                                      -166, 0, -100, 0, -0x8000, 0);\n    } else {\n        sMainMenuButtons[MENU_BUTTON_ERASE_FILE_D] = spawn_object_rel_with_rot(\n            eraseButton, MODEL_MAIN_MENU_MARIO_NEW_BUTTON, bhvMenuButton, -166, 0, -100, 0, -0x8000, 0);\n    }\n    sMainMenuButtons[MENU_BUTTON_ERASE_FILE_D]->oMenuButtonScale = 0.11111111f;\n    // Return to main menu button\n    sMainMenuButtons[MENU_BUTTON_ERASE_RETURN] = spawn_object_rel_with_rot(\n        eraseButton, MODEL_MAIN_MENU_YELLOW_FILE_BUTTON, bhvMenuButton, 711, -388, -100, 0, -0x8000, 0);\n    sMainMenuButtons[MENU_BUTTON_ERASE_RETURN]->oMenuButtonScale = 0.11111111f;\n    // Switch to score menu button\n    sMainMenuButtons[MENU_BUTTON_ERASE_CHECK_SCORE] = spawn_object_rel_with_rot(\n        eraseButton, MODEL_MAIN_MENU_GREEN_SCORE_BUTTON, bhvMenuButton, 0, -388, -100, 0, -0x8000, 0);\n    sMainMenuButtons[MENU_BUTTON_ERASE_CHECK_SCORE]->oMenuButtonScale = 0.11111111f;\n    // Switch to copy menu button\n    sMainMenuButtons[MENU_BUTTON_ERASE_COPY_FILE] = spawn_object_rel_with_rot(\n        eraseButton, MODEL_MAIN_MENU_BLUE_COPY_BUTTON, bhvMenuButton, -711, -388, -100, 0, -0x8000, 0);\n    sMainMenuButtons[MENU_BUTTON_ERASE_COPY_FILE]->oMenuButtonScale = 0.11111111f;\n}\n\n/**\n * Erase Menu phase actions that handles what to do when a file button is clicked.\n */\nvoid erase_action_file_button(struct Object *eraseButton, s32 eraseFileButtonID) {\n    switch (eraseButton->oMenuButtonActionPhase) {\n        case ERASE_PHASE_MAIN: // Erase Menu Main Phase\n            if (save_file_exists(eraseFileButtonID - MENU_BUTTON_ERASE_MIN) == TRUE) {\n                // If clicked in a existing save file, ask if it wants to delete it\n                play_sound(SOUND_MENU_CLICK_FILE_SELECT, gGlobalSoundSource);\n#if ENABLE_RUMBLE\n                queue_rumble_data(5, 80);\n#endif\n                sMainMenuButtons[eraseFileButtonID]->oMenuButtonState = MENU_BUTTON_STATE_ZOOM_IN;\n                sSelectedFileIndex = eraseFileButtonID - MENU_BUTTON_ERASE_MIN;\n                eraseButton->oMenuButtonActionPhase = ERASE_PHASE_PROMPT;\n                sFadeOutText = TRUE;\n                sMainMenuTimer = 0;\n            } else {\n                // If clicked in a non-existing save file, play buzz sound\n                play_sound(SOUND_MENU_CAMERA_BUZZ, gGlobalSoundSource);\n#if ENABLE_RUMBLE\n                queue_rumble_data(5, 80);\n#endif\n                sMainMenuButtons[eraseFileButtonID]->oMenuButtonState = MENU_BUTTON_STATE_ZOOM_IN_OUT;\n\n                if (sMainMenuTimer >= BUZZ_TIMER) {\n                    sFadeOutText = TRUE;\n                    sMainMenuTimer = 0;\n                }\n            }\n            break;\n        case ERASE_PHASE_PROMPT: // Erase Menu \"SURE? YES NO\" Phase (after a file is selected)\n            if (eraseFileButtonID == MENU_BUTTON_ERASE_MIN + sSelectedFileIndex) {\n                // If clicked in a existing save file, play click sound and zoom out button\n                // Note: The prompt functions are actually called when the ERASE_MSG_PROMPT\n                // message is displayed with print_erase_menu_prompt\n                play_sound(SOUND_MENU_CLICK_FILE_SELECT, gGlobalSoundSource);\n#if ENABLE_RUMBLE\n                queue_rumble_data(5, 80);\n#endif\n                sMainMenuButtons[MENU_BUTTON_ERASE_MIN + sSelectedFileIndex]->oMenuButtonState =\n                    MENU_BUTTON_STATE_ZOOM_OUT;\n                eraseButton->oMenuButtonActionPhase = ERASE_PHASE_MAIN;\n                sFadeOutText = TRUE;\n            }\n            break;\n    }\n}\n\n#undef BUZZ_TIMER\n\n/**\n * In the erase menu, checks if a button was clicked to play a sound, button state and other functions.\n */\nvoid check_erase_menu_clicked_buttons(struct Object *eraseButton) {\n    if (eraseButton->oMenuButtonState == MENU_BUTTON_STATE_FULLSCREEN) {\n        s32 buttonID;\n        // Configure erase menu button group\n        for (buttonID = MENU_BUTTON_ERASE_MIN; buttonID < MENU_BUTTON_ERASE_MAX; buttonID++) {\n            s16 buttonX = sMainMenuButtons[buttonID]->oPosX;\n            s16 buttonY = sMainMenuButtons[buttonID]->oPosY;\n\n            if (check_clicked_button(buttonX, buttonY, 22.0f) == TRUE) {\n                // If menu button clicked, select it\n                if (buttonID == MENU_BUTTON_ERASE_RETURN || buttonID == MENU_BUTTON_ERASE_CHECK_SCORE\n                    || buttonID == MENU_BUTTON_ERASE_COPY_FILE) {\n                    if (eraseButton->oMenuButtonActionPhase == ERASE_PHASE_MAIN) {\n                        play_sound(SOUND_MENU_CLICK_FILE_SELECT, gGlobalSoundSource);\n#if ENABLE_RUMBLE\n                        queue_rumble_data(5, 80);\n#endif\n                        sMainMenuButtons[buttonID]->oMenuButtonState = MENU_BUTTON_STATE_ZOOM_IN_OUT;\n                        sSelectedButtonID = buttonID;\n                    }\n                }\n                else {\n                    // Check if a file button is clicked to play an erase action\n                    if (sMainMenuTimer >= ACTION_TIMER) {\n                        erase_action_file_button(eraseButton, buttonID);\n                    }\n                }\n                sCurrentMenuLevel = MENU_LAYER_SUBMENU;\n                break;\n            }\n        }\n        // After erase is complete, return to main erase phase\n        if (eraseButton->oMenuButtonActionPhase == ERASE_PHASE_MARIO_ERASED\n            && sMainMenuTimer >= MAIN_RETURN_TIMER) {\n            eraseButton->oMenuButtonActionPhase = ERASE_PHASE_MAIN;\n            sMainMenuButtons[MENU_BUTTON_ERASE_MIN + sSelectedFileIndex]->oMenuButtonState =\n                MENU_BUTTON_STATE_ZOOM_OUT;\n        }\n    }\n}\n\n#undef ACTION_TIMER\n#undef MAIN_RETURN_TIMER\n\n#ifdef VERSION_EU\n    #define SOUND_BUTTON_Y 388\n#else\n    #define SOUND_BUTTON_Y 0\n#endif\n\n/**\n * Render buttons for the sound mode menu.\n */\nvoid render_sound_mode_menu_buttons(struct Object *soundModeButton) {\n    // Stereo option button\n    sMainMenuButtons[MENU_BUTTON_STEREO] = spawn_object_rel_with_rot(\n        soundModeButton, MODEL_MAIN_MENU_GENERIC_BUTTON, bhvMenuButton, 533, SOUND_BUTTON_Y, -100, 0, -0x8000, 0);\n    sMainMenuButtons[MENU_BUTTON_STEREO]->oMenuButtonScale = 0.11111111f;\n    // Mono option button\n    sMainMenuButtons[MENU_BUTTON_MONO] = spawn_object_rel_with_rot(\n        soundModeButton, MODEL_MAIN_MENU_GENERIC_BUTTON, bhvMenuButton, 0, SOUND_BUTTON_Y, -100, 0, -0x8000, 0);\n    sMainMenuButtons[MENU_BUTTON_MONO]->oMenuButtonScale = 0.11111111f;\n    // Headset option button\n    sMainMenuButtons[MENU_BUTTON_HEADSET] = spawn_object_rel_with_rot(\n        soundModeButton, MODEL_MAIN_MENU_GENERIC_BUTTON, bhvMenuButton, -533, SOUND_BUTTON_Y, -100, 0, -0x8000, 0);\n    sMainMenuButtons[MENU_BUTTON_HEADSET]->oMenuButtonScale = 0.11111111f;\n\n#ifdef VERSION_EU\n    // English option button\n    sMainMenuButtons[MENU_BUTTON_LANGUAGE_ENGLISH] = spawn_object_rel_with_rot(\n        soundModeButton, MODEL_MAIN_MENU_GENERIC_BUTTON, bhvMenuButton, 533, -111, -100, 0, -0x8000, 0);\n    sMainMenuButtons[MENU_BUTTON_LANGUAGE_ENGLISH]->oMenuButtonScale = 0.11111111f;\n    // French option button\n    sMainMenuButtons[MENU_BUTTON_LANGUAGE_FRENCH] = spawn_object_rel_with_rot(\n        soundModeButton, MODEL_MAIN_MENU_GENERIC_BUTTON, bhvMenuButton, 0, -111, -100, 0, -0x8000, 0);\n    sMainMenuButtons[MENU_BUTTON_LANGUAGE_FRENCH]->oMenuButtonScale = 0.11111111f;\n    // German option button\n    sMainMenuButtons[MENU_BUTTON_LANGUAGE_GERMAN] = spawn_object_rel_with_rot(\n        soundModeButton, MODEL_MAIN_MENU_GENERIC_BUTTON, bhvMenuButton, -533, -111, -100, 0, -0x8000, 0);\n    sMainMenuButtons[MENU_BUTTON_LANGUAGE_GERMAN]->oMenuButtonScale = 0.11111111f;\n\n    // Return button\n    sMainMenuButtons[MENU_BUTTON_LANGUAGE_RETURN] = spawn_object_rel_with_rot(\n        soundModeButton, MODEL_MAIN_MENU_YELLOW_FILE_BUTTON, bhvMenuButton, 0, -533, -100, 0, -0x8000, 0);\n    sMainMenuButtons[MENU_BUTTON_LANGUAGE_RETURN]->oMenuButtonScale = 0.11111111f;\n#else\n    // Zoom in current selection\n    sMainMenuButtons[MENU_BUTTON_OPTION_MIN + sSoundMode]->oMenuButtonState = MENU_BUTTON_STATE_ZOOM_IN;\n#endif\n}\n\n#undef SOUND_BUTTON_Y\n\n/**\n * In the sound mode menu, checks if a button was clicked to change sound mode & button state.\n */\nvoid check_sound_mode_menu_clicked_buttons(struct Object *soundModeButton) {\n    if (soundModeButton->oMenuButtonState == MENU_BUTTON_STATE_FULLSCREEN) {\n        s32 buttonID;\n        // Configure sound mode menu button group\n        for (buttonID = MENU_BUTTON_OPTION_MIN; buttonID < MENU_BUTTON_OPTION_MAX; buttonID++) {\n            s16 buttonX = sMainMenuButtons[buttonID]->oPosX;\n            s16 buttonY = sMainMenuButtons[buttonID]->oPosY;\n\n            if (check_clicked_button(buttonX, buttonY, 22.0f) == TRUE) {\n                // If sound mode button clicked, select it and define sound mode\n                // The check will always be true because of the group configured above (In JP & US)\n                if (buttonID == MENU_BUTTON_STEREO || buttonID == MENU_BUTTON_MONO\n                    || buttonID == MENU_BUTTON_HEADSET) {\n                    if (soundModeButton->oMenuButtonActionPhase == SOUND_MODE_PHASE_MAIN) {\n                        play_sound(SOUND_MENU_CLICK_FILE_SELECT, gGlobalSoundSource);\n#if ENABLE_RUMBLE\n                        queue_rumble_data(5, 80);\n#endif\n                        sMainMenuButtons[buttonID]->oMenuButtonState = MENU_BUTTON_STATE_ZOOM_IN_OUT;\n#ifndef VERSION_EU\n                        // Sound menu buttons don't return to Main Menu in EU\n                        // because they don't have a case in bhv_menu_button_manager_loop\n                        sSelectedButtonID = buttonID;\n#endif\n                        sSoundMode = buttonID - MENU_BUTTON_OPTION_MIN;\n                        save_file_set_sound_mode(sSoundMode);\n                    }\n                }\n#ifdef VERSION_EU\n                // If language mode button clicked, select it and change language\n                if (buttonID == MENU_BUTTON_LANGUAGE_ENGLISH || buttonID == MENU_BUTTON_LANGUAGE_FRENCH\n                         || buttonID == MENU_BUTTON_LANGUAGE_GERMAN) {\n                    if (soundModeButton->oMenuButtonActionPhase == SOUND_MODE_PHASE_MAIN) {\n                        play_sound(SOUND_MENU_CLICK_FILE_SELECT, gGlobalSoundSource);\n                        sMainMenuButtons[buttonID]->oMenuButtonState = MENU_BUTTON_STATE_ZOOM_IN_OUT;\n                        sLanguageMode = buttonID - MENU_BUTTON_LANGUAGE_MIN;\n                        eu_set_language(sLanguageMode);\n                    }\n                }\n                // If neither of the buttons above are pressed, return to main menu\n                if (buttonID == MENU_BUTTON_LANGUAGE_RETURN) {\n                    play_sound(SOUND_MENU_CLICK_FILE_SELECT, gGlobalSoundSource);\n                    sMainMenuButtons[buttonID]->oMenuButtonState = MENU_BUTTON_STATE_ZOOM_IN_OUT;\n                    sSelectedButtonID = buttonID;\n                }\n#endif\n                sCurrentMenuLevel = MENU_LAYER_SUBMENU;\n\n                break;\n            }\n        }\n    }\n}\n\n/**\n * Loads a save file selected after it goes into a full screen state\n * retuning sSelectedFileNum to a save value defined in fileNum.\n */\nvoid load_main_menu_save_file(struct Object *fileButton, s32 fileNum) {\n    if (fileButton->oMenuButtonState == MENU_BUTTON_STATE_FULLSCREEN) {\n        sSelectedFileNum = fileNum;\n    }\n}\n\n/**\n * Returns from the previous menu back to the main menu using\n * the return button (or sound mode) as source button.\n */\nvoid return_to_main_menu(s16 prevMenuButtonID, struct Object *sourceButton) {\n    s32 buttonID;\n    // If the source button is in default state and the previous menu in full screen,\n    // play zoom out sound and shrink previous menu\n    if (sourceButton->oMenuButtonState == MENU_BUTTON_STATE_DEFAULT\n        && sMainMenuButtons[prevMenuButtonID]->oMenuButtonState == MENU_BUTTON_STATE_FULLSCREEN) {\n        play_sound(SOUND_MENU_CAMERA_ZOOM_OUT, gGlobalSoundSource);\n        sMainMenuButtons[prevMenuButtonID]->oMenuButtonState = MENU_BUTTON_STATE_SHRINKING;\n        sCurrentMenuLevel = MENU_LAYER_MAIN;\n    }\n    // If the previous button is in default state, return back to the main menu\n    if (sMainMenuButtons[prevMenuButtonID]->oMenuButtonState == MENU_BUTTON_STATE_DEFAULT) {\n        sSelectedButtonID = MENU_BUTTON_NONE;\n        // Hide buttons of corresponding button menu groups\n        if (prevMenuButtonID == MENU_BUTTON_SCORE) {\n            for (buttonID = MENU_BUTTON_SCORE_MIN; buttonID < MENU_BUTTON_SCORE_MAX; buttonID++) {\n                mark_obj_for_deletion(sMainMenuButtons[buttonID]);\n            }\n        }\n        if (prevMenuButtonID == MENU_BUTTON_COPY) {\n            for (buttonID = MENU_BUTTON_COPY_MIN; buttonID < MENU_BUTTON_COPY_MAX; buttonID++) {\n                mark_obj_for_deletion(sMainMenuButtons[buttonID]);\n            }\n        }\n        if (prevMenuButtonID == MENU_BUTTON_ERASE) {\n            for (buttonID = MENU_BUTTON_ERASE_MIN; buttonID < MENU_BUTTON_ERASE_MAX; buttonID++) {\n                mark_obj_for_deletion(sMainMenuButtons[buttonID]);\n            }\n        }\n        if (prevMenuButtonID == MENU_BUTTON_SOUND_MODE) {\n            for (buttonID = MENU_BUTTON_OPTION_MIN; buttonID < MENU_BUTTON_OPTION_MAX; buttonID++) {\n                mark_obj_for_deletion(sMainMenuButtons[buttonID]);\n            }\n        }\n    }\n}\n\n/**\n * Loads score menu from the previous menu using \"CHECK SCORE\" as source button.\n */\nvoid load_score_menu_from_submenu(s16 prevMenuButtonID, struct Object *sourceButton) {\n    s32 buttonID;\n    // If the source button is in default state and the previous menu in full screen,\n    // play zoom out sound and shrink previous menu\n    if (sourceButton->oMenuButtonState == MENU_BUTTON_STATE_DEFAULT\n        && sMainMenuButtons[prevMenuButtonID]->oMenuButtonState == MENU_BUTTON_STATE_FULLSCREEN) {\n        play_sound(SOUND_MENU_CAMERA_ZOOM_OUT, gGlobalSoundSource);\n        sMainMenuButtons[prevMenuButtonID]->oMenuButtonState = MENU_BUTTON_STATE_SHRINKING;\n        sCurrentMenuLevel = MENU_LAYER_MAIN;\n    }\n    // If the previous button is in default state\n    if (sMainMenuButtons[prevMenuButtonID]->oMenuButtonState == MENU_BUTTON_STATE_DEFAULT) {\n        // Hide buttons of corresponding button menu groups\n        //! Not possible, this is checking if the score menu was opened from the score menu!\n        if (prevMenuButtonID == MENU_BUTTON_SCORE) {\n            for (buttonID = MENU_BUTTON_SCORE_MIN; buttonID < MENU_BUTTON_SCORE_MAX; buttonID++) {\n                mark_obj_for_deletion(sMainMenuButtons[buttonID]);\n            }\n        }\n        if (prevMenuButtonID == MENU_BUTTON_COPY) {\n            for (buttonID = MENU_BUTTON_COPY_MIN; buttonID < MENU_BUTTON_COPY_MAX; buttonID++) {\n                mark_obj_for_deletion(sMainMenuButtons[buttonID]);\n            }\n        }\n        if (prevMenuButtonID == MENU_BUTTON_ERASE) {\n            for (buttonID = MENU_BUTTON_ERASE_MIN; buttonID < MENU_BUTTON_ERASE_MAX; buttonID++) {\n                mark_obj_for_deletion(sMainMenuButtons[buttonID]);\n            }\n        }\n        // Play zoom in sound, select score menu and render it's buttons\n        sSelectedButtonID = MENU_BUTTON_SCORE;\n        play_sound(SOUND_MENU_CAMERA_ZOOM_IN, gGlobalSoundSource);\n        sMainMenuButtons[MENU_BUTTON_SCORE]->oMenuButtonState = MENU_BUTTON_STATE_GROWING;\n        render_score_menu_buttons(sMainMenuButtons[MENU_BUTTON_SCORE]);\n    }\n}\n\n/**\n * Loads copy menu from the previous menu using \"COPY FILE\" as source button.\n */\nvoid load_copy_menu_from_submenu(s16 prevMenuButtonID, struct Object *sourceButton) {\n    s32 buttonID;\n    // If the source button is in default state and the previous menu in full screen,\n    // play zoom out sound and shrink previous menu\n    if (sourceButton->oMenuButtonState == MENU_BUTTON_STATE_DEFAULT\n        && sMainMenuButtons[prevMenuButtonID]->oMenuButtonState == MENU_BUTTON_STATE_FULLSCREEN) {\n        play_sound(SOUND_MENU_CAMERA_ZOOM_OUT, gGlobalSoundSource);\n        sMainMenuButtons[prevMenuButtonID]->oMenuButtonState = MENU_BUTTON_STATE_SHRINKING;\n        sCurrentMenuLevel = MENU_LAYER_MAIN;\n    }\n    // If the previous button is in default state\n    if (sMainMenuButtons[prevMenuButtonID]->oMenuButtonState == MENU_BUTTON_STATE_DEFAULT) {\n        // Hide buttons of corresponding button menu groups\n        if (prevMenuButtonID == MENU_BUTTON_SCORE) {\n            for (buttonID = MENU_BUTTON_SCORE_MIN; buttonID < MENU_BUTTON_SCORE_MAX; buttonID++) {\n                mark_obj_for_deletion(sMainMenuButtons[buttonID]);\n            }\n        }\n        //! Not possible, this is checking if the copy menu was opened from the copy menu!\n        if (prevMenuButtonID == MENU_BUTTON_COPY) {\n            for (buttonID = MENU_BUTTON_COPY_MIN; buttonID < MENU_BUTTON_COPY_MAX; buttonID++) {\n                mark_obj_for_deletion(sMainMenuButtons[buttonID]);\n            }\n        }\n        if (prevMenuButtonID == MENU_BUTTON_ERASE) {\n            for (buttonID = MENU_BUTTON_ERASE_MIN; buttonID < MENU_BUTTON_ERASE_MAX; buttonID++) {\n                mark_obj_for_deletion(sMainMenuButtons[buttonID]);\n            }\n        }\n        // Play zoom in sound, select copy menu and render it's buttons\n        sSelectedButtonID = MENU_BUTTON_COPY;\n        play_sound(SOUND_MENU_CAMERA_ZOOM_IN, gGlobalSoundSource);\n        sMainMenuButtons[MENU_BUTTON_COPY]->oMenuButtonState = MENU_BUTTON_STATE_GROWING;\n        render_copy_menu_buttons(sMainMenuButtons[MENU_BUTTON_COPY]);\n    }\n}\n\n/**\n * Loads erase menu from the previous menu using \"ERASE FILE\" as source button.\n */\nvoid load_erase_menu_from_submenu(s16 prevMenuButtonID, struct Object *sourceButton) {\n    s32 buttonID;\n    // If the source button is in default state and the previous menu in full screen,\n    // play zoom out sound and shrink previous menu\n    if (sourceButton->oMenuButtonState == MENU_BUTTON_STATE_DEFAULT\n        && sMainMenuButtons[prevMenuButtonID]->oMenuButtonState == MENU_BUTTON_STATE_FULLSCREEN) {\n        play_sound(SOUND_MENU_CAMERA_ZOOM_OUT, gGlobalSoundSource);\n        sMainMenuButtons[prevMenuButtonID]->oMenuButtonState = MENU_BUTTON_STATE_SHRINKING;\n        sCurrentMenuLevel = MENU_LAYER_MAIN;\n    }\n    // If the previous button is in default state\n    if (sMainMenuButtons[prevMenuButtonID]->oMenuButtonState == MENU_BUTTON_STATE_DEFAULT) {\n        // Hide buttons of corresponding button menu groups\n        if (prevMenuButtonID == MENU_BUTTON_SCORE) {\n            for (buttonID = MENU_BUTTON_SCORE_MIN; buttonID < MENU_BUTTON_SCORE_MAX; buttonID++) {\n                mark_obj_for_deletion(sMainMenuButtons[buttonID]);\n            }\n        }\n        if (prevMenuButtonID == MENU_BUTTON_COPY) {\n            for (buttonID = MENU_BUTTON_COPY_MIN; buttonID < MENU_BUTTON_COPY_MAX; buttonID++) {\n                mark_obj_for_deletion(sMainMenuButtons[buttonID]);\n            }\n        }\n        //! Not possible, this is checking if the erase menu was opened from the erase menu!\n        if (prevMenuButtonID == MENU_BUTTON_ERASE) {\n            for (buttonID = MENU_BUTTON_ERASE_MIN; buttonID < MENU_BUTTON_ERASE_MAX; buttonID++) {\n                mark_obj_for_deletion(sMainMenuButtons[buttonID]);\n            }\n        }\n        // Play zoom in sound, select erase menu and render it's buttons\n        sSelectedButtonID = MENU_BUTTON_ERASE;\n        play_sound(SOUND_MENU_CAMERA_ZOOM_IN, gGlobalSoundSource);\n        sMainMenuButtons[MENU_BUTTON_ERASE]->oMenuButtonState = MENU_BUTTON_STATE_GROWING;\n        render_erase_menu_buttons(sMainMenuButtons[MENU_BUTTON_ERASE]);\n    }\n}\n\n\n/**\n * Menu Buttons Menu Manager Initial Action\n * Creates models of the buttons in the menu. For the Mario buttons it\n * checks if a save file exists to render an specific button model for it.\n * Unlike buttons on submenus, these are never hidden or recreated.\n */\nvoid bhv_menu_button_manager_init(void) {\n    // File A\n    if (save_file_exists(SAVE_FILE_A) == TRUE) {\n        sMainMenuButtons[MENU_BUTTON_PLAY_FILE_A] =\n            spawn_object_rel_with_rot(gCurrentObject, MODEL_MAIN_MENU_MARIO_SAVE_BUTTON_FADE,\n                                      bhvMenuButton, -6400, 2800, 0, 0, 0, 0);\n    } else {\n        sMainMenuButtons[MENU_BUTTON_PLAY_FILE_A] =\n            spawn_object_rel_with_rot(gCurrentObject, MODEL_MAIN_MENU_MARIO_NEW_BUTTON_FADE,\n                                      bhvMenuButton, -6400, 2800, 0, 0, 0, 0);\n    }\n    sMainMenuButtons[MENU_BUTTON_PLAY_FILE_A]->oMenuButtonScale = 1.0f;\n    // File B\n    if (save_file_exists(SAVE_FILE_B) == TRUE) {\n        sMainMenuButtons[MENU_BUTTON_PLAY_FILE_B] =\n            spawn_object_rel_with_rot(gCurrentObject, MODEL_MAIN_MENU_MARIO_SAVE_BUTTON_FADE,\n                                      bhvMenuButton, 1500, 2800, 0, 0, 0, 0);\n    } else {\n        sMainMenuButtons[MENU_BUTTON_PLAY_FILE_B] =\n            spawn_object_rel_with_rot(gCurrentObject, MODEL_MAIN_MENU_MARIO_NEW_BUTTON_FADE,\n                                      bhvMenuButton, 1500, 2800, 0, 0, 0, 0);\n    }\n    sMainMenuButtons[MENU_BUTTON_PLAY_FILE_B]->oMenuButtonScale = 1.0f;\n    // File C\n    if (save_file_exists(SAVE_FILE_C) == TRUE) {\n        sMainMenuButtons[MENU_BUTTON_PLAY_FILE_C] =\n            spawn_object_rel_with_rot(gCurrentObject, MODEL_MAIN_MENU_MARIO_SAVE_BUTTON_FADE,\n                                      bhvMenuButton, -6400, 0, 0, 0, 0, 0);\n    } else {\n        sMainMenuButtons[MENU_BUTTON_PLAY_FILE_C] = spawn_object_rel_with_rot(\n            gCurrentObject, MODEL_MAIN_MENU_MARIO_NEW_BUTTON_FADE, bhvMenuButton, -6400, 0, 0, 0, 0, 0);\n    }\n    sMainMenuButtons[MENU_BUTTON_PLAY_FILE_C]->oMenuButtonScale = 1.0f;\n    // File D\n    if (save_file_exists(SAVE_FILE_D) == TRUE) {\n        sMainMenuButtons[MENU_BUTTON_PLAY_FILE_D] = spawn_object_rel_with_rot(\n            gCurrentObject, MODEL_MAIN_MENU_MARIO_SAVE_BUTTON_FADE, bhvMenuButton, 1500, 0, 0, 0, 0, 0);\n    } else {\n        sMainMenuButtons[MENU_BUTTON_PLAY_FILE_D] = spawn_object_rel_with_rot(\n            gCurrentObject, MODEL_MAIN_MENU_MARIO_NEW_BUTTON_FADE, bhvMenuButton, 1500, 0, 0, 0, 0, 0);\n    }\n    sMainMenuButtons[MENU_BUTTON_PLAY_FILE_D]->oMenuButtonScale = 1.0f;\n    // Score menu button\n    sMainMenuButtons[MENU_BUTTON_SCORE] = spawn_object_rel_with_rot(\n        gCurrentObject, MODEL_MAIN_MENU_GREEN_SCORE_BUTTON, bhvMenuButton, -6400, -3500, 0, 0, 0, 0);\n    sMainMenuButtons[MENU_BUTTON_SCORE]->oMenuButtonScale = 1.0f;\n    // Copy menu button\n    sMainMenuButtons[MENU_BUTTON_COPY] = spawn_object_rel_with_rot(\n        gCurrentObject, MODEL_MAIN_MENU_BLUE_COPY_BUTTON, bhvMenuButton, -2134, -3500, 0, 0, 0, 0);\n    sMainMenuButtons[MENU_BUTTON_COPY]->oMenuButtonScale = 1.0f;\n    // Erase menu button\n    sMainMenuButtons[MENU_BUTTON_ERASE] = spawn_object_rel_with_rot(\n        gCurrentObject, MODEL_MAIN_MENU_RED_ERASE_BUTTON, bhvMenuButton, 2134, -3500, 0, 0, 0, 0);\n    sMainMenuButtons[MENU_BUTTON_ERASE]->oMenuButtonScale = 1.0f;\n    // Sound mode menu button (Option Mode in EU)\n    sMainMenuButtons[MENU_BUTTON_SOUND_MODE] = spawn_object_rel_with_rot(\n        gCurrentObject, MODEL_MAIN_MENU_PURPLE_SOUND_BUTTON, bhvMenuButton, 6400, -3500, 0, 0, 0, 0);\n    sMainMenuButtons[MENU_BUTTON_SOUND_MODE]->oMenuButtonScale = 1.0f;\n\n    sTextBaseAlpha = 0;\n}\n\n#ifdef VERSION_JP\n    #define SAVE_FILE_SOUND SOUND_MENU_STAR_SOUND\n#else\n    #define SAVE_FILE_SOUND SOUND_MENU_STAR_SOUND_OKEY_DOKEY\n#endif\n\n/**\n * In the main menu, check if a button was clicked to play it's button growing state.\n * Also play a sound and/or render buttons depending of the button ID selected.\n */\nvoid check_main_menu_clicked_buttons(void) {\n#ifdef VERSION_EU\n    if (sMainMenuTimer >= 5) {\n#endif\n        // Sound mode menu is handled separately because the button ID for it\n        // is not grouped with the IDs of the other submenus.\n        if (check_clicked_button(sMainMenuButtons[MENU_BUTTON_SOUND_MODE]->oPosX,\n                                sMainMenuButtons[MENU_BUTTON_SOUND_MODE]->oPosY, 200.0f) == TRUE) {\n            sMainMenuButtons[MENU_BUTTON_SOUND_MODE]->oMenuButtonState = MENU_BUTTON_STATE_GROWING;\n            sSelectedButtonID = MENU_BUTTON_SOUND_MODE;\n        } else {\n            // Main Menu buttons\n            s8 buttonID;\n            // Configure Main Menu button group\n            for (buttonID = MENU_BUTTON_MAIN_MIN; buttonID < MENU_BUTTON_MAIN_MAX; buttonID++) {\n                s16 buttonX = sMainMenuButtons[buttonID]->oPosX;\n                s16 buttonY = sMainMenuButtons[buttonID]->oPosY;\n\n                if (check_clicked_button(buttonX, buttonY, 200.0f) == TRUE) {\n                    // If menu button clicked, select it\n                    sMainMenuButtons[buttonID]->oMenuButtonState = MENU_BUTTON_STATE_GROWING;\n                    sSelectedButtonID = buttonID;\n                    break;\n                }\n            }\n        }\n#ifdef VERSION_EU\n        // Open Options Menu if sOpenLangSettings is TRUE (It's TRUE when there's no saves)\n        if (sOpenLangSettings == TRUE) {\n            sMainMenuButtons[MENU_BUTTON_SOUND_MODE]->oMenuButtonState = MENU_BUTTON_STATE_GROWING;\n            sSelectedButtonID = MENU_BUTTON_SOUND_MODE;\n            sOpenLangSettings = FALSE;\n        }\n#endif\n\n        // Play sound of the save file clicked\n        switch (sSelectedButtonID) {\n            case MENU_BUTTON_PLAY_FILE_A:\n                play_sound(SAVE_FILE_SOUND, gGlobalSoundSource);\n#if ENABLE_RUMBLE\n                queue_rumble_data(60, 70);\n                func_sh_8024C89C(1);\n#endif\n                break;\n            case MENU_BUTTON_PLAY_FILE_B:\n                play_sound(SAVE_FILE_SOUND, gGlobalSoundSource);\n#if ENABLE_RUMBLE\n                queue_rumble_data(60, 70);\n                func_sh_8024C89C(1);\n#endif\n                break;\n            case MENU_BUTTON_PLAY_FILE_C:\n                play_sound(SAVE_FILE_SOUND, gGlobalSoundSource);\n#if ENABLE_RUMBLE\n                queue_rumble_data(60, 70);\n                func_sh_8024C89C(1);\n#endif\n                break;\n            case MENU_BUTTON_PLAY_FILE_D:\n                play_sound(SAVE_FILE_SOUND, gGlobalSoundSource);\n#if ENABLE_RUMBLE\n                queue_rumble_data(60, 70);\n                func_sh_8024C89C(1);\n#endif\n                break;\n            // Play sound of the button clicked and render buttons of that menu.\n            case MENU_BUTTON_SCORE:\n                play_sound(SOUND_MENU_CAMERA_ZOOM_IN, gGlobalSoundSource);\n#if ENABLE_RUMBLE\n                queue_rumble_data(5, 80);\n#endif\n                render_score_menu_buttons(sMainMenuButtons[MENU_BUTTON_SCORE]);\n                break;\n            case MENU_BUTTON_COPY:\n                play_sound(SOUND_MENU_CAMERA_ZOOM_IN, gGlobalSoundSource);\n#if ENABLE_RUMBLE\n                queue_rumble_data(5, 80);\n#endif\n                render_copy_menu_buttons(sMainMenuButtons[MENU_BUTTON_COPY]);\n                break;\n            case MENU_BUTTON_ERASE:\n                play_sound(SOUND_MENU_CAMERA_ZOOM_IN, gGlobalSoundSource);\n#if ENABLE_RUMBLE\n                queue_rumble_data(5, 80);\n#endif\n                render_erase_menu_buttons(sMainMenuButtons[MENU_BUTTON_ERASE]);\n                break;\n            case MENU_BUTTON_SOUND_MODE:\n                play_sound(SOUND_MENU_CAMERA_ZOOM_IN, gGlobalSoundSource);\n#if ENABLE_RUMBLE\n                queue_rumble_data(5, 80);\n#endif\n                render_sound_mode_menu_buttons(sMainMenuButtons[MENU_BUTTON_SOUND_MODE]);\n                break;\n        }\n#ifdef VERSION_EU\n    }\n#endif\n}\n\n#undef SAVE_FILE_SOUND\n\n/**\n * Menu Buttons Menu Manager Loop Action\n * Calls a menu function depending of the button chosen.\n * sSelectedButtonID is MENU_BUTTON_NONE when the file select\n * is loaded, and that checks what buttonID is clicked in the main menu.\n */\nvoid bhv_menu_button_manager_loop(void) {\n    switch (sSelectedButtonID) {\n        case MENU_BUTTON_NONE:\n            check_main_menu_clicked_buttons();\n            break;\n        case MENU_BUTTON_PLAY_FILE_A:\n            load_main_menu_save_file(sMainMenuButtons[MENU_BUTTON_PLAY_FILE_A], 1);\n            break;\n        case MENU_BUTTON_PLAY_FILE_B:\n            load_main_menu_save_file(sMainMenuButtons[MENU_BUTTON_PLAY_FILE_B], 2);\n            break;\n        case MENU_BUTTON_PLAY_FILE_C:\n            load_main_menu_save_file(sMainMenuButtons[MENU_BUTTON_PLAY_FILE_C], 3);\n            break;\n        case MENU_BUTTON_PLAY_FILE_D:\n            load_main_menu_save_file(sMainMenuButtons[MENU_BUTTON_PLAY_FILE_D], 4);\n            break;\n        case MENU_BUTTON_SCORE:\n            check_score_menu_clicked_buttons(sMainMenuButtons[MENU_BUTTON_SCORE]);\n            break;\n        case MENU_BUTTON_COPY:\n            check_copy_menu_clicked_buttons(sMainMenuButtons[MENU_BUTTON_COPY]);\n            break;\n        case MENU_BUTTON_ERASE:\n            check_erase_menu_clicked_buttons(sMainMenuButtons[MENU_BUTTON_ERASE]);\n            break;\n\n        case MENU_BUTTON_SCORE_FILE_A:\n            exit_score_file_to_score_menu(sMainMenuButtons[MENU_BUTTON_SCORE_FILE_A], MENU_BUTTON_SCORE);\n            break;\n        case MENU_BUTTON_SCORE_FILE_B:\n            exit_score_file_to_score_menu(sMainMenuButtons[MENU_BUTTON_SCORE_FILE_B], MENU_BUTTON_SCORE);\n            break;\n        case MENU_BUTTON_SCORE_FILE_C:\n            exit_score_file_to_score_menu(sMainMenuButtons[MENU_BUTTON_SCORE_FILE_C], MENU_BUTTON_SCORE);\n            break;\n        case MENU_BUTTON_SCORE_FILE_D:\n            exit_score_file_to_score_menu(sMainMenuButtons[MENU_BUTTON_SCORE_FILE_D], MENU_BUTTON_SCORE);\n            break;\n        case MENU_BUTTON_SCORE_RETURN:\n            return_to_main_menu(MENU_BUTTON_SCORE, sMainMenuButtons[MENU_BUTTON_SCORE_RETURN]);\n            break;\n        case MENU_BUTTON_SCORE_COPY_FILE:\n            load_copy_menu_from_submenu(MENU_BUTTON_SCORE,\n                                        sMainMenuButtons[MENU_BUTTON_SCORE_COPY_FILE]);\n            break;\n        case MENU_BUTTON_SCORE_ERASE_FILE:\n            load_erase_menu_from_submenu(MENU_BUTTON_SCORE,\n                                         sMainMenuButtons[MENU_BUTTON_SCORE_ERASE_FILE]);\n            break;\n\n        case MENU_BUTTON_COPY_FILE_A:\n            break;\n        case MENU_BUTTON_COPY_FILE_B:\n            break;\n        case MENU_BUTTON_COPY_FILE_C:\n            break;\n        case MENU_BUTTON_COPY_FILE_D:\n            break;\n        case MENU_BUTTON_COPY_RETURN:\n            return_to_main_menu(MENU_BUTTON_COPY, sMainMenuButtons[MENU_BUTTON_COPY_RETURN]);\n            break;\n        case MENU_BUTTON_COPY_CHECK_SCORE:\n            load_score_menu_from_submenu(MENU_BUTTON_COPY,\n                                         sMainMenuButtons[MENU_BUTTON_COPY_CHECK_SCORE]);\n            break;\n        case MENU_BUTTON_COPY_ERASE_FILE:\n            load_erase_menu_from_submenu(MENU_BUTTON_COPY,\n                                         sMainMenuButtons[MENU_BUTTON_COPY_ERASE_FILE]);\n            break;\n\n        case MENU_BUTTON_ERASE_FILE_A:\n            break;\n        case MENU_BUTTON_ERASE_FILE_B:\n            break;\n        case MENU_BUTTON_ERASE_FILE_C:\n            break;\n        case MENU_BUTTON_ERASE_FILE_D:\n            break;\n        case MENU_BUTTON_ERASE_RETURN:\n            return_to_main_menu(MENU_BUTTON_ERASE, sMainMenuButtons[MENU_BUTTON_ERASE_RETURN]);\n            break;\n        case MENU_BUTTON_ERASE_CHECK_SCORE:\n            load_score_menu_from_submenu(MENU_BUTTON_ERASE,\n                                         sMainMenuButtons[MENU_BUTTON_ERASE_CHECK_SCORE]);\n            break;\n        case MENU_BUTTON_ERASE_COPY_FILE:\n            load_copy_menu_from_submenu(MENU_BUTTON_ERASE,\n                                        sMainMenuButtons[MENU_BUTTON_ERASE_COPY_FILE]);\n            break;\n\n        case MENU_BUTTON_SOUND_MODE:\n            check_sound_mode_menu_clicked_buttons(sMainMenuButtons[MENU_BUTTON_SOUND_MODE]);\n            break;\n\n        // STEREO, MONO and HEADSET buttons are undefined so they can be selected without\n        // exiting the Options menu, as a result they added a return button\n#ifdef VERSION_EU\n        case MENU_BUTTON_LANGUAGE_RETURN:\n            return_to_main_menu(MENU_BUTTON_SOUND_MODE, sMainMenuButtons[MENU_BUTTON_LANGUAGE_RETURN]);\n            break;\n#else\n        case MENU_BUTTON_STEREO:\n            return_to_main_menu(MENU_BUTTON_SOUND_MODE, sMainMenuButtons[MENU_BUTTON_STEREO]);\n            break;\n        case MENU_BUTTON_MONO:\n            return_to_main_menu(MENU_BUTTON_SOUND_MODE, sMainMenuButtons[MENU_BUTTON_MONO]);\n            break;\n        case MENU_BUTTON_HEADSET:\n            return_to_main_menu(MENU_BUTTON_SOUND_MODE, sMainMenuButtons[MENU_BUTTON_HEADSET]);\n            break;\n#endif\n    }\n\n    sClickPos[0] = -10000;\n    sClickPos[1] = -10000;\n}\n\n/**\n * Cursor function that handles button inputs.\n * If the cursor is clicked, sClickPos uses the same value as sCursorPos.\n */\nvoid handle_cursor_button_input(void) {\n    // If scoring a file, pressing A just changes the coin score mode.\n    if (sSelectedButtonID == MENU_BUTTON_SCORE_FILE_A || sSelectedButtonID == MENU_BUTTON_SCORE_FILE_B\n        || sSelectedButtonID == MENU_BUTTON_SCORE_FILE_C\n        || sSelectedButtonID == MENU_BUTTON_SCORE_FILE_D) {\n        if (gPlayer3Controller->buttonPressed\n#ifdef VERSION_EU\n            & (B_BUTTON | START_BUTTON | Z_TRIG)\n#else\n            & (B_BUTTON | START_BUTTON)\n#endif\n        ) {\n            sClickPos[0] = sCursorPos[0];\n            sClickPos[1] = sCursorPos[1];\n            sCursorClickingTimer = 1;\n        } else if (gPlayer3Controller->buttonPressed & A_BUTTON) {\n            sScoreFileCoinScoreMode = 1 - sScoreFileCoinScoreMode;\n            play_sound(SOUND_MENU_CLICK_FILE_SELECT, gGlobalSoundSource);\n#ifdef VERSION_CN\n        } else if ((gPlayer3Controller->buttonPressed & L_TRIG) || (gPlayer3Controller->buttonPressed & R_TRIG)) {\n            sScorePage = 1 - sScorePage;\n            play_sound(SOUND_MENU_CLICK_FILE_SELECT, gGlobalSoundSource);\n#endif\n        }\n    } else { // If cursor is clicked\n        if (gPlayer3Controller->buttonPressed\n#ifdef VERSION_EU\n            & (A_BUTTON | B_BUTTON | START_BUTTON | Z_TRIG)) {\n#else\n            & (A_BUTTON | B_BUTTON | START_BUTTON)) {\n#endif\n            sClickPos[0] = sCursorPos[0];\n            sClickPos[1] = sCursorPos[1];\n            sCursorClickingTimer = 1;\n        }\n    }\n}\n\n/**\n * Cursor function that handles analog stick input and button presses with a function near the end.\n */\nvoid handle_controller_cursor_input(void) {\n    s16 rawStickX = gPlayer3Controller->rawStickX;\n    s16 rawStickY = gPlayer3Controller->rawStickY;\n\n    // Handle deadzone\n    if (rawStickY > -2 && rawStickY < 2) {\n        rawStickY = 0;\n    }\n    if (rawStickX > -2 && rawStickX < 2) {\n        rawStickX = 0;\n    }\n\n    // Move cursor\n    sCursorPos[0] += rawStickX / 8;\n    sCursorPos[1] += rawStickY / 8;\n\n    // Stop cursor from going offscreen\n    if (sCursorPos[0] > 132.0f) {\n        sCursorPos[0] = 132.0f;\n    }\n    if (sCursorPos[0] < -132.0f) {\n        sCursorPos[0] = -132.0f;\n    }\n\n    if (sCursorPos[1] > 90.0f) {\n        sCursorPos[1] = 90.0f;\n    }\n    if (sCursorPos[1] < -90.0f) {\n        sCursorPos[1] = -90.0f;\n    }\n\n    if (sCursorClickingTimer == 0) {\n        handle_cursor_button_input();\n    }\n}\n\n/**\n * Prints the cursor (Mario Hand, different to the one in the Mario screen)\n * and loads it's controller inputs in handle_controller_cursor_input\n * to be usable on the file select.\n */\nvoid print_menu_cursor(void) {\n    handle_controller_cursor_input();\n    create_dl_translation_matrix(MENU_MTX_PUSH, sCursorPos[0] + 160.0f - 5.0, sCursorPos[1] + 120.0f - 25.0, 0.0f);\n    // Get the right graphic to use for the cursor.\n    if (sCursorClickingTimer == 0) {\n        // Idle\n        gSPDisplayList(gDisplayListHead++, dl_menu_idle_hand);\n    }\n    if (sCursorClickingTimer != 0) {\n        // Grabbing\n        gSPDisplayList(gDisplayListHead++, dl_menu_grabbing_hand);\n    }\n    gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);\n    if (sCursorClickingTimer != 0) {\n        sCursorClickingTimer++; // This is a very strange way to implement a timer? It counts up and\n                                // then resets to 0 instead of just counting down to 0.\n        if (sCursorClickingTimer == 5) {\n            sCursorClickingTimer = 0;\n        }\n    }\n}\n\n/**\n * Prints a hud string depending of the hud table list defined with text fade properties.\n */\nvoid print_hud_lut_string_fade(s8 hudLUT, s16 x, s16 y, const u8 *text) {\n    gSPDisplayList(gDisplayListHead++, dl_rgba16_text_begin);\n    gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha - sTextFadeAlpha);\n    print_hud_lut_string(hudLUT, x, y, text);\n    gSPDisplayList(gDisplayListHead++, dl_rgba16_text_end);\n}\n\n/**\n * Prints a generic white string with text fade properties.\n */\nvoid print_generic_string_fade(s16 x, s16 y, const u8 *text) {\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_begin);\n    gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha - sTextFadeAlpha);\n    print_generic_string(x, y, text);\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_end);\n}\n\n/**\n * Updates text fade at the top of a menu.\n */\ns32 update_text_fade_out(void) {\n    if (sFadeOutText == TRUE) {\n        sTextFadeAlpha += 50;\n        if (sTextFadeAlpha == 250) {\n            sFadeOutText = FALSE;\n            return TRUE;\n        }\n    } else {\n        if (sTextFadeAlpha > 0) {\n            sTextFadeAlpha -= 50;\n        }\n    }\n    return FALSE;\n}\n\n/**\n * Prints the amount of stars of a save file.\n * If a save doesn't exist, print \"NEW\" instead.\n */\nvoid print_save_file_star_count(s8 fileIndex, s16 x, s16 y) {\n    u8 starCountText[4];\n    s8 offset = 0;\n    s16 starCount;\n\n    if (save_file_exists(fileIndex) == TRUE) {\n        starCount = save_file_get_total_star_count(fileIndex, COURSE_MIN - 1, COURSE_MAX - 1);\n        // Print star icon\n        print_hud_lut_string(HUD_LUT_GLOBAL, x, y, starIcon);\n        // If star count is less than 100, print x icon and move\n        // the star count text one digit to the right.\n        if (starCount < 100) {\n            print_hud_lut_string(HUD_LUT_GLOBAL, x + 16, y, xIcon);\n            offset = 16;\n        }\n        // Print star count\n        int_to_str(starCount, starCountText);\n        print_hud_lut_string(HUD_LUT_GLOBAL, x + (offset + 16), y, starCountText);\n    } else {\n        // Print \"new\" text\n#ifdef VERSION_CN\n        print_hud_lut_string(HUD_LUT_GLOBAL, x - 2, y - 5, LANGUAGE_ARRAY(textNew));\n#else\n        print_hud_lut_string(HUD_LUT_GLOBAL, x, y, LANGUAGE_ARRAY(textNew));\n#endif\n    }\n}\n\n#if defined(VERSION_JP) || defined(VERSION_SH)\n    #define SELECT_FILE_X 96\n    #define SELECT_FILE_Y 35\n    #define SCORE_X 50\n    #define COPY_X 115\n    #define ERASE_X 180\n#ifdef VERSION_JP\n    #define SOUNDMODE_X1 235\n#else\n    #define SOUNDMODE_X1 sSoundTextX\n#endif\n    #define SAVEFILE_X1 92\n    #define SAVEFILE_X2 209\n    #define MARIOTEXT_X1 92\n    #define MARIOTEXT_X2 207\n    #define MARIOTEXT_Y1 65\n    #define MARIOTEXT_Y2 105\n#elif defined(VERSION_US)\n    #define SELECT_FILE_X 93\n    #define SELECT_FILE_Y 35\n    #define SCORE_X 52\n    #define COPY_X 117\n    #define ERASE_X 177\n    #define SOUNDMODE_X1 sSoundTextX\n    #define SAVEFILE_X1 92\n    #define SAVEFILE_X2 209\n    #define MARIOTEXT_X1 92\n    #define MARIOTEXT_X2 207\n    #define MARIOTEXT_Y1 65\n    #define MARIOTEXT_Y2 105\n#elif defined(VERSION_EU)\n    #define SAVEFILE_X1 97\n    #define SAVEFILE_X2 204\n    #define MARIOTEXT_X1 97\n    #define MARIOTEXT_X2 204\n    #define MARIOTEXT_Y1 65\n    #define MARIOTEXT_Y2 105\n#elif defined(VERSION_CN)\n    #define SELECT_FILE_X 106\n    #define SELECT_FILE_Y 25\n    #define SCORE_X 52\n    #define COPY_X 113\n    #define ERASE_X 177\n    #define SOUNDMODE_X1 sSoundTextX\n    #define SAVEFILE_X1 92\n    #define SAVEFILE_X2 209\n    #define MARIOTEXT_X1 92\n    #define MARIOTEXT_X2 207\n    #define MARIOTEXT_Y1 164\n    #define MARIOTEXT_Y2 124\n#endif\n\n/**\n * Prints main menu strings that shows on the yellow background menu screen.\n *\n * In EU this function acts like \"print_save_file_strings\" because\n * print_main_lang_strings is first called to render the strings for the 4 buttons.\n * Same rule applies for score, copy and erase strings.\n */\nvoid print_main_menu_strings(void) {\n#if defined(VERSION_SH) || defined(VERSION_CN)\n    // The current sound mode is automatically centered on US and Shindou.\n    static s16 sSoundTextX; // TODO: There should be a way to make this match on both US and Shindou.\n#endif\n    // Print \"SELECT FILE\" text\n    gSPDisplayList(gDisplayListHead++, dl_rgba16_text_begin);\n    gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha);\n#ifndef VERSION_EU\n    print_hud_lut_string(HUD_LUT_DIFF2, SELECT_FILE_X, SELECT_FILE_Y, textSelectFile);\n#endif\n    // Print file star counts\n    print_save_file_star_count(SAVE_FILE_A, SAVEFILE_X1, 78);\n    print_save_file_star_count(SAVE_FILE_B, SAVEFILE_X2, 78);\n    print_save_file_star_count(SAVE_FILE_C, SAVEFILE_X1, 118);\n    print_save_file_star_count(SAVE_FILE_D, SAVEFILE_X2, 118);\n    gSPDisplayList(gDisplayListHead++, dl_rgba16_text_end);\n#ifndef VERSION_EU\n    // Print menu names\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_begin);\n    gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha);\n    print_generic_string(SCORE_X, 39, textScore);\n    print_generic_string(COPY_X, 39, textCopy);\n    print_generic_string(ERASE_X, 39, textErase);\n#ifndef VERSION_JP\n    sSoundTextX = get_str_x_pos_from_center(254, textSoundModes[sSoundMode], 10.0f);\n#endif\n    print_generic_string(SOUNDMODE_X1, 39, textSoundModes[sSoundMode]);\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_end);\n#endif\n\n    // Print file names\n    gSPDisplayList(gDisplayListHead++, FILE_SELECT_TEXT_DL_BEGIN);\n    gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha);\n    FILE_SELECT_PRINT_STRING(MARIOTEXT_X1, MARIOTEXT_Y1, textMarioA);\n    FILE_SELECT_PRINT_STRING(MARIOTEXT_X2, MARIOTEXT_Y1, textMarioB);\n    FILE_SELECT_PRINT_STRING(MARIOTEXT_X1, MARIOTEXT_Y2, textMarioC);\n    FILE_SELECT_PRINT_STRING(MARIOTEXT_X2, MARIOTEXT_Y2, textMarioD);\n    gSPDisplayList(gDisplayListHead++, FILE_SELECT_TEXT_DL_END);\n}\n\n#ifdef VERSION_EU\n/**\n * Prints the first part main menu strings that shows on the yellow background menu screen.\n * Has the strings for the 4 buttons below the save buttons that get changed depending of the language.\n * Calls print_main_menu_strings to print the remaining strings.\n */\nvoid print_main_lang_strings(void) {\n    static s16 centeredX;\n\n    // Print \"SELECT FILE\" text\n    gSPDisplayList(gDisplayListHead++, dl_rgba16_text_begin);\n    gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha);\n    centeredX = get_str_x_pos_from_center_scale(160, textSelectFile[sLanguageMode], 12.0f);\n    print_hud_lut_string(HUD_LUT_GLOBAL, centeredX, 35, textSelectFile[sLanguageMode]);\n    gSPDisplayList(gDisplayListHead++, dl_rgba16_text_end);\n\n    // Print menu names\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_begin);\n    gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha);\n    centeredX = get_str_x_pos_from_center(76, textScore[sLanguageMode], 10.0f);\n    print_generic_string(centeredX, 39, textScore[sLanguageMode]);\n    centeredX = get_str_x_pos_from_center(131, textCopy[sLanguageMode], 10.0f);\n    print_generic_string(centeredX, 39, textCopy[sLanguageMode]);\n    centeredX = get_str_x_pos_from_center(189, textErase[sLanguageMode], 10.0f);\n    print_generic_string(centeredX, 39, textErase[sLanguageMode]);\n    centeredX = get_str_x_pos_from_center(245, textOption[sLanguageMode], 10.0f);\n    print_generic_string(centeredX, 39, textOption[sLanguageMode]);\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_end);\n\n    print_main_menu_strings();\n}\n#endif\n\n#if defined(VERSION_JP) || defined(VERSION_SH)\n    #define CHECK_FILE_X 90\n    #define CHECK_FILE_Y 35\n    #define NOSAVE_DATA_X1 90\n#elif defined(VERSION_US)\n    #define CHECK_FILE_X 95\n    #define CHECK_FILE_Y 35\n    #define NOSAVE_DATA_X1 99\n#elif defined(VERSION_EU)\n    #define CHECK_FILE_X checkFileX\n    #define CHECK_FILE_Y 35\n    #define NOSAVE_DATA_X1 noSaveDataX\n#elif defined(VERSION_CN)\n    #define CHECK_FILE_X 106\n    #define CHECK_FILE_Y 25\n    #define NOSAVE_DATA_X1 99\n#endif\n\n/**\n * Defines IDs for the top message of the score menu and displays it if the ID is called in messageID.\n */\nvoid score_menu_display_message(s8 messageID) {\n#ifdef VERSION_EU\n    s16 checkFileX, noSaveDataX;\n#endif\n\n    switch (messageID) {\n        case SCORE_MSG_CHECK_FILE:\n#ifdef VERSION_EU\n            checkFileX = get_str_x_pos_from_center_scale(160, LANGUAGE_ARRAY(textCheckFile), 12.0f);\n#endif\n            print_hud_lut_string_fade(HUD_LUT_DIFF, CHECK_FILE_X, CHECK_FILE_Y, LANGUAGE_ARRAY(textCheckFile));\n            break;\n        case SCORE_MSG_NOSAVE_DATA:\n#ifdef VERSION_EU\n            noSaveDataX = get_str_x_pos_from_center(160, LANGUAGE_ARRAY(textNoSavedDataExists), 10.0f);\n#endif\n            print_generic_string_fade(NOSAVE_DATA_X1, 190, LANGUAGE_ARRAY(textNoSavedDataExists));\n            break;\n    }\n}\n\n#if defined(VERSION_JP) || defined(VERSION_SH)\n    #define RETURN_X     45\n    #define COPYFILE_X1  128\n    #define ERASEFILE_X1 228\n    #define SCORE_FILE_Y1 62\n    #define SCORE_FILE_Y2 105\n#elif defined(VERSION_US)\n    #define RETURN_X     44\n    #define COPYFILE_X1  135\n    #define ERASEFILE_X1 231\n    #define SCORE_FILE_Y1 62\n    #define SCORE_FILE_Y2 105\n#elif defined(VERSION_EU)\n    #define RETURN_X     centeredX\n    #define COPYFILE_X1  centeredX\n    #define ERASEFILE_X1 centeredX\n#elif defined(VERSION_CN)\n    #define RETURN_X     44\n    #define COPYFILE_X1  135\n    #define ERASEFILE_X1 231\n    #define SCORE_FILE_Y1 164\n    #define SCORE_FILE_Y2 121\n#endif\n\n#ifdef VERSION_CN\n    #define RETURN_X_OLD 45 // this X wasn't changed in all places\n#else\n    #define RETURN_X_OLD RETURN_X\n#endif\n\n#ifdef VERSION_EU\n    #define FADEOUT_TIMER 35\n#else\n    #define FADEOUT_TIMER 20\n#endif\n\n/**\n * Prints score menu strings that shows on the green background menu screen.\n */\nvoid print_score_menu_strings(void) {\n#ifdef VERSION_EU\n    s16 centeredX;\n#endif\n\n    // Update and print the message at the top of the menu.\n    if (sMainMenuTimer == FADEOUT_TIMER) {\n        sFadeOutText = TRUE;\n    }\n    if (update_text_fade_out() == TRUE) {\n        if (sStatusMessageID == SCORE_MSG_CHECK_FILE) {\n            sStatusMessageID = SCORE_MSG_NOSAVE_DATA;\n        } else {\n            sStatusMessageID = SCORE_MSG_CHECK_FILE;\n        }\n    }\n    // Print messageID called above\n    score_menu_display_message(sStatusMessageID);\n\n#ifndef VERSION_EU\n    // Print file star counts\n    gSPDisplayList(gDisplayListHead++, dl_rgba16_text_begin);\n    gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha);\n    print_save_file_star_count(SAVE_FILE_A, 90, 76);\n    print_save_file_star_count(SAVE_FILE_B, 211, 76);\n    print_save_file_star_count(SAVE_FILE_C, 90, 119);\n    print_save_file_star_count(SAVE_FILE_D, 211, 119);\n    gSPDisplayList(gDisplayListHead++, dl_rgba16_text_end);\n#endif\n\n    // Print menu names\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_begin);\n    gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha);\n#ifdef VERSION_EU\n    centeredX = get_str_x_pos_from_center(69, textReturn[sLanguageMode], 10.0f);\n#endif\n    print_generic_string(RETURN_X, 35, LANGUAGE_ARRAY(textReturn));\n#ifdef VERSION_EU\n    centeredX = get_str_x_pos_from_center(159, textCopyFileButton[sLanguageMode], 10.0f);\n#endif\n    print_generic_string(COPYFILE_X1, 35, LANGUAGE_ARRAY(textCopyFileButton));\n#ifdef VERSION_EU\n    centeredX = get_str_x_pos_from_center(249, textEraseFileButton[sLanguageMode], 10.0f);\n#endif\n    print_generic_string(ERASEFILE_X1, 35, LANGUAGE_ARRAY(textEraseFileButton));\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_end);\n\n    // Print file names\n#ifdef VERSION_EU\n    print_main_menu_strings();\n#else\n    gSPDisplayList(gDisplayListHead++, FILE_SELECT_TEXT_DL_BEGIN);\n    gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha);\n    FILE_SELECT_PRINT_STRING(89, SCORE_FILE_Y1, textMarioA);\n    FILE_SELECT_PRINT_STRING(211, SCORE_FILE_Y1, textMarioB);\n    FILE_SELECT_PRINT_STRING(89, SCORE_FILE_Y2, textMarioC);\n    FILE_SELECT_PRINT_STRING(211, SCORE_FILE_Y2, textMarioD);\n    gSPDisplayList(gDisplayListHead++, FILE_SELECT_TEXT_DL_END);\n#endif\n}\n\n#if defined(VERSION_JP) || defined(VERSION_SH)\n    #define NOFILE_COPY_X  90\n    #define COPY_FILE_X    90\n    #define COPYIT_WHERE_X 90\n    #define NOSAVE_DATA_X2 90\n    #define COPYCOMPLETE_X 90\n    #define SAVE_EXISTS_X1 90\n    #define COPY_FILE_Y    35\n#elif defined(VERSION_US)\n    #define NOFILE_COPY_X  119\n    #define COPY_FILE_X    104\n    #define COPYIT_WHERE_X 109\n    #define NOSAVE_DATA_X2 101\n    #define COPYCOMPLETE_X 110\n    #define SAVE_EXISTS_X1 110\n    #define COPY_FILE_Y    35\n#elif defined(VERSION_EU)\n    #define NOFILE_COPY_X  centeredX\n    #define COPY_FILE_X    centeredX\n    #define COPYIT_WHERE_X centeredX\n    #define NOSAVE_DATA_X2 centeredX\n    #define COPYCOMPLETE_X centeredX\n    #define SAVE_EXISTS_X1 centeredX\n    #define COPY_FILE_Y    35\n#elif defined(VERSION_CN)\n    #define NOFILE_COPY_X  119\n    #define COPY_FILE_X    104\n    #define COPYIT_WHERE_X 109\n    #define NOSAVE_DATA_X2 101\n    #define COPYCOMPLETE_X 110\n    #define SAVE_EXISTS_X1 110\n    #define COPY_FILE_Y    25\n#endif\n\n/**\n * Defines IDs for the top message of the copy menu and displays it if the ID is called in messageID.\n */\nvoid copy_menu_display_message(s8 messageID) {\n#ifdef VERSION_EU\n    s16 centeredX;\n#endif\n\n    switch (messageID) {\n        case COPY_MSG_MAIN_TEXT:\n            if (sAllFilesExist == TRUE) {\n#ifdef VERSION_EU\n                centeredX = get_str_x_pos_from_center(160, textNoFileToCopyFrom[sLanguageMode], 10.0f);\n#endif\n                print_generic_string_fade(NOFILE_COPY_X, 190, LANGUAGE_ARRAY(textNoFileToCopyFrom));\n            } else {\n#ifdef VERSION_EU\n                centeredX = get_str_x_pos_from_center_scale(160, textCopyFile[sLanguageMode], 12.0f);\n#endif\n                print_hud_lut_string_fade(HUD_LUT_DIFF, COPY_FILE_X, COPY_FILE_Y, LANGUAGE_ARRAY(textCopyFile));\n            }\n            break;\n        case COPY_MSG_COPY_WHERE:\n#ifdef VERSION_EU\n            centeredX = get_str_x_pos_from_center(160, textCopyItToWhere[sLanguageMode], 10.0f);\n#endif\n            print_generic_string_fade(COPYIT_WHERE_X, 190, LANGUAGE_ARRAY(textCopyItToWhere));\n            break;\n        case COPY_MSG_NOSAVE_EXISTS:\n#ifdef VERSION_EU\n            centeredX = get_str_x_pos_from_center(160, textNoSavedDataExists[sLanguageMode], 10.0f);\n            print_generic_string_fade(NOSAVE_DATA_X2, 190, textNoSavedDataExists[sLanguageMode]);\n#else\n            print_generic_string_fade(NOSAVE_DATA_X2, 190, textNoSavedDataExistsCopy);\n#endif\n            break;\n        case COPY_MSG_COPY_COMPLETE:\n#ifdef VERSION_EU\n            centeredX = get_str_x_pos_from_center(160, textCopyCompleted[sLanguageMode], 10.0f);\n#endif\n            print_generic_string_fade(COPYCOMPLETE_X, 190, LANGUAGE_ARRAY(textCopyCompleted));\n            break;\n        case COPY_MSG_SAVE_EXISTS:\n#ifdef VERSION_EU\n            centeredX = get_str_x_pos_from_center(160, textSavedDataExists[sLanguageMode], 10.0f);\n#endif\n            print_generic_string_fade(SAVE_EXISTS_X1, 190, LANGUAGE_ARRAY(textSavedDataExists));\n            break;\n    }\n}\n\n/**\n * Updates messageIDs of the copy menu depending of the copy phase value defined.\n */\nvoid copy_menu_update_message(void) {\n    switch (sMainMenuButtons[MENU_BUTTON_COPY]->oMenuButtonActionPhase) {\n        case COPY_PHASE_MAIN:\n            if (sMainMenuTimer == FADEOUT_TIMER) {\n                sFadeOutText = TRUE;\n            }\n            if (update_text_fade_out() == TRUE) {\n                if (sStatusMessageID == COPY_MSG_MAIN_TEXT) {\n                    sStatusMessageID = COPY_MSG_NOSAVE_EXISTS;\n                } else {\n                    sStatusMessageID = COPY_MSG_MAIN_TEXT;\n                }\n            }\n            break;\n        case COPY_PHASE_COPY_WHERE:\n            if (sMainMenuTimer == FADEOUT_TIMER\n                && sStatusMessageID == COPY_MSG_SAVE_EXISTS) {\n                sFadeOutText = TRUE;\n            }\n            if (update_text_fade_out() == TRUE) {\n                if (sStatusMessageID != COPY_MSG_COPY_WHERE) {\n                    sStatusMessageID = COPY_MSG_COPY_WHERE;\n                } else {\n                    sStatusMessageID = COPY_MSG_SAVE_EXISTS;\n                }\n            }\n            break;\n        case COPY_PHASE_COPY_COMPLETE:\n            if (sMainMenuTimer == FADEOUT_TIMER) {\n                sFadeOutText = TRUE;\n            }\n            if (update_text_fade_out() == TRUE) {\n                if (sStatusMessageID != COPY_MSG_COPY_COMPLETE) {\n                    sStatusMessageID = COPY_MSG_COPY_COMPLETE;\n                } else {\n                    sStatusMessageID = COPY_MSG_MAIN_TEXT;\n                }\n            }\n            break;\n    }\n}\n\n#if defined(VERSION_JP)\n    #define VIEWSCORE_X1 133\n    #define ERASEFILE_X2 220\n    #define COPY_FILE_Y1 62\n    #define COPY_FILE_Y2 105\n#elif defined(VERSION_US)\n    #define VIEWSCORE_X1 128\n    #define ERASEFILE_X2 230\n    #define COPY_FILE_Y1 62\n    #define COPY_FILE_Y2 105\n#elif defined(VERSION_EU)\n    #define VIEWSCORE_X1 centeredX\n    #define ERASEFILE_X2 centeredX\n#elif defined(VERSION_SH)\n    #define VIEWSCORE_X1 133\n    #define ERASEFILE_X2 230\n    #define COPY_FILE_Y1 62\n    #define COPY_FILE_Y2 105\n#elif defined(VERSION_CN)\n    #define VIEWSCORE_X1 128\n    #define ERASEFILE_X2 230\n    #define COPY_FILE_Y1 164\n    #define COPY_FILE_Y2 121\n#endif\n\n/**\n * Prints copy menu strings that shows on the blue background menu screen.\n */\nvoid print_copy_menu_strings(void) {\n#ifdef VERSION_EU\n    s16 centeredX;\n#endif\n\n    // Update and print the message at the top of the menu.\n    copy_menu_update_message();\n    // Print messageID called inside a copy_menu_update_message case\n    copy_menu_display_message(sStatusMessageID);\n#ifndef VERSION_EU\n    // Print file star counts\n    gSPDisplayList(gDisplayListHead++, dl_rgba16_text_begin);\n    gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha);\n    print_save_file_star_count(SAVE_FILE_A, 90, 76);\n    print_save_file_star_count(SAVE_FILE_B, 211, 76);\n    print_save_file_star_count(SAVE_FILE_C, 90, 119);\n    print_save_file_star_count(SAVE_FILE_D, 211, 119);\n    gSPDisplayList(gDisplayListHead++, dl_rgba16_text_end);\n#endif\n    // Print menu names\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_begin);\n    gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha);\n#ifdef VERSION_EU\n    centeredX = get_str_x_pos_from_center(69, textReturn[sLanguageMode], 10.0f);\n#endif\n    print_generic_string(RETURN_X, 35, LANGUAGE_ARRAY(textReturn));\n#ifdef VERSION_EU\n    centeredX = get_str_x_pos_from_center(159, textViewScore[sLanguageMode], 10.0f);\n#endif\n    print_generic_string(VIEWSCORE_X1, 35, LANGUAGE_ARRAY(textViewScore));\n#ifdef VERSION_EU\n    centeredX = get_str_x_pos_from_center(249, textEraseFileButton[sLanguageMode], 10.0f);\n#endif\n    print_generic_string(ERASEFILE_X2, 35, LANGUAGE_ARRAY(textEraseFileButton));\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_end);\n\n    // Print file names\n#ifdef VERSION_EU\n    print_main_menu_strings();\n#else\n    gSPDisplayList(gDisplayListHead++, FILE_SELECT_TEXT_DL_BEGIN);\n    gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha);\n    FILE_SELECT_PRINT_STRING(89, COPY_FILE_Y1, textMarioA);\n    FILE_SELECT_PRINT_STRING(211, COPY_FILE_Y1, textMarioB);\n    FILE_SELECT_PRINT_STRING(89, COPY_FILE_Y2, textMarioC);\n    FILE_SELECT_PRINT_STRING(211, COPY_FILE_Y2, textMarioD);\n    gSPDisplayList(gDisplayListHead++, FILE_SELECT_TEXT_DL_END);\n#endif\n}\n\n#if defined(VERSION_JP) || defined(VERSION_SH)\n#ifdef VERSION_JP\n    #define CURSOR_X 160.0f\n#else\n    #define CURSOR_X (x + 70)\n#endif\n    #define MENU_ERASE_YES_MIN_X 145\n    #define MENU_ERASE_YES_MAX_X 164\n#elif defined(VERSION_CN)\n    #define CURSOR_X (x + 70)\n    #define MENU_ERASE_YES_MIN_X 144\n    #define MENU_ERASE_YES_MAX_X 173\n#else\n    #define CURSOR_X (x + 70)\n    #define MENU_ERASE_YES_MIN_X 140\n    #define MENU_ERASE_YES_MAX_X 169\n#endif\n\n#ifdef VERSION_CN\n    #define MENU_ERASE_YES_NO_MIN_Y 191\n    #define MENU_ERASE_YES_NO_MAX_Y 210\n    #define MENU_ERASE_NO_MIN_X 189\n    #define MENU_ERASE_NO_MAX_X 218\n    #define MENU_ERASE_YES_X_OFFSET 60\n#elif defined(VERSION_SH)\n    #define MENU_ERASE_YES_NO_MIN_Y 191\n    #define MENU_ERASE_YES_NO_MAX_Y 210\n    #define MENU_ERASE_NO_MIN_X 194\n    #define MENU_ERASE_NO_MAX_X 213\n    #define MENU_ERASE_YES_X_OFFSET 56\n#else\n    #define MENU_ERASE_YES_NO_MIN_Y 191\n    #define MENU_ERASE_YES_NO_MAX_Y 210\n    #define MENU_ERASE_NO_MIN_X 189\n    #define MENU_ERASE_NO_MAX_X 218\n    #define MENU_ERASE_YES_X_OFFSET 56\n#endif\n\n/**\n * Prints the \"YES NO\" prompt and checks if one of the prompts are hovered to do it's functions.\n */\nvoid print_erase_menu_prompt(s16 x, s16 y) {\n    s16 colorTransTimer = gGlobalTimer * (1 << 12);\n\n    s16 cursorX = sCursorPos[0] + CURSOR_X;\n    s16 cursorY = sCursorPos[1] + 120.0f;\n\n    // TODO: Merge IDO/GCC\n    if (cursorX < MENU_ERASE_YES_MAX_X && cursorX >= MENU_ERASE_YES_MIN_X &&\n#ifdef VERSION_CN\n        (u16) (cursorY - MENU_ERASE_YES_NO_MIN_Y) < MENU_ERASE_YES_NO_MAX_Y - MENU_ERASE_YES_NO_MIN_Y\n#else\n        cursorY < MENU_ERASE_YES_NO_MAX_Y && cursorY >= MENU_ERASE_YES_NO_MIN_Y\n#endif\n    ) {\n        // Fade \"YES\" string color but keep \"NO\" gray\n        sYesNoColor[0] = sins(colorTransTimer) * 50.0f + 205.0f;\n        sYesNoColor[1] = 150;\n        sEraseYesNoHoverState = MENU_ERASE_HOVER_YES;\n    } else if (cursorX < MENU_ERASE_NO_MAX_X && cursorX >= MENU_ERASE_NO_MIN_X &&\n#ifdef VERSION_CN\n        (u16) (cursorY - MENU_ERASE_YES_NO_MIN_Y) < MENU_ERASE_YES_NO_MAX_Y - MENU_ERASE_YES_NO_MIN_Y\n#else\n        cursorY < MENU_ERASE_YES_NO_MAX_Y && cursorY >= MENU_ERASE_YES_NO_MIN_Y\n#endif\n    ) {\n        // Fade \"NO\" string color but keep \"YES\" gray\n        sYesNoColor[0] = 150;\n        sYesNoColor[1] = sins(colorTransTimer) * 50.0f + 205.0f;\n        sEraseYesNoHoverState = MENU_ERASE_HOVER_NO;\n    } else {\n        // Don't fade both strings and keep them gray\n        sYesNoColor[0] = 150;\n        sYesNoColor[1] = 150;\n        sEraseYesNoHoverState = MENU_ERASE_HOVER_NONE;\n    }\n    // If the cursor is clicked...\n    if (sCursorClickingTimer == 2) {\n        // ..and is hovering \"YES\", delete file\n        if (sEraseYesNoHoverState == MENU_ERASE_HOVER_YES) {\n            play_sound(SOUND_MARIO_WAAAOOOW, gGlobalSoundSource);\n#if ENABLE_RUMBLE\n            queue_rumble_data(5, 80);\n#endif\n            sMainMenuButtons[MENU_BUTTON_ERASE]->oMenuButtonActionPhase = ERASE_PHASE_MARIO_ERASED;\n            sFadeOutText = TRUE;\n            sMainMenuTimer = 0;\n            save_file_erase(sSelectedFileIndex);\n            sMainMenuButtons[MENU_BUTTON_ERASE_MIN + sSelectedFileIndex]->header.gfx.sharedChild =\n                gLoadedGraphNodes[MODEL_MAIN_MENU_MARIO_NEW_BUTTON_FADE];\n            sMainMenuButtons[sSelectedFileIndex]->header.gfx.sharedChild =\n                gLoadedGraphNodes[MODEL_MAIN_MENU_MARIO_NEW_BUTTON_FADE];\n            sEraseYesNoHoverState = MENU_ERASE_HOVER_NONE;\n            // ..and is hovering \"NO\", return back to main phase\n        } else if (sEraseYesNoHoverState == MENU_ERASE_HOVER_NO) {\n            play_sound(SOUND_MENU_CLICK_FILE_SELECT, gGlobalSoundSource);\n#if ENABLE_RUMBLE\n            queue_rumble_data(5, 80);\n#endif\n            sMainMenuButtons[MENU_BUTTON_ERASE_MIN + sSelectedFileIndex]->oMenuButtonState =\n                MENU_BUTTON_STATE_ZOOM_OUT;\n            sMainMenuButtons[MENU_BUTTON_ERASE]->oMenuButtonActionPhase = ERASE_PHASE_MAIN;\n            sFadeOutText = TRUE;\n            sMainMenuTimer = 0;\n            sEraseYesNoHoverState = MENU_ERASE_HOVER_NONE;\n        }\n    }\n\n    // Print \"YES NO\" strings\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_begin);\n    gDPSetEnvColor(gDisplayListHead++, sYesNoColor[0], sYesNoColor[0], sYesNoColor[0], sTextBaseAlpha);\n    print_generic_string(x + MENU_ERASE_YES_X_OFFSET, y, LANGUAGE_ARRAY(textYes));\n    gDPSetEnvColor(gDisplayListHead++, sYesNoColor[1], sYesNoColor[1], sYesNoColor[1], sTextBaseAlpha);\n    print_generic_string(x + 98, y, LANGUAGE_ARRAY(textNo));\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_end);\n}\n\n// MARIO_ERASED_VAR is the value there the letter \"A\" is, it works like this:\n//   US and EU   ---    JP\n// M a r i o   A --- マ リ オ Ａ\n// 0 1 2 3 4 5 6 --- 0 1 2 3\n#if defined(VERSION_JP) || defined(VERSION_SH)\n#ifdef VERSION_JP\n    #define ERASE_FILE_X     96\n#else\n    #define ERASE_FILE_X     111\n#endif\n    #define ERASE_FILE_Y     35\n    #define NOSAVE_DATA_X3   90\n    #define MARIO_ERASED_VAR 3\n    #define MARIO_ERASED_X   90\n    #define SAVE_EXISTS_X2   90\n#elif defined(VERSION_US)\n    #define ERASE_FILE_X     98\n    #define ERASE_FILE_Y     35\n    #define NOSAVE_DATA_X3   100\n    #define MARIO_ERASED_VAR 6\n    #define MARIO_ERASED_X   100\n    #define SAVE_EXISTS_X2   100\n#elif defined(VERSION_EU)\n    #define ERASE_FILE_X     centeredX\n    #define ERASE_FILE_Y     35\n    #define NOSAVE_DATA_X3   centeredX\n    #define MARIO_ERASED_VAR 6\n    #define MARIO_ERASED_X   centeredX\n    #define SAVE_EXISTS_X2   centeredX\n#elif defined(VERSION_CN)\n    #define ERASE_FILE_X     106\n    #define ERASE_FILE_Y     25\n    #define NOSAVE_DATA_X3   100\n    #define MARIO_ERASED_VAR 15\n    #define MARIO_ERASED_X   100\n    #define SAVE_EXISTS_X2   100\n#endif\n\n/**\n * Defines IDs for the top message of the erase menu and displays it if the ID is called in messageID.\n */\nvoid erase_menu_display_message(s8 messageID) {\n#ifdef VERSION_EU\n    s16 centeredX;\n#endif\n\n#ifndef VERSION_EU\n    u8 textEraseFile[] = { TEXT_ERASE_FILE };\n    u8 textSure[] = { TEXT_SURE };\n    u8 textNoSavedDataExists[] = { TEXT_NO_SAVED_DATA_EXISTS };\n    u8 textMarioAJustErased[] = { TEXT_FILE_MARIO_A_JUST_ERASED };\n    u8 textSavedDataExists[] = { TEXT_SAVED_DATA_EXISTS };\n#endif\n\n    switch (messageID) {\n        case ERASE_MSG_MAIN_TEXT:\n#ifdef VERSION_EU\n            centeredX = get_str_x_pos_from_center_scale(160, textEraseFile[sLanguageMode], 12.0f);\n#endif\n            print_hud_lut_string_fade(HUD_LUT_DIFF, ERASE_FILE_X, ERASE_FILE_Y, LANGUAGE_ARRAY(textEraseFile));\n            break;\n        case ERASE_MSG_PROMPT:\n            print_generic_string_fade(90, 190, LANGUAGE_ARRAY(textSure));\n            print_erase_menu_prompt(90, 190); // YES NO, has functions for it too\n            break;\n        case ERASE_MSG_NOSAVE_EXISTS:\n#ifdef VERSION_EU\n            centeredX = get_str_x_pos_from_center(160, textNoSavedDataExists[sLanguageMode], 10.0f);\n#endif\n            print_generic_string_fade(NOSAVE_DATA_X3, 190, LANGUAGE_ARRAY(textNoSavedDataExists));\n            break;\n        case ERASE_MSG_MARIO_ERASED:\n            LANGUAGE_ARRAY(textMarioAJustErased)[MARIO_ERASED_VAR] = sSelectedFileIndex + 10;\n#ifdef VERSION_EU\n            centeredX = get_str_x_pos_from_center(160, textMarioAJustErased[sLanguageMode], 10.0f);\n#endif\n            print_generic_string_fade(MARIO_ERASED_X, 190, LANGUAGE_ARRAY(textMarioAJustErased));\n            break;\n        case ERASE_MSG_SAVE_EXISTS: // unused\n#ifdef VERSION_EU\n            centeredX = get_str_x_pos_from_center(160, textSavedDataExists[sLanguageMode], 10.0f);\n#endif\n            print_generic_string_fade(SAVE_EXISTS_X2, 190, LANGUAGE_ARRAY(textSavedDataExists));\n            break;\n    }\n}\n\n/**\n * Updates messageIDs of the erase menu depending of the erase phase value defined.\n */\nvoid erase_menu_update_message(void) {\n    switch (sMainMenuButtons[MENU_BUTTON_ERASE]->oMenuButtonActionPhase) {\n        case ERASE_PHASE_MAIN:\n            if (sMainMenuTimer == FADEOUT_TIMER\n                && sStatusMessageID == ERASE_MSG_NOSAVE_EXISTS) {\n                sFadeOutText = TRUE;\n            }\n            if (update_text_fade_out() == TRUE) {\n                if (sStatusMessageID == ERASE_MSG_MAIN_TEXT) {\n                    sStatusMessageID = ERASE_MSG_NOSAVE_EXISTS;\n                } else {\n                    sStatusMessageID = ERASE_MSG_MAIN_TEXT;\n                }\n            }\n            break;\n        case ERASE_PHASE_PROMPT:\n            if (update_text_fade_out() == TRUE) {\n                if (sStatusMessageID != ERASE_MSG_PROMPT) {\n                    sStatusMessageID = ERASE_MSG_PROMPT;\n                }\n                sCursorPos[0] = 43.0f;\n                sCursorPos[1] = 80.0f;\n            }\n            break;\n        case ERASE_PHASE_MARIO_ERASED:\n            if (sMainMenuTimer == FADEOUT_TIMER) {\n                sFadeOutText = TRUE;\n            }\n            if (update_text_fade_out() == TRUE) {\n                if (sStatusMessageID != ERASE_MSG_MARIO_ERASED) {\n                    sStatusMessageID = ERASE_MSG_MARIO_ERASED;\n                } else {\n                    sStatusMessageID = ERASE_MSG_MAIN_TEXT;\n                }\n            }\n            break;\n    }\n}\n\n#if defined(VERSION_JP) || defined(VERSION_SH)\n    #define VIEWSCORE_X2 133\n    #define COPYFILE_X2 223\n    #define ERASE_FILE_Y1 62\n    #define ERASE_FILE_Y2 105\n#elif defined(VERSION_CN)\n    #define VIEWSCORE_X2 129\n    #define COPYFILE_X2 228\n    #define ERASE_FILE_Y1 164\n    #define ERASE_FILE_Y2 121\n#else\n    #define VIEWSCORE_X2 127\n    #define COPYFILE_X2 233\n    #define ERASE_FILE_Y1 62\n    #define ERASE_FILE_Y2 105\n#endif\n\n/**\n * Prints erase menu strings that shows on the red background menu screen.\n */\nvoid print_erase_menu_strings(void) {\n#ifdef VERSION_EU\n    s16 centeredX;\n#endif\n\n    // Update and print the message at the top of the menu.\n    erase_menu_update_message();\n\n    // Print messageID called inside a erase_menu_update_message case\n    erase_menu_display_message(sStatusMessageID);\n\n#ifndef VERSION_EU\n    // Print file star counts\n    gSPDisplayList(gDisplayListHead++, dl_rgba16_text_begin);\n    gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha);\n    print_save_file_star_count(SAVE_FILE_A, 90, 76);\n    print_save_file_star_count(SAVE_FILE_B, 211, 76);\n    print_save_file_star_count(SAVE_FILE_C, 90, 119);\n    print_save_file_star_count(SAVE_FILE_D, 211, 119);\n    gSPDisplayList(gDisplayListHead++, dl_rgba16_text_end);\n#endif\n\n    // Print menu names\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_begin);\n    gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha);\n\n#ifdef VERSION_EU\n    centeredX = get_str_x_pos_from_center(69, textReturn[sLanguageMode], 10.0f);\n    print_generic_string(centeredX, 35, textReturn[sLanguageMode]);\n    centeredX = get_str_x_pos_from_center(159, textViewScore[sLanguageMode], 10.0f);\n    print_generic_string(centeredX, 35, textViewScore[sLanguageMode]);\n    centeredX = get_str_x_pos_from_center(249, textCopyFileButton[sLanguageMode], 10.0f);\n    print_generic_string(centeredX, 35, textCopyFileButton[sLanguageMode]);\n#else\n    print_generic_string(RETURN_X_OLD, 35, textReturn);\n    print_generic_string(VIEWSCORE_X2, 35, textViewScore);\n    print_generic_string(COPYFILE_X2, 35, textCopyFileButton);\n#endif\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_end);\n\n    // Print file names\n#ifdef VERSION_EU\n    print_main_menu_strings();\n#else\n    gSPDisplayList(gDisplayListHead++, FILE_SELECT_TEXT_DL_BEGIN);\n    gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha);\n    FILE_SELECT_PRINT_STRING(89, ERASE_FILE_Y1, textMarioA);\n    FILE_SELECT_PRINT_STRING(211, ERASE_FILE_Y1, textMarioB);\n    FILE_SELECT_PRINT_STRING(89, ERASE_FILE_Y2, textMarioC);\n    FILE_SELECT_PRINT_STRING(211, ERASE_FILE_Y2, textMarioD);\n    gSPDisplayList(gDisplayListHead++, FILE_SELECT_TEXT_DL_END);\n#endif\n}\n\n#if defined(VERSION_JP) || defined(VERSION_SH)\n    #define SOUND_HUD_X 96\n    #define SOUND_HUD_Y 35\n#elif defined(VERSION_US)\n    #define SOUND_HUD_X 88\n    #define SOUND_HUD_Y 35\n#elif defined(VERSION_CN)\n    #define SOUND_HUD_X 106\n    #define SOUND_HUD_Y 55\n#endif\n\n/**\n * Prints sound mode menu strings that shows on the purple background menu screen.\n *\n * In EU, this function acts like \"print_option_mode_menu_strings\" because of languages.\n */\nvoid print_sound_mode_menu_strings(void) {\n    s32 mode;\n\n#if defined(VERSION_US) || defined(VERSION_SH) || defined(VERSION_CN)\n    s16 textX;\n#elif defined(VERSION_EU)\n    s32 textX;\n#endif\n\n#ifndef VERSION_EU\n    u8 textSoundSelect[] = { TEXT_SOUND_SELECT };\n#endif\n\n    // Print \"SOUND SELECT\" text\n    gSPDisplayList(gDisplayListHead++, dl_rgba16_text_begin);\n    gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha);\n\n#ifdef VERSION_EU\n    print_hud_lut_string(HUD_LUT_DIFF, 47, 32, textSoundSelect[sLanguageMode]);\n    print_hud_lut_string(HUD_LUT_DIFF, 47, 101, textLanguageSelect[sLanguageMode]);\n#else\n    print_hud_lut_string(HUD_LUT_DIFF, SOUND_HUD_X, SOUND_HUD_Y, textSoundSelect);\n#endif\n\n    gSPDisplayList(gDisplayListHead++, dl_rgba16_text_end);\n\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_begin);\n\n#ifdef VERSION_EU // In EU their X position get increased each string\n    // Print sound mode names\n    for (mode = 0, textX = 90; mode < 3; textX += 70, mode++) {\n        if (mode == sSoundMode) {\n            gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha);\n        } else {\n            gDPSetEnvColor(gDisplayListHead++, 0, 0, 0, sTextBaseAlpha);\n        }\n        print_generic_string(\n            get_str_x_pos_from_center(textX, textSoundModes[sLanguageMode * 3 + mode], 10.0f),\n            141, textSoundModes[sLanguageMode * 3 + mode]);\n    }\n\n    // In EU, print language mode names\n    for (mode = 0, textX = 90; mode < 3; textX += 70, mode++) {\n        if (mode == sLanguageMode) {\n            gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha);\n        } else {\n            gDPSetEnvColor(gDisplayListHead++, 0, 0, 0, sTextBaseAlpha);\n        }\n        print_generic_string(\n            get_str_x_pos_from_center(textX, textLanguage[mode], 10.0f),\n            72, textLanguage[mode]);\n    }\n#else\n    // Print sound mode names\n    for (mode = 0; mode < 3; mode++) {\n        if (sSoundMode == mode) {\n            gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha);\n        } else {\n            gDPSetEnvColor(gDisplayListHead++, 0, 0, 0, sTextBaseAlpha);\n        }\n        #ifndef VERSION_JP\n            // Mode names are centered correctly on US and Shindou\n            textX = get_str_x_pos_from_center(mode * 74 + 87, textSoundModes[mode], 10.0f);\n            print_generic_string(textX, 87, textSoundModes[mode]);\n        #else\n            print_generic_string(mode * 74 + 67, 87, textSoundModes[mode]);\n        #endif\n    }\n#endif\n\n#ifdef VERSION_EU\n    gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha);\n    print_generic_string(182, 29, textReturn[sLanguageMode]);\n#endif\n\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_end);\n}\n\n#ifndef VERSION_CN\nu8 textStarX[] = { TEXT_STAR_X };\n#endif\n\n/**\n * Prints castle secret stars collected in a score menu save file.\n */\nvoid print_score_file_castle_secret_stars(s8 fileIndex, s16 x, s16 y) {\n#ifdef VERSION_CN\n    u8 secretStarsText[36];\n    u8 textStarX[] = { TEXT_STAR_X };\n#else\n    u8 secretStarsText[20];\n#endif\n\n    // Print \"[star] x\"\n    FILE_SELECT_PRINT_STRING(x, y, textStarX);\n\n    // Print number of castle secret stars\n    INT_TO_STR_DIFF(save_file_get_total_star_count(fileIndex, COURSE_BONUS_STAGES - 1, COURSE_MAX - 1),\n               secretStarsText);\n\n#ifdef VERSION_EU\n    FILE_SELECT_PRINT_STRING(x + 20, y, secretStarsText);\n#else\n    FILE_SELECT_PRINT_STRING(x + 16, y, secretStarsText);\n#endif\n}\n\n#if defined(VERSION_JP) || defined(VERSION_SH)\n    #define HISCORE_COIN_ICON_X  0\n    #define HISCORE_COIN_TEXT_X  16\n    #define HISCORE_COIN_NAMES_X 45\n#else\n    #define HISCORE_COIN_ICON_X  18\n    #define HISCORE_COIN_TEXT_X  34\n    #define HISCORE_COIN_NAMES_X 60\n#endif\n\n/**\n * Prints course coins collected in a score menu save file.\n */\nvoid print_score_file_course_coin_score(s8 fileIndex, s16 courseIndex, s16 x, s16 y) {\n#ifdef VERSION_CN\n    u8 coinScoreText[36];\n#else\n    u8 coinScoreText[20];\n#endif\n\n    u8 stars = save_file_get_star_flags(fileIndex, courseIndex);\n    u8 textCoinX[] = { TEXT_COIN_X };\n    u8 textStar[] = { TEXT_STAR };\n\n#if defined(VERSION_JP) || defined(VERSION_SH)\n    #define LENGTH 5\n#elif defined(VERSION_CN)\n    #define LENGTH 16\n#else\n    #define LENGTH 8\n#endif\n    u8 fileNames[][LENGTH] = {\n        { TEXT_4DASHES }, // huh?\n        { TEXT_SCORE_MARIO_A }, { TEXT_SCORE_MARIO_B }, { TEXT_SCORE_MARIO_C }, { TEXT_SCORE_MARIO_D },\n    };\n#undef LENGTH\n\n    // MYSCORE\n    if (sScoreFileCoinScoreMode == 0) {\n        // Print \"[coin] x\"\n        FILE_SELECT_PRINT_STRING(x + 25, y, textCoinX);\n\n        // Print coin score\n        INT_TO_STR_DIFF(save_file_get_course_coin_score(fileIndex, courseIndex), coinScoreText);\n        FILE_SELECT_PRINT_STRING(x + 41, y, coinScoreText);\n\n        // If collected, print 100 coin star\n        if (stars & (1 << 6)) {\n            FILE_SELECT_PRINT_STRING(x + 70, y, textStar);\n        }\n    }\n    // HISCORE\n    else {\n        // Print \"[coin] x\"\n        FILE_SELECT_PRINT_STRING(x + HISCORE_COIN_ICON_X, y, textCoinX);\n\n        // Print coin highscore\n        INT_TO_STR_DIFF((u16) save_file_get_max_coin_score(courseIndex) & 0xFFFF, coinScoreText);\n        FILE_SELECT_PRINT_STRING(x + HISCORE_COIN_TEXT_X, y, coinScoreText);\n\n        // Print coin highscore file\n        FILE_SELECT_PRINT_STRING(x + HISCORE_COIN_NAMES_X, y,\n                         fileNames[(save_file_get_max_coin_score(courseIndex) >> 16) & 0xFFFF]);\n    }\n}\n\n/**\n * Prints stars collected in a score menu save file.\n */\nvoid print_score_file_star_score(s8 fileIndex, s16 courseIndex, s16 x, s16 y) {\n    s16 i = 0;\n\n#ifdef VERSION_CN\n    u8 starScoreText[36];\n#else\n    u8 starScoreText[19];\n#endif\n\n    u8 stars = save_file_get_star_flags(fileIndex, courseIndex);\n    s8 starCount = save_file_get_course_star_count(fileIndex, courseIndex);\n    // Don't count 100 coin star\n    if (stars & (1 << 6)) {\n        starCount--;\n    }\n    // Add 1 star character for every star collected\n    for (i = 0; i < starCount; i++) {\n#ifdef VERSION_CN\n        starScoreText[i * 2] = 0x00;\n        starScoreText[i * 2 + 1] = DIALOG_CHAR_STAR_FILLED;\n#else\n        starScoreText[i] = DIALOG_CHAR_STAR_FILLED;\n#endif\n    }\n\n    // Terminating byte\n#ifdef VERSION_CN\n    starScoreText[i * 2] = DIALOG_CHAR_TERMINATOR;\n    starScoreText[i * 2 + 1] = DIALOG_CHAR_TERMINATOR;\n#else\n    starScoreText[i] = DIALOG_CHAR_TERMINATOR;\n#endif\n\n    FILE_SELECT_PRINT_STRING(x, y, starScoreText);\n}\n\n#if defined(VERSION_JP) || defined(VERSION_SH)\n    #define MARIO_X 28\n    #define MARIO_Y 15\n    #define FILE_LETTER_X 86\n#ifdef VERSION_JP\n    #define LEVEL_NUM_PAD 0\n    #define SECRET_STARS_PAD 0\n#else\n    #define LEVEL_NUM_PAD 5\n    #define SECRET_STARS_PAD 10\n#endif\n    #define LEVEL_NAME_X 23\n    #define STAR_SCORE_X 152\n    #define MYSCORE_X 237\n    #define HISCORE_X 237\n    #define MYSCORE_Y 24\n    #define HISCORE_Y 24\n#elif defined(VERSION_CN)\n    #define MARIO_X 25\n    #define MARIO_Y 9\n    #define FILE_LETTER_X 95\n    #define SECRET_STARS_PAD 6\n    #define LEVEL_NAME_X 26\n    #define STAR_SCORE_X 171\n    #define MYSCORE_X 238\n    #define HISCORE_X 231\n    #define MYSCORE_Y 200\n    #define HISCORE_Y 200\n#else\n    #define MARIO_X 25\n    #define MARIO_Y 15\n    #define FILE_LETTER_X 95\n    #define LEVEL_NUM_PAD 3\n    #define SECRET_STARS_PAD 6\n    #define LEVEL_NAME_X 23\n    #define STAR_SCORE_X 171\n#ifdef VERSION_EU\n    #define MYSCORE_X get_str_x_pos_from_center(257, textMyScore[sLanguageMode], 10.0f)\n    #define HISCORE_X get_str_x_pos_from_center(257, textHiScore[sLanguageMode], 10.0f)\n#else\n    #define MYSCORE_X 238\n    #define HISCORE_X 231\n#endif\n    #define MYSCORE_Y 24\n    #define HISCORE_Y 24\n#endif\n\n#ifdef VERSION_EU\n#include \"game/segment7.h\"\n#endif\n\n#define PRINT_COURSE_NAME_CN(courseIndex, shift) \\\n    FILE_SELECT_PRINT_STRING(LEVEL_NAME_X, 14 + 21 * (9 - courseIndex) + shift, \\\n                             segmented_to_virtual(levelNameTable[courseIndex - 1]));\n\n#define PRINT_COURSE_SCORES_CN(courseIndex, shift) \\\n    print_score_file_star_score(fileIndex, courseIndex - 1, STAR_SCORE_X, 14 + 21 * (9 - courseIndex) + shift); \\\n    print_score_file_course_coin_score(fileIndex, courseIndex - 1, 213, 14 + 21 * (9 - courseIndex) + shift);\n\n#define PRINT_COURSE_NAME_AND_SCORES(courseIndex, pad) \\\n    FILE_SELECT_PRINT_STRING(LEVEL_NAME_X + (pad * LEVEL_NUM_PAD), 23 + 12 * courseIndex, \\\n                             segmented_to_virtual(levelNameTable[courseIndex - 1])); \\\n    print_score_file_star_score(fileIndex, courseIndex - 1, STAR_SCORE_X, 23 + 12 * courseIndex); \\\n    print_score_file_course_coin_score(fileIndex, courseIndex - 1, 213, 23 + 12 * courseIndex);\n\n/**\n * Prints save file score strings that shows when a save file is chosen inside the score menu.\n */\nvoid print_save_file_scores(s8 fileIndex) {\n#ifndef VERSION_EU\n\n    u8 textMario[] = { TEXT_MARIO };\n#ifdef VERSION_JP\n    u8 textFileLetter[] = { TEXT_ZERO };\n    void **levelNameTable = segmented_to_virtual(seg2_course_name_table);\n#endif\n    u8 textHiScore[] = { TEXT_HI_SCORE };\n    u8 textMyScore[] = { TEXT_MY_SCORE };\n#ifdef VERSION_CN\n    u8 textArrowL[] = { TEXT_ARROW_L };\n    u8 textRArrow[] = { TEXT_R_ARROW };\n#endif\n#ifndef VERSION_JP\n    u8 textFileLetter[] = { TEXT_ZERO };\n    void **levelNameTable = segmented_to_virtual(seg2_course_name_table);\n#endif\n\n#else\n    u8 textFileLetter[] = { TEXT_ZERO };\n    void **levelNameTable;\n\n    switch (sLanguageMode) {\n        case LANGUAGE_ENGLISH:\n            levelNameTable = segmented_to_virtual(eu_course_strings_en_table);\n            break;\n        case LANGUAGE_FRENCH:\n            levelNameTable = segmented_to_virtual(eu_course_strings_fr_table);\n            break;\n        case LANGUAGE_GERMAN:\n            levelNameTable = segmented_to_virtual(eu_course_strings_de_table);\n            break;\n    }\n#endif\n\n    textFileLetter[0] = fileIndex + ASCII_TO_DIALOG('A'); // get letter of file selected\n\n    // Print file name at top\n    gSPDisplayList(gDisplayListHead++, dl_rgba16_text_begin);\n    gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha);\n    print_hud_lut_string(HUD_LUT_DIFF, MARIO_X, MARIO_Y, textMario);\n    print_hud_lut_string(HUD_LUT_GLOBAL, FILE_LETTER_X, 15, textFileLetter);\n\n    // Print save file star count at top\n    print_save_file_star_count(fileIndex, 124, 15);\n    gSPDisplayList(gDisplayListHead++, dl_rgba16_text_end);\n\n    // Print course scores\n    gSPDisplayList(gDisplayListHead++, FILE_SELECT_TEXT_DL_BEGIN);\n    gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, sTextBaseAlpha);\n\n    //! Huge print list, for loops exist for a reason!\n#ifdef VERSION_CN\n    if (sScorePage == 0) {\n        PRINT_COURSE_NAME_CN(COURSE_SSL, 0)\n        PRINT_COURSE_NAME_CN(COURSE_LLL, 0)\n        PRINT_COURSE_NAME_CN(COURSE_HMC, 0)\n        PRINT_COURSE_NAME_CN(COURSE_BBH, 0)\n        PRINT_COURSE_NAME_CN(COURSE_CCM, 0)\n        PRINT_COURSE_NAME_CN(COURSE_JRB, 0)\n        PRINT_COURSE_NAME_CN(COURSE_WF, 0)\n        PRINT_COURSE_NAME_CN(COURSE_BOB, 0)\n\n        PRINT_COURSE_SCORES_CN(COURSE_SSL, 0)\n        PRINT_COURSE_SCORES_CN(COURSE_LLL, 0)\n        PRINT_COURSE_SCORES_CN(COURSE_HMC, 0)\n        PRINT_COURSE_SCORES_CN(COURSE_BBH, 0)\n        PRINT_COURSE_SCORES_CN(COURSE_CCM, 0)\n        PRINT_COURSE_SCORES_CN(COURSE_JRB, 0)\n        PRINT_COURSE_SCORES_CN(COURSE_WF, 0)\n        PRINT_COURSE_SCORES_CN(COURSE_BOB, 0)\n    } else if (sScorePage == 1) {\n        // Print castle secret stars text\n        print_generic_string(LEVEL_NAME_X, 23 + 12 * 1,\n                                  segmented_to_virtual(levelNameTable[25]));\n\n        PRINT_COURSE_NAME_CN(COURSE_RR, 168)\n        PRINT_COURSE_NAME_CN(COURSE_TTC, 168)\n        PRINT_COURSE_NAME_CN(COURSE_THI, 168)\n        PRINT_COURSE_NAME_CN(COURSE_TTM, 168)\n        PRINT_COURSE_NAME_CN(COURSE_WDW, 168)\n        PRINT_COURSE_NAME_CN(COURSE_SL, 168)\n        PRINT_COURSE_NAME_CN(COURSE_DDD, 168)\n\n        // Print castle secret stars score\n        print_score_file_castle_secret_stars(fileIndex, STAR_SCORE_X, 23 + 12 * 1);\n\n        PRINT_COURSE_SCORES_CN(COURSE_RR, 168)\n        PRINT_COURSE_SCORES_CN(COURSE_TTC, 168)\n        PRINT_COURSE_SCORES_CN(COURSE_THI, 168)\n        PRINT_COURSE_SCORES_CN(COURSE_TTM, 168)\n        PRINT_COURSE_SCORES_CN(COURSE_WDW, 168)\n        PRINT_COURSE_SCORES_CN(COURSE_SL, 168)\n        PRINT_COURSE_SCORES_CN(COURSE_DDD, 168)\n    }\n#else\n    // Course values are indexed, from Bob-omb Battlefield to Rainbow Ride\n    PRINT_COURSE_NAME_AND_SCORES(COURSE_BOB, 1)\n    PRINT_COURSE_NAME_AND_SCORES(COURSE_WF,  1)\n    PRINT_COURSE_NAME_AND_SCORES(COURSE_JRB, 1)\n    PRINT_COURSE_NAME_AND_SCORES(COURSE_CCM, 1)\n    PRINT_COURSE_NAME_AND_SCORES(COURSE_BBH, 1)\n    PRINT_COURSE_NAME_AND_SCORES(COURSE_HMC, 1)\n    PRINT_COURSE_NAME_AND_SCORES(COURSE_LLL, 1)\n    PRINT_COURSE_NAME_AND_SCORES(COURSE_SSL, 1)\n    PRINT_COURSE_NAME_AND_SCORES(COURSE_DDD, 1)\n    PRINT_COURSE_NAME_AND_SCORES(COURSE_SL,  0)\n    PRINT_COURSE_NAME_AND_SCORES(COURSE_WDW, 0)\n    PRINT_COURSE_NAME_AND_SCORES(COURSE_TTM, 0)\n    PRINT_COURSE_NAME_AND_SCORES(COURSE_THI, 0)\n    PRINT_COURSE_NAME_AND_SCORES(COURSE_TTC, 0)\n    PRINT_COURSE_NAME_AND_SCORES(COURSE_RR,  0)\n\n    // Print castle secret stars text\n    FILE_SELECT_PRINT_STRING(LEVEL_NAME_X + SECRET_STARS_PAD, 23 + 12 * 16,\n                              segmented_to_virtual(levelNameTable[25]));\n    // Print castle secret stars score\n    print_score_file_castle_secret_stars(fileIndex, STAR_SCORE_X, 23 + 12 * 16);\n#endif\n\n    // Print current coin score mode\n    if (sScoreFileCoinScoreMode == 0) {\n        FILE_SELECT_PRINT_STRING(MYSCORE_X, MYSCORE_Y, LANGUAGE_ARRAY(textMyScore));\n    } else {\n        FILE_SELECT_PRINT_STRING(HISCORE_X, HISCORE_Y, LANGUAGE_ARRAY(textHiScore));\n    }\n\n#ifdef VERSION_CN\n    // Print L and R button indicators\n    FILE_SELECT_PRINT_STRING(30, 17, textArrowL);\n    FILE_SELECT_PRINT_STRING(270, 17, textRArrow);\n#endif\n\n    gSPDisplayList(gDisplayListHead++, FILE_SELECT_TEXT_DL_END);\n}\n\n#undef PRINT_COURSE_NAME_CN\n#undef PRINT_COURSE_SCORES_CN\n#undef PRINT_COURSE_NAME_AND_SCORES\n\n/**\n * Prints file select strings depending on the menu selected.\n * Also checks if all saves exists and defines text and main menu timers.\n */\nstatic void print_file_select_strings(void) {\n#ifndef VERSION_CN\n    UNUSED u8 filler[8];\n#endif\n\n    create_dl_ortho_matrix();\n    switch (sSelectedButtonID) {\n        case MENU_BUTTON_NONE:\n#ifdef VERSION_EU\n            // Ultimately calls print_main_menu_strings, but prints main language strings first.\n            print_main_lang_strings();\n#else\n            print_main_menu_strings();\n#endif\n            break;\n        case MENU_BUTTON_SCORE:\n            print_score_menu_strings();\n            sScoreFileCoinScoreMode = 0;\n            break;\n        case MENU_BUTTON_COPY:\n            print_copy_menu_strings();\n            break;\n        case MENU_BUTTON_ERASE:\n            print_erase_menu_strings();\n            break;\n        case MENU_BUTTON_SCORE_FILE_A:\n            print_save_file_scores(SAVE_FILE_A);\n            break;\n        case MENU_BUTTON_SCORE_FILE_B:\n            print_save_file_scores(SAVE_FILE_B);\n            break;\n        case MENU_BUTTON_SCORE_FILE_C:\n            print_save_file_scores(SAVE_FILE_C);\n            break;\n        case MENU_BUTTON_SCORE_FILE_D:\n            print_save_file_scores(SAVE_FILE_D);\n            break;\n        case MENU_BUTTON_SOUND_MODE:\n            print_sound_mode_menu_strings();\n            break;\n    }\n    // If all 4 save file exists, define true to sAllFilesExist to prevent more copies in copy menu\n    if (save_file_exists(SAVE_FILE_A) == TRUE && save_file_exists(SAVE_FILE_B) == TRUE &&\n        save_file_exists(SAVE_FILE_C) == TRUE && save_file_exists(SAVE_FILE_D) == TRUE) {\n        sAllFilesExist = TRUE;\n    } else {\n        sAllFilesExist = FALSE;\n    }\n    // Timers for menu alpha text and the main menu itself\n    if (sTextBaseAlpha < 250) {\n        sTextBaseAlpha += 10;\n    }\n    if (sMainMenuTimer < 1000) {\n        sMainMenuTimer++;\n    }\n}\n\n/**\n * Geo function that prints file select strings and the cursor.\n */\nGfx *geo_file_select_strings_and_menu_cursor(s32 callContext, UNUSED struct GraphNode *node, UNUSED Mat4 mtx) {\n    if (callContext == GEO_CONTEXT_RENDER) {\n        print_file_select_strings();\n        print_menu_cursor();\n    }\n    return NULL;\n}\n\n/**\n * Initiates file select values after Mario Screen.\n * Relocates cursor position of the last save if the game goes back to the Mario Screen\n * either completing a course choosing \"SAVE & QUIT\" or having a game over.\n */\ns32 lvl_init_menu_values_and_cursor_pos(UNUSED s32 arg, UNUSED s32 unused) {\n#ifdef VERSION_EU\n    s8 fileIndex;\n#endif\n    sSelectedButtonID = MENU_BUTTON_NONE;\n    sCurrentMenuLevel = MENU_LAYER_MAIN;\n    sTextBaseAlpha = 0;\n    // Place the cursor over the save file that was being played.\n    // gCurrSaveFileNum is 1 by default when the game boots, as such\n    // the cursor will point on Mario A save file.\n    switch (gCurrSaveFileNum) {\n        case 1: // File A\n            sCursorPos[0] = -94.0f;\n            sCursorPos[1] = 46.0f;\n            break;\n        case 2: // File B\n            sCursorPos[0] = 24.0f;\n            sCursorPos[1] = 46.0f;\n            break;\n        case 3: // File C\n            sCursorPos[0] = -94.0f;\n            sCursorPos[1] = 5.0f;\n            break;\n        case 4: // File D\n            sCursorPos[0] = 24.0f;\n            sCursorPos[1] = 5.0f;\n            break;\n    }\n    sClickPos[0] = -10000;\n    sClickPos[1] = -10000;\n    sCursorClickingTimer = 0;\n    sSelectedFileNum = 0;\n    sSelectedFileIndex = MENU_BUTTON_NONE;\n    sFadeOutText = FALSE;\n    sStatusMessageID = 0;\n    sTextFadeAlpha = 0;\n    sMainMenuTimer = 0;\n    sEraseYesNoHoverState = MENU_ERASE_HOVER_NONE;\n    sSoundMode = save_file_get_sound_mode();\n#ifdef VERSION_EU\n    sLanguageMode = eu_get_language();\n\n    for (fileIndex = 0; fileIndex <= 3; fileIndex++) {\n        if (save_file_exists(fileIndex) == TRUE) {\n            sOpenLangSettings = FALSE;\n            break;\n        } else {\n            sOpenLangSettings = TRUE;\n        }\n    }\n#endif\n    //! no return value\n#ifdef AVOID_UB\n    return 0;\n#endif\n}\n\n/**\n * Updates file select menu button objects so they can be interacted.\n * When a save file is selected, it returns fileNum value\n * defined in load_main_menu_save_file.\n */\ns32 lvl_update_obj_and_load_file_selected(UNUSED s32 arg, UNUSED s32 unused) {\n    area_update_objects();\n    return sSelectedFileNum;\n}\n\n#undef FILE_SELECT_PRINT_STRING\n#undef FILE_SELECT_TEXT_DL_BEGIN\n#undef FILE_SELECT_TEXT_DL_END\n"
  },
  {
    "path": "src/menu/file_select.h",
    "content": "#ifndef FILE_SELECT_H\n#define FILE_SELECT_H\n\n#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\n#include \"types.h\"\n\n#define MENU_LAYER_MAIN 1\n#define MENU_LAYER_SUBMENU 2\n\n#define MENU_ERASE_HOVER_NONE 0\n#define MENU_ERASE_HOVER_YES 1\n#define MENU_ERASE_HOVER_NO 2\n\nenum MainMenuButtonStates {\n    MENU_BUTTON_STATE_DEFAULT,\n    MENU_BUTTON_STATE_GROWING,\n    MENU_BUTTON_STATE_FULLSCREEN,\n    MENU_BUTTON_STATE_SHRINKING,\n    MENU_BUTTON_STATE_ZOOM_IN_OUT,\n    MENU_BUTTON_STATE_ZOOM_IN,\n    MENU_BUTTON_STATE_ZOOM_OUT\n};\n\nenum MenuButtonTypes {\n    MENU_BUTTON_NONE = -1, // no button selected (on main menu screen)\n\n    // Main Menu (SELECT FILE)\n    MENU_BUTTON_MAIN_MIN,\n    MENU_BUTTON_PLAY_FILE_A = MENU_BUTTON_MAIN_MIN,\n    MENU_BUTTON_PLAY_FILE_B,\n    MENU_BUTTON_PLAY_FILE_C,\n    MENU_BUTTON_PLAY_FILE_D,\n    MENU_BUTTON_SCORE,\n    MENU_BUTTON_COPY,\n    MENU_BUTTON_ERASE,\n    MENU_BUTTON_MAIN_MAX,\n\n    // Score Menu (CHECK FILE)\n    MENU_BUTTON_SCORE_MIN = MENU_BUTTON_MAIN_MAX,\n    MENU_BUTTON_SCORE_FILE_A = MENU_BUTTON_SCORE_MIN,\n    MENU_BUTTON_SCORE_FILE_B,\n    MENU_BUTTON_SCORE_FILE_C,\n    MENU_BUTTON_SCORE_FILE_D,\n    MENU_BUTTON_SCORE_RETURN,\n    MENU_BUTTON_SCORE_COPY_FILE,\n    MENU_BUTTON_SCORE_ERASE_FILE,\n    MENU_BUTTON_SCORE_MAX,\n\n    // Copy Menu (COPY FILE)\n    MENU_BUTTON_COPY_MIN = MENU_BUTTON_SCORE_MAX,\n    MENU_BUTTON_COPY_FILE_A = MENU_BUTTON_COPY_MIN,\n    MENU_BUTTON_COPY_FILE_B,\n    MENU_BUTTON_COPY_FILE_C,\n    MENU_BUTTON_COPY_FILE_D,\n    MENU_BUTTON_COPY_RETURN,\n    MENU_BUTTON_COPY_CHECK_SCORE,\n    MENU_BUTTON_COPY_ERASE_FILE,\n    MENU_BUTTON_COPY_MAX,\n\n    // Erase Menu (ERASE FILE)\n    MENU_BUTTON_ERASE_MIN = MENU_BUTTON_COPY_MAX,\n    MENU_BUTTON_ERASE_FILE_A = MENU_BUTTON_ERASE_MIN,\n    MENU_BUTTON_ERASE_FILE_B,\n    MENU_BUTTON_ERASE_FILE_C,\n    MENU_BUTTON_ERASE_FILE_D,\n    MENU_BUTTON_ERASE_RETURN,\n    MENU_BUTTON_ERASE_CHECK_SCORE,\n    MENU_BUTTON_ERASE_COPY_FILE,\n    MENU_BUTTON_ERASE_MAX,\n\n    // Sound Mode Menu (SOUND SELECT)\n    // This menu includes language settings on EU\n    MENU_BUTTON_SOUND_MODE = MENU_BUTTON_ERASE_MAX,\n    MENU_BUTTON_OPTION_MIN,\n    MENU_BUTTON_STEREO = MENU_BUTTON_OPTION_MIN,\n    MENU_BUTTON_MONO,\n    MENU_BUTTON_HEADSET,\n\n#ifdef VERSION_EU\n    // Language Menu\n    MENU_BUTTON_LANGUAGE_MIN,\n    MENU_BUTTON_LANGUAGE_ENGLISH = MENU_BUTTON_LANGUAGE_MIN,\n    MENU_BUTTON_LANGUAGE_FRENCH,\n    MENU_BUTTON_LANGUAGE_GERMAN,\n    MENU_BUTTON_LANGUAGE_RETURN,\n#endif\n\n    MENU_BUTTON_OPTION_MAX\n};\n\nenum ScoreMenuMessageID {\n    SCORE_MSG_CHECK_FILE,\n    SCORE_MSG_NOSAVE_DATA\n};\n\nenum CopyMenuMessageID {\n    COPY_MSG_MAIN_TEXT,\n    COPY_MSG_COPY_WHERE,\n    COPY_MSG_NOSAVE_EXISTS,\n    COPY_MSG_COPY_COMPLETE,\n    COPY_MSG_SAVE_EXISTS\n};\n\nenum CopyMenuActionPhase {\n    COPY_PHASE_MAIN,\n    COPY_PHASE_COPY_WHERE,\n    COPY_PHASE_COPY_COMPLETE\n};\n\nenum EraseMenuMessageID {\n    ERASE_MSG_MAIN_TEXT,\n    ERASE_MSG_PROMPT,\n    ERASE_MSG_NOSAVE_EXISTS,\n    ERASE_MSG_MARIO_ERASED,\n    ERASE_MSG_SAVE_EXISTS\n};\n\nenum EraseMenuActionPhase {\n    ERASE_PHASE_MAIN,\n    ERASE_PHASE_PROMPT,\n    ERASE_PHASE_MARIO_ERASED\n};\n\nenum SoundModeMenuActionPhase {\n    SOUND_MODE_PHASE_MAIN\n};\n\nvoid beh_yellow_background_menu_init(void);\nvoid beh_yellow_background_menu_loop(void);\nvoid bhv_menu_button_init(void);\nvoid bhv_menu_button_loop(void);\nvoid bhv_menu_button_manager_init(void);\nvoid bhv_menu_button_manager_loop(void);\nGfx *geo_file_select_strings_and_menu_cursor(s32 callContext, UNUSED struct GraphNode *node, UNUSED Mat4 mtx);\ns32 lvl_init_menu_values_and_cursor_pos(UNUSED s32 arg, UNUSED s32 unused);\ns32 lvl_update_obj_and_load_file_selected(UNUSED s32 arg, UNUSED s32 unused);\n\n#endif // FILE_SELECT_H\n"
  },
  {
    "path": "src/menu/intro_geo.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"game/memory.h\"\n#include \"game/segment2.h\"\n#include \"game/segment7.h\"\n#include \"intro_geo.h\"\n#include \"sm64.h\"\n#include \"textures.h\"\n#include \"types.h\"\n#include \"buffers/framebuffers.h\"\n#include \"game/game_init.h\"\n#include \"audio/external.h\"\n\n// frame counts for the zoom in, hold, and zoom out of title model\n#define INTRO_STEPS_ZOOM_IN 20\n#define INTRO_STEPS_HOLD_1 75\n#define INTRO_STEPS_ZOOM_OUT 91\n\n// background types\n#define INTRO_BACKGROUND_SUPER_MARIO 0\n#define INTRO_BACKGROUND_GAME_OVER 1\n\nstruct GraphNodeMore {\n    /*0x00*/ struct GraphNode node;\n    /*0x14*/ void *todo;\n    /*0x18*/ u32 unk18;\n};\n\n// intro geo bss\n#if defined(VERSION_SH) || defined(VERSION_CN)\nstatic u16 *sFramebuffers[3];\n#endif\nstatic s32 sGameOverFrameCounter;\nstatic s32 sGameOverTableIndex;\nstatic s16 sIntroFrameCounter;\nstatic s32 sTmCopyrightAlpha;\n\n/**\n * Geo callback to render the \"Super Mario 64\" logo on the title screen\n */\nGfx *geo_intro_super_mario_64_logo(s32 state, struct GraphNode *node, UNUSED void *context) {\n    struct GraphNode *graphNode = node;\n    Gfx *dl = NULL;\n    Gfx *dlIter = NULL;\n    Mtx *scaleMat;\n    f32 *scaleTable1 = segmented_to_virtual(intro_seg7_table_0700C790);\n    f32 *scaleTable2 = segmented_to_virtual(intro_seg7_table_0700C880);\n    f32 scaleX;\n    f32 scaleY;\n    f32 scaleZ;\n\n    if (state != 1) {\n        sIntroFrameCounter = 0;\n    } else if (state == 1) {\n        graphNode->flags = (graphNode->flags & 0xFF) | (LAYER_OPAQUE << 8);\n        scaleMat = alloc_display_list(sizeof(*scaleMat));\n        dl = alloc_display_list(4 * sizeof(*dl));\n        dlIter = dl;\n\n        // determine scale based on the frame counter\n        if (sIntroFrameCounter >= 0 && sIntroFrameCounter < INTRO_STEPS_ZOOM_IN) {\n            // zooming in\n            scaleX = scaleTable1[sIntroFrameCounter * 3];\n            scaleY = scaleTable1[sIntroFrameCounter * 3 + 1];\n            scaleZ = scaleTable1[sIntroFrameCounter * 3 + 2];\n        } else if (sIntroFrameCounter >= INTRO_STEPS_ZOOM_IN && sIntroFrameCounter < INTRO_STEPS_HOLD_1) {\n            // holding\n            scaleX = 1.0f;\n            scaleY = 1.0f;\n            scaleZ = 1.0f;\n        } else if (sIntroFrameCounter >= INTRO_STEPS_HOLD_1 && sIntroFrameCounter < INTRO_STEPS_ZOOM_OUT) {\n            // zooming out\n            scaleX = scaleTable2[(sIntroFrameCounter - INTRO_STEPS_HOLD_1) * 3];\n            scaleY = scaleTable2[(sIntroFrameCounter - INTRO_STEPS_HOLD_1) * 3 + 1];\n            scaleZ = scaleTable2[(sIntroFrameCounter - INTRO_STEPS_HOLD_1) * 3 + 2];\n        } else {\n            // disappeared\n            scaleX = 0.0f;\n            scaleY = 0.0f;\n            scaleZ = 0.0f;\n        }\n        guScale(scaleMat, scaleX, scaleY, scaleZ);\n\n        gSPMatrix(dlIter++, scaleMat, G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_PUSH);\n        gSPDisplayList(dlIter++, &intro_seg7_dl_logo);  // draw model\n        gSPPopMatrix(dlIter++, G_MTX_MODELVIEW);\n        gSPEndDisplayList(dlIter);\n\n        sIntroFrameCounter++;\n    }\n    return dl;\n}\n\n/**\n * Geo callback to render TM and Copyright on the title screen\n */\nGfx *geo_intro_tm_copyright(s32 state, struct GraphNode *node, UNUSED void *context) {\n    struct GraphNode *graphNode = node;\n    Gfx *dl = NULL;\n    Gfx *dlIter = NULL;\n\n    if (state != 1) {  // reset\n        sTmCopyrightAlpha = 0;\n    } else if (state == 1) {  // draw\n        dl = alloc_display_list(5 * sizeof(*dl));\n        dlIter = dl;\n        gSPDisplayList(dlIter++, dl_proj_mtx_fullscreen);\n        gDPSetEnvColor(dlIter++, 255, 255, 255, sTmCopyrightAlpha);\n        switch (sTmCopyrightAlpha) {\n            case 255: // opaque\n                graphNode->flags = (graphNode->flags & 0xFF) | (LAYER_OPAQUE << 8);\n                gDPSetRenderMode(dlIter++, G_RM_AA_OPA_SURF, G_RM_AA_OPA_SURF2);\n                break;\n            default: // blend\n                graphNode->flags = (graphNode->flags & 0xFF) | (LAYER_TRANSPARENT << 8);\n                gDPSetRenderMode(dlIter++, G_RM_AA_XLU_SURF, G_RM_AA_XLU_SURF2);\n                break;\n        }\n        gSPDisplayList(dlIter++, &intro_seg7_dl_copyright);  // draw model\n        gSPEndDisplayList(dlIter);\n\n        // Once the \"Super Mario 64\" logo has just about zoomed fully, fade in the \"TM\" and copyright text\n        if (sIntroFrameCounter >= 19) {\n            sTmCopyrightAlpha += 26;\n            if (sTmCopyrightAlpha > 255) {\n                sTmCopyrightAlpha = 255;\n            }\n        }\n    }\n    return dl;\n}\n\n/**\n * Generates a display list for a single background tile\n *\n * @param index            which tile to render (value from 0 to 11)\n * @param backgroundTable  array describing which image to use for each tile (0 denotes a \"Super Mario 64\" image, and 1 denotes a \"Game Over\" image)\n */\nstatic Gfx *intro_backdrop_one_image(s32 index, s8 *backgroundTable) {\n    // intro screen background display lists for each of four 80x20 textures\n    static const Gfx *introBackgroundDlRows[] = { title_screen_bg_dl_0A000130, title_screen_bg_dl_0A000148,\n                                                  title_screen_bg_dl_0A000160, title_screen_bg_dl_0A000178 };\n\n    // intro screen background texture X offsets\n    static float xCoords[] = {\n        0, 80, 160, 240,\n        0, 80, 160, 240,\n        0, 80, 160, 240,\n    };\n\n    // intro screen background texture Y offsets\n    static float yCoords[] = {\n        160, 160, 160, 160,\n        80,  80,  80,  80,\n        0,   0,   0,   0,\n    };\n\n    // table that points to either the \"Super Mario 64\" or \"Game Over\" tables\n    static const u8 *const *textureTables[] = { mario_title_texture_table, game_over_texture_table };\n\n    Mtx *mtx = alloc_display_list(sizeof(*mtx));\n    Gfx *displayList = alloc_display_list(36 * sizeof(*displayList));\n    Gfx *displayListIter = displayList;\n    const u8 *const *vIntroBgTable = segmented_to_virtual(textureTables[backgroundTable[index]]);\n    s32 i;\n\n    guTranslate(mtx, xCoords[index], yCoords[index], 0.0f);\n    gSPMatrix(displayListIter++, mtx, G_MTX_MODELVIEW | G_MTX_LOAD | G_MTX_PUSH);\n    gSPDisplayList(displayListIter++, &title_screen_bg_dl_0A000118);\n    for (i = 0; i < 4; i++) {\n        gDPLoadTextureBlock(displayListIter++, vIntroBgTable[i], G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0,\n                            G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD)\n        gSPDisplayList(displayListIter++, introBackgroundDlRows[i]);\n    }\n    gSPPopMatrix(displayListIter++, G_MTX_MODELVIEW);\n    gSPEndDisplayList(displayListIter);\n    return displayList;\n}\n\nstatic s8 introBackgroundIndexTable[] = {\n    INTRO_BACKGROUND_SUPER_MARIO, INTRO_BACKGROUND_SUPER_MARIO, INTRO_BACKGROUND_SUPER_MARIO,\n    INTRO_BACKGROUND_SUPER_MARIO, INTRO_BACKGROUND_SUPER_MARIO, INTRO_BACKGROUND_SUPER_MARIO,\n    INTRO_BACKGROUND_SUPER_MARIO, INTRO_BACKGROUND_SUPER_MARIO, INTRO_BACKGROUND_SUPER_MARIO,\n    INTRO_BACKGROUND_SUPER_MARIO, INTRO_BACKGROUND_SUPER_MARIO, INTRO_BACKGROUND_SUPER_MARIO,\n};\n\n// only one table of indexes listed\nstatic s8 *introBackgroundTables[] = { introBackgroundIndexTable };\n\n/**\n * Geo callback to render the intro background tiles\n */\nGfx *geo_intro_regular_backdrop(s32 state, struct GraphNode *node, UNUSED void *context) {\n    struct GraphNodeMore *graphNode = (struct GraphNodeMore *) node;\n    s32 index = graphNode->unk18 & 0xff; // TODO: word at offset 0x18 of struct GraphNode (always ends up being 0)\n    s8 *backgroundTable = introBackgroundTables[index];\n    Gfx *dl = NULL;\n    Gfx *dlIter = NULL;\n    s32 i;\n\n    if (state == 1) {  // draw\n        dl = alloc_display_list(16 * sizeof(*dl));\n        dlIter = dl;\n        graphNode->node.flags = (graphNode->node.flags & 0xFF) | (LAYER_OPAQUE << 8);\n        gSPDisplayList(dlIter++, &dl_proj_mtx_fullscreen);\n        gSPDisplayList(dlIter++, &title_screen_bg_dl_0A000100);\n        for (i = 0; i < 12; i++) {\n            gSPDisplayList(dlIter++, intro_backdrop_one_image(i, backgroundTable));\n        }\n        gSPDisplayList(dlIter++, &title_screen_bg_dl_0A000190);\n        gSPEndDisplayList(dlIter);\n    }\n    return dl;\n}\n\nstatic s8 gameOverBackgroundTable[] = {\n    INTRO_BACKGROUND_GAME_OVER, INTRO_BACKGROUND_GAME_OVER, INTRO_BACKGROUND_GAME_OVER,\n    INTRO_BACKGROUND_GAME_OVER, INTRO_BACKGROUND_GAME_OVER, INTRO_BACKGROUND_GAME_OVER,\n    INTRO_BACKGROUND_GAME_OVER, INTRO_BACKGROUND_GAME_OVER, INTRO_BACKGROUND_GAME_OVER,\n    INTRO_BACKGROUND_GAME_OVER, INTRO_BACKGROUND_GAME_OVER, INTRO_BACKGROUND_GAME_OVER,\n};\n\n/**\n * Geo callback to render the Game Over background tiles\n */\nGfx *geo_intro_gameover_backdrop(s32 state, struct GraphNode *node, UNUSED void *context) {\n    struct GraphNode *graphNode = node;\n    Gfx *dl = NULL;\n    Gfx *dlIter = NULL;\n    s32 j;\n    s32 i;\n\n    if (state != 1) {  // reset\n        sGameOverFrameCounter = 0;\n        sGameOverTableIndex = -2;\n        for (i = 0; i < ARRAY_COUNT(gameOverBackgroundTable); i++) {\n            gameOverBackgroundTable[i] = INTRO_BACKGROUND_GAME_OVER;\n        }\n    } else {  // draw\n        dl = alloc_display_list(16 * sizeof(*dl));\n        dlIter = dl;\n        if (sGameOverTableIndex == -2) {\n            if (sGameOverFrameCounter == 180) {\n                sGameOverTableIndex++;\n                sGameOverFrameCounter = 0;\n            }\n        } else {\n            // transition tile from \"Game Over\" to \"Super Mario 64\"\n            if (sGameOverTableIndex != 11 && !(sGameOverFrameCounter & 0x1)) {\n                // order of tiles that are flipped from \"Game Over\" to \"Super Mario 64\"\n                static s8 flipOrder[] = { 0, 1, 2, 3, 7, 11, 10, 9, 8, 4, 5, 6 };\n\n                sGameOverTableIndex++;\n                gameOverBackgroundTable[flipOrder[sGameOverTableIndex]] =\n                    INTRO_BACKGROUND_SUPER_MARIO;\n            }\n        }\n        if (sGameOverTableIndex != 11) {\n            sGameOverFrameCounter++;\n        }\n        graphNode->flags = (graphNode->flags & 0xFF) | (LAYER_OPAQUE << 8);\n\n        // draw all the tiles\n        gSPDisplayList(dlIter++, &dl_proj_mtx_fullscreen);\n        gSPDisplayList(dlIter++, &title_screen_bg_dl_0A000100);\n        for (j = 0; j < ARRAY_COUNT(gameOverBackgroundTable); j++) {\n            gSPDisplayList(dlIter++, intro_backdrop_one_image(j, gameOverBackgroundTable));\n        }\n        gSPDisplayList(dlIter++, &title_screen_bg_dl_0A000190);\n        gSPEndDisplayList(dlIter);\n    }\n    return dl;\n}\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\n\nextern Gfx title_screen_bg_dl_0A0065E8[];\nextern Gfx title_screen_bg_dl_0A006618[];\nextern Gfx title_screen_bg_dl_0A007548[];\n\n// Data\ns8 sFaceVisible[] = {\n    1, 1, 1, 1, 1, 1, 1, 1,\n    1, 1, 1, 1, 1, 1, 1, 1,\n    1, 1, 0, 0, 0, 0, 1, 1,\n    1, 1, 0, 0, 0, 0, 1, 1,\n    1, 1, 1, 1, 1, 1, 1, 1,\n    1, 1, 1, 1, 1, 1, 1, 1,\n};\n\ns8 sFaceToggleOrder[] = {\n     0,  1,  2,  3,  4,  5,  6,  7,\n    15, 23, 31, 39, 47, 46, 45, 44,\n    43, 42, 41, 40, 32, 24, 16,  8,\n     9, 10, 11, 12, 13, 14, 22, 30,\n    38, 37, 36, 35, 34, 33, 25, 17,\n};\n\ns8 sFaceCounter = 0;\n\nvoid intro_gen_face_texrect(Gfx **dlIter) {\n    s32 x;\n    s32 y;\n\n    for (y = 0; y < 6; y++) {\n        for (x = 0; x < 8; x++) {\n            if (sFaceVisible[y*8 + x] != 0) {\n                gSPTextureRectangle((*dlIter)++, (x * 40) << 2, (y * 40) << 2, (x * 40 + 39) << 2, (y * 40 + 39) << 2, 0,\n                                    0, 0, 4 << 10, 1 << 10);\n            }\n        }\n    }\n}\n\nGfx *intro_draw_face(u16 *image, s32 imageW, s32 imageH) {\n    Gfx *dl;\n    Gfx *dlIter;\n\n    dl = alloc_display_list(110 * sizeof(Gfx));\n\n    if (dl == NULL) {\n        return dl;\n    } else {\n        dlIter = dl;\n    }\n\n    gSPDisplayList(dlIter++, title_screen_bg_dl_0A0065E8);\n\n    gDPLoadTextureBlock(dlIter++, VIRTUAL_TO_PHYSICAL(image), G_IM_FMT_RGBA, G_IM_SIZ_16b, imageW, imageH, 0, G_TX_CLAMP | G_TX_NOMIRROR, G_TX_CLAMP | G_TX_NOMIRROR, 6, 6, G_TX_NOLOD, G_TX_NOLOD);\n\n    intro_gen_face_texrect(&dlIter);\n\n    gSPDisplayList(dlIter++, title_screen_bg_dl_0A006618);\n\n    gSPEndDisplayList(dlIter++);\n\n    return dl;\n}\n\n#ifdef VERSION_CN\n\n// TODO: See whether this matches other game versions too, clearly there was no actual\n//       substantive change in this function\nu16 *intro_sample_framebuffer(s32 imageW, s32 imageH, s32 sampleW, s32 sampleH) {\n    u16 *fb;\n    u16 *image;\n    s32 xIndex;\n    s32 yIndex;\n    f32 size;\n    f32 r, g, b;\n    s32 iy, ix, sy, sx;\n    s32 xOffset, yOffset;\n    u16 fbr, fbg, fbb;\n    f32 f1, f2, f3;\n\n    fb = sFramebuffers[sRenderingFramebuffer];\n    image = alloc_display_list(imageW * imageH * sizeof(u16));\n\n    if (image == NULL) {\n        return image;\n    }\n\n    for (iy = 0; iy < imageH; iy++) {\n        yOffset = 80;\n\n        for (ix = 0; ix < imageW; ix++) {\n            xOffset = 120;\n\n            r = 0;\n            g = 0;\n            b = 0;\n\n            for (sy = 0; sy < sampleH; sy++) {\n                for (sx = 0; sx < sampleW; sx++) {\n                    yIndex = (sampleH * iy + yOffset) + sy;\n                    xIndex = (sampleW * ix + xOffset) + sx;\n\n                    fbr = fb[320 * yIndex + xIndex];\n                    fbg = fb[320 * yIndex + xIndex];\n                    fbb = fb[320 * yIndex + xIndex];\n\n                    f1 = (fbr >> 0xB) & 0x1F;\n                    f2 = (fbg >> 0x6) & 0x1F;\n                    f3 = (fbb >> 0x1) & 0x1F;\n\n                    r += f1;\n                    g += f2;\n                    b += f3;\n                }\n            }\n\n            size = sampleW * sampleH;\n\n            fbr = ((u16) (r / size + 0.5) << 0xB) & 0xF800;\n            fbg = ((u16) (g / size + 0.5) << 0x6) &  0x7C0;\n            fbb = ((u16) (b / size + 0.5) << 0x1) &   0x3E;\n\n            image[imageH * iy + ix] = fbr + fbg + fbb + 1;\n        }\n    }\n\n    return image;\n}\n\n#else\n\nu16 *intro_sample_framebuffer(s32 imageW, s32 imageH, s32 sampleW, s32 sampleH) {\n    u16 *fb;\n    u16 *image;\n    s32 pixel;\n    f32 size;\n    f32 r, g, b;\n    s32 iy, ix, sy, sx;\n\n    s32 xOffset = 120;\n    s32 yOffset = 80;\n\n    fb = sFramebuffers[sRenderingFramebuffer];\n    image = alloc_display_list(imageW * imageH * sizeof(u16));\n\n    if (image == NULL) {\n        return image;\n    }\n\n    for (iy = 0; iy < imageH; iy++) {\n        for (ix = 0; ix < imageW; ix++) {\n            r = 0;\n            g = 0;\n            b = 0;\n\n            for (sy = 0; sy < sampleH; sy++) {\n                for (sx = 0; sx < sampleW; sx++) {\n                    u16 fbr, fbg, fbb;\n                    f32 f1, f2, f3;\n                    pixel = 320 * (sampleH * iy + sy + yOffset) + (sampleW * ix + xOffset) + sx;\n\n                    fbr = fb[pixel];\n                    fbg = fb[pixel];\n                    fbb = fb[pixel];\n\n                    f1 = ((fbr >> 0xB) & 0x1F);\n                    f2 = ((fbg >> 0x6) & 0x1F);\n                    f3 = ((fbb >> 0x1) & 0x1F);\n\n                    r += f1;\n                    g += f2;\n                    b += f3;\n                }\n            }\n\n            size = sampleW * sampleH;\n            image[imageH * iy + ix] = ((((u16) (r / size + 0.5) << 0xB) & 0xF800) & 0xffff) +\n                                      ((((u16) (g / size + 0.5) << 0x6) &  0x7C0) & 0xffff) +\n                                      ((((u16) (b / size + 0.5) << 0x1) &   0x3E) & 0xffff) + 1;\n        }\n    }\n\n    return image;\n}\n\n#endif\n\nGfx *geo_intro_face_easter_egg(s32 state, struct GraphNode *node, UNUSED void *context) {\n    struct GraphNodeGenerated *genNode;\n    u16 *image;\n    Gfx *dl = NULL;\n    s32 i;\n\n    genNode = (struct GraphNodeGenerated *) node;\n\n    if (state != 1) {\n        sFramebuffers[0] = gFramebuffer0;\n        sFramebuffers[1] = gFramebuffer1;\n        sFramebuffers[2] = gFramebuffer2;\n\n        for (i = 0; i < 48; i++) {\n            sFaceVisible[i] = 0;\n        }\n    } else if (state == 1) {\n        if (sFaceCounter == 0) {\n            if (gPlayer1Controller->buttonPressed & Z_TRIG) {\n                play_sound(SOUND_MENU_STAR_SOUND, gGlobalSoundSource);\n                sFaceVisible[0] ^= 1;\n                sFaceCounter++;\n            }\n        } else {\n            sFaceVisible[sFaceToggleOrder[sFaceCounter++]] ^= 1;\n            if (sFaceCounter >= 40) {\n                sFaceCounter = 0;\n            }\n        }\n\n        // Draw while the first or last face is visible.\n        if (sFaceVisible[0] == 1 || sFaceVisible[17] == 1) {\n            image = intro_sample_framebuffer(40, 40, 2, 2);\n            if (image != NULL) {\n                genNode->fnNode.node.flags = (genNode->fnNode.node.flags & 0xFF) | (LAYER_OPAQUE << 8);\n                dl = intro_draw_face(image, 40, 40);\n            }\n        }\n    }\n\n    return dl;\n}\n\nGfx *geo_intro_rumble_pak_graphic(s32 state, struct GraphNode *node, UNUSED void *context) {\n    struct GraphNodeGenerated *genNode = (struct GraphNodeGenerated *)node;\n    Gfx *dlIter;\n    Gfx *dl;\n    s32 introContext;\n    s8 backgroundTileSix;\n#ifdef AVOID_UB\n    dl = NULL;\n    backgroundTileSix = 0;\n#endif\n\n    if (state != 1) {\n        dl = NULL;\n    } else if (state == 1) {\n        genNode->fnNode.node.flags = (genNode->fnNode.node.flags & 0xFF) | (LAYER_OPAQUE << 8);\n        introContext = genNode->parameter & 0xFF;\n        if (introContext == 0) {\n            backgroundTileSix = introBackgroundIndexTable[6];\n        } else if (introContext == 1) {\n            backgroundTileSix = gameOverBackgroundTable[6];\n        }\n        if (backgroundTileSix == INTRO_BACKGROUND_SUPER_MARIO) {\n            dl = alloc_display_list(3 * sizeof(*dl));\n            if (dl != NULL) {\n                dlIter = dl;\n                gSPDisplayList(dlIter++, &title_screen_bg_dl_0A007548);\n                gSPEndDisplayList(dlIter);\n            }\n        } else {\n            dl = NULL;\n        }\n    }\n    return dl;\n}\n\n#endif\n"
  },
  {
    "path": "src/menu/intro_geo.h",
    "content": "#ifndef INTRO_GEO_H\n#define INTRO_GEO_H\n\n#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\n#include \"types.h\"\n#include \"engine/graph_node.h\"\n\nGfx *geo_intro_super_mario_64_logo(s32 sp50, struct GraphNode *sp54, UNUSED void *context);\nGfx *geo_intro_tm_copyright(s32 sp40, struct GraphNode *sp44, UNUSED void *context);\nGfx *geo_intro_regular_backdrop(s32 sp48, struct GraphNode *sp4c, UNUSED void *context);\nGfx *geo_intro_gameover_backdrop(s32 sp40, struct GraphNode *sp44, UNUSED void *context);\n\n#if defined(VERSION_SH) || defined(VERSION_CN)\nGfx *geo_intro_face_easter_egg(s32 state, struct GraphNode *node, UNUSED void *context);\nGfx *geo_intro_rumble_pak_graphic(s32 state, struct GraphNode *node, UNUSED void *context);\n#endif\n\n#endif // INTRO_GEO_H\n"
  },
  {
    "path": "src/menu/star_select.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"audio/external.h\"\n#include \"behavior_data.h\"\n#include \"engine/behavior_script.h\"\n#include \"engine/graph_node.h\"\n#include \"eu_translation.h\"\n#include \"game/area.h\"\n#include \"game/game_init.h\"\n#include \"game/ingame_menu.h\"\n#include \"game/level_update.h\"\n#include \"game/memory.h\"\n#include \"game/object_helpers.h\"\n#include \"game/object_list_processor.h\"\n#include \"game/save_file.h\"\n#include \"game/segment2.h\"\n#include \"game/segment7.h\"\n#include \"game/rumble_init.h\"\n#include \"sm64.h\"\n#include \"star_select.h\"\n#include \"text_strings.h\"\n\n/**\n * @file star_select.c\n * This file implements how the star select screen (act selector) function.\n * That includes handles what stars can be selected, star selector types,\n * strings, act values, and star selector model rendering if a star is collected or not.\n */\n\n// Star Selector count models printed in the act selector menu.\nstatic struct Object *sStarSelectorModels[8];\n\n// The act the course is loaded as, affects whether some objects spawn.\nstatic s8 sLoadedActNum;\n\n// Number of obtained stars, excluding the coin star.\nstatic u8 sObtainedStars;\n\n// Total number of stars that appear in the act selector menu.\nstatic s8 sVisibleStars;\n\n// Act selected when the act menu is first opened.\nstatic u8 sInitSelectedActNum;\n\n// Index value of the act selected in the act menu.\nstatic s8 sSelectedActIndex = 0;\n\n// Index value of the star that is selectable in the act menu.\n// Excluding the next star, it doesn't count other transparent stars.\nstatic s8 sSelectableStarIndex = 0;\n\n// Act Selector menu timer that keeps counting until you choose an act.\nstatic s32 sActSelectorMenuTimer = 0;\n\n/**\n * Act Selector Star Type Loop Action\n * Defines a select type for a star in the act selector.\n */\nvoid bhv_act_selector_star_type_loop(void) {\n    switch (gCurrentObject->oStarSelectorType) {\n        // If a star is not selected, don't rotate or change size\n        case STAR_SELECTOR_NOT_SELECTED:\n            gCurrentObject->oStarSelectorSize -= 0.1;\n            if (gCurrentObject->oStarSelectorSize < 1.0) {\n                gCurrentObject->oStarSelectorSize = 1.0;\n            }\n            gCurrentObject->oFaceAngleYaw = 0;\n            break;\n        // If a star is selected, rotate and slightly increase size\n        case STAR_SELECTOR_SELECTED:\n            gCurrentObject->oStarSelectorSize += 0.1;\n            if (gCurrentObject->oStarSelectorSize > 1.3) {\n                gCurrentObject->oStarSelectorSize = 1.3;\n            }\n            gCurrentObject->oFaceAngleYaw += 0x800;\n            break;\n        // If the 100 coin star is selected, rotate\n        case STAR_SELECTOR_100_COINS:\n            gCurrentObject->oFaceAngleYaw += 0x800;\n            break;\n    }\n    // Scale act selector stars depending of the type selected\n    cur_obj_scale(gCurrentObject->oStarSelectorSize);\n    // Unused timer, only referenced here. Probably replaced by sActSelectorMenuTimer\n    gCurrentObject->oStarSelectorTimer++;\n}\n\n/**\n * Renders the 100 coin star with an special star selector type.\n */\nvoid render_100_coin_star(u8 stars) {\n    if (stars & (1 << 6)) {\n        // If the 100 coin star has been collected, create a new star selector next to the coin score.\n        sStarSelectorModels[6] = spawn_object_abs_with_rot(gCurrentObject, 0, MODEL_STAR,\n                                                        bhvActSelectorStarType, 370, 24, -300, 0, 0, 0);\n        sStarSelectorModels[6]->oStarSelectorSize = 0.8;\n        sStarSelectorModels[6]->oStarSelectorType = STAR_SELECTOR_100_COINS;\n    }\n}\n\n/**\n * Act Selector Init Action\n * Checks how many stars has been obtained in a course, to render\n * the correct star models, the 100 coin star and also handles\n * checks of what star should be next in sInitSelectedActNum.\n */\nvoid bhv_act_selector_init(void) {\n    s16 i = 0;\n    s32 selectorModelIDs[10];\n    u8 stars = save_file_get_star_flags(gCurrSaveFileNum - 1, COURSE_NUM_TO_INDEX(gCurrCourseNum));\n\n    sVisibleStars = 0;\n    while (i != sObtainedStars) {\n        if (stars & (1 << sVisibleStars)) { // Star has been collected\n            selectorModelIDs[sVisibleStars] = MODEL_STAR;\n            i++;\n        } else { // Star has not been collected\n            selectorModelIDs[sVisibleStars] = MODEL_TRANSPARENT_STAR;\n            // If this is the first star that has not been collected, set\n            // the default selection to this star.\n            if (sInitSelectedActNum == 0) {\n                sInitSelectedActNum = sVisibleStars + 1;\n                sSelectableStarIndex = sVisibleStars;\n            }\n        }\n        sVisibleStars++;\n    }\n\n    // If the stars have been collected in order so far, show the next star.\n    if (sVisibleStars == sObtainedStars && sVisibleStars != 6) {\n        selectorModelIDs[sVisibleStars] = MODEL_TRANSPARENT_STAR;\n        sInitSelectedActNum = sVisibleStars + 1;\n        sSelectableStarIndex = sVisibleStars;\n        sVisibleStars++;\n    }\n\n    // If all stars have been collected, set the default selection to the last star.\n    if (sObtainedStars == 6) {\n        sInitSelectedActNum = sVisibleStars;\n    }\n\n    //! Useless, since sInitSelectedActNum has already been set in this\n    //! scenario by the code that shows the next uncollected star.\n    if (sObtainedStars == 0) {\n        sInitSelectedActNum = 1;\n    }\n\n    // Render star selector objects\n    for (i = 0; i < sVisibleStars; i++) {\n        sStarSelectorModels[i] =\n            spawn_object_abs_with_rot(gCurrentObject, 0, selectorModelIDs[i], bhvActSelectorStarType,\n                                      (sVisibleStars - 1) * -75 + i * 152, 248, -300, 0, 0, 0);\n\n        sStarSelectorModels[i]->oStarSelectorSize = 1.0f;\n    }\n\n    render_100_coin_star(stars);\n}\n\n/**\n * Act Selector Loop Action\n * Handles star selector scrolling depending of what stars are\n * selectable, whenever all 6 stars are obtained or not.\n * Also handles 2 star selector types whenever the star is selected\n * or not, the types are defined in bhv_act_selector_star_type_loop.\n */\nvoid bhv_act_selector_loop(void) {\n    s8 i;\n    u8 starIndexCounter;\n    u8 stars = save_file_get_star_flags(gCurrSaveFileNum - 1, COURSE_NUM_TO_INDEX(gCurrCourseNum));\n\n    if (sObtainedStars != 6) {\n        // Sometimes, stars are not selectable even if they appear on the screen.\n        // This code filters selectable and non-selectable stars.\n        sSelectedActIndex = 0;\n        handle_menu_scrolling(MENU_SCROLL_HORIZONTAL, &sSelectableStarIndex, 0, sObtainedStars);\n        starIndexCounter = sSelectableStarIndex;\n        for (i = 0; i < sVisibleStars; i++) {\n            // Can the star be selected (is it either already completed or the first non-completed mission)\n            if ((stars & (1 << i)) || i == sInitSelectedActNum - 1) {\n                if (starIndexCounter == 0) { // We have reached the sSelectableStarIndex-th selectable star.\n                    sSelectedActIndex = i;\n                    break;\n                }\n                starIndexCounter--;\n            }\n        }\n    } else {\n        // If all stars are collected then they are all selectable.\n        handle_menu_scrolling(MENU_SCROLL_HORIZONTAL, &sSelectableStarIndex, 0, sVisibleStars - 1);\n        sSelectedActIndex = sSelectableStarIndex;\n    }\n\n    // Star selector type handler\n    for (i = 0; i < sVisibleStars; i++) {\n        if (sSelectedActIndex == i) {\n            sStarSelectorModels[i]->oStarSelectorType = STAR_SELECTOR_SELECTED;\n        } else {\n            sStarSelectorModels[i]->oStarSelectorType = STAR_SELECTOR_NOT_SELECTED;\n        }\n    }\n}\n\n/**\n * Print the course number selected with the wood rgba16 course texture.\n */\n#ifdef VERSION_EU\nvoid print_course_number(s16 language) {\n#else\nvoid print_course_number(void) {\n#endif\n    u8 courseNum[4];\n\n    create_dl_translation_matrix(MENU_MTX_PUSH, 158.0f, 81.0f, 0.0f);\n\n    // Full wood texture in JP & US, lower part of it on EU\n    gSPDisplayList(gDisplayListHead++, dl_menu_rgba16_wood_course);\n\n#ifdef VERSION_EU\n    // Change upper part of the wood texture depending of the language defined\n    switch (language) {\n        case LANGUAGE_ENGLISH:\n            gSPDisplayList(gDisplayListHead++, dl_menu_texture_course_upper);\n            break;\n        case LANGUAGE_FRENCH:\n            gSPDisplayList(gDisplayListHead++, dl_menu_texture_niveau_upper);\n            break;\n        case LANGUAGE_GERMAN:\n            gSPDisplayList(gDisplayListHead++, dl_menu_texture_kurs_upper);\n            break;\n    }\n\n    gSPDisplayList(gDisplayListHead++, dl_menu_rgba16_wood_course_end);\n#endif\n\n    gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);\n    gSPDisplayList(gDisplayListHead++, dl_rgba16_text_begin);\n    gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, 255);\n\n    int_to_str(gCurrCourseNum, courseNum);\n\n    if (gCurrCourseNum < 10) { // 1 digit number\n        print_hud_lut_string(HUD_LUT_GLOBAL, 152, 158, courseNum);\n    } else { // 2 digit number\n        print_hud_lut_string(HUD_LUT_GLOBAL, 143, 158, courseNum);\n    }\n\n    gSPDisplayList(gDisplayListHead++, dl_rgba16_text_end);\n}\n\n#ifdef VERSION_JP\n#define ACT_NAME_X 158\n#else\n#define ACT_NAME_X 163\n#endif\n\n/**\n * Print act selector strings, some with special checks.\n */\nvoid print_act_selector_strings(void) {\n#ifdef VERSION_EU\n    unsigned char myScore[][10] = { {TEXT_MYSCORE}, {TEXT_MY_SCORE_FR}, {TEXT_MY_SCORE_DE} };\n#else\n    unsigned char myScore[] = { TEXT_MYSCORE };\n#endif\n\n    unsigned char starNumbers[] = { TEXT_ZERO };\n\n#ifdef VERSION_EU\n    u8 **levelNameTbl;\n    u8 *currLevelName;\n    u8 **actNameTbl;\n#else\n    u8 **levelNameTbl = segmented_to_virtual(seg2_course_name_table);\n    u8 *currLevelName = segmented_to_virtual(levelNameTbl[COURSE_NUM_TO_INDEX(gCurrCourseNum)]);\n    u8 **actNameTbl = segmented_to_virtual(seg2_act_name_table);\n#endif\n    u8 *selectedActName;\n    s16 lvlNameX;\n    s16 actNameX;\n    s8 i;\n#ifdef VERSION_EU\n    s16 language = eu_get_language();\n#endif\n\n    create_dl_ortho_matrix();\n\n#ifdef VERSION_EU\n    switch (language) {\n        case LANGUAGE_ENGLISH:\n            actNameTbl = segmented_to_virtual(act_name_table_eu_en);\n            levelNameTbl = segmented_to_virtual(course_name_table_eu_en);\n            break;\n        case LANGUAGE_FRENCH:\n            actNameTbl = segmented_to_virtual(act_name_table_eu_fr);\n            levelNameTbl = segmented_to_virtual(course_name_table_eu_fr);\n            break;\n        case LANGUAGE_GERMAN:\n            actNameTbl = segmented_to_virtual(act_name_table_eu_de);\n            levelNameTbl = segmented_to_virtual(course_name_table_eu_de);\n            break;\n    }\n    currLevelName = segmented_to_virtual(levelNameTbl[COURSE_NUM_TO_INDEX(gCurrCourseNum)]);\n#endif\n\n    // Print the coin highscore.\n    gSPDisplayList(gDisplayListHead++, dl_rgba16_text_begin);\n    gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, 255);\n    print_hud_my_score_coins(1, gCurrSaveFileNum - 1, COURSE_NUM_TO_INDEX(gCurrCourseNum), 155, 106);\n    gSPDisplayList(gDisplayListHead++, dl_rgba16_text_end);\n\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_begin);\n    gDPSetEnvColor(gDisplayListHead++, 0, 0, 0, 255);\n    // Print the \"MY SCORE\" text if the coin score is more than 0\n    if (save_file_get_course_coin_score(gCurrSaveFileNum - 1, COURSE_NUM_TO_INDEX(gCurrCourseNum)) != 0) {\n        // TODO: Macros for all these hardcoded positions would be nice\n#ifdef VERSION_EU\n        print_generic_string(95, 118, myScore[language]);\n#elif defined(VERSION_CN)\n        print_generic_string(89, 118, myScore);\n#else\n        print_generic_string(102, 118, myScore);\n#endif\n    }\n\n#ifdef VERSION_CN\n    lvlNameX = get_str_x_pos_from_center(160, currLevelName + 6, 16.0f);\n    print_generic_string(lvlNameX, 30, currLevelName + 6);\n#else\n    lvlNameX = get_str_x_pos_from_center(160, currLevelName + 3, 10.0f);\n    print_generic_string(lvlNameX, 33, currLevelName + 3);\n#endif\n\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_end);\n\n#ifdef VERSION_EU\n    print_course_number(language);\n#else\n    print_course_number();\n#endif\n\n#ifdef VERSION_CN\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_begin);\n#else\n    gSPDisplayList(gDisplayListHead++, dl_menu_ia8_text_begin);\n#endif\n    gDPSetEnvColor(gDisplayListHead++, 0, 0, 0, 255);\n\n    // Print the name of the selected act.\n    if (sVisibleStars != 0) {\n        selectedActName = segmented_to_virtual(actNameTbl[COURSE_NUM_TO_INDEX(gCurrCourseNum) * 6 + sSelectedActIndex]);\n\n#ifdef VERSION_CN\n        actNameX = get_str_x_pos_from_center(ACT_NAME_X, selectedActName, 16.0f);\n        print_generic_string(actNameX, 141, selectedActName);\n#else\n        actNameX = get_str_x_pos_from_center(ACT_NAME_X, selectedActName, 8.0f);\n        print_menu_generic_string(actNameX, 81, selectedActName);\n#endif\n    }\n\n#ifdef VERSION_CN\n    gSPDisplayList(gDisplayListHead++, dl_ia_text_end);\n\n    gSPDisplayList(gDisplayListHead++, dl_menu_ia8_text_begin);\n    gDPSetEnvColor(gDisplayListHead++, 0, 0, 0, 255);\n#endif\n\n    // Print the numbers above each star.\n    for (i = 1; i <= sVisibleStars; i++) {\n        starNumbers[0] = i;\n#ifdef VERSION_EU\n        print_menu_generic_string(128 - (sVisibleStars - 1) * 15 + i * 30, 38, starNumbers);\n#else\n        print_menu_generic_string(122 - (sVisibleStars - 1) * 17 + i * 34, 38, starNumbers);\n#endif\n    }\n\n    gSPDisplayList(gDisplayListHead++, dl_menu_ia8_text_end);\n}\n\n/**\n * Geo function that Print act selector strings.\n *!@bug: This geo function is missing the third param. Harmless in practice due to o32 convention.\n */\n#ifdef AVOID_UB\nGfx *geo_act_selector_strings(s16 callContext, UNUSED struct GraphNode *node, UNUSED void *context)\n#else\nGfx *geo_act_selector_strings(s16 callContext, UNUSED struct GraphNode *node)\n#endif\n{\n    if (callContext == GEO_CONTEXT_RENDER) {\n        print_act_selector_strings();\n    }\n    return NULL;\n}\n\n/**\n * Initiates act selector values before entering a main course.\n * Also load how much stars a course has, without counting the 100 coin star.\n */\ns32 lvl_init_act_selector_values_and_stars(UNUSED s32 arg, UNUSED s32 unused) {\n    u8 stars = save_file_get_star_flags(gCurrSaveFileNum - 1, COURSE_NUM_TO_INDEX(gCurrCourseNum));\n\n    sLoadedActNum = 0;\n    sInitSelectedActNum = 0;\n    sVisibleStars = 0;\n    sActSelectorMenuTimer = 0;\n    sObtainedStars =\n        save_file_get_course_star_count(gCurrSaveFileNum - 1, COURSE_NUM_TO_INDEX(gCurrCourseNum));\n\n    // Don't count 100 coin star\n    if (stars & (1 << 6)) {\n        sObtainedStars--;\n    }\n\n    //! no return value\n#ifdef AVOID_UB\n    return 0;\n#endif\n}\n\n/**\n * Loads act selector button actions with selected act value checks.\n * Also updates objects and returns act number selected after is chosen.\n */\ns32 lvl_update_obj_and_load_act_button_actions(UNUSED s32 arg, UNUSED s32 unused) {\n    if (sActSelectorMenuTimer > 10) {\n        // If any of these buttons are pressed, play sound and go to course act\n#ifndef VERSION_EU\n        if ((gPlayer3Controller->buttonPressed & A_BUTTON)\n         || (gPlayer3Controller->buttonPressed & START_BUTTON)\n         || (gPlayer3Controller->buttonPressed & B_BUTTON))\n#else\n        if (gPlayer3Controller->buttonPressed & (A_BUTTON | START_BUTTON | B_BUTTON | Z_TRIG))\n#endif\n        {\n#ifdef VERSION_JP\n            play_sound(SOUND_MENU_STAR_SOUND, gGlobalSoundSource);\n#else\n            play_sound(SOUND_MENU_STAR_SOUND_LETS_A_GO, gGlobalSoundSource);\n#endif\n#if ENABLE_RUMBLE\n            queue_rumble_data(60, 70);\n            func_sh_8024C89C(1);\n#endif\n            if (sInitSelectedActNum >= sSelectedActIndex + 1) {\n                sLoadedActNum = sSelectedActIndex + 1;\n            } else {\n                sLoadedActNum = sInitSelectedActNum;\n            }\n            gDialogCourseActNum = sSelectedActIndex + 1;\n        }\n    }\n\n    area_update_objects();\n    sActSelectorMenuTimer++;\n    return sLoadedActNum;\n}\n"
  },
  {
    "path": "src/menu/star_select.h",
    "content": "#ifndef STAR_SELECT_H\n#define STAR_SELECT_H\n\n#include <PR/ultratypes.h>\n#include <PR/gbi.h>\n\n#include \"types.h\"\n\nenum StarSelectorTypes {\n    STAR_SELECTOR_NOT_SELECTED,\n    STAR_SELECTOR_SELECTED,\n    STAR_SELECTOR_100_COINS\n};\n\n#ifdef AVOID_UB\nGfx *geo_act_selector_strings(s16 callContext, UNUSED struct GraphNode *node, UNUSED void *context);\n#else\nGfx *geo_act_selector_strings(s16 callContext, UNUSED struct GraphNode *node);\n#endif\ns32 lvl_init_act_selector_values_and_stars(UNUSED s32 arg, UNUSED s32 unused);\ns32 lvl_update_obj_and_load_act_button_actions(UNUSED s32 arg, UNUSED s32 unused);\n\n#endif // STAR_SELECT_H\n"
  },
  {
    "path": "src/menu/title_screen.c",
    "content": "#include <PR/ultratypes.h>\n\n#include \"audio/external.h\"\n#include \"engine/math_util.h\"\n#include \"game/area.h\"\n#include \"game/game_init.h\"\n#include \"game/level_update.h\"\n#include \"game/main.h\"\n#include \"game/memory.h\"\n#include \"game/print.h\"\n#include \"game/save_file.h\"\n#include \"game/sound_init.h\"\n#include \"game/rumble_init.h\"\n#include \"level_table.h\"\n#include \"seq_ids.h\"\n#include \"sm64.h\"\n#include \"title_screen.h\"\n\n/**\n * @file title_screen.c\n * This file implements how title screen functions.\n * That includes playing demo sequences, introduction screens\n * and a level select used for testing purposes.\n */\n\n#define STUB_LEVEL(textname, _1, _2, _3, _4, _5, _6, _7, _8) textname,\n#define DEFINE_LEVEL(textname, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) textname,\n\nstatic char sLevelSelectStageNames[64][16] = {\n    #include \"levels/level_defines.h\"\n};\n#undef STUB_LEVEL\n#undef DEFINE_LEVEL\n\nstatic u16 sDemoCountdown = 0;\n#ifndef VERSION_JP\nstatic s16 sPlayMarioGreeting = TRUE;\nstatic s16 sPlayMarioGameOver = TRUE;\n#endif\n\n#define PRESS_START_DEMO_TIMER 800\n\n/**\n * Run the demo timer on the PRESS START screen after a number of frames.\n * This function returns the level ID from the first byte of a demo file.\n * It also returns the level ID from intro_regular (file select or level select menu)\n */\ns32 run_level_id_or_demo(s32 level) {\n    gCurrDemoInput = NULL;\n\n    if (level == LEVEL_NONE) {\n        if (!gPlayer1Controller->buttonDown && !gPlayer1Controller->stickMag) {\n            // start the demo. 800 frames has passed while\n            // player is idle on PRESS START screen.\n            if ((++sDemoCountdown) == PRESS_START_DEMO_TIMER) {\n\n                // start the Mario demo animation for the demo list.\n                load_patchable_table(&gDemoInputsBuf, gDemoInputListID);\n\n                // if the next demo sequence ID is the count limit, reset it back to\n                // the first sequence.\n                if (++gDemoInputListID == gDemoInputsBuf.dmaTable->count) {\n                    gDemoInputListID = 0;\n                }\n\n                // add 1 (+4) to the pointer to skip the first 4 bytes\n                // Use the first 4 bytes to store level ID,\n                // then use the rest of the values for inputs\n                gCurrDemoInput = ((struct DemoInput *) gDemoInputsBuf.bufTarget) + 1;\n                level = (s8)((struct DemoInput *) gDemoInputsBuf.bufTarget)->timer;\n                gCurrSaveFileNum = 1;\n                gCurrActNum = 1;\n            }\n        } else { // activity was detected, so reset the demo countdown.\n            sDemoCountdown = 0;\n        }\n    }\n    return level;\n}\n\n/**\n * Level select intro function, updates the selected stage\n * count if an input was received. signals the stage to be started\n * or the level select to be exited if start or the quit combo is pressed.\n */\ns16 intro_level_select(void) {\n    s32 stageChanged = FALSE;\n\n    // perform the ID updates per each button press.\n    // runs into a loop so after a button is pressed\n    // stageChanged goes back to FALSE\n    if (gPlayer1Controller->buttonPressed & A_BUTTON) {\n        ++gCurrLevelNum, stageChanged = TRUE;\n    }\n    if (gPlayer1Controller->buttonPressed & B_BUTTON) {\n        --gCurrLevelNum, stageChanged = TRUE;\n    }\n    if (gPlayer1Controller->buttonPressed & U_JPAD) {\n        --gCurrLevelNum, stageChanged = TRUE;\n    }\n    if (gPlayer1Controller->buttonPressed & D_JPAD) {\n        ++gCurrLevelNum, stageChanged = TRUE;\n    }\n    if (gPlayer1Controller->buttonPressed & L_JPAD) {\n        gCurrLevelNum -= 10, stageChanged = TRUE;\n    }\n    if (gPlayer1Controller->buttonPressed & R_JPAD) {\n        gCurrLevelNum += 10, stageChanged = TRUE;\n    }\n\n    // if the stage was changed, play the sound for changing a stage.\n    if (stageChanged) {\n        play_sound(SOUND_GENERAL_LEVEL_SELECT_CHANGE, gGlobalSoundSource);\n    }\n\n    if (gCurrLevelNum > LEVEL_MAX) {\n        gCurrLevelNum = LEVEL_MIN; // exceeded max. set to min.\n    }\n\n    if (gCurrLevelNum < LEVEL_MIN) {\n        gCurrLevelNum = LEVEL_MAX; // exceeded min. set to max.\n    }\n\n    // Use file 4 and last act as a test\n    gCurrSaveFileNum = 4;\n    gCurrActNum = 6;\n\n    print_text_centered(160, 80, \"SELECT STAGE\");\n    print_text_centered(160, 30, \"PRESS START BUTTON\");\n    print_text_fmt_int(40, 60, \"%2d\", gCurrLevelNum);\n    print_text(80, 60, sLevelSelectStageNames[gCurrLevelNum - 1]); // print stage name\n\n#define QUIT_LEVEL_SELECT_COMBO (Z_TRIG | START_BUTTON | L_CBUTTONS | R_CBUTTONS)\n\n    // start being pressed signals the stage to be started. that is, unless...\n    if (gPlayer1Controller->buttonPressed & START_BUTTON) {\n        // ... the level select quit combo is being pressed, which uses START. If this\n        // is the case, quit the menu instead.\n        if (gPlayer1Controller->buttonDown == QUIT_LEVEL_SELECT_COMBO) {\n            gDebugLevelSelect = FALSE;\n            return -1;\n        }\n        play_sound(SOUND_MENU_STAR_SOUND, gGlobalSoundSource);\n        return gCurrLevelNum;\n    }\n    return 0;\n}\n\n/**\n * Regular intro function that handles Mario's greeting voice and game start.\n */\ns32 intro_regular(void) {\n    s32 level = LEVEL_NONE;\n\n#ifndef VERSION_JP\n    // When the game stars, gGlobalTimer is less than 129 frames,\n    // so Mario greets the player. After that, he will always say\n    // \"press start to play\" when it goes back to the title screen\n    // (using SAVE AND QUIT)\n    if (sPlayMarioGreeting == TRUE) {\n        if (gGlobalTimer < 129) {\n            play_sound(SOUND_MARIO_HELLO, gGlobalSoundSource);\n        } else {\n            play_sound(SOUND_MARIO_PRESS_START_TO_PLAY, gGlobalSoundSource);\n        }\n        sPlayMarioGreeting = FALSE;\n    }\n#endif\n    print_intro_text();\n\n    if (gPlayer1Controller->buttonPressed & START_BUTTON) {\n        play_sound(SOUND_MENU_STAR_SOUND, gGlobalSoundSource);\n#if ENABLE_RUMBLE\n        queue_rumble_data(60, 70);\n        func_sh_8024C89C(1);\n#endif\n        // calls level ID 100 (or 101 adding level select bool value)\n        // defined in level_intro_mario_head_regular JUMP_IF commands\n        // 100 is File Select - 101 is Level Select\n        level = 100 + gDebugLevelSelect;\n#ifndef VERSION_JP\n        sPlayMarioGreeting = TRUE;\n#endif\n    }\n    return run_level_id_or_demo(level);\n}\n\n/**\n * Game over intro function that handles Mario's game over voice and game start.\n */\ns32 intro_game_over(void) {\n    s32 level = LEVEL_NONE;\n\n#ifndef VERSION_JP\n    if (sPlayMarioGameOver == TRUE) {\n        play_sound(SOUND_MARIO_GAME_OVER, gGlobalSoundSource);\n        sPlayMarioGameOver = FALSE;\n    }\n#endif\n\n    print_intro_text();\n\n    if (gPlayer1Controller->buttonPressed & START_BUTTON) {\n        play_sound(SOUND_MENU_STAR_SOUND, gGlobalSoundSource);\n#if ENABLE_RUMBLE\n        queue_rumble_data(60, 70);\n        func_sh_8024C89C(1);\n#endif\n        // same criteria as intro_regular\n        level = 100 + gDebugLevelSelect;\n#ifndef VERSION_JP\n        sPlayMarioGameOver = TRUE;\n#endif\n    }\n    return run_level_id_or_demo(level);\n}\n\n/**\n * Plays the casual \"It's a me mario\" when the game stars.\n */\ns32 intro_play_its_a_me_mario(void) {\n    set_background_music(0, SEQ_SOUND_PLAYER, 0);\n    play_sound(SOUND_MENU_COIN_ITS_A_ME_MARIO, gGlobalSoundSource);\n    return 1;\n}\n\n/**\n * Update intro functions to handle title screen actions.\n * Returns a level ID after their criteria is met.\n */\ns32 lvl_intro_update(s16 arg, UNUSED s32 unusedArg) {\n    s32 retVar;\n\n    switch (arg) {\n        case LVL_INTRO_PLAY_ITS_A_ME_MARIO:\n            retVar = intro_play_its_a_me_mario();\n            break;\n        case LVL_INTRO_REGULAR:\n            retVar = intro_regular();\n            break;\n        case LVL_INTRO_GAME_OVER:\n            retVar = intro_game_over();\n            break;\n        case LVL_INTRO_LEVEL_SELECT:\n            retVar = intro_level_select();\n            break;\n    }\n    return retVar;\n}\n"
  },
  {
    "path": "src/menu/title_screen.h",
    "content": "#ifndef TITLE_SCREEN_H\n#define TITLE_SCREEN_H\n\n#include <PR/ultratypes.h>\n\n#include \"macros.h\"\n\nenum LevelScriptIntroArgs {\n    LVL_INTRO_PLAY_ITS_A_ME_MARIO,\n    LVL_INTRO_REGULAR,\n    LVL_INTRO_GAME_OVER,\n    LVL_INTRO_LEVEL_SELECT\n};\n\ns32 lvl_intro_update(s16 arg, UNUSED s32 unusedArg);\n\n#endif // TITLE_SCREEN_H\n"
  },
  {
    "path": "text/cn/courses.h",
    "content": "COURSE_ACTS(COURSE_BOB, _(\"　１　炸弹王国\"),\n       _(\"　山顶上的炸弹王\")         , _(\"　喏库诺库的田径锦标赛\")     , _(\"　空中岛屿\"),\n       _(\"　炸弹王国的８枚红色硬币\") , _(\"　长翅膀的马力欧\")           , _(\"　汪汪看守的铁门\"))\n\nCOURSE_ACTS(COURSE_WF, _(\"　２　嘭嘭要塞\"),\n       _(\"　疯狂的嘭嘭王\")           , _(\"　要塞之巅\")                 , _(\"　射向蓝天\"),\n       _(\"　浮岛上的红色硬币\")       , _(\"　空降到摇篮岛\")             , _(\"　破壁摘星\"))\n\nCOURSE_ACTS(COURSE_JRB, _(\"　３　海盗湾\"),\n       _(\"　沉船里的宝藏\")           , _(\"　出来玩吧海鳗\")             , _(\"　海底岩洞的财宝\"),\n       _(\"　浮船上的红色硬币\")       , _(\"　发射到石柱平台\")           , _(\"　穿越急流\"))\n\nCOURSE_ACTS(COURSE_CCM, _(\"　４　酷冰冰雪山\"),\n       _(\"　企鹅的滑梯\")             , _(\"　该回家了企鹅宝宝\")         , _(\"　大企鹅的滑雪比赛\"),\n       _(\"　冰雪中的８枚红色硬币\")   , _(\"　帮助雪人寻找脑袋\")         , _(\"　要用踢墙跳了\"))\n\nCOURSE_ACTS(COURSE_BBH, _(\"　５　大嘘嘘鬼的城堡\"),\n       _(\"　马力欧猎鬼记\")           , _(\"　嘘嘘鬼的旋转木马\")         , _(\"　书房密室\"),\n       _(\"　寻找８枚红色硬币\")       , _(\"　大嘘嘘鬼的阳台\")           , _(\"　密室里的大眼睛\"))\n\nCOURSE_ACTS(COURSE_HMC, _(\"　６　迷失洞窟\"),\n       _(\"　洞穴里的海怪\")           , _(\"　移动平台的红色硬币\")       , _(\"　金属马力欧\"),\n       _(\"　通过毒气洞窟\")           , _(\"　迷宫里的紧急出口\")         , _(\"　小心落下的巨石\"))\n\nCOURSE_ACTS(COURSE_LLL, _(\"　７　岩浆地狱\"),\n       _(\"　融化斗斗帮主\")           , _(\"　打败斗斗帮\")               , _(\"　１５块拼图中的８枚红色硬币\"),\n       _(\"　灼热的滚木陷阱\")         , _(\"　跳进火山\")                 , _(\"　火山里的电梯之旅\"))\n\nCOURSE_ACTS(COURSE_SSL, _(\"　８　酷热沙漠\"),\n       _(\"　还给我星星　　秃鹫\")     , _(\"　金字塔顶的闪光\")           , _(\"　法老的珍宝\"),\n       _(\"　立于四柱之颠\")           , _(\"　为了８枚红色硬币自由飞翔\") , _(\"　金字塔之谜\"))\n\nCOURSE_ACTS(COURSE_DDD, _(\"　９　恐怖船坞\"),\n       _(\"　酷霸王的潜水艇\")         , _(\"　湍流中的宝箱\")             , _(\"　天才的杂技演员\"),\n       _(\"　急流勇进\")               , _(\"　鳐鱼的奖励\")               , _(\"　帽子收藏家\"))\n\nCOURSE_ACTS(COURSE_SL, _(\"１０　雪人王国\"),\n       _(\"　大头雪人\")               , _(\"　寒冷的斗斗\")               , _(\"　冰雕迷宫\"),\n       _(\"　冰冻池塘圆舞曲\")         , _(\"　雪地滑板与红色硬币\")       , _(\"　爱斯基摩人的小屋\"))\n\nCOURSE_ACTS(COURSE_WDW, _(\"１１　水下遗迹\"),\n       _(\"　箭头跳板\")               , _(\"　水城之巅\")                 , _(\"　天空和水下的秘密\"),\n       _(\"　快速电梯——抓紧时间\")     , _(\"　小镇里的８枚红色硬币\")     , _(\"　快速穿过小镇\"))\n\nCOURSE_ACTS(COURSE_TTM, _(\"１２　高高山脉\"),\n       _(\"　攀登高高的山脉\")         , _(\"　神秘的小猴呦奇的笼子\")     , _(\"　蘑菇上的红色硬币\"),\n       _(\"　山间滑道\")               , _(\"　惊险水帘洞\")               , _(\"　孤独的蘑菇\"))\n\nCOURSE_ACTS(COURSE_THI, _(\"１３　小人国大人国\"),\n       _(\"　食人花\")                 , _(\"　大人国之巅\")               , _(\"　喏库喏库又回来了\"),\n       _(\"　小人国的五个秘密\")       , _(\"　花之子的红色硬币\")         , _(\"　蠕动的花之子\"))\n\nCOURSE_ACTS(COURSE_TTC, _(\"１４　摇摆古钟\"),\n       _(\"　跳进笼子\")               , _(\"　小洞和钟摆\")               , _(\"　跳上指针\"),\n       _(\"　时钟的顶楼\")             , _(\"　恰好踏在移动的木块上\")     , _(\"　正点的红色硬币\"))\n\nCOURSE_ACTS(COURSE_RR, _(\"１５　彩虹之旅\"),\n       _(\"　穿梭在彩虹之间的飞行船\") , _(\"　云中城堡\")                 , _(\"　迷宫中收集硬币\"),\n       _(\"　风中摇荡\")               , _(\"　狡猾的三角\")               , _(\"　在彩虹之上的某处\"))\n\nSECRET_STAR(COURSE_BITDW,    _(\"　　　黑暗世界的酷霸王\"))\nSECRET_STAR(COURSE_BITFS,    _(\"　　　火海中的酷霸王\"))\nSECRET_STAR(COURSE_BITS,     _(\"　　　天空之城的酷霸王\"))\nSECRET_STAR(COURSE_PSS,      _(\"　　　公主的秘密滑梯\"))\nSECRET_STAR(COURSE_COTMC,    _(\"　　　金属帽的瀑布石洞\"))\nSECRET_STAR(COURSE_TOTWC,    _(\"　　　飞行帽之塔\"))\nSECRET_STAR(COURSE_VCUTM,    _(\"　　　护城河里的隐身帽\"))\nSECRET_STAR(COURSE_WMOTR,    _(\"　　　飞越彩虹\"))\nSECRET_STAR(COURSE_SA,       _(\"　　　秘密水族馆\"))\nSECRET_STAR(COURSE_CAKE_END, _(\"\"))\n\nCASTLE_SECRET_STARS(_(\"　　　城堡里的隐藏星\"))\n\nEXTRA_TEXT(0, _(\"　城堡中的隐藏星\"))\nEXTRA_TEXT(1, _(\"\"))\nEXTRA_TEXT(2, _(\"\"))\nEXTRA_TEXT(3, _(\"\"))\nEXTRA_TEXT(4, _(\"\"))\nEXTRA_TEXT(5, _(\"\"))\nEXTRA_TEXT(6, _(\"\"))\n"
  },
  {
    "path": "text/cn/dialogs.h",
    "content": "// Parameters: dialog enum ID, (unused), lines per box, left offset, width\n\nDEFINE_DIALOG(DIALOG_000, 1, 6, 30, 200, _(\"\\\n哇！你闯入炸弹\\n\\\n王国的战场啦。\\n\\\n你可以在这个壁\\n\\\n画世界里找到酷\\n\\\n霸王偷走的\\n\\\n力量之星。\\n\\\n　\\n\\\n你可以先去问问\\n\\\n炸弹兵（按[B]键\\n\\\n开始对话），从\\n\\\n他和他的伙伴那\\n\\\n里可以得到帮\\n\\\n助。\\n\\\n　\\n\\\n如果需要察看路\\n\\\n标，面对它，按\\n\\\n[B]键。按[A]键或[B]\\n\\\n键来翻页。你还\\n\\\n可以站在其他人\\n\\\n面前，按[B]键来\\n\\\n和他们对话。\"))\n\nDEFINE_DIALOG(DIALOG_001, 1, 4, 95, 200, _(\"\\\n当心！如果你在\\n\\\n这里瞎逛，随时\\n\\\n有可能被水珠炸\\n\\\n弹炸伤！那些敌\\n\\\n对的炸弹兵非常\\n\\\n好战，他们总是\\n\\\n想方设法来攻击\\n\\\n你。\\n\\\n　\\n\\\n自从炸弹王得到\\n\\\n了力量之星，这\\n\\\n片草原就变得战\\n\\\n火纷飞。你能帮\\n\\\n我们找回力量之\\n\\\n星吗？穿过这座\\n\\\n桥，沿着左上的\\n\\\n小路可以找到炸\\n\\\n弹王。如果你夺\\n\\\n回力量之星，记\\n\\\n得一定要回来看\\n\\\n看我啊。\"))\n\nDEFINE_DIALOG(DIALOG_002, 1, 4, 95, 200, _(\"\\\n嘿！你听着，前\\n\\\n面很危险，一定\\n\\\n要小心噢！听好\\n\\\n我的忠告！\\n\\\n　\\n\\\n穿过前面的两座\\n\\\n桥以后，一定要\\n\\\n小心天上坠落的\\n\\\n水珠炸弹。\\n\\\n　\\n\\\n在山顶，你会找\\n\\\n到炸弹王，他可\\n\\\n是非常强大噢，\\n\\\n千万不要让他\\n\\\n抓到你啊！\\n\\\n　\\n\\\n我们是站在你一\\n\\\n边的炸弹兵，你\\n\\\n随时都可以来找\\n\\\n我们帮忙。\"))\n\nDEFINE_DIALOG(DIALOG_003, 1, 5, 95, 200, _(\"\\\n谢谢，马力欧！\\n\\\n现在的炸弹王只\\n\\\n是一个哑弹了，\\n\\\n哈哈！但是，真\\n\\\n正的战斗才刚刚\\n\\\n开始。\\n\\\n　\\n\\\n其余的力量之星\\n\\\n被其他敌人拿走\\n\\\n了。只有夺回更\\n\\\n多的力量之星，\\n\\\n你才可以打开通\\n\\\n往其它新世界的\\n\\\n大门。我的伙伴\\n\\\n们正在等着你，\\n\\\n别忘了去找他们\\n\\\n啊！他们会为你\\n\\\n准备好大炮的。\"))\n\nDEFINE_DIALOG(DIALOG_004, 1, 3, 95, 200, _(\"\\\n我们是爱好和平\\n\\\n的炸弹兵，所以\\n\\\n我们不用大炮。\\n\\\n　\\n\\\n我们不会介意你\\n\\\n从大炮中发射出\\n\\\n去，我们会为你\\n\\\n准备好这一关卡\\n\\\n的所有大炮。\\n\\\n一路顺风！\"))\n\nDEFINE_DIALOG(DIALOG_005, 1, 4, 30, 200, _(\"\\\n嘿，马力欧。真\\n\\\n的是你打败了炸\\n\\\n弹王吗？厉害！\\n\\\n你一定很强大而\\n\\\n且行动迅速吧？\\n\\\n不过，你到底有\\n\\\n多快呢？可以追\\n\\\n上我吗？我可是\\n\\\n大名鼎鼎的喏库\\n\\\n喏库！哈…哈！\\n\\\n你赢不了我的！\\n\\\n你可以来试试，\\n\\\n我们来打个赌，\\n\\\n你和我来一次赛\\n\\\n跑比赛，终点就\\n\\\n是你打败炸弹王\\n\\\n的那个山顶。你\\n\\\n看怎么样？当我\\n\\\n说“开始”，就\\n\\\n开始比赛！\\n\\\n　\\n\\\n好了，预备…\\n\\\n　\\n\\\n　　开始！　　不\"))\n\nDEFINE_DIALOG(DIALOG_006, 1, 3, 30, 200, _(\"\\\n嘿！！！别当我\\n\\\n是傻瓜。下次记\\n\\\n得跑完全程！等\\n\\\n你真的想比赛的\\n\\\n时候再来找我！\"))\n\nDEFINE_DIALOG(DIALOG_007, 1, 5, 30, 200, _(\"\\\n哈呼…哈呼…\\n\\\n哇！你…真是…\\n\\\n好快…啊！真是\\n\\\n个疯子！这个给\\n\\\n你吧，你赢了！\\n\\\n我愿赌服输。\"))\n\nDEFINE_DIALOG(DIALOG_008, 1, 4, 30, 200, _(\"\\\n千万当心那个满\\n\\\n嘴铁牙带着锁链\\n\\\n的家伙！它很危\\n\\\n险！你靠近它，\\n\\\n按[C]▲键仔细看。\\n\\\n吓坏了，是吗？\\n\\\n再看看木桩上的\\n\\\n那枚红色硬币！\\n\\\n　\\n\\\n当你收集了八枚\\n\\\n这样的硬币后，\\n\\\n桥那边的草地上\\n\\\n就会出现一颗\\n\\\n力量之星。\"))\n\nDEFINE_DIALOG(DIALOG_009, 1, 5, 30, 200, _(\"\\\n哇！好久不见！\\n\\\n你跑得更快了？\\n\\\n还是你更加狡猾\\n\\\n了？还是那些星\\n\\\n星给了你力量？\\n\\\n上次输给你我真\\n\\\n不甘心。现在是\\n\\\n我的主场，我们\\n\\\n再来比比如何？\\n\\\n终点就是风之峡\\n\\\n谷。预备？\\n\\\n　\\n\\\n　　开始！　　不\"))\n\nDEFINE_DIALOG(DIALOG_010, 1, 4, 30, 200, _(\"\\\n你踩了飞行帽的\\n\\\n开关。戴上飞行\\n\\\n帽，你就可以在\\n\\\n空中飞翔了。\\n\\\n　\\n\\\n从现在开始，所\\n\\\n有你找到的红色\\n\\\n砖块里都会跳出\\n\\\n飞行帽。\\n\\\n　\\n\\\n要保存游戏吗？\\n\\\n　\\n\\\n　　是　　　　　　　　否\"))\n\nDEFINE_DIALOG(DIALOG_011, 1, 4, 30, 200, _(\"\\\n你踩了金属帽的\\n\\\n开关。金属帽会\\n\\\n让马力欧无敌。\\n\\\n　\\n\\\n从现在开始，所\\n\\\n有你找到的绿色\\n\\\n砖块里都会跳出\\n\\\n金属帽。\\n\\\n　\\n\\\n要保存游戏吗？\\n\\\n　\\n\\\n　　是　　　　　　　　否\"))\n\nDEFINE_DIALOG(DIALOG_012, 1, 4, 30, 200, _(\"\\\n你踩了隐身帽的\\n\\\n开关。隐身帽会\\n\\\n让马力欧透明，\\n\\\n敌人将看不见马\\n\\\n力欧。\\n\\\n　\\n\\\n从现在开始，所\\n\\\n有你找到的蓝色\\n\\\n砖块里都会跳出\\n\\\n隐身帽。\\n\\\n　\\n\\\n要保存游戏吗？\\n\\\n　\\n\\\n　　是　　　　　　　　否\"))\n\nDEFINE_DIALOG(DIALOG_013, 1, 5, 30, 200, _(\"\\\n你已经夺回了\\n\\\n１００枚硬币！\\n\\\n马力欧从城堡中\\n\\\n得到了更多的力\\n\\\n量。\\n\\\n　\\n\\\n要保存游戏吗？\\n\\\n　\\n\\\n　　是　　　　　　　　否\"))\n\nDEFINE_DIALOG(DIALOG_014, 1, 4, 30, 200, _(\"\\\n哇！又一颗力量\\n\\\n之星！马力欧从\\n\\\n城堡中得到了更\\n\\\n多的力量。\\n\\\n　\\n\\\n要保存游戏吗？\\n\\\n　\\n\\\n　　没错！　　　不\"))\n\nDEFINE_DIALOG(DIALOG_015, 1, 4, 30, 200, _(\"\\\n你可以用拳头来\\n\\\n打败敌人。按[A]\\n\\\n键跳跃，按[B]键\\n\\\n出拳，按[A]键再\\n\\\n按[B]键踢脚。如\\n\\\n果你要把什么东\\n\\\n西举起来，也是\\n\\\n按[B]键，如果要\\n\\\n把它们扔出去，\\n\\\n再按一次[B]键。\"))\n\nDEFINE_DIALOG(DIALOG_016, 1, 3, 30, 200, _(\"\\\n跳上那个闪光的\\n\\\n龟壳，乘着它到\\n\\\n任何你想去的地\\n\\\n方！用它还可以\\n\\\n压碎那些敌人！\"))\n\nDEFINE_DIALOG(DIALOG_017, 1, 4, 30, 200, _(\"\\\n我是这里的统治\\n\\\n者炸弹王。\\n\\\n　\\n\\\n你怎么敢爬上我\\n\\\n的山？你凭什么\\n\\\n站在我炸弹王的\\n\\\n山顶？你虽然侥\\n\\\n幸地躲过了我的\\n\\\n守卫，但永远不\\n\\\n可能逃出我的手\\n\\\n掌心…\\n\\\n　\\n\\\n…你永远不可能\\n\\\n夺走我的力量之\\n\\\n星。马力欧，我\\n\\\n现在就要和你决\\n\\\n斗！\\n\\\n　\\n\\\n如果你要我的力\\n\\\n量之星，你必须\\n\\\n在决斗中证明你\\n\\\n自己。\\n\\\n　\\n\\\n你可以从我身后\\n\\\n抱起我，并把我\\n\\\n摔到这皇室的草\\n\\\n地上吗？我想你\\n\\\n永远也办不到！\"))\n\nDEFINE_DIALOG(DIALOG_018, 1, 4, 30, 200, _(\"\\\n我好困阿…我要\\n\\\n睡了…我可不希\\n\\\n望被别人打扰。\\n\\\n所以，请你走路\\n\\\n轻一点。\"))\n\nDEFINE_DIALOG(DIALOG_019, 1, 2, 30, 200, _(\"\\\n嘘！在走廊里请\\n\\\n放轻你的脚步！\"))\n\nDEFINE_DIALOG(DIALOG_020, 1, 6, 95, 150, _(\"\\\n亲爱的马力欧：\\n\\\n请到城堡来，我\\n\\\n特意为你烤了一\\n\\\n个大蛋糕。\\n\\\n　\\n\\\n　　　　　　桃花公主\"))\n\nDEFINE_DIALOG(DIALOG_021, 1, 5, 95, 200, _(\"\\\n欢迎你啊！\\n\\\n　\\n\\\n这里没人！快滚\\n\\\n吧！不要再回来\\n\\\n了！\\n\\\n　\\n\\\n哇…哈哈…哈！\"))\n\nDEFINE_DIALOG(DIALOG_022, 1, 2, 95, 200, _(\"\\\n你需要一把钥匙\\n\\\n来打开这扇门。\"))\n\nDEFINE_DIALOG(DIALOG_023, 1, 3, 95, 200, _(\"\\\n这把钥匙不行。\\n\\\n也许这是地下室\\n\\\n的钥匙。\"))\n\nDEFINE_DIALOG(DIALOG_024, 1, 5, 95, 200, _(\"\\\n你需要力量之星\\n\\\n来打开这扇门。\\n\\\n打败城堡中某幅\\n\\\n壁画中的敌人，\\n\\\n就能夺回一颗力\\n\\\n量之心。\"))\n\nDEFINE_DIALOG(DIALOG_025, 1, 4, 95, 200, _(\"\\\n打开这扇门需要\\n\\\n３颗力量之星。\\n\\\n你还缺少[%]颗。\"))\n\nDEFINE_DIALOG(DIALOG_026, 1, 4, 95, 200, _(\"\\\n打开这扇门需要\\n\\\n８颗力量之星。\\n\\\n你还缺少[%]颗。\"))\n\nDEFINE_DIALOG(DIALOG_027, 1, 4, 95, 200, _(\"\\\n打开这扇门需要\\n\\\n３０颗力量之星。\\n\\\n你还缺少[%]颗。\"))\n\nDEFINE_DIALOG(DIALOG_028, 1, 4, 95, 200, _(\"\\\n打开这扇门需要\\n\\\n５０颗力量之星。\\n\\\n你还缺少[%]颗。\"))\n\nDEFINE_DIALOG(DIALOG_029, 1, 5, 95, 200, _(\"\\\n要打开通往\\n\\\n“无尽的楼梯”\\n\\\n的门需要７０颗\\n\\\n力量之星。\\n\\\n　\\n\\\n哈…哈…哈！\"))\n\nDEFINE_DIALOG(DIALOG_030, 1, 6, 30, 200, _(\"\\\n　\\n\\\n嗨！现在是朱盖\\n\\\n木兄弟的现场插\\n\\\n播，报道马力欧\\n\\\n的最新进展。他\\n\\\n已经学会了悄悄\\n\\\n接近敌人的技\\n\\\n巧，方法如下：\\n\\\n马力欧为了不让\\n\\\n脚步发出声音，\\n\\\n必须走得非常缓\\n\\\n慢。\\n\\\n　\\n\\\n再次重播以前报\\n\\\n道过的摄像机使\\n\\\n用技巧，按[C]◀键\\n\\\n和[C]▶键从不同角\\n\\\n度来看马力欧，\\n\\\n按[C]▼键从远处观\\n\\\n察马力欧。如果\\n\\\n摄影机不能再移\\n\\\n动了，我们会用\\n\\\n嘟嘟声警告你。\\n\\\n这里是朱盖木兄\\n\\\n弟，现场报道完\\n\\\n毕。\"))\n\nDEFINE_DIALOG(DIALOG_031, 1, 5, 30, 200, _(\"\\\n不可能！你又赢\\n\\\n了我？！我花了\\n\\\n所有的积蓄买了\\n\\\n这双酷霸王１号\\n\\\n火箭跑鞋。我想\\n\\\n我应该把这颗力\\n\\\n量之星交给胜利\\n\\\n者，拿去吧！\\n\\\n马力欧，\\n\\\n恭喜你了！\"))\n\nDEFINE_DIALOG(DIALOG_032, 1, 5, 30, 200, _(\"\\\n如果你拿到了飞\\n\\\n行帽，你就可以\\n\\\n飞行了！带上飞\\n\\\n行帽，来一个三\\n\\\n级跳，在一条直\\n\\\n线上连续跳三次\\n\\\n就可以起飞了。\\n\\\n如果你戴着飞行\\n\\\n帽，从大炮里发\\n\\\n射出来的话，你\\n\\\n可以飞得更高！\\n\\\n在飞行过程中，\\n\\\n按[C]键可以左右\\n\\\n环视，按[Z]键可\\n\\\n以降落。\"))\n\nDEFINE_DIALOG(DIALOG_033, 1, 6, 30, 200, _(\"\\\n你好！你通过传\\n\\\n送管道来到了\\n\\\n桃花公主的城\\n\\\n堡。手柄的使用\\n\\\n很简单：按[A]键\\n\\\n来跳跃，按[B]键\\n\\\n来进攻或者读路\\n\\\n牌，用摇杆来控\\n\\\n制马力欧的行\\n\\\n动。好了，向城\\n\\\n堡出发！\"))\n\nDEFINE_DIALOG(DIALOG_034, 1, 6, 30, 200, _(\"\\\n下午好！这里是\\n\\\n朱盖木兄弟在公\\n\\\n主的城堡外向您\\n\\\n现场报道！\\n\\\n　\\n\\\n马力欧已经到达\\n\\\n了现场，我们将\\n\\\n实况转播他在城\\n\\\n堡找回丢失的力\\n\\\n量之星。\\n\\\n　\\n\\\n作为转播专家，\\n\\\n我们将选择最佳\\n\\\n角度来拍摄，但\\n\\\n你也可以按[C]键\\n\\\n来控制。\\n\\\n　\\n\\\n如果摄影机不能\\n\\\n再移动了，我们\\n\\\n会用嘟嘟声警告\\n\\\n你。你还可以停\\n\\\n下来，按[C]▲键来\\n\\\n观察周围情况。\\n\\\n　\\n\\\n按[A]键继续玩，\\n\\\n按[R]键可以切换\\n\\\n摄影机的视点。\\n\\\n一路上还会有很\\n\\\n多标记来帮你复\\n\\\n习这些操作。\\n\\\n　\\n\\\n这是朱盖木兄弟\\n\\\n向您现场报导！\"))\n\nDEFINE_DIALOG(DIALOG_035, 1, 5, 30, 200, _(\"\\\n这里一共有四个\\n\\\n摄影机，或者说\\n\\\n『[C]』键。按[C]▲键\\n\\\n后，可以使用摇\\n\\\n杆来环视四周。\\n\\\n　\\n\\\n一般来说，你会\\n\\\n从朱盖木的摄影\\n\\\n机来看马力欧。\\n\\\n这是推荐使用的\\n\\\n正常视点。\\n\\\n　\\n\\\n你可以按[C]▶键来\\n\\\n改变角度。按[R]\\n\\\n键，切换到马力\\n\\\n欧的摄影机，摄\\n\\\n影机紧跟在马力\\n\\\n欧的身后。再按\\n\\\n一次[R]键，切换\\n\\\n到朱盖木的视\\n\\\n点。不管用朱盖\\n\\\n木的视点还是马\\n\\\n力欧的视点，按\\n\\\n[C]▼键来从远处观\\n\\\n察马力欧。\"))\n\nDEFINE_DIALOG(DIALOG_036, 1, 5, 30, 200, _(\"\\\n了望台\\n\\\n按[C]▲键环视四\\n\\\n周。别遗漏任何\\n\\\n东西哦。\\n\\\n　\\n\\\n按[R]键切换到马\\n\\\n力欧的视点，再\\n\\\n按一次[R]键切换\\n\\\n回朱盖木的视\\n\\\n点。暂停游戏，\\n\\\n切换到“固定视\\n\\\n点”模式，按[R]\\n\\\n键把视点固定。\\n\\\n去试试看吧！\"))\n\nDEFINE_DIALOG(DIALOG_037, 1, 2, 30, 200, _(\"\\\n我赢了！你输\\n\\\n了！哈哈哈哈！\\n\\\n你不慢，但是我\\n\\\n是更好的滑雪运\\n\\\n动员！\"))\n\nDEFINE_DIALOG(DIALOG_038, 1, 3, 95, 200, _(\"\\\n力量之星起作用\\n\\\n了，门慢慢打开\\n\\\n了。\"))\n\nDEFINE_DIALOG(DIALOG_039, 1, 4, 30, 200, _(\"\\\n炸弹王有旨：\\n\\\n此处禁止参观。\\n\\\n　\\n\\\n我绝对不会放弃\\n\\\n我的力量之星，\\n\\\n它的光芒之下隐\\n\\\n藏着城堡的能\\n\\\n量。\\n\\\n它是酷霸王赏赐\\n\\\n给我的宝物，它\\n\\\n会在我的国土里\\n\\\n保存得很好的！\\n\\\n我绝对不会透露\\n\\\n它的位置。不\\n\\\n过，可能有一点\\n\\\n点提示：在每一\\n\\\n个关卡的开始，\\n\\\n注意力量之星的\\n\\\n名字。\\n\\\n　\\n\\\n——炸弹王\"))\n\nDEFINE_DIALOG(DIALOG_040, 1, 3, 30, 200, _(\"\\\n注意！警告！\\n\\\n下面是冰川的裂\\n\\\n缝。\"))\n\nDEFINE_DIALOG(DIALOG_041, 1, 3, 30, 200, _(\"\\\n我赢了！你输\\n\\\n了！哈哈哈！\\n\\\n　\\n\\\n这就是你和我喏\\n\\\n库喏库比赛的结\\n\\\n果！\\n\\\n　\\n\\\n下次祝你好运！\"))\n\nDEFINE_DIALOG(DIALOG_042, 1, 4, 30, 200, _(\"\\\n当心！独木桥！\\n\\\n小心慢行！\\n\\\n　\\n\\\n你可以跳起抓住\\n\\\n峭壁的边缘，悬\\n\\\n挂在那里；慢慢\\n\\\n地往悬崖边走，\\n\\\n你也能抓住峭壁\\n\\\n的边缘。当你想\\n\\\n放手，可以按[Z]\\n\\\n键或向马力欧身\\n\\\n后的方向拉摇\\n\\\n杆。向上推摇杆\\n\\\n可以使马力欧爬\\n\\\n上峭壁。按[A]键\\n\\\n则是快速爬上峭\\n\\\n壁。\"))\n\nDEFINE_DIALOG(DIALOG_043, 1, 5, 30, 200, _(\"\\\n如果你跳起来并\\n\\\n且按住[A]键，你\\n\\\n就可以挂在高处\\n\\\n的物体上，就像\\n\\\n你抓住天上的飞\\n\\\n鸟一样。\"))\n\nDEFINE_DIALOG(DIALOG_044, 1, 5, 95, 200, _(\"\\\n是谁啊？谁吵醒\\n\\\n我了？现在还是\\n\\\n白天，我要睡\\n\\\n觉！\\n\\\n　\\n\\\n喂！既然我醒\\n\\\n了，就跟我一起\\n\\\n来一次短途飞\\n\\\n行，如何？按住\\n\\\n[A]键抓住我，松\\n\\\n开[A]键，跳下。\\n\\\n只要我还飞得\\n\\\n动，我会带你到\\n\\\n任何你想去的\\n\\\n地方。\\n\\\n好了，我飞的时\\n\\\n候你要抓牢，并\\n\\\n注意我的影子。\"))\n\nDEFINE_DIALOG(DIALOG_045, 1, 6, 95, 200, _(\"\\\n哈呼…我快要飞\\n\\\n不动了。马力\\n\\\n欧，你应该紧急\\n\\\n着陆了，按[A]键\\n\\\n着陆。好吧，\\n\\\n再见了，\\n\\\n　\\n\\\n再见！\"))\n\nDEFINE_DIALOG(DIALOG_046, 1, 5, 30, 200, _(\"\\\n你必须掌握非常\\n\\\n重要的三种跳跃\\n\\\n技巧。\\n\\\n　\\n\\\n首先，试试看三\\n\\\n级跳。\\n\\\n先快跑，然后连\\n\\\n续跳三次，一、\\n\\\n二、三！如果你\\n\\\n掌握了正确的时\\n\\\n机，你就会跳得\\n\\\n非常高。\\n\\\n　\\n\\\n接下来是远跳。\\n\\\n先跑起来，按[Z]\\n\\\n键蹲下，然后按\\n\\\n[A]键起跳，你可\\n\\\n以跳得很远。\\n\\\n　\\n\\\n如果你要做踢墙\\n\\\n跳，按[A]键对着\\n\\\n墙起跳，当你碰\\n\\\n到墙壁时再次起\\n\\\n跳，你就可以跳\\n\\\n得更高。\\n\\\n　\\n\\\n记住了吗？三级\\n\\\n跳，远跳和踢墙\\n\\\n跳。练习、练\\n\\\n习、再练习！\\n\\\n不学会它们，你\\n\\\n是没有希望拿到\\n\\\n所有的力量之星\\n\\\n的。\"))\n\nDEFINE_DIALOG(DIALOG_047, 1, 2, 95, 200, _(\"\\\n嗨！我会为你准\\n\\\n备好大炮！\"))\n\nDEFINE_DIALOG(DIALOG_048, 1, 4, 30, 200, _(\"\\\n雪山顶\\n\\\n小心雪山路滑！\\n\\\n请先去小木屋！\"))\n\nDEFINE_DIALOG(DIALOG_049, 1, 5, 30, 200, _(\"\\\n还记得那个踢墙\\n\\\n跳的技巧吗？那\\n\\\n是你到达非常高\\n\\\n的地方必须要掌\\n\\\n握的技巧。\\n\\\n使用摇杆从一面\\n\\\n墙跳到另一面\\n\\\n墙，掌握好摇杆\\n\\\n的方向来获得弹\\n\\\n跳动力。记住！\\n\\\n熟能生巧啊。\"))\n\nDEFINE_DIALOG(DIALOG_050, 1, 4, 30, 200, _(\"\\\n当你在斜面上\\n\\\n时，按住[Z]键来\\n\\\n蹲下滑行！\\n\\\n或在空中时按[Z]\\n\\\n键来用屁股重击\\n\\\n地面！\\n\\\n如果你站立不\\n\\\n动，蹲下，再起\\n\\\n跳，你就可来一\\n\\\n个后空翻！\\n\\\n记住了吗？\\n\\\n还有，跑动时，\\n\\\n蹲下起跳可以远\\n\\\n跳，或是蹲下，\\n\\\n爬行…\\n\\\n哦，还是慢慢\\n\\\n来，别担心学不\\n\\\n会。\"))\n\nDEFINE_DIALOG(DIALOG_051, 1, 6, 30, 200, _(\"\\\n攀爬非常容易！\\n\\\n如果你跳起来的\\n\\\n时候，碰到树、\\n\\\n旗杆或柱子，你\\n\\\n会自动地抓住它\\n\\\n们。如果再次按\\n\\\n[A]键，就可以跳\\n\\\n下。\\n\\\n　\\n\\\n当你抓住旗杆、\\n\\\n柱子或是树时，\\n\\\n可以左右拔动摇\\n\\\n杆来围绕它们旋\\n\\\n转。当你爬到顶\\n\\\n时，向上推摇杆\\n\\\n可以做一个单手\\n\\\n倒立。以单手倒\\n\\\n立姿势跳下时可\\n\\\n以做一个漂亮的\\n\\\n落地动作。\"))\n\nDEFINE_DIALOG(DIALOG_052, 1, 5, 30, 200, _(\"\\\n原地站立按[Z]键\\n\\\n蹲下，再按[A]键\\n\\\n可以做一个很高\\n\\\n的后空翻。\\n\\\n　\\n\\\n如果你要做侧空\\n\\\n翻，你可以先跑\\n\\\n起来，做一个急\\n\\\n转弯然后起跳。\\n\\\n无论你是做后空\\n\\\n翻还是侧空翻，\\n\\\n你的滞空时间都\\n\\\n很长。\"))\n\nDEFINE_DIALOG(DIALOG_053, 1, 5, 30, 200, _(\"\\\n有些时候，如果\\n\\\n你穿过一个圆环\\n\\\n或发现了一个隐\\n\\\n藏地点，就会有\\n\\\n一个红色的数字\\n\\\n出现。\\n\\\n如果你能触发５\\n\\\n个这样的数字，\\n\\\n就会有一个隐藏\\n\\\n的力量之星出\\n\\\n现。\"))\n\nDEFINE_DIALOG(DIALOG_054, 1, 5, 30, 200, _(\"\\\n欢迎来到冰雪滑\\n\\\n道！准备好！把\\n\\\n摇杆向前推可以\\n\\\n加速，向后拉摇\\n\\\n杆来减速。\"))\n\nDEFINE_DIALOG(DIALOG_055, 1, 4, 30, 200, _(\"\\\n嗨！马力欧，老\\n\\\n兄，最近如何？\\n\\\n你看起来好像雪\\n\\\n滑得不错。我一\\n\\\n看就知道你速度\\n\\\n挺快。不过，你\\n\\\n知道的，我可是\\n\\\n世界滑雪冠军！\\n\\\n你说什么？来场\\n\\\n比赛？\\n\\\n预备…　\\n\\\n　\\n\\\n　　开始！　　不\"))\n\nDEFINE_DIALOG(DIALOG_056, 1, 6, 30, 200, _(\"\\\n啊！你破了我的\\n\\\n纪录！太让人难\\n\\\n以置信了！你真\\n\\\n是太棒了！你终\\n\\\n于证明了你是最\\n\\\n快的。\\n\\\n我没有金牌给\\n\\\n你，但可以给你\\n\\\n这颗星星。\\n\\\n你赢得了它！\"))\n\nDEFINE_DIALOG(DIALOG_057, 1, 4, 30, 200, _(\"\\\n天啊！我的孩\\n\\\n子！你看到我的\\n\\\n孩子了吗？她是\\n\\\n我世界上最最爱\\n\\\n的孩子啊。（人\\n\\\n家都说她长得很\\n\\\n像我）我怎么也\\n\\\n想不起来我把她\\n\\\n拉在什么地方\\n\\\n了。\\n\\\n让我仔细想想，\\n\\\n我停下来抓\\n\\\n鱼，找一些冰\\n\\\n块，我，哦！\\n\\\n　\\n\\\n我还是想不起！\"))\n\nDEFINE_DIALOG(DIALOG_058, 1, 4, 30, 200, _(\"\\\n你找到了我最珍\\n\\\n爱的孩子！你究\\n\\\n竟到哪里去了\\n\\\n啊？孩子！我要\\n\\\n怎么感谢你才好\\n\\\n呢？马力欧。\\n\\\n哦，我有…这个\\n\\\n力量之星。\\n\\\n拿去，请接受我\\n\\\n永远的感激之\\n\\\n情。\"))\n\nDEFINE_DIALOG(DIALOG_059, 1, 4, 30, 200, _(\"\\\n那不是我的孩\\n\\\n子！她根本一点\\n\\\n都不像我！她的\\n\\\n父母肯定担心死\\n\\\n了！\"))\n\nDEFINE_DIALOG(DIALOG_060, 1, 4, 30, 200, _(\"\\\n注意！\\n\\\n潜水必读！\\n\\\n　\\n\\\n如果你在水下潜\\n\\\n的时间太长，你\\n\\\n就会缺氧。\\n\\\n　\\n\\\n这时，你可以回\\n\\\n到水面上换气，\\n\\\n或在水底找一个\\n\\\n气泡或硬币来呼\\n\\\n吸。\\n\\\n按[A]键游泳。按\\n\\\n住[A]键可以慢慢\\n\\\n地稳稳地游。有\\n\\\n节奏地按[A]键可\\n\\\n以加快游泳的速\\n\\\n度。向上推摇\\n\\\n杆，并且按[A]键\\n\\\n来潜水。\\n\\\n　\\n\\\n向下拉摇杆，并\\n\\\n同时按[A]键可以\\n\\\n回到水面。\\n\\\n　\\n\\\n在接近水边的水\\n\\\n面，向下拉摇\\n\\\n杆，再按[A]键可\\n\\\n以跳出水面。\"))\n\nDEFINE_DIALOG(DIALOG_061, 1, 4, 30, 200, _(\"\\\n　\\n\\\n注意！这里的水\\n\\\n很冷。千万不要\\n\\\n在这里游泳！\\n\\\n不是玩笑！\\n\\\n　\\n\\\n——企鹅\"))\n\nDEFINE_DIALOG(DIALOG_062, 1, 3, 30, 200, _(\"\\\n藏在绿色砖块里\\n\\\n的就是神奇的金\\n\\\n属帽。\\n\\\n戴上它，你就可\\n\\\n以不怕火烧，也\\n\\\n不用担心敌人的\\n\\\n攻击，甚至在水\\n\\\n里你都不用呼\\n\\\n吸。\\n\\\n　\\n\\\n但唯一的缺点就\\n\\\n是：你不能游泳\\n\\\n了！\"))\n\nDEFINE_DIALOG(DIALOG_063, 1, 5, 30, 200, _(\"\\\n隐身帽就藏在蓝\\n\\\n色的砖块里。如\\n\\\n果你戴上它，眼\\n\\\n睛先生也会被你\\n\\\n迷惑，因为谁也\\n\\\n看不见你。\\n\\\n就连大嘘嘘鬼也\\n\\\n会被你骗过去。\\n\\\n你还可以穿过一\\n\\\n些秘密的墙壁。\"))\n\nDEFINE_DIALOG(DIALOG_064, 1, 5, 30, 200, _(\"\\\n当你戴上了从红\\n\\\n色砖块里得到的\\n\\\n飞行帽时，你就\\n\\\n可以通过三级跳\\n\\\n起飞。\\n\\\n用摇杆控制马力\\n\\\n欧的方向，向下\\n\\\n拉摇杆可以上\\n\\\n升，向上推摇杆\\n\\\n下降。按[Z]键着\\n\\\n陆。\"))\n\nDEFINE_DIALOG(DIALOG_065, 1, 6, 30, 200, _(\"\\\n接下来是游泳\\n\\\n课！\\n\\\n按[A]键来蛙泳，\\n\\\n如果你按键频率\\n\\\n合适，就可以游\\n\\\n得很快。\\n\\\n　\\n\\\n按住[A]键可以打\\n\\\n水前进，虽然\\n\\\n慢，但很稳。向\\n\\\n上推摇杆可以潜\\n\\\n水，向下拉则是\\n\\\n回到水面上。如\\n\\\n果要跳出水面，\\n\\\n则是向下拉住摇\\n\\\n杆，然后按[A]键\\n\\\n就可以了。\\n\\\n　\\n\\\n怎么样，很简单\\n\\\n吧！\\n\\\n　\\n\\\n别忘了，马力欧\\n\\\n在水底是不能呼\\n\\\n吸的，如果能量\\n\\\n表的值很低的时\\n\\\n候，记得回到水\\n\\\n面上让马力欧喘\\n\\\n一下气。\\n\\\n　\\n\\\n还有一件事情：\\n\\\n你不能够打开水\\n\\\n下的门。\"))\n\nDEFINE_DIALOG(DIALOG_066, 1, 5, 30, 200, _(\"\\\n马力欧，是我，\\n\\\n桃花公主！\\n\\\n　\\n\\\n你一定要小心！\\n\\\n酷霸王非常残\\n\\\n忍！他会喷出恐\\n\\\n怖的火焰把你烧\\n\\\n成焦炭。你要绕\\n\\\n到他的后面，按\\n\\\n[B]键抓住它的尾\\n\\\n巴。然后旋转摇\\n\\\n杆，你转得越\\n\\\n快，你就可以把\\n\\\n他扔得越远。\\n\\\n　\\n\\\n按[C]键环视四周。\\n\\\n你必须把酷霸王\\n\\\n扔到四个角落的\\n\\\n炸弹上。瞄准好\\n\\\n后，再按[B]键把\\n\\\n酷霸王扔出去。\\n\\\n　\\n\\\n祝你好运，马力\\n\\\n欧，我们的命运\\n\\\n就靠你了。\"))\n\nDEFINE_DIALOG(DIALOG_067, 1, 5, 30, 200, _(\"\\\n你的运气真是太\\n\\\n好了，马力欧！\\n\\\n桃花公主并不在\\n\\\n这里。哈哈哈！\\n\\\n好了，来吧，看\\n\\\n看你能不能抓住\\n\\\n我的尾巴！象你\\n\\\n这样的懦夫不可\\n\\\n能把我扔出去！\\n\\\n决不可能！\\n\\\n哈哈。\"))\n\nDEFINE_DIALOG(DIALOG_068, 1, 5, 30, 200, _(\"\\\n这里是岩浆地\\n\\\n狱！\\n\\\n如果你不小心被\\n\\\n火烧到，或是掉\\n\\\n进了岩浆，你会\\n\\\n被烫得满地乱\\n\\\n跳。但你仍然可\\n\\\n以控制马力欧。\\n\\\n只要你保持冷\\n\\\n静。\"))\n\nDEFINE_DIALOG(DIALOG_069, 1, 6, 30, 200, _(\"\\\n有时，你会在壁\\n\\\n画世界的尽头撞\\n\\\n上一些看不见的\\n\\\n墙壁，如果你正\\n\\\n在飞行的话，就\\n\\\n会被反弹回来。\"))\n\nDEFINE_DIALOG(DIALOG_070, 1, 5, 30, 200, _(\"\\\n你可以随时从壁\\n\\\n画的世界返回到\\n\\\n城堡。让马力欧\\n\\\n停下来后，\\n\\\n按ＳＴＡＲＴ键\\n\\\n暂停游戏，选择\\n\\\n“退出关卡”就\\n\\\n可以了。\\n\\\n　\\n\\\n你并不需要在一\\n\\\n个关卡中找到所\\n\\\n有的力量之星再\\n\\\n到另一个关卡中\\n\\\n去。\\n\\\n　\\n\\\n你可以先到其它\\n\\\n地方去找力量之\\n\\\n星，然后再回来\\n\\\n拿比较难获得的\\n\\\n力量之星，这时\\n\\\n你也会变得熟练\\n\\\n多了。\\n\\\n　\\n\\\n每当你找到一颗\\n\\\n力量之星时，关\\n\\\n于下一颗星的提\\n\\\n示就会显示到那\\n\\\n一关卡的开始画\\n\\\n面上。\\n\\\n　\\n\\\n当然，你可以去\\n\\\n寻找任何一颗力\\n\\\n量之星，并不一\\n\\\n定要去找提示所\\n\\\n指的那一颗。\"))\n\nDEFINE_DIALOG(DIALOG_071, 1, 3, 30, 200, _(\"\\\n前方危险！\\n\\\n当心奇怪的烟！\\n\\\n不要吸气！如果\\n\\\n感到眩晕，跑到\\n\\\n更高处去呼吸呼\\n\\\n吸新鲜的空气！\\n\\\n圆圈：躲避所\\n\\\n箭头：出入口\"))\n\nDEFINE_DIALOG(DIALOG_072, 1, 5, 30, 200, _(\"\\\n前面有大风！把\\n\\\n帽子戴紧！以免\\n\\\n被风吹走，否\\n\\\n则，你必须在这\\n\\\n座山找回你的帽\\n\\\n子。\"))\n\nDEFINE_DIALOG(DIALOG_073, 1, 4, 95, 200, _(\"\\\n啊哈，朋友，这\\n\\\n里有我沉没的财\\n\\\n宝。如果你想得\\n\\\n到它的话，你要\\n\\\n按照正确的顺序\\n\\\n打开箱子。是什\\n\\\n么顺序呢？你知\\n\\\n道吗？\\n\\\n　\\n\\\n我是决不会说出　\\n\\\n来的。\\n\\\n　\\n\\\n——船长\"))\n\nDEFINE_DIALOG(DIALOG_074, 1, 5, 30, 200, _(\"\\\n你可以抓住悬崖\\n\\\n或一些建筑物的\\n\\\n边缘，并悬挂在\\n\\\n上面。\\n\\\n　\\n\\\n如果想跳下来，\\n\\\n向马力欧背对的\\n\\\n方向拉摇杆，或\\n\\\n按[Z]键。\\n\\\n要爬上悬崖，可\\n\\\n以向上推摇杆或\\n\\\n按[A]键，这样可\\n\\\n以快速地爬上悬\\n\\\n崖。\"))\n\nDEFINE_DIALOG(DIALOG_075, 1, 5, 30, 200, _(\"\\\n马力欧！！我的\\n\\\n城堡陷入了危\\n\\\n机。我知道这是\\n\\\n酷霸王干的，而\\n\\\n且我知道你是唯\\n\\\n一可以解救我们\\n\\\n的人！\\n\\\n城堡里的门已经\\n\\\n被酷霸王封起来\\n\\\n了，只有力量之\\n\\\n星的能量才能打\\n\\\n开它们。\\n\\\n　\\n\\\n但是城堡里还有\\n\\\n一些秘密通道，\\n\\\n酷霸王还没有发\\n\\\n现它们。\\n\\\n　\\n\\\n其中一个通道就\\n\\\n在这个房间里，\\n\\\n而且那里还有一\\n\\\n颗力量之星！\\n\\\n　\\n\\\n马力欧，去找到\\n\\\n这颗隐藏的力量\\n\\\n之星吧，它会帮\\n\\\n助你的。请你一\\n\\\n定要救救我们，\\n\\\n帮我们找回所有\\n\\\n的力量之星，把\\n\\\n我们从这个恐怖\\n\\\n的监狱中解救出\\n\\\n来。\"))\n\nDEFINE_DIALOG(DIALOG_076, 1, 6, 30, 200, _(\"\\\n感谢力量之星的\\n\\\n能量，城堡又恢\\n\\\n复了生机。马力\\n\\\n欧，你一定要给\\n\\\n酷霸王最后一击。\\n\\\n　\\n\\\n现在，让我告诉\\n\\\n你一些关于城堡\\n\\\n的秘密吧。在那\\n\\\n些有镜子的房间\\n\\\n里，仔细的去找\\n\\\n一些在镜子中不\\n\\\n反射的东西。等\\n\\\n你去水城的时\\n\\\n候，你可以来一\\n\\\n个超高跳，跳进\\n\\\n壁画当中。猜猜\\n\\\n看，我们会看见\\n\\\n什么？\"))\n\nDEFINE_DIALOG(DIALOG_077, 1, 2, 150, 200, _(\"\\\n你要去撞击这里\\n\\\n的柱子，这是法\\n\\\n令！\"))\n\nDEFINE_DIALOG(DIALOG_078, 1, 5, 30, 200, _(\"\\\n你可以按[Z]键用\\n\\\n力撞击地面上的\\n\\\n蓝色硬币砖块去\\n\\\n获得蓝色硬币。\\n\\\n一个蓝色硬币相\\n\\\n当于五个黄色硬\\n\\\n币。但是你的动\\n\\\n作一定要快，否\\n\\\n则它就会消失，\\n\\\n那就太可惜了。\"))\n\nDEFINE_DIALOG(DIALOG_079, 1, 4, 30, 200, _(\"\\\n哇哦！放我走！\\n\\\n嘻嘻！我只是开\\n\\\n个玩笑而已。难\\n\\\n道你没有点幽默\\n\\\n感吗？\\n\\\n但是，你听我\\n\\\n说，我们做个交\\n\\\n易吧。如果你放\\n\\\n我走的话，我可\\n\\\n以给你一个难得\\n\\\n的宝物。\\n\\\n　\\n\\\n怎么样？接受我\\n\\\n的条件吗？\\n\\\n　\\n\\\n　　放　　　　　　　　不放\"))\n\nDEFINE_DIALOG(DIALOG_080, 1, 1, 30, 200, _(\"\\\n咿嘿嘿嘿！\"))\n\nDEFINE_DIALOG(DIALOG_081, 1, 4, 30, 200, _(\"\\\n神秘的水位。\\n\\\n答案在哪里呢？\\n\\\n这座城市非常欢\\n\\\n迎那些当他们进\\n\\\n入时有深度的访\\n\\\n问者。\"))\n\nDEFINE_DIALOG(DIALOG_082, 1, 4, 30, 200, _(\"\\\n带好你的帽子\\n\\\n啊，如果你丢了\\n\\\n帽子，你会很容\\n\\\n易受到敌人的伤\\n\\\n害。\\n\\\n　\\n\\\n如果你真的丢了\\n\\\n帽子的话，你要\\n\\\n在这个关卡中找\\n\\\n到它。它就在你\\n\\\n丢掉的地方。\\n\\\n哦，孩子，桃花\\n\\\n公主的情况看起\\n\\\n来不太好，她现\\n\\\n在还被困在城堡\\n\\\n的某面墙里。你\\n\\\n一定要帮助她\\n\\\n啊。你知道墙里\\n\\\n的世界有很多敌\\n\\\n人吗？真的！酷\\n\\\n霸王的军队也在\\n\\\n那里。哦，这个\\n\\\n给你吧，我早为\\n\\\n你准备好了。\"))\n\nDEFINE_DIALOG(DIALOG_083, 1, 6, 30, 200, _(\"\\\n这个钟有一点奇\\n\\\n怪啊，你跳进去\\n\\\n的时候，注意那\\n\\\n个大指针的位\\n\\\n置。噢，你瞧我\\n\\\n发现了什么！这\\n\\\n里！马力欧，快\\n\\\n来啊！\"))\n\nDEFINE_DIALOG(DIALOG_084, 1, 3, 30, 200, _(\"\\\n哦！放开我，你\\n\\\n这个家伙！我要\\n\\\n迟到了！已经这\\n\\\n么晚了！我必须\\n\\\n要赶快了！什\\n\\\n么？这个闪闪发\\n\\\n光的东西？是我\\n\\\n的！我是发现\\n\\\n者！收藏者！失\\n\\\n主！啊！晚了，\\n\\\n来不及了，迟到\\n\\\n了！哦！拿去！\\n\\\n那是酷霸王的礼\\n\\\n物！\\n\\\n好了，快让我走\\n\\\n吧！我有约会！\\n\\\n我不能迟到！\"))\n\nDEFINE_DIALOG(DIALOG_085, 1, 5, 30, 200, _(\"\\\n你在这个房子里\\n\\\n是不会有机会\\n\\\n的。如果你走出\\n\\\n这里一步，你就\\n\\\n会得到……盗墓者\\n\\\n…奖章　\"))\n\nDEFINE_DIALOG(DIALOG_086, 1, 3, 30, 200, _(\"\\\n一直绕圈跑可以\\n\\\n让一些坏家伙眼\\n\\\n花缭乱。\"))\n\nDEFINE_DIALOG(DIALOG_087, 1, 4, 30, 200, _(\"\\\n不光是圣诞老人\\n\\\n才可以钻进烟\\n\\\n囱，你也可以，\\n\\\n请进吧。\\n\\\n　\\n\\\n——小屋主人\"))\n\nDEFINE_DIALOG(DIALOG_088, 1, 5, 30, 200, _(\"\\\n工作电梯\\n\\\n如果要从这里出\\n\\\n去，抓住左边的\\n\\\n柱子，小心地滑\\n\\\n下去。\"))\n\nDEFINE_DIALOG(DIALOG_089, 1, 5, 95, 200, _(\"\\\n两条路都充满了\\n\\\n危险。小心啊。\\n\\\n如果你现在还不\\n\\\n会远跳，啧啧，\\n\\\n走右边的一条路\\n\\\n吧。\\n\\\n　\\n\\\n右：工作电梯　\\n\\\n　　　　　　浓雾迷宫\\n\\\n　\\n\\\n左：黑洞\\n\\\n　　　　　　地下湖\\n\\\n　\\n\\\n红色圆圈：\\n\\\n　　　　　　　　电梯２\\n\\\n　　　　　　　　地下湖\\n\\\n　　　　　\\n\\\n箭头：你在这里\"))\n\nDEFINE_DIALOG(DIALOG_090, 1, 6, 30, 200, _(\"\\\n哇哈哈哈！\\n\\\n你终于落入我的\\n\\\n陷阱了！我果然\\n\\\n没有猜错。我警\\n\\\n告你，『朋友』！\\n\\\n当心你的脚步！\"))\n\nDEFINE_DIALOG(DIALOG_091, 2, 2, 30, 200, _(\"\\\n危险！\\n\\\n狂风！\\n\\\n但你可以乘风而\\n\\\n行。\"))\n\nDEFINE_DIALOG(DIALOG_092, 1, 5, 30, 200, _(\"\\\n又是你！马力\\n\\\n欧！你又来烦我\\n\\\n了！难道你没看\\n\\\n见我刚刚开心一\\n\\\n会儿吗？快点把\\n\\\n那些星星还给\\n\\\n我！我的手下们\\n\\\n需要它们！\\n\\\n哈哈哈！\"))\n\nDEFINE_DIALOG(DIALOG_093, 1, 5, 30, 200, _(\"\\\n马力欧！又是\\n\\\n你！正好，我正\\n\\\n想吐火烤烤什么\\n\\\n东西！你的星星\\n\\\n对我根本没有作\\n\\\n用！你的朋友们\\n\\\n都被困在墙壁里\\n\\\n了…\\n\\\n你再也看不到桃\\n\\\n花公主了！\\n\\\n哈哈哈哈！\"))\n\nDEFINE_DIALOG(DIALOG_094, 1, 4, 30, 200, _(\"\\\n如何顺利地跑上\\n\\\n斜坡呢？还记不\\n\\\n记得远跳？跑起\\n\\\n来，按[Z]键再起\\n\\\n跳！\"))\n\nDEFINE_DIALOG(DIALOG_095, 1, 4, 30, 200, _(\"\\\n你可以站在一个\\n\\\n标记的前面，按\\n\\\n[B]键来读上面的\\n\\\n内容。\\n\\\n　\\n\\\n当你要和别人讲\\n\\\n话时，站在他们\\n\\\n面前，按[B]键。\\n\\\n一定要夺回这一\\n\\\n关卡酷霸王偷走\\n\\\n的力量之星。\"))\n\nDEFINE_DIALOG(DIALOG_096, 1, 4, 30, 200, _(\"\\\n从这里开始，路\\n\\\n会变得很窄。当\\n\\\n心点。任何人都\\n\\\n不可以去山顶。\\n\\\n如果你不想有什\\n\\\n么意外的话，记\\n\\\n得放慢你的脚\\n\\\n步，轻轻地走，\\n\\\n千万别吵醒正在\\n\\\n睡觉的人。\"))\n\nDEFINE_DIALOG(DIALOG_097, 1, 5, 30, 200, _(\"\\\n别做胆小鬼啊。\\n\\\n如果有人要推你\\n\\\n的话，用力反击\\n\\\n吧。这可是一对\\n\\\n一的较量，失败\\n\\\n者是不会有好下\\n\\\n场的。\"))\n\nDEFINE_DIALOG(DIALOG_098, 1, 2, 95, 200, _(\"\\\n快到这儿来…　\\n\\\n呵…呵呵…　\"))\n\nDEFINE_DIALOG(DIALOG_099, 1, 5, 95, 200, _(\"\\\n哦呵呵…　\\n\\\n你是我的了。\\n\\\n哼哼！\\n\\\n我可以安然无恙\\n\\\n地穿过这面墙，\\n\\\n你能吗？\\n\\\n呵呵…呵呵……　\"))\n\nDEFINE_DIALOG(DIALOG_100, 1, 3, 95, 200, _(\"\\\n哈，我拦住它\\n\\\n啦！是我的啦！\\n\\\n嘿，嘿，嘿嘿！\"))\n\nDEFINE_DIALOG(DIALOG_101, 1, 3, 95, 200, _(\"\\\n啊欠，走…吧…　\\n\\\n你让我透不过气\\n\\\n了，咳呵，我被\\n\\\n你害苦了！这顶\\n\\\n帽子？哦，好\\n\\\n吧，拿去吧。这\\n\\\n顶帽子真酷，不\\n\\\n过，我会还回来\\n\\\n的。我觉得我比\\n\\\n你更合适戴它。\\n\\\n呵呵…呵呵…　\"))\n\nDEFINE_DIALOG(DIALOG_102, 1, 5, 30, 200, _(\"\\\n嘘，这些嘘嘘鬼\\n\\\n非常非常害羞，\\n\\\n如果你看着它们，\\n\\\n它们就会消失。\\n\\\n但如果你转过\\n\\\n身，它们就会重\\n\\\n新出现。在它们\\n\\\n消失时攻击它们\\n\\\n是没用的，你要\\n\\\n悄悄地绕到它们\\n\\\n身后才能打到它\\n\\\n们。\"))\n\nDEFINE_DIALOG(DIALOG_103, 1, 4, 95, 200, _(\"\\\n四个塔上一定有\\n\\\n一个塔在发光…\\n\\\n在那个塔的顶\\n\\\n端将可以看到\\n\\\n灯光在闪烁。\"))\n\nDEFINE_DIALOG(DIALOG_104, 1, 5, 30, 200, _(\"\\\n在你面前暗色的\\n\\\n星星只是一个\\n\\\n『星星的标记』。\\n\\\n当你收集到所有\\n\\\n８枚红色硬币，\\n\\\n星星就在这里出\\n\\\n现。\"))\n\nDEFINE_DIALOG(DIALOG_105, 1, 3, 95, 200, _(\"\\\n准备发射！来\\n\\\n吧，跳进大炮！\\n\\\n　\\n\\\n你可以用四门大\\n\\\n炮到达有星星的\\n\\\n空中岛屿，用摇\\n\\\n杆瞄准，然后按\\n\\\n[A]键发射。\\n\\\n　\\n\\\n如果你够敏捷，\\n\\\n抓住小树或杆\\n\\\n子，你便可以登\\n\\\n上小岛了。\"))\n\nDEFINE_DIALOG(DIALOG_106, 1, 2, 95, 200, _(\"\\\n准备发射！来吧，\\n\\\n跳进大炮！\"))\n\nDEFINE_DIALOG(DIALOG_107, 1, 3, 95, 200, _(\"\\\n鬼，鬼…　\\n\\\n不要…　\\n\\\n…死了！\\n\\\n呵呵…呵呵…　\\n\\\n你能…活着离\\n\\\n开这里吗？\"))\n\nDEFINE_DIALOG(DIALOG_108, 1, 2, 95, 200, _(\"\\\n轰！这个城堡的\\n\\\n恶作剧之王大嘘\\n\\\n嘘鬼来啦。\\n\\\n哈哈…哈哈…　\"))\n\nDEFINE_DIALOG(DIALOG_109, 1, 4, 95, 200, _(\"\\\n哦…不…　\\n\\\n跟你说说我丧失\\n\\\n身体的经历吧，\\n\\\n我的身体已经融\\n\\\n化掉了！有没有\\n\\\n人拖你寻找脑\\n\\\n袋？我一定可以\\n\\\n得到一个新的身\\n\\\n体的！哦，我的\\n\\\n脸可能会冻成这\\n\\\n样！\"))\n\nDEFINE_DIALOG(DIALOG_110, 1, 5, 95, 200, _(\"\\\n我需要在肩上架\\n\\\n个好脑袋。你知\\n\\\n道谁需要强壮的\\n\\\n身体？如果你知\\n\\\n道的话，我就跟\\n\\\n你走。\"))\n\nDEFINE_DIALOG(DIALOG_111, 1, 4, 95, 200, _(\"\\\n太好了！多完美\\n\\\n的身体啊！这是\\n\\\n给你的礼物，我\\n\\\n担保它能使你觉\\n\\\n得更温暖。\"))\n\nDEFINE_DIALOG(DIALOG_112, 1, 4, 30, 200, _(\"\\\n尽量收集更多的\\n\\\n硬币！它们能补\\n\\\n充你的能量值。\\n\\\n　\\n\\\n你可以检查一下\\n\\\n你在１５个关卡\\n\\\n里一共收集了多\\n\\\n少硬币。\\n\\\n　\\n\\\n你也可以触摸旋\\n\\\n转的心来恢复能\\n\\\n量。\\n\\\n　\\n\\\n你越快穿过心，\\n\\\n就能恢复越多的\\n\\\n能量。\"))\n\nDEFINE_DIALOG(DIALOG_113, 1, 6, 30, 200, _(\"\\\n红色，绿色，蓝\\n\\\n色的砖块里藏有\\n\\\n很特殊的帽子。\\n\\\n踩在隐秘关卡里\\n\\\n的开关上就可以\\n\\\n激活这些藏有帽\\n\\\n子的砖块。\"))\n\nDEFINE_DIALOG(DIALOG_114, 1, 5, 95, 200, _(\"\\\n真让人气愤！我\\n\\\n们帮你建造房屋\\n\\\n和城堡，铺设道\\n\\\n路，你却还在我\\n\\\n们身上散步。你\\n\\\n说过一声谢谢\\n\\\n吗？没有！\\n\\\n好吧，既然你不\\n\\\n准备从我身上拿\\n\\\n开你的臭脚，那\\n\\\n我就要把你压\\n\\\n碎！\\n\\\n来吧，懦夫！\"))\n\nDEFINE_DIALOG(DIALOG_115, 1, 5, 95, 200, _(\"\\\n不，又被压碎\\n\\\n了！我只是一块\\n\\\n垫脚的石头而\\n\\\n已，不是沙砾。\\n\\\n嗯，我投降，你\\n\\\n赢了，拿去吧！\"))\n\nDEFINE_DIALOG(DIALOG_116, 1, 5, 95, 200, _(\"\\\n什…么…　\\n\\\n你就是打败炸弹\\n\\\n王的小东西？你\\n\\\n也许能很快打败\\n\\\n我，但是如果你\\n\\\n想抓住酷霸王的\\n\\\n尾巴，你就必须\\n\\\n更快！我想我的\\n\\\n手下会从你这儿\\n\\\n得到一些教训，\\n\\\n马力欧，我会遵\\n\\\n守诺言，这是你\\n\\\n的星星。\\n\\\n　\\n\\\n如果你想再见到\\n\\\n我，你可以从菜\\n\\\n单里选择这颗星\\n\\\n星。再见啦！！\"))\n\nDEFINE_DIALOG(DIALOG_117, 1, 2, 95, 200, _(\"\\\n谁…在…走？\\n\\\n谁…打破了…\\n\\\n封印？\\n\\\n谁…吵醒了…\\n\\\n老人？\\n\\\n我们不喜欢光…　\\n\\\n哦哦哦哦…　\\n\\\n我们不喜欢入侵\\n\\\n者…　\\n\\\n战斗吧…　\\n\\\n来吧…\\n\\\n来吧…！\"))\n\nDEFINE_DIALOG(DIALOG_118, 1, 6, 95, 200, _(\"\\\n哦…哦…哦…\\n\\\n怎么啦？\\n\\\n我们怎么像鹅卵\\n\\\n石一样被压碎\\n\\\n了？你太强大\\n\\\n了！你统治了古\\n\\\n老的金字塔。\\n\\\n今天…　\\n\\\n你获得了力量之\\n\\\n星…　\\n\\\n我们沉睡在…　\\n\\\n在黑暗中…　\"))\n\nDEFINE_DIALOG(DIALOG_119, 1, 6, 30, 200, _(\"\\\n啊，我太粗心。\\n\\\n这出乎了我的意\\n\\\n料…但我仍然拥\\n\\\n有星星的力量，\\n\\\n拥有桃花公主。\\n\\\n哈哈…哈哈…　\\n\\\n你不会再从我这\\n\\\n儿得到任何星\\n\\\n星！我跟你没\\n\\\n完，不过，我先\\n\\\n放你走，你会为\\n\\\n此付出代价的！\"))\n\nDEFINE_DIALOG(DIALOG_120, 1, 4, 30, 200, _(\"\\\n噢！我输了？星\\n\\\n星的力量打败了\\n\\\n我…　\\n\\\n这次打个平手。\\n\\\n下次，我的状态\\n\\\n会很好的。\\n\\\n　\\n\\\n如果你现在想要\\n\\\n见你可爱的公\\n\\\n主，到塔的最顶\\n\\\n层来吧。\\n\\\n我等着你！\\n\\\n哈哈哈哈…　\"))\n\nDEFINE_DIALOG(DIALOG_121, 1, 5, 30, 200, _(\"\\\n不，不可能！\\n\\\n你打败了我，马\\n\\\n力欧？！我给了\\n\\\n那些军队力量，\\n\\\n但是它们正在消\\n\\\n失！啊！我看到\\n\\\n和平正在重回世\\n\\\n界！我无法忍\\n\\\n受！哼…一切还\\n\\\n没有结束…　\\n\\\n\\n\\\n来，我的军队！\\n\\\n让我们一起来看\\n\\\n看这场战斗的结\\n\\\n局！\\n\\\n哈哈…\"))\n\nDEFINE_DIALOG(DIALOG_122, 1, 4, 30, 200, _(\"\\\n黑洞\\n\\\n右：工作电梯　\\n\\\n　　　　　　浓雾迷宫\\n\\\n　\\n\\\n左：黑洞\\n\\\n　　　　　　地下湖\"))\n\nDEFINE_DIALOG(DIALOG_123, 1, 4, 30, 200, _(\"\\\n金属洞穴\\n\\\n右：通向瀑布\\n\\\n左：金属帽开关\"))\n\nDEFINE_DIALOG(DIALOG_124, 1, 4, 30, 200, _(\"\\\n工作电梯\\n\\\n危险！\\n\\\n请仔细阅读使用\\n\\\n说明！\\n\\\n电梯会朝激活的\\n\\\n箭头方向行驶。\"))\n\nDEFINE_DIALOG(DIALOG_125, 1, 3, 30, 200, _(\"\\\n迷失洞窟出口\\n\\\n危险！已关闭。\\n\\\n请往回走。\"))\n\nDEFINE_DIALOG(DIALOG_126, 2, 3, 30, 200, _(\"\\\n上：黑洞\\n\\\n右：工作电梯\\n\\\n　　　　　　迷失洞窟\"))\n\nDEFINE_DIALOG(DIALOG_127, 3, 4, 30, 200, _(\"\\\n地下湖泊\\n\\\n右：金属洞穴\\n\\\n左：废弃矿洞\\n\\\n　　　　（关闭）\\n\\\n　\\n\\\n这里住着一条温\\n\\\n顺的海龙王，敲\\n\\\n打它的后背可以\\n\\\n让它低下头。可\\n\\\n别成为它的午餐\\n\\\n噢！\"))\n\nDEFINE_DIALOG(DIALOG_128, 1, 4, 95, 200, _(\"\\\n你和我战斗必须\\n\\\n尊敬我！你把我\\n\\\n扔到圈外是违反\\n\\\n皇室规则的。\"))\n\nDEFINE_DIALOG(DIALOG_129, 1, 5, 30, 200, _(\"\\\n欢迎来到护城河\\n\\\n里的隐身帽关\\n\\\n卡！当你踏上帽\\n\\\n子的开关，所有\\n\\\n的蓝色砖块就会\\n\\\n变成实心。当你\\n\\\n戴上隐身帽时，\\n\\\n你会消失，并且\\n\\\n可以躲避敌人和\\n\\\n穿越许多障碍。\\n\\\n快去试一试吧！\"))\n\nDEFINE_DIALOG(DIALOG_130, 1, 5, 30, 200, _(\"\\\n欢迎来到金属帽\\n\\\n的瀑布石洞关\\n\\\n卡！一旦你踩上\\n\\\n金属帽开关，绿\\n\\\n色的砖块会变成\\n\\\n实心的。当你戴\\n\\\n上金属帽后，你\\n\\\n就可以在水下漫\\n\\\n步了！快去试一\\n\\\n试吧！\"))\n\nDEFINE_DIALOG(DIALOG_131, 1, 5, 30, 200, _(\"\\\n欢迎来到飞行帽\\n\\\n之塔关卡！踩上\\n\\\n位于彩虹塔顶的\\n\\\n红色开关，所有\\n\\\n的红色砖块将变\\n\\\n为实心的。\\n\\\n　\\n\\\n快戴上飞行帽！\\n\\\n来个三级跳，按\\n\\\n[Z]键着陆。\\n\\\n　\\n\\\n就象你驾驶飞机\\n\\\n一样，遥杆向下\\n\\\n拉时，飞机上\\n\\\n升；向前推时，\\n\\\n飞机下降。\"))\n\nDEFINE_DIALOG(DIALOG_132, 1, 4, 30, 200, _(\"\\\n哇哦，马力欧，\\n\\\n你不许耍赖哦！\\n\\\n不能抄近路哦！\\n\\\n现在，我知道你\\n\\\n懂道理。这次，\\n\\\n你被取消资格！\\n\\\n下次，我们再公\\n\\\n平竞争！\"))\n\nDEFINE_DIALOG(DIALOG_133, 1, 6, 30, 200, _(\"\\\n见到你真高兴！\\n\\\n公主…我…这么\\n\\\n说吧，大家都被\\n\\\n困在城堡的墙壁\\n\\\n里了。\\n\\\n　\\n\\\n酷霸王偷走了城\\n\\\n堡的力量之星，\\n\\\n他正利用城堡之\\n\\\n星的力量创造自\\n\\\n己的壁画和墙壁\\n\\\n里的世界。\\n\\\n　\\n\\\n请快去找力量之\\n\\\n星！一旦找到它\\n\\\n们，你可以借助\\n\\\n它们的力量打开\\n\\\n被酷霸王封印的\\n\\\n门。\\n\\\n　\\n\\\n第一层有四个房\\n\\\n间。你可以从有\\n\\\n炸弹人画像的房\\n\\\n间开始。那是唯\\n\\\n一没有被他封印\\n\\\n的房间。当你收\\n\\\n集到八颗力量之\\n\\\n星，你就可以打\\n\\\n开那个有颗巨大\\n\\\n星星的门。公主\\n\\\n就在那等你呢！\"))\n\nDEFINE_DIALOG(DIALOG_134, 1, 5, 30, 200, _(\"\\\n力量之星的名称\\n\\\n也是找到它们的\\n\\\n提示哦。它们会\\n\\\n在每关开始时出\\n\\\n现。\\n\\\n　\\n\\\n你不用按顺序收\\n\\\n集。如果你不去\\n\\\n找一些特殊的星\\n\\\n星，你就会找不\\n\\\n到一些其它的星\\n\\\n星、敌人或特殊\\n\\\n的物品。\\n\\\n等你收集到一些\\n\\\n力量之星后，你\\n\\\n就可以尝试其它\\n\\\n关卡了。\\n\\\n我们都要指望你\\n\\\n了！\"))\n\nDEFINE_DIALOG(DIALOG_135, 1, 5, 30, 200, _(\"\\\n我亲眼看见酷霸\\n\\\n王偷走了星星！\\n\\\n　\\n\\\n他在每个关卡里\\n\\\n藏了六颗星星，\\n\\\n但是除非你激活\\n\\\n了几个特殊帽子\\n\\\n的开关，你才能\\n\\\n找到全部的星\\n\\\n星。\\n\\\n　\\n\\\n如果你想去见见\\n\\\n那些被你打败的\\n\\\n敌人，只要选择\\n\\\n你从他那里得到\\n\\\n的星星的名字就\\n\\\n可以了。\"))\n\nDEFINE_DIALOG(DIALOG_136, 1, 6, 30, 200, _(\"\\\n哇哦！你已经获\\n\\\n得到那么多力量\\n\\\n之星啦？\\n\\\n加油，马力欧！\\n\\\n我打赌你一定马\\n\\\n上就可以带我们\\n\\\n离开这里了！\\n\\\n　\\n\\\n尽管这样，你还\\n\\\n是要小心点。酷\\n\\\n霸王他们一伙人\\n\\\n设了许多陷阱。\\n\\\n听我的话：当你\\n\\\n要恢复能量时，\\n\\\n记得去收集硬\\n\\\n币。黄色的可以\\n\\\n恢复一格能量；\\n\\\n红色的可以恢复\\n\\\n两格，蓝色的可\\n\\\n以恢复五格哦！\\n\\\n　\\n\\\n只要压碎蓝色硬\\n\\\n币的砖块，蓝色\\n\\\n硬币就会出现。\\n\\\n　\\n\\\n当然，如果你从\\n\\\n很高的地方掉下\\n\\\n来，你也可以在\\n\\\n着陆时重击地面\\n\\\n来减轻伤害。\"))\n\nDEFINE_DIALOG(DIALOG_137, 1, 6, 30, 200, _(\"\\\n谢谢，马力欧！\\n\\\n因为你夺回了力\\n\\\n量之星，把酷霸\\n\\\n王从这里赶了出\\n\\\n去，城堡恢复了\\n\\\n能量。\\n\\\n哦，顺便问一\\n\\\n下，你收集硬币\\n\\\n了吗？在这１５\\n\\\n个关卡里，每收\\n\\\n集到１００枚硬\\n\\\n币就会出现一个\\n\\\n特殊的星星哦！\"))\n\nDEFINE_DIALOG(DIALOG_138, 1, 3, 30, 200, _(\"\\\n下面：地下湖\\n\\\n左面：黑洞\\n\\\n右面：迷失洞窟\\n\\\n　　　　　　　（已关闭）\"))\n\nDEFINE_DIALOG(DIALOG_139, 1, 6, 30, 200, _(\"\\\n上面：自动电梯\\n\\\n电梯自动启动，\\n\\\n到达预定关卡。\\n\\\n它也会自动消\\n\\\n失！。\"))\n\nDEFINE_DIALOG(DIALOG_140, 1, 6, 30, 200, _(\"\\\n电梯区域：\\n\\\n右边：迷失洞窟\\n\\\n　　　　　　　　　入口\\n\\\n左边：黑洞入口\\n\\\n　　　　　　　　　电梯　１\\n\\\n箭头：你在这里\"))\n\nDEFINE_DIALOG(DIALOG_141, 1, 5, 150, 200, _(\"\\\n你找到了１颗被\\n\\\n盗的力量之星！\\n\\\n现在你可以打开\\n\\\n城堡里一些被封\\n\\\n印的门了。\\n\\\n试一试二楼公主\\n\\\n的房间和一楼的\\n\\\n有嘭嘭要塞壁画\\n\\\n的房间。\\n\\\n酷霸王那伙人仍\\n\\\n然在不断强大之\\n\\\n中，所以你不能\\n\\\n掉以轻心。快来\\n\\\n救我们吧，马力\\n\\\n欧！继续寻找力\\n\\\n量之星！\"))\n\nDEFINE_DIALOG(DIALOG_142, 1, 5, 150, 200, _(\"\\\n你已经夺回了３\\n\\\n颗力量之星啦！\\n\\\n现在你可以打开\\n\\\n有３标记的大门\\n\\\n了。\\n\\\n　\\n\\\n如果你乐意，你\\n\\\n可以从打开封印\\n\\\n的关卡回来。前\\n\\\n面的敌人很难\\n\\\n缠，所以一定小\\n\\\n心！\"))\n\nDEFINE_DIALOG(DIALOG_143, 1, 6, 150, 200, _(\"\\\n你夺回了８颗力\\n\\\n量之星了哦！现\\n\\\n在你可以打开那\\n\\\n个有大星星的门\\n\\\n了！但是酷霸王\\n\\\n也在那里…你听\\n\\\n见公主的声音了\\n\\\n吗？\"))\n\nDEFINE_DIALOG(DIALOG_144, 1, 6, 150, 200, _(\"\\\n你夺回了３０颗\\n\\\n力量之星了哦！\\n\\\n现在你可以打开\\n\\\n那个有大星星的\\n\\\n门了！但在你走\\n\\\n之前，那些事情\\n\\\n做的怎么样了？\\n\\\n　\\n\\\n你有没有把那两\\n\\\n个圆柱压下去？\\n\\\n你也没有把你的\\n\\\n帽子给丢了吧？\\n\\\n如果掉了，你就\\n\\\n不得不到秃鹫强\\n\\\n哥那里去把它找\\n\\\n回来！\\n\\\n他们说酷霸王已\\n\\\n经潜出大海，进\\n\\\n入地下了。你有\\n\\\n没有把他困住？\"))\n\nDEFINE_DIALOG(DIALOG_145, 1, 6, 150, 200, _(\"\\\n你夺回了５０颗\\n\\\n力量之星啊！\\n\\\n现在快去三楼打\\n\\\n开星星之门。\\n\\\n酷霸王就在那里\\n\\\n等你。\\n\\\n　\\n\\\n你找到了所有的\\n\\\n金属帽开关了\\n\\\n么？红的，绿的\\n\\\n和蓝的？你从彩\\n\\\n色砖块里得到的\\n\\\n帽子很有用的。\\n\\\n抓紧吧，快去第\\n\\\n三层吧。\"))\n\nDEFINE_DIALOG(DIALOG_146, 1, 6, 150, 200, _(\"\\\n你已经找到了\\n\\\n７０颗力量之星\\n\\\n了！你揭开了无\\n\\\n尽楼梯的秘密，\\n\\\n真是多亏了你\\n\\\n——酷霸王就在最\\n\\\n上面！去吧！\\n\\\n去迎接你最后的\\n\\\n挑战吧！\"))\n\nDEFINE_DIALOG(DIALOG_147, 1, 5, 30, 200, _(\"\\\n你用了帽子砖块\\n\\\n了吗？说真的，\\n\\\n你应该用用哦！\\n\\\n　\\n\\\n你要按下城堡隐\\n\\\n藏关卡的彩色的\\n\\\n帽子开关，才能\\n\\\n使它们都变成实\\n\\\n心的，这样你才\\n\\\n可以撞碎。\\n\\\n想去隐藏关卡\\n\\\n吗？重新获得一\\n\\\n些力量之星就行。\\n\\\n　\\n\\\n帽子砖块非常有\\n\\\n用！红色的是飞\\n\\\n行帽；绿的是金\\n\\\n属帽；蓝的是隐\\n\\\n形帽。\"))\n\nDEFINE_DIALOG(DIALOG_148, 1, 6, 30, 200, _(\"\\\n雪人之山就在前\\n\\\n面了！当心啊！\\n\\\n不要企图用三级\\n\\\n跳越过冰块射手\\n\\\n哦。\\n\\\n　\\n\\\n如果你掉进了冰\\n\\\n水池塘，你的能\\n\\\n量会迅速减少，\\n\\\n而且不会自动恢\\n\\\n复。\\n\\\n　　　　　　　－雪人\"))\n\nDEFINE_DIALOG(DIALOG_149, 1, 3, 30, 200, _(\"\\\n欢迎来到桃花公\\n\\\n主的秘密滑道！\\n\\\n这里有藏着一颗\\n\\\n连酷霸王都找不\\n\\\n到的星星哦！\\n\\\n在下滑过程中，\\n\\\n遥杆向前加速，\\n\\\n向后当然是减速\\n\\\n啦。如果你滑得\\n\\\n够快的话，你会\\n\\\n赢得星星哦！\"))\n\nDEFINE_DIALOG(DIALOG_150, 1, 5, 30, 200, _(\"\\\n哇啊啊啊！你淹\\n\\\n了我的房子啊！\\n\\\n为什么啊？看看\\n\\\n这里乱糟糟的！\\n\\\n我该怎么办啊？\\n\\\n　\\n\\\n屋顶蹋了，地板\\n\\\n淹了…该怎么办\\n\\\n啊，该怎么办\\n\\\n啊？呜…呜…　\\n\\\n我要疯了！！！\\n\\\n当我得到这星星\\n\\\n时，所有的事情\\n\\\n都开始变糟了…\\n\\\n这颗亮晶晶的星\\n\\\n星，让我感觉怪\\n\\\n怪的…　\"))\n\nDEFINE_DIALOG(DIALOG_151, 1, 4, 30, 200, _(\"\\\n我再也受不了\\n\\\n了！你踩在我湿\\n\\\n透的身上，现在\\n\\\n我真的要疯了！\\n\\\n哇啊…　\"))\n\nDEFINE_DIALOG(DIALOG_152, 1, 3, 30, 200, _(\"\\\n哇！叔叔！\\n\\\n叔叔！\\n\\\n好吧，我给！\\n\\\n拿着这颗星！\\n\\\n哦！\\n\\\n我感觉好多了，\\n\\\n不再需要它了。\\n\\\n如果在晚上，我\\n\\\n可以透过天花板\\n\\\n看见许多星星。\\n\\\n它们使我感到…\\n\\\n平静。任何时候\\n\\\n都欢迎你回来看\\n\\\n看我。\"))\n\nDEFINE_DIALOG(DIALOG_153, 1, 4, 30, 200, _(\"\\\n嗨！谁在那儿？\\n\\\n什么东西在我身\\n\\\n上爬啊！\\n\\\n难道是冰蚂蚁？\\n\\\n还是雪跳蚤？\\n\\\n不管这么多了，\\n\\\n无论是什么，把\\n\\\n我惹烦了！我想\\n\\\n我要把它吹走！\"))\n\nDEFINE_DIALOG(DIALOG_154, 1, 5, 30, 200, _(\"\\\n抓紧你的帽子！\\n\\\n如果丢了它，你\\n\\\n会很容易受伤\\n\\\n噢。万一不小心\\n\\\n丢失了帽子，一\\n\\\n定要马上回头去\\n\\\n寻找啊！\\n\\\n公主可还被困在\\n\\\n墙壁中的某处。\\n\\\n快，快去找啊，\\n\\\n马力欧！\\n\\\n　\\n\\\n噢，你知道在墙\\n\\\n里和壁画中都隐\\n\\\n藏着秘密世界，\\n\\\n是吧？\"))\n\nDEFINE_DIALOG(DIALOG_155, 1, 6, 30, 200, _(\"\\\n谢谢力量之星的\\n\\\n能量，城堡里又\\n\\\n出现了生机。\\n\\\n快，马力欧，是\\n\\\n时候教训酷霸王\\n\\\n了！\\n\\\n　\\n\\\n这里，让我告诉\\n\\\n你一些关于城堡\\n\\\n的事吧。在那个\\n\\\n有镜子的房间，\\n\\\n一定要仔细注意\\n\\\n没有被镜子反射\\n\\\n到的物品。还有\\n\\\n当你要去水城的\\n\\\n时候，你可以高\\n\\\n高跃起进入壁\\n\\\n画。\"))\n\nDEFINE_DIALOG(DIALOG_156, 1, 5, 30, 200, _(\"\\\n那个钟里的世界\\n\\\n太奇怪了，注意\\n\\\n那个大指针的位\\n\\\n置。\"))\n\nDEFINE_DIALOG(DIALOG_157, 1, 5, 30, 200, _(\"\\\n当心！千万不要\\n\\\n被流沙吞没了。\\n\\\n　\\n\\\n如果你陷入沙\\n\\\n中，就不能起跳\\n\\\n了。流沙没过你\\n\\\n的头，你就会被\\n\\\n闷死。\\n\\\n　\\n\\\n黑暗地区可是一\\n\\\n个无底的深渊！\"))\n\nDEFINE_DIALOG(DIALOG_158, 1, 6, 30, 200, _(\"\\\n１　如果你做连\\n\\\n续的跳跃，而且\\n\\\n按键时间合适的\\n\\\n话，你会越跳越\\n\\\n高。如果你正在\\n\\\n快跑时做连续跳\\n\\\n跃，而且按键时\\n\\\n间合适的话，你\\n\\\n就可以做一个三\\n\\\n级跳远了。\\n\\\n　\\n\\\n２　先往墙壁上\\n\\\n跳，在碰到墙壁\\n\\\n时，再次起跳，\\n\\\n你就可以来一个\\n\\\n踢墙跳，用它可\\n\\\n以反弹到更高的\\n\\\n地方。\"))\n\nDEFINE_DIALOG(DIALOG_159, 1, 6, 30, 200, _(\"\\\n如果你先站立不\\n\\\n动，按[Z]键下\\n\\\n蹲，然后起跳，\\n\\\n就可来一个后空\\n\\\n翻。要来一个远\\n\\\n跳，先跑起来，\\n\\\n按下[Z]键，再起\\n\\\n跳。\"))\n\nDEFINE_DIALOG(DIALOG_160, 1, 4, 30, 200, _(\"\\\n要使用身体滑行\\n\\\n攻击，在快跑中\\n\\\n按下[B]键。要想\\n\\\n在滑行中站住，\\n\\\n按[A]或者[B]键。\"))\n\nDEFINE_DIALOG(DIALOG_161, 1, 4, 30, 200, _(\"\\\n　\\n\\\n马力欧！！！\\n\\\n那真的是你吗？\\n\\\n从上一次冒险到\\n\\\n现在，我们都没\\n\\\n有见过面啊！他\\n\\\n们告诉我，如果\\n\\\n我等在这里就有\\n\\\n可能见到你，不\\n\\\n过，我真的准备\\n\\\n要放弃了！\\n\\\n　\\n\\\n天啊？你真的击\\n\\\n败了酷霸王吗？\\n\\\n而且你夺回了所\\n\\\n有的力量之星，\\n\\\n救出了公主？\\n\\\n　\\n\\\n我就知道你一定\\n\\\n能行的！\\n\\\n　\\n\\\n现在我要告诉你\\n\\\n一个非常特别的\\n\\\n消息。\\n\\\n　\\n\\\n十分感谢你玩\\n\\\n神游马力欧！虽\\n\\\n然游戏结束了，\\n\\\n但是欢乐还没有\\n\\\n结束。下面是我\\n\\\n们为你准备的大\\n\\\n礼物，希望你能\\n\\\n够喜欢！\\n\\\n　\\n\\\n　\\n\\\n神游马力欧小组\"))\n\nDEFINE_DIALOG(DIALOG_162, 1, 4, 30, 200, _(\"\\\n不，不，不！怎\\n\\\n么又是你！你有\\n\\\n没有看见，我现\\n\\\n在真的很忙？\\n\\\n　\\n\\\n我真的没有时间\\n\\\n跟你争论什么关\\n\\\n于星星的事。\\n\\\n　\\n\\\n这个，拿去吧，\\n\\\n我现在要马上走\\n\\\n了。让我走吧！\"))\n\nDEFINE_DIALOG(DIALOG_163, 1, 5, 30, 200, _(\"\\\n　\\n\\\n不…！你这次真\\n\\\n的把我给打败\\n\\\n了，马力欧！我\\n\\\n真的不能容忍我\\n\\\n竟然输给你了。\\n\\\n　\\n\\\n我的部队真是群\\n\\\n废物！他们已经\\n\\\n交出了所有的力\\n\\\n量之星！什么？\\n\\\n有１２０颗？\\n\\\n　\\n\\\n真是不可思议，\\n\\\n啊！有一些我也\\n\\\n无法找到？？！\\n\\\n！！！\\n\\\n　\\n\\\n现在，我看到世\\n\\\n界终于重归和平\\n\\\n了…噢！我好恨\\n\\\n和平啊！我不想\\n\\\n看到这个，我要\\n\\\n离开这儿！\\n\\\n　\\n\\\n你等着，我会回\\n\\\n来的。到那时，\\n\\\n要让你的摇杆冒\\n\\\n烟！\\n\\\n　\\n\\\n哇哈哈哈哈！\"))\n\nDEFINE_DIALOG(DIALOG_164, 1, 4, 30, 200, _(\"\\\n马力欧！你怎么\\n\\\n了？我已经很久\\n\\\n没有上滑道了，\\n\\\n都快不成样子\\n\\\n了。\\n\\\n　\\n\\\n我一直在期待和\\n\\\n一位滑雪老手来\\n\\\n进行一场精彩的\\n\\\n比赛。\\n\\\n　\\n\\\n你想和我比吗？\\n\\\n　\\n\\\n预备…\\n\\\n　\\n\\\n　　开始！　　不\"))\n\nDEFINE_DIALOG(DIALOG_165, 1, 5, 30, 200, _(\"\\\n我对那些由于绕\\n\\\n着柱子跑而昏倒\\n\\\n的人决不承担任\\n\\\n何责任。\"))\n\nDEFINE_DIALOG(DIALOG_166, 1, 4, 30, 200, _(\"\\\n我外出训练去\\n\\\n了，会很快回来\\n\\\n的。\\n\\\n　\\n\\\n你以后再来吧。\\n\\\n　\\n\\\n——喏库喏库\"))\n\nDEFINE_DIALOG(DIALOG_167, 1, 4, 30, 200, _(\"\\\n公主的城堡就在\\n\\\n前面。\\n\\\n　\\n\\\n按[A]键跳跃，按\\n\\\n[Z]键蹲下，按[B]\\n\\\n键出拳、读标记\\n\\\n或者抓起东西。\\n\\\n再按[B]键扔掉你\\n\\\n刚刚抓起的东\\n\\\n西。\"))\n\nDEFINE_DIALOG(DIALOG_168, 1, 5, 30, 200, _(\"\\\n嗨！撞掉它！这\\n\\\n已经是你第二次\\n\\\n抓住我了。现\\n\\\n在，你是在找它\\n\\\n吧，马力欧！\"))\n\nDEFINE_DIALOG(DIALOG_169, 1, 4, 30, 200, _(\"\\\n不准进来！\\n\\\n就是说你！\\n\\\n哇哈哈哈！\\n\\\n　\\n\\\n任何私自进洞的\\n\\\n人，一定会遇到\\n\\\n灾难的。\\n\\\n　\\n\\\n——船长\"))\n"
  },
  {
    "path": "text/de/courses.h",
    "content": "COURSE_ACTS(COURSE_BOB, _(\" 1 BOB-OMBS BOMBENBERG\"),\n       _(\"BESIEGE KÖNIG BOB-OMB!\")        , _(\"BESIEGE DEN SCHNELLEN KOOPA!\")  , _(\"FLIEGE ZUR SCHWEBENDEN INSEL!\"),\n       _(\"FINDE DIE 8 ROTEN MÜNZEN!\")     , _(\"DURCHFLIEGE ALLE MÜNZENRINGE!\") , _(\"BEFREIE DEN KETTENHUND!\"))\n\nCOURSE_ACTS(COURSE_WF, _(\" 2 WUMMPS WUCHTWALL\"),\n       _(\"BESIEGE KÖNIG WUMMP!\")          , _(\"STEIGE AUF DIE BERGFESTUNG!\")   , _(\"FLIEG INS BLAUE!\"),\n       _(\"FINDE DIE 8 ROTEN MÜNZEN!\")     , _(\"WECKE DIE EULE!\")               , _(\"ZERSTÖRE DIE FELSWAND!\"))\n\nCOURSE_ACTS(COURSE_JRB, _(\" 3 PIRATENBUCHT PANIK\"),\n       _(\"TAUCHE IN DAS SCHIFFSWRACK!\")   , _(\"LOCKE DEN AAL KANO HERAUS!\")    , _(\"TAUCHE ZUR SCHATZHÖHLE!\"),\n       _(\"FINDE DIE 8 ROTEN MÜNZEN!\")     , _(\"FLIEGE ZU DEN STEINSÄULEN!\")    , _(\"LAUFE DURCH DEN STRUDEL!\"))\n\nCOURSE_ACTS(COURSE_CCM, _(\" 4 BIBBERBERG BOB\"),\n       _(\"RUTSCHE AUF DER EISBAHN!\")      , _(\"FINDE DAS PINGUINBABY!\")        , _(\"BESIEGE DEN SCHNELLEN PINGUIN!\"),\n       _(\"FINDE DIE 8 ROTEN MÜNZEN!\")     , _(\"BAUE EINEN SCHNEEMANN!\")        , _(\"DENKE AN DEN WANDSPRUNG!\"))\n\nCOURSE_ACTS(COURSE_BBH, _(\" 5 BIG BOOS BURG\"),\n       _(\"GEHE AUF GEISTERJAGD!\")         , _(\"BESUCHE BIG BOOS KARUSSEL!\")    , _(\"LÖSE DAS BÜCHEREI-RÄTSEL!\"),\n       _(\"FINDE DIE 8 ROTEN MÜNZEN!\")     , _(\"KLETTERE AUF BIG BOOS BALKON!\") , _(\"FINDE DAS AUGE IM GEHEIMRAUM!\"))\n\nCOURSE_ACTS(COURSE_HMC, _(\" 6 GRÜNE GIFTGROTTE\"),\n       _(\"KLETTERE AUF NESSIS RÜCKEN!\")   , _(\"FINDE DIE 8 ROTEN MÜNZEN!\")     , _(\"LAUFE AUF DEM GRUND DES SEES!\"),\n       _(\"DURCHSUCHE DAS NEBELLABYRINTH!\"), _(\"SUCHE IM NEBEL DEN NOTAUSGANG!\"), _(\"ACHTE AUF ROLLENDE FELSEN!\"))\n\nCOURSE_ACTS(COURSE_LLL, _(\" 7 LAVA LAGUNE\"),\n       _(\"WERFE BIG BULLY IN DIE LAVA!\")  , _(\"WERFE DIE BULLIES IN DIE LAVA!\"), _(\"FINDE DIE 8 ROTEN MÜNZEN!\"),\n       _(\"TANZE AUF DEM BAUMSTAMM!\")      , _(\"ERKUNDE DEN VULKAN!\")           , _(\"GEWINNE IM VULKAN AN HÖHE!\"))\n\nCOURSE_ACTS(COURSE_SSL, _(\" 8 WOBIWABA WÜSTE\"),\n       _(\"FOLGE DEM RIESENGEIER!\")        , _(\"BRINGE LICHT IN DIE PYRAMIDE!\") , _(\"BEGEBE DICH IN DIE PYRAMIDE!\"),\n       _(\"LANDE AUF ALLEN VIER SÄULEN!\")  , _(\"FINDE DIE 8 ROTEN MÜNZEN!\")     , _(\"LÖSE DAS PYRAMIDENPUZZLE!\"))\n\nCOURSE_ACTS(COURSE_DDD, _(\" 9 WILDE WASSERWERFT\"),\n       _(\"ENTERE BOWSERS U-BOOT!\")        , _(\"ÖFFNE DIE TRUHEN!\")             , _(\"SPRINGE ZU DEN ROTEN MÜNZEN!\"),\n       _(\"SCHWIMME DURCH DIE RINGE!\")     , _(\"FOLGE DEM FISCH!\")              , _(\"VEREINE DIE MÜTZEN!\"))\n\nCOURSE_ACTS(COURSE_SL, _(\"10 FROSTBEULEN FRUST\"),\n       _(\"ERKLIMME DEN KOPF!\")            , _(\"SPIELE MIT BAD BULLY!\")         , _(\"WAGE DICH INS EIS!\"),\n       _(\"GEHE ZUM EISSEE!\")              , _(\"FINDE DIE 8 ROTEN MÜNZEN!\")     , _(\"SCHAU IM IGLU NACH!\"))\n\nCOURSE_ACTS(COURSE_WDW, _(\"11 ATLANTIS AQUARIA\"),\n       _(\"FOLGE DEN BLAUEN PFEILEN!\")     , _(\"SUCHE NACH DER SPITZE DER STADT!\"), _(\"ERFORSCHE DIE HÖHEN UND TIEFEN!\"),\n       _(\"BEEILE DICH - EXPRESSAUFZUG!\")  , _(\"FINDE DIE 8 ROTEN MÜNZEN!\")     , _(\"BEACHTE DAS ZEITLIMIT!\"))\n\nCOURSE_ACTS(COURSE_TTM, _(\"12 FLIEGENPILZ FIASKO\"),\n       _(\"ERKLIMME DEN BERG!\")            , _(\"ERKUNDE DEN AFFENKÄFIG!\")       , _(\"FINDE DIE 8 ROTEN MÜNZEN!\"),\n       _(\"ERFORSCHE DIE STEILWAND!\")      , _(\"HALTE AUSSCHAU AUF DER BRÜCKE!\"), _(\"SUCHE DEN EINSAMEN PILZ!\"))\n\nCOURSE_ACTS(COURSE_THI, _(\"13 GULLIVER GUMBA\"),\n       _(\"PFLÜCKE DIE SCHNAPP-PIRANHA!\")  , _(\"BEGIB DICH ZUR SPITZE DER INSEL!\"), _(\"TRETE NOCH EINMAL GEGEN KOOPA AN!\"),\n       _(\"LÖSE DIE 5 ITTY BITTY-RÄTSEL!\") , _(\"FINDE DIE 8 ROTEN MÜNZEN!\")     , _(\"DREHE WIGGLER IM KREIS!\"))\n\nCOURSE_ACTS(COURSE_TTC, _(\"14 TICK TACK TRAUMA\"),\n       _(\"ROLLE DEN KÄFIG!\")              , _(\"ACHTE AUF DAS PENDEL!\")         , _(\"LASS DIR DEN WEG ZEIGEN!\"),\n       _(\"STAMPFE MÄCHTIG AUF!\")          , _(\"SPRINGE AUF DEN SCHWEBEBALKEN!\"), _(\"FINDE DIE 8 ROTEN MÜNZEN!\"))\n\nCOURSE_ACTS(COURSE_RR, _(\"15 REGENBOGEN RASEREI\"),\n       _(\"REISE AUF DEN REGENBÖGEN!\")     , _(\"SUCHE DAS HAUS AM HIMMEL!\")     , _(\"FINDE DIE 8 ROTEN MÜNZEN!\"),\n       _(\"LASS DICH VON DER BRISE TRAGEN!\"), _(\"ÜBERWINDE DIE MACHT DER DREIECKE!\"), _(\"SCHAU DIR DEN REGENBOGEN AN!\"))\n\nSECRET_STAR(COURSE_BITDW, _(\"   BOWSERS SCHATTENWELT\"))\nSECRET_STAR(COURSE_BITFS, _(\"   BOWSERS LAVASEE\"))\nSECRET_STAR(COURSE_BITS, _(\"   BOWSERS LUFTSCHLOSS\"))\nSECRET_STAR(COURSE_PSS, _(\"   TOADSTOOLS RUTSCHBAHN\"))\nSECRET_STAR(COURSE_COTMC, _(\"   GRÜNER SCHALTERPALAST\"))\nSECRET_STAR(COURSE_TOTWC, _(\"   ROTER SCHALTERPALAST\"))\nSECRET_STAR(COURSE_VCUTM, _(\"   BLAUER SCHALTERPALAST\"))\nSECRET_STAR(COURSE_WMOTR, _(\"   REGENBOGEN FEUERWERK\"))\nSECRET_STAR(COURSE_SA, _(\"   VERSTECKTES AQUARIUM\"))\nSECRET_STAR(COURSE_CAKE_END, _(\"\"))\n\nCASTLE_SECRET_STARS(_(\"   GEHEIME STERNE\"))\n\nEXTRA_TEXT(0, _(\"EIN GEHEIMER STERN DES SCHLOSSES!\"))\nEXTRA_TEXT(1, _(\"\"))\nEXTRA_TEXT(2, _(\"\"))\nEXTRA_TEXT(3, _(\"\"))\nEXTRA_TEXT(4, _(\"\"))\nEXTRA_TEXT(5, _(\"\"))\nEXTRA_TEXT(6, _(\"\"))\n"
  },
  {
    "path": "text/de/dialogs.h",
    "content": "// Parameters: dialog enum ID, (unused), lines per box, left offset, width\n\nDEFINE_DIALOG(DIALOG_000, 1, 6, 30, 200, _(\"\\\nDu bist inmitten der\\n\\\nKampfarena gelandet.\\n\\\nSei vorsichtig!\\n\\\nDie von Bowser erbeuteten\\n\\\nPower-Sterne findest Du\\n\\\nin den Wandgemälden.\\n\\\nSprich zuerst mit Buddy,\\n\\\nder rosa Bombe.\\n\\\nDrücke [B], um Dich mit ihr\\n\\\nzu unterhalten. Sie und\\n\\\nihre Kolleginnen werden\\n\\\nDich sicher unterstützen.\\n\\\nDrücke [B], um Schilder\\n\\\nzu lesen. Mit [A] oder [B]\\n\\\nkannst Du die Nachrichten\\n\\\numblättern. In anderen\\n\\\nKursen triffst Du weitere\\n\\\nFreunde, die Dir helfen.\"))\n\nDEFINE_DIALOG(DIALOG_001, 1, 4, 95, 200, _(\"\\\nBewege Dich vorsichtig\\n\\\ndurch das Gelände, damit\\n\\\nDu kein Opfer der\\n\\\nWasserbomben wirst.\\n\\\nDie gegnerischen Bob-\\n\\\nOmbs lieben den Kampf\\n\\\nund erfinden immer neue\\n\\\nAngriffsvarianten.\\n\\\nSie terrorisieren uns,\\n\\\nseit ihr König den\\n\\\nPower-Stern in die\\n\\\nHände bekommen hat.\\n\\\nHilf uns, den Stern\\n\\\nzurückzuholen! Gehe zur\\n\\\nSpitze des Berges, um\\n\\\nKönig Bob-Omb zu finden.\\n\\\nKehre zu mir zurück,\\n\\\nwenn es Dir gelungen ist,\\n\\\nihm den Stern abzujagen.\\n\\\nViel Glück...\"))\n\nDEFINE_DIALOG(DIALOG_002, 1, 4, 95, 200, _(\"\\\nHallo! Sei wachsam, Du\\n\\\nbefindest Dich inmitten\\n\\\neiner Schlacht. Aber ich\\n\\\ngebe Dir ein paar Tips:\\n\\\nÜberquere die beiden\\n\\\nBrücken und achte auf\\n\\\nherunterfallende\\n\\\nWasserbomben.\\n\\\nKönig Bob-Omb ist\\n\\\näußerst gefährlich.\\n\\\nLaß Dich nicht von\\n\\\nihm erwischen.\\n\\\nWir sind die wahren\\n\\\nBob-Ombs und werden Dir\\n\\\nhelfen. Sprich mit uns,\\n\\\nwann immer Du möchtest.\"))\n\nDEFINE_DIALOG(DIALOG_003, 1, 5, 95, 200, _(\"\\\nHerzlichen Dank, Mario!\\n\\\nDu hast es diesem\\n\\\nTyrannen gezeigt. Aber\\n\\\nDein Kampf hat gerade\\n\\\nerst begonnen.\\n\\\nAndere Fieslinge besitzen\\n\\\nweitere Sterne, die Dir\\n\\\ndie Wege zu neuen Welten\\n\\\nöffnen. Allerdings mußt\\n\\\nDu sie zuerst besiegen.\\n\\\nMeine Bob-Omb-Kollegen\\n\\\nwissen bereits Bescheid.\\n\\\nSprich mit ihnen und\\n\\\nDu darfst bestimmt ihre\\n\\\nKanonen benutzen.\"))\n\nDEFINE_DIALOG(DIALOG_004, 1, 3, 95, 200, _(\"\\\nWir sind friedliebende\\n\\\nBob-Ombs und mögen keine\\n\\\nKanonen.\\n\\\nWir stellen sie Dir aber\\n\\\ngerne für Luftreisen\\n\\\nzur Verfügung.\\n\\\nAlle Kanonen dieses Kurses\\n\\\nsind für Dich präpariert.\\n\\\nGuten Flug!!!\"))\n\nDEFINE_DIALOG(DIALOG_005, 1, 4, 30, 200, _(\"\\\nHey Mario! Stimmt es,\\n\\\ndaß Du König Bob-Omb\\n\\\nwährend eines harten\\n\\\nKampfes besiegt hast?\\n\\\nDu scheinst ganz schön\\n\\\nwas auf dem Kasten zu\\n\\\nhaben. Aber glaubst Du,\\n\\\nes reicht auch für mich?\\n\\\nBist Du schnell genug, um\\n\\\nmich zu schlagen? Ich\\n\\\nwürde sagen, Du siehst\\n\\\nnicht danach aus!\\n\\\nWie wär's mit einem\\n\\\nRennen zur Bergspitze,\\n\\\num herauszufinden, wer\\n\\\nder Schnellere ist?\\n\\\n\\n\\\nFertig...?\\n\\\n\\n\\\n//Los!/// Später!\"))\n\nDEFINE_DIALOG(DIALOG_006, 1, 3, 30, 200, _(\"\\\nHey!!! Willst Du mich\\n\\\nauf den Arm nehmen?\\n\\\nAbkürzen gilt nicht!\\n\\\nAm besten versuchst Du's\\n\\\nspäter nochmal unter\\n\\\nfairen Bedingungen.\"))\n\nDEFINE_DIALOG(DIALOG_007, 1, 5, 30, 200, _(\"\\\nHmmmmpff...pffff...hach!\\n\\\nBoah! Du...hast...mich...\\n\\\ngeschlagen! Das grenzt an\\n\\\nein Wunder! Hier, Du hast\\n\\\nihn Dir verdient!\"))\n\nDEFINE_DIALOG(DIALOG_008, 1, 5, 30, 200, _(\"\\\nBISSIGER KETTENHUND!\\n\\\nNähere Dich ihm langsam,\\n\\\nund benutze die [C]-Knöpfe,\\n\\\num den Blickwinkel zu\\n\\\nändern. Gefährlich, oder?\\n\\\nSiehst Du die rote Münze\\n\\\nauf dem Pfahl?\\n\\\nDu erhältst einen Stern,\\n\\\nwenn Du acht dieser\\n\\\nMünzen sammelst.\"))\n\nDEFINE_DIALOG(DIALOG_009, 1, 5, 30, 200, _(\"\\\nLang, lang ist's her!\\n\\\nDu scheinst noch schneller\\n\\\ngeworden zu sein. Hast Du\\n\\\nheimlich geübt oder\\n\\\nliegt's an den Sternen?\\n\\\nMeine letzte Niederlage\\n\\\ngeht mir nicht aus dem\\n\\\nKopf. Aber das ist meine\\n\\\nHausstrecke. Wie wär's\\n\\\nmit einer Revanche?\\n\\\nDas Ziel liegt hinter\\n\\\nder Böen-Brücke.\\n\\\nFertig?\\n\\\n\\n\\\n//Los!/// Später!\"))\n\nDEFINE_DIALOG(DIALOG_010, 1, 4, 30, 200, _(\"\\\nDu hast den roten\\n\\\nSchalter aktiviert.\\n\\\nAb jetzt kannst Du die\\n\\\nFederkappe einsetzen\\n\\\nund durch die Lüfte\\n\\\nfliegen. Jeder rote\\n\\\nBlock beinhaltet eine\\n\\\ndieser Mützen.\\n\\\nMöchtest Du Deinen\\n\\\nSpielstand speichern?\\n\\\n\\n\\\n//Ja!////Nein!\"))\n\nDEFINE_DIALOG(DIALOG_011, 1, 4, 30, 200, _(\"\\\nDu hast den grünen\\n\\\nSchalter aktiviert.\\n\\\nAb jetzt kannst Du die\\n\\\nTitanenkappe einsetzen\\n\\\nund Unbesiegbarkeit\\n\\\nerlangen. Jeder grüne\\n\\\nBlock beinhaltet eine\\n\\\ndieser Mützen.\\n\\\nMöchtest Du Deinen\\n\\\nSpielstand speichern?\\n\\\n\\n\\\n//Ja!////Nein!\"))\n\nDEFINE_DIALOG(DIALOG_012, 1, 4, 30, 200, _(\"\\\nDu hast den blauen\\n\\\nSchalter aktiviert.\\n\\\nAb jetzt kannst Du die\\n\\\nTarnkappe einsetzen\\n\\\nund Unsichtbarkeit\\n\\\nerlangen. Jeder blaue\\n\\\nBlock beinhaltet eine\\n\\\ndieser Mützen.\\n\\\nMöchtest Du Deinen\\n\\\nSpielstand speichern?\\n\\\n\\n\\\n//Ja!////Nein!\"))\n\nDEFINE_DIALOG(DIALOG_013, 1, 6, 30, 200, _(\"\\\nDu hast 100 Münzen\\n\\\neingesammelt. Der\\n\\\nStern verleiht Dir\\n\\\nzusätzliche Kraft.\\n\\\nSpielstand speichern?\\n\\\n//Ja!////Nein!\"))\n\nDEFINE_DIALOG(DIALOG_014, 1, 6, 30, 200, _(\"\\\nUnglaublich, Du hast einen\\n\\\nweiteren Stern erhalten.\\n\\\nEr verleiht Dir\\n\\\nzusätzliche Kraft.\\n\\\nSpielstand speichern?\\n\\\n//Ja!////Nein!\"))\n\nDEFINE_DIALOG(DIALOG_015, 1, 4, 30, 200, _(\"\\\nSetze Deine Fäuste ein,\\n\\\num Dich zu verteidigen.\\n\\\nDrücke [A] zum Springen\\n\\\nund [B] zum Schlagen.\\n\\\nDrücke [A] und [B], um einen\\n\\\nTritt auszuführen.\\n\\\nGegenstände kannst Du\\n\\\nmit [B] nehmen und werfen.\"))\n\nDEFINE_DIALOG(DIALOG_016, 1, 4, 30, 200, _(\"\\\nSpringe auf den\\n\\\nfunkelnden Panzer!\\n\\\nDer Krötensurf eröffnet\\n\\\nungeahnte Möglichkeiten!\"))\n\nDEFINE_DIALOG(DIALOG_017, 1, 4, 30, 200, _(\"\\\nIch bin König Bob-Omb,\\n\\\nHerrscher über alle\\n\\\nBomben und Gebieter der\\n\\\nExplosionen!\\n\\\nWer gibt Dir das Recht,\\n\\\ndiesen Berg zu betreten\\n\\\nund dieses königliche\\n\\\nPlateau zu beschmutzen?\\n\\\nAnscheinend haben Dich\\n\\\ndie Wachen unterschätzt,\\n\\\naber mir wird dieser\\n\\\nFehler nicht unterlaufen.\\n\\\nDer Power-Stern ist in\\n\\\nmeinem Besitz und wird\\n\\\nauch dort bleiben.\\n\\\nDein Ende ist gekommen!\\n\\\nOder bist Du etwa der\\n\\\nMeinung, Du könntest\\n\\\nmich von hinten packen\\n\\\nund besiegen? Niemals!!!\"))\n\nDEFINE_DIALOG(DIALOG_018, 1, 4, 30, 200, _(\"\\\nSchlafende Gefahren\\n\\\nsollte man nicht wecken.\\n\\\nDie schleichende Weisheit\\n\\\nverleiht längeres Leben!\"))\n\nDEFINE_DIALOG(DIALOG_019, 1, 2, 30, 200, _(\"\\\nVorsicht, die Fliesen\\n\\\nsind frisch gebohnert!\"))\n\nDEFINE_DIALOG(DIALOG_020, 1, 6, 95, 150, _(\"\\\nLieber Mario!\\n\\\nKomm mich doch einmal\\n\\\nim Schloss besuchen!\\n\\\nDer Kuchen steht bereit!\\n\\\nIn Freundschaft\\n\\\nToadstool\"))\n\nDEFINE_DIALOG(DIALOG_021, 1, 5, 95, 200, _(\"\\\nNa, wen haben wir denn\\n\\\nhier? Es ist niemand zu\\n\\\nHause, also verschwinde\\n\\\nbesser wieder...\\n\\\nHua...hua...hua!!!\"))\n\nDEFINE_DIALOG(DIALOG_022, 1, 3, 95, 200, _(\"\\\nOhne den passenden\\n\\\nSchlüssel bleibt Dir\\n\\\ndieser Weg versperrt!\"))\n\nDEFINE_DIALOG(DIALOG_023, 1, 2, 95, 200, _(\"\\\nDer Kellerschlüssel wird\\n\\\nDir hier nichts nützen!\"))\n\nDEFINE_DIALOG(DIALOG_024, 1, 4, 95, 200, _(\"\\\nDu brauchst schon einen\\n\\\nStern, um diese Tür zu\\n\\\nöffnen. Untersuche doch\\n\\\neinmal die Wandgemälde!\"))\n\nDEFINE_DIALOG(DIALOG_025, 1, 4, 95, 200, _(\"\\\nZum Öffnen dieser Tür\\n\\\nbenötigst Du drei Sterne.\\n\\\nDu mußt also noch [%]\\n\\\nvon ihnen finden!\"))\n\nDEFINE_DIALOG(DIALOG_026, 1, 4, 95, 200, _(\"\\\nZum Öffnen dieser Tür\\n\\\nbenötigst Du acht Sterne.\\n\\\nDu mußt also noch [%]\\n\\\nvon ihnen finden!\"))\n\nDEFINE_DIALOG(DIALOG_027, 1, 4, 95, 200, _(\"\\\nZum Öffnen dieser Tür\\n\\\nbenötigst Du 30 Sterne.\\n\\\nDu mußt also noch [%]\\n\\\nvon ihnen finden.\"))\n\nDEFINE_DIALOG(DIALOG_028, 1, 4, 95, 200, _(\"\\\nZum Öffnen dieser Tür\\n\\\nbenötigst Du 50 Sterne.\\n\\\nDu mußt also noch [%]\\n\\\nvon ihnen finden.\"))\n\nDEFINE_DIALOG(DIALOG_029, 1, 4, 95, 200, _(\"\\\nZum Öffnen der Tür zum\\n\\\n„Endlosen Vergnügen』\\n\\\nbenötigst Du 70 Sterne.\\n\\\nHua...Hua...Hua...!\"))\n\nDEFINE_DIALOG(DIALOG_030, 1, 4, 30, 200, _(\"\\\nDie Lakitu-Film AG\\n\\\nberichtet live und in\\n\\\nFarbe! Hier die neuesten\\n\\\nMeldungen:\\n\\\nGegner sind sehr oft\\n\\\nunachtsam, wenn Du Dich\\n\\\nleise, also langsam,\\n\\\nbewegst.\\n\\\nDie Kameraposition kannst\\n\\\nDu durch [C]▶ und [C]◀\\n\\\nverändern, um einen\\n\\\nÜberblick zu erhalten.\\n\\\nDas Weitwinkelobjektiv\\n\\\nwird mit [C]▼ eingesetzt.\\n\\\nDetails der Umgebung\\n\\\nwerden so sichtbar!\\n\\\nEin Warnton erklingt,\\n\\\nwenn die Bewegungs-\\n\\\nfreiheit der Kamera\\n\\\neingeschränkt ist.\\n\\\nDas waren die\\n\\\nMeldungen und\\n\\\ndamit zurück zum\\n\\\nlaufenden Programm!\"))\n\nDEFINE_DIALOG(DIALOG_031, 1, 3, 30, 200, _(\"\\\nDas darf doch alles nicht\\n\\\nwahr sein! Ich habe schon\\n\\\nwieder verloren!\\n\\\nDabei habe ich mir extra\\n\\\ndie neuen Koopa-Mach-1-\\n\\\nSchuhe gekauft! Hmpf!!!\\n\\\nNaja, ich denke, auch\\n\\\ndieser Stern gehört Dir!\\n\\\nHerzlichen Glückwunsch!\"))\n\nDEFINE_DIALOG(DIALOG_032, 1, 5, 30, 200, _(\"\\\nMit der Federkappe\\n\\\nkannst Du fliegen.\\n\\\nBesitzt Du sie, springe\\n\\\ndreimal hintereinander,\\n\\\num einen Flug zu starten.\\n\\\nBenutzt Du zum Starten\\n\\\ndes Fluges eine Kanone,\\n\\\nkannst Du die Flughöhe\\n\\\nenorm steigern. Mit dem\\n\\\n[Z]-Knopf kannst Du landen.\"))\n\nDEFINE_DIALOG(DIALOG_033, 1, 4, 30, 200, _(\"\\\nHerzlich willkommen! Durch\\n\\\neine Warpröhre bist Du\\n\\\ndirekt zum Schloss der\\n\\\nPrinzessin gelangt.\\n\\\nDie Steuerung ist einfach:\\n\\\nBenutze den [A]-Knopf zum\\n\\\nSpringen und den [B]-Knopf\\n\\\nzum Schlagen.\\n\\\nHinweisschilder kannst\\n\\\nDu lesen, wenn Du Dich\\n\\\ndavor stellst und den\\n\\\n[B]-Knopf betätigst.\\n\\\nDer Analog-Stick dient\\n\\\nder Steuerung. Doch jetzt\\n\\\ngenug der vielen Worte:\\n\\\nAuf zum Schloss!!!\"))\n\nDEFINE_DIALOG(DIALOG_034, 1, 5, 30, 200, _(\"\\\nGuten Tag, liebe Freunde\\n\\\ndes Actionkinos! Die\\n\\\nLakitu-Film AG versorgt\\n\\\nEuch ständig mit den\\n\\\nneuesten Informationen.\\n\\\nMario hat gerade\\n\\\nPrinzessin Toadstools\\n\\\nSchloss erreicht und\\n\\\nmacht sich auf die Suche\\n\\\nnach den Power-Sternen.\\n\\\nUnser wagemutiger Kollege\\n\\\nwird ihn auf dieser\\n\\\nheiklen Mission begleiten.\\n\\\nDie [C]-Knöpfe dienen\\n\\\nseiner Steuerung.\\n\\\nDu kannst die Perspektiven\\n\\\nbeliebig verändern. Sollte\\n\\\nsich der Blickwinkel einmal\\n\\\nnicht verstellen lassen,\\n\\\nerklingt ein Warnton.\\n\\\nGenauere Erklärungen\\n\\\nhierzu werden wir Euch\\n\\\nzu gegebener Zeit\\n\\\nmitteilen. Damit zurück\\n\\\nzum Hauptfilm!\"))\n\nDEFINE_DIALOG(DIALOG_035, 1, 5, 30, 200, _(\"\\\nDie [C]-Knöpfe dienen der\\n\\\nSteuerung der Kamera.\\n\\\nBenutze den ▲-Knopf, um\\n\\\ndie Kamera mit dem\\n\\\nAnalog-Stick zu bewegen.\\n\\\nNormalerweise sorgt ein\\n\\\nAngestellter der Lakitu\\n\\\nAG dafür, daß Du Mario\\n\\\nsiehst. Das ist die\\n\\\nStandardeinstellung.\\n\\\nDiese Kamera steuerst Du\\n\\\nmit den [C]-Knöpfen.\\n\\\nDrückst Du die [R]-Taste,\\n\\\nwechselst Du zwischen\\n\\\nLakitus und Marios\\n\\\nSicht hin und her. Drücke\\n\\\n▼, um den Zoom oder\\n\\\ndas Weitwinkelobjektiv zu\\n\\\naktivieren. Dies ist in\\n\\\nallen Perspektiven möglich.\\n\\\nWelchen Kameramodus\\n\\\nDu gewählt hast, siehst\\n\\\nDu an einem kleinen Bild,\\n\\\ndas sich rechts unten auf\\n\\\ndem Bildschirm befindet.\"))\n\nDEFINE_DIALOG(DIALOG_036, 1, 5, 30, 200, _(\"\\\nAUSSICHTSPLATTFORM\\n\\\nDrücke ▲ und genieße die\\n\\\nAussicht. Vielleicht\\n\\\nentdeckst Du Geheimnisse\\n\\\nDeiner Umgebung.\\n\\\nDrücke [R], um zu Marios\\n\\\nKamera zu wechseln. Sie\\n\\\nbleibt ständig hinter ihm.\\n\\\nMit dieser Taste schaltest\\n\\\nDu auch zurück auf Lakitu.\\n\\\nIm Pausenmodus kannst Du\\n\\\nweitere Einstellungen\\n\\\nvornehmen. Wähle „Stativ』\\n\\\nund halte die [R]-Taste\\n\\\ngedrückt!\"))\n\nDEFINE_DIALOG(DIALOG_037, 1, 3, 30, 200, _(\"\\\nHihihi, ich habe gewonnen!\\n\\\nDu solltest noch ein paar\\n\\\nTrainingsrunden einlegen!\"))\n\nDEFINE_DIALOG(DIALOG_038, 1, 2, 95, 200, _(\"\\\nDie mystische Kraft der\\n\\\nSterne öffnet die Tür!\"))\n\nDEFINE_DIALOG(DIALOG_039, 1, 5, 30, 200, _(\"\\\nBesuchern ist das\\n\\\nErklimmen des königlichen\\n\\\nBerges strengstens\\n\\\nverboten. Verstöße werden\\n\\\nhart bestraft!\\n\\\nNiemals werden die\\n\\\nPower-Sterne, ein\\n\\\nGeschenk Bowsers, diesen\\n\\\nOrt verlassen. Ihre Macht\\n\\\nbleibt in meinen Händen!\\n\\\nKein Wort über ihren\\n\\\nAufenthaltsort kommt\\n\\\nüber meine Lippen!!!\\n\\\nÄh, naja, vielleicht\\n\\\nein kleiner Tip:\\n\\\nDie Sternenbeschreibungen\\n\\\nzu Beginn dieses Kurses\\n\\\nkönnten sich als nützlich\\n\\\nerweisen!\\n\\\nKönig Bob-Omb!!!\"))\n\nDEFINE_DIALOG(DIALOG_040, 1, 3, 30, 200, _(\"\\\nVorsicht, Brücke zerstört!\\n\\\nÜberquere das Eistal in\\n\\\nder Gondel.\"))\n\nDEFINE_DIALOG(DIALOG_041, 1, 4, 30, 200, _(\"\\\nHöhöhö, das war ja wohl\\n\\\nnichts! Sogar meine Uroma\\n\\\nKoopa ist wesentlich\\n\\\nschneller als Du!\\n\\\nNaja, mit zwei Jahren\\n\\\nTraining könntest Du's\\n\\\nvielleicht schaffen.\\n\\\nBis dann...und tschüß!\"))\n\nDEFINE_DIALOG(DIALOG_042, 1, 4, 30, 200, _(\"\\\nAchtung!\\n\\\nDieser Steg ist ziemlich\\n\\\nschmal. Du solltest Dich\\n\\\nsehr langsam bewegen.\\n\\\nÜberschreitest Du eine\\n\\\nKante, fällt Mario nicht\\n\\\nin die Tiefe, sondern er\\n\\\nklammert sich daran fest.\\n\\\nMöchtest Du wieder nach\\n\\\noben klettern, drücke\\n\\\nden Analog-Stick in\\n\\\nMarios Blickrichtung.\\n\\\nMario läßt die Kante los,\\n\\\nwenn Du den Analog-Stick\\n\\\nin Richtung seines Rückens\\n\\\nbewegst oder [Z] drückst.\\n\\\nBist Du in Eile, kannst\\n\\\nDu auch durch einen\\n\\\nbeherzten Sprung mit dem\\n\\\n[A]-Knopf hinauf gelangen.\"))\n\nDEFINE_DIALOG(DIALOG_043, 1, 4, 30, 200, _(\"\\\nWenn Du springst und den\\n\\\n[A]-Knopf gedrückt hältst,\\n\\\nklammert sich Mario an\\n\\\nObjekte über ihm.\\n\\\nAuf diese Weise kannst\\n\\\nDu Dich auch von der\\n\\\nEule durch die Lüfte\\n\\\ntransportieren lassen.\"))\n\nDEFINE_DIALOG(DIALOG_044, 1, 5, 95, 200, _(\"\\\nUh...oh...gääähn...\\n\\\nWeeehhr ist daaaahhh...?\\n\\\nWer hat mich geweckt?\\n\\\nEigentlich sollte ich um\\n\\\ndiese Tageszeit schlafen!\\n\\\nAber, da Du mich schon\\n\\\ngeweckt hast, wie wäre\\n\\\nes dann mit einem\\n\\\nkleinen Rundflug um die\\n\\\nBurg?\\n\\\nBefinde ich mich direkt\\n\\\nüber Dir, springe und\\n\\\nhalte den Sprungknopf\\n\\\ngedrückt. Laß ihn los,\\n\\\num wieder frei zu sein.\\n\\\nIch transportiere Dich,\\n\\\nsolange es meine Kraft\\n\\\nzuläßt. Beobachte meinen\\n\\\nSchatten, um Dich zu\\n\\\norientieren.\"))\n\nDEFINE_DIALOG(DIALOG_045, 1, 6, 95, 200, _(\"\\\nHey, Mann, Mario! Mir\\n\\\ngeht die Puste aus.\\n\\\nDu ißt zuviel Pasta!\\n\\\nBitte, laß los, ich muß\\n\\\nmich erholen...sofooort!\\n\\\nBis später...vielleicht.\"))\n\nDEFINE_DIALOG(DIALOG_046, 1, 4, 30, 200, _(\"\\\nEs gibt drei verschiedene\\n\\\nSprungtechniken. Du mußt\\n\\\nsie alle beherrschen, um\\n\\\ndie Aufgaben zu meistern.\\n\\\nVersuche zuerst den\\n\\\nDreisprung! Renne und\\n\\\nspringe dreimal direkt\\n\\\nhintereinander.\\n\\\nMit dem richtigen Timing\\n\\\nwird jeder Sprung höher\\n\\\nals der vorherige sein.\\n\\\nWeiter zum Weitsprung!\\n\\\nWährend Du rennst, mußt\\n\\\nDu den [Z]-Knopf und dann\\n\\\nden [A]-Knopf drücken.\\n\\\nUnd nun der Wandsprung!\\n\\\nSpringe gegen eine Wand.\\n\\\nSobald Du die Wand\\n\\\nberührst, mußt Du wieder\\n\\\nden Sprungknopf drücken.\\n\\\nAlles verstanden?\\n\\\nDreisprung? Weitsprung?\\n\\\nWandsprung? Dann heißt's\\n\\\nüben, üben, üben...\"))\n\nDEFINE_DIALOG(DIALOG_047, 1, 3, 95, 200, _(\"\\\nHallo!\\n\\\nIch mache die Kanone\\n\\\nzum Abschuß bereit!\"))\n\nDEFINE_DIALOG(DIALOG_048, 1, 6, 30, 200, _(\"\\\nAn einigen Stellen\\n\\\nherrscht extreme\\n\\\nRutschgefahr! Sieh\\n\\\nam besten zuerst im\\n\\\nSchornstein nach dem\\n\\\nRechten!\"))\n\nDEFINE_DIALOG(DIALOG_049, 1, 5, 30, 200, _(\"\\\nDu erinnerst Dich an den\\n\\\nWandsprung? Auf diese\\n\\\nWeise kannst Du schnell\\n\\\nhöher gelegene Stellen\\n\\\nerreichen.\\n\\\nBenutze ihn, um von\\n\\\nWand zu Wand zu springen\\n\\\nund Stück für Stück\\n\\\nweiter nach oben zu\\n\\\ngelangen.\\n\\\nDenke an die uralte\\n\\\nWeisheit:\\n\\\nÜbung macht den Meister!\\n\\\nSie kommt hier voll zum\\n\\\nTragen!!!\"))\n\nDEFINE_DIALOG(DIALOG_050, 1, 4, 30, 200, _(\"\\\nDrücke den [Z]-Knopf, um\\n\\\nin die Hocke zu gehen und\\n\\\neinen Hang nach unten zu\\n\\\nrutschen.\\n\\\nBetätigst Du den [Z]-Knopf\\n\\\nwährend eines Sprungs,\\n\\\nführst Du eine\\n\\\nStampfattacke aus.\\n\\\nDu machst einen\\n\\\nRückwärtssalto, wenn\\n\\\nDu stehend den [Z]-Knopf\\n\\\ndrückst und springst.\\n\\\nEs gibt weitere Varianten\\n\\\nzu entdecken. Nimm Dir\\n\\\nZeit und versuche, andere\\n\\\nKombinationen zu finden!\"))\n\nDEFINE_DIALOG(DIALOG_051, 1, 5, 30, 200, _(\"\\\nDu kannst auf Bäume und\\n\\\nStangen klettern, wenn\\n\\\nDu gegen sie springst und\\n\\\nden Analog-Stick nach\\n\\\noben drückst.\\n\\\nMit dem [A]-Knopf kannst\\n\\\nDu nach HINTEN wieder\\n\\\nabspringen. Du kannst\\n\\\nsogar auf der Spitze\\n\\\neinen Handstand machen.\\n\\\nSpringst Du aus dem\\n\\\nHandstand von einem\\n\\\nObjekt ab, machst Du\\n\\\neinen unglaublich hohen\\n\\\nSprung.\"))\n\nDEFINE_DIALOG(DIALOG_052, 1, 5, 30, 200, _(\"\\\nDu machst einen\\n\\\nRückwärtssalto, wenn\\n\\\nDu stehend den [Z]-Knopf\\n\\\ngedrückt hältst und dann\\n\\\nden [A]-Knopf betätigst.\\n\\\nSeitwärtssaltos führst\\n\\\nDu aus, indem Du den\\n\\\nAnalog-Stick entgegen\\n\\\nDeiner Laufrichtung\\n\\\nbewegst und springst.\"))\n\nDEFINE_DIALOG(DIALOG_053, 1, 5, 30, 200, _(\"\\\nVon Zeit zu Zeit erscheint\\n\\\neine farbige Zahl, wenn\\n\\\nDu Kisten öffnest, Ringe\\n\\\ndurchquerst oder geheime\\n\\\nOrte erreichst.\\n\\\nGelingt es Dir, alle fünf\\n\\\nfarbigen Zahlen dieses\\n\\\nBereichs zu finden,\\n\\\nerhältst Du zur Belohnung\\n\\\neinen Power-Stern.\"))\n\nDEFINE_DIALOG(DIALOG_054, 1, 6, 30, 200, _(\"\\\nHerzlich willkommen\\n\\\nauf der Schlidderbahn!\\n\\\nDrücke den Analog-Stick\\n\\\nnach vorne, um zu\\n\\\nbeschleunigen und nach\\n\\\nhinten, um zu bremsen.\"))\n\nDEFINE_DIALOG(DIALOG_055, 1, 5, 30, 200, _(\"\\\nHihi, hallo Mario!\\n\\\nDu siehst aus, als\\n\\\nwolltest Du mich gerade\\n\\\nfragen, ob wir ein\\n\\\nWettrennen machen sollten.\\n\\\nUnd ich sage: Na klar! Es\\n\\\nist zwar noch niemandem\\n\\\ngelungen, mich, den\\n\\\nSchlidderkönig aller\\n\\\nKlassen, zu besiegen.\\n\\\nAber Du kannst es ja\\n\\\neinmal versuchen.\\n\\\nWie steht's?\\n\\\n\\n\\\n//Na klar!/ Später!\"))\n\nDEFINE_DIALOG(DIALOG_056, 1, 6, 30, 200, _(\"\\\nDu...Du...ha...hast\\n\\\nmich geschlagen! Das kann\\n\\\ndoch nicht wahr sein!\\n\\\nDu bist der größte\\n\\\nSchliddermeister, den\\n\\\nich kenne!\\n\\\nEine Goldmedaille kann\\n\\\nich Dir zwar nicht\\n\\\nüberreichen,\\n\\\naber nimm diesen\\n\\\nPower-Stern!\\n\\\nDu hast ihn verdient.\"))\n\nDEFINE_DIALOG(DIALOG_057, 1, 4, 30, 200, _(\"\\\nHey Kleiner! Hast Du mein\\n\\\nBaby gesehen? Es ist das\\n\\\nschönste und süßeste\\n\\\nBaby der ganzen Welt!\\n\\\nVor kurzem war es noch\\n\\\nbei mir, aber ich habe\\n\\\nkeine Ahnung, wohin es\\n\\\nsich verdrückt hat.\\n\\\nWenn ich doch nur wüßte,\\n\\\nwo ich die Suche beginnen\\n\\\nsoll...Oh, was für eine\\n\\\nfürchterliche Tragödie!!!\"))\n\nDEFINE_DIALOG(DIALOG_058, 1, 5, 30, 200, _(\"\\\nDas ist doch...\\n\\\nMensch, Mario, Du hast\\n\\\nmein Baby gefunden!!!\\n\\\nWie kann ich Dir dafür\\n\\\ndanken?\\n\\\nOh, ich weiß: Ich fand\\n\\\nneulich diesen Stern\\n\\\nhier. Nimm ihn als\\n\\\nZeichen meiner ewigen\\n\\\nDankbarkeit!\"))\n\nDEFINE_DIALOG(DIALOG_059, 1, 6, 30, 200, _(\"\\\nWas soll ich mit diesem\\n\\\nFrüchtchen? Das ist nicht\\n\\\nmein Baby! Mein Baby hat\\n\\\nein weiche, zarte Stimme,\\n\\\nund es sieht mir natürlich\\n\\\nähnlich!\"))\n\nDEFINE_DIALOG(DIALOG_060, 1, 4, 30, 200, _(\"\\\nAchtung, Achtung!\\n\\\nBevor Du Dich in die\\n\\\nFluten stürzt, solltest\\n\\\nDu Dir folgendes merken:\\n\\\nBleibst Du zu lange unter\\n\\\nWasser, könnte Dir die\\n\\\nLuft ausgehen. Achte auf\\n\\\ndie Sauerstoffanzeige!\\n\\\nSchwimme zur Oberfläche\\n\\\noder sammle Münzen und\\n\\\nLuftblasen, um wieder\\n\\\nSauerstoff zu tanken.\\n\\\nDrücke den [A]-Knopf, um\\n\\\nzu schwimmen. Halte ihn\\n\\\ngedrückt, um mit den\\n\\\nFüßen zu paddeln.\\n\\\nBewege beim Schwimmen\\n\\\nden Analog-Stick nach\\n\\\noben, um zu tauchen und\\n\\\nnach unten, um zu steigen.\\n\\\nSpringe aus dem Wasser,\\n\\\nindem Du an einer Kante\\n\\\nden Analog-Stick abwärts\\n\\\ndrückst und springst.\\n\\\nAchte jedoch darauf,\\n\\\ndaß Du den Analog-Stick\\n\\\nwährend des Sprungs\\n\\\nlosläßt!\"))\n\nDEFINE_DIALOG(DIALOG_061, 1, 5, 30, 200, _(\"\\\nWer baden möchte, sollte\\n\\\nsich besser in wärmere\\n\\\nGefilde begeben, denn\\n\\\nhier ist es auf jeden\\n\\\nFall zu kalt!!!\"))\n\nDEFINE_DIALOG(DIALOG_062, 1, 4, 30, 200, _(\"\\\nIn den grünen Blöcken\\n\\\nim Labyrinth findest\\n\\\nDu die phänomenalen\\n\\\nTitanenkappen.\\n\\\nTrägst Du diese Kappen,\\n\\\nbist Du unverwundbar\\n\\\nund brauchst kurze Zeit\\n\\\nnicht zu atmen.\\n\\\nDas einzige Problem ist:\\n\\\nDu kannst nicht\\n\\\nschwimmen, während Du\\n\\\nsie trägst!\"))\n\nDEFINE_DIALOG(DIALOG_063, 1, 3, 30, 200, _(\"\\\nIn den blauen Blöcken\\n\\\nbefinden sich die\\n\\\nfantastischen Tarnkappen.\\n\\\nDamit kannst Du durch\\n\\\nbestimmte Mauern gehen\\n\\\noder Geister erschrecken.\"))\n\nDEFINE_DIALOG(DIALOG_064, 1, 3, 30, 200, _(\"\\\nIn den roten Blöcken\\n\\\nkannst Du die berühmten\\n\\\nFederkappen finden.\\n\\\nMit einem Dreisprung\\n\\\nkannst Du starten und\\n\\\nin die Lüfte steigen.\\n\\\nDrücke den Analog-Stick\\n\\\nnach unten, um im Flug\\n\\\nan Höhe zu gewinnen.\\n\\\nDrücke den Analog-Stick\\n\\\nnach oben, um im Flug\\n\\\nan Höhe zu verlieren.\\n\\\nBetätige den [Z]-Knopf,\\n\\\num den Flug zu beenden\\n\\\nund sicher zu landen.\"))\n\nDEFINE_DIALOG(DIALOG_065, 1, 5, 30, 200, _(\"\\\nSchwimmen für Anfänger!\\n\\\nDrücke den [A]-Knopf für\\n\\\neinen Schwimmzug. Bei\\n\\\nrichtigem Timing kannst\\n\\\nDu sehr schnell schwimmen.\\n\\\nHalte den [A]-Knopf\\n\\\ngedrückt, um mit den\\n\\\nFüßen zu paddeln. Mit\\n\\\ndieser Technik bewegst Du\\n\\\nDich langsamer im Wasser.\\n\\\nDrücke beim Schwimmen\\n\\\nden Analog-Stick\\n\\\nnach oben, um zu\\n\\\ntauchen und nach unten,\\n\\\num zu steigen.\\n\\\nDu kannst aus dem Wasser\\n\\\nspringen, wenn Du an der\\n\\\nWasseroberfläche den\\n\\\nAnalog-Stick nach unten\\n\\\ndrückst und springst.\\n\\\nBeachte: Kein Mensch\\n\\\nkann unter Wasser atmen!\\n\\\nKehre zurück an die\\n\\\nOberfläche, wenn Deine\\n\\\nLuft zur Neige geht.\\n\\\nAch ja: Türen, die sich\\n\\\nunter Wasser befinden,\\n\\\nkannst Du nicht öffnen.\\n\\\nAber vielleicht findest\\n\\\nDu ja einen Abfluß!!!\"))\n\nDEFINE_DIALOG(DIALOG_066, 1, 5, 30, 200, _(\"\\\nHallo Mario, ich bin's,\\n\\\nPeach! Paß auf Dich auf!\\n\\\nBowser wird versuchen,\\n\\\nDich mit seinem Feueratem\\n\\\nzu versengen.\\n\\\nRenne hinter ihn!\\n\\\nVersuche mit dem\\n\\\n[B]-Knopf Bowsers\\n\\\nSchwanz zu packen und\\n\\\nihn herumzuschleudern.\\n\\\nBewege den Analog-Stick\\n\\\nim Kreis, um Dich zu\\n\\\ndrehen. Je schneller\\n\\\nDu Dich drehst, desto\\n\\\nweiter wird Dein Wurf.\\n\\\nBenutze die [C]-Knöpfe, um\\n\\\nDich zu orientieren. Du\\n\\\nmußt Bowser gegen eine\\n\\\nder Bomben am Rand der\\n\\\nPlattform werfen.\\n\\\nDrücke den [B]-Knopf, um\\n\\\nBowser loszulassen und\\n\\\nin Richtung der Bombe\\n\\\nzu schleudern.\\n\\\nViel Glück!!!\"))\n\nDEFINE_DIALOG(DIALOG_067, 1, 5, 30, 200, _(\"\\\nTja, Mario, Pech gehabt!\\n\\\nDie Prinzessin ist nicht\\n\\\nhier und wird es auch so\\n\\\nbald nicht sein...\\n\\\nHua...Hua...Hua...Hua!\\n\\\nEs wird Dir niemals\\n\\\ngelingen, mich von hinten\\n\\\nzu packen und zu werfen.\\n\\\nDa müßte schon ein wahrer\\n\\\nHeld kommen, keine Wurst!\\n\\\nVielleicht gehst Du besser\\n\\\nwieder nach Hause und\\n\\\nreparierst weiter kaputte\\n\\\nRohre, als Dich mit mir\\n\\\nzu messen!!!\"))\n\nDEFINE_DIALOG(DIALOG_068, 1, 5, 30, 200, _(\"\\\nDu bist im Land des\\n\\\nflüssigen Feuers. Wenn\\n\\\nDu vom Weg abkommst,\\n\\\nbewahre Ruhe, denn Du\\n\\\nverlierst nicht die\\n\\\ngesamte Energie auf\\n\\\neinmal. Außerdem kannst\\n\\\nDu den qualmenden Mario\\n\\\nwährend seines Höhenflugs\\n\\\nimmer noch steuern!\"))\n\nDEFINE_DIALOG(DIALOG_069, 1, 4, 30, 200, _(\"\\\nWährend Deiner Abenteuer\\n\\\nin den Wandbildern stößt\\n\\\nDu an den Rändern auf\\n\\\nunsichtbare Mauern.\\n\\\nTriffst Du fliegend auf\\n\\\neine solche Mauer, prallst\\n\\\nDu ab. Du kannst aber den\\n\\\nFlug fortsetzen.\"))\n\nDEFINE_DIALOG(DIALOG_070, 1, 4, 30, 200, _(\"\\\nDu kannst die Wandbilder\\n\\\njederzeit verlassen, um\\n\\\nin die Schlosshalle\\n\\\nzurückzukehren.\\n\\\nBleibe stehen, drücke\\n\\\nSTART, um das Spiel\\n\\\nzu pausieren, und wähle\\n\\\n„Kurs verlassen』!\\n\\\nDu mußt nicht alle Sterne\\n\\\neiner Welt finden, um\\n\\\nden nächsten Abschnitt\\n\\\nbetreten zu können.\\n\\\nHebe Dir die schweren\\n\\\nBrocken für später auf,\\n\\\nwenn Du Deine Techniken\\n\\\nperfektioniert hast.\\n\\\nFindest Du einen Stern,\\n\\\nerhältst Du einen Hinweis,\\n\\\nwo sich der nächste\\n\\\nFundort befindet.\\n\\\nAber Du mußt die Sterne\\n\\\nin keiner bestimmten\\n\\\nReihenfolge finden.\\n\\\nDie Wahl liegt bei Dir!\"))\n\nDEFINE_DIALOG(DIALOG_071, 1, 4, 30, 200, _(\"\\\nAchtung! Hüte Dich vor\\n\\\nden Nebelschwaden!\\n\\\nSie enthalten keinen\\n\\\nSauerstoff!\\n\\\nBenutze die erhöhten\\n\\\nPlattformen, um Dich\\n\\\nauszuruhen und einen\\n\\\nsicheren Weg zu suchen.\\n\\\nAuf der Karte sind\\n\\\nUnterstände als Kreise\\n\\\ndargestellt, den Eingang\\n\\\nerkennst Du am Pfeil!\"))\n\nDEFINE_DIALOG(DIALOG_072, 1, 5, 30, 200, _(\"\\\nHier oben weht eine steife\\n\\\nBrise. Solltest Du Deine\\n\\\nMütze verlieren, kannst\\n\\\nDu sie auf dem Weg zum\\n\\\nGipfel wiederfinden.\"))\n\nDEFINE_DIALOG(DIALOG_073, 1, 5, 95, 200, _(\"\\\nAhoi, Landratte! Es ist\\n\\\ndoch wohl logisch, daß\\n\\\nsich hier unten ein\\n\\\nsagenhafter Schatz\\n\\\nbefindet!\\n\\\nZur Bergung mußt Du die\\n\\\nKisten in der richtigen\\n\\\nReihenfolge öffnen, klar?\\n\\\nAber ich sage nicht, wie\\n\\\nsie lautet, hehehe!\"))\n\nDEFINE_DIALOG(DIALOG_074, 1, 5, 30, 200, _(\"\\\nSiehst Du den Block\\n\\\nnebenan? Manchmal kannst\\n\\\nDu im Innern dieser\\n\\\nQuader interessante\\n\\\nEntdeckungen machen.\\n\\\nZerstöre sie mit einem\\n\\\ngezielten Schlag oder\\n\\\neiner Stampfattacke,\\n\\\ndamit sie ihr Geheimnis\\n\\\npreisgeben!\"))\n\nDEFINE_DIALOG(DIALOG_075, 1, 5, 30, 200, _(\"\\\nHilfe, Mario! Mein Schloss\\n\\\nbefindet sich in großer\\n\\\nGefahr. Ich weiß, daß der\\n\\\nwiderliche Bowser seine\\n\\\nHände im Spiel hat.\\n\\\nEr hat alle Türen des\\n\\\nSchlosses versiegelt. Nur\\n\\\ndie magische Kraft der\\n\\\nPower-Sterne kann diese\\n\\\nSiegel brechen.\\n\\\nAber es gibt einige\\n\\\nGeheimwege im Innern, die\\n\\\nBowser nicht entdeckt\\n\\\nhat. Einer davon befindet\\n\\\nsich in diesem Raum.\\n\\\nSuche den Eingang und\\n\\\nfinde den Power-Stern,\\n\\\nder sich darin verbirgt.\\n\\\nHilf uns, Du bist unsere\\n\\\neinzige Hoffnung!\\n\\\nFast alle Power-Sterne\\n\\\nkannst Du in den\\n\\\nWandgemälden finden,\\n\\\nmanche jedoch an\\n\\\ngeheimen Orten.\\n\\\nSammle soviele Sterne\\n\\\nwie möglich, um Bowsers\\n\\\nPlan zu vereiteln.\\n\\\nWir zählen auf Dich!\\n\\\nViel Glück!!!\"))\n\nDEFINE_DIALOG(DIALOG_076, 1, 4, 30, 200, _(\"\\\nHallo Mario! Du hast\\n\\\nbereits einiges zur\\n\\\nRettung des Schlosses\\n\\\ngetan.\\n\\\nAber Du mußt noch\\n\\\nviele Geheimnisse\\n\\\nder Wandgemälde\\n\\\nlüften.\\n\\\nManchmal spielen Dir\\n\\\nDeine Augen einen Streich.\\n\\\nDie Realität verschwindet\\n\\\nhinter Fassaden.\\n\\\nAber Du kannst das\\n\\\nTrugbild durchdringen,\\n\\\nwenn Du es im Spiegel\\n\\\nbetrachtest!\\n\\\nWasser ist ein flüssiges\\n\\\nElement. Die Magie des\\n\\\nWandgemäldes beeinflußt\\n\\\nsein Verhalten.\\n\\\nWähle verschiedene Wege,\\n\\\num die versunkene Stadt\\n\\\ndurch das Gemälde zu\\n\\\nbetreten.\\n\\\nAch ja, fast hätte ich es\\n\\\nvergessen: Hier habe ich\\n\\\netwas für Dich! Es hilft\\n\\\nDir, Bowser zu besiegen.\"))\n\nDEFINE_DIALOG(DIALOG_077, 1, 4, 150, 200, _(\"\\\nEinst konnte man die Tür\\n\\\nöffnen. Zu dieser Zeit\\n\\\nwaren die Säulen aber\\n\\\nniedriger!\"))\n\nDEFINE_DIALOG(DIALOG_078, 1, 5, 30, 200, _(\"\\\nDiesen Schalter kannst Du\\n\\\ndurch eine Stampfattacke\\n\\\nauslösen. Er läßt einige\\n\\\nblaue Münzen erscheinen,\\n\\\ndie je fünf gelbe\\n\\\nMünzen wert sind.\\n\\\nAllerdings mußt Du Dich\\n\\\nbeeilen, denn die blauen\\n\\\nMünzen erscheinen nur\\n\\\nfür kurze Zeit.\"))\n\nDEFINE_DIALOG(DIALOG_079, 1, 4, 30, 200, _(\"\\\nAuuuuuaaa! Hey, laß mich\\n\\\nlos! Das war doch nur\\n\\\nSpaß! Du hast wohl keinen\\n\\\nHumor, was?\\n\\\nOkay, ich mache Dir einen\\n\\\nVorschlag: Wenn Du mich\\n\\\nlosläßt, habe ich eine\\n\\\nÜberraschung für Dich!\\n\\\nNa, wie sieht's aus?\\n\\\n\\n\\\n//Klar!///Vergiß es!\"))\n\nDEFINE_DIALOG(DIALOG_080, 1, 3, 30, 200, _(\"\\\nHey Baby, komm schon!\\n\\\nWo bleibst Du denn so\\n\\\nlange?\"))\n\nDEFINE_DIALOG(DIALOG_081, 1, 5, 30, 200, _(\"\\\nDes Rätsels Lösung ist der\\n\\\nWasserstand. Tief unten\\n\\\nerwartet Dich die Stadt,\\n\\\nnachdem Du den Pegel\\n\\\nhast sinken lassen.\"))\n\nDEFINE_DIALOG(DIALOG_082, 1, 4, 30, 200, _(\"\\\nAchte auf Deine Mütze!\\n\\\nSolltest Du sie verlieren,\\n\\\nwirst Du durch Treffer\\n\\\nschwerer verletzt.\\n\\\nSolltest Du sie einmal\\n\\\nverlieren, findest Du die\\n\\\nMütze in dem Gemälde, in\\n\\\ndem Du sie verloren hast.\\n\\\nDie Prinzessin wird\\n\\\nnoch immer von Bowser\\n\\\ngefangen gehalten. Rette\\n\\\nsie so schnell wie möglich.\\n\\\nBowsers Schergen belagern\\n\\\nseit langer Zeit die\\n\\\nWelten der Gemälde und\\n\\\nWände des Schlosses.\\n\\\nAber es ist mir gelungen,\\n\\\nihnen diesen Stern\\n\\\nabzujagen.\\n\\\nViel Glück!\"))\n\nDEFINE_DIALOG(DIALOG_083, 1, 6, 30, 200, _(\"\\\nBetrittst Du die Uhr zu\\n\\\nverschiedenen Zeiten,\\n\\\nwerden Dir weitere\\n\\\nGeheimnisse offenbart.\\n\\\nVielleicht hilft Dir auch\\n\\\ndieser Stern!\"))\n\nDEFINE_DIALOG(DIALOG_084, 1, 5, 30, 200, _(\"\\\nHey, Du Rüpel, ich\\n\\\nbekomme ja blaue Flecken.\\n\\\nLaß mich sofort los!\\n\\\nBowser hat mir diesen\\n\\\nStern geschenkt.\\n\\\nEr wäre ziemlich böse,\\n\\\nwenn er das wüßte, aber\\n\\\nich bin in Eile. Also\\n\\\nnimm ihn und laß mich\\n\\\nrunter!\"))\n\nDEFINE_DIALOG(DIALOG_085, 1, 4, 30, 200, _(\"\\\nIm Horrorhaus solltest Du\\n\\\nden Mund geschlossen\\n\\\nhalten, damit Deine Zähne\\n\\\nnicht vor Angst klappern!\"))\n\nDEFINE_DIALOG(DIALOG_086, 1, 3, 40, 200, _(\"\\\nWenn Du im Kreis rennst,\\n\\\nwerden manche Gegner\\n\\\ngroße Augen machen!\"))\n\nDEFINE_DIALOG(DIALOG_087, 1, 3, 30, 200, _(\"\\\nDer Weihnachtsmann ist\\n\\\nnicht der einzige, der\\n\\\nin Schornsteine klettert!\"))\n\nDEFINE_DIALOG(DIALOG_088, 1, 2, 30, 200, _(\"\\\nBenutze die Stange, um\\n\\\nnach unten zu gelangen!\"))\n\nDEFINE_DIALOG(DIALOG_089, 1, 4, 95, 200, _(\"\\\nAuf beiden Wegen lauern\\n\\\nGefahren. Links benötigst\\n\\\nDu den Weitsprung, um\\n\\\nweiterzukommen.\\n\\\nRechts: Arbeitsplattform\\n\\\n////Nebellabyrinth\\n\\\nLinks:/Schwarzes Loch\\n\\\n////Höhlensee\"))\n\nDEFINE_DIALOG(DIALOG_090, 1, 5, 30, 200, _(\"\\\nHua, hua, hua, ich wußte,\\n\\\ndaß Du mir in die Falle\\n\\\ngehen würdest. Du solltest\\n\\\nöfter auf Deine ulkigen\\n\\\nFüße schauen!\"))\n\nDEFINE_DIALOG(DIALOG_091, 1, 3, 30, 200, _(\"\\\nAchtung, starke Böen!\\n\\\nAber es könnte auch eine\\n\\\naufregende Reise werden!\"))\n\nDEFINE_DIALOG(DIALOG_092, 1, 4, 30, 200, _(\"\\\nWas willst Du denn schon\\n\\\nwieder? Du bist ja\\n\\\nlästiger als ein Schwarm\\n\\\nStubenfliegen.\\n\\\nGerade jetzt, als mir\\n\\\ndie ganze Sache so viel\\n\\\nSpaß machte! Aber, wenn\\n\\\nDu schon mal hier bist:\\n\\\nGib mir die Power-Sterne\\n\\\nzurück! Meine Truppen\\n\\\nkönnen sie besser\\n\\\ngebrauchen als Du.\"))\n\nDEFINE_DIALOG(DIALOG_093, 1, 4, 30, 200, _(\"\\\nMario, wie schön Dich zu\\n\\\nsehen! Ich dachte gerade\\n\\\nan eine Grillparty - schon\\n\\\nbist Du da.\\n\\\nJetzt brauche ich mir\\n\\\nwenigstens keine Gedanken\\n\\\nzu machen, was ich grille:\\n\\\nNämlich Dich!\\n\\\nDann gehört die Prinzessin\\n\\\nendgültig mir und ich bin\\n\\\nauf ewig der Herrscher\\n\\\ndes Schlosses!!!\"))\n\nDEFINE_DIALOG(DIALOG_094, 1, 4, 30, 200, _(\"\\\nErinnerst Du Dich noch an\\n\\\nden Weitsprung? Renne,\\n\\\ndrücke den [Z]-Knopf und\\n\\\ndann den [A]-Knopf!\"))\n\nDEFINE_DIALOG(DIALOG_095, 1, 3, 30, 200, _(\"\\\nWie man Schilder liest,\\n\\\nhast Du offensichtlich\\n\\\nbereits herausgefunden.\\n\\\nAuf die gleiche Weise\\n\\\nkannst Du mit anderen\\n\\\nsprechen.\"))\n\nDEFINE_DIALOG(DIALOG_096, 1, 4, 30, 200, _(\"\\\nDer Weg zur Burg ist\\n\\\nsehr schmal! Selbst\\n\\\nWagemutige sollten sich\\n\\\nlangsam bewegen.\\n\\\nAußerdem wecken leise\\n\\\nSchritte niemanden, der\\n\\\nschläft - was Dein\\n\\\nVorteil sein könnte!\"))\n\nDEFINE_DIALOG(DIALOG_097, 1, 6, 30, 200, _(\"\\\nSei nicht schüchtern,\\n\\\nsondern wehre Dich,\\n\\\nwenn jemand versucht,\\n\\\nDich von einer Plattform\\n\\\nzu schubsen. Sonst steigt\\n\\\ndie Temperatur!\"))\n\nDEFINE_DIALOG(DIALOG_098, 1, 1, 95, 200, _(\"\\\nKomm nur näher, hehehe!\"))\n\nDEFINE_DIALOG(DIALOG_099, 1, 3, 95, 200, _(\"\\\n\"))\n\nDEFINE_DIALOG(DIALOG_100, 1, 2, 95, 200, _(\"\\\nJippiiiiieee, ich hab' sie!\\n\\\nJetzt gehört sie mir!!!\"))\n\nDEFINE_DIALOG(DIALOG_101, 1, 5, 95, 200, _(\"\\\nHgggnnnhhh! Laß...mich...\\n\\\nlos!!! Diese Mütze? Na\\n\\\ngut, ich gebe sie Dir,\\n\\\nobwohl sie mir besser\\n\\\nsteht als Dir!\"))\n\nDEFINE_DIALOG(DIALOG_102, 1, 5, 30, 200, _(\"\\\nHey, pssst, paß mal auf:\\n\\\nDie Geister sind sehr\\n\\\nschüchtern. Siehst Du\\n\\\nihnen in die Augen,\\n\\\nverschwinden sie.\\n\\\nDrehst Du ihnen allerdings\\n\\\nden Rücken zu, werden\\n\\\nsie wieder sichtbar.\\n\\\nAttackiere sie von hinten,\\n\\\num sie zu besiegen.\"))\n\nDEFINE_DIALOG(DIALOG_103, 1, 4, 95, 200, _(\"\\\nDie Pyramide ist von vier\\n\\\nSäulen umgeben. Erklimme\\n\\\ndie Spitzen der Säulen, um\\n\\\ndas Geheimnis zu lüften.\"))\n\nDEFINE_DIALOG(DIALOG_104, 1, 4, 30, 200, _(\"\\\nDer Schattenstern vor Dir\\n\\\nwird real, wenn Du die\\n\\\nacht roten Münzen dieser\\n\\\nWelt findest.\"))\n\nDEFINE_DIALOG(DIALOG_105, 1, 5, 95, 200, _(\"\\\nBist Du bereit? Dann rein\\n\\\nmit Dir in die Kanone! Du\\n\\\nkannst mir ihrer Hilfe\\n\\\ndie schwebende Insel\\n\\\nerreichen!\\n\\\nBenutze den Analog-Stick\\n\\\nzum Zielen und feuere die\\n\\\nKanone mit dem [A]-Knopf\\n\\\nab. Akrobaten bevorzugen\\n\\\nBäume zur Landung!\"))\n\nDEFINE_DIALOG(DIALOG_106, 1, 2, 95, 200, _(\"\\\nBist Du bereit? Dann rein\\n\\\nmit Dir in die Kanone!\"))\n\nDEFINE_DIALOG(DIALOG_107, 1, 4, 95, 200, _(\"\\\nDas werde ich meinem\\n\\\ngroßen Bruder erzählen!\\n\\\nDann kannst Du aber was\\n\\\nerleben...\"))\n\nDEFINE_DIALOG(DIALOG_108, 1, 6, 95, 200, _(\"\\\nHa-Boooo! Du bist also\\n\\\nder Unruhestifter...\\n\\\nJetzt wirst Du das büßen,\\n\\\nwas Du mir und meinen\\n\\\nGeschwistern angetan\\n\\\nhast...\"))\n\nDEFINE_DIALOG(DIALOG_109, 1, 4, 95, 200, _(\"\\\nSchnief, schnüff! Mein\\n\\\neinst stattlicher Körper\\n\\\nhat sich in Wasser\\n\\\naufgelöst.\\n\\\nIch würde alles für einen\\n\\\nneuen Körper geben.\\n\\\nVielleicht kannst Du mir\\n\\\nhelfen, schluchz?\"))\n\nDEFINE_DIALOG(DIALOG_110, 1, 5, 95, 200, _(\"\\\nOh Mann, ich fühle mich\\n\\\nso kopflos! Kennst Du\\n\\\njemanden, der nach einem\\n\\\nKörper sucht? Unten?\\n\\\nOkay, dann los!\"))\n\nDEFINE_DIALOG(DIALOG_111, 1, 3, 95, 200, _(\"\\\nBoah, welch komfortables\\n\\\nUnterteil!\\n\\\nIch bin so glücklich...\\n\\\nHier, nimm den Stern.\\n\\\nIch hoffe, er bringt\\n\\\nDir Glück!\"))\n\nDEFINE_DIALOG(DIALOG_112, 1, 4, 30, 200, _(\"\\\nSammle so viele Münzen,\\n\\\nwie Du finden kannst.\\n\\\nSie geben Dir verlorene\\n\\\nEnergie zurück.\\n\\\nDie Bestleistung jeder\\n\\\nWelt wird gespeichert.\\n\\\nDu kannst sie jederzeit\\n\\\nabrufen.\\n\\\nIn einigen Welten wirst\\n\\\nDu transparenten Herzen\\n\\\nbegegnen. Auch sie füllen\\n\\\nDeinen Power-Meter auf.\\n\\\nJe schneller Du das Herz\\n\\\npassierst, desto mehr\\n\\\nverlorene Energie wird\\n\\\nersetzt.\"))\n\nDEFINE_DIALOG(DIALOG_113, 1, 6, 30, 200, _(\"\\\nIn den roten, blauen und\\n\\\ngrünen Blöcken befinden\\n\\\nsich verschiedene Mützen.\\n\\\nDu mußt die versteckten\\n\\\nSchalter finden, um die\\n\\\nBlöcke öffnen zu können.\"))\n\nDEFINE_DIALOG(DIALOG_114, 1, 4, 95, 200, _(\"\\\nDas gibt es doch gar\\n\\\nnicht! Was willst Du\\n\\\nWicht hier in meinem\\n\\\nReich?\\n\\\nIch werde Dich lehren,\\n\\\nmeine Befehle zu...\\n\\\nOh, diese vermaledeiten\\n\\\nRückenschmerzen...!\"))\n\nDEFINE_DIALOG(DIALOG_115, 1, 4, 95, 200, _(\"\\\nUnglaublich! Du hast mich\\n\\\nvon meinen Kreuzschmerzen\\n\\\nbefreit! Als Dank gebe\\n\\\nich Dir diesen Stern!\"))\n\nDEFINE_DIALOG(DIALOG_116, 1, 4, 95, 200, _(\"\\\nWaaaaa...wie? Du hast\\n\\\nmich besiegt...\\n\\\nIch verneige mein Haupt\\n\\\nvor Deiner Größe!\\n\\\nAber Du mußt Dich\\n\\\nvorsehen!\\n\\\nBowser wird nicht so\\n\\\nleicht zu besiegen sein.\\n\\\nIch gebe Dir diesen\\n\\\nStern, um Dir meine\\n\\\nDemut zu beweisen.\\n\\\nTrage ihn mit Stolz.\\n\\\nWenn Du mich wiedersehen\\n\\\nwillst, wähle den ersten\\n\\\nStern des Kursmenüs an!\\n\\\nBis dann...\"))\n\nDEFINE_DIALOG(DIALOG_117, 1, 4, 95, 200, _(\"\\\nSchritte? Grabräuber?\\n\\\nWer wagt es, den ewigen\\n\\\nFrieden unseres Grabes\\n\\\nzu stören?\\n\\\nJenem sei gewiß, daß\\n\\\nwir diesen Frevel mit\\n\\\naller Härte bestrafen\\n\\\nwerden!\\n\\\nUnser Zorn wird ihn\\n\\\nzermalmen und Ra stehe\\n\\\nihm bei, daß es schnell\\n\\\ngehen wird...\"))\n\nDEFINE_DIALOG(DIALOG_118, 1, 6, 95, 200, _(\"\\\nWir sind besiegt...\\n\\\nDu hast den Fluch des\\n\\\nPharaos gebrochen.\\n\\\nJetzt finden wir unseren\\n\\\nverdienten Frieden. Nimm\\n\\\nals Dank diesen Stern!\"))\n\nDEFINE_DIALOG(DIALOG_119, 1, 6, 30, 200, _(\"\\\nGrrrr, offensichtlich war\\n\\\nich ein wenig unachtsam.\\n\\\nAber ich habe noch immer\\n\\\ndie Prinzessin und die\\n\\\nPower-Sterne in meiner\\n\\\nGewalt!\\n\\\nIch werde dafür sorgen,\\n\\\ndaß Du keine weiteren\\n\\\nSterne erlangen wirst.\\n\\\nUnser nächstes Treffen\\n\\\nwird einen anderen Sieger\\n\\\nhaben...bestimmt!\"))\n\nDEFINE_DIALOG(DIALOG_120, 1, 4, 30, 200, _(\"\\\nWoaaaah, Du hast schon\\n\\\nwieder gewonnen.\\n\\\nHat mich etwa die Kraft\\n\\\nder Sterne verlassen?\\n\\\nBetrachte diesen Kampf\\n\\\nals Unentschieden!\\n\\\nDas nächste Mal bin ich\\n\\\nbesser vorbereitet!\\n\\\nIch warte am höchsten\\n\\\nPunkt des Schlosses auf\\n\\\nDich...dort werden wir\\n\\\nsehen, wer stärker ist!\"))\n\nDEFINE_DIALOG(DIALOG_121, 1, 6, 30, 200, _(\"\\\nAaaaaarrrgghh!\\n\\\nDu...hast...gewonnen!\\n\\\nIch wollte mit meinen\\n\\\nTruppen dieses Schloss\\n\\\nerobern, doch Du hast\\n\\\nmeine Pläne vereitelt.\\n\\\nDer Frieden kehrt\\n\\\nzurück in die Welten\\n\\\nder Wandgemälde...leider!\\n\\\nJetzt bleibt mir nichts\\n\\\nanderes mehr übrig, als\\n\\\nmein Ende abzuwarten...\"))\n\nDEFINE_DIALOG(DIALOG_122, 1, 4, 30, 200, _(\"\\\nDas Schwarze Loch\\n\\\nRechts: Arbeitsplattform\\n\\\n////Nebellabyrinth\\n\\\nLinks:/Höhlensee\"))\n\nDEFINE_DIALOG(DIALOG_123, 1, 3, 30, 200, _(\"\\\nTitanenhöhle\\n\\\nRechts: Wasserfall\\n\\\nLinks:/Grüner Schalter\"))\n\nDEFINE_DIALOG(DIALOG_124, 1, 5, 30, 200, _(\"\\\nArbeitsplattform\\n\\\nZur Beachtung:\\n\\\nAktiviere einen der\\n\\\nRichtungspfeile, um die\\n\\\nPlattform zu bewegen.\"))\n\nDEFINE_DIALOG(DIALOG_125, 1, 3, 30, 200, _(\"\\\nRechts ist der Ausgang\\n\\\ndes Nebellabyrinths. Bitte\\n\\\nEingang links benutzen!\"))\n\nDEFINE_DIALOG(DIALOG_126, 1, 3, 30, 200, _(\"\\\nOben:/ Schwarzes Loch\\n\\\nRechts: Arbeitsplattform\\n\\\n////Nebellabyrinth\"))\n\nDEFINE_DIALOG(DIALOG_127, 1, 4, 30, 200, _(\"\\\nHöhlensee\\n\\\nRechts: Titanenhöhle\\n\\\nLinks:/Verlassene Mine\\n\\\n////(Geschlossen!!!)\\n\\\nHier lebt ein Seemonster.\\n\\\nFühre auf seinem Rücken\\n\\\neine Stampfattacke aus,\\n\\\ndamit es den Kopf senkt!\"))\n\nDEFINE_DIALOG(DIALOG_128, 1, 4, 95, 200, _(\"\\\nHey, es ist gegen die\\n\\\nköniglichen Regeln, den\\n\\\nHerrscher aus dem Ring\\n\\\nzu werfen!\"))\n\nDEFINE_DIALOG(DIALOG_129, 1, 4, 30, 200, _(\"\\\nHerzlich willkommen!\\n\\\nIn diesem Kurs kannst\\n\\\nDu den blauen Schalter\\n\\\nentdecken.\\n\\\nLöst Du ihn aus, kannst\\n\\\nDu in allen blauen Blöcken\\n\\\nTarnkappen finden, die\\n\\\nDich unsichtbar machen!\\n\\\nAuf diese Weise kannst Du\\n\\\ndurch bestimmte Wände\\n\\\ngehen und Gegnern\\n\\\nungesehen ausweichen.\"))\n\nDEFINE_DIALOG(DIALOG_130, 1, 4, 30, 200, _(\"\\\nHerzlich willkommen!\\n\\\nIn diesem Kurs kannst\\n\\\nDu den grünen Schalter\\n\\\nentdecken.\\n\\\nLöst Du ihn aus, kannst\\n\\\nDu in allen grünen Blöcken\\n\\\nTitanenkappen finden, die\\n\\\nDich unbesiegbar machen.\\n\\\nBist Du mit diesen Mützen\\n\\\nausgerüstet, kannst Du\\n\\\nunter Wasser laufen und\\n\\\nbrauchst nicht zu atmen.\"))\n\nDEFINE_DIALOG(DIALOG_131, 1, 4, 30, 200, _(\"\\\nHerzlich willkommen!\\n\\\nIn diesem Kurs kannst\\n\\\nDu den roten Schalter\\n\\\nentdecken.\\n\\\nLöst Du ihn aus, kannst\\n\\\nDu in allen roten Blöcken\\n\\\nFederkappen finden, mit\\n\\\ndenen Du fliegen kannst.\\n\\\nBenutze den Dreisprung,\\n\\\num den Flug zu starten.\\n\\\nDie Kontrolle funktioniert\\n\\\nwie bei einem Flugzeug.\\n\\\nBewege den Analog-Stick\\n\\\nnach vorne, um zu sinken,\\n\\\nund nach hinten, um zu\\n\\\nsteigen!\"))\n\nDEFINE_DIALOG(DIALOG_132, 1, 3, 30, 200, _(\"\\\nTsetsetse...Mario!\\n\\\nDu versuchst doch nicht\\n\\\netwa, mich zu betrügen?\\n\\\nAbkürzungen sind nicht\\n\\\nerlaubt.\\n\\\nDu bist disqualifiziert!\"))\n\nDEFINE_DIALOG(DIALOG_133, 1, 5, 30, 200, _(\"\\\nIch freue mich, Dich zu\\n\\\nsehen. Die Prinzessin...\\n\\\nich...und alle anderen\\n\\\nsind in den Wänden des\\n\\\nSchlosses gefangen.\\n\\\nBowser hat die Sterne\\n\\\nentwendet und benutzt\\n\\\nsie, um seine eigenen\\n\\\nWelten in den Gemälden\\n\\\nzu erschaffen.\\n\\\nDu mußt die Power-Sterne\\n\\\nfinden. Mit ihrer Hilfe\\n\\\nkannst Du Bowsers Siegel\\n\\\nan den Türen des Schlosses\\n\\\nbrechen.\\n\\\nIm Erdgeschoß gibt es\\n\\\nvier Welten. Beginne in\\n\\\nder Welt der Bob-Ombs.\\n\\\nDas ist die einzige Tür,\\n\\\ndie nicht versiegelt ist.\\n\\\nHast Du acht Sterne\\n\\\ngesammelt, kannst Du die\\n\\\nTür mit dem großen Stern\\n\\\nöffnen. Dahinter befindet\\n\\\nsich die Prinzessin!\"))\n\nDEFINE_DIALOG(DIALOG_134, 1, 4, 30, 200, _(\"\\\nAm Beginn jeder Welt\\n\\\nerhältst Du einen Hinweis,\\n\\\nwo der nächste Stern\\n\\\nzu finden ist.\\n\\\nDu kannst sie in beliebiger\\n\\\nReihenfolge sammeln, aber\\n\\\neinige erscheinen nur unter\\n\\\nbestimmten Bedingungen.\\n\\\nNachdem Du ein paar\\n\\\nSterne gefunden hast,\\n\\\nkannst Du Dich in anderen\\n\\\nWelten umsehen.\"))\n\nDEFINE_DIALOG(DIALOG_135, 1, 5, 30, 200, _(\"\\\nBowser hat sich die\\n\\\nPower-Sterne unter den\\n\\\nNagel gerissen. In jeder\\n\\\nWelt hat er sechs Sterne\\n\\\nversteckt.\\n\\\nManche der Sterne kannst\\n\\\nDu aber erst finden, wenn\\n\\\nDu die farbigen Schalter\\n\\\nin den Schalterpalästen\\n\\\nausgelöst hast.\\n\\\nBereits gefundene Sterne\\n\\\nkannst Du zu Beginn jeder\\n\\\nWelt sehen. Triff besiegte\\n\\\nGegner, indem Du erneut\\n\\\nihren Stern anwählst.\"))\n\nDEFINE_DIALOG(DIALOG_136, 1, 4, 30, 200, _(\"\\\nWow, Du hast bereits so\\n\\\nviele Sterne gefunden?\\n\\\nIch bin sicher, das war\\n\\\nkein Kinderspiel!\\n\\\nIch habe noch einige Tips,\\n\\\ndie Dir bei der Suche nach\\n\\\nden Power-Sternen von\\n\\\nNutzen sein könnten:\\n\\\nSammle Münzen, um Deine\\n\\\nEnergie aufzufüllen. Ihre\\n\\\nFarbe entscheidet, wieviel\\n\\\nEnergie Du erhältst.\\n\\\nGelbe Münzen geben eine,\\n\\\nrote Münzen zwei und\\n\\\nblaue Münzen sogar fünf\\n\\\nEnergieeinheiten zurück.\\n\\\nDamit die blauen Münzen\\n\\\nsichtbar werden, mußt\\n\\\nDu ihre Schalter in den\\n\\\nBoden stampfen.\\n\\\nHalte Verletzungen gering,\\n\\\nindem Du bei Stürzen im\\n\\\nletzen Moment eine\\n\\\nStampfattacke ausführst.\"))\n\nDEFINE_DIALOG(DIALOG_137, 1, 5, 30, 200, _(\"\\\nVielen Dank! Du hast\\n\\\nschon sehr viele Sterne\\n\\\ngesammelt und Bowser in\\n\\\nein höheres Stockwerk\\n\\\nverbannt.\\n\\\nWußtest Du eigentlich,\\n\\\ndaß Du in jeder Welt\\n\\\neinen geheimen Stern\\n\\\nerhältst, wenn Du\\n\\\n100 Münzen sammelst?\"))\n\nDEFINE_DIALOG(DIALOG_138, 1, 4, 30, 200, _(\"\\\nUnten:/Höhlensee\\n\\\nLinks:/Schwarzes Loch\\n\\\nRechts: Nebellabyrinth\\n\\\n////(Geschlossen!!!)\"))\n\nDEFINE_DIALOG(DIALOG_139, 1, 4, 30, 200, _(\"\\\nAutomatische Plattform\\n\\\nSobald Du diese Plattform\\n\\\nbetrittst, setzt sie sich\\n\\\nin Bewegung.\\n\\\nSie folgt einem\\n\\\nprogrammierten Kurs und\\n\\\nverschwindet automatisch,\\n\\\nwenn Du sie verläßt.\"))\n\nDEFINE_DIALOG(DIALOG_140, 1, 6, 30, 200, _(\"\\\nArbeitsplattform\\n\\\nRechts: Nebellabyrinth\\n\\\n////Eingang\\n\\\nLinks:/Schwarzes Loch\\n\\\n////Aufzug 1\\n\\\nPfeil:/Standort\"))\n\nDEFINE_DIALOG(DIALOG_141, 1, 5, 150, 200, _(\"\\\nDu hast einen der\\n\\\ngestohlenen Power-Sterne\\n\\\ngefunden.\\n\\\nDamit kannst Du einige\\n\\\nversiegelte Türen öffnen.\\n\\\nVersuch's mal im Zimmer\\n\\\nder Prinzessin im\\n\\\n1. Stock oder in\\n\\\nWummps Festung im\\n\\\nErdgeschoß der Vorhalle.\\n\\\nHalte Bowser auf und\\n\\\nrette uns und die\\n\\\nPower-Sterne.\\n\\\nWir zählen auf Dich und\\n\\\ndrücken Dir die Daumen.\"))\n\nDEFINE_DIALOG(DIALOG_142, 1, 5, 150, 200, _(\"\\\nDu hast drei magische\\n\\\nPower-Sterne gesammelt.\\n\\\nJetzt kannst Du jede Tür\\n\\\nöffnen, deren Siegel eine\\n\\\nDrei trägt.\\n\\\nDu kannst die Türen so oft\\n\\\npassieren, wie Du willst.\\n\\\nAber paß auf: In höheren\\n\\\nStockwerken werden die\\n\\\nGegner viel stärker!\"))\n\nDEFINE_DIALOG(DIALOG_143, 1, 6, 150, 200, _(\"\\\nDu hast acht Sterne\\n\\\ngesammelt. Jetzt kannst\\n\\\nDu die Tür mit dem\\n\\\ngroßen Stern öffnen.\\n\\\nDie Prinzessin hält sich\\n\\\ndahinter auf!\"))\n\nDEFINE_DIALOG(DIALOG_144, 1, 5, 150, 200, _(\"\\\nDu hast 30 Power-Sterne\\n\\\ngesammelt. Jetzt kannst\\n\\\nDu die Tür mit dem\\n\\\ngroßen Stern öffnen. Aber\\n\\\nwarte noch einen Moment!\\n\\\nHast Du die beiden Säulen\\n\\\nin den Boden gestampft?\\n\\\nUnd Du hast doch wohl\\n\\\nnicht Deine Mütze\\n\\\nverloren, oder?\\n\\\nWenn ja, mußt Du den\\n\\\nRiesengeier mit einer\\n\\\nStampfattacke besiegen!\\n\\\nAch ja: Bowser hält sich\\n\\\njetzt im Untergrund auf.\"))\n\nDEFINE_DIALOG(DIALOG_145, 1, 4, 150, 200, _(\"\\\nDu hast 50 Power-Sterne\\n\\\ngesammelt. Jetzt kannst\\n\\\nDu die Tür mit dem großen\\n\\\nStern im 3. Stock öffnen.\\n\\\nHast Du bereits alle\\n\\\nSchalterpaläste gefunden?\\n\\\nDiese besonderen Mützen\\n\\\nsind sehr nützlich.\"))\n\nDEFINE_DIALOG(DIALOG_146, 1, 6, 150, 200, _(\"\\\nDu hast 70 Power-Sterne\\n\\\ngesammelt. Jetzt kannst\\n\\\nDu das Geheimnis der\\n\\\nendlosen Treppe lüften.\\n\\\nBegib Dich zum finalen\\n\\\nDuell mit Bowser!\"))\n\nDEFINE_DIALOG(DIALOG_147, 1, 4, 30, 200, _(\"\\\nBevor Du weitergehst,\\n\\\nsolltest Du nach den\\n\\\nversteckten Schaltern\\n\\\nsuchen.\\n\\\nHast Du sie gefunden,\\n\\\nkannst Du in allen\\n\\\nbunten Blöcken besondere\\n\\\nMützen finden.\\n\\\nIn roten Blöcken findest\\n\\\nDu Federkappen, in\\n\\\ngrünen Titanenkappen\\n\\\nund in blauen Tarnkappen.\\n\\\nAllerdings mußt Du bereits\\n\\\neinige Sterne besitzen, um\\n\\\ndie Schalterpaläste finden\\n\\\nzu können!\"))\n\nDEFINE_DIALOG(DIALOG_148, 1, 4, 30, 200, _(\"\\\nAchtung, Achtung!\\n\\\nVersuche bloß nicht, den\\n\\\nBerg mit dem Dreisprung\\n\\\nzu erreichen!\\n\\\nAußerdem ist das Wasser\\n\\\nsehr kalt - Deine Fitness\\n\\\nkönnte bei einem Bad\\n\\\ngroßen Schaden nehmen!\"))\n\nDEFINE_DIALOG(DIALOG_149, 1, 5, 30, 200, _(\"\\\nWillkommen auf der\\n\\\nRutschbahn der Prinzessin.\\n\\\nHier befindet sich ein\\n\\\nStern, den Bowser nicht\\n\\\nentdeckt hat.\\n\\\nDrücke den Analog-Stick\\n\\\nnach vorne, um zu\\n\\\nbeschleunigen.\\n\\\nWenn Du sehr schnell bist,\\n\\\nerhältst Du den Stern.\"))\n\nDEFINE_DIALOG(DIALOG_150, 1, 5, 30, 200, _(\"\\\nAaaaaah! Sieh Dir diese\\n\\\nSchweinerei an. Du hast\\n\\\nmeine Wohnung überflutet.\\n\\\nMeine ganze Einrichtung\\n\\\nist ruiniert!\\n\\\nIch bin stinksauer! Alles\\n\\\nläuft schief, seit ich\\n\\\ndiesen dämlichen Stern\\n\\\ngefunden habe. Ich...\\n\\\nIch...werde...\"))\n\nDEFINE_DIALOG(DIALOG_151, 1, 5, 30, 200, _(\"\\\nIch halte das nicht mehr\\n\\\naus - zuerst überflutest\\n\\\nDu meine Wohnung und\\n\\\ndann hüpfst Du auch noch\\n\\\nauf mir herum!?\\n\\\nMir reicht's! Ich werde\\n\\\nDir richtiges Benehmen\\n\\\nbeibringen! Du...Ich...\\n\\\nwerde Dich...Ich werde\\n\\\nDich lehren...\"))\n\nDEFINE_DIALOG(DIALOG_152, 1, 4, 30, 200, _(\"\\\nOoooh, halt, halt! Ich\\n\\\ngebe auf. Hier, nimm\\n\\\nden Stern. Ich brauche\\n\\\nihn nicht mehr.\\n\\\nIch kann mir die Sterne\\n\\\ndurch das Loch in der\\n\\\nDecke ansehen, wann\\n\\\nimmer ich möchte.\"))\n\nDEFINE_DIALOG(DIALOG_153, 1, 4, 30, 200, _(\"\\\nHey, wer ist da? Wer\\n\\\nmeint, auf mir 'rumlaufen\\n\\\nzu müssen? Ein Eisfloh\\n\\\noder eine Schneefliege?\\n\\\nEgal, was es ist, auf\\n\\\njeden Fall stört es mich.\\n\\\nAber mein Eisatem wird\\n\\\nmich davon befreien!\"))\n\nDEFINE_DIALOG(DIALOG_154, 1, 6, 30, 200, _(\"\\\nPaß gut auf Deine Mütze\\n\\\nauf - ohne sie bist Du\\n\\\nleicht verletzbar!\\n\\\nWenn Du sie verloren hast,\\n\\\nfindest Du sie in\\n\\\nderselben Welt wieder.\"))\n\nDEFINE_DIALOG(DIALOG_155, 1, 3, 30, 200, _(\"\\\nHi, Mario! Ich erzähle\\n\\\nDir einige Geheimnisse\\n\\\ndes Schlosses:\\n\\\nEs heißt, daß der Spiegel\\n\\\ndes Spiegelsaals magische\\n\\\nFähigkeiten besitzt.\\n\\\nEr soll Dinge zeigen, die\\n\\\nDu mit bloßem Auge nicht\\n\\\nerkennen kannst.\\n\\\nAber das ist bestimmt\\n\\\nUnfug und lediglich\\n\\\ndummer Aberglaube.\\n\\\nBei der versunkenen\\n\\\nStadt ist das schon\\n\\\netwas anderes.\\n\\\nDu kannst den Pegel des\\n\\\nWassers durch die Sprünge\\n\\\nins Gemälde beeinflussen.\\n\\\nAm besten schaust Du Dir\\n\\\ndie Wirkung direkt im\\n\\\nGemälde an!\"))\n\nDEFINE_DIALOG(DIALOG_156, 1, 4, 30, 200, _(\"\\\nDiese Uhr ist wirklich\\n\\\nungewöhnlich. Ihr Inneres\\n\\\nverändert sich im Laufe\\n\\\nder Zeit.\"))\n\nDEFINE_DIALOG(DIALOG_157, 1, 5, 30, 200, _(\"\\\nAchte auf den Treibsand!\\n\\\nSolltest Du einmal darin\\n\\\nversinken, findet Dein\\n\\\nGemäldebesuch ein rasches\\n\\\nEnde.\\n\\\nSchwarze Löcher sind\\n\\\nbodenlose Fallen. Du wirst\\n\\\ndas Gemälde neu betreten\\n\\\nmüssen, wenn Du in eines\\n\\\ndieser Löcher hineinfällst.\"))\n\nDEFINE_DIALOG(DIALOG_158, 1, 6, 30, 200, _(\"\\\nMit dem richtigen Timing\\n\\\nkannst Du sehr hoch\\n\\\nspringen. Den Dreisprung\\n\\\nkannst Du ausführen, wenn\\n\\\nDu rennst und dreimal\\n\\\nhintereinander springst.\\n\\\nWandsprünge sind eine\\n\\\neffektive Methode, um\\n\\\nhohe Stellen zu erreichen.\\n\\\nSpringe an eine Wand.\\n\\\nSobald Du sie berührst,\\n\\\nmußt Du erneut springen!\"))\n\nDEFINE_DIALOG(DIALOG_159, 1, 4, 30, 200, _(\"\\\nGehst Du in die Hocke und\\n\\\ndrückst den Sprungknopf,\\n\\\nkannst Du einen\\n\\\nRückwärtssalto ausführen.\\n\\\nDu machst einen\\n\\\nWeitsprung, wenn Du im\\n\\\nRennen den [Z]-Knopf\\n\\\ndrückst und springst.\"))\n\nDEFINE_DIALOG(DIALOG_160, 1, 6, 30, 200, _(\"\\\nDrücke im Rennen den\\n\\\n[B]-Knopf, um einen\\n\\\nHechtsprung zu machen.\\n\\\nMit dem [A]- oder [B]-Knopf\\n\\\nkommt Mario auf die Füße\\n\\\nzurück.\"))\n\nDEFINE_DIALOG(DIALOG_161, 1, 5, 30, 200, _(\"\\\nHey... Mario!!! Seit\\n\\\nunserem letzten Abenteuer\\n\\\nist viel Zeit vergangen.\\n\\\nIch freue mich, Dich\\n\\\nwiederzusehen.\\n\\\nMan erzählte mir, daß ich\\n\\\nDich hier treffen könnte,\\n\\\naber ich hatte die\\n\\\nHoffnung schon fast\\n\\\naufgegeben.\\n\\\nIst es wahr? Du hast\\n\\\nBowser besiegt und alle\\n\\\ngestohlenen Power-Sterne\\n\\\nzurückerobert?\\n\\\nUnglaublich!!!\\n\\\nUnd die Prinzessin?\\n\\\nDu hast sie gerettet?\\n\\\nCool! Aber ich wußte\\n\\\nnatürlich, daß Du es\\n\\\nschaffen würdest.\\n\\\nNun habe ich noch eine\\n\\\nganz spezielle Nachricht\\n\\\nfür Dich:\\n\\\nDanke, daß Du SUPER\\n\\\nMARIO 64 gespielt hast.\\n\\\nDu hast jetzt alle Sterne\\n\\\ngefunden und damit das\\n\\\nSpiel beendet. Aber wir\\n\\\nhaben noch eine kleine\\n\\\nÜberraschung für Dich!\\n\\\nWir hoffen, sie wird Dir\\n\\\ngefallen, denn du kannst\\n\\\ndas Spiel nochmals unter\\n\\\nveränderten Bedingungen\\n\\\nspielen. Viel Spaß!\\n\\\nEs könnte sein, daß Du\\n\\\ndabei neue Entdeckungen\\n\\\nmachst, die Dir bis jetzt\\n\\\nverborgen geblieben sind.\\n\\\nDas Super Mario 64 Team\"))\n\nDEFINE_DIALOG(DIALOG_162, 1, 4, 30, 200, _(\"\\\nNein, nein, nein! Nicht\\n\\\nDu schon wieder! Ich habe\\n\\\njetzt wirklich keine Zeit,\\n\\\nüber Sterne zu quatschen!\\n\\\nHier, nimm ihn und laß\\n\\\nmich runter. Ich habe noch\\n\\\nwichtige Geschäfte zu\\n\\\nerledigen!\"))\n\nDEFINE_DIALOG(DIALOG_163, 1, 5, 30, 200, _(\"\\\nIch glaub's nicht! Du hast\\n\\\nmich besiegt...wie konnte\\n\\\ndas nur geschehen. Meine\\n\\\nTruppen, die Sterne...\\n\\\nalles umsonst!\\n\\\nWas??? Es gab insgesamt\\n\\\n120 Sterne im Schloss zu\\n\\\nfinden? Dann habe ich\\n\\\nwohl einige bei meiner\\n\\\nSuche übersehen!\\n\\\nJetzt kehrt der Frieden\\n\\\nzurück in die Welten der\\n\\\nGemälde - was für ein\\n\\\nfürchterlicher Gedanke...\\n\\\nAaaaaarrrgghhhh!!!\\n\\\nDas kann ich mir nicht\\n\\\nlänger ansehen - ich\\n\\\nverschwinde. So long...\\n\\\nBis zum nächsten Mal.\\n\\\nIch komme wieder...\"))\n\nDEFINE_DIALOG(DIALOG_164, 1, 6, 30, 200, _(\"\\\nHi! Wie geht's, Mario?\\n\\\nIch bin zwar etwas außer\\n\\\nÜbung, aber ein Rennen\\n\\\ngegen den Schlidderkönig\\n\\\nist immer eine große\\n\\\nHerausforderung.\\n\\\nAlso, Kumpel, wie steht's?\\n\\\nSollen wir ein kleines\\n\\\nMatch wagen?\\n\\\n\\n\\\n//Okay!///Später!\"))\n\nDEFINE_DIALOG(DIALOG_165, 1, 4, 30, 200, _(\"\\\nSei vorsichtig, wenn Du\\n\\\num den Pfahl herumrennst,\\n\\\ndamit Dir nicht schlecht\\n\\\nwird!\"))\n\nDEFINE_DIALOG(DIALOG_166, 1, 5, 30, 200, _(\"\\\nIch mache gerade einen\\n\\\nkleinen Waldlauf. Komm\\n\\\ndoch später wieder\\n\\\nvorbei!\\n\\\nDein Freund Koopa\"))\n\nDEFINE_DIALOG(DIALOG_167, 1, 4, 30, 200, _(\"\\\nDort vorne ist das\\n\\\nSchloss der Prinzessin.\\n\\\nSieh Dich zunächst hier\\n\\\nim Schlossgarten um.\\n\\\nDie Steuerung ist ganz\\n\\\neinfach:\\n\\\nDrücke den [A]-Knopf, um\\n\\\nzu springen.\\n\\\nSchläge kannst Du mit\\n\\\ndem [B]-Knopf ausführen.\\n\\\nDrückst Du den [Z]-Knopf,\\n\\\nduckt sich Mario.\\n\\\nSchilder kannst Du mit\\n\\\ndem [A]- oder [B]-Knopf\\n\\\nlesen, wenn Du direkt\\n\\\ndavor stehst.\"))\n\nDEFINE_DIALOG(DIALOG_168, 1, 4, 30, 200, _(\"\\\nBist Du immer noch hier?\\n\\\nFindest Du nicht, daß\\n\\\nDu bereits genug Schaden\\n\\\nangerichtet hast?\"))\n\nDEFINE_DIALOG(DIALOG_169, 1, 4, 30, 200, _(\"\\\nDies ist die erste und\\n\\\nletzte Warnung:\\n\\\nDas Betreten dieser\\n\\\nHöhle ist verboten!!!\\n\\\nWer sich hier ohne meine\\n\\\nErlaubnis Zutritt\\n\\\nverschafft, handelt sich\\n\\\neine Menge Ärger ein!!!\"))\n"
  },
  {
    "path": "text/debug_text.inc.c",
    "content": "// == debug table ==\n\n#ifndef VERSION_EU\n\n// (this wasn't translated for US, and was removed in EU)\n\nstatic const u8 Debug0[] = {\n    _(\"ＳＴＡＧＥ　ＳＥＬＥＣＴ\\n\"\n      \"　つづける？\\n\"\n      \"　１　マウンテン\\n\"\n      \"　２　ファイアーバブル\\n\"\n      \"　３　スノースライダー\\n\"\n      \"　４　ウォーターランド\\n\"\n      \"　　　クッパ１ごう\\n\"\n      \"　もどる\")\n};\n\nstatic const u8 Debug1[] = {\n    _(\"ＰＡＵＳＥ　　　　\\n\"\n      \"　つづける？\\n\"\n      \"　やめる　？\")\n};\n\nstatic const struct DialogEntry debug_text_entry_0 = {\n    1, 8, 30, 200, Debug0\n};\n\nstatic const struct DialogEntry debug_text_entry_1 = {\n    1, 3, 100, 150, Debug1\n};\n\nconst struct DialogEntry *const seg2_debug_text_table[] = {\n    &debug_text_entry_0, &debug_text_entry_1, NULL,\n};\n\n#endif\n"
  },
  {
    "path": "text/define_courses.inc.c",
    "content": "#define COURSE_ACTS(id, name, a,b,c,d,e,f) \\\n    static const u8 GLUE2(COURSE_TABLE, _ ## id)[] = { name };\n\n#define SECRET_STAR(id, name) \\\n    static const u8 GLUE2(COURSE_TABLE, _ ## id)[] = { name };\n\n#define CASTLE_SECRET_STARS(str) \\\n    static const u8 GLUE2(COURSE_TABLE, _castle_secret_stars)[] = { str };\n\n#define EXTRA_TEXT(id, str)\n\n#include \"courses.h\"\n\n#undef COURSE_ACTS\n#undef SECRET_STAR\n#undef CASTLE_SECRET_STARS\n\n#define COURSE_ACTS(id, name, a,b,c,d,e,f) GLUE2(COURSE_TABLE, _ ## id),\n#define SECRET_STAR(id, name) GLUE2(COURSE_TABLE, _ ## id),\n#define CASTLE_SECRET_STARS(str) GLUE2(COURSE_TABLE, _castle_secret_stars),\n\nconst u8 *const COURSE_TABLE[] = {\n#include \"courses.h\"\n    NULL\n};\n\n#undef COURSE_ACTS\n#undef SECRET_STAR\n#undef CASTLE_SECRET_STARS\n\n"
  },
  {
    "path": "text/define_text.inc.c",
    "content": "// == dialog ==\n// (defines en_dialog_table etc.)\n\n#define DEFINE_DIALOG(id, _1, _2, _3, _4, str) \\\n    static const u8 dialog_text_ ## id[] = { str };\n\n#include \"dialogs.h\"\n\n#undef DEFINE_DIALOG\n#define DEFINE_DIALOG(id, unused, linesPerBox, leftOffset, width, _) \\\n    static const struct DialogEntry dialog_entry_ ## id = { \\\n        unused, linesPerBox, leftOffset, width, dialog_text_ ## id \\\n    };\n\n#include \"dialogs.h\"\n\n#undef DEFINE_DIALOG\n#define DEFINE_DIALOG(id, _1, _2, _3, _4, _5) &dialog_entry_ ## id,\n\nconst struct DialogEntry *const seg2_dialog_table[] = {\n#include \"dialogs.h\"\n    NULL\n};\n\n\n// == courses ==\n// (defines en_course_name_table etc.)\n// The game duplicates this in levels/menu/leveldata.c in EU, so we split\n// it out into a separate include file.\n\n#define COURSE_TABLE seg2_course_name_table\n#include \"define_courses.inc.c\"\n\n// == acts ==\n// (defines en_act_name_table etc.)\n\n#define COURSE_ACTS(id, name, a,b,c,d,e,f) \\\n    static const u8 act_name_ ## id ## _1[] = { a }; \\\n    static const u8 act_name_ ## id ## _2[] = { b }; \\\n    static const u8 act_name_ ## id ## _3[] = { c }; \\\n    static const u8 act_name_ ## id ## _4[] = { d }; \\\n    static const u8 act_name_ ## id ## _5[] = { e }; \\\n    static const u8 act_name_ ## id ## _6[] = { f };\n\n#define SECRET_STAR(id, name)\n#define CASTLE_SECRET_STARS(str)\n\n#undef EXTRA_TEXT\n#define EXTRA_TEXT(id, str) \\\n    static const u8 extra_text_ ## id[] = { str };\n\n#include \"courses.h\"\n\n#undef COURSE_ACTS\n#undef EXTRA_TEXT\n\n#define COURSE_ACTS(id, name, a,b,c,d,e,f) \\\n    act_name_ ## id ## _1, act_name_ ## id ## _2, act_name_ ## id ## _3, \\\n    act_name_ ## id ## _4, act_name_ ## id ## _5, act_name_ ## id ## _6,\n#define EXTRA_TEXT(id, str) extra_text_ ## id,\n\nconst u8 *const seg2_act_name_table[] = {\n#include \"courses.h\"\n    NULL\n};\n"
  },
  {
    "path": "text/fr/courses.h",
    "content": "COURSE_ACTS(COURSE_BOB, _(\" 1 BATAILLE DE BOB-OMB\"),\n       _(\"ROI BOB-OMB DU SOMMET\")         , _(\"COURSE CONTRE KOOPA-RAPIDO\")    , _(\"CANON VERS L'ILE PERCHEE\"),\n       _(\"LES 8 PIECES ROUGES\")           , _(\"VOL DU MARIO AILE\")             , _(\"DERRIERE LA CAGE DE CHOMP\"))\n\nCOURSE_ACTS(COURSE_WF, _(\" 2 FORTERESSE DE WHOMP\"),\n       _(\"DESTRUCTION DU GROS WHOMP\")     , _(\"EN HAUT DE LA FORTERESSE\")      , _(\"CANON VERS LES CIEUX\"),\n       _(\"PIECES ROUGES DANS LES AIRS\")   , _(\"TOMBEZ DANS LA CAGE PERCHEE\")   , _(\"CANON VERS UN MUR...\"))\n\nCOURSE_ACTS(COURSE_JRB, _(\" 3 BAIE DES PIRATES\"),\n       _(\"PILLEZ LE BATEAU COULE\")        , _(\"L'ANGUILLE VEUT FAIRE JOUJOU?\") , _(\"TRESOR DANS LA CAVERNE\"),\n       _(\"PIECES ROUGES A BORD!\")         , _(\"CANON VERS LES PILIERS\")        , _(\"DANS LE GEYSER\"))\n\nCOURSE_ACTS(COURSE_CCM, _(\" 4 MONTAGNE GLA-GLA\"),\n       _(\"GLISSADE SUR GLACE\")            , _(\"PETIT PINGOUIN PERDU\")          , _(\"COURSE DU PINGOUIN\"),\n       _(\"8 PIECES ROUGES GIVREES\")       , _(\"BONHOMME DE NEIGE SANS TETE\")   , _(\"MURS POUR REBONDIR\"))\n\nCOURSE_ACTS(COURSE_BBH, _(\" 5 MANOIR DE BIG BOO\"),\n       _(\"CHERCHEZ LE BIG BOO\")           , _(\"MANEGE DES BOOS PAS BEAUX\")     , _(\"SECRET DES LIVRES HANTES\"),\n       _(\"TROUVEZ LES 8 PIECES ROUGES\")   , _(\"BALCON DE BIG BOO\")             , _(\"UN OEIL SUR LES SALLES SECRETES\"))\n\nCOURSE_ACTS(COURSE_HMC, _(\" 6 CAVERNE BRUMEUSE\"),\n       _(\"GROS BIBI DE LA CAVERNE\")       , _(\"CHARIOT POUR PIECES ROUGES\")    , _(\"COURSE DE METAL MARIO\"),\n       _(\"DANS LE LABYRINTHE TOXIQUE\")    , _(\"AU-DESSUS DES GAZ...\")          , _(\"ATTENTION AUX BOULETS\"))\n\nCOURSE_ACTS(COURSE_LLL, _(\" 7 LAVES FATALES\"),\n       _(\"CRAMEZ LE GROS MOCHE\")          , _(\"POUSSEZ LES PETITS MOCHES\")     , _(\"PUZZLE DE 8 PIECES ROUGES\"),\n       _(\"BALADE SUR LA BUCHE\")           , _(\"CHAUD DANS LE VOLCAN\")          , _(\"ASCENCEUR DANS LE VOLCAN\"))\n\nCOURSE_ACTS(COURSE_SSL, _(\" 8 SABLES TROP MOUVANTS\"),\n       _(\"DANS LES GRIFFES DU VAUTOUR\")   , _(\"AU SOMMET DE LA PYRAMIDE\")      , _(\"DANS L'ANCIENNE PYRAMIDE\"),\n       _(\"LES QUATRE PILIERS DE LA FOI\")  , _(\"VOL VERS LES PIECES ROUGES\")    , _(\"ENIGME DE LA PYRAMIDE\"))\n\nCOURSE_ACTS(COURSE_DDD, _(\" 9 AFFREUX BASSIN\"),\n       _(\"SOUS-MARIN DE BOWSER\")          , _(\"COFFRES DANS LE COURANT\")       , _(\"PERCHES POUR PIECES ROUGES\"),\n       _(\"DANS LE GEYSER\")                , _(\"RECOMPENSE DE LA RAIE\")         , _(\"ASSOCIATION DE CASQUETTES...\"))\n\nCOURSE_ACTS(COURSE_SL, _(\"10 CHEZ LE ROI DES NEIGES\"),\n       _(\"GROSSE TETE DU BONHOMME\")       , _(\"COMBATTEZ LE GROS MOCHE GIVRE\") , _(\"DANS LE GLAÇON\"),\n       _(\"VRILLE DEPUIS LE LAC\")          , _(\"CARAPACE POUR PIECES ROUGES\")   , _(\"DANS L'IGLOO\"))\n\nCOURSE_ACTS(COURSE_WDW, _(\"11 MONDE TREMPE-SECHE\"),\n       _(\"MINI PLATES-FORMES FLECHEES!\")  , _(\"SUR LES TOITS\")                 , _(\"ENIGME DES CHIFFRES CACHES\"),\n       _(\"ASCENSEUR EXPRESS!\")            , _(\"PIECES ROUGES: VILLE ENGLOUTIE\"), _(\"COURSE EN VILLE\"))\n\nCOURSE_ACTS(COURSE_TTM, _(\"12 TROP HAUTE MONTAGNE\"),\n       _(\"ESCALADEZ LA MONTAGNE\")         , _(\"MYSTERE DE LA CAGE DU SINGE\")   , _(\"PIECES ROUGES SUR CHAMPIGNON\"),\n       _(\"PAROI MYSTERIEUSE\")             , _(\"PANORAMA DU PONT\")              , _(\"CANON VERS LE CHAMPIGNON\"))\n\nCOURSE_ACTS(COURSE_THI, _(\"13 ILE GRANDS-PETITS\"),\n       _(\"DETRUISEZ LES MAXI-CARNIVORES\") , _(\"AU SOMMET DE L'ILE DES GEANTS\") , _(\"KOOPA-RAPIDO, LA VENGEANCE\"),\n       _(\"CINQ TOUT PETITS SECRETS\")      , _(\"LES PIECES ROUGES DU GIGOTEUR\") , _(\"ENERVEZ LE GIGOTEUR\"))\n\nCOURSE_ACTS(COURSE_TTC, _(\"14 HORLOGE TIC-TAC\"),\n       _(\"ROULEMENTS DANS LA CAGE\")       , _(\"LES TROUS ET LE PENDULE\")       , _(\"CHEVAUCHEZ L'AIGUILLE\"),\n       _(\"L'ECRABOUILLEUR\")               , _(\"SAUTS SYNCHRONISES\")            , _(\"L'HEURE PILE POUR LES PIECES\"))\n\nCOURSE_ACTS(COURSE_RR, _(\"15 COURSE ARC-EN-CIEL\"),\n       _(\"CROISIERE SUR L'ARC-EN-CIEL\")   , _(\"MANOIR DANS LES AIRS\")          , _(\"LABYRINTHE DES PIECES ROUGES\"),\n       _(\"BALANÇOIRE CELESTE\")            , _(\"VICIEUX TRIANGLES!\")            , _(\"L'ARC-EN-CIEL ET AU-DELA\"))\n\nSECRET_STAR(COURSE_BITDW, _(\"   BOWSER DES TENEBRES\"))\nSECRET_STAR(COURSE_BITFS, _(\"   BOWSER DES LAVES\"))\nSECRET_STAR(COURSE_BITS, _(\"   BOWSER DES CIEUX\"))\nSECRET_STAR(COURSE_PSS, _(\"   GLISSADE DE LA PRINCESSE\"))\nSECRET_STAR(COURSE_COTMC, _(\"   MINE DES CASQUETTES-METAL\"))\nSECRET_STAR(COURSE_TOTWC, _(\"   INTERRUPTEUR DE LA TOUR AILEE\"))\nSECRET_STAR(COURSE_VCUTM, _(\"   INVISIBLE SOUS LES DOUVES\"))\nSECRET_STAR(COURSE_WMOTR, _(\"   AU-DELA DE L'ARC-EN-CIEL\"))\nSECRET_STAR(COURSE_SA, _(\"   AQUARIUM SECRET\"))\nSECRET_STAR(COURSE_CAKE_END, _(\"\"))\n\nCASTLE_SECRET_STARS(_(\"   ETOILES SECRETES\"))\n\nEXTRA_TEXT(0, _(\"UNE ETOILE SECRETE DU CHATEAU\"))\nEXTRA_TEXT(1, _(\"\"))\nEXTRA_TEXT(2, _(\"\"))\nEXTRA_TEXT(3, _(\"\"))\nEXTRA_TEXT(4, _(\"\"))\nEXTRA_TEXT(5, _(\"\"))\nEXTRA_TEXT(6, _(\"\"))\n"
  },
  {
    "path": "text/fr/dialogs.h",
    "content": "// Parameters: dialog enum ID, (unused), lines per box, left offset, width\n\nDEFINE_DIALOG(DIALOG_000, 1, 6, 30, 200, _(\"\\\nIncroyable! Vous voilà\\n\\\npropulsé au beau milieu\\n\\\nd'un champ de bataille!\\n\\\n\\n\\\n\\n\\\n\\n\\\nVous trouverez dans les\\n\\\nmondes au milieu des\\n\\\ntableaux les étoiles que\\n\\\nBowser a dérobées...\\n\\\n\\n\\\n\\n\\\nTout d'abord, parlez au\\n\\\ngentil Bob-omb (appuyez\\n\\\nsur [B] pour parler). Il\\n\\\nvous aidera sûrement,\\n\\\nainsi que ses camarades\\n\\\ndans d'autres niveaux...\\n\\\nPour lire une pancarte:\\n\\\narrêtez-vous, faites face\\n\\\nau panneau et appuyez sur\\n\\\n[B]. Appuyez sur [A] ou [B]\\n\\\npour lire la suite du\\n\\\ntexte.\"))\n\nDEFINE_DIALOG(DIALOG_001, 1, 5, 95, 200, _(\"\\\nAttention! Si tu te\\n\\\npromènes par ici, tu\\n\\\nrisques de te faire\\n\\\nécrabouiller par une bombe\\n\\\nà eau!\\n\\\nLes méchants Bob-ombs\\n\\\nadorent se bagarrer, et\\n\\\nils trouvent toujours le\\n\\\nmoyen d'attaquer\\n\\\nquelqu'un...\\n\\\nCette prairie est devenue\\n\\\nun champ de bataille\\n\\\ndepuis que le Roi Bob-omb\\n\\\ns'est approprié l'étoile de\\n\\\npuissance.\\n\\\nPeux-tu aller chercher\\n\\\nl'étoile pour nous?\\n\\\n\\n\\\n\\n\\\n\\n\\\nTraverse le pont, va à\\n\\\ngauche et prends le\\n\\\nchemin vers le haut pour\\n\\\ntrouver le Roi Bob-omb.\\n\\\n\\n\\\nReviens me voir lorsque tu\\n\\\nauras récupéré l'étoile de\\n\\\npuissance!\"))\n\nDEFINE_DIALOG(DIALOG_002, 1, 6, 95, 200, _(\"\\\nHé, toi! C'est dangereux\\n\\\npar ici! Alors écoute bien\\n\\\nmon conseil:\\n\\\n\\n\\\n\\n\\\n\\n\\\nTraverse les deux ponts\\n\\\ndevant toi, tout en\\n\\\nfaisant attention aux\\n\\\nbombes à eau.\\n\\\n\\n\\\n\\n\\\nLe Roi Bob-omb au\\n\\\nsommet de la montagne\\n\\\nest très puissant...\\n\\\nNe le laisse pas\\n\\\nt'attraper!\\n\\\n\\n\\\nNous sommes de gentils\\n\\\nBob-ombs, et nous sommes\\n\\\nde ton côté.\\n\\\nN'hésite pas à venir nous\\n\\\nparler à chaque fois que\\n\\\ntu en as envie!\"))\n\nDEFINE_DIALOG(DIALOG_003, 1, 5, 95, 200, _(\"\\\nMerci beaucoup Mario!\\n\\\nTu as éclaté le vilain Roi\\n\\\nBob-omb comme une vieille\\n\\\nfigue! Mais tout ceci\\n\\\nn'est qu'un début...\\n\\\nD'autres gros méchants\\n\\\npas beaux détiennent des\\n\\\nétoiles de puissance.\\n\\\n\\n\\\n\\n\\\nSi tu récupères d'autres\\n\\\nétoiles, tu pourras ouvrir\\n\\\nde nouvelles portes menant\\n\\\nà de nouveaux mondes!\\n\\\n\\n\\\nMes camarades Bob-ombs\\n\\\nt'attendent. Si tu leur\\n\\\nparles, ils te prépareront\\n\\\nde jolis canons!\"))\n\nDEFINE_DIALOG(DIALOG_004, 1, 6, 95, 200, _(\"\\\nNous sommes des\\n\\\nBob-ombs pacifiques, nous\\n\\\nn'utilisons pas de canons.\\n\\\n\\n\\\n\\n\\\n\\n\\\nMais si tu désires foncer\\n\\\nvers les cieux,\\n\\\nNo Problemo: nous\\n\\\nnous ferons une joie de te\\n\\\npréparer tous les canons\\n\\\nde ce niveau. Bon voyage!\"))\n\nDEFINE_DIALOG(DIALOG_005, 1, 5, 30, 200, _(\"\\\nHé, Mario! C'est vrai ce\\n\\\nqu'on raconte? Tu as\\n\\\nvraiment battu le Roi\\n\\\nBob-omb? Cool!\\n\\\n\\n\\\nTu dois être vachement\\n\\\nfort et rapide! Mais\\n\\\nes-tu aussi rapide que\\n\\\nmoi, Koopa-Rapido?\\n\\\nJe crois bien que non...\\n\\\nÇa te dirait une petite\\n\\\ncourse jusqu'au sommet\\n\\\nde la montagne, là où\\n\\\nétait le Roi Bob-omb?\\n\\\nAlors, qu'en dis-tu?\\n\\\nLorsque je dis 『partez』,\\n\\\nla course commence...\\n\\\nPrêt...\\n\\\n\\n\\\n//Partez!//Heu, non.\"))\n\nDEFINE_DIALOG(DIALOG_006, 1, 4, 30, 200, _(\"\\\nHé! Tu te moques de moi,\\n\\\np'tit nain pas beau?\\n\\\nTu dois courir du début\\n\\\njusqu'à la fin!\\n\\\nA plus tard. Reviens me\\n\\\nvoir lorsque tu arrêteras\\n\\\nde tricher...\"))\n\nDEFINE_DIALOG(DIALOG_007, 1, 5, 30, 200, _(\"\\\nHeuufff...fff...peufff...\\n\\\nWhoa! Tu...es...vraiment\\n\\\nrapide...pour un nabot!\\n\\\nTu viens de l'espace?\\n\\\nTiens, tu l'as méritée!\"))\n\nDEFINE_DIALOG(DIALOG_008, 1, 5, 30, 200, _(\"\\\nATTENTION AU CHOMP\\n\\\nENCHAINE!!!\\n\\\nDanger! Approchez-vous\\n\\\net appuyez sur [C]▲ pour\\n\\\njeter un oeil.\\n\\\nImpressionnant, non?\\n\\\nAvez-vous remarqué la\\n\\\npièce rouge sur le rondin?\\n\\\nLorsque vous collecterez 8\\n\\\npièces comme celle-ci,\\n\\\nune étoile apparaîtra\\n\\\ndans le pré de l'autre\\n\\\ncôté du pont...\"))\n\nDEFINE_DIALOG(DIALOG_009, 1, 4, 30, 200, _(\"\\\nÇa fait longtemps qu'on\\n\\\nne s'était pas vu, Mario!\\n\\\nFouiii! Tu es devenu super\\n\\\nrapide!\\n\\\nTu t'es entraîné aux Jeux\\n\\\nOlympiques ou les étoiles\\n\\\nte rendent ultra-méga-\\n\\\npuissant?\\n\\\nJe n'ai pas encore avalé\\n\\\nma défaite de l'autre\\n\\\nfois... Mais ici c'est mon\\n\\\nterritoire.\\n\\\nTu veux faire le match\\n\\\nretour? L'arrivée est\\n\\\ndans la vallée Valvent...\\n\\\n\\n\\\nPrêt...\\n\\\n\\n\\\n\\n\\\n//Partez!// Heu, non.\"))\n\nDEFINE_DIALOG(DIALOG_010, 1, 4, 30, 200, _(\"\\\nVous venez d'actionner\\n\\\nl'interrupteur des\\n\\\ncasquettes ailées...\\n\\\n\\n\\\nSi vous portez une\\n\\\ncasquette ailée, vous\\n\\\npourrez voler comme un\\n\\\noiseau.\\n\\\nDésormais des casquettes\\n\\\nailées surgiront des blocs\\n\\\nrouges que vous\\n\\\ndétruirez...\\n\\\nVoulez-vous sauvegarder?\\n\\\n\\n\\\n//Oui////Non.\"))\n\nDEFINE_DIALOG(DIALOG_011, 1, 4, 30, 200, _(\"\\\nVous venez d'actionner\\n\\\nl'interrupteur des\\n\\\ncasquettes-métal!\\n\\\n\\n\\\nGrâce aux casquettes-\\n\\\nmétal, Mario peut devenir\\n\\\ninvincible!\\n\\\n\\n\\\nDésormais, des\\n\\\ncasquettes-métal\\n\\\nsurgiront des blocs verts\\n\\\nque vous détruirez...\\n\\\nVoulez-vous sauvegarder?\\n\\\n\\n\\\n//Oui////Non.\"))\n\nDEFINE_DIALOG(DIALOG_012, 1, 4, 30, 200, _(\"\\\nVous venez d'actionner\\n\\\nl'interrupteur des\\n\\\ncasquettes d'invisibilité.\\n\\\n\\n\\\nEn portant une casquette\\n\\\nd'invisibilité, Mario\\n\\\ndisparaîtra...\\n\\\n\\n\\\nDésormais des casquettes\\n\\\nd'invisibilité surgiront\\n\\\ndes blocs bleus que vous\\n\\\ndétruirez...\\n\\\nVoulez-vous sauvegarder?\\n\\\n\\n\\\n//Oui////Non.\"))\n\nDEFINE_DIALOG(DIALOG_013, 1, 6, 30, 200, _(\"\\\nVous avez récupéré 100\\n\\\npièces! Mario sera\\n\\\ndésormais plus puissant!\\n\\\nVoulez-vous sauvegarder?\\n\\\n\\n\\\n//Oui////Non.\"))\n\nDEFINE_DIALOG(DIALOG_014, 1, 6, 30, 200, _(\"\\\nWhoa, génial! Une autre\\n\\\nétoile de puissance! Mario\\n\\\ndevient de plus en plus\\n\\\ncourageux!\\n\\\nVoulez-vous sauvegarder?\\n\\\n//Oui////Non.\"))\n\nDEFINE_DIALOG(DIALOG_015, 1, 6, 30, 200, _(\"\\\nVous pouvez frapper vos\\n\\\nennemis et les assommer.\\n\\\nAppuyez sur [A] pour sauter\\n\\\net sur [B] pour donner un\\n\\\ncoup de poing. Appuyez sur\\n\\\n[A] et sur [B] pour donner un\\n\\\ncoup de pied, et sur [B]\\n\\\npour ramasser quelque\\n\\\nchose. Pour lancer ce que\\n\\\nvous portez, appuyez sur\\n\\\n[B] à nouveau.\"))\n\nDEFINE_DIALOG(DIALOG_016, 1, 4, 30, 200, _(\"\\\nSi vous sautez sur une\\n\\\ncarapace brillante, vous\\n\\\npourrez aller n'importe où\\n\\\net détruire vos ennemis!\"))\n\nDEFINE_DIALOG(DIALOG_017, 1, 4, 30, 200, _(\"\\\nJe suis le Roi Bob-omb,\\n\\\nseigneur des explosions.\\n\\\nJe te félicite d'être\\n\\\narrivé jusqu'ici, petit.\\n\\\nSi tu veux l'étoile de\\n\\\npuissance, il va falloir me\\n\\\njeter au sol.\\n\\\n\\n\\\nEs-tu capable de soulever\\n\\\nmon royal fessier?\\n\\\nEn garde, moucheron!\"))\n\nDEFINE_DIALOG(DIALOG_018, 1, 4, 30, 200, _(\"\\\nSILENCE! Je dors!\\n\\\nGare à l'imprudent qui\\n\\\noserait me reveiller...\\n\\\nMarchez doucement, sinon!\"))\n\nDEFINE_DIALOG(DIALOG_019, 1, 2, 30, 200, _(\"\\\nCHUT! Marchez doucement\\n\\\ndans les couloirs!!!\"))\n\nDEFINE_DIALOG(DIALOG_020, 1, 6, 95, 150, _(\"\\\nMon très cher Mario:\\n\\\nViens vite au château,\\n\\\nje t'ai préparé un\\n\\\ndélicieux gâteau...\\n\\\nA bientôt,\\n\\\nPrincesse Toadstool.\"))\n\nDEFINE_DIALOG(DIALOG_021, 1, 4, 95, 200, _(\"\\\nBienvenue l'ami!\\n\\\nIci il n'y a personne,\\n\\\nalors dégage, moustique!\\n\\\nGWA HA HA HA HA HA!!!\"))\n\nDEFINE_DIALOG(DIALOG_022, 1, 2, 95, 200, _(\"\\\nCette porte est fermée\\n\\\nà clé...\"))\n\nDEFINE_DIALOG(DIALOG_023, 1, 2, 95, 200, _(\"\\\nCe n'est pas la bonne clé.\\n\\\nPeut-être à la cave...\"))\n\nDEFINE_DIALOG(DIALOG_024, 1, 6, 95, 200, _(\"\\\nVous avez besoin de la\\n\\\npuissance des étoiles pour\\n\\\nouvrir cette porte.\\n\\\nRécupérez des étoiles en\\n\\\ncombattant des ennemis à\\n\\\nl'intérieur des tableaux...\"))\n\nDEFINE_DIALOG(DIALOG_025, 1, 4, 95, 200, _(\"\\\nVous avez besoin de 3\\n\\\nétoiles pour ouvrir cette\\n\\\nporte. Il vous manque\\n\\\nencore [%] étoile(s).\"))\n\nDEFINE_DIALOG(DIALOG_026, 1, 4, 95, 200, _(\"\\\nVous avez besoin de 8\\n\\\nétoiles pour ouvrir cette\\n\\\nporte. Il vous manque\\n\\\nencore [%] étoile(s).\"))\n\nDEFINE_DIALOG(DIALOG_027, 1, 4, 95, 200, _(\"\\\nVous avez besoin de 30\\n\\\nétoiles pour ouvrir cette\\n\\\nporte. Il vous manque\\n\\\nencore [%] étoile(s).\"))\n\nDEFINE_DIALOG(DIALOG_028, 1, 4, 95, 200, _(\"\\\nVous avez besoin de 50\\n\\\nétoiles pour ouvrir cette\\n\\\nporte. Il vous manque\\n\\\nencore [%] étoile(s).\"))\n\nDEFINE_DIALOG(DIALOG_029, 1, 6, 95, 200, _(\"\\\nVous avez besoin de 70\\n\\\nétoiles pour arriver en\\n\\\nhaut de 『l'escalier sans\\n\\\nfin』... Il vous manque\\n\\\nencore [%] étoile(s).\\n\\\nGWA HA HA HA HA HA!!!\"))\n\nDEFINE_DIALOG(DIALOG_030, 1, 4, 30, 200, _(\"\\\nBonjour à tous!\\n\\\nIci Lakitu, le reporter de\\n\\\nchoc et de charme! Voici\\n\\\nun petit conseil technique:\\n\\\nMarchez tout doucement\\n\\\npour ne pas faire de bruit\\n\\\net ainsi surprendre vos\\n\\\nennemis.\\n\\\nVous pouvez déplacer ma\\n\\\ncaméra avec [C]▶ et [C]◀.\\n\\\nAppuyez sur [C]▼ pour voir\\n\\\nde loin.\\n\\\nLorsque ma caméra ne\\n\\\npeut plus se déplacer,\\n\\\nun signal sonore se fera\\n\\\nentendre...\\n\\\nMes chers téléspectateurs,\\n\\\nà bientôt!\\n\\\n//// --Lakitu--\"))\n\nDEFINE_DIALOG(DIALOG_031, 1, 5, 30, 200, _(\"\\\nIncroyable! Tu m'as encore\\n\\\nbattu? J'étais pourtant\\n\\\ncertain de gagner!\\n\\\nTiens, petit homme, tu as\\n\\\nbien mérité cette étoile...\"))\n\nDEFINE_DIALOG(DIALOG_032, 1, 5, 30, 200, _(\"\\\nSi en portant une\\n\\\ncasquette ailée vous\\n\\\neffectuez trois sauts\\n\\\nconsécutifs, vous pourrez\\n\\\nvolez comme un oiseau!\\n\\\nVous volerez encore plus\\n\\\nhaut si vous êtes propulsé\\n\\\npar un canon!\\n\\\n\\n\\\n\\n\\\nUtilisez les boutons [C] pour\\n\\\nregarder autour de vous\\n\\\nen plein vol, et appuyez\\n\\\nsur [Z] pour atterrir.\"))\n\nDEFINE_DIALOG(DIALOG_033, 1, 5, 30, 200, _(\"\\\nCiao bello!\\n\\\nVous voici arrivé au\\n\\\nchâteau de la Princesse\\n\\\ngrâce à un tuyau de\\n\\\ntéléportation.\\n\\\nContrôler Mario est très\\n\\\nfacile: appuyez sur [A]\\n\\\npour sauter et sur [B] pour\\n\\\nattaquer. Appuyez sur [B]\\n\\\npour lire les pancartes.\\n\\\nUtilisez le stick multi-\\n\\\ndirectionnel pour déplacer\\n\\\nMario...\\n\\\nEt maintenant, en route\\n\\\nvers le château!!!\"))\n\nDEFINE_DIALOG(DIALOG_034, 1, 6, 30, 200, _(\"\\\nBonjour! Nous sommes les\\n\\\nfrères Lakitu et nous nous\\n\\\nferons une joie de filmer\\n\\\nl'intrépide Mario tout au\\n\\\nlong de son périple.\\n\\\n\\n\\\nVous pourrez choisir\\n\\\nl'angle de prise de vue\\n\\\ngrâce aux boutons [C]. S'il\\n\\\nest impossible de bouger\\n\\\nla caméra, un signal\\n\\\nsonore retentira.\\n\\\nPour jeter un oeil autour\\n\\\nde Mario, arrêtez-vous\\n\\\net appuyez sur [C]▲.\\n\\\nAppuyez sur le bouton [A]\\n\\\npour revenir au jeu.\\n\\\n\\n\\\nAppuyez sur [R] pour\\n\\\nchanger de mode de vue.\\n\\\nLisez les pancartes que\\n\\\nvous croiserez pour en\\n\\\nsavoir d'avantage...\\n\\\n\\n\\\nC'était Lakitu,\\n\\\nle caméraman toujours\\n\\\nprêt à vous fournir les\\n\\\nmeilleures images...\"))\n\nDEFINE_DIALOG(DIALOG_035, 1, 6, 30, 200, _(\"\\\nIl existe quatre boutons\\n\\\n[C]. En appuyant sur [C]▲ et\\n\\\nen bougeant le stick\\n\\\nmultidirectionnel, vous\\n\\\npourrez jeter un oeil aux\\n\\\nalentours...\\n\\\nL'angle de vue normal est\\n\\\ncelui de la caméra de\\n\\\nLakitu, mais vous pouvez\\n\\\nle modifier en appuyant\\n\\\nsur [R] et ainsi utiliser\\n\\\nla 『caméra-Mario』.\\n\\\nAppuyez sur [R] à nouveau\\n\\\npour utiliser la caméra de\\n\\\nLakitu. Appuyez sur [C]▼\\n\\\npour voir Mario de loin,\\n\\\nquelque soit le mode de\\n\\\nvue que vous utilisez.\"))\n\nDEFINE_DIALOG(DIALOG_036, 1, 4, 30, 200, _(\"\\\n--PANORAMA--\\n\\\nAppuyez sur [C]▲ pour jeter\\n\\\nun coup d'oeil. Profitez\\n\\\nde la vue!\\n\\\nAppuyez sur [R] pour\\n\\\nutiliser la caméra-Mario\\n\\\nqui suivra toujours de\\n\\\nprès notre petit ami.\\n\\\nAppuyez à nouveau sur [R]\\n\\\npour revenir à la caméra\\n\\\nde Lakitu.\\n\\\n\\n\\\nMettez le jeu en pause et\\n\\\nchoisissez le mode 『Fixe』\\n\\\npuis maintenez [R] pour que\\n\\\nla caméra reste en place.\"))\n\nDEFINE_DIALOG(DIALOG_037, 1, 2, 30, 200, _(\"\\\nBwa ha ha ha ha!\\n\\\nJe t'ai battu gros nain!\\n\\\nTu es aussi rapide qu'une\\n\\\nvieille limace malade!\\n\\\nReviens me voir si tu\\n\\\nveux prendre ta revanche!\"))\n\nDEFINE_DIALOG(DIALOG_038, 1, 3, 95, 200, _(\"\\\nGrâce à la puissance des\\n\\\nétoiles, la porte s'ouvre\\n\\\ndoucement...\"))\n\nDEFINE_DIALOG(DIALOG_039, 1, 5, 30, 200, _(\"\\\nROYAUME DE BOB-OMB\\n\\\n\\n\\\nInterdit aux touristes!!!\\n\\\n\\n\\\n\\n\\\nPersonne ne pourra me\\n\\\nvoler mes étoiles de\\n\\\npuissance! Elles m'ont été\\n\\\noffertes par le grand\\n\\\nBowser en personne.\\n\\\nJe ne dirai jamais où\\n\\\nelles se trouvent, mais\\n\\\nvoici un indice:\\n\\\n\\n\\\n\\n\\\nlisez attentivement le nom\\n\\\nde chaque étoile au début\\n\\\ndes niveaux.\\n\\\n\\n\\\n/// --Roi Bob-omb--\"))\n\nDEFINE_DIALOG(DIALOG_040, 1, 3, 30, 200, _(\"\\\nATTENTION!\\n\\\nCrevasse de glace juste\\n\\\nen dessous!\"))\n\nDEFINE_DIALOG(DIALOG_041, 1, 2, 30, 200, _(\"\\\nJ'ai gagné! J'ai gagné!\\n\\\nHa! Ha! Pauv'nul!\\n\\\nÇa t'apprendra à défier\\n\\\nle grand Koopa-Rapido!\\n\\\nReviens me voir si tu\\n\\\nveux une autre raclée!\"))\n\nDEFINE_DIALOG(DIALOG_042, 1, 6, 30, 200, _(\"\\\nATTENTION!\\n\\\n\\n\\\nPont étroit!!!\\n\\\nTraversez doucement...\\n\\\n\\n\\\n\\n\\\nVous pouvez sauter et\\n\\\nvous accrocher au bord de\\n\\\nla falaise ou vous\\n\\\nsuspendre en vous\\n\\\ndéplaçant lentement près\\n\\\ndu vide...\\n\\\nSi vous voulez lâcher\\n\\\nprise, appuyez sur [Z] ou\\n\\\nvers le bas sur le stick\\n\\\nmultidirectionnel.\\n\\\n\\n\\\n\\n\\\nPour vous hisser, appuyez\\n\\\nvers le haut sur le stick\\n\\\nmultidirectionnel ou sur le\\n\\\nbouton [A] pour aller plus\\n\\\nvite.\"))\n\nDEFINE_DIALOG(DIALOG_043, 1, 5, 30, 200, _(\"\\\nSi vous sautez en\\n\\\nmaintenant le bouton [A],\\n\\\nvous pourrez vous\\n\\\naccrocher à des objets\\n\\\nau-dessus de vous...\\n\\\nVous pourrez même vous\\n\\\naccrocher à un oiseau!\"))\n\nDEFINE_DIALOG(DIALOG_044, 1, 4, 95, 200, _(\"\\\nMmm? Hein? Qui m'a\\n\\\nréveillé? Quoi!?! Il fait\\n\\\nencore jour? Je devrais\\n\\\ndormir!\\n\\\nMaintenant que je suis\\n\\\nréveillé, ça te dirait de\\n\\\nfaire un petit tour avec\\n\\\nmoi?\\n\\\nMaintiens le bouton [A]\\n\\\npour t'accrocher et\\n\\\nlâche-le pour te laisser\\n\\\ntomber.\\n\\\nJe t'emmènerai où tu veux\\n\\\naussi longtemps que mes\\n\\\nailes pourront supporter\\n\\\nton poids!\\n\\\nRegarde bien mon ombre\\n\\\net accroche-toi!!!\"))\n\nDEFINE_DIALOG(DIALOG_045, 1, 4, 95, 200, _(\"\\\nFouiii! J'suis naze!!!\\n\\\nTu devrais peut-être\\n\\\narrêter les pâtes aux\\n\\\noeufs...\\n\\\nAllez, ciao Mario!\\n\\\nLâche le bouton [A] sinon\\n\\\nj'te balance dans le vide\\n\\\nmon gros...\"))\n\nDEFINE_DIALOG(DIALOG_046, 1, 6, 30, 200, _(\"\\\nIl existe trois sauts\\n\\\ndifférents que vous\\n\\\ndevez maîtriser:\\n\\\nTout d'abord, le Triple\\n\\\nSaut...\\n\\\n\\n\\\nEn pleine course, sautez\\n\\\ntrois fois de suite.\\n\\\nSi votre synchronisation\\n\\\nest correcte, vous\\n\\\nsauterez de plus en plus\\n\\\nhaut...\\n\\\nEnsuite, pour sauter le\\n\\\nplus loin possible, vous\\n\\\ndevrez effectuer le Saut\\n\\\nen Longueur:\\n\\\n\\n\\\n\\n\\\nCourez, appuyez sur [Z] pour\\n\\\nvous accroupir, puis\\n\\\nappuyez sur [A] pour\\n\\\nsauter...\\n\\\n\\n\\\n\\n\\\nEnfin, pour créer une\\n\\\n『Impulsion』, appuyez sur\\n\\\n[A] vers un mur puis sautez\\n\\\nà nouveau lorsque vous\\n\\\ntouchez la paroi...\\n\\\n\\n\\\nC'est compris?\\n\\\nTriple Saut, Saut en\\n\\\nLongueur et Impulsion?\\n\\\nPour y arriver à chaque\\n\\\nfois il faut s'entraîner\\n\\\nencore et encore et...?\"))\n\nDEFINE_DIALOG(DIALOG_047, 1, 2, 95, 200, _(\"\\\nSalut l'ami! Je vais te\\n\\\npréparer un joli canon!\"))\n\nDEFINE_DIALOG(DIALOG_048, 1, 5, 30, 200, _(\"\\\nSommet du glacier...\\n\\\nAttention à ne pas\\n\\\nglisser!\\n\\\nTout d'abord, visitez ce\\n\\\nchalet...\"))\n\nDEFINE_DIALOG(DIALOG_049, 1, 4, 30, 200, _(\"\\\nVous vous souvenez de\\n\\\nl'Impulsion? Utilisez cette\\n\\\ntechnique pour atteindre\\n\\\ndes lieux en hauteur...\\n\\\nRebondissez de mur en\\n\\\nmur, en appuyant sur le\\n\\\nstick multidirectionnel\\n\\\nvers la direction desirée.\\n\\\nEntraînez-vous encore et\\n\\\nencore et encore et...?\"))\n\nDEFINE_DIALOG(DIALOG_050, 1, 4, 30, 200, _(\"\\\nMaintenez le bouton [Z] pour\\n\\\nvous accroupir et ainsi\\n\\\nglisser le long d'une\\n\\\npente...\\n\\\nAppuyez sur [Z] pendant un\\n\\\nsaut pour faire l'Attaque\\n\\\nRodéo!\\n\\\n\\n\\\nA l'arrêt, si vous appuyez\\n\\\nsur [Z] pour vous accroupir,\\n\\\npuis sur [A], vous ferez un\\n\\\nSaut Périlleux!\\n\\\nC'est compris? Mais il\\n\\\nexiste encore d'autres\\n\\\nmouvements...\\n\\\n\\n\\\nVous pouvez courir, vous\\n\\\naccroupir puis faire un\\n\\\nSaut en Longueur...\\n\\\n\\n\\\nVous pouvez aussi marcher\\n\\\nen maintenant le bouton [Z].\\n\\\nMais c'est une autre\\n\\\nhistoire...\"))\n\nDEFINE_DIALOG(DIALOG_051, 1, 6, 30, 200, _(\"\\\nVous pouvez facilement\\n\\\nvous accrocher aux arbres\\n\\\net aux poteaux...\\n\\\n\\n\\\n\\n\\\n\\n\\\nAppuyez sur [Z] pour lâcher\\n\\\nprise, sur [A] pour sauter\\n\\\nen arrière ou sur le stick\\n\\\nmultidirectionnel pour\\n\\\ndescendre doucement.\\n\\\n\\n\\\nUne fois au sommet,\\n\\\nappuyez vers la droite ou\\n\\\nvers la gauche sur le\\n\\\nstick multidirectionnel\\n\\\npour pivoter, ou vers le\\n\\\nhaut pour faire le poirier.\\n\\\nAppuyez alors sur [A] pour\\n\\\nfaire un méga-saut vers\\n\\\nl'arrière, digne des plus\\n\\\ngrands athlètes!\"))\n\nDEFINE_DIALOG(DIALOG_052, 1, 5, 30, 200, _(\"\\\nArrêtez-vous et appuyez\\n\\\nsur [Z] pour vous accroupir,\\n\\\npuis appuyez sur [A] pour\\n\\\nfaire un Saut Périlleux\\n\\\nen arrière!\\n\\\nPour faire un Saut\\n\\\nPérilleux de côté, courez,\\n\\\nchangez de direction, puis\\n\\\nsautez.\\n\\\n\\n\\\nCes deux types de saut\\n\\\nvous permettent de\\n\\\nsauter beaucoup plus haut\\n\\\nqu'un saut normal...\"))\n\nDEFINE_DIALOG(DIALOG_053, 1, 5, 30, 200, _(\"\\\nQuelques fois, en\\n\\\ntraversant un anneau ou\\n\\\nen découvrant un passage\\n\\\nsecret dans un niveau, un\\n\\\nchiffre rouge apparaîtra.\\n\\\nSi vous faites apparaître\\n\\\ncinq chiffres rouges, une\\n\\\nétoile secrète apparaîtra.\"))\n\nDEFINE_DIALOG(DIALOG_054, 1, 3, 30, 200, _(\"\\\nAttention:\\n\\\nGlissade Périlleuse!\\n\\\nEn voiture Simone...\\n\\\nAppuyez vers l'avant sur\\n\\\nle stick multidirectionnel\\n\\\npour accélérer.\\n\\\nAppuyez vers l'arrière\\n\\\npour ralentir...\\n\\\nRoulez jeunesse!\"))\n\nDEFINE_DIALOG(DIALOG_055, 1, 2, 30, 200, _(\"\\\nSalut mon tout petit\\n\\\nMario...\\n\\\nAlors, il paraît que tu es\\n\\\nun rapide?\\n\\\nMais es-tu aussi rapide\\n\\\nque moi?\\n\\\nOn fait la course,\\n\\\nmon petit biquet?\\n\\\nPrêt...\\n\\\n//Partez!//Heu, non.\"))\n\nDEFINE_DIALOG(DIALOG_056, 1, 2, 30, 200, _(\"\\\nQu-qu-quoi? T-t-tu as\\n\\\nbattu mon record?\\n\\\nJe l'admets, tu es très\\n\\\nrapide pour un humain.\\n\\\nJe n'ai pas de médaille\\n\\\nd'or sur moi mais...\\n\\\nCette étoile fera\\n\\\nl'affaire...\"))\n\nDEFINE_DIALOG(DIALOG_057, 1, 4, 30, 200, _(\"\\\nMon bébé! J'ai perdu mon\\n\\\nbébé... Mon p'tit chou...\\n\\\nMa puce à moi...\\n\\\nMon chocolat...\\n\\\nJE VEUX MON BÉBÉ!!!\\n\\\nGNAAAAAAAAAAAAAA!!!\\n\\\nMON BÉBÉ!\"))\n\nDEFINE_DIALOG(DIALOG_058, 1, 3, 30, 200, _(\"\\\nTu as trouvé mon bébé!!!\\n\\\nMon chou...\\n\\\nMon p'tit chou...\\n\\\nComment te prouver ma\\n\\\ngratitude, gros Mario?\\n\\\nTu es formidable...\\n\\\nTiens, prends cette étoile.\\n\\\nTu l'as bien méritée...\\n\\\nEncore merci, petit!\"))\n\nDEFINE_DIALOG(DIALOG_059, 1, 2, 30, 200, _(\"\\\nC'est pas mon bébé!!!\\n\\\nOù est mon bébé?\\n\\\nJE VEUX MON BÉBÉ!!!!\\n\\\nGNAAAAAAAAAAAAAA!!!!\"))\n\nDEFINE_DIALOG(DIALOG_060, 1, 6, 30, 200, _(\"\\\nATTENTION!\\n\\\nA lire avant de plonger!\\n\\\nSi vous restez sous l'eau\\n\\\npendant trop longtemps,\\n\\\nvous pouvez vous noyer...\\n\\\n\\n\\\nRemonter à la surface,\\n\\\ntraverser une bulle d'air\\n\\\nou récupérer des pièces\\n\\\nvous fera regagner de\\n\\\nl'oxygène.\\n\\\n\\n\\\nAppuyez sur [A] pour nager.\\n\\\nMaintenez le bouton [A]\\n\\\npour battre des pieds.\\n\\\nAppuyez régulièrement sur\\n\\\n[A] pour gagner de la\\n\\\nvitesse.\\n\\\nAppuyez vers le haut sur\\n\\\nle stick multidirectionnel\\n\\\npour plonger.\\n\\\nAppuyez vers le bas et sur\\n\\\n[A] pour remonter à la\\n\\\nsurface.\\n\\\nLorsque vous êtes à la\\n\\\nsurface, maintenez la\\n\\\nflèche vers le bas sur le\\n\\\nstick multidirectionnel et\\n\\\nappuyez sur [A] pour sortir\\n\\\nde l'eau.\"))\n\nDEFINE_DIALOG(DIALOG_061, 1, 4, 30, 200, _(\"\\\nBrrrrr!!!\\n\\\nBaignade déconseillée!!!\\n\\\nTrop froid...\\n\\\n// ---Le Pingouin---\"))\n\nDEFINE_DIALOG(DIALOG_062, 1, 4, 30, 200, _(\"\\\nA l'intérieur des\\n\\\nblocs verts se cache la\\n\\\ncasquette-métal...\\n\\\n\\n\\\nEn la portant, vous\\n\\\ndeviendrez insensible au\\n\\\nfeu et aux attaques de\\n\\\nvos ennemis.\\n\\\nVous n'aurez même plus\\n\\\nbesoin de respirer!\\n\\\nMais il y a un problème:\\n\\\nvous ne pouvez pas nager!\"))\n\nDEFINE_DIALOG(DIALOG_063, 1, 4, 30, 200, _(\"\\\nLa casquette d'invisibilité\\n\\\nse trouve dans les blocs\\n\\\nbleus.\\n\\\n\\n\\\nEn la portant, vos\\n\\\nennemis, y compris les\\n\\\nterribles Boos, ne\\n\\\npourront pas vous voir!\\n\\\nEn plus, vous pourrez\\n\\\ntraverser des murs\\n\\\nsecrets!\"))\n\nDEFINE_DIALOG(DIALOG_064, 1, 6, 30, 200, _(\"\\\nSi vous portez une\\n\\\ncasquette ailée provenant\\n\\\nd'un bloc rouge, faites le\\n\\\nTriple Saut pour vous\\n\\\nenvoler comme un oiseau!\\n\\\n\\n\\\nUtilisez le stick multi-\\n\\\ndirectionnel pour diriger\\n\\\nMario. Appuyez vers le\\n\\\nbas pour prendre de\\n\\\nl'altitude, et vers le haut\\n\\\npour piquer du nez.\\n\\\nEt enfin, appuyez sur [Z]\\n\\\npour atterrir.\"))\n\nDEFINE_DIALOG(DIALOG_065, 1, 6, 30, 200, _(\"\\\nLeçons de natation...\\n\\\nAppuyez sur [A] pour nager\\n\\\nla brasse. Si votre\\n\\\nsynchronisation est bonne,\\n\\\nvous pourrez nager très\\n\\\nvite.\\n\\\nMaintenez le bouton [A]\\n\\\npour battre des pieds\\n\\\nd'une façon régulière.\\n\\\n\\n\\\n\\n\\\n\\n\\\nAppuyez vers le haut sur\\n\\\nle stick multidirectionnel\\n\\\npour plonger, et vers le\\n\\\nbas pour remonter à la\\n\\\nsurface.\\n\\\n\\n\\\nPour sortir de l'eau,\\n\\\nappuyez vers le bas sur\\n\\\nle stick multidirectionnel\\n\\\net appuyez sur [A]. Ensuite,\\n\\\nrelâcher le stick pour ne\\n\\\npas retomber dans l'eau.\\n\\\nAttention: Mario ne peut\\n\\\npas respirer sous l'eau!\\n\\\nRemontez à la surface\\n\\\nlorsque vous manquez\\n\\\nd'oxygène...\\n\\\n\\n\\\nDernière chose:\\n\\\nvous ne pouvez pas ouvrir\\n\\\nles portes se trouvant\\n\\\nsous l'eau.\"))\n\nDEFINE_DIALOG(DIALOG_066, 1, 6, 30, 200, _(\"\\\nMario! Fais attention:\\n\\\nBowser est un gros\\n\\\nvicieux! Il va tenter de\\n\\\nte brûler les fesses avec\\n\\\nson souffle de feu!\\n\\\n\\n\\\nTourne autour de lui et\\n\\\nattrape sa queue en\\n\\\nappuyant sur [B]. Une fois\\n\\\nque tu l'as attrapé,\\n\\\nfais-le tourner autour\\n\\\nde toi.\\n\\\nFais des rotations avec le\\n\\\nstick multidirectionnel\\n\\\npour aller de plus en plus\\n\\\nvite.\\n\\\n\\n\\\n\\n\\\nSi tu le fais tourner très\\n\\\nvite, tu pourras l'envoyer\\n\\\ntrès loin.\\n\\\n\\n\\\n\\n\\\n\\n\\\nUtilise les boutons [C] pour\\n\\\nregarder autour de toi.\\n\\\nTu dois jeter Bowser sur\\n\\\nune des bombes...\\n\\\n\\n\\\n\\n\\\nVise bien! Appuie sur [B]\\n\\\npour lancer Bowser.\\n\\\nBonne chance, Mario!\\n\\\nTu en auras besoin...\\n\\\n\\n\\\n// ---Peach---\"))\n\nDEFINE_DIALOG(DIALOG_067, 1, 3, 30, 200, _(\"\\\nHA HA! Dommage pour toi,\\n\\\nMario! La P'tite Peach\\n\\\nn'est pas là...\\n\\\nMais si tu veux un gros\\n\\\nbisou, on peut toujours\\n\\\ns'arranger!\\n\\\nJe parie que tu n'es pas\\n\\\ncapable d'attraper ma\\n\\\nqueue...\\n\\\nTu es trop faible pour me\\n\\\nfaire tourner autour de\\n\\\nta tête!\\n\\\nTu n'arriveras jamais à\\n\\\nme faire décoller d'ici...\\n\\\nGWA HA! A table!!!!!!!\"))\n\nDEFINE_DIALOG(DIALOG_068, 1, 4, 30, 200, _(\"\\\nVoici les Laves Fatales!\\n\\\nSi vous touchez de la lave\\n\\\nou des flammes, vous\\n\\\naurez le feu aux fesses!\\n\\\nMais pas de panique:\\n\\\nvous pourrez toujours\\n\\\ncontrôler Mario...\\n\\\nRestez calme!\"))\n\nDEFINE_DIALOG(DIALOG_069, 1, 6, 30, 200, _(\"\\\nA l'intérieur des tableaux\\n\\\nvous pourrez touchez des\\n\\\nmurs invisibles marquant\\n\\\nles limites du niveau.\\n\\\nSi vous touchez un mur en\\n\\\nvolant, vous serez bloqué.\"))\n\nDEFINE_DIALOG(DIALOG_070, 1, 6, 30, 200, _(\"\\\nVous pouvez retourner\\n\\\ndans le hall du château\\n\\\ndepuis n'importe quel\\n\\\nniveau.\\n\\\n\\n\\\n\\n\\\nVous devez vous arrêter,\\n\\\nappuyer sur Start pour\\n\\\nmettre le jeu en pause,\\n\\\npuis choisir l'option\\n\\\n『Quitter Niveau』.\\n\\\n\\n\\\nVous n'avez pas besoin de\\n\\\nrécupérer toutes les\\n\\\nétoiles d'un niveau pour\\n\\\naccéder à un autre monde.\\n\\\n\\n\\\n\\n\\\nVous pouvez retourner\\n\\\ndans un niveau plus tard,\\n\\\net ainsi récupérer les\\n\\\nétoiles difficiles à\\n\\\nattraper.\\n\\\n\\n\\\nAprès avoir récupéré une\\n\\\nétoile, un indice\\n\\\nconcernant l'étoile\\n\\\nsuivante apparaîtra à\\n\\\nl'écran au début du\\n\\\nniveau...\\n\\\nToutefois, vous n'êtes pas\\n\\\nobligé d'attraper l'étoile\\n\\\ndécrite par l'indice.\"))\n\nDEFINE_DIALOG(DIALOG_071, 1, 4, 30, 200, _(\"\\\nDANGER!\\n\\\nAttention au brouillard\\n\\\ntoxique!\\n\\\n\\n\\\nSi vous perdez de\\n\\\nl'énergie, courez vers une\\n\\\nplate-forme en hauteur\\n\\\npour respirer.\\n\\\n\\n\\\nCercle: Abri\\n\\\nFlèche: Entrée - Sortie\"))\n\nDEFINE_DIALOG(DIALOG_072, 1, 3, 30, 200, _(\"\\\nAttention: vents violents!\\n\\\nAccrochez-vous à votre\\n\\\ncasquette!\\n\\\nSi vous la perdez, vous\\n\\\ndevrez revenir la chercher\\n\\\nlà où vous l'avez perdue...\"))\n\nDEFINE_DIALOG(DIALOG_073, 1, 3, 95, 200, _(\"\\\nSouquez ferme, matelot!\\n\\\nJ'ai caché un trésor\\n\\\npar ici, moussaillon.\\n\\\nMais pour le découvrir,\\n\\\nvous devrez ouvrir les\\n\\\ncoffres dans l'ordre...\\n\\\nY arriveras-tu, petit?\\n\\\n\\n\\\n// -- Le capitaine --\"))\n\nDEFINE_DIALOG(DIALOG_074, 1, 5, 30, 200, _(\"\\\nVous pouvez vous\\n\\\naccrocher au rebord d'une\\n\\\nfalaise.\\n\\\n\\n\\\n\\n\\\nPour lâcher prise, appuyez\\n\\\nvers le bas sur le stick\\n\\\nmultidirectionnel ou sur le\\n\\\nbouton [Z].\\n\\\n\\n\\\nPour vous hisser, appuyez\\n\\\nvers le haut sur le stick\\n\\\nmultidirectionnel ou sur le\\n\\\nbouton [A] pour monter plus\\n\\\nvite.\"))\n\nDEFINE_DIALOG(DIALOG_075, 1, 5, 30, 200, _(\"\\\nMario! Mon château est\\n\\\nen danger, et Bowser en\\n\\\nest le responsable...\\n\\\nToi seul peut contrecarrer\\n\\\nses plans diaboliques!\\n\\\nLes portes du château ont\\n\\\nété scellées par Bowser et\\n\\\nne peuvent être ouvertes\\n\\\nqu'à l'aide du pouvoir des\\n\\\nétoiles...\\n\\\nBowser a caché les étoiles\\n\\\nde puissance dans les\\n\\\ntableaux et les murs du\\n\\\nchâteau.\\n\\\n\\n\\\nMais Bowser n'a pas\\n\\\ndécouvert tous les\\n\\\npassages secrets du\\n\\\nchâteau.\\n\\\n\\n\\\nUn passage secret se\\n\\\ntrouve dans cette pièce et\\n\\\nil mène à une des étoiles\\n\\\nsecrètes du château!\\n\\\n\\n\\\nTrouve cette étoile, mon\\n\\\npetit Mario! Elle te sera\\n\\\ntrès utile. Je t'en prie,\\n\\\naide-nous!\\n\\\n\\n\\\nRetrouve toutes les étoiles\\n\\\ndu château et tu pourras\\n\\\nnous délivrer!\\n\\\nJe t'en prie, Mario!\\n\\\nSauve-nous!\"))\n\nDEFINE_DIALOG(DIALOG_076, 1, 3, 30, 200, _(\"\\\nGrâce au pouvoir des\\n\\\nétoiles, le château\\n\\\nrevient à la vie...\\n\\\nJe t'en prie Mario,\\n\\\nbotte les fesses du\\n\\\nvilain Bowser pas beau!\\n\\\nAs-tu visité la pièce du\\n\\\nchâteau dans laquelle un\\n\\\ngrand miroir est au mur?\\n\\\nPrends garde à tout ce\\n\\\nqui n'a pas de reflet...\\n\\\n\\n\\\nConnais-tu le monde\\n\\\n『Trempé-Séché』?\\n\\\n\\n\\\nRentre dans ce niveau en\\n\\\nsautant très haut...\\n\\\n\\n\\\nAu fait! Regarde ce que\\n\\\nj'ai pour toi!\"))\n\nDEFINE_DIALOG(DIALOG_077, 1, 2, 150, 200, _(\"\\\nIl est dit que les piliers\\n\\\ndoivent être enfoncés...\"))\n\nDEFINE_DIALOG(DIALOG_078, 1, 4, 30, 200, _(\"\\\nEnfoncez le bloc des\\n\\\npièces bleues grâce à\\n\\\nl'Attaque Rodéo, en\\n\\\nappuyant sur [Z].\\n\\\nUne pièce bleue vaut 5\\n\\\npièces jaunes.\\n\\\n\\n\\\n\\n\\\nDépêchez-vous de les\\n\\\nattraper, sinon elles\\n\\\ndisparaîtront!\"))\n\nDEFINE_DIALOG(DIALOG_079, 1, 2, 30, 200, _(\"\\\nGNIIIIIIIII!!!\\n\\\nLACHE-MOI!\\n\\\nJe blaguais! Tu n'as\\n\\\naucun sens de l'humour.\\n\\\nLâche-moi et je te\\n\\\ndonnerais un truc cool.\\n\\\nÇa marche?\\n\\\n//OK//// Jamais!\"))\n\nDEFINE_DIALOG(DIALOG_080, 1, 1, 30, 200, _(\"\\\nGnii hi hi hi hi hi!!!\"))\n\nDEFINE_DIALOG(DIALOG_081, 1, 3, 30, 200, _(\"\\\nBienvenue dans le monde\\n\\\n『Trempé-Séché』...\\n\\\n\\n\\\nIci, il est dit qu'un saut\\n\\\naltère le niveau d'eau...\\n\\\n\\n\\\nEn y pénétrant,\\n\\\nserez-vous assez\\n\\\nintelligent?\"))\n\nDEFINE_DIALOG(DIALOG_082, 1, 4, 30, 200, _(\"\\\nAccroche-toi à ta\\n\\\ncasquette, gentil petit\\n\\\nMario...\\n\\\n\\n\\\nSi jamais tu la perds, tu\\n\\\ndevras retourner la\\n\\\nchercher là où tu l'as\\n\\\nperdue...\\n\\\nSans casquette, tes\\n\\\nennemis pourront te faire\\n\\\nbeaucoup plus de dégâts!\\n\\\n\\n\\\nLa princesse Peach a\\n\\\nde sérieux ennuis...\\n\\\nElle est enfermée dans un\\n\\\ndes murs du château.\\n\\\nTu dois absolument l'aider\\n\\\nmon gros Mario! Savais-\\n\\\ntu qu'il existe des\\n\\\nmondes dans les murs?\\n\\\nLes sbires du Bowser pas\\n\\\nbeau y font régner la\\n\\\nterreur!\\n\\\n\\n\\\nTiens, j'ai un petit\\n\\\ncadeau pour toi...\"))\n\nDEFINE_DIALOG(DIALOG_083, 1, 4, 30, 200, _(\"\\\nCette grosse horloge est\\n\\\nétrange...\\n\\\n\\n\\\n\\n\\\nFais attention à la\\n\\\nposition de la grande\\n\\\naiguille lorsque tu sautes\\n\\\nà l'intérieur...\\n\\\nAu fait, regarde ce que\\n\\\nj'ai là pour toi!\"))\n\nDEFINE_DIALOG(DIALOG_084, 1, 3, 30, 200, _(\"\\\nGNAAAAAAAAA!!!\\n\\\nLACHE-MOI!!!\\n\\\nGROSSE BRUTE!\\n\\\nNe me mange pas!\\n\\\nNe me mange pas!\\n\\\nAu secours!!!!!!\\n\\\nTiens, voilà une étoile.\\n\\\nPrends-la, mais tu dois\\n\\\nme laisser partir...\"))\n\nDEFINE_DIALOG(DIALOG_085, 1, 3, 30, 200, _(\"\\\nVa-t'en, simple mortel!\\n\\\nSi tu tiens à ton âme,\\n\\\nretourne chez toi...\\n\\\nSi tu oses rentrer,\\n\\\ntu seras damné!!!\"))\n\nDEFINE_DIALOG(DIALOG_086, 1, 3, 30, 200, _(\"\\\nTourner autour de\\n\\\ncertains ennemis peut\\n\\\nfaire tourner de l'oeil...\"))\n\nDEFINE_DIALOG(DIALOG_087, 1, 5, 30, 200, _(\"\\\nLe Père Noël n'est pas le\\n\\\nseul à passer par les\\n\\\ncheminées...\\n\\\nAvis aux curieux...\\n\\\n- Le bonhomme de neige -\"))\n\nDEFINE_DIALOG(DIALOG_088, 1, 4, 30, 200, _(\"\\\n-Plate-forme de travail-\\n\\\nPour descendre, utilisez\\n\\\nle poteau sur la gauche et\\n\\\nglissez jusqu'en bas...\"))\n\nDEFINE_DIALOG(DIALOG_089, 1, 6, 95, 200, _(\"\\\nLes deux routes sont très\\n\\\ndangereuses...\\n\\\nCeux qui ne sont pas\\n\\\nencore capables de faire\\n\\\nle Saut en Longueur\\n\\\ndoivent aller à droite.\\n\\\nDroite: Plate-forme de\\n\\\n////travail.\\n\\\n////Labyrinthe\\n\\\n////toxique.\\n\\\nGauche: Trou Noir.\\n\\\n////Lac souterrain.\\n\\\nCercle rouge:\\n\\\n////Ascenseur 2.\\n\\\n////Lac souterrain.\\n\\\nFlèche:\\n\\\n////Votre position\\n\\\n////actuelle.\"))\n\nDEFINE_DIALOG(DIALOG_090, 1, 6, 30, 200, _(\"\\\nBWA HA HA HA HA HA!!!\\n\\\nTu es tombé dans mon\\n\\\npiège, petit Mario!\\n\\\nMais voici un conseil\\n\\\nd'ami: prends garde à ne\\n\\\npas tomber!\"))\n\nDEFINE_DIALOG(DIALOG_091, 1, 5, 30, 200, _(\"\\\nDanger!!!\\n\\\nVents violents!\\n\\\nSachez utiliser les\\n\\\ncourants à votre\\n\\\navantage...\"))\n\nDEFINE_DIALOG(DIALOG_092, 1, 5, 30, 200, _(\"\\\nMario...\\n\\\nMon p'tit Mario...\\n\\\nTu m'cherches ou quoi?\\n\\\nTu la veux ta baffe?\\n\\\nAlors tu vas l'avoir!\\n\\\nMais d'abord tu vas me\\n\\\nrendre mes étoiles,\\n\\\nvoleur!\\n\\\nBWA HA HA HA HA HA!!!\\n\\\nC'est l'heure du goûter!\"))\n\nDEFINE_DIALOG(DIALOG_093, 1, 6, 30, 200, _(\"\\\nMario?!?\\n\\\nTu es encore là, toi?\\n\\\nTrès bien, tu l'auras\\n\\\nvoulu! Cette fois-ci, je\\n\\\nvais faire frire ta\\n\\\nvieille moustache!\\n\\\nMalgré tes étoiles de\\n\\\npuissance, tu n'arriveras\\n\\\njamais à sauver Peach et\\n\\\nses amis...\\n\\\nAllez... En garde!\\n\\\nBWA HA HA HA HA HA HA!\"))\n\nDEFINE_DIALOG(DIALOG_094, 1, 6, 30, 200, _(\"\\\nPourquoi ne pas escalader\\n\\\ncette pente en courant?\\n\\\nPetit rappel: pour faire\\n\\\nun Saut en Longueur,\\n\\\ncourir, appuyer sur [Z],\\n\\\npuis sauter...\"))\n\nDEFINE_DIALOG(DIALOG_095, 1, 5, 30, 200, _(\"\\\nPour lire une pancarte,\\n\\\nil faut se tenir devant\\n\\\nl'écriteau et appuyer [B].\\n\\\nVous le saviez déjà?\\n\\\nAh bon... Désolé.\\n\\\nPour parler à une tortue\\n\\\nou à un autre animal,\\n\\\nvous devez vous tenir en\\n\\\nface de lui ou elle.\\n\\\n\\n\\\nRetrouvez vite les étoiles\\n\\\nque Bowser a caché dans\\n\\\nce niveau!\"))\n\nDEFINE_DIALOG(DIALOG_096, 1, 5, 30, 200, _(\"\\\nLe sommet de la montagne\\n\\\nest interdit au public!\\n\\\nAlors n'essayez pas d'y\\n\\\naller, à moins d'être à la\\n\\\nrecherche des étoiles...\\n\\\nAutre conseil: ne réveillez\\n\\\njamais quelqu'un qui dort.\\n\\\nMarchez doucement...\\n\\\nEt sans bruit...\"))\n\nDEFINE_DIALOG(DIALOG_097, 1, 5, 30, 200, _(\"\\\nSi quelqu'un vous pousse,\\n\\\nn'ayez pas peur!\\n\\\nPoussez-le vous aussi!\\n\\\nLe perdant aura plutôt\\n\\\nchaud aux fesses...\"))\n\nDEFINE_DIALOG(DIALOG_098, 1, 5, 95, 200, _(\"\\\nViens...\\n\\\n...entre donc...\\n\\\nMon biquet...\\n\\\n...viens dîner...\\n\\\nHin...hin...hin...\"))\n\nDEFINE_DIALOG(DIALOG_099, 1, 3, 95, 200, _(\"\\\nHé...hé...hé...\\n\\\nCiao bello Mario!\\n\\\nMoi j'traverse les murs!\\n\\\nTu peux le faire, toi?\\n\\\nHin...hin...hin...\"))\n\nDEFINE_DIALOG(DIALOG_100, 1, 4, 95, 200, _(\"\\\nGNIIIIII! KIIIII!\\n\\\nJ'l'ai eue!!!\\n\\\nHI KI KI KI KI KI!\\n\\\nC'est à moi!!!\"))\n\nDEFINE_DIALOG(DIALOG_101, 1, 5, 95, 200, _(\"\\\nAaaak...kiiii!!!\\n\\\nArrête! Tu m'étrangles!\\n\\\nQuoi? Cette casquette?\\n\\\nOK, prends-la...\\n\\\nGrande brute, va!\\n\\\nDe toutes façons,\\n\\\ntu as l'air débile avec ça\\n\\\nsur la tête...\"))\n\nDEFINE_DIALOG(DIALOG_102, 1, 4, 30, 200, _(\"\\\nLes Boos sont timides! Si\\n\\\nvous les regardez dans les\\n\\\nyeux, ils disparaîtront...\\n\\\n\\n\\\nMais si vous leur tournez\\n\\\nle dos, ils réapparaîtront.\\n\\\nInvisibles, ils sont\\n\\\ninvincibles...\\n\\\nTentez de vous faufiler\\n\\\nderrière eux et de leur\\n\\\nbotter les fesses!\"))\n\nDEFINE_DIALOG(DIALOG_103, 1, 4, 95, 200, _(\"\\\nAu sommet des quatre\\n\\\npiliers l'on doit se tenir,\\n\\\npour que la lumière puisse\\n\\\nenfin jaillir...\"))\n\nDEFINE_DIALOG(DIALOG_104, 1, 4, 30, 200, _(\"\\\nL'ombre de l'étoile en\\n\\\nface de vous est un\\n\\\n『Marqueur d'étoile』.\\n\\\n\\n\\\nLorsque vous récupérerez\\n\\\n8 pièces rouges, une\\n\\\nétoile apparaîtra à cet\\n\\\nemplacement.\"))\n\nDEFINE_DIALOG(DIALOG_105, 1, 6, 95, 200, _(\"\\\nCanon prêt à tirer!\\n\\\nAllez, saute à l'intérieur!\\n\\\nTu peux atteindre l'étoile\\n\\\nsur l'île flottante en\\n\\\nutilisant les quatre\\n\\\ncanons.\\n\\\nUtilise le stick multi-\\n\\\ndirectionnel pour viser et\\n\\\nappuie sur [A] pour tirer.\\n\\\nSi tu es habile, sers-toi\\n\\\ndes arbres et des poteaux\\n\\\npour atterrir...\"))\n\nDEFINE_DIALOG(DIALOG_106, 1, 2, 95, 200, _(\"\\\nCanon prêt à tirer!\\n\\\nAllez, saute à l'intérieur!\"))\n\nDEFINE_DIALOG(DIALOG_107, 1, 3, 95, 200, _(\"\\\nLes fantômes sont...\\n\\\n...immortels!\\n\\\nHin hin hin hin...\\n\\\nPourras-tu sortir d'ici...\\n\\\n...vivant?\\n\\\nGni hi hi hi hi hi...\"))\n\nDEFINE_DIALOG(DIALOG_108, 1, 3, 95, 200, _(\"\\\nGNI HI HI HI HI HOU!\\n\\\nVoici le seigneur des\\n\\\nsupplices!\\n\\\nLe maître des ombres...\\n\\\nLe souverain des\\n\\\ncauchemars...\\n\\\nLe Big Boo en personne!\\n\\\nTremblez humains!!!\\n\\\nGNA HI HOU HA HIN HU !\"))\n\nDEFINE_DIALOG(DIALOG_109, 1, 2, 95, 200, _(\"\\\nOooooh Noooon!\\n\\\nMon corps a fondu!\\n\\\nTu ne pourrais pas\\n\\\nm'aider, petit homme?\\n\\\nJ'ai besoin d'un nouveau\\n\\\ncorps!\\n\\\nJe dois faire un golf\\n\\\ndemain...\"))\n\nDEFINE_DIALOG(DIALOG_110, 1, 2, 95, 200, _(\"\\\nJ'ai perdu la tête, on\\n\\\ndirait...\\n\\\nConnais-tu quelqu'un à la\\n\\\nrecherche d'un corps?\\n\\\nJe suis peut-être petit,\\n\\\nmais je grandis vite!\\n\\\nGuide-moi, je te suivrai\\n\\\nn'importe où!\"))\n\nDEFINE_DIALOG(DIALOG_111, 1, 2, 95, 200, _(\"\\\nCoooooool!\\n\\\nQuel super corps!\\n\\\nMaintenant je vais\\n\\\npouvoir aller draguer!\\n\\\nTiens, voici un petit\\n\\\nquelque chose pour toi...\"))\n\nDEFINE_DIALOG(DIALOG_112, 1, 4, 30, 200, _(\"\\\nRamassez le plus de pièces\\n\\\npossible! Elles rempliront\\n\\\nvotre énergie!\\n\\\n\\n\\\nVous pouvez jeter un oeil\\n\\\nau nombre de pièces que\\n\\\nvous avez récupérées dans\\n\\\nles 15 mondes.\\n\\\nVous pouvez aussi remplir\\n\\\nvotre énergie en touchant\\n\\\nun coeur!\\n\\\n\\n\\\nSi vous faites tourner le\\n\\\ncoeur très vite, il vous\\n\\\ndonnera beaucoup\\n\\\nd'énergie...\"))\n\nDEFINE_DIALOG(DIALOG_113, 1, 5, 30, 200, _(\"\\\nIl existe des casquettes\\n\\\nspéciales dans les blocs\\n\\\nrouges, verts et bleus.\\n\\\n\\n\\\n\\n\\\nMarchez sur les\\n\\\ninterrupteurs dans les\\n\\\nniveaux cachés pour faire\\n\\\napparaître les blocs de\\n\\\ncouleur.\"))\n\nDEFINE_DIALOG(DIALOG_114, 1, 3, 95, 200, _(\"\\\nAh c'est pas le moment\\n\\\nde venir m'embêter!\\n\\\n\\n\\\nNous les pierres, on\\n\\\nconstruit des maisons et\\n\\\ndes châteaux...\\n\\\nEt vous les humains, vous\\n\\\nne pensez jamais à nous\\n\\\ndire merci!\\n\\\nSi tu restes là, je m'en\\n\\\nvais t'écraser la face\\n\\\ncomme une vieille prune...\\n\\\nCrois-tu pouvoir faire\\n\\\nune Attaque Rodéo sur\\n\\\nmon dos?\\n\\\nÇa m'étonnerais!\\n\\\nAllez... En garde, nabot\\n\\\nrouge et bleu!\"))\n\nDEFINE_DIALOG(DIALOG_115, 1, 2, 95, 200, _(\"\\\nQuoi? J'ai perdu?!?\\n\\\nSacré nom d'un pétard!\\n\\\nVous les humains, vous\\n\\\nn'avez aucun coeur...\\n\\\nTiens, prends ça...\\n\\\nEt va-t'en!\"))\n\nDEFINE_DIALOG(DIALOG_116, 1, 4, 95, 200, _(\"\\\nHein?/De quoi?\\n\\\nMoi? J'ai perdu?\\n\\\nBattu par un tout petit\\n\\\nbonhomme de rien du tout!\\n\\\nMais cela ne sera pas\\n\\\naussi facile contre le\\n\\\ngrand Bowser!\\n\\\nOh que non!\\n\\\nTiens, voici l'étoile.\\n\\\nDette de jeu...\\n\\\nDette d'honneur...\\n\\\nCiao petit Mario!\\n\\\nSi tu veux me revoir,\\n\\\nchoisis cette étoile sur\\n\\\nl'écran du départ.\\n\\\nA bientôt!\"))\n\nDEFINE_DIALOG(DIALOG_117, 1, 2, 95, 200, _(\"\\\nQui...dérange...mon...\\n\\\n...sommeil...éternel...?\\n\\\nTout...bruit...doit...\\n\\\n...être...puni...!\\n\\\nIntrus...va...être...\\n\\\n...détruit...!\\n\\\n...COMBAT...!!!\\n\\\n...A...MAINS...NUES...!!!\"))\n\nDEFINE_DIALOG(DIALOG_118, 1, 3, 95, 200, _(\"\\\nQu...qu...qu...Hein?\\n\\\nMoi...perdu?...Hein?\\n\\\nMoi...faible...nul.\\n\\\nToi...nouveau pharaon...\\n\\\nTiens...pour toi...\\n\\\nMoi...dormir...dodo. Ciao.\"))\n\nDEFINE_DIALOG(DIALOG_119, 1, 5, 30, 200, _(\"\\\nGrrrrr! Tu m'as surpris...\\n\\\nJe t'ai sous-estimé!\\n\\\nPetit mais costaud, hein?\\n\\\nMais Peach est toujours\\n\\\nma prisonnière! Ha Ha!\\n\\\nNe t'inquiète pas, on se\\n\\\nreverra! Et la prochaine\\n\\\nfois, je te mangerai les\\n\\\ndoigts!\\n\\\nAllez, à bientôt! GWA HA!\"))\n\nDEFINE_DIALOG(DIALOG_120, 1, 3, 30, 200, _(\"\\\nMoi? Le grand Bowser?\\n\\\nVaincu? Non, non!\\n\\\nÇa ne compte pas!\\n\\\nJe dormais! Tu as triché!\\n\\\nLa prochaine fois, je te\\n\\\nmangerai les oreilles!\\n\\\nSi tu veux revoir ta\\n\\\np'tite Peach, rejoins-moi\\n\\\nen haut de la tour...\\n\\\nAllez, à la prochaine!\\n\\\nGWA HA HA HA HA HA HA!\\n\\\nGWA HI HOU HÉ HEU...HA!\"))\n\nDEFINE_DIALOG(DIALOG_121, 1, 4, 30, 200, _(\"\\\nNOoOoOoOoOoOoOoOon!\\n\\\nMario... Méchant petit!\\n\\\nCette fois-ci...\\n\\\n...je suis cuit!!!\\n\\\nMes pouvoirs maléfiques\\n\\\ndisparaissent!\\n\\\nToutes mes troupes sont\\n\\\nanéanties!\\n\\\nLa paix, l'amour et\\n\\\nl'amitié sont de retour!\\n\\\nAaAaAaAaAargh!\\n\\\nC'est insupportable!\\n\\\nMais je reviendrai...\\n\\\nUn jour... Je reviendrai!\\n\\\nEt ce jour-là...\\n\\\nBye Bye Mario! BWA HA!!\"))\n\nDEFINE_DIALOG(DIALOG_122, 1, 6, 30, 200, _(\"\\\n-Le Trou Noir-\\n\\\nDroite: Plate-forme de\\n\\\n////travail.\\n\\\n////Labyrinthe\\n\\\n////toxique.\\n\\\nGauche: Lac souterrain.\"))\n\nDEFINE_DIALOG(DIALOG_123, 1, 5, 30, 200, _(\"\\\n-Caverne Métallique-\\n\\\nDroite: Vers la cascade.\\n\\\nGauche: Interrupteur des\\n\\\n////casquettes-métal.\"))\n\nDEFINE_DIALOG(DIALOG_124, 1, 4, 30, 200, _(\"\\\nPlate-forme de travail:\\n\\\nDanger!\\n\\\nLire le mode d'emploi\\n\\\nattentivement!!!\\n\\\nAppuyez sur une flèche\\n\\\npour déplacer la plate-\\n\\\nforme.\\n\\\n\\n\\\nSi jamais vous tombez de\\n\\\nla plate-forme, retournez\\n\\\nlà où vous l'avez vue pour\\n\\\nla première fois.\"))\n\nDEFINE_DIALOG(DIALOG_125, 1, 3, 30, 200, _(\"\\\nSortie du Labyrinthe\\n\\\ntoxique... Fermée!\\n\\\nFaites demi-tour!\"))\n\nDEFINE_DIALOG(DIALOG_126, 1, 6, 30, 200, _(\"\\\n-Ascenseur 1-\\n\\\nHaut:/ Trou Noir.\\n\\\nDroite: Plate-forme de\\n\\\n////travail.\\n\\\n////Labyrinthe\\n\\\n////toxique.\"))\n\nDEFINE_DIALOG(DIALOG_127, 1, 5, 30, 200, _(\"\\\n-Lac Souterrain-\\n\\\nDroite: Caverne\\n\\\n////métallique.\\n\\\nGauche: Mine abandonnée\\n\\\n////(Fermée).\\n\\\nGros Bibi, un gentil\\n\\\ndragon, vit ici.\\n\\\nFaites l'Attaque Rodéo\\n\\\nsur son dos pour qu'il\\n\\\nbaisse la tête...\"))\n\nDEFINE_DIALOG(DIALOG_128, 1, 5, 95, 200, _(\"\\\nTu dois te battre avec\\n\\\nhonneur! Il est interdit\\n\\\nde jeter une personnalité\\n\\\nroyale hors de la surface\\n\\\nde combat!\"))\n\nDEFINE_DIALOG(DIALOG_129, 1, 5, 30, 200, _(\"\\\nBienvenue dans\\n\\\nle niveau des casquettes\\n\\\nd'invisibilité!!!\\n\\\n\\n\\\n\\n\\\nSi vous marchez sur\\n\\\nl'interrupteur bleu, tous\\n\\\nles blocs bleus deviendront\\n\\\nsolides...\\n\\\n\\n\\\nSi vous portez une\\n\\\ncasquette d'invisibilité,\\n\\\nvous pourrez traverser vos\\n\\\nennemis et pleins d'autres\\n\\\nchoses...\"))\n\nDEFINE_DIALOG(DIALOG_130, 1, 6, 30, 200, _(\"\\\nBienvenue dans le niveau\\n\\\ndes casquettes-métal!!!\\n\\\nSi vous marchez sur\\n\\\nl'interrupteur vert, tous\\n\\\nles blocs verts\\n\\\ndeviendront solides...\\n\\\nSi vous portez une\\n\\\ncasquette-métal, vous\\n\\\nvous transformerez en\\n\\\nMétal Mario! Vous pourrez\\n\\\nalors marcher sous l'eau.\\n\\\nFaites un essai pour voir!\"))\n\nDEFINE_DIALOG(DIALOG_131, 1, 6, 30, 200, _(\"\\\nBienvenue dans le niveau\\n\\\ndes casquettes ailées!!!\\n\\\nMarchez sur l'interrupteur\\n\\\nrouge au sommet de la\\n\\\ntour, au centre des\\n\\\nanneaux arc-en-ciel.\\n\\\nEn actionnant\\n\\\nl'interrupteur, tous les\\n\\\nblocs rouges deviendront\\n\\\nsolides...\\n\\\n\\n\\\n\\n\\\nLorsque vous êtes en\\n\\\npossession de la casquette\\n\\\nailée, faites un Triple\\n\\\nSaut pour vous envoler et\\n\\\nappuyez sur [Z] pour\\n\\\natterrir.\\n\\\nAppuyez vers le bas sur le\\n\\\nstick multidirectionnel\\n\\\npour prendre de l'altitude\\n\\\net vers le haut pour\\n\\\npiquer du nez. Imaginez-\\n\\\nvous à bord d'un 747!!!\"))\n\nDEFINE_DIALOG(DIALOG_132, 1, 1, 30, 200, _(\"\\\nNon, mais?\\n\\\nTu...tu...t'es fou?\\n\\\nTu triches?\\n\\\nOK! T'es disqualifié!\\n\\\nTu l'auras pas volé!\\n\\\nHouuuuuu! Le tricheur!\"))\n\nDEFINE_DIALOG(DIALOG_133, 1, 6, 30, 200, _(\"\\\nMario! C'est toi?\\n\\\nComme je suis heureux de\\n\\\nte voir!\\n\\\nLa Princesse, comme nous\\n\\\ntous, a été emprisonnée\\n\\\ndans les murs du château.\\n\\\nBowser a volé les étoiles\\n\\\ndu château, et il utilise\\n\\\nleur puissance pour se\\n\\\ncréer un monde dans les\\n\\\ntableaux et les murs!\\n\\\n\\n\\\nJe t'en prie, retrouve les\\n\\\nétoiles de puissance!\\n\\\nGrâce à elles, tu pourras\\n\\\nouvrir les portes du\\n\\\nchâteau que Bowser a\\n\\\nfermées...\\n\\\nIl existe quatre pièces\\n\\\nau rez-de-chaussée.\\n\\\nCommence par celle dans\\n\\\nlaquelle tu trouveras le\\n\\\ntableau représentant des\\n\\\nBob-ombs...\\n\\\nBowser a oublié de fermer\\n\\\ncette porte. Lorsque tu\\n\\\nauras récupéré 8 étoiles,\\n\\\nva ouvrir la porte avec la\\n\\\ngrosse étoile: la Princesse\\n\\\ndoit être de l'autre côté!\"))\n\nDEFINE_DIALOG(DIALOG_134, 1, 4, 30, 200, _(\"\\\nLe nom des étoiles inscrit\\n\\\nau début de chaque monde\\n\\\nest un indice!\\n\\\n\\n\\\nTu peux récupérer les\\n\\\nétoiles dans n'importe\\n\\\nquel ordre.\\n\\\n\\n\\\nMais la sélection d'une\\n\\\nétoile peut impliquer\\n\\\nl'apparition de nouveaux\\n\\\ndécors ou personnages...\\n\\\nAprès avoir récupéré des\\n\\\nétoiles, tu peux tenter ta\\n\\\nchance dans d'autres\\n\\\nniveaux...\\n\\\nAide-nous le plus vite\\n\\\npossible, mon mignon petit\\n\\\nMario en sucre...\"))\n\nDEFINE_DIALOG(DIALOG_135, 1, 6, 30, 200, _(\"\\\nBowser a volé les étoiles!\\n\\\nJe l'ai vu!\\n\\\nDe mes propres yeux!\\n\\\nIl faut que tu nous\\n\\\nviennes en aide, Mario...\\n\\\n\\n\\\nIl a caché 6 étoiles dans\\n\\\nchaque monde, mais tu ne\\n\\\npourras pas toutes les\\n\\\nrécupérer sans avoir\\n\\\nactionné les interrupteurs\\n\\\nde casquettes...\\n\\\nLes étoiles que tu as\\n\\\nrécupérées apparaîtront à\\n\\\nl'écran au début de\\n\\\nchaque niveau...\\n\\\n\\n\\\n\\n\\\nSi tu désires revoir les\\n\\\nennemis que tu as déjà\\n\\\nvaincu, sélectionne les\\n\\\nétoiles en relation avec\\n\\\nces ennemis...\"))\n\nDEFINE_DIALOG(DIALOG_136, 1, 6, 30, 200, _(\"\\\nWhoa!!! Tu as déjà\\n\\\nrécupéré autant d'étoiles?\\n\\\nIncroyable! T'es fort, toi!\\n\\\nMais fais attention:\\n\\\nBowser et ses sbires sont\\n\\\ndes durs à cuire...\\n\\\nN'oublie pas de récupérer\\n\\\ndes pièces pour regagner\\n\\\nde l'énergie.\\n\\\nLes pièces jaunes te\\n\\\nrempliront une portion de\\n\\\nton énergie...\\n\\\nLes pièces rouges t'en\\n\\\ndonneront deux et les\\n\\\npièces bleues, cinq.\\n\\\n\\n\\\n\\n\\\n\\n\\\nPour faire apparaître des\\n\\\npièces bleues, fais une\\n\\\nAttaque Rodéo sur un Bloc\\n\\\nde pièces bleues.\\n\\\n\\n\\\n\\n\\\nD'autre part, tu peux\\n\\\nte faire moins mal en\\n\\\ntombant d'une falaise, en\\n\\\neffectuant une Attaque\\n\\\nRodéo juste avant de\\n\\\ntoucher le sol...\"))\n\nDEFINE_DIALOG(DIALOG_137, 1, 5, 30, 200, _(\"\\\nMerci Mario!\\n\\\nGrâce à tes étoiles de\\n\\\npuissance, Bowser est allé\\n\\\nse réfugier dans une\\n\\\nautre partie du château!\\n\\\nAu fait, savais-tu qu'une\\n\\\nétoile de puissance\\n\\\napparaît à chaque fois\\n\\\nque tu récupères 100\\n\\\npièces dans un niveau?\"))\n\nDEFINE_DIALOG(DIALOG_138, 1, 6, 30, 200, _(\"\\\n-Ascenseur 2-\\n\\\nBas://Lac souterrain.\\n\\\nGauche: Trou Noir.\\n\\\nDroite: Labyrinthe\\n\\\n////toxique\\n\\\n////(fermé).\"))\n\nDEFINE_DIALOG(DIALOG_139, 1, 4, 30, 200, _(\"\\\n\\n\\\nAu dessus:\\n\\\nChariot automatique.\\n\\\n\\n\\\nLe chariot se met en\\n\\\nroute automatiquement et\\n\\\nsuit un chemin pré-\\n\\\ndéterminé...\\n\\\nLe chariot disparaîtra\\n\\\nautomatiquement lorsque\\n\\\nvous tomberez...\"))\n\nDEFINE_DIALOG(DIALOG_140, 1, 6, 30, 200, _(\"\\\n-Plate-forme de travail-\\n\\\nDroite: Entrée du\\n\\\n////Labyrinthe\\n\\\n////toxique.\\n\\\nGauche: Trou Noir.\\n\\\n////Ascenseur 1.\\n\\\nFlèche: Votre position\\n\\\n////actuelle.\"))\n\nDEFINE_DIALOG(DIALOG_141, 1, 4, 150, 200, _(\"\\\nVous avez récupéré une\\n\\\ndes étoiles du château!\\n\\\nVous pouvez désormais\\n\\\nouvrir certaines portes!\\n\\\nEssayez celle de la\\n\\\nchambre de la Princesse\\n\\\nPeach, en haut à droite\\n\\\ndans le hall d'entrée...\\n\\\nEssayez aussi celle menant\\n\\\nau tableau de la\\n\\\nForteresse de Whomp,\\n\\\nau rez-de-chaussée...\\n\\\nLes troupes de Bowser\\n\\\nsont encore nombreuses!\\n\\\nIl faut les arrêter à tout\\n\\\nprix! Courage...\"))\n\nDEFINE_DIALOG(DIALOG_142, 1, 5, 150, 200, _(\"\\\nVous avez récupéré trois\\n\\\nétoiles de puissance!\\n\\\nDésormais, vous pouvez\\n\\\nouvrir les portes marquées\\n\\\nd'un 『3』.\\n\\\nVous pouvez aller et venir\\n\\\ndans les niveaux comme\\n\\\nbon vous semble...\\n\\\n\\n\\\n\\n\\\nLes ennemis qui vous\\n\\\nattendent seront de plus\\n\\\nen plus costauds!\\n\\\nAlors, prudence...\"))\n\nDEFINE_DIALOG(DIALOG_143, 1, 5, 150, 200, _(\"\\\nVous avez récupéré huit\\n\\\nétoiles de puissance!\\n\\\nVous pouvez désormais\\n\\\nouvrir la porte marquée\\n\\\nd'une grosse étoile!\\n\\\nLa Princesse est juste de\\n\\\nl'autre côté...\\n\\\nPouvez-vous l'entendre\\n\\\ncrier votre nom?\\n\\\n『Marioooooo!』\"))\n\nDEFINE_DIALOG(DIALOG_144, 1, 5, 150, 200, _(\"\\\nVous avez récupéré 30\\n\\\nétoiles de puissance!\\n\\\nVous pouvez désormais\\n\\\nouvrir la porte marquée\\n\\\nd'une grosse étoile!\\n\\\nMais avant de foncer\\n\\\ncomme un dingue vers la\\n\\\nporte, êtes-vous sûr de\\n\\\nn'avoir rien oublié?\\n\\\n\\n\\\nAvez-vous enfoncé les\\n\\\ndeux piliers? Avez-vous\\n\\\ntoujours votre casquette?\\n\\\n\\n\\\n\\n\\\nSi vous l'avez perdue\\n\\\ndans le desert, allez\\n\\\nbotter le croupion du\\n\\\nvilain vautour...\\n\\\n\\n\\\nOn dit que Bowser s'est\\n\\\nréfugié dans les\\n\\\nprofondeurs de l'océan...\\n\\\nL'avez-vous rencontré?\"))\n\nDEFINE_DIALOG(DIALOG_145, 1, 6, 150, 200, _(\"\\\nVous avez récupéré 50\\n\\\nétoiles de puissance!\\n\\\nVous pouvez désormais\\n\\\nouvrir la porte marquée\\n\\\nd'une grosse étoile au\\n\\\ndeuxième étage...\\n\\\nAvez-vous trouvé les trois\\n\\\ninterrupteurs: rouge, vert\\n\\\net bleu?\\n\\\nLes casquettes provenant\\n\\\ndes blocs de couleur\\n\\\npeuvent être très utiles...\\n\\\nAllez, en route Mario...\\n\\\nEt que la force soit avec\\n\\\ntoi, petit homme.\"))\n\nDEFINE_DIALOG(DIALOG_146, 1, 5, 150, 200, _(\"\\\nVous avez récupéré 70\\n\\\nétoiles de puissance!\\n\\\nDésormais, vous pouvez\\n\\\naccéder en haut de\\n\\\n『l'escalier sans fin』...\\n\\\nLe terrible Bowser vous y\\n\\\nattend...\\n\\\nEtes-vous prêt à\\n\\\nl'affronter?\"))\n\nDEFINE_DIALOG(DIALOG_147, 1, 6, 30, 200, _(\"\\\nFaites-vous bon usage\\n\\\ndes casquettes spéciales?\\n\\\nElles peuvent vous être\\n\\\ntrès utiles...\\n\\\n\\n\\\n\\n\\\nVous devez tout d'abord\\n\\\nrendre les blocs de couleur\\n\\\nsolides en actionnant des\\n\\\ninterrupteurs secrets...\\n\\\n\\n\\\n\\n\\\nLes blocs rouges vous\\n\\\nfourniront des casquettes\\n\\\nailées, les bleus des\\n\\\ncasquettes d'invisibilité,\\n\\\net les verts des\\n\\\ncasquettes-métal...\"))\n\nDEFINE_DIALOG(DIALOG_148, 1, 6, 30, 200, _(\"\\\nMontagne du Bonhomme de\\n\\\nneige.../DANGER!\\n\\\nNe pas tenter le Triple\\n\\\nSaut au-dessus de la\\n\\\nmachine à cracher des\\n\\\nglaçons...\\n\\\nTomber dans le lac gelé\\n\\\nvous fera vite perdre de\\n\\\nl'énergie de façon\\n\\\npermanente.\\n\\\nAlors, attention!\\n\\\n-Le Bonhomme de neige-\"))\n\nDEFINE_DIALOG(DIALOG_149, 1, 5, 30, 200, _(\"\\\nVoici la Glissade Secrète\\n\\\nde la Princesse Peach!\\n\\\nVous y trouverez une\\n\\\nétoile secrète que Bowser\\n\\\nn'a pas pu voler...\\n\\\nPendant que vous\\n\\\nglisserez, appuyez vers\\n\\\nl'avant pour accélérer, et\\n\\\nvers l'arrière pour\\n\\\nralentir...\\n\\\nSi vous glissez très vite,\\n\\\nvous découvrirez une\\n\\\ndes étoiles secrètes du\\n\\\nchâteau!\"))\n\nDEFINE_DIALOG(DIALOG_150, 1, 4, 30, 200, _(\"\\\nWhoa! Va-z'y, lui!\\n\\\nT' as inondé ma zon-mé!!!\\n\\\nPourquoi t'as fait ça, yo!\\n\\\nT'es pas cool, toi?\\n\\\nRegarde! Mon toit est\\n\\\nfichu, et mon plancher\\n\\\nest trempé!\\n\\\nNoOoOoOoOoOoOon!!!\\n\\\nÇa me rend ouf de voir\\n\\\nça! Complètement chtarbé!\\n\\\nC'est à cause de cette\\n\\\nétoile...\\n\\\nJe suis sûr qu'elle me\\n\\\nporte la poisse...\\n\\\nSaleté, va!\"))\n\nDEFINE_DIALOG(DIALOG_151, 1, 6, 30, 200, _(\"\\\nAh non! Ça suffit!\\n\\\nD'abord tu me mouilles,\\n\\\nensuite tu m'écrases la\\n\\\nface...\\n\\\nGrrrr! Pas cool, Bob.\\n\\\nTu cherches le contact?\"))\n\nDEFINE_DIALOG(DIALOG_152, 1, 2, 30, 200, _(\"\\\nGnaaaaa! Pov'type, va!\\n\\\nTiens, la v'là ton étoile!\\n\\\nJ'm'en fiche...\\n\\\nJ'peux en avoir d'autres.\\n\\\nAllez, à la prochaine...\\n\\\nCool, Abdoul.\"))\n\nDEFINE_DIALOG(DIALOG_153, 1, 1, 30, 200, _(\"\\\nHé! Qui va là?\\n\\\nQui me grimpe dessus?\\n\\\nUne mouche?\\n\\\nUn moustique?\\n\\\nUn cafard?\\n\\\nT'as intérêt à dégager!\\n\\\nSinon j'te souffle dessus!\"))\n\nDEFINE_DIALOG(DIALOG_154, 1, 5, 30, 200, _(\"\\\nAccroche-toi à ta\\n\\\ncasquette! Si jamais tu\\n\\\nla perds, retourne la\\n\\\nchercher là où tu l'as\\n\\\nperdue...\\n\\\nSans elle tu peux te faire\\n\\\ntrès mal...\\n\\\nAlors, fais-y attention!\\n\\\n\\n\\\n\\n\\\nAu fait, la Princesse est\\n\\\ntoujours emprisonnée dans\\n\\\nles murs du château!\\n\\\nSauve-la, mon mignon\\n\\\nMario rouge et bleu...\\n\\\nHeu... Tu savais qu'il\\n\\\nexiste aussi des niveaux\\n\\\ndans les murs, hein?\"))\n\nDEFINE_DIALOG(DIALOG_155, 1, 5, 30, 200, _(\"\\\nGrâce au pouvoir des\\n\\\nétoiles, le château revient\\n\\\npeu à peu à la vie...\\n\\\nJe t'en prie Mario,\\n\\\nva affronter Bowser!\\n\\\nConnais-tu la salle du\\n\\\nmiroir? Fais attention à\\n\\\ntout ce qui n'a pas de\\n\\\nreflet...\\n\\\n\\n\\\nAutre chose: rentre dans\\n\\\nle niveau Trempé-Séché\\n\\\nà l'aide d'un grand saut.\\n\\\n\\n\\\nAllez, courage camarade!\"))\n\nDEFINE_DIALOG(DIALOG_156, 1, 3, 30, 200, _(\"\\\nLe niveau de la pendule\\n\\\nest étrange...\\n\\\n\\n\\\nFais attention à la\\n\\\ngrande aiguille lorsque\\n\\\ntu rentres dans l'horloge.\"))\n\nDEFINE_DIALOG(DIALOG_157, 1, 5, 30, 200, _(\"\\\nAttention aux sables\\n\\\nmouvants!\\n\\\nSi vous vous faites\\n\\\navaler, tâchez de ne pas\\n\\\nboire la tasse!\\n\\\nLes zones sombres sont\\n\\\ndes trous sans fond...\\n\\\nAlors, prudence jeune\\n\\\naventurier...\"))\n\nDEFINE_DIALOG(DIALOG_158, 1, 6, 30, 200, _(\"\\\n1. Si vous sautez de\\n\\\nfaçon répétée, vous\\n\\\nsauterez de plus en plus\\n\\\nhaut. En courant et en\\n\\\nsautant trois fois, vous\\n\\\nferez un Triple Saut.\\n\\\n2. Sautez contre un mur\\n\\\net sautez à nouveau pour\\n\\\ncréer une Impulsion.\\n\\\nGrâce à cette technique,\\n\\\nvous pourrez accéder à\\n\\\ndes lieux en hauteur.\"))\n\nDEFINE_DIALOG(DIALOG_159, 1, 4, 30, 200, _(\"\\\n3. En vous arrêtant, en\\n\\\nappuyant sur [Z] et en\\n\\\nsautant, vous ferez un\\n\\\nSaut Périlleux en arrière.\\n\\\nPour faire un Saut en\\n\\\nLongueur, courez, appuyez\\n\\\nsur [Z], puis sautez.\"))\n\nDEFINE_DIALOG(DIALOG_160, 1, 3, 30, 200, _(\"\\\nAppuyez sur [B] lorsque\\n\\\nvous courez pour faire\\n\\\nune attaque en glissade.\\n\\\nPour vous remettre\\n\\\ndebout, appuyez sur [A] ou\\n\\\nsur [B].\"))\n\nDEFINE_DIALOG(DIALOG_161, 1, 4, 30, 200, _(\"\\\nMario!?!?!\\n\\\nC'est toi? Vraiment toi?\\n\\\nÇa fait un bout de temps\\n\\\nque je ne t'avais pas vu!\\n\\\nTu as grossi, non?\\n\\\nOn m'a dit de t'attendre\\n\\\nici, mais je commençais\\n\\\nà perdre espoir...\\n\\\nAlors c'est vrai? Tu as\\n\\\nbattu Bowser? Encore une\\n\\\nfois? Il n'abandonne\\n\\\njamais ce gros reptile...\\n\\\nTu as récupéré toutes les\\n\\\nétoiles? Tu as sauvé la\\n\\\nPrincesse Peach?\\n\\\nT'es amoureux, non?\\n\\\nTiens...\\n\\\nJ'ai une lettre pour toi...\\n\\\nC'est peut-être une\\n\\\nadmiratrice, qui sait?\\n\\\n『Merci d'avoir joué au\\n\\\nplus beau jeu de toute la\\n\\\ngalaxie:\\n\\\nMARIO 64!!!\\n\\\nIl reste sûrement des\\n\\\nniveaux que vous ne\\n\\\nconnaissez pas par coeur,\\n\\\nalors...\\n\\\nVoici quelques munitions!\\n\\\nA bientôt et merci!\\n\\\n--Les créateurs de\\n\\\n/Mario 64...\"))\n\nDEFINE_DIALOG(DIALOG_162, 1, 2, 30, 200, _(\"\\\nOh, non!\\n\\\nEncore toi?\\n\\\nT'es amoureux, ou quoi?\\n\\\nTu veux m'épouser?\\n\\\nDésolé, mais tu n'es pas\\n\\\nmon type...\\n\\\nMon truc à moi, c'est les\\n\\\nfemelles...\\n\\\nAh! Tu veux peut-être\\n\\\nune étoile?\\n\\\nOK. Mais j'te préviens:\\n\\\nc'est la dernière fois!\\n\\\nAh... Autre chose...\\n\\\n\\n\\\nLACHE-MOI!!!!!\\n\\\nGRANDE BRUTE!!!!!\"))\n\nDEFINE_DIALOG(DIALOG_163, 1, 4, 30, 200, _(\"\\\nNoOoOoOoOoOoOoOon!!!\\n\\\nTu...tu...tu m'as battu?\\n\\\nMoi?!? C'est illogique!\\n\\\nC'est moi le plus grand!\\n\\\nQuoi? Il y avait 120\\n\\\nétoiles en tout?!?\\n\\\nHeu......\\n\\\nJe le savais!\\n\\\nAaaargh! Le château\\n\\\nregagne tous ses pouvoirs,\\n\\\nc'est insupportable!\\n\\\nGnAaAaAaAaAaAaAaArgh!\\n\\\nA la prochaine, Mario...\\n\\\nTu sais bien que je ne\\n\\\nsuis pas du genre à\\n\\\nabandonner si facilement!\\n\\\nBWA HA HA HA HA HA HA!\\n\\\nGWA HI HA HI HOU HEU!\\n\\\n..... Atcha!\"))\n\nDEFINE_DIALOG(DIALOG_164, 1, 4, 30, 200, _(\"\\\nBeuuuuuuuu...\\n\\\nJ'ai trop mangé, moi...\\n\\\nBeuuuuuuuu...\\n\\\nMm? Qui es-tu?\\n\\\nMario! Te voilà, rigolo!\\n\\\nÇa te dit une petite\\n\\\ncourse?\\n\\\nA moins que tu aies peur!\\n\\\nAlors, c'est d'accord?\\n\\\nPrêt...\\n\\\n\\n\\\n//Partez!//Heu, non!\"))\n\nDEFINE_DIALOG(DIALOG_165, 1, 3, 30, 200, _(\"\\\nTourner autour du poteau\\n\\\npeut faire tourner les\\n\\\ntêtes...\"))\n\nDEFINE_DIALOG(DIALOG_166, 1, 4, 30, 200, _(\"\\\nJe m'entraîne...\\n\\\nJe reviens plus tard...\\n\\\n\\n\\\n-- Koopa-Rapido --\"))\n\nDEFINE_DIALOG(DIALOG_167, 1, 5, 30, 200, _(\"\\\nEn route vers le château!\\n\\\n\\n\\\nAppuyez sur [A] pour sauter\\n\\\net sur [Z] pour vous\\n\\\naccroupir.\\n\\\nAppuyez sur [B] pour\\n\\\nattaquer ou pour attraper\\n\\\nquelque chose. Appuyez à\\n\\\nnouveau sur [B] pour lancer\\n\\\nce que vous portez.\"))\n\nDEFINE_DIALOG(DIALOG_168, 1, 6, 30, 200, _(\"\\\nHé! Lâche-moi un peu!\\n\\\nÇa fait deux fois que tu\\n\\\nt'essuies les pieds sur\\n\\\nma tête!\\n\\\nTu m'cherches ou quoi?\\n\\\nCoup d'boule!!!!\"))\n\nDEFINE_DIALOG(DIALOG_169, 1, 5, 30, 200, _(\"\\\nDehors les touristes!\\n\\\nCette caverne est très\\n\\\ndangereuse!!!\\n\\\nAlors... DE-HORS!\\n\\\n/ -- Le capitaine --\"))\n"
  },
  {
    "path": "text/jp/courses.h",
    "content": "COURSE_ACTS(COURSE_BOB, _(\"　１　ボムへいの　せんじょう\"),\n       _(\"やまのうえの　ボムキング\")    , _(\"はくねつ　ノコノコレース\")    , _(\"そらのしままで　ぶっとべ\"),\n       _(\"８まいの　あかコイン\")        , _(\"そらにはばたけ　はねマリオ\")  , _(\"ワンワンの　いぬごやで\"))\n\nCOURSE_ACTS(COURSE_WF, _(\"　２　バッタンキングの　とりで\"),\n       _(\"いかりのバッタン　キング\")    , _(\"とりでの　てっぺんへ\")        , _(\"たいほうで　ひとっとび\"),\n       _(\"うきしまの　８まいコイン\")    , _(\"とりかごへ　ストーン\")        , _(\"たいほうで　ぶっこわせ！\"))\n\nCOURSE_ACTS(COURSE_JRB, _(\"　３　かいぞくの　いりえ\"),\n       _(\"ちんぼつせんの　おたから\")    , _(\"でてこい　きょだいウツボ\")    , _(\"かいていどうくつの　おたから\"),\n       _(\"うかんだフネの　あかコイン\")  , _(\"いわのはしらへ　ひとっとび\")  , _(\"ふきだす　みずを　くぐれ\"))\n\nCOURSE_ACTS(COURSE_CCM, _(\"　４　さむいさむい　マウンテン\"),\n       _(\"スーパースノースライダー\")    , _(\"まいごの　こペンギン\")        , _(\"ペンギン　チャンピオンレース\"),\n       _(\"すべって　８まいあかコイン\")  , _(\"ゴロゴロ　ゆきダルマ\")        , _(\"かくれ　スーパー　カベキック\"))\n\nCOURSE_ACTS(COURSE_BBH, _(\"　５　テレサの　ホラーハウス\"),\n       _(\"おやかたテレサを　さがせ\")    , _(\"テレサの　メリーゴーランド\")  , _(\"ほんだなオバケの　ナゾ\"),\n       _(\"８まいコインは　どこだ\")      , _(\"バルコニーの　ボステレサ\")    , _(\"かくしべやの　おおめだま\"))\n\nCOURSE_ACTS(COURSE_HMC, _(\"　６　やみにとける　どうくつ\"),\n       _(\"ドッシーのいる　ちていこ\")    , _(\"そうさリフトの　あかコイン\")  , _(\"メタルで　ダッシュ\"),\n       _(\"ケムリめいろを　ぬけて\")      , _(\"ケムリめいろの　ひじょうぐち\"), _(\"ゴロゴロいわの　ひみつ\"))\n\nCOURSE_ACTS(COURSE_LLL, _(\"　７　ファイアバブル　ランド\"),\n       _(\"おとせ　ボスどんけつ\")        , _(\"たたかえ！どんけつたい\")      , _(\"１５パズルの　８まいコイン\"),\n       _(\"コロコロ　まるたわたり\")      , _(\"かざんの　パワースター\")      , _(\"かざんの　リフトツアー\"))\n\nCOURSE_ACTS(COURSE_SSL, _(\"　８　あっちっち　さばく\"),\n       _(\"いたずらハゲたか　ジャンゴ\")  , _(\"ピラミッドの　てっぺんで\")    , _(\"きょだいピラミッドの　ないぶ\"),\n       _(\"４つのはしらに　たつものへ\")  , _(\"とびまわれ　８まいコイン\")    , _(\"きょだいピラミッドのナゾ\"))\n\nCOURSE_ACTS(COURSE_DDD, _(\"　９　ウォーター　ランド\"),\n       _(\"クッパの　せんすいかん\")      , _(\"うずしおの　たからばこ\")      , _(\"にげたクッパの　あかコイン\"),\n       _(\"ふきだす　みずを　くぐれ\")    , _(\"マンタの　おくりもの\")        , _(\"ボウシが　そろったら\"))\n\nCOURSE_ACTS(COURSE_SL, _(\"１０　スノーマンズ　ランド\"),\n       _(\"おおゆきダルマの　おでこ\")    , _(\"こおりのくにの　どんけつ\")    , _(\"こおりの　オブジェ\"),\n       _(\"つめたい　いけを　こえて\")    , _(\"コウラにのって　あかコイン\")  , _(\"フワフワさんの　おうち\"))\n\nCOURSE_ACTS(COURSE_WDW, _(\"１１　みずびたシティー\"),\n       _(\"ビリビリの　まめリフト\")      , _(\"トップオブ　ザ　シティー\")    , _(\"あさせと　そらのシークレット\"),\n       _(\"いそげ！かなあみエレベーター\"), _(\"ダウンタウンの　あかコイン\")  , _(\"ダウンタウンを　かけろ\"))\n\nCOURSE_ACTS(COURSE_TTM, _(\"１２　たかいたかいマウンテン\"),\n       _(\"たかいたかい　やまのうえ\")    , _(\"いたずらザル　ウッキィのオリ\"), _(\"おばけキノコの　あかコイン\"),\n       _(\"マウンテン　スライダー\")      , _(\"はしのうえから　みわたせば\")  , _(\"ぶっとべ　はなれキノコへ\"))\n\nCOURSE_ACTS(COURSE_THI, _(\"１３　ちびでか　アイランド\"),\n       _(\"きょだいパックンフラワー\")    , _(\"デカじまの　てっぺんで\")      , _(\"ノコノコ　リターンマッチ\"),\n       _(\"チビじまの　５シークレット\")  , _(\"ハナチャンの　あかコイン\")    , _(\"イカリの　ハナチャン\"))\n\nCOURSE_ACTS(COURSE_TTC, _(\"１４　チックタックロック\"),\n       _(\"グルグル　かごのなかへ\")      , _(\"ふりこの　へや\")              , _(\"チックタックはりの　うえ\"),\n       _(\"えっへん　てっぺん　ドッスン\"), _(\"つきだしを　のりこえて\")      , _(\"００ふんの　あかコイン\"))\n\nCOURSE_ACTS(COURSE_RR, _(\"１５　レインボー　クルーズ\"),\n       _(\"にじを　わたる　ふね\")        , _(\"てんくうの　おやしき\")        , _(\"タテめいろの　あかコイン\"),\n       _(\"カゼきる　きょだいブランコ\")  , _(\"おおぞら　アスレチック\")      , _(\"にじの　かなたの　しま\"))\n\nSECRET_STAR(COURSE_BITDW,    _(\"　　　やみの　せかいの　クッパ\"))\nSECRET_STAR(COURSE_BITFS,    _(\"　　　ほのおの　うみの　クッパ\"))\nSECRET_STAR(COURSE_BITS,     _(\"　　　てんくうの　たたかい！\"))\nSECRET_STAR(COURSE_PSS,      _(\"　　　ピーチのかくれスライダー\"))\nSECRET_STAR(COURSE_COTMC,    _(\"　　　メタルスイッチの　たき\"))\nSECRET_STAR(COURSE_TOTWC,    _(\"　　　はばたけ！はねスイッチへ\"))\nSECRET_STAR(COURSE_VCUTM,    _(\"　　　おほりのとうめいスイッチ\"))\nSECRET_STAR(COURSE_WMOTR,    _(\"　　　にじ　かける　はねマリオ\"))\nSECRET_STAR(COURSE_SA,       _(\"　　　おさかなと　いっしょ\"))\nSECRET_STAR(COURSE_CAKE_END, _(\"　　　おいしいケーキ\"))\n\nCASTLE_SECRET_STARS(_(\"　　　おしろのかくれスター\"))\n\nEXTRA_TEXT(0, _(\"おしろのかくれスター\"))\nEXTRA_TEXT(1, _(\"１００まいコインの　スター\"))\nEXTRA_TEXT(2, _(\"マウンテンのへやが　ひらく！\"))\nEXTRA_TEXT(3, _(\"みずとゆき２つのへやが　ひらく！\"))\nEXTRA_TEXT(4, _(\"おおきなほしの　ドアがひらく！\"))\nEXTRA_TEXT(5, _(\"クッパへの　とびらがひらく！\"))\nEXTRA_TEXT(6, _(\"３がいへの　とびらがひらく！\"))\n"
  },
  {
    "path": "text/jp/dialogs.h",
    "content": "// Parameters: dialog enum ID, (unused), lines per box, left offset, width\n\n#ifdef VERSION_JP\n#define HOW_TO_READ_SIGNS_1 \"\\\nカンバンを　よむときも\\n\\\nたちどまって　Ｂボタン！\\n\\\nＡかＢボタンですすめる！\\n\\\nまえにたつだけで　はなし\\n\\\nかける、どうぶつもいます。\"\n#else\n#define HOW_TO_READ_SIGNS_1 \"\\\nカンバンは　まえにたって\\n\\\nＡかＢボタンでよめます。\\n\\\nまえにたつだけで　はなし\\n\\\nかけてくれる　どうぶつも\\n\\\nいます。\"\n#endif\n\nDEFINE_DIALOG(DIALOG_000, 1, 5, 30, 200, _(\"\\\nおおっと、ここはキケンな\\n\\\nせんじょうの　どまんなか。\\n\\\n『え』のなかのせかいには\\n\\\nクッパが　ぬすんだ\\n\\\nパワースターがある。\\n\\\nまずは、あかいボムへいに\\n\\\nはなしかけてみるといい！\\n\\\nＢボタンではなしができる。\\n\\\nきっと、ちからになって\\n\\\nくれるはずだ。\\n\"\\\nHOW_TO_READ_SIGNS_1))\n\nDEFINE_DIALOG(DIALOG_001, 1, 4, 95, 200, _(\"\\\nあぶない　あぶない！！\\n\\\nこんなところを　うろうろ\\n\\\nしてると、みずばくだんが\\n\\\nふってきますよ。\\n\\\nくろいボムへいたちは\\n\\\nたたかいが　だいすきで、\\n\\\nいつも　ぼくらを\\n\\\nこうげきしてきます。\\n\\\nボムキングという　ボスが\\n\\\nスターを　てにいれてから\\n\\\nここは　せんじょうに\\n\\\nなってしまいました。\\n\\\nボムキングから　スターを\\n\\\nとりあげてくれませんか？\\n\\\nこのさきの　はしをわたり\\n\\\nみちぞいにひだりにいけば、\\n\\\nボムとりでの　いりぐちに\\n\\\nつきます。キングのスター\\n\\\nを　とりもどしたら　また\\n\\\nあいに　きてください。\"))\n\nDEFINE_DIALOG(DIALOG_002, 1, 4, 95, 200, _(\"\\\nちょっと　あなた！\\n\\\nこのさきはキケンですよ！\\n\\\n\\n\\\nそこで、アドバイスです。\\n\\\nそらから　ふってくる\\n\\\nみずばくだんをよけて、\\n\\\nはしを『２つ』わたると\\n\\\nあちらの『じんち』です。\\n\\\nやまのうえのボムキングは\\n\\\nすごく　ちからもちです。\\n\\\nかつぎあげられないように\\n\\\nきをつけてください。\\n\\\nぼくら　あかボムへいは\\n\\\nあなたのみかたです。\\n\\\nいつでも　はなしかけて\\n\\\nきてくださいね！\"))\n\nDEFINE_DIALOG(DIALOG_003, 1, 5, 95, 200, _(\"\\\nおかげで　ボムキングは\\n\\\nおとなしくなりました！\\n\\\nでも、たたかいは　おわり\\n\\\nません。　かいぶつたちが\\n\\\nまだスターをもっています。\\n\\\nスターをいくつかとったら\\n\\\nあたらしい　へやのドアを\\n\\\nひらくことが　できます。\\n\\\nつぎのへやの　せかいへと\\n\\\nすすんでください！\\n\\\nぼくらのなかまが\\n\\\nおまちしています。\\n\\\nはなしかけて　くださいね。\\n\\\nいつでも　たいほうを\\n\\\nじゅんびしますよ。\"))\n\nDEFINE_DIALOG(DIALOG_004, 1, 3, 95, 200, _(\"\\\nぼくたちは　へいわを\\n\\\nねがっています。　だから\\n\\\nたいほうは　つかいません。\\n\\\nけれど　あなたをどこかに\\n\\\nとばすなら　へいきです。\\n\\\nどうぞ　つかってください。\\n\\\nこのコースにあるすべての\\n\\\nあかボムぐん　たいほうを\\n\\\nつかえるように　します。\"))\n\nDEFINE_DIALOG(DIALOG_005, 1, 4, 30, 200, _(\"\\\nなーんだ、マリオさんじゃ\\n\\\nないッスか！\\n\\\nボムキングやっつけたって\\n\\\nほんとーッスか？\\n\\\nいやー　すごいッス！\\n\\\nさっすが　つよいし、\\n\\\nオイラほどではないけど、\\n\\\nあしも　はやいッスよね！\\n\\\nひとつオイラと、\\n\\\nボムキングのヤツがいた\\n\\\nおやまのちょうじょうまで\\n\\\nかけっこでもしませんか？\\n\\\nそれでは　オイラが、\\n\\\n『ドン！』といったら\\n\\\nスタート　ッスよ。\\n\\\n\\n\\\n　ヨーーーイ！\\n\\\n\\n\\\n　　　ドン！　　やめる\"))\n\nDEFINE_DIALOG(DIALOG_006, 1, 4, 30, 200, _(\"\\\nははっ　ズルッコは\\n\\\nなしッス！　マリオさん。\\n\\\nまたこんど\\n\\\nあそびましょうね。\"))\n\nDEFINE_DIALOG(DIALOG_007, 1, 6, 30, 200, _(\"\\\nハア　ハア　ハア\\n\\\nいやーまいったッス！\\n\\\nほんと　はえーッスね！\\n\\\nオイラに　かったきねんに、\\n\\\nこれ、あげるッス。\\n\\\nホイ！\"))\n\nDEFINE_DIALOG(DIALOG_008, 1, 5, 30, 200, _(\"\\\nもうけんワンワン　キケン\\n\\\nＣボタンの　うえをおして\\n\\\n『マリオのちかく』から\\n\\\nながめて　ください。\\n\\\nとても　コワイです。\\n\\\nクイのうえの　あかコイン。\\n\\\nおなじコインを　さがして\\n\\\n８まいあつめると、はしを\\n\\\nわたったひだりのはやしに\\n\\\nスターがでます。\"))\n\nDEFINE_DIALOG(DIALOG_009, 1, 5, 30, 200, _(\"\\\nひっさしぶりッス！　いま\\n\\\nちょーどかえったとこッス。\\n\\\nパワースターのせいか\\n\\\nいちだんと　はやくなった\\n\\\nようッスね！\\n\\\nこのまえは　まけちゃって\\n\\\nほーんと　くやしいッス。\\n\\\nここは　オイラのホーム\\n\\\nグランド！じしんあるッス。\\n\\\nもいちどやりましょうよ！\\n\\\nゴールはカゼふきのたに！\\n\\\nしってるッスよね！？\\n\\\nそんじゃ\\n\\\n　ヨーーーイ！\\n\\\n　　　ドン！　　やめる\"))\n\nDEFINE_DIALOG(DIALOG_010, 1, 3, 30, 200, _(\"\\\nそらを　じゆうにとべる\\n\\\n『はねのぼうし』の\\n\\\nスイッチを　ふみました。\\n\\\nせかいじゅうにある\\n\\\nあかブロックから、はねの\\n\\\nぼうしがとびだします。\\n\\\nここまでをセーブする？\\n\\\n\\n\\\n　　　はい　　　いいえ\"))\n\nDEFINE_DIALOG(DIALOG_011, 1, 3, 30, 200, _(\"\\\nむてきの　からだになれる\\n\\\n『メタルのぼうし』の\\n\\\nスイッチを　ふみました。\\n\\\nせかいじゅうの　みどりの\\n\\\nブロックから、メタルの\\n\\\nぼうしが　とびだします。\\n\\\nここまでをセーブする？\\n\\\n\\n\\\n　　　はい　　　いいえ\"))\n\nDEFINE_DIALOG(DIALOG_012, 1, 3, 30, 200, _(\"\\\nすがたをけせる　まほうの\\n\\\n『とうめいのぼうし』の\\n\\\nスイッチを　ふみました。\\n\\\nせかいじゅうの　あおい\\n\\\nブロックから、とうめい\\n\\\nぼうしが　とびだします。\\n\\\nここまでをセーブする？\\n\\\n\\n\\\n　　　はい　　　いいえ\"))\n\nDEFINE_DIALOG(DIALOG_013, 1, 5, 30, 200, _(\"\\\n１００まいコインの\\n\\\nスターを　てにいれた！\\n\\\nおしろのパワーが\\n\\\nまたひとつマリオに\\n\\\n　　ちからを　あたえた。\\n\\\n\\n\\\nここまでセーブしますか？\\n\\\n\\n\\\n　　　はい　　　いいえ\"))\n\nDEFINE_DIALOG(DIALOG_014, 1, 5, 30, 200, _(\"\\\nおもわぬところで\\n\\\nスターをてにいれた。\\n\\\nそして　おしろのパワーが\\n\\\nまたひとつ　マリオに\\n\\\n　　ゆうきを　あたえた。\\n\\\n\\n\\\nここまでセーブしますか？\\n\\\n\\n\\\n　　　はい　　　いいえ\"))\n\nDEFINE_DIALOG(DIALOG_015, 1, 4, 30, 200, _(\"\\\nてきはパンチでたおせるよ。\\n\\\nＡボタンは『ジャンプ』\\n\\\nＢボタンは『パンチ』です。\\n\\\nＡとＢボタンで『キック』。\\n\\\n『ものをもつ』ときも\\n\\\n　　　　　　　Ｂボタン！\\n\\\n『なげる』は　もういちど\\n\\\nＢボタンをおしてください。\"))\n\nDEFINE_DIALOG(DIALOG_016, 1, 4, 30, 200, _(\"\\\nキラキラひかったコウラに\\n\\\nのると、どんなところも\\n\\\nスイスイすすめる！\\n\\\nてきをけちらし　すすめ！\"))\n\nDEFINE_DIALOG(DIALOG_017, 1, 4, 30, 200, _(\"\\\nワシがボムキング、つまり\\n\\\nばくだんの　おうさまだ。\\n\\\nよくここまできた。その\\n\\\nゆうきは　ほめてやろう。\\n\\\nとはいえ、おまえにタダで\\n\\\nだいじな　パワースターを\\n\\\nやるわけには　いかん。\\n\\\nそこで　チャンスをやろう。\\n\\\nパワースターがほしければ\\n\\\nワシを　なげとばしてみろ。\\n\\\nうしろから　かつげるか？\\n\\\nさあ、かかってこい！\"))\n\nDEFINE_DIALOG(DIALOG_018, 1, 4, 30, 200, _(\"\\\nねむいので、ねています。\\n\\\nおこすと　おこります。\\n\\\n\\n\\\nしずかに　あるきましょう。\"))\n\nDEFINE_DIALOG(DIALOG_019, 1, 2, 30, 200, _(\"\\\nろうかは　しずかに\\n\\\nあるきましょう。\"))\n\nDEFINE_DIALOG(DIALOG_020, 1, 5, 95, 150, _(\"\\\nおしろへ　あそびに\\n\\\nきてください。\\n\\\nケーキを　つくって\\n\\\nまってます。\\n\\\n　　　　　-ピーチより-\"))\n\nDEFINE_DIALOG(DIALOG_021, 1, 5, 95, 200, _(\"\\\nようこそいらっしゃいませ\\n\\\n・・だれも　いませんので\\n\\\nとっとと\\n\\\n　　おかえりください。\\n\\\nガハハハッ！\"))\n\nDEFINE_DIALOG(DIALOG_022, 1, 3, 95, 200, _(\"\\\nカギが　かかっている・・\"))\n\nDEFINE_DIALOG(DIALOG_023, 1, 3, 95, 200, _(\"\\\n・・・カギがあわない！\\n\\\nこのカギは『ちか』への\\n\\\nカギのようだ。\"))\n\nDEFINE_DIALOG(DIALOG_024, 1, 3, 95, 200, _(\"\\\nクッパがとじたこのドアを\\n\\\nひらくには、スターの\\n\\\nパワーが　ひつようです。\\n\\\nどこかのへやの『え』の\\n\\\nなかの　モンスターから\\n\\\nとりもどしてきてください\"))\n\nDEFINE_DIALOG(DIALOG_025, 1, 3, 95, 200, _(\"\\\nこのドアを　ひらくには\\n\\\nスター３まいの　パワーが\\n\\\nひつようです。\\n\\\nあと[%]まいの　スターが\\n\\\nひつようです。\"))\n\nDEFINE_DIALOG(DIALOG_026, 1, 3, 95, 200, _(\"\\\nこのドアを　ひらくには\\n\\\nスター８まいの　パワーが\\n\\\nひつようです。\\n\\\nあと[%]まいの　スターが\\n\\\nひつようです。\"))\n\nDEFINE_DIALOG(DIALOG_027, 1, 3, 95, 200, _(\"\\\nこのドアを　ひらくには\\n\\\nスター３０まいのパワーが\\n\\\nひつようです。\\n\\\nスターがあと\\n\\\n[%]まいひつようです。\"))\n\nDEFINE_DIALOG(DIALOG_028, 1, 3, 95, 200, _(\"\\\nこのドアを　ひらくには\\n\\\nスター５０まいのパワーが\\n\\\nひつようです。\\n\\\nあと[%]まいの　スターが\\n\\\nひつようです。\"))\n\nDEFINE_DIALOG(DIALOG_029, 1, 4, 95, 200, _(\"\\\nはてしない　かいだんの\\n\\\nドアを　ひらくには\\n\\\nスター７０まいのパワーが\\n\\\nひつようです・・・・・\\n\\\nあと[%]まいの　スターが\\n\\\nたりません・・・\\n\\\nガハハッ！\"))\n\nDEFINE_DIALOG(DIALOG_030, 1, 4, 30, 200, _(\"\\\nカメラマンのジュゲムです。\\n\\\nちょっと　アドバイス！\\n\\\nしずかにあるきたいときは\\n\\\nゆっくり　あるくことです。\\n\\\nまわりを　みたいときは\\n\\\nＣボタンのみぎとひだりで\\n\\\nカメラをすこしまわせます。\\n\\\nＣのしたで　とおくから。\\n\\\nできないところでは\\n\\\n『ブーッ！』といいます。\\n\\\nよろしく！！　\\n\\\n　　　　　　-ジュゲム\"))\n\nDEFINE_DIALOG(DIALOG_031, 1, 3, 30, 200, _(\"\\\nまたまた　まけちゃったよ。\\n\\\nこんどはスッゴい　じしん\\n\\\nあったんッスけどね・・・\\n\\\nほんと　すごいッスね！\\n\\\nこのスターも\\n\\\nあげちゃいます！\"))\n\nDEFINE_DIALOG(DIALOG_032, 1, 4, 30, 200, _(\"\\\nはねぼうしの　あるひとは\\n\\\n３かいれんぞくでジャンプ\\n\\\nしよう。　おおぞらたかく\\n\\\nとびあがれます。\\n\\\nたいほうでとぶと\\n\\\nさらに　たかくとべます。\\n\\\nまわりをみるのはＣボタン。\\n\\\nおりたいときはＺボタン。\"))\n\nDEFINE_DIALOG(DIALOG_033, 1, 4, 30, 200, _(\"\\\nワープどかんを\\n\\\nくぐりぬけ、\\n\\\nピーチの　おしろに\\n\\\nつきました。\\n\\\nそうさは　カンタン。\\n\\\nＡボタンが　ジャンプ！\\n\\\nＢボタンで　こうげき！\\n\\\nカンバンも　よめます。\\n\\\nマリオを　うごかすのは\\n\\\nまんなかに　ついてる\\n\\\n『３Ｄスティック』。\\n\\\nまずはおしろへ　すすめ！\"))\n\nDEFINE_DIALOG(DIALOG_034, 1, 5, 30, 200, _(\"\\\nこんにちは！　\\n\\\nぼくたちカメラマンの\\n\\\nジュゲムブラザーズです。\\n\\\nこれから、カメラをもって\\n\\\nあなたに　ついていきます。\\n\\\nカメラは　おすすめのいち\\n\\\nから　さつえいしてます。\\n\\\nむきをかえるのはＣボタン、\\n\\\nかえられない　ときは\\n\\\n『ブーッ！』といいます。\\n\\\nちょっと　たちどまったら\\n\\\nＣボタンのうえ！\\n\\\nまわりを　ながめられます。\\n\\\nゲームに　もどすときは\\n\\\n『Ａボタン』です。\\n\\\n『Ｒボタン』をつかうと\\n\\\nいろんなカメラモードに\\n\\\nきりかえられます。\\n\\\nまた、かんばんなどをみて\\n\\\nおぼえてください！\\n\\\nいじょう！！　カメラマン\\n\\\nジュゲムブラザーズからの\\n\\\nおしらせでした。\\n\\\nそれじゃ、きをつけて！\"))\n\nDEFINE_DIALOG(DIALOG_035, 1, 4, 30, 200, _(\"\\\nきいろい４つの　Ｃボタン。\\n\\\n『うえ』をおすと\\n\\\n３Ｄスティックで\\n\\\nまわりを　みわたせます。\\n\\\nふだんマリオをみてるのは\\n\\\nおすすめのジュゲムカメラ。\\n\\\nＣボタンで　すこし、\\n\\\nかくどが　かえられます。\\n\\\nＲボタンをおすと\\n\\\nマリオの　うしろからみる\\n\\\nマリオカメラに　なります。\\n\\\nもどすときはもういちどR。\\n\\\n『ジュゲムカメラ』と\\n\\\n『マリオカメラ』どちらも\\n\\\nＣボタンの　したをおすと、\\n\\\nとおくへ　はなれます。\\n\\\nいまつかっている\\n\\\nカメラを　しりたいときは、\\n\\\nがめん　みぎしたの\\n\\\nアイコンを　みてください。\"))\n\nDEFINE_DIALOG(DIALOG_036, 1, 5, 30, 200, _(\"\\\n　『てんぼうだい』\\n\\\nＣボタンの　うえをおすと、\\n\\\nまわりを　みわたせます。\\n\\\nみえないところは　よーく\\n\\\nたしかめてからすすめー！\\n\\\nＲボタンはマリオのカメラ。\\n\\\nいつも　マリオのうしろを\\n\\\nついていくぞ。ジュゲムに\\n\\\nもどすときは　もういちど\\n\\\nＲボタンをおすこと。\\n\\\nポーズがめんで　モードを\\n\\\nかえると、Ｒボタンを\\n\\\nおしてるあいだ　カメラを\\n\\\n『とめる』こともできる！\\n\\\nためしてみよう。\\n\\\nつかってるカメラモードは\\n\\\nみぎしたのアイコンで\\n\\\nたしかめよう。\\n\\\nマリオとの　きょりは\\n\\\nきいろやじるしを　みよう。\"))\n\nDEFINE_DIALOG(DIALOG_037, 1, 3, 30, 200, _(\"\\\nあたしの『かち』です。\\n\\\nあなたの『まけ』です。\\n\\\nははははは！！！\\n\\\nマリオさん、とーっても\\n\\\nおしかったですね。\\n\\\nまた　あそびましょう！\"))\n\nDEFINE_DIALOG(DIALOG_038, 1, 3, 95, 200, _(\"\\\nパワースターの　ちからで\\n\\\nつぎの　せかいへのドアは\\n\\\nしずかにひらいた。\"))\n\nDEFINE_DIALOG(DIALOG_039, 1, 5, 30, 200, _(\"\\\n-ボムとりで　いりぐち-\\n\\\n　　だれも　はいるな！\\n\\\n\\n\\\nワシのパワースターは\\n\\\nだれにも　わたさぬ。\\n\\\nクッパどのからいただいた\\n\\\nだいじな　だいじな\\n\\\nたからものだ。\\n\\\nなんまいか　かくしたが\\n\\\nばしょは　おしえぬ。\\n\\\nコースはじめの　スターの\\n\\\nなまえを、ヒントにする\\n\\\nぐらいなら　ゆるす。\\n\\\n\\n\\\nおやまのうえのボムキング\"))\n\nDEFINE_DIALOG(DIALOG_040, 1, 3, 30, 200, _(\"\\\nこのさき　キケン！\\n\\\nリフトのたにぞこ　です。\"))\n\nDEFINE_DIALOG(DIALOG_041, 1, 4, 30, 200, _(\"\\\nオイラがかっちゃいました。\\n\\\nハッハッハッ\\n\\\nたいしたことないッスね！\\n\\\nじゃ、またこんどね！\"))\n\nDEFINE_DIALOG(DIALOG_042, 1, 5, 30, 200, _(\"\\\nこの『はし』せまい。\\n\\\nゆっくりわたろう！\\n\\\nガケのカドにとびついたり\\n\\\nゆっくりと　おりると\\n\\\nぶらさがれます。\\n\\\n『て』を　はなすときは\\n\\\nＺボタンか　スティックを\\n\\\nマリオのうしろへ。\\n\\\nのぼるときには　まえへ\\n\\\nたおしてください。\\n\\\nぶらさがって　すぐに\\n\\\nＡボタンをおすと\\n\\\nすばやく　あがれます。\"))\n\nDEFINE_DIALOG(DIALOG_043, 1, 4, 30, 200, _(\"\\\nジャンプしてＡボタンを\\n\\\nおしっぱなしに　すると\\n\\\nぶらさがれる　ところが\\n\\\nあります。\\n\\\n『とり』につかまるとき\\n\\\nと　おなじです。\"))\n\nDEFINE_DIALOG(DIALOG_044, 1, 5, 95, 200, _(\"\\\nだれだい！　　せっかく\\n\\\nいいきもちで　ねてたのに。\\n\\\nあー　カラダがおもいなー\\n\\\nちょーどいいや！わたしと\\n\\\nひとーっとび　しません？\\n\\\nジャンプボタンを\\n\\\nおしているあいだ\\n\\\nぶらさがれますよー。\\n\\\nおりたいときに\\n\\\nはなせばいーです。\\n\\\nおーすきなところへ\\n\\\nおつれしまーす。\\n\\\nかげを　よーくみて\\n\\\nＡボタンで　つかまって\\n\\\nくださいねー！\"))\n\nDEFINE_DIALOG(DIALOG_045, 1, 5, 95, 200, _(\"\\\nあーあ、つかれたー・・\\n\\\nやーっぱり　おもいなー。\\n\\\nきょうは　このあたりで！\\n\\\n『もういちどＡボタンを\\n\\\nおしなおしてください。』\\n\\\nもうすこし　とんだら\\n\\\nほんとに　てをはなしてね\\n\\\n\\n\\\nじゃあ、さよならー！\"))\n\nDEFINE_DIALOG(DIALOG_046, 1, 5, 30, 200, _(\"\\\nジャンプのワザ　まとめて\\n\\\nせいりしておきます。\\n\\\nとてもだいじな３つのワザ。\\n\\\nおぼえて　つかって\\n\\\nみてください。\\n\\\nタイミングよく　つづけて\\n\\\nとぶと　たかくとべます。\\n\\\nはやく　はしっていると\\n\\\nさらに　たかくとべます。\\n\\\n『３だんとび』です。\\n\\\nはしりながら　Ｚボタンで\\n\\\nしゃがんでジャンプすると\\n\\\nとおくへ　とべます。\\n\\\n『はばとび』です。\\n\\\nとてもべんりです。\\n\\\nまっすぐたった　カベに\\n\\\nむかって　ジャンプして、\\n\\\nぶつかった　ところから\\n\\\nまた　ジャンプできます。\\n\\\n『カベキック』といいます。\\n\\\nだいじな　テクニック\\n\\\n『３だんとび』\\n\\\n『はばとび』\\n\\\n『カベキック』\\n\\\n　　　　　わかった？\"))\n\nDEFINE_DIALOG(DIALOG_047, 1, 3, 95, 200, _(\"\\\nこんにちは！\\n\\\nたいほうの　じゅんびに\\n\\\nかかります！・・・・・\"))\n\nDEFINE_DIALOG(DIALOG_048, 1, 4, 30, 200, _(\"\\\nここは　ツルツルすべる\\n\\\nゆきやまの　ちょうじょう。\\n\\\nまずはそこの\\n\\\nやまごやへ　どうぞ。\"))\n\nDEFINE_DIALOG(DIALOG_049, 1, 5, 30, 200, _(\"\\\nジャンプわざカベキックを\\n\\\nおぼえていますか？\\n\\\nたかいところへ　あがる\\n\\\nとてもだいじなテクニック。\\n\\\nカベからカベへジャンプ！\\n\\\nスティックをつかって\\n\\\nはねかえったほうに\\n\\\nかそくする。\\n\\\nよーく\\n\\\nれんしゅう　しておこう！\"))\n\nDEFINE_DIALOG(DIALOG_050, 1, 4, 30, 200, _(\"\\\nＺボタンで　しゃがめます。\\n\\\n『さか』では　すべれます。\\n\\\nジャンプの　とちゅうなら\\n\\\n『ヒップドロップ』！！\\n\\\nとまって　しゃがんでから\\n\\\nジャンプすると\\n\\\n『バックちゅう』できる！\\n\\\nわかった？　まだあります。\\n\\\nはしりながら　しゃがんで\\n\\\nジャンプで『はばとび』！\\n\\\nしゃがんでから　あるくと\\n\\\n・・・ひみつです。\"))\n\nDEFINE_DIALOG(DIALOG_051, 1, 5, 30, 200, _(\"\\\n『き』や『ぼう』には\\n\\\nジャンプで　つかまれます。\\n\\\n『のぼる』『おりる』は\\n\\\nスティックで、やめるのは\\n\\\nＺボタンで『て』をはなす。\\n\\\n『むきをかえる』ときは\\n\\\n　３Ｄスティックの\\n\\\n　　　みぎ　と　ひだり。\\n\\\nＡボタンで『せなか』の\\n\\\nほうこうにジャンプします。\\n\\\nテッペンで　もういちど\\n\\\nスティックを　うえにいれ、\\n\\\n『さかだち』ができる。\\n\\\nむきをきめて　せなかの\\n\\\nほうこうに　ジャンプだ！\"))\n\nDEFINE_DIALOG(DIALOG_052, 1, 4, 30, 200, _(\"\\\nＺボタンで　しゃがめます。\\n\\\nとまって　しゃがんでから\\n\\\nジャンプすると、\\n\\\n『バックちゅう』できる！\\n\\\nすばやくユーターンを\\n\\\nしながら、ジャンプすると\\n\\\n『ちゅうがえり』！\\n\\\nどちらも　たかくとべます。\"))\n\nDEFINE_DIALOG(DIALOG_053, 1, 6, 30, 200, _(\"\\\nコインリングや　かくれた\\n\\\nシークレットポイントを\\n\\\nとおると　あかいすうじが\\n\\\nでてきます。５こつづけて\\n\\\nとおると　ひみつのスター\\n\\\nが　あらわれます。\"))\n\nDEFINE_DIALOG(DIALOG_054, 1, 4, 30, 200, _(\"\\\nスライダーへようこそ！！\\n\\\nさかを　すべりはじめたら\\n\\\nスティックまえで　かそく、\\n\\\nうしろで　げんそくできる。\"))\n\nDEFINE_DIALOG(DIALOG_055, 1, 5, 30, 200, _(\"\\\nあたし、このスライダーの\\n\\\nせかいチャンピオン！！！\\n\\\nからだ、デカイけど\\n\\\nとっても　はやいよ！\\n\\\nあなたチャレンジします？\\n\\\nそれでは！\\n\\\n\\n\\\n　レディーーー・・・！\\n\\\n　　・・・　\\n\\\n　　　ゴー！！　やめとく\"))\n\nDEFINE_DIALOG(DIALOG_056, 1, 3, 30, 200, _(\"\\\nヒエーーーッ！！！\\n\\\nセカイきろくだよ！\\n\\\nスゴイよ！あなた！！\\n\\\nきんメダルの　かわりに\\n\\\nコレ　あげます！\\n\\\nいやーースゴイスゴイ！！\"))\n\nDEFINE_DIALOG(DIALOG_057, 1, 4, 30, 200, _(\"\\\nどこかで　うちのこどもを\\n\\\nみかけません　でしたか？\\n\\\n・・・わたしんち　こども\\n\\\nいっぱい　いましてね・・\\n\\\nなんびき　いたのかも\\n\\\nおぼえてなくて・・・・\\n\\\nほんとに・・\\n\\\nどこへ　いったんでしょう。\\n\\\nだいてやると\\n\\\nとても　いいこえで\\n\\\nなくんですけどね・・・\\n\\\nヤレヤレ・・・・・\"))\n\nDEFINE_DIALOG(DIALOG_058, 1, 5, 30, 200, _(\"\\\nああーーっ！！たしかに\\n\\\nうちの　こどもです・・・\\n\\\n『こらっ！　いつも\\n\\\nちかくで　あそびなさいと\\n\\\nいってるだろ！』\\n\\\nあなた　とっても\\n\\\nいいひとです。　おれいに\\n\\\nこれを　さしあげます。\\n\\\nあったかくって　とても\\n\\\nげんきに　なりますよ。\"))\n\nDEFINE_DIALOG(DIALOG_059, 1, 5, 30, 200, _(\"\\\nこのこは　うちのこじゃー\\n\\\nないようだなあ・・・\\n\\\nかわいそうに・・・\\n\\\nおやはいったい\\n\\\nなにをしてるんだろう・・\"))\n\nDEFINE_DIALOG(DIALOG_060, 1, 4, 30, 200, _(\"\\\n-みずにはいるちゅうい-\\n\\\n\\n\\\nもぐっていると　しぬほど\\n\\\nくるしくなってきます。\\n\\\nすいめんに　あがるか\\n\\\nアブクをみつけて\\n\\\nさわってください。\\n\\\nひといき　つけます。\\n\\\nおよぐときは　Ａボタン！\\n\\\nおしてるだけでも　すすみ\\n\\\nタイミングよく　おすと\\n\\\nスピードがでます。\\n\\\nもぐるときはスティックを\\n\\\nまえにたおして　Ａボタン。\\n\\\nうかぶときはスティックを\\n\\\nてまえにひいて　Ａボタン。\\n\\\nすいめんに　いるときは\\n\\\nジャンプします。\\n\\\n　『じゅんびたいそう\\n\\\n　　　　わすれずに！！』\"))\n\nDEFINE_DIALOG(DIALOG_061, 1, 6, 30, 200, _(\"\\\nつめたいみず　キケン！！\\n\\\nおよいでは　いけません！\\n\\\nこの　こおりのいけは\\n\\\nとびあがるぐらい\\n\\\nつめたいです！\\n\\\n　　　　　　　　ペンギン\"))\n\nDEFINE_DIALOG(DIALOG_062, 1, 5, 30, 200, _(\"\\\nみどりの　ブロックに\\n\\\nかくされている\\n\\\nふしぎな　ふしぎな\\n\\\n『メタルのぼうし』。\\n\\\n\\n\\\nひをつけたってもえないし\\n\\\nてきのたまも　はねかえす。\\n\\\nいきを　とめても\\n\\\nへいきです。\\n\\\nこまったことにおよげない。\"))\n\nDEFINE_DIALOG(DIALOG_063, 1, 4, 30, 200, _(\"\\\nあおいブロックには\\n\\\n『とうめいぼうし』。\\n\\\nメダマも　ビックリ\\n\\\nすがたをけせる。\\n\\\nテレサも　まっさお\\n\\\n『ひみつのカベ』を\\n\\\nとおりぬけるぞ。\"))\n\nDEFINE_DIALOG(DIALOG_064, 1, 4, 30, 200, _(\"\\\nあかいブロックのなかの\\n\\\nはねのぼうしを　かぶると、\\n\\\n３かいジャンプで\\n\\\nそらたかく　とびあがれる。\\n\\\nそうさはスティックで！\\n\\\nてまえにひくと　あがる。\\n\\\nまえにたおすと　さがる。\\n\\\nやめるときはＺボタンで！\"))\n\nDEFINE_DIALOG(DIALOG_065, 1, 5, 30, 200, _(\"\\\nおよぎかた　おしえます。\\n\\\n\\n\\\nみずにはいるとおよげます。\\n\\\nながいあいだ『もぐる』と\\n\\\nくるしくなります。\\n\\\nすすむためには　Ａボタン。\\n\\\nタイミングよく　おすと\\n\\\nスピードが　でます。\\n\\\n３Ｄスティックを　まえに\\n\\\nたおすと　もぐります。\\n\\\nすいめんに　もどったり、\\n\\\nみずから　あがるときは\\n\\\nてまえにひいて　Ａボタン。\\n\\\nすいめんでジャンプだ！\\n\\\n\\n\\\nＡボタン　おしっぱなしに\\n\\\nしていても、およげます。\\n\\\nらくちんです。\\n\\\nおよいでいるあいだは\\n\\\nドアを　あけられません。\"))\n\nDEFINE_DIALOG(DIALOG_066, 1, 5, 30, 200, _(\"\\\nマリオ！　　クッパのはく\\n\\\nほのおに　きをつけて！\\n\\\nクッパを　こらしめるには\\n\\\nうしろにまわりＢボタンで\\n\\\nシッポをつかむのよ！\\n\\\nなげとばす　まえには\\n\\\n３Ｄスティックで\\n\\\nグリグリふりまわすの。\\n\\\nはやく　まわすほど\\n\\\nとおくまで　とぶわ！\\n\\\nＣボタンで　まわりを\\n\\\nよーくみて！\\n\\\nなげとばした　クッパは\\n\\\n４すみの　バクダンに\\n\\\nぶつけてやるの！\\n\\\nねらいを\\n\\\nよーくさだめて・・・\\n\\\n\\n\\\nもういちどＢボタンよ！\"))\n\nDEFINE_DIALOG(DIALOG_067, 1, 4, 30, 200, _(\"\\\nざんねんだったなマリオ！\\n\\\nここには　ピーチちゃんは\\n\\\nいませんでした。\\n\\\n　　　　ガハハッ！！\\n\\\nわがはいの　うしろに\\n\\\nまわりこんで　シッポを\\n\\\nつかめるものなら\\n\\\nつかんでみるんだな。\\n\\\nスティックでグリグリ\\n\\\nまわして　なげるなど\\n\\\nできるわけが　ない！！\\n\\\n　　ガハハッ！！\"))\n\nDEFINE_DIALOG(DIALOG_068, 1, 5, 30, 200, _(\"\\\nここは　しゃくねつの\\n\\\nファイアバブル　ランド！\\n\\\nからだに　ひがついても\\n\\\nおちないように　あわてず\\n\\\nそうさしよう。\\n\\\nほのおのいけに　おちると\\n\\\nはねあがる！　　そうさは\\n\\\nできるので、おちついて。\\n\\\nあまりうごきまわらないで\\n\\\nガンバレ！\"))\n\nDEFINE_DIALOG(DIALOG_069, 1, 3, 30, 200, _(\"\\\n『え』のなかのカイブツの\\n\\\nせかいには、せかいの\\n\\\nはてがあります。\\n\\\nみえないカベにあたったら\\n\\\nきっと　そこが\\n\\\n『え』のせかいのはてです。\\n\\\nそらを　とんでいるときも\\n\\\nそこから　さきには\\n\\\nすすめません。\"))\n\nDEFINE_DIALOG(DIALOG_070, 1, 5, 30, 200, _(\"\\\nかいぶつたちの　すんでる\\n\\\n『え』のなかのせかいから、\\n\\\nおしろの　いりぐちの\\n\\\nメインホールに\\n\\\nいつでも　もどれます。\\n\\\nかならず　きちんと\\n\\\nたちどまってから！\\n\\\nスタートボタンでポーズし、\\n\\\n『コースからでる』を\\n\\\nえらんでください。\\n\\\nひとつのせかいのスターは\\n\\\nぜんぶ　とらなくても、\\n\\\nつぎのせかいにすすめます。\\n\\\nじょうずになったら、また\\n\\\nもどってきてください。\\n\\\nスターを１つ　とるごとに\\n\\\nつぎのスターのヒントが\\n\\\nスタートがめんに　でます。\\n\\\nえらんだヒントいがいの\\n\\\nスターをとってもＯＫです。\"))\n\nDEFINE_DIALOG(DIALOG_071, 1, 4, 30, 200, _(\"\\\n　-このさきキケン-\\n\\\n　　あやしいケムリに\\n\\\n　　ちゅうい！\\n\\\n　いきができません！\\n\\\nくるしくなったら\\n\\\nたかいところへ！\\n\\\nまる・・・・・ひなんじょ\\n\\\nやじるし・・・でいりぐち\"))\n\nDEFINE_DIALOG(DIALOG_072, 1, 5, 30, 200, _(\"\\\nカゼつよし！　　ぼうしは\\n\\\nしっかり　かぶりましょう。\\n\\\nもし　ぼうしをなくしても\\n\\\nここでなくした　ぼうしは\\n\\\nこのやまで　みつかります。\"))\n\nDEFINE_DIALOG(DIALOG_073, 1, 5, 95, 200, _(\"\\\nただしい　じゅんばんで\\n\\\nはこを　ひらくこと。\\n\\\nこたえは　だれにも\\n\\\nおしえてやらない。\\n\\\n　　　--せんちょう--\"))\n\nDEFINE_DIALOG(DIALOG_074, 1, 5, 30, 200, _(\"\\\nガケのカドに　とびつくと\\n\\\nぶらさがれます。\\n\\\nおりるときはスティックを\\n\\\nマリオのうしろへいれるか、\\n\\\nＺボタンをおしてください。\\n\\\nのぼるときはスティックを\\n\\\nまえに　たおしてください。\\n\\\nぶらさがって\\n\\\nすぐに　Ａボタンをおすと\\n\\\nすばやく　のぼれます！\"))\n\nDEFINE_DIALOG(DIALOG_075, 1, 5, 30, 200, _(\"\\\nマリオ！！たいへんです。\\n\\\nクッパがまた・・・・\\n\\\nおしろの　パワースターを\\n\\\nぬすんで　カベのなかへ！\\n\\\nわたしたちも・・・\\n\\\nみんなカベのなかへ・・・\\n\\\nすいこまれていくわ・・・\\n\\\n『カベ』や『え』のなか\\n\\\nから　パワースターを\\n\\\nとりもどして！\\n\\\nクッパの　ふさいだドアは\\n\\\nパワースターの　ちからで\\n\\\nひらくことが　できるわ！\\n\\\nこのへやには　ひみつの\\n\\\nつうろがあるの。\\n\\\nクッパにみつからなかった\\n\\\nかくしつうろの　ひとつよ。\\n\\\nそこには　おしろの\\n\\\nかくれスターが　あるわ！\\n\\\nきっと　やくにたつはずよ。\"))\n\nDEFINE_DIALOG(DIALOG_076, 1, 5, 30, 200, _(\"\\\nパワースターのおかげで\\n\\\nおしろに、げんきが\\n\\\nもどってきました。\\n\\\nクッパなんか\\n\\\nおいはらってください。\\n\\\nおやくに　たつなら\\n\\\nおしろの　はなしをします。\\n\\\n『カガミのへや』では\\n\\\nカガミにうつらないものを\\n\\\nよくみてください。\\n\\\nみずのまちへ　いくときは、\\n\\\n『え』にとびこむ　たかさ\\n\\\nによって、まちをすっかり\\n\\\nみずびたしに　できます。\\n\\\nアッ、これ　みつけました。\"))\n\nDEFINE_DIALOG(DIALOG_077, 1, 3, 150, 200, _(\"\\\nとびらを　ひらくまえに\\n\\\n２つの　はしらを\\n\\\nおしさげて　おくこと。\"))\n\nDEFINE_DIALOG(DIALOG_078, 1, 5, 30, 200, _(\"\\\nあおコインのブロックを\\n\\\nジャンプちゅうにＺボタン\\n\\\n『ヒップドロップ』で\\n\\\n　　　　　　ぶっつぶすと\\n\\\nあおコインがでてきます。\\n\\\nあおコイン１まいで\\n\\\nきいろコイン５まいぶん\\n\\\nとてもラッキー！\\n\\\nでも　じかんがたつと\\n\\\nきえてしまう・・ザンネン\"))\n\nDEFINE_DIALOG(DIALOG_079, 1, 5, 30, 200, _(\"\\\nいててて！\\n\\\nはなしてくれよ。\\n\\\nウッキッキー！\\n\\\nチョットからかった\\n\\\nだけなのに！\\n\\\nはなしてくれたら、\\n\\\nいいもの　あげるからさ。\\n\\\nネーネー　はなしてくれよ。\\n\\\n\\n\\\n　　　はなす　　いやだ\"))\n\nDEFINE_DIALOG(DIALOG_080, 1, 3, 30, 200, _(\"\\\nヘッヘッヘッ！\"))\n\nDEFINE_DIALOG(DIALOG_081, 1, 6, 30, 200, _(\"\\\nここは　みずにみちたまち。\\n\\\nこのまちは、あなたが\\n\\\nここを　おとずれるときの\\n\\\nたかさと、おなじだけの\\n\\\nみずをもって\\n\\\nあなたをむかえる。\"))\n\nDEFINE_DIALOG(DIALOG_082, 1, 5, 30, 200, _(\"\\\nぼうしを　なくすと\\n\\\nダメージがおおくなるので\\n\\\nだいじに　してください。\\n\\\nなくしたら、なくした\\n\\\nコースで　みつかります。\\n\\\nアアーどうしよう・・・\\n\\\nピーチひめは、カベに\\n\\\nひきこまれた　ままだし。\\n\\\nはやく　クッパを\\n\\\nやっつけてください。\\n\\\nえのほかにカベのなかにも\\n\\\nモンスターの　せかいが\\n\\\nあります。　　あっ！これ\\n\\\nもっていって　ください。\\n\\\nかくして　もってました。\"))\n\nDEFINE_DIALOG(DIALOG_083, 1, 4, 30, 200, _(\"\\\nとけいがとても　へんです。\\n\\\nとけいに　はいるとき、\\n\\\nながいはりの　ばしょに\\n\\\nちゅういしてください！\\n\\\nこれ、とりもどしました。\\n\\\nもっていって　ください。\\n\\\nかっこよく\\n\\\nうけとってくださいね！\"))\n\nDEFINE_DIALOG(DIALOG_084, 1, 5, 30, 200, _(\"\\\nイテテ　らんぼうなひとだ。\\n\\\nこのスターは　クッパって\\n\\\nヤツが　くれたんだよ。\\n\\\nあんたのものだ　なんて\\n\\\nしらなかったよ。\\n\\\nかえすって、かえすってば、\\n\\\nかえせば　いいんでしょ。\\n\\\nはなしてくれたら\\n\\\nスターぐらい　かえすから。\\n\\\nホイ！！\"))\n\nDEFINE_DIALOG(DIALOG_085, 1, 4, 30, 200, _(\"\\\nこの　やかたから\\n\\\n　　ぶじにでられたら\\n\\\n\\n\\\n・・・エライ。・・\"))\n\nDEFINE_DIALOG(DIALOG_086, 1, 3, 30, 200, _(\"\\\nまわりをクルクルまわると\\n\\\nめをまわす　ヤツがいます。\"))\n\nDEFINE_DIALOG(DIALOG_087, 1, 5, 30, 200, _(\"\\\nえんとつから　はいるのは\\n\\\nサンタだけではありません。\\n\\\n　　ごえんりょなく\\n\\\n　　おはいりください。\\n\\\nスノーマンハウスおーなー\"))\n\nDEFINE_DIALOG(DIALOG_088, 1, 5, 30, 200, _(\"\\\n-さぎょうリフトじょう-\\n\\\n\\n\\\nここから　おりるひとは\\n\\\nひだりのぼうにつかまって、\\n\\\nきをつけて　おりること。\"))\n\nDEFINE_DIALOG(DIALOG_089, 1, 4, 95, 200, _(\"\\\nどちらのみちも　キケン！\\n\\\nくらいあしもとにチュウイ。\\n\\\nはばとび　できないひとは\\n\\\nみぎのみちを　すすめ。\\n\\\nみぎ・・さぎょうリフト\\n\\\n　　　　ケムリめいろ\\n\\\nひだり・・やみのおおあな\\n\\\n　　　　　ちていこ　ヘ\\n\\\nあかまる\\n\\\n　・・２ごうエレベーター\\n\\\n　　　　　　ちていこ　へ\\n\\\nやじるし・・げんざいち\"))\n\nDEFINE_DIALOG(DIALOG_090, 1, 6, 30, 200, _(\"\\\nガハハッ！\\n\\\nワナにはまったなマリオ！\\n\\\nまた　ジャマをしにきた\\n\\\nようだが、ともだちからの\\n\\\nちゅうこくだ。\\n\\\nあしもとには　きをつけな。\"))\n\nDEFINE_DIALOG(DIALOG_091, 1, 3, 30, 200, _(\"\\\nつよいカゼに　チュウイ！\\n\\\nでも、カゼにのると\\n\\\nフワフワきもちいいです。\"))\n\nDEFINE_DIALOG(DIALOG_092, 1, 3, 30, 200, _(\"\\\nいいかげんにしろマリオ！\\n\\\nいつもいつも、わがはいの\\n\\\nジャマをしおって！\\n\\\nせっかく　かいぶつたちと\\n\\\nたのしくやっているのに。\\n\\\nスターをかえすんだ！\\n\\\nカベのなかのヤツらには、\\n\\\nそいつが　いるんだよ！！\\n\\\nガハハッ！！\"))\n\nDEFINE_DIALOG(DIALOG_093, 1, 4, 30, 200, _(\"\\\nアララ！いつのまにきた？\\n\\\n・・・・・・ムム\\n\\\nどちらにしろ　わがはいの\\n\\\nほのおの　えじきだっ！\\n\\\nどれだけスターのちからを\\n\\\nかりても、わがはいには\\n\\\nかなうわけがないわ！\\n\\\nガハハッ！！　マリオ！\\n\\\nキサマの　おともだちも\\n\\\nみーんな　カベのなかさ。\\n\\\nピーチちゃんも　わたさん\\n\\\nもんね！　　いくぞ！！\"))\n\nDEFINE_DIALOG(DIALOG_094, 1, 3, 30, 200, _(\"\\\nのぼりにくい　さかみちは\\n\\\nじょそうをつけて\\n\\\nげんきよく　のぼる！\\n\\\nはばとび　おぼえてるか？\\n\\\nはしりながら　Ｚボタンで\\n\\\nしゃがんで　ジャンプだ！\"))\n\n#ifdef VERSION_JP\n#define HOW_TO_READ_SIGNS_2 \"　Ｂボタンをおすと\"\n#else\n#define HOW_TO_READ_SIGNS_2 \"ＡかＢボタンをおし\"\n#endif\n\nDEFINE_DIALOG(DIALOG_095, 1, 3, 30, 200, _(\"\\\nこのように　カンバンの\\n\\\nまえで\" HOW_TO_READ_SIGNS_2 \"\\n\\\nよむことができます。\\n\\\nノコノコや　どうぶつたち\\n\\\nと　はなすときは、まえに\\n\\\nたちどまってください。\\n\\\nこのコースにあるクッパに\\n\\\nぬすまれたパワースターを\\n\\\nとりかえしてください。\"))\n\nDEFINE_DIALOG(DIALOG_096, 1, 5, 30, 200, _(\"\\\nこのあたり　みちせまし。\\n\\\nゆっくり　あるこう！\\n\\\nだれも　ちょうじょうまで\\n\\\nたどりつかせない。\\n\\\nフフフ。\\n\\\nきもちよくねているひとを\\n\\\nおこすと、とっても\\n\\\nふきげんに　なります。\\n\\\nゆっくりと　しずかに\\n\\\nあるきましょう。フフフ。\"))\n\nDEFINE_DIALOG(DIALOG_097, 1, 4, 30, 200, _(\"\\\nたいあたり　されたら\\n\\\nたいあたりで　かえせ！\\n\\\nほのおのうみにつきおとす\\n\\\n１たい１のデスマッチだ！\"))\n\nDEFINE_DIALOG(DIALOG_098, 1, 3, 95, 200, _(\"\\\nここまでおいで・・・・\\n\\\nケッケッケ・・\"))\n\nDEFINE_DIALOG(DIALOG_099, 1, 3, 95, 200, _(\"\\\nクックック・・\\n\\\n　とりついてやる。\\n\\\n　　　　ヒッヒッヒ！\\n\\\nカベも　とおりぬけてやる。\\n\\\nこんなこと　できるか？\\n\\\n　　　　　ケッケッケ！\"))\n\nDEFINE_DIALOG(DIALOG_100, 1, 4, 95, 200, _(\"\\\nウッキッキー\\n\\\n　ワッキッキー！\\n\\\n　　　ホヨホヨ。\\n\\\nいっただきー。\"))\n\nDEFINE_DIALOG(DIALOG_101, 1, 5, 95, 200, _(\"\\\nヘッヘッヘッ！\\n\\\nつかまっちゃいました。\\n\\\nきにいってたのになあ・・\\n\\\nかえしますよ。\\n\\\n　ウッキッキー！！\"))\n\nDEFINE_DIALOG(DIALOG_102, 1, 4, 30, 200, _(\"\\\nテレサの　たおしかた\\n\\\nおしえます。\\n\\\nはずかしがりやの\\n\\\nテレサです。\\n\\\n『めとめがあう』と\\n\\\nすがたをけします。\\n\\\n『とうめいのとき』は\\n\\\nあたりません。\\n\\\n『せなかをむける』と\\n\\\nあらわれます。\\n\\\nうしろにまわって\\n\\\nなぐると　よわい。\"))\n\nDEFINE_DIALOG(DIALOG_103, 1, 4, 95, 200, _(\"\\\n４ほんの　はしらのうえに\\n\\\nたつものに、わたしは、\\n\\\nこのやかたを　おとずれる\\n\\\nしかくを　あたえよう。\"))\n\nDEFINE_DIALOG(DIALOG_104, 1, 6, 30, 200, _(\"\\\nめのまえのブルーグレーの\\n\\\nはんとうめいの　ほしは\\n\\\n『パワースターのだい』だ。\\n\\\nあかコインを　みつけて\\n\\\n８まいぜんぶ　あつめると、\\n\\\nスターが　あらわれる。\"))\n\nDEFINE_DIALOG(DIALOG_105, 1, 3, 95, 200, _(\"\\\nじゅんび　かんりょう！\\n\\\nそこの　あなに\\n\\\nはいってみてください。\\n\\\n４つのたいほうをつかって\\n\\\nそらのしまにあるスターを\\n\\\nとれるはずです。\\n\\\nスティックでねらいをつけ、\\n\\\nＡではっしゃ！とびながら\\n\\\n『き』にも　つかまれます。\"))\n\nDEFINE_DIALOG(DIALOG_106, 1, 3, 95, 200, _(\"\\\nじゅんびが\\n\\\nかんりょう　しました！\\n\\\nそれでは、おきをつけて！\"))\n\nDEFINE_DIALOG(DIALOG_107, 1, 3, 95, 200, _(\"\\\nおばけは　し　な　な　い\\n\\\nケッケッケ・・\\n\\\nぶじに　でられるかな？\"))\n\nDEFINE_DIALOG(DIALOG_108, 1, 3, 95, 200, _(\"\\\nぼよよーん\\n\\\nおやかたの　おでましだ。\\n\\\nカッカッカ・・\"))\n\nDEFINE_DIALOG(DIALOG_109, 1, 4, 95, 200, _(\"\\\nカラダが　とけちゃったヨ。\\n\\\nいいカラダ　いないかなー\\n\\\nなにか　おちつかなくてネ。\\n\\\nアー　かおがつめたいなー\"))\n\nDEFINE_DIALOG(DIALOG_110, 1, 3, 95, 200, _(\"\\\nしょうらい　きっと\\n\\\nりっぱなカラダになろうと\\n\\\nおもってまーす！\\n\\\nいいアタマ　いないかなー\\n\\\nもししっていたら　そこへ\\n\\\nつれてってくれませんか？\\n\\\nまえを　すべってくれれば\\n\\\nうしろをついていきまーす。\\n\\\n　ヨロシクー！\"))\n\nDEFINE_DIALOG(DIALOG_111, 1, 3, 95, 200, _(\"\\\nヤッリー！\\n\\\nきぶんスッキリ！りっぱな\\n\\\nカラダが　みつかった！\\n\\\nおれいに　これあげます！\\n\\\nもっていって　ください。\\n\\\nとってもアッタカイですよ。\"))\n\nDEFINE_DIALOG(DIALOG_112, 1, 4, 30, 200, _(\"\\\nコインいっぱいあつめよう。\\n\\\nちからが　かいふくする。\\n\\\nえのなかの１５コースでは\\n\\\nきろくにも　のこるよ。\\n\\\nあかいハートにさわっても\\n\\\nちからが　かいふくする。\\n\\\nはやく　かけぬけるほど\\n\\\nたくさん　かいふくする！\"))\n\nDEFINE_DIALOG(DIALOG_113, 1, 6, 30, 200, _(\"\\\nあか・あお・みどりの\\n\\\nブロックには　アイテムの\\n\\\n『ぼうし』が　はいってる。\\n\\\nおしろの　どこかにある\\n\\\nスイッチを　ふんでくると\\n\\\nつかえるように　なります。\"))\n\nDEFINE_DIALOG(DIALOG_114, 1, 4, 95, 200, _(\"\\\nああ～　きにいらねえ！\\n\\\nおれたち、いしのおかげで\\n\\\n『いえ』も『しろ』も\\n\\\nできてるってーのに。\\n\\\nいつも　ふみつけるばっか\\n\\\nりで、　ちったーありがた\\n\\\nがったら　どうなんでぃ！\\n\\\nおうおうっ！\\n\\\nおい！　そこのニイサン！\\n\\\nふらふらしてんじゃねーや。\\n\\\nきげんが　わるいんでぃ！\\n\\\nおしつぶしちまうぞぉ！！\\n\\\nもんくが　あんなら\\n\\\nヒップドロップで　この\\n\\\nバッタンキングさまを\\n\\\nふみつけて　みやがれっ！\"))\n\nDEFINE_DIALOG(DIALOG_115, 1, 5, 95, 200, _(\"\\\nああ　くやしいぞ！\\n\\\nまたまた\\n\\\nふみつけられちまった！\\n\\\nしょせん　いしは\\n\\\n　　　　いしなのか・・・\\n\\\nおめぇの　かちでぇ！\\n\\\nこれ　もっていきやがれ！\\n\\\nガクッ！\"))\n\nDEFINE_DIALOG(DIALOG_116, 1, 5, 95, 200, _(\"\\\nおおっ！いてて！　まわり\\n\\\nこみのはやさは　まだまだ\\n\\\nだが、なかなか　つよいな。\\n\\\nおまえのような　けらいが\\n\\\nほしかったぞ・・\\n\\\nはじめの　やくそくどおり\\n\\\nパワースターをやろう。\\n\\\nまた　ワシにあいたいとき\\n\\\nこのスターをメニューから\\n\\\nえらぶがよい。さらばじゃ\"))\n\nDEFINE_DIALOG(DIALOG_117, 1, 3, 95, 200, _(\"\\\nジャジャジャーン！\\n\\\nどうだ！\\n\\\nおどろいたか？？・・・\\n\\\nムム・・・・　ならば\\n\\\nもっとオドロカセテやる！\\n\\\nイクゾ！　カカッテコイ！\"))\n\nDEFINE_DIALOG(DIALOG_118, 1, 5, 95, 200, _(\"\\\nオオオッ・・・\\n\\\nオマエ、いがいとツヨイ！\\n\\\nこのヤカタは、きょうから\\n\\\nオマエのものダッ・・\\n\\\nジユウニつかエ。ガクッ！\"))\n\nDEFINE_DIALOG(DIALOG_119, 1, 4, 30, 200, _(\"\\\nグウウッ！　　ちょっと\\n\\\nゆだん　しておったわ！\\n\\\nせっかくのケイカクが\\n\\\nぶちこわしだ・・・しかし\\n\\\nパワースターもピーチも\\n\\\nわがはいの　てのなかに\\n\\\nあるのだ。ガハハハ！\\n\\\nまだまだ　まけてはおらん。\\n\\\nこれいじょうスターは\\n\\\nわたさんぞ。きょうはここ\\n\\\nらで　かんべんしてやる！\\n\\\nおおぉ、おぼえてろよ！！\"))\n\nDEFINE_DIALOG(DIALOG_120, 1, 4, 30, 200, _(\"\\\nグググッワッ！\\n\\\nこうも　かんたんに\\n\\\nやられるとは、スターの\\n\\\nちからが　たりんのかな？\\n\\\nわがはいがゼッコーチョー\\n\\\nのときなら、キサマなんか\\n\\\nてきではない。\\n\\\nこんかいは　ひきわけだっ\\n\\\nピーチに　あいたければ、\\n\\\nとうのてっぺんまで\\n\\\nのぼってきてみろ。\\n\\\nまってるぞ！ガハハッ！！\"))\n\nDEFINE_DIALOG(DIALOG_121, 1, 5, 30, 200, _(\"\\\nあああっ・・またこんども\\n\\\nキサマのかちか　マリオ！\\n\\\nキサマはな、わがはいが\\n\\\nせかいで　いーちばん\\n\\\nまけたくないヤツなのに！\\n\\\nせっかく　なかまにした\\n\\\nモンスターたちのちからも\\n\\\nなくなり　このままでは\\n\\\nまたまた、わがはいの\\n\\\nだーいきらいな\\n\\\nへいわが　もどってしまう\\n\\\nではないか！　\\n\\\nムムムッ・・・・\\n\\\nしかし、このゲームは\\n\\\nまだまだ　おわらんぞ。\\n\\\nみんなで　あつまって、\\n\\\nなかよくエンディングでも\\n\\\nみるんだな！\\n\\\n\\n\\\nガハハハッ！\"))\n\nDEFINE_DIALOG(DIALOG_122, 1, 6, 30, 200, _(\"\\\n-やみにとけるおおあな-\\n\\\n\\n\\\nみぎ・・・さぎょうリフト\\n\\\n　　　　　ケムリめいろ\\n\\\nひだり・・ちていこ\"))\n\nDEFINE_DIALOG(DIALOG_123, 1, 5, 30, 200, _(\"\\\n　-メタルのどうくつ-\\n\\\n\\n\\\nみぎ・・・ちじょうへ\\n\\\nひだり・・メタルスイッチ\"))\n\nDEFINE_DIALOG(DIALOG_124, 1, 5, 30, 200, _(\"\\\n-さぎょうようリフト-\\n\\\n\\n\\\n　　　キケン！！\\n\\\n　そうさほうほうを\\n\\\n　よく　よむこと。\\n\\\nふんだ、やじるしのほうに\\n\\\nすすみつづけます。\\n\\\n\\n\\\nおりると　もとのばしょに\\n\\\nもどります。\"))\n\nDEFINE_DIALOG(DIALOG_125, 1, 5, 30, 200, _(\"\\\n-ケムリめいろ・でぐち-\\n\\\n\\n\\\nキケン！　ヘイサちゅう。\\n\\\nここからは　はいれません。\"))\n\nDEFINE_DIALOG(DIALOG_126, 1, 6, 30, 200, _(\"\\\n・１ごうエレベーター・\\n\\\n\\n\\\nうえ・・やみのおおあな\\n\\\nみぎ・・さぎょうリフト\\n\\\n　　　　ケムリめいろ\"))\n\nDEFINE_DIALOG(DIALOG_127, 1, 5, 30, 200, _(\"\\\n　　-ちていこ-\\n\\\n\\n\\\nみぎ・・メタルのどうくつ\\n\\\nひだり・・はいこう\\n\\\n　　　　　へいさちゅう\\n\\\nおとなしい　かいりゅう\\n\\\nドッシーが　すんでます\\n\\\nせなかでヒップドロップを\\n\\\nすると、あたまをさげます。\\n\\\nエサにならないでください。\"))\n\nDEFINE_DIALOG(DIALOG_128, 1, 4, 95, 200, _(\"\\\nおっとっと！じょうがいに\\n\\\nなげるのは　はんそくだ！\\n\\\nリングのうえでフェアーに\\n\\\nたたかおうでは　ないか！\"))\n\nDEFINE_DIALOG(DIALOG_129, 1, 5, 30, 200, _(\"\\\nとうめいスイッチの\\n\\\n　　コースへ　ようこそ！\\n\\\nあおいスイッチを　ふむと\\n\\\nすべての　あおブロックが\\n\\\n『じったい』になる。\\n\\\nとうめいぼうしで\\n\\\nとうめいに　なると\\n\\\nいろんな　ものを\\n\\\nとおりぬけられます。\\n\\\nまずは　おためしください。\"))\n\nDEFINE_DIALOG(DIALOG_130, 1, 5, 30, 200, _(\"\\\nメタルのスイッチの\\n\\\n　　コースヘ　ようこそ！\\n\\\nみどりのスイッチを\\n\\\nふめば　みどりブロックが\\n\\\n『じったい』になる。\\n\\\nメタルのぼうしで\\n\\\nメタルになれば、\\n\\\nみずのなかでも\\n\\\nあるけてしまう。\\n\\\nまずは　おためしください。\"))\n\nDEFINE_DIALOG(DIALOG_131, 1, 5, 30, 200, _(\"\\\nはねのスイッチの\\n\\\n　　コースヘ　ようこそ！\\n\\\nにじのリングのまんなかの\\n\\\nとうの　うえにある\\n\\\nあかいスイッチを　ふもう。\\n\\\nこのせかいの　すべての\\n\\\nあかいブロックが\\n\\\n『じったい』になる。\\n\\\n３だんとびで　そらへとび、\\n\\\nＺボタンで　ランディング。\\n\\\nそうさは　ひこうきの\\n\\\nそうじゅうかん　のように\\n\\\nまえにたおすと『さがる』\\n\\\nてまえにひくと『あがる』\\n\\\nまずは　おためしを！\"))\n\nDEFINE_DIALOG(DIALOG_132, 1, 5, 30, 200, _(\"\\\nダメダメ！\\n\\\nそれは　きていいはんです。\\n\\\n『しっかーく！』\\n\\\nこんどはフェアーに\\n\\\nいきましょう。\"))\n\nDEFINE_DIALOG(DIALOG_133, 1, 5, 30, 200, _(\"\\\nああよかった。\\n\\\nきてくれたんですね！\\n\\\nピーチひめも　ぼくたちも\\n\\\nみんな『カベ』のなかに\\n\\\nとじこめられちゃいました。\\n\\\nクッパは　パワースターを\\n\\\nつかって『カベ』や『え』\\n\\\nのなかにカイブツのくにを\\n\\\nつくろうと　しています。\\n\\\nスターをとりかえして！\\n\\\n『スター』をいくつか\\n\\\nとりかえしたら、クッパの\\n\\\nとじたドアが　ひらきます。\\n\\\n１かいの　４つのへやを\\n\\\nさがし、すすんでください。\\n\\\nまずは、ヒダリがわの\\n\\\nボムへいの『え』の\\n\\\nへやに　はいれます。\\n\\\nこのへやだけは　クッパの\\n\\\nふういんを　のがれました。\\n\\\n８まい　たまったら\\n\\\nおおきな　ほしのドアを\\n\\\nひらくことが　できます。\\n\\\nきっと　ピーチひめは\\n\\\nそのなかです！\"))\n\nDEFINE_DIALOG(DIALOG_134, 1, 4, 30, 200, _(\"\\\nコースのはじめにえらべる\\n\\\nスターのなまえは、\\n\\\nつぎに　みつけられそうな\\n\\\nスターのヒントです。\\n\\\nヒントにでてくる\\n\\\nじゅんばんと、ちがう\\n\\\nスターを　とりもどしても\\n\\\nかまわないですよ。\\n\\\n『スター』や『てき』や\\n\\\n『アイテム』のなかには\\n\\\nそのスターをえらばないと\\n\\\nでないものも　あります。\\n\\\nいくつか　とりかえしたら\\n\\\nつぎのコースのドアへと\\n\\\nすすんでください。みんな\\n\\\nたすけを　まっています！\"))\n\nDEFINE_DIALOG(DIALOG_135, 1, 5, 30, 200, _(\"\\\nクッパがスターをもって\\n\\\nいっちゃいました。\\n\\\nここにかくれてみてました。\\n\\\nスターはひとつのコースに\\n\\\n６こあるはずです。\\n\\\nでも　アイテムスイッチを\\n\\\nぜんぶおしてからでないと\\n\\\nとれないスターもあります。\\n\\\nどんどん　さきのコースへ\\n\\\nすすんでください。\\n\\\nスタートがめんでスターの\\n\\\nなまえが　みられます。\\n\\\nむかしのてきに　あいたい\\n\\\nとき、そのほしをえらぶと\\n\\\nまたあえる　てきもいます。\"))\n\nDEFINE_DIALOG(DIALOG_136, 1, 4, 30, 200, _(\"\\\nワァすごい！もうそんなに\\n\\\nスターをもってるんですね。\\n\\\nもうすぐ　ぼくらのことも\\n\\\nたすけだしてくれますね！\\n\\\nクッパたちは　ひっしです。\\n\\\nきをつけてください。\\n\\\nコインをとると　ちからが\\n\\\nかいふくします。\\n\\\nあかコインは２まいぶん。\\n\\\nあおコインは５まいぶん。\\n\\\nあおコインのブロックを\\n\\\nこわすと　でてきます。\\n\\\nたかいところからおちても\\n\\\nちじょうの　ちかくで\\n\\\n『ヒップドロップ』すると\\n\\\nダメージを　ふせげます。\"))\n\nDEFINE_DIALOG(DIALOG_137, 1, 5, 30, 200, _(\"\\\nパワースターが　もどって、\\n\\\nおしろのちからが\\n\\\nかいふく　してきました！\\n\\\nありがとう。　クッパは\\n\\\nこのさきに　にげました。\\n\\\nそうだ！コインをあつめて\\n\\\nますか？１５のコースでは\\n\\\nコイン１００まい　とると\\n\\\nスペシャルスターが\\n\\\nあらわれます。\"))\n\nDEFINE_DIALOG(DIALOG_138, 1, 5, 30, 200, _(\"\\\n・２ごうエレベーター・\\n\\\nした・・ちていこ\\n\\\nひだり・・やみのおおあな\\n\\\nみぎ・・・ケムリめいろ\\n\\\n　　　　　へいさちゅう！\"))\n\nDEFINE_DIALOG(DIALOG_139, 1, 6, 30, 200, _(\"\\\nこのうえ・・じどうリフト\\n\\\nじどうリフトは　のると\\n\\\nじどうてきに　うごきだし、\\n\\\nコースにそってすすみます。\\n\\\nおりて　ほうっておくと\\n\\\nきえてしまいます。\"))\n\nDEFINE_DIALOG(DIALOG_140, 1, 6, 30, 200, _(\"\\\n-そうさリフトじょう-\\n\\\nみぎ・・・ケムリめいろ\\n\\\n　　　　　いりぐち\\n\\\nひだり・・やみのおおあな\\n\\\n　　１ごうエレベーターへ\\n\\\nやじるし・・げんざいち\"))\n\nDEFINE_DIALOG(DIALOG_141, 1, 5, 150, 200, _(\"\\\nぬすまれたパワースターを\\n\\\nとりかえした！\\n\\\nクッパが　とじてしまった\\n\\\nドアを　あけられるように\\n\\\nなったぞ！\\n\\\n２かいの　ピーチのへや、\\n\\\n１かいの　とりでのへや、\\n\\\n２つのへやのドアがひらく。\\n\\\nつぎのスターをとりかえし\\n\\\nおしろのみんなをすくえ！\\n\\\nモンスターたちはどんどん\\n\\\nちからを　つけてきている。\\n\\\nいそげ　マリオ！！\\n\\\nおしろの　いちだいじだ！\"))\n\nDEFINE_DIALOG(DIALOG_142, 1, 5, 150, 200, _(\"\\\n３このスターを\\n\\\nとりもどしたぞ！　\\n\\\nそして　スターに『３』の\\n\\\nすうじが　ついたドアを\\n\\\nひらけるように　なった！\\n\\\n４つのへやの　せかいを\\n\\\nじゆうに　いききできる。\\n\\\nあたらしいカイブツたちは\\n\\\nもっと　てごわいぞ。\\n\\\nきをつけて　すすめ！\"))\n\nDEFINE_DIALOG(DIALOG_143, 1, 6, 150, 200, _(\"\\\n８このパワースターを\\n\\\nぶじ　とりもどし、\\n\\\nおおきな　ほしのドアが\\n\\\nひらくようになった。\\n\\\nクッパは　すぐそこだ！\\n\\\nピーチのこえがきこえる。\"))\n\nDEFINE_DIALOG(DIALOG_144, 1, 5, 150, 200, _(\"\\\n３０この　パワースターを\\n\\\nとりもどし、\\n\\\nおおきなスターのドアが\\n\\\nひらくようになった！\\n\\\nここですこし　てんけんだ。\\n\\\n２ほんのはしらを　ヒップ\\n\\\nドロップしてみたか？\\n\\\nぼうしはなくしてないか？\\n\\\nさばくで　なくしたなら\\n\\\nハゲたかジャンゴをさがせ。\\n\\\nクッパは　うみから\\n\\\nこのちかにせんにゅう\\n\\\nしたらしい。\\n\\\nとうとうやつを\\n\\\nおいつめたぞ！\"))\n\nDEFINE_DIALOG(DIALOG_145, 1, 4, 150, 200, _(\"\\\n５０このパワースターを\\n\\\nとりもどした！\\n\\\n３かいへの　ほしのドアが\\n\\\nひらくぞ！\\n\\\nクッパはすぐそこだ！\\n\\\nアイテムスイッチは\\n\\\nぜんぶおしてきたか？\\n\\\nかくにん　しておこう。\\n\\\nあか・あお・みどりの\\n\\\n３つのアイテムブロックは\\n\\\nとてもだいじな　みかただ。\\n\\\nさあ『３かい』へすすめ！\"))\n\nDEFINE_DIALOG(DIALOG_146, 1, 6, 150, 200, _(\"\\\n７０このパワースターを\\n\\\nとりもどした！\\n\\\nはてしない　かいだんの\\n\\\nナゾがとかれた。\\n\\\nクッパはかなりあせってる。\\n\\\nさあ！さいごのたたかいだ。\"))\n\nDEFINE_DIALOG(DIALOG_147, 1, 5, 30, 200, _(\"\\\nあか・あお・みどりの\\n\\\n『アイテムブロック』を\\n\\\nつかっていますか？\\n\\\nスターをとりもどすと\\n\\\nいりぐちがみつかる、\\n\\\nおしろのかくしコースで、\\n\\\n３つのスイッチを　おすと\\n\\\nそのいろのブロックが\\n\\\n『じったい』となり、\\n\\\nつかえるようになります。\\n\\\nあかは　はねのぼうし\\n\\\nみどりは　メタルのぼうし\\n\\\nあおは　とうめいのぼうし\\n\\\n\\n\\\nとてもつよい　みかたです。\"))\n\nDEFINE_DIALOG(DIALOG_148, 1, 5, 30, 200, _(\"\\\nこのさきスノーマンのやま\\n\\\nだれも　はいるな！\\n\\\nアイスブロックシューター\\n\\\nを　３だんとびなどして\\n\\\nとびこえては　イケマセン。\\n\\\nつめたい　いけでは\\n\\\nはやく　たいりょくが\\n\\\nへります！\\n\\\nかいふくも　しません。\\n\\\n　　　　　　スノーマン\"))\n\nDEFINE_DIALOG(DIALOG_149, 1, 5, 30, 200, _(\"\\\nピーチのかくれスライダー\\n\\\nへ　ようこそ！\\n\\\nここには　クッパにみつけ\\n\\\nられなかった　おしろの\\n\\\nかくれスターがのこってる。\\n\\\nさかを　すべりはじめたら\\n\\\nスティックまえで　かそく、\\n\\\nうしろで　げんそくできる。\\n\\\nはやくすべれば　スターが\\n\\\nみつかるはずだ！\"))\n\nDEFINE_DIALOG(DIALOG_150, 1, 5, 30, 200, _(\"\\\nあーーん、だれだい？\\n\\\nとつぜん　ビショぬれに\\n\\\nなっちゃいました！\\n\\\nキチンと　てんじょう\\n\\\nなおしてもらうです。\"))\n\nDEFINE_DIALOG(DIALOG_151, 1, 4, 30, 200, _(\"\\\nみずをかけられた　つぎは\\n\\\nふんづけられました。\\n\\\nもう　ほんとーに\\n\\\nおこったです！\"))\n\nDEFINE_DIALOG(DIALOG_152, 1, 5, 30, 200, _(\"\\\nいててて！！！\\n\\\nらんぼうなひとだなあ。\\n\\\nなぜかイライラしてたけど、\\n\\\nまあ、そらがみえるのも\\n\\\nわるくはないです。\\n\\\nよるには　いっぱいほしが\\n\\\nみえるしね！\\n\\\nこのほしは　かえします。\\n\\\nあー、なんだか　きもちが\\n\\\nおちついてきたです。\"))\n\nDEFINE_DIALOG(DIALOG_153, 1, 4, 30, 200, _(\"\\\nわしの　カラダに\\n\\\nのぼっては　いかーん！\\n\\\nそういうヤツは　みんな\\n\\\nふきっとばしちまうぞー！\"))\n\nDEFINE_DIALOG(DIALOG_154, 1, 5, 30, 200, _(\"\\\nぼうしを　なくすと\\n\\\nダメージがおおくなるので\\n\\\nだいじに　してください。\\n\\\nなくしたら、なくした\\n\\\nコースで　みつかります。\\n\\\nアアーどうしよう・・・\\n\\\nピーチひめは、カベに\\n\\\nひきこまれたままだし。\\n\\\nはやく　クッパを\\n\\\nやっつけてください。\\n\\\nああ、そうだ！\\n\\\nえのほかにカベのなかにも\\n\\\nモンスターの　せかいが\\n\\\nあります。\\n\\\nよーく、しらべてください。\"))\n\nDEFINE_DIALOG(DIALOG_155, 1, 5, 30, 200, _(\"\\\nパワースターのおかげで\\n\\\nおしろに、げんきが\\n\\\nもどってきました。\\n\\\nクッパなんか\\n\\\nおいはらってください。\\n\\\nおやくに　たつなら\\n\\\nおしろの　はなしをします。\\n\\\n『カガミのへや』では\\n\\\nカガミにうつらないものを\\n\\\nよくみてください。\\n\\\nみずのまちへ　いくときは、\\n\\\n『え』にとびこむ　たかさ\\n\\\nによって、まちをすっかり\\n\\\nみずびたしに　できます。\"))\n\nDEFINE_DIALOG(DIALOG_156, 1, 4, 30, 200, _(\"\\\nとけいがとても　へんです。\\n\\\nとけいに　はいるとき、\\n\\\nながいはりの　ばしょに\\n\\\nちゅういしてください！\"))\n\nDEFINE_DIALOG(DIALOG_157, 1, 5, 30, 200, _(\"\\\nながれる『すな』に\\n\\\nながされないように\\n\\\nきをつけて！\\n\\\nからだが　しずんで\\n\\\nジャンプできません。\\n\\\nあたままでしずむと\\n\\\nいきが　できません。\\n\\\nくらいいろの　ところは\\n\\\nとくに　キケン！！\\n\\\nそこなしの　じごくです！\"))\n\nDEFINE_DIALOG(DIALOG_158, 1, 5, 30, 200, _(\"\\\nジャンプのテクニック\\n\\\nその１\\n\\\nタイミングよく、\\n\\\nれんぞくでジャンプすると\\n\\\nだんだん　たかくとべる。\\n\\\nスピードがはやいほど\\n\\\nたかく　とびあがれる。\\n\\\nれんぞく３かいめに\\n\\\nたかくとべるわざを\\n\\\n『３だんとび』といいます。\\n\\\nその２　　カベにむかって\\n\\\nジャンプして、そこから\\n\\\nもういちどジャンプできる。\\n\\\n『カベキック』といって、\\n\\\nたかいところにのぼれます。\"))\n\nDEFINE_DIALOG(DIALOG_159, 1, 5, 30, 200, _(\"\\\nジャンプのテクニック\\n\\\nその３　　Ｚボタンわざ\\n\\\nたちどまって　しゃがんで\\n\\\nから　ジャンプすると、\\n\\\n『バックちゅう』できます。\\n\\\nはやくはしりながら\\n\\\nしゃがんでジャンプすると\\n\\\nとおくまで　とべる。\\n\\\n『はばとび』です。\"))\n\nDEFINE_DIALOG(DIALOG_160, 1, 4, 30, 200, _(\"\\\nはやく　はしりながら\\n\\\nＢボタンをおすと\\n\\\n『ボディアタック』が\\n\\\nできます。\\n\\\nおなかで\\n\\\nすべっているあいだは、\\n\\\nＡ・Ｂどちらのボタンでも\\n\\\nおきあがることができます。\"))\n\nDEFINE_DIALOG(DIALOG_161, 1, 5, 30, 200, _(\"\\\nいやー　すごいです！！\\n\\\nここにいれば　あえると\\n\\\nきいてたけど、ほんとに\\n\\\nあえてしまいました！！\\n\\\nでんごんが　あります。\\n\\\n『これで、おしまいですが\\n\\\nもっとあそんでほしいので\\n\\\nつまらないものですが\\n\\\nうけとって　ください。』\\n\\\n-マリオ・スタッフより-\"))\n\nDEFINE_DIALOG(DIALOG_162, 1, 5, 30, 200, _(\"\\\nイテテ　あいかわらず\\n\\\nらんぼうなひとだな。\\n\\\nこのスターは　べつに\\n\\\nかくしてたわけじゃ\\n\\\nないんだってば！\\n\\\nかえせば　いいんでしょ。\\n\\\nはなしてくれたら\\n\\\nスターぐらい　かえすから。\\n\\\nこれで　ほんとに\\n\\\nさいごだよ！　　ホイ！\"))\n\nDEFINE_DIALOG(DIALOG_163, 1, 5, 30, 200, _(\"\\\nあああっ・・またこんども\\n\\\nキサマのかちか　マリオ！\\n\\\nキサマはな、わがはいが\\n\\\nせかいで　いーちばん\\n\\\nまけたくないヤツなのに！\\n\\\nほんとうに　やくにたたぬ\\n\\\nカイブツどもだ！\\n\\\nキサマごときに\\n\\\nパワースターをぜーんぶ\\n\\\nとりもどされるとは・・・\\n\\\nぜんぶで『１２０こ』も\\n\\\nあったのか！？\\n\\\n『しろ』に　わがはいも\\n\\\nきづかなかったスターが\\n\\\nのこって　おったとは・・\\n\\\nまたまた　わがはいの\\n\\\nだーいきらいな　へいわが、\\n\\\nもどってしまうではないか。\\n\\\nわがはいは　くやしーぞ！\\n\\\nきょうは　ひきあげてやる。\\n\\\nだが、こんどあうときは\\n\\\nぜーったい　まけないぞ！\\n\\\n３Ｄスティックをみがいて\\n\\\nまってろよ！\\n\\\n　ガハハッ！\"))\n\nDEFINE_DIALOG(DIALOG_164, 1, 4, 30, 200, _(\"\\\nしばらく　やすんでたので\\n\\\nこんなにみごとに、\\n\\\nふとっちゃいました。\\n\\\nひさしぶりに　やります？\\n\\\nでは！　いつものように、\\n\\\nレディー！\\n\\\n\\n\\\n　　　ゴー！！　やめとく\"))\n\nDEFINE_DIALOG(DIALOG_165, 1, 4, 30, 200, _(\"\\\nこのクイの　まわりを\\n\\\nクルクルまわって\\n\\\nめをまわしても\\n\\\nしりません。\"))\n\nDEFINE_DIALOG(DIALOG_166, 1, 6, 30, 200, _(\"\\\nきょうは　トレーニングで\\n\\\nるすに　してるッス！\\n\\\nオイラに　ちょーせん\\n\\\nしたいひとは、またこんど\\n\\\nくるといいッス！\\n\\\n　　　　　　　ノコノコ\"))\n\n#ifdef VERSION_JP\n#define A_BUTTON_ACT \"\\\nＡボタン『ジャンプ』\\n\"\n#define B_BUTTON_ACT \"\\\nＢボタン『カンバンよむ』\\n\\\n　　　　『パンチ』\\n\\\n　　　　『ものをもつ』\\n\\\nもういちどおす『なげる』\"\n#else\n#define A_BUTTON_ACT \"\\\nＡボタン『ジャンプ』\\n\\\n　　　　『カンバンよむ』\\n\"\n#define B_BUTTON_ACT \"\\\nＢボタン『パンチ』\\n\\\n　　　　『カンバンよむ』\\n\\\n　　　　『ものをもつ』\\n\\\n　もういちどおすと\\n\\\n　　　　『なげる』\"\n#endif\n\nDEFINE_DIALOG(DIALOG_167, 1, 4, 30, 200, _(\"\\\n『ピーチの　おしろ』\\n\\\n　　　　　すぐそこ\\n\"\\\nA_BUTTON_ACT \\\n\"Ｚボタン『しゃがむ』\\n\"\\\nB_BUTTON_ACT))\n\nDEFINE_DIALOG(DIALOG_168, 1, 4, 30, 200, _(\"\\\nアーン、またまた　\\n\\\nふんづけられちゃいました。\\n\\\nハナチャン　かんぜんに\\n\\\nおこったです！\"))\n\nDEFINE_DIALOG(DIALOG_169, 1, 5, 30, 200, _(\"\\\nかってに　はいるな！\\n\\\nこの『どうくつ』に\\n\\\nむだんで　はいるものには、\\n\\\nわざわいが　おとずれる！\\n\\\n　　--せんちょうより\"))\n"
  },
  {
    "path": "text/us/courses.h",
    "content": "COURSE_ACTS(COURSE_BOB, _(\" 1 BOB-OMB BATTLEFIELD\"),\n       _(\"BIG BOB-OMB ON THE SUMMIT\")     , _(\"FOOTRACE WITH KOOPA THE QUICK\") , _(\"SHOOT TO THE ISLAND IN THE SKY\"),\n       _(\"FIND THE 8 RED COINS\")          , _(\"MARIO WINGS TO THE SKY\")        , _(\"BEHIND CHAIN CHOMP'S GATE\"))\n\nCOURSE_ACTS(COURSE_WF, _(\" 2 WHOMP'S FORTRESS\"),\n       _(\"CHIP OFF WHOMP'S BLOCK\")        , _(\"TO THE TOP OF THE FORTRESS\")    , _(\"SHOOT INTO THE WILD BLUE\"),\n       _(\"RED COINS ON THE FLOATING ISLE\"), _(\"FALL ONTO THE CAGED ISLAND\")    , _(\"BLAST AWAY THE WALL\"))\n\nCOURSE_ACTS(COURSE_JRB, _(\" 3 JOLLY ROGER BAY\"),\n       _(\"PLUNDER IN THE SUNKEN SHIP\")    , _(\"CAN THE EEL COME OUT TO PLAY?\") , _(\"TREASURE OF THE OCEAN CAVE\"),\n       _(\"RED COINS ON THE SHIP AFLOAT\")  , _(\"BLAST TO THE STONE PILLAR\")     , _(\"THROUGH THE JET STREAM\"))\n\nCOURSE_ACTS(COURSE_CCM, _(\" 4 COOL, COOL MOUNTAIN\"),\n       _(\"SLIP SLIDIN' AWAY\")             , _(\"LI'L PENGUIN LOST\")             , _(\"BIG PENGUIN RACE\"),\n       _(\"FROSTY SLIDE FOR 8 RED COINS\")  , _(\"SNOWMAN'S LOST HIS HEAD\")       , _(\"WALL KICKS WILL WORK\"))\n\nCOURSE_ACTS(COURSE_BBH, _(\" 5 BIG BOO'S HAUNT\"),\n       _(\"GO ON A GHOST HUNT\")            , _(\"RIDE BIG BOO'S MERRY-GO-ROUND\") , _(\"SECRET OF THE HAUNTED BOOKS\"),\n       _(\"SEEK THE 8 RED COINS\")          , _(\"BIG BOO'S BALCONY\")             , _(\"EYE TO EYE IN THE SECRET ROOM\"))\n\nCOURSE_ACTS(COURSE_HMC, _(\" 6 HAZY MAZE CAVE\"),\n       _(\"SWIMMING BEAST IN THE CAVERN\")  , _(\"ELEVATE FOR 8 RED COINS\")       , _(\"METAL-HEAD MARIO CAN MOVE!\"),\n       _(\"NAVIGATING THE TOXIC MAZE\")     , _(\"A-MAZE-ING EMERGENCY EXIT\")     , _(\"WATCH FOR ROLLING ROCKS\"))\n\nCOURSE_ACTS(COURSE_LLL, _(\" 7 LETHAL LAVA LAND\"),\n       _(\"BOIL THE BIG BULLY\")            , _(\"BULLY THE BULLIES\")             , _(\"8-COIN PUZZLE WITH 15 PIECES\"),\n       _(\"RED-HOT LOG ROLLING\")           , _(\"HOT-FOOT-IT INTO THE VOLCANO\")  , _(\"ELEVATOR TOUR IN THE VOLCANO\"))\n\nCOURSE_ACTS(COURSE_SSL, _(\" 8 SHIFTING SAND LAND\"),\n       _(\"IN THE TALONS OF THE BIG BIRD\") , _(\"SHINING ATOP THE PYRAMID\")      , _(\"INSIDE THE ANCIENT PYRAMID\"),\n       _(\"STAND TALL ON THE FOUR PILLARS\"), _(\"FREE FLYING FOR 8 RED COINS\")   , _(\"PYRAMID PUZZLE\"))\n\nCOURSE_ACTS(COURSE_DDD, _(\" 9 DIRE, DIRE DOCKS\"),\n       _(\"BOARD BOWSER'S SUB\")            , _(\"CHESTS IN THE CURRENT\")         , _(\"POLE-JUMPING FOR RED COINS\"),\n       _(\"THROUGH THE JET STREAM\")        , _(\"THE MANTA RAY'S REWARD\")        , _(\"COLLECT THE CAPS...\"))\n\nCOURSE_ACTS(COURSE_SL, _(\"10 SNOWMAN'S LAND\"),\n       _(\"SNOWMAN'S BIG HEAD\")            , _(\"CHILL WITH THE BULLY\")          , _(\"IN THE DEEP FREEZE\"),\n       _(\"WHIRL FROM THE FREEZING POND\")  , _(\"SHELL SHREDDIN' FOR RED COINS\") , _(\"INTO THE IGLOO\"))\n\nCOURSE_ACTS(COURSE_WDW, _(\"11 WET-DRY WORLD\"),\n       _(\"SHOCKING ARROW LIFTS!\")         , _(\"TOP O' THE TOWN\")               , _(\"SECRETS IN THE SHALLOWS & SKY\"),\n       _(\"EXPRESS ELEVATOR--HURRY UP!\")   , _(\"GO TO TOWN FOR RED COINS\")      , _(\"QUICK RACE THROUGH DOWNTOWN!\"))\n\nCOURSE_ACTS(COURSE_TTM, _(\"12 TALL, TALL MOUNTAIN\"),\n       _(\"SCALE THE MOUNTAIN\")            , _(\"MYSTERY OF THE MONKEY CAGE\")    , _(\"SCARY 'SHROOMS, RED COINS\"),\n       _(\"MYSTERIOUS MOUNTAINSIDE\")       , _(\"BREATHTAKING VIEW FROM BRIDGE\") , _(\"BLAST TO THE LONELY MUSHROOM\"))\n\nCOURSE_ACTS(COURSE_THI, _(\"13 TINY-HUGE ISLAND\"),\n       _(\"PLUCK THE PIRANHA FLOWER\")      , _(\"THE TIP TOP OF THE HUGE ISLAND\"), _(\"REMATCH WITH KOOPA THE QUICK\"),\n       _(\"FIVE ITTY BITTY SECRETS\")       , _(\"WIGGLER'S RED COINS\")           , _(\"MAKE WIGGLER SQUIRM\"))\n\nCOURSE_ACTS(COURSE_TTC, _(\"14 TICK TOCK CLOCK\"),\n       _(\"ROLL INTO THE CAGE\")            , _(\"THE PIT AND THE PENDULUMS\")     , _(\"GET A HAND\"),\n       _(\"STOMP ON THE THWOMP\")           , _(\"TIMED JUMPS ON MOVING BARS\")    , _(\"STOP TIME FOR RED COINS\"))\n\nCOURSE_ACTS(COURSE_RR, _(\"15 RAINBOW RIDE\"),\n       _(\"CRUISER CROSSING THE RAINBOW\")  , _(\"THE BIG HOUSE IN THE SKY\")      , _(\"COINS AMASSED IN A MAZE\"),\n       _(\"SWINGIN' IN THE BREEZE\")        , _(\"TRICKY TRIANGLES!\")             , _(\"SOMEWHERE OVER THE RAINBOW\"))\n\nSECRET_STAR(COURSE_BITDW, _(\"   BOWSER IN THE DARK WORLD\"))\nSECRET_STAR(COURSE_BITFS, _(\"   BOWSER IN THE FIRE SEA\"))\nSECRET_STAR(COURSE_BITS, _(\"   BOWSER IN THE SKY\"))\nSECRET_STAR(COURSE_PSS, _(\"   THE PRINCESS'S SECRET SLIDE\"))\nSECRET_STAR(COURSE_COTMC, _(\"   CAVERN OF THE METAL CAP\"))\nSECRET_STAR(COURSE_TOTWC, _(\"   TOWER OF THE WING CAP\"))\nSECRET_STAR(COURSE_VCUTM, _(\"   VANISH CAP UNDER THE MOAT\"))\nSECRET_STAR(COURSE_WMOTR, _(\"   WING MARIO OVER THE RAINBOW\"))\nSECRET_STAR(COURSE_SA, _(\"   THE SECRET AQUARIUM\"))\nSECRET_STAR(COURSE_CAKE_END, _(\"\"))\n\nCASTLE_SECRET_STARS(_(\"   CASTLE SECRET STARS\"))\n\nEXTRA_TEXT(0, _(\"ONE OF THE CASTLE'S SECRET STARS!\"))\nEXTRA_TEXT(1, _(\"\"))\nEXTRA_TEXT(2, _(\"\"))\nEXTRA_TEXT(3, _(\"\"))\nEXTRA_TEXT(4, _(\"\"))\nEXTRA_TEXT(5, _(\"\"))\nEXTRA_TEXT(6, _(\"\"))\n"
  },
  {
    "path": "text/us/dialogs.h",
    "content": "// Parameters: dialog enum ID, (unused), lines per box, left offset, width\n\n#ifdef VERSION_EU\n#define COMRADES \"friends\"\n#define PLASTERED \"splattered\"\n#define SCAM_ME \"cheat!\\n\"\n#define SCRAM \"get lost\"\n#define YOU_CANT_SWIM_IN_IT \"Its too heavy to swim\\nwith.\"\n#define GIVE_UP \"give up\"\n#else\n#define COMRADES \"comrades\"\n#define PLASTERED \"plastered\"\n#define SCAM_ME \"scam\\nME. \"\n#define SCRAM \"scram--\"\n#define YOU_CANT_SWIM_IN_IT \"You can't swim in it.\"\n#define GIVE_UP \"give\"\n#endif\n\nDEFINE_DIALOG(DIALOG_000, 1, 6, 30, 200, _(\"\\\nWow! You're smack in the\\n\\\nmiddle of the battlefield.\\n\\\nYou'll find the Power\\n\\\nStars that Bowser stole\\n\\\ninside the painting\\n\\\nworlds.\\n\\\nFirst, talk to the\\n\\\nBob-omb Buddy. (Press [B]\\n\\\nto talk.) He'll certainly\\n\\\nhelp you out, and so will\\n\\\nhis \" COMRADES \" in other\\n\\\nareas.\\n\\\nTo read signs, stop, face\\n\\\nthem and press [B]. Press [A]\\n\\\nor [B] to scroll ahead. You\\n\\\ncan talk to some other\\n\\\ncharacters by facing them\\n\\\nand pressing [B].\"))\n\nDEFINE_DIALOG(DIALOG_001, 1, 4, 95, 200, _(\"\\\nWatch out! If you wander\\n\\\naround here, you're liable\\n\\\nto be \" PLASTERED \" by a\\n\\\nwater bomb!\\n\\\nThose enemy Bob-ombs love\\n\\\nto fight, and they're\\n\\\nalways finding ways to\\n\\\nattack.\\n\\\nThis meadow has become\\n\\\na battlefield ever since\\n\\\nthe Big Bob-omb got his\\n\\\npaws on the Power Star.\\n\\\nCan you recover the Star\\n\\\nfor us? Cross the bridge\\n\\\nand go left up the path\\n\\\nto find the Big Bob-omb.\\n\\\nPlease come back to see\\n\\\nme after you've retrieved\\n\\\nthe Power Star!\"))\n\nDEFINE_DIALOG(DIALOG_002, 1, 4, 95, 200, _(\"\\\nHey, you! It's dangerous\\n\\\nahead, so listen up! Take\\n\\\nmy advice.\\n\\\n\\n\\\nCross the two\\n\\\nbridges ahead, then\\n\\\nwatch for falling\\n\\\nwater bombs.\\n\\\nThe Big Bob-omb at the\\n\\\ntop of the mountain is\\n\\\nvery powerful--don't let\\n\\\nhim grab you!\\n\\\nWe're Bob-omb Buddies,\\n\\\nand we're on your side.\\n\\\nYou can talk to us\\n\\\nwhenever you'd like to!\"))\n\nDEFINE_DIALOG(DIALOG_003, 1, 5, 95, 200, _(\"\\\nThank you, Mario! The Big\\n\\\nBob-omb is nothing but a\\n\\\nbig dud now! But the\\n\\\nbattle for the castle has\\n\\\njust begun.\\n\\\nOther enemies are holding\\n\\\nthe other Power Stars. If\\n\\\nyou recover more Stars,\\n\\\nyou can open new doors\\n\\\nthat lead to new worlds!\\n\\\nMy Bob-omb Buddies are\\n\\\nwaiting for you. Be sure\\n\\\nto talk to them--they'll\\n\\\nset up cannons for you.\"))\n\nDEFINE_DIALOG(DIALOG_004, 1, 3, 95, 200, _(\"\\\nWe're peace-loving\\n\\\nBob-ombs, so we don't use\\n\\\ncannons.\\n\\\nBut if you'd like\\n\\\nto blast off, we don't\\n\\\nmind. Help yourself.\\n\\\nWe'll prepare all of the\\n\\\ncannons in this course for\\n\\\nyou to use. Bon Voyage!\"))\n\nDEFINE_DIALOG(DIALOG_005, 1, 3, 30, 200, _(\"\\\nHey, Mario! Is it true\\n\\\nthat you beat the Big\\n\\\nBob-omb? Cool!\\n\\\nYou must be strong. And\\n\\\npretty fast. So, how fast\\n\\\nare you, anyway?\\n\\\nFast enough to beat me...\\n\\\nKoopa the Quick? I don't\\n\\\nthink so. Just try me.\\n\\\nHow about a race to the\\n\\\nmountaintop, where the\\n\\\nBig Bob-omb was?\\n\\\nWhaddya say? When I say\\n\\\n『Go,』 let the race begin!\\n\\\n\\n\\\nReady....\\n\\\n\\n\\\n//Go!////Don't Go\"))\n\nDEFINE_DIALOG(DIALOG_006, 1, 3, 30, 200, _(\"\\\nHey!!! Don't try to \" SCAM_ME\n\"You've gotta run\\n\\\nthe whole course.\\n\\\nLater. Look me up when\\n\\\nyou want to race for\\n\\\nreal.\"))\n\nDEFINE_DIALOG(DIALOG_007, 1, 5, 30, 200, _(\"\\\nHufff...fff...pufff...\\n\\\nWhoa! You...really...are...\\n\\\nfast! A human blur!\\n\\\nHere you go--you've won\\n\\\nit, fair and square!\"))\n\nDEFINE_DIALOG(DIALOG_008, 1, 4, 30, 200, _(\"\\\nBEWARE OF CHAIN CHOMP\\n\\\nExtreme Danger!\\n\\\nGet close and press [C]▲\\n\\\nfor a better look.\\n\\\nScary, huh?\\n\\\nSee the Red Coin on top\\n\\\nof the stake?\\n\\\n\\n\\\nWhen you collect eight of\\n\\\nthem, a Power Star will\\n\\\nappear in the meadow\\n\\\nacross the bridge.\"))\n\nDEFINE_DIALOG(DIALOG_009, 1, 5, 30, 200, _(\"\\\nLong time, no see! Wow,\\n\\\nhave you gotten fast!\\n\\\nHave you been training\\n\\\non the sly, or is it the\\n\\\npower of the Stars?\\n\\\nI've been feeling down\\n\\\nabout losing the last\\n\\\nrace. This is my home\\n\\\ncourse--how about a\\n\\\nrematch?\\n\\\nThe goal is in\\n\\\nWindswept Valley.\\n\\\nReady?\\n\\\n\\n\\\n//Go//// Don't Go\"))\n\nDEFINE_DIALOG(DIALOG_010, 1, 4, 30, 200, _(\"\\\nYou've stepped on the\\n\\\nWing Cap Switch. Wearing\\n\\\nthe Wing Cap, you can\\n\\\nsoar through the sky.\\n\\\nNow Wing Caps will pop\\n\\\nout of all the red blocks\\n\\\nyou find.\\n\\\n\\n\\\nWould you like to Save?\\n\\\n\\n\\\n//Yes////No\"))\n\nDEFINE_DIALOG(DIALOG_011, 1, 4, 30, 200, _(\"\\\nYou've just stepped on\\n\\\nthe Metal Cap Switch!\\n\\\nThe Metal Cap makes\\n\\\nMario invincible.\\n\\\nNow Metal Caps will\\n\\\npop out of all of the\\n\\\ngreen blocks you find.\\n\\\n\\n\\\nWould you like to Save?\\n\\\n\\n\\\n//Yes////No\"))\n\nDEFINE_DIALOG(DIALOG_012, 1, 4, 30, 200, _(\"\\\nYou've just stepped on\\n\\\nthe Vanish Cap Switch.\\n\\\nThe Vanish Cap makes\\n\\\nMario disappear.\\n\\\nNow Vanish Caps will pop\\n\\\nfrom all of the blue\\n\\\nblocks you find.\\n\\\n\\n\\\nWould you like to Save?\\n\\\n\\n\\\n//Yes////No\"))\n\nDEFINE_DIALOG(DIALOG_013, 1, 5, 30, 200, _(\"\\\nYou've collected 100\\n\\\ncoins! Mario gains more\\n\\\npower from the castle.\\n\\\nDo you want to Save?\\n\\\n//Yes////No\"))\n\nDEFINE_DIALOG(DIALOG_014, 1, 4, 30, 200, _(\"\\\nWow! Another Power Star!\\n\\\nMario gains more courage\\n\\\nfrom the power of the\\n\\\ncastle.\\n\\\nDo you want to Save?\\n\\\n\\n\\\n//You Bet//Not Now\"))\n\nDEFINE_DIALOG(DIALOG_015, 1, 4, 30, 200, _(\"\\\nYou can punch enemies to\\n\\\nknock them down. Press [A]\\n\\\nto jump, [B] to punch.\\n\\\nPress [A] then [B] to Kick.\\n\\\nTo pick something up,\\n\\\npress [B], too. To throw\\n\\\nsomething you're holding,\\n\\\npress [B] again.\"))\n\nDEFINE_DIALOG(DIALOG_016, 1, 3, 30, 200, _(\"\\\nHop on the shiny shell and\\n\\\nride wherever you want to\\n\\\ngo! Shred those enemies!\"))\n\nDEFINE_DIALOG(DIALOG_017, 1, 4, 30, 200, _(\"\\\nI'm the Big Bob-omb, lord\\n\\\nof all blasting matter,\\n\\\nking of ka-booms the\\n\\\nworld over!\\n\\\nHow dare you scale my\\n\\\nmountain? By what right\\n\\\ndo you set foot on my\\n\\\nimperial mountaintop?\\n\\\nYou may have eluded my\\n\\\nguards, but you'll never\\n\\\nescape my grasp...\\n\\\n\\n\\\n...and you'll never take\\n\\\naway my Power Star. I\\n\\\nhereby challenge you,\\n\\\nMario!\\n\\\nIf you want the Star I\\n\\\nhold, you must prove\\n\\\nyourself in battle.\\n\\\n\\n\\\nCan you pick me up from\\n\\\nthe back and hurl me to\\n\\\nthis royal turf? I think\\n\\\nthat you cannot!\"))\n\nDEFINE_DIALOG(DIALOG_018, 1, 4, 30, 200, _(\"\\\nI'm sleeping because...\\n\\\n...I'm sleepy. I don't\\n\\\nlike being disturbed.\\n\\\nPlease walk quietly.\"))\n\nDEFINE_DIALOG(DIALOG_019, 1, 2, 30, 200, _(\"\\\nShhh! Please walk\\n\\\nquietly in the hallway!\"))\n\nDEFINE_DIALOG(DIALOG_020, 1, 6, 95, 150, _(\"\\\nDear Mario:\\n\\\nPlease come to the\\n\\\ncastle. I've baked\\n\\\na cake for you.\\n\\\nYours truly--\\n\\\nPrincess Toadstool\"))\n\nDEFINE_DIALOG(DIALOG_021, 1, 5, 95, 200, _(\"\\\nWelcome.\\n\\\nNo one's home!\\n\\\nNow \" SCRAM \"\\n\\\nand don't come back!\\n\\\nGwa ha ha!\"))\n\nDEFINE_DIALOG(DIALOG_022, 1, 2, 95, 200, _(\"\\\nYou need a key to open\\n\\\nthis door.\"))\n\nDEFINE_DIALOG(DIALOG_023, 1, 3, 95, 200, _(\"\\\nThis key doesn't fit!\\n\\\nMaybe it's for the\\n\\\nbasement...\"))\n\nDEFINE_DIALOG(DIALOG_024, 1, 5, 95, 200, _(\"\\\nYou need Star power to\\n\\\nopen this door. Recover a\\n\\\nPower Star from an enemy\\n\\\ninside one of the castle's\\n\\\npaintings.\"))\n\nDEFINE_DIALOG(DIALOG_025, 1, 4, 95, 200, _(\"\\\nIt takes the power of\\n\\\n3 Stars to open this\\n\\\ndoor. You need [%] more\\n\\\nStars.\"))\n\nDEFINE_DIALOG(DIALOG_026, 1, 4, 95, 200, _(\"\\\nIt takes the power of\\n\\\n8 Stars to open this\\n\\\ndoor. You need [%] more\\n\\\nStars.\"))\n\nDEFINE_DIALOG(DIALOG_027, 1, 4, 95, 200, _(\"\\\nIt takes the power of\\n\\\n30 Stars to open this\\n\\\ndoor. You need [%] more\\n\\\nStars.\"))\n\nDEFINE_DIALOG(DIALOG_028, 1, 4, 95, 200, _(\"\\\nIt takes the power of\\n\\\n50 Stars to open this\\n\\\ndoor. You need [%] more\\n\\\nStars.\"))\n\nDEFINE_DIALOG(DIALOG_029, 1, 5, 95, 200, _(\"\\\nTo open the door that\\n\\\nleads to the 『endless』\\n\\\nstairs, you need 70\\n\\\nStars.\\n\\\nBwa ha ha!\"))\n\nDEFINE_DIALOG(DIALOG_030, 1, 6, 30, 200, _(\"\\\nHello! The Lakitu Bros.,\\n\\\ncutting in with a live\\n\\\nupdate on Mario's\\n\\\nprogress. He's about to\\n\\\nlearn a technique for\\n\\\nsneaking up on enemies.\\n\\\nThe trick is this: He has\\n\\\nto walk very slowly in\\n\\\norder to walk quietly.\\n\\\n\\n\\\n\\n\\\n\\n\\\nAnd wrapping up filming\\n\\\ntechniques reported on\\n\\\nearlier, you can take a\\n\\\nlook around using [C]▶ and\\n\\\n[C]◀. Press [C]▼ to view the\\n\\\naction from a distance.\\n\\\nWhen you can't move the\\n\\\ncamera any farther, the\\n\\\nbuzzer will sound. This is\\n\\\nthe Lakitu Bros.,\\n\\\nsigning off.\"))\n\nDEFINE_DIALOG(DIALOG_031, 1, 5, 30, 200, _(\"\\\nNo way! You beat me...\\n\\\nagain!! And I just spent\\n\\\nmy entire savings on\\n\\\nthese new Koopa\\n\\\nMach 1 Sprint shoes!\\n\\\nHere, I guess I have to\\n\\\nhand over this Star to\\n\\\nthe winner of the race.\\n\\\nCongrats, Mario!\"))\n\nDEFINE_DIALOG(DIALOG_032, 1, 5, 30, 200, _(\"\\\nIf you get the Wing Cap,\\n\\\nyou can fly! Put the cap\\n\\\non, then do a Triple\\n\\\nJump--jump three times\\n\\\nin a row--to take off.\\n\\\nYou can fly even higher\\n\\\nif you blast out of a\\n\\\ncannon wearing the\\n\\\nWing Cap!\\n\\\n\\n\\\nUse the [C] Buttons to look\\n\\\naround while flying, and\\n\\\npress [Z] to land.\"))\n\nDEFINE_DIALOG(DIALOG_033, 1, 6, 30, 200, _(\"\\\nCiao! You've reached\\n\\\nPrincess Toadstool's\\n\\\ncastle via a warp pipe.\\n\\\nUsing the controller is a\\n\\\npiece of cake. Press [A] to\\n\\\njump and [B] to attack.\\n\\\nPress [B] to read signs,\\n\\\ntoo. Use the Control Stick\\n\\\nin the center of the\\n\\\ncontroller to move Mario\\n\\\naround. Now, head for\\n\\\nthe castle.\"))\n\nDEFINE_DIALOG(DIALOG_034, 1, 6, 30, 200, _(\"\\\nGood afternoon. The\\n\\\nLakitu Bros., here,\\n\\\nreporting live from just\\n\\\noutside the Princess's\\n\\\ncastle.\\n\\\n\\n\\\nMario has just arrived\\n\\\non the scene, and we'll\\n\\\nbe filming the action live\\n\\\nas he enters the castle\\n\\\nand pursues the missing\\n\\\nPower Stars.\\n\\\nAs seasoned cameramen,\\n\\\nwe'll be shooting from the\\n\\\nrecommended angle, but\\n\\\nyou can change the\\n\\\ncamera angle by pressing\\n\\\nthe [C] Buttons.\\n\\\nIf we can't adjust the\\n\\\nview any further, we'll\\n\\\nbuzz. To take a look at\\n\\\nthe surroundings, stop\\n\\\nand press [C]▲.\\n\\\n\\n\\\nPress [A] to resume play.\\n\\\nSwitch camera modes with\\n\\\nthe [R] Button. Signs along\\n\\\nthe way will review these\\n\\\ninstructions.\\n\\\n\\n\\\nFor now, reporting live,\\n\\\nthis has been the\\n\\\nLakitu Bros.\"))\n\nDEFINE_DIALOG(DIALOG_035, 1, 5, 30, 200, _(\"\\\nThere are four camera, or\\n\\\n『[C],』 Buttons. Press [C]▲\\n\\\nto look around using the\\n\\\nControl Stick.\\n\\\n\\n\\\nYou'll usually see Mario\\n\\\nthrough Lakitu's camera.\\n\\\nIt is the camera\\n\\\nrecommended for normal\\n\\\nplay.\\n\\\nYou can change angles by\\n\\\npressing [C]▶. If you press\\n\\\n[R], the view switches to\\n\\\nMario's camera, which\\n\\\nis directly behind him.\\n\\\nPress [R] again to return\\n\\\nto Lakitu's camera. Press\\n\\\n[C]▼ to see Mario from\\n\\\nafar, using either\\n\\\nLakitu's or Mario's view.\"))\n\nDEFINE_DIALOG(DIALOG_036, 1, 5, 30, 200, _(\"\\\nOBSERVATION PLATFORM\\n\\\nPress [C]▲ to take a look\\n\\\naround. Don't miss\\n\\\nanything!\\n\\\n\\n\\\nPress [R] to switch to\\n\\\nMario's camera. It\\n\\\nalways follows Mario.\\n\\\nPress [R] again to switch\\n\\\nto Lakitu's camera.\\n\\\nPause the game and\\n\\\nswitch the mode to 『fix』\\n\\\nthe camera in place while\\n\\\nholding [R]. Give it a try!\"))\n\nDEFINE_DIALOG(DIALOG_037, 1, 2, 30, 200, _(\"\\\nI win! You lose!\\n\\\nHa ha ha ha!\\n\\\nYou're no slouch, but I'm\\n\\\na better sledder!\\n\\\nBetter luck next time!\"))\n\nDEFINE_DIALOG(DIALOG_038, 1, 3, 95, 200, _(\"\\\nReacting to the Star\\n\\\npower, the door slowly\\n\\\nopens.\"))\n\nDEFINE_DIALOG(DIALOG_039, 1, 4, 30, 200, _(\"\\\nNo visitors allowed,\\n\\\nby decree of\\n\\\nthe Big Bob-omb\\n\\\n\\n\\\nI shall never surrender my\\n\\\nStars, for they hold the\\n\\\npower of the castle in\\n\\\ntheir glow.\\n\\\nThey were a gift from\\n\\\nBowser, the Koopa King\\n\\\nhimself, and they lie well\\n\\\nhidden within my realm.\\n\\\nNot a whisper of their\\n\\\nwhereabouts shall leave\\n\\\nmy lips. Oh, all right,\\n\\\nperhaps one hint:\\n\\\nHeed the Star names at\\n\\\nthe beginning of the\\n\\\ncourse.\\n\\\n//--The Big Bob-omb\"))\n\nDEFINE_DIALOG(DIALOG_040, 1, 3, 30, 200, _(\"\\\nWarning!\\n\\\nCold, Cold Crevasse\\n\\\nBelow!\"))\n\nDEFINE_DIALOG(DIALOG_041, 1, 3, 30, 200, _(\"\\\nI win! You lose!\\n\\\nHa ha ha!\\n\\\n\\n\\\nThat's what you get for\\n\\\nmessin' with Koopa the\\n\\\nQuick.\\n\\\nBetter luck next time!\"))\n\nDEFINE_DIALOG(DIALOG_042, 1, 4, 30, 200, _(\"\\\nCaution! Narrow Bridge!\\n\\\nCross slowly!\\n\\\n\\n\\\n\\n\\\nYou can jump to the edge\\n\\\nof the cliff and hang on,\\n\\\nand you can climb off the\\n\\\nedge if you move slowly.\\n\\\nWhen you want to let go,\\n\\\neither press [Z] or press\\n\\\nthe Control Stick in the\\n\\\ndirection of Mario's back.\\n\\\nTo climb up, press Up on\\n\\\nthe Control Stick. To\\n\\\nscurry up quickly, press\\n\\\nthe [A] Button.\"))\n\nDEFINE_DIALOG(DIALOG_043, 1, 5, 30, 200, _(\"\\\nIf you jump and hold the\\n\\\n[A] Button, you can hang on\\n\\\nto some objects overhead.\\n\\\nIt's the same as grabbing\\n\\\na flying bird!\"))\n\nDEFINE_DIALOG(DIALOG_044, 1, 5, 95, 200, _(\"\\\nWhooo's there? Whooo\\n\\\nwoke me up? It's still\\n\\\ndaylight--I should be\\n\\\nsleeping!\\n\\\n\\n\\\nHey, as long as I'm\\n\\\nawake, why not take a\\n\\\nshort flight with me?\\n\\\nPress and hold [A] to grab\\n\\\non. Release [A] to let go.\\n\\\nI'll take you wherever\\n\\\nyou want to go, as long\\n\\\nas my wings hold out.\\n\\\nWatch my shadow, and\\n\\\ngrab on.\"))\n\nDEFINE_DIALOG(DIALOG_045, 1, 6, 95, 200, _(\"\\\nWhew! I'm just about\\n\\\nflapped out. You should\\n\\\nlay off the pasta, Mario!\\n\\\nThat's it for now. Press\\n\\\n[A] to let go. Okay,\\n\\\nbye byyyyyyeeee!\"))\n\nDEFINE_DIALOG(DIALOG_046, 1, 5, 30, 200, _(\"\\\nYou have to master three\\n\\\nimportant jumping\\n\\\ntechniques.\\n\\\nFirst try the Triple Jump.\\n\\\n\\n\\\nRun fast, then jump three\\n\\\ntimes, one, two, three.\\n\\\nIf you time the jumps\\n\\\nright, you'll hop, skip,\\n\\\nthen jump really high.\\n\\\nNext, go for distance\\n\\\nwith the Long Jump. Run,\\n\\\npress [Z] to crouch then [A]\\n\\\nto jump really far.\\n\\\n\\n\\\nTo do the Wall Kick, press\\n\\\n[A] to jump at a wall, then\\n\\\njump again when you hit\\n\\\nthe wall.\\n\\\n\\n\\\nGot that? Triple Jump,\\n\\\nLong Jump, Wall Kick.\\n\\\nPractice, practice,\\n\\\npractice. You don't stand\\n\\\na chance without them.\"))\n\nDEFINE_DIALOG(DIALOG_047, 1, 2, 95, 200, _(\"\\\nHi! I'll prepare the\\n\\\ncannon for you!\"))\n\nDEFINE_DIALOG(DIALOG_048, 1, 4, 30, 200, _(\"\\\nSnow Mountain Summit\\n\\\nWatch for slippery\\n\\\nconditions! Please enter\\n\\\nthe cottage first.\"))\n\nDEFINE_DIALOG(DIALOG_049, 1, 5, 30, 200, _(\"\\\nRemember that tricky Wall\\n\\\nKick jump? It's a\\n\\\ntechnique you'll have to\\n\\\nmaster in order to reach\\n\\\nhigh places.\\n\\\nUse it to jump from wall\\n\\\nto wall. Press the\\n\\\nControl Stick in the\\n\\\ndirection you want to\\n\\\nbounce to gain momentum.\\n\\\nPractice makes perfect!\"))\n\nDEFINE_DIALOG(DIALOG_050, 1, 4, 30, 200, _(\"\\\nHold [Z] to crouch and\\n\\\nslide down a slope.\\n\\\nOr press [Z] while in the\\n\\\nair to Pound the Ground!\\n\\\nIf you stop, crouch, then\\n\\\njump, you'll do a\\n\\\nBackward Somersault!\\n\\\nGot that?\\n\\\nThere's more. Crouch and\\n\\\nthen jump to do a\\n\\\nLong Jump! Or crouch and\\n\\\nwalk to...never mind.\"))\n\nDEFINE_DIALOG(DIALOG_051, 1, 6, 30, 200, _(\"\\\nClimbing's easy! When you\\n\\\njump at trees, poles or\\n\\\npillars, you'll grab them\\n\\\nautomatically. Press [A] to\\n\\\njump off backward.\\n\\\n\\n\\\nTo rotate around the\\n\\\nobject, press Right or\\n\\\nLeft on the Control Stick.\\n\\\nWhen you reach the top,\\n\\\npress Up to do a\\n\\\nhandstand!\\n\\\nJump off from the\\n\\\nhandstand for a high,\\n\\\nstylin' dismount.\"))\n\nDEFINE_DIALOG(DIALOG_052, 1, 5, 30, 200, _(\"\\\nStop and press [Z] to\\n\\\ncrouch, then press [A]\\n\\\nto do a high, Backward\\n\\\nSomersault!\\n\\\n\\n\\\nTo perform a Side\\n\\\nSomersault, run, do a\\n\\\nsharp U-turn and jump.\\n\\\nYou can catch lots of\\n\\\nair with both jumps.\"))\n\nDEFINE_DIALOG(DIALOG_053, 1, 5, 30, 200, _(\"\\\nSometimes, if you pass\\n\\\nthrough a coin ring or\\n\\\nfind a secret point in a\\n\\\ncourse, a red number will\\n\\\nappear.\\n\\\nIf you trigger five red\\n\\\nnumbers, a secret Star\\n\\\nwill show up.\"))\n\nDEFINE_DIALOG(DIALOG_054, 1, 5, 30, 200, _(\"\\\nWelcome to the snow\\n\\\nslide! Hop on! To speed\\n\\\nup, press forward on the\\n\\\nControl Stick. To slow\\n\\\ndown, pull back.\"))\n\nDEFINE_DIALOG(DIALOG_055, 1, 4, 30, 200, _(\"\\\nHey-ey, Mario, buddy,\\n\\\nhowzit goin'? Step right\\n\\\nup. You look like a fast\\n\\\nsleddin' kind of guy.\\n\\\nI know speed when I see\\n\\\nit, yes siree--I'm the\\n\\\nworld champion sledder,\\n\\\nyou know. Whaddya say?\\n\\\nHow about a race?\\n\\\nReady...\\n\\\n\\n\\\n//Go//// Don't Go\"))\n\nDEFINE_DIALOG(DIALOG_056, 1, 6, 30, 200, _(\"\\\nYou brrrr-oke my record!\\n\\\nUnbelievable! I knew\\n\\\nthat you were the coolest.\\n\\\nNow you've proven\\n\\\nthat you're also the\\n\\\nfastest!\\n\\\nI can't award you a gold\\n\\\nmedal, but here, take this\\n\\\nStar instead. You've\\n\\\nearned it!\"))\n\nDEFINE_DIALOG(DIALOG_057, 1, 4, 30, 200, _(\"\\\nEgad! My baby!! Have you\\n\\\nseen my baby??? She's\\n\\\nthe most precious baby in\\n\\\nthe whole wide world.\\n\\\n(They say she has my\\n\\\nbeak...) I just can't\\n\\\nremember where I left\\n\\\nher.\\n\\\nLet's see...I stopped\\n\\\nfor herring and ice cubes,\\n\\\nthen I...oohh! I just\\n\\\ndon't know!\"))\n\nDEFINE_DIALOG(DIALOG_058, 1, 4, 30, 200, _(\"\\\nYou found my precious,\\n\\\nprecious baby! Where\\n\\\nhave you been? How can\\n\\\nI ever thank you, Mario?\\n\\\nOh, I do have this...\\n\\\n...Star. Here, take it\\n\\\nwith my eternal\\n\\\ngratitude.\"))\n\nDEFINE_DIALOG(DIALOG_059, 1, 4, 30, 200, _(\"\\\nThat's not my baby! She\\n\\\nlooks nothing like me!\\n\\\nHer parents must be\\n\\\nworried sick!\"))\n\nDEFINE_DIALOG(DIALOG_060, 1, 4, 30, 200, _(\"\\\nATTENTION!\\n\\\nRead Before Diving In!\\n\\\n\\n\\\n\\n\\\nIf you stay under the\\n\\\nwater for too long, you'll\\n\\\nrun out of oxygen.\\n\\\n\\n\\\nReturn to the surface for\\n\\\nair or find an air bubble\\n\\\nor coins to breathe while\\n\\\nunderwater.\\n\\\nPress [A] to swim. Hold [A]\\n\\\nto swim slow and steady.\\n\\\nTap [A] with smooth timing\\n\\\nto gain speed.\\n\\\nPress Up on the\\n\\\nControl Stick and press [A]\\n\\\nto dive.\\n\\\n\\n\\\nPress Down on the Control\\n\\\nStick and press [A] to\\n\\\nreturn to the surface.\\n\\\n\\n\\\nHold Down and press [A]\\n\\\nwhile on the surface near\\n\\\nthe edge of the water to\\n\\\njump out.\"))\n\nDEFINE_DIALOG(DIALOG_061, 1, 4, 30, 200, _(\"\\\nBRRR! Frostbite Danger!\\n\\\nDo not swim here.\\n\\\nI'm serious.\\n\\\n/--The Penguin\"))\n\nDEFINE_DIALOG(DIALOG_062, 1, 3, 30, 200, _(\"\\\nHidden inside the green\\n\\\nblock is the amazing\\n\\\nMetal Cap.\\n\\\nWearing it, you won't\\n\\\ncatch fire or be hurt\\n\\\nby enemy attacks.\\n\\\nYou don't even have to\\n\\\nbreathe while wearing it.\\n\\\n\\n\\\nThe only problem:\\n\"\nYOU_CANT_SWIM_IN_IT))\n\nDEFINE_DIALOG(DIALOG_063, 1, 5, 30, 200, _(\"\\\nThe Vanish Cap is inside\\n\\\nthe blue block. Mr. I.\\n\\\nwill be surprised, since\\n\\\nyou'll be invisible when\\n\\\nyou wear it!\\n\\\nEven the Big Boo will be\\n\\\nfooled--and you can walk\\n\\\nthrough secret walls, too.\"))\n\nDEFINE_DIALOG(DIALOG_064, 1, 5, 30, 200, _(\"\\\nWhen you put on the Wing\\n\\\nCap that comes from a\\n\\\nred block, do the Triple\\n\\\nJump to soar high into\\n\\\nthe sky.\\n\\\nUse the Control Stick to\\n\\\nguide Mario. Pull back to\\n\\\nto fly up, press forward\\n\\\nto nose down, and press [Z]\\n\\\nto land.\"))\n\nDEFINE_DIALOG(DIALOG_065, 1, 6, 30, 200, _(\"\\\nSwimming Lessons!\\n\\\nTap [A] to do the breast\\n\\\nstroke. If you time the\\n\\\ntaps right, you'll swim\\n\\\nfast.\\n\\\n\\n\\\nPress and hold [A] to do a\\n\\\nslow, steady flutter kick.\\n\\\nPress Up on the Control\\n\\\nStick to dive, and pull\\n\\\nback on the stick to head\\n\\\nfor the surface.\\n\\\nTo jump out of the water,\\n\\\nhold Down on the Control\\n\\\nStick, then press [A].\\n\\\nEasy as pie, right?\\n\\\n\\n\\\n\\n\\\nBut remember:\\n\\\nMario can't breathe under\\n\\\nthe water! Return to the\\n\\\nsurface for air when the\\n\\\nPower Meter runs low.\\n\\\n\\n\\\nAnd one last thing: You\\n\\\ncan't open doors that\\n\\\nare underwater.\"))\n\nDEFINE_DIALOG(DIALOG_066, 1, 5, 30, 200, _(\"\\\nMario, it's Peach!\\n\\\nPlease be careful! Bowser\\n\\\nis so wicked! He will try\\n\\\nto burn you with his\\n\\\nhorrible flame breath.\\n\\\nRun around behind and\\n\\\ngrab him by the tail with\\n\\\nthe [B] Button. Once you\\n\\\ngrab hold, swing him\\n\\\naround in great circles.\\n\\\nRotate the Control Stick\\n\\\nto go faster and faster.\\n\\\nThe faster you swing him,\\n\\\nthe farther he'll fly.\\n\\\n\\n\\\nUse the [C] Buttons to look\\n\\\naround, Mario. You have\\n\\\nto throw Bowser into one\\n\\\nof the bombs in the four\\n\\\ncorners.\\n\\\nAim well, then press [B]\\n\\\nagain to launch Bowser.\\n\\\nGood luck, Mario! Our\\n\\\nfate is in your hands.\"))\n\nDEFINE_DIALOG(DIALOG_067, 1, 5, 30, 200, _(\"\\\nTough luck, Mario!\\n\\\nPrincess Toadstool isn't\\n\\\nhere...Gwa ha ha!! Go\\n\\\nahead--just try to grab\\n\\\nme by the tail!\\n\\\nYou'll never be able to\\n\\\nswing ME around! A wimp\\n\\\nlike you won't throw me\\n\\\nout of here! Never! Ha!\"))\n\nDEFINE_DIALOG(DIALOG_068, 1, 5, 30, 200, _(\"\\\nIt's Lethal Lava Land!\\n\\\nIf you catch fire or fall\\n\\\ninto a pool of flames,\\n\\\nyou'll be hopping mad, but\\n\\\ndon't lose your cool.\\n\\\nYou can still control\\n\\\nMario--just try to keep\\n\\\ncalm!\"))\n\nDEFINE_DIALOG(DIALOG_069, 1, 6, 30, 200, _(\"\\\nSometimes you'll bump into\\n\\\ninvisible walls at the\\n\\\nedges of the painting\\n\\\nworlds. If you hit a wall\\n\\\nwhile flying, you'll bounce\\n\\\nback.\"))\n\nDEFINE_DIALOG(DIALOG_070, 1, 5, 30, 200, _(\"\\\nYou can return to the\\n\\\ncastle's main hall at any\\n\\\ntime from the painting\\n\\\nworlds where the enemies\\n\\\nlive.\\n\\\nJust stop, stand still,\\n\\\npress Start to pause the\\n\\\ngame, then select\\n\\\n『Exit Course.』\\n\\\n\\n\\\nYou don't have to collect\\n\\\nall Power Stars in one\\n\\\ncourse before going on to\\n\\\nthe next.\\n\\\n\\n\\\nReturn later, when you're\\n\\\nmore experienced, to pick\\n\\\nup difficult ones.\\n\\\n\\n\\\n\\n\\\nWhenever you find a Star,\\n\\\na hint for finding the\\n\\\nnext one will appear on\\n\\\nthe course's start screen.\\n\\\n\\n\\\nYou can, however, collect\\n\\\nany of the remaining\\n\\\nStars next. You don't\\n\\\nhave to recover the one\\n\\\ndescribed by the hint.\"))\n\nDEFINE_DIALOG(DIALOG_071, 1, 3, 30, 200, _(\"\\\nDanger Ahead!\\n\\\nBeware of the strange\\n\\\ncloud! Don't inhale!\\n\\\nIf you feel faint, run for\\n\\\nhigher ground and fresh\\n\\\nair!\\n\\\nCircle: Shelter\\n\\\nArrow: Entrance-Exit\"))\n\nDEFINE_DIALOG(DIALOG_072, 1, 5, 30, 200, _(\"\\\nHigh winds ahead!\\n\\\nPull your Cap down tight.\\n\\\nIf it blows off, you'll\\n\\\nhave to find it on this\\n\\\nmountain.\"))\n\nDEFINE_DIALOG(DIALOG_073, 1, 4, 95, 200, _(\"\\\nAarrgh! Ahoy, matey. I\\n\\\nhave sunken treasure,\\n\\\nhere, I do.\\n\\\n\\n\\\nBut to pluck the plunder,\\n\\\nyou must open the\\n\\\nTreasure Chests in the\\n\\\nright order.\\n\\\nWhat order is that,\\n\\\nye say?\\n\\\n\\n\\\n\\n\\\nI'll never tell!\\n\\\n\\n\\\n//--The Cap'n\"))\n\nDEFINE_DIALOG(DIALOG_074, 1, 5, 30, 200, _(\"\\\nYou can grab on to the\\n\\\nedge of a cliff or ledge\\n\\\nwith your fingertips and\\n\\\nhang down from it.\\n\\\n\\n\\\nTo drop from the edge,\\n\\\neither press the Control\\n\\\nStick in the direction of\\n\\\nMario's back or press the\\n\\\n[Z] Button.\\n\\\nTo get up onto the ledge,\\n\\\neither press Up on the\\n\\\nControl Stick or press [A]\\n\\\nas soon as you grab the\\n\\\nledge to climb up quickly.\"))\n\nDEFINE_DIALOG(DIALOG_075, 1, 5, 30, 200, _(\"\\\nMario!! My castle is in\\n\\\ngreat peril. I know that\\n\\\nBowser is the cause...and\\n\\\nI know that only you can\\n\\\nstop him!\\n\\\nThe doors in the castle\\n\\\nthat have been sealed by\\n\\\nBowser can be opened only\\n\\\nwith Star Power.\\n\\\n\\n\\\nBut there are secret\\n\\\npaths in the castle,\\n\\\npaths that Bowser hasn't\\n\\\nfound.\\n\\\n\\n\\\nOne of those paths is in\\n\\\nthis room, and it holds\\n\\\none of the castle's Secret\\n\\\nStars!\\n\\\n\\n\\\nFind that Secret Star,\\n\\\nMario! It will help you\\n\\\non your quest. Please,\\n\\\nMario, you have to\\n\\\nhelp us!\\n\\\nRetrieve all of the\\n\\\nPower Stars in the castle\\n\\\nand free us from this\\n\\\nawful prison!\\n\\\nPlease!\"))\n\nDEFINE_DIALOG(DIALOG_076, 1, 6, 30, 200, _(\"\\\nThanks to the power of\\n\\\nthe Stars, life is\\n\\\nreturning to the castle.\\n\\\nPlease, Mario, you have\\n\\\nto give Bowser the boot!\\n\\\n\\n\\\nHere, let me tell you a\\n\\\nlittle something about the\\n\\\ncastle. In the room with\\n\\\nthe mirrors, look carefully\\n\\\nfor anything that's not\\n\\\nreflected in the mirror.\\n\\\nAnd when you go to the\\n\\\nwater town, you can flood\\n\\\nit with a high jump into\\n\\\nthe painting. Oh, by the\\n\\\nway, look what I found!\"))\n\nDEFINE_DIALOG(DIALOG_077, 1, 2, 150, 200, _(\"\\\nIt is decreed that one\\n\\\nshall pound the pillars.\"))\n\nDEFINE_DIALOG(DIALOG_078, 1, 5, 30, 200, _(\"\\\nBreak open the Blue Coin\\n\\\nBlock by Pounding the\\n\\\nGround with the [Z] Button.\\n\\\nOne Blue Coin is worth\\n\\\nfive Yellow Coins.\\n\\\nBut you have to hurry!\\n\\\nThe coins will disappear\\n\\\nif you're not quick to\\n\\\ncollect them! Too bad.\"))\n\nDEFINE_DIALOG(DIALOG_079, 1, 4, 30, 200, _(\"\\\nOwwwuu! Let me go!\\n\\\nUukee-kee! I was only\\n\\\nteasing! Can't you take\\n\\\na joke?\\n\\\nI'll tell you what, let's\\n\\\ntrade. If you let me go,\\n\\\nI'll give you something\\n\\\nreally good.\\n\\\nSo, how about it?\\n\\\n\\n\\\n//Free him/ Hold on\"))\n\nDEFINE_DIALOG(DIALOG_080, 1, 1, 30, 200, _(\"\\\nEeeh hee hee hee!\"))\n\nDEFINE_DIALOG(DIALOG_081, 1, 4, 30, 200, _(\"\\\nThe mystery is of Wet\\n\\\nor Dry.\\n\\\nAnd where does the\\n\\\nsolution lie?\\n\\\nThe city welcomes visitors\\n\\\nwith the depth they bring\\n\\\nas they enter.\"))\n\nDEFINE_DIALOG(DIALOG_082, 1, 4, 30, 200, _(\"\\\nHold on to your hat! If\\n\\\nyou lose it, you'll be\\n\\\ninjured easily.\\n\\\n\\n\\\nIf you do lose your Cap,\\n\\\nyou'll have to find it in\\n\\\nthe course where you\\n\\\nlost it.\\n\\\nOh, boy, it's not looking\\n\\\ngood for Peach. She's\\n\\\nstill trapped somewhere\\n\\\ninside the walls.\\n\\\nPlease, Mario, you have\\n\\\nto help her! Did you know\\n\\\nthat there are enemy\\n\\\nworlds inside the walls?\\n\\\nYup. It's true. Bowser's\\n\\\ntroops are there, too.\\n\\\nOh, here, take this. I've\\n\\\nbeen keeping it for you.\"))\n\nDEFINE_DIALOG(DIALOG_083, 1, 6, 30, 200, _(\"\\\nThere's something strange\\n\\\nabout that clock. As you\\n\\\njump inside, watch the\\n\\\nposition of the big hand.\\n\\\nOh, look what I found!\\n\\\nHere, Mario, catch!\"))\n\nDEFINE_DIALOG(DIALOG_084, 1, 3, 30, 200, _(\"\\\nYeeoww! Unhand me,\\n\\\nbrute! I'm late, so late,\\n\\\nI must make haste!\\n\\\nThis shiny thing? Mine!\\n\\\nIt's mine. Finders,\\n\\\nkeepers, losers...\\n\\\nLate, late, late...\\n\\\nOuch! Take it then! A\\n\\\ngift from Bowser, it was.\\n\\\nNow let me be! I have a\\n\\\ndate! I cannot be late\\n\\\nfor tea!\"))\n\nDEFINE_DIALOG(DIALOG_085, 1, 5, 30, 200, _(\"\\\nYou don't stand a ghost\\n\\\nof a chance in this house.\\n\\\nIf you walk out of here,\\n\\\nyou deserve...\\n\\\n...a Ghoul Medal...\"))\n\nDEFINE_DIALOG(DIALOG_086, 1, 3, 30, 200, _(\"\\\nRunning around in circles\\n\\\nmakes some bad guys roll\\n\\\ntheir eyes.\"))\n\nDEFINE_DIALOG(DIALOG_087, 1, 4, 30, 200, _(\"\\\nSanta Claus isn't the only\\n\\\none who can go down a\\n\\\nchimney! Come on in!\\n\\\n/--Cabin Proprietor\"))\n\nDEFINE_DIALOG(DIALOG_088, 1, 5, 30, 200, _(\"\\\nWork Elevator\\n\\\nFor those who get off\\n\\\nhere: Grab the pole to the\\n\\\nleft and slide carefully\\n\\\ndown.\"))\n\nDEFINE_DIALOG(DIALOG_089, 1, 5, 95, 200, _(\"\\\nBoth ways fraught with\\n\\\ndanger! Watch your feet!\\n\\\nThose who can't do the\\n\\\nLong Jump, tsk, tsk. Make\\n\\\nyour way to the right.\\n\\\nRight: Work Elevator\\n\\\n/// Cloudy Maze\\n\\\nLeft: Black Hole\\n\\\n///Underground Lake\\n\\\n\\n\\\nRed Circle: Elevator 2\\n\\\n//// Underground Lake\\n\\\nArrow: You are here\"))\n\nDEFINE_DIALOG(DIALOG_090, 1, 6, 30, 200, _(\"\\\nBwa ha ha ha!\\n\\\nYou've stepped right into\\n\\\nmy trap, just as I knew\\n\\\nyou would! I warn you,\\n\\\n『Friend,』 watch your\\n\\\nstep!\"))\n\nDEFINE_DIALOG(DIALOG_091, 2, 2, 30, 200, _(\"\\\nDanger!\\n\\\nStrong Gusts!\\n\\\nBut the wind makes a\\n\\\ncomfy ride.\"))\n\nDEFINE_DIALOG(DIALOG_092, 1, 5, 30, 200, _(\"\\\nPestering me again, are\\n\\\nyou, Mario? Can't you see\\n\\\nthat I'm having a merry\\n\\\nlittle time, making\\n\\\nmischief with my minions?\\n\\\nNow, return those Stars!\\n\\\nMy troops in the walls\\n\\\nneed them! Bwa ha ha!\"))\n\nDEFINE_DIALOG(DIALOG_093, 1, 5, 30, 200, _(\"\\\nMario! You again! Well\\n\\\nthat's just fine--I've\\n\\\nbeen looking for something\\n\\\nto fry with my fire\\n\\\nbreath!\\n\\\nYour Star Power is\\n\\\nuseless against me!\\n\\\nYour friends are all\\n\\\ntrapped within the\\n\\\nwalls...\\n\\\nAnd you'll never see the\\n\\\nPrincess again!\\n\\\nBwa ha ha ha!\"))\n\nDEFINE_DIALOG(DIALOG_094, 1, 4, 30, 200, _(\"\\\nGet a good run up the\\n\\\nslope! Do you remember\\n\\\nthe Long Jump? Run, press\\n\\\n[Z], then jump!\"))\n\nDEFINE_DIALOG(DIALOG_095, 1, 4, 30, 200, _(\"\\\nTo read a sign, stand in\\n\\\nfront of it and press [B],\\n\\\nlike you did just now.\\n\\\n\\n\\\nWhen you want to talk to\\n\\\na Koopa Troopa or other\\n\\\nanimal, stand right in\\n\\\nfront of it.\\n\\\nPlease recover the Stars\\n\\\nthat were stolen by\\n\\\nBowser in this course.\"))\n\nDEFINE_DIALOG(DIALOG_096, 1, 4, 30, 200, _(\"\\\nThe path is narrow here.\\n\\\nEasy does it! No one is\\n\\\nallowed on top of the\\n\\\nmountain!\\n\\\nAnd if you know what's\\n\\\ngood for you, you won't\\n\\\nwake anyone who's\\n\\\nsleeping!\\n\\\nMove slowly,\\n\\\ntread lightly.\"))\n\nDEFINE_DIALOG(DIALOG_097, 1, 5, 30, 200, _(\"\\\nDon't be a pushover!\\n\\\nIf anyone tries to shove\\n\\\nyou around, push back!\\n\\\nIt's one-on-one, with a\\n\\\nfiery finish for the loser!\"))\n\nDEFINE_DIALOG(DIALOG_098, 1, 2, 95, 200, _(\"\\\nCome on in here...\\n\\\n...heh, heh, heh...\"))\n\n// unused\nDEFINE_DIALOG(DIALOG_099, 1, 5, 95, 200, _(\"\\\nEh he he...\\n\\\nYou're mine, now, hee hee!\\n\\\nI'll pass right through\\n\\\nthis wall. Can you do\\n\\\nthat? Heh, heh, heh!\"))\n\nDEFINE_DIALOG(DIALOG_100, 1, 3, 95, 200, _(\"\\\nUkkiki...Wakkiki...kee kee!\\n\\\nHa! I snagged it!\\n\\\nIt's mine! Heeheeheeee!\"))\n\nDEFINE_DIALOG(DIALOG_101, 1, 3, 95, 200, _(\"\\\nAckk! Let...go...\\n\\\nYou're...choking...me...\\n\\\nCough...I've been framed!\\n\\\nThis Cap? Oh, all right,\\n\\\ntake it. It's a cool Cap,\\n\\\nbut I'll give it back.\\n\\\nI think it looks better on\\n\\\nme than it does on you,\\n\\\nthough! Eeeee! Kee keee!\"))\n\nDEFINE_DIALOG(DIALOG_102, 1, 5, 30, 200, _(\"\\\nPssst! The Boos are super\\n\\\nshy. If you look them\\n\\\nin the eyes, they fade\\n\\\naway, but if you turn\\n\\\nyour back, they reappear.\\n\\\nIt's no use trying to hit\\n\\\nthem when they're fading\\n\\\naway. Instead, sneak up\\n\\\nbehind them and punch.\"))\n\nDEFINE_DIALOG(DIALOG_103, 1, 4, 95, 200, _(\"\\\nUpon four towers\\n\\\none must alight...\\n\\\nThen at the peak\\n\\\nshall shine the light...\"))\n\nDEFINE_DIALOG(DIALOG_104, 1, 5, 30, 200, _(\"\\\nThe shadowy star in front\\n\\\nof you is a 『Star\\n\\\nMarker.』 When you collect\\n\\\nall 8 Red Coins, the Star\\n\\\nwill appear here.\"))\n\nDEFINE_DIALOG(DIALOG_105, 1, 3, 95, 200, _(\"\\\nReady for blastoff! Come\\n\\\non, hop into the cannon!\\n\\\n\\n\\\nYou can reach the Star on\\n\\\nthe floating island by\\n\\\nusing the four cannons.\\n\\\nUse the Control Stick to\\n\\\naim, then press [A] to fire.\\n\\\n\\n\\\nIf you're handy, you can\\n\\\ngrab on to trees or poles\\n\\\nto land.\"))\n\nDEFINE_DIALOG(DIALOG_106, 1, 2, 95, 200, _(\"\\\nReady for blastoff! Come\\n\\\non, hop into the cannon!\"))\n\nDEFINE_DIALOG(DIALOG_107, 1, 3, 95, 200, _(\"\\\nGhosts...\\n\\\n...don't...\\n\\\n...DIE!\\n\\\nHeh, heh, heh!\\n\\\nCan you get out of here...\\n\\\n...alive?\"))\n\nDEFINE_DIALOG(DIALOG_108, 1, 2, 95, 200, _(\"\\\nBoooooo-m! Here comes\\n\\\nthe master of mischief,\\n\\\nthe tower of terror,\\n\\\nthe Big Boo!\\n\\\nKa ha ha ha...\"))\n\nDEFINE_DIALOG(DIALOG_109, 1, 4, 95, 200, _(\"\\\nOoooo Nooooo!\\n\\\nTalk about out-of-body\\n\\\nexperiences--my body\\n\\\nhas melted away!\\n\\\nHave you run in to any\\n\\\nheadhunters lately??\\n\\\nI could sure use a new\\n\\\nbody!\\n\\\nBrrr! My face might\\n\\\nfreeze like this!\"))\n\nDEFINE_DIALOG(DIALOG_110, 1, 5, 95, 200, _(\"\\\nI need a good head on my\\n\\\nshoulders. Do you know of\\n\\\nanybody in need of a good\\n\\\nbody? Please! I'll follow\\n\\\nyou if you do!\"))\n\nDEFINE_DIALOG(DIALOG_111, 1, 4, 95, 200, _(\"\\\nPerfect! What a great\\n\\\nnew body! Here--this is a\\n\\\npresent for you. It's sure\\n\\\nto warm you up.\"))\n\nDEFINE_DIALOG(DIALOG_112, 1, 4, 30, 200, _(\"\\\nCollect as many coins as\\n\\\npossible! They'll refill\\n\\\nyour Power Meter.\\n\\\n\\n\\\nYou can check to see how\\n\\\nmany coins you've\\n\\\ncollected in each of the\\n\\\n15 enemy worlds.\\n\\\nYou can also recover\\n\\\npower by touching the\\n\\\nSpinning Heart.\\n\\\n\\n\\\nThe faster you run\\n\\\nthrough the heart, the\\n\\\nmore power you'll recover.\"))\n\nDEFINE_DIALOG(DIALOG_113, 1, 6, 30, 200, _(\"\\\nThere are special Caps in\\n\\\nthe red, green and blue\\n\\\nblocks. Step on the\\n\\\nswitches in the hidden\\n\\\ncourses to activate the\\n\\\nCap Blocks.\"))\n\nDEFINE_DIALOG(DIALOG_114, 1, 5, 95, 200, _(\"\\\nIt makes me so mad! We\\n\\\nbuild your houses, your\\n\\\ncastles. We pave your\\n\\\nroads, and still you\\n\\\nwalk all over us.\\n\\\nDo you ever say thank\\n\\\nyou? No! Well, you're not\\n\\\ngoing to wipe your feet\\n\\\non me! I think I'll crush\\n\\\nyou just for fun!\\n\\\nDo you have a problem\\n\\\nwith that? Just try to\\n\\\npound me, wimp! Ha!\"))\n\nDEFINE_DIALOG(DIALOG_115, 1, 5, 95, 200, _(\"\\\nNo! Crushed again!\\n\\\nI'm just a stepping stone,\\n\\\nafter all. I won't gravel,\\n\\\ner, grovel. Here, you win.\\n\\\nTake this with you!\"))\n\nDEFINE_DIALOG(DIALOG_116, 1, 5, 95, 200, _(\"\\\nWhaaa....Whaaat?\\n\\\nCan it be that a\\n\\\npipsqueak like you has\\n\\\ndefused the Bob-omb\\n\\\nking????\\n\\\nYou might be fast enough\\n\\\nto ground me, but you'll\\n\\\nhave to pick up the pace\\n\\\nif you want to take King\\n\\\nBowser by the tail.\\n\\\nMethinks my troops could\\n\\\nlearn a lesson from you!\\n\\\nHere is your Star, as I\\n\\\npromised, Mario.\\n\\\n\\n\\\nIf you want to see me\\n\\\nagain, select this Star\\n\\\nfrom the menu. For now,\\n\\\nfarewell.\"))\n\nDEFINE_DIALOG(DIALOG_117, 1, 1, 95, 200, _(\"\\\nWho...walk...here?\\n\\\nWho...break...seal?\\n\\\nWake..ancient..ones?\\n\\\nWe no like light...\\n\\\nRrrrummbbble...\\n\\\nWe no like...intruders!\\n\\\nNow battle...\\n\\\n...hand...\\n\\\n...to...\\n\\\n...hand!\"))\n\nDEFINE_DIALOG(DIALOG_118, 1, 6, 95, 200, _(\"\\\nGrrrrumbbble!\\n\\\nWhat...happen?\\n\\\nWe...crushed like pebble.\\n\\\nYou so strong!\\n\\\nYou rule ancient pyramid!\\n\\\nFor today...\\n\\\nNow, take Star of Power.\\n\\\nWe...sleep...darkness.\"))\n\nDEFINE_DIALOG(DIALOG_119, 1, 6, 30, 200, _(\"\\\nGrrr! I was a bit\\n\\\ncareless. This is not as I\\n\\\nhad planned...but I still\\n\\\nhold the power of the\\n\\\nStars, and I still have\\n\\\nPeach.\\n\\\nBwa ha ha! You'll get no\\n\\\nmore Stars from me! I'm\\n\\\nnot finished with you yet,\\n\\\nbut I'll let you go for\\n\\\nnow. You'll pay for this...\\n\\\nlater!\"))\n\nDEFINE_DIALOG(DIALOG_120, 1, 4, 30, 200, _(\"\\\nOoowaah! Can it be that\\n\\\nI've lost??? The power of\\n\\\nthe Stars has failed me...\\n\\\nthis time.\\n\\\nConsider this a draw.\\n\\\nNext time, I'll be in\\n\\\nperfect condition.\\n\\\n\\n\\\nNow, if you want to see\\n\\\nyour precious Princess,\\n\\\ncome to the top of the\\n\\\ntower.\\n\\\nI'll be waiting!\\n\\\nGwa ha ha ha!\"))\n\nDEFINE_DIALOG(DIALOG_121, 1, 5, 30, 200, _(\"\\\nNooo! It can't be!\\n\\\nYou've really beaten me,\\n\\\nMario?!! I gave those\\n\\\ntroops power, but now\\n\\\nit's fading away!\\n\\\nArrgghh! I can see peace\\n\\\nreturning to the world! I\\n\\\ncan't stand it! Hmmm...\\n\\\nIt's not over yet...\\n\\\n\\n\\\nC'mon troops! Let's watch\\n\\\nthe ending together!\\n\\\nBwa ha ha!\"))\n\nDEFINE_DIALOG(DIALOG_122, 1, 4, 30, 200, _(\"\\\nThe Black Hole\\n\\\nRight: Work Elevator\\n\\\n/// Cloudy Maze\\n\\\nLeft: Underground Lake\"))\n\nDEFINE_DIALOG(DIALOG_123, 1, 4, 30, 200, _(\"\\\nMetal Cavern\\n\\\nRight: To Waterfall\\n\\\nLeft: Metal Cap Switch\"))\n\nDEFINE_DIALOG(DIALOG_124, 1, 4, 30, 200, _(\"\\\nWork Elevator\\n\\\nDanger!!\\n\\\nRead instructions\\n\\\nthoroughly!\\n\\\nElevator continues in the\\n\\\ndirection of the arrow\\n\\\nactivated.\"))\n\nDEFINE_DIALOG(DIALOG_125, 1, 3, 30, 200, _(\"\\\nHazy Maze-Exit\\n\\\nDanger! Closed.\\n\\\nTurn back now.\"))\n\nDEFINE_DIALOG(DIALOG_126, 2, 3, 30, 200, _(\"\\\nUp: Black Hole\\n\\\nRight: Work Elevator\\n\\\n/// Hazy Maze\"))\n\nDEFINE_DIALOG(DIALOG_127, 3, 4, 30, 200, _(\"\\\nUnderground Lake\\n\\\nRight: Metal Cave\\n\\\nLeft: Abandoned Mine\\n\\\n///(Closed)\\n\\\nA gentle sea dragon lives\\n\\\nhere. Pound on his back to\\n\\\nmake him lower his head.\\n\\\nDon't become his lunch.\"))\n\nDEFINE_DIALOG(DIALOG_128, 1, 4, 95, 200, _(\"\\\nYou must fight with\\n\\\nhonor! It is against the\\n\\\nroyal rules to throw the\\n\\\nking out of the ring!\"))\n\nDEFINE_DIALOG(DIALOG_129, 1, 5, 30, 200, _(\"\\\nWelcome to the Vanish\\n\\\nCap Switch Course! All of\\n\\\nthe blue blocks you find\\n\\\nwill become solid once you\\n\\\nstep on the Cap Switch.\\n\\\nYou'll disappear when you\\n\\\nput on the Vanish Cap, so\\n\\\nyou'll be able to elude\\n\\\nenemies and walk through\\n\\\nmany things. Try it out!\"))\n\nDEFINE_DIALOG(DIALOG_130, 1, 5, 30, 200, _(\"\\\nWelcome to the Metal Cap\\n\\\nSwitch Course! Once you\\n\\\nstep on the Cap Switch,\\n\\\nthe green blocks will\\n\\\nbecome solid.\\n\\\nWhen you turn your body\\n\\\ninto metal with the Metal\\n\\\nCap, you can walk\\n\\\nunderwater! Try it!\"))\n\nDEFINE_DIALOG(DIALOG_131, 1, 5, 30, 200, _(\"\\\nWelcome to the Wing Cap\\n\\\nCourse! Step on the red\\n\\\nswitch at the top of the\\n\\\ntower, in the center of\\n\\\nthe rainbow ring.\\n\\\nWhen you trigger the\\n\\\nswitch, all of the red\\n\\\nblocks you find will\\n\\\nbecome solid.\\n\\\n\\n\\\nTry out the Wing Cap! Do\\n\\\nthe Triple Jump to take\\n\\\noff and press [Z] to land.\\n\\\n\\n\\\n\\n\\\nPull back on the Control\\n\\\nStick to go up and push\\n\\\nforward to nose down,\\n\\\njust as you would when\\n\\\nflying an airplane.\"))\n\nDEFINE_DIALOG(DIALOG_132, 1, 4, 30, 200, _(\"\\\nWhoa, Mario, pal, you\\n\\\naren't trying to cheat,\\n\\\nare you? Shortcuts aren't\\n\\\nallowed.\\n\\\nNow, I know that you\\n\\\nknow better. You're\\n\\\ndisqualified! Next time,\\n\\\nplay fair!\"))\n\nDEFINE_DIALOG(DIALOG_133, 1, 6, 30, 200, _(\"\\\nAm I glad to see you! The\\n\\\nPrincess...and I...and,\\n\\\nwell, everybody...we're all\\n\\\ntrapped inside the castle\\n\\\nwalls.\\n\\\n\\n\\\nBowser has stolen the\\n\\\ncastle's Stars, and he's\\n\\\nusing their power to\\n\\\ncreate his own world in\\n\\\nthe paintings and walls.\\n\\\n\\n\\\nPlease recover the Power\\n\\\nStars! As you find them,\\n\\\nyou can use their power\\n\\\nto open the doors that\\n\\\nBowser has sealed.\\n\\\n\\n\\\nThere are four rooms on\\n\\\nthe first floor. Start in\\n\\\nthe one with the painting\\n\\\nof Bob-omb inside. It's\\n\\\nthe only room that Bowser\\n\\\nhasn't sealed.\\n\\\nWhen you collect eight\\n\\\nPower Stars, you'll be\\n\\\nable to open the door\\n\\\nwith the big star. The\\n\\\nPrincess must be inside!\"))\n\nDEFINE_DIALOG(DIALOG_134, 1, 5, 30, 200, _(\"\\\nThe names of the Stars\\n\\\nare also hints for\\n\\\nfinding them. They are\\n\\\ndisplayed at the beginning\\n\\\nof each course.\\n\\\nYou can collect the Stars\\n\\\nin any order. You won't\\n\\\nfind some Stars, enemies\\n\\\nor items unless you select\\n\\\na specific Star.\\n\\\nAfter you collect some\\n\\\nStars, you can try\\n\\\nanother course.\\n\\\nWe're all waiting for\\n\\\nyour help!\"))\n\nDEFINE_DIALOG(DIALOG_135, 1, 5, 30, 200, _(\"\\\nIt was Bowser who stole\\n\\\nthe Stars. I saw him with\\n\\\nmy own eyes!\\n\\\n\\n\\\n\\n\\\nHe's hidden six Stars in\\n\\\neach course, but you\\n\\\nwon't find all of them in\\n\\\nsome courses until you\\n\\\npress the Cap Switches.\\n\\\nThe Stars you've found\\n\\\nwill show on each course's\\n\\\nstarting screen.\\n\\\n\\n\\\n\\n\\\nIf you want to see some\\n\\\nof the enemies you've\\n\\\nalready defeated, select\\n\\\nthe Stars you recovered\\n\\\nfrom them.\"))\n\nDEFINE_DIALOG(DIALOG_136, 1, 6, 30, 200, _(\"\\\nWow! You've already\\n\\\nrecovered that many\\n\\\nStars? Way to go, Mario!\\n\\\nI'll bet you'll have us out\\n\\\nof here in no time!\\n\\\n\\n\\\nBe careful, though.\\n\\\nBowser and his band\\n\\\nwrote the book on 『bad.』\\n\\\nTake my advice: When you\\n\\\nneed to recover from\\n\\\ninjuries, collect coins.\\n\\\nYellow Coins refill one\\n\\\npiece of the Power Meter,\\n\\\nRed Coins refill two\\n\\\npieces, and Blue Coins\\n\\\nrefill five.\\n\\\n\\n\\\nTo make Blue Coins\\n\\\nappear, pound on Blue\\n\\\nCoin Blocks.\\n\\\n\\n\\\n\\n\\\n\\n\\\nAlso, if you fall from\\n\\\nhigh places, you'll\\n\\\nminimize damage if you\\n\\\nPound the Ground as you\\n\\\nland.\"))\n\nDEFINE_DIALOG(DIALOG_137, 1, 6, 30, 200, _(\"\\\nThanks, Mario! The castle\\n\\\nis recovering its energy\\n\\\nas you retrieve Power\\n\\\nStars, and you've chased\\n\\\nBowser right out of here,\\n\\\non to some area ahead.\\n\\\nOh, by the by, are you\\n\\\ncollecting coins? Special\\n\\\nStars appear when you\\n\\\ncollect 100 coins in each\\n\\\nof the 15 courses!\"))\n\nDEFINE_DIALOG(DIALOG_138, 1, 3, 30, 200, _(\"\\\nDown: Underground Lake\\n\\\nLeft: Black Hole\\n\\\nRight: Hazy Maze (Closed)\"))\n\nDEFINE_DIALOG(DIALOG_139, 1, 6, 30, 200, _(\"\\\nAbove: Automatic Elevator\\n\\\nElevator begins\\n\\\nautomatically and follows\\n\\\npre-set course.\\n\\\nIt disappears\\n\\\nautomatically, too.\"))\n\nDEFINE_DIALOG(DIALOG_140, 1, 6, 30, 200, _(\"\\\nElevator Area\\n\\\nRight: Hazy Maze\\n\\\n/// Entrance\\n\\\nLeft: Black Hole\\n\\\n///Elevator 1\\n\\\nArrow: You are here\"))\n\nDEFINE_DIALOG(DIALOG_141, 1, 5, 150, 200, _(\"\\\nYou've recovered one of\\n\\\nthe stolen Power Stars!\\n\\\nNow you can open some of\\n\\\nthe sealed doors in the\\n\\\ncastle.\\n\\\nTry the Princess's room\\n\\\non the second floor and\\n\\\nthe room with the\\n\\\npainting of Whomp's\\n\\\nFortress on Floor 1.\\n\\\nBowser's troops are still\\n\\\ngaining power, so you\\n\\\ncan't give up. Save us,\\n\\\nMario! Keep searching for\\n\\\nStars!\"))\n\nDEFINE_DIALOG(DIALOG_142, 1, 5, 150, 200, _(\"\\\nYou've recovered three\\n\\\nPower Stars! Now you can\\n\\\nopen any door with a 3\\n\\\non its star.\\n\\\n\\n\\\nYou can come and go from\\n\\\nthe open courses as you\\n\\\nplease. The enemies ahead\\n\\\nare even meaner, so be\\n\\\ncareful!\"))\n\nDEFINE_DIALOG(DIALOG_143, 1, 6, 150, 200, _(\"\\\nYou've recovered eight of\\n\\\nthe Power Stars! Now you\\n\\\ncan open the door with\\n\\\nthe big Star! But Bowser\\n\\\nis just ahead...can you\\n\\\nhear the Princess calling?\"))\n\nDEFINE_DIALOG(DIALOG_144, 1, 6, 150, 200, _(\"\\\nYou've recovered 30\\n\\\nPower Stars! Now you can\\n\\\nopen the door with the\\n\\\nbig Star! But before you\\n\\\nmove on, how's it going\\n\\\notherwise?\\n\\\nDid you pound the two\\n\\\ncolumns down? You didn't\\n\\\nlose your hat, did you?\\n\\\nIf you did, you'll have to\\n\\\nstomp on the condor to\\n\\\nget it back!\\n\\\nThey say that Bowser has\\n\\\nsneaked out of the sea\\n\\\nand into the underground.\\n\\\nHave you finally\\n\\\ncornered him?\"))\n\nDEFINE_DIALOG(DIALOG_145, 1, 6, 150, 200, _(\"\\\nYou've recovered 50\\n\\\nPower Stars! Now you can\\n\\\nopen the Star Door on the\\n\\\nthird floor. Bowser's\\n\\\nthere, you know.\\n\\\n\\n\\\nOh! You've found all of\\n\\\nthe Cap Switches, haven't\\n\\\nyou? Red, green and blue?\\n\\\nThe Caps you get from the\\n\\\ncolored blocks are really\\n\\\nhelpful.\\n\\\nHurry along, now. The\\n\\\nthird floor is just ahead.\"))\n\nDEFINE_DIALOG(DIALOG_146, 1, 6, 150, 200, _(\"\\\nYou've found 70 Power\\n\\\nStars! The mystery of the\\n\\\nendless stairs is solved,\\n\\\nthanks to you--and is\\n\\\nBowser ever upset! Now,\\n\\\non to the final bout!\"))\n\nDEFINE_DIALOG(DIALOG_147, 1, 5, 30, 200, _(\"\\\nAre you using the Cap\\n\\\nBlocks? You really should,\\n\\\nyou know.\\n\\\n\\n\\\n\\n\\\nTo make them solid so you\\n\\\ncan break them, you have\\n\\\nto press the colored Cap\\n\\\nSwitches in the castle's\\n\\\nhidden courses.\\n\\\nYou'll find the hidden\\n\\\ncourses only after\\n\\\nregaining some of the\\n\\\nPower Stars.\\n\\\n\\n\\\nThe Cap Blocks are a big\\n\\\nhelp! Red for the Wing\\n\\\nCap, green for the Metal\\n\\\nCap, blue for the Vanish\\n\\\nCap.\"))\n\nDEFINE_DIALOG(DIALOG_148, 1, 6, 30, 200, _(\"\\\nSnowman Mountain ahead.\\n\\\nKeep out! And don't try\\n\\\nthe Triple Jump over the\\n\\\nice block shooter.\\n\\\n\\n\\\n\\n\\\nIf you fall into the\\n\\\nfreezing pond, your power\\n\\\ndecreases quickly, and\\n\\\nyou won't recover\\n\\\nautomatically.\\n\\\n//--The Snowman\"))\n\nDEFINE_DIALOG(DIALOG_149, 1, 3, 30, 200, _(\"\\\nWelcome to\\n\\\nPrincess Toadstool's\\n\\\nsecret slide!\\n\\\nThere's a Star hidden\\n\\\nhere that Bowser couldn't\\n\\\nfind.\\n\\\nWhen you slide, press\\n\\\nforward to speed up,\\n\\\npull back to slow down.\\n\\\nIf you slide really\\n\\\nfast, you'll win the Star!\"))\n\nDEFINE_DIALOG(DIALOG_150, 1, 5, 30, 200, _(\"\\\nWaaaa! You've flooded my\\n\\\nhouse! Wh-why?? Look at\\n\\\nthis mess! What am I\\n\\\ngoing to do now?\\n\\\n\\n\\\nThe ceiling's ruined, the\\n\\\nfloor is soaked...what to\\n\\\ndo, what to do? Huff...\\n\\\nhuff...it makes me so...\\n\\\nMAD!!!\\n\\\nEverything's been going\\n\\\nwrong ever since I got\\n\\\nthis Star...It's so shiny,\\n\\\nbut it makes me feel...\\n\\\nstrange...\"))\n\nDEFINE_DIALOG(DIALOG_151, 1, 4, 30, 200, _(\"\\\nI can't take this\\n\\\nanymore! First you get\\n\\\nme all wet, then you\\n\\\nstomp on me!\\n\\\nNow I'm really, really,\\n\\\nREALLY mad!\\n\\\nWaaaaaaaaaaaaaaaaa!!!\"))\n\nDEFINE_DIALOG(DIALOG_152, 1, 3, 30, 200, _(\"\\\nOwwch! Uncle! Uncle!\\n\\\nOkay, I \" GIVE_UP \". Take this\\n\\\nStar!\\n\\\nWhew! I feel better now.\\n\\\nI don't really need it\\n\\\nanymore, anyway--\\n\\\nI can see the stars\\n\\\nthrough my ceiling at\\n\\\nnight.\\n\\\nThey make me feel...\\n\\\n...peaceful. Please, come\\n\\\nback and visit anytime.\"))\n\nDEFINE_DIALOG(DIALOG_153, 1, 4, 30, 200, _(\"\\\nHey! Who's there?\\n\\\nWhat's climbing on me?\\n\\\nIs it an ice ant?\\n\\\nA snow flea?\\n\\\nWhatever it is, it's\\n\\\nbugging me! I think I'll\\n\\\nblow it away!\"))\n\nDEFINE_DIALOG(DIALOG_154, 1, 5, 30, 200, _(\"\\\nHold on to your hat! If\\n\\\nyou lose it, you'll be\\n\\\neasily injured. If you\\n\\\nlose it, look for it in the\\n\\\ncourse where you lost it.\\n\\\nSpeaking of lost, the\\n\\\nPrincess is still stuck in\\n\\\nthe walls somewhere.\\n\\\nPlease help, Mario!\\n\\\n\\n\\\nOh, you know that there\\n\\\nare secret worlds in the\\n\\\nwalls as well as in the\\n\\\npaintings, right?\"))\n\nDEFINE_DIALOG(DIALOG_155, 1, 6, 30, 200, _(\"\\\nThanks to the power of\\n\\\nthe Stars, life is\\n\\\nreturning to the castle.\\n\\\nPlease, Mario, you have\\n\\\nto give Bowser the boot!\\n\\\n\\n\\\nHere, let me tell you a\\n\\\nlittle something about the\\n\\\ncastle. In the room with\\n\\\nthe mirrors, look carefully\\n\\\nfor anything that's not\\n\\\nreflected in the mirror.\\n\\\nAnd when you go to the\\n\\\nwater town, you can flood\\n\\\nit with a high jump into\\n\\\nthe painting.\"))\n\nDEFINE_DIALOG(DIALOG_156, 1, 5, 30, 200, _(\"\\\nThe world inside the\\n\\\nclock is so strange!\\n\\\nWhen you jump inside,\\n\\\nwatch the position of\\n\\\nthe big hand!\"))\n\nDEFINE_DIALOG(DIALOG_157, 1, 5, 30, 200, _(\"\\\nWatch out! Don't let\\n\\\nyourself be swallowed by\\n\\\nquicksand.\\n\\\n\\n\\\n\\n\\\nIf you sink into the sand,\\n\\\nyou won't be able to\\n\\\njump, and if your head\\n\\\ngoes under, you'll be\\n\\\nsmothered.\\n\\\nThe dark areas are\\n\\\nbottomless pits.\"))\n\nDEFINE_DIALOG(DIALOG_158, 1, 6, 30, 200, _(\"\\\n1. If you jump repeatedly\\n\\\nand time it right, you'll\\n\\\njump higher and higher.\\n\\\nIf you run really fast and\\n\\\ntime three jumps right,\\n\\\nyou can do a Triple Jump.\\n\\\n2. Jump into a solid wall,\\n\\\nthen jump again when you\\n\\\nhit the wall. You can\\n\\\nbounce to a higher level\\n\\\nusing this Wall Kick.\"))\n\nDEFINE_DIALOG(DIALOG_159, 1, 6, 30, 200, _(\"\\\n3. If you stop, press [Z]\\n\\\nto crouch, then jump, you\\n\\\ncan perform a Backward\\n\\\nSomersault. To do a Long\\n\\\nJump, run fast, press [Z],\\n\\\nthen jump.\"))\n\nDEFINE_DIALOG(DIALOG_160, 1, 4, 30, 200, _(\"\\\nPress [B] while running\\n\\\nfast to do a Body Slide\\n\\\nattack. To stand while\\n\\\nsliding, press [A] or [B].\"))\n\n#ifdef VERSION_EU\n#define KEEP_ON_PLAYING \"..\"\n#else\n#define KEEP_ON_PLAYING \"\\n\\\nWe want you to keep on\\n\\\nplaying, so we have a\\n\\\nlittle something for you.\\n\\\nWe hope that you like it!\\n\\\nEnjoy!!!\"\n#endif\n\nDEFINE_DIALOG(DIALOG_161, 1, 4, 30, 200, _(\"\\\nMario!!!\\n\\\nIt that really you???\\n\\\nIt has been so long since\\n\\\nour last adventure!\\n\\\nThey told me that I might\\n\\\nsee you if I waited here,\\n\\\nbut I'd just about given\\n\\\nup hope!\\n\\\nIs it true? Have you\\n\\\nreally beaten Bowser? And\\n\\\nrestored the Stars to the\\n\\\ncastle?\\n\\\nAnd saved the Princess?\\n\\\nI knew you could do it!\\n\\\nNow I have a very special\\n\\\nmessage for you.\\n\\\n『Thanks for playing Super\\n\\\nMario 64! This is the\\n\\\nend of the game, but not\\n\\\nthe end of the fun.\" \\\nKEEP_ON_PLAYING \"』\\n\\\n\\n\\\nThe Super Mario 64 Team\"))\n\nDEFINE_DIALOG(DIALOG_162, 1, 4, 30, 200, _(\"\\\nNo, no, no! Not you\\n\\\nagain! I'm in a great\\n\\\nhurry, can't you see?\\n\\\n\\n\\\nI've no time to squabble\\n\\\nover Stars. Here, have it.\\n\\\nI never meant to hide it\\n\\\nfrom you...\\n\\\nIt's just that I'm in such\\n\\\na rush. That's it, that's\\n\\\nall. Now, I must be off.\\n\\\nOwww! Let me go!\"))\n\nDEFINE_DIALOG(DIALOG_163, 1, 5, 30, 200, _(\"\\\nNoooo! You've really\\n\\\nbeaten me this time,\\n\\\nMario! I can't stand\\n\\\nlosing to you!\\n\\\n\\n\\\nMy troops...worthless!\\n\\\nThey've turned over all\\n\\\nthe Power Stars! What?!\\n\\\nThere are 120 in all???\\n\\\n\\n\\\nAmazing! There were some\\n\\\nin the castle that I\\n\\\nmissed??!!\\n\\\n\\n\\\n\\n\\\nNow I see peace\\n\\\nreturning to the world...\\n\\\nOooo! I really hate that!\\n\\\nI can't watch--\\n\\\nI'm outta here!\\n\\\nJust you wait until next\\n\\\ntime. Until then, keep\\n\\\nthat Control Stick\\n\\\nsmokin'!\\n\\\nBuwaa ha ha!\"))\n\nDEFINE_DIALOG(DIALOG_164, 1, 4, 30, 200, _(\"\\\nMario! What's up, pal?\\n\\\nI haven't been on the\\n\\\nslide lately, so I'm out\\n\\\nof shape.\\n\\\nStill, I'm always up for a\\n\\\ngood race, especially\\n\\\nagainst an old sleddin'\\n\\\nbuddy.\\n\\\nWhaddya say?\\n\\\nReady...set...\\n\\\n\\n\\\n//Go//// Don't Go\"))\n\nDEFINE_DIALOG(DIALOG_165, 1, 5, 30, 200, _(\"\\\nI take no responsibility\\n\\\nwhatsoever for those who\\n\\\nget dizzy and pass out\\n\\\nfrom running around\\n\\\nthis post.\"))\n\nDEFINE_DIALOG(DIALOG_166, 1, 4, 30, 200, _(\"\\\nI'll be back soon.\\n\\\nI'm out training now,\\n\\\nso come back later.\\n\\\n//--Koopa the Quick\"))\n\nDEFINE_DIALOG(DIALOG_167, 1, 4, 30, 200, _(\"\\\nPrincess Toadstool's\\n\\\ncastle is just ahead.\\n\\\n\\n\\\n\\n\\\nPress [A] to jump, [Z] to\\n\\\ncrouch, and [B] to punch,\\n\\\nread a sign, or grab\\n\\\nsomething.\\n\\\nPress [B] again to throw\\n\\\nsomething you're holding.\"))\n\nDEFINE_DIALOG(DIALOG_168, 1, 5, 30, 200, _(\"\\\nHey! Knock it off! That's\\n\\\nthe second time you've\\n\\\nnailed me. Now you're\\n\\\nasking for it, linguine\\n\\\nbreath!\"))\n\nDEFINE_DIALOG(DIALOG_169, 1, 4, 30, 200, _(\"\\\nKeep out!\\n\\\nThat means you!\\n\\\nArrgghh!\\n\\\n\\n\\\nAnyone entering this cave\\n\\\nwithout permission will\\n\\\nmeet certain disaster.\"))\n"
  },
  {
    "path": "tools/.gitignore",
    "content": "/aifc_decode\n/aiff_extract_codebook\n/armips\n/extract_data_for_mio\n/patch_elf_32bit\n/skyconv\n/tabledesign\n/textconv\n/vadpcm_enc\n!/ido5.3_compiler/lib/*.so\n!/ido5.3_compiler/usr/lib/*.so\n!/ido5.3_compiler/usr/lib/*.so.1\n!/ido5.3_compiler/**/*.o\n"
  },
  {
    "path": "tools/Makefile",
    "content": "include ../util.mk\n\nHOST_ENV := $(shell uname 2>/dev/null || echo Unknown)\nHOST_ENV := $(patsubst MINGW%,MinGW,$(HOST_ENV))\n\nCC           := gcc\nCXX          := g++\nCFLAGS       := -I . -I sm64tools -Wall -Wextra -Wno-unused-parameter -pedantic -O2 -s\nLDFLAGS      := -lm\nALL_PROGRAMS := armips textconv patch_elf_32bit aifc_decode aiff_extract_codebook vadpcm_enc tabledesign extract_data_for_mio skyconv\nLIBAUDIOFILE := audiofile/libaudiofile.a\n\n# Only build armips from tools if it is not found on the system\nifeq ($(call find-command,armips),)\n  BUILD_PROGRAMS := $(ALL_PROGRAMS)\nelse\n  BUILD_PROGRAMS := $(filter-out armips,$(ALL_PROGRAMS))\nendif\n\ndefault: all\n\ntextconv_SOURCES := textconv.c utf8.c hashtable.c\n\npatch_elf_32bit_SOURCES := patch_elf_32bit.c\n\naifc_decode_SOURCES := aifc_decode.c\n\naiff_extract_codebook_SOURCES := aiff_extract_codebook.c\n\ntabledesign: $(LIBAUDIOFILE)\ntabledesign_SOURCES := sdk-tools/tabledesign/codebook.c sdk-tools/tabledesign/estimate.c sdk-tools/tabledesign/print.c sdk-tools/tabledesign/tabledesign.c\ntabledesign_CFLAGS  := -Iaudiofile -Wno-uninitialized\ntabledesign_LDFLAGS := -Laudiofile -laudiofile -lstdc++\n\nvadpcm_enc_SOURCES := sdk-tools/adpcm/vadpcm_enc.c sdk-tools/adpcm/vpredictor.c sdk-tools/adpcm/quant.c sdk-tools/adpcm/util.c sdk-tools/adpcm/vencode.c\nvadpcm_enc_CFLAGS  := -Wno-unused-result -Wno-uninitialized -Wno-sign-compare -Wno-absolute-value\n\nextract_data_for_mio_SOURCES := extract_data_for_mio.c\n\nskyconv_SOURCES := skyconv.c sm64tools/n64graphics.c sm64tools/utils.c\n\narmips: CC := $(CXX)\narmips_SOURCES := armips.cpp\narmips_CFLAGS  := -std=c++11 -fno-exceptions -fno-rtti -pipe\narmips_LDFLAGS := -pthread\nifeq ($(HOST_ENV),MinGW)\n  armips_LDFLAGS += -municode\nendif\n\nall-except-recomp: $(LIBAUDIOFILE) $(BUILD_PROGRAMS)\n\nall: all-except-recomp ido-static-recomp\n\nclean:\n\t$(RM) $(ALL_PROGRAMS)\n\t$(MAKE) -C audiofile clean\n\t$(MAKE) -C ido-static-recomp clean\n\ndefine COMPILE\n$(1): $($1_SOURCES)\n\t$$(CC) $(CFLAGS) $($1_CFLAGS) $$^ -o $$@ $($1_LDFLAGS) $(LDFLAGS)\nendef\n\nido-static-recomp:\n\t@$(MAKE) -C ido-static-recomp setup\n\t@$(MAKE) -C ido-static-recomp\n\n$(foreach p,$(BUILD_PROGRAMS),$(eval $(call COMPILE,$(p))))\n\n$(LIBAUDIOFILE):\n\t@$(MAKE) -C audiofile\n\n.PHONY: all all-except-recomp clean default ido-static-recomp\n"
  },
  {
    "path": "tools/aifc_decode.c",
    "content": "/**\n * Bruteforcing decoder for converting ADPCM-encoded AIFC into AIFF, in a way\n * that roundtrips with vadpcm_enc.\n */\n#include <unistd.h>\n#include <assert.h>\n#include <math.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdlib.h>\n#include <stdarg.h>\n\ntypedef signed char s8;\ntypedef short s16;\ntypedef int s32;\ntypedef unsigned char u8;\ntypedef unsigned short u16;\ntypedef unsigned int u32;\ntypedef unsigned long long u64;\ntypedef float f32;\n\n#define bswap16(x) __builtin_bswap16(x)\n#define bswap32(x) __builtin_bswap32(x)\n#define BSWAP16(x) x = __builtin_bswap16(x)\n#define BSWAP32(x) x = __builtin_bswap32(x)\n#define BSWAP16_MANY(x, n) for (s32 _i = 0; _i < n; _i++) BSWAP16((x)[_i])\n\n#define NORETURN __attribute__((noreturn))\n#define UNUSED __attribute__((unused))\n\ntypedef struct {\n    u32 ckID;\n    u32 ckSize;\n} ChunkHeader;\n\ntypedef struct {\n    u32 ckID;\n    u32 ckSize;\n    u32 formType;\n} Chunk;\n\ntypedef struct {\n    s16 numChannels;\n    u16 numFramesH;\n    u16 numFramesL;\n    s16 sampleSize;\n    s16 sampleRate[5]; // 80-bit float\n    u16 compressionTypeH;\n    u16 compressionTypeL;\n} CommonChunk;\n\ntypedef struct {\n    s16 MarkerID;\n    u16 positionH;\n    u16 positionL;\n} Marker;\n\ntypedef struct {\n    s16 playMode;\n    s16 beginLoop;\n    s16 endLoop;\n} Loop;\n\ntypedef struct {\n    s8 baseNote;\n    s8 detune;\n    s8 lowNote;\n    s8 highNote;\n    s8 lowVelocity;\n    s8 highVelocity;\n    s16 gain;\n    Loop sustainLoop;\n    Loop releaseLoop;\n} InstrumentChunk;\n\ntypedef struct {\n    s32 offset;\n    s32 blockSize;\n} SoundDataChunk;\n\ntypedef struct {\n    s16 version;\n    s16 order;\n    s16 nEntries;\n} CodeChunk;\n\ntypedef struct\n{\n    u32 start;\n    u32 end;\n    u32 count;\n    s16 state[16];\n} ALADPCMloop;\n\n\nstatic char usage[] = \"input.aifc output.aiff\";\nstatic const char *progname, *infilename;\n\n#define checked_fread(a, b, c, d) if (fread(a, b, c, d) != c) fail_parse(\"error parsing file\")\n\nNORETURN\nvoid fail_parse(const char *fmt, ...)\n{\n    char *formatted = NULL;\n    va_list ap;\n    va_start(ap, fmt);\n    int size = vsnprintf(NULL, 0, fmt, ap);\n    va_end(ap);\n    if (size >= 0) {\n        size++;\n        formatted = malloc(size);\n        if (formatted != NULL) {\n            va_start(ap, fmt);\n            size = vsnprintf(formatted, size, fmt, ap);\n            va_end(ap);\n            if (size < 0) {\n                free(formatted);\n                formatted = NULL;\n            }\n        }\n    }\n\n    if (formatted != NULL) {\n        fprintf(stderr, \"%s: %s [%s]\\n\", progname, formatted, infilename);\n        free(formatted);\n    }\n    exit(1);\n}\n\ns32 myrand()\n{\n    static u64 state = 1619236481962341ULL;\n    state *= 3123692312231ULL;\n    state++;\n    return state >> 33;\n}\n\ns16 qsample(s32 x, s32 scale)\n{\n    // Compute x / 2^scale rounded to the nearest integer, breaking ties towards zero.\n    if (scale == 0) return x;\n    return (x + (1 << (scale - 1)) - (x > 0)) >> scale;\n}\n\ns16 clamp_to_s16(s32 x)\n{\n    if (x < -0x8000) return -0x8000;\n    if (x > 0x7fff) return 0x7fff;\n    return (s16) x;\n}\n\ns32 toi4(s32 x)\n{\n    if (x >= 8) return x - 16;\n    return x;\n}\n\ns32 readaifccodebook(FILE *fhandle, s32 ****table, s16 *order, s16 *npredictors)\n{\n    checked_fread(order, sizeof(s16), 1, fhandle);\n    BSWAP16(*order);\n    checked_fread(npredictors, sizeof(s16), 1, fhandle);\n    BSWAP16(*npredictors);\n    *table = malloc(*npredictors * sizeof(s32 **));\n    for (s32 i = 0; i < *npredictors; i++) {\n        (*table)[i] = malloc(8 * sizeof(s32 *));\n        for (s32 j = 0; j < 8; j++) {\n            (*table)[i][j] = malloc((*order + 8) * sizeof(s32));\n        }\n    }\n\n    for (s32 i = 0; i < *npredictors; i++) {\n        s32 **table_entry = (*table)[i];\n        for (s32 j = 0; j < *order; j++) {\n            for (s32 k = 0; k < 8; k++) {\n                s16 ts;\n                checked_fread(&ts, sizeof(s16), 1, fhandle);\n                BSWAP16(ts);\n                table_entry[k][j] = ts;\n            }\n        }\n\n        for (s32 k = 1; k < 8; k++) {\n            table_entry[k][*order] = table_entry[k - 1][*order - 1];\n        }\n\n        table_entry[0][*order] = 1 << 11;\n\n        for (s32 k = 1; k < 8; k++) {\n            s32 j = 0;\n            for (; j < k; j++) {\n                table_entry[j][k + *order] = 0;\n            }\n\n            for (; j < 8; j++) {\n                table_entry[j][k + *order] = table_entry[j - k][*order];\n            }\n        }\n    }\n    return 0;\n}\n\nALADPCMloop *readlooppoints(FILE *ifile, s16 *nloops)\n{\n    checked_fread(nloops, sizeof(s16), 1, ifile);\n    BSWAP16(*nloops);\n    ALADPCMloop *al = malloc(*nloops * sizeof(ALADPCMloop));\n    for (s32 i = 0; i < *nloops; i++) {\n        checked_fread(&al[i], sizeof(ALADPCMloop), 1, ifile);\n        BSWAP32(al[i].start);\n        BSWAP32(al[i].end);\n        BSWAP32(al[i].count);\n        BSWAP16_MANY(al[i].state, 16);\n    }\n    return al;\n}\n\ns32 inner_product(s32 length, s32 *v1, s32 *v2)\n{\n    s32 out = 0;\n    for (s32 i = 0; i < length; i++) {\n        out += v1[i] * v2[i];\n    }\n\n    // Compute \"out / 2^11\", rounded down.\n    s32 dout = out / (1 << 11);\n    s32 fiout = dout * (1 << 11);\n    return dout - (out - fiout < 0);\n}\n\nvoid my_decodeframe(u8 *frame, s32 *state, s32 order, s32 ***coefTable)\n{\n    s32 ix[16];\n\n    u8 header = frame[0];\n    s32 scale = 1 << (header >> 4);\n    s32 optimalp = header & 0xf;\n\n    for (s32 i = 0; i < 16; i += 2) {\n        u8 c = frame[1 + i/2];\n        ix[i] = c >> 4;\n        ix[i + 1] = c & 0xf;\n    }\n\n    for (s32 i = 0; i < 16; i++) {\n        if (ix[i] >= 8) ix[i] -= 16;\n        ix[i] *= scale;\n    }\n\n    for (s32 j = 0; j < 2; j++) {\n        s32 in_vec[16];\n        if (j == 0) {\n            for (s32 i = 0; i < order; i++) {\n                in_vec[i] = state[16 - order + i];\n            }\n        } else {\n            for (s32 i = 0; i < order; i++) {\n                in_vec[i] = state[8 - order + i];\n            }\n        }\n\n        for (s32 i = 0; i < 8; i++) {\n            s32 ind = j * 8 + i;\n            in_vec[order + i] = ix[ind];\n            state[ind] = inner_product(order + i, coefTable[optimalp][i], in_vec) + ix[ind];\n        }\n    }\n}\n\nvoid my_encodeframe(u8 *out, s16 *inBuffer, s32 *state, s32 ***coefTable, s32 order, s32 npredictors)\n{\n    s16 ix[16];\n    s32 prediction[16];\n    s32 inVector[16];\n    s32 saveState[16];\n    s32 optimalp = 0;\n    s32 scale;\n    s32 ie[16];\n    s32 e[16];\n    f32 min = 1e30;\n\n    for (s32 k = 0; k < npredictors; k++) {\n        for (s32 j = 0; j < 2; j++) {\n            for (s32 i = 0; i < order; i++) {\n                inVector[i] = (j == 0 ? state[16 - order + i] : inBuffer[8 - order + i]);\n            }\n\n            for (s32 i = 0; i < 8; i++) {\n                prediction[j * 8 + i] = inner_product(order + i, coefTable[k][i], inVector);\n                e[j * 8 + i] = inVector[i + order] = inBuffer[j * 8 + i] - prediction[j * 8 + i];\n            }\n        }\n\n        f32 se = 0.0f;\n        for (s32 j = 0; j < 16; j++) {\n            se += (f32) e[j] * (f32) e[j];\n        }\n\n        if (se < min) {\n            min = se;\n            optimalp = k;\n        }\n    }\n\n    for (s32 j = 0; j < 2; j++) {\n        for (s32 i = 0; i < order; i++) {\n            inVector[i] = (j == 0 ? state[16 - order + i] : inBuffer[8 - order + i]);\n        }\n\n        for (s32 i = 0; i < 8; i++) {\n            prediction[j * 8 + i] = inner_product(order + i, coefTable[optimalp][i], inVector);\n            e[j * 8 + i] = inVector[i + order] = inBuffer[j * 8 + i] - prediction[j * 8 + i];\n        }\n    }\n\n    for (s32 i = 0; i < 16; i++) {\n        ie[i] = clamp_to_s16(e[i]);\n    }\n\n    s32 max = 0;\n    for (s32 i = 0; i < 16; i++) {\n        if (abs(ie[i]) > abs(max)) {\n            max = ie[i];\n        }\n    }\n\n    for (scale = 0; scale <= 12; scale++) {\n        if (max <= 7 && max >= -8) break;\n        max /= 2;\n    }\n\n    for (s32 i = 0; i < 16; i++) {\n        saveState[i] = state[i];\n    }\n\n    for (s32 nIter = 0, again = 1; nIter < 2 && again; nIter++) {\n        again = 0;\n        if (nIter == 1) scale++;\n        if (scale > 12) {\n            scale = 12;\n        }\n\n        for (s32 j = 0; j < 2; j++) {\n            s32 base = j * 8;\n            for (s32 i = 0; i < order; i++) {\n                inVector[i] = (j == 0 ?\n                        saveState[16 - order + i] : state[8 - order + i]);\n            }\n\n            for (s32 i = 0; i < 8; i++) {\n                prediction[base + i] = inner_product(order + i, coefTable[optimalp][i], inVector);\n                s32 se = inBuffer[base + i] - prediction[base + i];\n                ix[base + i] = qsample(se, scale);\n                s32 cV = clamp_to_s16(ix[base + i]) - ix[base + i];\n                if (cV > 1 || cV < -1) again = 1;\n                ix[base + i] += cV;\n                inVector[i + order] = ix[base + i] * (1 << scale);\n                state[base + i] = prediction[base + i] + inVector[i + order];\n            }\n        }\n    }\n\n    u8 header = (scale << 4) | (optimalp & 0xf);\n    out[0] = header;\n    for (s32 i = 0; i < 16; i += 2) {\n        u8 c = ((ix[i] & 0xf) << 4) | (ix[i + 1] & 0xf);\n        out[1 + i/2] = c;\n    }\n}\n\nvoid permute(s16 *out, s32 *in, s32 scale)\n{\n    for (s32 i = 0; i < 16; i++) {\n        out[i] = clamp_to_s16(in[i] - scale / 2 + myrand() % (scale + 1));\n    }\n}\n\nvoid write_header(FILE *ofile, const char *id, s32 size)\n{\n    fwrite(id, 4, 1, ofile);\n    BSWAP32(size);\n    fwrite(&size, sizeof(s32), 1, ofile);\n}\n\nint main(int argc, char **argv)\n{\n    s16 order = -1;\n    s16 nloops = 0;\n    ALADPCMloop *aloops = NULL;\n    s16 npredictors = -1;\n    s32 ***coefTable = NULL;\n    s32 state[16];\n    s32 soundPointer = -1;\n    s32 currPos = 0;\n    s32 nSamples = 0;\n    Chunk FormChunk;\n    ChunkHeader Header;\n    CommonChunk CommChunk;\n    InstrumentChunk InstChunk;\n    SoundDataChunk SndDChunk;\n    FILE *ifile;\n    FILE *ofile;\n    progname = argv[0];\n\n    if (argc < 3) {\n        fprintf(stderr, \"%s %s\\n\", progname, usage);\n        exit(1);\n    }\n\n    infilename = argv[1];\n\n    if ((ifile = fopen(infilename, \"rb\")) == NULL) {\n        fail_parse(\"AIFF-C file could not be opened\");\n        exit(1);\n    }\n\n    if ((ofile = fopen(argv[2], \"wb\")) == NULL) {\n        fprintf(stderr, \"%s: output file could not be opened [%s]\\n\", progname, argv[2]);\n        exit(1);\n    }\n\n    memset(&InstChunk, 0, sizeof(InstChunk));\n\n    checked_fread(&FormChunk, sizeof(FormChunk), 1, ifile);\n    BSWAP32(FormChunk.ckID);\n    BSWAP32(FormChunk.formType);\n    if ((FormChunk.ckID != 0x464f524d) || (FormChunk.formType != 0x41494643)) { // FORM, AIFC\n        fail_parse(\"not an AIFF-C file\");\n    }\n\n    for (;;) {\n        s32 num = fread(&Header, sizeof(Header), 1, ifile);\n        u32 ts;\n        if (num <= 0) break;\n        BSWAP32(Header.ckID);\n        BSWAP32(Header.ckSize);\n\n        Header.ckSize++;\n        Header.ckSize &= ~1;\n        s32 offset = ftell(ifile);\n\n        switch (Header.ckID) {\n        case 0x434f4d4d: // COMM\n            checked_fread(&CommChunk, sizeof(CommChunk), 1, ifile);\n            BSWAP16(CommChunk.numChannels);\n            BSWAP16(CommChunk.numFramesH);\n            BSWAP16(CommChunk.numFramesL);\n            BSWAP16(CommChunk.sampleSize);\n            BSWAP16(CommChunk.compressionTypeH);\n            BSWAP16(CommChunk.compressionTypeL);\n            s32 cType = (CommChunk.compressionTypeH << 16) + CommChunk.compressionTypeL;\n            if (cType != 0x56415043) { // VAPC\n                fail_parse(\"file is of the wrong compression type\");\n            }\n            if (CommChunk.numChannels != 1) {\n                fail_parse(\"file contains %d channels, only 1 channel supported\", CommChunk.numChannels);\n            }\n            if (CommChunk.sampleSize != 16) {\n                fail_parse(\"file contains %d bit samples, only 16 bit samples supported\", CommChunk.sampleSize);\n            }\n\n            nSamples = (CommChunk.numFramesH << 16) + CommChunk.numFramesL;\n\n            // Allow broken input lengths\n            if (nSamples % 16) {\n                nSamples--;\n            }\n\n            if (nSamples % 16 != 0) {\n                fail_parse(\"number of chunks must be a multiple of 16, found %d\", nSamples);\n            }\n            break;\n\n        case 0x53534e44: // SSND\n            checked_fread(&SndDChunk, sizeof(SndDChunk), 1, ifile);\n            BSWAP32(SndDChunk.offset);\n            BSWAP32(SndDChunk.blockSize);\n            assert(SndDChunk.offset == 0);\n            assert(SndDChunk.blockSize == 0);\n            soundPointer = ftell(ifile);\n            break;\n\n        case 0x4150504c: // APPL\n            checked_fread(&ts, sizeof(u32), 1, ifile);\n            BSWAP32(ts);\n            if (ts == 0x73746f63) { // stoc\n                u8 len;\n                checked_fread(&len, 1, 1, ifile);\n                if (len == 11) {\n                    char ChunkName[12];\n                    s16 version;\n                    checked_fread(ChunkName, 11, 1, ifile);\n                    ChunkName[11] = '\\0';\n                    if (strcmp(\"VADPCMCODES\", ChunkName) == 0) {\n                        checked_fread(&version, sizeof(s16), 1, ifile);\n                        BSWAP16(version);\n                        if (version != 1) {\n                            fail_parse(\"Unknown codebook chunk version\");\n                        }\n                        readaifccodebook(ifile, &coefTable, &order, &npredictors);\n                    }\n                    else if (strcmp(\"VADPCMLOOPS\", ChunkName) == 0) {\n                        checked_fread(&version, sizeof(s16), 1, ifile);\n                        BSWAP16(version);\n                        if (version != 1) {\n                            fail_parse(\"Unknown loop chunk version\");\n                        }\n                        aloops = readlooppoints(ifile, &nloops);\n                        if (nloops != 1) {\n                            fail_parse(\"Only a single loop supported\");\n                        }\n                    }\n                }\n            }\n            break;\n        }\n\n        fseek(ifile, offset + Header.ckSize, SEEK_SET);\n    }\n\n    if (coefTable == NULL) {\n        fail_parse(\"Codebook missing from bitstream\");\n    }\n\n    for (s32 i = 0; i < order; i++) {\n        state[15 - i] = 0;\n    }\n\n    u32 outputBytes = nSamples * sizeof(s16);\n    u8 *outputBuf = malloc(outputBytes);\n\n    fseek(ifile, soundPointer, SEEK_SET);\n    while (currPos < nSamples) {\n        u8 input[9];\n        u8 encoded[9];\n        s32 lastState[16];\n        s32 decoded[16];\n        s16 guess[16];\n        s16 origGuess[16];\n\n        memcpy(lastState, state, sizeof(lastState));\n        checked_fread(input, 9, 1, ifile);\n\n        // Decode for real\n        my_decodeframe(input, state, order, coefTable);\n        memcpy(decoded, state, sizeof(lastState));\n\n        // Create a guess from that, by clamping to 16 bits\n        for (s32 i = 0; i < 16; i++) {\n            origGuess[i] = clamp_to_s16(state[i]);\n        }\n\n        // Encode the guess\n        memcpy(state, lastState, sizeof(lastState));\n        memcpy(guess, origGuess, sizeof(guess));\n        my_encodeframe(encoded, guess, state, coefTable, order, npredictors);\n\n        // If it doesn't match, randomly round numbers until it does.\n        if (memcmp(input, encoded, 9) != 0) {\n            s32 scale = 1 << (input[0] >> 4);\n            do {\n                permute(guess, decoded, scale);\n                memcpy(state, lastState, sizeof(lastState));\n                my_encodeframe(encoded, guess, state, coefTable, order, npredictors);\n            } while (memcmp(input, encoded, 9) != 0);\n\n            // Bring the matching closer to the original decode (not strictly\n            // necessary, but it will move us closer to the target on average).\n            for (s32 failures = 0; failures < 50; failures++) {\n                s32 ind = myrand() % 16;\n                s32 old = guess[ind];\n                if (old == origGuess[ind]) continue;\n                guess[ind] = origGuess[ind];\n                if (myrand() % 2) guess[ind] += (old - origGuess[ind]) / 2;\n                memcpy(state, lastState, sizeof(lastState));\n                my_encodeframe(encoded, guess, state, coefTable, order, npredictors);\n                if (memcmp(input, encoded, 9) == 0) {\n                    failures = -1;\n                }\n                else {\n                    guess[ind] = old;\n                }\n            }\n        }\n\n        memcpy(state, decoded, sizeof(lastState));\n        BSWAP16_MANY(guess, 16);\n        memcpy(outputBuf + currPos * 2, guess, sizeof(guess));\n        currPos += 16;\n    }\n\n    // Write an incomplete file header. We'll fill in the size later.\n    fwrite(\"FORM\\0\\0\\0\\0AIFF\", 12, 1, ofile);\n\n    // Subtract 4 from the COMM size to skip the compression field.\n    write_header(ofile, \"COMM\", sizeof(CommonChunk) - 4);\n    CommChunk.numFramesH = nSamples >> 16;\n    CommChunk.numFramesL = nSamples & 0xffff;\n    BSWAP16(CommChunk.numChannels);\n    BSWAP16(CommChunk.numFramesH);\n    BSWAP16(CommChunk.numFramesL);\n    BSWAP16(CommChunk.sampleSize);\n    fwrite(&CommChunk, sizeof(CommonChunk) - 4, 1, ofile);\n\n    if (nloops > 0) {\n        s32 startPos = aloops[0].start, endPos = aloops[0].end;\n        const char *markerNames[2] = {\"start\", \"end\"};\n        Marker markers[2] = {\n            {1, startPos >> 16, startPos & 0xffff},\n            {2, endPos >> 16, endPos & 0xffff}\n        };\n        write_header(ofile, \"MARK\", 2 + 2 * sizeof(Marker) + 1 + 5 + 1 + 3);\n        s16 numMarkers = bswap16(2);\n        fwrite(&numMarkers, sizeof(s16), 1, ofile);\n        for (s32 i = 0; i < 2; i++) {\n            u8 len = (u8) strlen(markerNames[i]);\n            BSWAP16(markers[i].MarkerID);\n            BSWAP16(markers[i].positionH);\n            BSWAP16(markers[i].positionL);\n            fwrite(&markers[i], sizeof(Marker), 1, ofile);\n            fwrite(&len, 1, 1, ofile);\n            fwrite(markerNames[i], len, 1, ofile);\n        }\n\n        write_header(ofile, \"INST\", sizeof(InstrumentChunk));\n        InstChunk.sustainLoop.playMode = bswap16(1);\n        InstChunk.sustainLoop.beginLoop = bswap16(1);\n        InstChunk.sustainLoop.endLoop = bswap16(2);\n        InstChunk.releaseLoop.playMode = 0;\n        InstChunk.releaseLoop.beginLoop = 0;\n        InstChunk.releaseLoop.endLoop = 0;\n        fwrite(&InstChunk, sizeof(InstrumentChunk), 1, ofile);\n    }\n\n    // Save the coefficient table for use when encoding. Ideally this wouldn't\n    // be needed and \"tabledesign -s 1\" would generate the right table, but in\n    // practice it's difficult to adjust samples to make that happen.\n    write_header(ofile, \"APPL\", 4 + 12 + sizeof(CodeChunk) + npredictors * order * 8 * 2);\n    fwrite(\"stoc\", 4, 1, ofile);\n    CodeChunk cChunk;\n    cChunk.version = bswap16(1);\n    cChunk.order = bswap16(order);\n    cChunk.nEntries = bswap16(npredictors);\n    fwrite(\"\\x0bVADPCMCODES\", 12, 1, ofile);\n    fwrite(&cChunk, sizeof(CodeChunk), 1, ofile);\n    for (s32 i = 0; i < npredictors; i++) {\n        for (s32 j = 0; j < order; j++) {\n            for (s32 k = 0; k < 8; k++) {\n                s16 ts = bswap16(coefTable[i][k][j]);\n                fwrite(&ts, sizeof(s16), 1, ofile);\n            }\n        }\n    }\n\n    write_header(ofile, \"SSND\", outputBytes + 8);\n    SndDChunk.offset = 0;\n    SndDChunk.blockSize = 0;\n    fwrite(&SndDChunk, sizeof(SoundDataChunk), 1, ofile);\n    fwrite(outputBuf, outputBytes, 1, ofile);\n\n    // Fix the size in the header\n    s32 fileSize = bswap32(ftell(ofile) - 8);\n    fseek(ofile, 4, SEEK_SET);\n    fwrite(&fileSize, 4, 1, ofile);\n\n    fclose(ifile);\n    fclose(ofile);\n    return 0;\n}\n"
  },
  {
    "path": "tools/aiff_extract_codebook.c",
    "content": "/**\n * Create an ADPCM codebook either by extracting it from an AIFF section, or\n * by executing tabledesign.\n */\n#include <unistd.h>\n#include <math.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdlib.h>\n#include <stdarg.h>\n\ntypedef short s16;\ntypedef int s32;\ntypedef unsigned char u8;\ntypedef unsigned int u32;\n\n#define BSWAP16(x) x = __builtin_bswap16(x)\n#define BSWAP32(x) x = __builtin_bswap32(x)\n\n#define NORETURN __attribute__((noreturn))\n#define UNUSED __attribute__((unused))\n\ntypedef struct\n{\n    u32 start;\n    u32 end;\n    u32 count;\n    s16 state[16];\n} ALADPCMloop;\n\nstatic const char usage[] = \"input.aiff\";\nstatic const char *progname, *infilename;\n\n#define checked_fread(a, b, c, d) if (fread(a, b, c, d) != c) fail_parse(\"error parsing file\")\n\nNORETURN\nvoid fail_parse(const char *fmt, ...)\n{\n    char *formatted = NULL;\n    va_list ap;\n    va_start(ap, fmt);\n    int size = vsnprintf(NULL, 0, fmt, ap);\n    va_end(ap);\n    if (size >= 0) {\n        size++;\n        formatted = malloc(size);\n        if (formatted != NULL) {\n            va_start(ap, fmt);\n            size = vsnprintf(formatted, size, fmt, ap);\n            va_end(ap);\n            if (size < 0) {\n                free(formatted);\n                formatted = NULL;\n            }\n        }\n    }\n\n    if (formatted != NULL) {\n        fprintf(stderr, \"%s: %s [%s]\\n\", progname, formatted, infilename);\n        free(formatted);\n    }\n    exit(1);\n}\n\ns32 readaifccodebook(FILE *fhandle, s32 ****table, s16 *order, s16 *npredictors)\n{\n    checked_fread(order, sizeof(s16), 1, fhandle);\n    BSWAP16(*order);\n    checked_fread(npredictors, sizeof(s16), 1, fhandle);\n    BSWAP16(*npredictors);\n    *table = malloc(*npredictors * sizeof(s32 **));\n    for (s32 i = 0; i < *npredictors; i++) {\n        (*table)[i] = malloc(8 * sizeof(s32 *));\n        for (s32 j = 0; j < 8; j++) {\n            (*table)[i][j] = malloc((*order + 8) * sizeof(s32));\n        }\n    }\n\n    for (s32 i = 0; i < *npredictors; i++) {\n        s32 **table_entry = (*table)[i];\n        for (s32 j = 0; j < *order; j++) {\n            for (s32 k = 0; k < 8; k++) {\n                s16 ts;\n                checked_fread(&ts, sizeof(s16), 1, fhandle);\n                BSWAP16(ts);\n                table_entry[k][j] = ts;\n            }\n        }\n\n        for (s32 k = 1; k < 8; k++) {\n            table_entry[k][*order] = table_entry[k - 1][*order - 1];\n        }\n\n        table_entry[0][*order] = 1 << 11;\n\n        for (s32 k = 1; k < 8; k++) {\n            s32 j = 0;\n            for (; j < k; j++) {\n                table_entry[j][k + *order] = 0;\n            }\n\n            for (; j < 8; j++) {\n                table_entry[j][k + *order] = table_entry[j - k][*order];\n            }\n        }\n    }\n    return 0;\n}\n\nint main(int argc, char **argv)\n{\n    s16 order = -1;\n    s16 npredictors = -1;\n    s32 ***coefTable = NULL;\n    FILE *ifile;\n    progname = argv[0];\n\n    if (argc < 2) {\n        fprintf(stderr, \"%s %s\\n\", progname, usage);\n        exit(1);\n    }\n\n    infilename = argv[1];\n\n    if ((ifile = fopen(infilename, \"rb\")) == NULL) {\n        fail_parse(\"AIFF file could not be opened\");\n        exit(1);\n    }\n\n    char buf[5] = {0};\n    checked_fread(buf, 4, 1, ifile);\n    if (strcmp(buf, \"FORM\") != 0) fail_parse(\"not an AIFF file\");\n    checked_fread(buf, 4, 1, ifile);\n    checked_fread(buf, 4, 1, ifile);\n    if (strcmp(buf, \"AIFF\") != 0 && strcmp(buf, \"AIFC\") != 0) {\n        fail_parse(\"not an AIFF file\");\n    }\n\n    for (;;) {\n        s32 size;\n        if (!fread(buf, 4, 1, ifile) || !fread(&size, 4, 1, ifile)) break;\n        BSWAP32(size);\n        s32 nextOffset = ftell(ifile) + ((size + 1) & ~1);\n\n        if (strcmp(buf, \"APPL\") == 0) {\n            checked_fread(buf, 4, 1, ifile);\n            if (strcmp(buf, \"stoc\") == 0) {\n                u8 len;\n                checked_fread(&len, 1, 1, ifile);\n                if (len == 11) {\n                    char chunkName[12];\n                    s16 version;\n                    checked_fread(chunkName, 11, 1, ifile);\n                    chunkName[11] = '\\0';\n                    if (strcmp(chunkName, \"VADPCMCODES\") == 0) {\n                        checked_fread(&version, sizeof(s16), 1, ifile);\n                        BSWAP16(version);\n                        if (version == 1) {\n                            readaifccodebook(ifile, &coefTable, &order, &npredictors);\n                        }\n                    }\n                }\n            }\n        }\n\n        fseek(ifile, nextOffset, SEEK_SET);\n    }\n    fclose(ifile);\n\n    if (coefTable == NULL) {\n        execl(\"./tools/tabledesign\", \"tabledesign\", \"-s\", \"1\", infilename, NULL);\n    } else {\n        printf(\"%d\\n%d\\n\", order, npredictors);\n        for (s32 i = 0; i < npredictors; i++) {\n            for (s32 j = 0; j < order; j++) {\n                for (s32 k = 0; k < 8; k++) {\n                    printf(\"% 5d \", coefTable[i][k][j]);\n                }\n                puts(\"\");\n            }\n        }\n    }\n    return 0;\n}\n"
  },
  {
    "path": "tools/apply_patch.sh",
    "content": "#!/bin/sh\n#\n# apply_patch.sh - Applies an enhancement patch\n#\n\nif [ \"$#\" -ne 1 ]\nthen\n    echo \"Usage: $0 patch_file\"\n    echo '    Applies a patch file to the current directory'\n    exit 1\nfi\n\nread -p \"Do you wish to apply the patch '$1'? [Y/N] \" response\ncase \"$response\" in\n    Y|y)\n\tpatch -p1 < \"$1\"\n\t;;\n    N|n)\n\techo 'Quit'\n\texit 1\n\t;;\n    *)\n\techo \"Invalid response '$response'.\"\n\texit 1\n\t;;\nesac\n\n"
  },
  {
    "path": "tools/armips.cpp",
    "content": "// armips assembler v0.11\n// https://github.com/Kingcom/armips/\n// To simplify compilation, all files have been concatenated into one.\n// MIPS only, ARM is not included.\n\n/*\nThe MIT License (MIT)\n\nCopyright (c) 2009-2020 Kingcom\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\n\n// file: stdafx.h\n\n\n#define _CRT_SECURE_NO_WARNINGS\n#undef __STRICT_ANSI__\n\n#if defined(__clang__)\n#if __has_feature(cxx_exceptions)\n#define ARMIPS_EXCEPTIONS 1\n#else\n#define ARMIPS_EXCEPTIONS 0\n#endif\n#elif defined(_MSC_VER) && defined(_CPPUNWIND)\n#define ARMIPS_EXCEPTIONS 1\n#elif defined(__EXCEPTIONS) || defined(__cpp_exceptions)\n#define ARMIPS_EXCEPTIONS 1\n#else\n#define ARMIPS_EXCEPTIONS 0\n#endif\n\n#include <cstdio>\n#include <vector>\n#include <cstdlib>\n#include <cstdarg>\n#include <cctype>\n#include <cstring>\n#include <cmath>\n#include <clocale>\n\n#include <sstream>\n#include <iomanip>\n#include <memory>\n\n#define formatString tfm::format\n\n// Custom make_unique so that C++14 support will not be necessary for compilation\ntemplate<typename T, typename... Args>\nstd::unique_ptr<T> make_unique(Args&&... args)\n{\n    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));\n}\n\n// file: ext/tinyformat/tinyformat.h\n// tinyformat.h\n// Copyright (C) 2011, Chris Foster [chris42f (at) gmail (d0t) com]\n//\n// Boost Software License - Version 1.0\n//\n// Permission is hereby granted, free of charge, to any person or organization\n// obtaining a copy of the software and accompanying documentation covered by\n// this license (the \"Software\") to use, reproduce, display, distribute,\n// execute, and transmit the Software, and to prepare derivative works of the\n// Software, and to permit third-parties to whom the Software is furnished to\n// do so, all subject to the following:\n//\n// The copyright notices in the Software and this entire statement, including\n// the above license grant, this restriction and the following disclaimer,\n// must be included in all copies of the Software, in whole or in part, and\n// all derivative works of the Software, unless such copies or derivative\n// works are solely in the form of machine-executable object code generated by\n// a source language processor.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT\n// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE\n// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,\n// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n// DEALINGS IN THE SOFTWARE.\n\n//------------------------------------------------------------------------------\n// Tinyformat: A minimal type safe printf replacement\n//\n// tinyformat.h is a type safe printf replacement library in a single C++\n// header file.  Design goals include:\n//\n// * Type safety and extensibility for user defined types.\n// * C99 printf() compatibility, to the extent possible using std::wostream\n// * Simplicity and minimalism.  A single header file to include and distribute\n//   with your projects.\n// * Augment rather than replace the standard stream formatting mechanism\n// * C++98 support, with optional C++11 niceties\n//\n//\n// Main interface example usage\n// ----------------------------\n//\n// To print a date to std::wcout:\n//\n//   std::wstring weekday = L\"Wednesday\";\n//   const wchar_t* month = L\"July\";\n//   size_t day = 27;\n//   long hour = 14;\n//   int min = 44;\n//\n//   tfm::printf(\"%s, %s %d, %.2d:%.2d\\n\", weekday, month, day, hour, min);\n//\n// The strange types here emphasize the type safety of the interface; it is\n// possible to print a std::wstring using the \"%s\" conversion, and a\n// size_t using the \"%d\" conversion.  A similar result could be achieved\n// using either of the tfm::format() functions.  One prints on a user provided\n// stream:\n//\n//   tfm::format(std::cerr, L\"%s, %s %d, %.2d:%.2d\\n\",\n//               weekday, month, day, hour, min);\n//\n// The other returns a std::wstring:\n//\n//   std::wstring date = tfm::format(L\"%s, %s %d, %.2d:%.2d\\n\",\n//                                  weekday, month, day, hour, min);\n//   std::wcout << date;\n//\n// These are the three primary interface functions.  There is also a\n// convenience function printfln() which appends a newline to the usual result\n// of printf() for super simple logging.\n//\n//\n// User defined format functions\n// -----------------------------\n//\n// Simulating variadic templates in C++98 is pretty painful since it requires\n// writing out the same function for each desired number of arguments.  To make\n// this bearable tinyformat comes with a set of macros which are used\n// internally to generate the API, but which may also be used in user code.\n//\n// The three macros TINYFORMAT_ARGTYPES(n), TINYFORMAT_VARARGS(n) and\n// TINYFORMAT_PASSARGS(n) will generate a list of n argument types,\n// type/name pairs and argument names respectively when called with an integer\n// n between 1 and 16.  We can use these to define a macro which generates the\n// desired user defined function with n arguments.  To generate all 16 user\n// defined function bodies, use the macro TINYFORMAT_FOREACH_ARGNUM.  For an\n// example, see the implementation of printf() at the end of the source file.\n//\n// Sometimes it's useful to be able to pass a list of format arguments through\n// to a non-template function.  The FormatList class is provided as a way to do\n// this by storing the argument list in a type-opaque way.  Continuing the\n// example from above, we construct a FormatList using makeFormatList():\n//\n//   FormatListRef formatList = tfm::makeFormatList(weekday, month, day, hour, min);\n//\n// The format list can now be passed into any non-template function and used\n// via a call to the vformat() function:\n//\n//   tfm::vformat(std::wcout, L\"%s, %s %d, %.2d:%.2d\\n\", formatList);\n//\n//\n// Additional API information\n// --------------------------\n//\n// Error handling: Define TINYFORMAT_ERROR to customize the error handling for\n// format strings which are unsupported or have the wrong number of format\n// specifiers (calls assert() by default).\n//\n// User defined types: Uses operator<< for user defined types by default.\n// Overload formatValue() for more control.\n\n\n#ifndef TINYFORMAT_H_INCLUDED\n#define TINYFORMAT_H_INCLUDED\n\nnamespace tinyformat {}\n//------------------------------------------------------------------------------\n// Config section.  Customize to your liking!\n\n// Namespace alias to encourage brevity\nnamespace tfm = tinyformat;\n\n// Error handling; calls assert() by default.\n// #define TINYFORMAT_ERROR(reasonString) your_error_handler(reasonString)\n\n// Define for C++11 variadic templates which make the code shorter & more\n// general.  If you don't define this, C++11 support is autodetected below.\n// #define TINYFORMAT_USE_VARIADIC_TEMPLATES\n\n\n//------------------------------------------------------------------------------\n// Implementation details.\n#include <algorithm>\n#include <iostream>\n#include <sstream>\n\n#ifndef TINYFORMAT_ASSERT\n#   include <cassert>\n#   define TINYFORMAT_ASSERT(cond) assert(cond)\n#endif\n\n#define TINYFORMAT_ALLOW_WCHAR_STRINGS\n#define TINYFORMAT_USE_VARIADIC_TEMPLATES\n\n#ifndef TINYFORMAT_ERROR\n#   include <cassert>\n#   define TINYFORMAT_ERROR(reason) assert(0 && reason)\n#endif\n\n#if !defined(TINYFORMAT_USE_VARIADIC_TEMPLATES) && !defined(TINYFORMAT_NO_VARIADIC_TEMPLATES)\n#   ifdef __GXX_EXPERIMENTAL_CXX0X__\n#       define TINYFORMAT_USE_VARIADIC_TEMPLATES\n#   endif\n#endif\n\n#if defined(__GLIBCXX__) && __GLIBCXX__ < 20080201\n//  std::showpos is broken on old libstdc++ as provided with OSX.  See\n//  http://gcc.gnu.org/ml/libstdc++/2007-11/msg00075.html\n#   define TINYFORMAT_OLD_LIBSTDCPLUSPLUS_WORKAROUND\n#endif\n\n#ifdef __APPLE__\n// Workaround OSX linker warning: xcode uses different default symbol\n// visibilities for static libs vs executables (see issue #25)\n#   define TINYFORMAT_HIDDEN __attribute__((visibility(\"hidden\")))\n#else\n#   define TINYFORMAT_HIDDEN\n#endif\n\nnamespace tinyformat {\n\n//------------------------------------------------------------------------------\nnamespace detail {\n\n// Test whether type T1 is convertible to type T2\ntemplate <typename T1, typename T2>\nstruct is_convertible\n{\n    private:\n        // two types of different size\n        struct fail { wchar_t dummy[2]; };\n        struct succeed { wchar_t dummy; };\n        // Try to convert a T1 to a T2 by plugging into tryConvert\n        static fail tryConvert(...);\n        static succeed tryConvert(const T2&);\n        static const T1& makeT1();\n    public:\n#       ifdef _MSC_VER\n        // Disable spurious loss of precision warnings in tryConvert(makeT1())\n#       pragma warning(push)\n#       pragma warning(disable:4244)\n#       pragma warning(disable:4267)\n#       endif\n        // Standard trick: the (...) version of tryConvert will be chosen from\n        // the overload set only if the version taking a T2 doesn't match.\n        // Then we compare the sizes of the return types to check which\n        // function matched.  Very neat, in a disgusting kind of way :)\n        static const bool value =\n            sizeof(tryConvert(makeT1())) == sizeof(succeed);\n#       ifdef _MSC_VER\n#       pragma warning(pop)\n#       endif\n};\n\n\n// Detect when a type is not a wchar_t string\ntemplate<typename T> struct is_wchar { typedef int tinyformat_wchar_is_not_supported; };\ntemplate<> struct is_wchar<wchar_t*> {};\ntemplate<> struct is_wchar<const wchar_t*> {};\ntemplate<int n> struct is_wchar<const wchar_t[n]> {};\ntemplate<int n> struct is_wchar<wchar_t[n]> {};\n\n\n// Format the value by casting to type fmtT.  This default implementation\n// should never be called.\ntemplate<typename T, typename fmtT, bool convertible = is_convertible<T, fmtT>::value>\nstruct formatValueAsType\n{\n    static void invoke(std::wostream& /*out*/, const T& /*value*/) { TINYFORMAT_ASSERT(0); }\n};\n// Specialized version for types that can actually be converted to fmtT, as\n// indicated by the \"convertible\" template parameter.\ntemplate<typename T, typename fmtT>\nstruct formatValueAsType<T,fmtT,true>\n{\n    static void invoke(std::wostream& out, const T& value)\n        { out << static_cast<fmtT>(value); }\n};\n\n#ifdef TINYFORMAT_OLD_LIBSTDCPLUSPLUS_WORKAROUND\ntemplate<typename T, bool convertible = is_convertible<T, int>::value>\nstruct formatZeroIntegerWorkaround\n{\n    static bool invoke(std::wostream& /**/, const T& /**/) { return false; }\n};\ntemplate<typename T>\nstruct formatZeroIntegerWorkaround<T,true>\n{\n    static bool invoke(std::wostream& out, const T& value)\n    {\n        if (static_cast<int>(value) == 0 && out.flags() & std::ios::showpos)\n        {\n            out << \"+0\";\n            return true;\n        }\n        return false;\n    }\n};\n#endif // TINYFORMAT_OLD_LIBSTDCPLUSPLUS_WORKAROUND\n\n// Convert an arbitrary type to integer.  The version with convertible=false\n// throws an error.\ntemplate<typename T, bool convertible = is_convertible<T,int>::value>\nstruct convertToInt\n{\n    static int invoke(const T& /*value*/)\n    {\n        TINYFORMAT_ERROR(\"tinyformat: Cannot convert from argument type to \"\n                         \"integer for use as variable width or precision\");\n        return 0;\n    }\n};\n// Specialization for convertToInt when conversion is possible\ntemplate<typename T>\nstruct convertToInt<T,true>\n{\n    static int invoke(const T& value) { return static_cast<int>(value); }\n};\n\n// Format at most ntrunc wchar_tacters to the given stream.\ntemplate<typename T>\ninline void formatTruncated(std::wostream& out, const T& value, int ntrunc)\n{\n    std::wostringstream tmp;\n    tmp << value;\n    std::wstring result = tmp.str();\n    out.write(result.c_str(), (std::min)(ntrunc, static_cast<int>(result.size())));\n}\n#define TINYFORMAT_DEFINE_FORMAT_TRUNCATED_CSTR(type)       \\\ninline void formatTruncated(std::wostream& out, type* value, int ntrunc) \\\n{                                                           \\\n    std::streamsize len = 0;                                \\\n    while(len < ntrunc && value[len] != 0)                  \\\n        ++len;                                              \\\n    out.write(value, len);                                  \\\n}\n// Overload for const wchar_t* and wchar_t*.  Could overload for signed & unsigned\n// wchar_t too, but these are technically unneeded for printf compatibility.\nTINYFORMAT_DEFINE_FORMAT_TRUNCATED_CSTR(const wchar_t)\nTINYFORMAT_DEFINE_FORMAT_TRUNCATED_CSTR(wchar_t)\n#undef TINYFORMAT_DEFINE_FORMAT_TRUNCATED_CSTR\n\n} // namespace detail\n\n\n//------------------------------------------------------------------------------\n// Variable formatting functions.  May be overridden for user-defined types if\n// desired.\n\n\n/// Format a value into a stream, delegating to operator<< by default.\n///\n/// Users may override this for their own types.  When this function is called,\n/// the stream flags will have been modified according to the format string.\n/// The format specification is provided in the range [fmtBegin, fmtEnd).  For\n/// truncating conversions, ntrunc is set to the desired maximum number of\n/// characters, for example \"%.7s\" calls formatValue with ntrunc = 7.\n///\n/// By default, formatValue() uses the usual stream insertion operator\n/// operator<< to format the type T, with special cases for the %c and %p\n/// conversions.\ntemplate<typename T>\ninline void formatValue(std::wostream& out, const wchar_t* /*fmtBegin*/,\n                        const wchar_t* fmtEnd, int ntrunc, const T& value)\n{\n#ifndef TINYFORMAT_ALLOW_WCHAR_STRINGS\n    // Since we don't support printing of wchar_t using \"%ls\", make it fail at\n    // compile time in preference to printing as a void* at runtime.\n    typedef typename detail::is_wchar<T>::tinyformat_wchar_is_not_supported DummyType;\n    (void) DummyType(); // avoid unused type warning with gcc-4.8\n#endif\n    // The mess here is to support the %c and %p conversions: if these\n    // conversions are active we try to convert the type to a wchar_t or const\n    // void* respectively and format that instead of the value itself.  For the\n    // %p conversion it's important to avoid dereferencing the pointer, which\n    // could otherwise lead to a crash when printing a dangling (const wchar_t*).\n    const bool canConvertToChar = detail::is_convertible<T,wchar_t>::value;\n    const bool canConvertToVoidPtr = detail::is_convertible<T, const void*>::value;\n    if(canConvertToChar && *(fmtEnd-1) == 'c')\n        detail::formatValueAsType<T, wchar_t>::invoke(out, value);\n    else if(canConvertToVoidPtr && *(fmtEnd-1) == 'p')\n        detail::formatValueAsType<T, const void*>::invoke(out, value);\n#ifdef TINYFORMAT_OLD_LIBSTDCPLUSPLUS_WORKAROUND\n    else if(detail::formatZeroIntegerWorkaround<T>::invoke(out, value)) /**/;\n#endif\n    else if(ntrunc >= 0)\n    {\n        // Take care not to overread C strings in truncating conversions like\n        // \"%.4s\" where at most 4 wchar_tacters may be read.\n        detail::formatTruncated(out, value, ntrunc);\n    }\n    else\n        out << value;\n}\n\n\n// Overloaded version for wchar_t types to support printing as an integer\n#define TINYFORMAT_DEFINE_FORMATVALUE_CHAR(wchar_tType)                  \\\ninline void formatValue(std::wostream& out, const wchar_t* /*fmtBegin*/,  \\\n                        const wchar_t* fmtEnd, int /**/, wchar_tType value) \\\n{                                                                     \\\n    switch(*(fmtEnd-1))                                               \\\n    {                                                                 \\\n        case 'u': case 'd': case 'i': case 'o': case 'X': case 'x':   \\\n            out << static_cast<int>(value); break;                    \\\n        default:                                                      \\\n            out << value;                   break;                    \\\n    }                                                                 \\\n}\n// per 3.9.1: char, signed char and unsigned char are all distinct types\nTINYFORMAT_DEFINE_FORMATVALUE_CHAR(char)\nTINYFORMAT_DEFINE_FORMATVALUE_CHAR(signed char)\nTINYFORMAT_DEFINE_FORMATVALUE_CHAR(unsigned char)\n#undef TINYFORMAT_DEFINE_FORMATVALUE_CHAR\n\n\n//------------------------------------------------------------------------------\n// Tools for emulating variadic templates in C++98.  The basic idea here is\n// stolen from the boost preprocessor metaprogramming library and cut down to\n// be just general enough for what we need.\n\n#define TINYFORMAT_ARGTYPES(n) TINYFORMAT_ARGTYPES_ ## n\n#define TINYFORMAT_VARARGS(n) TINYFORMAT_VARARGS_ ## n\n#define TINYFORMAT_PASSARGS(n) TINYFORMAT_PASSARGS_ ## n\n#define TINYFORMAT_PASSARGS_TAIL(n) TINYFORMAT_PASSARGS_TAIL_ ## n\n\n// To keep it as transparent as possible, the macros below have been generated\n// using python via the excellent cog.py code generation script.  This avoids\n// the need for a bunch of complex (but more general) preprocessor tricks as\n// used in boost.preprocessor.\n//\n// To rerun the code generation in place, use `cog.py -r tinyformat.h`\n// (see http://nedbatchelder.com/code/cog).  Alternatively you can just create\n// extra versions by hand.\n\n/*[[[cog\nmaxParams = 16\n\ndef makeCommaSepLists(lineTemplate, elemTemplate, startInd=1):\n    for j in range(startInd,maxParams+1):\n        list = ', '.join([elemTemplate % {'i':i} for i in range(startInd,j+1)])\n        cog.outl(lineTemplate % {'j':j, 'list':list})\n\nmakeCommaSepLists('#define TINYFORMAT_ARGTYPES_%(j)d %(list)s',\n                  'class T%(i)d')\n\ncog.outl()\nmakeCommaSepLists('#define TINYFORMAT_VARARGS_%(j)d %(list)s',\n                  'const T%(i)d& v%(i)d')\n\ncog.outl()\nmakeCommaSepLists('#define TINYFORMAT_PASSARGS_%(j)d %(list)s', 'v%(i)d')\n\ncog.outl()\ncog.outl('#define TINYFORMAT_PASSARGS_TAIL_1')\nmakeCommaSepLists('#define TINYFORMAT_PASSARGS_TAIL_%(j)d , %(list)s',\n                  'v%(i)d', startInd = 2)\n\ncog.outl()\ncog.outl('#define TINYFORMAT_FOREACH_ARGNUM(m) \\\\\\n    ' +\n         ' '.join(['m(%d)' % (j,) for j in range(1,maxParams+1)]))\n]]]*/\n#define TINYFORMAT_ARGTYPES_1 class T1\n#define TINYFORMAT_ARGTYPES_2 class T1, class T2\n#define TINYFORMAT_ARGTYPES_3 class T1, class T2, class T3\n#define TINYFORMAT_ARGTYPES_4 class T1, class T2, class T3, class T4\n#define TINYFORMAT_ARGTYPES_5 class T1, class T2, class T3, class T4, class T5\n#define TINYFORMAT_ARGTYPES_6 class T1, class T2, class T3, class T4, class T5, class T6\n#define TINYFORMAT_ARGTYPES_7 class T1, class T2, class T3, class T4, class T5, class T6, class T7\n#define TINYFORMAT_ARGTYPES_8 class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8\n#define TINYFORMAT_ARGTYPES_9 class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9\n#define TINYFORMAT_ARGTYPES_10 class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10\n#define TINYFORMAT_ARGTYPES_11 class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11\n#define TINYFORMAT_ARGTYPES_12 class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12\n#define TINYFORMAT_ARGTYPES_13 class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13\n#define TINYFORMAT_ARGTYPES_14 class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14\n#define TINYFORMAT_ARGTYPES_15 class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15\n#define TINYFORMAT_ARGTYPES_16 class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16\n\n#define TINYFORMAT_VARARGS_1 const T1& v1\n#define TINYFORMAT_VARARGS_2 const T1& v1, const T2& v2\n#define TINYFORMAT_VARARGS_3 const T1& v1, const T2& v2, const T3& v3\n#define TINYFORMAT_VARARGS_4 const T1& v1, const T2& v2, const T3& v3, const T4& v4\n#define TINYFORMAT_VARARGS_5 const T1& v1, const T2& v2, const T3& v3, const T4& v4, const T5& v5\n#define TINYFORMAT_VARARGS_6 const T1& v1, const T2& v2, const T3& v3, const T4& v4, const T5& v5, const T6& v6\n#define TINYFORMAT_VARARGS_7 const T1& v1, const T2& v2, const T3& v3, const T4& v4, const T5& v5, const T6& v6, const T7& v7\n#define TINYFORMAT_VARARGS_8 const T1& v1, const T2& v2, const T3& v3, const T4& v4, const T5& v5, const T6& v6, const T7& v7, const T8& v8\n#define TINYFORMAT_VARARGS_9 const T1& v1, const T2& v2, const T3& v3, const T4& v4, const T5& v5, const T6& v6, const T7& v7, const T8& v8, const T9& v9\n#define TINYFORMAT_VARARGS_10 const T1& v1, const T2& v2, const T3& v3, const T4& v4, const T5& v5, const T6& v6, const T7& v7, const T8& v8, const T9& v9, const T10& v10\n#define TINYFORMAT_VARARGS_11 const T1& v1, const T2& v2, const T3& v3, const T4& v4, const T5& v5, const T6& v6, const T7& v7, const T8& v8, const T9& v9, const T10& v10, const T11& v11\n#define TINYFORMAT_VARARGS_12 const T1& v1, const T2& v2, const T3& v3, const T4& v4, const T5& v5, const T6& v6, const T7& v7, const T8& v8, const T9& v9, const T10& v10, const T11& v11, const T12& v12\n#define TINYFORMAT_VARARGS_13 const T1& v1, const T2& v2, const T3& v3, const T4& v4, const T5& v5, const T6& v6, const T7& v7, const T8& v8, const T9& v9, const T10& v10, const T11& v11, const T12& v12, const T13& v13\n#define TINYFORMAT_VARARGS_14 const T1& v1, const T2& v2, const T3& v3, const T4& v4, const T5& v5, const T6& v6, const T7& v7, const T8& v8, const T9& v9, const T10& v10, const T11& v11, const T12& v12, const T13& v13, const T14& v14\n#define TINYFORMAT_VARARGS_15 const T1& v1, const T2& v2, const T3& v3, const T4& v4, const T5& v5, const T6& v6, const T7& v7, const T8& v8, const T9& v9, const T10& v10, const T11& v11, const T12& v12, const T13& v13, const T14& v14, const T15& v15\n#define TINYFORMAT_VARARGS_16 const T1& v1, const T2& v2, const T3& v3, const T4& v4, const T5& v5, const T6& v6, const T7& v7, const T8& v8, const T9& v9, const T10& v10, const T11& v11, const T12& v12, const T13& v13, const T14& v14, const T15& v15, const T16& v16\n\n#define TINYFORMAT_PASSARGS_1 v1\n#define TINYFORMAT_PASSARGS_2 v1, v2\n#define TINYFORMAT_PASSARGS_3 v1, v2, v3\n#define TINYFORMAT_PASSARGS_4 v1, v2, v3, v4\n#define TINYFORMAT_PASSARGS_5 v1, v2, v3, v4, v5\n#define TINYFORMAT_PASSARGS_6 v1, v2, v3, v4, v5, v6\n#define TINYFORMAT_PASSARGS_7 v1, v2, v3, v4, v5, v6, v7\n#define TINYFORMAT_PASSARGS_8 v1, v2, v3, v4, v5, v6, v7, v8\n#define TINYFORMAT_PASSARGS_9 v1, v2, v3, v4, v5, v6, v7, v8, v9\n#define TINYFORMAT_PASSARGS_10 v1, v2, v3, v4, v5, v6, v7, v8, v9, v10\n#define TINYFORMAT_PASSARGS_11 v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11\n#define TINYFORMAT_PASSARGS_12 v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12\n#define TINYFORMAT_PASSARGS_13 v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13\n#define TINYFORMAT_PASSARGS_14 v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14\n#define TINYFORMAT_PASSARGS_15 v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15\n#define TINYFORMAT_PASSARGS_16 v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16\n\n#define TINYFORMAT_PASSARGS_TAIL_1\n#define TINYFORMAT_PASSARGS_TAIL_2 , v2\n#define TINYFORMAT_PASSARGS_TAIL_3 , v2, v3\n#define TINYFORMAT_PASSARGS_TAIL_4 , v2, v3, v4\n#define TINYFORMAT_PASSARGS_TAIL_5 , v2, v3, v4, v5\n#define TINYFORMAT_PASSARGS_TAIL_6 , v2, v3, v4, v5, v6\n#define TINYFORMAT_PASSARGS_TAIL_7 , v2, v3, v4, v5, v6, v7\n#define TINYFORMAT_PASSARGS_TAIL_8 , v2, v3, v4, v5, v6, v7, v8\n#define TINYFORMAT_PASSARGS_TAIL_9 , v2, v3, v4, v5, v6, v7, v8, v9\n#define TINYFORMAT_PASSARGS_TAIL_10 , v2, v3, v4, v5, v6, v7, v8, v9, v10\n#define TINYFORMAT_PASSARGS_TAIL_11 , v2, v3, v4, v5, v6, v7, v8, v9, v10, v11\n#define TINYFORMAT_PASSARGS_TAIL_12 , v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12\n#define TINYFORMAT_PASSARGS_TAIL_13 , v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13\n#define TINYFORMAT_PASSARGS_TAIL_14 , v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14\n#define TINYFORMAT_PASSARGS_TAIL_15 , v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15\n#define TINYFORMAT_PASSARGS_TAIL_16 , v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16\n\n#define TINYFORMAT_FOREACH_ARGNUM(m) \\\n    m(1) m(2) m(3) m(4) m(5) m(6) m(7) m(8) m(9) m(10) m(11) m(12) m(13) m(14) m(15) m(16)\n//[[[end]]]\n\n\n\nnamespace detail {\n\n// Type-opaque holder for an argument to format(), with associated actions on\n// the type held as explicit function pointers.  This allows FormatArg's for\n// each argument to be allocated as a homogenous array inside FormatList\n// whereas a naive implementation based on inheritance does not.\nclass FormatArg\n{\n    public:\n        FormatArg()\n            : m_value(NULL),\n            m_formatImpl(NULL),\n            m_toIntImpl(NULL)\n        { }\n\n        template<typename T>\n        FormatArg(const T& value)\n            : m_value(static_cast<const void*>(&value)),\n            m_formatImpl(&formatImpl<T>),\n            m_toIntImpl(&toIntImpl<T>)\n        { }\n\n        void format(std::wostream& out, const wchar_t* fmtBegin,\n                    const wchar_t* fmtEnd, int ntrunc) const\n        {\n            TINYFORMAT_ASSERT(m_value);\n            TINYFORMAT_ASSERT(m_formatImpl);\n            m_formatImpl(out, fmtBegin, fmtEnd, ntrunc, m_value);\n        }\n\n        int toInt() const\n        {\n            TINYFORMAT_ASSERT(m_value);\n            TINYFORMAT_ASSERT(m_toIntImpl);\n            return m_toIntImpl(m_value);\n        }\n\n    private:\n        template<typename T>\n        TINYFORMAT_HIDDEN static void formatImpl(std::wostream& out, const wchar_t* fmtBegin,\n                        const wchar_t* fmtEnd, int ntrunc, const void* value)\n        {\n            formatValue(out, fmtBegin, fmtEnd, ntrunc, *static_cast<const T*>(value));\n        }\n\n        template<typename T>\n        TINYFORMAT_HIDDEN static int toIntImpl(const void* value)\n        {\n            return convertToInt<T>::invoke(*static_cast<const T*>(value));\n        }\n\n        const void* m_value;\n        void (*m_formatImpl)(std::wostream& out, const wchar_t* fmtBegin,\n                             const wchar_t* fmtEnd, int ntrunc, const void* value);\n        int (*m_toIntImpl)(const void* value);\n};\n\n\n// Parse and return an integer from the string c, as atoi()\n// On return, c is set to one past the end of the integer.\ninline int parseIntAndAdvance(const wchar_t*& c)\n{\n    int i = 0;\n    for(;*c >= '0' && *c <= '9'; ++c)\n        i = 10*i + (*c - '0');\n    return i;\n}\n\n// Print literal part of format string and return next format spec\n// position.\n//\n// Skips over any occurrences of '%%', printing a literal '%' to the\n// output.  The position of the first % character of the next\n// nontrivial format spec is returned, or the end of string.\ninline const wchar_t* printFormatStringLiteral(std::wostream& out, const wchar_t* fmt)\n{\n    const wchar_t* c = fmt;\n    for(;; ++c)\n    {\n        switch(*c)\n        {\n            case '\\0':\n                out.write(fmt, c - fmt);\n                return c;\n            case '%':\n                out.write(fmt, c - fmt);\n                if(*(c+1) != '%')\n                    return c;\n                // for \"%%\", tack trailing % onto next literal section.\n                fmt = ++c;\n                break;\n            default:\n                break;\n        }\n    }\n}\n\n\n// Parse a format string and set the stream state accordingly.\n//\n// The format mini-language recognized here is meant to be the one from C99,\n// with the form \"%[flags][width][.precision][length]type\".\n//\n// Formatting options which can't be natively represented using the ostream\n// state are returned in spacePadPositive (for space padded positive numbers)\n// and ntrunc (for truncating conversions).  argIndex is incremented if\n// necessary to pull out variable width and precision .  The function returns a\n// pointer to the wchar_tacter after the end of the current format spec.\ninline const wchar_t* streamStateFromFormat(std::wostream& out, bool& spacePadPositive,\n                                         int& ntrunc, const wchar_t* fmtStart,\n                                         const detail::FormatArg* formatters,\n                                         int& argIndex, int numFormatters)\n{\n    if(*fmtStart != '%')\n    {\n        TINYFORMAT_ERROR(\"tinyformat: Not enough conversion specifiers in format string\");\n        return fmtStart;\n    }\n    // Reset stream state to defaults.\n    out.width(0);\n    out.precision(6);\n    out.fill(' ');\n    // Reset most flags; ignore irrelevant unitbuf & skipws.\n    out.unsetf(std::ios::adjustfield | std::ios::basefield |\n               std::ios::floatfield | std::ios::showbase | std::ios::boolalpha |\n               std::ios::showpoint | std::ios::showpos | std::ios::uppercase);\n    bool precisionSet = false;\n    bool widthSet = false;\n    int widthExtra = 0;\n    const wchar_t* c = fmtStart + 1;\n    // 1) Parse flags\n    for(;; ++c)\n    {\n        switch(*c)\n        {\n            case '#':\n                out.setf(std::ios::showpoint | std::ios::showbase);\n                continue;\n            case '0':\n                // overridden by left alignment ('-' flag)\n                if(!(out.flags() & std::ios::left))\n                {\n                    // Use internal padding so that numeric values are\n                    // formatted correctly, eg -00010 rather than 000-10\n                    out.fill('0');\n                    out.setf(std::ios::internal, std::ios::adjustfield);\n                }\n                continue;\n            case '-':\n                out.fill(' ');\n                out.setf(std::ios::left, std::ios::adjustfield);\n                continue;\n            case ' ':\n                // overridden by show positive sign, '+' flag.\n                if(!(out.flags() & std::ios::showpos))\n                    spacePadPositive = true;\n                continue;\n            case '+':\n                out.setf(std::ios::showpos);\n                spacePadPositive = false;\n                widthExtra = 1;\n                continue;\n            default:\n                break;\n        }\n        break;\n    }\n    // 2) Parse width\n    if(*c >= '0' && *c <= '9')\n    {\n        widthSet = true;\n        out.width(parseIntAndAdvance(c));\n    }\n    if(*c == '*')\n    {\n        widthSet = true;\n        int width = 0;\n        if(argIndex < numFormatters)\n            width = formatters[argIndex++].toInt();\n        else\n            TINYFORMAT_ERROR(\"tinyformat: Not enough arguments to read variable width\");\n        if(width < 0)\n        {\n            // negative widths correspond to '-' flag set\n            out.fill(' ');\n            out.setf(std::ios::left, std::ios::adjustfield);\n            width = -width;\n        }\n        out.width(width);\n        ++c;\n    }\n    // 3) Parse precision\n    if(*c == '.')\n    {\n        ++c;\n        int precision = 0;\n        if(*c == '*')\n        {\n            ++c;\n            if(argIndex < numFormatters)\n                precision = formatters[argIndex++].toInt();\n            else\n                TINYFORMAT_ERROR(\"tinyformat: Not enough arguments to read variable precision\");\n        }\n        else\n        {\n            if(*c >= '0' && *c <= '9')\n                precision = parseIntAndAdvance(c);\n            else if(*c == '-') // negative precisions ignored, treated as zero.\n                parseIntAndAdvance(++c);\n        }\n        out.precision(precision);\n        precisionSet = true;\n    }\n    // 4) Ignore any C99 length modifier\n    while(*c == 'l' || *c == 'h' || *c == 'L' ||\n          *c == 'j' || *c == 'z' || *c == 't')\n        ++c;\n    // 5) We're up to the conversion specifier character.\n    // Set stream flags based on conversion specifier (thanks to the\n    // boost::format class for forging the way here).\n    bool intConversion = false;\n    switch(*c)\n    {\n        case 'u': case 'd': case 'i':\n            out.setf(std::ios::dec, std::ios::basefield);\n            intConversion = true;\n            break;\n        case 'o':\n            out.setf(std::ios::oct, std::ios::basefield);\n            intConversion = true;\n            break;\n        case 'X':\n            out.setf(std::ios::uppercase);\n            // Falls through\n        case 'x': case 'p':\n            out.setf(std::ios::hex, std::ios::basefield);\n            intConversion = true;\n            break;\n        case 'E':\n            out.setf(std::ios::uppercase);\n            // Falls through\n        case 'e':\n            out.setf(std::ios::scientific, std::ios::floatfield);\n            out.setf(std::ios::dec, std::ios::basefield);\n            break;\n        case 'F':\n            out.setf(std::ios::uppercase);\n            // Falls through\n        case 'f':\n            out.setf(std::ios::fixed, std::ios::floatfield);\n            break;\n        case 'G':\n            out.setf(std::ios::uppercase);\n            // Falls through\n        case 'g':\n            out.setf(std::ios::dec, std::ios::basefield);\n            // As in boost::format, let stream decide float format.\n            out.flags(out.flags() & ~std::ios::floatfield);\n            break;\n        case 'a': case 'A':\n            TINYFORMAT_ERROR(\"tinyformat: the %a and %A conversion specs \"\n                             \"are not supported\");\n            break;\n        case 'c':\n            // Handled as special case inside formatValue()\n            break;\n        case 's':\n            if(precisionSet)\n                ntrunc = static_cast<int>(out.precision());\n            // Make %s print booleans as \"true\" and \"false\"\n            out.setf(std::ios::boolalpha);\n            break;\n        case 'n':\n            // Not supported - will cause problems!\n            TINYFORMAT_ERROR(\"tinyformat: %n conversion spec not supported\");\n            break;\n        case '\\0':\n            TINYFORMAT_ERROR(\"tinyformat: Conversion spec incorrectly \"\n                             \"terminated by end of string\");\n            return c;\n        default:\n            break;\n    }\n    if(intConversion && precisionSet && !widthSet)\n    {\n        // \"precision\" for integers gives the minimum number of digits (to be\n        // padded with zeros on the left).  This isn't really supported by the\n        // iostreams, but we can approximately simulate it with the width if\n        // the width isn't otherwise used.\n        out.width(out.precision() + widthExtra);\n        out.setf(std::ios::internal, std::ios::adjustfield);\n        out.fill('0');\n    }\n    return c+1;\n}\n\n\n//------------------------------------------------------------------------------\ninline void formatImpl(std::wostream& out, const wchar_t* fmt,\n                       const detail::FormatArg* formatters,\n                       int numFormatters)\n{\n    // Saved stream state\n    std::streamsize origWidth = out.width();\n    std::streamsize origPrecision = out.precision();\n    std::ios::fmtflags origFlags = out.flags();\n    wchar_t origFill = out.fill();\n\n    for (int argIndex = 0; argIndex < numFormatters; ++argIndex)\n    {\n        // Parse the format string\n        fmt = printFormatStringLiteral(out, fmt);\n        bool spacePadPositive = false;\n        int ntrunc = -1;\n        const wchar_t* fmtEnd = streamStateFromFormat(out, spacePadPositive, ntrunc, fmt,\n                                                   formatters, argIndex, numFormatters);\n        if (argIndex >= numFormatters)\n        {\n            // Check args remain after reading any variable width/precision\n            TINYFORMAT_ERROR(\"tinyformat: Not enough format arguments\");\n            return;\n        }\n        const FormatArg& arg = formatters[argIndex];\n        // Format the arg into the stream.\n        if(!spacePadPositive)\n            arg.format(out, fmt, fmtEnd, ntrunc);\n        else\n        {\n            // The following is a special case with no direct correspondence\n            // between stream formatting and the printf() behaviour.  Simulate\n            // it crudely by formatting into a temporary string stream and\n            // munging the resulting string.\n            std::wostringstream tmpStream;\n            tmpStream.copyfmt(out);\n            tmpStream.setf(std::ios::showpos);\n            arg.format(tmpStream, fmt, fmtEnd, ntrunc);\n            std::wstring result = tmpStream.str(); // allocates... yuck.\n            for(size_t i = 0, iend = result.size(); i < iend; ++i)\n                if(result[i] == '+') result[i] = ' ';\n            out << result;\n        }\n        fmt = fmtEnd;\n    }\n\n    // Print remaining part of format string.\n    fmt = printFormatStringLiteral(out, fmt);\n    if(*fmt != '\\0')\n        TINYFORMAT_ERROR(\"tinyformat: Too many conversion specifiers in format string\");\n\n    // Restore stream state\n    out.width(origWidth);\n    out.precision(origPrecision);\n    out.flags(origFlags);\n    out.fill(origFill);\n}\n\n} // namespace detail\n\n\n/// List of template arguments format(), held in a type-opaque way.\n///\n/// A const reference to FormatList (typedef'd as FormatListRef) may be\n/// conveniently used to pass arguments to non-template functions: All type\n/// information has been stripped from the arguments, leaving just enough of a\n/// common interface to perform formatting as required.\nclass FormatList\n{\n    public:\n        FormatList(detail::FormatArg* formatters, int N)\n            : m_formatters(formatters), m_N(N) { }\n\n        friend void vformat(std::wostream& out, const wchar_t* fmt,\n                            const FormatList& list);\n\n    private:\n        const detail::FormatArg* m_formatters;\n        int m_N;\n};\n\n/// Reference to type-opaque format list for passing to vformat()\ntypedef const FormatList& FormatListRef;\n\n\nnamespace detail {\n\n// Format list subclass with fixed storage to avoid dynamic allocation\ntemplate<int N>\nclass FormatListN : public FormatList\n{\n    public:\n#ifdef TINYFORMAT_USE_VARIADIC_TEMPLATES\n        template<typename... Args>\n        FormatListN(const Args&... args)\n            : FormatList(&m_formatterStore[0], N),\n            m_formatterStore { FormatArg(args)... }\n        { static_assert(sizeof...(args) == N, \"Number of args must be N\"); }\n#else // C++98 version\n        void init(int) {}\n#       define TINYFORMAT_MAKE_FORMATLIST_CONSTRUCTOR(n)                \\\n                                                                        \\\n        template<TINYFORMAT_ARGTYPES(n)>                                \\\n        FormatListN(TINYFORMAT_VARARGS(n))                              \\\n            : FormatList(&m_formatterStore[0], n)                       \\\n        { TINYFORMAT_ASSERT(n == N); init(0, TINYFORMAT_PASSARGS(n)); } \\\n                                                                        \\\n        template<TINYFORMAT_ARGTYPES(n)>                                \\\n        void init(int i, TINYFORMAT_VARARGS(n))                         \\\n        {                                                               \\\n            m_formatterStore[i] = FormatArg(v1);                        \\\n            init(i+1 TINYFORMAT_PASSARGS_TAIL(n));                      \\\n        }\n\n        TINYFORMAT_FOREACH_ARGNUM(TINYFORMAT_MAKE_FORMATLIST_CONSTRUCTOR)\n#       undef TINYFORMAT_MAKE_FORMATLIST_CONSTRUCTOR\n#endif\n\n    private:\n        FormatArg m_formatterStore[N];\n};\n\n// Special 0-arg version - MSVC says zero-sized C array in struct is nonstandard\ntemplate<> class FormatListN<0> : public FormatList\n{\n    public: FormatListN() : FormatList(0, 0) {}\n};\n\n} // namespace detail\n\n\n//------------------------------------------------------------------------------\n// Primary API functions\n\n#ifdef TINYFORMAT_USE_VARIADIC_TEMPLATES\n\n/// Make type-agnostic format list from list of template arguments.\n///\n/// The exact return type of this function is an implementation detail and\n/// shouldn't be relied upon.  Instead it should be stored as a FormatListRef:\n///\n///   FormatListRef formatList = makeFormatList( /*...*/ );\ntemplate<typename... Args>\ndetail::FormatListN<sizeof...(Args)> makeFormatList(const Args&... args)\n{\n    return detail::FormatListN<sizeof...(args)>(args...);\n}\n\n#else // C++98 version\n\ninline detail::FormatListN<0> makeFormatList()\n{\n    return detail::FormatListN<0>();\n}\n#define TINYFORMAT_MAKE_MAKEFORMATLIST(n)                     \\\ntemplate<TINYFORMAT_ARGTYPES(n)>                              \\\ndetail::FormatListN<n> makeFormatList(TINYFORMAT_VARARGS(n))  \\\n{                                                             \\\n    return detail::FormatListN<n>(TINYFORMAT_PASSARGS(n));    \\\n}\nTINYFORMAT_FOREACH_ARGNUM(TINYFORMAT_MAKE_MAKEFORMATLIST)\n#undef TINYFORMAT_MAKE_MAKEFORMATLIST\n\n#endif\n\n/// Format list of arguments to the stream according to the given format string.\n///\n/// The name vformat() is chosen for the semantic similarity to vprintf(): the\n/// list of format arguments is held in a single function argument.\ninline void vformat(std::wostream& out, const wchar_t* fmt, FormatListRef list)\n{\n    detail::formatImpl(out, fmt, list.m_formatters, list.m_N);\n}\n\n\n#ifdef TINYFORMAT_USE_VARIADIC_TEMPLATES\n\n/// Format list of arguments to the stream according to given format string.\ntemplate<typename... Args>\nvoid format(std::wostream& out, const wchar_t* fmt, const Args&... args)\n{\n    vformat(out, fmt, makeFormatList(args...));\n}\n\n/// Format list of arguments according to the given format string and return\n/// the result as a string.\ntemplate<typename... Args>\nstd::wstring format(const wchar_t* fmt, const Args&... args)\n{\n    std::wostringstream oss;\n    format(oss, fmt, args...);\n    return oss.str();\n}\n\n/// Format list of arguments to std::wcout, according to the given format string\ntemplate<typename... Args>\nvoid printf(const wchar_t* fmt, const Args&... args)\n{\n    format(std::wcout, fmt, args...);\n}\n\ntemplate<typename... Args>\nvoid printfln(const wchar_t* fmt, const Args&... args)\n{\n    format(std::wcout, fmt, args...);\n    std::wcout << '\\n';\n}\n\n\n#else // C++98 version\n\ninline void format(std::wostream& out, const wchar_t* fmt)\n{\n    vformat(out, fmt, makeFormatList());\n}\n\ninline std::wstring format(const wchar_t* fmt)\n{\n    std::wostringstream oss;\n    format(oss, fmt);\n    return oss.str();\n}\n\ninline void printf(const wchar_t* fmt)\n{\n    format(std::wcout, fmt);\n}\n\ninline void printfln(const wchar_t* fmt)\n{\n    format(std::wcout, fmt);\n    std::wcout << '\\n';\n}\n\n#define TINYFORMAT_MAKE_FORMAT_FUNCS(n)                                   \\\n                                                                          \\\ntemplate<TINYFORMAT_ARGTYPES(n)>                                          \\\nvoid format(std::wostream& out, const wchar_t* fmt, TINYFORMAT_VARARGS(n))    \\\n{                                                                         \\\n    vformat(out, fmt, makeFormatList(TINYFORMAT_PASSARGS(n)));            \\\n}                                                                         \\\n                                                                          \\\ntemplate<TINYFORMAT_ARGTYPES(n)>                                          \\\nstd::wstring format(const wchar_t* fmt, TINYFORMAT_VARARGS(n))                \\\n{                                                                         \\\n    std::wostringstream oss;                                               \\\n    format(oss, fmt, TINYFORMAT_PASSARGS(n));                             \\\n    return oss.str();                                                     \\\n}                                                                         \\\n                                                                          \\\ntemplate<TINYFORMAT_ARGTYPES(n)>                                          \\\nvoid printf(const wchar_t* fmt, TINYFORMAT_VARARGS(n))                       \\\n{                                                                         \\\n    format(std::wcout, fmt, TINYFORMAT_PASSARGS(n));                       \\\n}                                                                         \\\n                                                                          \\\ntemplate<TINYFORMAT_ARGTYPES(n)>                                          \\\nvoid printfln(const wchar_t* fmt, TINYFORMAT_VARARGS(n))                     \\\n{                                                                         \\\n    format(std::wcout, fmt, TINYFORMAT_PASSARGS(n));                       \\\n    std::wcout << '\\n';                                                    \\\n}\n\nTINYFORMAT_FOREACH_ARGNUM(TINYFORMAT_MAKE_FORMAT_FUNCS)\n#undef TINYFORMAT_MAKE_FORMAT_FUNCS\n\n#endif\n\n\n} // namespace tinyformat\n\n#endif // TINYFORMAT_H_INCLUDED\n\n// file: Commands/CAssemblerCommand.h\n\nclass TempData;\nclass SymbolData;\n\nclass CAssemblerCommand\n{\npublic:\n\tCAssemblerCommand();\n\tvirtual ~CAssemblerCommand() { };\n\tvirtual bool Validate() = 0;\n\tvirtual void Encode() const = 0;\n\tvirtual void writeTempData(TempData& tempData) const = 0;\n\tvirtual void writeSymData(SymbolData& symData) const { };\n\tvoid applyFileInfo();\n\tint getSection() { return section; }\n\tvoid updateSection(int num) { section = num; }\nprotected:\n\tint FileNum;\n\tint FileLine;\nprivate:\n\tint section;\n};\n\nclass DummyCommand: public CAssemblerCommand\n{\npublic:\n\tvirtual bool Validate() { return false; };\n\tvirtual void Encode() const { };\n\tvirtual void writeTempData(TempData& tempData) const { };\n\tvirtual void writeSymData(SymbolData& symData) const { };\n};\n\nclass InvalidCommand: public CAssemblerCommand\n{\npublic:\n\tvirtual bool Validate() { return false; };\n\tvirtual void Encode() const { };\n\tvirtual void writeTempData(TempData& tempData) const { };\n\tvirtual void writeSymData(SymbolData& symData) const { };\n};\n\n// file: Core/Expression.h\n#include <memory>\n\ninline std::wstring to_wstring(int64_t value)\n{\n\treturn formatString(L\"%d\", value);\n}\n\ninline std::wstring to_wstring(double value)\n{\n\treturn formatString(L\"%#.17g\", value);\n}\n\nenum class OperatorType\n{\n\tInvalid,\n\tInteger,\n\tFloat,\n\tIdentifier,\n\tString,\n\tMemoryPos,\n\tAdd,\n\tSub,\n\tMult,\n\tDiv,\n\tMod,\n\tNeg,\n\tLogNot,\n\tBitNot,\n\tLeftShift,\n\tRightShift,\n\tLess,\n\tGreater,\n\tLessEqual,\n\tGreaterEqual,\n\tEqual,\n\tNotEqual,\n\tBitAnd,\n\tXor,\n\tBitOr,\n\tLogAnd,\n\tLogOr,\n\tTertiaryIf,\n\tToString,\n\tFunctionCall\n};\n\nenum class ExpressionValueType { Invalid, Integer, Float, String};\n\nstruct ExpressionValue\n{\n\tExpressionValueType type;\n\n\tExpressionValue()\n\t{\n\t\ttype = ExpressionValueType::Invalid;\n\t}\n\n\tExpressionValue(int64_t value)\n\t{\n\t\ttype = ExpressionValueType::Integer;\n\t\tintValue = value;\n\t}\n\n\tExpressionValue(double value)\n\t{\n\t\ttype = ExpressionValueType::Float;\n\t\tfloatValue = value;\n\t}\n\n\tExpressionValue(const std::wstring& value)\n\t{\n\t\ttype = ExpressionValueType::String;\n\t\tstrValue = value;\n\t}\n\n\tbool isFloat() const\n\t{\n\t\treturn type == ExpressionValueType::Float;\n\t}\n\n\tbool isInt() const\n\t{\n\t\treturn type == ExpressionValueType::Integer;\n\t}\n\n\tbool isString() const\n\t{\n\t\treturn type == ExpressionValueType::String;\n\t}\n\n\tbool isValid() const\n\t{\n\t\treturn type != ExpressionValueType::Invalid;\n\t}\n\n\tstruct\n\t{\n\t\tint64_t intValue;\n\t\tdouble floatValue;\n\t};\n\n\tstd::wstring strValue;\n\n\tExpressionValue operator!() const;\n\tExpressionValue operator~() const;\n\tbool operator<(const ExpressionValue& other) const;\n\tbool operator<=(const ExpressionValue& other) const;\n\tbool operator>(const ExpressionValue& other) const;\n\tbool operator>=(const ExpressionValue& other) const;\n\tbool operator==(const ExpressionValue& other) const;\n\tbool operator!=(const ExpressionValue& other) const;\n\tExpressionValue operator+(const ExpressionValue& other) const;\n\tExpressionValue operator-(const ExpressionValue& other) const;\n\tExpressionValue operator*(const ExpressionValue& other) const;\n\tExpressionValue operator/(const ExpressionValue& other) const;\n\tExpressionValue operator%(const ExpressionValue& other) const;\n\tExpressionValue operator<<(const ExpressionValue& other) const;\n\tExpressionValue operator>>(const ExpressionValue& other) const;\n\tExpressionValue operator&(const ExpressionValue& other) const;\n\tExpressionValue operator|(const ExpressionValue& other) const;\n\tExpressionValue operator&&(const ExpressionValue& other) const;\n\tExpressionValue operator||(const ExpressionValue& other) const;\n\tExpressionValue operator^(const ExpressionValue& other) const;\n};\n\nclass Label;\n\nstruct ExpressionFunctionEntry;\nstruct ExpressionLabelFunctionEntry;\n\nclass ExpressionInternal\n{\npublic:\n\tExpressionInternal();\n\t~ExpressionInternal();\n\tExpressionInternal(int64_t value);\n\tExpressionInternal(double value);\n\tExpressionInternal(const std::wstring& value, OperatorType type);\n\tExpressionInternal(OperatorType op, ExpressionInternal* a = nullptr,\n\t\tExpressionInternal* b = nullptr, ExpressionInternal* c = nullptr);\n\tExpressionInternal(const std::wstring& name, const std::vector<ExpressionInternal*>& parameters);\n\tExpressionValue evaluate();\n\tstd::wstring toString();\n\tbool isIdentifier() { return type == OperatorType::Identifier; }\n\tstd::wstring getStringValue() { return strValue; }\n\tvoid replaceMemoryPos(const std::wstring& identifierName);\n\tbool simplify(bool inUnknownOrFalseBlock);\n\tunsigned int getFileNum() { return fileNum; }\n\tunsigned int getSection() { return section; }\nprivate:\n\tvoid allocate(size_t count);\n\tvoid deallocate();\n\tstd::wstring formatFunctionCall();\n\tExpressionValue executeExpressionFunctionCall(const ExpressionFunctionEntry& entry);\n\tExpressionValue executeExpressionLabelFunctionCall(const ExpressionLabelFunctionEntry& entry);\n\tExpressionValue executeFunctionCall();\n\tbool checkParameterCount(size_t min, size_t max);\n\n\tOperatorType type;\n\tExpressionInternal** children;\n\tsize_t childrenCount;\n\n\tunion\n\t{\n\t\tint64_t intValue;\n\t\tdouble floatValue;\n\t};\n\tstd::wstring strValue;\n\n\tunsigned int fileNum, section;\n};\n\nclass Expression\n{\npublic:\n\tExpression();\n\tExpressionValue evaluate();\n\tbool isLoaded() const { return expression != nullptr; }\n\tvoid setExpression(ExpressionInternal* exp, bool inUnknownOrFalseBlock);\n\tvoid replaceMemoryPos(const std::wstring& identifierName);\n\tbool isConstExpression() { return constExpression; }\n\n\ttemplate<typename T>\n\tbool evaluateInteger(T& dest)\n\t{\n\t\tif (expression == nullptr)\n\t\t\treturn false;\n\n\t\tExpressionValue value = expression->evaluate();\n\t\tif (value.isInt() == false)\n\t\t\treturn false;\n\n\t\tdest = (T) value.intValue;\n\t\treturn true;\n\t}\n\n\tbool evaluateString(std::wstring& dest, bool convert)\n\t{\n\t\tif (expression == nullptr)\n\t\t\treturn false;\n\n\t\tExpressionValue value = expression->evaluate();\n\t\tif (convert && value.isInt())\n\t\t{\n\t\t\tdest = to_wstring(value.intValue);\n\t\t\treturn true;\n\t\t}\n\n\t\tif (convert && value.isFloat())\n\t\t{\n\t\t\tdest = to_wstring(value.floatValue);\n\t\t\treturn true;\n\t\t}\n\n\t\tif (value.isString() == false)\n\t\t\treturn false;\n\n\t\tdest = value.strValue;\n\t\treturn true;\n\t}\n\n\tbool evaluateIdentifier(std::wstring& dest)\n\t{\n\t\tif (expression == nullptr || expression->isIdentifier() == false)\n\t\t\treturn false;\n\n\t\tdest = expression->getStringValue();\n\t\treturn true;\n\t}\n\n\tstd::wstring toString() { return expression != nullptr ? expression->toString() : L\"\"; };\nprivate:\n\tstd::shared_ptr<ExpressionInternal> expression;\n\tstd::wstring originalText;\n\tbool constExpression;\n};\n\nExpression createConstExpression(int64_t value);\n\n// file: Core/ExpressionFunctions.h\n#include <map>\n\nbool getExpFuncParameter(const std::vector<ExpressionValue>& parameters, size_t index, int64_t& dest,\n\tconst std::wstring& funcName, bool optional);\n\nbool getExpFuncParameter(const std::vector<ExpressionValue>& parameters, size_t index, const std::wstring*& dest,\n\tconst std::wstring& funcName, bool optional);\n\nusing ExpressionFunction = ExpressionValue (*)(const std::wstring& funcName, const std::vector<ExpressionValue>&);\nusing ExpressionLabelFunction = ExpressionValue (*)(const std::wstring& funcName, const std::vector<std::shared_ptr<Label>> &);\n\nenum class ExpFuncSafety\n{\n\t// Result may depend entirely on the internal state\n\tUnsafe,\n\t// Result is unsafe in conditional blocks, safe otherwise\n\tConditionalUnsafe,\n\t// Result is completely independent of the internal state\n\tSafe,\n};\n\nstruct ExpressionFunctionEntry\n{\n\tExpressionFunction function;\n\tsize_t minParams;\n\tsize_t maxParams;\n\tExpFuncSafety safety;\n};\n\nstruct ExpressionLabelFunctionEntry\n{\n\tExpressionLabelFunction function;\n\tsize_t minParams;\n\tsize_t maxParams;\n\tExpFuncSafety safety;\n};\n\n\nusing ExpressionFunctionMap =  std::map<std::wstring, const ExpressionFunctionEntry>;\nusing ExpressionLabelFunctionMap =  std::map<std::wstring, const ExpressionLabelFunctionEntry>;\n\nextern const ExpressionFunctionMap expressionFunctions;\nextern const ExpressionLabelFunctionMap expressionLabelFunctions;\n\n// file: Core/SymbolData.h\n#include <set>\n\nclass AssemblerFile;\n\nstruct SymDataSymbol\n{\n\tstd::wstring name;\n\tint64_t address;\n\n\tbool operator<(const SymDataSymbol& other) const\n\t{\n\t\treturn address < other.address;\n\t}\n};\n\nstruct SymDataAddressInfo\n{\n\tint64_t address;\n\tsize_t fileIndex;\n\tsize_t lineNumber;\n\n\tbool operator<(const SymDataAddressInfo& other) const\n\t{\n\t\treturn address < other.address;\n\t}\n};\n\nstruct SymDataFunction\n{\n\tint64_t address;\n\tsize_t size;\n\n\tbool operator<(const SymDataFunction& other) const\n\t{\n\t\treturn address < other.address;\n\t}\n};\n\nstruct SymDataData\n{\n\tint64_t address;\n\tsize_t size;\n\tint type;\n\n\tbool operator<(const SymDataData& other) const\n\t{\n\t\tif (address != other.address)\n\t\t\treturn address < other.address;\n\n\t\tif (size != other.size)\n\t\t\treturn size < other.size;\n\n\t\treturn type < other.type;\n\t}\n};\n\nstruct SymDataModule\n{\n\tAssemblerFile* file;\n\tstd::vector<SymDataSymbol> symbols;\n\tstd::vector<SymDataFunction> functions;\n\tstd::set<SymDataData> data;\n};\n\nstruct SymDataModuleInfo\n{\n\tunsigned int crc32;\n};\n\nclass SymbolData\n{\npublic:\n\tenum DataType { Data8, Data16, Data32, Data64, DataAscii };\n\n\tSymbolData();\n\tvoid clear();\n\tvoid setNocashSymFileName(const std::wstring& name, int version) { nocashSymFileName = name; nocashSymVersion = version; };\n\tvoid write();\n\tvoid setEnabled(bool b) { enabled = b; };\n\n\tvoid addLabel(int64_t address, const std::wstring& name);\n\tvoid addData(int64_t address, size_t size, DataType type);\n\tvoid startModule(AssemblerFile* file);\n\tvoid endModule(AssemblerFile* file);\n\tvoid startFunction(int64_t address);\n\tvoid endFunction(int64_t address);\nprivate:\n\tvoid writeNocashSym();\n\tsize_t addFileName(const std::wstring& fileName);\n\n\tstd::wstring nocashSymFileName;\n\tbool enabled;\n\tint nocashSymVersion;\n\n\t// entry 0 is for data without parent modules\n\tstd::vector<SymDataModule> modules;\n\tstd::vector<std::wstring> files;\n\tint currentModule;\n\tint currentFunction;\n};\n\n// file: Util/Util.h\n#include <string>\n#include <stdio.h>\n\n\ntypedef std::vector<std::wstring> StringList;\n\nstd::wstring convertUtf8ToWString(const char* source);\nstd::string convertWCharToUtf8(wchar_t character);\n;std::string convertWStringToUtf8(const std::wstring& source);\n\nstd::wstring intToHexString(unsigned int value, int digits, bool prefix = false);\nstd::wstring intToString(unsigned int value, int digits);\nbool stringToInt(const std::wstring& line, size_t start, size_t end, int64_t& result);\nint32_t getFloatBits(float value);\nfloat bitsToFloat(int32_t value);\nint64_t getDoubleBits(double value);\n\nStringList getStringListFromArray(wchar_t** source, int count);\nStringList splitString(const std::wstring& str, const wchar_t delim, bool skipEmpty);\n\nint64_t fileSize(const std::wstring& fileName);\nbool fileExists(const std::wstring& strFilename);\nbool copyFile(const std::wstring& existingFile, const std::wstring& newFile);\nbool deleteFile(const std::wstring& fileName);;\n\nstd::wstring toWLowercase(const std::string& str);\nstd::wstring getFileNameFromPath(const std::wstring& path);\nsize_t replaceAll(std::wstring& str, const wchar_t* oldValue,const std::wstring& newValue);\nbool startsWith(const std::wstring& str, const wchar_t* value, size_t stringPos = 0);\n\nenum class OpenFileMode { ReadBinary, WriteBinary, ReadWriteBinary };\nFILE* openFile(const std::wstring& fileName, OpenFileMode mode);\nstd::wstring getCurrentDirectory();\nbool changeDirectory(const std::wstring& dir);\nbool isAbsolutePath(const std::wstring& path);\n\n#ifndef ARRAY_SIZE\n#define ARRAY_SIZE(x) (sizeof((x)) / sizeof((x)[0]))\n#endif\n\n// file: Util/FileClasses.h\n#include <list>\n\nclass BinaryFile\n{\npublic:\n\tenum Mode { Read, Write, ReadWrite };\n\n\tBinaryFile();\n\t~BinaryFile();\n\n\tbool open(const std::wstring& fileName, Mode mode);\n\tbool open(Mode mode);\n\tbool isOpen() { return handle != nullptr; };\n\tbool atEnd() { return isOpen() && mode != Write && ftell(handle) == size_; };\n\tvoid setPos(long pos) { if (isOpen()) fseek(handle,pos,SEEK_SET); };\n\tlong pos() { return isOpen() ? ftell(handle) : -1; }\n\tlong size() { return size_; };\n\tvoid close();\n\n\tvoid setFileName(const std::wstring& name) { fileName = name; };\n\tconst std::wstring& getFileName() { return fileName; };\n\n\tsize_t read(void* dest, size_t length);\n\tsize_t write(void* source, size_t length);\nprivate:\n\tFILE* handle;\n\tstd::wstring fileName;\n\tMode mode;\n\tlong size_;\n};\n\nclass TextFile\n{\npublic:\n\tenum Encoding { ASCII, UTF8, UTF16LE, UTF16BE, SJIS, GUESS };\n\tenum Mode { Read, Write };\n\n\tTextFile();\n\t~TextFile();\n\tvoid openMemory(const std::wstring& content);\n\tbool open(const std::wstring& fileName, Mode mode, Encoding defaultEncoding = GUESS);\n\tbool open(Mode mode, Encoding defaultEncoding = GUESS);\n\tbool isOpen() { return fromMemory || handle != nullptr; };\n\tbool atEnd() { return isOpen() && mode == Read && tell() >= size_; };\n\tlong size() { return size_; };\n\tvoid close();\n\n\tbool hasGuessedEncoding() { return guessedEncoding; };\n\tbool isFromMemory() { return fromMemory; }\n\tint getNumLines() { return lineCount; }\n\n\tvoid setFileName(const std::wstring& name) { fileName = name; };\n\tconst std::wstring& getFileName() { return fileName; };\n\n\twchar_t readCharacter();\n\tstd::wstring readLine();\n\tStringList readAll();\n\tvoid writeCharacter(wchar_t character);\n\tvoid write(const wchar_t* line);\n\tvoid write(const std::wstring& line);\n\tvoid write(const char* value);\n\tvoid write(const std::string& value);\n\tvoid writeLine(const wchar_t* line);\n\tvoid writeLine(const std::wstring& line);\n\tvoid writeLine(const char* line);\n\tvoid writeLine(const std::string& line);\n\tvoid writeLines(StringList& list);\n\n\ttemplate <typename... Args>\n\tvoid writeFormat(const wchar_t* text, const Args&... args)\n\t{\n\t\tstd::wstring message = formatString(text,args...);\n\t\twrite(message);\n\t}\n\n\tbool hasError() { return errorText.size() != 0 && !errorRetrieved; };\n\tconst std::wstring& getErrorText() { errorRetrieved = true; return errorText; };\nprivate:\n\tlong tell();\n\tvoid seek(long pos);\n\n\tFILE* handle;\n\tstd::wstring fileName;\n\tEncoding encoding;\n\tMode mode;\n\tbool recursion;\n\tbool guessedEncoding;\n\tlong size_;\n\tstd::wstring errorText;\n\tbool errorRetrieved;\n\tbool fromMemory;\n\tstd::wstring content;\n\tsize_t contentPos;\n\tint lineCount;\n\n\tstd::string buf;\n\tsize_t bufPos;\n\n\tinline unsigned char bufGetChar()\n\t{\n\t\tif (buf.size() <= bufPos)\n\t\t{\n\t\t\tbufFillRead();\n\t\t\tif (buf.size() == 0)\n\t\t\t\treturn 0;\n\t\t}\n\t\treturn buf[bufPos++];\n\t}\n\tinline unsigned short bufGet16LE()\n\t{\n\t\tchar c1 = bufGetChar();\n\t\tchar c2 = bufGetChar();\n\t\treturn c1 | (c2 << 8);\n\t}\n\tinline unsigned short bufGet16BE()\n\t{\n\t\tchar c1 = bufGetChar();\n\t\tchar c2 = bufGetChar();\n\t\treturn c2 | (c1 << 8);\n\t}\n\n\tvoid bufPut(const void *p, const size_t len);\n\tvoid bufPut(const char c);\n\n\tvoid bufFillRead();\n\tvoid bufDrainWrite();\n};\n\nwchar_t sjisToUnicode(unsigned short);\nTextFile::Encoding getEncodingFromString(const std::wstring& str);\n\n// file: Util/ByteArray.h\n\n#include <sys/types.h>\n\n#if defined(_MSC_VER) && !defined(ssize_t)\ntypedef intptr_t ssize_t;\n#endif\n\ntypedef unsigned char byte;\n\nenum class Endianness { Big, Little };\n\nclass ByteArray\n{\npublic:\n\tByteArray();\n\tByteArray(const ByteArray& other);\n\tByteArray(byte* data, size_t size);\n\tByteArray(ByteArray&& other);\n\t~ByteArray();\n\tByteArray& operator=(ByteArray& other);\n\tByteArray& operator=(ByteArray&& other);\n\n\tsize_t append(const ByteArray& other);\n\tsize_t append(void* data, size_t size);\n\tsize_t appendByte(byte b) { return append(&b,1); };\n\tvoid replaceByte(size_t pos, byte b) { data_[pos] = b; };\n\tvoid replaceBytes(size_t pos, byte* data, size_t size);\n\tvoid reserveBytes(size_t count, byte value = 0);\n\tvoid alignSize(size_t alignment);\n\n\tint getWord(size_t pos, Endianness endianness = Endianness::Little) const\n\t{\n\t\tif (pos+1 >= this->size()) return -1;\n\t\tunsigned char* d = (unsigned char*) this->data();\n\n\t\tif (endianness == Endianness::Little)\n\t\t{\n\t\t\treturn d[pos+0] | (d[pos+1] << 8);\n\t\t} else {\n\t\t\treturn d[pos+1] | (d[pos+0] << 8);\n\t\t}\n\t}\n\n\tint getDoubleWord(size_t pos, Endianness endianness = Endianness::Little) const\n\t{\n\t\tif (pos+3 >= this->size()) return -1;\n\t\tunsigned char* d = (unsigned char*) this->data();\n\n\t\tif (endianness == Endianness::Little)\n\t\t{\n\t\t\treturn d[pos+0] | (d[pos+1] << 8) | (d[pos+2] << 16) | (d[pos+3] << 24);\n\t\t} else {\n\t\t\treturn d[pos+3] | (d[pos+2] << 8) | (d[pos+1] << 16) | (d[pos+0] << 24);\n\t\t}\n\t}\n\n\tvoid replaceWord(size_t pos, unsigned int w, Endianness endianness = Endianness::Little)\n\t{\n\t\tif (pos+1 >= this->size()) return;\n\t\tunsigned char* d = (unsigned char*) this->data();\n\n\t\tif (endianness == Endianness::Little)\n\t\t{\n\t\t\td[pos+0] = w & 0xFF;\n\t\t\td[pos+1] = (w >> 8) & 0xFF;\n\t\t} else {\n\t\t\td[pos+0] = (w >> 8) & 0xFF;\n\t\t\td[pos+1] = w & 0xFF;\n\t\t}\n\t}\n\n\tvoid replaceDoubleWord(size_t pos, unsigned int w, Endianness endianness = Endianness::Little)\n\t{\n\t\tif (pos+3 >= this->size()) return;\n\t\tunsigned char* d = (unsigned char*) this->data();\n\n\t\tif (endianness == Endianness::Little)\n\t\t{\n\t\t\td[pos+0] = w & 0xFF;\n\t\t\td[pos+1] = (w >> 8) & 0xFF;\n\t\t\td[pos+2] = (w >> 16) & 0xFF;\n\t\t\td[pos+3] = (w >> 24) & 0xFF;\n\t\t} else {\n\t\t\td[pos+0] = (w >> 24) & 0xFF;\n\t\t\td[pos+1] = (w >> 16) & 0xFF;\n\t\t\td[pos+2] = (w >> 8) & 0xFF;\n\t\t\td[pos+3] = w & 0xFF;\n\t\t}\n\t}\n\n\tbyte& operator [](size_t index)\n\t{\n\t\treturn data_[index];\n\t};\n\n\tconst byte& operator [](size_t index) const\n\t{\n\t\treturn data_[index];\n\t};\n\n\tsize_t size() const { return size_; };\n\tbyte* data(size_t pos = 0) const { return &data_[pos]; };\n\tvoid clear() { size_ = 0; };\n\tvoid resize(size_t newSize);\n\tByteArray mid(size_t start, ssize_t length = 0);\n\tByteArray left(size_t length) { return mid(0,length); };\n\tByteArray right(size_t length) { return mid(size_-length,length); };\n\n\tstatic ByteArray fromFile(const std::wstring& fileName, long start = 0, size_t size = 0);\n\tbool toFile(const std::wstring& fileName);\nprivate:\n\tvoid grow(size_t neededSize);\n\tbyte* data_;\n\tsize_t size_;\n\tsize_t allocatedSize_;\n};\n\n// file: Core/FileManager.h\n#include <vector>\n\nclass AssemblerFile\n{\npublic:\n\tvirtual ~AssemblerFile() { };\n\n\tvirtual bool open(bool onlyCheck) = 0;\n\tvirtual void close() = 0;\n\tvirtual bool isOpen() = 0;\n\tvirtual bool write(void* data, size_t length) = 0;\n\tvirtual int64_t getVirtualAddress() = 0;\n\tvirtual int64_t getPhysicalAddress() = 0;\n\tvirtual int64_t getHeaderSize() = 0;\n\tvirtual bool seekVirtual(int64_t virtualAddress) = 0;\n\tvirtual bool seekPhysical(int64_t physicalAddress) = 0;\n\tvirtual bool getModuleInfo(SymDataModuleInfo& info) { return false; };\n\tvirtual bool hasFixedVirtualAddress() { return false; };\n\tvirtual void beginSymData(SymbolData& symData) { };\n\tvirtual void endSymData(SymbolData& symData) { };\n\tvirtual const std::wstring& getFileName() = 0;\n};\n\nclass GenericAssemblerFile: public AssemblerFile\n{\npublic:\n\tGenericAssemblerFile(const std::wstring& fileName, int64_t headerSize, bool overwrite);\n\tGenericAssemblerFile(const std::wstring& fileName, const std::wstring& originalFileName, int64_t headerSize);\n\n\tvirtual bool open(bool onlyCheck);\n\tvirtual void close() { if (handle.isOpen()) handle.close(); };\n\tvirtual bool isOpen() { return handle.isOpen(); };\n\tvirtual bool write(void* data, size_t length);\n\tvirtual int64_t getVirtualAddress() { return virtualAddress; };\n\tvirtual int64_t getPhysicalAddress() { return virtualAddress-headerSize; };\n\tvirtual int64_t getHeaderSize() { return headerSize; };\n\tvirtual bool seekVirtual(int64_t virtualAddress);\n\tvirtual bool seekPhysical(int64_t physicalAddress);\n\tvirtual bool hasFixedVirtualAddress() { return true; };\n\n\tvirtual const std::wstring& getFileName() { return fileName; };\n\tconst std::wstring& getOriginalFileName() { return originalName; };\n\tint64_t getOriginalHeaderSize() { return originalHeaderSize; };\n\tvoid setHeaderSize(int64_t size) { headerSize = size; };\n\nprivate:\n\tenum Mode { Open, Create, Copy };\n\n\tMode mode;\n\tint64_t originalHeaderSize;\n\tint64_t headerSize;\n\tint64_t virtualAddress;\n\tBinaryFile handle;\n\tstd::wstring fileName;\n\tstd::wstring originalName;\n};\n\n\nclass FileManager\n{\npublic:\n\tFileManager();\n\t~FileManager();\n\tvoid reset();\n\tbool openFile(std::shared_ptr<AssemblerFile> file, bool onlyCheck);\n\tvoid addFile(std::shared_ptr<AssemblerFile> file);\n\tbool hasOpenFile() { return activeFile != nullptr; };\n\tvoid closeFile();\n\tbool write(void* data, size_t length);\n\tbool writeU8(uint8_t data);\n\tbool writeU16(uint16_t data);\n\tbool writeU32(uint32_t data);\n\tbool writeU64(uint64_t data);\n\tint64_t getVirtualAddress();\n\tint64_t getPhysicalAddress();\n\tint64_t getHeaderSize();\n\tbool seekVirtual(int64_t virtualAddress);\n\tbool seekPhysical(int64_t physicalAddress);\n\tbool advanceMemory(size_t bytes);\n\tstd::shared_ptr<AssemblerFile> getOpenFile() { return activeFile; };\n\tvoid setEndianness(Endianness endianness) { this->endianness = endianness; };\n\tEndianness getEndianness() { return endianness; }\nprivate:\n\tbool checkActiveFile();\n\tstd::vector<std::shared_ptr<AssemblerFile>> files;\n\tstd::shared_ptr<AssemblerFile> activeFile;\n\tEndianness endianness;\n\tEndianness ownEndianness;\n};\n\n// file: Core/ELF/ElfTypes.h\n\n///////////////////////\n// ELF Header Constants\n\n// File type\nenum ElfType\n{\n\tET_NONE        =0,\n\tET_REL         =1,\n\tET_EXEC        =2,\n\tET_DYN         =3,\n\tET_CORE        =4,\n\tET_LOPROC =0xFF00,\n\tET_HIPROC =0xFFFF,\n};\n\n// Machine/Architecture\nenum ElfMachine\n{\n\tEM_NONE  =0,\n\tEM_MIPS  =8,\n\tEM_ARM   =40,\n};\n\n// File version\n#define EV_NONE    0\n#define EV_CURRENT 1\n\n// Identification index\n#define EI_MAG0    0\n#define EI_MAG1    1\n#define EI_MAG2    2\n#define EI_MAG3    3\n#define EI_CLASS   4\n#define EI_DATA    5\n#define EI_VERSION 6\n#define EI_PAD     7\n#define EI_NIDENT 16\n\n// Magic number\n#define ELFMAG0 0x7F\n#define ELFMAG1  'E'\n#define ELFMAG2  'L'\n#define ELFMAG3  'F'\n\n// File class\n#define ELFCLASSNONE 0\n#define ELFCLASS32   1\n#define ELFCLASS64   2\n\n// Encoding\n#define ELFDATANONE 0\n#define ELFDATA2LSB 1\n#define ELFDATA2MSB 2\n\n\n/////////////////////\n// Sections constants\n\n// Section indexes\n#define SHN_UNDEF          0\n#define SHN_LORESERVE 0xFF00\n#define SHN_LOPROC    0xFF00\n#define SHN_HIPROC    0xFF1F\n#define SHN_ABS       0xFFF1\n#define SHN_COMMON    0xFFF2\n#define SHN_HIRESERVE 0xFFFF\n\n// Section types\n#define SHT_NULL            0\n#define SHT_PROGBITS        1\n#define SHT_SYMTAB          2\n#define SHT_STRTAB          3\n#define SHT_RELA            4\n#define SHT_HASH            5\n#define SHT_DYNAMIC         6\n#define SHT_NOTE            7\n#define SHT_NOBITS          8\n#define SHT_REL             9\n#define SHT_SHLIB          10\n#define SHT_DYNSYM         11\n#define SHT_INIT_ARRAY     14\n#define SHT_LOPROC 0x70000000\n#define SHT_HIPROC 0x7FFFFFFF\n#define SHT_LOUSER 0x80000000\n#define SHT_HIUSER 0xFFFFFFFF\n\n// Custom section types\n#define SHT_PSPREL 0x700000a0\n\n\n// Section flags\nenum ElfSectionFlags\n{\n\tSHF_WRITE     =0x1,\n\tSHF_ALLOC     =0x2,\n\tSHF_EXECINSTR =0x4,\n\tSHF_MASKPROC  =0xF0000000,\n};\n\n// Symbol binding\n#define STB_LOCAL   0\n#define STB_GLOBAL  1\n#define STB_WEAK    2\n#define STB_LOPROC 13\n#define STB_HIPROC 15\n\n// Symbol types\n#define STT_NOTYPE   0\n#define STT_OBJECT   1\n#define STT_FUNC     2\n#define STT_SECTION  3\n#define STT_FILE     4\n#define STT_LOPROC  13\n#define STT_HIPROC  15\n\n// Undefined name\n#define STN_UNDEF 0\n\n// Relocation types\n#define R_386_NONE      0\n#define R_386_32        1\n#define R_386_PC32      2\n#define R_386_GOT32     3\n#define R_386_PLT32     4\n#define R_386_COPY      5\n#define R_386_GLOB_DAT  6\n#define R_386_JMP_SLOT  7\n#define R_386_RELATIVE  8\n#define R_386_GOTOFF    9\n#define R_386_GOTPC    10\n\n// Segment types\n#define PT_NULL             0\n#define PT_LOAD             1\n#define PT_DYNAMIC          2\n#define PT_INTERP           3\n#define PT_NOTE             4\n#define PT_SHLIB            5\n#define PT_PHDR             6\n#define PT_LOPROC  0x70000000\n#define PT_HIPROC  0x7FFFFFFF\n\n// Segment flags\n#define PF_X 1\n#define PF_W 2\n#define PF_R 4\n\n// Dynamic Array Tags\n#define DT_NULL              0\n#define DT_NEEDED            1\n#define DT_PLTRELSZ          2\n#define DT_PLTGOT            3\n#define DT_HASH              4\n#define DT_STRTAB            5\n#define DT_SYMTAB            6\n#define DT_RELA              7\n#define DT_RELASZ            8\n#define DT_RELAENT           9\n#define DT_STRSZ            10\n#define DT_SYMENT           11\n#define DT_INIT             12\n#define DT_FINI             13\n#define DT_SONAME           14\n#define DT_RPATH            15\n#define DT_SYMBOLIC         16\n#define DT_REL              17\n#define DT_RELSZ            18\n#define DT_RELENT           19\n#define DT_PLTREL           20\n#define DT_DEBUG            21\n#define DT_TEXTREL          22\n#define DT_JMPREL           23\n#define DT_LOPROC   0x70000000\n#define DT_HIPROC   0x7FFFFFFF\n\ntypedef unsigned int Elf32_Addr;\ntypedef unsigned short Elf32_Half;\ntypedef unsigned int Elf32_Off;\ntypedef signed int Elf32_Sword;\ntypedef unsigned int Elf32_Word;\n\n\n// ELF file header\nstruct Elf32_Ehdr\n{\n\tunsigned char e_ident[EI_NIDENT];\n\tElf32_Half    e_type;\n\tElf32_Half    e_machine;\n\tElf32_Word    e_version;\n\tElf32_Addr    e_entry;\n\tElf32_Off     e_phoff;\n\tElf32_Off     e_shoff;\n\tElf32_Word    e_flags;\n\tElf32_Half    e_ehsize;\n\tElf32_Half    e_phentsize;\n\tElf32_Half    e_phnum;\n\tElf32_Half    e_shentsize;\n\tElf32_Half    e_shnum;\n\tElf32_Half    e_shstrndx;\n};\n\n// Section header\nstruct Elf32_Shdr\n{\n\tElf32_Word sh_name;\n\tElf32_Word sh_type;\n\tElf32_Word sh_flags;\n\tElf32_Addr sh_addr;\n\tElf32_Off  sh_offset;\n\tElf32_Word sh_size;\n\tElf32_Word sh_link;\n\tElf32_Word sh_info;\n\tElf32_Word sh_addralign;\n\tElf32_Word sh_entsize;\n};\n\n// Segment header\nstruct Elf32_Phdr\n{\n\tElf32_Word p_type;\n\tElf32_Off  p_offset;\n\tElf32_Addr p_vaddr;\n\tElf32_Addr p_paddr;\n\tElf32_Word p_filesz;\n\tElf32_Word p_memsz;\n\tElf32_Word p_flags;\n\tElf32_Word p_align;\n};\n\n// Symbol table entry\nstruct Elf32_Sym\n{\n\tElf32_Word    st_name;\n\tElf32_Addr    st_value;\n\tElf32_Word    st_size;\n\tunsigned char st_info;\n\tunsigned char st_other;\n\tElf32_Half    st_shndx;\n};\n\n#define ELF32_ST_BIND(i)   ((i)>>4)\n#define ELF32_ST_TYPE(i)   ((i)&0xf)\n#define ELF32_ST_INFO(b,t) (((b)<<4)+((t)&0xf))\n\n// Relocation entries\nstruct Elf32_Rel\n{\n\tElf32_Addr r_offset;\n\tElf32_Word r_info;\n\n\tunsigned char getType()\n\t{\n\t\treturn r_info & 0xFF;\n\t}\n\n\tElf32_Word getSymbolNum()\n\t{\n\t\treturn r_info >> 8;\n\t}\n};\n\nstruct Elf32_Rela\n{\n\tElf32_Addr  r_offset;\n\tElf32_Word  r_info;\n\tElf32_Sword r_addend;\n};\n\n#define ELF32_R_SYM(i) ((i)>>8)\n#define ELF32_R_TYPE(i) ((unsigned char)(i))\n#define ELF32_R_INFO(s,t) (((s)<<8 )+(unsigned char)(t))\n\n// file: Core/ELF/ElfFile.h\n\n#include <vector>\n\nenum ElfPart { ELFPART_SEGMENTTABLE, ELFPART_SECTIONTABLE, ELFPART_SEGMENTS, ELFPART_SEGMENTLESSSECTIONS };\n\nclass ElfSegment;\nclass ElfSection;\n\nclass ElfFile\n{\npublic:\n\n\tbool load(const std::wstring&fileName, bool sort);\n\tbool load(ByteArray& data, bool sort);\n\tvoid save(const std::wstring&fileName);\n\n\tElf32_Half getType() { return fileHeader.e_type; };\n\tElf32_Half getMachine() { return fileHeader.e_machine; };\n\tEndianness getEndianness()\n\t{\n\t\treturn fileHeader.e_ident[EI_DATA] == ELFDATA2MSB ? Endianness::Big : Endianness::Little;\n\t}\n\tsize_t getSegmentCount() { return segments.size(); };\n\tElfSegment* getSegment(size_t index) { return segments[index]; };\n\n\tint findSegmentlessSection(const std::string& name);\n\tElfSection* getSegmentlessSection(size_t index) { return segmentlessSections[index]; };\n\tsize_t getSegmentlessSectionCount() { return segmentlessSections.size(); };\n\tByteArray& getFileData() { return fileData; }\n\n\tint getSymbolCount();\n\tbool getSymbol(Elf32_Sym& symbol, size_t index);\n\tconst char* getStrTableString(size_t pos);\nprivate:\n\tvoid loadElfHeader();\n\tvoid writeHeader(ByteArray& data, int pos, Endianness endianness);\n\tvoid loadProgramHeader(Elf32_Phdr& header, ByteArray& data, int pos);\n\tvoid loadSectionHeader(Elf32_Shdr& header, ByteArray& data, int pos);\n\tvoid loadSectionNames();\n\tvoid determinePartOrder();\n\n\tElf32_Ehdr fileHeader;\n\tstd::vector<ElfSegment*> segments;\n\tstd::vector<ElfSection*> sections;\n\tstd::vector<ElfSection*> segmentlessSections;\n\tByteArray fileData;\n\tElfPart partsOrder[4];\n\n\tElfSection* symTab;\n\tElfSection* strTab;\n};\n\n\nclass ElfSection\n{\npublic:\n\tElfSection(Elf32_Shdr header);\n\tvoid setName(std::string& name) { this->name = name; };\n\tconst std::string& getName() { return name; };\n\tvoid setData(ByteArray& data) { this->data = data; };\n\tvoid setOwner(ElfSegment* segment);\n\tbool hasOwner() { return owner != nullptr; };\n\tvoid writeHeader(ByteArray& data, int pos, Endianness endianness);\n\tvoid writeData(ByteArray& output);\n\tvoid setOffsetBase(int base);\n\tByteArray& getData() { return data; };\n\n\tElf32_Word getType() { return header.sh_type; };\n\tElf32_Off getOffset() { return header.sh_offset; };\n\tElf32_Word getSize() { return header.sh_size; };\n\tElf32_Word getNameOffset() { return header.sh_name; };\n\tElf32_Word getAlignment() { return header.sh_addralign; };\n\tElf32_Addr getAddress() { return header.sh_addr; };\n\tElf32_Half getInfo() { return header.sh_info; };\n\tElf32_Word getFlags() { return header.sh_flags; };\nprivate:\n\tElf32_Shdr header;\n\tstd::string name;\n\tByteArray data;\n\tElfSegment* owner;\n};\n\nclass ElfSegment\n{\npublic:\n\tElfSegment(Elf32_Phdr header, ByteArray& segmentData);\n\tbool isSectionPartOf(ElfSection* section);\n\tvoid addSection(ElfSection* section);\n\tElf32_Off getOffset() { return header.p_offset; };\n\tElf32_Word getPhysSize() { return header.p_filesz; };\n\tElf32_Word getType() { return header.p_type; };\n\tElf32_Addr getVirtualAddress() { return header.p_vaddr; };\n\tsize_t getSectionCount() { return sections.size(); };\n\tvoid writeHeader(ByteArray& data, int pos, Endianness endianness);\n\tvoid writeData(ByteArray& output);\n\tvoid splitSections();\n\n\tint findSection(const std::string& name);\n\tElfSection* getSection(size_t index) { return sections[index]; };\n\tvoid writeToData(size_t offset, void* data, size_t size);\n\tvoid sortSections();\nprivate:\n\tElf32_Phdr header;\n\tByteArray data;\n\tstd::vector<ElfSection*> sections;\n\tElfSection* paddrSection;\n};\n\nstruct RelocationData\n{\n\tint64_t opcodeOffset;\n\tint64_t relocationBase;\n\tuint32_t opcode;\n\n\tint64_t symbolAddress;\n\tint targetSymbolType;\n\tint targetSymbolInfo;\n};\n\n// file: Core/ELF/ElfRelocator.h\n\nstruct ElfRelocatorCtor\n{\n\tstd::wstring symbolName;\n\tsize_t size;\n};\n\nstruct RelocationAction\n{\n\tRelocationAction(int64_t offset, uint32_t newValue) : offset(offset), newValue(newValue) {}\n\tint64_t offset;\n\tuint32_t newValue;\n};\n\nclass CAssemblerCommand;\nclass Parser;\n\nclass IElfRelocator\n{\npublic:\n\tvirtual ~IElfRelocator() {};\n\tvirtual int expectedMachine() const = 0;\n\tvirtual bool isDummyRelocationType(int type) const { return false; }\n\tvirtual bool relocateOpcode(int type, const RelocationData& data, std::vector<RelocationAction>& actions, std::vector<std::wstring>& errors) = 0;\n\tvirtual bool finish(std::vector<RelocationAction>& actions, std::vector<std::wstring>& errors) { return true; }\n\tvirtual void setSymbolAddress(RelocationData& data, int64_t symbolAddress, int symbolType) = 0;\n\n\tvirtual std::unique_ptr<CAssemblerCommand> generateCtorStub(std::vector<ElfRelocatorCtor>& ctors) { return nullptr; }\n};\n\n\nclass Label;\n\nstruct ElfRelocatorSection\n{\n\tElfSection* section;\n\tsize_t index;\n\tElfSection* relSection;\n\tstd::shared_ptr<Label> label;\n};\n\nstruct ElfRelocatorSymbol\n{\n\tstd::shared_ptr<Label> label;\n\tstd::wstring name;\n\tint64_t relativeAddress;\n\tint64_t relocatedAddress;\n\tsize_t section;\n\tsize_t size;\n\tint type;\n};\n\nstruct ElfRelocatorFile\n{\n\tElfFile* elf;\n\tstd::vector<ElfRelocatorSection> sections;\n\tstd::vector<ElfRelocatorSymbol> symbols;\n\tstd::wstring name;\n};\n\nclass ElfRelocator\n{\npublic:\n\tbool init(const std::wstring& inputName);\n\tbool exportSymbols();\n\tvoid writeSymbols(SymbolData& symData) const;\n\tstd::unique_ptr<CAssemblerCommand> generateCtor(const std::wstring& ctorName);\n\tbool relocate(int64_t& memoryAddress);\n\tbool hasDataChanged() { return dataChanged; };\n\tconst ByteArray& getData() const { return outputData; };\nprivate:\n\tbool relocateFile(ElfRelocatorFile& file, int64_t& relocationAddress);\n\tvoid loadRelocation(Elf32_Rel& rel, ByteArray& data, int offset, Endianness endianness);\n\n\tByteArray outputData;\n\tstd::unique_ptr<IElfRelocator> relocator;\n\tstd::vector<ElfRelocatorFile> files;\n\tstd::vector<ElfRelocatorCtor> ctors;\n\tbool dataChanged;\n};\n\n// file: Archs/Architecture.h\n\nclass Tokenizer;\nclass Parser;\n\nclass CArchitecture\n{\npublic:\n\tvirtual std::unique_ptr<CAssemblerCommand> parseDirective(Parser& parser) { return nullptr; }\n\tvirtual std::unique_ptr<CAssemblerCommand> parseOpcode(Parser& parser) { return nullptr; }\n\tvirtual const ExpressionFunctionMap& getExpressionFunctions() { return emptyMap; }\n\tvirtual void NextSection() = 0;\n\tvirtual void Pass2() = 0;\n\tvirtual void Revalidate() = 0;\n\tvirtual std::unique_ptr<IElfRelocator> getElfRelocator() = 0;\n\tvirtual Endianness getEndianness() = 0;\nprivate:\n\tconst ExpressionFunctionMap emptyMap = {};\n};\n\nclass ArchitectureCommand: public CAssemblerCommand\n{\npublic:\n\tArchitectureCommand(const std::wstring& tempText, const std::wstring& symText);\n\tvirtual bool Validate();\n\tvirtual void Encode() const;\n\tvirtual void writeTempData(TempData& tempData) const;\n\tvirtual void writeSymData(SymbolData& symData) const;\nprivate:\n\tint64_t position;\n\tEndianness endianness;\n\tstd::wstring tempText;\n\tstd::wstring symText;\n};\n\nclass CInvalidArchitecture: public CArchitecture\n{\npublic:\n\tvirtual void NextSection();\n\tvirtual void Pass2();\n\tvirtual void Revalidate();\n\tvirtual std::unique_ptr<IElfRelocator> getElfRelocator();\n\tvirtual Endianness getEndianness() { return Endianness::Little; }\n};\n\nextern CInvalidArchitecture InvalidArchitecture;\n\n// file: Archs/MIPS/Mips.h\n\nenum MipsArchType { MARCH_PSX = 0, MARCH_N64, MARCH_PS2, MARCH_PSP, MARCH_RSP, MARCH_INVALID };\n\nclass CMipsArchitecture: public CArchitecture\n{\npublic:\n\tCMipsArchitecture();\n\tvirtual std::unique_ptr<CAssemblerCommand> parseDirective(Parser& parser);\n\tvirtual std::unique_ptr<CAssemblerCommand> parseOpcode(Parser& parser);\n\tvirtual const ExpressionFunctionMap& getExpressionFunctions();\n\tvirtual void NextSection();\n\tvirtual void Pass2() { return; };\n\tvirtual void Revalidate();\n\tvirtual std::unique_ptr<IElfRelocator> getElfRelocator();\n\tvirtual Endianness getEndianness()\n\t{\n\t\treturn Version == MARCH_N64 || Version == MARCH_RSP ? Endianness::Big : Endianness::Little;\n\t};\n\tvoid SetLoadDelay(bool Delay, int Register);\n\tbool GetLoadDelay() { return LoadDelay; };\n\tint GetLoadDelayRegister() { return LoadDelayRegister; };\n\tbool GetIgnoreDelay() { return IgnoreLoadDelay; };\n\tvoid SetIgnoreDelay(bool b) { IgnoreLoadDelay = b; };\n\tvoid SetFixLoadDelay(bool b) { FixLoadDelay = b; };\n\tbool GetFixLoadDelay() { return FixLoadDelay; };\n\tvoid SetVersion(MipsArchType v) { Version = v; };\n\tMipsArchType GetVersion() { return Version; };\n\tbool GetDelaySlot() { return DelaySlot; };\n\tvoid SetDelaySlot(bool b) {DelaySlot = b; };\n\tbool hasLoadDelay() { return Version == MARCH_PSX; };\nprivate:\n\tbool FixLoadDelay;\n\tbool IgnoreLoadDelay;\n\tbool LoadDelay;\n\tint LoadDelayRegister;\n\tbool DelaySlot;\n\tMipsArchType Version;\n};\n\ntypedef struct {\n\tconst char* name;\n\tshort num;\n\tshort len;\n} tMipsRegister;\n\ntypedef struct {\n\tchar name[5];\n\tshort num;\n} MipsRegisterInfo;\n\nenum MipsVfpuType { MIPSVFPU_VECTOR, MIPSVFPU_MATRIX };\n\nstruct MipsVFPURegister\n{\n\tMipsVfpuType type;\n\tint num;\n\tchar name[8];\n};\n\nextern const tMipsRegister MipsRegister[];\nextern CMipsArchitecture Mips;\n\nbool MipsGetRegister(const char* source, int& RetLen, MipsRegisterInfo& Result);\nint MipsGetRegister(const char* source, int& RetLen);\nbool MipsGetFloatRegister(const char* source, int& RetLen, MipsRegisterInfo& Result);\nbool MipsGetPs2VectorRegister(const char* source, int& RetLen, MipsRegisterInfo& Result);\nint MipsGetFloatRegister(const char* source, int& RetLen);\nbool MipsCheckImmediate(const char* Source, Expression& Dest, int& RetLen);\n\n\n// file: Archs/MIPS/MipsOpcodes.h\n\n#define MA_MIPS1\t\t0x00000001\n#define MA_MIPS2\t\t0x00000002\n#define MA_MIPS3\t\t0x00000004\n#define MA_MIPS4\t\t0x00000008\n#define MA_PSX\t\t\t0x00000010\n#define MA_PS2\t\t\t0x00000040\n#define MA_PSP\t\t\t0x00000080\n#define MA_RSP\t\t\t0x00000100\n\n#define MA_EXPSX\t\t0x00001000\n#define MA_EXN64\t\t0x00002000\n#define MA_EXPS2\t\t0x00004000\n#define MA_EXPSP\t\t0x00008000\n#define MA_EXRSP\t\t0x00010000\n\n#define MO_IPCA\t\t\t0x00000001\t// pc >> 2\n#define MO_IPCR\t\t\t0x00000002\t// PC, -> difference >> 2\n#define MO_RSD\t\t\t0x00000004\t// rs = rd\n#define MO_RST\t\t\t0x00000008\t// rs = rt\n#define MO_RDT\t\t\t0x00000010\t// rd = rt\n#define MO_DELAY\t\t0x00000020\t// delay slot follows\n#define MO_NODELAYSLOT\t0x00000040\t// can't be in a delay slot\n#define MO_DELAYRT\t\t0x00000080\t// rt won't be available for one instruction\n#define MO_IGNORERTD\t0x00000100\t// don't care for rt delay\n#define MO_FRSD\t\t\t0x00000200\t// float rs + rd\n#define MO_IMMALIGNED\t0x00000400\t// immediate 4 byte aligned\n#define MO_VFPU_MIXED\t0x00000800\t// mixed mode vfpu register\n#define MO_VFPU_6BIT\t0x00001000\t// vfpu register can have 6 bits max\n#define MO_VFPU_SINGLE\t0x00002000\t// single vfpu reg\n#define MO_VFPU_QUAD\t0x00004000\t// quad vfpu reg\n#define MO_VFPU\t\t\t0x00008000\t// vfpu type opcode\n#define MO_64BIT\t\t0x00010000\t// only available on 64 bit cpus\n#define MO_FPU\t\t\t0x00020000\t// only available with an fpu\n#define MO_TRANSPOSE_VS\t0x00040000\t// matrix vs has to be transposed\n#define MO_VFPU_PAIR\t0x00080000\t// pair vfpu reg\n#define MO_VFPU_TRIPLE\t0x00100000\t// triple vfpu reg\n#define MO_DFPU\t\t\t0x00200000\t// double-precision fpu opcodes\n#define MO_RSPVRSD\t\t0x00400000\t// rsp vector rs + rd\n#define MO_NEGIMM\t\t0x00800000 \t// negated immediate (for subi)\n#define MO_RSP_HWOFFSET\t0x01000000\t// RSP halfword load/store offset\n#define MO_RSP_WOFFSET\t0x02000000\t// RSP word load/store offset\n#define MO_RSP_DWOFFSET\t0x04000000\t// RSP doubleword load/store offset\n#define MO_RSP_QWOFFSET\t0x08000000\t// RSP quadword load/store offset\n\n#define BITFIELD(START,LENGTH,VALUE)\t(((VALUE) & ((1 << (LENGTH)) - 1)) << (START))\n#define MIPS_FUNC(VALUE)\t\t\t\tBITFIELD(0,6,(VALUE))\n#define MIPS_SA(VALUE)\t\t\t\t\tBITFIELD(6,5,(VALUE))\n#define MIPS_SECFUNC(VALUE)\t\t\t\tMIPS_SA((VALUE))\n#define MIPS_OP(VALUE)\t\t\t\t\tBITFIELD(26,6,(VALUE))\n\n#define MIPS_RS(VALUE)\t\t\t\t\tBITFIELD(21,5,(VALUE))\n#define MIPS_RT(VALUE)\t\t\t\t\tBITFIELD(16,5,(VALUE))\n#define MIPS_RD(VALUE)\t\t\t\t\tBITFIELD(11,5,(VALUE))\n#define MIPS_FS(VALUE)\t\t\t\t\tMIPS_RD((VALUE))\n#define MIPS_FT(VALUE)\t\t\t\t\tMIPS_RT((VALUE))\n#define MIPS_FD(VALUE)\t\t\t\t\tMIPS_SA((VALUE))\n\n#define MIPS_SPECIAL(VALUE)\t\t\t\t(MIPS_OP(0) | MIPS_FUNC(VALUE))\n#define MIPS_REGIMM(VALUE)\t\t\t\t(MIPS_OP(1) | MIPS_RT(VALUE))\n#define MIPS_COP0(VALUE)\t\t\t\t(MIPS_OP(16) | MIPS_RS(VALUE))\n#define MIPS_COP0FUNCT(VALUE)\t\t\t(MIPS_COP0(16) | MIPS_FUNC(VALUE))\n#define MIPS_COP1(VALUE)\t\t\t\t(MIPS_OP(17) | MIPS_RS(VALUE))\n#define MIPS_COP1BC(VALUE)\t\t\t\t(MIPS_COP1(8) | MIPS_RT(VALUE))\n#define MIPS_COP1S(VALUE)\t\t\t\t(MIPS_COP1(16) | MIPS_FUNC(VALUE))\n#define MIPS_COP1D(VALUE)\t\t\t\t(MIPS_COP1(17) | MIPS_FUNC(VALUE))\n#define MIPS_COP1W(VALUE)\t\t\t\t(MIPS_COP1(20) | MIPS_FUNC(VALUE))\n#define MIPS_COP1L(VALUE)\t\t\t\t(MIPS_COP1(21) | MIPS_FUNC(VALUE))\n\n#define MIPS_VFPUSIZE(VALUE)\t\t\t( (((VALUE) & 1) << 7) | (((VALUE) & 2) << 14) )\n#define MIPS_VFPUFUNC(VALUE)\t\t\tBITFIELD(23, 3, (VALUE))\n#define MIPS_COP2(VALUE)\t\t\t\t(MIPS_OP(18) | MIPS_RS(VALUE))\n#define MIPS_COP2BC(VALUE)\t\t\t\t(MIPS_COP2(8) | MIPS_RT(VALUE))\n#define MIPS_RSP_COP2(VALUE)\t\t\t(MIPS_OP(18) | (1 << 25) | MIPS_FUNC(VALUE))\n#define MIPS_RSP_LWC2(VALUE)\t\t\t(MIPS_OP(50) | MIPS_RD(VALUE))\n#define MIPS_RSP_SWC2(VALUE)\t\t\t(MIPS_OP(58) | MIPS_RD(VALUE))\n#define MIPS_RSP_VE(VALUE)\t\t\t\tBITFIELD(21, 4, (VALUE))\n#define MIPS_RSP_VDE(VALUE)\t\t\t\tBITFIELD(11, 4, (VALUE))\n#define MIPS_RSP_VEALT(VALUE)\t\t\tBITFIELD(7, 4, (VALUE))\n#define MIPS_VFPU0(VALUE)\t\t\t\t(MIPS_OP(24) | MIPS_VFPUFUNC(VALUE))\n#define MIPS_VFPU1(VALUE)\t\t\t\t(MIPS_OP(25) | MIPS_VFPUFUNC(VALUE))\n#define MIPS_VFPU3(VALUE)\t\t\t\t(MIPS_OP(27) | MIPS_VFPUFUNC(VALUE))\n#define MIPS_SPECIAL3(VALUE)\t\t\t(MIPS_OP(31) | MIPS_FUNC(VALUE))\n#define MIPS_ALLEGREX0(VALUE)\t\t\t(MIPS_SPECIAL3(32) | MIPS_SECFUNC(VALUE))\n#define MIPS_VFPU4(VALUE)\t\t\t\t(MIPS_OP(52) | MIPS_RS(VALUE))\n#define MIPS_VFPU4_11(VALUE)\t\t\t(MIPS_VFPU4(0) | MIPS_RT(VALUE))\n#define MIPS_VFPU4_12(VALUE)\t\t\t(MIPS_VFPU4(1) | MIPS_RT(VALUE))\n#define MIPS_VFPU4_13(VALUE)\t\t\t(MIPS_VFPU4(2) | MIPS_RT(VALUE))\n#define MIPS_VFPU5(VALUE)\t\t\t\t(MIPS_OP(55) | MIPS_VFPUFUNC(VALUE))\n#define MIPS_VFPU6(VALUE)\t\t\t\t(MIPS_OP(60) | MIPS_VFPUFUNC(VALUE))\n#define MIPS_VFPU6_1(VALUE)\t\t\t\t(MIPS_VFPU6(7) | BITFIELD(20, 3, VALUE))\n// This is a bit ugly, VFPU opcodes are encoded strangely.\n#define MIPS_VFPU6_1VROT()\t\t\t\t(MIPS_VFPU6(7) | BITFIELD(21, 2, 1))\n#define MIPS_VFPU6_2(VALUE)\t\t\t\t(MIPS_VFPU6_1(0) | MIPS_RT(VALUE))\n\n\nstruct MipsArchDefinition\n{\n\tconst char* name;\n\tint supportSets;\n\tint excludeMask;\n\tint flags;\n};\n\nextern const MipsArchDefinition mipsArchs[];\n\ntypedef struct {\n\tconst char* name;\n\tconst char* encoding;\n\tint destencoding;\n\tint archs;\n\tint flags;\n} tMipsOpcode;\n\nextern const tMipsOpcode MipsOpcodes[];\n\n// file: Archs/MIPS/CMipsInstruction.h\n\nenum class MipsRegisterType\n{\n\tNormal,\n\tFloat,\n\tFpuControl,\n\tCop0,\n\tPs2Cop2,\n\tPsxCop2Data,\n\tPsxCop2Control,\n\tVfpuVector,\n\tVfpuMatrix,\n\tRspCop0,\n\tRspVector,\n\tRspVectorControl,\n\tRspVectorElement,\n\tRspScalarElement,\n\tRspOffsetElement\n};\n\nenum class MipsImmediateType\n{\n\tNone,\n\tImmediate5,\n\tImmediate10,\n\tImmediate16,\n\tImmediate20,\n\tImmediate25,\n\tImmediate26,\n\tImmediate20_0,\n\tImmediateHalfFloat,\n\tImmediate7,\n\tCacheOp,\n\tExt,\n\tIns,\n\tCop2BranchType\n};\n\nstruct MipsRegisterValue\n{\n\tMipsRegisterType type;\n\tstd::wstring name;\n\tint num;\n};\n\nstruct MipsRegisterData {\n\tMipsRegisterValue grs;\t\t\t// general source reg\n\tMipsRegisterValue grt;\t\t\t// general target reg\n\tMipsRegisterValue grd;\t\t\t// general dest reg\n\n\tMipsRegisterValue frs;\t\t\t// float source reg\n\tMipsRegisterValue frt;\t\t\t// float target reg\n\tMipsRegisterValue frd;\t\t\t// float dest reg\n\n\tMipsRegisterValue ps2vrs;\t\t// ps2 vector source reg\n\tMipsRegisterValue ps2vrt;\t\t// ps2 vector target reg\n\tMipsRegisterValue ps2vrd;\t\t// ps2 vector dest reg\n\n\tMipsRegisterValue rspvrs;\t\t// rsp vector source reg\n\tMipsRegisterValue rspvrt;\t\t// rsp vector target reg\n\tMipsRegisterValue rspvrd;\t\t// rsp vector dest reg\n\tMipsRegisterValue rspve;\t\t// rsp vector element reg\n\tMipsRegisterValue rspvde;\t\t// rsp vector dest element reg\n\tMipsRegisterValue rspvealt;\t\t// rsp vector element reg (alt. placement)\n\n\tMipsRegisterValue vrs;\t\t\t// vfpu source reg\n\tMipsRegisterValue vrt;\t\t\t// vfpu target reg\n\tMipsRegisterValue vrd;\t\t\t// vfpu dest reg\n\n\tvoid reset()\n\t{\n\t\tgrs.num = grt.num = grd.num = -1;\n\t\tfrs.num = frt.num = frd.num = -1;\n\t\tvrs.num = vrt.num = vrd.num = -1;\n\t\tps2vrs.num = ps2vrt.num = ps2vrd.num = -1;\n\t\trspvrs.num = rspvrt.num = rspvrd.num = -1;\n\t\trspve.num = rspvde.num = rspvealt.num = -1;\n\t}\n};\n\nstruct MipsImmediateData\n{\n\tstruct\n\t{\n\t\tMipsImmediateType type;\n\t\tExpression expression;\n\t\tint value;\n\t\tint originalValue;\n\t} primary;\n\n\tstruct\n\t{\n\t\tMipsImmediateType type;\n\t\tExpression expression;\n\t\tint value;\n\t\tint originalValue;\n\t} secondary;\n\n\tvoid reset()\n\t{\n\t\tprimary.type = MipsImmediateType::None;\n\t\tif (primary.expression.isLoaded())\n\t\t\tprimary.expression = Expression();\n\n\t\tsecondary.type = MipsImmediateType::None;\n\t\tif (secondary.expression.isLoaded())\n\t\t\tsecondary.expression = Expression();\n\t}\n};\n\nstruct MipsOpcodeData\n{\n\ttMipsOpcode opcode;\n\tint vfpuSize;\n\tint vectorCondition;\n\n\tvoid reset()\n\t{\n\t\tvfpuSize = vectorCondition = -1;\n\t}\n};\n\nclass CMipsInstruction: public CAssemblerCommand\n{\npublic:\n\tCMipsInstruction(MipsOpcodeData& opcode, MipsImmediateData& immediate, MipsRegisterData& registers);\n\t~CMipsInstruction();\n\tvirtual bool Validate();\n\tvirtual void Encode() const;\n\tvirtual void writeTempData(TempData& tempData) const;\nprivate:\n\tvoid encodeNormal() const;\n\tvoid encodeVfpu() const;\n\tint floatToHalfFloat(int i);\n\n\tbool IgnoreLoadDelay;\n\tint64_t RamPos;\n\tbool addNop;\n\n\t// opcode variables\n\tMipsOpcodeData opcodeData;\n\tMipsImmediateData immediateData;\n\tMipsRegisterData registerData;\n};\n\n// file: Util/EncodingTable.h\n#include <map>\n\nclass Trie\n{\npublic:\n\tTrie();\n\tvoid insert(const wchar_t* text, size_t value);\n\tvoid insert(wchar_t character, size_t value);\n\tbool findLongestPrefix(const wchar_t* text, size_t& result);\nprivate:\n\tstruct LookupEntry\n\t{\n\t\tsize_t node;\n\t\twchar_t input;\n\n\t\tbool operator<(const LookupEntry& other) const\n\t\t{\n\t\t\tif (node != other.node)\n\t\t\t\treturn node < other.node;\n\t\t\treturn input < other.input;\n\t\t}\n\t};\n\n\tstruct Node\n\t{\n\t\tsize_t index;\n\t\tbool hasValue;\n\t\tsize_t value;\n\t};\n\n\tstd::vector<Node> nodes;\n\tstd::map<LookupEntry,size_t> lookup;\n};\n\nclass EncodingTable\n{\npublic:\n\tEncodingTable();\n\t~EncodingTable();\n\tvoid clear();\n\tbool load(const std::wstring& fileName, TextFile::Encoding encoding = TextFile::GUESS);\n\tbool isLoaded() { return entries.size() != 0; };\n\tvoid addEntry(unsigned char* hex, size_t hexLength, const std::wstring& value);\n\tvoid addEntry(unsigned char* hex, size_t hexLength, wchar_t value);\n\tvoid setTerminationEntry(unsigned char* hex, size_t hexLength);\n\tByteArray encodeString(const std::wstring& str, bool writeTermination = true);\n\tByteArray encodeTermination();\nprivate:\n\tstruct TableEntry\n\t{\n\t\tsize_t hexPos;\n\t\tsize_t hexLen;\n\t\tsize_t valueLen;\n\t};\n\n\tByteArray hexData;\n\tstd::vector<TableEntry> entries;\n\tTrie lookup;\n\tTableEntry terminationEntry;\n};\n\n// file: Core/Misc.h\n#include <vector>\n\nclass Logger\n{\npublic:\n\tenum ErrorType { Warning, Error, FatalError, Notice };\n\n\tstatic void clear();\n\tstatic void printLine(const std::wstring& text);\n\tstatic void printLine(const std::string& text);\n\n\ttemplate <typename... Args>\n\tstatic void printLine(const wchar_t* text, const Args&... args)\n\t{\n\t\tstd::wstring message = formatString(text,args...);\n\t\tprintLine(message);\n\t}\n\n\tstatic void print(const std::wstring& text);\n\n\ttemplate <typename... Args>\n\tstatic void print(const wchar_t* text, const Args&... args)\n\t{\n\t\tstd::wstring message = formatString(text,args...);\n\t\tprint(message);\n\t}\n\n\tstatic void printError(ErrorType type, const std::wstring& text);\n\tstatic void printError(ErrorType type, const wchar_t* text);\n\tstatic void queueError(ErrorType type, const std::wstring& text);\n\tstatic void queueError(ErrorType type, const wchar_t* text);\n\n\ttemplate <typename... Args>\n\tstatic void printError(ErrorType type, const wchar_t* text, const Args&... args)\n\t{\n\t\tstd::wstring message = formatString(text,args...);\n\t\tprintError(type,message);\n\t}\n\n\ttemplate <typename... Args>\n\tstatic void queueError(ErrorType type, const wchar_t* text, const Args&... args)\n\t{\n\t\tstd::wstring message = formatString(text,args...);\n\t\tqueueError(type,message);\n\t}\n\n\tstatic void printQueue();\n\tstatic void clearQueue() { queue.clear(); };\n\tstatic StringList getErrors() { return errors; };\n\tstatic bool hasError() { return error; };\n\tstatic bool hasFatalError() { return fatalError; };\n\tstatic void setErrorOnWarning(bool b) { errorOnWarning = b; };\n\tstatic void setSilent(bool b) { silent = b; };\n\tstatic bool isSilent() { return silent; }\n\tstatic void suppressErrors() { ++suppressLevel; }\n\tstatic void unsuppressErrors() { if (suppressLevel) --suppressLevel; }\nprivate:\n\tstatic std::wstring formatError(ErrorType type, const wchar_t* text);\n\tstatic void setFlags(ErrorType type);\n\n\tstruct QueueEntry\n\t{\n\t\tErrorType type;\n\t\tstd::wstring text;\n\t};\n\n\tstatic std::vector<QueueEntry> queue;\n\tstatic std::vector<std::wstring> errors;\n\tstatic bool error;\n\tstatic bool fatalError;\n\tstatic bool errorOnWarning;\n\tstatic bool silent;\n\tstatic int suppressLevel;\n};\n\nclass TempData\n{\npublic:\n\tvoid setFileName(const std::wstring& name) { file.setFileName(name); };\n\tvoid clear() { file.setFileName(L\"\"); }\n\tvoid start();\n\tvoid end();\n\tvoid writeLine(int64_t memoryAddress, const std::wstring& text);\n\tbool isOpen() { return file.isOpen(); }\nprivate:\n\tTextFile file;\n};\n\n// file: Core/Assembler.h\n\n#define ARMIPS_VERSION_MAJOR    0\n#define ARMIPS_VERSION_MINOR    11\n#define ARMIPS_VERSION_REVISION 0\n\nenum class ArmipsMode { FILE, MEMORY };\n\nstruct LabelDefinition\n{\n\tstd::wstring originalName;\n\tstd::wstring name;\n\tint64_t value;\n};\n\nstruct EquationDefinition\n{\n\tstd::wstring name;\n\tstd::wstring value;\n};\n\nstruct ArmipsArguments\n{\n\t// common\n\tArmipsMode mode;\n\tint symFileVersion;\n\tbool errorOnWarning;\n\tbool silent;\n\tStringList* errorsResult;\n\tstd::vector<EquationDefinition> equList;\n\tstd::vector<LabelDefinition> labels;\n\n\t// file mode\n\tstd::wstring inputFileName;\n\tstd::wstring tempFileName;\n\tstd::wstring symFileName;\n\tbool useAbsoluteFileNames;\n\n\t// memory mode\n\tstd::shared_ptr<AssemblerFile> memoryFile;\n\tstd::wstring content;\n\n\tArmipsArguments()\n\t{\n\t\tmode = ArmipsMode::FILE;\n\t\tsymFileVersion = 0;\n\t\terrorOnWarning = false;\n\t\tsilent = false;\n\t\terrorsResult = nullptr;\n\t\tuseAbsoluteFileNames = true;\n\t}\n};\n\nbool runArmips(ArmipsArguments& settings);\n\n// file: Core/SymbolTable.h\n\n#include <map>\n\nstruct SymbolKey\n{\n\tstd::wstring name;\n\tint file;\n\tint section;\n};\n\nbool operator<(SymbolKey const& lhs, SymbolKey const& rhs);\n\nclass Label\n{\npublic:\n\tLabel(std::wstring name): name(name),defined(false),data(false),updateInfo(true),info(0) { };\n\tconst std::wstring getName() { return name; };\n\tvoid setOriginalName(const std::wstring& name) { originalName = name; }\n\tconst std::wstring getOriginalName() { return originalName.empty() ? name : originalName; }\n\tint64_t getValue() { return value; };\n\tvoid setValue(int64_t val) { value = val; };\n\tbool hasPhysicalValue() { return physicalValueSet; }\n\tint64_t getPhysicalValue() { return physicalValue; }\n\tvoid setPhysicalValue(int64_t val) { physicalValue = val; physicalValueSet = true; }\n\tbool isDefined() { return defined; };\n\tvoid setDefined(bool b) { defined = b; };\n\tbool isData() { return data; };\n\tvoid setIsData(bool b) { data = b; };\n\tvoid setInfo(int inf) { info = inf; };\n\tint getInfo() { return info; };\n\tvoid setUpdateInfo(bool b) { updateInfo = b; };\n\tbool getUpdateInfo() { return updateInfo; };\n\tvoid setSection(int num) { section = num; }\n\tint getSection() { return section; }\nprivate:\n\tstd::wstring name, originalName;\n\tint64_t value;\n\tint64_t physicalValue;\n\tbool physicalValueSet = false;\n\tbool defined;\n\tbool data;\n\tbool updateInfo;\n\tint info;\n\tint section;\n};\n\nclass SymbolTable\n{\npublic:\n\tSymbolTable();\n\t~SymbolTable();\n\tvoid clear();\n\tbool symbolExists(const std::wstring& symbol, int file, int section);\n\tstatic bool isValidSymbolName(const std::wstring& symbol);\n\tstatic bool isValidSymbolCharacter(wchar_t character, bool first = false);\n\tstatic bool isLocalSymbol(const std::wstring& symbol, size_t pos = 0) { return symbol.size() >= pos+2 && symbol[pos+0] == '@' && symbol[pos+1] == '@'; };\n\tstatic bool isStaticSymbol(const std::wstring& symbol, size_t pos = 0) { return symbol.size() >= pos+1 && symbol[pos+0] == '@'; };\n\tstatic bool isGlobalSymbol(const std::wstring& symbol, size_t pos = 0) { return !isLocalSymbol(symbol) && !isStaticSymbol(symbol); };\n\n\tstd::shared_ptr<Label> getLabel(const std::wstring& symbol, int file, int section);\n\tbool addEquation(const std::wstring& name, int file, int section, size_t referenceIndex);\n\tbool findEquation(const std::wstring& name, int file, int section, size_t& dest);\n\tvoid addLabels(const std::vector<LabelDefinition>& labels);\n\tint findSection(int64_t address);\n\n\tstd::wstring getUniqueLabelName(bool local = false);\n\tsize_t getLabelCount() { return labels.size(); };\n\tsize_t getEquationCount() { return equationsCount; };\n\tbool isGeneratedLabel(const std::wstring& name) { return generatedLabels.find(name) != generatedLabels.end(); }\nprivate:\n\tvoid setFileSectionValues(const std::wstring& symbol, int& file, int& section);\n\n\tenum SymbolType { LabelSymbol, EquationSymbol };\n\tstruct SymbolInfo\n\t{\n\t\tSymbolType type;\n\t\tsize_t index;\n\t};\n\n\tstd::map<SymbolKey,SymbolInfo> symbols;\n\tstd::vector<std::shared_ptr<Label>> labels;\n\tsize_t equationsCount;\n\tsize_t uniqueCount;\n\tstd::set<std::wstring> generatedLabels;\n};\n\n// file: Core/Common.h\n\n#include <vector>\n\ntypedef struct {\n\tstd::vector<std::wstring> FileList;\n\tint FileCount;\n\tint FileNum;\n\tint LineNumber;\n\tint TotalLineCount;\n} tFileInfo;\n\ntypedef struct {\n\ttFileInfo FileInfo;\n\tSymbolTable symbolTable;\n\tEncodingTable Table;\n\tint Section;\n\tbool nocash;\n\tbool relativeInclude;\n\tint validationPasses;\n\tbool memoryMode;\n\tstd::shared_ptr<AssemblerFile> memoryFile;\n\tbool multiThreading;\n} tGlobal;\n\nextern tGlobal Global;\nextern CArchitecture* Arch;\n\nclass FileManager;\nextern FileManager* g_fileManager;\n\nstd::wstring getFolderNameFromPath(const std::wstring& src);\nstd::wstring getFullPathName(const std::wstring& path);\n\nbool checkLabelDefined(const std::wstring& labelName, int section);\nbool checkValidLabelName(const std::wstring& labelName);\n\nbool isPowerOfTwo(int64_t n);\n\n// file: Parser/DirectivesParser.h\n\n#include <unordered_map>\n\nclass CAssemblerCommand;\nclass Parser;\n\nusing DirectiveFunc = std::unique_ptr<CAssemblerCommand> (*)(Parser&,int);\n\nstruct DirectiveEntry {\n\tDirectiveFunc function;\n\tint flags;\n};\n\nusing DirectiveMap = std::unordered_multimap<std::wstring, const DirectiveEntry>;\n\n#define DIRECTIVE_USERMASK\t\t\t0x0000FFFF\n\n// Global flags\n#define DIRECTIVE_NOCASHON\t\t\t0x00010000\n#define DIRECTIVE_NOCASHOFF\t\t\t0x00020000\n#define DIRECTIVE_MIPSRESETDELAY\t0x00040000\n#define DIRECTIVE_DISABLED\t\t\t0x00080000\n#define DIRECTIVE_NOTINMEMORY\t\t0x00100000\n#define DIRECTIVE_MANUALSEPARATOR\t0x00200000\n\n// file directive flags\n#define DIRECTIVE_POS_PHYSICAL\t\t0x00000001\n#define DIRECTIVE_POS_VIRTUAL\t\t0x00000002\n#define DIRECTIVE_ALIGN_PHYSICAL\t0x00000001\n#define DIRECTIVE_ALIGN_VIRTUAL\t\t0x00000002\n#define DIRECTIVE_ALIGN_FILL\t\t0x00000004\n\n// conditional directive flags\n#define DIRECTIVE_COND_IF\t\t\t0x00000001\n#define DIRECTIVE_COND_IFDEF\t\t0x00000002\n#define DIRECTIVE_COND_IFNDEF\t\t0x00000003\n\n// data directive flags\n#define DIRECTIVE_DATA_8\t\t\t0x00000001\n#define DIRECTIVE_DATA_16\t\t\t0x00000002\n#define DIRECTIVE_DATA_32\t\t\t0x00000003\n#define DIRECTIVE_DATA_64\t\t\t0x00000004\n#define DIRECTIVE_DATA_ASCII\t\t0x00000005\n#define DIRECTIVE_DATA_SJIS\t\t\t0x00000006\n#define DIRECTIVE_DATA_CUSTOM\t\t0x00000007\n#define DIRECTIVE_DATA_FLOAT\t\t0x00000008\n#define DIRECTIVE_DATA_DOUBLE\t\t0x00000009\n#define DIRECTIVE_DATA_TERMINATION\t0x00000100\n\n// message directive flags\n#define DIRECTIVE_MSG_WARNING\t\t0x00000001\n#define DIRECTIVE_MSG_ERROR\t\t\t0x00000002\n#define DIRECTIVE_MSG_NOTICE\t\t0x00000003\n\n// MIPS directive flags\n#define DIRECTIVE_MIPS_PSX\t\t\t0x00000001\n#define DIRECTIVE_MIPS_PS2\t\t\t0x00000002\n#define DIRECTIVE_MIPS_PSP\t\t\t0x00000003\n#define DIRECTIVE_MIPS_N64\t\t\t0x00000004\n#define DIRECTIVE_MIPS_RSP\t\t\t0x00000005\n\n// ARM directive flags\n#define DIRECTIVE_ARM_GBA\t\t\t0x00000001\n#define DIRECTIVE_ARM_NDS\t\t\t0x00000002\n#define DIRECTIVE_ARM_3DS\t\t\t0x00000003\n#define DIRECTIVE_ARM_BIG\t\t\t0x00000004\n#define DIRECTIVE_ARM_LITTLE\t\t0x00000005\n\nextern const DirectiveMap directives;\n\n// file: Parser/Tokenizer.h\n\nenum class TokenType\n{\n\tInvalid,\n\tIdentifier,\n\tInteger,\n\tString,\n\tFloat,\n\tLParen,\n\tRParen,\n\tPlus,\n\tMinus,\n\tMult,\n\tDiv,\n\tMod,\n\tCaret,\n\tTilde,\n\tLeftShift,\n\tRightShift,\n\tLess,\n\tGreater,\n\tLessEqual,\n\tGreaterEqual,\n\tEqual,\n\tNotEqual,\n\tBitAnd,\n\tBitOr,\n\tLogAnd,\n\tLogOr,\n\tExclamation,\n\tQuestion,\n\tColon,\n\tLBrack,\n\tRBrack,\n\tComma,\n\tAssign,\n\tEqu,\n\tEquValue,\n\tHash,\n\tLBrace,\n\tRBrace,\n\tDollar,\n\tNumberString,\n\tDegree,\n\tSeparator\n};\n\nstruct Token\n{\n\tfriend class Tokenizer;\n\n\tToken() : originalText(nullptr), stringValue(nullptr), checked(false)\n\t{\n\t}\n\n\tToken(Token &&src)\n\t{\n\t\t// Move strings.\n\t\toriginalText = src.originalText;\n\t\tsrc.originalText = nullptr;\n\t\tstringValue = src.stringValue;\n\t\tsrc.stringValue = nullptr;\n\n\t\t// Just copy the rest.\n\t\ttype = src.type;\n\t\tline = src.line;\n\t\tcolumn = src.column;\n\t\tfloatValue = src.floatValue;\n\t\tchecked = src.checked;\n\t}\n\n\tToken(const Token &src) {\n\t\t// Copy strings.\n\t\toriginalText = nullptr;\n\t\tif (src.originalText)\n\t\t\tsetOriginalText(src.originalText);\n\t\tstringValue = nullptr;\n\t\tif (src.stringValue)\n\t\t\tsetStringValue(src.stringValue);\n\n\t\t// And copy the rest.\n\t\ttype = src.type;\n\t\tline = src.line;\n\t\tcolumn = src.column;\n\t\tfloatValue = src.floatValue;\n\t\tchecked = src.checked;\n\t}\n\n\t~Token()\n\t{\n\t\tclearOriginalText();\n\t\tclearStringValue();\n\t}\n\n\tToken& operator=(const Token& src)\n\t{\n\t\t// Copy strings.\n\t\toriginalText = nullptr;\n\t\tif (src.originalText)\n\t\t\tsetOriginalText(src.originalText);\n\t\tstringValue = nullptr;\n\t\tif (src.stringValue)\n\t\t\tsetStringValue(src.stringValue);\n\n\t\t// And copy the rest.\n\t\ttype = src.type;\n\t\tline = src.line;\n\t\tcolumn = src.column;\n\t\tfloatValue = src.floatValue;\n\t\tchecked = src.checked;\n\n\t\treturn *this;\n\t}\n\n\tvoid setOriginalText(const std::wstring& t)\n\t{\n\t\tsetOriginalText(t, 0, t.length());\n\t}\n\n\tvoid setOriginalText(const std::wstring& t, const size_t pos, const size_t len)\n\t{\n\t\tclearOriginalText();\n\t\toriginalText = new wchar_t[len + 1];\n\t\twmemcpy(originalText, t.data() + pos, len);\n\t\toriginalText[len] = 0;\n\t}\n\n\tstd::wstring getOriginalText() const\n\t{\n\t\treturn originalText;\n\t}\n\n\tvoid setStringValue(const std::wstring& t)\n\t{\n\t\tsetStringValue(t, 0, t.length());\n\t}\n\n\tvoid setStringValue(const std::wstring& t, const size_t pos, const size_t len)\n\t{\n\t\tclearStringValue();\n\t\tstringValue = new wchar_t[len + 1];\n\t\twmemcpy(stringValue, t.data() + pos, len);\n\t\tstringValue[len] = 0;\n\t}\n\n\tvoid setStringAndOriginalValue(const std::wstring& t)\n\t{\n\t\tsetStringAndOriginalValue(t, 0, t.length());\n\t}\n\n\tvoid setStringAndOriginalValue(const std::wstring& t, const size_t pos, const size_t len)\n\t{\n\t\tsetStringValue(t, pos, len);\n\t\tclearOriginalText();\n\t\toriginalText = stringValue;\n\t}\n\n\tstd::wstring getStringValue() const\n\t{\n\t\tif (stringValue)\n\t\t\treturn stringValue;\n\t\treturn L\"\";\n\t}\n\n\tbool stringValueStartsWith(wchar_t c) const\n\t{\n\t\tif (stringValue)\n\t\t\treturn stringValue[0] == c;\n\t\treturn false;\n\t}\n\n\tTokenType type;\n\tsize_t line;\n\tsize_t column;\n\n\tunion\n\t{\n\t\tint64_t intValue;\n\t\tdouble floatValue;\n\t};\n\nprotected:\n\tvoid clearOriginalText()\n\t{\n\t\tif (originalText != stringValue)\n\t\t\tdelete [] originalText;\n\t\toriginalText = nullptr;\n\t}\n\n\tvoid clearStringValue()\n\t{\n\t\tif (stringValue != originalText)\n\t\t\tdelete [] stringValue;\n\t\tstringValue = nullptr;\n\t}\n\n\twchar_t* originalText;\n\twchar_t* stringValue;\n\n\tbool checked;\n};\n\ntypedef std::list<Token> TokenList;\n\nstruct TokenizerPosition\n{\n\tfriend class Tokenizer;\n\n\tTokenizerPosition previous()\n\t{\n\t\tTokenizerPosition pos = *this;\n\t\tpos.it--;\n\t\treturn pos;\n\t}\nprivate:\n\tTokenList::iterator it;\n};\n\nclass Tokenizer\n{\npublic:\n\tTokenizer();\n\tconst Token& nextToken();\n\tconst Token& peekToken(int ahead = 0);\n\tvoid eatToken() { eatTokens(1); }\n\tvoid eatTokens(int num);\n\tbool atEnd() { return position.it == tokens.end(); }\n\tTokenizerPosition getPosition() { return position; }\n\tvoid setPosition(TokenizerPosition pos) { position = pos; }\n\tvoid skipLookahead();\n\tstd::vector<Token> getTokens(TokenizerPosition start, TokenizerPosition end) const;\n\tvoid registerReplacement(const std::wstring& identifier, std::vector<Token>& tokens);\n\tvoid registerReplacement(const std::wstring& identifier, const std::wstring& newValue);\n\tstatic size_t addEquValue(const std::vector<Token>& tokens);\n\tstatic void clearEquValues() { equValues.clear(); }\n\tvoid resetLookaheadCheckMarks();\nprotected:\n\tvoid clearTokens() { tokens.clear(); };\n\tvoid resetPosition() { position.it = tokens.begin(); }\n\tvoid addToken(Token token);\nprivate:\n\tbool processElement(TokenList::iterator& it);\n\n\tTokenList tokens;\n\tTokenizerPosition position;\n\n\tstruct Replacement\n\t{\n\t\tstd::wstring identifier;\n\t\tstd::vector<Token> value;\n\t};\n\n\tToken invalidToken;\n\tstd::vector<Replacement> replacements;\n\tstatic std::vector<std::vector<Token>> equValues;\n};\n\nclass FileTokenizer: public Tokenizer\n{\npublic:\n\tbool init(TextFile* input);\nprotected:\n\tToken loadToken();\n\tbool isInputAtEnd() { return linePos >= currentLine.size() && input->atEnd(); };\n\n\tvoid skipWhitespace();\n\tvoid createToken(TokenType type, size_t length);\n\tvoid createToken(TokenType type, size_t length, int64_t value);\n\tvoid createToken(TokenType type, size_t length, double value);\n\tvoid createToken(TokenType type, size_t length, const std::wstring& value);\n\tvoid createToken(TokenType type, size_t length, const std::wstring& value, size_t valuePos, size_t valueLength);\n\tvoid createTokenCurrentString(TokenType type, size_t length);\n\n\tbool convertInteger(size_t start, size_t end, int64_t& result);\n\tbool convertFloat(size_t start, size_t end, double& result);\n\tbool parseOperator();\n\n\tTextFile* input;\n\tstd::wstring currentLine;\n\tsize_t lineNumber;\n\tsize_t linePos;\n\n\tToken token;\n\tbool equActive;\n};\n\nclass TokenStreamTokenizer: public Tokenizer\n{\npublic:\n\tvoid init(const std::vector<Token>& tokens)\n\t{\n\t\tclearTokens();\n\n\t\tfor (const Token &tok: tokens)\n\t\t\taddToken(tok);\n\n\t\tresetPosition();\n\t}\n};\n\n// file: Archs/MIPS/MipsMacros.h\n\n#define MIPSM_B\t\t\t\t\t\t0x00000001\n#define MIPSM_BU\t\t\t\t\t0x00000002\n#define MIPSM_HW\t\t\t\t\t0x00000003\n#define MIPSM_HWU\t\t\t\t\t0x00000004\n#define MIPSM_W\t\t\t\t\t\t0x00000005\n#define MIPSM_WU\t\t\t\t\t0x00000006\n#define MIPSM_DW\t\t\t\t\t0x00000007\n#define MIPSM_LLSCW\t\t\t\t\t0x00000008\n#define MIPSM_LLSCDW\t\t\t\t0x00000009\n#define MIPSM_COP1\t\t\t\t\t0x0000000a\n#define MIPSM_COP2\t\t\t\t\t0x0000000b\n#define MIPSM_DCOP1\t\t\t\t\t0x0000000c\n#define MIPSM_DCOP2\t\t\t\t\t0x0000000d\n#define MIPSM_ACCESSMASK\t\t\t0x0000000f\n\n#define MIPSM_NE\t\t\t\t\t0x00000001\n#define MIPSM_LT\t\t\t\t\t0x00000002\n#define MIPSM_LTU\t\t\t\t\t0x00000003\n#define MIPSM_GE\t\t\t\t\t0x00000004\n#define MIPSM_GEU\t\t\t\t\t0x00000005\n#define MIPSM_EQ\t\t\t\t\t0x00000006\n#define MIPSM_CONDITIONMASK\t\t\t0x00000007\n\n#define MIPSM_IMM\t\t\t\t\t0x00000200\n#define MIPSM_LEFT\t\t\t\t\t0x00000400\n#define MIPSM_RIGHT\t\t\t\t\t0x00000800\n#define MIPSM_UNALIGNED\t\t\t\t0x00001000\n#define MIPSM_DONTWARNDELAYSLOT\t\t0x00002000\n#define MIPSM_UPPER\t\t\t\t\t0x00004000\n#define MIPSM_LOWER\t\t\t\t\t0x00008000\n#define MIPSM_LOAD\t\t\t\t\t0x00010000\n#define MIPSM_STORE\t\t\t\t\t0x00020000\n#define MIPSM_LIKELY\t\t\t\t0x00040000\n#define MIPSM_REVCMP\t\t\t\t0x00080000\n\nclass Parser;\n\nusing MipsMacroFunc = std::unique_ptr<CAssemblerCommand> (*)(Parser&,MipsRegisterData&,MipsImmediateData&,int);\n\nstruct MipsMacroDefinition {\n\tconst wchar_t* name;\n\tconst wchar_t* args;\n\tMipsMacroFunc function;\n\tint flags;\n};\n\nextern const MipsMacroDefinition mipsMacros[];\n\nclass MipsMacroCommand: public CAssemblerCommand\n{\npublic:\n\tMipsMacroCommand(std::unique_ptr<CAssemblerCommand> content, int macroFlags);\n\tvirtual bool Validate();\n\tvirtual void Encode() const;\n\tvirtual void writeTempData(TempData& tempData) const;\nprivate:\n\tstd::unique_ptr<CAssemblerCommand> content;\n\tint macroFlags;\n\tbool IgnoreLoadDelay;\n};\n\n// file: Archs/MIPS/MipsParser.h\n#include <unordered_map>\n\nstruct MipsRegisterDescriptor {\n\tconst wchar_t* name;\n\tint num;\n};\n\nclass MipsParser\n{\npublic:\n\tstd::unique_ptr<CAssemblerCommand> parseDirective(Parser& parser);\n\tstd::unique_ptr<CMipsInstruction> parseOpcode(Parser& parser);\n\tstd::unique_ptr<CAssemblerCommand> parseMacro(Parser& parser);\nprivate:\n\tbool parseRegisterNumber(Parser& parser, MipsRegisterValue& dest, int numValues);\n\tbool parseRegisterTable(Parser& parser, MipsRegisterValue& dest, const MipsRegisterDescriptor* table, size_t count);\n\tbool parseRegister(Parser& parser, MipsRegisterValue& dest);\n\tbool parseFpuRegister(Parser& parser, MipsRegisterValue& dest);\n\tbool parseFpuControlRegister(Parser& parser, MipsRegisterValue& dest);\n\tbool parseCop0Register(Parser& parser, MipsRegisterValue& dest);\n\tbool parsePs2Cop2Register(Parser& parser, MipsRegisterValue& dest);\n\tbool parsePsxCop2DataRegister(Parser& parser, MipsRegisterValue& dest);\n\tbool parsePsxCop2ControlRegister(Parser& parser, MipsRegisterValue& dest);\n\tbool parseRspCop0Register(Parser& parser, MipsRegisterValue& dest);\n\tbool parseRspVectorControlRegister(Parser& parser, MipsRegisterValue& dest);\n\tbool parseRspVectorRegister(Parser& parser, MipsRegisterValue& dest);\n\tbool parseRspVectorElement(Parser& parser, MipsRegisterValue& dest);\n\tbool parseRspScalarElement(Parser& parser, MipsRegisterValue& dest);\n\tbool parseRspOffsetElement(Parser& parser, MipsRegisterValue& dest);\n\tbool parseVfpuRegister(Parser& parser, MipsRegisterValue& reg, int size);\n\tbool parseVfpuControlRegister(Parser& parser, MipsRegisterValue& reg);\n\tbool parseImmediate(Parser& parser, Expression& dest);\n\tbool parseVcstParameter(Parser& parser, int& result);\n\tbool parseVfpuVrot(Parser& parser, int& result, int size);\n\tbool parseVfpuCondition(Parser& parser, int& result);\n\tbool parseVpfxsParameter(Parser& parser, int& result);\n\tbool parseVpfxdParameter(Parser& parser, int& result);\n\tbool parseCop2BranchCondition(Parser& parser, int& result);\n\tbool parseWb(Parser& parser);\n\n\tbool decodeCop2BranchCondition(const std::wstring& text, size_t& pos, int& result);\n\tbool decodeVfpuType(const std::wstring& name, size_t& pos, int& dest);\n\tbool decodeOpcode(const std::wstring& name, const tMipsOpcode& opcode);\n\n\tvoid setOmittedRegisters(const tMipsOpcode& opcode);\n\tbool matchSymbol(Parser& parser, wchar_t symbol);\n\tbool parseParameters(Parser& parser, const tMipsOpcode& opcode);\n\tbool parseMacroParameters(Parser& parser, const MipsMacroDefinition& macro);\n\n\tMipsRegisterData registers;\n\tMipsImmediateData immediate;\n\tMipsOpcodeData opcodeData;\n\tbool hasFixedSecondaryImmediate;\n};\n\nclass MipsOpcodeFormatter\n{\npublic:\n\tconst std::wstring& formatOpcode(const MipsOpcodeData& opData, const MipsRegisterData& regData,\n\t\tconst MipsImmediateData& immData);\nprivate:\n\tvoid handleOpcodeName(const MipsOpcodeData& opData);\n\tvoid handleOpcodeParameters(const MipsOpcodeData& opData, const MipsRegisterData& regData,\n\t\tconst MipsImmediateData& immData);\n\tvoid handleImmediate(MipsImmediateType type, unsigned int originalValue, unsigned int opcodeFlags);\n\n\tstd::wstring buffer;\n};\n\n// file: Archs/MIPS/CMipsInstruction.cpp\n\nCMipsInstruction::CMipsInstruction(MipsOpcodeData& opcode, MipsImmediateData& immediate, MipsRegisterData& registers)\n{\n\tthis->opcodeData = opcode;\n\tthis->immediateData = immediate;\n\tthis->registerData = registers;\n\n\taddNop = false;\n\tIgnoreLoadDelay = Mips.GetIgnoreDelay();\n}\n\nCMipsInstruction::~CMipsInstruction()\n{\n\n}\n\nint getImmediateBits(MipsImmediateType type)\n{\n\tswitch (type)\n\t{\n\tcase MipsImmediateType::Immediate5:\n\t\treturn 5;\n\tcase MipsImmediateType::Immediate7:\n\t\treturn 7;\n\tcase MipsImmediateType::Immediate10:\n\t\treturn 10;\n\tcase MipsImmediateType::Immediate16:\n\tcase MipsImmediateType::ImmediateHalfFloat:\n\t\treturn 16;\n\tcase MipsImmediateType::Immediate20:\n\tcase MipsImmediateType::Immediate20_0:\n\t\treturn 20;\n\tcase MipsImmediateType::Immediate25:\n\t\treturn 25;\n\tcase MipsImmediateType::Immediate26:\n\t\treturn 26;\n\tdefault:\n\t\treturn 0;\n\t}\n}\n\n// http://code.google.com/p/jpcsp/source/browse/trunk/src/jpcsp/Allegrex/VfpuState.java?spec=svn3676&r=3383#1196\nint CMipsInstruction::floatToHalfFloat(int i)\n{\n\tint s = ((i >> 16) & 0x00008000); // sign\n\tint e = ((i >> 23) & 0x000000ff) - (127 - 15); // exponent\n\tint f = ((i >> 0) & 0x007fffff); // fraction\n\n\t// need to handle NaNs and Inf?\n\tif (e <= 0) {\n\t\tif (e < -10) {\n\t\t\tif (s != 0) {\n\t\t\t\t// handle -0.0\n\t\t\t\treturn 0x8000;\n\t\t\t}\n\t\t\treturn 0;\n\t\t}\n\t\tf = (f | 0x00800000) >> (1 - e);\n\t\treturn s | (f >> 13);\n\t} else if (e == 0xff - (127 - 15)) {\n\t\tif (f == 0) {\n\t\t\t// Inf\n\t\t\treturn s | 0x7c00;\n\t\t}\n\t\t// NAN\n\t\treturn s | 0x7fff;\n\t}\n\n\tif (e > 30) {\n\t\t// Overflow\n\t\treturn s | 0x7c00;\n\t}\n\n\treturn s | (e << 10) | (f >> 13);\n}\n\nbool CMipsInstruction::Validate()\n{\n\tbool Result = false;\n\n\tbool previousNop = addNop;\n\taddNop = false;\n\n\tRamPos = g_fileManager->getVirtualAddress();\n\tif (RamPos % 4)\n\t{\n\t\tLogger::queueError(Logger::Error,L\"opcode not aligned to word boundary\");\n\t\treturn false;\n\t}\n\n\t// check immediates\n\tif (immediateData.primary.type != MipsImmediateType::None)\n\t{\n\t\tif (immediateData.primary.expression.isLoaded())\n\t\t{\n\t\t\tif (immediateData.primary.expression.evaluateInteger(immediateData.primary.value) == false)\n\t\t\t{\n\t\t\t\tLogger::queueError(Logger::Error, L\"Invalid immediate expression\");\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\timmediateData.primary.originalValue = immediateData.primary.value;\n\t\t}\n\n\t\tif (immediateData.primary.type == MipsImmediateType::ImmediateHalfFloat)\n\t\t\timmediateData.primary.value = floatToHalfFloat(immediateData.primary.originalValue);\n\n\t\tif (opcodeData.opcode.flags & MO_IMMALIGNED)\t// immediate must be aligned\n\t\t{\n\t\t\tif (immediateData.primary.value % 4)\n\t\t\t{\n\t\t\t\tLogger::queueError(Logger::Error,L\"Immediate must be word aligned\");\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tif (opcodeData.opcode.flags & MO_NEGIMM) \t\t// negated immediate\n\t\t{\n\t\t\timmediateData.primary.value = -immediateData.primary.value;\n\t\t} else if (opcodeData.opcode.flags & MO_IPCA)\t// absolute value >> 2\n\t\t{\n\t\t\timmediateData.primary.value = (immediateData.primary.value >> 2) & 0x3FFFFFF;\n\t\t} else if (opcodeData.opcode.flags & MO_IPCR)\t// relative 16 bit value\n\t\t{\n\t\t\tint num = (int) (immediateData.primary.value-RamPos-4);\n\n\t\t\tif (num > 0x20000 || num < (-0x20000))\n\t\t\t{\n\t\t\t\tLogger::queueError(Logger::Error,L\"Branch target %08X out of range\",immediateData.primary.value);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\timmediateData.primary.value = num >> 2;\n\t\t} else if (opcodeData.opcode.flags & (MO_RSP_HWOFFSET | MO_RSP_WOFFSET | MO_RSP_DWOFFSET | MO_RSP_QWOFFSET))\n\t\t{\n\t\t\tint shift = 0;\n\n\t\t\tif (opcodeData.opcode.flags & MO_RSP_HWOFFSET) shift = 1;\n\t\t\telse if (opcodeData.opcode.flags & MO_RSP_WOFFSET) shift = 2;\n\t\t\telse if (opcodeData.opcode.flags & MO_RSP_DWOFFSET) shift = 3;\n\t\t\telse if (opcodeData.opcode.flags & MO_RSP_QWOFFSET) shift = 4;\n\n\t\t\tif (immediateData.primary.value & ((1 << shift) - 1))\n\t\t\t{\n\t\t\t\tLogger::queueError(Logger::Error,L\"Offset must be %d-byte aligned\",1<<shift);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\timmediateData.primary.value = immediateData.primary.value >> shift;\n\t\t}\n\n\t\tint immediateBits = getImmediateBits(immediateData.primary.type);\n\t\tunsigned int mask = (0xFFFFFFFF << (32-immediateBits)) >> (32-immediateBits);\n\t\tint digits = (immediateBits+3) / 4;\n\n\t\tif ((unsigned int)std::abs(immediateData.primary.value) > mask)\n\t\t{\n\t\t\tLogger::queueError(Logger::Error,L\"Immediate value 0x%0*X out of range\",digits,immediateData.primary.value);\n\t\t\treturn false;\n\t\t}\n\n\t\timmediateData.primary.value &= mask;\n\t}\n\n\tif (immediateData.secondary.type != MipsImmediateType::None)\n\t{\n\t\tif (immediateData.secondary.expression.isLoaded())\n\t\t{\n\t\t\tif (immediateData.secondary.expression.evaluateInteger(immediateData.secondary.value) == false)\n\t\t\t{\n\t\t\t\tLogger::queueError(Logger::Error, L\"Invalid immediate expression\");\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\timmediateData.secondary.originalValue = immediateData.secondary.value;\n\t\t}\n\n\t\tswitch (immediateData.secondary.type)\n\t\t{\n\t\tcase MipsImmediateType::CacheOp:\n\t\t\tif ((unsigned int)immediateData.secondary.value > 0x1f)\n\t\t\t{\n\t\t\t\tLogger::queueError(Logger::Error,L\"Immediate value %02X out of range\",immediateData.secondary.value);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase MipsImmediateType::Ext:\n\t\tcase MipsImmediateType::Ins:\n\t\t\tif (immediateData.secondary.value > 32 || immediateData.secondary.value == 0)\n\t\t\t{\n\t\t\t\tLogger::queueError(Logger::Error,L\"Immediate value %02X out of range\",immediateData.secondary.value);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\timmediateData.secondary.value--;\n\t\t\tif (immediateData.secondary.type == MipsImmediateType::Ins)\n\t\t\t\timmediateData.secondary.value += immediateData.primary.value;\n\t\t\tbreak;\n\t\tcase MipsImmediateType::Cop2BranchType:\n\t\tdefault:\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// check load delay\n\tif (Mips.hasLoadDelay() && Mips.GetLoadDelay() && IgnoreLoadDelay == false)\n\t{\n\t\tbool fix = false;\n\n\t\tif (registerData.grd.num != -1 && registerData.grd.num == Mips.GetLoadDelayRegister())\n\t\t{\n\t\t\tLogger::queueError(Logger::Warning,L\"register %S may not be available due to load delay\",registerData.grd.name);\n\t\t\tfix = true;\n\t\t} else if (registerData.grs.num != -1 && registerData.grs.num == Mips.GetLoadDelayRegister())\n\t\t{\n\t\t\tLogger::queueError(Logger::Warning,L\"register %S may not be available due to load delay\",registerData.grs.name);\n\t\t\tfix = true;\n\t\t} else if (registerData.grt.num != -1 && registerData.grt.num == Mips.GetLoadDelayRegister()\n\t\t\t&& !(opcodeData.opcode.flags & MO_IGNORERTD))\n\t\t{\n\t\t\tLogger::queueError(Logger::Warning,L\"register %S may not be available due to load delay\",registerData.grt.name);\n\t\t\tfix = true;\n\t\t}\n\n\t\tif (Mips.GetFixLoadDelay() == true && fix == true)\n\t\t{\n\t\t\taddNop = true;\n\t\t\tLogger::queueError(Logger::Notice,L\"added nop to ensure correct behavior\");\n\t\t}\n\t}\n\n\tif ((opcodeData.opcode.flags & MO_NODELAYSLOT) && Mips.GetDelaySlot() == true && IgnoreLoadDelay == false)\n\t{\n\t\tLogger::queueError(Logger::Error,L\"This instruction can't be in a delay slot\");\n\t}\n\n\tMips.SetDelaySlot(opcodeData.opcode.flags & MO_DELAY ? true : false);\n\n\t// now check if this opcode causes a load delay\n\tif (Mips.hasLoadDelay())\n\t\tMips.SetLoadDelay(opcodeData.opcode.flags & MO_DELAYRT ? true : false,registerData.grt.num);\n\n\tif (previousNop != addNop)\n\t\tResult = true;\n\n\tg_fileManager->advanceMemory(addNop ? 8 : 4);\n\treturn Result;\n}\n\nvoid CMipsInstruction::encodeNormal() const\n{\n\tint encoding = opcodeData.opcode.destencoding;\n\n\tif (registerData.grs.num != -1) encoding |= MIPS_RS(registerData.grs.num);\t// source reg\n\tif (registerData.grt.num != -1) encoding |= MIPS_RT(registerData.grt.num);\t// target reg\n\tif (registerData.grd.num != -1) encoding |= MIPS_RD(registerData.grd.num);\t// dest reg\n\n\tif (registerData.frt.num != -1) encoding |= MIPS_FT(registerData.frt.num);\t// float target reg\n\tif (registerData.frs.num != -1) encoding |= MIPS_FS(registerData.frs.num);\t// float source reg\n\tif (registerData.frd.num != -1) encoding |= MIPS_FD(registerData.frd.num);\t// float dest reg\n\n\tif (registerData.ps2vrt.num != -1) encoding |= (registerData.ps2vrt.num << 16);\t// ps2 vector target reg\n\tif (registerData.ps2vrs.num != -1) encoding |= (registerData.ps2vrs.num << 21);\t// ps2 vector source reg\n\tif (registerData.ps2vrd.num != -1) encoding |= (registerData.ps2vrd.num << 6);\t// ps2 vector dest reg\n\n\tif (registerData.rspvrt.num != -1) encoding |= MIPS_FT(registerData.rspvrt.num);\t// rsp vector target reg\n\tif (registerData.rspvrs.num != -1) encoding |= MIPS_FS(registerData.rspvrs.num);\t// rsp vector source reg\n\tif (registerData.rspvrd.num != -1) encoding |= MIPS_FD(registerData.rspvrd.num);\t// rsp vector dest reg\n\n\tif (registerData.rspve.num != -1) encoding |= MIPS_RSP_VE(registerData.rspve.num);\t\t\t// rsp element\n\tif (registerData.rspvde.num != -1) encoding |= MIPS_RSP_VDE(registerData.rspvde.num);\t\t// rsp destination element\n\tif (registerData.rspvealt.num != -1) encoding |= MIPS_RSP_VEALT(registerData.rspvealt.num);\t// rsp element (alt. placement)\n\n\tif (!(opcodeData.opcode.flags & MO_VFPU_MIXED) && registerData.vrt.num != -1)\t\t\t// vfpu rt\n\t\tencoding |= registerData.vrt.num << 16;\n\n\tswitch (immediateData.primary.type)\n\t{\n\tcase MipsImmediateType::Immediate5:\n\tcase MipsImmediateType::Immediate10:\n\tcase MipsImmediateType::Immediate20:\n\t\tencoding |= immediateData.primary.value << 6;\n\t\tbreak;\n\tcase MipsImmediateType::Immediate16:\n\tcase MipsImmediateType::Immediate25:\n\tcase MipsImmediateType::Immediate26:\n\tcase MipsImmediateType::Immediate20_0:\n\tcase MipsImmediateType::Immediate7:\n\tcase MipsImmediateType::ImmediateHalfFloat:\n\t\tencoding |= immediateData.primary.value;\n\t\tbreak;\n\tdefault:\n\t\t// TODO: Assert?\n\t\tbreak;\n\t}\n\n\tswitch (immediateData.secondary.type)\n\t{\n\tcase MipsImmediateType::CacheOp:\n\t\tencoding |= immediateData.secondary.value << 16;\n\t\tbreak;\n\tcase MipsImmediateType::Ext:\n\tcase MipsImmediateType::Ins:\n\t\tencoding |= immediateData.secondary.value << 11;\n\t\tbreak;\n\tcase MipsImmediateType::Cop2BranchType:\n\t\tencoding |= immediateData.secondary.value << 18;\n\t\tbreak;\n\tdefault:\n\t\t// TODO: Assert?\n\t\tbreak;\n\t}\n\n\tif (opcodeData.opcode.flags & MO_VFPU_MIXED)\n\t{\n\t\t// always vrt\n\t\tencoding |= registerData.vrt.num >> 5;\n\t\tencoding |= (registerData.vrt.num & 0x1F) << 16;\n\t}\n\n\tg_fileManager->writeU32((uint32_t)encoding);\n}\n\nvoid CMipsInstruction::encodeVfpu() const\n{\n\tint encoding = opcodeData.opcode.destencoding;\n\n\tif (opcodeData.vectorCondition != -1) encoding |= (opcodeData.vectorCondition << 0);\n\tif (registerData.vrd.num != -1) encoding |= (registerData.vrd.num << 0);\n\tif (registerData.vrs.num != -1) encoding |= (registerData.vrs.num << 8);\n\tif (registerData.vrt.num != -1) encoding |= (registerData.vrt.num << 16);\n\tif (opcodeData.vfpuSize != -1 && (opcodeData.opcode.flags & (MO_VFPU_PAIR|MO_VFPU_SINGLE|MO_VFPU_TRIPLE|MO_VFPU_QUAD)) == 0)\n\t{\n\t\tif (opcodeData.vfpuSize & 1) encoding |= (1 << 7);\n\t\tif (opcodeData.vfpuSize & 2) encoding |= (1 << 15);\n\t}\n\n\tif (registerData.grt.num != -1) encoding |= (registerData.grt.num << 16);\n\n\tswitch (immediateData.primary.type)\n\t{\n\tcase MipsImmediateType::Immediate5:\n\t\tencoding |= immediateData.primary.value << 16;\n\t\tbreak;\n\tcase MipsImmediateType::Immediate7:\n\t\tencoding |= immediateData.primary.value << 0;\n\t\tbreak;\n\tdefault:\n\t\t// TODO: Assert?\n\t\tbreak;\n\t}\n\n\tg_fileManager->writeU32((uint32_t)encoding);\n}\n\nvoid CMipsInstruction::Encode() const\n{\n\tif (addNop)\n\t\tg_fileManager->writeU32(0);\n\n\tif (opcodeData.opcode.flags & MO_VFPU)\n\t\tencodeVfpu();\n\telse\n\t\tencodeNormal();\n}\n\nvoid CMipsInstruction::writeTempData(TempData& tempData) const\n{\n\tMipsOpcodeFormatter formatter;\n\ttempData.writeLine(RamPos,formatter.formatOpcode(opcodeData,registerData,immediateData));\n}\n\n// file: Archs/MIPS/MipsExpressionFunctions.h\n\nextern const ExpressionFunctionMap mipsExpressionFunctions;\n\n// file: Archs/MIPS/MipsElfRelocator.h\n\nenum {\n\tR_MIPS_NONE,\n\tR_MIPS_16,\n\tR_MIPS_32,\n\tR_MIPS_REL32,\n\tR_MIPS_26,\n\tR_MIPS_HI16,\n\tR_MIPS_LO16,\n\tR_MIPS_GPREL16,\n\tR_MIPS_LITERAL,\n\tR_MIPS_GOT16,\n\tR_MIPS_PC16,\n\tR_MIPS_CALL16,\n\tR_MIPS_GPREL32\n};\n\nclass MipsElfRelocator: public IElfRelocator\n{\npublic:\n\tint expectedMachine() const override;\n\tbool relocateOpcode(int type, const RelocationData& data, std::vector<RelocationAction>& actions, std::vector<std::wstring>& errors) override;\n\tbool finish(std::vector<RelocationAction>& actions, std::vector<std::wstring>& errors) override;\n\tvoid setSymbolAddress(RelocationData& data, int64_t symbolAddress, int symbolType) override;\n\tstd::unique_ptr<CAssemblerCommand> generateCtorStub(std::vector<ElfRelocatorCtor>& ctors) override;\nprivate:\n\tbool processHi16Entries(uint32_t lo16Opcode, int64_t lo16RelocationBase, std::vector<RelocationAction>& actions, std::vector<std::wstring>& errors);\n\n\tstruct Hi16Entry\n\t{\n\t\tHi16Entry(int64_t offset, int64_t relocationBase, uint32_t opcode) : offset(offset), relocationBase(relocationBase), opcode(opcode) {}\n\t\tint64_t offset;\n\t\tint64_t relocationBase;\n\t\tuint32_t opcode;\n\t};\n\n\tstd::vector<Hi16Entry> hi16Entries;\n};\n\n// file: Archs/MIPS/Mips.cpp\n\nCMipsArchitecture Mips;\n\nCMipsArchitecture::CMipsArchitecture()\n{\n\tFixLoadDelay = false;\n\tIgnoreLoadDelay = false;\n\tLoadDelay = false;\n\tLoadDelayRegister = 0;\n\tDelaySlot = false;\n\tVersion = MARCH_INVALID;\n}\n\nstd::unique_ptr<CAssemblerCommand> CMipsArchitecture::parseDirective(Parser& parser)\n{\n\tMipsParser mipsParser;\n\treturn mipsParser.parseDirective(parser);\n}\n\nstd::unique_ptr<CAssemblerCommand> CMipsArchitecture::parseOpcode(Parser& parser)\n{\n\tMipsParser mipsParser;\n\n\tstd::unique_ptr<CAssemblerCommand> macro = mipsParser.parseMacro(parser);\n\tif (macro != nullptr)\n\t\treturn macro;\n\n\treturn mipsParser.parseOpcode(parser);\n}\n\nconst ExpressionFunctionMap& CMipsArchitecture::getExpressionFunctions()\n{\n\treturn mipsExpressionFunctions;\n}\n\nvoid CMipsArchitecture::NextSection()\n{\n\tLoadDelay = false;\n\tLoadDelayRegister = 0;\n\tDelaySlot = false;\n}\n\nvoid CMipsArchitecture::Revalidate()\n{\n\tLoadDelay = false;\n\tLoadDelayRegister = 0;\n\tDelaySlot = false;\n}\n\nstd::unique_ptr<IElfRelocator> CMipsArchitecture::getElfRelocator()\n{\n\tswitch (Version)\n\t{\n\tcase MARCH_PS2:\n\tcase MARCH_PSP:\n\tcase MARCH_N64:\n\t\treturn ::make_unique<MipsElfRelocator>();\n\tcase MARCH_PSX:\n\tcase MARCH_RSP:\n\tdefault:\n\t\treturn nullptr;\n\t}\n}\n\nvoid CMipsArchitecture::SetLoadDelay(bool Delay, int Register)\n{\n\tLoadDelay = Delay;\n\tLoadDelayRegister = Register;\n}\n\n// file: Archs/MIPS/MipsElfFile.h\n\nclass MipsElfFile: public AssemblerFile\n{\npublic:\n\tMipsElfFile();\n\tvirtual bool open(bool onlyCheck);\n\tvirtual void close();\n\tvirtual bool isOpen() { return opened; };\n\tvirtual bool write(void* data, size_t length);\n\tvirtual int64_t getVirtualAddress();\n\tvirtual int64_t getPhysicalAddress();\n\tvirtual int64_t getHeaderSize();\n\tvirtual bool seekVirtual(int64_t virtualAddress);\n\tvirtual bool seekPhysical(int64_t physicalAddress);\n\tvirtual bool getModuleInfo(SymDataModuleInfo& info);\n\tvirtual void beginSymData(SymbolData& symData);\n\tvirtual void endSymData(SymbolData& symData);\n\tvirtual const std::wstring& getFileName() { return fileName; };\n\n\tbool load(const std::wstring& fileName, const std::wstring& outputFileName);\n\tvoid save();\n\tbool setSection(const std::wstring& name);\nprivate:\n\tElfFile elf;\n\tstd::wstring fileName;\n\tstd::wstring outputFileName;\n\tbool opened;\n\tint platform;\n\n\tint segment;\n\tint section;\n\tsize_t sectionOffset;\n};\n\n\nclass DirectiveLoadMipsElf: public CAssemblerCommand\n{\npublic:\n\tDirectiveLoadMipsElf(const std::wstring& fileName);\n\tDirectiveLoadMipsElf(const std::wstring& inputName, const std::wstring& outputName);\n\tvirtual bool Validate();\n\tvirtual void Encode() const;\n\tvirtual void writeTempData(TempData& tempData) const;\n\tvirtual void writeSymData(SymbolData& symData) const;\nprivate:\n\tstd::shared_ptr<MipsElfFile> file;\n\tstd::wstring inputName;\n\tstd::wstring outputName;\n};\n\n// file: Util/CRC.h\n\nunsigned short getCrc16(unsigned char* Source, size_t len);\nunsigned int getCrc32(unsigned char* Source, size_t len);\nunsigned int getChecksum(unsigned char* Source, size_t len);\n\n// file: Archs/MIPS/MipsElfFile.cpp\n\nMipsElfFile::MipsElfFile()\n{\n\tplatform = Mips.GetVersion();\n\tsection = segment = -1;\n\topened = false;\n}\n\nbool MipsElfFile::open(bool onlyCheck)\n{\n\topened = !onlyCheck;\n\treturn true;\n}\n\nvoid MipsElfFile::close()\n{\n\tif (isOpen())\n\t\tsave();\n}\n\nvoid MipsElfFile::beginSymData(SymbolData& symData)\n{\n\tsymData.startModule(this);\n}\n\nvoid MipsElfFile::endSymData(SymbolData& symData)\n{\n\tsymData.endModule(this);\n}\n\nint64_t MipsElfFile::getVirtualAddress()\n{\n\tif (segment != -1)\n\t{\n\t\tElfSegment* seg = elf.getSegment(segment);\n\t\tElfSection* sect = seg->getSection(section);\n\t\tint64_t addr = seg->getVirtualAddress() + sect->getOffset();\n\t\treturn addr+sectionOffset;\n\t}\n\n\t// segmentless sections don't have a virtual address\n\tLogger::queueError(Logger::Error,L\"Not inside a mapped section\");\n\treturn -1;\n}\n\nint64_t MipsElfFile::getPhysicalAddress()\n{\n\tif (segment != -1)\n\t{\n\t\tElfSegment* seg = elf.getSegment(segment);\n\t\tElfSection* sect = seg->getSection(section);\n\t\tint64_t addr = seg->getOffset() + sect->getOffset();\n\t\treturn addr;\n\t}\n\n\tif (section != -1)\n\t{\n\t\tElfSection* sect = elf.getSegmentlessSection(section);\n\t\treturn sect->getOffset();\n\t}\n\n\tLogger::queueError(Logger::Error,L\"Not inside a section\");\n\treturn -1;\n}\n\nint64_t MipsElfFile::getHeaderSize()\n{\n\t// this method is not used\n\tLogger::queueError(Logger::Error,L\"Unimplemented method\");\n\treturn -1;\n}\n\nbool MipsElfFile::seekVirtual(int64_t virtualAddress)\n{\n\t// search in segments\n\tfor (size_t i = 0; i < elf.getSegmentCount(); i++)\n\t{\n\t\tElfSegment* seg = elf.getSegment(i);\n\t\tint64_t segStart = seg->getVirtualAddress();\n\t\tint64_t segEnd = segStart+seg->getPhysSize();\n\n\t\tif (segStart <= virtualAddress && virtualAddress < segEnd)\n\t\t{\n\t\t\t// find section\n\t\t\tfor (size_t l = 0; l < seg->getSectionCount(); l++)\n\t\t\t{\n\t\t\t\tElfSection* sect = seg->getSection(l);\n\t\t\t\tint64_t sectStart = segStart+sect->getOffset();\n\t\t\t\tint64_t sectEnd = sectStart+sect->getSize();\n\n\t\t\t\tif (sectStart <= virtualAddress && virtualAddress < sectEnd)\n\t\t\t\t{\n\t\t\t\t\tsegment = (int) i;\n\t\t\t\t\tsection = (int) l;\n\t\t\t\t\tsectionOffset = (size_t) (virtualAddress-sectStart);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tLogger::queueError(Logger::Error,L\"Found segment, but no containing section\");\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t// segmentless sections don't have a virtual address\n\tLogger::printError(Logger::Error,L\"Couldn't find a mapped section\");\n\treturn false;\n}\n\nbool MipsElfFile::seekPhysical(int64_t physicalAddress)\n{\n\t// search in segments\n\tfor (size_t i = 0; i < elf.getSegmentCount(); i++)\n\t{\n\t\tElfSegment* seg = elf.getSegment(i);\n\t\tint64_t segStart = seg->getOffset();\n\t\tint64_t segEnd = segStart+seg->getPhysSize();\n\n\t\tif (segStart <= physicalAddress && physicalAddress < segEnd)\n\t\t{\n\t\t\t// find section\n\t\t\tfor (size_t l = 0; l < seg->getSectionCount(); l++)\n\t\t\t{\n\t\t\t\tElfSection* sect = seg->getSection(l);\n\t\t\t\tint64_t sectStart = segStart+sect->getOffset();\n\t\t\t\tint64_t sectEnd = sectStart+sect->getSize();\n\n\t\t\t\tif (sectStart <= physicalAddress && physicalAddress < sectEnd)\n\t\t\t\t{\n\t\t\t\t\tsegment = (int) i;\n\t\t\t\t\tsection = (int) l;\n\t\t\t\t\tsectionOffset = physicalAddress-sectStart;\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tLogger::queueError(Logger::Error,L\"Found segment, but no containing section\");\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t// search in segmentless sections\n\tfor (size_t i = 0; i < elf.getSegmentlessSectionCount(); i++)\n\t{\n\t\tElfSection* sect = elf.getSegmentlessSection(i);\n\t\tint64_t sectStart = sect->getOffset();\n\t\tint64_t sectEnd = sectStart+sect->getSize();\n\n\t\tif (sectStart <= physicalAddress && physicalAddress < sectEnd)\n\t\t{\n\t\t\tsegment = -1;\n\t\t\tsection = (int) i;\n\t\t\tsectionOffset = physicalAddress-sectStart;\n\t\t\treturn true;\n\t\t}\n\t}\n\n\tsegment = -1;\n\tsection = -1;\n\tLogger::queueError(Logger::Error,L\"Couldn't find a section\");\n\treturn false;\n}\n\nbool MipsElfFile::getModuleInfo(SymDataModuleInfo& info)\n{\n\tinfo.crc32 = getCrc32(elf.getFileData().data(),elf.getFileData().size());\n\treturn true;\n}\n\nbool MipsElfFile::write(void* data, size_t length)\n{\n\tif (segment != -1)\n\t{\n\t\tElfSegment* seg = elf.getSegment(segment);\n\t\tElfSection* sect = seg->getSection(section);\n\n\t\tint64_t pos = sect->getOffset()+sectionOffset;\n\t\tseg->writeToData(pos,data,length);\n\t\tsectionOffset += length;\n\t\treturn true;\n\t}\n\n\tif (section != -1)\n\t{\n\t\t// TODO: segmentless sections\n\t\treturn false;\n\t}\n\n\tLogger::printError(Logger::Error,L\"Not inside a section\");\n\treturn false;\n}\n\nbool MipsElfFile::load(const std::wstring& fileName, const std::wstring& outputFileName)\n{\n\tthis->outputFileName = outputFileName;\n\n\tif (elf.load(fileName,true) == false)\n\t{\n\t\tLogger::printError(Logger::FatalError,L\"Failed to load %s\",fileName);\n\t\treturn false;\n\t}\n\n\tif (elf.getType() == 0xFFA0)\n\t{\n\t\tLogger::printError(Logger::FatalError,L\"Relocatable ELF %s not supported yet\",fileName);\n\t\treturn false;\n\t}\n\n\tif (elf.getType() != 2)\n\t{\n\t\tLogger::printError(Logger::FatalError,L\"Unknown ELF %s type %d\",fileName,elf.getType());\n\t\treturn false;\n\t}\n\n\tif (elf.getSegmentCount() != 0)\n\t\tseekVirtual(elf.getSegment(0)->getVirtualAddress());\n\n\treturn true;\n}\n\nbool MipsElfFile::setSection(const std::wstring& name)\n{\n\tstd::string utf8Name = convertWStringToUtf8(name);\n\n\t// look in segments\n\tfor (size_t i = 0; i < elf.getSegmentCount(); i++)\n\t{\n\t\tElfSegment* seg = elf.getSegment(i);\n\t\tint n = seg->findSection(utf8Name);\n\t\tif (n != -1)\n\t\t{\n\t\t\tsegment = (int) i;\n\t\t\tsection = n;\n\t\t\treturn true;\n\t\t}\n\t}\n\n\t// look in stray sections\n\tint n = elf.findSegmentlessSection(utf8Name);\n\tif (n != -1)\n\t{\n\t\tsegment = -1;\n\t\tsection = n;\n\t\treturn true;\n\t}\n\n\tLogger::queueError(Logger::Warning,L\"Section %s not found\",name);\n\treturn false;\n}\n\nvoid MipsElfFile::save()\n{\n\telf.save(outputFileName);\n}\n\n//\n// DirectiveLoadPspElf\n//\n\nDirectiveLoadMipsElf::DirectiveLoadMipsElf(const std::wstring& fileName)\n{\n\tfile = std::make_shared<MipsElfFile>();\n\n\tthis->inputName = getFullPathName(fileName);\n\tif (file->load(this->inputName,this->inputName) == false)\n\t{\n\t\tfile = nullptr;\n\t\treturn;\n\t}\n\n\tg_fileManager->addFile(file);\n}\n\nDirectiveLoadMipsElf::DirectiveLoadMipsElf(const std::wstring& inputName, const std::wstring& outputName)\n{\n\tfile = std::make_shared<MipsElfFile>();\n\n\tthis->inputName = getFullPathName(inputName);\n\tthis->outputName = getFullPathName(outputName);\n\tif (file->load(this->inputName,this->outputName) == false)\n\t{\n\t\tfile = nullptr;\n\t\treturn;\n\t}\n\n\tg_fileManager->addFile(file);\n}\n\nbool DirectiveLoadMipsElf::Validate()\n{\n\tArch->NextSection();\n\tg_fileManager->openFile(file,true);\n\treturn false;\n}\n\nvoid DirectiveLoadMipsElf::Encode() const\n{\n\tg_fileManager->openFile(file,false);\n}\n\nvoid DirectiveLoadMipsElf::writeTempData(TempData& tempData) const\n{\n\tif (outputName.empty())\n\t{\n\t\ttempData.writeLine(g_fileManager->getVirtualAddress(),formatString(L\".loadelf \\\"%s\\\"\",inputName));\n\t} else {\n\t\ttempData.writeLine(g_fileManager->getVirtualAddress(),formatString(L\".loadelf \\\"%s\\\",\\\"%s\\\"\",\n\t\t\tinputName,outputName));\n\t}\n}\n\nvoid DirectiveLoadMipsElf::writeSymData(SymbolData& symData) const\n{\n\tfile->beginSymData(symData);\n}\n\n// file: Commands/CommandSequence.h\n\nclass Label;\n\nclass CommandSequence: public CAssemblerCommand\n{\npublic:\n\tCommandSequence();\n\tvirtual bool Validate();\n\tvirtual void Encode() const;\n\tvirtual void writeTempData(TempData& tempData) const;\n\tvirtual void writeSymData(SymbolData& symData) const;\n\tvoid addCommand(std::unique_ptr<CAssemblerCommand> cmd) { commands.push_back(std::move(cmd)); }\nprivate:\n\tstd::vector<std::unique_ptr<CAssemblerCommand>> commands;\n};\n\n// file: Parser/Parser.h\n#include <set>\n#include <map>\n#include <unordered_map>\n\nstruct AssemblyTemplateArgument\n{\n\tconst wchar_t* variableName;\n\tstd::wstring value;\n};\n\nstruct ParserMacro\n{\n\tstd::wstring name;\n\tstd::vector<std::wstring> parameters;\n\tstd::set<std::wstring> labels;\n\tstd::vector<Token> content;\n\tsize_t counter;\n};\n\nenum class ConditionalResult { Unknown, True, False };\n\nclass Parser\n{\npublic:\n\tParser();\n\tbool atEnd() { return entries.back().tokenizer->atEnd(); }\n\n\tvoid addEquation(const Token& start, const std::wstring& name, const std::wstring& value);\n\n\tExpression parseExpression();\n\tbool parseExpressionList(std::vector<Expression>& list, int min = -1, int max = -1);\n\tbool parseIdentifier(std::wstring& dest);\n\tstd::unique_ptr<CAssemblerCommand> parseCommand();\n\tstd::unique_ptr<CAssemblerCommand> parseCommandSequence(wchar_t indicator = 0, const std::initializer_list<const wchar_t*> terminators = {});\n\tstd::unique_ptr<CAssemblerCommand> parseFile(TextFile& file, bool virtualFile = false);\n\tstd::unique_ptr<CAssemblerCommand> parseString(const std::wstring& text);\n\tstd::unique_ptr<CAssemblerCommand> parseTemplate(const std::wstring& text, const std::initializer_list<AssemblyTemplateArgument> variables = {});\n\tstd::unique_ptr<CAssemblerCommand> parseDirective(const DirectiveMap &directiveSet);\n\tbool matchToken(TokenType type, bool optional = false);\n\n\tTokenizer* getTokenizer() { return entries.back().tokenizer; };\n\tconst Token& peekToken(int ahead = 0) { return getTokenizer()->peekToken(ahead); };\n\tconst Token& nextToken() { return getTokenizer()->nextToken(); };\n\tvoid eatToken() { getTokenizer()->eatToken(); };\n\tvoid eatTokens(int num) { getTokenizer()->eatTokens(num); };\n\n\tvoid pushConditionalResult(ConditionalResult cond);\n\tvoid popConditionalResult() { conditionStack.pop_back(); };\n\tbool isInsideTrueBlock() { return conditionStack.back().inTrueBlock; }\n\tbool isInsideUnknownBlock() { return conditionStack.back().inUnknownBlock; }\n\n\ttemplate <typename... Args>\n\tvoid printError(const Token& token, const wchar_t* text, const Args&... args)\n\t{\n\t\terrorLine = token.line;\n\t\tGlobal.FileInfo.LineNumber = (int) token.line;\n\t\tstd::wstring errorText = formatString(text,args...);\n\t\tLogger::printError(Logger::Error,errorText);\n\t\terror = true;\n\t}\n\n\tbool hasError() { return error; }\n\tvoid updateFileInfo();\nprotected:\n\tvoid clearError() { error = false; }\n\tstd::unique_ptr<CAssemblerCommand> handleError();\n\n\tstd::unique_ptr<CAssemblerCommand> parse(Tokenizer* tokenizer, bool virtualFile, const std::wstring& name = L\"\");\n\tstd::unique_ptr<CAssemblerCommand> parseLabel();\n\tbool checkEquLabel();\n\tbool checkMacroDefinition();\n\tstd::unique_ptr<CAssemblerCommand> parseMacroCall();\n\n\tstruct FileEntry\n\t{\n\t\tTokenizer* tokenizer;\n\t\tbool virtualFile;\n\t\tint fileNum;\n\t\tint previousCommandLine;\n\t};\n\n\tstd::vector<FileEntry> entries;\n\tstd::map<std::wstring,ParserMacro> macros;\n\tstd::set<std::wstring> macroLabels;\n\tbool initializingMacro;\n\tbool error;\n\tsize_t errorLine;\n\n\tbool overrideFileInfo;\n\tint overrideFileNum;\n\tint overrideLineNum;\n\n\tstruct ConditionInfo\n\t{\n\t\tbool inTrueBlock;\n\t\tbool inUnknownBlock;\n\t};\n\n\tstd::vector<ConditionInfo> conditionStack;\n};\n\nstruct TokenSequenceValue\n{\n\tTokenSequenceValue(const wchar_t* text)\n\t{\n\t\ttype = TokenType::Identifier;\n\t\ttextValue = text;\n\t}\n\n\tTokenSequenceValue(int64_t num)\n\t{\n\t\ttype = TokenType::Integer;\n\t\tintValue = num;\n\t}\n\n\tTokenSequenceValue(double num)\n\t{\n\t\ttype = TokenType::Float;\n\t\tfloatValue = num;\n\t}\n\n\n\tTokenType type;\n\tunion\n\t{\n\t\tconst wchar_t* textValue;\n\t\tint64_t intValue;\n\t\tdouble floatValue;\n\t};\n};\n\nusing TokenSequence = std::initializer_list<TokenType>;\nusing TokenValueSequence = std::initializer_list<TokenSequenceValue>;\n\nclass TokenSequenceParser\n{\npublic:\n\tvoid addEntry(int result, TokenSequence tokens, TokenValueSequence values);\n\tbool parse(Parser& parser, int& result);\n\tsize_t getEntryCount() { return entries.size(); }\nprivate:\n\tstruct Entry\n\t{\n\t\tstd::vector<TokenType> tokens;\n\t\tstd::vector<TokenSequenceValue> values;\n\t\tint result;\n\t};\n\n\tstd::vector<Entry> entries;\n};\n\n// file: Archs/MIPS/MipsElfRelocator.cpp\n\nint MipsElfRelocator::expectedMachine() const\n{\n\treturn EM_MIPS;\n}\n\nbool MipsElfRelocator::processHi16Entries(uint32_t lo16Opcode, int64_t lo16RelocationBase, std::vector<RelocationAction>& actions, std::vector<std::wstring>& errors)\n{\n\tbool result = true;\n\n\tfor (const Hi16Entry &hi16: hi16Entries)\n\t{\n\t\tif (hi16.relocationBase != lo16RelocationBase)\n\t\t{\n\t\t\terrors.push_back(formatString(L\"Mismatched R_MIPS_HI16 with\tR_MIPS_LO16 of a different symbol\"));\n\t\t\tresult = false;\n\t\t\tcontinue;\n\t\t}\n\n\t\tint32_t addend = (int32_t)((hi16.opcode & 0xFFFF) << 16) + (int16_t)(lo16Opcode & 0xFFFF);\n\t\tint64_t fullPosition = addend + hi16.relocationBase;\n\t\tuint32_t opcode = (hi16.opcode & 0xffff0000) | (((fullPosition >> 16) + ((fullPosition & 0x8000) != 0)) & 0xFFFF);\n\t\tactions.emplace_back(hi16.offset, opcode);\n\t}\n\n\thi16Entries.clear();\n\treturn result;\n}\n\nbool MipsElfRelocator::relocateOpcode(int type, const RelocationData& data, std::vector<RelocationAction>& actions, std::vector<std::wstring>& errors)\n{\n\tunsigned int op = data.opcode;\n\tbool result = true;\n\n\tswitch (type)\n\t{\n\tcase R_MIPS_26: //j, jal\n\t\top = (op & 0xFC000000) | (((op&0x03FFFFFF)+(data.relocationBase>>2))&0x03FFFFFF);\n\t\tbreak;\n\tcase R_MIPS_32:\n\t\top += (int) data.relocationBase;\n\t\tbreak;\n\tcase R_MIPS_HI16:\n\t\thi16Entries.emplace_back(data.opcodeOffset, data.relocationBase, data.opcode);\n\t\tbreak;\n\tcase R_MIPS_LO16:\n\t\tif (!processHi16Entries(op, data.relocationBase, actions, errors))\n\t\t\tresult = false;\n\t\top = (op&0xffff0000) | (((op&0xffff)+data.relocationBase)&0xffff);\n\t\tbreak;\n\tdefault:\n\t\terrors.emplace_back(formatString(L\"Unknown MIPS relocation type %d\",type));\n\t\treturn false;\n\t}\n\n\tactions.emplace_back(data.opcodeOffset, op);\n\treturn result;\n}\n\nbool MipsElfRelocator::finish(std::vector<RelocationAction>& actions, std::vector<std::wstring>& errors)\n{\n\t// This shouldn't happen. If it does, relocate as if there was no lo16 opcode\n\tif (!hi16Entries.empty())\n\t\treturn processHi16Entries(0, hi16Entries.front().relocationBase, actions, errors);\n\treturn true;\n}\n\nvoid MipsElfRelocator::setSymbolAddress(RelocationData& data, int64_t symbolAddress, int symbolType)\n{\n\tdata.symbolAddress = symbolAddress;\n\tdata.targetSymbolType = symbolType;\n}\n\nconst wchar_t* mipsCtorTemplate = LR\"(\n\taddiu\tsp,-32\n\tsw\t\tra,0(sp)\n\tsw\t\ts0,4(sp)\n\tsw\t\ts1,8(sp)\n\tsw\t\ts2,12(sp)\n\tsw\t\ts3,16(sp)\n\tli\t\ts0,%ctorTable%\n\tli\t\ts1,%ctorTable%+%ctorTableSize%\n\t%outerLoopLabel%:\n\tlw\t\ts2,(s0)\n\tlw\t\ts3,4(s0)\n\taddiu\ts0,8\n\t%innerLoopLabel%:\n\tlw\t\ta0,(s2)\n\tjalr\ta0\n\taddiu\ts2,4h\n\tbne\t\ts2,s3,%innerLoopLabel%\n\tnop\n\tbne\t\ts0,s1,%outerLoopLabel%\n\tnop\n\tlw\t\tra,0(sp)\n\tlw\t\ts0,4(sp)\n\tlw\t\ts1,8(sp)\n\tlw\t\ts2,12(sp)\n\tlw\t\ts3,16(sp)\n\tjr\t\tra\n\taddiu\tsp,32\n\t%ctorTable%:\n\t.word\t%ctorContent%\n)\";\n\nstd::unique_ptr<CAssemblerCommand> MipsElfRelocator::generateCtorStub(std::vector<ElfRelocatorCtor>& ctors)\n{\n\tParser parser;\n\tif (ctors.size() != 0)\n\t{\n\t\t// create constructor table\n\t\tstd::wstring table;\n\t\tfor (size_t i = 0; i < ctors.size(); i++)\n\t\t{\n\t\t\tif (i != 0)\n\t\t\t\ttable += ',';\n\t\t\ttable += formatString(L\"%s,%s+0x%08X\",ctors[i].symbolName,ctors[i].symbolName,ctors[i].size);\n\t\t}\n\n\t\treturn parser.parseTemplate(mipsCtorTemplate,{\n\t\t\t{ L\"%ctorTable%\",\t\tGlobal.symbolTable.getUniqueLabelName() },\n\t\t\t{ L\"%ctorTableSize%\",\tformatString(L\"%d\",ctors.size()*8) },\n\t\t\t{ L\"%outerLoopLabel%\",\tGlobal.symbolTable.getUniqueLabelName() },\n\t\t\t{ L\"%innerLoopLabel%\",\tGlobal.symbolTable.getUniqueLabelName() },\n\t\t\t{ L\"%ctorContent%\",\t\ttable },\n\t\t});\n\t} else {\n\t\treturn parser.parseTemplate(L\"jr ra :: nop\");\n\t}\n}\n\n// file: Archs/MIPS/MipsExpressionFunctions.cpp\n\n#define GET_PARAM(params,index,dest) \\\n\tif (getExpFuncParameter(params,index,dest,funcName,false) == false) \\\n\t\treturn ExpressionValue();\n\nExpressionValue expFuncHi(const std::wstring& funcName, const std::vector<ExpressionValue>& parameters)\n{\n\tint64_t value;\n\n\tGET_PARAM(parameters,0,value);\n\n\treturn ExpressionValue((int64_t)((value >> 16) + ((value & 0x8000) != 0)) & 0xFFFF);\n}\n\nExpressionValue expFuncLo(const std::wstring& funcName, const std::vector<ExpressionValue>& parameters)\n{\n\tint64_t value;\n\n\tGET_PARAM(parameters,0,value);\n\n\treturn ExpressionValue((int64_t)(int16_t)(value & 0xFFFF));\n}\n\nconst ExpressionFunctionMap mipsExpressionFunctions = {\n\t{ L\"lo\",\t\t\t{ &expFuncLo,\t\t\t\t1,\t1,\tExpFuncSafety::Safe } },\n\t{ L\"hi\",\t\t\t{ &expFuncHi,\t\t\t\t1,\t1,\tExpFuncSafety::Safe } },\n};\n\n// file: Archs/MIPS/MipsMacros.cpp\n\nMipsMacroCommand::MipsMacroCommand(std::unique_ptr<CAssemblerCommand> content, int macroFlags)\n{\n\tthis->content = std::move(content);\n\tthis->macroFlags = macroFlags;\n\tIgnoreLoadDelay = Mips.GetIgnoreDelay();\n}\n\nbool MipsMacroCommand::Validate()\n{\n\tint64_t memoryPos = g_fileManager->getVirtualAddress();\n\tcontent->applyFileInfo();\n\tbool result = content->Validate();\n\tint64_t newMemoryPos = g_fileManager->getVirtualAddress();\n\n\tapplyFileInfo();\n\n\tif (IgnoreLoadDelay == false && Mips.GetDelaySlot() == true && (newMemoryPos-memoryPos) > 4\n\t\t&& (macroFlags & MIPSM_DONTWARNDELAYSLOT) == 0)\n\t{\n\t\tLogger::queueError(Logger::Warning,L\"Macro with multiple opcodes used inside a delay slot\");\n\t}\n\n\tif (newMemoryPos == memoryPos)\n\t\tLogger::queueError(Logger::Warning,L\"Empty macro content\");\n\n\treturn result;\n}\n\nvoid MipsMacroCommand::Encode() const\n{\n\tcontent->Encode();\n}\n\nvoid MipsMacroCommand::writeTempData(TempData& tempData) const\n{\n\tcontent->applyFileInfo();\n\tcontent->writeTempData(tempData);\n}\n\nstd::wstring preprocessMacro(const wchar_t* text, MipsImmediateData& immediates)\n{\n\t// A macro is turned into a sequence of opcodes that are parsed seperately.\n\t// Any expressions used in the macro may be evaluated at a different memory\n\t// position, so the '.' operator needs to be replaced by a label at the start\n\t// of the macro\n\tstd::wstring labelName = Global.symbolTable.getUniqueLabelName(true);\n\timmediates.primary.expression.replaceMemoryPos(labelName);\n\timmediates.secondary.expression.replaceMemoryPos(labelName);\n\n\treturn formatString(L\"%s: %s\",labelName,text);\n}\n\nstd::unique_ptr<CAssemblerCommand> createMacro(Parser& parser, const std::wstring& text, int flags, std::initializer_list<AssemblyTemplateArgument> variables)\n{\n\tstd::unique_ptr<CAssemblerCommand> content = parser.parseTemplate(text,variables);\n\treturn ::make_unique<MipsMacroCommand>(std::move(content),flags);\n}\n\nstd::unique_ptr<CAssemblerCommand> generateMipsMacroAbs(Parser& parser, MipsRegisterData& registers, MipsImmediateData& immediates, int flags)\n{\n\tconst wchar_t* templateAbs = LR\"(\n\t\t%sraop% \tr1,%rs%,31\n\t\txor \t\t%rd%,%rs%,r1\n\t\t%subop% \t%rd%,%rd%,r1\n\t)\";\n\n\tstd::wstring sraop, subop;\n\n\tswitch (flags & MIPSM_ACCESSMASK)\n\t{\n\tcase MIPSM_W:\tsraop = L\"sra\"; subop = L\"subu\"; break;\n\tcase MIPSM_DW:\tsraop = L\"dsra32\"; subop = L\"dsubu\"; break;\n\tdefault: return nullptr;\n\t}\n\n\tstd::wstring macroText = preprocessMacro(templateAbs,immediates);\n\treturn createMacro(parser,macroText,flags, {\n\t\t\t{ L\"%rd%\",\t\tregisters.grd.name },\n\t\t\t{ L\"%rs%\",\t\tregisters.grs.name },\n\t\t\t{ L\"%sraop%\",\tsraop },\n\t\t\t{ L\"%subop%\",\tsubop },\n\t});\n}\n\nstd::unique_ptr<CAssemblerCommand> generateMipsMacroLiFloat(Parser& parser, MipsRegisterData& registers, MipsImmediateData& immediates, int flags)\n{\n\tconst wchar_t* templateLiFloat = LR\"(\n\t\tli \t\tr1,float(%imm%)\n\t\tmtc1\tr1,%rs%\n\t)\";\n\n\tstd::wstring sraop, subop;\n\n\tstd::wstring macroText = preprocessMacro(templateLiFloat,immediates);\n\treturn createMacro(parser,macroText,flags, {\n\t\t\t{ L\"%imm%\",\t\timmediates.secondary.expression.toString() },\n\t\t\t{ L\"%rs%\",\t\tregisters.frs.name },\n\t});\n}\n\nstd::unique_ptr<CAssemblerCommand> generateMipsMacroLi(Parser& parser, MipsRegisterData& registers, MipsImmediateData& immediates, int flags)\n{\n\tconst wchar_t* templateLi = LR\"(\n\t\t.if abs(%imm%) > 0xFFFFFFFF\n\t\t\t.error \"Immediate value too big\"\n\t\t.elseif %imm% & ~0xFFFF\n\t\t\t.if (%imm% & 0xFFFF8000) == 0xFFFF8000\n\t\t\t\t.if %lower%\n\t\t\t\t\taddiu\t%rs%,r0, lo(%imm%)\n\t\t\t\t.endif\n\t\t\t.elseif (%imm% & 0xFFFF) == 0\n\t\t\t\t.if %upper%\n\t\t\t\t\tlui\t\t%rs%, hi(%imm%)\n\t\t\t\t.elseif %lower%\n\t\t\t\t\tnop\n\t\t\t\t.endif\n\t\t\t.else\n\t\t\t\t.if %upper%\n\t\t\t\t\tlui\t\t%rs%, hi(%imm%)\n\t\t\t\t.endif\n\t\t\t\t.if %lower%\n\t\t\t\t\taddiu \t%rs%, lo(%imm%)\n\t\t\t\t.endif\n\t\t\t.endif\n\t\t.else\n\t\t\t.if %lower%\n\t\t\t\tori\t\t%rs%,r0,%imm%\n\t\t\t.endif\n\t\t.endif\n\t)\";\n\n\t// floats need to be treated as integers, convert them\n\tif (immediates.secondary.expression.isConstExpression())\n\t{\n\t\tExpressionValue value = immediates.secondary.expression.evaluate();\n\t\tif (value.isFloat())\n\t\t{\n\t\t\tint32_t newValue = getFloatBits((float)value.floatValue);\n\t\t\timmediates.secondary.expression = createConstExpression(newValue);\n\t\t}\n\t}\n\n\tstd::wstring macroText = preprocessMacro(templateLi,immediates);\n\treturn createMacro(parser,macroText,flags, {\n\t\t\t{ L\"%upper%\",\t(flags & MIPSM_UPPER) ? L\"1\" : L\"0\" },\n\t\t\t{ L\"%lower%\",\t(flags & MIPSM_LOWER) ? L\"1\" : L\"0\" },\n\t\t\t{ L\"%rs%\",\t\tregisters.grs.name },\n\t\t\t{ L\"%imm%\",\t\timmediates.secondary.expression.toString() },\n\t});\n}\n\nstd::unique_ptr<CAssemblerCommand> generateMipsMacroLoadStore(Parser& parser, MipsRegisterData& registers, MipsImmediateData& immediates, int flags)\n{\n\tconst wchar_t* templateLoadStore = LR\"(\n\t\t.if %imm% & ~0xFFFFFFFF\n\t\t\t.error \"Address too big\"\n\t\t.elseif %imm% < 0x8000 || (%imm% & 0xFFFF8000) == 0xFFFF8000\n\t\t\t.if %lower%\n\t\t\t\t%op%\t%rs%, lo(%imm%)(r0)\n\t\t\t.elseif %upper%\n\t\t\t\tnop\n\t\t\t.endif\n\t\t.else\n\t\t\t.if %upper%\n\t\t\t\tlui\t\t%temp%, hi(%imm%)\n\t\t\t.endif\n\t\t\t.if %lower%\n\t\t\t\t%op%\t%rs%, lo(%imm%)(%temp%)\n\t\t\t.endif\n\t\t.endif\n\t)\";\n\n\tconst wchar_t* op;\n\tbool isCop = false;\n\tswitch (flags & (MIPSM_ACCESSMASK|MIPSM_LOAD|MIPSM_STORE))\n\t{\n\tcase MIPSM_LOAD|MIPSM_B:\t\top = L\"lb\"; break;\n\tcase MIPSM_LOAD|MIPSM_BU:\t\top = L\"lbu\"; break;\n\tcase MIPSM_LOAD|MIPSM_HW:\t\top = L\"lh\"; break;\n\tcase MIPSM_LOAD|MIPSM_HWU:\t\top = L\"lhu\"; break;\n\tcase MIPSM_LOAD|MIPSM_W:\t\top = L\"lw\"; break;\n\tcase MIPSM_LOAD|MIPSM_WU:\t\top = L\"lwu\"; break;\n\tcase MIPSM_LOAD|MIPSM_DW:\t\top = L\"ld\"; break;\n\tcase MIPSM_LOAD|MIPSM_LLSCW:\top = L\"ll\"; break;\n\tcase MIPSM_LOAD|MIPSM_LLSCDW:\top = L\"lld\"; break;\n\tcase MIPSM_LOAD|MIPSM_COP1:\t\top = L\"lwc1\"; isCop = true; break;\n\tcase MIPSM_LOAD|MIPSM_COP2:\t\top = L\"lwc2\"; isCop = true; break;\n\tcase MIPSM_LOAD|MIPSM_DCOP1:\top = L\"ldc1\"; isCop = true; break;\n\tcase MIPSM_LOAD|MIPSM_DCOP2:\top = L\"ldc2\"; isCop = true; break;\n\tcase MIPSM_STORE|MIPSM_B:\t\top = L\"sb\"; break;\n\tcase MIPSM_STORE|MIPSM_HW:\t\top = L\"sh\"; break;\n\tcase MIPSM_STORE|MIPSM_W:\t\top = L\"sw\"; break;\n\tcase MIPSM_STORE|MIPSM_DW:\t\top = L\"sd\"; break;\n\tcase MIPSM_STORE|MIPSM_LLSCW:\top = L\"sc\"; break;\n\tcase MIPSM_STORE|MIPSM_LLSCDW:\top = L\"scd\"; break;\n\tcase MIPSM_STORE|MIPSM_COP1:\top = L\"swc1\"; isCop = true; break;\n\tcase MIPSM_STORE|MIPSM_COP2:\top = L\"swc2\"; isCop = true; break;\n\tcase MIPSM_STORE|MIPSM_DCOP1:\top = L\"sdc1\"; isCop = true; break;\n\tcase MIPSM_STORE|MIPSM_DCOP2:\top = L\"sdc2\"; isCop = true; break;\n\tdefault: return nullptr;\n\t}\n\n\tstd::wstring macroText = preprocessMacro(templateLoadStore,immediates);\n\n\tbool store = (flags & MIPSM_STORE) != 0;\n\treturn createMacro(parser,macroText,flags, {\n\t\t\t{ L\"%upper%\",\t(flags & MIPSM_UPPER) ? L\"1\" : L\"0\" },\n\t\t\t{ L\"%lower%\",\t(flags & MIPSM_LOWER) ? L\"1\" : L\"0\" },\n\t\t\t{ L\"%rs%\",\t\tisCop ? registers.frs.name : registers.grs.name },\n\t\t\t{ L\"%temp%\",\tisCop || store ? L\"r1\" : registers.grs.name },\n\t\t\t{ L\"%imm%\",\t\timmediates.secondary.expression.toString() },\n\t\t\t{ L\"%op%\",\t\top },\n\t});\n}\n\nstd::unique_ptr<CAssemblerCommand> generateMipsMacroLoadUnaligned(Parser& parser, MipsRegisterData& registers, MipsImmediateData& immediates, int flags)\n{\n\tconst wchar_t* selectedTemplate;\n\n\tstd::wstring op, size;\n\tint type = flags & MIPSM_ACCESSMASK;\n\tif (type == MIPSM_HW || type == MIPSM_HWU)\n\t{\n\t\tconst wchar_t* templateHalfword = LR\"(\n\t\t\t.if (%off% < 0x8000) && ((%off%+1) >= 0x8000)\n\t\t\t\t.error \"Immediate offset too big\"\n\t\t\t.else\n\t\t\t\t%op%\tr1,%off%+1(%rs%)\n\t\t\t\t%op%\t%rd%,%off%(%rs%)\n\t\t\t\tsll\t\tr1,8\n\t\t\t\tor\t\t%rd%,r1\n\t\t\t.endif\n\t\t)\";\n\n\t\top = type == MIPSM_HWU ? L\"lbu\" : L\"lb\";\n\t\tselectedTemplate = templateHalfword;\n\t} else if (type == MIPSM_W || type == MIPSM_DW)\n\t{\n\t\tconst wchar_t* templateWord = LR\"(\n\t\t\t.if (%off% < 0x8000) && ((%off%+%size%-1) >= 0x8000)\n\t\t\t\t.error \"Immediate offset too big\"\n\t\t\t.else\n\t\t\t\t%op%l\t%rd%,%off%+%size%-1(%rs%)\n\t\t\t\t%op%r\t%rd%,%off%(%rs%)\n\t\t\t.endif\n\t\t)\";\n\n\t\tif (registers.grs.num == registers.grd.num)\n\t\t{\n\t\t\tLogger::printError(Logger::Error,L\"Cannot use same register as source and destination\");\n\t\t\treturn ::make_unique<DummyCommand>();\n\t\t}\n\n\t\top = type == MIPSM_W ? L\"lw\" : L\"ld\";\n\t\tsize = type == MIPSM_W ? L\"4\" : L\"8\";\n\t\tselectedTemplate = templateWord;\n\t} else {\n\t\treturn nullptr;\n\t}\n\n\tstd::wstring macroText = preprocessMacro(selectedTemplate,immediates);\n\treturn createMacro(parser,macroText,flags, {\n\t\t\t{ L\"%rs%\",\t\tregisters.grs.name },\n\t\t\t{ L\"%rd%\",\t\tregisters.grd.name },\n\t\t\t{ L\"%off%\",\t\timmediates.primary.expression.toString() },\n\t\t\t{ L\"%op%\",\t\top },\n\t\t\t{ L\"%size%\",    size },\n\t});\n}\n\nstd::unique_ptr<CAssemblerCommand> generateMipsMacroStoreUnaligned(Parser& parser, MipsRegisterData& registers, MipsImmediateData& immediates, int flags)\n{\n\tconst wchar_t* selectedTemplate;\n\n\tstd::wstring op, size;\n\tint type = flags & MIPSM_ACCESSMASK;\n\tif (type == MIPSM_HW)\n\t{\n\t\tconst wchar_t* templateHalfword = LR\"(\n\t\t\t.if (%off% < 0x8000) && ((%off%+1) >= 0x8000)\n\t\t\t\t.error \"Immediate offset too big\"\n\t\t\t.else\n\t\t\t\tsb\t\t%rd%,%off%(%rs%)\n\t\t\t\tsrl\t\tr1,%rd%,8\n\t\t\t\tsb\t\tr1,%off%+1(%rs%)\n\t\t\t.endif\n\t\t)\";\n\n\t\tselectedTemplate = templateHalfword;\n\t} else if (type == MIPSM_W || type == MIPSM_DW)\n\t{\n\t\tconst wchar_t* templateWord = LR\"(\n\t\t\t.if (%off% < 0x8000) && ((%off%+%size%-1) >= 0x8000)\n\t\t\t\t.error \"Immediate offset too big\"\n\t\t\t.else\n\t\t\t\t%op%l\t%rd%,%off%+%size%-1(%rs%)\n\t\t\t\t%op%r\t%rd%,%off%(%rs%)\n\t\t\t.endif\n\t\t)\";\n\n\t\tif (registers.grs.num == registers.grd.num)\n\t\t{\n\t\t\tLogger::printError(Logger::Error,L\"Cannot use same register as source and destination\");\n\t\t\treturn ::make_unique<DummyCommand>();\n\t\t}\n\n\t\top = type == MIPSM_W ? L\"sw\" : L\"sd\";\n\t\tsize = type == MIPSM_W ? L\"4\" : L\"8\";\n\t\tselectedTemplate = templateWord;\n\t} else {\n\t\treturn nullptr;\n\t}\n\n\tstd::wstring macroText = preprocessMacro(selectedTemplate,immediates);\n\treturn createMacro(parser,macroText,flags, {\n\t\t\t{ L\"%rs%\",\t\tregisters.grs.name },\n\t\t\t{ L\"%rd%\",\t\tregisters.grd.name },\n\t\t\t{ L\"%off%\",\t\timmediates.primary.expression.toString() },\n\t\t\t{ L\"%op%\",\t\top },\n\t\t\t{ L\"%size%\",\tsize },\n\t});\n}\n\nstd::unique_ptr<CAssemblerCommand> generateMipsMacroBranch(Parser& parser, MipsRegisterData& registers, MipsImmediateData& immediates, int flags)\n{\n\tconst wchar_t* selectedTemplate;\n\n\tint type = flags & MIPSM_CONDITIONMASK;\n\n\tbool bne = type == MIPSM_NE;\n\tbool beq = type == MIPSM_EQ;\n\tbool beqz = type == MIPSM_GE || type == MIPSM_GEU;\n\tbool bnez = type == MIPSM_LT || type == MIPSM_LTU;\n\tbool unsigned_ = type == MIPSM_GEU || type == MIPSM_LTU;\n\tbool immediate = (flags & MIPSM_IMM) != 0;\n\tbool likely = (flags & MIPSM_LIKELY) != 0;\n\tbool revcmp = (flags & MIPSM_REVCMP) != 0;\n\n\tstd::wstring op;\n\tif (bne || beq)\n\t{\n\t\tconst wchar_t* templateNeEq = LR\"(\n\t\t\t.if %imm% == 0\n\t\t\t\t%op%\t%rs%,r0,%dest%\n\t\t\t.else\n\t\t\t\tli\t\tr1,%imm%\n\t\t\t\t%op%\t%rs%,r1,%dest%\n\t\t\t.endif\n\t\t)\";\n\n\t\tselectedTemplate = templateNeEq;\n\t\tif(likely)\n\t\t\top = bne ? L\"bnel\" : L\"beql\";\n\t\telse\n\t\t\top = bne ? L\"bne\" : L\"beq\";\n\t} else if (immediate && (beqz || bnez))\n\t{\n\t\tconst wchar_t* templateImmediate = LR\"(\n\t\t\t.if %revcmp% && %imm% == 0\n\t\t\t\tslt%u% \tr1,r0,%rs%\n\t\t\t.elseif %revcmp%\n\t\t\t\tli\t\tr1,%imm%\n\t\t\t\tslt%u%\tr1,r1,%rs%\n\t\t\t.elseif (%imm% < -0x8000) || (%imm% >= 0x8000)\n\t\t\t\tli\t\tr1,%imm%\n\t\t\t\tslt%u%\tr1,%rs%,r1\n\t\t\t.else\n\t\t\t\tslti%u%\tr1,%rs%,%imm%\n\t\t\t.endif\n\t\t\t%op%\tr1,%dest%\n\t\t)\";\n\n\t\tselectedTemplate = templateImmediate;\n\t\tif(likely)\n\t\t\top = bnez ? L\"bnezl\" : L\"beqzl\";\n\t\telse\n\t\t\top = bnez ? L\"bnez\" : L\"beqz\";\n\t} else if (beqz || bnez)\n\t{\n\t\tconst wchar_t* templateRegister = LR\"(\n\t\t\t.if %revcmp%\n\t\t\t\tslt%u%\tr1,%rt%,%rs%\n\t\t\t.else\n\t\t\t\tslt%u%\tr1,%rs%,%rt%\n\t\t\t.endif\n\t\t\t%op%\tr1,%dest%\n\t\t)\";\n\n\t\tselectedTemplate = templateRegister;\n\t\tif(likely)\n\t\t\top = bnez ? L\"bnezl\" : L\"beqzl\";\n\t\telse\n\t\t\top = bnez ? L\"bnez\" : L\"beqz\";\n\t} else {\n\t\treturn nullptr;\n\t}\n\n\tstd::wstring macroText = preprocessMacro(selectedTemplate,immediates);\n\treturn createMacro(parser,macroText,flags, {\n\t\t\t{ L\"%op%\",\t\top },\n\t\t\t{ L\"%u%\",\t\tunsigned_ ? L\"u\" : L\"\"},\n\t\t\t{ L\"%revcmp%\",\trevcmp ? L\"1\" : L\"0\"},\n\t\t\t{ L\"%rs%\",\t\tregisters.grs.name },\n\t\t\t{ L\"%rt%\",\t\tregisters.grt.name },\n\t\t\t{ L\"%imm%\",\t\timmediates.primary.expression.toString() },\n\t\t\t{ L\"%dest%\",\timmediates.secondary.expression.toString() },\n\t});\n}\n\nstd::unique_ptr<CAssemblerCommand> generateMipsMacroSet(Parser& parser, MipsRegisterData& registers, MipsImmediateData& immediates, int flags)\n{\n\tconst wchar_t* selectedTemplate;\n\n\tint type = flags & MIPSM_CONDITIONMASK;\n\n\tbool ne = type == MIPSM_NE;\n\tbool eq = type == MIPSM_EQ;\n\tbool ge = type == MIPSM_GE || type == MIPSM_GEU;\n\tbool lt = type == MIPSM_LT || type == MIPSM_LTU;\n\tbool unsigned_ = type == MIPSM_GEU || type == MIPSM_LTU;\n\tbool immediate = (flags & MIPSM_IMM) != 0;\n\tbool revcmp = (flags & MIPSM_REVCMP) != 0;\n\n\tif (immediate && (ne || eq))\n\t{\n\t\tconst wchar_t* templateImmediateEqNe = LR\"(\n\t\t\t.if %imm% & ~0xFFFF\n\t\t\t\tli\t\t%rd%,%imm%\n\t\t\t\txor\t\t%rd%,%rs%,%rd%\n\t\t\t.else\n\t\t\t\txori\t%rd%,%rs%,%imm%\n\t\t\t.endif\n\t\t\t.if %eq%\n\t\t\t\tsltiu\t%rd%,%rd%,1\n\t\t\t.else\n\t\t\t\tsltu\t%rd%,r0,%rd%\n\t\t\t.endif\n\t\t)\";\n\n\t\tselectedTemplate = templateImmediateEqNe;\n\t} else if (ne || eq)\n\t{\n\t\tconst wchar_t* templateEqNe = LR\"(\n\t\t\txor\t\t%rd%,%rs%,%rt%\n\t\t\t.if %eq%\n\t\t\t\tsltiu\t%rd%,%rd%,1\n\t\t\t.else\n\t\t\t\tsltu\t%rd%,r0,%rd%\n\t\t\t.endif\n\t\t)\";\n\n\t\tselectedTemplate = templateEqNe;\n\t} else if (immediate && (ge || lt))\n\t{\n\t\tconst wchar_t* templateImmediateGeLt = LR\"(\n\t\t\t.if %revcmp% && %imm% == 0\n\t\t\t\tslt%u%\t%rd%,r0,%rs%\n\t\t\t.elseif %revcmp%\n\t\t\t\tli\t\t%rd%,%imm%\n\t\t\t\tslt%u%\t%rd%,%rd%,%rs%\n\t\t\t.elseif (%imm% < -0x8000) || (%imm% >= 0x8000)\n\t\t\t\tli\t\t%rd%,%imm%\n\t\t\t\tslt%u%\t%rd%,%rs%,%rd%\n\t\t\t.else\n\t\t\t\tslti%u%\t%rd%,%rs%,%imm%\n\t\t\t.endif\n\t\t\t.if %ge%\n\t\t\t\txori\t%rd%,%rd%,1\n\t\t\t.endif\n\t\t)\";\n\n\t\tselectedTemplate = templateImmediateGeLt;\n\t} else if (ge)\n\t{\n\t\tconst wchar_t* templateGe = LR\"(\n\t\t\t.if %revcmp%\n\t\t\t\tslt%u%\t%rd%,%rt%,%rs%\n\t\t\t.else\n\t\t\t\tslt%u%\t%rd%,%rs%,%rt%\n\t\t\t.endif\n\t\t\txori\t%rd%,%rd%,1\n\t\t)\";\n\n\t\tselectedTemplate = templateGe;\n\t} else\n\t{\n\t\treturn nullptr;\n\t}\n\n\tstd::wstring macroText = preprocessMacro(selectedTemplate,immediates);\n\treturn createMacro(parser,macroText,flags, {\n\t\t\t{ L\"%u%\",\t\tunsigned_ ? L\"u\" : L\"\"},\n\t\t\t{ L\"%eq%\",\t\teq ? L\"1\" : L\"0\" },\n\t\t\t{ L\"%ge%\",\t\tge ? L\"1\" : L\"0\" },\n\t\t\t{ L\"%revcmp%\",\trevcmp ? L\"1\" : L\"0\" },\n\t\t\t{ L\"%rd%\",\t\tregisters.grd.name },\n\t\t\t{ L\"%rs%\",\t\tregisters.grs.name },\n\t\t\t{ L\"%rt%\",\t\tregisters.grt.name },\n\t\t\t{ L\"%imm%\",\t\timmediates.secondary.expression.toString() },\n\t});\n}\n\nstd::unique_ptr<CAssemblerCommand> generateMipsMacroRotate(Parser& parser, MipsRegisterData& registers, MipsImmediateData& immediates, int flags)\n{\n\tbool left = (flags & MIPSM_LEFT) != 0;\n\tbool immediate = (flags & MIPSM_IMM) != 0;\n\tbool psp = Mips.GetVersion() == MARCH_PSP;\n\n\tconst wchar_t* selectedTemplate;\n\tif (psp && immediate)\n\t{\n\t\tconst wchar_t* templatePspImmediate = LR\"(\n\t\t\t.if %amount% != 0\n\t\t\t\t.if %left%\n\t\t\t\t\trotr\t%rd%,%rs%,-%amount%&31\n\t\t\t\t.else\n\t\t\t\t\trotr\t%rd%,%rs%,%amount%\n\t\t\t\t.endif\n\t\t\t.else\n\t\t\t\tmove\t%rd%,%rs%\n\t\t\t.endif\n\t\t)\";\n\n\t\tselectedTemplate = templatePspImmediate;\n\t} else if (psp)\n\t{\n\t\tconst wchar_t* templatePspRegister = LR\"(\n\t\t\t.if %left%\n\t\t\t\tnegu\tr1,%rt%\n\t\t\t\trotrv\t%rd%,%rs%,r1\n\t\t\t.else\n\t\t\t\trotrv\t%rd%,%rs%,%rt%\n\t\t\t.endif\n\t\t)\";\n\n\t\tselectedTemplate = templatePspRegister;\n\t} else if (immediate)\n\t{\n\t\tconst wchar_t* templateImmediate = LR\"(\n\t\t\t.if %amount% != 0\n\t\t\t\t.if %left%\n\t\t\t\t\tsrl\tr1,%rs%,-%amount%&31\n\t\t\t\t\tsll\t%rd%,%rs%,%amount%\n\t\t\t\t.else\n\t\t\t\t\tsll\tr1,%rs%,-%amount%&31\n\t\t\t\t\tsrl\t%rd%,%rs%,%amount%\n\t\t\t\t.endif\n\t\t\t\tor\t\t%rd%,%rd%,r1\n\t\t\t.else\n\t\t\t\tmove\t%rd%,%rs%\n\t\t\t.endif\n\t\t)\";\n\n\t\tselectedTemplate = templateImmediate;\n\t} else {\n\t\tconst wchar_t* templateRegister = LR\"(\n\t\t\tnegu\tr1,%rt%\n\t\t\t.if %left%\n\t\t\t\tsrlv\tr1,%rs%,r1\n\t\t\t\tsllv\t%rd%,%rs%,%rt%\n\t\t\t.else\n\t\t\t\tsllv\tr1,%rs%,r1\n\t\t\t\tsrlv\t%rd%,%rs%,%rt%\n\t\t\t.endif\n\t\t\tor\t%rd%,%rd%,r1\n\t\t)\";\n\n\t\tselectedTemplate = templateRegister;\n\t}\n\n\tstd::wstring macroText = preprocessMacro(selectedTemplate,immediates);\n\treturn createMacro(parser,macroText,flags, {\n\t\t\t{ L\"%left%\",\tleft ? L\"1\" : L\"0\" },\n\t\t\t{ L\"%rd%\",\t\tregisters.grd.name },\n\t\t\t{ L\"%rs%\",\t\tregisters.grs.name },\n\t\t\t{ L\"%rt%\",\t\tregisters.grt.name },\n\t\t\t{ L\"%amount%\",\timmediates.primary.expression.toString() },\n\t});\n}\n\n/* Placeholders\n\ti = i1 = 16 bit immediate\n\tI = i2 = 32 bit immediate\n\ts,t,d = registers */\nconst MipsMacroDefinition mipsMacros[] = {\n\t{ L\"abs\",\tL\"d,s\",\t\t&generateMipsMacroAbs,\t\t\t\tMIPSM_W },\n\t{ L\"dabs\",\tL\"d,s\",\t\t&generateMipsMacroAbs,\t\t\t\tMIPSM_DW },\n\n\t{ L\"li\",\tL\"s,I\",\t\t&generateMipsMacroLi,\t\t\t\tMIPSM_IMM|MIPSM_UPPER|MIPSM_LOWER },\n\t{ L\"li.u\",\tL\"s,I\",\t\t&generateMipsMacroLi,\t\t\t\tMIPSM_IMM|MIPSM_UPPER },\n\t{ L\"li.l\",\tL\"s,I\",\t\t&generateMipsMacroLi,\t\t\t\tMIPSM_IMM|MIPSM_LOWER },\n\t{ L\"la\",\tL\"s,I\",\t\t&generateMipsMacroLi,\t\t\t\tMIPSM_IMM|MIPSM_UPPER|MIPSM_LOWER },\n\t{ L\"la.u\",\tL\"s,I\",\t\t&generateMipsMacroLi,\t\t\t\tMIPSM_IMM|MIPSM_UPPER },\n\t{ L\"la.l\",\tL\"s,I\",\t\t&generateMipsMacroLi,\t\t\t\tMIPSM_IMM|MIPSM_LOWER },\n\n\t{ L\"li.s\",\tL\"S,I\",\t\t&generateMipsMacroLiFloat,\t\t\tMIPSM_IMM },\n\n\t{ L\"lb\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_B|MIPSM_UPPER|MIPSM_LOWER },\n\t{ L\"lbu\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_BU|MIPSM_UPPER|MIPSM_LOWER },\n\t{ L\"lh\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_HW|MIPSM_UPPER|MIPSM_LOWER },\n\t{ L\"lhu\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_HWU|MIPSM_UPPER|MIPSM_LOWER },\n\t{ L\"lw\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_W|MIPSM_UPPER|MIPSM_LOWER },\n\t{ L\"lwu\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_WU|MIPSM_UPPER|MIPSM_LOWER },\n\t{ L\"ld\",    L\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_DW|MIPSM_UPPER|MIPSM_LOWER },\n\t{ L\"ll\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_LLSCW|MIPSM_UPPER|MIPSM_LOWER },\n\t{ L\"lld\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_LLSCDW|MIPSM_UPPER|MIPSM_LOWER },\n\t{ L\"lwc1\",\tL\"S,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_COP1|MIPSM_UPPER|MIPSM_LOWER },\n\t{ L\"l.s\",\tL\"S,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_COP1|MIPSM_UPPER|MIPSM_LOWER },\n\t{ L\"lwc2\",\tL\"S,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_COP2|MIPSM_UPPER|MIPSM_LOWER },\n\t{ L\"ldc1\",\tL\"S,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_DCOP1|MIPSM_UPPER|MIPSM_LOWER },\n\t{ L\"l.d\",\tL\"S,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_DCOP1|MIPSM_UPPER|MIPSM_LOWER },\n\t{ L\"ldc2\",\tL\"S,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_DCOP2|MIPSM_UPPER|MIPSM_LOWER },\n\n\t{ L\"lb.u\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_B|MIPSM_UPPER },\n\t{ L\"lbu.u\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_BU|MIPSM_UPPER },\n\t{ L\"lh.u\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_HW|MIPSM_UPPER },\n\t{ L\"lhu.u\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_HWU|MIPSM_UPPER },\n\t{ L\"lw.u\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_W|MIPSM_UPPER },\n\t{ L\"lwu.u\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_WU|MIPSM_UPPER },\n\t{ L\"ld.u\",  L\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_DW|MIPSM_UPPER },\n\t{ L\"ll.u\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_LLSCW|MIPSM_UPPER },\n\t{ L\"lld.u\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_LLSCDW|MIPSM_UPPER },\n\t{ L\"lwc1.u\",L\"S,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_COP1|MIPSM_UPPER },\n\t{ L\"l.s.u\",\tL\"S,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_COP1|MIPSM_UPPER },\n\t{ L\"lwc2.u\",L\"S,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_COP2|MIPSM_UPPER },\n\t{ L\"ldc1.u\",L\"S,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_DCOP1|MIPSM_UPPER },\n\t{ L\"l.d.u\",\tL\"S,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_DCOP1|MIPSM_UPPER },\n\t{ L\"ldc2.u\",L\"S,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_DCOP2|MIPSM_UPPER },\n\n\t{ L\"lb.l\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_B|MIPSM_LOWER },\n\t{ L\"lbu.l\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_BU|MIPSM_LOWER },\n\t{ L\"lh.l\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_HW|MIPSM_LOWER },\n\t{ L\"lhu.l\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_HWU|MIPSM_LOWER },\n\t{ L\"lw.l\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_W|MIPSM_LOWER },\n\t{ L\"lwu.l\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_WU|MIPSM_LOWER },\n\t{ L\"ld.l\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_DW|MIPSM_LOWER },\n\t{ L\"ll.l\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_LLSCW|MIPSM_LOWER },\n\t{ L\"lld.l\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_LLSCDW|MIPSM_LOWER },\n\t{ L\"lwc1.l\",L\"S,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_COP1|MIPSM_LOWER },\n\t{ L\"l.s.l\",\tL\"S,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_COP1|MIPSM_LOWER },\n\t{ L\"lwc2.l\",L\"S,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_COP2|MIPSM_LOWER },\n\t{ L\"ldc1.l\",L\"S,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_DCOP1|MIPSM_LOWER },\n\t{ L\"l.d.l\",\tL\"S,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_DCOP1|MIPSM_LOWER },\n\t{ L\"ldc2.l\",L\"S,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_LOAD|MIPSM_DCOP2|MIPSM_LOWER },\n\n\t{ L\"ulh\",\tL\"d,i(s)\",\t&generateMipsMacroLoadUnaligned,\tMIPSM_HW|MIPSM_IMM },\n\t{ L\"ulh\",\tL\"d,(s)\",\t&generateMipsMacroLoadUnaligned,\tMIPSM_HW },\n\t{ L\"ulhu\",\tL\"d,i(s)\",\t&generateMipsMacroLoadUnaligned,\tMIPSM_HWU|MIPSM_IMM },\n\t{ L\"ulhu\",\tL\"d,(s)\",\t&generateMipsMacroLoadUnaligned,\tMIPSM_HWU },\n\t{ L\"ulw\",\tL\"d,i(s)\",\t&generateMipsMacroLoadUnaligned,\tMIPSM_W|MIPSM_IMM },\n\t{ L\"ulw\",\tL\"d,(s)\",\t&generateMipsMacroLoadUnaligned,\tMIPSM_W },\n\t{ L\"uld\",\tL\"d,i(s)\",\t&generateMipsMacroLoadUnaligned,\tMIPSM_DW|MIPSM_IMM },\n\t{ L\"uld\",\tL\"d,(s)\",\t&generateMipsMacroLoadUnaligned,\tMIPSM_DW },\n\n\t{ L\"sb\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_STORE|MIPSM_B|MIPSM_UPPER|MIPSM_LOWER },\n\t{ L\"sh\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_STORE|MIPSM_HW|MIPSM_UPPER|MIPSM_LOWER },\n\t{ L\"sw\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_STORE|MIPSM_W|MIPSM_UPPER|MIPSM_LOWER },\n\t{ L\"sd\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_STORE|MIPSM_DW|MIPSM_UPPER|MIPSM_LOWER },\n\t{ L\"sc\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_STORE|MIPSM_LLSCW|MIPSM_UPPER|MIPSM_LOWER },\n\t{ L\"scd\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_STORE|MIPSM_LLSCDW|MIPSM_UPPER|MIPSM_LOWER },\n\t{ L\"swc1\",\tL\"S,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_STORE|MIPSM_COP1|MIPSM_UPPER|MIPSM_LOWER },\n\t{ L\"s.s\",\tL\"S,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_STORE|MIPSM_COP1|MIPSM_UPPER|MIPSM_LOWER },\n\t{ L\"swc2\",\tL\"S,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_STORE|MIPSM_COP2|MIPSM_UPPER|MIPSM_LOWER },\n\t{ L\"sdc1\",\tL\"S,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_STORE|MIPSM_DCOP1|MIPSM_UPPER|MIPSM_LOWER },\n\t{ L\"s.d\",\tL\"S,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_STORE|MIPSM_DCOP1|MIPSM_UPPER|MIPSM_LOWER },\n\t{ L\"sdc2\",\tL\"S,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_STORE|MIPSM_DCOP2|MIPSM_UPPER|MIPSM_LOWER },\n\n\t{ L\"sb.u\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_STORE|MIPSM_B|MIPSM_UPPER },\n\t{ L\"sh.u\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_STORE|MIPSM_HW|MIPSM_UPPER },\n\t{ L\"sw.u\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_STORE|MIPSM_W|MIPSM_UPPER },\n\t{ L\"sd.u\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_STORE|MIPSM_DW|MIPSM_UPPER },\n\t{ L\"sc.u\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_STORE|MIPSM_LLSCW|MIPSM_UPPER },\n\t{ L\"scd.u\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_STORE|MIPSM_LLSCDW|MIPSM_UPPER },\n\t{ L\"swc1.u\",L\"S,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_STORE|MIPSM_COP1|MIPSM_UPPER },\n\t{ L\"s.s.u\",\tL\"S,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_STORE|MIPSM_COP1|MIPSM_UPPER },\n\t{ L\"swc2.u\",L\"S,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_STORE|MIPSM_COP2|MIPSM_UPPER },\n\t{ L\"sdc1.u\",L\"S,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_STORE|MIPSM_DCOP1|MIPSM_UPPER },\n\t{ L\"s.d.u\",\tL\"S,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_STORE|MIPSM_DCOP1|MIPSM_UPPER },\n\t{ L\"sdc2.u\",L\"S,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_STORE|MIPSM_DCOP2|MIPSM_UPPER },\n\n\t{ L\"sb.l\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_STORE|MIPSM_B|MIPSM_LOWER },\n\t{ L\"sh.l\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_STORE|MIPSM_HW|MIPSM_LOWER },\n\t{ L\"sw.l\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_STORE|MIPSM_W|MIPSM_LOWER },\n\t{ L\"sd.l\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_STORE|MIPSM_DW|MIPSM_LOWER },\n\t{ L\"sc.l\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_STORE|MIPSM_LLSCW|MIPSM_LOWER },\n\t{ L\"scd.l\",\tL\"s,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_STORE|MIPSM_LLSCDW|MIPSM_LOWER },\n\t{ L\"swc1.l\",L\"S,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_STORE|MIPSM_COP1|MIPSM_LOWER },\n\t{ L\"s.s.l\",\tL\"S,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_STORE|MIPSM_COP1|MIPSM_LOWER },\n\t{ L\"swc2.l\",L\"S,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_STORE|MIPSM_COP2|MIPSM_LOWER },\n\t{ L\"sdc1.l\",L\"S,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_STORE|MIPSM_DCOP1|MIPSM_LOWER },\n\t{ L\"s.d.l\",\tL\"S,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_STORE|MIPSM_DCOP1|MIPSM_LOWER },\n\t{ L\"sdc2.l\",L\"S,I\",\t\t&generateMipsMacroLoadStore,\t\tMIPSM_STORE|MIPSM_DCOP2|MIPSM_LOWER },\n\n\t{ L\"ush\",\tL\"d,i(s)\",\t&generateMipsMacroStoreUnaligned,\tMIPSM_HW|MIPSM_IMM },\n\t{ L\"ush\",\tL\"d,(s)\",\t&generateMipsMacroStoreUnaligned,\tMIPSM_HW },\n\t{ L\"usw\",\tL\"d,i(s)\",\t&generateMipsMacroStoreUnaligned,\tMIPSM_W|MIPSM_IMM },\n\t{ L\"usw\",\tL\"d,(s)\",\t&generateMipsMacroStoreUnaligned,\tMIPSM_W },\n\t{ L\"usd\",\tL\"d,i(s)\",\t&generateMipsMacroStoreUnaligned,\tMIPSM_DW|MIPSM_IMM },\n\t{ L\"usd\",\tL\"d,(s)\",\t&generateMipsMacroStoreUnaligned,\tMIPSM_DW },\n\n\t{ L\"blt\",\tL\"s,t,I\",\t&generateMipsMacroBranch,\t\t\tMIPSM_LT|MIPSM_DONTWARNDELAYSLOT },\n\t{ L\"blt\",\tL\"s,i,I\",\t&generateMipsMacroBranch,\t\t\tMIPSM_LT|MIPSM_IMM|MIPSM_DONTWARNDELAYSLOT },\n\t{ L\"bgt\",\tL\"s,t,I\",\t&generateMipsMacroBranch,\t\t\tMIPSM_LT|MIPSM_REVCMP|MIPSM_DONTWARNDELAYSLOT },\n\t{ L\"bgt\",\tL\"s,i,I\",\t&generateMipsMacroBranch,\t\t\tMIPSM_LT|MIPSM_IMM|MIPSM_REVCMP|MIPSM_DONTWARNDELAYSLOT },\n\t{ L\"bltu\",\tL\"s,t,I\",\t&generateMipsMacroBranch,\t\t\tMIPSM_LTU|MIPSM_DONTWARNDELAYSLOT },\n\t{ L\"bltu\",\tL\"s,i,I\",\t&generateMipsMacroBranch,\t\t\tMIPSM_LTU|MIPSM_IMM|MIPSM_DONTWARNDELAYSLOT },\n\t{ L\"bgtu\",\tL\"s,t,I\",\t&generateMipsMacroBranch,\t\t\tMIPSM_LTU|MIPSM_REVCMP|MIPSM_DONTWARNDELAYSLOT },\n\t{ L\"bgtu\",\tL\"s,i,I\",\t&generateMipsMacroBranch,\t\t\tMIPSM_LTU|MIPSM_IMM|MIPSM_REVCMP|MIPSM_DONTWARNDELAYSLOT },\n\t{ L\"bge\",\tL\"s,t,I\",\t&generateMipsMacroBranch,\t\t\tMIPSM_GE|MIPSM_DONTWARNDELAYSLOT },\n\t{ L\"bge\",\tL\"s,i,I\",\t&generateMipsMacroBranch,\t\t\tMIPSM_GE|MIPSM_IMM|MIPSM_DONTWARNDELAYSLOT },\n\t{ L\"ble\",\tL\"s,t,I\",\t&generateMipsMacroBranch,\t\t\tMIPSM_GE|MIPSM_REVCMP|MIPSM_DONTWARNDELAYSLOT },\n\t{ L\"ble\",\tL\"s,i,I\",\t&generateMipsMacroBranch,\t\t\tMIPSM_GE|MIPSM_IMM|MIPSM_REVCMP|MIPSM_DONTWARNDELAYSLOT },\n\t{ L\"bgeu\",\tL\"s,t,I\",\t&generateMipsMacroBranch,\t\t\tMIPSM_GEU|MIPSM_DONTWARNDELAYSLOT },\n\t{ L\"bgeu\",\tL\"s,i,I\",\t&generateMipsMacroBranch,\t\t\tMIPSM_GEU|MIPSM_IMM|MIPSM_DONTWARNDELAYSLOT },\n\t{ L\"bleu\",\tL\"s,t,I\",\t&generateMipsMacroBranch,\t\t\tMIPSM_GEU|MIPSM_REVCMP|MIPSM_DONTWARNDELAYSLOT },\n\t{ L\"bleu\",\tL\"s,i,I\",\t&generateMipsMacroBranch,\t\t\tMIPSM_GEU|MIPSM_IMM|MIPSM_REVCMP|MIPSM_DONTWARNDELAYSLOT },\n\t{ L\"bne\",\tL\"s,i,I\",\t&generateMipsMacroBranch,\t\t\tMIPSM_NE|MIPSM_IMM|MIPSM_DONTWARNDELAYSLOT },\n\t{ L\"beq\",\tL\"s,i,I\",\t&generateMipsMacroBranch,\t\t\tMIPSM_EQ|MIPSM_IMM|MIPSM_DONTWARNDELAYSLOT },\n\t{ L\"bltl\",\tL\"s,t,I\",\t&generateMipsMacroBranch,\t\t\tMIPSM_LT|MIPSM_DONTWARNDELAYSLOT|MIPSM_LIKELY },\n\t{ L\"bltl\",\tL\"s,i,I\",\t&generateMipsMacroBranch,\t\t\tMIPSM_LT|MIPSM_IMM|MIPSM_DONTWARNDELAYSLOT|MIPSM_LIKELY },\n\t{ L\"bgtl\",\tL\"s,t,I\",\t&generateMipsMacroBranch,\t\t\tMIPSM_LT|MIPSM_REVCMP|MIPSM_DONTWARNDELAYSLOT|MIPSM_LIKELY },\n\t{ L\"bgtl\",\tL\"s,i,I\",\t&generateMipsMacroBranch,\t\t\tMIPSM_LT|MIPSM_IMM|MIPSM_REVCMP|MIPSM_DONTWARNDELAYSLOT|MIPSM_LIKELY },\n\t{ L\"bltul\",\tL\"s,t,I\",\t&generateMipsMacroBranch,\t\t\tMIPSM_LTU|MIPSM_DONTWARNDELAYSLOT|MIPSM_LIKELY },\n\t{ L\"bltul\",\tL\"s,i,I\",\t&generateMipsMacroBranch,\t\t\tMIPSM_LTU|MIPSM_IMM|MIPSM_DONTWARNDELAYSLOT|MIPSM_LIKELY },\n\t{ L\"bgtul\",\tL\"s,t,I\",\t&generateMipsMacroBranch,\t\t\tMIPSM_LTU|MIPSM_REVCMP|MIPSM_DONTWARNDELAYSLOT|MIPSM_LIKELY },\n\t{ L\"bgtul\",\tL\"s,i,I\",\t&generateMipsMacroBranch,\t\t\tMIPSM_LTU|MIPSM_IMM|MIPSM_REVCMP|MIPSM_DONTWARNDELAYSLOT|MIPSM_LIKELY },\n\t{ L\"bgel\",\tL\"s,t,I\",\t&generateMipsMacroBranch,\t\t\tMIPSM_GE|MIPSM_DONTWARNDELAYSLOT|MIPSM_LIKELY },\n\t{ L\"bgel\",\tL\"s,i,I\",\t&generateMipsMacroBranch,\t\t\tMIPSM_GE|MIPSM_IMM|MIPSM_DONTWARNDELAYSLOT|MIPSM_LIKELY },\n\t{ L\"blel\",\tL\"s,t,I\",\t&generateMipsMacroBranch,\t\t\tMIPSM_GE|MIPSM_REVCMP|MIPSM_DONTWARNDELAYSLOT|MIPSM_LIKELY },\n\t{ L\"blel\",\tL\"s,i,I\",\t&generateMipsMacroBranch,\t\t\tMIPSM_GE|MIPSM_IMM|MIPSM_REVCMP|MIPSM_DONTWARNDELAYSLOT|MIPSM_LIKELY },\n\t{ L\"bgeul\",\tL\"s,t,I\",\t&generateMipsMacroBranch,\t\t\tMIPSM_GEU|MIPSM_DONTWARNDELAYSLOT|MIPSM_LIKELY },\n\t{ L\"bgeul\",\tL\"s,i,I\",\t&generateMipsMacroBranch,\t\t\tMIPSM_GEU|MIPSM_IMM|MIPSM_DONTWARNDELAYSLOT|MIPSM_LIKELY },\n\t{ L\"bleul\",\tL\"s,t,I\",\t&generateMipsMacroBranch,\t\t\tMIPSM_GEU|MIPSM_REVCMP|MIPSM_DONTWARNDELAYSLOT|MIPSM_LIKELY },\n\t{ L\"bleul\",\tL\"s,i,I\",\t&generateMipsMacroBranch,\t\t\tMIPSM_GEU|MIPSM_IMM|MIPSM_REVCMP|MIPSM_DONTWARNDELAYSLOT|MIPSM_LIKELY },\n\t{ L\"bnel\",\tL\"s,i,I\",\t&generateMipsMacroBranch,\t\t\tMIPSM_NE|MIPSM_IMM|MIPSM_DONTWARNDELAYSLOT|MIPSM_LIKELY },\n\t{ L\"beql\",\tL\"s,i,I\",\t&generateMipsMacroBranch,\t\t\tMIPSM_EQ|MIPSM_IMM|MIPSM_DONTWARNDELAYSLOT|MIPSM_LIKELY },\n\n\t{ L\"slt\",\tL\"d,s,I\",\t&generateMipsMacroSet,\t\t\t\tMIPSM_LT|MIPSM_IMM },\n\t{ L\"sltu\",\tL\"d,s,I\",\t&generateMipsMacroSet,\t\t\t\tMIPSM_LTU|MIPSM_IMM },\n\t{ L\"sgt\",\tL\"d,s,I\",\t&generateMipsMacroSet,\t\t\t\tMIPSM_LT|MIPSM_IMM|MIPSM_REVCMP },\n\t{ L\"sgtu\",\tL\"d,s,I\",\t&generateMipsMacroSet,\t\t\t\tMIPSM_LTU|MIPSM_IMM|MIPSM_REVCMP },\n\t{ L\"sge\",\tL\"d,s,t\",\t&generateMipsMacroSet,\t\t\t\tMIPSM_GE },\n\t{ L\"sge\",\tL\"d,s,I\",\t&generateMipsMacroSet,\t\t\t\tMIPSM_GE|MIPSM_IMM },\n\t{ L\"sle\",\tL\"d,s,t\",\t&generateMipsMacroSet,\t\t\t\tMIPSM_GE|MIPSM_REVCMP },\n\t{ L\"sle\",\tL\"d,s,I\",\t&generateMipsMacroSet,\t\t\t\tMIPSM_GE|MIPSM_IMM|MIPSM_REVCMP },\n\t{ L\"sgeu\",\tL\"d,s,t\",\t&generateMipsMacroSet,\t\t\t\tMIPSM_GEU },\n\t{ L\"sgeu\",\tL\"d,s,I\",\t&generateMipsMacroSet,\t\t\t\tMIPSM_GEU|MIPSM_IMM },\n\t{ L\"sleu\",\tL\"d,s,t\",\t&generateMipsMacroSet,\t\t\t\tMIPSM_GEU|MIPSM_REVCMP },\n\t{ L\"sleu\",\tL\"d,s,I\",\t&generateMipsMacroSet,\t\t\t\tMIPSM_GEU|MIPSM_IMM|MIPSM_REVCMP },\n\t{ L\"sne\",\tL\"d,s,t\",\t&generateMipsMacroSet,\t\t\t\tMIPSM_NE },\n\t{ L\"sne\",\tL\"d,s,I\",\t&generateMipsMacroSet,\t\t\t\tMIPSM_NE|MIPSM_IMM },\n\t{ L\"seq\",\tL\"d,s,t\",\t&generateMipsMacroSet,\t\t\t\tMIPSM_EQ },\n\t{ L\"seq\",\tL\"d,s,I\",\t&generateMipsMacroSet,\t\t\t\tMIPSM_EQ|MIPSM_IMM },\n\n\t{ L\"rol\",\tL\"d,s,t\",\t&generateMipsMacroRotate,\t\t\tMIPSM_LEFT },\n\t{ L\"rol\",\tL\"d,s,i\",\t&generateMipsMacroRotate,\t\t\tMIPSM_LEFT|MIPSM_IMM },\n\t{ L\"ror\",\tL\"d,s,t\",\t&generateMipsMacroRotate,\t\t\tMIPSM_RIGHT },\n\t{ L\"ror\",\tL\"d,s,i\",\t&generateMipsMacroRotate,\t\t\tMIPSM_RIGHT|MIPSM_IMM },\n\n\t{ nullptr,\tnullptr,\tnullptr,\t\t\t\t\t\t\t0 }\n};\n\n// file: Archs/MIPS/MipsOpcodes.cpp\n\nconst tMipsOpcode MipsOpcodes[] = {\n//     31---------26---------------------------------------------------0\n//     |  opcode   |                                                   |\n//     ------6----------------------------------------------------------\n//     |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--| lo\n// 000 | *1    | *2    | J     | JAL   | BEQ   | BNE   | BLEZ  | BGTZ  | 00..07\n// 001 | ADDI  | ADDIU | SLTI  | SLTIU | ANDI  | ORI   | XORI  | LUI   | 08..0F\n// 010 | *3    | *4    | *5    | ---   | BEQL  | BNEL  | BLEZL | BGTZL | 10..17\n// 011 | DADDI | DADDIU| LDL   | LDR   | ---   | ---   | LQ    | SQ    | 18..1F\n// 100 | LB    | LH    | LWL   | LW    | LBU   | LHU   | LWR   | LWU   | 20..27\n// 101 | SB    | SH    | SWL   | SW    | SDL   | SDR   | SWR   | CACHE | 28..2F\n// 110 | LL    | LWC1  | LV.S  | ---   | LLD   | ULV.Q | LV.Q  | LD    | 30..37\n// 111 | SC    | SWC1  | SV.S  | ---   | SCD   | USV.Q | SV.Q  | SD    | 38..3F\n//  hi |-------|-------|-------|-------|-------|-------|-------|-------|\n//\t\t*1 = SPECIAL\t*2 = REGIMM\t\t*3 = COP0\t\t*4 = COP1\t\t*5 = COP2\n\t{ \"j\",\t\t\"i26\",\t\t\t\tMIPS_OP(0x02), \t\t\tMA_MIPS1,\tMO_IPCA|MO_DELAY|MO_NODELAYSLOT },\n\t{ \"jal\",\t\"i26\",\t\t\t\tMIPS_OP(0x03),\t\t\tMA_MIPS1,\tMO_IPCA|MO_DELAY|MO_NODELAYSLOT },\n\t{ \"beq\",\t\"s,t,i16\",\t\t\tMIPS_OP(0x04),\t\t\tMA_MIPS1,\tMO_IPCR|MO_DELAY|MO_NODELAYSLOT },\n\t{ \"beqz\",\t\"s,i16\",\t\t\tMIPS_OP(0x04),\t\t\tMA_MIPS1,\tMO_IPCR|MO_DELAY|MO_NODELAYSLOT },\n\t{ \"b\",\t\t\"i16\",\t\t\t\tMIPS_OP(0x04), \t\t\tMA_MIPS1,\tMO_IPCR|MO_DELAY|MO_NODELAYSLOT },\n\t{ \"bne\",\t\"s,t,i16\",\t\t\tMIPS_OP(0x05),\t\t\tMA_MIPS1,\tMO_IPCR|MO_DELAY|MO_NODELAYSLOT },\n\t{ \"bnez\",\t\"s,i16\",\t\t\tMIPS_OP(0x05),\t\t\tMA_MIPS1,\tMO_IPCR|MO_DELAY|MO_NODELAYSLOT },\n\t{ \"blez\",\t\"s,i16\",\t\t\tMIPS_OP(0x06),\t\t\tMA_MIPS1,\tMO_IPCR|MO_DELAY|MO_NODELAYSLOT },\n\t{ \"bgtz\",\t\"s,i16\",\t\t\tMIPS_OP(0x07),\t\t\tMA_MIPS1,\tMO_IPCR|MO_DELAY|MO_NODELAYSLOT },\n\t{ \"addi\",\t\"t,s,i16\",\t\t\tMIPS_OP(0x08),\t\t\tMA_MIPS1,\tMO_IGNORERTD },\n\t{ \"addi\",\t\"s,i16\",\t\t\tMIPS_OP(0x08),\t\t\tMA_MIPS1,\tMO_RST },\n\t{ \"subi\",\t\"t,s,i16\",\t\t\tMIPS_OP(0x08),\t\t\tMA_MIPS1,\tMO_IGNORERTD|MO_NEGIMM },\n\t{ \"subi\",\t\"s,i16\",\t\t\tMIPS_OP(0x08),\t\t\tMA_MIPS1,\tMO_RST|MO_NEGIMM },\n\t{ \"addiu\",\t\"t,s,i16\",\t\t\tMIPS_OP(0x09),\t\t\tMA_MIPS1,\tMO_IGNORERTD },\n\t{ \"addiu\",\t\"s,i16\",\t\t\tMIPS_OP(0x09),\t\t\tMA_MIPS1,\tMO_RST },\n\t{ \"subiu\",\t\"t,s,i16\",\t\t\tMIPS_OP(0x09),\t\t\tMA_MIPS1,\tMO_IGNORERTD|MO_NEGIMM },\n\t{ \"subiu\",\t\"s,i16\",\t\t\tMIPS_OP(0x09),\t\t\tMA_MIPS1,\tMO_RST|MO_NEGIMM },\n\t{ \"slti\",\t\"t,s,i16\",\t\t\tMIPS_OP(0x0A),\t\t\tMA_MIPS1,\tMO_IGNORERTD },\n\t{ \"slti\",\t\"s,i16\",\t\t\tMIPS_OP(0x0A),\t\t\tMA_MIPS1,\tMO_RST },\n\t{ \"sltiu\",\t\"t,s,i16\",\t\t\tMIPS_OP(0x0B),\t\t\tMA_MIPS1,\tMO_IGNORERTD },\n\t{ \"sltiu\",\t\"s,i16\",\t\t\tMIPS_OP(0x0B),\t\t\tMA_MIPS1,\tMO_RST },\n\t{ \"andi\",\t\"t,s,i16\",\t\t\tMIPS_OP(0x0C),\t\t\tMA_MIPS1,\tMO_IGNORERTD },\n\t{ \"andi\",\t\"s,i16\",\t\t\tMIPS_OP(0x0C),\t\t\tMA_MIPS1,\tMO_RST },\n\t{ \"ori\",\t\"t,s,i16\",\t\t\tMIPS_OP(0x0D),\t\t\tMA_MIPS1,\tMO_IGNORERTD },\n\t{ \"ori\",\t\"s,i16\",\t\t\tMIPS_OP(0x0D),\t\t\tMA_MIPS1,\tMO_RST },\n\t{ \"xori\",\t\"t,s,i16\",\t\t\tMIPS_OP(0x0E),\t\t\tMA_MIPS1,\tMO_IGNORERTD },\n\t{ \"xori\",\t\"s,i16\",\t\t\tMIPS_OP(0x0E),\t\t\tMA_MIPS1,\tMO_RST },\n\t{ \"lui\",\t\"t,i16\",\t\t\tMIPS_OP(0x0F),\t\t\tMA_MIPS1,\tMO_IGNORERTD },\n\t{ \"cop2\",\t\"i25\",\t\t\t\tMIPS_OP(0x12)|(1<<25), \tMA_PSX,\t\t0 },\n\t{ \"beql\",\t\"s,t,i16\",\t\t\tMIPS_OP(0x14),\t\t\tMA_MIPS2,\tMO_IPCR|MO_DELAY|MO_NODELAYSLOT },\n\t{ \"beqzl\",\t\"s,i16\",\t\t\tMIPS_OP(0x14),\t\t\tMA_MIPS2,\tMO_IPCR|MO_DELAY|MO_NODELAYSLOT },\n\t{ \"bnel\",\t\"s,t,i16\",\t\t\tMIPS_OP(0x15),\t\t\tMA_MIPS2,\tMO_IPCR|MO_DELAY|MO_NODELAYSLOT },\n\t{ \"bnezl\",\t\"s,i16\",\t\t\tMIPS_OP(0x15),\t\t\tMA_MIPS2,\tMO_IPCR|MO_DELAY|MO_NODELAYSLOT },\n\t{ \"blezl\",\t\"s,i16\",\t\t\tMIPS_OP(0x16),\t\t\tMA_MIPS2,\tMO_IPCR|MO_DELAY|MO_NODELAYSLOT },\n\t{ \"bgtzl\",\t\"s,i16\",\t\t\tMIPS_OP(0x17),\t\t\tMA_MIPS2,\tMO_IPCR|MO_DELAY|MO_NODELAYSLOT },\n\t{ \"daddi\",\t\"t,s,i16\",\t\t\tMIPS_OP(0x18),\t\t\tMA_MIPS3,\tMO_64BIT },\n\t{ \"daddi\",\t\"s,i16\",\t\t\tMIPS_OP(0x18),\t\t\tMA_MIPS3,\tMO_64BIT|MO_RST },\n\t{ \"dsubi\",\t\"t,s,i16\",\t\t\tMIPS_OP(0x18),\t\t\tMA_MIPS3,\tMO_64BIT|MO_NEGIMM },\n\t{ \"dsubi\",\t\"s,i16\",\t\t\tMIPS_OP(0x18),\t\t\tMA_MIPS3,\tMO_64BIT|MO_RST|MO_NEGIMM },\n\t{ \"daddiu\",\t\"t,s,i16\",\t\t\tMIPS_OP(0x19),\t\t\tMA_MIPS3,\tMO_64BIT },\n\t{ \"daddiu\",\t\"s,i16\",\t\t\tMIPS_OP(0x19),\t\t\tMA_MIPS3,\tMO_64BIT|MO_RST },\n\t{ \"dsubiu\",\t\"t,s,i16\",\t\t\tMIPS_OP(0x19),\t\t\tMA_MIPS3,\tMO_64BIT|MO_NEGIMM },\n\t{ \"dsubiu\",\t\"s,i16\",\t\t\tMIPS_OP(0x19),\t\t\tMA_MIPS3,\tMO_64BIT|MO_RST|MO_NEGIMM },\n\t{ \"ldl\",\t\"t,i16(s)\",\t\t\tMIPS_OP(0x1A),\t\t\tMA_MIPS3,\tMO_64BIT|MO_DELAYRT|MO_IGNORERTD },\n\t{ \"ldl\",\t\"t,(s)\",\t\t\tMIPS_OP(0x1A),\t\t\tMA_MIPS3,\tMO_64BIT|MO_DELAYRT|MO_IGNORERTD },\n\t{ \"ldr\",\t\"t,i16(s)\",\t\t\tMIPS_OP(0x1B),\t\t\tMA_MIPS3,\tMO_64BIT|MO_DELAYRT|MO_IGNORERTD },\n\t{ \"ldr\",\t\"t,(s)\",\t\t\tMIPS_OP(0x1B),\t\t\tMA_MIPS3,\tMO_64BIT|MO_DELAYRT|MO_IGNORERTD },\n\t{ \"lq\",\t\t\"t,i16(s)\",\t\t\tMIPS_OP(0x1E),\t\t\tMA_PS2,\t\tMO_DELAYRT|MO_IGNORERTD },\n\t{ \"lq\",\t\t\"t,(s)\",\t\t\tMIPS_OP(0x1E),\t\t\tMA_PS2,\t\tMO_DELAYRT|MO_IGNORERTD },\n\t{ \"sq\",\t\t\"t,i16(s)\",\t\t\tMIPS_OP(0x1F),\t\t\tMA_PS2,\t\tMO_DELAYRT|MO_IGNORERTD },\n\t{ \"sq\",\t\t\"t,(s)\",\t\t\tMIPS_OP(0x1F),\t\t\tMA_PS2,\t\tMO_DELAYRT|MO_IGNORERTD },\n\t{ \"lb\",\t\t\"t,i16(s)\",\t\t\tMIPS_OP(0x20),\t\t\tMA_MIPS1,\tMO_DELAYRT|MO_IGNORERTD },\n\t{ \"lb\",\t\t\"t,(s)\",\t\t\tMIPS_OP(0x20),\t\t\tMA_MIPS1,\tMO_DELAYRT|MO_IGNORERTD },\n\t{ \"lh\",\t\t\"t,i16(s)\",\t\t\tMIPS_OP(0x21),\t\t\tMA_MIPS1,\tMO_DELAYRT|MO_IGNORERTD },\n\t{ \"lh\",\t\t\"t,(s)\",\t\t\tMIPS_OP(0x21),\t\t\tMA_MIPS1,\tMO_DELAYRT|MO_IGNORERTD },\n\t{ \"lwl\",\t\"t,i16(s)\",\t\t\tMIPS_OP(0x22),\t\t\tMA_MIPS1|MA_EXRSP,\tMO_DELAYRT|MO_IGNORERTD },\n\t{ \"lwl\",\t\"t,(s)\",\t\t\tMIPS_OP(0x22),\t\t\tMA_MIPS1|MA_EXRSP,\tMO_DELAYRT|MO_IGNORERTD },\n\t{ \"lw\",\t\t\"t,i16(s)\",\t\t\tMIPS_OP(0x23),\t\t\tMA_MIPS1,\tMO_DELAYRT|MO_IGNORERTD },\n\t{ \"lw\",\t\t\"t,(s)\",\t\t\tMIPS_OP(0x23),\t\t\tMA_MIPS1,\tMO_DELAYRT|MO_IGNORERTD },\n\t{ \"lbu\",\t\"t,i16(s)\",\t\t\tMIPS_OP(0x24),\t\t\tMA_MIPS1,\tMO_DELAYRT|MO_IGNORERTD },\n\t{ \"lbu\",\t\"t,(s)\",\t\t\tMIPS_OP(0x24),\t\t\tMA_MIPS1,\tMO_DELAYRT|MO_IGNORERTD },\n\t{ \"lhu\",\t\"t,i16(s)\",\t\t\tMIPS_OP(0x25),\t\t\tMA_MIPS1,\tMO_DELAYRT|MO_IGNORERTD },\n\t{ \"lhu\",\t\"t,(s)\",\t\t\tMIPS_OP(0x25),\t\t\tMA_MIPS1,\tMO_DELAYRT|MO_IGNORERTD },\n\t{ \"lwr\",\t\"t,i16(s)\",\t\t\tMIPS_OP(0x26),\t\t\tMA_MIPS1|MA_EXRSP,\tMO_DELAYRT|MO_IGNORERTD },\n\t{ \"lwr\",\t\"t,(s)\",\t\t\tMIPS_OP(0x26),\t\t\tMA_MIPS1|MA_EXRSP,\tMO_DELAYRT|MO_IGNORERTD },\n\t{ \"lwu\",\t\"t,i16(s)\",\t\t\tMIPS_OP(0x27),\t\t\tMA_MIPS3,\tMO_64BIT|MO_DELAYRT },\n\t{ \"lwu\",\t\"t,(s)\",\t\t\tMIPS_OP(0x27),\t\t\tMA_MIPS3,\tMO_64BIT|MO_DELAYRT },\n\t{ \"sb\",\t\t\"t,i16(s)\",\t\t\tMIPS_OP(0x28),\t\t\tMA_MIPS1,\t0 },\n\t{ \"sb\",\t\t\"t,(s)\",\t\t\tMIPS_OP(0x28),\t\t\tMA_MIPS1,\t0 },\n\t{ \"sh\",\t\t\"t,i16(s)\",\t\t\tMIPS_OP(0x29),\t\t\tMA_MIPS1,\t0 },\n\t{ \"sh\",\t\t\"t,(s)\",\t\t\tMIPS_OP(0x29),\t\t\tMA_MIPS1,\t0 },\n\t{ \"swl\",\t\"t,i16(s)\",\t\t\tMIPS_OP(0x2A),\t\t\tMA_MIPS1|MA_EXRSP,\t0 },\n\t{ \"swl\",\t\"t,(s)\",\t\t\tMIPS_OP(0x2A),\t\t\tMA_MIPS1|MA_EXRSP,\t0 },\n\t{ \"sw\",\t\t\"t,i16(s)\",\t\t\tMIPS_OP(0x2B),\t\t\tMA_MIPS1,\t0 },\n\t{ \"sw\",\t\t\"t,(s)\",\t\t\tMIPS_OP(0x2B),\t\t\tMA_MIPS1,\t0 },\n\t{ \"sdl\",\t\"t,i16(s)\",\t\t\tMIPS_OP(0x2C),\t\t\tMA_MIPS3,\tMO_64BIT },\n\t{ \"sdl\",\t\"t,(s)\",\t\t\tMIPS_OP(0x2C),\t\t\tMA_MIPS3,\tMO_64BIT },\n\t{ \"sdr\",\t\"t,i16(s)\",\t\t\tMIPS_OP(0x2D),\t\t\tMA_MIPS3,\tMO_64BIT|MO_IGNORERTD },\n\t{ \"sdr\",\t\"t,(s)\",\t\t\tMIPS_OP(0x2D),\t\t\tMA_MIPS3,\tMO_64BIT|MO_IGNORERTD },\n\t{ \"swr\",\t\"t,i16(s)\",\t\t\tMIPS_OP(0x2E),\t\t\tMA_MIPS1|MA_EXRSP,\t0 },\n\t{ \"swr\",\t\"t,(s)\",\t\t\tMIPS_OP(0x2E),\t\t\tMA_MIPS1|MA_EXRSP,\t0 },\n\t{ \"cache\",\t\"jc,i16(s)\",\t\tMIPS_OP(0x2F),\t\t\tMA_MIPS2,\t0 },\n\t{ \"cache\",\t\"jc,(s)\",\t\t\tMIPS_OP(0x2F),\t\t\tMA_MIPS2,\t0 },\n\t{ \"ll\",\t\t\"t,i16(s)\",\t\t\tMIPS_OP(0x30),\t\t\tMA_MIPS2,\tMO_DELAYRT|MO_IGNORERTD },\n\t{ \"ll\",\t\t\"t,(s)\",\t\t\tMIPS_OP(0x30),\t\t\tMA_MIPS2,\tMO_DELAYRT|MO_IGNORERTD },\n\t{ \"lwc1\",\t\"T,i16(s)\",\t\t\tMIPS_OP(0x31),\t\t\tMA_MIPS1,\tMO_FPU },\n\t{ \"lwc1\",\t\"T,(s)\",\t\t\tMIPS_OP(0x31),\t\t\tMA_MIPS1,\tMO_FPU },\n\t{ \"l.s\",\t\"T,i16(s)\",\t\t\tMIPS_OP(0x31),\t\t\tMA_MIPS1,\tMO_FPU },\n\t{ \"l.s\",\t\"T,(s)\",\t\t\tMIPS_OP(0x31),\t\t\tMA_MIPS1,\tMO_FPU },\n\t{ \"lwc2\",\t\"gt,i16(s)\",\t\tMIPS_OP(0x32),\t\t\tMA_PSX,\t\t0 },\n\t{ \"lwc2\",\t\"gt,(s)\",\t\t\tMIPS_OP(0x32),\t\t\tMA_PSX,\t\t0 },\n\t{ \"lv.s\",\t\"vt,i16(s)\",\t\tMIPS_OP(0x32),\t\t\tMA_PSP,\t\tMO_VFPU_SINGLE|MO_VFPU_MIXED|MO_IMMALIGNED },\n\t{ \"lv.s\",\t\"vt,(s)\",\t\t\tMIPS_OP(0x32),\t\t\tMA_PSP,\t\tMO_VFPU_SINGLE|MO_VFPU_MIXED },\n\t{ \"lld\",\t\"t,i16(s)\",\t\t\tMIPS_OP(0x34),\t\t\tMA_MIPS3,\tMO_64BIT|MO_DELAYRT },\n\t{ \"lld\",\t\"t,(s)\",\t\t\tMIPS_OP(0x34),\t\t\tMA_MIPS3,\tMO_64BIT|MO_DELAYRT },\n\t{ \"ldc1\",\t\"T,i16(s)\",\t\t\tMIPS_OP(0x35),\t\t\tMA_MIPS2,\tMO_DFPU },\n\t{ \"ldc1\",\t\"T,(s)\",\t\t\tMIPS_OP(0x35),\t\t\tMA_MIPS2,\tMO_DFPU },\n\t{ \"l.d\",\t\"T,i16(s)\",\t\t\tMIPS_OP(0x35),\t\t\tMA_MIPS2,\tMO_DFPU },\n\t{ \"l.d\",\t\"T,(s)\",\t\t\tMIPS_OP(0x35),\t\t\tMA_MIPS2,\tMO_DFPU },\n\t{ \"ulv.q\",\t\"vt,i16(s)\",\t\tMIPS_OP(0x35),\t\t\tMA_PSP,\t\tMO_VFPU_QUAD|MO_VFPU_MIXED|MO_IMMALIGNED },\n\t{ \"ulv.q\",\t\"vt,(s)\",\t\t\tMIPS_OP(0x35),\t\t\tMA_PSP,\t\tMO_VFPU_QUAD|MO_VFPU_MIXED },\n\t{ \"lvl.q\",\t\"vt,i16(s)\",\t\tMIPS_OP(0x35),\t\t\tMA_PSP,\t\tMO_VFPU_QUAD|MO_VFPU_MIXED|MO_VFPU_6BIT|MO_IMMALIGNED },\n\t{ \"lvl.q\",\t\"vt,(s)\",\t\t\tMIPS_OP(0x35),\t\t\tMA_PSP,\t\tMO_VFPU_QUAD|MO_VFPU_MIXED|MO_VFPU_6BIT },\n\t{ \"lvr.q\",\t\"vt,i16(s)\",\t\tMIPS_OP(0x35)|0x02,\t\tMA_PSP,\t\tMO_VFPU_QUAD|MO_VFPU_MIXED|MO_VFPU_6BIT|MO_IMMALIGNED },\n\t{ \"lvr.q\",\t\"vt,(s)\",\t\t\tMIPS_OP(0x35)|0x02,\t\tMA_PSP,\t\tMO_VFPU_QUAD|MO_VFPU_MIXED|MO_VFPU_6BIT },\n\t{ \"lv.q\",\t\"vt,i16(s)\",\t\tMIPS_OP(0x36),\t\t\tMA_PSP,\t\tMO_VFPU_QUAD|MO_VFPU_MIXED|MO_VFPU_6BIT|MO_IMMALIGNED },\n\t{ \"lv.q\",\t\"vt,(s)\",\t\t\tMIPS_OP(0x36),\t\t\tMA_PSP,\t\tMO_VFPU_QUAD|MO_VFPU_MIXED|MO_VFPU_6BIT },\n\t{ \"lqc2\",\t\"Vt,i16(s)\",\t\tMIPS_OP(0x36),\t\t\tMA_PS2,\t\tMO_DELAYRT },\n\t{ \"ld\",\t\t\"t,i16(s)\",\t\t\tMIPS_OP(0x37),\t\t\tMA_MIPS3,\tMO_64BIT|MO_DELAYRT },\n\t{ \"ld\",\t\t\"t,(s)\",\t\t\tMIPS_OP(0x37),\t\t\tMA_MIPS3,\tMO_64BIT|MO_DELAYRT },\n\t{ \"sc\",\t\t\"t,i16(s)\",\t\t\tMIPS_OP(0x38),\t\t\tMA_MIPS2,\t0 },\n\t{ \"sc\",\t\t\"t,(s)\",\t\t\tMIPS_OP(0x38),\t\t\tMA_MIPS2,\t0 },\n\t{ \"swc1\",\t\"T,i16(s)\",\t\t\tMIPS_OP(0x39),\t\t\tMA_MIPS1,\tMO_FPU },\n\t{ \"swc1\",\t\"T,(s)\",\t\t\tMIPS_OP(0x39),\t\t\tMA_MIPS1,\tMO_FPU },\n\t{ \"s.s\",\t\"T,i16(s)\",\t\t\tMIPS_OP(0x39),\t\t\tMA_MIPS1,\tMO_FPU },\n\t{ \"s.s\",\t\"T,(s)\",\t\t\tMIPS_OP(0x39),\t\t\tMA_MIPS1,\tMO_FPU },\n\t{ \"swc2\",\t\"gt,i16(s)\",\t\tMIPS_OP(0x3A),\t\t\tMA_PSX,\t\t0 },\n\t{ \"swc2\",\t\"gt,(s)\",\t\t\tMIPS_OP(0x3A),\t\t\tMA_PSX,\t\t0 },\n\t{ \"sv.s\",\t\"vt,i16(s)\",\t\tMIPS_OP(0x3A),\t\t\tMA_PSP,\t\tMO_VFPU_SINGLE|MO_VFPU_MIXED|MO_IMMALIGNED },\n\t{ \"sv.s\",\t\"vt,(s)\",\t\t\tMIPS_OP(0x3A),\t\t\tMA_PSP,\t\tMO_VFPU_SINGLE|MO_VFPU_MIXED },\n\t{ \"scd\",\t\"t,i16(s)\",\t\t\tMIPS_OP(0x3C),\t\t\tMA_MIPS3,\tMO_64BIT|MO_DELAYRT },\n\t{ \"scd\",\t\"t,(s)\",\t\t\tMIPS_OP(0x3C),\t\t\tMA_MIPS3,\tMO_64BIT|MO_DELAYRT },\n\t{ \"sdc1\",\t\"T,i16(s)\",\t\t\tMIPS_OP(0x3D),\t\t\tMA_MIPS2,\tMO_DFPU },\n\t{ \"sdc1\",\t\"T,(s)\",\t\t\tMIPS_OP(0x3D),\t\t\tMA_MIPS2,\tMO_DFPU },\n\t{ \"s.d\",\t\"T,i16(s)\",\t\t\tMIPS_OP(0x3D),\t\t\tMA_MIPS2,\tMO_DFPU },\n\t{ \"s.d\",\t\"T,(s)\",\t\t\tMIPS_OP(0x3D),\t\t\tMA_MIPS2,\tMO_DFPU },\n\t{ \"usv.q\",\t\"vt,i16(s)\",\t\tMIPS_OP(0x3D),\t\t\tMA_PSP,\t\tMO_VFPU_QUAD|MO_VFPU_MIXED|MO_IMMALIGNED },\n\t{ \"usv.q\",\t\"vt,(s)\",\t\t\tMIPS_OP(0x3D),\t\t\tMA_PSP,\t\tMO_VFPU_QUAD|MO_VFPU_MIXED },\n\t{ \"svl.q\",\t\"vt,i16(s)\",\t\tMIPS_OP(0x3D),\t\t\tMA_PSP,\t\tMO_VFPU_QUAD|MO_VFPU_MIXED|MO_VFPU_6BIT|MO_IMMALIGNED },\n\t{ \"svl.q\",\t\"vt,(s)\",\t\t\tMIPS_OP(0x3D),\t\t\tMA_PSP,\t\tMO_VFPU_QUAD|MO_VFPU_MIXED|MO_VFPU_6BIT },\n\t{ \"svr.q\",\t\"vt,i16(s)\",\t\tMIPS_OP(0x3D)|0x02,\t\tMA_PSP,\t\tMO_VFPU_QUAD|MO_VFPU_MIXED|MO_VFPU_6BIT|MO_IMMALIGNED },\n\t{ \"svr.q\",\t\"vt,(s)\",\t\t\tMIPS_OP(0x3D)|0x02,\t\tMA_PSP,\t\tMO_VFPU_QUAD|MO_VFPU_MIXED|MO_VFPU_6BIT },\n\t{ \"sv.q\",\t\"vt,i16(s),w\",\t\tMIPS_OP(0x3E)|0x02,\t\tMA_PSP,\t\tMO_VFPU_QUAD|MO_VFPU_MIXED|MO_VFPU_6BIT|MO_IMMALIGNED },\n\t{ \"sv.q\",\t\"vt,(s),w\",\t\t\tMIPS_OP(0x3E)|0x02,\t\tMA_PSP,\t\tMO_VFPU_QUAD|MO_VFPU_MIXED|MO_VFPU_6BIT },\n\t{ \"sv.q\",\t\"vt,i16(s)\",\t\tMIPS_OP(0x3E),\t\t\tMA_PSP,\t\tMO_VFPU_QUAD|MO_VFPU_MIXED|MO_VFPU_6BIT|MO_IMMALIGNED },\n\t{ \"sv.q\",\t\"vt,(s)\",\t\t\tMIPS_OP(0x3E),\t\t\tMA_PSP,\t\tMO_VFPU_QUAD|MO_VFPU_MIXED|MO_VFPU_6BIT },\n\t{ \"sqc2\",\t\"Vt,i16(s)\",\t\tMIPS_OP(0x3E),\t\t\tMA_PS2,\t\tMO_DELAYRT },\n\t{ \"sd\",\t\t\"t,i16(s)\",\t\t\tMIPS_OP(0x3F),\t\t\tMA_MIPS3,\tMO_64BIT|MO_DELAYRT },\n\t{ \"sd\",\t\t\"t,(s)\",\t\t\tMIPS_OP(0x3F),\t\t\tMA_MIPS3,\tMO_64BIT|MO_DELAYRT },\n\n//     31---------26------------------------------------------5--------0\n//     |=   SPECIAL|                                         | function|\n//     ------6----------------------------------------------------6-----\n//     |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--| lo\n// 000 | SLL   | ---   | SRL*1 | SRA   | SLLV  |  ---  | SRLV*2| SRAV  | 00..07\n// 001 | JR    | JALR  | MOVZ  | MOVN  |SYSCALL| BREAK |  ---  | SYNC  | 08..0F\n// 010 | MFHI  | MTHI  | MFLO  | MTLO  | DSLLV |  ---  |   *3  |  *4   | 10..17\n// 011 | MULT  | MULTU | DIV   | DIVU  | MADD  | MADDU | ----  | ----- | 18..1F\n// 100 | ADD   | ADDU  | SUB   | SUBU  | AND   | OR    | XOR   | NOR   | 20..27\n// 101 | mfsa  | mtsa  | SLT   | SLTU  |  *5   |  *6   |  *7   |  *8   | 28..2F\n// 110 | TGE   | TGEU  | TLT   | TLTU  | TEQ   |  ---  | TNE   |  ---  | 30..37\n// 111 | dsll  |  ---  | dsrl  | dsra  |dsll32 |  ---  |dsrl32 |dsra32 | 38..3F\n//  hi |-------|-------|-------|-------|-------|-------|-------|-------|\n// *1:\trotr when rs = 1 (PSP only)\t\t*2:\trotrv when sa = 1 (PSP only)\n// *3:\tdsrlv on PS2, clz on PSP\t\t*4:\tdsrav on PS2, clo on PSP\n// *5:\tdadd on PS2, max on PSP\t\t\t*6:\tdaddu on PS2, min on PSP\n// *7:\tdsub on PS2, msub on PSP\t\t*8:\tdsubu on PS2, msubu on PSP\n\t{ \"sll\",\t\"d,t,i5\",\tMIPS_SPECIAL(0x00),\t\t\t\tMA_MIPS1,\t0 },\n\t{ \"sll\",\t\"d,i5\",\t\tMIPS_SPECIAL(0x00),\t\t\t\tMA_MIPS1,\tMO_RDT },\n\t{ \"nop\",\t\"\",\t\t\tMIPS_SPECIAL(0x00),\t\t\t\tMA_MIPS1,\t0 },\n\t{ \"srl\",\t\"d,t,i5\",\tMIPS_SPECIAL(0x02),\t\t\t\tMA_MIPS1,\t0 },\n\t{ \"srl\",\t\"d,i5\",\t\tMIPS_SPECIAL(0x02),\t\t\t\tMA_MIPS1,\tMO_RDT },\n\t{ \"rotr\",\t\"d,t,i5\",\tMIPS_SPECIAL(0x02)|MIPS_RS(1),\tMA_PSP,\t\t0 },\n\t{ \"rotr\",\t\"d,i5\",\t\tMIPS_SPECIAL(0x02)|MIPS_RS(1),\tMA_PSP,\t\tMO_RDT },\n\t{ \"sra\",\t\"d,t,i5\",\tMIPS_SPECIAL(0x03),\t\t\t\tMA_MIPS1,\t0 },\n\t{ \"sra\",\t\"d,i5\",\t\tMIPS_SPECIAL(0x03),\t\t\t\tMA_MIPS1,\tMO_RDT },\n\t{ \"sllv\",\t\"d,t,s\",\tMIPS_SPECIAL(0x04),\t\t\t\tMA_MIPS1,\t0 },\n\t{ \"sllv\",\t\"d,s\",\t\tMIPS_SPECIAL(0x04),\t\t\t\tMA_MIPS1,\tMO_RDT },\n\t{ \"srlv\",\t\"d,t,s\",\tMIPS_SPECIAL(0x06),\t\t\t\tMA_MIPS1,\t0 },\n\t{ \"srlv\",\t\"d,s\",\t\tMIPS_SPECIAL(0x06),\t\t\t\tMA_MIPS1,\tMO_RDT },\n\t{ \"rotrv\",\t\"d,t,s\",\tMIPS_SPECIAL(0x06)|MIPS_SA(1),\tMA_PSP,\t\t0 },\n\t{ \"rotrv\",\t\"d,s\",\t\tMIPS_SPECIAL(0x06)|MIPS_SA(1),\tMA_PSP,\t\tMO_RDT },\n\t{ \"srav\",\t\"d,t,s\",\tMIPS_SPECIAL(0x07),\t\t\t\tMA_MIPS1,\t0 },\n\t{ \"srav\",\t\"d,s\",\t\tMIPS_SPECIAL(0x07),\t\t\t\tMA_MIPS1,\tMO_RDT },\n\t{ \"jr\",\t\t\"s\",\t\tMIPS_SPECIAL(0x08),\t\t\t\tMA_MIPS1,\tMO_DELAY|MO_NODELAYSLOT },\n\t{ \"jalr\",\t\"s,d\",\t\tMIPS_SPECIAL(0x09),\t\t\t\tMA_MIPS1,\tMO_DELAY|MO_NODELAYSLOT },\n\t{ \"jalr\",\t\"s\",\t\tMIPS_SPECIAL(0x09)|MIPS_RD(31),\tMA_MIPS1,\tMO_DELAY|MO_NODELAYSLOT },\n\t{ \"movz\",\t\"d,s,t\",\tMIPS_SPECIAL(0x0A),\t\t\t\tMA_MIPS4|MA_PS2|MA_PSP,\t0 },\n\t{ \"movn\",\t\"d,s,t\",\tMIPS_SPECIAL(0x0B),\t\t\t\tMA_MIPS4|MA_PS2|MA_PSP,\t0 },\n\t{ \"syscall\",\"i20\",\t\tMIPS_SPECIAL(0x0C),\t\t\t\tMA_MIPS1|MA_EXRSP,\tMO_NODELAYSLOT },\n\t{ \"syscall\",\"\",\t\t\tMIPS_SPECIAL(0x0C),\t\t\t\tMA_MIPS1|MA_EXRSP,\tMO_NODELAYSLOT },\n\t{ \"break\",\t\"i20\",\t\tMIPS_SPECIAL(0x0D),\t\t\t\tMA_MIPS1,\tMO_NODELAYSLOT },\n\t{ \"break\",\t\"\",\t\t\tMIPS_SPECIAL(0x0D),\t\t\t\tMA_MIPS1,\tMO_NODELAYSLOT },\n\t{ \"sync\",\t\"\",\t\t\tMIPS_SPECIAL(0x0F),\t\t\t\tMA_MIPS2,\t0 },\n\t{ \"mfhi\",\t\"d\",\t\tMIPS_SPECIAL(0x10),\t\t\t\tMA_MIPS1|MA_EXRSP,\t0 },\n\t{ \"mthi\",\t\"s\",\t\tMIPS_SPECIAL(0x11),\t\t\t\tMA_MIPS1|MA_EXRSP,\t0 },\n\t{ \"mflo\",\t\"d\",\t\tMIPS_SPECIAL(0x12),\t\t\t\tMA_MIPS1|MA_EXRSP,\t0 },\n\t{ \"mtlo\",\t\"s\",\t\tMIPS_SPECIAL(0x13),\t\t\t\tMA_MIPS1|MA_EXRSP,\t0 },\n\t{ \"dsllv\",\t\"d,t,s\",\tMIPS_SPECIAL(0x14),\t\t\t\tMA_MIPS3,\tMO_64BIT },\n\t{ \"dsllv\",\t\"d,s\",\t\tMIPS_SPECIAL(0x14),\t\t\t\tMA_MIPS3,\tMO_64BIT|MO_RDT },\n\t{ \"dsrlv\",\t\"d,t,s\",\tMIPS_SPECIAL(0x16),\t\t\t\tMA_MIPS3,\tMO_64BIT },\n\t{ \"dsrlv\",\t\"d,s\",\t\tMIPS_SPECIAL(0x16),\t\t\t\tMA_MIPS3,\tMO_64BIT|MO_RDT },\n\t{ \"clz\",\t\"d,s\",\t\tMIPS_SPECIAL(0x16),\t\t\t\tMA_PSP,\t\t0 },\n\t{ \"dsrav\",\t\"d,t,s\",\tMIPS_SPECIAL(0x17),\t\t\t\tMA_MIPS3,\tMO_64BIT },\n\t{ \"dsrav\",\t\"d,s\",\t\tMIPS_SPECIAL(0x17),\t\t\t\tMA_MIPS3,\tMO_64BIT|MO_RDT },\n\t{ \"clo\",\t\"d,s\",\t\tMIPS_SPECIAL(0x17),\t\t\t\tMA_PSP,\t\t0 },\n\t{ \"mult\",\t\"d,s,t\",\tMIPS_SPECIAL(0x18),\t\t\t\tMA_PS2,\t\t0 },\n\t{ \"multu\",\t\"d,s,t\",\tMIPS_SPECIAL(0x19),\t\t\t\tMA_PS2,\t\t0 },\n\t{ \"mult\",\t\"s,t\",\t\tMIPS_SPECIAL(0x18),\t\t\t\tMA_MIPS1|MA_EXRSP,\t0 },\n\t{ \"mult\",\t\"r\\x0,s,t\",\tMIPS_SPECIAL(0x18),\t\t\t\tMA_MIPS1|MA_EXRSP,\t0 },\n\t{ \"multu\",\t\"s,t\",\t\tMIPS_SPECIAL(0x19),\t\t\t\tMA_MIPS1|MA_EXRSP,\t0 },\n\t{ \"multu\",\t\"r\\x0,s,t\",\tMIPS_SPECIAL(0x19),\t\t\t\tMA_MIPS1|MA_EXRSP,\t0 },\n\t{ \"div\",\t\"s,t\",\t\tMIPS_SPECIAL(0x1A),\t\t\t\tMA_MIPS1|MA_EXRSP,\t0 },\n\t{ \"div\",\t\"r\\x0,s,t\",\tMIPS_SPECIAL(0x1A),\t\t\t\tMA_MIPS1|MA_EXRSP,\t0 },\n\t{ \"divu\",\t\"s,t\",\t\tMIPS_SPECIAL(0x1B),\t\t\t\tMA_MIPS1|MA_EXRSP,\t0 },\n\t{ \"divu\",\t\"r\\x0,s,t\",\tMIPS_SPECIAL(0x1B),\t\t\t\tMA_MIPS1|MA_EXRSP,\t0 },\n\t{ \"dmult\",\t\"s,t\",\t\tMIPS_SPECIAL(0x1C),\t\t\t\tMA_MIPS3|MA_EXPS2,\tMO_64BIT },\n\t{ \"dmult\",\t\"r\\x0,s,t\",\tMIPS_SPECIAL(0x1C),\t\t\t\tMA_MIPS3|MA_EXPS2,\tMO_64BIT },\n\t{ \"madd\",\t\"s,t\",\t\tMIPS_SPECIAL(0x1C),\t\t\t\tMA_PSP,\t\t0 },\n\t{ \"dmultu\",\t\"s,t\",\t\tMIPS_SPECIAL(0x1D),\t\t\t\tMA_MIPS3|MA_EXPS2,\tMO_64BIT },\n\t{ \"dmultu\",\t\"r\\x0,s,t\",\tMIPS_SPECIAL(0x1D),\t\t\t\tMA_MIPS3|MA_EXPS2,\tMO_64BIT },\n\t{ \"maddu\",\t\"s,t\",\t\tMIPS_SPECIAL(0x1D),\t\t\t\tMA_PSP,\t\t0 },\n\t{ \"ddiv\",\t\"s,t\",\t\tMIPS_SPECIAL(0x1E),\t\t\t\tMA_MIPS3|MA_EXPS2,\tMO_64BIT },\n\t{ \"ddiv\",\t\"r\\x0,s,t\",\tMIPS_SPECIAL(0x1E),\t\t\t\tMA_MIPS3|MA_EXPS2,\tMO_64BIT },\n\t{ \"ddivu\",\t\"s,t\",\t\tMIPS_SPECIAL(0x1F),\t\t\t\tMA_MIPS3|MA_EXPS2,\tMO_64BIT },\n\t{ \"ddivu\",\t\"r\\x0,s,t\",\tMIPS_SPECIAL(0x1F),\t\t\t\tMA_MIPS3|MA_EXPS2,\tMO_64BIT },\n\t{ \"add\",\t\"d,s,t\",\tMIPS_SPECIAL(0x20),\t\t\t\tMA_MIPS1,\t0 },\n\t{ \"add\",\t\"s,t\",\t\tMIPS_SPECIAL(0x20),\t\t\t\tMA_MIPS1,\tMO_RSD },\n\t{ \"addu\",\t\"d,s,t\",\tMIPS_SPECIAL(0x21),\t\t\t\tMA_MIPS1,\t0 },\n\t{ \"addu\",\t\"s,t\",\t\tMIPS_SPECIAL(0x21),\t\t\t\tMA_MIPS1,\tMO_RSD },\n\t{ \"move\",\t\"d,s\",\t\tMIPS_SPECIAL(0x21),\t\t\t\tMA_MIPS1,\t0 },\n\t{ \"clear\",\t\"d\",\t\tMIPS_SPECIAL(0x21),\t\t\t\tMA_MIPS1,\t0 },\n\t{ \"sub\",\t\"d,s,t\",\tMIPS_SPECIAL(0x22),\t\t\t\tMA_MIPS1,\t0 },\n\t{ \"sub\",\t\"s,t\",\t\tMIPS_SPECIAL(0x22),\t\t\t\tMA_MIPS1,\tMO_RSD },\n\t{ \"neg\",\t\"d,t\",\t\tMIPS_SPECIAL(0x22),\t\t\t\tMA_MIPS1,\t0 },\n\t{ \"subu\",\t\"d,s,t\",\tMIPS_SPECIAL(0x23),\t\t\t\tMA_MIPS1,\t0 },\n\t{ \"subu\",\t\"s,t\",\t\tMIPS_SPECIAL(0x23),\t\t\t\tMA_MIPS1,\tMO_RSD },\n\t{ \"negu\",\t\"d,t\",\t\tMIPS_SPECIAL(0x23),\t\t\t\tMA_MIPS1,\t0 },\n\t{ \"and\",\t\"d,s,t\",\tMIPS_SPECIAL(0x24),\t\t\t\tMA_MIPS1,\t0 },\n\t{ \"and\",\t\"s,t\",\t\tMIPS_SPECIAL(0x24),\t\t\t\tMA_MIPS1,\tMO_RSD },\n\t{ \"or\",\t\t\"d,s,t\",\tMIPS_SPECIAL(0x25),\t\t\t\tMA_MIPS1,\t0 },\n\t{ \"or\",\t\t\"s,t\",\t\tMIPS_SPECIAL(0x25),\t\t\t\tMA_MIPS1,\tMO_RSD },\n\t{ \"xor\",\t\"d,s,t\",\tMIPS_SPECIAL(0x26), \t\t\tMA_MIPS1,\t0 },\n\t{ \"eor\",\t\"d,s,t\",\tMIPS_SPECIAL(0x26),\t\t\t\tMA_MIPS1,\t0 },\n\t{ \"xor\",\t\"s,t\",\t\tMIPS_SPECIAL(0x26), \t\t\tMA_MIPS1,\tMO_RSD },\n\t{ \"eor\",\t\"s,t\",\t\tMIPS_SPECIAL(0x26), \t\t\tMA_MIPS1,\tMO_RSD },\n\t{ \"nor\",\t\"d,s,t\",\tMIPS_SPECIAL(0x27),\t\t\t\tMA_MIPS1,\t0 },\n\t{ \"nor\",\t\"s,t\",\t\tMIPS_SPECIAL(0x27),\t\t\t\tMA_MIPS1,\tMO_RSD },\n\t{ \"not\",\t\"d,s\",\t\tMIPS_SPECIAL(0x27),\t\t\t\tMA_MIPS1,\t0 },\n\t{ \"mfsa\",\t\"d\",\t\tMIPS_SPECIAL(0x28),\t\t\t\tMA_PS2,\t\t0 },\n\t{ \"mtsa\",\t\"s\",\t\tMIPS_SPECIAL(0x29),\t\t\t\tMA_PS2,\t\t0 },\n\t{ \"slt\",\t\"d,s,t\",\tMIPS_SPECIAL(0x2A),\t\t\t\tMA_MIPS1,\t0 },\n\t{ \"slt\",\t\"s,t\",\t\tMIPS_SPECIAL(0x2A),\t\t\t\tMA_MIPS1,\tMO_RSD},\n\t{ \"sgt\",\t\"d,t,s\",\tMIPS_SPECIAL(0x2A),\t\t\t\tMA_MIPS1,\t0 },\n\t{ \"sgt\",\t\"d,s\",\t\tMIPS_SPECIAL(0x2A),\t\t\t\tMA_MIPS1,\tMO_RDT},\n\t{ \"sltu\",\t\"d,s,t\",\tMIPS_SPECIAL(0x2B),\t\t\t\tMA_MIPS1,\t0 },\n\t{ \"sltu\",\t\"s,t\",\t\tMIPS_SPECIAL(0x2B),\t\t\t\tMA_MIPS1,\tMO_RSD },\n\t{ \"sgtu\",\t\"d,t,s\",\tMIPS_SPECIAL(0x2B),\t\t\t\tMA_MIPS1,\t0 },\n\t{ \"sgtu\",\t\"d,s\",\t\tMIPS_SPECIAL(0x2B),\t\t\t\tMA_MIPS1,\tMO_RDT},\n\t{ \"dadd\",\t\"d,s,t\",\tMIPS_SPECIAL(0x2C),\t\t\t\tMA_MIPS3,\tMO_64BIT },\n\t{ \"dadd\",\t\"s,t\",\t\tMIPS_SPECIAL(0x2C),\t\t\t\tMA_MIPS3,\tMO_64BIT|MO_RSD },\n\t{ \"max\",\t\"d,s,t\",\tMIPS_SPECIAL(0x2C),\t\t\t\tMA_PSP,\t\t0 },\n\t{ \"daddu\",\t\"d,s,t\",\tMIPS_SPECIAL(0x2D), \t\t\tMA_MIPS3,\tMO_64BIT },\n\t{ \"daddu\",\t\"s,t\",\t\tMIPS_SPECIAL(0x2D), \t\t\tMA_MIPS3,\tMO_64BIT|MO_RSD },\n\t{ \"dmove\",\t\"d,s\",\t\tMIPS_SPECIAL(0x2D), \t\t\tMA_MIPS3,\tMO_64BIT },\n\t{ \"min\",\t\"d,s,t\",\tMIPS_SPECIAL(0x2D), \t\t\tMA_PSP,\t\t0 },\n\t{ \"dsub\",\t\"d,s,t\",\tMIPS_SPECIAL(0x2E), \t\t\tMA_MIPS3,\tMO_64BIT },\n\t{ \"dsub\",\t\"s,t\",\t\tMIPS_SPECIAL(0x2E), \t\t\tMA_MIPS3,\tMO_64BIT|MO_RSD },\n\t{ \"dneg\",\t\"d,t\",\t\tMIPS_SPECIAL(0x2E),\t\t\t\tMA_MIPS3,\tMO_64BIT },\n\t{ \"msub\",\t\"s,t\",\t\tMIPS_SPECIAL(0x2E),\t\t\t\tMA_PSP,\t\t0 },\n\t{ \"dsubu\",\t\"d,s,t\",\tMIPS_SPECIAL(0x2F), \t\t\tMA_MIPS3,\tMO_64BIT },\n\t{ \"dsubu\",\t\"s,t\",\t\tMIPS_SPECIAL(0x2F), \t\t\tMA_MIPS3,\tMO_64BIT|MO_RSD },\n\t{ \"dnegu\",\t\"d,t\",\t\tMIPS_SPECIAL(0x2F),\t\t\t\tMA_MIPS3,\tMO_64BIT },\n\t{ \"msubu\",\t\"s,t\",\t\tMIPS_SPECIAL(0x2F),\t\t\t\tMA_PSP,\t\t0 },\n\t{ \"tge\",\t\"s,t,i10\",\tMIPS_SPECIAL(0x30),\t\t\t\tMA_MIPS2,\t0 },\n\t{ \"tge\",\t\"s,t\",\t\tMIPS_SPECIAL(0x30),\t\t\t\tMA_MIPS2,\t0 },\n\t{ \"tgeu\",\t\"s,t,i10\",\tMIPS_SPECIAL(0x31),\t\t\t\tMA_MIPS2,\t0 },\n\t{ \"tgeu\",\t\"s,t\",\t\tMIPS_SPECIAL(0x31),\t\t\t\tMA_MIPS2,\t0 },\n\t{ \"tlt\",\t\"s,t,i10\",\tMIPS_SPECIAL(0x32),\t\t\t\tMA_MIPS2,\t0 },\n\t{ \"tlt\",\t\"s,t\",\t\tMIPS_SPECIAL(0x32),\t\t\t\tMA_MIPS2,\t0 },\n\t{ \"tltu\",\t\"s,t,i10\",\tMIPS_SPECIAL(0x33),\t\t\t\tMA_MIPS2,\t0 },\n\t{ \"tltu\",\t\"s,t\",\t\tMIPS_SPECIAL(0x33),\t\t\t\tMA_MIPS2,\t0 },\n\t{ \"teq\",\t\"s,t,i10\",\tMIPS_SPECIAL(0x34),\t\t\t\tMA_MIPS2,\t0 },\n\t{ \"teq\",\t\"s,t\",\t\tMIPS_SPECIAL(0x34),\t\t\t\tMA_MIPS2,\t0 },\n\t{ \"tne\",\t\"s,t,i10\",\tMIPS_SPECIAL(0x36),\t\t\t\tMA_MIPS2,\t0 },\n\t{ \"tne\",\t\"s,t\",\t\tMIPS_SPECIAL(0x36),\t\t\t\tMA_MIPS2,\t0 },\n\t{ \"dsll\",\t\"d,t,i5\",\tMIPS_SPECIAL(0x38),\t\t\t\tMA_MIPS3,\tMO_64BIT },\n\t{ \"dsll\",\t\"d,i5\",\t\tMIPS_SPECIAL(0x38),\t\t\t\tMA_MIPS3,\tMO_64BIT|MO_RDT },\n\t{ \"dsrl\",\t\"d,t,i5\",\tMIPS_SPECIAL(0x3A),\t\t\t\tMA_MIPS3,\tMO_64BIT },\n\t{ \"dsrl\",\t\"d,i5\",\t\tMIPS_SPECIAL(0x3A),\t\t\t\tMA_MIPS3,\tMO_64BIT|MO_RDT },\n\t{ \"dsra\",\t\"d,t,i5\",\tMIPS_SPECIAL(0x3B),\t\t\t\tMA_MIPS3,\tMO_64BIT },\n\t{ \"dsra\",\t\"d,i5\",\t\tMIPS_SPECIAL(0x3B),\t\t\t\tMA_MIPS3,\tMO_64BIT|MO_RDT },\n\t{ \"dsll32\",\t\"d,t,i5\",\tMIPS_SPECIAL(0x3C),\t\t\t\tMA_MIPS3,\tMO_64BIT },\n\t{ \"dsll32\",\t\"d,i5\",\t\tMIPS_SPECIAL(0x3C),\t\t\t\tMA_MIPS3,\tMO_64BIT|MO_RDT },\n\t{ \"dsrl32\",\t\"d,t,i5\",\tMIPS_SPECIAL(0x3E),\t\t\t\tMA_MIPS3,\tMO_64BIT },\n\t{ \"dsrl32\",\t\"d,i5\",\t\tMIPS_SPECIAL(0x3E),\t\t\t\tMA_MIPS3,\tMO_64BIT|MO_RDT },\n\t{ \"dsra32\",\t\"d,t,i5\",\tMIPS_SPECIAL(0x3F),\t\t\t\tMA_MIPS3,\tMO_64BIT },\n\t{ \"dsra32\",\t\"d,i5\",\t\tMIPS_SPECIAL(0x3F),\t\t\t\tMA_MIPS3,\tMO_64BIT|MO_RDT },\n\n//     REGIMM: encoded by the rt field when opcode field = REGIMM.\n//     31---------26----------20-------16------------------------------0\n//     |=    REGIMM|          |   rt    |                              |\n//     ------6---------------------5------------------------------------\n//     |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--| lo\n//  00 | BLTZ  | BGEZ  | BLTZL | BGEZL |  ---  |  ---  |  ---  |  ---  | 00-07\n//  01 | tgei  | tgeiu | tlti  | tltiu | teqi  |  ---  | tnei  |  ---  | 08-0F\n//  10 | BLTZAL| BGEZAL|BLTZALL|BGEZALL|  ---  |  ---  |  ---  |  ---  | 10-17\n//  11 | mtsab | mtsah |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 18-1F\n//  hi |-------|-------|-------|-------|-------|-------|-------|-------|\n\t{ \"bltz\",\t\"s,i16\",\tMIPS_REGIMM(0x00),\t\t\t\tMA_MIPS1,\tMO_IPCR|MO_DELAY|MO_NODELAYSLOT },\n\t{ \"bgez\",\t\"s,i16\",\tMIPS_REGIMM(0x01),\t\t\t\tMA_MIPS1,\tMO_IPCR|MO_DELAY|MO_NODELAYSLOT },\n\t{ \"bltzl\",\t\"s,i16\",\tMIPS_REGIMM(0x02),\t\t\t\tMA_MIPS2,\tMO_IPCR|MO_DELAY|MO_NODELAYSLOT },\n\t{ \"bgezl\",\t\"s,i16\",\tMIPS_REGIMM(0x03),\t\t\t\tMA_MIPS2,\tMO_IPCR|MO_DELAY|MO_NODELAYSLOT },\n\t{ \"tgei\",\t\"s,i16\",\tMIPS_REGIMM(0x08),\t\t\t\tMA_MIPS2,\t0 },\n\t{ \"tgeiu\",\t\"s,i16\",\tMIPS_REGIMM(0x09),\t\t\t\tMA_MIPS2,\t0 },\n\t{ \"tlti\",\t\"s,i16\",\tMIPS_REGIMM(0x0A),\t\t\t\tMA_MIPS2,\t0 },\n\t{ \"tltiu\",\t\"s,i16\",\tMIPS_REGIMM(0x0B),\t\t\t\tMA_MIPS2,\t0 },\n\t{ \"teqi\",\t\"s,i16\",\tMIPS_REGIMM(0x0C),\t\t\t\tMA_MIPS2,\t0 },\n\t{ \"tnei\",\t\"s,i16\",\tMIPS_REGIMM(0x0E),\t\t\t\tMA_MIPS2,\t0 },\n\t{ \"bltzal\",\t\"s,i16\",\tMIPS_REGIMM(0x10),\t\t\t\tMA_MIPS1,\tMO_IPCR|MO_DELAY|MO_NODELAYSLOT },\n\t{ \"bgezal\",\t\"s,i16\",\tMIPS_REGIMM(0x11),\t\t\t\tMA_MIPS1,\tMO_IPCR|MO_DELAY|MO_NODELAYSLOT },\n\t{ \"bal\",\t\"i16\",\t\tMIPS_REGIMM(0x11),\t\t\t\tMA_MIPS1,\tMO_IPCR|MO_DELAY|MO_NODELAYSLOT },\n\t{ \"bltzall\",\"s,i16\",\tMIPS_REGIMM(0x12),\t\t\t\tMA_MIPS2,\tMO_IPCR|MO_DELAY|MO_NODELAYSLOT },\n\t{ \"bgezall\",\"s,i16\",\tMIPS_REGIMM(0x13),\t\t\t\tMA_MIPS2,\tMO_IPCR|MO_DELAY|MO_NODELAYSLOT },\n\t{ \"mtsab\",\t\"s,i16\",\tMIPS_REGIMM(0x18),\t\t\t\tMA_PS2,\t\t0 },\n\t{ \"mtsah\",\t\"s,i16\",\tMIPS_REGIMM(0x19),\t\t\t\tMA_PS2,\t\t0 },\n\n//     31---------26---------21----------------------------------------0\n//     |=      COP0|    rs    |                                        |\n//     -----6-------5---------------------------------------------------\n//     |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--| lo\n//  00 |  MFC0 | DMFC0 |  ---  |  ---  |  MTC0 | DMTC0 |  ---  |  ---  | 00..07\n//  01 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 08..0F\n//  10 |FUNCT* |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 10..17\n//  11 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 18..1F\n//  hi |-------|-------|-------|-------|-------|-------|-------|-------|\n\t{ \"mfc0\",\t\"t,z\",\t\tMIPS_COP0(0x00),\t\t\t\tMA_MIPS1|MA_EXRSP,\t0 },\n\t{ \"mfc0\",\t\"t,Rz\",\t\tMIPS_COP0(0x00),\t\t\t\tMA_RSP,\t\t0 },\n\t{ \"dmfc0\",\t\"t,z\",\t\tMIPS_COP0(0x01),\t\t\t\tMA_MIPS3,\tMO_64BIT },\n\t{ \"mtc0\",\t\"t,z\",\t\tMIPS_COP0(0x04),\t\t\t\tMA_MIPS1|MA_EXRSP,\t0 },\n\t{ \"mtc0\",\t\"t,Rz\",\t\tMIPS_COP0(0x04),\t\t\t\tMA_RSP,\t\t0 },\n\t{ \"dmtc0\",\t\"t,z\",\t\tMIPS_COP0(0x05),\t\t\t\tMA_MIPS3,\tMO_64BIT },\n\n//     31--------------------21-------------------------------5--------0\n//     |=            COP0FUNCT|                              | function|\n//     -----11----------------------------------------------------6-----\n//     |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--| lo\n// 000 |  ---  | TLBR  | TLBWI |  ---  |  ---  |  ---  | TLBWR |  ---  | 00..07\n// 001 | TLBP  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 08..0F\n// 010 | RFE   |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 10..17\n// 011 | ERET  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 18..1F\n// 100 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 20..27\n// 101 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 28..2F\n// 110 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 30..37\n// 110 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 38..3F\n//  hi |-------|-------|-------|-------|-------|-------|-------|-------|\n\t{ \"tlbr\",\t\"\",\t\t\tMIPS_COP0FUNCT(0x01),\t\t\tMA_MIPS1|MA_EXRSP,\t0 },\n\t{ \"tlbwi\",\t\"\",\t\t\tMIPS_COP0FUNCT(0x02),\t\t\tMA_MIPS1|MA_EXRSP,\t0 },\n\t{ \"tlbwr\",\t\"\",\t\t\tMIPS_COP0FUNCT(0x06),\t\t\tMA_MIPS1|MA_EXRSP,\t0 },\n\t{ \"tlbp\",\t\"\",\t\t\tMIPS_COP0FUNCT(0x08),\t\t\tMA_MIPS1|MA_EXRSP,\t0 },\n\t{ \"rfe\",\t\"\",\t\t\tMIPS_COP0FUNCT(0x10),\t\t\tMA_PSX,\t\t0 },\n\t{ \"eret\",\t\"\",\t\t\tMIPS_COP0FUNCT(0x18),\t\t\tMA_MIPS3,\t0 },\n\n//     31---------26---------21----------------------------------------0\n//     |=      COP1|    rs    |                                        |\n//     -----6-------5---------------------------------------------------\n//     |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--| lo\n//  00 |  MFC1 | DMFC1 |  CFC1 |  ---  |  MTC1 | DMTC1 |  CTC1 |  ---  | 00..07\n//  01 |  BC*  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 08..0F\n//  10 |  S*   |  ---  |  ---  |  ---  |  W*   |  ---  |  ---  |  ---  | 10..17\n//  11 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 18..1F\n//  hi |-------|-------|-------|-------|-------|-------|-------|-------|\n\n\t{ \"mfc1\",\t\"t,S\",\t\tMIPS_COP1(0x00),\t\t\t\tMA_MIPS1,\tMO_FPU },\n\t{ \"dmfc1\",\t\"t,S\",\t\tMIPS_COP1(0x01),\t\t\t\tMA_MIPS3,\tMO_DFPU|MO_64BIT },\n\t{ \"cfc1\",\t\"t,f\",\t\tMIPS_COP1(0x02),\t\t\t\tMA_MIPS1,\tMO_FPU },\n\t{ \"mtc1\",\t\"t,S\",\t\tMIPS_COP1(0x04),\t\t\t\tMA_MIPS1,\tMO_FPU },\n\t{ \"dmtc1\",\t\"t,S\",\t\tMIPS_COP1(0x05),\t\t\t\tMA_MIPS3,\tMO_DFPU|MO_64BIT },\n\t{ \"ctc1\",\t\"t,f\",\t\tMIPS_COP1(0x06),\t\t\t\tMA_MIPS1,\tMO_FPU },\n\n//     31---------26----------20-------16------------------------------0\n//     |=    COP1BC|          |   rt    |                              |\n//     ------11--------------5------------------------------------------\n//     |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--| lo\n//  00 |  BC1F | BC1T  | BC1FL | BC1TL |  ---  |  ---  |  ---  |  ---  | 00..07\n//  01 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 08..0F\n//  10 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 10..17\n//  11 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 18..1F\n//  hi |-------|-------|-------|-------|-------|-------|-------|-------|\n\t{ \"bc1f\",\t\"i16\",\t\tMIPS_COP1BC(0x00),\t\t\t\tMA_MIPS1,\tMO_FPU|MO_IPCR|MO_DELAY|MO_NODELAYSLOT },\n\t{ \"bc1t\",\t\"i16\",\t\tMIPS_COP1BC(0x01),\t\t\t\tMA_MIPS1,\tMO_FPU|MO_IPCR|MO_DELAY|MO_NODELAYSLOT },\n\t{ \"bc1fl\",\t\"i16\",\t\tMIPS_COP1BC(0x02),\t\t\t\tMA_MIPS2,\tMO_FPU|MO_IPCR|MO_DELAY|MO_NODELAYSLOT },\n\t{ \"bc1tl\",\t\"i16\",\t\tMIPS_COP1BC(0x03),\t\t\t\tMA_MIPS2,\tMO_FPU|MO_IPCR|MO_DELAY|MO_NODELAYSLOT },\n\n//     31--------------------21-------------------------------5--------0\n//     |=                COP1S|                              | function|\n//     -----11----------------------------------------------------6-----\n//     |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--| lo\n// 000 |  add  |  sub  |  mul  |  div  | sqrt  |  abs  |  mov  |  neg  | 00..07\n// 001 |round.l|trunc.l|ceil.l |floor.l|round.w|trunc.w|ceil.w |floor.w| 08..0F\n// 010 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | rsqrt |  ---  | 10..17\n// 011 | adda  | suba  | mula  |  ---  | madd  | msub  | madda | msuba | 18..1F\n// 100 |  ---  | cvt.d |  ---  |  ---  | cvt.w | cvt.l |  ---  |  ---  | 20..27\n// 101 |  max  |  min  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 28..2F\n// 110 |  c.f  | c.un  | c.eq  | c.ueq |c.(o)lt| c.ult |c.(o)le| c.ule | 30..37\n// 110 |  c.sf | c.ngle| c.seq | c.ngl | c.lt  | c.nge | c.le  | c.ngt | 38..3F\n//  hi |-------|-------|-------|-------|-------|-------|-------|-------|\n\t{ \"add.s\",\t\t\"D,S,T\",\tMIPS_COP1S(0x00),\t\t\tMA_MIPS1,\tMO_FPU },\n\t{ \"add.s\",\t\t\"S,T\",\t\tMIPS_COP1S(0x00),\t\t\tMA_MIPS1,\tMO_FPU|MO_FRSD },\n\t{ \"sub.s\",\t\t\"D,S,T\",\tMIPS_COP1S(0x01),\t\t\tMA_MIPS1,\tMO_FPU },\n\t{ \"sub.s\",\t\t\"S,T\",\t\tMIPS_COP1S(0x01),\t\t\tMA_MIPS1,\tMO_FPU|MO_FRSD },\n\t{ \"mul.s\",\t\t\"D,S,T\",\tMIPS_COP1S(0x02),\t\t\tMA_MIPS1,\tMO_FPU },\n\t{ \"mul.s\",\t\t\"S,T\",\t\tMIPS_COP1S(0x02),\t\t\tMA_MIPS1,\tMO_FPU|MO_FRSD },\n\t{ \"div.s\",\t\t\"D,S,T\",\tMIPS_COP1S(0x03),\t\t\tMA_MIPS1,\tMO_FPU },\n\t{ \"div.s\",\t\t\"S,T\",\t\tMIPS_COP1S(0x03),\t\t\tMA_MIPS1,\tMO_FPU|MO_FRSD },\n\t{ \"sqrt.s\",\t\t\"D,S\",\t\tMIPS_COP1S(0x04),\t\t\tMA_MIPS2,\tMO_FPU },\n\t{ \"abs.s\",\t\t\"D,S\",\t\tMIPS_COP1S(0x05),\t\t\tMA_MIPS1,\tMO_FPU },\n\t{ \"mov.s\",\t\t\"D,S\",\t\tMIPS_COP1S(0x06),\t\t\tMA_MIPS1,\tMO_FPU },\n\t{ \"neg.s\",\t\t\"D,S\",\t\tMIPS_COP1S(0x07),\t\t\tMA_MIPS1,\tMO_FPU },\n\t{ \"round.l.s\",\t\"D,S\",\t\tMIPS_COP1S(0x08),\t\t\tMA_MIPS3,\tMO_DFPU },\n\t{ \"trunc.l.s\",\t\"D,S\",\t\tMIPS_COP1S(0x09),\t\t\tMA_MIPS3,\tMO_DFPU },\n\t{ \"ceil.l.s\",\t\"D,S\",\t\tMIPS_COP1S(0x0A),\t\t\tMA_MIPS3,\tMO_DFPU },\n\t{ \"floor.l.s\",\t\"D,S\",\t\tMIPS_COP1S(0x0B),\t\t\tMA_MIPS3,\tMO_DFPU },\n\t{ \"round.w.s\",\t\"D,S\",\t\tMIPS_COP1S(0x0C),\t\t\tMA_MIPS2|MA_EXPS2,\tMO_FPU },\n\t{ \"trunc.w.s\",\t\"D,S\",\t\tMIPS_COP1S(0x0D),\t\t\tMA_MIPS1|MA_EXPS2,\tMO_FPU },\n\t{ \"ceil.w.s\",\t\"D,S\",\t\tMIPS_COP1S(0x0E),\t\t\tMA_MIPS2|MA_EXPS2,\tMO_FPU },\n\t{ \"floor.w.s\",\t\"D,S\",\t\tMIPS_COP1S(0x0F),\t\t\tMA_MIPS2|MA_EXPS2,\tMO_FPU },\n\t{ \"rsqrt.w.s\",\t\"D,S\",\t\tMIPS_COP1S(0x16),\t\t\tMA_PS2,\t\t0 },\n\t{ \"adda.s\",\t\t\"S,T\",\t\tMIPS_COP1S(0x18),\t\t\tMA_PS2,\t\t0 },\n\t{ \"suba.s\",\t\t\"S,T\",\t\tMIPS_COP1S(0x19),\t\t\tMA_PS2,\t\t0 },\n\t{ \"mula.s\",\t\t\"S,T\",\t\tMIPS_COP1S(0x1A),\t\t\tMA_PS2,\t\t0 },\n\t{ \"madd.s\",\t\t\"D,S,T\",\tMIPS_COP1S(0x1C),\t\t\tMA_PS2,\t\t0 },\n\t{ \"madd.s\",\t\t\"S,T\",\t\tMIPS_COP1S(0x1C),\t\t\tMA_PS2,\t\tMO_FRSD },\n\t{ \"msub.s\",\t\t\"D,S,T\",\tMIPS_COP1S(0x1D),\t\t\tMA_PS2,\t\t0 },\n\t{ \"msub.s\",\t\t\"S,T\",\t\tMIPS_COP1S(0x1D),\t\t\tMA_PS2,\t\tMO_FRSD },\n\t{ \"madda.s\",\t\"S,T\",\t\tMIPS_COP1S(0x1E),\t\t\tMA_PS2,\t\t0 },\n\t{ \"msuba.s\",\t\"S,T\",\t\tMIPS_COP1S(0x1F),\t\t\tMA_PS2,\t\t0 },\n\t{ \"cvt.d.s\",\t\"D,S\",\t\tMIPS_COP1S(0x21),\t\t\tMA_MIPS1,\tMO_DFPU },\n\t{ \"cvt.w.s\",\t\"D,S\",\t\tMIPS_COP1S(0x24),\t\t\tMA_MIPS1,\tMO_FPU },\n\t{ \"cvt.l.s\",\t\"D,S\",\t\tMIPS_COP1S(0x25),\t\t\tMA_MIPS3,\tMO_DFPU },\n\t{ \"max.s\",\t\t\"D,S,T\",\tMIPS_COP1S(0x28),\t\t\tMA_PS2,\t\t0 },\n\t{ \"min.s\",\t\t\"D,S,T\",\tMIPS_COP1S(0x29),\t\t\tMA_PS2,\t\t0 },\n\t{ \"c.f.s\",\t\t\"S,T\",\t\tMIPS_COP1S(0x30),\t\t\tMA_MIPS1,\tMO_FPU },\n\t{ \"c.un.s\",\t\t\"S,T\",\t\tMIPS_COP1S(0x31),\t\t\tMA_MIPS1|MA_EXPS2,\tMO_FPU },\n\t{ \"c.eq.s\",\t\t\"S,T\",\t\tMIPS_COP1S(0x32),\t\t\tMA_MIPS1,\tMO_FPU },\n\t{ \"c.ueq.s\",\t\"S,T\",\t\tMIPS_COP1S(0x33),\t\t\tMA_MIPS1|MA_EXPS2,\tMO_FPU },\n\t{ \"c.olt.s\",\t\"S,T\",\t\tMIPS_COP1S(0x34),\t\t\tMA_MIPS1|MA_EXPS2,\tMO_FPU },\n\t{ \"c.lt.s\",\t\t\"S,T\",\t\tMIPS_COP1S(0x34),\t\t\tMA_PS2,\t\t0 },\n\t{ \"c.ult.s\",\t\"S,T\",\t\tMIPS_COP1S(0x35),\t\t\tMA_MIPS1|MA_EXPS2,\tMO_FPU },\n\t{ \"c.ole.s\",\t\"S,T\",\t\tMIPS_COP1S(0x36),\t\t\tMA_MIPS1|MA_EXPS2,\tMO_FPU },\n\t{ \"c.le.s\",\t\t\"S,T\",\t\tMIPS_COP1S(0x36),\t\t\tMA_PS2,\t\t0 },\n\t{ \"c.ule.s\",\t\"S,T\",\t\tMIPS_COP1S(0x37),\t\t\tMA_MIPS1|MA_EXPS2,\tMO_FPU },\n\t{ \"c.sf.s\",\t\t\"S,T\",\t\tMIPS_COP1S(0x38),\t\t\tMA_MIPS1|MA_EXPS2,\tMO_FPU },\n\t{ \"c.ngle.s\",\t\"S,T\",\t\tMIPS_COP1S(0x39),\t\t\tMA_MIPS1|MA_EXPS2,\tMO_FPU },\n\t{ \"c.seq.s\",\t\"S,T\",\t\tMIPS_COP1S(0x3A),\t\t\tMA_MIPS1|MA_EXPS2,\tMO_FPU },\n\t{ \"c.ngl.s\",\t\"S,T\",\t\tMIPS_COP1S(0x3B),\t\t\tMA_MIPS1|MA_EXPS2,\tMO_FPU },\n\t{ \"c.lt.s\",\t\t\"S,T\",\t\tMIPS_COP1S(0x3C),\t\t\tMA_MIPS1|MA_EXPS2,\tMO_FPU },\n\t{ \"c.nge.s\",\t\"S,T\",\t\tMIPS_COP1S(0x3D),\t\t\tMA_MIPS1|MA_EXPS2,\tMO_FPU },\n\t{ \"c.le.s\",\t\t\"S,T\",\t\tMIPS_COP1S(0x3E),\t\t\tMA_MIPS1|MA_EXPS2,\tMO_FPU },\n\t{ \"c.ngt.s\",\t\"S,T\",\t\tMIPS_COP1S(0x3F),\t\t\tMA_MIPS1|MA_EXPS2,\tMO_FPU },\n\n//     31--------------------21-------------------------------5--------0\n//     |=                COP1D|                              | function|\n//     -----11----------------------------------------------------6-----\n//     |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--| lo\n// 000 |  add  |  sub  |  mul  |  div  | sqrt  |  abs  |  mov  |  neg  | 00..07\n// 001 |round.l|trunc.l|ceil.l |floor.l|round.w|trunc.w|ceil.w |floor.w| 08..0F\n// 010 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 10..17\n// 011 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 18..1F\n// 100 | cvt.s |  ---  |  ---  |  ---  | cvt.w | cvt.l |  ---  |  ---  | 20..27\n// 101 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 28..2F\n// 110 |  c.f  | c.un  | c.eq  | c.ueq | c.olt | c.ult | c.ole | c.ule | 30..37\n// 110 |  c.sf | c.ngle| c.seq | c.ngl | c.lt  | c.nge | c.le  | c.ngt | 38..3F\n//  hi |-------|-------|-------|-------|-------|-------|-------|-------|\n\t{ \"add.d\",\t\t\"D,S,T\",\tMIPS_COP1D(0x00),\t\t\tMA_MIPS1,\tMO_DFPU },\n\t{ \"add.d\",\t\t\"S,T\",\t\tMIPS_COP1D(0x00),\t\t\tMA_MIPS1,\tMO_DFPU|MO_FRSD },\n\t{ \"sub.d\",\t\t\"D,S,T\",\tMIPS_COP1D(0x01),\t\t\tMA_MIPS1,\tMO_DFPU },\n\t{ \"sub.d\",\t\t\"S,T\",\t\tMIPS_COP1D(0x01),\t\t\tMA_MIPS1,\tMO_DFPU|MO_FRSD },\n\t{ \"mul.d\",\t\t\"D,S,T\",\tMIPS_COP1D(0x02),\t\t\tMA_MIPS1,\tMO_DFPU },\n\t{ \"mul.d\",\t\t\"S,T\",\t\tMIPS_COP1D(0x02),\t\t\tMA_MIPS1,\tMO_DFPU|MO_FRSD },\n\t{ \"div.d\",\t\t\"D,S,T\",\tMIPS_COP1D(0x03),\t\t\tMA_MIPS1,\tMO_DFPU },\n\t{ \"div.d\",\t\t\"S,T\",\t\tMIPS_COP1D(0x03),\t\t\tMA_MIPS1,\tMO_DFPU|MO_FRSD },\n\t{ \"sqrt.d\",\t\t\"D,S\",\t\tMIPS_COP1D(0x04),\t\t\tMA_MIPS2,\tMO_DFPU },\n\t{ \"abs.d\",\t\t\"D,S\",\t\tMIPS_COP1D(0x05),\t\t\tMA_MIPS1,\tMO_DFPU },\n\t{ \"mov.d\",\t\t\"D,S\",\t\tMIPS_COP1D(0x06),\t\t\tMA_MIPS1,\tMO_DFPU },\n\t{ \"neg.d\",\t\t\"D,S\",\t\tMIPS_COP1D(0x07),\t\t\tMA_MIPS1,\tMO_DFPU },\n\t{ \"round.l.d\",\t\"D,S\",\t\tMIPS_COP1D(0x08),\t\t\tMA_MIPS3,\tMO_DFPU },\n\t{ \"trunc.l.d\",\t\"D,S\",\t\tMIPS_COP1D(0x09),\t\t\tMA_MIPS3,\tMO_DFPU },\n\t{ \"ceil.l.d\",\t\"D,S\",\t\tMIPS_COP1D(0x0A),\t\t\tMA_MIPS3,\tMO_DFPU },\n\t{ \"floor.l.d\",\t\"D,S\",\t\tMIPS_COP1D(0x0B),\t\t\tMA_MIPS3,\tMO_DFPU },\n\t{ \"round.w.d\",\t\"D,S\",\t\tMIPS_COP1D(0x0C),\t\t\tMA_MIPS2,\tMO_DFPU },\n\t{ \"trunc.w.d\",\t\"D,S\",\t\tMIPS_COP1D(0x0D),\t\t\tMA_MIPS1,\tMO_DFPU },\n\t{ \"ceil.w.d\",\t\"D,S\",\t\tMIPS_COP1D(0x0E),\t\t\tMA_MIPS2,\tMO_DFPU },\n\t{ \"floor.w.d\",\t\"D,S\",\t\tMIPS_COP1D(0x0F),\t\t\tMA_MIPS2,\tMO_DFPU },\n\t{ \"cvt.s.d\",\t\"D,S\",\t\tMIPS_COP1D(0x20),\t\t\tMA_MIPS1,\tMO_DFPU },\n\t{ \"cvt.w.d\",\t\"D,S\",\t\tMIPS_COP1D(0x24),\t\t\tMA_MIPS1,\tMO_DFPU },\n\t{ \"cvt.l.d\",\t\"D,S\",\t\tMIPS_COP1D(0x25),\t\t\tMA_MIPS3,\tMO_DFPU },\n\t{ \"c.f.d\",\t\t\"S,T\",\t\tMIPS_COP1D(0x30),\t\t\tMA_MIPS1,\tMO_DFPU },\n\t{ \"c.un.d\",\t\t\"S,T\",\t\tMIPS_COP1D(0x31),\t\t\tMA_MIPS1,\tMO_DFPU },\n\t{ \"c.eq.d\",\t\t\"S,T\",\t\tMIPS_COP1D(0x32),\t\t\tMA_MIPS1,\tMO_DFPU },\n\t{ \"c.ueq.d\",\t\"S,T\",\t\tMIPS_COP1D(0x33),\t\t\tMA_MIPS1,\tMO_DFPU },\n\t{ \"c.olt.d\",\t\"S,T\",\t\tMIPS_COP1D(0x34),\t\t\tMA_MIPS1,\tMO_DFPU },\n\t{ \"c.ult.d\",\t\"S,T\",\t\tMIPS_COP1D(0x35),\t\t\tMA_MIPS1,\tMO_DFPU },\n\t{ \"c.ole.d\",\t\"S,T\",\t\tMIPS_COP1D(0x36),\t\t\tMA_MIPS1,\tMO_DFPU },\n\t{ \"c.ule.d\",\t\"S,T\",\t\tMIPS_COP1D(0x37),\t\t\tMA_MIPS1,\tMO_DFPU },\n\t{ \"c.sf.d\",\t\t\"S,T\",\t\tMIPS_COP1D(0x38),\t\t\tMA_MIPS1,\tMO_DFPU },\n\t{ \"c.ngle.d\",\t\"S,T\",\t\tMIPS_COP1D(0x39),\t\t\tMA_MIPS1,\tMO_DFPU },\n\t{ \"c.seq.d\",\t\"S,T\",\t\tMIPS_COP1D(0x3A),\t\t\tMA_MIPS1,\tMO_DFPU },\n\t{ \"c.ngl.d\",\t\"S,T\",\t\tMIPS_COP1D(0x3B),\t\t\tMA_MIPS1,\tMO_DFPU },\n\t{ \"c.lt.d\",\t\t\"S,T\",\t\tMIPS_COP1D(0x3C),\t\t\tMA_MIPS1,\tMO_DFPU },\n\t{ \"c.nge.d\",\t\"S,T\",\t\tMIPS_COP1D(0x3D),\t\t\tMA_MIPS1,\tMO_DFPU },\n\t{ \"c.le.d\",\t\t\"S,T\",\t\tMIPS_COP1D(0x3E),\t\t\tMA_MIPS1,\tMO_DFPU },\n\t{ \"c.ngt.d\",\t\"S,T\",\t\tMIPS_COP1D(0x3F),\t\t\tMA_MIPS1,\tMO_DFPU },\n\n//     31--------------------21-------------------------------5--------0\n//     |=                COP1W|                              | function|\n//     -----11----------------------------------------------------6-----\n//     |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--| lo\n// 000 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 00..07\n// 001 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 08..0F\n// 010 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 10..17\n// 011 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 18..1F\n// 100 | cvt.s | cvt.d |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 20..27\n// 101 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 28..2F\n// 110 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 30..37\n// 110 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 38..3F\n//  hi |-------|-------|-------|-------|-------|-------|-------|-------|\n\t{ \"cvt.s.w\",\t\"D,S\",\t\tMIPS_COP1W(0x20),\t\t\tMA_MIPS1,\tMO_FPU },\n\t{ \"cvt.d.w\",\t\"D,S\",\t\tMIPS_COP1W(0x21),\t\t\tMA_MIPS1,\tMO_DFPU },\n\n//     31--------------------21-------------------------------5--------0\n//     |=                COP1L|                              | function|\n//     -----11----------------------------------------------------6-----\n//     |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--| lo\n// 000 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 00..07\n// 001 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 08..0F\n// 010 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 10..17\n// 011 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 18..1F\n// 100 | cvt.s | cvt.d |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 20..27\n// 101 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 28..2F\n// 110 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 30..37\n// 110 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 38..3F\n//  hi |-------|-------|-------|-------|-------|-------|-------|-------|\n\t{ \"cvt.s.l\",\t\"D,S\",\t\tMIPS_COP1L(0x20),\t\t\tMA_MIPS3,\tMO_DFPU },\n\t{ \"cvt.d.l\",\t\"D,S\",\t\tMIPS_COP1L(0x21),\t\t\tMA_MIPS3,\tMO_DFPU },\n\n//     31---------26---------21----------------------------------------0\n//     |=      COP2|    rs    |                                        |\n//     -----6-------5---------------------------------------------------\n//     |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--| lo\n//  00 |  MFC2 |  ---  |  CFC2 |  MFV  |  MTC2 |  ---  |  CTC2 |  MTV  |\n//  01 |  BC*  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n//  10 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n//  11 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n//  hi |-------|-------|-------|-------|-------|-------|-------|-------|\n\n\t{ \"mfc2\",\t\"t,gs\",\t\t\tMIPS_COP2(0x00),\t\t\tMA_PSX,\t\t0 },\n\t{ \"mfc2\",\t\"t,RsRo\",\t\tMIPS_COP2(0x00),\t\t\tMA_RSP,\t\t0 },\n\t{ \"cfc2\",\t\"t,gc\",\t\t\tMIPS_COP2(0x02),\t\t\tMA_PSX,\t\t0 },\n\t{ \"cfc2\",\t\"t,Rc\",\t\t\tMIPS_COP2(0x02),\t\t\tMA_RSP,\t\t0 },\n\t{ \"mtc2\",\t\"t,gs\",\t\t\tMIPS_COP2(0x04),\t\t\tMA_PSX,\t\t0 },\n\t{ \"mtc2\",\t\"t,RsRo\",\t\tMIPS_COP2(0x04),\t\t\tMA_RSP,\t\t0 },\n\t{ \"ctc2\",\t\"t,gc\",\t\t\tMIPS_COP2(0x06),\t\t\tMA_PSX,\t\t0 },\n\t{ \"ctc2\",\t\"t,Rc\",\t\t\tMIPS_COP2(0x06),\t\t\tMA_RSP,\t\t0 },\n\t// VVVVVV VVVVV ttttt -------- C DDDDDDD\n\t{ \"mfv\",\t\"t,vd\",\t\t\tMIPS_COP2(0x03),\t\t\tMA_PSP,\t\tMO_VFPU|MO_VFPU_SINGLE },\n\t{ \"mfvc\",\t\"t,vc\",\t\t\tMIPS_COP2(0x03)|0x80,\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"mtv\",\t\"t,vd\",\t\t\tMIPS_COP2(0x07),\t\t\tMA_PSP,\t\tMO_VFPU|MO_VFPU_SINGLE },\n\t{ \"mtvc\",\t\"t,vc\",\t\t\tMIPS_COP2(0x07)|0x80,\t\tMA_PSP,\t\tMO_VFPU },\n\n\n//     COP2BC: ? indicates any, * indicates all\n//     31---------26----------20-------16------------------------------0\n//     |=    COP2BC|          |   rt    |                              |\n//     ------11---------5-----------------------------------------------\n//     |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--| lo\n//  00 |  BVFx |  BVTx | BVFLx | BVTLx |  BVFy |  BVTy | BVFLy | BVTLy |\n//  01 |  BVFz |  BVTz | BVFLz | BVTLz |  BVFw |  BVTw | BVFLw | BVTLw |\n//  10 |  BVF? |  BVT? | BVFL? | BVTL? |  BVF* |  BVT* | BVFL* | BVTL* |\n//  11 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n//  hi |-------|-------|-------|-------|-------|-------|-------|-------|\n\t{ \"bvf\",\t\t\"jb,i16\",\tMIPS_COP2BC(0x00),\t\t\tMA_PSP,\t\tMO_IPCR|MO_DELAY|MO_NODELAYSLOT },\n\t{ \"bvf.B\",\t\t\"i16\",\t\tMIPS_COP2BC(0x00),\t\t\tMA_PSP,\t\tMO_IPCR|MO_DELAY|MO_NODELAYSLOT },\n\t{ \"bvt\",\t\t\"jb,i16\",\tMIPS_COP2BC(0x01),\t\t\tMA_PSP,\t\tMO_IPCR|MO_DELAY|MO_NODELAYSLOT },\n\t{ \"bvt.B\",\t\t\"i16\",\t\tMIPS_COP2BC(0x01),\t\t\tMA_PSP,\t\tMO_IPCR|MO_DELAY|MO_NODELAYSLOT },\n\t{ \"bvfl\",\t\t\"jb,i16\",\tMIPS_COP2BC(0x02),\t\t\tMA_PSP,\t\tMO_IPCR|MO_DELAY|MO_NODELAYSLOT },\n\t{ \"bvfl.B\",\t\t\"i16\",\t\tMIPS_COP2BC(0x02),\t\t\tMA_PSP,\t\tMO_IPCR|MO_DELAY|MO_NODELAYSLOT },\n\t{ \"bvtl\",\t\t\"jb,i16\",\tMIPS_COP2BC(0x03),\t\t\tMA_PSP,\t\tMO_IPCR|MO_DELAY|MO_NODELAYSLOT },\n\t{ \"bvtl.B\",\t\t\"i16\",\t\tMIPS_COP2BC(0x03),\t\t\tMA_PSP,\t\tMO_IPCR|MO_DELAY|MO_NODELAYSLOT },\n\n//     31---------26-----23--------------------------------------------0\n//     |= VFPU0| VOP | |\n//     ------6--------3-------------------------------------------------\n//     |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--|\n// 000 | VADD  | VSUB  | VSBN  | ---   | ---   | ---   | ---   | VDIV  | 00..07\n//  hi |-------|-------|-------|-------|-------|-------|-------|-------|\n\t{ \"vadd.S\",\t\t\"vd,vs,vt\",\tMIPS_VFPU0(0x00),\t\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vsub.S\",\t\t\"vd,vs,vt\",\tMIPS_VFPU0(0x01),\t\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vsbn.S\",\t\t\"vd,vs,vt\",\tMIPS_VFPU0(0x02),\t\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vdiv.S\",\t\t\"vd,vs,vt\",\tMIPS_VFPU0(0x07),\t\t\tMA_PSP,\t\tMO_VFPU },\n\n//     31-------26-----23----------------------------------------------0\n//     |=   VFPU1|  f  |                                               |\n//     -----6-------3---------------------------------------------------\n//     |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--|\n//     |  VMUL |  VDOT |  VSCL |  ---  |  VHDP |  VDET |  VCRS |  ---  |\n//     |-------|-------|-------|-------|-------|-------|-------|-------|\n\t{ \"vmul.S\",\t\t\"vd,vs,vt\",\tMIPS_VFPU1(0),\t\t\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vdot.S\",\t\t\"vd,vs,vt\",\tMIPS_VFPU1(1),\t\t\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vscl.S\",\t\t\"vd,vs,vt\",\tMIPS_VFPU1(2),\t\t\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vhdp.S\",\t\t\"vd,vs,vt\",\tMIPS_VFPU1(4),\t\t\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vdet.S\",\t\t\"vd,vs,vt\",\tMIPS_VFPU1(5),\t\t\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vcrs.S\",\t\t\"vd,vs,vt\",\tMIPS_VFPU1(6),\t\t\t\tMA_PSP,\t\tMO_VFPU },\n\n//     31-------26-----23----------------------------------------------0\n//     |=   VFPU3|  f  |                                               |\n//     -----6-------3---------------------------------------------------\n//     |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--|\n//     |  VCMP |  ---  |  VMIN |  VMAX |  ---  | VSCMP |  VSGE |  VSLT |\n//     |-------|-------|-------|-------|-------|-------|-------|-------|\n\t// VVVVVV VVV TTTTTTT z SSSSSSS z --- CCCC\n\t{ \"vcmp.S\",\t\t\"C,vs,vt\",\tMIPS_VFPU3(0),\t\t\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vmin.S\",\t\t\"vd,vs,vt\",\tMIPS_VFPU3(2),\t\t\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vmax.S\",\t\t\"vd,vs,vt\",\tMIPS_VFPU3(3),\t\t\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vscmp.S\",\t\"vd,vs,vt\",\tMIPS_VFPU3(5),\t\t\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vsge.S\",\t\t\"vd,vs,vt\",\tMIPS_VFPU3(6),\t\t\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vslt.S\",\t\t\"vd,vs,vt\",\tMIPS_VFPU3(7),\t\t\t\tMA_PSP,\t\tMO_VFPU },\n\n//     31-------26--------------------------------------------5--------0\n//     |=SPECIAL3|                                           | function|\n//     -----11----------------------------------------------------6-----\n//     -----6-------5---------------------------------------------------\n//     |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--| lo\n// 000 |  EXT  |  ---  |  ---  |  ---  |  INS  |  ---  |  ---  |  ---  |\n// 001 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n// 010 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n// 011 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n// 100 |ALLEGRE|  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n// 101 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n// 110 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n// 110 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n//  hi |-------|-------|-------|-------|-------|-------|-------|-------|\n\t{ \"ext\",\t\"t,s,i5,je\",\tMIPS_SPECIAL3(0),\t\t\tMA_PSP,\t\t0 },\n\t{ \"ins\",\t\"t,s,i5,ji\",\tMIPS_SPECIAL3(4),\t\t\tMA_PSP,\t\t0 },\n\n//     31-------26----------------------------------10--------5--------0\n//     |=SPECIAL3|                                 | secfunc |ALLEGREX0|\n//     ------11---------5-------------------------------5---------6-----\n//     |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--| lo\n//  00 |  ---  |  ---  | WSBH  | WSBW  |  ---  |  ---  |  ---  |  ---  |\n//  01 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n//  10 |  SEB  |  ---  |  ---  |  ---  |BITREV |  ---  |  ---  |  ---  |\n//  11 |  SEH  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n//  hi |-------|-------|-------|-------|-------|-------|-------|-------|\n\t// VVVVVV ----- ttttt ddddd VVVVV VVVVVV\n\t{ \"wsbh\",\t\"d,t\",\t\t\tMIPS_ALLEGREX0(0x02),\t\tMA_PSP,\t\t0 },\n\t{ \"wsbh\",\t\"d\",\t\t\tMIPS_ALLEGREX0(0x02),\t\tMA_PSP,\t\t0 },\n\t{ \"wsbw\",\t\"d,t\",\t\t\tMIPS_ALLEGREX0(0x03),\t\tMA_PSP,\t\t0 },\n\t{ \"wsbw\",\t\"d\",\t\t\tMIPS_ALLEGREX0(0x03),\t\tMA_PSP,\t\t0 },\n\t{ \"seb\",\t\"d,t\",\t\t\tMIPS_ALLEGREX0(0x10),\t\tMA_PSP,\t\t0 },\n\t{ \"seb\",\t\"d\",\t\t\tMIPS_ALLEGREX0(0x10),\t\tMA_PSP,\t\t0 },\n\t{ \"bitrev\",\t\"d,t\",\t\t\tMIPS_ALLEGREX0(0x14),\t\tMA_PSP,\t\t0 },\n\t{ \"bitrev\",\t\"d\",\t\t\tMIPS_ALLEGREX0(0x14),\t\tMA_PSP,\t\t0 },\n\t{ \"seh\",\t\"d,t\",\t\t\tMIPS_ALLEGREX0(0x18),\t\tMA_PSP,\t\t0 },\n\t{ \"seh\",\t\"d\",\t\t\tMIPS_ALLEGREX0(0x18),\t\tMA_PSP,\t\t0 },\n\n\n//     VFPU4: This one is a bit messy.\n//     31-------26------21---------------------------------------------0\n//     |=   VFPU4|  rs  |                                              |\n//     -----6-------5---------------------------------------------------\n//  hi |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--| lo\n//  00 |VF4-1.1|VF4-1.2|VF4-1.3| VCST  |  ---  |  ---  |  ---  |  ---  |\n//  01 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n//  10 | VF2IN | VF2IZ | VF2IU | VF2ID | VI2F  | VCMOV |  ---  |  ---  |\n//  11 | VWBN  | VWBN  | VWBN  | VWBN  | VWBN  | VWBN  | VWBN  | VWBN  |\n//     |-------|-------|-------|-------|-------|-------|-------|-------|\n\t// VVVVVV VVVVV iiiii z ------- z DDDDDDD\n\t// Technically these also have names (as the second arg.)\n\t{ \"vcst.S\",\t\t\"vd,Wc\",\tMIPS_VFPU4(0x03),\t\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vf2in.S\",\t\"vd,vs,i5\",\tMIPS_VFPU4(0x10),\t\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vf2iz.S\",\t\"vd,vs,i5\",\tMIPS_VFPU4(0x11),\t\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vf2iu.S\",\t\"vd,vs,i5\",\tMIPS_VFPU4(0x12),\t\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vf2id.S\",\t\"vd,vs,i5\",\tMIPS_VFPU4(0x13),\t\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vi2f.S\",\t\t\"vd,vs,i5\",\tMIPS_VFPU4(0x14),\t\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vcmovt.S\",\t\"vd,vs,i5\",\tMIPS_VFPU4(0x15)|0,  \t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vcmovf.S\",\t\"vd,vs,i5\",\tMIPS_VFPU4(0x15)|(1<<19),\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vwbn.S\",\t\t\"vd,vs,i5\",\tMIPS_VFPU4(0x18),\t\t\tMA_PSP,\t\tMO_VFPU },\n\n//     31-------------21-------16--------------------------------------0\n//     |= VF4-1.1      |   rt  |                                       |\n//     --------11----------5--------------------------------------------\n//  hi |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--| lo\n//  00 | VMOV  | VABS  | VNEG  | VIDT  | vsAT0 | vsAT1 | VZERO | VONE  |\n//  01 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n//  10 | VRCP  | VRSQ  | vsIN  | VCOS  | VEXP2 | VLOG2 | vsQRT | VASIN |\n//  11 | VNRCP |  ---  | VNSIN |  ---  |VREXP2 |  ---  |  ---  |  ---  |\n//     |-------|-------|-------|-------|-------|-------|-------|-------|\n\t{ \"vmov.S\",\t\t\"vd,vs\",\tMIPS_VFPU4_11(0x00),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vabs.S\",\t\t\"vd,vs\",\tMIPS_VFPU4_11(0x01),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vneg.S\",\t\t\"vd,vs\",\tMIPS_VFPU4_11(0x02), \t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vidt.S\",\t\t\"vd\",\t\tMIPS_VFPU4_11(0x03),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vsat0.S\",\t\"vd,vs\",\tMIPS_VFPU4_11(0x04),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vsat1.S\",\t\"vd,vs\",\tMIPS_VFPU4_11(0x05),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vzero.S\",\t\"vd\",\t\tMIPS_VFPU4_11(0x06),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vone.S\",\t\t\"vd\",\t\tMIPS_VFPU4_11(0x07),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vrcp.S\",\t\t\"vd,vs\",\tMIPS_VFPU4_11(0x10),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vrsq.S\",\t\t\"vd,vs\",\tMIPS_VFPU4_11(0x11),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vsin.S\",\t\t\"vd,vs\",\tMIPS_VFPU4_11(0x12),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vcos.S\",\t\t\"vd,vs\",\tMIPS_VFPU4_11(0x13),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vexp2.S\",\t\"vd,vs\",\tMIPS_VFPU4_11(0x14),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vlog2.S\",\t\"vd,vs\",\tMIPS_VFPU4_11(0x15),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vsqrt.S\",\t\"vd,vs\",\tMIPS_VFPU4_11(0x16),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vasin.S\",\t\"vd,vs\",\tMIPS_VFPU4_11(0x17),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vnrcp.S\",\t\"vd,vs\",\tMIPS_VFPU4_11(0x18),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vnsin.S\",\t\"vd,vs\",\tMIPS_VFPU4_11(0x1a),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vrexp2.S\",\t\"vd,vs\",\tMIPS_VFPU4_11(0x1c),\t\tMA_PSP,\t\tMO_VFPU },\n\n//     VFPU4 1.2: TODO: Unsure where vsBZ goes, no one uses it.\n//     31-------------21-------16--------------------------------------0\n//     |= VF4-1.2      |   rt  |                                       |\n//     --------11----------5--------------------------------------------\n//  hi |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--| lo\n//  00 | VRNDS | VRNDI |VRNDF1 |VRNDF2 |  ---  |  ---  |  ---  |  ---  |\n//  01 |  ---  |  ---  |  ---  |  ---  | vsBZ? |  ---  |  ---  |  ---  |\n//  10 |  ---  |  ---  | VF2H  | VH2F  |  ---  |  ---  | vsBZ? | VLGB  |\n//  11 | VUC2I | VC2I  | VUS2I | vs2I  | VI2UC | VI2C  | VI2US | VI2S  |\n//     |-------|-------|-------|-------|-------|-------|-------|-------|\n\t{ \"vrnds.S\",\t\"vd\",\t\tMIPS_VFPU4_12(0x00),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vrndi.S\",\t\"vd\",\t\tMIPS_VFPU4_12(0x01),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vrndf1.S\",\t\"vd\",\t\tMIPS_VFPU4_12(0x02),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vrndf2.S\",\t\"vd\",\t\tMIPS_VFPU4_12(0x03),\t\tMA_PSP,\t\tMO_VFPU },\n\t// TODO: vsBZ?\n\t{ \"vf2h.S\",\t\t\"vd,vs\",\tMIPS_VFPU4_12(0x12),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vh2f.S\",\t\t\"vd,vs\",\tMIPS_VFPU4_12(0x13),\t\tMA_PSP,\t\tMO_VFPU },\n\t// TODO: vsBZ?\n\t{ \"vlgb.S\",\t\t\"vd,vs\",\tMIPS_VFPU4_12(0x17),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vuc2i.S\",\t\"vd,vs\",\tMIPS_VFPU4_12(0x18),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vc2i.S\",\t\t\"vd,vs\",\tMIPS_VFPU4_12(0x19),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vus2i.S\",\t\"vd,vs\",\tMIPS_VFPU4_12(0x1a),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vs2i.S\",\t\t\"vd,vs\",\tMIPS_VFPU4_12(0x1b),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vi2uc.S\",\t\"vd,vs\",\tMIPS_VFPU4_12(0x1c),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vi2c.S\",\t\t\"vd,vs\",\tMIPS_VFPU4_12(0x1d),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vi2us.S\",\t\"vd,vs\",\tMIPS_VFPU4_12(0x1e),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vi2s.S\",\t\t\"vd,vs\",\tMIPS_VFPU4_12(0x1f),\t\tMA_PSP,\t\tMO_VFPU },\n\n//     31--------------21------16--------------------------------------0\n//     |= VF4-1.3      |   rt  |                                       |\n//     --------11----------5--------------------------------------------\n//  hi |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--| lo\n//  00 | vsRT1 | vsRT2 | VBFY1 | VBFY2 | VOCP  | vsOCP | VFAD  | VAVG  |\n//  01 | vsRT3 | vsRT4 | vsGN  |  ---  |  ---  |  ---  |  ---  |  ---  |\n//  10 | VMFVC | VMTVC |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n//  11 |  ---  |VT4444 |VT5551 |VT5650 |  ---  |  ---  |  ---  |  ---  |\n//     |-------|-------|-------|-------|-------|-------|-------|-------|\n\t{ \"vsrt1.S\",\t\"vd,vs\",\tMIPS_VFPU4_13(0x00),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vsrt2.S\",\t\"vd,vs\",\tMIPS_VFPU4_13(0x01),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vbfy1.S\",\t\"vd,vs\",\tMIPS_VFPU4_13(0x02),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vbfy2.S\",\t\"vd,vs\",\tMIPS_VFPU4_13(0x03),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vocp.S\",\t\t\"vd,vs\",\tMIPS_VFPU4_13(0x04),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vsocp.S\",\t\"vd,vs\",\tMIPS_VFPU4_13(0x05),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vfad.S\",\t\t\"vd,vs\",\tMIPS_VFPU4_13(0x06),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vavg.S\",\t\t\"vd,vs\",\tMIPS_VFPU4_13(0x07),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vsrt3.S\",\t\"vd,vs\",\tMIPS_VFPU4_13(0x08),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vsrt4.S\",\t\"vd,vs\",\tMIPS_VFPU4_13(0x09),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vsgn.S\",\t\t\"vd,vs\",\tMIPS_VFPU4_13(0x0a),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vmfv.S\",\t\t\"vs,i7\",\tMIPS_VFPU4_13(0x10)|0x00,\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vmtv.S\",\t\t\"vs,i7\",\tMIPS_VFPU4_13(0x11)|0x00,\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vmfvc.S\",\t\"vs,i7\",\tMIPS_VFPU4_13(0x10)|0x80,\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vmtvc.S\",\t\"vs,i7\",\tMIPS_VFPU4_13(0x11)|0x80,\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vt4444.S\",\t\"vd,vs\",\tMIPS_VFPU4_13(0x19),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vt5551.S\",\t\"vd,vs\",\tMIPS_VFPU4_13(0x1a),\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vt5650.S\",\t\"vd,vs\",\tMIPS_VFPU4_13(0x1b),\t\tMA_PSP,\t\tMO_VFPU },\n\n//     31-------26-----23----------------------------------------------0\n//     |= VFPU5| f     |                                               |\n//     -----6-------3---------------------------------------------------\n//     |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--| lo\n//     | VPFXS | VPFXS | VPFXT | VPFXT | VPFXD | VPFXD | VIIM  | VFIM  |\n//     |-------|-------|-------|-------|-------|-------|-------|-------|\n\t{ \"vpfxs\",\t\t\"Ws\",\t\tMIPS_VFPU5(0),\t\t\t\tMA_PSP,\t\t0 },\n\t{ \"vpfxt\",\t\t\"Ws\",\t\tMIPS_VFPU5(2),\t\t\t\tMA_PSP,\t\t0 },\n\t{ \"vpfxd\",\t\t\"Wd\",\t\tMIPS_VFPU5(4),\t\t\t\tMA_PSP,\t\t0 },\n\t{ \"viim.s\",\t\t\"vt,i16\",\tMIPS_VFPU5(6),\t\t\t\tMA_PSP,\t\tMO_VFPU_SINGLE },\n\t{ \"vfim.s\",\t\t\"vt,ih\",\tMIPS_VFPU5(7),\t\t\t\tMA_PSP,\t\tMO_VFPU_SINGLE },\n\n//     31-------26-----23----------------------------------------------0\n//     |= VFPU6| f     |                                               |\n//     -----6-------3---------------------------------------------------\n//     |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--| lo\n//     | VMMUL |     V(H)TFM2/3/4      | VMSCL |   *1  |  ---  |VF6-1.1|\n//     |-------|-------|-------|-------|-------|-------|-------|-------|\n//\t\t*1: vcrsp.t/vqmul.q\n\t{ \"vmmul.S\",\t\"md,ms,mt\",\t\tMIPS_VFPU6(0),\t\t\t\t\tMA_PSP,\tMO_VFPU|MO_TRANSPOSE_VS },\n\t{ \"vtfm2.p\",\t\"vd,ms,vt\",\t\tMIPS_VFPU6(1)|MIPS_VFPUSIZE(1),\tMA_PSP,\tMO_VFPU|MO_VFPU_PAIR },\n\t{ \"vhtfm2.p\",\t\"vd,ms,vt\",\t\tMIPS_VFPU6(2)|MIPS_VFPUSIZE(1),\tMA_PSP,\tMO_VFPU|MO_VFPU_PAIR },\n\t{ \"vtfm3.t\",\t\"vd,ms,vt\",\t\tMIPS_VFPU6(2)|MIPS_VFPUSIZE(2),\tMA_PSP,\tMO_VFPU|MO_VFPU_TRIPLE },\n\t{ \"vhtfm3.t\",\t\"vd,ms,vt\",\t\tMIPS_VFPU6(3)|MIPS_VFPUSIZE(2),\tMA_PSP,\tMO_VFPU|MO_VFPU_TRIPLE },\n\t{ \"vtfm4.q\",\t\"vd,ms,vt\",\t\tMIPS_VFPU6(3)|MIPS_VFPUSIZE(3),\tMA_PSP,\tMO_VFPU|MO_VFPU_QUAD },\n\t{ \"vmscl.S\",\t\"md,ms,vSt\",\tMIPS_VFPU6(4),\t\t\t\t\tMA_PSP,\tMO_VFPU },\n\t{ \"vcrsp.t\",\t\"vd,vs,vt\",\t\tMIPS_VFPU6(5)|MIPS_VFPUSIZE(2),\tMA_PSP,\tMO_VFPU|MO_VFPU_TRIPLE },\n\t{ \"vqmul.q\",\t\"vd,vs,vt\",\t\tMIPS_VFPU6(5)|MIPS_VFPUSIZE(3),\tMA_PSP,\tMO_VFPU|MO_VFPU_QUAD },\n\n//     31--------23----20----------------------------------------------0\n//     |= VF6-1.1 |  f |                                               |\n//     -----9-------3---------------------------------------------------\n//     |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--| lo\n//     |VF6-1.2|  ---  |     VROT      |  ---  |  ---  |  ---  |  ---  |\n//     |-------|-------|-------|-------|-------|-------|-------|-------|\n\t// VVVVVVVVVVV iiiii z SSSSSSS z DDDDDDD\n\t{ \"vrot.S\",\t\t\"vd,vSs,Wr\",\tMIPS_VFPU6_1VROT(),\t\tMA_PSP,\t\tMO_VFPU },\n\n//     31--------20----16----------------------------------------------0\n//     |= VF6-1.2 |  f |                                               |\n//     -----6-------4---------------------------------------------------\n//  hi |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--| lo\n//   0 | VMMOV |  ---  |  ---  | VMIDT |  ---  |  ---  |VMZERO | VMONE |\n//   1 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n//     |-------|-------|-------|-------|-------|-------|-------|-------|\n\t// VVVVVVVVVVVVVVVV z SSSSSSS z DDDDDDD\n\t{ \"vmmov.S\",\t\"md,ms\",\tMIPS_VFPU6_2(0),\t\t\tMA_PSP,\t\tMO_VFPU },\n\t// VVVVVVVVVVVVVVVV z ------- z DDDDDDD\n\t{ \"vmidt.S\",\t\"md\",\t\tMIPS_VFPU6_2(3),\t\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vmzero.S\",\t\"md\",\t\tMIPS_VFPU6_2(6),\t\t\tMA_PSP,\t\tMO_VFPU },\n\t{ \"vmone.S\",\t\"md\",\t\tMIPS_VFPU6_2(7),\t\t\tMA_PSP,\t\tMO_VFPU },\n\n//     31---------26------------------------------------------5--------0\n//     |=       RSP|                                         | function|\n//     ------6----------------------------------------------------6-----\n//     |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--| lo\n// 000 | VMULF | VMULU | VRNDP | VMULQ | VMUDL | VMUDM | VMUDN | VMUDH | 00..07\n// 001 | VMACF | VMACU | VRNDN | VMACQ | VMADL | VMADH | VMADN | VMADH | 08..0F\n// 010 | VADD  | VSUB  | VSUT  | VABS  | VADDC | VSUBC | VADDB | VSUBB | 10..17\n// 011 | VACCB | VSUCB | VSAD  | VSAC  | VSUM  | VSAR  | VACC  | VSUC  | 18..1F\n// 100 | VLT   | VEQ   | VNE   | VGE   | VCL   | VCH   | VCR   | VMRG  | 20..27\n// 101 | VAND  | VNAND | VOR   | VNOR  | VXOR  | VNXOR |  ---  |  ---  | 28..2F\n// 110 | VRCP  | VRCPL | VRCPH | VMOV  | VRSQ  | VRSQL | VRSQH | VNOP  | 30..37\n// 111 | VEXTT | VEXTQ | VEXTN |  ---  | VINST | VINSQ | VINSN | VNULL | 38..3F\n//  hi |-------|-------|-------|-------|-------|-------|-------|-------|\n\t{ \"vmulf\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x00),\t\tMA_RSP,\t\t0 },\n\t{ \"vmulf\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x00),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vmulu\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x01),\t\tMA_RSP,\t\t0 },\n\t{ \"vmulu\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x01),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vrndp\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x02),\t\tMA_RSP,\t\t0 },\n\t{ \"vrndp\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x02),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vmulq\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x03),\t\tMA_RSP,\t\t0 },\n\t{ \"vmulq\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x03),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vmudl\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x04),\t\tMA_RSP,\t\t0 },\n\t{ \"vmudl\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x04),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vmudm\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x05),\t\tMA_RSP,\t\t0 },\n\t{ \"vmudm\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x05),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vmudn\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x06),\t\tMA_RSP,\t\t0 },\n\t{ \"vmudn\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x06),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vmudh\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x07),\t\tMA_RSP,\t\t0 },\n\t{ \"vmudh\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x07),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vmacf\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x08),\t\tMA_RSP,\t\t0 },\n\t{ \"vmacf\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x08),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vmacu\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x09),\t\tMA_RSP,\t\t0 },\n\t{ \"vmacu\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x09),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vrndn\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x0a),\t\tMA_RSP,\t\t0 },\n\t{ \"vrndn\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x0a),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vmacq\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x0b),\t\tMA_RSP,\t\t0 },\n\t{ \"vmacq\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x0b),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vmadl\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x0c),\t\tMA_RSP,\t\t0 },\n\t{ \"vmadl\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x0c),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vmadm\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x0d),\t\tMA_RSP,\t\t0 },\n\t{ \"vmadm\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x0d),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vmadn\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x0e),\t\tMA_RSP,\t\t0 },\n\t{ \"vmadn\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x0e),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vmadh\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x0f),\t\tMA_RSP,\t\t0 },\n\t{ \"vmadh\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x0f),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vadd\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x10),\t\tMA_RSP,\t\t0 },\n\t{ \"vadd\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x10),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vsub\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x11),\t\tMA_RSP,\t\t0 },\n\t{ \"vsub\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x11),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vsut\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x12),\t\tMA_RSP,\t\t0 },\n\t{ \"vsut\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x12),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vabs\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x13),\t\tMA_RSP,\t\t0 },\n\t{ \"vabs\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x13),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vaddc\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x14),\t\tMA_RSP,\t\t0 },\n\t{ \"vaddc\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x14),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vsubc\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x15),\t\tMA_RSP,\t\t0 },\n\t{ \"vsubc\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x15),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vaddb\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x16),\t\tMA_RSP,\t\t0 },\n\t{ \"vaddb\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x16),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vsubb\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x17),\t\tMA_RSP,\t\t0 },\n\t{ \"vsubb\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x17),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vaccb\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x18),\t\tMA_RSP,\t\t0 },\n\t{ \"vaccb\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x18),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vsucb\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x19),\t\tMA_RSP,\t\t0 },\n\t{ \"vsucb\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x19),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vsad\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x1a),\t\tMA_RSP,\t\t0 },\n\t{ \"vsad\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x1a),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vsac\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x1b),\t\tMA_RSP,\t\t0 },\n\t{ \"vsac\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x1b),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vsum\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x1c),\t\tMA_RSP,\t\t0 },\n\t{ \"vsum\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x1c),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vsar\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x1d),\t\tMA_RSP,\t\t0 },\n\t{ \"vsar\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x1d),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vacc\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x1e),\t\tMA_RSP,\t\t0 },\n\t{ \"vacc\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x1e),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vsuc\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x1f),\t\tMA_RSP,\t\t0 },\n\t{ \"vsuc\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x1f),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vlt\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x20),\t\tMA_RSP,\t\t0 },\n\t{ \"vlt\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x20),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"veq\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x21),\t\tMA_RSP,\t\t0 },\n\t{ \"veq\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x21),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vne\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x22),\t\tMA_RSP,\t\t0 },\n\t{ \"vne\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x22),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vge\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x23),\t\tMA_RSP,\t\t0 },\n\t{ \"vge\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x23),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vcl\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x24),\t\tMA_RSP,\t\t0 },\n\t{ \"vcl\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x24),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vch\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x25),\t\tMA_RSP,\t\t0 },\n\t{ \"vch\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x25),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vcr\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x26),\t\tMA_RSP,\t\t0 },\n\t{ \"vcr\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x26),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vmrg\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x27),\t\tMA_RSP,\t\t0 },\n\t{ \"vmrg\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x27),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vand\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x28),\t\tMA_RSP,\t\t0 },\n\t{ \"vand\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x28),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vnand\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x29),\t\tMA_RSP,\t\t0 },\n\t{ \"vnand\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x29),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vor\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x2a),\t\tMA_RSP,\t\t0 },\n\t{ \"vor\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x2a),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vnor\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x2b),\t\tMA_RSP,\t\t0 },\n\t{ \"vnor\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x2b),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vxor\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x2c),\t\tMA_RSP,\t\t0 },\n\t{ \"vxor\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x2c),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vnxor\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x2d),\t\tMA_RSP,\t\t0 },\n\t{ \"vnxor\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x2d),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vrcp\",\t\"RdRm,RtRl\",\tMIPS_RSP_COP2(0x30),\t\tMA_RSP,\t\t0 },\n\t{ \"vrcpl\",\t\"RdRm,RtRl\",\tMIPS_RSP_COP2(0x31),\t\tMA_RSP,\t\t0 },\n\t{ \"vrcph\",\t\"RdRm,RtRl\",\tMIPS_RSP_COP2(0x32),\t\tMA_RSP,\t\t0 },\n\t{ \"vmov\",\t\"RdRm,RtRl\",\tMIPS_RSP_COP2(0x33),\t\tMA_RSP,\t\t0 },\n\t{ \"vrsq\",\t\"RdRm,RtRl\",\tMIPS_RSP_COP2(0x34),\t\tMA_RSP,\t\t0 },\n\t{ \"vrsql\",\t\"RdRm,RtRl\",\tMIPS_RSP_COP2(0x35),\t\tMA_RSP,\t\t0 },\n\t{ \"vrsqh\",\t\"RdRm,RtRl\",\tMIPS_RSP_COP2(0x36),\t\tMA_RSP,\t\t0 },\n\t{ \"vnop\",\t\"\",\t\t\t\tMIPS_RSP_COP2(0x37),\t\tMA_RSP,\t\t0 },\n\t{ \"vextt\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x38),\t\tMA_RSP,\t\t0 },\n\t{ \"vextt\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x38),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vextq\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x39),\t\tMA_RSP,\t\t0 },\n\t{ \"vextq\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x39),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vextn\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x3a),\t\tMA_RSP,\t\t0 },\n\t{ \"vextn\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x3a),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vinst\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x3c),\t\tMA_RSP,\t\t0 },\n\t{ \"vinst\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x3c),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vinsq\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x3d),\t\tMA_RSP,\t\t0 },\n\t{ \"vinsq\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x3d),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vinsn\",\t\"Rd,Rs,RtRe\",\tMIPS_RSP_COP2(0x3e),\t\tMA_RSP,\t\t0 },\n\t{ \"vinsn\",\t\"Rs,RtRe\",\t\tMIPS_RSP_COP2(0x3e),\t\tMA_RSP,\t\tMO_RSPVRSD },\n\t{ \"vnull\",\t\"\",\t\t\t\tMIPS_RSP_COP2(0x3f),\t\tMA_RSP,\t\t0 },\n\n//     31---------26--------------------15-------11--------------------0\n//     |=      LWC2|                    |   rd    |                    |\n//     -----6----------------------5------------------------------------\n//     |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--| lo\n//  00 |  LBV  |  LSV  |  LLV  |  LDV  |  LQV  |  LRV  |  LPV  |  LUV  | 00..07\n//  01 |  LHV  |  LFV  |  LWV  |  LTV  |  ---  |  ---  |  ---  |  ---  | 08..0F\n//  10 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 10..17\n//  11 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 18..1F\n//  hi |-------|-------|-------|-------|-------|-------|-------|-------|\n\t{\"lbv\",\t\t\"RtRo,i7(s)\",\tMIPS_RSP_LWC2(0x00),\t\tMA_RSP,\t\t0 },\n\t{\"lbv\",\t\t\"RtRo,(s)\",\t\tMIPS_RSP_LWC2(0x00),\t\tMA_RSP,\t\t0 },\n\t{\"lsv\",\t\t\"RtRo,i7(s)\",\tMIPS_RSP_LWC2(0x01),\t\tMA_RSP,\t\tMO_RSP_HWOFFSET },\n\t{\"lsv\",\t\t\"RtRo,(s)\",\t\tMIPS_RSP_LWC2(0x01),\t\tMA_RSP,\t\tMO_RSP_HWOFFSET },\n\t{\"llv\",\t\t\"RtRo,i7(s)\",\tMIPS_RSP_LWC2(0x02),\t\tMA_RSP,\t\tMO_RSP_WOFFSET  },\n\t{\"llv\",\t\t\"RtRo,(s)\",\t\tMIPS_RSP_LWC2(0x02),\t\tMA_RSP,\t\tMO_RSP_WOFFSET  },\n\t{\"ldv\",\t\t\"RtRo,i7(s)\",\tMIPS_RSP_LWC2(0x03),\t\tMA_RSP,\t\tMO_RSP_DWOFFSET },\n\t{\"ldv\",\t\t\"RtRo,(s)\",\t\tMIPS_RSP_LWC2(0x03),\t\tMA_RSP,\t\tMO_RSP_DWOFFSET },\n\t{\"lqv\",\t\t\"RtRo,i7(s)\",\tMIPS_RSP_LWC2(0x04),\t\tMA_RSP,\t\tMO_RSP_QWOFFSET },\n\t{\"lqv\",\t\t\"RtRo,(s)\",\t\tMIPS_RSP_LWC2(0x04),\t\tMA_RSP,\t\tMO_RSP_QWOFFSET },\n\t{\"lrv\",\t\t\"RtRo,i7(s)\",\tMIPS_RSP_LWC2(0x05),\t\tMA_RSP,\t\tMO_RSP_QWOFFSET },\n\t{\"lrv\",\t\t\"RtRo,(s)\",\t\tMIPS_RSP_LWC2(0x05),\t\tMA_RSP,\t\tMO_RSP_QWOFFSET },\n\t{\"lpv\",\t\t\"RtRo,i7(s)\",\tMIPS_RSP_LWC2(0x06),\t\tMA_RSP,\t\tMO_RSP_DWOFFSET },\n\t{\"lpv\",\t\t\"RtRo,(s)\",\t\tMIPS_RSP_LWC2(0x06),\t\tMA_RSP,\t\tMO_RSP_DWOFFSET },\n\t{\"luv\",\t\t\"RtRo,i7(s)\",\tMIPS_RSP_LWC2(0x07),\t\tMA_RSP,\t\tMO_RSP_DWOFFSET },\n\t{\"luv\",\t\t\"RtRo,(s)\",\t\tMIPS_RSP_LWC2(0x07),\t\tMA_RSP,\t\tMO_RSP_DWOFFSET },\n\t{\"lhv\",\t\t\"RtRo,i7(s)\",\tMIPS_RSP_LWC2(0x08),\t\tMA_RSP,\t\tMO_RSP_QWOFFSET },\n\t{\"lhv\",\t\t\"RtRo,(s)\",\t\tMIPS_RSP_LWC2(0x08),\t\tMA_RSP,\t\tMO_RSP_QWOFFSET },\n\t{\"lfv\",\t\t\"RtRo,i7(s)\",\tMIPS_RSP_LWC2(0x09),\t\tMA_RSP,\t\tMO_RSP_QWOFFSET },\n\t{\"lfv\",\t\t\"RtRo,(s)\",\t\tMIPS_RSP_LWC2(0x09),\t\tMA_RSP,\t\tMO_RSP_QWOFFSET },\n\t{\"lwv\",\t\t\"RtRo,i7(s)\",\tMIPS_RSP_LWC2(0x0a),\t\tMA_RSP,\t\tMO_RSP_QWOFFSET },\n\t{\"lwv\",\t\t\"RtRo,(s)\",\t\tMIPS_RSP_LWC2(0x0a),\t\tMA_RSP,\t\tMO_RSP_QWOFFSET },\n\t{\"ltv\",\t\t\"RtRo,i7(s)\",\tMIPS_RSP_LWC2(0x0b),\t\tMA_RSP,\t\tMO_RSP_QWOFFSET },\n\t{\"ltv\",\t\t\"RtRo,(s)\",\t\tMIPS_RSP_LWC2(0x0b),\t\tMA_RSP,\t\tMO_RSP_QWOFFSET },\n\n//     31---------26--------------------15-------11--------------------0\n//     |=      SWC2|                    |   rd    |                    |\n//     -----6----------------------5------------------------------------\n//     |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--| lo\n//  00 |  SBV  |  SSV  |  SLV  |  SDV  |  SQV  |  SRV  |  SPV  |  SUV  | 00..07\n//  01 |  SHV  |  SFV  |  SWV  |  STV  |  ---  |  ---  |  ---  |  ---  | 08..0F\n//  10 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 10..17\n//  11 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | 18..1F\n//  hi |-------|-------|-------|-------|-------|-------|-------|-------|\n\t{\"sbv\",\t\t\"RtRo,i7(s)\",\tMIPS_RSP_SWC2(0x00),\t\tMA_RSP,\t\t0 },\n\t{\"sbv\",\t\t\"RtRo,(s)\",\t\tMIPS_RSP_SWC2(0x00),\t\tMA_RSP,\t\t0 },\n\t{\"ssv\",\t\t\"RtRo,i7(s)\",\tMIPS_RSP_SWC2(0x01),\t\tMA_RSP,\t\tMO_RSP_HWOFFSET },\n\t{\"ssv\",\t\t\"RtRo,(s)\",\t\tMIPS_RSP_SWC2(0x01),\t\tMA_RSP,\t\tMO_RSP_HWOFFSET },\n\t{\"slv\",\t\t\"RtRo,i7(s)\",\tMIPS_RSP_SWC2(0x02),\t\tMA_RSP,\t\tMO_RSP_WOFFSET },\n\t{\"slv\",\t\t\"RtRo,(s)\",\t\tMIPS_RSP_SWC2(0x02),\t\tMA_RSP,\t\tMO_RSP_WOFFSET },\n\t{\"sdv\",\t\t\"RtRo,i7(s)\",\tMIPS_RSP_SWC2(0x03),\t\tMA_RSP,\t\tMO_RSP_DWOFFSET },\n\t{\"sdv\",\t\t\"RtRo,(s)\",\t\tMIPS_RSP_SWC2(0x03),\t\tMA_RSP,\t\tMO_RSP_DWOFFSET },\n\t{\"sqv\",\t\t\"RtRo,i7(s)\",\tMIPS_RSP_SWC2(0x04),\t\tMA_RSP,\t\tMO_RSP_QWOFFSET },\n\t{\"sqv\",\t\t\"RtRo,(s)\",\t\tMIPS_RSP_SWC2(0x04),\t\tMA_RSP,\t\tMO_RSP_QWOFFSET },\n\t{\"srv\",\t\t\"RtRo,i7(s)\",\tMIPS_RSP_SWC2(0x05),\t\tMA_RSP,\t\tMO_RSP_QWOFFSET },\n\t{\"srv\",\t\t\"RtRo,(s)\",\t\tMIPS_RSP_SWC2(0x05),\t\tMA_RSP,\t\tMO_RSP_QWOFFSET },\n\t{\"spv\",\t\t\"RtRo,i7(s)\",\tMIPS_RSP_SWC2(0x06),\t\tMA_RSP,\t\tMO_RSP_DWOFFSET },\n\t{\"spv\",\t\t\"RtRo,(s)\",\t\tMIPS_RSP_SWC2(0x06),\t\tMA_RSP,\t\tMO_RSP_DWOFFSET },\n\t{\"suv\",\t\t\"RtRo,i7(s)\",\tMIPS_RSP_SWC2(0x07),\t\tMA_RSP,\t\tMO_RSP_DWOFFSET },\n\t{\"suv\",\t\t\"RtRo,(s)\",\t\tMIPS_RSP_SWC2(0x07),\t\tMA_RSP,\t\tMO_RSP_DWOFFSET },\n\t{\"shv\",\t\t\"RtRo,i7(s)\",\tMIPS_RSP_SWC2(0x08),\t\tMA_RSP,\t\tMO_RSP_QWOFFSET },\n\t{\"shv\",\t\t\"RtRo,(s)\",\t\tMIPS_RSP_SWC2(0x08),\t\tMA_RSP,\t\tMO_RSP_QWOFFSET },\n\t{\"sfv\",\t\t\"RtRo,i7(s)\",\tMIPS_RSP_SWC2(0x09),\t\tMA_RSP,\t\tMO_RSP_QWOFFSET },\n\t{\"sfv\",\t\t\"RtRo,(s)\",\t\tMIPS_RSP_SWC2(0x09),\t\tMA_RSP,\t\tMO_RSP_QWOFFSET },\n\t{\"swv\",\t\t\"RtRo,i7(s)\",\tMIPS_RSP_SWC2(0x0a),\t\tMA_RSP,\t\tMO_RSP_QWOFFSET },\n\t{\"swv\",\t\t\"RtRo,(s)\",\t\tMIPS_RSP_SWC2(0x0a),\t\tMA_RSP,\t\tMO_RSP_QWOFFSET },\n\t{\"stv\",\t\t\"RtRo,i7(s)\",\tMIPS_RSP_SWC2(0x0b),\t\tMA_RSP,\t\tMO_RSP_QWOFFSET },\n\t{\"stv\",\t\t\"RtRo,(s)\",\t\tMIPS_RSP_SWC2(0x0b),\t\tMA_RSP,\t\tMO_RSP_QWOFFSET },\n\t// END\n\t{ nullptr,\tnullptr,\t\t0,\t\t\t\t\t\t\t0,\t\t\t0 },\n};\n\nconst MipsArchDefinition mipsArchs[] = {\n\t// MARCH_PSX\n\t{ \"PSX\",\t\tMA_MIPS1|MA_PSX,\t\t\t\t\tMA_EXPSX,\t0 },\n\t// MARCH_N64\n\t{ \"N64\",\t\tMA_MIPS1|MA_MIPS2|MA_MIPS3,\t\t\tMA_EXN64,\tMO_64BIT|MO_FPU|MO_DFPU },\n\t// MARCH_PS2\n\t{ \"PS2\",\t\tMA_MIPS1|MA_MIPS2|MA_MIPS3|MA_PS2,\tMA_EXPS2,\tMO_64BIT|MO_FPU },\n\t// MARCH_PSP\n\t{ \"PSP\",\t\tMA_MIPS1|MA_MIPS2|MA_MIPS3|MA_PSP,\tMA_EXPSP,\tMO_FPU },\n\t// MARCH_RSP\n\t{ \"RSP\",\t\tMA_MIPS1|MA_RSP,\t\t\t\t\tMA_EXRSP,\t0 },\n\t// MARCH_INVALID\n\t{ \"Invalid\",\t0,\t\t\t\t\t\t\t\t\t0,\t\t\t0 },\n};\n\n// file: Parser/ExpressionParser.h\n\nExpression parseExpression(Tokenizer& tokenizer, bool inUnknownOrFalseBlock);\nvoid allowFunctionCallExpression(bool allow);\n\n// file: Archs/MIPS/PsxRelocator.h\n\nenum class PsxRelocationType { WordLiteral, UpperImmediate, LowerImmediate, FunctionCall };\nenum class PsxRelocationRefType { SymblId, SegmentOffset };\n\nstruct PsxRelocation\n{\n\tPsxRelocationType type;\n\tPsxRelocationRefType refType;\n\tint segmentOffset;\n\tint referenceId;\n\tint referencePos;\n\tint relativeOffset;\n\tint filePos;\n};\n\nstruct PsxSegment\n{\n\tstd::wstring name;\n\tint id;\n\tByteArray data;\n\tstd::vector<PsxRelocation> relocations;\n};\n\n\nenum class PsxSymbolType { Internal, InternalID, External, BSS, Function };\n\nstruct PsxSymbol\n{\n\tPsxSymbolType type;\n\tstd::wstring name;\n\tint segment;\n\tint offset;\n\tint id;\n\tint size;\n\tstd::shared_ptr<Label> label;\n};\n\nstruct PsxRelocatorFile\n{\n\tstd::wstring name;\n\tstd::vector<PsxSegment> segments;\n\tstd::vector<PsxSymbol> symbols;\n};\n\nclass PsxRelocator\n{\npublic:\n\tbool init(const std::wstring& inputName);\n\tbool relocate(int& memoryAddress);\n\tbool hasDataChanged() { return dataChanged; };\n\tconst ByteArray& getData() const { return outputData; };\n\tvoid writeSymbols(SymbolData& symData) const;\nprivate:\n\tsize_t loadString(ByteArray& data, size_t pos, std::wstring& dest);\n\tbool parseObject(ByteArray data, PsxRelocatorFile& dest);\n\tbool relocateFile(PsxRelocatorFile& file, int& relocationAddress);\n\n\tByteArray outputData;\n\tstd::vector<PsxRelocatorFile> files;\n\tMipsElfRelocator* reloc;\n\tbool dataChanged;\n};\n\nclass DirectivePsxObjImport: public CAssemblerCommand\n{\npublic:\n\tDirectivePsxObjImport(const std::wstring& fileName);\n\t~DirectivePsxObjImport() { };\n\tvirtual bool Validate();\n\tvirtual void Encode() const;\n\tvirtual void writeTempData(TempData& tempData) const { };\n\tvirtual void writeSymData(SymbolData& symData) const;\nprivate:\n\tPsxRelocator rel;\n};\n\n// file: Commands/CDirectiveFile.h\n\nclass GenericAssemblerFile;\n\nclass CDirectiveFile: public CAssemblerCommand\n{\npublic:\n\tenum class Type { Invalid, Open, Create, Copy, Close };\n\n\tCDirectiveFile();\n\tvoid initOpen(const std::wstring& fileName, int64_t memory);\n\tvoid initCreate(const std::wstring& fileName, int64_t memory);\n\tvoid initCopy(const std::wstring& inputName, const std::wstring& outputName, int64_t memory);\n\tvoid initClose();\n\n\tvirtual bool Validate();\n\tvirtual void Encode() const;\n\tvirtual void writeTempData(TempData& tempData) const;\n\tvirtual void writeSymData(SymbolData& symData) const;\nprivate:\n\tType type;\n\tint64_t virtualAddress;\n\tstd::shared_ptr<GenericAssemblerFile> file;\n\tstd::shared_ptr<AssemblerFile> closeFile;\n};\n\nclass CDirectivePosition: public CAssemblerCommand\n{\npublic:\n\tenum Type { Physical, Virtual };\n\tCDirectivePosition(Expression value, Type type);\n\tvirtual bool Validate();\n\tvirtual void Encode() const;\n\tvirtual void writeTempData(TempData& tempData) const;\n\tvirtual void writeSymData(SymbolData& symData) const { };\nprivate:\n\tvoid exec() const;\n\tExpression expression;\n\tType type;\n\tint64_t position;\n\tint64_t virtualAddress;\n};\n\nclass CDirectiveIncbin: public CAssemblerCommand\n{\npublic:\n\tCDirectiveIncbin(const std::wstring& fileName);\n\tvoid setStart(Expression& exp) { startExpression = exp; };\n\tvoid setSize(Expression& exp) { sizeExpression = exp; };\n\n\tvirtual bool Validate();\n\tvirtual void Encode() const;\n\tvirtual void writeTempData(TempData& tempData) const;\n\tvirtual void writeSymData(SymbolData& symData) const;\nprivate:\n\tstd::wstring fileName;\n\tint64_t fileSize;\n\n\tExpression startExpression;\n\tExpression sizeExpression;\n\tint64_t size;\n\tint64_t start;\n\tint64_t virtualAddress;\n};\n\nclass CDirectiveAlignFill: public CAssemblerCommand\n{\npublic:\n\tenum Mode { AlignPhysical, AlignVirtual, Fill };\n\n\tCDirectiveAlignFill(int64_t value, Mode mode);\n\tCDirectiveAlignFill(Expression& value, Mode mode);\n\tCDirectiveAlignFill(Expression& value, Expression& fillValue, Mode mode);\n\tvirtual bool Validate();\n\tvirtual void Encode() const;\n\tvirtual void writeTempData(TempData& tempData) const;\n\tvirtual void writeSymData(SymbolData& symData) const;\nprivate:\n\tMode mode;\n\tExpression valueExpression;\n\tExpression fillExpression;\n\tint64_t value;\n\tint64_t finalSize;\n\tint8_t fillByte;\n\tint64_t virtualAddress;\n};\n\nclass CDirectiveSkip: public CAssemblerCommand\n{\npublic:\n\tCDirectiveSkip(Expression& value);\n\tvirtual bool Validate();\n\tvirtual void Encode() const;\n\tvirtual void writeTempData(TempData& tempData) const;\n\tvirtual void writeSymData(SymbolData& symData) const { };\nprivate:\n\tExpression expression;\n\tint64_t value;\n\tint64_t virtualAddress;\n};\n\nclass CDirectiveHeaderSize: public CAssemblerCommand\n{\npublic:\n\tCDirectiveHeaderSize(Expression expression);\n\tvirtual bool Validate();\n\tvirtual void Encode() const;\n\tvirtual void writeTempData(TempData& tempData) const;\n\tvirtual void writeSymData(SymbolData& symData) const { };\nprivate:\n\tvoid exec() const;\n\tExpression expression;\n\tint64_t headerSize;\n\tint64_t virtualAddress;\n};\n\nclass DirectiveObjImport: public CAssemblerCommand\n{\npublic:\n\tDirectiveObjImport(const std::wstring& inputName);\n\tDirectiveObjImport(const std::wstring& inputName, const std::wstring& ctorName);\n\t~DirectiveObjImport() { };\n\tvirtual bool Validate();\n\tvirtual void Encode() const;\n\tvirtual void writeTempData(TempData& tempData) const;\n\tvirtual void writeSymData(SymbolData& symData) const;\nprivate:\n\tElfRelocator rel;\n\tstd::unique_ptr<CAssemblerCommand> ctor;\n};\n\n// file: Archs/MIPS/MipsParser.cpp\n\n#define CHECK(exp) if (!(exp)) return false;\n\nconst MipsRegisterDescriptor mipsRegisters[] = {\n\t{ L\"r0\", 0 },\t\t{ L\"zero\", 0},\t\t{ L\"at\", 1 },\t\t{ L\"r1\", 1 },\n\t{ L\"v0\", 2 },\t\t{ L\"r2\", 2 },\t\t{ L\"v1\", 3 },\t\t{ L\"r3\", 3 },\n\t{ L\"a0\", 4 },\t\t{ L\"r4\", 4 },\t\t{ L\"a1\", 5 },\t\t{ L\"r5\", 5 },\n\t{ L\"a2\", 6 },\t\t{ L\"r6\", 6 },\t\t{ L\"a3\", 7 },\t\t{ L\"r7\", 7 },\n\t{ L\"t0\", 8 },\t\t{ L\"r8\", 8 },\t\t{ L\"t1\", 9 },\t\t{ L\"r9\", 9 },\n\t{ L\"t2\", 10 },\t\t{ L\"r10\", 10 },\t\t{ L\"t3\", 11 },\t\t{ L\"r11\", 11 },\n\t{ L\"t4\", 12 },\t\t{ L\"r12\", 12 },\t\t{ L\"t5\", 13 },\t\t{ L\"r13\", 13 },\n\t{ L\"t6\", 14 },\t\t{ L\"r14\", 14 },\t\t{ L\"t7\", 15 },\t\t{ L\"r15\", 15 },\n\t{ L\"s0\", 16 },\t\t{ L\"r16\", 16 },\t\t{ L\"s1\", 17 },\t\t{ L\"r17\", 17 },\n\t{ L\"s2\", 18 },\t\t{ L\"r18\", 18 },\t\t{ L\"s3\", 19 },\t\t{ L\"r19\", 19 },\n\t{ L\"s4\", 20 },\t\t{ L\"r20\", 20 },\t\t{ L\"s5\", 21 },\t\t{ L\"r21\", 21 },\n\t{ L\"s6\", 22 },\t\t{ L\"r22\", 22 },\t\t{ L\"s7\", 23 },\t\t{ L\"r23\", 23 },\n\t{ L\"t8\", 24 },\t\t{ L\"r24\", 24 },\t\t{ L\"t9\", 25 },\t\t{ L\"r25\", 25 },\n\t{ L\"k0\", 26 },\t\t{ L\"r26\", 26 },\t\t{ L\"k1\", 27 },\t\t{ L\"r27\", 27 },\n\t{ L\"gp\", 28 },\t\t{ L\"r28\", 28 },\t\t{ L\"sp\", 29 },\t\t{ L\"r29\", 29 },\n\t{ L\"fp\", 30 },\t\t{ L\"r30\", 30 },\t\t{ L\"ra\", 31 },\t\t{ L\"r31\", 31 },\n\t{ L\"s8\", 30 },\n};\n\nconst MipsRegisterDescriptor mipsFloatRegisters[] = {\n\t{ L\"f0\", 0 },\t\t{ L\"f1\", 1 },\t\t{ L\"f2\", 2 },\t\t{ L\"f3\", 3 },\n\t{ L\"f4\", 4 },\t\t{ L\"f5\", 5 },\t\t{ L\"f6\", 6 },\t\t{ L\"f7\", 7 },\n\t{ L\"f8\", 8 },\t\t{ L\"f9\", 9 },\t\t{ L\"f00\", 0 },\t\t{ L\"f01\", 1 },\n\t{ L\"f02\", 2 },\t\t{ L\"f03\", 3 },\t\t{ L\"f04\", 4 },\t\t{ L\"f05\", 5 },\n\t{ L\"f06\", 6 },\t\t{ L\"f07\", 7 },\t\t{ L\"f08\", 8 },\t\t{ L\"f09\", 9 },\n\t{ L\"f10\", 10 },\t\t{ L\"f11\", 11 },\t\t{ L\"f12\", 12 },\t\t{ L\"f13\", 13 },\n\t{ L\"f14\", 14 },\t\t{ L\"f15\", 15 },\t\t{ L\"f16\", 16 },\t\t{ L\"f17\", 17 },\n\t{ L\"f18\", 18 },\t\t{ L\"f19\", 19 },\t\t{ L\"f20\", 20 },\t\t{ L\"f21\", 21 },\n\t{ L\"f22\", 22 },\t\t{ L\"f23\", 23 },\t\t{ L\"f24\", 24 },\t\t{ L\"f25\", 25 },\n\t{ L\"f26\", 26 },\t\t{ L\"f27\", 27 },\t\t{ L\"f28\", 28 },\t\t{ L\"f29\", 29 },\n\t{ L\"f30\", 30 },\t\t{ L\"f31\", 31 },\n};\n\nconst MipsRegisterDescriptor mipsFpuControlRegisters[] = {\n\t{ L\"fir\", 0 },\t\t{ L\"fcr0\", 0 },\t\t{ L\"fcsr\", 31 },\t{ L\"fcr31\", 31 },\n};\n\nconst MipsRegisterDescriptor mipsCop0Registers[] = {\n\t{ L\"index\", 0},\t\t\t{ L\"random\", 1 }, \t\t{ L\"entrylo\", 2 },\n\t{ L\"entrylo0\", 2 },\t\t{ L\"entrylo1\", 3 },\t\t{ L\"context\", 4 },\n\t{ L\"pagemask\", 5 },\t\t{ L\"wired\", 6 },\t\t{ L\"badvaddr\", 8 },\n\t{ L\"count\", 9 },\t\t{ L\"entryhi\", 10 },\t\t{ L\"compare\", 11 },\n\t{ L\"status\", 12 },\t\t{ L\"sr\", 12 },\t\t\t{ L\"cause\", 13 },\n\t{ L\"epc\", 14 },\t\t\t{ L\"prid\", 15 },\t\t{ L\"config\", 16 },\n\t{ L\"lladdr\", 17 },\t\t{ L\"watchlo\", 18 },\t\t{ L\"watchhi\", 19 },\n\t{ L\"xcontext\", 20 },\t{ L\"badpaddr\", 23 },\t{ L\"ecc\", 26 },\n\t{ L\"perr\", 26},\t\t\t{ L\"cacheerr\", 27 },\t{ L\"taglo\", 28 },\n\t{ L\"taghi\", 29 },\t\t{ L\"errorepc\", 30 },\n};\n\nconst MipsRegisterDescriptor mipsPs2Cop2FpRegisters[] = {\n\t{ L\"vf0\", 0 },\t\t{ L\"vf1\", 1 },\t\t{ L\"vf2\", 2 },\t\t{ L\"vf3\", 3 },\n\t{ L\"vf4\", 4 },\t\t{ L\"vf5\", 5 },\t\t{ L\"vf6\", 6 },\t\t{ L\"vf7\", 7 },\n\t{ L\"vf8\", 8 },\t\t{ L\"vf9\", 9 },\t\t{ L\"vf00\", 0 },\t\t{ L\"vf01\", 1 },\n\t{ L\"vf02\", 2 },\t\t{ L\"vf03\", 3 },\t\t{ L\"vf04\", 4 },\t\t{ L\"vf05\", 5 },\n\t{ L\"vf06\", 6 },\t\t{ L\"vf07\", 7 },\t\t{ L\"vf08\", 8 },\t\t{ L\"vf09\", 9 },\n\t{ L\"vf10\", 10 },\t{ L\"vf11\", 11 },\t{ L\"vf12\", 12 },\t{ L\"vf13\", 13 },\n\t{ L\"vf14\", 14 },\t{ L\"vf15\", 15 },\t{ L\"vf16\", 16 },\t{ L\"vf17\", 17 },\n\t{ L\"vf18\", 18 },\t{ L\"vf19\", 19 },\t{ L\"vf20\", 20 },\t{ L\"vf21\", 21 },\n\t{ L\"vf22\", 22 },\t{ L\"vf23\", 23 },\t{ L\"vf24\", 24 },\t{ L\"vf25\", 25 },\n\t{ L\"vf26\", 26 },\t{ L\"vf27\", 27 },\t{ L\"vf28\", 28 },\t{ L\"vf29\", 29 },\n\t{ L\"vf30\", 30 },\t{ L\"vf31\", 31 },\n};\n\nconst MipsRegisterDescriptor mipsPsxCop2DataRegisters[] = {\n\t{ L\"vxy0\", 0 },\t\t{ L\"vz0\", 1 },\t\t{ L\"vxy1\", 2 },\t\t{ L\"vz1\", 3 },\n\t{ L\"vxy2\", 4 },\t\t{ L\"vz2\", 5 },\t\t{ L\"rgbc\", 6 },\t\t{ L\"otz\", 7 },\n\t{ L\"ir0\", 8 },\t\t{ L\"ir1\", 9 },\t\t{ L\"ir2\", 10 },\t\t{ L\"ir3\", 11 },\n\t{ L\"sxy0\", 12 },\t{ L\"sxy1\", 13 },\t{ L\"sxy2\", 14 },\t{ L\"sxyp\", 15 },\n\t{ L\"sz0\", 16 },\t\t{ L\"sz1\", 17 },\t\t{ L\"sz2\", 18 },\t\t{ L\"sz3\", 19 },\n\t{ L\"rgb0\", 20 },\t{ L\"rgb1\", 21 },\t{ L\"rgb2\", 22 },\t{ L\"res1\", 23 },\n\t{ L\"mac0\", 24 },\t{ L\"mac1\", 25 },\t{ L\"mac2\", 26 },\t{ L\"mac3\", 27 },\n\t{ L\"irgb\", 28 },\t{ L\"orgb\", 29 },\t{ L\"lzcs\", 30 },\t{ L\"lzcr\", 31 },\n};\n\nconst MipsRegisterDescriptor mipsPsxCop2ControlRegisters[] = {\n\t{ L\"rt0\", 0 },\t\t{ L\"rt1\", 1 },\t\t{ L\"rt2\", 2 },\t\t{ L\"rt3\", 3 },\n\t{ L\"rt4\", 4 },\t\t{ L\"trx\", 5 },\t\t{ L\"try\", 6 },\t\t{ L\"trz\", 7 },\n\t{ L\"llm0\", 8 },\t\t{ L\"llm1\", 9 },\t\t{ L\"llm2\", 10 },\t{ L\"llm3\", 11 },\n\t{ L\"llm4\", 12 },\t{ L\"rbk\", 13 },\t\t{ L\"gbk\", 14 },\t\t{ L\"bbk\", 15 },\n\t{ L\"lcm0\", 16 },\t{ L\"lcm1\", 17 },\t{ L\"lcm2\", 18 },\t{ L\"lcm3\", 19 },\n\t{ L\"lcm4\", 20 },\t{ L\"rfc\", 21 },\t\t{ L\"gfc\", 22 },\t\t{ L\"bfc\", 23 },\n\t{ L\"ofx\", 24 },\t\t{ L\"ofy\", 25 },\t\t{ L\"h\", 26 },\t\t{ L\"dqa\", 27 },\n\t{ L\"dqb\", 28 },\t\t{ L\"zsf3\", 29 },\t{ L\"zsf4\", 30 },\t{ L\"flag\", 31 },\n};\n\nconst MipsRegisterDescriptor mipsRspCop0Registers[] = {\n\t{ L\"sp_mem_addr\", 0 },\t{ L\"sp_dram_addr\", 1 }, { L\"sp_rd_len\", 2 },\n\t{ L\"sp_wr_len\", 3 },\t{ L\"sp_status\", 4 },\t{ L\"sp_dma_full\", 5 },\n\t{ L\"sp_dma_busy\", 6 },\t{ L\"sp_semaphore\", 7 },\t{ L\"dpc_start\", 8 },\n\t{ L\"dpc_end\", 9 },\t\t{ L\"dpc_current\", 10 },\t{ L\"dpc_status\", 11 },\n\t{ L\"dpc_clock\", 12 },\t{ L\"dpc_bufbusy\", 13 },\t{ L\"dpc_pipebusy\", 14 },\n\t{ L\"dpc_tmem\", 15 },\n};\n\nconst MipsRegisterDescriptor mipsRspVectorControlRegisters[] = {\n\t{ L\"vco\", 0 },\t\t{ L\"vcc\", 1 }, \t\t{ L\"vce\", 2 },\n};\n\nconst MipsRegisterDescriptor mipsRspVectorRegisters[] = {\n\t{ L\"v0\", 0 },\t\t{ L\"v1\", 1 },\t\t{ L\"v2\", 2 },\t\t{ L\"v3\", 3 },\n\t{ L\"v4\", 4 },\t\t{ L\"v5\", 5 },\t\t{ L\"v6\", 6 },\t\t{ L\"v7\", 7 },\n\t{ L\"v8\", 8 },\t\t{ L\"v9\", 9 },\t\t{ L\"v00\", 0 },\t\t{ L\"v01\", 1 },\n\t{ L\"v02\", 2 },\t\t{ L\"v03\", 3 },\t\t{ L\"v04\", 4 },\t\t{ L\"v05\", 5 },\n\t{ L\"v06\", 6 },\t\t{ L\"v07\", 7 },\t\t{ L\"v08\", 8 },\t\t{ L\"v09\", 9 },\n\t{ L\"v10\", 10 },\t\t{ L\"v11\", 11 },\t\t{ L\"v12\", 12 },\t\t{ L\"v13\", 13 },\n\t{ L\"v14\", 14 },\t\t{ L\"v15\", 15 },\t\t{ L\"v16\", 16 },\t\t{ L\"v17\", 17 },\n\t{ L\"v18\", 18 },\t\t{ L\"v19\", 19 },\t\t{ L\"v20\", 20 },\t\t{ L\"v21\", 21 },\n\t{ L\"v22\", 22 },\t\t{ L\"v23\", 23 },\t\t{ L\"v24\", 24 },\t\t{ L\"v25\", 25 },\n\t{ L\"v26\", 26 },\t\t{ L\"v27\", 27 },\t\t{ L\"v28\", 28 },\t\t{ L\"v29\", 29 },\n\t{ L\"v30\", 30 },\t\t{ L\"v31\", 31 },\n};\n\nstd::unique_ptr<CAssemblerCommand> parseDirectiveResetDelay(Parser& parser, int flags)\n{\n\tMips.SetIgnoreDelay(true);\n\treturn ::make_unique<DummyCommand>();\n}\n\nstd::unique_ptr<CAssemblerCommand> parseDirectiveFixLoadDelay(Parser& parser, int flags)\n{\n\tMips.SetFixLoadDelay(true);\n\treturn ::make_unique<DummyCommand>();\n}\n\nstd::unique_ptr<CAssemblerCommand> parseDirectiveLoadElf(Parser& parser, int flags)\n{\n\tstd::vector<Expression> list;\n\tif (parser.parseExpressionList(list,1,2) == false)\n\t\treturn nullptr;\n\n\tstd::wstring inputName, outputName;\n\tif (list[0].evaluateString(inputName,true) == false)\n\t\treturn nullptr;\n\n\tif (list.size() == 2)\n\t{\n\t\tif (list[1].evaluateString(outputName,true) == false)\n\t\t\treturn nullptr;\n\t\treturn ::make_unique<DirectiveLoadMipsElf>(inputName,outputName);\n\t} else {\n\t\treturn ::make_unique<DirectiveLoadMipsElf>(inputName);\n\t}\n}\n\nstd::unique_ptr<CAssemblerCommand> parseDirectiveImportObj(Parser& parser, int flags)\n{\n\tconst Token& start = parser.peekToken();\n\n\tstd::vector<Expression> list;\n\tif (parser.parseExpressionList(list,1,2) == false)\n\t\treturn nullptr;\n\n\tstd::wstring inputName;\n\tif (list[0].evaluateString(inputName,true) == false)\n\t\treturn nullptr;\n\n\tif (list.size() == 2)\n\t{\n\t\tstd::wstring ctorName;\n\t\tif (list[1].evaluateIdentifier(ctorName) == false)\n\t\t\treturn nullptr;\n\n\t\tif (Mips.GetVersion() == MARCH_PSX)\n\t\t{\n\t\t\tparser.printError(start,L\"Constructor not supported for PSX libraries\");\n\t\t\treturn ::make_unique<InvalidCommand>();\n\t\t}\n\n\t\treturn ::make_unique<DirectiveObjImport>(inputName,ctorName);\n\t}\n\n\tif (Mips.GetVersion() == MARCH_PSX)\n\t\treturn ::make_unique<DirectivePsxObjImport>(inputName);\n\telse\n\t\treturn ::make_unique<DirectiveObjImport>(inputName);\n}\n\nconst DirectiveMap mipsDirectives = {\n\t{ L\".resetdelay\",\t\t{ &parseDirectiveResetDelay,\t0 } },\n\t{ L\".fixloaddelay\",\t\t{ &parseDirectiveFixLoadDelay,\t0 } },\n\t{ L\".loadelf\",\t\t\t{ &parseDirectiveLoadElf,\t\t0 } },\n\t{ L\".importobj\",\t\t{ &parseDirectiveImportObj,\t\t0 } },\n\t{ L\".importlib\",\t\t{ &parseDirectiveImportObj,\t\t0 } },\n};\n\nstd::unique_ptr<CAssemblerCommand> MipsParser::parseDirective(Parser& parser)\n{\n\treturn parser.parseDirective(mipsDirectives);\n}\n\nbool MipsParser::parseRegisterNumber(Parser& parser, MipsRegisterValue& dest, int numValues)\n{\n\t// check for $0 and $1\n\tif (parser.peekToken().type == TokenType::Dollar)\n\t{\n\t\tconst Token& number = parser.peekToken(1);\n\t\tif (number.type == TokenType::Integer && number.intValue < numValues)\n\t\t{\n\t\t\tdest.name = formatString(L\"$%d\", number.intValue);\n\t\t\tdest.num = (int) number.intValue;\n\n\t\t\tparser.eatTokens(2);\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\nbool MipsParser::parseRegisterTable(Parser& parser, MipsRegisterValue& dest, const MipsRegisterDescriptor* table, size_t count)\n{\n\tint offset = 0;\n\tbool hasDollar = parser.peekToken().type == TokenType::Dollar;\n\tif (hasDollar)\n\t\toffset = 1;\n\n\tconst Token &token = parser.peekToken(offset);\n\n\tif (token.type != TokenType::Identifier)\n\t\treturn false;\n\n\tconst std::wstring stringValue = token.getStringValue();\n\tfor (size_t i = 0; i < count; i++)\n\t{\n\t\tif (stringValue == table[i].name)\n\t\t{\n\t\t\tdest.name = stringValue;\n\t\t\tdest.num = table[i].num;\n\t\t\tparser.eatTokens(hasDollar ? 2 : 1);\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\nbool MipsParser::parseRegister(Parser& parser, MipsRegisterValue& dest)\n{\n\tdest.type = MipsRegisterType::Normal;\n\n\tif (parseRegisterNumber(parser, dest, 32))\n\t\treturn true;\n\n\treturn parseRegisterTable(parser,dest,mipsRegisters,ARRAY_SIZE(mipsRegisters));\n}\n\nbool MipsParser::parseFpuRegister(Parser& parser, MipsRegisterValue& dest)\n{\n\tdest.type = MipsRegisterType::Float;\n\n\tif (parseRegisterNumber(parser, dest, 32))\n\t\treturn true;\n\n\treturn parseRegisterTable(parser,dest,mipsFloatRegisters,ARRAY_SIZE(mipsFloatRegisters));\n}\n\nbool MipsParser::parseFpuControlRegister(Parser& parser, MipsRegisterValue& dest)\n{\n\tdest.type = MipsRegisterType::FpuControl;\n\n\tif (parseRegisterNumber(parser, dest, 32))\n\t\treturn true;\n\n\treturn parseRegisterTable(parser,dest,mipsFpuControlRegisters,ARRAY_SIZE(mipsFpuControlRegisters));\n}\n\nbool MipsParser::parseCop0Register(Parser& parser, MipsRegisterValue& dest)\n{\n\tdest.type = MipsRegisterType::Cop0;\n\n\tif (parseRegisterNumber(parser, dest, 32))\n\t\treturn true;\n\n\treturn parseRegisterTable(parser,dest,mipsCop0Registers,ARRAY_SIZE(mipsCop0Registers));\n}\n\nbool MipsParser::parsePs2Cop2Register(Parser& parser, MipsRegisterValue& dest)\n{\n\tdest.type = MipsRegisterType::Ps2Cop2;\n\treturn parseRegisterTable(parser,dest,mipsPs2Cop2FpRegisters,ARRAY_SIZE(mipsPs2Cop2FpRegisters));\n}\n\nbool MipsParser::parsePsxCop2DataRegister(Parser& parser, MipsRegisterValue& dest)\n{\n\tdest.type = MipsRegisterType::PsxCop2Data;\n\n\tif (parseRegisterNumber(parser, dest, 32))\n\t\treturn true;\n\n\treturn parseRegisterTable(parser,dest,mipsPsxCop2DataRegisters,ARRAY_SIZE(mipsPsxCop2DataRegisters));\n}\n\nbool MipsParser::parsePsxCop2ControlRegister(Parser& parser, MipsRegisterValue& dest)\n{\n\tdest.type = MipsRegisterType::PsxCop2Control;\n\n\tif (parseRegisterNumber(parser, dest, 32))\n\t\treturn true;\n\n\treturn parseRegisterTable(parser,dest,mipsPsxCop2ControlRegisters,ARRAY_SIZE(mipsPsxCop2ControlRegisters));\n}\n\nbool MipsParser::parseRspCop0Register(Parser& parser, MipsRegisterValue& dest)\n{\n\tdest.type = MipsRegisterType::RspCop0;\n\n\tif (parseRegisterNumber(parser, dest, 32))\n\t\treturn true;\n\n\treturn parseRegisterTable(parser,dest,mipsRspCop0Registers,ARRAY_SIZE(mipsRspCop0Registers));\n}\n\nbool MipsParser::parseRspVectorControlRegister(Parser& parser, MipsRegisterValue& dest)\n{\n\tdest.type = MipsRegisterType::RspVectorControl;\n\n\tif (parseRegisterNumber(parser, dest, 32))\n\t\treturn true;\n\n\treturn parseRegisterTable(parser,dest,mipsRspVectorControlRegisters,ARRAY_SIZE(mipsRspVectorControlRegisters));\n}\n\nbool MipsParser::parseRspVectorRegister(Parser& parser, MipsRegisterValue& dest)\n{\n\tdest.type = MipsRegisterType::RspVector;\n\treturn parseRegisterTable(parser,dest,mipsRspVectorRegisters,ARRAY_SIZE(mipsRspVectorRegisters));\n}\n\nbool MipsParser::parseRspVectorElement(Parser& parser, MipsRegisterValue& dest)\n{\n\tdest.type = MipsRegisterType::RspVectorElement;\n\n\tif (parser.peekToken().type == TokenType::LBrack)\n\t{\n\t\tstatic const MipsRegisterDescriptor rspElementNames[] = {\n\t\t\t{ L\"0q\", 2 },\t\t{ L\"1q\", 3 },\t\t{ L\"0h\", 4 },\t\t{ L\"1h\", 5 },\n\t\t\t{ L\"2h\", 6 },\t\t{ L\"3h\", 7 },\t\t{ L\"0w\", 8 },\t\t{ L\"0\", 8 },\n\t\t\t{ L\"1w\", 9 },\t\t{ L\"1\", 9 },\t\t{ L\"2w\", 10 },\t\t{ L\"2\", 10 },\n\t\t\t{ L\"3w\", 11 },\t\t{ L\"3\", 11 },\t\t{ L\"4w\", 12 },\t\t{ L\"4\", 12 },\n\t\t\t{ L\"5w\", 13 },\t\t{ L\"5\", 13 },\t\t{ L\"6w\", 14 },\t\t{ L\"6\", 14 },\n\t\t\t{ L\"7w\", 15 },\t\t{ L\"7\", 15 },\n\t\t};\n\n\t\tparser.eatToken();\n\n\t\tif (parseRegisterNumber(parser, dest, 16))\n\t\t\treturn parser.nextToken().type == TokenType::RBrack;\n\n\t\tconst Token& token = parser.nextToken();\n\n\t\tif (token.type != TokenType::Integer && token.type != TokenType::NumberString)\n\t\t\treturn false;\n\n\t\t//ignore the numerical values, just use the original text as an identifier\n\t\tstd::wstring stringValue = token.getOriginalText();\n\t\tif (std::any_of(stringValue.begin(), stringValue.end(), iswupper))\n\t\t{\n\t\t\tstd::transform(stringValue.begin(), stringValue.end(), stringValue.begin(), towlower);\n\t\t}\n\n\t\tfor (size_t i = 0; i < ARRAY_SIZE(rspElementNames); i++)\n\t\t{\n\t\t\tif (stringValue == rspElementNames[i].name)\n\t\t\t{\n\t\t\t\tdest.num = rspElementNames[i].num;\n\t\t\t\tdest.name = rspElementNames[i].name;\n\n\t\t\t\treturn parser.nextToken().type == TokenType::RBrack;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tdest.num = 0;\n\tdest.name = L\"\";\n\n\treturn true;\n\n}\n\nbool MipsParser::parseRspScalarElement(Parser& parser, MipsRegisterValue& dest)\n{\n\tdest.type = MipsRegisterType::RspScalarElement;\n\n\tif (parser.nextToken().type != TokenType::LBrack)\n\t\treturn false;\n\n\tconst Token &token = parser.nextToken();\n\n\tif (token.type != TokenType::Integer || token.intValue >= 8)\n\t\treturn false;\n\n\tdest.name = formatString(L\"%d\", token.intValue);\n\tdest.num = token.intValue + 8;\n\n\treturn parser.nextToken().type == TokenType::RBrack;\n}\n\nbool MipsParser::parseRspOffsetElement(Parser& parser, MipsRegisterValue& dest)\n{\n\tdest.type = MipsRegisterType::RspOffsetElement;\n\n\tif (parser.peekToken().type == TokenType::LBrack)\n\t{\n\t\tparser.eatToken();\n\n\t\tconst Token &token = parser.nextToken();\n\n\t\tif (token.type != TokenType::Integer || token.intValue >= 16)\n\t\t\treturn false;\n\n\t\tdest.name = formatString(L\"%d\", token.intValue);\n\t\tdest.num = token.intValue;\n\n\t\treturn parser.nextToken().type == TokenType::RBrack;\n\t}\n\n\tdest.num = 0;\n\tdest.name = L\"\";\n\n\treturn true;\n}\n\nstatic bool decodeDigit(wchar_t digit, int& dest)\n{\n\tif (digit >= '0' && digit <= '9')\n\t{\n\t\tdest = digit-'0';\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nbool MipsParser::parseVfpuRegister(Parser& parser, MipsRegisterValue& reg, int size)\n{\n\tconst Token& token = parser.peekToken();\n\tconst std::wstring stringValue = token.getStringValue();\n\tif (token.type != TokenType::Identifier || stringValue.size() != 4)\n\t\treturn false;\n\n\tint mtx,col,row;\n\tif (decodeDigit(stringValue[1],mtx) == false) return false;\n\tif (decodeDigit(stringValue[2],col) == false) return false;\n\tif (decodeDigit(stringValue[3],row) == false) return false;\n\twchar_t mode = towlower(stringValue[0]);\n\n\tif (size < 0 || size > 3)\n\t\treturn false;\n\n\tif (row > 3 || col > 3 || mtx > 7)\n\t\treturn false;\n\n\treg.num = 0;\n\tswitch (mode)\n\t{\n\tcase 'r':\t\t\t\t\t// transposed vector\n\t\treg.num |= (1 << 5);\n\t\tstd::swap(col,row);\t\t// fallthrough\n\tcase 'c':\t\t\t\t\t// vector\n\t\treg.type = MipsRegisterType::VfpuVector;\n\n\t\tswitch (size)\n\t\t{\n\t\tcase 1:\t// pair\n\t\tcase 3: // quad\n\t\t\tif (row & 1)\n\t\t\t\treturn false;\n\t\t\tbreak;\n\t\tcase 2:\t// triple\n\t\t\tif (row & 2)\n\t\t\t\treturn false;\n\t\t\trow <<= 1;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\treturn false;\n\t\t}\n\t\tbreak;\n\tcase 's':\t\t\t\t\t// single\n\t\treg.type = MipsRegisterType::VfpuVector;\n\n\t\tif (size != 0)\n\t\t\treturn false;\n\t\tbreak;\n\tcase 'e':\t\t\t\t\t// transposed matrix\n\t\treg.num |= (1 << 5);\t// fallthrough\n\tcase 'm':\t\t\t\t\t// matrix\n\t\treg.type = MipsRegisterType::VfpuMatrix;\n\n\t\t// check size\n\t\tswitch (size)\n\t\t{\n\t\tcase 1:\t// 2x2\n\t\tcase 3:\t// 4x4\n\t\t\tif (row & 1)\n\t\t\t\treturn false;\n\t\t\tbreak;\n\t\tcase 2:\t// 3x3\n\t\t\tif (row & ~1)\n\t\t\t\treturn false;\n\t\t\trow <<= 1;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\treturn false;\n\t\t}\n\t\tbreak;\n\tdefault:\n\t\treturn false;\n\t}\n\n\treg.num |= mtx << 2;\n\treg.num |= col;\n\treg.num |= row << 5;\n\n\treg.name = stringValue;\n\tparser.eatToken();\n\treturn true;\n}\n\nbool MipsParser::parseVfpuControlRegister(Parser& parser, MipsRegisterValue& reg)\n{\n\tstatic const wchar_t* vfpuCtrlNames[16] = {\n\t\tL\"spfx\",\tL\"tpfx\",\tL\"dpfx\",\tL\"cc\",\n\t\tL\"inf4\",\tL\"rsv5\",\tL\"rsv6\",\tL\"rev\",\n\t\tL\"rcx0\",\tL\"rcx1\",\tL\"rcx2\",\tL\"rcx3\",\n\t\tL\"rcx4\",\tL\"rcx5\",\tL\"rcx6\",\tL\"rcx7\",\n\t};\n\n\tconst Token& token = parser.peekToken();\n\tconst std::wstring stringValue = token.getStringValue();\n\n\tif (token.type == TokenType::Identifier)\n\t{\n\t\tfor (int i = 0; i < 16; i++)\n\t\t{\n\t\t\tif (stringValue == vfpuCtrlNames[i])\n\t\t\t{\n\t\t\t\treg.num = i;\n\t\t\t\treg.name = vfpuCtrlNames[i];\n\n\t\t\t\tparser.eatToken();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t} else if (token.type == TokenType::Integer && token.intValue <= 15)\n\t{\n\t\treg.num = (int) token.intValue;\n\t\treg.name = vfpuCtrlNames[reg.num];\n\n\t\tparser.eatToken();\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\nbool MipsParser::parseImmediate(Parser& parser, Expression& dest)\n{\n\t// check for (reg) or reg sequence\n\tTokenizerPosition pos = parser.getTokenizer()->getPosition();\n\n\tbool hasParen = parser.peekToken().type == TokenType::LParen;\n\tif (hasParen)\n\t\tparser.eatToken();\n\n\tMipsRegisterValue tempValue;\n\tbool isRegister = parseRegister(parser,tempValue);\n\tparser.getTokenizer()->setPosition(pos);\n\n\tif (isRegister)\n\t\treturn false;\n\n\tdest = parser.parseExpression();\n\treturn dest.isLoaded();\n}\n\nbool MipsParser::matchSymbol(Parser& parser, wchar_t symbol)\n{\n\tswitch (symbol)\n\t{\n\tcase '(':\n\t\treturn parser.matchToken(TokenType::LParen);\n\tcase ')':\n\t\treturn parser.matchToken(TokenType::RParen);\n\tcase ',':\n\t\treturn parser.matchToken(TokenType::Comma);\n\t}\n\n\treturn false;\n}\n\nbool MipsParser::parseVcstParameter(Parser& parser, int& result)\n{\n\tstatic TokenSequenceParser sequenceParser;\n\n\t// initialize on first use\n\tif (sequenceParser.getEntryCount() == 0)\n\t{\n\t\t// maxfloat\n\t\tsequenceParser.addEntry(1,\n\t\t\t{TokenType::Identifier},\n\t\t\t{L\"maxfloat\"}\n\t\t);\n\t\t// sqrt(2)\n\t\tsequenceParser.addEntry(2,\n\t\t\t{TokenType::Identifier, TokenType::LParen, TokenType::Integer, TokenType::RParen},\n\t\t\t{L\"sqrt\", INT64_C(2)}\n\t\t);\n\t\t// sqrt(1/2)\n\t\tsequenceParser.addEntry(3,\n\t\t\t{TokenType::Identifier, TokenType::LParen, TokenType::Integer, TokenType::Div, TokenType::Integer, TokenType::RParen},\n\t\t\t{L\"sqrt\", INT64_C(1), INT64_C(2)}\n\t\t);\n\t\t// sqrt(0.5)\n\t\tsequenceParser.addEntry(3,\n\t\t\t{TokenType::Identifier, TokenType::LParen, TokenType::Float, TokenType::RParen},\n\t\t\t{L\"sqrt\", 0.5}\n\t\t);\n\t\t// 2/sqrt(pi)\n\t\tsequenceParser.addEntry(4,\n\t\t\t{TokenType::Integer, TokenType::Div, TokenType::Identifier, TokenType::LParen, TokenType::Identifier, TokenType::RParen},\n\t\t\t{INT64_C(2), L\"sqrt\", L\"pi\"}\n\t\t);\n\t\t// 2/pi\n\t\tsequenceParser.addEntry(5,\n\t\t\t{TokenType::Integer, TokenType::Div, TokenType::Identifier},\n\t\t\t{INT64_C(2), L\"pi\"}\n\t\t);\n\t\t// 1/pi\n\t\tsequenceParser.addEntry(6,\n\t\t\t{TokenType::Integer, TokenType::Div, TokenType::Identifier},\n\t\t\t{INT64_C(1), L\"pi\"}\n\t\t);\n\t\t// pi/4\n\t\tsequenceParser.addEntry(7,\n\t\t\t{TokenType::Identifier, TokenType::Div, TokenType::Integer},\n\t\t\t{L\"pi\", INT64_C(4)}\n\t\t);\n\t\t// pi/2\n\t\tsequenceParser.addEntry(8,\n\t\t\t{TokenType::Identifier, TokenType::Div, TokenType::Integer},\n\t\t\t{L\"pi\", INT64_C(2)}\n\t\t);\n\t\t// pi/6 - early because \"pi\" is a prefix of it\n\t\tsequenceParser.addEntry(16,\n\t\t\t{TokenType::Identifier, TokenType::Div, TokenType::Integer},\n\t\t\t{L\"pi\", INT64_C(6)}\n\t\t);\n\t\t// pi\n\t\tsequenceParser.addEntry(9,\n\t\t\t{TokenType::Identifier},\n\t\t\t{L\"pi\"}\n\t\t);\n\t\t// e\n\t\tsequenceParser.addEntry(10,\n\t\t\t{TokenType::Identifier},\n\t\t\t{L\"e\"}\n\t\t);\n\t\t// log2(e)\n\t\tsequenceParser.addEntry(11,\n\t\t\t{TokenType::Identifier, TokenType::LParen, TokenType::Identifier, TokenType::RParen},\n\t\t\t{L\"log2\", L\"e\"}\n\t\t);\n\t\t// log10(e)\n\t\tsequenceParser.addEntry(12,\n\t\t\t{TokenType::Identifier, TokenType::LParen, TokenType::Identifier, TokenType::RParen},\n\t\t\t{L\"log10\", L\"e\"}\n\t\t);\n\t\t// ln(2)\n\t\tsequenceParser.addEntry(13,\n\t\t\t{TokenType::Identifier, TokenType::LParen, TokenType::Integer, TokenType::RParen},\n\t\t\t{L\"ln\", INT64_C(2)}\n\t\t);\n\t\t// ln(10)\n\t\tsequenceParser.addEntry(14,\n\t\t\t{TokenType::Identifier, TokenType::LParen, TokenType::Integer, TokenType::RParen},\n\t\t\t{L\"ln\", INT64_C(10)}\n\t\t);\n\t\t// 2*pi\n\t\tsequenceParser.addEntry(15,\n\t\t\t{TokenType::Integer, TokenType::Mult, TokenType::Identifier},\n\t\t\t{INT64_C(2), L\"pi\"}\n\t\t);\n\t\t// log10(2)\n\t\tsequenceParser.addEntry(17,\n\t\t\t{TokenType::Identifier, TokenType::LParen, TokenType::Integer, TokenType::RParen},\n\t\t\t{L\"log10\", INT64_C(2)}\n\t\t);\n\t\t// log2(10)\n\t\tsequenceParser.addEntry(18,\n\t\t\t{TokenType::Identifier, TokenType::LParen, TokenType::Integer, TokenType::RParen},\n\t\t\t{L\"log2\", INT64_C(10)}\n\t\t);\n\t\t// sqrt(3)/2\n\t\tsequenceParser.addEntry(19,\n\t\t\t{TokenType::Identifier, TokenType::LParen, TokenType::Integer, TokenType::RParen, TokenType::Div, TokenType::Integer},\n\t\t\t{L\"sqrt\", INT64_C(3), INT64_C(2)}\n\t\t);\n\t}\n\n\treturn sequenceParser.parse(parser,result);\n}\n\nbool MipsParser::parseVfpuVrot(Parser& parser, int& result, int size)\n{\n\tint sin = -1;\n\tint cos = -1;\n\tbool negSine = false;\n\tint sineCount = 0;\n\n\tif (parser.nextToken().type != TokenType::LBrack)\n\t\treturn false;\n\n\tint numElems = size+1;\n\tfor (int i = 0; i < numElems; i++)\n\t{\n\t\tconst Token* tokenFinder = &parser.nextToken();\n\n\t\tif (i != 0)\n\t\t{\n\t\t\tif (tokenFinder->type != TokenType::Comma)\n\t\t\t\treturn false;\n\n\t\t\ttokenFinder = &parser.nextToken();\n\t\t}\n\n\t\tbool isNeg = tokenFinder->type == TokenType::Minus;\n\t\tif (isNeg)\n\t\t\ttokenFinder = &parser.nextToken();\n\n\t\tconst Token& token = *tokenFinder;\n\n\t\tconst std::wstring stringValue = token.getStringValue();\n\t\tif (token.type != TokenType::Identifier || stringValue.size() != 1)\n\t\t\treturn false;\n\n\t\tswitch (stringValue[0])\n\t\t{\n\t\tcase 's':\n\t\t\t// if one is negative, all have to be\n\t\t\tif ((!isNeg && negSine) || (isNeg && !negSine && sineCount > 0))\n\t\t\t\treturn false;\n\n\t\t\tnegSine = negSine || isNeg;\n\t\t\tsin = i;\n\t\t\tsineCount++;\n\t\t\tbreak;\n\t\tcase 'c':\n\t\t\t// can't be negative, or happen twice\n\t\t\tif (isNeg || cos != -1)\n\t\t\t\treturn false;\n\t\t\tcos = i;\n\t\t\tbreak;\n\t\tcase '0':\n\t\t\tif (isNeg)\n\t\t\t\treturn false;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tif (parser.nextToken().type != TokenType::RBrack)\n\t\treturn false;\n\n\tresult = negSine ? 0x10 : 0;\n\n\tif (sin == -1 && cos == -1)\n\t{\n\t\treturn false;\n\t} else if (sin == -1)\n\t{\n\t\tif (numElems == 4)\n\t\t\treturn false;\n\n\t\tresult |= cos;\n\t\tresult |= ((size+1) << 2);\n\t} else if (cos == -1)\n\t{\n\t\tif (numElems == 4)\n\t\t\treturn false;\n\n\t\tif (sineCount == 1)\n\t\t{\n\t\t\tresult |= (size+1);\n\t\t\tresult |= (sin << 2);\n\t\t} else if (sineCount == numElems)\n\t\t{\n\t\t\tresult |= (size+1);\n\t\t\tresult |= ((size+1) << 2);\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t} else {\n\t\tif (sineCount > 1)\n\t\t{\n\t\t\tif (sineCount+1 != numElems)\n\t\t\t\treturn false;\n\n\t\t\tresult |= cos;\n\t\t\tresult |= (cos << 2);\n\t\t} else {\n\t\t\tresult |= cos;\n\t\t\tresult |= (sin << 2);\n\t\t}\n\t}\n\n\treturn true;\n}\n\nbool MipsParser::parseVfpuCondition(Parser& parser, int& result)\n{\n\tstatic const wchar_t* conditions[] = {\n\t\tL\"fl\", L\"eq\", L\"lt\", L\"le\", L\"tr\", L\"ne\", L\"ge\", L\"gt\",\n\t\tL\"ez\", L\"en\", L\"ei\", L\"es\", L\"nz\", L\"nn\", L\"ni\", L\"ns\"\n\t};\n\n\tconst Token& token = parser.nextToken();\n\tif (token.type != TokenType::Identifier)\n\t\treturn false;\n\n\tconst std::wstring stringValue = token.getStringValue();\n\tfor (size_t i = 0; i < ARRAY_SIZE(conditions); i++)\n\t{\n\t\tif (stringValue == conditions[i])\n\t\t{\n\t\t\tresult = i;\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\nbool MipsParser::parseVpfxsParameter(Parser& parser, int& result)\n{\n\tstatic TokenSequenceParser sequenceParser;\n\n\t// initialize on first use\n\tif (sequenceParser.getEntryCount() == 0)\n\t{\n\t\t// 0\n\t\tsequenceParser.addEntry(0, {TokenType::Integer}, {INT64_C(0)} );\n\t\t// 1\n\t\tsequenceParser.addEntry(1, {TokenType::Integer}, {INT64_C(1)} );\n\t\t// 2\n\t\tsequenceParser.addEntry(2, {TokenType::Integer}, {INT64_C(2)} );\n\t\t// 1/2\n\t\tsequenceParser.addEntry(3, {TokenType::Integer, TokenType::Div, TokenType::Integer}, {INT64_C(1), INT64_C(2)} );\n\t\t// 3\n\t\tsequenceParser.addEntry(4, {TokenType::Integer}, {INT64_C(3)} );\n\t\t// 1/3\n\t\tsequenceParser.addEntry(5, {TokenType::Integer, TokenType::Div, TokenType::Integer}, {INT64_C(1), INT64_C(3)} );\n\t\t// 1/4\n\t\tsequenceParser.addEntry(6, {TokenType::Integer, TokenType::Div, TokenType::Integer}, {INT64_C(1), INT64_C(4)} );\n\t\t// 1/6\n\t\tsequenceParser.addEntry(7, {TokenType::Integer, TokenType::Div, TokenType::Integer}, {INT64_C(1), INT64_C(6)} );\n\t}\n\n\tif (parser.nextToken().type != TokenType::LBrack)\n\t\treturn false;\n\n\tfor (int i = 0; i < 4; i++)\n\t{\n\t\tconst Token *tokenFinder = &parser.nextToken();\n\n\t\tif (i != 0)\n\t\t{\n\t\t\tif (tokenFinder->type != TokenType::Comma)\n\t\t\t\treturn false;\n\n\t\t\ttokenFinder = &parser.nextToken();\n\t\t}\n\n\t\t// negation\n\t\tif (tokenFinder->type == TokenType::Minus)\n\t\t{\n\t\t\tresult |= 1 << (16+i);\n\t\t\ttokenFinder = &parser.nextToken();\n\t\t}\n\n\t\t// abs\n\t\tbool abs = false;\n\t\tif (tokenFinder->type == TokenType::BitOr)\n\t\t{\n\t\t\tresult |= 1 << (8+i);\n\t\t\tabs = true;\n\t\t\ttokenFinder = &parser.nextToken();\n\t\t}\n\n\t\tconst Token& token = *tokenFinder;\n\n\t\t// check for register\n\t\tconst wchar_t* reg;\n\t\tstatic const wchar_t* vpfxstRegisters = L\"xyzw\";\n\t\tconst std::wstring stringValue = token.getStringValue();\n\t\tif (stringValue.size() == 1 && (reg = wcschr(vpfxstRegisters,stringValue[0])) != nullptr)\n\t\t{\n\t\t\tresult |= (reg-vpfxstRegisters) << (i*2);\n\n\t\t\tif (abs && parser.nextToken().type != TokenType::BitOr)\n\t\t\t\treturn false;\n\n\t\t\tcontinue;\n\t\t}\n\n\t\t// abs is invalid with constants\n\t\tif (abs)\n\t\t\treturn false;\n\n\t\tresult |= 1 << (12+i);\n\n\t\tint constNum = -1;\n\t\tif (sequenceParser.parse(parser,constNum) == false)\n\t\t\treturn false;\n\n\t\tresult |= (constNum & 3) << (i*2);\n\t\tif (constNum & 4)\n\t\t\tresult |= 1 << (8+i);\n\t}\n\n\treturn parser.nextToken().type == TokenType::RBrack;\n}\n\nbool MipsParser::parseVpfxdParameter(Parser& parser, int& result)\n{\n\tstatic TokenSequenceParser sequenceParser;\n\n\t// initialize on first use\n\tif (sequenceParser.getEntryCount() == 0)\n\t{\n\t\t// 0-1\n\t\tsequenceParser.addEntry(1,\n\t\t\t{TokenType::Integer, TokenType::Minus, TokenType::Integer},\n\t\t\t{INT64_C(0), INT64_C(1)} );\n\t\t// 0-1\n\t\tsequenceParser.addEntry(-1,\n\t\t\t{TokenType::Integer, TokenType::Minus, TokenType::NumberString},\n\t\t\t{INT64_C(0), L\"1m\"} );\n\t\t// 0:1\n\t\tsequenceParser.addEntry(1,\n\t\t\t{TokenType::Integer, TokenType::Colon, TokenType::Integer},\n\t\t\t{INT64_C(0), INT64_C(1)} );\n\t\t// 0:1\n\t\tsequenceParser.addEntry(-1,\n\t\t\t{TokenType::Integer, TokenType::Colon, TokenType::NumberString},\n\t\t\t{INT64_C(0), L\"1m\"} );\n\t\t// -1-1\n\t\tsequenceParser.addEntry(3,\n\t\t\t{TokenType::Minus, TokenType::Integer, TokenType::Minus, TokenType::Integer},\n\t\t\t{INT64_C(1), INT64_C(1)} );\n\t\t// -1-1m\n\t\tsequenceParser.addEntry(-3,\n\t\t\t{TokenType::Minus, TokenType::Integer, TokenType::Minus, TokenType::NumberString},\n\t\t\t{INT64_C(1), L\"1m\"} );\n\t\t// -1:1\n\t\tsequenceParser.addEntry(3,\n\t\t\t{TokenType::Minus, TokenType::Integer, TokenType::Colon, TokenType::Integer},\n\t\t\t{INT64_C(1), INT64_C(1)} );\n\t\t// -1:1m\n\t\tsequenceParser.addEntry(-3,\n\t\t\t{TokenType::Minus, TokenType::Integer, TokenType::Colon, TokenType::NumberString},\n\t\t\t{INT64_C(1), L\"1m\"} );\n\t}\n\n\tfor (int i = 0; i < 4; i++)\n\t{\n\t\tif (i != 0)\n\t\t{\n\t\t\tif (parser.nextToken().type != TokenType::Comma)\n\t\t\t\treturn false;\n\t\t}\n\n\t\tparser.eatToken();\n\n\t\tint num = 0;\n\t\tif (sequenceParser.parse(parser,num) == false)\n\t\t\treturn false;\n\n\t\t// m versions\n\t\tif (num < 0)\n\t\t{\n\t\t\tresult |= 1 << (8+i);\n\t\t\tnum = abs(num);\n\t\t}\n\n\t\tresult |= num << (2*i);\n\t}\n\n\treturn parser.nextToken().type == TokenType::RBrack;\n}\n\n\nbool MipsParser::decodeCop2BranchCondition(const std::wstring& text, size_t& pos, int& result)\n{\n\tif (pos+3 == text.size())\n\t{\n\t\tif (startsWith(text,L\"any\",pos))\n\t\t{\n\t\t\tresult = 4;\n\t\t\tpos += 3;\n\t\t\treturn true;\n\t\t}\n\t\tif (startsWith(text,L\"all\",pos))\n\t\t{\n\t\t\tresult = 5;\n\t\t\tpos += 3;\n\t\t\treturn true;\n\t\t}\n\t} else if (pos+1 == text.size())\n\t{\n\t\tswitch (text[pos++])\n\t\t{\n\t\tcase 'x':\n\t\tcase '0':\n\t\t\tresult = 0;\n\t\t\treturn true;\n\t\tcase 'y':\n\t\tcase '1':\n\t\t\tresult = 1;\n\t\t\treturn true;\n\t\tcase 'z':\n\t\tcase '2':\n\t\t\tresult = 2;\n\t\t\treturn true;\n\t\tcase 'w':\n\t\tcase '3':\n\t\t\tresult = 3;\n\t\t\treturn true;\n\t\tcase '4':\n\t\t\tresult = 4;\n\t\t\treturn true;\n\t\tcase '5':\n\t\t\tresult = 5;\n\t\t\treturn true;\n\t\t}\n\n\t\t// didn't match it\n\t\tpos--;\n\t}\n\n\treturn false;\n}\n\nbool MipsParser::parseCop2BranchCondition(Parser& parser, int& result)\n{\n\tconst Token& token = parser.nextToken();\n\n\tif (token.type == TokenType::Integer)\n\t{\n\t\tresult = (int) token.intValue;\n\t\treturn token.intValue <= 5;\n\t}\n\n\tif (token.type != TokenType::Identifier)\n\t\treturn false;\n\n\tsize_t pos = 0;\n\treturn decodeCop2BranchCondition(token.getStringValue(),pos,result);\n}\n\nbool MipsParser::parseWb(Parser& parser)\n{\n\tconst Token& token = parser.nextToken();\n\tif (token.type != TokenType::Identifier)\n\t\treturn false;\n\n\treturn token.getStringValue() == L\"wb\";\n}\n\nstatic bool decodeImmediateSize(const char*& encoding, MipsImmediateType& dest)\n{\n\tif (*encoding == 'h')\t// half float\n\t{\n\t\tencoding++;\n\t\tdest = MipsImmediateType::ImmediateHalfFloat;\n\t} else {\n\t\tint num = 0;\n\t\twhile (*encoding >= '0' && *encoding <= '9')\n\t\t{\n\t\t\tnum = num*10 + *encoding-'0';\n\t\t\tencoding++;\n\t\t}\n\n\t\tswitch (num)\n\t\t{\n\t\tcase 5:\n\t\t\tdest = MipsImmediateType::Immediate5;\n\t\t\tbreak;\n\t\tcase 7:\n\t\t\tdest = MipsImmediateType::Immediate7;\n\t\t\tbreak;\n\t\tcase 10:\n\t\t\tdest = MipsImmediateType::Immediate10;\n\t\t\tbreak;\n\t\tcase 16:\n\t\t\tdest = MipsImmediateType::Immediate16;\n\t\t\tbreak;\n\t\tcase 20:\n\t\t\tdest = MipsImmediateType::Immediate20;\n\t\t\tbreak;\n\t\tcase 25:\n\t\t\tdest = MipsImmediateType::Immediate25;\n\t\t\tbreak;\n\t\tcase 26:\n\t\t\tdest = MipsImmediateType::Immediate26;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nbool MipsParser::decodeVfpuType(const std::wstring& name, size_t& pos, int& dest)\n{\n\tif (pos >= name.size())\n\t\treturn false;\n\n\tswitch (name[pos++])\n\t{\n\tcase 's':\n\t\tdest = 0;\n\t\treturn true;\n\tcase 'p':\n\t\tdest = 1;\n\t\treturn true;\n\tcase 't':\n\t\tdest = 2;\n\t\treturn true;\n\tcase 'q':\n\t\tdest = 3;\n\t\treturn true;\n\t}\n\n\tpos--;\n\treturn false;\n}\n\nbool MipsParser::decodeOpcode(const std::wstring& name, const tMipsOpcode& opcode)\n{\n\tconst char* encoding = opcode.name;\n\tsize_t pos = 0;\n\n\tregisters.reset();\n\timmediate.reset();\n\topcodeData.reset();\n\thasFixedSecondaryImmediate = false;\n\n\twhile (*encoding != 0)\n\t{\n\t\tswitch (*encoding++)\n\t\t{\n\t\tcase 'S':\n\t\t\tCHECK(decodeVfpuType(name,pos,opcodeData.vfpuSize));\n\t\t\tbreak;\n\t\tcase 'B':\n\t\t\tCHECK(decodeCop2BranchCondition(name,pos,immediate.secondary.originalValue));\n\t\t\timmediate.secondary.type = MipsImmediateType::Cop2BranchType;\n\t\t\timmediate.secondary.value = immediate.secondary.originalValue;\n\t\t\thasFixedSecondaryImmediate = true;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tCHECK(pos < name.size());\n\t\t\tCHECK(*(encoding-1) == name[pos++]);\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn pos >= name.size();\n}\n\nvoid MipsParser::setOmittedRegisters(const tMipsOpcode& opcode)\n{\n\t// copy over omitted registers\n\tif (opcode.flags & MO_RSD)\n\t\tregisters.grd = registers.grs;\n\n\tif (opcode.flags & MO_RST)\n\t\tregisters.grt = registers.grs;\n\n\tif (opcode.flags & MO_RDT)\n\t\tregisters.grt = registers.grd;\n\n\tif (opcode.flags & MO_FRSD)\n\t\tregisters.frd = registers.frs;\n\n\tif (opcode.flags & MO_RSPVRSD)\n\t\tregisters.rspvrd = registers.rspvrs;\n}\n\nbool MipsParser::parseParameters(Parser& parser, const tMipsOpcode& opcode)\n{\n\tconst char* encoding = opcode.encoding;\n\n\t// initialize opcode variables\n\timmediate.primary.type = MipsImmediateType::None;\n\tif (!hasFixedSecondaryImmediate)\n\t\timmediate.secondary.type = MipsImmediateType::None;\n\n\tif (opcodeData.vfpuSize == -1)\n\t{\n\t\tif (opcode.flags & MO_VFPU_SINGLE)\n\t\t\topcodeData.vfpuSize = 0;\n\t\telse if (opcode.flags & MO_VFPU_PAIR)\n\t\t\topcodeData.vfpuSize = 1;\n\t\telse if (opcode.flags & MO_VFPU_TRIPLE)\n\t\t\topcodeData.vfpuSize = 2;\n\t\telse if (opcode.flags & MO_VFPU_QUAD)\n\t\t\topcodeData.vfpuSize = 3;\n\t}\n\n\t// parse parameters\n\tMipsRegisterValue tempRegister;\n\tint actualSize = opcodeData.vfpuSize;\n\n\twhile (*encoding != 0)\n\t{\n\t\tswitch (*encoding++)\n\t\t{\n\t\tcase 't':\t// register\n\t\t\tCHECK(parseRegister(parser,registers.grt));\n\t\t\tbreak;\n\t\tcase 'd':\t// register\n\t\t\tCHECK(parseRegister(parser,registers.grd));\n\t\t\tbreak;\n\t\tcase 's':\t// register\n\t\t\tCHECK(parseRegister(parser,registers.grs));\n\t\t\tbreak;\n\t\tcase 'T':\t// float register\n\t\t\tCHECK(parseFpuRegister(parser,registers.frt));\n\t\t\tbreak;\n\t\tcase 'D':\t// float register\n\t\t\tCHECK(parseFpuRegister(parser,registers.frd));\n\t\t\tbreak;\n\t\tcase 'S':\t// float register\n\t\t\tCHECK(parseFpuRegister(parser,registers.frs));\n\t\t\tbreak;\n\t\tcase 'f':\t// fpu control register\n\t\t\tCHECK(parseFpuControlRegister(parser,registers.frs));\n\t\t\tbreak;\n\t\tcase 'z':\t// cop0 register\n\t\t\tCHECK(parseCop0Register(parser,registers.grd));\n\t\t\tbreak;\n\t\tcase 'v':\t// psp vfpu reg\n\t\t\tif (*encoding == 'S')\n\t\t\t{\n\t\t\t\tencoding++;\n\t\t\t\tactualSize = 0;\n\t\t\t}\n\n\t\t\tswitch (*encoding++)\n\t\t\t{\n\t\t\tcase 's':\n\t\t\t\tCHECK(parseVfpuRegister(parser,registers.vrs,actualSize));\n\t\t\t\tCHECK(registers.vrs.type == MipsRegisterType::VfpuVector);\n\t\t\t\tif (opcode.flags & MO_VFPU_6BIT) CHECK(!(registers.vrs.num & 0x40));\n\t\t\t\tbreak;\n\t\t\tcase 't':\n\t\t\t\tCHECK(parseVfpuRegister(parser,registers.vrt,actualSize));\n\t\t\t\tCHECK(registers.vrt.type == MipsRegisterType::VfpuVector);\n\t\t\t\tif (opcode.flags & MO_VFPU_6BIT) CHECK(!(registers.vrt.num & 0x40));\n\t\t\t\tbreak;\n\t\t\tcase 'd':\n\t\t\t\tCHECK(parseVfpuRegister(parser,registers.vrd,actualSize));\n\t\t\t\tCHECK(registers.vrd.type == MipsRegisterType::VfpuVector);\n\t\t\t\tif (opcode.flags & MO_VFPU_6BIT) CHECK(!(registers.vrd.num & 0x40));\n\t\t\t\tbreak;\n\t\t\tcase 'c':\n\t\t\t\tCHECK(parseVfpuControlRegister(parser,registers.vrd));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'm':\t// vfpu matrix register\n\t\t\tswitch (*encoding++)\n\t\t\t{\n\t\t\tcase 's':\n\t\t\t\tCHECK(parseVfpuRegister(parser,registers.vrs,opcodeData.vfpuSize));\n\t\t\t\tCHECK(registers.vrs.type == MipsRegisterType::VfpuMatrix);\n\t\t\t\tif (opcode.flags & MO_TRANSPOSE_VS)\n\t\t\t\t\tregisters.vrs.num ^= 0x20;\n\t\t\t\tbreak;\n\t\t\tcase 't':\n\t\t\t\tCHECK(parseVfpuRegister(parser,registers.vrt,opcodeData.vfpuSize));\n\t\t\t\tCHECK(registers.vrt.type == MipsRegisterType::VfpuMatrix);\n\t\t\t\tbreak;\n\t\t\tcase 'd':\n\t\t\t\tCHECK(parseVfpuRegister(parser,registers.vrd,opcodeData.vfpuSize));\n\t\t\t\tCHECK(registers.vrd.type == MipsRegisterType::VfpuMatrix);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'V':\t// ps2 vector reg\n\t\t\tswitch (*encoding++)\n\t\t\t{\n\t\t\tcase 't':\t// register\n\t\t\t\tCHECK(parsePs2Cop2Register(parser,registers.ps2vrt));\n\t\t\t\tbreak;\n\t\t\tcase 'd':\t// register\n\t\t\t\tCHECK(parsePs2Cop2Register(parser,registers.ps2vrd));\n\t\t\t\tbreak;\n\t\t\tcase 's':\t// register\n\t\t\t\tCHECK(parsePs2Cop2Register(parser,registers.ps2vrs));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'g':\t// psx cop2 reg\n\t\t\tswitch (*encoding++)\n\t\t\t{\n\t\t\tcase 't':\t// gte data register\n\t\t\t\tCHECK(parsePsxCop2DataRegister(parser,registers.grt));\n\t\t\t\tbreak;\n\t\t\tcase 's':\t// gte data register\n\t\t\t\tCHECK(parsePsxCop2DataRegister(parser,registers.grd));\n\t\t\t\tbreak;\n\t\t\tcase 'c':\t// gte control register\n\t\t\t\tCHECK(parsePsxCop2ControlRegister(parser,registers.grd));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'r':\t// forced register\n\t\t\tCHECK(parseRegister(parser,tempRegister));\n\t\t\tCHECK(tempRegister.num == *encoding++);\n\t\t\tbreak;\n\t\tcase 'R':\t// rsp register\n\t\t\tswitch (*encoding++)\n\t\t\t{\n\t\t\tcase 'z':\t// cop0 register\n\t\t\t\tCHECK(parseRspCop0Register(parser,registers.grd));\n\t\t\t\tbreak;\n\t\t\tcase 'c':\t// vector control register\n\t\t\t\tCHECK(parseRspVectorControlRegister(parser,registers.grd));\n\t\t\t\tbreak;\n\t\t\tcase 't':\t// vector register\n\t\t\t\tCHECK(parseRspVectorRegister(parser,registers.rspvrt));\n\t\t\t\tbreak;\n\t\t\tcase 'd':\t// vector register\n\t\t\t\tCHECK(parseRspVectorRegister(parser,registers.rspvrd));\n\t\t\t\tbreak;\n\t\t\tcase 's':\t// vector register\n\t\t\t\tCHECK(parseRspVectorRegister(parser,registers.rspvrs));\n\t\t\t\tbreak;\n\t\t\tcase 'e':\t// vector element\n\t\t\t\tCHECK(parseRspVectorElement(parser,registers.rspve));\n\t\t\t\tbreak;\n\t\t\tcase 'l':\t// scalar element\n\t\t\t\tCHECK(parseRspScalarElement(parser,registers.rspve));\n\t\t\t\tbreak;\n\t\t\tcase 'm':\t// scalar destination element\n\t\t\t\tCHECK(parseRspScalarElement(parser,registers.rspvde));\n\t\t\t\tbreak;\n\t\t\tcase 'o':\t// byte offset element\n\t\t\t\tCHECK(parseRspOffsetElement(parser,registers.rspvealt));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'i':\t// primary immediate\n\t\t\tCHECK(parseImmediate(parser,immediate.primary.expression));\n\t\t\tallowFunctionCallExpression(*encoding != '(');\n\t\t\tCHECK(decodeImmediateSize(encoding,immediate.primary.type));\n\t\t\tallowFunctionCallExpression(true);\n\t\t\tbreak;\n\t\tcase 'j':\t// secondary immediate\n\t\t\tswitch (*encoding++)\n\t\t\t{\n\t\t\tcase 'c':\n\t\t\t\tCHECK(parseImmediate(parser,immediate.secondary.expression));\n\t\t\t\timmediate.secondary.type = MipsImmediateType::CacheOp;\n\t\t\t\tbreak;\n\t\t\tcase 'e':\n\t\t\t\tCHECK(parseImmediate(parser,immediate.secondary.expression));\n\t\t\t\timmediate.secondary.type = MipsImmediateType::Ext;\n\t\t\t\tbreak;\n\t\t\tcase 'i':\n\t\t\t\tCHECK(parseImmediate(parser,immediate.secondary.expression));\n\t\t\t\timmediate.secondary.type = MipsImmediateType::Ins;\n\t\t\t\tbreak;\n\t\t\tcase 'b':\n\t\t\t\tCHECK(parseCop2BranchCondition(parser,immediate.secondary.originalValue));\n\t\t\t\timmediate.secondary.type = MipsImmediateType::Cop2BranchType;\n\t\t\t\timmediate.secondary.value = immediate.secondary.originalValue;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'C':\t// vfpu condition\n\t\t\tCHECK(parseVfpuCondition(parser,opcodeData.vectorCondition));\n\t\t\tbreak;\n\t\tcase 'W':\t// vfpu argument\n\t\t\tswitch (*encoding++)\n\t\t\t{\n\t\t\tcase 's':\n\t\t\t\tCHECK(parseVpfxsParameter(parser,immediate.primary.originalValue));\n\t\t\t\timmediate.primary.value = immediate.primary.originalValue;\n\t\t\t\timmediate.primary.type = MipsImmediateType::Immediate20_0;\n\t\t\t\tbreak;\n\t\t\tcase 'd':\n\t\t\t\tCHECK(parseVpfxdParameter(parser,immediate.primary.originalValue));\n\t\t\t\timmediate.primary.value = immediate.primary.originalValue;\n\t\t\t\timmediate.primary.type = MipsImmediateType::Immediate16;\n\t\t\t\tbreak;\n\t\t\tcase 'c':\n\t\t\t\tCHECK(parseVcstParameter(parser,immediate.primary.originalValue));\n\t\t\t\timmediate.primary.value = immediate.primary.originalValue;\n\t\t\t\timmediate.primary.type = MipsImmediateType::Immediate5;\n\t\t\t\tbreak;\n\t\t\tcase 'r':\n\t\t\t\tCHECK(parseVfpuVrot(parser,immediate.primary.originalValue,opcodeData.vfpuSize));\n\t\t\t\timmediate.primary.value = immediate.primary.originalValue;\n\t\t\t\timmediate.primary.type = MipsImmediateType::Immediate5;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'w':\t// 'wb' characters\n\t\t\tCHECK(parseWb(parser));\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tCHECK(matchSymbol(parser,*(encoding-1)));\n\t\t\tbreak;\n\t\t}\n\t}\n\n\topcodeData.opcode = opcode;\n\tsetOmittedRegisters(opcode);\n\n\t// the next token has to be a separator, else the parameters aren't\n\t// completely parsed\n\n\treturn parser.nextToken().type == TokenType::Separator;\n\n}\n\nstd::unique_ptr<CMipsInstruction> MipsParser::parseOpcode(Parser& parser)\n{\n\tif (parser.peekToken().type != TokenType::Identifier)\n\t\treturn nullptr;\n\n\tconst Token &token = parser.nextToken();\n\n\tbool paramFail = false;\n\tconst MipsArchDefinition& arch = mipsArchs[Mips.GetVersion()];\n\tconst std::wstring stringValue = token.getStringValue();\n\n\tfor (int z = 0; MipsOpcodes[z].name != nullptr; z++)\n\t{\n\t\tif ((MipsOpcodes[z].archs & arch.supportSets) == 0)\n\t\t\tcontinue;\n\t\tif ((MipsOpcodes[z].archs & arch.excludeMask) != 0)\n\t\t\tcontinue;\n\n\t\tif ((MipsOpcodes[z].flags & MO_64BIT) && !(arch.flags & MO_64BIT))\n\t\t\tcontinue;\n\t\tif ((MipsOpcodes[z].flags & MO_FPU) && !(arch.flags & MO_FPU))\n\t\t\tcontinue;\n\t\tif ((MipsOpcodes[z].flags & MO_DFPU) && !(arch.flags & MO_DFPU))\n\t\t\tcontinue;\n\n\t\tif (decodeOpcode(stringValue,MipsOpcodes[z]) == true)\n\t\t{\n\t\t\tTokenizerPosition tokenPos = parser.getTokenizer()->getPosition();\n\n\t\t\tif (parseParameters(parser,MipsOpcodes[z]) == true)\n\t\t\t{\n\t\t\t\t// success, return opcode\n\t\t\t\treturn ::make_unique<CMipsInstruction>(opcodeData,immediate,registers);\n\t\t\t}\n\n\t\t\tparser.getTokenizer()->setPosition(tokenPos);\n\t\t\tparamFail = true;\n\t\t}\n\t}\n\n\tif (paramFail == true)\n\t\tparser.printError(token,L\"MIPS parameter failure\");\n\telse\n\t\tparser.printError(token,L\"Invalid MIPS opcode '%s'\",stringValue);\n\n\treturn nullptr;\n}\n\nbool MipsParser::parseMacroParameters(Parser& parser, const MipsMacroDefinition& macro)\n{\n\tconst wchar_t* encoding = (const wchar_t*) macro.args;\n\n\twhile (*encoding != 0)\n\t{\n\t\tswitch (*encoding++)\n\t\t{\n\t\tcase 't':\t// register\n\t\t\tCHECK(parseRegister(parser,registers.grt));\n\t\t\tbreak;\n\t\tcase 'd':\t// register\n\t\t\tCHECK(parseRegister(parser,registers.grd));\n\t\t\tbreak;\n\t\tcase 's':\t// register\n\t\t\tCHECK(parseRegister(parser,registers.grs));\n\t\t\tbreak;\n\t\tcase 'S':\t// register\n\t\t\tCHECK(parseFpuRegister(parser,registers.frs));\n\t\t\tbreak;\n\t\tcase 'i':\t// primary immediate\n\t\t\tallowFunctionCallExpression(*encoding != '(');\n\t\t\tCHECK(parseImmediate(parser,immediate.primary.expression));\n\t\t\tallowFunctionCallExpression(true);\n\t\t\tbreak;\n\t\tcase 'I':\t// secondary immediate\n\t\t\tallowFunctionCallExpression(*encoding != '(');\n\t\t\tCHECK(parseImmediate(parser,immediate.secondary.expression));\n\t\t\tallowFunctionCallExpression(true);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tCHECK(matchSymbol(parser,*(encoding-1)));\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// lw rx,imm is a prefix of lw rx,imm(ry)\n\tif (parser.peekToken().type == TokenType::LParen)\n\t\treturn false;\n\n\t// the next token has to be a separator, else the parameters aren't\n\t// completely parsed\n\treturn parser.nextToken().type == TokenType::Separator;\n}\n\nstd::unique_ptr<CAssemblerCommand> MipsParser::parseMacro(Parser& parser)\n{\n\tTokenizerPosition startPos = parser.getTokenizer()->getPosition();\n\n\t// Cannot be a reference (we eat below.)\n\tconst Token token = parser.peekToken();\n\tif (token.type != TokenType::Identifier)\n\t\treturn nullptr;\n\n\tparser.eatToken();\n\tconst std::wstring stringValue = token.getStringValue();\n\tfor (int z = 0; mipsMacros[z].name != nullptr; z++)\n\t{\n\t\tif (stringValue == mipsMacros[z].name)\n\t\t{\n\t\t\tTokenizerPosition tokenPos = parser.getTokenizer()->getPosition();\n\n\t\t\tif (parseMacroParameters(parser,mipsMacros[z]) == true)\n\t\t\t{\n\t\t\t\treturn mipsMacros[z].function(parser,registers,immediate,mipsMacros[z].flags);\n\t\t\t}\n\n\t\t\tparser.getTokenizer()->setPosition(tokenPos);\n\t\t}\n\t}\n\n\t// no matching macro found, restore state\n\tparser.getTokenizer()->setPosition(startPos);\n\treturn nullptr;\n}\n\nvoid MipsOpcodeFormatter::handleOpcodeName(const MipsOpcodeData& opData)\n{\n\tconst char* encoding = opData.opcode.name;\n\n\twhile (*encoding != 0)\n\t{\n\t\tswitch (*encoding++)\n\t\t{\n\t\tcase 'S':\n\t\t\tbuffer += \"sptq\"[opData.vfpuSize];\n\t\t\tbreak;\n\t\tcase 'B':\n\t\t\t// TODO\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbuffer += *(encoding-1);\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\nvoid MipsOpcodeFormatter::handleImmediate(MipsImmediateType type, unsigned int originalValue, unsigned int opcodeFlags)\n{\n\tswitch (type)\n\t{\n\tcase MipsImmediateType::ImmediateHalfFloat:\n\t\tbuffer += formatString(L\"%f\", bitsToFloat(originalValue));\n\t\tbreak;\n\tcase MipsImmediateType::Immediate16:\n\t\tif (!(opcodeFlags & MO_IPCR) && originalValue & 0x8000)\n\t\t\tbuffer += formatString(L\"-0x%X\", 0x10000-(originalValue & 0xFFFF));\n\t\telse\n\t\t\tbuffer += formatString(L\"0x%X\", originalValue);\n\t\tbreak;\n\tdefault:\n\t\tbuffer += formatString(L\"0x%X\", originalValue);\n\t\tbreak;\n\t}\n}\n\nvoid MipsOpcodeFormatter::handleOpcodeParameters(const MipsOpcodeData& opData, const MipsRegisterData& regData,\n\tconst MipsImmediateData& immData)\n{\n\tconst char* encoding = opData.opcode.encoding;\n\n\tMipsImmediateType type;\n\twhile (*encoding != 0)\n\t{\n\t\tswitch (*encoding++)\n\t\t{\n\t\tcase 'r':\t// forced register\n\t\t\tbuffer += formatString(L\"r%d\",*encoding);\n\t\t\tencoding += 1;\n\t\t\tbreak;\n\t\tcase 's':\t// register\n\t\t\tbuffer += regData.grs.name;\n\t\t\tbreak;\n\t\tcase 'd':\t// register\n\t\t\tbuffer += regData.grd.name;\n\t\t\tbreak;\n\t\tcase 't':\t// register\n\t\t\tbuffer += regData.grt.name;\n\t\t\tbreak;\n\t\tcase 'S':\t// fpu register\n\t\t\tbuffer += regData.frs.name;\n\t\t\tbreak;\n\t\tcase 'D':\t// fpu register\n\t\t\tbuffer += regData.frd.name;\n\t\t\tbreak;\n\t\tcase 'T':\t// fpu register\n\t\t\tbuffer += regData.frt.name;\n\t\t\tbreak;\n\t\tcase 'v':\t// psp vfpu reg\n\t\tcase 'm':\t// vfpu matrix register\n\t\t\tswitch (*encoding++)\n\t\t\t{\n\t\t\tcase 'd':\n\t\t\t\tbuffer += regData.vrd.name;\n\t\t\t\tbreak;\n\t\t\tcase 's':\n\t\t\t\tbuffer += regData.vrs.name;\n\t\t\t\tbreak;\n\t\t\tcase 't':\n\t\t\t\tbuffer += regData.vrt.name;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'V':\t// ps2 vector reg\n\t\t\tswitch (*encoding++)\n\t\t\t{\n\t\t\tcase 'd':\n\t\t\t\tbuffer += regData.ps2vrd.name;\n\t\t\t\tbreak;\n\t\t\tcase 's':\n\t\t\t\tbuffer += regData.ps2vrs.name;\n\t\t\t\tbreak;\n\t\t\tcase 't':\n\t\t\t\tbuffer += regData.ps2vrt.name;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'i':\t// primary immediate\n\t\t\tdecodeImmediateSize(encoding,type);\n\t\t\thandleImmediate(immData.primary.type,immData.primary.originalValue,opData.opcode.flags);\n\t\t\tbreak;\n\t\tcase 'j':\t// secondary immediate\n\t\t\thandleImmediate(immData.secondary.type,immData.secondary.originalValue, opData.opcode.flags);\n\t\t\tencoding++;\n\t\t\tbreak;\n\t\tcase 'C':\t// vfpu condition\n\t\tcase 'W':\t// vfpu argument\n\t\t\t// TODO\n\t\t\tbreak;\n\t\tcase 'w':\t// 'wb' characters\n\t\t\tbuffer += L\"wb\";\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbuffer += *(encoding-1);\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\nconst std::wstring& MipsOpcodeFormatter::formatOpcode(const MipsOpcodeData& opData, const MipsRegisterData& regData,\n\tconst MipsImmediateData& immData)\n{\n\tbuffer = L\"   \";\n\thandleOpcodeName(opData);\n\n\twhile (buffer.size() < 11)\n\t\tbuffer += ' ';\n\n\thandleOpcodeParameters(opData,regData,immData);\n\treturn buffer;\n}\n\n// file: Archs/MIPS/PsxRelocator.cpp\n#include <map>\n\nstruct PsxLibEntry\n{\n\tstd::wstring name;\n\tByteArray data;\n};\n\nconst unsigned char psxObjectFileMagicNum[6] = { 'L', 'N', 'K', '\\x02', '\\x2E', '\\x07' };\n\nstd::vector<PsxLibEntry> loadPsxLibrary(const std::wstring& inputName)\n{\n\tByteArray input = ByteArray::fromFile(inputName);\n\tstd::vector<PsxLibEntry> result;\n\n\tif (input.size() == 0)\n\t\treturn result;\n\n\tif (memcmp(input.data(),psxObjectFileMagicNum,sizeof(psxObjectFileMagicNum)) == 0)\n\t{\n\t\tPsxLibEntry entry;\n\t\tentry.name = getFileNameFromPath(inputName);\n\t\tentry.data = input;\n\t\tresult.push_back(entry);\n\t\treturn result;\n\t}\n\n\tif (memcmp(input.data(),\"LIB\\x01\",4) != 0)\n\t\treturn result;\n\n\tsize_t pos = 4;\n\twhile (pos < input.size())\n\t{\n\t\tPsxLibEntry entry;\n\n\t\tfor (int i = 0; i < 16 && input[pos+i] != ' '; i++)\n\t\t{\n\t\t\tentry.name += input[pos+i];\n\t\t}\n\n\t\tint size = input.getDoubleWord(pos+16);\n\t\tint skip = 20;\n\n\t\twhile (input[pos+skip] != 0)\n\t\t{\n\t\t\tskip += 1+input[pos+skip];\n\t\t}\n\n\t\tskip++;\n\n\t\tentry.data = input.mid(pos+skip,size-skip);\n\t\tpos += size;\n\n\t\tresult.push_back(entry);\n\t}\n\n\treturn result;\n}\n\nsize_t PsxRelocator::loadString(ByteArray& data, size_t pos, std::wstring& dest)\n{\n\tdest = L\"\";\n\tint len = data[pos++];\n\n\tfor (int i = 0; i < len; i++)\n\t{\n\t\tdest += data[pos++];\n\t}\n\n\treturn len+1;\n}\n\nbool PsxRelocator::parseObject(ByteArray data, PsxRelocatorFile& dest)\n{\n\tif (memcmp(data.data(),psxObjectFileMagicNum,sizeof(psxObjectFileMagicNum)) != 0)\n\t\treturn false;\n\n\tsize_t pos = 6;\n\n\tstd::vector<PsxSegment>& segments = dest.segments;\n\tstd::vector<PsxSymbol>& syms = dest.symbols;\n\n\tint activeSegment = -1;\n\tint lastSegmentPartStart = -1;\n\twhile (pos < data.size())\n\t{\n\t\tswitch (data[pos])\n\t\t{\n\t\tcase 0x10:\t// segment definition\n\t\t\t{\n\t\t\t\tPsxSegment seg;\n\t\t\t\tseg.id = data.getDoubleWord(pos+1);\n\t\t\t\tsegments.push_back(seg);\n\t\t\t\tpos += 5;\n\n\t\t\t\tif (data[pos] != 8)\n\t\t\t\t\treturn false;\n\n\t\t\t\tstd::wstring& name = segments[segments.size()-1].name;\n\t\t\t\tpos += 1 + loadString(data,pos+1,name);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 0x14:\t// group?\n\t\t\tpos += data[pos+4]+5;\n\t\t\tbreak;\n\t\tcase 0x1C:\t// source file name\n\t\t\tpos += data[pos+3]+4;\n\t\t\tbreak;\n\n\t\tcase 0x06:\t// set segment id\n\t\t\t{\n\t\t\t\tint id = data.getWord(pos+1);\n\t\t\t\tpos += 3;\n\n\t\t\t\tint num = -1;\n\t\t\t\tfor (size_t i = 0; i < segments.size(); i++)\n\t\t\t\t\t{\n\t\t\t\t\tif (segments[i].id == id)\n\t\t\t\t\t{\n\t\t\t\t\t\tnum = (int) i;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tactiveSegment = num;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 0x02:\t// append to data segment\n\t\t\t{\n\t\t\t\tint size = data.getWord(pos+1);\n\t\t\t\tpos += 3;\n\n\t\t\t\tByteArray d = data.mid(pos,size);\n\t\t\t\tpos += size;\n\n\t\t\t\tlastSegmentPartStart = (int) segments[activeSegment].data.size();\n\t\t\t\tsegments[activeSegment].data.append(d);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 0x08:\t// append zeroes data segment\n\t\t\t{\n\t\t\t\tint size = data.getWord(pos+1);\n\t\t\t\tpos += 3;\n\n\t\t\t\tByteArray d;\n\t\t\t\td.reserveBytes(size);\n\t\t\t\tsegments[activeSegment].data.append(d);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 0x0A:\t// relocation data\n\t\t\t{\n\t\t\t\tint type = data[pos+1];\n\t\t\t\tpos += 2;\n\n\t\t\t\tPsxRelocation rel;\n\t\t\t\trel.relativeOffset = 0;\n\t\t\t\trel.filePos = (int) pos-2;\n\n\t\t\t\tswitch (type)\n\t\t\t\t{\n\t\t\t\tcase 0x10:\t// 32 bit word\n\t\t\t\t\trel.type = PsxRelocationType::WordLiteral;\n\t\t\t\t\trel.segmentOffset = data.getWord(pos);\n\t\t\t\t\tpos += 2;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x4A:\t// jal\n\t\t\t\t\trel.type = PsxRelocationType::FunctionCall;\n\t\t\t\t\trel.segmentOffset = data.getWord(pos);\n\t\t\t\t\tpos += 2;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x52:\t// upper immerdiate\n\t\t\t\t\trel.type = PsxRelocationType::UpperImmediate;\n\t\t\t\t\trel.segmentOffset = data.getWord(pos);\n\t\t\t\t\tpos += 2;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x54:\t// lower immediate (add)\n\t\t\t\t\trel.type = PsxRelocationType::LowerImmediate;\n\t\t\t\t\trel.segmentOffset = data.getWord(pos);\n\t\t\t\t\tpos += 2;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\trel.segmentOffset += lastSegmentPartStart;\ncheckothertype:\n\t\t\t\tint otherType = data[pos++];\n\t\t\t\tswitch (otherType)\n\t\t\t\t{\n\t\t\t\tcase 0x02:\t// reference to symbol with id num\n\t\t\t\t\trel.refType = PsxRelocationRefType::SymblId;\n\t\t\t\t\trel.referenceId = data.getWord(pos);\n\t\t\t\t\tpos += 2;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x2C:\t// ref to other segment?\n\t\t\t\t\trel.refType = PsxRelocationRefType::SegmentOffset;\n\n\t\t\t\t\tswitch (data[pos++])\n\t\t\t\t\t{\n\t\t\t\t\tcase 0x00:\n\t\t\t\t\t\trel.relativeOffset = data.getDoubleWord(pos);\n\t\t\t\t\t\tpos += 4;\n\t\t\t\t\t\tgoto checkothertype;\n\t\t\t\t\tcase 0x04:\n\t\t\t\t\t\trel.referenceId = data.getWord(pos);\t// segment id\n\t\t\t\t\t\tpos += 2;\n\n\t\t\t\t\t\tif (data[pos++] != 0x00)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\trel.referencePos = data.getDoubleWord(pos);\n\t\t\t\t\t\tpos += 4;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x2E:\t// negative ref?\n\t\t\t\t\trel.refType = PsxRelocationRefType::SegmentOffset;\n\n\t\t\t\t\tswitch (data[pos++])\n\t\t\t\t\t{\n\t\t\t\t\tcase 0x00:\n\t\t\t\t\t\trel.relativeOffset = -data.getDoubleWord(pos);\n\t\t\t\t\t\tpos += 4;\n\t\t\t\t\t\tgoto checkothertype;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tsegments[activeSegment].relocations.push_back(rel);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 0x12:\t// internal symbol\n\t\t\t{\n\t\t\t\tPsxSymbol sym;\n\t\t\t\tsym.type = PsxSymbolType::Internal;\n\t\t\t\tsym.segment = data.getWord(pos+1);\n\t\t\t\tsym.offset = data.getDoubleWord(pos+3);\n\t\t\t\tpos += 7 + loadString(data,pos+7,sym.name);\n\t\t\t\tsyms.push_back(sym);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 0x0E:\t// external symbol\n\t\t\t{\n\t\t\t\tPsxSymbol sym;\n\t\t\t\tsym.type = PsxSymbolType::External;\n\t\t\t\tsym.id = data.getWord(pos+1);\n\t\t\t\tpos += 3 + loadString(data,pos+3,sym.name);\n\t\t\t\tsyms.push_back(sym);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 0x30:\t// bss symbol?\n\t\t\t{\n\t\t\t\tPsxSymbol sym;\n\t\t\t\tsym.type = PsxSymbolType::BSS;\n\t\t\t\tsym.id = data.getWord(pos+1);\n\t\t\t\tsym.segment = data.getWord(pos+3);\n\t\t\t\tsym.size = data.getDoubleWord(pos+5);\n\t\t\t\tpos += 9 + loadString(data,pos+9,sym.name);\n\t\t\t\tsyms.push_back(sym);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 0x0C:\t// internal with id\n\t\t\t{\n\t\t\t\tPsxSymbol sym;\n\t\t\t\tsym.type = PsxSymbolType::InternalID;\n\t\t\t\tsym.id = data.getWord(pos+1);\n\t\t\t\tsym.segment = data.getWord(pos+3);\n\t\t\t\tsym.offset = data.getDoubleWord(pos+5);\n\t\t\t\tpos += 9 + loadString(data,pos+9,sym.name);\n\t\t\t\tsyms.push_back(sym);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 0x4A:\t// function\n\t\t\t{\n\t\t\t\tPsxSymbol sym;\n\t\t\t\tsym.type = PsxSymbolType::Function;\n\t\t\t\tsym.segment = data.getWord(pos+1);\n\t\t\t\tsym.offset = data.getDoubleWord(pos+3);\n\t\t\t\tpos += 0x1D + loadString(data,pos+0x1D,sym.name);\n\t\t\t\tsyms.push_back(sym);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 0x4C:\t// function size\n\t\t\tpos += 11;\n\t\t\tbreak;\n\t\tcase 0x3C:\t// ??\n\t\t\tpos += 3;\n\t\t\tbreak;\n\t\tcase 0x00:\t// ??\n\t\t\tpos++;\n\t\t\tbreak;\n\t\tcase 0x32:\t// ??\n\t\t\tpos += 3;\n\t\t\tbreak;\n\t\tcase 0x3A:\t// ??\n\t\t\tpos += 9;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nbool PsxRelocator::init(const std::wstring& inputName)\n{\n\tauto inputFiles = loadPsxLibrary(inputName);\n\tif (inputFiles.size() == 0)\n\t{\n\t\tLogger::printError(Logger::Error,L\"Could not load library\");\n\t\treturn false;\n\t}\n\n\treloc = new MipsElfRelocator();\n\n\tfor (PsxLibEntry& entry: inputFiles)\n\t{\n\t\tPsxRelocatorFile file;\n\t\tfile.name = entry.name;\n\n\t\tif (parseObject(entry.data,file) == false)\n\t\t{\n\t\t\tLogger::printError(Logger::Error,L\"Could not load object file %s\",entry.name);\n\t\t\treturn false;\n\t\t}\n\n\t\t// init symbols\n\t\tfor (PsxSymbol& sym: file.symbols)\n\t\t{\n\t\t\tstd::wstring lowered = sym.name;\n\t\t\tstd::transform(lowered.begin(), lowered.end(), lowered.begin(), ::towlower);\n\n\t\t\tsym.label = Global.symbolTable.getLabel(lowered,-1,-1);\n\t\t\tif (sym.label == nullptr)\n\t\t\t{\n\t\t\t\tLogger::printError(Logger::Error,L\"Invalid label name \\\"%s\\\"\",sym.name);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (sym.label->isDefined() && sym.type != PsxSymbolType::External)\n\t\t\t{\n\t\t\t\tLogger::printError(Logger::Error,L\"Label \\\"%s\\\" already defined\",sym.name);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tsym.label->setOriginalName(sym.name);\n\t\t}\n\n\t\tfiles.push_back(file);\n\t}\n\n\treturn true;\n}\n\nbool PsxRelocator::relocateFile(PsxRelocatorFile& file, int& relocationAddress)\n{\n\tstd::map<int,int> relocationOffsets;\n\tstd::map<int,int> symbolOffsets;\n\tint start = relocationAddress;\n\n\t// assign addresses to segments\n\tfor (PsxSegment& seg: file.segments)\n\t{\n\t\tint index = seg.id;\n\t\tsize_t size = seg.data.size();\n\n\t\trelocationOffsets[index] = relocationAddress;\n\t\trelocationAddress += (int) size;\n\n\t\twhile (relocationAddress % 4)\n\t\t\trelocationAddress++;\n\t}\n\n\t// parse/add/relocate symbols\n\tbool error = false;\n\tfor (PsxSymbol& sym: file.symbols)\n\t{\n\t\tint pos;\n\t\tswitch (sym.type)\n\t\t{\n\t\tcase PsxSymbolType::Internal:\n\t\tcase PsxSymbolType::Function:\n\t\t\tsym.label->setValue(relocationOffsets[sym.segment]+sym.offset);\n\t\t\tsym.label->setDefined(true);\n\t\t\tbreak;\n\t\tcase PsxSymbolType::InternalID:\n\t\t\tpos = relocationOffsets[sym.segment]+sym.offset;\n\t\t\tsym.label->setValue(pos);\n\t\t\tsym.label->setDefined(true);\n\t\t\tsymbolOffsets[sym.id] = pos;\n\t\t\tbreak;\n\t\tcase PsxSymbolType::BSS:\n\t\t\tsym.label->setValue(relocationAddress);\n\t\t\tsym.label->setDefined(true);\n\t\t\tsymbolOffsets[sym.id] = relocationAddress;\n\t\t\trelocationAddress += sym.size;\n\n\t\t\twhile (relocationAddress % 4)\n\t\t\t\trelocationAddress++;\n\t\t\tbreak;\n\t\tcase PsxSymbolType::External:\n\t\t\tif (sym.label->isDefined() == false)\n\t\t\t{\n\t\t\t\tLogger::queueError(Logger::Error,L\"Undefined external symbol %s in file %s\",sym.name,file.name);\n\t\t\t\terror = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tsymbolOffsets[sym.id] = (int) sym.label->getValue();\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tif (error)\n\t\treturn false;\n\n\tsize_t dataStart = outputData.size();\n\toutputData.reserveBytes(relocationAddress-start);\n\n\t// load code and data\n\tfor (PsxSegment& seg: file.segments)\n\t{\n\t\t// relocate\n\t\tByteArray sectionData = seg.data;\n\n\t\tstd::vector<RelocationAction> relocationActions;\n\t\tfor (PsxRelocation& rel: seg.relocations)\n\t\t{\n\t\t\tRelocationData relData;\n\t\t\tint pos = rel.segmentOffset;\n\t\t\trelData.opcodeOffset = pos;\n\t\t\trelData.opcode = sectionData.getDoubleWord(pos);\n\n\t\t\tswitch (rel.refType)\n\t\t\t{\n\t\t\tcase PsxRelocationRefType::SymblId:\n\t\t\t\trelData.relocationBase = symbolOffsets[rel.referenceId]+rel.relativeOffset;\n\t\t\t\tbreak;\n\t\t\tcase PsxRelocationRefType::SegmentOffset:\n\t\t\t\trelData.relocationBase = relocationOffsets[rel.referenceId] + rel.referencePos+rel.relativeOffset;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tstd::vector<std::wstring> errors;\n\t\t\tbool result = false;\n\n\t\t\tswitch (rel.type)\n\t\t\t{\n\t\t\tcase PsxRelocationType::WordLiteral:\n\t\t\t\tresult = reloc->relocateOpcode(R_MIPS_32,relData, relocationActions, errors);\n\t\t\t\tbreak;\n\t\t\tcase PsxRelocationType::UpperImmediate:\n\t\t\t\tresult = reloc->relocateOpcode(R_MIPS_HI16,relData, relocationActions, errors);\n\t\t\t\tbreak;\n\t\t\tcase PsxRelocationType::LowerImmediate:\n\t\t\t\tresult = reloc->relocateOpcode(R_MIPS_LO16,relData, relocationActions, errors);\n\t\t\t\tbreak;\n\t\t\tcase PsxRelocationType::FunctionCall:\n\t\t\t\tresult = reloc->relocateOpcode(R_MIPS_26,relData, relocationActions, errors);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (!result)\n\t\t\t{\n\t\t\t\tfor (const std::wstring& error : errors)\n\t\t\t\t{\n\t\t\t\t\tLogger::queueError(Logger::Error, error);\n\t\t\t\t}\n\t\t\t\terror = true;\n\t\t\t}\n\t\t}\n\n\t\t// finish any dangling relocations\n\t\tstd::vector<std::wstring> errors;\n\t\tif (!reloc->finish(relocationActions, errors))\n\t\t{\n\t\t\tfor (const std::wstring& error : errors)\n\t\t\t{\n\t\t\t\tLogger::queueError(Logger::Error, error);\n\t\t\t}\n\t\t\terror = true;\n\t\t}\n\n\t\t// now actually write the relocated values\n\t\tfor (const RelocationAction& action : relocationActions)\n\t\t{\n\t\t\tsectionData.replaceDoubleWord(action.offset, action.newValue);\n\t\t}\n\n\t\tsize_t arrayStart = dataStart+relocationOffsets[seg.id]-start;\n\t\tmemcpy(outputData.data(arrayStart),sectionData.data(),sectionData.size());\n\t}\n\n\treturn !error;\n}\n\nbool PsxRelocator::relocate(int& memoryAddress)\n{\n\tint oldCrc = getCrc32(outputData.data(),outputData.size());\n\toutputData.clear();\n\tdataChanged = false;\n\n\tbool error = false;\n\tint start = memoryAddress;\n\n\tfor (PsxRelocatorFile& file: files)\n\t{\n\t\tif (relocateFile(file,memoryAddress) == false)\n\t\t\terror = true;\n\t}\n\n\tint newCrc = getCrc32(outputData.data(),outputData.size());\n\tif (oldCrc != newCrc)\n\t\tdataChanged = true;\n\n\tmemoryAddress -= start;\n\treturn !error;\n}\n\n\nvoid PsxRelocator::writeSymbols(SymbolData& symData) const\n{\n\tfor (const PsxRelocatorFile& file: files)\n\t{\n\t\tfor (const PsxSymbol& sym: file.symbols)\n\t\t{\n\t\t\tif (sym.type != PsxSymbolType::External)\n\t\t\t\tsymData.addLabel(sym.label->getValue(),sym.name.c_str());\n\t\t}\n\t}\n}\n\n//\n// DirectivePsxObjImport\n//\n\nDirectivePsxObjImport::DirectivePsxObjImport(const std::wstring& fileName)\n{\n\tif (rel.init(fileName))\n\t{\n\t}\n}\n\nbool DirectivePsxObjImport::Validate()\n{\n\tint memory = (int) g_fileManager->getVirtualAddress();\n\trel.relocate(memory);\n\tg_fileManager->advanceMemory(memory);\n\treturn rel.hasDataChanged();\n}\n\nvoid DirectivePsxObjImport::Encode() const\n{\n\tconst ByteArray& data = rel.getData();\n\tg_fileManager->write(data.data(),data.size());\n}\n\nvoid DirectivePsxObjImport::writeSymData(SymbolData& symData) const\n{\n\trel.writeSymbols(symData);\n}\n\n// file: Archs/Architecture.cpp\n\nCInvalidArchitecture InvalidArchitecture;\n\nArchitectureCommand::ArchitectureCommand(const std::wstring& tempText, const std::wstring& symText)\n{\n\tthis->tempText = tempText;\n\tthis->symText = symText;\n\tthis->endianness = Arch->getEndianness();\n}\n\nbool ArchitectureCommand::Validate()\n{\n\tposition = g_fileManager->getVirtualAddress();\n\tg_fileManager->setEndianness(endianness);\n\treturn false;\n}\n\nvoid ArchitectureCommand::Encode() const\n{\n\tg_fileManager->setEndianness(endianness);\n}\n\nvoid ArchitectureCommand::writeTempData(TempData& tempData) const\n{\n\tif (tempText.size() != 0)\n\t{\n\t\tstd::wstringstream stream(tempText);\n\n\t\tstd::wstring line;\n\t\twhile (std::getline(stream,line,L'\\n'))\n\t\t{\n\t\t\tif (line.size() != 0)\n\t\t\t\ttempData.writeLine(position,line);\n\t\t}\n\t}\n}\n\nvoid ArchitectureCommand::writeSymData(SymbolData& symData) const\n{\n\t// TODO: find a less ugly way to check for undefined memory positions\n\tif (position == -1)\n\t\treturn;\n\n\tif (symText.size() != 0)\n\t\tsymData.addLabel(position,symText);\n}\n\n\nvoid CInvalidArchitecture::NextSection()\n{\n\tLogger::printError(Logger::FatalError,L\"No architecture specified\");\n}\n\nvoid CInvalidArchitecture::Pass2()\n{\n\tLogger::printError(Logger::FatalError,L\"No architecture specified\");\n}\n\nvoid CInvalidArchitecture::Revalidate()\n{\n\tLogger::printError(Logger::FatalError,L\"No architecture specified\");\n}\n\nstd::unique_ptr<IElfRelocator> CInvalidArchitecture::getElfRelocator()\n{\n\tLogger::printError(Logger::FatalError,L\"No architecture specified\");\n\treturn nullptr;\n}\n\n\n// file: Commands/CAssemblerCommand.cpp\n\nCAssemblerCommand::CAssemblerCommand()\n{\n\tFileNum = Global.FileInfo.FileNum;\n\tFileLine = Global.FileInfo.LineNumber;\n\tsection = Global.Section;\n}\n\nvoid CAssemblerCommand::applyFileInfo()\n{\n\tGlobal.FileInfo.FileNum = FileNum;\n\tGlobal.FileInfo.LineNumber = FileLine;\n}\n\n// file: Commands/CAssemblerLabel.h\n\nclass Label;\n\nclass CAssemblerLabel: public CAssemblerCommand\n{\npublic:\n\tCAssemblerLabel(const std::wstring& name, const std::wstring& originalName);\n\tCAssemblerLabel(const std::wstring& name, const std::wstring& originalName, Expression& value);\n\tvirtual bool Validate();\n\tvirtual void Encode() const;\n\tvirtual void writeTempData(TempData& tempData) const;\n\tvirtual void writeSymData(SymbolData& symData) const;\nprivate:\n\tExpression labelValue;\n\tstd::shared_ptr<Label> label;\n\tbool defined;\n};\n\nclass CDirectiveFunction: public CAssemblerCommand\n{\npublic:\n\tCDirectiveFunction(const std::wstring& name, const std::wstring& originalName);\n\tvirtual bool Validate();\n\tvirtual void Encode() const;\n\tvirtual void writeTempData(TempData& tempData) const;\n\tvirtual void writeSymData(SymbolData& symData) const;\n\tvoid setContent(std::unique_ptr<CAssemblerCommand> content) { this->content = std::move(content); }\nprivate:\n\tstd::unique_ptr<CAssemblerLabel> label;\n\tstd::unique_ptr<CAssemblerCommand> content;\n\tint64_t start, end;\n};\n\n// file: Commands/CAssemblerLabel.cpp\n\nCAssemblerLabel::CAssemblerLabel(const std::wstring& name, const std::wstring& originalName)\n{\n\tthis->defined = false;\n\tthis->label = nullptr;\n\n\tif (Global.symbolTable.isLocalSymbol(name) == false)\n\t\tupdateSection(++Global.Section);\n\n\tlabel = Global.symbolTable.getLabel(name, FileNum, getSection());\n\tif (label == nullptr)\n\t{\n\t\tLogger::printError(Logger::Error, L\"Invalid label name \\\"%s\\\"\", name);\n\t\treturn;\n\t}\n\n\tlabel->setOriginalName(originalName);\n\n\t// does this need to be in validate?\n\tif (label->getUpdateInfo())\n\t{\n#ifdef ARMIPS_ARM\n\t\tif (Arch == &Arm && Arm.GetThumbMode())\n\t\t\tlabel->setInfo(1);\n\t\telse\n#endif\n\t\t\tlabel->setInfo(0);\n\t}\n}\n\nCAssemblerLabel::CAssemblerLabel(const std::wstring& name, const std::wstring& originalName, Expression& value)\n\t: CAssemblerLabel(name,originalName)\n{\n\tlabelValue = value;\n}\n\nbool CAssemblerLabel::Validate()\n{\n\tbool result = false;\n\tif (defined == false)\n\t{\n\t\tif (label->isDefined())\n\t\t{\n\t\t\tLogger::queueError(Logger::Error, L\"Label \\\"%s\\\" already defined\", label->getName());\n\t\t\treturn false;\n\t\t}\n\n\t\tlabel->setDefined(true);\n\t\tdefined = true;\n\t\tresult = true;\n\t}\n\n\tbool hasPhysicalValue = false;\n\tint64_t virtualValue = 0;\n\tint64_t physicalValue = 0;\n\n\tif (labelValue.isLoaded())\n\t{\n\t\t// label value is given by expression\n\t\tif (labelValue.evaluateInteger(virtualValue) == false)\n\t\t{\n\t\t\tLogger::printError(Logger::Error, L\"Invalid expression\");\n\t\t\treturn result;\n\t\t}\n\t} else {\n\t\t// label value is given by current address\n\t\tvirtualValue = g_fileManager->getVirtualAddress();\n\t\tphysicalValue = g_fileManager->getPhysicalAddress();\n\t\thasPhysicalValue = true;\n\t}\n\n\tif (label->getValue() != virtualValue)\n\t{\n\t\tlabel->setValue(virtualValue);\n\t\tresult = true;\n\t}\n\n\tif (hasPhysicalValue && (!label->hasPhysicalValue() || physicalValue != label->getPhysicalValue()))\n\t{\n\t\tlabel->setPhysicalValue(physicalValue);\n\t\tresult = true;\n\t}\n\n\treturn result;\n}\n\nvoid CAssemblerLabel::Encode() const\n{\n\n}\n\nvoid CAssemblerLabel::writeTempData(TempData& tempData) const\n{\n\tif (Global.symbolTable.isGeneratedLabel(label->getName()) == false)\n\t\ttempData.writeLine(label->getValue(),formatString(L\"%s:\",label->getName()));\n}\n\nvoid CAssemblerLabel::writeSymData(SymbolData& symData) const\n{\n\t// TODO: find a less ugly way to check for undefined memory positions\n\tif (label->getValue() == -1 || Global.symbolTable.isGeneratedLabel(label->getName()))\n\t\treturn;\n\n\tsymData.addLabel(label->getValue(),label->getOriginalName());\n}\n\n\n\n\nCDirectiveFunction::CDirectiveFunction(const std::wstring& name, const std::wstring& originalName)\n{\n\tthis->label = ::make_unique<CAssemblerLabel>(name,originalName);\n\tthis->content = nullptr;\n\tthis->start = this->end = 0;\n}\n\nbool CDirectiveFunction::Validate()\n{\n\tstart = g_fileManager->getVirtualAddress();\n\n\tlabel->applyFileInfo();\n\tbool result = label->Validate();\n\n\tcontent->applyFileInfo();\n\tif (content->Validate())\n\t\tresult = true;\n\n\tend = g_fileManager->getVirtualAddress();\n\treturn result;\n}\n\nvoid CDirectiveFunction::Encode() const\n{\n\tlabel->Encode();\n\tcontent->Encode();\n}\n\nvoid CDirectiveFunction::writeTempData(TempData& tempData) const\n{\n\tlabel->writeTempData(tempData);\n\tcontent->applyFileInfo();\n\tcontent->writeTempData(tempData);\n}\n\nvoid CDirectiveFunction::writeSymData(SymbolData& symData) const\n{\n\tsymData.startFunction(start);\n\tlabel->writeSymData(symData);\n\tcontent->writeSymData(symData);\n\tsymData.endFunction(end);\n}\n\n// file: Commands/CDirectiveArea.h\n\nclass CDirectiveArea: public CAssemblerCommand\n{\npublic:\n\tCDirectiveArea(Expression& size);\n\tvirtual bool Validate();\n\tvirtual void Encode() const;\n\tvirtual void writeTempData(TempData& tempData) const;\n\tvirtual void writeSymData(SymbolData& symData) const;\n\tvoid setFillExpression(Expression& exp);\n\tvoid setContent(std::unique_ptr<CAssemblerCommand> content) { this->content = std::move(content); }\nprivate:\n\tint64_t position;\n\tExpression sizeExpression;\n\tint64_t areaSize;\n\tint64_t contentSize;\n\tExpression fillExpression;\n\tint8_t fillValue;\n\tstd::unique_ptr<CAssemblerCommand> content;\n};\n\n// file: Commands/CDirectiveArea.cpp\n#include <algorithm>\n\nCDirectiveArea::CDirectiveArea(Expression& size)\n{\n\tthis->areaSize = 0;\n\tthis->contentSize = 0;\n\tthis->fillValue = 0;\n\n\tthis->sizeExpression = size;\n\tthis->content = nullptr;\n}\n\nvoid CDirectiveArea::setFillExpression(Expression& exp)\n{\n\tfillExpression = exp;\n}\n\nbool CDirectiveArea::Validate()\n{\n\tint64_t oldAreaSize = areaSize;\n\tint64_t oldContentSize = contentSize;\n\n\tposition = g_fileManager->getVirtualAddress();\n\n\tif (sizeExpression.evaluateInteger(areaSize) == false)\n\t{\n\t\tLogger::queueError(Logger::Error,L\"Invalid size expression\");\n\t\treturn false;\n\t}\n\n\tif (areaSize < 0)\n\t{\n\t\tLogger::queueError(Logger::Error, L\"Negative area size\");\n\t\treturn false;\n\t}\n\n\tif (fillExpression.isLoaded())\n\t{\n\t\tif (fillExpression.evaluateInteger(fillValue) == false)\n\t\t{\n\t\t\tLogger::queueError(Logger::Error,L\"Invalid fill expression\");\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tcontent->applyFileInfo();\n\tbool result = content->Validate();\n\tcontentSize = g_fileManager->getVirtualAddress()-position;\n\n\t// restore info of this command\n\tapplyFileInfo();\n\n\tif (areaSize < contentSize)\n\t{\n\t\tLogger::queueError(Logger::Error,L\"Area overflowed\");\n\t}\n\n\tif (fillExpression.isLoaded())\n\t\tg_fileManager->advanceMemory(areaSize-contentSize);\n\n\tif (areaSize != oldAreaSize || contentSize != oldContentSize)\n\t\tresult = true;\n\n\treturn result;\n}\n\nvoid CDirectiveArea::Encode() const\n{\n\tcontent->Encode();\n\n\tif (fillExpression.isLoaded())\n\t{\n\t\tunsigned char buffer[64];\n\t\tmemset(buffer,fillValue,64);\n\n\t\tsize_t writeSize = areaSize-contentSize;\n\t\twhile (writeSize > 0)\n\t\t{\n\t\t\tsize_t part = std::min<size_t>(64,writeSize);\n\t\t\tg_fileManager->write(buffer,part);\n\t\t\twriteSize -= part;\n\t\t}\n\t}\n}\n\nvoid CDirectiveArea::writeTempData(TempData& tempData) const\n{\n\ttempData.writeLine(position,formatString(L\".area 0x%08X\",areaSize));\n\tcontent->applyFileInfo();\n\tcontent->writeTempData(tempData);\n\n\tif (fillExpression.isLoaded())\n\t{\n\t\tstd::wstring fillString = formatString(L\".fill 0x%08X,0x%02X\",areaSize-contentSize,fillValue);\n\t\ttempData.writeLine(position+contentSize,fillString);\n\t\ttempData.writeLine(position+areaSize,L\".endarea\");\n\t} else {\n\t\ttempData.writeLine(position+contentSize,L\".endarea\");\n\t}\n}\n\nvoid CDirectiveArea::writeSymData(SymbolData& symData) const\n{\n\tcontent->writeSymData(symData);\n\n\tif (fillExpression.isLoaded())\n\t\tsymData.addData(position+contentSize,areaSize-contentSize,SymbolData::Data8);\n}\n\n// file: Commands/CDirectiveConditional.h\n\nenum class ConditionType\n{\n\tIF,\n\tELSE,\n\tELSEIF,\n\tENDIF,\n\tIFDEF,\n\tIFNDEF,\n};\n\nclass CDirectiveConditional: public CAssemblerCommand\n{\npublic:\n\tCDirectiveConditional(ConditionType type);\n\tCDirectiveConditional(ConditionType type, const std::wstring& name);\n\tCDirectiveConditional(ConditionType type, const Expression& exp);\n\tvirtual bool Validate();\n\tvirtual void Encode() const;\n\tvirtual void writeTempData(TempData& tempData) const;\n\tvirtual void writeSymData(SymbolData& symData) const;\n\tvoid setContent(std::unique_ptr<CAssemblerCommand> ifBlock, std::unique_ptr<CAssemblerCommand> elseBlock);\nprivate:\n\tbool evaluate();\n\n\tExpression expression;\n\tstd::shared_ptr<Label> label;\n\tbool previousResult;\n\n\tConditionType type;\n\tstd::unique_ptr<CAssemblerCommand> ifBlock;\n\tstd::unique_ptr<CAssemblerCommand> elseBlock;\n};\n\n// file: Commands/CDirectiveConditional.cpp\n\n#ifdef ARMIPS_ARM\nextern CArmArchitecture Arm;\n#endif\n\nCDirectiveConditional::CDirectiveConditional(ConditionType type)\n{\n\tthis->type = type;\n\n\tifBlock = nullptr;\n\telseBlock = nullptr;\n\tpreviousResult = false;\n}\n\nCDirectiveConditional::CDirectiveConditional(ConditionType type, const std::wstring& name)\n\t: CDirectiveConditional(type)\n{\n\tlabel = Global.symbolTable.getLabel(name,Global.FileInfo.FileNum,Global.Section);\n\tif (label == nullptr)\n\t\tLogger::printError(Logger::Error,L\"Invalid label name \\\"%s\\\"\",name);\n}\n\nCDirectiveConditional::CDirectiveConditional(ConditionType type, const Expression& exp)\n\t: CDirectiveConditional(type)\n{\n\tthis->expression = exp;\n}\n\nvoid CDirectiveConditional::setContent(std::unique_ptr<CAssemblerCommand> ifBlock, std::unique_ptr<CAssemblerCommand> elseBlock)\n{\n\tthis->ifBlock = std::move(ifBlock);\n\tthis->elseBlock = std::move(elseBlock);\n}\n\nbool CDirectiveConditional::evaluate()\n{\n\tint64_t value;\n\tif (expression.isLoaded())\n\t{\n\t\tif (expression.evaluateInteger(value) == false)\n\t\t{\n\t\t\tLogger::queueError(Logger::Error,L\"Invalid conditional expression\");\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tswitch (type)\n\t{\n\tcase ConditionType::IF:\n\t\treturn value != 0;\n\tcase ConditionType::IFDEF:\n\t\treturn label->isDefined();\n\tcase ConditionType::IFNDEF:\n\t\treturn !label->isDefined();\n\tdefault:\n\t\tbreak;\n\t}\n\n\tLogger::queueError(Logger::Error,L\"Invalid conditional type\");\n\treturn false;\n}\n\nbool CDirectiveConditional::Validate()\n{\n\tbool result = evaluate();\n\tbool returnValue = result != previousResult;\n\tpreviousResult = result;\n\n\tif (result)\n\t{\n\t\tifBlock->applyFileInfo();\n\t\tif (ifBlock->Validate())\n\t\t\treturnValue = true;\n\t} else if (elseBlock != nullptr)\n\t{\n\t\telseBlock->applyFileInfo();\n\t\tif (elseBlock->Validate())\n\t\t\treturnValue = true;\n\t}\n\n\treturn returnValue;\n}\n\nvoid CDirectiveConditional::Encode() const\n{\n\tif (previousResult)\n\t{\n\t\tifBlock->Encode();\n\t} else if (elseBlock != nullptr)\n\t{\n\t\telseBlock->Encode();\n\t}\n}\n\nvoid CDirectiveConditional::writeTempData(TempData& tempData) const\n{\n\tif (previousResult)\n\t{\n\t\tifBlock->applyFileInfo();\n\t\tifBlock->writeTempData(tempData);\n\t} else if (elseBlock != nullptr)\n\t{\n\t\telseBlock->applyFileInfo();\n\t\telseBlock->writeTempData(tempData);\n\t}\n}\n\nvoid CDirectiveConditional::writeSymData(SymbolData& symData) const\n{\n\tif (previousResult)\n\t{\n\t\tifBlock->writeSymData(symData);\n\t} else if (elseBlock != nullptr)\n\t{\n\t\telseBlock->writeSymData(symData);\n\t}\n}\n\n// file: Commands/CDirectiveData.h\n\nenum class EncodingMode { Invalid, U8, U16, U32, U64, Ascii, Float, Double, Sjis, Custom };\n\nclass TableCommand: public CAssemblerCommand\n{\npublic:\n\tTableCommand(const std::wstring& fileName, TextFile::Encoding encoding);\n\tvirtual bool Validate();\n\tvirtual void Encode() const { };\n\tvirtual void writeTempData(TempData& tempData) const { };\n\tvirtual void writeSymData(SymbolData& symData) const { };\nprivate:\n\tEncodingTable table;\n};\n\nclass CDirectiveData: public CAssemblerCommand\n{\npublic:\n\tCDirectiveData();\n\t~CDirectiveData();\n\tvoid setNormal(std::vector<Expression>& entries, size_t unitSize);\n\tvoid setFloat(std::vector<Expression>& entries);\n\tvoid setDouble(std::vector<Expression>& entries);\n\tvoid setAscii(std::vector<Expression>& entries, bool terminate);\n\tvoid setSjis(std::vector<Expression>& entries, bool terminate);\n\tvoid setCustom(std::vector<Expression>& entries, bool terminate);\n\tvirtual bool Validate();\n\tvirtual void Encode() const;\n\tvirtual void writeTempData(TempData& tempData) const;\n\tvirtual void writeSymData(SymbolData& symData) const;\nprivate:\n\tvoid encodeCustom(EncodingTable& table);\n\tvoid encodeSjis();\n\tvoid encodeFloat();\n\tvoid encodeDouble();\n\tvoid encodeNormal();\n\tsize_t getUnitSize() const;\n\tsize_t getDataSize() const;\n\n\tint64_t position;\n\tEncodingMode mode;\n\tbool writeTermination;\n\tstd::vector<Expression> entries;\n\tByteArray customData;\n\tstd::vector<int64_t> normalData;\n\tEndianness endianness;\n};\n\n// file: Commands/CDirectiveData.cpp\n\n//\n// TableCommand\n//\n\nTableCommand::TableCommand(const std::wstring& fileName, TextFile::Encoding encoding)\n{\n\tauto fullName = getFullPathName(fileName);\n\n\tif (fileExists(fullName) == false)\n\t{\n\t\tLogger::printError(Logger::Error,L\"Table file \\\"%s\\\" does not exist\",fileName);\n\t\treturn;\n\t}\n\n\tif (table.load(fullName,encoding) == false)\n\t{\n\t\tLogger::printError(Logger::Error,L\"Invalid table file \\\"%s\\\"\",fileName);\n\t\treturn;\n\t}\n}\n\nbool TableCommand::Validate()\n{\n\tGlobal.Table = table;\n\treturn false;\n}\n\n\n//\n// CDirectiveData\n//\n\nCDirectiveData::CDirectiveData()\n{\n\tmode = EncodingMode::Invalid;\n\twriteTermination = false;\n\tendianness = Arch->getEndianness();\n}\n\nCDirectiveData::~CDirectiveData()\n{\n\n}\n\nvoid CDirectiveData::setNormal(std::vector<Expression>& entries, size_t unitSize)\n{\n\tswitch (unitSize)\n\t{\n\tcase 1:\n\t\tthis->mode = EncodingMode::U8;\n\t\tbreak;\n\tcase 2:\n\t\tthis->mode = EncodingMode::U16;\n\t\tbreak;\n\tcase 4:\n\t\tthis->mode = EncodingMode::U32;\n\t\tbreak;\n\tcase 8:\n\t\tthis->mode = EncodingMode::U64;\n\t\tbreak;\n\tdefault:\n\t\tLogger::printError(Logger::Error,L\"Invalid data unit size %d\",unitSize);\n\t\treturn;\n\t}\n\n\tthis->entries = entries;\n\tthis->writeTermination = false;\n\tnormalData.reserve(entries.size());\n}\n\nvoid CDirectiveData::setFloat(std::vector<Expression>& entries)\n{\n\tthis->mode = EncodingMode::Float;\n\tthis->entries = entries;\n\tthis->writeTermination = false;\n}\n\nvoid CDirectiveData::setDouble(std::vector<Expression>& entries)\n{\n\tthis->mode = EncodingMode::Double;\n\tthis->entries = entries;\n\tthis->writeTermination = false;\n}\n\nvoid CDirectiveData::setAscii(std::vector<Expression>& entries, bool terminate)\n{\n\tthis->mode = EncodingMode::Ascii;\n\tthis->entries = entries;\n\tthis->writeTermination = terminate;\n}\n\nvoid CDirectiveData::setSjis(std::vector<Expression>& entries, bool terminate)\n{\n\tthis->mode = EncodingMode::Sjis;\n\tthis->entries = entries;\n\tthis->writeTermination = terminate;\n}\n\nvoid CDirectiveData::setCustom(std::vector<Expression>& entries, bool terminate)\n{\n\tthis->mode = EncodingMode::Custom;\n\tthis->entries = entries;\n\tthis->writeTermination = terminate;\n}\n\nsize_t CDirectiveData::getUnitSize() const\n{\n\tswitch (mode)\n\t{\n\tcase EncodingMode::U8:\n\tcase EncodingMode::Ascii:\n\tcase EncodingMode::Sjis:\n\tcase EncodingMode::Custom:\n\t\treturn 1;\n\tcase EncodingMode::U16:\n\t\treturn 2;\n\tcase EncodingMode::U32:\n\tcase EncodingMode::Float:\n\t\treturn 4;\n\tcase EncodingMode::U64:\n\tcase EncodingMode::Double:\n\t\treturn 8;\n\tcase EncodingMode::Invalid:\n\t\tbreak;\n\t}\n\n\treturn 0;\n}\n\nsize_t CDirectiveData::getDataSize() const\n{\n\tswitch (mode)\n\t{\n\tcase EncodingMode::Sjis:\n\tcase EncodingMode::Custom:\n\t\treturn customData.size();\n\tcase EncodingMode::U8:\n\tcase EncodingMode::Ascii:\n\tcase EncodingMode::U16:\n\tcase EncodingMode::U32:\n\tcase EncodingMode::U64:\n\tcase EncodingMode::Float:\n\tcase EncodingMode::Double:\n\t\treturn normalData.size()*getUnitSize();\n\tcase EncodingMode::Invalid:\n\t\tbreak;\n\t}\n\n\treturn 0;\n}\n\nvoid CDirectiveData::encodeCustom(EncodingTable& table)\n{\n\tcustomData.clear();\n\tfor (size_t i = 0; i < entries.size(); i++)\n\t{\n\t\tExpressionValue value = entries[i].evaluate();\n\t\tif (!value.isValid())\n\t\t{\n\t\t\tLogger::queueError(Logger::Error,L\"Invalid expression\");\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (value.isInt())\n\t\t{\n\t\t\tcustomData.appendByte(value.intValue);\n\t\t} else if (value.isString())\n\t\t{\n\t\t\tByteArray encoded = table.encodeString(value.strValue,false);\n\t\t\tif (encoded.size() == 0 && value.strValue.size() > 0)\n\t\t\t{\n\t\t\t\tLogger::queueError(Logger::Error,L\"Failed to encode \\\"%s\\\"\",value.strValue);\n\t\t\t}\n\t\t\tcustomData.append(encoded);\n\t\t} else {\n\t\t\tLogger::queueError(Logger::Error,L\"Invalid expression type\");\n\t\t}\n\t}\n\n\tif (writeTermination)\n\t{\n\t\tByteArray encoded = table.encodeTermination();\n\t\tcustomData.append(encoded);\n\t}\n}\n\nvoid CDirectiveData::encodeSjis()\n{\n\tstatic EncodingTable sjisTable;\n\tif (sjisTable.isLoaded() == false)\n\t{\n\t\tunsigned char hexBuffer[2];\n\n\t\tsjisTable.setTerminationEntry((unsigned char*)\"\\0\",1);\n\n\t\tfor (unsigned short SJISValue = 0x0001; SJISValue < 0x0100; SJISValue++)\n\t\t{\n\t\t\twchar_t unicodeValue = sjisToUnicode(SJISValue);\n\t\t\tif (unicodeValue != 0xFFFF)\n\t\t\t{\n\t\t\t\thexBuffer[0] = SJISValue & 0xFF;\n\t\t\t\tsjisTable.addEntry(hexBuffer, 1, unicodeValue);\n\t\t\t}\n\t\t}\n\t\tfor (unsigned short SJISValue = 0x8100; SJISValue < 0xEF00; SJISValue++)\n\t\t{\n\t\t\twchar_t unicodeValue = sjisToUnicode(SJISValue);\n\t\t\tif (unicodeValue != 0xFFFF)\n\t\t\t{\n\t\t\t\thexBuffer[0] = (SJISValue >> 8) & 0xFF;\n\t\t\t\thexBuffer[1] = SJISValue & 0xFF;\n\t\t\t\tsjisTable.addEntry(hexBuffer, 2, unicodeValue);\n\t\t\t}\n\t\t}\n\t}\n\n\tencodeCustom(sjisTable);\n}\n\nvoid CDirectiveData::encodeFloat()\n{\n\tnormalData.clear();\n\tfor (size_t i = 0; i < entries.size(); i++)\n\t{\n\t\tExpressionValue value = entries[i].evaluate();\n\t\tif (!value.isValid())\n\t\t{\n\t\t\tLogger::queueError(Logger::Error,L\"Invalid expression\");\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (value.isInt() && mode == EncodingMode::Float)\n\t\t{\n\t\t\tint32_t num = getFloatBits((float)value.intValue);\n\t\t\tnormalData.push_back(num);\n\t\t} else if (value.isInt() && mode == EncodingMode::Double)\n\t\t{\n\t\t\tint64_t num = getDoubleBits((double)value.intValue);\n\t\t\tnormalData.push_back(num);\n\t\t} else if (value.isFloat() && mode == EncodingMode::Float)\n\t\t{\n\t\t\tint32_t num = getFloatBits((float)value.floatValue);\n\t\t\tnormalData.push_back(num);\n\t\t} else if (value.isFloat() && mode == EncodingMode::Double)\n\t\t{\n\t\t\tint64_t num = getDoubleBits((double)value.floatValue);\n\t\t\tnormalData.push_back(num);\n\t\t} else {\n\t\t\tLogger::queueError(Logger::Error,L\"Invalid expression type\");\n\t\t}\n\t}\n}\n\nvoid CDirectiveData::encodeNormal()\n{\n\tnormalData.clear();\n\tfor (size_t i = 0; i < entries.size(); i++)\n\t{\n\t\tExpressionValue value = entries[i].evaluate();\n\t\tif (!value.isValid())\n\t\t{\n\t\t\tLogger::queueError(Logger::Error,L\"Invalid expression\");\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (value.isString())\n\t\t{\n\t\t\tbool hadNonAscii = false;\n\t\t\tfor (size_t l = 0; l < value.strValue.size(); l++)\n\t\t\t{\n\t\t\t\tint64_t num = value.strValue[l];\n\t\t\t\tnormalData.push_back(num);\n\n\t\t\t\tif (num >= 0x80 && hadNonAscii == false)\n\t\t\t\t{\n\t\t\t\t\tLogger::printError(Logger::Warning,L\"Non-ASCII character in data directive. Use .string instead\");\n\t\t\t\t\thadNonAscii = true;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (value.isInt())\n\t\t{\n\t\t\tint64_t num = value.intValue;\n\t\t\tnormalData.push_back(num);\n\t\t} else if (value.isFloat() && mode == EncodingMode::U32)\n\t\t{\n\t\t\tint32_t num = getFloatBits((float)value.floatValue);\n\t\t\tnormalData.push_back(num);\n\t\t} else if(value.isFloat() && mode == EncodingMode::U64) {\n\t\t\tint64_t num = getDoubleBits((double)value.floatValue);\n\t\t\tnormalData.push_back(num);\n\t\t} else {\n\t\t\tLogger::queueError(Logger::Error,L\"Invalid expression type\");\n\t\t}\n\t}\n\n\tif (writeTermination)\n\t{\n\t\tnormalData.push_back(0);\n\t}\n}\n\nbool CDirectiveData::Validate()\n{\n\tposition = g_fileManager->getVirtualAddress();\n\n\tsize_t oldSize = getDataSize();\n\tswitch (mode)\n\t{\n\tcase EncodingMode::U8:\n\tcase EncodingMode::U16:\n\tcase EncodingMode::U32:\n\tcase EncodingMode::U64:\n\tcase EncodingMode::Ascii:\n\t\tencodeNormal();\n\t\tbreak;\n\tcase EncodingMode::Float:\n\tcase EncodingMode::Double:\n\t\tencodeFloat();\n\t\tbreak;\n\tcase EncodingMode::Sjis:\n\t\tencodeSjis();\n\t\tbreak;\n\tcase EncodingMode::Custom:\n\t\tencodeCustom(Global.Table);\n\t\tbreak;\n\tdefault:\n\t\tLogger::queueError(Logger::Error,L\"Invalid encoding type\");\n\t\tbreak;\n\t}\n\n\tg_fileManager->advanceMemory(getDataSize());\n\treturn oldSize != getDataSize();\n}\n\nvoid CDirectiveData::Encode() const\n{\n\tswitch (mode)\n\t{\n\tcase EncodingMode::Sjis:\n\tcase EncodingMode::Custom:\n\t\tg_fileManager->write(customData.data(),customData.size());\n\t\tbreak;\n\tcase EncodingMode::U8:\n\tcase EncodingMode::Ascii:\n\t\tfor (auto value: normalData)\n\t\t{\n\t\t\tg_fileManager->writeU8((uint8_t)value);\n\t\t}\n\t\tbreak;\n\tcase EncodingMode::U16:\n\t\tfor (auto value: normalData)\n\t\t{\n\t\t\tg_fileManager->writeU16((uint16_t)value);\n\t\t}\n\t\tbreak;\n\tcase EncodingMode::U32:\n\tcase EncodingMode::Float:\n\t\tfor (auto value: normalData)\n\t\t{\n\t\t\tg_fileManager->writeU32((uint32_t)value);\n\t\t}\n\t\tbreak;\n\tcase EncodingMode::U64:\n\tcase EncodingMode::Double:\n\t\tfor (auto value: normalData)\n\t\t{\n\t\t\tg_fileManager->writeU64((uint64_t)value);\n\t\t}\n\t\tbreak;\n\tcase EncodingMode::Invalid:\n\t\t// TODO: Assert?\n\t\tbreak;\n\t}\n}\n\nvoid CDirectiveData::writeTempData(TempData& tempData) const\n{\n\tsize_t size = (getUnitSize()*2+3)*getDataSize()+20;\n\twchar_t* str = new wchar_t[size];\n\twchar_t* start = str;\n\n\tswitch (mode)\n\t{\n\tcase EncodingMode::Sjis:\n\tcase EncodingMode::Custom:\n\t\tstr += swprintf(str,20,L\".byte \");\n\n\t\tfor (size_t i = 0; i < customData.size(); i++)\n\t\t{\n\t\t\tstr += swprintf(str,20,L\"0x%02X,\",(uint8_t)customData[i]);\n\t\t}\n\t\tbreak;\n\tcase EncodingMode::U8:\n\tcase EncodingMode::Ascii:\n\t\tstr += swprintf(str,20,L\".byte \");\n\n\t\tfor (size_t i = 0; i < normalData.size(); i++)\n\t\t{\n\t\t\tstr += swprintf(str,20,L\"0x%02X,\",(uint8_t)normalData[i]);\n\t\t}\n\t\tbreak;\n\tcase EncodingMode::U16:\n\t\tstr += swprintf(str,20,L\".halfword \");\n\n\t\tfor (size_t i = 0; i < normalData.size(); i++)\n\t\t{\n\t\t\tstr += swprintf(str,20,L\"0x%04X,\",(uint16_t)normalData[i]);\n\t\t}\n\t\tbreak;\n\tcase EncodingMode::U32:\n\tcase EncodingMode::Float:\n\t\tstr += swprintf(str,20,L\".word \");\n\n\t\tfor (size_t i = 0; i < normalData.size(); i++)\n\t\t{\n\t\t\tstr += swprintf(str,20,L\"0x%08X,\",(uint32_t)normalData[i]);\n\t\t}\n\t\tbreak;\n\tcase EncodingMode::U64:\n\tcase EncodingMode::Double:\n\t\tstr += swprintf(str,20,L\".doubleword \");\n\n\t\tfor (size_t i = 0; i < normalData.size(); i++)\n\t\t{\n\t\t\tstr += swprintf(str,20,L\"0x%16llX,\",(uint64_t)normalData[i]);\n\t\t}\n\t\tbreak;\n\tcase EncodingMode::Invalid:\n\t\t// TODO: Assert?\n\t\tbreak;\n\t}\n\n\t*(str-1) = 0;\n\ttempData.writeLine(position,start);\n\tdelete[] start;\n}\n\nvoid CDirectiveData::writeSymData(SymbolData& symData) const\n{\n\tswitch (mode)\n\t{\n\tcase EncodingMode::Ascii:\n\t\tsymData.addData(position,getDataSize(),SymbolData::DataAscii);\n\t\tbreak;\n\tcase EncodingMode::U8:\n\tcase EncodingMode::Sjis:\n\tcase EncodingMode::Custom:\n\t\tsymData.addData(position,getDataSize(),SymbolData::Data8);\n\t\tbreak;\n\tcase EncodingMode::U16:\n\t\tsymData.addData(position,getDataSize(),SymbolData::Data16);\n\t\tbreak;\n\tcase EncodingMode::U32:\n\tcase EncodingMode::Float:\n\t\tsymData.addData(position,getDataSize(),SymbolData::Data32);\n\t\tbreak;\n\tcase EncodingMode::U64:\n\tcase EncodingMode::Double:\n\t\tsymData.addData(position,getDataSize(),SymbolData::Data64);\n\t\tbreak;\n\tcase EncodingMode::Invalid:\n\t\t// TODO: Assert?\n\t\tbreak;\n\t}\n}\n\n// file: Commands/CDirectiveFile.cpp\n\n//\n// CDirectiveFile\n//\n\nCDirectiveFile::CDirectiveFile()\n{\n\ttype = Type::Invalid;\n\tfile = nullptr;\n}\n\nvoid CDirectiveFile::initOpen(const std::wstring& fileName, int64_t memory)\n{\n\ttype = Type::Open;\n\tstd::wstring fullName = getFullPathName(fileName);\n\n\tfile = std::make_shared<GenericAssemblerFile>(fullName,memory,false);\n\tg_fileManager->addFile(file);\n\n\tupdateSection(++Global.Section);\n}\n\nvoid CDirectiveFile::initCreate(const std::wstring& fileName, int64_t memory)\n{\n\ttype = Type::Create;\n\tstd::wstring fullName = getFullPathName(fileName);\n\n\tfile = std::make_shared<GenericAssemblerFile>(fullName,memory,true);\n\tg_fileManager->addFile(file);\n\n\tupdateSection(++Global.Section);\n}\n\nvoid CDirectiveFile::initCopy(const std::wstring& inputName, const std::wstring& outputName, int64_t memory)\n{\n\ttype = Type::Copy;\n\tstd::wstring fullInputName = getFullPathName(inputName);\n\tstd::wstring fullOutputName = getFullPathName(outputName);\n\n\tfile = std::make_shared<GenericAssemblerFile>(fullOutputName,fullInputName,memory);\n\tg_fileManager->addFile(file);\n\n\tupdateSection(++Global.Section);\n}\n\nvoid CDirectiveFile::initClose()\n{\n\ttype = Type::Close;\n\tupdateSection(++Global.Section);\n}\n\nbool CDirectiveFile::Validate()\n{\n\tvirtualAddress = g_fileManager->getVirtualAddress();\n\tArch->NextSection();\n\n\tswitch (type)\n\t{\n\tcase Type::Open:\n\tcase Type::Create:\n\tcase Type::Copy:\n\t\tg_fileManager->openFile(file,true);\n\t\treturn false;\n\tcase Type::Close:\n\t\tcloseFile = g_fileManager->getOpenFile();\n\t\tg_fileManager->closeFile();\n\t\treturn false;\n\tcase Type::Invalid:\n\t\tbreak;\n\t}\n\n\treturn false;\n}\n\nvoid CDirectiveFile::Encode() const\n{\n\tswitch (type)\n\t{\n\tcase Type::Open:\n\tcase Type::Create:\n\tcase Type::Copy:\n\t\tg_fileManager->openFile(file,false);\n\t\tbreak;\n\tcase Type::Close:\n\t\tg_fileManager->closeFile();\n\t\tbreak;\n\tcase Type::Invalid:\n\t\t// TODO: Assert?\n\t\tbreak;\n\t}\n}\n\nvoid CDirectiveFile::writeTempData(TempData& tempData) const\n{\n\tstd::wstring str;\n\n\tswitch (type)\n\t{\n\tcase Type::Open:\n\t\tstr = formatString(L\".open \\\"%s\\\",0x%08X\",file->getFileName(),file->getOriginalHeaderSize());\n\t\tbreak;\n\tcase Type::Create:\n\t\tstr = formatString(L\".create \\\"%s\\\",0x%08X\",file->getFileName(),file->getOriginalHeaderSize());\n\t\tbreak;\n\tcase Type::Copy:\n\t\tstr = formatString(L\".open \\\"%s\\\",\\\"%s\\\",0x%08X\",file->getOriginalFileName(),\n\t\t\tfile->getFileName(),file->getOriginalHeaderSize());\n\t\tbreak;\n\tcase Type::Close:\n\t\tstr = L\".close\";\n\t\tbreak;\n\tcase Type::Invalid:\n\t\t// TODO: Assert?\n\t\tbreak;\n\t}\n\n\ttempData.writeLine(virtualAddress,str);\n}\n\nvoid CDirectiveFile::writeSymData(SymbolData& symData) const\n{\n\tswitch (type)\n\t{\n\tcase Type::Open:\n\tcase Type::Create:\n\tcase Type::Copy:\n\t\tfile->beginSymData(symData);\n\t\tbreak;\n\tcase Type::Close:\n\t\tif (closeFile)\n\t\t\tcloseFile->endSymData(symData);\n\t\tbreak;\n\tcase Type::Invalid:\n\t\t// TODO: Assert?\n\t\tbreak;\n\t}\n}\n\n//\n// CDirectivePosition\n//\n\nCDirectivePosition::CDirectivePosition(Expression expression, Type type)\n\t: expression(expression), type(type)\n{\n\tupdateSection(++Global.Section);\n}\n\nvoid CDirectivePosition::exec() const\n{\n\tswitch (type)\n\t{\n\tcase Physical:\n\t\tg_fileManager->seekPhysical(position);\n\t\tbreak;\n\tcase Virtual:\n\t\tg_fileManager->seekVirtual(position);\n\t\tbreak;\n\t}\n}\n\nbool CDirectivePosition::Validate()\n{\n\tvirtualAddress = g_fileManager->getVirtualAddress();\n\n\tif (expression.evaluateInteger(position) == false)\n\t{\n\t\tLogger::queueError(Logger::FatalError,L\"Invalid position\");\n\t\treturn false;\n\t}\n\n\tArch->NextSection();\n\texec();\n\treturn false;\n}\n\nvoid CDirectivePosition::Encode() const\n{\n\tArch->NextSection();\n\texec();\n}\n\nvoid CDirectivePosition::writeTempData(TempData& tempData) const\n{\n\tswitch (type)\n\t{\n\tcase Physical:\n\t\ttempData.writeLine(virtualAddress,formatString(L\".orga 0x%08X\",position));\n\t\tbreak;\n\tcase Virtual:\n\t\ttempData.writeLine(virtualAddress,formatString(L\".org 0x%08X\",position));\n\t\tbreak;\n\t}\n}\n\n//\n// CDirectiveIncbin\n//\n\nCDirectiveIncbin::CDirectiveIncbin(const std::wstring& fileName)\n\t: size(0), start(0)\n{\n\tthis->fileName = getFullPathName(fileName);\n\n\tif (fileExists(this->fileName) == false)\n\t{\n\t\tLogger::printError(Logger::FatalError,L\"File %s not found\",this->fileName);\n\t}\n\n\tthis->fileSize = ::fileSize(this->fileName);\n}\n\nbool CDirectiveIncbin::Validate()\n{\n\tvirtualAddress = g_fileManager->getVirtualAddress();\n\n\tif (startExpression.isLoaded())\n\t{\n\t\tif (startExpression.evaluateInteger(start) == false)\n\t\t{\n\t\t\tLogger::queueError(Logger::Error,L\"Invalid position expression\");\n\t\t\treturn false;\n\t\t}\n\n\t\tif (start > fileSize)\n\t\t{\n\t\t\tLogger::queueError(Logger::Error,L\"Start position past end of file\");\n\t\t\treturn false;\n\t\t}\n\t} else {\n\t\tstart = 0;\n\t}\n\n\tif (sizeExpression.isLoaded())\n\t{\n\t\tif (sizeExpression.evaluateInteger(size) == false)\n\t\t{\n\t\t\tLogger::queueError(Logger::Error,L\"Invalid size expression\");\n\t\t\treturn false;\n\t\t}\n\t} else {\n\t\tsize = fileSize-start;\n\t}\n\n\tif (start+size > fileSize)\n\t{\n\t\tLogger::queueError(Logger::Warning,L\"Read size truncated due to file size\");\n\t\tsize = fileSize-start;\n\t}\n\n\tArch->NextSection();\n\tg_fileManager->advanceMemory(size);\n\treturn false;\n}\n\nvoid CDirectiveIncbin::Encode() const\n{\n\tif (size != 0)\n\t{\n\t\tByteArray data = ByteArray::fromFile(fileName,(long)start,size);\n\t\tif ((int) data.size() != size)\n\t\t{\n\t\t\tLogger::printError(Logger::Error,L\"Could not read file \\\"%s\\\"\",fileName);\n\t\t\treturn;\n\t\t}\n\t\tg_fileManager->write(data.data(),data.size());\n\t}\n}\n\nvoid CDirectiveIncbin::writeTempData(TempData& tempData) const\n{\n\ttempData.writeLine(virtualAddress,formatString(L\".incbin \\\"%s\\\"\",fileName));\n}\n\nvoid CDirectiveIncbin::writeSymData(SymbolData& symData) const\n{\n\tsymData.addData(virtualAddress,size,SymbolData::Data8);\n}\n\n\n//\n// CDirectiveAlignFill\n//\n\nCDirectiveAlignFill::CDirectiveAlignFill(int64_t value, Mode mode)\n{\n\tthis->mode = mode;\n\tthis->value = value;\n\tthis->finalSize = 0;\n\tthis->fillByte = 0;\n}\n\nCDirectiveAlignFill::CDirectiveAlignFill(Expression& value, Mode mode)\n\t: CDirectiveAlignFill(0,mode)\n{\n\tvalueExpression = value;\n}\n\nCDirectiveAlignFill::CDirectiveAlignFill(Expression& value, Expression& fillValue, Mode mode)\n\t: CDirectiveAlignFill(value,mode)\n{\n\tfillExpression = fillValue;\n}\n\nbool CDirectiveAlignFill::Validate()\n{\n\tvirtualAddress = g_fileManager->getVirtualAddress();\n\n\tif (valueExpression.isLoaded())\n\t{\n\t\tif (valueExpression.evaluateInteger(value) == false)\n\t\t{\n\t\t\tLogger::queueError(Logger::FatalError,L\"Invalid %s\",mode == Fill ? L\"size\" : L\"alignment\");\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tif (mode != Fill && isPowerOfTwo(value) == false)\n\t{\n\t\tLogger::queueError(Logger::Error, L\"Invalid alignment %d\", value);\n\t\treturn false;\n\t}\n\n\tint64_t oldSize = finalSize;\n\tint64_t mod;\n\tswitch (mode)\n\t{\n\tcase AlignVirtual:\n\t\tmod = g_fileManager->getVirtualAddress() % value;\n\t\tfinalSize = mod ? value-mod : 0;\n\t\tbreak;\n\tcase AlignPhysical:\n\t\tmod = g_fileManager->getPhysicalAddress() % value;\n\t\tfinalSize = mod ? value-mod : 0;\n\t\tbreak;\n\tcase Fill:\n\t\tfinalSize = value;\n\t\tbreak;\n\t}\n\n\tif (fillExpression.isLoaded())\n\t{\n\t\tif (fillExpression.evaluateInteger(fillByte) == false)\n\t\t{\n\t\t\tLogger::printError(Logger::FatalError,L\"Invalid fill value\");\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tArch->NextSection();\n\tg_fileManager->advanceMemory(finalSize);\n\n\tbool result = oldSize != finalSize;\n\toldSize = finalSize;\n\treturn result;\n}\n\nvoid CDirectiveAlignFill::Encode() const\n{\n\tunsigned char buffer[128];\n\tint64_t n = finalSize;\n\n\tmemset(buffer,fillByte,n > 128 ? 128 : n);\n\twhile (n > 128)\n\t{\n\t\tg_fileManager->write(buffer,128);\n\t\tn -= 128;\n\t}\n\n\tg_fileManager->write(buffer,n);\n}\n\nvoid CDirectiveAlignFill::writeTempData(TempData& tempData) const\n{\n\tswitch (mode)\n\t{\n\tcase AlignVirtual:\n\t\ttempData.writeLine(virtualAddress,formatString(L\".align 0x%08X\",value));\n\t\tbreak;\n\tcase AlignPhysical:\n\t\ttempData.writeLine(virtualAddress, formatString(L\".aligna 0x%08X\", value));\n\t\tbreak;\n\tcase Fill:\n\t\ttempData.writeLine(virtualAddress,formatString(L\".fill 0x%08X,0x%02X\",value,fillByte));\n\t\tbreak;\n\t}\n}\n\nvoid CDirectiveAlignFill::writeSymData(SymbolData& symData) const\n{\n\tswitch (mode)\n\t{\n\tcase AlignVirtual:\t// ?\n\tcase AlignPhysical:\t// ?\n\t\tbreak;\n\tcase Fill:\n\t\tsymData.addData(virtualAddress,value,SymbolData::Data8);\n\t\tbreak;\n\t}\n}\n\n//\n// CDirectiveSkip\n//\n\nCDirectiveSkip::CDirectiveSkip(Expression& expression)\n\t: expression(expression) {}\n\nbool CDirectiveSkip::Validate()\n{\n\tvirtualAddress = g_fileManager->getVirtualAddress();\n\n\tif (expression.isLoaded())\n\t{\n\t\tif (expression.evaluateInteger(value) == false)\n\t\t{\n\t\t\tLogger::queueError(Logger::FatalError,L\"Invalid skip length\");\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tArch->NextSection();\n\tg_fileManager->advanceMemory(value);\n\n\treturn false;\n}\n\nvoid CDirectiveSkip::Encode() const\n{\n\tArch->NextSection();\n\tg_fileManager->advanceMemory(value);\n}\n\nvoid CDirectiveSkip::writeTempData(TempData& tempData) const\n{\n\ttempData.writeLine(virtualAddress,formatString(L\".skip 0x%08X\",value));\n}\n\n//\n// CDirectiveHeaderSize\n//\n\nCDirectiveHeaderSize::CDirectiveHeaderSize(Expression expression)\n\t: expression(expression) {}\n\nvoid CDirectiveHeaderSize::exec() const\n{\n\tstd::shared_ptr<AssemblerFile> openFile = g_fileManager->getOpenFile();\n\tif (!openFile->hasFixedVirtualAddress())\n\t{\n\t\tLogger::printError(Logger::Error,L\"Header size not applicable for this file\");\n\t\treturn;\n\t}\n\tstd::shared_ptr<GenericAssemblerFile> file = std::static_pointer_cast<GenericAssemblerFile>(openFile);\n\tint64_t physicalAddress = file->getPhysicalAddress();\n\tfile->setHeaderSize(headerSize);\n\tfile->seekPhysical(physicalAddress);\n}\n\nbool CDirectiveHeaderSize::Validate()\n{\n\tvirtualAddress = g_fileManager->getVirtualAddress();\n\n\tif (expression.evaluateInteger(headerSize) == false)\n\t{\n\t\tLogger::queueError(Logger::FatalError,L\"Invalid header size\");\n\t\treturn false;\n\t}\n\n\texec();\n\treturn false;\n}\n\nvoid CDirectiveHeaderSize::Encode() const\n{\n\texec();\n}\n\nvoid CDirectiveHeaderSize::writeTempData(TempData& tempData) const\n{\n\ttempData.writeLine(virtualAddress,formatString(L\".headersize %s0x%08X\",\n\t\theaderSize < 0 ? L\"-\" : L\"\", headerSize < 0 ? -headerSize : headerSize));\n}\n\n\n//\n// DirectiveObjImport\n//\n\nDirectiveObjImport::DirectiveObjImport(const std::wstring& inputName)\n{\n\tctor = nullptr;\n\tif (rel.init(inputName))\n\t{\n\t\trel.exportSymbols();\n\t}\n}\n\nDirectiveObjImport::DirectiveObjImport(const std::wstring& inputName, const std::wstring& ctorName)\n{\n\tif (rel.init(inputName))\n\t{\n\t\trel.exportSymbols();\n\t\tctor = rel.generateCtor(ctorName);\n\t}\n}\n\nbool DirectiveObjImport::Validate()\n{\n\tbool result = false;\n\tif (ctor != nullptr && ctor->Validate())\n\t\tresult = true;\n\n\tint64_t memory = g_fileManager->getVirtualAddress();\n\trel.relocate(memory);\n\tg_fileManager->advanceMemory((size_t)memory);\n\n\treturn rel.hasDataChanged() || result;\n}\n\nvoid DirectiveObjImport::Encode() const\n{\n\tif (ctor != nullptr)\n\t\tctor->Encode();\n\n\tconst ByteArray& data = rel.getData();\n\tg_fileManager->write(data.data(),data.size());\n}\n\nvoid DirectiveObjImport::writeTempData(TempData& tempData) const\n{\n\tif (ctor != nullptr)\n\t\tctor->writeTempData(tempData);\n}\n\nvoid DirectiveObjImport::writeSymData(SymbolData& symData) const\n{\n\tif (ctor != nullptr)\n\t\tctor->writeSymData(symData);\n\n\trel.writeSymbols(symData);\n}\n\n// file: Commands/CDirectiveMessage.h\n\nclass CDirectiveMessage: public CAssemblerCommand\n{\npublic:\n\tenum class Type { Warning, Error, Notice };\n\tCDirectiveMessage(Type type, Expression exp);\n\tvirtual bool Validate();\n\tvirtual void Encode() const {};\n\tvirtual void writeTempData(TempData& tempData) const { };\nprivate:\n\tType errorType;\n\tExpression exp;\n};\n\nclass CDirectiveSym: public CAssemblerCommand\n{\npublic:\n\tCDirectiveSym(bool enable) {enabled = enable; };\n\tvirtual bool Validate() { return false; };\n\tvirtual void Encode() const { };\n\tvirtual void writeTempData(TempData& tempData) const { };\n\tvirtual void writeSymData(SymbolData& symData) const { symData.setEnabled(enabled); }\nprivate:\n\tbool enabled;\n};\n\n// file: Commands/CDirectiveMessage.cpp\n\nCDirectiveMessage::CDirectiveMessage(Type type, Expression exp)\n{\n\terrorType = type;\n\tthis->exp = exp;\n}\n\nbool CDirectiveMessage::Validate()\n{\n\tstd::wstring text;\n\tif (exp.evaluateString(text,true) == false)\n\t{\n\t\tLogger::queueError(Logger::Error,L\"Invalid expression\");\n\t\treturn false;\n\t}\n\n\tswitch (errorType)\n\t{\n\tcase Type::Warning:\n\t\tLogger::queueError(Logger::Warning,text);\n\t\tbreak;\n\tcase Type::Error:\n\t\tLogger::queueError(Logger::Error,text);\n\t\tbreak;\n\tcase Type::Notice:\n\t\tLogger::queueError(Logger::Notice,text);\n\t\tbreak;\n\t}\n\treturn false;\n}\n\n// file: Commands/CommandSequence.cpp\n\nCommandSequence::CommandSequence()\n\t: CAssemblerCommand()\n{\n\n}\n\nbool CommandSequence::Validate()\n{\n\tbool result = false;\n\n\tfor (const std::unique_ptr<CAssemblerCommand>& cmd: commands)\n\t{\n\t\tcmd->applyFileInfo();\n\t\tif (cmd->Validate())\n\t\t\tresult = true;\n\t}\n\n\treturn result;\n}\n\nvoid CommandSequence::Encode() const\n{\n\tfor (const std::unique_ptr<CAssemblerCommand>& cmd: commands)\n\t{\n\t\tcmd->Encode();\n\t}\n}\n\nvoid CommandSequence::writeTempData(TempData& tempData) const\n{\n\tfor (const std::unique_ptr<CAssemblerCommand>& cmd: commands)\n\t{\n\t\tcmd->applyFileInfo();\n\t\tcmd->writeTempData(tempData);\n\t}\n}\n\nvoid CommandSequence::writeSymData(SymbolData& symData) const\n{\n\tfor (const std::unique_ptr<CAssemblerCommand>& cmd: commands)\n\t{\n\t\tcmd->writeSymData(symData);\n\t}\n}\n\n// file: Parser/DirectivesParser.cpp\n\n#include <initializer_list>\n#include <algorithm>\n\nstd::unique_ptr<CAssemblerCommand> parseDirectiveOpen(Parser& parser, int flags)\n{\n\tstd::vector<Expression> list;\n\tif (parser.parseExpressionList(list,2,3) == false)\n\t\treturn nullptr;\n\n\tint64_t memoryAddress;\n\tstd::wstring inputName, outputName;\n\n\tif (list[0].evaluateString(inputName,false) == false)\n\t\treturn nullptr;\n\n\tif (list.back().evaluateInteger(memoryAddress) == false)\n\t\treturn nullptr;\n\n\tauto file = ::make_unique<CDirectiveFile>();\n\tif (list.size() == 3)\n\t{\n\t\tif (list[1].evaluateString(outputName,false) == false)\n\t\t\treturn nullptr;\n\n\t\tfile->initCopy(inputName,outputName,memoryAddress);\n\t\treturn file;\n\t} else {\n\t\tfile->initOpen(inputName,memoryAddress);\n\t\treturn file;\n\t}\n}\n\nstd::unique_ptr<CAssemblerCommand> parseDirectiveCreate(Parser& parser, int flags)\n{\n\tstd::vector<Expression> list;\n\tif (parser.parseExpressionList(list,2,2) == false)\n\t\treturn nullptr;\n\n\tint64_t memoryAddress;\n\tstd::wstring inputName, outputName;\n\n\tif (list[0].evaluateString(inputName,false) == false)\n\t\treturn nullptr;\n\n\tif (list.back().evaluateInteger(memoryAddress) == false)\n\t\treturn nullptr;\n\n\tauto file = ::make_unique<CDirectiveFile>();\n\tfile->initCreate(inputName,memoryAddress);\n\treturn file;\n}\n\nstd::unique_ptr<CAssemblerCommand> parseDirectiveClose(Parser& parser, int flags)\n{\n\tauto file = ::make_unique<CDirectiveFile>();\n\tfile->initClose();\n\treturn file;\n}\n\nstd::unique_ptr<CAssemblerCommand> parseDirectiveIncbin(Parser& parser, int flags)\n{\n\tstd::vector<Expression> list;\n\tif (parser.parseExpressionList(list,1,3) == false)\n\t\treturn nullptr;\n\n\tstd::wstring fileName;\n\tif (list[0].evaluateString(fileName,false) == false)\n\t\treturn nullptr;\n\n\tauto incbin = ::make_unique<CDirectiveIncbin>(fileName);\n\tif (list.size() >= 2)\n\t\tincbin->setStart(list[1]);\n\n\tif (list.size() == 3)\n\t\tincbin->setSize(list[2]);\n\n\treturn incbin;\n}\n\nstd::unique_ptr<CAssemblerCommand> parseDirectivePosition(Parser& parser, int flags)\n{\n\tExpression exp = parser.parseExpression();\n\tif (exp.isLoaded() == false)\n\t\treturn nullptr;\n\n\tCDirectivePosition::Type type;\n\tswitch (flags & DIRECTIVE_USERMASK)\n\t{\n\tcase DIRECTIVE_POS_PHYSICAL:\n\t\ttype = CDirectivePosition::Physical;\n\t\tbreak;\n\tcase DIRECTIVE_POS_VIRTUAL:\n\t\ttype = CDirectivePosition::Virtual;\n\t\tbreak;\n\tdefault:\n\t\treturn nullptr;\n\t}\n\n\treturn ::make_unique<CDirectivePosition>(exp,type);\n}\n\nstd::unique_ptr<CAssemblerCommand> parseDirectiveAlignFill(Parser& parser, int flags)\n{\n\tCDirectiveAlignFill::Mode mode;\n\tswitch (flags & DIRECTIVE_USERMASK)\n\t{\n\tcase DIRECTIVE_ALIGN_VIRTUAL:\n\t\tmode = CDirectiveAlignFill::AlignVirtual;\n\t\tbreak;\n\tcase DIRECTIVE_ALIGN_PHYSICAL:\n\t\tmode = CDirectiveAlignFill::AlignPhysical;\n\t\tbreak;\n\tcase DIRECTIVE_ALIGN_FILL:\n\t\tmode = CDirectiveAlignFill::Fill;\n\t\tbreak;\n\tdefault:\n\t\treturn nullptr;\n\t}\n\n\tif (mode != CDirectiveAlignFill::Fill && parser.peekToken().type == TokenType::Separator)\n\t\treturn ::make_unique<CDirectiveAlignFill>(UINT64_C(4),mode);\n\n\tstd::vector<Expression> list;\n\tif (parser.parseExpressionList(list,1,2) == false)\n\t\treturn nullptr;\n\n\tif (list.size() == 2)\n\t\treturn ::make_unique<CDirectiveAlignFill>(list[0],list[1],mode);\n\telse\n\t\treturn ::make_unique<CDirectiveAlignFill>(list[0],mode);\n}\n\nstd::unique_ptr<CAssemblerCommand> parseDirectiveSkip(Parser& parser, int flags)\n{\n\tstd::vector<Expression> list;\n\tif (parser.parseExpressionList(list,1,1) == false)\n\t\treturn nullptr;\n\n\treturn ::make_unique<CDirectiveSkip>(list[0]);\n}\n\nstd::unique_ptr<CAssemblerCommand> parseDirectiveHeaderSize(Parser& parser, int flags)\n{\n\tExpression exp = parser.parseExpression();\n\tif (exp.isLoaded() == false)\n\t\treturn nullptr;\n\n\treturn ::make_unique<CDirectiveHeaderSize>(exp);\n}\n\nstd::unique_ptr<CAssemblerCommand> parseDirectiveObjImport(Parser& parser, int flags)\n{\n\tstd::vector<Expression> list;\n\tif (parser.parseExpressionList(list,1,2) == false)\n\t\treturn nullptr;\n\n\tstd::wstring fileName;\n\tif (list[0].evaluateString(fileName,true) == false)\n\t\treturn nullptr;\n\n\tif (list.size() == 2)\n\t{\n\t\tstd::wstring ctorName;\n\t\tif (list[1].evaluateIdentifier(ctorName) == false)\n\t\t\treturn nullptr;\n\n\t\treturn ::make_unique<DirectiveObjImport>(fileName,ctorName);\n\t}\n\n\treturn ::make_unique<DirectiveObjImport>(fileName);\n}\n\nstd::unique_ptr<CAssemblerCommand> parseDirectiveConditional(Parser& parser, int flags)\n{\n\tConditionType type;\n\tstd::wstring name;\n\tExpression exp;\n\n\tconst Token& start = parser.peekToken();\n\tConditionalResult condResult = ConditionalResult::Unknown;\n\tswitch (flags)\n\t{\n\tcase DIRECTIVE_COND_IF:\n\t\ttype = ConditionType::IF;\n\t\texp = parser.parseExpression();\n\t\tif (exp.isLoaded() == false)\n\t\t{\n\t\t\tparser.printError(start,L\"Invalid condition\");\n\t\t\treturn ::make_unique<DummyCommand>();\n\t\t}\n\n\t\tif (exp.isConstExpression())\n\t\t{\n\t\t\tExpressionValue result = exp.evaluate();\n\t\t\tif (result.isInt())\n\t\t\t\tcondResult = result.intValue != 0 ? ConditionalResult::True : ConditionalResult::False;\n\t\t}\n\t\tbreak;\n\tcase DIRECTIVE_COND_IFDEF:\n\t\ttype = ConditionType::IFDEF;\n\t\tif (parser.parseIdentifier(name) == false)\n\t\t\treturn nullptr;\n\t\tbreak;\n\tcase DIRECTIVE_COND_IFNDEF:\n\t\ttype = ConditionType::IFNDEF;\n\t\tif (parser.parseIdentifier(name) == false)\n\t\t\treturn nullptr;\n\t\tbreak;\n\t}\n\n\tif(parser.nextToken().type != TokenType::Separator)\n\t{\n\t\tparser.printError(start,L\"Directive not terminated\");\n\t\treturn nullptr;\n\t}\n\n\tparser.pushConditionalResult(condResult);\n\tstd::unique_ptr<CAssemblerCommand> ifBlock = parser.parseCommandSequence(L'.', {L\".else\", L\".elseif\", L\".elseifdef\", L\".elseifndef\", L\".endif\"});\n\tparser.popConditionalResult();\n\n\t// update the file info so that else commands get the right line number\n\tparser.updateFileInfo();\n\n\tstd::unique_ptr<CAssemblerCommand> elseBlock = nullptr;\n\tconst Token &next = parser.nextToken();\n\tconst std::wstring stringValue = next.getStringValue();\n\n\tConditionalResult elseResult;\n\tswitch (condResult)\n\t{\n\tcase ConditionalResult::True:\n\t\telseResult = ConditionalResult::False;\n\t\tbreak;\n\tcase ConditionalResult::False:\n\t\telseResult = ConditionalResult::True;\n\t\tbreak;\n\tcase ConditionalResult::Unknown:\n\t\telseResult = condResult;\n\t\tbreak;\n\t}\n\n\tparser.pushConditionalResult(elseResult);\n\tif (stringValue == L\".else\")\n\t{\n\t\telseBlock = parser.parseCommandSequence(L'.', {L\".endif\"});\n\n\t\tparser.eatToken();\t// eat .endif\n\t} else if (stringValue == L\".elseif\")\n\t{\n\t\telseBlock = parseDirectiveConditional(parser,DIRECTIVE_COND_IF);\n\t} else if (stringValue == L\".elseifdef\")\n\t{\n\t\telseBlock = parseDirectiveConditional(parser,DIRECTIVE_COND_IFDEF);\n\t} else if (stringValue == L\".elseifndef\")\n\t{\n\t\telseBlock = parseDirectiveConditional(parser,DIRECTIVE_COND_IFNDEF);\n\t} else if (stringValue != L\".endif\")\n\t{\n\t\tparser.popConditionalResult();\n\t\treturn nullptr;\n\t}\n\n\tparser.popConditionalResult();\n\n\t// for true or false blocks, there's no need to create a conditional command\n\tif (condResult == ConditionalResult::True)\n\t{\n\t\treturn ifBlock;\n\t}\n\n\tif (condResult == ConditionalResult::False)\n\t{\n\t\tif (elseBlock != nullptr)\n\t\t\treturn elseBlock;\n\t\telse\n\t\t\treturn ::make_unique<DummyCommand>();\n\t}\n\n\tstd::unique_ptr<CDirectiveConditional> cond;\n\tif (exp.isLoaded())\n\t\tcond = ::make_unique<CDirectiveConditional>(type,exp);\n\telse if (name.size() != 0)\n\t\tcond = ::make_unique<CDirectiveConditional>(type,name);\n\telse\n\t\tcond = ::make_unique<CDirectiveConditional>(type);\n\n\tcond->setContent(std::move(ifBlock),std::move(elseBlock));\n\treturn cond;\n}\n\nstd::unique_ptr<CAssemblerCommand> parseDirectiveTable(Parser& parser, int flags)\n{\n\tconst Token& start = parser.peekToken();\n\n\tstd::vector<Expression> list;\n\tif (parser.parseExpressionList(list,1,2) == false)\n\t\treturn nullptr;\n\n\tstd::wstring fileName;\n\tif (list[0].evaluateString(fileName,true) == false)\n\t{\n\t\tparser.printError(start,L\"Invalid file name\");\n\t\treturn nullptr;\n\t}\n\n\tTextFile::Encoding encoding = TextFile::GUESS;\n\tif (list.size() == 2)\n\t{\n\t\tstd::wstring encodingName;\n\t\tif (list[1].evaluateString(encodingName,true) == false)\n\t\t{\n\t\t\tparser.printError(start,L\"Invalid encoding name\");\n\t\t\treturn nullptr;\n\t\t}\n\n\t\tencoding = getEncodingFromString(encodingName);\n\t}\n\n\treturn ::make_unique<TableCommand>(fileName,encoding);\n}\n\nstd::unique_ptr<CAssemblerCommand> parseDirectiveData(Parser& parser, int flags)\n{\n\tbool terminate = false;\n\tif (flags & DIRECTIVE_DATA_TERMINATION)\n\t{\n\t\tterminate = true;\n\t\tflags &= ~DIRECTIVE_DATA_TERMINATION;\n\t}\n\n\tstd::vector<Expression> list;\n\tif (parser.parseExpressionList(list,1,-1) == false)\n\t\treturn nullptr;\n\n\tauto data = ::make_unique<CDirectiveData>();\n\tswitch (flags & DIRECTIVE_USERMASK)\n\t{\n\tcase DIRECTIVE_DATA_8:\n\t\tdata->setNormal(list,1);\n\t\tbreak;\n\tcase DIRECTIVE_DATA_16:\n\t\tdata->setNormal(list,2);\n\t\tbreak;\n\tcase DIRECTIVE_DATA_32:\n\t\tdata->setNormal(list,4);\n\t\tbreak;\n\tcase DIRECTIVE_DATA_64:\n\t\tdata->setNormal(list,8);\n\t\tbreak;\n\tcase DIRECTIVE_DATA_ASCII:\n\t\tdata->setAscii(list,terminate);\n\t\tbreak;\n\tcase DIRECTIVE_DATA_SJIS:\n\t\tdata->setSjis(list,terminate);\n\t\tbreak;\n\tcase DIRECTIVE_DATA_CUSTOM:\n\t\tdata->setCustom(list,terminate);\n\t\tbreak;\n\tcase DIRECTIVE_DATA_FLOAT:\n\t\tdata->setFloat(list);\n\t\tbreak;\n\tcase DIRECTIVE_DATA_DOUBLE:\n\t\tdata->setDouble(list);\n\t\tbreak;\n\t}\n\n\treturn data;\n}\n\nstd::unique_ptr<CAssemblerCommand> parseDirectiveMipsArch(Parser& parser, int flags)\n{\n\tArch = &Mips;\n\tMips.SetLoadDelay(false, 0);\n\n\tswitch (flags)\n\t{\n\tcase DIRECTIVE_MIPS_PSX:\n\t\tMips.SetVersion(MARCH_PSX);\n\t\treturn ::make_unique<ArchitectureCommand>(L\".psx\", L\"\");\n\tcase DIRECTIVE_MIPS_PS2:\n\t\tMips.SetVersion(MARCH_PS2);\n\t\treturn ::make_unique<ArchitectureCommand>(L\".ps2\", L\"\");\n\tcase DIRECTIVE_MIPS_PSP:\n\t\tMips.SetVersion(MARCH_PSP);\n\t\treturn ::make_unique<ArchitectureCommand>(L\".psp\", L\"\");\n\tcase DIRECTIVE_MIPS_N64:\n\t\tMips.SetVersion(MARCH_N64);\n\t\treturn ::make_unique<ArchitectureCommand>(L\".n64\", L\"\");\n\tcase DIRECTIVE_MIPS_RSP:\n\t\tMips.SetVersion(MARCH_RSP);\n\t\treturn ::make_unique<ArchitectureCommand>(L\".rsp\", L\"\");\n\t}\n\n\treturn nullptr;\n}\n\nstd::unique_ptr<CAssemblerCommand> parseDirectiveArmArch(Parser& parser, int flags)\n{\n#ifdef ARMIPS_ARM\n\tArch = &Arm;\n\n\tswitch (flags)\n\t{\n\tcase DIRECTIVE_ARM_GBA:\n\t\tArm.SetThumbMode(true);\n\t\tArm.setVersion(AARCH_GBA);\n\t\treturn ::make_unique<ArchitectureCommand>(L\".gba\\n.thumb\", L\".thumb\");\n\tcase DIRECTIVE_ARM_NDS:\n\t\tArm.SetThumbMode(false);\n\t\tArm.setVersion(AARCH_NDS);\n\t\treturn ::make_unique<ArchitectureCommand>(L\".nds\\n.arm\", L\".arm\");\n\tcase DIRECTIVE_ARM_3DS:\n\t\tArm.SetThumbMode(false);\n\t\tArm.setVersion(AARCH_3DS);\n\t\treturn ::make_unique<ArchitectureCommand>(L\".3ds\\n.arm\", L\".arm\");\n\tcase DIRECTIVE_ARM_BIG:\n\t\tArm.SetThumbMode(false);\n\t\tArm.setVersion(AARCH_BIG);\n\t\treturn ::make_unique<ArchitectureCommand>(L\".arm.big\\n.arm\", L\".arm\");\n\tcase DIRECTIVE_ARM_LITTLE:\n\t\tArm.SetThumbMode(false);\n\t\tArm.setVersion(AARCH_LITTLE);\n\t\treturn ::make_unique<ArchitectureCommand>(L\".arm.little\\n.arm\", L\".arm\");\n\t}\n#endif\n\n\treturn nullptr;\n}\n\nstd::unique_ptr<CAssemblerCommand> parseDirectiveArea(Parser& parser, int flags)\n{\n\tstd::vector<Expression> parameters;\n\tif (parser.parseExpressionList(parameters,1,2) == false)\n\t\treturn nullptr;\n\n\tauto area = ::make_unique<CDirectiveArea>(parameters[0]);\n\tif (parameters.size() == 2)\n\t\tarea->setFillExpression(parameters[1]);\n\n\tstd::unique_ptr<CAssemblerCommand> content = parser.parseCommandSequence(L'.', {L\".endarea\"});\n\tparser.eatToken();\n\n\tarea->setContent(std::move(content));\n\treturn area;\n}\n\nstd::unique_ptr<CAssemblerCommand> parseDirectiveErrorWarning(Parser& parser, int flags)\n{\n\tconst Token &tok = parser.nextToken();\n\n\tif (tok.type != TokenType::Identifier && tok.type != TokenType::String)\n\t\treturn nullptr;\n\n\tstd::wstring stringValue = tok.getStringValue();\n\tstd::transform(stringValue.begin(),stringValue.end(),stringValue.begin(),::towlower);\n\n\tif (stringValue == L\"on\")\n\t{\n\t\tLogger::setErrorOnWarning(true);\n\t\treturn ::make_unique<DummyCommand>();\n\t} else if (stringValue == L\"off\")\n\t{\n\t\tLogger::setErrorOnWarning(false);\n\t\treturn ::make_unique<DummyCommand>();\n\t}\n\n\treturn nullptr;\n}\n\nstd::unique_ptr<CAssemblerCommand> parseDirectiveRelativeInclude(Parser& parser, int flags)\n{\n\tconst Token &tok = parser.nextToken();\n\n\tif (tok.type != TokenType::Identifier && tok.type != TokenType::String)\n\t\treturn nullptr;\n\n\tstd::wstring stringValue = tok.getStringValue();\n\tstd::transform(stringValue.begin(),stringValue.end(),stringValue.begin(),::towlower);\n\n\tif (stringValue == L\"on\")\n\t{\n\t\tGlobal.relativeInclude = true;\n\t\treturn ::make_unique<DummyCommand>();\n\t} else if (stringValue == L\"off\")\n\t{\n\t\tGlobal.relativeInclude = false;\n\t\treturn ::make_unique<DummyCommand>();\n\t}\n\n\treturn nullptr;\n}\n\nstd::unique_ptr<CAssemblerCommand> parseDirectiveNocash(Parser& parser, int flags)\n{\n\tconst Token &tok = parser.nextToken();\n\n\tif (tok.type != TokenType::Identifier && tok.type != TokenType::String)\n\t\treturn nullptr;\n\n\tstd::wstring stringValue = tok.getStringValue();\n\tstd::transform(stringValue.begin(),stringValue.end(),stringValue.begin(),::towlower);\n\n\tif (stringValue == L\"on\")\n\t{\n\t\tGlobal.nocash = true;\n\t\treturn ::make_unique<DummyCommand>();\n\t} else if (stringValue == L\"off\")\n\t{\n\t\tGlobal.nocash = false;\n\t\treturn ::make_unique<DummyCommand>();\n\t}\n\n\treturn nullptr;\n}\n\nstd::unique_ptr<CAssemblerCommand> parseDirectiveSym(Parser& parser, int flags)\n{\n\tconst Token &tok = parser.nextToken();\n\n\tif (tok.type != TokenType::Identifier && tok.type != TokenType::String)\n\t\treturn nullptr;\n\n\tstd::wstring stringValue = tok.getStringValue();\n\tstd::transform(stringValue.begin(),stringValue.end(),stringValue.begin(),::towlower);\n\n\tif (stringValue == L\"on\")\n\t\treturn ::make_unique<CDirectiveSym>(true);\n\telse if (stringValue == L\"off\")\n\t\treturn ::make_unique<CDirectiveSym>(false);\n\telse\n\t\treturn nullptr;\n}\n\nstd::unique_ptr<CAssemblerCommand> parseDirectiveDefineLabel(Parser& parser, int flags)\n{\n\tconst Token& tok = parser.nextToken();\n\tif (tok.type != TokenType::Identifier)\n\t\treturn nullptr;\n\n\tif (parser.nextToken().type != TokenType::Comma)\n\t\treturn nullptr;\n\n\tExpression value = parser.parseExpression();\n\tif (value.isLoaded() == false)\n\t\treturn nullptr;\n\n\tconst std::wstring stringValue = tok.getStringValue();\n\tif (Global.symbolTable.isValidSymbolName(stringValue) == false)\n\t{\n\t\tparser.printError(tok,L\"Invalid label name \\\"%s\\\"\",stringValue);\n\t\treturn nullptr;\n\t}\n\n\treturn ::make_unique<CAssemblerLabel>(stringValue,tok.getOriginalText(),value);\n}\n\nstd::unique_ptr<CAssemblerCommand> parseDirectiveFunction(Parser& parser, int flags)\n{\n\tconst Token& tok = parser.nextToken();\n\tif (tok.type != TokenType::Identifier)\n\t\treturn nullptr;\n\n\tif (parser.nextToken().type != TokenType::Separator)\n\t{\n\t\tparser.printError(tok,L\"Directive not terminated\");\n\t\treturn nullptr;\n\t}\n\n\tauto func = ::make_unique<CDirectiveFunction>(tok.getStringValue(),tok.getOriginalText());\n\tstd::unique_ptr<CAssemblerCommand> seq = parser.parseCommandSequence(L'.', {L\".endfunc\",L\".endfunction\",L\".func\",L\".function\"});\n\n\tconst std::wstring stringValue = parser.peekToken().getStringValue();\n\tif (stringValue == L\".endfunc\" ||\n\t\tstringValue == L\".endfunction\")\n\t{\n\t\tparser.eatToken();\n\t\tif(parser.nextToken().type != TokenType::Separator)\n\t\t{\n\t\t\tparser.printError(tok,L\"Directive not terminated\");\n\t\t\treturn nullptr;\n\t\t}\n\t}\n\n\tfunc->setContent(std::move(seq));\n\treturn func;\n}\n\nstd::unique_ptr<CAssemblerCommand> parseDirectiveMessage(Parser& parser, int flags)\n{\n\tExpression exp = parser.parseExpression();\n\n\tswitch (flags)\n\t{\n\tcase DIRECTIVE_MSG_WARNING:\n\t\treturn ::make_unique<CDirectiveMessage>(CDirectiveMessage::Type::Warning,exp);\n\tcase DIRECTIVE_MSG_ERROR:\n\t\treturn ::make_unique<CDirectiveMessage>(CDirectiveMessage::Type::Error,exp);\n\tcase DIRECTIVE_MSG_NOTICE:\n\t\treturn ::make_unique<CDirectiveMessage>(CDirectiveMessage::Type::Notice,exp);\n\t}\n\n\treturn nullptr;\n}\n\nstd::unique_ptr<CAssemblerCommand> parseDirectiveInclude(Parser& parser, int flags)\n{\n\tconst Token& start = parser.peekToken();\n\n\tstd::vector<Expression> parameters;\n\tif (parser.parseExpressionList(parameters,1,2) == false)\n\t\treturn nullptr;\n\n\tstd::wstring fileName;\n\tif (parameters[0].evaluateString(fileName,true) == false)\n\t\treturn nullptr;\n\n\tfileName = getFullPathName(fileName);\n\n\tTextFile::Encoding encoding = TextFile::GUESS;\n\tif (parameters.size() == 2)\n\t{\n\t\tstd::wstring encodingName;\n\t\tif (parameters[1].evaluateString(encodingName,true) == false\n\t\t\t&& parameters[1].evaluateIdentifier(encodingName) == false)\n\t\t\treturn nullptr;\n\n\t\tencoding = getEncodingFromString(encodingName);\n\t}\n\n\t// don't include the file if it's inside a false block\n\tif (parser.isInsideTrueBlock() == false)\n\t\treturn ::make_unique<DummyCommand>();\n\n\tif (fileExists(fileName) == false)\n\t{\n\t\tparser.printError(start,L\"Included file \\\"%s\\\" does not exist\",fileName);\n\t\treturn nullptr;\n\t}\n\n\tTextFile f;\n\tif (f.open(fileName,TextFile::Read,encoding) == false)\n\t{\n\t\tparser.printError(start,L\"Could not open included file \\\"%s\\\"\",fileName);\n\t\treturn nullptr;\n\t}\n\n\treturn parser.parseFile(f);\n}\n\nconst DirectiveMap directives = {\n\t{ L\".open\",\t\t\t\t{ &parseDirectiveOpen,\t\t\t\tDIRECTIVE_NOTINMEMORY } },\n\t{ L\".openfile\",\t\t\t{ &parseDirectiveOpen,\t\t\t\tDIRECTIVE_NOTINMEMORY } },\n\t{ L\".create\",\t\t\t{ &parseDirectiveCreate,\t\t\tDIRECTIVE_NOTINMEMORY } },\n\t{ L\".createfile\",\t\t{ &parseDirectiveCreate,\t\t\tDIRECTIVE_NOTINMEMORY } },\n\t{ L\".close\",\t\t\t{ &parseDirectiveClose,\t\t\t\tDIRECTIVE_NOTINMEMORY } },\n\t{ L\".closefile\",\t\t{ &parseDirectiveClose,\t\t\t\tDIRECTIVE_NOTINMEMORY } },\n\t{ L\".incbin\",\t\t\t{ &parseDirectiveIncbin,\t\t\t0 } },\n\t{ L\".import\",\t\t\t{ &parseDirectiveIncbin,\t\t\t0 } },\n\t{ L\".org\",\t\t\t\t{ &parseDirectivePosition,\t\t\tDIRECTIVE_POS_VIRTUAL } },\n\t{ L\"org\",\t\t\t\t{ &parseDirectivePosition,\t\t\tDIRECTIVE_POS_VIRTUAL } },\n\t{ L\".orga\",\t\t\t\t{ &parseDirectivePosition,\t\t\tDIRECTIVE_POS_PHYSICAL } },\n\t{ L\"orga\",\t\t\t\t{ &parseDirectivePosition,\t\t\tDIRECTIVE_POS_PHYSICAL } },\n\t{ L\".headersize\",\t\t{ &parseDirectiveHeaderSize,\t\t0 } },\n\t{ L\".align\",\t\t\t{ &parseDirectiveAlignFill,\t\t\tDIRECTIVE_ALIGN_VIRTUAL } },\n\t{ L\".aligna\",\t\t\t{ &parseDirectiveAlignFill,\t\t\tDIRECTIVE_ALIGN_PHYSICAL } },\n\t{ L\".fill\",\t\t\t\t{ &parseDirectiveAlignFill,\t\t\tDIRECTIVE_ALIGN_FILL } },\n\t{ L\"defs\",\t\t\t\t{ &parseDirectiveAlignFill,\t\t\tDIRECTIVE_ALIGN_FILL } },\n\t{ L\".skip\",\t\t\t\t{ &parseDirectiveSkip,\t\t\t\t0 } },\n\n\t{ L\".if\",\t\t\t\t{ &parseDirectiveConditional,\t\tDIRECTIVE_COND_IF } },\n\t{ L\".ifdef\",\t\t\t{ &parseDirectiveConditional,\t\tDIRECTIVE_COND_IFDEF } },\n\t{ L\".ifndef\",\t\t\t{ &parseDirectiveConditional,\t\tDIRECTIVE_COND_IFNDEF } },\n\n\t{ L\".loadtable\",\t\t{ &parseDirectiveTable,\t\t\t\t0 } },\n\t{ L\".table\",\t\t\t{ &parseDirectiveTable,\t\t\t\t0 } },\n\t{ L\".byte\",\t\t\t\t{ &parseDirectiveData,\t\t\t\tDIRECTIVE_DATA_8 } },\n\t{ L\".halfword\",\t\t\t{ &parseDirectiveData,\t\t\t\tDIRECTIVE_DATA_16 } },\n\t{ L\".word\",\t\t\t\t{ &parseDirectiveData,\t\t\t\tDIRECTIVE_DATA_32 } },\n\t{ L\".doubleword\",\t\t{ &parseDirectiveData,\t\t\t\tDIRECTIVE_DATA_64 } },\n\t{ L\".db\",\t\t\t\t{ &parseDirectiveData,\t\t\t\tDIRECTIVE_DATA_8 } },\n\t{ L\".dh\",\t\t\t\t{ &parseDirectiveData,\t\t\t\tDIRECTIVE_DATA_16|DIRECTIVE_NOCASHOFF } },\n\t{ L\".dw\",\t\t\t\t{ &parseDirectiveData,\t\t\t\tDIRECTIVE_DATA_32|DIRECTIVE_NOCASHOFF } },\n\t{ L\".dd\",\t\t\t\t{ &parseDirectiveData,\t\t\t\tDIRECTIVE_DATA_64|DIRECTIVE_NOCASHOFF } },\n\t{ L\".dw\",\t\t\t\t{ &parseDirectiveData,\t\t\t\tDIRECTIVE_DATA_16|DIRECTIVE_NOCASHON } },\n\t{ L\".dd\",\t\t\t\t{ &parseDirectiveData,\t\t\t\tDIRECTIVE_DATA_32|DIRECTIVE_NOCASHON } },\n\t{ L\".dcb\",\t\t\t\t{ &parseDirectiveData,\t\t\t\tDIRECTIVE_DATA_8 } },\n\t{ L\".dcw\",\t\t\t\t{ &parseDirectiveData,\t\t\t\tDIRECTIVE_DATA_16 } },\n\t{ L\".dcd\",\t\t\t\t{ &parseDirectiveData,\t\t\t\tDIRECTIVE_DATA_32 } },\n\t{ L\".dcq\",\t\t\t\t{ &parseDirectiveData,\t\t\t\tDIRECTIVE_DATA_64 } },\n\t{ L\"db\",\t\t\t\t{ &parseDirectiveData,\t\t\t\tDIRECTIVE_DATA_8 } },\n\t{ L\"dh\",\t\t\t\t{ &parseDirectiveData,\t\t\t\tDIRECTIVE_DATA_16|DIRECTIVE_NOCASHOFF } },\n\t{ L\"dw\",\t\t\t\t{ &parseDirectiveData,\t\t\t\tDIRECTIVE_DATA_32|DIRECTIVE_NOCASHOFF } },\n\t{ L\"dd\",\t\t\t\t{ &parseDirectiveData,\t\t\t\tDIRECTIVE_DATA_64|DIRECTIVE_NOCASHOFF } },\n\t{ L\"dw\",\t\t\t\t{ &parseDirectiveData,\t\t\t\tDIRECTIVE_DATA_16|DIRECTIVE_NOCASHON } },\n\t{ L\"dd\",\t\t\t\t{ &parseDirectiveData,\t\t\t\tDIRECTIVE_DATA_32|DIRECTIVE_NOCASHON } },\n\t{ L\"dcb\",\t\t\t\t{ &parseDirectiveData,\t\t\t\tDIRECTIVE_DATA_8 } },\n\t{ L\"dcw\",\t\t\t\t{ &parseDirectiveData,\t\t\t\tDIRECTIVE_DATA_16 } },\n\t{ L\"dcd\",\t\t\t\t{ &parseDirectiveData,\t\t\t\tDIRECTIVE_DATA_32 } },\n\t{ L\"dcq\",\t\t\t\t{ &parseDirectiveData,\t\t\t\tDIRECTIVE_DATA_64 } },\n\t{ L\".float\",\t\t\t{ &parseDirectiveData,\t\t\t\tDIRECTIVE_DATA_FLOAT } },\n\t{ L\".double\",\t\t\t{ &parseDirectiveData,\t\t\t\tDIRECTIVE_DATA_DOUBLE } },\n\t{ L\".ascii\",\t\t\t{ &parseDirectiveData,\t\t\t\tDIRECTIVE_DATA_ASCII } },\n\t{ L\".asciiz\",\t\t\t{ &parseDirectiveData,\t\t\t\tDIRECTIVE_DATA_ASCII|DIRECTIVE_DATA_TERMINATION } },\n\t{ L\".string\",\t\t\t{ &parseDirectiveData,\t\t\t\tDIRECTIVE_DATA_CUSTOM|DIRECTIVE_DATA_TERMINATION } },\n\t{ L\".str\",\t\t\t\t{ &parseDirectiveData,\t\t\t\tDIRECTIVE_DATA_CUSTOM|DIRECTIVE_DATA_TERMINATION } },\n\t{ L\".stringn\",\t\t\t{ &parseDirectiveData,\t\t\t\tDIRECTIVE_DATA_CUSTOM } },\n\t{ L\".strn\",\t\t\t\t{ &parseDirectiveData,\t\t\t\tDIRECTIVE_DATA_CUSTOM } },\n\t{ L\".sjis\",\t\t\t\t{ &parseDirectiveData,\t\t\t\tDIRECTIVE_DATA_SJIS|DIRECTIVE_DATA_TERMINATION } },\n\t{ L\".sjisn\",\t\t\t{ &parseDirectiveData,\t\t\t\tDIRECTIVE_DATA_SJIS } },\n\n\t{ L\".psx\",\t\t\t\t{ &parseDirectiveMipsArch,\t\t\tDIRECTIVE_MIPS_PSX } },\n\t{ L\".ps2\",\t\t\t\t{ &parseDirectiveMipsArch,\t\t\tDIRECTIVE_MIPS_PS2 } },\n\t{ L\".psp\",\t\t\t\t{ &parseDirectiveMipsArch,\t\t\tDIRECTIVE_MIPS_PSP } },\n\t{ L\".n64\",\t\t\t\t{ &parseDirectiveMipsArch,\t\t\tDIRECTIVE_MIPS_N64 } },\n\t{ L\".rsp\",\t\t\t\t{ &parseDirectiveMipsArch,\t\t\tDIRECTIVE_MIPS_RSP } },\n\n\t{ L\".gba\",\t\t\t\t{ &parseDirectiveArmArch,\t\t\tDIRECTIVE_ARM_GBA } },\n\t{ L\".nds\",\t\t\t\t{ &parseDirectiveArmArch,\t\t\tDIRECTIVE_ARM_NDS } },\n\t{ L\".3ds\",\t\t\t\t{ &parseDirectiveArmArch,\t\t\tDIRECTIVE_ARM_3DS } },\n\t{ L\".arm.big\",\t\t\t{ &parseDirectiveArmArch,\t\t\tDIRECTIVE_ARM_BIG } },\n\t{ L\".arm.little\",\t\t{ &parseDirectiveArmArch,\t\t\tDIRECTIVE_ARM_LITTLE } },\n\n\t{ L\".area\",\t\t\t\t{ &parseDirectiveArea,\t\t\t\t0 } },\n\n\t{ L\".importobj\",\t\t{ &parseDirectiveObjImport,\t\t\t0 } },\n\t{ L\".importlib\",\t\t{ &parseDirectiveObjImport,\t\t\t0 } },\n\n\t{ L\".erroronwarning\",\t{ &parseDirectiveErrorWarning,\t\t0 } },\n\t{ L\".relativeinclude\",\t{ &parseDirectiveRelativeInclude,\t0 } },\n\t{ L\".nocash\",\t\t\t{ &parseDirectiveNocash,\t\t\t0 } },\n\t{ L\".sym\",\t\t\t\t{ &parseDirectiveSym,\t\t\t\t0 } },\n\n\t{ L\".definelabel\",\t\t{ &parseDirectiveDefineLabel,\t\t0 } },\n\t{ L\".function\",\t\t\t{ &parseDirectiveFunction,\t\t\tDIRECTIVE_MANUALSEPARATOR } },\n\t{ L\".func\",\t\t\t\t{ &parseDirectiveFunction,\t\t\tDIRECTIVE_MANUALSEPARATOR } },\n\n\t{ L\".warning\",\t\t\t{ &parseDirectiveMessage,\t\t\tDIRECTIVE_MSG_WARNING } },\n\t{ L\".error\",\t\t\t{ &parseDirectiveMessage,\t\t\tDIRECTIVE_MSG_ERROR } },\n\t{ L\".notice\",\t\t\t{ &parseDirectiveMessage,\t\t\tDIRECTIVE_MSG_NOTICE } },\n\n\t{ L\".include\",\t\t\t{ &parseDirectiveInclude,\t\t\t0 } },\n};\n\n// file: Parser/ExpressionParser.cpp\n\nstatic ExpressionInternal* expression(Tokenizer& tokenizer);\n\nstatic bool allowFunctionCall = true;\n\nvoid allowFunctionCallExpression(bool allow)\n{\n\tallowFunctionCall = allow;\n}\n\nstatic ExpressionInternal* primaryExpression(Tokenizer& tokenizer)\n{\n\tconst Token &tok = tokenizer.peekToken();\n\n\tswitch (tok.type)\n\t{\n\tcase TokenType::Float:\n\t\ttokenizer.eatToken();\n\t\treturn new ExpressionInternal(tok.floatValue);\n\tcase TokenType::Identifier:\n\t\t{\n\t\t\tconst std::wstring stringValue = tok.getStringValue();\n\t\t\ttokenizer.eatToken();\n\t\t\tif (stringValue == L\".\")\n\t\t\t\treturn new ExpressionInternal(OperatorType::MemoryPos);\n\t\t\telse\n\t\t\t\treturn new ExpressionInternal(stringValue,OperatorType::Identifier);\n\t\t}\n\tcase TokenType::String:\n\t\ttokenizer.eatToken();\n\t\treturn new ExpressionInternal(tok.getStringValue(),OperatorType::String);\n\tcase TokenType::Integer:\n\t\ttokenizer.eatToken();\n\t\treturn new ExpressionInternal(tok.intValue);\n\tcase TokenType::LParen:\n\t\t{\n\t\t\ttokenizer.eatToken();\n\t\t\tExpressionInternal* exp = expression(tokenizer);\n\n\t\t\tif (tokenizer.nextToken().type != TokenType::RParen)\n\t\t\t{\n\t\t\t\tdelete exp;\n\t\t\t\treturn nullptr;\n\t\t\t}\n\n\t\t\treturn exp;\n\t\t}\n\tcase TokenType::Invalid:\n\tdefault:\n\t\tbreak;\n\t}\n\n\treturn nullptr;\n}\n\nstatic ExpressionInternal* postfixExpression(Tokenizer& tokenizer)\n{\n\tif (allowFunctionCall &&\n\t\ttokenizer.peekToken(0).type == TokenType::Identifier &&\n\t\ttokenizer.peekToken(1).type == TokenType::LParen)\n\t{\n\t\tconst std::wstring functionName = tokenizer.nextToken().getStringValue();\n\t\ttokenizer.eatToken();\n\n\t\tstd::vector<ExpressionInternal*> parameters;\n\t\twhile (tokenizer.peekToken().type != TokenType::RParen)\n\t\t{\n\t\t\tif (parameters.size() != 0 && tokenizer.nextToken().type != TokenType::Comma)\n\t\t\t{\n\t\t\t\tfor (ExpressionInternal* exp: parameters)\n\t\t\t\t\tdelete exp;\n\t\t\t\treturn nullptr;\n\t\t\t}\n\n\t\t\tExpressionInternal* exp = expression(tokenizer);\n\t\t\tif (exp == nullptr)\n\t\t\t{\n\t\t\t\tfor (ExpressionInternal* exp: parameters)\n\t\t\t\t\tdelete exp;\n\t\t\t\treturn nullptr;\n\t\t\t}\n\n\t\t\tparameters.push_back(exp);\n\t\t}\n\n\t\ttokenizer.eatToken();\n\n\t\treturn new ExpressionInternal(functionName,parameters);\n\t}\n\n\treturn primaryExpression(tokenizer);\n}\n\nstatic ExpressionInternal* unaryExpression(Tokenizer& tokenizer)\n{\n\tExpressionInternal* exp = postfixExpression(tokenizer);\n\tif (exp != nullptr)\n\t\treturn exp;\n\n\tconst TokenType opType = tokenizer.nextToken().type;\n\texp = postfixExpression(tokenizer);\n\tif (exp == nullptr)\n\t\treturn nullptr;\n\n\tswitch (opType)\n\t{\n\tcase TokenType::Plus:\n\t\treturn exp;\n\tcase TokenType::Minus:\n\t\treturn new ExpressionInternal(OperatorType::Neg,exp);\n\tcase TokenType::Tilde:\n\t\treturn new ExpressionInternal(OperatorType::BitNot,exp);\n\tcase TokenType::Exclamation:\n\t\treturn new ExpressionInternal(OperatorType::LogNot,exp);\n\tcase TokenType::Degree:\n\t\treturn new ExpressionInternal(OperatorType::ToString,exp);\n\tdefault:\n\t\tdelete exp;\n\t\treturn nullptr;\n\t}\n}\n\nstatic ExpressionInternal* multiplicativeExpression(Tokenizer& tokenizer)\n{\n\tExpressionInternal* exp = unaryExpression(tokenizer);\n\tif (exp ==  nullptr)\n\t\treturn nullptr;\n\n\twhile (true)\n\t{\n\t\tOperatorType op = OperatorType::Invalid;\n\t\tswitch (tokenizer.peekToken().type)\n\t\t{\n\t\tcase TokenType::Mult:\n\t\t\top = OperatorType::Mult;\n\t\t\tbreak;\n\t\tcase TokenType::Div:\n\t\t\top = OperatorType::Div;\n\t\t\tbreak;\n\t\tcase TokenType::Mod:\n\t\t\top = OperatorType::Mod;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t\t}\n\n\t\tif (op == OperatorType::Invalid)\n\t\t\tbreak;\n\n\t\ttokenizer.eatToken();\n\n\t\tExpressionInternal* exp2 = unaryExpression(tokenizer);\n\t\tif (exp2 == nullptr)\n\t\t{\n\t\t\tdelete exp;\n\t\t\treturn nullptr;\n\t\t}\n\n\t\texp = new ExpressionInternal(op,exp,exp2);\n\t}\n\n\treturn exp;\n}\n\nstatic ExpressionInternal* additiveExpression(Tokenizer& tokenizer)\n{\n\tExpressionInternal* exp = multiplicativeExpression(tokenizer);\n\tif (exp == nullptr)\n\t\treturn nullptr;\n\n\twhile (true)\n\t{\n\t\tOperatorType op = OperatorType::Invalid;\n\t\tswitch (tokenizer.peekToken().type)\n\t\t{\n\t\tcase TokenType::Plus:\n\t\t\top = OperatorType::Add;\n\t\t\tbreak;\n\t\tcase TokenType::Minus:\n\t\t\top = OperatorType::Sub;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t\t}\n\n\t\tif (op == OperatorType::Invalid)\n\t\t\tbreak;\n\n\t\ttokenizer.eatToken();\n\n\t\tExpressionInternal* exp2 = multiplicativeExpression(tokenizer);\n\t\tif (exp2 == nullptr)\n\t\t{\n\t\t\tdelete exp;\n\t\t\treturn nullptr;\n\t\t}\n\n\t\texp = new ExpressionInternal(op,exp,exp2);\n\t}\n\n\treturn exp;\n}\n\nstatic ExpressionInternal* shiftExpression(Tokenizer& tokenizer)\n{\n\tExpressionInternal* exp = additiveExpression(tokenizer);\n\tif (exp == nullptr)\n\t\treturn nullptr;\n\n\twhile (true)\n\t{\n\t\tOperatorType op = OperatorType::Invalid;\n\t\tswitch (tokenizer.peekToken().type)\n\t\t{\n\t\tcase TokenType::LeftShift:\n\t\t\top = OperatorType::LeftShift;\n\t\t\tbreak;\n\t\tcase TokenType::RightShift:\n\t\t\top = OperatorType::RightShift;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t\t}\n\n\t\tif (op == OperatorType::Invalid)\n\t\t\tbreak;\n\n\t\ttokenizer.eatToken();\n\n\t\tExpressionInternal* exp2 = additiveExpression(tokenizer);\n\t\tif (exp2 == nullptr)\n\t\t{\n\t\t\tdelete exp;\n\t\t\treturn nullptr;\n\t\t}\n\n\t\texp = new ExpressionInternal(op,exp,exp2);\n\t}\n\n\treturn exp;\n}\n\nstatic ExpressionInternal* relationalExpression(Tokenizer& tokenizer)\n{\n\tExpressionInternal* exp = shiftExpression(tokenizer);\n\tif (exp == nullptr)\n\t\treturn nullptr;\n\n\twhile (true)\n\t{\n\t\tOperatorType op = OperatorType::Invalid;\n\t\tswitch (tokenizer.peekToken().type)\n\t\t{\n\t\tcase TokenType::Less:\n\t\t\top = OperatorType::Less;\n\t\t\tbreak;\n\t\tcase TokenType::LessEqual:\n\t\t\top = OperatorType::LessEqual;\n\t\t\tbreak;\n\t\tcase TokenType::Greater:\n\t\t\top = OperatorType::Greater;\n\t\t\tbreak;\n\t\tcase TokenType::GreaterEqual:\n\t\t\top = OperatorType::GreaterEqual;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t\t}\n\n\t\tif (op == OperatorType::Invalid)\n\t\t\tbreak;\n\n\t\ttokenizer.eatToken();\n\n\t\tExpressionInternal* exp2 = shiftExpression(tokenizer);\n\t\tif (exp2 == nullptr)\n\t\t{\n\t\t\tdelete exp;\n\t\t\treturn nullptr;\n\t\t}\n\n\t\texp = new ExpressionInternal(op,exp,exp2);\n\t}\n\n\treturn exp;\n}\n\nstatic ExpressionInternal* equalityExpression(Tokenizer& tokenizer)\n{\n\tExpressionInternal* exp = relationalExpression(tokenizer);\n\tif (exp == nullptr)\n\t\treturn nullptr;\n\n\twhile (true)\n\t{\n\t\tOperatorType op = OperatorType::Invalid;\n\t\tswitch (tokenizer.peekToken().type)\n\t\t{\n\t\tcase TokenType::Equal:\n\t\t\top = OperatorType::Equal;\n\t\t\tbreak;\n\t\tcase TokenType::NotEqual:\n\t\t\top = OperatorType::NotEqual;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t\t}\n\n\t\tif (op == OperatorType::Invalid)\n\t\t\tbreak;\n\n\t\ttokenizer.eatToken();\n\n\t\tExpressionInternal* exp2 = relationalExpression(tokenizer);\n\t\tif (exp2 == nullptr)\n\t\t{\n\t\t\tdelete exp;\n\t\t\treturn nullptr;\n\t\t}\n\n\t\texp = new ExpressionInternal(op,exp,exp2);\n\t}\n\n\treturn exp;\n}\n\nstatic ExpressionInternal* andExpression(Tokenizer& tokenizer)\n{\n\tExpressionInternal* exp = equalityExpression(tokenizer);\n\tif (exp == nullptr)\n\t\treturn nullptr;\n\n\twhile (tokenizer.peekToken().type == TokenType::BitAnd)\n\t{\n\t\ttokenizer.eatToken();\n\n\t\tExpressionInternal* exp2 = equalityExpression(tokenizer);\n\t\tif (exp2 == nullptr)\n\t\t{\n\t\t\tdelete exp;\n\t\t\treturn nullptr;\n\t\t}\n\n\t\texp = new ExpressionInternal(OperatorType::BitAnd,exp,exp2);\n\t}\n\n\treturn exp;\n}\n\nstatic ExpressionInternal* exclusiveOrExpression(Tokenizer& tokenizer)\n{\n\tExpressionInternal* exp = andExpression(tokenizer);\n\tif (exp == nullptr)\n\t\treturn nullptr;\n\n\twhile (tokenizer.peekToken().type == TokenType::Caret)\n\t{\n\t\ttokenizer.eatToken();\n\n\t\tExpressionInternal* exp2 = andExpression(tokenizer);\n\t\tif (exp2 == nullptr)\n\t\t{\n\t\t\tdelete exp;\n\t\t\treturn nullptr;\n\t\t}\n\n\t\texp = new ExpressionInternal(OperatorType::Xor,exp,exp2);\n\t}\n\n\treturn exp;\n}\n\nstatic ExpressionInternal* inclusiveOrExpression(Tokenizer& tokenizer)\n{\n\tExpressionInternal* exp = exclusiveOrExpression(tokenizer);\n\tif (exp == nullptr)\n\t\treturn nullptr;\n\n\twhile (tokenizer.peekToken().type == TokenType::BitOr)\n\t{\n\t\ttokenizer.eatToken();\n\n\t\tExpressionInternal* exp2 = exclusiveOrExpression(tokenizer);\n\t\tif (exp2 == nullptr)\n\t\t{\n\t\t\tdelete exp;\n\t\t\treturn nullptr;\n\t\t}\n\n\t\texp = new ExpressionInternal(OperatorType::BitOr,exp,exp2);\n\t}\n\n\treturn exp;\n}\n\nstatic ExpressionInternal* logicalAndExpression(Tokenizer& tokenizer)\n{\n\tExpressionInternal* exp = inclusiveOrExpression(tokenizer);\n\tif (exp == nullptr)\n\t\treturn nullptr;\n\n\twhile (tokenizer.peekToken().type == TokenType::LogAnd)\n\t{\n\t\ttokenizer.eatToken();\n\n\t\tExpressionInternal* exp2 = inclusiveOrExpression(tokenizer);\n\t\tif (exp2 == nullptr)\n\t\t{\n\t\t\tdelete exp;\n\t\t\treturn nullptr;\n\t\t}\n\n\t\texp = new ExpressionInternal(OperatorType::LogAnd,exp,exp2);\n\t}\n\n\treturn exp;\n}\n\nstatic ExpressionInternal* logicalOrExpression(Tokenizer& tokenizer)\n{\n\tExpressionInternal* exp = logicalAndExpression(tokenizer);\n\tif (exp == nullptr)\n\t\treturn nullptr;\n\n\twhile (tokenizer.peekToken().type == TokenType::LogOr)\n\t{\n\t\ttokenizer.eatToken();\n\n\t\tExpressionInternal* exp2 = logicalAndExpression(tokenizer);\n\t\tif (exp2 == nullptr)\n\t\t{\n\t\t\tdelete exp;\n\t\t\treturn nullptr;\n\t\t}\n\n\t\texp = new ExpressionInternal(OperatorType::LogOr,exp,exp2);\n\t}\n\n\treturn exp;\n}\n\nstatic ExpressionInternal* conditionalExpression(Tokenizer& tokenizer)\n{\n\tExpressionInternal* exp = logicalOrExpression(tokenizer);\n\tif (exp == nullptr)\n\t\treturn nullptr;\n\n\t// check a ? b : c\n\tif (tokenizer.peekToken().type != TokenType::Question)\n\t\treturn exp;\n\n\ttokenizer.eatToken();\n\tExpressionInternal* second = expression(tokenizer);\n\n\tif (second != nullptr && tokenizer.nextToken().type == TokenType::Colon)\n\t{\n\t\tExpressionInternal* third = expression(tokenizer);\n\t\tif (third != nullptr)\n\t\t\treturn new ExpressionInternal(OperatorType::TertiaryIf,exp,second,third);\n\n\t\tdelete third;\n\t}\n\n\tdelete second;\n\tdelete exp;\n\treturn nullptr;\n}\n\nstatic ExpressionInternal* expression(Tokenizer& tokenizer)\n{\n\treturn conditionalExpression(tokenizer);\n}\n\nExpression parseExpression(Tokenizer& tokenizer, bool inUnknownOrFalseBlock)\n{\n\tTokenizerPosition pos = tokenizer.getPosition();\n\n\t// parse expression, revert tokenizer to previous position\n\t// if it failed\n\tExpressionInternal* exp = expression(tokenizer);\n\tif (exp == nullptr)\n\t\ttokenizer.setPosition(pos);\n\n\tExpression result;\n\tresult.setExpression(exp, inUnknownOrFalseBlock);\n\treturn result;\n}\n\n// file: Parser/Parser.cpp\n\ninline bool isPartOfList(const std::wstring& value, const std::initializer_list<const wchar_t*>& terminators)\n{\n\tfor (const wchar_t* term: terminators)\n\t{\n\t\tif (value == term)\n\t\t\treturn true;\n\t}\n\n\treturn false;\n}\n\nParser::Parser()\n{\n\tinitializingMacro = false;\n\toverrideFileInfo = false;\n\tconditionStack.push_back({true,false});\n\tclearError();\n}\n\nvoid Parser::pushConditionalResult(ConditionalResult cond)\n{\n\tConditionInfo info = conditionStack.back();\n\tinfo.inTrueBlock = info.inTrueBlock && cond != ConditionalResult::False;\n\tinfo.inUnknownBlock = info.inUnknownBlock || cond == ConditionalResult::Unknown;\n\tconditionStack.push_back(info);\n}\n\nExpression Parser::parseExpression()\n{\n\treturn ::parseExpression(*getTokenizer(), !isInsideTrueBlock() || isInsideUnknownBlock());\n}\n\nbool Parser::parseExpressionList(std::vector<Expression>& list, int min, int max)\n{\n\tbool valid = true;\n\tlist.clear();\n\tlist.reserve(max >= 0 ? max : 32);\n\n\tconst Token& start = peekToken();\n\n\tExpression exp = parseExpression();\n\tlist.push_back(exp);\n\n\tif (exp.isLoaded() == false)\n\t{\n\t\tprintError(start,L\"Parameter failure\");\n\t\tgetTokenizer()->skipLookahead();\n\t\tvalid = false;\n\t}\n\n\twhile (peekToken().type == TokenType::Comma)\n\t{\n\t\teatToken();\n\n\t\texp = parseExpression();\n\t\tlist.push_back(exp);\n\n\t\tif (exp.isLoaded() == false)\n\t\t{\n\t\t\tprintError(start,L\"Parameter failure\");\n\t\t\tgetTokenizer()->skipLookahead();\n\t\t\tvalid = false;\n\t\t}\n\t}\n\n\tif (list.size() < (size_t) min)\n\t{\n\t\tprintError(start,L\"Not enough parameters (min %d)\",min);\n\t\treturn false;\n\t}\n\n\tif (max != -1 && (size_t) max < list.size())\n\t{\n\t\tprintError(start,L\"Too many parameters (max %d)\",max);\n\t\treturn false;\n\t}\n\n\treturn valid;\n}\n\nbool Parser::parseIdentifier(std::wstring& dest)\n{\n\tconst Token& tok = nextToken();\n\tif (tok.type != TokenType::Identifier)\n\t\treturn false;\n\n\tdest = tok.getStringValue();\n\treturn true;\n}\n\nstd::unique_ptr<CAssemblerCommand> Parser::parseCommandSequence(wchar_t indicator, const std::initializer_list<const wchar_t*> terminators)\n{\n\tauto sequence = ::make_unique<CommandSequence>();\n\n\tbool foundTermination = false;\n\twhile (atEnd() == false)\n\t{\n\t\tconst Token &next = peekToken();\n\n\t\tif(next.type == TokenType::Separator)\n\t\t{\n\t\t\teatToken();\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (next.stringValueStartsWith(indicator) && isPartOfList(next.getStringValue(), terminators))\n\t\t{\n\t\t\tfoundTermination = true;\n\t\t\tbreak;\n\t\t}\n\n\t\tbool foundSomething = false;\n\t\twhile (checkEquLabel() || checkMacroDefinition())\n\t\t{\n\t\t\t// do nothing, just parse all the equs and macros there are\n\t\t\tif (hasError())\n\t\t\t\tsequence->addCommand(handleError());\n\n\t\t\tfoundSomething = true;\n\t\t}\n\n\t\tif (foundSomething)\n\t\t\tcontinue;\n\n\t\tstd::unique_ptr<CAssemblerCommand> cmd = parseCommand();\n\n\t\t// omit commands inside blocks that are trivially false\n\t\tif (isInsideTrueBlock() == false)\n\t\t{\n\t\t\tcontinue;\n\t\t}\n\n\t\tsequence->addCommand(std::move(cmd));\n\t}\n\n\tif (!foundTermination && terminators.size())\n\t{\n\t\tstd::wstring expected;\n\t\tfor (const wchar_t* terminator : terminators)\n\t\t{\n\t\t\tif (!expected.empty())\n\t\t\t\texpected += L\", \";\n\t\t\texpected += terminator;\n\t\t}\n\n\t\tLogger::printError(Logger::Error, L\"Unterminated command sequence, expected any of %s.\", expected);\n\t}\n\n\treturn sequence;\n}\n\nstd::unique_ptr<CAssemblerCommand> Parser::parseFile(TextFile& file, bool virtualFile)\n{\n\tFileTokenizer tokenizer;\n\tif (tokenizer.init(&file) == false)\n\t\treturn nullptr;\n\n\tstd::unique_ptr<CAssemblerCommand> result = parse(&tokenizer,virtualFile,file.getFileName());\n\n\tif (file.isFromMemory() == false)\n\t\tGlobal.FileInfo.TotalLineCount += file.getNumLines();\n\n\treturn result;\n}\n\nstd::unique_ptr<CAssemblerCommand> Parser::parseString(const std::wstring& text)\n{\n\tTextFile file;\n\tfile.openMemory(text);\n\treturn parseFile(file,true);\n}\n\nstd::unique_ptr<CAssemblerCommand> Parser::parseTemplate(const std::wstring& text, std::initializer_list<AssemblyTemplateArgument> variables)\n{\n\tstd::wstring fullText = text;\n\n\toverrideFileInfo = true;\n\toverrideFileNum = Global.FileInfo.FileNum;\n\toverrideLineNum = Global.FileInfo.LineNumber;\n\n\tfor (auto& arg: variables)\n\t{\n\t\tsize_t count = replaceAll(fullText,arg.variableName,arg.value);\n\t\t(void)count;\n#ifdef _DEBUG\n\t\tif (count != 0 && arg.value.empty())\n\t\t\tLogger::printError(Logger::Warning,L\"Empty replacement for %s\",arg.variableName);\n#endif\n\t}\n\n\tstd::unique_ptr<CAssemblerCommand> result = parseString(fullText);\n\toverrideFileInfo = false;\n\n\treturn result;\n}\n\nstd::unique_ptr<CAssemblerCommand> Parser::parseDirective(const DirectiveMap &directiveSet)\n{\n\tconst Token &tok = peekToken();\n\tif (tok.type != TokenType::Identifier)\n\t\treturn nullptr;\n\n\tconst std::wstring stringValue = tok.getStringValue();\n\n\tauto matchRange = directiveSet.equal_range(stringValue);\n\tfor (auto it = matchRange.first; it != matchRange.second; ++it)\n\t{\n\t\tconst DirectiveEntry &directive = it->second;\n\n\t\tif (directive.flags & DIRECTIVE_DISABLED)\n\t\t\tcontinue;\n\t\tif ((directive.flags & DIRECTIVE_NOCASHOFF) && Global.nocash == true)\n\t\t\tcontinue;\n\t\tif ((directive.flags & DIRECTIVE_NOCASHON) && Global.nocash == false)\n\t\t\tcontinue;\n\t\tif ((directive.flags & DIRECTIVE_NOTINMEMORY) && Global.memoryMode == true)\n\t\t\tcontinue;\n\n\t\tif (directive.flags & DIRECTIVE_MIPSRESETDELAY)\n\t\t\tArch->NextSection();\n\n\t\teatToken();\n\t\tstd::unique_ptr<CAssemblerCommand> result = directive.function(*this,directive.flags);\n\t\tif (result == nullptr)\n\t\t{\n\t\t\tif (hasError() == false)\n\t\t\t\tprintError(tok,L\"Directive parameter failure\");\n\t\t\treturn nullptr;\n\t\t} else if (!(directive.flags & DIRECTIVE_MANUALSEPARATOR) && nextToken().type != TokenType::Separator)\n\t\t{\n\t\t\tprintError(tok,L\"Directive not terminated\");\n\t\t\treturn nullptr;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\treturn nullptr;\n}\n\nbool Parser::matchToken(TokenType type, bool optional)\n{\n\tif (optional)\n\t{\n\t\tconst Token& token = peekToken();\n\t\tif (token.type == type)\n\t\t\teatToken();\n\t\treturn true;\n\t}\n\n\treturn nextToken().type == type;\n}\n\nstd::unique_ptr<CAssemblerCommand> Parser::parse(Tokenizer* tokenizer, bool virtualFile, const std::wstring& name)\n{\n\tif (entries.size() >= 150)\n\t{\n\t\tLogger::queueError(Logger::Error, L\"Max include/recursion depth reached\");\n\t\treturn nullptr;\n\t}\n\n\tFileEntry entry;\n\tentry.tokenizer = tokenizer;\n\tentry.virtualFile = virtualFile;\n\n\tif (virtualFile == false && name.empty() == false)\n\t{\n\t\tentry.fileNum = (int) Global.FileInfo.FileList.size();\n\t\tGlobal.FileInfo.FileList.push_back(name);\n\t} else {\n\t\tentry.fileNum = -1;\n\t}\n\n\tentries.push_back(entry);\n\n\tstd::unique_ptr<CAssemblerCommand> sequence = parseCommandSequence();\n\tentries.pop_back();\n\n\treturn sequence;\n}\n\nvoid Parser::addEquation(const Token& startToken, const std::wstring& name, const std::wstring& value)\n{\n\t// parse value string\n\tTextFile f;\n\tf.openMemory(value);\n\n\tFileTokenizer tok;\n\ttok.init(&f);\n\n\tTokenizerPosition start = tok.getPosition();\n\twhile (tok.atEnd() == false && tok.peekToken().type != TokenType::Separator)\n\t{\n\t\tconst Token& token = tok.nextToken();\n\t\tif (token.type == TokenType::Identifier && token.getStringValue() == name)\n\t\t{\n\t\t\tprintError(startToken,L\"Recursive equ definition for \\\"%s\\\" not allowed\",name);\n\t\t\treturn;\n\t\t}\n\n\t\tif (token.type == TokenType::Equ)\n\t\t{\n\t\t\tprintError(startToken,L\"equ value must not contain another equ instance\");\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// extract tokens\n\tTokenizerPosition end = tok.getPosition();\n\tstd::vector<Token> tokens = tok.getTokens(start, end);\n\tsize_t index = Tokenizer::addEquValue(tokens);\n\n\tfor (FileEntry& entry : entries)\n\t\tentry.tokenizer->resetLookaheadCheckMarks();\n\n\t// register equation\n\tGlobal.symbolTable.addEquation(name, Global.FileInfo.FileNum, Global.Section, index);\n}\n\nbool Parser::checkEquLabel()\n{\n\tupdateFileInfo();\n\n\tconst Token& start = peekToken();\n\tif (start.type == TokenType::Identifier)\n\t{\n\t\tint pos = 1;\n\t\tif (peekToken(pos).type == TokenType::Colon)\n\t\t\tpos++;\n\n\t\tif (peekToken(pos).type == TokenType::Equ &&\n\t\t\tpeekToken(pos+1).type == TokenType::EquValue)\n\t\t{\n\t\t\tstd::wstring name = peekToken(0).getStringValue();\n\t\t\tstd::wstring value = peekToken(pos+1).getStringValue();\n\t\t\teatTokens(pos+2);\n\n\t\t\t// skip the equ if it's inside a false conditional block\n\t\t\tif (isInsideTrueBlock() == false)\n\t\t\t\treturn true;\n\n\t\t\t// equs can't be inside blocks whose condition can only be\n\t\t\t// evaluated during validation\n\t\t\tif (isInsideUnknownBlock())\n\t\t\t{\n\t\t\t\tprintError(start,L\"equ not allowed inside of block with non-trivial condition\");\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// equs are not allowed in macros\n\t\t\tif (initializingMacro)\n\t\t\t{\n\t\t\t\tprintError(start,L\"equ not allowed in macro\");\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (Global.symbolTable.isValidSymbolName(name) == false)\n\t\t\t{\n\t\t\t\tprintError(start,L\"Invalid equation name \\\"%s\\\"\",name);\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (Global.symbolTable.symbolExists(name,Global.FileInfo.FileNum,Global.Section))\n\t\t\t{\n\t\t\t\tprintError(start,L\"Equation name \\\"%s\\\" already defined\",name);\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\taddEquation(start,name,value);\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\nbool Parser::checkMacroDefinition()\n{\n\tconst Token& first = peekToken();\n\tif (first.type != TokenType::Identifier)\n\t\treturn false;\n\n\tif (!first.stringValueStartsWith(L'.') || first.getStringValue() != L\".macro\")\n\t\treturn false;\n\n\teatToken();\n\n\t// nested macro definitions are not allowed\n\tif (initializingMacro)\n\t{\n\t\tprintError(first,L\"Nested macro definitions not allowed\");\n\t\twhile (!atEnd())\n\t\t{\n\t\t\tconst Token& token = nextToken();\n\t\t\tif (token.type == TokenType::Identifier && token.getStringValue() == L\".endmacro\")\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tstd::vector<Expression> parameters;\n\tif (parseExpressionList(parameters,1,-1) == false)\n\t\treturn false;\n\n\tParserMacro macro;\n\tmacro.counter = 0;\n\n\t// load name\n\tif (parameters[0].evaluateIdentifier(macro.name) == false)\n\t\treturn false;\n\n\t// load parameters\n\tfor (size_t i = 1; i < parameters.size(); i++)\n\t{\n\t\tstd::wstring name;\n\t\tif (parameters[i].evaluateIdentifier(name) == false)\n\t\t\treturn false;\n\n\t\tmacro.parameters.push_back(name);\n\t}\n\n\tif(nextToken().type != TokenType::Separator)\n\t{\n\t\tprintError(first,L\"Macro directive not terminated\");\n\t\treturn false;\n\t}\n\n\t// load macro content\n\n\tTokenizerPosition start = getTokenizer()->getPosition();\n\tbool valid = false;\n\twhile (atEnd() == false)\n\t{\n\t\tconst Token& tok = nextToken();\n\t\tif (tok.type == TokenType::Identifier && tok.getStringValue() == L\".endmacro\")\n\t\t{\n\t\t\tvalid = true;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Macros have to be defined at parse time, so they can't be defined in blocks\n\t// with non-trivial conditions\n\tif (isInsideUnknownBlock())\n\t{\n\t\tprintError(first, L\"Macro definition not allowed inside of block with non-trivial condition\");\n\t\treturn false;\n\t}\n\n\t// if we are in a known false block, don't define the macro\n\tif (!isInsideTrueBlock())\n\t\treturn true;\n\n\t// duplicate check\n\tif (macros.find(macro.name) != macros.end())\n\t{\n\t\tprintError(first, L\"Macro \\\"%s\\\" already defined\", macro.name);\n\t\treturn false;\n\t}\n\n\t// no .endmacro, not valid\n\tif (valid == false)\n\t{\n\t\tprintError(first, L\"Macro \\\"%s\\\" not terminated\", macro.name);\n\t\treturn true;\n\t}\n\n\t// get content\n\tTokenizerPosition end = getTokenizer()->getPosition().previous();\n\tmacro.content = getTokenizer()->getTokens(start,end);\n\n\tif(nextToken().type != TokenType::Separator)\n\t{\n\t\tprintError(first,L\"Endmacro directive not terminated\");\n\t\treturn false;\n\t}\n\n\tmacros[macro.name] = macro;\n\treturn true;\n}\n\nstd::unique_ptr<CAssemblerCommand> Parser::parseMacroCall()\n{\n\tconst Token& start = peekToken();\n\tif (start.type != TokenType::Identifier)\n\t\treturn nullptr;\n\n\tauto it = macros.find(start.getStringValue());\n\tif (it == macros.end())\n\t\treturn nullptr;\n\n\tParserMacro& macro = it->second;\n\teatToken();\n\n\t// create a token stream for the macro content,\n\t// registering replacements for parameter values\n\tTokenStreamTokenizer macroTokenizer;\n\n\tstd::set<std::wstring> identifierParameters;\n\tfor (size_t i = 0; i < macro.parameters.size(); i++)\n\t{\n\t\tif (peekToken().type == TokenType::Separator)\n\t\t{\n\t\t\tprintError(start,L\"Too few macro arguments (%d vs %d)\",i,macro.parameters.size());\n\t\t\treturn nullptr;\n\t\t}\n\n\t\tif (i != 0)\n\t\t{\n\t\t\tif (nextToken().type != TokenType::Comma)\n\t\t\t{\n\t\t\t\tprintError(start,L\"Macro arguments not comma-separated\");\n\t\t\t\treturn nullptr;\n\t\t\t}\n\t\t}\n\n\t\tTokenizerPosition startPos = getTokenizer()->getPosition();\n\t\tExpression exp = parseExpression();\n\t\tif (exp.isLoaded() == false)\n\t\t{\n\t\t\tprintError(start,L\"Invalid macro argument expression\");\n\t\t\treturn nullptr;\n\t\t}\n\n\t\tTokenizerPosition endPos = getTokenizer()->getPosition();\n\t\tstd::vector<Token> tokens = getTokenizer()->getTokens(startPos,endPos);\n\n\t\t// remember any single identifier parameters for the label replacement\n\t\tif (tokens.size() == 1 && tokens[0].type == TokenType::Identifier)\n\t\t\tidentifierParameters.insert(tokens[0].getStringValue());\n\n\t\t// give them as a replacement to new tokenizer\n\t\tmacroTokenizer.registerReplacement(macro.parameters[i],tokens);\n\t}\n\n\tif (peekToken().type == TokenType::Comma)\n\t{\n\t\tsize_t count = macro.parameters.size();\n\t\twhile (peekToken().type == TokenType::Comma)\n\t\t{\n\t\t\teatToken();\n\t\t\tparseExpression();\n\t\t\tcount++;\n\t\t}\n\n\t\tprintError(start,L\"Too many macro arguments (%d vs %d)\",count,macro.parameters.size());\n\t\treturn nullptr;\n\t}\n\n\tif(nextToken().type != TokenType::Separator)\n\t{\n\t\tprintError(start,L\"Macro call not terminated\");\n\t\treturn nullptr;\n\t}\n\n\t// skip macro instantiation in known false blocks\n\tif (!isInsideUnknownBlock() && !isInsideTrueBlock())\n\t\treturn ::make_unique<DummyCommand>();\n\n\t// a macro is fully parsed once when it's loaded\n\t// to gather all labels. it's not necessary to\n\t// instantiate other macros at that time\n\tif (initializingMacro)\n\t\treturn ::make_unique<DummyCommand>();\n\n\t// the first time a macro is instantiated, it needs to be analyzed\n\t// for labels\n\tif (macro.counter == 0)\n\t{\n\t\tinitializingMacro = true;\n\n\t\t// parse the short lived next command\n\t\tmacroTokenizer.init(macro.content);\n\t\tLogger::suppressErrors();\n\t\tstd::unique_ptr<CAssemblerCommand> command =  parse(&macroTokenizer,true);\n\t\tLogger::unsuppressErrors();\n\n\t\tmacro.labels = macroLabels;\n\t\tmacroLabels.clear();\n\n\t\tinitializingMacro = false;\n\t}\n\n\t// register labels and replacements\n\tfor (const std::wstring& label: macro.labels)\n\t{\n\t\t// check if the label is using the name of a parameter\n\t\t// in that case, don't register a unique replacement\n\t\tif (identifierParameters.find(label) != identifierParameters.end())\n\t\t\tcontinue;\n\n\t\t// otherwise make sure the name is unique\n\t\tstd::wstring fullName;\n\t\tif (Global.symbolTable.isLocalSymbol(label))\n\t\t\tfullName = formatString(L\"@@%s_%s_%08X\",macro.name,label.substr(2),macro.counter);\n\t\telse if (Global.symbolTable.isStaticSymbol(label))\n\t\t\tfullName = formatString(L\"@%s_%s_%08X\",macro.name,label.substr(1),macro.counter);\n\t\telse\n\t\t\tfullName = formatString(L\"%s_%s_%08X\",macro.name,label,macro.counter);\n\n\t\tmacroTokenizer.registerReplacement(label,fullName);\n\t}\n\n\tmacroTokenizer.init(macro.content);\n\tmacro.counter++;\n\n\treturn parse(&macroTokenizer,true);\n\n}\n\nstd::unique_ptr<CAssemblerCommand> Parser::parseLabel()\n{\n\tupdateFileInfo();\n\n\tconst Token& start = peekToken(0);\n\n\tif (peekToken(0).type == TokenType::Identifier &&\n\t\tpeekToken(1).type == TokenType::Colon)\n\t{\n\t\tconst std::wstring name = start.getStringValue();\n\t\teatTokens(2);\n\n\t\tif (initializingMacro)\n\t\t\tmacroLabels.insert(name);\n\n\t\tif (Global.symbolTable.isValidSymbolName(name) == false)\n\t\t{\n\t\t\tprintError(start,L\"Invalid label name \\\"%s\\\"\",name);\n\t\t\treturn nullptr;\n\t\t}\n\n\t\treturn ::make_unique<CAssemblerLabel>(name,start.getOriginalText());\n\t}\n\n\treturn nullptr;\n}\n\nstd::unique_ptr<CAssemblerCommand> Parser::handleError()\n{\n\t// skip the rest of the statement\n\twhile (!atEnd() && nextToken().type != TokenType::Separator);\n\n\tclearError();\n\treturn ::make_unique<InvalidCommand>();\n}\n\n\nvoid Parser::updateFileInfo()\n{\n\tif (overrideFileInfo)\n\t{\n\t\tGlobal.FileInfo.FileNum = overrideFileNum;\n\t\tGlobal.FileInfo.LineNumber = overrideLineNum;\n\t\treturn;\n\t}\n\n\tfor (size_t i = entries.size(); i > 0; i--)\n\t{\n\t\tsize_t index = i-1;\n\n\t\tif (entries[index].virtualFile == false && entries[index].fileNum != -1)\n\t\t{\n\t\t\tGlobal.FileInfo.FileNum = entries[index].fileNum;\n\n\t\t\t// if it's not the topmost file, then the command to instantiate the\n\t\t\t// following files was already parsed -> take the previous command's line\n\t\t\tif (index != entries.size() - 1)\n\t\t\t\tGlobal.FileInfo.LineNumber = entries[index].previousCommandLine;\n\t\t\telse\n\t\t\t{\n\t\t\t\tGlobal.FileInfo.LineNumber = (int)entries[index].tokenizer->peekToken().line;\n\t\t\t\tentries[index].previousCommandLine = Global.FileInfo.LineNumber;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t}\n}\n\nstd::unique_ptr<CAssemblerCommand> Parser::parseCommand()\n{\n\tstd::unique_ptr<CAssemblerCommand> command;\n\n\tupdateFileInfo();\n\n\tif (atEnd())\n\t\treturn ::make_unique<DummyCommand>();\n\n\tif ((command = parseLabel()) != nullptr)\n\t\treturn command;\n\tif (hasError())\n\t\treturn handleError();\n\n\tif ((command = parseMacroCall()) != nullptr)\n\t\treturn command;\n\tif (hasError())\n\t\treturn handleError();\n\n\tif ((command = Arch->parseDirective(*this)) != nullptr)\n\t\treturn command;\n\tif (hasError())\n\t\treturn handleError();\n\n\tif ((command = parseDirective(directives)) != nullptr)\n\t\treturn command;\n\tif (hasError())\n\t\treturn handleError();\n\n\tif ((command = Arch->parseOpcode(*this)) != nullptr)\n\t\treturn command;\n\tif (hasError())\n\t\treturn handleError();\n\n\tconst Token& token = peekToken();\n\tprintError(token,L\"Parse error '%s'\",token.getOriginalText());\n\treturn handleError();\n}\n\nvoid TokenSequenceParser::addEntry(int result, TokenSequence tokens, TokenValueSequence values)\n{\n\tEntry entry = { tokens, values, result };\n\tentries.push_back(entry);\n}\n\nbool TokenSequenceParser::parse(Parser& parser, int& result)\n{\n\tfor (Entry& entry: entries)\n\t{\n\t\tTokenizerPosition pos = parser.getTokenizer()->getPosition();\n\t\tauto values = entry.values.begin();\n\n\t\tbool valid = true;\n\t\tfor (TokenType type: entry.tokens)\n\t\t{\n\t\t\t// check of token type matches\n\t\t\tconst Token& token = parser.nextToken();\n\t\t\tif (token.type != type)\n\t\t\t{\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// if necessary, check if the value of the token also matches\n\t\t\tif (type == TokenType::Identifier)\n\t\t\t{\n\t\t\t\tif (values == entry.values.end() || values->textValue != token.getStringValue())\n\t\t\t\t{\n\t\t\t\t\tvalid = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tvalues++;\n\t\t\t} else if (type == TokenType::Integer)\n\t\t\t{\n\t\t\t\tif (values == entry.values.end() || values->intValue != token.intValue)\n\t\t\t\t{\n\t\t\t\t\tvalid = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tvalues++;\n\t\t\t}\n\t\t}\n\n\t\tif (valid && values == entry.values.end())\n\t\t{\n\t\t\tresult = entry.result;\n\t\t\treturn true;\n\t\t}\n\n\t\tparser.getTokenizer()->setPosition(pos);\n\t}\n\n\treturn false;\n}\n\n// file: Parser/Tokenizer.cpp\n#include <algorithm>\n\n\n//\n// Tokenizer\n//\n\nstd::vector<std::vector<Token>> Tokenizer::equValues;\n\nTokenizer::Tokenizer()\n{\n\tposition.it = tokens.begin();\n\tinvalidToken.type = TokenType::Invalid;\n\tinvalidToken.setOriginalText(L\"Unexpected end of token stream\");\n}\n\nbool Tokenizer::processElement(TokenList::iterator& it)\n{\n\tif (it == tokens.end())\n\t\treturn false;\n\n\twhile ((*it).checked == false)\n\t{\n\t\tbool replaced = false;\n\t\tif ((*it).type == TokenType::Identifier)\n\t\t{\n\t\t\tconst std::wstring stringValue = (*it).getStringValue();\n\t\t\tfor (const Replacement& replacement: replacements)\n\t\t\t{\n\t\t\t\t// if the identifier matches, add all of its tokens\n\t\t\t\tif (replacement.identifier == stringValue)\n\t\t\t\t{\n\t\t\t\t\tTokenList::iterator insertIt = it;\n\t\t\t\t\tinsertIt++;\n\n\t\t\t\t\t// replace old token with the new tokens\n\t\t\t\t\t// replace the first token manually so that any iterators\n\t\t\t\t\t// are still guaranteed to be valid\n\t\t\t\t\t(*it) = replacement.value[0];\n\t\t\t\t\ttokens.insert(insertIt,replacement.value.begin()+1, replacement.value.end());\n\n\t\t\t\t\t// If the value at this position didn't change, then just keep going.\n\t\t\t\t\t// Otherwise we'd be stuck in an endless replace loop\n\t\t\t\t\tif (stringValue != (*it).getStringValue())\n\t\t\t\t\t\treplaced = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (replaced)\n\t\t\t\tcontinue;\n\n\t\t\t// check for equs\n\t\t\tsize_t index;\n\t\t\tif (Global.symbolTable.findEquation(stringValue,Global.FileInfo.FileNum,Global.Section,index))\n\t\t\t{\n\t\t\t\tTokenList::iterator nextIt = it;\n\t\t\t\tstd::advance(nextIt, 1);\n\n\t\t\t\t// check if this is another equ with the same name.\n\t\t\t\t// if so, keep equ redefinitions for later error handling\n\t\t\t\tif (nextIt != tokens.end() && nextIt->type == TokenType::Equ)\n\t\t\t\t\tbreak;\n\n\t\t\t\t// make room for the replacement tokens\n\t\t\t\tconst std::vector<Token>& replacement = equValues[index];\n\t\t\t\ttokens.insert(nextIt, replacement.size()-1, {});\n\n\t\t\t\t// insert replacement tokens, while keeping the file info of the original token\n\t\t\t\tToken originalToken = *it;\n\n\t\t\t\tTokenList::iterator insertIt = it;\n\t\t\t\tfor (const Token& token: replacement)\n\t\t\t\t{\n\t\t\t\t\t(*insertIt) = token;\n\t\t\t\t\tinsertIt->line = originalToken.line;\n\t\t\t\t\tinsertIt->column = originalToken.column;\n\t\t\t\t\tstd::advance(insertIt, 1);\n\t\t\t\t}\n\n\t\t\t\treplaced = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tif (replaced == false)\n\t\t\t(*it).checked = true;\n\t}\n\n\treturn true;\n}\n\nconst Token& Tokenizer::nextToken()\n{\n\tif (processElement(position.it) == false)\n\t\treturn invalidToken;\n\n\treturn *position.it++;\n}\n\nconst Token& Tokenizer::peekToken(int ahead)\n{\n\tauto it = position.it;\n\tfor (int i = 0; i < ahead; i++)\n\t{\n\t\tif (processElement(it) == false)\n\t\t\treturn invalidToken;\n\n\t\tit++;\n\t}\n\n\tif (processElement(it) == false)\n\t\treturn invalidToken;\n\n\treturn *it;\n}\n\nvoid Tokenizer::eatTokens(int num)\n{\n\tfor (int i = 0; i < num; i++)\n\t{\n\t\tif (processElement(position.it) == false)\n\t\t\tbreak;\n\t\tposition.it++;\n\t}\n}\n\nvoid Tokenizer::skipLookahead()\n{\n\t//position.index = tokens.size();\n}\n\nstd::vector<Token> Tokenizer::getTokens(TokenizerPosition start, TokenizerPosition end) const\n{\n\tstd::vector<Token> result;\n\n\tfor (auto it = start.it; it != end.it; it++)\n\t{\n\t\tToken tok = *it;\n\t\ttok.checked = false;\n\t\tresult.push_back(tok);\n\t}\n\n\treturn result;\n}\n\nvoid Tokenizer::registerReplacement(const std::wstring& identifier, std::vector<Token>& tokens)\n{\n\tReplacement replacement { identifier, tokens };\n\treplacements.push_back(replacement);\n}\n\nvoid Tokenizer::registerReplacement(const std::wstring& identifier, const std::wstring& newValue)\n{\n\t// Ensure the new identifier is lower case as it would be as a normally parsed string\n\tstd::wstring lowerCase = newValue;\n\tstd::transform(lowerCase.begin(), lowerCase.end(), lowerCase.begin(), ::towlower);\n\n\tToken tok;\n\ttok.type = TokenType::Identifier;\n\ttok.setStringValue(lowerCase);\n\ttok.setOriginalText(newValue);\n\n\tReplacement replacement;\n\treplacement.identifier = identifier;\n\treplacement.value.push_back(tok);\n\n\treplacements.push_back(replacement);\n}\n\nvoid Tokenizer::addToken(Token token)\n{\n\ttokens.push_back(std::move(token));\n}\n\nsize_t Tokenizer::addEquValue(const std::vector<Token>& tokens)\n{\n\tsize_t index = equValues.size();\n\tequValues.push_back(tokens);\n\treturn index;\n}\n\nvoid Tokenizer::resetLookaheadCheckMarks()\n{\n\tauto it = position.it;\n\twhile (it != tokens.end() && it->checked)\n\t{\n\t\tit->checked = false;\n\t\tit++;\n\t}\n}\n\n//\n// FileTokenizer\n//\n\ninline bool isWhitespace(const std::wstring& text, size_t pos)\n{\n\tif (pos >= text.size())\n\t\treturn false;\n\n\treturn text[pos] == ' ' || text[pos] == '\\t';\n}\n\ninline bool isComment(const std::wstring& text, size_t pos)\n{\n\tif (pos < text.size() && text[pos] == ';')\n\t\treturn true;\n\n\tif (pos+1 < text.size() && text[pos+0] == '/' && text[pos+1] == '/')\n\t\treturn true;\n\n\treturn false;\n}\n\ninline bool isContinuation(const std::wstring& text, size_t pos)\n{\n\tif (pos >= text.size())\n\t\treturn false;\n\n\treturn text[pos] == '\\\\';\n}\n\ninline bool isBlockComment(const std::wstring& text, size_t pos){\n\tif (pos+1 < text.size() && text[pos+0] == '/' && text[pos+1] == '*')\n\t\treturn true;\n\n\treturn false;\n}\n\ninline bool isBlockCommentEnd(const std::wstring& text, size_t pos){\n\tif (pos+1 < text.size() && text[pos+0] == '*' && text[pos+1] == '/')\n\t\treturn true;\n\n\treturn false;\n}\n\nvoid FileTokenizer::skipWhitespace()\n{\n\twhile (true)\n\t{\n\t\tif (isWhitespace(currentLine,linePos))\n\t\t{\n\t\t\tdo { linePos++; } while (isWhitespace(currentLine,linePos));\n\t\t} else if (isComment(currentLine,linePos))\n\t\t{\n\t\t\tlinePos = currentLine.size();\n\t\t} else if (isBlockComment(currentLine,linePos))\n\t\t{\n\t\t\tlinePos += 2;\n\t\t\twhile(!isBlockCommentEnd(currentLine,linePos))\n\t\t\t{\n\t\t\t\tlinePos++;\n\t\t\t\tif (linePos >= currentLine.size())\n\t\t\t\t{\n\t\t\t\t\tif (isInputAtEnd())\n\t\t\t\t\t{\n\t\t\t\t\t\tcreateToken(TokenType::Invalid,linePos,L\"Unexpected end of file in block comment\");\n\t\t\t\t\t\taddToken(token);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tcurrentLine = input->readLine();\n\t\t\t\t\tlinePos = 0;\n\t\t\t\t\tlineNumber++;\n\t\t\t\t}\n\t\t\t}\n\t\t\tlinePos += 2;\n\t\t} else\n\t\t{\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\nvoid FileTokenizer::createToken(TokenType type, size_t length)\n{\n\ttoken.type = type;\n\ttoken.line = lineNumber;\n\ttoken.column = linePos+1;\n\ttoken.setOriginalText(currentLine,linePos,length);\n\n\tlinePos += length;\n}\n\nvoid FileTokenizer::createToken(TokenType type, size_t length, int64_t value)\n{\n\ttoken.type = type;\n\ttoken.line = lineNumber;\n\ttoken.column = linePos+1;\n\ttoken.setOriginalText(currentLine,linePos,length);\n\ttoken.intValue = value;\n\n\tlinePos += length;\n}\n\nvoid FileTokenizer::createToken(TokenType type, size_t length, double value)\n{\n\ttoken.type = type;\n\ttoken.line = lineNumber;\n\ttoken.column = linePos+1;\n\ttoken.setOriginalText(currentLine,linePos,length);\n\ttoken.floatValue = value;\n\n\tlinePos += length;\n}\n\nvoid FileTokenizer::createToken(TokenType type, size_t length, const std::wstring& value)\n{\n\tcreateToken(type, length, value, 0, value.length());\n}\n\nvoid FileTokenizer::createToken(TokenType type, size_t length, const std::wstring& value, size_t valuePos, size_t valueLength)\n{\n\ttoken.type = type;\n\ttoken.line = lineNumber;\n\ttoken.column = linePos+1;\n\ttoken.setOriginalText(currentLine,linePos,length);\n\ttoken.setStringValue(value,valuePos,valueLength);\n\n\tlinePos += length;\n}\n\nvoid FileTokenizer::createTokenCurrentString(TokenType type, size_t length)\n{\n\ttoken.type = type;\n\ttoken.line = lineNumber;\n\ttoken.column = linePos+1;\n\ttoken.setStringAndOriginalValue(currentLine,linePos,length);\n\n\tlinePos += length;\n}\n\nbool FileTokenizer::parseOperator()\n{\n\twchar_t first = currentLine[linePos];\n\twchar_t second = linePos+1 >= currentLine.size() ? '\\0' : currentLine[linePos+1];\n\n\tswitch (first)\n\t{\n\tcase '(':\n\t\tcreateToken(TokenType::LParen,1);\n\t\treturn true;\n\tcase ')':\n\t\tcreateToken(TokenType::RParen,1);\n\t\treturn true;\n\tcase '+':\n\t\tcreateToken(TokenType::Plus,1);\n\t\treturn true;\n\tcase '-':\n\t\tcreateToken(TokenType::Minus,1);\n\t\treturn true;\n\tcase '*':\n\t\tcreateToken(TokenType::Mult,1);\n\t\treturn true;\n\tcase '/':\n\t\tcreateToken(TokenType::Div,1);\n\t\treturn true;\n\tcase '%':\n\t\tcreateToken(TokenType::Mod,1);\n\t\treturn true;\n\tcase '^':\n\t\tcreateToken(TokenType::Caret,1);\n\t\treturn true;\n\tcase '~':\n\t\tcreateToken(TokenType::Tilde,1);\n\t\treturn true;\n\tcase '<':\n\t\tif (second == '<')\n\t\t\tcreateToken(TokenType::LeftShift,2);\n\t\telse if (second == '=')\n\t\t\tcreateToken(TokenType::LessEqual,2);\n\t\telse\n\t\t\tcreateToken(TokenType::Less,1);\n\t\treturn true;\n\tcase '>':\n\t\tif (second == '>')\n\t\t\tcreateToken(TokenType::RightShift,2);\n\t\telse if (second == '=')\n\t\t\tcreateToken(TokenType::GreaterEqual,2);\n\t\telse\n\t\t\tcreateToken(TokenType::Greater,1);\n\t\treturn true;\n\tcase '=':\n\t\tif (second == '=')\n\t\t\tcreateToken(TokenType::Equal,2);\n\t\telse\n\t\t\tcreateToken(TokenType::Assign,1);\n\t\treturn true;\n\tcase '!':\n\t\tif (second == '=')\n\t\t\tcreateToken(TokenType::NotEqual,2);\n\t\telse\n\t\t\tcreateToken(TokenType::Exclamation,1);\n\t\treturn true;\n\tcase '&':\n\t\tif (second == '&')\n\t\t\tcreateToken(TokenType::LogAnd,2);\n\t\telse\n\t\t\tcreateToken(TokenType::BitAnd,1);\n\t\treturn true;\n\tcase '|':\n\t\tif (second == '|')\n\t\t\tcreateToken(TokenType::LogOr,2);\n\t\telse\n\t\t\tcreateToken(TokenType::BitOr,1);\n\t\treturn true;\n\tcase '?':\n\t\tcreateToken(TokenType::Question,1);\n\t\treturn true;\n\tcase ':':\n\t\tif (second == ':')\n\t\t\tcreateToken(TokenType::Separator,2);\n\t\telse\n\t\t\tcreateToken(TokenType::Colon,1);\n\t\treturn true;\n\tcase ',':\n\t\tcreateToken(TokenType::Comma,1);\n\t\treturn true;\n\tcase '[':\n\t\tcreateToken(TokenType::LBrack,1);\n\t\treturn true;\n\tcase ']':\n\t\tcreateToken(TokenType::RBrack,1);\n\t\treturn true;\n\tcase '#':\n\t\tcreateToken(TokenType::Hash,1);\n\t\treturn true;\n\tcase '{':\n\t\tcreateToken(TokenType::LBrace,1);\n\t\treturn true;\n\tcase '}':\n\t\tcreateToken(TokenType::RBrace,1);\n\t\treturn true;\n\tcase '$':\n\t\tcreateToken(TokenType::Dollar,1);\n\t\treturn true;\n\tcase L'\\U000000B0':\t// degree sign\n\t\tcreateToken(TokenType::Degree,1);\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\nbool FileTokenizer::convertInteger(size_t start, size_t end, int64_t& result)\n{\n\treturn stringToInt(currentLine, start, end, result);\n}\n\nbool FileTokenizer::convertFloat(size_t start, size_t end, double& result)\n{\n\tstd::wstring str = currentLine.substr(start, end - start);\n\twchar_t* end_ptr;\n\n\tresult = wcstod(str.c_str(), &end_ptr);\n\treturn str.c_str() + str.size() == end_ptr;\n}\n\nToken FileTokenizer::loadToken()\n{\n\tif (isInputAtEnd())\n\t{\n\t\tcreateToken(TokenType::Invalid,0);\n\t\treturn std::move(token);\n\t}\n\n\tsize_t pos = linePos;\n\n\tif (equActive)\n\t{\n\t\twhile (pos < currentLine.size() && !isComment(currentLine,pos))\n\t\t\tpos++;\n\n\t\tcreateTokenCurrentString(TokenType::EquValue,pos-linePos);\n\n\t\tequActive = false;\n\t\treturn std::move(token);\n\t}\n\n\tif (parseOperator())\n\t\treturn std::move(token);\n\n\twchar_t first = currentLine[pos];\n\n\t// character constants\n\tif (first == '\\'' && pos+2 < currentLine.size() && currentLine[pos+2] == '\\'')\n\t{\n\t\tcreateToken(TokenType::Integer,3,(int64_t)currentLine[pos+1]);\n\t\treturn std::move(token);\n\t}\n\n\t// strings\n\tif (first == '\"')\n\t{\n\t\tstd::wstring text;\n\t\tpos++;\n\n\t\tbool valid = false;\n\t\twhile (pos < currentLine.size())\n\t\t{\n\t\t\tif (pos+1 < currentLine.size() && currentLine[pos] == '\\\\')\n\t\t\t{\n\t\t\t\tif (currentLine[pos+1] == '\"')\n\t\t\t\t{\n\t\t\t\t\ttext += '\"';\n\t\t\t\t\tpos += 2;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (currentLine[pos+1] == '\\\\')\n\t\t\t\t{\n\t\t\t\t\ttext += '\\\\';\n\t\t\t\t\tpos += 2;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (currentLine[pos] == '\"')\n\t\t\t{\n\t\t\t\tpos++;\n\t\t\t\tvalid = true;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\ttext += currentLine[pos++];\n\t\t}\n\n\t\tif (!valid)\n\t\t{\n\t\t\tcreateToken(TokenType::Invalid,pos-linePos,L\"Unexpected end of line in string constant\");\n\t\t\treturn std::move(token);\n\t\t}\n\n\t\tcreateToken(TokenType::String,pos-linePos,text);\n\t\treturn std::move(token);\n\t}\n\n\t// numbers\n\tif (first >= '0' && first <= '9')\n\t{\n\t\t// find end of number\n\t\tsize_t start = pos;\n\t\tsize_t end = pos;\n\t\tbool isValid = true;\n\t\tbool foundPoint = false;\n\t\tbool foundExp = false;\n\t\tbool foundExpSign = false;\n\t\tbool isHex = start+1 < currentLine.size() && currentLine[start] == '0' && towlower(currentLine[start+1]) == 'x';\n\n\t\twhile (end < currentLine.size() && (iswalnum(currentLine[end]) || currentLine[end] == '.'))\n\t\t{\n\t\t\tif (currentLine[end] == '.')\n\t\t\t{\n\t\t\t\tif (foundExp || foundPoint)\n\t\t\t\t\tisValid = false;\n\t\t\t\tfoundPoint = true;\n\t\t\t} else if (towlower(currentLine[end]) == 'h' && !foundExpSign) {\n\t\t\t\tisHex = true;\n\t\t\t} else if (towlower(currentLine[end]) == 'e' && !isHex)\n\t\t\t{\n\t\t\t\tif (foundExp)\n\t\t\t\t{\n\t\t\t\t\tisValid = false;\n\t\t\t\t} else if (end+1 < currentLine.size() && (currentLine[end+1] == '+' || currentLine[end+1] == '-')){\n\t\t\t\t\tend++;\n\t\t\t\t\tif (end+1 >= currentLine.size() || !iswalnum(currentLine[end+1]))\n\t\t\t\t\t\tisValid = false;\n\t\t\t\t\tfoundExpSign = true;\n\t\t\t\t}\n\t\t\t\tfoundExp = true;\n\t\t\t}\n\n\t\t\tend++;\n\t\t}\n\n\t\tbool isFloat = foundPoint || (foundExp && !isHex);\n\n\t\tif (!isFloat)\n\t\t{\n\t\t\tint64_t value;\n\t\t\tif (convertInteger(start,end,value) == false)\n\t\t\t{\n\t\t\t\tcreateTokenCurrentString(TokenType::NumberString,end-start);\n\t\t\t\treturn std::move(token);\n\t\t\t}\n\n\t\t\tcreateToken(TokenType::Integer,end-start,value);\n\t\t} else { // isFloat\n\t\t\tdouble value;\n\t\t\tif (isValid == false)\n\t\t\t{\n\t\t\t\tcreateToken(TokenType::Invalid,end-start,L\"Invalid floating point number\");\n\t\t\t\treturn std::move(token);\n\t\t\t}\n\n\t\t\tif (convertFloat(start,end,value) == false)\n\t\t\t{\n\t\t\t\tcreateTokenCurrentString(TokenType::NumberString,end-start);\n\t\t\t\treturn std::move(token);\n\t\t\t}\n\n\t\t\tcreateToken(TokenType::Float,end-start,value);\n\t\t}\n\n\t\treturn std::move(token);\n\t}\n\n\t// identifiers\n\tbool isFirst = true;\n\twhile (pos < currentLine.size() && Global.symbolTable.isValidSymbolCharacter(currentLine[pos],isFirst))\n\t{\n\t\tpos++;\n\t\tisFirst = false;\n\t}\n\n\tif (pos == linePos)\n\t{\n\t\tstd::wstring text = formatString(L\"Invalid input '%c'\",currentLine[pos]);\n\t\tcreateToken(TokenType::Invalid,1,text);\n\t\treturn std::move(token);\n\t}\n\n\tstd::wstring text = currentLine.substr(linePos,pos-linePos);\n\tbool textLowered = false;\n\t// Lowercase is common, let's try to avoid a copy.\n\tif (std::any_of(text.begin(), text.end(), ::iswupper))\n\t{\n\t\tstd::transform(text.begin(), text.end(), text.begin(), ::towlower);\n\t\ttextLowered = true;\n\t}\n\n\tif (text == L\"equ\")\n\t{\n\t\tcreateToken(TokenType::Equ,pos-linePos);\n\t\tequActive = true;\n\t} else if (textLowered) {\n\t\tcreateToken(TokenType::Identifier,pos-linePos,text);\n\t} else {\n\t\tcreateTokenCurrentString(TokenType::Identifier,pos-linePos);\n\t}\n\n\treturn std::move(token);\n}\n\nbool FileTokenizer::init(TextFile* input)\n{\n\tclearTokens();\n\n\tlineNumber = 1;\n\tlinePos = 0;\n\tequActive = false;\n\tcurrentLine = input->readLine();\n\n\tthis->input = input;\n\tif (input != nullptr && input->isOpen())\n\t{\n\t\twhile (!isInputAtEnd())\n\t\t{\n\t\t\tbool addSeparator = true;\n\n\t\t\tskipWhitespace();\n\t\t\tif (isContinuation(currentLine, linePos))\n\t\t\t{\n\t\t\t\tlinePos++;\n\t\t\t\tskipWhitespace();\n\t\t\t\tif (linePos < currentLine.size())\n\t\t\t\t{\n\t\t\t\t\tcreateToken(TokenType::Invalid,0,\n\t\t\t\t\t\tL\"Unexpected character after line continuation character\");\n\t\t\t\t\taddToken(token);\n\t\t\t\t}\n\n\t\t\t\taddSeparator = false;\n\t\t\t} else if(linePos < currentLine.size())\n\t\t\t{\n\t\t\t\taddToken(std::move(loadToken()));\n\t\t\t}\n\n\t\t\tif (linePos >= currentLine.size())\n\t\t\t{\n\t\t\t\tif (addSeparator)\n\t\t\t\t{\n\t\t\t\t\tcreateToken(TokenType::Separator,0);\n\t\t\t\t\taddToken(token);\n\t\t\t\t}\n\n\t\t\t\tif (input->atEnd())\n\t\t\t\t\tbreak;\n\n\t\t\t\tcurrentLine = input->readLine();\n\t\t\t\tlinePos = 0;\n\t\t\t\tlineNumber++;\n\t\t\t}\n\t\t}\n\n\t\tresetPosition();\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\n// file: Util/ByteArray.cpp\n\nByteArray::ByteArray()\n{\n\tdata_ = nullptr;\n\tsize_ = allocatedSize_ = 0;\n}\n\nByteArray::ByteArray(const ByteArray& other)\n{\n\tdata_ = nullptr;\n\tsize_ = allocatedSize_ = 0;\n\tappend(other);\n}\n\nByteArray::ByteArray(byte* data, size_t size)\n{\n\tdata_ = nullptr;\n\tsize_ = allocatedSize_ = 0;\n\tappend(data,size);\n}\n\nByteArray::ByteArray(ByteArray&& other)\n{\n\tdata_ = other.data_;\n\tsize_ = other.size_;\n\tallocatedSize_ = other.allocatedSize_;\n\tother.data_ = nullptr;\n\tother.allocatedSize_ = other.size_ = 0;\n}\n\nByteArray::~ByteArray()\n{\n\tfree(data_);\n}\n\nByteArray& ByteArray::operator=(ByteArray& other)\n{\n\tfree(data_);\n\tdata_ = nullptr;\n\tsize_ = allocatedSize_ = 0;\n\tappend(other);\n\n\treturn *this;\n}\n\nByteArray& ByteArray::operator=(ByteArray&& other)\n{\n\tdata_ = other.data_;\n\tsize_ = other.size_;\n\tallocatedSize_ = other.allocatedSize_;\n\tother.data_ = nullptr;\n\tother.allocatedSize_ = other.size_ = 0;\n\treturn *this;\n}\n\nvoid ByteArray::grow(size_t neededSize)\n{\n\tif (neededSize < allocatedSize_) return;\n\n\t// align to next 0.5kb... it's a start\n\tallocatedSize_ = ((neededSize+511)/512)*512;\n\tif (data_ == nullptr)\n\t{\n\t\tdata_ = (byte*) malloc(allocatedSize_);\n\t} else {\n\t\tdata_ = (byte*) realloc(data_,allocatedSize_);\n\t}\n}\n\nsize_t ByteArray::append(const ByteArray& other)\n{\n\tsize_t oldSize = size();\n\tsize_t otherSize = other.size();\n\tgrow(size()+otherSize);\n\tmemcpy(&data_[size_],other.data(),otherSize);\n\tsize_ += otherSize;\n\treturn oldSize;\n}\n\nsize_t ByteArray::append(void* data, size_t size)\n{\n\tsize_t oldSize = this->size();\n\tgrow(this->size()+size);\n\tmemcpy(&data_[size_],data,size);\n\tthis->size_ += size;\n\treturn oldSize;\n}\n\nvoid ByteArray::replaceBytes(size_t pos, byte* data, size_t size)\n{\n\tfor (size_t i = 0; i < size; i++)\n\t{\n\t\treplaceByte(pos+i,data[i]);\n\t}\n}\n\nvoid ByteArray::reserveBytes(size_t count, byte value)\n{\n\tgrow(this->size()+count);\n\tmemset(&data_[size_],value,count);\n\tsize_ += count;\n}\n\nvoid ByteArray::alignSize(size_t alignment)\n{\n\tif (alignment <= 0) return;\n\n\twhile (size_ % alignment)\n\t{\n\t\tappendByte(0);\n\t}\n}\n\nvoid ByteArray::resize(size_t newSize)\n{\n\tgrow(newSize);\n\tsize_ = newSize;\n}\n\nByteArray ByteArray::mid(size_t start, ssize_t length)\n{\n\tByteArray ret;\n\n\tif (length < 0)\n\t\tlength = size_-start;\n\n\tif (start >= size_)\n\t\treturn ret;\n\n\tret.grow(length);\n\tret.size_ = length;\n\tmemcpy(ret.data_,&data_[start],length);\n\treturn ret;\n}\n\nByteArray ByteArray::fromFile(const std::wstring& fileName, long start, size_t size)\n{\n\tByteArray ret;\n\n\tFILE* input = openFile(fileName,OpenFileMode::ReadBinary);\n\tif (input == nullptr)\n\t\treturn ret;\n\n\tfseek(input,0,SEEK_END);\n\tlong fileSize = ftell(input);\n\n\tif (start >= fileSize)\n\t{\n\t\tfclose(input);\n\t\treturn ret;\n\t}\n\n\tif (size == 0 || start+(long)size > fileSize)\n\t\tsize = fileSize-start;\n\n\tfseek(input,start,SEEK_SET);\n\n\tret.grow(size);\n\tret.size_ = fread(ret.data(),1,size,input);\n\tfclose(input);\n\n\treturn ret;\n}\n\nbool ByteArray::toFile(const std::wstring& fileName)\n{\n\tFILE* output = openFile(fileName,OpenFileMode::WriteBinary);\n\tif (output == nullptr) return false;\n\tsize_t length = fwrite(data_,1,size_,output);\n\tfclose(output);\n\treturn length == size_;\n}\n\n// file: Util/CRC.cpp\n#include <stdio.h>\n\nconst unsigned short Crc16Table[] = /* CRC lookup table */\n{\n\t0x0000, 0xC0C1, 0xC181, 0x0140, 0xC301, 0x03C0, 0x0280, 0xC241,\n\t0xC601, 0x06C0, 0x0780, 0xC741, 0x0500, 0xC5C1, 0xC481, 0x0440,\n\t0xCC01, 0x0CC0, 0x0D80, 0xCD41, 0x0F00, 0xCFC1, 0xCE81, 0x0E40,\n\t0x0A00, 0xCAC1, 0xCB81, 0x0B40, 0xC901, 0x09C0, 0x0880, 0xC841,\n\t0xD801, 0x18C0, 0x1980, 0xD941, 0x1B00, 0xDBC1, 0xDA81, 0x1A40,\n\t0x1E00, 0xDEC1, 0xDF81, 0x1F40, 0xDD01, 0x1DC0, 0x1C80, 0xDC41,\n\t0x1400, 0xD4C1, 0xD581, 0x1540, 0xD701, 0x17C0, 0x1680, 0xD641,\n\t0xD201, 0x12C0, 0x1380, 0xD341, 0x1100, 0xD1C1, 0xD081, 0x1040,\n\t0xF001, 0x30C0, 0x3180, 0xF141, 0x3300, 0xF3C1, 0xF281, 0x3240,\n\t0x3600, 0xF6C1, 0xF781, 0x3740, 0xF501, 0x35C0, 0x3480, 0xF441,\n\t0x3C00, 0xFCC1, 0xFD81, 0x3D40, 0xFF01, 0x3FC0, 0x3E80, 0xFE41,\n\t0xFA01, 0x3AC0, 0x3B80, 0xFB41, 0x3900, 0xF9C1, 0xF881, 0x3840,\n\t0x2800, 0xE8C1, 0xE981, 0x2940, 0xEB01, 0x2BC0, 0x2A80, 0xEA41,\n\t0xEE01, 0x2EC0, 0x2F80, 0xEF41, 0x2D00, 0xEDC1, 0xEC81, 0x2C40,\n\t0xE401, 0x24C0, 0x2580, 0xE541, 0x2700, 0xE7C1, 0xE681, 0x2640,\n\t0x2200, 0xE2C1, 0xE381, 0x2340, 0xE101, 0x21C0, 0x2080, 0xE041,\n\t0xA001, 0x60C0, 0x6180, 0xA141, 0x6300, 0xA3C1, 0xA281, 0x6240,\n\t0x6600, 0xA6C1, 0xA781, 0x6740, 0xA501, 0x65C0, 0x6480, 0xA441,\n\t0x6C00, 0xACC1, 0xAD81, 0x6D40, 0xAF01, 0x6FC0, 0x6E80, 0xAE41,\n\t0xAA01, 0x6AC0, 0x6B80, 0xAB41, 0x6900, 0xA9C1, 0xA881, 0x6840,\n\t0x7800, 0xB8C1, 0xB981, 0x7940, 0xBB01, 0x7BC0, 0x7A80, 0xBA41,\n\t0xBE01, 0x7EC0, 0x7F80, 0xBF41, 0x7D00, 0xBDC1, 0xBC81, 0x7C40,\n\t0xB401, 0x74C0, 0x7580, 0xB541, 0x7700, 0xB7C1, 0xB681, 0x7640,\n\t0x7200, 0xB2C1, 0xB381, 0x7340, 0xB101, 0x71C0, 0x7080, 0xB041,\n\t0x5000, 0x90C1, 0x9181, 0x5140, 0x9301, 0x53C0, 0x5280, 0x9241,\n\t0x9601, 0x56C0, 0x5780, 0x9741, 0x5500, 0x95C1, 0x9481, 0x5440,\n\t0x9C01, 0x5CC0, 0x5D80, 0x9D41, 0x5F00, 0x9FC1, 0x9E81, 0x5E40,\n\t0x5A00, 0x9AC1, 0x9B81, 0x5B40, 0x9901, 0x59C0, 0x5880, 0x9841,\n\t0x8801, 0x48C0, 0x4980, 0x8941, 0x4B00, 0x8BC1, 0x8A81, 0x4A40,\n\t0x4E00, 0x8EC1, 0x8F81, 0x4F40, 0x8D01, 0x4DC0, 0x4C80, 0x8C41,\n\t0x4400, 0x84C1, 0x8581, 0x4540, 0x8701, 0x47C0, 0x4680, 0x8641,\n\t0x8201, 0x42C0, 0x4380, 0x8341, 0x4100, 0x81C1, 0x8081, 0x4040\n};\n\nconst unsigned int Crc32Table[256] = {\n\t0x00000000,0x77073096,0xEE0E612C,0x990951BA,0x076DC419,0x706AF48F,0xE963A535,0x9E6495A3,\n\t0x0EDB8832,0x79DCB8A4,0xE0D5E91E,0x97D2D988,0x09B64C2B,0x7EB17CBD,0xE7B82D07,0x90BF1D91,\n\t0x1DB71064,0x6AB020F2,0xF3B97148,0x84BE41DE,0x1ADAD47D,0x6DDDE4EB,0xF4D4B551,0x83D385C7,\n\t0x136C9856,0x646BA8C0,0xFD62F97A,0x8A65C9EC,0x14015C4F,0x63066CD9,0xFA0F3D63,0x8D080DF5,\n\t0x3B6E20C8,0x4C69105E,0xD56041E4,0xA2677172,0x3C03E4D1,0x4B04D447,0xD20D85FD,0xA50AB56B,\n\t0x35B5A8FA,0x42B2986C,0xDBBBC9D6,0xACBCF940,0x32D86CE3,0x45DF5C75,0xDCD60DCF,0xABD13D59,\n\t0x26D930AC,0x51DE003A,0xC8D75180,0xBFD06116,0x21B4F4B5,0x56B3C423,0xCFBA9599,0xB8BDA50F,\n\t0x2802B89E,0x5F058808,0xC60CD9B2,0xB10BE924,0x2F6F7C87,0x58684C11,0xC1611DAB,0xB6662D3D,\n\t0x76DC4190,0x01DB7106,0x98D220BC,0xEFD5102A,0x71B18589,0x06B6B51F,0x9FBFE4A5,0xE8B8D433,\n\t0x7807C9A2,0x0F00F934,0x9609A88E,0xE10E9818,0x7F6A0DBB,0x086D3D2D,0x91646C97,0xE6635C01,\n\t0x6B6B51F4,0x1C6C6162,0x856530D8,0xF262004E,0x6C0695ED,0x1B01A57B,0x8208F4C1,0xF50FC457,\n\t0x65B0D9C6,0x12B7E950,0x8BBEB8EA,0xFCB9887C,0x62DD1DDF,0x15DA2D49,0x8CD37CF3,0xFBD44C65,\n\t0x4DB26158,0x3AB551CE,0xA3BC0074,0xD4BB30E2,0x4ADFA541,0x3DD895D7,0xA4D1C46D,0xD3D6F4FB,\n\t0x4369E96A,0x346ED9FC,0xAD678846,0xDA60B8D0,0x44042D73,0x33031DE5,0xAA0A4C5F,0xDD0D7CC9,\n\t0x5005713C,0x270241AA,0xBE0B1010,0xC90C2086,0x5768B525,0x206F85B3,0xB966D409,0xCE61E49F,\n\t0x5EDEF90E,0x29D9C998,0xB0D09822,0xC7D7A8B4,0x59B33D17,0x2EB40D81,0xB7BD5C3B,0xC0BA6CAD,\n\t0xEDB88320,0x9ABFB3B6,0x03B6E20C,0x74B1D29A,0xEAD54739,0x9DD277AF,0x04DB2615,0x73DC1683,\n\t0xE3630B12,0x94643B84,0x0D6D6A3E,0x7A6A5AA8,0xE40ECF0B,0x9309FF9D,0x0A00AE27,0x7D079EB1,\n\t0xF00F9344,0x8708A3D2,0x1E01F268,0x6906C2FE,0xF762575D,0x806567CB,0x196C3671,0x6E6B06E7,\n\t0xFED41B76,0x89D32BE0,0x10DA7A5A,0x67DD4ACC,0xF9B9DF6F,0x8EBEEFF9,0x17B7BE43,0x60B08ED5,\n\t0xD6D6A3E8,0xA1D1937E,0x38D8C2C4,0x4FDFF252,0xD1BB67F1,0xA6BC5767,0x3FB506DD,0x48B2364B,\n\t0xD80D2BDA,0xAF0A1B4C,0x36034AF6,0x41047A60,0xDF60EFC3,0xA867DF55,0x316E8EEF,0x4669BE79,\n\t0xCB61B38C,0xBC66831A,0x256FD2A0,0x5268E236,0xCC0C7795,0xBB0B4703,0x220216B9,0x5505262F,\n\t0xC5BA3BBE,0xB2BD0B28,0x2BB45A92,0x5CB36A04,0xC2D7FFA7,0xB5D0CF31,0x2CD99E8B,0x5BDEAE1D,\n\t0x9B64C2B0,0xEC63F226,0x756AA39C,0x026D930A,0x9C0906A9,0xEB0E363F,0x72076785,0x05005713,\n\t0x95BF4A82,0xE2B87A14,0x7BB12BAE,0x0CB61B38,0x92D28E9B,0xE5D5BE0D,0x7CDCEFB7,0x0BDBDF21,\n\t0x86D3D2D4,0xF1D4E242,0x68DDB3F8,0x1FDA836E,0x81BE16CD,0xF6B9265B,0x6FB077E1,0x18B74777,\n\t0x88085AE6,0xFF0F6A70,0x66063BCA,0x11010B5C,0x8F659EFF,0xF862AE69,0x616BFFD3,0x166CCF45,\n\t0xA00AE278,0xD70DD2EE,0x4E048354,0x3903B3C2,0xA7672661,0xD06016F7,0x4969474D,0x3E6E77DB,\n\t0xAED16A4A,0xD9D65ADC,0x40DF0B66,0x37D83BF0,0xA9BCAE53,0xDEBB9EC5,0x47B2CF7F,0x30B5FFE9,\n\t0xBDBDF21C,0xCABAC28A,0x53B39330,0x24B4A3A6,0xBAD03605,0xCDD70693,0x54DE5729,0x23D967BF,\n\t0xB3667A2E,0xC4614AB8,0x5D681B02,0x2A6F2B94,0xB40BBE37,0xC30C8EA1,0x5A05DF1B,0x2D02EF8D\n};\n\nunsigned short getCrc16(unsigned char* Source, size_t len)\n{\n\tunsigned short crc = 0xFFFF;\n\n\twhile (len--)\n\t{\n\t\tcrc = (crc >> 8) ^ Crc16Table[(crc ^ *Source++) & 0xFF];\n\t}\n\treturn crc;\n}\n\nunsigned int getCrc32(unsigned char* Source, size_t len)\n{\n\tunsigned int crc = 0xFFFFFFFF;\n\n\twhile (len--)\n\t{\n\t\tcrc = (crc >> 8) ^ Crc32Table[(crc & 0xFF) ^ *Source++];\n\t}\n\n\treturn crc ^ 0xffffffff;\n}\n\n\nunsigned int getChecksum(unsigned char* Source, size_t len)\n{\n\tint checksum = 0;\n\tfor (size_t i = 0; i < len; i++)\n\t\tchecksum += *Source++;\n\treturn checksum;\n}\n\n// file: Util/EncodingTable.cpp\n\n#define MAXHEXLENGTH 32\n\nTrie::Trie()\n{\n\tNode root { 0, false, 0 };\n\tnodes.push_back(root);\n}\n\nvoid Trie::insert(const wchar_t* text, size_t value)\n{\n\tsize_t node = 0;\t// root node\n\n\t// traverse existing nodes\n\twhile (*text != 0)\n\t{\n\t\tLookupEntry lookupEntry { node, *text };\n\t\tauto it = lookup.find(lookupEntry);\n\t\tif (it == lookup.end())\n\t\t\tbreak;\n\n\t\tnode = it->second;\n\t\ttext++;\n\t}\n\n\t// add new nodes as necessary\n\twhile (*text != 0)\n\t{\n\t\tNode newNode { nodes.size(), false, 0 };\n\t\tnodes.push_back(newNode);\n\n\t\tLookupEntry lookupEntry { node, *text };\n\t\tlookup[lookupEntry] = newNode.index;\n\t\tnode = newNode.index;\n\t\ttext++;\n\t}\n\n\t// set value\n\tnodes[node].hasValue = true;\n\tnodes[node].value = value;\n}\n\nvoid Trie::insert(wchar_t character, size_t value)\n{\n\twchar_t str[2];\n\tstr[0] = character;\n\tstr[1] = 0;\n\tinsert(str,value);\n}\n\nbool Trie::findLongestPrefix(const wchar_t* text, size_t& result)\n{\n\tsize_t node = 0;\t\t// root node\n\tsize_t valueNode = 0;\t// remember last node that had a value\n\n\twhile (*text != 0)\n\t{\n\t\tif (nodes[node].hasValue)\n\t\t\tvalueNode = node;\n\n\t\tLookupEntry lookupEntry { node, *text++ };\n\t\tauto it = lookup.find(lookupEntry);\n\n\t\tif (it == lookup.end())\n\t\t\tbreak;\n\n\t\tnode = it->second;\n\t}\n\n\tif (nodes[node].hasValue)\n\t\tvalueNode = node;\n\n\tresult = nodes[valueNode].value;\n\treturn nodes[valueNode].hasValue;\n}\n\nEncodingTable::EncodingTable()\n{\n\n}\n\nEncodingTable::~EncodingTable()\n{\n\n}\n\nvoid EncodingTable::clear()\n{\n\thexData.clear();\n\tentries.clear();\n}\n\nint parseHexString(std::wstring& hex, unsigned char* dest)\n{\n\tfor (size_t i = 0; i < hex.size(); i++)\n\t{\n\t\twchar_t source = towlower(hex[i]);\n\t\tint value;\n\n\t\tif (source >= 'a' && source <= 'f')\n\t\t{\n\t\t\tvalue = source-'a'+10;\n\t\t} else if (source >= '0' && source <= '9')\n\t\t{\n\t\t\tvalue = source-'0';\n\t\t} else {\n\t\t\treturn -1;\n\t\t}\n\n\t\tsize_t index = i/2;\n\t\tif (i % 2)\n\t\t\tdest[index] = (dest[index] << 4) | value;\n\t\telse\n\t\t\tdest[index] = value;\n\t}\n\n\treturn (int) hex.size()/2;\n}\n\nbool EncodingTable::load(const std::wstring& fileName, TextFile::Encoding encoding)\n{\n\tunsigned char hexBuffer[MAXHEXLENGTH];\n\n\tTextFile input;\n\tif (input.open(fileName,TextFile::Read,encoding) == false)\n\t\treturn false;\n\n\thexData.clear();\n\tentries.clear();\n\tsetTerminationEntry((unsigned char*)\"\\0\",1);\n\n\twhile (!input.atEnd())\n\t{\n\t\tstd::wstring line = input.readLine();\n\t\tif (line.empty() || line[0] == '*') continue;\n\n\t\tif (line[0] == '/')\n\t\t{\n\t\t\tstd::wstring hex = line.substr(1);\n\t\t\tif (hex.empty() || hex.length() > 2*MAXHEXLENGTH)\n\t\t\t{\n\t\t\t\t// error\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tint length = parseHexString(hex,hexBuffer);\n\t\t\tif (length == -1)\n\t\t\t{\n\t\t\t\t// error\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tsetTerminationEntry(hexBuffer,length);\n\t\t} else {\n\t\t\tsize_t pos = line.find(L'=');\n\t\t\tstd::wstring hex = line.substr(0,pos);\n\t\t\tstd::wstring value = line.substr(pos+1);\n\n\t\t\tif (hex.empty() || value.empty() || hex.length() > 2*MAXHEXLENGTH)\n\t\t\t{\n\t\t\t\t// error\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tint length = parseHexString(hex,hexBuffer);\n\t\t\tif (length == -1)\n\t\t\t{\n\t\t\t\t// error\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\taddEntry(hexBuffer,length,value);\n\t\t}\n\t}\n\n\treturn true;\n}\n\nvoid EncodingTable::addEntry(unsigned char* hex, size_t hexLength, const std::wstring& value)\n{\n\tif (value.size() == 0)\n\t\treturn;\n\n\t// insert into trie\n\tsize_t index = entries.size();\n\tlookup.insert(value.c_str(),index);\n\n\t// add entry\n\tTableEntry entry;\n\tentry.hexPos = hexData.append(hex,hexLength);\n\tentry.hexLen = hexLength;\n\tentry.valueLen = value.size();\n\n\tentries.push_back(entry);\n}\n\nvoid EncodingTable::addEntry(unsigned char* hex, size_t hexLength, wchar_t value)\n{\n\tif (value == '\\0')\n\t\treturn;\n\n\t// insert into trie\n\tsize_t index = entries.size();\n\tlookup.insert(value,index);\n\n\t// add entry\n\tTableEntry entry;\n\tentry.hexPos = hexData.append(hex,hexLength);\n\tentry.hexLen = hexLength;\n\tentry.valueLen = 1;\n\n\tentries.push_back(entry);\n\n}\n\nvoid EncodingTable::setTerminationEntry(unsigned char* hex, size_t hexLength)\n{\n\tterminationEntry.hexPos = hexData.append(hex,hexLength);\n\tterminationEntry.hexLen = hexLength;\n\tterminationEntry.valueLen = 0;\n}\n\nByteArray EncodingTable::encodeString(const std::wstring& str, bool writeTermination)\n{\n\tByteArray result;\n\n\tsize_t pos = 0;\n\twhile (pos < str.size())\n\t{\n\t\tsize_t index;\n\t\tif (lookup.findLongestPrefix(str.c_str()+pos,index) == false)\n\t\t{\n\t\t\t// error\n\t\t\treturn ByteArray();\n\t\t}\n\n\t\tTableEntry& entry = entries[index];\n\t\tfor (size_t i = 0; i < entry.hexLen; i++)\n\t\t{\n\t\t\tresult.appendByte(hexData[entry.hexPos+i]);\n\t\t}\n\n\t\tpos += entry.valueLen;\n\t}\n\n\tif (writeTermination)\n\t{\n\t\tTableEntry& entry = terminationEntry;\n\t\tfor (size_t i = 0; i < entry.hexLen; i++)\n\t\t{\n\t\t\tresult.appendByte(hexData[entry.hexPos+i]);\n\t\t}\n\t}\n\n\treturn result;\n}\n\nByteArray EncodingTable::encodeTermination()\n{\n\tByteArray result;\n\n\tTableEntry& entry = terminationEntry;\n\tfor (size_t i = 0; i < entry.hexLen; i++)\n\t{\n\t\tresult.appendByte(hexData[entry.hexPos+i]);\n\t}\n\n\treturn result;\n}\n\n// file: Util/FileClasses.cpp\n\nconst wchar_t SjisToUnicodeTable1[] =\n{\n\t// 0X0080 to 0X00FF\n\t0x0080, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n\t0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n\t0xFFFF, 0xFF61, 0xFF62, 0xFF63, 0xFF64, 0xFF65, 0xFF66, 0xFF67, 0xFF68, 0xFF69, 0xFF6A, 0xFF6B, 0xFF6C, 0xFF6D, 0xFF6E, 0xFF6F,\n\t0xFF70, 0xFF71, 0xFF72, 0xFF73, 0xFF74, 0xFF75, 0xFF76, 0xFF77, 0xFF78, 0xFF79, 0xFF7A, 0xFF7B, 0xFF7C, 0xFF7D, 0xFF7E, 0xFF7F,\n\t0xFF80, 0xFF81, 0xFF82, 0xFF83, 0xFF84, 0xFF85, 0xFF86, 0xFF87, 0xFF88, 0xFF89, 0xFF8A, 0xFF8B, 0xFF8C, 0xFF8D, 0xFF8E, 0xFF8F,\n\t0xFF90, 0xFF91, 0xFF92, 0xFF93, 0xFF94, 0xFF95, 0xFF96, 0xFF97, 0xFF98, 0xFF99, 0xFF9A, 0xFF9B, 0xFF9C, 0xFF9D, 0xFF9E, 0xFF9F,\n\t0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n\t0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n};\n\nconst wchar_t SjisToUnicodeTable2[] =\n{\n\t// 0X8100 to 0X81FF\n\t0x3000, 0x3001, 0x3002, 0xFF0C, 0xFF0E, 0x30FB, 0xFF1A, 0xFF1B, 0xFF1F, 0xFF01, 0x309B, 0x309C, 0x00B4, 0xFF40, 0x00A8, 0xFF3E,\n\t0xFFE3, 0xFF3F, 0x30FD, 0x30FE, 0x309D, 0x309E, 0x3003, 0x4EDD, 0x3005, 0x3006, 0x3007, 0x30FC, 0x2015, 0x2010, 0xFF0F, 0xFF3C,\n\t0xFF5E, 0x2225, 0xFF5C, 0x2026, 0x2025, 0x2018, 0x2019, 0x201C, 0x201D, 0xFF08, 0xFF09, 0x3014, 0x3015, 0xFF3B, 0xFF3D, 0xFF5B,\n\t0xFF5D, 0x3008, 0x3009, 0x300A, 0x300B, 0x300C, 0x300D, 0x300E, 0x300F, 0x3010, 0x3011, 0xFF0B, 0xFF0D, 0x00B1, 0x00D7, 0xFFFF,\n\t0x00F7, 0xFF1D, 0x2260, 0xFF1C, 0xFF1E, 0x2266, 0x2267, 0x221E, 0x2234, 0x2642, 0x2640, 0x00B0, 0x2032, 0x2033, 0x2103, 0xFFE5,\n\t0xFF04, 0xFFE0, 0xFFE1, 0xFF05, 0xFF03, 0xFF06, 0xFF0A, 0xFF20, 0x00A7, 0x2606, 0x2605, 0x25CB, 0x25CF, 0x25CE, 0x25C7, 0x25C6,\n\t0x25A1, 0x25A0, 0x25B3, 0x25B2, 0x25BD, 0x25BC, 0x203B, 0x3012, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013, 0xFFFF, 0xFFFF, 0xFFFF,\n\t0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x2208, 0x220B, 0x2286, 0x2287, 0x2282, 0x2283, 0x222A, 0x2229,\n\t0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x2227, 0x2228, 0xFFE2, 0x21D2, 0x21D4, 0x2200, 0x2203, 0xFFFF,\n\t0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x2220, 0x22A5, 0x2312, 0x2202, 0x2207, 0x2261,\n\t0x2252, 0x226A, 0x226B, 0x221A, 0x223D, 0x221D, 0x2235, 0x222B, 0x222C, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n\t0x212B, 0x2030, 0x266F, 0x266D, 0x266A, 0x2020, 0x2021, 0x00B6, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x25EF, 0xFFFF, 0xFFFF, 0xFFFF,\n\t// 0X8200 to 0X82FF\n\t0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFF10,\n\t0xFF11, 0xFF12, 0xFF13, 0xFF14, 0xFF15, 0xFF16, 0xFF17, 0xFF18, 0xFF19, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n\t0xFF21, 0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F, 0xFF30,\n\t0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36, 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n\t0xFFFF, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47, 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F,\n\t0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57, 0xFF58, 0xFF59, 0xFF5A, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x3041,\n\t0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304A, 0x304B, 0x304C, 0x304D, 0x304E, 0x304F, 0x3050, 0x3051,\n\t0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058, 0x3059, 0x305A, 0x305B, 0x305C, 0x305D, 0x305E, 0x305F, 0x3060, 0x3061,\n\t0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068, 0x3069, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F, 0x3070, 0x3071,\n\t0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078, 0x3079, 0x307A, 0x307B, 0x307C, 0x307D, 0x307E, 0x307F, 0x3080, 0x3081,\n\t0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308E, 0x308F, 0x3090, 0x3091,\n\t0x3092, 0x3093, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n\t// 0X8300 to 0X83FF\n\t0x30A1, 0x30A2, 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, 0x30A8, 0x30A9, 0x30AA, 0x30AB, 0x30AC, 0x30AD, 0x30AE, 0x30AF, 0x30B0,\n\t0x30B1, 0x30B2, 0x30B3, 0x30B4, 0x30B5, 0x30B6, 0x30B7, 0x30B8, 0x30B9, 0x30BA, 0x30BB, 0x30BC, 0x30BD, 0x30BE, 0x30BF, 0x30C0,\n\t0x30C1, 0x30C2, 0x30C3, 0x30C4, 0x30C5, 0x30C6, 0x30C7, 0x30C8, 0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D0,\n\t0x30D1, 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6, 0x30D7, 0x30D8, 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF, 0xFFFF,\n\t0x30E0, 0x30E1, 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, 0x30E7, 0x30E8, 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF,\n\t0x30F0, 0x30F1, 0x30F2, 0x30F3, 0x30F4, 0x30F5, 0x30F6, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0391,\n\t0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, 0x03A0, 0x03A1,\n\t0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x03B1,\n\t0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1,\n\t0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n\t0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n\t0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n\t// 0X8400 to 0X84FF\n\t0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E,\n\t0x041F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E,\n\t0x042F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n\t0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0xFFFF,\n\t0x043E, 0x043F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D,\n\t0x044E, 0x044F, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x2500,\n\t0x2502, 0x250C, 0x2510, 0x2518, 0x2514, 0x251C, 0x252C, 0x2524, 0x2534, 0x253C, 0x2501, 0x2503, 0x250F, 0x2513, 0x251B, 0x2517,\n\t0x2523, 0x2533, 0x252B, 0x253B, 0x254B, 0x2520, 0x252F, 0x2528, 0x2537, 0x253F, 0x251D, 0x2530, 0x2525, 0x2538, 0x2542, 0xFFFF,\n\t0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n\t0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n\t0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n\t0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n};\n\nconst wchar_t SjisToUnicodeTable3[] =\n{\n\t// 0X8700 to 0X87FF\n\t0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x246A, 0x246B, 0x246C, 0x246D, 0x246E, 0x246F,\n\t0x2470, 0x2471, 0x2472, 0x2473, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0xFFFF, 0x3349,\n\t0x3314, 0x3322, 0x334D, 0x3318, 0x3327, 0x3303, 0x3336, 0x3351, 0x3357, 0x330D, 0x3326, 0x3323, 0x332B, 0x334A, 0x333B, 0x339C,\n\t0x339D, 0x339E, 0x338E, 0x338F, 0x33C4, 0x33A1, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x337B, 0xFFFF,\n\t0x301D, 0x301F, 0x2116, 0x33CD, 0x2121, 0x32A4, 0x32A5, 0x32A6, 0x32A7, 0x32A8, 0x3231, 0x3232, 0x3239, 0x337E, 0x337D, 0x337C,\n\t0x2252, 0x2261, 0x222B, 0x222E, 0x2211, 0x221A, 0x22A5, 0x2220, 0x221F, 0x22BF, 0x2235, 0x2229, 0x222A, 0xFFFF, 0xFFFF, 0xFFFF,\n\t0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n\t0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n\t0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n\t0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n\t0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n\t0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n\t// 0X8800 to 0X88FF\n\t0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n\t0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n\t0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n\t0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n\t0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n\t0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x4E9C,\n\t0x5516, 0x5A03, 0x963F, 0x54C0, 0x611B, 0x6328, 0x59F6, 0x9022, 0x8475, 0x831C, 0x7A50, 0x60AA, 0x63E1, 0x6E25, 0x65ED, 0x8466,\n\t0x82A6, 0x9BF5, 0x6893, 0x5727, 0x65A1, 0x6271, 0x5B9B, 0x59D0, 0x867B, 0x98F4, 0x7D62, 0x7DBE, 0x9B8E, 0x6216, 0x7C9F, 0x88B7,\n\t0x5B89, 0x5EB5, 0x6309, 0x6697, 0x6848, 0x95C7, 0x978D, 0x674F, 0x4EE5, 0x4F0A, 0x4F4D, 0x4F9D, 0x5049, 0x56F2, 0x5937, 0x59D4,\n\t0x5A01, 0x5C09, 0x60DF, 0x610F, 0x6170, 0x6613, 0x6905, 0x70BA, 0x754F, 0x7570, 0x79FB, 0x7DAD, 0x7DEF, 0x80C3, 0x840E, 0x8863,\n\t0x8B02, 0x9055, 0x907A, 0x533B, 0x4E95, 0x4EA5, 0x57DF, 0x80B2, 0x90C1, 0x78EF, 0x4E00, 0x58F1, 0x6EA2, 0x9038, 0x7A32, 0x8328,\n\t0x828B, 0x9C2F, 0x5141, 0x5370, 0x54BD, 0x54E1, 0x56E0, 0x59FB, 0x5F15, 0x98F2, 0x6DEB, 0x80E4, 0x852D, 0xFFFF, 0xFFFF, 0xFFFF,\n\t// 0X8900 to 0X89FF\n\t0x9662, 0x9670, 0x96A0, 0x97FB, 0x540B, 0x53F3, 0x5B87, 0x70CF, 0x7FBD, 0x8FC2, 0x96E8, 0x536F, 0x9D5C, 0x7ABA, 0x4E11, 0x7893,\n\t0x81FC, 0x6E26, 0x5618, 0x5504, 0x6B1D, 0x851A, 0x9C3B, 0x59E5, 0x53A9, 0x6D66, 0x74DC, 0x958F, 0x5642, 0x4E91, 0x904B, 0x96F2,\n\t0x834F, 0x990C, 0x53E1, 0x55B6, 0x5B30, 0x5F71, 0x6620, 0x66F3, 0x6804, 0x6C38, 0x6CF3, 0x6D29, 0x745B, 0x76C8, 0x7A4E, 0x9834,\n\t0x82F1, 0x885B, 0x8A60, 0x92ED, 0x6DB2, 0x75AB, 0x76CA, 0x99C5, 0x60A6, 0x8B01, 0x8D8A, 0x95B2, 0x698E, 0x53AD, 0x5186, 0xFFFF,\n\t0x5712, 0x5830, 0x5944, 0x5BB4, 0x5EF6, 0x6028, 0x63A9, 0x63F4, 0x6CBF, 0x6F14, 0x708E, 0x7114, 0x7159, 0x71D5, 0x733F, 0x7E01,\n\t0x8276, 0x82D1, 0x8597, 0x9060, 0x925B, 0x9D1B, 0x5869, 0x65BC, 0x6C5A, 0x7525, 0x51F9, 0x592E, 0x5965, 0x5F80, 0x5FDC, 0x62BC,\n\t0x65FA, 0x6A2A, 0x6B27, 0x6BB4, 0x738B, 0x7FC1, 0x8956, 0x9D2C, 0x9D0E, 0x9EC4, 0x5CA1, 0x6C96, 0x837B, 0x5104, 0x5C4B, 0x61B6,\n\t0x81C6, 0x6876, 0x7261, 0x4E59, 0x4FFA, 0x5378, 0x6069, 0x6E29, 0x7A4F, 0x97F3, 0x4E0B, 0x5316, 0x4EEE, 0x4F55, 0x4F3D, 0x4FA1,\n\t0x4F73, 0x52A0, 0x53EF, 0x5609, 0x590F, 0x5AC1, 0x5BB6, 0x5BE1, 0x79D1, 0x6687, 0x679C, 0x67B6, 0x6B4C, 0x6CB3, 0x706B, 0x73C2,\n\t0x798D, 0x79BE, 0x7A3C, 0x7B87, 0x82B1, 0x82DB, 0x8304, 0x8377, 0x83EF, 0x83D3, 0x8766, 0x8AB2, 0x5629, 0x8CA8, 0x8FE6, 0x904E,\n\t0x971E, 0x868A, 0x4FC4, 0x5CE8, 0x6211, 0x7259, 0x753B, 0x81E5, 0x82BD, 0x86FE, 0x8CC0, 0x96C5, 0x9913, 0x99D5, 0x4ECB, 0x4F1A,\n\t0x89E3, 0x56DE, 0x584A, 0x58CA, 0x5EFB, 0x5FEB, 0x602A, 0x6094, 0x6062, 0x61D0, 0x6212, 0x62D0, 0x6539, 0xFFFF, 0xFFFF, 0xFFFF,\n\t// 0X8A00 to 0X8AFF\n\t0x9B41, 0x6666, 0x68B0, 0x6D77, 0x7070, 0x754C, 0x7686, 0x7D75, 0x82A5, 0x87F9, 0x958B, 0x968E, 0x8C9D, 0x51F1, 0x52BE, 0x5916,\n\t0x54B3, 0x5BB3, 0x5D16, 0x6168, 0x6982, 0x6DAF, 0x788D, 0x84CB, 0x8857, 0x8A72, 0x93A7, 0x9AB8, 0x6D6C, 0x99A8, 0x86D9, 0x57A3,\n\t0x67FF, 0x86CE, 0x920E, 0x5283, 0x5687, 0x5404, 0x5ED3, 0x62E1, 0x64B9, 0x683C, 0x6838, 0x6BBB, 0x7372, 0x78BA, 0x7A6B, 0x899A,\n\t0x89D2, 0x8D6B, 0x8F03, 0x90ED, 0x95A3, 0x9694, 0x9769, 0x5B66, 0x5CB3, 0x697D, 0x984D, 0x984E, 0x639B, 0x7B20, 0x6A2B, 0xFFFF,\n\t0x6A7F, 0x68B6, 0x9C0D, 0x6F5F, 0x5272, 0x559D, 0x6070, 0x62EC, 0x6D3B, 0x6E07, 0x6ED1, 0x845B, 0x8910, 0x8F44, 0x4E14, 0x9C39,\n\t0x53F6, 0x691B, 0x6A3A, 0x9784, 0x682A, 0x515C, 0x7AC3, 0x84B2, 0x91DC, 0x938C, 0x565B, 0x9D28, 0x6822, 0x8305, 0x8431, 0x7CA5,\n\t0x5208, 0x82C5, 0x74E6, 0x4E7E, 0x4F83, 0x51A0, 0x5BD2, 0x520A, 0x52D8, 0x52E7, 0x5DFB, 0x559A, 0x582A, 0x59E6, 0x5B8C, 0x5B98,\n\t0x5BDB, 0x5E72, 0x5E79, 0x60A3, 0x611F, 0x6163, 0x61BE, 0x63DB, 0x6562, 0x67D1, 0x6853, 0x68FA, 0x6B3E, 0x6B53, 0x6C57, 0x6F22,\n\t0x6F97, 0x6F45, 0x74B0, 0x7518, 0x76E3, 0x770B, 0x7AFF, 0x7BA1, 0x7C21, 0x7DE9, 0x7F36, 0x7FF0, 0x809D, 0x8266, 0x839E, 0x89B3,\n\t0x8ACC, 0x8CAB, 0x9084, 0x9451, 0x9593, 0x9591, 0x95A2, 0x9665, 0x97D3, 0x9928, 0x8218, 0x4E38, 0x542B, 0x5CB8, 0x5DCC, 0x73A9,\n\t0x764C, 0x773C, 0x5CA9, 0x7FEB, 0x8D0B, 0x96C1, 0x9811, 0x9854, 0x9858, 0x4F01, 0x4F0E, 0x5371, 0x559C, 0x5668, 0x57FA, 0x5947,\n\t0x5B09, 0x5BC4, 0x5C90, 0x5E0C, 0x5E7E, 0x5FCC, 0x63EE, 0x673A, 0x65D7, 0x65E2, 0x671F, 0x68CB, 0x68C4, 0xFFFF, 0xFFFF, 0xFFFF,\n\t// 0X8B00 to 0X8BFF\n\t0x6A5F, 0x5E30, 0x6BC5, 0x6C17, 0x6C7D, 0x757F, 0x7948, 0x5B63, 0x7A00, 0x7D00, 0x5FBD, 0x898F, 0x8A18, 0x8CB4, 0x8D77, 0x8ECC,\n\t0x8F1D, 0x98E2, 0x9A0E, 0x9B3C, 0x4E80, 0x507D, 0x5100, 0x5993, 0x5B9C, 0x622F, 0x6280, 0x64EC, 0x6B3A, 0x72A0, 0x7591, 0x7947,\n\t0x7FA9, 0x87FB, 0x8ABC, 0x8B70, 0x63AC, 0x83CA, 0x97A0, 0x5409, 0x5403, 0x55AB, 0x6854, 0x6A58, 0x8A70, 0x7827, 0x6775, 0x9ECD,\n\t0x5374, 0x5BA2, 0x811A, 0x8650, 0x9006, 0x4E18, 0x4E45, 0x4EC7, 0x4F11, 0x53CA, 0x5438, 0x5BAE, 0x5F13, 0x6025, 0x6551, 0xFFFF,\n\t0x673D, 0x6C42, 0x6C72, 0x6CE3, 0x7078, 0x7403, 0x7A76, 0x7AAE, 0x7B08, 0x7D1A, 0x7CFE, 0x7D66, 0x65E7, 0x725B, 0x53BB, 0x5C45,\n\t0x5DE8, 0x62D2, 0x62E0, 0x6319, 0x6E20, 0x865A, 0x8A31, 0x8DDD, 0x92F8, 0x6F01, 0x79A6, 0x9B5A, 0x4EA8, 0x4EAB, 0x4EAC, 0x4F9B,\n\t0x4FA0, 0x50D1, 0x5147, 0x7AF6, 0x5171, 0x51F6, 0x5354, 0x5321, 0x537F, 0x53EB, 0x55AC, 0x5883, 0x5CE1, 0x5F37, 0x5F4A, 0x602F,\n\t0x6050, 0x606D, 0x631F, 0x6559, 0x6A4B, 0x6CC1, 0x72C2, 0x72ED, 0x77EF, 0x80F8, 0x8105, 0x8208, 0x854E, 0x90F7, 0x93E1, 0x97FF,\n\t0x9957, 0x9A5A, 0x4EF0, 0x51DD, 0x5C2D, 0x6681, 0x696D, 0x5C40, 0x66F2, 0x6975, 0x7389, 0x6850, 0x7C81, 0x50C5, 0x52E4, 0x5747,\n\t0x5DFE, 0x9326, 0x65A4, 0x6B23, 0x6B3D, 0x7434, 0x7981, 0x79BD, 0x7B4B, 0x7DCA, 0x82B9, 0x83CC, 0x887F, 0x895F, 0x8B39, 0x8FD1,\n\t0x91D1, 0x541F, 0x9280, 0x4E5D, 0x5036, 0x53E5, 0x533A, 0x72D7, 0x7396, 0x77E9, 0x82E6, 0x8EAF, 0x99C6, 0x99C8, 0x99D2, 0x5177,\n\t0x611A, 0x865E, 0x55B0, 0x7A7A, 0x5076, 0x5BD3, 0x9047, 0x9685, 0x4E32, 0x6ADB, 0x91E7, 0x5C51, 0x5C48, 0xFFFF, 0xFFFF, 0xFFFF,\n\t// 0X8C00 to 0X8CFF\n\t0x6398, 0x7A9F, 0x6C93, 0x9774, 0x8F61, 0x7AAA, 0x718A, 0x9688, 0x7C82, 0x6817, 0x7E70, 0x6851, 0x936C, 0x52F2, 0x541B, 0x85AB,\n\t0x8A13, 0x7FA4, 0x8ECD, 0x90E1, 0x5366, 0x8888, 0x7941, 0x4FC2, 0x50BE, 0x5211, 0x5144, 0x5553, 0x572D, 0x73EA, 0x578B, 0x5951,\n\t0x5F62, 0x5F84, 0x6075, 0x6176, 0x6167, 0x61A9, 0x63B2, 0x643A, 0x656C, 0x666F, 0x6842, 0x6E13, 0x7566, 0x7A3D, 0x7CFB, 0x7D4C,\n\t0x7D99, 0x7E4B, 0x7F6B, 0x830E, 0x834A, 0x86CD, 0x8A08, 0x8A63, 0x8B66, 0x8EFD, 0x981A, 0x9D8F, 0x82B8, 0x8FCE, 0x9BE8, 0xFFFF,\n\t0x5287, 0x621F, 0x6483, 0x6FC0, 0x9699, 0x6841, 0x5091, 0x6B20, 0x6C7A, 0x6F54, 0x7A74, 0x7D50, 0x8840, 0x8A23, 0x6708, 0x4EF6,\n\t0x5039, 0x5026, 0x5065, 0x517C, 0x5238, 0x5263, 0x55A7, 0x570F, 0x5805, 0x5ACC, 0x5EFA, 0x61B2, 0x61F8, 0x62F3, 0x6372, 0x691C,\n\t0x6A29, 0x727D, 0x72AC, 0x732E, 0x7814, 0x786F, 0x7D79, 0x770C, 0x80A9, 0x898B, 0x8B19, 0x8CE2, 0x8ED2, 0x9063, 0x9375, 0x967A,\n\t0x9855, 0x9A13, 0x9E78, 0x5143, 0x539F, 0x53B3, 0x5E7B, 0x5F26, 0x6E1B, 0x6E90, 0x7384, 0x73FE, 0x7D43, 0x8237, 0x8A00, 0x8AFA,\n\t0x9650, 0x4E4E, 0x500B, 0x53E4, 0x547C, 0x56FA, 0x59D1, 0x5B64, 0x5DF1, 0x5EAB, 0x5F27, 0x6238, 0x6545, 0x67AF, 0x6E56, 0x72D0,\n\t0x7CCA, 0x88B4, 0x80A1, 0x80E1, 0x83F0, 0x864E, 0x8A87, 0x8DE8, 0x9237, 0x96C7, 0x9867, 0x9F13, 0x4E94, 0x4E92, 0x4F0D, 0x5348,\n\t0x5449, 0x543E, 0x5A2F, 0x5F8C, 0x5FA1, 0x609F, 0x68A7, 0x6A8E, 0x745A, 0x7881, 0x8A9E, 0x8AA4, 0x8B77, 0x9190, 0x4E5E, 0x9BC9,\n\t0x4EA4, 0x4F7C, 0x4FAF, 0x5019, 0x5016, 0x5149, 0x516C, 0x529F, 0x52B9, 0x52FE, 0x539A, 0x53E3, 0x5411, 0xFFFF, 0xFFFF, 0xFFFF,\n\t// 0X8D00 to 0X8DFF\n\t0x540E, 0x5589, 0x5751, 0x57A2, 0x597D, 0x5B54, 0x5B5D, 0x5B8F, 0x5DE5, 0x5DE7, 0x5DF7, 0x5E78, 0x5E83, 0x5E9A, 0x5EB7, 0x5F18,\n\t0x6052, 0x614C, 0x6297, 0x62D8, 0x63A7, 0x653B, 0x6602, 0x6643, 0x66F4, 0x676D, 0x6821, 0x6897, 0x69CB, 0x6C5F, 0x6D2A, 0x6D69,\n\t0x6E2F, 0x6E9D, 0x7532, 0x7687, 0x786C, 0x7A3F, 0x7CE0, 0x7D05, 0x7D18, 0x7D5E, 0x7DB1, 0x8015, 0x8003, 0x80AF, 0x80B1, 0x8154,\n\t0x818F, 0x822A, 0x8352, 0x884C, 0x8861, 0x8B1B, 0x8CA2, 0x8CFC, 0x90CA, 0x9175, 0x9271, 0x783F, 0x92FC, 0x95A4, 0x964D, 0xFFFF,\n\t0x9805, 0x9999, 0x9AD8, 0x9D3B, 0x525B, 0x52AB, 0x53F7, 0x5408, 0x58D5, 0x62F7, 0x6FE0, 0x8C6A, 0x8F5F, 0x9EB9, 0x514B, 0x523B,\n\t0x544A, 0x56FD, 0x7A40, 0x9177, 0x9D60, 0x9ED2, 0x7344, 0x6F09, 0x8170, 0x7511, 0x5FFD, 0x60DA, 0x9AA8, 0x72DB, 0x8FBC, 0x6B64,\n\t0x9803, 0x4ECA, 0x56F0, 0x5764, 0x58BE, 0x5A5A, 0x6068, 0x61C7, 0x660F, 0x6606, 0x6839, 0x68B1, 0x6DF7, 0x75D5, 0x7D3A, 0x826E,\n\t0x9B42, 0x4E9B, 0x4F50, 0x53C9, 0x5506, 0x5D6F, 0x5DE6, 0x5DEE, 0x67FB, 0x6C99, 0x7473, 0x7802, 0x8A50, 0x9396, 0x88DF, 0x5750,\n\t0x5EA7, 0x632B, 0x50B5, 0x50AC, 0x518D, 0x6700, 0x54C9, 0x585E, 0x59BB, 0x5BB0, 0x5F69, 0x624D, 0x63A1, 0x683D, 0x6B73, 0x6E08,\n\t0x707D, 0x91C7, 0x7280, 0x7815, 0x7826, 0x796D, 0x658E, 0x7D30, 0x83DC, 0x88C1, 0x8F09, 0x969B, 0x5264, 0x5728, 0x6750, 0x7F6A,\n\t0x8CA1, 0x51B4, 0x5742, 0x962A, 0x583A, 0x698A, 0x80B4, 0x54B2, 0x5D0E, 0x57FC, 0x7895, 0x9DFA, 0x4F5C, 0x524A, 0x548B, 0x643E,\n\t0x6628, 0x6714, 0x67F5, 0x7A84, 0x7B56, 0x7D22, 0x932F, 0x685C, 0x9BAD, 0x7B39, 0x5319, 0x518A, 0x5237, 0xFFFF, 0xFFFF, 0xFFFF,\n\t// 0X8E00 to 0X8EFF\n\t0x5BDF, 0x62F6, 0x64AE, 0x64E6, 0x672D, 0x6BBA, 0x85A9, 0x96D1, 0x7690, 0x9BD6, 0x634C, 0x9306, 0x9BAB, 0x76BF, 0x6652, 0x4E09,\n\t0x5098, 0x53C2, 0x5C71, 0x60E8, 0x6492, 0x6563, 0x685F, 0x71E6, 0x73CA, 0x7523, 0x7B97, 0x7E82, 0x8695, 0x8B83, 0x8CDB, 0x9178,\n\t0x9910, 0x65AC, 0x66AB, 0x6B8B, 0x4ED5, 0x4ED4, 0x4F3A, 0x4F7F, 0x523A, 0x53F8, 0x53F2, 0x55E3, 0x56DB, 0x58EB, 0x59CB, 0x59C9,\n\t0x59FF, 0x5B50, 0x5C4D, 0x5E02, 0x5E2B, 0x5FD7, 0x601D, 0x6307, 0x652F, 0x5B5C, 0x65AF, 0x65BD, 0x65E8, 0x679D, 0x6B62, 0xFFFF,\n\t0x6B7B, 0x6C0F, 0x7345, 0x7949, 0x79C1, 0x7CF8, 0x7D19, 0x7D2B, 0x80A2, 0x8102, 0x81F3, 0x8996, 0x8A5E, 0x8A69, 0x8A66, 0x8A8C,\n\t0x8AEE, 0x8CC7, 0x8CDC, 0x96CC, 0x98FC, 0x6B6F, 0x4E8B, 0x4F3C, 0x4F8D, 0x5150, 0x5B57, 0x5BFA, 0x6148, 0x6301, 0x6642, 0x6B21,\n\t0x6ECB, 0x6CBB, 0x723E, 0x74BD, 0x75D4, 0x78C1, 0x793A, 0x800C, 0x8033, 0x81EA, 0x8494, 0x8F9E, 0x6C50, 0x9E7F, 0x5F0F, 0x8B58,\n\t0x9D2B, 0x7AFA, 0x8EF8, 0x5B8D, 0x96EB, 0x4E03, 0x53F1, 0x57F7, 0x5931, 0x5AC9, 0x5BA4, 0x6089, 0x6E7F, 0x6F06, 0x75BE, 0x8CEA,\n\t0x5B9F, 0x8500, 0x7BE0, 0x5072, 0x67F4, 0x829D, 0x5C61, 0x854A, 0x7E1E, 0x820E, 0x5199, 0x5C04, 0x6368, 0x8D66, 0x659C, 0x716E,\n\t0x793E, 0x7D17, 0x8005, 0x8B1D, 0x8ECA, 0x906E, 0x86C7, 0x90AA, 0x501F, 0x52FA, 0x5C3A, 0x6753, 0x707C, 0x7235, 0x914C, 0x91C8,\n\t0x932B, 0x82E5, 0x5BC2, 0x5F31, 0x60F9, 0x4E3B, 0x53D6, 0x5B88, 0x624B, 0x6731, 0x6B8A, 0x72E9, 0x73E0, 0x7A2E, 0x816B, 0x8DA3,\n\t0x9152, 0x9996, 0x5112, 0x53D7, 0x546A, 0x5BFF, 0x6388, 0x6A39, 0x7DAC, 0x9700, 0x56DA, 0x53CE, 0x5468, 0xFFFF, 0xFFFF, 0xFFFF,\n\t// 0X8F00 to 0X8FFF\n\t0x5B97, 0x5C31, 0x5DDE, 0x4FEE, 0x6101, 0x62FE, 0x6D32, 0x79C0, 0x79CB, 0x7D42, 0x7E4D, 0x7FD2, 0x81ED, 0x821F, 0x8490, 0x8846,\n\t0x8972, 0x8B90, 0x8E74, 0x8F2F, 0x9031, 0x914B, 0x916C, 0x96C6, 0x919C, 0x4EC0, 0x4F4F, 0x5145, 0x5341, 0x5F93, 0x620E, 0x67D4,\n\t0x6C41, 0x6E0B, 0x7363, 0x7E26, 0x91CD, 0x9283, 0x53D4, 0x5919, 0x5BBF, 0x6DD1, 0x795D, 0x7E2E, 0x7C9B, 0x587E, 0x719F, 0x51FA,\n\t0x8853, 0x8FF0, 0x4FCA, 0x5CFB, 0x6625, 0x77AC, 0x7AE3, 0x821C, 0x99FF, 0x51C6, 0x5FAA, 0x65EC, 0x696F, 0x6B89, 0x6DF3, 0xFFFF,\n\t0x6E96, 0x6F64, 0x76FE, 0x7D14, 0x5DE1, 0x9075, 0x9187, 0x9806, 0x51E6, 0x521D, 0x6240, 0x6691, 0x66D9, 0x6E1A, 0x5EB6, 0x7DD2,\n\t0x7F72, 0x66F8, 0x85AF, 0x85F7, 0x8AF8, 0x52A9, 0x53D9, 0x5973, 0x5E8F, 0x5F90, 0x6055, 0x92E4, 0x9664, 0x50B7, 0x511F, 0x52DD,\n\t0x5320, 0x5347, 0x53EC, 0x54E8, 0x5546, 0x5531, 0x5617, 0x5968, 0x59BE, 0x5A3C, 0x5BB5, 0x5C06, 0x5C0F, 0x5C11, 0x5C1A, 0x5E84,\n\t0x5E8A, 0x5EE0, 0x5F70, 0x627F, 0x6284, 0x62DB, 0x638C, 0x6377, 0x6607, 0x660C, 0x662D, 0x6676, 0x677E, 0x68A2, 0x6A1F, 0x6A35,\n\t0x6CBC, 0x6D88, 0x6E09, 0x6E58, 0x713C, 0x7126, 0x7167, 0x75C7, 0x7701, 0x785D, 0x7901, 0x7965, 0x79F0, 0x7AE0, 0x7B11, 0x7CA7,\n\t0x7D39, 0x8096, 0x83D6, 0x848B, 0x8549, 0x885D, 0x88F3, 0x8A1F, 0x8A3C, 0x8A54, 0x8A73, 0x8C61, 0x8CDE, 0x91A4, 0x9266, 0x937E,\n\t0x9418, 0x969C, 0x9798, 0x4E0A, 0x4E08, 0x4E1E, 0x4E57, 0x5197, 0x5270, 0x57CE, 0x5834, 0x58CC, 0x5B22, 0x5E38, 0x60C5, 0x64FE,\n\t0x6761, 0x6756, 0x6D44, 0x72B6, 0x7573, 0x7A63, 0x84B8, 0x8B72, 0x91B8, 0x9320, 0x5631, 0x57F4, 0x98FE, 0xFFFF, 0xFFFF, 0xFFFF,\n\t// 0X9000 to 0X90FF\n\t0x62ED, 0x690D, 0x6B96, 0x71ED, 0x7E54, 0x8077, 0x8272, 0x89E6, 0x98DF, 0x8755, 0x8FB1, 0x5C3B, 0x4F38, 0x4FE1, 0x4FB5, 0x5507,\n\t0x5A20, 0x5BDD, 0x5BE9, 0x5FC3, 0x614E, 0x632F, 0x65B0, 0x664B, 0x68EE, 0x699B, 0x6D78, 0x6DF1, 0x7533, 0x75B9, 0x771F, 0x795E,\n\t0x79E6, 0x7D33, 0x81E3, 0x82AF, 0x85AA, 0x89AA, 0x8A3A, 0x8EAB, 0x8F9B, 0x9032, 0x91DD, 0x9707, 0x4EBA, 0x4EC1, 0x5203, 0x5875,\n\t0x58EC, 0x5C0B, 0x751A, 0x5C3D, 0x814E, 0x8A0A, 0x8FC5, 0x9663, 0x976D, 0x7B25, 0x8ACF, 0x9808, 0x9162, 0x56F3, 0x53A8, 0xFFFF,\n\t0x9017, 0x5439, 0x5782, 0x5E25, 0x63A8, 0x6C34, 0x708A, 0x7761, 0x7C8B, 0x7FE0, 0x8870, 0x9042, 0x9154, 0x9310, 0x9318, 0x968F,\n\t0x745E, 0x9AC4, 0x5D07, 0x5D69, 0x6570, 0x67A2, 0x8DA8, 0x96DB, 0x636E, 0x6749, 0x6919, 0x83C5, 0x9817, 0x96C0, 0x88FE, 0x6F84,\n\t0x647A, 0x5BF8, 0x4E16, 0x702C, 0x755D, 0x662F, 0x51C4, 0x5236, 0x52E2, 0x59D3, 0x5F81, 0x6027, 0x6210, 0x653F, 0x6574, 0x661F,\n\t0x6674, 0x68F2, 0x6816, 0x6B63, 0x6E05, 0x7272, 0x751F, 0x76DB, 0x7CBE, 0x8056, 0x58F0, 0x88FD, 0x897F, 0x8AA0, 0x8A93, 0x8ACB,\n\t0x901D, 0x9192, 0x9752, 0x9759, 0x6589, 0x7A0E, 0x8106, 0x96BB, 0x5E2D, 0x60DC, 0x621A, 0x65A5, 0x6614, 0x6790, 0x77F3, 0x7A4D,\n\t0x7C4D, 0x7E3E, 0x810A, 0x8CAC, 0x8D64, 0x8DE1, 0x8E5F, 0x78A9, 0x5207, 0x62D9, 0x63A5, 0x6442, 0x6298, 0x8A2D, 0x7A83, 0x7BC0,\n\t0x8AAC, 0x96EA, 0x7D76, 0x820C, 0x8749, 0x4ED9, 0x5148, 0x5343, 0x5360, 0x5BA3, 0x5C02, 0x5C16, 0x5DDD, 0x6226, 0x6247, 0x64B0,\n\t0x6813, 0x6834, 0x6CC9, 0x6D45, 0x6D17, 0x67D3, 0x6F5C, 0x714E, 0x717D, 0x65CB, 0x7A7F, 0x7BAD, 0x7DDA, 0xFFFF, 0xFFFF, 0xFFFF,\n\t// 0X9100 to 0X91FF\n\t0x7E4A, 0x7FA8, 0x817A, 0x821B, 0x8239, 0x85A6, 0x8A6E, 0x8CCE, 0x8DF5, 0x9078, 0x9077, 0x92AD, 0x9291, 0x9583, 0x9BAE, 0x524D,\n\t0x5584, 0x6F38, 0x7136, 0x5168, 0x7985, 0x7E55, 0x81B3, 0x7CCE, 0x564C, 0x5851, 0x5CA8, 0x63AA, 0x66FE, 0x66FD, 0x695A, 0x72D9,\n\t0x758F, 0x758E, 0x790E, 0x7956, 0x79DF, 0x7C97, 0x7D20, 0x7D44, 0x8607, 0x8A34, 0x963B, 0x9061, 0x9F20, 0x50E7, 0x5275, 0x53CC,\n\t0x53E2, 0x5009, 0x55AA, 0x58EE, 0x594F, 0x723D, 0x5B8B, 0x5C64, 0x531D, 0x60E3, 0x60F3, 0x635C, 0x6383, 0x633F, 0x63BB, 0xFFFF,\n\t0x64CD, 0x65E9, 0x66F9, 0x5DE3, 0x69CD, 0x69FD, 0x6F15, 0x71E5, 0x4E89, 0x75E9, 0x76F8, 0x7A93, 0x7CDF, 0x7DCF, 0x7D9C, 0x8061,\n\t0x8349, 0x8358, 0x846C, 0x84BC, 0x85FB, 0x88C5, 0x8D70, 0x9001, 0x906D, 0x9397, 0x971C, 0x9A12, 0x50CF, 0x5897, 0x618E, 0x81D3,\n\t0x8535, 0x8D08, 0x9020, 0x4FC3, 0x5074, 0x5247, 0x5373, 0x606F, 0x6349, 0x675F, 0x6E2C, 0x8DB3, 0x901F, 0x4FD7, 0x5C5E, 0x8CCA,\n\t0x65CF, 0x7D9A, 0x5352, 0x8896, 0x5176, 0x63C3, 0x5B58, 0x5B6B, 0x5C0A, 0x640D, 0x6751, 0x905C, 0x4ED6, 0x591A, 0x592A, 0x6C70,\n\t0x8A51, 0x553E, 0x5815, 0x59A5, 0x60F0, 0x6253, 0x67C1, 0x8235, 0x6955, 0x9640, 0x99C4, 0x9A28, 0x4F53, 0x5806, 0x5BFE, 0x8010,\n\t0x5CB1, 0x5E2F, 0x5F85, 0x6020, 0x614B, 0x6234, 0x66FF, 0x6CF0, 0x6EDE, 0x80CE, 0x817F, 0x82D4, 0x888B, 0x8CB8, 0x9000, 0x902E,\n\t0x968A, 0x9EDB, 0x9BDB, 0x4EE3, 0x53F0, 0x5927, 0x7B2C, 0x918D, 0x984C, 0x9DF9, 0x6EDD, 0x7027, 0x5353, 0x5544, 0x5B85, 0x6258,\n\t0x629E, 0x62D3, 0x6CA2, 0x6FEF, 0x7422, 0x8A17, 0x9438, 0x6FC1, 0x8AFE, 0x8338, 0x51E7, 0x86F8, 0x53EA, 0xFFFF, 0xFFFF, 0xFFFF,\n\t// 0X9200 to 0X92FF\n\t0x53E9, 0x4F46, 0x9054, 0x8FB0, 0x596A, 0x8131, 0x5DFD, 0x7AEA, 0x8FBF, 0x68DA, 0x8C37, 0x72F8, 0x9C48, 0x6A3D, 0x8AB0, 0x4E39,\n\t0x5358, 0x5606, 0x5766, 0x62C5, 0x63A2, 0x65E6, 0x6B4E, 0x6DE1, 0x6E5B, 0x70AD, 0x77ED, 0x7AEF, 0x7BAA, 0x7DBB, 0x803D, 0x80C6,\n\t0x86CB, 0x8A95, 0x935B, 0x56E3, 0x58C7, 0x5F3E, 0x65AD, 0x6696, 0x6A80, 0x6BB5, 0x7537, 0x8AC7, 0x5024, 0x77E5, 0x5730, 0x5F1B,\n\t0x6065, 0x667A, 0x6C60, 0x75F4, 0x7A1A, 0x7F6E, 0x81F4, 0x8718, 0x9045, 0x99B3, 0x7BC9, 0x755C, 0x7AF9, 0x7B51, 0x84C4, 0xFFFF,\n\t0x9010, 0x79E9, 0x7A92, 0x8336, 0x5AE1, 0x7740, 0x4E2D, 0x4EF2, 0x5B99, 0x5FE0, 0x62BD, 0x663C, 0x67F1, 0x6CE8, 0x866B, 0x8877,\n\t0x8A3B, 0x914E, 0x92F3, 0x99D0, 0x6A17, 0x7026, 0x732A, 0x82E7, 0x8457, 0x8CAF, 0x4E01, 0x5146, 0x51CB, 0x558B, 0x5BF5, 0x5E16,\n\t0x5E33, 0x5E81, 0x5F14, 0x5F35, 0x5F6B, 0x5FB4, 0x61F2, 0x6311, 0x66A2, 0x671D, 0x6F6E, 0x7252, 0x753A, 0x773A, 0x8074, 0x8139,\n\t0x8178, 0x8776, 0x8ABF, 0x8ADC, 0x8D85, 0x8DF3, 0x929A, 0x9577, 0x9802, 0x9CE5, 0x52C5, 0x6357, 0x76F4, 0x6715, 0x6C88, 0x73CD,\n\t0x8CC3, 0x93AE, 0x9673, 0x6D25, 0x589C, 0x690E, 0x69CC, 0x8FFD, 0x939A, 0x75DB, 0x901A, 0x585A, 0x6802, 0x63B4, 0x69FB, 0x4F43,\n\t0x6F2C, 0x67D8, 0x8FBB, 0x8526, 0x7DB4, 0x9354, 0x693F, 0x6F70, 0x576A, 0x58F7, 0x5B2C, 0x7D2C, 0x722A, 0x540A, 0x91E3, 0x9DB4,\n\t0x4EAD, 0x4F4E, 0x505C, 0x5075, 0x5243, 0x8C9E, 0x5448, 0x5824, 0x5B9A, 0x5E1D, 0x5E95, 0x5EAD, 0x5EF7, 0x5F1F, 0x608C, 0x62B5,\n\t0x633A, 0x63D0, 0x68AF, 0x6C40, 0x7887, 0x798E, 0x7A0B, 0x7DE0, 0x8247, 0x8A02, 0x8AE6, 0x8E44, 0x9013, 0xFFFF, 0xFFFF, 0xFFFF,\n\t// 0X9300 to 0X93FF\n\t0x90B8, 0x912D, 0x91D8, 0x9F0E, 0x6CE5, 0x6458, 0x64E2, 0x6575, 0x6EF4, 0x7684, 0x7B1B, 0x9069, 0x93D1, 0x6EBA, 0x54F2, 0x5FB9,\n\t0x64A4, 0x8F4D, 0x8FED, 0x9244, 0x5178, 0x586B, 0x5929, 0x5C55, 0x5E97, 0x6DFB, 0x7E8F, 0x751C, 0x8CBC, 0x8EE2, 0x985B, 0x70B9,\n\t0x4F1D, 0x6BBF, 0x6FB1, 0x7530, 0x96FB, 0x514E, 0x5410, 0x5835, 0x5857, 0x59AC, 0x5C60, 0x5F92, 0x6597, 0x675C, 0x6E21, 0x767B,\n\t0x83DF, 0x8CED, 0x9014, 0x90FD, 0x934D, 0x7825, 0x783A, 0x52AA, 0x5EA6, 0x571F, 0x5974, 0x6012, 0x5012, 0x515A, 0x51AC, 0xFFFF,\n\t0x51CD, 0x5200, 0x5510, 0x5854, 0x5858, 0x5957, 0x5B95, 0x5CF6, 0x5D8B, 0x60BC, 0x6295, 0x642D, 0x6771, 0x6843, 0x68BC, 0x68DF,\n\t0x76D7, 0x6DD8, 0x6E6F, 0x6D9B, 0x706F, 0x71C8, 0x5F53, 0x75D8, 0x7977, 0x7B49, 0x7B54, 0x7B52, 0x7CD6, 0x7D71, 0x5230, 0x8463,\n\t0x8569, 0x85E4, 0x8A0E, 0x8B04, 0x8C46, 0x8E0F, 0x9003, 0x900F, 0x9419, 0x9676, 0x982D, 0x9A30, 0x95D8, 0x50CD, 0x52D5, 0x540C,\n\t0x5802, 0x5C0E, 0x61A7, 0x649E, 0x6D1E, 0x77B3, 0x7AE5, 0x80F4, 0x8404, 0x9053, 0x9285, 0x5CE0, 0x9D07, 0x533F, 0x5F97, 0x5FB3,\n\t0x6D9C, 0x7279, 0x7763, 0x79BF, 0x7BE4, 0x6BD2, 0x72EC, 0x8AAD, 0x6803, 0x6A61, 0x51F8, 0x7A81, 0x6934, 0x5C4A, 0x9CF6, 0x82EB,\n\t0x5BC5, 0x9149, 0x701E, 0x5678, 0x5C6F, 0x60C7, 0x6566, 0x6C8C, 0x8C5A, 0x9041, 0x9813, 0x5451, 0x66C7, 0x920D, 0x5948, 0x90A3,\n\t0x5185, 0x4E4D, 0x51EA, 0x8599, 0x8B0E, 0x7058, 0x637A, 0x934B, 0x6962, 0x99B4, 0x7E04, 0x7577, 0x5357, 0x6960, 0x8EDF, 0x96E3,\n\t0x6C5D, 0x4E8C, 0x5C3C, 0x5F10, 0x8FE9, 0x5302, 0x8CD1, 0x8089, 0x8679, 0x5EFF, 0x65E5, 0x4E73, 0x5165, 0xFFFF, 0xFFFF, 0xFFFF,\n\t// 0X9400 to 0X94FF\n\t0x5982, 0x5C3F, 0x97EE, 0x4EFB, 0x598A, 0x5FCD, 0x8A8D, 0x6FE1, 0x79B0, 0x7962, 0x5BE7, 0x8471, 0x732B, 0x71B1, 0x5E74, 0x5FF5,\n\t0x637B, 0x649A, 0x71C3, 0x7C98, 0x4E43, 0x5EFC, 0x4E4B, 0x57DC, 0x56A2, 0x60A9, 0x6FC3, 0x7D0D, 0x80FD, 0x8133, 0x81BF, 0x8FB2,\n\t0x8997, 0x86A4, 0x5DF4, 0x628A, 0x64AD, 0x8987, 0x6777, 0x6CE2, 0x6D3E, 0x7436, 0x7834, 0x5A46, 0x7F75, 0x82AD, 0x99AC, 0x4FF3,\n\t0x5EC3, 0x62DD, 0x6392, 0x6557, 0x676F, 0x76C3, 0x724C, 0x80CC, 0x80BA, 0x8F29, 0x914D, 0x500D, 0x57F9, 0x5A92, 0x6885, 0xFFFF,\n\t0x6973, 0x7164, 0x72FD, 0x8CB7, 0x58F2, 0x8CE0, 0x966A, 0x9019, 0x877F, 0x79E4, 0x77E7, 0x8429, 0x4F2F, 0x5265, 0x535A, 0x62CD,\n\t0x67CF, 0x6CCA, 0x767D, 0x7B94, 0x7C95, 0x8236, 0x8584, 0x8FEB, 0x66DD, 0x6F20, 0x7206, 0x7E1B, 0x83AB, 0x99C1, 0x9EA6, 0x51FD,\n\t0x7BB1, 0x7872, 0x7BB8, 0x8087, 0x7B48, 0x6AE8, 0x5E61, 0x808C, 0x7551, 0x7560, 0x516B, 0x9262, 0x6E8C, 0x767A, 0x9197, 0x9AEA,\n\t0x4F10, 0x7F70, 0x629C, 0x7B4F, 0x95A5, 0x9CE9, 0x567A, 0x5859, 0x86E4, 0x96BC, 0x4F34, 0x5224, 0x534A, 0x53CD, 0x53DB, 0x5E06,\n\t0x642C, 0x6591, 0x677F, 0x6C3E, 0x6C4E, 0x7248, 0x72AF, 0x73ED, 0x7554, 0x7E41, 0x822C, 0x85E9, 0x8CA9, 0x7BC4, 0x91C6, 0x7169,\n\t0x9812, 0x98EF, 0x633D, 0x6669, 0x756A, 0x76E4, 0x78D0, 0x8543, 0x86EE, 0x532A, 0x5351, 0x5426, 0x5983, 0x5E87, 0x5F7C, 0x60B2,\n\t0x6249, 0x6279, 0x62AB, 0x6590, 0x6BD4, 0x6CCC, 0x75B2, 0x76AE, 0x7891, 0x79D8, 0x7DCB, 0x7F77, 0x80A5, 0x88AB, 0x8AB9, 0x8CBB,\n\t0x907F, 0x975E, 0x98DB, 0x6A0B, 0x7C38, 0x5099, 0x5C3E, 0x5FAE, 0x6787, 0x6BD8, 0x7435, 0x7709, 0x7F8E, 0xFFFF, 0xFFFF, 0xFFFF,\n\t// 0X9500 to 0X95FF\n\t0x9F3B, 0x67CA, 0x7A17, 0x5339, 0x758B, 0x9AED, 0x5F66, 0x819D, 0x83F1, 0x8098, 0x5F3C, 0x5FC5, 0x7562, 0x7B46, 0x903C, 0x6867,\n\t0x59EB, 0x5A9B, 0x7D10, 0x767E, 0x8B2C, 0x4FF5, 0x5F6A, 0x6A19, 0x6C37, 0x6F02, 0x74E2, 0x7968, 0x8868, 0x8A55, 0x8C79, 0x5EDF,\n\t0x63CF, 0x75C5, 0x79D2, 0x82D7, 0x9328, 0x92F2, 0x849C, 0x86ED, 0x9C2D, 0x54C1, 0x5F6C, 0x658C, 0x6D5C, 0x7015, 0x8CA7, 0x8CD3,\n\t0x983B, 0x654F, 0x74F6, 0x4E0D, 0x4ED8, 0x57E0, 0x592B, 0x5A66, 0x5BCC, 0x51A8, 0x5E03, 0x5E9C, 0x6016, 0x6276, 0x6577, 0xFFFF,\n\t0x65A7, 0x666E, 0x6D6E, 0x7236, 0x7B26, 0x8150, 0x819A, 0x8299, 0x8B5C, 0x8CA0, 0x8CE6, 0x8D74, 0x961C, 0x9644, 0x4FAE, 0x64AB,\n\t0x6B66, 0x821E, 0x8461, 0x856A, 0x90E8, 0x5C01, 0x6953, 0x98A8, 0x847A, 0x8557, 0x4F0F, 0x526F, 0x5FA9, 0x5E45, 0x670D, 0x798F,\n\t0x8179, 0x8907, 0x8986, 0x6DF5, 0x5F17, 0x6255, 0x6CB8, 0x4ECF, 0x7269, 0x9B92, 0x5206, 0x543B, 0x5674, 0x58B3, 0x61A4, 0x626E,\n\t0x711A, 0x596E, 0x7C89, 0x7CDE, 0x7D1B, 0x96F0, 0x6587, 0x805E, 0x4E19, 0x4F75, 0x5175, 0x5840, 0x5E63, 0x5E73, 0x5F0A, 0x67C4,\n\t0x4E26, 0x853D, 0x9589, 0x965B, 0x7C73, 0x9801, 0x50FB, 0x58C1, 0x7656, 0x78A7, 0x5225, 0x77A5, 0x8511, 0x7B86, 0x504F, 0x5909,\n\t0x7247, 0x7BC7, 0x7DE8, 0x8FBA, 0x8FD4, 0x904D, 0x4FBF, 0x52C9, 0x5A29, 0x5F01, 0x97AD, 0x4FDD, 0x8217, 0x92EA, 0x5703, 0x6355,\n\t0x6B69, 0x752B, 0x88DC, 0x8F14, 0x7A42, 0x52DF, 0x5893, 0x6155, 0x620A, 0x66AE, 0x6BCD, 0x7C3F, 0x83E9, 0x5023, 0x4FF8, 0x5305,\n\t0x5446, 0x5831, 0x5949, 0x5B9D, 0x5CF0, 0x5CEF, 0x5D29, 0x5E96, 0x62B1, 0x6367, 0x653E, 0x65B9, 0x670B, 0xFFFF, 0xFFFF, 0xFFFF,\n\t// 0X9600 to 0X96FF\n\t0x6CD5, 0x6CE1, 0x70F9, 0x7832, 0x7E2B, 0x80DE, 0x82B3, 0x840C, 0x84EC, 0x8702, 0x8912, 0x8A2A, 0x8C4A, 0x90A6, 0x92D2, 0x98FD,\n\t0x9CF3, 0x9D6C, 0x4E4F, 0x4EA1, 0x508D, 0x5256, 0x574A, 0x59A8, 0x5E3D, 0x5FD8, 0x5FD9, 0x623F, 0x66B4, 0x671B, 0x67D0, 0x68D2,\n\t0x5192, 0x7D21, 0x80AA, 0x81A8, 0x8B00, 0x8C8C, 0x8CBF, 0x927E, 0x9632, 0x5420, 0x982C, 0x5317, 0x50D5, 0x535C, 0x58A8, 0x64B2,\n\t0x6734, 0x7267, 0x7766, 0x7A46, 0x91E6, 0x52C3, 0x6CA1, 0x6B86, 0x5800, 0x5E4C, 0x5954, 0x672C, 0x7FFB, 0x51E1, 0x76C6, 0xFFFF,\n\t0x6469, 0x78E8, 0x9B54, 0x9EBB, 0x57CB, 0x59B9, 0x6627, 0x679A, 0x6BCE, 0x54E9, 0x69D9, 0x5E55, 0x819C, 0x6795, 0x9BAA, 0x67FE,\n\t0x9C52, 0x685D, 0x4EA6, 0x4FE3, 0x53C8, 0x62B9, 0x672B, 0x6CAB, 0x8FC4, 0x4FAD, 0x7E6D, 0x9EBF, 0x4E07, 0x6162, 0x6E80, 0x6F2B,\n\t0x8513, 0x5473, 0x672A, 0x9B45, 0x5DF3, 0x7B95, 0x5CAC, 0x5BC6, 0x871C, 0x6E4A, 0x84D1, 0x7A14, 0x8108, 0x5999, 0x7C8D, 0x6C11,\n\t0x7720, 0x52D9, 0x5922, 0x7121, 0x725F, 0x77DB, 0x9727, 0x9D61, 0x690B, 0x5A7F, 0x5A18, 0x51A5, 0x540D, 0x547D, 0x660E, 0x76DF,\n\t0x8FF7, 0x9298, 0x9CF4, 0x59EA, 0x725D, 0x6EC5, 0x514D, 0x68C9, 0x7DBF, 0x7DEC, 0x9762, 0x9EBA, 0x6478, 0x6A21, 0x8302, 0x5984,\n\t0x5B5F, 0x6BDB, 0x731B, 0x76F2, 0x7DB2, 0x8017, 0x8499, 0x5132, 0x6728, 0x9ED9, 0x76EE, 0x6762, 0x52FF, 0x9905, 0x5C24, 0x623B,\n\t0x7C7E, 0x8CB0, 0x554F, 0x60B6, 0x7D0B, 0x9580, 0x5301, 0x4E5F, 0x51B6, 0x591C, 0x723A, 0x8036, 0x91CE, 0x5F25, 0x77E2, 0x5384,\n\t0x5F79, 0x7D04, 0x85AC, 0x8A33, 0x8E8D, 0x9756, 0x67F3, 0x85AE, 0x9453, 0x6109, 0x6108, 0x6CB9, 0x7652, 0xFFFF, 0xFFFF, 0xFFFF,\n\t// 0X9700 to 0X97FF\n\t0x8AED, 0x8F38, 0x552F, 0x4F51, 0x512A, 0x52C7, 0x53CB, 0x5BA5, 0x5E7D, 0x60A0, 0x6182, 0x63D6, 0x6709, 0x67DA, 0x6E67, 0x6D8C,\n\t0x7336, 0x7337, 0x7531, 0x7950, 0x88D5, 0x8A98, 0x904A, 0x9091, 0x90F5, 0x96C4, 0x878D, 0x5915, 0x4E88, 0x4F59, 0x4E0E, 0x8A89,\n\t0x8F3F, 0x9810, 0x50AD, 0x5E7C, 0x5996, 0x5BB9, 0x5EB8, 0x63DA, 0x63FA, 0x64C1, 0x66DC, 0x694A, 0x69D8, 0x6D0B, 0x6EB6, 0x7194,\n\t0x7528, 0x7AAF, 0x7F8A, 0x8000, 0x8449, 0x84C9, 0x8981, 0x8B21, 0x8E0A, 0x9065, 0x967D, 0x990A, 0x617E, 0x6291, 0x6B32, 0xFFFF,\n\t0x6C83, 0x6D74, 0x7FCC, 0x7FFC, 0x6DC0, 0x7F85, 0x87BA, 0x88F8, 0x6765, 0x83B1, 0x983C, 0x96F7, 0x6D1B, 0x7D61, 0x843D, 0x916A,\n\t0x4E71, 0x5375, 0x5D50, 0x6B04, 0x6FEB, 0x85CD, 0x862D, 0x89A7, 0x5229, 0x540F, 0x5C65, 0x674E, 0x68A8, 0x7406, 0x7483, 0x75E2,\n\t0x88CF, 0x88E1, 0x91CC, 0x96E2, 0x9678, 0x5F8B, 0x7387, 0x7ACB, 0x844E, 0x63A0, 0x7565, 0x5289, 0x6D41, 0x6E9C, 0x7409, 0x7559,\n\t0x786B, 0x7C92, 0x9686, 0x7ADC, 0x9F8D, 0x4FB6, 0x616E, 0x65C5, 0x865C, 0x4E86, 0x4EAE, 0x50DA, 0x4E21, 0x51CC, 0x5BEE, 0x6599,\n\t0x6881, 0x6DBC, 0x731F, 0x7642, 0x77AD, 0x7A1C, 0x7CE7, 0x826F, 0x8AD2, 0x907C, 0x91CF, 0x9675, 0x9818, 0x529B, 0x7DD1, 0x502B,\n\t0x5398, 0x6797, 0x6DCB, 0x71D0, 0x7433, 0x81E8, 0x8F2A, 0x96A3, 0x9C57, 0x9E9F, 0x7460, 0x5841, 0x6D99, 0x7D2F, 0x985E, 0x4EE4,\n\t0x4F36, 0x4F8B, 0x51B7, 0x52B1, 0x5DBA, 0x601C, 0x73B2, 0x793C, 0x82D3, 0x9234, 0x96B7, 0x96F6, 0x970A, 0x9E97, 0x9F62, 0x66A6,\n\t0x6B74, 0x5217, 0x52A3, 0x70C8, 0x88C2, 0x5EC9, 0x604B, 0x6190, 0x6F23, 0x7149, 0x7C3E, 0x7DF4, 0x806F, 0xFFFF, 0xFFFF, 0xFFFF,\n\t// 0X9800 to 0X98FF\n\t0x84EE, 0x9023, 0x932C, 0x5442, 0x9B6F, 0x6AD3, 0x7089, 0x8CC2, 0x8DEF, 0x9732, 0x52B4, 0x5A41, 0x5ECA, 0x5F04, 0x6717, 0x697C,\n\t0x6994, 0x6D6A, 0x6F0F, 0x7262, 0x72FC, 0x7BED, 0x8001, 0x807E, 0x874B, 0x90CE, 0x516D, 0x9E93, 0x7984, 0x808B, 0x9332, 0x8AD6,\n\t0x502D, 0x548C, 0x8A71, 0x6B6A, 0x8CC4, 0x8107, 0x60D1, 0x67A0, 0x9DF2, 0x4E99, 0x4E98, 0x9C10, 0x8A6B, 0x85C1, 0x8568, 0x6900,\n\t0x6E7E, 0x7897, 0x8155, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n\t0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n\t0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x5F0C,\n\t0x4E10, 0x4E15, 0x4E2A, 0x4E31, 0x4E36, 0x4E3C, 0x4E3F, 0x4E42, 0x4E56, 0x4E58, 0x4E82, 0x4E85, 0x8C6B, 0x4E8A, 0x8212, 0x5F0D,\n\t0x4E8E, 0x4E9E, 0x4E9F, 0x4EA0, 0x4EA2, 0x4EB0, 0x4EB3, 0x4EB6, 0x4ECE, 0x4ECD, 0x4EC4, 0x4EC6, 0x4EC2, 0x4ED7, 0x4EDE, 0x4EED,\n\t0x4EDF, 0x4EF7, 0x4F09, 0x4F5A, 0x4F30, 0x4F5B, 0x4F5D, 0x4F57, 0x4F47, 0x4F76, 0x4F88, 0x4F8F, 0x4F98, 0x4F7B, 0x4F69, 0x4F70,\n\t0x4F91, 0x4F6F, 0x4F86, 0x4F96, 0x5118, 0x4FD4, 0x4FDF, 0x4FCE, 0x4FD8, 0x4FDB, 0x4FD1, 0x4FDA, 0x4FD0, 0x4FE4, 0x4FE5, 0x501A,\n\t0x5028, 0x5014, 0x502A, 0x5025, 0x5005, 0x4F1C, 0x4FF6, 0x5021, 0x5029, 0x502C, 0x4FFE, 0x4FEF, 0x5011, 0x5006, 0x5043, 0x5047,\n\t0x6703, 0x5055, 0x5050, 0x5048, 0x505A, 0x5056, 0x506C, 0x5078, 0x5080, 0x509A, 0x5085, 0x50B4, 0x50B2, 0xFFFF, 0xFFFF, 0xFFFF,\n\t// 0X9900 to 0X99FF\n\t0x50C9, 0x50CA, 0x50B3, 0x50C2, 0x50D6, 0x50DE, 0x50E5, 0x50ED, 0x50E3, 0x50EE, 0x50F9, 0x50F5, 0x5109, 0x5101, 0x5102, 0x5116,\n\t0x5115, 0x5114, 0x511A, 0x5121, 0x513A, 0x5137, 0x513C, 0x513B, 0x513F, 0x5140, 0x5152, 0x514C, 0x5154, 0x5162, 0x7AF8, 0x5169,\n\t0x516A, 0x516E, 0x5180, 0x5182, 0x56D8, 0x518C, 0x5189, 0x518F, 0x5191, 0x5193, 0x5195, 0x5196, 0x51A4, 0x51A6, 0x51A2, 0x51A9,\n\t0x51AA, 0x51AB, 0x51B3, 0x51B1, 0x51B2, 0x51B0, 0x51B5, 0x51BD, 0x51C5, 0x51C9, 0x51DB, 0x51E0, 0x8655, 0x51E9, 0x51ED, 0xFFFF,\n\t0x51F0, 0x51F5, 0x51FE, 0x5204, 0x520B, 0x5214, 0x520E, 0x5227, 0x522A, 0x522E, 0x5233, 0x5239, 0x524F, 0x5244, 0x524B, 0x524C,\n\t0x525E, 0x5254, 0x526A, 0x5274, 0x5269, 0x5273, 0x527F, 0x527D, 0x528D, 0x5294, 0x5292, 0x5271, 0x5288, 0x5291, 0x8FA8, 0x8FA7,\n\t0x52AC, 0x52AD, 0x52BC, 0x52B5, 0x52C1, 0x52CD, 0x52D7, 0x52DE, 0x52E3, 0x52E6, 0x98ED, 0x52E0, 0x52F3, 0x52F5, 0x52F8, 0x52F9,\n\t0x5306, 0x5308, 0x7538, 0x530D, 0x5310, 0x530F, 0x5315, 0x531A, 0x5323, 0x532F, 0x5331, 0x5333, 0x5338, 0x5340, 0x5346, 0x5345,\n\t0x4E17, 0x5349, 0x534D, 0x51D6, 0x535E, 0x5369, 0x536E, 0x5918, 0x537B, 0x5377, 0x5382, 0x5396, 0x53A0, 0x53A6, 0x53A5, 0x53AE,\n\t0x53B0, 0x53B6, 0x53C3, 0x7C12, 0x96D9, 0x53DF, 0x66FC, 0x71EE, 0x53EE, 0x53E8, 0x53ED, 0x53FA, 0x5401, 0x543D, 0x5440, 0x542C,\n\t0x542D, 0x543C, 0x542E, 0x5436, 0x5429, 0x541D, 0x544E, 0x548F, 0x5475, 0x548E, 0x545F, 0x5471, 0x5477, 0x5470, 0x5492, 0x547B,\n\t0x5480, 0x5476, 0x5484, 0x5490, 0x5486, 0x54C7, 0x54A2, 0x54B8, 0x54A5, 0x54AC, 0x54C4, 0x54C8, 0x54A8, 0xFFFF, 0xFFFF, 0xFFFF,\n\t// 0X9A00 to 0X9AFF\n\t0x54AB, 0x54C2, 0x54A4, 0x54BE, 0x54BC, 0x54D8, 0x54E5, 0x54E6, 0x550F, 0x5514, 0x54FD, 0x54EE, 0x54ED, 0x54FA, 0x54E2, 0x5539,\n\t0x5540, 0x5563, 0x554C, 0x552E, 0x555C, 0x5545, 0x5556, 0x5557, 0x5538, 0x5533, 0x555D, 0x5599, 0x5580, 0x54AF, 0x558A, 0x559F,\n\t0x557B, 0x557E, 0x5598, 0x559E, 0x55AE, 0x557C, 0x5583, 0x55A9, 0x5587, 0x55A8, 0x55DA, 0x55C5, 0x55DF, 0x55C4, 0x55DC, 0x55E4,\n\t0x55D4, 0x5614, 0x55F7, 0x5616, 0x55FE, 0x55FD, 0x561B, 0x55F9, 0x564E, 0x5650, 0x71DF, 0x5634, 0x5636, 0x5632, 0x5638, 0xFFFF,\n\t0x566B, 0x5664, 0x562F, 0x566C, 0x566A, 0x5686, 0x5680, 0x568A, 0x56A0, 0x5694, 0x568F, 0x56A5, 0x56AE, 0x56B6, 0x56B4, 0x56C2,\n\t0x56BC, 0x56C1, 0x56C3, 0x56C0, 0x56C8, 0x56CE, 0x56D1, 0x56D3, 0x56D7, 0x56EE, 0x56F9, 0x5700, 0x56FF, 0x5704, 0x5709, 0x5708,\n\t0x570B, 0x570D, 0x5713, 0x5718, 0x5716, 0x55C7, 0x571C, 0x5726, 0x5737, 0x5738, 0x574E, 0x573B, 0x5740, 0x574F, 0x5769, 0x57C0,\n\t0x5788, 0x5761, 0x577F, 0x5789, 0x5793, 0x57A0, 0x57B3, 0x57A4, 0x57AA, 0x57B0, 0x57C3, 0x57C6, 0x57D4, 0x57D2, 0x57D3, 0x580A,\n\t0x57D6, 0x57E3, 0x580B, 0x5819, 0x581D, 0x5872, 0x5821, 0x5862, 0x584B, 0x5870, 0x6BC0, 0x5852, 0x583D, 0x5879, 0x5885, 0x58B9,\n\t0x589F, 0x58AB, 0x58BA, 0x58DE, 0x58BB, 0x58B8, 0x58AE, 0x58C5, 0x58D3, 0x58D1, 0x58D7, 0x58D9, 0x58D8, 0x58E5, 0x58DC, 0x58E4,\n\t0x58DF, 0x58EF, 0x58FA, 0x58F9, 0x58FB, 0x58FC, 0x58FD, 0x5902, 0x590A, 0x5910, 0x591B, 0x68A6, 0x5925, 0x592C, 0x592D, 0x5932,\n\t0x5938, 0x593E, 0x7AD2, 0x5955, 0x5950, 0x594E, 0x595A, 0x5958, 0x5962, 0x5960, 0x5967, 0x596C, 0x5969, 0xFFFF, 0xFFFF, 0xFFFF,\n\t// 0X9B00 to 0X9BFF\n\t0x5978, 0x5981, 0x599D, 0x4F5E, 0x4FAB, 0x59A3, 0x59B2, 0x59C6, 0x59E8, 0x59DC, 0x598D, 0x59D9, 0x59DA, 0x5A25, 0x5A1F, 0x5A11,\n\t0x5A1C, 0x5A09, 0x5A1A, 0x5A40, 0x5A6C, 0x5A49, 0x5A35, 0x5A36, 0x5A62, 0x5A6A, 0x5A9A, 0x5ABC, 0x5ABE, 0x5ACB, 0x5AC2, 0x5ABD,\n\t0x5AE3, 0x5AD7, 0x5AE6, 0x5AE9, 0x5AD6, 0x5AFA, 0x5AFB, 0x5B0C, 0x5B0B, 0x5B16, 0x5B32, 0x5AD0, 0x5B2A, 0x5B36, 0x5B3E, 0x5B43,\n\t0x5B45, 0x5B40, 0x5B51, 0x5B55, 0x5B5A, 0x5B5B, 0x5B65, 0x5B69, 0x5B70, 0x5B73, 0x5B75, 0x5B78, 0x6588, 0x5B7A, 0x5B80, 0xFFFF,\n\t0x5B83, 0x5BA6, 0x5BB8, 0x5BC3, 0x5BC7, 0x5BC9, 0x5BD4, 0x5BD0, 0x5BE4, 0x5BE6, 0x5BE2, 0x5BDE, 0x5BE5, 0x5BEB, 0x5BF0, 0x5BF6,\n\t0x5BF3, 0x5C05, 0x5C07, 0x5C08, 0x5C0D, 0x5C13, 0x5C20, 0x5C22, 0x5C28, 0x5C38, 0x5C39, 0x5C41, 0x5C46, 0x5C4E, 0x5C53, 0x5C50,\n\t0x5C4F, 0x5B71, 0x5C6C, 0x5C6E, 0x4E62, 0x5C76, 0x5C79, 0x5C8C, 0x5C91, 0x5C94, 0x599B, 0x5CAB, 0x5CBB, 0x5CB6, 0x5CBC, 0x5CB7,\n\t0x5CC5, 0x5CBE, 0x5CC7, 0x5CD9, 0x5CE9, 0x5CFD, 0x5CFA, 0x5CED, 0x5D8C, 0x5CEA, 0x5D0B, 0x5D15, 0x5D17, 0x5D5C, 0x5D1F, 0x5D1B,\n\t0x5D11, 0x5D14, 0x5D22, 0x5D1A, 0x5D19, 0x5D18, 0x5D4C, 0x5D52, 0x5D4E, 0x5D4B, 0x5D6C, 0x5D73, 0x5D76, 0x5D87, 0x5D84, 0x5D82,\n\t0x5DA2, 0x5D9D, 0x5DAC, 0x5DAE, 0x5DBD, 0x5D90, 0x5DB7, 0x5DBC, 0x5DC9, 0x5DCD, 0x5DD3, 0x5DD2, 0x5DD6, 0x5DDB, 0x5DEB, 0x5DF2,\n\t0x5DF5, 0x5E0B, 0x5E1A, 0x5E19, 0x5E11, 0x5E1B, 0x5E36, 0x5E37, 0x5E44, 0x5E43, 0x5E40, 0x5E4E, 0x5E57, 0x5E54, 0x5E5F, 0x5E62,\n\t0x5E64, 0x5E47, 0x5E75, 0x5E76, 0x5E7A, 0x9EBC, 0x5E7F, 0x5EA0, 0x5EC1, 0x5EC2, 0x5EC8, 0x5ED0, 0x5ECF, 0xFFFF, 0xFFFF, 0xFFFF,\n\t// 0X9C00 to 0X9CFF\n\t0x5ED6, 0x5EE3, 0x5EDD, 0x5EDA, 0x5EDB, 0x5EE2, 0x5EE1, 0x5EE8, 0x5EE9, 0x5EEC, 0x5EF1, 0x5EF3, 0x5EF0, 0x5EF4, 0x5EF8, 0x5EFE,\n\t0x5F03, 0x5F09, 0x5F5D, 0x5F5C, 0x5F0B, 0x5F11, 0x5F16, 0x5F29, 0x5F2D, 0x5F38, 0x5F41, 0x5F48, 0x5F4C, 0x5F4E, 0x5F2F, 0x5F51,\n\t0x5F56, 0x5F57, 0x5F59, 0x5F61, 0x5F6D, 0x5F73, 0x5F77, 0x5F83, 0x5F82, 0x5F7F, 0x5F8A, 0x5F88, 0x5F91, 0x5F87, 0x5F9E, 0x5F99,\n\t0x5F98, 0x5FA0, 0x5FA8, 0x5FAD, 0x5FBC, 0x5FD6, 0x5FFB, 0x5FE4, 0x5FF8, 0x5FF1, 0x5FDD, 0x60B3, 0x5FFF, 0x6021, 0x6060, 0xFFFF,\n\t0x6019, 0x6010, 0x6029, 0x600E, 0x6031, 0x601B, 0x6015, 0x602B, 0x6026, 0x600F, 0x603A, 0x605A, 0x6041, 0x606A, 0x6077, 0x605F,\n\t0x604A, 0x6046, 0x604D, 0x6063, 0x6043, 0x6064, 0x6042, 0x606C, 0x606B, 0x6059, 0x6081, 0x608D, 0x60E7, 0x6083, 0x609A, 0x6084,\n\t0x609B, 0x6096, 0x6097, 0x6092, 0x60A7, 0x608B, 0x60E1, 0x60B8, 0x60E0, 0x60D3, 0x60B4, 0x5FF0, 0x60BD, 0x60C6, 0x60B5, 0x60D8,\n\t0x614D, 0x6115, 0x6106, 0x60F6, 0x60F7, 0x6100, 0x60F4, 0x60FA, 0x6103, 0x6121, 0x60FB, 0x60F1, 0x610D, 0x610E, 0x6147, 0x613E,\n\t0x6128, 0x6127, 0x614A, 0x613F, 0x613C, 0x612C, 0x6134, 0x613D, 0x6142, 0x6144, 0x6173, 0x6177, 0x6158, 0x6159, 0x615A, 0x616B,\n\t0x6174, 0x616F, 0x6165, 0x6171, 0x615F, 0x615D, 0x6153, 0x6175, 0x6199, 0x6196, 0x6187, 0x61AC, 0x6194, 0x619A, 0x618A, 0x6191,\n\t0x61AB, 0x61AE, 0x61CC, 0x61CA, 0x61C9, 0x61F7, 0x61C8, 0x61C3, 0x61C6, 0x61BA, 0x61CB, 0x7F79, 0x61CD, 0x61E6, 0x61E3, 0x61F6,\n\t0x61FA, 0x61F4, 0x61FF, 0x61FD, 0x61FC, 0x61FE, 0x6200, 0x6208, 0x6209, 0x620D, 0x620C, 0x6214, 0x621B, 0xFFFF, 0xFFFF, 0xFFFF,\n\t// 0X9D00 to 0X9DFF\n\t0x621E, 0x6221, 0x622A, 0x622E, 0x6230, 0x6232, 0x6233, 0x6241, 0x624E, 0x625E, 0x6263, 0x625B, 0x6260, 0x6268, 0x627C, 0x6282,\n\t0x6289, 0x627E, 0x6292, 0x6293, 0x6296, 0x62D4, 0x6283, 0x6294, 0x62D7, 0x62D1, 0x62BB, 0x62CF, 0x62FF, 0x62C6, 0x64D4, 0x62C8,\n\t0x62DC, 0x62CC, 0x62CA, 0x62C2, 0x62C7, 0x629B, 0x62C9, 0x630C, 0x62EE, 0x62F1, 0x6327, 0x6302, 0x6308, 0x62EF, 0x62F5, 0x6350,\n\t0x633E, 0x634D, 0x641C, 0x634F, 0x6396, 0x638E, 0x6380, 0x63AB, 0x6376, 0x63A3, 0x638F, 0x6389, 0x639F, 0x63B5, 0x636B, 0xFFFF,\n\t0x6369, 0x63BE, 0x63E9, 0x63C0, 0x63C6, 0x63E3, 0x63C9, 0x63D2, 0x63F6, 0x63C4, 0x6416, 0x6434, 0x6406, 0x6413, 0x6426, 0x6436,\n\t0x651D, 0x6417, 0x6428, 0x640F, 0x6467, 0x646F, 0x6476, 0x644E, 0x652A, 0x6495, 0x6493, 0x64A5, 0x64A9, 0x6488, 0x64BC, 0x64DA,\n\t0x64D2, 0x64C5, 0x64C7, 0x64BB, 0x64D8, 0x64C2, 0x64F1, 0x64E7, 0x8209, 0x64E0, 0x64E1, 0x62AC, 0x64E3, 0x64EF, 0x652C, 0x64F6,\n\t0x64F4, 0x64F2, 0x64FA, 0x6500, 0x64FD, 0x6518, 0x651C, 0x6505, 0x6524, 0x6523, 0x652B, 0x6534, 0x6535, 0x6537, 0x6536, 0x6538,\n\t0x754B, 0x6548, 0x6556, 0x6555, 0x654D, 0x6558, 0x655E, 0x655D, 0x6572, 0x6578, 0x6582, 0x6583, 0x8B8A, 0x659B, 0x659F, 0x65AB,\n\t0x65B7, 0x65C3, 0x65C6, 0x65C1, 0x65C4, 0x65CC, 0x65D2, 0x65DB, 0x65D9, 0x65E0, 0x65E1, 0x65F1, 0x6772, 0x660A, 0x6603, 0x65FB,\n\t0x6773, 0x6635, 0x6636, 0x6634, 0x661C, 0x664F, 0x6644, 0x6649, 0x6641, 0x665E, 0x665D, 0x6664, 0x6667, 0x6668, 0x665F, 0x6662,\n\t0x6670, 0x6683, 0x6688, 0x668E, 0x6689, 0x6684, 0x6698, 0x669D, 0x66C1, 0x66B9, 0x66C9, 0x66BE, 0x66BC, 0xFFFF, 0xFFFF, 0xFFFF,\n\t// 0X9E00 to 0X9EFF\n\t0x66C4, 0x66B8, 0x66D6, 0x66DA, 0x66E0, 0x663F, 0x66E6, 0x66E9, 0x66F0, 0x66F5, 0x66F7, 0x670F, 0x6716, 0x671E, 0x6726, 0x6727,\n\t0x9738, 0x672E, 0x673F, 0x6736, 0x6741, 0x6738, 0x6737, 0x6746, 0x675E, 0x6760, 0x6759, 0x6763, 0x6764, 0x6789, 0x6770, 0x67A9,\n\t0x677C, 0x676A, 0x678C, 0x678B, 0x67A6, 0x67A1, 0x6785, 0x67B7, 0x67EF, 0x67B4, 0x67EC, 0x67B3, 0x67E9, 0x67B8, 0x67E4, 0x67DE,\n\t0x67DD, 0x67E2, 0x67EE, 0x67B9, 0x67CE, 0x67C6, 0x67E7, 0x6A9C, 0x681E, 0x6846, 0x6829, 0x6840, 0x684D, 0x6832, 0x684E, 0xFFFF,\n\t0x68B3, 0x682B, 0x6859, 0x6863, 0x6877, 0x687F, 0x689F, 0x688F, 0x68AD, 0x6894, 0x689D, 0x689B, 0x6883, 0x6AAE, 0x68B9, 0x6874,\n\t0x68B5, 0x68A0, 0x68BA, 0x690F, 0x688D, 0x687E, 0x6901, 0x68CA, 0x6908, 0x68D8, 0x6922, 0x6926, 0x68E1, 0x690C, 0x68CD, 0x68D4,\n\t0x68E7, 0x68D5, 0x6936, 0x6912, 0x6904, 0x68D7, 0x68E3, 0x6925, 0x68F9, 0x68E0, 0x68EF, 0x6928, 0x692A, 0x691A, 0x6923, 0x6921,\n\t0x68C6, 0x6979, 0x6977, 0x695C, 0x6978, 0x696B, 0x6954, 0x697E, 0x696E, 0x6939, 0x6974, 0x693D, 0x6959, 0x6930, 0x6961, 0x695E,\n\t0x695D, 0x6981, 0x696A, 0x69B2, 0x69AE, 0x69D0, 0x69BF, 0x69C1, 0x69D3, 0x69BE, 0x69CE, 0x5BE8, 0x69CA, 0x69DD, 0x69BB, 0x69C3,\n\t0x69A7, 0x6A2E, 0x6991, 0x69A0, 0x699C, 0x6995, 0x69B4, 0x69DE, 0x69E8, 0x6A02, 0x6A1B, 0x69FF, 0x6B0A, 0x69F9, 0x69F2, 0x69E7,\n\t0x6A05, 0x69B1, 0x6A1E, 0x69ED, 0x6A14, 0x69EB, 0x6A0A, 0x6A12, 0x6AC1, 0x6A23, 0x6A13, 0x6A44, 0x6A0C, 0x6A72, 0x6A36, 0x6A78,\n\t0x6A47, 0x6A62, 0x6A59, 0x6A66, 0x6A48, 0x6A38, 0x6A22, 0x6A90, 0x6A8D, 0x6AA0, 0x6A84, 0x6AA2, 0x6AA3, 0xFFFF, 0xFFFF, 0xFFFF,\n\t// 0X9F00 to 0X9FFF\n\t0x6A97, 0x8617, 0x6ABB, 0x6AC3, 0x6AC2, 0x6AB8, 0x6AB3, 0x6AAC, 0x6ADE, 0x6AD1, 0x6ADF, 0x6AAA, 0x6ADA, 0x6AEA, 0x6AFB, 0x6B05,\n\t0x8616, 0x6AFA, 0x6B12, 0x6B16, 0x9B31, 0x6B1F, 0x6B38, 0x6B37, 0x76DC, 0x6B39, 0x98EE, 0x6B47, 0x6B43, 0x6B49, 0x6B50, 0x6B59,\n\t0x6B54, 0x6B5B, 0x6B5F, 0x6B61, 0x6B78, 0x6B79, 0x6B7F, 0x6B80, 0x6B84, 0x6B83, 0x6B8D, 0x6B98, 0x6B95, 0x6B9E, 0x6BA4, 0x6BAA,\n\t0x6BAB, 0x6BAF, 0x6BB2, 0x6BB1, 0x6BB3, 0x6BB7, 0x6BBC, 0x6BC6, 0x6BCB, 0x6BD3, 0x6BDF, 0x6BEC, 0x6BEB, 0x6BF3, 0x6BEF, 0xFFFF,\n\t0x9EBE, 0x6C08, 0x6C13, 0x6C14, 0x6C1B, 0x6C24, 0x6C23, 0x6C5E, 0x6C55, 0x6C62, 0x6C6A, 0x6C82, 0x6C8D, 0x6C9A, 0x6C81, 0x6C9B,\n\t0x6C7E, 0x6C68, 0x6C73, 0x6C92, 0x6C90, 0x6CC4, 0x6CF1, 0x6CD3, 0x6CBD, 0x6CD7, 0x6CC5, 0x6CDD, 0x6CAE, 0x6CB1, 0x6CBE, 0x6CBA,\n\t0x6CDB, 0x6CEF, 0x6CD9, 0x6CEA, 0x6D1F, 0x884D, 0x6D36, 0x6D2B, 0x6D3D, 0x6D38, 0x6D19, 0x6D35, 0x6D33, 0x6D12, 0x6D0C, 0x6D63,\n\t0x6D93, 0x6D64, 0x6D5A, 0x6D79, 0x6D59, 0x6D8E, 0x6D95, 0x6FE4, 0x6D85, 0x6DF9, 0x6E15, 0x6E0A, 0x6DB5, 0x6DC7, 0x6DE6, 0x6DB8,\n\t0x6DC6, 0x6DEC, 0x6DDE, 0x6DCC, 0x6DE8, 0x6DD2, 0x6DC5, 0x6DFA, 0x6DD9, 0x6DE4, 0x6DD5, 0x6DEA, 0x6DEE, 0x6E2D, 0x6E6E, 0x6E2E,\n\t0x6E19, 0x6E72, 0x6E5F, 0x6E3E, 0x6E23, 0x6E6B, 0x6E2B, 0x6E76, 0x6E4D, 0x6E1F, 0x6E43, 0x6E3A, 0x6E4E, 0x6E24, 0x6EFF, 0x6E1D,\n\t0x6E38, 0x6E82, 0x6EAA, 0x6E98, 0x6EC9, 0x6EB7, 0x6ED3, 0x6EBD, 0x6EAF, 0x6EC4, 0x6EB2, 0x6ED4, 0x6ED5, 0x6E8F, 0x6EA5, 0x6EC2,\n\t0x6E9F, 0x6F41, 0x6F11, 0x704C, 0x6EEC, 0x6EF8, 0x6EFE, 0x6F3F, 0x6EF2, 0x6F31, 0x6EEF, 0x6F32, 0x6ECC, 0xFFFF, 0xFFFF, 0xFFFF,\n};\n\nconst wchar_t SjisToUnicodeTable4[] =\n{\n\t// 0XE000 to 0XE0FF\n\t0x6F3E, 0x6F13, 0x6EF7, 0x6F86, 0x6F7A, 0x6F78, 0x6F81, 0x6F80, 0x6F6F, 0x6F5B, 0x6FF3, 0x6F6D, 0x6F82, 0x6F7C, 0x6F58, 0x6F8E,\n\t0x6F91, 0x6FC2, 0x6F66, 0x6FB3, 0x6FA3, 0x6FA1, 0x6FA4, 0x6FB9, 0x6FC6, 0x6FAA, 0x6FDF, 0x6FD5, 0x6FEC, 0x6FD4, 0x6FD8, 0x6FF1,\n\t0x6FEE, 0x6FDB, 0x7009, 0x700B, 0x6FFA, 0x7011, 0x7001, 0x700F, 0x6FFE, 0x701B, 0x701A, 0x6F74, 0x701D, 0x7018, 0x701F, 0x7030,\n\t0x703E, 0x7032, 0x7051, 0x7063, 0x7099, 0x7092, 0x70AF, 0x70F1, 0x70AC, 0x70B8, 0x70B3, 0x70AE, 0x70DF, 0x70CB, 0x70DD, 0xFFFF,\n\t0x70D9, 0x7109, 0x70FD, 0x711C, 0x7119, 0x7165, 0x7155, 0x7188, 0x7166, 0x7162, 0x714C, 0x7156, 0x716C, 0x718F, 0x71FB, 0x7184,\n\t0x7195, 0x71A8, 0x71AC, 0x71D7, 0x71B9, 0x71BE, 0x71D2, 0x71C9, 0x71D4, 0x71CE, 0x71E0, 0x71EC, 0x71E7, 0x71F5, 0x71FC, 0x71F9,\n\t0x71FF, 0x720D, 0x7210, 0x721B, 0x7228, 0x722D, 0x722C, 0x7230, 0x7232, 0x723B, 0x723C, 0x723F, 0x7240, 0x7246, 0x724B, 0x7258,\n\t0x7274, 0x727E, 0x7282, 0x7281, 0x7287, 0x7292, 0x7296, 0x72A2, 0x72A7, 0x72B9, 0x72B2, 0x72C3, 0x72C6, 0x72C4, 0x72CE, 0x72D2,\n\t0x72E2, 0x72E0, 0x72E1, 0x72F9, 0x72F7, 0x500F, 0x7317, 0x730A, 0x731C, 0x7316, 0x731D, 0x7334, 0x732F, 0x7329, 0x7325, 0x733E,\n\t0x734E, 0x734F, 0x9ED8, 0x7357, 0x736A, 0x7368, 0x7370, 0x7378, 0x7375, 0x737B, 0x737A, 0x73C8, 0x73B3, 0x73CE, 0x73BB, 0x73C0,\n\t0x73E5, 0x73EE, 0x73DE, 0x74A2, 0x7405, 0x746F, 0x7425, 0x73F8, 0x7432, 0x743A, 0x7455, 0x743F, 0x745F, 0x7459, 0x7441, 0x745C,\n\t0x7469, 0x7470, 0x7463, 0x746A, 0x7476, 0x747E, 0x748B, 0x749E, 0x74A7, 0x74CA, 0x74CF, 0x74D4, 0x73F1, 0xFFFF, 0xFFFF, 0xFFFF,\n\t// 0XE100 to 0XE1FF\n\t0x74E0, 0x74E3, 0x74E7, 0x74E9, 0x74EE, 0x74F2, 0x74F0, 0x74F1, 0x74F8, 0x74F7, 0x7504, 0x7503, 0x7505, 0x750C, 0x750E, 0x750D,\n\t0x7515, 0x7513, 0x751E, 0x7526, 0x752C, 0x753C, 0x7544, 0x754D, 0x754A, 0x7549, 0x755B, 0x7546, 0x755A, 0x7569, 0x7564, 0x7567,\n\t0x756B, 0x756D, 0x7578, 0x7576, 0x7586, 0x7587, 0x7574, 0x758A, 0x7589, 0x7582, 0x7594, 0x759A, 0x759D, 0x75A5, 0x75A3, 0x75C2,\n\t0x75B3, 0x75C3, 0x75B5, 0x75BD, 0x75B8, 0x75BC, 0x75B1, 0x75CD, 0x75CA, 0x75D2, 0x75D9, 0x75E3, 0x75DE, 0x75FE, 0x75FF, 0xFFFF,\n\t0x75FC, 0x7601, 0x75F0, 0x75FA, 0x75F2, 0x75F3, 0x760B, 0x760D, 0x7609, 0x761F, 0x7627, 0x7620, 0x7621, 0x7622, 0x7624, 0x7634,\n\t0x7630, 0x763B, 0x7647, 0x7648, 0x7646, 0x765C, 0x7658, 0x7661, 0x7662, 0x7668, 0x7669, 0x766A, 0x7667, 0x766C, 0x7670, 0x7672,\n\t0x7676, 0x7678, 0x767C, 0x7680, 0x7683, 0x7688, 0x768B, 0x768E, 0x7696, 0x7693, 0x7699, 0x769A, 0x76B0, 0x76B4, 0x76B8, 0x76B9,\n\t0x76BA, 0x76C2, 0x76CD, 0x76D6, 0x76D2, 0x76DE, 0x76E1, 0x76E5, 0x76E7, 0x76EA, 0x862F, 0x76FB, 0x7708, 0x7707, 0x7704, 0x7729,\n\t0x7724, 0x771E, 0x7725, 0x7726, 0x771B, 0x7737, 0x7738, 0x7747, 0x775A, 0x7768, 0x776B, 0x775B, 0x7765, 0x777F, 0x777E, 0x7779,\n\t0x778E, 0x778B, 0x7791, 0x77A0, 0x779E, 0x77B0, 0x77B6, 0x77B9, 0x77BF, 0x77BC, 0x77BD, 0x77BB, 0x77C7, 0x77CD, 0x77D7, 0x77DA,\n\t0x77DC, 0x77E3, 0x77EE, 0x77FC, 0x780C, 0x7812, 0x7926, 0x7820, 0x792A, 0x7845, 0x788E, 0x7874, 0x7886, 0x787C, 0x789A, 0x788C,\n\t0x78A3, 0x78B5, 0x78AA, 0x78AF, 0x78D1, 0x78C6, 0x78CB, 0x78D4, 0x78BE, 0x78BC, 0x78C5, 0x78CA, 0x78EC, 0xFFFF, 0xFFFF, 0xFFFF,\n\t// 0XE200 to 0XE2FF\n\t0x78E7, 0x78DA, 0x78FD, 0x78F4, 0x7907, 0x7912, 0x7911, 0x7919, 0x792C, 0x792B, 0x7940, 0x7960, 0x7957, 0x795F, 0x795A, 0x7955,\n\t0x7953, 0x797A, 0x797F, 0x798A, 0x799D, 0x79A7, 0x9F4B, 0x79AA, 0x79AE, 0x79B3, 0x79B9, 0x79BA, 0x79C9, 0x79D5, 0x79E7, 0x79EC,\n\t0x79E1, 0x79E3, 0x7A08, 0x7A0D, 0x7A18, 0x7A19, 0x7A20, 0x7A1F, 0x7980, 0x7A31, 0x7A3B, 0x7A3E, 0x7A37, 0x7A43, 0x7A57, 0x7A49,\n\t0x7A61, 0x7A62, 0x7A69, 0x9F9D, 0x7A70, 0x7A79, 0x7A7D, 0x7A88, 0x7A97, 0x7A95, 0x7A98, 0x7A96, 0x7AA9, 0x7AC8, 0x7AB0, 0xFFFF,\n\t0x7AB6, 0x7AC5, 0x7AC4, 0x7ABF, 0x9083, 0x7AC7, 0x7ACA, 0x7ACD, 0x7ACF, 0x7AD5, 0x7AD3, 0x7AD9, 0x7ADA, 0x7ADD, 0x7AE1, 0x7AE2,\n\t0x7AE6, 0x7AED, 0x7AF0, 0x7B02, 0x7B0F, 0x7B0A, 0x7B06, 0x7B33, 0x7B18, 0x7B19, 0x7B1E, 0x7B35, 0x7B28, 0x7B36, 0x7B50, 0x7B7A,\n\t0x7B04, 0x7B4D, 0x7B0B, 0x7B4C, 0x7B45, 0x7B75, 0x7B65, 0x7B74, 0x7B67, 0x7B70, 0x7B71, 0x7B6C, 0x7B6E, 0x7B9D, 0x7B98, 0x7B9F,\n\t0x7B8D, 0x7B9C, 0x7B9A, 0x7B8B, 0x7B92, 0x7B8F, 0x7B5D, 0x7B99, 0x7BCB, 0x7BC1, 0x7BCC, 0x7BCF, 0x7BB4, 0x7BC6, 0x7BDD, 0x7BE9,\n\t0x7C11, 0x7C14, 0x7BE6, 0x7BE5, 0x7C60, 0x7C00, 0x7C07, 0x7C13, 0x7BF3, 0x7BF7, 0x7C17, 0x7C0D, 0x7BF6, 0x7C23, 0x7C27, 0x7C2A,\n\t0x7C1F, 0x7C37, 0x7C2B, 0x7C3D, 0x7C4C, 0x7C43, 0x7C54, 0x7C4F, 0x7C40, 0x7C50, 0x7C58, 0x7C5F, 0x7C64, 0x7C56, 0x7C65, 0x7C6C,\n\t0x7C75, 0x7C83, 0x7C90, 0x7CA4, 0x7CAD, 0x7CA2, 0x7CAB, 0x7CA1, 0x7CA8, 0x7CB3, 0x7CB2, 0x7CB1, 0x7CAE, 0x7CB9, 0x7CBD, 0x7CC0,\n\t0x7CC5, 0x7CC2, 0x7CD8, 0x7CD2, 0x7CDC, 0x7CE2, 0x9B3B, 0x7CEF, 0x7CF2, 0x7CF4, 0x7CF6, 0x7CFA, 0x7D06, 0xFFFF, 0xFFFF, 0xFFFF,\n\t// 0XE300 to 0XE3FF\n\t0x7D02, 0x7D1C, 0x7D15, 0x7D0A, 0x7D45, 0x7D4B, 0x7D2E, 0x7D32, 0x7D3F, 0x7D35, 0x7D46, 0x7D73, 0x7D56, 0x7D4E, 0x7D72, 0x7D68,\n\t0x7D6E, 0x7D4F, 0x7D63, 0x7D93, 0x7D89, 0x7D5B, 0x7D8F, 0x7D7D, 0x7D9B, 0x7DBA, 0x7DAE, 0x7DA3, 0x7DB5, 0x7DC7, 0x7DBD, 0x7DAB,\n\t0x7E3D, 0x7DA2, 0x7DAF, 0x7DDC, 0x7DB8, 0x7D9F, 0x7DB0, 0x7DD8, 0x7DDD, 0x7DE4, 0x7DDE, 0x7DFB, 0x7DF2, 0x7DE1, 0x7E05, 0x7E0A,\n\t0x7E23, 0x7E21, 0x7E12, 0x7E31, 0x7E1F, 0x7E09, 0x7E0B, 0x7E22, 0x7E46, 0x7E66, 0x7E3B, 0x7E35, 0x7E39, 0x7E43, 0x7E37, 0xFFFF,\n\t0x7E32, 0x7E3A, 0x7E67, 0x7E5D, 0x7E56, 0x7E5E, 0x7E59, 0x7E5A, 0x7E79, 0x7E6A, 0x7E69, 0x7E7C, 0x7E7B, 0x7E83, 0x7DD5, 0x7E7D,\n\t0x8FAE, 0x7E7F, 0x7E88, 0x7E89, 0x7E8C, 0x7E92, 0x7E90, 0x7E93, 0x7E94, 0x7E96, 0x7E8E, 0x7E9B, 0x7E9C, 0x7F38, 0x7F3A, 0x7F45,\n\t0x7F4C, 0x7F4D, 0x7F4E, 0x7F50, 0x7F51, 0x7F55, 0x7F54, 0x7F58, 0x7F5F, 0x7F60, 0x7F68, 0x7F69, 0x7F67, 0x7F78, 0x7F82, 0x7F86,\n\t0x7F83, 0x7F88, 0x7F87, 0x7F8C, 0x7F94, 0x7F9E, 0x7F9D, 0x7F9A, 0x7FA3, 0x7FAF, 0x7FB2, 0x7FB9, 0x7FAE, 0x7FB6, 0x7FB8, 0x8B71,\n\t0x7FC5, 0x7FC6, 0x7FCA, 0x7FD5, 0x7FD4, 0x7FE1, 0x7FE6, 0x7FE9, 0x7FF3, 0x7FF9, 0x98DC, 0x8006, 0x8004, 0x800B, 0x8012, 0x8018,\n\t0x8019, 0x801C, 0x8021, 0x8028, 0x803F, 0x803B, 0x804A, 0x8046, 0x8052, 0x8058, 0x805A, 0x805F, 0x8062, 0x8068, 0x8073, 0x8072,\n\t0x8070, 0x8076, 0x8079, 0x807D, 0x807F, 0x8084, 0x8086, 0x8085, 0x809B, 0x8093, 0x809A, 0x80AD, 0x5190, 0x80AC, 0x80DB, 0x80E5,\n\t0x80D9, 0x80DD, 0x80C4, 0x80DA, 0x80D6, 0x8109, 0x80EF, 0x80F1, 0x811B, 0x8129, 0x8123, 0x812F, 0x814B, 0xFFFF, 0xFFFF, 0xFFFF,\n\t// 0XE400 to 0XE4FF\n\t0x968B, 0x8146, 0x813E, 0x8153, 0x8151, 0x80FC, 0x8171, 0x816E, 0x8165, 0x8166, 0x8174, 0x8183, 0x8188, 0x818A, 0x8180, 0x8182,\n\t0x81A0, 0x8195, 0x81A4, 0x81A3, 0x815F, 0x8193, 0x81A9, 0x81B0, 0x81B5, 0x81BE, 0x81B8, 0x81BD, 0x81C0, 0x81C2, 0x81BA, 0x81C9,\n\t0x81CD, 0x81D1, 0x81D9, 0x81D8, 0x81C8, 0x81DA, 0x81DF, 0x81E0, 0x81E7, 0x81FA, 0x81FB, 0x81FE, 0x8201, 0x8202, 0x8205, 0x8207,\n\t0x820A, 0x820D, 0x8210, 0x8216, 0x8229, 0x822B, 0x8238, 0x8233, 0x8240, 0x8259, 0x8258, 0x825D, 0x825A, 0x825F, 0x8264, 0xFFFF,\n\t0x8262, 0x8268, 0x826A, 0x826B, 0x822E, 0x8271, 0x8277, 0x8278, 0x827E, 0x828D, 0x8292, 0x82AB, 0x829F, 0x82BB, 0x82AC, 0x82E1,\n\t0x82E3, 0x82DF, 0x82D2, 0x82F4, 0x82F3, 0x82FA, 0x8393, 0x8303, 0x82FB, 0x82F9, 0x82DE, 0x8306, 0x82DC, 0x8309, 0x82D9, 0x8335,\n\t0x8334, 0x8316, 0x8332, 0x8331, 0x8340, 0x8339, 0x8350, 0x8345, 0x832F, 0x832B, 0x8317, 0x8318, 0x8385, 0x839A, 0x83AA, 0x839F,\n\t0x83A2, 0x8396, 0x8323, 0x838E, 0x8387, 0x838A, 0x837C, 0x83B5, 0x8373, 0x8375, 0x83A0, 0x8389, 0x83A8, 0x83F4, 0x8413, 0x83EB,\n\t0x83CE, 0x83FD, 0x8403, 0x83D8, 0x840B, 0x83C1, 0x83F7, 0x8407, 0x83E0, 0x83F2, 0x840D, 0x8422, 0x8420, 0x83BD, 0x8438, 0x8506,\n\t0x83FB, 0x846D, 0x842A, 0x843C, 0x855A, 0x8484, 0x8477, 0x846B, 0x84AD, 0x846E, 0x8482, 0x8469, 0x8446, 0x842C, 0x846F, 0x8479,\n\t0x8435, 0x84CA, 0x8462, 0x84B9, 0x84BF, 0x849F, 0x84D9, 0x84CD, 0x84BB, 0x84DA, 0x84D0, 0x84C1, 0x84C6, 0x84D6, 0x84A1, 0x8521,\n\t0x84FF, 0x84F4, 0x8517, 0x8518, 0x852C, 0x851F, 0x8515, 0x8514, 0x84FC, 0x8540, 0x8563, 0x8558, 0x8548, 0xFFFF, 0xFFFF, 0xFFFF,\n\t// 0XE500 to 0XE5FF\n\t0x8541, 0x8602, 0x854B, 0x8555, 0x8580, 0x85A4, 0x8588, 0x8591, 0x858A, 0x85A8, 0x856D, 0x8594, 0x859B, 0x85EA, 0x8587, 0x859C,\n\t0x8577, 0x857E, 0x8590, 0x85C9, 0x85BA, 0x85CF, 0x85B9, 0x85D0, 0x85D5, 0x85DD, 0x85E5, 0x85DC, 0x85F9, 0x860A, 0x8613, 0x860B,\n\t0x85FE, 0x85FA, 0x8606, 0x8622, 0x861A, 0x8630, 0x863F, 0x864D, 0x4E55, 0x8654, 0x865F, 0x8667, 0x8671, 0x8693, 0x86A3, 0x86A9,\n\t0x86AA, 0x868B, 0x868C, 0x86B6, 0x86AF, 0x86C4, 0x86C6, 0x86B0, 0x86C9, 0x8823, 0x86AB, 0x86D4, 0x86DE, 0x86E9, 0x86EC, 0xFFFF,\n\t0x86DF, 0x86DB, 0x86EF, 0x8712, 0x8706, 0x8708, 0x8700, 0x8703, 0x86FB, 0x8711, 0x8709, 0x870D, 0x86F9, 0x870A, 0x8734, 0x873F,\n\t0x8737, 0x873B, 0x8725, 0x8729, 0x871A, 0x8760, 0x875F, 0x8778, 0x874C, 0x874E, 0x8774, 0x8757, 0x8768, 0x876E, 0x8759, 0x8753,\n\t0x8763, 0x876A, 0x8805, 0x87A2, 0x879F, 0x8782, 0x87AF, 0x87CB, 0x87BD, 0x87C0, 0x87D0, 0x96D6, 0x87AB, 0x87C4, 0x87B3, 0x87C7,\n\t0x87C6, 0x87BB, 0x87EF, 0x87F2, 0x87E0, 0x880F, 0x880D, 0x87FE, 0x87F6, 0x87F7, 0x880E, 0x87D2, 0x8811, 0x8816, 0x8815, 0x8822,\n\t0x8821, 0x8831, 0x8836, 0x8839, 0x8827, 0x883B, 0x8844, 0x8842, 0x8852, 0x8859, 0x885E, 0x8862, 0x886B, 0x8881, 0x887E, 0x889E,\n\t0x8875, 0x887D, 0x88B5, 0x8872, 0x8882, 0x8897, 0x8892, 0x88AE, 0x8899, 0x88A2, 0x888D, 0x88A4, 0x88B0, 0x88BF, 0x88B1, 0x88C3,\n\t0x88C4, 0x88D4, 0x88D8, 0x88D9, 0x88DD, 0x88F9, 0x8902, 0x88FC, 0x88F4, 0x88E8, 0x88F2, 0x8904, 0x890C, 0x890A, 0x8913, 0x8943,\n\t0x891E, 0x8925, 0x892A, 0x892B, 0x8941, 0x8944, 0x893B, 0x8936, 0x8938, 0x894C, 0x891D, 0x8960, 0x895E, 0xFFFF, 0xFFFF, 0xFFFF,\n\t// 0XE600 to 0XE6FF\n\t0x8966, 0x8964, 0x896D, 0x896A, 0x896F, 0x8974, 0x8977, 0x897E, 0x8983, 0x8988, 0x898A, 0x8993, 0x8998, 0x89A1, 0x89A9, 0x89A6,\n\t0x89AC, 0x89AF, 0x89B2, 0x89BA, 0x89BD, 0x89BF, 0x89C0, 0x89DA, 0x89DC, 0x89DD, 0x89E7, 0x89F4, 0x89F8, 0x8A03, 0x8A16, 0x8A10,\n\t0x8A0C, 0x8A1B, 0x8A1D, 0x8A25, 0x8A36, 0x8A41, 0x8A5B, 0x8A52, 0x8A46, 0x8A48, 0x8A7C, 0x8A6D, 0x8A6C, 0x8A62, 0x8A85, 0x8A82,\n\t0x8A84, 0x8AA8, 0x8AA1, 0x8A91, 0x8AA5, 0x8AA6, 0x8A9A, 0x8AA3, 0x8AC4, 0x8ACD, 0x8AC2, 0x8ADA, 0x8AEB, 0x8AF3, 0x8AE7, 0xFFFF,\n\t0x8AE4, 0x8AF1, 0x8B14, 0x8AE0, 0x8AE2, 0x8AF7, 0x8ADE, 0x8ADB, 0x8B0C, 0x8B07, 0x8B1A, 0x8AE1, 0x8B16, 0x8B10, 0x8B17, 0x8B20,\n\t0x8B33, 0x97AB, 0x8B26, 0x8B2B, 0x8B3E, 0x8B28, 0x8B41, 0x8B4C, 0x8B4F, 0x8B4E, 0x8B49, 0x8B56, 0x8B5B, 0x8B5A, 0x8B6B, 0x8B5F,\n\t0x8B6C, 0x8B6F, 0x8B74, 0x8B7D, 0x8B80, 0x8B8C, 0x8B8E, 0x8B92, 0x8B93, 0x8B96, 0x8B99, 0x8B9A, 0x8C3A, 0x8C41, 0x8C3F, 0x8C48,\n\t0x8C4C, 0x8C4E, 0x8C50, 0x8C55, 0x8C62, 0x8C6C, 0x8C78, 0x8C7A, 0x8C82, 0x8C89, 0x8C85, 0x8C8A, 0x8C8D, 0x8C8E, 0x8C94, 0x8C7C,\n\t0x8C98, 0x621D, 0x8CAD, 0x8CAA, 0x8CBD, 0x8CB2, 0x8CB3, 0x8CAE, 0x8CB6, 0x8CC8, 0x8CC1, 0x8CE4, 0x8CE3, 0x8CDA, 0x8CFD, 0x8CFA,\n\t0x8CFB, 0x8D04, 0x8D05, 0x8D0A, 0x8D07, 0x8D0F, 0x8D0D, 0x8D10, 0x9F4E, 0x8D13, 0x8CCD, 0x8D14, 0x8D16, 0x8D67, 0x8D6D, 0x8D71,\n\t0x8D73, 0x8D81, 0x8D99, 0x8DC2, 0x8DBE, 0x8DBA, 0x8DCF, 0x8DDA, 0x8DD6, 0x8DCC, 0x8DDB, 0x8DCB, 0x8DEA, 0x8DEB, 0x8DDF, 0x8DE3,\n\t0x8DFC, 0x8E08, 0x8E09, 0x8DFF, 0x8E1D, 0x8E1E, 0x8E10, 0x8E1F, 0x8E42, 0x8E35, 0x8E30, 0x8E34, 0x8E4A, 0xFFFF, 0xFFFF, 0xFFFF,\n\t// 0XE700 to 0XE7FF\n\t0x8E47, 0x8E49, 0x8E4C, 0x8E50, 0x8E48, 0x8E59, 0x8E64, 0x8E60, 0x8E2A, 0x8E63, 0x8E55, 0x8E76, 0x8E72, 0x8E7C, 0x8E81, 0x8E87,\n\t0x8E85, 0x8E84, 0x8E8B, 0x8E8A, 0x8E93, 0x8E91, 0x8E94, 0x8E99, 0x8EAA, 0x8EA1, 0x8EAC, 0x8EB0, 0x8EC6, 0x8EB1, 0x8EBE, 0x8EC5,\n\t0x8EC8, 0x8ECB, 0x8EDB, 0x8EE3, 0x8EFC, 0x8EFB, 0x8EEB, 0x8EFE, 0x8F0A, 0x8F05, 0x8F15, 0x8F12, 0x8F19, 0x8F13, 0x8F1C, 0x8F1F,\n\t0x8F1B, 0x8F0C, 0x8F26, 0x8F33, 0x8F3B, 0x8F39, 0x8F45, 0x8F42, 0x8F3E, 0x8F4C, 0x8F49, 0x8F46, 0x8F4E, 0x8F57, 0x8F5C, 0xFFFF,\n\t0x8F62, 0x8F63, 0x8F64, 0x8F9C, 0x8F9F, 0x8FA3, 0x8FAD, 0x8FAF, 0x8FB7, 0x8FDA, 0x8FE5, 0x8FE2, 0x8FEA, 0x8FEF, 0x9087, 0x8FF4,\n\t0x9005, 0x8FF9, 0x8FFA, 0x9011, 0x9015, 0x9021, 0x900D, 0x901E, 0x9016, 0x900B, 0x9027, 0x9036, 0x9035, 0x9039, 0x8FF8, 0x904F,\n\t0x9050, 0x9051, 0x9052, 0x900E, 0x9049, 0x903E, 0x9056, 0x9058, 0x905E, 0x9068, 0x906F, 0x9076, 0x96A8, 0x9072, 0x9082, 0x907D,\n\t0x9081, 0x9080, 0x908A, 0x9089, 0x908F, 0x90A8, 0x90AF, 0x90B1, 0x90B5, 0x90E2, 0x90E4, 0x6248, 0x90DB, 0x9102, 0x9112, 0x9119,\n\t0x9132, 0x9130, 0x914A, 0x9156, 0x9158, 0x9163, 0x9165, 0x9169, 0x9173, 0x9172, 0x918B, 0x9189, 0x9182, 0x91A2, 0x91AB, 0x91AF,\n\t0x91AA, 0x91B5, 0x91B4, 0x91BA, 0x91C0, 0x91C1, 0x91C9, 0x91CB, 0x91D0, 0x91D6, 0x91DF, 0x91E1, 0x91DB, 0x91FC, 0x91F5, 0x91F6,\n\t0x921E, 0x91FF, 0x9214, 0x922C, 0x9215, 0x9211, 0x925E, 0x9257, 0x9245, 0x9249, 0x9264, 0x9248, 0x9295, 0x923F, 0x924B, 0x9250,\n\t0x929C, 0x9296, 0x9293, 0x929B, 0x925A, 0x92CF, 0x92B9, 0x92B7, 0x92E9, 0x930F, 0x92FA, 0x9344, 0x932E, 0xFFFF, 0xFFFF, 0xFFFF,\n\t// 0XE800 to 0XE8FF\n\t0x9319, 0x9322, 0x931A, 0x9323, 0x933A, 0x9335, 0x933B, 0x935C, 0x9360, 0x937C, 0x936E, 0x9356, 0x93B0, 0x93AC, 0x93AD, 0x9394,\n\t0x93B9, 0x93D6, 0x93D7, 0x93E8, 0x93E5, 0x93D8, 0x93C3, 0x93DD, 0x93D0, 0x93C8, 0x93E4, 0x941A, 0x9414, 0x9413, 0x9403, 0x9407,\n\t0x9410, 0x9436, 0x942B, 0x9435, 0x9421, 0x943A, 0x9441, 0x9452, 0x9444, 0x945B, 0x9460, 0x9462, 0x945E, 0x946A, 0x9229, 0x9470,\n\t0x9475, 0x9477, 0x947D, 0x945A, 0x947C, 0x947E, 0x9481, 0x947F, 0x9582, 0x9587, 0x958A, 0x9594, 0x9596, 0x9598, 0x9599, 0xFFFF,\n\t0x95A0, 0x95A8, 0x95A7, 0x95AD, 0x95BC, 0x95BB, 0x95B9, 0x95BE, 0x95CA, 0x6FF6, 0x95C3, 0x95CD, 0x95CC, 0x95D5, 0x95D4, 0x95D6,\n\t0x95DC, 0x95E1, 0x95E5, 0x95E2, 0x9621, 0x9628, 0x962E, 0x962F, 0x9642, 0x964C, 0x964F, 0x964B, 0x9677, 0x965C, 0x965E, 0x965D,\n\t0x965F, 0x9666, 0x9672, 0x966C, 0x968D, 0x9698, 0x9695, 0x9697, 0x96AA, 0x96A7, 0x96B1, 0x96B2, 0x96B0, 0x96B4, 0x96B6, 0x96B8,\n\t0x96B9, 0x96CE, 0x96CB, 0x96C9, 0x96CD, 0x894D, 0x96DC, 0x970D, 0x96D5, 0x96F9, 0x9704, 0x9706, 0x9708, 0x9713, 0x970E, 0x9711,\n\t0x970F, 0x9716, 0x9719, 0x9724, 0x972A, 0x9730, 0x9739, 0x973D, 0x973E, 0x9744, 0x9746, 0x9748, 0x9742, 0x9749, 0x975C, 0x9760,\n\t0x9764, 0x9766, 0x9768, 0x52D2, 0x976B, 0x9771, 0x9779, 0x9785, 0x977C, 0x9781, 0x977A, 0x9786, 0x978B, 0x978F, 0x9790, 0x979C,\n\t0x97A8, 0x97A6, 0x97A3, 0x97B3, 0x97B4, 0x97C3, 0x97C6, 0x97C8, 0x97CB, 0x97DC, 0x97ED, 0x9F4F, 0x97F2, 0x7ADF, 0x97F6, 0x97F5,\n\t0x980F, 0x980C, 0x9838, 0x9824, 0x9821, 0x9837, 0x983D, 0x9846, 0x984F, 0x984B, 0x986B, 0x986F, 0x9870, 0xFFFF, 0xFFFF, 0xFFFF,\n\t// 0XE900 to 0XE9FF\n\t0x9871, 0x9874, 0x9873, 0x98AA, 0x98AF, 0x98B1, 0x98B6, 0x98C4, 0x98C3, 0x98C6, 0x98E9, 0x98EB, 0x9903, 0x9909, 0x9912, 0x9914,\n\t0x9918, 0x9921, 0x991D, 0x991E, 0x9924, 0x9920, 0x992C, 0x992E, 0x993D, 0x993E, 0x9942, 0x9949, 0x9945, 0x9950, 0x994B, 0x9951,\n\t0x9952, 0x994C, 0x9955, 0x9997, 0x9998, 0x99A5, 0x99AD, 0x99AE, 0x99BC, 0x99DF, 0x99DB, 0x99DD, 0x99D8, 0x99D1, 0x99ED, 0x99EE,\n\t0x99F1, 0x99F2, 0x99FB, 0x99F8, 0x9A01, 0x9A0F, 0x9A05, 0x99E2, 0x9A19, 0x9A2B, 0x9A37, 0x9A45, 0x9A42, 0x9A40, 0x9A43, 0xFFFF,\n\t0x9A3E, 0x9A55, 0x9A4D, 0x9A5B, 0x9A57, 0x9A5F, 0x9A62, 0x9A65, 0x9A64, 0x9A69, 0x9A6B, 0x9A6A, 0x9AAD, 0x9AB0, 0x9ABC, 0x9AC0,\n\t0x9ACF, 0x9AD1, 0x9AD3, 0x9AD4, 0x9ADE, 0x9ADF, 0x9AE2, 0x9AE3, 0x9AE6, 0x9AEF, 0x9AEB, 0x9AEE, 0x9AF4, 0x9AF1, 0x9AF7, 0x9AFB,\n\t0x9B06, 0x9B18, 0x9B1A, 0x9B1F, 0x9B22, 0x9B23, 0x9B25, 0x9B27, 0x9B28, 0x9B29, 0x9B2A, 0x9B2E, 0x9B2F, 0x9B32, 0x9B44, 0x9B43,\n\t0x9B4F, 0x9B4D, 0x9B4E, 0x9B51, 0x9B58, 0x9B74, 0x9B93, 0x9B83, 0x9B91, 0x9B96, 0x9B97, 0x9B9F, 0x9BA0, 0x9BA8, 0x9BB4, 0x9BC0,\n\t0x9BCA, 0x9BB9, 0x9BC6, 0x9BCF, 0x9BD1, 0x9BD2, 0x9BE3, 0x9BE2, 0x9BE4, 0x9BD4, 0x9BE1, 0x9C3A, 0x9BF2, 0x9BF1, 0x9BF0, 0x9C15,\n\t0x9C14, 0x9C09, 0x9C13, 0x9C0C, 0x9C06, 0x9C08, 0x9C12, 0x9C0A, 0x9C04, 0x9C2E, 0x9C1B, 0x9C25, 0x9C24, 0x9C21, 0x9C30, 0x9C47,\n\t0x9C32, 0x9C46, 0x9C3E, 0x9C5A, 0x9C60, 0x9C67, 0x9C76, 0x9C78, 0x9CE7, 0x9CEC, 0x9CF0, 0x9D09, 0x9D08, 0x9CEB, 0x9D03, 0x9D06,\n\t0x9D2A, 0x9D26, 0x9DAF, 0x9D23, 0x9D1F, 0x9D44, 0x9D15, 0x9D12, 0x9D41, 0x9D3F, 0x9D3E, 0x9D46, 0x9D48, 0xFFFF, 0xFFFF, 0xFFFF,\n\t// 0XEA00 to 0XEAFF\n\t0x9D5D, 0x9D5E, 0x9D64, 0x9D51, 0x9D50, 0x9D59, 0x9D72, 0x9D89, 0x9D87, 0x9DAB, 0x9D6F, 0x9D7A, 0x9D9A, 0x9DA4, 0x9DA9, 0x9DB2,\n\t0x9DC4, 0x9DC1, 0x9DBB, 0x9DB8, 0x9DBA, 0x9DC6, 0x9DCF, 0x9DC2, 0x9DD9, 0x9DD3, 0x9DF8, 0x9DE6, 0x9DED, 0x9DEF, 0x9DFD, 0x9E1A,\n\t0x9E1B, 0x9E1E, 0x9E75, 0x9E79, 0x9E7D, 0x9E81, 0x9E88, 0x9E8B, 0x9E8C, 0x9E92, 0x9E95, 0x9E91, 0x9E9D, 0x9EA5, 0x9EA9, 0x9EB8,\n\t0x9EAA, 0x9EAD, 0x9761, 0x9ECC, 0x9ECE, 0x9ECF, 0x9ED0, 0x9ED4, 0x9EDC, 0x9EDE, 0x9EDD, 0x9EE0, 0x9EE5, 0x9EE8, 0x9EEF, 0xFFFF,\n\t0x9EF4, 0x9EF6, 0x9EF7, 0x9EF9, 0x9EFB, 0x9EFC, 0x9EFD, 0x9F07, 0x9F08, 0x76B7, 0x9F15, 0x9F21, 0x9F2C, 0x9F3E, 0x9F4A, 0x9F52,\n\t0x9F54, 0x9F63, 0x9F5F, 0x9F60, 0x9F61, 0x9F66, 0x9F67, 0x9F6C, 0x9F6A, 0x9F77, 0x9F72, 0x9F76, 0x9F95, 0x9F9C, 0x9FA0, 0x582F,\n\t0x69C7, 0x9059, 0x7464, 0x51DC, 0x7199, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n\t0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n\t0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n\t0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n\t0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n\t0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF,\n};\n\nconst wchar_t SjisToUnicodeTable5[] =\n{\n\t// 0XED00 to 0XEDFF\n\t0x7E8A, 0x891C, 0x9348, 0x9288, 0x84DC, 0x4FC9, 0x70BB, 0x6631, 0x68C8, 0x92F9, 0x66FB, 0x5F45, 0x4E28, 0x4EE1, 0x4EFC, 0x4F00,\n\t0x4F03, 0x4F39, 0x4F56, 0x4F92, 0x4F8A, 0x4F9A, 0x4F94, 0x4FCD, 0x5040, 0x5022, 0x4FFF, 0x501E, 0x5046, 0x5070, 0x5042, 0x5094,\n\t0x50F4, 0x50D8, 0x514A, 0x5164, 0x519D, 0x51BE, 0x51EC, 0x5215, 0x529C, 0x52A6, 0x52C0, 0x52DB, 0x5300, 0x5307, 0x5324, 0x5372,\n\t0x5393, 0x53B2, 0x53DD, 0xFA0E, 0x549C, 0x548A, 0x54A9, 0x54FF, 0x5586, 0x5759, 0x5765, 0x57AC, 0x57C8, 0x57C7, 0xFA0F, 0xFFFF,\n\t0xFA10, 0x589E, 0x58B2, 0x590B, 0x5953, 0x595B, 0x595D, 0x5963, 0x59A4, 0x59BA, 0x5B56, 0x5BC0, 0x752F, 0x5BD8, 0x5BEC, 0x5C1E,\n\t0x5CA6, 0x5CBA, 0x5CF5, 0x5D27, 0x5D53, 0xFA11, 0x5D42, 0x5D6D, 0x5DB8, 0x5DB9, 0x5DD0, 0x5F21, 0x5F34, 0x5F67, 0x5FB7, 0x5FDE,\n\t0x605D, 0x6085, 0x608A, 0x60DE, 0x60D5, 0x6120, 0x60F2, 0x6111, 0x6137, 0x6130, 0x6198, 0x6213, 0x62A6, 0x63F5, 0x6460, 0x649D,\n\t0x64CE, 0x654E, 0x6600, 0x6615, 0x663B, 0x6609, 0x662E, 0x661E, 0x6624, 0x6665, 0x6657, 0x6659, 0xFA12, 0x6673, 0x6699, 0x66A0,\n\t0x66B2, 0x66BF, 0x66FA, 0x670E, 0xF929, 0x6766, 0x67BB, 0x6852, 0x67C0, 0x6801, 0x6844, 0x68CF, 0xFA13, 0x6968, 0xFA14, 0x6998,\n\t0x69E2, 0x6A30, 0x6A6B, 0x6A46, 0x6A73, 0x6A7E, 0x6AE2, 0x6AE4, 0x6BD6, 0x6C3F, 0x6C5C, 0x6C86, 0x6C6F, 0x6CDA, 0x6D04, 0x6D87,\n\t0x6D6F, 0x6D96, 0x6DAC, 0x6DCF, 0x6DF8, 0x6DF2, 0x6DFC, 0x6E39, 0x6E5C, 0x6E27, 0x6E3C, 0x6EBF, 0x6F88, 0x6FB5, 0x6FF5, 0x7005,\n\t0x7007, 0x7028, 0x7085, 0x70AB, 0x710F, 0x7104, 0x715C, 0x7146, 0x7147, 0xFA15, 0x71C1, 0x71FE, 0x72B1, 0xFFFF, 0xFFFF, 0xFFFF,\n\t// 0XEE00 to 0XEEFF\n\t0x72BE, 0x7324, 0xFA16, 0x7377, 0x73BD, 0x73C9, 0x73D6, 0x73E3, 0x73D2, 0x7407, 0x73F5, 0x7426, 0x742A, 0x7429, 0x742E, 0x7462,\n\t0x7489, 0x749F, 0x7501, 0x756F, 0x7682, 0x769C, 0x769E, 0x769B, 0x76A6, 0xFA17, 0x7746, 0x52AF, 0x7821, 0x784E, 0x7864, 0x787A,\n\t0x7930, 0xFA18, 0xFA19, 0xFA1A, 0x7994, 0xFA1B, 0x799B, 0x7AD1, 0x7AE7, 0xFA1C, 0x7AEB, 0x7B9E, 0xFA1D, 0x7D48, 0x7D5C, 0x7DB7,\n\t0x7DA0, 0x7DD6, 0x7E52, 0x7F47, 0x7FA1, 0xFA1E, 0x8301, 0x8362, 0x837F, 0x83C7, 0x83F6, 0x8448, 0x84B4, 0x8553, 0x8559, 0xFFFF,\n\t0x856B, 0xFA1F, 0x85B0, 0xFA20, 0xFA21, 0x8807, 0x88F5, 0x8A12, 0x8A37, 0x8A79, 0x8AA7, 0x8ABE, 0x8ADF, 0xFA22, 0x8AF6, 0x8B53,\n\t0x8B7F, 0x8CF0, 0x8CF4, 0x8D12, 0x8D76, 0xFA23, 0x8ECF, 0xFA24, 0xFA25, 0x9067, 0x90DE, 0xFA26, 0x9115, 0x9127, 0x91DA, 0x91D7,\n\t0x91DE, 0x91ED, 0x91EE, 0x91E4, 0x91E5, 0x9206, 0x9210, 0x920A, 0x923A, 0x9240, 0x923C, 0x924E, 0x9259, 0x9251, 0x9239, 0x9267,\n\t0x92A7, 0x9277, 0x9278, 0x92E7, 0x92D7, 0x92D9, 0x92D0, 0xFA27, 0x92D5, 0x92E0, 0x92D3, 0x9325, 0x9321, 0x92FB, 0xFA28, 0x931E,\n\t0x92FF, 0x931D, 0x9302, 0x9370, 0x9357, 0x93A4, 0x93C6, 0x93DE, 0x93F8, 0x9431, 0x9445, 0x9448, 0x9592, 0xF9DC, 0xFA29, 0x969D,\n\t0x96AF, 0x9733, 0x973B, 0x9743, 0x974D, 0x974F, 0x9751, 0x9755, 0x9857, 0x9865, 0xFA2A, 0xFA2B, 0x9927, 0xFA2C, 0x999E, 0x9A4E,\n\t0x9AD9, 0x9ADC, 0x9B75, 0x9B72, 0x9B8F, 0x9BB1, 0x9BBB, 0x9C00, 0x9D70, 0x9D6B, 0xFA2D, 0x9E19, 0x9ED1, 0xFFFF, 0xFFFF, 0x2170,\n\t0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0xFFE2, 0xFFE4, 0xFF07, 0xFF02, 0xFFFF, 0xFFFF, 0xFFFF,\n};\n\nwchar_t sjisToUnicode(unsigned short SjisCharacter)\n{\n\tif (SjisCharacter < 0x80)\n\t{\n\t\treturn SjisCharacter;\n\t} else if (SjisCharacter < 0x100)\n\t{\n\t\treturn SjisToUnicodeTable1[SjisCharacter-0x80];\n\t}\n\n\tif ((SjisCharacter & 0xFF) < 0x40) return 0xFFFF;\n\n\tif (SjisCharacter >= 0x8100 && SjisCharacter < 0x8500)\n\t{\n\t\tSjisCharacter -= 0x8140;\n\t\tSjisCharacter -= (SjisCharacter >> 8) * 0x40;\n\t\treturn SjisToUnicodeTable2[SjisCharacter];\n\t} else if (SjisCharacter >= 0x8700 && SjisCharacter < 0xA000)\n\t{\n\t\tSjisCharacter -= 0x8740;\n\t\tSjisCharacter -= (SjisCharacter >> 8) * 0x40;\n\t\treturn SjisToUnicodeTable3[SjisCharacter];\n\t} else if (SjisCharacter >= 0xE000 && SjisCharacter < 0xEB00)\n\t{\n\t\tSjisCharacter -= 0xE040;\n\t\tSjisCharacter -= (SjisCharacter >> 8) * 0x40;\n\t\treturn SjisToUnicodeTable4[SjisCharacter];\n\t} else if (SjisCharacter >= 0xED00 && SjisCharacter < 0xEF00)\n\t{\n\t\tSjisCharacter -= 0xED40;\n\t\tSjisCharacter -= (SjisCharacter >> 8) * 0x40;\n\t\treturn SjisToUnicodeTable5[SjisCharacter];\n\t} else {\n\t\treturn 0xFFFF;\n\t}\n}\n\nBinaryFile::BinaryFile()\n{\n\thandle = nullptr;\n}\n\nBinaryFile::~BinaryFile()\n{\n\tclose();\n}\n\nbool BinaryFile::open(const std::wstring& fileName, Mode mode)\n{\n\tsetFileName(fileName);\n\treturn open(mode);\n}\n\nbool BinaryFile::open(Mode mode)\n{\n\tif (isOpen())\n\t\tclose();\n\n\tthis->mode = mode;\n\n\t// open all files as binary due to unicode\n\tswitch (mode)\n\t{\n\tcase Read:\n\t\thandle = openFile(fileName,OpenFileMode::ReadBinary);\n\t\tbreak;\n\tcase Write:\n\t\thandle = openFile(fileName,OpenFileMode::WriteBinary);\n\t\tbreak;\n\tcase ReadWrite:\n\t\thandle = openFile(fileName,OpenFileMode::ReadWriteBinary);\n\t\tbreak;\n\tdefault:\n\t\treturn false;\n\t}\n\n\tif (handle == nullptr)\n\t\treturn false;\n\n\tif (mode != Write)\n\t{\n\t\tfseek(handle,0,SEEK_END);\n\t\tsize_ = ftell(handle);\n\t\tfseek(handle,0,SEEK_SET);\n\t}\n\n\treturn true;\n}\n\nvoid BinaryFile::close()\n{\n\tif (isOpen())\n\t{\n\t\tfclose(handle);\n\t\thandle = nullptr;\n\t}\n}\n\nsize_t BinaryFile::read(void* dest, size_t length)\n{\n\tif (isOpen() == false || mode == Write)\n\t\treturn 0;\n\n\treturn fread(dest,1,length,handle);\n}\n\nsize_t BinaryFile::write(void* source, size_t length)\n{\n\tif (isOpen() == false || mode == Read)\n\t\treturn 0;\n\n\treturn fwrite(source,1,length,handle);\n}\n\nconst size_t TEXTFILE_BUF_MAX_SIZE = 4096;\n\nTextFile::TextFile()\n{\n\thandle = nullptr;\n\trecursion = false;\n\terrorRetrieved = false;\n\tfromMemory = false;\n\tbufPos = 0;\n\tlineCount = 0;\n}\n\nTextFile::~TextFile()\n{\n\tclose();\n}\n\nvoid TextFile::openMemory(const std::wstring& content)\n{\n\tfromMemory = true;\n\tthis->content = content;\n\tcontentPos = 0;\n\tsize_ = (long) content.size();\n\tencoding = UTF16LE;\n\tmode = Read;\n\tlineCount = 0;\n}\n\nbool TextFile::open(const std::wstring& fileName, Mode mode, Encoding defaultEncoding)\n{\n\tsetFileName(fileName);\n\treturn open(mode,defaultEncoding);\n}\n\nbool TextFile::open(Mode mode, Encoding defaultEncoding)\n{\n\tif (fileName.empty())\n\t\treturn false;\n\n\tif (isOpen())\n\t\tclose();\n\n\tfromMemory = false;\n\tguessedEncoding = false;\n\tencoding = defaultEncoding;\n\tthis->mode = mode;\n\n\t// open all files as binary due to unicode\n\tswitch (mode)\n\t{\n\tcase Read:\n\t\thandle = openFile(fileName,OpenFileMode::ReadBinary);\n\t\tbreak;\n\tcase Write:\n\t\thandle = openFile(fileName,OpenFileMode::WriteBinary);\n\t\tif (handle == nullptr)\n\t\t\treturn false;\n\n\t\tbuf.resize(TEXTFILE_BUF_MAX_SIZE);\n\t\tif (encoding != ASCII)\n\t\t{\n\t\t\tencoding = UTF8;\n\t\t\twriteCharacter(0xFEFF);\n\t\t}\n\t\tbreak;\n\tdefault:\n\t\treturn false;\n\t}\n\n\tif (handle == nullptr)\n\t\treturn false;\n\n\t// detect encoding\n\tunsigned short num;\n\tcontentPos = 0;\n\n\tif (mode == Read)\n\t{\n\t\tfseek(handle,0,SEEK_END);\n\t\tsize_ = ftell(handle);\n\t\tfseek(handle,0,SEEK_SET);\n\n\t\tif (fread(&num,2,1,handle) == 1)\n\t\t{\n\t\t\tswitch (num)\n\t\t\t{\n\t\t\tcase 0xFFFE:\n\t\t\t\tencoding = UTF16BE;\n\t\t\t\tcontentPos += 2;\n\t\t\t\tbreak;\n\t\t\tcase 0xFEFF:\n\t\t\t\tencoding = UTF16LE;\n\t\t\t\tcontentPos += 2;\n\t\t\t\tbreak;\n\t\t\tcase 0xBBEF:\n\t\t\t\tif (fgetc(handle) == 0xBF)\n\t\t\t\t{\n\t\t\t\t\tencoding = UTF8;\n\t\t\t\t\tcontentPos += 3;\n\t\t\t\t\tbreak;\n\t\t\t\t} // fallthrough\n\t\t\tdefault:\n\t\t\t\tif (defaultEncoding == GUESS)\n\t\t\t\t{\n\t\t\t\t\tencoding = UTF8;\n\t\t\t\t\tguessedEncoding = true;\n\t\t\t\t}\n\t\t\t\tfseek(handle,0,SEEK_SET);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} else {\n\t\t\tif (defaultEncoding == GUESS)\n\t\t\t{\n\t\t\t\tencoding = UTF8;\n\t\t\t\tguessedEncoding = true;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn true;\n}\n\nvoid TextFile::close()\n{\n\tif (isOpen() && !fromMemory)\n\t{\n\t\tbufDrainWrite();\n\t\tfclose(handle);\n\t\thandle = nullptr;\n\t}\n\tbufPos = 0;\n}\n\nlong TextFile::tell()\n{\n\treturn (long) contentPos;\n}\n\nvoid TextFile::seek(long pos)\n{\n\tif (fromMemory)\n\t\tcontentPos = pos;\n\telse\n\t\tfseek(handle,pos,SEEK_SET);\n}\n\nvoid TextFile::bufFillRead()\n{\n\tassert(mode == Read);\n\n\tbuf.resize(TEXTFILE_BUF_MAX_SIZE);\n\tsize_t read = fread(&buf[0], 1, TEXTFILE_BUF_MAX_SIZE, handle);\n\tbuf.resize(read);\n\n\tbufPos = 0;\n}\n\nwchar_t TextFile::readCharacter()\n{\n\twchar_t value;\n\n\tswitch (encoding)\n\t{\n\tcase UTF8:\n\t\t{\n\t\t\tvalue = bufGetChar();\n\t\t\tcontentPos++;\n\n\t\t\tint extraBytes = 0;\n\t\t\tif ((value & 0xE0) == 0xC0)\n\t\t\t{\n\t\t\t\textraBytes = 1;\n\t\t\t\tvalue &= 0x1F;\n\t\t\t} else if ((value & 0xF0) == 0xE0)\n\t\t\t{\n\t\t\t\textraBytes = 2;\n\t\t\t\tvalue &= 0x0F;\n\t\t\t} else if (value > 0x7F)\n\t\t\t{\n\t\t\t\terrorText = formatString(L\"One or more invalid UTF-8 characters in this file\");\n\t\t\t}\n\n\t\t\tfor (int i = 0; i < extraBytes; i++)\n\t\t\t{\n\t\t\t\tint b = bufGetChar();\n\t\t\t\tcontentPos++;\n\n\t\t\t\tif ((b & 0xC0) != 0x80)\n\t\t\t\t{\n\t\t\t\t\terrorText = formatString(L\"One or more invalid UTF-8 characters in this file\");\n\t\t\t\t}\n\n\t\t\t\tvalue = (value << 6) | (b & 0x3F);\n\t\t\t}\n\t\t}\n\t\tbreak;\n\tcase UTF16LE:\n\t\tif (fromMemory)\n\t\t{\n\t\t\tvalue = content[contentPos++];\n\t\t} else {\n\t\t\tvalue = bufGet16LE();\n\t\t\tcontentPos += 2;\n\t\t}\n\t\tbreak;\n\tcase UTF16BE:\n\t\tvalue = bufGet16BE();\n\t\tcontentPos += 2;\n\t\tbreak;\n\tcase SJIS:\n\t\t{\n\t\t\tunsigned short sjis = bufGetChar();\n\t\t\tcontentPos++;\n\t\t\tif (sjis >= 0x80)\n\t\t\t{\n\t\t\t\tsjis = (sjis << 8) | bufGetChar();\n\t\t\t\tcontentPos++;\n\t\t\t}\n\t\t\tvalue = sjisToUnicode(sjis);\n\t\t\tif (value == (wchar_t)-1)\n\t\t\t{\n\t\t\t\terrorText = formatString(L\"One or more invalid Shift-JIS characters in this file\");\n\t\t\t}\n\t\t}\n\t\tbreak;\n\tcase ASCII:\n\t\tvalue = bufGetChar();\n\t\tcontentPos++;\n\t\tbreak;\n\tcase GUESS:\n\t\terrorText = formatString(L\"Cannot read from GUESS encoding\");\n\t\tbreak;\n\t}\n\n\t// convert \\r\\n to \\n\n\tif (value == L'\\r' && recursion == false && atEnd() == false)\n\t{\n\t\trecursion = true;\n\t\tlong pos = tell();\n\t\twchar_t nextValue = readCharacter();\n\t\trecursion = false;\n\n\t\tif (nextValue == L'\\n')\n\t\t\treturn nextValue;\n\t\tseek(pos);\n\t}\n\n\treturn value;\n}\n\nstd::wstring TextFile::readLine()\n{\n\tstd::wstring result;\n\twchar_t value;\n\n\tif (isOpen())\n\t{\n\t\twhile (tell() < size() && (value = readCharacter()) != L'\\n')\n\t\t{\n\t\t\tresult += value;\n\t\t}\n\t}\n\n\tlineCount++;\n\treturn result;\n}\n\nStringList TextFile::readAll()\n{\n\tStringList result;\n\twhile (!atEnd())\n\t{\n\t\tresult.push_back(readLine());\n\t}\n\n\treturn result;\n}\n\nvoid TextFile::bufPut(const void *p, const size_t len)\n{\n\tassert(mode == Write);\n\n\tif (len > TEXTFILE_BUF_MAX_SIZE)\n\t{\n\t\t// Lots of data.  Let's write directly.\n\t\tbufDrainWrite();\n\t\tfwrite(p, 1, len, handle);\n\t}\n\telse\n\t{\n\t\tif (bufPos + len > TEXTFILE_BUF_MAX_SIZE)\n\t\t\tbufDrainWrite();\n\n\t\tmemcpy(&buf[bufPos], p, len);\n\t\tbufPos += len;\n\t}\n}\n\nvoid TextFile::bufPut(const char c)\n{\n\tassert(mode == Write);\n\n\tif (bufPos >= TEXTFILE_BUF_MAX_SIZE)\n\t\tbufDrainWrite();\n\n\tbuf[bufPos++] = c;\n}\n\nvoid TextFile::bufDrainWrite()\n{\n\tfwrite(&buf[0], 1, bufPos, handle);\n\tbufPos = 0;\n}\n\nvoid TextFile::writeCharacter(wchar_t character)\n{\n\tif (mode != Write) return;\n\n\t// only support utf8 for now\n\tif (character < 0x80)\n\t{\n#ifdef _WIN32\n\t\tif (character == L'\\n')\n\t\t{\n\t\t\tbufPut('\\r');\n\t\t}\n#endif\n\t\tbufPut(character & 0x7F);\n\t} else if (encoding != ASCII)\n\t{\n\t\tif (character < 0x800)\n\t\t{\n\t\t\tbufPut(0xC0 | ((character >> 6) & 0x1F));\n\t\t\tbufPut(0x80 | (character & 0x3F));\n\t\t} else {\n\t\t\tbufPut(0xE0 | ((character >> 12) & 0xF));\n\t\t\tbufPut(0x80 | ((character >> 6) & 0x3F));\n\t\t\tbufPut(0x80 | (character & 0x3F));\n\t\t}\n\t}\n}\n\nvoid TextFile::write(const wchar_t* line)\n{\n\tif (mode != Write) return;\n\twhile (*line != 0)\n\t{\n\t\twriteCharacter(*line);\n\t\tline++;\n\t}\n}\n\nvoid TextFile::write(const std::wstring& line)\n{\n\twrite(line.c_str());\n}\n\nvoid TextFile::write(const char* line)\n{\n\tif (mode != Write) return;\n\twhile (*line != 0)\n\t{\n\t\twriteCharacter(*line);\n\t\tline++;\n\t}\n}\n\nvoid TextFile::write(const std::string& line)\n{\n\twrite(line.c_str());\n}\n\nvoid TextFile::writeLine(const wchar_t* line)\n{\n\tif (mode != Write) return;\n\twrite(line);\n\twriteCharacter(L'\\n');\n}\n\nvoid TextFile::writeLine(const std::wstring& line)\n{\n\twriteLine(line.c_str());\n}\n\nvoid TextFile::writeLine(const char* line)\n{\n\tif (mode != Write) return;\n\twrite(line);\n\twriteCharacter(L'\\n');\n}\n\nvoid TextFile::writeLine(const std::string& line)\n{\n\twriteLine(line.c_str());\n}\n\nvoid TextFile::writeLines(StringList& list)\n{\n\tfor (size_t i = 0; i < list.size(); i++)\n\t{\n\t\twriteLine(list[i]);\n\t}\n}\n\nstruct EncodingValue\n{\n\tconst wchar_t* name;\n\tTextFile::Encoding value;\n};\n\nconst EncodingValue encodingValues[] = {\n\t{ L\"sjis\",\t\t\tTextFile::SJIS },\n\t{ L\"shift-jis\",\t\tTextFile::SJIS },\n\t{ L\"utf8\",\t\t\tTextFile::UTF8 },\n\t{ L\"utf-8\",\t\t\tTextFile::UTF8 },\n\t{ L\"utf16\",\t\t\tTextFile::UTF16LE },\n\t{ L\"utf-16\",\t\tTextFile::UTF16LE },\n\t{ L\"utf16-be\",\t\tTextFile::UTF16BE },\n\t{ L\"utf-16-be\",\t\tTextFile::UTF16BE },\n\t{ L\"ascii\",\t\t\tTextFile::ASCII },\n};\n\nTextFile::Encoding getEncodingFromString(const std::wstring& str)\n{\n\tfor (size_t i = 0; i < sizeof(encodingValues)/sizeof(EncodingValue); i++)\n\t{\n\t\tif (str.compare(encodingValues[i].name) == 0)\n\t\t\treturn encodingValues[i].value;\n\t}\n\n\treturn TextFile::GUESS;\n}\n\n// file: Util/Util.cpp\n#include <sys/stat.h>\n#ifdef _WIN32\n#include <windows.h>\n#include <shlwapi.h>\n#if defined(WINAPI_FAMILY) && defined(WINAPI_FAMILY_PARTITION)\n#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) && WINAPI_FAMILY != WINAPI_FAMILY_DESKTOP_APP\n#define ARMIPS_WINDOWS_UWP\n#endif\n#endif\n#else\n#include <unistd.h>\n#endif\n\nstd::wstring convertUtf8ToWString(const char* source)\n{\n\tstd::wstring result;\n\n\tint index = 0;\n\twhile (source[index] != 0)\n\t{\n\t\tint extraBytes = 0;\n\t\tint value = source[index++];\n\n\t\tif ((value & 0xE0) == 0xC0)\n\t\t{\n\t\t\textraBytes = 1;\n\t\t\tvalue &= 0x1F;\n\t\t} else if ((value & 0xF0) == 0xE0)\n\t\t{\n\t\t\textraBytes = 2;\n\t\t\tvalue &= 0x0F;\n\t\t} else if (value > 0x7F)\n\t\t{\n\t\t\t// error\n\t\t\treturn std::wstring();\n\t\t}\n\n\t\tfor (int i = 0; i < extraBytes; i++)\n\t\t{\n\t\t\tint b = source[index++];\n\t\t\tif ((b & 0xC0) != 0x80)\n\t\t\t{\n\t\t\t// error\n\t\t\treturn std::wstring();\n\t\t\t}\n\n\t\t\tvalue = (value << 6) | (b & 0x3F);\n\t\t}\n\n\t\tresult += value;\n\t}\n\n\treturn result;\n}\n\nstd::string convertWCharToUtf8(wchar_t character)\n{\n\tstd::string result;\n\n\tif (character < 0x80)\n\t{\n\t\tresult += character & 0x7F;\n\t} else if (character < 0x800)\n\t{\n\t\tresult += 0xC0 | ((character >> 6) & 0x1F);\n\t\tresult += (0x80 | (character & 0x3F));\n\t} else {\n\t\tresult += 0xE0 | ((character >> 12) & 0xF);\n\t\tresult += 0x80 | ((character >> 6) & 0x3F);\n\t\tresult += 0x80 | (character & 0x3F);\n\t}\n\n\treturn result;\n}\n\nstd::string convertWStringToUtf8(const std::wstring& source)\n{\n\tstd::string result;\n\n\tfor (size_t i = 0; i < source.size(); i++)\n\t{\n\t\twchar_t character = source[i];\n\t\tif (character < 0x80)\n\t\t{\n\t\t\tresult += character & 0x7F;\n\t\t} else if (character < 0x800)\n\t\t{\n\t\t\tresult += 0xC0 | ((character >> 6) & 0x1F);\n\t\t\tresult += (0x80 | (character & 0x3F));\n\t\t} else {\n\t\t\tresult += 0xE0 | ((character >> 12) & 0xF);\n\t\t\tresult += 0x80 | ((character >> 6) & 0x3F);\n\t\t\tresult += 0x80 | (character & 0x3F);\n\t\t}\n\t}\n\n\treturn result;\n}\n\nstd::wstring intToHexString(unsigned int value, int digits, bool prefix)\n{\n\tstd::wstring result;\n\tresult.reserve((digits+prefix) ? 2 : 0);\n\n\tif (prefix)\n\t{\n\t\tresult += '0';\n\t\tresult += 'x';\n\t}\n\n\twhile (digits > 8)\n\t{\n\t\tresult += '0';\n\t\tdigits--;\n\t}\n\n\twchar_t buf[9];\n\tswprintf(buf,9,L\"%0*X\",digits,value);\n\tresult += buf;\n\n\treturn result;\n}\n\nstd::wstring intToString(unsigned int value, int digits)\n{\n\tstd::wstring result;\n\tresult.reserve(digits);\n\n\twhile (digits > 8)\n\t{\n\t\tresult += ' ';\n\t\tdigits--;\n\t}\n\n\twchar_t buf[9];\n\tswprintf(buf,9,L\"%*d\",digits,value);\n\tresult += buf;\n\n\treturn result;\n}\n\nbool stringToInt(const std::wstring& line, size_t start, size_t end, int64_t& result)\n{\n\t// find base of number\n\tint32_t base = 10;\n\tif (line[start] == '0')\n\t{\n\t\tif (towlower(line[start+1]) == 'x')\n\t\t{\n\t\t\tbase = 16;\n\t\t\tstart += 2;\n\t\t} else if (towlower(line[start+1]) == 'o')\n\t\t{\n\t\t\tbase = 8;\n\t\t\tstart += 2;\n\t\t} else if (towlower(line[start+1]) == 'b' && towlower(line[end-1]) != 'h')\n\t\t{\n\t\t\tbase = 2;\n\t\t\tstart += 2;\n\t\t}\n\t}\n\n\tif (base == 10)\n\t{\n\t\tif (towlower(line[end-1]) == 'h')\n\t\t{\n\t\t\tbase = 16;\n\t\t\tend--;\n\t\t} else if (towlower(line[end-1]) == 'b')\n\t\t{\n\t\t\tbase = 2;\n\t\t\tend--;\n\t\t} else if (towlower(line[end-1]) == 'o')\n\t\t{\n\t\t\tbase = 8;\n\t\t\tend--;\n\t\t}\n\t}\n\n\t// convert number\n\tresult = 0;\n\twhile (start < end)\n\t{\n\t\twchar_t c = towlower(line[start++]);\n\n\t\tint32_t value = c >= 'a' ? c-'a'+10 : c-'0';\n\n\t\tif (value >= base)\n\t\t\treturn false;\n\n\t\tresult = (result*base) + value;\n\t}\n\n\treturn true;\n}\n\nint32_t getFloatBits(float value)\n{\n\tunion { float f; int32_t i; } u;\n\tu.f = value;\n\treturn u.i;\n}\n\nfloat bitsToFloat(int32_t value)\n{\n\tunion { float f; int32_t i; } u;\n\tu.i = value;\n\treturn u.f;\n}\n\nint64_t getDoubleBits(double value)\n{\n\tunion { double f; int64_t i; } u;\n\tu.f = value;\n\treturn u.i;\n}\n\nStringList getStringListFromArray(wchar_t** source, int count)\n{\n\tStringList result;\n\tfor (int i = 0; i < count; i++)\n\t{\n\t\tresult.push_back(std::wstring(source[i]));\n\t}\n\n\treturn result;\n}\n\nStringList splitString(const std::wstring& str, const wchar_t delim, bool skipEmpty)\n{\n\tStringList result;\n\tstd::wstringstream stream(str);\n\tstd::wstring arg;\n\twhile (std::getline(stream,arg,delim))\n\t{\n\t\tif (arg.empty() && skipEmpty) continue;\n\t\tresult.push_back(arg);\n\t}\n\n\treturn result;\n}\n\nint64_t fileSize(const std::wstring& fileName)\n{\n#ifdef _WIN32\n\tWIN32_FILE_ATTRIBUTE_DATA attr;\n\tif (!GetFileAttributesEx(fileName.c_str(),GetFileExInfoStandard,&attr)\n\t\t|| (attr.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))\n\t\treturn 0;\n\treturn ((int64_t) attr.nFileSizeHigh << 32) | (int64_t) attr.nFileSizeLow;\n#else\n\tstd::string utf8 = convertWStringToUtf8(fileName);\n\tstruct stat fileStat;\n\tint err = stat(utf8.c_str(),&fileStat);\n\tif (0 != err)\n\t\treturn 0;\n\treturn fileStat.st_size;\n#endif\n}\n\nbool fileExists(const std::wstring& strFilename)\n{\n#ifdef _WIN32\n#ifdef ARMIPS_WINDOWS_UWP\n\treturn GetFileAttributes(strFilename.c_str()) != INVALID_FILE_ATTRIBUTES;\n#else\n\tint OldMode = SetErrorMode(SEM_FAILCRITICALERRORS);\n\tbool success = GetFileAttributes(strFilename.c_str()) != INVALID_FILE_ATTRIBUTES;\n\tSetErrorMode(OldMode);\n\treturn success;\n#endif\n#else\n\tstd::string utf8 = convertWStringToUtf8(strFilename);\n\tstruct stat stFileInfo;\n\tint intStat = stat(utf8.c_str(),&stFileInfo);\n\treturn intStat == 0;\n#endif\n}\n\nbool copyFile(const std::wstring& existingFile, const std::wstring& newFile)\n{\n#ifdef _WIN32\n\treturn CopyFileW(existingFile.c_str(),newFile.c_str(),false) != FALSE;\n#else\n\tunsigned char buffer[BUFSIZ];\n\tbool error = false;\n\n\tstd::string existingUtf8 = convertWStringToUtf8(existingFile);\n\tstd::string newUtf8 = convertWStringToUtf8(newFile);\n\n\tFILE* input = fopen(existingUtf8.c_str(),\"rb\");\n\tFILE* output = fopen(newUtf8.c_str(),\"wb\");\n\n\tif (input == nullptr || output == nullptr)\n\t\treturn false;\n\n\tsize_t n;\n\twhile ((n = fread(buffer,1,BUFSIZ,input)) > 0)\n\t{\n\t\tif (fwrite(buffer,1,n,output) != n)\n\t\t\terror = true;\n\t}\n\n\tfclose(input);\n\tfclose(output);\n\treturn !error;\n#endif\n}\n\nbool deleteFile(const std::wstring& fileName)\n{\n#ifdef _WIN32\n\treturn DeleteFileW(fileName.c_str()) != FALSE;\n#else\n\tstd::string utf8 = convertWStringToUtf8(fileName);\n\treturn unlink(utf8.c_str()) == 0;\n#endif\n}\n\nFILE* openFile(const std::wstring& fileName, OpenFileMode mode)\n{\n#ifdef _WIN32\n\tswitch (mode)\n\t{\n\tcase OpenFileMode::ReadBinary:\n\t\treturn _wfopen(fileName.c_str(),L\"rb\");\n\tcase OpenFileMode::WriteBinary:\n\t\treturn _wfopen(fileName.c_str(),L\"wb\");\n\tcase OpenFileMode::ReadWriteBinary:\n\t\treturn _wfopen(fileName.c_str(),L\"rb+\");\n\t}\n#else\n\tstd::string nameUtf8 = convertWStringToUtf8(fileName);\n\n\tswitch (mode)\n\t{\n\tcase OpenFileMode::ReadBinary:\n\t\treturn fopen(nameUtf8.c_str(),\"rb\");\n\tcase OpenFileMode::WriteBinary:\n\t\treturn fopen(nameUtf8.c_str(),\"wb\");\n\tcase OpenFileMode::ReadWriteBinary:\n\t\treturn fopen(nameUtf8.c_str(),\"rb+\");\n\t}\n#endif\n\n\treturn nullptr;\n}\n\nstd::wstring getCurrentDirectory()\n{\n#ifdef _WIN32\n\twchar_t dir[MAX_PATH];\n\t_wgetcwd(dir,MAX_PATH-1);\n\treturn dir;\n#else\n\tchar* dir = getcwd(nullptr,0);\n\tstd::wstring result = convertUtf8ToWString(dir);\n\tfree(dir);\n\treturn result;\n#endif\n}\n\nbool changeDirectory(const std::wstring& dir)\n{\n#ifdef _WIN32\n\treturn _wchdir(dir.c_str()) == 0;\n#else\n\tstd::string utf8 = convertWStringToUtf8(dir);\n\treturn chdir(utf8.c_str()) == 0;\n#endif\n}\n\nstd::wstring toWLowercase(const std::string& str)\n{\n\tstd::wstring result;\n\tfor (size_t i = 0; i < str.size(); i++)\n\t{\n\t\tresult += tolower(str[i]);\n\t}\n\n\treturn result;\n}\n\nstd::wstring getFileNameFromPath(const std::wstring& path)\n{\n\tsize_t n = path.find_last_of(L\"/\\\\\");\n\tif (n == path.npos)\n\t\treturn path;\n\treturn path.substr(n);\n}\n\nsize_t replaceAll(std::wstring& str, const wchar_t* oldValue,const std::wstring& newValue)\n{\n\tsize_t pos = 0;\n\tsize_t len = wcslen(oldValue);\n\n\tsize_t count = 0;\n\twhile ((pos = str.find(oldValue, pos)) != std::string::npos)\n\t{\n\t\tstr.replace(pos,len,newValue);\n\t\tpos += newValue.length();\n\t\tcount++;\n\t}\n\n\treturn count;\n}\n\nbool startsWith(const std::wstring& str, const wchar_t* value, size_t stringPos)\n{\n\twhile (*value != 0 && stringPos < str.size())\n\t{\n\t\tif (str[stringPos++] != *value++)\n\t\t\treturn false;\n\t}\n\n\treturn *value == 0;\n}\n\nbool isAbsolutePath(const std::wstring& path)\n{\n#ifdef _WIN32\n\treturn path.size() > 2 && (path[1] == ':' || (path[0] == '\\\\' && path[1] == '\\\\'));\n#else\n\treturn path.size() >= 1 && path[0] == '/';\n#endif\n}\n\n// file: Main/CommandLineInterface.h\n\nint runFromCommandLine(const StringList& arguments, ArmipsArguments settings = {});\n\n// file: Main/CommandLineInterface.cpp\n\nstatic void printUsage(std::wstring executableName)\n{\n\tLogger::printLine(L\"armips assembler v%d.%d.%d (%s %s) by Kingcom\",\n\t\tARMIPS_VERSION_MAJOR, ARMIPS_VERSION_MINOR, ARMIPS_VERSION_REVISION, __DATE__, __TIME__);\n\tLogger::printLine(L\"Usage: %s [optional parameters] <FILE>\", executableName);\n\tLogger::printLine(L\"\");\n\tLogger::printLine(L\"Optional parameters:\");\n\tLogger::printLine(L\" -temp <TEMP>              Output temporary assembly data to <TEMP> file\");\n\tLogger::printLine(L\" -sym  <SYM>               Output symbol data in the sym format to <SYM> file\");\n\tLogger::printLine(L\" -sym2 <SYM2>              Output symbol data in the sym2 format to <SYM2> file\");\n\tLogger::printLine(L\" -root <ROOT>              Use <ROOT> as working directory during execution\");\n\tLogger::printLine(L\" -equ  <NAME> <VAL>        Equivalent to \\'<NAME> equ <VAL>\\' in code\");\n\tLogger::printLine(L\" -strequ <NAME> <VAL>      Equivalent to \\'<NAME> equ \\\"<VAL>\\\"\\' in code\");\n\tLogger::printLine(L\" -definelabel <NAME> <VAL> Equivalent to \\'.definelabel <NAME>, <VAL>\\' in code\");\n\tLogger::printLine(L\" -erroronwarning           Treat all warnings like errors\");\n\tLogger::printLine(L\"\");\n\tLogger::printLine(L\"File arguments:\");\n\tLogger::printLine(L\" <FILE>                    Main assembly code file\");\n}\n\nstatic bool parseArguments(const StringList& arguments, ArmipsArguments& settings)\n{\n\tsize_t argpos = 1;\n\tbool readflags = true;\n\twhile (argpos < arguments.size())\n\t{\n\t\tif (readflags && arguments[argpos][0] == L'-')\n\t\t{\n\t\t\tif (arguments[argpos] == L\"--\")\n\t\t\t{\n\t\t\t\treadflags = false;\n\t\t\t\targpos += 1;\n\t\t\t}\n\t\t\telse if (arguments[argpos] == L\"-temp\" && argpos + 1 < arguments.size())\n\t\t\t{\n\t\t\t\tsettings.tempFileName = arguments[argpos + 1];\n\t\t\t\targpos += 2;\n\t\t\t}\n\t\t\telse if (arguments[argpos] == L\"-sym\" && argpos + 1 < arguments.size())\n\t\t\t{\n\t\t\t\tsettings.symFileName = arguments[argpos + 1];\n\t\t\t\tsettings.symFileVersion = 1;\n\t\t\t\targpos += 2;\n\t\t\t}\n\t\t\telse if (arguments[argpos] == L\"-sym2\" && argpos + 1 < arguments.size())\n\t\t\t{\n\t\t\t\tsettings.symFileName = arguments[argpos + 1];\n\t\t\t\tsettings.symFileVersion = 2;\n\t\t\t\targpos += 2;\n\t\t\t}\n\t\t\telse if (arguments[argpos] == L\"-erroronwarning\")\n\t\t\t{\n\t\t\t\tsettings.errorOnWarning = true;\n\t\t\t\targpos += 1;\n\t\t\t}\n\t\t\telse if (arguments[argpos] == L\"-equ\" && argpos + 2 < arguments.size())\n\t\t\t{\n\t\t\t\tEquationDefinition def;\n\n\t\t\t\tdef.name = arguments[argpos+1];\n\t\t\t\tstd::transform(def.name.begin(), def.name.end(), def.name.begin(), ::towlower);\n\n\t\t\t\tif (!checkValidLabelName(def.name))\n\t\t\t\t{\n\t\t\t\t\tLogger::printError(Logger::Error, L\"Invalid equation name \\\"%s\\\"\", def.name);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tauto it = std::find_if(settings.equList.begin(), settings.equList.end(),\n\t\t\t\t\t\t[&def](EquationDefinition x) -> bool {return def.name == x.name;});\n\t\t\t\tif(it != settings.equList.end())\n\t\t\t\t{\n\t\t\t\t\tLogger::printError(Logger::Error, L\"Equation name \\\"%s\\\" already defined\", def.name);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tdef.value = arguments[argpos + 2];\n\t\t\t\tsettings.equList.push_back(def);\n\t\t\t\targpos += 3;\n\t\t\t}\n\t\t\telse if (arguments[argpos] == L\"-strequ\" && argpos + 2 < arguments.size())\n\t\t\t{\n\t\t\t\tEquationDefinition def;\n\n\t\t\t\tdef.name = arguments[argpos+1];\n\t\t\t\tstd::transform(def.name.begin(), def.name.end(), def.name.begin(), ::towlower);\n\n\t\t\t\tif (!checkValidLabelName(def.name))\n\t\t\t\t{\n\t\t\t\t\tLogger::printError(Logger::Error, L\"Invalid equation name \\\"%s\\\"\", def.name);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tauto it = std::find_if(settings.equList.begin(), settings.equList.end(),\n\t\t\t\t\t\t[&def](EquationDefinition x) -> bool {return def.name == x.name;});\n\t\t\t\tif(it != settings.equList.end())\n\t\t\t\t{\n\t\t\t\t\tLogger::printError(Logger::Error, L\"Equation name \\\"%s\\\" already defined\", def.name);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tdef.value = formatString(L\"\\\"%s\\\"\", arguments[argpos + 2]);\n\t\t\t\tsettings.equList.push_back(def);\n\t\t\t\targpos += 3;\n\t\t\t}\n\t\t\telse if (arguments[argpos] == L\"-time\")\n\t\t\t{\n\t\t\t\tLogger::printError(Logger::Warning, L\"-time flag is deprecated\");\n\t\t\t\targpos += 1;\n\t\t\t}\n\t\t\telse if (arguments[argpos] == L\"-root\" && argpos + 1 < arguments.size())\n\t\t\t{\n\t\t\t\tif(!changeDirectory(arguments[argpos + 1]))\n\t\t\t\t{\n\t\t\t\t\tLogger::printError(Logger::Error, L\"Could not open directory \\\"%s\\\"\", arguments[argpos + 1]);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\targpos += 2;\n\t\t\t}\n\t\t\telse if (arguments[argpos] == L\"-definelabel\" && argpos + 2 < arguments.size())\n\t\t\t{\n\t\t\t\tLabelDefinition def;\n\n\t\t\t\tdef.originalName = arguments[argpos + 1];\n\t\t\t\tdef.name = def.originalName;\n\t\t\t\tstd::transform(def.name.begin(), def.name.end(), def.name.begin(), ::towlower);\n\n\t\t\t\tif (!checkValidLabelName(def.name))\n\t\t\t\t{\n\t\t\t\t\tLogger::printError(Logger::Error, L\"Invalid label name \\\"%s\\\"\", def.name);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tauto it = std::find_if(settings.labels.begin(), settings.labels.end(),\n\t\t\t\t\t\t[&def](LabelDefinition x) -> bool {return def.name == x.name;});\n\t\t\t\tif(it != settings.labels.end())\n\t\t\t\t{\n\t\t\t\t\tLogger::printError(Logger::Error, L\"Label name \\\"%s\\\" already defined\", def.name);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tint64_t value;\n\t\t\t\tif (!stringToInt(arguments[argpos + 2], 0, arguments[argpos + 2].size(), value))\n\t\t\t\t{\n\t\t\t\t\tLogger::printError(Logger::Error, L\"Invalid label value \\\"%s\\\"\", arguments[argpos + 2]);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tdef.value = value;\n\n\t\t\t\tsettings.labels.push_back(def);\n\t\t\t\targpos += 3;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tLogger::printError(Logger::Error, L\"Invalid command line argument \\\"%s\\\"\\n\", arguments[argpos]);\n\t\t\t\tprintUsage(arguments[0]);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\t// only allow one input filename\n\t\t\tif (settings.inputFileName == L\"\")\n\t\t\t{\n\t\t\t\tsettings.inputFileName = arguments[argpos];\n\t\t\t\targpos++;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tLogger::printError(Logger::Error, L\"Multiple input assembly files specified\\n\");\n\t\t\t\tprintUsage(arguments[0]);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\n\t// ensure input file was specified\n\tif (settings.inputFileName == L\"\")\n\t{\n\t\tif (arguments.size() > 1)\n\t\t\tLogger::printError(Logger::Error, L\"Missing input assembly file\\n\");\n\n\t\tprintUsage(arguments[0]);\n\t\treturn false;\n\t}\n\n\t// turn input filename into an absolute path\n\tif (settings.useAbsoluteFileNames && isAbsolutePath(settings.inputFileName) == false)\n\t\tsettings.inputFileName = formatString(L\"%s/%s\", getCurrentDirectory(), settings.inputFileName);\n\n\tif (fileExists(settings.inputFileName) == false)\n\t{\n\t\tLogger::printError(Logger::Error, L\"File \\\"%s\\\" not found\", settings.inputFileName);\n\t\treturn false;\n\t}\n\treturn true;\n}\n\nint runFromCommandLine(const StringList& arguments, ArmipsArguments settings)\n{\n\tif (parseArguments(arguments, settings) == false)\n\t{\n\t\tif (arguments.size() > 1 && !settings.silent)\n\t\t\tLogger::printLine(L\"Cannot parse arguments; aborting.\");\n\n\t\treturn 1;\n\t}\n\n\tif (runArmips(settings) == false)\n\t{\n\t\tif (!settings.silent)\n\t\t\tLogger::printLine(L\"Aborting.\");\n\n\t\treturn 1;\n\t}\n\n\treturn 0;\n}\n\n// file: Core/ELF/ElfFile.cpp\n#include <vector>\n#include <algorithm>\n\n#ifndef _WIN32\n#include <strings.h>\n#define _stricmp strcasecmp\n#endif\n\nstatic bool stringEqualInsensitive(const std::string& a, const std::string& b)\n{\n\tif (a.size() != b.size())\n\t\treturn false;\n\treturn _stricmp(a.c_str(),b.c_str()) == 0;\n}\n\nbool compareSection(ElfSection* a, ElfSection* b)\n{\n\treturn a->getOffset() < b->getOffset();\n}\n\nElfSection::ElfSection(Elf32_Shdr header): header(header)\n{\n\towner = nullptr;\n}\n\nvoid ElfSection::setOwner(ElfSegment* segment)\n{\n\theader.sh_offset -= segment->getOffset();\n\towner = segment;\n}\n\nvoid ElfSection::writeHeader(ByteArray& data, int pos, Endianness endianness)\n{\n\tdata.replaceDoubleWord(pos + 0x00, header.sh_name, endianness);\n\tdata.replaceDoubleWord(pos + 0x04, header.sh_type, endianness);\n\tdata.replaceDoubleWord(pos + 0x08, header.sh_flags, endianness);\n\tdata.replaceDoubleWord(pos + 0x0C, header.sh_addr, endianness);\n\tdata.replaceDoubleWord(pos + 0x10, header.sh_offset, endianness);\n\tdata.replaceDoubleWord(pos + 0x14, header.sh_size, endianness);\n\tdata.replaceDoubleWord(pos + 0x18, header.sh_link, endianness);\n\tdata.replaceDoubleWord(pos + 0x1C, header.sh_info, endianness);\n\tdata.replaceDoubleWord(pos + 0x20, header.sh_addralign, endianness);\n\tdata.replaceDoubleWord(pos + 0x24, header.sh_entsize, endianness);\n}\n\n// only called for segmentless sections\nvoid ElfSection::writeData(ByteArray& output)\n{\n\tif (header.sh_type == SHT_NULL) return;\n\n\t// nobits sections still get a provisional file address\n\tif (header.sh_type == SHT_NOBITS)\n\t{\n\t\theader.sh_offset = (Elf32_Off) output.size();\n\t}\n\n\tif (header.sh_addralign != (unsigned) -1)\n\t\toutput.alignSize(header.sh_addralign);\n\theader.sh_offset = (Elf32_Off) output.size();\n\toutput.append(data);\n}\n\nvoid ElfSection::setOffsetBase(int base)\n{\n\theader.sh_offset += base;\n}\n\nElfSegment::ElfSegment(Elf32_Phdr header, ByteArray& segmentData): header(header)\n{\n\tdata = segmentData;\n\tpaddrSection = nullptr;\n}\n\nbool ElfSegment::isSectionPartOf(ElfSection* section)\n{\n\tint sectionStart = section->getOffset();\n\tint sectionSize = section->getType() == SHT_NOBITS ? 0 : section->getSize();\n\tint sectionEnd = sectionStart+sectionSize;\n\n\tint segmentStart = header.p_offset;\n\tint segmentEnd = segmentStart+header.p_filesz;\n\n\t// exclusive > in case the size is 0\n\tif (sectionStart < (int)header.p_offset || sectionStart > segmentEnd) return false;\n\n\t// does an empty section belong to this or the next segment? hm...\n\tif (sectionStart == segmentEnd) return sectionSize == 0;\n\n\t// the start is inside the section and the size is not 0, so the end should be in here too\n\tif (sectionEnd > segmentEnd)\n\t{\n\t\tLogger::printError(Logger::Error,L\"Section partially contained in segment\");\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\nvoid ElfSegment::addSection(ElfSection* section)\n{\n\tif (header.p_paddr != 0)\n\t{\n\t\tif (section->getOffset() == header.p_paddr)\n\t\t{\n\t\t\tpaddrSection = section;\n\t\t}\n\t}\n\n\tsection->setOwner(this);\n\tsections.push_back(section);\n}\n\nvoid ElfSegment::writeData(ByteArray& output)\n{\n\tif (sections.size() == 0)\n\t{\n\t\toutput.alignSize(header.p_align);\n\t\tif (header.p_offset == header.p_paddr)\n\t\t\theader.p_paddr = (Elf32_Addr) output.size();\n\n\t\theader.p_offset = (Elf32_Off) output.size();\n\t\treturn;\n\t}\n\n\t// align segment to alignment of first section\n\tint align = std::max<int>(sections[0]->getAlignment(),16);\n\toutput.alignSize(align);\n\n\theader.p_offset = (Elf32_Off) output.size();\n\tfor (int i = 0; i < (int)sections.size(); i++)\n\t{\n\t\tsections[i]->setOffsetBase(header.p_offset);\n\t}\n\n\tif (paddrSection)\n\t{\n\t\theader.p_paddr = paddrSection->getOffset();\n\t}\n\n\toutput.append(data);\n}\n\nvoid ElfSegment::writeHeader(ByteArray& data, int pos, Endianness endianness)\n{\n\tdata.replaceDoubleWord(pos + 0x00, header.p_type, endianness);\n\tdata.replaceDoubleWord(pos + 0x04, header.p_offset, endianness);\n\tdata.replaceDoubleWord(pos + 0x08, header.p_vaddr, endianness);\n\tdata.replaceDoubleWord(pos + 0x0C, header.p_paddr, endianness);\n\tdata.replaceDoubleWord(pos + 0x10, header.p_filesz, endianness);\n\tdata.replaceDoubleWord(pos + 0x14, header.p_memsz, endianness);\n\tdata.replaceDoubleWord(pos + 0x18, header.p_flags, endianness);\n\tdata.replaceDoubleWord(pos + 0x1C, header.p_align, endianness);\n}\n\nvoid ElfSegment::splitSections()\n{\n\n}\n\nint ElfSegment::findSection(const std::string& name)\n{\n\tfor (size_t i = 0; i < sections.size(); i++)\n\t{\n\t\tif (stringEqualInsensitive(name,sections[i]->getName()))\n\t\t\treturn i;\n\t}\n\n\treturn -1;\n}\n\nvoid ElfSegment::writeToData(size_t offset, void* src, size_t size)\n{\n\tfor (size_t i = 0; i < size; i++)\n\t{\n\t\tdata[offset+i] = ((byte*)src)[i];\n\t}\n}\n\nvoid ElfSegment::sortSections()\n{\n\tstd::sort(sections.begin(),sections.end(),compareSection);\n}\n\nvoid ElfFile::loadSectionNames()\n{\n\tif (fileHeader.e_shstrndx == SHN_UNDEF) return;\n\n\t// check if the string table is actually a string table\n\t// sometimes it gives the wrong section id\n\tsize_t strTablePos = sections[fileHeader.e_shstrndx]->getOffset();\n\tsize_t strTableSize = sections[fileHeader.e_shstrndx]->getSize();\n\tfor (size_t i = 0; i < strTableSize; i++)\n\t{\n\t\tif (fileData[strTablePos+i] != 0 && fileData[strTablePos+i] < 0x20)\n\t\t\treturn;\n\t\tif (fileData[strTablePos+i] > 0x7F)\n\t\t\treturn;\n\t}\n\n\tfor (size_t i = 0; i < sections.size(); i++)\n\t{\n\t\tElfSection* section = sections[i];\n\t\tif (section->getType() == SHT_NULL) continue;\n\n\t\tint strTablePos = sections[fileHeader.e_shstrndx]->getOffset();\n\t\tint offset = strTablePos+section->getNameOffset();\n\n\t\tchar* name = (char*) fileData.data(offset);\n\t\tstd::string strName = name;\n\t\tsection->setName(strName);\n\t}\n}\n\nvoid ElfFile::determinePartOrder()\n{\n\tsize_t segmentTable = fileHeader.e_phoff;\n\tsize_t sectionTable = fileHeader.e_shoff;\n\n\t// segments\n\tsize_t firstSegmentStart = fileData.size(), lastSegmentEnd = 0;\n\tfor (size_t i = 0; i < fileHeader.e_phnum; i++)\n\t{\n\t\tsize_t pos = fileHeader.e_phoff+i*fileHeader.e_phentsize;\n\n\t\tElf32_Phdr segmentHeader;\n\t\tloadProgramHeader(segmentHeader, fileData, pos);\n\t\tsize_t end = segmentHeader.p_offset + segmentHeader.p_filesz;\n\n\t\tif (segmentHeader.p_offset < firstSegmentStart) firstSegmentStart = segmentHeader.p_offset;\n\t\tif (lastSegmentEnd < end) lastSegmentEnd = end;\n\t}\n\n\t// segmentless sections\n\tsize_t firstSectionStart = fileData.size(), lastSectionEnd = 0;\n\tfor (size_t i = 0; i < segmentlessSections.size(); i++)\n\t{\n\t\tif (segmentlessSections[i]->getType() == SHT_NULL) continue;\n\n\t\tsize_t start = segmentlessSections[i]->getOffset();\n\t\tsize_t end = start+segmentlessSections[i]->getSize();\n\n\t\tif (start == 0 && end == 0)\n\t\t\tcontinue;\n\t\tif (start < firstSectionStart) firstSectionStart = start;\n\t\tif (lastSectionEnd < end) lastSectionEnd = end;\n\t}\n\n\tstruct PartsSort {\n\t\tsize_t offset;\n\t\tElfPart type;\n\t\tbool operator<(const PartsSort& other) const { return offset < other.offset; };\n\t};\n\n\tPartsSort temp[4] = {\n\t\t{ segmentTable,\t\t\t\tELFPART_SEGMENTTABLE },\n\t\t{ sectionTable,\t\t\t\tELFPART_SECTIONTABLE },\n\t\t{ firstSegmentStart,\t\tELFPART_SEGMENTS },\n\t\t{ firstSectionStart,\t\tELFPART_SEGMENTLESSSECTIONS },\n\t};\n\n\tstd::sort(&temp[0],&temp[4]);\n\n\tfor (size_t i = 0; i < 4; i++)\n\t{\n\t\tpartsOrder[i] = temp[i].type;\n\t}\n}\n\nint ElfFile::findSegmentlessSection(const std::string& name)\n{\n\tfor (size_t i = 0; i < segmentlessSections.size(); i++)\n\t{\n\t\tif (stringEqualInsensitive(name,segmentlessSections[i]->getName()))\n\t\t\treturn i;\n\t}\n\n\treturn -1;\n}\n\nvoid ElfFile::loadElfHeader()\n{\n\tmemcpy(fileHeader.e_ident, &fileData[0], sizeof(fileHeader.e_ident));\n\tEndianness endianness = getEndianness();\n\tfileHeader.e_type = fileData.getWord(0x10, endianness);\n\tfileHeader.e_machine = fileData.getWord(0x12, endianness);\n\tfileHeader.e_version = fileData.getDoubleWord(0x14, endianness);\n\tfileHeader.e_entry = fileData.getDoubleWord(0x18, endianness);\n\tfileHeader.e_phoff = fileData.getDoubleWord(0x1C, endianness);\n\tfileHeader.e_shoff = fileData.getDoubleWord(0x20, endianness);\n\tfileHeader.e_flags = fileData.getDoubleWord(0x24, endianness);\n\tfileHeader.e_ehsize = fileData.getWord(0x28, endianness);\n\tfileHeader.e_phentsize = fileData.getWord(0x2A, endianness);\n\tfileHeader.e_phnum = fileData.getWord(0x2C, endianness);\n\tfileHeader.e_shentsize = fileData.getWord(0x2E, endianness);\n\tfileHeader.e_shnum = fileData.getWord(0x30, endianness);\n\tfileHeader.e_shstrndx = fileData.getWord(0x32, endianness);\n}\n\nvoid ElfFile::writeHeader(ByteArray& data, int pos, Endianness endianness)\n{\n\tmemcpy(&fileData[0], fileHeader.e_ident, sizeof(fileHeader.e_ident));\n\tdata.replaceWord(pos + 0x10, fileHeader.e_type, endianness);\n\tdata.replaceWord(pos + 0x12, fileHeader.e_machine, endianness);\n\tdata.replaceDoubleWord(pos + 0x14, fileHeader.e_version, endianness);\n\tdata.replaceDoubleWord(pos + 0x18, fileHeader.e_entry, endianness);\n\tdata.replaceDoubleWord(pos + 0x1C, fileHeader.e_phoff, endianness);\n\tdata.replaceDoubleWord(pos + 0x20, fileHeader.e_shoff, endianness);\n\tdata.replaceDoubleWord(pos + 0x24, fileHeader.e_flags, endianness);\n\tdata.replaceWord(pos + 0x28, fileHeader.e_ehsize, endianness);\n\tdata.replaceWord(pos + 0x2A, fileHeader.e_phentsize, endianness);\n\tdata.replaceWord(pos + 0x2C, fileHeader.e_phnum, endianness);\n\tdata.replaceWord(pos + 0x2E, fileHeader.e_shentsize, endianness);\n\tdata.replaceWord(pos + 0x30, fileHeader.e_shnum, endianness);\n\tdata.replaceWord(pos + 0x32, fileHeader.e_shstrndx, endianness);\n}\n\nvoid ElfFile::loadProgramHeader(Elf32_Phdr& header, ByteArray& data, int pos)\n{\n\tEndianness endianness = getEndianness();\n\theader.p_type   = data.getDoubleWord(pos + 0x00, endianness);\n\theader.p_offset = data.getDoubleWord(pos + 0x04, endianness);\n\theader.p_vaddr  = data.getDoubleWord(pos + 0x08, endianness);\n\theader.p_paddr  = data.getDoubleWord(pos + 0x0C, endianness);\n\theader.p_filesz = data.getDoubleWord(pos + 0x10, endianness);\n\theader.p_memsz  = data.getDoubleWord(pos + 0x14, endianness);\n\theader.p_flags  = data.getDoubleWord(pos + 0x18, endianness);\n\theader.p_align  = data.getDoubleWord(pos + 0x1C, endianness);\n}\n\nvoid ElfFile::loadSectionHeader(Elf32_Shdr& header, ByteArray& data, int pos)\n{\n\tEndianness endianness = getEndianness();\n\theader.sh_name      = data.getDoubleWord(pos + 0x00, endianness);\n\theader.sh_type      = data.getDoubleWord(pos + 0x04, endianness);\n\theader.sh_flags     = data.getDoubleWord(pos + 0x08, endianness);\n\theader.sh_addr      = data.getDoubleWord(pos + 0x0C, endianness);\n\theader.sh_offset    = data.getDoubleWord(pos + 0x10, endianness);\n\theader.sh_size      = data.getDoubleWord(pos + 0x14, endianness);\n\theader.sh_link      = data.getDoubleWord(pos + 0x18, endianness);\n\theader.sh_info      = data.getDoubleWord(pos + 0x1C, endianness);\n\theader.sh_addralign = data.getDoubleWord(pos + 0x20, endianness);\n\theader.sh_entsize   = data.getDoubleWord(pos + 0x24, endianness);\n}\n\nbool ElfFile::load(const std::wstring& fileName, bool sort)\n{\n\tByteArray data = ByteArray::fromFile(fileName);\n\tif (data.size() == 0)\n\t\treturn false;\n\treturn load(data,sort);\n}\n\nbool ElfFile::load(ByteArray& data, bool sort)\n{\n\tfileData = data;\n\n\tloadElfHeader();\n\tsymTab = nullptr;\n\tstrTab = nullptr;\n\n\t// load segments\n\tfor (size_t i = 0; i < fileHeader.e_phnum; i++)\n\t{\n\t\tint pos = fileHeader.e_phoff+i*fileHeader.e_phentsize;\n\n\t\tElf32_Phdr sectionHeader;\n\t\tloadProgramHeader(sectionHeader, fileData, pos);\n\n\t\tByteArray segmentData = fileData.mid(sectionHeader.p_offset,sectionHeader.p_filesz);\n\t\tElfSegment* segment = new ElfSegment(sectionHeader,segmentData);\n\t\tsegments.push_back(segment);\n\t}\n\n\t// load sections and assign them to segments\n\tfor (int i = 0; i < fileHeader.e_shnum; i++)\n\t{\n\t\tint pos = fileHeader.e_shoff+i*fileHeader.e_shentsize;\n\n\t\tElf32_Shdr sectionHeader;\n\t\tloadSectionHeader(sectionHeader, fileData, pos);\n\n\t\tElfSection* section = new ElfSection(sectionHeader);\n\t\tsections.push_back(section);\n\n\t\t// check if the section belongs to a segment\n\t\tElfSegment* owner = nullptr;\n\t\tfor (int k = 0; k < (int)segments.size(); k++)\n\t\t{\n\t\t\tif (segments[k]->isSectionPartOf(section))\n\t\t\t{\n\t\t\t\towner = segments[k];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (owner != nullptr)\n\t\t{\n\t\t\towner->addSection(section);\n\t\t} else {\n\t\t\tif (section->getType() != SHT_NOBITS && section->getType() != SHT_NULL)\n\t\t\t{\n\t\t\t\tByteArray data = fileData.mid(section->getOffset(),section->getSize());\n\t\t\t\tsection->setData(data);\n\t\t\t}\n\n\t\t\tswitch (section->getType())\n\t\t\t{\n\t\t\tcase SHT_SYMTAB:\n\t\t\t\tsymTab = section;\n\t\t\t\tbreak;\n\t\t\tcase SHT_STRTAB:\n\t\t\t\tif (!strTab || i != fileHeader.e_shstrndx)\n\t\t\t\t{\n\t\t\t\t\tstrTab = section;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tsegmentlessSections.push_back(section);\n\t\t}\n\t}\n\n\tdeterminePartOrder();\n\tloadSectionNames();\n\n\tif (sort)\n\t{\n\t\tstd::sort(segmentlessSections.begin(),segmentlessSections.end(),compareSection);\n\n\t\tfor (int i = 0; i < (int)segments.size(); i++)\n\t\t{\n\t\t\tsegments[i]->sortSections();\n\t\t}\n\t}\n\n\treturn true;\n}\n\nvoid ElfFile::save(const std::wstring&fileName)\n{\n\tfileData.clear();\n\n\t// reserve space for header and table data\n\tfileData.reserveBytes(sizeof(Elf32_Ehdr));\n\n\tfor (size_t i = 0; i < 4; i++)\n\t{\n\t\tswitch (partsOrder[i])\n\t\t{\n\t\tcase ELFPART_SEGMENTTABLE:\n\t\t\tfileData.alignSize(4);\n\t\t\tfileHeader.e_phoff = (Elf32_Off) fileData.size();\n\t\t\tfileData.reserveBytes(segments.size()*fileHeader.e_phentsize);\n\t\t\tbreak;\n\t\tcase ELFPART_SECTIONTABLE:\n\t\t\tfileData.alignSize(4);\n\t\t\tfileHeader.e_shoff = (Elf32_Off) fileData.size();\n\t\t\tfileData.reserveBytes(sections.size()*fileHeader.e_shentsize);\n\t\t\tbreak;\n\t\tcase ELFPART_SEGMENTS:\n\t\t\tfor (size_t i = 0; i < segments.size(); i++)\n\t\t\t{\n\t\t\t\tsegments[i]->writeData(fileData);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase ELFPART_SEGMENTLESSSECTIONS:\n\t\t\tfor (size_t i = 0; i < segmentlessSections.size(); i++)\n\t\t\t{\n\t\t\t\tsegmentlessSections[i]->writeData(fileData);\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// copy data to the tables\n\tEndianness endianness = getEndianness();\n\twriteHeader(fileData, 0, endianness);\n\tfor (size_t i = 0; i < segments.size(); i++)\n\t{\n\t\tint pos = fileHeader.e_phoff+i*fileHeader.e_phentsize;\n\t\tsegments[i]->writeHeader(fileData, pos, endianness);\n\t}\n\n\tfor (size_t i = 0; i < sections.size(); i++)\n\t{\n\t\tint pos = fileHeader.e_shoff+i*fileHeader.e_shentsize;\n\t\tsections[i]->writeHeader(fileData, pos, endianness);\n\t}\n\n\tfileData.toFile(fileName);\n}\n\nint ElfFile::getSymbolCount()\n{\n\tif (symTab == nullptr)\n\t\treturn 0;\n\n\treturn symTab->getSize()/sizeof(Elf32_Sym);\n}\n\nbool ElfFile::getSymbol(Elf32_Sym& symbol, size_t index)\n{\n\tif (symTab == nullptr)\n\t\treturn false;\n\n\tByteArray &data = symTab->getData();\n\tint pos = index*sizeof(Elf32_Sym);\n\tEndianness endianness = getEndianness();\n\tsymbol.st_name  = data.getDoubleWord(pos + 0x00, endianness);\n\tsymbol.st_value = data.getDoubleWord(pos + 0x04, endianness);\n\tsymbol.st_size  = data.getDoubleWord(pos + 0x08, endianness);\n\tsymbol.st_info  = data[pos + 0x0C];\n\tsymbol.st_other = data[pos + 0x0D];\n\tsymbol.st_shndx = data.getWord(pos + 0x0E, endianness);\n\n\treturn true;\n}\n\nconst char* ElfFile::getStrTableString(size_t pos)\n{\n\tif (strTab == nullptr)\n\t\treturn nullptr;\n\n\treturn (const char*) &strTab->getData()[pos];\n}\n\n// file: Core/ELF/ElfRelocator.cpp\n\nstruct ArFileHeader\n{\n\tchar fileName[16];\n\tchar modifactionTime[12];\n\tchar ownerId[6];\n\tchar groupId[6];\n\tchar fileMode[8];\n\tchar fileSize[10];\n\tchar magic[2];\n};\n\nstruct ArFileEntry\n{\n\tstd::wstring name;\n\tByteArray data;\n};\n\nstd::vector<ArFileEntry> loadArArchive(const std::wstring& inputName)\n{\n\tByteArray input = ByteArray::fromFile(inputName);\n\tstd::vector<ArFileEntry> result;\n\n\tif (input.size() < 8 || memcmp(input.data(),\"!<arch>\\n\",8) != 0)\n\t{\n\t\tif (input.size() < 4 || memcmp(input.data(),\"\\x7F\"\"ELF\",4) != 0)\n\t\t\treturn result;\n\n\t\tArFileEntry entry;\n\t\tentry.name = getFileNameFromPath(inputName);\n\t\tentry.data = input;\n\t\tresult.push_back(entry);\n\t\treturn result;\n\t}\n\n\tsize_t pos = 8;\n\twhile (pos < input.size())\n\t{\n\t\tArFileHeader* header = (ArFileHeader*) input.data(pos);\n\t\tpos += sizeof(ArFileHeader);\n\n\t\t// get file size\n\t\tint size = 0;\n\t\tfor (int i = 0; i < 10; i++)\n\t\t{\n\t\t\tif (header->fileSize[i] == ' ')\n\t\t\t\tbreak;\n\n\t\t\tsize = size*10;\n\t\t\tsize += (header->fileSize[i]-'0');\n\t\t}\n\n\t\t// only ELF files are actually interesting\n\t\tif (memcmp(input.data(pos),\"\\x7F\"\"ELF\",4) == 0)\n\t\t{\n\t\t\t// get file name\n\t\t\tchar fileName[17];\n\t\t\tfileName[16] = 0;\n\t\t\tfor (int i = 0; i < 16; i++)\n\t\t\t{\n\t\t\t\tif (header->fileName[i] == ' ')\n\t\t\t\t{\n\t\t\t\t\t// remove trailing slashes of file names\n\t\t\t\t\tif (i > 0 && fileName[i-1] == '/')\n\t\t\t\t\t\ti--;\n\t\t\t\t\tfileName[i] = 0;\n\t\t\t\t\tbreak;;\n\t\t\t\t}\n\n\t\t\t\tfileName[i] = header->fileName[i];\n\t\t\t}\n\n\t\t\tArFileEntry entry;\n\t\t\tentry.name = convertUtf8ToWString(fileName);\n\t\t\tentry.data = input.mid(pos,size);\n\t\t\tresult.push_back(entry);\n\t\t}\n\n\t\tpos += size;\n\t\tif (pos % 2)\n\t\t\tpos++;\n\t}\n\n\treturn result;\n}\n\nbool ElfRelocator::init(const std::wstring& inputName)\n{\n\trelocator = Arch->getElfRelocator();\n\tif (relocator == nullptr)\n\t{\n\t\tLogger::printError(Logger::Error,L\"Object importing not supported for this architecture\");\n\t\treturn false;\n\t}\n\n\tauto inputFiles = loadArArchive(inputName);\n\tif (inputFiles.size() == 0)\n\t{\n\t\tLogger::printError(Logger::Error,L\"Could not load library\");\n\t\treturn false;\n\t}\n\n\tfor (ArFileEntry& entry: inputFiles)\n\t{\n\t\tElfRelocatorFile file;\n\n\t\tElfFile* elf = new ElfFile();\n\t\tif (elf->load(entry.data,false) == false)\n\t\t{\n\t\t\tLogger::printError(Logger::Error,L\"Could not load object file %s\",entry.name);\n\t\t\treturn false;\n\t\t}\n\n\t\tif (elf->getType() != ET_REL)\n\t\t{\n\t\t\tLogger::printError(Logger::Error,L\"Unexpected ELF type %d in object file %s\",elf->getType(),entry.name);\n\t\t\treturn false;\n\t\t}\n\n\t\tif (elf->getMachine() != relocator->expectedMachine())\n\t\t{\n\t\t\tLogger::printError(Logger::Error,L\"Unexpected ELF machine %d in object file %s\",elf->getMachine(),entry.name);\n\t\t\treturn false;\n\t\t}\n\n\t\tif (elf->getEndianness() != Arch->getEndianness())\n\t\t{\n\t\t\tLogger::printError(Logger::Error,L\"Incorrect endianness in object file %s\",entry.name);\n\t\t\treturn false;\n\t\t}\n\n\t\tif (elf->getSegmentCount() != 0)\n\t\t{\n\t\t\tLogger::printError(Logger::Error,L\"Unexpected segment count %d in object file %s\",elf->getSegmentCount(),entry.name);\n\t\t\treturn false;\n\t\t}\n\n\n\t\t// load all relevant sections of this file\n\t\tfor (size_t s = 0; s < elf->getSegmentlessSectionCount(); s++)\n\t\t{\n\t\t\tElfSection* sec = elf->getSegmentlessSection(s);\n\t\t\tif (!(sec->getFlags() & SHF_ALLOC))\n\t\t\t\tcontinue;\n\n\t\t\tif (sec->getType() == SHT_PROGBITS || sec->getType() == SHT_NOBITS || sec->getType() == SHT_INIT_ARRAY)\n\t\t\t{\n\t\t\t\tElfRelocatorSection sectionEntry;\n\t\t\t\tsectionEntry.section = sec;\n\t\t\t\tsectionEntry.index = s;\n\t\t\t\tsectionEntry.relSection = nullptr;\n\t\t\t\tsectionEntry.label = nullptr;\n\n\t\t\t\t// search relocation section\n\t\t\t\tfor (size_t k = 0; k < elf->getSegmentlessSectionCount(); k++)\n\t\t\t\t{\n\t\t\t\t\tElfSection* relSection = elf->getSegmentlessSection(k);\n\t\t\t\t\tif (relSection->getType() != SHT_REL)\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\tif (relSection->getInfo() != s)\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t// got it\n\t\t\t\t\tsectionEntry.relSection = relSection;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\t// keep track of constructor sections\n\t\t\t\tif (sec->getName() == \".ctors\" || sec->getName() == \".init_array\")\n\t\t\t\t{\n\t\t\t\t\tElfRelocatorCtor ctor;\n\t\t\t\t\tctor.symbolName = Global.symbolTable.getUniqueLabelName();\n\t\t\t\t\tctor.size = sec->getSize();\n\n\t\t\t\t\tsectionEntry.label = Global.symbolTable.getLabel(ctor.symbolName,-1,-1);\n\t\t\t\t\tsectionEntry.label->setDefined(true);\n\n\t\t\t\t\tctors.push_back(ctor);\n\t\t\t\t}\n\n\t\t\t\tfile.sections.push_back(sectionEntry);\n\t\t\t}\n\t\t}\n\n\t\t// init exportable symbols\n\t\tfor (int i = 0; i < elf->getSymbolCount(); i++)\n\t\t{\n\t\t\tElf32_Sym symbol;\n\t\t\telf->getSymbol(symbol, i);\n\n\t\t\tif (ELF32_ST_BIND(symbol.st_info) == STB_GLOBAL && symbol.st_shndx != 0)\n\t\t\t{\n\t\t\t\tElfRelocatorSymbol symEntry;\n\t\t\t\tsymEntry.type = ELF32_ST_TYPE(symbol.st_info);\n\t\t\t\tsymEntry.name = convertUtf8ToWString(elf->getStrTableString(symbol.st_name));\n\t\t\t\tsymEntry.relativeAddress = symbol.st_value;\n\t\t\t\tsymEntry.section = symbol.st_shndx;\n\t\t\t\tsymEntry.size = symbol.st_size;\n\t\t\t\tsymEntry.label = nullptr;\n\n\t\t\t\tfile.symbols.push_back(symEntry);\n\t\t\t}\n\t\t}\n\n\t\tfile.elf = elf;\n\t\tfile.name = entry.name;\n\t\tfiles.push_back(file);\n\t}\n\n\treturn true;\n}\n\nbool ElfRelocator::exportSymbols()\n{\n\tbool error = false;\n\n\tfor (ElfRelocatorFile& file: files)\n\t{\n\t\tfor (ElfRelocatorSymbol& sym: file.symbols)\n\t\t{\n\t\t\tif (sym.label != nullptr)\n\t\t\t\tcontinue;\n\n\t\t\tstd::wstring lowered = sym.name;\n\t\t\tstd::transform(lowered.begin(), lowered.end(), lowered.begin(), ::towlower);\n\n\t\t\tsym.label = Global.symbolTable.getLabel(lowered,-1,-1);\n\t\t\tif (sym.label == nullptr)\n\t\t\t{\n\t\t\t\tLogger::printError(Logger::Error,L\"Invalid label name \\\"%s\\\"\",sym.name);\n\t\t\t\terror = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (sym.label->isDefined())\n\t\t\t{\n\t\t\t\tLogger::printError(Logger::Error,L\"Label \\\"%s\\\" already defined\",sym.name);\n\t\t\t\terror = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tRelocationData data;\n\t\t\tdata.symbolAddress = sym.relativeAddress;\n\t\t\trelocator->setSymbolAddress(data,sym.relativeAddress,sym.type);\n\n\t\t\tsym.relativeAddress = data.symbolAddress;\n\t\t\tsym.label->setInfo(data.targetSymbolInfo);\n\t\t\tsym.label->setIsData(sym.type == STT_OBJECT);\n\t\t\tsym.label->setUpdateInfo(false);\n\n\t\t\tsym.label->setValue(0);\n\t\t\tsym.label->setDefined(true);\n\t\t\tsym.label->setOriginalName(sym.name);\n\t\t}\n\t}\n\n\treturn !error;\n}\n\nstd::unique_ptr<CAssemblerCommand> ElfRelocator::generateCtor(const std::wstring& ctorName)\n{\n\tstd::unique_ptr<CAssemblerCommand> content = relocator->generateCtorStub(ctors);\n\n\tauto func = ::make_unique<CDirectiveFunction>(ctorName,ctorName);\n\tfunc->setContent(std::move(content));\n\treturn func;\n}\n\nvoid ElfRelocator::loadRelocation(Elf32_Rel& rel, ByteArray& data, int offset, Endianness endianness)\n{\n\trel.r_offset = data.getDoubleWord(offset + 0x00, endianness);\n\trel.r_info   = data.getDoubleWord(offset + 0x04, endianness);\n}\n\nbool ElfRelocator::relocateFile(ElfRelocatorFile& file, int64_t& relocationAddress)\n{\n\tElfFile* elf = file.elf;\n\tint64_t start = relocationAddress;\n\n\t// calculate address for each section\n\tstd::map<int64_t,int64_t> relocationOffsets;\n\tfor (ElfRelocatorSection& entry: file.sections)\n\t{\n\t\tElfSection* section = entry.section;\n\t\tsize_t index = entry.index;\n\t\tint size = section->getSize();\n\n\t\twhile (relocationAddress % section->getAlignment())\n\t\t\trelocationAddress++;\n\n\t\tif (entry.label != nullptr)\n\t\t\tentry.label->setValue(relocationAddress);\n\n\t\trelocationOffsets[index] = relocationAddress;\n\t\trelocationAddress += size;\n\t}\n\n\tsize_t dataStart = outputData.size();\n\toutputData.reserveBytes((size_t)(relocationAddress-start));\n\n\t// load sections\n\tbool error = false;\n\tfor (ElfRelocatorSection& entry: file.sections)\n\t{\n\t\tElfSection* section = entry.section;\n\t\tsize_t index = entry.index;\n\n\t\tif (section->getType() == SHT_NOBITS)\n\t\t{\n\t\t\t// reserveBytes initialized the data to 0 already\n\t\t\tcontinue;\n\t\t}\n\n\t\tByteArray sectionData = section->getData();\n\n\t\t// relocate if necessary\n\t\tElfSection* relSection = entry.relSection;\n\t\tif (relSection != nullptr)\n\t\t{\n\t\t\tstd::vector<RelocationAction> relocationActions;\n\t\t\tfor (unsigned int relOffset = 0; relOffset < relSection->getSize(); relOffset += sizeof(Elf32_Rel))\n\t\t\t{\n\t\t\t\tElf32_Rel rel;\n\t\t\t\tloadRelocation(rel, relSection->getData(), relOffset, elf->getEndianness());\n\t\t\t\tint pos = rel.r_offset;\n\n\t\t\t\tif (relocator->isDummyRelocationType(rel.getType()))\n\t\t\t\t\tcontinue;\n\n\t\t\t\tint symNum = rel.getSymbolNum();\n\t\t\t\tif (symNum <= 0)\n\t\t\t\t{\n\t\t\t\t\tLogger::queueError(Logger::Warning,L\"Invalid symbol num %06X\",symNum);\n\t\t\t\t\terror = true;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tElf32_Sym sym;\n\t\t\t\telf->getSymbol(sym, symNum);\n\t\t\t\tint symSection = sym.st_shndx;\n\n\t\t\t\tRelocationData relData;\n\t\t\t\trelData.opcode = sectionData.getDoubleWord(pos, elf->getEndianness());\n\t\t\t\trelData.opcodeOffset = pos+relocationOffsets[index];\n\t\t\t\trelocator->setSymbolAddress(relData,sym.st_value,sym.st_info & 0xF);\n\n\t\t\t\t// externs?\n\t\t\t\tif (sym.st_shndx == 0)\n\t\t\t\t{\n\t\t\t\t\tif (sym.st_name == 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tLogger::queueError(Logger::Error, L\"Symbol without a name\");\n\t\t\t\t\t\terror = true;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tstd::wstring symName = toWLowercase(elf->getStrTableString(sym.st_name));\n\n\t\t\t\t\tstd::shared_ptr<Label> label = Global.symbolTable.getLabel(symName,-1,-1);\n\t\t\t\t\tif (label == nullptr)\n\t\t\t\t\t{\n\t\t\t\t\t\tLogger::queueError(Logger::Error,L\"Invalid external symbol %s\",symName);\n\t\t\t\t\t\terror = true;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tif (label->isDefined() == false)\n\t\t\t\t\t{\n\t\t\t\t\t\tLogger::queueError(Logger::Error,L\"Undefined external symbol %s in file %s\",symName,file.name);\n\t\t\t\t\t\terror = true;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\trelData.relocationBase = (unsigned int) label->getValue();\n\t\t\t\t\trelData.targetSymbolType = label->isData() ? STT_OBJECT : STT_FUNC;\n\t\t\t\t\trelData.targetSymbolInfo = label->getInfo();\n\t\t\t\t} else {\n\t\t\t\t\trelData.relocationBase = relocationOffsets[symSection]+relData.symbolAddress;\n\t\t\t\t}\n\n\t\t\t\tstd::vector<std::wstring> errors;\n\t\t\t\tif (!relocator->relocateOpcode(rel.getType(),relData, relocationActions, errors))\n\t\t\t\t{\n\t\t\t\t\tfor (const std::wstring& error : errors)\n\t\t\t\t\t{\n\t\t\t\t\t\tLogger::queueError(Logger::Error, error);\n\t\t\t\t\t}\n\t\t\t\t\terror = true;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// finish any dangling relocations\n\t\t\tstd::vector<std::wstring> errors;\n\t\t\tif (!relocator->finish(relocationActions, errors))\n\t\t\t{\n\t\t\t\tfor (const std::wstring& error : errors)\n\t\t\t\t{\n\t\t\t\t\tLogger::queueError(Logger::Error, error);\n\t\t\t\t}\n\t\t\t\terror = true;\n\t\t\t}\n\n\t\t\t// now actually write the relocated values\n\t\t\tfor (const RelocationAction& action : relocationActions)\n\t\t\t{\n\t\t\t\tsectionData.replaceDoubleWord(action.offset-relocationOffsets[index], action.newValue, elf->getEndianness());\n\t\t\t}\n\t\t}\n\n\t\tsize_t arrayStart = (size_t) (dataStart+relocationOffsets[index]-start);\n\t\tmemcpy(outputData.data(arrayStart),sectionData.data(),sectionData.size());\n\t}\n\n\t// now update symbols\n\tfor (ElfRelocatorSymbol& sym: file.symbols)\n\t{\n\t\tint64_t oldAddress = sym.relocatedAddress;\n\n\t\tswitch (sym.section)\n\t\t{\n\t\tcase SHN_ABS:\t\t// address does not change\n\t\t\tsym.relocatedAddress = sym.relativeAddress;\n\t\t\tbreak;\n\t\tcase SHN_COMMON:\t// needs to be allocated. relativeAddress gives alignment constraint\n\t\t\t{\n\t\t\t\tint64_t start = relocationAddress;\n\n\t\t\t\twhile (relocationAddress % sym.relativeAddress)\n\t\t\t\t\trelocationAddress++;\n\n\t\t\t\tsym.relocatedAddress = relocationAddress;\n\t\t\t\trelocationAddress += sym.size;\n\t\t\t\toutputData.reserveBytes((size_t)(relocationAddress-start));\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\t\t\t// normal relocated symbol\n\t\t\tsym.relocatedAddress = sym.relativeAddress+relocationOffsets[sym.section];\n\t\t\tbreak;\n\t\t}\n\n\t\tif (sym.label != nullptr)\n\t\t\tsym.label->setValue(sym.relocatedAddress);\n\n\t\tif (oldAddress != sym.relocatedAddress)\n\t\t\tdataChanged = true;\n\t}\n\n\treturn !error;\n}\n\nbool ElfRelocator::relocate(int64_t& memoryAddress)\n{\n\tint oldCrc = getCrc32(outputData.data(),outputData.size());\n\toutputData.clear();\n\tdataChanged = false;\n\n\tbool error = false;\n\tint64_t start = memoryAddress;\n\n\tfor (ElfRelocatorFile& file: files)\n\t{\n\t\tif (relocateFile(file,memoryAddress) == false)\n\t\t\terror = true;\n\t}\n\n\tint newCrc = getCrc32(outputData.data(),outputData.size());\n\tif (oldCrc != newCrc)\n\t\tdataChanged = true;\n\n\tmemoryAddress -= start;\n\treturn !error;\n}\n\nvoid ElfRelocator::writeSymbols(SymbolData& symData) const\n{\n\tfor (const ElfRelocatorFile& file: files)\n\t{\n\t\tfor (const ElfRelocatorSymbol& sym: file.symbols)\n\t\t{\n\t\t\tsymData.addLabel(sym.relocatedAddress,sym.name);\n\n\t\t\tswitch (sym.type)\n\t\t\t{\n\t\t\tcase STT_OBJECT:\n\t\t\t\tsymData.addData(sym.relocatedAddress,sym.size,SymbolData::Data8);\n\t\t\t\tbreak;\n\t\t\tcase STT_FUNC:\n\t\t\t\tsymData.startFunction(sym.relocatedAddress);\n\t\t\t\tsymData.endFunction(sym.relocatedAddress+sym.size);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\n// file: Core/Assembler.cpp\n#include <thread>\n\nvoid AddFileName(const std::wstring& FileName)\n{\n\tGlobal.FileInfo.FileNum = (int) Global.FileInfo.FileList.size();\n\tGlobal.FileInfo.FileList.push_back(FileName);\n\tGlobal.FileInfo.LineNumber = 0;\n}\n\nbool encodeAssembly(std::unique_ptr<CAssemblerCommand> content, SymbolData& symData, TempData& tempData)\n{\n\tbool Revalidate;\n\n#ifdef ARMIPS_ARM\n\tArm.Pass2();\n#endif\n\tMips.Pass2();\n\n\tint validationPasses = 0;\n\tdo\t// loop until everything is constant\n\t{\n\t\tGlobal.validationPasses = validationPasses;\n\t\tLogger::clearQueue();\n\t\tRevalidate = false;\n\n\t\tif (validationPasses >= 100)\n\t\t{\n\t\t\tLogger::queueError(Logger::Error,L\"Stuck in infinite validation loop\");\n\t\t\tbreak;\n\t\t}\n\n\t\tg_fileManager->reset();\n\n#ifdef _DEBUG\n\t\tif (!Logger::isSilent())\n\t\t\tprintf(\"Validate %d...\\n\",validationPasses);\n#endif\n\n\t\tif (Global.memoryMode)\n\t\t\tg_fileManager->openFile(Global.memoryFile,true);\n\n\t\tRevalidate = content->Validate();\n\n#ifdef ARMIPS_ARM\n\t\tArm.Revalidate();\n#endif\n\t\tMips.Revalidate();\n\n\t\tif (Global.memoryMode)\n\t\t\tg_fileManager->closeFile();\n\n\t\tvalidationPasses++;\n\t} while (Revalidate == true);\n\n\tLogger::printQueue();\n\tif (Logger::hasError() == true)\n\t{\n\t\treturn false;\n\t}\n\n#ifdef _DEBUG\n\tif (!Logger::isSilent())\n\t\tprintf(\"Encode...\\n\");\n#endif\n\n\t// and finally encode\n\tif (Global.memoryMode)\n\t\tg_fileManager->openFile(Global.memoryFile,false);\n\n\tauto writeTempData = [&]()\n\t{\n\t\ttempData.start();\n\t\tif (tempData.isOpen())\n\t\t\tcontent->writeTempData(tempData);\n\t\ttempData.end();\n\t};\n\n\tauto writeSymData = [&]()\n\t{\n\t\tcontent->writeSymData(symData);\n\t\tsymData.write();\n\t};\n\n\t// writeTempData, writeSymData and encode all access the same\n\t// memory but never change, so they can run in parallel\n\tif (Global.multiThreading)\n\t{\n\t\tstd::thread tempThread(writeTempData);\n\t\tstd::thread symThread(writeSymData);\n\n\t\tcontent->Encode();\n\n\t\ttempThread.join();\n\t\tsymThread.join();\n\t} else {\n\t\twriteTempData();\n\t\twriteSymData();\n\t\tcontent->Encode();\n\t}\n\n\tif (g_fileManager->hasOpenFile())\n\t{\n\t\tif (!Global.memoryMode)\n\t\t\tLogger::printError(Logger::Warning,L\"File not closed\");\n\t\tg_fileManager->closeFile();\n\t}\n\n\treturn true;\n}\n\nbool runArmips(ArmipsArguments& settings)\n{\n\t// initialize and reset global data\n\tGlobal.Section = 0;\n\tGlobal.nocash = false;\n\tGlobal.FileInfo.FileCount = 0;\n\tGlobal.FileInfo.TotalLineCount = 0;\n\tGlobal.relativeInclude = false;\n\tGlobal.validationPasses = 0;\n\tGlobal.multiThreading = true;\n\tArch = &InvalidArchitecture;\n\n\tTokenizer::clearEquValues();\n\tLogger::clear();\n\tGlobal.Table.clear();\n\tGlobal.symbolTable.clear();\n\n\tGlobal.FileInfo.FileList.clear();\n\tGlobal.FileInfo.FileCount = 0;\n\tGlobal.FileInfo.TotalLineCount = 0;\n\tGlobal.FileInfo.LineNumber = 0;\n\tGlobal.FileInfo.FileNum = 0;\n\n#ifdef ARMIPS_ARM\n\tArm.clear();\n#endif\n\n\t// process settings\n\tParser parser;\n\tSymbolData symData;\n\tTempData tempData;\n\n\tLogger::setSilent(settings.silent);\n\tLogger::setErrorOnWarning(settings.errorOnWarning);\n\n\tif (!settings.symFileName.empty())\n\t\tsymData.setNocashSymFileName(settings.symFileName, settings.symFileVersion);\n\n\tif (!settings.tempFileName.empty())\n\t\ttempData.setFileName(settings.tempFileName);\n\n\tToken token;\n\tfor (size_t i = 0; i < settings.equList.size(); i++)\n\t{\n\t\tparser.addEquation(token, settings.equList[i].name, settings.equList[i].value);\n\t}\n\n\tGlobal.symbolTable.addLabels(settings.labels);\n\tfor (const LabelDefinition& label : settings.labels)\n\t{\n\t\tsymData.addLabel(label.value, label.originalName);\n\t}\n\n\tif (Logger::hasError())\n\t\treturn false;\n\n\t// run assembler\n\tTextFile input;\n\tswitch (settings.mode)\n\t{\n\tcase ArmipsMode::FILE:\n\t\tGlobal.memoryMode = false;\n\t\tif (input.open(settings.inputFileName,TextFile::Read) == false)\n\t\t{\n\t\t\tLogger::printError(Logger::Error,L\"Could not open file\");\n\t\t\treturn false;\n\t\t}\n\t\tbreak;\n\tcase ArmipsMode::MEMORY:\n\t\tGlobal.memoryMode = true;\n\t\tGlobal.memoryFile = settings.memoryFile;\n\t\tinput.openMemory(settings.content);\n\t\tbreak;\n\t}\n\n\tstd::unique_ptr<CAssemblerCommand> content = parser.parseFile(input);\n\tLogger::printQueue();\n\n\tbool result = !Logger::hasError();\n\tif (result == true && content != nullptr)\n\t\tresult = encodeAssembly(std::move(content), symData, tempData);\n\n\tif (g_fileManager->hasOpenFile())\n\t{\n\t\tif (!Global.memoryMode)\n\t\t\tLogger::printError(Logger::Warning,L\"File not closed\");\n\t\tg_fileManager->closeFile();\n\t}\n\n\t// return errors\n\tif (settings.errorsResult != nullptr)\n\t{\n\t\tStringList errors = Logger::getErrors();\n\t\tfor (size_t i = 0; i < errors.size(); i++)\n\t\t\tsettings.errorsResult->push_back(errors[i]);\n\t}\n\n\treturn result;\n}\n\n// file: Core/Common.cpp\n#include <sys/stat.h>\n\nFileManager fileManager;\nFileManager* g_fileManager = &fileManager;\n\ntGlobal Global;\nCArchitecture* Arch;\n\nstd::wstring getFolderNameFromPath(const std::wstring& src)\n{\n#ifdef _WIN32\n\tsize_t s = src.find_last_of(L\"\\\\/\");\n#else\n\tsize_t s = src.rfind(L\"/\");\n#endif\n\tif (s == std::wstring::npos)\n\t{\n\t\treturn L\".\";\n\t}\n\n\treturn src.substr(0,s);\n}\n\nstd::wstring getFullPathName(const std::wstring& path)\n{\n\tif (Global.relativeInclude == true)\n\t{\n\t\tif (isAbsolutePath(path))\n\t\t{\n\t\t\treturn path;\n\t\t} else {\n\t\t\tstd::wstring source = Global.FileInfo.FileList[Global.FileInfo.FileNum];\n\t\t\treturn getFolderNameFromPath(source) + L\"/\" + path;\n\t\t}\n\t} else {\n\t\treturn path;\n\t}\n}\n\nbool checkLabelDefined(const std::wstring& labelName, int section)\n{\n\tstd::shared_ptr<Label> label = Global.symbolTable.getLabel(labelName,Global.FileInfo.FileNum,section);\n\treturn label->isDefined();\n}\n\nbool checkValidLabelName(const std::wstring& labelName)\n{\n\treturn Global.symbolTable.isValidSymbolName(labelName);\n}\n\nbool isPowerOfTwo(int64_t n)\n{\n\tif (n == 0) return false;\n\treturn !(n & (n - 1));\n}\n\n// file: Core/Expression.cpp\n\nenum class ExpressionValueCombination\n{\n\tII = (int(ExpressionValueType::Integer) << 2) | (int(ExpressionValueType::Integer) << 0),\n\tIF = (int(ExpressionValueType::Integer) << 2) | (int(ExpressionValueType::Float)   << 0),\n\tFI = (int(ExpressionValueType::Float)   << 2) | (int(ExpressionValueType::Integer) << 0),\n\tFF = (int(ExpressionValueType::Float)   << 2) | (int(ExpressionValueType::Float)   << 0),\n\tIS = (int(ExpressionValueType::Integer) << 2) | (int(ExpressionValueType::String)  << 0),\n\tFS = (int(ExpressionValueType::Float)   << 2) | (int(ExpressionValueType::String)  << 0),\n\tSI = (int(ExpressionValueType::String)  << 2) | (int(ExpressionValueType::Integer) << 0),\n\tSF = (int(ExpressionValueType::String)  << 2) | (int(ExpressionValueType::Float)   << 0),\n\tSS = (int(ExpressionValueType::String)  << 2) | (int(ExpressionValueType::String)  << 0),\n};\n\nExpressionValueCombination getValueCombination(ExpressionValueType a, ExpressionValueType b)\n{\n\treturn (ExpressionValueCombination) ((int(a) << 2) | (int(b) << 0));\n}\n\nExpressionValue ExpressionValue::operator+(const ExpressionValue& other) const\n{\n\tExpressionValue result;\n\tswitch (getValueCombination(type,other.type))\n\t{\n\tcase ExpressionValueCombination::II:\n\t\tresult.type = ExpressionValueType::Integer;\n\t\tresult.intValue = intValue + other.intValue;\n\t\tbreak;\n\tcase ExpressionValueCombination::FI:\n\t\tresult.type = ExpressionValueType::Float;\n\t\tresult.floatValue = floatValue + other.intValue;\n\t\tbreak;\n\tcase ExpressionValueCombination::IF:\n\t\tresult.type = ExpressionValueType::Float;\n\t\tresult.floatValue = intValue + other.floatValue;\n\t\tbreak;\n\tcase ExpressionValueCombination::FF:\n\t\tresult.type = ExpressionValueType::Float;\n\t\tresult.floatValue = floatValue + other.floatValue;\n\t\tbreak;\n\tcase ExpressionValueCombination::IS:\n\t\tresult.type = ExpressionValueType::String;\n\t\tresult.strValue = to_wstring(intValue) + other.strValue;\n\t\tbreak;\n\tcase ExpressionValueCombination::FS:\n\t\tresult.type = ExpressionValueType::String;\n\t\tresult.strValue = to_wstring(floatValue) + other.strValue;\n\t\tbreak;\n\tcase ExpressionValueCombination::SI:\n\t\tresult.type = ExpressionValueType::String;\n\t\tresult.strValue = strValue + to_wstring(other.intValue);\n\t\tbreak;\n\tcase ExpressionValueCombination::SF:\n\t\tresult.type = ExpressionValueType::String;\n\t\tresult.strValue = strValue + to_wstring(other.floatValue);\n\t\tbreak;\n\tcase ExpressionValueCombination::SS:\n\t\tresult.type = ExpressionValueType::String;\n\t\tresult.strValue = strValue + other.strValue;\n\t\tbreak;\n\t}\n\n\treturn result;\n}\n\nExpressionValue ExpressionValue::operator-(const ExpressionValue& other) const\n{\n\tExpressionValue result;\n\tswitch (getValueCombination(type,other.type))\n\t{\n\tcase ExpressionValueCombination::II:\n\t\tresult.type = ExpressionValueType::Integer;\n\t\tresult.intValue = intValue - other.intValue;\n\t\tbreak;\n\tcase ExpressionValueCombination::FI:\n\t\tresult.type = ExpressionValueType::Float;\n\t\tresult.floatValue = floatValue - other.intValue;\n\t\tbreak;\n\tcase ExpressionValueCombination::IF:\n\t\tresult.type = ExpressionValueType::Float;\n\t\tresult.floatValue = intValue - other.floatValue;\n\t\tbreak;\n\tcase ExpressionValueCombination::FF:\n\t\tresult.type = ExpressionValueType::Float;\n\t\tresult.floatValue = floatValue - other.floatValue;\n\t\tbreak;\n\tdefault:\n\t\tbreak;\n\t}\n\n\treturn result;\n}\n\nExpressionValue ExpressionValue::operator*(const ExpressionValue& other) const\n{\n\tExpressionValue result;\n\tswitch (getValueCombination(type,other.type))\n\t{\n\tcase ExpressionValueCombination::II:\n\t\tresult.type = ExpressionValueType::Integer;\n\t\tresult.intValue = intValue * other.intValue;\n\t\tbreak;\n\tcase ExpressionValueCombination::FI:\n\t\tresult.type = ExpressionValueType::Float;\n\t\tresult.floatValue = floatValue * other.intValue;\n\t\tbreak;\n\tcase ExpressionValueCombination::IF:\n\t\tresult.type = ExpressionValueType::Float;\n\t\tresult.floatValue = intValue * other.floatValue;\n\t\tbreak;\n\tcase ExpressionValueCombination::FF:\n\t\tresult.type = ExpressionValueType::Float;\n\t\tresult.floatValue = floatValue * other.floatValue;\n\t\tbreak;\n\tdefault:\n\t\tbreak;\n\t}\n\n\treturn result;\n}\n\nExpressionValue ExpressionValue::operator/(const ExpressionValue& other) const\n{\n\tExpressionValue result;\n\tswitch (getValueCombination(type,other.type))\n\t{\n\tcase ExpressionValueCombination::II:\n\t\tresult.type = ExpressionValueType::Integer;\n\t\tif (intValue == INT64_MIN && other.intValue == -1){\n\t\t\tresult.intValue = INT64_MIN;\n\t\t\tLogger::queueError(Logger::Warning,L\"Division overflow in expression\");\n\t\t\treturn result;\n\t\t}\n\t\tif (other.intValue == 0)\n\t\t{\n\t\t\tresult.intValue = ~0;\n\t\t\tLogger::queueError(Logger::Warning,L\"Integer division by zero in expression\");\n\t\t\treturn result;\n\t\t}\n\t\tresult.intValue = intValue / other.intValue;\n\t\tbreak;\n\tcase ExpressionValueCombination::FI:\n\t\tresult.type = ExpressionValueType::Float;\n\t\tresult.floatValue = floatValue / other.intValue;\n\t\tbreak;\n\tcase ExpressionValueCombination::IF:\n\t\tresult.type = ExpressionValueType::Float;\n\t\tresult.floatValue = intValue / other.floatValue;\n\t\tbreak;\n\tcase ExpressionValueCombination::FF:\n\t\tresult.type = ExpressionValueType::Float;\n\t\tresult.floatValue = floatValue / other.floatValue;\n\t\tbreak;\n\tdefault:\n\t\tbreak;\n\t}\n\n\treturn result;\n}\n\nExpressionValue ExpressionValue::operator%(const ExpressionValue& other) const\n{\n\tExpressionValue result;\n\tswitch (getValueCombination(type,other.type))\n\t{\n\tcase ExpressionValueCombination::II:\n\t\tresult.type = ExpressionValueType::Integer;\n\t\tif (intValue == INT64_MIN && other.intValue == -1){\n\t\t\tresult.intValue = 0;\n\t\t\tLogger::queueError(Logger::Warning,L\"Division overflow in expression\");\n\t\t\treturn result;\n\t\t}\n\t\tif (other.intValue == 0)\n\t\t{\n\t\t\tresult.intValue = intValue;\n\t\t\tLogger::queueError(Logger::Warning,L\"Integer division by zero in expression\");\n\t\t\treturn result;\n\t\t}\n\t\tresult.intValue = intValue % other.intValue;\n\t\tbreak;\n\tdefault:\n\t\tbreak;\n\t}\n\n\treturn result;\n}\n\nExpressionValue ExpressionValue::operator!() const\n{\n\tExpressionValue result;\n\tresult.type = ExpressionValueType::Integer;\n\n\tif (isFloat())\n\t\tresult.intValue = !floatValue;\n\telse\n\t\tresult.intValue = !intValue;\n\n\treturn result;\n}\n\nExpressionValue ExpressionValue::operator~() const\n{\n\tExpressionValue result;\n\n\tif (isInt())\n\t{\n\t\tresult.type = ExpressionValueType::Integer;\n\t\tresult.intValue = ~intValue;\n\t}\n\n\treturn result;\n}\n\nExpressionValue ExpressionValue::operator<<(const ExpressionValue& other) const\n{\n\tExpressionValue result;\n\tswitch (getValueCombination(type,other.type))\n\t{\n\tcase ExpressionValueCombination::II:\n\t\tresult.type = ExpressionValueType::Integer;\n\t\tresult.intValue = ((uint64_t) intValue) << other.intValue;\n\t\tbreak;\n\tdefault:\n\t\tbreak;\n\t}\n\n\treturn result;\n}\n\nExpressionValue ExpressionValue::operator>>(const ExpressionValue& other) const\n{\n\tExpressionValue result;\n\tswitch (getValueCombination(type,other.type))\n\t{\n\tcase ExpressionValueCombination::II:\n\t\tresult.type = ExpressionValueType::Integer;\n\t\tresult.intValue = ((uint64_t) intValue) >> other.intValue;\n\t\tbreak;\n\tdefault:\n\t\tbreak;\n\t}\n\n\treturn result;\n}\n\nbool ExpressionValue::operator<(const ExpressionValue& other) const\n{\n\tswitch (getValueCombination(type,other.type))\n\t{\n\tcase ExpressionValueCombination::II:\n\t\treturn intValue < other.intValue;\n\tcase ExpressionValueCombination::FI:\n\t\treturn floatValue < other.intValue;\n\tcase ExpressionValueCombination::IF:\n\t\treturn intValue < other.floatValue;\n\tcase ExpressionValueCombination::FF:\n\t\treturn floatValue < other.floatValue;\n\tcase ExpressionValueCombination::SS:\n\t\treturn strValue < other.strValue;\n\tdefault:\n\t\tbreak;\n\t}\n\n\treturn false;\n}\n\nbool ExpressionValue::operator<=(const ExpressionValue& other) const\n{\n\tswitch (getValueCombination(type,other.type))\n\t{\n\tcase ExpressionValueCombination::II:\n\t\treturn intValue <= other.intValue;\n\tcase ExpressionValueCombination::FI:\n\t\treturn floatValue <= other.intValue;\n\tcase ExpressionValueCombination::IF:\n\t\treturn intValue <= other.floatValue;\n\tcase ExpressionValueCombination::FF:\n\t\treturn floatValue <= other.floatValue;\n\tcase ExpressionValueCombination::SS:\n\t\treturn strValue <= other.strValue;\n\tdefault:\n\t\tbreak;\n\t}\n\n\treturn false;\n}\n\nbool ExpressionValue::operator>(const ExpressionValue& other) const\n{\n\treturn other < *this;\n}\n\nbool ExpressionValue::operator>=(const ExpressionValue& other) const\n{\n\treturn other <= *this;\n}\n\nbool ExpressionValue::operator==(const ExpressionValue& other) const\n{\n\tswitch (getValueCombination(type,other.type))\n\t{\n\tcase ExpressionValueCombination::II:\n\t\treturn intValue == other.intValue;\n\tcase ExpressionValueCombination::FI:\n\t\treturn floatValue == other.intValue;\n\tcase ExpressionValueCombination::IF:\n\t\treturn intValue == other.floatValue;\n\tcase ExpressionValueCombination::FF:\n\t\treturn floatValue == other.floatValue;\n\tcase ExpressionValueCombination::IS:\n\t\treturn to_wstring(intValue) == other.strValue;\n\tcase ExpressionValueCombination::FS:\n\t\treturn to_wstring(floatValue) == other.strValue;\n\tcase ExpressionValueCombination::SI:\n\t\treturn strValue == to_wstring(other.intValue);\n\tcase ExpressionValueCombination::SF:\n\t\treturn strValue == to_wstring(other.floatValue);\n\tcase ExpressionValueCombination::SS:\n\t\treturn strValue == other.strValue;\n\t}\n\n\treturn false;\n}\n\nbool ExpressionValue::operator!=(const ExpressionValue& other) const\n{\n\treturn !(*this == other);\n}\n\nExpressionValue ExpressionValue::operator&(const ExpressionValue& other) const\n{\n\tExpressionValue result;\n\tswitch (getValueCombination(type,other.type))\n\t{\n\tcase ExpressionValueCombination::II:\n\t\tresult.type = ExpressionValueType::Integer;\n\t\tresult.intValue = intValue & other.intValue;\n\t\tbreak;\n\tdefault:\n\t\tbreak;\n\t}\n\n\treturn result;\n}\n\nExpressionValue ExpressionValue::operator|(const ExpressionValue& other) const\n{\n\tExpressionValue result;\n\tswitch (getValueCombination(type,other.type))\n\t{\n\tcase ExpressionValueCombination::II:\n\t\tresult.type = ExpressionValueType::Integer;\n\t\tresult.intValue = intValue | other.intValue;\n\t\tbreak;\n\tdefault:\n\t\tbreak;\n\t}\n\n\treturn result;\n}\n\nExpressionValue ExpressionValue::operator^(const ExpressionValue& other) const\n{\n\tExpressionValue result;\n\tswitch (getValueCombination(type,other.type))\n\t{\n\tcase ExpressionValueCombination::II:\n\t\tresult.type = ExpressionValueType::Integer;\n\t\tresult.intValue = intValue ^ other.intValue;\n\t\tbreak;\n\tdefault:\n\t\tbreak;\n\t}\n\n\treturn result;\n}\n\nExpressionValue ExpressionValue::operator&&(const ExpressionValue& other) const\n{\n\tExpressionValue result;\n\tresult.type = ExpressionValueType::Integer;\n\n\tswitch (getValueCombination(type,other.type))\n\t{\n\tcase ExpressionValueCombination::II:\n\t\tresult.intValue = intValue && other.intValue;\n\t\tbreak;\n\tcase ExpressionValueCombination::FI:\n\t\tresult.floatValue = floatValue && other.intValue;\n\t\tbreak;\n\tcase ExpressionValueCombination::IF:\n\t\tresult.floatValue = intValue && other.floatValue;\n\t\tbreak;\n\tcase ExpressionValueCombination::FF:\n\t\tresult.floatValue = floatValue && other.floatValue;\n\t\tbreak;\n\tdefault:\n\t\tbreak;\n\t}\n\n\treturn result;\n}\n\nExpressionValue ExpressionValue::operator||(const ExpressionValue& other) const\n{\n\tExpressionValue result;\n\tresult.type = ExpressionValueType::Integer;\n\n\tswitch (getValueCombination(type,other.type))\n\t{\n\tcase ExpressionValueCombination::II:\n\t\tresult.intValue = intValue || other.intValue;\n\t\tbreak;\n\tcase ExpressionValueCombination::FI:\n\t\tresult.floatValue = floatValue || other.intValue;\n\t\tbreak;\n\tcase ExpressionValueCombination::IF:\n\t\tresult.floatValue = intValue || other.floatValue;\n\t\tbreak;\n\tcase ExpressionValueCombination::FF:\n\t\tresult.floatValue = floatValue || other.floatValue;\n\t\tbreak;\n\tdefault:\n\t\tbreak;\n\t}\n\n\treturn result;\n}\n\nExpressionInternal::ExpressionInternal()\n{\n\tchildren = nullptr;\n\tchildrenCount = 0;\n}\n\nExpressionInternal::~ExpressionInternal()\n{\n\tdeallocate();\n}\n\nExpressionInternal::ExpressionInternal(int64_t value)\n\t: ExpressionInternal()\n{\n\ttype = OperatorType::Integer;\n\tintValue = value;\n}\n\nExpressionInternal::ExpressionInternal(double value)\n\t: ExpressionInternal()\n{\n\ttype = OperatorType::Float;\n\tfloatValue = value;\n}\n\nExpressionInternal::ExpressionInternal(const std::wstring& value, OperatorType type)\n\t: ExpressionInternal()\n{\n\tthis->type = type;\n\tstrValue = value;\n\n\tswitch (type)\n\t{\n\tcase OperatorType::Identifier:\n\t\tfileNum = Global.FileInfo.FileNum;\n\t\tsection = Global.Section;\n\t\tbreak;\n\tcase OperatorType::String:\n\t\tbreak;\n\tdefault:\n\t\tbreak;\n\t}\n}\n\nExpressionInternal::ExpressionInternal(OperatorType op, ExpressionInternal* a,\n\tExpressionInternal* b, ExpressionInternal* c)\n\t: ExpressionInternal()\n{\n\ttype = op;\n\tallocate(3);\n\n\tchildren[0] = a;\n\tchildren[1] = b;\n\tchildren[2] = c;\n}\n\nExpressionInternal::ExpressionInternal(const std::wstring& name, const std::vector<ExpressionInternal*>& parameters)\n\t: ExpressionInternal()\n{\n\ttype = OperatorType::FunctionCall;\n\tallocate(parameters.size());\n\n\tstrValue = name;\n\tfor (size_t i = 0; i < parameters.size(); i++)\n\t{\n\t\tchildren[i] = parameters[i];\n\t}\n}\n\nvoid ExpressionInternal::allocate(size_t count)\n{\n\tdeallocate();\n\n\tchildren = new ExpressionInternal*[count];\n\tchildrenCount = count;\n}\n\nvoid ExpressionInternal::deallocate()\n{\n\tfor (size_t i = 0; i < childrenCount; i++)\n\t{\n\t\tdelete children[i];\n\t}\n\n\tdelete[] children;\n\tchildren = nullptr;\n\tchildrenCount = 0;\n}\n\nvoid ExpressionInternal::replaceMemoryPos(const std::wstring& identifierName)\n{\n\tfor (size_t i = 0; i < childrenCount; i++)\n\t{\n\t\tif (children[i] != nullptr)\n\t\t{\n\t\t\tchildren[i]->replaceMemoryPos(identifierName);\n\t\t}\n\t}\n\n\tif (type == OperatorType::MemoryPos)\n\t{\n\t\ttype = OperatorType::Identifier;\n\t\tstrValue = identifierName;\n\t\tfileNum = Global.FileInfo.FileNum;\n\t\tsection = Global.Section;\n\t}\n}\n\nbool ExpressionInternal::checkParameterCount(size_t minParams, size_t maxParams)\n{\n\tif (minParams > childrenCount)\n\t{\n\t\tLogger::queueError(Logger::Error,L\"Not enough parameters for \\\"%s\\\" (min %d)\",strValue,minParams);\n\t\treturn false;\n\t}\n\n\tif (maxParams < childrenCount)\n\t{\n\t\tLogger::queueError(Logger::Error,L\"Too many parameters for \\\"%s\\\" (min %d)\",strValue,maxParams);\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\nExpressionValue ExpressionInternal::executeExpressionFunctionCall(const ExpressionFunctionEntry& entry)\n{\n\t// check parameters\n\tif (!checkParameterCount(entry.minParams, entry.maxParams))\n\t\treturn {};\n\n\t// evaluate parameters\n\tstd::vector<ExpressionValue> params;\n\tparams.reserve(childrenCount);\n\n\tfor (size_t i = 0; i < childrenCount; i++)\n\t{\n\t\tExpressionValue result = children[i]->evaluate();\n\t\tif (!result.isValid())\n\t\t{\n\t\t\tLogger::queueError(Logger::Error,L\"%s: Invalid parameter %d\", strValue, i+1);\n\t\t\treturn result;\n\t\t}\n\n\t\tparams.push_back(result);\n\t}\n\n\t// execute\n\treturn entry.function(strValue, params);\n}\n\nExpressionValue ExpressionInternal::executeExpressionLabelFunctionCall(const ExpressionLabelFunctionEntry& entry)\n{\n\t// check parameters\n\tif (!checkParameterCount(entry.minParams, entry.maxParams))\n\t\treturn {};\n\n\t// evaluate parameters\n\tstd::vector<std::shared_ptr<Label>> params;\n\tparams.reserve(childrenCount);\n\n\tfor (size_t i = 0; i < childrenCount; i++)\n\t{\n\t\tExpressionInternal *exp = children[i];\n\t\tif (!exp || !exp->isIdentifier())\n\t\t{\n\t\t\tLogger::queueError(Logger::Error,L\"%s: Invalid parameter %d, expecting identifier\", strValue, i+1);\n\t\t\treturn {};\n\t\t}\n\n\t\tconst std::wstring& name = exp->getStringValue();\n\t\tstd::shared_ptr<Label> label = Global.symbolTable.getLabel(name,exp->getFileNum(),exp->getSection());\n\t\tparams.push_back(label);\n\t}\n\n\t// execute\n\treturn entry.function(strValue, params);\n}\n\nExpressionValue ExpressionInternal::executeFunctionCall()\n{\n\t// try expression functions\n\tauto expFuncIt = expressionFunctions.find(strValue);\n\tif (expFuncIt != expressionFunctions.end())\n\t\treturn executeExpressionFunctionCall(expFuncIt->second);\n\n\t// try expression label functions\n\tauto expLabelFuncIt = expressionLabelFunctions.find(strValue);\n\tif (expLabelFuncIt != expressionLabelFunctions.end())\n\t\treturn executeExpressionLabelFunctionCall(expLabelFuncIt->second);\n\n\t// try architecture specific expression functions\n\tauto& archExpressionFunctions = Arch->getExpressionFunctions();\n\texpFuncIt = archExpressionFunctions.find(strValue);\n\tif (expFuncIt != archExpressionFunctions.end())\n\t\treturn executeExpressionFunctionCall(expFuncIt->second);\n\n\t// error\n\tLogger::queueError(Logger::Error, L\"Unknown function \\\"%s\\\"\", strValue);\n\treturn {};\n}\n\nbool isExpressionFunctionSafe(const std::wstring& name, bool inUnknownOrFalseBlock)\n{\n\t// expression functions may be unsafe, others are safe\n\tExpFuncSafety safety = ExpFuncSafety::Unsafe;\n\tbool found = false;\n\n\tauto it = expressionFunctions.find(name);\n\tif (it != expressionFunctions.end())\n\t{\n\t\tsafety = it->second.safety;\n\t\tfound = true;\n\t}\n\n\tif (!found)\n\t{\n\t\tauto labelIt = expressionLabelFunctions.find(name);\n\t\tif (labelIt != expressionLabelFunctions.end())\n\t\t{\n\t\t\tsafety = labelIt->second.safety;\n\t\t\tfound = true;\n\t\t}\n\t}\n\n\tif (!found)\n\t{\n\t\tauto& archExpressionFunctions = Arch->getExpressionFunctions();\n\t\tit = archExpressionFunctions.find(name);\n\t\tif (it != archExpressionFunctions.end())\n\t\t{\n\t\t\tsafety = it->second.safety;\n\t\t\tfound = true;\n\t\t}\n\t}\n\n\tif (inUnknownOrFalseBlock && safety == ExpFuncSafety::ConditionalUnsafe)\n\t\treturn false;\n\n\treturn safety != ExpFuncSafety::Unsafe;\n}\n\nbool ExpressionInternal::simplify(bool inUnknownOrFalseBlock)\n{\n\t// check if this expression can actually be simplified\n\t// without causing side effects\n\tswitch (type)\n\t{\n\tcase OperatorType::Identifier:\n\tcase OperatorType::MemoryPos:\n\tcase OperatorType::ToString:\n\t\treturn false;\n\tcase OperatorType::FunctionCall:\n\t\tif (isExpressionFunctionSafe(strValue, inUnknownOrFalseBlock) == false)\n\t\t\treturn false;\n\t\tbreak;\n\tdefault:\n\t\tbreak;\n\t}\n\n\t// check if the same applies to all children\n\tbool canSimplify = true;\n\tfor (size_t i = 0; i < childrenCount; i++)\n\t{\n\t\tif (children[i] != nullptr && children[i]->simplify(inUnknownOrFalseBlock) == false)\n\t\t\tcanSimplify = false;\n\t}\n\n\t// if so, this expression can be evaluated into a constant\n\tif (canSimplify)\n\t{\n\t\tExpressionValue value = evaluate();\n\n\t\tswitch (value.type)\n\t\t{\n\t\tcase ExpressionValueType::Integer:\n\t\t\ttype = OperatorType::Integer;\n\t\t\tintValue = value.intValue;\n\t\t\tbreak;\n\t\tcase ExpressionValueType::Float:\n\t\t\ttype = OperatorType::Float;\n\t\t\tfloatValue = value.floatValue;\n\t\t\tbreak;\n\t\tcase ExpressionValueType::String:\n\t\t\ttype = OperatorType::String;\n\t\t\tstrValue = value.strValue;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\ttype = OperatorType::Invalid;\n\t\t\tbreak;\n\t\t}\n\n\t\tdeallocate();\n\t}\n\n\treturn canSimplify;\n}\n\nExpressionValue ExpressionInternal::evaluate()\n{\n\tExpressionValue val;\n\n\tstd::shared_ptr<Label> label;\n\tswitch (type)\n\t{\n\tcase OperatorType::Integer:\n\t\tval.type = ExpressionValueType::Integer;\n\t\tval.intValue = intValue;\n\t\treturn val;\n\tcase OperatorType::Float:\n\t\tval.type = ExpressionValueType::Float;\n\t\tval.floatValue = floatValue;\n\t\treturn val;\n\tcase OperatorType::Identifier:\n\t\tlabel = Global.symbolTable.getLabel(strValue,fileNum,section);\n\t\tif (label == nullptr)\n\t\t{\n\t\t\tLogger::queueError(Logger::Error,L\"Invalid label name \\\"%s\\\"\",strValue);\n\t\t\treturn val;\n\t\t}\n\n\t\tif (!label->isDefined())\n\t\t{\n\t\t\tLogger::queueError(Logger::Error,L\"Undefined label \\\"%s\\\"\",label->getName());\n\t\t\treturn val;\n\t\t}\n\n\t\tval.type = ExpressionValueType::Integer;\n\t\tval.intValue = label->getValue();\n\t\treturn val;\n\tcase OperatorType::String:\n\t\tval.type = ExpressionValueType::String;\n\t\tval.strValue = strValue;\n\t\treturn val;\n\tcase OperatorType::MemoryPos:\n\t\tval.type = ExpressionValueType::Integer;\n\t\tval.intValue = g_fileManager->getVirtualAddress();\n\t\treturn val;\n\tcase OperatorType::ToString:\n\t\tval.type = ExpressionValueType::String;\n\t\tval.strValue = children[0]->toString();\n\t\treturn val;\n\tcase OperatorType::Add:\n\t\treturn children[0]->evaluate() + children[1]->evaluate();\n\tcase OperatorType::Sub:\n\t\treturn children[0]->evaluate() - children[1]->evaluate();\n\tcase OperatorType::Mult:\n\t\treturn children[0]->evaluate() * children[1]->evaluate();\n\tcase OperatorType::Div:\n\t\treturn children[0]->evaluate() / children[1]->evaluate();\n\tcase OperatorType::Mod:\n\t\treturn children[0]->evaluate() % children[1]->evaluate();\n\tcase OperatorType::Neg:\n\t\tval.type = ExpressionValueType::Integer;\n\t\tval.intValue = 0;\n\t\treturn val - children[0]->evaluate();\n\tcase OperatorType::LogNot:\n\t\treturn !children[0]->evaluate();\n\tcase OperatorType::BitNot:\n\t\treturn ~children[0]->evaluate();\n\tcase OperatorType::LeftShift:\n\t\treturn children[0]->evaluate() << children[1]->evaluate();\n\tcase OperatorType::RightShift:\n\t\treturn children[0]->evaluate() >> children[1]->evaluate();\n\tcase OperatorType::Less:\n\t\tval.type = ExpressionValueType::Integer;\n\t\tval.intValue = children[0]->evaluate() < children[1]->evaluate();\n\t\treturn val;\n\tcase OperatorType::Greater:\n\t\tval.type = ExpressionValueType::Integer;\n\t\tval.intValue = children[0]->evaluate() > children[1]->evaluate();\n\t\treturn val;\n\tcase OperatorType::LessEqual:\n\t\tval.type = ExpressionValueType::Integer;\n\t\tval.intValue = children[0]->evaluate() <= children[1]->evaluate();\n\t\treturn val;\n\tcase OperatorType::GreaterEqual:\n\t\tval.type = ExpressionValueType::Integer;\n\t\tval.intValue = children[0]->evaluate() >= children[1]->evaluate();\n\t\treturn val;\n\tcase OperatorType::Equal:\n\t\tval.type = ExpressionValueType::Integer;\n\t\tval.intValue = children[0]->evaluate() == children[1]->evaluate();\n\t\treturn val;\n\tcase OperatorType::NotEqual:\n\t\tval.type = ExpressionValueType::Integer;\n\t\tval.intValue = children[0]->evaluate() != children[1]->evaluate();\n\t\treturn val;\n\tcase OperatorType::BitAnd:\n\t\treturn children[0]->evaluate() & children[1]->evaluate();\n\tcase OperatorType::BitOr:\n\t\treturn children[0]->evaluate() | children[1]->evaluate();\n\tcase OperatorType::LogAnd:\n\t\treturn children[0]->evaluate() && children[1]->evaluate();\n\tcase OperatorType::LogOr:\n\t\treturn children[0]->evaluate() || children[1]->evaluate();\n\tcase OperatorType::Xor:\n\t\treturn children[0]->evaluate() ^ children[1]->evaluate();\n\tcase OperatorType::TertiaryIf:\n\t\tval.type = ExpressionValueType::Integer;\n\t\tval.intValue = 0;\n\t\tif (children[0]->evaluate() == val)\n\t\t\treturn children[2]->evaluate();\n\t\telse\n\t\t\treturn children[1]->evaluate();\n\tcase OperatorType::FunctionCall:\n\t\treturn executeFunctionCall();\n\tdefault:\n\t\treturn val;\n\t}\n}\n\nstatic std::wstring escapeString(const std::wstring& text)\n{\n\tstd::wstring result = text;\n\treplaceAll(result,LR\"(\\)\",LR\"(\\\\)\");\n\treplaceAll(result,LR\"(\")\",LR\"(\\\")\");\n\n\treturn formatString(LR\"(\"%s\")\",text);\n}\n\nstd::wstring ExpressionInternal::formatFunctionCall()\n{\n\tstd::wstring text = strValue + L\"(\";\n\n\tfor (size_t i = 0; i < childrenCount; i++)\n\t{\n\t\tif (i != 0)\n\t\t\ttext += L\",\";\n\t\ttext += children[i]->toString();\n\t}\n\n\treturn text + L\")\";\n}\n\nstd::wstring ExpressionInternal::toString()\n{\n\tswitch (type)\n\t{\n\tcase OperatorType::Integer:\n\t\treturn formatString(L\"%d\",intValue);\n\tcase OperatorType::Float:\n\t\treturn formatString(L\"%g\",floatValue);\n\tcase OperatorType::Identifier:\n\t\treturn strValue;\n\tcase OperatorType::String:\n\t\treturn escapeString(strValue);\n\tcase OperatorType::MemoryPos:\n\t\treturn L\".\";\n\tcase OperatorType::Add:\n\t\treturn formatString(L\"(%s + %s)\",children[0]->toString(),children[1]->toString());\n\tcase OperatorType::Sub:\n\t\treturn formatString(L\"(%s - %s)\",children[0]->toString(),children[1]->toString());\n\tcase OperatorType::Mult:\n\t\treturn formatString(L\"(%s * %s)\",children[0]->toString(),children[1]->toString());\n\tcase OperatorType::Div:\n\t\treturn formatString(L\"(%s / %s)\",children[0]->toString(),children[1]->toString());\n\tcase OperatorType::Mod:\n\t\treturn formatString(L\"(%s %% %s)\",children[0]->toString(),children[1]->toString());\n\tcase OperatorType::Neg:\n\t\treturn formatString(L\"(-%s)\",children[0]->toString());\n\tcase OperatorType::LogNot:\n\t\treturn formatString(L\"(!%s)\",children[0]->toString());\n\tcase OperatorType::BitNot:\n\t\treturn formatString(L\"(~%s)\",children[0]->toString());\n\tcase OperatorType::LeftShift:\n\t\treturn formatString(L\"(%s << %s)\",children[0]->toString(),children[1]->toString());\n\tcase OperatorType::RightShift:\n\t\treturn formatString(L\"(%s >> %s)\",children[0]->toString(),children[1]->toString());\n\tcase OperatorType::Less:\n\t\treturn formatString(L\"(%s < %s)\",children[0]->toString(),children[1]->toString());\n\tcase OperatorType::Greater:\n\t\treturn formatString(L\"(%s > %s)\",children[0]->toString(),children[1]->toString());\n\tcase OperatorType::LessEqual:\n\t\treturn formatString(L\"(%s <= %s)\",children[0]->toString(),children[1]->toString());\n\tcase OperatorType::GreaterEqual:\n\t\treturn formatString(L\"(%s >= %s)\",children[0]->toString(),children[1]->toString());\n\tcase OperatorType::Equal:\n\t\treturn formatString(L\"(%s == %s)\",children[0]->toString(),children[1]->toString());\n\tcase OperatorType::NotEqual:\n\t\treturn formatString(L\"(%s != %s)\",children[0]->toString(),children[1]->toString());\n\tcase OperatorType::BitAnd:\n\t\treturn formatString(L\"(%s & %s)\",children[0]->toString(),children[1]->toString());\n\tcase OperatorType::BitOr:\n\t\treturn formatString(L\"(%s | %s)\",children[0]->toString(),children[1]->toString());\n\tcase OperatorType::LogAnd:\n\t\treturn formatString(L\"(%s && %s)\",children[0]->toString(),children[1]->toString());\n\tcase OperatorType::LogOr:\n\t\treturn formatString(L\"(%s || %s)\",children[0]->toString(),children[1]->toString());\n\tcase OperatorType::Xor:\n\t\treturn formatString(L\"(%s ^ %s)\",children[0]->toString(),children[1]->toString());\n\tcase OperatorType::TertiaryIf:\n\t\treturn formatString(L\"(%s ? %s : %s)\",children[0]->toString(),children[1]->toString(),children[2]->toString());\n\tcase OperatorType::ToString:\n\t\treturn formatString(L\"(%c%s)\",L'\\U000000B0',children[0]->toString());\n\tcase OperatorType::FunctionCall:\n\t\treturn formatFunctionCall();\n\tdefault:\n\t\treturn L\"\";\n\t}\n}\n\nExpression::Expression()\n{\n\texpression = nullptr;\n\tconstExpression = true;\n}\n\nvoid Expression::setExpression(ExpressionInternal* exp, bool inUnknownOrFalseBlock)\n{\n\texpression = std::shared_ptr<ExpressionInternal>(exp);\n\tif (exp != nullptr)\n\t\tconstExpression = expression->simplify(inUnknownOrFalseBlock);\n\telse\n\t\tconstExpression = true;\n}\n\nExpressionValue Expression::evaluate()\n{\n\tif (expression == nullptr)\n\t{\n\t\tExpressionValue invalid;\n\t\treturn invalid;\n\t}\n\n\treturn expression->evaluate();\n}\n\nvoid Expression::replaceMemoryPos(const std::wstring& identifierName)\n{\n\tif (expression != nullptr)\n\t\texpression->replaceMemoryPos(identifierName);\n}\n\nExpression createConstExpression(int64_t value)\n{\n\tExpression exp;\n\tExpressionInternal* num = new ExpressionInternal(value);\n\texp.setExpression(num,false);\n\treturn exp;\n}\n\n// file: Core/ExpressionFunctions.cpp\n#if ARMIPS_REGEXP\n#include <regex>\n#endif\n\nbool getExpFuncParameter(const std::vector<ExpressionValue>& parameters, size_t index, int64_t& dest,\n\tconst std::wstring& funcName, bool optional)\n{\n\tif (optional && index >= parameters.size())\n\t\treturn true;\n\n\tif (index >= parameters.size() || parameters[index].isInt() == false)\n\t{\n\t\tLogger::queueError(Logger::Error,L\"Invalid parameter %d for %s: expecting integer\",index+1,funcName);\n\t\treturn false;\n\t}\n\n\tdest = parameters[index].intValue;\n\treturn true;\n}\n\nbool getExpFuncParameter(const std::vector<ExpressionValue>& parameters, size_t index, const std::wstring*& dest,\n\tconst std::wstring& funcName, bool optional)\n{\n\tif (optional && index >= parameters.size())\n\t\treturn true;\n\n\tif (index >= parameters.size() || parameters[index].isString() == false)\n\t{\n\t\tLogger::queueError(Logger::Error,L\"Invalid parameter %d for %s: expecting string\",index+1,funcName);\n\t\treturn false;\n\t}\n\n\tdest = &parameters[index].strValue;\n\treturn true;\n}\n\n#define GET_PARAM(params,index,dest) \\\n\tif (getExpFuncParameter(params,index,dest,funcName,false) == false) \\\n\t\treturn ExpressionValue();\n#define GET_OPTIONAL_PARAM(params,index,dest,defaultValue) \\\n\tdest = defaultValue; \\\n\tif (getExpFuncParameter(params,index,dest,funcName,true) == false) \\\n\t\treturn ExpressionValue();\n\n\nExpressionValue expFuncVersion(const std::wstring& funcName, const std::vector<ExpressionValue>& parameters)\n{\n\tint64_t value = ARMIPS_VERSION_MAJOR*1000 + ARMIPS_VERSION_MINOR*10 + ARMIPS_VERSION_REVISION;\n\treturn ExpressionValue(value);\n}\n\nExpressionValue expFuncEndianness(const std::wstring& funcName, const std::vector<ExpressionValue>& parameters)\n{\n\tExpressionValue result;\n\tresult.type = ExpressionValueType::String;\n\n\tswitch (g_fileManager->getEndianness())\n\t{\n\tcase Endianness::Little:\n\t\treturn ExpressionValue(L\"little\");\n\tcase Endianness::Big:\n\t\treturn ExpressionValue(L\"big\");\n\t}\n\n\treturn ExpressionValue();\n}\n\nExpressionValue expFuncOutputName(const std::wstring& funcName, const std::vector<ExpressionValue>& parameters)\n{\n\tstd::shared_ptr<AssemblerFile> file = g_fileManager->getOpenFile();\n\tif (file == nullptr)\n\t{\n\t\tLogger::queueError(Logger::Error,L\"outputName: no file opened\");\n\t\treturn ExpressionValue();\n\t}\n\n\tstd::wstring value = file->getFileName();\n\treturn ExpressionValue(value);\n}\n\nExpressionValue expFuncFileExists(const std::wstring& funcName, const std::vector<ExpressionValue>& parameters)\n{\n\tconst std::wstring* fileName;\n\tGET_PARAM(parameters,0,fileName);\n\n\tstd::wstring fullName = getFullPathName(*fileName);\n\treturn ExpressionValue(fileExists(fullName) ? INT64_C(1) : INT64_C(0));\n}\n\nExpressionValue expFuncFileSize(const std::wstring& funcName, const std::vector<ExpressionValue>& parameters)\n{\n\tconst std::wstring* fileName;\n\tGET_PARAM(parameters,0,fileName);\n\n\tstd::wstring fullName = getFullPathName(*fileName);\n\treturn ExpressionValue((int64_t) fileSize(fullName));\n}\n\nExpressionValue expFuncToString(const std::wstring& funcName, const std::vector<ExpressionValue>& parameters)\n{\n\tExpressionValue result;\n\n\tswitch (parameters[0].type)\n\t{\n\tcase ExpressionValueType::String:\n\t\tresult.strValue = parameters[0].strValue;\n\t\tbreak;\n\tcase ExpressionValueType::Integer:\n\t\tresult.strValue = formatString(L\"%d\",parameters[0].intValue);\n\t\tbreak;\n\tcase ExpressionValueType::Float:\n\t\tresult.strValue = formatString(L\"%#.17g\",parameters[0].floatValue);\n\t\tbreak;\n\tdefault:\n\t\treturn result;\n\t}\n\n\tresult.type = ExpressionValueType::String;\n\treturn result;\n}\n\nExpressionValue expFuncToHex(const std::wstring& funcName, const std::vector<ExpressionValue>& parameters)\n{\n\tint64_t value, digits;\n\tGET_PARAM(parameters,0,value);\n\tGET_OPTIONAL_PARAM(parameters,1,digits,8);\n\n\treturn ExpressionValue(formatString(L\"%0*X\",digits,value));\n}\n\nExpressionValue expFuncInt(const std::wstring& funcName, const std::vector<ExpressionValue>& parameters)\n{\n\tExpressionValue result;\n\n\tswitch (parameters[0].type)\n\t{\n\tcase ExpressionValueType::Integer:\n\t\tresult.intValue = parameters[0].intValue;\n\t\tbreak;\n\tcase ExpressionValueType::Float:\n\t\tresult.intValue = (int64_t) parameters[0].floatValue;\n\t\tbreak;\n\tdefault:\n\t\treturn result;\n\t}\n\n\tresult.type = ExpressionValueType::Integer;\n\treturn result;\n}\n\nExpressionValue expFuncRound(const std::wstring& funcName, const std::vector<ExpressionValue>& parameters)\n{\n\tExpressionValue result;\n\n\tswitch (parameters[0].type)\n\t{\n\tcase ExpressionValueType::Integer:\n\t\tresult.intValue = parameters[0].intValue;\n\t\tbreak;\n\tcase ExpressionValueType::Float:\n\t\tresult.intValue = llround(parameters[0].floatValue);\n\t\tbreak;\n\tdefault:\n\t\treturn result;\n\t}\n\n\tresult.type = ExpressionValueType::Integer;\n\treturn result;\n}\n\nExpressionValue expFuncFloat(const std::wstring& funcName, const std::vector<ExpressionValue>& parameters)\n{\n\tExpressionValue result;\n\n\tswitch (parameters[0].type)\n\t{\n\tcase ExpressionValueType::Integer:\n\t\tresult.floatValue = (double) parameters[0].intValue;\n\t\tbreak;\n\tcase ExpressionValueType::Float:\n\t\tresult.floatValue = parameters[0].floatValue;\n\t\tbreak;\n\tdefault:\n\t\treturn result;\n\t}\n\n\tresult.type = ExpressionValueType::Float;\n\treturn result;\n}\n\nExpressionValue expFuncFrac(const std::wstring& funcName, const std::vector<ExpressionValue>& parameters)\n{\n\tExpressionValue result;\n\tdouble intPart;\n\n\tswitch (parameters[0].type)\n\t{\n\tcase ExpressionValueType::Float:\n\t\tresult.floatValue = modf(parameters[0].floatValue,&intPart);\n\t\tbreak;\n\tdefault:\n\t\treturn result;\n\t}\n\n\tresult.type = ExpressionValueType::Float;\n\treturn result;\n}\n\nExpressionValue expFuncMin(const std::wstring& funcName, const std::vector<ExpressionValue>& parameters)\n{\n\tExpressionValue result;\n\tdouble floatMin, floatCur;\n\tint64_t intMin, intCur;\n\n\tfloatCur = floatMin = std::numeric_limits<double>::max();\n\tintCur = intMin = std::numeric_limits<int64_t>::max();\n\tbool isInt = true;\n\n\tfor (size_t i = 0; i < parameters.size(); i++)\n\t{\n\t\tswitch (parameters[i].type)\n\t\t{\n\t\tcase ExpressionValueType::Integer:\n\t\t\tintCur = parameters[i].intValue;\n\t\t\tfloatCur = (double)parameters[i].intValue;\n\t\t\tbreak;\n\t\tcase ExpressionValueType::Float:\n\t\t\tfloatCur = parameters[i].floatValue;\n\t\t\tisInt = false;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\treturn result;\n\t\t}\n\n\t\tif (intCur < intMin)\n\t\t\tintMin = intCur;\n\t\tif (floatCur < floatMin)\n\t\t\tfloatMin = floatCur;\n\t}\n\n\tif (isInt)\n\t{\n\t\tresult.intValue = intMin;\n\t\tresult.type = ExpressionValueType::Integer;\n\t}\n\telse\n\t{\n\t\tresult.floatValue = floatMin;\n\t\tresult.type = ExpressionValueType::Float;\n\t}\n\n\treturn result;\n}\n\nExpressionValue expFuncMax(const std::wstring& funcName, const std::vector<ExpressionValue>& parameters)\n{\n\tExpressionValue result;\n\tdouble floatMax, floatCur;\n\tint64_t intMax, intCur;\n\n\tfloatCur = floatMax = std::numeric_limits<double>::min();\n\tintCur = intMax = std::numeric_limits<int64_t>::min();\n\tbool isInt = true;\n\n\tfor (size_t i = 0; i < parameters.size(); i++)\n\t{\n\t\tswitch (parameters[i].type)\n\t\t{\n\t\tcase ExpressionValueType::Integer:\n\t\t\tintCur = parameters[i].intValue;\n\t\t\tfloatCur = (double)parameters[i].intValue;\n\t\t\tbreak;\n\t\tcase ExpressionValueType::Float:\n\t\t\tfloatCur = parameters[i].floatValue;\n\t\t\tisInt = false;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\treturn result;\n\t\t}\n\n\t\tif (intCur > intMax)\n\t\t\tintMax = intCur;\n\t\tif (floatCur > floatMax)\n\t\t\tfloatMax = floatCur;\n\t}\n\n\tif (isInt)\n\t{\n\t\tresult.intValue = intMax;\n\t\tresult.type = ExpressionValueType::Integer;\n\t}\n\telse\n\t{\n\t\tresult.floatValue = floatMax;\n\t\tresult.type = ExpressionValueType::Float;\n\t}\n\n\treturn result;\n}\n\nExpressionValue expFuncAbs(const std::wstring& funcName, const std::vector<ExpressionValue>& parameters)\n{\n\tExpressionValue result;\n\n\tswitch (parameters[0].type)\n\t{\n\tcase ExpressionValueType::Float:\n\t\tresult.type = ExpressionValueType::Float;\n\t\tresult.floatValue = fabs(parameters[0].floatValue);\n\t\tbreak;\n\tcase ExpressionValueType::Integer:\n\t\tresult.type = ExpressionValueType::Integer;\n\t\tresult.intValue = parameters[0].intValue >= 0 ?\n\t\t\tparameters[0].intValue : -parameters[0].intValue;\n\t\tbreak;\n\tdefault:\n\t\tbreak;\n\t}\n\n\treturn result;\n}\n\nExpressionValue expFuncStrlen(const std::wstring& funcName, const std::vector<ExpressionValue>& parameters)\n{\n\tconst std::wstring* source;\n\tGET_PARAM(parameters,0,source);\n\n\treturn ExpressionValue((int64_t)source->size());\n}\n\nExpressionValue expFuncSubstr(const std::wstring& funcName, const std::vector<ExpressionValue>& parameters)\n{\n\tint64_t start, count;\n\tconst std::wstring* source;\n\n\tGET_PARAM(parameters,0,source);\n\tGET_PARAM(parameters,1,start);\n\tGET_PARAM(parameters,2,count);\n\n\treturn ExpressionValue(source->substr((size_t)start,(size_t)count));\n}\n\n#if ARMIPS_REGEXP\nExpressionValue expFuncRegExMatch(const std::wstring& funcName, const std::vector<ExpressionValue>& parameters)\n{\n\tconst std::wstring* source;\n\tconst std::wstring* regexString;\n\n\tGET_PARAM(parameters,0,source);\n\tGET_PARAM(parameters,1,regexString);\n\n#if ARMIPS_EXCEPTIONS\n\ttry\n\t{\n#endif\n\t\tstd::wregex regex(*regexString);\n\t\tbool found = std::regex_match(*source,regex);\n\t\treturn ExpressionValue(found ? INT64_C(1) : INT64_C(0));\n#if ARMIPS_EXCEPTIONS\n\t} catch (std::regex_error&)\n\t{\n\t\tLogger::queueError(Logger::Error,L\"Invalid regular expression\");\n\t\treturn ExpressionValue();\n\t}\n#endif\n}\n\nExpressionValue expFuncRegExSearch(const std::wstring& funcName, const std::vector<ExpressionValue>& parameters)\n{\n\tconst std::wstring* source;\n\tconst std::wstring* regexString;\n\n\tGET_PARAM(parameters,0,source);\n\tGET_PARAM(parameters,1,regexString);\n\n#if ARMIPS_EXCEPTIONS\n\ttry\n\t{\n#endif\n\t\tstd::wregex regex(*regexString);\n\t\tbool found = std::regex_search(*source,regex);\n\t\treturn ExpressionValue(found ? INT64_C(1) : INT64_C(0));\n#if ARMIPS_EXCEPTIONS\n\t} catch (std::regex_error&)\n\t{\n\t\tLogger::queueError(Logger::Error,L\"Invalid regular expression\");\n\t\treturn ExpressionValue();\n\t}\n#endif\n}\n\nExpressionValue expFuncRegExExtract(const std::wstring& funcName, const std::vector<ExpressionValue>& parameters)\n{\n\tconst std::wstring* source;\n\tconst std::wstring* regexString;\n\tint64_t matchIndex;\n\n\tGET_PARAM(parameters,0,source);\n\tGET_PARAM(parameters,1,regexString);\n\tGET_OPTIONAL_PARAM(parameters,2,matchIndex,0);\n\n#if ARMIPS_EXCEPTIONS\n\ttry\n\t{\n#endif\n\t\tstd::wregex regex(*regexString);\n\t\tstd::wsmatch result;\n\t\tbool found = std::regex_search(*source,result,regex);\n\t\tif (found == false || (size_t)matchIndex >= result.size())\n\t\t{\n\t\t\tLogger::queueError(Logger::Error,L\"Capture group index %d does not exist\",matchIndex);\n\t\t\treturn ExpressionValue();\n\t\t}\n\n\t\treturn ExpressionValue(result[(size_t)matchIndex].str());\n#if ARMIPS_EXCEPTIONS\n\t} catch (std::regex_error&)\n\t{\n\t\tLogger::queueError(Logger::Error,L\"Invalid regular expression\");\n\t\treturn ExpressionValue();\n\t}\n#endif\n}\n#endif\n\nExpressionValue expFuncFind(const std::wstring& funcName, const std::vector<ExpressionValue>& parameters)\n{\n\tint64_t start;\n\tconst std::wstring* source;\n\tconst std::wstring* value;\n\n\tGET_PARAM(parameters,0,source);\n\tGET_PARAM(parameters,1,value);\n\tGET_OPTIONAL_PARAM(parameters,2,start,0);\n\n\tsize_t pos = source->find(*value,(size_t)start);\n\treturn ExpressionValue(pos == std::wstring::npos ? INT64_C(-1) : (int64_t) pos);\n}\n\nExpressionValue expFuncRFind(const std::wstring& funcName, const std::vector<ExpressionValue>& parameters)\n{\n\tint64_t start;\n\tconst std::wstring* source;\n\tconst std::wstring* value;\n\n\tGET_PARAM(parameters,0,source);\n\tGET_PARAM(parameters,1,value);\n\tGET_OPTIONAL_PARAM(parameters,2,start,std::wstring::npos);\n\n\tsize_t pos = source->rfind(*value,(size_t)start);\n\treturn ExpressionValue(pos == std::wstring::npos ? INT64_C(-1) : (int64_t) pos);\n}\n\n\ntemplate<typename T>\nExpressionValue expFuncRead(const std::wstring& funcName, const std::vector<ExpressionValue>& parameters)\n{\n\tconst std::wstring* fileName;\n\tint64_t pos;\n\n\tGET_PARAM(parameters,0,fileName);\n\tGET_OPTIONAL_PARAM(parameters,1,pos,0);\n\n\tstd::wstring fullName = getFullPathName(*fileName);\n\n\tBinaryFile file;\n\tif (file.open(fullName,BinaryFile::Read) == false)\n\t{\n\t\tLogger::queueError(Logger::Error,L\"Could not open %s\",*fileName);\n\t\treturn ExpressionValue();\n\t}\n\n\tfile.setPos(pos);\n\n\tT buffer;\n\tif (file.read(&buffer, sizeof(T)) != sizeof(T))\n\t{\n\t\tLogger::queueError(Logger::Error, L\"Failed to read %d byte(s) from offset 0x%08X of %s\", sizeof(T), pos, *fileName);\n\t\treturn ExpressionValue();\n\t}\n\n\treturn ExpressionValue((int64_t) buffer);\n}\n\nExpressionValue expFuncReadAscii(const std::wstring& funcName, const std::vector<ExpressionValue>& parameters)\n{\n\tconst std::wstring* fileName;\n\tint64_t start;\n\tint64_t length;\n\n\tGET_PARAM(parameters,0,fileName);\n\tGET_OPTIONAL_PARAM(parameters,1,start,0);\n\tGET_OPTIONAL_PARAM(parameters,2,length,0);\n\n\tstd::wstring fullName = getFullPathName(*fileName);\n\n\tint64_t totalSize = fileSize(fullName);\n\tif (length == 0 || start+length > totalSize)\n\t\tlength = totalSize-start;\n\n\tBinaryFile file;\n\tif (file.open(fullName,BinaryFile::Read) == false)\n\t{\n\t\tLogger::queueError(Logger::Error,L\"Could not open %s\",fileName);\n\t\treturn ExpressionValue();\n\t}\n\n\tfile.setPos((long)start);\n\n\tunsigned char* buffer = new unsigned char[length];\n\tfile.read(buffer,(size_t)length);\n\n\tstd::wstring result;\n\tfor (size_t i = 0; i < (size_t) length; i++)\n\t{\n\t\tif (buffer[i] < 0x20 || buffer[i] > 0x7F)\n\t\t{\n\t\t\tLogger::printError(Logger::Warning,L\"%s: Non-ASCII character\",funcName);\n\t\t\treturn ExpressionValue();\n\t\t}\n\n\t\tresult += (wchar_t) buffer[i];\n\t}\n\n\tdelete[] buffer;\n\n\treturn ExpressionValue(result);\n}\n\nExpressionValue expLabelFuncDefined(const std::wstring &funcName, const std::vector<std::shared_ptr<Label>> &parameters)\n{\n\tif (parameters.empty() || !parameters.front())\n\t{\n\t\tLogger::queueError(Logger::Error,L\"%s: Invalid parameters\", funcName);\n\t\treturn ExpressionValue();\n\t}\n\n\treturn ExpressionValue(parameters.front()->isDefined() ? INT64_C(1) : INT64_C(0));\n}\n\nExpressionValue expLabelFuncOrg(const std::wstring& funcName, const std::vector<std::shared_ptr<Label>>& parameters)\n{\n\t// return physical address of label parameter\n\tif (parameters.size())\n\t{\n\t\tLabel* label = parameters.front().get();\n\t\tif (!label)\n\t\t\treturn ExpressionValue();\n\n\t\treturn ExpressionValue(parameters.front()->getValue());\n\t}\n\n\tif(!g_fileManager->hasOpenFile())\n\t{\n\t\tLogger::queueError(Logger::Error,L\"%s: no file opened\", funcName);\n\t\treturn ExpressionValue();\n\t}\n\treturn ExpressionValue(g_fileManager->getVirtualAddress());\n}\n\nExpressionValue expLabelFuncOrga(const std::wstring& funcName, const std::vector<std::shared_ptr<Label>>& parameters)\n{\n\t// return physical address of label parameter\n\tif (parameters.size())\n\t{\n\t\tLabel* label = parameters.front().get();\n\t\tif (!label)\n\t\t\treturn ExpressionValue();\n\n\t\tif (!label->hasPhysicalValue())\n\t\t{\n\t\t\tLogger::queueError(Logger::Error,L\"%s: parameter %s has no physical address\", funcName, label->getName() );\n\t\t\treturn ExpressionValue();\n\t\t}\n\n\t\treturn ExpressionValue(parameters.front()->getPhysicalValue());\n\t}\n\n\t// return current physical address otherwise\n\tif(!g_fileManager->hasOpenFile())\n\t{\n\t\tLogger::queueError(Logger::Error,L\"%s: no file opened\", funcName);\n\t\treturn ExpressionValue();\n\t}\n\treturn ExpressionValue(g_fileManager->getPhysicalAddress());\n}\n\nExpressionValue expLabelFuncHeaderSize(const std::wstring& funcName, const std::vector<std::shared_ptr<Label>>& parameters)\n{\n\t// return difference between physical and virtual address of label parameter\n\tif (parameters.size())\n\t{\n\t\tLabel* label = parameters.front().get();\n\t\tif (!label)\n\t\t\treturn ExpressionValue();\n\n\t\tif (!label->hasPhysicalValue())\n\t\t{\n\t\t\tLogger::queueError(Logger::Error,L\"%s: parameter %s has no physical address\", funcName, label->getName() );\n\t\t\treturn ExpressionValue();\n\t\t}\n\n\t\treturn ExpressionValue(label->getValue() - label->getPhysicalValue());\n\t}\n\n\tif(!g_fileManager->hasOpenFile())\n\t{\n\t\tLogger::queueError(Logger::Error,L\"headersize: no file opened\");\n\t\treturn ExpressionValue();\n\t}\n\treturn ExpressionValue(g_fileManager->getHeaderSize());\n}\n\nconst ExpressionFunctionMap expressionFunctions = {\n\t{ L\"version\",\t\t{ &expFuncVersion,\t\t\t0,\t0,\tExpFuncSafety::Safe } },\n\t{ L\"endianness\",\t{ &expFuncEndianness,\t\t0,\t0,\tExpFuncSafety::Unsafe } },\n\t{ L\"outputname\",\t{ &expFuncOutputName,\t\t0,\t0,\tExpFuncSafety::Unsafe } },\n\t{ L\"fileexists\",\t{ &expFuncFileExists,\t\t1,\t1,\tExpFuncSafety::Safe } },\n\t{ L\"filesize\",\t\t{ &expFuncFileSize,\t\t\t1,\t1,\tExpFuncSafety::ConditionalUnsafe } },\n\t{ L\"tostring\",\t\t{ &expFuncToString,\t\t\t1,\t1,\tExpFuncSafety::Safe } },\n\t{ L\"tohex\",\t\t\t{ &expFuncToHex,\t\t\t1,\t2,\tExpFuncSafety::Safe } },\n\n\t{ L\"int\",\t\t\t{ &expFuncInt,\t\t\t\t1,\t1,\tExpFuncSafety::Safe } },\n\t{ L\"float\",\t\t\t{ &expFuncFloat,\t\t\t1,\t1,\tExpFuncSafety::Safe } },\n\t{ L\"frac\",\t\t\t{ &expFuncFrac,\t\t\t\t1,\t1,\tExpFuncSafety::Safe } },\n\t{ L\"abs\",\t\t\t{ &expFuncAbs,\t\t\t\t1,\t1,\tExpFuncSafety::Safe } },\n\t{ L\"round\",\t\t\t{ &expFuncRound,\t\t\t1,\t1,\tExpFuncSafety::Safe } },\n\t{ L\"min\",\t\t\t{ &expFuncMin,\t\t\t\t1,\tstd::numeric_limits<size_t>::max(),\tExpFuncSafety::Safe } },\n\t{ L\"max\",\t\t\t{ &expFuncMax,\t\t\t\t1,\tstd::numeric_limits<size_t>::max(),\tExpFuncSafety::Safe } },\n\n\t{ L\"strlen\",\t\t{ &expFuncStrlen,\t\t\t1,\t1,\tExpFuncSafety::Safe } },\n\t{ L\"substr\",\t\t{ &expFuncSubstr,\t\t\t3,\t3,\tExpFuncSafety::Safe } },\n#if ARMIPS_REGEXP\n\t{ L\"regex_match\",\t{ &expFuncRegExMatch,\t\t2,\t2,\tExpFuncSafety::Safe } },\n\t{ L\"regex_search\",\t{ &expFuncRegExSearch,\t\t2,\t2,\tExpFuncSafety::Safe } },\n\t{ L\"regex_extract\",\t{ &expFuncRegExExtract,\t\t2,\t3,\tExpFuncSafety::Safe } },\n#endif\n\t{ L\"find\",\t\t\t{ &expFuncFind,\t\t\t\t2,\t3,\tExpFuncSafety::Safe } },\n\t{ L\"rfind\",\t\t\t{ &expFuncRFind,\t\t\t2,\t3,\tExpFuncSafety::Safe } },\n\n\t{ L\"readbyte\",\t\t{ &expFuncRead<uint8_t>,\t1,\t2,\tExpFuncSafety::ConditionalUnsafe } },\n\t{ L\"readu8\",\t\t{ &expFuncRead<uint8_t>,\t1,\t2,\tExpFuncSafety::ConditionalUnsafe } },\n\t{ L\"readu16\",\t\t{ &expFuncRead<uint16_t>,\t1,\t2,\tExpFuncSafety::ConditionalUnsafe } },\n\t{ L\"readu32\",\t\t{ &expFuncRead<uint32_t>,\t1,\t2,\tExpFuncSafety::ConditionalUnsafe } },\n\t{ L\"readu64\",\t\t{ &expFuncRead<uint64_t>,\t1,\t2,\tExpFuncSafety::ConditionalUnsafe } },\n\t{ L\"reads8\",\t\t{ &expFuncRead<int8_t>,\t\t1,\t2,\tExpFuncSafety::ConditionalUnsafe } },\n\t{ L\"reads16\",\t\t{ &expFuncRead<int16_t>,\t1,\t2,\tExpFuncSafety::ConditionalUnsafe } },\n\t{ L\"reads32\",\t\t{ &expFuncRead<int32_t>,\t1,\t2,\tExpFuncSafety::ConditionalUnsafe } },\n\t{ L\"reads64\",\t\t{ &expFuncRead<int64_t>,\t1,\t2,\tExpFuncSafety::ConditionalUnsafe } },\n\t{ L\"readascii\",\t\t{ &expFuncReadAscii,\t\t1,\t3,\tExpFuncSafety::ConditionalUnsafe } },\n};\n\nextern const ExpressionLabelFunctionMap expressionLabelFunctions =\n{\n\t{ L\"defined\",    { &expLabelFuncDefined,      1, 1, ExpFuncSafety::Unsafe } },\n\t{ L\"org\",        { &expLabelFuncOrg,          0, 1, ExpFuncSafety::Unsafe } },\n\t{ L\"orga\",       { &expLabelFuncOrga,         0, 1, ExpFuncSafety::Unsafe } },\n\t{ L\"headersize\", { &expLabelFuncHeaderSize,   0, 1, ExpFuncSafety::Unsafe } },\n};\n\n// file: Core/FileManager.cpp\n\ninline uint64_t swapEndianness64(uint64_t value)\n{\n\treturn ((value & 0xFF) << 56) | ((value & 0xFF00) << 40) | ((value & 0xFF0000) << 24) | ((value & 0xFF000000) << 8) |\n\t((value & 0xFF00000000) >> 8) | ((value & 0xFF0000000000) >> 24) |\n\t((value & 0xFF000000000000) >> 40) | ((value & 0xFF00000000000000) >> 56);\n}\n\ninline uint32_t swapEndianness32(uint32_t value)\n{\n\treturn ((value & 0xFF) << 24) | ((value & 0xFF00) << 8) | ((value & 0xFF0000) >> 8) | ((value & 0xFF000000) >> 24);\n}\n\ninline uint16_t swapEndianness16(uint16_t value)\n{\n\treturn ((value & 0xFF) << 8) | ((value & 0xFF00) >> 8);\n}\n\n\nGenericAssemblerFile::GenericAssemblerFile(const std::wstring& fileName, int64_t headerSize, bool overwrite)\n{\n\tthis->fileName = fileName;\n\tthis->headerSize = headerSize;\n\tthis->originalHeaderSize = headerSize;\n\tthis->seekPhysical(0);\n\tmode = overwrite == true ? Create : Open;\n}\n\nGenericAssemblerFile::GenericAssemblerFile(const std::wstring& fileName, const std::wstring& originalFileName, int64_t headerSize)\n{\n\tthis->fileName = fileName;\n\tthis->originalName = originalFileName;\n\tthis->headerSize = headerSize;\n\tthis->originalHeaderSize = headerSize;\n\tthis->seekPhysical(0);\n\tmode = Copy;\n}\n\nbool GenericAssemblerFile::open(bool onlyCheck)\n{\n\theaderSize = originalHeaderSize;\n\tvirtualAddress = headerSize;\n\n\tif (onlyCheck == false)\n\t{\n\t\t// actually open the file\n\t\tbool success;\n\t\tswitch (mode)\n\t\t{\n\t\tcase Open:\n\t\t\tsuccess = handle.open(fileName,BinaryFile::ReadWrite);\n\t\t\tif (success == false)\n\t\t\t{\n\t\t\t\tLogger::printError(Logger::FatalError,L\"Could not open file %s\",fileName);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\n\t\tcase Create:\n\t\t\tsuccess = handle.open(fileName,BinaryFile::Write);\n\t\t\tif (success == false)\n\t\t\t{\n\t\t\t\tLogger::printError(Logger::FatalError,L\"Could not create file %s\",fileName);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\n\t\tcase Copy:\n\t\t\tsuccess = copyFile(originalName,fileName);\n\t\t\tif (success == false)\n\t\t\t{\n\t\t\t\tLogger::printError(Logger::FatalError,L\"Could not copy file %s\",originalName);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tsuccess = handle.open(fileName,BinaryFile::ReadWrite);\n\t\t\tif (success == false)\n\t\t\t{\n\t\t\t\tLogger::printError(Logger::FatalError,L\"Could not create file %s\",fileName);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\n\t\tdefault:\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t// else only check if it can be done, don't actually do it permanently\n\tbool success, exists;\n\tBinaryFile temp;\n\tswitch (mode)\n\t{\n\tcase Open:\n\t\tsuccess = temp.open(fileName,BinaryFile::ReadWrite);\n\t\tif (success == false)\n\t\t{\n\t\t\tLogger::queueError(Logger::FatalError,L\"Could not open file %s\",fileName);\n\t\t\treturn false;\n\t\t}\n\t\ttemp.close();\n\t\treturn true;\n\n\tcase Create:\n\t\t// if it exists, check if you can open it with read/write access\n\t\t// otherwise open it with write access and remove it afterwards\n\t\texists = fileExists(fileName);\n\t\tsuccess = temp.open(fileName,exists ? BinaryFile::ReadWrite : BinaryFile::Write);\n\t\tif (success == false)\n\t\t{\n\t\t\tLogger::queueError(Logger::FatalError,L\"Could not create file %s\",fileName);\n\t\t\treturn false;\n\t\t}\n\t\ttemp.close();\n\n\t\tif (exists == false)\n\t\t\tdeleteFile(fileName);\n\n\t\treturn true;\n\n\tcase Copy:\n\t\t// check original file\n\t\tsuccess = temp.open(originalName,BinaryFile::ReadWrite);\n\t\tif (success == false)\n\t\t{\n\t\t\tLogger::queueError(Logger::FatalError,L\"Could not open file %s\",originalName);\n\t\t\treturn false;\n\t\t}\n\t\ttemp.close();\n\n\t\t// check new file, same as create\n\t\texists = fileExists(fileName);\n\t\tsuccess = temp.open(fileName,exists ? BinaryFile::ReadWrite : BinaryFile::Write);\n\t\tif (success == false)\n\t\t{\n\t\t\tLogger::queueError(Logger::FatalError,L\"Could not create file %s\",fileName);\n\t\t\treturn false;\n\t\t}\n\t\ttemp.close();\n\n\t\tif (exists == false)\n\t\t\tdeleteFile(fileName);\n\n\t\treturn true;\n\n\tdefault:\n\t\treturn false;\n\t};\n\n\treturn false;\n}\n\nbool GenericAssemblerFile::write(void* data, size_t length)\n{\n\tif (isOpen() == false)\n\t\treturn false;\n\n\tsize_t len = handle.write(data,length);\n\tvirtualAddress += len;\n\treturn len == length;\n}\n\nbool GenericAssemblerFile::seekVirtual(int64_t virtualAddress)\n{\n\tif (virtualAddress - headerSize < 0)\n\t{\n\t\tLogger::queueError(Logger::Error,L\"Seeking to virtual address with negative physical address\");\n\t\treturn false;\n\t}\n\tif (virtualAddress < 0)\n\t\tLogger::queueError(Logger::Warning,L\"Seeking to negative virtual address\");\n\n\tthis->virtualAddress = virtualAddress;\n\tint64_t physicalAddress = virtualAddress-headerSize;\n\n\tif (isOpen())\n\t\thandle.setPos((long)physicalAddress);\n\n\treturn true;\n}\n\nbool GenericAssemblerFile::seekPhysical(int64_t physicalAddress)\n{\n\tif (physicalAddress < 0)\n\t{\n\t\tLogger::queueError(Logger::Error,L\"Seeking to negative physical address\");\n\t\treturn false;\n\t}\n\tif (physicalAddress + headerSize < 0)\n\t\tLogger::queueError(Logger::Warning,L\"Seeking to physical address with negative virtual address\");\n\n\tvirtualAddress = physicalAddress+headerSize;\n\n\tif (isOpen())\n\t\thandle.setPos((long)physicalAddress);\n\n\treturn true;\n}\n\n\n\nFileManager::FileManager()\n{\n\t// detect own endianness\n\tvolatile union\n\t{\n\t\tuint32_t i;\n\t\tuint8_t c[4];\n\t} u;\n\tu.c[3] = 0xAA;\n\tu.c[2] = 0xBB;\n\tu.c[1] = 0xCC;\n\tu.c[0] = 0xDD;\n\n\tif (u.i == 0xDDCCBBAA)\n\t\townEndianness = Endianness::Big;\n\telse if (u.i == 0xAABBCCDD)\n\t\townEndianness = Endianness::Little;\n\telse\n\t\tLogger::printError(Logger::Error,L\"Running on unknown endianness\");\n\n\treset();\n}\n\nFileManager::~FileManager()\n{\n\n}\n\nvoid FileManager::reset()\n{\n\tactiveFile = nullptr;\n\tsetEndianness(Endianness::Little);\n}\n\nbool FileManager::checkActiveFile()\n{\n\tif (activeFile == nullptr)\n\t{\n\t\tLogger::queueError(Logger::Error,L\"No file opened\");\n\t\treturn false;\n\t}\n\treturn true;\n}\n\nbool FileManager::openFile(std::shared_ptr<AssemblerFile> file, bool onlyCheck)\n{\n\tif (activeFile != nullptr)\n\t{\n\t\tLogger::queueError(Logger::Warning,L\"File not closed before opening a new one\");\n\t\tactiveFile->close();\n\t}\n\n\tactiveFile = file;\n\treturn activeFile->open(onlyCheck);\n}\n\nvoid FileManager::addFile(std::shared_ptr<AssemblerFile> file)\n{\n\tfiles.push_back(file);\n}\n\nvoid FileManager::closeFile()\n{\n\tif (activeFile == nullptr)\n\t{\n\t\tLogger::queueError(Logger::Warning,L\"No file opened\");\n\t\treturn;\n\t}\n\n\tactiveFile->close();\n\tactiveFile = nullptr;\n}\n\nbool FileManager::write(void* data, size_t length)\n{\n\tif (checkActiveFile() == false)\n\t\treturn false;\n\n\tif (activeFile->isOpen() == false)\n\t{\n\t\tLogger::queueError(Logger::Error,L\"No file opened\");\n\t\treturn false;\n\t}\n\n\treturn activeFile->write(data,length);\n}\n\nbool FileManager::writeU8(uint8_t data)\n{\n\treturn write(&data,1);\n}\n\nbool FileManager::writeU16(uint16_t data)\n{\n\tif (endianness != ownEndianness)\n\t\tdata = swapEndianness16(data);\n\n\treturn write(&data,2);\n}\n\nbool FileManager::writeU32(uint32_t data)\n{\n\tif (endianness != ownEndianness)\n\t\tdata = swapEndianness32(data);\n\n\treturn write(&data,4);\n}\n\nbool FileManager::writeU64(uint64_t data)\n{\n\tif (endianness != ownEndianness)\n\t\tdata = swapEndianness64(data);\n\n\treturn write(&data,8);\n}\n\nint64_t FileManager::getVirtualAddress()\n{\n\tif (activeFile == nullptr)\n\t\treturn -1;\n\treturn activeFile->getVirtualAddress();\n}\n\nint64_t FileManager::getPhysicalAddress()\n{\n\tif (activeFile == nullptr)\n\t\treturn -1;\n\treturn activeFile->getPhysicalAddress();\n}\n\nint64_t FileManager::getHeaderSize()\n{\n\tif (activeFile == nullptr)\n\t\treturn -1;\n\treturn activeFile->getHeaderSize();\n}\n\nbool FileManager::seekVirtual(int64_t virtualAddress)\n{\n\tif (checkActiveFile() == false)\n\t\treturn false;\n\n\tbool result = activeFile->seekVirtual(virtualAddress);\n\tif (result && Global.memoryMode)\n\t{\n\t\tint sec = Global.symbolTable.findSection(virtualAddress);\n\t\tif (sec != -1)\n\t\t\tGlobal.Section = sec;\n\t}\n\n\treturn result;\n}\n\nbool FileManager::seekPhysical(int64_t virtualAddress)\n{\n\tif (checkActiveFile() == false)\n\t\treturn false;\n\treturn activeFile->seekPhysical(virtualAddress);\n}\n\nbool FileManager::advanceMemory(size_t bytes)\n{\n\tif (checkActiveFile() == false)\n\t\treturn false;\n\n\tint64_t pos = activeFile->getVirtualAddress();\n\treturn activeFile->seekVirtual(pos+bytes);\n}\n\n// file: Core/Misc.cpp\n#include <iostream>\n\n#ifdef _WIN32\n#include <windows.h>\n#endif\n\nstd::vector<Logger::QueueEntry> Logger::queue;\nstd::vector<std::wstring> Logger::errors;\nbool Logger::error = false;\nbool Logger::fatalError = false;\nbool Logger::errorOnWarning = false;\nbool Logger::silent = false;\nint Logger::suppressLevel = 0;\n\nstd::wstring Logger::formatError(ErrorType type, const wchar_t* text)\n{\n\tstd::wstring position;\n\n\tif (Global.memoryMode == false && Global.FileInfo.FileList.size() > 0)\n\t{\n\t\tstd::wstring& fileName = Global.FileInfo.FileList[Global.FileInfo.FileNum];\n\t\tposition = formatString(L\"%s(%d) \",fileName,Global.FileInfo.LineNumber);\n\t}\n\n\tswitch (type)\n\t{\n\tcase Warning:\n\t\treturn formatString(L\"%swarning: %s\",position,text);\n\tcase Error:\n\t\treturn formatString(L\"%serror: %s\",position,text);\n\tcase FatalError:\n\t\treturn formatString(L\"%sfatal error: %s\",position,text);\n\tcase Notice:\n\t\treturn formatString(L\"%snotice: %s\",position,text);\n\t}\n\n\treturn L\"\";\n}\n\nvoid Logger::setFlags(ErrorType type)\n{\n\tswitch (type)\n\t{\n\tcase Warning:\n\t\tif (errorOnWarning)\n\t\t\terror = true;\n\t\tbreak;\n\tcase Error:\n\t\terror = true;\n\t\tbreak;\n\tcase FatalError:\n\t\terror = true;\n\t\tfatalError = true;\n\t\tbreak;\n\tcase Notice:\n\t\tbreak;\n\t}\n}\n\nvoid Logger::clear()\n{\n\tqueue.clear();\n\terrors.clear();\n\terror = false;\n\tfatalError = false;\n\terrorOnWarning = false;\n\tsilent = false;\n}\n\nvoid Logger::printLine(const std::wstring& text)\n{\n\tif (suppressLevel)\n\t\treturn;\n\n\tstd::wcout << text << std::endl;\n\n#if defined(_MSC_VER) && defined(_DEBUG)\n\tOutputDebugStringW(text.c_str());\n\tOutputDebugStringW(L\"\\n\");\n#endif\n}\n\nvoid Logger::printLine(const std::string& text)\n{\n\tif (suppressLevel)\n\t\treturn;\n\n\tstd::cout << text << std::endl;\n\n#if defined(_MSC_VER) && defined(_DEBUG)\n\tOutputDebugStringA(text.c_str());\n\tOutputDebugStringA(\"\\n\");\n#endif\n}\n\nvoid Logger::print(const std::wstring& text)\n{\n\tif (suppressLevel)\n\t\treturn;\n\n\tstd::wcout << text;\n\n#if defined(_MSC_VER) && defined(_DEBUG)\n\tOutputDebugStringW(text.c_str());\n#endif\n}\n\nvoid Logger::printError(ErrorType type, const std::wstring& text)\n{\n\tif (suppressLevel)\n\t\treturn;\n\n\tstd::wstring errorText = formatError(type,text.c_str());\n\terrors.push_back(errorText);\n\n\tif (!silent)\n\t\tprintLine(errorText);\n\n\tsetFlags(type);\n}\n\nvoid Logger::printError(ErrorType type, const wchar_t* text)\n{\n\tif (suppressLevel)\n\t\treturn;\n\n\tstd::wstring errorText = formatError(type,text);\n\terrors.push_back(errorText);\n\n\tif (!silent)\n\t\tprintLine(errorText);\n\n\tsetFlags(type);\n}\n\nvoid Logger::queueError(ErrorType type, const std::wstring& text)\n{\n\tif (suppressLevel)\n\t\treturn;\n\n\tQueueEntry entry;\n\tentry.type = type;\n\tentry.text = formatError(type,text.c_str());\n\tqueue.push_back(entry);\n}\n\nvoid Logger::queueError(ErrorType type, const wchar_t* text)\n{\n\tif (suppressLevel)\n\t\treturn;\n\n\tQueueEntry entry;\n\tentry.type = type;\n\tentry.text = formatError(type,text);\n\tqueue.push_back(entry);\n}\n\nvoid Logger::printQueue()\n{\n\tfor (size_t i = 0; i < queue.size(); i++)\n\t{\n\t\terrors.push_back(queue[i].text);\n\n\t\tif (!silent)\n\t\t\tprintLine(queue[i].text);\n\n\t\tsetFlags(queue[i].type);\n\t}\n}\n\nvoid TempData::start()\n{\n\tif (file.getFileName().empty() == false)\n\t{\n\t\tif (file.open(TextFile::Write) == false)\n\t\t{\n\t\t\tLogger::printError(Logger::Error,L\"Could not open temp file %s.\",file.getFileName());\n\t\t\treturn;\n\t\t}\n\n\t\tsize_t fileCount = Global.FileInfo.FileList.size();\n\t\tsize_t lineCount = Global.FileInfo.TotalLineCount;\n\t\tsize_t labelCount = Global.symbolTable.getLabelCount();\n\t\tsize_t equCount = Global.symbolTable.getEquationCount();\n\n\t\tfile.writeFormat(L\"; %d %S included\\n\",fileCount,fileCount == 1 ? \"file\" : \"files\");\n\t\tfile.writeFormat(L\"; %d %S\\n\",lineCount,lineCount == 1 ? \"line\" : \"lines\");\n\t\tfile.writeFormat(L\"; %d %S\\n\",labelCount,labelCount == 1 ? \"label\" : \"labels\");\n\t\tfile.writeFormat(L\"; %d %S\\n\\n\",equCount,equCount == 1 ? \"equation\" : \"equations\");\n\t\tfor (size_t i = 0; i < fileCount; i++)\n\t\t{\n\t\t\tfile.writeFormat(L\"; %S\\n\",Global.FileInfo.FileList[i]);\n\t\t}\n\t\tfile.writeLine(\"\");\n\t}\n}\n\nvoid TempData::end()\n{\n\tif (file.isOpen())\n\t\tfile.close();\n}\n\nvoid TempData::writeLine(int64_t memoryAddress, const std::wstring& text)\n{\n\tif (file.isOpen())\n\t{\n\t\twchar_t hexbuf[10] = {0};\n\t\tswprintf(hexbuf, 10, L\"%08X \", (int32_t) memoryAddress);\n\t\tstd::wstring str = hexbuf + text;\n\t\twhile (str.size() < 70)\n\t\t\tstr += ' ';\n\n\t\tstr += formatString(L\"; %S line %d\",\n\t\t\tGlobal.FileInfo.FileList[Global.FileInfo.FileNum],Global.FileInfo.LineNumber);\n\n\t\tfile.writeLine(str);\n\t}\n}\n\n// file: Core/SymbolData.cpp\n#include <algorithm>\n\nSymbolData::SymbolData()\n{\n\tclear();\n}\n\nvoid SymbolData::clear()\n{\n\tenabled = true;\n\tnocashSymFileName.clear();\n\tmodules.clear();\n\tfiles.clear();\n\tcurrentModule = 0;\n\tcurrentFunction = -1;\n\n\tSymDataModule defaultModule;\n\tdefaultModule.file = nullptr;\n\tmodules.push_back(defaultModule);\n}\n\nstruct NocashSymEntry\n{\n\tint64_t address;\n\tstd::wstring text;\n\n\tbool operator<(const NocashSymEntry& other) const\n\t{\n\t\tif (address != other.address)\n\t\t\treturn address < other.address;\n\t\treturn text < other.text;\n\t}\n};\n\nvoid SymbolData::writeNocashSym()\n{\n\tif (nocashSymFileName.empty())\n\t\treturn;\n\n\tstd::vector<NocashSymEntry> entries;\n\tfor (size_t k = 0; k < modules.size(); k++)\n\t{\n\t\tSymDataModule& module = modules[k];\n\t\tfor (size_t i = 0; i < module.symbols.size(); i++)\n\t\t{\n\t\t\tSymDataSymbol& sym = module.symbols[i];\n\n\t\t\tsize_t size = 0;\n\t\t\tfor (size_t f = 0; f < module.functions.size(); f++)\n\t\t\t{\n\t\t\t\tif (module.functions[f].address == sym.address)\n\t\t\t\t{\n\t\t\t\t\tsize = module.functions[f].size;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tNocashSymEntry entry;\n\t\t\tentry.address = sym.address;\n\n\t\t\tif (size != 0 && nocashSymVersion >= 2)\n\t\t\t\tentry.text = formatString(L\"%s,%08X\",sym.name,size);\n\t\t\telse\n\t\t\t\tentry.text = sym.name;\n\n\t\t\tif (nocashSymVersion == 1)\n\t\t\t\tstd::transform(entry.text.begin(), entry.text.end(), entry.text.begin(), ::towlower);\n\n\t\t\tentries.push_back(entry);\n\t\t}\n\n\t\tfor (const SymDataData& data: module.data)\n\t\t{\n\t\t\tNocashSymEntry entry;\n\t\t\tentry.address = data.address;\n\n\t\t\tswitch (data.type)\n\t\t\t{\n\t\t\tcase Data8:\n\t\t\t\tentry.text = formatString(L\".byt:%04X\",data.size);\n\t\t\t\tbreak;\n\t\t\tcase Data16:\n\t\t\t\tentry.text = formatString(L\".wrd:%04X\",data.size);\n\t\t\t\tbreak;\n\t\t\tcase Data32:\n\t\t\t\tentry.text = formatString(L\".dbl:%04X\",data.size);\n\t\t\t\tbreak;\n\t\t\tcase Data64:\n\t\t\t\tentry.text = formatString(L\".dbl:%04X\",data.size);\n\t\t\t\tbreak;\n\t\t\tcase DataAscii:\n\t\t\t\tentry.text = formatString(L\".asc:%04X\",data.size);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tentries.push_back(entry);\n\t\t}\n\t}\n\n\tstd::sort(entries.begin(),entries.end());\n\n\tTextFile file;\n\tif (file.open(nocashSymFileName,TextFile::Write,TextFile::ASCII) == false)\n\t{\n\t\tLogger::printError(Logger::Error,L\"Could not open sym file %s.\",file.getFileName());\n\t\treturn;\n\t}\n\tfile.writeLine(L\"00000000 0\");\n\n\tfor (size_t i = 0; i < entries.size(); i++)\n\t{\n\t\tfile.writeFormat(L\"%08X %s\\n\",entries[i].address,entries[i].text);\n\t}\n\n\tfile.write(\"\\x1A\");\n\tfile.close();\n}\n\nvoid SymbolData::write()\n{\n\twriteNocashSym();\n}\n\nvoid SymbolData::addLabel(int64_t memoryAddress, const std::wstring& name)\n{\n\tif (!enabled)\n\t\treturn;\n\n\tSymDataSymbol sym;\n\tsym.address = memoryAddress;\n\tsym.name = name;\n\n\tfor (SymDataSymbol& symbol: modules[currentModule].symbols)\n\t{\n\t\tif (symbol.address == sym.address && symbol.name == sym.name)\n\t\t\treturn;\n\t}\n\n\tmodules[currentModule].symbols.push_back(sym);\n}\n\nvoid SymbolData::addData(int64_t address, size_t size, DataType type)\n{\n\tif (!enabled)\n\t\treturn;\n\n\tSymDataData data;\n\tdata.address = address;\n\tdata.size = size;\n\tdata.type = type;\n\tmodules[currentModule].data.insert(data);\n}\n\nsize_t SymbolData::addFileName(const std::wstring& fileName)\n{\n\tfor (size_t i = 0; i < files.size(); i++)\n\t{\n\t\tif (files[i] == fileName)\n\t\t\treturn i;\n\t}\n\n\tfiles.push_back(fileName);\n\treturn files.size()-1;\n}\n\nvoid SymbolData::startModule(AssemblerFile* file)\n{\n\tfor (size_t i = 0; i < modules.size(); i++)\n\t{\n\t\tif (modules[i].file == file)\n\t\t{\n\t\t\tcurrentModule = i;\n\t\t\treturn;\n\t\t}\n\t}\n\n\tSymDataModule module;\n\tmodule.file = file;\n\tmodules.push_back(module);\n\tcurrentModule = modules.size()-1;\n}\n\nvoid SymbolData::endModule(AssemblerFile* file)\n{\n\tif (modules[currentModule].file != file)\n\t\treturn;\n\n\tif (currentModule == 0)\n\t{\n\t\tLogger::printError(Logger::Error,L\"No module opened\");\n\t\treturn;\n\t}\n\n\tif (currentFunction != -1)\n\t{\n\t\tLogger::printError(Logger::Error,L\"Module closed before function end\");\n\t\tcurrentFunction = -1;\n\t}\n\n\tcurrentModule = 0;\n}\n\nvoid SymbolData::startFunction(int64_t address)\n{\n\tif (currentFunction != -1)\n\t{\n\t\tendFunction(address);\n\t}\n\n\tcurrentFunction = modules[currentModule].functions.size();\n\n\tSymDataFunction func;\n\tfunc.address = address;\n\tfunc.size = 0;\n\tmodules[currentModule].functions.push_back(func);\n}\n\nvoid SymbolData::endFunction(int64_t address)\n{\n\tif (currentFunction == -1)\n\t{\n\t\tLogger::printError(Logger::Error,L\"Not inside a function\");\n\t\treturn;\n\t}\n\n\tSymDataFunction& func = modules[currentModule].functions[currentFunction];\n\tfunc.size = (size_t) (address-func.address);\n\tcurrentFunction = -1;\n}\n\n// file: Core/SymbolTable.cpp\n\nconst wchar_t validSymbolCharacters[] = L\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_.\";\n\nbool operator<(SymbolKey const& lhs, SymbolKey const& rhs)\n{\n\tif (lhs.file != rhs.file)\n\t\treturn lhs.file < rhs.file;\n\tif (lhs.section != rhs.section)\n\t\treturn lhs.section < rhs.section;\n\treturn lhs.name.compare(rhs.name) < 0;\n}\n\nSymbolTable::SymbolTable()\n{\n\tuniqueCount = 0;\n}\n\nSymbolTable::~SymbolTable()\n{\n\tclear();\n}\n\nvoid SymbolTable::clear()\n{\n\tsymbols.clear();\n\tlabels.clear();\n\tequationsCount = 0;\n\tuniqueCount = 0;\n}\n\nvoid SymbolTable::setFileSectionValues(const std::wstring& symbol, int& file, int& section)\n{\n\tif (symbol[0] == '@')\n\t{\n\t\tif (symbol[1] != '@')\n\t\t{\n\t\t\t// static label, @. the section doesn't matter\n\t\t\tsection = -1;\n\t\t} else {\n\t\t\t// local label, @@. the file doesn't matter\n\t\t\tfile = -1;\n\t\t}\n\t} else {\n\t\t// global label. neither file nor section matters\n\t\tfile = section = -1;\n\t}\n}\n\nstd::shared_ptr<Label> SymbolTable::getLabel(const std::wstring& symbol, int file, int section)\n{\n\tif (isValidSymbolName(symbol) == false)\n\t\treturn nullptr;\n\n\tint actualSection = section;\n\tsetFileSectionValues(symbol,file,section);\n\tSymbolKey key = { symbol, file, section };\n\n\t// find label, create new one if it doesn't exist\n\tauto it = symbols.find(key);\n\tif (it == symbols.end())\n\t{\n\t\tSymbolInfo value = { LabelSymbol, labels.size() };\n\t\tsymbols[key] = value;\n\n\t\tstd::shared_ptr<Label> result = std::make_shared<Label>(symbol);\n\t\tif (section == actualSection)\n\t\t\tresult->setSection(section);\t\t\t// local, set section of parent\n\t\telse\n\t\t\tresult->setSection(actualSection+1);\t// global, set section of children\n\t\tlabels.push_back(result);\n\t\treturn result;\n\t}\n\n\t// make sure not to match symbols that aren't labels\n\tif (it->second.type != LabelSymbol)\n\t\treturn nullptr;\n\n\treturn labels[it->second.index];\n}\n\nbool SymbolTable::symbolExists(const std::wstring& symbol, int file, int section)\n{\n\tif (isValidSymbolName(symbol) == false)\n\t\treturn false;\n\n\tsetFileSectionValues(symbol,file,section);\n\n\tSymbolKey key = { symbol, file, section };\n\tauto it = symbols.find(key);\n\treturn it != symbols.end();\n}\n\nbool SymbolTable::isValidSymbolName(const std::wstring& symbol)\n{\n\tsize_t size = symbol.size();\n\tsize_t start = 0;\n\n\t// don't match empty names\n\tif (size == 0 || symbol.compare(L\"@\") == 0 || symbol.compare(L\"@@\") == 0)\n\t\treturn false;\n\n\tif (symbol[0] == '@')\n\t{\n\t\tstart++;\n\t\tif (size > 1 && symbol[1] == '@')\n\t\t\tstart++;\n\t}\n\n\tif (symbol[start] >= '0' && symbol[start] <= '9')\n\t\treturn false;\n\n\tfor (size_t i = start; i < size; i++)\n\t{\n\t\tif (wcschr(validSymbolCharacters,symbol[i]) == nullptr)\n\t\t\treturn false;\n\t}\n\n\treturn true;\n}\n\nbool SymbolTable::isValidSymbolCharacter(wchar_t character, bool first)\n{\n\tif ((character >= 'a' && character <= 'z') || (character >= 'A' && character <= 'Z')) return true;\n\tif (!first && (character >= '0' && character <= '9')) return true;\n\tif (character == '_' || character == '.') return true;\n\tif (character == '@') return true;\n\treturn false;\n}\n\nbool SymbolTable::addEquation(const std::wstring& name, int file, int section, size_t referenceIndex)\n{\n\tif (isValidSymbolName(name) == false)\n\t\treturn false;\n\n\tif (symbolExists(name,file,section))\n\t\treturn false;\n\n\tsetFileSectionValues(name,file,section);\n\n\tSymbolKey key = { name, file, section };\n\tSymbolInfo value = { EquationSymbol, referenceIndex };\n\tsymbols[key] = value;\n\n\tequationsCount++;\n\treturn true;\n}\n\nbool SymbolTable::findEquation(const std::wstring& name, int file, int section, size_t& dest)\n{\n\tsetFileSectionValues(name,file,section);\n\n\tSymbolKey key = { name, file, section };\n\tauto it = symbols.find(key);\n\tif (it == symbols.end() || it->second.type != EquationSymbol)\n\t\treturn false;\n\n\tdest = it->second.index;\n\treturn true;\n}\n\n// TODO: better\nstd::wstring SymbolTable::getUniqueLabelName(bool local)\n{\n\tstd::wstring name = formatString(L\"__armips_label_%08x__\",uniqueCount++);\n\tif (local)\n\t\tname = L\"@@\" + name;\n\n\tgeneratedLabels.insert(name);\n\treturn name;\n}\n\nvoid SymbolTable::addLabels(const std::vector<LabelDefinition>& labels)\n{\n\tfor (const LabelDefinition& def: labels)\n\t{\n\t\tif (!isValidSymbolName(def.name))\n\t\t\tcontinue;\n\n\t\tstd::shared_ptr<Label> label = getLabel(def.name,Global.FileInfo.FileNum,Global.Section);\n\t\tif (label == nullptr)\n\t\t\tcontinue;\n\n\t\tlabel->setOriginalName(def.originalName);\n\n\t\tif (isLocalSymbol(def.name) == false)\n\t\t\tGlobal.Section++;\n\n\t\tlabel->setDefined(true);\n\t\tlabel->setValue(def.value);\n\t}\n}\n\nint SymbolTable::findSection(int64_t address)\n{\n\tint64_t smallestBefore = -1;\n\tint64_t smallestDiff = 0x7FFFFFFF;\n\n\tfor (auto& lab: labels)\n\t{\n\t\tint diff = address-lab->getValue();\n\t\tif (diff >= 0 && diff < smallestDiff)\n\t\t{\n\t\t\tsmallestDiff = diff;\n\t\t\tsmallestBefore = lab->getSection();\n\t\t}\n\t}\n\n\treturn smallestBefore;\n}\n\n// file: Main/main.cpp\n\nint wmain(int argc, wchar_t* argv[])\n{\n\tstd::setlocale(LC_CTYPE,\"\");\n\n#ifdef ARMIPS_TESTS\n\tstd::wstring name;\n\n\tif (argc < 2)\n\t\treturn !runTests(L\"Tests\", argv[0]);\n\telse\n\t\treturn !runTests(argv[1], argv[0]);\n#endif\n\n\tStringList arguments = getStringListFromArray(argv,argc);\n\n\treturn runFromCommandLine(arguments);\n}\n\n#ifndef _WIN32\n\nint main(int argc, char* argv[])\n{\n\t// convert input to wstring\n\tstd::vector<std::wstring> wideStrings;\n\tfor (int i = 0; i < argc; i++)\n\t{\n\t\tstd::wstring str = convertUtf8ToWString(argv[i]);\n\t\twideStrings.push_back(str);\n\t}\n\n\t// create argv replacement\n\twchar_t** wargv = new wchar_t*[argc];\n\tfor (int i = 0; i < argc; i++)\n\t{\n\t\twargv[i] = (wchar_t*) wideStrings[i].c_str();\n\t}\n\n\tint result = wmain(argc,wargv);\n\n\tdelete[] wargv;\n\treturn result;\n}\n\n#endif\n\n"
  },
  {
    "path": "tools/asm-processor/.gitignore",
    "content": "*.o\n*.py[cod]\n"
  },
  {
    "path": "tools/asm-processor/LICENSE",
    "content": "This is free and unencumbered software released into the public domain.\n\nAnyone is free to copy, modify, publish, use, compile, sell, or\ndistribute this software, either in source code form or as a compiled\nbinary, for any purpose, commercial or non-commercial, and by any\nmeans.\n\nIn jurisdictions that recognize copyright laws, the author or authors\nof this software dedicate any and all copyright interest in the\nsoftware to the public domain. We make this dedication for the benefit\nof the public at large and to the detriment of our heirs and\nsuccessors. We intend this dedication to be an overt act of\nrelinquishment in perpetuity of all present and future rights to this\nsoftware under copyright law.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR\nOTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,\nARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n\nFor more information, please refer to <http://unlicense.org>\n"
  },
  {
    "path": "tools/asm-processor/README.md",
    "content": "# asm-processor\n\nPre-process .c files and post-process .o files to enable embedding MIPS assembly into IDO-compiled C.\n\n## Usage\n\nLet's say you have a file compiled with `-g` on the IDO compiler, that looks like this:\n```c\nfloat func4(void) {\n    \"func4\";\n    return 0.2f;\n}\n```\n\nThis script enables replacing it by:\n```asm\nGLOBAL_ASM(\n.rdata\n.word 0x66756e63 # func\n.word 0x34000000 # 4\\0\\0\\0\n\n.late_rodata\nglabel rv\n.word 0x3e4ccccd # 0.2f\n\n.text\nglabel func4\nlui     $at, %hi(rv)\njr      $ra\nlwc1    $f0, %lo(rv)($at)\njr      $ra\nnop\njr      $ra\nnop\n)\n```\n\nTo compile the file, run `python3 build.py $CC -- $AS $ASFLAGS -- $CFLAGS -o out.o in.c`, where $CC points to an IDO binary (5.3/7.1 and recomp/qemu all supported), $AS is e.g. `mips-linux-gnu-as`, $ASFLAGS e.g. `-march=vr4300 -mabi=32` and $CFLAGS e.g. `-Wab,-r4300_mul -non_shared -G 0 -Xcpluscomm -g`. build.py may be customized as needed.\n\nIn addition to an .o file, build.py also generates a .d file with Makefile dependencies for .s files referenced by the input .c file.\nThis functionality may be removed if not needed.\n\nReading assembly from file is also supported, by either `GLOBAL_ASM(\"file.s\")` or `#pragma GLOBAL_ASM(\"file.s\")`.\n\n### What is supported?\n\n`.text`, `.data`, `.bss` and `.rodata` sections, `.word`/`.incbin`, `.ascii`/`.asciz`, and `-g`, `-g3`, `-O1`, `-O2`, `-framepointer` and `-mips1`/`-mips2` flags to the IDO compiler.\n\n### What is not supported?\n\n* complicated assembly (.ifdef, macro declarations/calls other than `glabel`, pseudo-instructions that expand to several real instructions)\n* non-IDO compilers\n* `-O3` (due to function reordering)\n\nC `#ifdef`s only work outside of `GLOBAL_ASM` calls, but is otherwise able to replace `.ifdef`.\n\n### What's up with \"late rodata\"?\n\nThe IDO compiler emits rodata in two passes: first array/string contents, then large literals/switch jump tables.\n\nData declared within `.rdata`/`.section .rodata` will end up in the first half, and `.late_rodata`/`.section .late_rodata` in the second half.\n\n### How does it work?\n\nIt's a bit of a hack!\nThe basic idea is replace `GLOBAL_ASM` blocks with dummy C functions/global vars of the same sections sizes as the assembly.\nThen the C file gets compiled, and the dummy contents overwritten with the injected assembly.\n\nTo accomplish this, asm-processor has logic for guessing the size of assembly contents\n(which assumes the assembly isn't too complicated, e.g. no macros),\nand for emitting C code of exact sizes for a bunch of different IDO compiler flags.\n\nThe assembler code is padded with nops to line it up with its correct position in the C;\nthis allows C and asm ELF files to be merged easily without having to fix up e.g. symbol addresses.\n\nThe most difficult part is `late_rodata`, which is hard to create programmatically.\nasm-processor does that by emitting code that uses dummy float literals/double literals/jump tables,\nassembles the late_rodata at another location of the .rodata section, then overwrites the dummy rodata.\nThis does require some movement of symbols and relocations, and quite a bit of care in what code to\nemit and how to preserve .double alignment.\n\nIt's worth noting some alternative ways in which asm-processor would have been implemented:\n- One idea to get rid of the C/asm size estimations is to emit arbitrary code, and then move code,\nsymbols and relocations to the correct place after the sizes are known.\nGiven the machinery for `late_rodata` this wouldn't have been too difficult, and it would have the upside of improved portability.\nThere is a big downside, however: using dummy code of incorrect size throws off alignment and can introduce unintended padding.\nFixing this would require running multiple passes of asm-processor, with one compile per `ASM_GLOBAL`.\n- Another idea is to run the compiler with -S to emit assembly, modify the emitted assembly, then run the assembler\n(which in IDO's case may perform additional instruction reordering etc.).\nThis option has not been investigated in much detail, and would perhaps be superior to the current implementation.\nIt does have a few unknowns to it, e.g. instruction encoding differences between GNU `as` and IDO's assembler,\nhow to avoid reordering the injected assembly, and how .rodata/.late_rodata are implemented.\n\n### Testing\n\nThere are a few tests to ensure you don't break anything when hacking on asm-processor: `./run-tests.sh` should exit without output if they pass, or else output a diff from previous to new version.\n\nTests need the environment variable `MIPS_CC` set to point to the IDO 7.1 compiler, with Pascal support enabled.\n\nFor example if asm-processor is cloned in the same directory as [ido static recomp](https://github.com/decompals/ido-static-recomp) and the working directory is asm-processor, tests can be run using:\n\n```sh\nMIPS_CC=../ido-static-recomp/build/7.1/out/cc ./run-tests.sh\n```\n\nOr using [qemu-irix](https://github.com/zeldaret/oot/releases/tag/0.1q) (don't forget `chmod u+x qemu-irix`) to emulate IDO:\n\n```sh\nMIPS_CC='./qemu-irix -silent -L ../ido-static-recomp/ido/7.1/ ../ido-static-recomp/ido/7.1/usr/bin/cc' ./run-tests.sh\n```\n\nTo skip running Pascal tests, remove the `tests/*.p` glob from `run-tests.sh`.\n"
  },
  {
    "path": "tools/asm-processor/add-test.sh",
    "content": "#!/usr/bin/env bash\nfor A in \"$@\"; do\n    OBJDUMPFLAGS=\"-srt\"\n    ./compile-test.sh \"$A\" && mips-linux-gnu-objdump $OBJDUMPFLAGS \"${A%.*}.o\" > \"${A%.*}.objdump\"\ndone\n"
  },
  {
    "path": "tools/asm-processor/asm_processor.py",
    "content": "#!/usr/bin/env python3\nimport argparse\nimport tempfile\nimport struct\nimport copy\nimport sys\nimport re\nimport os\nfrom collections import namedtuple\nfrom io import StringIO\n\nMAX_FN_SIZE = 100\nSLOW_CHECKS = False\n\nEI_NIDENT     = 16\nEI_CLASS      = 4\nEI_DATA       = 5\nEI_VERSION    = 6\nEI_OSABI      = 7\nEI_ABIVERSION = 8\nSTN_UNDEF = 0\n\nSHN_UNDEF     = 0\nSHN_ABS       = 0xfff1\nSHN_COMMON    = 0xfff2\nSHN_XINDEX    = 0xffff\nSHN_LORESERVE = 0xff00\n\nSTT_NOTYPE  = 0\nSTT_OBJECT  = 1\nSTT_FUNC    = 2\nSTT_SECTION = 3\nSTT_FILE    = 4\nSTT_COMMON  = 5\nSTT_TLS     = 6\n\nSTB_LOCAL  = 0\nSTB_GLOBAL = 1\nSTB_WEAK   = 2\n\nSTV_DEFAULT   = 0\nSTV_INTERNAL  = 1\nSTV_HIDDEN    = 2\nSTV_PROTECTED = 3\n\nSHT_NULL          = 0\nSHT_PROGBITS      = 1\nSHT_SYMTAB        = 2\nSHT_STRTAB        = 3\nSHT_RELA          = 4\nSHT_HASH          = 5\nSHT_DYNAMIC       = 6\nSHT_NOTE          = 7\nSHT_NOBITS        = 8\nSHT_REL           = 9\nSHT_SHLIB         = 10\nSHT_DYNSYM        = 11\nSHT_INIT_ARRAY    = 14\nSHT_FINI_ARRAY    = 15\nSHT_PREINIT_ARRAY = 16\nSHT_GROUP         = 17\nSHT_SYMTAB_SHNDX  = 18\nSHT_MIPS_GPTAB    = 0x70000003\nSHT_MIPS_DEBUG    = 0x70000005\nSHT_MIPS_REGINFO  = 0x70000006\nSHT_MIPS_OPTIONS  = 0x7000000d\n\nSHF_WRITE            = 0x1\nSHF_ALLOC            = 0x2\nSHF_EXECINSTR        = 0x4\nSHF_MERGE            = 0x10\nSHF_STRINGS          = 0x20\nSHF_INFO_LINK        = 0x40\nSHF_LINK_ORDER       = 0x80\nSHF_OS_NONCONFORMING = 0x100\nSHF_GROUP            = 0x200\nSHF_TLS              = 0x400\n\nR_MIPS_32   = 2\nR_MIPS_26   = 4\nR_MIPS_HI16 = 5\nR_MIPS_LO16 = 6\n\nMIPS_DEBUG_ST_STATIC = 2\nMIPS_DEBUG_ST_STATIC_PROC = 14\n\n\nclass ElfFormat:\n    def __init__(self, is_big_endian):\n        self.is_big_endian = is_big_endian\n        self.struct_char = \">\" if is_big_endian else \"<\"\n\n    def pack(self, fmt, *args):\n        return struct.pack(self.struct_char + fmt, *args)\n\n    def unpack(self, fmt, data):\n        return struct.unpack(self.struct_char + fmt, data)\n\n\nclass ElfHeader:\n    \"\"\"\n    typedef struct {\n        unsigned char   e_ident[EI_NIDENT];\n        Elf32_Half      e_type;\n        Elf32_Half      e_machine;\n        Elf32_Word      e_version;\n        Elf32_Addr      e_entry;\n        Elf32_Off       e_phoff;\n        Elf32_Off       e_shoff;\n        Elf32_Word      e_flags;\n        Elf32_Half      e_ehsize;\n        Elf32_Half      e_phentsize;\n        Elf32_Half      e_phnum;\n        Elf32_Half      e_shentsize;\n        Elf32_Half      e_shnum;\n        Elf32_Half      e_shstrndx;\n    } Elf32_Ehdr;\n    \"\"\"\n\n    def __init__(self, data):\n        self.e_ident = data[:EI_NIDENT]\n        assert self.e_ident[EI_CLASS] == 1 # 32-bit\n        self.fmt = ElfFormat(is_big_endian=(self.e_ident[EI_DATA] == 2))\n        self.e_type, self.e_machine, self.e_version, self.e_entry, self.e_phoff, self.e_shoff, self.e_flags, self.e_ehsize, self.e_phentsize, self.e_phnum, self.e_shentsize, self.e_shnum, self.e_shstrndx = self.fmt.unpack('HHIIIIIHHHHHH', data[EI_NIDENT:])\n        assert self.e_type == 1 # relocatable\n        assert self.e_machine == 8 # MIPS I Architecture\n        assert self.e_phoff == 0 # no program header\n        assert self.e_shoff != 0 # section header\n        assert self.e_shstrndx != SHN_UNDEF\n\n    def to_bin(self):\n        return self.e_ident + self.fmt.pack('HHIIIIIHHHHHH', self.e_type,\n                self.e_machine, self.e_version, self.e_entry, self.e_phoff,\n                self.e_shoff, self.e_flags, self.e_ehsize, self.e_phentsize,\n                self.e_phnum, self.e_shentsize, self.e_shnum, self.e_shstrndx)\n\n\nclass Symbol:\n    \"\"\"\n    typedef struct {\n        Elf32_Word      st_name;\n        Elf32_Addr      st_value;\n        Elf32_Word      st_size;\n        unsigned char   st_info;\n        unsigned char   st_other;\n        Elf32_Half      st_shndx;\n    } Elf32_Sym;\n    \"\"\"\n\n    def __init__(self, fmt, data, strtab, name=None):\n        self.fmt = fmt\n        self.st_name, self.st_value, self.st_size, st_info, self.st_other, self.st_shndx = fmt.unpack('IIIBBH', data)\n        assert self.st_shndx != SHN_XINDEX, \"too many sections (SHN_XINDEX not supported)\"\n        self.bind = st_info >> 4\n        self.type = st_info & 15\n        self.name = name if name is not None else strtab.lookup_str(self.st_name)\n        self.visibility = self.st_other & 3\n\n    @staticmethod\n    def from_parts(fmt, st_name, st_value, st_size, st_info, st_other, st_shndx, strtab, name):\n        header = fmt.pack('IIIBBH', st_name, st_value, st_size, st_info, st_other, st_shndx)\n        return Symbol(fmt, header, strtab, name)\n\n    def to_bin(self):\n        st_info = (self.bind << 4) | self.type\n        return self.fmt.pack('IIIBBH', self.st_name, self.st_value, self.st_size, st_info, self.st_other, self.st_shndx)\n\n\nclass Relocation:\n    def __init__(self, fmt, data, sh_type):\n        self.fmt = fmt\n        self.sh_type = sh_type\n        if sh_type == SHT_REL:\n            self.r_offset, self.r_info = fmt.unpack('II', data)\n        else:\n            self.r_offset, self.r_info, self.r_addend = fmt.unpack('III', data)\n        self.sym_index = self.r_info >> 8\n        self.rel_type = self.r_info & 0xff\n\n    def to_bin(self):\n        self.r_info = (self.sym_index << 8) | self.rel_type\n        if self.sh_type == SHT_REL:\n            return self.fmt.pack('II', self.r_offset, self.r_info)\n        else:\n            return self.fmt.pack('III', self.r_offset, self.r_info, self.r_addend)\n\n\nclass Section:\n    \"\"\"\n    typedef struct {\n        Elf32_Word   sh_name;\n        Elf32_Word   sh_type;\n        Elf32_Word   sh_flags;\n        Elf32_Addr   sh_addr;\n        Elf32_Off    sh_offset;\n        Elf32_Word   sh_size;\n        Elf32_Word   sh_link;\n        Elf32_Word   sh_info;\n        Elf32_Word   sh_addralign;\n        Elf32_Word   sh_entsize;\n    } Elf32_Shdr;\n    \"\"\"\n\n    def __init__(self, fmt, header, data, index):\n        self.fmt = fmt\n        self.sh_name, self.sh_type, self.sh_flags, self.sh_addr, self.sh_offset, self.sh_size, self.sh_link, self.sh_info, self.sh_addralign, self.sh_entsize = fmt.unpack('IIIIIIIIII', header)\n        assert not self.sh_flags & SHF_LINK_ORDER\n        if self.sh_entsize != 0:\n            assert self.sh_size % self.sh_entsize == 0\n        if self.sh_type == SHT_NOBITS:\n            self.data = b''\n        else:\n            self.data = data[self.sh_offset:self.sh_offset + self.sh_size]\n        self.index = index\n        self.relocated_by = []\n\n    @staticmethod\n    def from_parts(fmt, sh_name, sh_type, sh_flags, sh_link, sh_info, sh_addralign, sh_entsize, data, index):\n        header = fmt.pack('IIIIIIIIII', sh_name, sh_type, sh_flags, 0, 0, len(data), sh_link, sh_info, sh_addralign, sh_entsize)\n        return Section(fmt, header, data, index)\n\n    def lookup_str(self, index):\n        assert self.sh_type == SHT_STRTAB\n        to = self.data.find(b'\\0', index)\n        assert to != -1\n        return self.data[index:to].decode('latin1')\n\n    def add_str(self, string):\n        assert self.sh_type == SHT_STRTAB\n        ret = len(self.data)\n        self.data += string.encode('latin1') + b'\\0'\n        return ret\n\n    def is_rel(self):\n        return self.sh_type == SHT_REL or self.sh_type == SHT_RELA\n\n    def header_to_bin(self):\n        if self.sh_type != SHT_NOBITS:\n            self.sh_size = len(self.data)\n        return self.fmt.pack('IIIIIIIIII', self.sh_name, self.sh_type, self.sh_flags, self.sh_addr, self.sh_offset, self.sh_size, self.sh_link, self.sh_info, self.sh_addralign, self.sh_entsize)\n\n    def late_init(self, sections):\n        if self.sh_type == SHT_SYMTAB:\n            self.init_symbols(sections)\n        elif self.is_rel():\n            self.rel_target = sections[self.sh_info]\n            self.rel_target.relocated_by.append(self)\n            self.init_relocs()\n\n    def find_symbol(self, name):\n        assert self.sh_type == SHT_SYMTAB\n        for s in self.symbol_entries:\n            if s.name == name:\n                return (s.st_shndx, s.st_value)\n        return None\n\n    def find_symbol_in_section(self, name, section):\n        pos = self.find_symbol(name)\n        assert pos is not None\n        assert pos[0] == section.index\n        return pos[1]\n\n    def init_symbols(self, sections):\n        assert self.sh_type == SHT_SYMTAB\n        assert self.sh_entsize == 16\n        self.strtab = sections[self.sh_link]\n        entries = []\n        for i in range(0, self.sh_size, self.sh_entsize):\n            entries.append(Symbol(self.fmt, self.data[i:i+self.sh_entsize], self.strtab))\n        self.symbol_entries = entries\n\n    def init_relocs(self):\n        assert self.is_rel()\n        entries = []\n        for i in range(0, self.sh_size, self.sh_entsize):\n            entries.append(Relocation(self.fmt, self.data[i:i+self.sh_entsize], self.sh_type))\n        self.relocations = entries\n\n    def local_symbols(self):\n        assert self.sh_type == SHT_SYMTAB\n        return self.symbol_entries[:self.sh_info]\n\n    def global_symbols(self):\n        assert self.sh_type == SHT_SYMTAB\n        return self.symbol_entries[self.sh_info:]\n\n    def relocate_mdebug(self, original_offset):\n        assert self.sh_type == SHT_MIPS_DEBUG\n        new_data = bytearray(self.data)\n        shift_by = self.sh_offset - original_offset\n\n        # Update the file-relative offsets in the Symbolic HDRR\n        hdrr_magic, hdrr_vstamp, hdrr_ilineMax, hdrr_cbLine, \\\n            hdrr_cbLineOffset, hdrr_idnMax, hdrr_cbDnOffset, hdrr_ipdMax, \\\n            hdrr_cbPdOffset, hdrr_isymMax, hdrr_cbSymOffset, hdrr_ioptMax, \\\n            hdrr_cbOptOffset, hdrr_iauxMax, hdrr_cbAuxOffset, hdrr_issMax, \\\n            hdrr_cbSsOffset, hdrr_issExtMax, hdrr_cbSsExtOffset, hdrr_ifdMax, \\\n            hdrr_cbFdOffset, hdrr_crfd, hdrr_cbRfdOffset, hdrr_iextMax, \\\n            hdrr_cbExtOffset = self.fmt.unpack(\"HHIIIIIIIIIIIIIIIIIIIIIII\", self.data[0:0x60])\n\n        assert hdrr_magic == 0x7009, \"Invalid magic value for .mdebug symbolic header\"\n\n        hdrr_cbLineOffset += shift_by\n        hdrr_cbDnOffset += shift_by\n        hdrr_cbPdOffset += shift_by\n        hdrr_cbSymOffset += shift_by\n        hdrr_cbOptOffset += shift_by\n        hdrr_cbAuxOffset += shift_by\n        hdrr_cbSsOffset += shift_by\n        hdrr_cbSsExtOffset += shift_by\n        hdrr_cbFdOffset += shift_by\n        hdrr_cbRfdOffset += shift_by\n        hdrr_cbExtOffset += shift_by\n\n        new_data[0:0x60] = self.fmt.pack(\"HHIIIIIIIIIIIIIIIIIIIIIII\", hdrr_magic, hdrr_vstamp, hdrr_ilineMax, hdrr_cbLine, \\\n            hdrr_cbLineOffset, hdrr_idnMax, hdrr_cbDnOffset, hdrr_ipdMax, \\\n            hdrr_cbPdOffset, hdrr_isymMax, hdrr_cbSymOffset, hdrr_ioptMax, \\\n            hdrr_cbOptOffset, hdrr_iauxMax, hdrr_cbAuxOffset, hdrr_issMax, \\\n            hdrr_cbSsOffset, hdrr_issExtMax, hdrr_cbSsExtOffset, hdrr_ifdMax, \\\n            hdrr_cbFdOffset, hdrr_crfd, hdrr_cbRfdOffset, hdrr_iextMax, \\\n            hdrr_cbExtOffset)\n\n        self.data = bytes(new_data)\n\nclass ElfFile:\n    def __init__(self, data):\n        self.data = data\n        assert data[:4] == b'\\x7fELF', \"not an ELF file\"\n\n        self.elf_header = ElfHeader(data[0:52])\n        self.fmt = self.elf_header.fmt\n\n        offset, size = self.elf_header.e_shoff, self.elf_header.e_shentsize\n        null_section = Section(self.fmt, data[offset:offset + size], data, 0)\n        num_sections = self.elf_header.e_shnum or null_section.sh_size\n\n        self.sections = [null_section]\n        for i in range(1, num_sections):\n            ind = offset + i * size\n            self.sections.append(Section(self.fmt, data[ind:ind + size], data, i))\n\n        symtab = None\n        for s in self.sections:\n            if s.sh_type == SHT_SYMTAB:\n                assert not symtab\n                symtab = s\n        assert symtab is not None\n        self.symtab = symtab\n\n        shstr = self.sections[self.elf_header.e_shstrndx]\n        for s in self.sections:\n            s.name = shstr.lookup_str(s.sh_name)\n            s.late_init(self.sections)\n\n    def find_section(self, name):\n        for s in self.sections:\n            if s.name == name:\n                return s\n        return None\n\n    def add_section(self, name, sh_type, sh_flags, sh_link, sh_info, sh_addralign, sh_entsize, data):\n        shstr = self.sections[self.elf_header.e_shstrndx]\n        sh_name = shstr.add_str(name)\n        s = Section.from_parts(self.fmt, sh_name=sh_name, sh_type=sh_type,\n                sh_flags=sh_flags, sh_link=sh_link, sh_info=sh_info,\n                sh_addralign=sh_addralign, sh_entsize=sh_entsize, data=data,\n                index=len(self.sections))\n        self.sections.append(s)\n        s.name = name\n        s.late_init(self.sections)\n        return s\n\n    def drop_mdebug_gptab(self):\n        # We can only drop sections at the end, since otherwise section\n        # references might be wrong. Luckily, these sections typically are.\n        while self.sections[-1].sh_type in [SHT_MIPS_DEBUG, SHT_MIPS_GPTAB]:\n            self.sections.pop()\n\n    def write(self, filename):\n        outfile = open(filename, 'wb')\n        outidx = 0\n        def write_out(data):\n            nonlocal outidx\n            outfile.write(data)\n            outidx += len(data)\n        def pad_out(align):\n            if align and outidx % align:\n                write_out(b'\\0' * (align - outidx % align))\n\n        self.elf_header.e_shnum = len(self.sections)\n        write_out(self.elf_header.to_bin())\n\n        for s in self.sections:\n            if s.sh_type != SHT_NOBITS and s.sh_type != SHT_NULL:\n                pad_out(s.sh_addralign)\n                old_offset = s.sh_offset\n                s.sh_offset = outidx\n                if s.sh_type == SHT_MIPS_DEBUG and s.sh_offset != old_offset:\n                    # The .mdebug section has moved, relocate offsets\n                    s.relocate_mdebug(old_offset)\n                write_out(s.data)\n\n        pad_out(4)\n        self.elf_header.e_shoff = outidx\n        for s in self.sections:\n            write_out(s.header_to_bin())\n\n        outfile.seek(0)\n        outfile.write(self.elf_header.to_bin())\n        outfile.close()\n\n\ndef is_temp_name(name):\n    return name.startswith('_asmpp_')\n\n\n# https://stackoverflow.com/a/241506\ndef re_comment_replacer(match):\n    s = match.group(0)\n    if s[0] in \"/#\":\n        return \" \"\n    else:\n        return s\n\n\nre_comment_or_string = re.compile(\n    r'#.*|/\\*.*?\\*/|\"(?:\\\\.|[^\\\\\"])*\"'\n)\n\n\nclass Failure(Exception):\n    def __init__(self, message):\n        self.message = message\n\n    def __str__(self):\n        return self.message\n\n\nclass GlobalState:\n    def __init__(self, min_instr_count, skip_instr_count, use_jtbl_for_rodata, prelude_if_late_rodata, mips1, pascal):\n        # A value that hopefully never appears as a 32-bit rodata constant (or we\n        # miscompile late rodata). Increases by 1 in each step.\n        self.late_rodata_hex = 0xE0123456\n        self.valuectr = 0\n        self.namectr = 0\n        self.min_instr_count = min_instr_count\n        self.skip_instr_count = skip_instr_count\n        self.use_jtbl_for_rodata = use_jtbl_for_rodata\n        self.prelude_if_late_rodata = prelude_if_late_rodata\n        self.mips1 = mips1\n        self.pascal = pascal\n\n    def next_late_rodata_hex(self):\n        dummy_bytes = struct.pack('>I', self.late_rodata_hex)\n        if (self.late_rodata_hex & 0xffff) == 0:\n            # Avoid lui\n            self.late_rodata_hex += 1\n        self.late_rodata_hex += 1\n        return dummy_bytes\n\n    def make_name(self, cat):\n        self.namectr += 1\n        return '_asmpp_{}{}'.format(cat, self.namectr)\n\n    def func_prologue(self, name):\n        if self.pascal:\n            return \" \".join([\n                \"procedure {}();\".format(name),\n                \"type\",\n                \" pi = ^integer;\",\n                \" pf = ^single;\",\n                \" pd = ^double;\",\n                \"var\",\n                \" vi: pi;\",\n                \" vf: pf;\",\n                \" vd: pd;\",\n                \"begin\",\n                \" vi := vi;\",\n                \" vf := vf;\",\n                \" vd := vd;\",\n            ])\n        else:\n            return 'void {}(void) {{'.format(name)\n\n    def func_epilogue(self):\n        if self.pascal:\n            return \"end;\"\n        else:\n            return \"}\"\n\n    def pascal_assignment(self, tp, val):\n        self.valuectr += 1\n        address = (8 * self.valuectr) & 0x7FFF\n        return 'v{} := p{}({}); v{}^ := {};'.format(tp, tp, address, tp, val)\n\nFunction = namedtuple('Function', ['text_glabels', 'asm_conts', 'late_rodata_dummy_bytes', 'jtbl_rodata_size', 'late_rodata_asm_conts', 'fn_desc', 'data'])\n\n\nclass GlobalAsmBlock:\n    def __init__(self, fn_desc):\n        self.fn_desc = fn_desc\n        self.cur_section = '.text'\n        self.asm_conts = []\n        self.late_rodata_asm_conts = []\n        self.late_rodata_alignment = 0\n        self.late_rodata_alignment_from_content = False\n        self.text_glabels = []\n        self.fn_section_sizes = {\n            '.text': 0,\n            '.data': 0,\n            '.bss': 0,\n            '.rodata': 0,\n            '.late_rodata': 0,\n        }\n        self.fn_ins_inds = []\n        self.glued_line = ''\n        self.num_lines = 0\n\n    def fail(self, message, line=None):\n        context = self.fn_desc\n        if line:\n            context += \", at line \\\"\" + line + \"\\\"\"\n        raise Failure(message + \"\\nwithin \" + context)\n\n    def count_quoted_size(self, line, z, real_line, output_enc):\n        line = line.encode(output_enc).decode('latin1')\n        in_quote = False\n        has_comma = True\n        num_parts = 0\n        ret = 0\n        i = 0\n        digits = \"0123456789\" # 0-7 would be more sane, but this matches GNU as\n        while i < len(line):\n            c = line[i]\n            i += 1\n            if not in_quote:\n                if c == '\"':\n                    in_quote = True\n                    if z and not has_comma:\n                        self.fail(\".asciiz with glued strings is not supported due to GNU as version diffs\")\n                    num_parts += 1\n                elif c == ',':\n                    has_comma = True\n            else:\n                if c == '\"':\n                    in_quote = False\n                    has_comma = False\n                    continue\n                ret += 1\n                if c != '\\\\':\n                    continue\n                if i == len(line):\n                    self.fail(\"backslash at end of line not supported\", real_line)\n                c = line[i]\n                i += 1\n                # (if c is in \"bfnrtv\", we have a real escaped literal)\n                if c == 'x':\n                    # hex literal, consume any number of hex chars, possibly none\n                    while i < len(line) and line[i] in digits + \"abcdefABCDEF\":\n                        i += 1\n                elif c in digits:\n                    # octal literal, consume up to two more digits\n                    it = 0\n                    while i < len(line) and line[i] in digits and it < 2:\n                        i += 1\n                        it += 1\n\n        if in_quote:\n            self.fail(\"unterminated string literal\", real_line)\n        if num_parts == 0:\n            self.fail(\".ascii with no string\", real_line)\n        return ret + num_parts if z else ret\n\n    def align2(self):\n        while self.fn_section_sizes[self.cur_section] % 2 != 0:\n            self.fn_section_sizes[self.cur_section] += 1\n\n    def align4(self):\n        while self.fn_section_sizes[self.cur_section] % 4 != 0:\n            self.fn_section_sizes[self.cur_section] += 1\n\n    def add_sized(self, size, line):\n        if self.cur_section in ['.text', '.late_rodata']:\n            if size % 4 != 0:\n                self.fail(\"size must be a multiple of 4\", line)\n        if size < 0:\n            self.fail(\"size cannot be negative\", line)\n        self.fn_section_sizes[self.cur_section] += size\n        if self.cur_section == '.text':\n            if not self.text_glabels:\n                self.fail(\".text block without an initial glabel\", line)\n            self.fn_ins_inds.append((self.num_lines - 1, size // 4))\n\n    def process_line(self, line, output_enc):\n        self.num_lines += 1\n        if line.endswith('\\\\'):\n            self.glued_line += line[:-1]\n            return\n        line = self.glued_line + line\n        self.glued_line = ''\n\n        real_line = line\n        line = re.sub(re_comment_or_string, re_comment_replacer, line)\n        line = line.strip()\n        line = re.sub(r'^[a-zA-Z0-9_]+:\\s*', '', line)\n        changed_section = False\n        emitting_double = False\n        if line.startswith('glabel ') and self.cur_section == '.text':\n            self.text_glabels.append(line.split()[1])\n        if not line:\n            pass # empty line\n        elif line.startswith('glabel ') or line.startswith('dlabel ') or line.startswith('endlabel ') or (' ' not in line and line.endswith(':')):\n            pass # label\n        elif line.startswith('.section') or line in ['.text', '.data', '.rdata', '.rodata', '.bss', '.late_rodata']:\n            # section change\n            self.cur_section = '.rodata' if line == '.rdata' else line.split(',')[0].split()[-1]\n            if self.cur_section not in ['.data', '.text', '.rodata', '.late_rodata', '.bss']:\n                self.fail(\"unrecognized .section directive\", real_line)\n            changed_section = True\n        elif line.startswith('.late_rodata_alignment'):\n            if self.cur_section != '.late_rodata':\n                self.fail(\".late_rodata_alignment must occur within .late_rodata section\", real_line)\n            value = int(line.split()[1])\n            if value not in [4, 8]:\n                self.fail(\".late_rodata_alignment argument must be 4 or 8\", real_line)\n            if self.late_rodata_alignment and self.late_rodata_alignment != value:\n                self.fail(\".late_rodata_alignment alignment assumption conflicts with earlier .double directive. Make sure to provide explicit alignment padding.\")\n            self.late_rodata_alignment = value\n            changed_section = True\n        elif line.startswith('.incbin'):\n            self.add_sized(int(line.split(',')[-1].strip(), 0), real_line)\n        elif line.startswith('.word') or line.startswith('.gpword') or line.startswith('.float'):\n            self.align4()\n            self.add_sized(4 * len(line.split(',')), real_line)\n        elif line.startswith('.double'):\n            self.align4()\n            if self.cur_section == '.late_rodata':\n                align8 = self.fn_section_sizes[self.cur_section] % 8\n                # Automatically set late_rodata_alignment, so the generated C code uses doubles.\n                # This gives us correct alignment for the transferred doubles even when the\n                # late_rodata_alignment is wrong, e.g. for non-matching compilation.\n                if not self.late_rodata_alignment:\n                    self.late_rodata_alignment = 8 - align8\n                    self.late_rodata_alignment_from_content = True\n                elif self.late_rodata_alignment != 8 - align8:\n                    if self.late_rodata_alignment_from_content:\n                        self.fail(\"found two .double directives with different start addresses mod 8. Make sure to provide explicit alignment padding.\", real_line)\n                    else:\n                        self.fail(\".double at address that is not 0 mod 8 (based on .late_rodata_alignment assumption). Make sure to provide explicit alignment padding.\", real_line)\n            self.add_sized(8 * len(line.split(',')), real_line)\n            emitting_double = True\n        elif line.startswith('.space'):\n            self.add_sized(int(line.split()[1], 0), real_line)\n        elif line.startswith('.balign') or line.startswith('.align'):\n            align = int(line.split()[1])\n            if align != 4:\n                self.fail(\"only .balign 4 is supported\", real_line)\n            self.align4()\n        elif line.startswith('.asci'):\n            z = (line.startswith('.asciz') or line.startswith('.asciiz'))\n            self.add_sized(self.count_quoted_size(line, z, real_line, output_enc), real_line)\n        elif line.startswith('.byte'):\n            self.add_sized(len(line.split(',')), real_line)\n        elif line.startswith('.half'):\n            self.align2()\n            self.add_sized(2*len(line.split(',')), real_line)\n        elif line.startswith('.'):\n            # .macro, ...\n            self.fail(\"asm directive not supported\", real_line)\n        else:\n            # Unfortunately, macros are hard to support for .rodata --\n            # we don't know how how space they will expand to before\n            # running the assembler, but we need that information to\n            # construct the C code. So if we need that we'll either\n            # need to run the assembler twice (at least in some rare\n            # cases), or change how this program is invoked.\n            # Similarly, we can't currently deal with pseudo-instructions\n            # that expand to several real instructions.\n            if self.cur_section != '.text':\n                self.fail(\"instruction or macro call in non-.text section? not supported\", real_line)\n            self.add_sized(4, real_line)\n        if self.cur_section == '.late_rodata':\n            if not changed_section:\n                if emitting_double:\n                    self.late_rodata_asm_conts.append(\".align 0\")\n                self.late_rodata_asm_conts.append(real_line)\n                if emitting_double:\n                    self.late_rodata_asm_conts.append(\".align 2\")\n        else:\n            self.asm_conts.append(real_line)\n\n    def finish(self, state):\n        src = [''] * (self.num_lines + 1)\n        late_rodata_dummy_bytes = []\n        jtbl_rodata_size = 0\n        late_rodata_fn_output = []\n\n        num_instr = self.fn_section_sizes['.text'] // 4\n\n        if self.fn_section_sizes['.late_rodata'] > 0:\n            # Generate late rodata by emitting unique float constants.\n            # This requires 3 instructions for each 4 bytes of rodata.\n            # If we know alignment, we can use doubles, which give 3\n            # instructions for 8 bytes of rodata.\n            size = self.fn_section_sizes['.late_rodata'] // 4\n            skip_next = False\n            needs_double = (self.late_rodata_alignment != 0)\n            extra_mips1_nop = False\n            if state.pascal:\n                jtbl_size = 9 if state.mips1 else 8\n                jtbl_min_rodata_size = 2\n            else:\n                jtbl_size = 11 if state.mips1 else 9\n                jtbl_min_rodata_size = 5\n            for i in range(size):\n                if skip_next:\n                    skip_next = False\n                    continue\n                # Jump tables give 9 instructions (11 with -mips1) for >= 5 words of rodata,\n                # and should be emitted when:\n                # - -O2 or -O2 -g3 are used, which give the right codegen\n                # - we have emitted our first .float/.double (to ensure that we find the\n                #   created rodata in the binary)\n                # - we have emitted our first .double, if any (to ensure alignment of doubles\n                #   in shifted rodata sections)\n                # - we have at least 5 words of rodata left to emit (otherwise IDO does not\n                #   generate a jump table)\n                # - we have at least 10 more instructions to go in this function (otherwise our\n                #   function size computation will be wrong since the delay slot goes unused)\n                if (not needs_double and state.use_jtbl_for_rodata and i >= 1 and\n                        size - i >= jtbl_min_rodata_size and\n                        num_instr - len(late_rodata_fn_output) >= jtbl_size + 1):\n                    if state.pascal:\n                        cases = \" \".join(\"{}: ;\".format(case) for case in range(size - i))\n                        line = \"case 0 of \" + cases + \" otherwise end;\"\n                    else:\n                        cases = \" \".join(\"case {}:\".format(case) for case in range(size - i))\n                        line = \"switch (*(volatile int*)0) { \" + cases + \" ; }\"\n                    late_rodata_fn_output.append(line)\n                    late_rodata_fn_output.extend([\"\"] * (jtbl_size - 1))\n                    jtbl_rodata_size = (size - i) * 4\n                    extra_mips1_nop = i != 2\n                    break\n                dummy_bytes = state.next_late_rodata_hex()\n                late_rodata_dummy_bytes.append(dummy_bytes)\n                if self.late_rodata_alignment == 4 * ((i + 1) % 2 + 1) and i + 1 < size:\n                    dummy_bytes2 = state.next_late_rodata_hex()\n                    late_rodata_dummy_bytes.append(dummy_bytes2)\n                    fval, = struct.unpack('>d', dummy_bytes + dummy_bytes2)\n                    if state.pascal:\n                        line = state.pascal_assignment('d', fval)\n                    else:\n                        line = '*(volatile double*)0 = {};'.format(fval)\n                    late_rodata_fn_output.append(line)\n                    skip_next = True\n                    needs_double = False\n                    if state.mips1:\n                        # mips1 does not have ldc1/sdc1\n                        late_rodata_fn_output.append('')\n                        late_rodata_fn_output.append('')\n                    extra_mips1_nop = False\n                else:\n                    fval, = struct.unpack('>f', dummy_bytes)\n                    if state.pascal:\n                        line = state.pascal_assignment('f', fval)\n                    else:\n                        line = '*(volatile float*)0 = {}f;'.format(fval)\n                    late_rodata_fn_output.append(line)\n                    extra_mips1_nop = True\n                late_rodata_fn_output.append('')\n                late_rodata_fn_output.append('')\n            if state.mips1 and extra_mips1_nop:\n                late_rodata_fn_output.append('')\n\n        text_name = None\n        if self.fn_section_sizes['.text'] > 0 or late_rodata_fn_output:\n            text_name = state.make_name('func')\n            src[0] = state.func_prologue(text_name)\n            src[self.num_lines] = state.func_epilogue()\n            instr_count = self.fn_section_sizes['.text'] // 4\n            if instr_count < state.min_instr_count:\n                self.fail(\"too short .text block\")\n            tot_emitted = 0\n            tot_skipped = 0\n            fn_emitted = 0\n            fn_skipped = 0\n            skipping = True\n            rodata_stack = late_rodata_fn_output[::-1]\n            for (line, count) in self.fn_ins_inds:\n                for _ in range(count):\n                    if (fn_emitted > MAX_FN_SIZE and instr_count - tot_emitted > state.min_instr_count and\n                            (not rodata_stack or rodata_stack[-1])):\n                        # Don't let functions become too large. When a function reaches 284\n                        # instructions, and -O2 -framepointer flags are passed, the IRIX\n                        # compiler decides it is a great idea to start optimizing more.\n                        # Also, Pascal cannot handle too large functions before it runs out\n                        # of unique statements to write.\n                        fn_emitted = 0\n                        fn_skipped = 0\n                        skipping = True\n                        src[line] += (' ' + state.func_epilogue() + ' ' +\n                            state.func_prologue(state.make_name('large_func')) + ' ')\n                    if (\n                        skipping and\n                        fn_skipped < state.skip_instr_count +\n                            (state.prelude_if_late_rodata if rodata_stack else 0)\n                    ):\n                        fn_skipped += 1\n                        tot_skipped += 1\n                    else:\n                        skipping = False\n                        if rodata_stack:\n                            src[line] += rodata_stack.pop()\n                        elif state.pascal:\n                            src[line] += state.pascal_assignment('i', '0')\n                        else:\n                            src[line] += '*(volatile int*)0 = 0;'\n                    tot_emitted += 1\n                    fn_emitted += 1\n            if rodata_stack:\n                size = len(late_rodata_fn_output) // 3\n                available = instr_count - tot_skipped\n                self.fail(\n                    \"late rodata to text ratio is too high: {} / {} must be <= 1/3\\n\"\n                    \"add .late_rodata_alignment (4|8) to the .late_rodata \"\n                    \"block to double the allowed ratio.\"\n                        .format(size, available))\n\n        rodata_name = None\n        if self.fn_section_sizes['.rodata'] > 0:\n            if state.pascal:\n                self.fail(\".rodata isn't supported with Pascal for now\")\n            rodata_name = state.make_name('rodata')\n            src[self.num_lines] += ' const char {}[{}] = {{1}};'.format(rodata_name, self.fn_section_sizes['.rodata'])\n\n        data_name = None\n        if self.fn_section_sizes['.data'] > 0:\n            data_name = state.make_name('data')\n            if state.pascal:\n                line = ' var {}: packed array[1..{}] of char := [otherwise: 0];'.format(data_name, self.fn_section_sizes['.data'])\n            else:\n                line = ' char {}[{}] = {{1}};'.format(data_name, self.fn_section_sizes['.data'])\n            src[self.num_lines] += line\n\n        bss_name = None\n        if self.fn_section_sizes['.bss'] > 0:\n            if state.pascal:\n                self.fail(\".bss isn't supported with Pascal\")\n            bss_name = state.make_name('bss')\n            src[self.num_lines] += ' char {}[{}];'.format(bss_name, self.fn_section_sizes['.bss'])\n\n        fn = Function(\n                text_glabels=self.text_glabels,\n                asm_conts=self.asm_conts,\n                late_rodata_dummy_bytes=late_rodata_dummy_bytes,\n                jtbl_rodata_size=jtbl_rodata_size,\n                late_rodata_asm_conts=self.late_rodata_asm_conts,\n                fn_desc=self.fn_desc,\n                data={\n                    '.text': (text_name, self.fn_section_sizes['.text']),\n                    '.data': (data_name, self.fn_section_sizes['.data']),\n                    '.rodata': (rodata_name, self.fn_section_sizes['.rodata']),\n                    '.bss': (bss_name, self.fn_section_sizes['.bss']),\n                })\n        return src, fn\n\ncutscene_data_regexpr = re.compile(r\"CutsceneData (.|\\n)*\\[\\] = {\")\nfloat_regexpr = re.compile(r\"[-+]?[0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?f\")\n\ndef repl_float_hex(m):\n    return str(struct.unpack(\">I\", struct.pack(\">f\", float(m.group(0).strip().rstrip(\"f\"))))[0])\n\nOpts = namedtuple('Opts', ['opt', 'framepointer', 'mips1', 'kpic', 'pascal', 'input_enc', 'output_enc'])\n\ndef parse_source(f, opts, out_dependencies, print_source=None):\n    if opts.opt in ['O1', 'O2']:\n        if opts.framepointer:\n            min_instr_count = 6\n            skip_instr_count = 5\n        else:\n            min_instr_count = 2\n            skip_instr_count = 1\n    elif opts.opt == 'O0':\n        if opts.framepointer:\n            min_instr_count = 8\n            skip_instr_count = 8\n        else:\n            min_instr_count = 4\n            skip_instr_count = 4\n    elif opts.opt == 'g':\n        if opts.framepointer:\n            min_instr_count = 7\n            skip_instr_count = 7\n        else:\n            min_instr_count = 4\n            skip_instr_count = 4\n    elif opts.opt == 'g3':\n        if opts.framepointer:\n            min_instr_count = 4\n            skip_instr_count = 4\n        else:\n            min_instr_count = 2\n            skip_instr_count = 2\n    else:\n        raise Failure(\"must pass one of -g, -O0, -O1, -O2, -O2 -g3\")\n    prelude_if_late_rodata = 0\n    if opts.kpic:\n        # Without optimizations, the PIC prelude always takes up 3 instructions.\n        # With optimizations, the prelude is optimized out if there's no late rodata.\n        if opts.opt in ('g3', 'O2'):\n            prelude_if_late_rodata = 3\n        else:\n            min_instr_count += 3\n            skip_instr_count += 3\n\n    use_jtbl_for_rodata = False\n    if opts.opt in ['O2', 'g3'] and not opts.framepointer and not opts.kpic:\n        use_jtbl_for_rodata = True\n\n    state = GlobalState(min_instr_count, skip_instr_count, use_jtbl_for_rodata, prelude_if_late_rodata, opts.mips1, opts.pascal)\n    output_enc = opts.output_enc\n\n    global_asm = None\n    asm_functions = []\n    output_lines = [\n        '#line 1 \"' + f.name + '\"'\n    ]\n\n    is_cutscene_data = False\n    is_early_include = False\n\n    for line_no, raw_line in enumerate(f, 1):\n        raw_line = raw_line.rstrip()\n        line = raw_line.lstrip()\n\n        # Print exactly one output line per source line, to make compiler\n        # errors have correct line numbers. These will be overridden with\n        # reasonable content further down.\n        output_lines.append('')\n\n        if global_asm is not None:\n            if line.startswith(')'):\n                src, fn = global_asm.finish(state)\n                for i, line2 in enumerate(src):\n                    output_lines[start_index + i] = line2\n                asm_functions.append(fn)\n                global_asm = None\n            else:\n                global_asm.process_line(raw_line, output_enc)\n        elif line in ['GLOBAL_ASM(', '#pragma GLOBAL_ASM(']:\n            global_asm = GlobalAsmBlock(\"GLOBAL_ASM block at line \" + str(line_no))\n            start_index = len(output_lines)\n        elif ((line.startswith('GLOBAL_ASM(\"') or line.startswith('#pragma GLOBAL_ASM(\"'))\n                and line.endswith('\")')):\n            fname = line[line.index('(') + 2 : -2]\n            out_dependencies.append(fname)\n            global_asm = GlobalAsmBlock(fname)\n            with open(fname, encoding=opts.input_enc) as f:\n                for line2 in f:\n                    global_asm.process_line(line2.rstrip(), output_enc)\n            src, fn = global_asm.finish(state)\n            output_lines[-1] = ''.join(src)\n            asm_functions.append(fn)\n            global_asm = None\n        elif line == '#pragma asmproc recurse':\n            # C includes qualified as\n            # #pragma asmproc recurse\n            # #include \"file.c\"\n            # will be processed recursively when encountered\n            is_early_include = True\n        elif is_early_include:\n            # Previous line was a #pragma asmproc recurse\n            is_early_include = False\n            if not line.startswith(\"#include \"):\n                raise Failure(\"#pragma asmproc recurse must be followed by an #include \")\n            fpath = os.path.dirname(f.name)\n            fname = os.path.join(fpath, line[line.index(' ') + 2 : -1])\n            out_dependencies.append(fname)\n            include_src = StringIO()\n            with open(fname, encoding=opts.input_enc) as include_file:\n                parse_source(include_file, opts, out_dependencies, include_src)\n            include_src.write('#line ' + str(line_no + 1) + ' \"' + f.name + '\"')\n            output_lines[-1] = include_src.getvalue()\n            include_src.close()\n        else:\n            # This is a hack to replace all floating-point numbers in an array of a particular type\n            # (in this case CutsceneData) with their corresponding IEEE-754 hexadecimal representation\n            if cutscene_data_regexpr.search(line) is not None:\n                is_cutscene_data = True\n            elif line.endswith(\"};\"):\n                is_cutscene_data = False\n            if is_cutscene_data:\n                raw_line = re.sub(float_regexpr, repl_float_hex, raw_line)\n            output_lines[-1] = raw_line\n\n    if print_source:\n        if isinstance(print_source, StringIO):\n            for line in output_lines:\n                print_source.write(line + '\\n')\n        else:\n            newline_encoded = \"\\n\".encode(output_enc)\n            for line in output_lines:\n                try:\n                    line_encoded = line.encode(output_enc)\n                except UnicodeEncodeError:\n                    print(\"Failed to encode a line to\", output_enc)\n                    print(\"The line:\", line)\n                    print(\"The line, utf-8-encoded:\", line.encode(\"utf-8\"))\n                    raise\n                print_source.write(line_encoded)\n                print_source.write(newline_encoded)\n            print_source.flush()\n\n    return asm_functions\n\ndef fixup_objfile(objfile_name, functions, asm_prelude, assembler, output_enc, drop_mdebug_gptab, convert_statics):\n    SECTIONS = ['.data', '.text', '.rodata', '.bss']\n\n    with open(objfile_name, 'rb') as f:\n        objfile = ElfFile(f.read())\n    fmt = objfile.fmt\n\n    prev_locs = {\n        '.text': 0,\n        '.data': 0,\n        '.rodata': 0,\n        '.bss': 0,\n    }\n    to_copy = {\n        '.text': [],\n        '.data': [],\n        '.rodata': [],\n        '.bss': [],\n    }\n    asm = []\n    all_late_rodata_dummy_bytes = []\n    all_jtbl_rodata_size = []\n    late_rodata_asm = []\n    late_rodata_source_name_start = None\n    late_rodata_source_name_end = None\n\n    # Generate an assembly file with all the assembly we need to fill in. For\n    # simplicity we pad with nops/.space so that addresses match exactly, so we\n    # don't have to fix up relocations/symbol references.\n    all_text_glabels = set()\n    func_sizes = {}\n    for function in functions:\n        ifdefed = False\n        for sectype, (temp_name, size) in function.data.items():\n            if temp_name is None:\n                continue\n            assert size > 0\n            loc = objfile.symtab.find_symbol(temp_name)\n            if loc is None:\n                ifdefed = True\n                break\n            loc = loc[1]\n            prev_loc = prev_locs[sectype]\n            if loc < prev_loc:\n                # If the dummy C generates too little asm, and we have two\n                # consecutive GLOBAL_ASM blocks, we detect that error here.\n                # On the other hand, if it generates too much, we don't have\n                # a good way of discovering that error: it's indistinguishable\n                # from a static symbol occurring after the GLOBAL_ASM block.\n                raise Failure(\"Wrongly computed size for section {} (diff {}). This is an asm-processor bug!\".format(sectype, prev_loc- loc))\n            if loc != prev_loc:\n                asm.append('.section ' + sectype)\n                if sectype == '.text':\n                    for i in range((loc - prev_loc) // 4):\n                        asm.append('nop')\n                else:\n                    asm.append('.space {}'.format(loc - prev_loc))\n            to_copy[sectype].append((loc, size, temp_name, function.fn_desc))\n            if function.text_glabels:\n                func_sizes[function.text_glabels[0]] = size\n            prev_locs[sectype] = loc + size\n        if not ifdefed:\n            all_text_glabels.update(function.text_glabels)\n            all_late_rodata_dummy_bytes.append(function.late_rodata_dummy_bytes)\n            all_jtbl_rodata_size.append(function.jtbl_rodata_size)\n            late_rodata_asm.append(function.late_rodata_asm_conts)\n            for sectype, (temp_name, size) in function.data.items():\n                if temp_name is not None:\n                    asm.append('.section ' + sectype)\n                    asm.append('glabel ' + temp_name + '_asm_start')\n            asm.append('.text')\n            for line in function.asm_conts:\n                asm.append(line)\n            for sectype, (temp_name, size) in function.data.items():\n                if temp_name is not None:\n                    asm.append('.section ' + sectype)\n                    asm.append('glabel ' + temp_name + '_asm_end')\n    if any(late_rodata_asm):\n        late_rodata_source_name_start = '_asmpp_late_rodata_start'\n        late_rodata_source_name_end = '_asmpp_late_rodata_end'\n        asm.append('.section .late_rodata')\n        # Put some padding at the start to avoid conflating symbols with\n        # references to the whole section.\n        asm.append('.word 0, 0')\n        asm.append('glabel {}'.format(late_rodata_source_name_start))\n        for conts in late_rodata_asm:\n            asm.extend(conts)\n        asm.append('glabel {}'.format(late_rodata_source_name_end))\n\n    o_file = tempfile.NamedTemporaryFile(prefix='asm-processor', suffix='.o', delete=False)\n    o_name = o_file.name\n    o_file.close()\n    s_file = tempfile.NamedTemporaryFile(prefix='asm-processor', suffix='.s', delete=False)\n    s_name = s_file.name\n    try:\n        s_file.write(asm_prelude + b'\\n')\n        for line in asm:\n            s_file.write(line.encode(output_enc) + b'\\n')\n        s_file.close()\n        ret = os.system(assembler + \" \" + s_name + \" -o \" + o_name)\n        if ret != 0:\n            raise Failure(\"failed to assemble\")\n        with open(o_name, 'rb') as f:\n            asm_objfile = ElfFile(f.read())\n\n        # Remove clutter from objdump output for tests, and make the tests\n        # portable by avoiding absolute paths. Outside of tests .mdebug is\n        # useful for showing source together with asm, though.\n        mdebug_section = objfile.find_section('.mdebug')\n        if drop_mdebug_gptab:\n            objfile.drop_mdebug_gptab()\n\n        # Unify reginfo sections\n        target_reginfo = objfile.find_section('.reginfo')\n        if target_reginfo is not None:\n            source_reginfo_data = list(asm_objfile.find_section('.reginfo').data)\n            data = list(target_reginfo.data)\n            for i in range(20):\n                data[i] |= source_reginfo_data[i]\n            target_reginfo.data = bytes(data)\n\n        # Move over section contents\n        modified_text_positions = set()\n        jtbl_rodata_positions = set()\n        last_rodata_pos = 0\n        for sectype in SECTIONS:\n            if not to_copy[sectype]:\n                continue\n            source = asm_objfile.find_section(sectype)\n            assert source is not None, \"didn't find source section: \" + sectype\n            for (pos, count, temp_name, fn_desc) in to_copy[sectype]:\n                loc1 = asm_objfile.symtab.find_symbol_in_section(temp_name + '_asm_start', source)\n                loc2 = asm_objfile.symtab.find_symbol_in_section(temp_name + '_asm_end', source)\n                assert loc1 == pos, \"assembly and C files don't line up for section \" + sectype + \", \" + fn_desc\n                if loc2 - loc1 != count:\n                    raise Failure(\"incorrectly computed size for section \" + sectype + \", \" + fn_desc + \". If using .double, make sure to provide explicit alignment padding.\")\n            if sectype == '.bss':\n                continue\n            target = objfile.find_section(sectype)\n            assert target is not None, \"missing target section of type \" + sectype\n            data = list(target.data)\n            for (pos, count, _, _) in to_copy[sectype]:\n                data[pos:pos + count] = source.data[pos:pos + count]\n                if sectype == '.text':\n                    assert count % 4 == 0\n                    assert pos % 4 == 0\n                    for i in range(count // 4):\n                        modified_text_positions.add(pos + 4 * i)\n                elif sectype == '.rodata':\n                    last_rodata_pos = pos + count\n            target.data = bytes(data)\n\n        # Move over late rodata. This is heuristic, sadly, since I can't think\n        # of another way of doing it.\n        moved_late_rodata = {}\n        if any(all_late_rodata_dummy_bytes) or any(all_jtbl_rodata_size):\n            source = asm_objfile.find_section('.late_rodata')\n            target = objfile.find_section('.rodata')\n            source_pos = asm_objfile.symtab.find_symbol_in_section(late_rodata_source_name_start, source)\n            source_end = asm_objfile.symtab.find_symbol_in_section(late_rodata_source_name_end, source)\n            if source_end - source_pos != sum(map(len, all_late_rodata_dummy_bytes)) * 4 + sum(all_jtbl_rodata_size):\n                raise Failure(\"computed wrong size of .late_rodata\")\n            new_data = list(target.data)\n            for dummy_bytes_list, jtbl_rodata_size in zip(all_late_rodata_dummy_bytes, all_jtbl_rodata_size):\n                for index, dummy_bytes in enumerate(dummy_bytes_list):\n                    if not fmt.is_big_endian:\n                        dummy_bytes = dummy_bytes[::-1]\n                    pos = target.data.index(dummy_bytes, last_rodata_pos)\n                    # This check is nice, but makes time complexity worse for large files:\n                    if SLOW_CHECKS and target.data.find(dummy_bytes, pos + 4) != -1:\n                        raise Failure(\"multiple occurrences of late_rodata hex magic. Change asm-processor to use something better than 0xE0123456!\")\n                    if index == 0 and len(dummy_bytes_list) > 1 and target.data[pos+4:pos+8] == b'\\0\\0\\0\\0':\n                        # Ugly hack to handle double alignment for non-matching builds.\n                        # We were told by .late_rodata_alignment (or deduced from a .double)\n                        # that a function's late_rodata started out 4 (mod 8), and emitted\n                        # a float and then a double. But it was actually 0 (mod 8), so our\n                        # double was moved by 4 bytes. To make them adjacent to keep jump\n                        # tables correct, move the float by 4 bytes as well.\n                        new_data[pos:pos+4] = b'\\0\\0\\0\\0'\n                        pos += 4\n                    new_data[pos:pos+4] = source.data[source_pos:source_pos+4]\n                    moved_late_rodata[source_pos] = pos\n                    last_rodata_pos = pos + 4\n                    source_pos += 4\n                if jtbl_rodata_size > 0:\n                    assert dummy_bytes_list, \"should always have dummy bytes before jtbl data\"\n                    pos = last_rodata_pos\n                    new_data[pos : pos + jtbl_rodata_size] = \\\n                        source.data[source_pos : source_pos + jtbl_rodata_size]\n                    for i in range(0, jtbl_rodata_size, 4):\n                        moved_late_rodata[source_pos + i] = pos + i\n                        jtbl_rodata_positions.add(pos + i)\n                    last_rodata_pos += jtbl_rodata_size\n                    source_pos += jtbl_rodata_size\n            target.data = bytes(new_data)\n\n        # Merge strtab data.\n        strtab_adj = len(objfile.symtab.strtab.data)\n        objfile.symtab.strtab.data += asm_objfile.symtab.strtab.data\n\n        # Find relocated symbols\n        relocated_symbols = set()\n        for sectype in SECTIONS + ['.late_rodata']:\n            for obj in [asm_objfile, objfile]:\n                sec = obj.find_section(sectype)\n                if sec is None:\n                    continue\n                for reltab in sec.relocated_by:\n                    for rel in reltab.relocations:\n                        relocated_symbols.add(obj.symtab.symbol_entries[rel.sym_index])\n\n        # Move over symbols, deleting the temporary function labels.\n        # Skip over new local symbols that aren't relocated against, to\n        # avoid conflicts.\n        empty_symbol = objfile.symtab.symbol_entries[0]\n        new_syms = [s for s in objfile.symtab.symbol_entries[1:] if not is_temp_name(s.name)]\n\n        for i, s in enumerate(asm_objfile.symtab.symbol_entries):\n            is_local = (i < asm_objfile.symtab.sh_info)\n            if is_local and s not in relocated_symbols:\n                continue\n            if is_temp_name(s.name):\n                assert s not in relocated_symbols\n                continue\n            if s.st_shndx not in [SHN_UNDEF, SHN_ABS]:\n                section_name = asm_objfile.sections[s.st_shndx].name\n                target_section_name = section_name\n                if section_name == \".late_rodata\":\n                    target_section_name = \".rodata\"\n                elif section_name not in SECTIONS:\n                    raise Failure(\"generated assembly .o must only have symbols for .text, .data, .rodata, .late_rodata, ABS and UNDEF, but found \" + section_name)\n                objfile_section = objfile.find_section(target_section_name)\n                if objfile_section is None:\n                    raise Failure(\"generated assembly .o has section that real objfile lacks: \" + target_section_name)\n                s.st_shndx = objfile_section.index\n                # glabel's aren't marked as functions, making objdump output confusing. Fix that.\n                if s.name in all_text_glabels:\n                    s.type = STT_FUNC\n                    if s.name in func_sizes:\n                        s.st_size = func_sizes[s.name]\n                if section_name == '.late_rodata':\n                    if s.st_value == 0:\n                        # This must be a symbol corresponding to the whole .late_rodata\n                        # section, being referred to from a relocation.\n                        # Moving local symbols is tricky, because it requires fixing up\n                        # lo16/hi16 relocation references to .late_rodata+<offset>.\n                        # Just disallow it for now.\n                        raise Failure(\"local symbols in .late_rodata are not allowed\")\n                    s.st_value = moved_late_rodata[s.st_value]\n            s.st_name += strtab_adj\n            new_syms.append(s)\n        make_statics_global = convert_statics in (\"global\", \"global-with-filename\")\n\n        # Add static symbols from .mdebug, so they can be referred to from GLOBAL_ASM\n        if mdebug_section and convert_statics != \"no\":\n            strtab_index = len(objfile.symtab.strtab.data)\n            new_strtab_data = []\n            ifd_max, cb_fd_offset = fmt.unpack('II', mdebug_section.data[18*4 : 20*4])\n            cb_sym_offset, = fmt.unpack('I', mdebug_section.data[9*4 : 10*4])\n            cb_ss_offset, = fmt.unpack('I', mdebug_section.data[15*4 : 16*4])\n            for i in range(ifd_max):\n                offset = cb_fd_offset + 18*4*i\n                iss_base, _, isym_base, csym = fmt.unpack('IIII', objfile.data[offset + 2*4 : offset + 6*4])\n                for j in range(csym):\n                    offset2 = cb_sym_offset + 12 * (isym_base + j)\n                    iss, value, st_sc_index = fmt.unpack('III', objfile.data[offset2 : offset2 + 12])\n                    st = (st_sc_index >> 26)\n                    sc = (st_sc_index >> 21) & 0x1f\n                    if st in [MIPS_DEBUG_ST_STATIC, MIPS_DEBUG_ST_STATIC_PROC]:\n                        symbol_name_offset = cb_ss_offset + iss_base + iss\n                        symbol_name_offset_end = objfile.data.find(b'\\0', symbol_name_offset)\n                        assert symbol_name_offset_end != -1\n                        symbol_name = objfile.data[symbol_name_offset : symbol_name_offset_end + 1]\n                        emitted_symbol_name = symbol_name\n                        if convert_statics == \"global-with-filename\":\n                            # Change the emitted symbol name to include the filename,\n                            # but don't let that affect deduplication logic.\n                            emitted_symbol_name = objfile_name.encode(\"utf-8\") + b\":\" + symbol_name\n                        section_name = {1: '.text', 2: '.data', 3: '.bss', 15: '.rodata'}[sc]\n                        section = objfile.find_section(section_name)\n                        symtype = STT_FUNC if sc == 1 else STT_OBJECT\n                        binding = STB_GLOBAL if make_statics_global else STB_LOCAL\n                        sym = Symbol.from_parts(\n                            fmt,\n                            st_name=strtab_index,\n                            st_value=value,\n                            st_size=0,\n                            st_info=(binding << 4 | symtype),\n                            st_other=STV_DEFAULT,\n                            st_shndx=section.index,\n                            strtab=objfile.symtab.strtab,\n                            name=symbol_name[:-1].decode('latin1'))\n                        strtab_index += len(emitted_symbol_name)\n                        new_strtab_data.append(emitted_symbol_name)\n                        new_syms.append(sym)\n            objfile.symtab.strtab.data += b''.join(new_strtab_data)\n\n        # Get rid of duplicate symbols, favoring ones that are not UNDEF.\n        # Skip this for unnamed local symbols though.\n        new_syms.sort(key=lambda s: 0 if s.st_shndx != SHN_UNDEF else 1)\n        old_syms = []\n        newer_syms = []\n        name_to_sym = {}\n        for s in new_syms:\n            if s.name == \"_gp_disp\":\n                s.type = STT_OBJECT\n            if s.bind == STB_LOCAL and s.st_shndx == SHN_UNDEF:\n                raise Failure(\"local symbol \\\"\" + s.name + \"\\\" is undefined\")\n            if not s.name:\n                if s.bind != STB_LOCAL:\n                    raise Failure(\"global symbol with no name\")\n                newer_syms.append(s)\n            else:\n                existing = name_to_sym.get(s.name)\n                if not existing:\n                    name_to_sym[s.name] = s\n                    newer_syms.append(s)\n                elif s.st_shndx != SHN_UNDEF:\n                    raise Failure(\"symbol \\\"\" + s.name + \"\\\" defined twice\")\n                else:\n                    s.replace_by = existing\n                    old_syms.append(s)\n        new_syms = newer_syms\n\n        # Put local symbols in front, with the initial dummy entry first, and\n        # _gp_disp at the end if it exists.\n        new_syms.insert(0, empty_symbol)\n        new_syms.sort(key=lambda s: (s.bind != STB_LOCAL, s.name == \"_gp_disp\"))\n        num_local_syms = sum(1 for s in new_syms if s.bind == STB_LOCAL)\n\n        for i, s in enumerate(new_syms):\n            s.new_index = i\n        for s in old_syms:\n            s.new_index = s.replace_by.new_index\n        objfile.symtab.data = b''.join(s.to_bin() for s in new_syms)\n        objfile.symtab.sh_info = num_local_syms\n\n        # Fix up relocation symbol references\n        for sectype in SECTIONS:\n            target = objfile.find_section(sectype)\n\n            if target is not None:\n                # fixup relocation symbol indices, since we butchered them above\n                for reltab in target.relocated_by:\n                    nrels = []\n                    for rel in reltab.relocations:\n                        if (sectype == '.text' and rel.r_offset in modified_text_positions or\n                            sectype == '.rodata' and rel.r_offset in jtbl_rodata_positions):\n                            # don't include relocations for late_rodata dummy code\n                            continue\n                        rel.sym_index = objfile.symtab.symbol_entries[rel.sym_index].new_index\n                        nrels.append(rel)\n                    reltab.relocations = nrels\n                    reltab.data = b''.join(rel.to_bin() for rel in nrels)\n\n        # Move over relocations\n        for sectype in SECTIONS + ['.late_rodata']:\n            source = asm_objfile.find_section(sectype)\n            if source is None or not source.data:\n                continue\n\n            target_sectype = '.rodata' if sectype == '.late_rodata' else sectype\n            target = objfile.find_section(target_sectype)\n            assert target is not None, target_sectype\n            target_reltab = objfile.find_section('.rel' + target_sectype)\n            target_reltaba = objfile.find_section('.rela' + target_sectype)\n            for reltab in source.relocated_by:\n                for rel in reltab.relocations:\n                    rel.sym_index = asm_objfile.symtab.symbol_entries[rel.sym_index].new_index\n                    if sectype == '.late_rodata':\n                        rel.r_offset = moved_late_rodata[rel.r_offset]\n                new_data = b''.join(rel.to_bin() for rel in reltab.relocations)\n                if reltab.sh_type == SHT_REL:\n                    if not target_reltab:\n                        target_reltab = objfile.add_section('.rel' + target_sectype,\n                                sh_type=SHT_REL, sh_flags=0,\n                                sh_link=objfile.symtab.index, sh_info=target.index,\n                                sh_addralign=4, sh_entsize=8, data=b'')\n                    target_reltab.data += new_data\n                else:\n                    if not target_reltaba:\n                        target_reltaba = objfile.add_section('.rela' + target_sectype,\n                                sh_type=SHT_RELA, sh_flags=0,\n                                sh_link=objfile.symtab.index, sh_info=target.index,\n                                sh_addralign=4, sh_entsize=12, data=b'')\n                    target_reltaba.data += new_data\n\n        objfile.write(objfile_name)\n    finally:\n        s_file.close()\n        os.remove(s_name)\n        try:\n            os.remove(o_name)\n        except:\n            pass\n\ndef run_wrapped(argv, outfile, functions):\n    parser = argparse.ArgumentParser(description=\"Pre-process .c files and post-process .o files to enable embedding assembly into C.\")\n    parser.add_argument('filename', help=\"path to .c code\")\n    parser.add_argument('--post-process', dest='objfile', help=\"path to .o file to post-process\")\n    parser.add_argument('--assembler', dest='assembler', help=\"assembler command (e.g. \\\"mips-linux-gnu-as -march=vr4300 -mabi=32\\\")\")\n    parser.add_argument('--asm-prelude', dest='asm_prelude', help=\"path to a file containing a prelude to the assembly file (with .set and .macro directives, e.g.)\")\n    parser.add_argument('--input-enc', default='latin1', help=\"input encoding (default: %(default)s)\")\n    parser.add_argument('--output-enc', default='latin1', help=\"output encoding (default: %(default)s)\")\n    parser.add_argument('--drop-mdebug-gptab', dest='drop_mdebug_gptab', action='store_true', help=\"drop mdebug and gptab sections\")\n    parser.add_argument('--convert-statics', dest='convert_statics', choices=[\"no\", \"local\", \"global\", \"global-with-filename\"], default=\"local\", help=\"change static symbol visibility (default: %(default)s)\")\n    parser.add_argument('--force', dest='force', action='store_true', help=\"force processing of files without GLOBAL_ASM blocks\")\n    parser.add_argument('-framepointer', dest='framepointer', action='store_true')\n    parser.add_argument('-mips1', dest='mips1', action='store_true')\n    parser.add_argument('-g3', dest='g3', action='store_true')\n    parser.add_argument('-KPIC', dest='kpic', action='store_true')\n    group = parser.add_mutually_exclusive_group(required=True)\n    group.add_argument('-O0', dest='opt', action='store_const', const='O0')\n    group.add_argument('-O1', dest='opt', action='store_const', const='O1')\n    group.add_argument('-O2', dest='opt', action='store_const', const='O2')\n    group.add_argument('-g', dest='opt', action='store_const', const='g')\n    args = parser.parse_args(argv)\n    opt = args.opt\n    pascal = any(args.filename.endswith(ext) for ext in (\".p\", \".pas\", \".pp\"))\n    if args.g3:\n        if opt != 'O2':\n            raise Failure(\"-g3 is only supported together with -O2\")\n        opt = 'g3'\n    if args.mips1 and (opt not in ('O1', 'O2') or args.framepointer):\n        raise Failure(\"-mips1 is only supported together with -O1 or -O2\")\n    if pascal and opt not in ('O1', 'O2', 'g3'):\n        raise Failure(\"Pascal is only supported together with -O1, -O2 or -O2 -g3\")\n    opts = Opts(opt, args.framepointer, args.mips1, args.kpic, pascal, args.input_enc, args.output_enc)\n\n    if args.objfile is None:\n        with open(args.filename, encoding=args.input_enc) as f:\n            deps = []\n            functions = parse_source(f, opts, out_dependencies=deps, print_source=outfile)\n            return functions, deps\n    else:\n        if args.assembler is None:\n            raise Failure(\"must pass assembler command\")\n        if functions is None:\n            with open(args.filename, encoding=args.input_enc) as f:\n                functions = parse_source(f, opts, out_dependencies=[])\n        if not functions and not args.force:\n            return\n        asm_prelude = b''\n        if args.asm_prelude:\n            with open(args.asm_prelude, 'rb') as f:\n                asm_prelude = f.read()\n        fixup_objfile(args.objfile, functions, asm_prelude, args.assembler, args.output_enc, args.drop_mdebug_gptab, args.convert_statics)\n\ndef run(argv, outfile=sys.stdout.buffer, functions=None):\n    try:\n        return run_wrapped(argv, outfile, functions)\n    except Failure as e:\n        print(\"Error:\", e, file=sys.stderr)\n        sys.exit(1)\n\nif __name__ == \"__main__\":\n    run(sys.argv[1:])\n"
  },
  {
    "path": "tools/asm-processor/build.py",
    "content": "#!/usr/bin/env python3\nimport sys\nfrom pathlib import Path\nimport shlex\nimport subprocess\nimport tempfile\nimport uuid\nimport asm_processor\n\n# Boolean for debugging purposes\n# Preprocessed files are temporary, set to True to keep a copy\nkeep_preprocessed_files = False\n\ndir_path = Path(__file__).resolve().parent\nasm_prelude_path = dir_path / \"prelude.inc\"\n\nall_args = sys.argv[1:]\nsep0 = next(index for index, arg in enumerate(all_args) if not arg.startswith(\"-\"))\nsep1 = all_args.index(\"--\")\nsep2 = all_args.index(\"--\", sep1 + 1)\n\nasmproc_flags = all_args[:sep0]\ncompiler = all_args[sep0:sep1]\n\nassembler_args = all_args[sep1 + 1 : sep2]\nassembler_sh = \" \".join(shlex.quote(x) for x in assembler_args)\n\n\ncompile_args = all_args[sep2 + 1 :]\n\nin_file = Path(compile_args[-1])\ndel compile_args[-1]\n\nout_ind = compile_args.index(\"-o\")\nout_file = Path(compile_args[out_ind + 1])\ndel compile_args[out_ind + 1]\ndel compile_args[out_ind]\n\n\nin_dir = in_file.resolve().parent\nopt_flags = [\n    x for x in compile_args if x in {\"-g3\", \"-g\", \"-O0\", \"-O1\", \"-O2\", \"-framepointer\", \"-KPIC\"}\n]\nif \"-mips2\" not in compile_args:\n    opt_flags.append(\"-mips1\")\n\nasmproc_flags += opt_flags + [str(in_file)]\n\n# Drop .mdebug and .gptab sections from resulting binaries. This makes\n# resulting .o files much smaller and speeds up builds, but loses line\n# number debug data.\n# asmproc_flags += [\"--drop-mdebug-gptab\"]\n\n# Convert encoding before compiling.\n# asmproc_flags += [\"--input-enc\", \"utf-8\", \"--output-enc\", \"euc-jp\"]\n\nwith tempfile.TemporaryDirectory(prefix=\"asm_processor\") as tmpdirname:\n    tmpdir_path = Path(tmpdirname)\n    preprocessed_filename = \"preprocessed_\" + uuid.uuid4().hex + in_file.suffix\n    preprocessed_path = tmpdir_path / preprocessed_filename\n\n    with preprocessed_path.open(\"wb\") as f:\n        functions, deps = asm_processor.run(asmproc_flags, outfile=f)\n\n    if keep_preprocessed_files:\n        import shutil\n\n        keep_output_dir = Path(\"./asm_processor_preprocessed\")\n        keep_output_dir.mkdir(parents=True, exist_ok=True)\n\n        shutil.copy(\n            preprocessed_path,\n            keep_output_dir / (in_file.stem + \"_\" + preprocessed_filename),\n        )\n\n    compile_cmdline = (\n        compiler\n        + compile_args\n        + [\"-I\", str(in_dir), \"-o\", str(out_file), str(preprocessed_path)]\n    )\n\n    try:\n        subprocess.check_call(compile_cmdline)\n    except subprocess.CalledProcessError as e:\n        print(\"Failed to compile file \" + str(in_file) + \". Command line:\")\n        print()\n        print(\" \".join(shlex.quote(x) for x in compile_cmdline))\n        print()\n        sys.exit(55)\n\n    asm_processor.run(\n        asmproc_flags\n        + [\n            \"--post-process\",\n            str(out_file),\n            \"--assembler\",\n            assembler_sh,\n            \"--asm-prelude\",\n            str(asm_prelude_path),\n        ],\n        functions=functions,\n    )\n\n    deps_file = out_file.with_suffix(\".asmproc.d\")\n    if deps:\n        with deps_file.open(\"w\") as f:\n            f.write(str(out_file) + \": \" + \" \\\\\\n    \".join(deps) + \"\\n\")\n            for dep in deps:\n                f.write(\"\\n\" + dep + \":\\n\")\n    else:\n        try:\n            deps_file.unlink()\n        except OSError:\n            pass\n"
  },
  {
    "path": "tools/asm-processor/compile-test.sh",
    "content": "#!/bin/bash\nset -o pipefail\nINPUT=\"$1\"\nOUTPUT=\"${INPUT%.*}.o\"\n\nrm -f \"$OUTPUT\"\n\nCC=\"$MIPS_CC\"  # ido 7.1 via recomp or qemu-irix\nAS=\"mips-linux-gnu-as\"\nASFLAGS=\"-march=vr4300 -mabi=32\"\nOPTFLAGS=$(grep 'COMPILE-FLAGS: ' $INPUT | sed 's#^.*COMPILE-FLAGS: ##' | sed 's#}$##')\nASMPFLAGS=$(grep 'ASMP-FLAGS: ' $INPUT | sed 's#^.*ASMP-FLAGS: ##' | sed 's#}$##')\nISET=$(grep 'COMPILE-ISET: ' $INPUT | sed 's#^.*COMPILE-ISET: ##' | sed 's#}$##')\nif [[ -z \"$OPTFLAGS\" ]]; then\n    OPTFLAGS=\"-g\"\nfi\nCFLAGS=\"-Wab,-r4300_mul -G 0 -Xcpluscomm -fullwarn -wlint -woff 819,820,852,821 -signed -c\"\nif [[ -z \"$ISET\" ]]; then\n    CFLAGS=\"$CFLAGS -mips2\"\nfi\nif [[ \"$OPTFLAGS\" != *-KPIC* ]]; then\n\tCFLAGS=\"$CFLAGS -non_shared\"\nfi\n\nset -e\npython3 build.py --drop-mdebug-gptab $ASMPFLAGS $CC -- $AS $ASFLAGS -- $CFLAGS $OPTFLAGS $ISET -o \"$OUTPUT\" \"$INPUT\"\n"
  },
  {
    "path": "tools/asm-processor/prelude.inc",
    "content": ".set noat\n.set noreorder\n.set gp=64\n.macro glabel label\n    .global \\label\n    \\label:\n.endm\n\n\n# Float register aliases (o32 ABI, odd ones are rarely used)\n\n.set $fv0,          $f0\n.set $fv0f,         $f1\n.set $fv1,          $f2\n.set $fv1f,         $f3\n.set $ft0,          $f4\n.set $ft0f,         $f5\n.set $ft1,          $f6\n.set $ft1f,         $f7\n.set $ft2,          $f8\n.set $ft2f,         $f9\n.set $ft3,          $f10\n.set $ft3f,         $f11\n.set $fa0,          $f12\n.set $fa0f,         $f13\n.set $fa1,          $f14\n.set $fa1f,         $f15\n.set $ft4,          $f16\n.set $ft4f,         $f17\n.set $ft5,          $f18\n.set $ft5f,         $f19\n.set $fs0,          $f20\n.set $fs0f,         $f21\n.set $fs1,          $f22\n.set $fs1f,         $f23\n.set $fs2,          $f24\n.set $fs2f,         $f25\n.set $fs3,          $f26\n.set $fs3f,         $f27\n.set $fs4,          $f28\n.set $fs4f,         $f29\n.set $fs5,          $f30\n.set $fs5f,         $f31\n"
  },
  {
    "path": "tools/asm-processor/run-tests.sh",
    "content": "#!/usr/bin/env bash\nfor A in tests/*.c tests/*.p; do\n    OBJDUMPFLAGS=-srt\n    echo $A\n    ./compile-test.sh \"$A\" && mips-linux-gnu-objdump $OBJDUMPFLAGS \"${A%.*}.o\" | diff - \"${A%.*}.objdump\" || echo FAIL \"$A\"\ndone\n"
  },
  {
    "path": "tools/asm-processor/tests/ascii.c",
    "content": "void foo(void) { \"abcdef\"; }\n\nGLOBAL_ASM(\n.rdata\n    .ascii \"AB\"\n    .ascii \"CD\", \"EF\"\n    .ascii \"GH\\n\\n\\n\\0\\11\\222\\3333\\44444\\x1234567\\n\\nIJK\"\n)\n\nvoid bar(void) { \"hello\"; }\n\nGLOBAL_ASM(\n.rdata\n    .asciiz \"12\"\n    .asciiz \"34\", \"56\"\n    .asciiz \"78\\n\\n\\n\\0\\11\\222\\3333\\44444\\x1234567\\n\\n9A\"\n)\n\nvoid baz(void) { \"ghijkl\"; }\n"
  },
  {
    "path": "tools/asm-processor/tests/ascii.objdump",
    "content": "\ntests/ascii.o:     file format elf32-tradbigmips\n\nSYMBOL TABLE:\n00000000 l    d  .text\t00000030 .text\n00000000 l    d  .rodata\t00000050 .rodata\n00000000 g     F .text\t00000010 foo\n00000010 g     F .text\t00000010 bar\n00000020 g     F .text\t00000010 baz\n\n\nContents of section .text:\n 0000 03e00008 00000000 03e00008 00000000  ................\n 0010 03e00008 00000000 03e00008 00000000  ................\n 0020 03e00008 00000000 03e00008 00000000  ................\nContents of section .rodata:\n 0000 61626364 65660000 41424344 45464748  abcdef..ABCDEFGH\n 0010 0a0a0a00 0992db33 24343467 0a0a494a  .......3$44g..IJ\n 0020 4b000000 68656c6c 6f000000 31320033  K...hello...12.3\n 0030 34003536 0037380a 0a0a0009 92db3324  4.56.78.......3$\n 0040 3434670a 0a394100 6768696a 6b6c0000  44g..9A.ghijkl..\nContents of section .options:\n 0000 01200000 00000000 80000000 00000000  . ..............\n 0010 00000000 00000000 00000000 00007ff0  ................\n 0020 07100000 00000000 00000000 00000000  ................\n 0030 08100000 00000000 00000000 00000000  ................\nContents of section .reginfo:\n 0000 80000000 00000000 00000000 00000000  ................\n 0010 00000000 00007ff0                    ........        \n"
  },
  {
    "path": "tools/asm-processor/tests/comments.c",
    "content": "const char before[] = \"^\";\nGLOBAL_ASM(\n.rdata\n.asciz \"aaaa /* bbbb */ # cccc\", /**//**//**//**/ /*/ \"xxxx\" /*/ /* dddd \" eeee */ \"# ffff\" # gggg \"hhhh\" /* iiii */\n)\nconst char after[] = \"$\";\n"
  },
  {
    "path": "tools/asm-processor/tests/comments.objdump",
    "content": "\ntests/comments.o:     file format elf32-tradbigmips\n\nSYMBOL TABLE:\n00000000 l    d  .rodata\t00000030 .rodata\n00000000 g     O .rodata\t00000002 before\n00000024 g     O .rodata\t00000002 after\n\n\nContents of section .rodata:\n 0000 5e000000 61616161 202f2a20 62626262  ^...aaaa /* bbbb\n 0010 202a2f20 23206363 63630023 20666666   */ # cccc.# fff\n 0020 66000000 24000000 00000000 00000000  f...$...........\nContents of section .options:\n 0000 01200000 00000000 00000000 00000000  . ..............\n 0010 00000000 00000000 00000000 00007ff0  ................\n 0020 07100000 00000000 00000000 00000000  ................\n 0030 08100000 00000000 00000000 00000000  ................\nContents of section .reginfo:\n 0000 00000000 00000000 00000000 00000000  ................\n 0010 00000000 00007ff0                    ........        \n"
  },
  {
    "path": "tools/asm-processor/tests/force.c",
    "content": "// COMPILE-FLAGS: -O2\n// ASMP-FLAGS: --convert-statics=global-with-filename --force\nstatic int xtext(int a, int b, int c);\nconst int rodata1[] = {1};\nstatic const int rodata2[] = {2};\nint data1[] = {3};\nstatic int data2[] = {4};\nint bss1;\nstatic int bss2;\n\nstatic int xtext(int a, int b, int c) {\n    return 1;\n}\n\nvoid baz(void) {\n    xtext(bss2, rodata2[0], data2[0]);\n}\n"
  },
  {
    "path": "tools/asm-processor/tests/force.objdump",
    "content": "\ntests/force.o:     file format elf32-tradbigmips\n\nSYMBOL TABLE:\n00000000 l    d  .text\t00000050 .text\n00000000 l    d  .rodata\t00000010 .rodata\n00000000 l    d  .data\t00000010 .data\n00000000 l    d  .bss\t00000010 .bss\n00000000 g     O .rodata\t00000004 rodata1\n00000000 g     O .data\t00000004 data1\n00000000 g     O .bss\t00000004 bss1\n00000014 g     F .text\t00000034 baz\n00000004 g     O .rodata\t00000000 tests/force.o:rodata2\n00000004 g     O .data\t00000000 tests/force.o:data2\n00000004 g     O .bss\t00000000 tests/force.o:bss2\n00000000 g     F .text\t00000000 tests/force.o:xtext\n\n\nRELOCATION RECORDS FOR [.text]:\nOFFSET   TYPE              VALUE \n0000001c R_MIPS_HI16       .bss\n00000034 R_MIPS_LO16       .bss\n00000020 R_MIPS_HI16       .rodata\n0000002c R_MIPS_LO16       .rodata\n00000024 R_MIPS_HI16       .data\n00000028 R_MIPS_LO16       .data\n00000030 R_MIPS_26         .text\n\n\nContents of section .text:\n 0000 afa40000 afa50004 afa60008 03e00008  ................\n 0010 24020001 27bdffe8 afbf0014 3c040000  $...'.......<...\n 0020 3c050000 3c060000 8cc60004 8ca50004  <...<...........\n 0030 0c000000 8c840004 8fbf0014 27bd0018  ............'...\n 0040 03e00008 00000000 00000000 00000000  ................\nContents of section .rodata:\n 0000 00000001 00000002 00000000 00000000  ................\nContents of section .data:\n 0000 00000003 00000004 00000000 00000000  ................\nContents of section .options:\n 0000 01200000 00000000 a0000074 00000000  . .........t....\n 0010 00000000 00000000 00000000 00007ff0  ................\n 0020 07100000 00000000 00000000 00000000  ................\n 0030 08100000 00000000 00000000 00000000  ................\nContents of section .reginfo:\n 0000 a0000074 00000000 00000000 00000000  ...t............\n 0010 00000000 00007ff0                    ........        \n"
  },
  {
    "path": "tools/asm-processor/tests/kpic-o1.c",
    "content": "// COMPILE-FLAGS: -O1 -KPIC\nGLOBAL_ASM(\nglabel foo\naddiu $a0, $a0, 1\naddiu $a0, $a0, 2\naddiu $a0, $a0, 3\naddiu $a0, $a0, 4\naddiu $a0, $a0, 5\naddiu $a0, $a0, 6\naddiu $a0, $a0, 7\naddiu $a0, $a0, 8\naddiu $a0, $a0, 9\naddiu $a0, $a0, 10\naddiu $a0, $a0, 11\naddiu $a0, $a0, 12\n)\nGLOBAL_ASM(\n.late_rodata\n.float 1\n.text\nglabel float_fn\naddiu $a0, $a0, 13\naddiu $a0, $a0, 14\naddiu $a0, $a0, 15\naddiu $a0, $a0, 16\naddiu $a0, $a0, 17\naddiu $a0, $a0, 18\naddiu $a0, $a0, 19\naddiu $a0, $a0, 20\naddiu $a0, $a0, 21\naddiu $a0, $a0, 22\naddiu $a0, $a0, 23\naddiu $a0, $a0, 24\naddiu $a0, $a0, 25\naddiu $a0, $a0, 26\naddiu $a0, $a0, 27\naddiu $a0, $a0, 28\naddiu $a0, $a0, 29\naddiu $a0, $a0, 30\n)\nGLOBAL_ASM(\n.late_rodata\n.late_rodata_alignment 4\n.float 2\n.double 1\n.double 2\n.double 3\n.double 4\n.double 5\n.double 6\n.double 7\n.double 8\n.text\nglabel doubles\naddiu $a0, $a0, 31\naddiu $a0, $a0, 32\naddiu $a0, $a0, 33\naddiu $a0, $a0, 34\naddiu $a0, $a0, 35\naddiu $a0, $a0, 36\naddiu $a0, $a0, 37\naddiu $a0, $a0, 38\naddiu $a0, $a0, 39\naddiu $a0, $a0, 40\naddiu $a0, $a0, 41\naddiu $a0, $a0, 42\naddiu $a0, $a0, 43\naddiu $a0, $a0, 44\naddiu $a0, $a0, 45\naddiu $a0, $a0, 46\naddiu $a0, $a0, 47\naddiu $a0, $a0, 48\naddiu $a0, $a0, 49\naddiu $a0, $a0, 50\naddiu $a0, $a0, 51\naddiu $a0, $a0, 52\naddiu $a0, $a0, 53\naddiu $a0, $a0, 54\naddiu $a0, $a0, 55\naddiu $a0, $a0, 56\naddiu $a0, $a0, 57\naddiu $a0, $a0, 58\naddiu $a0, $a0, 59\naddiu $a0, $a0, 60\naddiu $a0, $a0, 61\naddiu $a0, $a0, 62\naddiu $a0, $a0, 63\naddiu $a0, $a0, 64\naddiu $a0, $a0, 65\naddiu $a0, $a0, 66\naddiu $a0, $a0, 67\naddiu $a0, $a0, 68\n)\n"
  },
  {
    "path": "tools/asm-processor/tests/kpic-o1.objdump",
    "content": "\ntests/kpic-o1.o:     file format elf32-tradbigmips\n\nSYMBOL TABLE:\n00000000 l    d  .text\t00000110 .text\n00000000 l    d  .rodata\t00000050 .rodata\n00000000 g     F .text\t00000030 foo\n00000030 g     F .text\t00000048 float_fn\n00000078 g     F .text\t00000098 doubles\n00000000       O *UND*\t00000000 _gp_disp\n\n\nRELOCATION RECORDS FOR [.text]: (none)\n\nContents of section .text:\n 0000 24840001 24840002 24840003 24840004  $...$...$...$...\n 0010 24840005 24840006 24840007 24840008  $...$...$...$...\n 0020 24840009 2484000a 2484000b 2484000c  $...$...$...$...\n 0030 2484000d 2484000e 2484000f 24840010  $...$...$...$...\n 0040 24840011 24840012 24840013 24840014  $...$...$...$...\n 0050 24840015 24840016 24840017 24840018  $...$...$...$...\n 0060 24840019 2484001a 2484001b 2484001c  $...$...$...$...\n 0070 2484001d 2484001e 2484001f 24840020  $...$...$...$.. \n 0080 24840021 24840022 24840023 24840024  $..!$..\"$..#$..$\n 0090 24840025 24840026 24840027 24840028  $..%$..&$..'$..(\n 00a0 24840029 2484002a 2484002b 2484002c  $..)$..*$..+$..,\n 00b0 2484002d 2484002e 2484002f 24840030  $..-$...$../$..0\n 00c0 24840031 24840032 24840033 24840034  $..1$..2$..3$..4\n 00d0 24840035 24840036 24840037 24840038  $..5$..6$..7$..8\n 00e0 24840039 2484003a 2484003b 2484003c  $..9$..:$..;$..<\n 00f0 2484003d 2484003e 2484003f 24840040  $..=$..>$..?$..@\n 0100 24840041 24840042 24840043 24840044  $..A$..B$..C$..D\nContents of section .rodata:\n 0000 3f800000 40000000 3ff00000 00000000  ?...@...?.......\n 0010 40000000 00000000 40080000 00000000  @.......@.......\n 0020 40100000 00000000 40140000 00000000  @.......@.......\n 0030 40180000 00000000 401c0000 00000000  @.......@.......\n 0040 40200000 00000000 00000000 00000000  @ ..............\nContents of section .options:\n 0000 01200000 00000000 92000002 00000000  . ..............\n 0010 000f0ff0 00000000 00000000 00000000  ................\n 0020 07100000 00000000 00000000 00000000  ................\n 0030 08100000 00000000 00000000 00000000  ................\nContents of section .reginfo:\n 0000 92000012 00000000 000f0ff0 00000000  ................\n 0010 00000000 00000000                    ........        \n"
  },
  {
    "path": "tools/asm-processor/tests/kpic-o2.c",
    "content": "// COMPILE-FLAGS: -O2 -KPIC\nGLOBAL_ASM(\nglabel foo\naddiu $a0, $a0, 1\naddiu $a0, $a0, 2\naddiu $a0, $a0, 3\naddiu $a0, $a0, 4\naddiu $a0, $a0, 5\naddiu $a0, $a0, 6\naddiu $a0, $a0, 7\naddiu $a0, $a0, 8\naddiu $a0, $a0, 9\naddiu $a0, $a0, 10\naddiu $a0, $a0, 11\naddiu $a0, $a0, 12\n)\nGLOBAL_ASM(\n.late_rodata\n.float 1\n.text\nglabel float_fn\naddiu $a0, $a0, 13\naddiu $a0, $a0, 14\naddiu $a0, $a0, 15\naddiu $a0, $a0, 16\naddiu $a0, $a0, 17\naddiu $a0, $a0, 18\naddiu $a0, $a0, 19\naddiu $a0, $a0, 20\naddiu $a0, $a0, 21\naddiu $a0, $a0, 22\naddiu $a0, $a0, 23\naddiu $a0, $a0, 24\naddiu $a0, $a0, 25\naddiu $a0, $a0, 26\naddiu $a0, $a0, 27\naddiu $a0, $a0, 28\naddiu $a0, $a0, 29\naddiu $a0, $a0, 30\n)\nGLOBAL_ASM(\n.late_rodata\n.float 2\n.double 1\n.double 2\n.double 3\n.double 4\n.double 5\n.double 6\n.double 7\n.double 8\n.text\nglabel doubles\naddiu $a0, $a0, 31\naddiu $a0, $a0, 32\naddiu $a0, $a0, 33\naddiu $a0, $a0, 34\naddiu $a0, $a0, 35\naddiu $a0, $a0, 36\naddiu $a0, $a0, 37\naddiu $a0, $a0, 38\naddiu $a0, $a0, 39\naddiu $a0, $a0, 40\naddiu $a0, $a0, 41\naddiu $a0, $a0, 42\naddiu $a0, $a0, 43\naddiu $a0, $a0, 44\naddiu $a0, $a0, 45\naddiu $a0, $a0, 46\naddiu $a0, $a0, 47\naddiu $a0, $a0, 48\naddiu $a0, $a0, 49\naddiu $a0, $a0, 50\naddiu $a0, $a0, 51\naddiu $a0, $a0, 52\naddiu $a0, $a0, 53\naddiu $a0, $a0, 54\naddiu $a0, $a0, 55\naddiu $a0, $a0, 56\naddiu $a0, $a0, 57\naddiu $a0, $a0, 58\naddiu $a0, $a0, 59\naddiu $a0, $a0, 60\naddiu $a0, $a0, 61\naddiu $a0, $a0, 62\naddiu $a0, $a0, 63\naddiu $a0, $a0, 64\naddiu $a0, $a0, 65\naddiu $a0, $a0, 66\naddiu $a0, $a0, 67\naddiu $a0, $a0, 68\n)\n"
  },
  {
    "path": "tools/asm-processor/tests/kpic-o2.objdump",
    "content": "\ntests/kpic-o2.o:     file format elf32-tradbigmips\n\nSYMBOL TABLE:\n00000000 l    d  .text\t00000110 .text\n00000000 l    d  .rodata\t00000050 .rodata\n00000000 g     F .text\t00000030 foo\n00000030 g     F .text\t00000048 float_fn\n00000078 g     F .text\t00000098 doubles\n00000000       O *UND*\t00000000 _gp_disp\n\n\nRELOCATION RECORDS FOR [.text]: (none)\n\nContents of section .text:\n 0000 24840001 24840002 24840003 24840004  $...$...$...$...\n 0010 24840005 24840006 24840007 24840008  $...$...$...$...\n 0020 24840009 2484000a 2484000b 2484000c  $...$...$...$...\n 0030 2484000d 2484000e 2484000f 24840010  $...$...$...$...\n 0040 24840011 24840012 24840013 24840014  $...$...$...$...\n 0050 24840015 24840016 24840017 24840018  $...$...$...$...\n 0060 24840019 2484001a 2484001b 2484001c  $...$...$...$...\n 0070 2484001d 2484001e 2484001f 24840020  $...$...$...$.. \n 0080 24840021 24840022 24840023 24840024  $..!$..\"$..#$..$\n 0090 24840025 24840026 24840027 24840028  $..%$..&$..'$..(\n 00a0 24840029 2484002a 2484002b 2484002c  $..)$..*$..+$..,\n 00b0 2484002d 2484002e 2484002f 24840030  $..-$...$../$..0\n 00c0 24840031 24840032 24840033 24840034  $..1$..2$..3$..4\n 00d0 24840035 24840036 24840037 24840038  $..5$..6$..7$..8\n 00e0 24840039 2484003a 2484003b 2484003c  $..9$..:$..;$..<\n 00f0 2484003d 2484003e 2484003f 24840040  $..=$..>$..?$..@\n 0100 24840041 24840042 24840043 24840044  $..A$..B$..C$..D\nContents of section .rodata:\n 0000 3f800000 40000000 3ff00000 00000000  ?...@...?.......\n 0010 40000000 00000000 40080000 00000000  @.......@.......\n 0020 40100000 00000000 40140000 00000000  @.......@.......\n 0030 40180000 00000000 401c0000 00000000  @.......@.......\n 0040 40200000 00000000 00000000 00000000  @ ..............\nContents of section .options:\n 0000 01200000 00000000 92000002 00000000  . ..............\n 0010 000f0ff0 00000000 00000000 00000000  ................\n 0020 07100000 00000000 00000000 00000000  ................\n 0030 08100000 00000000 00000000 00000000  ................\nContents of section .reginfo:\n 0000 92000012 00000000 000f0ff0 00000000  ................\n 0010 00000000 00000000                    ........        \n"
  },
  {
    "path": "tools/asm-processor/tests/label-sameline.c",
    "content": "GLOBAL_ASM(\n.rdata\n.word 0x12345678\nglabel blah\n.word blah2\n /*a*/ blah2: /*b*/ .word blah /*c*/\n)\n"
  },
  {
    "path": "tools/asm-processor/tests/label-sameline.objdump",
    "content": "\ntests/label-sameline.o:     file format elf32-tradbigmips\n\nSYMBOL TABLE:\n00000000 l    d  .rodata\t00000010 .rodata\n00000000 l    d  .rodata\t00000000 \n00000004 g       .rodata\t00000000 blah\n\n\nRELOCATION RECORDS FOR [.rodata]:\nOFFSET   TYPE              VALUE \n00000004 R_MIPS_32         \n00000008 R_MIPS_32         blah\n\n\nContents of section .rodata:\n 0000 12345678 00000008 00000000 00000000  .4Vx............\nContents of section .options:\n 0000 01200000 00000000 00000000 00000000  . ..............\n 0010 00000000 00000000 00000000 00007ff0  ................\n 0020 07100000 00000000 00000000 00000000  ................\n 0030 08100000 00000000 00000000 00000000  ................\nContents of section .reginfo:\n 0000 00000000 00000000 00000000 00000000  ................\n 0010 00000000 00007ff0                    ........        \n"
  },
  {
    "path": "tools/asm-processor/tests/large.c",
    "content": "\nGLOBAL_ASM(\nglabel test\n\naddiu $sp, $sp, -24\n sw    $zero, 4($sp)\nlw    $t6, 4($sp)\naddu  $t7, $a0, $t6\nsb    $zero, ($t7)\nlw    $t8, 4($sp)\naddiu $t9, $t8, 1\nslt   $at, $t9, $a1\n sw    $t9, 4($sp)\n nop\njr    $ra\n addiu $sp, $sp, 24\naddiu $sp, $sp, -24\n sw    $zero, 4($sp)\nlw    $t6, 4($sp)\naddu  $t7, $a0, $t6\nsb    $zero, ($t7)\nlw    $t8, 4($sp)\naddiu $t9, $t8, 1\nslt   $at, $t9, $a1\n sw    $t9, 4($sp)\n nop\njr    $ra\n addiu $sp, $sp, 24\naddiu $sp, $sp, -24\n sw    $zero, 4($sp)\nlw    $t6, 4($sp)\naddu  $t7, $a0, $t6\nsb    $zero, ($t7)\nlw    $t8, 4($sp)\naddiu $t9, $t8, 1\nslt   $at, $t9, $a1\n sw    $t9, 4($sp)\n nop\njr    $ra\n addiu $sp, $sp, 24\naddiu $sp, $sp, -24\n sw    $zero, 4($sp)\nlw    $t6, 4($sp)\naddu  $t7, $a0, $t6\nsb    $zero, ($t7)\nlw    $t8, 4($sp)\naddiu $t9, $t8, 1\nslt   $at, $t9, $a1\n sw    $t9, 4($sp)\n nop\njr    $ra\n addiu $sp, $sp, 24\naddiu $sp, $sp, -24\n sw    $zero, 4($sp)\nlw    $t6, 4($sp)\naddu  $t7, $a0, $t6\nsb    $zero, ($t7)\nlw    $t8, 4($sp)\naddiu $t9, $t8, 1\nslt   $at, $t9, $a1\n sw    $t9, 4($sp)\n nop\njr    $ra\n addiu $sp, $sp, 24\naddiu $sp, $sp, -24\n sw    $zero, 4($sp)\nlw    $t6, 4($sp)\naddu  $t7, $a0, $t6\nsb    $zero, ($t7)\nlw    $t8, 4($sp)\naddiu $t9, $t8, 1\nslt   $at, $t9, $a1\n sw    $t9, 4($sp)\n nop\njr    $ra\n addiu $sp, $sp, 24\naddiu $sp, $sp, -24\n sw    $zero, 4($sp)\nlw    $t6, 4($sp)\naddu  $t7, $a0, $t6\nsb    $zero, ($t7)\nlw    $t8, 4($sp)\naddiu $t9, $t8, 1\nslt   $at, $t9, $a1\n sw    $t9, 4($sp)\n nop\njr    $ra\n addiu $sp, $sp, 24\naddiu $sp, $sp, -24\n sw    $zero, 4($sp)\nlw    $t6, 4($sp)\naddu  $t7, $a0, $t6\nsb    $zero, ($t7)\nlw    $t8, 4($sp)\naddiu $t9, $t8, 1\nslt   $at, $t9, $a1\n sw    $t9, 4($sp)\n nop\njr    $ra\n addiu $sp, $sp, 24\naddiu $sp, $sp, -24\n sw    $zero, 4($sp)\nlw    $t6, 4($sp)\naddu  $t7, $a0, $t6\nsb    $zero, ($t7)\nlw    $t8, 4($sp)\naddiu $t9, $t8, 1\nslt   $at, $t9, $a1\n sw    $t9, 4($sp)\n nop\njr    $ra\n addiu $sp, $sp, 24\naddiu $sp, $sp, -24\n sw    $zero, 4($sp)\nlw    $t6, 4($sp)\naddu  $t7, $a0, $t6\nsb    $zero, ($t7)\nlw    $t8, 4($sp)\naddiu $t9, $t8, 1\nslt   $at, $t9, $a1\n sw    $t9, 4($sp)\n nop\njr    $ra\n addiu $sp, $sp, 24\naddiu $sp, $sp, -24\n sw    $zero, 4($sp)\nlw    $t6, 4($sp)\naddu  $t7, $a0, $t6\nsb    $zero, ($t7)\nlw    $t8, 4($sp)\naddiu $t9, $t8, 1\nslt   $at, $t9, $a1\n sw    $t9, 4($sp)\n nop\njr    $ra\n addiu $sp, $sp, 24\naddiu $sp, $sp, -24\n sw    $zero, 4($sp)\nlw    $t6, 4($sp)\naddu  $t7, $a0, $t6\nsb    $zero, ($t7)\nlw    $t8, 4($sp)\naddiu $t9, $t8, 1\nslt   $at, $t9, $a1\n sw    $t9, 4($sp)\n nop\njr    $ra\n addiu $sp, $sp, 24\naddiu $sp, $sp, -24\n sw    $zero, 4($sp)\nlw    $t6, 4($sp)\naddu  $t7, $a0, $t6\nsb    $zero, ($t7)\nlw    $t8, 4($sp)\naddiu $t9, $t8, 1\nslt   $at, $t9, $a1\n sw    $t9, 4($sp)\n nop\njr    $ra\n addiu $sp, $sp, 24\n\n)\n\nvoid foo(void) {}\n"
  },
  {
    "path": "tools/asm-processor/tests/large.objdump",
    "content": "\ntests/large.o:     file format elf32-tradbigmips\n\nSYMBOL TABLE:\n00000000 l    d  .text\t00000280 .text\n00000270 g     F .text\t00000010 foo\n00000000 g     F .text\t00000270 test\n\n\nContents of section .text:\n 0000 27bdffe8 afa00004 8fae0004 008e7821  '.............x!\n 0010 a1e00000 8fb80004 27190001 0325082a  ........'....%.*\n 0020 afb90004 00000000 03e00008 27bd0018  ............'...\n 0030 27bdffe8 afa00004 8fae0004 008e7821  '.............x!\n 0040 a1e00000 8fb80004 27190001 0325082a  ........'....%.*\n 0050 afb90004 00000000 03e00008 27bd0018  ............'...\n 0060 27bdffe8 afa00004 8fae0004 008e7821  '.............x!\n 0070 a1e00000 8fb80004 27190001 0325082a  ........'....%.*\n 0080 afb90004 00000000 03e00008 27bd0018  ............'...\n 0090 27bdffe8 afa00004 8fae0004 008e7821  '.............x!\n 00a0 a1e00000 8fb80004 27190001 0325082a  ........'....%.*\n 00b0 afb90004 00000000 03e00008 27bd0018  ............'...\n 00c0 27bdffe8 afa00004 8fae0004 008e7821  '.............x!\n 00d0 a1e00000 8fb80004 27190001 0325082a  ........'....%.*\n 00e0 afb90004 00000000 03e00008 27bd0018  ............'...\n 00f0 27bdffe8 afa00004 8fae0004 008e7821  '.............x!\n 0100 a1e00000 8fb80004 27190001 0325082a  ........'....%.*\n 0110 afb90004 00000000 03e00008 27bd0018  ............'...\n 0120 27bdffe8 afa00004 8fae0004 008e7821  '.............x!\n 0130 a1e00000 8fb80004 27190001 0325082a  ........'....%.*\n 0140 afb90004 00000000 03e00008 27bd0018  ............'...\n 0150 27bdffe8 afa00004 8fae0004 008e7821  '.............x!\n 0160 a1e00000 8fb80004 27190001 0325082a  ........'....%.*\n 0170 afb90004 00000000 03e00008 27bd0018  ............'...\n 0180 27bdffe8 afa00004 8fae0004 008e7821  '.............x!\n 0190 a1e00000 8fb80004 27190001 0325082a  ........'....%.*\n 01a0 afb90004 00000000 03e00008 27bd0018  ............'...\n 01b0 27bdffe8 afa00004 8fae0004 008e7821  '.............x!\n 01c0 a1e00000 8fb80004 27190001 0325082a  ........'....%.*\n 01d0 afb90004 00000000 03e00008 27bd0018  ............'...\n 01e0 27bdffe8 afa00004 8fae0004 008e7821  '.............x!\n 01f0 a1e00000 8fb80004 27190001 0325082a  ........'....%.*\n 0200 afb90004 00000000 03e00008 27bd0018  ............'...\n 0210 27bdffe8 afa00004 8fae0004 008e7821  '.............x!\n 0220 a1e00000 8fb80004 27190001 0325082a  ........'....%.*\n 0230 afb90004 00000000 03e00008 27bd0018  ............'...\n 0240 27bdffe8 afa00004 8fae0004 008e7821  '.............x!\n 0250 a1e00000 8fb80004 27190001 0325082a  ........'....%.*\n 0260 afb90004 00000000 03e00008 27bd0018  ............'...\n 0270 03e00008 00000000 03e00008 00000000  ................\nContents of section .options:\n 0000 01200000 00000000 80000000 00000000  . ..............\n 0010 00000000 00000000 00000000 00007ff0  ................\n 0020 07100000 00000000 00000000 00000000  ................\n 0030 08100000 00000000 00000000 00000000  ................\nContents of section .reginfo:\n 0000 a300c032 00000000 00000000 00000000  ...2............\n 0010 00000000 00007ff0                    ........        \n"
  },
  {
    "path": "tools/asm-processor/tests/late_rodata_align.c",
    "content": "GLOBAL_ASM(\n.late_rodata\n    .float 4.1\n    .float 4.2\n    .float 4.3\n    .float 4.4\n.text\nglabel a\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n)\n\nfloat foo(void) { \"foo\"; return 1.1f; }\n\nGLOBAL_ASM(\n.late_rodata\n.late_rodata_alignment 4\n    .float 5.1\n    .float 5.2\n    .float 5.3\n    .float 5.4\n.text\nglabel b\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n)\n\nfloat bar(void) { \"bar\"; return 1.2f; }\n\nGLOBAL_ASM(\n.late_rodata\n.late_rodata_alignment 8\n    .float 6.1\n    .float 6.2\n    .float 6.3\n    .float 6.4\n    .float 6.5\n.text\nglabel c\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n)\n\n"
  },
  {
    "path": "tools/asm-processor/tests/late_rodata_align.objdump",
    "content": "\ntests/late_rodata_align.o:     file format elf32-tradbigmips\n\nSYMBOL TABLE:\n00000000 l    d  .text\t000000f0 .text\n00000000 l    d  .rodata\t00000050 .rodata\n00000040 g     F .text\t0000001c foo\n00000090 g     F .text\t0000001c bar\n00000000 g     F .text\t00000040 a\n0000005c g     F .text\t00000034 b\n000000ac g     F .text\t00000038 c\n\n\nRELOCATION RECORDS FOR [.text]:\nOFFSET   TYPE              VALUE \n00000040 R_MIPS_HI16       .rodata\n00000048 R_MIPS_LO16       .rodata\n00000090 R_MIPS_HI16       .rodata\n00000098 R_MIPS_LO16       .rodata\n\n\nContents of section .text:\n 0000 00000000 00000000 00000000 00000000  ................\n 0010 00000000 00000000 00000000 00000000  ................\n 0020 00000000 00000000 00000000 00000000  ................\n 0030 00000000 00000000 00000000 00000000  ................\n 0040 3c010000 03e00008 c4200018 03e00008  <........ ......\n 0050 00000000 03e00008 00000000 00000000  ................\n 0060 00000000 00000000 00000000 00000000  ................\n 0070 00000000 00000000 00000000 00000000  ................\n 0080 00000000 00000000 00000000 00000000  ................\n 0090 3c010000 03e00008 c420002c 03e00008  <........ .,....\n 00a0 00000000 03e00008 00000000 00000000  ................\n 00b0 00000000 00000000 00000000 00000000  ................\n 00c0 00000000 00000000 00000000 00000000  ................\n 00d0 00000000 00000000 00000000 00000000  ................\n 00e0 00000000 00000000 00000000 00000000  ................\nContents of section .rodata:\n 0000 666f6f00 62617200 40833333 40866666  foo.bar.@.33@.ff\n 0010 4089999a 408ccccd 3f8ccccd 40a33333  @...@...?...@.33\n 0020 40a66666 40a9999a 40accccd 3f99999a  @.ff@...@...?...\n 0030 40c33333 40c66666 40c9999a 40cccccd  @.33@.ff@...@...\n 0040 40d00000 00000000 00000000 00000000  @...............\nContents of section .options:\n 0000 01200000 00000000 80000002 00000000  . ..............\n 0010 000005f1 00000000 00000000 00007ff0  ................\n 0020 07100000 00000000 00000000 00000000  ................\n 0030 08100000 00000000 00000000 00000000  ................\nContents of section .reginfo:\n 0000 80000002 00000000 000005f1 00000000  ................\n 0010 00000000 00007ff0                    ........        \n"
  },
  {
    "path": "tools/asm-processor/tests/late_rodata_doubles.c",
    "content": "GLOBAL_ASM(\n.late_rodata\n    .float 4.1\n.text\nglabel a\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n)\n\nfloat foo(void) {\n    return 4.15f;\n}\n\nGLOBAL_ASM(\n.late_rodata\n    .float 4.2\n    .word 0\n    .double 4.3\n.text\nglabel b\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n)\n\nfloat bar(void) {\n    return 4.4f;\n}\n\nGLOBAL_ASM(\n.late_rodata\n    .float 4.55\n    .double 4.6\n.text\nglabel c\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n)\n\nfloat baz(void) {\n    return 4.6f;\n}\n"
  },
  {
    "path": "tools/asm-processor/tests/late_rodata_doubles.objdump",
    "content": "\ntests/late_rodata_doubles.o:     file format elf32-tradbigmips\n\nSYMBOL TABLE:\n00000000 l    d  .text\t00000120 .text\n00000000 l    d  .rodata\t00000030 .rodata\n00000040 g     F .text\t0000001c foo\n0000009c g     F .text\t0000001c bar\n000000f8 g     F .text\t0000001c baz\n00000000 g     F .text\t00000040 a\n0000005c g     F .text\t00000040 b\n000000b8 g     F .text\t00000040 c\n\n\nRELOCATION RECORDS FOR [.text]:\nOFFSET   TYPE              VALUE \n00000040 R_MIPS_HI16       .rodata\n00000048 R_MIPS_LO16       .rodata\n0000009c R_MIPS_HI16       .rodata\n000000a4 R_MIPS_LO16       .rodata\n000000f8 R_MIPS_HI16       .rodata\n00000100 R_MIPS_LO16       .rodata\n\n\nContents of section .text:\n 0000 00000000 00000000 00000000 00000000  ................\n 0010 00000000 00000000 00000000 00000000  ................\n 0020 00000000 00000000 00000000 00000000  ................\n 0030 00000000 00000000 00000000 00000000  ................\n 0040 3c010000 03e00008 c4200004 03e00008  <........ ......\n 0050 00000000 03e00008 00000000 00000000  ................\n 0060 00000000 00000000 00000000 00000000  ................\n 0070 00000000 00000000 00000000 00000000  ................\n 0080 00000000 00000000 00000000 00000000  ................\n 0090 00000000 00000000 00000000 3c010000  ............<...\n 00a0 03e00008 c4200018 03e00008 00000000  ..... ..........\n 00b0 03e00008 00000000 00000000 00000000  ................\n 00c0 00000000 00000000 00000000 00000000  ................\n 00d0 00000000 00000000 00000000 00000000  ................\n 00e0 00000000 00000000 00000000 00000000  ................\n 00f0 00000000 00000000 3c010000 03e00008  ........<.......\n 0100 c4200028 03e00008 00000000 03e00008  . .(............\n 0110 00000000 00000000 00000000 00000000  ................\nContents of section .rodata:\n 0000 40833333 4084cccd 40866666 00000000  @.33@...@.ff....\n 0010 40113333 33333333 408ccccd 4091999a  @.333333@...@...\n 0020 40126666 66666666 40933333 00000000  @.ffffff@.33....\nContents of section .options:\n 0000 01200000 00000000 80000002 00000000  . ..............\n 0010 000000f1 00000000 00000000 00007ff0  ................\n 0020 07100000 00000000 00000000 00000000  ................\n 0030 08100000 00000000 00000000 00000000  ................\nContents of section .reginfo:\n 0000 80000002 00000000 000000f1 00000000  ................\n 0010 00000000 00007ff0                    ........        \n"
  },
  {
    "path": "tools/asm-processor/tests/late_rodata_doubles_mips1.c",
    "content": "// COMPILE-FLAGS: -O2\n// COMPILE-ISET: -mips1\n// exact copy of late_rodata_doubles.c except for the -mips1 -O2 additions\nGLOBAL_ASM(\n.late_rodata\n    .float 4.1\n.text\nglabel a\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n)\n\nfloat foo(void) {\n    return 4.15f;\n}\n\nGLOBAL_ASM(\n.late_rodata\n    .float 4.2\n    .word 0\n    .double 4.3\n.text\nglabel b\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n)\n\nfloat bar(void) {\n    return 4.4f;\n}\n\nGLOBAL_ASM(\n.late_rodata\n    .float 4.55\n    .double 4.6\n.text\nglabel c\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n)\n\nfloat baz(void) {\n    return 4.6f;\n}\n"
  },
  {
    "path": "tools/asm-processor/tests/late_rodata_doubles_mips1.objdump",
    "content": "\ntests/late_rodata_doubles_mips1.o:     file format elf32-tradbigmips\n\nSYMBOL TABLE:\n00000000 l    d  .text\t000000f0 .text\n00000000 l    d  .rodata\t00000030 .rodata\n00000040 g     F .text\t00000010 foo\n00000090 g     F .text\t00000010 bar\n000000e0 g     F .text\t00000010 baz\n00000000 g     F .text\t00000040 a\n00000050 g     F .text\t00000040 b\n000000a0 g     F .text\t00000040 c\n\n\nRELOCATION RECORDS FOR [.text]:\nOFFSET   TYPE              VALUE \n00000040 R_MIPS_HI16       .rodata\n00000044 R_MIPS_LO16       .rodata\n00000090 R_MIPS_HI16       .rodata\n00000094 R_MIPS_LO16       .rodata\n000000e0 R_MIPS_HI16       .rodata\n000000e4 R_MIPS_LO16       .rodata\n\n\nContents of section .text:\n 0000 00000000 00000000 00000000 00000000  ................\n 0010 00000000 00000000 00000000 00000000  ................\n 0020 00000000 00000000 00000000 00000000  ................\n 0030 00000000 00000000 00000000 00000000  ................\n 0040 3c010000 c4200004 03e00008 00000000  <.... ..........\n 0050 00000000 00000000 00000000 00000000  ................\n 0060 00000000 00000000 00000000 00000000  ................\n 0070 00000000 00000000 00000000 00000000  ................\n 0080 00000000 00000000 00000000 00000000  ................\n 0090 3c010000 c4200018 03e00008 00000000  <.... ..........\n 00a0 00000000 00000000 00000000 00000000  ................\n 00b0 00000000 00000000 00000000 00000000  ................\n 00c0 00000000 00000000 00000000 00000000  ................\n 00d0 00000000 00000000 00000000 00000000  ................\n 00e0 3c010000 c4200028 03e00008 00000000  <.... .(........\nContents of section .rodata:\n 0000 40833333 4084cccd 40866666 00000000  @.33@...@.ff....\n 0010 40113333 33333333 408ccccd 4091999a  @.333333@...@...\n 0020 40126666 66666666 40933333 00000000  @.ffffff@.33....\nContents of section .options:\n 0000 01200000 00000000 80000002 00000000  . ..............\n 0010 000c0011 00000000 00000000 00007ff0  ................\n 0020 07100000 00000000 00000000 00000000  ................\n 0030 08100000 00000000 00000000 00000000  ................\nContents of section .reginfo:\n 0000 80000002 00000000 000c0011 00000000  ................\n 0010 00000000 00007ff0                    ........        \n"
  },
  {
    "path": "tools/asm-processor/tests/late_rodata_jtbl.c",
    "content": "// COMPILE-FLAGS: -O2\nGLOBAL_ASM(\n.late_rodata\n.double 1\n.double 2\n.double 3\n.double 4\n.double 5\n.double 6\n.double 7\n.double 8\n.text\nglabel doubles1\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\n)\n\nfloat a(void) { return 1.1f; }\n\nGLOBAL_ASM(\n.late_rodata\n.float 1\n.double 2\n.double 3\n.double 4\n.double 5\n.double 6\n.double 7\n.double 8\n.double 9\n.float 10\n.text\nglabel doubles2\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\n)\n\nGLOBAL_ASM(\nglabel a2\nmove $a0, $a0\nnop\nnop\nnop\njr $ra\nmove $a0, $a0\n)\n\nGLOBAL_ASM(\n.late_rodata\n\nglabel jtbl\n.word case0, case1, case2, case3, case4, case5, case6, case7, case8, case9, case10\n.word case11, case12, case13, case14, case15, case16, case17, case18, case19, case20\n.word case21, case22, case23, case24, case25, case26\n\n.text\nglabel foo\nsltiu $at, $a0, 0xa\nbeqz  $at, .L756E659B\n sll   $t7, $a0, 2\nlui   $at, %hi(jtbl)\naddu  $at, $at, $t7\nlw    $t7, %lo(jtbl)($at)\njr    $t7\n nop   \ncase0: addiu $a0, $a0, 1\ncase1: addiu $a0, $a0, 1\ncase2: addiu $a0, $a0, 1\ncase3: addiu $a0, $a0, 1\ncase4: addiu $a0, $a0, 1\ncase5: addiu $a0, $a0, 1\ncase6: addiu $a0, $a0, 1\ncase7: addiu $a0, $a0, 1\ncase8: addiu $a0, $a0, 1\ncase9: addiu $a0, $a0, 1\ncase10: addiu $a0, $a0, 1\ncase11: addiu $a0, $a0, 1\ncase12: addiu $a0, $a0, 1\ncase13: addiu $a0, $a0, 1\ncase14: addiu $a0, $a0, 1\ncase15: addiu $a0, $a0, 1\ncase16: addiu $a0, $a0, 1\ncase17: addiu $a0, $a0, 1\ncase18: addiu $a0, $a0, 1\ncase19: addiu $a0, $a0, 1\ncase20: addiu $a0, $a0, 1\ncase21: addiu $a0, $a0, 1\ncase22: addiu $a0, $a0, 1\ncase23: addiu $a0, $a0, 1\ncase24: addiu $a0, $a0, 1\ncase25: addiu $a0, $a0, 1\ncase26:\njr    $ra\n addiu $v0, $a0, 1\n\n.L756E659B:\naddiu $v0, $zero, 2\njr    $ra\n nop   \n)\n\nGLOBAL_ASM(\nglabel b2\nmove $a0, $a0\nnop\nnop\njr $ra\nmove $a0, $a0\n)\n\nfloat b(void) { return 1.2f; }\n"
  },
  {
    "path": "tools/asm-processor/tests/late_rodata_jtbl.objdump",
    "content": "\ntests/late_rodata_jtbl.o:     file format elf32-tradbigmips\n\nSYMBOL TABLE:\n00000000 l    d  .text\t000001a0 .text\n00000000 l    d  .rodata\t00000100 .rodata\n00000000 l    d  .text\t00000000 \n0000005c g     F .text\t0000000c a\n0000018c g     F .text\t0000000c b\n00000000 g     F .text\t0000005c doubles1\n00000068 g     F .text\t0000005c doubles2\n000000c4 g     F .text\t00000018 a2\n000000dc g     F .text\t0000009c foo\n0000008c g       .rodata\t00000000 jtbl\n00000178 g     F .text\t00000014 b2\n\n\nRELOCATION RECORDS FOR [.text]:\nOFFSET   TYPE              VALUE \n0000005c R_MIPS_HI16       .rodata\n00000064 R_MIPS_LO16       .rodata\n0000018c R_MIPS_HI16       .rodata\n00000194 R_MIPS_LO16       .rodata\n000000e8 R_MIPS_HI16       jtbl\n000000f0 R_MIPS_LO16       jtbl\n\n\nRELOCATION RECORDS FOR [.rodata]:\nOFFSET   TYPE              VALUE \n0000008c R_MIPS_32         \n00000090 R_MIPS_32         \n00000094 R_MIPS_32         \n00000098 R_MIPS_32         \n0000009c R_MIPS_32         \n000000a0 R_MIPS_32         \n000000a4 R_MIPS_32         \n000000a8 R_MIPS_32         \n000000ac R_MIPS_32         \n000000b0 R_MIPS_32         \n000000b4 R_MIPS_32         \n000000b8 R_MIPS_32         \n000000bc R_MIPS_32         \n000000c0 R_MIPS_32         \n000000c4 R_MIPS_32         \n000000c8 R_MIPS_32         \n000000cc R_MIPS_32         \n000000d0 R_MIPS_32         \n000000d4 R_MIPS_32         \n000000d8 R_MIPS_32         \n000000dc R_MIPS_32         \n000000e0 R_MIPS_32         \n000000e4 R_MIPS_32         \n000000e8 R_MIPS_32         \n000000ec R_MIPS_32         \n000000f0 R_MIPS_32         \n000000f4 R_MIPS_32         \n\n\nContents of section .text:\n 0000 00000000 00000000 00000000 00000000  ................\n 0010 00000000 00000000 00000000 00000000  ................\n 0020 00000000 00000000 00000000 00000000  ................\n 0030 00000000 00000000 00000000 00000000  ................\n 0040 00000000 00000000 00000000 00000000  ................\n 0050 00000000 00000000 00000000 3c010000  ............<...\n 0060 03e00008 c4200040 00000000 00000000  ..... .@........\n 0070 00000000 00000000 00000000 00000000  ................\n 0080 00000000 00000000 00000000 00000000  ................\n 0090 00000000 00000000 00000000 00000000  ................\n 00a0 00000000 00000000 00000000 00000000  ................\n 00b0 00000000 00000000 00000000 00000000  ................\n 00c0 00000000 00802025 00000000 00000000  ...... %........\n 00d0 00000000 03e00008 00802025 2c81000a  .......... %,...\n 00e0 10200022 00047880 3c010000 002f0821  . .\"..x.<..../.!\n 00f0 8c2f0000 01e00008 00000000 24840001  ./..........$...\n 0100 24840001 24840001 24840001 24840001  $...$...$...$...\n 0110 24840001 24840001 24840001 24840001  $...$...$...$...\n 0120 24840001 24840001 24840001 24840001  $...$...$...$...\n 0130 24840001 24840001 24840001 24840001  $...$...$...$...\n 0140 24840001 24840001 24840001 24840001  $...$...$...$...\n 0150 24840001 24840001 24840001 24840001  $...$...$...$...\n 0160 24840001 03e00008 24820001 24020002  $.......$...$...\n 0170 03e00008 00000000 00802025 00000000  .......... %....\n 0180 00000000 03e00008 00802025 3c010000  .......... %<...\n 0190 03e00008 c42000f8 00000000 00000000  ..... ..........\nContents of section .rodata:\n 0000 3ff00000 00000000 40000000 00000000  ?.......@.......\n 0010 40080000 00000000 40100000 00000000  @.......@.......\n 0020 40140000 00000000 40180000 00000000  @.......@.......\n 0030 401c0000 00000000 40200000 00000000  @.......@ ......\n 0040 3f8ccccd 3f800000 40000000 00000000  ?...?...@.......\n 0050 40080000 00000000 40100000 00000000  @.......@.......\n 0060 40140000 00000000 40180000 00000000  @.......@.......\n 0070 401c0000 00000000 40200000 00000000  @.......@ ......\n 0080 40220000 00000000 41200000 000000fc  @\"......A ......\n 0090 00000100 00000104 00000108 0000010c  ................\n 00a0 00000110 00000114 00000118 0000011c  ................\n 00b0 00000120 00000124 00000128 0000012c  ... ...$...(...,\n 00c0 00000130 00000134 00000138 0000013c  ...0...4...8...<\n 00d0 00000140 00000144 00000148 0000014c  ...@...D...H...L\n 00e0 00000150 00000154 00000158 0000015c  ...P...T...X...\\\n 00f0 00000160 00000164 3f99999a 00000000  ...`...d?.......\nContents of section .options:\n 0000 01200000 00000000 80004002 00000000  . ........@.....\n 0010 000000f1 00000000 00000000 00007ff0  ................\n 0020 07100000 00000000 00000000 00000000  ................\n 0030 08100000 00000000 00000000 00000000  ................\nContents of section .reginfo:\n 0000 8000c016 00000000 000000f1 00000000  ................\n 0010 00000000 00007ff0                    ........        \n"
  },
  {
    "path": "tools/asm-processor/tests/late_rodata_jtbl_mips1.c",
    "content": "// COMPILE-FLAGS: -O2\n// COMPILE-ISET: -mips1\n// exact copy of late_rodata_jtbl.c except for the -mips1 addition\nGLOBAL_ASM(\n.late_rodata\n.double 1\n.double 2\n.double 3\n.double 4\n.double 5\n.double 6\n.double 7\n.double 8\n.text\nglabel doubles1\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\n)\n\nfloat a(void) { return 1.1f; }\n\nGLOBAL_ASM(\n.late_rodata\n.float 1\n.double 2\n.double 3\n.double 4\n.double 5\n.double 6\n.double 7\n.double 8\n.double 9\n.float 10\n.text\nglabel doubles2\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\n)\n\nGLOBAL_ASM(\nglabel a2\nmove $a0, $a0\nnop\nnop\nnop\njr $ra\nmove $a0, $a0\n)\n\nGLOBAL_ASM(\n.late_rodata\n\nglabel jtbl\n.word case0, case1, case2, case3, case4, case5, case6, case7, case8, case9, case10\n.word case11, case12, case13, case14, case15, case16, case17, case18, case19, case20\n.word case21, case22, case23, case24, case25, case26\n\n.text\nglabel foo\nsltiu $at, $a0, 0xa\nbeqz  $at, .L756E659B\n sll   $t7, $a0, 2\nlui   $at, %hi(jtbl)\naddu  $at, $at, $t7\nlw    $t7, %lo(jtbl)($at)\njr    $t7\n nop   \ncase0: addiu $a0, $a0, 1\ncase1: addiu $a0, $a0, 1\ncase2: addiu $a0, $a0, 1\ncase3: addiu $a0, $a0, 1\ncase4: addiu $a0, $a0, 1\ncase5: addiu $a0, $a0, 1\ncase6: addiu $a0, $a0, 1\ncase7: addiu $a0, $a0, 1\ncase8: addiu $a0, $a0, 1\ncase9: addiu $a0, $a0, 1\ncase10: addiu $a0, $a0, 1\ncase11: addiu $a0, $a0, 1\ncase12: addiu $a0, $a0, 1\ncase13: addiu $a0, $a0, 1\ncase14: addiu $a0, $a0, 1\ncase15: addiu $a0, $a0, 1\ncase16: addiu $a0, $a0, 1\ncase17: addiu $a0, $a0, 1\ncase18: addiu $a0, $a0, 1\ncase19: addiu $a0, $a0, 1\ncase20: addiu $a0, $a0, 1\ncase21: addiu $a0, $a0, 1\ncase22: addiu $a0, $a0, 1\ncase23: addiu $a0, $a0, 1\ncase24: addiu $a0, $a0, 1\ncase25: addiu $a0, $a0, 1\ncase26:\njr    $ra\n addiu $v0, $a0, 1\n\n.L756E659B:\naddiu $v0, $zero, 2\njr    $ra\n nop   \n)\n\nGLOBAL_ASM(\nglabel b2\nmove $a0, $a0\nnop\nnop\njr $ra\nmove $a0, $a0\n)\n\nfloat b(void) { return 1.2f; }\n"
  },
  {
    "path": "tools/asm-processor/tests/late_rodata_jtbl_mips1.objdump",
    "content": "\ntests/late_rodata_jtbl_mips1.o:     file format elf32-tradbigmips\n\nSYMBOL TABLE:\n00000000 l    d  .text\t000001a0 .text\n00000000 l    d  .rodata\t00000100 .rodata\n00000000 l    d  .text\t00000000 \n0000005c g     F .text\t00000010 a\n00000190 g     F .text\t00000010 b\n00000000 g     F .text\t0000005c doubles1\n0000006c g     F .text\t0000005c doubles2\n000000c8 g     F .text\t00000018 a2\n000000e0 g     F .text\t0000009c foo\n0000008c g       .rodata\t00000000 jtbl\n0000017c g     F .text\t00000014 b2\n\n\nRELOCATION RECORDS FOR [.text]:\nOFFSET   TYPE              VALUE \n0000005c R_MIPS_HI16       .rodata\n00000060 R_MIPS_LO16       .rodata\n00000190 R_MIPS_HI16       .rodata\n00000194 R_MIPS_LO16       .rodata\n000000ec R_MIPS_HI16       jtbl\n000000f4 R_MIPS_LO16       jtbl\n\n\nRELOCATION RECORDS FOR [.rodata]:\nOFFSET   TYPE              VALUE \n0000008c R_MIPS_32         \n00000090 R_MIPS_32         \n00000094 R_MIPS_32         \n00000098 R_MIPS_32         \n0000009c R_MIPS_32         \n000000a0 R_MIPS_32         \n000000a4 R_MIPS_32         \n000000a8 R_MIPS_32         \n000000ac R_MIPS_32         \n000000b0 R_MIPS_32         \n000000b4 R_MIPS_32         \n000000b8 R_MIPS_32         \n000000bc R_MIPS_32         \n000000c0 R_MIPS_32         \n000000c4 R_MIPS_32         \n000000c8 R_MIPS_32         \n000000cc R_MIPS_32         \n000000d0 R_MIPS_32         \n000000d4 R_MIPS_32         \n000000d8 R_MIPS_32         \n000000dc R_MIPS_32         \n000000e0 R_MIPS_32         \n000000e4 R_MIPS_32         \n000000e8 R_MIPS_32         \n000000ec R_MIPS_32         \n000000f0 R_MIPS_32         \n000000f4 R_MIPS_32         \n\n\nContents of section .text:\n 0000 00000000 00000000 00000000 00000000  ................\n 0010 00000000 00000000 00000000 00000000  ................\n 0020 00000000 00000000 00000000 00000000  ................\n 0030 00000000 00000000 00000000 00000000  ................\n 0040 00000000 00000000 00000000 00000000  ................\n 0050 00000000 00000000 00000000 3c010000  ............<...\n 0060 c4200040 03e00008 00000000 00000000  . .@............\n 0070 00000000 00000000 00000000 00000000  ................\n 0080 00000000 00000000 00000000 00000000  ................\n 0090 00000000 00000000 00000000 00000000  ................\n 00a0 00000000 00000000 00000000 00000000  ................\n 00b0 00000000 00000000 00000000 00000000  ................\n 00c0 00000000 00000000 00802025 00000000  .......... %....\n 00d0 00000000 00000000 03e00008 00802025  .............. %\n 00e0 2c81000a 10200022 00047880 3c010000  ,.... .\"..x.<...\n 00f0 002f0821 8c2f0000 01e00008 00000000  ./.!./..........\n 0100 24840001 24840001 24840001 24840001  $...$...$...$...\n 0110 24840001 24840001 24840001 24840001  $...$...$...$...\n 0120 24840001 24840001 24840001 24840001  $...$...$...$...\n 0130 24840001 24840001 24840001 24840001  $...$...$...$...\n 0140 24840001 24840001 24840001 24840001  $...$...$...$...\n 0150 24840001 24840001 24840001 24840001  $...$...$...$...\n 0160 24840001 24840001 03e00008 24820001  $...$.......$...\n 0170 24020002 03e00008 00000000 00802025  $............. %\n 0180 00000000 00000000 03e00008 00802025  .............. %\n 0190 3c010000 c42000f8 03e00008 00000000  <.... ..........\nContents of section .rodata:\n 0000 3ff00000 00000000 40000000 00000000  ?.......@.......\n 0010 40080000 00000000 40100000 00000000  @.......@.......\n 0020 40140000 00000000 40180000 00000000  @.......@.......\n 0030 401c0000 00000000 40200000 00000000  @.......@ ......\n 0040 3f8ccccd 3f800000 40000000 00000000  ?...?...@.......\n 0050 40080000 00000000 40100000 00000000  @.......@.......\n 0060 40140000 00000000 40180000 00000000  @.......@.......\n 0070 401c0000 00000000 40200000 00000000  @.......@ ......\n 0080 40220000 00000000 41200000 00000100  @\"......A ......\n 0090 00000104 00000108 0000010c 00000110  ................\n 00a0 00000114 00000118 0000011c 00000120  ............... \n 00b0 00000124 00000128 0000012c 00000130  ...$...(...,...0\n 00c0 00000134 00000138 0000013c 00000140  ...4...8...<...@\n 00d0 00000144 00000148 0000014c 00000150  ...D...H...L...P\n 00e0 00000154 00000158 0000015c 00000160  ...T...X...\\...`\n 00f0 00000164 00000168 3f99999a 00000000  ...d...h?.......\nContents of section .options:\n 0000 01200000 00000000 80004002 00000000  . ........@.....\n 0010 000000f1 00000000 00000000 00007ff0  ................\n 0020 07100000 00000000 00000000 00000000  ................\n 0030 08100000 00000000 00000000 00000000  ................\nContents of section .reginfo:\n 0000 8000c016 00000000 000000f1 00000000  ................\n 0010 00000000 00007ff0                    ........        \n"
  },
  {
    "path": "tools/asm-processor/tests/late_rodata_misaligned_doubles.c",
    "content": "GLOBAL_ASM(\n.late_rodata\n    .float 4.01\n    .word 0\n    .double 4.02\n.text\nglabel a\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n)\n\ndouble foo(void) { return 4.03; }\n\nGLOBAL_ASM(\n.late_rodata\n    .float 4.04\n    .double 4.05\n.text\nglabel b\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n)\n\ndouble bar(void) { return 4.06; }\nfloat baz(void) { return 4.07f; }\n\nGLOBAL_ASM(\n.late_rodata\n    .double 4.08\n.text\nglabel c\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n    nop\n)\n\n"
  },
  {
    "path": "tools/asm-processor/tests/late_rodata_misaligned_doubles.objdump",
    "content": "\ntests/late_rodata_misaligned_doubles.o:     file format elf32-tradbigmips\n\nSYMBOL TABLE:\n00000000 l    d  .text\t00000120 .text\n00000000 l    d  .rodata\t00000040 .rodata\n00000040 g     F .text\t0000001c foo\n0000009c g     F .text\t0000001c bar\n000000b8 g     F .text\t0000001c baz\n00000000 g     F .text\t00000040 a\n0000005c g     F .text\t00000040 b\n000000d4 g     F .text\t00000040 c\n\n\nRELOCATION RECORDS FOR [.text]:\nOFFSET   TYPE              VALUE \n00000040 R_MIPS_HI16       .rodata\n00000048 R_MIPS_LO16       .rodata\n0000009c R_MIPS_HI16       .rodata\n000000a4 R_MIPS_LO16       .rodata\n000000b8 R_MIPS_HI16       .rodata\n000000c0 R_MIPS_LO16       .rodata\n\n\nContents of section .text:\n 0000 00000000 00000000 00000000 00000000  ................\n 0010 00000000 00000000 00000000 00000000  ................\n 0020 00000000 00000000 00000000 00000000  ................\n 0030 00000000 00000000 00000000 00000000  ................\n 0040 3c010000 03e00008 d4200010 03e00008  <........ ......\n 0050 00000000 03e00008 00000000 00000000  ................\n 0060 00000000 00000000 00000000 00000000  ................\n 0070 00000000 00000000 00000000 00000000  ................\n 0080 00000000 00000000 00000000 00000000  ................\n 0090 00000000 00000000 00000000 3c010000  ............<...\n 00a0 03e00008 d4200028 03e00008 00000000  ..... .(........\n 00b0 03e00008 00000000 3c010000 03e00008  ........<.......\n 00c0 c4200030 03e00008 00000000 03e00008  . .0............\n 00d0 00000000 00000000 00000000 00000000  ................\n 00e0 00000000 00000000 00000000 00000000  ................\n 00f0 00000000 00000000 00000000 00000000  ................\n 0100 00000000 00000000 00000000 00000000  ................\n 0110 00000000 00000000 00000000 00000000  ................\nContents of section .rodata:\n 0000 408051ec 00000000 4010147a e147ae14  @.Q.....@..z.G..\n 0010 40101eb8 51eb851f 00000000 408147ae  @...Q.......@.G.\n 0020 40103333 33333333 40103d70 a3d70a3d  @.333333@.=p...=\n 0030 40823d71 00000000 401051eb 851eb852  @.=q....@.Q....R\nContents of section .options:\n 0000 01200000 00000000 80000002 00000000  . ..............\n 0010 000000f3 00000000 00000000 00007ff0  ................\n 0020 07100000 00000000 00000000 00000000  ................\n 0030 08100000 00000000 00000000 00000000  ................\nContents of section .reginfo:\n 0000 80000002 00000000 000000f3 00000000  ................\n 0010 00000000 00007ff0                    ........        \n"
  },
  {
    "path": "tools/asm-processor/tests/line-continuation-separate-file.s",
    "content": ".rdata\n    label: .asciiz \"1\\n\\\n2\", \\\n    \"34\", \"56\"\n"
  },
  {
    "path": "tools/asm-processor/tests/line-continuation.asmproc.d",
    "content": "tests/line-continuation.o: tests/line-continuation-separate-file.s\n\ntests/line-continuation-separate-file.s:\n"
  },
  {
    "path": "tools/asm-processor/tests/line-continuation.c",
    "content": "void foo(void) { \"abcdef\"; }\n\nGLOBAL_ASM(\n.rdata\n    .ascii \"AB\" \\\n    \"CD\", \"EF\"\n    .ascii \"GH\\n\\n\\n\\0\\11\\222\\3333\\44444\\x1234567\\n\\nIJK\"\n)\n\nvoid bar(void) { \"hello\"; }\n\nGLOBAL_ASM(\n.rdata\n    .asciiz \"1\\\n2\"\n    .asciiz \"34\", \"56\"\n    .asciiz \"78\\n\\n\\n\\0\\11\\222\\3333\\44444\\x1234567\\n\\n9A\"\n)\n\nvoid baz(void) { \"ghijkl\"; }\n\nGLOBAL_ASM(\"tests/line-continuation-separate-file.s\")\n"
  },
  {
    "path": "tools/asm-processor/tests/line-continuation.objdump",
    "content": "\ntests/line-continuation.o:     file format elf32-tradbigmips\n\nSYMBOL TABLE:\n00000000 l    d  .text\t00000030 .text\n00000000 l    d  .rodata\t00000060 .rodata\n00000000 g     F .text\t00000010 foo\n00000010 g     F .text\t00000010 bar\n00000020 g     F .text\t00000010 baz\n\n\nContents of section .text:\n 0000 03e00008 00000000 03e00008 00000000  ................\n 0010 03e00008 00000000 03e00008 00000000  ................\n 0020 03e00008 00000000 03e00008 00000000  ................\nContents of section .rodata:\n 0000 61626364 65660000 41424344 45464748  abcdef..ABCDEFGH\n 0010 0a0a0a00 0992db33 24343467 0a0a494a  .......3$44g..IJ\n 0020 4b000000 68656c6c 6f000000 31320033  K...hello...12.3\n 0030 34003536 0037380a 0a0a0009 92db3324  4.56.78.......3$\n 0040 3434670a 0a394100 6768696a 6b6c0000  44g..9A.ghijkl..\n 0050 310a3200 33340035 36000000 00000000  1.2.34.56.......\nContents of section .options:\n 0000 01200000 00000000 80000000 00000000  . ..............\n 0010 00000000 00000000 00000000 00007ff0  ................\n 0020 07100000 00000000 00000000 00000000  ................\n 0030 08100000 00000000 00000000 00000000  ................\nContents of section .reginfo:\n 0000 80000000 00000000 00000000 00000000  ................\n 0010 00000000 00007ff0                    ........        \n"
  },
  {
    "path": "tools/asm-processor/tests/o0.c",
    "content": "// COMPILE-FLAGS: -O0\n\nint a(void) { return 1; }\nGLOBAL_ASM(\nglabel foo\naddiu $a0, $a0, 1\naddiu $a0, $a0, 2\naddiu $a0, $a0, 3\njr $ra\naddiu $a0, $a0, 4\n)\nfloat b(void) { return 1.2f; }\nGLOBAL_ASM(\n.late_rodata\nglabel float1\n.float 12.34\n\n.text\nglabel bar\naddiu $a0, $a0, 5\naddiu $a0, $a0, 6\naddiu $a0, $a0, 7\naddiu $a0, $a0, 8\nlui $v0, %hi(float1 + 1)\njr $ra\naddiu $v0, $v0, %lo(float1 + 1)\n)\nfloat c(void) { return 1.3f; }\n"
  },
  {
    "path": "tools/asm-processor/tests/o0.objdump",
    "content": "\ntests/o0.o:     file format elf32-tradbigmips\n\nSYMBOL TABLE:\n00000000 l    d  .text\t00000090 .text\n00000000 l    d  .rodata\t00000010 .rodata\n00000000 g     F .text\t0000001c a\n00000030 g     F .text\t00000020 b\n0000006c g     F .text\t00000020 c\n0000001c g     F .text\t00000014 foo\n00000050 g     F .text\t0000001c bar\n00000004 g       .rodata\t00000000 float1\n\n\nRELOCATION RECORDS FOR [.text]:\nOFFSET   TYPE              VALUE \n00000030 R_MIPS_HI16       .rodata\n00000034 R_MIPS_LO16       .rodata\n0000006c R_MIPS_HI16       .rodata\n00000070 R_MIPS_LO16       .rodata\n00000060 R_MIPS_HI16       float1\n00000068 R_MIPS_LO16       float1\n\n\nContents of section .text:\n 0000 24020001 03e00008 00000000 03e00008  $...............\n 0010 00000000 03e00008 00000000 24840001  ............$...\n 0020 24840002 24840003 03e00008 24840004  $...$.......$...\n 0030 3c010000 c4200000 03e00008 00000000  <.... ..........\n 0040 03e00008 00000000 03e00008 00000000  ................\n 0050 24840005 24840006 24840007 24840008  $...$...$...$...\n 0060 3c020000 03e00008 24420001 3c010000  <.......$B..<...\n 0070 c4200008 03e00008 00000000 03e00008  . ..............\n 0080 00000000 03e00008 00000000 00000000  ................\nContents of section .rodata:\n 0000 3f99999a 414570a4 3fa66666 00000000  ?...AEp.?.ff....\nContents of section .options:\n 0000 01200000 00000000 80000006 00000000  . ..............\n 0010 00000011 00000000 00000000 00007ff0  ................\n 0020 07100000 00000000 00000000 00000000  ................\n 0030 08100000 00000000 00000000 00000000  ................\nContents of section .reginfo:\n 0000 80000016 00000000 00000011 00000000  ................\n 0010 00000000 00007ff0                    ........        \n"
  },
  {
    "path": "tools/asm-processor/tests/o2.c",
    "content": "// COMPILE-FLAGS: -O2\n\nint a(void) { return 1; }\nGLOBAL_ASM(\nglabel foo\naddiu $a0, $a0, 1\naddiu $a0, $a0, 2\naddiu $a0, $a0, 3\njr $ra\naddiu $a0, $a0, 4\n)\nfloat b(void) { return 1.2f; }\nGLOBAL_ASM(\n.late_rodata\nglabel float1\n.float 12.34\n\n.text\nglabel bar\naddiu $a0, $a0, 5\naddiu $a0, $a0, 6\nlui $v0, %hi(float1 + 1)\njr $ra\naddiu $v0, $v0, %lo(float1 + 1)\n)\nfloat c(void) { return 1.3f; }\n"
  },
  {
    "path": "tools/asm-processor/tests/o2.objdump",
    "content": "\ntests/o2.o:     file format elf32-tradbigmips\n\nSYMBOL TABLE:\n00000000 l    d  .text\t00000050 .text\n00000000 l    d  .rodata\t00000010 .rodata\n00000000 g     F .text\t00000008 a\n0000001c g     F .text\t0000000c b\n0000003c g     F .text\t0000000c c\n00000008 g     F .text\t00000014 foo\n00000028 g     F .text\t00000014 bar\n00000004 g       .rodata\t00000000 float1\n\n\nRELOCATION RECORDS FOR [.text]:\nOFFSET   TYPE              VALUE \n0000001c R_MIPS_HI16       .rodata\n00000024 R_MIPS_LO16       .rodata\n0000003c R_MIPS_HI16       .rodata\n00000044 R_MIPS_LO16       .rodata\n00000030 R_MIPS_HI16       float1\n00000038 R_MIPS_LO16       float1\n\n\nContents of section .text:\n 0000 03e00008 24020001 24840001 24840002  ....$...$...$...\n 0010 24840003 03e00008 24840004 3c010000  $.......$...<...\n 0020 03e00008 c4200000 24840005 24840006  ..... ..$...$...\n 0030 3c020000 03e00008 24420001 3c010000  <.......$B..<...\n 0040 03e00008 c4200008 00000000 00000000  ..... ..........\nContents of section .rodata:\n 0000 3f99999a 414570a4 3fa66666 00000000  ?...AEp.?.ff....\nContents of section .options:\n 0000 01200000 00000000 80000006 00000000  . ..............\n 0010 00000011 00000000 00000000 00007ff0  ................\n 0020 07100000 00000000 00000000 00000000  ................\n 0030 08100000 00000000 00000000 00000000  ................\nContents of section .reginfo:\n 0000 80000016 00000000 00000011 00000000  ................\n 0010 00000000 00007ff0                    ........        \n"
  },
  {
    "path": "tools/asm-processor/tests/pascal.objdump",
    "content": "\ntests/pascal.o:     file format elf32-tradbigmips\n\nSYMBOL TABLE:\n00000000 l    d  .text\t000000e0 .text\n00000000 l    d  .rodata\t00000030 .rodata\n00000000 l    d  .data\t00000010 .data\n00000000 l    d  .bss\t00000010 .bss\n00000000 l     O .bss\t00000000 $dat\n00000000 g     F .text\t0000000c foo\n000000d0 g     F .text\t0000000c bar\n0000000c g     F .text\t00000004 test\n00000048 g     F .text\t00000004 test2\n0000008c g     F .text\t00000044 test3\n00000000         *UND*\t00000000 get\n00000000         *UND*\t00000000 put\n00000000         *UND*\t00000000 pascal_close\n00000000         *UND*\t00000000 fflush\n00000000         *UND*\t00000000 filesize\n00000000         *UND*\t00000000 curpos\n00000000         *UND*\t00000000 seek\n00000000         *UND*\t00000000 eof\n00000000         *UND*\t00000000 eoln\n00000000         *UND*\t00000000 page\n00000000         *UND*\t00000000 reset\n00000000         *UND*\t00000000 rewrite\n00000000         *UND*\t00000000 cos\n00000000         *UND*\t00000000 exp\n00000000         *UND*\t00000000 sqrt\n00000000         *UND*\t00000000 log\n00000000         *UND*\t00000000 atan\n00000000         *UND*\t00000000 sin\n00000000         *UND*\t00000000 __random_float\n00000000         *UND*\t00000000 clock\n00000000         *UND*\t00000000 exit\n00000000         *UND*\t00000000 __date\n00000000         *UND*\t00000000 __time\n00000000         *UND*\t00000000 get_arg\n00000000         *UND*\t00000000 new\n00000000         *UND*\t00000000 dispose\n00000000         *UND*\t00000000 initfile\n00000000         *UND*\t00000000 peek_char\n00000000         *UND*\t00000000 next_char\n00000000         *UND*\t00000000 readln\n00000000         *UND*\t00000000 read_int64\n00000000         *UND*\t00000000 read_card64\n00000000         *UND*\t00000000 read_integer\n00000000         *UND*\t00000000 read_cardinal\n00000000         *UND*\t00000000 read_integer_range\n00000000         *UND*\t00000000 read_real\n00000000         *UND*\t00000000 read_double\n00000000         *UND*\t00000000 read_extended\n00000000         *UND*\t00000000 read_string\n00000000         *UND*\t00000000 read_enum\n00000000         *UND*\t00000000 read_char\n00000000         *UND*\t00000000 read_char_range\n00000000         *UND*\t00000000 read_boolean\n00000000         *UND*\t00000000 read_set\n00000000         *UND*\t00000000 writeln\n00000000         *UND*\t00000000 write_int64\n00000000         *UND*\t00000000 write_card64\n00000000         *UND*\t00000000 write_integer\n00000000         *UND*\t00000000 write_cardinal\n00000000         *UND*\t00000000 write_boolean\n00000000         *UND*\t00000000 write_char\n00000000         *UND*\t00000000 write_real\n00000000         *UND*\t00000000 write_double\n00000000         *UND*\t00000000 write_extended\n00000000         *UND*\t00000000 write_string\n00000000         *UND*\t00000000 write_enum\n00000000         *UND*\t00000000 write_set\n00000000         *UND*\t00000000 caseerror\n00000000         *UND*\t00000000 __pc_nloc_goto\n00000000         *UND*\t00000000 memcpy\n00000000         *UND*\t00000000 __in_range\n00000000         *UND*\t00000000 __ll_mul\n00000000         *UND*\t00000000 __ll_div\n00000000         *UND*\t00000000 __ull_div\n00000000         *UND*\t00000000 __ll_mod\n00000000         *UND*\t00000000 __ll_rem\n00000000         *UND*\t00000000 __ull_rem\n00000000         *UND*\t00000000 __ll_lshift\n00000000         *UND*\t00000000 __ll_rshift\n00000000         *UND*\t00000000 __ll_to_f\n00000000         *UND*\t00000000 __ull_to_f\n00000000         *UND*\t00000000 __ll_to_d\n00000000         *UND*\t00000000 __ull_to_d\n00000000         *UND*\t00000000 __f_ll_ll\n00000000         *UND*\t00000000 __f_to_ull\n00000000         *UND*\t00000000 __d_to_ll\n00000000         *UND*\t00000000 __d_to_ull\n00000000         *UND*\t00000000 round64\n00000000         *UND*\t00000000 trunc64\n00000000         *UND*\t00000000 max64\n00000000         *UND*\t00000000 min64\n00000000         *UND*\t00000000 abs64\n00000000         *UND*\t00000000 odd64\n00000000         *UND*\t00000000 trapNaN\n00000000         *UND*\t00000008 input\n00000000         *UND*\t00000008 output\n00000000         *UND*\t00000008 err\n00000000         *UND*\t00000008 __Argc\n\n\nRELOCATION RECORDS FOR [.text]: (none)\n\nRELOCATION RECORDS FOR [.rodata]: (none)\n\nContents of section .text:\n 0000 00041080 03e00008 00441023 27bdffe8  .........D.#'...\n 0010 18a00009 afa00004 8fae0004 008e7821  ..............x!\n 0020 a1e00000 8fb80004 27190001 0325082a  ........'....%.*\n 0030 1420fff9 afb90004 10000001 00000000  . ..............\n 0040 03e00008 27bd0018 00000000 00000000  ....'...........\n 0050 00000000 00000000 00000000 00000000  ................\n 0060 00000000 00000000 00000000 00000000  ................\n 0070 00000000 00000000 00000000 00000000  ................\n 0080 00000000 00000000 00000000 00000000  ................\n 0090 00000000 00000000 00000000 00000000  ................\n 00a0 00000000 00000000 00000000 00000000  ................\n 00b0 00000000 00000000 00000000 00000000  ................\n 00c0 00000000 00000000 00000000 00000000  ................\n 00d0 00041080 03e00008 00441023 00000000  .........D.#....\nContents of section .rodata:\n 0000 00123123 00456456 00789789 00000001  ..1#.EdV.x......\n 0010 3ff19999 9999999a 00000002 00000003  ?...............\n 0020 4000cccc cccccccd 00000000 00000000  @...............\nContents of section .data:\n 0000 00002323 00003434 00000000 00000000  ..##..44........\nContents of section .options:\n 0000 01200000 00000000 80004016 00000000  . ........@.....\n 0010 000000f0 00000000 00000000 00007ff0  ................\n 0020 07100000 00000000 00000000 00000000  ................\n 0030 08100000 00000000 00000000 00000000  ................\nContents of section .reginfo:\n 0000 a300c036 00000000 000000f0 00000000  ...6............\n 0010 00000000 00007ff0                    ........        \n"
  },
  {
    "path": "tools/asm-processor/tests/pascal.p",
    "content": "{ COMPILE-FLAGS: -O2 }\n\nfunction foo(x: integer): integer;\nbegin\n    foo := x * 3\nend;\n\nGLOBAL_ASM(\n.section .data\n.word 0x2323\n\n.late_rodata\n.word 0x123123\n.word 0x456456\n.word 0x789789\n.text\nglabel test\n/* 000090 00400090 27BDFFF8 */  addiu $sp, $sp, -24\n/* 000094 00400094 18A00009 */  blez  $a1, .L004000BC\n/* 000098 00400098 AFA00004 */   sw    $zero, 4($sp)\n.L0040009C:\n/* 00009C 0040009C 8FAE0004 */  lw    $t6, 4($sp)\n/* 0000A0 004000A0 008E7821 */  addu  $t7, $a0, $t6\n/* 0000A4 004000A4 A1E00000 */  sb    $zero, ($t7)\n/* 0000A8 004000A8 8FB80004 */  lw    $t8, 4($sp)\n/* 0000AC 004000AC 27190001 */  addiu $t9, $t8, 1\n/* 0000B0 004000B0 0325082A */  slt   $at, $t9, $a1\n/* 0000B4 004000B4 1420FFF9 */  bnez  $at, .L0040009C\n/* 0000B8 004000B8 AFB90004 */   sw    $t9, 4($sp)\n.L004000BC:\n/* 0000BC 004000BC 10000001 */  b     .L004000C4\n/* 0000C0 004000C0 00000000 */   nop\n.L004000C4:\n/* 0000C4 004000C4 03E00008 */  jr    $ra\n/* 0000C8 004000C8 27BD0008 */   addiu $sp, $sp, 24\n)\n\nGLOBAL_ASM(\n.section .data\n.word 0x3434\n\n.late_rodata\n.word 0x1\n.double 1.1\n.word 0x2, 0x3\n.text\nglabel test2\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\n)\n\nGLOBAL_ASM(\n.late_rodata\n.double 2.1\n.text\nglabel test3\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\nnop\n)\n\nfunction bar(x: integer): integer;\nbegin\n    return x * 3\nend;\n\n"
  },
  {
    "path": "tools/asm-processor/tests/static-global.c",
    "content": "// COMPILE-FLAGS: -O2\n// ASMP-FLAGS: --convert-statics=global\nstatic int xtext(int a, int b, int c);\nconst int rodata1[] = {1};\nstatic const int rodata2[] = {2};\nint data1[] = {3};\nstatic int data2[] = {4};\nint bss1;\nstatic int bss2;\n\nGLOBAL_ASM(\nglabel bar\nlui $a0, %hi(rodata2)\nlw $a0, %lo(rodata2)($a0)\nlui $a1, %hi(data2)\nlw $a1, %lo(data2)($a0)\nlui $a2, %hi(bss2)\nlw $a2, %lo(bss2)($a0)\njal xtext\nnop\njr $ra\nnop\nnop\nnop\n)\n\nstatic int xtext(int a, int b, int c) {\n    return 1;\n}\n\nvoid baz(void) {\n    xtext(bss2, rodata2[0], data2[0]);\n}\n"
  },
  {
    "path": "tools/asm-processor/tests/static-global.objdump",
    "content": "\ntests/static-global.o:     file format elf32-tradbigmips\n\nSYMBOL TABLE:\n00000000 l    d  .text\t00000080 .text\n00000000 l    d  .rodata\t00000010 .rodata\n00000000 l    d  .data\t00000010 .data\n00000000 l    d  .bss\t00000010 .bss\n00000000 g     O .rodata\t00000004 rodata1\n00000000 g     O .data\t00000004 data1\n00000000 g     O .bss\t00000004 bss1\n00000044 g     F .text\t00000034 baz\n00000000 g     F .text\t00000030 bar\n00000004 g     O .rodata\t00000000 rodata2\n00000004 g     O .data\t00000000 data2\n00000004 g     O .bss\t00000000 bss2\n00000030 g     F .text\t00000000 xtext\n\n\nRELOCATION RECORDS FOR [.text]:\nOFFSET   TYPE              VALUE \n0000004c R_MIPS_HI16       .bss\n00000064 R_MIPS_LO16       .bss\n00000050 R_MIPS_HI16       .rodata\n0000005c R_MIPS_LO16       .rodata\n00000054 R_MIPS_HI16       .data\n00000058 R_MIPS_LO16       .data\n00000060 R_MIPS_26         .text\n00000000 R_MIPS_HI16       rodata2\n00000004 R_MIPS_LO16       rodata2\n00000008 R_MIPS_HI16       data2\n0000000c R_MIPS_LO16       data2\n00000010 R_MIPS_HI16       bss2\n00000014 R_MIPS_LO16       bss2\n00000018 R_MIPS_26         xtext\n\n\nContents of section .text:\n 0000 3c040000 8c840000 3c050000 8c850000  <.......<.......\n 0010 3c060000 8c860000 0c000000 00000000  <...............\n 0020 03e00008 00000000 00000000 00000000  ................\n 0030 afa40000 afa50004 afa60008 03e00008  ................\n 0040 24020001 27bdffe8 afbf0014 3c040000  $...'.......<...\n 0050 3c050000 3c060000 8cc60004 8ca50004  <...<...........\n 0060 0c00000c 8c840004 8fbf0014 27bd0018  ............'...\n 0070 03e00008 00000000 00000000 00000000  ................\nContents of section .rodata:\n 0000 00000001 00000002 00000000 00000000  ................\nContents of section .data:\n 0000 00000003 00000004 00000000 00000000  ................\nContents of section .options:\n 0000 01200000 00000000 a0000074 00000000  . .........t....\n 0010 00000000 00000000 00000000 00007ff0  ................\n 0020 07100000 00000000 00000000 00000000  ................\n 0030 08100000 00000000 00000000 00000000  ................\nContents of section .reginfo:\n 0000 a0000074 00000000 00000000 00000000  ...t............\n 0010 00000000 00007ff0                    ........        \n"
  },
  {
    "path": "tools/asm-processor/tests/static.c",
    "content": "// COMPILE-FLAGS: -O2\nstatic int xtext(int a, int b, int c);\nconst int rodata1[] = {1};\nstatic const int rodata2[] = {2};\nint data1[] = {3};\nstatic int data2[] = {4};\nint bss1;\nstatic int bss2;\n\nGLOBAL_ASM(\nglabel bar\nlui $a0, %hi(rodata2)\nlw $a0, %lo(rodata2)($a0)\nlui $a1, %hi(data2)\nlw $a1, %lo(data2)($a0)\nlui $a2, %hi(bss2)\nlw $a2, %lo(bss2)($a0)\njal xtext\nnop\njr $ra\nnop\nnop\nnop\n)\n\nstatic int xtext(int a, int b, int c) {\n    return 1;\n}\n\nvoid baz(void) {\n    xtext(bss2, rodata2[0], data2[0]);\n}\n"
  },
  {
    "path": "tools/asm-processor/tests/static.objdump",
    "content": "\ntests/static.o:     file format elf32-tradbigmips\n\nSYMBOL TABLE:\n00000000 l    d  .text\t00000080 .text\n00000000 l    d  .rodata\t00000010 .rodata\n00000000 l    d  .data\t00000010 .data\n00000000 l    d  .bss\t00000010 .bss\n00000004 l     O .rodata\t00000000 rodata2\n00000004 l     O .data\t00000000 data2\n00000004 l     O .bss\t00000000 bss2\n00000030 l     F .text\t00000000 xtext\n00000000 g     O .rodata\t00000004 rodata1\n00000000 g     O .data\t00000004 data1\n00000000 g     O .bss\t00000004 bss1\n00000044 g     F .text\t00000034 baz\n00000000 g     F .text\t00000030 bar\n\n\nRELOCATION RECORDS FOR [.text]:\nOFFSET   TYPE              VALUE \n0000004c R_MIPS_HI16       .bss\n00000064 R_MIPS_LO16       .bss\n00000050 R_MIPS_HI16       .rodata\n0000005c R_MIPS_LO16       .rodata\n00000054 R_MIPS_HI16       .data\n00000058 R_MIPS_LO16       .data\n00000060 R_MIPS_26         .text\n00000000 R_MIPS_HI16       rodata2\n00000004 R_MIPS_LO16       rodata2\n00000008 R_MIPS_HI16       data2\n0000000c R_MIPS_LO16       data2\n00000010 R_MIPS_HI16       bss2\n00000014 R_MIPS_LO16       bss2\n00000018 R_MIPS_26         xtext\n\n\nContents of section .text:\n 0000 3c040000 8c840000 3c050000 8c850000  <.......<.......\n 0010 3c060000 8c860000 0c000000 00000000  <...............\n 0020 03e00008 00000000 00000000 00000000  ................\n 0030 afa40000 afa50004 afa60008 03e00008  ................\n 0040 24020001 27bdffe8 afbf0014 3c040000  $...'.......<...\n 0050 3c050000 3c060000 8cc60004 8ca50004  <...<...........\n 0060 0c00000c 8c840004 8fbf0014 27bd0018  ............'...\n 0070 03e00008 00000000 00000000 00000000  ................\nContents of section .rodata:\n 0000 00000001 00000002 00000000 00000000  ................\nContents of section .data:\n 0000 00000003 00000004 00000000 00000000  ................\nContents of section .options:\n 0000 01200000 00000000 a0000074 00000000  . .........t....\n 0010 00000000 00000000 00000000 00007ff0  ................\n 0020 07100000 00000000 00000000 00000000  ................\n 0030 08100000 00000000 00000000 00000000  ................\nContents of section .reginfo:\n 0000 a0000074 00000000 00000000 00000000  ...t............\n 0010 00000000 00007ff0                    ........        \n"
  },
  {
    "path": "tools/asm-processor/tests/test1.c",
    "content": "\nGLOBAL_ASM(\n.rdata\n.word 0x1212\n)\n\nGLOBAL_ASM(\n.late_rodata\n.word 0x123123\n.text\nglabel test\n/* 000090 00400090 27BDFFF8 */  addiu $sp, $sp, -24\n/* 000094 00400094 18A00009 */  blez  $a1, .L004000BC\n/* 000098 00400098 AFA00004 */   sw    $zero, 4($sp)\n.L0040009C:\n/* 00009C 0040009C 8FAE0004 */  lw    $t6, 4($sp)\n/* 0000A0 004000A0 008E7821 */  addu  $t7, $a0, $t6\n/* 0000A4 004000A4 A1E00000 */  sb    $zero, ($t7)\n/* 0000A8 004000A8 8FB80004 */  lw    $t8, 4($sp)\n/* 0000AC 004000AC 27190001 */  addiu $t9, $t8, 1\n/* 0000B0 004000B0 0325082A */  slt   $at, $t9, $a1\n/* 0000B4 004000B4 1420FFF9 */  bnez  $at, .L0040009C\n/* 0000B8 004000B8 AFB90004 */   sw    $t9, 4($sp)\n.L004000BC:\n/* 0000BC 004000BC 10000001 */  b     .L004000C4\n/* 0000C0 004000C0 00000000 */   nop\n.L004000C4:\n/* 0000C4 004000C4 03E00008 */  jr    $ra\n/* 0000C8 004000C8 27BD0008 */   addiu $sp, $sp, 24\n)\n\nchar bss1[3];\nGLOBAL_ASM(\n.bss\nbss2:\n.space 3\n)\nchar bss3[3];\nchar bss4[3];\nconst int rodata1[2] = {1};\nextern int some_rodata;\n\nunsigned g(float, int);\nunsigned f(void) {\n    return g(1.1f, some_rodata);\n}\n\nGLOBAL_ASM(\n.rdata\nglabel some_rodata\n.word 0x1313\n.text\n.late_rodata\n.word 0x321321\n.text\nglabel g\n/* 0000C0 004000C0 27BDFFE8 */  addiu $sp, $sp, -0x18\n/* 0000C4 004000C4 AFBF0014 */  sw    $ra, 0x14($sp)\n/* 0000C8 004000C8 240E0004 */  addiu $t6, $zero, 4\n/* 0000CC 004000CC 3C010041 */  lui   $at, %hi(D_410100)\n/* 0000D0 004000D0 AC2E0100 */  sw    $t6, %lo(D_410100)($at)\n/* 0000D4 004000D4 0C10002C */  jal   func_004000B0\n/* 0000D8 004000D8 00000000 */   nop\n/* 0000DC 004000DC 10000001 */  b     .L004000E4\n/* 0000E0 004000E0 00000000 */   nop\n.L004000E4:\n/* 0000E4 004000E4 8FBF0014 */  lw    $ra, 0x14($sp)\n/* 0000E8 004000E8 27BD0018 */  addiu $sp, $sp, 0x18\n/* 0000EC 004000EC 03E00008 */  jr    $ra\n/* 0000F0 004000F0 00000000 */   nop\n)\n"
  },
  {
    "path": "tools/asm-processor/tests/test1.objdump",
    "content": "\ntests/test1.o:     file format elf32-tradbigmips\n\nSYMBOL TABLE:\n00000000 l    d  .text\t000000b0 .text\n00000000 l    d  .rodata\t00000020 .rodata\n00000000 l    d  .bss\t00000010 .bss\n00000000 g     O .bss\t00000003 bss1\n00000008 g     O .bss\t00000003 bss3\n0000000c g     O .bss\t00000003 bss4\n00000004 g     O .rodata\t00000008 rodata1\n0000003c g     F .text\t0000003c f\n00000000 g     F .text\t0000003c test\n0000000c g       .rodata\t00000000 some_rodata\n00000078 g     F .text\t00000004 g\n00000000         *UND*\t00000000 D_410100\n00000000         *UND*\t00000000 func_004000B0\n\n\nRELOCATION RECORDS FOR [.text]:\nOFFSET   TYPE              VALUE \n00000044 R_MIPS_HI16       .rodata\n00000054 R_MIPS_LO16       .rodata\n00000048 R_MIPS_HI16       some_rodata\n0000004c R_MIPS_LO16       some_rodata\n00000050 R_MIPS_26         g\n00000084 R_MIPS_HI16       D_410100\n00000088 R_MIPS_LO16       D_410100\n0000008c R_MIPS_26         func_004000B0\n\n\nContents of section .text:\n 0000 27bdffe8 18a00009 afa00004 8fae0004  '...............\n 0010 008e7821 a1e00000 8fb80004 27190001  ..x!........'...\n 0020 0325082a 1420fff9 afb90004 10000001  .%.*. ..........\n 0030 00000000 03e00008 27bd0018 27bdffe8  ........'...'...\n 0040 afbf0014 3c010000 3c050000 8ca50000  ....<...<.......\n 0050 0c000000 c42c0014 10000003 00000000  .....,..........\n 0060 10000001 00000000 8fbf0014 27bd0018  ............'...\n 0070 03e00008 00000000 27bdffe8 afbf0014  ........'.......\n 0080 240e0004 3c010000 ac2e0000 0c000000  $...<...........\n 0090 00000000 10000001 00000000 8fbf0014  ................\n 00a0 27bd0018 03e00008 00000000 00000000  '...............\nContents of section .rodata:\n 0000 00001212 00000001 00000000 00001313  ................\n 0010 00123123 3f8ccccd 00321321 00000000  ..1#?....2.!....\nContents of section .options:\n 0000 01200000 00000000 a0000022 00000000  . .........\"....\n 0010 00001010 00000000 00000000 00007ff0  ................\n 0020 07100000 00000000 00000000 00000000  ................\n 0030 08100000 00000000 00000000 00000000  ................\nContents of section .reginfo:\n 0000 a300c032 00000000 00001010 00000000  ...2............\n 0010 00000000 00007ff0                    ........        \n"
  },
  {
    "path": "tools/asm-processor/tests/test2.c",
    "content": "const char buf1[1] = {1};\nfloat func1(void) {\n    \"func1\";\n    return 0.1f;\n}\nconst char buf2[1] = {2};\nvoid func2(void) {\n    *(volatile float*)0 = -3.5792360305786133f;\n    *(volatile float*)0 = -3.5792362689971924f;\n    // \"func2\";\n    // return 0.2f;\n}\nconst char buf3[1] = {3};\nint func3(int x) {\n    switch(x) {\n    case 0:\n        return 1;\n    case 1:\n        return 2;\n    case 2:\n        return 3;\n    case 3:\n        return 4;\n    case 4:\n        return 5;\n    case 5:\n        return 4;\n    case 6:\n        return 4;\n    case 7:\n        return 4;\n    default:\n        return 3;\n    }\n}\n\n#if 1\nGLOBAL_ASM(\n.rdata\n.word 0x66756e63 # func\n.word 0x34000000 # 4\\0\\0\\0\n.word jumptarget + 4\n\n.late_rodata\nglabel rv\n.word 0x3e4ccccd # 0.2f\n.word jumptarget + 8\n\n.text\nglabel func4\nlui     $at, %hi(rv)\nglabel jumptarget\njr      $ra\nlwc1    $f0, %lo(rv)($at)\njr      $ra\nnop\njr      $ra\nnop\njr      $ra\nnop\njr      $ra\nnop\n)\n#else\nfloat func4(void) {\n    \"func4\";\n    return 0.2f;\n}\n#endif\n"
  },
  {
    "path": "tools/asm-processor/tests/test2.objdump",
    "content": "\ntests/test2.o:     file format elf32-tradbigmips\n\nSYMBOL TABLE:\n00000000 l    d  .text\t000000f0 .text\n00000000 l    d  .rodata\t00000060 .rodata\n00000000 g     O .rodata\t00000001 buf1\n00000000 g     F .text\t0000001c func1\n0000000c g     O .rodata\t00000001 buf2\n0000001c g     F .text\t00000028 func2\n00000010 g     O .rodata\t00000001 buf3\n00000044 g     F .text\t0000007c func3\n000000c4 g     F .text\t00000000 jumptarget\n000000c0 g     F .text\t0000000c func4\n0000004c g       .rodata\t00000000 rv\n\n\nRELOCATION RECORDS FOR [.text]:\nOFFSET   TYPE              VALUE \n00000000 R_MIPS_HI16       .rodata\n00000008 R_MIPS_LO16       .rodata\n0000001c R_MIPS_HI16       .rodata\n00000020 R_MIPS_LO16       .rodata\n00000028 R_MIPS_HI16       .rodata\n0000002c R_MIPS_LO16       .rodata\n00000054 R_MIPS_HI16       .rodata\n0000005c R_MIPS_LO16       .rodata\n000000c0 R_MIPS_HI16       rv\n000000c8 R_MIPS_LO16       rv\n\n\nRELOCATION RECORDS FOR [.rodata]:\nOFFSET   TYPE              VALUE \n0000002c R_MIPS_32         .text\n00000030 R_MIPS_32         .text\n00000034 R_MIPS_32         .text\n00000038 R_MIPS_32         .text\n0000003c R_MIPS_32         .text\n00000040 R_MIPS_32         .text\n00000044 R_MIPS_32         .text\n00000048 R_MIPS_32         .text\n0000001c R_MIPS_32         jumptarget\n00000050 R_MIPS_32         jumptarget\n\n\nContents of section .text:\n 0000 3c010000 03e00008 c4200020 03e00008  <........ . ....\n 0010 00000000 03e00008 00000000 3c010000  ............<...\n 0020 c4240024 e4040000 3c010000 c4260028  .$.$....<....&.(\n 0030 e4060000 03e00008 00000000 03e00008  ................\n 0040 00000000 2c810008 10200017 00000000  ....,.... ......\n 0050 00047080 3c010000 002e0821 8c2e002c  ..p.<......!...,\n 0060 01c00008 00000000 03e00008 24020001  ............$...\n 0070 03e00008 24020002 03e00008 24020003  ....$.......$...\n 0080 03e00008 24020004 03e00008 24020005  ....$.......$...\n 0090 03e00008 24020004 03e00008 24020004  ....$.......$...\n 00a0 03e00008 24020004 03e00008 24020003  ....$.......$...\n 00b0 03e00008 00000000 03e00008 00000000  ................\n 00c0 3c010000 03e00008 c4200000 03e00008  <........ ......\n 00d0 00000000 03e00008 00000000 03e00008  ................\n 00e0 00000000 03e00008 00000000 00000000  ................\nContents of section .rodata:\n 0000 01000000 66756e63 31000000 02000000  ....func1.......\n 0010 03000000 66756e63 34000000 00000004  ....func4.......\n 0020 3dcccccd c0651234 c0651235 00000068  =....e.4.e.5...h\n 0030 00000070 00000078 00000080 00000088  ...p...x........\n 0040 00000090 00000098 000000a0 3e4ccccd  ............>L..\n 0050 00000008 00000000 00000000 00000000  ................\nContents of section .options:\n 0000 01200000 00000000 80004016 00000000  . ........@.....\n 0010 00000051 00000000 00000000 00007ff0  ...Q............\n 0020 07100000 00000000 00000000 00000000  ................\n 0030 08100000 00000000 00000000 00000000  ................\nContents of section .reginfo:\n 0000 80004016 00000000 00000051 00000000  ..@........Q....\n 0010 00000000 00007ff0                    ........        \n"
  },
  {
    "path": "tools/asm-processor/tests/test3.c",
    "content": "\nGLOBAL_ASM(\n.rdata\n.word 321321\n.text\nglabel test\n/* 000090 00400090 27BDFFF8 */  addiu $sp, $sp, -24\n/* 000094 00400094 18A00009 */  blez  $a1, .L004000BC\n/* 000098 00400098 AFA00004 */   sw    $zero, 4($sp)\n.L0040009C:\n/* 00009C 0040009C 8FAE0004 */  lw    $t6, 4($sp)\n/* 0000A0 004000A0 008E7821 */  addu  $t7, $a0, $t6\n/* 0000A4 004000A4 A1E00000 */  sb    $zero, ($t7)\n/* 0000A8 004000A8 8FB80004 */  lw    $t8, 4($sp)\n/* 0000AC 004000AC 27190001 */  addiu $t9, $t8, 1\n/* 0000B0 004000B0 0325082A */  slt   $at, $t9, $a1\n/* 0000B4 004000B4 1420FFF9 */  bnez  $at, .L0040009C\n/* 0000B8 004000B8 AFB90004 */   sw    $t9, 4($sp)\n.L004000BC:\n/* 0000BC 004000BC 10000001 */  b     .L004000C4\n/* 0000C0 004000C0 00000000 */   nop\n.L004000C4:\n/* 0000C4 004000C4 03E00008 */  jr    $ra\n/* 0000C8 004000C8 27BD0008 */   addiu $sp, $sp, 24\n)\n\n// static -> no symbols\n// bss\nchar globalBuf[4];\nconst char constBuf[4];\n\n// data\nchar globalBufInit[4] = {1};\n\n// rodata\nconst char constBufInit[4] = {1};\nconst char constBufInit2[1] = {2};\nconst char constBufInit3[1] = {3};\n\nunsigned g(void);\nunsigned f(void) {\n    // aligns to 4 or 8 byte boundary (char -> 4, double -> 8)\n    double x = 5.1;\n    float y = 5.2f;\n    float z = 5.3f;\n    \"Hello  \";\n    \"World\";\n    return g();\n}\n\nGLOBAL_ASM(\n.rdata\n.word 123123\n.text\nglabel g\n/* 0000C0 004000C0 27BDFFE8 */  addiu $sp, $sp, -0x18\n/* 0000C4 004000C4 AFBF0014 */  sw    $ra, 0x14($sp)\n/* 0000C8 004000C8 240E0004 */  addiu $t6, $zero, 4\n/* 0000CC 004000CC 3C010041 */  lui   $at, %hi(D_410100)\n/* 0000D0 004000D0 AC2E0100 */  sw    $t6, %lo(D_410100)($at)\n/* 0000D4 004000D4 0C10002C */  jal   func_004000B0\n/* 0000D8 004000D8 00000000 */   nop\n/* 0000DC 004000DC 10000001 */  b     .L004000E4\n/* 0000E0 004000E0 00000000 */   nop\n.L004000E4:\n/* 0000E4 004000E4 8FBF0014 */  lw    $ra, 0x14($sp)\n/* 0000E8 004000E8 27BD0018 */  addiu $sp, $sp, 0x18\n/* 0000EC 004000EC 03E00008 */  jr    $ra\n/* 0000F0 004000F0 00000000 */   nop\n)\n"
  },
  {
    "path": "tools/asm-processor/tests/test3.objdump",
    "content": "\ntests/test3.o:     file format elf32-tradbigmips\n\nSYMBOL TABLE:\n00000000 l    d  .text\t000000d0 .text\n00000000 l    d  .rodata\t00000040 .rodata\n00000000 l    d  .data\t00000010 .data\n00000000 l    d  .bss\t00000010 .bss\n00000000 g     O .bss\t00000004 globalBuf\n00000004 g     O .bss\t00000004 constBuf\n00000000 g     O .data\t00000004 globalBufInit\n00000004 g     O .rodata\t00000004 constBufInit\n00000008 g     O .rodata\t00000001 constBufInit2\n0000000c g     O .rodata\t00000001 constBufInit3\n0000003c g     F .text\t00000054 f\n00000000 g     F .text\t00000004 test\n00000090 g     F .text\t00000004 g\n00000000         *UND*\t00000000 D_410100\n00000000         *UND*\t00000000 func_004000B0\n\n\nRELOCATION RECORDS FOR [.text]:\nOFFSET   TYPE              VALUE \n00000044 R_MIPS_HI16       .rodata\n00000048 R_MIPS_LO16       .rodata\n00000050 R_MIPS_HI16       .rodata\n00000054 R_MIPS_LO16       .rodata\n0000005c R_MIPS_HI16       .rodata\n00000060 R_MIPS_LO16       .rodata\n00000068 R_MIPS_26         g\n0000009c R_MIPS_HI16       D_410100\n000000a0 R_MIPS_LO16       D_410100\n000000a4 R_MIPS_26         func_004000B0\n\n\nContents of section .text:\n 0000 27bdffe8 18a00009 afa00004 8fae0004  '...............\n 0010 008e7821 a1e00000 8fb80004 27190001  ..x!........'...\n 0020 0325082a 1420fff9 afb90004 10000001  .%.*. ..........\n 0030 00000000 03e00008 27bd0018 27bdffd8  ........'...'...\n 0040 afbf0014 3c010000 d4240028 f7a40020  ....<....$.(... \n 0050 3c010000 c4260030 e7a6001c 3c010000  <....&.0....<...\n 0060 c4280034 e7a80018 0c000000 00000000  .(.4............\n 0070 10000003 00000000 10000001 00000000  ................\n 0080 8fbf0014 27bd0028 03e00008 00000000  ....'..(........\n 0090 27bdffe8 afbf0014 240e0004 3c010000  '.......$...<...\n 00a0 ac2e0000 0c000000 00000000 10000001  ................\n 00b0 00000000 8fbf0014 27bd0018 03e00008  ........'.......\n 00c0 00000000 00000000 00000000 00000000  ................\nContents of section .rodata:\n 0000 0004e729 01000000 02000000 03000000  ...)............\n 0010 48656c6c 6f202000 576f726c 64000000  Hello  .World...\n 0020 0001e0f3 00000000 40146666 66666666  ........@.ffffff\n 0030 40a66666 40a9999a 00000000 00000000  @.ff@...........\nContents of section .data:\n 0000 01000000 00000000 00000000 00000000  ................\nContents of section .options:\n 0000 01200000 00000000 a0000002 00000000  . ..............\n 0010 00000170 00000000 00000000 00007ff0  ...p............\n 0020 07100000 00000000 00000000 00000000  ................\n 0030 08100000 00000000 00000000 00000000  ................\nContents of section .reginfo:\n 0000 a300c032 00000000 00000170 00000000  ...2.......p....\n 0010 00000000 00007ff0                    ........        \n"
  },
  {
    "path": "tools/assemble_sound.py",
    "content": "#!/usr/bin/env python3\nfrom collections import namedtuple, OrderedDict\nfrom json import JSONDecoder\nimport os\nimport re\nimport struct\nimport subprocess\nimport sys\n\nTYPE_CTL = 1\nTYPE_TBL = 2\nTYPE_SEQ = 3\n\nSTACK_TRACES = False\nDUMP_INDIVIDUAL_BINS = False\nENDIAN_MARKER = \">\"\nWORD_BYTES = 4\n\norderedJsonDecoder = JSONDecoder(object_pairs_hook=OrderedDict)\n\n\nclass Aifc:\n    def __init__(self, name, fname, data, sample_rate, book, loop):\n        self.name = name\n        self.fname = fname\n        self.data = data\n        self.sample_rate = sample_rate\n        self.book = book\n        self.loop = loop\n        self.used = False\n        self.offset = None\n\n\nclass SampleBank:\n    def __init__(self, name, entries):\n        self.name = name\n        self.uses = []\n        self.index = None\n        self.entries = entries\n        self.name_to_entry = {}\n        for e in entries:\n            self.name_to_entry[e.name] = e\n\n\nBook = namedtuple(\"Book\", [\"order\", \"npredictors\", \"table\"])\nLoop = namedtuple(\"Loop\", [\"start\", \"end\", \"count\", \"state\"])\nBank = namedtuple(\"Bank\", [\"name\", \"sample_bank\", \"json\"])\n\n\ndef align(val, al):\n    return (val + (al - 1)) & -al\n\n\ndef fail(msg):\n    print(msg, file=sys.stderr)\n    if STACK_TRACES:\n        raise Exception(\"re-raising exception\")\n    sys.exit(1)\n\n\ndef validate(cond, msg, forstr=\"\"):\n    if not cond:\n        if forstr:\n            msg += \" for \" + forstr\n        raise Exception(msg)\n\n\ndef strip_comments(string):\n    string = re.sub(re.compile(\"/\\*.*?\\*/\", re.DOTALL), \"\", string)\n    return re.sub(re.compile(\"//.*?\\n\"), \"\", string)\n\n\ndef pack(fmt, *args):\n    if WORD_BYTES == 4:\n        fmt = fmt.replace(\"P\", \"I\").replace(\"X\", \"\")\n    else:\n        fmt = fmt.replace(\"P\", \"Q\").replace(\"X\", \"xxxx\")\n    return struct.pack(ENDIAN_MARKER + fmt, *args)\n\n\ndef to_bcd(num):\n    assert num >= 0\n    shift = 0\n    ret = 0\n    while num:\n        ret |= (num % 10) << shift\n        shift += 4\n        num //= 10\n    return ret\n\n\ndef parse_f80(data):\n    exp_bits, mantissa_bits = struct.unpack(\">HQ\", data)\n    sign_bit = exp_bits & 2 ** 15\n    exp_bits ^= sign_bit\n    sign = -1 if sign_bit else 1\n    if exp_bits == mantissa_bits == 0:\n        return sign * 0.0\n    validate(exp_bits != 0, \"sample rate is a denormal\")\n    validate(exp_bits != 0x7FFF, \"sample rate is infinity/nan\")\n    mant = float(mantissa_bits) / 2 ** 63\n    return sign * mant * pow(2, exp_bits - 0x3FFF)\n\n\ndef parse_aifc_loop(data):\n    validate(len(data) == 48, \"loop chunk size should be 48\")\n    version, nloops, start, end, count = struct.unpack(\">HHIIi\", data[:16])\n    validate(version == 1, \"loop version doesn't match\")\n    validate(nloops == 1, \"only one loop is supported\")\n    state = []\n    for i in range(16, len(data), 2):\n        state.append(struct.unpack(\">h\", data[i : i + 2])[0])\n    return Loop(start, end, count, state)\n\n\ndef parse_aifc_book(data):\n    version, order, npredictors = struct.unpack(\">hhh\", data[:6])\n    validate(version == 1, \"codebook version doesn't match\")\n    validate(\n        len(data) == 6 + 16 * order * npredictors,\n        \"predictor book chunk size doesn't match\",\n    )\n    table = []\n    for i in range(6, len(data), 2):\n        table.append(struct.unpack(\">h\", data[i : i + 2])[0])\n    return Book(order, npredictors, table)\n\n\ndef parse_aifc(data, name, fname):\n    validate(data[:4] == b\"FORM\", \"must start with FORM\")\n    validate(data[8:12] == b\"AIFC\", \"format must be AIFC\")\n    i = 12\n    sections = []\n    while i < len(data):\n        tp = data[i : i + 4]\n        (le,) = struct.unpack(\">I\", data[i + 4 : i + 8])\n        i += 8\n        sections.append((tp, data[i : i + le]))\n        i = align(i + le, 2)\n\n    audio_data = None\n    vadpcm_codes = None\n    vadpcm_loops = None\n    sample_rate = None\n\n    for (tp, data) in sections:\n        if tp == b\"APPL\" and data[:4] == b\"stoc\":\n            plen = data[4]\n            tp = data[5 : 5 + plen]\n            data = data[align(5 + plen, 2) :]\n            if tp == b\"VADPCMCODES\":\n                vadpcm_codes = data\n            elif tp == b\"VADPCMLOOPS\":\n                vadpcm_loops = data\n        elif tp == b\"SSND\":\n            audio_data = data[8:]\n        elif tp == b\"COMM\":\n            sample_rate = parse_f80(data[8:18])\n\n    validate(sample_rate is not None, \"no COMM section\")\n    validate(audio_data is not None, \"no SSND section\")\n    validate(vadpcm_codes is not None, \"no VADPCM table\")\n\n    book = parse_aifc_book(vadpcm_codes)\n    loop = parse_aifc_loop(vadpcm_loops) if vadpcm_loops is not None else None\n    return Aifc(name, fname, audio_data, sample_rate, book, loop)\n\n\nclass ReserveSerializer:\n    def __init__(self):\n        self.parts = []\n        self.sizes = []\n        self.size = 0\n\n    def add(self, part):\n        assert isinstance(part, (bytes, list))\n        self.parts.append(part)\n        self.sizes.append(len(part))\n        self.size += len(part)\n\n    def reserve(self, space):\n        li = []\n        self.parts.append(li)\n        self.sizes.append(space)\n        self.size += space\n        return li\n\n    def align(self, alignment):\n        new_size = (self.size + alignment - 1) & -alignment\n        self.add((new_size - self.size) * b\"\\0\")\n\n    def finish(self):\n        flat_parts = []\n        for (li, si) in zip(self.parts, self.sizes):\n            if isinstance(li, list):\n                li = b\"\".join(li)\n            assert (\n                len(li) == si\n            ), \"unfulfilled reservation of size {}, only got {}\".format(si, len(li))\n            flat_parts.append(li)\n        return b\"\".join(flat_parts)\n\n\nclass GarbageSerializer:\n    def __init__(self):\n        self.garbage_bufs = [[]]\n        self.parts = []\n        self.size = 0\n        self.garbage_pos = 0\n\n    def reset_garbage_pos(self):\n        self.garbage_bufs.append([])\n        self.garbage_pos = 0\n\n    def add(self, part):\n        assert isinstance(part, bytes)\n        self.parts.append(part)\n        self.garbage_bufs[-1].append((self.garbage_pos, part))\n        self.size += len(part)\n        self.garbage_pos += len(part)\n\n    def align(self, alignment):\n        new_size = (self.size + alignment - 1) & -alignment\n        self.add((new_size - self.size) * b\"\\0\")\n\n    def garbage_at(self, pos):\n        # Find the last write to position pos & 0xffff, assuming a cyclic\n        # buffer of size 0x10000 where the write position is reset to 0 on\n        # each call to reset_garbage_pos.\n        pos &= 0xFFFF\n        for bufs in self.garbage_bufs[::-1]:\n            for (bpos, buf) in bufs[::-1]:\n                q = ((bpos + len(buf) - 1 - pos) & ~0xFFFF) + pos\n                if q >= bpos:\n                    return buf[q - bpos]\n        return 0\n\n    def align_garbage(self, alignment):\n        while self.size % alignment != 0:\n            self.add(bytes([self.garbage_at(self.garbage_pos)]))\n\n    def finish(self):\n        return b\"\".join(self.parts)\n\n\ndef validate_json_format(json, fmt, forstr=\"\"):\n    constructor_to_name = {\n        str: \"a string\",\n        dict: \"an object\",\n        int: \"an integer\",\n        float: \"a floating point number\",\n        list: \"an array\",\n    }\n    for key, tp in fmt.items():\n        validate(key in json, 'missing key \"' + key + '\"', forstr)\n        if isinstance(tp, list):\n            validate_int_in_range(json[key], tp[0], tp[1], '\"' + key + '\"', forstr)\n        else:\n            validate(\n                isinstance(json[key], tp)\n                or (tp == float and isinstance(json[key], int)),\n                '\"{}\" must be {}'.format(key, constructor_to_name[tp]),\n                forstr,\n            )\n\n\ndef validate_int_in_range(val, lo, hi, msg, forstr=\"\"):\n    validate(isinstance(val, int), \"{} must be an integer\".format(msg), forstr)\n    validate(\n        lo <= val <= hi, \"{} must be in range {} to {}\".format(msg, lo, hi), forstr\n    )\n\n\ndef validate_sound(json, sample_bank, forstr=\"\"):\n    validate_json_format(json, {\"sample\": str}, forstr)\n    if \"tuning\" in json:\n        validate_json_format(json, {\"tuning\": float}, forstr)\n    validate(\n        json[\"sample\"] in sample_bank.name_to_entry,\n        \"reference to sound {} which isn't found in sample bank {}\".format(\n            json[\"sample\"], sample_bank.name\n        ),\n        forstr,\n    )\n\n\ndef validate_bank_toplevel(json):\n    validate(isinstance(json, dict), \"must have a top-level object\")\n    validate_json_format(\n        json,\n        {\n            \"envelopes\": dict,\n            \"sample_bank\": str,\n            \"instruments\": dict,\n            \"instrument_list\": list,\n        },\n    )\n\n\ndef normalize_sound_json(json):\n    # Convert {\"sound\": \"str\"} into {\"sound\": {\"sample\": \"str\"}}\n    fixup = []\n    for inst in json[\"instruments\"].values():\n        if isinstance(inst, list):\n            for drum in inst:\n                fixup.append((drum, \"sound\"))\n        else:\n            fixup.append((inst, \"sound_lo\"))\n            fixup.append((inst, \"sound\"))\n            fixup.append((inst, \"sound_hi\"))\n    for (obj, key) in fixup:\n        if isinstance(obj, dict) and isinstance(obj.get(key), str):\n            obj[key] = {\"sample\": obj[key]}\n\n\ndef validate_bank(json, sample_bank):\n    if \"date\" in json:\n        validate(\n            isinstance(json[\"date\"], str)\n            and re.match(r\"[0-9]{4}-[0-9]{2}-[0-9]{2}\\Z\", json[\"date\"]),\n            \"date must have format yyyy-mm-dd\",\n        )\n\n    for key, env in json[\"envelopes\"].items():\n        validate(isinstance(env, list), 'envelope \"' + key + '\" must be an array')\n        last_fine = False\n        for entry in env:\n            if entry in [\"stop\", \"hang\", \"restart\"]:\n                last_fine = True\n            else:\n                validate(\n                    isinstance(entry, list) and len(entry) == 2,\n                    'envelope entry in \"'\n                    + key\n                    + '\" must be a list of length 2, or one of stop/hang/restart',\n                )\n                if entry[0] == \"goto\":\n                    validate_int_in_range(\n                        entry[1], 0, len(env) - 2, \"envelope goto target out of range:\"\n                    )\n                    last_fine = True\n                else:\n                    validate_int_in_range(\n                        entry[0], 1, 2 ** 16 - 4, \"envelope entry's first part\"\n                    )\n                    validate_int_in_range(\n                        entry[1], 0, 2 ** 16 - 1, \"envelope entry's second part\"\n                    )\n                    last_fine = False\n        validate(\n            last_fine, 'envelope \"{}\" must end with stop/hang/restart/goto'.format(key)\n        )\n\n    drums = []\n    instruments = []\n    instrument_names = set()\n    for name, inst in json[\"instruments\"].items():\n        if name == \"percussion\":\n            validate(isinstance(inst, list), \"drums entry must be a list\")\n            drums = inst\n        else:\n            validate(isinstance(inst, dict), \"instrument entry must be an object\")\n            instruments.append((name, inst))\n            instrument_names.add(name)\n\n    for drum in drums:\n        validate(isinstance(drum, dict), \"drum entry must be an object\")\n        validate_json_format(\n            drum,\n            {\"release_rate\": [0, 255], \"pan\": [0, 128], \"envelope\": str, \"sound\": dict},\n        )\n        validate_sound(drum[\"sound\"], sample_bank)\n        validate(\n            drum[\"envelope\"] in json[\"envelopes\"],\n            \"reference to non-existent envelope \" + drum[\"envelope\"],\n            \"drum\",\n        )\n\n    no_sound = {}\n\n    for name, inst in instruments:\n        forstr = \"instrument \" + name\n        for lohi in [\"lo\", \"hi\"]:\n            nr = \"normal_range_\" + lohi\n            so = \"sound_\" + lohi\n            if nr in inst:\n                validate(so in inst, nr + \" is specified, but not \" + so, forstr)\n            if so in inst:\n                validate(nr in inst, so + \" is specified, but not \" + nr, forstr)\n            else:\n                inst[so] = no_sound\n        if \"normal_range_lo\" not in inst:\n            inst[\"normal_range_lo\"] = 0\n        if \"normal_range_hi\" not in inst:\n            inst[\"normal_range_hi\"] = 127\n\n        validate_json_format(\n            inst,\n            {\n                \"release_rate\": [0, 255],\n                \"envelope\": str,\n                \"normal_range_lo\": [0, 127],\n                \"normal_range_hi\": [0, 127],\n                \"sound_lo\": dict,\n                \"sound\": dict,\n                \"sound_hi\": dict,\n            },\n            forstr,\n        )\n\n        if \"ifdef\" in inst:\n            validate(\n                isinstance(inst[\"ifdef\"], list)\n                and all(isinstance(x, str) for x in inst[\"ifdef\"]),\n                '\"ifdef\" must be an array of strings',\n            )\n\n        validate(\n            inst[\"normal_range_lo\"] <= inst[\"normal_range_hi\"],\n            \"normal_range_lo > normal_range_hi\",\n            forstr,\n        )\n        validate(\n            inst[\"envelope\"] in json[\"envelopes\"],\n            \"reference to non-existent envelope \" + inst[\"envelope\"],\n            forstr,\n        )\n        for key in [\"sound_lo\", \"sound\", \"sound_hi\"]:\n            if inst[key] is no_sound:\n                del inst[key]\n            else:\n                validate_sound(inst[key], sample_bank, forstr)\n\n    seen_instruments = set()\n    for inst in json[\"instrument_list\"]:\n        if inst is None:\n            continue\n        validate(\n            isinstance(inst, str),\n            \"instrument list should contain only strings and nulls\",\n        )\n        validate(\n            inst in instrument_names, \"reference to non-existent instrument \" + inst\n        )\n        validate(\n            inst not in seen_instruments, inst + \" occurs twice in the instrument list\"\n        )\n        seen_instruments.add(inst)\n\n    for inst in instrument_names:\n        validate(inst in seen_instruments, \"unreferenced instrument \" + inst)\n\n\ndef apply_ifs(json, defines):\n    if isinstance(json, dict) and \"ifdef\" in json and \"then\" in json and \"else\" in json:\n        validate_json_format(json, {\"ifdef\": list})\n        true = any(d in defines for d in json[\"ifdef\"])\n        return apply_ifs(json[\"then\"] if true else json[\"else\"], defines)\n    elif isinstance(json, list):\n        for i in range(len(json)):\n            json[i] = apply_ifs(json[i], defines)\n    elif isinstance(json, dict):\n        for key in json:\n            json[key] = apply_ifs(json[key], defines)\n    return json\n\n\ndef apply_version_diffs(json, defines):\n    date_str = json.get(\"date\")\n    if \"VERSION_EU\" in defines and isinstance(date_str, str):\n        json[\"date\"] = date_str.replace(\"1996-03-19\", \"1996-06-24\")\n\n    ifdef_removed = set()\n    for key, inst in json[\"instruments\"].items():\n        if (\n            isinstance(inst, dict)\n            and isinstance(inst.get(\"ifdef\"), list)\n            and all(d not in defines for d in inst[\"ifdef\"])\n        ):\n            ifdef_removed.add(key)\n    for key in ifdef_removed:\n        del json[\"instruments\"][key]\n        json[\"instrument_list\"].remove(key)\n\n\ndef mark_sample_bank_uses(bank):\n    bank.sample_bank.uses.append(bank)\n\n    def mark_used(name):\n        bank.sample_bank.name_to_entry[name].used = True\n\n    for inst in bank.json[\"instruments\"].values():\n        if isinstance(inst, list):\n            for drum in inst:\n                mark_used(drum[\"sound\"][\"sample\"])\n        else:\n            if \"sound_lo\" in inst:\n                mark_used(inst[\"sound_lo\"][\"sample\"])\n            mark_used(inst[\"sound\"][\"sample\"])\n            if \"sound_hi\" in inst:\n                mark_used(inst[\"sound_hi\"][\"sample\"])\n\n\ndef serialize_ctl(bank, base_ser, is_shindou):\n    json = bank.json\n\n    drums = []\n    instruments = []\n    for inst in json[\"instruments\"].values():\n        if isinstance(inst, list):\n            drums = inst\n        else:\n            instruments.append(inst)\n\n    if not is_shindou:\n        y, m, d = map(int, json.get(\"date\", \"0000-00-00\").split(\"-\"))\n        date = y * 10000 + m * 100 + d\n        base_ser.add(\n            pack(\n                \"IIII\",\n                len(json[\"instrument_list\"]),\n                len(drums),\n                1 if len(bank.sample_bank.uses) > 1 else 0,\n                to_bcd(date),\n            )\n        )\n\n    ser = ReserveSerializer()\n    if drums:\n        drum_pos_buf = ser.reserve(WORD_BYTES)\n    else:\n        ser.add(b\"\\0\" * WORD_BYTES)\n        drum_pos_buf = None\n\n    inst_pos_buf = ser.reserve(WORD_BYTES * len(json[\"instrument_list\"]))\n    ser.align(16)\n\n    used_samples = []\n    for inst in json[\"instruments\"].values():\n        if isinstance(inst, list):\n            for drum in inst:\n                used_samples.append(drum[\"sound\"][\"sample\"])\n        else:\n            if \"sound_lo\" in inst:\n                used_samples.append(inst[\"sound_lo\"][\"sample\"])\n            used_samples.append(inst[\"sound\"][\"sample\"])\n            if \"sound_hi\" in inst:\n                used_samples.append(inst[\"sound_hi\"][\"sample\"])\n\n    sample_name_to_addr = {}\n    for name in used_samples:\n        if name in sample_name_to_addr:\n            continue\n        sample_name_to_addr[name] = ser.size\n        aifc = bank.sample_bank.name_to_entry[name]\n        sample_len = len(aifc.data)\n\n        # Sample\n        ser.add(pack(\"IX\", align(sample_len, 2) if is_shindou else 0))\n        ser.add(pack(\"P\", aifc.offset))\n        loop_addr_buf = ser.reserve(WORD_BYTES)\n        book_addr_buf = ser.reserve(WORD_BYTES)\n        if not is_shindou:\n            ser.add(pack(\"I\", align(sample_len, 2)))\n        ser.align(16)\n\n        # Book\n        book_addr_buf.append(pack(\"P\", ser.size))\n        ser.add(pack(\"ii\", aifc.book.order, aifc.book.npredictors))\n        for x in aifc.book.table:\n            ser.add(pack(\"h\", x))\n        ser.align(16)\n\n        # Loop\n        loop_addr_buf.append(pack(\"P\", ser.size))\n        if aifc.loop is None:\n            assert sample_len % 9 in [0, 1]\n            end = sample_len // 9 * 16 + (sample_len % 2) + (sample_len % 9)\n            ser.add(pack(\"IIiI\", 0, end, 0, 0))\n        else:\n            ser.add(pack(\"IIiI\", aifc.loop.start, aifc.loop.end, aifc.loop.count, 0))\n            assert aifc.loop.count != 0\n            for x in aifc.loop.state:\n                ser.add(pack(\"h\", x))\n        ser.align(16)\n\n    env_name_to_addr = {}\n    for name, env in json[\"envelopes\"].items():\n        env_name_to_addr[name] = ser.size\n        for entry in env:\n            if entry == \"stop\":\n                entry = [0, 0]\n            elif entry == \"hang\":\n                entry = [2 ** 16 - 1, 0]\n            elif entry == \"restart\":\n                entry = [2 ** 16 - 3, 0]\n            elif entry[0] == \"goto\":\n                entry[0] = 2 ** 16 - 2\n            # Envelopes are always written as big endian, to match sequence files\n            # which are byte blobs and can embed envelopes.\n            ser.add(struct.pack(\">HH\", *entry))\n        ser.align(16)\n\n    def ser_sound(sound):\n        sample_addr = (\n            0 if sound[\"sample\"] is None else sample_name_to_addr[sound[\"sample\"]]\n        )\n        if \"tuning\" in sound:\n            tuning = sound[\"tuning\"]\n        else:\n            aifc = bank.sample_bank.name_to_entry[sound[\"sample\"]]\n            tuning = aifc.sample_rate / 32000\n        ser.add(pack(\"PfX\", sample_addr, tuning))\n\n    no_sound = {\"sample\": None, \"tuning\": 0.0}\n\n    inst_name_to_pos = {}\n    for name, inst in json[\"instruments\"].items():\n        if isinstance(inst, list):\n            continue\n        inst_name_to_pos[name] = ser.size\n        env_addr = env_name_to_addr[inst[\"envelope\"]]\n        ser.add(\n            pack(\n                \"BBBBXP\",\n                0,\n                inst.get(\"normal_range_lo\", 0),\n                inst.get(\"normal_range_hi\", 127),\n                inst[\"release_rate\"],\n                env_addr,\n            )\n        )\n        ser_sound(inst.get(\"sound_lo\", no_sound))\n        ser_sound(inst[\"sound\"])\n        ser_sound(inst.get(\"sound_hi\", no_sound))\n    ser.align(16)\n\n    for name in json[\"instrument_list\"]:\n        if name is None:\n            inst_pos_buf.append(pack(\"P\", 0))\n            continue\n        inst_pos_buf.append(pack(\"P\", inst_name_to_pos[name]))\n\n    if drums:\n        drum_poses = []\n        for drum in drums:\n            drum_poses.append(ser.size)\n            ser.add(pack(\"BBBBX\", drum[\"release_rate\"], drum[\"pan\"], 0, 0))\n            ser_sound(drum[\"sound\"])\n            env_addr = env_name_to_addr[drum[\"envelope\"]]\n            ser.add(pack(\"P\", env_addr))\n        ser.align(16)\n\n        drum_pos_buf.append(pack(\"P\", ser.size))\n        for pos in drum_poses:\n            ser.add(pack(\"P\", pos))\n        ser.align(16)\n\n    base_ser.add(ser.finish())\n\n    return pack(\n        \"hh\", (bank.sample_bank.index << 8) | 0xFF, (len(json[\"instrument_list\"]) << 8) | len(drums)\n    )\n\n\ndef serialize_tbl(sample_bank, ser, is_shindou):\n    ser.reset_garbage_pos()\n    base_addr = ser.size\n    for aifc in sample_bank.entries:\n        if not aifc.used:\n            continue\n        ser.align(16)\n        aifc.offset = ser.size - base_addr\n        ser.add(aifc.data)\n    ser.align(2)\n    if is_shindou and sample_bank.index not in [4, 10]:\n        ser.align(16)\n    else:\n        ser.align_garbage(16)\n\n\ndef serialize_seqfile(\n    out_filename,\n    out_header_filename,\n    entries,\n    serialize_entry,\n    entry_list,\n    magic,\n    is_shindou,\n    extra_padding=True,\n):\n    data_ser = GarbageSerializer()\n    entry_offsets = []\n    entry_lens = []\n    entry_meta = []\n    for entry in entries:\n        entry_offsets.append(data_ser.size)\n        ret = serialize_entry(entry, data_ser, is_shindou)\n        entry_meta.append(ret)\n        entry_lens.append(data_ser.size - entry_offsets[-1])\n    data = data_ser.finish()\n\n    if is_shindou:\n        ser = ReserveSerializer()\n        ser.add(pack(\"H\", len(entries)))\n        ser.align(16)\n        medium = 0x02 # cartridge\n        sh_magic = 0x04 if magic == TYPE_TBL else 0x03\n\n        # Ignore entry_list and loop over all entries instead. This makes a\n        # difference for sample banks, where US/JP/EU doesn't use a normal\n        # header for sample banks but instead has a mapping from sound bank to\n        # sample bank offset/length. Shindou uses a normal header and makes the\n        # mapping part of the sound bank header instead (part of entry_meta).\n        for i in range(len(entries)):\n            ser.add(pack(\"PIbb\", entry_offsets[i], entry_lens[i], medium, sh_magic))\n            ser.add(entry_meta[i] or b\"\\0\\0\\0\\0\")\n            ser.align(WORD_BYTES)\n\n        if out_header_filename:\n            with open(out_header_filename, \"wb\") as f:\n                f.write(ser.finish())\n        with open(out_filename, \"wb\") as f:\n            f.write(data)\n\n    else:\n        ser = ReserveSerializer()\n        ser.add(pack(\"HHX\", magic, len(entry_list)))\n        table = ser.reserve(len(entry_list) * 2 * WORD_BYTES)\n        ser.align(16)\n        data_start = ser.size\n\n        ser.add(data)\n        if extra_padding:\n            ser.add(b\"\\0\")\n        ser.align(64)\n\n        for index in entry_list:\n            table.append(pack(\"P\", entry_offsets[index] + data_start))\n            table.append(pack(\"IX\", entry_lens[index]))\n        with open(out_filename, \"wb\") as f:\n            f.write(ser.finish())\n\n\ndef validate_and_normalize_sequence_json(json, bank_names, defines):\n    validate(isinstance(json, dict), \"must have a top-level object\")\n    if \"comment\" in json:\n        del json[\"comment\"]\n    for key, seq in json.items():\n        if isinstance(seq, dict):\n            validate_json_format(seq, {\"ifdef\": list, \"banks\": list}, key)\n            validate(\n                all(isinstance(x, str) for x in seq[\"ifdef\"]),\n                '\"ifdef\" must be an array of strings',\n                key,\n            )\n            if all(d not in defines for d in seq[\"ifdef\"]):\n                seq = None\n            else:\n                seq = seq[\"banks\"]\n            json[key] = seq\n        if isinstance(seq, list):\n            for x in seq:\n                validate(\n                    isinstance(x, str), \"bank list must be an array of strings\", key\n                )\n                validate(\n                    x in bank_names, \"reference to non-existing sound bank \" + x, key\n                )\n        else:\n            validate(seq is None, \"bad JSON type, expected null, array or object\", key)\n\n\ndef write_sequences(\n    inputs,\n    out_filename,\n    out_header_filename,\n    out_bank_sets,\n    sound_bank_dir,\n    seq_json,\n    defines,\n    is_shindou,\n):\n    bank_names = sorted(\n        [os.path.splitext(os.path.basename(x))[0] for x in os.listdir(sound_bank_dir)]\n    )\n\n    try:\n        with open(seq_json, \"r\") as inf:\n            data = inf.read()\n            data = strip_comments(data)\n            json = orderedJsonDecoder.decode(data)\n            validate_and_normalize_sequence_json(json, bank_names, defines)\n\n    except Exception as e:\n        fail(\"failed to parse \" + str(seq_json) + \": \" + str(e))\n\n    inputs.sort(key=lambda f: os.path.basename(f))\n    name_to_fname = {}\n    for fname in inputs:\n        name = os.path.splitext(os.path.basename(fname))[0]\n        if name in name_to_fname:\n            fail(\n                \"Files \"\n                + fname\n                + \" and \"\n                + name_to_fname[name]\n                + \" conflict. Remove one of them.\"\n            )\n        name_to_fname[name] = fname\n        if name not in json:\n            fail(\n                \"Sequence file \" + fname + \" is not mentioned in sequences.json. \"\n                \"Either assign it a list of sound banks, or set it to null to \"\n                \"explicitly leave it out from the build.\"\n            )\n\n    for key, seq in json.items():\n        if key not in name_to_fname and seq is not None:\n            fail(\n                \"sequences.json assigns sound banks to \"\n                + key\n                + \", but there is no such sequence file. Either remove the entry (or \"\n                \"set it to null), or create sound/sequences/\" + key + \".m64.\"\n            )\n\n    ind_to_name = []\n    for key in json:\n        ind = int(key.split(\"_\")[0], 16)\n        while len(ind_to_name) <= ind:\n            ind_to_name.append(None)\n        if ind_to_name[ind] is not None:\n            fail(\n                \"Sequence files \"\n                + key\n                + \" and \"\n                + ind_to_name[ind]\n                + \" have the same index. Renumber or delete one of them.\"\n            )\n        ind_to_name[ind] = key\n\n    while ind_to_name and json.get(ind_to_name[-1]) is None:\n        ind_to_name.pop()\n\n    def serialize_file(name, ser, is_shindou):\n        if json.get(name) is None:\n            return\n        ser.reset_garbage_pos()\n        with open(name_to_fname[name], \"rb\") as f:\n            ser.add(f.read())\n        if is_shindou and name.startswith(\"17\"):\n            ser.align(16)\n        else:\n            ser.align_garbage(16)\n\n    serialize_seqfile(\n        out_filename,\n        out_header_filename,\n        ind_to_name,\n        serialize_file,\n        range(len(ind_to_name)),\n        TYPE_SEQ,\n        is_shindou,\n        extra_padding=False,\n    )\n\n    with open(out_bank_sets, \"wb\") as f:\n        ser = ReserveSerializer()\n        table = ser.reserve(len(ind_to_name) * 2)\n        for name in ind_to_name:\n            bank_set = json.get(name) or []\n            table.append(pack(\"H\", ser.size))\n            ser.add(bytes([len(bank_set)]))\n            for bank in bank_set[::-1]:\n                ser.add(bytes([bank_names.index(bank)]))\n        ser.align(16)\n        f.write(ser.finish())\n\n\ndef main():\n    global STACK_TRACES\n    global DUMP_INDIVIDUAL_BINS\n    global ENDIAN_MARKER\n    global WORD_BYTES\n    need_help = False\n    skip_next = 0\n    cpp_command = None\n    print_samples = False\n    sequences_out_file = None\n    sequences_header_out_file = None\n    defines = []\n    args = []\n    for i, a in enumerate(sys.argv[1:], 1):\n        if skip_next > 0:\n            skip_next -= 1\n            continue\n        if a == \"--help\" or a == \"-h\":\n            need_help = True\n        elif a == \"--cpp\":\n            cpp_command = sys.argv[i + 1]\n            skip_next = 1\n        elif a == \"-D\":\n            defines.append(sys.argv[i + 1])\n            skip_next = 1\n        elif a == \"--endian\":\n            endian = sys.argv[i + 1]\n            if endian == \"big\":\n                ENDIAN_MARKER = \">\"\n            elif endian == \"little\":\n                ENDIAN_MARKER = \"<\"\n            elif endian == \"native\":\n                ENDIAN_MARKER = \"=\"\n            else:\n                fail(\"--endian takes argument big, little or native\")\n            skip_next = 1\n        elif a == \"--bitwidth\":\n            bitwidth = sys.argv[i + 1]\n            if bitwidth == \"native\":\n                WORD_BYTES = struct.calcsize(\"P\")\n            else:\n                if bitwidth not in [\"32\", \"64\"]:\n                    fail(\"--bitwidth takes argument 32, 64 or native\")\n                WORD_BYTES = int(bitwidth) // 8\n            skip_next = 1\n        elif a.startswith(\"-D\"):\n            defines.append(a[2:])\n        elif a == \"--stack-trace\":\n            STACK_TRACES = True\n        elif a == \"--dump-individual-bins\":\n            DUMP_INDIVIDUAL_BINS = True\n        elif a == \"--print-samples\":\n            print_samples = True\n        elif a == \"--sequences\":\n            sequences_out_file = sys.argv[i + 1]\n            sequences_header_out_file = sys.argv[i + 2]\n            bank_sets_out_file = sys.argv[i + 3]\n            sound_bank_dir = sys.argv[i + 4]\n            sequence_json = sys.argv[i + 5]\n            skip_next = 5\n        elif a.startswith(\"-\"):\n            print(\"Unrecognized option \" + a)\n            sys.exit(1)\n        else:\n            args.append(a)\n\n    defines_set = {d.split(\"=\")[0] for d in defines}\n    is_shindou = (\"VERSION_SH\" in defines_set or \"VERSION_CN\" in defines_set)\n\n    if sequences_out_file is not None and not need_help:\n        write_sequences(\n            args,\n            sequences_out_file,\n            sequences_header_out_file,\n            bank_sets_out_file,\n            sound_bank_dir,\n            sequence_json,\n            defines_set,\n            is_shindou,\n        )\n        sys.exit(0)\n\n    if need_help or len(args) != 6:\n        print(\n            \"Usage: {} <samples dir> <sound bank dir>\"\n            \" <out .ctl file> <out .ctl Shindou header file>\"\n            \" <out .tbl file> <out .tbl Shindou header file>\"\n            \" [--cpp <preprocessor>]\"\n            \" [-D <symbol>]\"\n            \" [--stack-trace]\"\n            \" | --sequences <out sequence .bin> <out Shindou sequence header .bin> \"\n            \"<out bank sets .bin> <sound bank dir> <sequences.json> <inputs...>\".format(\n                sys.argv[0]\n            )\n        )\n        sys.exit(0 if need_help else 1)\n\n    sample_bank_dir = args[0]\n    sound_bank_dir = args[1]\n    ctl_data_out = args[2]\n    ctl_data_header_out = args[3]\n    tbl_data_out = args[4]\n    tbl_data_header_out = args[5]\n\n    banks = []\n    sample_banks = []\n    name_to_sample_bank = {}\n\n    sample_bank_names = sorted(os.listdir(sample_bank_dir))\n    for name in sample_bank_names:\n        dir = os.path.join(sample_bank_dir, name)\n        if not os.path.isdir(dir):\n            continue\n        entries = []\n        for f in sorted(os.listdir(dir)):\n            fname = os.path.join(dir, f)\n            if not f.endswith(\".aifc\"):\n                continue\n            try:\n                with open(fname, \"rb\") as inf:\n                    data = inf.read()\n                    entries.append(parse_aifc(data, f[:-5], fname))\n            except Exception as e:\n                fail(\"malformed AIFC file \" + fname + \": \" + str(e))\n        if entries:\n            sample_bank = SampleBank(name, entries)\n            sample_banks.append(sample_bank)\n            name_to_sample_bank[name] = sample_bank\n\n    bank_names = sorted(os.listdir(sound_bank_dir))\n    for f in bank_names:\n        fname = os.path.join(sound_bank_dir, f)\n        if not f.endswith(\".json\"):\n            continue\n\n        try:\n            if cpp_command:\n                data = subprocess.run(\n                    [cpp_command, fname] + [\"-D\" + x for x in defines],\n                    stdout=subprocess.PIPE,\n                    check=True,\n                ).stdout.decode()\n            else:\n                with open(fname, \"r\") as inf:\n                    data = inf.read()\n                data = strip_comments(data)\n            bank_json = orderedJsonDecoder.decode(data)\n\n            bank_json = apply_ifs(bank_json, defines_set)\n            validate_bank_toplevel(bank_json)\n            apply_version_diffs(bank_json, defines_set)\n            normalize_sound_json(bank_json)\n\n            sample_bank_name = bank_json[\"sample_bank\"]\n            validate(\n                sample_bank_name in name_to_sample_bank,\n                \"sample bank \" + sample_bank_name + \" not found\",\n            )\n            sample_bank = name_to_sample_bank[sample_bank_name]\n\n            validate_bank(bank_json, sample_bank)\n\n            bank = Bank(f[:-5], sample_bank, bank_json)\n            mark_sample_bank_uses(bank)\n            banks.append(bank)\n\n        except Exception as e:\n            fail(\"failed to parse bank \" + fname + \": \" + str(e))\n\n    sample_banks = [b for b in sample_banks if b.uses]\n    sample_banks.sort(key=lambda b: b.uses[0].name)\n    sample_bank_index = 0\n    for sample_bank in sample_banks:\n        sample_bank.index = sample_bank_index\n        sample_bank_index += 1\n\n    serialize_seqfile(\n        tbl_data_out,\n        tbl_data_header_out,\n        sample_banks,\n        serialize_tbl,\n        [x.sample_bank.index for x in banks],\n        TYPE_TBL,\n        is_shindou,\n    )\n\n    if DUMP_INDIVIDUAL_BINS:\n        # Debug logic, may simplify diffing\n        os.makedirs(\"ctl/\", exist_ok=True)\n        for b in banks:\n            with open(\"ctl/\" + b.name + \".bin\", \"wb\") as f:\n                ser = GarbageSerializer()\n                serialize_ctl(b, ser, is_shindou)\n                f.write(ser.finish())\n        print(\"wrote to ctl/\")\n\n    serialize_seqfile(\n        ctl_data_out,\n        ctl_data_header_out,\n        banks,\n        serialize_ctl,\n        list(range(len(banks))),\n        TYPE_CTL,\n        is_shindou,\n    )\n\n    if print_samples:\n        for sample_bank in sample_banks:\n            for entry in sample_bank.entries:\n                if entry.used:\n                    print(entry.fname)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "tools/audiofile/Makefile",
    "content": "CXX := g++\n\nlibaudiofile.a: audiofile.o\n\t$(AR) rcs $@ $^\n\naudiofile.o: audiofile.cpp audiofile.h aupvlist.h\n\t$(CXX) -std=c++11 -O2 -I. -c $< -o $@\n\nclean:\n\t$(RM) audiofile.o libaudiofile.a\n\n.PHONY: clean\n"
  },
  {
    "path": "tools/audiofile/audiofile.cpp",
    "content": "// libaudiofile b62c902\n// https://github.com/mpruett/audiofile\n// To simplify compilation, all files have been concatenated into one.\n// Support for all formats except WAVE, AIFF(C) and RAW has been stripped out.\n\n/*\n                  GNU LESSER GENERAL PUBLIC LICENSE\n                       Version 2.1, February 1999\n\n Copyright (C) 1991, 1999 Free Software Foundation, Inc.\n 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n[This is the first released version of the Lesser GPL.  It also counts\n as the successor of the GNU Library Public License, version 2, hence\n the version number 2.1.]\n\n                            Preamble\n\n  The licenses for most software are designed to take away your\nfreedom to share and change it.  By contrast, the GNU General Public\nLicenses are intended to guarantee your freedom to share and change\nfree software--to make sure the software is free for all its users.\n\n  This license, the Lesser General Public License, applies to some\nspecially designated software packages--typically libraries--of the\nFree Software Foundation and other authors who decide to use it.  You\ncan use it too, but we suggest you first think carefully about whether\nthis license or the ordinary General Public License is the better\nstrategy to use in any particular case, based on the explanations below.\n\n  When we speak of free software, we are referring to freedom of use,\nnot price.  Our General Public Licenses are designed to make sure that\nyou have the freedom to distribute copies of free software (and charge\nfor this service if you wish); that you receive source code or can get\nit if you want it; that you can change the software and use pieces of\nit in new free programs; and that you are informed that you can do\nthese things.\n\n  To protect your rights, we need to make restrictions that forbid\ndistributors to deny you these rights or to ask you to surrender these\nrights.  These restrictions translate to certain responsibilities for\nyou if you distribute copies of the library or if you modify it.\n\n  For example, if you distribute copies of the library, whether gratis\nor for a fee, you must give the recipients all the rights that we gave\nyou.  You must make sure that they, too, receive or can get the source\ncode.  If you link other code with the library, you must provide\ncomplete object files to the recipients, so that they can relink them\nwith the library after making changes to the library and recompiling\nit.  And you must show them these terms so they know their rights.\n\n  We protect your rights with a two-step method: (1) we copyright the\nlibrary, and (2) we offer you this license, which gives you legal\npermission to copy, distribute and/or modify the library.\n\n  To protect each distributor, we want to make it very clear that\nthere is no warranty for the free library.  Also, if the library is\nmodified by someone else and passed on, the recipients should know\nthat what they have is not the original version, so that the original\nauthor's reputation will not be affected by problems that might be\nintroduced by others.\n\n  Finally, software patents pose a constant threat to the existence of\nany free program.  We wish to make sure that a company cannot\neffectively restrict the users of a free program by obtaining a\nrestrictive license from a patent holder.  Therefore, we insist that\nany patent license obtained for a version of the library must be\nconsistent with the full freedom of use specified in this license.\n\n  Most GNU software, including some libraries, is covered by the\nordinary GNU General Public License.  This license, the GNU Lesser\nGeneral Public License, applies to certain designated libraries, and\nis quite different from the ordinary General Public License.  We use\nthis license for certain libraries in order to permit linking those\nlibraries into non-free programs.\n\n  When a program is linked with a library, whether statically or using\na shared library, the combination of the two is legally speaking a\ncombined work, a derivative of the original library.  The ordinary\nGeneral Public License therefore permits such linking only if the\nentire combination fits its criteria of freedom.  The Lesser General\nPublic License permits more lax criteria for linking other code with\nthe library.\n\n  We call this license the \"Lesser\" General Public License because it\ndoes Less to protect the user's freedom than the ordinary General\nPublic License.  It also provides other free software developers Less\nof an advantage over competing non-free programs.  These disadvantages\nare the reason we use the ordinary General Public License for many\nlibraries.  However, the Lesser license provides advantages in certain\nspecial circumstances.\n\n  For example, on rare occasions, there may be a special need to\nencourage the widest possible use of a certain library, so that it becomes\na de-facto standard.  To achieve this, non-free programs must be\nallowed to use the library.  A more frequent case is that a free\nlibrary does the same job as widely used non-free libraries.  In this\ncase, there is little to gain by limiting the free library to free\nsoftware only, so we use the Lesser General Public License.\n\n  In other cases, permission to use a particular library in non-free\nprograms enables a greater number of people to use a large body of\nfree software.  For example, permission to use the GNU C Library in\nnon-free programs enables many more people to use the whole GNU\noperating system, as well as its variant, the GNU/Linux operating\nsystem.\n\n  Although the Lesser General Public License is Less protective of the\nusers' freedom, it does ensure that the user of a program that is\nlinked with the Library has the freedom and the wherewithal to run\nthat program using a modified version of the Library.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.  Pay close attention to the difference between a\n\"work based on the library\" and a \"work that uses the library\".  The\nformer contains code derived from the library, whereas the latter must\nbe combined with the library in order to run.\n\n                  GNU LESSER GENERAL PUBLIC LICENSE\n   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n  0. This License Agreement applies to any software library or other\nprogram which contains a notice placed by the copyright holder or\nother authorized party saying it may be distributed under the terms of\nthis Lesser General Public License (also called \"this License\").\nEach licensee is addressed as \"you\".\n\n  A \"library\" means a collection of software functions and/or data\nprepared so as to be conveniently linked with application programs\n(which use some of those functions and data) to form executables.\n\n  The \"Library\", below, refers to any such software library or work\nwhich has been distributed under these terms.  A \"work based on the\nLibrary\" means either the Library or any derivative work under\ncopyright law: that is to say, a work containing the Library or a\nportion of it, either verbatim or with modifications and/or translated\nstraightforwardly into another language.  (Hereinafter, translation is\nincluded without limitation in the term \"modification\".)\n\n  \"Source code\" for a work means the preferred form of the work for\nmaking modifications to it.  For a library, complete source code means\nall the source code for all modules it contains, plus any associated\ninterface definition files, plus the scripts used to control compilation\nand installation of the library.\n\n  Activities other than copying, distribution and modification are not\ncovered by this License; they are outside its scope.  The act of\nrunning a program using the Library is not restricted, and output from\nsuch a program is covered only if its contents constitute a work based\non the Library (independent of the use of the Library in a tool for\nwriting it).  Whether that is true depends on what the Library does\nand what the program that uses the Library does.\n\n  1. You may copy and distribute verbatim copies of the Library's\ncomplete source code as you receive it, in any medium, provided that\nyou conspicuously and appropriately publish on each copy an\nappropriate copyright notice and disclaimer of warranty; keep intact\nall the notices that refer to this License and to the absence of any\nwarranty; and distribute a copy of this License along with the\nLibrary.\n\n  You may charge a fee for the physical act of transferring a copy,\nand you may at your option offer warranty protection in exchange for a\nfee.\n\n  2. You may modify your copy or copies of the Library or any portion\nof it, thus forming a work based on the Library, and copy and\ndistribute such modifications or work under the terms of Section 1\nabove, provided that you also meet all of these conditions:\n\n    a) The modified work must itself be a software library.\n\n    b) You must cause the files modified to carry prominent notices\n    stating that you changed the files and the date of any change.\n\n    c) You must cause the whole of the work to be licensed at no\n    charge to all third parties under the terms of this License.\n\n    d) If a facility in the modified Library refers to a function or a\n    table of data to be supplied by an application program that uses\n    the facility, other than as an argument passed when the facility\n    is invoked, then you must make a good faith effort to ensure that,\n    in the event an application does not supply such function or\n    table, the facility still operates, and performs whatever part of\n    its purpose remains meaningful.\n\n    (For example, a function in a library to compute square roots has\n    a purpose that is entirely well-defined independent of the\n    application.  Therefore, Subsection 2d requires that any\n    application-supplied function or table used by this function must\n    be optional: if the application does not supply it, the square\n    root function must still compute square roots.)\n\nThese requirements apply to the modified work as a whole.  If\nidentifiable sections of that work are not derived from the Library,\nand can be reasonably considered independent and separate works in\nthemselves, then this License, and its terms, do not apply to those\nsections when you distribute them as separate works.  But when you\ndistribute the same sections as part of a whole which is a work based\non the Library, the distribution of the whole must be on the terms of\nthis License, whose permissions for other licensees extend to the\nentire whole, and thus to each and every part regardless of who wrote\nit.\n\nThus, it is not the intent of this section to claim rights or contest\nyour rights to work written entirely by you; rather, the intent is to\nexercise the right to control the distribution of derivative or\ncollective works based on the Library.\n\nIn addition, mere aggregation of another work not based on the Library\nwith the Library (or with a work based on the Library) on a volume of\na storage or distribution medium does not bring the other work under\nthe scope of this License.\n\n  3. You may opt to apply the terms of the ordinary GNU General Public\nLicense instead of this License to a given copy of the Library.  To do\nthis, you must alter all the notices that refer to this License, so\nthat they refer to the ordinary GNU General Public License, version 2,\ninstead of to this License.  (If a newer version than version 2 of the\nordinary GNU General Public License has appeared, then you can specify\nthat version instead if you wish.)  Do not make any other change in\nthese notices.\n\n  Once this change is made in a given copy, it is irreversible for\nthat copy, so the ordinary GNU General Public License applies to all\nsubsequent copies and derivative works made from that copy.\n\n  This option is useful when you wish to copy part of the code of\nthe Library into a program that is not a library.\n\n  4. You may copy and distribute the Library (or a portion or\nderivative of it, under Section 2) in object code or executable form\nunder the terms of Sections 1 and 2 above provided that you accompany\nit with the complete corresponding machine-readable source code, which\nmust be distributed under the terms of Sections 1 and 2 above on a\nmedium customarily used for software interchange.\n\n  If distribution of object code is made by offering access to copy\nfrom a designated place, then offering equivalent access to copy the\nsource code from the same place satisfies the requirement to\ndistribute the source code, even though third parties are not\ncompelled to copy the source along with the object code.\n\n  5. A program that contains no derivative of any portion of the\nLibrary, but is designed to work with the Library by being compiled or\nlinked with it, is called a \"work that uses the Library\".  Such a\nwork, in isolation, is not a derivative work of the Library, and\ntherefore falls outside the scope of this License.\n\n  However, linking a \"work that uses the Library\" with the Library\ncreates an executable that is a derivative of the Library (because it\ncontains portions of the Library), rather than a \"work that uses the\nlibrary\".  The executable is therefore covered by this License.\nSection 6 states terms for distribution of such executables.\n\n  When a \"work that uses the Library\" uses material from a header file\nthat is part of the Library, the object code for the work may be a\nderivative work of the Library even though the source code is not.\nWhether this is true is especially significant if the work can be\nlinked without the Library, or if the work is itself a library.  The\nthreshold for this to be true is not precisely defined by law.\n\n  If such an object file uses only numerical parameters, data\nstructure layouts and accessors, and small macros and small inline\nfunctions (ten lines or less in length), then the use of the object\nfile is unrestricted, regardless of whether it is legally a derivative\nwork.  (Executables containing this object code plus portions of the\nLibrary will still fall under Section 6.)\n\n  Otherwise, if the work is a derivative of the Library, you may\ndistribute the object code for the work under the terms of Section 6.\nAny executables containing that work also fall under Section 6,\nwhether or not they are linked directly with the Library itself.\n\n  6. As an exception to the Sections above, you may also combine or\nlink a \"work that uses the Library\" with the Library to produce a\nwork containing portions of the Library, and distribute that work\nunder terms of your choice, provided that the terms permit\nmodification of the work for the customer's own use and reverse\nengineering for debugging such modifications.\n\n  You must give prominent notice with each copy of the work that the\nLibrary is used in it and that the Library and its use are covered by\nthis License.  You must supply a copy of this License.  If the work\nduring execution displays copyright notices, you must include the\ncopyright notice for the Library among them, as well as a reference\ndirecting the user to the copy of this License.  Also, you must do one\nof these things:\n\n    a) Accompany the work with the complete corresponding\n    machine-readable source code for the Library including whatever\n    changes were used in the work (which must be distributed under\n    Sections 1 and 2 above); and, if the work is an executable linked\n    with the Library, with the complete machine-readable \"work that\n    uses the Library\", as object code and/or source code, so that the\n    user can modify the Library and then relink to produce a modified\n    executable containing the modified Library.  (It is understood\n    that the user who changes the contents of definitions files in the\n    Library will not necessarily be able to recompile the application\n    to use the modified definitions.)\n\n    b) Use a suitable shared library mechanism for linking with the\n    Library.  A suitable mechanism is one that (1) uses at run time a\n    copy of the library already present on the user's computer system,\n    rather than copying library functions into the executable, and (2)\n    will operate properly with a modified version of the library, if\n    the user installs one, as long as the modified version is\n    interface-compatible with the version that the work was made with.\n\n    c) Accompany the work with a written offer, valid for at\n    least three years, to give the same user the materials\n    specified in Subsection 6a, above, for a charge no more\n    than the cost of performing this distribution.\n\n    d) If distribution of the work is made by offering access to copy\n    from a designated place, offer equivalent access to copy the above\n    specified materials from the same place.\n\n    e) Verify that the user has already received a copy of these\n    materials or that you have already sent this user a copy.\n\n  For an executable, the required form of the \"work that uses the\nLibrary\" must include any data and utility programs needed for\nreproducing the executable from it.  However, as a special exception,\nthe materials to be distributed need not include anything that is\nnormally distributed (in either source or binary form) with the major\ncomponents (compiler, kernel, and so on) of the operating system on\nwhich the executable runs, unless that component itself accompanies\nthe executable.\n\n  It may happen that this requirement contradicts the license\nrestrictions of other proprietary libraries that do not normally\naccompany the operating system.  Such a contradiction means you cannot\nuse both them and the Library together in an executable that you\ndistribute.\n\n  7. You may place library facilities that are a work based on the\nLibrary side-by-side in a single library together with other library\nfacilities not covered by this License, and distribute such a combined\nlibrary, provided that the separate distribution of the work based on\nthe Library and of the other library facilities is otherwise\npermitted, and provided that you do these two things:\n\n    a) Accompany the combined library with a copy of the same work\n    based on the Library, uncombined with any other library\n    facilities.  This must be distributed under the terms of the\n    Sections above.\n\n    b) Give prominent notice with the combined library of the fact\n    that part of it is a work based on the Library, and explaining\n    where to find the accompanying uncombined form of the same work.\n\n  8. You may not copy, modify, sublicense, link with, or distribute\nthe Library except as expressly provided under this License.  Any\nattempt otherwise to copy, modify, sublicense, link with, or\ndistribute the Library is void, and will automatically terminate your\nrights under this License.  However, parties who have received copies,\nor rights, from you under this License will not have their licenses\nterminated so long as such parties remain in full compliance.\n\n  9. You are not required to accept this License, since you have not\nsigned it.  However, nothing else grants you permission to modify or\ndistribute the Library or its derivative works.  These actions are\nprohibited by law if you do not accept this License.  Therefore, by\nmodifying or distributing the Library (or any work based on the\nLibrary), you indicate your acceptance of this License to do so, and\nall its terms and conditions for copying, distributing or modifying\nthe Library or works based on it.\n\n  10. Each time you redistribute the Library (or any work based on the\nLibrary), the recipient automatically receives a license from the\noriginal licensor to copy, distribute, link with or modify the Library\nsubject to these terms and conditions.  You may not impose any further\nrestrictions on the recipients' exercise of the rights granted herein.\nYou are not responsible for enforcing compliance by third parties with\nthis License.\n\n  11. If, as a consequence of a court judgment or allegation of patent\ninfringement or for any other reason (not limited to patent issues),\nconditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot\ndistribute so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you\nmay not distribute the Library at all.  For example, if a patent\nlicense would not permit royalty-free redistribution of the Library by\nall those who receive copies directly or indirectly through you, then\nthe only way you could satisfy both it and this License would be to\nrefrain entirely from distribution of the Library.\n\nIf any portion of this section is held invalid or unenforceable under any\nparticular circumstance, the balance of the section is intended to apply,\nand the section as a whole is intended to apply in other circumstances.\n\nIt is not the purpose of this section to induce you to infringe any\npatents or other property right claims or to contest validity of any\nsuch claims; this section has the sole purpose of protecting the\nintegrity of the free software distribution system which is\nimplemented by public license practices.  Many people have made\ngenerous contributions to the wide range of software distributed\nthrough that system in reliance on consistent application of that\nsystem; it is up to the author/donor to decide if he or she is willing\nto distribute software through any other system and a licensee cannot\nimpose that choice.\n\nThis section is intended to make thoroughly clear what is believed to\nbe a consequence of the rest of this License.\n\n  12. If the distribution and/or use of the Library is restricted in\ncertain countries either by patents or by copyrighted interfaces, the\noriginal copyright holder who places the Library under this License may add\nan explicit geographical distribution limitation excluding those countries,\nso that distribution is permitted only in or among countries not thus\nexcluded.  In such case, this License incorporates the limitation as if\nwritten in the body of this License.\n\n  13. The Free Software Foundation may publish revised and/or new\nversions of the Lesser General Public License from time to time.\nSuch new versions will be similar in spirit to the present version,\nbut may differ in detail to address new problems or concerns.\n\nEach version is given a distinguishing version number.  If the Library\nspecifies a version number of this License which applies to it and\n\"any later version\", you have the option of following the terms and\nconditions either of that version or of any later version published by\nthe Free Software Foundation.  If the Library does not specify a\nlicense version number, you may choose any version ever published by\nthe Free Software Foundation.\n\n  14. If you wish to incorporate parts of the Library into other free\nprograms whose distribution conditions are incompatible with these,\nwrite to the author to ask for permission.  For software which is\ncopyrighted by the Free Software Foundation, write to the Free\nSoftware Foundation; we sometimes make exceptions for this.  Our\ndecision will be guided by the two goals of preserving the free status\nof all derivatives of our free software and of promoting the sharing\nand reuse of software generally.\n\n                            NO WARRANTY\n\n  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO\nWARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.\nEXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR\nOTHER PARTIES PROVIDE THE LIBRARY \"AS IS\" WITHOUT WARRANTY OF ANY\nKIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE\nLIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME\nTHE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN\nWRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY\nAND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU\nFOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR\nCONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE\nLIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING\nRENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A\nFAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF\nSUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\nDAMAGES.\n\n                     END OF TERMS AND CONDITIONS\n\n           How to Apply These Terms to Your New Libraries\n\n  If you develop a new library, and you want it to be of the greatest\npossible use to the public, we recommend making it free software that\neveryone can redistribute and change.  You can do so by permitting\nredistribution under these terms (or, alternatively, under the terms of the\nordinary General Public License).\n\n  To apply these terms, attach the following notices to the library.  It is\nsafest to attach them to the start of each source file to most effectively\nconvey the exclusion of warranty; and each file should have at least the\n\"copyright\" line and a pointer to where the full notice is found.\n\n    <one line to give the library's name and a brief idea of what it does.>\n    Copyright (C) <year>  <name of author>\n\n    This library is free software; you can redistribute it and/or\n    modify it under the terms of the GNU Lesser General Public\n    License as published by the Free Software Foundation; either\n    version 2.1 of the License, or (at your option) any later version.\n\n    This library is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n    Lesser General Public License for more details.\n\n    You should have received a copy of the GNU Lesser General Public\n    License along with this library; if not, write to the Free Software\n    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA\n\nAlso add information on how to contact you by electronic and paper mail.\n\nYou should also get your employer (if you work as a programmer) or your\nschool, if any, to sign a \"copyright disclaimer\" for the library, if\nnecessary.  Here is a sample; alter the names:\n\n  Yoyodyne, Inc., hereby disclaims all copyright interest in the\n  library `Frob' (a library for tweaking knobs) written by James Random Hacker.\n\n  <signature of Ty Coon>, 1 April 1990\n  Ty Coon, President of Vice\n\nThat's all there is to it!\n\n*/\n\n#define HAVE_UNISTD_H 1\n#if defined __BIG_ENDIAN__\n# define WORDS_BIGENDIAN 1\n#endif\n#include <stdlib.h>\n\n// file: Features.h\n/*\n\tAudio File Library\n\tCopyright (C) 2013 Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n#ifndef Features_h\n#define Features_h\n\n#define ENABLE(FEATURE) (defined ENABLE_##FEATURE && ENABLE_##FEATURE)\n\n#endif\n\n// file: Compiler.h\n/*\n\tAudio File Library\n\tCopyright (C) 2013 Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n#ifndef COMPILER_H\n#define COMPILER_H\n\n#if defined(__GNUC__) && !defined(__clang__)\n#define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)\n#define GCC_VERSION_AT_LEAST(major, minor, patch) \\\n\t(GCC_VERSION >= (major * 10000 + minor * 100 + patch))\n#if GCC_VERSION_AT_LEAST(4, 7, 0) && defined(__cplusplus) && __cplusplus >= 201103L\n#define OVERRIDE override\n#endif\n#endif\n\n#if defined(__clang__)\n#if __has_extension(cxx_override_control)\n#define OVERRRIDE override\n#endif\n#endif\n\n#ifndef OVERRIDE\n#define OVERRIDE\n#endif\n\n#endif\n\n// file: error.h\n/*\n\tAudio File Library\n\tCopyright (C) 1998, Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n#ifndef ERROR_H\n#define ERROR_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#if !defined(__GNUC__) && !defined(__clang__) && !defined(__attribute__)\n#define __attribute__(x)\n#endif\n\nvoid _af_error (int errorCode, const char *fmt, ...)\n\t__attribute__((format(printf, 2, 3)));\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n\n// file: extended.h\n/*\n\tAudio File Library\n\tCopyright (C) 1998, Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\textended.h\n\n\tThis file defines interfaces to Apple's extended floating-point\n\tconversion routines.\n*/\n\n#ifndef EXTENDED_H\n#define EXTENDED_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\nvoid _af_convert_to_ieee_extended (double num, unsigned char *bytes);\ndouble _af_convert_from_ieee_extended (const unsigned char *bytes);\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n\n// file: compression.h\n/*\n\tAudio File Library\n\tCopyright (C) 1999, Michael Pruett <michael@68k.org>\n\tCopyright (C) 2000, Silicon Graphics, Inc.\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\tcompression.h\n*/\n\n#ifndef COMPRESSION_H\n#define COMPRESSION_H\n\nstruct CompressionUnit;\n\nconst CompressionUnit *_af_compression_unit_from_id (int compressionid);\n\n#endif\n\n// file: aupvinternal.h\n/*\n\tAudio File Library\n\tCopyright (C) 1998-2000, Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\taupvinternal.h\n\n\tThis file contains the private data structures for the parameter\n\tvalue list data types.\n*/\n\n#ifndef AUPVINTERNAL_H\n#define AUPVINTERNAL_H\n\nstruct _AUpvitem\n{\n\tint\tvalid;\n\tint\ttype;\n\tint\tparameter;\n\n\tunion\n\t{\n\t\tlong\tl;\n\t\tdouble\td;\n\t\tvoid\t*v;\n\t}\n\tvalue;\n};\n\nstruct _AUpvlist\n{\n\tint\t\t\tvalid;\n\tsize_t\t\t\tcount;\n\tstruct _AUpvitem\t*items;\n};\n\nenum\n{\n\t_AU_VALID_PVLIST = 30932,\n\t_AU_VALID_PVITEM = 30933\n};\n\nenum\n{\n\tAU_BAD_PVLIST = -5,\n\tAU_BAD_PVITEM = -6,\n\tAU_BAD_PVTYPE = -7,\n\tAU_BAD_ALLOC = -8\n};\n\nenum\n{\n\t_AU_FAIL = -1,\n\t_AU_SUCCESS = 0\n};\n\n#define _AU_NULL_PVITEM ((struct _AUpvitem *) NULL)\n\n#endif\n\n// file: aupvlist.h\n/*\n\tAudio File Library\n\tCopyright (C) 1998-2000, Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\taupvlist.h\n\n\tThis file contains the interface to the parameter value list data\n\tstructures and routines.\n*/\n\n#ifndef AUPVLIST_H\n#define AUPVLIST_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#if (defined(__GNUC__) && __GNUC__ >= 4) || defined(__clang__)\n#define AFAPI __attribute__((visibility(\"default\")))\n#else\n#define AFAPI\n#endif\n\nenum\n{\n\tAU_PVTYPE_LONG = 1,\n\tAU_PVTYPE_DOUBLE = 2,\n\tAU_PVTYPE_PTR = 3\n};\n\ntypedef struct _AUpvlist *AUpvlist;\n\n#define AU_NULL_PVLIST ((struct _AUpvlist *) 0)\n\nAFAPI AUpvlist AUpvnew (int maxItems);\nAFAPI int AUpvgetmaxitems (AUpvlist);\nAFAPI int AUpvfree (AUpvlist);\nAFAPI int AUpvsetparam (AUpvlist, int item, int param);\nAFAPI int AUpvsetvaltype (AUpvlist, int item, int type);\nAFAPI int AUpvsetval (AUpvlist, int item, void *val);\nAFAPI int AUpvgetparam (AUpvlist, int item, int *param);\nAFAPI int AUpvgetvaltype (AUpvlist, int item, int *type);\nAFAPI int AUpvgetval (AUpvlist, int item, void *val);\n\n#undef AFAPI\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* AUPVLIST_H */\n\n// file: audiofile.h\n/*\n\tAudio File Library\n\tCopyright (C) 1998-2000, 2010-2013 Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\taudiofile.h\n\n\tThis file contains the public interfaces to the Audio File Library.\n*/\n\n#ifndef AUDIOFILE_H\n#define AUDIOFILE_H\n\n#include <aupvlist.h>\n#include <stdint.h>\n#include <sys/types.h>\n\n#define LIBAUDIOFILE_MAJOR_VERSION 0\n#define LIBAUDIOFILE_MINOR_VERSION 3\n#define LIBAUDIOFILE_MICRO_VERSION 6\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#if (defined(__GNUC__) && __GNUC__ >= 4) || defined(__clang__)\n#define AFAPI __attribute__((visibility(\"default\")))\n#else\n#define AFAPI\n#endif\n\ntypedef struct _AFvirtualfile AFvirtualfile;\n\ntypedef struct _AFfilesetup *AFfilesetup;\ntypedef struct _AFfilehandle *AFfilehandle;\ntypedef void (*AFerrfunc)(long, const char *);\n\n// Define AFframecount and AFfileoffset as 64-bit signed integers.\n#if defined(__FreeBSD__) || \\\n\tdefined(__DragonFly__) || \\\n\tdefined(__NetBSD__) || \\\n\tdefined(__OpenBSD__) || \\\n\tdefined(__APPLE__) || \\\n\tdefined(__sgi) || \\\n\t(defined(__linux__) && defined(__LP64__))\n// BSD and IRIX systems define off_t as a 64-bit signed integer.\n// Linux defines off_t as a 64-bit signed integer in LP64 mode.\ntypedef off_t AFframecount;\ntypedef off_t AFfileoffset;\n#else\n// For all other systems, use int64_t.\ntypedef int64_t AFframecount;\ntypedef int64_t AFfileoffset;\n#endif\n\n#define AF_NULL_FILESETUP\t((struct _AFfilesetup *) 0)\n#define AF_NULL_FILEHANDLE\t((struct _AFfilehandle *) 0)\n\n#define AF_ERR_BASE 3000\n\nenum\n{\n\tAF_DEFAULT_TRACK = 1001\n};\n\nenum\n{\n\tAF_DEFAULT_INST = 2001\n};\n\nenum\n{\n\tAF_NUM_UNLIMITED = 99999\n};\n\nenum\n{\n\tAF_BYTEORDER_BIGENDIAN = 501,\n\tAF_BYTEORDER_LITTLEENDIAN = 502\n};\n\nenum\n{\n\tAF_FILE_UNKNOWN = -1,\n\tAF_FILE_RAWDATA = 0,\n\tAF_FILE_AIFFC = 1,\n\tAF_FILE_AIFF = 2,\n\tAF_FILE_NEXTSND = 3,\n\tAF_FILE_WAVE = 4,\n\tAF_FILE_BICSF = 5,\n\tAF_FILE_IRCAM = AF_FILE_BICSF,\n\tAF_FILE_MPEG1BITSTREAM = 6,\t/* not implemented */\n\tAF_FILE_SOUNDDESIGNER1 = 7,\t/* not implemented */\n\tAF_FILE_SOUNDDESIGNER2 = 8,\t/* not implemented */\n\tAF_FILE_AVR = 9,\n\tAF_FILE_IFF_8SVX = 10,\n\tAF_FILE_SAMPLEVISION = 11,\n\tAF_FILE_VOC = 12,\n\tAF_FILE_NIST_SPHERE = 13,\n\tAF_FILE_SOUNDFONT2 = 14,\t/* not implemented */\n\tAF_FILE_CAF = 15,\n\tAF_FILE_FLAC = 16\n};\n\nenum\n{\n\tAF_LOOP_MODE_NOLOOP = 0,\n\tAF_LOOP_MODE_FORW = 1,\n\tAF_LOOP_MODE_FORWBAKW = 2\n};\n\nenum\n{\n\tAF_SAMPFMT_TWOSCOMP = 401, /* linear two's complement */\n\tAF_SAMPFMT_UNSIGNED = 402, /* unsigned integer */\n\tAF_SAMPFMT_FLOAT = 403, /* 32-bit IEEE floating-point */\n\tAF_SAMPFMT_DOUBLE = 404 /* 64-bit IEEE double-precision floating-point */\n};\n\nenum\n{\n\tAF_INST_LOOP_OFF = 0,\t\t\t/* no looping */\n\tAF_INST_LOOP_CONTINUOUS = 1,\t/* loop continuously through decay */\n\tAF_INST_LOOP_SUSTAIN = 3\t\t/* loop during sustain, then continue */\n};\n\nenum\n{\n\tAF_INST_MIDI_BASENOTE = 301,\n\tAF_INST_NUMCENTS_DETUNE = 302,\n\tAF_INST_MIDI_LONOTE = 303,\n\tAF_INST_MIDI_HINOTE = 304,\n\tAF_INST_MIDI_LOVELOCITY = 305,\n\tAF_INST_MIDI_HIVELOCITY = 306,\n\tAF_INST_NUMDBS_GAIN = 307,\n\tAF_INST_SUSLOOPID = 308,\t\t/* loop id for AIFF sustain loop */\n\tAF_INST_RELLOOPID = 309,\t\t/* loop id for AIFF release loop */\n\tAF_INST_SAMP_STARTFRAME = 310,\t/* start sample for this inst */\n\tAF_INST_SAMP_ENDFRAME = 311,\t/* end sample for this inst */\n\tAF_INST_SAMP_MODE = 312,\t\t/* looping mode for this inst */\n\tAF_INST_TRACKID = 313,\n\tAF_INST_NAME = 314,\t\t\t\t/* name of this inst */\n\tAF_INST_SAMP_RATE = 315,\t\t/* sample rate of this inst's sample */\n\tAF_INST_PRESETID = 316,\t\t\t/* ID of preset containing this inst */\n\tAF_INST_PRESET_NAME = 317\t\t/* name of preset containing this inst */\n};\n\nenum\n{\n\tAF_MISC_UNRECOGNIZED = 0,\t/* unrecognized data chunk */\n\tAF_MISC_COPY = 201,\t/* copyright string */\n\tAF_MISC_AUTH = 202,\t/* author string */\n\tAF_MISC_NAME = 203,\t/* name string */\n\tAF_MISC_ANNO = 204,\t/* annotation string */\n\tAF_MISC_APPL = 205,\t/* application-specific data */\n\tAF_MISC_MIDI = 206,\t/* MIDI exclusive data */\n\tAF_MISC_PCMMAP = 207,\t/* PCM mapping information (future use) */\n\tAF_MISC_NeXT = 208,\t/* misc binary data appended to NeXT header */\n\tAF_MISC_IRCAM_PEAKAMP = 209,\t/* peak amplitude information */\n\tAF_MISC_IRCAM_COMMENT = 210,\t/* BICSF text comment */\n\tAF_MISC_COMMENT = 210,\t/* general text comment */\n\n\tAF_MISC_ICMT = AF_MISC_COMMENT,\t/* comments chunk (WAVE format) */\n\tAF_MISC_ICRD = 211,  /* creation date (WAVE format) */\n\tAF_MISC_ISFT = 212  /* software name (WAVE format) */\n};\n\nenum\n{\n\t/* supported compression schemes */\n\tAF_COMPRESSION_UNKNOWN = -1,\n\tAF_COMPRESSION_NONE = 0,\n\tAF_COMPRESSION_G722 = 501,\n\tAF_COMPRESSION_G711_ULAW = 502,\n\tAF_COMPRESSION_G711_ALAW = 503,\n\n\t/* Apple proprietary AIFF-C compression schemes (not supported) */\n\tAF_COMPRESSION_APPLE_ACE2 = 504,\n\tAF_COMPRESSION_APPLE_ACE8 = 505,\n\tAF_COMPRESSION_APPLE_MAC3 = 506,\n\tAF_COMPRESSION_APPLE_MAC6 = 507,\n\n\tAF_COMPRESSION_G726 = 517,\n\tAF_COMPRESSION_G728 = 518,\n\tAF_COMPRESSION_DVI_AUDIO = 519,\n\tAF_COMPRESSION_IMA = AF_COMPRESSION_DVI_AUDIO,\n\tAF_COMPRESSION_GSM = 520,\n\tAF_COMPRESSION_FS1016 = 521,\n\tAF_COMPRESSION_DV = 522,\n\tAF_COMPRESSION_MS_ADPCM = 523,\n\n\tAF_COMPRESSION_FLAC = 530,\n\tAF_COMPRESSION_ALAC = 540\n};\n\n/* tokens for afQuery() -- see the man page for instructions */\n/* level 1 selectors */\nenum\n{\n\tAF_QUERYTYPE_INSTPARAM = 500,\n\tAF_QUERYTYPE_FILEFMT = 501,\n\tAF_QUERYTYPE_COMPRESSION = 502,\n\tAF_QUERYTYPE_COMPRESSIONPARAM = 503,\n\tAF_QUERYTYPE_MISC = 504,\n\tAF_QUERYTYPE_INST = 505,\n\tAF_QUERYTYPE_MARK = 506,\n\tAF_QUERYTYPE_LOOP = 507\n};\n\n/* level 2 selectors */\nenum\n{\n\tAF_QUERY_NAME = 600,\t/* get name (1-3 words) */\n\tAF_QUERY_DESC = 601,\t/* get description */\n\tAF_QUERY_LABEL = 602,\t/* get 4- or 5-char label */\n\tAF_QUERY_TYPE = 603,\t/* get type token */\n\tAF_QUERY_DEFAULT = 604,\t/* dflt. value for param */\n\tAF_QUERY_ID_COUNT = 605,\t/* get number of ids avail. */\n\tAF_QUERY_IDS = 606,\t/* get array of id tokens */\n\tAF_QUERY_IMPLEMENTED = 613,\t/* boolean */\n\tAF_QUERY_TYPE_COUNT = 607,\t/* get number of types av. */\n\tAF_QUERY_TYPES = 608,\t/* get array of types */\n\tAF_QUERY_NATIVE_SAMPFMT = 609,\t/* for compression */\n\tAF_QUERY_NATIVE_SAMPWIDTH = 610,\n\tAF_QUERY_SQUISHFAC = 611,\t/* 1.0 means variable */\n\tAF_QUERY_MAX_NUMBER = 612,\t/* max allowed in file */\n\tAF_QUERY_SUPPORTED = 613\t/* insts, loops, etc., supported? */\n};\n\n/* level 2 selectors which have sub-selectors */\nenum\n{\n\tAF_QUERY_TRACKS = 620,\n\tAF_QUERY_CHANNELS = 621,\n\tAF_QUERY_SAMPLE_SIZES = 622,\n\tAF_QUERY_SAMPLE_FORMATS = 623,\n\tAF_QUERY_COMPRESSION_TYPES = 624\n};\n\n/* level 3 sub-selectors */\nenum\n{\n\tAF_QUERY_VALUE_COUNT = 650,\t/* number of values of the above */\n\tAF_QUERY_VALUES = 651\t/* array of those values */\n};\n\n\n/*\n\tOld Audio File Library error codes. These are still returned by the\n\tAFerrorhandler calls, but are not used by the new digital media library\n\terror reporting routines. See the bottom of this file for the new error\n\ttokens.\n*/\n\nenum\n{\n\tAF_BAD_NOT_IMPLEMENTED = 0,\t/* not implemented yet */\n\tAF_BAD_FILEHANDLE = 1,\t/* tried to use invalid filehandle */\n\tAF_BAD_OPEN = 3,\t/* unix open failed */\n\tAF_BAD_CLOSE = 4,\t/* unix close failed */\n\tAF_BAD_READ = 5,\t/* unix read failed */\n\tAF_BAD_WRITE = 6,\t/* unix write failed */\n\tAF_BAD_LSEEK = 7,\t/* unix lseek failed */\n\tAF_BAD_NO_FILEHANDLE = 8,\t/* failed to allocate a filehandle struct */\n\tAF_BAD_ACCMODE = 10,\t/* unrecognized audio file access mode */\n\tAF_BAD_NOWRITEACC = 11,\t/* file not open for writing */\n\tAF_BAD_NOREADACC = 12,\t/* file not open for reading */\n\tAF_BAD_FILEFMT = 13,\t/* unrecognized audio file format */\n\tAF_BAD_RATE = 14,\t/* invalid sample rate */\n\tAF_BAD_CHANNELS = 15,\t/* invalid number of channels*/\n\tAF_BAD_SAMPCNT = 16,\t/* invalid sample count */\n\tAF_BAD_WIDTH = 17,\t/* invalid sample width */\n\tAF_BAD_SEEKMODE = 18,\t/* invalid seek mode */\n\tAF_BAD_NO_LOOPDATA = 19,\t/* failed to allocate loop struct */\n\tAF_BAD_MALLOC = 20,\t/* malloc failed somewhere */\n\tAF_BAD_LOOPID = 21,\n\tAF_BAD_SAMPFMT = 22,\t/* bad sample format */\n\tAF_BAD_FILESETUP = 23,\t/* bad file setup structure*/\n\tAF_BAD_TRACKID = 24,\t/* no track corresponding to id */\n\tAF_BAD_NUMTRACKS = 25,\t/* wrong number of tracks for file format */\n\tAF_BAD_NO_FILESETUP = 26,\t/* failed to allocate a filesetup struct*/\n\tAF_BAD_LOOPMODE = 27,\t/* unrecognized loop mode value */\n\tAF_BAD_INSTID = 28,\t/* invalid instrument id */\n\tAF_BAD_NUMLOOPS = 29,\t/* bad number of loops */\n\tAF_BAD_NUMMARKS = 30,\t/* bad number of markers */\n\tAF_BAD_MARKID = 31,\t/* bad marker id */\n\tAF_BAD_MARKPOS = 32,\t/* invalid marker position value */\n\tAF_BAD_NUMINSTS = 33,\t/* invalid number of instruments */\n\tAF_BAD_NOAESDATA = 34,\n\tAF_BAD_MISCID = 35,\n\tAF_BAD_NUMMISC = 36,\n\tAF_BAD_MISCSIZE = 37,\n\tAF_BAD_MISCTYPE = 38,\n\tAF_BAD_MISCSEEK = 39,\n\tAF_BAD_STRLEN = 40,\t/* invalid string length */\n\tAF_BAD_RATECONV = 45,\n\tAF_BAD_SYNCFILE = 46,\n\tAF_BAD_CODEC_CONFIG = 47,\t/* improperly configured codec */\n\tAF_BAD_CODEC_STATE = 48,\t/* invalid codec state: can't recover */\n\tAF_BAD_CODEC_LICENSE = 49,\t/* no license available for codec */\n\tAF_BAD_CODEC_TYPE = 50,\t/* unsupported codec type */\n\tAF_BAD_COMPRESSION = AF_BAD_CODEC_CONFIG,\t/* for back compat */\n\tAF_BAD_COMPTYPE = AF_BAD_CODEC_TYPE,\t/* for back compat */\n\n\tAF_BAD_INSTPTYPE = 51,\t/* invalid instrument parameter type */\n\tAF_BAD_INSTPID = 52,\t/* invalid instrument parameter id */\n\tAF_BAD_BYTEORDER = 53,\n\tAF_BAD_FILEFMT_PARAM = 54,\t/* unrecognized file format parameter */\n\tAF_BAD_COMP_PARAM = 55,\t/* unrecognized compression parameter */\n\tAF_BAD_DATAOFFSET = 56,\t/* bad data offset */\n\tAF_BAD_FRAMECNT = 57,\t/* bad frame count */\n\tAF_BAD_QUERYTYPE = 58,\t/* bad query type */\n\tAF_BAD_QUERY = 59,\t/* bad argument to afQuery() */\n\tAF_WARNING_CODEC_RATE = 60,\t/* using 8k instead of codec rate 8012 */\n\tAF_WARNING_RATECVT = 61,\t/* warning about rate conversion used */\n\n\tAF_BAD_HEADER = 62,\t/* failed to parse header */\n\tAF_BAD_FRAME = 63,\t/* bad frame number */\n\tAF_BAD_LOOPCOUNT = 64,\t/* bad loop count */\n\tAF_BAD_DMEDIA_CALL = 65,\t/* error in dmedia subsystem call */\n\n\t/* AIFF/AIFF-C specific errors when parsing file header */\n\tAF_BAD_AIFF_HEADER = 108,\t/* failed to parse chunk header */\n\tAF_BAD_AIFF_FORM = 109,\t/* failed to parse FORM chunk */\n\tAF_BAD_AIFF_SSND = 110,\t/* failed to parse SSND chunk */\n\tAF_BAD_AIFF_CHUNKID = 111,\t/* unrecognized AIFF/AIFF-C chunk id */\n\tAF_BAD_AIFF_COMM = 112,\t/* failed to parse COMM chunk */\n\tAF_BAD_AIFF_INST = 113,\t/* failed to parse INST chunk */\n\tAF_BAD_AIFF_MARK = 114,\t/* failed to parse MARK chunk */\n\tAF_BAD_AIFF_SKIP = 115,\t/* failed to skip unsupported chunk */\n\tAF_BAD_AIFF_LOOPMODE = 116\t/* unrecognized loop mode (forw, etc)*/\n};\n\n/* new error codes which may be retrieved via dmGetError() */\n/* The old error tokens continue to be retrievable via the AFerrorhandler */\n/* AF_ERR_BASE is #defined in dmedia/dmedia.h */\n\nenum\n{\n\tAF_ERR_NOT_IMPLEMENTED = 0+AF_ERR_BASE,\t/* not implemented yet */\n\tAF_ERR_BAD_FILEHANDLE = 1+AF_ERR_BASE,\t/* invalid filehandle */\n\tAF_ERR_BAD_READ = 5+AF_ERR_BASE,\t/* unix read failed */\n\tAF_ERR_BAD_WRITE = 6+AF_ERR_BASE,\t/* unix write failed */\n\tAF_ERR_BAD_LSEEK = 7+AF_ERR_BASE,\t/* unix lseek failed */\n\tAF_ERR_BAD_ACCMODE = 10+AF_ERR_BASE,\t/* unrecognized audio file access mode */\n\tAF_ERR_NO_WRITEACC = 11+AF_ERR_BASE,\t/* file not open for writing */\n\tAF_ERR_NO_READACC = 12+AF_ERR_BASE,\t/* file not open for reading */\n\tAF_ERR_BAD_FILEFMT = 13+AF_ERR_BASE,\t/* unrecognized audio file format */\n\tAF_ERR_BAD_RATE = 14+AF_ERR_BASE,\t/* invalid sample rate */\n\tAF_ERR_BAD_CHANNELS = 15+AF_ERR_BASE,\t/* invalid # channels*/\n\tAF_ERR_BAD_SAMPCNT = 16+AF_ERR_BASE,\t/* invalid sample count */\n\tAF_ERR_BAD_WIDTH = 17+AF_ERR_BASE,\t/* invalid sample width */\n\tAF_ERR_BAD_SEEKMODE = 18+AF_ERR_BASE,\t/* invalid seek mode */\n\tAF_ERR_BAD_LOOPID = 21+AF_ERR_BASE,\t/* invalid loop id */\n\tAF_ERR_BAD_SAMPFMT = 22+AF_ERR_BASE,\t/* bad sample format */\n\tAF_ERR_BAD_FILESETUP = 23+AF_ERR_BASE,\t/* bad file setup structure*/\n\tAF_ERR_BAD_TRACKID = 24+AF_ERR_BASE,\t/* no track corresponding to id */\n\tAF_ERR_BAD_NUMTRACKS = 25+AF_ERR_BASE,\t/* wrong number of tracks for file format */\n\tAF_ERR_BAD_LOOPMODE = 27+AF_ERR_BASE,\t/* unrecognized loop mode symbol */\n\tAF_ERR_BAD_INSTID = 28+AF_ERR_BASE,\t/* invalid instrument id */\n\tAF_ERR_BAD_NUMLOOPS = 29+AF_ERR_BASE,\t/* bad number of loops */\n\tAF_ERR_BAD_NUMMARKS = 30+AF_ERR_BASE,\t/* bad number of markers */\n\tAF_ERR_BAD_MARKID = 31+AF_ERR_BASE,\t/* bad marker id */\n\tAF_ERR_BAD_MARKPOS = 32+AF_ERR_BASE,\t/* invalid marker position value */\n\tAF_ERR_BAD_NUMINSTS = 33+AF_ERR_BASE,\t/* invalid number of instruments */\n\tAF_ERR_BAD_NOAESDATA = 34+AF_ERR_BASE,\n\tAF_ERR_BAD_MISCID = 35+AF_ERR_BASE,\n\tAF_ERR_BAD_NUMMISC = 36+AF_ERR_BASE,\n\tAF_ERR_BAD_MISCSIZE = 37+AF_ERR_BASE,\n\tAF_ERR_BAD_MISCTYPE = 38+AF_ERR_BASE,\n\tAF_ERR_BAD_MISCSEEK = 39+AF_ERR_BASE,\n\tAF_ERR_BAD_STRLEN = 40+AF_ERR_BASE,\t/* invalid string length */\n\tAF_ERR_BAD_RATECONV = 45+AF_ERR_BASE,\n\tAF_ERR_BAD_SYNCFILE = 46+AF_ERR_BASE,\n\tAF_ERR_BAD_CODEC_CONFIG = 47+AF_ERR_BASE,\t/* improperly configured codec */\n\tAF_ERR_BAD_CODEC_TYPE = 50+AF_ERR_BASE,\t/* unsupported codec type */\n\tAF_ERR_BAD_INSTPTYPE = 51+AF_ERR_BASE,\t/* invalid instrument parameter type */\n\tAF_ERR_BAD_INSTPID = 52+AF_ERR_BASE,\t/* invalid instrument parameter id */\n\n\tAF_ERR_BAD_BYTEORDER = 53+AF_ERR_BASE,\n\tAF_ERR_BAD_FILEFMT_PARAM = 54+AF_ERR_BASE,\t/* unrecognized file format parameter */\n\tAF_ERR_BAD_COMP_PARAM = 55+AF_ERR_BASE,\t/* unrecognized compression parameter */\n\tAF_ERR_BAD_DATAOFFSET = 56+AF_ERR_BASE,\t/* bad data offset */\n\tAF_ERR_BAD_FRAMECNT = 57+AF_ERR_BASE,\t/* bad frame count */\n\n\tAF_ERR_BAD_QUERYTYPE = 58+AF_ERR_BASE,\t/* bad query type */\n\tAF_ERR_BAD_QUERY = 59+AF_ERR_BASE,\t/* bad argument to afQuery() */\n\tAF_ERR_BAD_HEADER = 62+AF_ERR_BASE,\t/* failed to parse header */\n\tAF_ERR_BAD_FRAME = 63+AF_ERR_BASE,\t/* bad frame number */\n\tAF_ERR_BAD_LOOPCOUNT = 64+AF_ERR_BASE,\t/* bad loop count */\n\n\t/* AIFF/AIFF-C specific errors when parsing file header */\n\n\tAF_ERR_BAD_AIFF_HEADER = 66+AF_ERR_BASE,\t/* failed to parse chunk header */\n\tAF_ERR_BAD_AIFF_FORM = 67+AF_ERR_BASE,\t/* failed to parse FORM chunk */\n\tAF_ERR_BAD_AIFF_SSND = 68+AF_ERR_BASE,\t/* failed to parse SSND chunk */\n\tAF_ERR_BAD_AIFF_CHUNKID = 69+AF_ERR_BASE,\t/* unrecognized AIFF/AIFF-C chunk id */\n\tAF_ERR_BAD_AIFF_COMM = 70+AF_ERR_BASE,\t/* failed to parse COMM chunk */\n\tAF_ERR_BAD_AIFF_INST = 71+AF_ERR_BASE,\t/* failed to parse INST chunk */\n\tAF_ERR_BAD_AIFF_MARK = 72+AF_ERR_BASE,\t/* failed to parse MARK chunk */\n\tAF_ERR_BAD_AIFF_SKIP = 73+AF_ERR_BASE,\t/* failed to skip unsupported chunk */\n\tAF_ERR_BAD_AIFF_LOOPMODE = 74+AF_ERR_BASE\t/* unrecognized loop mode (forw, etc) */\n};\n\n\n/* global routines */\nAFAPI AFerrfunc afSetErrorHandler (AFerrfunc efunc);\n\n/* query routines */\nAFAPI AUpvlist afQuery (int querytype, int arg1, int arg2, int arg3, int arg4);\nAFAPI long afQueryLong (int querytype, int arg1, int arg2, int arg3, int arg4);\nAFAPI double afQueryDouble (int querytype, int arg1, int arg2, int arg3, int arg4);\nAFAPI void *afQueryPointer (int querytype, int arg1, int arg2, int arg3, int arg4);\n\n/* basic operations on file handles and file setups */\nAFAPI AFfilesetup afNewFileSetup (void);\nAFAPI void afFreeFileSetup (AFfilesetup);\nAFAPI int afIdentifyFD (int);\nAFAPI int afIdentifyNamedFD (int, const char *filename, int *implemented);\n\nAFAPI AFfilehandle afOpenFile (const char *filename, const char *mode,\n\tAFfilesetup setup);\nAFAPI AFfilehandle afOpenVirtualFile (AFvirtualfile *vfile, const char *mode,\n\tAFfilesetup setup);\nAFAPI AFfilehandle afOpenFD (int fd, const char *mode, AFfilesetup setup);\nAFAPI AFfilehandle afOpenNamedFD (int fd, const char *mode, AFfilesetup setup,\n\tconst char *filename);\n\nAFAPI void afSaveFilePosition (AFfilehandle file);\nAFAPI void afRestoreFilePosition (AFfilehandle file);\nAFAPI int afSyncFile (AFfilehandle file);\nAFAPI int afCloseFile (AFfilehandle file);\n\nAFAPI void afInitFileFormat (AFfilesetup, int format);\nAFAPI int afGetFileFormat (AFfilehandle, int *version);\n\n/* track */\nAFAPI void afInitTrackIDs (AFfilesetup, const int *trackids, int trackCount);\nAFAPI int afGetTrackIDs (AFfilehandle, int *trackids);\n\n/* track data: reading, writng, seeking, sizing frames */\nAFAPI int afReadFrames (AFfilehandle, int track, void *buffer, int frameCount);\nAFAPI int afWriteFrames (AFfilehandle, int track, const void *buffer, int frameCount);\nAFAPI AFframecount afSeekFrame (AFfilehandle, int track, AFframecount frameoffset);\nAFAPI AFframecount afTellFrame (AFfilehandle, int track);\nAFAPI AFfileoffset afGetTrackBytes (AFfilehandle, int track);\nAFAPI float afGetFrameSize (AFfilehandle, int track, int expand3to4);\nAFAPI float afGetVirtualFrameSize (AFfilehandle, int track, int expand3to4);\n\n/* track data: AES data */\n/* afInitAESChannelData is obsolete -- use afInitAESChannelDataTo() */\nAFAPI void afInitAESChannelData (AFfilesetup, int track); /* obsolete */\nAFAPI void afInitAESChannelDataTo (AFfilesetup, int track, int willBeData);\nAFAPI int afGetAESChannelData (AFfilehandle, int track, unsigned char buf[24]);\nAFAPI void afSetAESChannelData (AFfilehandle, int track, unsigned char buf[24]);\n\n/* track data: byte order */\nAFAPI void afInitByteOrder (AFfilesetup, int track, int byteOrder);\nAFAPI int afGetByteOrder (AFfilehandle, int track);\nAFAPI int afSetVirtualByteOrder (AFfilehandle, int track, int byteOrder);\nAFAPI int afGetVirtualByteOrder (AFfilehandle, int track);\n\n/* track data: number of channels */\nAFAPI void afInitChannels (AFfilesetup, int track, int nchannels);\nAFAPI int afGetChannels (AFfilehandle, int track);\nAFAPI int afSetVirtualChannels (AFfilehandle, int track, int channelCount);\nAFAPI int afGetVirtualChannels (AFfilehandle, int track);\nAFAPI void afSetChannelMatrix (AFfilehandle, int track, double *matrix);\n\n/* track data: sample format and sample width */\nAFAPI void afInitSampleFormat (AFfilesetup, int track, int sampleFormat,\n\tint sampleWidth);\nAFAPI void afGetSampleFormat (AFfilehandle file, int track, int *sampleFormat,\n\tint *sampleWidth);\nAFAPI int afSetVirtualSampleFormat (AFfilehandle, int track,\n\tint sampleFormat, int sampleWidth);\nAFAPI void afGetVirtualSampleFormat (AFfilehandle, int track,\n\tint *sampleFormat, int *sampleWidth);\n\n/* track data: sampling rate */\nAFAPI void afInitRate (AFfilesetup, int track, double rate);\nAFAPI double afGetRate (AFfilehandle, int track);\n\n#if 0\nint afSetVirtualRate (AFfilehandle, int track, double rate);\ndouble afGetVirtualRate (AFfilehandle, int track);\n#endif\n\n/* track data: compression */\nAFAPI void afInitCompression (AFfilesetup, int track, int compression);\n#if 0\nvoid afInitCompressionParams (AFfilesetup, int track, int compression\n\tAUpvlist params, int parameterCount);\n#endif\n\nAFAPI int afGetCompression (AFfilehandle, int track);\n#if 0\nvoid afGetCompressionParams (AFfilehandle, int track, int *compression,\n\tAUpvlist params, int parameterCount);\n\nint afSetVirtualCompression (AFfilesetup, int track, int compression);\nvoid afSetVirtualCompressionParams (AFfilehandle, int track, int compression,\n\tAUpvlist params, int parameterCount);\n\nint afGetVirtualCompression (AFfilesetup, int track, int compression);\nvoid afGetVirtualCompressionParams (AFfilehandle, int track, int *compression,\n\tAUpvlist params, int parameterCount);\n#endif\n\n/* track data: pcm mapping */\nAFAPI void afInitPCMMapping (AFfilesetup filesetup, int track,\n\tdouble slope, double intercept, double minClip, double maxClip);\nAFAPI void afGetPCMMapping (AFfilehandle file, int track,\n\tdouble *slope, double *intercept, double *minClip, double *maxClip);\n/* NOTE: afSetTrackPCMMapping() is special--it does not set the virtual  */\n/* format; it changes what the AF thinks the track format is! Be careful. */\nAFAPI int afSetTrackPCMMapping (AFfilehandle file, int track,\n\tdouble slope, double intercept, double minClip, double maxClip);\n/* NOTE: afSetVirtualPCMMapping() is different from afSetTrackPCMMapping(): */\n/* see comment for afSetTrackPCMMapping(). */\nAFAPI int afSetVirtualPCMMapping (AFfilehandle file, int track,\n\tdouble slope, double intercept, double minClip, double maxClip);\nAFAPI void afGetVirtualPCMMapping (AFfilehandle file, int track,\n\tdouble *slope, double *intercept, double *minClip, double *maxClip);\n\n/* track data: data offset within the file */\n/* initialize for raw reading only */\nAFAPI void afInitDataOffset(AFfilesetup, int track, AFfileoffset offset);\nAFAPI AFfileoffset afGetDataOffset (AFfilehandle, int track);\n\n/* track data: count of frames in file */\nAFAPI void afInitFrameCount (AFfilesetup, int track, AFframecount frameCount);\nAFAPI AFframecount afGetFrameCount (AFfilehandle file, int track);\n\n/* loop operations */\nAFAPI void afInitLoopIDs (AFfilesetup, int instid, const int *ids, int nids);\nAFAPI int afGetLoopIDs (AFfilehandle, int instid, int loopids[]);\nAFAPI void afSetLoopMode (AFfilehandle, int instid, int loop, int mode);\nAFAPI int afGetLoopMode (AFfilehandle, int instid, int loopid);\nAFAPI int afSetLoopCount (AFfilehandle, int instid, int loop, int count);\nAFAPI int afGetLoopCount (AFfilehandle, int instid, int loopid);\nAFAPI void afSetLoopStart (AFfilehandle, int instid, int loopid, int markerid);\nAFAPI int afGetLoopStart (AFfilehandle, int instid, int loopid);\nAFAPI void afSetLoopEnd (AFfilehandle, int instid, int loopid, int markerid);\nAFAPI int afGetLoopEnd (AFfilehandle, int instid, int loopid);\n\nAFAPI int afSetLoopStartFrame (AFfilehandle, int instid, int loop,\n\tAFframecount startFrame);\nAFAPI AFframecount afGetLoopStartFrame (AFfilehandle, int instid, int loop);\nAFAPI int afSetLoopEndFrame (AFfilehandle, int instid, int loop,\n\tAFframecount startFrame);\nAFAPI AFframecount afGetLoopEndFrame (AFfilehandle, int instid, int loop);\n\nAFAPI void afSetLoopTrack (AFfilehandle, int instid, int loopid, int trackid);\nAFAPI int afGetLoopTrack (AFfilehandle, int instid, int loopid);\n\n/* marker operations */\nAFAPI void afInitMarkIDs (AFfilesetup, int trackid, const int *ids, int nids);\nAFAPI int afGetMarkIDs (AFfilehandle file, int trackid, int markids[]);\nAFAPI void afSetMarkPosition (AFfilehandle file, int trackid, int markid,\n\tAFframecount markpos);\nAFAPI AFframecount afGetMarkPosition (AFfilehandle file, int trackid, int markid);\nAFAPI void afInitMarkName (AFfilesetup, int trackid, int marker, const char *name);\nAFAPI void afInitMarkComment (AFfilesetup, int trackid, int marker,\n\tconst char *comment);\nAFAPI char *afGetMarkName (AFfilehandle file, int trackid, int markid);\nAFAPI char *afGetMarkComment (AFfilehandle file, int trackid, int markid);\n\n/* instrument operations */\nAFAPI void afInitInstIDs (AFfilesetup, const int *ids, int nids);\nAFAPI int afGetInstIDs (AFfilehandle file, int *instids);\nAFAPI void afGetInstParams (AFfilehandle file, int instid, AUpvlist pvlist,\n\tint nparams);\nAFAPI void afSetInstParams (AFfilehandle file, int instid, AUpvlist pvlist,\n\tint nparams);\nAFAPI long afGetInstParamLong (AFfilehandle file, int instid, int param);\nAFAPI void afSetInstParamLong (AFfilehandle file, int instid, int param, long value);\n\n/* miscellaneous data operations */\nAFAPI void afInitMiscIDs (AFfilesetup, const int *ids, int nids);\nAFAPI int afGetMiscIDs (AFfilehandle, int *ids);\nAFAPI void afInitMiscType (AFfilesetup, int miscellaneousid, int type);\nAFAPI int afGetMiscType (AFfilehandle, int miscellaneousid);\nAFAPI void afInitMiscSize (AFfilesetup, int miscellaneousid, int size);\nAFAPI int afGetMiscSize (AFfilehandle, int miscellaneousid);\nAFAPI int afWriteMisc (AFfilehandle, int miscellaneousid, const void *buf, int bytes);\nAFAPI int afReadMisc (AFfilehandle, int miscellaneousid, void *buf, int bytes);\nAFAPI int afSeekMisc (AFfilehandle, int miscellaneousid, int offset);\n\n#undef AFAPI\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* AUDIOFILE_H */\n\n// file: afinternal.h\n/*\n\tAudio File Library\n\tCopyright (C) 1998-2000, Michael Pruett <michael@68k.org>\n\tCopyright (C) 2000, Silicon Graphics, Inc.\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\tafinternal.h\n\n\tThis file defines the internal structures for the Audio File Library.\n*/\n\n#ifndef AFINTERNAL_H\n#define AFINTERNAL_H\n\n#include <sys/types.h>\n\nenum status\n{\n\tAF_SUCCEED = 0,\n\tAF_FAIL = -1\n};\n\nunion AFPVu\n{\n\tlong\tl;\n\tdouble\td;\n\tvoid\t*v;\n};\n\nstruct InstParamInfo\n{\n\tint id;\n\tint type;\n\tconst char *name;\n\tAFPVu defaultValue;\n};\n\nstruct Loop\n{\n\tint\tid;\n\tint\tmode;\t/* AF_LOOP_MODE_... */\n\tint\tcount;\t/* how many times the loop is played */\n\tint\tbeginMarker, endMarker;\n\tint\ttrackid;\n};\n\nstruct LoopSetup\n{\n\tint\tid;\n};\n\nstruct Miscellaneous\n{\n\tint id;\n\tint type;\n\tint size;\n\n\tvoid *buffer;\n\n\tint position;\t// offset within the miscellaneous chunk\n};\n\nstruct MiscellaneousSetup\n{\n\tint\tid;\n\tint\ttype;\n\tint\tsize;\n};\n\nstruct TrackSetup;\n\nclass File;\nstruct Track;\n\nenum\n{\n\t_AF_VALID_FILEHANDLE = 38212,\n\t_AF_VALID_FILESETUP = 38213\n};\n\nenum\n{\n\t_AF_READ_ACCESS = 1,\n\t_AF_WRITE_ACCESS = 2\n};\n\n// The following are tokens for compression parameters in PV lists.\nenum\n{\n\t_AF_MS_ADPCM_NUM_COEFFICIENTS = 800,\t/* type: long */\n\t_AF_MS_ADPCM_COEFFICIENTS = 801,\t\t/* type: array of int16_t[2] */\n\t_AF_IMA_ADPCM_TYPE = 810,\n\t_AF_IMA_ADPCM_TYPE_WAVE = 1,\n\t_AF_IMA_ADPCM_TYPE_QT = 2,\n\t_AF_CODEC_DATA = 900,\t\t// type: pointer\n\t_AF_CODEC_DATA_SIZE = 901\t// type: long\n};\n\n/* NeXT/Sun sampling rate */\n#define _AF_SRATE_CODEC (8012.8210513)\n\n#endif\n\n// file: byteorder.h\n/*\n\tAudio File Library\n\tCopyright (C) 1998-1999, 2010-2011, Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n#ifndef BYTEORDER_H\n#define BYTEORDER_H\n\n\n#include <stdint.h>\n\n#if WORDS_BIGENDIAN\n\t#define _AF_BYTEORDER_NATIVE (AF_BYTEORDER_BIGENDIAN)\n#else\n\t#define _AF_BYTEORDER_NATIVE (AF_BYTEORDER_LITTLEENDIAN)\n#endif\n\ninline uint16_t _af_byteswap_int16 (uint16_t x)\n{\n\treturn (x >> 8) | (x << 8);\n}\n\ninline uint32_t _af_byteswap_int32 (uint32_t x)\n{\n\treturn ((x & 0x000000ffU) << 24) |\n\t\t((x & 0x0000ff00U) << 8) |\n\t\t((x & 0x00ff0000U) >> 8) |\n\t\t((x & 0xff000000U) >> 24);\n}\n\ninline uint64_t _af_byteswap_int64 (uint64_t x)\n{\n\treturn ((x & 0x00000000000000ffULL) << 56) |\n\t\t((x & 0x000000000000ff00ULL) << 40) |\n\t\t((x & 0x0000000000ff0000ULL) << 24) |\n\t\t((x & 0x00000000ff000000ULL) << 8) |\n\t\t((x & 0x000000ff00000000ULL) >> 8) |\n\t\t((x & 0x0000ff0000000000ULL) >> 24) |\n\t\t((x & 0x00ff000000000000ULL) >> 40) |\n\t\t((x & 0xff00000000000000ULL) >> 56);\n}\n\ninline float _af_byteswap_float32 (float x)\n{\n\tunion\n\t{\n\t\tuint32_t i;\n\t\tfloat f;\n\t} u;\n\tu.f = x;\n\tu.i = _af_byteswap_int32(u.i);\n\treturn u.f;\n}\n\ninline double _af_byteswap_float64 (double x)\n{\n\tunion\n\t{\n\t\tuint64_t i;\n\t\tdouble f;\n\t} u;\n\tu.f = x;\n\tu.i = _af_byteswap_int64(u.i);\n\treturn u.f;\n}\n\ninline uint64_t byteswap(uint64_t value) { return _af_byteswap_int64(value); }\ninline int64_t byteswap(int64_t value) { return _af_byteswap_int64(value); }\ninline uint32_t byteswap(uint32_t value) { return _af_byteswap_int32(value); }\ninline int32_t byteswap(int32_t value) { return _af_byteswap_int32(value); }\ninline uint16_t byteswap(uint16_t value) { return _af_byteswap_int16(value); }\ninline int16_t byteswap(int16_t value) { return _af_byteswap_int16(value); }\n\ninline double byteswap(double value) { return _af_byteswap_float64(value); }\ninline float byteswap(float value) { return _af_byteswap_float32(value); }\n\ntemplate <typename T>\nT bigToHost(T value)\n{\n\treturn _AF_BYTEORDER_NATIVE == AF_BYTEORDER_BIGENDIAN ? value : byteswap(value);\n}\n\ntemplate <typename T>\nT littleToHost(T value)\n{\n\treturn _AF_BYTEORDER_NATIVE == AF_BYTEORDER_LITTLEENDIAN ? value : byteswap(value);\n}\n\ntemplate <typename T>\nT hostToBig(T value)\n{\n\treturn _AF_BYTEORDER_NATIVE == AF_BYTEORDER_BIGENDIAN ? value : byteswap(value);\n}\n\ntemplate <typename T>\nT hostToLittle(T value)\n{\n\treturn _AF_BYTEORDER_NATIVE == AF_BYTEORDER_LITTLEENDIAN ? value : byteswap(value);\n}\n\n#endif\n\n// file: AudioFormat.h\n/*\n\tAudio File Library\n\tCopyright (C) 2010, Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n#ifndef AUDIOFORMAT_H\n#define AUDIOFORMAT_H\n\n\n#include <sys/types.h>\n#include <string>\n\nstruct PCMInfo\n{\n\tdouble slope, intercept, minClip, maxClip;\n};\n\nstruct AudioFormat\n{\n\tdouble sampleRate;\t\t/* sampling rate in Hz */\n\tint sampleFormat;\t\t/* AF_SAMPFMT_... */\n\tint sampleWidth;\t\t/* sample width in bits */\n\tint byteOrder;\t\t/* AF_BYTEORDER_... */\n\n\tPCMInfo pcm;\t\t/* parameters of PCM data */\n\n\tint channelCount;\t\t/* number of channels */\n\n\tint compressionType;\t/* AF_COMPRESSION_... */\n\tAUpvlist compressionParams;\t/* NULL if no compression */\n\n\tbool packed : 1;\n\n\tsize_t framesPerPacket;\n\tsize_t bytesPerPacket;\n\n\tsize_t bytesPerSample(bool stretch3to4) const;\n\tsize_t bytesPerFrame(bool stretch3to4) const;\n\tsize_t bytesPerSample() const;\n\tsize_t bytesPerFrame() const;\n\tbool isInteger() const;\n\tbool isSigned() const;\n\tbool isUnsigned() const;\n\tbool isFloat() const;\n\tbool isCompressed() const;\n\tbool isUncompressed() const;\n\tbool isPacked() const { return packed; }\n\tbool isByteOrderSignificant() const { return sampleWidth > 8; }\n\n\tvoid computeBytesPerPacketPCM();\n\n\tstd::string description() const;\n};\n\n#endif\n\n// file: debug.h\n/*\n\tAudio File Library\n\tCopyright (C) 1998-2000, Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\tdebug.h\n\n\tThis header file declares debugging functions for the Audio\n\tFile Library.\n*/\n\n#ifndef DEBUG_H\n#define DEBUG_H\n\n#include <stdint.h>\n\nvoid _af_print_filehandle (AFfilehandle filehandle);\nvoid _af_print_tracks (AFfilehandle filehandle);\nvoid _af_print_channel_matrix (double *matrix, int fchans, int vchans);\nvoid _af_print_pvlist (AUpvlist list);\n\nvoid _af_print_audioformat (AudioFormat *format);\nvoid _af_print_frame (AFframecount frameno, double *frame, int nchannels,\n\tchar *formatstring, int numberwidth,\n\tdouble slope, double intercept, double minclip, double maxclip);\n\n#endif\n\n// file: util.h\n/*\n\tAudio File Library\n\tCopyright (C) 1998-2000, Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\tutil.h\n\n\tThis file contains some general utility functions for the Audio\n\tFile Library.\n*/\n\n#ifndef UTIL_H\n#define UTIL_H\n\n#include <stdint.h>\n#include <stdlib.h>\n\n\nstruct AudioFormat;\n\nbool _af_filesetup_ok (AFfilesetup setup);\nbool _af_filehandle_ok (AFfilehandle file);\n\nvoid *_af_malloc (size_t size);\nvoid *_af_realloc (void *ptr, size_t size);\nvoid *_af_calloc (size_t nmemb, size_t size);\nchar *_af_strdup (const char *s);\n\nAUpvlist _af_pv_long (long val);\nAUpvlist _af_pv_double (double val);\nAUpvlist _af_pv_pointer (void *val);\n\nbool _af_pv_getlong (AUpvlist pvlist, int param, long *l);\nbool _af_pv_getdouble (AUpvlist pvlist, int param, double *d);\nbool _af_pv_getptr (AUpvlist pvlist, int param, void **v);\n\nbool _af_unique_ids (const int *ids, int nids, const char *idname, int iderr);\n\nfloat _af_format_frame_size (const AudioFormat *format, bool stretch3to4);\nint _af_format_frame_size_uncompressed (const AudioFormat *format, bool stretch3to4);\nfloat _af_format_sample_size (const AudioFormat *format, bool stretch3to4);\nint _af_format_sample_size_uncompressed (const AudioFormat *format, bool stretch3to4);\n\nstatus _af_set_sample_format (AudioFormat *f, int sampleFormat, int sampleWidth);\n\n#endif\n\n// file: units.h\n/*\n\tAudio File Library\n\tCopyright (C) 2000, Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\tunits.h\n\n\tThis file defines the internal Unit and CompressionUnit\n\tstructures for the Audio File Library.\n*/\n\n#ifndef UNIT_H\n#define UNIT_H\n\n\nstruct AudioFormat;\nclass FileModule;\n\nstruct Unit\n{\n\tint\tfileFormat;\t/* AF_FILEFMT_... */\n\tconst char *name;\t\t/* a 2-3 word name of the file format */\n\tconst char *description;\t/* a more descriptive name for the format */\n\tconst char *label;\t\t/* a 4-character label for the format */\n\tbool implemented;\t/* if implemented */\n\n\tAFfilesetup (*completesetup) (AFfilesetup setup);\n\tbool (*recognize) (File *fh);\n\n\tint defaultSampleFormat;\n\tint defaultSampleWidth;\n\n\tint compressionTypeCount;\n\tconst int *compressionTypes;\n\n\tint markerCount;\n\n\tint instrumentCount;\n\tint loopPerInstrumentCount;\n\n\tint instrumentParameterCount;\n\tconst InstParamInfo *instrumentParameters;\n};\n\nstruct CompressionUnit\n{\n\tint\tcompressionID;\t/* AF_COMPRESSION_... */\n\tbool implemented;\n\tconst char *label;\t\t/* 4-character (approximately) label */\n\tconst char *shortname;\t/* short name in English */\n\tconst char *name;\t\t/* long name in English */\n\tdouble squishFactor;\t/* compression ratio */\n\tint\tnativeSampleFormat;\t/* AF_SAMPFMT_... */\n\tint\tnativeSampleWidth;\t/* sample width in bits */\n\tbool\tneedsRebuffer;\t/* if there are chunk boundary requirements */\n\tbool\tmultiple_of;\t/* can accept any multiple of chunksize */\n\tbool\t(*fmtok) (AudioFormat *format);\n\n\tFileModule *(*initcompress) (Track *track, File *fh,\n\t\tbool seekok, bool headerless, AFframecount *chunkframes);\n\tFileModule *(*initdecompress) (Track *track, File *fh,\n\t\tbool seekok, bool headerless, AFframecount *chunkframes);\n};\n\n#define _AF_NUM_UNITS 17\n#define _AF_NUM_COMPRESSION 7\n\nextern const Unit _af_units[_AF_NUM_UNITS];\nextern const CompressionUnit _af_compression[_AF_NUM_COMPRESSION];\n\n#endif /* UNIT_H */\n\n// file: UUID.h\n/*\n\tCopyright (C) 2011, Michael Pruett. All rights reserved.\n\n\tRedistribution and use in source and binary forms, with or without\n\tmodification, are permitted provided that the following conditions\n\tare met:\n\n\t1. Redistributions of source code must retain the above copyright\n\tnotice, this list of conditions and the following disclaimer.\n\n\t2. Redistributions in binary form must reproduce the above copyright\n\tnotice, this list of conditions and the following disclaimer in the\n\tdocumentation and/or other materials provided with the distribution.\n\n\t3. The name of the author may not be used to endorse or promote products\n\tderived from this software without specific prior written permission.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR\n\tIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n\tOF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n\tIN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,\n\tINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n\tNOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n\tDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n\tTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n\tTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n#ifndef UUID_H\n#define UUID_H\n\n#include <stdint.h>\n#include <string>\n\nstruct UUID\n{\n\tuint8_t data[16];\n\n\tbool operator==(const UUID &) const;\n\tbool operator!=(const UUID &) const;\n\tstd::string name() const;\n};\n\n#endif\n\n// file: Shared.h\n/*\n\tCopyright (C) 2010, Michael Pruett. All rights reserved.\n\n\tRedistribution and use in source and binary forms, with or without\n\tmodification, are permitted provided that the following conditions\n\tare met:\n\n\t1. Redistributions of source code must retain the above copyright\n\tnotice, this list of conditions and the following disclaimer.\n\n\t2. Redistributions in binary form must reproduce the above copyright\n\tnotice, this list of conditions and the following disclaimer in the\n\tdocumentation and/or other materials provided with the distribution.\n\n\t3. The name of the author may not be used to endorse or promote products\n\tderived from this software without specific prior written permission.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR\n\tIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n\tOF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n\tIN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,\n\tINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n\tNOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n\tDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n\tTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n\tTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n#ifndef SHARED_H\n#define SHARED_H\n\ntemplate <typename T>\nclass Shared\n{\npublic:\n\tShared() : m_refCount(0)\n\t{\n\t}\n\tvoid retain() { m_refCount++; }\n\tvoid release() { if (--m_refCount == 0) delete static_cast<T *>(this); }\n\nprotected:\n\t~Shared()\n\t{\n\t}\n\nprivate:\n\tint m_refCount;\n\n\tShared(const Shared &);\n\tShared &operator =(const Shared &);\n};\n\ntemplate <typename T>\nclass SharedPtr\n{\npublic:\n\tSharedPtr() : m_ptr(0)\n\t{\n\t}\n\tSharedPtr(T *ptr) : m_ptr(ptr)\n\t{\n\t\tif (m_ptr) m_ptr->retain();\n\t}\n\tSharedPtr(const SharedPtr &p) : m_ptr(p.m_ptr)\n\t{\n\t\tif (m_ptr) m_ptr->retain();\n\t}\n\t~SharedPtr()\n\t{\n\t\tif (T *p = m_ptr) p->release();\n\t}\n\n\tSharedPtr &operator =(T *ptr)\n\t{\n\t\tif (m_ptr != ptr)\n\t\t{\n\t\t\tif (ptr) ptr->retain();\n\t\t\tif (m_ptr) m_ptr->release();\n\t\t\tm_ptr = ptr;\n\t\t}\n\t\treturn *this;\n\t}\n\tSharedPtr &operator =(const SharedPtr &p)\n\t{\n\t\tif (m_ptr != p.m_ptr)\n\t\t{\n\t\t\tif (p.m_ptr) p.m_ptr->retain();\n\t\t\tif (m_ptr) m_ptr->release();\n\t\t\tm_ptr = p.m_ptr;\n\t\t}\n\t\treturn *this;\n\t}\n\n\tT *get() const { return m_ptr; }\n\tT &operator *() const { return *m_ptr; }\n\tT *operator ->() const { return m_ptr; }\n\n\ttypedef T *SharedPtr::*UnspecifiedBoolType;\n\toperator UnspecifiedBoolType() const { return m_ptr ? &SharedPtr::m_ptr : 0; }\n\n\tbool operator !() const { return !m_ptr; }\n\nprivate:\n\tT *m_ptr;\n};\n\n#endif\n\n// file: Buffer.h\n/*\n\tAudio File Library\n\tCopyright (C) 2013 Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n#ifndef Buffer_h\n#define Buffer_h\n\n\n#include <sys/types.h>\n\nclass Buffer : public Shared<Buffer>\n{\npublic:\n\tBuffer();\n\tBuffer(size_t size);\n\tBuffer(const void *data, size_t size);\n\t~Buffer();\n\n\tvoid *data() { return m_data; }\n\tconst void *data() const { return m_data; }\n\n\tsize_t size() const { return m_size; }\n\nprivate:\n\tvoid *m_data;\n\tsize_t m_size;\n};\n\n#endif\n\n// file: File.h\n/*\n\tCopyright (C) 2010, Michael Pruett. All rights reserved.\n\n\tRedistribution and use in source and binary forms, with or without\n\tmodification, are permitted provided that the following conditions\n\tare met:\n\n\t1. Redistributions of source code must retain the above copyright\n\tnotice, this list of conditions and the following disclaimer.\n\n\t2. Redistributions in binary form must reproduce the above copyright\n\tnotice, this list of conditions and the following disclaimer in the\n\tdocumentation and/or other materials provided with the distribution.\n\n\t3. The name of the author may not be used to endorse or promote products\n\tderived from this software without specific prior written permission.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR\n\tIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n\tOF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n\tIN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,\n\tINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n\tNOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n\tDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n\tTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n\tTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n#ifndef FILE_H\n#define FILE_H\n\n#include <sys/types.h>\n\ntypedef struct _AFvirtualfile AFvirtualfile;\n\nclass File : public Shared<File>\n{\npublic:\n\tenum AccessMode\n\t{\n\t\tReadAccess,\n\t\tWriteAccess\n\t};\n\n\tenum SeekOrigin\n\t{\n\t\tSeekFromBeginning,\n\t\tSeekFromCurrent,\n\t\tSeekFromEnd\n\t};\n\n\tstatic File *open(const char *path, AccessMode mode);\n\tstatic File *create(int fd, AccessMode mode);\n\tstatic File *create(AFvirtualfile *vf, AccessMode mode);\n\n\tvirtual ~File();\n\tvirtual int close() = 0;\n\tvirtual ssize_t read(void *data, size_t nbytes) = 0;\n\tvirtual ssize_t write(const void *data, size_t nbytes) = 0;\n\tvirtual off_t length() = 0;\n\tvirtual off_t seek(off_t offset, SeekOrigin origin) = 0;\n\tvirtual off_t tell() = 0;\n\n\tbool canSeek();\n\n\tAccessMode accessMode() const { return m_accessMode; }\n\nprivate:\n\tAccessMode m_accessMode;\n\nprotected:\n\tFile(AccessMode mode) : m_accessMode(mode) { }\n};\n\n#endif // FILE_H\n\n// file: FileHandle.h\n/*\n\tAudio File Library\n\tCopyright (C) 2010-2011, Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n#ifndef FILEHANDLE_H\n#define FILEHANDLE_H\n\n#include <stdint.h>\n\nclass File;\nclass Tag;\nstruct Instrument;\nstruct Miscellaneous;\nstruct Track;\n\nstruct _AFfilehandle\n{\n\tstatic _AFfilehandle *create(int fileFormat);\n\n\tint m_valid;\t// _AF_VALID_FILEHANDLE\n\tint m_access;\t// _AF_READ_ACCESS or _AF_WRITE_ACCESS\n\n\tbool m_seekok;\n\n\tFile *m_fh;\n\n\tchar *m_fileName;\n\n\tint m_fileFormat;\n\n\tint m_trackCount;\n\tTrack *m_tracks;\n\n\tint m_instrumentCount;\n\tInstrument *m_instruments;\n\n\tint m_miscellaneousCount;\n\tMiscellaneous *m_miscellaneous;\n\nprivate:\n\tint m_formatByteOrder;\n\n\tstatus copyTracksFromSetup(AFfilesetup setup);\n\tstatus copyInstrumentsFromSetup(AFfilesetup setup);\n\tstatus copyMiscellaneousFromSetup(AFfilesetup setup);\n\npublic:\n\tvirtual ~_AFfilehandle();\n\n\tvirtual int getVersion() { return 0; }\n\tvirtual status readInit(AFfilesetup) = 0;\n\tvirtual status writeInit(AFfilesetup) = 0;\n\tvirtual status update() = 0;\n\tvirtual bool isInstrumentParameterValid(AUpvlist, int) { return false; }\n\n\tbool checkCanRead();\n\tbool checkCanWrite();\n\n\tTrack *allocateTrack();\n\tTrack *getTrack(int trackID = AF_DEFAULT_TRACK);\n\tInstrument *getInstrument(int instrumentID);\n\tMiscellaneous *getMiscellaneous(int miscellaneousID);\n\nprotected:\n\t_AFfilehandle();\n\n\tstatus initFromSetup(AFfilesetup setup);\n\n\tvoid setFormatByteOrder(int byteOrder) { m_formatByteOrder = byteOrder; }\n\n\tbool readU8(uint8_t *);\n\tbool readS8(int8_t *);\n\tbool readU16(uint16_t *);\n\tbool readS16(int16_t *);\n\tbool readU32(uint32_t *);\n\tbool readS32(int32_t *);\n\tbool readU64(uint64_t *);\n\tbool readS64(int64_t *);\n\tbool readFloat(float *);\n\tbool readDouble(double *);\n\n\tbool writeU8(const uint8_t *);\n\tbool writeS8(const int8_t *);\n\tbool writeU16(const uint16_t *);\n\tbool writeS16(const int16_t *);\n\tbool writeU32(const uint32_t *);\n\tbool writeS32(const int32_t *);\n\tbool writeU64(const uint64_t *);\n\tbool writeS64(const int64_t *);\n\tbool writeFloat(const float *);\n\tbool writeDouble(const double *);\n\n\tbool readTag(Tag *t);\n\tbool writeTag(const Tag *t);\n};\n\n#endif\n\n// file: Instrument.h\n/*\n\tAudio File Library\n\tCopyright (C) 2000, Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\tInstrument.h\n\n\tThis file declares routines for dealing with instruments.\n*/\n\n#ifndef INSTRUMENT_H\n#define INSTRUMENT_H\n\n\nstruct LoopSetup;\nstruct Loop;\n\nstruct InstrumentSetup\n{\n\tint\tid;\n\n\tint loopCount;\n\tLoopSetup *loops;\n\n\tbool loopSet;\n\n\tbool allocateLoops(int count);\n\tvoid freeLoops();\n};\n\nstruct Instrument\n{\n\tint id;\n\n\tint loopCount;\n\tLoop *loops;\n\n\tAFPVu *values;\n\n\tLoop *getLoop(int loopID);\n};\n\nvoid _af_instparam_get (AFfilehandle file, int instid, AUpvlist pvlist,\n\tint npv, bool forceLong);\n\nvoid _af_instparam_set (AFfilehandle file, int instid, AUpvlist pvlist,\n\tint npv);\n\nint _af_instparam_index_from_id (int fileFormat, int id);\n\n#endif /* INSTRUMENT_H */\n\n// file: Track.h\n/*\n\tAudio File Library\n\tCopyright (C) 2000, Silicon Graphics, Inc.\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\ttrack.h\n*/\n\n#ifndef TRACK_H\n#define TRACK_H\n\n\nclass ModuleState;\nclass PacketTable;\nstruct Marker;\nstruct MarkerSetup;\n\nstruct TrackSetup\n{\n\tint id;\n\n\tAudioFormat f;\n\n\tbool rateSet, sampleFormatSet, sampleWidthSet, byteOrderSet,\n\t\tchannelCountSet, compressionSet, aesDataSet, markersSet,\n\t\tdataOffsetSet, frameCountSet;\n\n\tint markerCount;\n\tMarkerSetup *markers;\n\n\tAFfileoffset dataOffset;\n\tAFframecount frameCount;\n};\n\nstruct Track\n{\n\tTrack();\n\t~Track();\n\n\tint\tid;\t/* usually AF_DEFAULT_TRACKID */\n\n\tAudioFormat f, v;\t/* file and virtual audio formats */\n\n\tSharedPtr<PacketTable> m_packetTable;\n\n\tdouble *channelMatrix;\n\n\tint markerCount;\n\tMarker *markers;\n\n\tbool hasAESData;\t/* Is AES nonaudio data present? */\n\tunsigned char aesData[24];\t/* AES nonaudio data */\n\n\tAFframecount totalfframes;\t\t/* frameCount */\n\tAFframecount nextfframe;\t\t/* currentFrame */\n\tAFframecount frames2ignore;\n\tAFfileoffset fpos_first_frame;\t/* dataStart */\n\tAFfileoffset fpos_next_frame;\n\tAFfileoffset fpos_after_data;\n\tAFframecount totalvframes;\n\tAFframecount nextvframe;\n\tAFfileoffset data_size;\t\t/* trackBytes */\n\n\tSharedPtr<ModuleState> ms;\n\n\tdouble taper, dynamic_range;\n\tbool ratecvt_filter_params_set;\n\n\tbool filemodhappy;\n\n\tvoid print();\n\n\tMarker *getMarker(int markerID);\n\tstatus copyMarkers(TrackSetup *setup);\n\n\tvoid computeTotalFileFrames();\n};\n\n#endif\n\n// file: Marker.h\n/*\n\tAudio File Library\n\tCopyright (C) 2000, Silicon Graphics, Inc.\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n#ifndef MARKER_H\n#define MARKER_H\n\nstruct MarkerSetup\n{\n\tint id;\n\tchar *name, *comment;\n};\n\nstruct Marker\n{\n\tshort id;\n\tunsigned long position;\n\tchar *name;\n\tchar *comment;\n};\n\nstruct Track;\n\nMarker *_af_marker_new (int count);\nMarker *_af_marker_find_by_id (Track *track, int id);\n\n#endif /* MARKER_H */\n\n// file: Setup.h\n/*\n\tAudio File Library\n\tCopyright (C) 1998-2000, Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n#ifndef SETUP_H\n#define SETUP_H\n\n\nstruct InstrumentSetup;\nstruct MiscellaneousSetup;\nstruct TrackSetup;\n\nstruct _AFfilesetup\n{\n\tint\tvalid;\n\n\tint fileFormat;\n\n\tbool trackSet, instrumentSet, miscellaneousSet;\n\n\tint trackCount;\n\tTrackSetup *tracks;\n\n\tint instrumentCount;\n\tInstrumentSetup *instruments;\n\n\tint miscellaneousCount;\n\tMiscellaneousSetup *miscellaneous;\n\n\tTrackSetup *getTrack(int trackID = AF_DEFAULT_TRACK);\n\tInstrumentSetup *getInstrument(int instrumentID);\n\tMiscellaneousSetup *getMiscellaneous(int miscellaneousID);\n};\n\nvoid _af_setup_free_markers (AFfilesetup setup, int trackno);\nvoid _af_setup_free_tracks (AFfilesetup setup);\nvoid _af_setup_free_instruments (AFfilesetup setup);\n\nAFfilesetup _af_filesetup_copy (const _AFfilesetup *setup,\n\tconst _AFfilesetup *defaultSetup, bool copyMarks);\n\nInstrumentSetup *_af_instsetup_new (int count);\n\n#endif\n\n// file: Tag.h\n/*\n\tAudio File Library\n\tCopyright (C) 2011, Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n#ifndef TAG_H\n#define TAG_H\n\n#include <assert.h>\n#include <stdint.h>\n#include <string.h>\n#include <string>\n\nclass Tag\n{\npublic:\n\tTag() : m_value(0) { }\n\tTag(uint32_t value) : m_value(value) { }\n\tTag(const char *s)\n\t{\n\t\tassert(strlen(s) == 4);\n\t\tmemcpy(&m_value, s, 4);\n\t}\n\n\tuint32_t value() const { return m_value; }\n\n\tbool operator==(const Tag &t) const { return m_value == t.m_value; }\n\tbool operator!=(const Tag &t) const { return m_value != t.m_value; }\n\n\tstd::string name() const\n\t{\n\t\tchar s[5];\n\t\tmemcpy(s, &m_value, 4);\n\t\ts[4] = '\\0';\n\t\treturn std::string(s);\n\t}\n\nprivate:\n\tuint32_t m_value;\n};\n\n#endif\n\n// file: PacketTable.h\n/*\n\tAudio File Library\n\tCopyright (C) 2013 Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n#ifndef PacketTable_h\n#define PacketTable_h\n\n\n#include <audiofile.h>\n\n#include <stdint.h>\n#include <sys/types.h>\n#include <vector>\n\nclass PacketTable : public Shared<PacketTable>\n{\npublic:\n\tPacketTable();\n\tPacketTable(int64_t numValidFrames,\n\t\tint32_t primingFrames,\n\t\tint32_t remainderFrames);\n\t~PacketTable();\n\n\tsize_t numPackets() const { return m_bytesPerPacket.size(); }\n\tint64_t numValidFrames() const { return m_numValidFrames; }\n\tvoid setNumValidFrames(int64_t numValidFrames);\n\tint32_t primingFrames() const { return m_primingFrames; }\n\tvoid setPrimingFrames(int32_t primingFrames);\n\tint32_t remainderFrames() const { return m_remainderFrames; }\n\tvoid setRemainderFrames(int32_t remainderFrames);\n\n\tvoid append(size_t bytesPerPacket);\n\tsize_t bytesPerPacket(size_t packet) const { return m_bytesPerPacket[packet]; }\n\tAFfileoffset startOfPacket(size_t packet) const;\n\nprivate:\n\tint64_t m_numValidFrames;\n\tint32_t m_primingFrames;\n\tint32_t m_remainderFrames;\n\n\tstd::vector<size_t> m_bytesPerPacket;\n};\n\n#endif\n\n// file: pcm.h\n/*\n\tAudio File Library\n\tCopyright (C) 2000, Silicon Graphics, Inc.\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\tpcm.h\n\n\tThis file defines various constants for PCM mapping.\n*/\n\n#ifndef PCM_H\n#define PCM_H\n\n/*\n\tSLOPE_INTN = 2^(N-1)\n*/\n#define SLOPE_INT8 (128.0)\n#define SLOPE_INT16 (32768.0)\n#define SLOPE_INT24 (8388608.0)\n#define SLOPE_INT32 (2147483648.0)\n\n/*\n\tINTERCEPT_U_INTN = 2^(N-1)\n*/\n#define INTERCEPT_U_INT8 (128.0)\n#define INTERCEPT_U_INT16 (32768.0)\n#define INTERCEPT_U_INT24 (8388608.0)\n#define INTERCEPT_U_INT32 (2147483648.0)\n\n/*\n\tMIN_INTN = -(2^(N-1))\n*/\n#define MIN_INT8 (-128.0)\n#define MIN_INT16 (-32768.0)\n#define MIN_INT24 (-8388608.0)\n#define MIN_INT32 (-2147483648.0)\n\n/*\n\tMAX_INTN = 2^(N-1) - 1\n*/\n#define MAX_INT8 127.0\n#define MAX_INT16 32767.0\n#define MAX_INT24 8388607.0\n#define MAX_INT32 2147483647.0\n\n/*\n\tMAX_U_INTN = 2^N - 1\n*/\n#define MAX_U_INT8 255.0\n#define MAX_U_INT16 65535.0\n#define MAX_U_INT24 16777215.0\n#define MAX_U_INT32 4294967295.0\n\nextern const PCMInfo _af_default_signed_integer_pcm_mappings[];\nextern const PCMInfo _af_default_unsigned_integer_pcm_mappings[];\nextern const PCMInfo _af_default_float_pcm_mapping;\nextern const PCMInfo _af_default_double_pcm_mapping;\n\n#endif\n\n// file: g711.h\n/*\n * This source code is a product of Sun Microsystems, Inc. and is provided\n * for unrestricted use.  Users may copy or modify this source code without\n * charge.\n *\n * SUN SOURCE CODE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING\n * THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR\n * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.\n *\n * Sun source code is provided with no support and without any obligation on\n * the part of Sun Microsystems, Inc. to assist in its use, correction,\n * modification or enhancement.\n *\n * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE\n * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS SOFTWARE\n * OR ANY PART THEREOF.\n *\n * In no event will Sun Microsystems, Inc. be liable for any lost revenue\n * or profits or other special, indirect and consequential damages, even if\n * Sun has been advised of the possibility of such damages.\n *\n * Sun Microsystems, Inc.\n * 2550 Garcia Avenue\n * Mountain View, California  94043\n */\n\n/*\n * g711.h\n *\n * u-law, A-law and linear PCM conversions.\n */\n\n#ifndef G711_H\n#define G711_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/*\n * linear2alaw() - Convert a 16-bit linear PCM value to 8-bit A-law\n *\n * linear2alaw() accepts an 16-bit integer and encodes it as A-law data.\n *\n *\t\tLinear Input Code\tCompressed Code\n *\t------------------------\t---------------\n *\t0000000wxyza\t\t\t000wxyz\n *\t0000001wxyza\t\t\t001wxyz\n *\t000001wxyzab\t\t\t010wxyz\n *\t00001wxyzabc\t\t\t011wxyz\n *\t0001wxyzabcd\t\t\t100wxyz\n *\t001wxyzabcde\t\t\t101wxyz\n *\t01wxyzabcdef\t\t\t110wxyz\n *\t1wxyzabcdefg\t\t\t111wxyz\n *\n * For further information see John C. Bellamy's Digital Telephony, 1982,\n * John Wiley & Sons, pps 98-111 and 472-476.\n */\n\n/* pcm_val is 2's complement (16-bit range) */\nunsigned char _af_linear2alaw (int pcm_val);\n\n/*\n * alaw2linear() - Convert an A-law value to 16-bit linear PCM\n *\n */\n\nint _af_alaw2linear (unsigned char a_val);\n\n/*\n * linear2ulaw() - Convert a linear PCM value to u-law\n *\n * In order to simplify the encoding process, the original linear magnitude\n * is biased by adding 33 which shifts the encoding range from (0 - 8158) to\n * (33 - 8191). The result can be seen in the following encoding table:\n *\n *\tBiased Linear Input Code\tCompressed Code\n *\t------------------------\t---------------\n *\t00000001wxyza\t\t\t000wxyz\n *\t0000001wxyzab\t\t\t001wxyz\n *\t000001wxyzabc\t\t\t010wxyz\n *\t00001wxyzabcd\t\t\t011wxyz\n *\t0001wxyzabcde\t\t\t100wxyz\n *\t001wxyzabcdef\t\t\t101wxyz\n *\t01wxyzabcdefg\t\t\t110wxyz\n *\t1wxyzabcdefgh\t\t\t111wxyz\n *\n * Each biased linear code has a leading 1 which identifies the segment\n * number. The value of the segment number is equal to 7 minus the number\n * of leading 0's. The quantization interval is directly available as the\n * four bits wxyz.  * The trailing bits (a - h) are ignored.\n *\n * Ordinarily the complement of the resulting code word is used for\n * transmission, and so the code word is complemented before it is returned.\n *\n * For further information see John C. Bellamy's Digital Telephony, 1982,\n * John Wiley & Sons, pps 98-111 and 472-476.\n */\n\n/* pcm_val is 2's complement (16-bit range) */\nunsigned char _af_linear2ulaw (int pcm_val);\n\n/*\n * ulaw2linear() - Convert a u-law value to 16-bit linear PCM\n *\n * First, a biased linear code is derived from the code word. An unbiased\n * output can then be obtained by subtracting 33 from the biased code.\n *\n * Note that this function expects to be passed the complement of the\n * original code word. This is in keeping with ISDN conventions.\n */\n\nint _af_ulaw2linear (unsigned char u_val);\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* G711_H */\n\n// file: af_vfs.h\n/*\n\tAudio File Library\n\tCopyright (C) 1999, Elliot Lee <sopwith@redhat.com>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\taf_vfs.h\n\n\tVirtual file operations for the Audio File Library.\n*/\n\n#ifndef AUDIOFILE_VFS_H\n#define AUDIOFILE_VFS_H\n\n#include <audiofile.h>\n#include <sys/types.h>\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#if (defined(__GNUC__) && __GNUC__ >= 4) || defined(__clang__)\n#define AFAPI __attribute__((visibility(\"default\")))\n#else\n#define AFAPI\n#endif\n\nstruct _AFvirtualfile\n{\n\tssize_t (*read) (AFvirtualfile *vfile, void *data, size_t nbytes);\n\tAFfileoffset (*length) (AFvirtualfile *vfile);\n\tssize_t (*write) (AFvirtualfile *vfile, const void *data, size_t nbytes);\n\tvoid (*destroy) (AFvirtualfile *vfile);\n\tAFfileoffset (*seek) (AFvirtualfile *vfile, AFfileoffset offset, int is_relative);\n\tAFfileoffset (*tell) (AFvirtualfile *vfile);\n\n\tvoid *closure;\n};\n\nAFAPI AFvirtualfile *af_virtual_file_new (void);\nAFAPI void af_virtual_file_destroy (AFvirtualfile *vfile);\n\n#undef AFAPI\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n\n// file: Raw.h\n/*\n\tAudio File Library\n\tCopyright (C) 2000, Silicon Graphics, Inc.\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\tRaw.h\n*/\n\n#ifndef RAW_H\n#define RAW_H\n\n\n#define _AF_RAW_NUM_COMPTYPES 2\nextern const int _af_raw_compression_types[_AF_RAW_NUM_COMPTYPES];\n\nclass RawFile : public _AFfilehandle\n{\npublic:\n\tstatic bool recognize(File *fh);\n\tstatic AFfilesetup completeSetup(AFfilesetup);\n\n\tstatus readInit(AFfilesetup setup) OVERRIDE;\n\tstatus writeInit(AFfilesetup setup) OVERRIDE;\n\tstatus update() OVERRIDE;\n};\n\n#endif\n\n// file: WAVE.h\n/*\n\tAudio File Library\n\tCopyright (C) 1998-2000, 2003, 2010-2012, Michael Pruett <michael@68k.org>\n\tCopyright (C) 2002-2003, Davy Durham\n\tCopyright (C) 2000-2001, Silicon Graphics, Inc.\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\tWAVE.h\n\n\tThis file contains structures and constants related to the RIFF\n\tWAVE sound file format.\n*/\n\n#ifndef WAVE_H\n#define WAVE_H\n\n#include <stdint.h>\n\n#define _AF_WAVE_NUM_INSTPARAMS 7\nextern const InstParamInfo _af_wave_inst_params[_AF_WAVE_NUM_INSTPARAMS];\n#define _AF_WAVE_NUM_COMPTYPES 4\nextern const int _af_wave_compression_types[_AF_WAVE_NUM_COMPTYPES];\n\nstruct UUID;\n\nclass WAVEFile : public _AFfilehandle\n{\npublic:\n\tstatic bool recognize(File *fh);\n\tstatic AFfilesetup completeSetup(AFfilesetup);\n\n\tWAVEFile();\n\n\tstatus readInit(AFfilesetup) OVERRIDE;\n\tstatus writeInit(AFfilesetup) OVERRIDE;\n\n\tstatus update() OVERRIDE;\n\n\tbool isInstrumentParameterValid(AUpvlist, int) OVERRIDE;\n\nprivate:\n\tAFfileoffset m_factOffset;\t// start of fact (frame count) chunk\n\tAFfileoffset m_miscellaneousOffset;\n\tAFfileoffset m_markOffset;\n\tAFfileoffset m_dataSizeOffset;\n\n\t/*\n\t\tThe index into the coefficient array is of type\n\t\tuint8_t, so we can safely limit msadpcmCoefficients to\n\t\tbe 256 coefficient pairs.\n\t*/\n\tint m_msadpcmNumCoefficients;\n\tint16_t m_msadpcmCoefficients[256][2];\n\n\tstatus parseFrameCount(const Tag &type, uint32_t size);\n\tstatus parseFormat(const Tag &type, uint32_t size);\n\tstatus parseData(const Tag &type, uint32_t size);\n\tstatus parsePlayList(const Tag &type, uint32_t size);\n\tstatus parseCues(const Tag &type, uint32_t size);\n\tstatus parseADTLSubChunk(const Tag &type, uint32_t size);\n\tstatus parseINFOSubChunk(const Tag &type, uint32_t size);\n\tstatus parseList(const Tag &type, uint32_t size);\n\tstatus parseInstrument(const Tag &type, uint32_t size);\n\n\tstatus writeFormat();\n\tstatus writeFrameCount();\n\tstatus writeMiscellaneous();\n\tstatus writeCues();\n\tstatus writeData();\n\n\tbool readUUID(UUID *g);\n\tbool writeUUID(const UUID *g);\n\n\tbool writeZString(const char *);\n\tsize_t zStringLength(const char *);\n\n\tvoid initCompressionParams();\n\tvoid initIMACompressionParams();\n\tvoid initMSADPCMCompressionParams();\n};\n\n#endif\n\n// file: SampleVision.h\n/*\n\tAudio File Library\n\tCopyright (C) 2012, Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n#ifndef SAMPLE_VISION_H\n#define SAMPLE_VISION_H\n\n\nclass SampleVisionFile : public _AFfilehandle\n{\npublic:\n\tSampleVisionFile();\n\tvirtual ~SampleVisionFile();\n\n\tstatic bool recognize(File *fh);\n\n\tstatic AFfilesetup completeSetup(AFfilesetup);\n\n\tstatus readInit(AFfilesetup) OVERRIDE;\n\tstatus writeInit(AFfilesetup) OVERRIDE;\n\n\tstatus update() OVERRIDE;\n\nprivate:\n\tAFfileoffset m_frameCountOffset;\n\n\tstatus parseLoops();\n\tstatus parseMarkers();\n\tstatus writeTrailer();\n\tstatus writeLoops();\n\tstatus writeMarkers();\n\n\tvoid addMiscellaneous(int type, const char *data);\n};\n\n#endif\n\n// file: modules/Module.h\n/*\n\tAudio File Library\n\tCopyright (C) 2000, Silicon Graphics, Inc.\n\tCopyright (C) 2010, Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n#ifndef MODULE_H\n#define MODULE_H\n\n\n#include <vector>\n\nenum FormatCode\n{\n\tkUndefined = -1,\n\tkInt8,\n\tkInt16,\n\tkInt24,\n\tkInt32,\n\tkFloat,\n\tkDouble,\n};\n\nclass Chunk : public Shared<Chunk>\n{\npublic:\n\tvoid *buffer;\n\tsize_t frameCount;\n\tAudioFormat f;\n\tbool ownsMemory;\n\n\tChunk() : buffer(NULL), frameCount(0), ownsMemory(false) { }\n\t~Chunk()\n\t{\n\t\tdeallocate();\n\t}\n\tvoid allocate(size_t capacity)\n\t{\n\t\tdeallocate();\n\t\townsMemory = true;\n\t\tbuffer = ::operator new(capacity);\n\t}\n\tvoid deallocate()\n\t{\n\t\tif (ownsMemory)\n\t\t\t::operator delete(buffer);\n\t\townsMemory = false;\n\t\tbuffer = NULL;\n\t}\n};\n\nclass Module : public Shared<Module>\n{\npublic:\n\tModule();\n\tvirtual ~Module();\n\n\tvoid setSink(Module *);\n\tvoid setSource(Module *);\n\tChunk *inChunk() const { return m_inChunk.get(); }\n\tvoid setInChunk(Chunk *chunk) { m_inChunk = chunk; }\n\tChunk *outChunk() const { return m_outChunk.get(); }\n\tvoid setOutChunk(Chunk *chunk) { m_outChunk = chunk; }\n\n\tvirtual const char *name() const;\n\t/*\n\t\tSet format of m_outChunk based on how this module transforms m_inChunk.\n\t*/\n\tvirtual void describe();\n\t/*\n\t\tSet frame count of m_inChunk to the maximum number of frames needed to\n\t\tproduce frame count of m_outChunk.\n\t*/\n\tvirtual void maxPull();\n\t/*\n\t\tSet frame count of m_outChunk to the maximum number of frames needed to\n\t\tproduce frame count of m_inChunk.\n\t*/\n\tvirtual void maxPush();\n\tvirtual void runPull();\n\tvirtual void reset1() { }\n\tvirtual void reset2() { }\n\tvirtual void runPush();\n\tvirtual void sync1() { }\n\tvirtual void sync2() { }\n\nprotected:\n\tSharedPtr<Chunk> m_inChunk, m_outChunk;\n\tunion\n\t{\n\t\tModule *m_sink;\n\t\tModule *m_source;\n\t};\n\n\tvoid pull(size_t frames);\n\tvoid push(size_t frames);\n};\n\n/*\n\t_AF_ATOMIC_NVFRAMES is NOT the maximum number of frames a module\n\tcan be requested to produce.\n\n\tThis IS the maximum number of virtual (user) frames that will\n\tbe produced or processed per run of the modules.\n\n\tModules can be requested more frames than this because of rate\n\tconversion and rebuffering.\n*/\n\n#define _AF_ATOMIC_NVFRAMES 1024\n\n#endif // MODULE_H\n\n// file: modules/ModuleState.h\n/*\n\tAudio File Library\n\tCopyright (C) 2000, Silicon Graphics, Inc.\n\tCopyright (C) 2010, Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n#ifndef MODULESTATE_H\n#define MODULESTATE_H\n\n#include <vector>\n\nclass FileModule;\nclass Module;\n\nclass ModuleState : public Shared<ModuleState>\n{\npublic:\n\tModuleState();\n\tvirtual ~ModuleState();\n\n\tbool isDirty() const { return m_isDirty; }\n\tvoid setDirty() { m_isDirty = true; }\n\tstatus init(AFfilehandle file, Track *track);\n\tstatus setup(AFfilehandle file, Track *track);\n\tstatus reset(AFfilehandle file, Track *track);\n\tstatus sync(AFfilehandle file, Track *track);\n\n\tint numModules() const { return m_modules.size(); }\n\tconst std::vector<SharedPtr<Module> > &modules() const;\n\tconst std::vector<SharedPtr<Chunk> > &chunks() const;\n\n\tbool mustUseAtomicNVFrames() const { return true; }\n\n\tvoid print();\n\n\tbool fileModuleHandlesSeeking() const;\n\nprivate:\n\tstd::vector<SharedPtr<Module> > m_modules;\n\tstd::vector<SharedPtr<Chunk> > m_chunks;\n\tbool m_isDirty;\n\n\tSharedPtr<FileModule> m_fileModule;\n\tSharedPtr<Module> m_fileRebufferModule;\n\n\tstatus initFileModule(AFfilehandle file, Track *track);\n\n\tstatus arrange(AFfilehandle file, Track *track);\n\n\tvoid addModule(Module *module);\n\n\tvoid addConvertIntToInt(FormatCode input, FormatCode output);\n\tvoid addConvertIntToFloat(FormatCode input, FormatCode output);\n\tvoid addConvertFloatToInt(FormatCode input, FormatCode output,\n\t\tconst PCMInfo &inputMapping, const PCMInfo &outputMapping);\n\tvoid addConvertFloatToFloat(FormatCode input, FormatCode output);\n};\n\n#endif\n\n// file: modules/SimpleModule.h\n/*\n\tAudio File Library\n\tCopyright (C) 2010, Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n#ifndef SIMPLE_MODULE_H\n#define SIMPLE_MODULE_H\n\n\n\n#include <algorithm>\n#include <cassert>\n#include <climits>\n#include <functional>\n\nclass SimpleModule : public Module\n{\npublic:\n\tvirtual void runPull() OVERRIDE;\n\tvirtual void runPush() OVERRIDE;\n\tvirtual void run(Chunk &inChunk, Chunk &outChunk) = 0;\n};\n\nstruct SwapModule : public SimpleModule\n{\npublic:\n\tvirtual const char *name() const OVERRIDE { return \"swap\"; }\n\tvirtual void describe() OVERRIDE\n\t{\n\t\tm_outChunk->f.byteOrder = m_inChunk->f.byteOrder == AF_BYTEORDER_BIGENDIAN ?\n\t\t\tAF_BYTEORDER_LITTLEENDIAN : AF_BYTEORDER_BIGENDIAN;\n\t}\n\tvirtual void run(Chunk &inChunk, Chunk &outChunk) OVERRIDE\n\t{\n\t\tswitch (m_inChunk->f.bytesPerSample(false))\n\t\t{\n\t\t\tcase 2:\n\t\t\t\trun<2, int16_t>(inChunk, outChunk); break;\n\t\t\tcase 3:\n\t\t\t\trun<3, char>(inChunk, outChunk); break;\n\t\t\tcase 4:\n\t\t\t\trun<4, int32_t>(inChunk, outChunk); break;\n\t\t\tcase 8:\n\t\t\t\trun<8, int64_t>(inChunk, outChunk); break;\n\t\t\tdefault:\n\t\t\t\tassert(false); break;\n\t\t}\n\t}\n\nprivate:\n\ttemplate <int N, typename T>\n\tvoid run(Chunk &inChunk, Chunk &outChunk)\n\t{\n\t\tint sampleCount = inChunk.f.channelCount * inChunk.frameCount;\n\t\trunSwap<N, T>(reinterpret_cast<const T *>(inChunk.buffer),\n\t\t\treinterpret_cast<T *>(outChunk.buffer),\n\t\t\tsampleCount);\n\t}\n\ttemplate <int N, typename T>\n\tvoid runSwap(const T *input, T *output, int sampleCount)\n\t{\n\t\tfor (int i=0; i<sampleCount; i++)\n\t\t\toutput[i] = byteswap(input[i]);\n\t}\n};\n\ntemplate <>\ninline void SwapModule::runSwap<3, char>(const char *input, char *output, int count)\n{\n\tfor (int i=0; i<count; i++)\n\t{\n\t\toutput[3*i] = input[3*i+2];\n\t\toutput[3*i+1] = input[3*i+1];\n\t\toutput[3*i+2] = input[3*i];\n\t}\n}\n\ntemplate <typename UnaryFunction>\nvoid transform(const void *srcData, void *dstData, size_t count)\n{\n\ttypedef typename UnaryFunction::argument_type InputType;\n\ttypedef typename UnaryFunction::result_type OutputType;\n\tconst InputType *src = reinterpret_cast<const InputType *>(srcData);\n\tOutputType *dst = reinterpret_cast<OutputType *>(dstData);\n\tstd::transform(src, src + count, dst, UnaryFunction());\n}\n\ntemplate <FormatCode>\nstruct IntTypes;\n\ntemplate <>\nstruct IntTypes<kInt8> { typedef int8_t SignedType; typedef uint8_t UnsignedType; };\ntemplate <>\nstruct IntTypes<kInt16> { typedef int16_t SignedType; typedef uint16_t UnsignedType; };\ntemplate <>\nstruct IntTypes<kInt24> { typedef int32_t SignedType; typedef uint32_t UnsignedType; };\ntemplate <>\nstruct IntTypes<kInt32> { typedef int32_t SignedType; typedef uint32_t UnsignedType; };\n\ntemplate <FormatCode Format>\nstruct signConverter\n{\n\ttypedef typename IntTypes<Format>::SignedType SignedType;\n\ttypedef typename IntTypes<Format>::UnsignedType UnsignedType;\n\n\tstatic const int kScaleBits = (Format + 1) * CHAR_BIT - 1;\n\tstatic const int kMaxSignedValue = (((1 << (kScaleBits - 1)) - 1) << 1) + 1;\n\tstatic const int kMinSignedValue = -kMaxSignedValue - 1;\n\n\tstruct signedToUnsigned : public std::unary_function<SignedType, UnsignedType>\n\t{\n\t\tUnsignedType operator()(SignedType x) { return x - kMinSignedValue; }\n\t};\n\n\tstruct unsignedToSigned : public std::unary_function<SignedType, UnsignedType>\n\t{\n\t\tSignedType operator()(UnsignedType x) { return x + kMinSignedValue; }\n\t};\n};\n\nclass ConvertSign : public SimpleModule\n{\npublic:\n\tConvertSign(FormatCode format, bool fromSigned) :\n\t\tm_format(format),\n\t\tm_fromSigned(fromSigned)\n\t{\n\t}\n\tvirtual const char *name() const OVERRIDE { return \"sign\"; }\n\tvirtual void describe() OVERRIDE\n\t{\n\t\tconst int scaleBits = m_inChunk->f.bytesPerSample(false) * CHAR_BIT;\n\t\tm_outChunk->f.sampleFormat =\n\t\t\tm_fromSigned ? AF_SAMPFMT_UNSIGNED : AF_SAMPFMT_TWOSCOMP;\n\t\tdouble shift = -(1 << (scaleBits - 1));\n\t\tif (m_fromSigned)\n\t\t\tshift = -shift;\n\t\tm_outChunk->f.pcm.intercept += shift;\n\t\tm_outChunk->f.pcm.minClip += shift;\n\t\tm_outChunk->f.pcm.maxClip += shift;\n\t}\n\tvirtual void run(Chunk &input, Chunk &output) OVERRIDE\n\t{\n\t\tsize_t count = input.frameCount * m_inChunk->f.channelCount;\n\t\tif (m_fromSigned)\n\t\t\tconvertSignedToUnsigned(input.buffer, output.buffer, count);\n\t\telse\n\t\t\tconvertUnsignedToSigned(input.buffer, output.buffer, count);\n\t}\n\nprivate:\n\tFormatCode m_format;\n\tbool m_fromSigned;\n\n\ttemplate <FormatCode Format>\n\tstatic void convertSignedToUnsigned(const void *src, void *dst, size_t count)\n\t{\n\t\ttransform<typename signConverter<Format>::signedToUnsigned>(src, dst, count);\n\t}\n\tvoid convertSignedToUnsigned(const void *src, void *dst, size_t count)\n\t{\n\t\tswitch (m_format)\n\t\t{\n\t\t\tcase kInt8:\n\t\t\t\tconvertSignedToUnsigned<kInt8>(src, dst, count);\n\t\t\t\tbreak;\n\t\t\tcase kInt16:\n\t\t\t\tconvertSignedToUnsigned<kInt16>(src, dst, count);\n\t\t\t\tbreak;\n\t\t\tcase kInt24:\n\t\t\t\tconvertSignedToUnsigned<kInt24>(src, dst, count);\n\t\t\t\tbreak;\n\t\t\tcase kInt32:\n\t\t\t\tconvertSignedToUnsigned<kInt32>(src, dst, count);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tassert(false);\n\t\t}\n\t}\n\n\ttemplate <FormatCode Format>\n\tstatic void convertUnsignedToSigned(const void *src, void *dst, size_t count)\n\t{\n\t\ttransform<typename signConverter<Format>::unsignedToSigned>(src, dst, count);\n\t}\n\tvoid convertUnsignedToSigned(const void *src, void *dst, size_t count)\n\t{\n\t\tswitch (m_format)\n\t\t{\n\t\t\tcase kInt8:\n\t\t\t\tconvertUnsignedToSigned<kInt8>(src, dst, count);\n\t\t\t\tbreak;\n\t\t\tcase kInt16:\n\t\t\t\tconvertUnsignedToSigned<kInt16>(src, dst, count);\n\t\t\t\tbreak;\n\t\t\tcase kInt24:\n\t\t\t\tconvertUnsignedToSigned<kInt24>(src, dst, count);\n\t\t\t\tbreak;\n\t\t\tcase kInt32:\n\t\t\t\tconvertUnsignedToSigned<kInt32>(src, dst, count);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tassert(false);\n\t\t}\n\t}\n};\n\nstruct Expand3To4Module : public SimpleModule\n{\npublic:\n\tExpand3To4Module(bool isSigned) : m_isSigned(isSigned)\n\t{\n\t}\n\tvirtual const char *name() const OVERRIDE { return \"expand3to4\"; }\n\tvirtual void describe() OVERRIDE\n\t{\n\t\tm_outChunk->f.packed = false;\n\t}\n\tvirtual void run(Chunk &inChunk, Chunk &outChunk) OVERRIDE\n\t{\n\t\tint count = inChunk.f.channelCount * inChunk.frameCount;\n\t\tif (m_isSigned)\n\t\t\trun<int32_t>(reinterpret_cast<const uint8_t *>(inChunk.buffer),\n\t\t\t\treinterpret_cast<int32_t *>(outChunk.buffer),\n\t\t\t\tcount);\n\t\telse\n\t\t\trun<uint32_t>(reinterpret_cast<const uint8_t *>(inChunk.buffer),\n\t\t\t\treinterpret_cast<uint32_t *>(outChunk.buffer),\n\t\t\t\tcount);\n\t}\n\nprivate:\n\tbool m_isSigned;\n\n\ttemplate <typename T>\n\tvoid run(const uint8_t *input, T *output, int sampleCount)\n\t{\n\t\tfor (int i=0; i<sampleCount; i++)\n\t\t{\n\t\t\tT t =\n#ifdef WORDS_BIGENDIAN\n\t\t\t\t(input[3*i] << 24) |\n\t\t\t\t(input[3*i+1] << 16) |\n\t\t\t\tinput[3*i+2] << 8;\n#else\n\t\t\t\t(input[3*i+2] << 24) |\n\t\t\t\t(input[3*i+1] << 16) |\n\t\t\t\tinput[3*i] << 8;\n#endif\n\t\t\toutput[i] = t >> 8;\n\t\t}\n\t}\n};\n\nstruct Compress4To3Module : public SimpleModule\n{\npublic:\n\tCompress4To3Module(bool isSigned) : m_isSigned(isSigned)\n\t{\n\t}\n\tvirtual const char *name() const OVERRIDE { return \"compress4to3\"; }\n\tvirtual void describe() OVERRIDE\n\t{\n\t\tm_outChunk->f.packed = true;\n\t}\n\tvirtual void run(Chunk &inChunk, Chunk &outChunk) OVERRIDE\n\t{\n\t\tint count = inChunk.f.channelCount * inChunk.frameCount;\n\t\tif (m_isSigned)\n\t\t\trun<int32_t>(inChunk.buffer, outChunk.buffer, count);\n\t\telse\n\t\t\trun<uint32_t>(inChunk.buffer, outChunk.buffer, count);\n\t}\n\nprivate:\n\tbool m_isSigned;\n\n\ttemplate <typename T>\n\tvoid run(const void *input, void *output, int count)\n\t{\n\t\tconst T *in = reinterpret_cast<const T *>(input);\n\t\tuint8_t *out = reinterpret_cast<uint8_t *>(output);\n\t\tfor (int i=0; i<count; i++)\n\t\t{\n\t\t\tuint8_t c0, c1, c2;\n\t\t\textract3(in[i], c0, c1, c2);\n\t\t\tout[3*i] = c0;\n\t\t\tout[3*i+1] = c1;\n\t\t\tout[3*i+2] = c2;\n\t\t}\n\t}\n\ttemplate <typename T>\n\tvoid extract3(T in, uint8_t &c0, uint8_t &c1, uint8_t &c2)\n\t{\n#ifdef WORDS_BIGENDIAN\n\t\t\tc0 = (in >> 16) & 0xff;\n\t\t\tc1 = (in >> 8) & 0xff;\n\t\t\tc2 = in & 0xff;\n#else\n\t\t\tc2 = (in >> 16) & 0xff;\n\t\t\tc1 = (in >> 8) & 0xff;\n\t\t\tc0 = in & 0xff;\n#endif\n\t}\n};\n\ntemplate <typename Arg, typename Result>\nstruct intToFloat : public std::unary_function<Arg, Result>\n{\n\tResult operator()(Arg x) const { return x; }\n};\n\nstruct ConvertIntToFloat : public SimpleModule\n{\n\tConvertIntToFloat(FormatCode inFormat, FormatCode outFormat) :\n\t\tm_inFormat(inFormat), m_outFormat(outFormat)\n\t{\n\t}\n\tvirtual const char *name() const OVERRIDE { return \"intToFloat\"; }\n\tvirtual void describe() OVERRIDE\n\t{\n\t\tm_outChunk->f.sampleFormat = m_outFormat == kDouble ?\n\t\t\tAF_SAMPFMT_DOUBLE : AF_SAMPFMT_FLOAT;\n\t\tm_outChunk->f.sampleWidth = m_outFormat == kDouble ? 64 : 32;\n\t}\n\tvirtual void run(Chunk &inChunk, Chunk &outChunk) OVERRIDE\n\t{\n\t\tconst void *src = inChunk.buffer;\n\t\tvoid *dst = outChunk.buffer;\n\t\tint count = inChunk.frameCount * inChunk.f.channelCount;\n\t\tif (m_outFormat == kFloat)\n\t\t{\n\t\t\tswitch (m_inFormat)\n\t\t\t{\n\t\t\t\tcase kInt8:\n\t\t\t\t\trun<int8_t, float>(src, dst, count); break;\n\t\t\t\tcase kInt16:\n\t\t\t\t\trun<int16_t, float>(src, dst, count); break;\n\t\t\t\tcase kInt24:\n\t\t\t\tcase kInt32:\n\t\t\t\t\trun<int32_t, float>(src, dst, count); break;\n\t\t\t\tdefault:\n\t\t\t\t\tassert(false);\n\t\t\t}\n\t\t}\n\t\telse if (m_outFormat == kDouble)\n\t\t{\n\t\t\tswitch (m_inFormat)\n\t\t\t{\n\t\t\t\tcase kInt8:\n\t\t\t\t\trun<int8_t, double>(src, dst, count); break;\n\t\t\t\tcase kInt16:\n\t\t\t\t\trun<int16_t, double>(src, dst, count); break;\n\t\t\t\tcase kInt24:\n\t\t\t\tcase kInt32:\n\t\t\t\t\trun<int32_t, double>(src, dst, count); break;\n\t\t\t\tdefault:\n\t\t\t\t\tassert(false);\n\t\t\t}\n\t\t}\n\t}\n\nprivate:\n\tFormatCode m_inFormat, m_outFormat;\n\n\ttemplate <typename Arg, typename Result>\n\tstatic void run(const void *src, void *dst, int count)\n\t{\n\t\ttransform<intToFloat<Arg, Result> >(src, dst, count);\n\t}\n};\n\ntemplate <typename Arg, typename Result, unsigned shift>\nstruct lshift : public std::unary_function<Arg, Result>\n{\n\tResult operator()(const Arg &x) const { return x << shift; }\n};\n\ntemplate <typename Arg, typename Result, unsigned shift>\nstruct rshift : public std::unary_function<Arg, Result>\n{\n\tResult operator()(const Arg &x) const { return x >> shift; }\n};\n\nstruct ConvertInt : public SimpleModule\n{\n\tConvertInt(FormatCode inFormat, FormatCode outFormat) :\n\t\tm_inFormat(inFormat),\n\t\tm_outFormat(outFormat)\n\t{\n\t\tassert(isInteger(m_inFormat));\n\t\tassert(isInteger(m_outFormat));\n\t}\n\tvirtual const char *name() const OVERRIDE { return \"convertInt\"; }\n\tvirtual void describe() OVERRIDE\n\t{\n\t\tgetDefaultPCMMapping(m_outChunk->f.sampleWidth,\n\t\t\tm_outChunk->f.pcm.slope,\n\t\t\tm_outChunk->f.pcm.intercept,\n\t\t\tm_outChunk->f.pcm.minClip,\n\t\t\tm_outChunk->f.pcm.maxClip);\n\t}\n\tvirtual void run(Chunk &inChunk, Chunk &outChunk) OVERRIDE\n\t{\n\t\tconst void *src = inChunk.buffer;\n\t\tvoid *dst = outChunk.buffer;\n\t\tsize_t count = inChunk.frameCount * inChunk.f.channelCount;\n\n#define MASK(N, M) (((N)<<3) | (M))\n#define HANDLE(N, M) \\\n\tcase MASK(N, M): convertInt<N, M>(src, dst, count); break;\n\t\tswitch (MASK(m_inFormat, m_outFormat))\n\t\t{\n\t\t\tHANDLE(kInt8, kInt16)\n\t\t\tHANDLE(kInt8, kInt24)\n\t\t\tHANDLE(kInt8, kInt32)\n\t\t\tHANDLE(kInt16, kInt8)\n\t\t\tHANDLE(kInt16, kInt24)\n\t\t\tHANDLE(kInt16, kInt32)\n\t\t\tHANDLE(kInt24, kInt8)\n\t\t\tHANDLE(kInt24, kInt16)\n\t\t\tHANDLE(kInt24, kInt32)\n\t\t\tHANDLE(kInt32, kInt8)\n\t\t\tHANDLE(kInt32, kInt16)\n\t\t\tHANDLE(kInt32, kInt24)\n\t\t}\n#undef MASK\n#undef HANDLE\n\t}\n\nprivate:\n\tFormatCode m_inFormat, m_outFormat;\n\n\tvoid getDefaultPCMMapping(int &bits, double &slope, double &intercept,\n\t\tdouble &minClip, double &maxClip)\n\t{\n\t\tbits = (m_outFormat + 1) * CHAR_BIT;\n\t\tslope = (1LL << (bits - 1));\n\t\tintercept = 0;\n\t\tminClip = -(1 << (bits - 1));\n\t\tmaxClip = (1LL << (bits - 1)) - 1;\n\t}\n\n\tstatic bool isInteger(FormatCode code)\n\t{\n\t\treturn code >= kInt8 && code <= kInt32;\n\t}\n\n\ttemplate <FormatCode Input, FormatCode Output, bool = (Input > Output)>\n\t\tstruct shift;\n\n\ttemplate <FormatCode Input, FormatCode Output>\n\tstruct shift<Input, Output, true> :\n\t\tpublic rshift<typename IntTypes<Input>::SignedType,\n\t\t\ttypename IntTypes<Output>::SignedType,\n\t\t\t(Input - Output) * CHAR_BIT>\n\t{\n\t};\n\n\ttemplate <FormatCode Input, FormatCode Output>\n\tstruct shift<Input, Output, false> :\n\t\tpublic lshift<typename IntTypes<Input>::SignedType,\n\t\t\ttypename IntTypes<Output>::SignedType,\n\t\t\t(Output - Input) * CHAR_BIT>\n\t{\n\t};\n\n\ttemplate <FormatCode Input, FormatCode Output>\n\tstatic void convertInt(const void *src, void *dst, int count)\n\t{\n\t\ttransform<shift<Input, Output> >(src, dst, count);\n\t}\n};\n\ntemplate <typename Arg, typename Result>\nstruct floatToFloat : public std::unary_function<Arg, Result>\n{\n\tResult operator()(Arg x) const { return x; }\n};\n\nstruct ConvertFloat : public SimpleModule\n{\n\tConvertFloat(FormatCode inFormat, FormatCode outFormat) :\n\t\tm_inFormat(inFormat), m_outFormat(outFormat)\n\t{\n\t\tassert((m_inFormat == kFloat && m_outFormat == kDouble) ||\n\t\t\t(m_inFormat == kDouble && m_outFormat == kFloat));\n\t}\n\tvirtual const char *name() const OVERRIDE { return \"convertFloat\"; }\n\tvirtual void describe() OVERRIDE\n\t{\n\t\tswitch (m_outFormat)\n\t\t{\n\t\t\tcase kFloat:\n\t\t\t\tm_outChunk->f.sampleFormat = AF_SAMPFMT_FLOAT;\n\t\t\t\tm_outChunk->f.sampleWidth = 32;\n\t\t\t\tbreak;\n\t\t\tcase kDouble:\n\t\t\t\tm_outChunk->f.sampleFormat = AF_SAMPFMT_DOUBLE;\n\t\t\t\tm_outChunk->f.sampleWidth = 64;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tassert(false);\n\t\t}\n\t}\n\tvirtual void run(Chunk &inChunk, Chunk &outChunk) OVERRIDE\n\t{\n\t\tconst void *src = inChunk.buffer;\n\t\tvoid *dst = outChunk.buffer;\n\t\tsize_t count = inChunk.frameCount * inChunk.f.channelCount;\n\n\t\tswitch (m_outFormat)\n\t\t{\n\t\t\tcase kFloat:\n\t\t\t\ttransform<floatToFloat<double, float> >(src, dst, count);\n\t\t\t\tbreak;\n\t\t\tcase kDouble:\n\t\t\t\ttransform<floatToFloat<float, double> >(src, dst, count);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tassert(false);\n\t\t}\n\t}\n\nprivate:\n\tFormatCode m_inFormat, m_outFormat;\n};\n\nstruct Clip : public SimpleModule\n{\n\tClip(FormatCode format, const PCMInfo &outputMapping) :\n\t\tm_format(format),\n\t\tm_outputMapping(outputMapping)\n\t{\n\t}\n\tvirtual const char *name() const OVERRIDE { return \"clip\"; }\n\tvirtual void describe() OVERRIDE\n\t{\n\t\tm_outChunk->f.pcm = m_outputMapping;\n\t}\n\tvirtual void run(Chunk &inChunk, Chunk &outChunk) OVERRIDE\n\t{\n\t\tconst void *src = inChunk.buffer;\n\t\tvoid *dst = outChunk.buffer;\n\t\tint count = inChunk.frameCount * inChunk.f.channelCount;\n\n\t\tswitch (m_format)\n\t\t{\n\t\t\tcase kInt8:\n\t\t\t\trun<int8_t>(src, dst, count); break;\n\t\t\tcase kInt16:\n\t\t\t\trun<int16_t>(src, dst, count); break;\n\t\t\tcase kInt24:\n\t\t\tcase kInt32:\n\t\t\t\trun<int32_t>(src, dst, count); break;\n\t\t\tcase kFloat:\n\t\t\t\trun<float>(src, dst, count); break;\n\t\t\tcase kDouble:\n\t\t\t\trun<double>(src, dst, count); break;\n\t\t\tdefault:\n\t\t\t\tassert(false);\n\t\t}\n\t}\n\nprivate:\n\tFormatCode m_format;\n\tPCMInfo m_outputMapping;\n\n\ttemplate <typename T>\n\tvoid run(const void *srcData, void *dstData, int count)\n\t{\n\t\tconst T minValue = m_outputMapping.minClip;\n\t\tconst T maxValue = m_outputMapping.maxClip;\n\n\t\tconst T *src = reinterpret_cast<const T *>(srcData);\n\t\tT *dst = reinterpret_cast<T *>(dstData);\n\n\t\tfor (int i=0; i<count; i++)\n\t\t{\n\t\t\tT t = src[i];\n\t\t\tt = std::min(t, maxValue);\n\t\t\tt = std::max(t, minValue);\n\t\t\tdst[i] = t;\n\t\t}\n\t}\n};\n\nstruct ConvertFloatToIntClip : public SimpleModule\n{\n\tConvertFloatToIntClip(FormatCode inputFormat, FormatCode outputFormat,\n\t\tconst PCMInfo &inputMapping, const PCMInfo &outputMapping) :\n\t\tm_inputFormat(inputFormat),\n\t\tm_outputFormat(outputFormat),\n\t\tm_inputMapping(inputMapping),\n\t\tm_outputMapping(outputMapping)\n\t{\n\t\tassert(m_inputFormat == kFloat || m_inputFormat == kDouble);\n\t\tassert(m_outputFormat == kInt8 ||\n\t\t\tm_outputFormat == kInt16 ||\n\t\t\tm_outputFormat == kInt24 ||\n\t\t\tm_outputFormat == kInt32);\n\t}\n\tvirtual const char *name() const OVERRIDE { return \"convertPCMMapping\"; }\n\tvirtual void describe() OVERRIDE\n\t{\n\t\tm_outChunk->f.sampleFormat = AF_SAMPFMT_TWOSCOMP;\n\t\tm_outChunk->f.sampleWidth = (m_outputFormat + 1) * CHAR_BIT;\n\t\tm_outChunk->f.pcm = m_outputMapping;\n\t}\n\tvirtual void run(Chunk &inChunk, Chunk &outChunk) OVERRIDE\n\t{\n\t\tconst void *src = inChunk.buffer;\n\t\tvoid *dst = outChunk.buffer;\n\t\tint count = inChunk.frameCount * inChunk.f.channelCount;\n\n\t\tif (m_inputFormat == kFloat)\n\t\t{\n\t\t\tswitch (m_outputFormat)\n\t\t\t{\n\t\t\t\tcase kInt8:\n\t\t\t\t\trun<float, int8_t>(src, dst, count); break;\n\t\t\t\tcase kInt16:\n\t\t\t\t\trun<float, int16_t>(src, dst, count); break;\n\t\t\t\tcase kInt24:\n\t\t\t\tcase kInt32:\n\t\t\t\t\trun<float, int32_t>(src, dst, count); break;\n\t\t\t\tdefault:\n\t\t\t\t\tassert(false);\n\t\t\t}\n\t\t}\n\t\telse if (m_inputFormat == kDouble)\n\t\t{\n\t\t\tswitch (m_outputFormat)\n\t\t\t{\n\t\t\t\tcase kInt8:\n\t\t\t\t\trun<double, int8_t>(src, dst, count); break;\n\t\t\t\tcase kInt16:\n\t\t\t\t\trun<double, int16_t>(src, dst, count); break;\n\t\t\t\tcase kInt24:\n\t\t\t\tcase kInt32:\n\t\t\t\t\trun<double, int32_t>(src, dst, count); break;\n\t\t\t\tdefault:\n\t\t\t\t\tassert(false);\n\t\t\t}\n\t\t}\n\t}\n\nprivate:\n\tFormatCode m_inputFormat, m_outputFormat;\n\tPCMInfo m_inputMapping, m_outputMapping;\n\n\ttemplate <typename Input, typename Output>\n\tvoid run(const void *srcData, void *dstData, int count)\n\t{\n\t\tconst Input *src = reinterpret_cast<const Input *>(srcData);\n\t\tOutput *dst = reinterpret_cast<Output *>(dstData);\n\n\t\tdouble m = m_outputMapping.slope / m_inputMapping.slope;\n\t\tdouble b = m_outputMapping.intercept - m * m_inputMapping.intercept;\n\t\tdouble minValue = m_outputMapping.minClip;\n\t\tdouble maxValue = m_outputMapping.maxClip;\n\n\t\tfor (int i=0; i<count; i++)\n\t\t{\n\t\t\tdouble t = m * src[i] + b;\n\t\t\tt = std::min(t, maxValue);\n\t\t\tt = std::max(t, minValue);\n\t\t\tdst[i] = static_cast<Output>(t);\n\t\t}\n\t}\n};\n\nstruct ApplyChannelMatrix : public SimpleModule\n{\npublic:\n\tApplyChannelMatrix(FormatCode format, bool isReading,\n\t\tint inChannels, int outChannels,\n\t\tdouble minClip, double maxClip, const double *matrix);\n\tvirtual ~ApplyChannelMatrix();\n\tvirtual const char *name() const OVERRIDE;\n\tvirtual void describe() OVERRIDE;\n\tvirtual void run(Chunk &inChunk, Chunk &outChunk) OVERRIDE;\n\nprivate:\n\tFormatCode m_format;\n\tint m_inChannels, m_outChannels;\n\tdouble m_minClip, m_maxClip;\n\tdouble *m_matrix;\n\n\tvoid initDefaultMatrix();\n\ttemplate <typename T>\n\t\tvoid run(const void *input, void *output, int frameCount);\n};\n\nstruct Transform : public SimpleModule\n{\npublic:\n\tTransform(FormatCode format,\n\t\tconst PCMInfo &inputMapping,\n\t\tconst PCMInfo &outputMapping) :\n\t\tm_format(format),\n\t\tm_inputMapping(inputMapping),\n\t\tm_outputMapping(outputMapping)\n\t{\n\t\tassert(m_format == kFloat || m_format == kDouble);\n\t}\n\tvirtual const char *name() const OVERRIDE { return \"transform\"; }\n\tvirtual void describe() OVERRIDE\n\t{\n\t\tm_outChunk->f.pcm = m_outputMapping;\n\t}\n\tvirtual void run(Chunk &inChunk, Chunk &outChunk) OVERRIDE\n\t{\n\t\tint count = inChunk.frameCount * inChunk.f.channelCount;\n\t\tif (m_format == kFloat)\n\t\t\trun<float>(inChunk.buffer, outChunk.buffer, count);\n\t\telse if (m_format == kDouble)\n\t\t\trun<double>(inChunk.buffer, outChunk.buffer, count);\n\t\telse\n\t\t\tassert(false);\n\t}\n\nprivate:\n\tFormatCode m_format;\n\tPCMInfo m_inputMapping, m_outputMapping;\n\n\ttemplate <typename T>\n\tvoid run(const void *srcData, void *dstData, int count)\n\t{\n\t\tconst T *src = reinterpret_cast<const T *>(srcData);\n\t\tT *dst = reinterpret_cast<T *>(dstData);\n\n\t\tdouble m = m_outputMapping.slope / m_inputMapping.slope;\n\t\tdouble b = m_outputMapping.intercept - m * m_inputMapping.intercept;\n\n\t\tfor (int i=0; i<count; i++)\n\t\t\tdst[i] = m * src[i] + b;\n\t}\n};\n\n#endif // SIMPLE_MODULE_H\n\n// file: modules/FileModule.h\n/*\n\tAudio File Library\n\tCopyright (C) 2010-2012, Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n#ifndef FILE_MODULE_H\n#define FILE_MODULE_H\n\n\nclass FileModule : public Module\n{\npublic:\n\tvirtual bool handlesSeeking() const { return false; }\n\n\tvirtual int bufferSize() const;\n\nprotected:\n\tenum Mode { Compress, Decompress };\n\tFileModule(Mode, Track *, File *fh, bool canSeek);\n\n\tMode mode() const { return m_mode; }\n\tbool canSeek() const { return m_canSeek; }\n\n\tssize_t read(void *data, size_t nbytes);\n\tssize_t write(const void *data, size_t nbytes);\n\toff_t seek(off_t offset);\n\toff_t tell();\n\toff_t length();\n\nprivate:\n\tMode m_mode;\n\nprotected:\n\tTrack *m_track;\n\n\tvoid reportReadError(AFframecount framesRead, AFframecount framesRequested);\n\tvoid reportWriteError(AFframecount framesWritten, AFframecount framesRequested);\n\nprivate:\n\tFile *m_fh;\n\tbool m_canSeek;\n};\n\n#endif // FILE_MODULE_H\n\n// file: modules/RebufferModule.h\n/*\n\tAudio File Library\n\tCopyright (C) 2000, Silicon Graphics, Inc.\n\tCopyright (C) 2010, Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n#ifndef REBUFFER_MODULE_H\n#define REBUFFER_MODULE_H\n\n\nclass RebufferModule : public Module\n{\npublic:\n\tenum Direction\n\t{\n\t\tFixedToVariable,\n\t\tVariableToFixed\n\t};\n\n\tRebufferModule(Direction, int bytesPerFrame, int numFrames, bool multipleOf);\n\tvirtual ~RebufferModule();\n\n\tvirtual const char *name() const OVERRIDE { return \"rebuffer\"; }\n\n\tvirtual void maxPull() OVERRIDE;\n\tvirtual void maxPush() OVERRIDE;\n\n\tvirtual void runPull() OVERRIDE;\n\tvirtual void reset1() OVERRIDE;\n\tvirtual void reset2() OVERRIDE;\n\tvirtual void runPush() OVERRIDE;\n\tvirtual void sync1() OVERRIDE;\n\tvirtual void sync2() OVERRIDE;\n\nprivate:\n\tDirection m_direction;\n\tint m_bytesPerFrame;\n\tint m_numFrames;\n\tbool m_multipleOf; // buffer to multiple of m_numFrames\n\tbool m_eof; // end of input stream reached\n\tbool m_sentShortChunk; // end of input stream indicated\n\tchar *m_buffer;\n\tint m_offset;\n\tchar *m_savedBuffer;\n\tint m_savedOffset;\n\n\tvoid initFixedToVariable();\n\tvoid initVariableToFixed();\n};\n\n#endif // REBUFFER_MODULE_H\n\n// file: modules/BlockCodec.h\n/*\n\tAudio File Library\n\tCopyright (C) 2013 Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n// BlockCodec is a base class for codecs with fixed-size packets.\n\n#ifndef BlockCodec_h\n#define BlockCodec_h\n\n\nclass BlockCodec : public FileModule\n{\npublic:\n\tvirtual void runPull() OVERRIDE;\n\tvirtual void reset1() OVERRIDE;\n\tvirtual void reset2() OVERRIDE;\n\tvirtual void runPush() OVERRIDE;\n\tvirtual void sync1() OVERRIDE;\n\tvirtual void sync2() OVERRIDE;\n\nprotected:\n\tint m_bytesPerPacket, m_framesPerPacket;\n\tAFframecount m_framesToIgnore;\n\tAFfileoffset m_savedPositionNextFrame;\n\tAFframecount m_savedNextFrame;\n\n\tBlockCodec(Mode, Track *, File *, bool canSeek);\n\n\tvirtual int decodeBlock(const uint8_t *encoded, int16_t *decoded) = 0;\n\tvirtual int encodeBlock(const int16_t *decoded, uint8_t *encoded) = 0;\n};\n\n#endif\n\n// file: modules/BlockCodec.cpp\n/*\n\tAudio File Library\n\tCopyright (C) 2013 Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n\n\n#include <assert.h>\n\nBlockCodec::BlockCodec(Mode mode, Track *track, File *fh, bool canSeek) :\n\tFileModule(mode, track, fh, canSeek),\n\tm_bytesPerPacket(-1),\n\tm_framesPerPacket(-1),\n\tm_framesToIgnore(-1),\n\tm_savedPositionNextFrame(-1),\n\tm_savedNextFrame(-1)\n{\n\tm_framesPerPacket = track->f.framesPerPacket;\n\tm_bytesPerPacket = track->f.bytesPerPacket;\n}\n\nvoid BlockCodec::runPull()\n{\n\tAFframecount framesToRead = m_outChunk->frameCount;\n\tAFframecount framesRead = 0;\n\n\tassert(framesToRead % m_framesPerPacket == 0);\n\tint blockCount = framesToRead / m_framesPerPacket;\n\n\t// Read the compressed data.\n\tssize_t bytesRead = read(m_inChunk->buffer, m_bytesPerPacket * blockCount);\n\tint blocksRead = bytesRead >= 0 ? bytesRead / m_bytesPerPacket : 0;\n\n\t// Decompress into m_outChunk.\n\tfor (int i=0; i<blocksRead; i++)\n\t{\n\t\tdecodeBlock(static_cast<const uint8_t *>(m_inChunk->buffer) + i * m_bytesPerPacket,\n\t\t\tstatic_cast<int16_t *>(m_outChunk->buffer) + i * m_framesPerPacket * m_track->f.channelCount);\n\n\t\tframesRead += m_framesPerPacket;\n\t}\n\n\tm_track->nextfframe += framesRead;\n\n\tassert(tell() == m_track->fpos_next_frame);\n\n\tif (framesRead < framesToRead)\n\t\treportReadError(framesRead, framesToRead);\n\n\tm_outChunk->frameCount = framesRead;\n}\n\nvoid BlockCodec::reset1()\n{\n\tAFframecount nextTrackFrame = m_track->nextfframe;\n\tm_track->nextfframe = (nextTrackFrame / m_framesPerPacket) *\n\t\tm_framesPerPacket;\n\n\tm_framesToIgnore = nextTrackFrame - m_track->nextfframe;\n}\n\nvoid BlockCodec::reset2()\n{\n\tm_track->fpos_next_frame = m_track->fpos_first_frame +\n\t\tm_bytesPerPacket * (m_track->nextfframe / m_framesPerPacket);\n\tm_track->frames2ignore += m_framesToIgnore;\n\n\tassert(m_track->nextfframe % m_framesPerPacket == 0);\n}\n\nvoid BlockCodec::runPush()\n{\n\tAFframecount framesToWrite = m_inChunk->frameCount;\n\tint channelCount = m_inChunk->f.channelCount;\n\n\tint blockCount = (framesToWrite + m_framesPerPacket - 1) / m_framesPerPacket;\n\tfor (int i=0; i<blockCount; i++)\n\t{\n\t\tencodeBlock(static_cast<const int16_t *>(m_inChunk->buffer) + i * m_framesPerPacket * channelCount,\n\t\t\tstatic_cast<uint8_t *>(m_outChunk->buffer) + i * m_bytesPerPacket);\n\t}\n\n\tssize_t bytesWritten = write(m_outChunk->buffer, m_bytesPerPacket * blockCount);\n\tssize_t blocksWritten = bytesWritten >= 0 ? bytesWritten / m_bytesPerPacket : 0;\n\tAFframecount framesWritten = std::min((AFframecount) blocksWritten * m_framesPerPacket, framesToWrite);\n\n\tm_track->nextfframe += framesWritten;\n\tm_track->totalfframes = m_track->nextfframe;\n\n\tassert(tell() == m_track->fpos_next_frame);\n\n\tif (framesWritten < framesToWrite)\n\t\treportWriteError(framesWritten, framesToWrite);\n}\n\nvoid BlockCodec::sync1()\n{\n\tm_savedPositionNextFrame = m_track->fpos_next_frame;\n\tm_savedNextFrame = m_track->nextfframe;\n}\n\nvoid BlockCodec::sync2()\n{\n\tassert(tell() == m_track->fpos_next_frame);\n\tm_track->fpos_after_data = tell();\n\tm_track->fpos_next_frame = m_savedPositionNextFrame;\n\tm_track->nextfframe = m_savedNextFrame;\n}\n\n// file: modules/FileModule.cpp\n/*\n\tAudio File Library\n\tCopyright (C) 2010-2012, Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n\n\n#include <errno.h>\n#include <string.h>\n\nFileModule::FileModule(Mode mode, Track *track, File *fh, bool canSeek) :\n\tm_mode(mode),\n\tm_track(track),\n\tm_fh(fh),\n\tm_canSeek(canSeek)\n{\n\ttrack->fpos_next_frame = track->fpos_first_frame;\n\ttrack->frames2ignore = 0;\n}\n\nssize_t FileModule::read(void *data, size_t nbytes)\n{\n\tssize_t bytesRead = m_fh->read(data, nbytes);\n\tif (bytesRead > 0)\n\t{\n\t\tm_track->fpos_next_frame += bytesRead;\n\t}\n\treturn bytesRead;\n}\n\nssize_t FileModule::write(const void *data, size_t nbytes)\n{\n\tssize_t bytesWritten = m_fh->write(data, nbytes);\n\tif (bytesWritten > 0)\n\t{\n\t\tm_track->fpos_next_frame += bytesWritten;\n\t\tm_track->data_size += bytesWritten;\n\t}\n\treturn bytesWritten;\n}\n\noff_t FileModule::seek(off_t offset)\n{\n\treturn m_fh->seek(offset, File::SeekFromBeginning);\n}\n\noff_t FileModule::tell()\n{\n\treturn m_fh->tell();\n}\n\noff_t FileModule::length()\n{\n\treturn m_fh->length();\n}\n\nvoid FileModule::reportReadError(AFframecount framesRead,\n\tAFframecount framesToRead)\n{\n\t// Report error if we haven't already.\n\tif (!m_track->filemodhappy)\n\t\treturn;\n\n\t_af_error(AF_BAD_READ,\n\t\t\"file missing data -- read %jd frames, should be %jd\",\n\t\tstatic_cast<intmax_t>(m_track->nextfframe),\n\t\tstatic_cast<intmax_t>(m_track->totalfframes));\n\tm_track->filemodhappy = false;\n}\n\nvoid FileModule::reportWriteError(AFframecount framesWritten,\n\tAFframecount framesToWrite)\n{\n\t// Report error if we haven't already.\n\tif (!m_track->filemodhappy)\n\t\treturn;\n\n\tif (framesWritten < 0)\n\t{\n\t\t// Signal I/O error.\n\t\t_af_error(AF_BAD_WRITE,\n\t\t\t\"unable to write data (%s) -- wrote %jd out of %jd frames\",\n\t\t\tstrerror(errno),\n\t\t\tstatic_cast<intmax_t>(m_track->nextfframe),\n\t\t\tstatic_cast<intmax_t>(m_track->nextfframe + framesToWrite));\n\t}\n\telse\n\t{\n\t\t// Signal disk full error.\n\t\t_af_error(AF_BAD_WRITE,\n\t\t\t\"unable to write data (disk full) -- \"\n\t\t\t\"wrote %jd out of %jd frames\",\n\t\t\tstatic_cast<intmax_t>(m_track->nextfframe + framesWritten),\n\t\t\tstatic_cast<intmax_t>(m_track->nextfframe + framesToWrite));\n\t}\n\n\tm_track->filemodhappy = false;\n}\n\nint FileModule::bufferSize() const\n{\n\tif (mode() == Compress)\n\t\treturn outChunk()->frameCount * inChunk()->f.bytesPerFrame(true);\n\telse\n\t\treturn inChunk()->frameCount * outChunk()->f.bytesPerFrame(true);\n}\n\n// file: modules/G711.h\n/*\n\tAudio File Library\n\tCopyright (C) 2000, Silicon Graphics, Inc.\n\tCopyright (C) 2010, Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\tg711.h\n*/\n\n#ifndef MODULES_G711_H\n#define MODULES_G711_H\n\n\nclass File;\nclass FileModule;\nstruct AudioFormat;\nstruct Track;\n\nbool _af_g711_format_ok (AudioFormat *f);\n\nFileModule *_AFg711initcompress (Track *, File *, bool canSeek,\n\tbool headerless, AFframecount *chunkframes);\n\nFileModule *_AFg711initdecompress (Track *, File *, bool canSeek,\n\tbool headerless, AFframecount *chunkframes);\n\n#endif /* MODULES_G711_H */\n\n// file: modules/G711.cpp\n/*\n\tAudio File Library\n\tCopyright (C) 2000-2001, Silicon Graphics, Inc.\n\tCopyright (C) 2010-2013, Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n\n#include <assert.h>\n\n\n\nstatic void ulaw2linear_buf (const uint8_t *ulaw, int16_t *linear, int nsamples)\n{\n\tfor (int i=0; i < nsamples; i++)\n\t\tlinear[i] = _af_ulaw2linear(ulaw[i]);\n}\n\nstatic void linear2ulaw_buf (const int16_t *linear, uint8_t *ulaw, int nsamples)\n{\n\tfor (int i=0; i < nsamples; i++)\n\t\tulaw[i] = _af_linear2ulaw(linear[i]);\n}\n\nstatic void alaw2linear_buf (const uint8_t *alaw, int16_t *linear, int nsamples)\n{\n\tfor (int i=0; i < nsamples; i++)\n\t\tlinear[i] = _af_alaw2linear(alaw[i]);\n}\n\nstatic void linear2alaw_buf (const int16_t *linear, uint8_t *alaw, int nsamples)\n{\n\tfor (int i=0; i < nsamples; i++)\n\t\talaw[i] = _af_linear2alaw(linear[i]);\n}\n\nbool _af_g711_format_ok (AudioFormat *f)\n{\n\tif (f->sampleFormat != AF_SAMPFMT_TWOSCOMP || f->sampleWidth != 16)\n\t{\n\t\t_af_error(AF_BAD_COMPRESSION,\n\t\t       \"G.711 compression requires 16-bit signed integer format\");\n\t\treturn false;\n\t}\n\n\tif (f->byteOrder != _AF_BYTEORDER_NATIVE)\n\t{\n\t\t_af_error(AF_BAD_COMPRESSION,\n\t\t\t\"G.711 compression requires native byte order\");\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\nclass G711 : public FileModule\n{\npublic:\n\tstatic G711 *createCompress(Track *trk, File *fh, bool canSeek,\n\t\tbool headerless, AFframecount *chunkframes);\n\tstatic G711 *createDecompress(Track *trk, File *fh, bool canSeek,\n\t\tbool headerless, AFframecount *chunkframes);\n\n\tvirtual const char *name() const OVERRIDE\n\t{\n\t\treturn mode() == Compress ? \"g711compress\" : \"g711decompress\";\n\t}\n\tvirtual void describe() OVERRIDE;\n\tvirtual void runPull() OVERRIDE;\n\tvirtual void reset2() OVERRIDE;\n\tvirtual void runPush() OVERRIDE;\n\tvirtual void sync1() OVERRIDE;\n\tvirtual void sync2() OVERRIDE;\n\nprivate:\n\tG711(Mode mode, Track *track, File *fh, bool canSeek);\n\n\tAFfileoffset m_savedPositionNextFrame;\n\tAFframecount m_savedNextFrame;\n};\n\nG711::G711(Mode mode, Track *track, File *fh, bool canSeek) :\n\tFileModule(mode, track, fh, canSeek),\n\tm_savedPositionNextFrame(-1),\n\tm_savedNextFrame(-1)\n{\n\tif (mode == Decompress)\n\t\ttrack->f.compressionParams = AU_NULL_PVLIST;\n}\n\nG711 *G711::createCompress(Track *track, File *fh,\n\tbool canSeek, bool headerless, AFframecount *chunkframes)\n{\n\treturn new G711(Compress, track, fh, canSeek);\n}\n\nvoid G711::runPush()\n{\n\tAFframecount framesToWrite = m_inChunk->frameCount;\n\tAFframecount samplesToWrite = m_inChunk->frameCount * m_inChunk->f.channelCount;\n\tint framesize = m_inChunk->f.channelCount;\n\n\tassert(m_track->f.compressionType == AF_COMPRESSION_G711_ULAW ||\n\t\tm_track->f.compressionType == AF_COMPRESSION_G711_ALAW);\n\n\t/* Compress frames into i->outc. */\n\n\tif (m_track->f.compressionType == AF_COMPRESSION_G711_ULAW)\n\t\tlinear2ulaw_buf(static_cast<const int16_t *>(m_inChunk->buffer),\n\t\t\tstatic_cast<uint8_t *>(m_outChunk->buffer), samplesToWrite);\n\telse\n\t\tlinear2alaw_buf(static_cast<const int16_t *>(m_inChunk->buffer),\n\t\t\tstatic_cast<uint8_t *>(m_outChunk->buffer), samplesToWrite);\n\n\t/* Write the compressed data. */\n\n\tssize_t bytesWritten = write(m_outChunk->buffer, framesize * framesToWrite);\n\tAFframecount framesWritten = bytesWritten >= 0 ? bytesWritten / framesize : 0;\n\n\tif (framesWritten != framesToWrite)\n\t\treportWriteError(framesWritten, framesToWrite);\n\n\tm_track->nextfframe += framesWritten;\n\tm_track->totalfframes = m_track->nextfframe;\n\n\tassert(!canSeek() || (tell() == m_track->fpos_next_frame));\n}\n\nvoid G711::sync1()\n{\n\tm_savedPositionNextFrame = m_track->fpos_next_frame;\n\tm_savedNextFrame = m_track->nextfframe;\n}\n\nvoid G711::sync2()\n{\n\t/* sanity check. */\n\tassert(!canSeek() || (tell() == m_track->fpos_next_frame));\n\n\t/* We can afford to do an lseek just in case because sync2 is rare. */\n\tm_track->fpos_after_data = tell();\n\n\tm_track->fpos_next_frame = m_savedPositionNextFrame;\n\tm_track->nextfframe = m_savedNextFrame;\n}\n\nvoid G711::describe()\n{\n\tif (mode() == Compress)\n\t{\n\t\tm_outChunk->f.compressionType = m_track->f.compressionType;\n\t}\n\telse\n\t{\n\t\tm_outChunk->f.byteOrder = _AF_BYTEORDER_NATIVE;\n\t\tm_outChunk->f.compressionType = AF_COMPRESSION_NONE;\n\t}\n}\n\nG711 *G711::createDecompress(Track *track, File *fh,\n\tbool canSeek, bool headerless, AFframecount *chunkframes)\n{\n\treturn new G711(Decompress, track, fh, canSeek);\n}\n\nvoid G711::runPull()\n{\n\tAFframecount framesToRead = m_outChunk->frameCount;\n\tAFframecount samplesToRead = m_outChunk->frameCount * m_outChunk->f.channelCount;\n\tint framesize = m_outChunk->f.channelCount;\n\n\t/* Read the compressed frames. */\n\n\tssize_t bytesRead = read(m_inChunk->buffer, framesize * framesToRead);\n\tAFframecount framesRead = bytesRead >= 0 ? bytesRead / framesize : 0;\n\n\t/* Decompress into i->outc. */\n\n\tif (m_track->f.compressionType == AF_COMPRESSION_G711_ULAW)\n\t\tulaw2linear_buf(static_cast<const uint8_t *>(m_inChunk->buffer),\n\t\t\tstatic_cast<int16_t *>(m_outChunk->buffer), samplesToRead);\n\telse\n\t\talaw2linear_buf(static_cast<const uint8_t *>(m_inChunk->buffer),\n\t\t\tstatic_cast<int16_t *>(m_outChunk->buffer), samplesToRead);\n\n\tm_track->nextfframe += framesRead;\n\tassert(!canSeek() || (tell() == m_track->fpos_next_frame));\n\n\t/*\n\t\tIf we got EOF from read, then we return the actual amount read.\n\n\t\tComplain only if there should have been more frames in the file.\n\t*/\n\n\tif (m_track->totalfframes != -1 && framesRead != framesToRead)\n\t\treportReadError(framesRead, framesToRead);\n\n\tm_outChunk->frameCount = framesRead;\n}\n\nvoid G711::reset2()\n{\n\tint framesize = m_inChunk->f.channelCount;\n\n\tm_track->fpos_next_frame = m_track->fpos_first_frame +\n\t\tframesize * m_track->nextfframe;\n\n\tm_track->frames2ignore = 0;\n}\n\nFileModule *_AFg711initcompress(Track *track, File *fh, bool canSeek,\n\tbool headerless, AFframecount *chunkFrames)\n{\n\treturn G711::createCompress(track, fh, canSeek, headerless, chunkFrames);\n}\n\nFileModule *_AFg711initdecompress(Track *track, File *fh, bool canSeek,\n\tbool headerless, AFframecount *chunkFrames)\n{\n\treturn G711::createDecompress(track, fh, canSeek, headerless, chunkFrames);\n}\n\n// file: modules/Module.cpp\n/*\n\tAudio File Library\n\tCopyright (C) 2000, Silicon Graphics, Inc.\n\tCopyright (C) 2010, Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n\n\nModule::Module() :\n\tm_sink(NULL)\n{\n}\n\nModule::~Module()\n{\n}\n\nvoid Module::setSink(Module *module) { m_sink = module; }\nvoid Module::setSource(Module *module) { m_source = module; }\n\nconst char *Module::name() const { return \"\"; }\n\nvoid Module::describe()\n{\n}\n\nvoid Module::maxPull()\n{\n\tm_inChunk->frameCount = m_outChunk->frameCount;\n}\n\nvoid Module::maxPush()\n{\n\tm_outChunk->frameCount = m_inChunk->frameCount;\n}\n\nvoid Module::runPull()\n{\n}\n\nvoid Module::runPush()\n{\n}\n\nvoid Module::pull(size_t frames)\n{\n\tm_inChunk->frameCount = frames;\n\tm_source->runPull();\n}\n\nvoid Module::push(size_t frames)\n{\n\tm_outChunk->frameCount = frames;\n\tm_sink->runPush();\n}\n\n// file: modules/ModuleState.cpp\n/*\n\tAudio File Library\n\tCopyright (C) 2000, Silicon Graphics, Inc.\n\tCopyright (C) 2010-2013, Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n\n\n#include <algorithm>\n#include <cassert>\n#include <cmath>\n#include <functional>\n#include <stdio.h>\n\nModuleState::ModuleState() :\n\tm_isDirty(true)\n{\n}\n\nModuleState::~ModuleState()\n{\n}\n\nstatus ModuleState::initFileModule(AFfilehandle file, Track *track)\n{\n\tconst CompressionUnit *unit = _af_compression_unit_from_id(track->f.compressionType);\n\tif (!unit)\n\t\treturn AF_FAIL;\n\n\t// Validate compression format and parameters.\n\tif (!unit->fmtok(&track->f))\n\t\treturn AF_FAIL;\n\n\tif (file->m_seekok &&\n\t\tfile->m_fh->seek(track->fpos_first_frame, File::SeekFromBeginning) !=\n\t\t\ttrack->fpos_first_frame)\n\t{\n\t\t_af_error(AF_BAD_LSEEK, \"unable to position file handle at beginning of sound data\");\n\t\treturn AF_FAIL;\n\t}\n\n\tAFframecount chunkFrames;\n\tif (file->m_access == _AF_READ_ACCESS)\n\t\tm_fileModule = unit->initdecompress(track, file->m_fh, file->m_seekok,\n\t\t\tfile->m_fileFormat == AF_FILE_RAWDATA, &chunkFrames);\n\telse\n\t\tm_fileModule = unit->initcompress(track, file->m_fh, file->m_seekok,\n\t\t\tfile->m_fileFormat == AF_FILE_RAWDATA, &chunkFrames);\n\n\tif (unit->needsRebuffer)\n\t{\n\t\tassert(unit->nativeSampleFormat == AF_SAMPFMT_TWOSCOMP);\n\n\t\tRebufferModule::Direction direction =\n\t\t\tfile->m_access == _AF_WRITE_ACCESS ?\n\t\t\t\tRebufferModule::VariableToFixed : RebufferModule::FixedToVariable;\n\n\t\tm_fileRebufferModule = new RebufferModule(direction,\n\t\t\ttrack->f.bytesPerFrame(false), chunkFrames,\n\t\t\tunit->multiple_of);\n\t}\n\n\ttrack->filemodhappy = true;\n\n\treturn AF_SUCCEED;\n}\n\nstatus ModuleState::init(AFfilehandle file, Track *track)\n{\n\tif (initFileModule(file, track) == AF_FAIL)\n\t\treturn AF_FAIL;\n\n\treturn AF_SUCCEED;\n}\n\nbool ModuleState::fileModuleHandlesSeeking() const\n{\n\treturn m_fileModule->handlesSeeking();\n}\n\nstatus ModuleState::setup(AFfilehandle file, Track *track)\n{\n\tAFframecount fframepos = std::llrint(track->nextvframe * track->f.sampleRate / track->v.sampleRate);\n\tbool isReading = file->m_access == _AF_READ_ACCESS;\n\n\tif (!track->v.isUncompressed())\n\t{\n\t\t_af_error(AF_BAD_NOT_IMPLEMENTED,\n\t\t\t\"library does not support compression in virtual format yet\");\n\t\treturn AF_FAIL;\n\t}\n\n\tif (arrange(file, track) == AF_FAIL)\n\t\treturn AF_FAIL;\n\n\ttrack->filemodhappy = true;\n\tint maxbufsize = 0;\n\tif (isReading)\n\t{\n\t\tm_chunks.back()->frameCount = _AF_ATOMIC_NVFRAMES;\n\t\tfor (int i=m_modules.size() - 1; i >= 0; i--)\n\t\t{\n\t\t\tSharedPtr<Chunk> inChunk = m_chunks[i];\n\t\t\tSharedPtr<Chunk> outChunk = m_chunks[i+1];\n\t\t\tint bufsize = outChunk->frameCount * outChunk->f.bytesPerFrame(true);\n\t\t\tif (bufsize > maxbufsize)\n\t\t\t\tmaxbufsize = bufsize;\n\t\t\tif (i != 0)\n\t\t\t\tm_modules[i]->setSource(m_modules[i-1].get());\n\t\t\tm_modules[i]->maxPull();\n\t\t}\n\n\t\tif (!track->filemodhappy)\n\t\t\treturn AF_FAIL;\n\t\tint bufsize = m_fileModule->bufferSize();\n\t\tif (bufsize > maxbufsize)\n\t\t\tmaxbufsize = bufsize;\n\t}\n\telse\n\t{\n\t\tm_chunks.front()->frameCount = _AF_ATOMIC_NVFRAMES;\n\t\tfor (size_t i=0; i<m_modules.size(); i++)\n\t\t{\n\t\t\tSharedPtr<Chunk> inChunk = m_chunks[i];\n\t\t\tSharedPtr<Chunk> outChunk = m_chunks[i+1];\n\t\t\tint bufsize = inChunk->frameCount * inChunk->f.bytesPerFrame(true);\n\t\t\tif (bufsize > maxbufsize)\n\t\t\t\tmaxbufsize = bufsize;\n\t\t\tif (i != m_modules.size() - 1)\n\t\t\t\tm_modules[i]->setSink(m_modules[i+1].get());\n\t\t\tm_modules[i]->maxPush();\n\t\t}\n\n\t\tif (!track->filemodhappy)\n\t\t\treturn AF_FAIL;\n\n\t\tint bufsize = m_fileModule->bufferSize();\n\t\tif (bufsize > maxbufsize)\n\t\t\tmaxbufsize = bufsize;\n\t}\n\n\tfor (size_t i=0; i<m_chunks.size(); i++)\n\t{\n\t\tif ((isReading && i==m_chunks.size() - 1) || (!isReading && i==0))\n\t\t\tcontinue;\n\t\tm_chunks[i]->allocate(maxbufsize);\n\t}\n\n\tif (isReading)\n\t{\n\t\tif (track->totalfframes == -1)\n\t\t\ttrack->totalvframes = -1;\n\t\telse\n\t\t\ttrack->totalvframes = std::llrint(track->totalfframes *\n\t\t\t\t(track->v.sampleRate / track->f.sampleRate));\n\n\t\ttrack->nextfframe = fframepos;\n\t\ttrack->nextvframe = std::llrint(fframepos * track->v.sampleRate / track->f.sampleRate);\n\n\t\tm_isDirty = false;\n\n\t\tif (reset(file, track) == AF_FAIL)\n\t\t\treturn AF_FAIL;\n\t}\n\telse\n\t{\n\t\ttrack->nextvframe = track->totalvframes =\n\t\t\t(AFframecount) (fframepos * track->v.sampleRate / track->f.sampleRate);\n\t\tm_isDirty = false;\n\t}\n\n\treturn AF_SUCCEED;\n}\n\nconst std::vector<SharedPtr<Module> > &ModuleState::modules() const\n{\n\treturn m_modules;\n}\n\nconst std::vector<SharedPtr<Chunk> > &ModuleState::chunks() const\n{\n\treturn m_chunks;\n}\n\nstatus ModuleState::reset(AFfilehandle file, Track *track)\n{\n\ttrack->filemodhappy = true;\n\tfor (std::vector<SharedPtr<Module> >::reverse_iterator i=m_modules.rbegin();\n\t\t\ti != m_modules.rend(); ++i)\n\t\t(*i)->reset1();\n\ttrack->frames2ignore = 0;\n\tif (!track->filemodhappy)\n\t\treturn AF_FAIL;\n\tfor (std::vector<SharedPtr<Module> >::iterator i=m_modules.begin();\n\t\t\ti != m_modules.end(); ++i)\n\t\t(*i)->reset2();\n\tif (!track->filemodhappy)\n\t\treturn AF_FAIL;\n\treturn AF_SUCCEED;\n}\n\nstatus ModuleState::sync(AFfilehandle file, Track *track)\n{\n\ttrack->filemodhappy = true;\n\tfor (std::vector<SharedPtr<Module> >::reverse_iterator i=m_modules.rbegin();\n\t\t\ti != m_modules.rend(); ++i)\n\t\t(*i)->sync1();\n\tif (!track->filemodhappy)\n\t\treturn AF_FAIL;\n\tfor (std::vector<SharedPtr<Module> >::iterator i=m_modules.begin();\n\t\t\ti != m_modules.end(); ++i)\n\t\t(*i)->sync2();\n\treturn AF_SUCCEED;\n}\n\nstatic const PCMInfo * const intmappings[6] =\n{\n\t&_af_default_signed_integer_pcm_mappings[1],\n\t&_af_default_signed_integer_pcm_mappings[2],\n\t&_af_default_signed_integer_pcm_mappings[3],\n\t&_af_default_signed_integer_pcm_mappings[4],\n\tNULL,\n\tNULL\n};\n\nstatic FormatCode getFormatCode(const AudioFormat &format)\n{\n\tif (format.sampleFormat == AF_SAMPFMT_FLOAT)\n\t\treturn kFloat;\n\tif (format.sampleFormat == AF_SAMPFMT_DOUBLE)\n\t\treturn kDouble;\n\tif (format.isInteger())\n\t{\n\t\tswitch (format.bytesPerSample(false))\n\t\t{\n\t\t\tcase 1: return kInt8;\n\t\t\tcase 2: return kInt16;\n\t\t\tcase 3: return kInt24;\n\t\t\tcase 4: return kInt32;\n\t\t}\n\t}\n\n\t/* NOTREACHED */\n\tassert(false);\n\treturn kUndefined;\n}\n\nstatic bool isInteger(FormatCode code) { return code >= kInt8 && code <= kInt32; }\nstatic bool isFloat(FormatCode code) { return code >= kFloat && code <= kDouble; }\n\nstatic bool isTrivialIntMapping(const AudioFormat &format, FormatCode code)\n{\n\treturn intmappings[code] != NULL &&\n\t\tformat.pcm.slope == intmappings[code]->slope &&\n\t\tformat.pcm.intercept == intmappings[code]->intercept;\n}\n\nstatic bool isTrivialIntClip(const AudioFormat &format, FormatCode code)\n{\n\treturn intmappings[code] != NULL &&\n\t\tformat.pcm.minClip == intmappings[code]->minClip &&\n\t\tformat.pcm.maxClip == intmappings[code]->maxClip;\n}\n\nstatus ModuleState::arrange(AFfilehandle file, Track *track)\n{\n\tbool isReading = file->m_access == _AF_READ_ACCESS;\n\tAudioFormat in, out;\n\tif (isReading)\n\t{\n\t\tin = track->f;\n\t\tout = track->v;\n\t}\n\telse\n\t{\n\t\tin = track->v;\n\t\tout = track->f;\n\t}\n\n\tFormatCode infc = getFormatCode(in);\n\tFormatCode outfc = getFormatCode(out);\n\tif (infc == kUndefined || outfc == kUndefined)\n\t\treturn AF_FAIL;\n\n\tm_chunks.clear();\n\tm_chunks.push_back(new Chunk());\n\tm_chunks.back()->f = in;\n\n\tm_modules.clear();\n\n\tif (isReading)\n\t{\n\t\taddModule(m_fileModule.get());\n\t\taddModule(m_fileRebufferModule.get());\n\t}\n\n\t// Convert to native byte order.\n\tif (in.byteOrder != _AF_BYTEORDER_NATIVE)\n\t{\n\t\tsize_t bytesPerSample = in.bytesPerSample(!isReading);\n\t\tif (bytesPerSample > 1 && in.compressionType == AF_COMPRESSION_NONE)\n\t\t\taddModule(new SwapModule());\n\t\telse\n\t\t\tin.byteOrder = _AF_BYTEORDER_NATIVE;\n\t}\n\n\t// Handle 24-bit integer input format.\n\tif (in.isInteger() && in.bytesPerSample(false) == 3)\n\t{\n\t\tif (isReading || in.compressionType != AF_COMPRESSION_NONE)\n\t\t\taddModule(new Expand3To4Module(in.isSigned()));\n\t}\n\n\t// Make data signed.\n\tif (in.isUnsigned())\n\t\taddModule(new ConvertSign(infc, false));\n\n\tin.pcm = m_chunks.back()->f.pcm;\n\n\t// Reverse the unsigned shift for output.\n\tif (out.isUnsigned())\n\t{\n\t\tconst double shift = intmappings[outfc]->minClip;\n\t\tout.pcm.intercept += shift;\n\t\tout.pcm.minClip += shift;\n\t\tout.pcm.maxClip += shift;\n\t}\n\n\t// Clip input samples if necessary.\n\tif (in.pcm.minClip < in.pcm.maxClip && !isTrivialIntClip(in, infc))\n\t\taddModule(new Clip(infc, in.pcm));\n\n\tbool alreadyClippedOutput = false;\n\tbool alreadyTransformedOutput = false;\n\t// Perform range transformation if input and output PCM mappings differ.\n\tbool transforming = (in.pcm.slope != out.pcm.slope ||\n\t\tin.pcm.intercept != out.pcm.intercept) &&\n\t\t!(isTrivialIntMapping(in, infc) &&\n\t\tisTrivialIntMapping(out, outfc));\n\n\t// Range transformation requires input to be floating-point.\n\tif (isInteger(infc) && transforming)\n\t{\n\t\tif (infc == kInt32 || outfc == kDouble || outfc == kInt32)\n\t\t{\n\t\t\taddConvertIntToFloat(infc, kDouble);\n\t\t\tinfc = kDouble;\n\t\t}\n\t\telse\n\t\t{\n\t\t\taddConvertIntToFloat(infc, kFloat);\n\t\t\tinfc = kFloat;\n\t\t}\n\t}\n\n\tif (transforming && infc == kDouble && isFloat(outfc))\n\t\taddModule(new Transform(infc, in.pcm, out.pcm));\n\n\t// Add format conversion if needed.\n\tif (isInteger(infc) && isInteger(outfc))\n\t\taddConvertIntToInt(infc, outfc);\n\telse if (isInteger(infc) && isFloat(outfc))\n\t\taddConvertIntToFloat(infc, outfc);\n\telse if (isFloat(infc) && isInteger(outfc))\n\t{\n\t\taddConvertFloatToInt(infc, outfc, in.pcm, out.pcm);\n\t\talreadyClippedOutput = true;\n\t\talreadyTransformedOutput = true;\n\t}\n\telse if (isFloat(infc) && isFloat(outfc))\n\t\taddConvertFloatToFloat(infc, outfc);\n\n\tif (transforming && !alreadyTransformedOutput && infc != kDouble)\n\t\taddModule(new Transform(outfc, in.pcm, out.pcm));\n\n\tif (in.channelCount != out.channelCount)\n\t\taddModule(new ApplyChannelMatrix(outfc, isReading,\n\t\t\tin.channelCount, out.channelCount,\n\t\t\tin.pcm.minClip, in.pcm.maxClip,\n\t\t\ttrack->channelMatrix));\n\n\t// Perform clipping if necessary.\n\tif (!alreadyClippedOutput)\n\t{\n\t\tif (out.pcm.minClip < out.pcm.maxClip && !isTrivialIntClip(out, outfc))\n\t\t\taddModule(new Clip(outfc, out.pcm));\n\t}\n\n\t// Make data unsigned if necessary.\n\tif (out.isUnsigned())\n\t\taddModule(new ConvertSign(outfc, true));\n\n\t// Handle 24-bit integer output format.\n\tif (out.isInteger() && out.bytesPerSample(false) == 3)\n\t{\n\t\tif (!isReading || out.compressionType != AF_COMPRESSION_NONE)\n\t\t\taddModule(new Compress4To3Module(out.isSigned()));\n\t}\n\n\tif (out.byteOrder != _AF_BYTEORDER_NATIVE)\n\t{\n\t\tsize_t bytesPerSample = out.bytesPerSample(isReading);\n\t\tif (bytesPerSample > 1 && out.compressionType == AF_COMPRESSION_NONE)\n\t\t\taddModule(new SwapModule());\n\t\telse\n\t\t\tout.byteOrder = _AF_BYTEORDER_NATIVE;\n\t}\n\n\tif (!isReading)\n\t{\n\t\taddModule(m_fileRebufferModule.get());\n\t\taddModule(m_fileModule.get());\n\t}\n\n\treturn AF_SUCCEED;\n}\n\nvoid ModuleState::addModule(Module *module)\n{\n\tif (!module)\n\t\treturn;\n\n\tm_modules.push_back(module);\n\tmodule->setInChunk(m_chunks.back().get());\n\tChunk *chunk = new Chunk();\n\tchunk->f = m_chunks.back()->f;\n\tm_chunks.push_back(chunk);\n\tmodule->setOutChunk(chunk);\n\tmodule->describe();\n}\n\nvoid ModuleState::addConvertIntToInt(FormatCode input, FormatCode output)\n{\n\tif (input == output)\n\t\treturn;\n\n\tassert(isInteger(input));\n\tassert(isInteger(output));\n\taddModule(new ConvertInt(input, output));\n}\n\nvoid ModuleState::addConvertIntToFloat(FormatCode input, FormatCode output)\n{\n\taddModule(new ConvertIntToFloat(input, output));\n}\n\nvoid ModuleState::addConvertFloatToInt(FormatCode input, FormatCode output,\n\tconst PCMInfo &inputMapping, const PCMInfo &outputMapping)\n{\n\taddModule(new ConvertFloatToIntClip(input, output, inputMapping, outputMapping));\n}\n\nvoid ModuleState::addConvertFloatToFloat(FormatCode input, FormatCode output)\n{\n\tif (input == output)\n\t\treturn;\n\n\tassert((input == kFloat && output == kDouble) ||\n\t\t(input == kDouble && output == kFloat));\n\taddModule(new ConvertFloat(input, output));\n}\n\nvoid ModuleState::print()\n{\n\tfprintf(stderr, \"modules:\\n\");\n\tfor (size_t i=0; i<m_modules.size(); i++)\n\t\tfprintf(stderr, \" %s (%p) in %p out %p\\n\",\n\t\t\tm_modules[i]->name(), m_modules[i].get(),\n\t\t\tm_modules[i]->inChunk(),\n\t\t\tm_modules[i]->outChunk());\n\tfprintf(stderr, \"chunks:\\n\");\n\tfor (size_t i=0; i<m_chunks.size(); i++)\n\t\tfprintf(stderr, \" %p %s\\n\",\n\t\t\tm_chunks[i].get(),\n\t\t\tm_chunks[i]->f.description().c_str());\n}\n\n// file: modules/MSADPCM.h\n/*\n\tAudio File Library\n\tCopyright (C) 2001, Silicon Graphics, Inc.\n\tCopyright (C) 2010, Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\tmsadpcm.h\n\n\tThis module declares the interface for the Microsoft ADPCM\n\tcompression module.\n*/\n\n#ifndef MSADPCM_H\n#define MSADPCM_H\n\n\nclass File;\nclass FileModule;\nstruct AudioFormat;\nstruct Track;\n\nbool _af_ms_adpcm_format_ok (AudioFormat *f);\n\nFileModule *_af_ms_adpcm_init_decompress(Track *, File *,\n\tbool canSeek, bool headerless, AFframecount *chunkframes);\n\nFileModule *_af_ms_adpcm_init_compress(Track *, File *,\n\tbool canSeek, bool headerless, AFframecount *chunkframes);\n\n#endif\n\n// file: modules/MSADPCM.cpp\n/*\n\tAudio File Library\n\tCopyright (C) 2010-2013, Michael Pruett <michael@68k.org>\n\tCopyright (C) 2001, Silicon Graphics, Inc.\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\tThis module implements Microsoft ADPCM compression.\n*/\n\n\n#include <assert.h>\n#include <cstdlib>\n#include <limits>\n#include <string.h>\n\n\nstruct ms_adpcm_state\n{\n\tuint8_t predictorIndex;\n\tint delta;\n\tint16_t sample1, sample2;\n\n\tms_adpcm_state()\n\t{\n\t\tpredictorIndex = 0;\n\t\tdelta = 16;\n\t\tsample1 = 0;\n\t\tsample2 = 0;\n\t}\n};\n\nclass MSADPCM : public BlockCodec\n{\npublic:\n\tstatic MSADPCM *createDecompress(Track *, File *, bool canSeek,\n\t\tbool headerless, AFframecount *chunkFrames);\n\tstatic MSADPCM *createCompress(Track *, File *, bool canSeek,\n\t\tbool headerless, AFframecount *chunkFrames);\n\n\tvirtual ~MSADPCM();\n\n\tbool initializeCoefficients();\n\n\tvirtual const char *name() const OVERRIDE\n\t{\n\t\treturn mode() == Compress ? \"ms_adpcm_compress\" : \"ms_adpcm_decompress\";\n\t}\n\tvirtual void describe() OVERRIDE;\n\nprivate:\n\t// m_coefficients is an array of m_numCoefficients ADPCM coefficient pairs.\n\tint m_numCoefficients;\n\tint16_t m_coefficients[256][2];\n\n\tms_adpcm_state *m_state;\n\n\tMSADPCM(Mode mode, Track *track, File *fh, bool canSeek);\n\n\tint decodeBlock(const uint8_t *encoded, int16_t *decoded) OVERRIDE;\n\tint encodeBlock(const int16_t *decoded, uint8_t *encoded) OVERRIDE;\n\tvoid choosePredictorForBlock(const int16_t *decoded);\n};\n\nstatic inline int clamp(int x, int low, int high)\n{\n\tif (x < low) return low;\n\tif (x > high) return high;\n\treturn x;\n}\n\nstatic const int16_t adaptationTable[] =\n{\n\t230, 230, 230, 230, 307, 409, 512, 614,\n\t768, 614, 512, 409, 307, 230, 230, 230\n};\n\n// Compute a linear PCM value from the given differential coded value.\nstatic int16_t decodeSample(ms_adpcm_state &state,\n\tuint8_t code, const int16_t *coefficient)\n{\n\tint linearSample = (state.sample1 * coefficient[0] +\n\t\tstate.sample2 * coefficient[1]) >> 8;\n\n\tlinearSample += ((code & 0x08) ? (code - 0x10) : code) * state.delta;\n\n\tlinearSample = clamp(linearSample, MIN_INT16, MAX_INT16);\n\n\tint delta = (state.delta * adaptationTable[code]) >> 8;\n\tif (delta < 16)\n\t\tdelta = 16;\n\n\tstate.delta = delta;\n\tstate.sample2 = state.sample1;\n\tstate.sample1 = linearSample;\n\n\treturn static_cast<int16_t>(linearSample);\n}\n\n// Compute a differential coded value from the given linear PCM sample.\nstatic uint8_t encodeSample(ms_adpcm_state &state, int16_t sample,\n\tconst int16_t *coefficient)\n{\n\tint predictor = (state.sample1 * coefficient[0] +\n\t\tstate.sample2 * coefficient[1]) >> 8;\n\tint code = sample - predictor;\n\tint bias = state.delta / 2;\n\tif (code < 0)\n\t\tbias = -bias;\n\tcode = (code + bias) / state.delta;\n\tcode = clamp(code, -8, 7) & 0xf;\n\n\tpredictor += ((code & 0x8) ? (code - 0x10) : code) * state.delta;\n\n\tstate.sample2 = state.sample1;\n\tstate.sample1 = clamp(predictor, MIN_INT16, MAX_INT16);\n\tstate.delta = (adaptationTable[code] * state.delta) >> 8;\n\tif (state.delta < 16)\n\t\tstate.delta = 16;\n\treturn code;\n}\n\n// Decode one block of MS ADPCM data.\nint MSADPCM::decodeBlock(const uint8_t *encoded, int16_t *decoded)\n{\n\tms_adpcm_state decoderState[2];\n\tms_adpcm_state *state[2];\n\n\tint channelCount = m_track->f.channelCount;\n\n\t// Calculate the number of bytes needed for decoded data.\n\tint outputLength = m_framesPerPacket * sizeof (int16_t) * channelCount;\n\n\tstate[0] = &decoderState[0];\n\tif (channelCount == 2)\n\t\tstate[1] = &decoderState[1];\n\telse\n\t\tstate[1] = &decoderState[0];\n\n\t// Initialize block predictor.\n\tfor (int i=0; i<channelCount; i++)\n\t{\n\t\tstate[i]->predictorIndex = *encoded++;\n\t\tassert(state[i]->predictorIndex < m_numCoefficients);\n\t}\n\n\t// Initialize delta.\n\tfor (int i=0; i<channelCount; i++)\n\t{\n\t\tstate[i]->delta = (encoded[1]<<8) | encoded[0];\n\t\tencoded += sizeof (uint16_t);\n\t}\n\n\t// Initialize first two samples.\n\tfor (int i=0; i<channelCount; i++)\n\t{\n\t\tstate[i]->sample1 = (encoded[1]<<8) | encoded[0];\n\t\tencoded += sizeof (uint16_t);\n\t}\n\n\tfor (int i=0; i<channelCount; i++)\n\t{\n\t\tstate[i]->sample2 = (encoded[1]<<8) | encoded[0];\n\t\tencoded += sizeof (uint16_t);\n\t}\n\n\tconst int16_t *coefficient[2] =\n\t{\n\t\tm_coefficients[state[0]->predictorIndex],\n\t\tm_coefficients[state[1]->predictorIndex]\n\t};\n\n\tfor (int i=0; i<channelCount; i++)\n\t\t*decoded++ = state[i]->sample2;\n\n\tfor (int i=0; i<channelCount; i++)\n\t\t*decoded++ = state[i]->sample1;\n\n\t/*\n\t\tThe first two samples have already been 'decoded' in\n\t\tthe block header.\n\t*/\n\tint samplesRemaining = (m_framesPerPacket - 2) * m_track->f.channelCount;\n\n\twhile (samplesRemaining > 0)\n\t{\n\t\tuint8_t code;\n\t\tint16_t newSample;\n\n\t\tcode = *encoded >> 4;\n\t\tnewSample = decodeSample(*state[0], code, coefficient[0]);\n\t\t*decoded++ = newSample;\n\n\t\tcode = *encoded & 0x0f;\n\t\tnewSample = decodeSample(*state[1], code, coefficient[1]);\n\t\t*decoded++ = newSample;\n\n\t\tencoded++;\n\t\tsamplesRemaining -= 2;\n\t}\n\n\treturn outputLength;\n}\n\nint MSADPCM::encodeBlock(const int16_t *decoded, uint8_t *encoded)\n{\n\tchoosePredictorForBlock(decoded);\n\n\tint channelCount = m_track->f.channelCount;\n\n\t// Encode predictor.\n\tfor (int c=0; c<channelCount; c++)\n\t\t*encoded++ = m_state[c].predictorIndex;\n\n\t// Encode delta.\n\tfor (int c=0; c<channelCount; c++)\n\t{\n\t\t*encoded++ = m_state[c].delta & 0xff;\n\t\t*encoded++ = m_state[c].delta >> 8;\n\t}\n\n\t// Enccode first two samples.\n\tfor (int c=0; c<channelCount; c++)\n\t\tm_state[c].sample2 = *decoded++;\n\n\tfor (int c=0; c<channelCount; c++)\n\t\tm_state[c].sample1 = *decoded++;\n\n\tfor (int c=0; c<channelCount; c++)\n\t{\n\t\t*encoded++ = m_state[c].sample1 & 0xff;\n\t\t*encoded++ = m_state[c].sample1 >> 8;\n\t}\n\n\tfor (int c=0; c<channelCount; c++)\n\t{\n\t\t*encoded++ = m_state[c].sample2 & 0xff;\n\t\t*encoded++ = m_state[c].sample2 >> 8;\n\t}\n\n\tms_adpcm_state *state[2] = { &m_state[0], &m_state[channelCount - 1] };\n\tconst int16_t *coefficient[2] =\n\t{\n\t\tm_coefficients[state[0]->predictorIndex],\n\t\tm_coefficients[state[1]->predictorIndex]\n\t};\n\n\tint samplesRemaining = (m_framesPerPacket - 2) * m_track->f.channelCount;\n\twhile (samplesRemaining > 0)\n\t{\n\t\tuint8_t code1 = encodeSample(*state[0], *decoded++, coefficient[0]);\n\t\tuint8_t code2 = encodeSample(*state[1], *decoded++, coefficient[1]);\n\n\t\t*encoded++ = (code1 << 4) | code2;\n\t\tsamplesRemaining -= 2;\n\t}\n\n\treturn m_bytesPerPacket;\n}\n\nvoid MSADPCM::choosePredictorForBlock(const int16_t *decoded)\n{\n\tconst int kPredictorSampleLength = 3;\n\n\tint channelCount = m_track->f.channelCount;\n\n\tfor (int c=0; c<channelCount; c++)\n\t{\n\t\tint bestPredictorIndex = 0;\n\t\tint bestPredictorError = std::numeric_limits<int>::max();\n\t\tfor (int k=0; k<m_numCoefficients; k++)\n\t\t{\n\t\t\tint a0 = m_coefficients[k][0];\n\t\t\tint a1 = m_coefficients[k][1];\n\n\t\t\tint currentPredictorError = 0;\n\t\t\tfor (int i=2; i<2+kPredictorSampleLength; i++)\n\t\t\t{\n\t\t\t\tint error = std::abs(decoded[i*channelCount + c] -\n\t\t\t\t\t((a0 * decoded[(i-1)*channelCount + c] +\n\t\t\t\t\ta1 * decoded[(i-2)*channelCount + c]) >> 8));\n\t\t\t\tcurrentPredictorError += error;\n\t\t\t}\n\n\t\t\tcurrentPredictorError /= 4 * kPredictorSampleLength;\n\n\t\t\tif (currentPredictorError < bestPredictorError)\n\t\t\t{\n\t\t\t\tbestPredictorError = currentPredictorError;\n\t\t\t\tbestPredictorIndex = k;\n\t\t\t}\n\n\t\t\tif (!currentPredictorError)\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (bestPredictorError < 16)\n\t\t\tbestPredictorError = 16;\n\n\t\tm_state[c].predictorIndex = bestPredictorIndex;\n\t\tm_state[c].delta = bestPredictorError;\n\t}\n}\n\nvoid MSADPCM::describe()\n{\n\tm_outChunk->f.byteOrder = _AF_BYTEORDER_NATIVE;\n\tm_outChunk->f.compressionType = AF_COMPRESSION_NONE;\n\tm_outChunk->f.compressionParams = AU_NULL_PVLIST;\n}\n\nMSADPCM::MSADPCM(Mode mode, Track *track, File *fh, bool canSeek) :\n\tBlockCodec(mode, track, fh, canSeek),\n\tm_numCoefficients(0),\n\tm_state(NULL)\n{\n\tm_state = new ms_adpcm_state[m_track->f.channelCount];\n}\n\nMSADPCM::~MSADPCM()\n{\n\tdelete [] m_state;\n}\n\nbool MSADPCM::initializeCoefficients()\n{\n\tAUpvlist pv = m_track->f.compressionParams;\n\n\tlong l;\n\tif (_af_pv_getlong(pv, _AF_MS_ADPCM_NUM_COEFFICIENTS, &l))\n\t{\n\t\tm_numCoefficients = l;\n\t}\n\telse\n\t{\n\t\t_af_error(AF_BAD_CODEC_CONFIG, \"number of coefficients not set\");\n\t\treturn false;\n\t}\n\n\tvoid *v;\n\tif (_af_pv_getptr(pv, _AF_MS_ADPCM_COEFFICIENTS, &v))\n\t{\n\t\tmemcpy(m_coefficients, v, m_numCoefficients * 2 * sizeof (int16_t));\n\t}\n\telse\n\t{\n\t\t_af_error(AF_BAD_CODEC_CONFIG, \"coefficient array not set\");\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\nMSADPCM *MSADPCM::createDecompress(Track *track, File *fh,\n\tbool canSeek, bool headerless, AFframecount *chunkFrames)\n{\n\tassert(fh->tell() == track->fpos_first_frame);\n\n\tMSADPCM *msadpcm = new MSADPCM(Decompress, track, fh, canSeek);\n\n\tif (!msadpcm->initializeCoefficients())\n\t{\n\t\tdelete msadpcm;\n\t\treturn NULL;\n\t}\n\n\t*chunkFrames = msadpcm->m_framesPerPacket;\n\n\treturn msadpcm;\n}\n\nMSADPCM *MSADPCM::createCompress(Track *track, File *fh,\n\tbool canSeek, bool headerless, AFframecount *chunkFrames)\n{\n\tassert(fh->tell() == track->fpos_first_frame);\n\n\tMSADPCM *msadpcm = new MSADPCM(Compress, track, fh, canSeek);\n\n\tif (!msadpcm->initializeCoefficients())\n\t{\n\t\tdelete msadpcm;\n\t\treturn NULL;\n\t}\n\n\t*chunkFrames = msadpcm->m_framesPerPacket;\n\n\treturn msadpcm;\n}\n\nbool _af_ms_adpcm_format_ok (AudioFormat *f)\n{\n\tif (f->channelCount != 1 && f->channelCount != 2)\n\t{\n\t\t_af_error(AF_BAD_COMPRESSION,\n\t\t\t\"MS ADPCM compression requires 1 or 2 channels\");\n\t\treturn false;\n\t}\n\n\tif (f->sampleFormat != AF_SAMPFMT_TWOSCOMP || f->sampleWidth != 16)\n\t{\n\t\t_af_error(AF_BAD_COMPRESSION,\n\t\t\t\"MS ADPCM compression requires 16-bit signed integer format\");\n\t\treturn false;\n\t}\n\n\tif (f->byteOrder != _AF_BYTEORDER_NATIVE)\n\t{\n\t\t_af_error(AF_BAD_COMPRESSION,\n\t\t\t\"MS ADPCM compression requires native byte order\");\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\nFileModule *_af_ms_adpcm_init_decompress (Track *track, File *fh,\n\tbool canSeek, bool headerless, AFframecount *chunkFrames)\n{\n\treturn MSADPCM::createDecompress(track, fh, canSeek, headerless, chunkFrames);\n}\n\nFileModule *_af_ms_adpcm_init_compress (Track *track, File *fh,\n\tbool canSeek, bool headerless, AFframecount *chunkFrames)\n{\n\treturn MSADPCM::createCompress(track, fh, canSeek, headerless, chunkFrames);\n}\n\n// file: modules/PCM.h\n/*\n\tAudio File Library\n\tCopyright (C) 2000, Silicon Graphics, Inc.\n\tCopyright (C) 2010, Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\tPCM.h\n*/\n\n#ifndef MODULES_PCM_H\n#define MODULES_PCM_H\n\n\nclass File;\nclass FileModule;\nstruct AudioFormat;\nstruct Track;\n\nbool _af_pcm_format_ok (AudioFormat *f);\n\nFileModule *_AFpcminitcompress(Track *, File *, bool seekok,\n\tbool headerless, AFframecount *chunkframes);\n\nFileModule *_AFpcminitdecompress(Track *, File *, bool seekok,\n\tbool headerless, AFframecount *chunkframes);\n\n#endif /* MODULES_PCM_H */\n\n// file: modules/PCM.cpp\n/*\n\tAudio File Library\n\tCopyright (C) 2000, Silicon Graphics, Inc.\n\tCopyright (C) 2010, Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\tPCM.cpp - read and file write module for uncompressed data\n*/\n\n\n#include <assert.h>\n#include <math.h>\n\n\nbool _af_pcm_format_ok (AudioFormat *f)\n{\n\tassert(!isnan(f->pcm.slope));\n\tassert(!isnan(f->pcm.intercept));\n\tassert(!isnan(f->pcm.minClip));\n\tassert(!isnan(f->pcm.maxClip));\n\n\treturn true;\n}\n\nclass PCM : public FileModule\n{\npublic:\n\tstatic PCM *createCompress(Track *track, File *fh, bool canSeek,\n\t\tbool headerless, AFframecount *chunkFrames);\n\tstatic PCM *createDecompress(Track *track, File *fh, bool canSeek,\n\t\tbool headerless, AFframecount *chunkFrames);\n\n\tvirtual const char *name() const OVERRIDE { return \"pcm\"; }\n\tvirtual void runPull() OVERRIDE;\n\tvirtual void reset2() OVERRIDE;\n\tvirtual void runPush() OVERRIDE;\n\tvirtual void sync1() OVERRIDE;\n\tvirtual void sync2() OVERRIDE;\n\nprivate:\n\tint m_bytesPerFrame;\n\n\t/* saved_fpos_next_frame and saved_nextfframe apply only to writing. */\n\tint m_saved_fpos_next_frame;\n\tint m_saved_nextfframe;\n\n\tPCM(Mode, Track *, File *, bool canSeek);\n};\n\nPCM::PCM(Mode mode, Track *track, File *fh, bool canSeek) :\n\tFileModule(mode, track, fh, canSeek),\n\tm_bytesPerFrame(track->f.bytesPerFrame(false)),\n\tm_saved_fpos_next_frame(-1),\n\tm_saved_nextfframe(-1)\n{\n\tif (mode == Decompress)\n\t\ttrack->f.compressionParams = AU_NULL_PVLIST;\n}\n\nPCM *PCM::createCompress(Track *track, File *fh, bool canSeek,\n\tbool headerless, AFframecount *chunkframes)\n{\n\treturn new PCM(Compress, track, fh, canSeek);\n}\n\nvoid PCM::runPush()\n{\n\tAFframecount frames2write = m_inChunk->frameCount;\n\tAFframecount n;\n\n\t/*\n\t\tWARNING: due to the optimization explained at the end\n\t\tof arrangemodules(), the pcm file module cannot depend\n\t\ton the presence of the intermediate working buffer\n\t\twhich _AFsetupmodules usually allocates for file\n\t\tmodules in their input or output chunk (for reading or\n\t\twriting, respectively).\n\n\t\tFortunately, the pcm module has no need for such a buffer.\n\t*/\n\n\tssize_t bytesWritten = write(m_inChunk->buffer, m_bytesPerFrame * frames2write);\n\tn = bytesWritten >= 0 ? bytesWritten / m_bytesPerFrame : 0;\n\n\tif (n != frames2write)\n\t\treportWriteError(n, frames2write);\n\n\tm_track->nextfframe += n;\n\tm_track->totalfframes = m_track->nextfframe;\n\tassert(!canSeek() || (tell() == m_track->fpos_next_frame));\n}\n\nvoid PCM::sync1()\n{\n\tm_saved_fpos_next_frame = m_track->fpos_next_frame;\n\tm_saved_nextfframe = m_track->nextfframe;\n}\n\nvoid PCM::sync2()\n{\n\tassert(!canSeek() || (tell() == m_track->fpos_next_frame));\n\n\t/* We can afford to seek because sync2 is rare. */\n\tm_track->fpos_after_data = tell();\n\n\tm_track->fpos_next_frame = m_saved_fpos_next_frame;\n\tm_track->nextfframe = m_saved_nextfframe;\n}\n\nPCM *PCM::createDecompress(Track *track, File *fh, bool canSeek,\n\tbool headerless, AFframecount *chunkframes)\n{\n\treturn new PCM(Decompress, track, fh, canSeek);\n}\n\nvoid PCM::runPull()\n{\n\tAFframecount framesToRead = m_outChunk->frameCount;\n\n\t/*\n\t\tWARNING: Due to the optimization explained at the end of\n\t\tarrangemodules(), the pcm file module cannot depend on\n\t\tthe presence of the intermediate working buffer which\n\t\t_AFsetupmodules usually allocates for file modules in\n\t\ttheir input or output chunk (for reading or writing,\n\t\trespectively).\n\n\t\tFortunately, the pcm module has no need for such a buffer.\n\t*/\n\n\t/*\n\t\tLimit the number of frames to be read to the number of\n\t\tframes left in the track.\n\t*/\n\tif (m_track->totalfframes != -1 &&\n\t\tm_track->nextfframe + framesToRead > m_track->totalfframes)\n\t{\n\t\tframesToRead = m_track->totalfframes - m_track->nextfframe;\n\t}\n\n\tssize_t bytesRead = read(m_outChunk->buffer, m_bytesPerFrame * framesToRead);\n\tAFframecount framesRead = bytesRead >= 0 ? bytesRead / m_bytesPerFrame : 0;\n\n\tm_track->nextfframe += framesRead;\n\tassert(!canSeek() || (tell() == m_track->fpos_next_frame));\n\n\t/*\n\t\tIf we got EOF from read, then we return the actual amount read.\n\n\t\tComplain only if there should have been more frames in the file.\n\t*/\n\n\tif (framesRead != framesToRead && m_track->totalfframes != -1)\n\t\treportReadError(framesRead, framesToRead);\n\n\tm_outChunk->frameCount = framesRead;\n}\n\nvoid PCM::reset2()\n{\n\tm_track->fpos_next_frame = m_track->fpos_first_frame +\n\t\tm_bytesPerFrame * m_track->nextfframe;\n\n\tm_track->frames2ignore = 0;\n}\n\nFileModule *_AFpcminitcompress (Track *track, File *fh, bool canSeek,\n\tbool headerless, AFframecount *chunkFrames)\n{\n\treturn PCM::createCompress(track, fh, canSeek, headerless, chunkFrames);\n}\n\nFileModule *_AFpcminitdecompress (Track *track, File *fh, bool canSeek,\n\tbool headerless, AFframecount *chunkFrames)\n{\n\treturn PCM::createDecompress(track, fh, canSeek, headerless, chunkFrames);\n}\n\n// file: modules/SimpleModule.cpp\n/*\n\tAudio File Library\n\tCopyright (C) 2010, Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n\n#include <algorithm>\n\nvoid SimpleModule::runPull()\n{\n\tpull(m_outChunk->frameCount);\n\trun(*m_inChunk, *m_outChunk);\n}\n\nvoid SimpleModule::runPush()\n{\n\tm_outChunk->frameCount = m_inChunk->frameCount;\n\trun(*m_inChunk, *m_outChunk);\n\tpush(m_outChunk->frameCount);\n}\n\nApplyChannelMatrix::ApplyChannelMatrix(FormatCode format, bool isReading,\n\tint inChannels, int outChannels,\n\tdouble minClip, double maxClip, const double *matrix) :\n\tm_format(format),\n\tm_inChannels(inChannels),\n\tm_outChannels(outChannels),\n\tm_minClip(minClip),\n\tm_maxClip(maxClip),\n\tm_matrix(NULL)\n{\n\tm_matrix = new double[m_inChannels * m_outChannels];\n\tif (matrix)\n\t{\n\t\tif (isReading)\n\t\t{\n\t\t\t// Copy channel matrix for reading.\n\t\t\tstd::copy(matrix, matrix + m_inChannels * m_outChannels, m_matrix);\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// Transpose channel matrix for writing.\n\t\t\tfor (int i=0; i < inChannels; i++)\n\t\t\t\tfor (int j=0; j < outChannels; j++)\n\t\t\t\t\tm_matrix[j*inChannels + i] = matrix[i*outChannels + j];\n\t\t}\n\t}\n\telse\n\t{\n\t\tinitDefaultMatrix();\n\t}\n}\n\nApplyChannelMatrix::~ApplyChannelMatrix()\n{\n\tdelete [] m_matrix;\n}\n\nconst char *ApplyChannelMatrix::name() const { return \"channelMatrix\"; }\n\nvoid ApplyChannelMatrix::describe()\n{\n\tm_outChunk->f.channelCount = m_outChannels;\n\tm_outChunk->f.pcm.minClip = m_minClip;\n\tm_outChunk->f.pcm.maxClip = m_maxClip;\n}\n\nvoid ApplyChannelMatrix::run(Chunk &inChunk, Chunk &outChunk)\n{\n\tswitch (m_format)\n\t{\n\t\tcase kInt8:\n\t\t\trun<int8_t>(inChunk.buffer, outChunk.buffer, inChunk.frameCount);\n\t\t\tbreak;\n\t\tcase kInt16:\n\t\t\trun<int16_t>(inChunk.buffer, outChunk.buffer, inChunk.frameCount);\n\t\t\tbreak;\n\t\tcase kInt24:\n\t\tcase kInt32:\n\t\t\trun<int32_t>(inChunk.buffer, outChunk.buffer, inChunk.frameCount);\n\t\t\tbreak;\n\t\tcase kFloat:\n\t\t\trun<float>(inChunk.buffer, outChunk.buffer, inChunk.frameCount);\n\t\t\tbreak;\n\t\tcase kDouble:\n\t\t\trun<double>(inChunk.buffer, outChunk.buffer, inChunk.frameCount);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tassert(false);\n\t}\n}\n\ntemplate <typename T>\nvoid ApplyChannelMatrix::run(const void *inputData, void *outputData, int frameCount)\n{\n\tconst T *input = reinterpret_cast<const T *>(inputData);\n\tT *output = reinterpret_cast<T *>(outputData);\n\tfor (int frame=0; frame<frameCount; frame++)\n\t{\n\t\tconst T *inputSave = input;\n\t\tconst double *m = m_matrix;\n\t\tfor (int outChannel=0; outChannel < m_outChannels; outChannel++)\n\t\t{\n\t\t\tinput = inputSave;\n\t\t\tdouble t = 0;\n\t\t\tfor (int inChannel=0; inChannel < m_inChannels; inChannel++)\n\t\t\t\tt += *input++ * *m++;\n\t\t\t*output++ = t;\n\t\t}\n\t}\n}\n\nvoid ApplyChannelMatrix::initDefaultMatrix()\n{\n\tconst double *matrix = NULL;\n\tif (m_inChannels==1 && m_outChannels==2)\n\t{\n\t\tstatic const double m[]={1,1};\n\t\tmatrix = m;\n\t}\n\telse if (m_inChannels==1 && m_outChannels==4)\n\t{\n\t\tstatic const double m[]={1,1,0,0};\n\t\tmatrix = m;\n\t}\n\telse if (m_inChannels==2 && m_outChannels==1)\n\t{\n\t\tstatic const double m[]={.5,.5};\n\t\tmatrix = m;\n\t}\n\telse if (m_inChannels==2 && m_outChannels==4)\n\t{\n\t\tstatic const double m[]={1,0,0,1,0,0,0,0};\n\t\tmatrix = m;\n\t}\n\telse if (m_inChannels==4 && m_outChannels==1)\n\t{\n\t\tstatic const double m[]={.5,.5,.5,.5};\n\t\tmatrix = m;\n\t}\n\telse if (m_inChannels==4 && m_outChannels==2)\n\t{\n\t\tstatic const double m[]={1,0,1,0,0,1,0,1};\n\t\tmatrix = m;\n\t}\n\n\tif (matrix)\n\t{\n\t\tstd::copy(matrix, matrix + m_inChannels * m_outChannels, m_matrix);\n\t}\n\telse\n\t{\n\t\tfor (int i=0; i < m_inChannels; i++)\n\t\t\tfor (int j=0; j < m_outChannels; j++)\n\t\t\t\tm_matrix[j*m_inChannels + i] = (i==j) ? 1 : 0;\n\t}\n}\n\n// file: modules/RebufferModule.cpp\n/*\n\tAudio File Library\n\tCopyright (C) 2000, Silicon Graphics, Inc.\n\tCopyright (C) 2010, Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n\n#include <algorithm>\n#include <assert.h>\n#include <string.h>\n\nRebufferModule::RebufferModule(Direction direction, int bytesPerFrame,\n\tint numFrames, bool multipleOf) :\n\tm_direction(direction),\n\tm_bytesPerFrame(bytesPerFrame),\n\tm_numFrames(numFrames),\n\tm_multipleOf(multipleOf),\n\tm_eof(false),\n\tm_sentShortChunk(false),\n\tm_buffer(NULL),\n\tm_offset(-1),\n\tm_savedBuffer(NULL),\n\tm_savedOffset(-1)\n{\n\tif (m_direction == FixedToVariable)\n\t\tinitFixedToVariable();\n\telse\n\t\tinitVariableToFixed();\n}\n\nRebufferModule::~RebufferModule()\n{\n\tdelete [] m_buffer;\n\tdelete [] m_savedBuffer;\n}\n\nvoid RebufferModule::initFixedToVariable()\n{\n\tm_offset = m_numFrames;\n\tm_buffer = new char[m_numFrames * m_bytesPerFrame];\n}\n\nvoid RebufferModule::initVariableToFixed()\n{\n\tm_offset = 0;\n\tm_buffer = new char[m_numFrames * m_bytesPerFrame];\n\tm_savedBuffer = new char[m_numFrames * m_bytesPerFrame];\n}\n\nvoid RebufferModule::maxPull()\n{\n\tassert(m_direction == FixedToVariable);\n\tif (m_multipleOf)\n\t\tm_inChunk->frameCount = m_outChunk->frameCount + m_numFrames;\n\telse\n\t\tm_inChunk->frameCount = m_numFrames;\n}\n\nvoid RebufferModule::maxPush()\n{\n\tassert(m_direction == VariableToFixed);\n\tif (m_multipleOf)\n\t\tm_outChunk->frameCount = m_inChunk->frameCount + m_numFrames;\n\telse\n\t\tm_outChunk->frameCount = m_numFrames;\n}\n\nvoid RebufferModule::runPull()\n{\n\tint framesToPull = m_outChunk->frameCount;\n\tconst char *inBuffer = static_cast<const char *>(m_inChunk->buffer);\n\tchar *outBuffer = static_cast<char *>(m_outChunk->buffer);\n\n\tassert(m_offset > 0 && m_offset <= m_numFrames);\n\n\t/*\n\t\tA module should not pull more frames from its input\n\t\tafter receiving a short chunk.\n\t*/\n\tassert(!m_sentShortChunk);\n\n\tif (m_offset < m_numFrames)\n\t{\n\t\tint buffered = m_numFrames - m_offset;\n\t\tint n = std::min(framesToPull, buffered);\n\t\tmemcpy(outBuffer, m_buffer + m_offset * m_bytesPerFrame,\n\t\t\tn * m_bytesPerFrame);\n\t\toutBuffer += buffered * m_bytesPerFrame;\n\t\tframesToPull -= buffered;\n\t\tm_offset += n;\n\t}\n\n\t// Try to pull more frames from the source.\n\twhile (!m_eof && framesToPull > 0)\n\t{\n\t\tint framesRequested;\n\t\tif (m_multipleOf)\n\t\t\t// Round framesToPull up to nearest multiple of m_numFrames.\n\t\t\tframesRequested = ((framesToPull - 1) / m_numFrames + 1) * m_numFrames;\n\t\telse\n\t\t\tframesRequested = m_numFrames;\n\n\t\tassert(framesRequested > 0);\n\n\t\tpull(framesRequested);\n\n\t\tint framesReceived = m_inChunk->frameCount;\n\n\t\tif (framesReceived != framesRequested)\n\t\t\tm_eof = true;\n\n\t\tmemcpy(outBuffer, inBuffer,\n\t\t\tstd::min(framesToPull, framesReceived) * m_bytesPerFrame);\n\n\t\toutBuffer += framesReceived * m_bytesPerFrame;\n\t\tframesToPull -= framesReceived;\n\n\t\tif (m_multipleOf)\n\t\t\tassert(m_eof || framesToPull <= 0);\n\n\t\tif (framesToPull < 0)\n\t\t{\n\t\t\tassert(m_offset == m_numFrames);\n\n\t\t\tm_offset = m_numFrames + framesToPull;\n\n\t\t\tassert(m_offset > 0 && m_offset <= m_numFrames);\n\n\t\t\tmemcpy(m_buffer + m_offset * m_bytesPerFrame,\n\t\t\t\tinBuffer + (framesReceived + framesToPull) * m_bytesPerFrame,\n\t\t\t\t(m_numFrames - m_offset) * m_bytesPerFrame);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tassert(m_offset == m_numFrames);\n\t\t}\n\t}\n\n\tif (m_eof && framesToPull > 0)\n\t{\n\t\t// Output short chunk.\n\t\tm_outChunk->frameCount -= framesToPull;\n\t\tm_sentShortChunk = true;\n\t\tassert(m_offset == m_numFrames);\n\t}\n\telse\n\t{\n\t\tassert(framesToPull <= 0);\n\t\tassert(m_offset == m_numFrames + framesToPull);\n\t}\n\tassert(m_offset > 0 && m_offset <= m_numFrames);\n}\n\nvoid RebufferModule::reset1()\n{\n\tm_offset = m_numFrames;\n\tm_eof = false;\n\tm_sentShortChunk = false;\n\tassert(m_offset > 0 && m_offset <= m_numFrames);\n}\n\nvoid RebufferModule::reset2()\n{\n\tassert(m_offset > 0 && m_offset <= m_numFrames);\n}\n\nvoid RebufferModule::runPush()\n{\n\tint framesToPush = m_inChunk->frameCount;\n\tconst char *inBuffer = static_cast<const char *>(m_inChunk->buffer);\n\tchar *outBuffer = static_cast<char *>(m_outChunk->buffer);\n\n\tassert(m_offset >= 0 && m_offset < m_numFrames);\n\n\t// Check that we will be able to push even one block.\n\tif (m_offset + framesToPush >= m_numFrames)\n\t{\n\t\tif (m_offset > 0)\n\t\t\tmemcpy(m_outChunk->buffer, m_buffer, m_offset * m_bytesPerFrame);\n\n\t\tif (m_multipleOf)\n\t\t{\n\t\t\t// Round down to nearest multiple of m_numFrames.\n\t\t\tint n = ((m_offset + framesToPush) / m_numFrames) * m_numFrames;\n\n\t\t\tassert(n > m_offset);\n\t\t\tmemcpy(outBuffer + m_offset * m_bytesPerFrame,\n\t\t\t\tinBuffer,\n\t\t\t\t(n - m_offset) * m_bytesPerFrame);\n\n\t\t\tpush(n);\n\n\t\t\tinBuffer += (n - m_offset) * m_bytesPerFrame;\n\t\t\tframesToPush -= n - m_offset;\n\t\t\tassert(framesToPush >= 0);\n\t\t\tm_offset = 0;\n\t\t}\n\t\telse\n\t\t{\n\t\t\twhile (m_offset + framesToPush >= m_numFrames)\n\t\t\t{\n\t\t\t\tint n = m_numFrames - m_offset;\n\t\t\t\tmemcpy(outBuffer + m_offset * m_bytesPerFrame,\n\t\t\t\t\tinBuffer,\n\t\t\t\t\tn * m_bytesPerFrame);\n\n\t\t\t\tpush(m_numFrames);\n\n\t\t\t\tinBuffer += n * m_bytesPerFrame;\n\t\t\t\tframesToPush -= n;\n\t\t\t\tassert(framesToPush >= 0);\n\t\t\t\tm_offset = 0;\n\t\t\t}\n\t\t}\n\n\t\tassert(m_offset == 0);\n\t}\n\n\tassert(m_offset + framesToPush < m_numFrames);\n\n\t// Save remaining samples in buffer.\n\tif (framesToPush > 0)\n\t{\n\t\tmemcpy(m_buffer + m_offset * m_bytesPerFrame,\n\t\t\tinBuffer,\n\t\t\tframesToPush * m_bytesPerFrame);\n\t\tm_offset += framesToPush;\n\t}\n\n\tassert(m_offset >= 0 && m_offset < m_numFrames);\n}\n\nvoid RebufferModule::sync1()\n{\n\tassert(m_offset >= 0 && m_offset < m_numFrames);\n\n\t// Save all the frames and the offset so we can restore our state later.\n\tmemcpy(m_savedBuffer, m_buffer, m_numFrames * m_bytesPerFrame);\n\tm_savedOffset = m_offset;\n}\n\nvoid RebufferModule::sync2()\n{\n\tassert(m_offset >= 0 && m_offset < m_numFrames);\n\n\tmemcpy(m_outChunk->buffer, m_buffer, m_offset * m_bytesPerFrame);\n\n\tpush(m_offset);\n\n\tmemcpy(m_buffer, m_savedBuffer, m_numFrames * m_bytesPerFrame);\n\tm_offset = m_savedOffset;\n\n\tassert(m_offset >= 0 && m_offset < m_numFrames);\n}\n\n// file: AIFF.h\n/*\n\tAudio File Library\n\tCopyright (C) 1998-2000, 2003-2004, 2010-2012, Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\tAIFF.h\n\n\tThis file contains structures and constants related to the AIFF\n\tand AIFF-C formats.\n*/\n\n#ifndef AIFF_H\n#define AIFF_H\n\n\n#define _AF_AIFF_NUM_INSTPARAMS 9\nextern const InstParamInfo _af_aiff_inst_params[_AF_AIFF_NUM_INSTPARAMS];\n#define _AF_AIFFC_NUM_COMPTYPES 3\nextern const int _af_aiffc_compression_types[_AF_AIFFC_NUM_COMPTYPES];\n\nclass AIFFFile : public _AFfilehandle\n{\npublic:\n\tAIFFFile();\n\n\tstatic bool recognizeAIFF(File *fh);\n\tstatic bool recognizeAIFFC(File *fh);\n\n\tstatic AFfilesetup completeSetup(AFfilesetup);\n\n\tint getVersion() OVERRIDE;\n\n\tstatus readInit(AFfilesetup) OVERRIDE;\n\tstatus writeInit(AFfilesetup) OVERRIDE;\n\n\tstatus update() OVERRIDE;\n\n\tbool isInstrumentParameterValid(AUpvlist, int) OVERRIDE;\n\nprivate:\n\tAFfileoffset m_miscellaneousPosition;\n\tAFfileoffset m_FVER_offset;\n\tAFfileoffset m_COMM_offset;\n\tAFfileoffset m_MARK_offset;\n\tAFfileoffset m_INST_offset;\n\tAFfileoffset m_AESD_offset;\n\tAFfileoffset m_SSND_offset;\n\n\tstatus parseFVER(const Tag &type, size_t size);\n\tstatus parseAESD(const Tag &type, size_t size);\n\tstatus parseMiscellaneous(const Tag &type, size_t size);\n\tstatus parseINST(const Tag &type, size_t size);\n\tstatus parseMARK(const Tag &type, size_t size);\n\tstatus parseCOMM(const Tag &type, size_t size);\n\tstatus parseSSND(const Tag &type, size_t size);\n\n\tstatus writeCOMM();\n\tstatus writeSSND();\n\tstatus writeMARK();\n\tstatus writeINST();\n\tstatus writeFVER();\n\tstatus writeAESD();\n\tstatus writeMiscellaneous();\n\n\tvoid initCompressionParams();\n\tvoid initIMACompressionParams();\n\n\tbool isAIFFC() const { return m_fileFormat == AF_FILE_AIFFC; }\n\n\tbool readPString(char s[256]);\n\tbool writePString(const char *);\n};\n\n#endif\n\n// file: AIFF.cpp\n/*\n\tAudio File Library\n\tCopyright (C) 1998-2000, 2003-2004, 2010-2013, Michael Pruett <michael@68k.org>\n\tCopyright (C) 2000-2001, Silicon Graphics, Inc.\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\tAIFF.cpp\n\n\tThis file contains routines for reading and writing AIFF and\n\tAIFF-C sound files.\n*/\n\n\n#include <assert.h>\n#include <stdint.h>\n#include <stdlib.h>\n#include <string.h>\n\n\nconst InstParamInfo _af_aiff_inst_params[_AF_AIFF_NUM_INSTPARAMS] =\n{\n\t{ AF_INST_MIDI_BASENOTE, AU_PVTYPE_LONG, \"MIDI base note\", {60} },\n\t{ AF_INST_NUMCENTS_DETUNE, AU_PVTYPE_LONG, \"Detune in cents\", {0} },\n\t{ AF_INST_MIDI_LOVELOCITY, AU_PVTYPE_LONG, \"Low velocity\", {1} },\n\t{ AF_INST_MIDI_HIVELOCITY, AU_PVTYPE_LONG, \"High velocity\", {127} },\n\t{ AF_INST_MIDI_LONOTE, AU_PVTYPE_LONG, \"Low note\", {0} },\n\t{ AF_INST_MIDI_HINOTE, AU_PVTYPE_LONG, \"High note\", {127} },\n\t{ AF_INST_NUMDBS_GAIN, AU_PVTYPE_LONG, \"Gain in dB\", {0} },\n\t{ AF_INST_SUSLOOPID, AU_PVTYPE_LONG, \"Sustain loop id\", {0} },\n\t{ AF_INST_RELLOOPID, AU_PVTYPE_LONG, \"Release loop id\", {0} }\n};\n\nconst int _af_aiffc_compression_types[_AF_AIFFC_NUM_COMPTYPES] =\n{\n\tAF_COMPRESSION_G711_ULAW,\n\tAF_COMPRESSION_G711_ALAW,\n\tAF_COMPRESSION_IMA\n};\n\nstatic const _AFfilesetup aiffDefaultFileSetup =\n{\n\t_AF_VALID_FILESETUP,\t/* valid */\n\tAF_FILE_AIFF,\t\t/* fileFormat */\n\ttrue,\t\t\t/* trackSet */\n\ttrue,\t\t\t/* instrumentSet */\n\ttrue,\t\t\t/* miscellaneousSet */\n\t1,\t\t\t/* trackCount */\n\tNULL,\t\t\t/* tracks */\n\t1,\t\t\t/* instrumentCount */\n\tNULL,\t\t\t/* instruments */\n\t0,\t\t\t/* miscellaneousCount */\n\tNULL\t\t\t/* miscellaneous */\n};\n\n#define AIFC_VERSION_1 0xa2805140\n\nstruct _INST\n{\n\tuint8_t\t\tbaseNote;\n\tint8_t\t\tdetune;\n\tuint8_t\t\tlowNote, highNote;\n\tuint8_t\t\tlowVelocity, highVelocity;\n\tint16_t\t\tgain;\n\n\tuint16_t\tsustainLoopPlayMode;\n\tuint16_t\tsustainLoopBegin;\n\tuint16_t\tsustainLoopEnd;\n\n\tuint16_t\treleaseLoopPlayMode;\n\tuint16_t\treleaseLoopBegin;\n\tuint16_t\treleaseLoopEnd;\n};\n\nAIFFFile::AIFFFile()\n{\n\tsetFormatByteOrder(AF_BYTEORDER_BIGENDIAN);\n\n\tm_miscellaneousPosition = 0;\n\tm_FVER_offset = 0;\n\tm_COMM_offset = 0;\n\tm_MARK_offset = 0;\n\tm_INST_offset = 0;\n\tm_AESD_offset = 0;\n\tm_SSND_offset = 0;\n}\n\n/*\n\tFVER chunks are only present in AIFF-C files.\n*/\nstatus AIFFFile::parseFVER(const Tag &type, size_t size)\n{\n\tassert(type == \"FVER\");\n\n\tuint32_t timestamp;\n\treadU32(&timestamp);\n\t/* timestamp holds the number of seconds since January 1, 1904. */\n\n\treturn AF_SUCCEED;\n}\n\n/*\n\tParse AES recording data.\n*/\nstatus AIFFFile::parseAESD(const Tag &type, size_t size)\n{\n\tunsigned char aesChannelStatusData[24];\n\n\tassert(type == \"AESD\");\n\tassert(size == 24);\n\n\tTrack *track = getTrack();\n\n\ttrack->hasAESData = true;\n\n\t/*\n\t\tTry to read 24 bytes of AES nonaudio data from the file.\n\t\tFail if the file disappoints.\n\t*/\n\tif (m_fh->read(aesChannelStatusData, 24) != 24)\n\t\treturn AF_FAIL;\n\n\tmemcpy(track->aesData, aesChannelStatusData, 24);\n\n\treturn AF_SUCCEED;\n}\n\n/*\n\tParse miscellaneous data chunks such as name, author, copyright,\n\tand annotation chunks.\n*/\nstatus AIFFFile::parseMiscellaneous(const Tag &type, size_t size)\n{\n\tint misctype = AF_MISC_UNRECOGNIZED;\n\n\tassert(type == \"NAME\" ||\n\t\ttype == \"AUTH\" ||\n\t\ttype == \"(c) \" ||\n\t\ttype == \"ANNO\" ||\n\t\ttype == \"APPL\" ||\n\t\ttype == \"MIDI\");\n\n\t/* Skip zero-length miscellaneous chunks. */\n\tif (size == 0)\n\t\treturn AF_FAIL;\n\n\tm_miscellaneousCount++;\n\tm_miscellaneous = (Miscellaneous *) _af_realloc(m_miscellaneous,\n\t\tm_miscellaneousCount * sizeof (Miscellaneous));\n\n\tif (type == \"NAME\")\n\t\tmisctype = AF_MISC_NAME;\n\telse if (type == \"AUTH\")\n\t\tmisctype = AF_MISC_AUTH;\n\telse if (type == \"(c) \")\n\t\tmisctype = AF_MISC_COPY;\n\telse if (type == \"ANNO\")\n\t\tmisctype = AF_MISC_ANNO;\n\telse if (type == \"APPL\")\n\t\tmisctype = AF_MISC_APPL;\n\telse if (type == \"MIDI\")\n\t\tmisctype = AF_MISC_MIDI;\n\n\tm_miscellaneous[m_miscellaneousCount - 1].id = m_miscellaneousCount;\n\tm_miscellaneous[m_miscellaneousCount - 1].type = misctype;\n\tm_miscellaneous[m_miscellaneousCount - 1].size = size;\n\tm_miscellaneous[m_miscellaneousCount - 1].position = 0;\n\tm_miscellaneous[m_miscellaneousCount - 1].buffer = _af_malloc(size);\n\tm_fh->read(m_miscellaneous[m_miscellaneousCount - 1].buffer, size);\n\n\treturn AF_SUCCEED;\n}\n\n/*\n\tParse instrument chunks, which contain information about using\n\tsound data as a sampled instrument.\n*/\nstatus AIFFFile::parseINST(const Tag &type, size_t size)\n{\n\tuint8_t baseNote;\n\tint8_t detune;\n\tuint8_t lowNote, highNote, lowVelocity, highVelocity;\n\tint16_t gain;\n\n\tuint16_t sustainLoopPlayMode, sustainLoopBegin, sustainLoopEnd;\n\tuint16_t releaseLoopPlayMode, releaseLoopBegin, releaseLoopEnd;\n\n\tInstrument *instrument = (Instrument *) _af_calloc(1, sizeof (Instrument));\n\tinstrument->id = AF_DEFAULT_INST;\n\tinstrument->values = (AFPVu *) _af_calloc(_AF_AIFF_NUM_INSTPARAMS, sizeof (AFPVu));\n\tinstrument->loopCount = 2;\n\tinstrument->loops = (Loop *) _af_calloc(2, sizeof (Loop));\n\n\tm_instrumentCount = 1;\n\tm_instruments = instrument;\n\n\treadU8(&baseNote);\n\treadS8(&detune);\n\treadU8(&lowNote);\n\treadU8(&highNote);\n\treadU8(&lowVelocity);\n\treadU8(&highVelocity);\n\treadS16(&gain);\n\n\tinstrument->values[0].l = baseNote;\n\tinstrument->values[1].l = detune;\n\tinstrument->values[2].l = lowVelocity;\n\tinstrument->values[3].l = highVelocity;\n\tinstrument->values[4].l = lowNote;\n\tinstrument->values[5].l = highNote;\n\tinstrument->values[6].l = gain;\n\n\tinstrument->values[7].l = 1;\t/* sustain loop id */\n\tinstrument->values[8].l = 2;\t/* release loop id */\n\n\treadU16(&sustainLoopPlayMode);\n\treadU16(&sustainLoopBegin);\n\treadU16(&sustainLoopEnd);\n\n\treadU16(&releaseLoopPlayMode);\n\treadU16(&releaseLoopBegin);\n\treadU16(&releaseLoopEnd);\n\n\tinstrument->loops[0].id = 1;\n\tinstrument->loops[0].mode = sustainLoopPlayMode;\n\tinstrument->loops[0].beginMarker = sustainLoopBegin;\n\tinstrument->loops[0].endMarker = sustainLoopEnd;\n\tinstrument->loops[0].trackid = AF_DEFAULT_TRACK;\n\n\tinstrument->loops[1].id = 2;\n\tinstrument->loops[1].mode = releaseLoopPlayMode;\n\tinstrument->loops[1].beginMarker = releaseLoopBegin;\n\tinstrument->loops[1].endMarker = releaseLoopEnd;\n\tinstrument->loops[1].trackid = AF_DEFAULT_TRACK;\n\n\treturn AF_SUCCEED;\n}\n\n/*\n\tParse marker chunks, which contain the positions and names of loop markers.\n*/\nstatus AIFFFile::parseMARK(const Tag &type, size_t size)\n{\n\tassert(type == \"MARK\");\n\n\tTrack *track = getTrack();\n\n\tuint16_t numMarkers;\n\treadU16(&numMarkers);\n\n\ttrack->markerCount = numMarkers;\n\tif (numMarkers)\n\t\ttrack->markers = _af_marker_new(numMarkers);\n\n\tfor (unsigned i=0; i<numMarkers; i++)\n\t{\n\t\tuint16_t markerID = 0;\n\t\tuint32_t markerPosition = 0;\n\t\tuint8_t sizeByte = 0;\n\t\tchar *markerName = NULL;\n\n\t\treadU16(&markerID);\n\t\treadU32(&markerPosition);\n\t\tm_fh->read(&sizeByte, 1);\n\t\tmarkerName = (char *) _af_malloc(sizeByte + 1);\n\t\tm_fh->read(markerName, sizeByte);\n\n\t\tmarkerName[sizeByte] = '\\0';\n\n\t\t/*\n\t\t\tIf sizeByte is even, then 1+sizeByte (the length\n\t\t\tof the string) is odd.\tSkip an extra byte to\n\t\t\tmake it even.\n\t\t*/\n\n\t\tif ((sizeByte % 2) == 0)\n\t\t\tm_fh->seek(1, File::SeekFromCurrent);\n\n\t\ttrack->markers[i].id = markerID;\n\t\ttrack->markers[i].position = markerPosition;\n\t\ttrack->markers[i].name = markerName;\n\t\ttrack->markers[i].comment = _af_strdup(\"\");\n\t}\n\n\treturn AF_SUCCEED;\n}\n\n/*\n\tParse common data chunks, which contain information regarding the\n\tsampling rate, the number of sample frames, and the number of\n\tsound channels.\n*/\nstatus AIFFFile::parseCOMM(const Tag &type, size_t size)\n{\n\tassert(type == \"COMM\");\n\n\tTrack *track = getTrack();\n\n\tuint16_t numChannels;\n\tuint32_t numSampleFrames;\n\tuint16_t sampleSize;\n\tunsigned char sampleRate[10];\n\n\treadU16(&numChannels);\n\ttrack->f.channelCount = numChannels;\n\n\tif (!numChannels)\n\t{\n\t\t_af_error(AF_BAD_CHANNELS, \"invalid file with 0 channels\");\n\t\treturn AF_FAIL;\n\t}\n\n\treadU32(&numSampleFrames);\n\ttrack->totalfframes = numSampleFrames;\n\n\treadU16(&sampleSize);\n\ttrack->f.sampleWidth = sampleSize;\n\n\tm_fh->read(sampleRate, 10);\n\ttrack->f.sampleRate = _af_convert_from_ieee_extended(sampleRate);\n\n\ttrack->f.compressionType = AF_COMPRESSION_NONE;\n\ttrack->f.sampleFormat = AF_SAMPFMT_TWOSCOMP;\n\ttrack->f.byteOrder = AF_BYTEORDER_BIGENDIAN;\n\n\ttrack->f.framesPerPacket = 1;\n\n\tif (isAIFFC())\n\t{\n\t\tTag compressionID;\n\t\t// Pascal strings are at most 255 bytes long.\n\t\tchar compressionName[256];\n\n\t\treadTag(&compressionID);\n\n\t\t// Read the Pascal-style string containing the name.\n\t\treadPString(compressionName);\n\n\t\tif (compressionID == \"NONE\" || compressionID == \"twos\")\n\t\t{\n\t\t\ttrack->f.compressionType = AF_COMPRESSION_NONE;\n\t\t}\n\t\telse if (compressionID == \"in24\")\n\t\t{\n\t\t\ttrack->f.compressionType = AF_COMPRESSION_NONE;\n\t\t\ttrack->f.sampleWidth = 24;\n\t\t}\n\t\telse if (compressionID == \"in32\")\n\t\t{\n\t\t\ttrack->f.compressionType = AF_COMPRESSION_NONE;\n\t\t\ttrack->f.sampleWidth = 32;\n\t\t}\n\t\telse if (compressionID == \"ACE2\" ||\n\t\t\tcompressionID == \"ACE8\" ||\n\t\t\tcompressionID == \"MAC3\" ||\n\t\t\tcompressionID == \"MAC6\")\n\t\t{\n\t\t\t_af_error(AF_BAD_NOT_IMPLEMENTED, \"AIFF-C format does not support Apple's proprietary %s compression format\", compressionName);\n\t\t\treturn AF_FAIL;\n\t\t}\n\t\telse if (compressionID == \"ulaw\" || compressionID == \"ULAW\")\n\t\t{\n\t\t\ttrack->f.compressionType = AF_COMPRESSION_G711_ULAW;\n\t\t\ttrack->f.byteOrder = _AF_BYTEORDER_NATIVE;\n\t\t\ttrack->f.sampleWidth = 16;\n\t\t\ttrack->f.bytesPerPacket = track->f.channelCount;\n\t\t}\n\t\telse if (compressionID == \"alaw\" || compressionID == \"ALAW\")\n\t\t{\n\t\t\ttrack->f.compressionType = AF_COMPRESSION_G711_ALAW;\n\t\t\ttrack->f.byteOrder = _AF_BYTEORDER_NATIVE;\n\t\t\ttrack->f.sampleWidth = 16;\n\t\t\ttrack->f.bytesPerPacket = track->f.channelCount;\n\t\t}\n\t\telse if (compressionID == \"fl32\" || compressionID == \"FL32\")\n\t\t{\n\t\t\ttrack->f.sampleFormat = AF_SAMPFMT_FLOAT;\n\t\t\ttrack->f.sampleWidth = 32;\n\t\t\ttrack->f.compressionType = AF_COMPRESSION_NONE;\n\t\t}\n\t\telse if (compressionID == \"fl64\" || compressionID == \"FL64\")\n\t\t{\n\t\t\ttrack->f.sampleFormat = AF_SAMPFMT_DOUBLE;\n\t\t\ttrack->f.sampleWidth = 64;\n\t\t\ttrack->f.compressionType = AF_COMPRESSION_NONE;\n\t\t}\n\t\telse if (compressionID == \"sowt\")\n\t\t{\n\t\t\ttrack->f.compressionType = AF_COMPRESSION_NONE;\n\t\t\ttrack->f.byteOrder = AF_BYTEORDER_LITTLEENDIAN;\n\t\t}\n\t\telse if (compressionID == \"ima4\")\n\t\t{\n\t\t\ttrack->f.sampleWidth = 16;\n\t\t\ttrack->f.sampleFormat = AF_SAMPFMT_TWOSCOMP;\n\t\t\ttrack->f.compressionType = AF_COMPRESSION_IMA;\n\t\t\ttrack->f.byteOrder = _AF_BYTEORDER_NATIVE;\n\n\t\t\tinitIMACompressionParams();\n\n\t\t\ttrack->totalfframes *= 64;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t_af_error(AF_BAD_NOT_IMPLEMENTED, \"AIFF-C compression type '%s' not currently supported\",\n\t\t\t\tcompressionID.name().c_str());\n\t\t\treturn AF_FAIL;\n\t\t}\n\t}\n\n\tif (track->f.isUncompressed())\n\t\ttrack->f.computeBytesPerPacketPCM();\n\n\tif (_af_set_sample_format(&track->f, track->f.sampleFormat, track->f.sampleWidth) == AF_FAIL)\n\t\treturn AF_FAIL;\n\n\treturn AF_SUCCEED;\n}\n\n/*\n\tParse the stored sound chunk, which usually contains little more\n\tthan the sound data.\n*/\nstatus AIFFFile::parseSSND(const Tag &type, size_t size)\n{\n\tassert(type == \"SSND\");\n\n\tTrack *track = getTrack();\n\n\tuint32_t offset, blockSize;\n\treadU32(&offset);\n\treadU32(&blockSize);\n\n\ttrack->data_size = size - 8 - offset;\n\n\ttrack->fpos_first_frame = m_fh->tell() + offset;\n\n\treturn AF_SUCCEED;\n}\n\nstatus AIFFFile::readInit(AFfilesetup setup)\n{\n\tuint32_t type, size, formtype;\n\n\tbool hasCOMM = false;\n\tbool hasFVER = false;\n\tbool hasSSND = false;\n\n\tm_fh->seek(0, File::SeekFromBeginning);\n\n\tm_fh->read(&type, 4);\n\treadU32(&size);\n\tm_fh->read(&formtype, 4);\n\n\tif (memcmp(&type, \"FORM\", 4) != 0 ||\n\t\t(memcmp(&formtype, \"AIFF\", 4) && memcmp(&formtype, \"AIFC\", 4)))\n\t\treturn AF_FAIL;\n\n\tif (!allocateTrack())\n\t\treturn AF_FAIL;\n\n\t/* Include the offset of the form type. */\n\tsize_t index = 4;\n\twhile (index < size)\n\t{\n\t\tTag chunkid;\n\t\tuint32_t chunksize = 0;\n\t\tstatus result = AF_SUCCEED;\n\n\t\treadTag(&chunkid);\n\t\treadU32(&chunksize);\n\n\t\tif (chunkid == \"COMM\")\n\t\t{\n\t\t\thasCOMM = true;\n\t\t\tresult = parseCOMM(chunkid, chunksize);\n\t\t}\n\t\telse if (chunkid == \"FVER\")\n\t\t{\n\t\t\thasFVER = true;\n\t\t\tparseFVER(chunkid, chunksize);\n\t\t}\n\t\telse if (chunkid == \"INST\")\n\t\t{\n\t\t\tparseINST(chunkid, chunksize);\n\t\t}\n\t\telse if (chunkid == \"MARK\")\n\t\t{\n\t\t\tparseMARK(chunkid, chunksize);\n\t\t}\n\t\telse if (chunkid == \"AESD\")\n\t\t{\n\t\t\tparseAESD(chunkid, chunksize);\n\t\t}\n\t\telse if (chunkid == \"NAME\" ||\n\t\t\tchunkid == \"AUTH\" ||\n\t\t\tchunkid == \"(c) \" ||\n\t\t\tchunkid == \"ANNO\" ||\n\t\t\tchunkid == \"APPL\" ||\n\t\t\tchunkid == \"MIDI\")\n\t\t{\n\t\t\tparseMiscellaneous(chunkid, chunksize);\n\t\t}\n\t\t/*\n\t\t\tThe sound data chunk is required if there are more than\n\t\t\tzero sample frames.\n\t\t*/\n\t\telse if (chunkid == \"SSND\")\n\t\t{\n\t\t\tif (hasSSND)\n\t\t\t{\n\t\t\t\t_af_error(AF_BAD_AIFF_SSND, \"AIFF file has more than one SSND chunk\");\n\t\t\t\treturn AF_FAIL;\n\t\t\t}\n\t\t\thasSSND = true;\n\t\t\tresult = parseSSND(chunkid, chunksize);\n\t\t}\n\n\t\tif (result == AF_FAIL)\n\t\t\treturn AF_FAIL;\n\n\t\tindex += chunksize + 8;\n\n\t\t/* all chunks must be aligned on an even number of bytes */\n\t\tif ((index % 2) != 0)\n\t\t\tindex++;\n\n\t\tm_fh->seek(index + 8, File::SeekFromBeginning);\n\t}\n\n\tif (!hasCOMM)\n\t{\n\t\t_af_error(AF_BAD_AIFF_COMM, \"bad AIFF COMM chunk\");\n\t}\n\n\tif (isAIFFC() && !hasFVER)\n\t{\n\t\t_af_error(AF_BAD_HEADER, \"FVER chunk is required in AIFF-C\");\n\t}\n\n\t/* The file has been successfully parsed. */\n\treturn AF_SUCCEED;\n}\n\nbool AIFFFile::recognizeAIFF(File *fh)\n{\n\tuint8_t buffer[8];\n\n\tfh->seek(0, File::SeekFromBeginning);\n\n\tif (fh->read(buffer, 8) != 8 || memcmp(buffer, \"FORM\", 4) != 0)\n\t\treturn false;\n\tif (fh->read(buffer, 4) != 4 || memcmp(buffer, \"AIFF\", 4) != 0)\n\t\treturn false;\n\n\treturn true;\n}\n\nbool AIFFFile::recognizeAIFFC(File *fh)\n{\n\tuint8_t buffer[8];\n\n\tfh->seek(0, File::SeekFromBeginning);\n\n\tif (fh->read(buffer, 8) != 8 || memcmp(buffer, \"FORM\", 4) != 0)\n\t\treturn false;\n\tif (fh->read(buffer, 4) != 4 || memcmp(buffer, \"AIFC\", 4) != 0)\n\t\treturn false;\n\n\treturn true;\n}\n\nAFfilesetup AIFFFile::completeSetup(AFfilesetup setup)\n{\n\tbool\tisAIFF = setup->fileFormat == AF_FILE_AIFF;\n\n\tif (setup->trackSet && setup->trackCount != 1)\n\t{\n\t\t_af_error(AF_BAD_NUMTRACKS, \"AIFF/AIFF-C file must have 1 track\");\n\t\treturn AF_NULL_FILESETUP;\n\t}\n\n\tTrackSetup *track = setup->getTrack();\n\tif (!track)\n\t\treturn AF_NULL_FILESETUP;\n\n\tif (track->sampleFormatSet)\n\t{\n\t\tif (track->f.sampleFormat == AF_SAMPFMT_UNSIGNED)\n\t\t{\n\t\t\t_af_error(AF_BAD_FILEFMT, \"AIFF/AIFF-C format does not support unsigned data\");\n\t\t\treturn AF_NULL_FILESETUP;\n\t\t}\n\t\telse if (isAIFF && track->f.sampleFormat != AF_SAMPFMT_TWOSCOMP)\n\t\t{\n\t\t\t_af_error(AF_BAD_FILEFMT, \"AIFF format supports only two's complement integer data\");\n\t\t\treturn AF_NULL_FILESETUP;\n\t\t}\n\t}\n\telse\n\t\t_af_set_sample_format(&track->f, AF_SAMPFMT_TWOSCOMP,\n\t\t\ttrack->f.sampleWidth);\n\n\t/* Check sample width if writing two's complement. Otherwise ignore. */\n\tif (track->f.sampleFormat == AF_SAMPFMT_TWOSCOMP &&\n\t\t(track->f.sampleWidth < 1 || track->f.sampleWidth > 32))\n\t{\n\t\t_af_error(AF_BAD_WIDTH,\n\t\t\t\"invalid sample width %d for AIFF/AIFF-C file \"\n\t\t\t\"(must be 1-32)\", track->f.sampleWidth);\n\t\treturn AF_NULL_FILESETUP;\n\t}\n\n\tif (isAIFF && track->f.compressionType != AF_COMPRESSION_NONE)\n\t{\n\t\t_af_error(AF_BAD_FILESETUP,\n\t\t\t\"AIFF does not support compression; use AIFF-C\");\n\t\treturn AF_NULL_FILESETUP;\n\t}\n\n\tif (track->f.compressionType != AF_COMPRESSION_NONE &&\n\t\ttrack->f.compressionType != AF_COMPRESSION_G711_ULAW &&\n\t\ttrack->f.compressionType != AF_COMPRESSION_G711_ALAW &&\n\t\ttrack->f.compressionType != AF_COMPRESSION_IMA)\n\t{\n\t\t_af_error(AF_BAD_NOT_IMPLEMENTED, \"compression format not supported in AIFF-C\");\n\t\treturn AF_NULL_FILESETUP;\n\t}\n\n\tif (track->f.isUncompressed() &&\n\t\ttrack->byteOrderSet &&\n\t\ttrack->f.byteOrder != AF_BYTEORDER_BIGENDIAN &&\n\t\ttrack->f.isByteOrderSignificant())\n\t{\n\t\t_af_error(AF_BAD_BYTEORDER,\n\t\t\t\"AIFF/AIFF-C format supports only big-endian data\");\n\t\treturn AF_NULL_FILESETUP;\n\t}\n\n\tif (track->f.isUncompressed())\n\t\ttrack->f.byteOrder = AF_BYTEORDER_BIGENDIAN;\n\n\tif (setup->instrumentSet)\n\t{\n\t\tif (setup->instrumentCount != 0 && setup->instrumentCount != 1)\n\t\t{\n\t\t\t_af_error(AF_BAD_NUMINSTS, \"AIFF/AIFF-C file must have 0 or 1 instrument chunk\");\n\t\t\treturn AF_NULL_FILESETUP;\n\t\t}\n\t\tif (setup->instruments != 0 &&\n\t\t\tsetup->instruments[0].loopCount != 2)\n\t\t{\n\t\t\t_af_error(AF_BAD_NUMLOOPS, \"AIFF/AIFF-C file with instrument must also have 2 loops\");\n\t\t\treturn AF_NULL_FILESETUP;\n\t\t}\n\t}\n\n\tif (setup->miscellaneousSet)\n\t{\n\t\tfor (int i=0; i<setup->miscellaneousCount; i++)\n\t\t{\n\t\t\tswitch (setup->miscellaneous[i].type)\n\t\t\t{\n\t\t\t\tcase AF_MISC_COPY:\n\t\t\t\tcase AF_MISC_AUTH:\n\t\t\t\tcase AF_MISC_NAME:\n\t\t\t\tcase AF_MISC_ANNO:\n\t\t\t\tcase AF_MISC_APPL:\n\t\t\t\tcase AF_MISC_MIDI:\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\t_af_error(AF_BAD_MISCTYPE, \"invalid miscellaneous type %d for AIFF/AIFF-C file\", setup->miscellaneous[i].type);\n\t\t\t\t\treturn AF_NULL_FILESETUP;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn _af_filesetup_copy(setup, &aiffDefaultFileSetup, true);\n}\n\nbool AIFFFile::isInstrumentParameterValid(AUpvlist list, int i)\n{\n\tint param, type;\n\n\tAUpvgetparam(list, i, &param);\n\tAUpvgetvaltype(list, i, &type);\n\tif (type != AU_PVTYPE_LONG)\n\t\treturn false;\n\n\tlong lval;\n\tAUpvgetval(list, i, &lval);\n\n\tswitch (param)\n\t{\n\t\tcase AF_INST_MIDI_BASENOTE:\n\t\t\treturn ((lval >= 0) && (lval <= 127));\n\n\t\tcase AF_INST_NUMCENTS_DETUNE:\n\t\t\treturn ((lval >= -50) && (lval <= 50));\n\n\t\tcase AF_INST_MIDI_LOVELOCITY:\n\t\t\treturn ((lval >= 1) && (lval <= 127));\n\n\t\tcase AF_INST_MIDI_HIVELOCITY:\n\t\t\treturn ((lval >= 1) && (lval <= 127));\n\n\t\tcase AF_INST_MIDI_LONOTE:\n\t\t\treturn ((lval >= 0) && (lval <= 127));\n\n\t\tcase AF_INST_MIDI_HINOTE:\n\t\t\treturn ((lval >= 0) && (lval <= 127));\n\n\t\tcase AF_INST_NUMDBS_GAIN:\n\t\tcase AF_INST_SUSLOOPID:\n\t\tcase AF_INST_RELLOOPID:\n\t\t\treturn true;\n\n\t\tdefault:\n\t\t\treturn false;\n\t\t\tbreak;\n\t}\n\n\treturn true;\n}\n\nint AIFFFile::getVersion()\n{\n\tif (isAIFFC())\n\t\treturn AIFC_VERSION_1;\n\treturn 0;\n}\n\nstatus AIFFFile::writeInit(AFfilesetup setup)\n{\n\tif (initFromSetup(setup) == AF_FAIL)\n\t\treturn AF_FAIL;\n\n\tinitCompressionParams();\n\n\tuint32_t fileSize = 0;\n\tm_fh->write(\"FORM\", 4);\n\twriteU32(&fileSize);\n\n\tif (isAIFFC())\n\t\tm_fh->write(\"AIFC\", 4);\n\telse\n\t\tm_fh->write(\"AIFF\", 4);\n\n\tif (isAIFFC())\n\t\twriteFVER();\n\n\twriteCOMM();\n\twriteMARK();\n\twriteINST();\n\twriteAESD();\n\twriteMiscellaneous();\n\twriteSSND();\n\n\treturn AF_SUCCEED;\n}\n\nstatus AIFFFile::update()\n{\n\t/* Get the length of the file. */\n\tuint32_t length = m_fh->length();\n\tlength -= 8;\n\n\t/* Set the length of the FORM chunk. */\n\tm_fh->seek(4, File::SeekFromBeginning);\n\twriteU32(&length);\n\n\tif (isAIFFC())\n\t\twriteFVER();\n\n\twriteCOMM();\n\twriteMARK();\n\twriteINST();\n\twriteAESD();\n\twriteMiscellaneous();\n\twriteSSND();\n\n\treturn AF_SUCCEED;\n}\n\nstatus AIFFFile::writeCOMM()\n{\n\t/*\n\t\tIf COMM_offset hasn't been set yet, set it to the\n\t\tcurrent offset.\n\t*/\n\tif (m_COMM_offset == 0)\n\t\tm_COMM_offset = m_fh->tell();\n\telse\n\t\tm_fh->seek(m_COMM_offset, File::SeekFromBeginning);\n\n\tTrack *track = getTrack();\n\n\tTag compressionTag;\n\t/* Pascal strings can occupy only 255 bytes (+ a size byte). */\n\tchar compressionName[256];\n\n\tif (isAIFFC())\n\t{\n\t\tif (track->f.compressionType == AF_COMPRESSION_NONE)\n\t\t{\n\t\t\tif (track->f.sampleFormat == AF_SAMPFMT_TWOSCOMP)\n\t\t\t{\n\t\t\t\tcompressionTag = \"NONE\";\n\t\t\t\tstrcpy(compressionName, \"not compressed\");\n\t\t\t}\n\t\t\telse if (track->f.sampleFormat == AF_SAMPFMT_FLOAT)\n\t\t\t{\n\t\t\t\tcompressionTag = \"fl32\";\n\t\t\t\tstrcpy(compressionName, \"32-bit Floating Point\");\n\t\t\t}\n\t\t\telse if (track->f.sampleFormat == AF_SAMPFMT_DOUBLE)\n\t\t\t{\n\t\t\t\tcompressionTag = \"fl64\";\n\t\t\t\tstrcpy(compressionName, \"64-bit Floating Point\");\n\t\t\t}\n\t\t\t/*\n\t\t\t\tWe disallow unsigned sample data for\n\t\t\t\tAIFF files in _af_aiff_complete_setup,\n\t\t\t\tso the next condition should never be\n\t\t\t\tsatisfied.\n\t\t\t*/\n\t\t\telse if (track->f.sampleFormat == AF_SAMPFMT_UNSIGNED)\n\t\t\t{\n\t\t\t\t_af_error(AF_BAD_SAMPFMT,\n\t\t\t\t\t\"AIFF/AIFF-C format does not support unsigned data\");\n\t\t\t\tassert(0);\n\t\t\t\treturn AF_FAIL;\n\t\t\t}\n\t\t}\n\t\telse if (track->f.compressionType == AF_COMPRESSION_G711_ULAW)\n\t\t{\n\t\t\tcompressionTag = \"ulaw\";\n\t\t\tstrcpy(compressionName, \"CCITT G.711 u-law\");\n\t\t}\n\t\telse if (track->f.compressionType == AF_COMPRESSION_G711_ALAW)\n\t\t{\n\t\t\tcompressionTag = \"alaw\";\n\t\t\tstrcpy(compressionName, \"CCITT G.711 A-law\");\n\t\t}\n\t\telse if (track->f.compressionType == AF_COMPRESSION_IMA)\n\t\t{\n\t\t\tcompressionTag = \"ima4\";\n\t\t\tstrcpy(compressionName, \"IMA 4:1 compression\");\n\t\t}\n\t}\n\n\tm_fh->write(\"COMM\", 4);\n\n\t/*\n\t\tFor AIFF-C files, the length of the COMM chunk is 22\n\t\tplus the length of the compression name plus the size\n\t\tbyte.  If the length of the data is an odd number of\n\t\tbytes, add a zero pad byte at the end, but don't\n\t\tinclude the pad byte in the chunk's size.\n\t*/\n\tuint32_t chunkSize;\n\tif (isAIFFC())\n\t\tchunkSize = 22 + strlen(compressionName) + 1;\n\telse\n\t\tchunkSize = 18;\n\twriteU32(&chunkSize);\n\n\t/* number of channels, 2 bytes */\n\tuint16_t channelCount = track->f.channelCount;\n\twriteU16(&channelCount);\n\n\t/* number of sample frames, 4 bytes */\n\tuint32_t frameCount = track->totalfframes;\n\tif (track->f.compressionType == AF_COMPRESSION_IMA)\n\t\tframeCount = track->totalfframes / track->f.framesPerPacket;\n\twriteU32(&frameCount);\n\n\t/* sample size, 2 bytes */\n\tuint16_t sampleSize = track->f.sampleWidth;\n\twriteU16(&sampleSize);\n\n\t/* sample rate, 10 bytes */\n\tuint8_t sampleRate[10];\n\t_af_convert_to_ieee_extended(track->f.sampleRate, sampleRate);\n\tm_fh->write(sampleRate, 10);\n\n\tif (isAIFFC())\n\t{\n\t\twriteTag(&compressionTag);\n\t\twritePString(compressionName);\n\t}\n\n\treturn AF_SUCCEED;\n}\n\n/*\n\tThe AESD chunk contains information pertinent to audio recording\n\tdevices.\n*/\nstatus AIFFFile::writeAESD()\n{\n\tTrack *track = getTrack();\n\n\tif (!track->hasAESData)\n\t\treturn AF_SUCCEED;\n\n\tif (m_AESD_offset == 0)\n\t\tm_AESD_offset = m_fh->tell();\n\telse\n\t\tm_fh->seek(m_AESD_offset, File::SeekFromBeginning);\n\n\tif (m_fh->write(\"AESD\", 4) < 4)\n\t\treturn AF_FAIL;\n\n\tuint32_t size = 24;\n\tif (!writeU32(&size))\n\t\treturn AF_FAIL;\n\n\tif (m_fh->write(track->aesData, 24) < 24)\n\t\treturn AF_FAIL;\n\n\treturn AF_SUCCEED;\n}\n\nstatus AIFFFile::writeSSND()\n{\n\tTrack *track = getTrack();\n\n\tif (m_SSND_offset == 0)\n\t\tm_SSND_offset = m_fh->tell();\n\telse\n\t\tm_fh->seek(m_SSND_offset, File::SeekFromBeginning);\n\n\tm_fh->write(\"SSND\", 4);\n\n\tuint32_t chunkSize = track->data_size + 8;\n\twriteU32(&chunkSize);\n\n\tuint32_t zero = 0;\n\t/* data offset */\n\twriteU32(&zero);\n\t/* block size */\n\twriteU32(&zero);\n\n\tif (track->fpos_first_frame == 0)\n\t\ttrack->fpos_first_frame = m_fh->tell();\n\n\treturn AF_SUCCEED;\n}\n\nstatus AIFFFile::writeINST()\n{\n\tuint32_t length = 20;\n\n\tstruct _INST instrumentdata;\n\n\tinstrumentdata.sustainLoopPlayMode =\n\t\tafGetLoopMode(this, AF_DEFAULT_INST, 1);\n\tinstrumentdata.sustainLoopBegin =\n\t\tafGetLoopStart(this, AF_DEFAULT_INST, 1);\n\tinstrumentdata.sustainLoopEnd =\n\t\tafGetLoopEnd(this, AF_DEFAULT_INST, 1);\n\n\tinstrumentdata.releaseLoopPlayMode =\n\t\tafGetLoopMode(this, AF_DEFAULT_INST, 2);\n\tinstrumentdata.releaseLoopBegin =\n\t\tafGetLoopStart(this, AF_DEFAULT_INST, 2);\n\tinstrumentdata.releaseLoopEnd =\n\t\tafGetLoopEnd(this, AF_DEFAULT_INST, 2);\n\n\tm_fh->write(\"INST\", 4);\n\twriteU32(&length);\n\n\tinstrumentdata.baseNote =\n\t\tafGetInstParamLong(this, AF_DEFAULT_INST, AF_INST_MIDI_BASENOTE);\n\twriteU8(&instrumentdata.baseNote);\n\tinstrumentdata.detune =\n\t\tafGetInstParamLong(this, AF_DEFAULT_INST, AF_INST_NUMCENTS_DETUNE);\n\twriteS8(&instrumentdata.detune);\n\tinstrumentdata.lowNote =\n\t\tafGetInstParamLong(this, AF_DEFAULT_INST, AF_INST_MIDI_LONOTE);\n\twriteU8(&instrumentdata.lowNote);\n\tinstrumentdata.highNote =\n\t\tafGetInstParamLong(this, AF_DEFAULT_INST, AF_INST_MIDI_HINOTE);\n\twriteU8(&instrumentdata.highNote);\n\tinstrumentdata.lowVelocity =\n\t\tafGetInstParamLong(this, AF_DEFAULT_INST, AF_INST_MIDI_LOVELOCITY);\n\twriteU8(&instrumentdata.lowVelocity);\n\tinstrumentdata.highVelocity =\n\t\tafGetInstParamLong(this, AF_DEFAULT_INST, AF_INST_MIDI_HIVELOCITY);\n\twriteU8(&instrumentdata.highVelocity);\n\n\tinstrumentdata.gain =\n\t\tafGetInstParamLong(this, AF_DEFAULT_INST, AF_INST_NUMDBS_GAIN);\n\twriteS16(&instrumentdata.gain);\n\n\twriteU16(&instrumentdata.sustainLoopPlayMode);\n\twriteU16(&instrumentdata.sustainLoopBegin);\n\twriteU16(&instrumentdata.sustainLoopEnd);\n\n\twriteU16(&instrumentdata.releaseLoopPlayMode);\n\twriteU16(&instrumentdata.releaseLoopBegin);\n\twriteU16(&instrumentdata.releaseLoopEnd);\n\n\treturn AF_SUCCEED;\n}\n\nstatus AIFFFile::writeMARK()\n{\n\tTrack *track = getTrack();\n\tif (!track->markerCount)\n\t\treturn AF_SUCCEED;\n\n\tif (m_MARK_offset == 0)\n\t\tm_MARK_offset = m_fh->tell();\n\telse\n\t\tm_fh->seek(m_MARK_offset, File::SeekFromBeginning);\n\n\tTag markTag(\"MARK\");\n\tuint32_t length = 0;\n\n\twriteTag(&markTag);\n\twriteU32(&length);\n\n\tAFfileoffset chunkStartPosition = m_fh->tell();\n\n\tuint16_t numMarkers = track->markerCount;\n\twriteU16(&numMarkers);\n\n\tfor (unsigned i=0; i<numMarkers; i++)\n\t{\n\t\tuint16_t id = track->markers[i].id;\n\t\twriteU16(&id);\n\n\t\tuint32_t position = track->markers[i].position;\n\t\twriteU32(&position);\n\n\t\tconst char *name = track->markers[i].name;\n\t\tassert(name);\n\n\t\t// Write the name as a Pascal-style string.\n\t\twritePString(name);\n\t}\n\n\tAFfileoffset chunkEndPosition = m_fh->tell();\n\tlength = chunkEndPosition - chunkStartPosition;\n\n\tm_fh->seek(chunkStartPosition - 4, File::SeekFromBeginning);\n\n\twriteU32(&length);\n\tm_fh->seek(chunkEndPosition, File::SeekFromBeginning);\n\n\treturn AF_SUCCEED;\n}\n\n/*\n\tThe FVER chunk, if present, is always the first chunk in the file.\n*/\nstatus AIFFFile::writeFVER()\n{\n\tuint32_t chunkSize, timeStamp;\n\n\tassert(isAIFFC());\n\n\tif (m_FVER_offset == 0)\n\t\tm_FVER_offset = m_fh->tell();\n\telse\n\t\tm_fh->seek(m_FVER_offset, File::SeekFromBeginning);\n\n\tm_fh->write(\"FVER\", 4);\n\n\tchunkSize = 4;\n\twriteU32(&chunkSize);\n\n\ttimeStamp = AIFC_VERSION_1;\n\twriteU32(&timeStamp);\n\n\treturn AF_SUCCEED;\n}\n\n/*\n\tWriteMiscellaneous writes all the miscellaneous data chunks in a\n\tfile handle structure to an AIFF or AIFF-C file.\n*/\nstatus AIFFFile::writeMiscellaneous()\n{\n\tif (m_miscellaneousPosition == 0)\n\t\tm_miscellaneousPosition = m_fh->tell();\n\telse\n\t\tm_fh->seek(m_miscellaneousPosition, File::SeekFromBeginning);\n\n\tfor (int i=0; i<m_miscellaneousCount; i++)\n\t{\n\t\tMiscellaneous *misc = &m_miscellaneous[i];\n\t\tTag chunkType;\n\t\tuint32_t chunkSize;\n\t\tuint8_t padByte = 0;\n\n\t\tswitch (misc->type)\n\t\t{\n\t\t\tcase AF_MISC_NAME:\n\t\t\t\tchunkType = \"NAME\"; break;\n\t\t\tcase AF_MISC_AUTH:\n\t\t\t\tchunkType = \"AUTH\"; break;\n\t\t\tcase AF_MISC_COPY:\n\t\t\t\tchunkType = \"(c) \"; break;\n\t\t\tcase AF_MISC_ANNO:\n\t\t\t\tchunkType = \"ANNO\"; break;\n\t\t\tcase AF_MISC_MIDI:\n\t\t\t\tchunkType = \"MIDI\"; break;\n\t\t\tcase AF_MISC_APPL:\n\t\t\t\tchunkType = \"APPL\"; break;\n\t\t}\n\n\t\twriteTag(&chunkType);\n\n\t\tchunkSize = misc->size;\n\t\twriteU32(&chunkSize);\n\t\t/*\n\t\t\tWrite the miscellaneous buffer and then a pad byte\n\t\t\tif necessary.  If the buffer is null, skip the space\n\t\t\tfor now.\n\t\t*/\n\t\tif (misc->buffer != NULL)\n\t\t\tm_fh->write(misc->buffer, misc->size);\n\t\telse\n\t\t\tm_fh->seek(misc->size, File::SeekFromCurrent);\n\n\t\tif (misc->size % 2 != 0)\n\t\t\twriteU8(&padByte);\n\t}\n\n\treturn AF_SUCCEED;\n}\n\nvoid AIFFFile::initCompressionParams()\n{\n\tTrack *track = getTrack();\n\tif (track->f.compressionType == AF_COMPRESSION_IMA)\n\t\tinitIMACompressionParams();\n}\n\nvoid AIFFFile::initIMACompressionParams()\n{\n\tTrack *track = getTrack();\n\n\ttrack->f.bytesPerPacket = 34 * track->f.channelCount;\n\ttrack->f.framesPerPacket = 64;\n\n\tAUpvlist pv = AUpvnew(1);\n\tAUpvsetparam(pv, 0, _AF_IMA_ADPCM_TYPE);\n\tAUpvsetvaltype(pv, 0, AU_PVTYPE_LONG);\n\tlong l = _AF_IMA_ADPCM_TYPE_QT;\n\tAUpvsetval(pv, 0, &l);\n\n\ttrack->f.compressionParams = pv;\n}\n\n// Read a Pascal-style string.\nbool AIFFFile::readPString(char s[256])\n{\n\tuint8_t length;\n\tif (m_fh->read(&length, 1) != 1)\n\t\treturn false;\n\tif (m_fh->read(s, length) != static_cast<ssize_t>(length))\n\t\treturn false;\n\ts[length] = '\\0';\n\treturn true;\n}\n\n// Write a Pascal-style string.\nbool AIFFFile::writePString(const char *s)\n{\n\tsize_t length = strlen(s);\n\tif (length > 255)\n\t\treturn false;\n\tuint8_t sizeByte = static_cast<uint8_t>(length);\n\tif (m_fh->write(&sizeByte, 1) != 1)\n\t\treturn false;\n\tif (m_fh->write(s, length) != (ssize_t) length)\n\t\treturn false;\n\t/*\n\t\tAdd a pad byte if the length of the Pascal-style string\n\t\t(including the size byte) is odd.\n\t*/\n\tif ((length % 2) == 0)\n\t{\n\t\tuint8_t zero = 0;\n\t\tif (m_fh->write(&zero, 1) != 1)\n\t\t\treturn false;\n\t}\n\treturn true;\n}\n\n// file: AudioFormat.cpp\n/*\n\tAudio File Library\n\tCopyright (C) 2010, Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n\n#include <assert.h>\n#include <stdio.h>\n\nsize_t AudioFormat::bytesPerSample(bool stretch3to4) const\n{\n\tswitch (sampleFormat)\n\t{\n\t\tcase AF_SAMPFMT_FLOAT:\n\t\t\treturn sizeof (float);\n\t\tcase AF_SAMPFMT_DOUBLE:\n\t\t\treturn sizeof (double);\n\t\tdefault:\n\t\t{\n\t\t\tint size = (sampleWidth + 7) / 8;\n\t\t\tif (compressionType == AF_COMPRESSION_NONE &&\n\t\t\t\tsize == 3 && stretch3to4)\n\t\t\t\tsize = 4;\n\t\t\treturn size;\n\t\t}\n\t}\n}\n\nsize_t AudioFormat::bytesPerFrame(bool stretch3to4) const\n{\n\treturn bytesPerSample(stretch3to4) * channelCount;\n}\n\nsize_t AudioFormat::bytesPerSample() const\n{\n\treturn bytesPerSample(!isPacked());\n}\n\nsize_t AudioFormat::bytesPerFrame() const\n{\n\treturn bytesPerFrame(!isPacked());\n}\n\nbool AudioFormat::isInteger() const\n{\n\treturn sampleFormat == AF_SAMPFMT_TWOSCOMP ||\n\t\tsampleFormat == AF_SAMPFMT_UNSIGNED;\n}\n\nbool AudioFormat::isSigned() const\n{\n\treturn sampleFormat == AF_SAMPFMT_TWOSCOMP;\n}\n\nbool AudioFormat::isUnsigned() const\n{\n\treturn sampleFormat == AF_SAMPFMT_UNSIGNED;\n}\n\nbool AudioFormat::isFloat() const\n{\n\treturn sampleFormat == AF_SAMPFMT_FLOAT ||\n\t\tsampleFormat == AF_SAMPFMT_DOUBLE;\n}\n\nbool AudioFormat::isCompressed() const\n{\n\treturn compressionType != AF_COMPRESSION_NONE;\n}\n\nbool AudioFormat::isUncompressed() const\n{\n\treturn compressionType == AF_COMPRESSION_NONE;\n}\n\nvoid AudioFormat::computeBytesPerPacketPCM()\n{\n\tassert(isUncompressed());\n\tint bytesPerSample = (sampleWidth + 7) / 8;\n\tbytesPerPacket = bytesPerSample * channelCount;\n}\n\nstd::string AudioFormat::description() const\n{\n\tstd::string d;\n\tchar s[1024];\n\t/* sampleRate, channelCount */\n\tsprintf(s, \"{ %7.2f Hz %d ch \", sampleRate, channelCount);\n\td += s;\n\n\t/* sampleFormat, sampleWidth */\n\tswitch (sampleFormat)\n\t{\n\t\tcase AF_SAMPFMT_TWOSCOMP:\n\t\t\tsprintf(s, \"%db 2 \", sampleWidth);\n\t\t\tbreak;\n\t\tcase AF_SAMPFMT_UNSIGNED:\n\t\t\tsprintf(s, \"%db u \", sampleWidth);\n\t\t\tbreak;\n\t\tcase AF_SAMPFMT_FLOAT:\n\t\t\tsprintf(s, \"flt \");\n\t\t\tbreak;\n\t\tcase AF_SAMPFMT_DOUBLE:\n\t\t\tsprintf(s, \"dbl \");\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tassert(false);\n\t\t\tbreak;\n\t}\n\n\td += s;\n\n\t/* pcm */\n\tsprintf(s, \"(%.30g+-%.30g [%.30g,%.30g]) \",\n\t\tpcm.intercept, pcm.slope,\n\t\tpcm.minClip, pcm.maxClip);\n\td += s;\n\n\t/* byteOrder */\n\tswitch (byteOrder)\n\t{\n\t\tcase AF_BYTEORDER_BIGENDIAN:\n\t\t\td += \"big \";\n\t\t\tbreak;\n\t\tcase AF_BYTEORDER_LITTLEENDIAN:\n\t\t\td += \"little \";\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tassert(false);\n\t\t\tbreak;\n\t}\n\n\tif (isCompressed())\n\t{\n\t\tconst CompressionUnit *unit = _af_compression_unit_from_id(compressionType);\n\t\tassert(unit);\n\t\td += \"compression: \";\n\t\td += unit->label;\n\t}\n\n\treturn d;\n}\n\n// file: Buffer.cpp\n/*\n\tAudio File Library\n\tCopyright (C) 2013 Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n\n#include <string.h>\n\nBuffer::Buffer() : m_data(0), m_size(0)\n{\n}\n\nBuffer::Buffer(size_t size) : m_data(0), m_size(0)\n{\n\tif (size)\n\t\tm_data = ::operator new(size);\n\tif (m_data)\n\t{\n\t\tm_size = size;\n\t}\n}\n\nBuffer::Buffer(const void *data, size_t size) : m_data(0), m_size(0)\n{\n\tif (size)\n\t\tm_data = ::operator new(size);\n\tif (m_data)\n\t{\n\t\t::memcpy(m_data, data, m_size);\n\t\tm_size = size;\n\t}\n}\n\nBuffer::~Buffer()\n{\n\t::operator delete(m_data);\n}\n\n// file: File.cpp\n/*\n\tCopyright (C) 2010, Michael Pruett. All rights reserved.\n\n\tRedistribution and use in source and binary forms, with or without\n\tmodification, are permitted provided that the following conditions\n\tare met:\n\n\t1. Redistributions of source code must retain the above copyright\n\tnotice, this list of conditions and the following disclaimer.\n\n\t2. Redistributions in binary form must reproduce the above copyright\n\tnotice, this list of conditions and the following disclaimer in the\n\tdocumentation and/or other materials provided with the distribution.\n\n\t3. The name of the author may not be used to endorse or promote products\n\tderived from this software without specific prior written permission.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR\n\tIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n\tOF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n\tIN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,\n\tINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n\tNOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n\tDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n\tTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n\tTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n\n\n#include <assert.h>\n#include <fcntl.h>\n#include <stdlib.h>\n#include <sys/stat.h>\n#include <sys/types.h>\n#include <unistd.h>\n#include <stdio.h>\n\nclass FilePOSIX : public File\n{\npublic:\n\tFilePOSIX(int fd, AccessMode mode) : File(mode), m_fd(fd) { }\n\tvirtual ~FilePOSIX() { close(); }\n\n\tvirtual int close() OVERRIDE;\n\tvirtual ssize_t read(void *data, size_t nbytes) OVERRIDE;\n\tvirtual ssize_t write(const void *data, size_t nbytes) OVERRIDE;\n\tvirtual off_t length() OVERRIDE;\n\tvirtual off_t seek(off_t offset, SeekOrigin origin) OVERRIDE;\n\tvirtual off_t tell() OVERRIDE;\n\nprivate:\n\tint m_fd;\n};\n\nclass FileVF : public File\n{\npublic:\n\tFileVF(AFvirtualfile *vf, AccessMode mode) : File(mode), m_vf(vf) { }\n\tvirtual ~FileVF() { close(); }\n\n\tvirtual int close() OVERRIDE;\n\tvirtual ssize_t read(void *data, size_t nbytes) OVERRIDE;\n\tvirtual ssize_t write(const void *data, size_t nbytes) OVERRIDE;\n\tvirtual off_t length() OVERRIDE;\n\tvirtual off_t seek(off_t offset, SeekOrigin origin) OVERRIDE;\n\tvirtual off_t tell() OVERRIDE;\n\nprivate:\n\tAFvirtualfile *m_vf;\n};\n\nFile *File::open(const char *path, File::AccessMode mode)\n{\n\tint flags = 0;\n\tif (mode == ReadAccess)\n\t\tflags = O_RDONLY;\n\telse if (mode == WriteAccess)\n\t\tflags = O_CREAT | O_WRONLY | O_TRUNC;\n#if defined(WIN32) || defined(__CYGWIN__)\n\tflags |= O_BINARY;\n#endif\n\tint fd = ::open(path, flags, 0666);\n\tif (fd == -1)\n\t\treturn NULL;\n\tFile *file = new FilePOSIX(fd, mode);\n\treturn file;\n}\n\nFile *File::create(int fd, File::AccessMode mode)\n{\n\treturn new FilePOSIX(fd, mode);\n}\n\nFile *File::create(AFvirtualfile *vf, File::AccessMode mode)\n{\n\treturn new FileVF(vf, mode);\n}\n\nFile::~File()\n{\n}\n\nbool File::canSeek()\n{\n\treturn seek(0, File::SeekFromCurrent) != -1;\n}\n\nint FilePOSIX::close()\n{\n\tif (m_fd == -1)\n\t\treturn 0;\n\n\tint result = ::close(m_fd);\n\tm_fd = -1;\n\treturn result;\n}\n\nssize_t FilePOSIX::read(void *data, size_t nbytes)\n{\n\treturn ::read(m_fd, data, nbytes);\n}\n\nssize_t FilePOSIX::write(const void *data, size_t nbytes)\n{\n\treturn ::write(m_fd, data, nbytes);\n}\n\noff_t FilePOSIX::length()\n{\n\toff_t current = tell();\n\tif (current == -1)\n\t\treturn -1;\n\toff_t length = seek(0, SeekFromEnd);\n\tif (length == -1)\n\t\treturn -1;\n\tseek(current, SeekFromBeginning);\n\treturn length;\n}\n\noff_t FilePOSIX::seek(off_t offset, File::SeekOrigin origin)\n{\n\tint whence;\n\tswitch (origin)\n\t{\n\t\tcase SeekFromBeginning: whence = SEEK_SET; break;\n\t\tcase SeekFromCurrent: whence = SEEK_CUR; break;\n\t\tcase SeekFromEnd: whence = SEEK_END; break;\n\t\tdefault: assert(false); return -1;\n\t}\n\treturn ::lseek(m_fd, offset, whence);\n}\n\noff_t FilePOSIX::tell()\n{\n\treturn seek(0, File::SeekFromCurrent);\n}\n\nint FileVF::close()\n{\n\tif (m_vf)\n\t\taf_virtual_file_destroy(m_vf);\n\tm_vf = 0;\n\treturn 0;\n}\n\nssize_t FileVF::read(void *data, size_t nbytes)\n{\n\treturn m_vf->read(m_vf, data, nbytes);\n}\n\nssize_t FileVF::write(const void *data, size_t nbytes)\n{\n\treturn m_vf->write(m_vf, data, nbytes);\n}\n\noff_t FileVF::length()\n{\n\treturn m_vf->length(m_vf);\n}\n\noff_t FileVF::seek(off_t offset, SeekOrigin origin)\n{\n\tif (origin == SeekFromEnd)\n\t\toffset += length();\n\treturn m_vf->seek(m_vf, offset, origin == SeekFromCurrent);\n}\n\noff_t FileVF::tell()\n{\n\treturn m_vf->tell(m_vf);\n}\n\n// file: FileHandle.cpp\n/*\n\tAudio File Library\n\tCopyright (C) 2010-2012, Michael Pruett <michael@68k.org>\n\tCopyright (C) 2000-2001, Silicon Graphics, Inc.\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n\n#include <stdlib.h>\n#include <assert.h>\n\n\n\nstatic void freeInstParams (AFPVu *values, int fileFormat)\n{\n\tif (!values)\n\t\treturn;\n\n\tint parameterCount = _af_units[fileFormat].instrumentParameterCount;\n\n\tfor (int i=0; i<parameterCount; i++)\n\t{\n\t\tif (_af_units[fileFormat].instrumentParameters[i].type == AU_PVTYPE_PTR)\n\t\t\tfree(values[i].v);\n\t}\n\n\tfree(values);\n}\n\n_AFfilehandle *_AFfilehandle::create(int fileFormat)\n{\n\tswitch (fileFormat)\n\t{\n\t\tcase AF_FILE_RAWDATA:\n\t\t\treturn new RawFile();\n\t\tcase AF_FILE_AIFF:\n\t\tcase AF_FILE_AIFFC:\n\t\t\treturn new AIFFFile();\n\t\tcase AF_FILE_WAVE:\n\t\t\treturn new WAVEFile();\n\t\tdefault:\n\t\t\treturn NULL;\n\t}\n}\n\n_AFfilehandle::_AFfilehandle()\n{\n\tm_valid = _AF_VALID_FILEHANDLE;\n\tm_access = 0;\n\tm_seekok = false;\n\tm_fh = NULL;\n\tm_fileName = NULL;\n\tm_fileFormat = AF_FILE_UNKNOWN;\n\tm_trackCount = 0;\n\tm_tracks = NULL;\n\tm_instrumentCount = 0;\n\tm_instruments = NULL;\n\tm_miscellaneousCount = 0;\n\tm_miscellaneous = NULL;\n\tm_formatByteOrder = 0;\n}\n\n_AFfilehandle::~_AFfilehandle()\n{\n\tm_valid = 0;\n\n\tfree(m_fileName);\n\n\tdelete [] m_tracks;\n\tm_tracks = NULL;\n\tm_trackCount = 0;\n\n\tif (m_instruments)\n\t{\n\t\tfor (int i=0; i<m_instrumentCount; i++)\n\t\t{\n\t\t\tfree(m_instruments[i].loops);\n\t\t\tm_instruments[i].loops = NULL;\n\t\t\tm_instruments[i].loopCount = 0;\n\n\t\t\tfreeInstParams(m_instruments[i].values, m_fileFormat);\n\t\t\tm_instruments[i].values = NULL;\n\t\t}\n\n\t\tfree(m_instruments);\n\t\tm_instruments = NULL;\n\t}\n\tm_instrumentCount = 0;\n\n\tif (m_miscellaneous)\n\t{\n\t\tfor (int i=0; i<m_miscellaneousCount; i++)\n\t\t\tfree(m_miscellaneous[i].buffer);\n\t\tfree(m_miscellaneous);\n\t\tm_miscellaneous = NULL;\n\t}\n\tm_miscellaneousCount = 0;\n}\n\nTrack *_AFfilehandle::allocateTrack()\n{\n\tassert(!m_trackCount);\n\tassert(!m_tracks);\n\n\tm_trackCount = 1;\n\tm_tracks = new Track[1];\n\treturn m_tracks;\n}\n\nTrack *_AFfilehandle::getTrack(int trackID)\n{\n\tfor (int i=0; i<m_trackCount; i++)\n\t\tif (m_tracks[i].id == trackID)\n\t\t\treturn &m_tracks[i];\n\n\t_af_error(AF_BAD_TRACKID, \"bad track id %d\", trackID);\n\n\treturn NULL;\n}\n\nbool _AFfilehandle::checkCanRead()\n{\n\tif (m_access != _AF_READ_ACCESS)\n\t{\n\t\t_af_error(AF_BAD_NOREADACC, \"file not opened for read access\");\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\nbool _AFfilehandle::checkCanWrite()\n{\n\tif (m_access != _AF_WRITE_ACCESS)\n\t{\n\t\t_af_error(AF_BAD_NOWRITEACC, \"file not opened for write access\");\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\nInstrument *_AFfilehandle::getInstrument(int instrumentID)\n{\n\tfor (int i = 0; i < m_instrumentCount; i++)\n\t\tif (m_instruments[i].id == instrumentID)\n\t\t\treturn &m_instruments[i];\n\n\t_af_error(AF_BAD_INSTID, \"invalid instrument id %d\", instrumentID);\n\treturn NULL;\n}\n\nMiscellaneous *_AFfilehandle::getMiscellaneous(int miscellaneousID)\n{\n\tfor (int i=0; i<m_miscellaneousCount; i++)\n\t{\n\t\tif (m_miscellaneous[i].id == miscellaneousID)\n\t\t\treturn &m_miscellaneous[i];\n\t}\n\n\t_af_error(AF_BAD_MISCID, \"bad miscellaneous id %d\", miscellaneousID);\n\n\treturn NULL;\n}\n\nstatus _AFfilehandle::initFromSetup(AFfilesetup setup)\n{\n\tif (copyTracksFromSetup(setup) == AF_FAIL)\n\t\treturn AF_FAIL;\n\tif (copyInstrumentsFromSetup(setup) == AF_FAIL)\n\t\treturn AF_FAIL;\n\tif (copyMiscellaneousFromSetup(setup) == AF_FAIL)\n\t\treturn AF_FAIL;\n\treturn AF_SUCCEED;\n}\n\nstatus _AFfilehandle::copyTracksFromSetup(AFfilesetup setup)\n{\n\tif ((m_trackCount = setup->trackCount) == 0)\n\t{\n\t\tm_tracks = NULL;\n\t\treturn AF_SUCCEED;\n\t}\n\n\tm_tracks = new Track[m_trackCount];\n\tif (!m_tracks)\n\t\treturn AF_FAIL;\n\n\tfor (int i=0; i<m_trackCount; i++)\n\t{\n\t\tTrack *track = &m_tracks[i];\n\t\tTrackSetup *trackSetup = &setup->tracks[i];\n\n\t\ttrack->id = trackSetup->id;\n\t\ttrack->f = trackSetup->f;\n\n\t\tif (track->copyMarkers(trackSetup) == AF_FAIL)\n\t\t\treturn AF_FAIL;\n\n\t\ttrack->hasAESData = trackSetup->aesDataSet;\n\t}\n\n\treturn AF_SUCCEED;\n}\n\nstatus _AFfilehandle::copyInstrumentsFromSetup(AFfilesetup setup)\n{\n\tif ((m_instrumentCount = setup->instrumentCount) == 0)\n\t{\n\t\tm_instruments = NULL;\n\t\treturn AF_SUCCEED;\n\t}\n\n\tm_instruments = static_cast<Instrument *>(_af_calloc(m_instrumentCount,\n\t\tsizeof (Instrument)));\n\tif (!m_instruments)\n\t\treturn AF_FAIL;\n\n\tfor (int i=0; i<m_instrumentCount; i++)\n\t{\n\t\tm_instruments[i].id = setup->instruments[i].id;\n\n\t\t// Copy loops.\n\t\tif ((m_instruments[i].loopCount = setup->instruments[i].loopCount) == 0)\n\t\t{\n\t\t\tm_instruments[i].loops = NULL;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tm_instruments[i].loops =\n\t\t\t\tstatic_cast<Loop *>(_af_calloc(m_instruments[i].loopCount,\n\t\t\t\t\tsizeof (Loop)));\n\t\t\tif (!m_instruments[i].loops)\n\t\t\t\treturn AF_FAIL;\n\t\t\tfor (int j=0; j<m_instruments[i].loopCount; j++)\n\t\t\t{\n\t\t\t\tLoop *loop = &m_instruments[i].loops[j];\n\t\t\t\tloop->id = setup->instruments[i].loops[j].id;\n\t\t\t\tloop->mode = AF_LOOP_MODE_NOLOOP;\n\t\t\t\tloop->count = 0;\n\t\t\t\tloop->trackid = AF_DEFAULT_TRACK;\n\t\t\t\tloop->beginMarker = 2*j + 1;\n\t\t\t\tloop->endMarker = 2*j + 2;\n\t\t\t}\n\t\t}\n\n\t\tint instParamCount;\n\t\t// Copy instrument parameters.\n\t\tif ((instParamCount = _af_units[setup->fileFormat].instrumentParameterCount) == 0)\n\t\t{\n\t\t\tm_instruments[i].values = NULL;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tm_instruments[i].values =\n\t\t\t\tstatic_cast<AFPVu *>(_af_calloc(instParamCount, sizeof (AFPVu)));\n\t\t\tif (!m_instruments[i].values)\n\t\t\t\treturn AF_FAIL;\n\t\t\tfor (int j=0; j<instParamCount; j++)\n\t\t\t{\n\t\t\t\tm_instruments[i].values[j] = _af_units[setup->fileFormat].instrumentParameters[j].defaultValue;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn AF_SUCCEED;\n}\n\nstatus _AFfilehandle::copyMiscellaneousFromSetup(AFfilesetup setup)\n{\n\tif ((m_miscellaneousCount = setup->miscellaneousCount) == 0)\n\t{\n\t\tm_miscellaneous = NULL;\n\t\treturn AF_SUCCEED;\n\t}\n\n\tm_miscellaneous = static_cast<Miscellaneous *>(_af_calloc(m_miscellaneousCount,\n\t\tsizeof (Miscellaneous)));\n\tif (!m_miscellaneous)\n\t\treturn AF_FAIL;\n\n\tfor (int i=0; i<m_miscellaneousCount; i++)\n\t{\n\t\tm_miscellaneous[i].id = setup->miscellaneous[i].id;\n\t\tm_miscellaneous[i].type = setup->miscellaneous[i].type;\n\t\tm_miscellaneous[i].size = setup->miscellaneous[i].size;\n\t\tm_miscellaneous[i].position = 0;\n\t\tm_miscellaneous[i].buffer = NULL;\n\t}\n\n\treturn AF_SUCCEED;\n}\n\ntemplate <typename T>\nstatic bool readValue(File *f, T *value)\n{\n\treturn f->read(value, sizeof (*value)) == sizeof (*value);\n}\n\ntemplate <typename T>\nstatic bool writeValue(File *f, const T *value)\n{\n\treturn f->write(value, sizeof (*value)) == sizeof (*value);\n}\n\ntemplate <typename T>\nstatic T swapValue(T value, int order)\n{\n\tif (order == AF_BYTEORDER_BIGENDIAN)\n\t\treturn bigToHost(value);\n\telse if (order == AF_BYTEORDER_LITTLEENDIAN)\n\t\treturn littleToHost(value);\n\treturn value;\n}\n\ntemplate <typename T>\nstatic bool readSwap(File *f, T *value, int order)\n{\n\tif (!readValue(f, value)) return false;\n\t*value = swapValue(*value, order);\n\treturn true;\n}\n\ntemplate <typename T>\nstatic bool writeSwap(File *f, const T *value, int order)\n{\n\tT t = swapValue(*value, order);\n\treturn writeValue(f, &t);\n}\n\nbool _AFfilehandle::readU8(uint8_t *v) { return readValue(m_fh, v); }\nbool _AFfilehandle::readS8(int8_t *v) { return readValue(m_fh, v); }\n\nbool _AFfilehandle::readU16(uint16_t *v)\n{\n\treturn readSwap(m_fh, v, m_formatByteOrder);\n}\n\nbool _AFfilehandle::readS16(int16_t *v)\n{\n\treturn readSwap(m_fh, v, m_formatByteOrder);\n}\n\nbool _AFfilehandle::readU32(uint32_t *v)\n{\n\treturn readSwap(m_fh, v, m_formatByteOrder);\n}\n\nbool _AFfilehandle::readS32(int32_t *v)\n{\n\treturn readSwap(m_fh, v, m_formatByteOrder);\n}\n\nbool _AFfilehandle::readU64(uint64_t *v)\n{\n\treturn readSwap(m_fh, v, m_formatByteOrder);\n}\n\nbool _AFfilehandle::readS64(int64_t *v)\n{\n\treturn readSwap(m_fh, v, m_formatByteOrder);\n}\n\nbool _AFfilehandle::readFloat(float *v)\n{\n\treturn readSwap(m_fh, v, m_formatByteOrder);\n}\n\nbool _AFfilehandle::readDouble(double *v)\n{\n\treturn readSwap(m_fh, v, m_formatByteOrder);\n}\n\nbool _AFfilehandle::writeU8(const uint8_t *v) { return writeValue(m_fh, v); }\nbool _AFfilehandle::writeS8(const int8_t *v) { return writeValue(m_fh, v); }\n\nbool _AFfilehandle::writeU16(const uint16_t *v)\n{\n\treturn writeSwap(m_fh, v, m_formatByteOrder);\n}\n\nbool _AFfilehandle::writeS16(const int16_t *v)\n{\n\treturn writeSwap(m_fh, v, m_formatByteOrder);\n}\n\nbool _AFfilehandle::writeU32(const uint32_t *v)\n{\n\treturn writeSwap(m_fh, v, m_formatByteOrder);\n}\n\nbool _AFfilehandle::writeS32(const int32_t *v)\n{\n\treturn writeSwap(m_fh, v, m_formatByteOrder);\n}\n\nbool _AFfilehandle::writeU64(const uint64_t *v)\n{\n\treturn writeSwap(m_fh, v, m_formatByteOrder);\n}\n\nbool _AFfilehandle::writeS64(const int64_t *v)\n{\n\treturn writeSwap(m_fh, v, m_formatByteOrder);\n}\n\nbool _AFfilehandle::writeFloat(const float *v)\n{\n\treturn writeSwap(m_fh, v, m_formatByteOrder);\n}\n\nbool _AFfilehandle::writeDouble(const double *v)\n{\n\treturn writeSwap(m_fh, v, m_formatByteOrder);\n}\n\nbool _AFfilehandle::readTag(Tag *t)\n{\n\tuint32_t v;\n\tif (m_fh->read(&v, sizeof (v)) == sizeof (v))\n\t{\n\t\t*t = Tag(v);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nbool _AFfilehandle::writeTag(const Tag *t)\n{\n\tuint32_t v = t->value();\n\treturn m_fh->write(&v, sizeof (v)) == sizeof (v);\n}\n\n// file: Instrument.cpp\n/*\n\tAudio File Library\n\tCopyright (C) 1998-2000, Michael Pruett <michael@68k.org>\n\tCopyright (C) 2000, Silicon Graphics, Inc.\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\tInstrument.cpp\n\n\tInfo about instrument parameters:\n\n\tEach unit has an array of _InstParamInfo structures, one for\n\teach instrument parameter.  Each of these structures describes\n\tthe inst parameters.\n\n\tid: a 4-byte id as in AIFF file\n\ttype: data type AU_PVLIST_*\n\tname: text name\n\tdefaultValue: default value, to which it is set when a file with\n\t\tinstruments is first opened for writing.\n\n\tEach inst has only an array of values (_AFPVu's).  Each value in the\n\tinstrument's array is the value of the corresponding index into the\n\tunit's instparaminfo array.\n\n\tSo for a unit u and an instrument i, u.instparam[N] describes\n\tthe parameter whose value is given in i.value[N].\n*/\n\n\n\n#include <stdlib.h>\n\nbool InstrumentSetup::allocateLoops(int count)\n{\n\tfreeLoops();\n\tloops = (LoopSetup *) _af_calloc(count, sizeof (LoopSetup));\n\tif (loops)\n\t{\n\t\tloopCount = count;\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nvoid InstrumentSetup::freeLoops()\n{\n\tif (loops)\n\t\tfree(loops);\n\tloops = NULL;\n\tloopCount = 0;\n}\n\n/*\n\tInitialize instrument id list for audio file.\n*/\nvoid afInitInstIDs (AFfilesetup setup, const int *instids, int ninsts)\n{\n\tif (!_af_filesetup_ok(setup))\n\t\treturn;\n\n\tif (!_af_unique_ids(instids, ninsts, \"instrument\", AF_BAD_INSTID))\n\t\treturn;\n\n\t_af_setup_free_instruments(setup);\n\n\tsetup->instrumentCount = ninsts;\n\tsetup->instrumentSet = true;\n\n\tsetup->instruments = _af_instsetup_new(setup->instrumentCount);\n\n\tfor (int i=0; i < setup->instrumentCount; i++)\n\t\tsetup->instruments[i].id = instids[i];\n}\n\nint afGetInstIDs (AFfilehandle file, int *instids)\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn -1;\n\n\tif (instids)\n\t\tfor (int i=0; i < file->m_instrumentCount; i++)\n\t\t\tinstids[i] = file->m_instruments[i].id;\n\n\treturn file->m_instrumentCount;\n}\n\n/*\n\tThis routine checks and sets instrument parameters.\n\tnpv is number of valid AUpvlist pairs.\n*/\nvoid _af_instparam_set (AFfilehandle file, int instid, AUpvlist pvlist, int npv)\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn;\n\n\tif (!file->checkCanWrite())\n\t\treturn;\n\n\tInstrument *instrument = file->getInstrument(instid);\n\tif (!instrument)\n\t\treturn;\n\n\tif (AUpvgetmaxitems(pvlist) < npv)\n\tnpv = AUpvgetmaxitems(pvlist);\n\n\tfor (int i=0; i < npv; i++)\n\t{\n\t\tint\tparam;\n\n\t\tAUpvgetparam(pvlist, i, &param);\n\n\t\tint j;\n\t\tif ((j = _af_instparam_index_from_id(file->m_fileFormat, param)) == -1)\n\t\t\t/* no parameter with that id; ignore */\n\t\t\tcontinue;\n\n\t\tif (!file->isInstrumentParameterValid(pvlist, i))\n\t\t\t/* bad parameter value; ignore */\n\t\t\tcontinue;\n\n\t\tint\ttype = _af_units[file->m_fileFormat].instrumentParameters[j].type;\n\n\t\tswitch (type)\n\t\t{\n\t\t\tcase AU_PVTYPE_LONG:\n\t\t\t\tAUpvgetval(pvlist, i, &instrument->values[j].l);\n\t\t\t\tbreak;\n\t\t\tcase AU_PVTYPE_DOUBLE:\n\t\t\t\tAUpvgetval(pvlist, i, &instrument->values[j].d);\n\t\t\t\tbreak;\n\t\t\tcase AU_PVTYPE_PTR:\n\t\t\t\tAUpvgetval(pvlist, i, &instrument->values[j].v);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\t}\n}\n\nvoid afSetInstParams (AFfilehandle file, int instid, AUpvlist pvlist, int npv)\n{\n\t_af_instparam_set(file, instid, pvlist, npv);\n}\n\nvoid afSetInstParamLong (AFfilehandle file, int instid, int param, long value)\n{\n\tAUpvlist pvlist = AUpvnew(1);\n\n\tAUpvsetparam(pvlist, 0, param);\n\tAUpvsetvaltype(pvlist, 0, AU_PVTYPE_LONG);\n\tAUpvsetval(pvlist, 0, &value);\n\n\t_af_instparam_set(file, instid, pvlist, 1);\n\n\tAUpvfree(pvlist);\n}\n\n/*\n\tThis routine gets instrument parameters.\n\tnpv is number of valid AUpvlist pairs\n*/\nvoid _af_instparam_get (AFfilehandle file, int instid, AUpvlist pvlist, int npv,\n\tbool forceLong)\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn;\n\n\tInstrument *instrument = file->getInstrument(instid);\n\tif (!instrument)\n\t\treturn;\n\n\tif (AUpvgetmaxitems(pvlist) < npv)\n\t\tnpv = AUpvgetmaxitems(pvlist);\n\n\tfor (int i=0; i < npv; i++)\n\t{\n\t\tint param;\n\t\tAUpvgetparam(pvlist, i, &param);\n\n\t\tint j;\n\t\tif ((j = _af_instparam_index_from_id(file->m_fileFormat, param)) == -1)\n\t\t\t/* no parameter with that id; ignore */\n\t\t\tcontinue;\n\n\t\tint type = _af_units[file->m_fileFormat].instrumentParameters[j].type;\n\n\t\t/*\n\t\t\tforceLong is true when this routine called by\n\t\t\tafGetInstParamLong().\n\t\t*/\n\t\tif (forceLong && type != AU_PVTYPE_LONG)\n\t\t{\n\t\t\t_af_error(AF_BAD_INSTPTYPE, \"type of instrument parameter %d is not AU_PVTYPE_LONG\", param);\n\t\t\tcontinue;\n\t\t}\n\n\t\tAUpvsetvaltype(pvlist, i, type);\n\n\t\tswitch (type)\n\t\t{\n\t\t\tcase AU_PVTYPE_LONG:\n\t\t\t\tAUpvsetval(pvlist, i, &instrument->values[j].l);\n\t\t\t\tbreak;\n\t\t\tcase AU_PVTYPE_DOUBLE:\n\t\t\t\tAUpvsetval(pvlist, i, &instrument->values[j].d);\n\t\t\t\tbreak;\n\t\t\tcase AU_PVTYPE_PTR:\n\t\t\t\tAUpvsetval(pvlist, i, &instrument->values[j].v);\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\t_af_error(AF_BAD_INSTPTYPE, \"invalid instrument parameter type %d\", type);\n\t\t\t\treturn;\n\t\t}\n\t}\n}\n\n/*\n\tafGetInstParams -- get a parameter-value array containing\n\tinstrument parameters for the specified instrument chunk\n*/\nvoid afGetInstParams (AFfilehandle file, int inst, AUpvlist pvlist, int npv)\n{\n\t_af_instparam_get(file, inst, pvlist, npv, false);\n}\n\nlong afGetInstParamLong (AFfilehandle file, int inst, int param)\n{\n\tlong val;\n\tAUpvlist pvlist = AUpvnew(1);\n\n\tAUpvsetparam(pvlist, 0, param);\n\tAUpvsetvaltype(pvlist, 0, AU_PVTYPE_LONG);\n\n\t_af_instparam_get(file, inst, pvlist, 1, true);\n\n\tAUpvgetval(pvlist, 0, &val);\n\tAUpvfree(pvlist);\n\n\treturn(val);\n}\n\n/*\n\tSearch _af_units[fileFormat].instrumentParameters for the instrument\n\tparameter with the specified id.\n\n\tReport an error and return -1 if no such instrument parameter\n\texists.\n*/\n\nint _af_instparam_index_from_id (int filefmt, int id)\n{\n\tint i;\n\n\tfor (i = 0; i < _af_units[filefmt].instrumentParameterCount; i++)\n\t\tif (_af_units[filefmt].instrumentParameters[i].id == id)\n\t\t\tbreak;\n\n\tif (i == _af_units[filefmt].instrumentParameterCount)\n\t{\n\t\t_af_error(AF_BAD_INSTPID, \"invalid instrument parameter id %d\",\n\t\t\tid);\n\t\treturn -1;\n\t}\n\n\treturn i;\n}\n\nLoop *Instrument::getLoop(int loopID)\n{\n\tfor (int i=0; i<loopCount; i++)\n\t\tif (loops[i].id == loopID)\n\t\t\treturn &loops[i];\n\n\t_af_error(AF_BAD_LOOPID, \"no loop with id %d for instrument %d\\n\",\n\t\tloopID, id);\n\treturn NULL;\n}\n\n// file: Loop.cpp\n/*\n\tAudio File Library\n\tCopyright (C) 1998-2000, Michael Pruett <michael@68k.org>\n\tCopyright (C) 2000, Silicon Graphics, Inc.\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\tLoop.cpp\n\n\tAll routines that operate on loops.\n*/\n\n\n\nvoid afInitLoopIDs (AFfilesetup setup, int instid, const int *loopids, int nloops)\n{\n\tif (!_af_filesetup_ok(setup))\n\t\treturn;\n\n\tif (!_af_unique_ids(loopids, nloops, \"loop\", AF_BAD_LOOPID))\n\t\treturn;\n\n\tInstrumentSetup *instrument = setup->getInstrument(instid);\n\tif (!instrument)\n\t\treturn;\n\n\tinstrument->freeLoops();\n\tif (!instrument->allocateLoops(nloops))\n\t\treturn;\n\n\tfor (int i=0; i < nloops; i++)\n\t\tinstrument->loops[i].id = loopids[i];\n}\n\nint afGetLoopIDs (AFfilehandle file, int instid, int *loopids)\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn AF_FAIL;\n\n\tInstrument *instrument = file->getInstrument(instid);\n\tif (!instrument)\n\t\treturn AF_FAIL;\n\n\tif (loopids)\n\t\tfor (int i=0; i < instrument->loopCount; i++)\n\t\t\tloopids[i] = instrument->loops[i].id;\n\n\treturn instrument->loopCount;\n}\n\n/*\n\tgetLoop returns pointer to requested loop if it exists, and if\n\tmustWrite is true, only if handle is writable.\n*/\n\nstatic Loop *getLoop (AFfilehandle handle, int instid, int loopid,\n\tbool mustWrite)\n{\n\tif (!_af_filehandle_ok(handle))\n\t\treturn NULL;\n\n\tif (mustWrite && !handle->checkCanWrite())\n\t\treturn NULL;\n\n\tInstrument *instrument = handle->getInstrument(instid);\n\tif (!instrument)\n\t\treturn NULL;\n\n\treturn instrument->getLoop(loopid);\n}\n\n/*\n\tSet loop mode (as in AF_LOOP_MODE_...).\n*/\nvoid afSetLoopMode (AFfilehandle file, int instid, int loopid, int mode)\n{\n\tLoop *loop = getLoop(file, instid, loopid, true);\n\n\tif (!loop)\n\t\treturn;\n\n\tif (mode != AF_LOOP_MODE_NOLOOP &&\n\t\tmode != AF_LOOP_MODE_FORW &&\n\t\tmode != AF_LOOP_MODE_FORWBAKW)\n\t{\n\t\t_af_error(AF_BAD_LOOPMODE, \"unrecognized loop mode %d\", mode);\n\t\treturn;\n\t}\n\n\tloop->mode = mode;\n}\n\n/*\n\tGet loop mode (as in AF_LOOP_MODE_...).\n*/\nint afGetLoopMode (AFfilehandle file, int instid, int loopid)\n{\n\tLoop *loop = getLoop(file, instid, loopid, false);\n\n\tif (!loop)\n\t\treturn -1;\n\n\treturn loop->mode;\n}\n\n/*\n\tSet loop count.\n*/\nint afSetLoopCount (AFfilehandle file, int instid, int loopid, int count)\n{\n\tLoop *loop = getLoop(file, instid, loopid, true);\n\n\tif (!loop)\n\t\treturn AF_FAIL;\n\n\tif (count < 1)\n\t{\n\t\t_af_error(AF_BAD_LOOPCOUNT, \"invalid loop count: %d\", count);\n\t\treturn AF_FAIL;\n\t}\n\n\tloop->count = count;\n\treturn AF_SUCCEED;\n}\n\n/*\n\tGet loop count.\n*/\nint afGetLoopCount(AFfilehandle file, int instid, int loopid)\n{\n\tLoop *loop = getLoop(file, instid, loopid, false);\n\n\tif (!loop)\n\t\treturn -1;\n\n\treturn loop->count;\n}\n\n/*\n\tSet loop start marker id in the file structure\n*/\nvoid afSetLoopStart(AFfilehandle file, int instid, int loopid, int markid)\n{\n\tLoop *loop = getLoop(file, instid, loopid, true);\n\n\tif (!loop)\n\t\treturn;\n\n\tloop->beginMarker = markid;\n}\n\n/*\n\tGet loop start marker id.\n*/\nint afGetLoopStart (AFfilehandle file, int instid, int loopid)\n{\n\tLoop *loop = getLoop(file, instid, loopid, false);\n\n\tif (!loop)\n\t\treturn -1;\n\n\treturn loop->beginMarker;\n}\n\n/*\n\tSet loop start frame in the file structure.\n*/\nint afSetLoopStartFrame (AFfilehandle file, int instid, int loopid, AFframecount startFrame)\n{\n\tLoop *loop = getLoop(file, instid, loopid, true);\n\n\tif (!loop)\n\t\treturn -1;\n\n\tif (startFrame < 0)\n\t{\n\t\t_af_error(AF_BAD_FRAME, \"loop start frame must not be negative\");\n\t\treturn AF_FAIL;\n\t}\n\n\tint\ttrackid = loop->trackid;\n\tint beginMarker = loop->beginMarker;\n\n\tafSetMarkPosition(file, trackid, beginMarker, startFrame);\n\treturn AF_SUCCEED;\n}\n\n/*\n\tGet loop start frame.\n*/\nAFframecount afGetLoopStartFrame (AFfilehandle file, int instid, int loopid)\n{\n\tLoop *loop = getLoop(file, instid, loopid, false);\n\tif (!loop)\n\t\treturn -1;\n\n\tint trackid = loop->trackid;\n\tint beginMarker = loop->beginMarker;\n\n\treturn afGetMarkPosition(file, trackid, beginMarker);\n}\n\n/*\n\tSet loop track id.\n*/\nvoid afSetLoopTrack (AFfilehandle file, int instid, int loopid, int track)\n{\n\tLoop *loop = getLoop(file, instid, loopid, true);\n\n\tif (!loop) return;\n\n\tloop->trackid = track;\n}\n\n/*\n\tGet loop track.\n*/\nint afGetLoopTrack (AFfilehandle file, int instid, int loopid)\n{\n\tLoop *loop = getLoop(file, instid, loopid, false);\n\n\tif (!loop)\n\t\treturn -1;\n\n\treturn loop->trackid;\n}\n\n/*\n\tSet loop end frame marker id.\n*/\nvoid afSetLoopEnd (AFfilehandle file, int instid, int loopid, int markid)\n{\n\tLoop *loop = getLoop(file, instid, loopid, true);\n\n\tif (!loop)\n\t\treturn;\n\n\tloop->endMarker = markid;\n}\n\n/*\n\tGet loop end frame marker id.\n*/\nint afGetLoopEnd (AFfilehandle file, int instid, int loopid)\n{\n\tLoop *loop = getLoop(file, instid, loopid, false);\n\n\tif (!loop)\n\t\treturn -1;\n\n\treturn loop->endMarker;\n}\n\n/*\n\tSet loop end frame.\n*/\nint afSetLoopEndFrame (AFfilehandle file, int instid, int loopid, AFframecount endFrame)\n{\n\tLoop *loop = getLoop(file, instid, loopid, true);\n\tif (!loop)\n\t\treturn -1;\n\n\tif (endFrame < 0)\n\t{\n\t\t_af_error(AF_BAD_FRAME, \"loop end frame must not be negative\");\n\t\treturn AF_FAIL;\n\t}\n\n\tint trackid = loop->trackid;\n\tint endMarker = loop->endMarker;\n\n\tafSetMarkPosition(file, trackid, endMarker, endFrame);\n\treturn AF_SUCCEED;\n}\n\n/*\n\tGet loop end frame.\n*/\n\nAFframecount afGetLoopEndFrame (AFfilehandle file, int instid, int loopid)\n{\n\tLoop *loop = getLoop(file, instid, loopid, false);\n\n\tif (!loop)\n\t\treturn -1;\n\n\tint trackid = loop->trackid;\n\tint endMarker = loop->endMarker;\n\n\treturn afGetMarkPosition(file, trackid, endMarker);\n}\n\n// file: Marker.cpp\n/*\n\tAudio File Library\n\tCopyright (C) 1998-2000, Michael Pruett <michael@68k.org>\n\tCopyright (C) 2000, Silicon Graphics, Inc.\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\tMarker.cpp\n\n\tThis file contains routines for dealing with loop markers.\n*/\n\n\n#include <string.h>\n#include <stdlib.h>\n#include <assert.h>\n\n\nvoid afInitMarkIDs(AFfilesetup setup, int trackid, const int *markids, int nmarks)\n{\n\tif (!_af_filesetup_ok(setup))\n\t\treturn;\n\n\tTrackSetup *track = setup->getTrack(trackid);\n\tif (!track)\n\t\treturn;\n\n\tif (track->markers != NULL)\n\t{\n\t\tfor (int i=0; i<track->markerCount; i++)\n\t\t{\n\t\t\tif (track->markers[i].name != NULL)\n\t\t\t\tfree(track->markers[i].name);\n\t\t\tif (track->markers[i].comment != NULL)\n\t\t\t\tfree(track->markers[i].comment);\n\t\t}\n\t\tfree(track->markers);\n\t}\n\n\ttrack->markers = (MarkerSetup *) _af_calloc(nmarks, sizeof (struct MarkerSetup));\n\ttrack->markerCount = nmarks;\n\n\tfor (int i=0; i<nmarks; i++)\n\t{\n\t\ttrack->markers[i].id = markids[i];\n\t\ttrack->markers[i].name = _af_strdup(\"\");\n\t\ttrack->markers[i].comment = _af_strdup(\"\");\n\t}\n\n\ttrack->markersSet = true;\n}\n\nvoid afInitMarkName(AFfilesetup setup, int trackid, int markid,\n\tconst char *namestr)\n{\n\tint\tmarkno;\n\tint\tlength;\n\n\tif (!_af_filesetup_ok(setup))\n\t\treturn;\n\n\tTrackSetup *track = setup->getTrack(trackid);\n\tif (!track)\n\t\treturn;\n\n\tfor (markno=0; markno<track->markerCount; markno++)\n\t{\n\t\tif (track->markers[markno].id == markid)\n\t\t\tbreak;\n\t}\n\n\tif (markno == track->markerCount)\n\t{\n\t\t_af_error(AF_BAD_MARKID, \"no marker id %d for file setup\", markid);\n\t\treturn;\n\t}\n\n\tlength = strlen(namestr);\n\tif (length > 255)\n\t{\n\t\t_af_error(AF_BAD_STRLEN,\n\t\t\t\"warning: marker name truncated to 255 characters\");\n\t\tlength = 255;\n\t}\n\n\tif (track->markers[markno].name)\n\t\tfree(track->markers[markno].name);\n\tif ((track->markers[markno].name = (char *) _af_malloc(length+1)) == NULL)\n\t\treturn;\n\tstrncpy(track->markers[markno].name, namestr, length);\n\t/*\n\t\tThe null terminator is not set by strncpy if\n\t\tstrlen(namestr) > length.  Set it here.\n\t*/\n\ttrack->markers[markno].name[length] = '\\0';\n}\n\nvoid afInitMarkComment(AFfilesetup setup, int trackid, int markid,\n\tconst char *commstr)\n{\n\tint\tmarkno;\n\tint\tlength;\n\n\tif (!_af_filesetup_ok(setup))\n\t\treturn;\n\n\tTrackSetup *track = setup->getTrack(trackid);\n\tif (!track)\n\t\treturn;\n\n\tfor (markno=0; markno<track->markerCount; markno++)\n\t{\n\t\tif (track->markers[markno].id == markid)\n\t\t\tbreak;\n\t}\n\n\tif (markno == track->markerCount)\n\t{\n\t\t_af_error(AF_BAD_MARKID, \"no marker id %d for file setup\", markid);\n\t\treturn;\n\t}\n\n\tlength = strlen(commstr);\n\n\tif (track->markers[markno].comment)\n\t\tfree(track->markers[markno].comment);\n\tif ((track->markers[markno].comment = (char *) _af_malloc(length+1)) == NULL)\n\t\treturn;\n\tstrcpy(track->markers[markno].comment, commstr);\n}\n\nchar *afGetMarkName (AFfilehandle file, int trackid, int markid)\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn NULL;\n\n\tTrack *track = file->getTrack(trackid);\n\tif (!track)\n\t\treturn NULL;\n\n\tMarker *marker = track->getMarker(markid);\n\tif (!marker)\n\t\treturn NULL;\n\n\treturn marker->name;\n}\n\nchar *afGetMarkComment (AFfilehandle file, int trackid, int markid)\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn NULL;\n\n\tTrack *track = file->getTrack(trackid);\n\tif (!track)\n\t\treturn NULL;\n\n\tMarker *marker = track->getMarker(markid);\n\tif (!marker)\n\t\treturn NULL;\n\n\treturn marker->comment;\n}\n\nvoid afSetMarkPosition (AFfilehandle file, int trackid, int markid,\n\tAFframecount position)\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn;\n\n\tif (!file->checkCanWrite())\n\t\treturn;\n\n\tTrack *track = file->getTrack(trackid);\n\tif (!track)\n\t\treturn;\n\n\tMarker *marker = track->getMarker(markid);\n\tif (!marker)\n\t\treturn;\n\n\tif (position < 0)\n\t{\n\t\t_af_error(AF_BAD_MARKPOS, \"invalid marker position %jd\",\n\t\t\tstatic_cast<intmax_t>(position));\n\t\tposition = 0;\n\t}\n\n\tmarker->position = position;\n}\n\nint afGetMarkIDs (AFfilehandle file, int trackid, int markids[])\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn -1;\n\n\tTrack *track = file->getTrack(trackid);\n\tif (!track)\n\t\treturn -1;\n\n\tif (markids != NULL)\n\t{\n\t\tfor (int i=0; i<track->markerCount; i++)\n\t\t{\n\t\t\tmarkids[i] = track->markers[i].id;\n\t\t}\n\t}\n\n\treturn track->markerCount;\n}\n\nAFframecount afGetMarkPosition (AFfilehandle file, int trackid, int markid)\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn 0L;\n\n\tTrack *track = file->getTrack(trackid);\n\tif (!track)\n\t\treturn 0L;\n\n\tMarker *marker = track->getMarker(markid);\n\tif (!marker)\n\t\treturn 0L;\n\n\treturn marker->position;\n}\n\nMarker *_af_marker_new (int count)\n{\n\tMarker\t*markers = (Marker *) _af_calloc(count, sizeof (Marker));\n\tif (markers == NULL)\n\t\treturn NULL;\n\n\treturn markers;\n}\n\n// file: Miscellaneous.cpp\n/*\n\tAudio File Library\n\tCopyright (C) 1998, Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\tMiscellaneous.cpp\n\n\tThis file contains routines for dealing with the Audio File\n\tLibrary's internal miscellaneous data types.\n*/\n\n\n#include <algorithm>\n#include <stdint.h>\n#include <stdlib.h>\n#include <string.h>\n\n\nvoid afInitMiscIDs (AFfilesetup setup, const int *ids, int nids)\n{\n\tif (!_af_filesetup_ok(setup))\n\t\treturn;\n\n\tif (setup->miscellaneous != NULL)\n\t{\n\t\tfree(setup->miscellaneous);\n\t}\n\n\tsetup->miscellaneousCount = nids;\n\n\tif (nids == 0)\n\t\tsetup->miscellaneous = NULL;\n\telse\n\t{\n\t\tsetup->miscellaneous = (MiscellaneousSetup *) _af_calloc(nids,\n\t\t\tsizeof (MiscellaneousSetup));\n\n\t\tif (setup->miscellaneous == NULL)\n\t\t\treturn;\n\n\t\tfor (int i=0; i<nids; i++)\n\t\t{\n\t\t\tsetup->miscellaneous[i].id = ids[i];\n\t\t\tsetup->miscellaneous[i].type = 0;\n\t\t\tsetup->miscellaneous[i].size = 0;\n\t\t}\n\t}\n\n\tsetup->miscellaneousSet = true;\n}\n\nint afGetMiscIDs (AFfilehandle file, int *ids)\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn -1;\n\n\tif (ids != NULL)\n\t{\n\t\tfor (int i=0; i<file->m_miscellaneousCount; i++)\n\t\t{\n\t\t\tids[i] = file->m_miscellaneous[i].id;\n\t\t}\n\t}\n\n\treturn file->m_miscellaneousCount;\n}\n\nvoid afInitMiscType (AFfilesetup setup, int miscellaneousid, int type)\n{\n\tif (!_af_filesetup_ok(setup))\n\t\treturn;\n\n\tMiscellaneousSetup *miscellaneous = setup->getMiscellaneous(miscellaneousid);\n\tif (miscellaneous)\n\t\tmiscellaneous->type = type;\n}\n\nint afGetMiscType (AFfilehandle file, int miscellaneousid)\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn -1;\n\n\tMiscellaneous *miscellaneous = file->getMiscellaneous(miscellaneousid);\n\tif (miscellaneous)\n\t\treturn miscellaneous->type;\n\treturn -1;\n}\n\nvoid afInitMiscSize (AFfilesetup setup, int miscellaneousid, int size)\n{\n\tif (!_af_filesetup_ok(setup))\n\t\treturn;\n\n\tMiscellaneousSetup *miscellaneous = setup->getMiscellaneous(miscellaneousid);\n\tif (miscellaneous)\n\t\tmiscellaneous->size = size;\n}\n\nint afGetMiscSize (AFfilehandle file, int miscellaneousid)\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn -1;\n\n\tMiscellaneous *miscellaneous = file->getMiscellaneous(miscellaneousid);\n\tif (miscellaneous)\n\t\treturn miscellaneous->size;\n\treturn -1;\n}\n\nint afWriteMisc (AFfilehandle file, int miscellaneousid, const void *buf, int bytes)\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn -1;\n\n\tif (!file->checkCanWrite())\n\t\treturn -1;\n\n\tMiscellaneous *miscellaneous = file->getMiscellaneous(miscellaneousid);\n\tif (!miscellaneous)\n\t\treturn -1;\n\n\tif (bytes <= 0)\n\t{\n\t\t_af_error(AF_BAD_MISCSIZE, \"invalid size (%d) for miscellaneous chunk\", bytes);\n\t\treturn -1;\n\t}\n\n\tif (miscellaneous->buffer == NULL && miscellaneous->size != 0)\n\t{\n\t\tmiscellaneous->buffer = _af_malloc(miscellaneous->size);\n\t\tif (miscellaneous->buffer == NULL)\n\t\t\treturn -1;\n\t\tmemset(miscellaneous->buffer, 0, miscellaneous->size);\n\t}\n\n\tint localsize = std::min(bytes,\n\t\tmiscellaneous->size - miscellaneous->position);\n\tmemcpy((char *) miscellaneous->buffer + miscellaneous->position,\n\t\tbuf, localsize);\n\tmiscellaneous->position += localsize;\n\treturn localsize;\n}\n\nint afReadMisc (AFfilehandle file, int miscellaneousid, void *buf, int bytes)\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn -1;\n\n\tif (!file->checkCanRead())\n\t\treturn -1;\n\n\tMiscellaneous *miscellaneous = file->getMiscellaneous(miscellaneousid);\n\tif (!miscellaneous)\n\t\treturn -1;\n\n\tif (bytes <= 0)\n\t{\n\t\t_af_error(AF_BAD_MISCSIZE, \"invalid size (%d) for miscellaneous chunk\", bytes);\n\t\treturn -1;\n\t}\n\n\tint localsize = std::min(bytes,\n\t\tmiscellaneous->size - miscellaneous->position);\n\tmemcpy(buf, (char *) miscellaneous->buffer + miscellaneous->position,\n\t\tlocalsize);\n\tmiscellaneous->position += localsize;\n\treturn localsize;\n}\n\nint afSeekMisc (AFfilehandle file, int miscellaneousid, int offset)\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn -1;\n\n\tMiscellaneous *miscellaneous = file->getMiscellaneous(miscellaneousid);\n\tif (!miscellaneous)\n\t\treturn -1;\n\n\tif (offset >= miscellaneous->size)\n\t{\n\t\t_af_error(AF_BAD_MISCSEEK,\n\t\t\t\"offset %d too big for miscellaneous chunk %d \"\n\t\t\t\"(%d data bytes)\",\n\t\t\toffset, miscellaneousid, miscellaneous->size);\n\t\treturn -1;\n\t}\n\n\tmiscellaneous->position = offset;\n\n\treturn offset;\n}\n\n// file: PacketTable.cpp\n/*\n\tAudio File Library\n\tCopyright (C) 2013 Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n\nPacketTable::PacketTable(int64_t numValidFrames, int32_t primingFrames,\n\tint32_t remainderFrames) :\n\tm_numValidFrames(numValidFrames),\n\tm_primingFrames(primingFrames),\n\tm_remainderFrames(remainderFrames)\n{\n}\n\nPacketTable::PacketTable()\n{\n\tm_numValidFrames = 0;\n\tm_primingFrames = 0;\n\tm_remainderFrames = 0;\n}\n\nPacketTable::~PacketTable()\n{\n}\n\nvoid PacketTable::setNumValidFrames(int64_t numValidFrames)\n{\n\tm_numValidFrames = numValidFrames;\n}\n\nvoid PacketTable::setPrimingFrames(int32_t primingFrames)\n{\n\tm_primingFrames = primingFrames;\n}\n\nvoid PacketTable::setRemainderFrames(int32_t remainderFrames)\n{\n\tm_remainderFrames = remainderFrames;\n}\n\nvoid PacketTable::append(size_t bytesPerPacket)\n{\n\tm_bytesPerPacket.push_back(bytesPerPacket);\n}\n\nAFfileoffset PacketTable::startOfPacket(size_t packet) const\n{\n\tAFfileoffset offset = 0;\n\tfor (size_t i=0; i<packet; i++)\n\t\toffset += m_bytesPerPacket[i];\n\treturn offset;\n}\n\n// file: Raw.cpp\n/*\n\tAudio File Library\n\tCopyright (C) 2000, Silicon Graphics, Inc.\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\tRaw.cpp\n\n\tThis file contains code for reading and writing raw audio\n\tdata files.\n*/\n\n\n\nstatic const _AFfilesetup rawDefaultFileSetup =\n{\n\t_AF_VALID_FILESETUP,\t// valid\n\tAF_FILE_RAWDATA,\t\t// fileFormat\n\ttrue,\t// trackSet\n\ttrue,\t// instrumentSet\n\ttrue,\t// miscellaneousSet\n\t1,\t\t// trackCount\n\tNULL,\t// tracks\n\t0,\t\t// instrumentCount\n\tNULL,\t// instruments\n\t0,\t\t// miscellaneousCount\n\tNULL\t// miscellaneous\n};\n\nconst int _af_raw_compression_types[_AF_RAW_NUM_COMPTYPES] =\n{\n\tAF_COMPRESSION_G711_ULAW,\n\tAF_COMPRESSION_G711_ALAW\n};\n\nbool RawFile::recognize(File *fh)\n{\n\treturn false;\n}\n\nstatus RawFile::readInit(AFfilesetup fileSetup)\n{\n\tif (!fileSetup)\n\t{\n\t\t_af_error(AF_BAD_FILESETUP, \"a valid AFfilesetup is required for reading raw data\");\n\t\treturn AF_FAIL;\n\t}\n\n\tif (initFromSetup(fileSetup) == AF_FAIL)\n\t\treturn AF_FAIL;\n\n\tTrackSetup *trackSetup = fileSetup->getTrack();\n\tif (!trackSetup)\n\t\treturn AF_FAIL;\n\n\tTrack *track = getTrack();\n\n\t/* Set the track's data offset. */\n\tif (trackSetup->dataOffsetSet)\n\t\ttrack->fpos_first_frame = trackSetup->dataOffset;\n\telse\n\t\ttrack->fpos_first_frame = 0;\n\n\t/* Set the track's frame count. */\n\tif (trackSetup->frameCountSet)\n\t{\n\t\ttrack->totalfframes = trackSetup->frameCount;\n\t}\n\telse\n\t{\n\t\tAFfileoffset filesize = m_fh->length();\n\t\tif (filesize == -1)\n\t\t\ttrack->totalfframes = -1;\n\t\telse\n\t\t{\n\t\t\t/* Ensure that the data offset is valid. */\n\t\t\tif (track->fpos_first_frame > filesize)\n\t\t\t{\n\t\t\t\t_af_error(AF_BAD_FILESETUP, \"data offset is larger than file size\");\n\t\t\t\treturn AF_FAIL;\n\t\t\t}\n\n\t\t\tfilesize -= track->fpos_first_frame;\n\t\t\ttrack->totalfframes = filesize / (int) _af_format_frame_size(&track->f, false);\n\t\t}\n\t\ttrack->data_size = filesize;\n\t}\n\n\treturn AF_SUCCEED;\n}\n\nstatus RawFile::writeInit(AFfilesetup setup)\n{\n\tif (initFromSetup(setup) == AF_FAIL)\n\t\treturn AF_FAIL;\n\n\tTrackSetup *trackSetup = setup->getTrack();\n\tif (!trackSetup)\n\t\treturn AF_FAIL;\n\n\tTrack *track = getTrack();\n\n\tif (trackSetup->dataOffsetSet)\n\t\ttrack->fpos_first_frame = trackSetup->dataOffset;\n\telse\n\t\ttrack->fpos_first_frame = 0;\n\n\treturn AF_SUCCEED;\n}\n\nstatus RawFile::update()\n{\n\treturn AF_SUCCEED;\n}\n\nAFfilesetup RawFile::completeSetup(AFfilesetup setup)\n{\n\tAFfilesetup\tnewSetup;\n\n\tif (setup->trackSet && setup->trackCount != 1)\n\t{\n\t\t_af_error(AF_BAD_FILESETUP, \"raw file must have exactly one track\");\n\t\treturn AF_NULL_FILESETUP;\n\t}\n\n\tTrackSetup *track = setup->getTrack();\n\tif (!track)\n\t{\n\t\t_af_error(AF_BAD_FILESETUP, \"could not access track in file setup\");\n\t\treturn AF_NULL_FILESETUP;\n\t}\n\n\tif (track->aesDataSet)\n\t{\n\t\t_af_error(AF_BAD_FILESETUP, \"raw file cannot have AES data\");\n\t\treturn AF_NULL_FILESETUP;\n\t}\n\n\tif (track->markersSet && track->markerCount != 0)\n\t{\n\t\t_af_error(AF_BAD_NUMMARKS, \"raw file cannot have markers\");\n\t\treturn AF_NULL_FILESETUP;\n\t}\n\n\tif (setup->instrumentSet && setup->instrumentCount != 0)\n\t{\n\t\t_af_error(AF_BAD_NUMINSTS, \"raw file cannot have instruments\");\n\t\treturn AF_NULL_FILESETUP;\n\t}\n\n\tif (setup->miscellaneousSet && setup->miscellaneousCount != 0)\n\t{\n\t\t_af_error(AF_BAD_NUMMISC, \"raw file cannot have miscellaneous data\");\n\t\treturn AF_NULL_FILESETUP;\n\t}\n\n\tnewSetup = (_AFfilesetup *) _af_malloc(sizeof (_AFfilesetup));\n\t*newSetup = rawDefaultFileSetup;\n\n\tnewSetup->tracks = (TrackSetup *) _af_malloc(sizeof (TrackSetup));\n\tnewSetup->tracks[0] = setup->tracks[0];\n\tnewSetup->tracks[0].f.compressionParams = NULL;\n\n\tnewSetup->tracks[0].markerCount = 0;\n\tnewSetup->tracks[0].markers = NULL;\n\n\treturn newSetup;\n}\n\n// file: Setup.cpp\n/*\n\tAudio File Library\n\tCopyright (C) 2000, Silicon Graphics, Inc.\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\tSetup.cpp\n*/\n\n\n#include <stdlib.h>\n#include <string.h>\n\n\nstatic const _AFfilesetup _af_default_file_setup =\n{\n\t_AF_VALID_FILESETUP,\t/* valid */\n#if WORDS_BIGENDIAN\n\tAF_FILE_AIFFC,\t/* file format */\n#else\n\tAF_FILE_WAVE,\t/* file format */\n#endif\n\tfalse,\t\t/* trackSet */\n\tfalse,\t\t/* instrumentSet */\n\tfalse,\t\t/* miscellaneousSet */\n\t1,\t\t/* trackCount */\n\tNULL,\t\t/* tracks */\n\t1,\t\t/* instrumentCount */\n\tNULL,\t\t/* instruments */\n\t0,\t\t/* miscellaneousCount */\n\tNULL\t\t/* miscellaneous */\n};\n\nstatic const InstrumentSetup _af_default_instrumentsetup =\n{\n\t0,\t\t/* id */\n\t2,\t\t/* loopCount */\n\tNULL,\t\t/* loops */\n\tfalse\t\t/* loopSet */\n};\n\nstatic const TrackSetup _af_default_tracksetup =\n{\n\t0,\n\t{\n\t\t44100.0,\n\t\tAF_SAMPFMT_TWOSCOMP,\n\t\t16,\n\t\t_AF_BYTEORDER_NATIVE,\n\t\t{ SLOPE_INT16, 0, MIN_INT16, MAX_INT16 },\n\t\t2,\n\t\tAF_COMPRESSION_NONE,\n\t\tNULL\n\t},\n\tfalse,\t\t/* rateSet */\n\tfalse,\t\t/* sampleFormatSet */\n\tfalse,\t\t/* sampleWidthSet */\n\tfalse,\t\t/* byteOrderSet */\n\tfalse,\t\t/* channelCountSet */\n\tfalse,\t\t/* compressionSet */\n\tfalse,\t\t/* aesDataSet */\n\tfalse,\t\t/* markersSet */\n\tfalse,\t\t/* dataOffsetSet */\n\tfalse,\t\t/* frameCountSet */\n\n\t4,\t\t/* markerCount */\n\tNULL,\t\t/* markers */\n\t0,\t\t/* dataOffset */\n\t0\t\t/* frameCount */\n};\n\nTrackSetup *_af_tracksetup_new (int trackCount)\n{\n\tTrackSetup\t*tracks;\n\n\tif (trackCount == 0)\n\t\treturn NULL;\n\n\ttracks = (TrackSetup *) _af_calloc(trackCount, sizeof (TrackSetup));\n\tif (tracks == NULL)\n\t\treturn NULL;\n\n\tfor (int i=0; i<trackCount; i++)\n\t{\n\t\ttracks[i] = _af_default_tracksetup;\n\n\t\ttracks[i].id = AF_DEFAULT_TRACK + i;\n\n\t\t/* XXXmpruett deal with compression */\n\n\t\t_af_set_sample_format(&tracks[i].f, tracks[i].f.sampleFormat,\n\t\t\ttracks[i].f.sampleWidth);\n\n\t\tif (tracks[i].markerCount == 0)\n\t\t\ttracks[i].markers = NULL;\n\t\telse\n\t\t{\n\t\t\ttracks[i].markers = (MarkerSetup *) _af_calloc(tracks[i].markerCount,\n\t\t\t\tsizeof (MarkerSetup));\n\n\t\t\tif (tracks[i].markers == NULL)\n\t\t\t\treturn NULL;\n\n\t\t\tfor (int j=0; j<tracks[i].markerCount; j++)\n\t\t\t{\n\t\t\t\ttracks[i].markers[j].id = j+1;\n\n\t\t\t\ttracks[i].markers[j].name = _af_strdup(\"\");\n\t\t\t\tif (tracks[i].markers[j].name == NULL)\n\t\t\t\t\treturn NULL;\n\n\t\t\t\ttracks[i].markers[j].comment = _af_strdup(\"\");\n\t\t\t\tif (tracks[i].markers[j].comment == NULL)\n\t\t\t\t\treturn NULL;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn tracks;\n}\n\nInstrumentSetup *_af_instsetup_new (int instrumentCount)\n{\n\tInstrumentSetup\t*instruments;\n\n\tif (instrumentCount == 0)\n\t\treturn NULL;\n\tinstruments = (InstrumentSetup *) _af_calloc(instrumentCount, sizeof (InstrumentSetup));\n\tif (instruments == NULL)\n\t\treturn NULL;\n\n\tfor (int i=0; i<instrumentCount; i++)\n\t{\n\t\tinstruments[i] = _af_default_instrumentsetup;\n\t\tinstruments[i].id = AF_DEFAULT_INST + i;\n\t\tif (instruments[i].loopCount == 0)\n\t\t\tinstruments[i].loops = NULL;\n\t\telse\n\t\t{\n\t\t\tinstruments[i].loops = (LoopSetup *) _af_calloc(instruments[i].loopCount, sizeof (LoopSetup));\n\t\t\tif (instruments[i].loops == NULL)\n\t\t\t\treturn NULL;\n\n\t\t\tfor (int j=0; j<instruments[i].loopCount; j++)\n\t\t\t\tinstruments[i].loops[j].id = j+1;\n\t\t}\n\t}\n\n\treturn instruments;\n}\n\nAFfilesetup afNewFileSetup (void)\n{\n\tAFfilesetup\tsetup;\n\n\tsetup = (_AFfilesetup *) _af_malloc(sizeof (_AFfilesetup));\n\tif (setup == NULL) return AF_NULL_FILESETUP;\n\n\t*setup = _af_default_file_setup;\n\n\tsetup->tracks = _af_tracksetup_new(setup->trackCount);\n\n\tsetup->instruments = _af_instsetup_new(setup->instrumentCount);\n\n\tif (setup->miscellaneousCount == 0)\n\t\tsetup->miscellaneous = NULL;\n\telse\n\t{\n\t\tsetup->miscellaneous = (MiscellaneousSetup *) _af_calloc(setup->miscellaneousCount,\n\t\t\tsizeof (MiscellaneousSetup));\n\t\tfor (int i=0; i<setup->miscellaneousCount; i++)\n\t\t{\n\t\t\tsetup->miscellaneous[i].id = i+1;\n\t\t\tsetup->miscellaneous[i].type = 0;\n\t\t\tsetup->miscellaneous[i].size = 0;\n\t\t}\n\t}\n\n\treturn setup;\n}\n\n/*\n\tFree the specified track's markers and their subfields.\n*/\nvoid _af_setup_free_markers (AFfilesetup setup, int trackno)\n{\n\tif (setup->tracks[trackno].markerCount != 0)\n\t{\n\t\tfor (int i=0; i<setup->tracks[trackno].markerCount; i++)\n\t\t{\n\t\t\tfree(setup->tracks[trackno].markers[i].name);\n\t\t\tfree(setup->tracks[trackno].markers[i].comment);\n\t\t}\n\n\t\tfree(setup->tracks[trackno].markers);\n\t}\n\n\tsetup->tracks[trackno].markers = NULL;\n\tsetup->tracks[trackno].markerCount = 0;\n}\n\n/*\n\tFree the specified setup's tracks and their subfields.\n*/\nvoid _af_setup_free_tracks (AFfilesetup setup)\n{\n\tif (setup->tracks)\n\t{\n\t\tfor (int i=0; i<setup->trackCount; i++)\n\t\t{\n\t\t\t_af_setup_free_markers(setup, i);\n\t\t}\n\n\t\tfree(setup->tracks);\n\t}\n\n\tsetup->tracks = NULL;\n\tsetup->trackCount = 0;\n}\n\n/*\n\tFree the specified setup's instruments and their subfields.\n*/\nvoid _af_setup_free_instruments (AFfilesetup setup)\n{\n\tif (setup->instruments)\n\t{\n\t\tfor (int i=0; i < setup->instrumentCount; i++)\n\t\t\tsetup->instruments[i].freeLoops();\n\n\t\tfree(setup->instruments);\n\t}\n\n\tsetup->instruments = NULL;\n\tsetup->instrumentCount = 0;\n}\n\nvoid afFreeFileSetup (AFfilesetup setup)\n{\n\tif (!_af_filesetup_ok(setup))\n\t\treturn;\n\n\t_af_setup_free_tracks(setup);\n\n\t_af_setup_free_instruments(setup);\n\n\tif (setup->miscellaneousCount)\n\t{\n\t\tfree(setup->miscellaneous);\n\t\tsetup->miscellaneous = NULL;\n\t\tsetup->miscellaneousCount = 0;\n\t}\n\n\tmemset(setup, 0, sizeof (_AFfilesetup));\n\tfree(setup);\n}\n\nvoid afInitFileFormat (AFfilesetup setup, int filefmt)\n{\n\tif (!_af_filesetup_ok(setup))\n\t\treturn;\n\n\tif (filefmt < 0 || filefmt >= _AF_NUM_UNITS)\n\t{\n\t\t_af_error(AF_BAD_FILEFMT, \"unrecognized file format %d\",\n\t\t\tfilefmt);\n\t\treturn;\n\t}\n\n\tif (!_af_units[filefmt].implemented)\n\t{\n\t\t_af_error(AF_BAD_NOT_IMPLEMENTED,\n\t\t\t\"%s format not currently supported\",\n\t\t\t_af_units[filefmt].name);\n\t\treturn;\n\t}\n\n\tsetup->fileFormat = filefmt;\n}\n\nvoid afInitChannels (AFfilesetup setup, int trackid, int channels)\n{\n\tif (!_af_filesetup_ok(setup))\n\t\treturn;\n\n\tTrackSetup *track = setup->getTrack(trackid);\n\tif (!track)\n\t\treturn;\n\n\tif (channels < 1)\n\t{\n\t\t_af_error(AF_BAD_CHANNELS, \"invalid number of channels %d\",\n\t\t\tchannels);\n\t\treturn;\n\t}\n\n\ttrack->f.channelCount = channels;\n\ttrack->channelCountSet = true;\n}\n\nvoid afInitSampleFormat (AFfilesetup setup, int trackid, int sampfmt, int sampwidth)\n{\n\tif (!_af_filesetup_ok(setup))\n\t\treturn;\n\n\tTrackSetup *track = setup->getTrack(trackid);\n\tif (!track)\n\t\treturn;\n\n\t_af_set_sample_format(&track->f, sampfmt, sampwidth);\n\n\ttrack->sampleFormatSet = true;\n\ttrack->sampleWidthSet = true;\n}\n\nvoid afInitByteOrder (AFfilesetup setup, int trackid, int byteorder)\n{\n\tif (!_af_filesetup_ok(setup))\n\t\treturn;\n\n\tTrackSetup *track = setup->getTrack(trackid);\n\tif (!track)\n\t\treturn;\n\n\tif (byteorder != AF_BYTEORDER_BIGENDIAN &&\n\t\tbyteorder != AF_BYTEORDER_LITTLEENDIAN)\n\t{\n\t\t_af_error(AF_BAD_BYTEORDER, \"invalid byte order %d\", byteorder);\n\t\treturn;\n\t}\n\n\ttrack->f.byteOrder = byteorder;\n\ttrack->byteOrderSet = true;\n}\n\nvoid afInitRate (AFfilesetup setup, int trackid, double rate)\n{\n\tif (!_af_filesetup_ok(setup))\n\t\treturn;\n\n\tTrackSetup *track = setup->getTrack(trackid);\n\tif (!track)\n\t\treturn;\n\n\tif (rate <= 0.0)\n\t{\n\t\t_af_error(AF_BAD_RATE, \"invalid sample rate %.30g\", rate);\n\t\treturn;\n\t}\n\n\ttrack->f.sampleRate = rate;\n\ttrack->rateSet = true;\n}\n\n/*\n\ttrack data: data offset within the file (initialized for raw reading only)\n*/\nvoid afInitDataOffset (AFfilesetup setup, int trackid, AFfileoffset offset)\n{\n\tif (!_af_filesetup_ok(setup))\n\t\treturn;\n\n\tTrackSetup *track = setup->getTrack(trackid);\n\tif (!track)\n\t\treturn;\n\n\tif (offset < 0)\n\t{\n\t\t_af_error(AF_BAD_DATAOFFSET, \"invalid data offset %jd\",\n\t\t\tstatic_cast<intmax_t>(offset));\n\t\treturn;\n\t}\n\n\ttrack->dataOffset = offset;\n\ttrack->dataOffsetSet = true;\n}\n\n/*\n\ttrack data: data offset within the file (initialized for raw reading only)\n*/\nvoid afInitFrameCount (AFfilesetup setup, int trackid, AFfileoffset count)\n{\n\tif (!_af_filesetup_ok(setup))\n\t\treturn;\n\n\tTrackSetup *track = setup->getTrack(trackid);\n\tif (!track)\n\t\treturn;\n\n\tif (count < 0)\n\t{\n\t\t_af_error(AF_BAD_FRAMECNT, \"invalid frame count %jd\",\n\t\t\tstatic_cast<intmax_t>(count));\n\t\treturn;\n\t}\n\n\ttrack->frameCount = count;\n\ttrack->frameCountSet = true;\n}\n\n#define alloccopy(type, n, var, copyfrom) \\\n{ \\\n\tif (n == 0) \\\n\t\tvar = NULL; \\\n\telse \\\n\t{ \\\n\t\tif ((var = (type *) _af_calloc(n, sizeof (type))) == NULL) \\\n\t\t\tgoto fail; \\\n\t\tmemcpy((var), (copyfrom), (n) * sizeof (type)); \\\n\t} \\\n}\n\nAFfilesetup _af_filesetup_copy (const _AFfilesetup *setup,\n\tconst _AFfilesetup *defaultSetup, bool copyMarks)\n{\n\tAFfilesetup newsetup;\n\tint instrumentCount, miscellaneousCount, trackCount;\n\n\tnewsetup = (_AFfilesetup *) _af_malloc(sizeof (_AFfilesetup));\n\tif (newsetup == AF_NULL_FILESETUP)\n\t\treturn AF_NULL_FILESETUP;\n\n\t*newsetup = *defaultSetup;\n\n\tnewsetup->tracks = NULL;\n\tnewsetup->instruments = NULL;\n\tnewsetup->miscellaneous = NULL;\n\n\t/* Copy tracks. */\n\ttrackCount = setup->trackSet ? setup->trackCount :\n\t\tnewsetup->trackSet ? newsetup->trackCount : 0;\n\talloccopy(TrackSetup, trackCount, newsetup->tracks, setup->tracks);\n\tnewsetup->trackCount = trackCount;\n\n\t/* Copy instruments. */\n\tinstrumentCount = setup->instrumentSet ? setup->instrumentCount :\n\t\tnewsetup->instrumentSet ? newsetup->instrumentCount : 0;\n\talloccopy(InstrumentSetup, instrumentCount, newsetup->instruments, setup->instruments);\n\tnewsetup->instrumentCount = instrumentCount;\n\n\t/* Copy miscellaneous information. */\n\tmiscellaneousCount = setup->miscellaneousSet ? setup->miscellaneousCount :\n\t\tnewsetup->miscellaneousSet ? newsetup->miscellaneousCount : 0;\n\talloccopy(MiscellaneousSetup, miscellaneousCount, newsetup->miscellaneous, setup->miscellaneous);\n\tnewsetup->miscellaneousCount = miscellaneousCount;\n\n\tfor (int i=0; i<setup->trackCount; i++)\n\t{\n\t\tTrackSetup\t*track = &newsetup->tracks[i];\n\n\t\t/* XXXmpruett set compression information */\n\n\t\tif (!setup->tracks[i].markersSet && !copyMarks)\n\t\t{\n\t\t\ttrack->markers = NULL;\n\t\t\ttrack->markerCount = 0;\n\t\t\tcontinue;\n\t\t}\n\n\t\talloccopy(MarkerSetup, setup->tracks[i].markerCount,\n\t\t\ttrack->markers, setup->tracks[i].markers);\n\t\ttrack->markerCount = setup->tracks[i].markerCount;\n\n\t\tfor (int j=0; j<setup->tracks[i].markerCount; j++)\n\t\t{\n\t\t\ttrack->markers[j].name =\n\t\t\t\t_af_strdup(setup->tracks[i].markers[j].name);\n\t\t\tif (track->markers[j].name == NULL)\n\t\t\t\tgoto fail;\n\n\t\t\ttrack->markers[j].comment =\n\t\t\t\t_af_strdup(setup->tracks[i].markers[j].comment);\n\t\t\tif (track->markers[j].comment == NULL)\n\t\t\t\tgoto fail;\n\t\t}\n\t}\n\n\tfor (int i=0; i<newsetup->instrumentCount; i++)\n\t{\n\t\tInstrumentSetup\t*instrument = &newsetup->instruments[i];\n\t\talloccopy(LoopSetup, setup->instruments[i].loopCount,\n\t\t\tinstrument->loops, setup->instruments[i].loops);\n\t}\n\n\treturn newsetup;\n\n\tfail:\n\t\tif (newsetup->miscellaneous)\n\t\t\tfree(newsetup->miscellaneous);\n\t\tif (newsetup->instruments)\n\t\t\tfree(newsetup->instruments);\n\t\tif (newsetup->tracks)\n\t\t\tfree(newsetup->tracks);\n\t\tif (newsetup)\n\t\t\tfree(newsetup);\n\n\treturn AF_NULL_FILESETUP;\n}\n\nTrackSetup *_AFfilesetup::getTrack(int trackID)\n{\n\tfor (int i=0; i<trackCount; i++)\n\t{\n\t\tif (tracks[i].id == trackID)\n\t\t\treturn &tracks[i];\n\t}\n\n\t_af_error(AF_BAD_TRACKID, \"bad track id %d\", trackID);\n\treturn NULL;\n}\n\nInstrumentSetup *_AFfilesetup::getInstrument(int instrumentID)\n{\n\tfor (int i=0; i < instrumentCount; i++)\n\t\tif (instruments[i].id == instrumentID)\n\t\t\treturn &instruments[i];\n\n\t_af_error(AF_BAD_INSTID, \"invalid instrument id %d\", instrumentID);\n\treturn NULL;\n}\n\nMiscellaneousSetup *_AFfilesetup::getMiscellaneous(int miscellaneousID)\n{\n\tfor (int i=0; i<miscellaneousCount; i++)\n\t{\n\t\tif (miscellaneous[i].id == miscellaneousID)\n\t\t\treturn &miscellaneous[i];\n\t}\n\n\t_af_error(AF_BAD_MISCID, \"bad miscellaneous id %d\", miscellaneousID);\n\n\treturn NULL;\n}\n\n// file: Track.cpp\n/*\n\tAudio File Library\n\tCopyright (C) 1998, Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\ttrack.c\n\n\tThis file contains functions for dealing with tracks within an\n\taudio file.\n*/\n\n\n#include <assert.h>\n#include <stddef.h>\n#include <stdio.h>\n#include <string.h>\n\n\nvoid afInitTrackIDs (AFfilesetup file, const int *trackids, int trackCount)\n{\n\tassert(file);\n\tassert(trackids);\n\tassert(trackCount == 1);\n\tassert(trackids[0] == AF_DEFAULT_TRACK);\n}\n\nint afGetTrackIDs (AFfilehandle file, int *trackids)\n{\n\tassert(file);\n\n\tif (trackids != NULL)\n\t\ttrackids[0] = AF_DEFAULT_TRACK;\n\n\treturn 1;\n}\n\nTrack::Track()\n{\n\tid = AF_DEFAULT_TRACK;\n\n\tf.compressionParams = NULL;\n\tv.compressionParams = NULL;\n\n\tchannelMatrix = NULL;\n\n\tmarkerCount = 0;\n\tmarkers = NULL;\n\n\thasAESData = false;\n\tmemset(aesData, 0, 24);\n\n\ttotalfframes = 0;\n\tnextfframe = 0;\n\tframes2ignore = 0;\n\tfpos_first_frame = 0;\n\tfpos_next_frame = 0;\n\tfpos_after_data = 0;\n\ttotalvframes = 0;\n\tnextvframe = 0;\n\tdata_size = 0;\n}\n\nTrack::~Track()\n{\n\tif (f.compressionParams)\n\t{\n\t\tAUpvfree(f.compressionParams);\n\t\tf.compressionParams = NULL;\n\t}\n\n\tif (v.compressionParams)\n\t{\n\t\tAUpvfree(v.compressionParams);\n\t\tv.compressionParams = NULL;\n\t}\n\n\tfree(channelMatrix);\n\tchannelMatrix = NULL;\n\n\tif (markers)\n\t{\n\t\tfor (int j=0; j<markerCount; j++)\n\t\t{\n\t\t\tfree(markers[j].name);\n\t\t\tmarkers[j].name = NULL;\n\t\t\tfree(markers[j].comment);\n\t\t\tmarkers[j].comment = NULL;\n\t\t}\n\n\t\tfree(markers);\n\t\tmarkers = NULL;\n\t}\n}\n\nvoid Track::print()\n{\n\tfprintf(stderr, \"totalfframes %jd\\n\", (intmax_t) totalfframes);\n\tfprintf(stderr, \"nextfframe %jd\\n\", (intmax_t) nextfframe);\n\tfprintf(stderr, \"frames2ignore %jd\\n\", (intmax_t) frames2ignore);\n\tfprintf(stderr, \"fpos_first_frame %jd\\n\", (intmax_t) fpos_first_frame);\n\tfprintf(stderr, \"fpos_next_frame %jd\\n\", (intmax_t) fpos_next_frame);\n\tfprintf(stderr, \"fpos_after_data %jd\\n\", (intmax_t) fpos_after_data);\n\tfprintf(stderr, \"totalvframes %jd\\n\", (intmax_t) totalvframes);\n\tfprintf(stderr, \"nextvframe %jd\\n\", (intmax_t) nextvframe);\n\tfprintf(stderr, \"data_size %jd\\n\", (intmax_t) data_size);\n}\n\nMarker *Track::getMarker(int markerID)\n{\n\tfor (int i=0; i<markerCount; i++)\n\t\tif (markers[i].id == markerID)\n\t\t\treturn &markers[i];\n\n\t_af_error(AF_BAD_MARKID, \"no marker with id %d found in track %d\",\n\t\tmarkerID, id);\n\n\treturn NULL;\n}\n\nstatus Track::copyMarkers(TrackSetup *setup)\n{\n\tif ((markerCount = setup->markerCount) == 0)\n\t{\n\t\tmarkers = NULL;\n\t\treturn AF_SUCCEED;\n\t}\n\n\tmarkers = _af_marker_new(markerCount);\n\tif (!markers)\n\t\treturn AF_FAIL;\n\n\tfor (int i=0; i<markerCount; i++)\n\t{\n\t\tmarkers[i].id = setup->markers[i].id;\n\t\tmarkers[i].name = _af_strdup(setup->markers[i].name);\n\t\tif (!markers[i].name)\n\t\t\treturn AF_FAIL;\n\n\t\tmarkers[i].comment = _af_strdup(setup->markers[i].comment);\n\t\tif (!markers[i].comment)\n\t\t\treturn AF_FAIL;\n\t\tmarkers[i].position = 0;\n\t}\n\n\treturn AF_SUCCEED;\n}\n\nvoid Track::computeTotalFileFrames()\n{\n\tif (f.bytesPerPacket && f.framesPerPacket)\n\t\ttotalfframes = (data_size / f.bytesPerPacket) * f.framesPerPacket;\n}\n\n// file: UUID.cpp\n/*\n\tCopyright (C) 2011, Michael Pruett. All rights reserved.\n\n\tRedistribution and use in source and binary forms, with or without\n\tmodification, are permitted provided that the following conditions\n\tare met:\n\n\t1. Redistributions of source code must retain the above copyright\n\tnotice, this list of conditions and the following disclaimer.\n\n\t2. Redistributions in binary form must reproduce the above copyright\n\tnotice, this list of conditions and the following disclaimer in the\n\tdocumentation and/or other materials provided with the distribution.\n\n\t3. The name of the author may not be used to endorse or promote products\n\tderived from this software without specific prior written permission.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR\n\tIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n\tOF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n\tIN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,\n\tINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n\tNOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n\tDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n\tTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n\tTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\n\n#include <stdio.h>\n#include <string.h>\n\nbool UUID::operator==(const UUID &u) const\n{\n\treturn !memcmp(data, u.data, 16);\n}\n\nbool UUID::operator!=(const UUID &u) const\n{\n\treturn memcmp(data, u.data, 16) != 0;\n}\n\nstd::string UUID::name() const\n{\n\tchar s[37];\n\tuint32_t u1 =\n\t\t(data[0] << 24) |\n\t\t(data[1] << 16) |\n\t\t(data[2] << 8) |\n\t\tdata[3];\n\tuint16_t u2 =\n\t\t(data[4] << 8) |\n\t\tdata[5];\n\tuint16_t u3 =\n\t\t(data[6] << 8) |\n\t\tdata[7];\n\tuint16_t u4 =\n\t\t(data[8] << 8) |\n\t\tdata[9];\n\tsnprintf(s, 37, \"%08x-%04x-%04x-%04x-%02x%02x%02x%02x%02x%02x\",\n\t\tu1, u2, u3, u4,\n\t\tdata[10], data[11], data[12], data[13], data[14], data[15]);\n\treturn std::string(s);\n}\n\n// file: WAVE.cpp\n/*\n\tAudio File Library\n\tCopyright (C) 1998-2000, 2003-2004, 2010-2013, Michael Pruett <michael@68k.org>\n\tCopyright (C) 2000-2002, Silicon Graphics, Inc.\n\tCopyright (C) 2002-2003, Davy Durham\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\tWAVE.cpp\n\n\tThis file contains code for reading and writing RIFF WAVE format\n\tsound files.\n*/\n\n\n#include <assert.h>\n#include <math.h>\n#include <stdint.h>\n#include <stdlib.h>\n#include <string.h>\n\n\n/* These constants are from RFC 2361. */\nenum\n{\n\tWAVE_FORMAT_UNKNOWN = 0x0000,\t/* Microsoft Unknown Wave Format */\n\tWAVE_FORMAT_PCM = 0x0001,\t/* Microsoft PCM Format */\n\tWAVE_FORMAT_ADPCM = 0x0002,\t/* Microsoft ADPCM Format */\n\tWAVE_FORMAT_IEEE_FLOAT = 0x0003,\t/* IEEE Float */\n\tWAVE_FORMAT_VSELP = 0x0004,\t/* Compaq Computer's VSELP */\n\tWAVE_FORMAT_IBM_CVSD = 0x0005,\t/* IBM CVSD */\n\tWAVE_FORMAT_ALAW = 0x0006,\t/* Microsoft ALAW */\n\tWAVE_FORMAT_MULAW = 0x0007,\t/* Microsoft MULAW */\n\tWAVE_FORMAT_OKI_ADPCM = 0x0010,\t/* OKI ADPCM */\n\tWAVE_FORMAT_DVI_ADPCM = 0x0011,\t/* Intel's DVI ADPCM */\n\tWAVE_FORMAT_MEDIASPACE_ADPCM = 0x0012,\t/* Videologic's MediaSpace ADPCM */\n\tWAVE_FORMAT_SIERRA_ADPCM = 0x0013,\t/* Sierra ADPCM */\n\tWAVE_FORMAT_G723_ADPCM = 0x0014,\t/* G.723 ADPCM */\n\tWAVE_FORMAT_DIGISTD = 0x0015,\t/* DSP Solutions' DIGISTD */\n\tWAVE_FORMAT_DIGIFIX = 0x0016,\t/* DSP Solutions' DIGIFIX */\n\tWAVE_FORMAT_DIALOGIC_OKI_ADPCM = 0x0017,\t/* Dialogic OKI ADPCM */\n\tWAVE_FORMAT_MEDIAVISION_ADPCM = 0x0018,\t/* MediaVision ADPCM */\n\tWAVE_FORMAT_CU_CODEC = 0x0019,\t/* HP CU */\n\tWAVE_FORMAT_YAMAHA_ADPCM = 0x0020,\t/* Yamaha ADPCM */\n\tWAVE_FORMAT_SONARC = 0x0021,\t/* Speech Compression's Sonarc */\n\tWAVE_FORMAT_DSP_TRUESPEECH = 0x0022,\t/* DSP Group's True Speech */\n\tWAVE_FORMAT_ECHOSC1 = 0x0023,\t/* Echo Speech's EchoSC1 */\n\tWAVE_FORMAT_AUDIOFILE_AF36 = 0x0024,\t/* Audiofile AF36 */\n\tWAVE_FORMAT_APTX = 0x0025,\t/* APTX */\n\tWAVE_FORMAT_DOLBY_AC2 = 0x0030,\t/* Dolby AC2 */\n\tWAVE_FORMAT_GSM610 = 0x0031,\t/* GSM610 */\n\tWAVE_FORMAT_MSNAUDIO = 0x0032,\t/* MSNAudio */\n\tWAVE_FORMAT_ANTEX_ADPCME = 0x0033,\t/* Antex ADPCME */\n\n\tWAVE_FORMAT_MPEG = 0x0050,\t\t/* MPEG */\n\tWAVE_FORMAT_MPEGLAYER3 = 0x0055,\t/* MPEG layer 3 */\n\tWAVE_FORMAT_LUCENT_G723 = 0x0059,\t/* Lucent G.723 */\n\tWAVE_FORMAT_G726_ADPCM = 0x0064,\t/* G.726 ADPCM */\n\tWAVE_FORMAT_G722_ADPCM = 0x0065,\t/* G.722 ADPCM */\n\n\tIBM_FORMAT_MULAW = 0x0101,\n\tIBM_FORMAT_ALAW = 0x0102,\n\tIBM_FORMAT_ADPCM = 0x0103,\n\n\tWAVE_FORMAT_CREATIVE_ADPCM = 0x0200,\n\n\tWAVE_FORMAT_EXTENSIBLE = 0xfffe\n};\n\nconst int _af_wave_compression_types[_AF_WAVE_NUM_COMPTYPES] =\n{\n\tAF_COMPRESSION_G711_ULAW,\n\tAF_COMPRESSION_G711_ALAW,\n\tAF_COMPRESSION_IMA,\n\tAF_COMPRESSION_MS_ADPCM\n};\n\nconst InstParamInfo _af_wave_inst_params[_AF_WAVE_NUM_INSTPARAMS] =\n{\n\t{ AF_INST_MIDI_BASENOTE, AU_PVTYPE_LONG, \"MIDI base note\", {60} },\n\t{ AF_INST_NUMCENTS_DETUNE, AU_PVTYPE_LONG, \"Detune in cents\", {0} },\n\t{ AF_INST_MIDI_LOVELOCITY, AU_PVTYPE_LONG, \"Low velocity\", {1} },\n\t{ AF_INST_MIDI_HIVELOCITY, AU_PVTYPE_LONG, \"High velocity\", {127} },\n\t{ AF_INST_MIDI_LONOTE, AU_PVTYPE_LONG, \"Low note\", {0} },\n\t{ AF_INST_MIDI_HINOTE, AU_PVTYPE_LONG, \"High note\", {127} },\n\t{ AF_INST_NUMDBS_GAIN, AU_PVTYPE_LONG, \"Gain in dB\", {0} }\n};\n\nstatic const _AFfilesetup waveDefaultFileSetup =\n{\n\t_AF_VALID_FILESETUP,\t/* valid */\n\tAF_FILE_WAVE,\t\t/* fileFormat */\n\ttrue,\t\t\t/* trackSet */\n\ttrue,\t\t\t/* instrumentSet */\n\ttrue,\t\t\t/* miscellaneousSet  */\n\t1,\t\t\t/* trackCount */\n\tNULL,\t\t\t/* tracks */\n\t0,\t\t\t/* instrumentCount */\n\tNULL,\t\t\t/* instruments */\n\t0,\t\t\t/* miscellaneousCount */\n\tNULL\t\t\t/* miscellaneous */\n};\n\nstatic const UUID _af_wave_guid_pcm =\n{{\n\t0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,\n\t0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71\n}};\nstatic const UUID _af_wave_guid_ieee_float =\n{{\n\t0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,\n\t0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71\n}};\nstatic const UUID _af_wave_guid_ulaw =\n{{\n\t0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,\n\t0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71\n}};\nstatic const UUID _af_wave_guid_alaw =\n{{\n\t0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,\n\t0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71\n}};\n\nWAVEFile::WAVEFile()\n{\n\tsetFormatByteOrder(AF_BYTEORDER_LITTLEENDIAN);\n\n\tm_factOffset = 0;\n\tm_miscellaneousOffset = 0;\n\tm_markOffset = 0;\n\tm_dataSizeOffset = 0;\n\n\tm_msadpcmNumCoefficients = 0;\n}\n\nstatus WAVEFile::parseFrameCount(const Tag &id, uint32_t size)\n{\n\tTrack *track = getTrack();\n\n\tuint32_t totalFrames;\n\treadU32(&totalFrames);\n\n\ttrack->totalfframes = totalFrames;\n\n\treturn AF_SUCCEED;\n}\n\nstatus WAVEFile::parseFormat(const Tag &id, uint32_t size)\n{\n\tTrack *track = getTrack();\n\n\tuint16_t formatTag;\n\treadU16(&formatTag);\n\tuint16_t channelCount;\n\treadU16(&channelCount);\n\tuint32_t sampleRate;\n\treadU32(&sampleRate);\n\tuint32_t averageBytesPerSecond;\n\treadU32(&averageBytesPerSecond);\n\tuint16_t blockAlign;\n\treadU16(&blockAlign);\n\n\tif (!channelCount)\n\t{\n\t\t_af_error(AF_BAD_CHANNELS, \"invalid file with 0 channels\");\n\t\treturn AF_FAIL;\n\t}\n\n\ttrack->f.channelCount = channelCount;\n\ttrack->f.sampleRate = sampleRate;\n\ttrack->f.byteOrder = AF_BYTEORDER_LITTLEENDIAN;\n\n\t/* Default to uncompressed audio data. */\n\ttrack->f.compressionType = AF_COMPRESSION_NONE;\n\ttrack->f.framesPerPacket = 1;\n\n\tswitch (formatTag)\n\t{\n\t\tcase WAVE_FORMAT_PCM:\n\t\t{\n\t\t\tuint16_t bitsPerSample;\n\t\t\treadU16(&bitsPerSample);\n\n\t\t\ttrack->f.sampleWidth = bitsPerSample;\n\n\t\t\tif (bitsPerSample == 0 || bitsPerSample > 32)\n\t\t\t{\n\t\t\t\t_af_error(AF_BAD_WIDTH,\n\t\t\t\t\t\"bad sample width of %d bits\",\n\t\t\t\t\tbitsPerSample);\n\t\t\t\treturn AF_FAIL;\n\t\t\t}\n\n\t\t\tif (bitsPerSample <= 8)\n\t\t\t\ttrack->f.sampleFormat = AF_SAMPFMT_UNSIGNED;\n\t\t\telse\n\t\t\t\ttrack->f.sampleFormat = AF_SAMPFMT_TWOSCOMP;\n\t\t}\n\t\tbreak;\n\n\t\tcase WAVE_FORMAT_MULAW:\n\t\tcase IBM_FORMAT_MULAW:\n\t\t\ttrack->f.sampleWidth = 16;\n\t\t\ttrack->f.sampleFormat = AF_SAMPFMT_TWOSCOMP;\n\t\t\ttrack->f.byteOrder = _AF_BYTEORDER_NATIVE;\n\t\t\ttrack->f.compressionType = AF_COMPRESSION_G711_ULAW;\n\t\t\ttrack->f.bytesPerPacket = track->f.channelCount;\n\t\t\tbreak;\n\n\t\tcase WAVE_FORMAT_ALAW:\n\t\tcase IBM_FORMAT_ALAW:\n\t\t\ttrack->f.sampleWidth = 16;\n\t\t\ttrack->f.sampleFormat = AF_SAMPFMT_TWOSCOMP;\n\t\t\ttrack->f.byteOrder = _AF_BYTEORDER_NATIVE;\n\t\t\ttrack->f.compressionType = AF_COMPRESSION_G711_ALAW;\n\t\t\ttrack->f.bytesPerPacket = track->f.channelCount;\n\t\t\tbreak;\n\n\t\tcase WAVE_FORMAT_IEEE_FLOAT:\n\t\t{\n\t\t\tuint16_t bitsPerSample;\n\t\t\treadU16(&bitsPerSample);\n\n\t\t\tif (bitsPerSample == 64)\n\t\t\t{\n\t\t\t\ttrack->f.sampleWidth = 64;\n\t\t\t\ttrack->f.sampleFormat = AF_SAMPFMT_DOUBLE;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\ttrack->f.sampleWidth = 32;\n\t\t\t\ttrack->f.sampleFormat = AF_SAMPFMT_FLOAT;\n\t\t\t}\n\t\t}\n\t\tbreak;\n\n\t\tcase WAVE_FORMAT_ADPCM:\n\t\t{\n\t\t\tuint16_t bitsPerSample, extraByteCount,\n\t\t\t\t\tsamplesPerBlock, numCoefficients;\n\n\t\t\tif (track->f.channelCount != 1 &&\n\t\t\t\ttrack->f.channelCount != 2)\n\t\t\t{\n\t\t\t\t_af_error(AF_BAD_CHANNELS,\n\t\t\t\t\t\"WAVE file with MS ADPCM compression \"\n\t\t\t\t\t\"must have 1 or 2 channels\");\n\t\t\t}\n\n\t\t\treadU16(&bitsPerSample);\n\t\t\treadU16(&extraByteCount);\n\t\t\treadU16(&samplesPerBlock);\n\t\t\treadU16(&numCoefficients);\n\n\t\t\t/* numCoefficients should be at least 7. */\n\t\t\tassert(numCoefficients >= 7 && numCoefficients <= 255);\n\n\t\t\tm_msadpcmNumCoefficients = numCoefficients;\n\n\t\t\tfor (int i=0; i<m_msadpcmNumCoefficients; i++)\n\t\t\t{\n\t\t\t\treadS16(&m_msadpcmCoefficients[i][0]);\n\t\t\t\treadS16(&m_msadpcmCoefficients[i][1]);\n\t\t\t}\n\n\t\t\ttrack->f.sampleWidth = 16;\n\t\t\ttrack->f.sampleFormat = AF_SAMPFMT_TWOSCOMP;\n\t\t\ttrack->f.compressionType = AF_COMPRESSION_MS_ADPCM;\n\t\t\ttrack->f.byteOrder = _AF_BYTEORDER_NATIVE;\n\n\t\t\ttrack->f.framesPerPacket = samplesPerBlock;\n\t\t\ttrack->f.bytesPerPacket = blockAlign;\n\n\t\t\t// Create the parameter list.\n\t\t\tAUpvlist pv = AUpvnew(2);\n\t\t\tAUpvsetparam(pv, 0, _AF_MS_ADPCM_NUM_COEFFICIENTS);\n\t\t\tAUpvsetvaltype(pv, 0, AU_PVTYPE_LONG);\n\t\t\tlong l = m_msadpcmNumCoefficients;\n\t\t\tAUpvsetval(pv, 0, &l);\n\n\t\t\tAUpvsetparam(pv, 1, _AF_MS_ADPCM_COEFFICIENTS);\n\t\t\tAUpvsetvaltype(pv, 1, AU_PVTYPE_PTR);\n\t\t\tvoid *v = m_msadpcmCoefficients;\n\t\t\tAUpvsetval(pv, 1, &v);\n\n\t\t\ttrack->f.compressionParams = pv;\n\t\t}\n\t\tbreak;\n\n\t\tcase WAVE_FORMAT_DVI_ADPCM:\n\t\t{\n\t\t\tuint16_t bitsPerSample, extraByteCount, samplesPerBlock;\n\n\t\t\treadU16(&bitsPerSample);\n\t\t\treadU16(&extraByteCount);\n\t\t\treadU16(&samplesPerBlock);\n\n\t\t\tif (bitsPerSample != 4)\n\t\t\t{\n\t\t\t\t_af_error(AF_BAD_NOT_IMPLEMENTED,\n\t\t\t\t\t\"IMA ADPCM compression supports only 4 bits per sample\");\n\t\t\t}\n\n\t\t\tint bytesPerBlock = (samplesPerBlock + 14) / 8 * 4 * channelCount;\n\t\t\tif (bytesPerBlock > blockAlign || (samplesPerBlock % 8) != 1)\n\t\t\t{\n\t\t\t\t_af_error(AF_BAD_CODEC_CONFIG,\n\t\t\t\t\t\"Invalid samples per block for IMA ADPCM compression\");\n\t\t\t}\n\n\t\t\ttrack->f.sampleWidth = 16;\n\t\t\ttrack->f.sampleFormat = AF_SAMPFMT_TWOSCOMP;\n\t\t\ttrack->f.compressionType = AF_COMPRESSION_IMA;\n\t\t\ttrack->f.byteOrder = _AF_BYTEORDER_NATIVE;\n\n\t\t\tinitIMACompressionParams();\n\n\t\t\ttrack->f.framesPerPacket = samplesPerBlock;\n\t\t\ttrack->f.bytesPerPacket = blockAlign;\n\t\t}\n\t\tbreak;\n\n\t\tcase WAVE_FORMAT_EXTENSIBLE:\n\t\t{\n\t\t\tuint16_t bitsPerSample;\n\t\t\treadU16(&bitsPerSample);\n\t\t\tuint16_t extraByteCount;\n\t\t\treadU16(&extraByteCount);\n\t\t\tuint16_t reserved;\n\t\t\treadU16(&reserved);\n\t\t\tuint32_t channelMask;\n\t\t\treadU32(&channelMask);\n\t\t\tUUID subformat;\n\t\t\treadUUID(&subformat);\n\t\t\tif (subformat == _af_wave_guid_pcm)\n\t\t\t{\n\t\t\t\ttrack->f.sampleWidth = bitsPerSample;\n\n\t\t\t\tif (bitsPerSample == 0 || bitsPerSample > 32)\n\t\t\t\t{\n\t\t\t\t\t_af_error(AF_BAD_WIDTH,\n\t\t\t\t\t\t\"bad sample width of %d bits\",\n\t\t\t\t\t\tbitsPerSample);\n\t\t\t\t\treturn AF_FAIL;\n\t\t\t\t}\n\n\t\t\t\t// Use valid bits per sample if bytes per sample is the same.\n\t\t\t\tif (reserved <= bitsPerSample &&\n\t\t\t\t\t(reserved + 7) / 8 == (bitsPerSample + 7) / 8)\n\t\t\t\t\ttrack->f.sampleWidth = reserved;\n\n\t\t\t\tif (bitsPerSample <= 8)\n\t\t\t\t\ttrack->f.sampleFormat = AF_SAMPFMT_UNSIGNED;\n\t\t\t\telse\n\t\t\t\t\ttrack->f.sampleFormat = AF_SAMPFMT_TWOSCOMP;\n\t\t\t}\n\t\t\telse if (subformat == _af_wave_guid_ieee_float)\n\t\t\t{\n\t\t\t\tif (bitsPerSample == 64)\n\t\t\t\t{\n\t\t\t\t\ttrack->f.sampleWidth = 64;\n\t\t\t\t\ttrack->f.sampleFormat = AF_SAMPFMT_DOUBLE;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\ttrack->f.sampleWidth = 32;\n\t\t\t\t\ttrack->f.sampleFormat = AF_SAMPFMT_FLOAT;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (subformat == _af_wave_guid_alaw ||\n\t\t\t\tsubformat == _af_wave_guid_ulaw)\n\t\t\t{\n\t\t\t\ttrack->f.compressionType = subformat == _af_wave_guid_alaw ?\n\t\t\t\t\tAF_COMPRESSION_G711_ALAW : AF_COMPRESSION_G711_ULAW;\n\t\t\t\ttrack->f.sampleWidth = 16;\n\t\t\t\ttrack->f.sampleFormat = AF_SAMPFMT_TWOSCOMP;\n\t\t\t\ttrack->f.byteOrder = _AF_BYTEORDER_NATIVE;\n\t\t\t\ttrack->f.bytesPerPacket = channelCount;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t_af_error(AF_BAD_NOT_IMPLEMENTED, \"WAVE extensible data format %s is not currently supported\", subformat.name().c_str());\n\t\t\t\treturn AF_FAIL;\n\t\t\t}\n\t\t}\n\t\tbreak;\n\n\t\tcase WAVE_FORMAT_YAMAHA_ADPCM:\n\t\tcase WAVE_FORMAT_OKI_ADPCM:\n\t\tcase WAVE_FORMAT_CREATIVE_ADPCM:\n\t\tcase IBM_FORMAT_ADPCM:\n\t\t\t_af_error(AF_BAD_NOT_IMPLEMENTED, \"WAVE ADPCM data format 0x%x is not currently supported\", formatTag);\n\t\t\treturn AF_FAIL;\n\t\t\tbreak;\n\n\t\tcase WAVE_FORMAT_MPEG:\n\t\t\t_af_error(AF_BAD_NOT_IMPLEMENTED, \"WAVE MPEG data format is not supported\");\n\t\t\treturn AF_FAIL;\n\t\t\tbreak;\n\n\t\tcase WAVE_FORMAT_MPEGLAYER3:\n\t\t\t_af_error(AF_BAD_NOT_IMPLEMENTED, \"WAVE MPEG layer 3 data format is not supported\");\n\t\t\treturn AF_FAIL;\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\t_af_error(AF_BAD_NOT_IMPLEMENTED, \"WAVE file data format 0x%x not currently supported != 0xfffe ? %d, != EXTENSIBLE? %d\", formatTag, formatTag != 0xfffe, formatTag != WAVE_FORMAT_EXTENSIBLE);\n\t\t\treturn AF_FAIL;\n\t\t\tbreak;\n\t}\n\n\tif (track->f.isUncompressed())\n\t\ttrack->f.computeBytesPerPacketPCM();\n\n\t_af_set_sample_format(&track->f, track->f.sampleFormat, track->f.sampleWidth);\n\n\treturn AF_SUCCEED;\n}\n\nstatus WAVEFile::parseData(const Tag &id, uint32_t size)\n{\n\tTrack *track = getTrack();\n\n\ttrack->fpos_first_frame = m_fh->tell();\n\ttrack->data_size = size;\n\n\treturn AF_SUCCEED;\n}\n\nstatus WAVEFile::parsePlayList(const Tag &id, uint32_t size)\n{\n\tuint32_t segmentCount;\n\treadU32(&segmentCount);\n\n\tif (segmentCount == 0)\n\t{\n\t\tm_instrumentCount = 0;\n\t\tm_instruments = NULL;\n\t\treturn AF_SUCCEED;\n\t}\n\n\tfor (unsigned segment=0; segment<segmentCount; segment++)\n\t{\n\t\tuint32_t startMarkID, loopLength, loopCount;\n\n\t\treadU32(&startMarkID);\n\t\treadU32(&loopLength);\n\t\treadU32(&loopCount);\n\t}\n\n\treturn AF_SUCCEED;\n}\n\nstatus WAVEFile::parseCues(const Tag &id, uint32_t size)\n{\n\tTrack *track = getTrack();\n\n\tuint32_t markerCount;\n\treadU32(&markerCount);\n\ttrack->markerCount = markerCount;\n\n\tif (markerCount == 0)\n\t{\n\t\ttrack->markers = NULL;\n\t\treturn AF_SUCCEED;\n\t}\n\n\tif ((track->markers = _af_marker_new(markerCount)) == NULL)\n\t\treturn AF_FAIL;\n\n\tfor (unsigned i=0; i<markerCount; i++)\n\t{\n\t\tuint32_t id, position, chunkid;\n\t\tuint32_t chunkByteOffset, blockByteOffset;\n\t\tuint32_t sampleFrameOffset;\n\t\tMarker *marker = &track->markers[i];\n\n\t\treadU32(&id);\n\t\treadU32(&position);\n\t\treadU32(&chunkid);\n\t\treadU32(&chunkByteOffset);\n\t\treadU32(&blockByteOffset);\n\n\t\t/*\n\t\t\tsampleFrameOffset represents the position of\n\t\t\tthe mark in units of frames.\n\t\t*/\n\t\treadU32(&sampleFrameOffset);\n\n\t\tmarker->id = id;\n\t\tmarker->position = sampleFrameOffset;\n\t\tmarker->name = _af_strdup(\"\");\n\t\tmarker->comment = _af_strdup(\"\");\n\t}\n\n\treturn AF_SUCCEED;\n}\n\n/* Parse an adtl sub-chunk within a LIST chunk. */\nstatus WAVEFile::parseADTLSubChunk(const Tag &id, uint32_t size)\n{\n\tTrack *track = getTrack();\n\n\tAFfileoffset endPos = m_fh->tell() + size;\n\n\twhile (m_fh->tell() < endPos)\n\t{\n\t\tTag chunkID;\n\t\tuint32_t chunkSize;\n\n\t\treadTag(&chunkID);\n\t\treadU32(&chunkSize);\n\n\t\tif (chunkID == \"labl\" || chunkID == \"note\")\n\t\t{\n\t\t\tuint32_t id;\n\t\t\tlong length=chunkSize-4;\n\t\t\tchar *p = (char *) _af_malloc(length);\n\n\t\t\treadU32(&id);\n\t\t\tm_fh->read(p, length);\n\n\t\t\tMarker *marker = track->getMarker(id);\n\n\t\t\tif (marker)\n\t\t\t{\n\t\t\t\tif (chunkID == \"labl\")\n\t\t\t\t{\n\t\t\t\t\tfree(marker->name);\n\t\t\t\t\tmarker->name = p;\n\t\t\t\t}\n\t\t\t\telse if (chunkID == \"note\")\n\t\t\t\t{\n\t\t\t\t\tfree(marker->comment);\n\t\t\t\t\tmarker->comment = p;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\tfree(p);\n\t\t\t}\n\t\t\telse\n\t\t\t\tfree(p);\n\n\t\t\t/*\n\t\t\t\tIf chunkSize is odd, skip an extra byte\n\t\t\t\tat the end of the chunk.\n\t\t\t*/\n\t\t\tif ((chunkSize % 2) != 0)\n\t\t\t\tm_fh->seek(1, File::SeekFromCurrent);\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* If chunkSize is odd, skip an extra byte. */\n\t\t\tm_fh->seek(chunkSize + (chunkSize % 2), File::SeekFromCurrent);\n\t\t}\n\t}\n\treturn AF_SUCCEED;\n}\n\n/* Parse an INFO sub-chunk within a LIST chunk. */\nstatus WAVEFile::parseINFOSubChunk(const Tag &id, uint32_t size)\n{\n\tAFfileoffset endPos = m_fh->tell() + size;\n\n\twhile (m_fh->tell() < endPos)\n\t{\n\t\tint misctype = AF_MISC_UNRECOGNIZED;\n\t\tTag miscid;\n\t\tuint32_t miscsize;\n\n\t\treadTag(&miscid);\n\t\treadU32(&miscsize);\n\n\t\tif (miscid == \"IART\")\n\t\t\tmisctype = AF_MISC_AUTH;\n\t\telse if (miscid == \"INAM\")\n\t\t\tmisctype = AF_MISC_NAME;\n\t\telse if (miscid == \"ICOP\")\n\t\t\tmisctype = AF_MISC_COPY;\n\t\telse if (miscid == \"ICMT\")\n\t\t\tmisctype = AF_MISC_ICMT;\n\t\telse if (miscid == \"ICRD\")\n\t\t\tmisctype = AF_MISC_ICRD;\n\t\telse if (miscid == \"ISFT\")\n\t\t\tmisctype = AF_MISC_ISFT;\n\n\t\tif (misctype != AF_MISC_UNRECOGNIZED)\n\t\t{\n\t\t\tchar *string = (char *) _af_malloc(miscsize);\n\n\t\t\tm_fh->read(string, miscsize);\n\n\t\t\tm_miscellaneousCount++;\n\t\t\tm_miscellaneous = (Miscellaneous *) _af_realloc(m_miscellaneous, sizeof (Miscellaneous) * m_miscellaneousCount);\n\n\t\t\tm_miscellaneous[m_miscellaneousCount-1].id = m_miscellaneousCount;\n\t\t\tm_miscellaneous[m_miscellaneousCount-1].type = misctype;\n\t\t\tm_miscellaneous[m_miscellaneousCount-1].size = miscsize;\n\t\t\tm_miscellaneous[m_miscellaneousCount-1].position = 0;\n\t\t\tm_miscellaneous[m_miscellaneousCount-1].buffer = string;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tm_fh->seek(miscsize, File::SeekFromCurrent);\n\t\t}\n\n\t\t/* Make the current position an even number of bytes.  */\n\t\tif (miscsize % 2 != 0)\n\t\t\tm_fh->seek(1, File::SeekFromCurrent);\n\t}\n\treturn AF_SUCCEED;\n}\n\nstatus WAVEFile::parseList(const Tag &id, uint32_t size)\n{\n\tTag typeID;\n\treadTag(&typeID);\n\tsize-=4;\n\n\tif (typeID == \"adtl\")\n\t{\n\t\t/* Handle adtl sub-chunks. */\n\t\treturn parseADTLSubChunk(typeID, size);\n\t}\n\telse if (typeID == \"INFO\")\n\t{\n\t\t/* Handle INFO sub-chunks. */\n\t\treturn parseINFOSubChunk(typeID, size);\n\t}\n\telse\n\t{\n\t\t/* Skip unhandled sub-chunks. */\n\t\tm_fh->seek(size, File::SeekFromCurrent);\n\t\treturn AF_SUCCEED;\n\t}\n\treturn AF_SUCCEED;\n}\n\nstatus WAVEFile::parseInstrument(const Tag &id, uint32_t size)\n{\n\tuint8_t baseNote;\n\tint8_t detune, gain;\n\tuint8_t lowNote, highNote, lowVelocity, highVelocity;\n\tuint8_t padByte;\n\n\treadU8(&baseNote);\n\treadS8(&detune);\n\treadS8(&gain);\n\treadU8(&lowNote);\n\treadU8(&highNote);\n\treadU8(&lowVelocity);\n\treadU8(&highVelocity);\n\treadU8(&padByte);\n\n\treturn AF_SUCCEED;\n}\n\nbool WAVEFile::recognize(File *fh)\n{\n\tuint8_t buffer[8];\n\n\tfh->seek(0, File::SeekFromBeginning);\n\n\tif (fh->read(buffer, 8) != 8 || memcmp(buffer, \"RIFF\", 4) != 0)\n\t\treturn false;\n\tif (fh->read(buffer, 4) != 4 || memcmp(buffer, \"WAVE\", 4) != 0)\n\t\treturn false;\n\n\treturn true;\n}\n\nstatus WAVEFile::readInit(AFfilesetup setup)\n{\n\tTag type, formtype;\n\tuint32_t size;\n\tuint32_t index = 0;\n\n\tbool hasFormat = false;\n\tbool hasData = false;\n\tbool hasFrameCount = false;\n\n\tTrack *track = allocateTrack();\n\n\tm_fh->seek(0, File::SeekFromBeginning);\n\n\treadTag(&type);\n\treadU32(&size);\n\treadTag(&formtype);\n\n\tassert(type == \"RIFF\");\n\tassert(formtype == \"WAVE\");\n\n\t/* Include the offset of the form type. */\n\tindex += 4;\n\n\twhile (index < size)\n\t{\n\t\tTag chunkid;\n\t\tuint32_t chunksize = 0;\n\t\tstatus result;\n\n\t\treadTag(&chunkid);\n\t\treadU32(&chunksize);\n\n\t\tif (chunkid == \"fmt \")\n\t\t{\n\t\t\tresult = parseFormat(chunkid, chunksize);\n\t\t\tif (result == AF_FAIL)\n\t\t\t\treturn AF_FAIL;\n\n\t\t\thasFormat = true;\n\t\t}\n\t\telse if (chunkid == \"data\")\n\t\t{\n\t\t\t/* The format chunk must precede the data chunk. */\n\t\t\tif (!hasFormat)\n\t\t\t{\n\t\t\t\t_af_error(AF_BAD_HEADER, \"missing format chunk in WAVE file\");\n\t\t\t\treturn AF_FAIL;\n\t\t\t}\n\n\t\t\tresult = parseData(chunkid, chunksize);\n\t\t\tif (result == AF_FAIL)\n\t\t\t\treturn AF_FAIL;\n\n\t\t\thasData = true;\n\t\t}\n\t\telse if (chunkid == \"inst\")\n\t\t{\n\t\t\tresult = parseInstrument(chunkid, chunksize);\n\t\t\tif (result == AF_FAIL)\n\t\t\t\treturn AF_FAIL;\n\t\t}\n\t\telse if (chunkid == \"fact\")\n\t\t{\n\t\t\thasFrameCount = true;\n\t\t\tresult = parseFrameCount(chunkid, chunksize);\n\t\t\tif (result == AF_FAIL)\n\t\t\t\treturn AF_FAIL;\n\t\t}\n\t\telse if (chunkid == \"cue \")\n\t\t{\n\t\t\tresult = parseCues(chunkid, chunksize);\n\t\t\tif (result == AF_FAIL)\n\t\t\t\treturn AF_FAIL;\n\t\t}\n\t\telse if (chunkid == \"LIST\" || chunkid == \"list\")\n\t\t{\n\t\t\tresult = parseList(chunkid, chunksize);\n\t\t\tif (result == AF_FAIL)\n\t\t\t\treturn AF_FAIL;\n\t\t}\n\t\telse if (chunkid == \"INST\")\n\t\t{\n\t\t\tresult = parseInstrument(chunkid, chunksize);\n\t\t\tif (result == AF_FAIL)\n\t\t\t\treturn AF_FAIL;\n\t\t}\n\t\telse if (chunkid == \"plst\")\n\t\t{\n\t\t\tresult = parsePlayList(chunkid, chunksize);\n\t\t\tif (result == AF_FAIL)\n\t\t\t\treturn AF_FAIL;\n\t\t}\n\n\t\tindex += chunksize + 8;\n\n\t\t/* All chunks must be aligned on an even number of bytes */\n\t\tif ((index % 2) != 0)\n\t\t\tindex++;\n\n\t\tm_fh->seek(index + 8, File::SeekFromBeginning);\n\t}\n\n\t/* The format chunk and the data chunk are required. */\n\tif (!hasFormat || !hasData)\n\t{\n\t\treturn AF_FAIL;\n\t}\n\n\t/*\n\t\tAt this point we know that the file has a format chunk and a\n\t\tdata chunk, so we can assume that track->f and track->data_size\n\t\thave been initialized.\n\t*/\n\tif (!hasFrameCount)\n\t{\n\t\tif (track->f.bytesPerPacket && track->f.framesPerPacket)\n\t\t{\n\t\t\ttrack->computeTotalFileFrames();\n\t\t}\n\t\telse\n\t\t{\n\t\t\t_af_error(AF_BAD_HEADER, \"Frame count required but not found\");\n\t\t\treturn AF_FAIL;\n\t\t}\n\t}\n\n\treturn AF_SUCCEED;\n}\n\nAFfilesetup WAVEFile::completeSetup(AFfilesetup setup)\n{\n\tif (setup->trackSet && setup->trackCount != 1)\n\t{\n\t\t_af_error(AF_BAD_NUMTRACKS, \"WAVE file must have 1 track\");\n\t\treturn AF_NULL_FILESETUP;\n\t}\n\n\tTrackSetup *track = setup->getTrack();\n\tif (!track)\n\t\treturn AF_NULL_FILESETUP;\n\n\tif (track->f.isCompressed())\n\t{\n\t\tif (!track->sampleFormatSet)\n\t\t\t_af_set_sample_format(&track->f, AF_SAMPFMT_TWOSCOMP, 16);\n\t\telse\n\t\t\t_af_set_sample_format(&track->f, track->f.sampleFormat, track->f.sampleWidth);\n\t}\n\telse if (track->sampleFormatSet)\n\t{\n\t\tswitch (track->f.sampleFormat)\n\t\t{\n\t\t\tcase AF_SAMPFMT_FLOAT:\n\t\t\t\tif (track->sampleWidthSet &&\n\t\t\t\t\ttrack->f.sampleWidth != 32)\n\t\t\t\t{\n\t\t\t\t\t_af_error(AF_BAD_WIDTH,\n\t\t\t\t\t\t\"Warning: invalid sample width for floating-point WAVE file: %d (must be 32 bits)\\n\",\n\t\t\t\t\t\ttrack->f.sampleWidth);\n\t\t\t\t\t_af_set_sample_format(&track->f, AF_SAMPFMT_FLOAT, 32);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase AF_SAMPFMT_DOUBLE:\n\t\t\t\tif (track->sampleWidthSet &&\n\t\t\t\t\ttrack->f.sampleWidth != 64)\n\t\t\t\t{\n\t\t\t\t\t_af_error(AF_BAD_WIDTH,\n\t\t\t\t\t\t\"Warning: invalid sample width for double-precision floating-point WAVE file: %d (must be 64 bits)\\n\",\n\t\t\t\t\t\ttrack->f.sampleWidth);\n\t\t\t\t\t_af_set_sample_format(&track->f, AF_SAMPFMT_DOUBLE, 64);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase AF_SAMPFMT_UNSIGNED:\n\t\t\t\tif (track->sampleWidthSet)\n\t\t\t\t{\n\t\t\t\t\tif (track->f.sampleWidth < 1 || track->f.sampleWidth > 32)\n\t\t\t\t\t{\n\t\t\t\t\t\t_af_error(AF_BAD_WIDTH, \"invalid sample width for WAVE file: %d (must be 1-32 bits)\\n\", track->f.sampleWidth);\n\t\t\t\t\t\treturn AF_NULL_FILESETUP;\n\t\t\t\t\t}\n\t\t\t\t\tif (track->f.sampleWidth > 8)\n\t\t\t\t\t{\n\t\t\t\t\t\t_af_error(AF_BAD_SAMPFMT, \"WAVE integer data of more than 8 bits must be two's complement signed\");\n\t\t\t\t\t\t_af_set_sample_format(&track->f, AF_SAMPFMT_TWOSCOMP, track->f.sampleWidth);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t/*\n\t\t\t\t\tIf the sample width is not set but the user requests\n\t\t\t\t\tunsigned data, set the width to 8 bits.\n\t\t\t\t*/\n\t\t\t\t\t_af_set_sample_format(&track->f, track->f.sampleFormat, 8);\n\t\t\t\tbreak;\n\n\t\t\tcase AF_SAMPFMT_TWOSCOMP:\n\t\t\t\tif (track->sampleWidthSet)\n\t\t\t\t{\n\t\t\t\t\tif (track->f.sampleWidth < 1 || track->f.sampleWidth > 32)\n\t\t\t\t\t{\n\t\t\t\t\t\t_af_error(AF_BAD_WIDTH, \"invalid sample width %d for WAVE file (must be 1-32)\", track->f.sampleWidth);\n\t\t\t\t\t\treturn AF_NULL_FILESETUP;\n\t\t\t\t\t}\n\t\t\t\t\telse if (track->f.sampleWidth <= 8)\n\t\t\t\t\t{\n\t\t\t\t\t\t_af_error(AF_BAD_SAMPFMT, \"Warning: WAVE format integer data of 1-8 bits must be unsigned; setting sample format to unsigned\");\n\t\t\t\t\t\t_af_set_sample_format(&track->f, AF_SAMPFMT_UNSIGNED, track->f.sampleWidth);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t/*\n\t\t\t\t\tIf no sample width was specified, we default to 16 bits\n\t\t\t\t\tfor signed integer data.\n\t\t\t\t*/\n\t\t\t\t\t_af_set_sample_format(&track->f, track->f.sampleFormat, 16);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\t/*\n\t\tOtherwise set the sample format depending on the sample\n\t\twidth or set completely to default.\n\t*/\n\telse\n\t{\n\t\tif (!track->sampleWidthSet)\n\t\t{\n\t\t\ttrack->f.sampleWidth = 16;\n\t\t\ttrack->f.sampleFormat = AF_SAMPFMT_TWOSCOMP;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (track->f.sampleWidth < 1 || track->f.sampleWidth > 32)\n\t\t\t{\n\t\t\t\t_af_error(AF_BAD_WIDTH, \"invalid sample width %d for WAVE file (must be 1-32)\", track->f.sampleWidth);\n\t\t\t\treturn AF_NULL_FILESETUP;\n\t\t\t}\n\t\t\telse if (track->f.sampleWidth > 8)\n\t\t\t\t/* Here track->f.sampleWidth is in {1..32}. */\n\t\t\t\ttrack->f.sampleFormat = AF_SAMPFMT_TWOSCOMP;\n\t\t\telse\n\t\t\t\t/* Here track->f.sampleWidth is in {1..8}. */\n\t\t\t\ttrack->f.sampleFormat = AF_SAMPFMT_UNSIGNED;\n\t\t}\n\t}\n\n\tif (track->f.compressionType != AF_COMPRESSION_NONE &&\n\t\ttrack->f.compressionType != AF_COMPRESSION_G711_ULAW &&\n\t\ttrack->f.compressionType != AF_COMPRESSION_G711_ALAW &&\n\t\ttrack->f.compressionType != AF_COMPRESSION_IMA &&\n\t\ttrack->f.compressionType != AF_COMPRESSION_MS_ADPCM)\n\t{\n\t\t_af_error(AF_BAD_NOT_IMPLEMENTED, \"compression format not supported in WAVE format\");\n\t\treturn AF_NULL_FILESETUP;\n\t}\n\n\tif (track->f.isUncompressed() &&\n\t\ttrack->byteOrderSet &&\n\t\ttrack->f.byteOrder != AF_BYTEORDER_LITTLEENDIAN &&\n\t\ttrack->f.isByteOrderSignificant())\n\t{\n\t\t_af_error(AF_BAD_BYTEORDER, \"WAVE format only supports little-endian data\");\n\t\treturn AF_NULL_FILESETUP;\n\t}\n\n\tif (track->f.isUncompressed())\n\t\ttrack->f.byteOrder = AF_BYTEORDER_LITTLEENDIAN;\n\n\tif (track->aesDataSet)\n\t{\n\t\t_af_error(AF_BAD_FILESETUP, \"WAVE files cannot have AES data\");\n\t\treturn AF_NULL_FILESETUP;\n\t}\n\n\tif (setup->instrumentSet)\n\t{\n\t\tif (setup->instrumentCount > 1)\n\t\t{\n\t\t\t_af_error(AF_BAD_NUMINSTS, \"WAVE files can have 0 or 1 instrument\");\n\t\t\treturn AF_NULL_FILESETUP;\n\t\t}\n\t\telse if (setup->instrumentCount == 1)\n\t\t{\n\t\t\tif (setup->instruments[0].loopSet &&\n\t\t\t\tsetup->instruments[0].loopCount > 0 &&\n\t\t\t\t(!track->markersSet || track->markerCount == 0))\n\t\t\t{\n\t\t\t\t_af_error(AF_BAD_NUMMARKS, \"WAVE files with loops must contain at least 1 marker\");\n\t\t\t\treturn AF_NULL_FILESETUP;\n\t\t\t}\n\t\t}\n\t}\n\n\t/* Make sure the miscellaneous data is of an acceptable type. */\n\tif (setup->miscellaneousSet)\n\t{\n\t\tfor (int i=0; i<setup->miscellaneousCount; i++)\n\t\t{\n\t\t\tswitch (setup->miscellaneous[i].type)\n\t\t\t{\n\t\t\t\tcase AF_MISC_COPY:\n\t\t\t\tcase AF_MISC_AUTH:\n\t\t\t\tcase AF_MISC_NAME:\n\t\t\t\tcase AF_MISC_ICRD:\n\t\t\t\tcase AF_MISC_ISFT:\n\t\t\t\tcase AF_MISC_ICMT:\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\t_af_error(AF_BAD_MISCTYPE, \"illegal miscellaneous type [%d] for WAVE file\", setup->miscellaneous[i].type);\n\t\t\t\t\treturn AF_NULL_FILESETUP;\n\t\t\t}\n\t\t}\n\t}\n\n\t/*\n\t\tAllocate an AFfilesetup and make all the unset fields correct.\n\t*/\n\tAFfilesetup\tnewsetup = _af_filesetup_copy(setup, &waveDefaultFileSetup, false);\n\n\t/* Make sure we do not copy loops if they are not specified in setup. */\n\tif (setup->instrumentSet && setup->instrumentCount > 0 &&\n\t\tsetup->instruments[0].loopSet)\n\t{\n\t\tfree(newsetup->instruments[0].loops);\n\t\tnewsetup->instruments[0].loopCount = 0;\n\t}\n\n\treturn newsetup;\n}\n\nbool WAVEFile::isInstrumentParameterValid(AUpvlist list, int i)\n{\n\tint param, type;\n\n\tAUpvgetparam(list, i, &param);\n\tAUpvgetvaltype(list, i, &type);\n\tif (type != AU_PVTYPE_LONG)\n\t\treturn false;\n\n\tlong lval;\n\tAUpvgetval(list, i, &lval);\n\n\tswitch (param)\n\t{\n\t\tcase AF_INST_MIDI_BASENOTE:\n\t\t\treturn ((lval >= 0) && (lval <= 127));\n\n\t\tcase AF_INST_NUMCENTS_DETUNE:\n\t\t\treturn ((lval >= -50) && (lval <= 50));\n\n\t\tcase AF_INST_MIDI_LOVELOCITY:\n\t\t\treturn ((lval >= 1) && (lval <= 127));\n\n\t\tcase AF_INST_MIDI_HIVELOCITY:\n\t\t\treturn ((lval >= 1) && (lval <= 127));\n\n\t\tcase AF_INST_MIDI_LONOTE:\n\t\t\treturn ((lval >= 0) && (lval <= 127));\n\n\t\tcase AF_INST_MIDI_HINOTE:\n\t\t\treturn ((lval >= 0) && (lval <= 127));\n\n\t\tcase AF_INST_NUMDBS_GAIN:\n\t\t\treturn true;\n\n\t\tdefault:\n\t\t\treturn false;\n\t}\n\n\treturn true;\n}\n\nstatus WAVEFile::writeFormat()\n{\n\tuint16_t\tformatTag, channelCount;\n\tuint32_t\tsampleRate, averageBytesPerSecond;\n\tuint16_t\tblockAlign;\n\tuint32_t\tchunkSize;\n\tuint16_t\tbitsPerSample;\n\n\tTrack *track = getTrack();\n\n\tm_fh->write(\"fmt \", 4);\n\n\tswitch (track->f.compressionType)\n\t{\n\t\tcase AF_COMPRESSION_NONE:\n\t\t\tchunkSize = 16;\n\t\t\tif (track->f.sampleFormat == AF_SAMPFMT_FLOAT ||\n\t\t\t\ttrack->f.sampleFormat == AF_SAMPFMT_DOUBLE)\n\t\t\t{\n\t\t\t\tformatTag = WAVE_FORMAT_IEEE_FLOAT;\n\t\t\t}\n\t\t\telse if (track->f.sampleFormat == AF_SAMPFMT_TWOSCOMP ||\n\t\t\t\ttrack->f.sampleFormat == AF_SAMPFMT_UNSIGNED)\n\t\t\t{\n\t\t\t\tformatTag = WAVE_FORMAT_PCM;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t_af_error(AF_BAD_COMPTYPE, \"bad sample format\");\n\t\t\t\treturn AF_FAIL;\n\t\t\t}\n\n\t\t\tblockAlign = _af_format_frame_size(&track->f, false);\n\t\t\tbitsPerSample = 8 * _af_format_sample_size(&track->f, false);\n\t\t\tbreak;\n\n\t\t/*\n\t\t\tG.711 compression uses eight bits per sample.\n\t\t*/\n\t\tcase AF_COMPRESSION_G711_ULAW:\n\t\t\tchunkSize = 18;\n\t\t\tformatTag = IBM_FORMAT_MULAW;\n\t\t\tblockAlign = track->f.channelCount;\n\t\t\tbitsPerSample = 8;\n\t\t\tbreak;\n\n\t\tcase AF_COMPRESSION_G711_ALAW:\n\t\t\tchunkSize = 18;\n\t\t\tformatTag = IBM_FORMAT_ALAW;\n\t\t\tblockAlign = track->f.channelCount;\n\t\t\tbitsPerSample = 8;\n\t\t\tbreak;\n\n\t\tcase AF_COMPRESSION_IMA:\n\t\t\tchunkSize = 20;\n\t\t\tformatTag = WAVE_FORMAT_DVI_ADPCM;\n\t\t\tblockAlign = track->f.bytesPerPacket;\n\t\t\tbitsPerSample = 4;\n\t\t\tbreak;\n\n\t\tcase AF_COMPRESSION_MS_ADPCM:\n\t\t\tchunkSize = 50;\n\t\t\tformatTag = WAVE_FORMAT_ADPCM;\n\t\t\tblockAlign = track->f.bytesPerPacket;\n\t\t\tbitsPerSample = 4;\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\t_af_error(AF_BAD_COMPTYPE, \"bad compression type\");\n\t\t\treturn AF_FAIL;\n\t}\n\n\twriteU32(&chunkSize);\n\twriteU16(&formatTag);\n\n\tchannelCount = track->f.channelCount;\n\twriteU16(&channelCount);\n\n\tsampleRate = track->f.sampleRate;\n\twriteU32(&sampleRate);\n\n\taverageBytesPerSecond =\n\t\ttrack->f.sampleRate * _af_format_frame_size(&track->f, false);\n\tif (track->f.compressionType == AF_COMPRESSION_IMA ||\n\t\ttrack->f.compressionType == AF_COMPRESSION_MS_ADPCM)\n\t\taverageBytesPerSecond = track->f.sampleRate * track->f.bytesPerPacket /\n\t\t\ttrack->f.framesPerPacket;\n\twriteU32(&averageBytesPerSecond);\n\n\twriteU16(&blockAlign);\n\n\twriteU16(&bitsPerSample);\n\n\tif (track->f.compressionType == AF_COMPRESSION_G711_ULAW ||\n\t\ttrack->f.compressionType == AF_COMPRESSION_G711_ALAW)\n\t{\n\t\tuint16_t zero = 0;\n\t\twriteU16(&zero);\n\t}\n\telse if (track->f.compressionType == AF_COMPRESSION_IMA)\n\t{\n\t\tuint16_t extraByteCount = 2;\n\t\twriteU16(&extraByteCount);\n\t\tuint16_t samplesPerBlock = track->f.framesPerPacket;\n\t\twriteU16(&samplesPerBlock);\n\t}\n\telse if (track->f.compressionType == AF_COMPRESSION_MS_ADPCM)\n\t{\n\t\tuint16_t extraByteCount = 2 + 2 + m_msadpcmNumCoefficients * 4;\n\t\twriteU16(&extraByteCount);\n\t\tuint16_t samplesPerBlock = track->f.framesPerPacket;\n\t\twriteU16(&samplesPerBlock);\n\n\t\tuint16_t numCoefficients = m_msadpcmNumCoefficients;\n\t\twriteU16(&numCoefficients);\n\n\t\tfor (int i=0; i<m_msadpcmNumCoefficients; i++)\n\t\t{\n\t\t\twriteS16(&m_msadpcmCoefficients[i][0]);\n\t\t\twriteS16(&m_msadpcmCoefficients[i][1]);\n\t\t}\n\t}\n\n\treturn AF_SUCCEED;\n}\n\nstatus WAVEFile::writeFrameCount()\n{\n\tuint32_t factSize = 4;\n\tuint32_t totalFrameCount;\n\n\tTrack *track = getTrack();\n\n\t/* Omit the fact chunk only for uncompressed integer audio formats. */\n\tif (track->f.compressionType == AF_COMPRESSION_NONE &&\n\t\t(track->f.sampleFormat == AF_SAMPFMT_TWOSCOMP ||\n\t\ttrack->f.sampleFormat == AF_SAMPFMT_UNSIGNED))\n\t\treturn AF_SUCCEED;\n\n\t/*\n\t\tIf the offset for the fact chunk hasn't been set yet,\n\t\tset it to the file's current position.\n\t*/\n\tif (m_factOffset == 0)\n\t\tm_factOffset = m_fh->tell();\n\telse\n\t\tm_fh->seek(m_factOffset, File::SeekFromBeginning);\n\n\tm_fh->write(\"fact\", 4);\n\twriteU32(&factSize);\n\n\ttotalFrameCount = track->totalfframes;\n\twriteU32(&totalFrameCount);\n\n\treturn AF_SUCCEED;\n}\n\nstatus WAVEFile::writeData()\n{\n\tTrack *track = getTrack();\n\n\tm_fh->write(\"data\", 4);\n\tm_dataSizeOffset = m_fh->tell();\n\n\tuint32_t chunkSize = track->data_size;\n\n\twriteU32(&chunkSize);\n\ttrack->fpos_first_frame = m_fh->tell();\n\n\treturn AF_SUCCEED;\n}\n\nstatus WAVEFile::update()\n{\n\tTrack *track = getTrack();\n\n\tif (track->fpos_first_frame != 0)\n\t{\n\t\tuint32_t dataLength, fileLength;\n\n\t\t// Update the frame count chunk if present.\n\t\twriteFrameCount();\n\n\t\t// Update the length of the data chunk.\n\t\tm_fh->seek(m_dataSizeOffset, File::SeekFromBeginning);\n\t\tdataLength = (uint32_t) track->data_size;\n\t\twriteU32(&dataLength);\n\n\t\t// Update the length of the RIFF chunk.\n\t\tfileLength = (uint32_t) m_fh->length();\n\t\tfileLength -= 8;\n\n\t\tm_fh->seek(4, File::SeekFromBeginning);\n\t\twriteU32(&fileLength);\n\t}\n\n\t/*\n\t\tWrite the actual data that was set after initializing\n\t\tthe miscellaneous IDs.\tThe size of the data will be\n\t\tunchanged.\n\t*/\n\twriteMiscellaneous();\n\n\t// Write the new positions; the size of the data will be unchanged.\n\twriteCues();\n\n\treturn AF_SUCCEED;\n}\n\n/* Convert an Audio File Library miscellaneous type to a WAVE type. */\nstatic bool misc_type_to_wave (int misctype, Tag *miscid)\n{\n\tif (misctype == AF_MISC_AUTH)\n\t\t*miscid = \"IART\";\n\telse if (misctype == AF_MISC_NAME)\n\t\t*miscid = \"INAM\";\n\telse if (misctype == AF_MISC_COPY)\n\t\t*miscid = \"ICOP\";\n\telse if (misctype == AF_MISC_ICMT)\n\t\t*miscid = \"ICMT\";\n\telse if (misctype == AF_MISC_ICRD)\n\t\t*miscid = \"ICRD\";\n\telse if (misctype == AF_MISC_ISFT)\n\t\t*miscid = \"ISFT\";\n\telse\n\t\treturn false;\n\n\treturn true;\n}\n\nstatus WAVEFile::writeMiscellaneous()\n{\n\tif (m_miscellaneousCount != 0)\n\t{\n\t\tuint32_t\tmiscellaneousBytes;\n\t\tuint32_t \tchunkSize;\n\n\t\t/* Start at 12 to account for 'LIST', size, and 'INFO'. */\n\t\tmiscellaneousBytes = 12;\n\n\t\t/* Then calculate the size of the whole INFO chunk. */\n\t\tfor (int i=0; i<m_miscellaneousCount; i++)\n\t\t{\n\t\t\tTag miscid;\n\n\t\t\t// Skip miscellaneous data of an unsupported type.\n\t\t\tif (!misc_type_to_wave(m_miscellaneous[i].type, &miscid))\n\t\t\t\tcontinue;\n\n\t\t\t// Account for miscellaneous type and size.\n\t\t\tmiscellaneousBytes += 8;\n\t\t\tmiscellaneousBytes += m_miscellaneous[i].size;\n\n\t\t\t// Add a pad byte if necessary.\n\t\t\tif (m_miscellaneous[i].size % 2 != 0)\n\t\t\t\tmiscellaneousBytes++;\n\n\t\t\tassert(miscellaneousBytes % 2 == 0);\n\t\t}\n\n\t\tif (m_miscellaneousOffset == 0)\n\t\t\tm_miscellaneousOffset = m_fh->tell();\n\t\telse\n\t\t\tm_fh->seek(m_miscellaneousOffset, File::SeekFromBeginning);\n\n\t\t/*\n\t\t\tWrite the data.  On the first call to this\n\t\t\tfunction (from _af_wave_write_init), the\n\t\t\tdata won't be available, fh->seek is used to\n\t\t\treserve space until the data has been provided.\n\t\t\tOn subseuent calls to this function (from\n\t\t\t_af_wave_update), the data will really be written.\n\t\t*/\n\n\t\t/* Write 'LIST'. */\n\t\tm_fh->write(\"LIST\", 4);\n\n\t\t/* Write the size of the following chunk. */\n\t\tchunkSize = miscellaneousBytes-8;\n\t\twriteU32(&chunkSize);\n\n\t\t/* Write 'INFO'. */\n\t\tm_fh->write(\"INFO\", 4);\n\n\t\t/* Write each miscellaneous chunk. */\n\t\tfor (int i=0; i<m_miscellaneousCount; i++)\n\t\t{\n\t\t\tuint32_t miscsize = m_miscellaneous[i].size;\n\t\t\tTag miscid;\n\n\t\t\t// Skip miscellaneous data of an unsupported type.\n\t\t\tif (!misc_type_to_wave(m_miscellaneous[i].type, &miscid))\n\t\t\t\tcontinue;\n\n\t\t\twriteTag(&miscid);\n\t\t\twriteU32(&miscsize);\n\t\t\tif (m_miscellaneous[i].buffer != NULL)\n\t\t\t{\n\t\t\t\tuint8_t\tzero = 0;\n\n\t\t\t\tm_fh->write(m_miscellaneous[i].buffer, m_miscellaneous[i].size);\n\n\t\t\t\t// Pad if necessary.\n\t\t\t\tif ((m_miscellaneous[i].size%2) != 0)\n\t\t\t\t\twriteU8(&zero);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tint\tsize;\n\t\t\t\tsize = m_miscellaneous[i].size;\n\n\t\t\t\t// Pad if necessary.\n\t\t\t\tif ((size % 2) != 0)\n\t\t\t\t\tsize++;\n\t\t\t\tm_fh->seek(size, File::SeekFromCurrent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn AF_SUCCEED;\n}\n\nstatus WAVEFile::writeCues()\n{\n\tTrack *track = getTrack();\n\n\tif (!track->markerCount)\n\t\treturn AF_SUCCEED;\n\n\tif (m_markOffset == 0)\n\t\tm_markOffset = m_fh->tell();\n\telse\n\t\tm_fh->seek(m_markOffset, File::SeekFromBeginning);\n\n\tTag cue(\"cue \");\n\twriteTag(&cue);\n\n\t/*\n\t\tThe cue chunk consists of 4 bytes for the number of cue points\n\t\tfollowed by 24 bytes for each cue point record.\n\t*/\n\tuint32_t cueChunkSize = 4 + track->markerCount * 24;\n\twriteU32(&cueChunkSize);\n\tuint32_t numCues = track->markerCount;\n\twriteU32(&numCues);\n\n\t// Write each marker to the file.\n\tfor (int i=0; i<track->markerCount; i++)\n\t{\n\t\tuint32_t identifier = track->markers[i].id;\n\t\twriteU32(&identifier);\n\n\t\tuint32_t position = i;\n\t\twriteU32(&position);\n\n\t\tTag data(\"data\");\n\t\twriteTag(&data);\n\n\t\t/*\n\t\t\tFor an uncompressed WAVE file which contains only one data chunk,\n\t\t\tchunkStart and blockStart are zero.\n\t\t*/\n\t\tuint32_t chunkStart = 0;\n\t\twriteU32(&chunkStart);\n\n\t\tuint32_t blockStart = 0;\n\t\twriteU32(&blockStart);\n\n\t\tAFframecount markPosition = track->markers[i].position;\n\t\tuint32_t sampleOffset = markPosition;\n\t\twriteU32(&sampleOffset);\n\t}\n\n\t// Now write the cue names and comments within a master list chunk.\n\tuint32_t listChunkSize = 4;\n\tfor (int i=0; i<track->markerCount; i++)\n\t{\n\t\tconst char *name = track->markers[i].name;\n\t\tconst char *comment = track->markers[i].comment;\n\n\t\t/*\n\t\t\tEach 'labl' or 'note' chunk consists of 4 bytes for the chunk ID,\n\t\t\t4 bytes for the chunk data size, 4 bytes for the cue point ID,\n\t\t\tand then the length of the label as a null-terminated string.\n\n\t\t\tIn all, this is 12 bytes plus the length of the string, its null\n\t\t\ttermination byte, and a trailing pad byte if the length of the\n\t\t\tchunk is otherwise odd.\n\t\t*/\n\t\tlistChunkSize += 12 + zStringLength(name);\n\t\tlistChunkSize += 12 + zStringLength(comment);\n\t}\n\n\tTag list(\"LIST\");\n\twriteTag(&list);\n\twriteU32(&listChunkSize);\n\tTag adtl(\"adtl\");\n\twriteTag(&adtl);\n\n\tfor (int i=0; i<track->markerCount; i++)\n\t{\n\t\tuint32_t cuePointID = track->markers[i].id;\n\n\t\tconst char *name = track->markers[i].name;\n\t\tuint32_t labelSize = 4 + zStringLength(name);\n\t\tTag lablTag(\"labl\");\n\t\twriteTag(&lablTag);\n\t\twriteU32(&labelSize);\n\t\twriteU32(&cuePointID);\n\t\twriteZString(name);\n\n\t\tconst char *comment = track->markers[i].comment;\n\t\tuint32_t noteSize = 4 + zStringLength(comment);\n\t\tTag noteTag(\"note\");\n\t\twriteTag(&noteTag);\n\t\twriteU32(&noteSize);\n\t\twriteU32(&cuePointID);\n\t\twriteZString(comment);\n\t}\n\n\treturn AF_SUCCEED;\n}\n\nbool WAVEFile::writeZString(const char *s)\n{\n\tssize_t lengthPlusNull = strlen(s) + 1;\n\tif (m_fh->write(s, lengthPlusNull) != lengthPlusNull)\n\t\treturn false;\n\tif (lengthPlusNull & 1)\n\t{\n\t\tuint8_t zero = 0;\n\t\tif (!writeU8(&zero))\n\t\t\treturn false;\n\t}\n\treturn true;\n}\n\nsize_t WAVEFile::zStringLength(const char *s)\n{\n\tsize_t lengthPlusNull = strlen(s) + 1;\n\treturn lengthPlusNull + (lengthPlusNull & 1);\n}\n\nstatus WAVEFile::writeInit(AFfilesetup setup)\n{\n\tif (initFromSetup(setup) == AF_FAIL)\n\t\treturn AF_FAIL;\n\n\tinitCompressionParams();\n\n\tuint32_t zero = 0;\n\n\tm_fh->seek(0, File::SeekFromBeginning);\n\tm_fh->write(\"RIFF\", 4);\n\tm_fh->write(&zero, 4);\n\tm_fh->write(\"WAVE\", 4);\n\n\twriteMiscellaneous();\n\twriteCues();\n\twriteFormat();\n\twriteFrameCount();\n\twriteData();\n\n\treturn AF_SUCCEED;\n}\n\nbool WAVEFile::readUUID(UUID *u)\n{\n\treturn m_fh->read(u->data, 16) == 16;\n}\n\nbool WAVEFile::writeUUID(const UUID *u)\n{\n\treturn m_fh->write(u->data, 16) == 16;\n}\n\nvoid WAVEFile::initCompressionParams()\n{\n\tTrack *track = getTrack();\n\tif (track->f.compressionType == AF_COMPRESSION_IMA)\n\t\tinitIMACompressionParams();\n\telse if (track->f.compressionType == AF_COMPRESSION_MS_ADPCM)\n\t\tinitMSADPCMCompressionParams();\n}\n\nvoid WAVEFile::initIMACompressionParams()\n{\n\tTrack *track = getTrack();\n\n\ttrack->f.framesPerPacket = 505;\n\ttrack->f.bytesPerPacket = 256 * track->f.channelCount;\n\n\tAUpvlist pv = AUpvnew(1);\n\tAUpvsetparam(pv, 0, _AF_IMA_ADPCM_TYPE);\n\tAUpvsetvaltype(pv, 0, AU_PVTYPE_LONG);\n\tlong l = _AF_IMA_ADPCM_TYPE_WAVE;\n\tAUpvsetval(pv, 0, &l);\n\n\ttrack->f.compressionParams = pv;\n}\n\nvoid WAVEFile::initMSADPCMCompressionParams()\n{\n\tconst int16_t coefficients[7][2] =\n\t{\n\t\t{ 256, 0 },\n\t\t{ 512, -256 },\n\t\t{ 0, 0 },\n\t\t{ 192, 64 },\n\t\t{ 240, 0 },\n\t\t{ 460, -208 },\n\t\t{ 392, -232 }\n\t};\n\tmemcpy(m_msadpcmCoefficients, coefficients, sizeof (int16_t) * 7 * 2);\n\tm_msadpcmNumCoefficients = 7;\n\n\tTrack *track = getTrack();\n\n\ttrack->f.framesPerPacket = 500;\n\ttrack->f.bytesPerPacket = 256 * track->f.channelCount;\n\n\tAUpvlist pv = AUpvnew(2);\n\tAUpvsetparam(pv, 0, _AF_MS_ADPCM_NUM_COEFFICIENTS);\n\tAUpvsetvaltype(pv, 0, AU_PVTYPE_LONG);\n\tlong l = m_msadpcmNumCoefficients;\n\tAUpvsetval(pv, 0, &l);\n\n\tAUpvsetparam(pv, 1, _AF_MS_ADPCM_COEFFICIENTS);\n\tAUpvsetvaltype(pv, 1, AU_PVTYPE_PTR);\n\tvoid *v = m_msadpcmCoefficients;\n\tAUpvsetval(pv, 1, &v);\n\n\ttrack->f.compressionParams = pv;\n}\n\n// file: aes.cpp\n/*\n\tAudio File Library\n\tCopyright (C) 1998-1999, Michael Pruett <michael@68k.org>\n\tCopyright (C) 2000, Silicon Graphics, Inc.\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\taes.c\n\n\tThis file contains routines for dealing with AES recording data.\n*/\n\n\n#include <string.h>\n#include <assert.h>\n\n\nvoid afInitAESChannelData (AFfilesetup setup, int trackid)\n{\n\tif (!_af_filesetup_ok(setup))\n\t\treturn;\n\n\tTrackSetup *track = setup->getTrack(trackid);\n\tif (!track)\n\t\treturn;\n\n\ttrack->aesDataSet = true;\n}\n\nvoid afInitAESChannelDataTo (AFfilesetup setup, int trackid, int willBeData)\n{\n\tif (!_af_filesetup_ok(setup))\n\t\treturn;\n\n\tTrackSetup *track = setup->getTrack(trackid);\n\tif (!track)\n\t\treturn;\n\n\ttrack->aesDataSet = willBeData;\n}\n\nint afGetAESChannelData (AFfilehandle file, int trackid, unsigned char buf[24])\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn -1;\n\n\tTrack *track = file->getTrack(trackid);\n\tif (!track)\n\t\treturn -1;\n\n\tif (!track->hasAESData)\n\t{\n\t\tif (buf)\n\t\t\tmemset(buf, 0, 24);\n\t\treturn 0;\n\t}\n\n\tif (buf)\n\t\tmemcpy(buf, track->aesData, 24);\n\n\treturn 1;\n}\n\nvoid afSetAESChannelData (AFfilehandle file, int trackid, unsigned char buf[24])\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn;\n\n\tTrack *track = file->getTrack(trackid);\n\tif (!track)\n\t\treturn;\n\n\tif (!file->checkCanWrite())\n\t\treturn;\n\n\tif (track->hasAESData)\n\t{\n\t\tmemcpy(track->aesData, buf, 24);\n\t}\n\telse\n\t{\n\t\t_af_error(AF_BAD_NOAESDATA,\n\t\t\t\"unable to store AES channel status data for track %d\",\n\t\t\ttrackid);\n\t}\n}\n\n// file: af_vfs.cpp\n/*\n\tAudio File Library\n\tCopyright (C) 1999, Elliot Lee <sopwith@redhat.com>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\taf_vfs.cpp\n\n\tVirtual file operations for the Audio File Library.\n*/\n\n\n\n#include <stdlib.h>\n\nAFvirtualfile *af_virtual_file_new()\n{\n\treturn (AFvirtualfile *) calloc(sizeof (AFvirtualfile), 1);\n}\n\nvoid af_virtual_file_destroy(AFvirtualfile *vfile)\n{\n\tvfile->destroy(vfile);\n\n\tfree(vfile);\n}\n\n// file: aupv.c\n/*\n\tAudio File Library\n\tCopyright (C) 1998-2000, Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\taupv.c\n\n\tThis file contains an implementation of SGI's Audio Library parameter\n\tvalue list functions.\n*/\n\n\n#include <stdlib.h>\n#include <string.h>\n#include <assert.h>\n\n\nAUpvlist AUpvnew (int maxitems)\n{\n\tAUpvlist\taupvlist;\n\tint\t\ti;\n\n\tif (maxitems <= 0)\n\t\treturn AU_NULL_PVLIST;\n\n\taupvlist = (AUpvlist) malloc(sizeof (struct _AUpvlist));\n\tassert(aupvlist);\n\tif (aupvlist == NULL)\n\t\treturn AU_NULL_PVLIST;\n\n\taupvlist->items = (struct _AUpvitem *)calloc(maxitems, sizeof (struct _AUpvitem));\n\n\tassert(aupvlist->items);\n\tif (aupvlist->items == NULL)\n\t{\n\t\tfree(aupvlist);\n\t\treturn AU_NULL_PVLIST;\n\t}\n\n\t/* Initialize the items in the list. */\n\tfor (i=0; i<maxitems; i++)\n\t{\n\t\taupvlist->items[i].valid = _AU_VALID_PVITEM;\n\t\taupvlist->items[i].type = AU_PVTYPE_LONG;\n\t\taupvlist->items[i].parameter = 0;\n\t\tmemset(&aupvlist->items[i].value, 0, sizeof (aupvlist->items[i].value));\n\t}\n\n\taupvlist->valid = _AU_VALID_PVLIST;\n\taupvlist->count = maxitems;\n\n\treturn aupvlist;\n}\n\nint AUpvgetmaxitems (AUpvlist list)\n{\n\tassert(list);\n\n\tif (list == AU_NULL_PVLIST)\n\t\treturn AU_BAD_PVLIST;\n\tif (list->valid != _AU_VALID_PVLIST)\n\t\treturn AU_BAD_PVLIST;\n\n\treturn list->count;\n}\n\nint AUpvfree (AUpvlist list)\n{\n\tassert(list);\n\tassert(list->items);\n\n\tif (list == AU_NULL_PVLIST)\n\t\treturn AU_BAD_PVLIST;\n\tif (list->valid != _AU_VALID_PVLIST)\n\t\treturn AU_BAD_PVLIST;\n\n\tif ((list->items != _AU_NULL_PVITEM) &&\n\t\t(list->items[0].valid == _AU_VALID_PVITEM))\n\t{\n\t\tfree(list->items);\n\t}\n\n\tfree(list);\n\n\treturn _AU_SUCCESS;\n}\n\nint AUpvsetparam (AUpvlist list, int item, int param)\n{\n\tassert(list);\n\tassert(list->items);\n\tassert(item >= 0);\n\tassert(item < list->count);\n\n\tif (list == AU_NULL_PVLIST)\n\t\treturn AU_BAD_PVLIST;\n\tif (list->valid != _AU_VALID_PVLIST)\n\t\treturn AU_BAD_PVLIST;\n\tif ((item < 0) || (item > list->count - 1))\n\t\treturn AU_BAD_PVITEM;\n\tif (list->items[item].valid != _AU_VALID_PVITEM)\n\t\treturn AU_BAD_PVLIST;\n\n\tlist->items[item].parameter = param;\n\treturn _AU_SUCCESS;\n}\n\nint AUpvsetvaltype (AUpvlist list, int item, int type)\n{\n\tassert(list);\n\tassert(list->items);\n\tassert(item >= 0);\n\tassert(item < list->count);\n\n\tif (list == AU_NULL_PVLIST)\n\t\treturn AU_BAD_PVLIST;\n\tif (list->valid != _AU_VALID_PVLIST)\n\t\treturn AU_BAD_PVLIST;\n\tif ((item < 0) || (item > list->count - 1))\n\t\treturn AU_BAD_PVITEM;\n\tif (list->items[item].valid != _AU_VALID_PVITEM)\n\t\treturn AU_BAD_PVLIST;\n\n\tlist->items[item].type = type;\n\treturn _AU_SUCCESS;\n}\n\nint AUpvsetval (AUpvlist list, int item, void *val)\n{\n\tassert(list);\n\tassert(list->items);\n\tassert(item >= 0);\n\tassert(item < list->count);\n\n\tif (list == AU_NULL_PVLIST)\n\t\treturn AU_BAD_PVLIST;\n\tif (list->valid != _AU_VALID_PVLIST)\n\t\treturn AU_BAD_PVLIST;\n\tif ((item < 0) || (item > list->count - 1))\n\t\treturn AU_BAD_PVITEM;\n\tif (list->items[item].valid != _AU_VALID_PVITEM)\n\t\treturn AU_BAD_PVLIST;\n\n\tswitch (list->items[item].type)\n\t{\n\t\tcase AU_PVTYPE_LONG:\n\t\t\tlist->items[item].value.l = *((long *) val);\n\t\t\tbreak;\n\t\tcase AU_PVTYPE_DOUBLE:\n\t\t\tlist->items[item].value.d = *((double *) val);\n\t\t\tbreak;\n\t\tcase AU_PVTYPE_PTR:\n\t\t\tlist->items[item].value.v = *((void **) val);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tassert(0);\n\t\t\treturn AU_BAD_PVLIST;\n\t}\n\n\treturn _AU_SUCCESS;\n}\n\nint AUpvgetparam (AUpvlist list, int item, int *param)\n{\n\tassert(list);\n\tassert(list->items);\n\tassert(item >= 0);\n\tassert(item < list->count);\n\n\tif (list == AU_NULL_PVLIST)\n\t\treturn AU_BAD_PVLIST;\n\tif (list->valid != _AU_VALID_PVLIST)\n\t\treturn AU_BAD_PVLIST;\n\tif ((item < 0) || (item > list->count - 1))\n\t\treturn AU_BAD_PVITEM;\n\tif (list->items[item].valid != _AU_VALID_PVITEM)\n\t\treturn AU_BAD_PVLIST;\n\n\t*param = list->items[item].parameter;\n\treturn _AU_SUCCESS;\n}\n\nint AUpvgetvaltype (AUpvlist list, int item, int *type)\n{\n\tassert(list);\n\tassert(list->items);\n\tassert(item >= 0);\n\tassert(item < list->count);\n\n\tif (list == AU_NULL_PVLIST)\n\t\treturn AU_BAD_PVLIST;\n\tif (list->valid != _AU_VALID_PVLIST)\n\t\treturn AU_BAD_PVLIST;\n\tif ((item < 0) || (item > list->count - 1))\n\t\treturn AU_BAD_PVITEM;\n\tif (list->items[item].valid != _AU_VALID_PVITEM)\n\t\treturn AU_BAD_PVLIST;\n\n\t*type = list->items[item].type;\n\treturn _AU_SUCCESS;\n}\n\nint AUpvgetval (AUpvlist list, int item, void *val)\n{\n\tassert(list);\n\tassert(list->items);\n\tassert(item >= 0);\n\tassert(item < list->count);\n\n\tif (list == AU_NULL_PVLIST)\n\t\treturn AU_BAD_PVLIST;\n\tif (list->valid != _AU_VALID_PVLIST)\n\t\treturn AU_BAD_PVLIST;\n\tif ((item < 0) || (item > list->count - 1))\n\t\treturn AU_BAD_PVITEM;\n\tif (list->items[item].valid != _AU_VALID_PVITEM)\n\t\treturn AU_BAD_PVLIST;\n\n\tswitch (list->items[item].type)\n\t{\n\t\tcase AU_PVTYPE_LONG:\n\t\t\t*((long *) val) = list->items[item].value.l;\n\t\t\tbreak;\n\t\tcase AU_PVTYPE_DOUBLE:\n\t\t\t*((double *) val) = list->items[item].value.d;\n\t\t\tbreak;\n\t\tcase AU_PVTYPE_PTR:\n\t\t\t*((void **) val) = list->items[item].value.v;\n\t\t\tbreak;\n\t}\n\n\treturn _AU_SUCCESS;\n}\n\n// file: compression.cpp\n/*\n\tAudio File Library\n\tCopyright (C) 1999-2000, Michael Pruett <michael@68k.org>\n\tCopyright (C) 2000, Silicon Graphics, Inc.\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\tcompression.cpp\n\n\tThis file contains routines for configuring compressed audio.\n*/\n\n\n#include <assert.h>\n\n\nconst CompressionUnit *_af_compression_unit_from_id (int compressionid)\n{\n\tfor (int i=0; i<_AF_NUM_COMPRESSION; i++)\n\t\tif (_af_compression[i].compressionID == compressionid)\n\t\t\treturn &_af_compression[i];\n\n\t_af_error(AF_BAD_COMPTYPE, \"compression type %d not available\", compressionid);\n\treturn NULL;\n}\n\nint afGetCompression (AFfilehandle file, int trackid)\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn -1;\n\n\tTrack *track = file->getTrack(trackid);\n\tif (!track)\n\t\treturn -1;\n\n\treturn track->f.compressionType;\n}\n\nvoid afInitCompression (AFfilesetup setup, int trackid, int compression)\n{\n\tif (!_af_filesetup_ok(setup))\n\t\treturn;\n\n\tTrackSetup *track = setup->getTrack(trackid);\n\tif (!track)\n\t\treturn;\n\n\tif (!_af_compression_unit_from_id(compression))\n\t\treturn;\n\n\ttrack->compressionSet = true;\n\ttrack->f.compressionType = compression;\n}\n\n#if 0\nint afGetCompressionParams (AFfilehandle file, int trackid,\n\tint *compression, AUpvlist pvlist, int numitems)\n{\n\tassert(file);\n\tassert(trackid == AF_DEFAULT_TRACK);\n}\n\nvoid afInitCompressionParams (AFfilesetup setup, int trackid,\n\tint compression, AUpvlist pvlist, int numitems)\n{\n\tassert(setup);\n\tassert(trackid == AF_DEFAULT_TRACK);\n}\n#endif\n\n// file: data.cpp\n/*\n\tAudio File Library\n\tCopyright (C) 1998-2000, Michael Pruett <michael@68k.org>\n\tCopyright (C) 2000, Silicon Graphics, Inc.\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\tdata.cpp\n*/\n\n\n#include <assert.h>\n#include <stdlib.h>\n#include <string.h>\n\n\nint afWriteFrames (AFfilehandle file, int trackid, const void *samples,\n\tint nvframes2write)\n{\n\tSharedPtr<Module> firstmod;\n\tSharedPtr<Chunk> userc;\n\tint bytes_per_vframe;\n\tAFframecount vframe;\n\n\tif (!_af_filehandle_ok(file))\n\t\treturn -1;\n\n\tif (!file->checkCanWrite())\n\t\treturn -1;\n\n\tTrack *track = file->getTrack(trackid);\n\tif (!track)\n\t\treturn -1;\n\n\tif (track->ms->isDirty() && track->ms->setup(file, track) == AF_FAIL)\n\t\treturn -1;\n\n\tif (!track->ms->fileModuleHandlesSeeking() &&\n\t\tfile->m_seekok &&\n\t\tfile->m_fh->seek(track->fpos_next_frame, File::SeekFromBeginning) !=\n\t\t\ttrack->fpos_next_frame)\n\t{\n\t\t_af_error(AF_BAD_LSEEK, \"unable to position write pointer at next frame\");\n\t\treturn -1;\n\t}\n\n\tbytes_per_vframe = _af_format_frame_size(&track->v, true);\n\n\tfirstmod = track->ms->modules().front();\n\tuserc = track->ms->chunks().front();\n\n\ttrack->filemodhappy = true;\n\n\tvframe = 0;\n#ifdef UNLIMITED_CHUNK_NVFRAMES\n\t/*\n\t\tOPTIMIZATION: see the comment at the very end of\n\t\tarrangemodules() in modules.c for an explanation of this:\n\t*/\n\tif (!trk->ms->mustUseAtomicNVFrames())\n\t{\n\t\tuserc->buffer = (char *) samples;\n\t\tuserc->frameCount = nvframes2write;\n\n\t\tfirstmod->runPush();\n\n\t\t/* Count this chunk if there was no i/o error. */\n\t\tif (trk->filemodhappy)\n\t\t\tvframe += userc->frameCount;\n\t}\n\telse\n#else\n\t/* Optimization must be off. */\n\tassert(track->ms->mustUseAtomicNVFrames());\n#endif\n\t{\n\t\twhile (vframe < nvframes2write)\n\t\t{\n\t\t\tuserc->buffer = (char *) samples + bytes_per_vframe * vframe;\n\t\t\tif (vframe <= nvframes2write - _AF_ATOMIC_NVFRAMES)\n\t\t\t\tuserc->frameCount = _AF_ATOMIC_NVFRAMES;\n\t\t\telse\n\t\t\t\tuserc->frameCount = nvframes2write - vframe;\n\n\t\t\tfirstmod->runPush();\n\n\t\t\tif (!track->filemodhappy)\n\t\t\t\tbreak;\n\n\t\t\tvframe += userc->frameCount;\n\t\t}\n\t}\n\n\ttrack->nextvframe += vframe;\n\ttrack->totalvframes += vframe;\n\n\treturn vframe;\n}\n\nint afReadFrames (AFfilehandle file, int trackid, void *samples,\n\tint nvframeswanted)\n{\n\tSharedPtr<Module> firstmod;\n\tSharedPtr<Chunk> userc;\n\tAFframecount\tnvframesleft, nvframes2read;\n\tint\t\tbytes_per_vframe;\n\tAFframecount\tvframe;\n\n\tif (!_af_filehandle_ok(file))\n\t\treturn -1;\n\n\tif (!file->checkCanRead())\n\t\treturn -1;\n\n\tTrack *track = file->getTrack(trackid);\n\tif (!track)\n\t\treturn -1;\n\n\tif (track->ms->isDirty() && track->ms->setup(file, track) == AF_FAIL)\n\t\treturn -1;\n\n\tif (!track->ms->fileModuleHandlesSeeking() &&\n\t\tfile->m_seekok &&\n\t\tfile->m_fh->seek(track->fpos_next_frame, File::SeekFromBeginning) !=\n\t\t\ttrack->fpos_next_frame)\n\t{\n\t\t_af_error(AF_BAD_LSEEK, \"unable to position read pointer at next frame\");\n\t\treturn -1;\n\t}\n\n\tif (track->totalvframes == -1)\n\t\tnvframes2read = nvframeswanted;\n\telse\n\t{\n\t\tnvframesleft = track->totalvframes - track->nextvframe;\n\t\tnvframes2read = (nvframeswanted > nvframesleft) ?\n\t\t\tnvframesleft : nvframeswanted;\n\t}\n\tbytes_per_vframe = _af_format_frame_size(&track->v, true);\n\n\tfirstmod = track->ms->modules().back();\n\tuserc = track->ms->chunks().back();\n\n\ttrack->filemodhappy = true;\n\n\tvframe = 0;\n\n\tif (!track->ms->mustUseAtomicNVFrames())\n\t{\n\t\tassert(track->frames2ignore == 0);\n\t\tuserc->buffer = samples;\n\t\tuserc->frameCount = nvframes2read;\n\n\t\tfirstmod->runPull();\n\t\tif (track->filemodhappy)\n\t\t\tvframe += userc->frameCount;\n\t}\n\telse\n\t{\n\t\tbool\teof = false;\n\n\t\tif (track->frames2ignore != 0)\n\t\t{\n\t\t\tuserc->frameCount = track->frames2ignore;\n\t\t\tuserc->allocate(track->frames2ignore * bytes_per_vframe);\n\t\t\tif (!userc->buffer)\n\t\t\t\treturn 0;\n\n\t\t\tfirstmod->runPull();\n\n\t\t\t/* Have we hit EOF? */\n\t\t\tif (static_cast<ssize_t>(userc->frameCount) < track->frames2ignore)\n\t\t\t\teof = true;\n\n\t\t\ttrack->frames2ignore = 0;\n\n\t\t\tuserc->deallocate();\n\t\t}\n\n\t\t/*\n\t\t\tNow start reading useful frames, until EOF or\n\t\t\tpremature EOF.\n\t\t*/\n\n\t\twhile (track->filemodhappy && !eof && vframe < nvframes2read)\n\t\t{\n\t\t\tAFframecount\tnvframes2pull;\n\t\t\tuserc->buffer = (char *) samples + bytes_per_vframe * vframe;\n\n\t\t\tif (vframe <= nvframes2read - _AF_ATOMIC_NVFRAMES)\n\t\t\t\tnvframes2pull = _AF_ATOMIC_NVFRAMES;\n\t\t\telse\n\t\t\t\tnvframes2pull = nvframes2read - vframe;\n\n\t\t\tuserc->frameCount = nvframes2pull;\n\n\t\t\tfirstmod->runPull();\n\n\t\t\tif (track->filemodhappy)\n\t\t\t{\n\t\t\t\tvframe += userc->frameCount;\n\t\t\t\tif (static_cast<ssize_t>(userc->frameCount) < nvframes2pull)\n\t\t\t\t\teof = true;\n\t\t\t}\n\t\t}\n\t}\n\n\ttrack->nextvframe += vframe;\n\n\treturn vframe;\n}\n\n// file: debug.cpp\n/*\n\tAudio File Library\n\tCopyright (C) 1998-2000, Michael Pruett <michael@68k.org>\n\tCopyright (C) 2000, Silicon Graphics, Inc.\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\tdebug.cpp\n\n\tThis file contains debugging routines for the Audio File\n\tLibrary.\n*/\n\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <math.h>\n#include <string.h>\n#include <assert.h>\n\n\n\nvoid _af_print_pvlist (AUpvlist list)\n{\n\tassert(list);\n\n\tprintf(\"list.valid: %d\\n\", list->valid);\n\tprintf(\"list.count: %zu\\n\", list->count);\n\n\tfor (unsigned i=0; i<list->count; i++)\n\t{\n\t\tprintf(\"item %u valid %d, should be %d\\n\",\n\t\t\ti, list->items[i].valid, _AU_VALID_PVITEM);\n\n\t\tswitch (list->items[i].type)\n\t\t{\n\t\t\tcase AU_PVTYPE_LONG:\n\t\t\t\tprintf(\"item #%u, parameter %d, long: %ld\\n\",\n\t\t\t\t\ti, list->items[i].parameter,\n\t\t\t\t\tlist->items[i].value.l);\n\t\t\t\tbreak;\n\t\t\tcase AU_PVTYPE_DOUBLE:\n\t\t\t\tprintf(\"item #%u, parameter %d, double: %f\\n\",\n\t\t\t\t\ti, list->items[i].parameter,\n\t\t\t\t\tlist->items[i].value.d);\n\t\t\t\tbreak;\n\t\t\tcase AU_PVTYPE_PTR:\n\t\t\t\tprintf(\"item #%u, parameter %d, pointer: %p\\n\",\n\t\t\t\t\ti, list->items[i].parameter,\n\t\t\t\t\tlist->items[i].value.v);\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tprintf(\"item #%u, invalid type %d\\n\", i,\n\t\t\t\t\tlist->items[i].type);\n\t\t\t\tassert(false);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nvoid _af_print_audioformat (AudioFormat *fmt)\n{\n\t/* sampleRate, channelCount */\n\tprintf(\"{ %7.2f Hz %d ch \", fmt->sampleRate, fmt->channelCount);\n\n\t/* sampleFormat, sampleWidth */\n\tswitch (fmt->sampleFormat)\n\t{\n\t\tcase AF_SAMPFMT_TWOSCOMP:\n\t\t\tprintf(\"%db 2 \", fmt->sampleWidth);\n\t\t\tbreak;\n\t\tcase AF_SAMPFMT_UNSIGNED:\n\t\t\tprintf(\"%db u \", fmt->sampleWidth);\n\t\t\tbreak;\n\t\tcase AF_SAMPFMT_FLOAT:\n\t\t\tprintf(\"flt \");\n\t\t\tbreak;\n\t\tcase AF_SAMPFMT_DOUBLE:\n\t\t\tprintf(\"dbl \");\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tprintf(\"%dsampfmt? \", fmt->sampleFormat);\n\t}\n\n\t/* pcm */\n\tprintf(\"(%.30g+-%.30g [%.30g,%.30g]) \",\n\t\tfmt->pcm.intercept, fmt->pcm.slope,\n\t\tfmt->pcm.minClip, fmt->pcm.maxClip);\n\n\t/* byteOrder */\n\tswitch (fmt->byteOrder)\n\t{\n\t\tcase AF_BYTEORDER_BIGENDIAN:\n\t\t\tprintf(\"big \");\n\t\t\tbreak;\n\t\tcase AF_BYTEORDER_LITTLEENDIAN:\n\t\t\tprintf(\"little \");\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tprintf(\"%dbyteorder? \", fmt->byteOrder);\n\t\t\tbreak;\n\t}\n\n\t/* compression */\n\t{\n\t\tconst CompressionUnit *unit = _af_compression_unit_from_id(fmt->compressionType);\n\t\tif (!unit)\n\t\t\tprintf(\"%dcompression?\", fmt->compressionType);\n\t\telse if (fmt->compressionType == AF_COMPRESSION_NONE)\n\t\t\tprintf(\"pcm\");\n\t\telse\n\t\t\tprintf(\"%s\", unit->label);\n\t}\n\n\tprintf(\" }\");\n}\n\nvoid _af_print_tracks (AFfilehandle filehandle)\n{\n\tfor (int i=0; i<filehandle->m_trackCount; i++)\n\t{\n\t\tTrack *track = &filehandle->m_tracks[i];\n\t\tprintf(\"track %d\\n\", i);\n\t\tprintf(\" id %d\\n\", track->id);\n\t\tprintf(\" sample format\\n\");\n\t\t_af_print_audioformat(&track->f);\n\t\tprintf(\" virtual format\\n\");\n\t\t_af_print_audioformat(&track->v);\n\t\tprintf(\" total file frames: %jd\\n\",\n\t\t\t(intmax_t) track->totalfframes);\n\t\tprintf(\" total virtual frames: %jd\\n\",\n\t\t\t(intmax_t) track->totalvframes);\n\t\tprintf(\" next file frame: %jd\\n\",\n\t\t\t(intmax_t) track->nextfframe);\n\t\tprintf(\" next virtual frame: %jd\\n\",\n\t\t\t(intmax_t) track->nextvframe);\n\t\tprintf(\" frames to ignore: %jd\\n\",\n\t\t\t(intmax_t) track->frames2ignore);\n\n\t\tprintf(\" data_size: %jd\\n\",\n\t\t\t(intmax_t) track->data_size);\n\t\tprintf(\" fpos_first_frame: %jd\\n\",\n\t\t\t(intmax_t) track->fpos_first_frame);\n\t\tprintf(\" fpos_next_frame: %jd\\n\",\n\t\t\t(intmax_t) track->fpos_next_frame);\n\t\tprintf(\" fpos_after_data: %jd\\n\",\n\t\t\t(intmax_t) track->fpos_after_data);\n\n\t\tprintf(\" channel matrix:\");\n\t\t_af_print_channel_matrix(track->channelMatrix,\n\t\t\ttrack->f.channelCount, track->v.channelCount);\n\t\tprintf(\"\\n\");\n\n\t\tprintf(\" marker count: %d\\n\", track->markerCount);\n\t}\n}\n\nvoid _af_print_filehandle (AFfilehandle filehandle)\n{\n\tprintf(\"file handle: 0x%p\\n\", filehandle);\n\n\tif (filehandle->m_valid == _AF_VALID_FILEHANDLE)\n\t\tprintf(\"valid\\n\");\n\telse\n\t\tprintf(\"invalid!\\n\");\n\n\tprintf(\" access: \");\n\tif (filehandle->m_access == _AF_READ_ACCESS)\n\t\tputchar('r');\n\telse\n\t\tputchar('w');\n\n\tprintf(\" fileFormat: %d\\n\", filehandle->m_fileFormat);\n\n\tprintf(\" instrument count: %d\\n\", filehandle->m_instrumentCount);\n\tprintf(\" instruments: 0x%p\\n\", filehandle->m_instruments);\n\n\tprintf(\" miscellaneous count: %d\\n\", filehandle->m_miscellaneousCount);\n\tprintf(\" miscellaneous: 0x%p\\n\", filehandle->m_miscellaneous);\n\n\tprintf(\" trackCount: %d\\n\", filehandle->m_trackCount);\n\tprintf(\" tracks: 0x%p\\n\", filehandle->m_tracks);\n\t_af_print_tracks(filehandle);\n}\n\nvoid _af_print_channel_matrix (double *matrix, int fchans, int vchans)\n{\n\tint v, f;\n\n\tif (!matrix)\n\t{\n\t\tprintf(\"NULL\");\n\t\treturn;\n\t}\n\n\tprintf(\"{\");\n\tfor (v=0; v < vchans; v++)\n\t{\n\t\tif (v) printf(\" \");\n\t\tprintf(\"{\");\n\t\tfor (f=0; f < fchans; f++)\n\t\t{\n\t\t\tif (f) printf(\" \");\n\t\t\tprintf(\"%5.2f\", *(matrix + v*fchans + f));\n\t\t}\n\t\tprintf(\"}\");\n\t}\n\tprintf(\"}\");\n}\n\nvoid _af_print_frame (AFframecount frameno, double *frame, int nchannels,\n\tchar *formatstring, int numberwidth,\n\tdouble slope, double intercept, double minclip, double maxclip)\n{\n\tchar linebuf[81];\n\tint wavewidth = 78 - numberwidth*nchannels - 6;\n\tint c;\n\n\tmemset(linebuf, ' ', 80);\n\tlinebuf[0] = '|';\n\tlinebuf[wavewidth-1] = '|';\n\tlinebuf[wavewidth] = 0;\n\n\tprintf(\"%05jd \", (intmax_t) frameno);\n\n\tfor (c=0; c < nchannels; c++)\n\t{\n\t\tdouble pcm = frame[c];\n\t\tprintf(formatstring, pcm);\n\t}\n\tfor (c=0; c < nchannels; c++)\n\t{\n\t\tdouble pcm = frame[c], volts;\n\t\tif (maxclip > minclip)\n\t\t{\n\t\t\tif (pcm < minclip) pcm = minclip;\n\t\t\tif (pcm > maxclip) pcm = maxclip;\n\t\t}\n\t\tvolts = (pcm - intercept) / slope;\n\t\tlinebuf[(int)((volts/2 + 0.5)*(wavewidth-3)) + 1] = '0' + c;\n\t}\n\tprintf(\"%s\\n\", linebuf);\n}\n\n// file: error.c\n/*\n\tAudio File Library\n\tCopyright (C) 1998, Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\terror.c\n\n\tThis file contains the routines used in the Audio File Library's\n\terror handling.\n*/\n\n\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n\nstatic void defaultErrorFunction (long error, const char *str);\n\nstatic AFerrfunc errorFunction = defaultErrorFunction;\n\nAFerrfunc afSetErrorHandler (AFerrfunc efunc)\n{\n\tAFerrfunc\told;\n\n\told = errorFunction;\n\terrorFunction = efunc;\n\n\treturn old;\n}\n\nstatic void defaultErrorFunction (long error, const char *str)\n{\n\tfprintf(stderr, \"Audio File Library: \");\n\tfprintf(stderr, \"%s\", str);\n\tfprintf(stderr, \" [error %ld]\\n\", error);\n}\n\nvoid _af_error (int errorCode, const char *fmt, ...)\n{\n\tchar\tbuf[1024];\n\tva_list\tap;\n\n\tva_start(ap, fmt);\n\n\tvsnprintf(buf, 1024, fmt, ap);\n\n\tva_end(ap);\n\n\tif (errorFunction != NULL)\n\t\terrorFunction(errorCode, buf);\n}\n\n// file: extended.c\n/* Copyright (C) 1989-1991 Apple Computer, Inc.\n *\n * All rights reserved.\n *\n * Warranty Information\n *  Even though Apple has reviewed this software, Apple makes no warranty\n *  or representation, either express or implied, with respect to this\n *  software, its quality, accuracy, merchantability, or fitness for a\n *  particular purpose.  As a result, this software is provided \"as is,\"\n *  and you, its user, are assuming the entire risk as to its quality\n *  and accuracy.\n *\n * This code may be used and freely distributed as long as it includes\n * this copyright notice and the above warranty information.\n *\n * Machine-independent I/O routines for IEEE floating-point numbers.\n *\n * NaN's and infinities are converted to HUGE_VAL or HUGE, which\n * happens to be infinity on IEEE machines.  Unfortunately, it is\n * impossible to preserve NaN's in a machine-independent way.\n * Infinities are, however, preserved on IEEE machines.\n *\n * These routines have been tested on the following machines:\n *\tApple Macintosh, MPW 3.1 C compiler\n *\tApple Macintosh, THINK C compiler\n *\tSilicon Graphics IRIS, MIPS compiler\n *\tCray X/MP and Y/MP\n *\tDigital Equipment VAX\n *\tSequent Balance (Multiprocesor 386)\n *\tNeXT\n *\n *\n * Implemented by Malcolm Slaney and Ken Turkowski.\n *\n * Malcolm Slaney contributions during 1988-1990 include big- and little-\n * endian file I/O, conversion to and from Motorola's extended 80-bit\n * floating-point format, and conversions to and from IEEE single-\n * precision floating-point format.\n *\n * In 1991, Ken Turkowski implemented the conversions to and from\n * IEEE double-precision format, added more precision to the extended\n * conversions, and accommodated conversions involving +/- infinity,\n * NaN's, and denormalized numbers.\n */\n\n/****************************************************************\n * Extended precision IEEE floating-point conversion routines.\n * Extended is an 80-bit number as defined by Motorola,\n * with a sign bit, 15 bits of exponent (offset 16383?),\n * and a 64-bit mantissa, with no hidden bit.\n ****************************************************************/\n\n\n#include <math.h>\n\n#ifndef HUGE_VAL\n#define HUGE_VAL HUGE\n#endif\n\n#define FloatToUnsigned(f) ((unsigned long) (((long) (f - 2147483648.0)) + 2147483647L) + 1)\n\nvoid _af_convert_to_ieee_extended (double num, unsigned char *bytes)\n{\n\tint\t\t\t\tsign;\n\tint\t\t\t\texpon;\n\tdouble\t\t\tfMant, fsMant;\n\tunsigned long\thiMant, loMant;\n\n\tif (num < 0) {\n\t\tsign = 0x8000;\n\t\tnum *= -1;\n\t} else {\n\t\tsign = 0;\n\t}\n\n\tif (num == 0) {\n\t\texpon = 0; hiMant = 0; loMant = 0;\n\t}\n\telse {\n\t\tfMant = frexp(num, &expon);\n\t\tif ((expon > 16384) || !(fMant < 1)) {\t  /* Infinity or NaN */\n\t\t\texpon = sign|0x7FFF; hiMant = 0; loMant = 0; /* infinity */\n\t\t}\n\t\telse {\t  /* Finite */\n\t\t\texpon += 16382;\n\t\t\tif (expon < 0) {\t/* denormalized */\n\t\t\t\tfMant = ldexp(fMant, expon);\n\t\t\t\texpon = 0;\n\t\t\t}\n\t\t\texpon |= sign;\n\t\t\tfMant = ldexp(fMant, 32);\n\t\t\tfsMant = floor(fMant);\n\t\t\thiMant = FloatToUnsigned(fsMant);\n\t\t\tfMant = ldexp(fMant - fsMant, 32);\n\t\t\tfsMant = floor(fMant);\n\t\t\tloMant = FloatToUnsigned(fsMant);\n\t\t}\n\t}\n\n\tbytes[0] = expon >> 8;\n\tbytes[1] = expon;\n\tbytes[2] = hiMant >> 24;\n\tbytes[3] = hiMant >> 16;\n\tbytes[4] = hiMant >> 8;\n\tbytes[5] = hiMant;\n\tbytes[6] = loMant >> 24;\n\tbytes[7] = loMant >> 16;\n\tbytes[8] = loMant >> 8;\n\tbytes[9] = loMant;\n}\n\n#define UnsignedToFloat(u) (((double) ((long) (u - 2147483647L - 1))) + 2147483648.0)\n\ndouble _af_convert_from_ieee_extended (const unsigned char *bytes)\n{\n\tdouble\t\t\tf;\n\tint\t\t\t\texpon;\n\tunsigned long\thiMant, loMant;\n\n\texpon = ((bytes[0] & 0x7F) << 8) | (bytes[1] & 0xFF);\n\thiMant = ((unsigned long)(bytes[2] & 0xFF) << 24)\n\t\t| ((unsigned long) (bytes[3] & 0xFF) << 16)\n\t\t| ((unsigned long) (bytes[4] & 0xFF) << 8)\n\t\t| ((unsigned long) (bytes[5] & 0xFF));\n\tloMant = ((unsigned long) (bytes[6] & 0xFF) << 24)\n\t\t| ((unsigned long) (bytes[7] & 0xFF) << 16)\n\t\t| ((unsigned long) (bytes[8] & 0xFF) << 8)\n\t\t| ((unsigned long) (bytes[9] & 0xFF));\n\n\tif (expon == 0 && hiMant == 0 && loMant == 0) {\n\t\tf = 0;\n\t}\n\telse {\n\t\tif (expon == 0x7FFF) {\t  /* Infinity or NaN */\n\t\t\tf = HUGE_VAL;\n\t\t}\n\t\telse {\n\t\t\texpon -= 16383;\n\t\t\tf  = ldexp(UnsignedToFloat(hiMant), expon-=31);\n\t\t\tf += ldexp(UnsignedToFloat(loMant), expon-=32);\n\t\t}\n\t}\n\n\tif (bytes[0] & 0x80)\n\t\treturn -f;\n\telse\n\t\treturn f;\n}\n\n// file: format.cpp\n/*\n\tAudio File Library\n\tCopyright (C) 1998-2000, Michael Pruett <michael@68k.org>\n\tCopyright (C) 2000, Silicon Graphics, Inc.\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\taudiofile.c\n\n\tThis file implements many of the main interface routines of the\n\tAudio File Library.\n*/\n\n\n#include <assert.h>\n#include <stdint.h>\n#include <stdlib.h>\n#include <string.h>\n\n\nAFfileoffset afGetDataOffset (AFfilehandle file, int trackid)\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn -1;\n\n\tTrack *track = file->getTrack(trackid);\n\tif (!track)\n\t\treturn -1;\n\n\treturn track->fpos_first_frame;\n}\n\nAFfileoffset afGetTrackBytes (AFfilehandle file, int trackid)\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn -1;\n\n\tTrack *track = file->getTrack(trackid);\n\tif (!track)\n\t\treturn -1;\n\n\treturn track->data_size;\n}\n\n/*\n\tafGetFrameSize returns the size (in bytes) of a sample frame from\n\tthe specified track of an audio file.\n\n\tstretch3to4 == true: size which user sees\n\tstretch3to4 == false: size used in file\n*/\nfloat afGetFrameSize (AFfilehandle file, int trackid, int stretch3to4)\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn -1;\n\n\tTrack *track = file->getTrack(trackid);\n\tif (!track)\n\t\treturn -1;\n\n\treturn _af_format_frame_size(&track->f, stretch3to4);\n}\n\nfloat afGetVirtualFrameSize (AFfilehandle file, int trackid, int stretch3to4)\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn -1;\n\n\tTrack *track = file->getTrack(trackid);\n\tif (!track)\n\t\treturn -1;\n\n\treturn _af_format_frame_size(&track->v, stretch3to4);\n}\n\nAFframecount afSeekFrame (AFfilehandle file, int trackid, AFframecount frame)\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn -1;\n\n\tif (!file->checkCanRead())\n\t\treturn -1;\n\n\tTrack *track = file->getTrack(trackid);\n\tif (!track)\n\t\treturn -1;\n\n\tif (track->ms->isDirty() && track->ms->setup(file, track) == AF_FAIL)\n\t\treturn -1;\n\n\tif (frame < 0)\n\t\treturn track->nextvframe;\n\n\t/* Optimize the case of seeking to the current position. */\n\tif (frame == track->nextvframe)\n\t\treturn track->nextvframe;\n\n\t/* Limit request to the number of frames in the file. */\n\tif (track->totalvframes != -1)\n\t\tif (frame > track->totalvframes)\n\t\t\tframe = track->totalvframes - 1;\n\n\t/*\n\t\tNow that the modules are not dirty and frame\n\t\trepresents a valid virtual frame, we call\n\t\t_AFsetupmodules again after setting track->nextvframe.\n\n\t\t_AFsetupmodules will look at track->nextvframe and\n\t\tcompute track->nextfframe in clever and mysterious\n\t\tways.\n\t*/\n\ttrack->nextvframe = frame;\n\n\tif (track->ms->setup(file, track) == AF_FAIL)\n\t\treturn -1;\n\n\treturn track->nextvframe;\n}\n\nAFfileoffset afTellFrame (AFfilehandle file, int trackid)\n{\n\treturn afSeekFrame(file, trackid, -1);\n}\n\nint afSetVirtualByteOrder (AFfilehandle file, int trackid, int byteorder)\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn AF_FAIL;\n\n\tTrack *track = file->getTrack(trackid);\n\tif (!track)\n\t\treturn AF_FAIL;\n\n\tif (byteorder != AF_BYTEORDER_BIGENDIAN &&\n\t\tbyteorder != AF_BYTEORDER_LITTLEENDIAN)\n\t{\n\t\t_af_error(AF_BAD_BYTEORDER, \"invalid byte order %d\", byteorder);\n\t\treturn AF_FAIL;\n\t}\n\n\ttrack->v.byteOrder = byteorder;\n\ttrack->ms->setDirty();\n\n\treturn AF_SUCCEED;\n}\n\nint afGetByteOrder (AFfilehandle file, int trackid)\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn -1;\n\n\tTrack *track = file->getTrack(trackid);\n\tif (!track)\n\t\treturn -1;\n\n\treturn track->f.byteOrder;\n}\n\nint afGetVirtualByteOrder (AFfilehandle file, int trackid)\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn -1;\n\n\tTrack *track = file->getTrack(trackid);\n\tif (!track)\n\t\treturn -1;\n\n\treturn track->v.byteOrder;\n}\n\nAFframecount afGetFrameCount (AFfilehandle file, int trackid)\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn -1;\n\n\tTrack *track = file->getTrack(trackid);\n\tif (!track)\n\t\treturn -1;\n\n\tif (track->ms->isDirty() && track->ms->setup(file, track) == AF_FAIL)\n\t\treturn -1;\n\n\treturn track->totalvframes;\n}\n\ndouble afGetRate (AFfilehandle file, int trackid)\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn -1;\n\n\tTrack *track = file->getTrack(trackid);\n\tif (!track)\n\t\treturn -1;\n\n\treturn track->f.sampleRate;\n}\n\nint afGetChannels (AFfilehandle file, int trackid)\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn -1;\n\n\tTrack *track = file->getTrack(trackid);\n\tif (!track)\n\t\treturn -1;\n\n\treturn track->f.channelCount;\n}\n\nvoid afGetSampleFormat (AFfilehandle file, int trackid, int *sampleFormat, int *sampleWidth)\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn;\n\n\tTrack *track = file->getTrack(trackid);\n\tif (!track)\n\t\treturn;\n\n\tif (sampleFormat)\n\t\t*sampleFormat = track->f.sampleFormat;\n\n\tif (sampleWidth)\n\t\t*sampleWidth = track->f.sampleWidth;\n}\n\nvoid afGetVirtualSampleFormat (AFfilehandle file, int trackid, int *sampleFormat, int *sampleWidth)\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn;\n\n\tTrack *track = file->getTrack(trackid);\n\tif (!track)\n\t\treturn;\n\n\tif (sampleFormat)\n\t\t*sampleFormat = track->v.sampleFormat;\n\n\tif (sampleWidth)\n\t\t*sampleWidth = track->v.sampleWidth;\n}\n\nint afSetVirtualSampleFormat (AFfilehandle file, int trackid,\n\tint sampleFormat, int sampleWidth)\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn -1;\n\n\tTrack *track = file->getTrack(trackid);\n\tif (!track)\n\t\treturn -1;\n\n\tif (_af_set_sample_format(&track->v, sampleFormat, sampleWidth) == AF_FAIL)\n\t\treturn -1;\n\n\ttrack->ms->setDirty();\n\n\treturn 0;\n}\n\n/* XXXmpruett fix the version */\nint afGetFileFormat (AFfilehandle file, int *version)\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn -1;\n\n\tif (version != NULL)\n\t\t*version = file->getVersion();\n\n\treturn file->m_fileFormat;\n}\n\nint afSetVirtualChannels (AFfilehandle file, int trackid, int channelCount)\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn -1;\n\n\tTrack *track = file->getTrack(trackid);\n\tif (!track)\n\t\treturn -1;\n\n\ttrack->v.channelCount = channelCount;\n\ttrack->ms->setDirty();\n\n\tif (track->channelMatrix)\n\t\tfree(track->channelMatrix);\n\ttrack->channelMatrix = NULL;\n\n\treturn 0;\n}\n\ndouble afGetVirtualRate (AFfilehandle file, int trackid)\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn -1;\n\n\tTrack *track = file->getTrack(trackid);\n\tif (!track)\n\t\treturn -1;\n\n\treturn track->v.sampleRate;\n}\n\nint afSetVirtualRate (AFfilehandle file, int trackid, double rate)\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn -1;\n\n\tTrack *track = file->getTrack(trackid);\n\tif (!track)\n\t\treturn -1;\n\n\tif (rate < 0)\n\t{\n\t\t_af_error(AF_BAD_RATE, \"invalid sampling rate %.30g\", rate);\n\t\treturn -1;\n\t}\n\n\ttrack->v.sampleRate = rate;\n\ttrack->ms->setDirty();\n\n\treturn 0;\n}\n\nvoid afSetChannelMatrix (AFfilehandle file, int trackid, double* matrix)\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn;\n\n\tTrack *track = file->getTrack(trackid);\n\tif (!track)\n\t\treturn;\n\n\tif (track->channelMatrix != NULL)\n\t\tfree(track->channelMatrix);\n\ttrack->channelMatrix = NULL;\n\n\tif (matrix != NULL)\n\t{\n\t\tint\ti, size;\n\n\t\tsize = track->v.channelCount * track->f.channelCount;\n\n\t\ttrack->channelMatrix = (double *) malloc(size * sizeof (double));\n\n\t\tfor (i = 0; i < size; i++)\n\t\t\ttrack->channelMatrix[i] = matrix[i];\n\t}\n}\n\nint afGetVirtualChannels (AFfilehandle file, int trackid)\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn -1;\n\n\tTrack *track = file->getTrack(trackid);\n\tif (!track)\n\t\treturn -1;\n\n\treturn track->v.channelCount;\n}\n\n// file: g711.c\n/*\n * This source code is a product of Sun Microsystems, Inc. and is provided\n * for unrestricted use.  Users may copy or modify this source code without\n * charge.\n *\n * SUN SOURCE CODE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING\n * THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR\n * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.\n *\n * Sun source code is provided with no support and without any obligation on\n * the part of Sun Microsystems, Inc. to assist in its use, correction,\n * modification or enhancement.\n *\n * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE\n * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS SOFTWARE\n * OR ANY PART THEREOF.\n *\n * In no event will Sun Microsystems, Inc. be liable for any lost revenue\n * or profits or other special, indirect and consequential damages, even if\n * Sun has been advised of the possibility of such damages.\n *\n * Sun Microsystems, Inc.\n * 2550 Garcia Avenue\n * Mountain View, California  94043\n */\n\n#define SUPERCEDED\n\n/*\n * g711.c\n *\n * u-law, A-law and linear PCM conversions.\n */\n#define\tSIGN_BIT\t(0x80)\t\t/* Sign bit for a A-law byte. */\n#define\tQUANT_MASK\t(0xf)\t\t/* Quantization field mask. */\n#define\tNSEGS\t\t(8)\t\t/* Number of A-law segments. */\n#define\tSEG_SHIFT\t(4)\t\t/* Left shift for segment number. */\n#define\tSEG_MASK\t(0x70)\t\t/* Segment field mask. */\n\n/* see libst.h */\n#ifdef\tSUPERCEDED\n\nstatic const short seg_end[8] = {0xFF, 0x1FF, 0x3FF, 0x7FF,\n\t\t\t    0xFFF, 0x1FFF, 0x3FFF, 0x7FFF};\n\nstatic int search(int val, const short *table, int size)\n{\n\tint\t\ti;\n\n\tfor (i = 0; i < size; i++) {\n\t\tif (val <= *table++)\n\t\t\treturn (i);\n\t}\n\treturn (size);\n}\n\n/*\n * linear2alaw() - Convert a 16-bit linear PCM value to 8-bit A-law\n *\n * linear2alaw() accepts an 16-bit integer and encodes it as A-law data.\n *\n *\t\tLinear Input Code\tCompressed Code\n *\t------------------------\t---------------\n *\t0000000wxyza\t\t\t000wxyz\n *\t0000001wxyza\t\t\t001wxyz\n *\t000001wxyzab\t\t\t010wxyz\n *\t00001wxyzabc\t\t\t011wxyz\n *\t0001wxyzabcd\t\t\t100wxyz\n *\t001wxyzabcde\t\t\t101wxyz\n *\t01wxyzabcdef\t\t\t110wxyz\n *\t1wxyzabcdefg\t\t\t111wxyz\n *\n * For further information see John C. Bellamy's Digital Telephony, 1982,\n * John Wiley & Sons, pps 98-111 and 472-476.\n */\nunsigned char\n_af_linear2alaw(int\tpcm_val)\n{\n\tint\t\tmask;\n\tint\t\tseg;\n\tunsigned char\taval;\n\n\tif (pcm_val >= 0) {\n\t\tmask = 0xD5;\t\t/* sign (7th) bit = 1 */\n\t} else {\n\t\tmask = 0x55;\t\t/* sign bit = 0 */\n\t\tpcm_val = -pcm_val - 8;\n\t}\n\n\t/* Convert the scaled magnitude to segment number. */\n\tseg = search(pcm_val, seg_end, 8);\n\n\t/* Combine the sign, segment, and quantization bits. */\n\n\tif (seg >= 8)\t\t/* out of range, return maximum value. */\n\t\treturn (0x7F ^ mask);\n\telse {\n\t\taval = seg << SEG_SHIFT;\n\t\tif (seg < 2)\n\t\t\taval |= (pcm_val >> 4) & QUANT_MASK;\n\t\telse\n\t\t\taval |= (pcm_val >> (seg + 3)) & QUANT_MASK;\n\t\treturn (aval ^ mask);\n\t}\n}\n\n/*\n * alaw2linear() - Convert an A-law value to 16-bit linear PCM\n *\n */\nint\n_af_alaw2linear(unsigned char\ta_val)\n{\n\tint\t\tt;\n\tint\t\tseg;\n\n\ta_val ^= 0x55;\n\n\tt = (a_val & QUANT_MASK) << 4;\n\tseg = ((unsigned)a_val & SEG_MASK) >> SEG_SHIFT;\n\tswitch (seg) {\n\tcase 0:\n\t\tt += 8;\n\t\tbreak;\n\tcase 1:\n\t\tt += 0x108;\n\t\tbreak;\n\tdefault:\n\t\tt += 0x108;\n\t\tt <<= seg - 1;\n\t}\n\treturn ((a_val & SIGN_BIT) ? t : -t);\n}\n\n#define\tBIAS\t\t(0x84)\t\t/* Bias for linear code. */\n\n/*\n * linear2ulaw() - Convert a linear PCM value to u-law\n *\n * In order to simplify the encoding process, the original linear magnitude\n * is biased by adding 33 which shifts the encoding range from (0 - 8158) to\n * (33 - 8191). The result can be seen in the following encoding table:\n *\n *\tBiased Linear Input Code\tCompressed Code\n *\t------------------------\t---------------\n *\t00000001wxyza\t\t\t000wxyz\n *\t0000001wxyzab\t\t\t001wxyz\n *\t000001wxyzabc\t\t\t010wxyz\n *\t00001wxyzabcd\t\t\t011wxyz\n *\t0001wxyzabcde\t\t\t100wxyz\n *\t001wxyzabcdef\t\t\t101wxyz\n *\t01wxyzabcdefg\t\t\t110wxyz\n *\t1wxyzabcdefgh\t\t\t111wxyz\n *\n * Each biased linear code has a leading 1 which identifies the segment\n * number. The value of the segment number is equal to 7 minus the number\n * of leading 0's. The quantization interval is directly available as the\n * four bits wxyz.  * The trailing bits (a - h) are ignored.\n *\n * Ordinarily the complement of the resulting code word is used for\n * transmission, and so the code word is complemented before it is returned.\n *\n * For further information see John C. Bellamy's Digital Telephony, 1982,\n * John Wiley & Sons, pps 98-111 and 472-476.\n */\n\n/* 2's complement (16-bit range) */\nunsigned char _af_linear2ulaw (int pcm_val)\n{\n\tint\t\tmask;\n\tint\t\tseg;\n\tunsigned char\tuval;\n\n\t/* Get the sign and the magnitude of the value. */\n\tif (pcm_val < 0) {\n\t\tpcm_val = BIAS - pcm_val;\n\t\tmask = 0x7F;\n\t} else {\n\t\tpcm_val += BIAS;\n\t\tmask = 0xFF;\n\t}\n\n\t/* Convert the scaled magnitude to segment number. */\n\tseg = search(pcm_val, seg_end, 8);\n\n\t/*\n\t * Combine the sign, segment, quantization bits;\n\t * and complement the code word.\n\t */\n\tif (seg >= 8)\t\t/* out of range, return maximum value. */\n\t\treturn (0x7F ^ mask);\n\telse {\n\t\tuval = (seg << 4) | ((pcm_val >> (seg + 3)) & 0xF);\n\t\treturn (uval ^ mask);\n\t}\n\n}\n\n/*\n * ulaw2linear() - Convert a u-law value to 16-bit linear PCM\n *\n * First, a biased linear code is derived from the code word. An unbiased\n * output can then be obtained by subtracting 33 from the biased code.\n *\n * Note that this function expects to be passed the complement of the\n * original code word. This is in keeping with ISDN conventions.\n */\nint _af_ulaw2linear (unsigned char u_val)\n{\n\tint\t\tt;\n\n\t/* Complement to obtain normal u-law value. */\n\tu_val = ~u_val;\n\n\t/*\n\t * Extract and bias the quantization bits. Then\n\t * shift up by the segment number and subtract out the bias.\n\t */\n\tt = ((u_val & QUANT_MASK) << 3) + BIAS;\n\tt <<= ((unsigned)u_val & SEG_MASK) >> SEG_SHIFT;\n\n\treturn ((u_val & SIGN_BIT) ? (BIAS - t) : (t - BIAS));\n}\n\n#endif\n\n// file: openclose.cpp\n/*\n\tAudio File Library\n\tCopyright (C) 2000-2001, Silicon Graphics, Inc.\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n\n#include <stdlib.h>\n#include <assert.h>\n#include <string.h>\n\n#ifdef HAVE_UNISTD_H\n#include <unistd.h>\n#endif\n\n#include <audiofile.h>\n\n\nstatic status _afOpenFile (int access, File *f, const char *filename,\n\tAFfilehandle *file, AFfilesetup filesetup);\n\nint _af_identify (File *f, int *implemented)\n{\n\tif (!f->canSeek())\n\t{\n\t\t_af_error(AF_BAD_LSEEK, \"Cannot seek in file\");\n\t\treturn AF_FILE_UNKNOWN;\n\t}\n\n\tAFfileoffset curpos = f->tell();\n\n\tfor (int i=0; i<_AF_NUM_UNITS; i++)\n\t{\n\t\tif (_af_units[i].recognize &&\n\t\t\t_af_units[i].recognize(f))\n\t\t{\n\t\t\tif (implemented != NULL)\n\t\t\t\t*implemented = _af_units[i].implemented;\n\t\t\tf->seek(curpos, File::SeekFromBeginning);\n\t\t\treturn _af_units[i].fileFormat;\n\t\t}\n\t}\n\n\tf->seek(curpos, File::SeekFromBeginning);\n\n\tif (implemented != NULL)\n\t\t*implemented = false;\n\n\treturn AF_FILE_UNKNOWN;\n}\n\nint afIdentifyFD (int fd)\n{\n\t/*\n\t\tDuplicate the file descriptor since otherwise the\n\t\toriginal file descriptor would get closed when we close\n\t\tthe virtual file below.\n\t*/\n\tfd = dup(fd);\n\tFile *f = File::create(fd, File::ReadAccess);\n\n\tint result = _af_identify(f, NULL);\n\n\tdelete f;\n\n\treturn result;\n}\n\nint afIdentifyNamedFD (int fd, const char *filename, int *implemented)\n{\n\t/*\n\t\tDuplicate the file descriptor since otherwise the\n\t\toriginal file descriptor would get closed when we close\n\t\tthe virtual file below.\n\t*/\n\tfd = dup(fd);\n\n\tFile *f = File::create(fd, File::ReadAccess);\n\tif (!f)\n\t{\n\t\t_af_error(AF_BAD_OPEN, \"could not open file '%s'\", filename);\n\t\treturn AF_FILE_UNKNOWN;\n\t}\n\n\tint result = _af_identify(f, implemented);\n\n\tdelete f;\n\n\treturn result;\n}\n\nAFfilehandle afOpenFD (int fd, const char *mode, AFfilesetup setup)\n{\n\tif (!mode)\n\t{\n\t\t_af_error(AF_BAD_ACCMODE, \"null access mode\");\n\t\treturn AF_NULL_FILEHANDLE;\n\t}\n\n\tint access;\n\tif (mode[0] == 'r')\n\t{\n\t\taccess = _AF_READ_ACCESS;\n\t}\n\telse if (mode[0] == 'w')\n\t{\n\t\taccess = _AF_WRITE_ACCESS;\n\t}\n\telse\n\t{\n\t\t_af_error(AF_BAD_ACCMODE, \"unrecognized access mode '%s'\", mode);\n\t\treturn AF_NULL_FILEHANDLE;\n\t}\n\n\tFile *f = File::create(fd, access == _AF_READ_ACCESS ?\n\t\tFile::ReadAccess : File::WriteAccess);\n\n\tAFfilehandle filehandle = NULL;\n\tif (_afOpenFile(access, f, NULL, &filehandle, setup) != AF_SUCCEED)\n\t{\n\t\tdelete f;\n\t}\n\n\treturn filehandle;\n}\n\nAFfilehandle afOpenNamedFD (int fd, const char *mode, AFfilesetup setup,\n\tconst char *filename)\n{\n\tif (!mode)\n\t{\n\t\t_af_error(AF_BAD_ACCMODE, \"null access mode\");\n\t\treturn AF_NULL_FILEHANDLE;\n\t}\n\n\tint access;\n\tif (mode[0] == 'r')\n\t\taccess = _AF_READ_ACCESS;\n\telse if (mode[0] == 'w')\n\t\taccess = _AF_WRITE_ACCESS;\n\telse\n\t{\n\t\t_af_error(AF_BAD_ACCMODE, \"unrecognized access mode '%s'\", mode);\n\t\treturn AF_NULL_FILEHANDLE;\n\t}\n\n\tFile *f = File::create(fd, access == _AF_READ_ACCESS ?\n\t\tFile::ReadAccess : File::WriteAccess);\n\n\tAFfilehandle filehandle;\n\tif (_afOpenFile(access, f, filename, &filehandle, setup) != AF_SUCCEED)\n\t{\n\t\tdelete f;\n\t}\n\n\treturn filehandle;\n}\n\nAFfilehandle afOpenFile (const char *filename, const char *mode, AFfilesetup setup)\n{\n\tif (!mode)\n\t{\n\t\t_af_error(AF_BAD_ACCMODE, \"null access mode\");\n\t\treturn AF_NULL_FILEHANDLE;\n\t}\n\n\tint access;\n\tif (mode[0] == 'r')\n\t{\n\t\taccess = _AF_READ_ACCESS;\n\t}\n\telse if (mode[0] == 'w')\n\t{\n\t\taccess = _AF_WRITE_ACCESS;\n\t}\n\telse\n\t{\n\t\t_af_error(AF_BAD_ACCMODE, \"unrecognized access mode '%s'\", mode);\n\t\treturn AF_NULL_FILEHANDLE;\n\t}\n\n\tFile *f = File::open(filename,\n\t\taccess == _AF_READ_ACCESS ? File::ReadAccess : File::WriteAccess);\n\tif (!f)\n\t{\n\t\t_af_error(AF_BAD_OPEN, \"could not open file '%s'\", filename);\n\t\treturn AF_NULL_FILEHANDLE;\n\t}\n\n\tAFfilehandle filehandle;\n\tif (_afOpenFile(access, f, filename, &filehandle, setup) != AF_SUCCEED)\n\t{\n\t\tdelete f;\n\t}\n\n\treturn filehandle;\n}\n\nAFfilehandle afOpenVirtualFile (AFvirtualfile *vf, const char *mode,\n\tAFfilesetup setup)\n{\n\tif (!vf)\n\t{\n\t\t_af_error(AF_BAD_OPEN, \"null virtual file\");\n\t\treturn AF_NULL_FILEHANDLE;\n\t}\n\n\tif (!mode)\n\t{\n\t\t_af_error(AF_BAD_ACCMODE, \"null access mode\");\n\t\treturn AF_NULL_FILEHANDLE;\n\t}\n\n\tint access;\n\tif (mode[0] == 'r')\n\t{\n\t\taccess = _AF_READ_ACCESS;\n\t}\n\telse if (mode[0] == 'w')\n\t{\n\t\taccess = _AF_WRITE_ACCESS;\n\t}\n\telse\n\t{\n\t\t_af_error(AF_BAD_ACCMODE, \"unrecognized access mode '%s'\", mode);\n\t\treturn AF_NULL_FILEHANDLE;\n\t}\n\n\tFile *f = File::create(vf,\n\t\taccess == _AF_READ_ACCESS ? File::ReadAccess : File::WriteAccess);\n\tif (!f)\n\t{\n\t\t_af_error(AF_BAD_OPEN, \"could not open virtual file\");\n\t\treturn AF_NULL_FILEHANDLE;\n\t}\n\n\tAFfilehandle filehandle;\n\tif (_afOpenFile(access, f, NULL, &filehandle, setup) != AF_SUCCEED)\n\t{\n\t\tdelete f;\n\t}\n\n\treturn filehandle;\n}\n\nstatic status _afOpenFile (int access, File *f, const char *filename,\n\tAFfilehandle *file, AFfilesetup filesetup)\n{\n\tint\tfileFormat = AF_FILE_UNKNOWN;\n\tint\timplemented = true;\n\n\tint\t\tuserSampleFormat = 0;\n\tdouble\t\tuserSampleRate = 0.0;\n\tPCMInfo\tuserPCM = {0};\n\tbool\t\tuserFormatSet = false;\n\n\tAFfilehandle\tfilehandle = AF_NULL_FILEHANDLE;\n\tAFfilesetup\tcompletesetup = AF_NULL_FILESETUP;\n\n\t*file = AF_NULL_FILEHANDLE;\n\n\tif (access == _AF_WRITE_ACCESS || filesetup != AF_NULL_FILESETUP)\n\t{\n\t\tif (!_af_filesetup_ok(filesetup))\n\t\t\treturn AF_FAIL;\n\n\t\tfileFormat = filesetup->fileFormat;\n\t\tif (access == _AF_READ_ACCESS && fileFormat != AF_FILE_RAWDATA)\n\t\t{\n\t\t\t_af_error(AF_BAD_FILESETUP,\n\t\t\t\t\"warning: opening file for read access: \"\n\t\t\t\t\"ignoring file setup with non-raw file format\");\n\t\t\tfilesetup = AF_NULL_FILESETUP;\n\t\t\tfileFormat = _af_identify(f, &implemented);\n\t\t}\n\t}\n\telse if (filesetup == AF_NULL_FILESETUP)\n\t\tfileFormat = _af_identify(f, &implemented);\n\n\tif (fileFormat == AF_FILE_UNKNOWN)\n\t{\n\t\tif (filename != NULL)\n\t\t\t_af_error(AF_BAD_NOT_IMPLEMENTED,\n\t\t\t\t\"'%s': unrecognized audio file format\",\n\t\t\t\tfilename);\n\t\telse\n\t\t\t_af_error(AF_BAD_NOT_IMPLEMENTED,\n\t\t\t\t\"unrecognized audio file format\");\n\t\treturn AF_FAIL;\n\t}\n\n\tconst char *formatName = _af_units[fileFormat].name;\n\n\tif (!implemented)\n\t{\n\t\t_af_error(AF_BAD_NOT_IMPLEMENTED,\n\t\t\t\"%s format not currently supported\", formatName);\n\t}\n\n\tcompletesetup = NULL;\n\tif (filesetup != AF_NULL_FILESETUP)\n\t{\n\t\tuserSampleFormat = filesetup->tracks[0].f.sampleFormat;\n\t\tuserPCM = filesetup->tracks[0].f.pcm;\n\t\tuserSampleRate = filesetup->tracks[0].f.sampleRate;\n\t\tuserFormatSet = true;\n\t\tif ((completesetup = _af_units[fileFormat].completesetup(filesetup)) == NULL)\n\t\t\treturn AF_FAIL;\n\t}\n\n\tfilehandle = _AFfilehandle::create(fileFormat);\n\tif (!filehandle)\n\t{\n\t\tif (completesetup)\n\t\t\tafFreeFileSetup(completesetup);\n\t\treturn AF_FAIL;\n\t}\n\n\tfilehandle->m_fh = f;\n\tfilehandle->m_access = access;\n\tfilehandle->m_seekok = f->canSeek();\n\tif (filename != NULL)\n\t\tfilehandle->m_fileName = _af_strdup(filename);\n\telse\n\t\tfilehandle->m_fileName = NULL;\n\tfilehandle->m_fileFormat = fileFormat;\n\n\tstatus result = access == _AF_READ_ACCESS ?\n\t\tfilehandle->readInit(completesetup) :\n\t\tfilehandle->writeInit(completesetup);\n\n\tif (result != AF_SUCCEED)\n\t{\n\t\tdelete filehandle;\n\t\tfilehandle = AF_NULL_FILEHANDLE;\n\t\tif (completesetup)\n\t\t\tafFreeFileSetup(completesetup);\n\t\treturn AF_FAIL;\n\t}\n\n\tif (completesetup)\n\t\tafFreeFileSetup(completesetup);\n\n\t/*\n\t\tInitialize virtual format.\n\t*/\n\tfor (int t=0; t<filehandle->m_trackCount; t++)\n\t{\n\t\tTrack *track = &filehandle->m_tracks[t];\n\n\t\ttrack->v = track->f;\n\n\t\tif (userFormatSet)\n\t\t{\n\t\t\ttrack->v.sampleFormat = userSampleFormat;\n\t\t\ttrack->v.pcm = userPCM;\n\t\t\ttrack->v.sampleRate = userSampleRate;\n\t\t}\n\n\t\ttrack->v.compressionType = AF_COMPRESSION_NONE;\n\t\ttrack->v.compressionParams = NULL;\n\n#if WORDS_BIGENDIAN\n\t\ttrack->v.byteOrder = AF_BYTEORDER_BIGENDIAN;\n#else\n\t\ttrack->v.byteOrder = AF_BYTEORDER_LITTLEENDIAN;\n#endif\n\n\t\ttrack->ms = new ModuleState();\n\t\tif (track->ms->init(filehandle, track) == AF_FAIL)\n\t\t{\n\t\t\tdelete filehandle;\n\t\t\treturn AF_FAIL;\n\t\t}\n\t}\n\n\t*file = filehandle;\n\n\treturn AF_SUCCEED;\n}\n\nint afSyncFile (AFfilehandle handle)\n{\n\tif (!_af_filehandle_ok(handle))\n\t\treturn -1;\n\n\tif (handle->m_access == _AF_WRITE_ACCESS)\n\t{\n\t\t/* Finish writes on all tracks. */\n\t\tfor (int trackno = 0; trackno < handle->m_trackCount; trackno++)\n\t\t{\n\t\t\tTrack *track = &handle->m_tracks[trackno];\n\n\t\t\tif (track->ms->isDirty() && track->ms->setup(handle, track) == AF_FAIL)\n\t\t\t\treturn -1;\n\n\t\t\tif (track->ms->sync(handle, track) != AF_SUCCEED)\n\t\t\t\treturn -1;\n\t\t}\n\n\t\t/* Update file headers. */\n\t\tif (handle->update() != AF_SUCCEED)\n\t\t\treturn AF_FAIL;\n\t}\n\telse if (handle->m_access == _AF_READ_ACCESS)\n\t{\n\t\t/* Do nothing. */\n\t}\n\telse\n\t{\n\t\t_af_error(AF_BAD_ACCMODE, \"unrecognized access mode %d\",\n\t\t\thandle->m_access);\n\t\treturn AF_FAIL;\n\t}\n\n\treturn AF_SUCCEED;\n}\n\nint afCloseFile (AFfilehandle file)\n{\n\tint\terr;\n\n\tif (!_af_filehandle_ok(file))\n\t\treturn -1;\n\n\tafSyncFile(file);\n\n\terr = file->m_fh->close();\n\tif (err < 0)\n\t\t_af_error(AF_BAD_CLOSE, \"close returned %d\", err);\n\n\tdelete file->m_fh;\n\tdelete file;\n\n\treturn 0;\n}\n\n// file: pcm.cpp\n/*\n\tAudio File Library\n\tCopyright (C) 1999-2000, Michael Pruett <michael@68k.org>\n\tCopyright (C) 2000-2001, Silicon Graphics, Inc.\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\tpcm.cpp\n\n\tThis file declares default PCM mappings and defines routines\n\tfor accessing and modifying PCM mappings in a track.\n*/\n\n\n\nextern const PCMInfo _af_default_signed_integer_pcm_mappings[] =\n{\n\t{0, 0, 0, 0},\n\t{SLOPE_INT8, 0, MIN_INT8, MAX_INT8},\n\t{SLOPE_INT16, 0, MIN_INT16, MAX_INT16},\n\t{SLOPE_INT24, 0, MIN_INT24, MAX_INT24},\n\t{SLOPE_INT32, 0, MIN_INT32, MAX_INT32}\n};\n\nextern const PCMInfo _af_default_unsigned_integer_pcm_mappings[] =\n{\n\t{0, 0, 0, 0},\n\t{SLOPE_INT8, INTERCEPT_U_INT8, 0, MAX_U_INT8},\n\t{SLOPE_INT16, INTERCEPT_U_INT16, 0, MAX_U_INT16},\n\t{SLOPE_INT24, INTERCEPT_U_INT24, 0, MAX_U_INT24},\n\t{SLOPE_INT32, INTERCEPT_U_INT32, 0, MAX_U_INT32}\n};\n\nextern const PCMInfo _af_default_float_pcm_mapping =\n{1, 0, 0, 0};\n\nextern const PCMInfo _af_default_double_pcm_mapping =\n{1, 0, 0, 0};\n\n/*\n\tInitialize the PCM mapping for a given track.\n*/\nvoid afInitPCMMapping (AFfilesetup setup, int trackid,\n\tdouble slope, double intercept, double minClip, double maxClip)\n{\n\tif (!_af_filesetup_ok(setup))\n\t\treturn;\n\n\tTrackSetup *track = setup->getTrack(trackid);\n\tif (!track)\n\t\treturn;\n\n\ttrack->f.pcm.slope = slope;\n\ttrack->f.pcm.intercept = intercept;\n\ttrack->f.pcm.minClip = minClip;\n\ttrack->f.pcm.maxClip = maxClip;\n}\n\nint afSetVirtualPCMMapping (AFfilehandle file, int trackid,\n\tdouble slope, double intercept, double minClip, double maxClip)\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn -1;\n\n\tTrack *track = file->getTrack(trackid);\n\tif (!track)\n\t\treturn -1;\n\n\ttrack->v.pcm.slope = slope;\n\ttrack->v.pcm.intercept = intercept;\n\ttrack->v.pcm.minClip = minClip;\n\ttrack->v.pcm.maxClip = maxClip;\n\n\ttrack->ms->setDirty();\n\n\treturn 0;\n}\n\nint afSetTrackPCMMapping (AFfilehandle file, int trackid,\n\tdouble slope, double intercept, double minClip, double maxClip)\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn -1;\n\n\tTrack *track = file->getTrack(trackid);\n\tif (!track)\n\t\treturn -1;\n\n\t/*\n\t\tNOTE: this is highly unusual: we don't ordinarily\n\t\tchange track.f after the file is opened.\n\n\t\tPCM mapping is the exception because this information\n\t\tis not encoded in sound files' headers using today's\n\t\tformats, so the user will probably want to set this\n\t\tinformation on a regular basis.  The defaults may or\n\t\tmay not be what the user wants.\n\t*/\n\n\ttrack->f.pcm.slope = slope;\n\ttrack->f.pcm.intercept = intercept;\n\ttrack->f.pcm.minClip = minClip;\n\ttrack->f.pcm.maxClip = maxClip;\n\n\ttrack->ms->setDirty();\n\n\treturn 0;\n}\n\nvoid afGetPCMMapping (AFfilehandle file, int trackid,\n\tdouble *slope, double *intercept, double *minClip, double *maxClip)\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn;\n\n\tTrack *track = file->getTrack(trackid);\n\tif (!track)\n\t\treturn;\n\n\tif (slope)\n\t\t*slope = track->f.pcm.slope;\n\tif (intercept)\n\t\t*intercept = track->f.pcm.intercept;\n\tif (minClip)\n\t\t*minClip = track->f.pcm.minClip;\n\tif (maxClip)\n\t\t*maxClip = track->f.pcm.maxClip;\n}\n\nvoid afGetVirtualPCMMapping (AFfilehandle file, int trackid,\n\tdouble *slope, double *intercept, double *minClip, double *maxClip)\n{\n\tif (!_af_filehandle_ok(file))\n\t\treturn;\n\n\tTrack *track = file->getTrack(trackid);\n\tif (!track)\n\t\treturn;\n\n\tif (slope)\n\t\t*slope = track->v.pcm.slope;\n\tif (intercept)\n\t\t*intercept = track->v.pcm.intercept;\n\tif (minClip)\n\t\t*minClip = track->v.pcm.minClip;\n\tif (maxClip)\n\t\t*maxClip = track->v.pcm.maxClip;\n}\n\n// file: query.cpp\n/*\n\tAudio File Library\n\tCopyright (C) 1998-2000, Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\tquery.cpp\n\n\tThis file contains the implementation of the Audio File Library's\n\tquery mechanism.  Querying through the afQuery calls can allow the\n\tprogrammer to determine the capabilities and characteristics of\n\tthe Audio File Library implementation and its supported formats.\n*/\n\n\n#include <assert.h>\n#include <stdlib.h>\n\n\nAUpvlist _afQueryFileFormat (int arg1, int arg2, int arg3, int arg4);\nAUpvlist _afQueryInstrument (int arg1, int arg2, int arg3, int arg4);\nAUpvlist _afQueryInstrumentParameter (int arg1, int arg2, int arg3, int arg4);\nAUpvlist _afQueryLoop (int arg1, int arg2, int arg3, int arg4);\nAUpvlist _afQueryMarker (int arg1, int arg2, int arg3, int arg4);\nAUpvlist _afQueryMiscellaneous (int arg1, int arg2, int arg3, int arg4);\nAUpvlist _afQueryCompression (int arg1, int arg2, int arg3, int arg4);\nAUpvlist _afQueryCompressionParameter (int arg1, int arg2, int arg3, int arg4);\n\nAUpvlist afQuery (int querytype, int arg1, int arg2, int arg3, int arg4)\n{\n\tswitch (querytype)\n\t{\n\t\tcase AF_QUERYTYPE_INST:\n\t\t\treturn _afQueryInstrument(arg1, arg2, arg3, arg4);\n\t\tcase AF_QUERYTYPE_INSTPARAM:\n\t\t\treturn _afQueryInstrumentParameter(arg1, arg2, arg3, arg4);\n\t\tcase AF_QUERYTYPE_LOOP:\n\t\t\treturn _afQueryLoop(arg1, arg2, arg3, arg4);\n\t\tcase AF_QUERYTYPE_FILEFMT:\n\t\t\treturn _afQueryFileFormat(arg1, arg2, arg3, arg4);\n\t\tcase AF_QUERYTYPE_COMPRESSION:\n\t\t\treturn _afQueryCompression(arg1, arg2, arg3, arg4);\n\t\tcase AF_QUERYTYPE_COMPRESSIONPARAM:\n\t\t\t/* FIXME: This selector is not implemented. */\n\t\t\treturn AU_NULL_PVLIST;\n\t\tcase AF_QUERYTYPE_MISC:\n\t\t\t/* FIXME: This selector is not implemented. */\n\t\t\treturn AU_NULL_PVLIST;\n\t\tcase AF_QUERYTYPE_MARK:\n\t\t\treturn _afQueryMarker(arg1, arg2, arg3, arg4);\n\t}\n\n\t_af_error(AF_BAD_QUERYTYPE, \"bad query type\");\n\treturn AU_NULL_PVLIST;\n}\n\n/* ARGSUSED3 */\nAUpvlist _afQueryFileFormat (int arg1, int arg2, int arg3, int arg4)\n{\n\tswitch (arg1)\n\t{\n\t\t/* The following select only on arg1. */\n\t\tcase AF_QUERY_ID_COUNT:\n\t\t{\n\t\t\tint\tcount = 0, idx;\n\t\t\tfor (idx = 0; idx < _AF_NUM_UNITS; idx++)\n\t\t\t\tif (_af_units[idx].implemented)\n\t\t\t\t\tcount++;\n\t\t\treturn _af_pv_long(count);\n\t\t}\n\t\t/* NOTREACHED */\n\t\tbreak;\n\n\t\tcase AF_QUERY_IDS:\n\t\t{\n\t\t\tint\tcount = 0, idx;\n\t\t\tint\t*buffer;\n\n\t\t\tbuffer = (int *) _af_calloc(_AF_NUM_UNITS, sizeof (int));\n\t\t\tif (buffer == NULL)\n\t\t\t\treturn AU_NULL_PVLIST;\n\n\t\t\tfor (idx = 0; idx < _AF_NUM_UNITS; idx++)\n\t\t\t\tif (_af_units[idx].implemented)\n\t\t\t\t\tbuffer[count++] = idx;\n\n\t\t\tif (count == 0)\n\t\t\t{\n\t\t\t\tfree(buffer);\n\t\t\t\treturn AU_NULL_PVLIST;\n\t\t\t}\n\n\t\t\treturn _af_pv_pointer(buffer);\n\t\t}\n\t\t/* NOTREACHED */\n\t\tbreak;\n\n\t\t/* The following select on arg2. */\n\t\tcase AF_QUERY_LABEL:\n\t\t\tif (arg2 < 0 || arg2 >= _AF_NUM_UNITS)\n\t\t\t\treturn AU_NULL_PVLIST;\n\t\t\treturn _af_pv_pointer(const_cast<char *>(_af_units[arg2].label));\n\n\t\tcase AF_QUERY_NAME:\n\t\t\tif (arg2 < 0 || arg2 >= _AF_NUM_UNITS)\n\t\t\t\treturn AU_NULL_PVLIST;\n\t\t\treturn _af_pv_pointer(const_cast<char *>(_af_units[arg2].name));\n\n\t\tcase AF_QUERY_DESC:\n\t\t\tif (arg2 < 0 || arg2 >= _AF_NUM_UNITS)\n\t\t\t\treturn AU_NULL_PVLIST;\n\t\t\treturn _af_pv_pointer(const_cast<char *>(_af_units[arg2].description));\n\n\t\tcase AF_QUERY_IMPLEMENTED:\n\t\t\tif (arg2 < 0 || arg2 >= _AF_NUM_UNITS)\n\t\t\t\treturn _af_pv_long(0);\n\t\t\treturn _af_pv_long(_af_units[arg2].implemented);\n\n\t\t/* The following select on arg3. */\n\t\tcase AF_QUERY_SAMPLE_FORMATS:\n\t\t\tif (arg3 < 0 || arg3 >= _AF_NUM_UNITS)\n\t\t\t\treturn AU_NULL_PVLIST;\n\t\t\tswitch (arg2)\n\t\t\t{\n\t\t\t\tcase AF_QUERY_DEFAULT:\n\t\t\t\t\treturn _af_pv_long(_af_units[arg3].defaultSampleFormat);\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t/* NOTREACHED */\n\t\t\tbreak;\n\n\t\tcase AF_QUERY_SAMPLE_SIZES:\n\t\t\tif (arg3 < 0 || arg3 >= _AF_NUM_UNITS)\n\t\t\t\treturn AU_NULL_PVLIST;\n\n\t\t\tswitch (arg2)\n\t\t\t{\n\t\t\t\tcase AF_QUERY_DEFAULT:\n\t\t\t\t\treturn _af_pv_long(_af_units[arg3].defaultSampleWidth);\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t/* NOTREACHED */\n\t\t\tbreak;\n\n\t\tcase AF_QUERY_COMPRESSION_TYPES:\n\t\t{\n\t\t\tint\tidx, count;\n\t\t\tint\t*buffer;\n\n\t\t\tif (arg3 < 0 || arg3 >= _AF_NUM_UNITS)\n\t\t\t{\n\t\t\t\t_af_error(AF_BAD_QUERY,\n\t\t\t\t\t\"unrecognized file format %d\", arg3);\n\t\t\t\treturn AU_NULL_PVLIST;\n\t\t\t}\n\n\t\t\tswitch (arg2)\n\t\t\t{\n\t\t\t\tcase AF_QUERY_VALUE_COUNT:\n\t\t\t\t\tcount = _af_units[arg3].compressionTypeCount;\n\t\t\t\t\treturn _af_pv_long(count);\n\n\t\t\t\tcase AF_QUERY_VALUES:\n\t\t\t\t\tcount = _af_units[arg3].compressionTypeCount;\n\t\t\t\t\tif (count == 0)\n\t\t\t\t\t\treturn AU_NULL_PVLIST;\n\n\t\t\t\t\tbuffer = (int *) _af_calloc(count, sizeof (int));\n\t\t\t\t\tif (buffer == NULL)\n\t\t\t\t\t\treturn AU_NULL_PVLIST;\n\n\t\t\t\t\tfor (idx = 0; idx < count; idx++)\n\t\t\t\t\t{\n\t\t\t\t\t\tbuffer[idx] = _af_units[arg3].compressionTypes[idx];\n\t\t\t\t\t}\n\n\t\t\t\t\treturn _af_pv_pointer(buffer);\n\t\t\t}\n\t\t}\n\t\tbreak;\n\t}\n\n\t_af_error(AF_BAD_QUERY, \"bad query selector\");\n\treturn AU_NULL_PVLIST;\n}\n\nlong afQueryLong (int querytype, int arg1, int arg2, int arg3, int arg4)\n{\n\tAUpvlist\tlist;\n\tint\t\ttype;\n\tlong\t\tvalue;\n\n\tlist = afQuery(querytype, arg1, arg2, arg3, arg4);\n\tif (list == AU_NULL_PVLIST)\n\t\treturn -1;\n\tAUpvgetvaltype(list, 0, &type);\n\tif (type != AU_PVTYPE_LONG)\n\t\treturn -1;\n\tAUpvgetval(list, 0, &value);\n\tAUpvfree(list);\n\treturn value;\n}\n\ndouble afQueryDouble (int querytype, int arg1, int arg2, int arg3, int arg4)\n{\n\tAUpvlist\tlist;\n\tint\t\ttype;\n\tdouble\t\tvalue;\n\n\tlist = afQuery(querytype, arg1, arg2, arg3, arg4);\n\tif (list == AU_NULL_PVLIST)\n\t\treturn -1;\n\tAUpvgetvaltype(list, 0, &type);\n\tif (type != AU_PVTYPE_DOUBLE)\n\t\treturn -1;\n\tAUpvgetval(list, 0, &value);\n\tAUpvfree(list);\n\treturn value;\n}\n\nvoid *afQueryPointer (int querytype, int arg1, int arg2, int arg3, int arg4)\n{\n\tAUpvlist\tlist;\n\tint\t\ttype;\n\tvoid\t\t*value;\n\n\tlist = afQuery(querytype, arg1, arg2, arg3, arg4);\n\tif (list == AU_NULL_PVLIST)\n\t\treturn NULL;\n\tAUpvgetvaltype(list, 0, &type);\n\tif (type != AU_PVTYPE_PTR)\n\t\treturn NULL;\n\tAUpvgetval(list, 0, &value);\n\tAUpvfree(list);\n\treturn value;\n}\n\n/* ARGSUSED3 */\nAUpvlist _afQueryInstrumentParameter (int arg1, int arg2, int arg3, int arg4)\n{\n\tswitch (arg1)\n\t{\n\t\t/* For the following query types, arg2 is the file format. */\n\t\tcase AF_QUERY_SUPPORTED:\n\t\t\tif (arg2 < 0 || arg2 >= _AF_NUM_UNITS)\n\t\t\t\treturn AU_NULL_PVLIST;\n\t\t\treturn _af_pv_long(_af_units[arg2].instrumentParameterCount != 0);\n\n\t\tcase AF_QUERY_ID_COUNT:\n\t\t\tif (arg2 < 0 || arg2 >= _AF_NUM_UNITS)\n\t\t\t\treturn AU_NULL_PVLIST;\n\t\t\treturn _af_pv_long(_af_units[arg2].instrumentParameterCount);\n\n\t\tcase AF_QUERY_IDS:\n\t\t{\n\t\t\tint\tcount;\n\t\t\tint\t*buffer;\n\n\t\t\tif (arg2 < 0 || arg2 >= _AF_NUM_UNITS)\n\t\t\t\treturn AU_NULL_PVLIST;\n\t\t\tcount = _af_units[arg2].instrumentParameterCount;\n\t\t\tif (count == 0)\n\t\t\t\treturn AU_NULL_PVLIST;\n\t\t\tbuffer = (int *) _af_calloc(count, sizeof (int));\n\t\t\tif (buffer == NULL)\n\t\t\t\treturn AU_NULL_PVLIST;\n\t\t\tfor (int i=0; i<count; i++)\n\t\t\t\tbuffer[i] = _af_units[arg2].instrumentParameters[i].id;\n\t\t\treturn _af_pv_pointer(buffer);\n\t\t}\n\t\t/* NOTREACHED */\n\t\tbreak;\n\n\t\t/*\n\t\t\tFor the next few query types, arg2 is the file\n\t\t\tformat and arg3 is the instrument parameter id.\n\t\t*/\n\t\tcase AF_QUERY_TYPE:\n\t\t{\n\t\t\tint\tidx;\n\n\t\t\tif (arg2 < 0 || arg2 >= _AF_NUM_UNITS)\n\t\t\t\treturn AU_NULL_PVLIST;\n\n\t\t\tidx = _af_instparam_index_from_id(arg2, arg3);\n\t\t\tif (idx<0)\n\t\t\t\treturn AU_NULL_PVLIST;\n\t\t\treturn _af_pv_long(_af_units[arg2].instrumentParameters[idx].type);\n\t\t}\n\n\t\tcase AF_QUERY_NAME:\n\t\t{\n\t\t\tint\tidx;\n\n\t\t\tif (arg2 < 0 || arg2 >= _AF_NUM_UNITS)\n\t\t\t\treturn AU_NULL_PVLIST;\n\t\t\tidx = _af_instparam_index_from_id(arg2, arg3);\n\t\t\tif (idx < 0)\n\t\t\t\treturn AU_NULL_PVLIST;\n\t\t\treturn _af_pv_pointer(const_cast<char *>(_af_units[arg2].instrumentParameters[idx].name));\n\t\t}\n\n\t\tcase AF_QUERY_DEFAULT:\n\t\t{\n\t\t\tint\tidx;\n\n\t\t\tif (arg2 < 0 || arg2 >= _AF_NUM_UNITS)\n\t\t\t\treturn AU_NULL_PVLIST;\n\t\t\tidx = _af_instparam_index_from_id(arg2, arg3);\n\t\t\tif (idx >= 0)\n\t\t\t{\n\t\t\t\tAUpvlist\tret = AUpvnew(1);\n\t\t\t\tAUpvsetparam(ret, 0, _af_units[arg2].instrumentParameters[idx].id);\n\t\t\t\tAUpvsetvaltype(ret, 0, _af_units[arg2].instrumentParameters[idx].type);\n\t\t\t\tAUpvsetval(ret, 0, const_cast<AFPVu *>(&_af_units[arg2].instrumentParameters[idx].defaultValue));\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t\treturn AU_NULL_PVLIST;\n\t\t}\n\t}\n\n\t_af_error(AF_BAD_QUERY, \"bad query selector\");\n\treturn AU_NULL_PVLIST;\n}\n\n/* ARGSUSED2 */\nAUpvlist _afQueryLoop (int arg1, int arg2, int arg3, int arg4)\n{\n\tif (arg2 < 0 || arg2 >= _AF_NUM_UNITS)\n\t\treturn AU_NULL_PVLIST;\n\n\tswitch (arg1)\n\t{\n\t\tcase AF_QUERY_SUPPORTED:\n\t\t\treturn _af_pv_long(_af_units[arg2].loopPerInstrumentCount != 0);\n\t\tcase AF_QUERY_MAX_NUMBER:\n\t\t\treturn _af_pv_long(_af_units[arg2].loopPerInstrumentCount);\n\t}\n\n\t_af_error(AF_BAD_QUERY, \"bad query selector\");\n\treturn AU_NULL_PVLIST;\n}\n\n/* ARGSUSED2 */\nAUpvlist _afQueryInstrument (int arg1, int arg2, int arg3, int arg4)\n{\n\tswitch (arg1)\n\t{\n\t\tcase AF_QUERY_SUPPORTED:\n\t\t\tif (arg2 < 0 || arg2 >= _AF_NUM_UNITS)\n\t\t\t\treturn AU_NULL_PVLIST;\n\t\t\treturn _af_pv_long(_af_units[arg2].instrumentCount != 0);\n\n\t\tcase AF_QUERY_MAX_NUMBER:\n\t\t\tif (arg2 < 0 || arg2 >= _AF_NUM_UNITS)\n\t\t\t\treturn AU_NULL_PVLIST;\n\t\t\treturn _af_pv_long(_af_units[arg2].instrumentCount);\n\t}\n\n\t_af_error(AF_BAD_QUERY, \"bad query selector\");\n\treturn AU_NULL_PVLIST;\n}\n\n/* ARGSUSED0 */\nAUpvlist _afQueryMiscellaneous (int arg1, int arg2, int arg3, int arg4)\n{\n\t_af_error(AF_BAD_NOT_IMPLEMENTED, \"not implemented yet\");\n\treturn AU_NULL_PVLIST;\n}\n\n/* ARGSUSED2 */\nAUpvlist _afQueryMarker (int arg1, int arg2, int arg3, int arg4)\n{\n\tswitch (arg1)\n\t{\n\t\tcase AF_QUERY_SUPPORTED:\n\t\t\treturn _af_pv_long(_af_units[arg2].markerCount != 0);\n\t\tcase AF_QUERY_MAX_NUMBER:\n\t\t\treturn _af_pv_long(_af_units[arg2].markerCount);\n\t}\n\n\t_af_error(AF_BAD_QUERY, \"bad query selector\");\n\treturn AU_NULL_PVLIST;\n}\n\n/* ARGSUSED0 */\nAUpvlist _afQueryCompression (int arg1, int arg2, int arg3, int arg4)\n{\n\tconst CompressionUnit *unit = NULL;\n\n\tswitch (arg1)\n\t{\n\t\tcase AF_QUERY_ID_COUNT:\n\t\t{\n\t\t\tint count = 0;\n\t\t\tfor (int i = 0; i < _AF_NUM_COMPRESSION; i++)\n\t\t\t\tif (_af_compression[i].implemented)\n\t\t\t\t\tcount++;\n\t\t\treturn _af_pv_long(count);\n\t\t}\n\n\t\tcase AF_QUERY_IDS:\n\t\t{\n\t\t\tint *buf = (int *) _af_calloc(_AF_NUM_COMPRESSION, sizeof (int));\n\t\t\tif (!buf)\n\t\t\t\treturn AU_NULL_PVLIST;\n\n\t\t\tint count = 0;\n\t\t\tfor (int i = 0; i < _AF_NUM_COMPRESSION; i++)\n\t\t\t{\n\t\t\t\tif (_af_compression[i].implemented)\n\t\t\t\t\tbuf[count++] = _af_compression[i].compressionID;\n\t\t\t}\n\t\t\treturn _af_pv_pointer(buf);\n\t\t}\n\n\t\tcase AF_QUERY_IMPLEMENTED:\n\t\t\tunit = _af_compression_unit_from_id(arg2);\n\t\t\tif (!unit)\n\t\t\t\treturn _af_pv_long(0);\n\t\t\treturn _af_pv_long(unit->implemented);\n\n\t\tcase AF_QUERY_NATIVE_SAMPFMT:\n\t\t\tunit = _af_compression_unit_from_id(arg2);\n\t\t\tif (!unit)\n\t\t\t\treturn AU_NULL_PVLIST;\n\t\t\treturn _af_pv_long(unit->nativeSampleFormat);\n\n\t\tcase AF_QUERY_NATIVE_SAMPWIDTH:\n\t\t\tunit = _af_compression_unit_from_id(arg2);\n\t\t\tif (!unit)\n\t\t\t\treturn AU_NULL_PVLIST;\n\t\t\treturn _af_pv_long(unit->nativeSampleWidth);\n\n\t\tcase AF_QUERY_LABEL:\n\t\t\tunit = _af_compression_unit_from_id(arg2);\n\t\t\tif (!unit)\n\t\t\t\treturn AU_NULL_PVLIST;\n\t\t\treturn _af_pv_pointer(const_cast<char *>(unit->label));\n\n\t\tcase AF_QUERY_NAME:\n\t\t\tunit = _af_compression_unit_from_id(arg2);\n\t\t\tif (!unit)\n\t\t\t\treturn AU_NULL_PVLIST;\n\t\t\treturn _af_pv_pointer(const_cast<char *>(unit->shortname));\n\n\t\tcase AF_QUERY_DESC:\n\t\t\tunit = _af_compression_unit_from_id(arg2);\n\t\t\tif (!unit)\n\t\t\t\treturn AU_NULL_PVLIST;\n\t\t\treturn _af_pv_pointer(const_cast<char *>(unit->name));\n\t}\n\n\t_af_error(AF_BAD_QUERY, \"unrecognized query selector %d\\n\", arg1);\n\treturn AU_NULL_PVLIST;\n}\n\n// file: units.cpp\n/*\n\tAudio File Library\n\tCopyright (C) 2000-2001, Silicon Graphics, Inc.\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\tunits.cpp\n\n\tThis file contains the file format units.\n*/\n\n\n\n\n\n\nconst Unit _af_units[_AF_NUM_UNITS] =\n{\n\t{\n\t\tAF_FILE_RAWDATA,\n\t\t\"Raw Data\", \"Raw Sound Data\", \"raw\",\n\t\ttrue,\n\t\t&RawFile::completeSetup,\n\t\t&RawFile::recognize,\n\t\tAF_SAMPFMT_TWOSCOMP, 16,\n\t\t_AF_RAW_NUM_COMPTYPES,\n\t\t_af_raw_compression_types,\n\t\t0,\t/* maximum marker count */\n\t\t0,\t/* maximum instrument count */\n\t\t0,\t/* maxium number of loops per instrument */\n\t\t0, NULL,\n\t},\n\t{\n\t\tAF_FILE_AIFFC,\n\t\t\"AIFF-C\", \"AIFF-C File Format\", \"aifc\",\n\t\ttrue,\n\t\tAIFFFile::completeSetup,\n\t\tAIFFFile::recognizeAIFFC,\n\t\tAF_SAMPFMT_TWOSCOMP, 16,\n\t\t_AF_AIFFC_NUM_COMPTYPES,\n\t\t_af_aiffc_compression_types,\n\t\t65535,\t/* maximum marker count */\n\t\t1,\t/* maximum instrument count */\n\t\t2,\t/* maximum number of loops per instrument */\n\t\t_AF_AIFF_NUM_INSTPARAMS,\n\t\t_af_aiff_inst_params\n\t},\n\t{\n\t\tAF_FILE_AIFF,\n\t\t\"AIFF\", \"Audio Interchange File Format\", \"aiff\",\n\t\ttrue,\n\t\tAIFFFile::completeSetup,\n\t\tAIFFFile::recognizeAIFF,\n\t\tAF_SAMPFMT_TWOSCOMP, 16,\n\t\t0,\t/* supported compression types */\n\t\tNULL,\n\t\t65535,\t/* maximum marker count */\n\t\t1,\t/* maximum instrument count */\n\t\t2,\t/* maximum number of loops per instrument */\n\t\t_AF_AIFF_NUM_INSTPARAMS,\n\t\t_af_aiff_inst_params\n\t},\n\t{\n\t\tAF_FILE_WAVE,\n\t\t\"MS RIFF WAVE\", \"Microsoft RIFF WAVE Format\", \"wave\",\n\t\ttrue,\n\t\tWAVEFile::completeSetup,\n\t\tWAVEFile::recognize,\n\t\tAF_SAMPFMT_TWOSCOMP, 16,\n\t\t_AF_WAVE_NUM_COMPTYPES,\n\t\t_af_wave_compression_types,\n\t\tAF_NUM_UNLIMITED,\t/* maximum marker count */\n\t\t1,\t\t\t/* maximum instrument count */\n\t\tAF_NUM_UNLIMITED,\t/* maximum number of loops per instrument */\n\t\t_AF_WAVE_NUM_INSTPARAMS,\n\t\t_af_wave_inst_params\n\t},\n};\n\nconst CompressionUnit _af_compression[_AF_NUM_COMPRESSION] =\n{\n\t{\n\t\tAF_COMPRESSION_NONE,\n\t\ttrue,\n\t\t\"none\",\t/* label */\n\t\t\"none\",\t/* short name */\n\t\t\"not compressed\",\n\t\t1.0,\n\t\tAF_SAMPFMT_TWOSCOMP, 16,\n\t\tfalse,\t/* needsRebuffer */\n\t\tfalse,\t/* multiple_of */\n\t\t_af_pcm_format_ok,\n\t\t_AFpcminitcompress, _AFpcminitdecompress\n\t},\n\t{\n\t\tAF_COMPRESSION_G711_ULAW,\n\t\ttrue,\n\t\t\"ulaw\",\t/* label */\n\t\t\"CCITT G.711 u-law\",\t/* shortname */\n\t\t\"CCITT G.711 u-law\",\n\t\t2.0,\n\t\tAF_SAMPFMT_TWOSCOMP, 16,\n\t\tfalse,\t/* needsRebuffer */\n\t\tfalse,\t/* multiple_of */\n\t\t_af_g711_format_ok,\n\t\t_AFg711initcompress, _AFg711initdecompress\n\t},\n\t{\n\t\tAF_COMPRESSION_G711_ALAW,\n\t\ttrue,\n\t\t\"alaw\",\t/* label */\n\t\t\"CCITT G.711 A-law\",\t/* short name */\n\t\t\"CCITT G.711 A-law\",\n\t\t2.0,\n\t\tAF_SAMPFMT_TWOSCOMP, 16,\n\t\tfalse,\t/* needsRebuffer */\n\t\tfalse,\t/* multiple_of */\n\t\t_af_g711_format_ok,\n\t\t_AFg711initcompress, _AFg711initdecompress\n\t},\n\t{\n\t\tAF_COMPRESSION_MS_ADPCM,\n\t\ttrue,\n\t\t\"msadpcm\",\t/* label */\n\t\t\"MS ADPCM\",\t/* short name */\n\t\t\"Microsoft ADPCM\",\n\t\t4.0,\n\t\tAF_SAMPFMT_TWOSCOMP, 16,\n\t\ttrue,\t/* needsRebuffer */\n\t\tfalse,\t/* multiple_of */\n\t\t_af_ms_adpcm_format_ok,\n\t\t_af_ms_adpcm_init_compress, _af_ms_adpcm_init_decompress\n\t},\n};\n\n// file: util.cpp\n/*\n\tAudio File Library\n\tCopyright (C) 1998-2000, Michael Pruett <michael@68k.org>\n\tCopyright (C) 2000, Silicon Graphics, Inc.\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\tutil.c\n\n\tThis file contains general utility routines for the Audio File\n\tLibrary.\n*/\n\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <assert.h>\n\n\n\n/*\n\t_af_filesetup_ok and _af_filehandle_ok are sanity check routines\n\twhich are called at the beginning of every external subroutine.\n*/\nbool _af_filesetup_ok (AFfilesetup setup)\n{\n\tif (setup == AF_NULL_FILESETUP)\n\t{\n\t\t_af_error(AF_BAD_FILESETUP, \"null file setup\");\n\t\treturn false;\n\t}\n\tif (setup->valid != _AF_VALID_FILESETUP)\n\t{\n\t\t_af_error(AF_BAD_FILESETUP, \"invalid file setup\");\n\t\treturn false;\n\t}\n\treturn true;\n}\n\nbool _af_filehandle_ok (AFfilehandle file)\n{\n\tif (file == AF_NULL_FILEHANDLE)\n\t{\n\t\t_af_error(AF_BAD_FILEHANDLE, \"null file handle\");\n\t\treturn false;\n\t}\n\tif (file->m_valid != _AF_VALID_FILEHANDLE)\n\t{\n\t\t_af_error(AF_BAD_FILEHANDLE, \"invalid file handle\");\n\t\treturn false;\n\t}\n\treturn true;\n}\n\nvoid *_af_malloc (size_t size)\n{\n\tvoid\t*p;\n\n\tif (size <= 0)\n\t{\n\t\t_af_error(AF_BAD_MALLOC, \"bad memory allocation size request %zd\", size);\n\t\treturn NULL;\n\t}\n\n\tp = malloc(size);\n\n#ifdef AF_DEBUG\n\tif (p)\n\t\tmemset(p, 0xff, size);\n#endif\n\n\tif (p == NULL)\n\t{\n\t\t_af_error(AF_BAD_MALLOC, \"allocation of %zd bytes failed\", size);\n\t\treturn NULL;\n\t}\n\n\treturn p;\n}\n\nchar *_af_strdup (const char *s)\n{\n\tchar *p = (char *) malloc(strlen(s) + 1);\n\n\tif (p)\n\t\tstrcpy(p, s);\n\n\treturn p;\n}\n\nvoid *_af_realloc (void *p, size_t size)\n{\n\tif (size <= 0)\n\t{\n\t\t_af_error(AF_BAD_MALLOC, \"bad memory allocation size request %zd\", size);\n\t\treturn NULL;\n\t}\n\n\tp = realloc(p, size);\n\n\tif (p == NULL)\n\t{\n\t\t_af_error(AF_BAD_MALLOC, \"allocation of %zd bytes failed\", size);\n\t\treturn NULL;\n\t}\n\n\treturn p;\n}\n\nvoid *_af_calloc (size_t nmemb, size_t size)\n{\n\tvoid\t*p;\n\n\tif (nmemb <= 0 || size <= 0)\n\t{\n\t\t_af_error(AF_BAD_MALLOC, \"bad memory allocation size request \"\n\t\t\t\"%zd elements of %zd bytes each\", nmemb, size);\n\t\treturn NULL;\n\t}\n\n\tp = calloc(nmemb, size);\n\n\tif (p == NULL)\n\t{\n\t\t_af_error(AF_BAD_MALLOC, \"allocation of %zd bytes failed\",\n\t\t\tnmemb*size);\n\t\treturn NULL;\n\t}\n\n\treturn p;\n}\n\nAUpvlist _af_pv_long (long val)\n{\n\tAUpvlist\tret = AUpvnew(1);\n\tAUpvsetparam(ret, 0, 0);\n\tAUpvsetvaltype(ret, 0, AU_PVTYPE_LONG);\n\tAUpvsetval(ret, 0, &val);\n\treturn ret;\n}\n\nAUpvlist _af_pv_double (double val)\n{\n\tAUpvlist\tret = AUpvnew(1);\n\tAUpvsetparam(ret, 0, 0);\n\tAUpvsetvaltype(ret, 0, AU_PVTYPE_DOUBLE);\n\tAUpvsetval(ret, 0, &val);\n\treturn ret;\n}\n\nAUpvlist _af_pv_pointer (void *val)\n{\n\tAUpvlist\tret = AUpvnew(1);\n\tAUpvsetparam(ret, 0, 0);\n\tAUpvsetvaltype(ret, 0, AU_PVTYPE_PTR);\n\tAUpvsetval(ret, 0, &val);\n\treturn ret;\n}\n\nbool _af_pv_getlong (AUpvlist pvlist, int param, long *l)\n{\n\tfor (int i=0; i<AUpvgetmaxitems(pvlist); i++)\n\t{\n\t\tint\tp, t;\n\n\t\tAUpvgetparam(pvlist, i, &p);\n\n\t\tif (p != param)\n\t\t\tcontinue;\n\n\t\tAUpvgetvaltype(pvlist, i, &t);\n\n\t\t/* Ensure that this parameter is of type AU_PVTYPE_LONG. */\n\t\tif (t != AU_PVTYPE_LONG)\n\t\t\treturn false;\n\n\t\tAUpvgetval(pvlist, i, l);\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\nbool _af_pv_getdouble (AUpvlist pvlist, int param, double *d)\n{\n\tfor (int i=0; i<AUpvgetmaxitems(pvlist); i++)\n\t{\n\t\tint\tp, t;\n\n\t\tAUpvgetparam(pvlist, i, &p);\n\n\t\tif (p != param)\n\t\t\tcontinue;\n\n\t\tAUpvgetvaltype(pvlist, i, &t);\n\n\t\t/* Ensure that this parameter is of type AU_PVTYPE_DOUBLE. */\n\t\tif (t != AU_PVTYPE_DOUBLE)\n\t\t\treturn false;\n\n\t\tAUpvgetval(pvlist, i, d);\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\nbool _af_pv_getptr (AUpvlist pvlist, int param, void **v)\n{\n\tfor (int i=0; i<AUpvgetmaxitems(pvlist); i++)\n\t{\n\t\tint\tp, t;\n\n\t\tAUpvgetparam(pvlist, i, &p);\n\n\t\tif (p != param)\n\t\t\tcontinue;\n\n\t\tAUpvgetvaltype(pvlist, i, &t);\n\n\t\t/* Ensure that this parameter is of type AU_PVTYPE_PTR. */\n\t\tif (t != AU_PVTYPE_PTR)\n\t\t\treturn false;\n\n\t\tAUpvgetval(pvlist, i, v);\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\nint _af_format_sample_size_uncompressed (const AudioFormat *format, bool stretch3to4)\n{\n\tint\tsize = 0;\n\n\tswitch (format->sampleFormat)\n\t{\n\t\tcase AF_SAMPFMT_FLOAT:\n\t\t\tsize = sizeof (float);\n\t\t\tbreak;\n\t\tcase AF_SAMPFMT_DOUBLE:\n\t\t\tsize = sizeof (double);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tsize = (int) (format->sampleWidth + 7) / 8;\n\t\t\tif (format->compressionType == AF_COMPRESSION_NONE &&\n\t\t\t\tsize == 3 && stretch3to4)\n\t\t\t\tsize = 4;\n\t\t\tbreak;\n\t}\n\n\treturn size;\n}\n\nfloat _af_format_sample_size (const AudioFormat *fmt, bool stretch3to4)\n{\n\tconst CompressionUnit *unit = _af_compression_unit_from_id(fmt->compressionType);\n\tfloat squishFactor = unit->squishFactor;\n\n\treturn _af_format_sample_size_uncompressed(fmt, stretch3to4) /\n\t\tsquishFactor;\n}\n\nint _af_format_frame_size_uncompressed (const AudioFormat *fmt, bool stretch3to4)\n{\n\treturn _af_format_sample_size_uncompressed(fmt, stretch3to4) *\n\t\tfmt->channelCount;\n}\n\nfloat _af_format_frame_size (const AudioFormat *fmt, bool stretch3to4)\n{\n\tconst CompressionUnit *unit = _af_compression_unit_from_id(fmt->compressionType);\n\tfloat squishFactor = unit->squishFactor;\n\n\treturn _af_format_frame_size_uncompressed(fmt, stretch3to4) /\n\t\tsquishFactor;\n}\n\n/*\n\tSet the sampleFormat and sampleWidth fields in f, and set the\n\tPCM info to the appropriate default values for the given sample\n\tformat and sample width.\n*/\nstatus _af_set_sample_format (AudioFormat *f, int sampleFormat, int sampleWidth)\n{\n\tswitch (sampleFormat)\n\t{\n\t\tcase AF_SAMPFMT_UNSIGNED:\n\t\tcase AF_SAMPFMT_TWOSCOMP:\n\t\tif (sampleWidth < 1 || sampleWidth > 32)\n\t\t{\n\t\t\t_af_error(AF_BAD_SAMPFMT,\n\t\t\t\t\"illegal sample width %d for integer data\",\n\t\t\t\tsampleWidth);\n\t\t\treturn AF_FAIL;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tint bytes;\n\n\t\t\tf->sampleFormat = sampleFormat;\n\t\t\tf->sampleWidth = sampleWidth;\n\n\t\t\tbytes = _af_format_sample_size_uncompressed(f, false);\n\n\t\t\tif (sampleFormat == AF_SAMPFMT_TWOSCOMP)\n\t\t\t\tf->pcm = _af_default_signed_integer_pcm_mappings[bytes];\n\t\t\telse\n\t\t\t\tf->pcm = _af_default_unsigned_integer_pcm_mappings[bytes];\n\t\t}\n\t\tbreak;\n\n\t\tcase AF_SAMPFMT_FLOAT:\n\t\t\tf->sampleFormat = sampleFormat;\n\t\t\tf->sampleWidth = 32;\n\t\t\tf->pcm = _af_default_float_pcm_mapping;\n\t\t\tbreak;\n\t\tcase AF_SAMPFMT_DOUBLE:\n\t\t\tf->sampleFormat = sampleFormat;\n\t\t\tf->sampleWidth = 64;      /*for convenience */\n\t\t\tf->pcm = _af_default_double_pcm_mapping;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\t_af_error(AF_BAD_SAMPFMT, \"unknown sample format %d\",\n\t\t\t\tsampleFormat);\n\t\t\treturn AF_FAIL;\n\t}\n\n\treturn AF_SUCCEED;\n}\n\n/*\n\tVerify the uniqueness of the nids ids given.\n\n\tidname is the name of what the ids identify, as in \"loop\"\n\tiderr is an error as in AF_BAD_LOOPID\n*/\nbool _af_unique_ids (const int *ids, int nids, const char *idname, int iderr)\n{\n\tfor (int i = 0; i < nids; i++)\n\t{\n\t\tfor (int j = 0; j < i; j++)\n\t\t{\n\t\t\tif (ids[i] == ids[j])\n\t\t\t{\n\t\t\t\t_af_error(iderr, \"nonunique %s id %d\", idname, ids[i]);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn true;\n}\n"
  },
  {
    "path": "tools/audiofile/audiofile.h",
    "content": "/*\n\tAudio File Library\n\tCopyright (C) 1998-2000, 2010-2013 Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\taudiofile.h\n\n\tThis file contains the public interfaces to the Audio File Library.\n*/\n\n#ifndef AUDIOFILE_H\n#define AUDIOFILE_H\n\n#include <aupvlist.h>\n#include <stdint.h>\n#include <sys/types.h>\n\n#define LIBAUDIOFILE_MAJOR_VERSION 0\n#define LIBAUDIOFILE_MINOR_VERSION 3\n#define LIBAUDIOFILE_MICRO_VERSION 6\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#if (defined(__GNUC__) && __GNUC__ >= 4) || defined(__clang__)\n#define AFAPI __attribute__((visibility(\"default\")))\n#else\n#define AFAPI\n#endif\n\ntypedef struct _AFvirtualfile AFvirtualfile;\n\ntypedef struct _AFfilesetup *AFfilesetup;\ntypedef struct _AFfilehandle *AFfilehandle;\ntypedef void (*AFerrfunc)(long, const char *);\n\n// Define AFframecount and AFfileoffset as 64-bit signed integers.\n#if defined(__FreeBSD__) || \\\n\tdefined(__DragonFly__) || \\\n\tdefined(__NetBSD__) || \\\n\tdefined(__OpenBSD__) || \\\n\tdefined(__APPLE__) || \\\n\tdefined(__sgi) || \\\n\t(defined(__linux__) && defined(__LP64__))\n// BSD and IRIX systems define off_t as a 64-bit signed integer.\n// Linux defines off_t as a 64-bit signed integer in LP64 mode.\ntypedef off_t AFframecount;\ntypedef off_t AFfileoffset;\n#else\n// For all other systems, use int64_t.\ntypedef int64_t AFframecount;\ntypedef int64_t AFfileoffset;\n#endif\n\n#define AF_NULL_FILESETUP\t((struct _AFfilesetup *) 0)\n#define AF_NULL_FILEHANDLE\t((struct _AFfilehandle *) 0)\n\n#define AF_ERR_BASE 3000\n\nenum\n{\n\tAF_DEFAULT_TRACK = 1001\n};\n\nenum\n{\n\tAF_DEFAULT_INST = 2001\n};\n\nenum\n{\n\tAF_NUM_UNLIMITED = 99999\n};\n\nenum\n{\n\tAF_BYTEORDER_BIGENDIAN = 501,\n\tAF_BYTEORDER_LITTLEENDIAN = 502\n};\n\nenum\n{\n\tAF_FILE_UNKNOWN = -1,\n\tAF_FILE_RAWDATA = 0,\n\tAF_FILE_AIFFC = 1,\n\tAF_FILE_AIFF = 2,\n\tAF_FILE_NEXTSND = 3,\n\tAF_FILE_WAVE = 4,\n\tAF_FILE_BICSF = 5,\n\tAF_FILE_IRCAM = AF_FILE_BICSF,\n\tAF_FILE_MPEG1BITSTREAM = 6,\t/* not implemented */\n\tAF_FILE_SOUNDDESIGNER1 = 7,\t/* not implemented */\n\tAF_FILE_SOUNDDESIGNER2 = 8,\t/* not implemented */\n\tAF_FILE_AVR = 9,\n\tAF_FILE_IFF_8SVX = 10,\n\tAF_FILE_SAMPLEVISION = 11,\n\tAF_FILE_VOC = 12,\n\tAF_FILE_NIST_SPHERE = 13,\n\tAF_FILE_SOUNDFONT2 = 14,\t/* not implemented */\n\tAF_FILE_CAF = 15,\n\tAF_FILE_FLAC = 16\n};\n\nenum\n{\n\tAF_LOOP_MODE_NOLOOP = 0,\n\tAF_LOOP_MODE_FORW = 1,\n\tAF_LOOP_MODE_FORWBAKW = 2\n};\n\nenum\n{\n\tAF_SAMPFMT_TWOSCOMP = 401, /* linear two's complement */\n\tAF_SAMPFMT_UNSIGNED = 402, /* unsigned integer */\n\tAF_SAMPFMT_FLOAT = 403, /* 32-bit IEEE floating-point */\n\tAF_SAMPFMT_DOUBLE = 404 /* 64-bit IEEE double-precision floating-point */\n};\n\nenum\n{\n\tAF_INST_LOOP_OFF = 0,\t\t\t/* no looping */\n\tAF_INST_LOOP_CONTINUOUS = 1,\t/* loop continuously through decay */\n\tAF_INST_LOOP_SUSTAIN = 3\t\t/* loop during sustain, then continue */\n};\n\nenum\n{\n\tAF_INST_MIDI_BASENOTE = 301,\n\tAF_INST_NUMCENTS_DETUNE = 302,\n\tAF_INST_MIDI_LONOTE = 303,\n\tAF_INST_MIDI_HINOTE = 304,\n\tAF_INST_MIDI_LOVELOCITY = 305,\n\tAF_INST_MIDI_HIVELOCITY = 306,\n\tAF_INST_NUMDBS_GAIN = 307,\n\tAF_INST_SUSLOOPID = 308,\t\t/* loop id for AIFF sustain loop */\n\tAF_INST_RELLOOPID = 309,\t\t/* loop id for AIFF release loop */\n\tAF_INST_SAMP_STARTFRAME = 310,\t/* start sample for this inst */\n\tAF_INST_SAMP_ENDFRAME = 311,\t/* end sample for this inst */\n\tAF_INST_SAMP_MODE = 312,\t\t/* looping mode for this inst */\n\tAF_INST_TRACKID = 313,\n\tAF_INST_NAME = 314,\t\t\t\t/* name of this inst */\n\tAF_INST_SAMP_RATE = 315,\t\t/* sample rate of this inst's sample */\n\tAF_INST_PRESETID = 316,\t\t\t/* ID of preset containing this inst */\n\tAF_INST_PRESET_NAME = 317\t\t/* name of preset containing this inst */\n};\n\nenum\n{\n\tAF_MISC_UNRECOGNIZED = 0,\t/* unrecognized data chunk */\n\tAF_MISC_COPY = 201,\t/* copyright string */\n\tAF_MISC_AUTH = 202,\t/* author string */\n\tAF_MISC_NAME = 203,\t/* name string */\n\tAF_MISC_ANNO = 204,\t/* annotation string */\n\tAF_MISC_APPL = 205,\t/* application-specific data */\n\tAF_MISC_MIDI = 206,\t/* MIDI exclusive data */\n\tAF_MISC_PCMMAP = 207,\t/* PCM mapping information (future use) */\n\tAF_MISC_NeXT = 208,\t/* misc binary data appended to NeXT header */\n\tAF_MISC_IRCAM_PEAKAMP = 209,\t/* peak amplitude information */\n\tAF_MISC_IRCAM_COMMENT = 210,\t/* BICSF text comment */\n\tAF_MISC_COMMENT = 210,\t/* general text comment */\n\n\tAF_MISC_ICMT = AF_MISC_COMMENT,\t/* comments chunk (WAVE format) */\n\tAF_MISC_ICRD = 211,  /* creation date (WAVE format) */\n\tAF_MISC_ISFT = 212  /* software name (WAVE format) */\n};\n\nenum\n{\n\t/* supported compression schemes */\n\tAF_COMPRESSION_UNKNOWN = -1,\n\tAF_COMPRESSION_NONE = 0,\n\tAF_COMPRESSION_G722 = 501,\n\tAF_COMPRESSION_G711_ULAW = 502,\n\tAF_COMPRESSION_G711_ALAW = 503,\n\n\t/* Apple proprietary AIFF-C compression schemes (not supported) */\n\tAF_COMPRESSION_APPLE_ACE2 = 504,\n\tAF_COMPRESSION_APPLE_ACE8 = 505,\n\tAF_COMPRESSION_APPLE_MAC3 = 506,\n\tAF_COMPRESSION_APPLE_MAC6 = 507,\n\n\tAF_COMPRESSION_G726 = 517,\n\tAF_COMPRESSION_G728 = 518,\n\tAF_COMPRESSION_DVI_AUDIO = 519,\n\tAF_COMPRESSION_IMA = AF_COMPRESSION_DVI_AUDIO,\n\tAF_COMPRESSION_GSM = 520,\n\tAF_COMPRESSION_FS1016 = 521,\n\tAF_COMPRESSION_DV = 522,\n\tAF_COMPRESSION_MS_ADPCM = 523,\n\n\tAF_COMPRESSION_FLAC = 530,\n\tAF_COMPRESSION_ALAC = 540\n};\n\n/* tokens for afQuery() -- see the man page for instructions */\n/* level 1 selectors */\nenum\n{\n\tAF_QUERYTYPE_INSTPARAM = 500,\n\tAF_QUERYTYPE_FILEFMT = 501,\n\tAF_QUERYTYPE_COMPRESSION = 502,\n\tAF_QUERYTYPE_COMPRESSIONPARAM = 503,\n\tAF_QUERYTYPE_MISC = 504,\n\tAF_QUERYTYPE_INST = 505,\n\tAF_QUERYTYPE_MARK = 506,\n\tAF_QUERYTYPE_LOOP = 507\n};\n\n/* level 2 selectors */\nenum\n{\n\tAF_QUERY_NAME = 600,\t/* get name (1-3 words) */\n\tAF_QUERY_DESC = 601,\t/* get description */\n\tAF_QUERY_LABEL = 602,\t/* get 4- or 5-char label */\n\tAF_QUERY_TYPE = 603,\t/* get type token */\n\tAF_QUERY_DEFAULT = 604,\t/* dflt. value for param */\n\tAF_QUERY_ID_COUNT = 605,\t/* get number of ids avail. */\n\tAF_QUERY_IDS = 606,\t/* get array of id tokens */\n\tAF_QUERY_IMPLEMENTED = 613,\t/* boolean */\n\tAF_QUERY_TYPE_COUNT = 607,\t/* get number of types av. */\n\tAF_QUERY_TYPES = 608,\t/* get array of types */\n\tAF_QUERY_NATIVE_SAMPFMT = 609,\t/* for compression */\n\tAF_QUERY_NATIVE_SAMPWIDTH = 610,\n\tAF_QUERY_SQUISHFAC = 611,\t/* 1.0 means variable */\n\tAF_QUERY_MAX_NUMBER = 612,\t/* max allowed in file */\n\tAF_QUERY_SUPPORTED = 613\t/* insts, loops, etc., supported? */\n};\n\n/* level 2 selectors which have sub-selectors */\nenum\n{\n\tAF_QUERY_TRACKS = 620,\n\tAF_QUERY_CHANNELS = 621,\n\tAF_QUERY_SAMPLE_SIZES = 622,\n\tAF_QUERY_SAMPLE_FORMATS = 623,\n\tAF_QUERY_COMPRESSION_TYPES = 624\n};\n\n/* level 3 sub-selectors */\nenum\n{\n\tAF_QUERY_VALUE_COUNT = 650,\t/* number of values of the above */\n\tAF_QUERY_VALUES = 651\t/* array of those values */\n};\n\n\n/*\n\tOld Audio File Library error codes. These are still returned by the\n\tAFerrorhandler calls, but are not used by the new digital media library\n\terror reporting routines. See the bottom of this file for the new error\n\ttokens.\n*/\n\nenum\n{\n\tAF_BAD_NOT_IMPLEMENTED = 0,\t/* not implemented yet */\n\tAF_BAD_FILEHANDLE = 1,\t/* tried to use invalid filehandle */\n\tAF_BAD_OPEN = 3,\t/* unix open failed */\n\tAF_BAD_CLOSE = 4,\t/* unix close failed */\n\tAF_BAD_READ = 5,\t/* unix read failed */\n\tAF_BAD_WRITE = 6,\t/* unix write failed */\n\tAF_BAD_LSEEK = 7,\t/* unix lseek failed */\n\tAF_BAD_NO_FILEHANDLE = 8,\t/* failed to allocate a filehandle struct */\n\tAF_BAD_ACCMODE = 10,\t/* unrecognized audio file access mode */\n\tAF_BAD_NOWRITEACC = 11,\t/* file not open for writing */\n\tAF_BAD_NOREADACC = 12,\t/* file not open for reading */\n\tAF_BAD_FILEFMT = 13,\t/* unrecognized audio file format */\n\tAF_BAD_RATE = 14,\t/* invalid sample rate */\n\tAF_BAD_CHANNELS = 15,\t/* invalid number of channels*/\n\tAF_BAD_SAMPCNT = 16,\t/* invalid sample count */\n\tAF_BAD_WIDTH = 17,\t/* invalid sample width */\n\tAF_BAD_SEEKMODE = 18,\t/* invalid seek mode */\n\tAF_BAD_NO_LOOPDATA = 19,\t/* failed to allocate loop struct */\n\tAF_BAD_MALLOC = 20,\t/* malloc failed somewhere */\n\tAF_BAD_LOOPID = 21,\n\tAF_BAD_SAMPFMT = 22,\t/* bad sample format */\n\tAF_BAD_FILESETUP = 23,\t/* bad file setup structure*/\n\tAF_BAD_TRACKID = 24,\t/* no track corresponding to id */\n\tAF_BAD_NUMTRACKS = 25,\t/* wrong number of tracks for file format */\n\tAF_BAD_NO_FILESETUP = 26,\t/* failed to allocate a filesetup struct*/\n\tAF_BAD_LOOPMODE = 27,\t/* unrecognized loop mode value */\n\tAF_BAD_INSTID = 28,\t/* invalid instrument id */\n\tAF_BAD_NUMLOOPS = 29,\t/* bad number of loops */\n\tAF_BAD_NUMMARKS = 30,\t/* bad number of markers */\n\tAF_BAD_MARKID = 31,\t/* bad marker id */\n\tAF_BAD_MARKPOS = 32,\t/* invalid marker position value */\n\tAF_BAD_NUMINSTS = 33,\t/* invalid number of instruments */\n\tAF_BAD_NOAESDATA = 34,\n\tAF_BAD_MISCID = 35,\n\tAF_BAD_NUMMISC = 36,\n\tAF_BAD_MISCSIZE = 37,\n\tAF_BAD_MISCTYPE = 38,\n\tAF_BAD_MISCSEEK = 39,\n\tAF_BAD_STRLEN = 40,\t/* invalid string length */\n\tAF_BAD_RATECONV = 45,\n\tAF_BAD_SYNCFILE = 46,\n\tAF_BAD_CODEC_CONFIG = 47,\t/* improperly configured codec */\n\tAF_BAD_CODEC_STATE = 48,\t/* invalid codec state: can't recover */\n\tAF_BAD_CODEC_LICENSE = 49,\t/* no license available for codec */\n\tAF_BAD_CODEC_TYPE = 50,\t/* unsupported codec type */\n\tAF_BAD_COMPRESSION = AF_BAD_CODEC_CONFIG,\t/* for back compat */\n\tAF_BAD_COMPTYPE = AF_BAD_CODEC_TYPE,\t/* for back compat */\n\n\tAF_BAD_INSTPTYPE = 51,\t/* invalid instrument parameter type */\n\tAF_BAD_INSTPID = 52,\t/* invalid instrument parameter id */\n\tAF_BAD_BYTEORDER = 53,\n\tAF_BAD_FILEFMT_PARAM = 54,\t/* unrecognized file format parameter */\n\tAF_BAD_COMP_PARAM = 55,\t/* unrecognized compression parameter */\n\tAF_BAD_DATAOFFSET = 56,\t/* bad data offset */\n\tAF_BAD_FRAMECNT = 57,\t/* bad frame count */\n\tAF_BAD_QUERYTYPE = 58,\t/* bad query type */\n\tAF_BAD_QUERY = 59,\t/* bad argument to afQuery() */\n\tAF_WARNING_CODEC_RATE = 60,\t/* using 8k instead of codec rate 8012 */\n\tAF_WARNING_RATECVT = 61,\t/* warning about rate conversion used */\n\n\tAF_BAD_HEADER = 62,\t/* failed to parse header */\n\tAF_BAD_FRAME = 63,\t/* bad frame number */\n\tAF_BAD_LOOPCOUNT = 64,\t/* bad loop count */\n\tAF_BAD_DMEDIA_CALL = 65,\t/* error in dmedia subsystem call */\n\n\t/* AIFF/AIFF-C specific errors when parsing file header */\n\tAF_BAD_AIFF_HEADER = 108,\t/* failed to parse chunk header */\n\tAF_BAD_AIFF_FORM = 109,\t/* failed to parse FORM chunk */\n\tAF_BAD_AIFF_SSND = 110,\t/* failed to parse SSND chunk */\n\tAF_BAD_AIFF_CHUNKID = 111,\t/* unrecognized AIFF/AIFF-C chunk id */\n\tAF_BAD_AIFF_COMM = 112,\t/* failed to parse COMM chunk */\n\tAF_BAD_AIFF_INST = 113,\t/* failed to parse INST chunk */\n\tAF_BAD_AIFF_MARK = 114,\t/* failed to parse MARK chunk */\n\tAF_BAD_AIFF_SKIP = 115,\t/* failed to skip unsupported chunk */\n\tAF_BAD_AIFF_LOOPMODE = 116\t/* unrecognized loop mode (forw, etc)*/\n};\n\n/* new error codes which may be retrieved via dmGetError() */\n/* The old error tokens continue to be retrievable via the AFerrorhandler */\n/* AF_ERR_BASE is #defined in dmedia/dmedia.h */\n\nenum\n{\n\tAF_ERR_NOT_IMPLEMENTED = 0+AF_ERR_BASE,\t/* not implemented yet */\n\tAF_ERR_BAD_FILEHANDLE = 1+AF_ERR_BASE,\t/* invalid filehandle */\n\tAF_ERR_BAD_READ = 5+AF_ERR_BASE,\t/* unix read failed */\n\tAF_ERR_BAD_WRITE = 6+AF_ERR_BASE,\t/* unix write failed */\n\tAF_ERR_BAD_LSEEK = 7+AF_ERR_BASE,\t/* unix lseek failed */\n\tAF_ERR_BAD_ACCMODE = 10+AF_ERR_BASE,\t/* unrecognized audio file access mode */\n\tAF_ERR_NO_WRITEACC = 11+AF_ERR_BASE,\t/* file not open for writing */\n\tAF_ERR_NO_READACC = 12+AF_ERR_BASE,\t/* file not open for reading */\n\tAF_ERR_BAD_FILEFMT = 13+AF_ERR_BASE,\t/* unrecognized audio file format */\n\tAF_ERR_BAD_RATE = 14+AF_ERR_BASE,\t/* invalid sample rate */\n\tAF_ERR_BAD_CHANNELS = 15+AF_ERR_BASE,\t/* invalid # channels*/\n\tAF_ERR_BAD_SAMPCNT = 16+AF_ERR_BASE,\t/* invalid sample count */\n\tAF_ERR_BAD_WIDTH = 17+AF_ERR_BASE,\t/* invalid sample width */\n\tAF_ERR_BAD_SEEKMODE = 18+AF_ERR_BASE,\t/* invalid seek mode */\n\tAF_ERR_BAD_LOOPID = 21+AF_ERR_BASE,\t/* invalid loop id */\n\tAF_ERR_BAD_SAMPFMT = 22+AF_ERR_BASE,\t/* bad sample format */\n\tAF_ERR_BAD_FILESETUP = 23+AF_ERR_BASE,\t/* bad file setup structure*/\n\tAF_ERR_BAD_TRACKID = 24+AF_ERR_BASE,\t/* no track corresponding to id */\n\tAF_ERR_BAD_NUMTRACKS = 25+AF_ERR_BASE,\t/* wrong number of tracks for file format */\n\tAF_ERR_BAD_LOOPMODE = 27+AF_ERR_BASE,\t/* unrecognized loop mode symbol */\n\tAF_ERR_BAD_INSTID = 28+AF_ERR_BASE,\t/* invalid instrument id */\n\tAF_ERR_BAD_NUMLOOPS = 29+AF_ERR_BASE,\t/* bad number of loops */\n\tAF_ERR_BAD_NUMMARKS = 30+AF_ERR_BASE,\t/* bad number of markers */\n\tAF_ERR_BAD_MARKID = 31+AF_ERR_BASE,\t/* bad marker id */\n\tAF_ERR_BAD_MARKPOS = 32+AF_ERR_BASE,\t/* invalid marker position value */\n\tAF_ERR_BAD_NUMINSTS = 33+AF_ERR_BASE,\t/* invalid number of instruments */\n\tAF_ERR_BAD_NOAESDATA = 34+AF_ERR_BASE,\n\tAF_ERR_BAD_MISCID = 35+AF_ERR_BASE,\n\tAF_ERR_BAD_NUMMISC = 36+AF_ERR_BASE,\n\tAF_ERR_BAD_MISCSIZE = 37+AF_ERR_BASE,\n\tAF_ERR_BAD_MISCTYPE = 38+AF_ERR_BASE,\n\tAF_ERR_BAD_MISCSEEK = 39+AF_ERR_BASE,\n\tAF_ERR_BAD_STRLEN = 40+AF_ERR_BASE,\t/* invalid string length */\n\tAF_ERR_BAD_RATECONV = 45+AF_ERR_BASE,\n\tAF_ERR_BAD_SYNCFILE = 46+AF_ERR_BASE,\n\tAF_ERR_BAD_CODEC_CONFIG = 47+AF_ERR_BASE,\t/* improperly configured codec */\n\tAF_ERR_BAD_CODEC_TYPE = 50+AF_ERR_BASE,\t/* unsupported codec type */\n\tAF_ERR_BAD_INSTPTYPE = 51+AF_ERR_BASE,\t/* invalid instrument parameter type */\n\tAF_ERR_BAD_INSTPID = 52+AF_ERR_BASE,\t/* invalid instrument parameter id */\n\n\tAF_ERR_BAD_BYTEORDER = 53+AF_ERR_BASE,\n\tAF_ERR_BAD_FILEFMT_PARAM = 54+AF_ERR_BASE,\t/* unrecognized file format parameter */\n\tAF_ERR_BAD_COMP_PARAM = 55+AF_ERR_BASE,\t/* unrecognized compression parameter */\n\tAF_ERR_BAD_DATAOFFSET = 56+AF_ERR_BASE,\t/* bad data offset */\n\tAF_ERR_BAD_FRAMECNT = 57+AF_ERR_BASE,\t/* bad frame count */\n\n\tAF_ERR_BAD_QUERYTYPE = 58+AF_ERR_BASE,\t/* bad query type */\n\tAF_ERR_BAD_QUERY = 59+AF_ERR_BASE,\t/* bad argument to afQuery() */\n\tAF_ERR_BAD_HEADER = 62+AF_ERR_BASE,\t/* failed to parse header */\n\tAF_ERR_BAD_FRAME = 63+AF_ERR_BASE,\t/* bad frame number */\n\tAF_ERR_BAD_LOOPCOUNT = 64+AF_ERR_BASE,\t/* bad loop count */\n\n\t/* AIFF/AIFF-C specific errors when parsing file header */\n\n\tAF_ERR_BAD_AIFF_HEADER = 66+AF_ERR_BASE,\t/* failed to parse chunk header */\n\tAF_ERR_BAD_AIFF_FORM = 67+AF_ERR_BASE,\t/* failed to parse FORM chunk */\n\tAF_ERR_BAD_AIFF_SSND = 68+AF_ERR_BASE,\t/* failed to parse SSND chunk */\n\tAF_ERR_BAD_AIFF_CHUNKID = 69+AF_ERR_BASE,\t/* unrecognized AIFF/AIFF-C chunk id */\n\tAF_ERR_BAD_AIFF_COMM = 70+AF_ERR_BASE,\t/* failed to parse COMM chunk */\n\tAF_ERR_BAD_AIFF_INST = 71+AF_ERR_BASE,\t/* failed to parse INST chunk */\n\tAF_ERR_BAD_AIFF_MARK = 72+AF_ERR_BASE,\t/* failed to parse MARK chunk */\n\tAF_ERR_BAD_AIFF_SKIP = 73+AF_ERR_BASE,\t/* failed to skip unsupported chunk */\n\tAF_ERR_BAD_AIFF_LOOPMODE = 74+AF_ERR_BASE\t/* unrecognized loop mode (forw, etc) */\n};\n\n\n/* global routines */\nAFAPI AFerrfunc afSetErrorHandler (AFerrfunc efunc);\n\n/* query routines */\nAFAPI AUpvlist afQuery (int querytype, int arg1, int arg2, int arg3, int arg4);\nAFAPI long afQueryLong (int querytype, int arg1, int arg2, int arg3, int arg4);\nAFAPI double afQueryDouble (int querytype, int arg1, int arg2, int arg3, int arg4);\nAFAPI void *afQueryPointer (int querytype, int arg1, int arg2, int arg3, int arg4);\n\n/* basic operations on file handles and file setups */\nAFAPI AFfilesetup afNewFileSetup (void);\nAFAPI void afFreeFileSetup (AFfilesetup);\nAFAPI int afIdentifyFD (int);\nAFAPI int afIdentifyNamedFD (int, const char *filename, int *implemented);\n\nAFAPI AFfilehandle afOpenFile (const char *filename, const char *mode,\n\tAFfilesetup setup);\nAFAPI AFfilehandle afOpenVirtualFile (AFvirtualfile *vfile, const char *mode,\n\tAFfilesetup setup);\nAFAPI AFfilehandle afOpenFD (int fd, const char *mode, AFfilesetup setup);\nAFAPI AFfilehandle afOpenNamedFD (int fd, const char *mode, AFfilesetup setup,\n\tconst char *filename);\n\nAFAPI void afSaveFilePosition (AFfilehandle file);\nAFAPI void afRestoreFilePosition (AFfilehandle file);\nAFAPI int afSyncFile (AFfilehandle file);\nAFAPI int afCloseFile (AFfilehandle file);\n\nAFAPI void afInitFileFormat (AFfilesetup, int format);\nAFAPI int afGetFileFormat (AFfilehandle, int *version);\n\n/* track */\nAFAPI void afInitTrackIDs (AFfilesetup, const int *trackids, int trackCount);\nAFAPI int afGetTrackIDs (AFfilehandle, int *trackids);\n\n/* track data: reading, writng, seeking, sizing frames */\nAFAPI int afReadFrames (AFfilehandle, int track, void *buffer, int frameCount);\nAFAPI int afWriteFrames (AFfilehandle, int track, const void *buffer, int frameCount);\nAFAPI AFframecount afSeekFrame (AFfilehandle, int track, AFframecount frameoffset);\nAFAPI AFframecount afTellFrame (AFfilehandle, int track);\nAFAPI AFfileoffset afGetTrackBytes (AFfilehandle, int track);\nAFAPI float afGetFrameSize (AFfilehandle, int track, int expand3to4);\nAFAPI float afGetVirtualFrameSize (AFfilehandle, int track, int expand3to4);\n\n/* track data: AES data */\n/* afInitAESChannelData is obsolete -- use afInitAESChannelDataTo() */\nAFAPI void afInitAESChannelData (AFfilesetup, int track); /* obsolete */\nAFAPI void afInitAESChannelDataTo (AFfilesetup, int track, int willBeData);\nAFAPI int afGetAESChannelData (AFfilehandle, int track, unsigned char buf[24]);\nAFAPI void afSetAESChannelData (AFfilehandle, int track, unsigned char buf[24]);\n\n/* track data: byte order */\nAFAPI void afInitByteOrder (AFfilesetup, int track, int byteOrder);\nAFAPI int afGetByteOrder (AFfilehandle, int track);\nAFAPI int afSetVirtualByteOrder (AFfilehandle, int track, int byteOrder);\nAFAPI int afGetVirtualByteOrder (AFfilehandle, int track);\n\n/* track data: number of channels */\nAFAPI void afInitChannels (AFfilesetup, int track, int nchannels);\nAFAPI int afGetChannels (AFfilehandle, int track);\nAFAPI int afSetVirtualChannels (AFfilehandle, int track, int channelCount);\nAFAPI int afGetVirtualChannels (AFfilehandle, int track);\nAFAPI void afSetChannelMatrix (AFfilehandle, int track, double *matrix);\n\n/* track data: sample format and sample width */\nAFAPI void afInitSampleFormat (AFfilesetup, int track, int sampleFormat,\n\tint sampleWidth);\nAFAPI void afGetSampleFormat (AFfilehandle file, int track, int *sampleFormat,\n\tint *sampleWidth);\nAFAPI int afSetVirtualSampleFormat (AFfilehandle, int track,\n\tint sampleFormat, int sampleWidth);\nAFAPI void afGetVirtualSampleFormat (AFfilehandle, int track,\n\tint *sampleFormat, int *sampleWidth);\n\n/* track data: sampling rate */\nAFAPI void afInitRate (AFfilesetup, int track, double rate);\nAFAPI double afGetRate (AFfilehandle, int track);\n\n#if 0\nint afSetVirtualRate (AFfilehandle, int track, double rate);\ndouble afGetVirtualRate (AFfilehandle, int track);\n#endif\n\n/* track data: compression */\nAFAPI void afInitCompression (AFfilesetup, int track, int compression);\n#if 0\nvoid afInitCompressionParams (AFfilesetup, int track, int compression\n\tAUpvlist params, int parameterCount);\n#endif\n\nAFAPI int afGetCompression (AFfilehandle, int track);\n#if 0\nvoid afGetCompressionParams (AFfilehandle, int track, int *compression,\n\tAUpvlist params, int parameterCount);\n\nint afSetVirtualCompression (AFfilesetup, int track, int compression);\nvoid afSetVirtualCompressionParams (AFfilehandle, int track, int compression,\n\tAUpvlist params, int parameterCount);\n\nint afGetVirtualCompression (AFfilesetup, int track, int compression);\nvoid afGetVirtualCompressionParams (AFfilehandle, int track, int *compression,\n\tAUpvlist params, int parameterCount);\n#endif\n\n/* track data: pcm mapping */\nAFAPI void afInitPCMMapping (AFfilesetup filesetup, int track,\n\tdouble slope, double intercept, double minClip, double maxClip);\nAFAPI void afGetPCMMapping (AFfilehandle file, int track,\n\tdouble *slope, double *intercept, double *minClip, double *maxClip);\n/* NOTE: afSetTrackPCMMapping() is special--it does not set the virtual  */\n/* format; it changes what the AF thinks the track format is! Be careful. */\nAFAPI int afSetTrackPCMMapping (AFfilehandle file, int track,\n\tdouble slope, double intercept, double minClip, double maxClip);\n/* NOTE: afSetVirtualPCMMapping() is different from afSetTrackPCMMapping(): */\n/* see comment for afSetTrackPCMMapping(). */\nAFAPI int afSetVirtualPCMMapping (AFfilehandle file, int track,\n\tdouble slope, double intercept, double minClip, double maxClip);\nAFAPI void afGetVirtualPCMMapping (AFfilehandle file, int track,\n\tdouble *slope, double *intercept, double *minClip, double *maxClip);\n\n/* track data: data offset within the file */\n/* initialize for raw reading only */\nAFAPI void afInitDataOffset(AFfilesetup, int track, AFfileoffset offset);\nAFAPI AFfileoffset afGetDataOffset (AFfilehandle, int track);\n\n/* track data: count of frames in file */\nAFAPI void afInitFrameCount (AFfilesetup, int track, AFframecount frameCount);\nAFAPI AFframecount afGetFrameCount (AFfilehandle file, int track);\n\n/* loop operations */\nAFAPI void afInitLoopIDs (AFfilesetup, int instid, const int *ids, int nids);\nAFAPI int afGetLoopIDs (AFfilehandle, int instid, int loopids[]);\nAFAPI void afSetLoopMode (AFfilehandle, int instid, int loop, int mode);\nAFAPI int afGetLoopMode (AFfilehandle, int instid, int loopid);\nAFAPI int afSetLoopCount (AFfilehandle, int instid, int loop, int count);\nAFAPI int afGetLoopCount (AFfilehandle, int instid, int loopid);\nAFAPI void afSetLoopStart (AFfilehandle, int instid, int loopid, int markerid);\nAFAPI int afGetLoopStart (AFfilehandle, int instid, int loopid);\nAFAPI void afSetLoopEnd (AFfilehandle, int instid, int loopid, int markerid);\nAFAPI int afGetLoopEnd (AFfilehandle, int instid, int loopid);\n\nAFAPI int afSetLoopStartFrame (AFfilehandle, int instid, int loop,\n\tAFframecount startFrame);\nAFAPI AFframecount afGetLoopStartFrame (AFfilehandle, int instid, int loop);\nAFAPI int afSetLoopEndFrame (AFfilehandle, int instid, int loop,\n\tAFframecount startFrame);\nAFAPI AFframecount afGetLoopEndFrame (AFfilehandle, int instid, int loop);\n\nAFAPI void afSetLoopTrack (AFfilehandle, int instid, int loopid, int trackid);\nAFAPI int afGetLoopTrack (AFfilehandle, int instid, int loopid);\n\n/* marker operations */\nAFAPI void afInitMarkIDs (AFfilesetup, int trackid, const int *ids, int nids);\nAFAPI int afGetMarkIDs (AFfilehandle file, int trackid, int markids[]);\nAFAPI void afSetMarkPosition (AFfilehandle file, int trackid, int markid,\n\tAFframecount markpos);\nAFAPI AFframecount afGetMarkPosition (AFfilehandle file, int trackid, int markid);\nAFAPI void afInitMarkName (AFfilesetup, int trackid, int marker, const char *name);\nAFAPI void afInitMarkComment (AFfilesetup, int trackid, int marker,\n\tconst char *comment);\nAFAPI char *afGetMarkName (AFfilehandle file, int trackid, int markid);\nAFAPI char *afGetMarkComment (AFfilehandle file, int trackid, int markid);\n\n/* instrument operations */\nAFAPI void afInitInstIDs (AFfilesetup, const int *ids, int nids);\nAFAPI int afGetInstIDs (AFfilehandle file, int *instids);\nAFAPI void afGetInstParams (AFfilehandle file, int instid, AUpvlist pvlist,\n\tint nparams);\nAFAPI void afSetInstParams (AFfilehandle file, int instid, AUpvlist pvlist,\n\tint nparams);\nAFAPI long afGetInstParamLong (AFfilehandle file, int instid, int param);\nAFAPI void afSetInstParamLong (AFfilehandle file, int instid, int param, long value);\n\n/* miscellaneous data operations */\nAFAPI void afInitMiscIDs (AFfilesetup, const int *ids, int nids);\nAFAPI int afGetMiscIDs (AFfilehandle, int *ids);\nAFAPI void afInitMiscType (AFfilesetup, int miscellaneousid, int type);\nAFAPI int afGetMiscType (AFfilehandle, int miscellaneousid);\nAFAPI void afInitMiscSize (AFfilesetup, int miscellaneousid, int size);\nAFAPI int afGetMiscSize (AFfilehandle, int miscellaneousid);\nAFAPI int afWriteMisc (AFfilehandle, int miscellaneousid, const void *buf, int bytes);\nAFAPI int afReadMisc (AFfilehandle, int miscellaneousid, void *buf, int bytes);\nAFAPI int afSeekMisc (AFfilehandle, int miscellaneousid, int offset);\n\n#undef AFAPI\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* AUDIOFILE_H */\n"
  },
  {
    "path": "tools/audiofile/aupvlist.h",
    "content": "/*\n\tAudio File Library\n\tCopyright (C) 1998-2000, Michael Pruett <michael@68k.org>\n\n\tThis library is free software; you can redistribute it and/or\n\tmodify it under the terms of the GNU Lesser General Public\n\tLicense as published by the Free Software Foundation; either\n\tversion 2.1 of the License, or (at your option) any later version.\n\n\tThis library is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n\tLesser General Public License for more details.\n\n\tYou should have received a copy of the GNU Lesser General Public\n\tLicense along with this library; if not, write to the\n\tFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor,\n\tBoston, MA  02110-1301  USA\n*/\n\n/*\n\taupvlist.h\n\n\tThis file contains the interface to the parameter value list data\n\tstructures and routines.\n*/\n\n#ifndef AUPVLIST_H\n#define AUPVLIST_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#if (defined(__GNUC__) && __GNUC__ >= 4) || defined(__clang__)\n#define AFAPI __attribute__((visibility(\"default\")))\n#else\n#define AFAPI\n#endif\n\nenum\n{\n\tAU_PVTYPE_LONG = 1,\n\tAU_PVTYPE_DOUBLE = 2,\n\tAU_PVTYPE_PTR = 3\n};\n\ntypedef struct _AUpvlist *AUpvlist;\n\n#define AU_NULL_PVLIST ((struct _AUpvlist *) 0)\n\nAFAPI AUpvlist AUpvnew (int maxItems);\nAFAPI int AUpvgetmaxitems (AUpvlist);\nAFAPI int AUpvfree (AUpvlist);\nAFAPI int AUpvsetparam (AUpvlist, int item, int param);\nAFAPI int AUpvsetvaltype (AUpvlist, int item, int type);\nAFAPI int AUpvsetval (AUpvlist, int item, void *val);\nAFAPI int AUpvgetparam (AUpvlist, int item, int *param);\nAFAPI int AUpvgetvaltype (AUpvlist, int item, int *type);\nAFAPI int AUpvgetval (AUpvlist, int item, void *val);\n\n#undef AFAPI\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* AUPVLIST_H */\n"
  },
  {
    "path": "tools/calc_bss.sh",
    "content": "#!/bin/bash\n# Given a list of header files, compute the bss index that results from\n# including them. (See prevent_bss_reordering.h for more information.)\n\nTEMPC=$(mktemp -t bss.XXXXXXX.c)\nTEMPO=$(mktemp -t bss.XXXXXXX.o)\ntrap \"rm -f $TEMPC $TEMPO\" EXIT\n\nset -e\n\nif [[ $# = 0 ]]; then\n    echo \"Usage: ./tools/calc_bss.sh file1.h file2.h ...\" >&2\n    exit 1\nfi\n\nif [ -z \"$QEMU_IRIX\" ]; then\n    echo \"env variable QEMU_IRIX should point to the qemu-mips binary\" >&2\n    exit 1\nfi\n\nif [ -z \"$CROSS\" ]; then\n    CROSS=mips-linux-gnu-\nfi\n\n# bss indexing starts at 3\nfor I in {3..255}; do\n    echo \"char bss$I;\" >> $TEMPC\ndone\nfor I in {0..2}; do\n    echo \"char bss$I;\" >> $TEMPC\ndone\n\nwhile [[ $# -gt 0 ]]; do\n    echo \"#include \\\"$1\\\"\" >> $TEMPC\n    shift\ndone\n\necho \"char measurement;\" >> $TEMPC\n\n$QEMU_IRIX -silent -L $IRIX_ROOT $IRIX_ROOT/usr/bin/cc -c -non_shared -G 0 \\\n    -g -Xcpluscomm -mips2 -I $(pwd)/include/ $TEMPC -o $TEMPO\n\nLINE=$(${CROSS}objdump -t $TEMPO | grep measurement | cut -d' ' -f1)\nNUM=$((0x$LINE - 1))\necho \"bss index: $NUM\"\n"
  },
  {
    "path": "tools/clang-tidy.sh",
    "content": "#!/usr/bin/env bash\n\n# Use clang-tidy to brace if statements and loops. This should be a feature of clang-format.\n# The brace check is the only check being applied right now, \n# but other checks (like naming scheme) may be added at a later time. \n\n# '--fix-errors` due to generated text_strings.h as well as the enhancement inc.c files\nTIDY_OPTS=\"-p . --fix --fix-errors\" \nCOMPILER_OPTS=\"-nostdinc -fno-builtin -std=gnu90 -Iinclude -Isrc -D_LANGUAGE_C\"\nVERSIONS=\"-DVERSION_US -DVERSION_JP -DVERSION_EU\"\n\n# run script from the root of the repository\ncd \"$( dirname $0 )\" >/dev/null 2>&1; cd ../\n\nif (( $# > 0 )); then\n    printf \"Tidy file(s) $*\"\n    echo\n    for VER in ${VERSIONS}; do  \n        echo \"with compiler version flag ${VER}\"\n        clang-tidy ${TIDY_OPTS} \"$@\" -- ${COMPILER_OPTS} ${VER}\n    done\n    printf \"Done tidying file(s) $*\"\n    echo\n    exit\nfi\n\necho \"Tidying all C files for all versions. This will take a bit\"\nfor VER in ${VERSIONS}; do  \n        echo \"Tidying for compiler version flag ${VER}\"\n        # Don't run clang-tidy on behaviors\n        clang-tidy ${TIDY_OPTS} src/audio/*.c -- ${COMPILER_OPTS} ${VER}\n        clang-tidy ${TIDY_OPTS} src/engine/*.c -- ${COMPILER_OPTS} ${VER}\n        clang-tidy ${TIDY_OPTS} src/game/*.c -- ${COMPILER_OPTS} ${VER}\n        clang-tidy ${TIDY_OPTS} src/goddard/*.c -- ${COMPILER_OPTS} ${VER}\n        clang-tidy ${TIDY_OPTS} lib/src/*.c -- ${COMPILER_OPTS} ${VER}\n        clang-tidy ${TIDY_OPTS} enhancements/*.inc.c -- ${COMPILER_OPTS} ${VER}\ndone\necho \"Done tidying all C files. Hope you did something fun during the tidying\"\n"
  },
  {
    "path": "tools/create_patch.sh",
    "content": "#!/bin/sh\n#\n# create_patch.sh - Creates an enhancement patch based on the current Git changes\n#\n\nif [ \"$#\" -ne 1 ]\nthen\n    echo \"Usage: $0 patch_file\"\n    echo '    Creates a patch file based on the changes made to the current directory'\n    exit 1\nfi\n\n# Make sure this is a git repository\nif [ ! -d .git ]\nthen\n    echo 'Error: The current directory is not a Git repository.'\n    exit 1\nfi\n\n# 'git diff' is stupid and doesn't show new untracked files, so we must add them first.\ngit add .\n# Generate the patch.\ngit diff -p --staged > \"$1\"\n# Undo the 'git add'.\ngit reset\n"
  },
  {
    "path": "tools/demo_data_converter.py",
    "content": "#!/usr/bin/env python3\nimport sys\nimport re\nimport json\n\ndef main():\n    need_help = False\n    defines = []\n    skip_next = 0\n    prog_args = []\n    for i, a in enumerate(sys.argv[1:], 1):\n        if skip_next > 0:\n            skip_next -= 1\n            continue\n        if a == \"--help\" or a == \"-h\":\n            need_help = True\n        if a == \"-D\":\n            defines.append(sys.argv[i + 1])\n            skip_next = 1\n        elif a.startswith(\"-D\"):\n            defines.append(a[2:])\n        else:\n            prog_args.append(a)\n\n    defines = [d.split(\"=\")[0] for d in defines]\n    \n    if len(prog_args) < 1 or need_help:\n        print(\"Usage: {} <demo_data.json> [-D <symbol>] > <demo_data.c>\".format(sys.argv[0]))\n        sys.exit(0 if need_help else 1)\n\n    with open(prog_args[0], \"r\") as file:\n        descr = json.loads(re.sub(r\"/\\*[\\w\\W]*?\\*/\", \"\", file.read()))\n\n    table = []\n    for item in descr[\"table\"]:\n        if not \"ifdef\" in item or any(d in defines for d in item[\"ifdef\"]):\n            table.append(item)\n\n    demofiles = []\n    for item in descr[\"demofiles\"]:\n        if not \"ifdef\" in item or any(d in defines for d in item[\"ifdef\"]):\n            demofiles.append(item)\n\n    structdef = [\"u32 numEntries;\",\n                 \"const void *addrPlaceholder;\",\n                 \"struct OffsetSizePair entries[\" + str(len(table)) + \"];\"]\n    structobj = [str(len(table)) + \",\",\n                 \"NULL,\"]\n\n    structobj.append(\"{\")\n    for item in table:\n        offset_to_data = \"offsetof(struct DemoInputsObj, \" + item[\"demofile\"] + \")\"\n        size = \"sizeof(gDemoInputs.\" + item[\"demofile\"] + \")\"\n        if \"extraSize\" in item:\n            size += \" + \" + str(item[\"extraSize\"])\n        structobj.append(\"{\" + offset_to_data + \", \" + size + \"},\")\n    structobj.append(\"},\")\n\n    for item in demofiles:\n        with open(\"assets/demos/\" + item[\"name\"] + \".bin\", \"rb\") as file:\n            demobytes = file.read()\n        structdef.append(\"u8 \" + item[\"name\"] + \"[\" + str(len(demobytes)) + \"];\")\n        structobj.append(\"{\" + \",\".join(hex(x) for x in demobytes) + \"},\")\n\n    print(\"#include \\\"game/memory.h\\\"\")\n    print(\"#include <stddef.h>\")\n    print(\"\")\n\n    print(\"struct DemoInputsObj {\")\n    for s in structdef:\n        print(s)\n    print(\"} gDemoInputs = {\")\n    for s in structobj:\n        print(s)\n    print(\"};\")\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "tools/determine-endian-bitwidth.c",
    "content": "#include \"platform_info.h\"\n\n#if IS_BIG_ENDIAN && IS_64_BIT\n#error msgbegin --endian big --bitwidth 64 msgend\n#elif IS_BIG_ENDIAN && !IS_64_BIT\n#error msgbegin --endian big --bitwidth 32 msgend\n#elif !IS_BIG_ENDIAN && IS_64_BIT\n#error msgbegin --endian little --bitwidth 64 msgend\n#else\n#error msgbegin --endian little --bitwidth 32 msgend\n#endif\n"
  },
  {
    "path": "tools/disassemble_sound.py",
    "content": "#!/usr/bin/env python3\nfrom collections import namedtuple, defaultdict\nimport tempfile\nimport subprocess\nimport uuid\nimport json\nimport os\nimport re\nimport struct\nimport sys\n\nTYPE_CTL = 1\nTYPE_TBL = 2\n\n\nclass AifcEntry:\n    def __init__(self, data, book, loop):\n        self.name = None\n        self.data = data\n        self.book = book\n        self.loop = loop\n        self.tunings = []\n\n\nclass SampleBank:\n    def __init__(self, name, data, offset):\n        self.offset = offset\n        self.name = name\n        self.data = data\n        self.entries = {}\n\n    def add_sample(self, offset, sample_size, book, loop):\n        assert sample_size % 2 == 0\n        if sample_size % 9 != 0:\n            assert sample_size % 9 == 1\n            sample_size -= 1\n\n        if offset in self.entries:\n            entry = self.entries[offset]\n            assert entry.book == book\n            assert entry.loop == loop\n            assert len(entry.data) == sample_size\n        else:\n            entry = AifcEntry(self.data[offset : offset + sample_size], book, loop)\n            self.entries[offset] = entry\n\n        return entry\n\n\nSound = namedtuple(\"Sound\", [\"sample_addr\", \"tuning\"])\nDrum = namedtuple(\"Drum\", [\"name\", \"addr\", \"release_rate\", \"pan\", \"envelope\", \"sound\"])\nInst = namedtuple(\n    \"Inst\",\n    [\n        \"name\",\n        \"addr\",\n        \"release_rate\",\n        \"normal_range_lo\",\n        \"normal_range_hi\",\n        \"envelope\",\n        \"sound_lo\",\n        \"sound_med\",\n        \"sound_hi\",\n    ],\n)\nBook = namedtuple(\"Book\", [\"order\", \"npredictors\", \"table\"])\nLoop = namedtuple(\"Loop\", [\"start\", \"end\", \"count\", \"state\"])\nEnvelope = namedtuple(\"Envelope\", [\"name\", \"entries\"])\nBank = namedtuple(\n    \"Bank\",\n    [\n        \"name\",\n        \"iso_date\",\n        \"sample_bank\",\n        \"insts\",\n        \"drums\",\n        \"all_insts\",\n        \"inst_list\",\n        \"envelopes\",\n        \"samples\",\n    ],\n)\n\n\ndef align(val, al):\n    return (val + (al - 1)) & -al\n\n\nname_tbl = {}\n\n\ndef gen_name(prefix, name_table=[]):\n    if prefix not in name_tbl:\n        name_tbl[prefix] = 0\n    ind = name_tbl[prefix]\n    name_tbl[prefix] += 1\n    if ind < len(name_table):\n        return name_table[ind]\n    return prefix + str(ind)\n\n\ndef parse_bcd(data):\n    ret = 0\n    for c in data:\n        ret *= 10\n        ret += c >> 4\n        ret *= 10\n        ret += c & 15\n    return ret\n\n\ndef serialize_f80(num):\n    num = float(num)\n    (f64,) = struct.unpack(\">Q\", struct.pack(\">d\", num))\n    f64_sign_bit = f64 & 2 ** 63\n    if num == 0.0:\n        if f64_sign_bit:\n            return b\"\\x80\" + b\"\\0\" * 9\n        else:\n            return b\"\\0\" * 10\n    exponent = (f64 ^ f64_sign_bit) >> 52\n    assert exponent != 0, \"can't handle denormals\"\n    assert exponent != 0x7FF, \"can't handle infinity/nan\"\n    exponent -= 1023\n    f64_mantissa_bits = f64 & (2 ** 52 - 1)\n    f80_sign_bit = f64_sign_bit << (80 - 64)\n    f80_exponent = (exponent + 0x3FFF) << 64\n    f80_mantissa_bits = 2 ** 63 | (f64_mantissa_bits << (63 - 52))\n    f80 = f80_sign_bit | f80_exponent | f80_mantissa_bits\n    return struct.pack(\">HQ\", f80 >> 64, f80 & (2 ** 64 - 1))\n\n\ndef round_f32(num):\n    enc = struct.pack(\">f\", num)\n    for decimals in range(5, 20):\n        num2 = round(num, decimals)\n        if struct.pack(\">f\", num2) == enc:\n            return num2\n    return num\n\n\ndef parse_sound(data):\n    sample_addr, tuning = struct.unpack(\">If\", data)\n    if sample_addr == 0:\n        assert tuning == 0\n        return None\n    return Sound(sample_addr, tuning)\n\n\ndef parse_drum(data, addr):\n    name = gen_name(\"drum\")\n    release_rate, pan, loaded, pad = struct.unpack(\">BBBB\", data[:4])\n    assert loaded == 0\n    assert pad == 0\n    sound = parse_sound(data[4:12])\n    (env_addr,) = struct.unpack(\">I\", data[12:])\n    assert env_addr != 0\n    return Drum(name, addr, release_rate, pan, env_addr, sound)\n\n\ndef parse_inst(data, addr):\n    name = gen_name(\"inst\")\n    loaded, normal_range_lo, normal_range_hi, release_rate, env_addr = struct.unpack(\n        \">BBBBI\", data[:8]\n    )\n    assert env_addr != 0\n    sound_lo = parse_sound(data[8:16])\n    sound_med = parse_sound(data[16:24])\n    sound_hi = parse_sound(data[24:])\n    if sound_lo is None:\n        assert normal_range_lo == 0\n    if sound_hi is None:\n        assert normal_range_hi == 127\n    return Inst(\n        name,\n        addr,\n        release_rate,\n        normal_range_lo,\n        normal_range_hi,\n        env_addr,\n        sound_lo,\n        sound_med,\n        sound_hi,\n    )\n\n\ndef parse_loop(addr, bank_data):\n    start, end, count, pad = struct.unpack(\">IIiI\", bank_data[addr : addr + 16])\n    assert pad == 0\n    if count != 0:\n        state = struct.unpack(\">16h\", bank_data[addr + 16 : addr + 48])\n    else:\n        state = None\n    return Loop(start, end, count, state)\n\n\ndef parse_book(addr, bank_data):\n    order, npredictors = struct.unpack(\">ii\", bank_data[addr : addr + 8])\n    assert order == 2\n    assert npredictors == 2\n    table_data = bank_data[addr + 8 : addr + 8 + 16 * order * npredictors]\n    table = []\n    for i in range(0, 16 * order * npredictors, 2):\n        table.append(struct.unpack(\">h\", table_data[i : i + 2])[0])\n    return Book(order, npredictors, table)\n\n\ndef parse_sample(data, bank_data, sample_bank, is_shindou):\n    if is_shindou:\n        sample_size, addr, loop, book = struct.unpack(\">IIII\", data)\n    else:\n        zero, addr, loop, book, sample_size = struct.unpack(\">IIIII\", data)\n        assert zero == 0\n    assert loop != 0\n    assert book != 0\n    loop = parse_loop(loop, bank_data)\n    book = parse_book(book, bank_data)\n    return sample_bank.add_sample(addr, sample_size, book, loop)\n\n\ndef parse_envelope(addr, data_bank):\n    entries = []\n    while True:\n        delay, arg = struct.unpack(\">HH\", data_bank[addr : addr + 4])\n        entries.append((delay, arg))\n        addr += 4\n        if 1 <= (-delay) % 2 ** 16 <= 3:\n            break\n    return entries\n\n\ndef parse_ctl_header(header):\n    num_instruments, num_drums, shared = struct.unpack(\">III\", header[:12])\n    date = parse_bcd(header[12:])\n    y = date // 10000\n    m = date // 100 % 100\n    d = date % 100\n    iso_date = \"{:02}-{:02}-{:02}\".format(y, m, d)\n    assert shared in [0, 1]\n    return num_instruments, num_drums, iso_date\n\n\ndef parse_ctl(parsed_header, data, sample_bank, index, is_shindou):\n    name_tbl.clear()\n    name = \"{:02X}\".format(index)\n    num_instruments, num_drums, iso_date = parsed_header\n    # print(\"{}: {}, {} + {}\".format(name, iso_date, num_instruments, num_drums))\n\n    (drum_base_addr,) = struct.unpack(\">I\", data[:4])\n    drum_addrs = []\n    if num_drums != 0:\n        assert drum_base_addr != 0\n        for i in range(num_drums):\n            (drum_addr,) = struct.unpack(\n                \">I\", data[drum_base_addr + i * 4 : drum_base_addr + i * 4 + 4]\n            )\n            assert drum_addr != 0\n            drum_addrs.append(drum_addr)\n    else:\n        assert drum_base_addr == 0\n\n    inst_base_addr = 4\n    inst_addrs = []\n    inst_list = []\n    for i in range(num_instruments):\n        (inst_addr,) = struct.unpack(\n            \">I\", data[inst_base_addr + i * 4 : inst_base_addr + i * 4 + 4]\n        )\n        if inst_addr == 0:\n            inst_list.append(None)\n        else:\n            inst_list.append(inst_addr)\n            inst_addrs.append(inst_addr)\n\n    inst_addrs.sort()\n    assert drum_addrs == sorted(drum_addrs)\n    if drum_addrs and inst_addrs:\n        assert max(inst_addrs) < min(drum_addrs)\n\n    assert len(set(inst_addrs)) == len(inst_addrs)\n    assert len(set(drum_addrs)) == len(drum_addrs)\n\n    insts = []\n    for inst_addr in inst_addrs:\n        insts.append(parse_inst(data[inst_addr : inst_addr + 32], inst_addr))\n\n    drums = []\n    for drum_addr in drum_addrs:\n        drums.append(parse_drum(data[drum_addr : drum_addr + 16], drum_addr))\n\n    env_addrs = set()\n    sample_addrs = set()\n    tunings = defaultdict(lambda: [])\n    for inst in insts:\n        for sound in [inst.sound_lo, inst.sound_med, inst.sound_hi]:\n            if sound is not None:\n                sample_addrs.add(sound.sample_addr)\n                tunings[sound.sample_addr].append(sound.tuning)\n        env_addrs.add(inst.envelope)\n    for drum in drums:\n        sample_addrs.add(drum.sound.sample_addr)\n        tunings[drum.sound.sample_addr].append(drum.sound.tuning)\n        env_addrs.add(drum.envelope)\n\n    # Put drums somewhere in the middle of the instruments to make sample\n    # addresses come in increasing order. (This logic isn't totally right,\n    # but it works for our purposes.)\n    all_insts = []\n    need_drums = len(drums) > 0\n    for inst in insts:\n        if need_drums and any(\n            s.sample_addr > drums[0].sound.sample_addr\n            for s in [inst.sound_lo, inst.sound_med, inst.sound_hi]\n            if s is not None\n        ):\n            all_insts.append(drums)\n            need_drums = False\n        all_insts.append(inst)\n\n    if need_drums:\n        all_insts.append(drums)\n\n    samples = {}\n    for addr in sorted(sample_addrs):\n        sample_size = 16 if is_shindou else 20\n        sample_data = data[addr : addr + sample_size]\n        samples[addr] = parse_sample(sample_data, data, sample_bank, is_shindou)\n        samples[addr].tunings.extend(tunings[addr])\n\n    env_data = {}\n    used_env_addrs = set()\n    for addr in sorted(env_addrs):\n        env = parse_envelope(addr, data)\n        env_data[addr] = env\n        for i in range(align(len(env), 4)):\n            used_env_addrs.add(addr + i * 4)\n\n    # Unused envelopes\n    unused_envs = set()\n    if used_env_addrs:\n        for addr in range(min(used_env_addrs) + 4, max(used_env_addrs), 4):\n            if addr not in used_env_addrs:\n                unused_envs.add(addr)\n                (stub_marker,) = struct.unpack(\">I\", data[addr : addr + 4])\n                assert stub_marker == 0\n                env = parse_envelope(addr, data)\n                env_data[addr] = env\n                for i in range(align(len(env), 4)):\n                    used_env_addrs.add(addr + i * 4)\n\n    envelopes = {}\n    for addr in sorted(env_data.keys()):\n        env_name = gen_name(\"envelope\")\n        if addr in unused_envs:\n            env_name += \"_unused\"\n        envelopes[addr] = Envelope(env_name, env_data[addr])\n\n    return Bank(\n        name,\n        iso_date,\n        sample_bank,\n        insts,\n        drums,\n        all_insts,\n        inst_list,\n        envelopes,\n        samples,\n    )\n\n\ndef parse_seqfile(data, filetype):\n    magic, num_entries = struct.unpack(\">HH\", data[:4])\n    assert magic == filetype\n    prev = align(4 + num_entries * 8, 16)\n    entries = []\n    for i in range(num_entries):\n        offset, length = struct.unpack(\">II\", data[4 + i * 8 : 4 + i * 8 + 8])\n        if filetype == TYPE_CTL:\n            assert offset == prev\n        else:\n            assert offset <= prev\n        prev = max(prev, offset + length)\n        entries.append((offset, length))\n    assert all(x == 0 for x in data[prev:])\n    return entries\n\n\ndef parse_sh_header(data, filetype):\n    (num_entries,) = struct.unpack(\">H\", data[:2])\n    assert data[2:16] == b\"\\0\" * 14\n    prev = 0\n    entries = []\n    for i in range(num_entries):\n        subdata = data[16 + 16 * i : 32 + 16 * i]\n        offset, length, magic = struct.unpack(\">IIH\", subdata[:10])\n        assert offset == prev\n        assert magic == (0x0204 if filetype == TYPE_TBL else 0x0203)\n        prev = offset + length\n        if filetype == TYPE_CTL:\n            assert subdata[14:16] == b\"\\0\" * 2\n            sample_bank_index, magic2, num_instruments, num_drums = struct.unpack(\n                \">BBBB\", subdata[10:14]\n            )\n            assert magic2 == 0xFF\n            entries.append(\n                (offset, length, (sample_bank_index, num_instruments, num_drums))\n            )\n        else:\n            assert subdata[10:16] == b\"\\0\" * 6\n            entries.append((offset, length))\n    return entries\n\n\ndef parse_tbl(data, entries):\n    seen = {}\n    tbls = []\n    sample_banks = []\n    sample_bank_map = {}\n    for (offset, length) in entries:\n        if offset not in seen:\n            name = gen_name(\"sample_bank\")\n            seen[offset] = name\n            sample_bank = SampleBank(name, data[offset : offset + length], offset)\n            sample_banks.append(sample_bank)\n            sample_bank_map[name] = sample_bank\n        tbls.append(seen[offset])\n    return tbls, sample_banks, sample_bank_map\n\n\nclass AifcWriter:\n    def __init__(self, out):\n        self.out = out\n        self.sections = []\n        self.total_size = 0\n\n    def add_section(self, tp, data):\n        assert isinstance(tp, bytes)\n        assert isinstance(data, bytes)\n        self.sections.append((tp, data))\n        self.total_size += align(len(data), 2) + 8\n\n    def add_custom_section(self, tp, data):\n        self.add_section(b\"APPL\", b\"stoc\" + self.pstring(tp) + data)\n\n    def pstring(self, data):\n        return bytes([len(data)]) + data + (b\"\" if len(data) % 2 else b\"\\0\")\n\n    def finish(self):\n        # total_size isn't used, and is regularly wrong. In particular, vadpcm_enc\n        # preserves the size of the input file...\n        self.total_size += 4\n        self.out.write(b\"FORM\" + struct.pack(\">I\", self.total_size) + b\"AIFC\")\n        for (tp, data) in self.sections:\n            self.out.write(tp + struct.pack(\">I\", len(data)))\n            self.out.write(data)\n            if len(data) % 2:\n                self.out.write(b\"\\0\")\n\n\ndef write_aifc(entry, out):\n    writer = AifcWriter(out)\n    num_channels = 1\n    data = entry.data\n    assert len(data) % 9 == 0\n    if len(data) % 2 == 1:\n        data += b\"\\0\"\n    # (Computing num_frames this way makes it off by one when the data length\n    # is odd. It matches vadpcm_enc, though.)\n    num_frames = len(data) * 16 // 9\n    sample_size = 16  # bits per sample\n\n    if len(set(entry.tunings)) == 1:\n        sample_rate = 32000 * entry.tunings[0]\n    else:\n        # Some drum sounds in sample bank B don't have unique sample rates, so\n        # we have to guess. This doesn't matter for matching, it's just to make\n        # the sounds easy to listen to.\n        if min(entry.tunings) <= 0.5 <= max(entry.tunings):\n            sample_rate = 16000\n        elif min(entry.tunings) <= 1.0 <= max(entry.tunings):\n            sample_rate = 32000\n        elif min(entry.tunings) <= 1.5 <= max(entry.tunings):\n            sample_rate = 48000\n        elif min(entry.tunings) <= 2.5 <= max(entry.tunings):\n            sample_rate = 80000\n        else:\n            sample_rate = 16000 * (min(entry.tunings) + max(entry.tunings))\n\n    writer.add_section(\n        b\"COMM\",\n        struct.pack(\">hIh\", num_channels, num_frames, sample_size)\n        + serialize_f80(sample_rate)\n        + b\"VAPC\"\n        + writer.pstring(b\"VADPCM ~4-1\"),\n    )\n    writer.add_section(b\"INST\", b\"\\0\" * 20)\n    table_data = b\"\".join(struct.pack(\">h\", x) for x in entry.book.table)\n    writer.add_custom_section(\n        b\"VADPCMCODES\",\n        struct.pack(\">hhh\", 1, entry.book.order, entry.book.npredictors) + table_data,\n    )\n    writer.add_section(b\"SSND\", struct.pack(\">II\", 0, 0) + data)\n    if entry.loop.count != 0:\n        writer.add_custom_section(\n            b\"VADPCMLOOPS\",\n            struct.pack(\n                \">HHIIi16h\",\n                1,\n                1,\n                entry.loop.start,\n                entry.loop.end,\n                entry.loop.count,\n                *entry.loop.state\n            ),\n        )\n    writer.finish()\n\n\ndef write_aiff(entry, filename):\n    temp = tempfile.NamedTemporaryFile(suffix=\".aifc\", delete=False)\n    try:\n        write_aifc(entry, temp)\n        temp.flush()\n        temp.close()\n        aifc_decode = os.path.join(os.path.dirname(__file__), \"aifc_decode\")\n        subprocess.run([aifc_decode, temp.name, filename], check=True)\n    finally:\n        temp.close()\n        os.remove(temp.name)\n\n\n# Modified from https://stackoverflow.com/a/25935321/1359139, cc by-sa 3.0\nclass NoIndent(object):\n    def __init__(self, value):\n        self.value = value\n\n\nclass NoIndentEncoder(json.JSONEncoder):\n    def __init__(self, *args, **kwargs):\n        super(NoIndentEncoder, self).__init__(*args, **kwargs)\n        self._replacement_map = {}\n\n    def default(self, o):\n        def ignore_noindent(o):\n            if isinstance(o, NoIndent):\n                return o.value\n            return self.default(o)\n\n        if isinstance(o, NoIndent):\n            key = uuid.uuid4().hex\n            self._replacement_map[key] = json.dumps(o.value, default=ignore_noindent)\n            return \"@@%s@@\" % (key,)\n        else:\n            return super(NoIndentEncoder, self).default(o)\n\n    def encode(self, o):\n        result = super(NoIndentEncoder, self).encode(o)\n        repl_map = self._replacement_map\n\n        def repl(m):\n            key = m.group()[3:-3]\n            return repl_map[key]\n\n        return re.sub(r\"\\\"@@[0-9a-f]*?@@\\\"\", repl, result)\n\n\ndef inst_ifdef_json(bank_index, inst_index):\n    if bank_index == 7 and inst_index >= 13:\n        return NoIndent([\"VERSION_US\", \"VERSION_EU\"])\n    if bank_index == 8 and inst_index >= 16:\n        return NoIndent([\"VERSION_US\", \"VERSION_EU\"])\n    if bank_index == 10 and inst_index >= 14:\n        return NoIndent([\"VERSION_US\", \"VERSION_EU\"])\n    return None\n\n\ndef main():\n    args = []\n    need_help = False\n    only_samples = False\n    only_samples_list = []\n    shindou_headers = None\n    skip_next = 0\n    for i, a in enumerate(sys.argv[1:], 1):\n        if skip_next > 0:\n            skip_next -= 1\n            continue\n        if a == \"--help\" or a == \"-h\":\n            need_help = True\n        elif a == \"--only-samples\":\n            only_samples = True\n        elif a == \"--shindou-headers\":\n            shindou_headers = sys.argv[i + 1 : i + 5]\n            skip_next = 4\n        elif a.startswith(\"-\"):\n            print(\"Unrecognized option \" + a)\n            sys.exit(1)\n        elif only_samples:\n            only_samples_list.append(a)\n        else:\n            args.append(a)\n\n    expected_num_args = 5 + (0 if only_samples else 2)\n    if (\n        need_help\n        or len(args) != expected_num_args\n        or (shindou_headers and len(shindou_headers) != 4)\n    ):\n        print(\n            \"Usage: {}\"\n            \" <.z64 rom> <ctl offset> <ctl size> <tbl offset> <tbl size>\"\n            \" [--shindou-headers <ctl header offset> <ctl header size>\"\n            \" <tbl header offset> <tbl header size>]\"\n            \" (<samples outdir> <sound bank outdir> |\"\n            \" --only-samples file:index ...)\".format(sys.argv[0])\n        )\n        sys.exit(0 if need_help else 1)\n\n    rom_file = open(args[0], \"rb\")\n\n    def read_at(offset, size):\n        rom_file.seek(int(offset))\n        return rom_file.read(int(size))\n\n    ctl_data = read_at(args[1], args[2])\n    tbl_data = read_at(args[3], args[4])\n\n    ctl_header_data = None\n    tbl_header_data = None\n    if shindou_headers:\n        ctl_header_data = read_at(shindou_headers[0], shindou_headers[1])\n        tbl_header_data = read_at(shindou_headers[2], shindou_headers[3])\n\n    if not only_samples:\n        samples_out_dir = args[5]\n        banks_out_dir = args[6]\n\n    banks = []\n\n    if shindou_headers:\n        ctl_entries = parse_sh_header(ctl_header_data, TYPE_CTL)\n        tbl_entries = parse_sh_header(tbl_header_data, TYPE_TBL)\n\n        sample_banks = parse_tbl(tbl_data, tbl_entries)[1]\n\n        for index, (offset, length, sh_meta) in enumerate(ctl_entries):\n            sample_bank = sample_banks[sh_meta[0]]\n            entry = ctl_data[offset : offset + length]\n            header = (sh_meta[1], sh_meta[2], \"0000-00-00\")\n            banks.append(parse_ctl(header, entry, sample_bank, index, True))\n    else:\n        ctl_entries = parse_seqfile(ctl_data, TYPE_CTL)\n        tbl_entries = parse_seqfile(tbl_data, TYPE_TBL)\n        assert len(ctl_entries) == len(tbl_entries)\n\n        tbls, sample_banks, sample_bank_map = parse_tbl(tbl_data, tbl_entries)\n\n        for index, (offset, length), sample_bank_name in zip(\n            range(len(ctl_entries)), ctl_entries, tbls\n        ):\n            sample_bank = sample_bank_map[sample_bank_name]\n            entry = ctl_data[offset : offset + length]\n            header = parse_ctl_header(entry[:16])\n            banks.append(parse_ctl(header, entry[16:], sample_bank, index, False))\n\n    # Special mode used for asset extraction: generate aifc files, with paths\n    # given by command line arguments\n    if only_samples:\n        index_to_filename = {}\n        created_dirs = set()\n        for arg in only_samples_list:\n            filename, index = arg.rsplit(\":\", 1)\n            index_to_filename[int(index)] = filename\n        index = -1\n        for sample_bank in sample_banks:\n            offsets = sorted(set(sample_bank.entries.keys()))\n            for offset in offsets:\n                entry = sample_bank.entries[offset]\n                index += 1\n                if index in index_to_filename:\n                    filename = index_to_filename[index]\n                    dir = os.path.dirname(filename)\n                    if dir not in created_dirs:\n                        os.makedirs(dir, exist_ok=True)\n                        created_dirs.add(dir)\n                    write_aiff(entry, filename)\n        return\n\n    # Generate aiff files\n    for sample_bank in sample_banks:\n        dir = os.path.join(samples_out_dir, sample_bank.name)\n        os.makedirs(dir, exist_ok=True)\n\n        offsets = sorted(set(sample_bank.entries.keys()))\n        # print(sample_bank.name, len(offsets), 'entries')\n        offsets.append(len(sample_bank.data))\n\n        assert 0 in offsets\n        for offset, next_offset, index in zip(\n            offsets, offsets[1:], range(len(offsets))\n        ):\n            entry = sample_bank.entries[offset]\n            entry.name = \"{:02X}\".format(index)\n            size = next_offset - offset\n            assert size % 16 == 0\n            assert size - 15 <= len(entry.data) <= size\n            garbage = sample_bank.data[offset + len(entry.data) : offset + size]\n            if len(entry.data) % 2 == 1:\n                assert garbage[0] == 0\n            if next_offset != offsets[-1]:\n                # (The last chunk follows a more complex garbage pattern)\n                assert all(x == 0 for x in garbage)\n            filename = os.path.join(dir, entry.name + \".aiff\")\n            write_aiff(entry, filename)\n\n    # Generate sound bank .json files\n    os.makedirs(banks_out_dir, exist_ok=True)\n    for bank_index, bank in enumerate(banks):\n        filename = os.path.join(banks_out_dir, bank.name + \".json\")\n        with open(filename, \"w\") as out:\n\n            def sound_to_json(sound):\n                entry = bank.samples[sound.sample_addr]\n                if len(set(entry.tunings)) == 1:\n                    return entry.name\n                return {\"sample\": entry.name, \"tuning\": round_f32(sound.tuning)}\n\n            bank_json = {\n                \"date\": bank.iso_date,\n                \"sample_bank\": bank.sample_bank.name,\n                \"envelopes\": {},\n                \"instruments\": {},\n                \"instrument_list\": [],\n            }\n            addr_to_name = {}\n\n            # Envelopes\n            for env in bank.envelopes.values():\n                env_json = []\n                for (delay, arg) in env.entries:\n                    if delay == 0:\n                        ins = \"stop\"\n                        assert arg == 0\n                    elif delay == 2 ** 16 - 1:\n                        ins = \"hang\"\n                        assert arg == 0\n                    elif delay == 2 ** 16 - 2:\n                        ins = [\"goto\", arg]\n                    elif delay == 2 ** 16 - 3:\n                        ins = \"restart\"\n                        assert arg == 0\n                    else:\n                        ins = [delay, arg]\n                    env_json.append(NoIndent(ins))\n                bank_json[\"envelopes\"][env.name] = env_json\n\n            # Instruments/drums\n            for inst_index, inst in enumerate(bank.all_insts):\n                if isinstance(inst, Inst):\n                    inst_json = {\n                        \"ifdef\": inst_ifdef_json(bank_index, inst_index),\n                        \"release_rate\": inst.release_rate,\n                        \"normal_range_lo\": inst.normal_range_lo,\n                        \"normal_range_hi\": inst.normal_range_hi,\n                        \"envelope\": bank.envelopes[inst.envelope].name,\n                    }\n\n                    if inst_json[\"ifdef\"] is None:\n                        del inst_json[\"ifdef\"]\n\n                    if inst.sound_lo is not None:\n                        inst_json[\"sound_lo\"] = NoIndent(sound_to_json(inst.sound_lo))\n                    else:\n                        del inst_json[\"normal_range_lo\"]\n\n                    inst_json[\"sound\"] = NoIndent(sound_to_json(inst.sound_med))\n\n                    if inst.sound_hi is not None:\n                        inst_json[\"sound_hi\"] = NoIndent(sound_to_json(inst.sound_hi))\n                    else:\n                        del inst_json[\"normal_range_hi\"]\n\n                    bank_json[\"instruments\"][inst.name] = inst_json\n                    addr_to_name[inst.addr] = inst.name\n\n                else:\n                    assert isinstance(inst, list)\n                    drums_list_json = []\n                    for drum in inst:\n                        drum_json = {\n                            \"release_rate\": drum.release_rate,\n                            \"pan\": drum.pan,\n                            \"envelope\": bank.envelopes[drum.envelope].name,\n                            \"sound\": sound_to_json(drum.sound),\n                        }\n                        drums_list_json.append(NoIndent(drum_json))\n                    bank_json[\"instruments\"][\"percussion\"] = drums_list_json\n\n            # Instrument lists\n            for addr in bank.inst_list:\n                if addr is None:\n                    bank_json[\"instrument_list\"].append(None)\n                else:\n                    bank_json[\"instrument_list\"].append(addr_to_name[addr])\n\n            out.write(json.dumps(bank_json, indent=4, cls=NoIndentEncoder))\n            out.write(\"\\n\")\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "tools/extract_data_for_mio.c",
    "content": "#include <string.h>\n#include <stdio.h>\n#include <stdlib.h>\n#include <stdint.h>\n#include <stdbool.h>\n\n#define EI_DATA 5\n#define EI_NIDENT 16\n\n#define STT_NOTYPE  0\n#define STT_OBJECT  1\n#define STT_FUNC    2\n#define STT_SECTION 3\n#define STT_FILE    4\n#define STT_COMMON  5\n#define STT_TLS     6\n\n#define ELF_ST_TYPE(x) (((unsigned int) x) & 0xf)\n\ntypedef uint32_t Elf32_Addr;\ntypedef uint32_t Elf32_Off;\n\ntypedef struct {\n    unsigned char e_ident[EI_NIDENT];\n    uint16_t      e_type;\n    uint16_t      e_machine;\n    uint32_t      e_version;\n    Elf32_Addr    e_entry;\n    Elf32_Off     e_phoff;\n    Elf32_Off     e_shoff;\n    uint32_t      e_flags;\n    uint16_t      e_ehsize;\n    uint16_t      e_phentsize;\n    uint16_t      e_phnum;\n    uint16_t      e_shentsize;\n    uint16_t      e_shnum;\n    uint16_t      e_shstrndx;\n} Elf32_Ehdr;\n\ntypedef struct {\n    uint32_t   sh_name;\n    uint32_t   sh_type;\n    uint32_t   sh_flags;\n    Elf32_Addr sh_addr;\n    Elf32_Off  sh_offset;\n    uint32_t   sh_size;\n    uint32_t   sh_link;\n    uint32_t   sh_info;\n    uint32_t   sh_addralign;\n    uint32_t   sh_entsize;\n} Elf32_Shdr;\n\ntypedef struct {\n    uint32_t      st_name;\n    Elf32_Addr    st_value;\n    uint32_t      st_size;\n    unsigned char st_info;\n    unsigned char st_other;\n    uint16_t      st_shndx;\n} Elf32_Sym;\n\ntypedef struct {\n    uint16_t magic; //To verify validity of the table\n    uint16_t vstamp; //Version stamp\n    uint32_t ilineMax; //Number of line number entries\n    uint32_t cbLine; //Number of bytes for line number entries\n    uint32_t cbLineOffset; //Index to start of line numbers\n    uint32_t idnMax; //Max index into dense numbers\n    uint32_t cbDnOffset; //Index to start dense numbers\n    uint32_t ipdMax; //Number of procedures\n    uint32_t cbPdOffset; //Index to procedure descriptors\n    uint32_t isymMax; //Number of local symbols\n    uint32_t cbSymOffset; //Index to start of local symbols\n    uint32_t ioptMax; //Maximum index into optimization entries\n    uint32_t cbOptOffset; //Index to start of optimization entries\n    uint32_t iauxMax; //Number of auxiliary symbols\n    uint32_t cbAuxOffset; //Index to the start of auxiliary symbols\n    uint32_t issMax; //Max index into local strings\n    uint32_t cbSsOffset; //Index to start of local strings\n    uint32_t issExtMax; //Max index into external strings\n    uint32_t cbSsExtOffset; //Index to the start of external strings\n    uint32_t ifdMax; //Number of file descriptors\n    uint32_t cbFdOffset; //Index to file descriptor\n    uint32_t crfd; //Number of relative file descriptors\n    uint32_t cbRfdOffset; //Index to relative file descriptors\n    uint32_t iextMax; //Maximum index into external symbols\n    uint32_t cbExtOffset; //Index to the start of external symbols.\n} SymbolicHeader;\n\ntypedef struct {\n    uint32_t adr; // Memory address of start of file\n    uint32_t rss; // Source file name\n    uint32_t issBase; // Start of local strings\n    uint32_t cbSs; // Number of bytes in local strings\n    uint32_t isymBase; // Start of local symbol entries\n    uint32_t csym; // Count of local symbol entries\n    uint32_t ilineBase; // Start of line number entries\n    uint32_t cline; // Count of line number entries\n    uint32_t ioptBase; // Start of optimization symbol entries\n    uint32_t copt; // Count of optimization symbol entries\n    uint16_t ipdFirst; // Start of procedure descriptor table\n    uint16_t cpd; // Count of procedures descriptors\n    uint32_t iauxBase; // Start of auxiliary symbol entries\n    uint32_t caux; // Count of auxiliary symbol entries\n    uint32_t rfdBase; // Index into relative file descriptors\n    uint32_t crfd; // Relative file descriptor count\n    uint32_t flags;\n    uint32_t cbLineOffset; // Byte offset from header or file ln's\n    uint32_t cbLine;\n} FileDescriptorTable;\n\ntypedef struct {\n    uint32_t iss;\n    uint32_t value;\n    uint32_t st_sc_index;\n} LocalSymbolsEntry;\n\ntypedef enum {\n    stNil,\n    stGlobal,\n    stStatic,\n    stParam,\n    stLocal,\n    stLabel,\n    stProc,\n    stBlock,\n    stEnd,\n    stMember,\n    stTypedef,\n    stFile,\n    stStaticProc,\n    stConstant\n} StConstants;\n\nuint32_t u32be(uint32_t val) {\n#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__\n    return __builtin_bswap32(val);\n#else\n    return val;\n#endif\n}\n\nuint16_t u16be(uint16_t val) {\n#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__\n    return __builtin_bswap16(val);\n#else\n    return val;\n#endif    \n}\n\nstatic bool elf_get_section_range(uint8_t *file, const char *searched_name, uint32_t *address, uint32_t *offset, uint32_t *size, uint32_t *section_index) {\n    Elf32_Ehdr *ehdr = (Elf32_Ehdr *)file;\n\n    for (int i = 0; i < u16be(ehdr->e_shnum); i++) {\n        if (memcmp(\"\\x7f\" \"ELF\", ehdr->e_ident, 4) != 0) {\n            fprintf(stderr, \"Missing ELF magic\\n\");\n            exit(1);\n        }\n        if (ehdr->e_ident[EI_DATA] != 2) {\n            fprintf(stderr, \"ELF file is not big-endian\\n\");\n            exit(1);\n        }\n\n        Elf32_Shdr *shdr = (Elf32_Shdr *)(file + u32be(ehdr->e_shoff) + i * u16be(ehdr->e_shentsize));\n        if (u16be(ehdr->e_shstrndx) >= u16be(ehdr->e_shnum)) {\n            fprintf(stderr, \"Invalid ELF file\\n\");\n            exit(1);\n        }\n        Elf32_Shdr *str_shdr = (Elf32_Shdr *)(file + u32be(ehdr->e_shoff) + u16be(ehdr->e_shstrndx) * u16be(ehdr->e_shentsize));\n        char *name = (char *)(file + u32be(str_shdr->sh_offset) + u32be(shdr->sh_name));\n        if (memcmp(name, searched_name, strlen(searched_name)) == 0) {\n            *address = u32be(shdr->sh_addr);\n            *offset = u32be(shdr->sh_offset);\n            *size = u32be(shdr->sh_size);\n            *section_index = i;\n            return true;\n        }\n    }\n    return false;\n}\n\nint main(int argc, char *argv[]) {\n    if (argc < 3) {\n        fprintf(stderr, \"Usage: %s INFILE OUTFILE\\n\", argv[0]);\n        return 1;\n    }\n\n    FILE *in = fopen(argv[1], \"rb\");\n    if (in == NULL) {\n        perror(\"fopen couldn't open input file\");\n        exit(1);\n    }\n    fseek(in, 0, SEEK_END);\n    size_t file_size = ftell(in);\n    fseek(in, 0, SEEK_SET);\n    uint8_t *file = malloc(file_size);\n    if (fread(file, 1, file_size, in) != file_size) {\n        fclose(in);\n        fprintf(stderr, \"Failed to read file: %s\\n\", argv[1]);\n        exit(1);\n    }\n    fclose(in);\n\n    uint32_t data_address, data_offset, data_size, data_index;\n    if (!elf_get_section_range(file, \".data\", &data_address, &data_offset, &data_size, &data_index)) {\n        fprintf(stderr, \"section .data not found\\n\");\n        exit(1);\n    }\n\n    uint32_t rodata_address, rodata_offset, rodata_size, rodata_index;\n    if (elf_get_section_range(file, \".rodata\", &rodata_address, &rodata_offset, &rodata_size, &rodata_index)) {\n        fprintf(stderr, \".rodata section found, please put everything in .data instead (non-const variables)\\n\");\n        exit(1);\n    }\n\n    uint32_t symtab_address, symtab_offset, symtab_size, symtab_index;\n    if (!elf_get_section_range(file, \".symtab\", &symtab_address, &symtab_offset, &symtab_size, &symtab_index)) {\n        fprintf(stderr, \"section .symtab not found\\n\");\n        exit(1);\n    }\n\n    uint32_t strtab_address, strtab_offset, strtab_size, strtab_index;\n    if (!elf_get_section_range(file, \".strtab\", &strtab_address, &strtab_offset, &strtab_size, &strtab_index)) {\n        fprintf(stderr, \"section .strtab not found\\n\");\n        exit(1);\n    }\n\n    // IDO might pad the section to the nearest 16 byte boundary,\n    // but the mio0 data should not include that. Therefore find\n    // the \"real\" end by finding where the last symbol ends.\n    uint32_t last_symbol_end = 0;\n\n    for (uint32_t i = 0; i < symtab_size / sizeof(Elf32_Sym); i++) {\n        Elf32_Sym *symbol = (Elf32_Sym *)(file + symtab_offset + i * sizeof(Elf32_Sym));\n#if DEBUG\n        const char *name = \"(null)\";\n        if (symbol->st_name != 0U) {\n            name = (const char*)file + strtab_offset + u32be(symbol->st_name);\n        }\n        printf(\"%08x\\t%08x\\t%02x\\t%02x\\t%02x\\t%s\\n\", u32be(symbol->st_value), u32be(symbol->st_size), symbol->st_info, symbol->st_other, u16be(symbol->st_shndx), name);\n#endif\n        if (ELF_ST_TYPE(symbol->st_info) == STT_OBJECT && u16be(symbol->st_shndx) == data_index) {\n            uint32_t symbol_end = u32be(symbol->st_value) + u32be(symbol->st_size);\n            if (symbol_end > last_symbol_end) {\n                last_symbol_end = symbol_end;\n            }\n        }\n    }\n\n    uint32_t mdebug_address, mdebug_offset, mdebug_size, mdebug_index;\n    if (elf_get_section_range(file, \".mdebug\", &mdebug_address, &mdebug_offset, &mdebug_size, &mdebug_index)) {\n        SymbolicHeader *symbolic_header = (SymbolicHeader *)(file + mdebug_offset);\n\n        for (uint32_t i = 0; i < u32be(symbolic_header->ifdMax); i++) {\n            FileDescriptorTable *fdt = (FileDescriptorTable *)(file + u32be(symbolic_header->cbFdOffset) + i * sizeof(FileDescriptorTable));\n\n            for (uint32_t j = 0; j < u32be(fdt->csym); j++) {\n                LocalSymbolsEntry lse;\n                memcpy(&lse, file + u32be(symbolic_header->cbSymOffset) + (u32be(fdt->isymBase) + j) * sizeof(LocalSymbolsEntry), sizeof(LocalSymbolsEntry));\n\n                uint32_t value = u32be(lse.value);\n                uint32_t st_sc_index = u32be(lse.st_sc_index);\n                uint32_t st = (st_sc_index >> 26);\n#ifdef DEBUG\n                uint32_t sc = (st_sc_index >> 21) & 0x1f;\n                uint32_t index = st_sc_index & 0xfffff;\n                uint32_t iss = u32be(lse.iss);\n                const char *symbol_name = file + u32be(symbolic_header->cbSsOffset) + iss;\n                printf(\"%s %08x\\n\", symbol_name, value);\n#endif\n\n                if (st == stStatic || st == stGlobal) {\n                    // Right now just assume length 8 since it's quite much work to extract the real size\n                    uint32_t symbol_end = value + 8;\n                    if (symbol_end > last_symbol_end) {\n                        last_symbol_end = symbol_end;\n                    }\n                }\n            }\n        }\n    }\n\n#ifdef DEBUG\n    printf(\"Last symbol end: %08x\\n\", last_symbol_end);\n#endif\n\n    size_t new_size = last_symbol_end - data_address;\n    if (new_size + 16 <= data_size) {\n        // There seems to be more than 16 bytes padding or non-identified data, so abort and take the original size\n        new_size = data_size;\n    } else {\n        // Make sure we don't cut off non-zero bytes\n        for (size_t i = new_size; i < data_size; i++) {\n            if (file[data_offset + i] != 0) {\n                // Must be some symbol missing, so abort and take the original size\n                new_size = data_size;\n                break;\n            }\n        }\n    }\n\n    FILE *out = fopen(argv[2], \"wb\");\n    fwrite(file + data_offset, 1, new_size, out);\n    fclose(out);\n\n    free(file);\n    return 0;\n}\n"
  },
  {
    "path": "tools/gen_asset_list.cpp",
    "content": "// WARNING: THIS SCRIPT IS CURRENTLY BROKEN.\n// It doesn't handle skyboxes/cake images correctly.\n\n// Usage:\n// g++-8 -std=c++17 ./tools/gen_asset_list.cpp -lstdc++fs -O1 -Wall -o tools/gen_asset_list\n// ./tools/gen_asset_list\n\n#include <algorithm>\n#include <cassert>\n#include <cstdio>\n#include <filesystem>\n#include <fstream>\n#include <iostream>\n#include <map>\n#include <sstream>\n#include <string>\n#include <unordered_map>\n#include <vector>\nusing namespace std;\n\n#define BSWAP32(x) ((((x) >> 24) & 0xff) | (((x) >> 8) & 0xff00) | (((x) << 8) & 0xff0000) | (((x) << 24) & 0xff000000U))\n#define BSWAP16(x) ((((x) >> 8) & 0xff) | (((x) << 8) & 0xff00))\n\nconst char* OUTPUT_FILE = \"assets.json\";\nconst size_t CHUNK_SIZE = 16;\nconst vector<string> LANGS = {\"jp\", \"us\", \"eu\", \"sh\", \"cn\"};\n\ntypedef uint8_t u8;\ntypedef uint64_t u64;\n\nstruct Pos {\n    size_t pos;\n    size_t mio0;\n};\n\nconst u64 C = 12318461241ULL;\n\nsize_t findCutPos(const string& s) {\n    size_t ind = s.find_first_not_of(s[0], 1);\n    if (ind == string::npos) ind = 0;\n    else ind--;\n    if (ind + CHUNK_SIZE <= s.size())\n        return ind;\n    return s.size() - CHUNK_SIZE;\n}\n\npair<size_t, u64> hashString(const string& inp) {\n    size_t cutPos = findCutPos(inp);\n    string s = inp.substr(cutPos, CHUNK_SIZE);\n    u64 ret = 0;\n    for (u8 c : s) {\n        ret *= C;\n        ret += c;\n    }\n    return {cutPos, ret};\n}\n\ntemplate<class F>\nvoid rollingHashes(const string& str, size_t chunkSize, F&& f) {\n    if (str.size() < chunkSize) return;\n    u64 h = 0, pw = 1;\n    for (size_t i = 0; i < chunkSize; i++)\n        h = h * C + (u8)str[i], pw = pw * C;\n    f(0, h);\n    for (size_t i = chunkSize; i < str.size(); i++) {\n        h = h * C + (u8)str[i] - pw * (u8)str[i-chunkSize];\n        f(i - chunkSize + 1, h);\n    }\n}\n\nbool stringMatches(const string& base, size_t pos, const string& target) {\n    if (pos + target.size() > base.size()) return false;\n    for (int it = 0; it < 10; it++) {\n        size_t i = rand() % target.size();\n        if (base[pos + i] != target[i]) return false;\n    }\n    for (size_t i = 0; i < target.size(); i++) {\n        if (base[pos + i] != target[i]) return false;\n    }\n    return true;\n}\n\nstring mio0_decompress(uint32_t *src) {\n    uint32_t size = BSWAP32(src[1]);\n    string output(size, '\\0');\n    char *dest = output.data();\n    char *destEnd = (size + dest);\n    uint16_t *cmpOffset = (uint16_t *)((char *)src + BSWAP32(src[2]));\n    char *rawOffset = ((char *)src + BSWAP32(src[3]));\n    int counter = 0;\n    uint32_t controlBits;\n\n    src += 4;\n\n    while (dest != destEnd) {\n        if (counter == 0) {\n            controlBits = *src++;\n            controlBits = BSWAP32(controlBits);\n            counter = 32;\n        }\n\n        if (controlBits & 0x80000000) {\n            *dest++ = *rawOffset++;\n        }\n        else {\n            uint16_t dcmpParam = *cmpOffset++;\n            dcmpParam = BSWAP16(dcmpParam);\n            int dcmpCount = (dcmpParam >> 12) + 3;\n            char* dcmpPtr = dest - (dcmpParam & 0x0FFF);\n\n            while (dcmpCount) {\n                *dest++ = dcmpPtr[-1];\n                dcmpCount--;\n                dcmpPtr++;\n            }\n        }\n\n        counter--;\n        controlBits <<= 1;\n    }\n    return output;\n}\n\nstring readFile(const string& p, bool allowMissing = false) {\n    ifstream fin(p, ios::binary);\n    if (!fin) {\n        if (allowMissing) return \"\";\n        cerr << \"missing file \" << p << endl;\n        exit(1);\n    }\n    fin.seekg(0, fin.end);\n    auto length = fin.tellg();\n    fin.seekg(0, fin.beg);\n    string data(length, '\\0');\n    fin.read(data.data(), length);\n    assert(fin);\n    return data;\n}\n\npair<int, int> getPngSize(const string& fname) {\n    string buffer(16, '\\0');\n    uint32_t w, h;\n    ifstream fin(fname, ios::binary);\n    fin.read(buffer.data(), 16);\n    fin.read((char*)&w, 4);\n    fin.read((char*)&h, 4);\n    assert(fin);\n    assert(buffer.substr(0, 4) == \"\\x89PNG\");\n    assert(buffer.substr(12, 4) == \"IHDR\");\n    w = BSWAP32(w);\n    h = BSWAP32(h);\n    return {w, h};\n}\n\nstring exec(const string& cmd) {\n    char buffer[128];\n    string result;\n    FILE* pipe = popen(cmd.c_str(), \"r\");\n    assert(pipe);\n    size_t s;\n    while ((s = fread(buffer, 1, sizeof(buffer), pipe))) {\n        result += string(buffer, buffer + s);\n    }\n    assert(!ferror(pipe));\n    pclose(pipe);\n    return result;\n}\n\nstring compileAsset(const string& fname) {\n    auto ind = fname.rfind('.');\n    if (ind == string::npos) return \"\";\n    string q = fname.substr(ind + 1);\n    if (q == \"png\") {\n        string prev = fname.substr(0, ind);\n\n        for (const string& lang : LANGS) {\n            string ret = readFile(\"build/\" + lang + \"/\" + prev, true);\n            if (!ret.empty()) return ret;\n        }\n\n        ind = prev.rfind('.');\n        if (ind == string::npos) return \"\";\n        q = prev.substr(ind + 1);\n        if (q == \"rgba16\" || q == \"ia16\" || q == \"ia8\" || q == \"ia4\" || q == \"ia1\") {\n            return exec(\"./tools/n64graphics -i /dev/stdout -g \" + fname + \" -f \" + q);\n        }\n    }\n    if (q == \"m64\")\n        return readFile(fname);\n    if (q == \"bin\" && fname.find(\"assets\") != string::npos)\n        return readFile(fname);\n    return \"\";\n}\n\ntuple<string, string, vector<string>> compileSoundData(const string& lang) {\n    string upper_lang = lang;\n    for (char& ch : upper_lang) ch = (char)(ch + 'A' - 'a');\n    string build_dir = \"build/\" + lang;\n    string dir = build_dir + \"/sound\";\n    string ctl = dir + \"/sound_data.ctl\";\n    string tbl = dir + \"/sound_data.tbl\";\n    exec(\"make \" + tbl + \" VERSION=\" + lang + \" NOEXTRACT=1\");\n    string sampleFilesStr =\n        exec(\"python3 tools/assemble_sound.py \" +\n            dir + \"/samples/ \"\n            \"sound/sound_banks/ \" +\n            dir + \"/sound_data.ctl \" +\n            dir + \"/sound_data.tbl \" +\n            \"-DVERSION_\" + upper_lang +\n            \" --print-samples\");\n    vector<string> sampleFiles;\n    istringstream iss(sampleFilesStr);\n    string line;\n    while (getline(iss, line)) {\n        line = line.substr(build_dir.size() + 1);\n        line[line.size() - 1] = 'f';\n        sampleFiles.push_back(line);\n    }\n    string ctlData = readFile(ctl);\n    string tblData = readFile(tbl);\n    return {ctlData, tblData, sampleFiles};\n}\n\nint main() {\n    intentional syntax error; // (see comment at top of file)\n    map<string, string> assets;\n    map<string, vector<pair<string, int>>> soundAssets;\n\n    cout << \"compiling assets...\" << endl;\n    int totalAssets = 0;\n    for (string base_dir : {\"assets\", \"sound/sequences\", \"textures\", \"levels\", \"actors\"}) {\n        for (auto& ent: filesystem::recursive_directory_iterator(base_dir)) {\n            string p = ent.path().string();\n            string bin = compileAsset(p);\n            if (bin.empty()) continue;\n            if (bin.size() < CHUNK_SIZE) {\n                cerr << \"asset \" << p << \" is too small (\" << bin.size() << \" bytes), expected at least \" << CHUNK_SIZE << \" bytes\" << endl;\n                continue;\n            }\n            assets[p] = bin;\n            totalAssets++;\n        }\n    }\n    for (const string& lang : LANGS) {\n        string ctl, tbl;\n        vector<string> sampleFiles;\n        tie(ctl, tbl, sampleFiles) = compileSoundData(lang);\n        assets[\"@sound ctl \" + lang] = ctl;\n        assets[\"@sound tbl \" + lang] = tbl;\n        totalAssets += 2;\n        for (size_t i = 0; i < sampleFiles.size(); i++) {\n            soundAssets[sampleFiles[i]].emplace_back(lang, i);\n        }\n    }\n    cout << \"compiled \" << totalAssets << \" assets\" << endl;\n\n    unordered_map<u64, vector<pair<size_t, pair<string, string>>>> hashes;\n    for (const auto& asset : assets) {\n        size_t cutPos;\n        u64 hash;\n        tie(cutPos, hash) = hashString(asset.second);\n        hashes[hash].push_back(make_pair(cutPos, asset));\n    }\n\n    map<pair<string, string>, Pos> assetPositions;\n    for (const string& lang : LANGS) {\n        cout << \"searching \" << lang << \"...\" << endl;\n        auto remHashes = hashes;\n        auto search = [&](string& str, string lang, size_t mio0) {\n            rollingHashes(str, CHUNK_SIZE, [&](size_t hashPos, u64 hash) {\n                if (!remHashes.count(hash)) return;\n                vector<pair<size_t, pair<string, string>>>& conts = remHashes.at(hash);\n                auto it = remove_if(conts.begin(), conts.end(),\n                    [&](const pair<size_t, pair<string, string>>& pa) {\n                        size_t cutPos = pa.first;\n                        const string& name = pa.second.first;\n                        const string& data = pa.second.second;\n                        size_t assetPos = hashPos - cutPos;\n                        if (stringMatches(str, assetPos, data)) {\n                            assetPositions[make_pair(lang, name)] = {assetPos, mio0};\n                            return true;\n                        }\n                        return false;\n                    });\n                conts.erase(it, conts.end());\n                if (conts.empty()) remHashes.erase(hash);\n            });\n        };\n\n        string rom = readFile(\"baserom.\" + lang + \".z64\");\n\n        for (size_t i = 0; i < rom.size(); i += 4) {\n            if (rom[i] == 'M' && rom[i+1] == 'I' && rom[i+2] == 'O' && rom[i+3] == '0') {\n                string data = mio0_decompress((uint32_t*)&rom[i]);\n                search(data, lang, i);\n            }\n        }\n\n        search(rom, lang, 0);\n    }\n\n    cout << \"generating \" << OUTPUT_FILE << \"...\" << endl;\n    ofstream fout(OUTPUT_FILE);\n    assert(fout);\n    fout <<\n        \"{\\n\"\n        \"\\\"@comment\\\": \\\"This file was generated by tools/gen_asset_list.cpp. \"\n        \"When renaming a file, either change its name in this file directly, \"\n        \"or regenerate this file using that script.\\\"\";\n\n    bool first1 = true;\n    vector<string> notFound;\n    for (const auto& asset : assets) {\n        const string& name = asset.first;\n        const string& data = asset.second;\n        vector<pair<string, Pos>> positions;\n        for (const string& lang : LANGS) {\n            auto it = assetPositions.find(make_pair(lang, name));\n            if (it != assetPositions.end()) {\n                positions.push_back(make_pair(lang, it->second));\n            }\n        }\n\n        if (positions.empty()) {\n            notFound.push_back(name);\n        }\n        else {\n            fout << \",\\n\";\n            if (first1) fout << \"\\n\";\n            first1 = false;\n            fout << \"\\\"\" << name << \"\\\": [\";\n            if (name.substr(name.size() - 4) == \".png\") {\n                int w, h;\n                tie(w, h) = getPngSize(name);\n                fout << w << \",\" << h << \",\";\n            }\n            fout << data.size() << \",{\";\n            bool first2 = true;\n            for (auto& pa : positions) {\n                auto p = pa.second;\n                if (!first2) fout << \",\";\n                first2 = false;\n                fout << \"\\\"\" << pa.first << \"\\\":[\";\n                if (p.mio0)\n                    fout << p.mio0 << \",\";\n                fout << p.pos << ']';\n            }\n            fout << \"}]\";\n        }\n    }\n    for (const auto& asset : soundAssets) {\n        const string& name = asset.first;\n        const vector<pair<string, int>>& locs = asset.second;\n        fout << \",\\n\";\n        fout << \"\\\"\" << name << \"\\\": [0,{\";\n        bool first2 = true;\n        for (auto& pa : locs) {\n            if (!first2) fout << \",\";\n            first2 = false;\n            fout << \"\\\"\" << pa.first << \"\\\":[\\\"@sound\\\",\" << pa.second << ']';\n        }\n        fout << \"}]\";\n    }\n    fout << \"\\n}\" << endl;\n    assert(fout);\n    fout.close();\n\n    if (!notFound.empty()) {\n        cout << endl;\n        cout << \"Missing \" << notFound.size() << \" assets.\" << endl;\n        if (notFound.size() <= 10) {\n            for (auto& s : notFound) {\n                cout << s << endl;\n            }\n        }\n        return 1;\n    }\n\n    cout << \"done!\" << endl;\n\n    return 0;\n}\n"
  },
  {
    "path": "tools/hashtable.c",
    "content": "#include <stdint.h>\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n\n#include \"hashtable.h\"\n\nstruct HashNode\n{\n    struct HashNode *next;\n    uint8_t value[];\n};\n\nstruct HashTable\n{\n    HashFunc func;\n    HashValueCmpFunc cmp;\n    int size;\n    int elemSize;\n    struct HashNode *table[];\n};\n\nstruct HashTable *hashtable_new(HashFunc func, HashValueCmpFunc cmp, int size,\n    int elemSize)\n{\n    struct HashTable *ht = malloc(sizeof(*ht) + size * sizeof(ht->table[0]));\n\n    ht->func = func;\n    ht->cmp = cmp;\n    ht->size = size;\n    ht->elemSize = elemSize;\n    memset(ht->table, 0, ht->size * sizeof(ht->table[0]));\n    return ht;\n}\n\nvoid hashtable_free(struct HashTable *ht)\n{\n    int i;\n\n    for (i = 0; i < ht->size; i++)\n    {\n        struct HashNode *node = ht->table[i];\n\n        while (node != NULL)\n        {\n            struct HashNode *next = node->next;\n\n            free(node);\n            node = next;\n        }\n    }\n    free(ht);\n}\n\nvoid hashtable_insert(struct HashTable *ht, const void *value)\n{\n    unsigned int key = ht->func(value) % ht->size;\n    struct HashNode *node = malloc(sizeof(*node) + ht->elemSize);\n\n    node->next = NULL;\n    memcpy(node->value, value, ht->elemSize);\n\n    if (ht->table[key] == NULL)\n    {\n        ht->table[key] = node;\n    }\n    else\n    {\n        struct HashNode *parent = ht->table[key];\n\n        while (parent->next != NULL)\n            parent = parent->next;\n        parent->next = node;\n    }\n}\n\nvoid *hashtable_query(struct HashTable *ht, const void *value)\n{\n    unsigned int key = ht->func(value) % ht->size;\n    struct HashNode *node = ht->table[key];\n\n    while (node != NULL)\n    {\n        if (ht->cmp(node->value, value))\n            return node->value;\n        node = node->next;\n    }\n    return NULL;\n}\n"
  },
  {
    "path": "tools/hashtable.h",
    "content": "#ifndef HASHTABLE_H_\n#define HASHTABLE_H_\n\ntypedef unsigned int (*HashFunc)(const void *item);\ntypedef int (*HashValueCmpFunc)(const void *a, const void *b);\nstruct HashTable;\n\nstruct HashTable *hashtable_new(HashFunc func, HashValueCmpFunc cmp, int size, int valueSize);\nvoid hashtable_free(struct HashTable *ht);\nvoid hashtable_insert(struct HashTable *ht, const void *value);\nvoid *hashtable_query(struct HashTable *ht, const void *value);\n\n#endif // HASHTABLE_H_\n"
  },
  {
    "path": "tools/ido-static-recomp/.clang-format",
    "content": "IndentWidth: 4\nLanguage: Cpp\nUseTab: Never\nColumnLimit: 120\nPointerAlignment: Left\nBreakBeforeBraces: Attach\nSpaceAfterCStyleCast: false\nCpp11BracedListStyle: false\nIndentCaseLabels: true\nBinPackArguments: true\nBinPackParameters: true\nAlignAfterOpenBracket: Align\nAlignOperands: true\nBreakBeforeTernaryOperators: true\nBreakBeforeBinaryOperators: None\nAllowShortBlocksOnASingleLine: true\nAllowShortIfStatementsOnASingleLine: false\nAllowShortLoopsOnASingleLine: false\nAllowShortCaseLabelsOnASingleLine: false\nAllowShortFunctionsOnASingleLine: false\nAlignEscapedNewlines: Left\nAlignTrailingComments: true\nSortIncludes: false\n"
  },
  {
    "path": "tools/ido-static-recomp/.gitignore",
    "content": ".idea/\nbuild/\n.vscode/\n\nqemu-irix\n\nctx.c.m2c\n*.s\n\n.DS_Store\n"
  },
  {
    "path": "tools/ido-static-recomp/DOCS.md",
    "content": "# Custom Functionality\n\n## Redirection\nIDO recomp currently has two forms of path redirection, both involving the `/usr` folder.\n\n### `/usr/lib`\nIn order for users to not having to worry about installing the binaries in particular locations in `/usr/lib`, recomp automatically redirects `/usr/lib/` paths. This is done by determining the location of `cc` and redirecting to the same directory. This does mean all the binaries and `err.english.cc` are expected to be a part of a single flattened directory.\n\nIt is also possible to override the auto redirect by using the environment variable `USR_LIB` with the desired redirection path. This can be used if the binaries are not in a flattened directory with `cc` or if on Linux and are unable to read `/proc/self/exe`.\n\nWrapper functions implementing this redirection:\n* `init_file`\n* `wrapper_execvp`\n\n### /usr/include\nThe other form of redirection is completely optional and is done by setting the environment variable `USR_INCLUDE` to the desired redirection path. This will than redirect all opened files files there. This is done so that the `mdebug` section file paths will still use `/usr/include` path, but the files themselves can be located elsewhere for greater flexibility.\n\nWrapper functions implementing this redirection:\n* `wrapper_open`\n"
  },
  {
    "path": "tools/ido-static-recomp/Makefile",
    "content": "# Build options can be changed by modifying the makefile or by building with 'make SETTING=value'.\n# It is also possible to override the settings in Defaults in a file called .make_options as 'SETTING=value'.\n\n-include .make_options\n\n#### Defaults ####\n\n# if WERROR is 1, pass -Werror to CC, so warnings would be treated as errors\nWERROR ?= 0\n# if RELEASE is 1 strip binaries as well as enable optimizations\nRELEASE ?= 1\n# On Mac, set this to `universal` to build universal (x86+ARM) binaries\nTARGET ?= native\n# Set to 1 to build with sanitization enabled\n# N.B. cannot be used for `make setup` at the moment due to recomp.cpp not respecting it\nASAN ?= 0\n\n# IDO 5.3 only for Super Mario 64\nIDO_VERSION := IDO53\nIDO_TC      := cc acpp as0 as1 cfe copt ugen ujoin uld umerge uopt usplit\n\n\n# -- determine the host environment and target\n# | Host  | Targets           |\n# |-------|-------------------|\n# | macOS | native, universal |\n# | linux | native            |\n# | win   | native            |\n\nUNAME_S := $(shell uname -s)\nUNAME_P := $(shell uname -p)\n\nMAKE   := make\nifeq ($(OS),Windows_NT)\n  DETECTED_OS := windows\nelse ifeq ($(UNAME_S),Linux)\n  DETECTED_OS := linux\nelse ifeq ($(UNAME_S),Darwin)\n  DETECTED_OS := macos\n  MAKE := gmake\n  CPPFLAGS += -xc++\nelse\n  $(error Unsupported host OS for Makefile)\nendif\n\nRABBITIZER := tools/rabbitizer\nRABBITIZER_LIB := $(RABBITIZER)/build/librabbitizerpp.a\n\nCC    := gcc\nCXX   := g++\nSTRIP := strip\n\nCSTD         ?= -std=c11\nCFLAGS       ?= -MMD -fno-strict-aliasing -I.\nCXXSTD       ?= -std=c++17\nCXXFLAGS     ?= -MMD\nWARNINGS     ?= -Wall -Wextra\nLDFLAGS      ?= -lm\nRECOMP_FLAGS ?=\n\nifneq ($(WERROR),0)\n  WARNINGS += -Werror\nendif\n\nifeq ($(RELEASE),1)\n  OPTFLAGS     ?= -Os\nelse\n  OPTFLAGS     ?= -Og -g3\n  STRIP := @:\nendif\n\nifneq ($(ASAN),0)\n  CFLAGS      += -fsanitize=address -fsanitize=pointer-compare -fsanitize=pointer-subtract -fsanitize=undefined -fno-sanitize-recover=all\n  CXXFLAGS    += -fsanitize=address -fsanitize=pointer-compare -fsanitize=pointer-subtract -fsanitize=undefined -fno-sanitize-recover=all\nendif\n\n\nifeq ($(DETECTED_OS),windows)\n  CXXFLAGS     += -static\nendif\n\n# -- Build Directories\n# designed to work with Make 3.81 (macOS/last GPL-2 version)\n# https://ismail.badawi.io/blog/automatic-directory-creation-in-make/\nBUILD_BASE ?= build\nBUILD_DIR  := $(BUILD_BASE)\nBUILT_BIN  := $(BUILD_DIR)/out\n\n\n# -- Location of original IDO binaries in SM64 repo\nIRIX_USR_DIR ?= ../ido5.3_compiler/usr\n\n# -- Location of the irix tool chain error messages\nERR_STRS        := $(BUILT_BIN)/err.english.cc\n\nRECOMP_ELF      := $(BUILD_BASE)/recomp.elf\nLIBC_IMPL_O     := libc_impl.o\n\nTARGET_BINARIES := $(foreach binary,$(IDO_TC),$(BUILT_BIN)/$(binary))\nO_FILES         := $(foreach binary,$(IDO_TC),$(BUILD_DIR)/$(binary).o)\nC_FILES         := $(O_FILES:.o=.c)\n\n# Automatic dependency files\nDEP_FILES := $(O_FILES:.o=.d)\n\n# create build directories\n$(shell mkdir -p $(BUILT_BIN))\n\n# per-file flags\n# 5.3 ugen relies on UB stack reads\n# to emulate, pass the conservative flag to `recomp`\n$(BUILD_BASE)/ugen.c: RECOMP_FLAGS := --conservative\n\n$(RECOMP_ELF): CXXFLAGS  += -I$(RABBITIZER)/include -I$(RABBITIZER)/cplusplus/include\n$(RECOMP_ELF): LDFLAGS   += -L$(RABBITIZER)/build -lrabbitizerpp\n\nifneq ($(DETECTED_OS),windows)\n# For traceback\n$(RECOMP_ELF): LDFLAGS   += -ldl\nendif\nifeq ($(DETECTED_OS),linux)\n# For traceback\n$(RECOMP_ELF): LDFLAGS   += -Wl,-export-dynamic\nendif\n\n# Too many warnings, disable everything for now...\n$(RECOMP_ELF): WARNINGS  += -Wpedantic -Wno-shadow -Wno-unused-variable -Wno-unused-but-set-variable -Wno-unused-parameter -Wno-implicit-fallthrough\n%/$(LIBC_IMPL_O): CFLAGS   += -D$(IDO_VERSION)\n# TODO: fix warnings\n%/$(LIBC_IMPL_O): WARNINGS += -Wno-unused-parameter -Wno-unused-variable -Wno-unused-but-set-variable -Wno-sign-compare -Wno-deprecated-declarations\n\n#### Main Targets ###\n\nall: $(TARGET_BINARIES) $(ERR_STRS)\n\nsetup:\n\t$(MAKE) -C $(RABBITIZER) static CC=$(CC) CXX=$(CXX) DEBUG=$(DEBUG)\n\t$(MAKE) $(RECOMP_ELF)\n\nclean:\n\t$(RM) -r $(BUILD_DIR)\n\ndistclean:\n\t$(RM) -r $(BUILD_BASE)\n\t$(MAKE) -C $(RABBITIZER) distclean\n\nc_files: $(C_FILES)\n\n\n.PHONY: all clean distclean setup\n.DEFAULT_GOAL := all\n# Prevent removing intermediate files\n.SECONDARY:\n\n\n#### Various Recipes ####\n\n$(BUILD_BASE)/%.elf: %.cpp\n\t$(CXX) $(CXXSTD) $(OPTFLAGS) $(CXXFLAGS) $(WARNINGS) -o $@ $^ $(LDFLAGS)\n\n\n$(BUILD_DIR)/%.c: $(IRIX_USR_DIR)/lib/%\n\t$(RECOMP_ELF) $(RECOMP_FLAGS) $< > $@ || ($(RM) -f $@ && false)\n\n# cc and strip are special and are stored in the `bin` folder instead of the `lib` one\n$(BUILD_DIR)/%.c: $(IRIX_USR_DIR)/bin/%\n\t$(RECOMP_ELF) $(RECOMP_FLAGS) $< > $@ || ($(RM) -f $@ && false)\n\n\n$(BUILT_BIN)/%.cc: $(IRIX_USR_DIR)/lib/%.cc\n\tcp $^ $@\n\n\nifeq ($(TARGET),universal)\nMACOS_FAT_TARGETS ?= arm64-apple-macos11 x86_64-apple-macos10.14\n\nFAT_FOLDERS  := $(foreach target,$(MACOS_FAT_TARGETS),$(BUILD_DIR)/$(target))\n\n# create build directories\n$(shell mkdir -p $(FAT_FOLDERS))\n\n# TODO: simplify\nFAT_BINARIES := $(foreach binary,$(IDO_TC),$(BUILT_BIN)/arm64-apple-macos11/$(binary)) \\\n                $(foreach binary,$(IDO_TC),$(BUILT_BIN)/x86_64-apple-macos10.14/$(binary))\n\n$(BUILT_BIN)/%: $(BUILD_DIR)/arm64-apple-macos11/% $(BUILD_DIR)/x86_64-apple-macos10.14/% | $(ERR_STRS)\n\tlipo -create -output $@ $^\n\n\n$(BUILD_DIR)/arm64-apple-macos11/%: $(BUILD_DIR)/arm64-apple-macos11/%.o $(BUILD_DIR)/arm64-apple-macos11/$(LIBC_IMPL_O) | $(ERR_STRS)\n\t$(CC) $(CSTD) $(OPTFLAGS) $(CFLAGS) -target arm64-apple-macos11 -o $@ $^ $(LDFLAGS)\n\t$(STRIP) $@\n\n$(BUILD_DIR)/x86_64-apple-macos10.14/%: $(BUILD_DIR)/x86_64-apple-macos10.14/%.o $(BUILD_DIR)/x86_64-apple-macos10.14/$(LIBC_IMPL_O) | $(ERR_STRS)\n\t$(CC) $(CSTD) $(OPTFLAGS) $(CFLAGS) -target x86_64-apple-macos10.14 -o $@ $^ $(LDFLAGS)\n\t$(STRIP) $@\n\n$(BUILD_DIR)/arm64-apple-macos11/%.o: $(BUILD_DIR)/%.c\n\t$(CC) -c $(CSTD) $(OPTFLAGS) $(CFLAGS) -target arm64-apple-macos11 -o $@ $<\n\n$(BUILD_DIR)/x86_64-apple-macos10.14/%.o: $(BUILD_DIR)/%.c\n\t$(CC) -c $(CSTD) $(OPTFLAGS) $(CFLAGS) -target x86_64-apple-macos10.14 -o $@ $<\n\n\n$(BUILD_DIR)/arm64-apple-macos11/$(LIBC_IMPL_O): libc_impl.c\n\t$(CC) -c $(CSTD) $(OPTFLAGS) $(CFLAGS) $(WARNINGS) -target arm64-apple-macos11 -o $@ $<\n\n$(BUILD_DIR)/x86_64-apple-macos10.14/$(LIBC_IMPL_O): libc_impl.c\n\t$(CC) -c $(CSTD) $(OPTFLAGS) $(CFLAGS) $(WARNINGS) -target x86_64-apple-macos10.14 -o $@ $<\n\nelse\n$(BUILT_BIN)/%: $(BUILD_DIR)/%.o $(BUILD_DIR)/$(LIBC_IMPL_O) | $(ERR_STRS)\n\t$(CC) $(CSTD) $(OPTFLAGS) $(CFLAGS) -o $@ $^ $(LDFLAGS)\n\t$(STRIP) $@\n\n$(BUILD_DIR)/%.o: $(BUILD_DIR)/%.c\n\t$(CC) -c $(CSTD) $(OPTFLAGS) $(CFLAGS) -o $@ $<\n\n\n$(BUILD_DIR)/$(LIBC_IMPL_O): libc_impl.c\n\t$(CC) -c $(CSTD) $(OPTFLAGS) $(CFLAGS) $(WARNINGS) -o $@ $<\nendif\n\n# Remove built-in rules, to improve performance\nMAKEFLAGS += --no-builtin-rules\n\n-include $(DEP_FILES)\n\n# --- Debugging\n# run `make print-VARIABLE` to debug that variable\nprint-% : ; $(info $* is a $(flavor $*) variable set to [$($*)]) @true\n"
  },
  {
    "path": "tools/ido-static-recomp/README.md",
    "content": "# Static Recompilation of IRIX Programs\n\nConvert selected IRIX C toolchain programs into modern Linux or macOS programs\n\n## Supported Programs\n\n* IDO 5.3\n  * cc, acpp, as0, as1, cfe, copt, ugen, ujoin, uld, umerge, uopt, usplit, ld, strip, upas\n* IDO 7.1\n  * cc, acpp, as0, as1, cfe, ugen, ujoin, uld, umerge, uopt, usplit, upas\n\n## Dependencies\n\n### Linux (Debian / Ubuntu)\n\n```bash\nsudo apt-get install build-essential\n```\n\n### macOS\n\n[Install homebrew](https://brew.sh/) and then:\n\n```bash\nbrew install make\n```\n\n## Building\n\nFirst build the recomp binary itself\n\n```bash\nmake setup\n```\n\n```bash\nmake VERSION=5.3\nmake VERSION=7.1\n```\n\nThe build artifacts are located in `build/{7.1|5.3}/out`. Add `-j{thread num}` for multithreaded building.\n\nBy default, debug builds are created with less optimizations, debug flags, and unstripped binaries.\nAdd `RELEASE=1` to build release builds with optimizations and stripped binaries.\n\n### Creating Universal ARM/x86_64 macOS Builds\n\nBy default, make build script create native binaries on macOS. This was done to minimize the time to build the recompiled suite.\nIn order to create \"fat,\" universal ARM and x86_64, pass `TARGET=universal` to `gmake`.\n\n### Manual Building\n\nExample for compiling `as1` in a Linux environment:\n\n```bash\nmake -C tools/rabbitizer\ng++ -Itools/rabbitizer/include -Itools/rabbitizer/cplusplus/include recomp.cpp -o recomp.elf -g -Ltools/rabbitizer/build -lrabbitizerpp\n./recomp.elf ido/7.1/usr/lib/as1 > as1_c.c\ngcc libc_impl.c as1_c.c -o as1 -g -fno-strict-aliasing -lm -DIDO71\n```\n\nUse the same approach for `cc`, `cfe`, `uopt`, `ugen`, `as1` (and `copt` if you need that).\n\nUse `-DIDO53` instead of `-DIDO71` if the program you are trying to recompile was compiled with IDO 5.3 rather than IDO 7.1.\n\nTo compile `ugen` for IDO 5.3, add `--conservative` when invoking `./recomp.elf`. This mimics UB present in `ugen53`. That program reads uninitialized stack memory and its result depends on that stack memory.\n"
  },
  {
    "path": "tools/ido-static-recomp/elf.h",
    "content": "#ifndef ELF_H\n#define ELF_H\n\n#include <stdint.h>\n\n#define EI_DATA      5\n#define EI_NIDENT    16\n#define SHT_SYMTAB   2\n#define SHT_DYNAMIC  6\n#define SHT_REL      9\n#define SHT_DYNSYM   11\n#define SHT_MIPS_REGINFO    0x70000006\n#define STN_UNDEF    0\n#define STT_OBJECT   1\n#define STT_FUNC     2\n#define DT_PLTGOT    3\n#define DT_MIPS_LOCAL_GOTNO 0x7000000a\n#define DT_MIPS_SYMTABNO    0x70000011\n#define DT_MIPS_GOTSYM      0x70000013\n\n#define ELF32_R_SYM(info)  ((info) >> 8)\n#define ELF32_R_TYPE(info) ((info) & 0xff)\n\n#define ELF32_ST_TYPE(info) ((info) & 0xf)\n\n#define R_MIPS_26    4\n#define R_MIPS_HI16  5\n#define R_MIPS_LO16  6\n\n#define SHN_UNDEF 0\n#define SHN_COMMON 0xfff2\n#define SHN_MIPS_ACOMMON 0xff00\n#define SHN_MIPS_TEXT 0xff01\n#define SHN_MIPS_DATA 0xff02\n\ntypedef uint32_t Elf32_Addr;\ntypedef uint32_t Elf32_Off;\n\ntypedef struct {\n   uint8_t    e_ident[EI_NIDENT];\n   uint16_t   e_type;\n   uint16_t   e_machine;\n   uint32_t   e_version;\n   Elf32_Addr e_entry;\n   Elf32_Off  e_phoff;\n   Elf32_Off  e_shoff;\n   uint32_t   e_flags;\n   uint16_t   e_ehsize;\n   uint16_t   e_phentsize;\n   uint16_t   e_phnum;\n   uint16_t   e_shentsize;\n   uint16_t   e_shnum;\n   uint16_t   e_shstrndx;\n} Elf32_Ehdr;\n\ntypedef struct {\n   uint32_t   sh_name;\n   uint32_t   sh_type;\n   uint32_t   sh_flags;\n   Elf32_Addr sh_addr;\n   Elf32_Off  sh_offset;\n   uint32_t   sh_size;\n   uint32_t   sh_link;\n   uint32_t   sh_info;\n   uint32_t   sh_addralign;\n   uint32_t   sh_entsize;\n} Elf32_Shdr;\n\ntypedef struct {\n   uint32_t   st_name;\n   Elf32_Addr st_value;\n   uint32_t   st_size;\n   uint8_t    st_info;\n   uint8_t    st_other;\n   uint16_t   st_shndx;\n} Elf32_Sym;\n\ntypedef struct {\n   Elf32_Addr r_offset;\n   uint32_t   r_info;\n} Elf32_Rel;\n\ntypedef struct\n{\n   uint32_t ri_gprmask;    /* General registers used.  */\n   uint32_t ri_cprmask[4]; /* Coprocessor registers used.  */\n   int32_t  ri_gp_value;   /* $gp register value.  */\n} Elf32_RegInfo;\n\ntypedef struct\n{\n   int32_t d_tag;          /* Dynamic entry type */\n   union {\n      uint32_t d_val;      /* Integer value */\n      Elf32_Addr d_ptr;    /* Address value */\n   } d_un;\n} Elf32_Dyn;\n\n#endif\n"
  },
  {
    "path": "tools/ido-static-recomp/header.h",
    "content": "#include <stdio.h>\n#include <stdint.h>\n#include <stdlib.h>\n#include <string.h>\n#include <math.h>\n#include <assert.h>\n\n#include \"libc_impl.h\"\n#include \"helpers.h\"\n\n#define RM_RN 0\n#define RM_RZ 1\n#define RM_RP 2\n#define RM_RM 3\n\n#define cvt_w_d(f) \\\n    ((fcsr & RM_RZ) ? ((isnan(f) || f <= -2147483649.0 || f >= 2147483648.0) ? (fcsr |= 0x40, 2147483647) : (int)f) : (assert(0), 0))\n\n#define cvt_w_s(f) cvt_w_d((double)f)\n\nstatic union FloatReg f0 = {{0, 0}}, f2 = {{0, 0}}, f4 = {{0, 0}}, f6 = {{0, 0}}, f8 = {{0, 0}},\nf10 = {{0, 0}}, f12 = {{0, 0}}, f14 = {{0, 0}}, f16 = {{0, 0}}, f18 = {{0, 0}}, f20 = {{0, 0}},\nf22 = {{0, 0}}, f24 = {{0, 0}}, f26 = {{0, 0}}, f28 = {{0, 0}}, f30 = {{0, 0}};\nstatic uint32_t fcsr = 1;\n"
  },
  {
    "path": "tools/ido-static-recomp/helpers.h",
    "content": "#ifndef HELPERS_H\n#define HELPERS_H\n\n#include <stdint.h>\n\n#define MEM_F64(a) (double_from_memory(mem, a))\n#define MEM_F32(a) (*(float *)(mem + a))\n#define MEM_U32(a) (*(uint32_t *)(mem + a))\n#define MEM_S32(a) (*(int32_t *)(mem + a))\n#define MEM_U16(a) (*(uint16_t *)(mem + ((a) ^ 2)))\n#define MEM_S16(a) (*(int16_t *)(mem + ((a) ^ 2)))\n#define MEM_U8(a) (*(uint8_t *)(mem + ((a) ^ 3)))\n#define MEM_S8(a) (*(int8_t *)(mem + ((a) ^ 3)))\n\n#endif\n"
  },
  {
    "path": "tools/ido-static-recomp/libc_impl.c",
    "content": "#define _GNU_SOURCE // for sigset\n#include <stdbool.h>\n#include <stdio.h>\n#include <stdint.h>\n#include <stdlib.h>\n#include <string.h>\n#include <math.h>\n#include <assert.h>\n#include <errno.h>\n#include <time.h>\n#include <limits.h>\n#include <ctype.h>\n#include <locale.h>\n#include <libgen.h>\n\n#ifdef __CYGWIN__\n#include <windows.h>\n#endif\n\n#ifdef __APPLE__\n#include <mach-o/dyld.h>\n#include <mach/vm_page_size.h>\n#endif\n\n#include <sys/mman.h>\n#include <sys/types.h>\n#include <sys/stat.h>\n#include <sys/times.h>\n#include <sys/file.h>\n#include <sys/wait.h>\n#include <fcntl.h>\n#include <utime.h>\n#include <unistd.h>\n#include <signal.h>\n\n#include \"libc_impl.h\"\n#include \"helpers.h\"\n#include \"header.h\"\n\n#define MIN(a, b) ((a) < (b) ? (a) : (b))\n#define MAX(a, b) ((a) > (b) ? (a) : (b))\n\n#define STRING(param)                                       \\\n    size_t param##_len = wrapper_strlen(mem, param##_addr); \\\n    char param[param##_len + 1];                            \\\n    for (size_t i = 0; i <= param##_len; i++) {             \\\n        param[i] = MEM_S8(param##_addr + i);                \\\n    }\n\n#if !defined(IDO53) && !defined(IDO71) && !defined(IDO72)\n#define IDO71\n#endif\n\n#define MEM_REGION_START 0xfb00000\n#define MEM_REGION_SIZE (512 * 1024 * 1024)\n\n#ifdef IDO53\n// IDO 5.3\n#define IOB_ADDR 0x0fb528e4\n#define ERRNO_ADDR 0x0fb52720\n#define CTYPE_ADDR 0x0fb504f0\n#define LIBC_ADDR 0x0fb50000\n#define LIBC_SIZE 0x3000\n#endif\n\n#ifdef IDO71\n// IDO 7.1\n#define IOB_ADDR 0x0fb4ee44\n#define ERRNO_ADDR 0x0fb4ec80\n#define CTYPE_ADDR 0x0fb4cba0\n#define LIBC_ADDR 0x0fb4c000\n#define LIBC_SIZE 0x3000\n#endif\n\n#ifdef IDO72\n// IDO 7.2\n#define IOB_ADDR 0x0fb49454\n#define ERRNO_ADDR 0x0fb49290\n#define CTYPE_ADDR 0x0fb46db0\n#define LIBC_ADDR 0x0fb46000\n#define LIBC_SIZE 0x4000\n#endif\n\n#define STDIN_ADDR IOB_ADDR\n#define STDOUT_ADDR (IOB_ADDR + 0x10)\n#define STDERR_ADDR (IOB_ADDR + 0x20)\n#define STDIN ((struct FILE_irix*)&MEM_U32(STDIN_ADDR))\n#define STDOUT ((struct FILE_irix*)&MEM_U32(STDOUT_ADDR))\n#define STDERR ((struct FILE_irix*)&MEM_U32(STDERR_ADDR))\n\n#define MALLOC_BINS_ADDR custom_libc_data_addr\n#define STRTOK_DATA_ADDR (MALLOC_BINS_ADDR + (30 - 3) * 4)\n#define INTBUF_ADDR (STRTOK_DATA_ADDR + 4)\n\n#define SIGNAL_HANDLER_STACK_START LIBC_ADDR\n\n#define NFILE 100\n\n#define IOFBF 0000 /* full buffered */\n#define IOLBF 0100 /* line buffered */\n#define IONBF 0004 /* not buffered */\n#define IOEOF 0020 /* EOF reached on read */\n#define IOERR 0040 /* I/O error from system */\n\n#define IOREAD 0001  /* currently reading */\n#define IOWRT 0002   /* currently writing */\n#define IORW 0200    /* opened for reading and writing */\n#define IOMYBUF 0010 /* stdio malloc()'d buffer */\n\n#define STDIO_BUFSIZE 16384\n\nstruct timespec_t_irix {\n    int tv_sec;\n    int tv_nsec;\n};\n\nstruct FILE_irix {\n    int _cnt;\n    uint32_t _ptr_addr;\n    uint32_t _base_addr;\n    uint8_t pad[2];\n    uint8_t _file;\n    uint8_t _flag;\n};\n\ntypedef uint64_t (*fptr_trampoline)(uint8_t* mem, uint32_t sp, uint32_t a0, uint32_t a1, uint32_t a2, uint32_t a3,\n                                    uint32_t fp_dest);\n\nstatic struct {\n    struct {\n        fptr_trampoline trampoline;\n        uint8_t* mem;\n        uint32_t fp_dest;\n    } handlers[65];\n    volatile uint32_t recursion_level;\n} signal_context;\n\nstatic uint32_t cur_sbrk;\nstatic uint32_t bufendtab[NFILE]; // this version contains the size and not the end ptr\nstatic uint32_t custom_libc_data_addr;\n\n#define _U 01   /* Upper case */\n#define _L 02   /* Lower case */\n#define _N 04   /* Numeral (digit) */\n#define _S 010  /* Spacing character */\n#define _P 020  /* Punctuation */\n#define _C 040  /* Control character */\n#define _B 0100 /* Blank */\n#define _X 0200 /* heXadecimal digit */\n\nstatic char ctype[] = {\n    0,\n    // clang-format off\n/*         00      01      02      03      04      05      06      07  */\n/*    0 */ _C,     _C,     _C,     _C,     _C,     _C,     _C,     _C,\n/*  010 */ _C,     _S|_C,  _S|_C,  _S|_C,  _S|_C,  _S|_C,  _C,     _C,\n/*  020 */ _C,     _C,     _C,     _C,     _C,     _C,     _C,     _C,\n/*  030 */ _C,     _C,     _C,     _C,     _C,     _C,     _C,     _C,\n/*  040 */ _S|_B,  _P,     _P,     _P,     _P,     _P,     _P,     _P,\n/*  050 */ _P,     _P,     _P,     _P,     _P,     _P,     _P,     _P,\n/*  060 */ _N|_X,  _N|_X,  _N|_X,  _N|_X,  _N|_X,  _N|_X,  _N|_X,  _N|_X,\n/*  070 */ _N|_X,  _N|_X,  _P,     _P,     _P,     _P,     _P,     _P,\n/* 0100 */ _P,     _U|_X,  _U|_X,  _U|_X,  _U|_X,  _U|_X,  _U|_X,  _U,\n/* 0110 */ _U,     _U,     _U,     _U,     _U,     _U,     _U,     _U,\n/* 0120 */ _U,     _U,     _U,     _U,     _U,     _U,     _U,     _U,\n/* 0130 */ _U,     _U,     _U,     _P,     _P,     _P,     _P,     _P,\n/* 0140 */ _P,     _L|_X,  _L|_X,  _L|_X,  _L|_X,  _L|_X,  _L|_X,  _L,\n/* 0150 */ _L,     _L,     _L,     _L,     _L,     _L,     _L,     _L,\n/* 0160 */ _L,     _L,     _L,     _L,     _L,     _L,     _L,     _L,\n/* 0170 */ _L,     _L,     _L,     _P,     _P,     _P,     _P,     _C,\n/* 0200 */ 0,      0,      0,      0,      0,      0,      0,      0,\n/* 0210 */ 0,      0,      0,      0,      0,      0,      0,      0,\n/* 0220 */ 0,      0,      0,      0,      0,      0,      0,      0,\n/* 0230 */ 0,      0,      0,      0,      0,      0,      0,      0,\n/* 0240 */ 0,      0,      0,      0,      0,      0,      0,      0,\n/* 0250 */ 0,      0,      0,      0,      0,      0,      0,      0,\n/* 0260 */ 0,      0,      0,      0,      0,      0,      0,      0,\n/* 0270 */ 0,      0,      0,      0,      0,      0,      0,      0,\n/* 0300 */ 0,      0,      0,      0,      0,      0,      0,      0,\n/* 0310 */ 0,      0,      0,      0,      0,      0,      0,      0,\n/* 0320 */ 0,      0,      0,      0,      0,      0,      0,      0,\n/* 0330 */ 0,      0,      0,      0,      0,      0,      0,      0,\n/* 0340 */ 0,      0,      0,      0,      0,      0,      0,      0,\n/* 0350 */ 0,      0,      0,      0,      0,      0,      0,      0,\n/* 0360 */ 0,      0,      0,      0,      0,      0,      0,      0,\n/* 0370 */ 0,      0,      0,      0,      0,      0,      0,      0,\n    // clang-format on\n};\n\n\nstatic char usr_lib_redirect[PATH_MAX + 1];\nstatic char usr_include_redirect[PATH_MAX + 1];\n\nstatic int g_file_max = 3;\n\n\n/* Compilation Target/Emulation Host Page Size Determination */\n#if defined(__CYGWIN__) || (defined(__linux__) && defined(__aarch64__))\n#define RUNTIME_PAGESIZE\n/* ARM64 linux can have page sizes of 4kb, 16kb, or 64kb */\n/* Set in main before running the translated code */\nstatic size_t g_Pagesize;\n\n#define TRUNC_PAGE(x) ((x) & ~(g_Pagesize - 1))\n#define ROUND_PAGE(x) (TRUNC_PAGE((x) + (g_Pagesize - 1)))\n\n#elif defined(__APPLE__)\n/* https://developer.apple.com/documentation/apple-silicon/addressing-architectural-differences-in-your-macos-code */\n#define TRUNC_PAGE(x) (trunc_page((x)))\n#define ROUND_PAGE(x) (round_page((x)))\n\n#else\n/* A fixed 4KB page size for x64 linux (is there anything else?) */\n#define TRUNC_PAGE(x) ((x) & ~(0x1000 - 1))\n#define ROUND_PAGE(x) (TRUNC_PAGE((x) + (0x1000 - 1)))\n#endif /* PageSize Macros */\n\nstatic uint8_t* memory_map(size_t length) {\n#ifdef __CYGWIN__\n    uint8_t* mem = mmap(0, length, PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_NORESERVE, -1, 0);\n#else\n    uint8_t* mem = mmap(0, length, PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);\n#endif\n\n    assert(TRUNC_PAGE((uintptr_t)mem) == (uintptr_t)mem &&\n           \"Page size too small, try increasing `page_size` in recomp.cpp\");\n    if (mem == MAP_FAILED) {\n        perror(\"mmap (memory_map)\");\n        exit(1);\n    }\n    return mem;\n}\n\nstatic void memory_allocate(uint8_t* mem, uint32_t start, uint32_t end) {\n    assert(start >= MEM_REGION_START);\n    assert(end <= MEM_REGION_START + MEM_REGION_SIZE);\n    // `start` will be passed to mmap,\n    // so it has to be host aligned in order to keep the guest's pages valid\n    assert(start == TRUNC_PAGE(start) && \"Page size too small, try increasing `page_size` in recomp.cpp\");\n#ifdef __CYGWIN__\n    uintptr_t _start = TRUNC_PAGE((uintptr_t)mem + start);\n    uintptr_t _end = ROUND_PAGE((uintptr_t)mem + end);\n\n    if (mprotect((void*)_start, _end - _start, PROT_READ | PROT_WRITE) < 0) {\n        perror(\"mprotect (memory_allocate)\");\n        exit(1);\n    }\n#else\n    void* addr = (void*)TRUNC_PAGE((uintptr_t)mem + start);\n    size_t len = end - start;\n\n    if (mmap(addr, len, PROT_READ | PROT_WRITE, MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0) == MAP_FAILED) {\n        perror(\"mmap (memory_allocate)\");\n        exit(1);\n    }\n#endif /* __CYGWIN__ */\n}\n\nstatic void memory_unmap(uint8_t* mem, size_t length) {\n    if (munmap(mem, length)) {\n        perror(\"munmap\");\n        exit(1);\n    }\n}\n\nstatic void free_all_file_bufs(uint8_t* mem) {\n    struct FILE_irix* f = (struct FILE_irix*)&MEM_U32(IOB_ADDR);\n    for (int i = 0; i < g_file_max; i++) {\n        if (f[i]._flag & IOMYBUF) {\n            wrapper_free(mem, f[i]._base_addr);\n        }\n    }\n}\n\nvoid get_env_var(char* out, char* name) {\n    char* env = getenv(name);\n\n    if (env == NULL) { // No environment variable found, so just return empty string\n        out[0] = '\\0';\n        return;\n    }\n\n    if (snprintf(out, PATH_MAX, \"%s\", env) >= PATH_MAX) {\n        fprintf(stderr, \"Error: Environment variable %s is too large\\n\", name);\n        exit(1);\n    }\n\n}\n\nstatic void init_usr_lib_redirect(void) {\n    char path[PATH_MAX + 1] = { 0 };\n\n    get_env_var(path, \"USR_LIB\");\n\n    if (path[0] != '\\0') {\n        strcpy(usr_lib_redirect, path);\n        return;\n    }\n\n    // gets the current executable's path\n#ifdef __CYGWIN__\n    uint32_t size = GetModuleFileName(NULL, path, PATH_MAX);\n    if (size == 0 || size == PATH_MAX) {\n        return;\n    }\n#elif defined __APPLE__\n    uint32_t size = PATH_MAX;\n    if (_NSGetExecutablePath(path, &size) < 0) {\n        return;\n    }\n#else\n    ssize_t size = readlink(\"/proc/self/exe\", path, PATH_MAX);\n    if (size < 0 || size == PATH_MAX) {\n        return;\n    }\n#endif\n\n    strcpy(usr_lib_redirect, dirname(path));\n}\n\nstatic void init_usr_include_redirect(void) {\n    char path[PATH_MAX + 1] = {0};\n\n    get_env_var(path, \"USR_INCLUDE\");\n\n    strcpy(usr_include_redirect, path);\n}\n\nstatic void init_redirect_paths(void) {\n    init_usr_lib_redirect();\n    init_usr_include_redirect();\n}\n\n/**\n * Redirects `path` by replacing the initial segment `from` by `to`. The result is placed in `out`.\n * If `path` does not have `from` as its initial segment, or there is no `to`, the original path is used.\n * If an error occurs, an error message will be printed, and the program exited.\n*/\nvoid redirect_path(char* out, const char* path, const char* from, const char* to) {\n    int from_len = strlen(from);\n\n    if(!strncmp(path, from, from_len) && (to[0] != '\\0')) {\n        char redirected_path[PATH_MAX + 1] = {0};\n        int n;\n\n        n = snprintf(redirected_path, sizeof(redirected_path), \"%s%s\", to, path + from_len);\n\n        if (n >= 0 && n < sizeof(redirected_path)) {\n            strcpy(out, redirected_path);\n        } else {\n            fprintf(stderr, \"Error: Unable to redirect %s->%s for %s\\n\", from, to, path);\n            exit(1);\n        }\n    } else {\n        strcpy(out, path);\n    }\n}\n\nvoid final_cleanup(uint8_t* mem) {\n    wrapper_fflush(mem, 0);\n    free_all_file_bufs(mem);\n    mem += MEM_REGION_START;\n    memory_unmap(mem, MEM_REGION_SIZE);\n}\n\nint main(int argc, char* argv[]) {\n    int ret;\n\n    init_redirect_paths();\n#ifdef RUNTIME_PAGESIZE\n    g_Pagesize = sysconf(_SC_PAGESIZE);\n#endif /* RUNTIME_PAGESIZE */\n\n    uint8_t* mem = memory_map(MEM_REGION_SIZE);\n    mem -= MEM_REGION_START;\n    int run(uint8_t * mem, int argc, char* argv[]);\n    ret = run(mem, argc, argv);\n    final_cleanup(mem);\n    return ret;\n}\n\nvoid mmap_initial_data_range(uint8_t* mem, uint32_t start, uint32_t end) {\n    custom_libc_data_addr = end;\n#ifdef __APPLE__\n    end += vm_page_size;\n#else\n    end += 4096;\n#endif /* __APPLE__ */\n    memory_allocate(mem, start, end);\n    cur_sbrk = end;\n}\n\nvoid setup_libc_data(uint8_t* mem) {\n    memory_allocate(mem, LIBC_ADDR, (LIBC_ADDR + LIBC_SIZE));\n    for (size_t i = 0; i < sizeof(ctype); i++) {\n        MEM_S8(CTYPE_ADDR + i) = ctype[i];\n    }\n    STDIN->_flag = IOREAD;\n    STDIN->_file = 0;\n    STDOUT->_flag = IOWRT;\n    STDOUT->_file = 1;\n    STDERR->_flag = IOWRT | IONBF;\n    STDERR->_file = 2;\n}\n\nstatic uint32_t strcpy1(uint8_t* mem, uint32_t dest_addr, const char* str) {\n    for (;;) {\n        char c = *str;\n        ++str;\n        MEM_S8(dest_addr) = c;\n        ++dest_addr;\n        if (c == '\\0') {\n            return dest_addr - 1;\n        }\n    }\n}\n\nstatic uint32_t strcpy2(uint8_t* mem, uint32_t dest_addr, uint32_t src_addr) {\n    for (;;) {\n        char c = MEM_S8(src_addr);\n        ++src_addr;\n        MEM_S8(dest_addr) = c;\n        ++dest_addr;\n        if (c == '\\0') {\n            return dest_addr - 1;\n        }\n    }\n}\n\nuint32_t wrapper_sbrk(uint8_t* mem, int increment) {\n    uint32_t old = cur_sbrk;\n    size_t alignedInc = ROUND_PAGE(old + increment) - old;\n    memory_allocate(mem, old, old + alignedInc);\n    cur_sbrk += alignedInc;\n    return old;\n}\n\n/*\nSimple bin-based malloc algorithm\n\nThe memory is divided into bins of item sizes 8, 16, 32, 64, 128, ..., 2^30.\nSize requests are divided into these bin sizes and each bin is handled\ncompletely separate from other bins.\n\nFor each bin there is a linked list of free'd items.\nLinked list node:\nstruct FreeListNode {\n    struct Node *next;\n    size_t free_space_after;\n    uint8_t data[bin_item_size];\n};\nAt most one value of next and space_after is non-zero.\nIf a node exists in the linked list, it is the memory node to return.\nstruct AllocatedNode {\n    int bin;\n    uint32_t current_size;\n    uint8_t data[bin_item_size];\n};\nThe returned address is the data element.\nWhen the last list node is returned, and free_space_after is big enough\nfor a new node, a new node is created having free_space_after set to\n(free_space_after - (8 + bin_item_size)), and is appended to the list.\n\nIf the list was empty, a new memory chunk is requested from the system\nof 65536 bytes, or at least (8 + bin_item_size), rounded up to nearest\npage size boundary. It can also be smaller if it leaves holes bigger than\n4096 bytes that can never be used. This chunk is then inserted to the list,\nand the algorithm restarts.\n\nThis algorithm, for each bin, never uses more than twice as much as is\nmaximally in use (plus 65536 bytes).\nThe malloc/free calls run in O(1) and calloc/realloc calls run in O(size).\n*/\n\nsize_t mem_used;\nsize_t mem_allocated;\nsize_t max_mem_used;\nsize_t num_sbrks;\nsize_t num_allocs;\nuint32_t wrapper_malloc(uint8_t* mem, uint32_t size) {\n    int bin = -1;\n    for (int i = 3; i < 30; i++) {\n        if (size <= (1 << i)) {\n            bin = i;\n            break;\n        }\n    }\n    if (bin == -1) {\n        return 0;\n    }\n    ++num_allocs;\n    mem_used += size;\n    max_mem_used = MAX(mem_used, max_mem_used);\n    uint32_t item_size = 1 << bin;\n    uint32_t list_ptr = MALLOC_BINS_ADDR + (bin - 3) * 4;\n    uint32_t node_ptr = MEM_U32(list_ptr);\n    if (node_ptr == 0) {\n        uint32_t sbrk_request = 0x10000;\n        if (8 + item_size > sbrk_request) {\n            sbrk_request = 8 + item_size;\n            sbrk_request = ROUND_PAGE(sbrk_request);\n        }\n        uint32_t left_over = sbrk_request % (8 + item_size);\n        sbrk_request -= left_over & ~(4096 - 1);\n        mem_allocated += sbrk_request;\n        ++num_sbrks;\n        node_ptr = wrapper_sbrk(mem, sbrk_request);\n        MEM_U32(node_ptr + 4) = sbrk_request - (8 + item_size);\n    }\n    uint32_t next = MEM_U32(node_ptr);\n    if (next == 0) {\n        uint32_t free_space_after = MEM_U32(node_ptr + 4);\n        if (free_space_after >= 8 + item_size) {\n            next = node_ptr + 8 + item_size;\n            MEM_U32(next + 4) = free_space_after - (8 + item_size);\n        }\n    } else {\n        assert(MEM_U32(node_ptr + 4) == 0);\n    }\n    MEM_U32(list_ptr) = next;\n    MEM_U32(node_ptr) = bin;\n    MEM_U32(node_ptr + 4) = size;\n    return node_ptr + 8;\n}\n\nuint32_t wrapper_calloc(uint8_t* mem, uint32_t num, uint32_t size) {\n    uint64_t new_size = (uint64_t)num * size;\n    assert(new_size == (uint32_t)new_size);\n    uint32_t ret = wrapper_malloc(mem, new_size);\n    return wrapper_memset(mem, ret, 0, new_size);\n}\n\nuint32_t wrapper_realloc(uint8_t* mem, uint32_t data_addr, uint32_t size) {\n    if (data_addr == 0) {\n        return wrapper_malloc(mem, size);\n    } else {\n        uint32_t node_ptr = data_addr - 8;\n        int bin = MEM_U32(node_ptr);\n        uint32_t old_size = MEM_U32(node_ptr + 4);\n        uint32_t max_size = 1 << bin;\n        assert(bin >= 3 && bin < 30);\n        assert(old_size <= max_size);\n        if (size <= max_size) {\n            mem_used = mem_used - old_size + size;\n            MEM_U32(node_ptr + 4) = size;\n            return data_addr;\n        } else {\n            uint32_t new_addr = wrapper_malloc(mem, size);\n            wrapper_memcpy(mem, new_addr, data_addr, old_size);\n            wrapper_free(mem, data_addr);\n            return new_addr;\n        }\n    }\n}\n\nvoid wrapper_free(uint8_t* mem, uint32_t data_addr) {\n    if (data_addr == 0) {\n        return;\n    }\n    uint32_t node_ptr = data_addr - 8;\n    int bin = MEM_U32(node_ptr);\n    uint32_t size = MEM_U32(node_ptr + 4);\n    if (size == 0) {\n        // Double free. IDO 5.3 strip relies on this.\n        fprintf(stderr, \"warning: double free: 0x%x\\n\", data_addr);\n        return;\n    }\n    uint32_t list_ptr = MALLOC_BINS_ADDR + (bin - 3) * 4;\n    assert(bin >= 3 && bin < 30);\n    assert(size <= (1 << bin));\n    MEM_U32(node_ptr) = MEM_U32(list_ptr);\n    MEM_U32(node_ptr + 4) = 0;\n    MEM_U32(list_ptr) = node_ptr;\n    mem_used -= size;\n}\n\nint wrapper_fscanf(uint8_t* mem, uint32_t fp_addr, uint32_t format_addr, uint32_t sp) {\n    struct FILE_irix* f = (struct FILE_irix*)&MEM_U32(fp_addr);\n    STRING(format) // for debug\n\n    int ret = 0;\n    char c;\n    int ch;\n    sp += 2 * 4;\n    for (;;) {\n        c = MEM_S8(format_addr);\n        ++format_addr;\n        if (c == '%') {\n            c = MEM_S8(format_addr);\n            ++format_addr;\n            if (c == '%') {\n                goto percent;\n            }\n            for (;;) {\n                ch = wrapper_fgetc(mem, fp_addr);\n                if (ch == -1) {\n                    return ret;\n                }\n                if (!isspace(ch)) {\n                    break;\n                }\n            }\n            bool l = false;\n        continue_format:\n            switch (c) {\n                case 'l':\n                    assert(!l && \"ll not implemented in fscanf\");\n                    l = true;\n                    c = MEM_S8(format_addr);\n                    ++format_addr;\n                    goto continue_format;\n                case 'd': {\n                    int64_t num = 0;\n                    int sign = 1;\n                    bool found_first = false;\n                    if (ch == '-') {\n                        sign = -1;\n                        ch = wrapper_fgetc(mem, fp_addr);\n                        if (ch == -1) {\n                            return ret;\n                        }\n                    }\n                    for (;;) {\n                        if (isdigit(ch)) {\n                            num *= 10;\n                            num += ch - '0';\n                            found_first = true;\n                            ch = wrapper_fgetc(mem, fp_addr);\n                            if (ch == -1) {\n                                break;\n                            }\n                        } else {\n                            wrapper_ungetc(mem, ch, fp_addr);\n                            break;\n                        }\n                    }\n                    if (found_first) {\n                        uint32_t int_addr = MEM_U32(sp);\n                        sp += 4;\n                        MEM_S32(int_addr) = (int)(num * sign);\n                        ++ret;\n                    } else {\n                        return ret;\n                    }\n                    break;\n                }\n                default:\n                    assert(0 && \"fscanf format not implemented\");\n            }\n        } else if (c == '\\0') {\n            break;\n        } else {\n        percent:\n            ch = wrapper_fgetc(mem, fp_addr);\n            if (ch == -1) {\n                break;\n            }\n            if ((char)ch != c) {\n                break;\n            }\n        }\n    }\n\n    return ret;\n}\n\nint wrapper_printf(uint8_t* mem, uint32_t format_addr, uint32_t sp) {\n    STRING(format)\n    if (!strcmp(format, \" child died due to signal %d.\\n\")) {\n        printf(format, MEM_U32(sp + 4));\n        return 1;\n    }\n    assert(0 && \"printf not implemented\");\n    return 0;\n}\n\nint wrapper_sprintf(uint8_t* mem, uint32_t str_addr, uint32_t format_addr, uint32_t sp) {\n    STRING(format) // for debug\n    char temp[32];\n\n    if (!strcmp(format, \"%.16e\")) {\n        union {\n            uint32_t w[2];\n            double d;\n        } d;\n        d.w[1] = MEM_U32(sp + 2 * 4);\n        d.w[0] = MEM_U32(sp + 3 * 4);\n        sprintf(temp, \"%.16e\", d.d);\n        strcpy1(mem, str_addr, temp);\n        return 1;\n    }\n    if (!strcmp(format, \"\\\\%03o\")) {\n        sprintf(temp, \"\\\\%03o\", MEM_U32(sp + 2 * 4));\n        strcpy1(mem, str_addr, temp);\n        return 1;\n    }\n    if (!strcmp(format, \"%*ld=\")) {\n        sprintf(temp, \"%*d=\", MEM_U32(sp + 2 * 4), MEM_U32(sp + 3 * 4));\n        strcpy1(mem, str_addr, temp);\n        return 1;\n    }\n\n    uint32_t orig_str_addr = str_addr;\n    uint32_t pos = 0;\n    int ret = 0;\n    char c;\n    sp += 2 * 4;\n    for (;;) {\n        c = MEM_S8(format_addr + pos);\n        ++pos;\n        if (c == '%') {\n            bool l = false;\n            c = MEM_S8(format_addr + pos);\n            ++pos;\n            uint32_t zeros = 0;\n            bool zero_prefix = false;\n        continue_format:\n            switch (c) {\n                case '\\0':\n                    goto finish_str;\n\n                case '0':\n                    do {\n                        c = MEM_S8(format_addr + pos);\n                        ++pos;\n                        if (c >= '0' && c <= '9') {\n                            zeros *= 10;\n                            zeros += c - '0';\n                        }\n                    } while (c >= '0' && c <= '9');\n                    goto continue_format;\n                case '#':\n                    c = MEM_S8(format_addr + pos);\n                    ++pos;\n                    zero_prefix = true;\n                    goto continue_format;\n                    break;\n                case 'l':\n                    assert(!l && \"ll not implemented in fscanf\");\n                    c = MEM_S8(format_addr + pos);\n                    ++pos;\n                    l = true;\n                    goto continue_format;\n                    break;\n                case 'd':\n                    if (zeros != 0) {\n                        char temp1[32];\n                        sprintf(temp1, \"%%0%dd\", zeros);\n                        sprintf(temp, temp1, MEM_S32(sp));\n                    } else {\n                        sprintf(temp, \"%d\", MEM_S32(sp));\n                    }\n                    sp += 4;\n                    str_addr = strcpy1(mem, str_addr, temp);\n                    ++ret;\n                    break;\n                case 'o':\n                    if (zero_prefix) {\n                        sprintf(temp, \"%#o\", MEM_S32(sp));\n                    } else {\n                        sprintf(temp, \"%o\", MEM_S32(sp));\n                    }\n                    sp += 4;\n                    str_addr = strcpy1(mem, str_addr, temp);\n                    ++ret;\n                    break;\n                case 'x':\n                    if (zero_prefix) {\n                        sprintf(temp, \"%#x\", MEM_S32(sp));\n                    } else {\n                        sprintf(temp, \"%x\", MEM_S32(sp));\n                    }\n                    sp += 4;\n                    str_addr = strcpy1(mem, str_addr, temp);\n                    ++ret;\n                    break;\n                case 'u':\n                    sprintf(temp, \"%u\", MEM_S32(sp));\n                    sp += 4;\n                    str_addr = strcpy1(mem, str_addr, temp);\n                    ++ret;\n                    break;\n                case 's':\n                    str_addr = strcpy2(mem, str_addr, MEM_U32(sp));\n                    sp += 4;\n                    ++ret;\n                    break;\n                case 'c':\n                    MEM_S8(str_addr) = (char)MEM_U32(sp);\n                    ++str_addr;\n                    sp += 4;\n                    ++ret;\n                    break;\n                case '%':\n                    MEM_S8(str_addr) = '%';\n                    ++str_addr;\n                    break;\n                default:\n                    fprintf(stderr, \"%s\\n\", format);\n                    assert(0 && \"non-implemented sprintf format\");\n            }\n        } else if (c == '\\0') {\n            break;\n        } else {\n            MEM_S8(str_addr) = c;\n            ++str_addr;\n        }\n    }\n\nfinish_str:\n    MEM_S8(str_addr) = '\\0';\n    return ret;\n}\n\nint wrapper_fprintf(uint8_t* mem, uint32_t fp_addr, uint32_t format_addr, uint32_t sp) {\n    struct FILE_irix* f = (struct FILE_irix*)&MEM_U32(fp_addr);\n    STRING(format)\n    sp += 8;\n\n    // Special-case this one format string. This seems to be the only one that uses `%f` or width specifiers.\n    if (!strcmp(format, \"%.2fu %.2fs %u:%04.1f %.0f%%\\n\") && fp_addr == STDERR_ADDR) {\n        double arg0 = MEM_F64(sp + 0);\n        double arg1 = MEM_F64(sp + 8);\n        uint32_t arg2 = MEM_U32(sp + 16);\n        double arg3 = MEM_F64(sp + 24);\n        double arg4 = MEM_F64(sp + 32);\n        fprintf(stderr, format, arg0, arg1, arg2, arg3, arg4);\n        fflush(stderr);\n        return 1;\n    }\n    if (strcmp(format, \"%s phase time: %.2fu %.2fs %u:%04.1f %.0f%%\\n\") == 0 && fp_addr == STDERR_ADDR) {\n        if (wrapper_fputs(mem, MEM_U32(sp), fp_addr) == -1) {\n            return 0;\n        }\n        sp += 4;\n        // align\n        sp += 4;\n\n        double arg0 = MEM_F64(sp + 0);\n        double arg1 = MEM_F64(sp + 8);\n        uint32_t arg2 = MEM_U32(sp + 16);\n        double arg3 = MEM_F64(sp + 24);\n        double arg4 = MEM_F64(sp + 32);\n        fprintf(stderr, \" phase time: %.2fu %.2fs %u:%04.1f %.0f%%\\n\", arg0, arg1, arg2, arg3, arg4);\n        fflush(stderr);\n        return 1;\n    }\n    int ret = 0;\n    for (;;) {\n        int width = 1;\n        uint32_t pos = format_addr;\n        char ch = MEM_S8(pos);\n\n        while (ch != '%' && ch != '\\0') {\n            ++pos;\n            ch = MEM_S8(pos);\n        }\n        if (format_addr != pos) {\n            if (wrapper_fwrite(mem, format_addr, 1, pos - format_addr, fp_addr) != pos - format_addr) {\n                break;\n            }\n        }\n        if (ch == '\\0') {\n            break;\n        }\n        ++pos;\n        ch = MEM_S8(pos);\n        if (ch >= '1' && ch <= '9') {\n            ++pos;\n            width = ch - '0';\n            ch = MEM_S8(pos);\n        }\n\n        switch (ch) {\n            case 'd':\n            case 'x':\n            case 'X':\n            case 'c':\n            case 'u': {\n                char buf[32];\n\n                char formatSpecifier[0x100] = { 0 };\n\n                formatSpecifier[0] = '%';\n                formatSpecifier[1] = width + '0';\n                formatSpecifier[2] = ch;\n\n                sprintf(buf, formatSpecifier, MEM_U32(sp));\n\n                strcpy1(mem, INTBUF_ADDR, buf);\n                if (wrapper_fputs(mem, INTBUF_ADDR, fp_addr) == -1) {\n                    return ret;\n                }\n                sp += 4;\n                ++ret;\n                break;\n            }\n            case 's': {\n                if (wrapper_fputs(mem, MEM_U32(sp), fp_addr) == -1) {\n                    return ret;\n                }\n                sp += 4;\n                ++ret;\n                break;\n            }\n            default:\n                fprintf(stderr, \"missing format: '%s'\\n\", format);\n                assert(0 && \"non-implemented fprintf format\");\n        }\n        format_addr = ++pos;\n    }\n    return ret;\n}\n\nint wrapper__doprnt(uint8_t* mem, uint32_t format_addr, uint32_t params_addr, uint32_t fp_addr) {\n    assert(0 && \"_doprnt not implemented\");\n    return 0;\n}\n\nuint32_t wrapper_strlen(uint8_t* mem, uint32_t str_addr) {\n    uint32_t len = 0;\n    while (MEM_S8(str_addr) != '\\0') {\n        ++str_addr;\n        ++len;\n    }\n    return len;\n}\n\nint wrapper_open(uint8_t* mem, uint32_t pathname_addr, int flags, int mode) {\n    STRING(pathname)\n\n    char rpathname[PATH_MAX + 1];\n    redirect_path(rpathname, pathname, \"/usr/include\", usr_include_redirect);\n\n    int f = flags & O_ACCMODE;\n    if (flags & 0x100) {\n        f |= O_CREAT;\n    }\n    if (flags & 0x200) {\n        f |= O_TRUNC;\n    }\n    if (flags & 0x400) {\n        f |= O_EXCL;\n    }\n    if (flags & 0x800) {\n        f |= O_NOCTTY;\n    }\n    if (flags & 0x08) {\n        f |= O_APPEND;\n    }\n\n    int fd = open(rpathname, f, mode);\n    MEM_U32(ERRNO_ADDR) = errno;\n    return fd;\n}\n\nint wrapper_creat(uint8_t* mem, uint32_t pathname_addr, int mode) {\n    STRING(pathname)\n    int ret = creat(pathname, mode);\n    if (ret < 0) {\n        MEM_U32(ERRNO_ADDR) = errno;\n    }\n    return ret;\n}\n\nint wrapper_access(uint8_t* mem, uint32_t pathname_addr, int mode) {\n    STRING(pathname)\n    int ret = access(pathname, mode);\n    if (ret != 0) {\n        MEM_U32(ERRNO_ADDR) = errno;\n    }\n    return ret;\n}\n\nint wrapper_rename(uint8_t* mem, uint32_t oldpath_addr, uint32_t newpath_addr) {\n    STRING(oldpath)\n    STRING(newpath)\n    int ret = rename(oldpath, newpath);\n    if (ret != 0) {\n        MEM_U32(ERRNO_ADDR) = errno;\n    }\n    return ret;\n}\n\nint wrapper_utime(uint8_t* mem, uint32_t filename_addr, uint32_t times_addr) {\n    STRING(filename)\n    struct utimbuf buf = { 0, 0 };\n    int ret = utime(filename, times_addr == 0 ? NULL : &buf);\n    if (ret == 0) {\n        if (times_addr != 0) {\n            MEM_U32(times_addr + 0) = buf.actime;\n            MEM_U32(times_addr + 4) = buf.modtime;\n        }\n    } else {\n        MEM_U32(ERRNO_ADDR) = errno;\n    }\n    return ret;\n}\n\nint wrapper_flock(uint8_t* mem, int fd, int operation) {\n    int ret = flock(fd, operation);\n    if (ret != 0) {\n        MEM_U32(ERRNO_ADDR) = errno;\n    }\n    return ret;\n}\n\nint wrapper_chmod(uint8_t* mem, uint32_t path_addr, uint32_t mode) {\n    STRING(path)\n    int ret = chmod(path, mode);\n    if (ret < 0) {\n        MEM_U32(ERRNO_ADDR) = errno;\n    }\n    return ret;\n}\n\nint wrapper_umask(int mode) {\n    return umask(mode);\n}\n\nuint32_t wrapper_ecvt(uint8_t* mem, double number, int ndigits, uint32_t decpt_addr, uint32_t sign_addr) {\n    assert(0);\n}\n\nuint32_t wrapper_fcvt(uint8_t* mem, double number, int ndigits, uint32_t decpt_addr, uint32_t sign_addr) {\n    assert(0);\n}\n\ndouble wrapper_sqrt(double v) {\n    return sqrt(v);\n}\n\nfloat wrapper_sqrtf(float v) {\n    return sqrtf(v);\n}\n\nint wrapper_atoi(uint8_t* mem, uint32_t nptr_addr) {\n    STRING(nptr)\n    return atoi(nptr);\n}\n\nint wrapper_atol(uint8_t* mem, uint32_t nptr_addr) {\n    return wrapper_atoi(mem, nptr_addr);\n}\n\ndouble wrapper_atof(uint8_t* mem, uint32_t nptr_addr) {\n    STRING(nptr);\n    return atof(nptr);\n}\n\nint wrapper_strtol(uint8_t* mem, uint32_t nptr_addr, uint32_t endptr_addr, int base) {\n    STRING(nptr)\n    char* endptr = NULL;\n    int64_t res = strtoll(nptr, endptr_addr != 0 ? &endptr : NULL, base);\n    if (res > INT_MAX) {\n        MEM_U32(ERRNO_ADDR) = ERANGE;\n        res = INT_MAX;\n    }\n    if (res < INT_MIN) {\n        MEM_U32(ERRNO_ADDR) = ERANGE;\n        res = INT_MIN;\n    }\n    if (endptr != NULL) {\n        MEM_U32(endptr_addr) = nptr_addr + (uint32_t)(endptr - nptr);\n    }\n    return res;\n}\n\nuint32_t wrapper_strtoul(uint8_t* mem, uint32_t nptr_addr, uint32_t endptr_addr, int base) {\n    STRING(nptr)\n    char* endptr = NULL;\n    uint64_t res = strtoull(nptr, endptr_addr != 0 ? &endptr : NULL, base);\n    if (res > INT_MAX) {\n        MEM_U32(ERRNO_ADDR) = ERANGE;\n        res = INT_MAX;\n    }\n    if (endptr != NULL) {\n        MEM_U32(endptr_addr) = nptr_addr + (uint32_t)(endptr - nptr);\n    }\n    return res;\n}\n\nint64_t wrapper_strtoll(uint8_t* mem, uint32_t nptr_addr, uint32_t endptr_addr, int base) {\n    STRING(nptr)\n    char* endptr = NULL;\n    errno = 0;\n    int64_t res = strtoll(nptr, endptr_addr != 0 ? &endptr : NULL, base);\n    if (errno != 0) {\n        MEM_U32(ERRNO_ADDR) = errno;\n    }\n    if (endptr != NULL) {\n        MEM_U32(endptr_addr) = nptr_addr + (uint32_t)(endptr - nptr);\n    }\n    return res;\n}\n\nuint64_t wrapper_strtoull(uint8_t* mem, uint32_t nptr_addr, uint32_t endptr_addr, int base) {\n    STRING(nptr)\n    char* endptr = NULL;\n    errno = 0;\n    uint64_t res = strtoull(nptr, endptr_addr != 0 ? &endptr : NULL, base);\n    if (errno != 0) {\n        MEM_U32(ERRNO_ADDR) = errno;\n    }\n    if (endptr != NULL) {\n        MEM_U32(endptr_addr) = nptr_addr + (uint32_t)(endptr - nptr);\n    }\n    return res;\n}\n\ndouble wrapper_strtod(uint8_t* mem, uint32_t nptr_addr, uint32_t endptr_addr) {\n    STRING(nptr)\n    char* endptr = NULL;\n    errno = 0;\n    double res = strtod(nptr, endptr_addr != 0 ? &endptr : NULL);\n    if (errno != 0) {\n        MEM_U32(ERRNO_ADDR) = errno;\n    }\n    if (endptr != NULL) {\n        MEM_U32(endptr_addr) = nptr_addr + (uint32_t)(endptr - nptr);\n    }\n    return res;\n}\n\nuint32_t wrapper_strchr(uint8_t* mem, uint32_t str_addr, int c) {\n    c = c & 0xff;\n    for (;;) {\n        unsigned char ch = MEM_U8(str_addr);\n        if (ch == c) {\n            return str_addr;\n        }\n        if (ch == '\\0') {\n            return 0;\n        }\n        ++str_addr;\n    }\n}\n\nuint32_t wrapper_strrchr(uint8_t* mem, uint32_t str_addr, int c) {\n    c = c & 0xff;\n    uint32_t ret = 0;\n    for (;;) {\n        unsigned char ch = MEM_U8(str_addr);\n        if (ch == c) {\n            ret = str_addr;\n        }\n        if (ch == '\\0') {\n            return ret;\n        }\n        ++str_addr;\n    }\n}\n\nuint32_t wrapper_strcspn(uint8_t* mem, uint32_t str_addr, uint32_t invalid_addr) {\n    STRING(invalid)\n    uint32_t n = strlen(invalid);\n    uint32_t pos = 0;\n    char c;\n    while ((c = MEM_S8(str_addr)) != 0) {\n        for (int i = 0; i < n; i++) {\n            if (c == invalid[i]) {\n                return pos;\n            }\n        }\n        ++pos;\n        ++str_addr;\n    }\n    return pos;\n}\n\nuint32_t wrapper_strpbrk(uint8_t* mem, uint32_t str_addr, uint32_t accept_addr) {\n    STRING(accept)\n    uint32_t n = strlen(accept);\n    char c;\n    while ((c = MEM_S8(str_addr)) != 0) {\n        for (int i = 0; i < n; i++) {\n            if (c == accept[i]) {\n                return str_addr;\n            }\n        }\n        ++str_addr;\n    }\n    return 0;\n}\n\nstatic void stat_common(uint8_t* mem, uint32_t buf_addr, struct stat* statbuf) {\n    struct irix_stat {\n        int st_dev;\n        int pad1[3];\n        int st_ino;\n        int st_mode;\n        int st_nlink;\n        int st_uid;\n        int st_gid;\n        int st_rdev;\n        int pad2[2];\n        int st_size;\n        int pad3;\n        struct timespec_t_irix st_atim;\n        struct timespec_t_irix st_mtim;\n        struct timespec_t_irix st_ctim;\n        int st_blksize;\n        int st_blocks;\n    } s;\n    s.st_dev = statbuf->st_dev;\n    s.st_ino = statbuf->st_ino;\n    s.st_mode = statbuf->st_mode;\n    s.st_nlink = statbuf->st_nlink;\n    s.st_uid = statbuf->st_uid;\n    s.st_gid = statbuf->st_gid;\n    s.st_rdev = statbuf->st_rdev;\n    s.st_size = statbuf->st_size;\n#ifdef __APPLE__\n    s.st_atim.tv_sec = statbuf->st_atimespec.tv_sec;\n    s.st_atim.tv_nsec = statbuf->st_atimespec.tv_nsec;\n    s.st_mtim.tv_sec = statbuf->st_mtimespec.tv_sec;\n    s.st_mtim.tv_nsec = statbuf->st_mtimespec.tv_nsec;\n    s.st_ctim.tv_sec = statbuf->st_ctimespec.tv_sec;\n    s.st_ctim.tv_nsec = statbuf->st_ctimespec.tv_nsec;\n#else\n    s.st_atim.tv_sec = statbuf->st_atim.tv_sec;\n    s.st_atim.tv_nsec = statbuf->st_atim.tv_nsec;\n    s.st_mtim.tv_sec = statbuf->st_mtim.tv_sec;\n    s.st_mtim.tv_nsec = statbuf->st_mtim.tv_nsec;\n    s.st_ctim.tv_sec = statbuf->st_ctim.tv_sec;\n    s.st_ctim.tv_nsec = statbuf->st_ctim.tv_nsec;\n#endif\n    memcpy(&MEM_U32(buf_addr), &s, sizeof(s));\n}\n\nint wrapper_fstat(uint8_t* mem, int fildes, uint32_t buf_addr) {\n    struct stat statbuf;\n    if (fstat(fildes, &statbuf) < 0) {\n        MEM_U32(ERRNO_ADDR) = errno;\n        return -1;\n    } else {\n        stat_common(mem, buf_addr, &statbuf);\n        return 0;\n    }\n}\n\nint wrapper_stat(uint8_t* mem, uint32_t pathname_addr, uint32_t buf_addr) {\n    STRING(pathname)\n    struct stat statbuf;\n    if (stat(pathname, &statbuf) < 0) {\n        MEM_U32(ERRNO_ADDR) = errno;\n        return -1;\n    } else {\n        stat_common(mem, buf_addr, &statbuf);\n        return 0;\n    }\n}\n\nint wrapper_ftruncate(uint8_t* mem, int fd, int length) {\n    int ret = ftruncate(fd, length);\n    if (ret != 0) {\n        MEM_U32(ERRNO_ADDR) = errno;\n    }\n    return ret;\n}\n\nint wrapper_truncate(uint8_t* mem, uint32_t pathname_addr, int length) {\n    STRING(pathname)\n    int ret = truncate(pathname, length);\n    if (ret != 0) {\n        MEM_U32(ERRNO_ADDR) = errno;\n    }\n    return ret;\n}\n\nvoid wrapper_bcopy(uint8_t* mem, uint32_t src_addr, uint32_t dst_addr, uint32_t len) {\n    if (dst_addr % 4 == 0 && src_addr % 4 == 0 && len % 4 == 0) {\n        // Use memmove to copy regions that are 4-byte aligned.\n        // This prevents the byte-swapped mem from causing issues when copying normally.\n        // Memmove handles overlapping copies correctly, so overlap does not need to be checked.\n        memmove(&MEM_U32(dst_addr), &MEM_U32(src_addr), len);\n    } else if (dst_addr > src_addr) {\n        // Perform a reverse byte-swapped copy when the destination is ahead of the source.\n        // This prevents overwriting the source contents before they're read.\n        dst_addr += len - 1;\n        src_addr += len - 1;\n        while (len--) {\n            MEM_U8(dst_addr) = MEM_U8(src_addr);\n            --dst_addr;\n            --src_addr;\n        }\n    } else {\n        // Otherwise, perform a normal byte-swapped copy.\n        while (len--) {\n            MEM_U8(dst_addr) = MEM_U8(src_addr);\n            ++dst_addr;\n            ++src_addr;\n        }\n    }\n}\n\n/**\n * IRIX's memcpy seems to allow overlapping destination and source pointers, while the C standard dictates\n * both pointer should not overlap, (UB otherwise).\n * Because of this, we only use host bcopy since it can handle overlapping regions\n */\nuint32_t wrapper_memcpy(uint8_t* mem, uint32_t dst_addr, uint32_t src_addr, uint32_t len) {\n    wrapper_bcopy(mem, src_addr, dst_addr, len);\n    return dst_addr;\n}\n\nuint32_t wrapper_memccpy(uint8_t* mem, uint32_t dst_addr, uint32_t src_addr, int c, uint32_t len) {\n    while (len--) {\n        uint8_t ch = MEM_U8(src_addr);\n        MEM_U8(dst_addr) = ch;\n        ++dst_addr;\n        ++src_addr;\n        if (ch == c) {\n            return dst_addr;\n        }\n    }\n    return 0;\n}\n\nint wrapper_read(uint8_t* mem, int fd, uint32_t buf_addr, uint32_t nbytes) {\n    uint8_t* buf = (uint8_t*)malloc(nbytes);\n    ssize_t ret = read(fd, buf, nbytes);\n    if (ret < 0) {\n        MEM_U32(ERRNO_ADDR) = errno;\n    } else {\n        for (ssize_t i = 0; i < ret; i++) {\n            MEM_U8(buf_addr + i) = buf[i];\n        }\n    }\n    free(buf);\n    return (int)ret;\n}\n\nint wrapper_write(uint8_t* mem, int fd, uint32_t buf_addr, uint32_t nbytes) {\n    uint8_t* buf = (uint8_t*)malloc(nbytes);\n    for (size_t i = 0; i < nbytes; i++) {\n        buf[i] = MEM_U8(buf_addr + i);\n    }\n    ssize_t ret = write(fd, buf, nbytes);\n    if (ret < 0) {\n        MEM_U32(ERRNO_ADDR) = errno;\n    }\n    free(buf);\n    return (int)ret;\n}\n\nstatic uint32_t init_file(uint8_t* mem, int fd, int i, const char* path, const char* mode) {\n    int flags = O_RDONLY;\n    if (strcmp(mode, \"r\") == 0 || strcmp(mode, \"rb\") == 0) {\n        flags = O_RDONLY;\n    } else if (strcmp(mode, \"w\") == 0 || strcmp(mode, \"wb\") == 0) {\n        flags = O_WRONLY | O_CREAT | O_TRUNC;\n    } else if (strcmp(mode, \"a\") == 0 || strcmp(mode, \"ab\") == 0) {\n        flags = O_WRONLY | O_CREAT | O_APPEND;\n    } else if (strcmp(mode, \"r+\") == 0 || strcmp(mode, \"r+b\") == 0) {\n        flags = O_RDWR;\n    } else if (strcmp(mode, \"w+\") == 0 || strcmp(mode, \"w+b\") == 0) {\n        flags = O_RDWR | O_CREAT | O_TRUNC;\n    } else if (strcmp(mode, \"a+\") == 0 || strcmp(mode, \"a+b\") == 0) {\n        flags = O_RDWR | O_CREAT | O_APPEND;\n    }\n    if (fd == -1) {\n        char rpathname[PATH_MAX + 1];\n        redirect_path(rpathname, path, \"/usr/lib\", usr_lib_redirect);\n\n        fd = open(rpathname, flags, 0666);\n\n        if (fd < 0) {\n            MEM_U32(ERRNO_ADDR) = errno;\n            return 0;\n        }\n    }\n    struct FILE_irix* f = (struct FILE_irix*)&MEM_U32(IOB_ADDR);\n    uint32_t ret = 0;\n    if (i == -1) {\n        for (i = 3; i < NFILE; i++) {\n            if (f[i]._flag == 0) {\n                break;\n            }\n        }\n    }\n    assert(i < NFILE);\n    g_file_max = i + 1;\n    ret = IOB_ADDR + i * sizeof(struct FILE_irix);\n    f[i]._cnt = 0;\n    f[i]._ptr_addr = 0;\n    f[i]._base_addr = 0;\n    f[i]._file = fd;\n    f[i]._flag = (flags & O_ACCMODE) == O_RDONLY ? IOREAD : 0;\n    f[i]._flag |= (flags & O_ACCMODE) == O_WRONLY ? IOWRT : 0;\n    f[i]._flag |= (flags & O_ACCMODE) == O_RDWR ? IORW : 0;\n    bufendtab[i] = 0;\n    return ret;\n}\n\nuint32_t wrapper_fopen(uint8_t* mem, uint32_t path_addr, uint32_t mode_addr) {\n    assert(path_addr != 0);\n    assert(mode_addr != 0);\n\n    STRING(path)\n    STRING(mode)\n    return init_file(mem, -1, -1, path, mode);\n}\n\nuint32_t wrapper_freopen(uint8_t* mem, uint32_t path_addr, uint32_t mode_addr, uint32_t fp_addr) {\n    STRING(path)\n    STRING(mode)\n    struct FILE_irix* f = (struct FILE_irix*)&MEM_U32(fp_addr);\n    wrapper_fclose(mem, fp_addr);\n    return init_file(mem, -1, f - (struct FILE_irix*)&MEM_U32(IOB_ADDR), path, mode);\n}\n\nint wrapper_fclose(uint8_t* mem, uint32_t fp_addr) {\n    struct FILE_irix* f = (struct FILE_irix*)&MEM_U32(fp_addr);\n    wrapper_fflush(mem, fp_addr);\n    if (f->_flag & IOMYBUF) {\n        wrapper_free(mem, f->_base_addr);\n    }\n    f->_flag = 0;\n    close(f->_file);\n    return 0;\n}\n\nstatic int flush_all(uint8_t* mem) {\n    struct FILE_irix* f = (struct FILE_irix*)&MEM_U32(IOB_ADDR);\n    int ret = 0;\n    for (int i = 0; i < g_file_max; i++) {\n        if (f[i]._flag & IOWRT) {\n            ret |= wrapper_fflush(mem, IOB_ADDR + i * sizeof(struct FILE_irix));\n        }\n    }\n    return ret;\n}\n\nint wrapper_fflush(uint8_t* mem, uint32_t fp_addr) {\n    if (fp_addr == 0) {\n        // Flush all\n        return flush_all(mem);\n    }\n    struct FILE_irix* f = (struct FILE_irix*)&MEM_U32(fp_addr);\n    if (f->_flag & IOWRT) {\n        int p = 0;\n        int to_flush = f->_ptr_addr - f->_base_addr;\n        int c = to_flush;\n        while (c > 0) {\n            int r = wrapper_write(mem, f->_file, f->_base_addr + p, c);\n            if (r < 0) {\n                f->_file |= IOERR;\n                return -1;\n            }\n            p += r;\n            c -= r;\n        }\n        f->_ptr_addr = f->_base_addr;\n        f->_cnt += to_flush;\n    }\n    return 0;\n}\n\nint wrapper_fchown(uint8_t* mem, int fd, int owner, int group) {\n    int ret = fchown(fd, owner, group);\n    if (ret != 0) {\n        MEM_U32(ERRNO_ADDR) = errno;\n    }\n    return ret;\n}\n\nint wrapper_ftell(uint8_t* mem, uint32_t fp_addr) {\n    struct FILE_irix* f = (struct FILE_irix*)&MEM_U32(fp_addr);\n    int adjust;\n    if (f->_cnt < 0) {\n        f->_cnt = 0;\n    }\n    if (f->_flag & IOREAD) {\n        adjust = -f->_cnt;\n    } else if (f->_flag & (IOWRT | IORW)) {\n        adjust = 0;\n        if ((f->_flag & IOWRT) && f->_base_addr != 0 && (f->_flag & IONBF) == 0) {\n            adjust = f->_ptr_addr - f->_base_addr;\n        }\n    } else {\n        return -1;\n    }\n    int res = wrapper_lseek(mem, f->_file, 0, 1);\n    if (res >= 0) {\n        res += adjust;\n    }\n    return res;\n}\n\nvoid wrapper_rewind(uint8_t* mem, uint32_t fp_addr) {\n    (void)wrapper_fseek(mem, fp_addr, 0, SEEK_SET);\n    struct FILE_irix* f = (struct FILE_irix*)&MEM_U32(fp_addr);\n    f->_flag &= ~IOERR;\n}\n\nint wrapper_fseek(uint8_t* mem, uint32_t fp_addr, int offset, int origin) {\n    struct FILE_irix* f = (struct FILE_irix*)&MEM_U32(fp_addr);\n    int c, p;\n    f->_flag &= ~IOEOF;\n    if (f->_flag & IOREAD) {\n        if (origin < SEEK_END && f->_base_addr && !(f->_flag & IONBF)) {\n            c = f->_cnt;\n            p = offset;\n            if (origin == SEEK_SET) {\n                p += c - lseek(f->_file, 0L, SEEK_CUR);\n            } else {\n                offset -= c;\n            }\n            if (!(f->_flag & IORW) && c > 0 && p <= c && p >= f->_base_addr - f->_ptr_addr) {\n                f->_ptr_addr += p;\n                f->_cnt -= p;\n                return 0;\n            }\n        }\n        if (f->_flag & IORW) {\n            f->_ptr_addr = f->_base_addr;\n            f->_flag &= ~IOREAD;\n        }\n        p = lseek(f->_file, offset, origin);\n        f->_cnt = 0;\n    } else if (f->_flag & (IOWRT | IORW)) {\n        wrapper_fflush(mem, fp_addr);\n        if (f->_flag & IORW) {\n            f->_cnt = 0;\n            f->_flag &= ~IOWRT;\n            f->_ptr_addr = f->_base_addr;\n        }\n        p = lseek(f->_file, offset, origin);\n    }\n    if (p < 0) {\n        MEM_U32(ERRNO_ADDR) = errno;\n        return p;\n    }\n    return 0;\n}\n\nint wrapper_lseek(uint8_t* mem, int fd, int offset, int whence) {\n    int ret = (int)lseek(fd, offset, whence);\n    if (ret == -1) {\n        MEM_U32(ERRNO_ADDR) = errno;\n    }\n    return ret;\n}\n\nint wrapper_dup(uint8_t* mem, int fd) {\n    fd = dup(fd);\n    if (fd < 0) {\n        MEM_U32(ERRNO_ADDR) = errno;\n    }\n    return fd;\n}\n\nint wrapper_dup2(uint8_t* mem, int oldfd, int newfd) {\n    int fd = dup2(oldfd, newfd);\n    if (fd < 0) {\n        MEM_U32(ERRNO_ADDR) = errno;\n    }\n    return fd;\n}\n\nint wrapper_pipe(uint8_t* mem, uint32_t pipefd_addr) {\n    int pipefd[2];\n    int ret = pipe(pipefd);\n    if (ret == 0) {\n        MEM_U32(pipefd_addr + 0) = pipefd[0];\n        MEM_U32(pipefd_addr + 4) = pipefd[1];\n    } else {\n        MEM_U32(ERRNO_ADDR) = errno;\n    }\n    return ret;\n}\n\nvoid wrapper_perror(uint8_t* mem, uint32_t str_addr) {\n    STRING(str)\n    perror(str);\n}\n\nint wrapper_fdopen(uint8_t* mem, int fd, uint32_t mode_addr) {\n    STRING(mode)\n    return init_file(mem, fd, -1, NULL, mode);\n}\n\nuint32_t wrapper_memset(uint8_t* mem, uint32_t dest_addr, int byte, uint32_t n) {\n    uint32_t saved = dest_addr;\n    if (dest_addr % 4 == 0 && n % 4 == 0) {\n        memset(&MEM_U32(dest_addr), byte, n);\n    } else {\n        while (n--) {\n            MEM_U8(dest_addr) = (uint8_t)byte;\n            ++dest_addr;\n        }\n    }\n    return saved;\n}\n\nint wrapper_bcmp(uint8_t* mem, uint32_t s1_addr, uint32_t s2_addr, uint32_t n) {\n    while (n--) {\n        if (MEM_U8(s1_addr) != MEM_U8(s2_addr)) {\n            return 1;\n        }\n        ++s1_addr;\n        ++s2_addr;\n    }\n    return 0;\n}\n\nint wrapper_memcmp(uint8_t* mem, uint32_t s1_addr, uint32_t s2_addr, uint32_t n) {\n    while (n--) {\n        unsigned char c1 = MEM_U8(s1_addr);\n        unsigned char c2 = MEM_U8(s2_addr);\n        if (c1 < c2) {\n            return -1;\n        }\n        if (c1 > c2) {\n            return 1;\n        }\n        ++s1_addr;\n        ++s2_addr;\n    }\n    return 0;\n}\n\nint wrapper_getpid(void) {\n    return getpid();\n}\n\nint wrapper_getpgrp(uint8_t* mem) {\n    int ret = getpgrp();\n    if (ret == -1) {\n        MEM_U32(ERRNO_ADDR) = errno;\n    }\n    return ret;\n}\n\nint wrapper_remove(uint8_t* mem, uint32_t path_addr) {\n    STRING(path)\n    int ret = remove(path);\n    if (ret < 0) {\n        MEM_U32(ERRNO_ADDR) = errno;\n    }\n    return ret;\n}\n\nint wrapper_unlink(uint8_t* mem, uint32_t path_addr) {\n    if (path_addr == 0) {\n        fprintf(stderr, \"Warning: unlink with NULL as arguement\\n\");\n        MEM_U32(ERRNO_ADDR) = EFAULT;\n        return -1;\n    }\n    STRING(path)\n    int ret = unlink(path);\n    if (ret < 0) {\n        MEM_U32(ERRNO_ADDR) = errno;\n    }\n    return ret;\n}\n\nint wrapper_close(uint8_t* mem, int fd) {\n    int ret = close(fd);\n    if (ret < 0) {\n        MEM_U32(ERRNO_ADDR) = errno;\n    }\n    return ret;\n}\n\nint wrapper_strcmp(uint8_t* mem, uint32_t s1_addr, uint32_t s2_addr) {\n    for (;;) {\n        char c1 = MEM_S8(s1_addr);\n        char c2 = MEM_S8(s2_addr);\n        if (c1 != c2) {\n            return c1 < c2 ? -1 : 1;\n        }\n        if (c1 == '\\0') {\n            return 0;\n        }\n        ++s1_addr;\n        ++s2_addr;\n    }\n}\n\nint wrapper_strncmp(uint8_t* mem, uint32_t s1_addr, uint32_t s2_addr, uint32_t n) {\n    if (n == 0) {\n        return 0;\n    }\n    for (;;) {\n        char c1 = MEM_S8(s1_addr);\n        char c2 = MEM_S8(s2_addr);\n        if (c1 != c2) {\n            return c1 < c2 ? -1 : 1;\n        }\n        if (--n == 0 || c1 == '\\0') {\n            return 0;\n        }\n        ++s1_addr;\n        ++s2_addr;\n    }\n}\n\nuint32_t wrapper_strcpy(uint8_t* mem, uint32_t dest_addr, uint32_t src_addr) {\n    uint32_t saved = dest_addr;\n    for (;;) {\n        char c = MEM_S8(src_addr);\n        ++src_addr;\n        MEM_S8(dest_addr) = c;\n        ++dest_addr;\n        if (c == '\\0') {\n            return saved;\n        }\n    }\n}\n\nuint32_t wrapper_strncpy(uint8_t* mem, uint32_t dest_addr, uint32_t src_addr, uint32_t n) {\n    uint32_t i;\n    for (i = 0; i < n && MEM_S8(src_addr) != '\\0'; i++) {\n        MEM_S8(dest_addr + i) = MEM_S8(src_addr + i);\n    }\n    for (; i < n; i++) {\n        MEM_S8(dest_addr + i) = '\\0';\n    }\n    return dest_addr;\n}\n\nuint32_t wrapper_strcat(uint8_t* mem, uint32_t dest_addr, uint32_t src_addr) {\n    uint32_t saved = dest_addr;\n    while (MEM_S8(dest_addr) != '\\0') {\n        ++dest_addr;\n    }\n    while (MEM_S8(src_addr) != '\\0') {\n        MEM_S8(dest_addr) = MEM_S8(src_addr);\n        ++src_addr;\n        ++dest_addr;\n    }\n    MEM_S8(dest_addr) = '\\0';\n    return saved;\n}\n\nuint32_t wrapper_strncat(uint8_t* mem, uint32_t dest_addr, uint32_t src_addr, uint32_t n) {\n    uint32_t saved = dest_addr;\n    while (MEM_S8(dest_addr) != '\\0') {\n        ++dest_addr;\n    }\n    while (n-- && MEM_S8(src_addr) != '\\0') {\n        MEM_S8(dest_addr) = MEM_S8(src_addr);\n        ++src_addr;\n        ++dest_addr;\n    }\n    MEM_S8(dest_addr) = '\\0';\n    return saved;\n}\n\nuint32_t wrapper_strtok(uint8_t* mem, uint32_t str_addr, uint32_t delimiters_addr) {\n    if (str_addr == 0) {\n        str_addr = MEM_U32(STRTOK_DATA_ADDR);\n    }\n    if (str_addr == 0) {\n        // nothing remaining\n        return 0;\n    }\n    uint32_t p;\n    for (p = str_addr; MEM_S8(p) != '\\0'; p++) {\n        uint32_t q;\n        for (q = delimiters_addr; MEM_S8(q) != '\\0' && MEM_S8(q) != MEM_S8(p); q++) {}\n        if (MEM_S8(q) == '\\0') {\n            break;\n        }\n    }\n    if (MEM_S8(p) == '\\0') {\n        return 0;\n    }\n    uint32_t ret = p;\n    for (;;) {\n        uint32_t q;\n        for (q = delimiters_addr; MEM_S8(q) != '\\0' && MEM_S8(q) != MEM_S8(p); q++) {}\n        if (MEM_S8(q) != '\\0') {\n            MEM_S8(p) = '\\0';\n            MEM_U32(STRTOK_DATA_ADDR) = ++p;\n            return ret;\n        }\n        char next = MEM_S8(p);\n        ++p;\n        if (next == '\\0') {\n            MEM_U32(STRTOK_DATA_ADDR) = 0;\n            return ret;\n        }\n    }\n}\n\nuint32_t wrapper_strstr(uint8_t* mem, uint32_t str1_addr, uint32_t str2_addr) {\n    for (;;) {\n        if (MEM_S8(str1_addr) == '\\0') {\n            return 0;\n        }\n        uint32_t s1 = str1_addr;\n        uint32_t s2 = str2_addr;\n        for (;;) {\n            char c2 = MEM_S8(s2);\n            if (c2 == '\\0') {\n                return str1_addr;\n            }\n            if (MEM_S8(s1) == c2) {\n                ++s1;\n                ++s2;\n            } else {\n                break;\n            }\n        }\n        ++str1_addr;\n    }\n}\n\nuint32_t wrapper_strdup(uint8_t* mem, uint32_t str_addr) {\n    uint32_t len = wrapper_strlen(mem, str_addr) + 1;\n    uint32_t ret = wrapper_malloc(mem, len);\n    if (ret == 0) {\n        MEM_U32(ERRNO_ADDR) = ENOMEM;\n        return 0;\n    }\n    return wrapper_memcpy(mem, ret, str_addr, len);\n}\n\nint wrapper_toupper(int c) {\n    return toupper(c);\n}\n\nint wrapper_tolower(int c) {\n    return tolower(c);\n}\n\nint wrapper_gethostname(uint8_t* mem, uint32_t name_addr, uint32_t len) {\n    char buf[256] = { 0 };\n    if (len > 256) {\n        len = 256;\n    }\n    int ret = gethostname(buf, len);\n    if (ret < 0) {\n        MEM_U32(ERRNO_ADDR) = errno;\n    } else {\n        for (uint32_t i = 0; i < len; i++) {\n            MEM_S8(name_addr + i) = buf[i];\n        }\n    }\n    return ret;\n}\n\nint wrapper_isatty(uint8_t* mem, int fd) {\n    int ret = isatty(fd);\n    if (ret == 0) {\n        MEM_U32(ERRNO_ADDR) = errno;\n    }\n    return ret;\n}\n\nuint32_t wrapper_strftime(uint8_t* mem, uint32_t ptr_addr, uint32_t maxsize, uint32_t format_addr,\n                          uint32_t timeptr_addr) {\n    MEM_S8(ptr_addr) = 0;\n    return 0;\n}\n\nint wrapper_times(uint8_t* mem, uint32_t buffer_addr) {\n    struct tms_irix {\n        int tms_utime;\n        int tms_stime;\n        int tms_cutime;\n        int tms_cstime;\n    } r;\n    struct tms t;\n    clock_t ret = times(&t);\n    if (ret == (clock_t)-1) {\n        MEM_U32(ERRNO_ADDR) = errno;\n    } else {\n        r.tms_utime = t.tms_utime;\n        r.tms_stime = t.tms_stime;\n        r.tms_cutime = t.tms_cutime;\n        r.tms_cstime = t.tms_cstime;\n        MEM_U32(buffer_addr + 0x0) = t.tms_utime;\n        MEM_U32(buffer_addr + 0x4) = t.tms_stime;\n        MEM_U32(buffer_addr + 0x8) = t.tms_cutime;\n        MEM_U32(buffer_addr + 0xC) = t.tms_cstime;\n    }\n    return (int)ret;\n}\n\nint wrapper_clock(void) {\n    return (int)clock();\n}\n\nuint32_t wrapper_ctime(uint8_t* mem, uint32_t timep_addr) {\n    time_t t = MEM_S32(timep_addr);\n    char* res = ctime(&t);\n    size_t len = strlen(res) + 1;\n    uint32_t ret_addr = wrapper_malloc(mem, len);\n    uint32_t pos = ret_addr;\n    while (len--) {\n        MEM_S8(pos) = *res;\n        ++pos;\n        ++res;\n    }\n    return ret_addr;\n}\n\nuint32_t wrapper_localtime(uint8_t* mem, uint32_t timep_addr) {\n    time_t t = MEM_S32(timep_addr);\n    struct irix_tm {\n        int tm_sec;\n        int tm_min;\n        int tm_hour;\n        int tm_mday;\n        int tm_mon;\n        int tm_year;\n        int tm_wday;\n        int tm_yday;\n        int tm_isdst;\n    };\n    uint32_t ret = wrapper_malloc(mem, sizeof(struct irix_tm));\n    struct irix_tm* r = (struct irix_tm*)&MEM_U32(ret);\n    struct tm* l = localtime(&t);\n    r->tm_sec = l->tm_sec;\n    r->tm_min = l->tm_min;\n    r->tm_hour = l->tm_hour;\n    r->tm_mday = l->tm_mday;\n    r->tm_mon = l->tm_mon;\n    r->tm_year = l->tm_year;\n    r->tm_wday = l->tm_wday;\n    r->tm_yday = l->tm_yday;\n    r->tm_isdst = l->tm_isdst;\n    return ret;\n}\n\nint wrapper_setvbuf(uint8_t* mem, uint32_t fp_addr, uint32_t buf_addr, int mode, uint32_t size) {\n    struct FILE_irix* f = (struct FILE_irix*)&MEM_U32(fp_addr);\n    wrapper_fflush(mem, fp_addr);\n    if ((f->_flag & IOMYBUF) && f->_base_addr != 0) {\n        wrapper_free(mem, f->_base_addr);\n    }\n    size &= ~0xf;\n    f->_flag &= ~IOMYBUF;\n\n    if (buf_addr == 0) {\n        assert(size > 0);\n        buf_addr = wrapper_malloc(mem, size);\n        f->_flag |= IOMYBUF;\n    }\n\n    f->_base_addr = buf_addr;\n    f->_ptr_addr = buf_addr;\n    f->_cnt = 0;\n    bufendtab[(fp_addr - IOB_ADDR) / sizeof(struct FILE_irix)] = size;\n    return 0;\n}\n\nint wrapper___semgetc(uint8_t* mem, uint32_t fp_addr) {\n    assert(0);\n}\n\nint wrapper___semputc(uint8_t* mem, int c, uint32_t fp_addr) {\n    assert(0);\n}\n\nint wrapper_fgetc(uint8_t* mem, uint32_t fp_addr) {\n    struct FILE_irix* f = (struct FILE_irix*)&MEM_U32(fp_addr);\n    if (--f->_cnt < 0) {\n        return wrapper___filbuf(mem, fp_addr);\n    } else {\n        int ret = MEM_U8(f->_ptr_addr);\n        ++f->_ptr_addr;\n        return ret;\n    }\n}\n\nint wrapper_fgets(uint8_t* mem, uint32_t str_addr, int count, uint32_t fp_addr) {\n    bool modified = false;\n    uint32_t saved = str_addr;\n    for (count--; count > 0; count--) {\n        int ch = wrapper_fgetc(mem, fp_addr);\n        if (ch == -1) {\n            MEM_S8(str_addr) = '\\0';\n            return modified ? saved : 0;\n        }\n        modified = true;\n        MEM_S8(str_addr) = (char)ch;\n        ++str_addr;\n        if (ch == '\\n') {\n            break;\n        }\n    }\n    MEM_S8(str_addr) = '\\0';\n    return saved;\n}\n\nstatic void file_assign_buffer(uint8_t* mem, struct FILE_irix* f) {\n    f->_base_addr = wrapper_malloc(mem, STDIO_BUFSIZE);\n    f->_ptr_addr = f->_base_addr;\n    f->_flag |= IOMYBUF;\n    f->_cnt = 0;\n    bufendtab[f - (struct FILE_irix*)&MEM_U32(IOB_ADDR)] = STDIO_BUFSIZE;\n}\n\nint wrapper___filbuf(uint8_t* mem, uint32_t fp_addr) {\n    struct FILE_irix* f = (struct FILE_irix*)&MEM_U32(fp_addr);\n    if (!(f->_flag & IOREAD)) {\n        if (f->_flag & IORW) {\n            f->_flag |= IOREAD;\n        } else {\n            MEM_U32(ERRNO_ADDR) = 9; // EBADF\n            return -1;\n        }\n    }\n    if (f->_base_addr == 0) {\n        file_assign_buffer(mem, f);\n    }\n    uint32_t size = bufendtab[(fp_addr - IOB_ADDR) / sizeof(struct FILE_irix)];\n    int nread = wrapper_read(mem, f->_file, f->_base_addr, size);\n    int ret = -1;\n    if (nread > 0) {\n        f->_ptr_addr = f->_base_addr;\n        f->_cnt = nread;\n        ret = MEM_U8(f->_ptr_addr);\n        ++f->_ptr_addr;\n        --f->_cnt;\n    } else if (nread == 0) {\n        f->_flag |= IOEOF;\n    } else {\n        f->_flag |= IOERR;\n    }\n    return ret;\n}\n\nint wrapper___flsbuf(uint8_t* mem, int ch, uint32_t fp_addr) {\n    struct FILE_irix* f = (struct FILE_irix*)&MEM_U32(fp_addr);\n    if (wrapper_fflush(mem, fp_addr) != 0) {\n        return -1;\n    }\n    if (f->_base_addr == 0) {\n        file_assign_buffer(mem, f);\n        f->_cnt = bufendtab[f - (struct FILE_irix*)&MEM_U32(IOB_ADDR)];\n    }\n    MEM_U8(f->_ptr_addr) = ch;\n    ++f->_ptr_addr;\n    --f->_cnt;\n    if (f->_flag & IONBF) {\n        if (wrapper_fflush(mem, fp_addr) != 0) {\n            return -1;\n        }\n        f->_cnt = 0;\n    }\n    return ch;\n}\n\nint wrapper_ungetc(uint8_t* mem, int ch, uint32_t fp_addr) {\n    struct FILE_irix* f = (struct FILE_irix*)&MEM_U32(fp_addr);\n    if (ch == -1 || f->_ptr_addr == f->_base_addr) {\n        return -1;\n    }\n    --f->_ptr_addr;\n    MEM_U8(f->_ptr_addr) = (uint8_t)ch;\n    ++f->_cnt;\n    f->_flag &= ~IOEOF;\n    return ch;\n}\n\nuint32_t wrapper_gets(uint8_t* mem, uint32_t str_addr) {\n    uint32_t p, str0 = str_addr;\n    int n;\n\n    for (;;) {\n        if (STDIN->_cnt <= 0) {\n            if (wrapper___filbuf(mem, STDIN_ADDR) == -1) {\n                if (str0 == str_addr) {\n                    return 0;\n                }\n                break;\n            }\n            --STDIN->_ptr_addr;\n            ++STDIN->_cnt;\n        }\n        n = STDIN->_cnt;\n        if ((p = wrapper_memccpy(mem, str_addr, STDIN->_ptr_addr, '\\n', n)) != 0) {\n            n = p - str_addr;\n        }\n        str_addr += n;\n        STDIN->_cnt -= n;\n        STDIN->_ptr_addr += n;\n        // bufsync\n        if (p != 0) {\n            // found '\\n' in buffer\n            --str_addr;\n            break;\n        }\n    }\n    MEM_S8(str_addr) = '\\0';\n    return str0;\n}\n\nuint32_t wrapper_fread(uint8_t* mem, uint32_t data_addr, uint32_t size, uint32_t count, uint32_t fp_addr) {\n    struct FILE_irix* f = (struct FILE_irix*)&MEM_U32(fp_addr);\n    int nleft = count * size;\n    int n;\n    for (;;) {\n        if (f->_cnt <= 0) {\n            if (wrapper___filbuf(mem, fp_addr) == -1) {\n                return count - (nleft + size - 1) / size;\n            }\n            --f->_ptr_addr;\n            ++f->_cnt;\n        }\n        n = MIN(nleft, f->_cnt);\n        data_addr = wrapper_memcpy(mem, data_addr, f->_ptr_addr, n) + n;\n        f->_cnt -= n;\n        f->_ptr_addr += n;\n        if ((nleft -= n) <= 0) {\n            return count;\n        }\n    }\n}\n\nuint32_t wrapper_fwrite(uint8_t* mem, uint32_t data_addr, uint32_t size, uint32_t count, uint32_t fp_addr) {\n    struct FILE_irix* f = (struct FILE_irix*)&MEM_U32(fp_addr);\n    if (size > 0 && count > 0 && f->_base_addr == 0) {\n        file_assign_buffer(mem, f);\n        f->_cnt = bufendtab[f - (struct FILE_irix*)&MEM_U32(IOB_ADDR)];\n        f->_flag |= IOWRT;\n    }\n    uint32_t num_written = 0;\n    while (count--) {\n        uint32_t s = size;\n        while (s > 0) {\n            uint32_t to_write = f->_cnt;\n            if (s < to_write) {\n                to_write = s;\n            }\n            if (f->_cnt == 0) {\n                if (wrapper_fflush(mem, fp_addr) != 0) {\n                    return num_written;\n                }\n            }\n            wrapper_memcpy(mem, f->_ptr_addr, data_addr, to_write);\n            data_addr += to_write;\n            f->_ptr_addr += to_write;\n            f->_cnt -= to_write;\n            s -= to_write;\n        }\n        num_written++;\n    }\n    if (f->_flag & IONBF) {\n        wrapper_fflush(mem, fp_addr); // TODO check error return value\n    }\n    return num_written;\n}\n\nint wrapper_fputs(uint8_t* mem, uint32_t str_addr, uint32_t fp_addr) {\n    assert(str_addr != 0);\n\n    uint32_t len = wrapper_strlen(mem, str_addr);\n    uint32_t ret = wrapper_fwrite(mem, str_addr, 1, len, fp_addr);\n    return ret == 0 && len != 0 ? -1 : 0;\n}\n\nint wrapper_puts(uint8_t* mem, uint32_t str_addr) {\n    int ret = wrapper_fputs(mem, str_addr, STDOUT_ADDR);\n    if (ret != 0) {\n        return ret;\n    }\n    struct FILE_irix* f = STDOUT;\n    if (--f->_cnt < 0) {\n        if (wrapper___flsbuf(mem, '\\n', STDOUT_ADDR) != '\\n') {\n            return -1;\n        }\n    } else {\n        MEM_S8(f->_ptr_addr) = '\\n';\n        ++f->_ptr_addr;\n    }\n    return 0;\n}\n\nuint32_t wrapper_getcwd(uint8_t* mem, uint32_t buf_addr, uint32_t size) {\n    char buf[size];\n    if (getcwd(buf, size) == NULL) {\n        MEM_U32(ERRNO_ADDR) = errno;\n        return 0;\n    } else {\n        if (buf_addr == 0) {\n            buf_addr = wrapper_malloc(mem, size);\n        }\n        strcpy1(mem, buf_addr, buf);\n        return buf_addr;\n    }\n}\n\nint wrapper_time(uint8_t* mem, uint32_t tloc_addr) {\n    time_t ret = time(NULL);\n    if (ret == (time_t)-1) {\n        MEM_U32(ERRNO_ADDR) = errno;\n    } else if (tloc_addr != 0) {\n        MEM_S32(tloc_addr) = ret;\n    }\n    return ret;\n}\n\nvoid wrapper_bzero(uint8_t* mem, uint32_t str_addr, uint32_t n) {\n    while (n--) {\n        MEM_U8(str_addr) = 0;\n        ++str_addr;\n    }\n}\n\nint wrapper_fp_class_d(double d) {\n    union {\n        uint32_t w[2];\n        double d;\n    } bits;\n    bits.d = d;\n    uint32_t a2 = bits.w[1];\n    uint32_t a1 = a2 >> 20;\n    uint32_t a0 = a1;\n    a2 &= 0xfffff;\n    uint32_t a3 = bits.w[0];\n    a1 &= 0x7ff;\n    a0 &= 0x800;\n    if (a1 == 0x7ff) {\n        if (a2 == 0 && a3 == 0) {\n            return a0 == 0 ? 2 : 3;\n        }\n        a0 = a2 & 0x80000;\n        return a0 == 0 ? 1 : 0;\n    }\n    if (a1 == 0) {\n        if (a2 == 0 && a3 == 0) {\n            return a0 == 0 ? 8 : 9;\n        }\n        return a0 == 0 ? 6 : 7;\n    }\n    return a0 == 0 ? 4 : 5;\n}\n\ndouble wrapper_ldexp(double d, int i) {\n    return ldexp(d, i);\n}\n\nuint64_t wrapper___ll_mul(uint64_t a0, uint64_t a1) {\n    return a0 * a1;\n}\n\nint64_t wrapper___ll_div(int64_t a0, int64_t a1) {\n    return a0 / a1;\n}\n\nint64_t wrapper___ll_rem(uint64_t a0, int64_t a1) {\n    return a0 % a1;\n}\n\nuint64_t wrapper___ll_lshift(uint64_t a0, uint64_t shift) {\n    return a0 << (shift & 0x3F);\n}\n\nint64_t wrapper___ll_rshift(int64_t a0, uint64_t shift) {\n    return a0 >> (shift & 0x3F);\n}\n\nuint64_t wrapper___ull_div(uint64_t a0, uint64_t a1) {\n    return a0 / a1;\n}\n\nuint64_t wrapper___ull_rem(uint64_t a0, uint64_t a1) {\n    return a0 % a1;\n}\n\nuint64_t wrapper___ull_rshift(uint64_t a0, uint64_t shift) {\n    return a0 >> (shift & 0x3f);\n}\n\nuint64_t wrapper___d_to_ull(double d) {\n    return d;\n}\n\nint64_t wrapper___d_to_ll(double d) {\n    return d;\n}\n\nuint64_t wrapper___f_to_ull(float f) {\n    return f;\n}\n\nint64_t wrapper___f_to_ll(float f) {\n    return f;\n}\n\nfloat wrapper___ull_to_f(uint64_t v) {\n    return v;\n}\n\nfloat wrapper___ll_to_f(int64_t v) {\n    return v;\n}\n\ndouble wrapper___ull_to_d(uint64_t v) {\n    return v;\n}\n\ndouble wrapper___ll_to_d(int64_t v) {\n    return v;\n}\n\nvoid wrapper_abort(uint8_t* mem) {\n    abort();\n}\n\nvoid wrapper_exit(uint8_t* mem, int status) {\n    final_cleanup(mem);\n    exit(status);\n}\n\nvoid wrapper__exit(uint8_t* mem, int status) {\n    assert(0 && \"_exit not implemented\"); // exit() is already overridden\n}\n\nvoid wrapper__cleanup(uint8_t* mem) {\n}\n\nuint32_t wrapper__rld_new_interface(uint8_t* mem, uint32_t operation, uint32_t sp) {\n    assert(0 && \"_rld_new_interface not implemented\");\n    return 0;\n}\n\nvoid wrapper__exithandle(uint8_t* mem) {\n    assert(0 && \"_exithandle not implemented\");\n}\n\nint wrapper__prctl(uint8_t* mem, int operation, uint32_t sp) {\n    assert(0 && \"_prctl not implemented\");\n    return 0;\n}\n\ndouble wrapper__atod(uint8_t* mem, uint32_t buffer_addr, int ndigits, int dexp) {\n    // ftp://atoum.hst.nerim.net/irix/src/irix-6.5.5-src/6.5.5/m/irix/lib/libc/src/math/atod.c\n    assert(0 && \"_atod not implemented\");\n    return 0.0;\n}\n\nint wrapper_pathconf(uint8_t* mem, uint32_t path_addr, int name) {\n    STRING(path)\n    if (name == 5) {\n        errno = 0;\n        int ret = pathconf(path, _PC_PATH_MAX);\n        if (errno != 0) {\n            MEM_U32(ERRNO_ADDR) = errno;\n        }\n        return ret;\n    }\n    assert(0 && \"pathconf not implemented for the specific 'name'\");\n    return 0;\n}\n\nuint32_t wrapper_getenv(uint8_t* mem, uint32_t name_addr) {\n    STRING(name);\n    const char* value = getenv(name);\n    if (value == NULL) {\n        return 0;\n    }\n    size_t value_size = strlen(value) + 1;\n    uint32_t buf_addr = wrapper_malloc(mem, value_size);\n    strcpy1(mem, buf_addr, value);\n    return buf_addr;\n}\n\nuint32_t wrapper_gettxt(uint8_t* mem, uint32_t msgid_addr, uint32_t default_str_addr) {\n    // Return default for now\n    return default_str_addr;\n}\n\nuint32_t wrapper_setlocale(uint8_t* mem, int category, uint32_t locale_addr) {\n    assert(locale_addr != 0);\n    STRING(locale)\n    assert(category == 6); // LC_ALL\n    char* ret = setlocale(LC_ALL, locale);\n    // Let's hope the caller doesn't use the return value\n    return 0;\n}\n\nuint32_t wrapper_mmap(uint8_t* mem, uint32_t addr, uint32_t length, int prot, int flags, int fd, int offset) {\n    if (addr == 0 && prot == (prot & 3) && flags == 2) {\n        // Read/write, map private. Just make a copy.\n        uint8_t* ptr = mmap(0, length, PROT_READ, MAP_PRIVATE, fd, offset);\n        if (ptr == MAP_FAILED) {\n            MEM_U32(ERRNO_ADDR) = errno;\n            return -1;\n        }\n        uint32_t out = wrapper_malloc(mem, length);\n        for (uint32_t i = 0; i < length; i++) {\n            MEM_S8(out + i) = ptr[i];\n        }\n        munmap(ptr, length);\n        return out;\n    }\n    assert(0 && \"mmap not implemented\");\n    return 0;\n}\n\nint wrapper_munmap(uint8_t* mem, uint32_t addr, uint32_t length) {\n    return 0;\n}\n\nint wrapper_mprotect(uint8_t* mem, uint32_t addr, uint32_t length, int prot) {\n    assert(0 && \"mprotect not implemented\");\n    return 0;\n}\n\nint wrapper_sysconf(uint8_t* mem, int name) {\n    assert(0 && \"sysconf not implemented\");\n    return 0;\n}\n\nint wrapper_getpagesize(uint8_t* mem) {\n    return 4096;\n}\n\nint wrapper_strerror(uint8_t* mem, int errnum) {\n    errno = errnum;\n    perror(\"strerror\");\n    assert(0 && \"strerror not implemented\");\n    return 0;\n}\n\nint wrapper_ioctl(uint8_t* mem, int fd, uint32_t request, uint32_t sp) {\n    assert(0 && \"ioctl not implemented\");\n    return 0;\n}\n\nint wrapper_fcntl(uint8_t* mem, int fd, int cmd, uint32_t sp) {\n    assert(0 && \"fcntl not implemented\");\n    return 0;\n}\n\nstatic void signal_handler(int signum) {\n    uint32_t level = signal_context.recursion_level++;\n    uint8_t* mem = signal_context.handlers[signum].mem;\n    uint32_t fp_dest = signal_context.handlers[signum].fp_dest;\n    uint32_t sp = SIGNAL_HANDLER_STACK_START - 16 - level * 0x1000;\n    signal_context.handlers[signum].trampoline(mem, sp, signum, 0, 0, 0, fp_dest);\n    signal_context.recursion_level--;\n}\n\nuint32_t wrapper_signal(uint8_t* mem, int signum,\n                        uint64_t (*trampoline)(uint8_t* mem, uint32_t sp, uint32_t a0, uint32_t a1, uint32_t a2,\n                                               uint32_t a3, uint32_t fp_dest),\n                        uint32_t handler_addr, uint32_t sp) {\n    return 0;\n}\n\nuint32_t wrapper_sigset(uint8_t* mem, int signum,\n                        uint64_t (*trampoline)(uint8_t* mem, uint32_t sp, uint32_t a0, uint32_t a1, uint32_t a2,\n                                               uint32_t a3, uint32_t fp_dest),\n                        uint32_t disp_addr, uint32_t sp) {\n    void (*handler)(int) = signal_handler;\n\n    if ((int)disp_addr >= -1 && (int)disp_addr <= 1) {\n        // SIG_DFL etc.\n        handler = (void (*)(int))(intptr_t)(int)disp_addr;\n    }\n\n    switch (signum) {\n        case 2:\n            signum = SIGINT;\n            break;\n        case 13:\n            signum = SIGPIPE;\n            break;\n        case 15:\n            signum = SIGTERM;\n            break;\n        default:\n            assert(0 && \"sigset with this signum not implemented\");\n            break;\n    }\n\n    signal_context.handlers[signum].trampoline = trampoline;\n    signal_context.handlers[signum].mem = mem;\n    signal_context.handlers[signum].fp_dest = disp_addr;\n\n    return (uint32_t)(uintptr_t)sigset(signum, handler); // for now only support SIG_DFL etc. as return value\n}\n\nint wrapper_get_fpc_csr(uint8_t* mem) {\n    return 0;\n}\n\nint wrapper_set_fpc_csr(uint8_t* mem, int csr) {\n    return 0;\n}\n\nint wrapper_setjmp(uint8_t* mem, uint32_t addr) {\n    return 0;\n}\n\nvoid wrapper_longjmp(uint8_t* mem, uint32_t addr, int status) {\n    assert(0 && \"longjmp not implemented\");\n}\n\nuint32_t wrapper_tempnam(uint8_t *mem, uint32_t dir_addr, uint32_t pfx_addr) {\n    STRING(dir)\n    STRING(pfx)\n    char *ret = tempnam(dir, pfx);\n    char *ret_saved = ret;\n    if (ret == NULL) {\n        MEM_U32(ERRNO_ADDR) = errno;\n        return 0;\n    }\n    size_t len = strlen(ret) + 1;\n    uint32_t ret_addr = wrapper_malloc(mem, len);\n    uint32_t pos = ret_addr;\n    while (len--) {\n        MEM_S8(pos) = *ret;\n        ++pos;\n        ++ret;\n    }\n    free(ret_saved);\n    return ret_addr;\n}\n\nuint32_t wrapper_tmpnam(uint8_t *mem, uint32_t str_addr) {\n    char buf[1024];\n    assert(str_addr != 0 && \"s NULL not implemented for tmpnam\");\n    char *ret = tmpnam(buf);\n    if (ret == NULL) {\n        return 0;\n    } else {\n        strcpy1(mem, str_addr, ret);\n        return str_addr;\n    }\n}\n\nuint32_t wrapper_mktemp(uint8_t *mem, uint32_t template_addr) {\n    STRING(template)\n    mktemp(template);\n    strcpy1(mem, template_addr, template);\n    return template_addr;\n}\n\nint wrapper_mkstemp(uint8_t* mem, uint32_t name_addr) {\n    STRING(name)\n    int fd = mkstemp(name);\n    if (fd < 0) {\n        MEM_U32(ERRNO_ADDR) = errno;\n    } else {\n        strcpy1(mem, name_addr, name);\n    }\n    return fd;\n}\n\nuint32_t wrapper_tmpfile(uint8_t* mem) {\n    // create and fopen a temporary file that is removed when the program exits\n    const char* tmpdir = getenv(\"TMPDIR\");\n    if (tmpdir == NULL) {\n        tmpdir = \"/tmp\";\n    }\n\n    char name[PATH_MAX + 1] = { 0 };\n    int n = snprintf(name, sizeof(name), \"%s/copt_temp_XXXXXX\", tmpdir);\n    if (n < 0 || n >= sizeof(name)) {\n        // This isn't the best errno code, but it is one that can be returned by tmpfile\n        MEM_U32(ERRNO_ADDR) = EACCES;\n        return 0;\n    }\n\n    int fd = mkstemp(name);\n    if (fd < 0) {\n        MEM_U32(ERRNO_ADDR) = errno;\n        return 0;\n    }\n\n    // the file will be removed from disk when it's closed later\n    unlink(name);\n\n    // fdopen:\n    uint32_t ret = init_file(mem, fd, -1, NULL, \"w+\");\n    if (ret == 0) {\n        close(fd);\n    }\n    return ret;\n}\n\nint wrapper_wait(uint8_t* mem, uint32_t wstatus_addr) {\n    int wstatus;\n    pid_t ret = wait(&wstatus);\n    MEM_S32(wstatus_addr) = wstatus;\n    return ret;\n}\n\nint wrapper_kill(uint8_t* mem, int pid, int sig) {\n    int ret = kill(pid, sig);\n    if (ret != 0) {\n        MEM_U32(ERRNO_ADDR) = errno;\n    }\n    return ret;\n}\n\nint wrapper_execlp(uint8_t* mem, uint32_t file_addr, uint32_t sp) {\n    uint32_t argv_addr = sp + 4;\n    return wrapper_execvp(mem, file_addr, argv_addr);\n}\n\nint wrapper_execv(uint8_t* mem, uint32_t pathname_addr, uint32_t argv_addr) {\n    STRING(pathname)\n    uint32_t argc = 0;\n    while (MEM_U32(argv_addr + argc * 4) != 0) {\n        ++argc;\n    }\n    char* argv[argc + 1];\n    for (uint32_t i = 0; i < argc; i++) {\n        uint32_t str_addr = MEM_U32(argv_addr + i * 4);\n        uint32_t len = wrapper_strlen(mem, str_addr) + 1;\n        argv[i] = (char*)malloc(len);\n        char* pos = argv[i];\n        while (len--) {\n            *pos++ = MEM_S8(str_addr);\n            ++str_addr;\n        }\n    }\n    argv[argc] = NULL;\n    execv(pathname, argv);\n    MEM_U32(ERRNO_ADDR) = errno;\n    for (uint32_t i = 0; i < argc; i++) {\n        free(argv[i]);\n    }\n    return -1;\n}\n\nint wrapper_execvp(uint8_t* mem, uint32_t file_addr, uint32_t argv_addr) {\n    STRING(file)\n    uint32_t argc = 0;\n    while (MEM_U32(argv_addr + argc * 4) != 0) {\n        ++argc;\n    }\n    char* argv[argc + 1];\n    for (uint32_t i = 0; i < argc; i++) {\n        uint32_t str_addr = MEM_U32(argv_addr + i * 4);\n        uint32_t len = wrapper_strlen(mem, str_addr) + 1;\n        argv[i] = (char*)malloc(len);\n        char* pos = argv[i];\n        while (len--) {\n            *pos++ = MEM_S8(str_addr);\n            ++str_addr;\n        }\n    }\n    argv[argc] = NULL;\n\n    char rfile[PATH_MAX + 1];\n    redirect_path(rfile, file, \"/usr/lib\", usr_lib_redirect);\n\n    execvp(rfile, argv);\n\n    MEM_U32(ERRNO_ADDR) = errno;\n    for (uint32_t i = 0; i < argc; i++) {\n        free(argv[i]);\n    }\n    return -1;\n}\n\nint wrapper_fork(uint8_t* mem) {\n    int ret = fork();\n    if (ret == -1) {\n        MEM_U32(ERRNO_ADDR) = errno;\n    }\n    return ret;\n}\n\nint wrapper_system(uint8_t* mem, uint32_t command_addr) {\n    STRING(command)\n    return system(command); // no errno\n}\n\nstatic int name_compare(uint8_t* mem, uint32_t a_addr, uint32_t b_addr) {\n    return wrapper_strcmp(mem, MEM_U32(a_addr), MEM_U32(b_addr));\n}\n\nstatic uint32_t tsearch_tfind(uint8_t* mem, uint32_t key_addr, uint32_t rootp_addr, uint32_t compar_addr, bool insert) {\n    if (rootp_addr == 0) {\n        return 0;\n    }\n    while (MEM_U32(rootp_addr) != 0) {\n        uint32_t node_addr = MEM_U32(rootp_addr);\n        int r = name_compare(mem, key_addr, MEM_U32(node_addr));\n        if (r == 0) {\n            return node_addr;\n        }\n        rootp_addr = r < 0 ? node_addr + 4 : node_addr + 8;\n    }\n    if (insert) {\n        uint32_t node_addr = wrapper_malloc(mem, 12);\n        if (node_addr != 0) {\n            MEM_U32(rootp_addr) = node_addr;\n            MEM_U32(node_addr) = key_addr;\n            MEM_U32(node_addr + 4) = 0;\n            MEM_U32(node_addr + 8) = 0;\n            return node_addr;\n        }\n    }\n    return 0;\n}\n\nuint32_t wrapper_tsearch(uint8_t* mem, uint32_t key_addr, uint32_t rootp_addr, uint32_t compar_addr) {\n    return tsearch_tfind(mem, key_addr, rootp_addr, compar_addr, true);\n}\n\nuint32_t wrapper_tfind(uint8_t* mem, uint32_t key_addr, uint32_t rootp_addr, uint32_t compar_addr) {\n    return tsearch_tfind(mem, key_addr, rootp_addr, compar_addr, false);\n}\n\n// qsort implementation from SGI libc, originally derived from\n// https://people.ece.ubc.ca/~eddieh/glu_dox/d7/da4/qsort_8c_source.html (public domain)\n\n#define CMP(x, y) (int32_t)(trampoline(mem, sp, (x), (y), 0, 0, compare_addr) >> 32)\n\nstatic void qst(uint8_t* mem, uint32_t start, uint32_t end, fptr_trampoline trampoline, uint32_t compare_addr,\n                uint32_t sp, uint32_t size, uint32_t minSortSize, uint32_t medianOfThreeThreshold);\n\nuint32_t wrapper_qsort(uint8_t* mem, uint32_t base_addr, uint32_t count, uint32_t size, fptr_trampoline trampoline,\n                       uint32_t compare_addr, uint32_t sp) {\n    uint32_t end;\n    uint32_t it;\n    uint32_t prevIt;\n    uint32_t byteIt;\n    uint32_t hi;\n    uint32_t insPos;\n    uint32_t cur;\n    uint32_t smallest;\n    uint8_t temp;\n\n    if (count < 2) {\n        return 0;\n    }\n\n    end = base_addr + (count * size);\n\n    if (count >= 4) {\n        // run a rough quicksort\n        qst(mem, base_addr, end, trampoline, compare_addr, sp, size, size * 4, size * 6);\n        // the smallest element will be one of the first 4\n        hi = base_addr + size * 4;\n    } else {\n        hi = end;\n    }\n\n    // Find the smallest element and swap it to the front\n    smallest = base_addr;\n    for (it = base_addr + size; it < hi; it += size) {\n        if (CMP(smallest, it) > 0) {\n            smallest = it;\n        }\n    }\n\n    if (smallest != base_addr) {\n        for (it = base_addr; it < base_addr + size; smallest++, it++) {\n            temp = MEM_U8(smallest);\n            MEM_U8(smallest) = MEM_U8(it);\n            MEM_U8(it) = temp;\n        }\n    }\n\n    // Do insertion sort on the rest of the elements\n    for (cur = base_addr + size; cur < end; cur += size) {\n\n        // Find where cur should go\n        insPos = cur - size;\n        while (CMP(insPos, cur) > 0) {\n            if (base_addr == insPos) {\n                // This isn't logically possible, because we've put the smallest element first.\n                // But it can happen if the comparator function is faulty, and it's best not to\n                // write out of bounds in that situation.\n                break;\n            }\n            insPos -= size;\n        }\n        insPos += size;\n\n        if (insPos == cur) {\n            continue;\n        }\n\n        for (byteIt = cur + size; --byteIt >= cur;) {\n            temp = MEM_U8(byteIt);\n            prevIt = byteIt;\n            for (it = byteIt - size; it >= insPos; it -= size) {\n                MEM_U8(prevIt) = MEM_U8(it);\n                prevIt = it;\n            }\n            MEM_U8(prevIt) = temp;\n        }\n    }\n\n    return 0;\n}\n\nstatic void qst(uint8_t* mem, uint32_t start, uint32_t end, fptr_trampoline trampoline, uint32_t compare_addr,\n                uint32_t sp, uint32_t size, uint32_t minSortSize, uint32_t medianOfThreeThreshold) {\n    uint32_t sizeAfterPivot;\n    uint32_t sizeBeforePivot;\n    uint32_t totalSize;\n    int32_t i;\n    uint32_t afterPivot;\n    uint32_t last;\n    uint32_t newPartitionFirst;\n    uint32_t median;\n    uint32_t partitionFirst;\n    uint32_t partitionLast;\n    uint32_t pivot;\n    uint32_t swapWith;\n    uint8_t temp;\n\n    totalSize = end - start;\n    do {\n        last = end - size;\n        pivot = partitionFirst = (((totalSize / size) >> 1) * size) + start;\n        if (totalSize >= medianOfThreeThreshold) {\n            // compute median of three\n            median = CMP(start, pivot) > 0 ? start : pivot;\n            if (CMP(median, last) > 0) {\n                median = median == start ? pivot : start;\n                median = CMP(median, last) < 0 ? last : median;\n            }\n\n            // swap the median so it ends up in the middle\n            if (median != pivot) {\n                // Fake-match: use partitionFirst here instead of e.g. swapWith.\n                i = size;\n                do {\n                    temp = MEM_U8(partitionFirst);\n                    MEM_U8(partitionFirst) = MEM_U8(median);\n                    MEM_U8(median) = temp;\n                    partitionFirst++;\n                    median++;\n                    i--;\n                } while (i != 0);\n            }\n        }\n\n        // Partition the elements start, ..., pivot, ..., last, such that values smaller than the\n        // pivot are on the left, and values greater than the pivot are on the right (equal ones can\n        // go wherever). The pivot may end up getting swapped into another position in the process.\n\n        partitionFirst = start;\n        partitionLast = last;\n\n        // Loop invariant: Elements partitionFirst, ..., partitionLast remain to be partitioned,\n        // and pivot is in that range.\n        for (;;) {\n            while (partitionFirst < pivot && CMP(partitionFirst, pivot) < 0) {\n                // Skip over smaller values on the left.\n                partitionFirst += size;\n            }\n\n            while (pivot < partitionLast) {\n                if (CMP(pivot, partitionLast) < 0) {\n                    // Skip over greater values on the right.\n                    partitionLast -= size;\n                } else {\n                    // We have found a value we cannot skip over. Put it at the front.\n                    // If the pivot was at the front, it gets swapped to the last position,\n                    // otherwise, the value at the front is something we know isn't smaller\n                    // than the pivot, so we can skip partitioning it.\n                    newPartitionFirst = partitionFirst + size;\n                    if (partitionFirst == pivot) {\n                        swapWith = partitionLast;\n                        pivot = partitionLast;\n                    } else {\n                        swapWith = partitionLast;\n                        partitionLast -= size;\n                    }\n                    goto swapFront;\n                }\n            }\n\n            // We have hit up against the pivot at the end. Swap it to the front to we can\n            // skip over it. The front element is known to not be smaller than the pivot,\n            // except if the pivot is at the front also, i.e. if the range has been reduced\n            // down to size 1 -- in that case it's time to break out of the loop.\n            partitionLast -= size;\n            if (partitionFirst == pivot) {\n                break;\n            }\n            swapWith = pivot;\n            pivot = partitionFirst;\n            newPartitionFirst = partitionFirst;\n\n        swapFront:\n            i = size;\n            do {\n                temp = MEM_U8(partitionFirst);\n                MEM_U8(partitionFirst) = MEM_U8(swapWith);\n                MEM_U8(swapWith) = temp;\n                partitionFirst++;\n                swapWith++;\n                i--;\n            } while (i != 0);\n            partitionFirst = newPartitionFirst;\n        }\n\n        afterPivot = pivot + size;\n        sizeBeforePivot = pivot - start;\n        sizeAfterPivot = end - afterPivot;\n        totalSize = sizeBeforePivot;\n        if (sizeAfterPivot >= sizeBeforePivot) {\n            if (sizeBeforePivot >= minSortSize) {\n                qst(mem, start, pivot, trampoline, compare_addr, sp, size, minSortSize, medianOfThreeThreshold);\n            }\n            start = afterPivot;\n            totalSize = sizeAfterPivot;\n        } else {\n            if (sizeAfterPivot >= minSortSize) {\n                qst(mem, afterPivot, end, trampoline, compare_addr, sp, size, minSortSize, medianOfThreeThreshold);\n            }\n            end = pivot;\n        }\n    } while (totalSize >= minSortSize);\n}\n\n#undef CMP\n\nuint32_t wrapper_regcmp(uint8_t* mem, uint32_t string1_addr, uint32_t sp) {\n    STRING(string1);\n    fprintf(stderr, \"regex string: %s\\n\", string1);\n    assert(0 && \"regcmp not implemented\");\n    return 0;\n}\n\nuint32_t wrapper_regex(uint8_t* mem, uint32_t re_addr, uint32_t subject_addr, uint32_t sp) {\n    STRING(subject);\n    assert(0 && \"regex not implemented\");\n    return 0;\n}\n\nvoid wrapper___assert(uint8_t* mem, uint32_t assertion_addr, uint32_t file_addr, int line) {\n    STRING(assertion)\n    STRING(file)\n    __assert(assertion, file, line);\n}\n\nunion host_doubleword {\n    uint64_t ww;\n    double d;\n};\n\nunion FloatReg FloatReg_from_double(double d) {\n    union host_doubleword val;\n    union FloatReg floatreg;\n\n    val.d = d;\n\n    floatreg.w[0] = val.ww & 0xFFFFFFFF;\n    floatreg.w[1] = (val.ww >> 32) & 0xFFFFFFFF;\n\n    return floatreg;\n}\n\ndouble double_from_FloatReg(union FloatReg floatreg) {\n    union host_doubleword val;\n\n    val.ww = floatreg.w[1];\n    val.ww <<= 32;\n    val.ww |= floatreg.w[0];\n    return val.d;\n}\n\ndouble double_from_memory(uint8_t* mem, uint32_t address) {\n    union host_doubleword val;\n\n    val.ww = MEM_U32(address);\n    val.ww <<= 32;\n    val.ww |= MEM_U32(address + 4);\n    return val.d;\n}\n"
  },
  {
    "path": "tools/ido-static-recomp/libc_impl.h",
    "content": "#ifndef LIBC_IMPL_H\n#define LIBC_IMPL_H\n\n#include <stdint.h>\n\nunion FloatReg {\n    float f[2];\n    uint32_t w[2];\n    //double d;\n};\n\nvoid mmap_initial_data_range(uint8_t *mem, uint32_t start, uint32_t end);\nvoid setup_libc_data(uint8_t *mem);\n\nuint32_t wrapper_sbrk(uint8_t *mem, int increment);\nuint32_t wrapper_malloc(uint8_t *mem, uint32_t size);\nuint32_t wrapper_calloc(uint8_t *mem, uint32_t num, uint32_t size);\nuint32_t wrapper_realloc(uint8_t *mem, uint32_t data_addr, uint32_t size);\nint wrapper_fscanf(uint8_t *mem, uint32_t fp_addr, uint32_t format_addr, uint32_t sp);\nint wrapper_printf(uint8_t *mem, uint32_t format_addr, uint32_t sp);\nint wrapper_sprintf(uint8_t *mem, uint32_t str_addr, uint32_t format_addr, uint32_t sp);\nint wrapper_fprintf(uint8_t *mem, uint32_t fp_addr, uint32_t format_addr, uint32_t sp);\nint wrapper__doprnt(uint8_t *mem, uint32_t format_addr, uint32_t params_addr, uint32_t fp_addr);\nvoid wrapper_free(uint8_t *mem, uint32_t data_addr);\nuint32_t wrapper_strlen(uint8_t *mem, uint32_t str_addr);\nint wrapper_open(uint8_t *mem, uint32_t pathname_addr, int flags, int mode);\nint wrapper_creat(uint8_t *mem, uint32_t pathname_addr, int mode);\nint wrapper_access(uint8_t *mem, uint32_t pathname_addr, int mode);\nint wrapper_rename(uint8_t *mem, uint32_t oldpath_addr, uint32_t newpath_addr);\nint wrapper_utime(uint8_t *mem, uint32_t filename_addr, uint32_t times_addr);\nint wrapper_flock(uint8_t *mem, int fd, int operation);\nint wrapper_chmod(uint8_t *mem, uint32_t path_addr, uint32_t mode);\nint wrapper_umask(int mode);\nuint32_t wrapper_ecvt(uint8_t *mem, double number, int ndigits, uint32_t decpt_addr, uint32_t sign_addr);\nuint32_t wrapper_fcvt(uint8_t *mem, double number, int ndigits, uint32_t decpt_addr, uint32_t sign_addr);\ndouble wrapper_sqrt(double v);\nfloat wrapper_sqrtf(float v);\nint wrapper_atoi(uint8_t *mem, uint32_t nptr_addr);\nint wrapper_atol(uint8_t *mem, uint32_t nptr_addr);\ndouble wrapper_atof(uint8_t *mem, uint32_t nptr_addr);\nint wrapper_strtol(uint8_t *mem, uint32_t nptr_addr, uint32_t endptr_addr, int base);\nuint32_t wrapper_strtoul(uint8_t *mem, uint32_t nptr_addr, uint32_t endptr_addr, int base);\nint64_t wrapper_strtoll(uint8_t *mem, uint32_t nptr_addr, uint32_t endptr_addr, int base);\nuint64_t wrapper_strtoull(uint8_t *mem, uint32_t nptr_addr, uint32_t endptr_addr, int base);\ndouble wrapper_strtod(uint8_t *mem, uint32_t nptr_addr, uint32_t endptr_addr);\nuint32_t wrapper_strchr(uint8_t *mem, uint32_t str_addr, int c);\nuint32_t wrapper_strrchr(uint8_t *mem, uint32_t str_addr, int c);\nuint32_t wrapper_strcspn(uint8_t *mem, uint32_t str_addr, uint32_t invalid_addr);\nuint32_t wrapper_strpbrk(uint8_t *mem, uint32_t str_addr, uint32_t accept_addr);\nint wrapper_fstat(uint8_t *mem, int fildes, uint32_t buf_addr);\nint wrapper_stat(uint8_t *mem, uint32_t pathname_addr, uint32_t buf_addr);\nint wrapper_ftruncate(uint8_t *mem, int fd, int length);\nint wrapper_truncate(uint8_t *mem, uint32_t pathname_addr, int length);\nvoid wrapper_bcopy(uint8_t *mem, uint32_t src_addr, uint32_t dst_addr, uint32_t len);\nuint32_t wrapper_memcpy(uint8_t *mem, uint32_t dst_addr, uint32_t src_addr, uint32_t len);\nuint32_t wrapper_memccpy(uint8_t *mem, uint32_t dst_addr, uint32_t src_addr, int c, uint32_t len);\nint wrapper_read(uint8_t *mem, int fd, uint32_t buf_addr, uint32_t nbytes);\nint wrapper_write(uint8_t *mem, int fd, uint32_t buf_addr, uint32_t nbytes);\nuint32_t wrapper_fopen(uint8_t *mem, uint32_t path_addr, uint32_t mode_addr);\nuint32_t wrapper_freopen(uint8_t *mem, uint32_t path_addr, uint32_t mode_addr, uint32_t fp_addr);\nint wrapper_fclose(uint8_t *mem, uint32_t fp_addr);\nint wrapper_fflush(uint8_t *mem, uint32_t fp_addr);\nint wrapper_fchown(uint8_t *mem, int fd, int owner, int group);\nint wrapper_ftell(uint8_t *mem, uint32_t fp_addr);\nvoid wrapper_rewind(uint8_t *mem, uint32_t fp_addr);\nint wrapper_fseek(uint8_t *mem, uint32_t fp_addr, int offset, int origin);\nint wrapper_lseek(uint8_t *mem, int fd, int offset, int whence);\nint wrapper_dup(uint8_t *mem, int fd);\nint wrapper_dup2(uint8_t *mem, int oldfd, int newfd);\nint wrapper_pipe(uint8_t *mem, uint32_t pipefd_addr);\nvoid wrapper_perror(uint8_t *mem, uint32_t str_addr);\nint wrapper_fdopen(uint8_t *mem, int fd, uint32_t mode_addr);\nuint32_t wrapper_memset(uint8_t *mem, uint32_t dest_addr, int byte, uint32_t n);\nint wrapper_bcmp(uint8_t *mem, uint32_t s1_addr, uint32_t s2_addr, uint32_t n);\nint wrapper_memcmp(uint8_t *mem, uint32_t s1_addr, uint32_t s2_addr, uint32_t n);\nint wrapper_getpid(void);\nint wrapper_getpgrp(uint8_t *mem);\nint wrapper_remove(uint8_t *mem, uint32_t path_addr);\nint wrapper_unlink(uint8_t *mem, uint32_t path_addr);\nint wrapper_close(uint8_t *mem, int fd);\nint wrapper_strcmp(uint8_t *mem, uint32_t s1_addr, uint32_t s2_addr);\nint wrapper_strncmp(uint8_t *mem, uint32_t s1_addr, uint32_t s2_addr, uint32_t n);\nuint32_t wrapper_strcpy(uint8_t *mem, uint32_t dest_addr, uint32_t src_addr);\nuint32_t wrapper_strncpy(uint8_t *mem, uint32_t dest_addr, uint32_t src_addr, uint32_t n);\nuint32_t wrapper_strcat(uint8_t *mem, uint32_t dest_addr, uint32_t src_addr);\nuint32_t wrapper_strncat(uint8_t *mem, uint32_t dest_addr, uint32_t src_addr, uint32_t n);\nuint32_t wrapper_strtok(uint8_t *mem, uint32_t str_addr, uint32_t delimiters_addr);\nuint32_t wrapper_strstr(uint8_t *mem, uint32_t str1_addr, uint32_t str2_addr);\nuint32_t wrapper_strdup(uint8_t *mem, uint32_t str_addr);\nint wrapper_toupper(int c);\nint wrapper_tolower(int c);\nint wrapper_gethostname(uint8_t *mem, uint32_t name_addr, uint32_t len);\nint wrapper_isatty(uint8_t *mem, int fd);\nint wrapper_times(uint8_t *mem, uint32_t buffer_addr);\nuint32_t wrapper_strftime(uint8_t *mem, uint32_t ptr_addr, uint32_t maxsize, uint32_t format_addr, uint32_t timeptr_addr);\nint wrapper_clock(void);\nuint32_t wrapper_ctime(uint8_t *mem, uint32_t timep_addr);\nuint32_t wrapper_localtime(uint8_t *mem, uint32_t timep_addr);\nint wrapper_setvbuf(uint8_t *mem, uint32_t fp_addr, uint32_t buf_addr, int mode, uint32_t size);\nint wrapper___semgetc(uint8_t *mem, uint32_t fp_addr);\nint wrapper___semputc(uint8_t *mem, int c, uint32_t fp_addr);\nint wrapper_fgetc(uint8_t *mem, uint32_t fp_addr);\nint wrapper_fgets(uint8_t *mem, uint32_t str_addr, int count, uint32_t fp_addr);\nint wrapper___filbuf(uint8_t *mem, uint32_t fp_addr);\nint wrapper___flsbuf(uint8_t *mem, int ch, uint32_t fp_addr);\nint wrapper_ungetc(uint8_t *mem, int ch, uint32_t fp_addr);\nuint32_t wrapper_gets(uint8_t *mem, uint32_t str_addr);\nuint32_t wrapper_fread(uint8_t *mem, uint32_t data_addr, uint32_t size, uint32_t count, uint32_t fp_addr);\nuint32_t wrapper_fwrite(uint8_t *mem, uint32_t data_addr, uint32_t size, uint32_t count, uint32_t fp_addr);\nint wrapper_fputs(uint8_t *mem, uint32_t str_addr, uint32_t fp_addr);\nint wrapper_puts(uint8_t *mem, uint32_t str_addr);\nuint32_t wrapper_getcwd(uint8_t *mem, uint32_t buf_addr, uint32_t size);\nint wrapper_time(uint8_t *mem, uint32_t tloc_addr);\nvoid wrapper_bzero(uint8_t *mem, uint32_t str_addr, uint32_t n);\nint wrapper_fp_class_d(double d);\ndouble wrapper_ldexp(double d, int i);\nuint64_t wrapper___ll_mul(uint64_t a0, uint64_t a1);\nint64_t wrapper___ll_div(int64_t a0, int64_t a1);\nint64_t wrapper___ll_rem(uint64_t a0, int64_t a1);\nuint64_t wrapper___ll_lshift(uint64_t a0, uint64_t shift);\nint64_t wrapper___ll_rshift(int64_t a0, uint64_t shift);\nuint64_t wrapper___ull_div(uint64_t a0, uint64_t a1);\nuint64_t wrapper___ull_rem(uint64_t a0, uint64_t a1);\nuint64_t wrapper___ull_rshift(uint64_t a0, uint64_t shift);\nuint64_t wrapper___d_to_ull(double d);\nint64_t wrapper___d_to_ll(double d);\nuint64_t wrapper___f_to_ull(float f);\nint64_t wrapper___f_to_ll(float f);\nfloat wrapper___ull_to_f(uint64_t v);\nfloat wrapper___ll_to_f(int64_t v);\ndouble wrapper___ull_to_d(uint64_t v);\ndouble wrapper___ll_to_d(int64_t v);\nvoid wrapper_abort(uint8_t *mem);\nvoid wrapper_exit(uint8_t *mem, int status);\nvoid wrapper__exit(uint8_t *mem, int status);\nvoid wrapper__cleanup(uint8_t *mem);\nuint32_t wrapper__rld_new_interface(uint8_t *mem, uint32_t operation, uint32_t sp);\nvoid wrapper__exithandle(uint8_t *mem);\nint wrapper__prctl(uint8_t *mem, int operation, uint32_t sp);\ndouble wrapper__atod(uint8_t *mem, uint32_t buffer_addr, int ndigits, int dexp);\nint wrapper_pathconf(uint8_t *mem, uint32_t path_addr, int name);\nuint32_t wrapper_getenv(uint8_t *mem, uint32_t name_addr);\nuint32_t wrapper_gettxt(uint8_t *mem, uint32_t msgid_addr, uint32_t default_str_addr);\nuint32_t wrapper_setlocale(uint8_t *mem, int category, uint32_t locale_addr);\nuint32_t wrapper_mmap(uint8_t *mem, uint32_t addr, uint32_t length, int prot, int flags, int fd, int offset);\nint wrapper_munmap(uint8_t *mem, uint32_t addr, uint32_t length);\nint wrapper_mprotect(uint8_t *mem, uint32_t addr, uint32_t length, int prot);\nint wrapper_sysconf(uint8_t *mem, int name);\nint wrapper_getpagesize(uint8_t *mem);\nint wrapper_strerror(uint8_t *mem, int errnum);\nint wrapper_ioctl(uint8_t *mem, int fd, uint32_t request, uint32_t sp);\nint wrapper_fcntl(uint8_t *mem, int fd, int cmd, uint32_t sp);\nuint32_t wrapper_signal(uint8_t *mem, int signum, uint64_t (*trampoline)(uint8_t *mem, uint32_t sp, uint32_t a0, uint32_t a1, uint32_t a2, uint32_t a3, uint32_t fp_dest), uint32_t handler_addr, uint32_t sp);\nuint32_t wrapper_sigset(uint8_t *mem, int signum, uint64_t (*trampoline)(uint8_t *mem, uint32_t sp, uint32_t a0, uint32_t a1, uint32_t a2, uint32_t a3, uint32_t fp_dest), uint32_t disp_addr, uint32_t sp);\nint wrapper_get_fpc_csr(uint8_t *mem);\nint wrapper_set_fpc_csr(uint8_t *mem, int csr);\nint wrapper_setjmp(uint8_t *mem, uint32_t addr);\nvoid wrapper_longjmp(uint8_t *mem, uint32_t addr, int status);\nuint32_t wrapper_tempnam(uint8_t *mem, uint32_t dir_addr, uint32_t pfx_addr);\nuint32_t wrapper_tmpnam(uint8_t *mem, uint32_t str_addr);\nuint32_t wrapper_mktemp(uint8_t *mem, uint32_t template_addr);\nint wrapper_mkstemp(uint8_t *mem, uint32_t name_addr);\nuint32_t wrapper_tmpfile(uint8_t *mem);\nint wrapper_wait(uint8_t *mem, uint32_t wstatus_addr);\nint wrapper_kill(uint8_t *mem, int pid, int sig);\nint wrapper_execlp(uint8_t *mem, uint32_t file_addr, uint32_t sp);\nint wrapper_execv(uint8_t *mem, uint32_t pathname_addr, uint32_t argv_addr);\nint wrapper_execvp(uint8_t *mem, uint32_t file_addr, uint32_t argv_addr);\nint wrapper_fork(uint8_t *mem);\nint wrapper_system(uint8_t *mem, uint32_t command_addr);\nuint32_t wrapper_tsearch(uint8_t *mem, uint32_t key_addr, uint32_t rootp_addr, uint32_t compar_addr);\nuint32_t wrapper_tfind(uint8_t *mem, uint32_t key_addr, uint32_t rootp_addr, uint32_t compar_addr);\nuint32_t wrapper_qsort(uint8_t *mem, uint32_t base_addr, uint32_t num, uint32_t size, uint64_t (*trampoline)(uint8_t *mem, uint32_t sp, uint32_t a0, uint32_t a1, uint32_t a2, uint32_t a3, uint32_t fp_dest), uint32_t compare_addr, uint32_t sp);\nuint32_t wrapper_regcmp(uint8_t *mem, uint32_t string1_addr, uint32_t sp);\nuint32_t wrapper_regex(uint8_t *mem, uint32_t re_addr, uint32_t subject_addr, uint32_t sp);\nvoid wrapper___assert(uint8_t *mem, uint32_t assertion_addr, uint32_t file_addr, int line);\n\nunion FloatReg FloatReg_from_double(double d);\ndouble double_from_FloatReg(union FloatReg floatreg);\ndouble double_from_memory(uint8_t *mem, uint32_t address);\n\n#endif\n"
  },
  {
    "path": "tools/ido-static-recomp/recomp.cpp",
    "content": "#include <cassert>\n#include <cstdint>\n#include <cstdlib>\n#include <cstring>\n#include <cinttypes>\n#include <unistd.h>\n\n#include <map>\n#include <set>\n#include <vector>\n#include <string>\n#include <string_view>\n\n#include \"rabbitizer.hpp\"\n#include \"rabbitizer.h\"\n\n#include \"elf.h\"\n\n#if defined(_WIN32) && !defined(__CYGWIN__)\n#include <windows.h>\n#endif /* _WIN32 && !__CYGWIN__ */\n\n#if !defined(_MSC_VER) && !defined(__CYGWIN__) && !defined(_WIN32)\n#define UNIX_PLATFORM\n#endif\n\n#ifdef UNIX_PLATFORM\n// TODO: determine if any of those headers are not required\n#include <csignal>\n#include <ctime>\n#include <cxxabi.h> // for __cxa_demangle\n#include <dlfcn.h>  // for dladdr\n#include <execinfo.h>\n#include <unistd.h>\n#endif\n\n#ifndef FULL_TRACEBACK\n// Change to non-zero to have full traceback, including names not exported\n#define FULL_TRACEBACK 0\n#endif\n\n// set this to 1 when testing a new program, to verify that no false function pointers are found\n#define INSPECT_FUNCTION_POINTERS 0\n\n#ifndef TRACE\n#define TRACE 0\n#endif\n\n#define LABELS_64_BIT 1\n\n#ifndef DUMP_INSTRUCTIONS\n// Set to non-zero to dump actual disassembly when dumping C code\n#define DUMP_INSTRUCTIONS 0\n#endif\n\n#define u32be(x) (uint32_t)(((x & 0xff) << 24) + ((x & 0xff00) << 8) + ((x & 0xff0000) >> 8) + ((uint32_t)(x) >> 24))\n#define u16be(x) (uint16_t)(((x & 0xff) << 8) + ((x & 0xff00) >> 8))\n#define read_u32_be(buf) (uint32_t)(((buf)[0] << 24) + ((buf)[1] << 16) + ((buf)[2] << 8) + ((buf)[3]))\n\n#define UniqueId_cpu_li rabbitizer::InstrId::UniqueId::cpu_USERDEF_00\n#define UniqueId_cpu_la rabbitizer::InstrId::UniqueId::cpu_USERDEF_01\n\nusing namespace std;\n\nstruct Edge {\n    uint32_t i;\n    uint8_t function_entry : 1;\n    uint8_t function_exit : 1;\n    uint8_t extern_function : 1;\n    uint8_t function_pointer : 1;\n};\n\nstruct Insn {\n    // base instruction\n    rabbitizer::InstructionCpu instruction;\n\n    //\n    bool is_global_got_memop;\n    bool no_following_successor;\n\n    // patching instructions\n    bool patched;\n    // lui pairs\n    uint32_t patched_addr;\n    // immediates are 16 bits wide, but they can be either signed or unsigned\n    // a 32 bits signed member can hold all those possible values\n    int32_t patched_imms;\n    rabbitizer::Registers::Cpu::GprO32 lila_dst_reg;\n    int linked_insn;\n    union {\n        uint32_t linked_value;\n        float linked_float;\n    };\n\n    // jumptable instructions\n    uint32_t jtbl_addr;\n    uint32_t num_cases;\n    rabbitizer::Registers::Cpu::GprO32 index_reg;\n\n    // graph\n    vector<Edge> successors;\n    vector<Edge> predecessors;\n    uint64_t b_liveout;\n    uint64_t b_livein;\n    uint64_t f_livein;\n    uint64_t f_liveout;\n\n    Insn(uint32_t word, uint32_t vram) : instruction(word, vram) {\n        this->is_global_got_memop = false;\n        this->no_following_successor = false;\n\n        this->patched = false;\n        this->patched_addr = 0;\n        this->patched_imms = 0;\n        this->lila_dst_reg = rabbitizer::Registers::Cpu::GprO32::GPR_O32_zero;\n        this->linked_insn = -1;\n        this->linked_value = 0;\n\n        this->jtbl_addr = 0;\n        this->num_cases = 0;\n        this->index_reg = rabbitizer::Registers::Cpu::GprO32::GPR_O32_zero;\n\n        this->b_liveout = 0;\n        this->b_livein = 0;\n        this->f_livein = 0;\n        this->f_liveout = 0;\n    }\n\n    void patchInstruction(rabbitizer::InstrId::UniqueId instructionId) {\n        this->patched = true;\n        RabbitizerInstruction* innerInstr = this->instruction.getCPtr();\n        innerInstr->uniqueId = (RabbitizerInstrId)(instructionId);\n        innerInstr->descriptor = &RabbitizerInstrDescriptor_Descriptors[innerInstr->uniqueId];\n    }\n\n    void patchAddress(rabbitizer::InstrId::UniqueId instructionId, uint32_t newAddress) {\n        this->patchInstruction(instructionId);\n        this->patched_addr = newAddress;\n    }\n\n    uint32_t getAddress() const {\n        if (this->patched && this->patched_addr != 0) {\n            return this->patched_addr;\n        }\n\n        if (this->instruction.hasOperandAlias(rabbitizer::OperandType::cpu_label)) {\n            return this->instruction.getInstrIndexAsVram();\n        }\n\n        if (this->instruction.isBranch()) {\n            return this->instruction.getVram() + this->instruction.getBranchOffset();\n        }\n\n        assert(!\"unreachable code\");\n    }\n\n    void patchImmediate(int32_t newImmediate) {\n        this->patched = true;\n        this->patched_imms = newImmediate;\n    }\n\n    int32_t getImmediate() const {\n        if (this->patched) {\n            return this->patched_imms;\n        }\n\n        return this->instruction.getProcessedImmediate();\n    }\n\n    std::string disassemble() const {\n        char buffer[0x1000];\n        int32_t imm;\n\n        switch (this->instruction.getUniqueId()) {\n            case UniqueId_cpu_li:\n                imm = this->getImmediate();\n                if (imm >= 0) {\n                    sprintf(buffer, \"li          %s, 0x%X\", RabbitizerRegister_getNameGpr((int)this->lila_dst_reg),\n                            imm);\n                } else {\n                    sprintf(buffer, \"li          %s, %i\", RabbitizerRegister_getNameGpr((int)this->lila_dst_reg), imm);\n                }\n                return buffer;\n\n            case UniqueId_cpu_la:\n                sprintf(buffer, \"la          %s, 0x%X\", RabbitizerRegister_getNameGpr((int)this->lila_dst_reg),\n                        this->getAddress());\n                return buffer;\n\n            default:\n                return this->instruction.disassembleInstruction(0);\n        }\n    }\n};\n\nstruct Function {\n    vector<uint32_t> returns; // points to delay slots\n    uint32_t end_addr;        // address after end\n    uint32_t nargs;\n    uint32_t nret;\n    bool v0_in;\n    bool referenced_by_function_pointer;\n};\n\nbool conservative;\n\nconst uint8_t* text_section;\nuint32_t text_section_len;\nuint32_t text_vaddr;\n\nconst uint8_t* rodata_section;\nuint32_t rodata_section_len;\nuint32_t rodata_vaddr;\n\nconst uint8_t* data_section;\nuint32_t data_section_len;\nuint32_t data_vaddr;\n\nuint32_t bss_section_len;\nuint32_t bss_vaddr;\n\nvector<Insn> insns;\nset<uint32_t> label_addresses;\nvector<uint32_t> got_globals;\nvector<uint32_t> got_locals;\nuint32_t gp_value;\nuint32_t gp_value_adj;\n\nmap<uint32_t, string> symbol_names;\n\nvector<pair<uint32_t, uint32_t>> data_function_pointers;\nset<uint32_t> la_function_pointers;\nmap<uint32_t, Function> functions;\nuint32_t main_addr;\nuint32_t mcount_addr;\nuint32_t procedure_table_start;\nuint32_t procedure_table_len;\n\n#define FLAG_NO_MEM 1\n#define FLAG_VARARG 2\n\n/**\n * Struct containing information on external functions that are called using the wrappers in `libc_impl.c`.\n *\n * name:    function name\n * params:  first char is return type, subsequent chars are argument types. Key to chars used:\n *          - 'v' void\n *          - 'i' signed int (int32_t)\n *          - 'u' unsigned int (uint32_t)\n *          - 'p' pointer (uintptr_t)\n *          - 'f' float\n *          - 'd' double\n *          - 'l' signed long long (int64_t)\n *          - 'j' unsigned long long (uint64_t)\n *          - 't' trampoline\n *\n * flags:   use defines above\n */\nconst struct ExternFunction {\n    const char* name;\n    const char* params;\n    int flags;\n} extern_functions[] = {\n    { \"exit\", \"vi\", 0 }, // override exit from application\n    { \"abort\", \"v\", 0 },\n    { \"sbrk\", \"pi\", 0 },\n    { \"malloc\", \"pu\", 0 },\n    { \"calloc\", \"puu\", 0 },\n    { \"realloc\", \"ppu\", 0 },\n    { \"free\", \"vp\", 0 },\n    { \"fscanf\", \"ipp\", FLAG_VARARG },\n    { \"printf\", \"ip\", FLAG_VARARG },\n    { \"sprintf\", \"ipp\", FLAG_VARARG },\n    { \"fprintf\", \"ipp\", FLAG_VARARG },\n    { \"_doprnt\", \"ippp\", 0 },\n    { \"strlen\", \"up\", 0 },\n    { \"open\", \"ipii\", 0 },\n    { \"creat\", \"ipi\", 0 },\n    { \"access\", \"ipi\", 0 },\n    { \"rename\", \"ipp\", 0 },\n    { \"utime\", \"ipp\", 0 },\n    { \"flock\", \"iii\", 0 },\n    { \"chmod\", \"ipu\", 0 },\n    { \"umask\", \"ii\", FLAG_NO_MEM },\n    { \"ecvt\", \"pdipp\", 0 },\n    { \"fcvt\", \"pdipp\", 0 },\n    { \"sqrt\", \"dd\", FLAG_NO_MEM },\n    { \"sqrtf\", \"ff\", FLAG_NO_MEM },\n    { \"atoi\", \"ip\", 0 },\n    { \"atol\", \"ip\", 0 },\n    { \"atof\", \"dp\", 0 },\n    { \"strtol\", \"ippi\", 0 },\n    { \"strtoul\", \"uppi\", 0 },\n    { \"strtoll\", \"lppi\", 0 },\n    { \"strtoull\", \"jppi\", 0 },\n    { \"strtod\", \"dpp\", 0 },\n    { \"strchr\", \"ppi\", 0 },\n    { \"strrchr\", \"ppi\", 0 },\n    { \"strcspn\", \"upp\", 0 },\n    { \"strpbrk\", \"ppp\", 0 },\n    { \"fstat\", \"iip\", 0 },\n    { \"stat\", \"ipp\", 0 },\n    { \"ftruncate\", \"iii\", 0 },\n    { \"truncate\", \"ipi\", 0},\n    { \"bcopy\", \"vppu\", 0 },\n    { \"memcpy\", \"pppu\", 0 },\n    { \"memccpy\", \"pppiu\", 0 },\n    { \"read\", \"iipu\", 0 },\n    { \"write\", \"iipu\", 0 },\n    { \"fopen\", \"ppp\", 0 },\n    { \"freopen\", \"pppp\", 0 },\n    { \"fclose\", \"ip\", 0 },\n    { \"ftell\", \"ip\", 0 },\n    { \"rewind\", \"vp\", 0 },\n    { \"fseek\", \"ipii\", 0 },\n    { \"lseek\", \"iiii\", 0 },\n    { \"fflush\", \"ip\", 0 },\n    { \"fchown\", \"iiii\", 0 },\n    { \"dup\", \"ii\", 0 },\n    { \"dup2\", \"iii\", 0 },\n    { \"pipe\", \"ip\", 0 },\n    { \"perror\", \"vp\", 0 },\n    { \"fdopen\", \"iip\", 0 },\n    { \"memset\", \"ppiu\", 0 },\n    { \"bcmp\", \"ippu\", 0 },\n    { \"memcmp\", \"ippu\", 0 },\n    { \"getpid\", \"i\", FLAG_NO_MEM },\n    { \"getpgrp\", \"i\", 0 },\n    { \"remove\", \"ip\", 0 },\n    { \"unlink\", \"ip\", 0 },\n    { \"close\", \"ii\", 0 },\n    { \"strcmp\", \"ipp\", 0 },\n    { \"strncmp\", \"ippu\", 0 },\n    { \"strcpy\", \"ppp\", 0 },\n    { \"strncpy\", \"pppu\", 0 },\n    { \"strcat\", \"ppp\", 0 },\n    { \"strncat\", \"pppu\", 0 },\n    { \"strtok\", \"ppp\", 0 },\n    { \"strstr\", \"ppp\", 0 },\n    { \"strdup\", \"pp\", 0 },\n    { \"toupper\", \"ii\", FLAG_NO_MEM },\n    { \"tolower\", \"ii\", FLAG_NO_MEM },\n    { \"gethostname\", \"ipu\", 0 },\n    { \"isatty\", \"ii\", 0 },\n    { \"strftime\", \"upupp\", 0 },\n    { \"times\", \"ip\", 0 },\n    { \"clock\", \"i\", FLAG_NO_MEM },\n    { \"ctime\", \"pp\", 0 },\n    { \"localtime\", \"pp\", 0 },\n    { \"setvbuf\", \"ippiu\", 0 },\n    { \"__semgetc\", \"ip\", 0 },\n    { \"__semputc\", \"iip\", 0 },\n    { \"fgetc\", \"ip\", 0 },\n    { \"fgets\", \"ipip\", 0 },\n    { \"__filbuf\", \"ip\", 0 },\n    { \"__flsbuf\", \"iip\", 0 },\n    { \"ungetc\", \"iip\", 0 },\n    { \"gets\", \"pp\", 0 },\n    { \"fread\", \"upuup\", 0 },\n    { \"fwrite\", \"upuup\", 0 },\n    { \"fputs\", \"ipp\", 0 },\n    { \"puts\", \"ip\", 0 },\n    { \"getcwd\", \"ppu\", 0 },\n    { \"time\", \"ip\", 0 },\n    { \"bzero\", \"vpu\", 0 },\n    { \"fp_class_d\", \"id\", FLAG_NO_MEM },\n    { \"ldexp\", \"ddi\", FLAG_NO_MEM },\n    { \"__ll_mul\", \"lll\", FLAG_NO_MEM },\n    { \"__ll_div\", \"lll\", FLAG_NO_MEM },\n    { \"__ll_rem\", \"ljl\", FLAG_NO_MEM },\n    { \"__ll_lshift\", \"llj\", FLAG_NO_MEM },\n    { \"__ll_rshift\", \"llj\", FLAG_NO_MEM },\n    { \"__ull_div\", \"jjj\", FLAG_NO_MEM },\n    { \"__ull_rem\", \"jjj\", FLAG_NO_MEM },\n    { \"__ull_rshift\", \"jjj\", FLAG_NO_MEM },\n    { \"__d_to_ull\", \"jd\", FLAG_NO_MEM },\n    { \"__d_to_ll\", \"ld\", FLAG_NO_MEM },\n    { \"__f_to_ull\", \"jf\", FLAG_NO_MEM },\n    { \"__f_to_ll\", \"lf\", FLAG_NO_MEM },\n    { \"__ull_to_f\", \"fj\", FLAG_NO_MEM },\n    { \"__ll_to_f\", \"fl\", FLAG_NO_MEM },\n    { \"__ull_to_d\", \"dj\", FLAG_NO_MEM },\n    { \"__ll_to_d\", \"dl\", FLAG_NO_MEM },\n    { \"_exit\", \"vi\", 0 },\n    { \"_cleanup\", \"v\", 0 },\n    { \"_rld_new_interface\", \"pu\", FLAG_VARARG },\n    { \"_exithandle\", \"v\", 0 },\n    { \"_prctl\", \"ii\", FLAG_VARARG },\n    { \"_atod\", \"dpii\", 0 },\n    { \"pathconf\", \"ipi\", 0 },\n    { \"getenv\", \"pp\", 0 },\n    { \"gettxt\", \"ppp\", 0 },\n    { \"setlocale\", \"pip\", 0 },\n    { \"mmap\", \"ppuiiii\", 0 },\n    { \"munmap\", \"ipu\", 0 },\n    { \"mprotect\", \"ipui\", 0 },\n    { \"sysconf\", \"ii\", 0 },\n    { \"getpagesize\", \"i\", 0 },\n    { \"strerror\", \"pi\", 0 },\n    { \"ioctl\", \"iiu\", FLAG_VARARG },\n    { \"fcntl\", \"iii\", FLAG_VARARG },\n    { \"signal\", \"pit\", 0 },\n    { \"sigset\", \"pit\", 0 },\n    { \"get_fpc_csr\", \"i\", 0 },\n    { \"set_fpc_csr\", \"ii\", 0 },\n    { \"setjmp\", \"ip\", 0 },\n    { \"longjmp\", \"vpi\", 0 },\n    { \"tempnam\", \"ppp\", 0 },\n    { \"tmpnam\", \"pp\", 0 },\n    { \"mktemp\", \"pp\", 0 },\n    { \"mkstemp\", \"ip\", 0 },\n    { \"tmpfile\", \"p\", 0 },\n    { \"wait\", \"ip\", 0 },\n    { \"kill\", \"iii\", 0 },\n    { \"execlp\", \"ip\", FLAG_VARARG },\n    { \"execv\", \"ipp\", 0 },\n    { \"execvp\", \"ipp\", 0 },\n    { \"fork\", \"i\", 0 },\n    { \"system\", \"ip\", 0 },\n    { \"tsearch\", \"pppp\", 0 },\n    { \"tfind\", \"pppp\", 0 },\n    { \"qsort\", \"vpuut\", 0 },\n    { \"regcmp\", \"pp\", FLAG_VARARG },\n    { \"regex\", \"ppp\", FLAG_VARARG },\n    { \"__assert\", \"vppi\", 0 },\n};\n\nvoid disassemble(void) {\n    uint32_t i;\n\n    RabbitizerConfig_Cfg.misc.omit0XOnSmallImm = true;\n    RabbitizerConfig_Cfg.misc.opcodeLJust -= 8;\n    RabbitizerConfig_Cfg.misc.upperCaseImm = false;\n    insns.reserve(1 + text_section_len / sizeof(uint32_t)); // +1 for dummy instruction\n\n    for (i = 0; i < text_section_len; i += sizeof(uint32_t)) {\n        uint32_t word = read_u32_be(&text_section[i]);\n        Insn insn(word, text_vaddr + i);\n        insns.push_back(insn);\n    }\n\n    {\n        // Add dummy NOP instruction to avoid out of bounds\n        Insn insn(0x00000000, text_vaddr + i);\n        insn.no_following_successor = true;\n        insns.push_back(insn);\n    }\n}\n\nvoid add_function(uint32_t addr) {\n    if (addr >= text_vaddr && addr < text_vaddr + text_section_len) {\n        functions[addr];\n    }\n}\n\nmap<uint32_t, Function>::iterator find_function(uint32_t addr) {\n    if (functions.size() == 0) {\n        return functions.end();\n    }\n\n    auto it = functions.upper_bound(addr);\n\n    if (it == functions.begin()) {\n        return functions.end();\n    }\n\n    --it;\n    return it;\n}\n\nrabbitizer::Registers::Cpu::GprO32 get_dest_reg(const Insn& insn) {\n    switch (insn.instruction.getUniqueId()) {\n        case rabbitizer::InstrId::UniqueId::cpu_jalr:\n            // jalr technically modifies rd, so an empty case is here to avoid crashing\n            break;\n\n        case UniqueId_cpu_li:\n        case UniqueId_cpu_la:\n            return insn.lila_dst_reg;\n\n        default:\n            if (insn.instruction.modifiesRt()) {\n                return insn.instruction.GetO32_rt();\n            } else if (insn.instruction.modifiesRd()) {\n                return insn.instruction.GetO32_rd();\n            }\n            break;\n    }\n\n    return rabbitizer::Registers::Cpu::GprO32::GPR_O32_zero;\n}\n\n// try to find a matching LUI for a given register\nvoid link_with_lui(int offset, rabbitizer::Registers::Cpu::GprO32 reg, int mem_imm) {\n#define MAX_LOOKBACK 128\n    // don't attempt to compute addresses for zero offset\n    // end search after some sane max number of instructions\n    int end_search = std::max(0, offset - MAX_LOOKBACK);\n\n    for (int search = offset - 1; search >= end_search; search--) {\n        switch (insns[search].instruction.getUniqueId()) {\n            case rabbitizer::InstrId::UniqueId::cpu_lui:\n                if (reg == insns[search].instruction.GetO32_rt()) {\n                    goto loop_end;\n                }\n                continue;\n\n            case rabbitizer::InstrId::UniqueId::cpu_lw:\n            case rabbitizer::InstrId::UniqueId::cpu_ld:\n            case rabbitizer::InstrId::UniqueId::cpu_addiu:\n            case rabbitizer::InstrId::UniqueId::cpu_add:\n            case rabbitizer::InstrId::UniqueId::cpu_sub:\n            case rabbitizer::InstrId::UniqueId::cpu_subu:\n                if (reg == get_dest_reg(insns[search])) {\n                    if ((insns[search].instruction.getUniqueId() == rabbitizer::InstrId::UniqueId::cpu_lw) &&\n                        insns[search].instruction.GetO32_rs() == rabbitizer::Registers::Cpu::GprO32::GPR_O32_gp) {\n                        int mem_imm0 = insns[search].instruction.getProcessedImmediate();\n                        uint32_t got_entry = (mem_imm0 + gp_value_adj) / sizeof(uint32_t);\n\n                        if (got_entry < got_locals.size()) {\n                            // used for static functions\n                            uint32_t addr = got_locals[got_entry] + mem_imm;\n                            insns[search].linked_insn = offset;\n                            insns[search].linked_value = addr;\n                            insns[offset].linked_insn = search;\n                            insns[offset].linked_value = addr;\n\n                            // Patch instruction to contain full address\n                            insns[search].lila_dst_reg = get_dest_reg(insns[search]);\n                            insns[search].patchAddress(UniqueId_cpu_la, addr);\n\n                            // Patch instruction to have offset 0\n                            switch (insns[offset].instruction.getUniqueId()) {\n                                case rabbitizer::InstrId::UniqueId::cpu_addiu: {\n                                    rabbitizer::Registers::Cpu::GprO32 dst_reg = insns[offset].instruction.GetO32_rt();\n                                    insns[offset].patchInstruction(rabbitizer::InstrId::UniqueId::cpu_move);\n                                    // Patch the destination register too\n                                    insns[offset].instruction.Set_rd(dst_reg);\n                                }\n\n                                    if (addr >= text_vaddr && addr < text_vaddr + text_section_len) {\n                                        add_function(addr);\n                                    }\n                                    goto loop_end;\n\n                                case rabbitizer::InstrId::UniqueId::cpu_lb:\n                                case rabbitizer::InstrId::UniqueId::cpu_lbu:\n                                case rabbitizer::InstrId::UniqueId::cpu_sb:\n                                case rabbitizer::InstrId::UniqueId::cpu_lh:\n                                case rabbitizer::InstrId::UniqueId::cpu_lhu:\n                                case rabbitizer::InstrId::UniqueId::cpu_sh:\n                                case rabbitizer::InstrId::UniqueId::cpu_lw:\n                                case rabbitizer::InstrId::UniqueId::cpu_sw:\n                                case rabbitizer::InstrId::UniqueId::cpu_ldc1:\n                                case rabbitizer::InstrId::UniqueId::cpu_lwc1:\n                                case rabbitizer::InstrId::UniqueId::cpu_swc1:\n                                    insns[offset].patchImmediate(0);\n                                    goto loop_end;\n\n                                default:\n                                    assert(0 && \"Unsupported instruction type\");\n                            }\n                        }\n                        goto loop_end;\n                    } else {\n                        // ignore: reg is pointer, offset is probably struct data member\n                        goto loop_end;\n                    }\n                }\n\n                continue;\n\n            case rabbitizer::InstrId::UniqueId::cpu_jr:\n                if ((insns[search].instruction.GetO32_rs() == rabbitizer::Registers::Cpu::GprO32::GPR_O32_ra) &&\n                    (offset - search >= 2)) {\n                    // stop looking when previous `jr ra` is hit,\n                    // but ignore if `offset` is branch delay slot for this `jr ra`\n                    goto loop_end;\n                }\n                continue;\n\n            default:\n                continue;\n        }\n    }\nloop_end:;\n}\n\n// for a given `jalr t9`, find the matching t9 load\nvoid link_with_jalr(int offset) {\n    // end search after some sane max number of instructions\n    int end_search = std::max(0, offset - MAX_LOOKBACK);\n\n    for (int search = offset - 1; search >= end_search; search--) {\n        if (get_dest_reg(insns[search]) == rabbitizer::Registers::Cpu::GprO32::GPR_O32_t9) {\n            // should be a switch with returns\n            switch (insns[search].instruction.getUniqueId()) {\n                case rabbitizer::InstrId::UniqueId::cpu_lw:\n                case UniqueId_cpu_la:\n                    if (insns[search].is_global_got_memop ||\n                        (insns[search].instruction.getUniqueId() == UniqueId_cpu_la)) {\n                        insns[search].linked_insn = offset;\n                        insns[offset].linked_insn = search;\n                        insns[offset].linked_value = insns[search].linked_value;\n\n                        insns[offset].patchAddress(rabbitizer::InstrId::UniqueId::cpu_jal, insns[search].linked_value);\n\n                        insns[search].patchInstruction(rabbitizer::InstrId::UniqueId::cpu_nop);\n                        insns[search].is_global_got_memop = false;\n\n                        add_function(insns[search].linked_value);\n                    }\n                    return;\n\n                case rabbitizer::InstrId::UniqueId::cpu_addiu:\n                    if (insns[search].linked_insn != -1) {\n                        uint32_t first = insns[search].linked_insn;\n\n                        // not describing as patched since instruction not edited\n                        insns[search].linked_insn = offset;\n                        insns[offset].linked_insn = first;\n                        insns[offset].linked_value = insns[search].linked_value;\n                    }\n                    return;\n\n                case rabbitizer::InstrId::UniqueId::cpu_ld:\n                case rabbitizer::InstrId::UniqueId::cpu_addu:\n                case rabbitizer::InstrId::UniqueId::cpu_add:\n                case rabbitizer::InstrId::UniqueId::cpu_sub:\n                case rabbitizer::InstrId::UniqueId::cpu_subu:\n                    return;\n\n                default:\n                    break;\n            }\n        } else if ((insns[search].instruction.getUniqueId() == rabbitizer::InstrId::UniqueId::cpu_jr) &&\n                   (insns[search].instruction.GetO32_rs() == rabbitizer::Registers::Cpu::GprO32::GPR_O32_ra)) {\n            // stop looking when previous `jr ra` is hit\n            return;\n        }\n    }\n}\n\n// TODO: uniformise use of insn vs insns[i]\nvoid pass1(void) {\n    for (size_t i = 0; i < insns.size(); i++) {\n        Insn& insn = insns[i];\n\n        // TODO: replace with BAL. Or just fix properly\n        if (insn.instruction.getUniqueId() == rabbitizer::InstrId::UniqueId::cpu_bal) {\n            insn.patchAddress(rabbitizer::InstrId::UniqueId::cpu_jal,\n                              insn.instruction.getVram() + insn.instruction.getBranchOffset());\n        }\n\n        if (insn.instruction.isJump()) {\n            if (insn.instruction.getUniqueId() == rabbitizer::InstrId::UniqueId::cpu_jal ||\n                insn.instruction.getUniqueId() == rabbitizer::InstrId::UniqueId::cpu_j) {\n                uint32_t target = insn.getAddress();\n\n                label_addresses.insert(target);\n                add_function(target);\n            } else if (insn.instruction.getUniqueId() == rabbitizer::InstrId::UniqueId::cpu_jr) {\n                // sltiu $at, $ty, z\n                // sw    $reg, offset($sp)   (very seldom, one or more, usually in func entry)\n                // lw    $gp, offset($sp)    (if PIC, and very seldom)\n                // beqz  $at, .L\n                // some other instruction    (not always)\n                // lui   $at, %hi(jtbl)\n                // sll   $tx, $ty, 2\n                // addu  $at, $at, $tx\n                // lw    $tx, %lo(jtbl)($at)\n                // nop                       (code compiled with 5.3)\n                // addu  $tx, $tx, $gp       (if PIC)\n                // jr    $tx\n\n                // IDO 7.1:\n                // lw      at,offset(gp)\n                // andi    t9,t8,0x3f\n                // sll     t9,t9,0x2\n                // addu    at,at,t9\n                // lw      t9,offset(at)\n                // addu    t9,t9,gp\n                // jr      t9\n\n                // IDO 5.3:\n                // lw      at,offset(gp)\n                // andi    t3,t2,0x3f\n                // sll     t3,t3,0x2\n                // addu    at,at,t3\n                // something\n                // lw      t3,offset(at)\n                // something\n                // addu    t3,t3,gp\n                // jr      t3\n                if (i >= 7 && rodata_section != NULL) {\n                    bool is_pic =\n                        (insns[i - 1].instruction.getUniqueId() == rabbitizer::InstrId::UniqueId::cpu_addu) &&\n                        (insns[i - 1].instruction.GetO32_rt() == rabbitizer::Registers::Cpu::GprO32::GPR_O32_gp);\n                    bool has_nop =\n                        insns[i - is_pic - 1].instruction.getUniqueId() == rabbitizer::InstrId::UniqueId::cpu_nop;\n                    bool has_extra = insns[i - is_pic - has_nop - 5].instruction.getUniqueId() !=\n                                     rabbitizer::InstrId::UniqueId::cpu_beqz;\n                    int lw = i - (int)is_pic - (int)has_nop - 1;\n\n                    if (insns[lw].instruction.getUniqueId() != rabbitizer::InstrId::UniqueId::cpu_lw) {\n                        --lw;\n                    }\n\n                    if ((insns[lw].instruction.getUniqueId() == rabbitizer::InstrId::UniqueId::cpu_lw) &&\n                        (insns[lw].linked_insn != -1)) {\n                        int sltiu_index = -1;\n                        int andi_index = -1;\n                        uint32_t addu_index = lw - 1;\n                        uint32_t num_cases;\n                        bool found = false;\n                        bool and_variant = false;\n                        int end = 14;\n\n                        if (insns[addu_index].instruction.getUniqueId() != rabbitizer::InstrId::UniqueId::cpu_addu) {\n                            --addu_index;\n                        }\n\n                        if (insns[addu_index].instruction.getUniqueId() != rabbitizer::InstrId::UniqueId::cpu_addu) {\n                            goto skip;\n                        }\n\n                        if (insns[addu_index - 1].instruction.getUniqueId() != rabbitizer::InstrId::UniqueId::cpu_sll) {\n                            goto skip;\n                        }\n\n                        if (get_dest_reg(insns[addu_index - 1]) != insn.instruction.GetO32_rs()) {\n                            goto skip;\n                        }\n\n                        for (int j = 3; j <= 4; j++) {\n                            if (insns[lw - j].instruction.getUniqueId() == rabbitizer::InstrId::UniqueId::cpu_andi) {\n                                andi_index = lw - j;\n                                break;\n                            }\n                        }\n\n                        if (i == 368393) {\n                            // In copt\n                            end = 18;\n                        }\n\n                        for (int j = 5; j <= end; j++) {\n                            if ((insns[lw - has_extra - j].instruction.getUniqueId() ==\n                                 rabbitizer::InstrId::UniqueId::cpu_sltiu) &&\n                                (insns[lw - has_extra - j].instruction.GetO32_rt() ==\n                                 rabbitizer::Registers::Cpu::GprO32::GPR_O32_at)) {\n                                sltiu_index = j;\n                                break;\n                            }\n\n                            if (insns[lw - has_extra - j].instruction.getUniqueId() ==\n                                rabbitizer::InstrId::UniqueId::cpu_jr) {\n                                // Prevent going into a previous switch\n                                break;\n                            }\n                        }\n\n                        if (sltiu_index != -1) {\n                            andi_index = -1;\n                        }\n\n                        if (sltiu_index != -1 && insns[lw - has_extra - sltiu_index].instruction.getUniqueId() ==\n                                                     rabbitizer::InstrId::UniqueId::cpu_sltiu) {\n                            num_cases = insns[lw - has_extra - sltiu_index].instruction.getProcessedImmediate();\n                            found = true;\n                        } else if (andi_index != -1) {\n                            num_cases = insns[andi_index].instruction.getProcessedImmediate() + 1;\n                            found = true;\n                            and_variant = true;\n                        } else if (i == 219382) {\n                            // Special hard case in copt where the initial sltiu is in another basic block\n                            found = true;\n                            num_cases = 13;\n                        } else if (i == 370995) {\n                            // Special hard case in copt where the initial sltiu is in another basic block\n                            found = true;\n                            num_cases = 12;\n                        }\n\n                        if (found) {\n                            uint32_t jtbl_addr = insns[lw].linked_value;\n\n                            if (is_pic) {\n                                insns[i - 1].patchInstruction(rabbitizer::InstrId::UniqueId::cpu_nop);\n                            }\n\n                            insn.jtbl_addr = jtbl_addr;\n                            insn.num_cases = num_cases;\n                            insn.index_reg = insns[addu_index - 1].instruction.GetO32_rt();\n                            insns[lw].patchInstruction(rabbitizer::InstrId::UniqueId::cpu_nop);\n\n                            insns[addu_index].patchInstruction(rabbitizer::InstrId::UniqueId::cpu_nop);\n\n                            insns[addu_index - 1].patchInstruction(rabbitizer::InstrId::UniqueId::cpu_nop);\n\n                            if (!and_variant) {\n                                insns[addu_index - 2].patchInstruction(rabbitizer::InstrId::UniqueId::cpu_nop);\n                            }\n\n                            if (jtbl_addr < rodata_vaddr ||\n                                jtbl_addr + num_cases * sizeof(uint32_t) > rodata_vaddr + rodata_section_len) {\n                                fprintf(stderr, \"jump table outside rodata\\n\");\n                                exit(EXIT_FAILURE);\n                            }\n\n                            for (uint32_t i = 0; i < num_cases; i++) {\n                                uint32_t target_addr =\n                                    read_u32_be(rodata_section + (jtbl_addr - rodata_vaddr) + i * sizeof(uint32_t));\n\n                                target_addr += gp_value;\n                                // printf(\"%08X\\n\", target_addr);\n                                label_addresses.insert(target_addr);\n                            }\n                        }\n                    skip:;\n                    }\n                }\n            } else if (insn.instruction.getUniqueId() == rabbitizer::InstrId::UniqueId::cpu_jalr) {\n                // empty\n            } else {\n                assert(!\"Unreachable code\");\n            }\n        } else if (insn.instruction.isBranch()) {\n            uint32_t target = insn.getAddress();\n\n            label_addresses.insert(target);\n        }\n\n        switch (insns[i].instruction.getUniqueId()) {\n            // find floating point LI\n            case rabbitizer::InstrId::UniqueId::cpu_mtc1: {\n                rabbitizer::Registers::Cpu::GprO32 rt = insns[i].instruction.GetO32_rt();\n\n                for (int s = i - 1; s >= 0; s--) {\n                    switch (insns[s].instruction.getUniqueId()) {\n                        case rabbitizer::InstrId::UniqueId::cpu_lui:\n                            if (insns[s].instruction.GetO32_rt() == rt) {\n                                float f;\n                                uint32_t lui_imm = insns[s].instruction.getProcessedImmediate() << 16;\n\n                                memcpy(&f, &lui_imm, sizeof(f));\n                                // link up the LUI with this instruction and the float\n                                insns[s].linked_insn = i;\n                                insns[s].linked_float = f;\n                                // rewrite LUI instruction to be LI\n                                insns[s].lila_dst_reg = get_dest_reg(insns[s]);\n                                insns[s].patchInstruction(UniqueId_cpu_li);\n                                insns[s].patchImmediate(lui_imm);\n                            }\n                            goto loop_end;\n\n                        case rabbitizer::InstrId::UniqueId::cpu_lw:\n                        case rabbitizer::InstrId::UniqueId::cpu_ld:\n                        case rabbitizer::InstrId::UniqueId::cpu_lh:\n                        case rabbitizer::InstrId::UniqueId::cpu_lhu:\n                        case rabbitizer::InstrId::UniqueId::cpu_lb:\n                        case rabbitizer::InstrId::UniqueId::cpu_lbu:\n                        case rabbitizer::InstrId::UniqueId::cpu_addiu:\n                            if (rt == insns[s].instruction.GetO32_rt()) {\n                                goto loop_end;\n                            }\n                            continue;\n\n                        case rabbitizer::InstrId::UniqueId::cpu_add:\n                        case rabbitizer::InstrId::UniqueId::cpu_sub:\n                        case rabbitizer::InstrId::UniqueId::cpu_subu:\n                            if (rt == insns[s].instruction.GetO32_rd()) {\n                                goto loop_end;\n                            }\n                            continue;\n\n                        case rabbitizer::InstrId::UniqueId::cpu_jr:\n                            if (insns[s].instruction.GetO32_rs() == rabbitizer::Registers::Cpu::GprO32::GPR_O32_ra) {\n                                goto loop_end;\n                            }\n                            continue;\n\n                        default:\n                            continue;\n                    }\n                }\n            loop_end:;\n            } break;\n\n            case rabbitizer::InstrId::UniqueId::cpu_sd:\n            case rabbitizer::InstrId::UniqueId::cpu_sw:\n            case rabbitizer::InstrId::UniqueId::cpu_sh:\n            case rabbitizer::InstrId::UniqueId::cpu_sb:\n            case rabbitizer::InstrId::UniqueId::cpu_lb:\n            case rabbitizer::InstrId::UniqueId::cpu_lbu:\n            case rabbitizer::InstrId::UniqueId::cpu_ld:\n            case rabbitizer::InstrId::UniqueId::cpu_ldl:\n            case rabbitizer::InstrId::UniqueId::cpu_ldr:\n            case rabbitizer::InstrId::UniqueId::cpu_lh:\n            case rabbitizer::InstrId::UniqueId::cpu_lhu:\n            case rabbitizer::InstrId::UniqueId::cpu_lw:\n            case rabbitizer::InstrId::UniqueId::cpu_lwu:\n            case rabbitizer::InstrId::UniqueId::cpu_ldc1:\n            case rabbitizer::InstrId::UniqueId::cpu_lwc1:\n            case rabbitizer::InstrId::UniqueId::cpu_lwc2:\n            case rabbitizer::InstrId::UniqueId::cpu_swc1:\n            case rabbitizer::InstrId::UniqueId::cpu_swc2: {\n                rabbitizer::Registers::Cpu::GprO32 mem_rs = insns[i].instruction.GetO32_rs();\n                int32_t mem_imm = insns[i].instruction.getProcessedImmediate();\n\n                if (mem_rs == rabbitizer::Registers::Cpu::GprO32::GPR_O32_gp) {\n                    unsigned int got_entry = (mem_imm + gp_value_adj) / sizeof(unsigned int);\n\n                    if (got_entry >= got_locals.size()) {\n                        got_entry -= got_locals.size();\n                        if (got_entry < got_globals.size()) {\n                            assert(insn.instruction.getUniqueId() == rabbitizer::InstrId::UniqueId::cpu_lw);\n                            unsigned int dest_vaddr = got_globals[got_entry];\n\n                            insns[i].is_global_got_memop = true;\n                            insns[i].linked_value = dest_vaddr;\n\n                            // patch to LA\n                            insns[i].lila_dst_reg = get_dest_reg(insns[i]);\n                            insns[i].patchAddress(UniqueId_cpu_la, dest_vaddr);\n                        }\n                    }\n                } else {\n                    link_with_lui(i, mem_rs, mem_imm);\n                }\n            } break;\n\n            case rabbitizer::InstrId::UniqueId::cpu_addiu:\n            case rabbitizer::InstrId::UniqueId::cpu_ori: {\n                // could be insn?\n                rabbitizer::Registers::Cpu::GprO32 rt = insns[i].instruction.GetO32_rt();\n                rabbitizer::Registers::Cpu::GprO32 rs = insns[i].instruction.GetO32_rs();\n                int32_t imm = insns[i].instruction.getProcessedImmediate();\n\n                if (rs == rabbitizer::Registers::Cpu::GprO32::GPR_O32_zero) { // becomes LI\n                    insns[i].lila_dst_reg = get_dest_reg(insns[i]);\n                    insns[i].patchInstruction(UniqueId_cpu_li);\n                    insns[i].patchImmediate(imm);\n                } else if (rt != rabbitizer::Registers::Cpu::GprO32::GPR_O32_gp) { // only look for LUI if rt and rs are\n                                                                                   // the same\n                    link_with_lui(i, rs, imm);\n                }\n            } break;\n\n            case rabbitizer::InstrId::UniqueId::cpu_jalr: {\n                rabbitizer::Registers::Cpu::GprO32 rs = insn.instruction.GetO32_rs();\n\n                if (rs == rabbitizer::Registers::Cpu::GprO32::GPR_O32_t9) {\n                    link_with_jalr(i);\n                    if (insn.linked_insn != -1) {\n                        insn.patchAddress(rabbitizer::InstrId::UniqueId::cpu_jal, insn.linked_value);\n\n                        label_addresses.insert(insn.linked_value);\n                        add_function(insn.linked_value);\n                    }\n                }\n            } break;\n\n            default:\n                break;\n        }\n\n        if ((insn.instruction.getUniqueId() == rabbitizer::InstrId::UniqueId::cpu_addu) &&\n            (insn.instruction.GetO32_rd() == rabbitizer::Registers::Cpu::GprO32::GPR_O32_gp) &&\n            (insn.instruction.GetO32_rs() == rabbitizer::Registers::Cpu::GprO32::GPR_O32_gp) &&\n            (insn.instruction.GetO32_rt() == rabbitizer::Registers::Cpu::GprO32::GPR_O32_t9) && i >= 2) {\n            for (size_t j = i - 2; j <= i; j++) {\n                insns[j].patchInstruction(rabbitizer::InstrId::UniqueId::cpu_nop);\n            }\n        }\n    }\n}\n\nuint32_t addr_to_i(uint32_t addr) {\n    return (addr - text_vaddr) / 4;\n}\n\nvoid pass2(void) {\n    // Find returns in each function\n    for (size_t i = 0; i < insns.size(); i++) {\n        uint32_t addr = text_vaddr + i * 4;\n        Insn& insn = insns[i];\n\n        if ((insn.instruction.getUniqueId() == rabbitizer::InstrId::UniqueId::cpu_jr) &&\n            (insn.instruction.GetO32_rs() == rabbitizer::Registers::Cpu::GprO32::GPR_O32_ra)) {\n            auto it = find_function(addr);\n            assert(it != functions.end());\n\n            it->second.returns.push_back(addr + 4);\n        }\n\n        if (insn.instruction.getUniqueId() == UniqueId_cpu_la) {\n            uint32_t faddr = insn.getAddress();\n\n            if ((text_vaddr <= faddr) && (faddr < text_vaddr + text_section_len)) {\n                la_function_pointers.insert(faddr);\n                functions[faddr].referenced_by_function_pointer = true;\n#if INSPECT_FUNCTION_POINTERS\n                fprintf(stderr, \"la function pointer: 0x%x at 0x%x\\n\", faddr, addr);\n#endif\n            }\n        }\n    }\n\n    for (auto it = functions.begin(); it != functions.end(); ++it) {\n        if (it->second.returns.size() == 0) {\n            uint32_t i = addr_to_i(it->first);\n            auto str_it = symbol_names.find(it->first);\n\n            if (str_it != symbol_names.end() && str_it->second == \"__start\") {\n\n            } else if (str_it != symbol_names.end() && str_it->second == \"xmalloc\") {\n                // orig 5.3:\n                /*\n                496bf4:       3c1c0fb9        lui     gp,0xfb9\n                496bf8:       279c366c        addiu   gp,gp,13932\n                496bfc:       0399e021        addu    gp,gp,t9\n                496c00:       27bdffd8        addiu   sp,sp,-40\n                496c04:       8f858de8        lw      a1,-29208(gp)\n                496c08:       10000006        b       496c24 <alloc_new+0x14>\n                496c0c:       afbf0020        sw      ra,32(sp)\n                */\n\n                // jal   alloc_new\n                //  lui  $a1, malloc_scb\n                // jr    $ra\n                //  nop\n                uint32_t alloc_new_addr = text_vaddr + (i + 7) * 4;\n\n                insns[i].patchAddress(rabbitizer::InstrId::UniqueId::cpu_jal, alloc_new_addr);\n\n                assert(symbol_names.count(alloc_new_addr) && symbol_names[alloc_new_addr] == \"alloc_new\");\n                i++;\n\n                // LA\n                if (insns[i + 5].instruction.getUniqueId() == UniqueId_cpu_la) {\n                    // 7.1\n                    insns[i] = insns[i + 5];\n                } else {\n                    // 5.3\n                    insns[i] = insns[i + 3];\n                }\n                i++;\n\n                // JR $RA\n                insns[i].patched = true;\n                insns[i].instruction = rabbitizer::InstructionCpu(0x03E00008, insns[i].instruction.getVram());\n                it->second.returns.push_back(text_vaddr + i * 4 + 4);\n                i++;\n\n                for (uint32_t j = 0; j < 4; j++) {\n                    // NOP\n                    insns[i].patched = true;\n                    insns[i].instruction = rabbitizer::InstructionCpu(0, insns[i].instruction.getVram());\n                    i++;\n                }\n            } else if (str_it != symbol_names.end() && str_it->second == \"xfree\") {\n                // jal   alloc_dispose\n                //  lui  $a1, malloc_scb\n                // jr    $ra\n                //  nop\n                uint32_t alloc_dispose_addr = text_vaddr + (i + 4) * 4;\n\n                if (symbol_names.count(alloc_dispose_addr + 4) &&\n                    symbol_names[alloc_dispose_addr + 4] == \"alloc_dispose\") {\n                    alloc_dispose_addr += 4;\n                }\n\n                insns[i].patchAddress(rabbitizer::InstrId::UniqueId::cpu_jal, alloc_dispose_addr);\n                assert(symbol_names.count(alloc_dispose_addr) && symbol_names[alloc_dispose_addr] == \"alloc_dispose\");\n                i++;\n\n                insns[i] = insns[i + 2];\n                i++;\n\n                // JR $RA\n                insns[i].patched = true;\n                insns[i].instruction = rabbitizer::InstructionCpu(0x03E00008, insns[i].instruction.getVram());\n                it->second.returns.push_back(text_vaddr + i * 4 + 4);\n                i++;\n\n                // NOP\n                insns[i].patched = true;\n                insns[i].instruction = rabbitizer::InstructionCpu(0, insns[i].instruction.getVram());\n            } else if ((insns[i].instruction.getUniqueId() == rabbitizer::InstrId::UniqueId::cpu_lw) &&\n                       (insns[i + 1].instruction.getUniqueId() == rabbitizer::InstrId::UniqueId::cpu_move) &&\n                       (insns[i + 2].instruction.getUniqueId() == rabbitizer::InstrId::UniqueId::cpu_jalr)) {\n                /*\n                408f50:       8f998010        lw      t9,-32752(gp)\n                408f54:       03e07821        move    t7,ra\n                408f58:       0320f809        jalr    t9\n                */\n            } else if (it->first > mcount_addr) {\n                fprintf(stderr, \"no ret: 0x%x\\n\", it->first);\n                abort();\n            }\n        }\n\n        auto next = it;\n\n        ++next;\n        if (next == functions.end()) {\n            it->second.end_addr = text_vaddr + text_section_len;\n        } else {\n            it->second.end_addr = next->first;\n        }\n    }\n}\n\nvoid add_edge(uint32_t from, uint32_t to, bool function_entry = false, bool function_exit = false,\n              bool extern_function = false, bool function_pointer = false) {\n    Edge fe = Edge(), be = Edge();\n\n    fe.i = to;\n    be.i = from;\n    fe.function_entry = function_entry;\n    be.function_entry = function_entry;\n    fe.function_exit = function_exit;\n    be.function_exit = function_exit;\n    fe.extern_function = extern_function;\n    be.extern_function = extern_function;\n    fe.function_pointer = function_pointer;\n    be.function_pointer = function_pointer;\n    insns[from].successors.push_back(fe);\n    insns[to].predecessors.push_back(be);\n}\n\nvoid pass3(void) {\n    // Build graph\n    for (size_t i = 0; i < insns.size(); i++) {\n        uint32_t addr = text_vaddr + i * 4;\n        Insn& insn = insns[i];\n\n        if (insn.no_following_successor) {\n            continue;\n        }\n\n        switch (insn.instruction.getUniqueId()) {\n            case rabbitizer::InstrId::UniqueId::cpu_beq:\n            case rabbitizer::InstrId::UniqueId::cpu_bgez:\n            case rabbitizer::InstrId::UniqueId::cpu_bgtz:\n            case rabbitizer::InstrId::UniqueId::cpu_blez:\n            case rabbitizer::InstrId::UniqueId::cpu_bltz:\n            case rabbitizer::InstrId::UniqueId::cpu_bne:\n            case rabbitizer::InstrId::UniqueId::cpu_beqz:\n            case rabbitizer::InstrId::UniqueId::cpu_bnez:\n            case rabbitizer::InstrId::UniqueId::cpu_bc1f:\n            case rabbitizer::InstrId::UniqueId::cpu_bc1t:\n                add_edge(i, i + 1);\n                add_edge(i + 1, addr_to_i(insn.getAddress()));\n                break;\n\n            case rabbitizer::InstrId::UniqueId::cpu_beql:\n            case rabbitizer::InstrId::UniqueId::cpu_bgezl:\n            case rabbitizer::InstrId::UniqueId::cpu_bgtzl:\n            case rabbitizer::InstrId::UniqueId::cpu_blezl:\n            case rabbitizer::InstrId::UniqueId::cpu_bltzl:\n            case rabbitizer::InstrId::UniqueId::cpu_bnel:\n            case rabbitizer::InstrId::UniqueId::cpu_bc1fl:\n            case rabbitizer::InstrId::UniqueId::cpu_bc1tl:\n                add_edge(i, i + 1);\n                add_edge(i, i + 2);\n                add_edge(i + 1, addr_to_i(insn.getAddress()));\n                insns[i + 1].no_following_successor = true; // don't inspect delay slot\n                break;\n\n            case rabbitizer::InstrId::UniqueId::cpu_b:\n            case rabbitizer::InstrId::UniqueId::cpu_j:\n                add_edge(i, i + 1);\n                add_edge(i + 1, addr_to_i(insn.getAddress()));\n                insns[i + 1].no_following_successor = true; // don't inspect delay slot\n                break;\n\n            case rabbitizer::InstrId::UniqueId::cpu_jr: {\n                add_edge(i, i + 1);\n\n                if (insn.jtbl_addr != 0) {\n                    uint32_t jtbl_pos = insn.jtbl_addr - rodata_vaddr;\n\n                    assert(jtbl_pos < rodata_section_len &&\n                           jtbl_pos + insn.num_cases * sizeof(uint32_t) <= rodata_section_len);\n\n                    for (uint32_t j = 0; j < insn.num_cases; j++) {\n                        uint32_t dest_addr = read_u32_be(rodata_section + jtbl_pos + j * sizeof(uint32_t)) + gp_value;\n\n                        add_edge(i + 1, addr_to_i(dest_addr));\n                    }\n                } else {\n                    assert(insn.instruction.GetO32_rs() == rabbitizer::Registers::Cpu::GprO32::GPR_O32_ra &&\n                           \"jump to address in register not supported\");\n                }\n\n                insns[i + 1].no_following_successor = true; // don't inspect delay slot\n                break;\n            }\n\n            case rabbitizer::InstrId::UniqueId::cpu_jal: {\n                add_edge(i, i + 1);\n\n                uint32_t dest = insn.getAddress();\n\n                if (dest > mcount_addr && dest >= text_vaddr && dest < text_vaddr + text_section_len) {\n                    add_edge(i + 1, addr_to_i(dest), true);\n\n                    auto it = functions.find(dest);\n                    assert(it != functions.end());\n\n                    for (uint32_t ret_instr : it->second.returns) {\n                        add_edge(addr_to_i(ret_instr), i + 2, false, true);\n                    }\n                } else {\n                    add_edge(i + 1, i + 2, false, false, true);\n                }\n\n                insns[i + 1].no_following_successor = true; // don't inspect delay slot\n                break;\n            }\n\n            case rabbitizer::InstrId::UniqueId::cpu_jalr:\n                // function pointer\n                add_edge(i, i + 1);\n                add_edge(i + 1, i + 2, false, false, false, true);\n                insns[i + 1].no_following_successor = true; // don't inspect delay slot\n                break;\n\n            default:\n                add_edge(i, i + 1);\n                break;\n        }\n    }\n}\n\n#define GPR_O32_hi (rabbitizer::Registers::Cpu::GprO32)((int)rabbitizer::Registers::Cpu::GprO32::GPR_O32_ra + 1)\n#define GPR_O32_lo (rabbitizer::Registers::Cpu::GprO32)((int)rabbitizer::Registers::Cpu::GprO32::GPR_O32_ra + 2)\n\nuint64_t map_reg(rabbitizer::Registers::Cpu::GprO32 reg) {\n    return (uint64_t)1 << ((int)reg - (int)rabbitizer::Registers::Cpu::GprO32::GPR_O32_zero + 1);\n}\n\nuint64_t temporary_regs(void) {\n    // clang-format off\n    return\n        map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_t0) |\n        map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_t1) |\n        map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_t2) |\n        map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_t3) |\n        map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_t4) |\n        map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_t5) |\n        map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_t6) |\n        map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_t7) |\n        map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_t8) |\n        map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_t9);\n    // clang-format on\n}\n\ntypedef enum {\n    /* 0 */ TYPE_NOP, // No arguments\n    /* 1 */ TYPE_S,   // in\n    /* 2 */ TYPE_D,   // 1 out\n    /* 3 */ TYPE_D_S, // out, in\n} TYPE;\n\nTYPE insn_to_type(Insn& insn) {\n    switch (insn.instruction.getUniqueId()) {\n        case rabbitizer::InstrId::UniqueId::cpu_add_s:\n        case rabbitizer::InstrId::UniqueId::cpu_add_d:\n            return TYPE_NOP;\n\n        case rabbitizer::InstrId::UniqueId::cpu_add:\n        case rabbitizer::InstrId::UniqueId::cpu_addu:\n            return TYPE_D_S;\n\n        case rabbitizer::InstrId::UniqueId::cpu_addi:\n        case rabbitizer::InstrId::UniqueId::cpu_addiu:\n        case rabbitizer::InstrId::UniqueId::cpu_andi:\n        case rabbitizer::InstrId::UniqueId::cpu_ori:\n        case rabbitizer::InstrId::UniqueId::cpu_lb:\n        case rabbitizer::InstrId::UniqueId::cpu_lbu:\n        case rabbitizer::InstrId::UniqueId::cpu_lh:\n        case rabbitizer::InstrId::UniqueId::cpu_lhu:\n        case rabbitizer::InstrId::UniqueId::cpu_lw:\n        case rabbitizer::InstrId::UniqueId::cpu_lwl:\n        // case rabbitizer::InstrId::UniqueId::cpu_lwr:\n        case rabbitizer::InstrId::UniqueId::cpu_move:\n        case rabbitizer::InstrId::UniqueId::cpu_negu:\n        case rabbitizer::InstrId::UniqueId::cpu_not:\n        case rabbitizer::InstrId::UniqueId::cpu_sll:\n        case rabbitizer::InstrId::UniqueId::cpu_slti:\n        case rabbitizer::InstrId::UniqueId::cpu_sltiu:\n        case rabbitizer::InstrId::UniqueId::cpu_sra:\n        case rabbitizer::InstrId::UniqueId::cpu_srl:\n        case rabbitizer::InstrId::UniqueId::cpu_xori:\n            return TYPE_D_S;\n\n        case rabbitizer::InstrId::UniqueId::cpu_mfhi:\n            return TYPE_D_S;\n\n        case rabbitizer::InstrId::UniqueId::cpu_mflo:\n            return TYPE_D_S;\n\n        case rabbitizer::InstrId::UniqueId::cpu_and:\n        case rabbitizer::InstrId::UniqueId::cpu_or:\n        case rabbitizer::InstrId::UniqueId::cpu_nor:\n        case rabbitizer::InstrId::UniqueId::cpu_sllv:\n        case rabbitizer::InstrId::UniqueId::cpu_slt:\n        case rabbitizer::InstrId::UniqueId::cpu_sltu:\n        case rabbitizer::InstrId::UniqueId::cpu_srav:\n        case rabbitizer::InstrId::UniqueId::cpu_srlv:\n        case rabbitizer::InstrId::UniqueId::cpu_subu:\n        case rabbitizer::InstrId::UniqueId::cpu_xor:\n            return TYPE_D_S;\n\n        case rabbitizer::InstrId::UniqueId::cpu_cfc1:\n        case rabbitizer::InstrId::UniqueId::cpu_mfc1:\n        case UniqueId_cpu_li:\n        case UniqueId_cpu_la:\n        case rabbitizer::InstrId::UniqueId::cpu_lui:\n            return TYPE_D;\n\n        case rabbitizer::InstrId::UniqueId::cpu_ctc1:\n        case rabbitizer::InstrId::UniqueId::cpu_bgez:\n        case rabbitizer::InstrId::UniqueId::cpu_bgezl:\n        case rabbitizer::InstrId::UniqueId::cpu_bgtz:\n        case rabbitizer::InstrId::UniqueId::cpu_bgtzl:\n        case rabbitizer::InstrId::UniqueId::cpu_blez:\n        case rabbitizer::InstrId::UniqueId::cpu_blezl:\n        case rabbitizer::InstrId::UniqueId::cpu_bltz:\n        case rabbitizer::InstrId::UniqueId::cpu_bltzl:\n        case rabbitizer::InstrId::UniqueId::cpu_beqz:\n        case rabbitizer::InstrId::UniqueId::cpu_bnez:\n        case rabbitizer::InstrId::UniqueId::cpu_mtc1:\n            return TYPE_S;\n\n        case rabbitizer::InstrId::UniqueId::cpu_beq:\n        case rabbitizer::InstrId::UniqueId::cpu_beql:\n        case rabbitizer::InstrId::UniqueId::cpu_bne:\n        case rabbitizer::InstrId::UniqueId::cpu_bnel:\n        case rabbitizer::InstrId::UniqueId::cpu_sb:\n        case rabbitizer::InstrId::UniqueId::cpu_sh:\n        case rabbitizer::InstrId::UniqueId::cpu_sw:\n        case rabbitizer::InstrId::UniqueId::cpu_swl:\n        // case rabbitizer::InstrId::UniqueId::cpu_swr:\n        case rabbitizer::InstrId::UniqueId::cpu_tne:\n        case rabbitizer::InstrId::UniqueId::cpu_teq:\n        case rabbitizer::InstrId::UniqueId::cpu_tge:\n        case rabbitizer::InstrId::UniqueId::cpu_tgeu:\n        case rabbitizer::InstrId::UniqueId::cpu_tlt:\n            return TYPE_S;\n\n        case rabbitizer::InstrId::UniqueId::cpu_div:\n            return TYPE_D_S;\n\n        case rabbitizer::InstrId::UniqueId::cpu_div_s:\n        case rabbitizer::InstrId::UniqueId::cpu_div_d:\n            return TYPE_NOP;\n\n        case rabbitizer::InstrId::UniqueId::cpu_divu:\n        case rabbitizer::InstrId::UniqueId::cpu_mult:\n        case rabbitizer::InstrId::UniqueId::cpu_multu:\n            return TYPE_D_S;\n\n        case rabbitizer::InstrId::UniqueId::cpu_neg_s:\n        case rabbitizer::InstrId::UniqueId::cpu_neg_d:\n            return TYPE_NOP;\n\n        case rabbitizer::InstrId::UniqueId::cpu_jalr:\n            return TYPE_S;\n\n        case rabbitizer::InstrId::UniqueId::cpu_jr:\n            if (insn.jtbl_addr != 0) {\n                insn.instruction.Set_rs(insn.index_reg);\n            }\n            if (insn.instruction.GetO32_rs() == rabbitizer::Registers::Cpu::GprO32::GPR_O32_ra) {\n                return TYPE_NOP;\n            }\n            return TYPE_S;\n\n        case rabbitizer::InstrId::UniqueId::cpu_lwc1:\n        case rabbitizer::InstrId::UniqueId::cpu_ldc1:\n        case rabbitizer::InstrId::UniqueId::cpu_swc1:\n        case rabbitizer::InstrId::UniqueId::cpu_sdc1:\n            return TYPE_S;\n\n        default:\n            return TYPE_NOP;\n    }\n}\n\nuint64_t get_dest_reg_mask(const Insn& insn) {\n    switch (insn.instruction.getUniqueId()) {\n        case rabbitizer::InstrId::UniqueId::cpu_div:\n        case rabbitizer::InstrId::UniqueId::cpu_divu:\n        case rabbitizer::InstrId::UniqueId::cpu_mult:\n        case rabbitizer::InstrId::UniqueId::cpu_multu:\n            return map_reg(GPR_O32_lo) | map_reg(GPR_O32_hi);\n\n        default:\n            return map_reg(get_dest_reg(insn));\n    }\n}\n\nuint64_t get_single_source_reg_mask(const rabbitizer::InstructionCpu& instr) {\n    switch (instr.getUniqueId()) {\n        case rabbitizer::InstrId::UniqueId::cpu_mflo:\n            return map_reg(GPR_O32_lo);\n        case rabbitizer::InstrId::UniqueId::cpu_mfhi:\n            return map_reg(GPR_O32_hi);\n\n        default:\n            break;\n    }\n    if (instr.hasOperandAlias(rabbitizer::OperandType::cpu_rs)) {\n        return map_reg(instr.GetO32_rs());\n    } else if (instr.hasOperandAlias(rabbitizer::OperandType::cpu_rt)) {\n        return map_reg(instr.GetO32_rt());\n    } else {\n        return 0;\n    }\n}\n\nuint64_t get_all_source_reg_mask(const rabbitizer::InstructionCpu& instr) {\n    uint64_t ret = 0;\n\n    switch (instr.getUniqueId()) {\n        case rabbitizer::InstrId::UniqueId::cpu_mflo:\n            ret |= map_reg(GPR_O32_lo);\n        case rabbitizer::InstrId::UniqueId::cpu_mfhi:\n            ret |= map_reg(GPR_O32_hi);\n\n        default:\n            break;\n    }\n\n    if (instr.hasOperandAlias(rabbitizer::OperandType::cpu_rs)) {\n        ret |= map_reg(instr.GetO32_rs());\n    }\n    if (instr.hasOperandAlias(rabbitizer::OperandType::cpu_rt) && !instr.modifiesRt()) {\n        ret |= map_reg(instr.GetO32_rt());\n    }\n    return ret;\n}\n\nvoid pass4(void) {\n    vector<uint32_t> q; // TODO: Why is this called q?\n    uint64_t livein_func_start = 1U | map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a0) |\n                                 map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a1) |\n                                 map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_sp) |\n                                 map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_zero);\n\n    q.push_back(main_addr);\n    insns[addr_to_i(main_addr)].f_livein = livein_func_start;\n\n    for (auto& it : data_function_pointers) {\n        q.push_back(it.second);\n        insns[addr_to_i(it.second)].f_livein = livein_func_start |\n                                               map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a2) |\n                                               map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a3);\n    }\n\n    for (auto& addr : la_function_pointers) {\n        q.push_back(addr);\n        insns[addr_to_i(addr)].f_livein = livein_func_start | map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a2) |\n                                          map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a3);\n    }\n\n    while (!q.empty()) {\n        uint32_t addr = q.back();\n        q.pop_back();\n        uint32_t i = addr_to_i(addr);\n        Insn& insn = insns[i];\n        uint64_t live = insn.f_livein | 1U;\n        uint64_t src_regs_map;\n\n        switch (insn_to_type(insn)) {\n            case TYPE_D:\n                live |= get_dest_reg_mask(insn);\n                break;\n\n            case TYPE_D_S:\n                src_regs_map = get_all_source_reg_mask(insn.instruction);\n                if ((live & src_regs_map) == src_regs_map) {\n                    live |= get_dest_reg_mask(insn);\n                }\n                break;\n\n            case TYPE_S:\n            case TYPE_NOP:\n                break;\n        }\n\n        if ((insn.f_liveout | live) == insn.f_liveout) {\n            // No new bits\n            continue;\n        }\n\n        live |= insn.f_liveout;\n        insn.f_liveout = live;\n\n        bool function_entry = false;\n\n        for (Edge& e : insn.successors) {\n            uint64_t new_live = live;\n\n            if (e.function_exit) {\n                new_live &= 1U | map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_v0) |\n                            map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_v1) |\n                            map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_zero);\n            } else if (e.function_entry) {\n                new_live &= 1U | map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_v0) |\n                            map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a0) |\n                            map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a1) |\n                            map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a2) |\n                            map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a3) |\n                            map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_sp) |\n                            map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_zero);\n                function_entry = true;\n            } else if (e.extern_function) {\n                string_view name;\n                size_t extern_function_id;\n                uint32_t address = insns[i - 1].getAddress();\n\n                // TODO: Can this only ever be a J-type instruction?\n                auto it = symbol_names.find(address);\n                const ExternFunction* found_fn = nullptr;\n\n                if (it != symbol_names.end()) {\n                    name = it->second;\n\n                    for (auto& fn : extern_functions) {\n                        if (name == fn.name) {\n                            found_fn = &fn;\n                            break;\n                        }\n                    }\n\n                    if (found_fn == nullptr) {\n                        fprintf(stderr, \"missing extern function: %s\\n\", string(name).c_str());\n                    }\n                }\n\n                assert(found_fn);\n\n                char ret_type = found_fn->params[0];\n\n                new_live &= ~(map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_v0) |\n                              map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a0) |\n                              map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a1) |\n                              map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a2) |\n                              map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a3) |\n                              map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_v1) | temporary_regs());\n\n                switch (ret_type) {\n                    case 'i':\n                    case 'u':\n                    case 'p':\n                        new_live |= map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_v0);\n                        break;\n\n                    case 'f':\n                        break;\n\n                    case 'd':\n                        break;\n\n                    case 'v':\n                        break;\n\n                    case 'l':\n                    case 'j':\n                        new_live |= map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_v0) |\n                                    map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_v1);\n                        break;\n                }\n            } else if (e.function_pointer) {\n                new_live &= ~(map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_v0) |\n                              map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a0) |\n                              map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a1) |\n                              map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a2) |\n                              map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a3) |\n                              map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_v1) | temporary_regs());\n                new_live |= map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_v0) |\n                            map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_v1);\n            }\n\n            if ((insns[e.i].f_livein | new_live) != insns[e.i].f_livein) {\n                insns[e.i].f_livein |= new_live;\n                q.push_back(text_vaddr + e.i * sizeof(uint32_t));\n            }\n        }\n\n        if (function_entry) {\n            // add one edge that skips the function call, for callee-saved register liveness propagation\n            live &= ~(map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_v0) |\n                      map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a0) |\n                      map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a1) |\n                      map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a2) |\n                      map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a3) |\n                      map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_v1) | temporary_regs());\n\n            if ((insns[i + 1].f_livein | live) != insns[i + 1].f_livein) {\n                insns[i + 1].f_livein |= live;\n                q.push_back(text_vaddr + (i + 1) * sizeof(uint32_t));\n            }\n        }\n    }\n}\n\nvoid pass5(void) {\n    vector<uint32_t> q;\n\n    assert(functions.count(main_addr));\n\n    q = functions[main_addr].returns;\n    for (auto addr : q) {\n        insns[addr_to_i(addr)].b_liveout = 1U | map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_v0);\n    }\n\n    for (auto& it : data_function_pointers) {\n        for (auto addr : functions[it.second].returns) {\n            q.push_back(addr);\n            insns[addr_to_i(addr)].b_liveout = 1U | map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_v0) |\n                                               map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_v1);\n        }\n    }\n\n    for (auto& func_addr : la_function_pointers) {\n        for (auto addr : functions[func_addr].returns) {\n            q.push_back(addr);\n            insns[addr_to_i(addr)].b_liveout = 1U | map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_v0) |\n                                               map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_v1);\n        }\n    }\n\n    for (auto& insn : insns) {\n        if (insn.f_livein != 0) {\n            q.push_back(insn.instruction.getVram());\n        }\n    }\n\n    while (!q.empty()) {\n        uint32_t addr = q.back();\n\n        q.pop_back();\n\n        uint32_t i = addr_to_i(addr);\n        Insn& insn = insns[i];\n        uint64_t live = insn.b_liveout | 1;\n\n        switch (insn_to_type(insn)) {\n            case TYPE_S:\n                live |= get_all_source_reg_mask(insn.instruction);\n                break;\n\n            case TYPE_D:\n                live &= ~get_dest_reg_mask(insn);\n                break;\n\n            case TYPE_D_S:\n                if (live & get_dest_reg_mask(insn)) {\n                    live &= ~get_dest_reg_mask(insn);\n                    live |= get_all_source_reg_mask(insn.instruction);\n                }\n                break;\n\n            case TYPE_NOP:\n                break;\n        }\n\n        if ((insn.b_livein | live) == insn.b_livein) {\n            // No new bits\n            continue;\n        }\n\n        live |= insn.b_livein;\n        insn.b_livein = live;\n\n        bool function_exit = false;\n\n        for (Edge& e : insn.predecessors) {\n            uint64_t new_live = live;\n\n            if (e.function_exit) {\n                new_live &= 1U | map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_v0) |\n                            map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_v1);\n                function_exit = true;\n            } else if (e.function_entry) {\n                new_live &= 1U | map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_v0) |\n                            map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a0) |\n                            map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a1) |\n                            map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a2) |\n                            map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a3) |\n                            map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_sp);\n            } else if (e.extern_function) {\n                string_view name;\n                size_t extern_function_id;\n                const ExternFunction* found_fn = nullptr;\n                uint32_t address = insns[i - 2].getAddress();\n                // TODO: Can this only ever be a J-type instruction?\n                auto it = symbol_names.find(address);\n\n                if (it != symbol_names.end()) {\n                    name = it->second;\n                    for (auto& fn : extern_functions) {\n                        if (name == fn.name) {\n                            found_fn = &fn;\n                            break;\n                        }\n                    }\n                }\n\n                assert(found_fn);\n\n                uint64_t args = 1U;\n\n                if (found_fn->flags & FLAG_VARARG) {\n                    // Assume the worst, that all four registers are used\n                    for (int j = 0; j < 4; j++) {\n                        args |= map_reg((rabbitizer::Registers::Cpu::GprO32)(\n                            (int)rabbitizer::Registers::Cpu::GprO32::GPR_O32_a0 + j));\n                    }\n                }\n\n                int pos = 0;\n                int pos_float = 0;\n                bool only_floats_so_far = true;\n\n                for (const char* p = found_fn->params + 1; *p != '\\0'; ++p) {\n                    switch (*p) {\n                        case 'i':\n                        case 'u':\n                        case 'p':\n                        case 't':\n                            only_floats_so_far = false;\n                            if (pos < 4) {\n                                args |= map_reg((rabbitizer::Registers::Cpu::GprO32)(\n                                    (int)rabbitizer::Registers::Cpu::GprO32::GPR_O32_a0 + pos));\n                            }\n                            ++pos;\n                            break;\n\n                        case 'f':\n                            if (only_floats_so_far && pos_float < 4) {\n                                pos_float += 2;\n                            } else if (pos < 4) {\n                                args |= map_reg((rabbitizer::Registers::Cpu::GprO32)(\n                                    (int)rabbitizer::Registers::Cpu::GprO32::GPR_O32_a0 + pos));\n                            }\n                            ++pos;\n                            break;\n\n                        case 'd':\n                            // !!!\n                            if (pos % 1 != 0) {\n                                ++pos;\n                            }\n                            if (only_floats_so_far && pos_float < 4) {\n                                pos_float += 2;\n                            } else if (pos < 4) {\n                                args |= map_reg((rabbitizer::Registers::Cpu::GprO32)(\n                                            (int)rabbitizer::Registers::Cpu::GprO32::GPR_O32_a0 + pos)) |\n                                        map_reg((rabbitizer::Registers::Cpu::GprO32)(\n                                            (int)rabbitizer::Registers::Cpu::GprO32::GPR_O32_a0 + pos + 1));\n                            }\n                            pos += 2;\n                            break;\n\n                        case 'l':\n                        case 'j':\n                            if (pos % 1 != 0) {\n                                ++pos;\n                            }\n                            only_floats_so_far = false;\n                            if (pos < 4) {\n                                args |= map_reg((rabbitizer::Registers::Cpu::GprO32)(\n                                            (int)rabbitizer::Registers::Cpu::GprO32::GPR_O32_a0 + pos)) |\n                                        map_reg((rabbitizer::Registers::Cpu::GprO32)(\n                                            (int)rabbitizer::Registers::Cpu::GprO32::GPR_O32_a0 + pos + 1));\n                            }\n                            pos += 2;\n                            break;\n                    }\n                }\n                args |= map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_sp);\n                new_live &= ~(map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_v0) |\n                              map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a0) |\n                              map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a1) |\n                              map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a2) |\n                              map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a3) |\n                              map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_v1) | temporary_regs());\n                new_live |= args;\n            } else if (e.function_pointer) {\n                new_live &= ~(map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_v0) |\n                              map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a0) |\n                              map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a1) |\n                              map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a2) |\n                              map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a3) |\n                              map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_v1) | temporary_regs());\n                new_live |= map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a0) |\n                            map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a1) |\n                            map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a2) |\n                            map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a3);\n            }\n\n            if ((insns[e.i].b_liveout | new_live) != insns[e.i].b_liveout) {\n                insns[e.i].b_liveout |= new_live;\n                q.push_back(text_vaddr + e.i * sizeof(uint32_t));\n            }\n        }\n\n        if (function_exit) {\n            // add one edge that skips the function call, for callee-saved register liveness propagation\n            live &= ~(map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_v0) |\n                      map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a0) |\n                      map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a1) |\n                      map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a2) |\n                      map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_a3) |\n                      map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_v1) | temporary_regs());\n\n            if ((insns[i - 1].b_liveout | live) != insns[i - 1].b_liveout) {\n                insns[i - 1].b_liveout |= live;\n                q.push_back(text_vaddr + (i - 1) * sizeof(uint32_t));\n            }\n        }\n    }\n}\n\nvoid pass6(void) {\n    for (auto& it : functions) {\n        uint32_t addr = it.first;\n        Function& f = it.second;\n\n        for (uint32_t ret : f.returns) {\n            Insn& i = insns[addr_to_i(ret)];\n\n            if (i.f_liveout & i.b_liveout & map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_v1)) {\n                f.nret = 2;\n            } else if ((i.f_liveout & i.b_liveout & map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_v0)) &&\n                       f.nret == 0) {\n                f.nret = 1;\n            }\n        }\n\n        Insn& insn = insns.at(addr_to_i(addr));\n\n        for (int i = 0; i < 4; i++) {\n            if (insn.f_livein & insn.b_livein &\n                map_reg(\n                    (rabbitizer::Registers::Cpu::GprO32)((int)rabbitizer::Registers::Cpu::GprO32::GPR_O32_a0 + i))) {\n                f.nargs = 1 + i;\n            }\n        }\n        f.v0_in = (insn.f_livein & insn.b_livein & map_reg(rabbitizer::Registers::Cpu::GprO32::GPR_O32_v0)) != 0 &&\n                  !f.referenced_by_function_pointer;\n    }\n}\n\nvoid dump(void) {\n    for (size_t i = 0; i < insns.size(); i++) {\n        Insn& insn = insns[i];\n        uint32_t vaddr = text_vaddr + i * sizeof(uint32_t);\n        if (label_addresses.count(vaddr)) {\n            if (symbol_names.count(vaddr)) {\n                printf(\"L%08x: //%s\\n\", vaddr, symbol_names[vaddr].c_str());\n            } else {\n                printf(\"L%08x:\\n\", vaddr);\n            }\n        }\n\n        // TODO: construct an immediate override for the instructions\n        printf(\"\\t%s\", insn.disassemble().c_str());\n        if (insn.patched) {\n            printf(\"\\t[patched, immediate now 0x%X]\", insn.patched_addr);\n        }\n        printf(\"\\n\");\n    }\n}\n\nconst char* r(uint32_t reg) {\n    static const char* regs[] = {\n        /*  */ \"zero\", \"at\", \"v0\", \"v1\",\n        /*  */ \"a0\",   \"a1\", \"a2\", \"a3\",\n        /*  */ \"t0\",   \"t1\", \"t2\", \"t3\", \"t4\", \"t5\", \"t6\", \"t7\",\n        /*  */ \"s0\",   \"s1\", \"s2\", \"s3\", \"s4\", \"s5\", \"s6\", \"s7\",\n        /*  */ \"t8\",   \"t9\", \"k0\", \"k1\", \"gp\", \"sp\", \"fp\", \"ra\",\n    };\n\n    assert(reg < std::size(regs));\n    return regs[reg];\n}\n\nconst char* wr(uint32_t reg) {\n    // clang-format off\n    static const char *regs[] = {\n        \"f0.w[0]\", \"f0.w[1]\",\n        \"f2.w[0]\", \"f2.w[1]\",\n        \"f4.w[0]\", \"f4.w[1]\",\n        \"f6.w[0]\", \"f6.w[1]\",\n        \"f8.w[0]\", \"f8.w[1]\",\n        \"f10.w[0]\", \"f10.w[1]\",\n        \"f12.w[0]\", \"f12.w[1]\",\n        \"f14.w[0]\", \"f14.w[1]\",\n        \"f16.w[0]\", \"f16.w[1]\",\n        \"f18.w[0]\", \"f18.w[1]\",\n        \"f20.w[0]\", \"f20.w[1]\",\n        \"f22.w[0]\", \"f22.w[1]\",\n        \"f24.w[0]\", \"f24.w[1]\",\n        \"f26.w[0]\", \"f26.w[1]\",\n        \"f28.w[0]\", \"f28.w[1]\",\n        \"f30.w[0]\", \"f30.w[1]\"\n    };\n    // clang-format on\n\n    size_t index = reg - (int)rabbitizer::Registers::Cpu::Cop1O32::COP1_O32_fv0;\n\n    assert(index < std::size(regs));\n    return regs[index];\n}\n\nconst char* fr(uint32_t reg) {\n    // clang-format off\n    static const char *regs[] = {\n        \"f0.f[0]\", \"f0.f[1]\",\n        \"f2.f[0]\", \"f2.f[1]\",\n        \"f4.f[0]\", \"f4.f[1]\",\n        \"f6.f[0]\", \"f6.f[1]\",\n        \"f8.f[0]\", \"f8.f[1]\",\n        \"f10.f[0]\", \"f10.f[1]\",\n        \"f12.f[0]\", \"f12.f[1]\",\n        \"f14.f[0]\", \"f14.f[1]\",\n        \"f16.f[0]\", \"f16.f[1]\",\n        \"f18.f[0]\", \"f18.f[1]\",\n        \"f20.f[0]\", \"f20.f[1]\",\n        \"f22.f[0]\", \"f22.f[1]\",\n        \"f24.f[0]\", \"f24.f[1]\",\n        \"f26.f[0]\", \"f26.f[1]\",\n        \"f28.f[0]\", \"f28.f[1]\",\n        \"f30.f[0]\", \"f30.f[1]\",\n    };\n    // clang-format on\n\n    size_t index = reg - (int)rabbitizer::Registers::Cpu::Cop1O32::COP1_O32_fv0;\n\n    assert(index < std::size(regs));\n    return regs[index];\n}\n\nconst char* dr(uint32_t reg) {\n    // clang-format off\n    static const char *regs[] = {\n        \"f0\",\n        \"f2\",\n        \"f4\",\n        \"f6\",\n        \"f8\",\n        \"f10\",\n        \"f12\",\n        \"f14\",\n        \"f16\",\n        \"f18\",\n        \"f20\",\n        \"f22\",\n        \"f24\",\n        \"f26\",\n        \"f28\",\n        \"f30\"\n    };\n    // clang-format on\n\n    size_t index = reg - (int)rabbitizer::Registers::Cpu::Cop1O32::COP1_O32_fv0;\n\n    assert(index % 2 == 0);\n    index /= 2;\n    assert(index < std::size(regs));\n    return regs[index];\n}\n\nvoid dump_instr(int i);\n\nvoid dump_cond_branch(int i, const char* lhs, const char* op, const char* rhs) {\n    Insn& insn = insns[i];\n    const char* cast1 = \"\";\n    const char* cast2 = \"\";\n\n    if (strcmp(op, \"==\") && strcmp(op, \"!=\")) {\n        cast1 = \"(int)\";\n        if (strcmp(rhs, \"0\")) {\n            cast2 = \"(int)\";\n        }\n    }\n    printf(\"if (%s%s %s %s%s) {\\n\", cast1, lhs, op, cast2, rhs);\n    dump_instr(i + 1);\n\n    uint32_t addr = insn.getAddress();\n\n    printf(\"goto L%x;}\\n\", addr);\n}\n\nvoid dump_cond_branch_likely(int i, const char* lhs, const char* op, const char* rhs) {\n    uint32_t target = text_vaddr + (i + 2) * sizeof(uint32_t);\n\n    dump_cond_branch(i, lhs, op, rhs);\n    if (!TRACE) {\n        printf(\"else goto L%x;\\n\", target);\n    } else {\n        printf(\"else {printf(\\\"pc=0x%08x (ignored)\\\\n\\\"); goto L%x;}\\n\", text_vaddr + (i + 1) * 4, target);\n    }\n    label_addresses.insert(target);\n}\n\nvoid dump_jal(int i, uint32_t imm) {\n    string_view name;\n    auto it = symbol_names.find(imm);\n    const ExternFunction* found_fn = nullptr;\n\n    // Check for an external function at the address in the immediate. If it does not exist, function is internal\n    if (it != symbol_names.end()) {\n        name = it->second;\n        for (auto& fn : extern_functions) {\n            if (name == fn.name) {\n                found_fn = &fn;\n                break;\n            }\n        }\n    }\n\n    dump_instr(i + 1);\n\n    if (found_fn != nullptr) {\n        if (found_fn->flags & FLAG_VARARG) {\n            for (int j = 0; j < 4; j++) {\n                printf(\"MEM_U32(sp + %d) = %s;\\n\", j * 4, r((int)rabbitizer::Registers::Cpu::GprO32::GPR_O32_a0 + j));\n            }\n        }\n\n        const char ret_type = found_fn->params[0];\n\n        switch (ret_type) {\n            case 'v':\n                break;\n\n            case 'i':\n            case 'u':\n            case 'p':\n                printf(\"%s = \", r((int)rabbitizer::Registers::Cpu::GprO32::GPR_O32_v0));\n                break;\n\n            case 'f':\n                printf(\"%s = \", fr((int)rabbitizer::Registers::Cpu::Cop1O32::COP1_O32_fv0));\n                break;\n\n            case 'd':\n                printf(\"tempf64 = \");\n                break;\n\n            case 'l':\n            case 'j':\n                printf(\"temp64 = \");\n                break;\n        }\n\n        printf(\"wrapper_%s(\", string(name).c_str());\n\n        bool first = true;\n\n        if (!(found_fn->flags & FLAG_NO_MEM)) {\n            printf(\"mem\");\n            first = false;\n        }\n\n        int pos = 0;\n        int pos_float = 0;\n        bool only_floats_so_far = true;\n        bool needs_sp = false;\n\n        for (const char* p = &found_fn->params[1]; *p != '\\0'; ++p) {\n            if (!first) {\n                printf(\", \");\n            }\n\n            first = false;\n\n            switch (*p) {\n                case 't':\n                    printf(\"trampoline, \");\n                    needs_sp = true;\n                    // fallthrough\n                case 'i':\n                case 'u':\n                case 'p':\n                    only_floats_so_far = false;\n                    if (pos < 4) {\n                        printf(\"%s\", r((int)rabbitizer::Registers::Cpu::GprO32::GPR_O32_a0 + pos));\n                    } else {\n                        printf(\"MEM_%c32(sp + %d)\", *p == 'i' ? 'S' : 'U', pos * 4);\n                    }\n                    ++pos;\n                    break;\n\n                case 'f':\n                    if (only_floats_so_far && pos_float < 4) {\n                        printf(\"%s\", fr((int)rabbitizer::Registers::Cpu::Cop1O32::COP1_O32_fa0 + pos_float));\n                        pos_float += 2;\n                    } else if (pos < 4) {\n                        printf(\"BITCAST_U32_TO_F32(%s)\", r((int)rabbitizer::Registers::Cpu::GprO32::GPR_O32_a0 + pos));\n                    } else {\n                        printf(\"BITCAST_U32_TO_F32(MEM_U32(sp + %d))\", pos * 4);\n                    }\n                    ++pos;\n                    break;\n\n                case 'd':\n                    if (pos % 1 != 0) {\n                        ++pos;\n                    }\n                    if (only_floats_so_far && pos_float < 4) {\n                        printf(\"double_from_FloatReg(%s)\",\n                               dr((int)rabbitizer::Registers::Cpu::Cop1O32::COP1_O32_fa0 + pos_float));\n                        pos_float += 2;\n                    } else if (pos < 4) {\n                        printf(\"BITCAST_U64_TO_F64(((uint64_t)%s << 32) | (uint64_t)%s)\",\n                               r((int)rabbitizer::Registers::Cpu::GprO32::GPR_O32_a0 + pos),\n                               r((int)rabbitizer::Registers::Cpu::GprO32::GPR_O32_a0 + pos + 1));\n                    } else {\n                        printf(\"BITCAST_U64_TO_F64(((uint64_t)MEM_U32(sp + %d) << 32) | \"\n                               \"(uint64_t)MEM_U32(sp + \"\n                               \"%d))\",\n                               pos * 4, (pos + 1) * 4);\n                    }\n                    pos += 2;\n                    break;\n\n                case 'l':\n                case 'j':\n                    if (pos % 1 != 0) {\n                        ++pos;\n                    }\n                    only_floats_so_far = false;\n                    if (*p == 'l') {\n                        printf(\"(int64_t)\");\n                    }\n                    if (pos < 4) {\n                        printf(\"(((uint64_t)%s << 32) | (uint64_t)%s)\",\n                               r((int)rabbitizer::Registers::Cpu::GprO32::GPR_O32_a0 + pos),\n                               r((int)rabbitizer::Registers::Cpu::GprO32::GPR_O32_a0 + pos + 1));\n                    } else {\n                        printf(\"(((uint64_t)MEM_U32(sp + %d) << 32) | (uint64_t)MEM_U32(sp + %d))\", pos * 4,\n                               (pos + 1) * 4);\n                    }\n                    pos += 2;\n                    break;\n            }\n        }\n\n        if ((found_fn->flags & FLAG_VARARG) || needs_sp) {\n            printf(\"%s%s\", first ? \"\" : \", \", r((int)rabbitizer::Registers::Cpu::GprO32::GPR_O32_sp));\n        }\n\n        printf(\");\\n\");\n\n        if (ret_type == 'l' || ret_type == 'j') {\n            printf(\"%s = (uint32_t)(temp64 >> 32);\\n\", r((int)rabbitizer::Registers::Cpu::GprO32::GPR_O32_v0));\n            printf(\"%s = (uint32_t)temp64;\\n\", r((int)rabbitizer::Registers::Cpu::GprO32::GPR_O32_v1));\n        } else if (ret_type == 'd') {\n            printf(\"%s = FloatReg_from_double(tempf64);\\n\", dr((int)rabbitizer::Registers::Cpu::Cop1O32::COP1_O32_fv0));\n        }\n    } else {\n        Function& f = functions.find(imm)->second;\n\n        if (f.nret == 1) {\n            printf(\"v0 = \");\n        } else if (f.nret == 2) {\n            printf(\"temp64 = \");\n        }\n\n        if (!name.empty()) {\n            printf(\"f_%s\", string(name).c_str());\n        } else {\n            printf(\"func_%x\", imm);\n        }\n\n        printf(\"(mem, sp\");\n\n        if (f.v0_in) {\n            printf(\", %s\", r((int)rabbitizer::Registers::Cpu::GprO32::GPR_O32_v0));\n        }\n\n        for (uint32_t i = 0; i < f.nargs; i++) {\n            printf(\", %s\", r((int)rabbitizer::Registers::Cpu::GprO32::GPR_O32_a0 + i));\n        }\n\n        printf(\");\\n\");\n\n        if (f.nret == 2) {\n            printf(\"%s = (uint32_t)(temp64 >> 32);\\n\", r((int)rabbitizer::Registers::Cpu::GprO32::GPR_O32_v0));\n            printf(\"%s = (uint32_t)temp64;\\n\", r((int)rabbitizer::Registers::Cpu::GprO32::GPR_O32_v1));\n        }\n    }\n\n    printf(\"goto L%x;\\n\", text_vaddr + (i + 2) * 4);\n    label_addresses.insert(text_vaddr + (i + 2) * 4);\n}\n\nvoid dump_instr(int i) {\n    Insn& insn = insns[i];\n\n    const char* symbol_name = NULL;\n    if (symbol_names.count(text_vaddr + i * sizeof(uint32_t)) != 0) {\n        symbol_name = symbol_names[text_vaddr + i * sizeof(uint32_t)].c_str();\n        printf(\"//%s:\\n\", symbol_name);\n    }\n\n    if (TRACE) {\n        printf(\"++cnt; printf(\\\"pc=0x%08x%s%s\\\\n\\\"); \", text_vaddr + i * 4, symbol_name ? \" \" : \"\",\n               symbol_name ? symbol_name : \"\");\n    }\n\n    uint64_t src_regs_map;\n    if (!insn.instruction.isJump() && !insn.instruction.isBranch() && !conservative) {\n        switch (insn_to_type(insn)) {\n            case TYPE_S:\n                src_regs_map = get_all_source_reg_mask(insn.instruction);\n                if (!((insn.f_livein & src_regs_map) == src_regs_map)) {\n                    printf(\"// fdead %llx \", (unsigned long long)insn.f_livein);\n                }\n                break;\n\n            case TYPE_D_S: {\n                uint64_t reg_mask = get_all_source_reg_mask(insn.instruction);\n\n                if ((insn.f_livein & reg_mask) != reg_mask) {\n                    printf(\"// fdead %llx \", (unsigned long long)insn.f_livein);\n                    break;\n                }\n            }\n                // fallthrough\n            case TYPE_D:\n                if (!(insn.b_liveout & get_dest_reg_mask(insn))) {\n#if 0\n                    printf(\"// %i bdead %llx %llx \", i, (unsigned long long)insn.b_liveout,\n                           (unsigned long long)get_dest_reg_mask(insn));\n#else\n                    printf(\"// bdead %llx \", (unsigned long long)insn.b_liveout);\n#endif\n                }\n                break;\n\n            case TYPE_NOP:\n                break;\n        }\n    }\n\n    int32_t imm;\n    char buf[0x100];\n    switch (insn.instruction.getUniqueId()) {\n        case rabbitizer::InstrId::UniqueId::cpu_add:\n        case rabbitizer::InstrId::UniqueId::cpu_addu:\n            if (insn.instruction.GetO32_rs() == rabbitizer::Registers::Cpu::GprO32::GPR_O32_zero) {\n                printf(\"%s = %s;\\n\", r((int)insn.instruction.GetO32_rd()), r((int)insn.instruction.GetO32_rt()));\n            } else if (insn.instruction.GetO32_rt() == rabbitizer::Registers::Cpu::GprO32::GPR_O32_zero) {\n                printf(\"%s = %s;\\n\", r((int)insn.instruction.GetO32_rd()), r((int)insn.instruction.GetO32_rs()));\n            } else {\n                printf(\"%s = %s + %s;\\n\", r((int)insn.instruction.GetO32_rd()), r((int)insn.instruction.GetO32_rs()),\n                       r((int)insn.instruction.GetO32_rt()));\n            }\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_add_s:\n            printf(\"%s = %s + %s;\\n\", fr((int)insn.instruction.GetO32_fd()), fr((int)insn.instruction.GetO32_fs()),\n                   fr((int)insn.instruction.GetO32_ft()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_add_d:\n            printf(\"%s = FloatReg_from_double(double_from_FloatReg(%s) + double_from_FloatReg(%s));\\n\",\n                   dr((int)insn.instruction.GetO32_fd()), dr((int)insn.instruction.GetO32_fs()),\n                   dr((int)insn.instruction.GetO32_ft()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_addi:\n        case rabbitizer::InstrId::UniqueId::cpu_addiu:\n            imm = insn.getImmediate();\n            if (insn.instruction.GetO32_rs() == rabbitizer::Registers::Cpu::GprO32::GPR_O32_zero) {\n                printf(\"%s = 0x%x;\\n\", r((int)insn.instruction.GetO32_rt()), imm);\n            } else {\n                printf(\"%s = %s + 0x%x;\\n\", r((int)insn.instruction.GetO32_rt()), r((int)insn.instruction.GetO32_rs()),\n                       imm);\n            }\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_and:\n            printf(\"%s = %s & %s;\\n\", r((int)insn.instruction.GetO32_rd()), r((int)insn.instruction.GetO32_rs()),\n                   r((int)insn.instruction.GetO32_rt()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_andi:\n            imm = insn.getImmediate();\n            printf(\"%s = %s & 0x%x;\\n\", r((int)insn.instruction.GetO32_rt()), r((int)insn.instruction.GetO32_rs()),\n                   imm);\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_beq:\n            dump_cond_branch(i, r((int)insn.instruction.GetO32_rs()), \"==\", r((int)insn.instruction.GetO32_rt()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_beql:\n            dump_cond_branch_likely(i, r((int)insn.instruction.GetO32_rs()),\n                                    \"==\", r((int)insn.instruction.GetO32_rt()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_bgez:\n            dump_cond_branch(i, r((int)insn.instruction.GetO32_rs()), \">=\", \"0\");\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_bgezl:\n            dump_cond_branch_likely(i, r((int)insn.instruction.GetO32_rs()), \">=\", \"0\");\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_bgtz:\n            dump_cond_branch(i, r((int)insn.instruction.GetO32_rs()), \">\", \"0\");\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_bgtzl:\n            dump_cond_branch_likely(i, r((int)insn.instruction.GetO32_rs()), \">\", \"0\");\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_blez:\n            dump_cond_branch(i, r((int)insn.instruction.GetO32_rs()), \"<=\", \"0\");\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_blezl:\n            dump_cond_branch_likely(i, r((int)insn.instruction.GetO32_rs()), \"<=\", \"0\");\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_bltz:\n            dump_cond_branch(i, r((int)insn.instruction.GetO32_rs()), \"<\", \"0\");\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_bltzl:\n            dump_cond_branch_likely(i, r((int)insn.instruction.GetO32_rs()), \"<\", \"0\");\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_bne:\n            dump_cond_branch(i, r((int)insn.instruction.GetO32_rs()), \"!=\", r((int)insn.instruction.GetO32_rt()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_bnel:\n            dump_cond_branch_likely(i, r((int)insn.instruction.GetO32_rs()),\n                                    \"!=\", r((int)insn.instruction.GetO32_rt()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_break:\n            printf(\"abort();\\n\");\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_beqz:\n            dump_cond_branch(i, r((int)insn.instruction.GetO32_rs()), \"==\", \"0\");\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_b:\n            dump_instr(i + 1);\n            imm = insn.getAddress();\n            printf(\"goto L%x;\\n\", imm);\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_bc1f:\n            printf(\"if (!cf) {\\n\");\n            dump_instr(i + 1);\n            imm = insn.getAddress();\n            printf(\"goto L%x;}\\n\", imm);\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_bc1t:\n            printf(\"if (cf) {\\n\");\n            dump_instr(i + 1);\n            imm = insn.getAddress();\n            printf(\"goto L%x;}\\n\", imm);\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_bc1fl: {\n            uint32_t target = text_vaddr + (i + 2) * sizeof(uint32_t);\n            printf(\"if (!cf) {\\n\");\n            dump_instr(i + 1);\n            imm = insn.getAddress();\n            printf(\"goto L%x;}\\n\", imm);\n            if (!TRACE) {\n                printf(\"else goto L%x;\\n\", target);\n            } else {\n                printf(\"else {printf(\\\"pc=0x%08x (ignored)\\\\n\\\"); goto L%x;}\\n\", text_vaddr + (i + 1) * 4, target);\n            }\n            label_addresses.insert(target);\n        } break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_bc1tl: {\n            uint32_t target = text_vaddr + (i + 2) * sizeof(uint32_t);\n            printf(\"if (cf) {\\n\");\n            dump_instr(i + 1);\n            imm = insn.getAddress();\n            printf(\"goto L%x;}\\n\", imm);\n            if (!TRACE) {\n                printf(\"else goto L%x;\\n\", target);\n            } else {\n                printf(\"else {printf(\\\"pc=0x%08x (ignored)\\\\n\\\"); goto L%x;}\\n\", text_vaddr + (i + 1) * 4, target);\n            }\n            label_addresses.insert(target);\n        } break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_bnez:\n            dump_cond_branch(i, r((int)insn.instruction.GetO32_rs()), \"!=\", \"0\");\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_c_lt_s:\n            printf(\"cf = %s < %s;\\n\", fr((int)insn.instruction.GetO32_fs()), fr((int)insn.instruction.GetO32_ft()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_c_le_s:\n            printf(\"cf = %s <= %s;\\n\", fr((int)insn.instruction.GetO32_fs()), fr((int)insn.instruction.GetO32_ft()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_c_eq_s:\n            printf(\"cf = %s == %s;\\n\", fr((int)insn.instruction.GetO32_fs()), fr((int)insn.instruction.GetO32_ft()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_c_lt_d:\n            printf(\"cf = double_from_FloatReg(%s) < double_from_FloatReg(%s);\\n\", dr((int)insn.instruction.GetO32_fs()),\n                   dr((int)insn.instruction.GetO32_ft()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_c_le_d:\n            printf(\"cf = double_from_FloatReg(%s) <= double_from_FloatReg(%s);\\n\",\n                   dr((int)insn.instruction.GetO32_fs()), dr((int)insn.instruction.GetO32_ft()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_c_eq_d:\n            printf(\"cf = double_from_FloatReg(%s) == double_from_FloatReg(%s);\\n\",\n                   dr((int)insn.instruction.GetO32_fs()), dr((int)insn.instruction.GetO32_ft()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_cvt_s_w:\n            printf(\"%s = (int)%s;\\n\", fr((int)insn.instruction.GetO32_fd()), wr((int)insn.instruction.GetO32_fs()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_cvt_d_w:\n            printf(\"%s = FloatReg_from_double((int)%s);\\n\", dr((int)insn.instruction.GetO32_fd()),\n                   wr((int)insn.instruction.GetO32_fs()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_cvt_d_s:\n            printf(\"%s = FloatReg_from_double(%s);\\n\", dr((int)insn.instruction.GetO32_fd()),\n                   fr((int)insn.instruction.GetO32_fs()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_cvt_s_d:\n            printf(\"%s = double_from_FloatReg(%s);\\n\", fr((int)insn.instruction.GetO32_fd()),\n                   dr((int)insn.instruction.GetO32_fs()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_cvt_w_d:\n            printf(\"%s = cvt_w_d(double_from_FloatReg(%s));\\n\", wr((int)insn.instruction.GetO32_fd()),\n                   dr((int)insn.instruction.GetO32_fs()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_cvt_w_s:\n            printf(\"%s = cvt_w_s(%s);\\n\", wr((int)insn.instruction.GetO32_fd()), fr((int)insn.instruction.GetO32_fs()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_cvt_l_d:\n        case rabbitizer::InstrId::UniqueId::cpu_cvt_l_s:\n        case rabbitizer::InstrId::UniqueId::cpu_cvt_s_l:\n        case rabbitizer::InstrId::UniqueId::cpu_cvt_d_l:\n            goto unimplemented;\n\n        case rabbitizer::InstrId::UniqueId::cpu_cfc1:\n            assert(insn.instruction.Get_cop1cs() == rabbitizer::Registers::Cpu::Cop1Control::COP1_CONTROL_FpcCsr);\n            printf(\"%s = fcsr;\\n\", r((int)insn.instruction.GetO32_rt()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_ctc1:\n            assert(insn.instruction.Get_cop1cs() == rabbitizer::Registers::Cpu::Cop1Control::COP1_CONTROL_FpcCsr);\n            printf(\"fcsr = %s;\\n\", r((int)insn.instruction.GetO32_rt()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_div:\n            printf(\"lo = (int)%s / (int)%s; \", r((int)insn.instruction.GetO32_rs()),\n                   r((int)insn.instruction.GetO32_rt()));\n            printf(\"hi = (int)%s %% (int)%s;\\n\", r((int)insn.instruction.GetO32_rs()),\n                   r((int)insn.instruction.GetO32_rt()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_divu:\n            printf(\"lo = %s / %s; \", r((int)insn.instruction.GetO32_rs()), r((int)insn.instruction.GetO32_rt()));\n            printf(\"hi = %s %% %s;\\n\", r((int)insn.instruction.GetO32_rs()), r((int)insn.instruction.GetO32_rt()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_div_s:\n            printf(\"%s = %s / %s;\\n\", fr((int)insn.instruction.GetO32_fd()), fr((int)insn.instruction.GetO32_fs()),\n                   fr((int)insn.instruction.GetO32_ft()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_div_d:\n            printf(\"%s = FloatReg_from_double(double_from_FloatReg(%s) / double_from_FloatReg(%s));\\n\",\n                   dr((int)insn.instruction.GetO32_fd()), dr((int)insn.instruction.GetO32_fs()),\n                   dr((int)insn.instruction.GetO32_ft()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_mov_s:\n            printf(\"%s = %s;\\n\", fr((int)insn.instruction.GetO32_fd()), fr((int)insn.instruction.GetO32_fs()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_mov_d:\n            printf(\"%s = %s;\\n\", dr((int)insn.instruction.GetO32_fd()), dr((int)insn.instruction.GetO32_fs()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_mul_s:\n            printf(\"%s = %s * %s;\\n\", fr((int)insn.instruction.GetO32_fd()), fr((int)insn.instruction.GetO32_fs()),\n                   fr((int)insn.instruction.GetO32_ft()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_mul_d:\n            printf(\"%s = FloatReg_from_double(double_from_FloatReg(%s) * double_from_FloatReg(%s));\\n\",\n                   dr((int)insn.instruction.GetO32_fd()), dr((int)insn.instruction.GetO32_fs()),\n                   dr((int)insn.instruction.GetO32_ft()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_negu:\n            printf(\"%s = -%s;\\n\", r((int)insn.instruction.GetO32_rd()), r((int)insn.instruction.GetO32_rt()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_neg_s:\n            printf(\"%s = -%s;\\n\", fr((int)insn.instruction.GetO32_fd()), fr((int)insn.instruction.GetO32_fs()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_neg_d:\n            printf(\"%s = FloatReg_from_double(-double_from_FloatReg(%s));\\n\", dr((int)insn.instruction.GetO32_fd()),\n                   dr((int)insn.instruction.GetO32_fs()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_sub:\n            if (insn.instruction.GetO32_rs() == rabbitizer::Registers::Cpu::GprO32::GPR_O32_zero) {\n                printf(\"%s = -%s;\\n\", r((int)insn.instruction.GetO32_rd()), r((int)insn.instruction.GetO32_rt()));\n                break;\n            } else {\n                goto unimplemented;\n            }\n\n        case rabbitizer::InstrId::UniqueId::cpu_sub_s:\n            printf(\"%s = %s - %s;\\n\", fr((int)insn.instruction.GetO32_fd()), fr((int)insn.instruction.GetO32_fs()),\n                   fr((int)insn.instruction.GetO32_ft()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_sub_d:\n            printf(\"%s = FloatReg_from_double(double_from_FloatReg(%s) - double_from_FloatReg(%s));\\n\",\n                   dr((int)insn.instruction.GetO32_fd()), dr((int)insn.instruction.GetO32_fs()),\n                   dr((int)insn.instruction.GetO32_ft()));\n            break;\n\n            // Jumps\n\n        case rabbitizer::InstrId::UniqueId::cpu_j:\n            dump_instr(i + 1);\n            imm = insn.getAddress();\n            printf(\"goto L%x;\\n\", imm);\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_jal:\n            imm = insn.getAddress();\n            dump_jal(i, imm);\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_jalr:\n            printf(\"fp_dest = %s;\\n\", r((int)insn.instruction.GetO32_rs()));\n            dump_instr(i + 1);\n            printf(\"temp64 = trampoline(mem, sp, %s, %s, %s, %s, fp_dest);\\n\",\n                   r((int)rabbitizer::Registers::Cpu::GprO32::GPR_O32_a0),\n                   r((int)rabbitizer::Registers::Cpu::GprO32::GPR_O32_a1),\n                   r((int)rabbitizer::Registers::Cpu::GprO32::GPR_O32_a2),\n                   r((int)rabbitizer::Registers::Cpu::GprO32::GPR_O32_a3));\n            printf(\"%s = (uint32_t)(temp64 >> 32);\\n\", r((int)rabbitizer::Registers::Cpu::GprO32::GPR_O32_v0));\n            printf(\"%s = (uint32_t)temp64;\\n\", r((int)rabbitizer::Registers::Cpu::GprO32::GPR_O32_v1));\n            printf(\"goto L%x;\\n\", text_vaddr + (i + 2) * 4);\n            label_addresses.insert(text_vaddr + (i + 2) * 4);\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_jr:\n            // TODO: understand why the switch version fails, and why only it needs the nop\n            if (insn.jtbl_addr != 0) {\n                uint32_t jtbl_pos = insn.jtbl_addr - rodata_vaddr;\n\n                assert(jtbl_pos < rodata_section_len &&\n                       jtbl_pos + insn.num_cases * sizeof(uint32_t) <= rodata_section_len);\n#if 1\n                printf(\";static void *const Lswitch%x[] = {\\n\", insn.jtbl_addr);\n\n                for (uint32_t i = 0; i < insn.num_cases; i++) {\n                    uint32_t dest_addr = read_u32_be(rodata_section + jtbl_pos + i * sizeof(uint32_t)) + gp_value;\n                    printf(\"&&L%x,\\n\", dest_addr);\n                    label_addresses.insert(dest_addr);\n                }\n\n                printf(\"};\\n\");\n                printf(\"dest = Lswitch%x[%s];\\n\", insn.jtbl_addr, r((int)insn.index_reg));\n                dump_instr(i + 1);\n                printf(\"goto *dest;\\n\");\n#else\n                // This block produces a switch instead of an array of labels.\n                // It is not being used because currently it is a bit bugged.\n                // It has been keep as a reference and with the main intention to fix it\n\n                assert(insns[i + 1].id == MIPS_INS_NOP);\n                printf(\"switch (%s) {\\n\", r(insn.index_reg));\n\n                for (uint32_t i = 0; i < insn.num_cases; i++) {\n                    uint32_t dest_addr = read_u32_be(rodata_section + jtbl_pos + i * sizeof(uint32_t)) + gp_value;\n                    printf(\"case %u: goto L%x;\\n\", i, dest_addr);\n                    label_addresses.insert(dest_addr);\n                }\n\n                printf(\"}\\n\");\n#endif\n            } else {\n                if (insn.instruction.GetO32_rs() != rabbitizer::Registers::Cpu::GprO32::GPR_O32_ra) {\n                    printf(\"UNSUPPORTED JR %s    (no jumptable available)\\n\", r((int)insn.instruction.GetO32_rs()));\n                } else {\n                    dump_instr(i + 1);\n                    switch (find_function(text_vaddr + i * sizeof(uint32_t))->second.nret) {\n                        case 0:\n                            printf(\"return;\\n\");\n                            break;\n\n                        case 1:\n                            printf(\"return v0;\\n\");\n                            break;\n\n                        case 2:\n                            printf(\"return ((uint64_t)v0 << 32) | v1;\\n\");\n                            break;\n                    }\n                }\n            }\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_lb:\n            imm = insn.getImmediate();\n            printf(\"%s = MEM_S8(%s + %d);\\n\", r((int)insn.instruction.GetO32_rt()),\n                   r((int)insn.instruction.GetO32_rs()), imm);\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_lbu:\n            imm = insn.getImmediate();\n            printf(\"%s = MEM_U8(%s + %d);\\n\", r((int)insn.instruction.GetO32_rt()),\n                   r((int)insn.instruction.GetO32_rs()), imm);\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_lh:\n            imm = insn.getImmediate();\n            printf(\"%s = MEM_S16(%s + %d);\\n\", r((int)insn.instruction.GetO32_rt()),\n                   r((int)insn.instruction.GetO32_rs()), imm);\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_lhu:\n            imm = insn.getImmediate();\n            printf(\"%s = MEM_U16(%s + %d);\\n\", r((int)insn.instruction.GetO32_rt()),\n                   r((int)insn.instruction.GetO32_rs()), imm);\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_lui:\n            imm = insn.getImmediate();\n            printf(\"%s = 0x%x;\\n\", r((int)insn.instruction.GetO32_rt()), imm << 16);\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_lw:\n            imm = insn.getImmediate();\n            printf(\"%s = MEM_U32(%s + %d);\\n\", r((int)insn.instruction.GetO32_rt()),\n                   r((int)insn.instruction.GetO32_rs()), imm);\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_lwc1:\n            imm = insn.getImmediate();\n            printf(\"%s = MEM_U32(%s + %d);\\n\", wr((int)insn.instruction.GetO32_ft()),\n                   r((int)insn.instruction.GetO32_rs()), imm);\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_ldc1:\n            imm = insn.getImmediate();\n            assert(((int)insn.instruction.GetO32_ft() - (int)rabbitizer::Registers::Cpu::Cop1O32::COP1_O32_fv0) % 2 ==\n                   0);\n            printf(\"%s = MEM_U32(%s + %d);\\n\", wr((int)insn.instruction.GetO32_ft() + 1),\n                   r((int)insn.instruction.GetO32_rs()), imm);\n            printf(\"%s = MEM_U32(%s + %d + 4);\\n\", wr((int)insn.instruction.GetO32_ft()),\n                   r((int)insn.instruction.GetO32_rs()), imm);\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_lwl: {\n            const char* reg = r((int)insn.instruction.GetO32_rt());\n\n            imm = insn.getImmediate();\n\n            printf(\"%s = %s + %d; \", reg, r((int)insn.instruction.GetO32_rs()), imm);\n            printf(\"%s = ((uint32_t)MEM_U8(%s) << 24) | (MEM_U8(%s + 1) << 16) | (MEM_U8(%s + 2) << 8) | MEM_U8(%s + 3);\\n\", reg,\n                   reg, reg, reg, reg);\n        } break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_lwr:\n            printf(\"//%s\\n\", insn.disassemble().c_str());\n            break;\n\n        case UniqueId_cpu_la: {\n            uint32_t addr = insn.getAddress();\n\n            printf(\"%s = 0x%x;\", r((int)insn.lila_dst_reg), addr);\n            if ((text_vaddr <= addr) && (addr < text_vaddr + text_section_len)) {\n                printf(\" // function pointer\");\n                label_addresses.insert(addr);\n            }\n            printf(\"\\n\");\n        } break;\n\n        case UniqueId_cpu_li:\n            imm = insn.getImmediate();\n\n            printf(\"%s = 0x%x;\\n\", r((int)insn.lila_dst_reg), imm);\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_mfc1:\n            printf(\"%s = %s;\\n\", r((int)insn.instruction.GetO32_rt()), wr((int)insn.instruction.GetO32_fs()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_mfhi:\n            printf(\"%s = hi;\\n\", r((int)insn.instruction.GetO32_rd()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_mflo:\n            printf(\"%s = lo;\\n\", r((int)insn.instruction.GetO32_rd()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_move:\n            printf(\"%s = %s;\\n\", r((int)insn.instruction.GetO32_rd()), r((int)insn.instruction.GetO32_rs()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_mtc1:\n            printf(\"%s = %s;\\n\", wr((int)insn.instruction.GetO32_fs()), r((int)insn.instruction.GetO32_rt()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_mult:\n            printf(\"lo = %s * %s;\\n\", r((int)insn.instruction.GetO32_rs()), r((int)insn.instruction.GetO32_rt()));\n            printf(\"hi = (uint32_t)((int64_t)(int)%s * (int64_t)(int)%s >> 32);\\n\",\n                   r((int)insn.instruction.GetO32_rs()), r((int)insn.instruction.GetO32_rt()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_multu:\n            printf(\"lo = %s * %s;\\n\", r((int)insn.instruction.GetO32_rs()), r((int)insn.instruction.GetO32_rt()));\n            printf(\"hi = (uint32_t)((uint64_t)%s * (uint64_t)%s >> 32);\\n\", r((int)insn.instruction.GetO32_rs()),\n                   r((int)insn.instruction.GetO32_rt()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_sqrt_s:\n            printf(\"%s = sqrtf(%s);\\n\", fr((int)insn.instruction.GetO32_fd()), fr((int)insn.instruction.GetO32_fs()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_nor:\n            printf(\"%s = ~(%s | %s);\\n\", r((int)insn.instruction.GetO32_rd()), r((int)insn.instruction.GetO32_rs()),\n                   r((int)insn.instruction.GetO32_rt()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_not:\n            printf(\"%s = ~%s;\\n\", r((int)insn.instruction.GetO32_rd()), r((int)insn.instruction.GetO32_rs()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_or:\n            printf(\"%s = %s | %s;\\n\", r((int)insn.instruction.GetO32_rd()), r((int)insn.instruction.GetO32_rs()),\n                   r((int)insn.instruction.GetO32_rt()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_ori:\n            imm = insn.getImmediate();\n            printf(\"%s = %s | 0x%x;\\n\", r((int)insn.instruction.GetO32_rt()), r((int)insn.instruction.GetO32_rs()),\n                   imm);\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_sb:\n            imm = insn.getImmediate();\n            printf(\"MEM_U8(%s + %d) = (uint8_t)%s;\\n\", r((int)insn.instruction.GetO32_rs()), imm,\n                   r((int)insn.instruction.GetO32_rt()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_sh:\n            imm = insn.getImmediate();\n            printf(\"MEM_U16(%s + %d) = (uint16_t)%s;\\n\", r((int)insn.instruction.GetO32_rs()), imm,\n                   r((int)insn.instruction.GetO32_rt()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_sll:\n            printf(\"%s = %s << %d;\\n\", r((int)insn.instruction.GetO32_rd()), r((int)insn.instruction.GetO32_rt()),\n                   insn.instruction.Get_sa());\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_sllv:\n            printf(\"%s = %s << (%s & 0x1f);\\n\", r((int)insn.instruction.GetO32_rd()),\n                   r((int)insn.instruction.GetO32_rt()), r((int)insn.instruction.GetO32_rs()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_slt:\n            printf(\"%s = (int)%s < (int)%s;\\n\", r((int)insn.instruction.GetO32_rd()),\n                   r((int)insn.instruction.GetO32_rs()), r((int)insn.instruction.GetO32_rt()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_slti:\n            imm = insn.getImmediate();\n            printf(\"%s = (int)%s < (int)0x%x;\\n\", r((int)insn.instruction.GetO32_rt()),\n                   r((int)insn.instruction.GetO32_rs()), imm);\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_sltiu:\n            imm = insn.getImmediate();\n            printf(\"%s = %s < 0x%x;\\n\", r((int)insn.instruction.GetO32_rt()), r((int)insn.instruction.GetO32_rs()),\n                   imm);\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_sltu:\n            printf(\"%s = %s < %s;\\n\", r((int)insn.instruction.GetO32_rd()), r((int)insn.instruction.GetO32_rs()),\n                   r((int)insn.instruction.GetO32_rt()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_sra:\n            printf(\"%s = (int)%s >> %d;\\n\", r((int)insn.instruction.GetO32_rd()), r((int)insn.instruction.GetO32_rt()),\n                   insn.instruction.Get_sa());\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_srav:\n            printf(\"%s = (int)%s >> (%s & 0x1f);\\n\", r((int)insn.instruction.GetO32_rd()),\n                   r((int)insn.instruction.GetO32_rt()), r((int)insn.instruction.GetO32_rs()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_srl:\n            printf(\"%s = %s >> %d;\\n\", r((int)insn.instruction.GetO32_rd()), r((int)insn.instruction.GetO32_rt()),\n                   insn.instruction.Get_sa());\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_srlv:\n            printf(\"%s = %s >> (%s & 0x1f);\\n\", r((int)insn.instruction.GetO32_rd()),\n                   r((int)insn.instruction.GetO32_rt()), r((int)insn.instruction.GetO32_rs()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_subu:\n            printf(\"%s = %s - %s;\\n\", r((int)insn.instruction.GetO32_rd()), r((int)insn.instruction.GetO32_rs()),\n                   r((int)insn.instruction.GetO32_rt()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_sw:\n            imm = insn.getImmediate();\n            printf(\"MEM_U32(%s + %d) = %s;\\n\", r((int)insn.instruction.GetO32_rs()), imm,\n                   r((int)insn.instruction.GetO32_rt()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_swc1:\n            imm = insn.getImmediate();\n            printf(\"MEM_U32(%s + %d) = %s;\\n\", r((int)insn.instruction.GetO32_rs()), imm,\n                   wr((int)insn.instruction.GetO32_ft()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_sdc1:\n            assert(((int)insn.instruction.GetO32_ft() - (int)rabbitizer::Registers::Cpu::Cop1O32::COP1_O32_fv0) % 2 ==\n                   0);\n            imm = insn.getImmediate();\n            printf(\"MEM_U32(%s + %d) = %s;\\n\", r((int)insn.instruction.GetO32_rs()), imm,\n                   wr((int)insn.instruction.GetO32_ft() + 1));\n            printf(\"MEM_U32(%s + %d + 4) = %s;\\n\", r((int)insn.instruction.GetO32_rs()), imm,\n                   wr((int)insn.instruction.GetO32_ft()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_swl:\n            imm = insn.getImmediate();\n            for (int i = 0; i < 4; i++) {\n                printf(\"MEM_U8(%s + %d + %d) = (uint8_t)(%s >> %d);\\n\", r((int)insn.instruction.GetO32_rs()), imm, i,\n                       r((int)insn.instruction.GetO32_rt()), (3 - i) * 8);\n            }\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_swr:\n            printf(\"//%s\\n\", insn.disassemble().c_str());\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_trunc_w_s:\n            printf(\"%s = (int)%s;\\n\", wr((int)insn.instruction.GetO32_fd()), fr((int)insn.instruction.GetO32_fs()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_trunc_w_d:\n            printf(\"%s = (int)double_from_FloatReg(%s);\\n\", wr((int)insn.instruction.GetO32_fd()),\n                   dr((int)insn.instruction.GetO32_fs()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_trunc_l_d:\n        case rabbitizer::InstrId::UniqueId::cpu_trunc_l_s:\n            goto unimplemented;\n\n        case rabbitizer::InstrId::UniqueId::cpu_xor:\n            printf(\"%s = %s ^ %s;\\n\", r((int)insn.instruction.GetO32_rd()), r((int)insn.instruction.GetO32_rs()),\n                   r((int)insn.instruction.GetO32_rt()));\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_xori:\n            imm = insn.getImmediate();\n            printf(\"%s = %s ^ 0x%x;\\n\", r((int)insn.instruction.GetO32_rt()), r((int)insn.instruction.GetO32_rs()),\n                   imm);\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_tne:\n            imm = insn.instruction.Get_code_lower();\n            printf(\"assert(%s == %s && \\\"tne %d\\\");\\n\", r((int)insn.instruction.GetO32_rs()),\n                   r((int)insn.instruction.GetO32_rt()), imm);\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_teq:\n            imm = insn.instruction.Get_code_lower();\n            printf(\"assert(%s != %s && \\\"teq %d\\\");\\n\", r((int)insn.instruction.GetO32_rs()),\n                   r((int)insn.instruction.GetO32_rt()), imm);\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_tge:\n            imm = insn.instruction.Get_code_lower();\n            printf(\"assert((int)%s < (int)%s && \\\"tge %d\\\");\\n\", r((int)insn.instruction.GetO32_rs()),\n                   r((int)insn.instruction.GetO32_rt()), imm);\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_tgeu:\n            imm = insn.instruction.Get_code_lower();\n            printf(\"assert(%s < %s && \\\"tgeu %d\\\");\\n\", r((int)insn.instruction.GetO32_rs()),\n                   r((int)insn.instruction.GetO32_rt()), imm);\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_tlt:\n            imm = insn.instruction.Get_code_lower();\n            printf(\"assert((int)%s >= (int)%s && \\\"tlt %d\\\");\\n\", r((int)insn.instruction.GetO32_rs()),\n                   r((int)insn.instruction.GetO32_rt()), imm);\n            break;\n\n        case rabbitizer::InstrId::UniqueId::cpu_nop:\n            printf(\"//nop;\\n\");\n            break;\n\n        default:\n        unimplemented:\n            printf(\"UNIMPLEMENTED 0x%X : %s\\n\", insn.instruction.getRaw(), insn.disassemble().c_str());\n            break;\n    }\n}\n\nvoid inspect_data_function_pointers(vector<pair<uint32_t, uint32_t>>& ret, const uint8_t* section,\n                                    uint32_t section_vaddr, uint32_t len) {\n    for (uint32_t i = 0; i < len; i += 4) {\n        uint32_t addr = read_u32_be(section + i);\n\n        if (addr == 0x430b00 || addr == 0x433b00) {\n            // in as1, not function pointers (normal integers)\n            continue;\n        }\n\n        if (addr == 0x4a0000) {\n            // in copt\n            continue;\n        }\n\n        if (section_vaddr + i >= procedure_table_start &&\n            section_vaddr + i < procedure_table_start + procedure_table_len) {\n            // some linking table with a \"all\" functions, in as1 5.3\n            continue;\n        }\n\n        if ((addr >= text_vaddr) && (addr < text_vaddr + text_section_len) && ((addr % 4) == 0)) {\n#if INSPECT_FUNCTION_POINTERS\n            fprintf(stderr, \"assuming function pointer 0x%x at 0x%x\\n\", addr, section_vaddr + i);\n#endif\n            ret.push_back(make_pair(section_vaddr + i, addr));\n            label_addresses.insert(addr);\n            functions[addr].referenced_by_function_pointer = true;\n        }\n    }\n}\n\nvoid dump_function_signature(Function& f, uint32_t vaddr) {\n    printf(\"static \");\n    switch (f.nret) {\n        case 0:\n            printf(\"void \");\n            break;\n\n        case 1:\n            printf(\"uint32_t \");\n            break;\n\n        case 2:\n            printf(\"uint64_t \");\n            break;\n    }\n\n    auto name_it = symbol_names.find(vaddr);\n\n    if (name_it != symbol_names.end()) {\n        printf(\"f_%s\", name_it->second.c_str());\n    } else {\n        printf(\"func_%x\", vaddr);\n    }\n\n    printf(\"(uint8_t *mem, uint32_t sp\");\n\n    if (f.v0_in) {\n        printf(\", uint32_t %s\", r((int)rabbitizer::Registers::Cpu::GprO32::GPR_O32_v0));\n    }\n\n    for (uint32_t i = 0; i < f.nargs; i++) {\n        printf(\", uint32_t %s\", r((int)rabbitizer::Registers::Cpu::GprO32::GPR_O32_a0 + i));\n    }\n\n    printf(\")\");\n}\n\nvoid dump_c(void) {\n    map<string, uint32_t> symbol_names_inv;\n\n    for (auto& it : symbol_names) {\n        symbol_names_inv[it.second] = it.first;\n    }\n\n    uint32_t min_addr = UINT32_MAX;\n    uint32_t max_addr = 0;\n\n    if (data_section_len > 0) {\n        min_addr = std::min(min_addr, data_vaddr);\n        max_addr = std::max(max_addr, data_vaddr + data_section_len);\n    }\n    if (rodata_section_len > 0) {\n        min_addr = std::min(min_addr, rodata_vaddr);\n        max_addr = std::max(max_addr, rodata_vaddr + rodata_section_len);\n    }\n    if (bss_section_len) {\n        min_addr = std::min(min_addr, bss_vaddr);\n        max_addr = std::max(max_addr, bss_vaddr + bss_section_len);\n    }\n\n    // 64 kB. Supposedly the worst-case smallest permitted page size, increase if necessary.\n    // Ensures the hardcoded min_addr and max_addr are sufficiently aligned for the machine running the\n    // recompiled binaries (and not just the one doing the original recomp build).\n    uint32_t page_size = 0x10000;\n\n    min_addr = min_addr & ~(page_size - 1);\n    max_addr = (max_addr + (page_size - 1)) & ~(page_size - 1);\n\n    uint32_t stack_bottom = min_addr;\n    min_addr -= 0x100000; // 1 MB stack\n    stack_bottom -= 0x10; // for main's stack frame\n\n    printf(\"#include \\\"header.h\\\"\\n\");\n\n    if (conservative) {\n        printf(\"static uint32_t s0, s1, s2, s3, s4, s5, s6, s7, fp;\\n\");\n    }\n\n    printf(\"static const uint32_t rodata[] = {\\n\");\n\n    for (size_t i = 0; i < rodata_section_len; i += 4) {\n        printf(\"0x%x,%s\", read_u32_be(rodata_section + i), i % 32 == 28 ? \"\\n\" : \"\");\n    }\n\n    printf(\"};\\n\");\n    printf(\"static const uint32_t data[] = {\\n\");\n\n    for (size_t i = 0; i < data_section_len; i += 4) {\n        printf(\"0x%x,%s\", read_u32_be(data_section + i), i % 32 == 28 ? \"\\n\" : \"\");\n    }\n\n    printf(\"};\\n\");\n\n    /* if (!data_function_pointers.empty()) {\n        printf(\"static const struct { uint32_t orig_addr; void *recompiled_addr; } data_function_pointers[] = {\\n\");\n        for (auto item : data_function_pointers) {\n            printf(\"{0x%x, &&L%x},\\n\", item.first, item.second);\n        }\n        printf(\"};\\n\");\n    } */\n\n    if (TRACE) {\n        printf(\"static unsigned long long int cnt = 0;\\n\");\n    }\n\n    for (auto& f_it : functions) {\n        uint32_t addr = f_it.first;\n        auto& ins = insns.at(addr_to_i(addr));\n\n        if (ins.f_livein != 0) {\n            // Function is used\n            dump_function_signature(f_it.second, addr);\n            printf(\";\\n\");\n        }\n    }\n\n    if (!data_function_pointers.empty() || !la_function_pointers.empty()) {\n        printf(\"uint64_t trampoline(uint8_t *mem, uint32_t sp, uint32_t a0, uint32_t a1, uint32_t a2, uint32_t a3, \"\n               \"uint32_t fp_dest) {\\n\");\n        printf(\"switch (fp_dest) {\\n\");\n\n        for (auto& it : functions) {\n            Function& f = it.second;\n\n            if (f.referenced_by_function_pointer) {\n                printf(\"case 0x%x: \", it.first);\n\n                if (f.nret == 1) {\n                    printf(\"return (uint64_t)\");\n                } else if (f.nret == 2) {\n                    printf(\"return \");\n                }\n\n                auto name_it = symbol_names.find(it.first);\n\n                if (name_it != symbol_names.end()) {\n                    printf(\"f_%s\", name_it->second.c_str());\n                } else {\n                    printf(\"func_%x\", it.first);\n                }\n\n                printf(\"(mem, sp\");\n\n                for (unsigned int i = 0; i < f.nargs; i++) {\n                    printf(\", a%d\", i);\n                }\n\n                printf(\")\");\n\n                if (f.nret == 1) {\n                    printf(\" << 32\");\n                }\n\n                printf(\";\");\n\n                if (f.nret == 0) {\n                    printf(\" return 0;\");\n                }\n\n                printf(\"\\n\");\n            }\n        }\n\n        printf(\"default: abort();\");\n        printf(\"}\\n\");\n        printf(\"}\\n\");\n    }\n\n    printf(\"int run(uint8_t *mem, int argc, char *argv[]) {\\n\");\n    printf(\"mmap_initial_data_range(mem, 0x%x, 0x%x);\\n\", min_addr, max_addr);\n\n    printf(\"memcpy(mem + 0x%x, rodata, 0x%x);\\n\", rodata_vaddr, rodata_section_len);\n    printf(\"memcpy(mem + 0x%x, data, 0x%x);\\n\", data_vaddr, data_section_len);\n\n    /* if (!data_function_pointers.empty()) {\n        if (!LABELS_64_BIT) {\n            printf(\"for (int i = 0; i < %d; i++) MEM_U32(data_function_pointers[i].orig_addr) =\n    (uint32_t)(uintptr_t)data_function_pointers[i].recompiled_addr;\\n\", (int)data_function_pointers.size()); } else {\n            printf(\"for (int i = 0; i < %d; i++) MEM_U32(data_function_pointers[i].orig_addr) =\n    (uint32_t)((uintptr_t)data_function_pointers[i].recompiled_addr - (uintptr_t)&&Loffset);\\n\",\n    (int)data_function_pointers.size());\n        }\n    } */\n\n    printf(\"MEM_S32(0x%x) = argc;\\n\", symbol_names_inv.at(\"__Argc\"));\n    printf(\"MEM_S32(0x%x) = argc;\\n\", stack_bottom);\n    printf(\"uint32_t al = argc * 4; for (int i = 0; i < argc; i++) al += strlen(argv[i]) + 1;\\n\");\n    printf(\"uint32_t arg_addr = wrapper_malloc(mem, al);\\n\");\n    printf(\"MEM_U32(0x%x) = arg_addr;\\n\", symbol_names_inv.at(\"__Argv\"));\n    printf(\"MEM_U32(0x%x) = arg_addr;\\n\", stack_bottom + 4);\n    printf(\"uint32_t arg_strpos = arg_addr + argc * 4;\\n\");\n    printf(\"for (int i = 0; i < argc; i++) {MEM_U32(arg_addr + i * 4) = arg_strpos; uint32_t p = 0; do { \"\n           \"MEM_S8(arg_strpos) = argv[i][p]; ++arg_strpos; } while (argv[i][p++] != '\\\\0');}\\n\");\n\n    printf(\"setup_libc_data(mem);\\n\");\n\n    // printf(\"gp = 0x%x;\\n\", gp_value); // only to recreate the outcome when ugen reads uninitialized stack memory\n\n    printf(\"int ret = f_main(mem, 0x%x\", stack_bottom);\n\n    Function& main_func = functions[main_addr];\n\n    if (main_func.nargs >= 1) {\n        printf(\", argc\");\n    }\n\n    if (main_func.nargs >= 2) {\n        printf(\", arg_addr\");\n    }\n\n    printf(\");\\n\");\n\n    if (TRACE) {\n        printf(\"end: fprintf(stderr, \\\"cnt: %%llu\\\\n\\\", cnt);\\n\");\n    }\n\n    printf(\"return ret;\\n\");\n    printf(\"}\\n\");\n\n    for (auto& f_it : functions) {\n        Function& f = f_it.second;\n        uint32_t start_addr = f_it.first;\n        uint32_t end_addr = f.end_addr;\n\n        if (insns[addr_to_i(start_addr)].f_livein == 0) {\n            // Non-used function, skip\n            continue;\n        }\n\n        printf(\"\\n\");\n        dump_function_signature(f, start_addr);\n        printf(\" {\\n\");\n        printf(\"const uint32_t zero = 0;\\n\");\n\n        if (!conservative) {\n            printf(\"uint32_t at = 0, v1 = 0, t0 = 0, t1 = 0, t2 = 0,\\n\");\n            printf(\"t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, s0 = 0, s1 = 0, s2 = 0, s3 = 0, s4 = 0, s5 = 0,\\n\");\n            printf(\"s6 = 0, s7 = 0, t8 = 0, t9 = 0, gp = 0, fp = 0, s8 = 0, ra = 0;\\n\");\n        } else {\n            printf(\"uint32_t at = 0, v1 = 0, t0 = 0, t1 = 0, t2 = 0,\\n\");\n            printf(\"t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, t8 = 0, t9 = 0, gp = 0x10000, ra = 0x10000;\\n\");\n        }\n\n        printf(\"uint32_t lo = 0, hi = 0;\\n\");\n        printf(\"int cf = 0;\\n\");\n        printf(\"uint64_t temp64;\\n\");\n        printf(\"double tempf64;\\n\");\n        printf(\"uint32_t fp_dest;\\n\");\n        printf(\"void *dest;\\n\");\n\n        if (!f.v0_in) {\n            printf(\"uint32_t v0 = 0;\\n\");\n        }\n\n        for (uint32_t j = f.nargs; j < 4; j++) {\n            printf(\"uint32_t %s = 0;\\n\", r((int)rabbitizer::Registers::Cpu::GprO32::GPR_O32_a0 + j));\n        }\n\n        for (size_t i = addr_to_i(start_addr), end_i = addr_to_i(end_addr); i < end_i; i++) {\n            Insn& insn = insns[i];\n            uint32_t vaddr = text_vaddr + i * 4;\n            if (label_addresses.count(vaddr)) {\n                printf(\"L%x:\\n\", vaddr);\n            }\n#if DUMP_INSTRUCTIONS\n            printf(\"// %s:\\n\", insn.disassemble().c_str());\n#endif\n            dump_instr(i);\n        }\n\n        printf(\"}\\n\");\n    }\n    /* for (size_t i = 0; i < insns.size(); i++) {\n        Insn& insn = insns[i];\n        uint32_t vaddr = text_vaddr + i * 4;\n        auto fn_it = functions.find(vaddr);\n\n        if (fn_it != functions.end()) {\n            Function& f = fn_it->second;\n\n            printf(\"}\\n\\n\");\n\n            switch (f.nret) {\n                case 0:\n                    printf(\"void \");\n                    break;\n\n                case 1:\n                    printf(\"uint32_t \");\n                    break;\n\n                case 2:\n                    printf(\"uint64_t \");\n                    break;\n            }\n\n            auto name_it = symbol_names.find(vaddr);\n\n            if (name_it != symbol_names.end()) {\n                printf(\"%s\", name_it->second.c_str());\n            } else {\n                printf(\"func_%x\", vaddr);\n            }\n\n            printf(\"(uint8_t *mem, uint32_t sp\");\n\n            if (f.v0_in) {\n                printf(\", uint32_t %s\", r(MIPS_REG_V0));\n            }\n\n            for (uint32_t i = 0; i < f.nargs; i++) {\n                printf(\", uint32_t %s\", r(MIPS_REG_A0 + i));\n            }\n\n            printf(\") {\\n\");\n            printf(\"const uint32_t zero = 0;\\n\");\n            printf(\"uint32_t at = 0, v1 = 0, t0 = 0, t1 = 0, t2 = 0,\\n\");\n            printf(\"t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, s0 = 0, s1 = 0, s2 = 0, s3 = 0, s4 = 0, s5 = 0,\\n\");\n            printf(\"s6 = 0, s7 = 0, t8 = 0, t9 = 0, gp = 0, fp = 0, s8 = 0, ra = 0;\\n\");\n            printf(\"uint32_t lo = 0, hi = 0;\\n\");\n            printf(\"int cf = 0;\\n\");\n\n            if (!f.v0_in) {\n                printf(\"uint32_t v0 = 0;\\n\");\n            }\n\n            for (uint32_t j = f.nargs; j < 4; j++) {\n                printf(\"uint32_t %s = 0;\\n\", r(MIPS_REG_A0 + j));\n            }\n        }\n\n        if (label_addresses.count(vaddr)) {\n            printf(\"L%x:\\n\", vaddr);\n        }\n\n        dump_instr(i);\n    } */\n}\n\nvoid parse_elf(const uint8_t* data, size_t file_len) {\n    Elf32_Ehdr* ehdr;\n    Elf32_Shdr *shdr, *str_shdr, *sym_shdr = NULL, *dynsym_shdr, *dynamic_shdr, *reginfo_shdr, *got_shdr,\n                                 *sym_strtab = NULL, *sym_dynstr;\n    int text_section_index = -1;\n    int symtab_section_index = -1;\n    int dynsym_section_index = -1;\n    int reginfo_section_index = -1;\n    int dynamic_section_index = -1;\n    int got_section_index = -1;\n    int rodata_section_index = -1;\n    int data_section_index = -1;\n    int bss_section_index = -1;\n    uint32_t text_offset = 0;\n    uint32_t vaddr_adj = 0;\n\n    if (file_len < 4 || data[0] != 0x7f || data[1] != 'E' || data[2] != 'L' || data[3] != 'F') {\n        fprintf(stderr, \"Not an ELF file.\\n\");\n        exit(EXIT_FAILURE);\n    }\n\n    ehdr = (Elf32_Ehdr*)data;\n    if (ehdr->e_ident[EI_DATA] != 2 || u16be(ehdr->e_machine) != 8) {\n        fprintf(stderr, \"Not big-endian MIPS.\\n\");\n        exit(EXIT_FAILURE);\n    }\n\n    if (u16be(ehdr->e_shstrndx) == 0) {\n        // (We could look at program headers instead in this case.)\n        fprintf(stderr, \"Missing section headers; stripped binaries are not yet supported.\\n\");\n        exit(EXIT_FAILURE);\n    }\n\n#define SECTION(index) (Elf32_Shdr*)(data + u32be(ehdr->e_shoff) + (index)*u16be(ehdr->e_shentsize))\n#define STR(strtab, offset) (const char*)(data + u32be(strtab->sh_offset) + offset)\n\n    str_shdr = SECTION(u16be(ehdr->e_shstrndx));\n    for (int i = 0; i < u16be(ehdr->e_shnum); i++) {\n        shdr = SECTION(i);\n\n        const char* name = STR(str_shdr, u32be(shdr->sh_name));\n\n        if (strcmp(name, \".text\") == 0) {\n            text_offset = u32be(shdr->sh_offset);\n            text_vaddr = u32be(shdr->sh_addr);\n            vaddr_adj = text_vaddr - u32be(shdr->sh_addr);\n            text_section_len = u32be(shdr->sh_size);\n            text_section = data + text_offset;\n            text_section_index = i;\n        }\n\n        if (u32be(shdr->sh_type) == SHT_SYMTAB) {\n            symtab_section_index = i;\n        }\n\n        if (u32be(shdr->sh_type) == SHT_DYNSYM) {\n            dynsym_section_index = i;\n        }\n\n        if (u32be(shdr->sh_type) == SHT_MIPS_REGINFO) {\n            reginfo_section_index = i;\n        }\n\n        if (u32be(shdr->sh_type) == SHT_DYNAMIC) {\n            dynamic_section_index = i;\n        }\n\n        if (strcmp(name, \".got\") == 0) {\n            got_section_index = i;\n        }\n\n        if (strcmp(name, \".rodata\") == 0) {\n            rodata_section_index = i;\n        }\n\n        if (strcmp(name, \".data\") == 0) {\n            data_section_index = i;\n        }\n\n        if (strcmp(name, \".bss\") == 0) {\n            bss_section_index = i;\n        }\n    }\n\n    if (text_section_index == -1) {\n        fprintf(stderr, \"Missing .text section.\\n\");\n        exit(EXIT_FAILURE);\n    }\n\n    if (symtab_section_index == -1 && dynsym_section_index == -1) {\n        fprintf(stderr, \"Missing .symtab or .dynsym section.\\n\");\n        exit(EXIT_FAILURE);\n    }\n\n    if (dynsym_section_index != -1) {\n        if (reginfo_section_index == -1) {\n            fprintf(stderr, \"Missing .reginfo section.\\n\");\n            exit(EXIT_FAILURE);\n        }\n\n        if (dynamic_section_index == -1) {\n            fprintf(stderr, \"Missing .dynamic section.\\n\");\n            exit(EXIT_FAILURE);\n        }\n\n        if (got_section_index == -1) {\n            fprintf(stderr, \"Missing .got section.\\n\");\n            exit(EXIT_FAILURE);\n        }\n    }\n\n    if (rodata_section_index != -1) {\n        shdr = SECTION(rodata_section_index);\n        uint32_t size = u32be(shdr->sh_size);\n        rodata_section = data + u32be(shdr->sh_offset);\n        rodata_section_len = size;\n        rodata_vaddr = u32be(shdr->sh_addr);\n    }\n\n    if (data_section_index != -1) {\n        shdr = SECTION(data_section_index);\n        uint32_t size = u32be(shdr->sh_size);\n        data_section = data + u32be(shdr->sh_offset);\n        data_section_len = size;\n        data_vaddr = u32be(shdr->sh_addr);\n    }\n\n    if (bss_section_index != -1) {\n        shdr = SECTION(bss_section_index);\n        uint32_t size = u32be(shdr->sh_size);\n        bss_section_len = size;\n        bss_vaddr = u32be(shdr->sh_addr);\n    }\n\n    // add symbols\n    if (symtab_section_index != -1) {\n        sym_shdr = SECTION(symtab_section_index);\n        sym_strtab = SECTION(u32be(sym_shdr->sh_link));\n        assert(0 && \".symtab not supported - use a program with .dynsym instead\");\n\n        assert(u32be(sym_shdr->sh_entsize) == sizeof(Elf32_Sym));\n        for (uint32_t i = 0; i < u32be(sym_shdr->sh_size); i += sizeof(Elf32_Sym)) {\n            Elf32_Sym* sym = (Elf32_Sym*)(data + u32be(sym_shdr->sh_offset) + i);\n            const char* name = STR(sym_strtab, u32be(sym->st_name));\n            uint32_t addr = u32be(sym->st_value);\n\n            if (u16be(sym->st_shndx) != text_section_index || name[0] == '.') {\n                continue;\n            }\n\n            addr += vaddr_adj;\n            // disasm_label_add(state, name, addr, u32be(sym->st_size), true);\n        }\n    }\n\n    if (dynsym_section_index != -1) {\n        dynsym_shdr = SECTION(dynsym_section_index);\n        sym_dynstr = SECTION(u32be(dynsym_shdr->sh_link));\n        reginfo_shdr = SECTION(reginfo_section_index);\n        dynamic_shdr = SECTION(dynamic_section_index);\n        got_shdr = SECTION(got_section_index);\n\n        Elf32_RegInfo* reg_info = (Elf32_RegInfo*)(data + u32be(reginfo_shdr->sh_offset));\n        uint32_t gp_base = u32be(reg_info->ri_gp_value); // gp should have this value through the program run\n        uint32_t got_start = 0;\n        uint32_t local_got_no = 0;\n        uint32_t first_got_sym = 0;\n        uint32_t dynsym_no = 0; // section size can't be used due to alignment 16 padding\n\n        assert(u32be(dynamic_shdr->sh_entsize) == sizeof(Elf32_Dyn));\n        for (uint32_t i = 0; i < u32be(dynamic_shdr->sh_size); i += sizeof(Elf32_Dyn)) {\n            Elf32_Dyn* dyn = (Elf32_Dyn*)(data + u32be(dynamic_shdr->sh_offset) + i);\n\n            if (u32be(dyn->d_tag) == DT_PLTGOT) {\n                got_start = u32be(dyn->d_un.d_ptr);\n            }\n\n            if (u32be(dyn->d_tag) == DT_MIPS_LOCAL_GOTNO) {\n                local_got_no = u32be(dyn->d_un.d_val);\n            }\n\n            if (u32be(dyn->d_tag) == DT_MIPS_GOTSYM) {\n                first_got_sym = u32be(dyn->d_un.d_val);\n            }\n\n            if (u32be(dyn->d_tag) == DT_MIPS_SYMTABNO) {\n                dynsym_no = u32be(dyn->d_un.d_val);\n            }\n        }\n\n        assert(got_start != 0);\n\n        // value to add to asm gp offset, for example 32752, if -32752(gp) refers to the first entry in got.\n        uint32_t gp_adj = gp_base - got_start;\n\n        assert(gp_adj < 0x10000);\n\n        assert(u32be(dynsym_shdr->sh_entsize) == sizeof(Elf32_Sym));\n\n        uint32_t global_got_no = dynsym_no - first_got_sym;\n        // global_got_entry *global_entries = (global_got_entry *)calloc(global_got_no, sizeof(global_got_entry));\n\n        got_globals.resize(global_got_no);\n\n        uint32_t common_start = ~0U;\n        vector<string> common_order;\n\n        for (uint32_t i = 0; i < dynsym_no; i++) {\n            Elf32_Sym* sym = (Elf32_Sym*)(data + u32be(dynsym_shdr->sh_offset) + i * sizeof(Elf32_Sym));\n            const char* name = STR(sym_dynstr, u32be(sym->st_name));\n            uint32_t addr = u32be(sym->st_value);\n\n            addr += vaddr_adj;\n\n            uint8_t type = ELF32_ST_TYPE(sym->st_info);\n\n            if (!strcmp(name, \"_procedure_table\")) {\n                procedure_table_start = addr;\n            } else if (!strcmp(name, \"_procedure_table_size\")) {\n                procedure_table_len = 40 * u32be(sym->st_value);\n            }\n\n            if ((u16be(sym->st_shndx) == SHN_MIPS_TEXT && type == STT_FUNC) ||\n                (type == STT_OBJECT &&\n                 (u16be(sym->st_shndx) == SHN_MIPS_ACOMMON || u16be(sym->st_shndx) == SHN_MIPS_DATA))) {\n                // disasm_label_add(state, name, addr, u32be(sym->st_size), true);\n                if (type == STT_OBJECT) {}\n\n                if (u16be(sym->st_shndx) == SHN_MIPS_ACOMMON) {\n                    if (addr < common_start) {\n                        common_start = addr;\n                    }\n\n                    common_order.push_back(name);\n                }\n\n                if (type == STT_FUNC) {\n                    add_function(addr);\n\n                    if (strcmp(name, \"main\") == 0) {\n                        main_addr = addr;\n                    }\n\n                    if (strcmp(name, \"_mcount\") == 0) {\n                        mcount_addr = addr;\n                    }\n\n                    symbol_names[addr] = name;\n                }\n            }\n\n            if (i >= first_got_sym) {\n                uint32_t got_value = u32be(*(uint32_t*)(data + u32be(got_shdr->sh_offset) +\n                                                        (local_got_no + (i - first_got_sym)) * sizeof(uint32_t)));\n\n                if (u16be(sym->st_shndx) == SHN_MIPS_TEXT && type == STT_FUNC) {\n                    // got_globals[i - first_got_sym] = got_value;\n                    // label_addresses.insert(got_value);\n                    got_globals[i - first_got_sym] = addr; // to include the 3 instr gp header thing\n                    label_addresses.insert(addr);\n                } else if (type == STT_OBJECT &&\n                           (u16be(sym->st_shndx) == SHN_UNDEF || u16be(sym->st_shndx) == SHN_COMMON)) {\n                    // symbol defined externally (for example in libc)\n                    got_globals[i - first_got_sym] = got_value;\n                } else {\n                    got_globals[i - first_got_sym] = addr;\n                }\n\n                symbol_names[got_globals[i - first_got_sym]] = name;\n            }\n        }\n\n        uint32_t* local_entries = (uint32_t*)calloc(local_got_no, sizeof(uint32_t));\n        got_locals.resize(local_got_no);\n        for (uint32_t i = 0; i < local_got_no; i++) {\n            uint32_t* entry = (uint32_t*)(data + u32be(got_shdr->sh_offset) + i * sizeof(uint32_t));\n            got_locals[i] = u32be(*entry);\n        }\n\n        gp_value = gp_base;\n        gp_value_adj = gp_adj;\n\n        free(local_entries);\n    }\n\n    // add relocations\n    for (int i = 0; i < u16be(ehdr->e_shnum); i++) {\n        Elf32_Rel* prevHi = NULL;\n\n        shdr = SECTION(i);\n        if (u32be(shdr->sh_type) != SHT_REL || u32be(shdr->sh_info) != (uint32_t)text_section_index)\n            continue;\n\n        if (sym_shdr == NULL) {\n            fprintf(stderr, \"Relocations without .symtab section\\n\");\n            exit(EXIT_FAILURE);\n        }\n\n        assert(u32be(shdr->sh_link) == (uint32_t)symtab_section_index);\n        assert(u32be(shdr->sh_entsize) == sizeof(Elf32_Rel));\n\n        for (uint32_t i = 0; i < u32be(shdr->sh_size); i += sizeof(Elf32_Rel)) {\n            Elf32_Rel* rel = (Elf32_Rel*)(data + u32be(shdr->sh_offset) + i);\n            uint32_t offset = text_offset + u32be(rel->r_offset);\n            uint32_t symIndex = ELF32_R_SYM(u32be(rel->r_info));\n            uint32_t rtype = ELF32_R_TYPE(u32be(rel->r_info));\n            const char* symName = \"0\";\n\n            if (symIndex != STN_UNDEF) {\n                Elf32_Sym* sym = (Elf32_Sym*)(data + u32be(sym_shdr->sh_offset) + symIndex * sizeof(Elf32_Sym));\n\n                symName = STR(sym_strtab, u32be(sym->st_name));\n            }\n\n            if (rtype == R_MIPS_HI16) {\n                if (prevHi != NULL) {\n                    fprintf(stderr, \"Consecutive R_MIPS_HI16.\\n\");\n                    exit(EXIT_FAILURE);\n                }\n\n                prevHi = rel;\n                continue;\n            }\n\n            if (rtype == R_MIPS_LO16) {\n                int32_t addend = (int16_t)((data[offset + 2] << 8) + data[offset + 3]);\n\n                if (prevHi != NULL) {\n                    uint32_t offset2 = text_offset + u32be(prevHi->r_offset);\n\n                    addend += (uint32_t)((data[offset2 + 2] << 8) + data[offset2 + 3]) << 16;\n                    // add_reloc(state, offset2, symName, addend, out_range.vaddr);\n                }\n                prevHi = NULL;\n                // add_reloc(state, offset, symName, addend, out_range.vaddr);\n            } else if (rtype == R_MIPS_26) {\n                int32_t addend = (u32be(*(uint32_t*)(data + offset)) & ((1 << 26) - 1)) << 2;\n\n                if (addend >= (1 << 27)) {\n                    addend -= 1 << 28;\n                }\n                // add_reloc(state, offset, symName, addend, out_range.vaddr);\n            }\n\n            else {\n                fprintf(stderr, \"Bad relocation type %d.\\n\", rtype);\n                exit(EXIT_FAILURE);\n            }\n        }\n\n        if (prevHi != NULL) {\n            fprintf(stderr, \"R_MIPS_HI16 without matching R_MIPS_LO16.\\n\");\n            exit(EXIT_FAILURE);\n        }\n    }\n}\n#undef SECTION\n#undef STR\n\nsize_t read_file(const char* file_name, uint8_t** data) {\n    FILE* in;\n    uint8_t* in_buf = NULL;\n    long file_size;\n    long bytes_read;\n\n    in = fopen(file_name, \"rb\");\n    assert(in != nullptr);\n\n    // allocate buffer to read from offset to end of file\n    fseek(in, 0, SEEK_END);\n    file_size = ftell(in);\n    assert(file_size != -1L);\n\n    in_buf = (uint8_t*)malloc(file_size);\n    fseek(in, 0, SEEK_SET);\n\n    // read bytes\n    bytes_read = fread(in_buf, 1, file_size, in);\n    assert(bytes_read == file_size);\n\n    fclose(in);\n    *data = in_buf;\n    return bytes_read;\n}\n\n#ifdef UNIX_PLATFORM\nvoid crashHandler(int sig) {\n    void* array[4096];\n    const size_t nMaxFrames = std::size(array);\n    size_t size = backtrace(array, nMaxFrames);\n    char** symbols = backtrace_symbols(array, nMaxFrames);\n\n    fprintf(stderr, \"\\n recomp crashed. (Signal: %i)\\n\", sig);\n\n    // Feel free to add more crash messages.\n    const char* crashEasterEgg[] = {\n        \"\\tIT'S A SECRET TO EVERYBODY. \\n\\tBut it shouldn't be, you'd better ask about it!\",\n        \"\\tI AM ERROR.\",\n        \"\\tGRUMBLE,GRUMBLE...\",\n        \"\\tDODONGO DISLIKES SMOKE \\n\\tAnd recomp dislikes whatever you fed it.\",\n        \"\\tMay the way of the Hero lead \\n\\tto the debugger.\",\n        \"\\tTHE WIND FISH SLUMBERS LONG... \\n\\tTHE HERO'S LIFE GONE... \",\n        \"\\tSEA BEARS FOAM, SLEEP BEARS DREAMS. \\n\\tBOTH END IN THE SAME WAY CRASSSH!\",\n        \"\\tYou've met with a terrible fate, haven't you?\",\n        \"\\tMaster, I calculate a 100% probability that recomp has crashed. \\n\\tAdditionally, the \"\n        \"batteries in your Wii Remote are nearly depleted.\",\n        \"\\t    CONGRATURATIONS!    \\n\"\n        \"\\tAll Pages are displayed.\\n\"\n        \"\\t       THANK YOU!       \\n\"\n        \"\\t You are great debugger!\",\n        \"\\tRCP is HUNG UP!!\\n\"\n        \"\\tOh! MY GOD!!\",\n    };\n\n    srand(time(nullptr));\n    auto easterIndex = rand() % std::size(crashEasterEgg);\n\n    fprintf(stderr, \"\\n%s\\n\\n\", crashEasterEgg[easterIndex]);\n\n    fprintf(stderr, \"Traceback:\\n\");\n    for (size_t i = 1; i < size; i++) {\n        Dl_info info;\n        uint32_t gotAddress = dladdr(array[i], &info);\n        std::string functionName(symbols[i]);\n\n        if (gotAddress != 0 && info.dli_sname != nullptr) {\n            int32_t status;\n            char* demangled = abi::__cxa_demangle(info.dli_sname, nullptr, nullptr, &status);\n            const char* nameFound = info.dli_sname;\n\n            if (status == 0) {\n                nameFound = demangled;\n            }\n\n            {\n                char auxBuffer[0x8000];\n\n                snprintf(auxBuffer, std::size(auxBuffer), \"%s (+0x%lX)\", nameFound,\n                         (char*)array[i] - (char*)info.dli_saddr);\n                functionName = auxBuffer;\n            }\n            free(demangled);\n\n#if FULL_TRACEBACK == 0\n            fprintf(stderr, \"%-3zd %s\\n\", i, functionName.c_str());\n#endif\n        }\n\n#if FULL_TRACEBACK != 0\n        fprintf(stderr, \"%-3zd %s\\n\", i, functionName.c_str());\n#endif\n    }\n\n    fprintf(stderr, \"\\n\");\n\n    free(symbols);\n    exit(1);\n}\n#endif\n\nint main(int argc, char* argv[]) {\n    const char* filename = argv[1];\n\n    if (strcmp(filename, \"--conservative\") == 0) {\n        conservative = true;\n        filename = argv[2];\n    }\n\n#ifdef UNIX_PLATFORM\n    signal(SIGSEGV, crashHandler);\n    signal(SIGABRT, crashHandler);\n#endif\n\n    uint8_t* data;\n    size_t len = read_file(filename, &data);\n\n    parse_elf(data, len);\n    disassemble();\n    inspect_data_function_pointers(data_function_pointers, rodata_section, rodata_vaddr, rodata_section_len);\n    inspect_data_function_pointers(data_function_pointers, data_section, data_vaddr, data_section_len);\n    pass1();\n    pass2();\n    pass3();\n    pass4();\n    pass5();\n    pass6();\n    // dump();\n    dump_c();\n    free(data);\n\n    return 0;\n}\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/.clang-format",
    "content": "IndentWidth: 4\nLanguage: Cpp\nUseTab: Never\nColumnLimit: 160\nPointerAlignment: Right\nBreakBeforeBraces: Attach\nSpaceAfterCStyleCast: false\nCpp11BracedListStyle: false\nIndentCaseLabels: true\nBinPackArguments: true\nBinPackParameters: true\nAlignAfterOpenBracket: Align\nAlignOperands: true\nBreakBeforeTernaryOperators: true\nBreakBeforeBinaryOperators: None\nAllowShortBlocksOnASingleLine: true\nAllowShortIfStatementsOnASingleLine: false\nAllowShortLoopsOnASingleLine: false\nAllowShortCaseLabelsOnASingleLine: false\nAllowShortFunctionsOnASingleLine: false\nAlignEscapedNewlines: Left\nAlignTrailingComments: true\nSortIncludes: false\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/.clang-tidy",
    "content": "Checks: 'readability-*,-readability-magic-numbers,clang-diagnostic-*,clang-analyzer-*,-clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling,bugprone*,-bugprone-branch-clone,modernize*,performance*,portability*,diagnostic-*,analyzer-*,misc*,-misc-no-recursion'\nWarningsAsErrors: ''\nHeaderFilterRegex: '(src|include)\\/.*\\.h$'\nFormatStyle: 'file'\nCheckOptions:\n  # Require argument names to match exactly (instead of allowing a name to be a prefix/suffix of another)\n  # Note: 'true' is expected by clang-tidy 12+ but '1' is used for compatibility with older versions\n  - key: readability-inconsistent-declaration-parameter-name.Strict\n    value: 1\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/.gitattributes",
    "content": "# Auto detect text files and perform LF normalization\n* text=auto\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/.github/workflows/ci.yml",
    "content": "name: Build and upload to PyPI\n\n# Build on every branch push, tag push, and pull request change:\non: [push, pull_request]\n\njobs:\n  build_wheels:\n    name: Build wheels on ${{ matrix.os }}\n    runs-on: ${{ matrix.os }}\n    strategy:\n      matrix:\n        os: [ubuntu-latest, macos-latest, windows-latest]\n\n    steps:\n      - uses: actions/checkout@v2\n\n      - name: Build wheels\n        uses: pypa/cibuildwheel@v2.5.0\n        env:\n          CIBW_ARCHS_WINDOWS: \"auto\"\n          CIBW_ARCHS_LINUX: \"auto\"\n          CIBW_ARCHS_MACOS: \"all\"\n\n      - uses: actions/upload-artifact@v2\n        with:\n          path: ./wheelhouse/*.whl\n\n  build_sdist:\n    name: Build source distribution\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v2\n\n      - name: Build sdist\n        run: pipx run build --sdist\n\n      - uses: actions/upload-artifact@v2\n        with:\n          path: dist/*.tar.gz\n\n  upload_pypi:\n    needs: [build_wheels, build_sdist]\n    runs-on: ubuntu-latest\n    if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')\n    steps:\n      - uses: actions/download-artifact@v2\n        with:\n          name: artifact\n          path: dist\n\n      - uses: pypa/gh-action-pypi-publish@v1.4.2\n        with:\n          user: __token__\n          password: ${{ secrets.pypi_password }}\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/.github/workflows/make.yml",
    "content": "name: make\n\n# Build on every branch push, tag push, and pull request change:\non: [push, pull_request]\n\njobs:\n  build:\n\n    runs-on: ubuntu-latest\n\n    steps:\n    - uses: actions/checkout@v3\n    - name: make\n      run: make WERROR=1\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/.gitignore",
    "content": "# https://raw.githubusercontent.com/github/gitignore/main/C.gitignore\n# https://raw.githubusercontent.com/github/gitignore/main/Python.gitignore\n\n# Prerequisites\n*.d\n\n# Object files\n*.o\n*.ko\n*.obj\n*.elf\n\n# Linker output\n*.ilk\n*.map\n*.exp\n\n# Precompiled Headers\n*.gch\n*.pch\n\n# Libraries\n*.lib\n*.a\n*.la\n*.lo\n\n# Shared objects (inc. Windows DLLs)\n*.dll\n*.so\n*.so.*\n*.dylib\n\n# Executables\n*.exe\n*.out\n*.app\n*.i*86\n*.x86_64\n*.hex\n\n# Debug files\n*.dSYM/\n*.su\n*.idb\n*.pdb\n\n# Kernel Module Compile Results\n*.mod*\n*.cmd\n.tmp_versions/\nmodules.order\nModule.symvers\nMkfile.old\ndkms.conf\n\n\n\n# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n# C extensions\n*.so\n\n# Distribution / packaging\n.Python\nbuild/\ndevelop-eggs/\ndist/\ndownloads/\neggs/\n.eggs/\nlib/\nlib64/\nparts/\nsdist/\nvar/\nwheels/\nshare/python-wheels/\n*.egg-info/\n.installed.cfg\n*.egg\nMANIFEST\n\n# PyInstaller\n#  Usually these files are written by a python script from a template\n#  before PyInstaller builds the exe, so as to inject date/other infos into it.\n*.manifest\n*.spec\n\n# Installer logs\npip-log.txt\npip-delete-this-directory.txt\n\n# Unit test / coverage reports\nhtmlcov/\n.tox/\n.nox/\n.coverage\n.coverage.*\n.cache\nnosetests.xml\ncoverage.xml\n*.cover\n*.py,cover\n.hypothesis/\n.pytest_cache/\ncover/\n\n# Translations\n*.mo\n*.pot\n\n# Django stuff:\n*.log\nlocal_settings.py\ndb.sqlite3\ndb.sqlite3-journal\n\n# Flask stuff:\ninstance/\n.webassets-cache\n\n# Scrapy stuff:\n.scrapy\n\n# Sphinx documentation\ndocs/_build/\n\n# PyBuilder\n.pybuilder/\ntarget/\n\n# Jupyter Notebook\n.ipynb_checkpoints\n\n# IPython\nprofile_default/\nipython_config.py\n\n# pyenv\n#   For a library or package, you might want to ignore these files since the code is\n#   intended to run in multiple environments; otherwise, check them in:\n# .python-version\n\n# pipenv\n#   According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.\n#   However, in case of collaboration, if having platform-specific dependencies or dependencies\n#   having no cross-platform support, pipenv may install dependencies that don't work, or not\n#   install all needed dependencies.\n#Pipfile.lock\n\n# poetry\n#   Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.\n#   This is especially recommended for binary packages to ensure reproducibility, and is more\n#   commonly ignored for libraries.\n#   https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control\n#poetry.lock\n\n# pdm\n#   Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.\n#pdm.lock\n#   pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it\n#   in version control.\n#   https://pdm.fming.dev/#use-with-ide\n.pdm.toml\n\n# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm\n__pypackages__/\n\n# Celery stuff\ncelerybeat-schedule\ncelerybeat.pid\n\n# SageMath parsed files\n*.sage.py\n\n# Environments\n.env\n.venv\nenv/\nvenv/\nENV/\nenv.bak/\nvenv.bak/\n\n# Spyder project settings\n.spyderproject\n.spyproject\n\n# Rope project settings\n.ropeproject\n\n# mkdocs documentation\n/site\n\n# mypy\n.mypy_cache/\n.dmypy.json\ndmypy.json\n\n# Pyre type checker\n.pyre/\n\n# pytype static type analyzer\n.pytype/\n\n# Cython debug symbols\ncython_debug/\n\n\n.vscode/\n\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/.gitrepo",
    "content": "; DO NOT EDIT (unless you know what you are doing)\n;\n; This subdirectory is a git \"subrepo\", and this file is maintained by the\n; git-subrepo command. See https://github.com/git-commands/git-subrepo#readme\n;\n[subrepo]\n\tremote = git@github.com:Decompollaborate/rabbitizer.git\n\tbranch = develop\n\tcommit = 72bf240f468d30286888212b5fb773fae94340f6\n\tparent = fa84f928c510147d6083b979efb28a5a07eefe10\n\tmethod = merge\n\tcmdver = 0.4.3\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/LICENSE",
    "content": "MIT License\n\nCopyright (c) 2022 Decompollaborate\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/MANIFEST.in",
    "content": "# SPDX-FileCopyrightText: © 2022 Decompollaborate\n# SPDX-License-Identifier: MIT\n\ninclude **/*.h\ninclude **/**/*.h\ngraft include\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/Makefile",
    "content": "# Build options can be changed by modifying the makefile or by building with 'make SETTING=value'.\nDEBUG           ?= 0\nWERROR          ?= 0\nASAN            ?= 0\nEXPERIMENTAL    ?= 0\nSANITY_CHECKS   ?= 1\n\nCC              := clang\nCXX             := clang++\nAR              := ar\nIINC            := -I include\nIINC_XX         := -I include -I cplusplus/include\nCSTD            := -std=c11\nCXXSTD          := -std=c++17\nCFLAGS          := -fPIC\nCXXFLAGS        := -fPIC\nLDFLAGS         := -Lbuild -lrabbitizer\nLDXXFLAGS       := -Lbuild -lrabbitizerpp\nWARNINGS        := -Wall -Wextra -Wpedantic\n# WARNINGS        := -Wall -Wextra -Wpedantic -Wpadded\nWARNINGS        += -Werror=vla -Werror=switch -Werror=implicit-fallthrough -Werror=unused-function -Werror=unused-parameter -Werror=shadow\nWARNINGS_C      := -Werror=implicit-function-declaration -Werror=incompatible-pointer-types\nWARNINGS_CXX    :=\n\nifeq ($(CC),gcc)\n    WARNINGS    += -Wno-cast-function-type\nendif\n\nifeq ($(DEBUG),0)\n\tOPTFLAGS    := -Os -g\nelse\n\tOPTFLAGS    := -O0 -g3\n\tCFLAGS      += -DDEVELOPMENT=1\n\tCXXFLAGS    += -DDEVELOPMENT=1\nendif\n\nifneq ($(WERROR),0)\n\tWARNINGS    += -Werror\nendif\n\nifneq ($(ASAN),0)\n\tCFLAGS      += -fsanitize=address -fsanitize=pointer-compare -fsanitize=pointer-subtract -fsanitize=undefined\n\tCXXFLAGS    += -fsanitize=address -fsanitize=pointer-compare -fsanitize=pointer-subtract -fsanitize=undefined\nendif\n\nifneq ($(EXPERIMENTAL),0)\n\tCFLAGS      += -DEXPERIMENTAL\n\tCXXFLAGS    += -DEXPERIMENTAL\nendif\n\nifneq ($(SANITY_CHECKS),0)\n\tCFLAGS      += -DRAB_SANITY_CHECKS=1\n\tCXXFLAGS    += -DRAB_SANITY_CHECKS=1\nendif\n\n\nSRC_DIRS        := $(shell find src -type d)\nC_FILES         := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.c))\nH_FILES         := $(foreach dir,$(IINC),$(wildcard $(dir)/**/*.h))\nO_FILES         := $(foreach f,$(C_FILES:.c=.o),build/$f)\n\nSRCXX_DIRS      := $(shell find cplusplus/src -type d)\nCXX_FILES       := $(foreach dir,$(SRCXX_DIRS),$(wildcard $(dir)/*.cpp))\nHXX_FILES       := $(foreach dir,$(IINC_XX),$(wildcard $(dir)/**/*.hpp))\nOXX_FILES       := $(foreach f,$(CXX_FILES:.cpp=.o),build/$f)\n\nDEP_FILES       := $(O_FILES:%.o=%.d) $(OXX_FILES:%.o=%.d)\n\nTESTS_DIRS      := $(shell find tests -type d)\n\nSTATIC_LIB      := build/librabbitizer.a\nDYNAMIC_LIB     := build/librabbitizer.so\n\nSTATIC_LIB_XX   := build/librabbitizerpp.a\nDYNAMIC_LIB_XX  := build/librabbitizerpp.so\n\n# create build directories\n$(shell mkdir -p $(foreach dir,$(SRC_DIRS) $(SRCXX_DIRS) $(TESTS_DIRS),build/$(dir)))\n\n\n# Dependencies of libraries\n\n$(STATIC_LIB):  $(O_FILES)\n$(DYNAMIC_LIB): $(O_FILES)\n\n$(STATIC_LIB_XX):  $(O_FILES) $(OXX_FILES)\n$(DYNAMIC_LIB_XX): $(O_FILES) $(OXX_FILES)\n\n\n#### Main Targets ###\n\nall: static tests\n\nstatic: $(STATIC_LIB) $(STATIC_LIB_XX)\ndynamic: $(DYNAMIC_LIB) $(DYNAMIC_LIB_XX)\n\nclean:\n\t$(RM) -rf build\n\ndistclean: clean\n\t$(RM) -rf dist rabbitizer.egg-info .mypy_cache\n\nformat:\n\tclang-format-11 -i -style=file $(C_FILES)\n\tclang-format-11 -i -style=file $(CXX_FILES)\n\ntidy:\n\tclang-tidy-11 -p . --fix --fix-errors $(C_FILES) $(H_FILES) -- $(CSTD) $(OPTFLAGS) $(IINC) $(WARNINGS) $(WARNINGS_C) $(CFLAGS)\n\ntests: build/test.elf build/rsptest.elf build/r5900test.elf build/registersTrackerTest.elf build/tests/cplusplus/test.elf\n\n.PHONY: all clean distclean format tidy tests\n.DEFAULT_GOAL := all\n.SECONDARY:\n\n\n#### Various Recipes ####\n\nbuild/%.elf: %.c | $(STATIC_LIB)\n\t$(CC) -MMD $(CSTD) $(OPTFLAGS) $(IINC) $(WARNINGS) $(WARNINGS_C) $(CFLAGS) -o $@ $^ $(LDFLAGS)\n\nbuild/%.elf: %.cpp | $(STATIC_LIB_XX)\n\t$(CXX) -MMD $(CXXSTD) $(OPTFLAGS) $(IINC_XX) $(WARNINGS) $(WARNINGS_CXX) $(CXXFLAGS) -o $@ $^ $(LDXXFLAGS)\n\nbuild/%.a:\n\t$(AR) rcs $@ $^\n\nbuild/%.so:\n\t$(CC) -shared -o $@ $^\n\nbuild/%.o: %.c\n#\tThe -MMD flags additionaly creates a .d file with the same name as the .o file.\n\t$(CC) -MMD -c $(CSTD) $(OPTFLAGS) $(IINC) $(WARNINGS) $(WARNINGS_C) $(CFLAGS) -o $@ $<\n\nbuild/%.o: %.cpp\n#\tThe -MMD flags additionaly creates a .d file with the same name as the .o file.\n\t$(CXX) -MMD -c $(CXXSTD) $(OPTFLAGS) $(IINC_XX) $(WARNINGS) $(WARNINGS_CXX) $(CXXFLAGS) -o $@ $<\n\n\n-include $(DEP_FILES)\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/README.md",
    "content": "# rabbitizer\n\n[![PyPI - Downloads](https://img.shields.io/pypi/dm/rabbitizer)](https://pypi.org/project/rabbitizer/)\n![GitHub](https://img.shields.io/github/license/Decompollaborate/rabbitizer)\n![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/Decompollaborate/rabbitizer)\n![PyPI](https://img.shields.io/pypi/v/rabbitizer)\n![GitHub contributors](https://img.shields.io/github/contributors/Decompollaborate/rabbitizer?logo=purple)\n\nA MIPS instruction decoder API.\n\nCurrently supports all the CPU instructions for MIPS I, II, III and IV.\n\n## Installing\n\nThe recommended way to install is using from the PyPi release, via `pip`:\n\n```bash\npip install rabbitizer\n```\n\nIn case you want to mess with the latest development version without wanting to clone the repository, then you could use the following command:\n\n```bash\npip install git+https://github.com/Decompollaborate/rabbitizer.git@develop\n```\n\nNOTE: Installing the development version is not recommended. Proceed at your own risk.\n\n## Features\n\n- Should produces matching assembly.\n- Fully written in C for fast decoding.\n- Python bindings.\n  - The minimal Python version is 3.7, older versions are not guaranteed to work.\n- Includes some minor tools to build your own pointer/symbol detection.\n- Configurable, many features can be turned on and off.\n- MIPS instructions features:\n  - Named registers for MIPS VR4300's coprocessors.\n  - Support for many pseudoinstructions.\n  - Properly handle move to/from coprocessor instructions.\n  - Support for numeric, o32, n32 and n64 ABI register names.\n- Some workarounds for some specific compilers/assemblers:\n  - `SN64`:\n    - `div`/`divu` fix: tweaks a bit the produced `div`, `divu` and `break` instructions.\n- N64 RSP instruction decoding support.\n  - RSP decoding has been tested to build back to matching assemblies with [armips](https://github.com/Kingcom/armips/).\n- R5900 (PS2's Emotion Engine processor) decoding support.\n\n## References\n\n- R5900:\n  - EmotionEngine instruction decoding: <https://psi-rockin.github.io/ps2tek/#eeinstructiondecoding>\n  - Official documentation from Toshiba: <https://wiki.qemu.org/images/2/2a/C790.pdf>\n  - VU instruction manual: <http://lukasz.dk/files/vu-instruction-manual.pdf>\n  - GNU binutils: <https://github.com/bminor/binutils-gdb/blob/master/opcodes/mips-opc.c>\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/cplusplus/include/analysis/LoPairingInfo.hpp",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#ifndef RABBITIZER_LO_PAIRING_INFO_HPP\n#define RABBITIZER_LO_PAIRING_INFO_HPP\n#pragma once\n\n#include \"analysis/RabbitizerLoPairingInfo.h\"\n\n\nnamespace rabbitizer {\n    class LoPairingInfo {\n    protected:\n        RabbitizerLoPairingInfo pairingInfo;\n\n    public:\n        LoPairingInfo();\n        LoPairingInfo(const RabbitizerLoPairingInfo &pairingInfo);\n\n        /**\n         * Returns a pointer to the inner RabbitizerLoPairingInfo.\n         * It is recommended to not mess with it unless you know what you are doing.\n         */\n        RabbitizerLoPairingInfo *getCPtr();\n        const RabbitizerLoPairingInfo *getCPtr() const;\n\n        int getInstrOffset() const;\n        int64_t getValue() const;\n        bool shouldProcess() const;\n        bool isGpRel() const;\n        bool isGpGot() const;\n    };\n};\n\n\n#endif\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/cplusplus/include/analysis/RegistersTracker.hpp",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#ifndef RABBITIZER_REGISTERS_TRACKER_HPP\n#define RABBITIZER_REGISTERS_TRACKER_HPP\n#pragma once\n\n#include \"analysis/RabbitizerRegistersTracker.h\"\n\n#include \"analysis/LoPairingInfo.hpp\"\n#include \"instructions/InstructionBase.hpp\"\n\n\nnamespace rabbitizer {\n    class RegistersTracker {\n    protected:\n        RabbitizerRegistersTracker tracker;\n\n    public:\n        RegistersTracker();\n        RegistersTracker(const RegistersTracker &other);\n        virtual ~RegistersTracker();\n\n        /**\n         * Returns a pointer to the inner RabbitizerRegistersTracker.\n         * It is recommended to not mess with it unless you know what you are doing.\n         */\n        RabbitizerRegistersTracker *getCPtr();\n        const RabbitizerRegistersTracker *getCPtr() const;\n\n        bool moveRegisters(const InstructionBase &instr);\n        void overwriteRegisters(const InstructionBase &instr, int instrOffset);\n        void unsetRegistersAfterFuncCall(const InstructionBase &instr, const InstructionBase &prevInstr);\n        bool getAddressIfCanSetType(const InstructionBase &instr, int instrOffset, uint32_t *dstAddress) const;\n        bool getJrInfo(const InstructionBase &instr, int *dstOffset, uint32_t *dstAddress) const;\n\n        void processLui(const InstructionBase &instr, int instrOffset);\n        void processLui(const InstructionBase &instr, int instrOffset, const InstructionBase &prevInstr);\n        void processGpLoad(const InstructionBase &instr, int instrOffset);\n        bool getLuiOffsetForConstant(const InstructionBase &instr, int *dstOffset) const;\n        void processConstant(const InstructionBase &instr, uint32_t value, int offset);\n        LoPairingInfo preprocessLoAndGetInfo(const InstructionBase &instr, int instrOffset);\n        void processLo(const InstructionBase &instr, uint32_t value, int offset);\n        bool hasLoButNoHi(const InstructionBase &instr) const;\n    };\n};\n\n\n#endif\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/cplusplus/include/instructions/InstrId.hpp",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#ifndef RABBITIZER_INSTRID_HPP\n#define RABBITIZER_INSTRID_HPP\n#pragma once\n\n#include <string>\n\n\nnamespace rabbitizer {\n    namespace InstrId {\n        #define RABBITIZER_DEF_INSTR_ID(prefix, caseBits, name, ...) \\\n            prefix##_##name,\n\n        #define RABBITIZER_DEF_INSTR_ID_ALTNAME(prefix, caseBits, name, altname, ...) \\\n            RABBITIZER_DEF_INSTR_ID(prefix, caseBits, name, __VA_ARGS__)\n\n        enum class UniqueId {\n            #include \"instructions/instr_id/RabbitizerInstrId_cpu.inc\"\n\n            #include \"instructions/instr_id/RabbitizerInstrId_rsp.inc\"\n\n            #include \"instructions/instr_id/RabbitizerInstrId_r5900.inc\"\n\n            ALL_MAX = RABBITIZER_DEF_INSTR_ID(r5900, , MAX, )\n        };\n\n        #undef RABBITIZER_DEF_INSTR_ID\n        #undef RABBITIZER_DEF_INSTR_ID_ALTNAME\n\n\n        std::string getOpcodeName(UniqueId uniqueId);\n    };\n};\n\n\n#endif\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/cplusplus/include/instructions/InstructionBase.hpp",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#ifndef RABBITIZER_INSTRUCTION_BASE_HPP\n#define RABBITIZER_INSTRUCTION_BASE_HPP\n#pragma once\n\n#include <string>\n#include <string_view>\n\n#include \"instructions/RabbitizerInstruction.h\"\n\n#include \"instructions/Registers.hpp\"\n#include \"instructions/OperandType.hpp\"\n#include \"instructions/InstrId.hpp\"\n\n\nnamespace rabbitizer {\n    class InstructionBase {\n    protected:\n        RabbitizerInstruction instr;\n\n        InstructionBase() = default;\n        virtual ~InstructionBase() = default;\n\n    public:\n        /**\n         * Returns a pointer to the inner RabbitizerInstruction.\n         * It is recommended to not mess with it unless you know what you are doing.\n         */\n        RabbitizerInstruction *getCPtr();\n        const RabbitizerInstruction *getCPtr() const;\n\n        /* getters */\n\n        uint8_t Get_opcode() const;\n        uint8_t Get_sa() const;\n        uint8_t Get_function() const;\n\n        Registers::Cpu::GprO32 GetO32_rs() const;\n        Registers::Cpu::GprO32 GetO32_rt() const;\n        Registers::Cpu::GprO32 GetO32_rd() const;\n\n        Registers::Cpu::GprN32 GetN32_rs() const;\n        Registers::Cpu::GprN32 GetN32_rt() const;\n        Registers::Cpu::GprN32 GetN32_rd() const;\n\n        Registers::Cpu::Cop0 Get_cop0d() const;\n\n        uint32_t Get_instr_index() const;\n        uint16_t Get_immediate() const;\n\n        Registers::Cpu::Cop1O32 GetO32_fs() const;\n        Registers::Cpu::Cop1O32 GetO32_ft() const;\n        Registers::Cpu::Cop1O32 GetO32_fd() const;\n\n        Registers::Cpu::Cop1N32 GetN32_fs() const;\n        Registers::Cpu::Cop1N32 GetN32_ft() const;\n        Registers::Cpu::Cop1N32 GetN32_fd() const;\n\n        Registers::Cpu::Cop1N64 GetN64_fs() const;\n        Registers::Cpu::Cop1N64 GetN64_ft() const;\n        Registers::Cpu::Cop1N64 GetN64_fd() const;\n\n        Registers::Cpu::Cop1Control Get_cop1cs() const;\n\n        Registers::Cpu::Cop2 Get_cop2t() const;\n\n        uint8_t Get_op() const;\n\n        uint32_t Get_code() const;\n        uint32_t Get_code_upper() const;\n        uint32_t Get_code_lower() const;\n\n        uint32_t Get_copraw() const;\n\n        uint8_t Get_fmt() const;\n        uint8_t Get_fc() const;\n        uint8_t Get_cond() const;\n\n        uint8_t Get_tf() const;\n        uint8_t Get_nd() const;\n        uint8_t Get_bc_fmt() const;\n\n        uint8_t Get_stype() const;\n\n        /* getters */\n\n\n        /* setters */\n\n        void Set_opcode(uint8_t val);\n        void Set_sa(uint8_t val);\n        void Set_function(uint8_t val);\n\n        void Set_rs(Registers::Cpu::GprO32 val);\n        void Set_rt(Registers::Cpu::GprO32 val);\n        void Set_rd(Registers::Cpu::GprO32 val);\n\n        void Set_rs(Registers::Cpu::GprN32 val);\n        void Set_rt(Registers::Cpu::GprN32 val);\n        void Set_rd(Registers::Cpu::GprN32 val);\n\n        void Set_cop0d(Registers::Cpu::Cop0 val);\n\n        void Set_instr_index(uint32_t val);\n        void Set_immediate(uint16_t val);\n\n        void Set_fs(Registers::Cpu::Cop1O32 val);\n        void Set_ft(Registers::Cpu::Cop1O32 val);\n        void Set_fd(Registers::Cpu::Cop1O32 val);\n\n        void Set_fs(Registers::Cpu::Cop1N32 val);\n        void Set_ft(Registers::Cpu::Cop1N32 val);\n        void Set_fd(Registers::Cpu::Cop1N32 val);\n\n        void Set_fs(Registers::Cpu::Cop1N64 val);\n        void Set_ft(Registers::Cpu::Cop1N64 val);\n        void Set_fd(Registers::Cpu::Cop1N64 val);\n\n        void Set_cop1cs(Registers::Cpu::Cop1Control val);\n\n        void Set_cop2t(Registers::Cpu::Cop2 val);\n\n        void Set_op(uint8_t val);\n\n        void Set_code(uint32_t val);\n        void Set_code_upper(uint32_t val);\n        void Set_code_lower(uint32_t val);\n\n        void Set_copraw(uint32_t val);\n\n        void Set_fmt(uint8_t val);\n        void Set_fc(uint8_t val);\n        void Set_cond(uint8_t val);\n\n        void Set_tf(uint8_t val);\n        void Set_nd(uint8_t val);\n        void Set_bc_fmt(uint8_t val);\n\n        void Set_stype(uint8_t val);\n\n        /* setters */\n\n\n        /* more getters */\n\n        uint32_t getRaw() const;\n\n        InstrId::UniqueId getUniqueId() const;\n        uint32_t getVram() const;\n        bool isInHandwrittenFunction() const;\n\n        int32_t getProcessedImmediate() const;\n        uint32_t getInstrIndexAsVram() const;\n\n        int32_t getBranchOffset() const;\n        int32_t getGenericBranchOffset(uint32_t currentVram) const;\n\n\n        std::string getOpcodeName() const;\n\n        /* more getters */\n\n\n        /* */\n\n        void blankOut();\n\n\n        /* Instruction examination */\n\n        bool isImplemented() const;\n        bool isLikelyHandwritten() const;\n        bool isNop() const;\n        bool isUnconditionalBranch() const;\n        bool isJrRa() const;\n        bool isJrNotRa() const;\n        bool hasDelaySlot() const;\n\n        std::string mapInstrToType() const;\n\n        bool sameOpcode(const InstructionBase &other) const;\n        bool sameOpcodeButDifferentArguments(const InstructionBase &other) const;\n\n        bool hasOperand(OperandType operand) const;\n        bool hasOperandAlias(OperandType operand) const;\n\n        uint32_t getValidBits() const;\n        bool isValid() const;\n\n        /* Instruction examination */\n\n\n        /* Instruction descriptor */\n\n        bool isUnknownType() const;\n        bool isJType() const;\n        bool isIType() const;\n        bool isRType() const;\n        bool isRegimmType() const;\n\n        // TODO\n        // RabbitizerInstrSuffix instrSuffix() const;\n\n        bool isBranch() const;\n        bool isBranchLikely() const;\n        bool isJump() const;\n        bool isTrap() const;\n\n        bool isFloat() const;\n        bool isDouble() const;\n\n        bool isUnsigned() const;\n\n        bool modifiesRt() const;\n        bool modifiesRd() const;\n\n        bool notEmitedByCompilers() const;\n\n        bool canBeHi() const;\n        bool canBeLo() const;\n        bool doesLink() const;\n        bool doesDereference() const;\n        bool doesLoad() const;\n        bool doesStore() const;\n        bool maybeIsMove() const;\n\n        bool isPseudo() const;\n\n        /* Instruction descriptor */\n\n\n        /* Disassembly */\n\n        bool mustDisasmAsData() const;\n\n        std::string disassembleOperands() const;\n        std::string disassembleOperands(std::string_view immOverride) const;\n\n        std::string disassembleInstruction(int extraLJust) const;\n        std::string disassembleInstruction(int extraLJust, std::string_view immOverride) const;\n\n        std::string disassembleAsData(int extraLJust) const;\n\n        std::string disassemble(int extraLJust) const;\n        std::string disassemble(int extraLJust, std::string_view immOverride) const;\n\n        /* Disassembly */\n    };\n};\n\n#endif\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/cplusplus/include/instructions/InstructionCpu.hpp",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#ifndef RABBITIZER_INSTRUCTION_CPU_HPP\n#define RABBITIZER_INSTRUCTION_CPU_HPP\n#pragma once\n\n#include \"InstructionBase.hpp\"\n\n\nnamespace rabbitizer {\n    class InstructionCpu : public InstructionBase {\n    public:\n        InstructionCpu(uint32_t word, uint32_t vram);\n        virtual ~InstructionCpu();\n    };\n};\n\n\n#endif\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/cplusplus/include/instructions/InstructionR5900.hpp",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#ifndef RABBITIZER_INSTRUCTION_R5900_HPP\n#define RABBITIZER_INSTRUCTION_R5900_HPP\n#pragma once\n\n#include \"InstructionBase.hpp\"\n\n\nnamespace rabbitizer {\n    class InstructionR5900 : public InstructionBase {\n    public:\n        InstructionR5900(uint32_t word, uint32_t vram);\n        virtual ~InstructionR5900();\n\n        Registers::R5900::VF GetR5900_vfs() const;\n        Registers::R5900::VF GetR5900_vft() const;\n        Registers::R5900::VF GetR5900_vfd() const;\n\n        Registers::R5900::VI GetR5900_vis() const;\n        Registers::R5900::VI GetR5900_vit() const;\n        Registers::R5900::VI GetR5900_vid() const;\n\n        uint8_t GetR5900_mmi_function() const;\n        uint8_t GetR5900_fhi_flo() const;\n\n        uint8_t GetR5900_xyzw_x() const;\n        uint8_t GetR5900_xyzw_y() const;\n        uint8_t GetR5900_xyzw_z() const;\n        uint8_t GetR5900_xyzw_w() const;\n        uint8_t GetR5900_n() const;\n        uint8_t GetR5900_l() const;\n        uint8_t GetR5900_m() const;\n\n        uint8_t GetR5900_imm5() const;\n    };\n};\n\n\n#endif\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/cplusplus/include/instructions/InstructionRsp.hpp",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#ifndef RABBITIZER_INSTRUCTION_RSP_HPP\n#define RABBITIZER_INSTRUCTION_RSP_HPP\n#pragma once\n\n#include \"InstructionBase.hpp\"\n\n\nnamespace rabbitizer {\n    class InstructionRsp : public InstructionBase {\n    public:\n        InstructionRsp(uint32_t word, uint32_t vram);\n        virtual ~InstructionRsp();\n\n        Registers::Rsp::Gpr GetRsp_rs() const;\n        Registers::Rsp::Gpr GetRsp_rt() const;\n        Registers::Rsp::Gpr GetRsp_rd() const;\n\n        Registers::Rsp::Cop0 GetRsp_cop0d() const;\n\n        Registers::Rsp::Cop2 GetRsp_cop2t() const;\n\n        Registers::Rsp::Cop2Control GetRsp_cop2cd() const;\n\n        Registers::Rsp::Vector GetRsp_vs() const;\n        Registers::Rsp::Vector GetRsp_vt() const;\n        Registers::Rsp::Vector GetRsp_vd() const;\n\n        uint8_t GetRsp_elementhigh() const;\n        uint8_t GetRsp_elementlow() const;\n\n        uint8_t GetRsp_index() const;\n        uint8_t GetRsp_de() const;\n    };\n};\n\n\n#endif\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/cplusplus/include/instructions/OperandType.hpp",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#ifndef RABBITIZER_OPERAND_TYPE_HPP\n#define RABBITIZER_OPERAND_TYPE_HPP\n#pragma once\n\n\nnamespace rabbitizer {\n    #define RAB_DEF_OPERAND(prefix, operand) \\\n        prefix##_##operand,\n\n    enum class OperandType {\n        RAB_DEF_OPERAND(ALL, INVALID)\n\n    #include \"instructions/operands/RabbitizerOperandType_cpu.inc\"\n    #include \"instructions/operands/RabbitizerOperandType_rsp.inc\"\n    #include \"instructions/operands/RabbitizerOperandType_r5900.inc\"\n\n        RAB_DEF_OPERAND(ALL, MAX)\n    };\n\n    #undef RAB_DEF_OPERAND\n};\n\n\n#endif\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/cplusplus/include/instructions/Registers.hpp",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#ifndef RABBITIZER_REGISTER_HPP\n#define RABBITIZER_REGISTER_HPP\n#pragma once\n\n\nnamespace rabbitizer {\n\n    namespace Registers {\n    #define RABBITIZER_DEF_REG(prefix, name, numeric) \\\n        prefix##_##name\n\n    #define RABBITIZER_DEF_REG_NODOLLAR(prefix, name, numeric) \\\n        prefix##_##name\n\n        namespace Cpu {\n            enum class GprO32 {\n                #include \"instructions/registers/RabbitizerRegister_GprO32.inc\"\n            };\n\n            enum class GprN32 {\n                #include \"instructions/registers/RabbitizerRegister_GprN32.inc\"\n            };\n\n\n            enum class Cop0 {\n                #include \"instructions/registers/RabbitizerRegister_Cop0.inc\"\n            };\n\n            // Float registers\n            enum class Cop1O32 {\n                #include \"instructions/registers/RabbitizerRegister_Cop1O32.inc\"\n            };\n\n            enum class Cop1N32 {\n                #include \"instructions/registers/RabbitizerRegister_Cop1N32.inc\"\n            };\n\n            enum class Cop1N64 {\n                #include \"instructions/registers/RabbitizerRegister_Cop1N64.inc\"\n            };\n\n            enum class Cop1Control {\n                #include \"instructions/registers/RabbitizerRegister_Cop1Control.inc\"\n            };\n\n            enum class Cop2 {\n                #include \"instructions/registers/RabbitizerRegister_Cop2.inc\"\n            };\n        };\n\n\n        namespace Rsp {\n            enum class Gpr {\n                #include \"instructions/registers/RabbitizerRegister_RspGpr.inc\"\n            };\n\n            enum class Cop0 {\n                #include \"instructions/registers/RabbitizerRegister_RspCop0.inc\"\n            };\n\n            enum class Cop2 {\n                #include \"instructions/registers/RabbitizerRegister_RspCop2.inc\"\n            };\n\n            enum class Cop2Control {\n                #include \"instructions/registers/RabbitizerRegister_RspCop2Control.inc\"\n            };\n\n            enum class Vector {\n                #include \"instructions/registers/RabbitizerRegister_RspVector.inc\"\n            };\n        };\n\n\n        namespace R5900 {\n            enum class VF {\n                #include \"instructions/registers/RabbitizerRegister_R5900VF.inc\"\n            };\n\n            enum class VI {\n                #include \"instructions/registers/RabbitizerRegister_R5900VI.inc\"\n            };\n        };\n\n    #undef RABBITIZER_DEF_REG\n    #undef RABBITIZER_DEF_REG_NODOLLAR\n    };\n};\n\n\n#endif\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/cplusplus/include/rabbitizer.hpp",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#ifndef RABBITIZER_HPP\n#define RABBITIZER_HPP\n#pragma once\n\n\n#include \"common/RabbitizerVersion.h\"\n#include \"common/RabbitizerConfig.h\"\n\n#include \"instructions/OperandType.hpp\"\n#include \"instructions/InstrId.hpp\"\n//#include \"instructions/InstrSuffix.hpp\"\n//#include \"instructions/InstrDescriptor.hpp\"\n#include \"instructions/Registers.hpp\"\n#include \"instructions/InstructionBase.hpp\"\n#include \"instructions/InstructionCpu.hpp\"\n#include \"instructions/InstructionRsp.hpp\"\n#include \"instructions/InstructionR5900.hpp\"\n\n#include \"analysis/LoPairingInfo.hpp\"\n#include \"analysis/RegistersTracker.hpp\"\n\n\n#endif\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/cplusplus/src/analysis/LoPairingInfo.cpp",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"analysis/LoPairingInfo.hpp\"\n\nusing namespace rabbitizer;\n\nLoPairingInfo::LoPairingInfo() : pairingInfo{} {\n}\nLoPairingInfo::LoPairingInfo(const RabbitizerLoPairingInfo &newPairingInfo) : pairingInfo{ newPairingInfo } {\n}\n\nRabbitizerLoPairingInfo *LoPairingInfo::getCPtr() {\n    return &this->pairingInfo;\n}\nconst RabbitizerLoPairingInfo *LoPairingInfo::getCPtr() const {\n    return &this->pairingInfo;\n}\n\nint LoPairingInfo::getInstrOffset() const {\n    return this->pairingInfo.instrOffset;\n}\nint64_t LoPairingInfo::getValue() const {\n    return this->pairingInfo.value;\n}\nbool LoPairingInfo::shouldProcess() const {\n    return this->pairingInfo.shouldProcess;\n}\nbool LoPairingInfo::isGpRel() const {\n    return this->pairingInfo.isGpRel;\n}\nbool LoPairingInfo::isGpGot() const {\n    return this->pairingInfo.isGpGot;\n}\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/cplusplus/src/analysis/RegistersTracker.cpp",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"analysis/RegistersTracker.hpp\"\n\nusing namespace rabbitizer;\n\nRegistersTracker::RegistersTracker() {\n    RabbitizerRegistersTracker_init(&this->tracker, NULL);\n}\nRegistersTracker::RegistersTracker(const RegistersTracker &other) {\n    RabbitizerRegistersTracker_init(&this->tracker, &other.tracker);\n}\nRegistersTracker::~RegistersTracker() {\n    RabbitizerRegistersTracker_destroy(&this->tracker);\n}\n\nRabbitizerRegistersTracker *RegistersTracker::getCPtr() {\n    return &this->tracker;\n}\nconst RabbitizerRegistersTracker *RegistersTracker::getCPtr() const {\n    return &this->tracker;\n}\n\nbool RegistersTracker::moveRegisters(const InstructionBase &instr) {\n    return RabbitizerRegistersTracker_moveRegisters(&this->tracker, instr.getCPtr());\n}\nvoid RegistersTracker::overwriteRegisters(const InstructionBase &instr, int instrOffset) {\n    RabbitizerRegistersTracker_overwriteRegisters(&this->tracker, instr.getCPtr(), instrOffset);\n}\nvoid RegistersTracker::unsetRegistersAfterFuncCall(const InstructionBase &instr, const InstructionBase &prevInstr) {\n    RabbitizerRegistersTracker_unsetRegistersAfterFuncCall(&this->tracker, instr.getCPtr(), prevInstr.getCPtr());\n}\nbool RegistersTracker::getAddressIfCanSetType(const InstructionBase &instr, int instrOffset, uint32_t *dstAddress) const {\n    return RabbitizerRegistersTracker_getAddressIfCanSetType(&this->tracker, instr.getCPtr(), instrOffset, dstAddress);\n}\nbool RegistersTracker::getJrInfo(const InstructionBase &instr, int *dstOffset, uint32_t *dstAddress) const {\n    return RabbitizerRegistersTracker_getJrInfo(&this->tracker, instr.getCPtr(), dstOffset, dstAddress);\n}\n\nvoid RegistersTracker::processLui(const InstructionBase &instr, int instrOffset) {\n    RabbitizerRegistersTracker_processLui(&this->tracker, instr.getCPtr(), instrOffset, NULL);\n}\nvoid RegistersTracker::processLui(const InstructionBase &instr, int instrOffset, const InstructionBase &prevInstr) {\n    RabbitizerRegistersTracker_processLui(&this->tracker, instr.getCPtr(), instrOffset, prevInstr.getCPtr());\n}\nvoid RegistersTracker::processGpLoad(const InstructionBase &instr, int instrOffset) {\n    RabbitizerRegistersTracker_processGpLoad(&this->tracker, instr.getCPtr(), instrOffset);\n}\nbool RegistersTracker::getLuiOffsetForConstant(const InstructionBase &instr, int *dstOffset) const {\n    return RabbitizerRegistersTracker_getLuiOffsetForConstant(&this->tracker, instr.getCPtr(), dstOffset);\n}\nvoid RegistersTracker::processConstant(const InstructionBase &instr, uint32_t value, int offset) {\n    RabbitizerRegistersTracker_processConstant(&this->tracker, instr.getCPtr(), value, offset);\n}\nLoPairingInfo RegistersTracker::preprocessLoAndGetInfo(const InstructionBase &instr, int instrOffset) {\n    return RabbitizerRegistersTracker_preprocessLoAndGetInfo(&this->tracker, instr.getCPtr(), instrOffset);\n}\nvoid RegistersTracker::processLo(const InstructionBase &instr, uint32_t value, int offset) {\n    RabbitizerRegistersTracker_processLo(&this->tracker, instr.getCPtr(), value, offset);\n}\nbool RegistersTracker::hasLoButNoHi(const InstructionBase &instr) const {\n    return RabbitizerRegistersTracker_hasLoButNoHi(&this->tracker, instr.getCPtr());\n}\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/cplusplus/src/instructions/InstrId.cpp",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"instructions/InstrId.hpp\"\n\n#include \"instructions/RabbitizerInstrId.h\"\n\nusing namespace rabbitizer;\n\nstd::string InstrId::getOpcodeName(InstrId::UniqueId uniqueId) {\n    RabbitizerInstrId id = static_cast<RabbitizerInstrId>(uniqueId);\n\n    return std::string(RabbitizerInstrId_getOpcodeName(id));\n}\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/cplusplus/src/instructions/InstructionBase.cpp",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"instructions/InstructionBase.hpp\"\n\n#include <stdexcept>\n\n#include \"instructions/RabbitizerInstruction.h\"\n#include \"instructions/RabbitizerInstructionR5900.h\"\n\nusing namespace rabbitizer;\n\nRabbitizerInstruction *InstructionBase::getCPtr() {\n    return &this->instr;\n}\nconst RabbitizerInstruction *InstructionBase::getCPtr() const {\n    return &this->instr;\n}\n\n/* getters */\n\nuint8_t InstructionBase::Get_opcode() const {\n    return RAB_INSTR_GET_opcode(&this->instr);\n}\nuint8_t InstructionBase::Get_sa() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_sa)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'sa' operand.\");\n    }\n#endif\n\n    return RAB_INSTR_GET_sa(&this->instr);\n}\nuint8_t InstructionBase::Get_function() const {\n    /*\n    #ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_function)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'function' operand.\");\n    }\n    #endif\n    */\n\n    return RAB_INSTR_GET_function(&this->instr);\n}\n\nRegisters::Cpu::GprO32 InstructionBase::GetO32_rs() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_rs)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'rs' operand.\");\n    }\n#endif\n\n    return static_cast<Registers::Cpu::GprO32>(RAB_INSTR_GET_rs(&this->instr));\n}\nRegisters::Cpu::GprO32 InstructionBase::GetO32_rt() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_rt)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'rt' operand.\");\n    }\n#endif\n\n    return static_cast<Registers::Cpu::GprO32>(RAB_INSTR_GET_rt(&this->instr));\n}\nRegisters::Cpu::GprO32 InstructionBase::GetO32_rd() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_rd)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'rd' operand.\");\n    }\n#endif\n\n    return static_cast<Registers::Cpu::GprO32>(RAB_INSTR_GET_rd(&this->instr));\n}\n\nRegisters::Cpu::GprN32 InstructionBase::GetN32_rs() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_rs)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'rs' operand.\");\n    }\n#endif\n\n    return static_cast<Registers::Cpu::GprN32>(RAB_INSTR_GET_rs(&this->instr));\n}\nRegisters::Cpu::GprN32 InstructionBase::GetN32_rt() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_rt)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'rt' operand.\");\n    }\n#endif\n\n    return static_cast<Registers::Cpu::GprN32>(RAB_INSTR_GET_rt(&this->instr));\n}\nRegisters::Cpu::GprN32 InstructionBase::GetN32_rd() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_rd)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'rd' operand.\");\n    }\n#endif\n\n    return static_cast<Registers::Cpu::GprN32>(RAB_INSTR_GET_rd(&this->instr));\n}\n\nRegisters::Cpu::Cop0 InstructionBase::Get_cop0d() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_cop0d)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'cop0d' operand.\");\n    }\n#endif\n\n    return static_cast<Registers::Cpu::Cop0>(RAB_INSTR_GET_cop0d(&this->instr));\n}\n\nuint32_t InstructionBase::Get_instr_index() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_label)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'label' operand.\");\n    }\n#endif\n\n    return RAB_INSTR_GET_instr_index(&this->instr);\n}\nuint16_t InstructionBase::Get_immediate() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_immediate)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'immediate' operand.\");\n    }\n#endif\n\n    return RAB_INSTR_GET_immediate(&this->instr);\n}\n\nRegisters::Cpu::Cop1O32 InstructionBase::GetO32_fs() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_fs)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'fs' operand.\");\n    }\n#endif\n\n    return static_cast<Registers::Cpu::Cop1O32>(RAB_INSTR_GET_fs(&this->instr));\n}\nRegisters::Cpu::Cop1O32 InstructionBase::GetO32_ft() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_ft)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'ft' operand.\");\n    }\n#endif\n\n    return static_cast<Registers::Cpu::Cop1O32>(RAB_INSTR_GET_ft(&this->instr));\n}\nRegisters::Cpu::Cop1O32 InstructionBase::GetO32_fd() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_fd)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'fd' operand.\");\n    }\n#endif\n\n    return static_cast<Registers::Cpu::Cop1O32>(RAB_INSTR_GET_fd(&this->instr));\n}\n\nRegisters::Cpu::Cop1N32 InstructionBase::GetN32_fs() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_fs)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'fs' operand.\");\n    }\n#endif\n\n    return static_cast<Registers::Cpu::Cop1N32>(RAB_INSTR_GET_fs(&this->instr));\n}\nRegisters::Cpu::Cop1N32 InstructionBase::GetN32_ft() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_ft)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'ft' operand.\");\n    }\n#endif\n\n    return static_cast<Registers::Cpu::Cop1N32>(RAB_INSTR_GET_ft(&this->instr));\n}\nRegisters::Cpu::Cop1N32 InstructionBase::GetN32_fd() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_fd)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'fd' operand.\");\n    }\n#endif\n\n    return static_cast<Registers::Cpu::Cop1N32>(RAB_INSTR_GET_fd(&this->instr));\n}\n\nRegisters::Cpu::Cop1N64 InstructionBase::GetN64_fs() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_fs)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'fs' operand.\");\n    }\n#endif\n\n    return static_cast<Registers::Cpu::Cop1N64>(RAB_INSTR_GET_fs(&this->instr));\n}\nRegisters::Cpu::Cop1N64 InstructionBase::GetN64_ft() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_ft)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'ft' operand.\");\n    }\n#endif\n\n    return static_cast<Registers::Cpu::Cop1N64>(RAB_INSTR_GET_ft(&this->instr));\n}\nRegisters::Cpu::Cop1N64 InstructionBase::GetN64_fd() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_fd)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'fd' operand.\");\n    }\n#endif\n\n    return static_cast<Registers::Cpu::Cop1N64>(RAB_INSTR_GET_fd(&this->instr));\n}\n\nRegisters::Cpu::Cop1Control InstructionBase::Get_cop1cs() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_cop1cs)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'cop1cs' operand.\");\n    }\n#endif\n\n    return static_cast<Registers::Cpu::Cop1Control>(RAB_INSTR_GET_cop1cs(&this->instr));\n}\n\nRegisters::Cpu::Cop2 InstructionBase::Get_cop2t() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_cop2t)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'cop2t' operand.\");\n    }\n#endif\n\n    return static_cast<Registers::Cpu::Cop2>(RAB_INSTR_GET_cop2t(&this->instr));\n}\n\nuint8_t InstructionBase::Get_op() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_op)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'op' operand.\");\n    }\n#endif\n\n    return RAB_INSTR_GET_op(&this->instr);\n}\n\nuint32_t InstructionBase::Get_code() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_code)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'code' operand.\");\n    }\n#endif\n\n    return RAB_INSTR_GET_code(&this->instr);\n}\nuint32_t InstructionBase::Get_code_upper() const {\n#if 0\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_code_upper)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'code_upper' operand.\");\n    }\n#endif\n#endif\n\n    return RAB_INSTR_GET_code_upper(&this->instr);\n}\nuint32_t InstructionBase::Get_code_lower() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_code_lower)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'code_lower' operand.\");\n    }\n#endif\n\n    return RAB_INSTR_GET_code_lower(&this->instr);\n}\n\nuint32_t InstructionBase::Get_copraw() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_copraw)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'copraw' operand.\");\n    }\n#endif\n\n    return RAB_INSTR_GET_copraw(&this->instr);\n}\n\nuint8_t InstructionBase::Get_fmt() const {\n    return RAB_INSTR_GET_fmt(&this->instr);\n}\nuint8_t InstructionBase::Get_fc() const {\n    return RAB_INSTR_GET_fc(&this->instr);\n}\nuint8_t InstructionBase::Get_cond() const {\n    return RAB_INSTR_GET_cond(&this->instr);\n}\n\nuint8_t InstructionBase::Get_tf() const {\n    return RAB_INSTR_GET_tf(&this->instr);\n}\nuint8_t InstructionBase::Get_nd() const {\n    return RAB_INSTR_GET_nd(&this->instr);\n}\nuint8_t InstructionBase::Get_bc_fmt() const {\n    return RAB_INSTR_GET_bc_fmt(&this->instr);\n}\n\nuint8_t InstructionBase::Get_stype() const {\n    return RAB_INSTR_GET_stype(&this->instr);\n}\n\n/* getters */\n\n/* setters */\n\nvoid InstructionBase::Set_opcode(uint8_t val) {\n    this->instr.word = RAB_INSTR_PACK_opcode(this->instr.word, val);\n}\nvoid InstructionBase::Set_sa(uint8_t val) {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_sa)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'sa' operand.\");\n    }\n#endif\n\n    this->instr.word = RAB_INSTR_PACK_sa(this->instr.word, val);\n}\nvoid InstructionBase::Set_function(uint8_t val) {\n    this->instr.word = RAB_INSTR_PACK_function(this->instr.word, val);\n}\n\nvoid InstructionBase::Set_rs(Registers::Cpu::GprO32 val) {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_rs)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'rs' operand.\");\n    }\n#endif\n\n    this->instr.word = RAB_INSTR_PACK_rs(this->instr.word, static_cast<int>(val));\n}\nvoid InstructionBase::Set_rt(Registers::Cpu::GprO32 val) {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_rt)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'rt' operand.\");\n    }\n#endif\n\n    this->instr.word = RAB_INSTR_PACK_rt(this->instr.word, static_cast<int>(val));\n}\nvoid InstructionBase::Set_rd(Registers::Cpu::GprO32 val) {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_rd)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'rd' operand.\");\n    }\n#endif\n\n    this->instr.word = RAB_INSTR_PACK_rd(this->instr.word, static_cast<int>(val));\n}\n\nvoid InstructionBase::Set_rs(Registers::Cpu::GprN32 val) {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_rs)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'rs' operand.\");\n    }\n#endif\n\n    this->instr.word = RAB_INSTR_PACK_rs(this->instr.word, static_cast<int>(val));\n}\nvoid InstructionBase::Set_rt(Registers::Cpu::GprN32 val) {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_rt)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'rt' operand.\");\n    }\n#endif\n\n    this->instr.word = RAB_INSTR_PACK_rt(this->instr.word, static_cast<int>(val));\n}\nvoid InstructionBase::Set_rd(Registers::Cpu::GprN32 val) {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_rd)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'rd' operand.\");\n    }\n#endif\n\n    this->instr.word = RAB_INSTR_PACK_rd(this->instr.word, static_cast<int>(val));\n}\n\nvoid InstructionBase::Set_cop0d(Registers::Cpu::Cop0 val) {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_cop0d)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'cop0d' operand.\");\n    }\n#endif\n\n    this->instr.word = RAB_INSTR_PACK_cop0d(this->instr.word, static_cast<int>(val));\n}\n\nvoid InstructionBase::Set_instr_index(uint32_t val) {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_label)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'label' operand.\");\n    }\n#endif\n\n    this->instr.word = RAB_INSTR_PACK_instr_index(this->instr.word, val);\n}\nvoid InstructionBase::Set_immediate(uint16_t val) {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_immediate)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'immediate' operand.\");\n    }\n#endif\n\n    this->instr.word = RAB_INSTR_PACK_immediate(this->instr.word, val);\n}\n\nvoid InstructionBase::Set_fs(Registers::Cpu::Cop1O32 val) {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_fs)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'fs' operand.\");\n    }\n#endif\n\n    this->instr.word = RAB_INSTR_PACK_fs(this->instr.word, static_cast<int>(val));\n}\nvoid InstructionBase::Set_ft(Registers::Cpu::Cop1O32 val) {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_ft)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'ft' operand.\");\n    }\n#endif\n\n    this->instr.word = RAB_INSTR_PACK_ft(this->instr.word, static_cast<int>(val));\n}\nvoid InstructionBase::Set_fd(Registers::Cpu::Cop1O32 val) {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_fd)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'fd' operand.\");\n    }\n#endif\n\n    this->instr.word = RAB_INSTR_PACK_fd(this->instr.word, static_cast<int>(val));\n}\n\nvoid InstructionBase::Set_fs(Registers::Cpu::Cop1N32 val) {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_fs)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'fs' operand.\");\n    }\n#endif\n\n    this->instr.word = RAB_INSTR_PACK_fs(this->instr.word, static_cast<int>(val));\n}\nvoid InstructionBase::Set_ft(Registers::Cpu::Cop1N32 val) {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_ft)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'ft' operand.\");\n    }\n#endif\n\n    this->instr.word = RAB_INSTR_PACK_ft(this->instr.word, static_cast<int>(val));\n}\nvoid InstructionBase::Set_fd(Registers::Cpu::Cop1N32 val) {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_fd)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'fd' operand.\");\n    }\n#endif\n\n    this->instr.word = RAB_INSTR_PACK_fd(this->instr.word, static_cast<int>(val));\n}\n\nvoid InstructionBase::Set_fs(Registers::Cpu::Cop1N64 val) {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_fs)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'fs' operand.\");\n    }\n#endif\n\n    this->instr.word = RAB_INSTR_PACK_fs(this->instr.word, static_cast<int>(val));\n}\nvoid InstructionBase::Set_ft(Registers::Cpu::Cop1N64 val) {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_ft)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'ft' operand.\");\n    }\n#endif\n\n    this->instr.word = RAB_INSTR_PACK_ft(this->instr.word, static_cast<int>(val));\n}\nvoid InstructionBase::Set_fd(Registers::Cpu::Cop1N64 val) {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_fd)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'fd' operand.\");\n    }\n#endif\n\n    this->instr.word = RAB_INSTR_PACK_fd(this->instr.word, static_cast<int>(val));\n}\n\nvoid InstructionBase::Set_cop1cs(Registers::Cpu::Cop1Control val) {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_cop1cs)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'cop1cs' operand.\");\n    }\n#endif\n\n    this->instr.word = RAB_INSTR_PACK_cop1cs(this->instr.word, static_cast<int>(val));\n}\n\nvoid InstructionBase::Set_cop2t(Registers::Cpu::Cop2 val) {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_cop2t)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'cop2t' operand.\");\n    }\n#endif\n\n    this->instr.word = RAB_INSTR_PACK_cop2t(this->instr.word, static_cast<int>(val));\n}\n\nvoid InstructionBase::Set_op(uint8_t val) {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_op)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'op' operand.\");\n    }\n#endif\n\n    this->instr.word = RAB_INSTR_PACK_op(this->instr.word, val);\n}\n\nvoid InstructionBase::Set_code(uint32_t val) {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_code)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'code' operand.\");\n    }\n#endif\n\n    this->instr.word = RAB_INSTR_PACK_code(this->instr.word, val);\n}\n\nvoid InstructionBase::Set_code_upper(uint32_t val) {\n#if 0\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_code_upper)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'code_upper' operand.\");\n    }\n#endif\n#endif\n\n    this->instr.word = RAB_INSTR_PACK_code_upper(this->instr.word, val);\n}\n\nvoid InstructionBase::Set_code_lower(uint32_t val) {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_code_lower)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'code_lower' operand.\");\n    }\n#endif\n\n    this->instr.word = RAB_INSTR_PACK_code_lower(this->instr.word, val);\n}\n\nvoid InstructionBase::Set_copraw(uint32_t val) {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_copraw)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'copraw' operand.\");\n    }\n#endif\n\n    this->instr.word = RAB_INSTR_PACK_copraw(this->instr.word, val);\n}\n\nvoid InstructionBase::Set_fmt(uint8_t val) {\n    this->instr.word = RAB_INSTR_PACK_fmt(this->instr.word, val);\n}\nvoid InstructionBase::Set_fc(uint8_t val) {\n    this->instr.word = RAB_INSTR_PACK_fc(this->instr.word, val);\n}\nvoid InstructionBase::Set_cond(uint8_t val) {\n    this->instr.word = RAB_INSTR_PACK_cond(this->instr.word, val);\n}\n\nvoid InstructionBase::Set_tf(uint8_t val) {\n    this->instr.word = RAB_INSTR_PACK_tf(this->instr.word, val);\n}\nvoid InstructionBase::Set_nd(uint8_t val) {\n    this->instr.word = RAB_INSTR_PACK_nd(this->instr.word, val);\n}\nvoid InstructionBase::Set_bc_fmt(uint8_t val) {\n    this->instr.word = RAB_INSTR_PACK_bc_fmt(this->instr.word, val);\n}\n\nvoid InstructionBase::Set_stype(uint8_t val) {\n    this->instr.word = RAB_INSTR_PACK_stype(this->instr.word, val);\n}\n\n/* setters */\n\n/* more getters */\n\nuint32_t InstructionBase::getRaw() const {\n    return RabbitizerInstruction_getRaw(&this->instr);\n}\n\nInstrId::UniqueId InstructionBase::getUniqueId() const {\n    return static_cast<InstrId::UniqueId>(this->instr.uniqueId);\n}\nuint32_t InstructionBase::getVram() const {\n    return this->instr.vram;\n}\nbool InstructionBase::isInHandwrittenFunction() const {\n    return this->instr.inHandwrittenFunction;\n}\n\nint32_t InstructionBase::getProcessedImmediate() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_immediate)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'immediate' operand.\");\n    }\n#endif\n\n    return RabbitizerInstruction_getProcessedImmediate(&this->instr);\n}\nuint32_t InstructionBase::getInstrIndexAsVram() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_label)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'label' operand.\");\n    }\n#endif\n\n    return RabbitizerInstruction_getInstrIndexAsVram(&this->instr);\n}\n\nint32_t InstructionBase::getBranchOffset() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_branch_target_label)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'branch_target_label' operand.\");\n    }\n#endif\n\n    return RabbitizerInstruction_getBranchOffset(&this->instr);\n}\nint32_t InstructionBase::getGenericBranchOffset(uint32_t currentVram) const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::cpu_branch_target_label) && !hasOperandAlias(OperandType::cpu_label)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have either 'branch_target_label' or 'label' operands.\");\n    }\n#endif\n\n    return RabbitizerInstruction_getGenericBranchOffset(&this->instr, currentVram);\n}\n\nstd::string InstructionBase::getOpcodeName() const {\n    return InstrId::getOpcodeName(getUniqueId());\n}\n\n/* more getters */\n\n/* */\n\nvoid InstructionBase::blankOut() {\n    RabbitizerInstruction_blankOut(&this->instr);\n}\n\n/* Instruction examination */\n\nbool InstructionBase::isImplemented() const {\n    return RabbitizerInstruction_isImplemented(&this->instr);\n}\nbool InstructionBase::isLikelyHandwritten() const {\n    return RabbitizerInstruction_isLikelyHandwritten(&this->instr);\n}\nbool InstructionBase::isNop() const {\n    return RabbitizerInstruction_isNop(&this->instr);\n}\nbool InstructionBase::isUnconditionalBranch() const {\n    return RabbitizerInstruction_isUnconditionalBranch(&this->instr);\n}\nbool InstructionBase::isJrRa() const {\n    return RabbitizerInstruction_isJrRa(&this->instr);\n}\nbool InstructionBase::isJrNotRa() const {\n    return RabbitizerInstruction_isJrNotRa(&this->instr);\n}\nbool InstructionBase::hasDelaySlot() const {\n    return RabbitizerInstruction_hasDelaySlot(&this->instr);\n}\n\nstd::string InstructionBase::mapInstrToType() const {\n    return std::string(RabbitizerInstruction_mapInstrToType(&this->instr));\n}\n\nbool InstructionBase::sameOpcode(const InstructionBase &other) const {\n    return RabbitizerInstruction_sameOpcode(&this->instr, &other.instr);\n}\nbool InstructionBase::sameOpcodeButDifferentArguments(const InstructionBase &other) const {\n    return RabbitizerInstruction_sameOpcodeButDifferentArguments(&this->instr, &other.instr);\n}\n\nbool InstructionBase::hasOperand(OperandType operand) const {\n    return RabbitizerInstruction_hasOperand(&this->instr, static_cast<RabbitizerOperandType>(operand));\n}\nbool InstructionBase::hasOperandAlias(OperandType operand) const {\n    return RabbitizerInstruction_hasOperandAlias(&this->instr, static_cast<RabbitizerOperandType>(operand));\n}\n\nuint32_t InstructionBase::getValidBits() const {\n    return RabbitizerInstruction_getValidBits(&this->instr);\n}\nbool InstructionBase::isValid() const {\n    return RabbitizerInstruction_isValid(&this->instr);\n}\n\n/* Instruction examination */\n\n/* Instruction descriptor */\n\nbool InstructionBase::isUnknownType() const {\n    return RabbitizerInstrDescriptor_isUnknownType(this->instr.descriptor);\n}\nbool InstructionBase::isJType() const {\n    return RabbitizerInstrDescriptor_isJType(this->instr.descriptor);\n}\nbool InstructionBase::isIType() const {\n    return RabbitizerInstrDescriptor_isIType(this->instr.descriptor);\n}\nbool InstructionBase::isRType() const {\n    return RabbitizerInstrDescriptor_isRType(this->instr.descriptor);\n}\nbool InstructionBase::isRegimmType() const {\n    return RabbitizerInstrDescriptor_isRegimmType(this->instr.descriptor);\n}\n\n// TODO\n// RabbitizerInstrSuffix instrSuffix() const;\n\nbool InstructionBase::isBranch() const {\n    return RabbitizerInstrDescriptor_isBranch(this->instr.descriptor);\n}\nbool InstructionBase::isBranchLikely() const {\n    return RabbitizerInstrDescriptor_isBranchLikely(this->instr.descriptor);\n}\nbool InstructionBase::isJump() const {\n    return RabbitizerInstrDescriptor_isJump(this->instr.descriptor);\n}\nbool InstructionBase::isTrap() const {\n    return RabbitizerInstrDescriptor_isTrap(this->instr.descriptor);\n}\n\nbool InstructionBase::isFloat() const {\n    return RabbitizerInstrDescriptor_isFloat(this->instr.descriptor);\n}\nbool InstructionBase::isDouble() const {\n    return RabbitizerInstrDescriptor_isDouble(this->instr.descriptor);\n}\n\nbool InstructionBase::isUnsigned() const {\n    return RabbitizerInstrDescriptor_isUnsigned(this->instr.descriptor);\n}\n\nbool InstructionBase::modifiesRt() const {\n    return RabbitizerInstrDescriptor_modifiesRt(this->instr.descriptor);\n}\nbool InstructionBase::modifiesRd() const {\n    return RabbitizerInstrDescriptor_modifiesRd(this->instr.descriptor);\n}\n\nbool InstructionBase::notEmitedByCompilers() const {\n    return RabbitizerInstrDescriptor_notEmitedByCompilers(this->instr.descriptor);\n}\n\nbool InstructionBase::canBeHi() const {\n    return RabbitizerInstrDescriptor_canBeHi(this->instr.descriptor);\n}\nbool InstructionBase::canBeLo() const {\n    return RabbitizerInstrDescriptor_canBeLo(this->instr.descriptor);\n}\nbool InstructionBase::doesLink() const {\n    return RabbitizerInstrDescriptor_doesLink(this->instr.descriptor);\n}\nbool InstructionBase::doesDereference() const {\n    return RabbitizerInstrDescriptor_doesDereference(this->instr.descriptor);\n}\nbool InstructionBase::doesLoad() const {\n    return RabbitizerInstrDescriptor_doesLoad(this->instr.descriptor);\n}\nbool InstructionBase::doesStore() const {\n    return RabbitizerInstrDescriptor_doesStore(this->instr.descriptor);\n}\nbool InstructionBase::maybeIsMove() const {\n    return RabbitizerInstrDescriptor_maybeIsMove(this->instr.descriptor);\n}\n\nbool InstructionBase::isPseudo() const {\n    return RabbitizerInstrDescriptor_isPseudo(this->instr.descriptor);\n}\n\n/* Instruction descriptor */\n\n/* Disassembly */\n\nbool InstructionBase::mustDisasmAsData() const {\n    return RabbitizerInstruction_mustDisasmAsData(&this->instr);\n}\n\nstd::string InstructionBase::disassembleOperands() const {\n    const char *immOverridePtr = NULL;\n    size_t immOverrideLength = 0;\n    size_t bufferSize;\n    size_t disassmbledSize;\n    char *buffer;\n\n    bufferSize = RabbitizerInstruction_getSizeForBufferOperandsDisasm(&instr, immOverrideLength);\n\n    buffer = (char *)malloc(bufferSize + 1);\n    if (buffer == NULL) {\n        throw std::runtime_error(\"buffer == NULL\");\n    }\n\n    disassmbledSize = RabbitizerInstruction_disassembleOperands(&instr, buffer, immOverridePtr, immOverrideLength);\n\n    std::string output(buffer);\n    free(buffer);\n\n    if (disassmbledSize > bufferSize) {\n        throw std::runtime_error(\"disassmbledSize > bufferSize\");\n    }\n\n    return output;\n}\nstd::string InstructionBase::disassembleOperands(std::string_view immOverride) const {\n    const char *immOverridePtr = immOverride.data();\n    size_t immOverrideLength = immOverride.size();\n    size_t bufferSize;\n    size_t disassmbledSize;\n    char *buffer;\n\n    bufferSize = RabbitizerInstruction_getSizeForBufferOperandsDisasm(&instr, immOverrideLength);\n\n    buffer = (char *)malloc(bufferSize + 1);\n    if (buffer == NULL) {\n        throw std::runtime_error(\"buffer == NULL\");\n    }\n\n    disassmbledSize = RabbitizerInstruction_disassembleOperands(&instr, buffer, immOverridePtr, immOverrideLength);\n\n    std::string output(buffer);\n    free(buffer);\n\n    if (disassmbledSize > bufferSize) {\n        throw std::runtime_error(\"disassmbledSize > bufferSize\");\n    }\n\n    return output;\n}\n\nstd::string InstructionBase::disassembleInstruction(int extraLJust) const {\n    const char *immOverridePtr = NULL;\n    size_t immOverrideLength = 0;\n    size_t bufferSize;\n    size_t disassmbledSize;\n    char *buffer;\n\n    bufferSize = RabbitizerInstruction_getSizeForBufferInstrDisasm(&instr, immOverrideLength, extraLJust);\n\n    buffer = (char *)malloc(bufferSize + 1);\n    if (buffer == NULL) {\n        throw std::runtime_error(\"buffer == NULL\");\n    }\n\n    disassmbledSize = RabbitizerInstruction_disassembleInstruction(&instr, buffer, immOverridePtr, immOverrideLength, extraLJust);\n\n    std::string output(buffer);\n    free(buffer);\n\n    if (disassmbledSize > bufferSize) {\n        throw std::runtime_error(\"disassmbledSize > bufferSize\");\n    }\n\n    return output;\n}\nstd::string InstructionBase::disassembleInstruction(int extraLJust, std::string_view immOverride) const {\n    const char *immOverridePtr = immOverride.data();\n    size_t immOverrideLength = immOverride.size();\n    size_t bufferSize;\n    size_t disassmbledSize;\n    char *buffer;\n\n    bufferSize = RabbitizerInstruction_getSizeForBufferInstrDisasm(&instr, immOverrideLength, extraLJust);\n\n    buffer = (char *)malloc(bufferSize + 1);\n    if (buffer == NULL) {\n        throw std::runtime_error(\"buffer == NULL\");\n    }\n\n    disassmbledSize = RabbitizerInstruction_disassembleInstruction(&instr, buffer, immOverridePtr, immOverrideLength, extraLJust);\n\n    std::string output(buffer);\n    free(buffer);\n\n    if (disassmbledSize > bufferSize) {\n        throw std::runtime_error(\"disassmbledSize > bufferSize\");\n    }\n\n    return output;\n}\n\nstd::string InstructionBase::disassembleAsData(int extraLJust) const {\n    size_t bufferSize;\n    size_t disassmbledSize;\n    char *buffer;\n\n    bufferSize = RabbitizerInstruction_getSizeForBufferDataDisasm(&instr, extraLJust);\n\n    buffer = (char *)malloc(bufferSize + 1);\n    if (buffer == NULL) {\n        throw std::runtime_error(\"buffer == NULL\");\n    }\n\n    disassmbledSize = RabbitizerInstruction_disassembleAsData(&instr, buffer, extraLJust);\n\n    std::string output(buffer);\n    free(buffer);\n\n    if (disassmbledSize > bufferSize) {\n        throw std::runtime_error(\"disassmbledSize > bufferSize\");\n    }\n\n    return output;\n}\n\nstd::string InstructionBase::disassemble(int extraLJust) const {\n    const char *immOverridePtr = NULL;\n    size_t immOverrideLength = 0;\n    size_t bufferSize;\n    size_t disassmbledSize;\n    char *buffer;\n\n    bufferSize = RabbitizerInstruction_getSizeForBuffer(&instr, immOverrideLength, extraLJust);\n\n    buffer = (char *)malloc(bufferSize + 1);\n    if (buffer == NULL) {\n        throw std::runtime_error(\"buffer == NULL\");\n    }\n\n    disassmbledSize = RabbitizerInstruction_disassemble(&instr, buffer, immOverridePtr, immOverrideLength, extraLJust);\n\n    std::string output(buffer);\n    free(buffer);\n\n    if (disassmbledSize > bufferSize) {\n        throw std::runtime_error(\"disassmbledSize > bufferSize\");\n    }\n\n    return output;\n}\n\nstd::string InstructionBase::disassemble(int extraLJust, std::string_view immOverride) const {\n    const char *immOverridePtr = immOverride.data();\n    size_t immOverrideLength = immOverride.size();\n    size_t bufferSize;\n    size_t disassmbledSize;\n    char *buffer;\n\n    bufferSize = RabbitizerInstruction_getSizeForBuffer(&instr, immOverrideLength, extraLJust);\n\n    buffer = (char *)malloc(bufferSize + 1);\n    if (buffer == NULL) {\n        throw std::runtime_error(\"buffer == NULL\");\n    }\n\n    disassmbledSize = RabbitizerInstruction_disassemble(&instr, buffer, immOverridePtr, immOverrideLength, extraLJust);\n\n    std::string output(buffer);\n    free(buffer);\n\n    if (disassmbledSize > bufferSize) {\n        throw std::runtime_error(\"disassmbledSize > bufferSize\");\n    }\n\n    return output;\n}\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/cplusplus/src/instructions/InstructionCpu.cpp",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"instructions/InstructionCpu.hpp\"\n\nusing namespace rabbitizer;\n\nInstructionCpu::InstructionCpu(uint32_t word, uint32_t vram) : InstructionBase() {\n    RabbitizerInstruction_init(&this->instr, word, vram);\n    RabbitizerInstruction_processUniqueId(&this->instr);\n}\n\nInstructionCpu::~InstructionCpu() {\n    RabbitizerInstruction_destroy(&this->instr);\n}\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/cplusplus/src/instructions/InstructionR5900.cpp",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"instructions/InstructionR5900.hpp\"\n\n#include <stdexcept>\n\n#include \"instructions/RabbitizerInstructionR5900.h\"\n\nusing namespace rabbitizer;\n\nInstructionR5900::InstructionR5900(uint32_t word, uint32_t vram) : InstructionBase() {\n    RabbitizerInstructionR5900_init(&this->instr, word, vram);\n    RabbitizerInstructionR5900_processUniqueId(&this->instr);\n}\n\nInstructionR5900::~InstructionR5900() {\n    RabbitizerInstructionR5900_destroy(&this->instr);\n}\n\nRegisters::R5900::VF InstructionR5900::GetR5900_vfs() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::rsp_rs)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'vfs' operand.\");\n    }\n#endif\n\n    return static_cast<Registers::R5900::VF>(RAB_INSTR_R5900_GET_vfs(&this->instr));\n}\n\nRegisters::R5900::VF InstructionR5900::GetR5900_vft() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::rsp_rt)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'vft' operand.\");\n    }\n#endif\n\n    return static_cast<Registers::R5900::VF>(RAB_INSTR_R5900_GET_vft(&this->instr));\n}\n\nRegisters::R5900::VF InstructionR5900::GetR5900_vfd() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::rsp_rd)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'vfd' operand.\");\n    }\n#endif\n\n    return static_cast<Registers::R5900::VF>(RAB_INSTR_R5900_GET_vfd(&this->instr));\n}\n\nRegisters::R5900::VI InstructionR5900::GetR5900_vis() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::rsp_rs)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'vis' operand.\");\n    }\n#endif\n\n    return static_cast<Registers::R5900::VI>(RAB_INSTR_R5900_GET_vis(&this->instr));\n}\n\nRegisters::R5900::VI InstructionR5900::GetR5900_vit() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::rsp_rt)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'vit' operand.\");\n    }\n#endif\n\n    return static_cast<Registers::R5900::VI>(RAB_INSTR_R5900_GET_vit(&this->instr));\n}\n\nRegisters::R5900::VI InstructionR5900::GetR5900_vid() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::rsp_rd)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'vid' operand.\");\n    }\n#endif\n\n    return static_cast<Registers::R5900::VI>(RAB_INSTR_R5900_GET_vid(&this->instr));\n}\n\nuint8_t InstructionR5900::GetR5900_mmi_function() const {\n    return RAB_INSTR_R5900_GET_mmi_function(&this->instr);\n}\nuint8_t InstructionR5900::GetR5900_fhi_flo() const {\n    return RAB_INSTR_R5900_GET_fhi_flo(&this->instr);\n}\n\nuint8_t InstructionR5900::GetR5900_xyzw_x() const {\n    return RAB_INSTR_R5900_GET_xyzw_x(&this->instr);\n}\nuint8_t InstructionR5900::GetR5900_xyzw_y() const {\n    return RAB_INSTR_R5900_GET_xyzw_y(&this->instr);\n}\nuint8_t InstructionR5900::GetR5900_xyzw_z() const {\n    return RAB_INSTR_R5900_GET_xyzw_z(&this->instr);\n}\nuint8_t InstructionR5900::GetR5900_xyzw_w() const {\n    return RAB_INSTR_R5900_GET_xyzw_w(&this->instr);\n}\nuint8_t InstructionR5900::GetR5900_n() const {\n    return RAB_INSTR_R5900_GET_n(&this->instr);\n}\nuint8_t InstructionR5900::GetR5900_l() const {\n    return RAB_INSTR_R5900_GET_l(&this->instr);\n}\nuint8_t InstructionR5900::GetR5900_m() const {\n    return RAB_INSTR_R5900_GET_m(&this->instr);\n}\n\nuint8_t InstructionR5900::GetR5900_imm5() const {\n    return RAB_INSTR_R5900_GET_imm5(&this->instr);\n}\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/cplusplus/src/instructions/InstructionRsp.cpp",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"instructions/InstructionRsp.hpp\"\n\n#include <stdexcept>\n\n#include \"instructions/RabbitizerInstructionRsp.h\"\n\nusing namespace rabbitizer;\n\nInstructionRsp::InstructionRsp(uint32_t word, uint32_t vram) : InstructionBase() {\n    RabbitizerInstructionRsp_init(&this->instr, word, vram);\n    RabbitizerInstructionRsp_processUniqueId(&this->instr);\n}\n\nInstructionRsp::~InstructionRsp() {\n    RabbitizerInstructionRsp_destroy(&this->instr);\n}\n\nRegisters::Rsp::Gpr InstructionRsp::GetRsp_rs() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::rsp_rs)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'rs' operand.\");\n    }\n#endif\n\n    return static_cast<Registers::Rsp::Gpr>(RAB_INSTR_GET_rs(&this->instr));\n}\nRegisters::Rsp::Gpr InstructionRsp::GetRsp_rt() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::rsp_rt)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'rt' operand.\");\n    }\n#endif\n\n    return static_cast<Registers::Rsp::Gpr>(RAB_INSTR_GET_rt(&this->instr));\n}\nRegisters::Rsp::Gpr InstructionRsp::GetRsp_rd() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::rsp_rd)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'rd' operand.\");\n    }\n#endif\n\n    return static_cast<Registers::Rsp::Gpr>(RAB_INSTR_GET_rd(&this->instr));\n}\n\nRegisters::Rsp::Cop0 InstructionRsp::GetRsp_cop0d() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::rsp_cop0d)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'cop0d' operand.\");\n    }\n#endif\n\n    return static_cast<Registers::Rsp::Cop0>(RAB_INSTR_GET_cop0d(&this->instr));\n}\n\nRegisters::Rsp::Cop2 InstructionRsp::GetRsp_cop2t() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::rsp_cop2t)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'cop2t' operand.\");\n    }\n#endif\n\n    return static_cast<Registers::Rsp::Cop2>(RAB_INSTR_RSP_GET_cop2t(&this->instr));\n}\n\nRegisters::Rsp::Cop2Control InstructionRsp::GetRsp_cop2cd() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::rsp_cop2t)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'cop2cd' operand.\");\n    }\n#endif\n\n    return static_cast<Registers::Rsp::Cop2Control>(RAB_INSTR_RSP_GET_cop2cd(&this->instr));\n}\n\nRegisters::Rsp::Vector InstructionRsp::GetRsp_vs() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::rsp_vs)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'vs' operand.\");\n    }\n#endif\n\n    return static_cast<Registers::Rsp::Vector>(RAB_INSTR_RSP_GET_vs(&this->instr));\n}\nRegisters::Rsp::Vector InstructionRsp::GetRsp_vt() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::rsp_vt)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'vt' operand.\");\n    }\n#endif\n\n    return static_cast<Registers::Rsp::Vector>(RAB_INSTR_RSP_GET_vt(&this->instr));\n}\nRegisters::Rsp::Vector InstructionRsp::GetRsp_vd() const {\n#ifdef RAB_SANITY_CHECKS\n    if (!hasOperandAlias(OperandType::rsp_vd)) {\n        // TODO: make a rabbitizer exception class\n        throw std::runtime_error(\"Instruction '\" + getOpcodeName() + \"' does not have 'vd' operand.\");\n    }\n#endif\n\n    return static_cast<Registers::Rsp::Vector>(RAB_INSTR_RSP_GET_vd(&this->instr));\n}\n\nuint8_t InstructionRsp::GetRsp_elementhigh() const {\n    return RAB_INSTR_RSP_GET_elementhigh(&this->instr);\n}\nuint8_t InstructionRsp::GetRsp_elementlow() const {\n    return RAB_INSTR_RSP_GET_elementlow(&this->instr);\n}\n\nuint8_t InstructionRsp::GetRsp_index() const {\n    return RAB_INSTR_RSP_GET_index(&this->instr);\n}\nuint8_t InstructionRsp::GetRsp_de() const {\n    return RAB_INSTR_RSP_GET_de(&this->instr);\n}\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/analysis/RabbitizerLoPairingInfo.h",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#ifndef RABBITIZER_LO_PAIRING_INFO_H\n#define RABBITIZER_LO_PAIRING_INFO_H\n#pragma once\n\n#include <stdbool.h>\n\n#include \"common/Utils.h\"\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n\ntypedef struct RabbitizerLoPairingInfo {\n    int instrOffset;\n    int64_t value; // could be either an unsigned 32 bits number or a signed one, so use 64 bits to ensure it fits\n    bool shouldProcess;\n    bool isGpRel;\n    bool isGpGot;\n} RabbitizerLoPairingInfo;\n\n\nNON_NULL(1)\nvoid RabbitizerLoPairingInfo_Init(RabbitizerLoPairingInfo *self);\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/analysis/RabbitizerRegistersTracker.h",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#ifndef RABBITIZER_REGISTERS_TRACKER_H\n#define RABBITIZER_REGISTERS_TRACKER_H\n#pragma once\n\n#include \"common/Utils.h\"\n#include \"RabbitizerTrackedRegisterState.h\"\n#include \"RabbitizerLoPairingInfo.h\"\n#include \"instructions/RabbitizerInstruction.h\"\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#define RAB_REGISTERS_COUNT 32\n\n\ntypedef struct RabbitizerRegistersTracker {\n    RabbitizerTrackedRegisterState registers[RAB_REGISTERS_COUNT];\n} RabbitizerRegistersTracker;\n\n// TODO: Change functions which use parameters as a way to return values into actual structs returned by the functions\n\nNON_NULL(1)\nvoid RabbitizerRegistersTracker_init(RabbitizerRegistersTracker *self, const RabbitizerRegistersTracker *other);\nNON_NULL(1)\nvoid RabbitizerRegistersTracker_destroy(RabbitizerRegistersTracker *self);\n\nNON_NULL(1, 2)\nbool RabbitizerRegistersTracker_moveRegisters(RabbitizerRegistersTracker *self, const RabbitizerInstruction *instr);\nNON_NULL(1, 2)\nvoid RabbitizerRegistersTracker_overwriteRegisters(RabbitizerRegistersTracker *self, const RabbitizerInstruction *instr, int instrOffset);\nNON_NULL(1, 2, 3)\nvoid RabbitizerRegistersTracker_unsetRegistersAfterFuncCall(RabbitizerRegistersTracker *self, const RabbitizerInstruction *instr, const RabbitizerInstruction *prevInstr);\nNON_NULL(1, 2, 4)\nbool RabbitizerRegistersTracker_getAddressIfCanSetType(const RabbitizerRegistersTracker *self, const RabbitizerInstruction *instr, int instrOffset, uint32_t *dstAddress);\nNON_NULL(1, 2, 3, 4)\nbool RabbitizerRegistersTracker_getJrInfo(const RabbitizerRegistersTracker *self, const RabbitizerInstruction *instr, int *dstOffset, uint32_t *dstAddress);\n\n// prevInstr can be NULL\nNON_NULL(1, 2)\nvoid RabbitizerRegistersTracker_processLui(RabbitizerRegistersTracker *self, const RabbitizerInstruction *instr, int instrOffset, const RabbitizerInstruction *prevInstr);\nNON_NULL(1, 2)\nvoid RabbitizerRegistersTracker_processGpLoad(RabbitizerRegistersTracker *self, const RabbitizerInstruction *instr, int instrOffset);\nNON_NULL(1, 2, 3)\nbool RabbitizerRegistersTracker_getLuiOffsetForConstant(const RabbitizerRegistersTracker *self, const RabbitizerInstruction *instr, int *dstOffset);\nNON_NULL(1, 2)\nvoid RabbitizerRegistersTracker_processConstant(RabbitizerRegistersTracker *self, const RabbitizerInstruction *instr, uint32_t value, int offset);\nNON_NULL(1, 2, 4, 5) // deprecated\nbool RabbitizerRegistersTracker_getLuiOffsetForLo(RabbitizerRegistersTracker *self, const RabbitizerInstruction *instr, int instrOffset, int *dstOffset, bool *dstIsGp);\nNODISCARD NON_NULL(1, 2)\nRabbitizerLoPairingInfo RabbitizerRegistersTracker_preprocessLoAndGetInfo(RabbitizerRegistersTracker *self, const RabbitizerInstruction *instr, int instrOffset);\nNON_NULL(1, 2)\nvoid RabbitizerRegistersTracker_processLo(RabbitizerRegistersTracker *self, const RabbitizerInstruction *instr, uint32_t value, int offset);\nNON_NULL(1, 2)\nbool RabbitizerRegistersTracker_hasLoButNoHi(const RabbitizerRegistersTracker *self, const RabbitizerInstruction *instr);\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/analysis/RabbitizerTrackedRegisterState.h",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#ifndef RABBITIZER_TRACKED_REGISTER_STATE_H\n#define RABBITIZER_TRACKED_REGISTER_STATE_H\n#pragma once\n\n#include <stdbool.h>\n#include <stdint.h>\n#include <stdio.h>\n\n#include \"common/Utils.h\"\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n\ntypedef struct RabbitizerTrackedRegisterState {\n    int registerNum;\n\n    bool hasLuiValue;\n    int luiOffset; // The offset of last lui which set a value to this register\n    bool luiSetOnBranchLikely;\n\n    bool hasGpGot;\n    int gpGotOffset;\n\n    bool hasLoValue;\n    int loOffset;\n    bool dereferenced;\n    int dereferenceOffset;\n\n    uint32_t value;\n} RabbitizerTrackedRegisterState;\n\n\nNON_NULL(1)\nvoid RabbitizerTrackedRegisterState_init(RabbitizerTrackedRegisterState *self, int registerNum);\nNON_NULL(1)\nvoid RabbitizerTrackedRegisterState_destroy(RabbitizerTrackedRegisterState *self);\n\nNON_NULL(1)\nvoid RabbitizerTrackedRegisterState_clear(RabbitizerTrackedRegisterState *self);\nNON_NULL(1)\nvoid RabbitizerTrackedRegisterState_clearHi(RabbitizerTrackedRegisterState *self);\nNON_NULL(1)\nvoid RabbitizerTrackedRegisterState_clearGp(RabbitizerTrackedRegisterState *self);\nNON_NULL(1)\nvoid RabbitizerTrackedRegisterState_clearLo(RabbitizerTrackedRegisterState *self);\n\nNON_NULL(1, 2)\nvoid RabbitizerTrackedRegisterState_copyState(RabbitizerTrackedRegisterState *self, const RabbitizerTrackedRegisterState *other);\n\nNON_NULL(1)\nvoid RabbitizerTrackedRegisterState_setHi(RabbitizerTrackedRegisterState *self, uint32_t value, int offset);\nNON_NULL(1)\nvoid RabbitizerTrackedRegisterState_setGpLoad(RabbitizerTrackedRegisterState *self, uint32_t value, int offset);\nNON_NULL(1)\nvoid RabbitizerTrackedRegisterState_setLo(RabbitizerTrackedRegisterState *self, uint32_t value, int offset);\n\nNON_NULL(1)\nvoid RabbitizerTrackedRegisterState_deref(RabbitizerTrackedRegisterState *self, int offset);\nNON_NULL(1, 2)\nvoid RabbitizerTrackedRegisterState_dereferenceState(RabbitizerTrackedRegisterState *self, const RabbitizerTrackedRegisterState *other, int offset);\n\nNODISCARD NON_NULL(1) PURE\nbool RabbitizerTrackedRegisterState_hasAnyValue(const RabbitizerTrackedRegisterState *self);\nNODISCARD NON_NULL(1) PURE\nbool RabbitizerTrackedRegisterState_wasSetInCurrentOffset(const RabbitizerTrackedRegisterState *self, int offset);\n\nNON_NULL(1)\nvoid RabbitizerTrackedRegisterState_fprint(const RabbitizerTrackedRegisterState *self, FILE* outFile);\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/common/Abi.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\nRABBITIZER_DEF_ABI(NUMERIC),\nRABBITIZER_DEF_ABI(O32),\nRABBITIZER_DEF_ABI(N32),\nRABBITIZER_DEF_ABI(N64),\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/common/RabbitizerConfig.h",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#ifndef RABBITIZER_CONFIG_H\n#define RABBITIZER_CONFIG_H\n\n#include <stdbool.h>\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n\n#define RABBITIZER_DEF_ABI(name) RABBITIZER_ABI_##name\n\ntypedef enum RabbitizerAbi {\n    #include \"Abi.inc\"\n\n    RABBITIZER_DEF_ABI(MAX),\n} RabbitizerAbi;\n\n#undef RABBITIZER_DEF_ABI\n\nRabbitizerAbi RabbitizerAbi_fromStr(const char *name);\n\n\ntypedef struct RabbitizerConfig_RegisterNames {\n    bool namedRegisters; // Enables using named registers. This option takes precedence over the other named register options\n    RabbitizerAbi gprAbiNames; // The ABI names to be used for general purpose registers when disassembling the main processor's instructions\n    RabbitizerAbi fprAbiNames; // The ABI names to be used for floating point registers when disassembling the floating point (coprocessor 1) instructions\n    bool userFpcCsr; // Use FpcCsr as register $31 for the FP control/status register\n    bool vr4300Cop0NamedRegisters; // Use named registers for VR4300's coprocessor 0 registers\n    bool vr4300RspCop0NamedRegisters; // Use named registers for VR4300's RSP's coprocessor 0 registers\n} RabbitizerConfig_RegisterNames;\n\ntypedef struct RabbitizerConfig_PseudoInstr {\n    bool enablePseudos; // Produce pseudo instructions (like `move` or `b`) whenever those may match the desired original instruction\n    bool pseudoBeqz;\n    bool pseudoBnez;\n    bool pseudoB;\n    bool pseudoMove;\n    bool pseudoNot;\n    bool pseudoNegu;\n    bool pseudoBal;\n} RabbitizerConfig_PseudoInstr;\n\ntypedef struct RabbitizerConfig_ToolchainTweaks {\n    bool treatJAsUnconditionalBranch; //! @deprecated\n    /**\n     * Enables a few fixes for SN64's assembler related to div/divu instructions\n     *\n     * - SN64's assembler doesn't like assembling `div $0, a, b` with .set noat active.\n     * Removing the $0 fixes this issue (but not for handwritten asm)\n     *\n     * - SN64's assembler expands div to have break if dividing by zero\n     * However, the break it generates is different than the one it generates with `break N`\n     * So we replace break instrutions for SN64 with the exact word that the assembler generates when expanding div\n     */\n    bool sn64DivFix;\n} RabbitizerConfig_ToolchainTweaks;\n\ntypedef struct RabbitizerConfig_Misc {\n    int opcodeLJust; // The minimal number of characters to left-align the opcode name\n    bool unknownInstrComment; // Generate a pseudo-disassembly comment when disassembling non implemented instructions\n    bool omit0XOnSmallImm;\n    bool upperCaseImm;\n} RabbitizerConfig_Misc;\n\ntypedef struct RabbitizerConfig {\n    RabbitizerConfig_RegisterNames regNames;\n    RabbitizerConfig_PseudoInstr pseudos;\n    RabbitizerConfig_ToolchainTweaks toolchainTweaks;\n    RabbitizerConfig_Misc misc;\n} RabbitizerConfig;\n\nextern RabbitizerConfig RabbitizerConfig_Cfg;\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/common/RabbitizerVersion.h",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#ifndef RABBITIZER_VERSION_H\n#define RABBITIZER_VERSION_H\n\n#include \"Utils.h\"\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n\n// Header version\n#define RAB_VERSION_MAJOR 1\n#define RAB_VERSION_MINOR 2\n#define RAB_VERSION_PATCH 3\n\n#define RAB_VERSION_STR RAB_STRINGIFY(RAB_VERSION_MAJOR) \".\" RAB_STRINGIFY(RAB_VERSION_MINOR) \".\" RAB_STRINGIFY(RAB_VERSION_PATCH)\n\n// Compiled library version\nextern const int RabVersion_Major;\nextern const int RabVersion_Minor;\nextern const int RabVersion_Patch;\n\nextern const char RabVersion_Str[];\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/common/Utils.h",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#ifndef RABBITIZER_UTILS_H\n#define RABBITIZER_UTILS_H\n\n#include <stddef.h>\n#include <stdint.h>\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n\n#if !defined(__GNUC__) && !defined(__clang__)\n#define __attribute__(x)\n#endif\n\n#if __STDC_VERSION__ >= 202000L\n#define CONST [[gnu::const]]\n#define DEPRECATED(reason) [[deprecated (reason)]]\n#define FALLTHROUGH [[fallthrough]]\n#define NODISCARD [[nodiscard]]\n#define NORETURN [[noreturn]]\n#define NON_NULL(...) [[gnu::nonnull (__VA_ARGS__)]]\n#define PURE [[gnu::pure]]\n#define RETURNS_NON_NULL [[gnu::returns_nonnull]]\n#define UNUSED [[maybe_unused]]\n#else\n#define CONST __attribute__((const))\n#define DEPRECATED(reason) __attribute__((deprecated (reason)))\n#define FALLTHROUGH __attribute__((fallthrough))\n#define NODISCARD __attribute__((warn_unused_result))\n#define NORETURN _Noreturn\n#define NON_NULL(...) __attribute__((nonnull (__VA_ARGS__)))\n#define PURE __attribute__((pure))\n#define RETURNS_NON_NULL __attribute__((returns_nonnull))\n#define UNUSED __attribute__((unused))\n#endif\n\n\n#if defined(_MSC_VER)\n#  define UNREACHABLE __assume(0)\n#elif defined(__GNUC__) || defined(__clang__)\n#  define UNREACHABLE __builtin_unreachable()\n#else\n#  define UNREACHABLE\n#endif\n\n\n#define ARRAY_COUNT(arr) (sizeof(arr) / sizeof((arr)[0]))\n\n#define RAB_STRINGIFY(x) #x\n\n#define MASK(v, w) ((v) & ((1 << (w)) - 1))\n\n/*\n * the SHIFT macros take a value, a shift amount, and a width.\n *\n * For the left shift, the lower bits of the value are masked,\n * then shifted left.\n *\n * For the right shift, the value is shifted right, then the lower bits\n * are masked.\n *\n * (NOTE: SHIFTL(v, 0, 32) won't work, just use an assignment)\n *\n */\n#define SHIFTL(v, s, w) (MASK((v), (w)) << (s))\n#define SHIFTR(v, s, w) (MASK((v) >> (s), (w)))\n\n#define BITREPACK(fullword, v, s, w) ((SHIFTR((fullword), (s)+(w), 32-((s)+(w))) << ((s)+(w))) | SHIFTL((v), (s), (w)) | MASK((fullword), (s)))\n#define BITREPACK_RIGHT(fullword, v, s, w) (SHIFTL((v), (s), (w)) | MASK((fullword), (s)))\n\n\n#define RABUTILS_BUFFER_ADVANCE(buffer, totalSize, expression) \\\n    do {                                                       \\\n        size_t __tempSize = expression;                        \\\n        (buffer) += __tempSize;                                \\\n        (totalSize) += __tempSize;                             \\\n    } while (0)\n\n#define RABUTILS_BUFFER_WRITE_CHAR(buffer, totalSize, character) \\\n    do {                                                         \\\n        *(buffer) = (character);                                 \\\n        RABUTILS_BUFFER_ADVANCE(buffer, totalSize, 1);           \\\n    } while (0)\n\n#define RABUTILS_BUFFER_SPRINTF(buffer, totalSize, format, ...) \\\n    do {                                                        \\\n        int _len = sprintf(buffer, format, __VA_ARGS__);        \\\n        assert(_len > 0);                                       \\\n        RABUTILS_BUFFER_ADVANCE(buffer, totalSize, _len);       \\\n    } while (0)\n\n#define RABUTILS_BUFFER_CPY(buffer, totalSize, string)         \\\n    do {                                                       \\\n        size_t _tempSize = strlen(string);                     \\\n        memcpy(buffer, string, _tempSize);                     \\\n        RABUTILS_BUFFER_ADVANCE(buffer, totalSize, _tempSize); \\\n    } while (0)\n\n\nCONST NODISCARD\nint32_t RabbitizerUtils_From2Complement(uint32_t number, int bits);\nNON_NULL(1)\nsize_t RabbitizerUtils_CharFill(char *dst, int count, char fillchar);\nNON_NULL(1, 3)\nsize_t RabbitizerUtils_escapeString(char *dst, size_t dstSize, const char *src, size_t srcSize);\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/InstrCategory.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\nRABBITIZER_DEF_INSTR_CATEGORY(CPU),\nRABBITIZER_DEF_INSTR_CATEGORY(RSP), // N64\nRABBITIZER_DEF_INSTR_CATEGORY(R5900), // PS2's Emotion Engine\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/RabbitizerInstrDescriptor.h",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#ifndef RABBITIZER_INSTRDESCRIPTOR_H\n#define RABBITIZER_INSTRDESCRIPTOR_H\n#pragma once\n\n#include <stdbool.h>\n\n#include \"common/Utils.h\"\n#include \"RabbitizerOperandType.h\"\n#include \"RabbitizerInstrId.h\"\n#include \"RabbitizerInstrSuffix.h\"\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n\ntypedef enum RabbitizerInstrType {\n    RABBITIZER_INSTR_TYPE_UNKNOWN,\n    RABBITIZER_INSTR_TYPE_J,\n    RABBITIZER_INSTR_TYPE_I,\n    RABBITIZER_INSTR_TYPE_R,\n    RABBITIZER_INSTR_TYPE_REGIMM,\n    RABBITIZER_INSTR_TYPE_MAX,\n} RabbitizerInstrType;\n\ntypedef enum RabbitizerArchitectureVersion {\n    RABBITIZER_ARCHVERSION_INVALID=-1,\n    RABBITIZER_ARCHVERSION_UNKNOWN,\n    RABBITIZER_ARCHVERSION_MIPS_I,\n    RABBITIZER_ARCHVERSION_MIPS_II,\n    RABBITIZER_ARCHVERSION_MIPS_III,\n    RABBITIZER_ARCHVERSION_MIPS_IV\n} RabbitizerArchitectureVersion;\n\ntypedef struct RabbitizerInstrDescriptor {\n    RabbitizerOperandType operands[4];\n    RabbitizerInstrType instrType;\n\n    RabbitizerInstrSuffix instrSuffix;\n\n    bool isBranch;\n    bool isBranchLikely;\n    bool isJump;\n    bool isTrap;\n\n    bool isFloat;\n    bool isDouble;\n\n    bool isUnsigned;\n\n    bool modifiesRt;\n    bool modifiesRd;\n\n    bool notEmitedByCompilers;\n\n    bool canBeHi;\n    bool canBeLo;\n    bool doesLink; // \"and link\" family of instructions\n    bool doesDereference;\n    bool doesLoad; // loads data from memory\n    bool doesStore; // stores data to memory\n    bool maybeIsMove;\n\n    bool isPseudo;\n\n    RabbitizerArchitectureVersion architectureVersion; // TODO: consider removing\n} RabbitizerInstrDescriptor;\n\n// TODO: less redundant name\nextern const RabbitizerInstrDescriptor RabbitizerInstrDescriptor_Descriptors[];\n\n\nNODISCARD NON_NULL(1) PURE\nbool RabbitizerInstrDescriptor_isUnknownType(const RabbitizerInstrDescriptor *self);\nNODISCARD NON_NULL(1) PURE\nbool RabbitizerInstrDescriptor_isJType(const RabbitizerInstrDescriptor *self);\nNODISCARD NON_NULL(1) PURE\nbool RabbitizerInstrDescriptor_isIType(const RabbitizerInstrDescriptor *self);\nNODISCARD NON_NULL(1) PURE\nbool RabbitizerInstrDescriptor_isRType(const RabbitizerInstrDescriptor *self);\nNODISCARD NON_NULL(1) PURE\nbool RabbitizerInstrDescriptor_isRegimmType(const RabbitizerInstrDescriptor *self);\n\nNODISCARD NON_NULL(1) PURE\nRabbitizerInstrSuffix RabbitizerInstrDescriptor_instrSuffix(const RabbitizerInstrDescriptor *self);\n\nNODISCARD NON_NULL(1) PURE\nbool RabbitizerInstrDescriptor_isBranch(const RabbitizerInstrDescriptor *self);\nNODISCARD NON_NULL(1) PURE\nbool RabbitizerInstrDescriptor_isBranchLikely(const RabbitizerInstrDescriptor *self);\nNODISCARD NON_NULL(1) PURE\nbool RabbitizerInstrDescriptor_isJump(const RabbitizerInstrDescriptor *self);\nNODISCARD NON_NULL(1) PURE\nbool RabbitizerInstrDescriptor_isTrap(const RabbitizerInstrDescriptor *self);\n\nNODISCARD NON_NULL(1) PURE\nbool RabbitizerInstrDescriptor_isFloat(const RabbitizerInstrDescriptor *self);\nNODISCARD NON_NULL(1) PURE\nbool RabbitizerInstrDescriptor_isDouble(const RabbitizerInstrDescriptor *self);\n\nNODISCARD NON_NULL(1) PURE\nbool RabbitizerInstrDescriptor_isUnsigned(const RabbitizerInstrDescriptor *self);\n\nNODISCARD NON_NULL(1) PURE\nbool RabbitizerInstrDescriptor_modifiesRt(const RabbitizerInstrDescriptor *self);\nNODISCARD NON_NULL(1) PURE\nbool RabbitizerInstrDescriptor_modifiesRd(const RabbitizerInstrDescriptor *self);\n\nNODISCARD NON_NULL(1) PURE\nbool RabbitizerInstrDescriptor_notEmitedByCompilers(const RabbitizerInstrDescriptor *self);\n\nNODISCARD NON_NULL(1) PURE\nbool RabbitizerInstrDescriptor_canBeHi(const RabbitizerInstrDescriptor *self);\nNODISCARD NON_NULL(1) PURE\nbool RabbitizerInstrDescriptor_canBeLo(const RabbitizerInstrDescriptor *self);\nNODISCARD NON_NULL(1) PURE\nbool RabbitizerInstrDescriptor_doesLink(const RabbitizerInstrDescriptor *self);\nNODISCARD NON_NULL(1) PURE\nbool RabbitizerInstrDescriptor_doesDereference(const RabbitizerInstrDescriptor *self);\nNODISCARD NON_NULL(1) PURE\nbool RabbitizerInstrDescriptor_doesLoad(const RabbitizerInstrDescriptor *self);\nNODISCARD NON_NULL(1) PURE\nbool RabbitizerInstrDescriptor_doesStore(const RabbitizerInstrDescriptor *self);\nNODISCARD NON_NULL(1) PURE\nbool RabbitizerInstrDescriptor_maybeIsMove(const RabbitizerInstrDescriptor *self);\n\nNODISCARD NON_NULL(1) PURE\nbool RabbitizerInstrDescriptor_isPseudo(const RabbitizerInstrDescriptor *self);\n\nNODISCARD NON_NULL(1) PURE\nRabbitizerArchitectureVersion RabbitizerInstrDescriptor_getArchitectureVersion(const RabbitizerInstrDescriptor *self);\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/RabbitizerInstrId.h",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#ifndef RABBITIZER_INSTRID_H\n#define RABBITIZER_INSTRID_H\n#pragma once\n\n#include \"common/Utils.h\"\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n\n#define RABBITIZER_DEF_INSTR_ID(prefix, caseBits, name, ...) \\\n    RABBITIZER_INSTR_ID_##prefix##_##name,\n\n#define RABBITIZER_DEF_INSTR_ID_ALTNAME(prefix, caseBits, name, altname, ...) \\\n    RABBITIZER_DEF_INSTR_ID(prefix, caseBits, name, __VA_ARGS__)\n\ntypedef enum RabbitizerInstrId {\n    #include \"instructions/instr_id/RabbitizerInstrId_cpu.inc\"\n\n    #include \"instructions/instr_id/RabbitizerInstrId_rsp.inc\"\n\n    #include \"instructions/instr_id/RabbitizerInstrId_r5900.inc\"\n\n    RABBITIZER_INSTR_ID_ALL_MAX = RABBITIZER_DEF_INSTR_ID(r5900, , MAX, )\n} RabbitizerInstrId;\n\n#undef RABBITIZER_DEF_INSTR_ID\n#undef RABBITIZER_DEF_INSTR_ID_ALTNAME\n\n\nextern const char *RabbitizerInstrId_Names[];\n\n\nCONST NODISCARD RETURNS_NON_NULL\nconst char *RabbitizerInstrId_getOpcodeName(RabbitizerInstrId uniqueId);\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/RabbitizerInstrSuffix.h",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#ifndef RABBITIZER_INSTRSUFFIX_H\n#define RABBITIZER_INSTRSUFFIX_H\n#pragma once\n\n#include \"common/Utils.h\"\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n\nstruct RabbitizerInstruction;\n\ntypedef enum RabbitizerInstrSuffix {\n    RABINSTRSUFFIX_NONE,\n\n    RABINSTRSUFFIX_R5900_xyzw,\n\n    RABINSTRSUFFIX_MAX\n} RabbitizerInstrSuffix;\n\nCONST NODISCARD NON_NULL(1)\nsize_t RabbitizerInstrSuffix_getSizeForBuffer(const struct RabbitizerInstruction *self, RabbitizerInstrSuffix instrSuffix);\n\nCONST NODISCARD NON_NULL(1, 2)\nsize_t RabbitizerInstrSuffix_processSuffix(const struct RabbitizerInstruction *self, char *dst, RabbitizerInstrSuffix instrSuffix);\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/RabbitizerInstruction.h",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#ifndef RABBITIZER_INSTRUCTION_H\n#define RABBITIZER_INSTRUCTION_H\n#pragma once\n\n#include <stdbool.h>\n#include <stddef.h>\n#include <stdint.h>\n\n#include \"common/Utils.h\"\n\n#include \"RabbitizerInstrId.h\"\n#include \"RabbitizerInstrDescriptor.h\"\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n\n#define RABBITIZER_DEF_INSTR_CATEGORY(name) RABBITIZER_INSTRCAT_##name\n\ntypedef enum RabbitizerInstrCategory {\n    #include \"instructions/InstrCategory.inc\"\n\n    RABBITIZER_DEF_INSTR_CATEGORY(MAX),\n} RabbitizerInstrCategory;\n\n#undef RABBITIZER_DEF_INSTR_CATEGORY\n\n\ntypedef struct RabbitizerInstruction {\n    uint32_t word;\n    uint32_t _mandatorybits;\n\n    RabbitizerInstrId uniqueId;\n    const RabbitizerInstrDescriptor *descriptor;\n\n    uint32_t vram;\n    bool _handwrittenCategory;\n    bool inHandwrittenFunction;\n    RabbitizerInstrCategory category;\n} RabbitizerInstruction;\n\n\n#define RAB_INSTR_GET_opcode(self)                  (SHIFTR((self)->word, 26,  6))\n#define RAB_INSTR_GET_rs(self)                      (SHIFTR((self)->word, 21,  5))\n#define RAB_INSTR_GET_rt(self)                      (SHIFTR((self)->word, 16,  5))\n#define RAB_INSTR_GET_rd(self)                      (SHIFTR((self)->word, 11,  5))\n#define RAB_INSTR_GET_sa(self)                      (SHIFTR((self)->word,  6,  5))\n#define RAB_INSTR_GET_function(self)                (SHIFTR((self)->word,  0,  6))\n\n#define RAB_INSTR_GET_cop0d(self)                   (SHIFTR((self)->word, 11,  5))\n\n#define RAB_INSTR_GET_instr_index(self)             (SHIFTR((self)->word,  0, 26))\n#define RAB_INSTR_GET_immediate(self)               (SHIFTR((self)->word,  0, 16))\n\n#define RAB_INSTR_GET_fs(self)                      (SHIFTR((self)->word, 11,  5))\n#define RAB_INSTR_GET_ft(self)                      (SHIFTR((self)->word, 16,  5))\n#define RAB_INSTR_GET_fd(self)                      (SHIFTR((self)->word,  6,  5))\n#define RAB_INSTR_GET_cop1cs(self)                  (SHIFTR((self)->word, 11,  5))\n\n#define RAB_INSTR_GET_op(self)                      (SHIFTR((self)->word, 16,  5))\n\n#define RAB_INSTR_GET_code(self)                    (SHIFTR((self)->word,  6, 20))\n#define RAB_INSTR_GET_code_upper(self)              (SHIFTR((self)->word, 16, 10))\n#define RAB_INSTR_GET_code_lower(self)              (SHIFTR((self)->word,  6, 10))\n\n#define RAB_INSTR_GET_copraw(self)                  (SHIFTR((self)->word,  0, 25))\n\n#define RAB_INSTR_GET_fmt(self)                     (SHIFTR((self)->word, 21,  5))\n#define RAB_INSTR_GET_fc(self)                      (SHIFTR((self)->word,  4,  2))\n#define RAB_INSTR_GET_cond(self)                    (SHIFTR((self)->word,  0,  4))\n\n#define RAB_INSTR_GET_cop2t(self)                   (SHIFTR((self)->word, 16,  5))\n\n#define RAB_INSTR_GET_tf(self)                      (SHIFTR((self)->word, 16,  1))\n#define RAB_INSTR_GET_nd(self)                      (SHIFTR((self)->word, 17,  1))\n#define RAB_INSTR_GET_bc_fmt(self)                  (SHIFTR((self)->word, 16,  5))\n\n#define RAB_INSTR_GET_stype(self)                   (SHIFTR((self)->word,  6,  5))\n\n\n#define RAB_INSTR_PACK_opcode(word, value)          (BITREPACK_RIGHT((word), (value), 26,  6))\n#define RAB_INSTR_PACK_rs(word, value)              (BITREPACK((word), (value), 21,  5))\n#define RAB_INSTR_PACK_rt(word, value)              (BITREPACK((word), (value), 16,  5))\n#define RAB_INSTR_PACK_rd(word, value)              (BITREPACK((word), (value), 11,  5))\n#define RAB_INSTR_PACK_sa(word, value)              (BITREPACK((word), (value),  6,  5))\n#define RAB_INSTR_PACK_function(word, value)        (BITREPACK((word), (value),  0,  6))\n\n#define RAB_INSTR_PACK_cop0d(word, value)           (BITREPACK((word), (value), 11,  5))\n\n#define RAB_INSTR_PACK_instr_index(word, value)     (BITREPACK((word), (value),  0, 26))\n#define RAB_INSTR_PACK_immediate(word, value)       (BITREPACK((word), (value),  0, 16))\n\n#define RAB_INSTR_PACK_code(word, value)            (BITREPACK((word), (value),  6, 20))\n#define RAB_INSTR_PACK_code_upper(word, value)      (BITREPACK((word), (value), 16, 10))\n#define RAB_INSTR_PACK_code_lower(word, value)      (BITREPACK((word), (value),  6, 10))\n\n#define RAB_INSTR_PACK_copraw(word, value)          (BITREPACK((word), (value),  0, 25))\n\n#define RAB_INSTR_PACK_fmt(word, value)             (BITREPACK((word), (value), 21,  5))\n#define RAB_INSTR_PACK_fc(word, value)              (BITREPACK((word), (value),  4,  2))\n#define RAB_INSTR_PACK_cond(word, value)            (BITREPACK((word), (value),  0,  4))\n\n#define RAB_INSTR_PACK_fs(word, value)              (BITREPACK((word), (value), 11,  5))\n#define RAB_INSTR_PACK_ft(word, value)              (BITREPACK((word), (value), 16,  5))\n#define RAB_INSTR_PACK_fd(word, value)              (BITREPACK((word), (value),  6,  5))\n#define RAB_INSTR_PACK_cop1cs(word, value)          (BITREPACK((word), (value), 11,  5))\n\n#define RAB_INSTR_PACK_op(word, value)              (BITREPACK((word), (value), 16,  5))\n\n#define RAB_INSTR_PACK_cop2t(word, value)           (BITREPACK((word), (value), 16,  5))\n\n#define RAB_INSTR_PACK_tf(word, value)              (BITREPACK((word), (value), 16,  1))\n#define RAB_INSTR_PACK_nd(word, value)              (BITREPACK((word), (value), 17,  1))\n#define RAB_INSTR_PACK_bc_fmt(word, value)          (BITREPACK((word), (value), 16,  5))\n\n#define RAB_INSTR_PACK_stype(word, value)           (BITREPACK((word), (value),  6,  5))\n\n\nNON_NULL(1)\nvoid RabbitizerInstruction_init(RabbitizerInstruction *self, uint32_t word, uint32_t vram);\nNON_NULL(1)\nvoid RabbitizerInstruction_destroy(RabbitizerInstruction* self);\n\n\n/* Process uniqueId */\n\nNON_NULL(1)\nvoid RabbitizerInstruction_processUniqueId_Normal(RabbitizerInstruction *self);\nNON_NULL(1)\nvoid RabbitizerInstruction_processUniqueId_Special(RabbitizerInstruction *self);\nNON_NULL(1)\nvoid RabbitizerInstruction_processUniqueId_Regimm(RabbitizerInstruction *self);\n\nNON_NULL(1)\nvoid RabbitizerInstruction_processUniqueId_Coprocessor0_BC0(RabbitizerInstruction *self);\nNON_NULL(1)\nvoid RabbitizerInstruction_processUniqueId_Coprocessor0_Tlb(RabbitizerInstruction *self);\n\nNON_NULL(1)\nvoid RabbitizerInstruction_processUniqueId_Coprocessor0(RabbitizerInstruction *self);\n\nNON_NULL(1)\nvoid RabbitizerInstruction_processUniqueId_Coprocessor1_BC1(RabbitizerInstruction *self);\nNON_NULL(1)\nvoid RabbitizerInstruction_processUniqueId_Coprocessor1_FpuS(RabbitizerInstruction *self);\nNON_NULL(1)\nvoid RabbitizerInstruction_processUniqueId_Coprocessor1_FpuD(RabbitizerInstruction *self);\nNON_NULL(1)\nvoid RabbitizerInstruction_processUniqueId_Coprocessor1_FpuW(RabbitizerInstruction *self);\nNON_NULL(1)\nvoid RabbitizerInstruction_processUniqueId_Coprocessor1_FpuL(RabbitizerInstruction *self);\n\nNON_NULL(1)\nvoid RabbitizerInstruction_processUniqueId_Coprocessor1(RabbitizerInstruction *self);\n\nNON_NULL(1)\nvoid RabbitizerInstruction_processUniqueId_Coprocessor2(RabbitizerInstruction *self);\nNON_NULL(1)\nvoid RabbitizerInstruction_processUniqueId(RabbitizerInstruction *self);\n\n/* Process uniqueId */\n\n\n/* General getters */\n\nNODISCARD NON_NULL(1) PURE\nuint32_t RabbitizerInstruction_getRaw(const RabbitizerInstruction *self);\n\nNODISCARD NON_NULL(1) PURE\nuint32_t RabbitizerInstruction_getImmediate(const RabbitizerInstruction *self);\nNODISCARD NON_NULL(1) PURE\nint32_t RabbitizerInstruction_getProcessedImmediate(const RabbitizerInstruction *self);\nNODISCARD NON_NULL(1) PURE\nuint32_t RabbitizerInstruction_getInstrIndex(const RabbitizerInstruction *self);\nNODISCARD NON_NULL(1) PURE\nuint32_t RabbitizerInstruction_getInstrIndexAsVram(const RabbitizerInstruction *self);\n\nNODISCARD NON_NULL(1) PURE\nint32_t RabbitizerInstruction_getBranchOffset(const RabbitizerInstruction *self);\nNODISCARD NON_NULL(1) PURE\nint32_t RabbitizerInstruction_getGenericBranchOffset(const RabbitizerInstruction *self, uint32_t currentVram);\n\n/* General getters */\n\nNON_NULL(1)\nvoid RabbitizerInstruction_blankOut(RabbitizerInstruction *self);\n\n\n/* Instruction examination */\n\nNODISCARD NON_NULL(1) PURE\nbool RabbitizerInstruction_isImplemented(const RabbitizerInstruction *self);\nNODISCARD NON_NULL(1) PURE\nbool RabbitizerInstruction_isLikelyHandwritten(const RabbitizerInstruction *self);\nNODISCARD NON_NULL(1) PURE\nbool RabbitizerInstruction_isNop(const RabbitizerInstruction *self);\nNODISCARD NON_NULL(1) PURE\nbool RabbitizerInstruction_isUnconditionalBranch(const RabbitizerInstruction *self);\nNODISCARD NON_NULL(1) PURE\nbool RabbitizerInstruction_isJrRa(const RabbitizerInstruction *self);\nNODISCARD NON_NULL(1) PURE\nbool RabbitizerInstruction_isJrNotRa(const RabbitizerInstruction *self);\nNODISCARD NON_NULL(1) PURE\nbool RabbitizerInstruction_hasDelaySlot(const RabbitizerInstruction *self);\n\nNODISCARD NON_NULL(1) PURE\nconst char *RabbitizerInstruction_mapInstrToType(const RabbitizerInstruction *self);\n\nNODISCARD NON_NULL(1, 2) PURE\nbool RabbitizerInstruction_sameOpcode(const RabbitizerInstruction *self, const RabbitizerInstruction *other);\nNODISCARD NON_NULL(1, 2) PURE\nbool RabbitizerInstruction_sameOpcodeButDifferentArguments(const RabbitizerInstruction *self, const RabbitizerInstruction *other);\n\nNODISCARD NON_NULL(1) PURE\nbool RabbitizerInstruction_hasOperand(const RabbitizerInstruction *self, RabbitizerOperandType operand);\nNODISCARD NON_NULL(1) PURE\nbool RabbitizerInstruction_hasOperandAlias(const RabbitizerInstruction *self, RabbitizerOperandType operand);\n\nNODISCARD NON_NULL(1) PURE\nuint32_t RabbitizerInstruction_getValidBits(const RabbitizerInstruction *self);\nNODISCARD NON_NULL(1) PURE\nbool RabbitizerInstruction_isValid(const RabbitizerInstruction *self);\n\n/* Instruction examination */\n\n\n/* Disassembly */\n\nNODISCARD NON_NULL(1) PURE\nbool RabbitizerInstruction_mustDisasmAsData(const RabbitizerInstruction *self);\n\nNODISCARD NON_NULL(1) PURE\nsize_t RabbitizerInstruction_getSizeForBufferOperandsDisasm(const RabbitizerInstruction *self, size_t immOverrideLength);\nNON_NULL(1, 2)\nsize_t RabbitizerInstruction_disassembleOperands(const RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);\n\nNODISCARD NON_NULL(1) PURE\nsize_t RabbitizerInstruction_getSizeForBufferInstrDisasm(const RabbitizerInstruction *self, size_t immOverrideLength, int extraLJust);\nNON_NULL(1, 2)\nsize_t RabbitizerInstruction_disassembleInstruction(const RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength, int extraLJust);\n\nNODISCARD NON_NULL(1) PURE\nsize_t RabbitizerInstruction_getSizeForBufferDataDisasm(const RabbitizerInstruction *self, int extraLJust);\nNON_NULL(1, 2)\nsize_t RabbitizerInstruction_disassembleAsData(const RabbitizerInstruction *self, char *dst, int extraLJust);\n\nNODISCARD NON_NULL(1) PURE\nsize_t RabbitizerInstruction_getSizeForBuffer(const RabbitizerInstruction *self, size_t immOverrideLength, int extraLJust);\nNON_NULL(1, 2)\nsize_t RabbitizerInstruction_disassemble(const RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength, int extraLJust);\n\n/* Disassembly */\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/RabbitizerInstructionR5900.h",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#ifndef RABBITIZER_INSTRUCTION_R5900_H\n#define RABBITIZER_INSTRUCTION_R5900_H\n#pragma once\n\n#include \"RabbitizerInstruction.h\"\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n\n#define RAB_INSTR_R5900_GET_mmi_function(self)          (SHIFTR((self)->word,  6,  5))\n#define RAB_INSTR_R5900_GET_fhi_flo(self)               ((SHIFTR((self)->word,  6,  5) << 2) | SHIFTR((self)->word,  0,  2))\n\n#define RAB_INSTR_R5900_GET_vfs(self)                   (SHIFTR((self)->word, 11,  5))\n#define RAB_INSTR_R5900_GET_vft(self)                   (SHIFTR((self)->word, 16,  5))\n#define RAB_INSTR_R5900_GET_vfd(self)                   (SHIFTR((self)->word,  6,  5))\n\n#define RAB_INSTR_R5900_GET_xyzw_x(self)                (SHIFTR((self)->word, 24,  1))\n#define RAB_INSTR_R5900_GET_xyzw_y(self)                (SHIFTR((self)->word, 23,  1))\n#define RAB_INSTR_R5900_GET_xyzw_z(self)                (SHIFTR((self)->word, 22,  1))\n#define RAB_INSTR_R5900_GET_xyzw_w(self)                (SHIFTR((self)->word, 21,  1))\n#define RAB_INSTR_R5900_GET_n(self)                     (SHIFTR((self)->word,  0,  2))\n#define RAB_INSTR_R5900_GET_l(self)                     (SHIFTR((self)->word, 21,  2))\n#define RAB_INSTR_R5900_GET_m(self)                     (SHIFTR((self)->word, 23,  2))\n\n#define RAB_INSTR_R5900_GET_vis(self)                   (SHIFTR((self)->word, 11,  5))\n#define RAB_INSTR_R5900_GET_vit(self)                   (SHIFTR((self)->word, 16,  5))\n#define RAB_INSTR_R5900_GET_vid(self)                   (SHIFTR((self)->word,  6,  5))\n\n#define RAB_INSTR_R5900_GET_imm5(self)                  (SHIFTR((self)->word,  6,  5))\n\n\n#define RAB_INSTR_R5900_PACK_mmi_function(word, value)  (BITREPACK((word), (value),  6,  5))\n#define RAB_INSTR_R5900_PACK_fhi_flo(word, value)       (BITREPACK(BITREPACK((word), (value) >> 2,  6,  5), (value),  0,  2))\n\n#define RAB_INSTR_R5900_PACK_vfs(word, value)           (BITREPACK((word), (value), 11,  5))\n#define RAB_INSTR_R5900_PACK_vft(word, value)           (BITREPACK((word), (value), 16,  5))\n#define RAB_INSTR_R5900_PACK_vfd(word, value)           (BITREPACK((word), (value),  6,  5))\n\n#define RAB_INSTR_R5900_PACK_xyzw_x(word, value)        (BITREPACK((word), (value), 24,  1))\n#define RAB_INSTR_R5900_PACK_xyzw_y(word, value)        (BITREPACK((word), (value), 23,  1))\n#define RAB_INSTR_R5900_PACK_xyzw_z(word, value)        (BITREPACK((word), (value), 22,  1))\n#define RAB_INSTR_R5900_PACK_xyzw_w(word, value)        (BITREPACK((word), (value), 21,  1))\n#define RAB_INSTR_R5900_PACK_n(word, value)             (BITREPACK((word), (value),  0,  2))\n#define RAB_INSTR_R5900_PACK_l(word, value)             (BITREPACK((word), (value), 21,  2))\n#define RAB_INSTR_R5900_PACK_m(word, value)             (BITREPACK((word), (value), 23,  2))\n\n#define RAB_INSTR_R5900_PACK_vis(word, value)           (BITREPACK((word), (value), 11,  5))\n#define RAB_INSTR_R5900_PACK_vit(word, value)           (BITREPACK((word), (value), 16,  5))\n#define RAB_INSTR_R5900_PACK_vid(word, value)           (BITREPACK((word), (value),  6,  5))\n\n#define RAB_INSTR_R5900_PACK_imm5(word, value)          (BITREPACK((word), (value),  6,  5))\n\n\nNON_NULL(1)\nvoid RabbitizerInstructionR5900_init(RabbitizerInstruction *self, uint32_t word, uint32_t vram);\nNON_NULL(1)\nvoid RabbitizerInstructionR5900_destroy(RabbitizerInstruction *self);\n\nNON_NULL(1)\nvoid RabbitizerInstructionR5900_processUniqueId_Normal(RabbitizerInstruction *self);\nNON_NULL(1)\nvoid RabbitizerInstructionR5900_processUniqueId_Special(RabbitizerInstruction *self);\nNON_NULL(1)\nvoid RabbitizerInstructionR5900_processUniqueId_Regimm(RabbitizerInstruction *self);\nNON_NULL(1)\nvoid RabbitizerInstructionR5900_processUniqueId_Coprocessor0(RabbitizerInstruction *self);\nNON_NULL(1)\nvoid RabbitizerInstructionR5900_processUniqueId_Coprocessor1(RabbitizerInstruction *self);\nNON_NULL(1)\nvoid RabbitizerInstructionR5900_processUniqueId_Coprocessor2(RabbitizerInstruction *self);\nNON_NULL(1)\nvoid RabbitizerInstructionR5900_processUniqueId_MMI(RabbitizerInstruction *self);\n\nNON_NULL(1)\nvoid RabbitizerInstructionR5900_processUniqueId(RabbitizerInstruction *self);\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/RabbitizerInstructionRsp.h",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#ifndef RABBITIZER_INSTRUCTION_RSP_H\n#define RABBITIZER_INSTRUCTION_RSP_H\n#pragma once\n\n#include \"RabbitizerInstruction.h\"\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n\n#define RAB_INSTR_RSP_GET_cop2t(self)               (SHIFTR((self)->word, 16,  5))\n#define RAB_INSTR_RSP_GET_cop2cd(self)              (SHIFTR((self)->word, 11,  5))\n\n#define RAB_INSTR_RSP_GET_vs(self)                  (SHIFTR((self)->word, 11,  5))\n#define RAB_INSTR_RSP_GET_vt(self)                  (SHIFTR((self)->word, 16,  5))\n#define RAB_INSTR_RSP_GET_vd(self)                  (SHIFTR((self)->word,  6,  5))\n\n#define RAB_INSTR_RSP_GET_elementhigh(self)         (SHIFTR((self)->word, 21,  4))\n#define RAB_INSTR_RSP_GET_elementlow(self)          (SHIFTR((self)->word,  7,  4))\n#define RAB_INSTR_RSP_GET_OFFSET_VECTOR_RAW(self)   (SHIFTR((self)->word,  0,  7))\n\n#define RAB_INSTR_RSP_GET_index(self)               (SHIFTR((self)->word,  7,  4))\n#define RAB_INSTR_RSP_GET_de(self)                  (SHIFTR((self)->word, 11,  5))\n\n\n#define RAB_INSTR_RSP_PACK_cop2t(word, value)       (BITREPACK((word), value, 16,  5))\n#define RAB_INSTR_RSP_PACK_cop2cd(word, value)      (BITREPACK((word), value, 11,  5))\n\n#define RAB_INSTR_RSP_PACK_vs(word, value)          (BITREPACK((word), value, 11,  5))\n#define RAB_INSTR_RSP_PACK_vt(word, value)          (BITREPACK((word), value, 16,  5))\n#define RAB_INSTR_RSP_PACK_vd(word, value)          (BITREPACK((word), value,  6,  5))\n\n#define RAB_INSTR_RSP_PACK_elementhigh(word, value) (BITREPACK((word), value, 21,  4))\n#define RAB_INSTR_RSP_PACK_elementlow(word, value)  (BITREPACK((word), value,  7,  4))\n\n#define RAB_INSTR_RSP_PACK_index(word, value)       (BITREPACK((word), value,  7,  4))\n#define RAB_INSTR_RSP_PACK_offset(word, value)      (BITREPACK((word), value,  0,  7))\n#define RAB_INSTR_RSP_PACK_de(word, value)          (BITREPACK((word), value, 11,  5))\n\n\nNON_NULL(1)\nvoid RabbitizerInstructionRsp_init(RabbitizerInstruction *self, uint32_t word, uint32_t vram);\nNON_NULL(1)\nvoid RabbitizerInstructionRsp_destroy(RabbitizerInstruction *self);\n\n\nNON_NULL(1)\nvoid RabbitizerInstructionRsp_processUniqueId_Normal(RabbitizerInstruction *self);\nNON_NULL(1)\nvoid RabbitizerInstructionRsp_processUniqueId_Special(RabbitizerInstruction *self);\nNON_NULL(1)\nvoid RabbitizerInstructionRsp_processUniqueId_Regimm(RabbitizerInstruction *self);\n\nNON_NULL(1)\nvoid RabbitizerInstructionRsp_processUniqueId(RabbitizerInstruction *self);\n\n\nNODISCARD NON_NULL(1) PURE\nuint16_t RabbitizerInstructionRsp_GetOffsetVector(const RabbitizerInstruction *self);\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/RabbitizerOperandType.h",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#ifndef RABBITIZER_OPERAND_TYPE_H\n#define RABBITIZER_OPERAND_TYPE_H\n#pragma once\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n\n#define RAB_DEF_OPERAND(prefix, operand) \\\n    RAB_OPERAND_##prefix##_##operand,\n\ntypedef enum RabbitizerOperandType {\n    RAB_DEF_OPERAND(ALL, INVALID)\n\n#include \"operands/RabbitizerOperandType_cpu.inc\"\n#include \"operands/RabbitizerOperandType_rsp.inc\"\n#include \"operands/RabbitizerOperandType_r5900.inc\"\n\n    RAB_DEF_OPERAND(ALL, MAX)\n} RabbitizerOperandType;\n\n#undef RAB_DEF_OPERAND\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/RabbitizerRegister.h",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#ifndef RABBITIZER_REGISTER_H\n#define RABBITIZER_REGISTER_H\n#pragma once\n\n#include <stdint.h>\n\n#include \"common/Utils.h\"\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n\n#define RABBITIZER_DEF_REG(prefix, name, numeric) \\\n    RABBITIZER_REG_##prefix##_##name\n\n#define RABBITIZER_DEF_REG_NODOLLAR(prefix, name, numeric) \\\n    RABBITIZER_REG_##prefix##_##name\n\n\ntypedef enum RabbitizerRegister_GprO32 {\n    #include \"instructions/registers/RabbitizerRegister_GprO32.inc\"\n} RabbitizerRegister_GprO32;\n\ntypedef enum RabbitizerRegister_GprN32 {\n    #include \"instructions/registers/RabbitizerRegister_GprN32.inc\"\n} RabbitizerRegister_GprN32;\n\ntypedef enum RabbitizerRegister_Cop0 {\n    #include \"instructions/registers/RabbitizerRegister_Cop0.inc\"\n} RabbitizerRegister_Cop0;\n\n// Float registers\ntypedef enum RabbitizerRegister_Cop1O32 {\n    #include \"instructions/registers/RabbitizerRegister_Cop1O32.inc\"\n} RabbitizerRegister_Cop1O32;\n\ntypedef enum RabbitizerRegister_Cop1N32 {\n    #include \"instructions/registers/RabbitizerRegister_Cop1N32.inc\"\n} RabbitizerRegister_Cop1N32;\n\ntypedef enum RabbitizerRegister_Cop1N64 {\n    #include \"instructions/registers/RabbitizerRegister_Cop1N64.inc\"\n} RabbitizerRegister_Cop1N64;\n\ntypedef enum RabbitizerRegister_Cop1Control {\n    #include \"instructions/registers/RabbitizerRegister_Cop1Control.inc\"\n} RabbitizerRegister_Cop1Control;\n\ntypedef enum RabbitizerRegister_Cop2 {\n    #include \"instructions/registers/RabbitizerRegister_Cop2.inc\"\n} RabbitizerRegister_Cop2;\n\n\n/* RSP */\n\ntypedef enum RabbitizerRegister_RspGpr {\n    #include \"instructions/registers/RabbitizerRegister_RspGpr.inc\"\n} RabbitizerRegister_RspGpr;\n\ntypedef enum RabbitizerRegister_RspCop0 {\n    #include \"instructions/registers/RabbitizerRegister_RspCop0.inc\"\n} RabbitizerRegister_RspCop0;\n\ntypedef enum RabbitizerRegister_RspCop2 {\n    #include \"instructions/registers/RabbitizerRegister_RspCop2.inc\"\n} RabbitizerRegister_RspCop2;\n\ntypedef enum RabbitizerRegister_RspCop2Control {\n    #include \"instructions/registers/RabbitizerRegister_RspCop2Control.inc\"\n} RabbitizerRegister_RspCop2Control;\n\ntypedef enum RabbitizerRegister_RspVector {\n    #include \"instructions/registers/RabbitizerRegister_RspVector.inc\"\n} RabbitizerRegister_RspVector;\n\n/* RSP */\n\n/* R5900 */\n\ntypedef enum RabbitizerRegister_R5900VF {\n    #include \"instructions/registers/RabbitizerRegister_R5900VF.inc\"\n} RabbitizerRegister_R5900VF;\n\ntypedef enum RabbitizerRegister_R5900VI {\n    #include \"instructions/registers/RabbitizerRegister_R5900VI.inc\"\n} RabbitizerRegister_R5900VI;\n\n/* R5900 */\n\n\n#undef RABBITIZER_DEF_REG\n#undef RABBITIZER_DEF_REG_NODOLLAR\n\n\nextern const char *RabbitizerRegister_GprO32_Names[][2];\nextern const char *RabbitizerRegister_GprN32_Names[][2];\nextern const char *RabbitizerRegister_Cop0_Names[][2];\nextern const char *RabbitizerRegister_Cop1O32_Names[][2];\nextern const char *RabbitizerRegister_Cop1N32_Names[][2];\nextern const char *RabbitizerRegister_Cop1N64_Names[][2];\nextern const char *RabbitizerRegister_Cop2_Names[][2];\nextern const char *RabbitizerRegister_RspGpr_Names[][2];\nextern const char *RabbitizerRegister_RspCop0_Names[][2];\nextern const char *RabbitizerRegister_RspVector_Names[][2];\n\n\nNODISCARD PURE RETURNS_NON_NULL\nconst char *RabbitizerRegister_getNameGpr(uint8_t regValue);\nNODISCARD PURE RETURNS_NON_NULL\nconst char *RabbitizerRegister_getNameCop0(uint8_t regValue);\nNODISCARD PURE RETURNS_NON_NULL\nconst char *RabbitizerRegister_getNameCop1(uint8_t regValue);\nNODISCARD PURE RETURNS_NON_NULL\nconst char *RabbitizerRegister_getNameCop1Control(uint8_t regValue);\nNODISCARD PURE RETURNS_NON_NULL\nconst char *RabbitizerRegister_getNameCop2(uint8_t regValue);\n\nNODISCARD PURE RETURNS_NON_NULL\nconst char *RabbitizerRegister_getNameRspGpr(uint8_t regValue);\nNODISCARD PURE RETURNS_NON_NULL\nconst char *RabbitizerRegister_getNameRspCop0(uint8_t regValue);\nNODISCARD PURE RETURNS_NON_NULL\nconst char *RabbitizerRegister_getNameRspCop2(uint8_t regValue);\nNODISCARD PURE RETURNS_NON_NULL\nconst char *RabbitizerRegister_getNameRspCop2Control(uint8_t regValue);\nNODISCARD PURE RETURNS_NON_NULL\nconst char *RabbitizerRegister_getNameRspVector(uint8_t regValue);\n\nNODISCARD PURE RETURNS_NON_NULL\nconst char *RabbitizerRegister_getNameR5900VF(uint8_t regValue);\nNODISCARD PURE RETURNS_NON_NULL\nconst char *RabbitizerRegister_getNameR5900VI(uint8_t regValue);\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/instr_id/RabbitizerInstrId_cpu.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\nRABBITIZER_DEF_INSTR_ID(cpu, , INVALID, .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate})\n\n#include \"instructions/instr_id/cpu/cpu_normal.inc\"\n#include \"instructions/instr_id/cpu/cpu_special.inc\"\n#include \"instructions/instr_id/cpu/cpu_regimm.inc\"\n#include \"instructions/instr_id/cpu/cpu_cop0.inc\"\n#include \"instructions/instr_id/cpu/cpu_cop0_bc0.inc\"\n#include \"instructions/instr_id/cpu/cpu_cop0_tlb.inc\"\n#include \"instructions/instr_id/cpu/cpu_cop1.inc\"\n#include \"instructions/instr_id/cpu/cpu_cop1_bc1.inc\"\n#include \"instructions/instr_id/cpu/cpu_cop1_fpu_s.inc\"\n#include \"instructions/instr_id/cpu/cpu_cop1_fpu_d.inc\"\n#include \"instructions/instr_id/cpu/cpu_cop1_fpu_w.inc\"\n#include \"instructions/instr_id/cpu/cpu_cop1_fpu_l.inc\"\n\nRABBITIZER_DEF_INSTR_ID(cpu, , USERDEF_00, .operands={0})\nRABBITIZER_DEF_INSTR_ID(cpu, , USERDEF_01, .operands={0})\nRABBITIZER_DEF_INSTR_ID(cpu, , USERDEF_02, .operands={0})\nRABBITIZER_DEF_INSTR_ID(cpu, , USERDEF_03, .operands={0})\nRABBITIZER_DEF_INSTR_ID(cpu, , USERDEF_04, .operands={0})\nRABBITIZER_DEF_INSTR_ID(cpu, , USERDEF_05, .operands={0})\nRABBITIZER_DEF_INSTR_ID(cpu, , USERDEF_06, .operands={0})\nRABBITIZER_DEF_INSTR_ID(cpu, , USERDEF_07, .operands={0})\nRABBITIZER_DEF_INSTR_ID(cpu, , USERDEF_08, .operands={0})\nRABBITIZER_DEF_INSTR_ID(cpu, , USERDEF_09, .operands={0})\nRABBITIZER_DEF_INSTR_ID(cpu, , USERDEF_10, .operands={0})\nRABBITIZER_DEF_INSTR_ID(cpu, , USERDEF_11, .operands={0})\nRABBITIZER_DEF_INSTR_ID(cpu, , USERDEF_12, .operands={0})\nRABBITIZER_DEF_INSTR_ID(cpu, , USERDEF_13, .operands={0})\nRABBITIZER_DEF_INSTR_ID(cpu, , USERDEF_14, .operands={0})\nRABBITIZER_DEF_INSTR_ID(cpu, , USERDEF_15, .operands={0})\nRABBITIZER_DEF_INSTR_ID(cpu, , USERDEF_16, .operands={0})\nRABBITIZER_DEF_INSTR_ID(cpu, , USERDEF_17, .operands={0})\nRABBITIZER_DEF_INSTR_ID(cpu, , USERDEF_18, .operands={0})\nRABBITIZER_DEF_INSTR_ID(cpu, , USERDEF_19, .operands={0})\n\nRABBITIZER_DEF_INSTR_ID(cpu, , MAX, .operands={0})\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/instr_id/RabbitizerInstrId_r5900.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\nRABBITIZER_DEF_INSTR_ID(r5900, , INVALID,     .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .architectureVersion=-1)\n\n#include \"instructions/instr_id/r5900/r5900_normal.inc\"\n#include \"instructions/instr_id/r5900/r5900_special.inc\"\n#include \"instructions/instr_id/r5900/r5900_regimm.inc\"\n\n#include \"instructions/instr_id/r5900/r5900_mmi.inc\"\n#include \"instructions/instr_id/r5900/r5900_mmi_0.inc\"\n#include \"instructions/instr_id/r5900/r5900_mmi_1.inc\"\n#include \"instructions/instr_id/r5900/r5900_mmi_2.inc\"\n#include \"instructions/instr_id/r5900/r5900_mmi_3.inc\"\n\n#include \"instructions/instr_id/r5900/r5900_cop0_tlb.inc\"\n\n#include \"instructions/instr_id/r5900/r5900_cop1_fpu_s.inc\"\n\n#include \"instructions/instr_id/r5900/r5900_cop2.inc\"\n#include \"instructions/instr_id/r5900/r5900_cop2_bc2.inc\"\n#include \"instructions/instr_id/r5900/r5900_cop2_special1.inc\"\n#include \"instructions/instr_id/r5900/r5900_cop2_special2.inc\"\n\nRABBITIZER_DEF_INSTR_ID(r5900, , USERDEF_00, .operands={0})\nRABBITIZER_DEF_INSTR_ID(r5900, , USERDEF_01, .operands={0})\nRABBITIZER_DEF_INSTR_ID(r5900, , USERDEF_02, .operands={0})\nRABBITIZER_DEF_INSTR_ID(r5900, , USERDEF_03, .operands={0})\nRABBITIZER_DEF_INSTR_ID(r5900, , USERDEF_04, .operands={0})\nRABBITIZER_DEF_INSTR_ID(r5900, , USERDEF_05, .operands={0})\nRABBITIZER_DEF_INSTR_ID(r5900, , USERDEF_06, .operands={0})\nRABBITIZER_DEF_INSTR_ID(r5900, , USERDEF_07, .operands={0})\nRABBITIZER_DEF_INSTR_ID(r5900, , USERDEF_08, .operands={0})\nRABBITIZER_DEF_INSTR_ID(r5900, , USERDEF_09, .operands={0})\nRABBITIZER_DEF_INSTR_ID(r5900, , USERDEF_10, .operands={0})\nRABBITIZER_DEF_INSTR_ID(r5900, , USERDEF_11, .operands={0})\nRABBITIZER_DEF_INSTR_ID(r5900, , USERDEF_12, .operands={0})\nRABBITIZER_DEF_INSTR_ID(r5900, , USERDEF_13, .operands={0})\nRABBITIZER_DEF_INSTR_ID(r5900, , USERDEF_14, .operands={0})\nRABBITIZER_DEF_INSTR_ID(r5900, , USERDEF_15, .operands={0})\nRABBITIZER_DEF_INSTR_ID(r5900, , USERDEF_16, .operands={0})\nRABBITIZER_DEF_INSTR_ID(r5900, , USERDEF_17, .operands={0})\nRABBITIZER_DEF_INSTR_ID(r5900, , USERDEF_18, .operands={0})\nRABBITIZER_DEF_INSTR_ID(r5900, , USERDEF_19, .operands={0})\n\nRABBITIZER_DEF_INSTR_ID(r5900, , MAX, .operands={0})\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/instr_id/RabbitizerInstrId_rsp.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n// RSP instructions\nRABBITIZER_DEF_INSTR_ID(rsp, , INVALID,               .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh})\n\n#include \"instructions/instr_id/rsp/rsp_cop2.inc\"\n#include \"instructions/instr_id/rsp/rsp_cop2_vu.inc\"\n\n#include \"instructions/instr_id/rsp/rsp_normal_lwc2.inc\"\n#include \"instructions/instr_id/rsp/rsp_normal_swc2.inc\"\n\n// CPU instructions but with rsp registers\n\n#include \"instructions/instr_id/rsp/rsp_normal.inc\"\n#include \"instructions/instr_id/rsp/rsp_special.inc\"\n#include \"instructions/instr_id/rsp/rsp_regimm.inc\"\n#include \"instructions/instr_id/rsp/rsp_cop0.inc\"\n\nRABBITIZER_DEF_INSTR_ID(rsp, , USERDEF_00, .operands={0})\nRABBITIZER_DEF_INSTR_ID(rsp, , USERDEF_01, .operands={0})\nRABBITIZER_DEF_INSTR_ID(rsp, , USERDEF_02, .operands={0})\nRABBITIZER_DEF_INSTR_ID(rsp, , USERDEF_03, .operands={0})\nRABBITIZER_DEF_INSTR_ID(rsp, , USERDEF_04, .operands={0})\nRABBITIZER_DEF_INSTR_ID(rsp, , USERDEF_05, .operands={0})\nRABBITIZER_DEF_INSTR_ID(rsp, , USERDEF_06, .operands={0})\nRABBITIZER_DEF_INSTR_ID(rsp, , USERDEF_07, .operands={0})\nRABBITIZER_DEF_INSTR_ID(rsp, , USERDEF_08, .operands={0})\nRABBITIZER_DEF_INSTR_ID(rsp, , USERDEF_09, .operands={0})\nRABBITIZER_DEF_INSTR_ID(rsp, , USERDEF_10, .operands={0})\nRABBITIZER_DEF_INSTR_ID(rsp, , USERDEF_11, .operands={0})\nRABBITIZER_DEF_INSTR_ID(rsp, , USERDEF_12, .operands={0})\nRABBITIZER_DEF_INSTR_ID(rsp, , USERDEF_13, .operands={0})\nRABBITIZER_DEF_INSTR_ID(rsp, , USERDEF_14, .operands={0})\nRABBITIZER_DEF_INSTR_ID(rsp, , USERDEF_15, .operands={0})\nRABBITIZER_DEF_INSTR_ID(rsp, , USERDEF_16, .operands={0})\nRABBITIZER_DEF_INSTR_ID(rsp, , USERDEF_17, .operands={0})\nRABBITIZER_DEF_INSTR_ID(rsp, , USERDEF_18, .operands={0})\nRABBITIZER_DEF_INSTR_ID(rsp, , USERDEF_19, .operands={0})\n\nRABBITIZER_DEF_INSTR_ID(rsp, , MAX, .operands={0})\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/instr_id/cpu/cpu_cop0.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n// OP rt, cop0d\nRABBITIZER_DEF_INSTR_ID(cpu, 0x00, mfc0,                          .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop0d}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .modifiesRt=true, .notEmitedByCompilers=true)      // Move word From CP0\nRABBITIZER_DEF_INSTR_ID(cpu, 0x01, dmfc0,                         .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop0d}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .modifiesRt=true)     // Doubleword Move From CP0\nRABBITIZER_DEF_INSTR_ID(cpu, 0x02, cfc0,                          .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop0d}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .modifiesRt=true)      // Move control word From CP0\nRABBITIZER_DEF_INSTR_ID(cpu, 0x04, mtc0,                          .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop0d}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .notEmitedByCompilers=true)      // Move word to CP0\nRABBITIZER_DEF_INSTR_ID(cpu, 0x05, dmtc0,                         .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop0d}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN)     // Doubleword Move To CP0\nRABBITIZER_DEF_INSTR_ID(cpu, 0x06, ctc0,                          .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop0d}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN)      // Move control word To CP0\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/instr_id/cpu/cpu_cop0_bc0.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n// OP IMM\nRABBITIZER_DEF_INSTR_ID(cpu, 0x00, bc0f,    .operands={RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isBranch=true)      // Branch on FP False\nRABBITIZER_DEF_INSTR_ID(cpu, 0x01, bc0t,    .operands={RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isBranch=true)      // Branch on FP True\nRABBITIZER_DEF_INSTR_ID(cpu, 0x02, bc0fl,   .operands={RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isBranch=true, .isBranchLikely=true)     // Branch on FP False Likely\nRABBITIZER_DEF_INSTR_ID(cpu, 0x03, bc0tl,   .operands={RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isBranch=true, .isBranchLikely=true)     // Branch on FP True Likely\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/instr_id/cpu/cpu_cop0_tlb.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n// OP\nRABBITIZER_DEF_INSTR_ID(cpu, 0x01, tlbr,    .operands={0}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .notEmitedByCompilers=true)      // Read Indexed TLB Entry\nRABBITIZER_DEF_INSTR_ID(cpu, 0x02, tlbwi,   .operands={0}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .notEmitedByCompilers=true)     // Write Indexed TLB Entry\n\nRABBITIZER_DEF_INSTR_ID(cpu, 0x06, tlbwr,   .operands={0}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN)     // Write Random TLB Entry\n\nRABBITIZER_DEF_INSTR_ID(cpu, 0x08, tlbp,    .operands={0}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .notEmitedByCompilers=true)      // Probe TLB for Matching Entry\n\nRABBITIZER_DEF_INSTR_ID(cpu, 0x18, eret,    .operands={0}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .notEmitedByCompilers=true)      // Return from Exception\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/instr_id/cpu/cpu_cop1.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n// OP rt, fs\nRABBITIZER_DEF_INSTR_ID(cpu, 0x00, mfc1,    .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true, .modifiesRt=true)      // Move Word From Floating-Point\nRABBITIZER_DEF_INSTR_ID(cpu, 0x01, dmfc1,   .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true, .modifiesRt=true)     // Doubleword Move From Floating-Point\nRABBITIZER_DEF_INSTR_ID(cpu, 0x04, mtc1,    .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)      // Move Word to Floating-Point\nRABBITIZER_DEF_INSTR_ID(cpu, 0x05, dmtc1,   .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)     // Doubleword Move To Floating-Point\n\n// OP rt, cop1cs\nRABBITIZER_DEF_INSTR_ID(cpu, 0x02, cfc1,    .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop1cs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true, .modifiesRt=true)      // Move Control Word from Floating-Point\nRABBITIZER_DEF_INSTR_ID(cpu, 0x06, ctc1,    .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_cop1cs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)      // Move Control Word to Floating-Point\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/instr_id/cpu/cpu_cop1_bc1.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n// OP IMM\nRABBITIZER_DEF_INSTR_ID(cpu, 0x00, bc1f,    .operands={RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isBranch=true)\nRABBITIZER_DEF_INSTR_ID(cpu, 0x01, bc1t,    .operands={RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isBranch=true)\nRABBITIZER_DEF_INSTR_ID(cpu, 0x02, bc1fl,   .operands={RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isBranch=true, .isBranchLikely=true)\nRABBITIZER_DEF_INSTR_ID(cpu, 0x03, bc1tl,   .operands={RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isBranch=true, .isBranchLikely=true)\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/instr_id/cpu/cpu_cop1_fpu_d.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n// OP fd, fs, ft\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x00, add_d, add.d,          .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)        // Floating-Point Add\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x01, sub_d, sub.d,          .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)     // Floating-Point Sub\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x02, mul_d, mul.d,          .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)     // Floating-Point Multiply\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x03, div_d, div.d,          .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)     // Floating-Point Divide\n\n// OP fd, fs\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x04, sqrt_d, sqrt.d,        .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)    // Floating-Point Square Root\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x05, abs_d, abs.d,          .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)     // Floating-Point Absolute Value\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x06, mov_d, mov.d,          .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)     // Floating-Point Move\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x07, neg_d, neg.d,          .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)     // Floating-Point Negate\n\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x08, round_l_d, round.l.d,  .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true) // Floating-Point Round to Long Fixed-Point\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x09, trunc_l_d, trunc.l.d,  .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true) // Floating-Point Truncate to Long Fixed-Point\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x0A, ceil_l_d, ceil.l.d,    .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)  // Floating-Point Ceiling Convert to Long Fixed-Point\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x0B, floor_l_d, floor.l.d,  .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true) // Floating-Point Floor Convert to Long Fixed-Point\n\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x0C, round_w_d, round.w.d,  .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true) // Floating-Point Round to Word Fixed-Point\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x0D, trunc_w_d, trunc.w.d,  .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true) // Floating-Point Truncate to Word Fixed-Point\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x0E, ceil_w_d, ceil.w.d,    .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)  // Floating-Point Ceiling Convert to Word Fixed-Point\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x0F, floor_w_d, floor.w.d,  .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true) // Floating-Point Floor Convert to Word Fixed-Point\n\n// OP fd, fs\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x20, cvt_s_d, cvt.s.d,      .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true, .isDouble=true)\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x24, cvt_w_d, cvt.w.d,      .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true, .isDouble=true)\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x25, cvt_l_d, cvt.l.d,      .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true, .isDouble=true)\n\n// OP fs, ft\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x30, c_f_d, c.f.d,          .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x31, c_un_d, c.un.d,        .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x32, c_eq_d, c.eq.d,        .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x33, c_ueq_d, c.ueq.d,      .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x34, c_olt_d, c.olt.d,      .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x35, c_ult_d, c.ult.d,      .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x36, c_ole_d, c.ole.d,      .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x37, c_ule_d, c.ule.d,      .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)\n\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x38, c_df_d, c.df.d,        .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x39, c_ngle_d, c.ngle.d,    .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x3A, c_deq_d, c.deq.d,      .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x3B, c_ngl_d, c.ngl.d,      .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x3C, c_lt_d, c.lt.d,        .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x3D, c_nge_d, c.nge.d,      .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x3E, c_le_d, c.le.d,        .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x3F, c_ngt_d, c.ngt.d,      .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/instr_id/cpu/cpu_cop1_fpu_l.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n// OP fd, fs\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x20, cvt_s_l, cvt.s.l,    .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x21, cvt_d_l, cvt.d.l,    .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true, .isDouble=true)\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/instr_id/cpu/cpu_cop1_fpu_s.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n// OP fd, fs, ft\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x00, add_s, add.s,          .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)        // Floating-Point Add\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x01, sub_s, sub.s,          .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)     // Floating-Point Sub\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x02, mul_s, mul.s,          .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)     // Floating-Point Multiply\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x03, div_s, div.s,          .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)     // Floating-Point Divide\n\n// OP fd, fs\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x04, sqrt_s, sqrt.s,        .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)    // Floating-Point Square Root\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x05, abs_s, abs.s,          .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)     // Floating-Point Absolute Value\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x06, mov_s, mov.s,          .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)     // Floating-Point Move\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x07, neg_s, neg.s,          .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)     // Floating-Point Negate\n\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x08, round_l_s, round.l.s,  .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true) // Floating-Point Round to Long Fixed-Point\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x09, trunc_l_s, trunc.l.s,  .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true) // Floating-Point Truncate to Long Fixed-Point\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x0A, ceil_l_s, ceil.l.s,    .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)  // Floating-Point Ceiling Convert to Long Fixed-Point\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x0B, floor_l_s, floor.l.s,  .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true) // Floating-Point Floor Convert to Long Fixed-Point\n\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x0C, round_w_s, round.w.s,  .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true) // Floating-Point Round to Word Fixed-Point\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x0D, trunc_w_s, trunc.w.s,  .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true) // Floating-Point Truncate to Word Fixed-Point\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x0E, ceil_w_s, ceil.w.s,    .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)  // Floating-Point Ceiling Convert to Word Fixed-Point\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x0F, floor_w_s, floor.w.s,  .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true) // Floating-Point Floor Convert to Word Fixed-Point\n\n// OP fd, fs\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x21, cvt_d_s, cvt.d.s,      .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true, .isDouble=true)\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x24, cvt_w_s, cvt.w.s,      .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x25, cvt_l_s, cvt.l.s,      .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)\n\n// OP fs, ft\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x30, c_f_s, c.f.s,          .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x31, c_un_s, c.un.s,        .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x32, c_eq_s, c.eq.s,        .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x33, c_ueq_s, c.ueq.s,      .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x34, c_olt_s, c.olt.s,      .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x35, c_ult_s, c.ult.s,      .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x36, c_ole_s, c.ole.s,      .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x37, c_ule_s, c.ule.s,      .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)\n\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x38, c_sf_s, c.sf.s,        .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x39, c_ngle_s, c.ngle.s,    .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x3A, c_seq_s, c.seq.s,      .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x3B, c_ngl_s, c.ngl.s,      .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x3C, c_lt_s, c.lt.s,        .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x3D, c_nge_s, c.nge.s,      .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x3E, c_le_s, c.le.s,        .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x3F, c_ngt_s, c.ngt.s,      .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/instr_id/cpu/cpu_cop1_fpu_w.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n// OP fd, fs\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x20, cvt_s_w, cvt.s.w,    .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true)\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, 0x21, cvt_d_w, cvt.d.w,    .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .isFloat=true, .isDouble=true)\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/instr_id/cpu/cpu_normal.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n// OP LABEL\nRABBITIZER_DEF_INSTR_ID(cpu, 0x02, j,       .operands={RAB_OPERAND_cpu_label}, .instrType=RABBITIZER_INSTR_TYPE_J, .isJump=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)         // Jump\nRABBITIZER_DEF_INSTR_ID(cpu, 0x03, jal,     .operands={RAB_OPERAND_cpu_label}, .instrType=RABBITIZER_INSTR_TYPE_J, .isJump=true, .doesLink=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)       // Jump And Link\n\n// OP rs, rt, IMM\nRABBITIZER_DEF_INSTR_ID(cpu, 0x04, beq,     .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_I, .isBranch=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)       // Branch on EQual\nRABBITIZER_DEF_INSTR_ID(cpu, 0x05, bne,     .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_I, .isBranch=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)       // Branch on Not Equal\nRABBITIZER_DEF_INSTR_ID(cpu, 0x14, beql,    .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_I, .isBranch=true, .isBranchLikely=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_II)      // Branch on EQual Likely\nRABBITIZER_DEF_INSTR_ID(cpu, 0x15, bnel,    .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_I, .isBranch=true, .isBranchLikely=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_II)      // Branch on Not Equal Likely\n\n// OP rs, IMM\nRABBITIZER_DEF_INSTR_ID(cpu, 0x06, blez,    .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_I, .isBranch=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)      // Branch on Less than or Equal to Zero\nRABBITIZER_DEF_INSTR_ID(cpu, 0x16, blezl,   .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_I, .isBranch=true, .isBranchLikely=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_II)     // Branch on Less than or Equal to Zero Likely\nRABBITIZER_DEF_INSTR_ID(cpu, 0x07, bgtz,    .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_I, .isBranch=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)      // Branch on Greater Than Zero\nRABBITIZER_DEF_INSTR_ID(cpu, 0x17, bgtzl,   .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_I, .isBranch=true, .isBranchLikely=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_II)     // Branch on Greater Than Zero Likely\n\n// OP rt, rs, IMM\nRABBITIZER_DEF_INSTR_ID(cpu, 0x08, addi,    .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .notEmitedByCompilers=true, .canBeLo=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)      // Add Immediate\nRABBITIZER_DEF_INSTR_ID(cpu, 0x09, addiu,   .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .canBeLo=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)     // Add Immediate Unsigned Word\nRABBITIZER_DEF_INSTR_ID(cpu, 0x0A, slti,    .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)      // Set on Less Than Immediate\nRABBITIZER_DEF_INSTR_ID(cpu, 0x0B, sltiu,   .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)     // Set on Less Than Immediate Unsigned\nRABBITIZER_DEF_INSTR_ID(cpu, 0x0C, andi,    .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_I, .isUnsigned=true, .modifiesRt=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)      // And Immediate\nRABBITIZER_DEF_INSTR_ID(cpu, 0x0D, ori,     .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_I, .isUnsigned=true, .modifiesRt=true, .canBeLo=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)       // Or Immediate\nRABBITIZER_DEF_INSTR_ID(cpu, 0x0E, xori,    .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_I, .isUnsigned=true, .modifiesRt=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)      // eXclusive OR Immediate\nRABBITIZER_DEF_INSTR_ID(cpu, 0x18, daddi,   .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .canBeLo=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_III)     // Doubleword add Immediate\nRABBITIZER_DEF_INSTR_ID(cpu, 0x19, daddiu,  .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .canBeLo=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_III)    // Doubleword add Immediate Unsigned\n\n// OP rt, IMM\nRABBITIZER_DEF_INSTR_ID(cpu, 0x0F, lui,     .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_I, .isUnsigned=true, .modifiesRt=true, .canBeHi=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)       // Load Upper Immediate\n\n// OP rt, IMM(base)\nRABBITIZER_DEF_INSTR_ID(cpu, 0x1A, ldl,     .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .canBeLo=true, .doesDereference=true, .doesLoad=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_III)       // Load Doubleword Left\nRABBITIZER_DEF_INSTR_ID(cpu, 0x1B, ldr,     .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .canBeLo=true, .doesDereference=true, .doesLoad=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_III)       // Load Doubleword Right\nRABBITIZER_DEF_INSTR_ID(cpu, 0x20, lb,      .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .canBeLo=true, .doesDereference=true, .doesLoad=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)        // Load Byte\nRABBITIZER_DEF_INSTR_ID(cpu, 0x21, lh,      .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .canBeLo=true, .doesDereference=true, .doesLoad=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)        // Load Halfword\nRABBITIZER_DEF_INSTR_ID(cpu, 0x22, lwl,     .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .canBeLo=true, .doesDereference=true, .doesLoad=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)       // Load Word Left\nRABBITIZER_DEF_INSTR_ID(cpu, 0x23, lw,      .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .canBeLo=true, .doesDereference=true, .doesLoad=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)        // Load Word\nRABBITIZER_DEF_INSTR_ID(cpu, 0x24, lbu,     .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .canBeLo=true, .doesDereference=true, .doesLoad=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)       // Load Byte Insigned\nRABBITIZER_DEF_INSTR_ID(cpu, 0x25, lhu,     .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .canBeLo=true, .doesDereference=true, .doesLoad=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)       // Load Halfword Unsigned\nRABBITIZER_DEF_INSTR_ID(cpu, 0x26, lwr,     .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .canBeLo=true, .doesDereference=true, .doesLoad=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)       // Load Word Right\nRABBITIZER_DEF_INSTR_ID(cpu, 0x27, lwu,     .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .canBeLo=true, .doesDereference=true, .doesLoad=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_III)       // Load Word Unsigned\nRABBITIZER_DEF_INSTR_ID(cpu, 0x28, sb,      .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .canBeLo=true, .doesDereference=true, .doesStore=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)        // Store Byte\nRABBITIZER_DEF_INSTR_ID(cpu, 0x29, sh,      .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .canBeLo=true, .doesDereference=true, .doesStore=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)        // Store Halfword\nRABBITIZER_DEF_INSTR_ID(cpu, 0x2A, swl,     .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .canBeLo=true, .doesDereference=true, .doesStore=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)       // Store Word Left\nRABBITIZER_DEF_INSTR_ID(cpu, 0x2B, sw,      .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .canBeLo=true, .doesDereference=true, .doesStore=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)        // Store Word\nRABBITIZER_DEF_INSTR_ID(cpu, 0x2C, sdl,     .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .canBeLo=true, .doesDereference=true, .doesStore=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_III)       // Store Doubleword Left\nRABBITIZER_DEF_INSTR_ID(cpu, 0x2D, sdr,     .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .canBeLo=true, .doesDereference=true, .doesStore=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_III)       // Store Doubleword Right\nRABBITIZER_DEF_INSTR_ID(cpu, 0x2E, swr,     .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .canBeLo=true, .doesDereference=true, .doesStore=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)       // Store Word Right\nRABBITIZER_DEF_INSTR_ID(cpu, 0x30, ll,      .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .canBeLo=true, .doesDereference=true, .doesLoad=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_II)        // Load Linked word\nRABBITIZER_DEF_INSTR_ID(cpu, 0x33, pref,    .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .canBeLo=true, .doesDereference=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_IV)      // Prefetch\nRABBITIZER_DEF_INSTR_ID(cpu, 0x34, lld,     .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .canBeLo=true, .doesDereference=true, .doesLoad=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_III)       // Load Linked Doubleword\nRABBITIZER_DEF_INSTR_ID(cpu, 0x37, ld,      .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .canBeLo=true, .doesDereference=true, .doesLoad=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_III)        // Load Doubleword\nRABBITIZER_DEF_INSTR_ID(cpu, 0x38, sc,      .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .canBeLo=true, .doesDereference=true, .doesStore=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_II)        // Store Conditional word\nRABBITIZER_DEF_INSTR_ID(cpu, 0x3C, scd,     .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .canBeLo=true, .doesDereference=true, .doesStore=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_III)       // Store Conditional Doubleword\nRABBITIZER_DEF_INSTR_ID(cpu, 0x3F, sd,      .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .canBeLo=true, .doesDereference=true, .doesStore=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_III)        // Store Doubleword\n\n// OP op, IMM(base)\nRABBITIZER_DEF_INSTR_ID(cpu, 0x2F, cache,   .operands={RAB_OPERAND_cpu_op, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .notEmitedByCompilers=true)     // Cache\n\n// OP ft, IMM(base)\nRABBITIZER_DEF_INSTR_ID(cpu, 0x31, lwc1,    .operands={RAB_OPERAND_cpu_ft, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .isFloat=true, .canBeLo=true, .doesDereference=true, .doesLoad=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)      // Load Word to Coprocessor z\nRABBITIZER_DEF_INSTR_ID(cpu, 0x35, ldc1,    .operands={RAB_OPERAND_cpu_ft, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .isFloat=true, .isDouble=true, .canBeLo=true, .doesDereference=true, .doesLoad=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_II)      // Load Doubleword to Coprocessor z\nRABBITIZER_DEF_INSTR_ID(cpu, 0x39, swc1,    .operands={RAB_OPERAND_cpu_ft, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .isFloat=true, .canBeLo=true, .doesDereference=true, .doesStore=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)      // Store Word from Coprocessor z\nRABBITIZER_DEF_INSTR_ID(cpu, 0x3D, sdc1,    .operands={RAB_OPERAND_cpu_ft, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .isFloat=true, .isDouble=true, .canBeLo=true, .doesDereference=true, .doesStore=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_II)      // Store Doubleword from Coprocessor z\n\n// OP cop2t, IMM(base)\nRABBITIZER_DEF_INSTR_ID(cpu, 0x32, lwc2,    .operands={RAB_OPERAND_cpu_cop2t, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .canBeLo=true, .doesDereference=true, .doesLoad=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)      // Load Word to Coprocessor z\nRABBITIZER_DEF_INSTR_ID(cpu, 0x36, ldc2,    .operands={RAB_OPERAND_cpu_cop2t, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .canBeLo=true, .doesDereference=true, .doesLoad=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_II)      // Load Doubleword to Coprocessor z\nRABBITIZER_DEF_INSTR_ID(cpu, 0x3A, swc2,    .operands={RAB_OPERAND_cpu_cop2t, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .canBeLo=true, .doesDereference=true, .doesStore=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)      // Store Word from Coprocessor z\nRABBITIZER_DEF_INSTR_ID(cpu, 0x3E, sdc2,    .operands={RAB_OPERAND_cpu_cop2t, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .canBeLo=true, .doesDereference=true, .doesStore=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_II)      // Store Doubleword from Coprocessor z\n\n\n// Pseudo-Instruction Unique IDs\n\n// OP IMM\nRABBITIZER_DEF_INSTR_ID(cpu, -0x03, b,      .operands={RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_I, .isBranch=true, .isPseudo=true)         // Branch (unconditional)\n\n// OP rs, IMM\nRABBITIZER_DEF_INSTR_ID(cpu, -0x04, beqz,   .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_I, .isBranch=true, .isPseudo=true)      // Branch on EQual Zero\nRABBITIZER_DEF_INSTR_ID(cpu, -0x05, bnez,   .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_I, .isBranch=true, .isPseudo=true)      // Branch on Not Equal Zero\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/instr_id/cpu/cpu_regimm.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n// OP rs, IMM\nRABBITIZER_DEF_INSTR_ID(cpu, 0x00, bltz,    .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isBranch=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)      // Branch on Less Than Zero\nRABBITIZER_DEF_INSTR_ID(cpu, 0x01, bgez,    .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isBranch=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)      // Branch on Greater than or Equal to Zero\nRABBITIZER_DEF_INSTR_ID(cpu, 0x02, bltzl,   .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isBranch=true, .isBranchLikely=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_II)     // Branch on Less Than Zero Likely\nRABBITIZER_DEF_INSTR_ID(cpu, 0x03, bgezl,   .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isBranch=true, .isBranchLikely=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_II)     // Branch on Greater than or Equal to Zero Likely\n\nRABBITIZER_DEF_INSTR_ID(cpu, 0x08, tgei,    .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isTrap=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_II)\nRABBITIZER_DEF_INSTR_ID(cpu, 0x09, tgeiu,   .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isTrap=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_II)\nRABBITIZER_DEF_INSTR_ID(cpu, 0x0A, tlti,    .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isTrap=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_II)\nRABBITIZER_DEF_INSTR_ID(cpu, 0x0B, tltiu,   .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isTrap=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_II)\nRABBITIZER_DEF_INSTR_ID(cpu, 0x0C, teqi,    .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isTrap=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_II)\nRABBITIZER_DEF_INSTR_ID(cpu, 0x0E, tnei,    .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isTrap=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_II)\n\nRABBITIZER_DEF_INSTR_ID(cpu, 0x10, bltzal,  .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isBranch=true, .doesLink=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I) // Branch on Less Than Zero and Link\nRABBITIZER_DEF_INSTR_ID(cpu, 0x11, bgezal,  .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isBranch=true, .doesLink=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I) // Branch on Greater Than or Equal to Zero and Link\nRABBITIZER_DEF_INSTR_ID(cpu, 0x12, bltzall, .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isBranch=true, .isBranchLikely=true, .doesLink=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_II) // Branch on Less Than Zero and Link Likely\nRABBITIZER_DEF_INSTR_ID(cpu, 0x13, bgezall, .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isBranch=true, .isBranchLikely=true, .doesLink=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_II) // Branch on Greater Than or Equal to Zero and Link Likely\n\n\n// Pseudo-Instruction Unique IDs\n\nRABBITIZER_DEF_INSTR_ID(cpu, -0x11, bal,    .operands={RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isBranch=true, .doesLink=true, .isPseudo=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I) // Branch and Link\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/instr_id/cpu/cpu_special.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n// OP rd, rt, sa\nRABBITIZER_DEF_INSTR_ID(cpu, 0x00, sll,                         .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)       // Shift word Left Logical\nRABBITIZER_DEF_INSTR_ID(cpu, 0x02, srl,                         .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)       // Shift word Right Logical\nRABBITIZER_DEF_INSTR_ID(cpu, 0x03, sra,                         .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)       // Shift word Right Arithmetic\nRABBITIZER_DEF_INSTR_ID(cpu, 0x38, dsll,                        .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_III)      // Doubleword Shift Left Logical\nRABBITIZER_DEF_INSTR_ID(cpu, 0x3A, dsrl,                        .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_III)      // Doubleword Shift Right Logical\nRABBITIZER_DEF_INSTR_ID(cpu, 0x3B, dsra,                        .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_III)      // Doubleword Shift Right Arithmetic\nRABBITIZER_DEF_INSTR_ID(cpu, 0x3C, dsll32,                      .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_III)    // Doubleword Shift Left Logical plus 32\nRABBITIZER_DEF_INSTR_ID(cpu, 0x3E, dsrl32,                      .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_III)    // Doubleword Shift Right Logical plus 32\nRABBITIZER_DEF_INSTR_ID(cpu, 0x3F, dsra32,                      .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_III)    // Doubleword Shift Right Arithmetic plus 32\n\n// OP rd, rt, rs\nRABBITIZER_DEF_INSTR_ID(cpu, 0x14, dsllv,                       .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_III)     // Doubleword Shift Left Logical Variable\nRABBITIZER_DEF_INSTR_ID(cpu, 0x16, dsrlv,                       .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_III)     // Doubleword Shift Right Logical Variable\nRABBITIZER_DEF_INSTR_ID(cpu, 0x17, dsrav,                       .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_III)     // Doubleword Shift Right Arithmetic Variable\nRABBITIZER_DEF_INSTR_ID(cpu, 0x04, sllv,                        .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)      // Shift word Left Logical Variable\nRABBITIZER_DEF_INSTR_ID(cpu, 0x06, srlv,                        .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)      // Shift word Right Logical Variable\nRABBITIZER_DEF_INSTR_ID(cpu, 0x07, srav,                        .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)      // Shift word Right Arithmetic Variable\n\n// OP rs\nRABBITIZER_DEF_INSTR_ID(cpu, 0x11, mthi,                        .operands={RAB_OPERAND_cpu_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I) // Move To HI register\nRABBITIZER_DEF_INSTR_ID(cpu, 0x13, mtlo,                        .operands={RAB_OPERAND_cpu_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)      // Move To LO register\nRABBITIZER_DEF_INSTR_ID(cpu, 0x08, jr,                          .operands={RAB_OPERAND_cpu_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .isJump=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)                        // Jump Register\nRABBITIZER_DEF_INSTR_ID(cpu, 0x09, jalr,                        .operands={RAB_OPERAND_cpu_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .isJump=true, .modifiesRd=true, .doesLink=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)      // Jump And Link Register\n\n// OP rd, rs\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, -0x09, jalr_rd, jalr,      .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .isJump=true, .modifiesRd=true, .doesLink=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)   // Jump And Link Register // Special case for rd != 31\n\n// OP rd\nRABBITIZER_DEF_INSTR_ID(cpu, 0x10, mfhi,                        .operands={RAB_OPERAND_cpu_rd}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)      // Move From HI register\nRABBITIZER_DEF_INSTR_ID(cpu, 0x12, mflo,                        .operands={RAB_OPERAND_cpu_rd}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)      // Move From LO register\n\n// OP rd, rs, rt\nRABBITIZER_DEF_INSTR_ID(cpu, 0x0A, movz,                        .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_IV)      // MOVe conditional on Zero\nRABBITIZER_DEF_INSTR_ID(cpu, 0x0B, movn,                        .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_IV)      // MOVe conditional on Not zero\nRABBITIZER_DEF_INSTR_ID(cpu, 0x1A, div,                         .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)       // DIVide word\nRABBITIZER_DEF_INSTR_ID(cpu, 0x1B, divu,                        .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)      // DIVide Unsigned word\n\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, -0x1A, sn64_div, div,      .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)  // DIVide word\nRABBITIZER_DEF_INSTR_ID_ALTNAME(cpu, -0x1B, sn64_divu, divu,    .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I) // DIVide Unsigned word\n\nRABBITIZER_DEF_INSTR_ID(cpu, 0x1E, ddiv,                        .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_III)      // Doubleword DIVide\nRABBITIZER_DEF_INSTR_ID(cpu, 0x1F, ddivu,                       .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_III)     // Doubleword DIVide Unsigned\n// RABBITIZER_DEF_INSTR_ID(cpu, , ddiv,                          .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_III)\n// RABBITIZER_DEF_INSTR_ID(cpu, , ddivu,                         .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_III)\nRABBITIZER_DEF_INSTR_ID(cpu, 0x20, add,                         .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .notEmitedByCompilers=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)       // ADD word\nRABBITIZER_DEF_INSTR_ID(cpu, 0x21, addu,                        .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .maybeIsMove=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)      // ADD Unsigned word\nRABBITIZER_DEF_INSTR_ID(cpu, 0x22, sub,                         .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)       // Subtract word\nRABBITIZER_DEF_INSTR_ID(cpu, 0x23, subu,                        .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)      // SUBtract Unsigned word\nRABBITIZER_DEF_INSTR_ID(cpu, 0x24, and,                         .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)       // AND\nRABBITIZER_DEF_INSTR_ID(cpu, 0x25, or,                          .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .maybeIsMove=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)        // OR\nRABBITIZER_DEF_INSTR_ID(cpu, 0x26, xor,                         .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)       // eXclusive OR\nRABBITIZER_DEF_INSTR_ID(cpu, 0x27, nor,                         .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)       // Not OR\nRABBITIZER_DEF_INSTR_ID(cpu, 0x2A, slt,                         .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)       // Set on Less Than\nRABBITIZER_DEF_INSTR_ID(cpu, 0x2B, sltu,                        .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)      // Set on Less Than Unsigned\nRABBITIZER_DEF_INSTR_ID(cpu, 0x2C, dadd,                        .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_III)      // Doubleword Add\nRABBITIZER_DEF_INSTR_ID(cpu, 0x2D, daddu,                       .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .maybeIsMove=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_III)     // Doubleword Add Unsigned\nRABBITIZER_DEF_INSTR_ID(cpu, 0x2E, dsub,                        .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_III)      // Doubleword SUBtract\nRABBITIZER_DEF_INSTR_ID(cpu, 0x2F, dsubu,                       .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_III)     // Doubleword SUBtract Unsigned\n\n// OP code\nRABBITIZER_DEF_INSTR_ID(cpu, 0x0C, syscall,                     .operands={RAB_OPERAND_cpu_code}, .instrType=RABBITIZER_INSTR_TYPE_R, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)   // SYStem CALL\nRABBITIZER_DEF_INSTR_ID(cpu, 0x0D, break,                       .operands={RAB_OPERAND_cpu_code}, .instrType=RABBITIZER_INSTR_TYPE_R, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)     // Break\nRABBITIZER_DEF_INSTR_ID(cpu, 0x0F, sync,                        .operands={0}, .instrType=RABBITIZER_INSTR_TYPE_R, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_II)      // Sync\n\n// OP rs, rt\nRABBITIZER_DEF_INSTR_ID(cpu, 0x18, mult,                        .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)      // MULTtiply word\nRABBITIZER_DEF_INSTR_ID(cpu, 0x19, multu,                       .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)     // MULTtiply Unsigned word\nRABBITIZER_DEF_INSTR_ID(cpu, 0x1C, dmult,                       .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_III)     // Doubleword MULTiply\nRABBITIZER_DEF_INSTR_ID(cpu, 0x1D, dmultu,                      .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_III)    // Doubleword MULTiply Unsigned\n\nRABBITIZER_DEF_INSTR_ID(cpu, 0x30, tge,                         .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_code_lower}, .instrType=RABBITIZER_INSTR_TYPE_R, .isTrap=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_II)       // Trap if Greater or Equal\nRABBITIZER_DEF_INSTR_ID(cpu, 0x31, tgeu,                        .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_code_lower}, .instrType=RABBITIZER_INSTR_TYPE_R, .isTrap=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_II)      // Trap if Greater or Equal Unsigned\nRABBITIZER_DEF_INSTR_ID(cpu, 0x32, tlt,                         .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_code_lower}, .instrType=RABBITIZER_INSTR_TYPE_R, .isTrap=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_II)       // Trap if Less Than\nRABBITIZER_DEF_INSTR_ID(cpu, 0x33, tltu,                        .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_code_lower}, .instrType=RABBITIZER_INSTR_TYPE_R, .isTrap=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_II)      // Trap if Less Than Unsigned\nRABBITIZER_DEF_INSTR_ID(cpu, 0x34, teq,                         .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_code_lower}, .instrType=RABBITIZER_INSTR_TYPE_R, .isTrap=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_II)       // Trap if EQual\nRABBITIZER_DEF_INSTR_ID(cpu, 0x36, tne,                         .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_code_lower}, .instrType=RABBITIZER_INSTR_TYPE_R, .isTrap=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_II)       // Trap if Not Equal\n\n\n// Pseudo-Instruction Unique IDs\n\n// OP\nRABBITIZER_DEF_INSTR_ID(cpu, -0x01, nop,                        .operands={0}, .instrType=RABBITIZER_INSTR_TYPE_R, .isPseudo=true)       // No OPeration\n\n// OP rd, rs\nRABBITIZER_DEF_INSTR_ID(cpu, -0x25, move,                       .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .maybeIsMove=true, .isPseudo=true)      // Move\nRABBITIZER_DEF_INSTR_ID(cpu, -0x27, not,                        .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .isPseudo=true)       // Not\n\n// OP rd, rt\nRABBITIZER_DEF_INSTR_ID(cpu, -0x23, negu,                       .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .isPseudo=true)\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/instr_id/r5900/r5900_cop0_tlb.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n/*\n    31--------26-25------21--------------------------------5--------0\n    |  = COP0   |   TLB   |                                |  fmt   |\n    ------6----------5-----------------------------------------------\n    |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--| lo\n000 | ---   |  TLBR | TLBWI |  ---  |  ---  |  ---  | TLBWR |  ---  |\n001 | TLBP  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n010 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n011 | ERET  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n100 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n101 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n110 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n111 |  EI   |  DI   |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n hi |-------|-------|-------|-------|-------|-------|-------|-------|\n*/\n\n// The other instructions are implemented using the main CPU table\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x38, ei,    .operands={0})\nRABBITIZER_DEF_INSTR_ID(r5900, 0x39, di,    .operands={0})\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/instr_id/r5900/r5900_cop1_fpu_s.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n/*\n    31--------26-25------21 -------------------------------5--------0\n    |  = COP1   |  = S    |                               | function|\n    ------6----------5-----------------------------------------6-----\n    |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--| lo\n000 | ADD.S | SUB.S | MUL.S | DIV.S | SQRT.S| ABS.S | MOV.S | NEG.S |\n001 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  | ---   |\n010 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |RSQRT.S|  ---  |\n011 | ADDA.S| SUBA.S| MULA.S|  ---  | MADD.S| MSUB.S|MADDA.S|MSUBA.S|\n100 |  ---  | ---   |  ---  |  ---  | CVT.W |  ---  |  ---  |  ---  |\n101 | MAX.S | MIN.S |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n110 | C.F   | ---   | C.EQ  |  ---  | C.LT  |  ---  |  C.LE |  ---  |\n111 | ---   | ---   |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n hi |-------|-------|-------|-------|-------|-------|-------|-------|\n*/\n\n// The other instructions are implemented using the main CPU table\n\nRABBITIZER_DEF_INSTR_ID_ALTNAME(r5900, 0x04, c1__sqrt_s, c1,    .operands={RAB_OPERAND_cpu_copraw})\n\nRABBITIZER_DEF_INSTR_ID_ALTNAME(r5900, 0x16, rsqrt_s, rsqrt.s,  .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .isFloat=true) // floating point Reciprocal SQuare RooT\n\nRABBITIZER_DEF_INSTR_ID_ALTNAME(r5900, 0x18, adda_s, adda.s,    .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .isFloat=true) // floating point ADD to Accumulator\nRABBITIZER_DEF_INSTR_ID_ALTNAME(r5900, 0x19, suba_s, suba.s,    .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .isFloat=true) // floating point SUBtract to Accumulator\nRABBITIZER_DEF_INSTR_ID_ALTNAME(r5900, 0x1A, mula_s, mula.s,    .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .isFloat=true) // floating point MULtiply to Accumulator\n\nRABBITIZER_DEF_INSTR_ID_ALTNAME(r5900, 0x1C, madd_s, madd.s,    .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .isFloat=true) // floating point Multiply-ADD\nRABBITIZER_DEF_INSTR_ID_ALTNAME(r5900, 0x1D, msub_s, msub.s,    .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .isFloat=true) // floating point Multiply abd SUBtract\nRABBITIZER_DEF_INSTR_ID_ALTNAME(r5900, 0x1E, madda_s, madda.s,  .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .isFloat=true) // floating point Multiply-ADD Accumulator\nRABBITIZER_DEF_INSTR_ID_ALTNAME(r5900, 0x1F, msuba_s, msuba.s,  .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .isFloat=true) // floating point Multiply SUBtract from Accumulator\n\nRABBITIZER_DEF_INSTR_ID_ALTNAME(r5900, 0x28, max_s, max.s,      .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .isFloat=true) // floating point MAXimum\nRABBITIZER_DEF_INSTR_ID_ALTNAME(r5900, 0x29, min_s, min.s,      .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .isFloat=true) // floating point MINimum\n\n// Due to the R5900's FPU being non properly complaint the instruction cvt.w.s always behaves as trunc.w.s because is because EE can only do round-to-zero.\n// Assemblers like GAS workaround this issue by decoding cvt.w.s as trunc.w.s, so we mimic that behaviour to allow assembling with GAS.\n// Here's some reading about the binutils rationale:\n// https://sourceware.org/legacy-ml/binutils/2012-11/msg00360.html\n// https://sourceware.org/pipermail/binutils/2013-January/079863.html\nRABBITIZER_DEF_INSTR_ID_ALTNAME(r5900, 0x24, trunc_w_s, trunc.w.s,  .operands={RAB_OPERAND_cpu_fd, RAB_OPERAND_cpu_fs}, .isFloat=true) // Floating-Point Truncate to Word Fixed-Point\n\nRABBITIZER_DEF_INSTR_ID_ALTNAME(r5900, 0x34, c_lt_s, c.lt.s,        .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .isFloat=true)\nRABBITIZER_DEF_INSTR_ID_ALTNAME(r5900, 0x36, c_le_s, c.le.s,        .operands={RAB_OPERAND_cpu_fs, RAB_OPERAND_cpu_ft}, .isFloat=true)\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/instr_id/r5900/r5900_cop2.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n/*\n    31--------26-25------21 ----------------------------------------0\n    |  = COP2   |   fmt   |                                         |\n    ------6----------5-----------------------------------------------\n    |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--| lo\n 00 |  ---  | QMFC2 | CFC2  |  ---  |  ---  | QMTC2 | CTC2  |  ---  |\n 01 | *1    |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n 10 | *2    | *2    | *2    | *2    | *2    | *2    | *2    | *2    |\n 11 | *2    | *2    | *2    | *2    | *2    | *2    | *2    | *2    |\n hi |-------|-------|-------|-------|-------|-------|-------|-------|\n     *1 = BC instructions, see BC2 list   *2 =see special1 table\n*/\n\n// TODO: properties\nRABBITIZER_DEF_INSTR_ID(r5900, 0x01, qmfc2, .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_r5900_vfs})\nRABBITIZER_DEF_INSTR_ID(r5900, 0x02, cfc2,  .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_r5900_vis})\nRABBITIZER_DEF_INSTR_ID(r5900, 0x05, qmtc2, .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_r5900_vfs})\nRABBITIZER_DEF_INSTR_ID(r5900, 0x06, ctc2,  .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_r5900_vis})\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/instr_id/r5900/r5900_cop2_bc2.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n/*\n    31--------26-25------21-20------16------------------------------0\n    |  = COP0   |   BC2   |   fmt   |                               |\n    ------6----------5----------5------------------------------------\n    |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--| lo\n 00 | BC2F  | BC2T  | BC2FL | BC2TL |  ---  |  ---  |  ---  |  ---  |\n 01 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n 10 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n 11 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n hi |-------|-------|-------|-------|-------|-------|-------|-------|\n*/\n\n// TODO: operands and properties\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x00, bc2f,  .operands={RAB_OPERAND_cpu_branch_target_label}, .isBranch=true)\nRABBITIZER_DEF_INSTR_ID(r5900, 0x01, bc2t,  .operands={RAB_OPERAND_cpu_branch_target_label}, .isBranch=true)\nRABBITIZER_DEF_INSTR_ID(r5900, 0x02, bc2fl, .operands={RAB_OPERAND_cpu_branch_target_label}, .isBranch=true, .isBranchLikely=true)\nRABBITIZER_DEF_INSTR_ID(r5900, 0x03, bc2tl, .operands={RAB_OPERAND_cpu_branch_target_label}, .isBranch=true, .isBranchLikely=true)\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/instr_id/r5900/r5900_cop2_special1.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n/*\n    31---------26-25-----21-20-----------------------------5--------0\n    |  =COP2   | Special1 |                                |function|\n    ------6----------5------------------------------------------6----\n    |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--| lo\n000 |VADDx  |VADDy  |VADDz  |VADDw  |VSUBx  |VSUBy  |VSUBz  |VSUBw  |\n001 |VMADDx |VMADDy |VMADDz |VMADDw |VMSUBx |VMSUBy |VMSUBz |VMSUBw |\n010 |VMAXx  |VMAXy  |VMAXz  |VMAXw  |VMINIx |VMINIy |VMINIz |VMINIw |\n011 |VMULx  |VMULy  |VMULz  |VMULw  |VMULq  |VMAXi  |VMULi  |VMINIi |\n100 |VADDq  |VMADDq |VADDi  |VMADDi |VSUBq  |VMSUBq |VSUbi  |VMSUBi |\n101 |VADD   |VMADD  |VMUL   |VMAX   |VSUB   |VMSUB  |VOPMSUB|VMINI  |\n110 |VIADD  |VISUB  |VIADDI |  ---  |VIAND  |VIOR   |  ---  |  ---  |\n111 |VCALLMS|VCALLMSR| ---  |  ---  |  *1   |  *1   |  *1   |  *1   |\n hi |-------|-------|-------|-------|-------|-------|-------|-------|\n    *1=see special2 table\n*/\n\n// TODO: properties\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x00, vaddx,     .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // ADD broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x01, vaddy,     .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // ADD broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x02, vaddz,     .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // ADD broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x03, vaddw,     .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // ADD broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x04, vsubx,     .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // SUBtract broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x05, vsuby,     .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // SUBtract broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x06, vsubz,     .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // SUBtract broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x07, vsubw,     .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // SUBtract broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x08, vmaddx,    .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Multiply-ADD broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x09, vmaddy,    .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Multiply-ADD broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x0A, vmaddz,    .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Multiply-ADD broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x0B, vmaddw,    .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Multiply-ADD broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x0C, vmsubx,    .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Multiply-SUBtract broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x0D, vmsuby,    .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Multiply-SUBtract broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x0E, vmsubz,    .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Multiply-SUBtract broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x0F, vmsubw,    .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Multiply-SUBtract broadcast\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x10, vmaxx,     .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // MAXimum broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x11, vmaxy,     .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // MAXimum broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x12, vmaxz,     .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // MAXimum broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x13, vmaxw,     .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // MAXimum broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x14, vminix,    .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // MINimum broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x15, vminiy,    .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // MINimum broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x16, vminiz,    .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // MINimum broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x17, vminiw,    .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // MINimum broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x18, vmulx,     .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // MULtiply broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x19, vmuly,     .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // MULtiply broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x1A, vmulz,     .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // MULtiply broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x1B, vmulw,     .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // MULtiply broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x1C, vmulq,     .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // MULtiply Q\nRABBITIZER_DEF_INSTR_ID(r5900, 0x1D, vmaxi,     .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // MAXimum I\nRABBITIZER_DEF_INSTR_ID(r5900, 0x1E, vmuli,     .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // MULtiply I\nRABBITIZER_DEF_INSTR_ID(r5900, 0x1F, vminii,    .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // MINImum I\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x20, vaddq,     .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // ADD Q\nRABBITIZER_DEF_INSTR_ID(r5900, 0x21, vmaddq,    .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Multiply-ADD Q\nRABBITIZER_DEF_INSTR_ID(r5900, 0x22, vaddi,     .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // ADD I\nRABBITIZER_DEF_INSTR_ID(r5900, 0x23, vmaddi,    .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Multiply-ADD I\nRABBITIZER_DEF_INSTR_ID(r5900, 0x24, vsubq,     .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // SUBtract Q\nRABBITIZER_DEF_INSTR_ID(r5900, 0x25, vmsubq,    .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Multiply-SUBtract Q\nRABBITIZER_DEF_INSTR_ID(r5900, 0x26, vsubi,     .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // SUBtract I\nRABBITIZER_DEF_INSTR_ID(r5900, 0x27, vmsubi,    .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Multiply-SUBtract I\nRABBITIZER_DEF_INSTR_ID(r5900, 0x28, vadd,      .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // ADD\nRABBITIZER_DEF_INSTR_ID(r5900, 0x29, vmadd,     .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Multiply-ADD\nRABBITIZER_DEF_INSTR_ID(r5900, 0x2A, vmul,      .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // MULtiply\nRABBITIZER_DEF_INSTR_ID(r5900, 0x2B, vmax,      .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // MAXimum\nRABBITIZER_DEF_INSTR_ID(r5900, 0x2C, vsub,      .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // SUBtract\nRABBITIZER_DEF_INSTR_ID(r5900, 0x2D, vmsub,     .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Multiply-SUBtract\nRABBITIZER_DEF_INSTR_ID(r5900, 0x2E, vopmsub,   .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Outer product post decrement\nRABBITIZER_DEF_INSTR_ID(r5900, 0x2F, vmini,     .operands={RAB_OPERAND_r5900_vfdxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // MINImum\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x30, viadd,     .operands={RAB_OPERAND_r5900_vid, RAB_OPERAND_r5900_vis, RAB_OPERAND_r5900_vit}) // Integer ADD\nRABBITIZER_DEF_INSTR_ID(r5900, 0x31, visub,     .operands={RAB_OPERAND_r5900_vid, RAB_OPERAND_r5900_vis, RAB_OPERAND_r5900_vit}) // Integer SUBtract\nRABBITIZER_DEF_INSTR_ID(r5900, 0x32, viaddi,    .operands={RAB_OPERAND_r5900_vit, RAB_OPERAND_r5900_vis, RAB_OPERAND_r5900_immediate5}) // Integer ADD Immediate\nRABBITIZER_DEF_INSTR_ID(r5900, 0x34, viand,     .operands={RAB_OPERAND_r5900_vid, RAB_OPERAND_r5900_vis, RAB_OPERAND_r5900_vit}) // Integer AND\nRABBITIZER_DEF_INSTR_ID(r5900, 0x35, vior,      .operands={RAB_OPERAND_r5900_vid, RAB_OPERAND_r5900_vis, RAB_OPERAND_r5900_vit}) // Integer OR\n\n// TODO: operands and properties\nRABBITIZER_DEF_INSTR_ID(r5900, 0x38, vcallms,   .operands={0})\nRABBITIZER_DEF_INSTR_ID(r5900, 0x39, vcallmsr,  .operands={RAB_OPERAND_r5900_vis})\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/instr_id/r5900/r5900_cop2_special2.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n/*\n    31---------26-25-----21-20------------------11-10------6-5-2-1--0\n    |  =COP2   | Special2 |                        |  fhi  |1111|flo|\n    ------6----------5-----------------------------------------------\nNote: opcode is flo | (fhi * 4).\n     |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--| lo\n0000 |VADDAx |VADDAy |VADDAz |VADDAw |VSUBAx |VSUBAy |VSUBAz |VSUBAw |\n0001 |VMADDAx|VMADDAy|VMADDAz|VMADDAw|VMSUBAx|VMSUBAy|VMSUBAz|VMSUBAw|\n0010 |VITOF0 |VITOF4 |VITOF12|VITOF15|VFTOI0 |VFTOI4 |VFTOI12|VFTOI15|\n0011 |VMULAx |VMULAy |VMULAz |VMULAw |VMULAq |VABS   |VMULAi |VCLIPw |\n0100 |VADDAq |VMADDAq|VADDAi |VMADDAi|VSUBAq |VMSUBAq|VSUBAi |VMSUBAi|\n0101 |VADDA  |VMADDA |VMULA  |  ---  |VSUBA  |VMSUBA |VOPMULA|VNOP   |\n0110 |VMOVE  |VMR32  |  ---  |  ---  |VLQI   |VSQI   |VLQD   |VSQD   |\n0111 |VDIV   |VSQRT  |VRSQRT |VWAITQ |VMTIR  |VMFIR  |VILWR  |VISWR  |\n1000 |VRNEXT |VRGET  |VRINIT |VRXOR  |  ---  |  ---  |  ---  |  ---  |\n1001 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n1010 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n1011 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n1100 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n1101 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n1110 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n1111 |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n hi  |-------|-------|-------|-------|-------|-------|-------|-------|\n*/\n\n// TODO: operands and properties\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x00, vaddax,    .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Add accumulator broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x01, vadday,    .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Add accumulator broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x02, vaddaz,    .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Add accumulator broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x03, vaddaw,    .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Add accumulator broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x04, vsubax,    .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Multiply and substract accumulator broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x05, vsubay,    .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Multiply and substract accumulator broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x06, vsubaz,    .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Multiply and substract accumulator broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x07, vsubaw,    .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Multiply and substract accumulator broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x08, vmaddax,   .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw) // Multiply and add accumulator broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x09, vmadday,   .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw) // Multiply and add accumulator broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x0A, vmaddaz,   .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw) // Multiply and add accumulator broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x0B, vmaddaw,   .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw) // Multiply and add accumulator broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x0C, vmsubax,   .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Multiply and substract accumulator broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x0D, vmsubay,   .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Multiply and substract accumulator broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x0E, vmsubaz,   .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Multiply and substract accumulator broadcast\nRABBITIZER_DEF_INSTR_ID(r5900, 0x0F, vmsubaw,   .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Multiply and substract accumulator broadcast\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x10, vitof0,    .operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Integer to floating point\nRABBITIZER_DEF_INSTR_ID(r5900, 0x11, vitof4,    .operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Integer to floating point\nRABBITIZER_DEF_INSTR_ID(r5900, 0x12, vitof12,   .operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Integer to floating point\nRABBITIZER_DEF_INSTR_ID(r5900, 0x13, vitof15,   .operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Integer to floating point\nRABBITIZER_DEF_INSTR_ID(r5900, 0x14, vftoi0,    .operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Floating to integer\nRABBITIZER_DEF_INSTR_ID(r5900, 0x15, vftoi4,    .operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Floating to integer\nRABBITIZER_DEF_INSTR_ID(r5900, 0x16, vftoi12,   .operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Floating to integer\nRABBITIZER_DEF_INSTR_ID(r5900, 0x17, vftoi15,   .operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Floating to integer\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x18, vmulax,    .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw)\nRABBITIZER_DEF_INSTR_ID(r5900, 0x19, vmulay,    .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw)\nRABBITIZER_DEF_INSTR_ID(r5900, 0x1A, vmulaz,    .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw)\nRABBITIZER_DEF_INSTR_ID(r5900, 0x1B, vmulaw,    .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw)\n// TODO\nRABBITIZER_DEF_INSTR_ID(r5900, 0x1C, vmulaq,    .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw)\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x1D, vabs,      .operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Absolute\n\n// TODO\nRABBITIZER_DEF_INSTR_ID(r5900, 0x1E, vmulai,    .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw)\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x1F, vclipw,    .operands={RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftn}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Clip\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x20, vaddaq,    .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Add accumulator Q\nRABBITIZER_DEF_INSTR_ID(r5900, 0x21, vmaddaq,   .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Multiply and add accumulator Q\nRABBITIZER_DEF_INSTR_ID(r5900, 0x22, vaddai,    .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Add accumulator I\nRABBITIZER_DEF_INSTR_ID(r5900, 0x23, vmaddai,   .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Multiply and add accumulator I\nRABBITIZER_DEF_INSTR_ID(r5900, 0x24, vsubaq,    .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Subtract accumulator Q\nRABBITIZER_DEF_INSTR_ID(r5900, 0x25, vmsubaq,   .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_Q}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Multiply and Subtract accumulator Q\nRABBITIZER_DEF_INSTR_ID(r5900, 0x26, vsubai,    .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Subtract accumulator I\nRABBITIZER_DEF_INSTR_ID(r5900, 0x27, vmsubai,   .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_I}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Multiply and Subtract accumulator I\nRABBITIZER_DEF_INSTR_ID(r5900, 0x28, vadda,     .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Add accumulator\nRABBITIZER_DEF_INSTR_ID(r5900, 0x29, vmadda,    .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Multiply and add accumulator\n\n// TODO\nRABBITIZER_DEF_INSTR_ID(r5900, 0x2A, vmula,     .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw)\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x2C, vsuba,     .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true)\nRABBITIZER_DEF_INSTR_ID(r5900, 0x2D, vmsuba,    .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Multiply and substract accumulator\nRABBITIZER_DEF_INSTR_ID(r5900, 0x2E, vopmula,   .operands={RAB_OPERAND_r5900_ACCxyzw, RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vftxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Outer product pre increment\nRABBITIZER_DEF_INSTR_ID(r5900, 0x2F, vnop,      .operands={0}) // No operation\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x30, vmove,     .operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Move floating point registers\nRABBITIZER_DEF_INSTR_ID(r5900, 0x31, vmr32,     .operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vfsxyzw}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Move and rotate per word\nRABBITIZER_DEF_INSTR_ID(r5900, 0x34, vlqi,      .operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vis_postincr}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Load quadraword post increment\nRABBITIZER_DEF_INSTR_ID(r5900, 0x35, vsqi,      .operands={RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vit_postincr}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Store quadraword post increment\nRABBITIZER_DEF_INSTR_ID(r5900, 0x36, vlqd,      .operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vis_predecr}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Load quadraword pre decrement\nRABBITIZER_DEF_INSTR_ID(r5900, 0x37, vsqd,      .operands={RAB_OPERAND_r5900_vfsxyzw, RAB_OPERAND_r5900_vit_predecr}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Store quadraword pre decrement\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x38, vdiv,      .operands={RAB_OPERAND_r5900_Q, RAB_OPERAND_r5900_vfsl, RAB_OPERAND_r5900_vftm})\nRABBITIZER_DEF_INSTR_ID(r5900, 0x39, vsqrt,     .operands={RAB_OPERAND_r5900_Q, RAB_OPERAND_r5900_vftm})\nRABBITIZER_DEF_INSTR_ID(r5900, 0x3A, vrsqrt,    .operands={RAB_OPERAND_r5900_Q, RAB_OPERAND_r5900_vfsl,RAB_OPERAND_r5900_vftm})\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x3B, vwaitq,    .operands={0}) // Wait Q operation\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x3C, vmtir,     .operands={RAB_OPERAND_r5900_vit, RAB_OPERAND_r5900_vfsl})\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x3D, vmfir,     .operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_vis}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // Move from integer register\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x3E, vilwr,     .operands={RAB_OPERAND_r5900_vit, RAB_OPERAND_r5900_vis}, .isFloat=true, .doesDereference=true, .doesLoad=true) // Integer load word register\nRABBITIZER_DEF_INSTR_ID(r5900, 0x3F, viswr,     .operands={RAB_OPERAND_r5900_vit, RAB_OPERAND_r5900_vis}, .isFloat=true, .doesDereference=true, .doesStore=true) // Integer store word register\n/*\n\"vilwr.w\",\t\tRAB_OPERAND_r5900_vit,(RAB_OPERAND_r5900_vis)\n\"vilwr.x\",\t\tRAB_OPERAND_r5900_vit,(RAB_OPERAND_r5900_vis)\n\"vilwr.y\",\t\tRAB_OPERAND_r5900_vit,(RAB_OPERAND_r5900_vis)\n\"vilwr.z\",\t\tRAB_OPERAND_r5900_vit,(RAB_OPERAND_r5900_vis)\n\"viswr.w\",\t\tRAB_OPERAND_r5900_vit,(RAB_OPERAND_r5900_vis)\n\"viswr.x\",\t\tRAB_OPERAND_r5900_vit,(RAB_OPERAND_r5900_vis)\n\"viswr.y\",\t\tRAB_OPERAND_r5900_vit,(RAB_OPERAND_r5900_vis)\n\"viswr.z\",\t\tRAB_OPERAND_r5900_vit,(RAB_OPERAND_r5900_vis)\n*/\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x40, vrnext,    .operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_R}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // R next\nRABBITIZER_DEF_INSTR_ID(r5900, 0x41, vrget,     .operands={RAB_OPERAND_r5900_vftxyzw, RAB_OPERAND_r5900_R}, .instrSuffix=RABINSTRSUFFIX_R5900_xyzw, .isFloat=true) // R move\n\n// TODO\nRABBITIZER_DEF_INSTR_ID(r5900, 0x42, vrinit,    .operands={RAB_OPERAND_r5900_R, RAB_OPERAND_r5900_vfsl})\nRABBITIZER_DEF_INSTR_ID(r5900, 0x43, vrxor,     .operands={RAB_OPERAND_r5900_R, RAB_OPERAND_r5900_vfsl})\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/instr_id/r5900/r5900_mmi.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n/*\n    31---------26------------------------------------------5--------0\n    | = MMI     |                                         | function|\n    ------6----------------------------------------------------6-----\n    |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--| lo\n000 | MADD  | MADDU |  ---  |  ---  | PLZCW |  ---  |  ---  |  ---  |\n001 |  *1   |  *2   |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n010 | MFHI1 | MTHI1 | MFLO1 | MTLO1 |  ---  |  ---  |  ---  |  ---  |\n011 | MULT1 | MULTU1| DIV1  | DIVU1 |  ---  |  ---  |  ---  |  ---  |\n100 | MADD1 | MADDU1|  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n101 |  *3   |  *4   |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n110 | PMFHL | PMTHL |  ---  |  ---  | PSLLH |  ---  | PSRLH | PSRAH |\n111 |  ---  |  ---  |  ---  |  ---  | PSLLW |  ---  | PSRLW | PSRAW |\n hi |-------|-------|-------|-------|-------|-------|-------|-------|\n     *1 = MMI0 list                    *2 = MMI2 list\n     *3 = MMI1 list                    *4 = MMI3 list\n*/\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x00, madd,      .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Multiply-ADD word\nRABBITIZER_DEF_INSTR_ID(r5900, 0x01, maddu,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Multiply-ADD Unsigned word\nRABBITIZER_DEF_INSTR_ID(r5900, 0x04, plzcw,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs}, .modifiesRd=true) // Parallel Leading Zero or one Count Word\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x10, mfhi1,     .operands={RAB_OPERAND_cpu_rd}, .modifiesRd=true) // Move From HI1 register\nRABBITIZER_DEF_INSTR_ID(r5900, 0x11, mthi1,     .operands={RAB_OPERAND_cpu_rs}) // Move To HI1 register\nRABBITIZER_DEF_INSTR_ID(r5900, 0x12, mflo1,     .operands={RAB_OPERAND_cpu_rd}) // Move From LO1 register\nRABBITIZER_DEF_INSTR_ID(r5900, 0x13, mtlo1,     .operands={RAB_OPERAND_cpu_rs}) // Move To LO1 register\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x18, mult1,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // MULTiply word pipeline 1\nRABBITIZER_DEF_INSTR_ID(r5900, 0x19, multu1,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // MULTiply Unsigned word pipeline 1\nRABBITIZER_DEF_INSTR_ID(r5900, 0x1A, div1,      .operands={RAB_OPERAND_cpu_zero, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}) // DIVide word pipeline 1\nRABBITIZER_DEF_INSTR_ID(r5900, 0x1B, divu1,     .operands={RAB_OPERAND_cpu_zero, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}) // DIVide Unsigned word pipeline 1\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x20, madd1,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Multiply-ADD word pipeline 1\nRABBITIZER_DEF_INSTR_ID(r5900, 0x21, maddu1,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Multiply-ADD Unsigned word pipeline 1\n\n// TODO: check this two instruction, it is supposed to have an extra .fmt\nRABBITIZER_DEF_INSTR_ID(r5900, 0x30, pmfhl,     .operands={RAB_OPERAND_cpu_rd}, .modifiesRd=true) // Parallel Move From Hi/Lo register\nRABBITIZER_DEF_INSTR_ID(r5900, 0x31, pmthl,     .operands={RAB_OPERAND_cpu_rs}) // Parallel Move To Hi/Lo register\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x34, psllh,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa}, .modifiesRd=true) // Parallel Shift Left Logical Halfword\nRABBITIZER_DEF_INSTR_ID(r5900, 0x36, psrlh,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa}, .modifiesRd=true) // Parallel Shift Right Logical Halfword\nRABBITIZER_DEF_INSTR_ID(r5900, 0x37, psrah,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa}, .modifiesRd=true) // Parallel Shift Right Arithmetic Halfword\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x3C, psllw,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa}, .modifiesRd=true) // Parallel Shift Left Logical Word\nRABBITIZER_DEF_INSTR_ID(r5900, 0x3E, psrlw,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa}, .modifiesRd=true) // Parallel Shift Right Logical Word\nRABBITIZER_DEF_INSTR_ID(r5900, 0x3F, psraw,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_sa}, .modifiesRd=true) // Parallel Shift Right Arithmetic Word\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/instr_id/r5900/r5900_mmi_0.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n/*\n    31---------26------------------------------10--------6-5--------0\n    |          |                              |function  |   MMI0   |\n    ------6----------------------------------------------------6-----\n    |---00--|---01--|---10--|---11--| lo\n000 |PADDW  | PSUBW | PCGTW | PMAXW |\n001 |PADDH  | PSUBH | PCGTH | PMAXH |\n010 |PADDB  | PSUBB | PCGTB |  ---  |\n011 | ---   | ---   |  ---  |  ---  |\n100 |PADDSW |PSUBSW |PEXTLW | PPACW |\n101 |PADDSH |PSUBSH |PEXTLH | PPACH |\n110 |PADDSB |PSUBSB |PEXTLB | PPACB |\n111 | ---   |  ---  | PEXT5 | PPAC5 |\n hi |-------|-------|-------|-------|\n*/\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x00, paddw,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel ADD Word\nRABBITIZER_DEF_INSTR_ID(r5900, 0x01, psubw,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel SUBtract Word\nRABBITIZER_DEF_INSTR_ID(r5900, 0x02, pcgtw,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel Compare for Greater Than Word\nRABBITIZER_DEF_INSTR_ID(r5900, 0x03, pmaxw,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel MAXimum Word\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x04, paddh,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel ADD Halfword\nRABBITIZER_DEF_INSTR_ID(r5900, 0x05, psubh,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel SUBtract Halfword\nRABBITIZER_DEF_INSTR_ID(r5900, 0x06, pcgth,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel Compare for Greater Than Halfword\nRABBITIZER_DEF_INSTR_ID(r5900, 0x07, pmaxh,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel MAXimum Halfword\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x08, paddb,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel ADD Byte\nRABBITIZER_DEF_INSTR_ID(r5900, 0x09, psubb,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel SUBtract Byte\nRABBITIZER_DEF_INSTR_ID(r5900, 0x0A, pcgtb,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel Compare for Greater Than Byte\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x10, paddsw,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel ADD with Signed saturation Word\nRABBITIZER_DEF_INSTR_ID(r5900, 0x11, psubsw,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel SUBtract with Signed saturation Word\nRABBITIZER_DEF_INSTR_ID(r5900, 0x12, pextlw,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel EXTend Lower from Word\nRABBITIZER_DEF_INSTR_ID(r5900, 0x13, ppacw,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel PACk to Word\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x14, paddsh,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel ADD with Signed saturation Halfword\nRABBITIZER_DEF_INSTR_ID(r5900, 0x15, psubsh,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel SUBtract with Signed saturation Halfword\nRABBITIZER_DEF_INSTR_ID(r5900, 0x16, pextlh,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel EXTend Lower from Halfword\nRABBITIZER_DEF_INSTR_ID(r5900, 0x17, ppach,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel PACk to Halfword\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x18, paddsb,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel ADD with Signed saturation Bytes\nRABBITIZER_DEF_INSTR_ID(r5900, 0x19, psubsb,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel SUBtract with Signed saturation Bytes\nRABBITIZER_DEF_INSTR_ID(r5900, 0x1A, pextlb,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel EXTend Lower from Bytes\nRABBITIZER_DEF_INSTR_ID(r5900, 0x1B, ppacb,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel PACk to Bytes\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x1E, pext5,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel EXTend from 5-bits\nRABBITIZER_DEF_INSTR_ID(r5900, 0x1F, ppac5,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel PACk to 5-bits\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/instr_id/r5900/r5900_mmi_1.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n/*\n    31---------26------------------------------------------5--------0\n    |           |                               |function  |  MMI1  |\n    ------6----------------------------------------------------6-----\n    |---00--|---01--|---10--|---11--| lo\n000 |  ---  | PABSW | PCEQW | PMINW |\n001 |PADSBH | PABSH | PCEQH | PMINH |\n010 |  ---  |  ---  | PCEQB |  ---  |\n011 |  ---  |  ---  |  ---  |  ---  |\n100 |PADDUW |PSUBUW |PEXTUW |  ---  |\n101 |PADDUH |PSUBUH |PEXTUH |  ---  |\n110 |PADDUB |PSUBUB |PEXTUB | QFSRV |\n111 |  ---  |  ---  |  ---  |  ---  |\n hi |-------|-------|-------|-------|\n*/\n\n// TODO: operands and properties\nRABBITIZER_DEF_INSTR_ID(r5900, 0x01, pabsw,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel ABSolute Word\nRABBITIZER_DEF_INSTR_ID(r5900, 0x02, pceqw,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel Compare for EQual Word\nRABBITIZER_DEF_INSTR_ID(r5900, 0x03, pminw,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel MINimum Word\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x04, padsbh,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel ADd/SuBtract Halfword\nRABBITIZER_DEF_INSTR_ID(r5900, 0x05, pabsh,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel ABSolute Halfword\nRABBITIZER_DEF_INSTR_ID(r5900, 0x06, pceqh,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel Compare for EQual Halfword\nRABBITIZER_DEF_INSTR_ID(r5900, 0x07, pminh,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel MINimum Halfword\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x0A, pceqb,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel Compare for EQual Byte\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x10, padduw,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel ADD Unsigned saturation Word\nRABBITIZER_DEF_INSTR_ID(r5900, 0x11, psubuw,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel SUBtract Unsigned saturation Word\nRABBITIZER_DEF_INSTR_ID(r5900, 0x12, pextuw,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel EXTend Upper from Word\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x14, padduh,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel ADD Unsigned saturation Halfword\nRABBITIZER_DEF_INSTR_ID(r5900, 0x15, psubuh,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel SUBtract Unsigned saturation Halfword\nRABBITIZER_DEF_INSTR_ID(r5900, 0x16, pextuh,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel EXTend Upper from Halfword\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x18, paddub,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel ADD Unsigned saturation Byte\nRABBITIZER_DEF_INSTR_ID(r5900, 0x19, psubub,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel SUBtract Unsigned saturation Byte\nRABBITIZER_DEF_INSTR_ID(r5900, 0x1A, pextub,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel EXTend Upper from Byte\nRABBITIZER_DEF_INSTR_ID(r5900, 0x1B, qfsrv,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Quadword Funnel Shift Right Variable\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/instr_id/r5900/r5900_mmi_2.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n/*\n    31---------26------------------------------------------5--------0\n    |           |                              |function   |  MMI2  |\n    ------6----------------------------------------------------6-----\n    |---00--|---01--|---10--|---11--| lo\n000 |PMADDW |  ---  |PSLLVW |PSRLVW |\n001 |PMSUBW |  ---  |  ---  |  ---  |\n010 |PMFHI  |PMFLO  |PINTH  |  ---  |\n011 |PMULTW |PDIVW  |PCPYLD |  ---  |\n100 |PMADDH |PHMADH | PAND  |  PXOR |\n101 |PMSUBH |PHMSBH |  ---  |  ---  |\n110 | ---   |  ---  | PEXEH | PREVH |\n111 |PMULTH |PDIVBW | PEXEW |PROT3W |\n hi |-------|-------|-------|-------|\n*/\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x00, pmaddw,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel Multiply-ADD Word\nRABBITIZER_DEF_INSTR_ID(r5900, 0x02, psllvw,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs}, .modifiesRd=true) // Parallel Shift Left Logical Variable Word\nRABBITIZER_DEF_INSTR_ID(r5900, 0x03, psrlvw,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs}, .modifiesRd=true) // Parallel Shift Right Logical Variable Word\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x04, pmsubw,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel Multiply-SUBtract Word\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x08, pmfhi,     .operands={RAB_OPERAND_cpu_rd}, .modifiesRd=true) // Parallel Move From HI register\nRABBITIZER_DEF_INSTR_ID(r5900, 0x09, pmflo,     .operands={RAB_OPERAND_cpu_rd}, .modifiesRd=true) // Parallel Move From LO register\nRABBITIZER_DEF_INSTR_ID(r5900, 0x0A, pinth,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel INTerleave Halfword\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x0C, pmultw,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel MULTiply Word\nRABBITIZER_DEF_INSTR_ID(r5900, 0x0D, pdivw,     .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}) // Parallel DIVide Word\nRABBITIZER_DEF_INSTR_ID(r5900, 0x0E, pcpyld,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel CoPY Lower Doubleword\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x10, pmaddh,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel Multiply-ADD Halfword\nRABBITIZER_DEF_INSTR_ID(r5900, 0x11, phmadh,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel Horizontal Multiply-ADd Halfword\nRABBITIZER_DEF_INSTR_ID(r5900, 0x12, pand,      .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel AND\nRABBITIZER_DEF_INSTR_ID(r5900, 0x13, pxor,      .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel eXclusive OR\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x14, pmsubh,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel Multiply-SUBtract Halfword\nRABBITIZER_DEF_INSTR_ID(r5900, 0x15, phmsbh,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel Horizontal Multiply-Subtract Halfword\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x1A, pexeh,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel EXchange Even Halfword\nRABBITIZER_DEF_INSTR_ID(r5900, 0x1B, prevh,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel REVerse Halfword\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x1C, pmulth,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel Multiply Halfword\nRABBITIZER_DEF_INSTR_ID(r5900, 0x1D, pdivbw,    .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel DIVide Broadcast Word\nRABBITIZER_DEF_INSTR_ID(r5900, 0x1E, pexew,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel EXchange Even Word\nRABBITIZER_DEF_INSTR_ID(r5900, 0x1F, prot3w,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel ROTate 3 Words left\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/instr_id/r5900/r5900_mmi_3.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n/*\n    31---------26------------------------------------------5--------0\n    |           |                               |function  |  MMI3  |\n    ------6----------------------------------------------------6-----\n    |---00--|---01--|---10--|---11--| lo\n000 |PMADDUW|  ---  |  ---  |PSRAVW |\n001 |  ---  |  ---  |  ---  |  ---  |\n010 |PMTHI  | PMTLO |PINTEH |  ---  |\n011 |PMULTUW| PDIVUW|PCPYUD |  ---  |\n100 |  ---  |  ---  |  POR  | PNOR  |\n101 |  ---  |  ---  |  ---  |  ---  |\n110 |  ---  |  ---  | PEXCH | PCPYH |\n111 |  ---  |  ---  | PEXCW |  ---  |\n hi |-------|-------|-------|-------|\n*/\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x00, pmadduw,   .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel Multiply-ADD Unsigned Word\nRABBITIZER_DEF_INSTR_ID(r5900, 0x03, psravw,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_rs}, .modifiesRd=true) // Parallel Shift Right Arithmetic Variable Word\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x08, pmthi,     .operands={RAB_OPERAND_cpu_rs}) // Parallel Move To HI register\nRABBITIZER_DEF_INSTR_ID(r5900, 0x09, pmtlo,     .operands={RAB_OPERAND_cpu_rs}) // Parallel Move To LO register\nRABBITIZER_DEF_INSTR_ID(r5900, 0x0A, pinteh,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel INTerleave Even Halfword\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x0C, pmultuw,   .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel MULTiply Unsigned Word\nRABBITIZER_DEF_INSTR_ID(r5900, 0x0D, pdivuw,    .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}) // Prallel DIVide Unsigned Word\nRABBITIZER_DEF_INSTR_ID(r5900, 0x0E, pcpyud,    .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel CoPY Upper Doubleword\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x12, por,       .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel OR\nRABBITIZER_DEF_INSTR_ID(r5900, 0x13, pnor,      .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel Not OR\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x1A, pexch,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel EXchange Center Halfword\nRABBITIZER_DEF_INSTR_ID(r5900, 0x1B, pcpyh,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel CoPY Halfword\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x1E, pexcw,     .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rt}, .modifiesRd=true) // Parallel EXchange Center Word\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/instr_id/r5900/r5900_normal.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n/*\n    31---------26---------------------------------------------------0\n    |  opcode   |                                                   |\n    ------6----------------------------------------------------------\n    |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--| lo\n000 | *1    | *2    | J     | JAL   | BEQ   | BNE   | BLEZ  | BGTZ  |\n001 | ADDI  | ADDIU | SLTI  | SLTIU | ANDI  | ORI   | XORI  | LUI   |\n010 | *3    | *4    |  *5   | ---   | BEQL  | BNEL  | BLEZL | BGTZL |\n011 | DADDI |DADDIU | LDL   | LDR   |  *6   |  ---  |  LQ   | SQ    |\n100 | LB    | LH    | LWL   | LW    | LBU   | LHU   | LWR   | LWU   |\n101 | SB    | SH    | SWL   | SW    | SDL   | SDR   | SWR   | CACHE |\n110 | ---   | LWC1  | ---   | PREF  | ---   | ---   | LQC2  | LD    |\n111 | ---   | SWC1  | ---   | ---   | ---   | ---   | SQC2  | SD    |\n hi |-------|-------|-------|-------|-------|-------|-------|-------|\n     *1 = SPECIAL, see SPECIAL list    *2 = REGIMM, see REGIMM list\n     *3 = COP0                         *4 = COP1\n     *5 = COP2                         *6 = MMI table\n*/\n\n// The other instructions are implemented using the main CPU table\n\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x1E, lq,    .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .canBeLo=true, .doesDereference=true, .doesLoad=true) // Load Quadword\nRABBITIZER_DEF_INSTR_ID(r5900, 0x1F, sq,    .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_cpu_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .canBeLo=true, .doesDereference=true, .doesStore=true) // Store Quadword\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x36, lqc2,  .operands={RAB_OPERAND_r5900_vft, RAB_OPERAND_cpu_immediate_base}, .canBeLo=true, .doesDereference=true, .doesLoad=true)\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x3E, sqc2,  .operands={RAB_OPERAND_r5900_vft, RAB_OPERAND_cpu_immediate_base}, .canBeLo=true, .doesDereference=true, .doesStore=true)\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/instr_id/r5900/r5900_regimm.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n/*\n    31---------26----------20-------16------------------------------0\n    | = REGIMM  |          |   rt    |                              |\n    ------6---------------------5------------------------------------\n    |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--| lo\n 00 | BLTZ  | BGEZ  | BLTZL | BGEZL |  ---  |  ---  |  ---  |  ---  |\n 01 | TGEI  | TGEIU | TLTI  | TLTIU | TEQI  |  ---  | TNEI  |  ---  |\n 10 | BLTZAL| BGEZAL|BLTZALL|BGEZALL|  ---  |  ---  |  ---  |  ---  |\n 11 | MTSAB | MTSAH |  ---  |  ---  |  ---  |  ---  |  ---  |  ---  |\n hi |-------|-------|-------|-------|-------|-------|-------|-------|\n*/\n\n// The other instructions are implemented using the main CPU table\n\n// OP rs, IMM\nRABBITIZER_DEF_INSTR_ID(r5900, 0x18, mtsab, .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM)\nRABBITIZER_DEF_INSTR_ID(r5900, 0x19, mtsah, .operands={RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM)\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/instr_id/r5900/r5900_special.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n/*\n    31---------26------------------------------------------5--------0\n    | = SPECIAL |                                         | function|\n    ------6----------------------------------------------------6-----\n    |--000--|--001--|--010--|--011--|--100--|--101--|--110--|--111--| lo\n000 | SLL   | ---   | SRL   | SRA   | SLLV  |  ---  | SRLV  | SRAV  |\n001 | JR    | JALR  | MOVZ  | MOVN  |SYSCALL| BREAK |  ---  | SYNC  |\n010 | MFHI  | MTHI  | MFLO  | MTLO  | DSLLV |  ---  | DSRLV | DSRAV |\n011 | MULT  | MULTU | DIV   | DIVU  | ----  |  ---  | ----  | ----- |\n100 | ADD   | ADDU  | SUB   | SUBU  | AND   | OR    | XOR   | NOR   |\n101 | MFSA  | MTSA  | SLT   | SLTU  | DADD  | DADDU | DSUB  | DSUBU |\n110 | TGE   | TGEU  | TLT   | TLTU  | TEQ   |  ---  | TNE   |  ---  |\n111 | DSLL  |  ---  | DSRL  | DSRA  |DSLL32 |  ---  |DSRL32 |DSRA32 |\n hi |-------|-------|-------|-------|-------|-------|-------|-------|\n*/\n\n// The other instructions are implemented using the main CPU table\n\nRABBITIZER_DEF_INSTR_ID_ALTNAME(r5900, -0x0F, sync_p, sync.p,   .operands={0}, .instrType=RABBITIZER_INSTR_TYPE_R, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_II)      // Sync\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x18, mult,                      .operands={RAB_OPERAND_cpu_rd, RAB_OPERAND_cpu_rs, RAB_OPERAND_cpu_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true)      // MULTtiply word\n\nRABBITIZER_DEF_INSTR_ID(r5900, 0x28, mfsa,                      .operands={RAB_OPERAND_cpu_rd}, .modifiesRd=true) // Move From Shift Amount register\nRABBITIZER_DEF_INSTR_ID(r5900, 0x29, mtsa,                      .operands={RAB_OPERAND_cpu_rs}) // Move To Shift Amount register\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/instr_id/rsp/rsp_cop0.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n// OP rt, cop0d\nRABBITIZER_DEF_INSTR_ID(rsp, 0x00, mfc0,    .operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_cop0d}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .modifiesRt=true, .notEmitedByCompilers=true)      // Move word From CP0\nRABBITIZER_DEF_INSTR_ID(rsp, 0x04, mtc0,    .operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_cop0d}, .instrType=RABBITIZER_INSTR_TYPE_UNKNOWN, .notEmitedByCompilers=true)      // Move word to CP0\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/instr_id/rsp/rsp_cop2.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n// OP cop2t, vd[index]\nRABBITIZER_DEF_INSTR_ID(rsp, 0x00, mfc2,    .operands={RAB_OPERAND_rsp_cop2t, RAB_OPERAND_rsp_vs_index}, .modifiesRt=true)\nRABBITIZER_DEF_INSTR_ID(rsp, 0x04, mtc2,    .operands={RAB_OPERAND_rsp_cop2t, RAB_OPERAND_rsp_vs_index})\n\n// OP rt, cop2cd\nRABBITIZER_DEF_INSTR_ID(rsp, 0x02, cfc2,    .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_rsp_cop2cd}, .modifiesRt=true)\nRABBITIZER_DEF_INSTR_ID(rsp, 0x06, ctc2,    .operands={RAB_OPERAND_cpu_rt, RAB_OPERAND_rsp_cop2cd})\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/instr_id/rsp/rsp_cop2_vu.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n// OP vd, vs, vt[elementhigh]\nRABBITIZER_DEF_INSTR_ID(rsp, 0x00, vmulf,                 .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x01, vmulu,                 .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x02, vrndp,                 .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x03, vmulq,                 .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x04, vmudl,                 .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x05, vmudm,                 .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x06, vmudn,                 .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x07, vmudh,                 .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x08, vmacf,                 .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x09, vmacu,                 .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x0A, vrndn,                 .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x0B, vmacq,                 .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x0C, vmadl,                 .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x0D, vmadm,                 .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x0E, vmadn,                 .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x0F, vmadh,                 .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x10, vadd,                  .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x11, vsub,                  .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x13, vabs,                  .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x14, vaddc,                 .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x15, vsubc,                 .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x1D, vsar,                  .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x28, vand,                  .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x29, vnand,                 .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x2A, vor,                   .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x2B, vnor,                  .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x2C, vxor,                  .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x2D, vnxor,                 .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh})\n\nRABBITIZER_DEF_INSTR_ID(rsp, 0x20, vlt,                   .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x21, veq,                   .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x22, vne,                   .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x23, vge,                   .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x24, vcl,                   .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x25, vch,                   .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x26, vcr,                   .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x27, vmrg,                  .operands={RAB_OPERAND_rsp_vd, RAB_OPERAND_rsp_vs, RAB_OPERAND_rsp_vt_elementhigh})\n\n// OP vd[de], vt[elementhigh]\nRABBITIZER_DEF_INSTR_ID(rsp, 0x30, vrcp,                  .operands={RAB_OPERAND_rsp_vd_de, RAB_OPERAND_rsp_vt_elementhigh})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x31, vrcpl,                 .operands={RAB_OPERAND_rsp_vd_de, RAB_OPERAND_rsp_vt_elementhigh}) // operands may be wrong\nRABBITIZER_DEF_INSTR_ID(rsp, 0x32, vrcph,                 .operands={RAB_OPERAND_rsp_vd_de, RAB_OPERAND_rsp_vt_elementhigh})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x33, vmov,                  .operands={RAB_OPERAND_rsp_vd_de, RAB_OPERAND_rsp_vt_elementhigh})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x34, vrsq,                  .operands={RAB_OPERAND_rsp_vd_de, RAB_OPERAND_rsp_vt_elementhigh})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x35, vrsql,                 .operands={RAB_OPERAND_rsp_vd_de, RAB_OPERAND_rsp_vt_elementhigh})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x36, vrsqh,                 .operands={RAB_OPERAND_rsp_vd_de, RAB_OPERAND_rsp_vt_elementhigh})\n\n// OP\nRABBITIZER_DEF_INSTR_ID(rsp, 0x37, vnop,                  .operands={0})\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/instr_id/rsp/rsp_normal.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n// OP LABEL\nRABBITIZER_DEF_INSTR_ID(rsp, 0x02, j,       .operands={RAB_OPERAND_cpu_label}, .instrType=RABBITIZER_INSTR_TYPE_J, .isJump=true)         // Jump\nRABBITIZER_DEF_INSTR_ID(rsp, 0x03, jal,     .operands={RAB_OPERAND_cpu_label}, .instrType=RABBITIZER_INSTR_TYPE_J, .isJump=true, .doesLink=true)       // Jump And Link\n\n// OP rs, rt, IMM\nRABBITIZER_DEF_INSTR_ID(rsp, 0x04, beq,     .operands={RAB_OPERAND_rsp_rs, RAB_OPERAND_rsp_rt, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isBranch=true)       // Branch on EQual\nRABBITIZER_DEF_INSTR_ID(rsp, 0x05, bne,     .operands={RAB_OPERAND_rsp_rs, RAB_OPERAND_rsp_rt, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isBranch=true)       // Branch on Not Equal\n\n// OP rs, IMM\nRABBITIZER_DEF_INSTR_ID(rsp, 0x06, blez,    .operands={RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isBranch=true)      // Branch on Less than or Equal to Zero\nRABBITIZER_DEF_INSTR_ID(rsp, 0x07, bgtz,    .operands={RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isBranch=true)      // Branch on Greater Than Zero\n\n// OP rt, rs, IMM\nRABBITIZER_DEF_INSTR_ID(rsp, 0x08, addi,    .operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .notEmitedByCompilers=true, .canBeLo=true)      // Add Immediate\nRABBITIZER_DEF_INSTR_ID(rsp, 0x09, addiu,   .operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .canBeLo=true)     // Add Immediate Unsigned Word\nRABBITIZER_DEF_INSTR_ID(rsp, 0x0A, slti,    .operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true)      // Set on Less Than Immediate\nRABBITIZER_DEF_INSTR_ID(rsp, 0x0B, sltiu,   .operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true)     // Set on Less Than Immediate Unsigned\nRABBITIZER_DEF_INSTR_ID(rsp, 0x0C, andi,    .operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_I, .isUnsigned=true, .modifiesRt=true)      // And Immediate\nRABBITIZER_DEF_INSTR_ID(rsp, 0x0D, ori,     .operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_I, .isUnsigned=true, .modifiesRt=true, .canBeLo=true)       // Or Immediate\nRABBITIZER_DEF_INSTR_ID(rsp, 0x0E, xori,    .operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_I, .isUnsigned=true, .modifiesRt=true)      // eXclusive OR Immediate\n\n// OP rt, IMM\nRABBITIZER_DEF_INSTR_ID(rsp, 0x0F, lui,     .operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_cpu_immediate}, .instrType=RABBITIZER_INSTR_TYPE_I, .isUnsigned=true, .modifiesRt=true, .canBeHi=true)       // Load Upper Immediate\n\n// OP rt, IMM(base)\nRABBITIZER_DEF_INSTR_ID(rsp, 0x20, lb,      .operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .canBeLo=true, .doesDereference=true, .doesLoad=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)        // Load Byte\nRABBITIZER_DEF_INSTR_ID(rsp, 0x21, lh,      .operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .canBeLo=true, .doesDereference=true, .doesLoad=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)        // Load Halfword\nRABBITIZER_DEF_INSTR_ID(rsp, 0x23, lw,      .operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .canBeLo=true, .doesDereference=true, .doesLoad=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)        // Load Word\nRABBITIZER_DEF_INSTR_ID(rsp, 0x24, lbu,     .operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .canBeLo=true, .doesDereference=true, .doesLoad=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)       // Load Byte Insigned\nRABBITIZER_DEF_INSTR_ID(rsp, 0x25, lhu,     .operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .canBeLo=true, .doesDereference=true, .doesLoad=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)       // Load Halfword Unsigned\nRABBITIZER_DEF_INSTR_ID(rsp, 0x28, sb,      .operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .canBeLo=true, .doesDereference=true, .doesStore=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)        // Store Byte\nRABBITIZER_DEF_INSTR_ID(rsp, 0x29, sh,      .operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .canBeLo=true, .doesDereference=true, .doesStore=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)        // Store Halfword\nRABBITIZER_DEF_INSTR_ID(rsp, 0x2B, sw,      .operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .canBeLo=true, .doesDereference=true, .doesStore=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)        // Store Word\nRABBITIZER_DEF_INSTR_ID(rsp, 0x33, pref,    .operands={RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .modifiesRt=true, .canBeLo=true, .doesDereference=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_IV)      // Prefetch\n\nRABBITIZER_DEF_INSTR_ID(rsp, 0x2F, cache,   .operands={RAB_OPERAND_cpu_op, RAB_OPERAND_rsp_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .notEmitedByCompilers=true)     // Cache\n\n// OP ft, IMM(base)\nRABBITIZER_DEF_INSTR_ID(rsp, 0x31, lwc1,    .operands={RAB_OPERAND_cpu_ft, RAB_OPERAND_rsp_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .isFloat=true, .canBeLo=true, .doesDereference=true, .doesLoad=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)      // Load Word to Coprocessor z\nRABBITIZER_DEF_INSTR_ID(rsp, 0x39, swc1,    .operands={RAB_OPERAND_cpu_ft, RAB_OPERAND_rsp_immediate_base}, .instrType=RABBITIZER_INSTR_TYPE_I, .isFloat=true, .canBeLo=true, .doesDereference=true, .doesStore=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I)      // Store Word from Coprocessor z\n\n\n// Pseudo-Instruction Unique IDs\n\n// OP IMM\nRABBITIZER_DEF_INSTR_ID(rsp, -0x03, b,      .operands={RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isBranch=true)         // Branch (unconditional)\n\n// OP rs, IMM\nRABBITIZER_DEF_INSTR_ID(rsp, -0x04, beqz,   .operands={RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isBranch=true)      // Branch on EQual Zero\nRABBITIZER_DEF_INSTR_ID(rsp, -0x05, bnez,   .operands={RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isBranch=true)      // Branch on Not Equal Zero\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/instr_id/rsp/rsp_normal_lwc2.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n// OP vt[elementlow], offset(vs)\nRABBITIZER_DEF_INSTR_ID(rsp, 0x00, lbv, .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x01, lsv, .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x02, llv, .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x03, ldv, .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x04, lqv, .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x05, lrv, .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x06, lpv, .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x07, luv, .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x08, lhv, .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x09, lfv, .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x0B, ltv, .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs})\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/instr_id/rsp/rsp_normal_swc2.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n// OP vt[elementlow], offset(vs)\nRABBITIZER_DEF_INSTR_ID(rsp, 0x00, sbv,     .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x01, ssv,     .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x02, slv,     .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x03, sdv,     .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x04, sqv,     .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x05, srv,     .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x06, spv,     .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x07, suv,     .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x08, shv,     .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x09, sfv,     .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs})\nRABBITIZER_DEF_INSTR_ID(rsp, 0x0B, stv,     .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs})\n\nRABBITIZER_DEF_INSTR_ID(rsp, -0x07, swv,    .operands={RAB_OPERAND_rsp_vt_elementlow, RAB_OPERAND_rsp_offset_rs})\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/instr_id/rsp/rsp_regimm.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n// OP rs, IMM\nRABBITIZER_DEF_INSTR_ID(rsp, 0x00, bltz,    .operands={RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isBranch=true)      // Branch on Less Than Zero\nRABBITIZER_DEF_INSTR_ID(rsp, 0x01, bgez,    .operands={RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isBranch=true)      // Branch on Greater than or Equal to Zero\n\nRABBITIZER_DEF_INSTR_ID(rsp, 0x10, bltzal,  .operands={RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isBranch=true, .doesLink=true) // Branch on Less Than Zero and Link\nRABBITIZER_DEF_INSTR_ID(rsp, 0x11, bgezal,  .operands={RAB_OPERAND_rsp_rs, RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isBranch=true, .doesLink=true) // Branch on Greater Than or Equal to Zero and Link\n\n\n// Pseudo-Instruction Unique IDs\n\nRABBITIZER_DEF_INSTR_ID(rsp, -0x11, bal,    .operands={RAB_OPERAND_cpu_branch_target_label}, .instrType=RABBITIZER_INSTR_TYPE_REGIMM, .isBranch=true, .doesLink=true, .isPseudo=true, .architectureVersion=RABBITIZER_ARCHVERSION_MIPS_I) // Branch and Link\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/instr_id/rsp/rsp_special.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n// OP rd, rt, sa\nRABBITIZER_DEF_INSTR_ID(rsp, 0x00, sll,                    .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rt, RAB_OPERAND_cpu_sa}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true)       // Shift word Left Logical\nRABBITIZER_DEF_INSTR_ID(rsp, 0x02, srl,                    .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rt, RAB_OPERAND_cpu_sa}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true)       // Shift word Right Logical\nRABBITIZER_DEF_INSTR_ID(rsp, 0x03, sra,                    .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rt, RAB_OPERAND_cpu_sa}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true)       // Shift word Right Arithmetic\n\n// OP rd, rt, rs\nRABBITIZER_DEF_INSTR_ID(rsp, 0x04, sllv,                   .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true)      // Shift word Left Logical Variable\nRABBITIZER_DEF_INSTR_ID(rsp, 0x06, srlv,                   .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true)      // Shift word Right Logical Variable\nRABBITIZER_DEF_INSTR_ID(rsp, 0x07, srav,                   .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rt, RAB_OPERAND_rsp_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true)      // Shift word Right Arithmetic Variable\n\n// OP rs\nRABBITIZER_DEF_INSTR_ID(rsp, 0x08, jr,                     .operands={RAB_OPERAND_rsp_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .isJump=true)                        // Jump Register\nRABBITIZER_DEF_INSTR_ID(rsp, 0x09, jalr,                   .operands={RAB_OPERAND_rsp_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .isJump=true, .modifiesRd=true, .doesLink=true)      // Jump And Link Register\n\n// OP rd, rs\nRABBITIZER_DEF_INSTR_ID_ALTNAME(rsp, -0x09, jalr_rd, jalr,  .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .isJump=true, .modifiesRd=true, .doesLink=true)   // Jump And Link Register // Special case for rd != 31\n\n// OP rd, rs, rt\nRABBITIZER_DEF_INSTR_ID(rsp, 0x0A, movz,                   .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rs, RAB_OPERAND_rsp_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true)      // MOVe conditional on Zero\nRABBITIZER_DEF_INSTR_ID(rsp, 0x0B, movn,                   .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rs, RAB_OPERAND_rsp_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true)      // MOVe conditional on Not zero\n\nRABBITIZER_DEF_INSTR_ID(rsp, 0x20, add,                    .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rs, RAB_OPERAND_rsp_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true, .notEmitedByCompilers=true)       // ADD word\nRABBITIZER_DEF_INSTR_ID(rsp, 0x21, addu,                   .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rs, RAB_OPERAND_rsp_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true)      // ADD Unsigned word\nRABBITIZER_DEF_INSTR_ID(rsp, 0x22, sub,                    .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rs, RAB_OPERAND_rsp_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true)       // Subtract word\nRABBITIZER_DEF_INSTR_ID(rsp, 0x23, subu,                   .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rs, RAB_OPERAND_rsp_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true)      // SUBtract Unsigned word\nRABBITIZER_DEF_INSTR_ID(rsp, 0x24, and,                    .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rs, RAB_OPERAND_rsp_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true)       // AND\nRABBITIZER_DEF_INSTR_ID(rsp, 0x25, or,                     .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rs, RAB_OPERAND_rsp_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true)        // OR\nRABBITIZER_DEF_INSTR_ID(rsp, 0x26, xor,                    .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rs, RAB_OPERAND_rsp_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true)       // eXclusive OR\nRABBITIZER_DEF_INSTR_ID(rsp, 0x27, nor,                    .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rs, RAB_OPERAND_rsp_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true)       // Not OR\nRABBITIZER_DEF_INSTR_ID(rsp, 0x2A, slt,                    .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rs, RAB_OPERAND_rsp_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true)       // Set on Less Than\nRABBITIZER_DEF_INSTR_ID(rsp, 0x2B, sltu,                   .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rs, RAB_OPERAND_rsp_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true)      // Set on Less Than Unsigned\n\n// OP code\nRABBITIZER_DEF_INSTR_ID(rsp, 0x0D, break,                  .operands={RAB_OPERAND_cpu_code}, .instrType=RABBITIZER_INSTR_TYPE_R)     // Break\n\n\n// Pseudo-Instruction Unique IDs\n// OP\nRABBITIZER_DEF_INSTR_ID(rsp, -0x01, nop,                    .operands={0}, .instrType=RABBITIZER_INSTR_TYPE_R)       // No OPeration\n\n// OP rd, rs\nRABBITIZER_DEF_INSTR_ID(rsp, -0x25, move,                   .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true)      // Move\nRABBITIZER_DEF_INSTR_ID(rsp, -0x27, not,                    .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rs}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true)       // Not\n\n// OP rd, rt\nRABBITIZER_DEF_INSTR_ID(rsp, -0x23, negu,                   .operands={RAB_OPERAND_rsp_rd, RAB_OPERAND_rsp_rt}, .instrType=RABBITIZER_INSTR_TYPE_R, .modifiesRd=true)\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/operands/RabbitizerOperandType_cpu.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\nRAB_DEF_OPERAND(cpu, rs)\nRAB_DEF_OPERAND(cpu, rt)\nRAB_DEF_OPERAND(cpu, rd)\nRAB_DEF_OPERAND(cpu, sa)\nRAB_DEF_OPERAND(cpu, zero) // $zero\n// RAB_DEF_OPERAND(cpu, function)\nRAB_DEF_OPERAND(cpu, cop0d)\nRAB_DEF_OPERAND(cpu, fs)\nRAB_DEF_OPERAND(cpu, ft)\nRAB_DEF_OPERAND(cpu, fd)\nRAB_DEF_OPERAND(cpu, cop1cs) // Coprocessor 1 control fs\nRAB_DEF_OPERAND(cpu, cop2t)\nRAB_DEF_OPERAND(cpu, op)\nRAB_DEF_OPERAND(cpu, code)\nRAB_DEF_OPERAND(cpu, code_lower)\nRAB_DEF_OPERAND(cpu, copraw)\nRAB_DEF_OPERAND(cpu, label)\nRAB_DEF_OPERAND(cpu, immediate)\nRAB_DEF_OPERAND(cpu, branch_target_label)\n\n// composed/aliased operands\nRAB_DEF_OPERAND(cpu, immediate_base)\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/operands/RabbitizerOperandType_r5900.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\nRAB_DEF_OPERAND(r5900, I)\nRAB_DEF_OPERAND(r5900, Q)\nRAB_DEF_OPERAND(r5900, R)\nRAB_DEF_OPERAND(r5900, ACC)\nRAB_DEF_OPERAND(r5900, ACCxyzw)\nRAB_DEF_OPERAND(r5900, vfs)\nRAB_DEF_OPERAND(r5900, vft)\nRAB_DEF_OPERAND(r5900, vfd)\nRAB_DEF_OPERAND(r5900, vfsxyzw)\nRAB_DEF_OPERAND(r5900, vftxyzw)\nRAB_DEF_OPERAND(r5900, vfdxyzw)\nRAB_DEF_OPERAND(r5900, vfsn)\nRAB_DEF_OPERAND(r5900, vftn)\nRAB_DEF_OPERAND(r5900, vfdn)\nRAB_DEF_OPERAND(r5900, vfsl)\nRAB_DEF_OPERAND(r5900, vftl)\nRAB_DEF_OPERAND(r5900, vfdl)\nRAB_DEF_OPERAND(r5900, vfsm)\nRAB_DEF_OPERAND(r5900, vftm)\nRAB_DEF_OPERAND(r5900, vfdm)\nRAB_DEF_OPERAND(r5900, vis)\nRAB_DEF_OPERAND(r5900, vit)\nRAB_DEF_OPERAND(r5900, vid)\nRAB_DEF_OPERAND(r5900, vis_predecr)\nRAB_DEF_OPERAND(r5900, vit_predecr)\nRAB_DEF_OPERAND(r5900, vid_predecr)\nRAB_DEF_OPERAND(r5900, vis_postincr)\nRAB_DEF_OPERAND(r5900, vit_postincr)\nRAB_DEF_OPERAND(r5900, vid_postincr)\nRAB_DEF_OPERAND(r5900, immediate5)\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/operands/RabbitizerOperandType_rsp.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\nRAB_DEF_OPERAND(rsp, rs)\nRAB_DEF_OPERAND(rsp, rt)\nRAB_DEF_OPERAND(rsp, rd)\nRAB_DEF_OPERAND(rsp, cop0d)\nRAB_DEF_OPERAND(rsp, cop2t)\nRAB_DEF_OPERAND(rsp, cop2cd) // Coprocessor 2 control rd\nRAB_DEF_OPERAND(rsp, vs)\nRAB_DEF_OPERAND(rsp, vt)\nRAB_DEF_OPERAND(rsp, vd)\n// RAB_DEF_OPERAND(rsp, elementhigh)\n// RAB_DEF_OPERAND(rsp, elementlow)\n// RAB_DEF_OPERAND(rsp, index)\n// RAB_DEF_OPERAND(rsp, offset)\n\n// composed/aliased operands\nRAB_DEF_OPERAND(rsp, vt_elementhigh)\nRAB_DEF_OPERAND(rsp, vt_elementlow)\nRAB_DEF_OPERAND(rsp, vd_de)\nRAB_DEF_OPERAND(rsp, vs_index)\nRAB_DEF_OPERAND(rsp, offset_rs)\nRAB_DEF_OPERAND(rsp, immediate_base)\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/registers/RabbitizerRegister_Cop0.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n    RABBITIZER_DEF_REG_NODOLLAR(COP0, Index,       0),\n    RABBITIZER_DEF_REG_NODOLLAR(COP0, Random,      1),\n    RABBITIZER_DEF_REG_NODOLLAR(COP0, EntryLo0,    2),\n    RABBITIZER_DEF_REG_NODOLLAR(COP0, EntryLo1,    3),\n    RABBITIZER_DEF_REG_NODOLLAR(COP0, Context,     4),\n    RABBITIZER_DEF_REG_NODOLLAR(COP0, PageMask,    5),\n    RABBITIZER_DEF_REG_NODOLLAR(COP0, Wired,       6),\n    RABBITIZER_DEF_REG_NODOLLAR(COP0, Reserved07,  7),\n    RABBITIZER_DEF_REG_NODOLLAR(COP0, BadVaddr,    8),\n    RABBITIZER_DEF_REG_NODOLLAR(COP0, Count,       9),\n    RABBITIZER_DEF_REG_NODOLLAR(COP0, EntryHi,    10),\n    RABBITIZER_DEF_REG_NODOLLAR(COP0, Compare,    11),\n    RABBITIZER_DEF_REG_NODOLLAR(COP0, Status,     12),\n    RABBITIZER_DEF_REG_NODOLLAR(COP0, Cause,      13),\n    RABBITIZER_DEF_REG_NODOLLAR(COP0, EPC,        14),\n    RABBITIZER_DEF_REG_NODOLLAR(COP0, PRevID,     15),\n    RABBITIZER_DEF_REG_NODOLLAR(COP0, Config,     16),\n    RABBITIZER_DEF_REG_NODOLLAR(COP0, LLAddr,     17),\n    RABBITIZER_DEF_REG_NODOLLAR(COP0, WatchLo,    18),\n    RABBITIZER_DEF_REG_NODOLLAR(COP0, WatchHi,    19),\n    RABBITIZER_DEF_REG_NODOLLAR(COP0, XContext,   20),\n    RABBITIZER_DEF_REG_NODOLLAR(COP0, Reserved21, 21),\n    RABBITIZER_DEF_REG_NODOLLAR(COP0, Reserved22, 22),\n    RABBITIZER_DEF_REG_NODOLLAR(COP0, Reserved23, 23),\n    RABBITIZER_DEF_REG_NODOLLAR(COP0, Reserved24, 24),\n    RABBITIZER_DEF_REG_NODOLLAR(COP0, Reserved25, 25),\n    RABBITIZER_DEF_REG_NODOLLAR(COP0, PErr,       26),\n    RABBITIZER_DEF_REG_NODOLLAR(COP0, CacheErr,   27),\n    RABBITIZER_DEF_REG_NODOLLAR(COP0, TagLo,      28),\n    RABBITIZER_DEF_REG_NODOLLAR(COP0, TagHi,      29),\n    RABBITIZER_DEF_REG_NODOLLAR(COP0, ErrorEPC,   30),\n    RABBITIZER_DEF_REG_NODOLLAR(COP0, Reserved31, 31),\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/registers/RabbitizerRegister_Cop1Control.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n    RABBITIZER_DEF_REG(COP1_CONTROL,      0,  0),\n    RABBITIZER_DEF_REG(COP1_CONTROL,      1,  1),\n    RABBITIZER_DEF_REG(COP1_CONTROL,      2,  2),\n    RABBITIZER_DEF_REG(COP1_CONTROL,      3,  3),\n    RABBITIZER_DEF_REG(COP1_CONTROL,      4,  4),\n    RABBITIZER_DEF_REG(COP1_CONTROL,      5,  5),\n    RABBITIZER_DEF_REG(COP1_CONTROL,      6,  6),\n    RABBITIZER_DEF_REG(COP1_CONTROL,      7,  7),\n    RABBITIZER_DEF_REG(COP1_CONTROL,      8,  8),\n    RABBITIZER_DEF_REG(COP1_CONTROL,      9,  9),\n    RABBITIZER_DEF_REG(COP1_CONTROL,     10, 10),\n    RABBITIZER_DEF_REG(COP1_CONTROL,     11, 11),\n    RABBITIZER_DEF_REG(COP1_CONTROL,     12, 12),\n    RABBITIZER_DEF_REG(COP1_CONTROL,     13, 13),\n    RABBITIZER_DEF_REG(COP1_CONTROL,     14, 14),\n    RABBITIZER_DEF_REG(COP1_CONTROL,     15, 15),\n    RABBITIZER_DEF_REG(COP1_CONTROL,     16, 16),\n    RABBITIZER_DEF_REG(COP1_CONTROL,     17, 17),\n    RABBITIZER_DEF_REG(COP1_CONTROL,     18, 18),\n    RABBITIZER_DEF_REG(COP1_CONTROL,     19, 19),\n    RABBITIZER_DEF_REG(COP1_CONTROL,     20, 20),\n    RABBITIZER_DEF_REG(COP1_CONTROL,     21, 21),\n    RABBITIZER_DEF_REG(COP1_CONTROL,     22, 22),\n    RABBITIZER_DEF_REG(COP1_CONTROL,     23, 23),\n    RABBITIZER_DEF_REG(COP1_CONTROL,     24, 24),\n    RABBITIZER_DEF_REG(COP1_CONTROL,     25, 25),\n    RABBITIZER_DEF_REG(COP1_CONTROL,     26, 26),\n    RABBITIZER_DEF_REG(COP1_CONTROL,     27, 27),\n    RABBITIZER_DEF_REG(COP1_CONTROL,     28, 28),\n    RABBITIZER_DEF_REG(COP1_CONTROL,     29, 29),\n    RABBITIZER_DEF_REG(COP1_CONTROL,     30, 30),\n    RABBITIZER_DEF_REG(COP1_CONTROL, FpcCsr, 31),\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/registers/RabbitizerRegister_Cop1N32.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n    RABBITIZER_DEF_REG(COP1_N32, fv0,   f0),\n    RABBITIZER_DEF_REG(COP1_N32, ft14,  f1),\n    RABBITIZER_DEF_REG(COP1_N32, fv1,   f2),\n    RABBITIZER_DEF_REG(COP1_N32, ft15,  f3),\n    RABBITIZER_DEF_REG(COP1_N32, ft0,   f4),\n    RABBITIZER_DEF_REG(COP1_N32, ft1,   f5),\n    RABBITIZER_DEF_REG(COP1_N32, ft2,   f6),\n    RABBITIZER_DEF_REG(COP1_N32, ft3,   f7),\n    RABBITIZER_DEF_REG(COP1_N32, ft4,   f8),\n    RABBITIZER_DEF_REG(COP1_N32, ft5,   f9),\n    RABBITIZER_DEF_REG(COP1_N32, ft6,  f10),\n    RABBITIZER_DEF_REG(COP1_N32, ft7,  f11),\n    RABBITIZER_DEF_REG(COP1_N32, fa0,  f12),\n    RABBITIZER_DEF_REG(COP1_N32, fa1,  f13),\n    RABBITIZER_DEF_REG(COP1_N32, fa2,  f14),\n    RABBITIZER_DEF_REG(COP1_N32, fa3,  f15),\n    RABBITIZER_DEF_REG(COP1_N32, fa4,  f16),\n    RABBITIZER_DEF_REG(COP1_N32, fa5,  f17),\n    RABBITIZER_DEF_REG(COP1_N32, fa6,  f18),\n    RABBITIZER_DEF_REG(COP1_N32, fa7,  f19),\n    RABBITIZER_DEF_REG(COP1_N32, fs0,  f20),\n    RABBITIZER_DEF_REG(COP1_N32, ft8,  f21),\n    RABBITIZER_DEF_REG(COP1_N32, fs1,  f22),\n    RABBITIZER_DEF_REG(COP1_N32, ft9,  f23),\n    RABBITIZER_DEF_REG(COP1_N32, fs2,  f24),\n    RABBITIZER_DEF_REG(COP1_N32, ft10, f25),\n    RABBITIZER_DEF_REG(COP1_N32, fs3,  f26),\n    RABBITIZER_DEF_REG(COP1_N32, ft11, f27),\n    RABBITIZER_DEF_REG(COP1_N32, fs4,  f28),\n    RABBITIZER_DEF_REG(COP1_N32, ft12, f29),\n    RABBITIZER_DEF_REG(COP1_N32, fs5,  f30),\n    RABBITIZER_DEF_REG(COP1_N32, ft13, f31),\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/registers/RabbitizerRegister_Cop1N64.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n    RABBITIZER_DEF_REG(COP1_N64, fv0,   f0),\n    RABBITIZER_DEF_REG(COP1_N64, ft12,  f1),\n    RABBITIZER_DEF_REG(COP1_N64, fv1,   f2),\n    RABBITIZER_DEF_REG(COP1_N64, ft13,  f3),\n    RABBITIZER_DEF_REG(COP1_N64, ft0,   f4),\n    RABBITIZER_DEF_REG(COP1_N64, ft1,   f5),\n    RABBITIZER_DEF_REG(COP1_N64, ft2,   f6),\n    RABBITIZER_DEF_REG(COP1_N64, ft3,   f7),\n    RABBITIZER_DEF_REG(COP1_N64, ft4,   f8),\n    RABBITIZER_DEF_REG(COP1_N64, ft5,   f9),\n    RABBITIZER_DEF_REG(COP1_N64, ft6,  f10),\n    RABBITIZER_DEF_REG(COP1_N64, ft7,  f11),\n    RABBITIZER_DEF_REG(COP1_N64, fa0,  f12),\n    RABBITIZER_DEF_REG(COP1_N64, fa1,  f13),\n    RABBITIZER_DEF_REG(COP1_N64, fa2,  f14),\n    RABBITIZER_DEF_REG(COP1_N64, fa3,  f15),\n    RABBITIZER_DEF_REG(COP1_N64, fa4,  f16),\n    RABBITIZER_DEF_REG(COP1_N64, fa5,  f17),\n    RABBITIZER_DEF_REG(COP1_N64, fa6,  f18),\n    RABBITIZER_DEF_REG(COP1_N64, fa7,  f19),\n    RABBITIZER_DEF_REG(COP1_N64, ft8,  f20),\n    RABBITIZER_DEF_REG(COP1_N64, ft9,  f21),\n    RABBITIZER_DEF_REG(COP1_N64, ft10, f22),\n    RABBITIZER_DEF_REG(COP1_N64, ft11, f23),\n    RABBITIZER_DEF_REG(COP1_N64, fs0,  f24),\n    RABBITIZER_DEF_REG(COP1_N64, fs1,  f25),\n    RABBITIZER_DEF_REG(COP1_N64, fs2,  f26),\n    RABBITIZER_DEF_REG(COP1_N64, fs3,  f27),\n    RABBITIZER_DEF_REG(COP1_N64, fs4,  f28),\n    RABBITIZER_DEF_REG(COP1_N64, fs5,  f29),\n    RABBITIZER_DEF_REG(COP1_N64, fs6,  f30),\n    RABBITIZER_DEF_REG(COP1_N64, fs7,  f31),\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/registers/RabbitizerRegister_Cop1O32.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n    RABBITIZER_DEF_REG(COP1_O32, fv0,   f0),\n    RABBITIZER_DEF_REG(COP1_O32, fv0f,  f1),\n    RABBITIZER_DEF_REG(COP1_O32, fv1,   f2),\n    RABBITIZER_DEF_REG(COP1_O32, fv1f,  f3),\n    RABBITIZER_DEF_REG(COP1_O32, ft0,   f4),\n    RABBITIZER_DEF_REG(COP1_O32, ft0f,  f5),\n    RABBITIZER_DEF_REG(COP1_O32, ft1,   f6),\n    RABBITIZER_DEF_REG(COP1_O32, ft1f,  f7),\n    RABBITIZER_DEF_REG(COP1_O32, ft2,   f8),\n    RABBITIZER_DEF_REG(COP1_O32, ft2f,  f9),\n    RABBITIZER_DEF_REG(COP1_O32, ft3,  f10),\n    RABBITIZER_DEF_REG(COP1_O32, ft3f, f11),\n    RABBITIZER_DEF_REG(COP1_O32, fa0,  f12),\n    RABBITIZER_DEF_REG(COP1_O32, fa0f, f13),\n    RABBITIZER_DEF_REG(COP1_O32, fa1,  f14),\n    RABBITIZER_DEF_REG(COP1_O32, fa1f, f15),\n    RABBITIZER_DEF_REG(COP1_O32, ft4,  f16),\n    RABBITIZER_DEF_REG(COP1_O32, ft4f, f17),\n    RABBITIZER_DEF_REG(COP1_O32, ft5,  f18),\n    RABBITIZER_DEF_REG(COP1_O32, ft5f, f19),\n    RABBITIZER_DEF_REG(COP1_O32, fs0,  f20),\n    RABBITIZER_DEF_REG(COP1_O32, fs0f, f21),\n    RABBITIZER_DEF_REG(COP1_O32, fs1,  f22),\n    RABBITIZER_DEF_REG(COP1_O32, fs1f, f23),\n    RABBITIZER_DEF_REG(COP1_O32, fs2,  f24),\n    RABBITIZER_DEF_REG(COP1_O32, fs2f, f25),\n    RABBITIZER_DEF_REG(COP1_O32, fs3,  f26),\n    RABBITIZER_DEF_REG(COP1_O32, fs3f, f27),\n    RABBITIZER_DEF_REG(COP1_O32, fs4,  f28),\n    RABBITIZER_DEF_REG(COP1_O32, fs4f, f29),\n    RABBITIZER_DEF_REG(COP1_O32, fs5,  f30),\n    RABBITIZER_DEF_REG(COP1_O32, fs5f, f31),\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/registers/RabbitizerRegister_Cop2.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n    RABBITIZER_DEF_REG(COP2,  0,  0),\n    RABBITIZER_DEF_REG(COP2,  1,  1),\n    RABBITIZER_DEF_REG(COP2,  2,  2),\n    RABBITIZER_DEF_REG(COP2,  3,  3),\n    RABBITIZER_DEF_REG(COP2,  4,  4),\n    RABBITIZER_DEF_REG(COP2,  5,  5),\n    RABBITIZER_DEF_REG(COP2,  6,  6),\n    RABBITIZER_DEF_REG(COP2,  7,  7),\n    RABBITIZER_DEF_REG(COP2,  8,  8),\n    RABBITIZER_DEF_REG(COP2,  9,  9),\n    RABBITIZER_DEF_REG(COP2, 10, 10),\n    RABBITIZER_DEF_REG(COP2, 11, 11),\n    RABBITIZER_DEF_REG(COP2, 12, 12),\n    RABBITIZER_DEF_REG(COP2, 13, 13),\n    RABBITIZER_DEF_REG(COP2, 14, 14),\n    RABBITIZER_DEF_REG(COP2, 15, 15),\n    RABBITIZER_DEF_REG(COP2, 16, 16),\n    RABBITIZER_DEF_REG(COP2, 17, 17),\n    RABBITIZER_DEF_REG(COP2, 18, 18),\n    RABBITIZER_DEF_REG(COP2, 19, 19),\n    RABBITIZER_DEF_REG(COP2, 20, 20),\n    RABBITIZER_DEF_REG(COP2, 21, 21),\n    RABBITIZER_DEF_REG(COP2, 22, 22),\n    RABBITIZER_DEF_REG(COP2, 23, 23),\n    RABBITIZER_DEF_REG(COP2, 24, 24),\n    RABBITIZER_DEF_REG(COP2, 25, 25),\n    RABBITIZER_DEF_REG(COP2, 26, 26),\n    RABBITIZER_DEF_REG(COP2, 27, 27),\n    RABBITIZER_DEF_REG(COP2, 28, 28),\n    RABBITIZER_DEF_REG(COP2, 29, 29),\n    RABBITIZER_DEF_REG(COP2, 30, 30),\n    RABBITIZER_DEF_REG(COP2, 31, 31),\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/registers/RabbitizerRegister_GprN32.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n    RABBITIZER_DEF_REG(GPR_N32, zero,  0),\n    RABBITIZER_DEF_REG(GPR_N32, at,    1),\n    RABBITIZER_DEF_REG(GPR_N32, v0,    2),\n    RABBITIZER_DEF_REG(GPR_N32, v1,    3),\n    RABBITIZER_DEF_REG(GPR_N32, a0,    4),\n    RABBITIZER_DEF_REG(GPR_N32, a1,    5),\n    RABBITIZER_DEF_REG(GPR_N32, a2,    6),\n    RABBITIZER_DEF_REG(GPR_N32, a3,    7),\n    RABBITIZER_DEF_REG(GPR_N32, a4,    8),\n    RABBITIZER_DEF_REG(GPR_N32, a5,    9),\n    RABBITIZER_DEF_REG(GPR_N32, a6,   10),\n    RABBITIZER_DEF_REG(GPR_N32, a7,   11),\n    RABBITIZER_DEF_REG(GPR_N32, t0,   12),\n    RABBITIZER_DEF_REG(GPR_N32, t1,   13),\n    RABBITIZER_DEF_REG(GPR_N32, t2,   14),\n    RABBITIZER_DEF_REG(GPR_N32, t3,   15),\n    RABBITIZER_DEF_REG(GPR_N32, s0,   16),\n    RABBITIZER_DEF_REG(GPR_N32, s1,   17),\n    RABBITIZER_DEF_REG(GPR_N32, s2,   18),\n    RABBITIZER_DEF_REG(GPR_N32, s3,   19),\n    RABBITIZER_DEF_REG(GPR_N32, s4,   20),\n    RABBITIZER_DEF_REG(GPR_N32, s5,   21),\n    RABBITIZER_DEF_REG(GPR_N32, s6,   22),\n    RABBITIZER_DEF_REG(GPR_N32, s7,   23),\n    RABBITIZER_DEF_REG(GPR_N32, t8,   24),\n    RABBITIZER_DEF_REG(GPR_N32, t9,   25),\n    RABBITIZER_DEF_REG(GPR_N32, k0,   26),\n    RABBITIZER_DEF_REG(GPR_N32, k1,   27),\n    RABBITIZER_DEF_REG(GPR_N32, gp,   28),\n    RABBITIZER_DEF_REG(GPR_N32, sp,   29),\n    RABBITIZER_DEF_REG(GPR_N32, fp,   30),\n    RABBITIZER_DEF_REG(GPR_N32, ra,   31),\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/registers/RabbitizerRegister_GprO32.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n    RABBITIZER_DEF_REG(GPR_O32, zero,  0),\n    RABBITIZER_DEF_REG(GPR_O32, at,    1),\n    RABBITIZER_DEF_REG(GPR_O32, v0,    2),\n    RABBITIZER_DEF_REG(GPR_O32, v1,    3),\n    RABBITIZER_DEF_REG(GPR_O32, a0,    4),\n    RABBITIZER_DEF_REG(GPR_O32, a1,    5),\n    RABBITIZER_DEF_REG(GPR_O32, a2,    6),\n    RABBITIZER_DEF_REG(GPR_O32, a3,    7),\n    RABBITIZER_DEF_REG(GPR_O32, t0,    8),\n    RABBITIZER_DEF_REG(GPR_O32, t1,    9),\n    RABBITIZER_DEF_REG(GPR_O32, t2,   10),\n    RABBITIZER_DEF_REG(GPR_O32, t3,   11),\n    RABBITIZER_DEF_REG(GPR_O32, t4,   12),\n    RABBITIZER_DEF_REG(GPR_O32, t5,   13),\n    RABBITIZER_DEF_REG(GPR_O32, t6,   14),\n    RABBITIZER_DEF_REG(GPR_O32, t7,   15),\n    RABBITIZER_DEF_REG(GPR_O32, s0,   16),\n    RABBITIZER_DEF_REG(GPR_O32, s1,   17),\n    RABBITIZER_DEF_REG(GPR_O32, s2,   18),\n    RABBITIZER_DEF_REG(GPR_O32, s3,   19),\n    RABBITIZER_DEF_REG(GPR_O32, s4,   20),\n    RABBITIZER_DEF_REG(GPR_O32, s5,   21),\n    RABBITIZER_DEF_REG(GPR_O32, s6,   22),\n    RABBITIZER_DEF_REG(GPR_O32, s7,   23),\n    RABBITIZER_DEF_REG(GPR_O32, t8,   24),\n    RABBITIZER_DEF_REG(GPR_O32, t9,   25),\n    RABBITIZER_DEF_REG(GPR_O32, k0,   26),\n    RABBITIZER_DEF_REG(GPR_O32, k1,   27),\n    RABBITIZER_DEF_REG(GPR_O32, gp,   28),\n    RABBITIZER_DEF_REG(GPR_O32, sp,   29),\n    RABBITIZER_DEF_REG(GPR_O32, fp,   30),\n    RABBITIZER_DEF_REG(GPR_O32, ra,   31),\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/registers/RabbitizerRegister_R5900VF.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\nRABBITIZER_DEF_REG(R5900_VF,  vf0,  0),\nRABBITIZER_DEF_REG(R5900_VF,  vf1,  1),\nRABBITIZER_DEF_REG(R5900_VF,  vf2,  2),\nRABBITIZER_DEF_REG(R5900_VF,  vf3,  3),\nRABBITIZER_DEF_REG(R5900_VF,  vf4,  4),\nRABBITIZER_DEF_REG(R5900_VF,  vf5,  5),\nRABBITIZER_DEF_REG(R5900_VF,  vf6,  6),\nRABBITIZER_DEF_REG(R5900_VF,  vf7,  7),\nRABBITIZER_DEF_REG(R5900_VF,  vf8,  8),\nRABBITIZER_DEF_REG(R5900_VF,  vf9,  9),\nRABBITIZER_DEF_REG(R5900_VF, vf10, 10),\nRABBITIZER_DEF_REG(R5900_VF, vf11, 11),\nRABBITIZER_DEF_REG(R5900_VF, vf12, 12),\nRABBITIZER_DEF_REG(R5900_VF, vf13, 13),\nRABBITIZER_DEF_REG(R5900_VF, vf14, 14),\nRABBITIZER_DEF_REG(R5900_VF, vf15, 15),\nRABBITIZER_DEF_REG(R5900_VF, vf16, 16),\nRABBITIZER_DEF_REG(R5900_VF, vf17, 17),\nRABBITIZER_DEF_REG(R5900_VF, vf18, 18),\nRABBITIZER_DEF_REG(R5900_VF, vf19, 19),\nRABBITIZER_DEF_REG(R5900_VF, vf20, 20),\nRABBITIZER_DEF_REG(R5900_VF, vf21, 21),\nRABBITIZER_DEF_REG(R5900_VF, vf22, 22),\nRABBITIZER_DEF_REG(R5900_VF, vf23, 23),\nRABBITIZER_DEF_REG(R5900_VF, vf24, 24),\nRABBITIZER_DEF_REG(R5900_VF, vf25, 25),\nRABBITIZER_DEF_REG(R5900_VF, vf26, 26),\nRABBITIZER_DEF_REG(R5900_VF, vf27, 27),\nRABBITIZER_DEF_REG(R5900_VF, vf28, 28),\nRABBITIZER_DEF_REG(R5900_VF, vf29, 29),\nRABBITIZER_DEF_REG(R5900_VF, vf30, 30),\nRABBITIZER_DEF_REG(R5900_VF, vf31, 31),\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/registers/RabbitizerRegister_R5900VI.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\nRABBITIZER_DEF_REG(R5900_VI,  vi0,  0),\nRABBITIZER_DEF_REG(R5900_VI,  vi1,  1),\nRABBITIZER_DEF_REG(R5900_VI,  vi2,  2),\nRABBITIZER_DEF_REG(R5900_VI,  vi3,  3),\nRABBITIZER_DEF_REG(R5900_VI,  vi4,  4),\nRABBITIZER_DEF_REG(R5900_VI,  vi5,  5),\nRABBITIZER_DEF_REG(R5900_VI,  vi6,  6),\nRABBITIZER_DEF_REG(R5900_VI,  vi7,  7),\nRABBITIZER_DEF_REG(R5900_VI,  vi8,  8),\nRABBITIZER_DEF_REG(R5900_VI,  vi9,  9),\nRABBITIZER_DEF_REG(R5900_VI, vi10, 10),\nRABBITIZER_DEF_REG(R5900_VI, vi11, 11),\nRABBITIZER_DEF_REG(R5900_VI, vi12, 12),\nRABBITIZER_DEF_REG(R5900_VI, vi13, 13),\nRABBITIZER_DEF_REG(R5900_VI, vi14, 14),\nRABBITIZER_DEF_REG(R5900_VI, vi15, 15),\nRABBITIZER_DEF_REG(R5900_VI, vi16, 16),\nRABBITIZER_DEF_REG(R5900_VI, vi17, 17),\nRABBITIZER_DEF_REG(R5900_VI, vi18, 18),\nRABBITIZER_DEF_REG(R5900_VI, vi19, 19),\nRABBITIZER_DEF_REG(R5900_VI, vi20, 20),\nRABBITIZER_DEF_REG(R5900_VI, vi21, 21),\nRABBITIZER_DEF_REG(R5900_VI, vi22, 22),\nRABBITIZER_DEF_REG(R5900_VI, vi23, 23),\nRABBITIZER_DEF_REG(R5900_VI, vi24, 24),\nRABBITIZER_DEF_REG(R5900_VI, vi25, 25),\nRABBITIZER_DEF_REG(R5900_VI, vi26, 26),\nRABBITIZER_DEF_REG(R5900_VI, vi27, 27),\nRABBITIZER_DEF_REG(R5900_VI, vi28, 28),\nRABBITIZER_DEF_REG(R5900_VI, vi29, 29),\nRABBITIZER_DEF_REG(R5900_VI, vi30, 30),\nRABBITIZER_DEF_REG(R5900_VI, vi31, 31),\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/registers/RabbitizerRegister_RspCop0.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n    RABBITIZER_DEF_REG_NODOLLAR(RSP_COP0, SP_MEM_ADDR,   0),\n    RABBITIZER_DEF_REG_NODOLLAR(RSP_COP0, SP_DRAM_ADDR,  1),\n    RABBITIZER_DEF_REG_NODOLLAR(RSP_COP0, SP_RD_LEN,     2),\n    RABBITIZER_DEF_REG_NODOLLAR(RSP_COP0, SP_WR_LEN,     3),\n    RABBITIZER_DEF_REG_NODOLLAR(RSP_COP0, SP_STATUS,     4),\n    RABBITIZER_DEF_REG_NODOLLAR(RSP_COP0, SP_DMA_FULL,   5),\n    RABBITIZER_DEF_REG_NODOLLAR(RSP_COP0, SP_DMA_BUSY,   6),\n    RABBITIZER_DEF_REG_NODOLLAR(RSP_COP0, SP_SEMAPHORE,  7),\n    RABBITIZER_DEF_REG_NODOLLAR(RSP_COP0, DPC_START,     8),\n    RABBITIZER_DEF_REG_NODOLLAR(RSP_COP0, DPC_END,       9),\n    RABBITIZER_DEF_REG_NODOLLAR(RSP_COP0, DPC_CURRENT,  10),\n    RABBITIZER_DEF_REG_NODOLLAR(RSP_COP0, DPC_STATUS,   11),\n    RABBITIZER_DEF_REG_NODOLLAR(RSP_COP0, DPC_CLOCK,    12),\n    RABBITIZER_DEF_REG_NODOLLAR(RSP_COP0, DPC_BUFBUSY,  13),\n    RABBITIZER_DEF_REG_NODOLLAR(RSP_COP0, DPC_PIPEBUSY, 14),\n    RABBITIZER_DEF_REG_NODOLLAR(RSP_COP0, DPC_TMEM,     15),\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/registers/RabbitizerRegister_RspCop2.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n    RABBITIZER_DEF_REG(RSP_COP2,  0,  0),\n    RABBITIZER_DEF_REG(RSP_COP2,  1,  1),\n    RABBITIZER_DEF_REG(RSP_COP2,  2,  2),\n    RABBITIZER_DEF_REG(RSP_COP2,  3,  3),\n    RABBITIZER_DEF_REG(RSP_COP2,  4,  4),\n    RABBITIZER_DEF_REG(RSP_COP2,  5,  5),\n    RABBITIZER_DEF_REG(RSP_COP2,  6,  6),\n    RABBITIZER_DEF_REG(RSP_COP2,  7,  7),\n    RABBITIZER_DEF_REG(RSP_COP2,  8,  8),\n    RABBITIZER_DEF_REG(RSP_COP2,  9,  9),\n    RABBITIZER_DEF_REG(RSP_COP2, 10, 10),\n    RABBITIZER_DEF_REG(RSP_COP2, 11, 11),\n    RABBITIZER_DEF_REG(RSP_COP2, 12, 12),\n    RABBITIZER_DEF_REG(RSP_COP2, 13, 13),\n    RABBITIZER_DEF_REG(RSP_COP2, 14, 14),\n    RABBITIZER_DEF_REG(RSP_COP2, 15, 15),\n    RABBITIZER_DEF_REG(RSP_COP2, 16, 16),\n    RABBITIZER_DEF_REG(RSP_COP2, 17, 17),\n    RABBITIZER_DEF_REG(RSP_COP2, 18, 18),\n    RABBITIZER_DEF_REG(RSP_COP2, 19, 19),\n    RABBITIZER_DEF_REG(RSP_COP2, 20, 20),\n    RABBITIZER_DEF_REG(RSP_COP2, 21, 21),\n    RABBITIZER_DEF_REG(RSP_COP2, 22, 22),\n    RABBITIZER_DEF_REG(RSP_COP2, 23, 23),\n    RABBITIZER_DEF_REG(RSP_COP2, 24, 24),\n    RABBITIZER_DEF_REG(RSP_COP2, 25, 25),\n    RABBITIZER_DEF_REG(RSP_COP2, 26, 26),\n    RABBITIZER_DEF_REG(RSP_COP2, 27, 27),\n    RABBITIZER_DEF_REG(RSP_COP2, 28, 28),\n    RABBITIZER_DEF_REG(RSP_COP2, 29, 29),\n    RABBITIZER_DEF_REG(RSP_COP2, 30, 30),\n    RABBITIZER_DEF_REG(RSP_COP2, 31, 31),\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/registers/RabbitizerRegister_RspCop2Control.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n    RABBITIZER_DEF_REG(RSP_COP2_CONTROL,  0,  0),\n    RABBITIZER_DEF_REG(RSP_COP2_CONTROL,  1,  1),\n    RABBITIZER_DEF_REG(RSP_COP2_CONTROL,  2,  2),\n    RABBITIZER_DEF_REG(RSP_COP2_CONTROL,  3,  3),\n    RABBITIZER_DEF_REG(RSP_COP2_CONTROL,  4,  4),\n    RABBITIZER_DEF_REG(RSP_COP2_CONTROL,  5,  5),\n    RABBITIZER_DEF_REG(RSP_COP2_CONTROL,  6,  6),\n    RABBITIZER_DEF_REG(RSP_COP2_CONTROL,  7,  7),\n    RABBITIZER_DEF_REG(RSP_COP2_CONTROL,  8,  8),\n    RABBITIZER_DEF_REG(RSP_COP2_CONTROL,  9,  9),\n    RABBITIZER_DEF_REG(RSP_COP2_CONTROL, 10, 10),\n    RABBITIZER_DEF_REG(RSP_COP2_CONTROL, 11, 11),\n    RABBITIZER_DEF_REG(RSP_COP2_CONTROL, 12, 12),\n    RABBITIZER_DEF_REG(RSP_COP2_CONTROL, 13, 13),\n    RABBITIZER_DEF_REG(RSP_COP2_CONTROL, 14, 14),\n    RABBITIZER_DEF_REG(RSP_COP2_CONTROL, 15, 15),\n    RABBITIZER_DEF_REG(RSP_COP2_CONTROL, 16, 16),\n    RABBITIZER_DEF_REG(RSP_COP2_CONTROL, 17, 17),\n    RABBITIZER_DEF_REG(RSP_COP2_CONTROL, 18, 18),\n    RABBITIZER_DEF_REG(RSP_COP2_CONTROL, 19, 19),\n    RABBITIZER_DEF_REG(RSP_COP2_CONTROL, 20, 20),\n    RABBITIZER_DEF_REG(RSP_COP2_CONTROL, 21, 21),\n    RABBITIZER_DEF_REG(RSP_COP2_CONTROL, 22, 22),\n    RABBITIZER_DEF_REG(RSP_COP2_CONTROL, 23, 23),\n    RABBITIZER_DEF_REG(RSP_COP2_CONTROL, 24, 24),\n    RABBITIZER_DEF_REG(RSP_COP2_CONTROL, 25, 25),\n    RABBITIZER_DEF_REG(RSP_COP2_CONTROL, 26, 26),\n    RABBITIZER_DEF_REG(RSP_COP2_CONTROL, 27, 27),\n    RABBITIZER_DEF_REG(RSP_COP2_CONTROL, 28, 28),\n    RABBITIZER_DEF_REG(RSP_COP2_CONTROL, 29, 29),\n    RABBITIZER_DEF_REG(RSP_COP2_CONTROL, 30, 30),\n    RABBITIZER_DEF_REG(COP1_CONTROL, 31, 31),\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/registers/RabbitizerRegister_RspGpr.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n    RABBITIZER_DEF_REG(RSP_GPR, zero,  0),\n    RABBITIZER_DEF_REG(RSP_GPR,    1,  1),\n    RABBITIZER_DEF_REG(RSP_GPR,    2,  2),\n    RABBITIZER_DEF_REG(RSP_GPR,    3,  3),\n    RABBITIZER_DEF_REG(RSP_GPR,    4,  4),\n    RABBITIZER_DEF_REG(RSP_GPR,    5,  5),\n    RABBITIZER_DEF_REG(RSP_GPR,    6,  6),\n    RABBITIZER_DEF_REG(RSP_GPR,    7,  7),\n    RABBITIZER_DEF_REG(RSP_GPR,    8,  8),\n    RABBITIZER_DEF_REG(RSP_GPR,    9,  9),\n    RABBITIZER_DEF_REG(RSP_GPR,   10, 10),\n    RABBITIZER_DEF_REG(RSP_GPR,   11, 11),\n    RABBITIZER_DEF_REG(RSP_GPR,   12, 12),\n    RABBITIZER_DEF_REG(RSP_GPR,   13, 13),\n    RABBITIZER_DEF_REG(RSP_GPR,   14, 14),\n    RABBITIZER_DEF_REG(RSP_GPR,   15, 15),\n    RABBITIZER_DEF_REG(RSP_GPR,   16, 16),\n    RABBITIZER_DEF_REG(RSP_GPR,   17, 17),\n    RABBITIZER_DEF_REG(RSP_GPR,   18, 18),\n    RABBITIZER_DEF_REG(RSP_GPR,   19, 19),\n    RABBITIZER_DEF_REG(RSP_GPR,   20, 20),\n    RABBITIZER_DEF_REG(RSP_GPR,   21, 21),\n    RABBITIZER_DEF_REG(RSP_GPR,   22, 22),\n    RABBITIZER_DEF_REG(RSP_GPR,   23, 23),\n    RABBITIZER_DEF_REG(RSP_GPR,   24, 24),\n    RABBITIZER_DEF_REG(RSP_GPR,   25, 25),\n    RABBITIZER_DEF_REG(RSP_GPR,   26, 26),\n    RABBITIZER_DEF_REG(RSP_GPR,   27, 27),\n    RABBITIZER_DEF_REG(RSP_GPR,   28, 28),\n    RABBITIZER_DEF_REG(RSP_GPR,   29, 29),\n    RABBITIZER_DEF_REG(RSP_GPR,   30, 30),\n    RABBITIZER_DEF_REG(RSP_GPR,   ra, 31),\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/instructions/registers/RabbitizerRegister_RspVector.inc",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n    RABBITIZER_DEF_REG(RSP_VECTOR, v0,   0),\n    RABBITIZER_DEF_REG(RSP_VECTOR, v1,   1),\n    RABBITIZER_DEF_REG(RSP_VECTOR, v2,   2),\n    RABBITIZER_DEF_REG(RSP_VECTOR, v3,   3),\n    RABBITIZER_DEF_REG(RSP_VECTOR, v4,   4),\n    RABBITIZER_DEF_REG(RSP_VECTOR, v5,   5),\n    RABBITIZER_DEF_REG(RSP_VECTOR, v6,   6),\n    RABBITIZER_DEF_REG(RSP_VECTOR, v7,   7),\n    RABBITIZER_DEF_REG(RSP_VECTOR, v8,   8),\n    RABBITIZER_DEF_REG(RSP_VECTOR, v9,   9),\n    RABBITIZER_DEF_REG(RSP_VECTOR, v10, 10),\n    RABBITIZER_DEF_REG(RSP_VECTOR, v11, 11),\n    RABBITIZER_DEF_REG(RSP_VECTOR, v12, 12),\n    RABBITIZER_DEF_REG(RSP_VECTOR, v13, 13),\n    RABBITIZER_DEF_REG(RSP_VECTOR, v14, 14),\n    RABBITIZER_DEF_REG(RSP_VECTOR, v15, 15),\n    RABBITIZER_DEF_REG(RSP_VECTOR, v16, 16),\n    RABBITIZER_DEF_REG(RSP_VECTOR, v17, 17),\n    RABBITIZER_DEF_REG(RSP_VECTOR, v18, 18),\n    RABBITIZER_DEF_REG(RSP_VECTOR, v19, 19),\n    RABBITIZER_DEF_REG(RSP_VECTOR, v20, 20),\n    RABBITIZER_DEF_REG(RSP_VECTOR, v21, 21),\n    RABBITIZER_DEF_REG(RSP_VECTOR, v22, 22),\n    RABBITIZER_DEF_REG(RSP_VECTOR, v23, 23),\n    RABBITIZER_DEF_REG(RSP_VECTOR, v24, 24),\n    RABBITIZER_DEF_REG(RSP_VECTOR, v25, 25),\n    RABBITIZER_DEF_REG(RSP_VECTOR, v26, 26),\n    RABBITIZER_DEF_REG(RSP_VECTOR, v27, 27),\n    RABBITIZER_DEF_REG(RSP_VECTOR, v28, 28),\n    RABBITIZER_DEF_REG(RSP_VECTOR, v29, 29),\n    RABBITIZER_DEF_REG(RSP_VECTOR, v30, 30),\n    RABBITIZER_DEF_REG(RSP_VECTOR, v31, 31),\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/include/rabbitizer.h",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#ifndef RABBITIZER_H\n#define RABBITIZER_H\n#pragma once\n\n#include \"common/Utils.h\"\n#include \"common/RabbitizerVersion.h\"\n#include \"common/RabbitizerConfig.h\"\n\n#include \"instructions/RabbitizerOperandType.h\"\n#include \"instructions/RabbitizerInstrId.h\"\n#include \"instructions/RabbitizerInstrSuffix.h\"\n#include \"instructions/RabbitizerInstrDescriptor.h\"\n#include \"instructions/RabbitizerRegister.h\"\n#include \"instructions/RabbitizerInstruction.h\"\n#include \"instructions/RabbitizerInstructionRsp.h\"\n#include \"instructions/RabbitizerInstructionR5900.h\"\n\n#include \"analysis/RabbitizerTrackedRegisterState.h\"\n#include \"analysis/RabbitizerLoPairingInfo.h\"\n#include \"analysis/RabbitizerRegistersTracker.h\"\n\n#endif\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/pyproject.toml",
    "content": "# SPDX-FileCopyrightText: © 2022 Decompollaborate\n# SPDX-License-Identifier: MIT\n\n[build-system]\nrequires = [\"setuptools>=61.0\", \"wheel\"]\nbuild-backend = \"setuptools.build_meta\"\n\n[tool.cibuildwheel]\nskip = [\"cp36-*\"]\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/r5900test.c",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"instructions/RabbitizerInstructionR5900.h\"\n\n#include <assert.h>\n#include <stdio.h>\n#include <string.h>\n#include <stdlib.h>\n\n\nint main() {\n    uint32_t word;\n    RabbitizerInstruction instr;\n    char *buffer;\n    int extraLJust = 5;\n#if 1\n    uint32_t validbits;\n#endif\n\n    word = 0x4BE1634B;\n\n    RabbitizerInstructionR5900_init(&instr, word, 0x00100000);\n\n    RabbitizerInstructionR5900_processUniqueId(&instr);\n\n    buffer = malloc(RabbitizerInstruction_getSizeForBuffer(&instr, 0, extraLJust) + 1);\n    assert(buffer != NULL);\n\n    RabbitizerInstruction_disassemble(&instr, buffer, NULL, 0, extraLJust);\n\n    printf(\"%08X: %s\\n\", word, buffer);\n\n#if 1\n    validbits = RabbitizerInstruction_getValidBits(&instr);\n\n    printf(\"word:           %08X\\n\", instr.word);\n    printf(\"mandatory bits: %08X\\n\", instr._mandatorybits);\n    printf(\"valid bits:     %08X\\n\", validbits);\n    printf(\"invalid bits:   %08X\\n\", (~validbits) & instr.word);\n#endif\n\n    free(buffer);\n    RabbitizerInstructionR5900_destroy(&instr);\n\n    return 0;\n}\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/rabbitizer/Config.pyi",
    "content": "#!/usr/bin/env python3\n\n# SPDX-FileCopyrightText: © 2022 Decompollaborate\n# SPDX-License-Identifier: MIT\n\nfrom __future__ import annotations\n\nfrom .Enum import Enum\n\n\nclass Abi:\n    NUMERIC: Enum\n    O32: Enum\n    N32: Enum\n    N64: Enum\n\n    @staticmethod\n    def fromStr(name: str | None) -> Enum: ...\n\n\nclass _RabbitizerConfig:\n    regNames_namedRegisters: bool = True\n    regNames_gprAbiNames: Enum = Abi.O32\n    regNames_fprAbiNames: Enum = Abi.NUMERIC\n    regNames_userFpcCsr: bool = True\n    regNames_vr4300Cop0NamedRegisters: bool = True\n    regNames_vr4300RspCop0NamedRegisters: bool = True\n\n    pseudos_enablePseudos: bool = True\n    pseudos_pseudoBeqz: bool = True\n    pseudos_pseudoBnez: bool = True\n    pseudos_pseudoB: bool = True\n    pseudos_pseudoMove: bool = True\n    pseudos_pseudoNot: bool = True\n    pseudos_pseudoNegu: bool = True\n    pseudos_pseudoBal: bool = True\n\n    toolchainTweaks_sn64DivFix: bool = False\n    toolchainTweaks_treatJAsUnconditionalBranch: bool = False\n\n    misc_opcodeLJust: int = 11\n    misc_unknownInstrComment: bool = True\n    misc_omit0XOnSmallImm: bool = False\n    misc_upperCaseImm: bool = True\n\nconfig: _RabbitizerConfig\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/rabbitizer/Enum.pyi",
    "content": "#!/usr/bin/env python3\n\n# SPDX-FileCopyrightText: © 2022 Decompollaborate\n# SPDX-License-Identifier: MIT\n\nfrom __future__ import annotations\n\n\nclass Enum:\n    name: str\n    value: int\n\n    def __init__(self, enumType: str, name: str, value: int) -> None: ...\n\n    def __reduce__(self) -> tuple: ...\n\n    def __lt__(self, __o: object) -> bool: ...\n    def __le__(self, __o: object) -> bool: ...\n    def __eq__(self, __o: object) -> bool: ...\n    def __gt__(self, __o: object) -> bool: ...\n    def __ge__(self, __o: object) -> bool: ...\n\n    def __repr__(self) -> str: ...\n    def __str__(self) -> str: ...\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/rabbitizer/InstrCategory.pyi",
    "content": "#!/usr/bin/env python3\n\n# SPDX-FileCopyrightText: © 2022 Decompollaborate\n# SPDX-License-Identifier: MIT\n\nfrom __future__ import annotations\n\nfrom .Enum import Enum\n\n\nclass InstrCategory:\n    CPU: Enum\n    RSP: Enum\n    R5900: Enum\n    MAX: Enum\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/rabbitizer/InstrId.pyi",
    "content": "#!/usr/bin/env python3\n\n# SPDX-FileCopyrightText: © 2022 Decompollaborate\n# SPDX-License-Identifier: MIT\n\nfrom __future__ import annotations\n\nfrom .Enum import Enum\n\n\nclass InstrId:\n    cpu_INVALID: Enum\n    cpu_mthi: Enum\n    cpu_mtlo: Enum\n    cpu_jr: Enum\n    cpu_jalr: Enum\n    cpu_jalr_rd: Enum\n    cpu_mfhi: Enum\n    cpu_mflo: Enum\n    cpu_mult: Enum\n    cpu_multu: Enum\n    cpu_dmult: Enum\n    cpu_dmultu: Enum\n    cpu_tge: Enum\n    cpu_tgeu: Enum\n    cpu_tlt: Enum\n    cpu_tltu: Enum\n    cpu_teq: Enum\n    cpu_tne: Enum\n    cpu_movz: Enum\n    cpu_movn: Enum\n    cpu_div: Enum\n    cpu_divu: Enum\n    cpu_sn64_div: Enum\n    cpu_sn64_divu: Enum\n    cpu_ddiv: Enum\n    cpu_ddivu: Enum\n    cpu_add: Enum\n    cpu_addu: Enum\n    cpu_sub: Enum\n    cpu_subu: Enum\n    cpu_and: Enum\n    cpu_or: Enum\n    cpu_xor: Enum\n    cpu_nor: Enum\n    cpu_slt: Enum\n    cpu_sltu: Enum\n    cpu_dadd: Enum\n    cpu_daddu: Enum\n    cpu_dsub: Enum\n    cpu_dsubu: Enum\n    cpu_syscall: Enum\n    cpu_break: Enum\n    cpu_sync: Enum\n    cpu_dsllv: Enum\n    cpu_dsrlv: Enum\n    cpu_dsrav: Enum\n    cpu_sllv: Enum\n    cpu_srlv: Enum\n    cpu_srav: Enum\n    cpu_sll: Enum\n    cpu_srl: Enum\n    cpu_sra: Enum\n    cpu_dsll: Enum\n    cpu_dsrl: Enum\n    cpu_dsra: Enum\n    cpu_dsll32: Enum\n    cpu_dsrl32: Enum\n    cpu_dsra32: Enum\n    cpu_bltz: Enum\n    cpu_bgez: Enum\n    cpu_bltzl: Enum\n    cpu_bgezl: Enum\n    cpu_tgei: Enum\n    cpu_tgeiu: Enum\n    cpu_tlti: Enum\n    cpu_tltiu: Enum\n    cpu_bltzal: Enum\n    cpu_bgezal: Enum\n    cpu_bltzall: Enum\n    cpu_bgezall: Enum\n    cpu_bal: Enum\n    cpu_teqi: Enum\n    cpu_tnei: Enum\n    cpu_j: Enum\n    cpu_jal: Enum\n    cpu_beq: Enum\n    cpu_bne: Enum\n    cpu_beql: Enum\n    cpu_bnel: Enum\n    cpu_blez: Enum\n    cpu_bgtz: Enum\n    cpu_blezl: Enum\n    cpu_bgtzl: Enum\n    cpu_lui: Enum\n    cpu_andi: Enum\n    cpu_ori: Enum\n    cpu_xori: Enum\n    cpu_addi: Enum\n    cpu_addiu: Enum\n    cpu_daddi: Enum\n    cpu_daddiu: Enum\n    cpu_slti: Enum\n    cpu_sltiu: Enum\n    cpu_ldl: Enum\n    cpu_ldr: Enum\n    cpu_lb: Enum\n    cpu_lh: Enum\n    cpu_lwl: Enum\n    cpu_lw: Enum\n    cpu_lbu: Enum\n    cpu_lhu: Enum\n    cpu_lwr: Enum\n    cpu_lwu: Enum\n    cpu_sb: Enum\n    cpu_sh: Enum\n    cpu_swl: Enum\n    cpu_sw: Enum\n    cpu_sdl: Enum\n    cpu_sdr: Enum\n    cpu_swr: Enum\n    cpu_ll: Enum\n    cpu_pref: Enum\n    cpu_lld: Enum\n    cpu_ld: Enum\n    cpu_sc: Enum\n    cpu_scd: Enum\n    cpu_sd: Enum\n    cpu_lwc1: Enum\n    cpu_ldc1: Enum\n    cpu_swc1: Enum\n    cpu_sdc1: Enum\n    cpu_lwc2: Enum\n    cpu_ldc2: Enum\n    cpu_swc2: Enum\n    cpu_sdc2: Enum\n    cpu_mfc0: Enum\n    cpu_dmfc0: Enum\n    cpu_cfc0: Enum\n    cpu_mtc0: Enum\n    cpu_dmtc0: Enum\n    cpu_ctc0: Enum\n    cpu_tlbr: Enum\n    cpu_tlbwi: Enum\n    cpu_tlbwr: Enum\n    cpu_tlbp: Enum\n    cpu_eret: Enum\n    cpu_bc0t: Enum\n    cpu_bc0f: Enum\n    cpu_bc0tl: Enum\n    cpu_bc0fl: Enum\n    cpu_mfc1: Enum\n    cpu_dmfc1: Enum\n    cpu_mtc1: Enum\n    cpu_dmtc1: Enum\n    cpu_cfc1: Enum\n    cpu_ctc1: Enum\n    cpu_bc1f: Enum\n    cpu_bc1t: Enum\n    cpu_bc1fl: Enum\n    cpu_bc1tl: Enum\n    cpu_add_s: Enum\n    cpu_sub_s: Enum\n    cpu_mul_s: Enum\n    cpu_div_s: Enum\n    cpu_add_d: Enum\n    cpu_sub_d: Enum\n    cpu_mul_d: Enum\n    cpu_div_d: Enum\n    cpu_sqrt_s: Enum\n    cpu_abs_s: Enum\n    cpu_mov_s: Enum\n    cpu_neg_s: Enum\n    cpu_sqrt_d: Enum\n    cpu_abs_d: Enum\n    cpu_mov_d: Enum\n    cpu_neg_d: Enum\n    cpu_round_l_s: Enum\n    cpu_trunc_l_s: Enum\n    cpu_ceil_l_s: Enum\n    cpu_floor_l_s: Enum\n    cpu_round_l_d: Enum\n    cpu_trunc_l_d: Enum\n    cpu_ceil_l_d: Enum\n    cpu_floor_l_d: Enum\n    cpu_round_w_s: Enum\n    cpu_trunc_w_s: Enum\n    cpu_ceil_w_s: Enum\n    cpu_floor_w_s: Enum\n    cpu_round_w_d: Enum\n    cpu_trunc_w_d: Enum\n    cpu_ceil_w_d: Enum\n    cpu_floor_w_d: Enum\n    cpu_c_f_s: Enum\n    cpu_c_un_s: Enum\n    cpu_c_eq_s: Enum\n    cpu_c_ueq_s: Enum\n    cpu_c_olt_s: Enum\n    cpu_c_ult_s: Enum\n    cpu_c_ole_s: Enum\n    cpu_c_ule_s: Enum\n    cpu_c_f_d: Enum\n    cpu_c_un_d: Enum\n    cpu_c_eq_d: Enum\n    cpu_c_ueq_d: Enum\n    cpu_c_olt_d: Enum\n    cpu_c_ult_d: Enum\n    cpu_c_ole_d: Enum\n    cpu_c_ule_d: Enum\n    cpu_c_sf_s: Enum\n    cpu_c_ngle_s: Enum\n    cpu_c_seq_s: Enum\n    cpu_c_ngl_s: Enum\n    cpu_c_lt_s: Enum\n    cpu_c_nge_s: Enum\n    cpu_c_le_s: Enum\n    cpu_c_ngt_s: Enum\n    cpu_c_sf_d: Enum\n    cpu_c_ngle_d: Enum\n    cpu_c_seq_d: Enum\n    cpu_c_ngl_d: Enum\n    cpu_c_lt_d: Enum\n    cpu_c_nge_d: Enum\n    cpu_c_le_d: Enum\n    cpu_c_ngt_d: Enum\n    cpu_cvt_s_d: Enum\n    cpu_cvt_s_w: Enum\n    cpu_cvt_s_l: Enum\n    cpu_cvt_d_s: Enum\n    cpu_cvt_d_w: Enum\n    cpu_cvt_d_l: Enum\n    cpu_cvt_w_s: Enum\n    cpu_cvt_w_d: Enum\n    cpu_cvt_l_s: Enum\n    cpu_cvt_l_d: Enum\n    cpu_nop: Enum\n    cpu_beqz: Enum\n    cpu_bnez: Enum\n    cpu_b: Enum\n    cpu_move: Enum\n    cpu_not: Enum\n    cpu_negu: Enum\n    cpu_MAX: Enum\n\n    rsp_INVALID: Enum\n    rsp_vmulf: Enum\n    rsp_vmulu: Enum\n    rsp_vrndp: Enum\n    rsp_vmulq: Enum\n    rsp_vmudl: Enum\n    rsp_vmudm: Enum\n    rsp_vmudn: Enum\n    rsp_vmudh: Enum\n    rsp_vmacf: Enum\n    rsp_vmacu: Enum\n    rsp_vrndn: Enum\n    rsp_vmacq: Enum\n    rsp_vmadl: Enum\n    rsp_vmadm: Enum\n    rsp_vmadn: Enum\n    rsp_vmadh: Enum\n    rsp_vadd: Enum\n    rsp_vsub: Enum\n    rsp_vabs: Enum\n    rsp_vaddc: Enum\n    rsp_vsubc: Enum\n    rsp_vsar: Enum\n    rsp_vand: Enum\n    rsp_vnand: Enum\n    rsp_vor: Enum\n    rsp_vnor: Enum\n    rsp_vxor: Enum\n    rsp_vnxor: Enum\n    rsp_vlt: Enum\n    rsp_veq: Enum\n    rsp_vne: Enum\n    rsp_vge: Enum\n    rsp_vcl: Enum\n    rsp_vch: Enum\n    rsp_vcr: Enum\n    rsp_vmrg: Enum\n    rsp_vrcp: Enum\n    rsp_vrcpl: Enum\n    rsp_vrcph: Enum\n    rsp_vmov: Enum\n    rsp_vrsq: Enum\n    rsp_vrsql: Enum\n    rsp_vrsqh: Enum\n    rsp_vnop: Enum\n    rsp_mfc2: Enum\n    rsp_mtc2: Enum\n    rsp_cfc2: Enum\n    rsp_ctc2: Enum\n    rsp_sbv: Enum\n    rsp_ssv: Enum\n    rsp_slv: Enum\n    rsp_sdv: Enum\n    rsp_sqv: Enum\n    rsp_srv: Enum\n    rsp_spv: Enum\n    rsp_suv: Enum\n    rsp_swv: Enum\n    rsp_shv: Enum\n    rsp_sfv: Enum\n    rsp_stv: Enum\n    rsp_lbv: Enum\n    rsp_lsv: Enum\n    rsp_llv: Enum\n    rsp_ldv: Enum\n    rsp_lqv: Enum\n    rsp_lrv: Enum\n    rsp_lpv: Enum\n    rsp_luv: Enum\n    rsp_lhv: Enum\n    rsp_lfv: Enum\n    rsp_ltv: Enum\n    rsp_jr: Enum\n    rsp_jalr: Enum\n    rsp_jalr_rd: Enum\n    rsp_movz: Enum\n    rsp_movn: Enum\n    rsp_add: Enum\n    rsp_addu: Enum\n    rsp_sub: Enum\n    rsp_subu: Enum\n    rsp_and: Enum\n    rsp_or: Enum\n    rsp_xor: Enum\n    rsp_nor: Enum\n    rsp_slt: Enum\n    rsp_sltu: Enum\n    rsp_break: Enum\n    rsp_sllv: Enum\n    rsp_srlv: Enum\n    rsp_srav: Enum\n    rsp_sll: Enum\n    rsp_srl: Enum\n    rsp_sra: Enum\n    rsp_bltz: Enum\n    rsp_bgez: Enum\n    rsp_bltzal: Enum\n    rsp_bgezal: Enum\n    rsp_bal: Enum\n    rsp_j: Enum\n    rsp_jal: Enum\n    rsp_beq: Enum\n    rsp_bne: Enum\n    rsp_blez: Enum\n    rsp_bgtz: Enum\n    rsp_lui: Enum\n    rsp_andi: Enum\n    rsp_ori: Enum\n    rsp_xori: Enum\n    rsp_addi: Enum\n    rsp_addiu: Enum\n    rsp_slti: Enum\n    rsp_sltiu: Enum\n    rsp_lb: Enum\n    rsp_lh: Enum\n    rsp_lw: Enum\n    rsp_lbu: Enum\n    rsp_lhu: Enum\n    rsp_sb: Enum\n    rsp_sh: Enum\n    rsp_sw: Enum\n    rsp_pref: Enum\n    rsp_lwc1: Enum\n    rsp_swc1: Enum\n    rsp_mfc0: Enum\n    rsp_mtc0: Enum\n    rsp_nop: Enum\n    rsp_beqz: Enum\n    rsp_bnez: Enum\n    rsp_b: Enum\n    rsp_move: Enum\n    rsp_not: Enum\n    rsp_negu: Enum\n    rsp_MAX: Enum\n\n    r5900_INVALID: Enum\n    r5900_lq: Enum\n    r5900_sq: Enum\n    r5900_lqc2: Enum\n    r5900_sqc2: Enum\n    r5900_sync_p: Enum\n    r5900_mfsa: Enum\n    r5900_mtsa: Enum\n    r5900_mtsab: Enum\n    r5900_mtsah: Enum\n    r5900_madd: Enum\n    r5900_maddu: Enum\n    r5900_plzcw: Enum\n    r5900_mfhi1: Enum\n    r5900_mthi1: Enum\n    r5900_mflo1: Enum\n    r5900_mtlo1: Enum\n    r5900_mult1: Enum\n    r5900_multu1: Enum\n    r5900_div1: Enum\n    r5900_divu1: Enum\n    r5900_madd1: Enum\n    r5900_maddu1: Enum\n    r5900_pmfhl: Enum\n    r5900_pmthl: Enum\n    r5900_psllh: Enum\n    r5900_psrlh: Enum\n    r5900_psrah: Enum\n    r5900_psllw: Enum\n    r5900_psrlw: Enum\n    r5900_psraw: Enum\n    r5900_paddw: Enum\n    r5900_psubw: Enum\n    r5900_pcgtw: Enum\n    r5900_pmaxw: Enum\n    r5900_paddh: Enum\n    r5900_psubh: Enum\n    r5900_pcgth: Enum\n    r5900_pmaxh: Enum\n    r5900_paddb: Enum\n    r5900_psubb: Enum\n    r5900_pcgtb: Enum\n    r5900_paddsw: Enum\n    r5900_psubsw: Enum\n    r5900_pextlw: Enum\n    r5900_ppacw: Enum\n    r5900_paddsh: Enum\n    r5900_psubsh: Enum\n    r5900_pextlh: Enum\n    r5900_ppach: Enum\n    r5900_paddsb: Enum\n    r5900_psubsb: Enum\n    r5900_pextlb: Enum\n    r5900_ppacb: Enum\n    r5900_pext5: Enum\n    r5900_ppac5: Enum\n    r5900_pabsw: Enum\n    r5900_pceqw: Enum\n    r5900_pminw: Enum\n    r5900_padsbh: Enum\n    r5900_pabsh: Enum\n    r5900_pceqh: Enum\n    r5900_pminh: Enum\n    r5900_pceqb: Enum\n    r5900_padduw: Enum\n    r5900_psubuw: Enum\n    r5900_pextuw: Enum\n    r5900_padduh: Enum\n    r5900_psubuh: Enum\n    r5900_pextuh: Enum\n    r5900_paddub: Enum\n    r5900_psubub: Enum\n    r5900_pextub: Enum\n    r5900_qfsrv: Enum\n    r5900_pmaddw: Enum\n    r5900_psllvw: Enum\n    r5900_psrlvw: Enum\n    r5900_pmsubw: Enum\n    r5900_pmfhi: Enum\n    r5900_pmflo: Enum\n    r5900_pinth: Enum\n    r5900_pmultw: Enum\n    r5900_pdivw: Enum\n    r5900_pcpyld: Enum\n    r5900_pmaddh: Enum\n    r5900_phmadh: Enum\n    r5900_pand: Enum\n    r5900_pxor: Enum\n    r5900_pmsubh: Enum\n    r5900_phmsbh: Enum\n    r5900_pexeh: Enum\n    r5900_prevh: Enum\n    r5900_pmulth: Enum\n    r5900_pdivbw: Enum\n    r5900_pexew: Enum\n    r5900_prot3w: Enum\n    r5900_pmadduw: Enum\n    r5900_psravw: Enum\n    r5900_pmthi: Enum\n    r5900_pmtlo: Enum\n    r5900_pinteh: Enum\n    r5900_pmultuw: Enum\n    r5900_pdivuw: Enum\n    r5900_pcpyud: Enum\n    r5900_por: Enum\n    r5900_pnor: Enum\n    r5900_pexch: Enum\n    r5900_pcpyh: Enum\n    r5900_pexcw: Enum\n    r5900_ei: Enum\n    r5900_di: Enum\n    r5900_rsqrt_s: Enum\n    r5900_adda_s: Enum\n    r5900_suba_s: Enum\n    r5900_mula_s: Enum\n    r5900_madd_s: Enum\n    r5900_msub_s: Enum\n    r5900_madda_s: Enum\n    r5900_msuba_s: Enum\n    r5900_max_s: Enum\n    r5900_min_s: Enum\n    r5900_qmfc2: Enum\n    r5900_cfc2: Enum\n    r5900_qmtc2: Enum\n    r5900_ctc2: Enum\n    r5900_bc2f: Enum\n    r5900_bc2t: Enum\n    r5900_bc2fl: Enum\n    r5900_bc2tl: Enum\n    r5900_vaddx: Enum\n    r5900_vaddy: Enum\n    r5900_vaddz: Enum\n    r5900_vaddw: Enum\n    r5900_vsubx: Enum\n    r5900_vsuby: Enum\n    r5900_vsubz: Enum\n    r5900_vsubw: Enum\n    r5900_vmaddx: Enum\n    r5900_vmaddy: Enum\n    r5900_vmaddz: Enum\n    r5900_vmaddw: Enum\n    r5900_vmsubx: Enum\n    r5900_vmsuby: Enum\n    r5900_vmsubz: Enum\n    r5900_vmsubw: Enum\n    r5900_vmaxx: Enum\n    r5900_vmaxy: Enum\n    r5900_vmaxz: Enum\n    r5900_vmaxw: Enum\n    r5900_vminix: Enum\n    r5900_vminiy: Enum\n    r5900_vminiz: Enum\n    r5900_vminiw: Enum\n    r5900_vmulx: Enum\n    r5900_vmuly: Enum\n    r5900_vmulz: Enum\n    r5900_vmulw: Enum\n    r5900_vmulq: Enum\n    r5900_vmaxi: Enum\n    r5900_vmuli: Enum\n    r5900_vminii: Enum\n    r5900_vaddq: Enum\n    r5900_vmaddq: Enum\n    r5900_vaddi: Enum\n    r5900_vmaddi: Enum\n    r5900_vsubq: Enum\n    r5900_vmsubq: Enum\n    r5900_vsubi: Enum\n    r5900_vmsubi: Enum\n    r5900_vadd: Enum\n    r5900_vmadd: Enum\n    r5900_vmul: Enum\n    r5900_vmax: Enum\n    r5900_vsub: Enum\n    r5900_vmsub: Enum\n    r5900_vopmsub: Enum\n    r5900_vmini: Enum\n    r5900_viadd: Enum\n    r5900_visub: Enum\n    r5900_viaddi: Enum\n    r5900_viand: Enum\n    r5900_vior: Enum\n    r5900_vcallms: Enum\n    r5900_callmsr: Enum\n    r5900_vaddax: Enum\n    r5900_vadday: Enum\n    r5900_vaddaz: Enum\n    r5900_vaddaw: Enum\n    r5900_vsubax: Enum\n    r5900_vsubay: Enum\n    r5900_vsubaz: Enum\n    r5900_vsubaw: Enum\n    r5900_vvmaddx: Enum\n    r5900_vvmaddy: Enum\n    r5900_vvmaddz: Enum\n    r5900_vvmaddw: Enum\n    r5900_vmsubax: Enum\n    r5900_vmsubay: Enum\n    r5900_vmsubaz: Enum\n    r5900_vmsubaw: Enum\n    r5900_vitof0: Enum\n    r5900_vitof4: Enum\n    r5900_vitof12: Enum\n    r5900_vitof15: Enum\n    r5900_vftoi0: Enum\n    r5900_vftoi4: Enum\n    r5900_vftoi12: Enum\n    r5900_vftoi15: Enum\n    r5900_vmulax: Enum\n    r5900_vmulay: Enum\n    r5900_vmulaz: Enum\n    r5900_vmulaw: Enum\n    r5900_vmulaq: Enum\n    r5900_vabs: Enum\n    r5900_vmulai: Enum\n    r5900_vclipw: Enum\n    r5900_vaddaq: Enum\n    r5900_vmaddaq: Enum\n    r5900_vaddai: Enum\n    r5900_vmaddai: Enum\n    r5900_vsubaq: Enum\n    r5900_vmsubaq: Enum\n    r5900_vsubai: Enum\n    r5900_vmsubai: Enum\n    r5900_vadda: Enum\n    r5900_vmadda: Enum\n    r5900_vmula: Enum\n    r5900_vsuba: Enum\n    r5900_vmsuba: Enum\n    r5900_vopmula: Enum\n    r5900_vnop: Enum\n    r5900_vmove: Enum\n    r5900_vmr32: Enum\n    r5900_vlqi: Enum\n    r5900_vsqi: Enum\n    r5900_vlqd: Enum\n    r5900_vsqd: Enum\n    r5900_vdiv: Enum\n    r5900_vsqrt: Enum\n    r5900_vrsqrt: Enum\n    r5900_vwaitq: Enum\n    r5900_vmtir: Enum\n    r5900_vmfir: Enum\n    r5900_vilwr: Enum\n    r5900_viswr: Enum\n    r5900_vrnext: Enum\n    r5900_vrget: Enum\n    r5900_vrinit: Enum\n    r5900_vrxor: Enum\n    r5900_MAX: Enum\n\n    ALL_MAX: Enum\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/rabbitizer/LoPairingInfo.pyi",
    "content": "#!/usr/bin/env python3\n\n# SPDX-FileCopyrightText: © 2022 Decompollaborate\n# SPDX-License-Identifier: MIT\n\nfrom __future__ import annotations\n\n\nclass LoPairingInfo:\n    instrOffset: int\n    value: int\n    shouldProcess: bool\n    isGpRel: bool\n    isGpGot: bool\n\n    def __init__(self): ...\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/rabbitizer/RegGprN32.pyi",
    "content": "#!/usr/bin/env python3\n\n# SPDX-FileCopyrightText: © 2022 Decompollaborate\n# SPDX-License-Identifier: MIT\n\nfrom __future__ import annotations\n\nfrom .Enum import Enum\n\n\nclass RegGprN32:\n    zero: Enum\n    at: Enum\n    v0: Enum\n    v1: Enum\n    a0: Enum\n    a1: Enum\n    a2: Enum\n    a3: Enum\n    a4: Enum\n    a5: Enum\n    a6: Enum\n    a7: Enum\n    t0: Enum\n    t1: Enum\n    t2: Enum\n    t3: Enum\n    s0: Enum\n    s1: Enum\n    s2: Enum\n    s3: Enum\n    s4: Enum\n    s5: Enum\n    s6: Enum\n    s7: Enum\n    t8: Enum\n    t9: Enum\n    k0: Enum\n    k1: Enum\n    gp: Enum\n    sp: Enum\n    fp: Enum\n    ra: Enum\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/rabbitizer/RegGprO32.pyi",
    "content": "#!/usr/bin/env python3\n\n# SPDX-FileCopyrightText: © 2022 Decompollaborate\n# SPDX-License-Identifier: MIT\n\nfrom __future__ import annotations\n\nfrom .Enum import Enum\n\n\nclass RegGprO32:\n    zero: Enum\n    at: Enum\n    v0: Enum\n    v1: Enum\n    a0: Enum\n    a1: Enum\n    a2: Enum\n    a3: Enum\n    t0: Enum\n    t1: Enum\n    t2: Enum\n    t3: Enum\n    t4: Enum\n    t5: Enum\n    t6: Enum\n    t7: Enum\n    s0: Enum\n    s1: Enum\n    s2: Enum\n    s3: Enum\n    s4: Enum\n    s5: Enum\n    s6: Enum\n    s7: Enum\n    t8: Enum\n    t9: Enum\n    k0: Enum\n    k1: Enum\n    gp: Enum\n    sp: Enum\n    fp: Enum\n    ra: Enum\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/rabbitizer/RegistersTracker.pyi",
    "content": "#!/usr/bin/env python3\n\n# SPDX-FileCopyrightText: © 2022 Decompollaborate\n# SPDX-License-Identifier: MIT\n\nfrom __future__ import annotations\n\nfrom .rabbitizer import Instruction\nfrom .LoPairingInfo import LoPairingInfo\n\n\nclass RegistersTracker:\n    def __init__(self, other: RegistersTracker|None=None): ...\n\n    def moveRegisters(self, instr: Instruction) -> bool: ...\n    def overwriteRegisters(self, instr: Instruction, instructionOffset: int) -> None: ...\n    def unsetRegistersAfterFuncCall(self, instr: Instruction, prevInstr: Instruction) -> None: ...\n    def getAddressIfCanSetType(self, instr: Instruction, instrOffset: int) -> int|None: ...\n    def getJrInfo(self, instr: Instruction) -> tuple[int, int]|None: ...\n\n    def processLui(self, instr: Instruction, instrOffset: int, prevInstr: Instruction|None=None) -> None: ...\n    def processGpLoad(self, instr: Instruction, instrOffset: int) -> None: ...\n    def getLuiOffsetForConstant(self, instr: Instruction) -> int|None: ...\n    def processConstant(self, instr: Instruction, value: int, offset: int) -> None: ...\n    def getLuiOffsetForLo(self, instr: Instruction, instrOffset: int) -> tuple[int, bool, bool]: ... #! deprecated\n    def preprocessLoAndGetInfo(self, instr: Instruction, instrOffset: int) -> LoPairingInfo: ...\n    def processLo(self, instr: Instruction, value: int, offset: int) -> None: ...\n    def hasLoButNoHi(self, instr: Instruction) -> bool: ...\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/rabbitizer/TrackedRegisterState.pyi",
    "content": "#!/usr/bin/env python3\n\n# SPDX-FileCopyrightText: © 2022 Decompollaborate\n# SPDX-License-Identifier: MIT\n\nfrom __future__ import annotations\n\n\nclass RegistersTracker:\n    registerNum: int\n\n    hasLuiValue: bool\n    luiOffset: int # The offset of last lui which set a value to this register\n    luiSetOnBranchLikely: bool\n\n    hasGpGot: bool\n    gpGotOffset: int\n\n    hasLoValue: bool\n    loOffset: int\n    dereferenced: bool\n    dereferenceOffset: int\n\n    value: int\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/rabbitizer/Utils.pyi",
    "content": "#!/usr/bin/env python3\n\n# SPDX-FileCopyrightText: © 2022 Decompollaborate\n# SPDX-License-Identifier: MIT\n\nfrom __future__ import annotations\n\n\nclass Utils:\n    @staticmethod\n    def from2Complement(number: int, bits: int) -> int: ...\n\n    @staticmethod\n    def escapeString(src: str) -> str: ...\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/rabbitizer/__init__.pyi",
    "content": "#!/usr/bin/env python3\n\n# SPDX-FileCopyrightText: © 2022 Decompollaborate\n# SPDX-License-Identifier: MIT\n\nfrom __future__ import annotations\n\nfrom .Utils import *\n\nfrom .Enum import *\nfrom .InstrCategory import *\nfrom .InstrId import *\n\nfrom .RegGprO32 import *\nfrom .RegGprN32 import *\n\nfrom .Config import *\n\nfrom .rabbitizer import *\n\nfrom .RegistersTracker import *\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/rabbitizer/enums/enums_utils.c",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"enums_utils.h\"\n\n\nint rabbitizer_EnumMetadata_Initialize(PyObject *submodule, RabbitizerEnumMetadata *enumValues) {\n    for (size_t i = 0; enumValues[i].enumType != 0; i++) {\n        PyObject *args;\n\n        args = Py_BuildValue(\"ssi\", enumValues[i].enumType, enumValues[i].name, enumValues[i].value);\n        if (args == NULL) {\n            goto error;\n        }\n\n        enumValues[i].instance = PyObject_CallObject((PyObject*)&rabbitizer_type_Enum_TypeObject, args);\n        Py_DECREF(args);\n        if (enumValues[i].instance == NULL) {\n            goto error;\n        }\n\n        enumValues[i].isInstanced = true;\n        if (PyModule_AddObject(submodule, enumValues[i].name, enumValues[i].instance) < 0) {\n            goto error;\n        }\n    }\n    return 0;\n\nerror:\n    for (size_t i = 0; enumValues[i].enumType != 0; i++) {\n        if (enumValues[i].isInstanced) {\n            Py_DECREF(enumValues[i].instance);\n        }\n        enumValues[i].isInstanced = false;\n    }\n\n    return -1;\n}\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/rabbitizer/enums/enums_utils.h",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#ifndef RABBITIZER_ENUMS_UTILS_H\n#define RABBITIZER_ENUMS_UTILS_H\n#pragma once\n\n\n#define PY_SSIZE_T_CLEAN\n#include <Python.h>\n#include \"structmember.h\"\n\n#include <stdbool.h>\n\n\nextern PyTypeObject rabbitizer_type_Enum_TypeObject;\n\n\ntypedef struct PyRabbitizerEnum {\n    PyObject_HEAD\n    PyObject *enumType;\n    PyObject *name;\n    int value;\n} PyRabbitizerEnum;\n\ntypedef struct RabbitizerEnumMetadata {\n    const char *enumType;\n    const char *name;\n    int value;\n    bool isInstanced;\n    PyObject *instance;\n} RabbitizerEnumMetadata;\n\n\nint rabbitizer_EnumMetadata_Initialize(PyObject *submodule, RabbitizerEnumMetadata *enumValues);\n\n\n#define DECL_ENUM(enumName) \\\n    extern RabbitizerEnumMetadata rabbitizer_enum_##enumName##_enumvalues[]; \\\n    PyObject *rabbitizer_enum_##enumName##_Init(void); \\\n    /* Return true if o is of this enum type */ \\\n    int rabbitizer_enum_##enumName##_Check(PyObject *o);\n\n#define DEF_ENUM(enumName, docs) \\\n    static PyModuleDef rabbitizer_enum_##enumName##_module = { \\\n        PyModuleDef_HEAD_INIT, \\\n        .m_name = \"rabbitizer.\" #enumName, \\\n        .m_doc = PyDoc_STR(docs), \\\n        .m_size = -1, \\\n        .m_methods = rabbitizer_enum_##enumName##_methods, \\\n    }; \\\n    PyObject *rabbitizer_enum_##enumName##_Init(void) { \\\n        PyObject *submodule; \\\n        if (PyType_Ready(&rabbitizer_type_Enum_TypeObject) < 0) { \\\n            return NULL; \\\n        } \\\n        submodule = PyModule_Create(&rabbitizer_enum_##enumName##_module); \\\n        if (submodule == NULL) { \\\n            return NULL; \\\n        } \\\n        if (rabbitizer_EnumMetadata_Initialize(submodule, rabbitizer_enum_##enumName##_enumvalues) < 0) { \\\n            Py_DECREF(submodule); \\\n            return NULL; \\\n        } \\\n        return submodule; \\\n    } \\\n    /* Return true if o is of this enum type */ \\\n    int rabbitizer_enum_##enumName##_Check(PyObject *o) { \\\n        int isInstance = PyObject_IsInstance(o, (PyObject*)&rabbitizer_type_Enum_TypeObject); \\\n        int enumTypeCmp; \\\n        if (isInstance < 0) { \\\n            /* An error happened */ \\\n            /* PyObject_IsInstance already sets an exception, so nothing else to do here */ \\\n            return -1; \\\n        } \\\n        if (isInstance == 0) { \\\n            /* `other` isn't an instance of the Enum type */ \\\n            return 0; \\\n        } \\\n        /* Check if both enums have the same `enumType` */ \\\n        enumTypeCmp = PyUnicode_CompareWithASCIIString(((PyRabbitizerEnum*)o)->enumType, #enumName); \\\n        return enumTypeCmp == 0; \\\n    }\n\n#endif\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/rabbitizer/enums/rabbitizer_enum_Abi.c",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"enums_utils.h\"\n#include \"common/RabbitizerConfig.h\"\n#include \"common/Utils.h\"\n\n\n#define RABBITIZER_DEF_ABI(name) { \"Abi\", #name, RABBITIZER_ABI_##name, false, NULL }\n\nRabbitizerEnumMetadata rabbitizer_enum_Abi_enumvalues[] = {\n    #include \"common/Abi.inc\"\n    RABBITIZER_DEF_ABI(MAX),\n\n    { 0 },\n};\n\n#undef RABBITIZER_DEF_ABI\n\n\nstatic PyObject *rabbitizer_enum_Abi_fromStr(UNUSED PyObject *self, PyObject *args, PyObject *kwds) {\n    static char *kwlist[] = { \"name\", NULL };\n    const char *name = NULL;\n    RabbitizerAbi abi;\n    PyObject *ret;\n\n    if (!PyArg_ParseTupleAndKeywords(args, kwds, \"z\", kwlist, &name)) {\n        return NULL;\n    }\n\n    abi = RabbitizerAbi_fromStr(name);\n\n    ret = rabbitizer_enum_Abi_enumvalues[abi].instance;\n    Py_INCREF(ret);\n    return ret;\n}\n\n\n#define METHOD_NO_ARGS(name, docs)  { #name, (PyCFunction) rabbitizer_enum_Abi_##name, METH_NOARGS,                  PyDoc_STR(docs) }\n#define METHOD_ARGS(name, docs)     { #name, (PyCFunction) rabbitizer_enum_Abi_##name, METH_VARARGS | METH_KEYWORDS, PyDoc_STR(docs) }\n\nstatic PyMethodDef rabbitizer_enum_Abi_methods[] = {\n    METHOD_ARGS(fromStr, \"\"),\n\n    { 0 },\n};\n\nDEF_ENUM(Abi, \"\")\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/rabbitizer/enums/rabbitizer_enum_InstrCategory.c",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"enums_utils.h\"\n#include \"instructions/RabbitizerInstruction.h\"\n\n\n#define RABBITIZER_DEF_INSTR_CATEGORY(name) { \"InstrCategory\", #name, RABBITIZER_INSTRCAT_##name, false, NULL }\n\nRabbitizerEnumMetadata rabbitizer_enum_InstrCategory_enumvalues[] = {\n    #include \"instructions/InstrCategory.inc\"\n    RABBITIZER_DEF_INSTR_CATEGORY(MAX),\n\n    { 0 },\n};\n\n#undef RABBITIZER_DEF_INSTR_CATEGORY\n\nstatic PyMethodDef rabbitizer_enum_InstrCategory_methods[] = {\n    { 0 },\n};\n\nDEF_ENUM(InstrCategory, \"\")\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/rabbitizer/enums/rabbitizer_enum_InstrId.c",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"enums_utils.h\"\n#include \"instructions/RabbitizerInstrId.h\"\n\n\n#define RABBITIZER_DEF_INSTR_ID(prefix, caseBits, name, ...)                   { \"InstrId\", #prefix \"_\" #name, RABBITIZER_INSTR_ID_##prefix##_##name, false, NULL },\n#define RABBITIZER_DEF_INSTR_ID_ALTNAME(prefix, caseBits, name, altname, ...)  RABBITIZER_DEF_INSTR_ID(prefix, caseBits, name, __VA_ARGS__)\n\nRabbitizerEnumMetadata rabbitizer_enum_InstrId_enumvalues[] = {\n    #include \"instructions/instr_id/RabbitizerInstrId_cpu.inc\"\n\n    #include \"instructions/instr_id/RabbitizerInstrId_rsp.inc\"\n\n    #include \"instructions/instr_id/RabbitizerInstrId_r5900.inc\"\n\n    RABBITIZER_DEF_INSTR_ID(ALL, , MAX, )\n    { 0 },\n};\n\n#undef RABBITIZER_DEF_INSTR_ID\n#undef RABBITIZER_DEF_INSTR_ID_ALTNAME\n\nstatic PyMethodDef rabbitizer_enum_InstrId_methods[] = {\n    { 0 },\n};\n\nDEF_ENUM(InstrId, \"\")\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/rabbitizer/enums/rabbitizer_type_Enum.c",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"rabbitizer_module.h\"\n#include \"enums_utils.h\"\n#include \"common/Utils.h\"\n\n\nstatic void rabbitizer_type_Enum_dealloc(PyRabbitizerEnum *self) {\n    Py_XDECREF(self->enumType);\n    Py_XDECREF(self->name);\n    Py_TYPE(self)->tp_free((PyObject *) self);\n}\n\nstatic PyObject *rabbitizer_type_Enum_new(PyTypeObject *type, UNUSED PyObject *args, UNUSED PyObject *kwds) {\n    PyRabbitizerEnum *self = (PyRabbitizerEnum *) type->tp_alloc(type, 0);\n\n    if (self == NULL) {\n        return NULL;\n    }\n\n    self->enumType = PyUnicode_FromString(\"\");\n    if (self->enumType == NULL) {\n        Py_DECREF(self);\n        return NULL;\n    }\n    self->name = PyUnicode_FromString(\"\");\n    if (self->name == NULL) {\n        Py_DECREF(self);\n        return NULL;\n    }\n    self->value = 0;\n\n    return (PyObject *) self;\n}\n\nstatic int rabbitizer_type_Enum_init(PyRabbitizerEnum *self, PyObject *args, PyObject *kwds) {\n    static char *kwlist[] = { \"enumType\", \"name\", \"value\", NULL };\n    PyObject *enumType = NULL;\n    PyObject *name = NULL;\n\n    if (!PyArg_ParseTupleAndKeywords(args, kwds, \"UUi\", kwlist, &enumType, &name, &self->value)) {\n        return -1;\n    }\n\n    if (enumType != NULL) {\n        PyObject *tmp = NULL;\n\n        tmp = self->enumType;\n        Py_INCREF(enumType);\n        self->enumType = enumType;\n        Py_DECREF(tmp);\n    }\n    if (name) {\n        PyObject *tmp = NULL;\n\n        tmp = self->name;\n        Py_INCREF(name);\n        self->name = name;\n        Py_DECREF(tmp);\n    }\n\n    return 0;\n}\n\n\n#define DEF_MEMBER_GET_INT(name) \\\n    static PyObject *rabbitizer_type_Enum_member_get_##name(PyRabbitizerEnum *self, PyObject *Py_UNUSED(ignored)) { \\\n        return PyLong_FromLong(self->name); \\\n    }\n\n#define DEF_MEMBER_GET_OBJREF(name) \\\n    static PyObject *rabbitizer_type_Enum_member_get_##name(PyRabbitizerEnum *self, PyObject *Py_UNUSED(ignored)) { \\\n        Py_INCREF(self->name); \\\n        return self->name; \\\n    }\n\nDEF_MEMBER_GET_OBJREF(name)\nDEF_MEMBER_GET_INT(value)\n\n\n#define MEMBER_GET(name, docs, closure)      { #name, (getter) rabbitizer_type_Enum_member_get_##name, (setter) NULL,                                   PyDoc_STR(docs), closure }\n#define MEMBER_SET(name, docs, closure)      { #name, (getter) NULL,                                   (setter) rabbitizer_type_Enum_member_set_##name, PyDoc_STR(docs), closure }\n#define MEMBER_GET_SET(name, docs, closure)  { #name, (getter) rabbitizer_type_Enum_member_get_##name, (setter) rabbitizer_type_Enum_member_set_##name, PyDoc_STR(docs), closure }\n\nstatic PyGetSetDef rabbitizer_type_Enum_getsetters[] = {\n    MEMBER_GET(name, \"\", NULL),\n    MEMBER_GET(value, \"\", NULL),\n\n    { 0 },\n};\n\n\n// Crappy hash\nPy_hash_t rabbitizer_type_Enum_hash(PyRabbitizerEnum *self) {\n    Py_hash_t hash = PyObject_Hash(self->enumType);\n\n    if (hash == -1) {\n        return -1;\n    }\n\n    return hash + self->value;\n}\n\n// Checks for the 6 basic comparisons (==, !=, <, <=, >, >=)\nPyObject *rabbitizer_type_Enum_richcompare(PyRabbitizerEnum *self, PyObject *other, int op) {\n    int isInstance = PyObject_IsInstance(other, (PyObject*)&rabbitizer_type_Enum_TypeObject);\n    int enumTypeCmp;\n    int otherValue;\n\n    if (isInstance < 0) {\n        // An error happened\n        // PyObject_IsInstance already sets an exception, so nothing else to do here\n        return NULL;\n    }\n\n    if (isInstance == 0) {\n        // `other` isn't an instance of the Enum type\n        Py_RETURN_FALSE;\n    }\n\n    // Check if both enums have the same `enumType`\n    enumTypeCmp = PyUnicode_Compare(self->enumType, ((PyRabbitizerEnum*)other)->enumType);\n    if (enumTypeCmp < 0) {\n        // Negative could mean it isn't equal or an error occurred, so we need to check for errors\n        if (PyErr_Occurred() != NULL) {\n            return NULL;\n        }\n        Py_RETURN_FALSE;\n    }\n    if (enumTypeCmp != 0) {\n        Py_RETURN_FALSE;\n    }\n\n    otherValue = ((PyRabbitizerEnum*)other)->value;\n\n    // Fails to build on ci builds for some reason\n    // Py_RETURN_RICHCOMPARE(self->value, ((PyRabbitizerEnum*)other)->value, op);\n\n    switch (op) {\n        case Py_EQ: if ((self->value) == (otherValue)) Py_RETURN_TRUE; Py_RETURN_FALSE;\n        case Py_NE: if ((self->value) != (otherValue)) Py_RETURN_TRUE; Py_RETURN_FALSE;\n        case Py_LT: if ((self->value) < (otherValue)) Py_RETURN_TRUE; Py_RETURN_FALSE; \n        case Py_GT: if ((self->value) > (otherValue)) Py_RETURN_TRUE; Py_RETURN_FALSE; \n        case Py_LE: if ((self->value) <= (otherValue)) Py_RETURN_TRUE; Py_RETURN_FALSE;\n        case Py_GE: if ((self->value) >= (otherValue)) Py_RETURN_TRUE; Py_RETURN_FALSE;\n        default:\n            //Py_UNREACHABLE();\n            UNREACHABLE;\n    }\n}\n\n\n// To allow piclking the object\nstatic PyObject *rabbitizer_type_Enum___reduce__(PyRabbitizerEnum *self, UNUSED PyObject *closure) {\n    PyObject *args;\n    PyObject *enumType;\n    PyObject *name;\n    PyObject *value;\n\n    enumType = self->enumType; \n    Py_INCREF(enumType);\n    name = self->name;\n    Py_INCREF(name);\n    value = PyLong_FromLong(self->value);\n\n\n    args = PyTuple_Pack(3, enumType, name, value);\n\n    return PyTuple_Pack(2, (PyObject*)&rabbitizer_type_Enum_TypeObject, args);\n}\n\n\n#define METHOD_NO_ARGS(name, docs)  { #name, (PyCFunction)rabbitizer_type_Enum_##name, METH_NOARGS,                  PyDoc_STR(docs) }\n#define METHOD_ARGS(name, docs)     { #name, (PyCFunction)rabbitizer_type_Enum_##name, METH_VARARGS | METH_KEYWORDS, PyDoc_STR(docs) }\n\n\nstatic PyMethodDef rabbitizer_type_Enum_methods[] = {\n    METHOD_ARGS(__reduce__, \"\"),\n\n    { 0 },\n};\n\nstatic PyObject *rabbitizer_type_Enum_repr(PyRabbitizerEnum *self) {\n    return PyUnicode_FromFormat(\"<%U: %U (%i)>\", self->enumType, self->name, self->value);\n}\n\nstatic PyObject *rabbitizer_type_Enum_str(PyRabbitizerEnum *self) {\n    return rabbitizer_type_Enum_repr(self);\n}\n\n// TODO: implement hash and int\n\nPyTypeObject rabbitizer_type_Enum_TypeObject = {\n    PyVarObject_HEAD_INIT(NULL, 0)\n    .tp_name = \"rabbitizer.Enum\",\n    .tp_doc = PyDoc_STR(\"Enum\"),\n    .tp_basicsize = sizeof(PyRabbitizerEnum),\n    .tp_itemsize = 0,\n    .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,\n    .tp_new = rabbitizer_type_Enum_new,\n    .tp_init = (initproc) rabbitizer_type_Enum_init,\n    .tp_dealloc = (destructor) rabbitizer_type_Enum_dealloc,\n    .tp_hash = (hashfunc) rabbitizer_type_Enum_hash,\n    .tp_richcompare = (richcmpfunc) rabbitizer_type_Enum_richcompare,\n    .tp_repr = (reprfunc) rabbitizer_type_Enum_repr,\n    .tp_str = (reprfunc) rabbitizer_type_Enum_str,\n    //.tp_members = rabbitizer_type_Enum_members,\n    .tp_methods = rabbitizer_type_Enum_methods,\n    .tp_getset = rabbitizer_type_Enum_getsetters,\n};\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/rabbitizer/enums/registers/rabbitizer_enum_GprN32.c",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"enums/enums_utils.h\"\n#include \"instructions/RabbitizerRegister.h\"\n\n\n#define RABBITIZER_DEF_REG(prefix, name, numeric) \\\n    { \"RegGprN32\", #name, RABBITIZER_REG_##prefix##_##name, false, NULL }\n\n#define RABBITIZER_DEF_REG_NODOLLAR(prefix, name, numeric) \\\n    { \"RegGprN32\", #name, RABBITIZER_REG_##prefix##_##name, false, NULL }\n\nRabbitizerEnumMetadata rabbitizer_enum_RegGprN32_enumvalues[] = {\n    #include \"instructions/registers/RabbitizerRegister_GprN32.inc\"\n\n    { 0 },\n};\n\n#undef RABBITIZER_DEF_REG\n#undef RABBITIZER_DEF_REG_NODOLLAR\n\n\nstatic PyMethodDef rabbitizer_enum_RegGprN32_methods[] = {\n    { 0 },\n};\n\nDEF_ENUM(RegGprN32, \"\")\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/rabbitizer/enums/registers/rabbitizer_enum_GprO32.c",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"enums/enums_utils.h\"\n#include \"instructions/RabbitizerRegister.h\"\n\n\n#define RABBITIZER_DEF_REG(prefix, name, numeric) \\\n    { \"RegGprO32\", #name, RABBITIZER_REG_##prefix##_##name, false, NULL }\n\n#define RABBITIZER_DEF_REG_NODOLLAR(prefix, name, numeric) \\\n    { \"RegGprO32\", #name, RABBITIZER_REG_##prefix##_##name, false, NULL }\n\nRabbitizerEnumMetadata rabbitizer_enum_RegGprO32_enumvalues[] = {\n    #include \"instructions/registers/RabbitizerRegister_GprO32.inc\"\n\n    { 0 },\n};\n\n#undef RABBITIZER_DEF_REG\n#undef RABBITIZER_DEF_REG_NODOLLAR\n\n\nstatic PyMethodDef rabbitizer_enum_RegGprO32_methods[] = {\n    { 0 },\n};\n\nDEF_ENUM(RegGprO32, \"\")\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/rabbitizer/py.typed",
    "content": ""
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/rabbitizer/rabbitizer.pyi",
    "content": "#!/usr/bin/env python3\n\n# SPDX-FileCopyrightText: © 2022 Decompollaborate\n# SPDX-License-Identifier: MIT\n\nfrom __future__ import annotations\n\nfrom .Enum import Enum\nfrom .InstrCategory import InstrCategory\n\n\nclass Instruction:\n    rs: Enum\n    \"\"\"The value of the `rs` register for this instruction.\n    The type of this attribute will be either a `RegGprO32` or a `RegGprN32` depending on the current `config.regNames_gprAbiNames` value.\n    If the current instruction does not use the `rs` register, then a Runtime exception will be raised.\n    Read-only.\"\"\"\n    rt: Enum\n    \"\"\"The value of the `rt` register for this instruction.\n    The type of this attribute will be either a `RegGprO32` or a `RegGprN32` depending on the current `config.regNames_gprAbiNames` value.\n    If the current instruction does not use the `rt` register, then a Runtime exception will be raised.\n    Read-only.\"\"\"\n    rd: Enum\n    \"\"\"The value of the `rd` register for this instruction.\n    The type of this attribute will be either a `RegGprO32` or a `RegGprN32` depending on the current `config.regNames_gprAbiNames` value.\n    If the current instruction does not use the `rd` register, then a Runtime exception will be raised.\n    Read-only.\"\"\"\n    sa: int\n    \"\"\"The value of the `sa` field for this instruction.\n    If the current instruction does not have a `sa` field, then a Runtime exception will be raised.\n    Read-only.\"\"\"\n\n    uniqueId: Enum\n    \"\"\"An unique identificator for the opcode of this instruction.\n    The type is an `InstrId` enum.\n    Read-only.\"\"\"\n\n    vram: int = 0\n    \"\"\"The vram (virtual ram) address for this instruction\"\"\"\n    inHandwrittenFunction: bool = False\n    \"\"\"Boolean value indicating if the current instruction is used on a handwritten function. This is intended to be determined by the user.\"\"\"\n\n\n    def __init__(self, word: int, vram: int=0, category: Enum=InstrCategory.CPU) -> None: ...\n\n    def getRaw(self) -> int: ...\n    def getImmediate(self) -> int: ...\n    def getProcessedImmediate(self) -> int: ...\n    def getInstrIndexAsVram(self) -> int: ...\n    def getBranchOffset(self) -> int: ...\n    def getGenericBranchOffset(self, currentVram: int) -> int: ...\n    def getOpcodeName(self) -> str: ...\n\n    def blankOut(self) -> None: ...\n\n    def isImplemented(self) -> bool: ...\n    def isLikelyHandwritten(self) -> bool: ...\n    def isNop(self) -> bool: ...\n    def isUnconditionalBranch(self) -> bool: ...\n    def isJrRa(self) -> bool: ...\n    def isJrNotRa(self) -> bool: ...\n    def hasDelaySlot(self) -> bool: ...\n    def mapInstrToType(self) -> str|None: ...\n\n    def sameOpcode(self, other: Instruction) -> bool: ...\n    def sameOpcodeButDifferentArguments(self, other: Instruction) -> bool: ...\n\n    def isValid(self) -> bool: ...\n\n    def isUnknownType(self) -> bool: ...\n    def isJType(self) -> bool: ...\n    def isIType(self) -> bool: ...\n    def isRType(self) -> bool: ...\n    def isRegimmType(self) -> bool: ...\n    def isBranch(self) -> bool: ...\n    def isBranchLikely(self) -> bool: ...\n    def isJump(self) -> bool: ...\n    def isTrap(self) -> bool: ...\n    def isFloat(self) -> bool: ...\n    def isDouble(self) -> bool: ...\n    def isUnsigned(self) -> bool: ...\n    def modifiesRt(self) -> bool: ...\n    def modifiesRd(self) -> bool: ...\n    def notEmitedByCompilers(self) -> bool: ...\n    def canBeHi(self) -> bool: ...\n    def canBeLo(self) -> bool: ...\n    def doesLink(self) -> bool: ...\n    def doesDereference(self) -> bool: ...\n    def doesLoad(self) -> bool: ...\n    def doesStore(self) -> bool: ...\n    def maybeIsMove(self) -> bool: ...\n    def isPseudo(self) -> bool: ...\n\n    def disassemble(self, immOverride: str|None=None, extraLJust: int=0) -> str: ...\n\n    def __reduce__(self) -> tuple: ...\n\n    def __repr__(self) -> str: ...\n    def __str__(self) -> str: ...\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/rabbitizer/rabbitizer_global_config.c",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n/**\n * Wrapper to expose rabbitizer's global configuration\n */\n\n#include \"rabbitizer_module.h\"\n#include \"common/RabbitizerConfig.h\"\n#include \"common/Utils.h\"\n\n\n#define DEF_MEMBER_GET_BOOL(category, name) \\\n    static PyObject *rabbitizer_global_config_get_##category##_##name(UNUSED PyObject *self, UNUSED PyObject *closure) { \\\n        if (RabbitizerConfig_Cfg.category.name) { \\\n            Py_RETURN_TRUE; \\\n        } \\\n        Py_RETURN_FALSE; \\\n    }\n#define DEF_MEMBER_SET_BOOL(category, name) \\\n    static int rabbitizer_global_config_set_##category##_##name(UNUSED PyObject *self, PyObject *value, UNUSED void *closure) { \\\n        if (value == NULL) { \\\n            PyErr_SetString(PyExc_TypeError, \"Cannot delete '\" #category \".\" #name \"' attribute\"); \\\n            return -1; \\\n        } \\\n        RabbitizerConfig_Cfg.category.name = PyObject_IsTrue(value); \\\n        return 0; \\\n    }\n\n#define DEF_MEMBER_GET_SET_BOOL(category, name) \\\n    DEF_MEMBER_GET_BOOL(category, name) \\\n    DEF_MEMBER_SET_BOOL(category, name)\n\n\n#define DEF_MEMBER_GET_INT(category, name) \\\n    static PyObject *rabbitizer_global_config_get_##category##_##name(UNUSED PyObject *self, UNUSED PyObject *closure) { \\\n        return PyLong_FromLong(RabbitizerConfig_Cfg.category.name); \\\n    }\n#define DEF_MEMBER_SET_INT(category, name, rangeCheck, minVal, maxVal) \\\n    static int rabbitizer_global_config_set_##category##_##name(UNUSED PyObject *self, PyObject *value, UNUSED void *closure) { \\\n        long val; \\\n        if (value == NULL) { \\\n            PyErr_SetString(PyExc_TypeError, \"Cannot delete '\" #category \"_\" #name \"' attribute\"); \\\n            return -1; \\\n        } \\\n        val = PyLong_AsLong(value); \\\n        if (val == -1) { \\\n            PyObject *err = PyErr_Occurred(); \\\n            if (err != NULL) { \\\n                return -1; \\\n            } \\\n        } \\\n        if (rangeCheck && (val < minVal || val > maxVal)) { \\\n            PyErr_SetString(PyExc_ValueError, \"Invalid value for '\" #category \"_\" #name \"' attribute\"); \\\n            return -1; \\\n        } \\\n        RabbitizerConfig_Cfg.category.name = val;\\\n        return 0; \\\n    }\n\n#define DEF_MEMBER_GET_SET_INT(category, name, rangeCheck, minVal, maxVal) \\\n    DEF_MEMBER_GET_INT(category, name) \\\n    DEF_MEMBER_SET_INT(category, name, rangeCheck, minVal, maxVal)\n\n#define DEF_MEMBER_GET_ABI(category, name) \\\n    static PyObject *rabbitizer_global_config_get_##category##_##name(UNUSED PyObject *self, UNUSED PyObject *ignored) { \\\n        PyObject *enumInstance = rabbitizer_enum_Abi_enumvalues[RabbitizerConfig_Cfg.category.name].instance; \\\n        if (enumInstance == NULL) { \\\n            PyErr_SetString(PyExc_RuntimeError, \"Internal error: invalid enum value for '\" #category \"_\" #name \"'\"); \\\n            return NULL; \\\n        } \\\n        Py_INCREF(enumInstance); \\\n        return enumInstance; \\\n    }\n#define DEF_MEMBER_SET_ABI(category, name) \\\n    static int rabbitizer_global_config_set_##category##_##name(UNUSED PyObject *self, PyObject *value, UNUSED void *closure) { \\\n        int enumCheck; \\\n        if (value == NULL) { \\\n            PyErr_SetString(PyExc_TypeError, \"Cannot delete '\" #category \"_\" #name \"' attribute\"); \\\n            return -1; \\\n        } \\\n        enumCheck = rabbitizer_enum_Abi_Check(value); \\\n        if (enumCheck <= 0) { \\\n            if (enumCheck == 0) { \\\n                PyErr_SetString(PyExc_ValueError, \"Invalid value for '\" #category \"_\" #name \"' attribute\"); \\\n            } \\\n            return -1; \\\n        } \\\n        RabbitizerConfig_Cfg.category.name = ((PyRabbitizerEnum*)value)->value; \\\n        return 0; \\\n    }\n\n#define DEF_MEMBER_GET_SET_ABI(category, name) \\\n    DEF_MEMBER_GET_ABI(category, name) \\\n    DEF_MEMBER_SET_ABI(category, name)\n\n\n#define MEMBER_GET(category, name, docs, closure)      { #category \"_\" #name, (getter) rabbitizer_global_config_get_##category##_##name, (setter) NULL,                                             PyDoc_STR(docs), closure }\n#define MEMBER_SET(category, name, docs, closure)      { #category \"_\" #name, (getter) NULL,                                             (setter) rabbitizer_global_config_set_##category##_##name, PyDoc_STR(docs), closure }\n#define MEMBER_GET_SET(category, name, docs, closure)  { #category \"_\" #name, (getter) rabbitizer_global_config_get_##category##_##name, (setter) rabbitizer_global_config_set_##category##_##name, PyDoc_STR(docs), closure }\n\n\nDEF_MEMBER_GET_SET_BOOL(regNames, namedRegisters)\nDEF_MEMBER_GET_SET_ABI(regNames, gprAbiNames)\nDEF_MEMBER_GET_SET_ABI(regNames, fprAbiNames)\nDEF_MEMBER_GET_SET_BOOL(regNames, userFpcCsr)\nDEF_MEMBER_GET_SET_BOOL(regNames, vr4300Cop0NamedRegisters)\nDEF_MEMBER_GET_SET_BOOL(regNames, vr4300RspCop0NamedRegisters)\n\nDEF_MEMBER_GET_SET_BOOL(pseudos, enablePseudos)\nDEF_MEMBER_GET_SET_BOOL(pseudos, pseudoBeqz)\nDEF_MEMBER_GET_SET_BOOL(pseudos, pseudoBnez)\nDEF_MEMBER_GET_SET_BOOL(pseudos, pseudoB)\nDEF_MEMBER_GET_SET_BOOL(pseudos, pseudoMove)\nDEF_MEMBER_GET_SET_BOOL(pseudos, pseudoNot)\nDEF_MEMBER_GET_SET_BOOL(pseudos, pseudoNegu)\nDEF_MEMBER_GET_SET_BOOL(pseudos, pseudoBal)\n\nDEF_MEMBER_GET_SET_BOOL(toolchainTweaks, treatJAsUnconditionalBranch)\nDEF_MEMBER_GET_SET_BOOL(toolchainTweaks, sn64DivFix)\n\nDEF_MEMBER_GET_SET_INT(misc, opcodeLJust, false, 0, 0)\nDEF_MEMBER_GET_SET_BOOL(misc, unknownInstrComment)\nDEF_MEMBER_GET_SET_BOOL(misc, omit0XOnSmallImm)\nDEF_MEMBER_GET_SET_BOOL(misc, upperCaseImm)\n\n\nstatic PyGetSetDef rabbitizer_global_config_GetSets[] = {\n    MEMBER_GET_SET(regNames, namedRegisters, \"\", NULL),\n    MEMBER_GET_SET(regNames, gprAbiNames, \"\", NULL),\n    MEMBER_GET_SET(regNames, fprAbiNames, \"\", NULL),\n    MEMBER_GET_SET(regNames, userFpcCsr, \"\", NULL),\n    MEMBER_GET_SET(regNames, vr4300Cop0NamedRegisters, \"\", NULL),\n    MEMBER_GET_SET(regNames, vr4300RspCop0NamedRegisters, \"\", NULL),\n\n    MEMBER_GET_SET(pseudos, enablePseudos, \"\", NULL),\n    MEMBER_GET_SET(pseudos, pseudoBeqz, \"\", NULL),\n    MEMBER_GET_SET(pseudos, pseudoBnez, \"\", NULL),\n    MEMBER_GET_SET(pseudos, pseudoB, \"\", NULL),\n    MEMBER_GET_SET(pseudos, pseudoMove, \"\", NULL),\n    MEMBER_GET_SET(pseudos, pseudoNot, \"\", NULL),\n    MEMBER_GET_SET(pseudos, pseudoNegu, \"\", NULL),\n    MEMBER_GET_SET(pseudos, pseudoBal, \"\", NULL),\n\n    MEMBER_GET_SET(toolchainTweaks, treatJAsUnconditionalBranch, \"\", NULL),\n    MEMBER_GET_SET(toolchainTweaks, sn64DivFix, \"\", NULL),\n\n    MEMBER_GET_SET(misc, opcodeLJust, \"\", NULL),\n    MEMBER_GET_SET(misc, unknownInstrComment, \"\", NULL),\n    MEMBER_GET_SET(misc, omit0XOnSmallImm, \"\", NULL),\n    MEMBER_GET_SET(misc, upperCaseImm, \"\", NULL),\n\n    { 0 },\n};\n\nPyTypeObject rabbitizer_global_config_TypeObject = {\n    PyVarObject_HEAD_INIT(NULL, 0)\n    .tp_name = \"rabbitizer.config\",\n    .tp_doc = PyDoc_STR(\"\"),\n    .tp_basicsize = sizeof(PyObject),\n    .tp_itemsize = 0,\n    .tp_flags = Py_TPFLAGS_DEFAULT,\n    .tp_new = PyType_GenericNew,\n    .tp_getset = rabbitizer_global_config_GetSets,\n};\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/rabbitizer/rabbitizer_module.c",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"rabbitizer_module.h\"\n\n#include <stdbool.h>\n\n#include \"common/Utils.h\"\n#include \"instructions/RabbitizerInstrId.h\"\n\n\ntypedef enum ModuleAttributeCategory {\n    MODULE_ATTRIBUTE_CAT_TYPE,\n    MODULE_ATTRIBUTE_CAT_INIT, // submodules\n    MODULE_ATTRIBUTE_CAT_GLOBAL,\n} ModuleAttributeCategory;\n\ntypedef struct ModuleAttribute {\n    union {\n        PyTypeObject *type;\n        PyObject *(*init)(void);\n        PyTypeObject *global;\n    };\n    ModuleAttributeCategory cat;\n    const char *name;\n    bool isInstanced;\n    PyObject *instance;\n} ModuleAttributes;\n\n#define MODULE_ATTRIBUTE_TYPE(name)   { {.type   = &rabbitizer_type_##name##_TypeObject},   MODULE_ATTRIBUTE_CAT_TYPE,   #name, false, NULL }\n#define MODULE_ATTRIBUTE_INIT(name)   { {.init   = rabbitizer_submodule_##name##_Init},     MODULE_ATTRIBUTE_CAT_INIT,   #name, false, NULL }\n#define MODULE_ATTRIBUTE_ENUM(name)   { {.init   = rabbitizer_enum_##name##_Init},          MODULE_ATTRIBUTE_CAT_INIT,   #name, false, NULL }\n#define MODULE_ATTRIBUTE_GLOBAL(name) { {.global = &rabbitizer_global_##name##_TypeObject}, MODULE_ATTRIBUTE_CAT_GLOBAL, #name, false, NULL }\n\nstatic ModuleAttributes rabbitizer_module_attributes[] = {\n    MODULE_ATTRIBUTE_INIT(Utils),\n    MODULE_ATTRIBUTE_GLOBAL(config),\n    MODULE_ATTRIBUTE_TYPE(Enum),\n    MODULE_ATTRIBUTE_ENUM(Abi),\n    MODULE_ATTRIBUTE_ENUM(InstrCategory),\n    MODULE_ATTRIBUTE_ENUM(InstrId),\n    MODULE_ATTRIBUTE_ENUM(RegGprO32),\n    MODULE_ATTRIBUTE_ENUM(RegGprN32),\n    MODULE_ATTRIBUTE_TYPE(Instruction),\n    MODULE_ATTRIBUTE_TYPE(LoPairingInfo),\n    MODULE_ATTRIBUTE_TYPE(TrackedRegisterState),\n    MODULE_ATTRIBUTE_TYPE(RegistersTracker),\n};\n\nstatic int rabbitizer_module_attributes_Ready(void) {\n    // Sanity checks and PyType_Ready\n    for (size_t i = 0; i < ARRAY_COUNT(rabbitizer_module_attributes); i++) {\n        if (rabbitizer_module_attributes[i].global == NULL || rabbitizer_module_attributes[i].name == NULL) {\n            return -1;\n        }\n        switch (rabbitizer_module_attributes[i].cat) {\n            case MODULE_ATTRIBUTE_CAT_TYPE:\n            case MODULE_ATTRIBUTE_CAT_GLOBAL:\n                if (PyType_Ready(rabbitizer_module_attributes[i].type) < 0) {\n                    return -1;\n                }\n                break;\n\n            case MODULE_ATTRIBUTE_CAT_INIT:\n                break;\n\n            default:\n                return -1;\n        }\n    }\n\n    return 0;\n}\n\nstatic int rabbitizer_module_attributes_Initialize(PyObject *module) {\n    for (size_t i = 0; i < ARRAY_COUNT(rabbitizer_module_attributes); i++) {\n        switch (rabbitizer_module_attributes[i].cat) {\n            case MODULE_ATTRIBUTE_CAT_TYPE:\n                rabbitizer_module_attributes[i].instance = (PyObject*) rabbitizer_module_attributes[i].type;\n                Py_INCREF(rabbitizer_module_attributes[i].instance);\n                break;\n\n            case MODULE_ATTRIBUTE_CAT_INIT:\n                rabbitizer_module_attributes[i].instance = rabbitizer_module_attributes[i].init();\n                if (rabbitizer_module_attributes[i].instance == NULL) {\n                    goto error;\n                }\n                break;\n\n            case MODULE_ATTRIBUTE_CAT_GLOBAL:\n                rabbitizer_module_attributes[i].instance = PyObject_CallObject((PyObject*)rabbitizer_module_attributes[i].global, NULL);\n                if (rabbitizer_module_attributes[i].instance == NULL) {\n                    goto error;\n                }\n                break;\n        }\n\n        rabbitizer_module_attributes[i].isInstanced = true;\n        if (PyModule_AddObject(module, rabbitizer_module_attributes[i].name, rabbitizer_module_attributes[i].instance) < 0) {\n            goto error;\n        }\n    }\n\n    return 0;\n\nerror:\n    for (size_t i = 0; i < ARRAY_COUNT(rabbitizer_module_attributes); i++) {\n        if (rabbitizer_module_attributes[i].isInstanced) {\n            Py_DECREF(rabbitizer_module_attributes[i].instance);\n        }\n        rabbitizer_module_attributes[i].isInstanced = false;\n    }\n    return -1;\n}\n\n\nstatic PyModuleDef rabbitizer_module = {\n    PyModuleDef_HEAD_INIT,\n    .m_name = \"rabbitizer\",\n    .m_doc = \"\",\n    .m_size = -1,\n};\n\nPyMODINIT_FUNC PyInit_rabbitizer(void) {\n    PyObject *module;\n\n    if (rabbitizer_module_attributes_Ready() < 0) {\n        return NULL;\n    }\n\n    module = PyModule_Create(&rabbitizer_module);\n    if (module == NULL) {\n        return NULL;\n    }\n\n    if (rabbitizer_module_attributes_Initialize(module) < 0) {\n        Py_DECREF(module);\n        return NULL;\n    }\n\n    return module;\n}\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/rabbitizer/rabbitizer_module.h",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#ifndef RABBITIZER_MODULE_H\n#define RABBITIZER_MODULE_H\n#pragma once\n\n#define PY_SSIZE_T_CLEAN\n#include <Python.h>\n#include \"structmember.h\"\n\n#include \"enums/enums_utils.h\"\n\n#include \"instructions/RabbitizerInstruction.h\"\n#include \"analysis/RabbitizerTrackedRegisterState.h\"\n#include \"analysis/RabbitizerLoPairingInfo.h\"\n\n// TODO: clean up this...\n\n\ntypedef struct PyRabbitizerInstruction {\n    PyObject_HEAD\n    RabbitizerInstruction instr;\n} PyRabbitizerInstruction;\n\ntypedef struct PyRabbitizerTrackedRegisterState {\n    PyObject_HEAD\n    RabbitizerTrackedRegisterState registerState;\n} PyRabbitizerTrackedRegisterState;\n\ntypedef struct PyRabbitizerLoPairingInfo {\n    PyObject_HEAD\n    RabbitizerLoPairingInfo pairingInfo;\n} PyRabbitizerLoPairingInfo;\n\n\nPyObject *rabbitizer_submodule_Utils_Init(void);\n\nextern PyTypeObject rabbitizer_global_config_TypeObject;\n\nextern PyTypeObject rabbitizer_type_Enum_TypeObject;\nextern PyTypeObject rabbitizer_type_Instruction_TypeObject;\nextern PyTypeObject rabbitizer_type_LoPairingInfo_TypeObject;\nextern PyTypeObject rabbitizer_type_TrackedRegisterState_TypeObject;\nextern PyTypeObject rabbitizer_type_RegistersTracker_TypeObject;\n\nDECL_ENUM(Abi)\nDECL_ENUM(InstrCategory)\nDECL_ENUM(InstrId)\n\nDECL_ENUM(RegGprO32)\nDECL_ENUM(RegGprN32)\n\n#endif\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/rabbitizer/rabbitizer_submodule_Utils.c",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"rabbitizer_module.h\"\n\n#include \"common/Utils.h\"\n\n\nstatic PyObject *rabbitizer_submodule_Utils_from2Complement(UNUSED PyObject *self, PyObject *args, PyObject *kwds) {\n    static char *kwlist[] = { \"number\", \"bits\", NULL };\n    uint32_t number = 0;\n    int bits = 0;\n\n    if (!PyArg_ParseTupleAndKeywords(args, kwds, \"Ii\", kwlist, &number, &bits)) {\n        return NULL;\n    }\n\n    return PyLong_FromLong(RabbitizerUtils_From2Complement(number, bits));\n}\n\nstatic PyObject *rabbitizer_submodule_Utils_escapeString(UNUSED PyObject *self, PyObject *args, PyObject *kwds) {\n    static char *kwlist[] = { \"src\", NULL };\n    const char *src = NULL;\n    Py_ssize_t srcSize = 0;\n    char *dst;\n    size_t dstSize;\n    size_t wroteBytes;\n    PyObject *ret;\n\n    if (!PyArg_ParseTupleAndKeywords(args, kwds, \"s#\", kwlist, &src, &srcSize)) {\n        return NULL;\n    }\n\n    dstSize = 2 * srcSize;\n    dst = malloc(dstSize * sizeof(char));\n    if (dst == NULL) {\n        PyErr_SetString(PyExc_RuntimeError, \"Internal error on 'escapeString'\");\n        return NULL;\n    }\n\n    wroteBytes = RabbitizerUtils_escapeString(dst, dstSize, src, srcSize);\n    if (wroteBytes > dstSize) {\n        PyErr_SetString(PyExc_RuntimeError, \"Internal error on 'escapeString'\");\n        return NULL;\n    }\n\n    ret = PyUnicode_FromStringAndSize(dst, wroteBytes);\n    free(dst);\n    return ret;\n}\n\n\n#define METHOD_NO_ARGS(name, docs)  { #name, (PyCFunction) rabbitizer_submodule_Utils_##name, METH_NOARGS,                  PyDoc_STR(docs) }\n#define METHOD_ARGS(name, docs)     { #name, (PyCFunction) rabbitizer_submodule_Utils_##name, METH_VARARGS | METH_KEYWORDS, PyDoc_STR(docs) }\n\nstatic PyMethodDef rabbitizer_submodule_Utils_methods[] = {\n    METHOD_ARGS(from2Complement, \"\"),\n    METHOD_ARGS(escapeString, \"\"),\n\n    { 0 },\n};\n\n\nstatic PyModuleDef rabbitizer_submodule_Utils_module = {\n    PyModuleDef_HEAD_INIT,\n    .m_name = \"rabbitizer.Utils\",\n    .m_doc = \"\",\n    .m_size = -1,\n    .m_methods = rabbitizer_submodule_Utils_methods,\n};\n\nPyObject *rabbitizer_submodule_Utils_Init(void) {\n    PyObject *submodule;\n\n    submodule = PyModule_Create(&rabbitizer_submodule_Utils_module);\n    if (submodule == NULL) {\n        return NULL;\n    }\n\n    return submodule;\n}\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/rabbitizer/rabbitizer_type_Instruction.c",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"rabbitizer_module.h\"\n\n#include \"instructions/RabbitizerInstructionRsp.h\"\n#include \"instructions/RabbitizerInstructionR5900.h\"\n#include \"common/RabbitizerConfig.h\"\n\n\nstatic void rabbitizer_type_Instruction_dealloc(PyRabbitizerInstruction *self) {\n    RabbitizerInstruction_destroy(&self->instr);\n    Py_TYPE(self)->tp_free((PyObject *) self);\n}\n\nstatic int rabbitizer_type_Instruction_init(PyRabbitizerInstruction *self, PyObject *args, PyObject *kwds) {\n    static char *kwlist[] = { \"word\", \"vram\", \"category\", NULL };\n    uint32_t word;\n    uint32_t vram;\n    PyObject *category = NULL;\n    int enumCheck;\n    RabbitizerInstrCategory instrCategory = RABBITIZER_INSTRCAT_CPU;\n\n    if (!PyArg_ParseTupleAndKeywords(args, kwds, \"I|IO!\", kwlist, &word, &vram, &rabbitizer_type_Enum_TypeObject, &category)) {\n        return -1;\n    }\n\n    if (category != NULL) {\n        enumCheck = rabbitizer_enum_InstrCategory_Check(category);\n\n        if (enumCheck <= 0) {\n            if (enumCheck == 0) {\n                PyErr_SetString(PyExc_ValueError, \"Invalid value for 'category' parameter\");\n            }\n            return -1;\n        }\n\n        instrCategory = ((PyRabbitizerEnum*)category)->value;\n    }\n\n    switch (instrCategory) {\n        case RABBITIZER_INSTRCAT_RSP:\n            RabbitizerInstructionRsp_init(&self->instr, word, vram);\n            RabbitizerInstructionRsp_processUniqueId(&self->instr);\n            break;\n\n        case RABBITIZER_INSTRCAT_R5900:\n            RabbitizerInstructionR5900_init(&self->instr, word, vram);\n            RabbitizerInstructionR5900_processUniqueId(&self->instr);\n            break;\n\n        case RABBITIZER_INSTRCAT_CPU:\n        case RABBITIZER_INSTRCAT_MAX:\n            RabbitizerInstruction_init(&self->instr, word, vram);\n            RabbitizerInstruction_processUniqueId(&self->instr);\n            break;\n    }\n\n    return 0;\n}\n\nstatic PyMemberDef rabbitizer_type_Instruction_members[] = {\n    { \"vram\", T_UINT, offsetof(PyRabbitizerInstruction, instr.vram), 0, \"vram description\" },\n    { \"inHandwrittenFunction\", T_BOOL, offsetof(PyRabbitizerInstruction, instr.inHandwrittenFunction), 0, \"inHandwrittenFunction description\" },\n\n    { 0 }\n};\n\n\n#define DEF_MEMBER_GET_UINT(name) \\\n    static PyObject *rabbitizer_type_Instruction_member_get_##name(PyRabbitizerInstruction *self, PyObject *Py_UNUSED(ignored)) { \\\n        return PyLong_FromUnsignedLong(RAB_INSTR_GET_##name(&self->instr)); \\\n    }\n\n#define DEF_MEMBER_GET_REGGPR(name) \\\n    static PyObject *rabbitizer_type_Instruction_member_get_##name(PyRabbitizerInstruction *self, UNUSED PyObject *closure) { \\\n        uint32_t reg; \\\n        PyObject *enumInstance = NULL; \\\n        \\\n        if (!RabbitizerInstruction_hasOperandAlias(&self->instr, RAB_OPERAND_cpu_##name)) { \\\n            PyErr_Format(PyExc_RuntimeError, \"'%s' instruction does not reference register '\" #name \"'\", RabbitizerInstrId_getOpcodeName(self->instr.uniqueId)); \\\n            return NULL; \\\n        } \\\n        \\\n        reg = RAB_INSTR_GET_##name(&self->instr); \\\n        switch (RabbitizerConfig_Cfg.regNames.gprAbiNames) { \\\n            case RABBITIZER_ABI_N32: \\\n            case RABBITIZER_ABI_N64: \\\n                enumInstance = rabbitizer_enum_RegGprN32_enumvalues[reg].instance; \\\n                break; \\\n        \\\n            default: \\\n                enumInstance = rabbitizer_enum_RegGprO32_enumvalues[reg].instance; \\\n                break; \\\n        } \\\n        \\\n        if (enumInstance == NULL) { \\\n            PyErr_SetString(PyExc_RuntimeError, \"Internal error: invalid RegGpr enum value\"); \\\n            return NULL; \\\n        } \\\n        \\\n        Py_INCREF(enumInstance); \\\n        return enumInstance; \\\n    }\n\nDEF_MEMBER_GET_REGGPR(rs)\nDEF_MEMBER_GET_REGGPR(rt)\nDEF_MEMBER_GET_REGGPR(rd)\n\nDEF_MEMBER_GET_UINT(sa)\n\nstatic PyObject *rabbitizer_type_Instruction_member_get_uniqueId(PyRabbitizerInstruction *self, PyObject *Py_UNUSED(ignored)) {\n    PyObject *enumInstance = rabbitizer_enum_InstrId_enumvalues[self->instr.uniqueId].instance;\n\n    if (enumInstance == NULL) {\n        PyErr_SetString(PyExc_RuntimeError, \"Internal error: invalid uniqueId enum value\");\n        return NULL;\n    }\n\n    Py_INCREF(enumInstance);\n    return enumInstance;\n}\n\n#define MEMBER_GET(name, docs, closure)      { #name, (getter) rabbitizer_type_Instruction_member_get_##name, (setter) NULL,                                          PyDoc_STR(docs), closure }\n#define MEMBER_SET(name, docs, closure)      { #name, (getter) NULL,                                          (setter) rabbitizer_type_Instruction_member_set_##name, PyDoc_STR(docs), closure }\n#define MEMBER_GET_SET(name, docs, closure)  { #name, (getter) rabbitizer_type_Instruction_member_get_##name, (setter) rabbitizer_type_Instruction_member_set_##name, PyDoc_STR(docs), closure }\n\n\nstatic PyGetSetDef rabbitizer_type_Instruction_getsetters[] = {\n    MEMBER_GET(rs, \"\", NULL),\n    MEMBER_GET(rt, \"\", NULL),\n    MEMBER_GET(rd, \"\", NULL),\n    MEMBER_GET(sa, \"\", NULL),\n    MEMBER_GET(uniqueId, \"\", NULL),\n\n    { 0 }\n};\n\n\n#define DEF_METHOD_GET_UINT(name) \\\n    static PyObject *rabbitizer_type_Instruction_##name(PyRabbitizerInstruction *self, PyObject *Py_UNUSED(ignored)) { \\\n        return PyLong_FromUnsignedLong(RabbitizerInstruction_##name(&self->instr)); \\\n    }\n\n#define DEF_METHOD_GET_INT(name) \\\n    static PyObject *rabbitizer_type_Instruction_##name(PyRabbitizerInstruction *self, PyObject *Py_UNUSED(ignored)) { \\\n        return PyLong_FromLong(RabbitizerInstruction_##name(&self->instr)); \\\n    }\n\nDEF_METHOD_GET_UINT(getRaw)\nDEF_METHOD_GET_UINT(getImmediate)\nDEF_METHOD_GET_INT(getProcessedImmediate)\nDEF_METHOD_GET_UINT(getInstrIndexAsVram)\nDEF_METHOD_GET_INT(getBranchOffset)\n\nstatic PyObject *rabbitizer_type_Instruction_getOpcodeName(PyRabbitizerInstruction *self, UNUSED PyObject *closure) {\n    return PyUnicode_FromString(RabbitizerInstrId_getOpcodeName(self->instr.uniqueId));\n}\n\nstatic PyObject *rabbitizer_type_Instruction_getGenericBranchOffset(PyRabbitizerInstruction *self, PyObject *args, PyObject *kwds) {\n    static char *kwlist[] = { \"currentVram\", NULL };\n    uint32_t currentVram;\n\n    if (!PyArg_ParseTupleAndKeywords(args, kwds, \"I\", kwlist, &currentVram)) {\n        return NULL;\n    }\n\n    return PyLong_FromLong(RabbitizerInstruction_getGenericBranchOffset(&self->instr, currentVram));\n}\n\nstatic PyObject *rabbitizer_type_Instruction_blankOut(PyRabbitizerInstruction *self, PyObject *Py_UNUSED(ignored)) {\n    RabbitizerInstruction_blankOut(&self->instr);\n    Py_RETURN_NONE;\n}\n\n\n#define DEF_METHOD_BOOL(name) \\\n    static PyObject *rabbitizer_type_Instruction_##name(PyRabbitizerInstruction *self, PyObject *Py_UNUSED(ignored)) { \\\n        if (RabbitizerInstruction_##name(&self->instr)) { \\\n            Py_RETURN_TRUE; \\\n        } \\\n        Py_RETURN_FALSE; \\\n    }\n\nDEF_METHOD_BOOL(isImplemented)\nDEF_METHOD_BOOL(isLikelyHandwritten)\nDEF_METHOD_BOOL(isNop)\nDEF_METHOD_BOOL(isUnconditionalBranch)\nDEF_METHOD_BOOL(isJrRa)\nDEF_METHOD_BOOL(isJrNotRa)\nDEF_METHOD_BOOL(hasDelaySlot)\n\nstatic PyObject *rabbitizer_type_Instruction_mapInstrToType(PyRabbitizerInstruction *self, PyObject *Py_UNUSED(ignored)) {\n    const char *type = RabbitizerInstruction_mapInstrToType(&self->instr);\n\n    if (type != NULL) {\n        return PyUnicode_FromString(type);\n    }\n    Py_RETURN_NONE;\n}\n\nstatic PyObject *rabbitizer_type_Instruction_sameOpcode(PyRabbitizerInstruction *self, PyObject *args, PyObject *kwds) {\n    static char *kwlist[] = { \"other\", NULL };\n    PyRabbitizerInstruction *other;\n\n    if (!PyArg_ParseTupleAndKeywords(args, kwds, \"O!\", kwlist, &rabbitizer_type_Instruction_TypeObject, &other)) {\n        return NULL;\n    }\n\n    if (RabbitizerInstruction_sameOpcode(&self->instr, &other->instr)) {\n        Py_RETURN_TRUE;\n    }\n    Py_RETURN_FALSE;\n}\n\nstatic PyObject *rabbitizer_type_Instruction_sameOpcodeButDifferentArguments(PyRabbitizerInstruction *self, PyObject *args, PyObject *kwds) {\n    static char *kwlist[] = { \"other\", NULL };\n    PyRabbitizerInstruction *other;\n\n    if (!PyArg_ParseTupleAndKeywords(args, kwds, \"O!\", kwlist, &rabbitizer_type_Instruction_TypeObject, &other)) {\n        return NULL;\n    }\n\n    if (RabbitizerInstruction_sameOpcodeButDifferentArguments(&self->instr, &other->instr)) {\n        Py_RETURN_TRUE;\n    }\n    Py_RETURN_FALSE;\n}\n\nDEF_METHOD_BOOL(isValid)\n\n#define DEF_DESCRIPTOR_METHOD_BOOL(name) \\\n    static PyObject *rabbitizer_type_Instruction_##name(PyRabbitizerInstruction *self, PyObject *Py_UNUSED(ignored)) { \\\n        if (RabbitizerInstrDescriptor_##name(self->instr.descriptor)) { \\\n            Py_RETURN_TRUE; \\\n        } \\\n        Py_RETURN_FALSE; \\\n    }\n\nDEF_DESCRIPTOR_METHOD_BOOL(isUnknownType)\nDEF_DESCRIPTOR_METHOD_BOOL(isJType)\nDEF_DESCRIPTOR_METHOD_BOOL(isIType)\nDEF_DESCRIPTOR_METHOD_BOOL(isRType)\nDEF_DESCRIPTOR_METHOD_BOOL(isRegimmType)\nDEF_DESCRIPTOR_METHOD_BOOL(isBranch)\nDEF_DESCRIPTOR_METHOD_BOOL(isBranchLikely)\nDEF_DESCRIPTOR_METHOD_BOOL(isJump)\nDEF_DESCRIPTOR_METHOD_BOOL(isTrap)\nDEF_DESCRIPTOR_METHOD_BOOL(isFloat)\nDEF_DESCRIPTOR_METHOD_BOOL(isDouble)\nDEF_DESCRIPTOR_METHOD_BOOL(isUnsigned)\nDEF_DESCRIPTOR_METHOD_BOOL(modifiesRt)\nDEF_DESCRIPTOR_METHOD_BOOL(modifiesRd)\nDEF_DESCRIPTOR_METHOD_BOOL(notEmitedByCompilers)\nDEF_DESCRIPTOR_METHOD_BOOL(canBeHi)\nDEF_DESCRIPTOR_METHOD_BOOL(canBeLo)\nDEF_DESCRIPTOR_METHOD_BOOL(doesLink)\nDEF_DESCRIPTOR_METHOD_BOOL(doesDereference)\nDEF_DESCRIPTOR_METHOD_BOOL(doesLoad)\nDEF_DESCRIPTOR_METHOD_BOOL(doesStore)\nDEF_DESCRIPTOR_METHOD_BOOL(maybeIsMove)\nDEF_DESCRIPTOR_METHOD_BOOL(isPseudo)\n// TODO: create an enum type for architectureVersion\n// architectureVersion\n\n\nstatic PyObject *rabbitizer_type_Instruction_disassemble(PyRabbitizerInstruction *self, PyObject *args, PyObject *kwds) {\n    static char *kwlist[] = {\"immOverride\", \"extraLJust\", NULL};\n    const char *immOverride = NULL;\n    size_t immOverrideLength = 0;\n    int extraLJust = 0;\n    size_t bufferSize;\n    char *buffer;\n    PyObject *ret;\n\n    if (!PyArg_ParseTupleAndKeywords(args, kwds, \"|zi\", kwlist, &immOverride, &extraLJust)) {\n        return NULL;\n    }\n\n    if (immOverride != NULL) {\n        immOverrideLength = strlen(immOverride);\n    }\n\n    bufferSize = RabbitizerInstruction_getSizeForBuffer(&self->instr, immOverrideLength, extraLJust);\n\n    buffer = malloc(bufferSize+1);\n    if (buffer == NULL) {\n        // TODO: signal an exception?\n        return NULL;\n    }\n\n    RabbitizerInstruction_disassemble(&self->instr, buffer, immOverride, immOverrideLength, extraLJust);\n\n    ret = PyUnicode_FromString(buffer);\n    free(buffer);\n    return ret;\n}\n\n\n// To allow piclking the object\nstatic PyObject *rabbitizer_type_Instruction___reduce__(PyRabbitizerInstruction *self, UNUSED PyObject *closure) {\n    PyObject *args;\n    PyObject *word;\n    PyObject *vram;\n    PyObject *category;\n\n    word = PyLong_FromUnsignedLong(RabbitizerInstruction_getRaw(&self->instr));\n    vram = PyLong_FromUnsignedLong(self->instr.vram);\n    category = rabbitizer_enum_InstrCategory_enumvalues[self->instr.category].instance;\n\n    args = PyTuple_Pack(3, word, vram, category);\n\n    return PyTuple_Pack(2, (PyObject*)&rabbitizer_type_Instruction_TypeObject, args);\n}\n\n\n#define METHOD_NO_ARGS(name, docs)  { #name, (PyCFunction)rabbitizer_type_Instruction_##name, METH_NOARGS,                  PyDoc_STR(docs) }\n#define METHOD_ARGS(name, docs)     { #name, (PyCFunction)rabbitizer_type_Instruction_##name, METH_VARARGS | METH_KEYWORDS, PyDoc_STR(docs) }\n\n\nstatic PyMethodDef rabbitizer_type_Instruction_methods[] = {\n    METHOD_NO_ARGS(getRaw, \"\"),\n    METHOD_NO_ARGS(getImmediate, \"\"),\n    METHOD_NO_ARGS(getProcessedImmediate, \"\"),\n    METHOD_NO_ARGS(getInstrIndexAsVram, \"\"),\n    METHOD_NO_ARGS(getBranchOffset, \"\"),\n    METHOD_ARGS(getGenericBranchOffset, \"\"),\n    METHOD_NO_ARGS(getOpcodeName, \"\"),\n\n    METHOD_NO_ARGS(blankOut, \"\"),\n\n    METHOD_NO_ARGS(isImplemented, \"\"),\n    METHOD_NO_ARGS(isLikelyHandwritten, \"\"),\n    METHOD_NO_ARGS(isNop, \"\"),\n    METHOD_NO_ARGS(isUnconditionalBranch, \"\"),\n    METHOD_NO_ARGS(isJrRa, \"\"),\n    METHOD_NO_ARGS(isJrNotRa, \"\"),\n    METHOD_NO_ARGS(hasDelaySlot, \"\"),\n    METHOD_NO_ARGS(mapInstrToType, \"\"),\n\n    METHOD_ARGS(sameOpcode, \"description\"),\n    METHOD_ARGS(sameOpcodeButDifferentArguments, \"description\"),\n\n    METHOD_NO_ARGS(isValid, \"\"),\n\n    METHOD_NO_ARGS(isUnknownType, \"\"),\n    METHOD_NO_ARGS(isJType, \"\"),\n    METHOD_NO_ARGS(isIType, \"\"),\n    METHOD_NO_ARGS(isRType, \"\"),\n    METHOD_NO_ARGS(isRegimmType, \"\"),\n    METHOD_NO_ARGS(isBranch, \"\"),\n    METHOD_NO_ARGS(isBranchLikely, \"\"),\n    METHOD_NO_ARGS(isJump, \"\"),\n    METHOD_NO_ARGS(isTrap, \"\"),\n    METHOD_NO_ARGS(isFloat, \"\"),\n    METHOD_NO_ARGS(isDouble, \"\"),\n    METHOD_NO_ARGS(isUnsigned, \"\"),\n    METHOD_NO_ARGS(modifiesRt, \"\"),\n    METHOD_NO_ARGS(modifiesRd, \"\"),\n    METHOD_NO_ARGS(notEmitedByCompilers, \"\"),\n    METHOD_NO_ARGS(canBeHi, \"\"),\n    METHOD_NO_ARGS(canBeLo, \"\"),\n    METHOD_NO_ARGS(doesLink, \"\"),\n    METHOD_NO_ARGS(doesDereference, \"\"),\n    METHOD_NO_ARGS(doesLoad, \"\"),\n    METHOD_NO_ARGS(doesStore, \"\"),\n    METHOD_NO_ARGS(maybeIsMove, \"\"),\n    METHOD_NO_ARGS(isPseudo, \"\"),\n    // METHOD_NO_ARGS(getArchitectureVersion, \"\"),\n\n    METHOD_ARGS(disassemble, \"description\"),\n\n    METHOD_ARGS(__reduce__, \"\"),\n\n    { 0 },\n};\n\n\nstatic PyObject *rabbitizer_type_Instruction_repr(PyRabbitizerInstruction *self) {\n    PyObject *ret;\n    size_t disasmBufferSize;\n    char *bufferStart;\n    char *buffer;\n    size_t typeNameLength;\n    size_t extraSize = 3 + 8 + 4; // \"(0x\" + 32bits hex + \") # \"\n    int len;\n\n    typeNameLength = strlen(\"rabbitizer.Instruction\");\n\n    disasmBufferSize = RabbitizerInstruction_getSizeForBuffer(&self->instr, 0, 0);\n\n    buffer = bufferStart = malloc(disasmBufferSize+1 + typeNameLength + extraSize);\n    if (buffer == NULL) {\n        // TODO: signal an exception?\n        return NULL;\n    }\n\n    memcpy(buffer, \"rabbitizer.Instruction\", typeNameLength);\n    buffer += typeNameLength;\n\n    len = sprintf(buffer, \"(0x%08X) # \", RabbitizerInstruction_getRaw(&self->instr));\n    if (len != 15) {\n        // bad stuff\n        // TODO: exception?\n    }\n    assert(len == 15);\n    buffer += len;\n\n    RabbitizerInstruction_disassemble(&self->instr, buffer, NULL, 0, 0);\n\n    ret = PyUnicode_FromString(bufferStart);\n    free(bufferStart);\n    return ret;\n}\n\nstatic PyObject *rabbitizer_type_Instruction_str(PyRabbitizerInstruction *self) {\n    return rabbitizer_type_Instruction_disassemble(self, Py_BuildValue(\"()\"), Py_BuildValue(\"{}\"));\n}\n\n\nPyTypeObject rabbitizer_type_Instruction_TypeObject = {\n    PyVarObject_HEAD_INIT(NULL, 0)\n    .tp_name = \"rabbitizer.Instruction\",\n    .tp_doc = PyDoc_STR(\"Instruction\"),\n    .tp_basicsize = sizeof(PyRabbitizerInstruction),\n    .tp_itemsize = 0,\n    .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,\n    .tp_new = PyType_GenericNew,\n    .tp_init = (initproc) rabbitizer_type_Instruction_init,\n    .tp_dealloc = (destructor) rabbitizer_type_Instruction_dealloc,\n    .tp_repr = (reprfunc) rabbitizer_type_Instruction_repr,\n    .tp_str = (reprfunc) rabbitizer_type_Instruction_str,\n    .tp_members = rabbitizer_type_Instruction_members,\n    .tp_methods = rabbitizer_type_Instruction_methods,\n    .tp_getset = rabbitizer_type_Instruction_getsetters,\n};\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/rabbitizer/rabbitizer_type_LoPairingInfo.c",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"rabbitizer_module.h\"\n\n\nstatic void rabbitizer_type_LoPairingInfo_dealloc(PyRabbitizerLoPairingInfo *self) {\n    Py_TYPE(self)->tp_free((PyObject *) self);\n}\n\nstatic int rabbitizer_type_LoPairingInfo_init(PyRabbitizerLoPairingInfo *self, PyObject *args, PyObject *kwds) {\n    static char *kwlist[] = { NULL };\n\n    if (!PyArg_ParseTupleAndKeywords(args, kwds, \"\", kwlist)) {\n        return -1;\n    }\n\n    RabbitizerLoPairingInfo_Init(&self->pairingInfo);\n\n    return 0;\n}\n\n\nstatic PyMemberDef rabbitizer_type_LoPairingInfo_members[] = {\n    { \"instrOffset\", T_INT, offsetof(PyRabbitizerLoPairingInfo, pairingInfo.instrOffset), 0, \"\" },\n    { \"value\", T_LONG, offsetof(PyRabbitizerLoPairingInfo, pairingInfo.value), 0, \"\" },\n    { \"shouldProcess\", T_BOOL, offsetof(PyRabbitizerLoPairingInfo, pairingInfo.shouldProcess), 0, \"\" },\n    { \"isGpRel\", T_BOOL, offsetof(PyRabbitizerLoPairingInfo, pairingInfo.isGpRel), 0, \"\" },\n    { \"isGpGot\", T_BOOL, offsetof(PyRabbitizerLoPairingInfo, pairingInfo.isGpGot), 0, \"\" },\n\n    { 0 }\n};\n\n\nPyTypeObject rabbitizer_type_LoPairingInfo_TypeObject = {\n    PyVarObject_HEAD_INIT(NULL, 0)\n    .tp_name = \"rabbitizer.LoPairingInfo\",\n    .tp_doc = PyDoc_STR(\"LoPairingInfo\"),\n    .tp_basicsize = sizeof(PyRabbitizerLoPairingInfo),\n    .tp_itemsize = 0,\n    .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,\n    .tp_new = PyType_GenericNew,\n    .tp_init = (initproc) rabbitizer_type_LoPairingInfo_init,\n    .tp_dealloc = (destructor) rabbitizer_type_LoPairingInfo_dealloc,\n    // .tp_repr = (reprfunc) rabbitizer_type_LoPairingInfo_repr,\n    // .tp_str = (reprfunc) rabbitizer_type_LoPairingInfo_str,\n    .tp_members = rabbitizer_type_LoPairingInfo_members,\n    // .tp_methods = rabbitizer_type_Instr_methods,\n    // .tp_getset = Instr_getsetters,\n};\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/rabbitizer/rabbitizer_type_RegistersTracker.c",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"rabbitizer_module.h\"\n\n#include \"analysis/RabbitizerRegistersTracker.h\"\n\n\ntypedef struct PyRabbitizerRegistersTracker {\n    PyObject_HEAD\n    RabbitizerRegistersTracker tracker;\n} PyRabbitizerRegistersTracker;\n\n\nstatic void rabbitizer_type_RegistersTracker_dealloc(PyRabbitizerRegistersTracker *self) {\n    RabbitizerRegistersTracker_destroy(&self->tracker);\n    Py_TYPE(self)->tp_free((PyObject *) self);\n}\n\nstatic int rabbitizer_type_RegistersTracker_init(PyRabbitizerRegistersTracker *self, PyObject *args, PyObject *kwds) {\n    static char *kwlist[] = { \"other\", NULL };\n    PyRabbitizerRegistersTracker *pyOther = NULL;\n    RabbitizerRegistersTracker *other = NULL;\n\n    if (!PyArg_ParseTupleAndKeywords(args, kwds, \"|O!\", kwlist, &rabbitizer_type_RegistersTracker_TypeObject, &pyOther)) {\n        return -1;\n    }\n\n    if (pyOther != NULL) {\n        other = &pyOther->tracker;\n    }\n\n    RabbitizerRegistersTracker_init(&self->tracker, other);\n\n    return 0;\n}\n\n\nstatic PyObject *rabbitizer_type_RegistersTracker_moveRegisters(PyRabbitizerRegistersTracker *self, PyObject *args, PyObject *kwds) {\n    static char *kwlist[] = { \"instr\", NULL };\n    PyRabbitizerInstruction *instr;\n\n    if (!PyArg_ParseTupleAndKeywords(args, kwds, \"O!\", kwlist, &rabbitizer_type_Instruction_TypeObject, &instr)) {\n        return NULL;\n    }\n\n    if (RabbitizerRegistersTracker_moveRegisters(&self->tracker, &instr->instr)) {\n        Py_RETURN_TRUE;\n    }\n    Py_RETURN_FALSE;\n}\n\nstatic PyObject *rabbitizer_type_RegistersTracker_overwriteRegisters(PyRabbitizerRegistersTracker *self, PyObject *args, PyObject *kwds) {\n    static char *kwlist[] = { \"instr\", \"instrOffset\", NULL };\n    PyRabbitizerInstruction *instr;\n    int instrOffset;\n\n    if (!PyArg_ParseTupleAndKeywords(args, kwds, \"O!i\", kwlist, &rabbitizer_type_Instruction_TypeObject, &instr, &instrOffset)) {\n        return NULL;\n    }\n\n    RabbitizerRegistersTracker_overwriteRegisters(&self->tracker, &instr->instr, instrOffset);\n\n    Py_RETURN_NONE;\n}\n\nstatic PyObject *rabbitizer_type_RegistersTracker_unsetRegistersAfterFuncCall(PyRabbitizerRegistersTracker *self, PyObject *args, PyObject *kwds) {\n    static char *kwlist[] = { \"instr\", \"prevInstr\", NULL };\n    PyRabbitizerInstruction *instr;\n    PyRabbitizerInstruction *prevInstr;\n\n    if (!PyArg_ParseTupleAndKeywords(args, kwds, \"O!O!\", kwlist, &rabbitizer_type_Instruction_TypeObject, &instr, &rabbitizer_type_Instruction_TypeObject, &prevInstr)) {\n        return NULL;\n    }\n\n    RabbitizerRegistersTracker_unsetRegistersAfterFuncCall(&self->tracker, &instr->instr, &prevInstr->instr);\n\n    Py_RETURN_NONE;\n}\n\nstatic PyObject *rabbitizer_type_RegistersTracker_getAddressIfCanSetType(PyRabbitizerRegistersTracker *self, PyObject *args, PyObject *kwds) {\n    static char *kwlist[] = { \"instr\", \"instrOffset\", NULL };\n    PyRabbitizerInstruction *instr;\n    int instrOffset;\n    uint32_t dstAddress = 0;\n\n    if (!PyArg_ParseTupleAndKeywords(args, kwds, \"O!i\", kwlist, &rabbitizer_type_Instruction_TypeObject, &instr, &instrOffset)) {\n        return NULL;\n    }\n\n    if (RabbitizerRegistersTracker_getAddressIfCanSetType(&self->tracker, &instr->instr, instrOffset, &dstAddress)) {\n        return PyLong_FromLong(dstAddress);\n    }\n\n    Py_RETURN_NONE;\n}\n\nstatic PyObject *rabbitizer_type_RegistersTracker_getJrInfo(PyRabbitizerRegistersTracker *self, PyObject *args, PyObject *kwds) {\n    static char *kwlist[] = { \"instr\", NULL };\n    PyRabbitizerInstruction *instr;\n    int dstOffset = 0;\n    uint32_t dstAddress = 0;\n\n    if (!PyArg_ParseTupleAndKeywords(args, kwds, \"O!\", kwlist, &rabbitizer_type_Instruction_TypeObject, &instr)) {\n        return NULL;\n    }\n\n    if (RabbitizerRegistersTracker_getJrInfo(&self->tracker, &instr->instr, &dstOffset, &dstAddress)) {\n        return PyTuple_Pack(2, PyLong_FromLong(dstOffset), PyLong_FromLong(dstAddress));\n    }\n\n    Py_RETURN_NONE;\n}\n\nstatic PyObject *rabbitizer_type_RegistersTracker_processLui(PyRabbitizerRegistersTracker *self, PyObject *args, PyObject *kwds) {\n    static char *kwlist[] = { \"instr\", \"instrOffset\", \"prevInstr\", NULL };\n    PyRabbitizerInstruction *instr;\n    int instrOffset;\n    PyRabbitizerInstruction *pyPrevInstr = NULL;\n    RabbitizerInstruction *prevInstr = NULL;\n\n    if (!PyArg_ParseTupleAndKeywords(args, kwds, \"O!i|O!\", kwlist, &rabbitizer_type_Instruction_TypeObject, &instr, &instrOffset, &rabbitizer_type_Instruction_TypeObject, &pyPrevInstr)) {\n        return NULL;\n    }\n\n    if (pyPrevInstr != NULL) {\n        prevInstr = &pyPrevInstr->instr;\n    }\n\n    RabbitizerRegistersTracker_processLui(&self->tracker, &instr->instr, instrOffset, prevInstr);\n\n    Py_RETURN_NONE;\n}\n\nstatic PyObject *rabbitizer_type_RegistersTracker_processGpLoad(PyRabbitizerRegistersTracker *self, PyObject *args, PyObject *kwds) {\n    static char *kwlist[] = { \"instr\", \"instrOffset\", NULL };\n    PyRabbitizerInstruction *instr;\n    int instrOffset;\n\n    if (!PyArg_ParseTupleAndKeywords(args, kwds, \"O!i\", kwlist, &rabbitizer_type_Instruction_TypeObject, &instr, &instrOffset)) {\n        return NULL;\n    }\n\n    RabbitizerRegistersTracker_processGpLoad(&self->tracker, &instr->instr, instrOffset);\n\n    Py_RETURN_NONE;\n}\n\nstatic PyObject *rabbitizer_type_RegistersTracker_getLuiOffsetForConstant(PyRabbitizerRegistersTracker *self, PyObject *args, PyObject *kwds) {\n    static char *kwlist[] = { \"instr\", NULL };\n    PyRabbitizerInstruction *instr;\n    int dstOffset = 0;\n\n    if (!PyArg_ParseTupleAndKeywords(args, kwds, \"O!\", kwlist, &rabbitizer_type_Instruction_TypeObject, &instr)) {\n        return NULL;\n    }\n\n    if (RabbitizerRegistersTracker_getLuiOffsetForConstant(&self->tracker, &instr->instr, &dstOffset)) {\n        return PyLong_FromLong(dstOffset);\n    }\n\n    Py_RETURN_NONE;\n}\n\nstatic PyObject *rabbitizer_type_RegistersTracker_processConstant(PyRabbitizerRegistersTracker *self, PyObject *args, PyObject *kwds) {\n    static char *kwlist[] = { \"instr\", \"value\", \"instrOffset\", NULL };\n    PyRabbitizerInstruction *instr;\n    uint32_t value;\n    int instrOffset;\n\n    if (!PyArg_ParseTupleAndKeywords(args, kwds, \"O!Ii\", kwlist, &rabbitizer_type_Instruction_TypeObject, &instr, &value, &instrOffset)) {\n        return NULL;\n    }\n\n    RabbitizerRegistersTracker_processConstant(&self->tracker, &instr->instr, value, instrOffset);\n\n    Py_RETURN_NONE;\n}\n\nstatic PyObject *rabbitizer_type_RegistersTracker_getLuiOffsetForLo(PyRabbitizerRegistersTracker *self, PyObject *args, PyObject *kwds) {\n    static char *kwlist[] = { \"instr\", \"instrOffset\", NULL };\n    PyRabbitizerInstruction *instr;\n    int instrOffset;\n    int dstOffset = 0;\n    bool dstIsGp = false;\n    bool validResults = false;\n\n    if (!PyArg_ParseTupleAndKeywords(args, kwds, \"O!i\", kwlist, &rabbitizer_type_Instruction_TypeObject, &instr, &instrOffset)) {\n        return NULL;\n    }\n\n    validResults = RabbitizerRegistersTracker_getLuiOffsetForLo(&self->tracker, &instr->instr, instrOffset, &dstOffset, &dstIsGp);\n\n    return PyTuple_Pack(3, PyLong_FromLong(dstOffset), PyBool_FromLong(dstIsGp), PyBool_FromLong(validResults));\n}\n\nstatic PyObject *rabbitizer_type_RegistersTracker_preprocessLoAndGetInfo(PyRabbitizerRegistersTracker *self, PyObject *args, PyObject *kwds) {\n    static char *kwlist[] = { \"instr\", \"instrOffset\", NULL };\n    PyRabbitizerInstruction *instr;\n    int instrOffset;\n    PyRabbitizerLoPairingInfo *ret;\n\n    if (!PyArg_ParseTupleAndKeywords(args, kwds, \"O!i\", kwlist, &rabbitizer_type_Instruction_TypeObject, &instr, &instrOffset)) {\n        return NULL;\n    }\n\n    ret = PyObject_CallObject((PyObject*)&rabbitizer_type_LoPairingInfo_TypeObject, NULL);\n    if (ret == NULL) {\n        PyErr_SetString(PyExc_RuntimeError, \"Internal error: not able to instance LoPairingInfo object\");\n        return NULL;\n    }\n\n    ret->pairingInfo = RabbitizerRegistersTracker_preprocessLoAndGetInfo(&self->tracker, &instr->instr, instrOffset);\n\n    return ret;\n}\n\nstatic PyObject *rabbitizer_type_RegistersTracker_processLo(PyRabbitizerRegistersTracker *self, PyObject *args, PyObject *kwds) {\n    static char *kwlist[] = { \"instr\", \"value\", \"instrOffset\", NULL };\n    PyRabbitizerInstruction *instr;\n    uint32_t value;\n    int instrOffset;\n\n    if (!PyArg_ParseTupleAndKeywords(args, kwds, \"O!Ii\", kwlist, &rabbitizer_type_Instruction_TypeObject, &instr, &value, &instrOffset)) {\n        return NULL;\n    }\n\n    RabbitizerRegistersTracker_processLo(&self->tracker, &instr->instr, value, instrOffset);\n\n    Py_RETURN_NONE;\n}\n\nstatic PyObject *rabbitizer_type_RegistersTracker_hasLoButNoHi(PyRabbitizerRegistersTracker *self, PyObject *args, PyObject *kwds) {\n    static char *kwlist[] = { \"instr\", NULL };\n    PyRabbitizerInstruction *instr;\n\n    if (!PyArg_ParseTupleAndKeywords(args, kwds, \"O!\", kwlist, &rabbitizer_type_Instruction_TypeObject, &instr)) {\n        return NULL;\n    }\n\n    if (RabbitizerRegistersTracker_hasLoButNoHi(&self->tracker, &instr->instr)) {\n        Py_RETURN_TRUE;\n    }\n    Py_RETURN_FALSE;\n}\n\n\n#define METHOD_NO_ARGS(name, docs)  { #name, (PyCFunction)rabbitizer_type_RegistersTracker_##name, METH_NOARGS,                  PyDoc_STR(docs) }\n#define METHOD_ARGS(name, docs)     { #name, (PyCFunction)rabbitizer_type_RegistersTracker_##name, METH_VARARGS | METH_KEYWORDS, PyDoc_STR(docs) }\n\nstatic PyMethodDef rabbitizer_type_RegistersTracker_methods[] = {\n    METHOD_ARGS(moveRegisters, \"\"),\n    METHOD_ARGS(overwriteRegisters, \"\"),\n    METHOD_ARGS(unsetRegistersAfterFuncCall, \"\"),\n    METHOD_ARGS(getAddressIfCanSetType, \"\"),\n    METHOD_ARGS(getJrInfo, \"\"),\n    METHOD_ARGS(processLui, \"\"),\n    METHOD_ARGS(processGpLoad, \"\"),\n    METHOD_ARGS(getLuiOffsetForConstant, \"\"),\n    METHOD_ARGS(processConstant, \"\"),\n    METHOD_ARGS(getLuiOffsetForLo, \"\"),\n    METHOD_ARGS(preprocessLoAndGetInfo, \"\"),\n    METHOD_ARGS(processLo, \"\"),\n    METHOD_ARGS(hasLoButNoHi, \"\"),\n\n    { 0 },\n};\n\n\nPyObject *rabbitizer_type_RegistersTracker___getitem__(PyRabbitizerRegistersTracker* self, Py_ssize_t index) {\n    RabbitizerTrackedRegisterState *state;\n    PyObject *args;\n    PyRabbitizerTrackedRegisterState *pyState;\n\n    if (index < 0 || index >= ARRAY_COUNT(self->tracker.registers)) {\n        PyErr_SetString(PyExc_IndexError, \"Index must be a value between 0 and 31\");\n        return NULL;\n    }\n\n    state = &self->tracker.registers[index];\n\n    args = Py_BuildValue(\"(i)\", state->registerNum);\n    if (args == NULL) {\n        PyErr_SetString(PyExc_RuntimeError, \"Internal error: not able to instance TrackedRegisterState parameters\");\n        return NULL;\n    }\n\n    pyState = PyObject_CallObject((PyObject*)&rabbitizer_type_TrackedRegisterState_TypeObject, args);\n    Py_DECREF(args);\n    if (pyState == NULL) {\n        PyErr_SetString(PyExc_RuntimeError, \"Internal error: not able to instance TrackedRegisterState object\");\n        return NULL;\n    }\n\n    RabbitizerTrackedRegisterState_copyState(&pyState->registerState, state);\n    return pyState;\n}\n\n\nstatic PySequenceMethods example_classSeqMethods = {\n\t.sq_item = (ssizeargfunc)rabbitizer_type_RegistersTracker___getitem__, // sq_item\n};\n\n\nPyTypeObject rabbitizer_type_RegistersTracker_TypeObject = {\n    PyVarObject_HEAD_INIT(NULL, 0)\n    .tp_name = \"rabbitizer.RegistersTracker\",\n    .tp_doc = PyDoc_STR(\"RegistersTracker\"),\n    .tp_basicsize = sizeof(PyRabbitizerRegistersTracker),\n    .tp_itemsize = 0,\n    .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,\n    .tp_new = PyType_GenericNew,\n    .tp_init = (initproc) rabbitizer_type_RegistersTracker_init,\n    .tp_dealloc = (destructor) rabbitizer_type_RegistersTracker_dealloc,\n    // .tp_repr = (reprfunc) rabbitizer_type_RegistersTracker_repr,\n    .tp_as_sequence = &example_classSeqMethods,\n    // .tp_str = (reprfunc) rabbitizer_type_RegistersTracker_str,\n    .tp_methods = rabbitizer_type_RegistersTracker_methods,\n    // .tp_getset = rabbitizer_type_RegistersTracker_getsetters,\n};\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/rabbitizer/rabbitizer_type_TrackedRegisterState.c",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"rabbitizer_module.h\"\n\n\nstatic void rabbitizer_type_TrackedRegisterState_dealloc(PyRabbitizerTrackedRegisterState *self) {\n    RabbitizerTrackedRegisterState_destroy(&self->registerState);\n    Py_TYPE(self)->tp_free((PyObject *) self);\n}\n\nstatic int rabbitizer_type_TrackedRegisterState_init(PyRabbitizerTrackedRegisterState *self, PyObject *args, PyObject *kwds) {\n    static char *kwlist[] = { \"registerNum\", NULL };\n    int registerNum;\n\n    if (!PyArg_ParseTupleAndKeywords(args, kwds, \"i\", kwlist, &registerNum)) {\n        return -1;\n    }\n\n    RabbitizerTrackedRegisterState_init(&self->registerState, registerNum);\n\n    return 0;\n}\n\n\n#define DEF_MEMBER_GET_BOOL(name) \\\n    static PyObject *rabbitizer_type_TrackedRegisterState_member_get_##name(PyRabbitizerTrackedRegisterState *self, UNUSED PyObject *closure) { \\\n        if (self->registerState.name) { \\\n            Py_RETURN_TRUE; \\\n        } \\\n        Py_RETURN_FALSE; \\\n    }\n\n#define DEF_MEMBER_GET_INT(name) \\\n    static PyObject *rabbitizer_type_TrackedRegisterState_member_get_##name(PyRabbitizerTrackedRegisterState *self, UNUSED PyObject *closure) { \\\n        return PyLong_FromLong(self->registerState.name); \\\n    }\n\n#define DEF_MEMBER_GET_UINT(name) \\\n    static PyObject *rabbitizer_type_TrackedRegisterState_member_get_##name(PyRabbitizerTrackedRegisterState *self, UNUSED PyObject *closure) { \\\n        return PyLong_FromUnsignedLong(self->registerState.name); \\\n    }\n\n\nDEF_MEMBER_GET_INT(registerNum)\n\nDEF_MEMBER_GET_BOOL(hasLuiValue)\nDEF_MEMBER_GET_INT(luiOffset)\nDEF_MEMBER_GET_BOOL(luiSetOnBranchLikely)\n\nDEF_MEMBER_GET_BOOL(hasGpGot)\nDEF_MEMBER_GET_INT(gpGotOffset)\n\nDEF_MEMBER_GET_BOOL(hasLoValue)\nDEF_MEMBER_GET_INT(loOffset)\nDEF_MEMBER_GET_BOOL(dereferenced)\nDEF_MEMBER_GET_INT(dereferenceOffset)\n\nDEF_MEMBER_GET_UINT(value)\n\n\n#define MEMBER_GET(name, docs, closure)      { #name, (getter) rabbitizer_type_TrackedRegisterState_member_get_##name, (setter) NULL,                                                   PyDoc_STR(docs), closure }\n#define MEMBER_SET(name, docs, closure)      { #name, (getter) NULL,                                                   (setter) rabbitizer_type_TrackedRegisterState_member_set_##name, PyDoc_STR(docs), closure }\n#define MEMBER_GET_SET(name, docs, closure)  { #name, (getter) rabbitizer_type_TrackedRegisterState_member_get_##name, (setter) rabbitizer_type_TrackedRegisterState_member_set_##name, PyDoc_STR(docs), closure }\n\n\nstatic PyGetSetDef rabbitizer_type_TrackedRegisterState_getsetters[] = {\n    MEMBER_GET(registerNum, \"\", NULL),\n\n    MEMBER_GET(hasLuiValue, \"\", NULL),\n    MEMBER_GET(luiOffset, \"\", NULL),\n    MEMBER_GET(luiSetOnBranchLikely, \"\", NULL),\n\n    MEMBER_GET(hasGpGot, \"\", NULL),\n    MEMBER_GET(gpGotOffset, \"\", NULL),\n\n    MEMBER_GET(hasLoValue, \"\", NULL),\n    MEMBER_GET(loOffset, \"\", NULL),\n    MEMBER_GET(dereferenced, \"\", NULL),\n    MEMBER_GET(dereferenceOffset, \"\", NULL),\n\n    MEMBER_GET(value, \"\", NULL),\n\n    { 0 }\n};\n\n\nPyTypeObject rabbitizer_type_TrackedRegisterState_TypeObject = {\n    PyVarObject_HEAD_INIT(NULL, 0)\n    .tp_name = \"rabbitizer.TrackedRegisterState\",\n    .tp_doc = PyDoc_STR(\"TrackedRegisterState\"),\n    .tp_basicsize = sizeof(PyRabbitizerTrackedRegisterState),\n    .tp_itemsize = 0,\n    .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,\n    .tp_new = PyType_GenericNew,\n    .tp_init = (initproc) rabbitizer_type_TrackedRegisterState_init,\n    .tp_dealloc = (destructor) rabbitizer_type_TrackedRegisterState_dealloc,\n    // .tp_repr = (reprfunc) rabbitizer_type_TrackedRegisterState_repr,\n    // .tp_str = (reprfunc) rabbitizer_type_TrackedRegisterState_str,\n    // .tp_methods = rabbitizer_type_TrackedRegisterState_methods,\n    .tp_getset = rabbitizer_type_TrackedRegisterState_getsetters,\n};\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/registersTrackerTest.c",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"instructions/RabbitizerInstruction.h\"\n#include \"analysis/RabbitizerRegistersTracker.h\"\n\n\nint main() {\n    RabbitizerRegistersTracker regsTracker;\n    RabbitizerInstruction instr;\n    uint32_t word = 0x002D0821; // addu        $at, $at, $t5\n    uint32_t vram = 0x0042F170;\n    int instrOffset = 220;\n\n    RabbitizerRegistersTracker_init(&regsTracker, NULL);\n\n    RabbitizerInstruction_init(&instr, word, vram);\n    RabbitizerInstruction_processUniqueId(&instr);\n\n    regsTracker.registers[1] = (RabbitizerTrackedRegisterState){\n        .dereferenceOffset = 212,\n        .dereferenced = true,\n        .gpGotOffset = 212,\n        .hasGpGot = true,\n        .hasLoValue = true,\n        .hasLuiValue = false,\n        .loOffset = 212,\n        .luiOffset = 0,\n        .luiSetOnBranchLikely = false,\n        .value = 0x10010000,\n        .registerNum = regsTracker.registers[1].registerNum,\n    };\n\n    RabbitizerRegistersTracker_overwriteRegisters(&regsTracker, &instr, instrOffset);\n\n    RabbitizerInstruction_destroy(&instr);\n\n    RabbitizerRegistersTracker_destroy(&regsTracker);\n\n    return 0;\n}\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/rsptest.c",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"instructions/RabbitizerInstructionRsp.h\"\n\n#include <assert.h>\n#include <stdio.h>\n#include <string.h>\n#include <stdlib.h>\n\n\nint main() {\n    uint32_t word;\n    RabbitizerInstruction instr;\n    char *buffer;\n    int extraLJust = 5;\n    uint32_t validbits;\n\n    //word = 0x4B01C8E8; // vand    $v3, $v25, $v1[0]\n    word = 0x48952000; // mtc2    $21, $v4[0]\n\n    RabbitizerInstructionRsp_init(&instr, word, 0x80000000);\n\n    RabbitizerInstructionRsp_processUniqueId(&instr);\n\n    buffer = malloc(RabbitizerInstruction_getSizeForBuffer(&instr, 0, extraLJust) + 1);\n    assert(buffer != NULL);\n\n    RabbitizerInstruction_disassemble(&instr, buffer, NULL, 0, extraLJust);\n\n    printf(\"%08X: %s\\n\", word, buffer);\n\n    validbits = RabbitizerInstruction_getValidBits(&instr);\n\n    printf(\"word:           %08X\\n\", instr.word);\n    printf(\"mandatory bits: %08X\\n\", instr._mandatorybits);\n    printf(\"valid bits:     %08X\\n\", validbits);\n    printf(\"invalid bits:   %08X\\n\", (~validbits) & instr.word);\n\n    free(buffer);\n    RabbitizerInstructionRsp_destroy(&instr);\n\n    return 0;\n}\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/setup.cfg",
    "content": "# SPDX-FileCopyrightText: © 2022 Decompollaborate\n# SPDX-License-Identifier: MIT\n\n[metadata]\nname = rabbitizer\n# Version should be synced with include/common/RabbitizerVersion.h\nversion = 1.2.3\nauthor = Decompollaborate\nlicense = MIT\ndescription = MIPS instruction decoder\nurl = https://github.com/Decompollaborate/rabbitizer\nproject_urls =\n    Source = https://github.com/Decompollaborate/rabbitizer\n    Bug Tracker = https://github.com/Decompollaborate/rabbitizer/issues\nlong_description = file: README.md\nlong_description_content_type = text/markdown\n\n[options]\npackages = rabbitizer\n\n[options.package_data]\nrabbitizer =\n    **/*.pyi\n    **/py.typed\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/setup.py",
    "content": "# SPDX-FileCopyrightText: © 2022 Decompollaborate\n# SPDX-License-Identifier: MIT\n\nfrom setuptools import setup, Extension\n\n\nsetup(\n    ext_modules=[\n        Extension(\n            name=\"rabbitizer\",\n            sources=[\"rabbitizer/rabbitizer_module.c\", \"rabbitizer/rabbitizer_submodule_Utils.c\", \"rabbitizer/rabbitizer_type_Instruction.c\", \"rabbitizer/rabbitizer_global_config.c\", \"rabbitizer/rabbitizer_type_TrackedRegisterState.c\", \"rabbitizer/rabbitizer_type_RegistersTracker.c\", \"rabbitizer/rabbitizer_type_LoPairingInfo.c\",\n            \"rabbitizer/enums/rabbitizer_type_Enum.c\", \"rabbitizer/enums/enums_utils.c\", \"rabbitizer/enums/rabbitizer_enum_InstrCategory.c\", \"rabbitizer/enums/rabbitizer_enum_InstrId.c\", \"rabbitizer/enums/rabbitizer_enum_Abi.c\",\n            \"rabbitizer/enums/registers/rabbitizer_enum_GprO32.c\", \"rabbitizer/enums/registers/rabbitizer_enum_GprN32.c\",\n            \"src/instructions/RabbitizerInstruction/RabbitizerInstruction_Disassemble.c\", \"src/instructions/RabbitizerInstruction/RabbitizerInstruction_ProcessUniqueId.c\", \"src/instructions/RabbitizerInstruction/RabbitizerInstruction.c\", \"src/instructions/RabbitizerInstruction/RabbitizerInstruction_Examination.c\",\n            \"src/instructions/RabbitizerInstructionRsp/RabbitizerInstructionRsp.c\", \"src/instructions/RabbitizerInstructionRsp/RabbitizerInstructionRsp_ProcessUniqueId.c\",\n            \"src/instructions/RabbitizerInstructionR5900/RabbitizerInstructionR5900.c\", \"src/instructions/RabbitizerInstructionR5900/RabbitizerInstructionR5900_ProcessUniqueId.c\",\n            \"src/instructions/RabbitizerInstrDescriptor.c\", \"src/instructions/RabbitizerInstrId.c\", \"src/instructions/RabbitizerRegister.c\", \"src/instructions/RabbitizerInstrSuffix.c\",\n            \"src/analysis/RabbitizerTrackedRegisterState.c\", \"src/analysis/RabbitizerRegistersTracker.c\", \"src/analysis/RabbitizerLoPairingInfo.c\",\n            \"src/common/Utils.c\", \"src/common/RabbitizerVersion.c\", \"src/common/RabbitizerConfig.c\"],\n            include_dirs=[\"include\", \"rabbitizer\"],\n            extra_compile_args = [\n                \"-std=c11\",\n                \"-Wall\",\n                \"-g\",\n            ],\n        ),\n    ],\n)\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/src/analysis/RabbitizerLoPairingInfo.c",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"analysis/RabbitizerLoPairingInfo.h\"\n\nvoid RabbitizerLoPairingInfo_Init(RabbitizerLoPairingInfo *self) {\n    *self = (RabbitizerLoPairingInfo){\n        .instrOffset = 0,\n        .value = 0,\n        .shouldProcess = false,\n        .isGpRel = false,\n        .isGpGot = false,\n    };\n}\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/src/analysis/RabbitizerRegistersTracker.c",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"analysis/RabbitizerRegistersTracker.h\"\n\n#include <assert.h>\n\n#include \"common/Utils.h\"\n#include \"common/RabbitizerConfig.h\"\n#include \"instructions/RabbitizerRegister.h\"\n\n// TODO: abi checks\n\nvoid RabbitizerRegistersTracker_init(RabbitizerRegistersTracker *self, const RabbitizerRegistersTracker *other) {\n    size_t i;\n\n    for (i = 0; i < ARRAY_COUNT(self->registers); i++) {\n        RabbitizerTrackedRegisterState_init(&self->registers[i], i);\n        if (other != NULL) {\n            RabbitizerTrackedRegisterState_copyState(&self->registers[i], &other->registers[i]);\n        }\n    }\n}\n\nvoid RabbitizerRegistersTracker_destroy(RabbitizerRegistersTracker *self) {\n    for (size_t i = 0; i < ARRAY_COUNT(self->registers); i++) {\n        RabbitizerTrackedRegisterState_destroy(&self->registers[i]);\n    }\n}\n\n// TODO: simplify logic\nbool RabbitizerRegistersTracker_moveRegisters(RabbitizerRegistersTracker *self, const RabbitizerInstruction *instr) {\n    RabbitizerTrackedRegisterState *dstState;\n    RabbitizerTrackedRegisterState *srcState;\n    uint8_t reg;\n    uint8_t rd = RAB_INSTR_GET_rd(instr);\n    uint8_t rs = RAB_INSTR_GET_rs(instr);\n    uint8_t rt = RAB_INSTR_GET_rt(instr);\n\n    if (!RabbitizerInstrDescriptor_maybeIsMove(instr->descriptor)) {\n        return false;\n    }\n    if (rt == 0 && rs == 0) {\n        // ?\n        // RabbitizerTrackedRegisterState_clear(dstState);\n        return false;\n    }\n\n    if (rt == 0) {\n        reg = rs;\n    } else if (rs == 0) {\n        reg = rt;\n    } else {\n        if (RabbitizerTrackedRegisterState_hasAnyValue(&self->registers[rs]) && !RabbitizerTrackedRegisterState_hasAnyValue(&self->registers[rt])) {\n            reg = rs;\n        } else if (RabbitizerTrackedRegisterState_hasAnyValue(&self->registers[rt]) && !RabbitizerTrackedRegisterState_hasAnyValue(&self->registers[rs])) {\n            reg = rt;\n        } else if (rd == rs) { // Check stuff like  `addu   $3, $3, $2`\n            reg = rt;\n            if (self->registers[rs].hasLuiValue || self->registers[rs].hasGpGot) {\n                reg = rs;\n            }\n        } else if (rd == rt) {\n            reg = rs;\n            if (self->registers[rt].hasLuiValue || self->registers[rt].hasGpGot) {\n                reg = rt;\n            }\n        } else {\n            // ?\n            // RabbitizerTrackedRegisterState_clear(dstState);\n            return false;\n        }\n\n        srcState = &self->registers[reg];\n        RabbitizerTrackedRegisterState_copyState(&self->registers[rd], srcState);\n        return true;\n    }\n\n    srcState = &self->registers[reg];\n    dstState = &self->registers[rd];\n\n    if (RabbitizerTrackedRegisterState_hasAnyValue(srcState)) {\n        RabbitizerTrackedRegisterState_copyState(dstState, srcState);\n        return true;\n    }\n\n    RabbitizerTrackedRegisterState_clear(dstState);\n    return false;\n}\n\nvoid RabbitizerRegistersTracker_overwriteRegisters(RabbitizerRegistersTracker *self, const RabbitizerInstruction *instr, int instrOffset) {\n    bool shouldRemove = false;\n    uint8_t reg = 0;\n    RabbitizerTrackedRegisterState *state = NULL;\n\n    if (RabbitizerRegistersTracker_moveRegisters(self, instr)) {\n        return;\n    }\n\n    if (RabbitizerInstrDescriptor_isFloat(instr->descriptor)) {\n        switch (instr->uniqueId) {\n            case RABBITIZER_INSTR_ID_cpu_mtc1:\n            case RABBITIZER_INSTR_ID_cpu_dmtc1:\n            case RABBITIZER_INSTR_ID_cpu_ctc1:\n                // IDO usually use a reg as a temp when loading a constant value\n                // into the float coprocessor, after that IDO never re-uses the value\n                // in that reg for anything else\n                shouldRemove = true;\n                reg = RAB_INSTR_GET_rt(instr);\n                break;\n\n            default:\n                break;\n        }\n    } else if (RabbitizerInstrDescriptor_isRType(instr->descriptor) ||\n               (RabbitizerInstrDescriptor_isBranch(instr->descriptor) && RabbitizerInstrDescriptor_isIType(instr->descriptor))) {\n        // $at usually is a one-use reg\n        uint8_t at = 0;\n\n        if (RAB_INSTR_GET_rs(instr) == 1) {\n            at = RAB_INSTR_GET_rs(instr);\n        } else if (RAB_INSTR_GET_rt(instr) == 1) {\n            at = RAB_INSTR_GET_rt(instr);\n        }\n\n        state = &self->registers[at];\n        if (state->hasLoValue || state->hasLuiValue || state->hasGpGot) {\n            shouldRemove = true;\n            reg = at;\n        }\n    }\n\n    if (RabbitizerInstrDescriptor_modifiesRt(instr->descriptor)) {\n        shouldRemove = true;\n        reg = RAB_INSTR_GET_rt(instr);\n        if (RabbitizerInstrDescriptor_canBeHi(instr->descriptor)) {\n            RabbitizerTrackedRegisterState_clearLo(&self->registers[RAB_INSTR_GET_rt(instr)]);\n            shouldRemove = false;\n        }\n    }\n    if (RabbitizerInstrDescriptor_modifiesRd(instr->descriptor)) {\n        shouldRemove = true;\n        reg = RAB_INSTR_GET_rd(instr);\n    }\n\n    if (shouldRemove) {\n        state = &self->registers[reg];\n#if 0\n        if (state->hasLuiValue) {\n            self->_printDebugInfo_clearRegister(instr, reg)\n        }\n#endif\n\n        RabbitizerTrackedRegisterState_clearHi(state);\n        if (!RabbitizerTrackedRegisterState_wasSetInCurrentOffset(state, instrOffset)) {\n            RabbitizerTrackedRegisterState_clearGp(state);\n            RabbitizerTrackedRegisterState_clearLo(state);\n        }\n    }\n}\n\nvoid RabbitizerRegistersTracker_unsetRegistersAfterFuncCall(RabbitizerRegistersTracker *self, UNUSED const RabbitizerInstruction *instr,\n                                                            const RabbitizerInstruction *prevInstr) {\n    RabbitizerTrackedRegisterState *state = NULL;\n\n    if (!RabbitizerInstrDescriptor_doesLink(prevInstr->descriptor)) {\n        return;\n    }\n\n    if (RabbitizerConfig_Cfg.regNames.gprAbiNames == RABBITIZER_ABI_O32 || RabbitizerConfig_Cfg.regNames.gprAbiNames == RABBITIZER_ABI_NUMERIC) {\n        for (size_t reg = 0; reg < ARRAY_COUNT(self->registers); reg++) {\n            switch (reg) {\n                case RABBITIZER_REG_GPR_O32_at:\n                case RABBITIZER_REG_GPR_O32_v0:\n                case RABBITIZER_REG_GPR_O32_v1:\n                case RABBITIZER_REG_GPR_O32_a0:\n                case RABBITIZER_REG_GPR_O32_a1:\n                case RABBITIZER_REG_GPR_O32_a2:\n                case RABBITIZER_REG_GPR_O32_a3:\n                case RABBITIZER_REG_GPR_O32_t0:\n                case RABBITIZER_REG_GPR_O32_t1:\n                case RABBITIZER_REG_GPR_O32_t2:\n                case RABBITIZER_REG_GPR_O32_t3:\n                case RABBITIZER_REG_GPR_O32_t4:\n                case RABBITIZER_REG_GPR_O32_t5:\n                case RABBITIZER_REG_GPR_O32_t6:\n                case RABBITIZER_REG_GPR_O32_t7:\n                case RABBITIZER_REG_GPR_O32_t8:\n                case RABBITIZER_REG_GPR_O32_t9:\n                case RABBITIZER_REG_GPR_O32_ra:\n                    state = &self->registers[reg];\n#if 0\n                    if (state.hasLuiValue) {\n                        self->_printDebugInfo_clearRegister(instr, reg)\n                    }\n#endif\n                    RabbitizerTrackedRegisterState_clear(state);\n                    break;\n\n                default:\n                    break;\n            }\n        }\n    } else if (RabbitizerConfig_Cfg.regNames.gprAbiNames == RABBITIZER_ABI_N32 || RabbitizerConfig_Cfg.regNames.gprAbiNames == RABBITIZER_ABI_N64) {\n        for (size_t reg = 0; reg < ARRAY_COUNT(self->registers); reg++) {\n            switch (reg) {\n                case RABBITIZER_REG_GPR_N32_at:\n                case RABBITIZER_REG_GPR_N32_v0:\n                case RABBITIZER_REG_GPR_N32_v1:\n                case RABBITIZER_REG_GPR_N32_a0:\n                case RABBITIZER_REG_GPR_N32_a1:\n                case RABBITIZER_REG_GPR_N32_a2:\n                case RABBITIZER_REG_GPR_N32_a3:\n                case RABBITIZER_REG_GPR_N32_a4:\n                case RABBITIZER_REG_GPR_N32_a5:\n                case RABBITIZER_REG_GPR_N32_a6:\n                case RABBITIZER_REG_GPR_N32_a7:\n                case RABBITIZER_REG_GPR_N32_t0:\n                case RABBITIZER_REG_GPR_N32_t1:\n                case RABBITIZER_REG_GPR_N32_t2:\n                case RABBITIZER_REG_GPR_N32_t3:\n                case RABBITIZER_REG_GPR_N32_t8:\n                case RABBITIZER_REG_GPR_N32_t9:\n                case RABBITIZER_REG_GPR_N32_ra:\n                    state = &self->registers[reg];\n#if 0\n                    if (state.hasLuiValue) {\n                        self->_printDebugInfo_clearRegister(instr, reg)\n                    }\n#endif\n                    RabbitizerTrackedRegisterState_clear(state);\n                    break;\n\n                default:\n                    break;\n            }\n        }\n    }\n}\n\nbool RabbitizerRegistersTracker_getAddressIfCanSetType(const RabbitizerRegistersTracker *self, const RabbitizerInstruction *instr, int instrOffset,\n                                                       uint32_t *dstAddress) {\n    const RabbitizerTrackedRegisterState *state = &self->registers[RAB_INSTR_GET_rs(instr)];\n\n    if (!state->hasLoValue) {\n        return false;\n    }\n\n    if (!state->dereferenced || instrOffset == state->dereferenceOffset) {\n        *dstAddress = state->value;\n        return true;\n    }\n\n    return false;\n}\n\nbool RabbitizerRegistersTracker_getJrInfo(const RabbitizerRegistersTracker *self, const RabbitizerInstruction *instr, int *dstOffset, uint32_t *dstAddress) {\n    const RabbitizerTrackedRegisterState *state = &self->registers[RAB_INSTR_GET_rs(instr)];\n\n    if (!state->hasLoValue || !state->dereferenced) {\n        return false;\n    }\n\n    *dstOffset = state->loOffset;\n    *dstAddress = state->value;\n    return true;\n}\n\n// prevInstr can be NULL\nvoid RabbitizerRegistersTracker_processLui(RabbitizerRegistersTracker *self, const RabbitizerInstruction *instr, int instrOffset,\n                                           const RabbitizerInstruction *prevInstr) {\n    RabbitizerTrackedRegisterState *state = NULL;\n\n    assert(RabbitizerInstrDescriptor_canBeHi(instr->descriptor));\n\n    state = &self->registers[RAB_INSTR_GET_rt(instr)];\n    RabbitizerTrackedRegisterState_clear(state);\n    RabbitizerTrackedRegisterState_setHi(state, RabbitizerInstruction_getImmediate(instr), instrOffset);\n\n    if (prevInstr != NULL) {\n        // If the previous instructions is a branch likely, then nulify\n        // the effects of this instruction for future analysis\n        state->luiSetOnBranchLikely = RabbitizerInstrDescriptor_isBranchLikely(prevInstr->descriptor) || RabbitizerInstruction_isUnconditionalBranch(prevInstr);\n    }\n}\n\nvoid RabbitizerRegistersTracker_processGpLoad(RabbitizerRegistersTracker *self, const RabbitizerInstruction *instr, int instrOffset) {\n    RabbitizerTrackedRegisterState *state = NULL;\n\n    assert(RabbitizerInstrDescriptor_canBeLo(instr->descriptor));\n\n    state = &self->registers[RAB_INSTR_GET_rt(instr)];\n\n    RabbitizerTrackedRegisterState_clear(state);\n    RabbitizerTrackedRegisterState_setGpLoad(state, RabbitizerInstruction_getImmediate(instr), instrOffset);\n}\n\nbool RabbitizerRegistersTracker_getLuiOffsetForConstant(const RabbitizerRegistersTracker *self, const RabbitizerInstruction *instr, int *dstOffset) {\n    const RabbitizerTrackedRegisterState *state = &self->registers[RAB_INSTR_GET_rs(instr)];\n\n    if (!state->hasLuiValue) {\n        return false;\n    }\n\n    *dstOffset = state->luiOffset;\n    return true;\n}\n\nvoid RabbitizerRegistersTracker_processConstant(RabbitizerRegistersTracker *self, const RabbitizerInstruction *instr, uint32_t value, int offset) {\n    RabbitizerTrackedRegisterState *stateDst = &self->registers[RAB_INSTR_GET_rt(instr)];\n\n    RabbitizerTrackedRegisterState_setLo(stateDst, value, offset);\n}\n\n// TODO: this function should not be changing the state of the tracker\nbool RabbitizerRegistersTracker_getLuiOffsetForLo(RabbitizerRegistersTracker *self, const RabbitizerInstruction *instr, int instrOffset, int *dstOffset,\n                                                  bool *dstIsGp) {\n    const RabbitizerTrackedRegisterState *state = &self->registers[RAB_INSTR_GET_rs(instr)];\n\n    if (state->hasLuiValue && !state->luiSetOnBranchLikely) {\n        *dstOffset = state->luiOffset;\n        *dstIsGp = false;\n        return true;\n    }\n\n    // TODO: abi\n    if (RAB_INSTR_GET_rs(instr) == 28) { // $gp\n        *dstOffset = 0;\n        *dstIsGp = true;\n        return true;\n    }\n\n    if (RabbitizerInstrDescriptor_modifiesRt(instr->descriptor) && RabbitizerInstrDescriptor_doesDereference(instr->descriptor)) {\n        if (state->hasLoValue && !state->dereferenced) {\n            // Simulate a dereference\n            RabbitizerTrackedRegisterState_dereferenceState(&self->registers[RAB_INSTR_GET_rt(instr)], state, instrOffset);\n        }\n    }\n\n    return false;\n}\n\nRabbitizerLoPairingInfo RabbitizerRegistersTracker_preprocessLoAndGetInfo(RabbitizerRegistersTracker *self, const RabbitizerInstruction *instr,\n                                                                          int instrOffset) {\n    const RabbitizerTrackedRegisterState *state = &self->registers[RAB_INSTR_GET_rs(instr)];\n    RabbitizerLoPairingInfo pairingInfo;\n\n    RabbitizerLoPairingInfo_Init(&pairingInfo);\n\n    if (state->hasLuiValue && !state->luiSetOnBranchLikely) {\n        pairingInfo.instrOffset = state->luiOffset;\n        pairingInfo.value = state->value;\n        pairingInfo.shouldProcess = true;\n        return pairingInfo;\n    }\n\n    if ((RAB_INSTR_GET_rs(instr) == RABBITIZER_REG_GPR_O32_gp) || (RAB_INSTR_GET_rs(instr) == RABBITIZER_REG_GPR_N32_gp)) {\n        pairingInfo.value = state->value;\n        pairingInfo.isGpRel = true;\n        pairingInfo.shouldProcess = true;\n        return pairingInfo;\n    }\n\n    if (state->hasGpGot) {\n        pairingInfo.instrOffset = state->gpGotOffset;\n        pairingInfo.value = state->value;\n        pairingInfo.shouldProcess = true;\n        pairingInfo.isGpGot = true;\n        return pairingInfo;\n    }\n\n    if (RabbitizerInstrDescriptor_modifiesRt(instr->descriptor) && RabbitizerInstrDescriptor_doesDereference(instr->descriptor)) {\n        if (state->hasLoValue && !state->dereferenced) {\n            // Simulate a dereference\n            RabbitizerTrackedRegisterState_dereferenceState(&self->registers[RAB_INSTR_GET_rt(instr)], state, instrOffset);\n        }\n    }\n\n    return pairingInfo;\n}\n\nvoid RabbitizerRegistersTracker_processLo(RabbitizerRegistersTracker *self, const RabbitizerInstruction *instr, uint32_t value, int offset) {\n    RabbitizerTrackedRegisterState *stateDst;\n\n    if (!RabbitizerInstrDescriptor_modifiesRt(instr->descriptor)) {\n        return;\n    }\n\n    stateDst = &self->registers[RAB_INSTR_GET_rt(instr)];\n    RabbitizerTrackedRegisterState_setLo(stateDst, value, offset);\n    if (RabbitizerInstrDescriptor_doesDereference(instr->descriptor)) {\n        RabbitizerTrackedRegisterState_deref(stateDst, offset);\n    }\n    if (RAB_INSTR_GET_rt(instr) == RAB_INSTR_GET_rs(instr)) {\n        RabbitizerTrackedRegisterState_clearHi(stateDst);\n        RabbitizerTrackedRegisterState_clearGp(stateDst);\n    }\n}\n\nbool RabbitizerRegistersTracker_hasLoButNoHi(const RabbitizerRegistersTracker *self, const RabbitizerInstruction *instr) {\n    const RabbitizerTrackedRegisterState *state;\n\n    assert(instr != NULL);\n\n    state = &self->registers[RAB_INSTR_GET_rs(instr)];\n    return state->hasLoValue && !state->hasLuiValue;\n}\n\n#if 0\ndef _printDebugInfo_clearRegister(self, instr: rabbitizer.Instruction, reg: int, currentVram: int|None=None) -> None:\n    if not common.GlobalConfig.PRINT_SYMBOL_FINDER_DEBUG_INFO:\n        return\n\n    if currentVram is None:\n        return\n\n    print(\"Clearing reg:\")\n    // print()\n    print(f\"vram: {currentVram:X}\")\n    print(instr)\n    print(self->registers)\n    // TODO\n    // print(f\"deleting {reg} / {instr->getRegisterName(reg)}\")\n    print()\n#endif\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/src/analysis/RabbitizerTrackedRegisterState.c",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"analysis/RabbitizerTrackedRegisterState.h\"\n\n#include <assert.h>\n\n#include \"common/Utils.h\"\n#include \"instructions/RabbitizerRegister.h\"\n\nvoid RabbitizerTrackedRegisterState_init(RabbitizerTrackedRegisterState *self, int registerNum) {\n    self->registerNum = registerNum;\n\n    self->hasLuiValue = false;\n    self->luiOffset = 0;\n    self->luiSetOnBranchLikely = false;\n\n    self->hasGpGot = false;\n    self->gpGotOffset = 0;\n\n    self->hasLoValue = false;\n    self->loOffset = 0;\n    self->dereferenced = false;\n    self->dereferenceOffset = 0;\n\n    self->value = 0;\n}\n\nvoid RabbitizerTrackedRegisterState_destroy(UNUSED RabbitizerTrackedRegisterState *self) {\n}\n\nvoid RabbitizerTrackedRegisterState_clear(RabbitizerTrackedRegisterState *self) {\n    self->hasLuiValue = false;\n    self->luiOffset = 0;\n    self->luiSetOnBranchLikely = false;\n\n    self->hasGpGot = false;\n    self->gpGotOffset = 0;\n\n    self->hasLoValue = false;\n    self->loOffset = 0;\n    self->dereferenced = false;\n    self->dereferenceOffset = 0;\n    self->value = 0;\n}\n\nvoid RabbitizerTrackedRegisterState_clearHi(RabbitizerTrackedRegisterState *self) {\n    self->hasLuiValue = false;\n    self->luiOffset = 0;\n    self->luiSetOnBranchLikely = false;\n}\n\nvoid RabbitizerTrackedRegisterState_clearGp(RabbitizerTrackedRegisterState *self) {\n    self->hasGpGot = false;\n    self->gpGotOffset = 0;\n}\n\nvoid RabbitizerTrackedRegisterState_clearLo(RabbitizerTrackedRegisterState *self) {\n    self->hasLoValue = false;\n    self->loOffset = 0;\n    self->dereferenced = false;\n    self->dereferenceOffset = 0;\n}\n\nvoid RabbitizerTrackedRegisterState_copyState(RabbitizerTrackedRegisterState *self, const RabbitizerTrackedRegisterState *other) {\n    self->hasLuiValue = other->hasLuiValue;\n    self->luiOffset = other->luiOffset;\n    self->luiSetOnBranchLikely = other->luiSetOnBranchLikely;\n\n    self->hasGpGot = other->hasGpGot;\n    self->gpGotOffset = other->gpGotOffset;\n\n    self->hasLoValue = other->hasLoValue;\n    self->loOffset = other->loOffset;\n    self->dereferenced = other->dereferenced;\n    self->dereferenceOffset = other->dereferenceOffset;\n\n    self->value = other->value;\n}\n\nvoid RabbitizerTrackedRegisterState_setHi(RabbitizerTrackedRegisterState *self, uint32_t value, int offset) {\n    assert(!self->hasGpGot);\n\n    self->hasLuiValue = true;\n    self->luiOffset = offset;\n    self->value = value << 16;\n}\n\nvoid RabbitizerTrackedRegisterState_setGpLoad(RabbitizerTrackedRegisterState *self, uint32_t value, int offset) {\n    assert(!self->hasLuiValue);\n\n    self->hasGpGot = true;\n    self->gpGotOffset = offset;\n    self->value = value;\n}\n\nvoid RabbitizerTrackedRegisterState_setLo(RabbitizerTrackedRegisterState *self, uint32_t value, int offset) {\n    self->value = value;\n    self->loOffset = offset;\n    self->hasLoValue = true;\n    self->dereferenced = false;\n    self->dereferenceOffset = 0;\n}\n\nvoid RabbitizerTrackedRegisterState_deref(RabbitizerTrackedRegisterState *self, int offset) {\n    self->dereferenced = true;\n    self->dereferenceOffset = offset;\n}\n\nvoid RabbitizerTrackedRegisterState_dereferenceState(RabbitizerTrackedRegisterState *self, const RabbitizerTrackedRegisterState *other, int offset) {\n    assert(other->hasLoValue);\n    assert(!other->dereferenced);\n\n    RabbitizerTrackedRegisterState_copyState(self, other);\n    RabbitizerTrackedRegisterState_deref(self, offset);\n}\n\nbool RabbitizerTrackedRegisterState_hasAnyValue(const RabbitizerTrackedRegisterState *self) {\n    return self->hasLuiValue || self->hasLoValue || self->hasGpGot;\n}\n\nbool RabbitizerTrackedRegisterState_wasSetInCurrentOffset(const RabbitizerTrackedRegisterState *self, int offset) {\n    return self->loOffset == offset || self->dereferenceOffset == offset;\n}\n\nvoid RabbitizerTrackedRegisterState_fprint(const RabbitizerTrackedRegisterState *self, FILE *outFile) {\n    fprintf(outFile, \"TrackedRegisterState(%i / %s)\\n\", self->registerNum, RabbitizerRegister_getNameGpr(self->registerNum));\n\n    fprintf(outFile, \"    hasLuiValue: %s\\n\", self->hasLuiValue ? \"true\" : \"false\");\n    fprintf(outFile, \"    luiOffset: 0x%X\\n\", self->luiOffset);\n    fprintf(outFile, \"    luiSetOnBranchLikely: %s\\n\", self->luiSetOnBranchLikely ? \"true\" : \"false\");\n\n    fprintf(outFile, \"    hasGpGot: %s\\n\", self->hasGpGot ? \"true\" : \"false\");\n    fprintf(outFile, \"    gpGotOffset: 0x%X\\n\", self->gpGotOffset);\n\n    fprintf(outFile, \"    hasLoValue: %s\\n\", self->hasLoValue ? \"true\" : \"false\");\n    fprintf(outFile, \"    loOffset: %X\\n\", self->loOffset);\n    fprintf(outFile, \"    dereferenced: %s\\n\", self->dereferenced ? \"true\" : \"false\");\n    fprintf(outFile, \"    dereferenceOffset: %X\\n\", self->dereferenceOffset);\n\n    fprintf(outFile, \"    value: %X\\n\", self->value);\n}\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/src/common/RabbitizerConfig.c",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"common/RabbitizerConfig.h\"\n\n#include <string.h>\n\nRabbitizerAbi RabbitizerAbi_fromStr(const char *name) {\n    if (name == NULL || strcmp(name, \"32\") == 0 || strcmp(name, \"o32\") == 0 || strcmp(name, \"O32\") == 0) {\n        return RABBITIZER_ABI_O32;\n    }\n    if (strcmp(name, \"n32\") == 0 || strcmp(name, \"N32\") == 0) {\n        return RABBITIZER_ABI_N32;\n    }\n    if (strcmp(name, \"64\") == 0 || strcmp(name, \"n64\") == 0 || strcmp(name, \"N64\") == 0) {\n        return RABBITIZER_ABI_N64;\n    }\n    return RABBITIZER_ABI_NUMERIC;\n}\n\nRabbitizerConfig RabbitizerConfig_Cfg = {\n    .regNames = {\n        .namedRegisters = true,\n        .gprAbiNames = RABBITIZER_ABI_O32,\n        .fprAbiNames = RABBITIZER_ABI_NUMERIC,\n        .userFpcCsr = true,\n        .vr4300Cop0NamedRegisters = true,\n        .vr4300RspCop0NamedRegisters = true,\n    },\n    .pseudos = {\n        .enablePseudos = true,\n        .pseudoBeqz = true,\n        .pseudoBnez = true,\n        .pseudoB = true,\n        .pseudoMove = true,\n        .pseudoNot = true,\n        .pseudoNegu = true,\n        .pseudoBal = true,\n    },\n    .toolchainTweaks = {\n        .treatJAsUnconditionalBranch = false,\n        .sn64DivFix = false,\n    },\n    .misc = {\n        .opcodeLJust = 7+4,\n        .unknownInstrComment = true,\n        .omit0XOnSmallImm = false,\n        .upperCaseImm = true,\n    }\n};\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/src/common/RabbitizerVersion.c",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"common/RabbitizerVersion.h\"\n\nconst int RabVersion_Major = RAB_VERSION_MAJOR;\nconst int RabVersion_Minor = RAB_VERSION_MINOR;\nconst int RabVersion_Patch = RAB_VERSION_PATCH;\n\nconst char RabVersion_Str[] = RAB_VERSION_STR;\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/src/common/Utils.c",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"common/Utils.h\"\n\n#include <stdbool.h>\n#include <string.h>\n\nint32_t RabbitizerUtils_From2Complement(uint32_t number, int bits) {\n    bool isNegative = number & (1ULL << (bits - 1));\n\n    if (isNegative) {\n        return -((~number + 1) & ((1ULL << bits) - 1));\n    }\n\n    return number;\n}\n\nsize_t RabbitizerUtils_CharFill(char *dst, int count, char fillchar) {\n    if (count <= 0) {\n        return 0;\n    }\n\n    memset(dst, fillchar, count);\n\n    return count;\n}\n\nsize_t RabbitizerUtils_escapeString(char *dst, size_t dstSize, const char *src, size_t srcSize) {\n    size_t srcPos = 0;\n    size_t dstpos = 0;\n\n    for (; srcPos < srcSize && dstpos < dstSize; srcPos++, src++) {\n        // The cases of this switch are sorted by ASCII order\n        switch (*src) {\n            case '\\a':\n                RABUTILS_BUFFER_WRITE_CHAR(dst, dstpos, '\\\\');\n                RABUTILS_BUFFER_WRITE_CHAR(dst, dstpos, 'a');\n                break;\n\n            case '\\t':\n                RABUTILS_BUFFER_WRITE_CHAR(dst, dstpos, '\\\\');\n                RABUTILS_BUFFER_WRITE_CHAR(dst, dstpos, 't');\n                break;\n\n            case '\\n':\n                RABUTILS_BUFFER_WRITE_CHAR(dst, dstpos, '\\\\');\n                RABUTILS_BUFFER_WRITE_CHAR(dst, dstpos, 'n');\n                break;\n\n            case '\\f':\n                RABUTILS_BUFFER_WRITE_CHAR(dst, dstpos, '\\\\');\n                RABUTILS_BUFFER_WRITE_CHAR(dst, dstpos, 'f');\n                break;\n\n            case '\\r':\n                RABUTILS_BUFFER_WRITE_CHAR(dst, dstpos, '\\\\');\n                RABUTILS_BUFFER_WRITE_CHAR(dst, dstpos, 'r');\n                break;\n\n            case '\"':\n                RABUTILS_BUFFER_WRITE_CHAR(dst, dstpos, '\\\\');\n                RABUTILS_BUFFER_WRITE_CHAR(dst, dstpos, '\"');\n                break;\n\n            case '\\\\':\n                RABUTILS_BUFFER_WRITE_CHAR(dst, dstpos, '\\\\');\n                RABUTILS_BUFFER_WRITE_CHAR(dst, dstpos, '\\\\');\n                break;\n\n            default:\n                RABUTILS_BUFFER_WRITE_CHAR(dst, dstpos, *src);\n                break;\n        }\n    }\n\n    return dstpos;\n}\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/src/instructions/RabbitizerInstrDescriptor.c",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"instructions/RabbitizerInstrDescriptor.h\"\n\n#include \"instructions/RabbitizerInstruction.h\"\n\n#define RABBITIZER_DEF_INSTR_ID(prefix, caseBits, name, ...) [RABBITIZER_INSTR_ID_##prefix##_##name] = { __VA_ARGS__ },\n\n#define RABBITIZER_DEF_INSTR_ID_ALTNAME(prefix, caseBits, name, altname, ...) RABBITIZER_DEF_INSTR_ID(prefix, caseBits, name, __VA_ARGS__)\n\nconst RabbitizerInstrDescriptor RabbitizerInstrDescriptor_Descriptors[] = {\n#include \"instructions/instr_id/RabbitizerInstrId_cpu.inc\"\n#include \"instructions/instr_id/RabbitizerInstrId_rsp.inc\"\n#include \"instructions/instr_id/RabbitizerInstrId_r5900.inc\"\n};\n\n#undef RABBITIZER_DEF_INSTR_ID\n#undef RABBITIZER_DEF_INSTR_ID_ALTNAME\n\nbool RabbitizerInstrDescriptor_isUnknownType(const RabbitizerInstrDescriptor *self) {\n    return self->instrType == RABBITIZER_INSTR_TYPE_UNKNOWN;\n}\nbool RabbitizerInstrDescriptor_isJType(const RabbitizerInstrDescriptor *self) {\n    return self->instrType == RABBITIZER_INSTR_TYPE_J;\n}\nbool RabbitizerInstrDescriptor_isIType(const RabbitizerInstrDescriptor *self) {\n    return self->instrType == RABBITIZER_INSTR_TYPE_I;\n}\nbool RabbitizerInstrDescriptor_isRType(const RabbitizerInstrDescriptor *self) {\n    return self->instrType == RABBITIZER_INSTR_TYPE_R;\n}\nbool RabbitizerInstrDescriptor_isRegimmType(const RabbitizerInstrDescriptor *self) {\n    return self->instrType == RABBITIZER_INSTR_TYPE_REGIMM;\n}\n\nRabbitizerInstrSuffix RabbitizerInstrDescriptor_instrSuffix(const RabbitizerInstrDescriptor *self) {\n    return self->instrSuffix;\n}\n\nbool RabbitizerInstrDescriptor_isBranch(const RabbitizerInstrDescriptor *self) {\n    return self->isBranch;\n}\nbool RabbitizerInstrDescriptor_isBranchLikely(const RabbitizerInstrDescriptor *self) {\n    return self->isBranchLikely;\n}\nbool RabbitizerInstrDescriptor_isJump(const RabbitizerInstrDescriptor *self) {\n    return self->isJump;\n}\nbool RabbitizerInstrDescriptor_isTrap(const RabbitizerInstrDescriptor *self) {\n    return self->isTrap;\n}\n\nbool RabbitizerInstrDescriptor_isFloat(const RabbitizerInstrDescriptor *self) {\n    return self->isFloat;\n}\nbool RabbitizerInstrDescriptor_isDouble(const RabbitizerInstrDescriptor *self) {\n    return self->isDouble;\n}\n\nbool RabbitizerInstrDescriptor_isUnsigned(const RabbitizerInstrDescriptor *self) {\n    return self->isUnsigned;\n}\n\nbool RabbitizerInstrDescriptor_modifiesRt(const RabbitizerInstrDescriptor *self) {\n    return self->modifiesRt;\n}\nbool RabbitizerInstrDescriptor_modifiesRd(const RabbitizerInstrDescriptor *self) {\n    return self->modifiesRd;\n}\n\nbool RabbitizerInstrDescriptor_notEmitedByCompilers(const RabbitizerInstrDescriptor *self) {\n    return self->notEmitedByCompilers;\n}\n\nbool RabbitizerInstrDescriptor_canBeHi(const RabbitizerInstrDescriptor *self) {\n    return self->canBeHi;\n}\nbool RabbitizerInstrDescriptor_canBeLo(const RabbitizerInstrDescriptor *self) {\n    return self->canBeLo;\n}\nbool RabbitizerInstrDescriptor_doesLink(const RabbitizerInstrDescriptor *self) {\n    return self->doesLink;\n}\nbool RabbitizerInstrDescriptor_doesDereference(const RabbitizerInstrDescriptor *self) {\n    return self->doesDereference;\n}\nbool RabbitizerInstrDescriptor_doesLoad(const RabbitizerInstrDescriptor *self) {\n    return self->doesLoad;\n}\nbool RabbitizerInstrDescriptor_doesStore(const RabbitizerInstrDescriptor *self) {\n    return self->doesStore;\n}\nbool RabbitizerInstrDescriptor_maybeIsMove(const RabbitizerInstrDescriptor *self) {\n    return self->maybeIsMove;\n}\n\nbool RabbitizerInstrDescriptor_isPseudo(const RabbitizerInstrDescriptor *self) {\n    return self->isPseudo;\n}\n\nRabbitizerArchitectureVersion RabbitizerInstrDescriptor_getArchitectureVersion(const RabbitizerInstrDescriptor *self) {\n    return self->architectureVersion;\n}\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/src/instructions/RabbitizerInstrId.c",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"instructions/RabbitizerInstrId.h\"\n\n#include <assert.h>\n\n#define RABBITIZER_DEF_INSTR_ID(prefix, caseBits, name, ...) [RABBITIZER_INSTR_ID_##prefix##_##name] = #name,\n\n#define RABBITIZER_DEF_INSTR_ID_ALTNAME(prefix, caseBits, name, altname, ...) [RABBITIZER_INSTR_ID_##prefix##_##name] = #altname,\n\nconst char *RabbitizerInstrId_Names[] = {\n#include \"instructions/instr_id/RabbitizerInstrId_cpu.inc\"\n#include \"instructions/instr_id/RabbitizerInstrId_rsp.inc\"\n#include \"instructions/instr_id/RabbitizerInstrId_r5900.inc\"\n};\n\n#undef RABBITIZER_DEF_INSTR_ID\n#undef RABBITIZER_DEF_INSTR_ID_ALTNAME\n\nconst char *RabbitizerInstrId_getOpcodeName(RabbitizerInstrId uniqueId) {\n    assert(uniqueId >= RABBITIZER_INSTR_ID_cpu_INVALID && uniqueId < RABBITIZER_INSTR_ID_ALL_MAX);\n    assert(uniqueId != RABBITIZER_INSTR_ID_cpu_MAX);\n    assert(uniqueId != RABBITIZER_INSTR_ID_rsp_MAX);\n    assert(uniqueId != RABBITIZER_INSTR_ID_r5900_MAX);\n\n    return RabbitizerInstrId_Names[uniqueId];\n}\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/src/instructions/RabbitizerInstrSuffix.c",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"instructions/RabbitizerInstrSuffix.h\"\n\n#include <assert.h>\n\n#include \"common/Utils.h\"\n#include \"instructions/RabbitizerInstruction.h\"\n#include \"instructions/RabbitizerInstructionRsp.h\"\n#include \"instructions/RabbitizerInstructionR5900.h\"\n\ntypedef size_t (*InstrSuffixCallback)(const RabbitizerInstruction *self, char *dst);\n\nsize_t RabbitizerInstrSuffix_None(UNUSED const RabbitizerInstruction *self, UNUSED char *dst) {\n    return 0;\n}\n\nsize_t RabbitizerInstrSuffixR5900_xyzw(const RabbitizerInstruction *self, char *dst) {\n    size_t totalSize = 0;\n\n    if (RAB_INSTR_R5900_GET_xyzw_x(self) || RAB_INSTR_R5900_GET_xyzw_y(self) || RAB_INSTR_R5900_GET_xyzw_z(self) || RAB_INSTR_R5900_GET_xyzw_w(self)) {\n        RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, '.');\n    }\n\n    if (RAB_INSTR_R5900_GET_xyzw_x(self)) {\n        RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, 'x');\n    }\n    if (RAB_INSTR_R5900_GET_xyzw_y(self)) {\n        RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, 'y');\n    }\n    if (RAB_INSTR_R5900_GET_xyzw_z(self)) {\n        RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, 'z');\n    }\n    if (RAB_INSTR_R5900_GET_xyzw_w(self)) {\n        RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, 'w');\n    }\n\n    return totalSize;\n}\nconst InstrSuffixCallback instrSuffixCallbacks[] = {\n    [RABINSTRSUFFIX_NONE] = RabbitizerInstrSuffix_None,\n\n    [RABINSTRSUFFIX_R5900_xyzw] = RabbitizerInstrSuffixR5900_xyzw,\n};\n\nsize_t RabbitizerInstrSuffix_getSizeForBuffer(UNUSED const RabbitizerInstruction *self, UNUSED RabbitizerInstrSuffix instrSuffix) {\n    // Just hardcode the size of the bigger possible suffix, faster than actually computing it.\n    return 5;\n}\n\nsize_t RabbitizerInstrSuffix_processSuffix(const RabbitizerInstruction *self, char *dst, RabbitizerInstrSuffix instrSuffix) {\n    InstrSuffixCallback callback;\n\n    assert(instrSuffix >= RABINSTRSUFFIX_NONE);\n    assert(instrSuffix < RABINSTRSUFFIX_MAX);\n\n    callback = instrSuffixCallbacks[instrSuffix];\n    assert(callback != NULL);\n\n    return callback(self, dst);\n}\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/src/instructions/RabbitizerInstruction/RabbitizerInstruction.c",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"instructions/RabbitizerInstruction.h\"\n\n#include <assert.h>\n\n#include \"common/RabbitizerConfig.h\"\n#include \"instructions/RabbitizerRegister.h\"\n#include \"instructions/RabbitizerInstructionRsp.h\"\n#include \"instructions/RabbitizerInstructionR5900.h\"\n\nvoid RabbitizerInstruction_init(RabbitizerInstruction *self, uint32_t word, uint32_t vram) {\n    self->word = word;\n    self->_mandatorybits = 0;\n\n    self->uniqueId = RABBITIZER_INSTR_ID_cpu_INVALID;\n    self->descriptor = &RabbitizerInstrDescriptor_Descriptors[self->uniqueId];\n\n    self->vram = vram;\n    self->_handwrittenCategory = false;\n    self->inHandwrittenFunction = false;\n    self->category = RABBITIZER_INSTRCAT_CPU;\n}\n\nvoid RabbitizerInstruction_destroy(UNUSED RabbitizerInstruction *self) {\n}\n\n/* General getters */\n\nuint32_t RabbitizerInstruction_getRaw(const RabbitizerInstruction *self) {\n    return self->word;\n}\n\nuint32_t RabbitizerInstruction_getImmediate(const RabbitizerInstruction *self) {\n    return RAB_INSTR_GET_immediate(self);\n}\nint32_t RabbitizerInstruction_getProcessedImmediate(const RabbitizerInstruction *self) {\n    if (RabbitizerInstrDescriptor_isUnsigned(self->descriptor)) {\n        return RAB_INSTR_GET_immediate(self);\n    }\n    return RabbitizerUtils_From2Complement(RAB_INSTR_GET_immediate(self), 16);\n}\n\nuint32_t RabbitizerInstruction_getInstrIndex(const RabbitizerInstruction *self) {\n    return RAB_INSTR_GET_instr_index(self);\n}\n\nuint32_t RabbitizerInstruction_getInstrIndexAsVram(const RabbitizerInstruction *self) {\n    uint32_t vram = RabbitizerInstruction_getInstrIndex(self) << 2;\n\n    if (self->vram == 0) {\n        vram |= 0x80000000;\n    } else {\n        // Jumps are PC-region branches. The upper bits are filled with the address in the delay slot\n        vram |= (self->vram + 4) & 0xFF000000;\n    }\n    return vram;\n}\n\nint32_t RabbitizerInstruction_getBranchOffset(const RabbitizerInstruction *self) {\n    int32_t diff = RabbitizerUtils_From2Complement(RabbitizerInstruction_getImmediate(self), 16);\n\n    return diff * 4 + 4;\n}\n\nint32_t RabbitizerInstruction_getGenericBranchOffset(const RabbitizerInstruction *self, uint32_t currentVram) {\n    if (self->uniqueId == RABBITIZER_INSTR_ID_cpu_j) {\n        return RabbitizerInstruction_getInstrIndexAsVram(self) - currentVram;\n    }\n    return RabbitizerInstruction_getBranchOffset(self);\n}\n\n/* General getters */\n\nvoid RabbitizerInstruction_blankOut(RabbitizerInstruction *self) {\n    size_t i;\n\n    for (i = 0; i < ARRAY_COUNT(self->descriptor->operands) && self->descriptor->operands[i] != RAB_OPERAND_ALL_INVALID; i++) {\n        switch (self->descriptor->operands[i]) {\n            case RAB_OPERAND_cpu_rs:\n                self->word = RAB_INSTR_PACK_rs(self->word, 0);\n                break;\n\n            case RAB_OPERAND_cpu_rt:\n                self->word = RAB_INSTR_PACK_rt(self->word, 0);\n                break;\n\n            case RAB_OPERAND_cpu_rd:\n                self->word = RAB_INSTR_PACK_rd(self->word, 0);\n                break;\n\n            case RAB_OPERAND_cpu_sa:\n                self->word = RAB_INSTR_PACK_sa(self->word, 0);\n                break;\n\n            case RAB_OPERAND_cpu_zero:\n                break;\n\n            case RAB_OPERAND_cpu_cop0d:\n                self->word = RAB_INSTR_PACK_cop0d(self->word, 0);\n                break;\n\n            case RAB_OPERAND_cpu_fs:\n                self->word = RAB_INSTR_PACK_fs(self->word, 0);\n                break;\n\n            case RAB_OPERAND_cpu_ft:\n                self->word = RAB_INSTR_PACK_ft(self->word, 0);\n                break;\n\n            case RAB_OPERAND_cpu_fd:\n                self->word = RAB_INSTR_PACK_fd(self->word, 0);\n                break;\n\n            case RAB_OPERAND_cpu_cop1cs:\n                self->word = RAB_INSTR_PACK_cop1cs(self->word, 0);\n                break;\n\n            case RAB_OPERAND_cpu_cop2t:\n                self->word = RAB_INSTR_PACK_cop2t(self->word, 0);\n                break;\n\n            case RAB_OPERAND_cpu_op:\n                self->word = RAB_INSTR_PACK_op(self->word, 0);\n                break;\n\n            case RAB_OPERAND_cpu_code:\n                self->word = RAB_INSTR_PACK_code(self->word, 0);\n                break;\n\n            case RAB_OPERAND_cpu_code_lower:\n                self->word = RAB_INSTR_PACK_code_lower(self->word, 0);\n                break;\n\n            case RAB_OPERAND_cpu_copraw:\n                self->word = RAB_INSTR_PACK_copraw(self->word, 0);\n                break;\n\n            case RAB_OPERAND_cpu_label:\n                self->word = RAB_INSTR_PACK_instr_index(self->word, 0);\n                break;\n\n            case RAB_OPERAND_cpu_immediate:\n                self->word = RAB_INSTR_PACK_immediate(self->word, 0);\n                break;\n\n            case RAB_OPERAND_cpu_branch_target_label:\n                self->word = RAB_INSTR_PACK_immediate(self->word, 0);\n                break;\n\n            case RAB_OPERAND_cpu_immediate_base:\n                self->word = RAB_INSTR_PACK_rs(self->word, 0);\n                self->word = RAB_INSTR_PACK_immediate(self->word, 0);\n                break;\n\n            /* rsp */\n            case RAB_OPERAND_rsp_rs:\n                self->word = RAB_INSTR_PACK_rs(self->word, 0);\n                break;\n\n            case RAB_OPERAND_rsp_rt:\n                self->word = RAB_INSTR_PACK_rt(self->word, 0);\n                break;\n\n            case RAB_OPERAND_rsp_rd:\n                self->word = RAB_INSTR_PACK_rd(self->word, 0);\n                break;\n\n            case RAB_OPERAND_rsp_cop0d:\n                self->word = RAB_INSTR_PACK_cop0d(self->word, 0);\n                break;\n\n            case RAB_OPERAND_rsp_cop2t:\n                self->word = RAB_INSTR_RSP_PACK_cop2t(self->word, 0);\n                break;\n\n            case RAB_OPERAND_rsp_cop2cd:\n                self->word = RAB_INSTR_RSP_PACK_cop2cd(self->word, 0);\n                break;\n\n            case RAB_OPERAND_rsp_vs:\n                self->word = RAB_INSTR_RSP_PACK_vs(self->word, 0);\n                break;\n\n            case RAB_OPERAND_rsp_vt:\n                self->word = RAB_INSTR_RSP_PACK_vt(self->word, 0);\n                break;\n\n            case RAB_OPERAND_rsp_vd:\n                self->word = RAB_INSTR_RSP_PACK_vd(self->word, 0);\n                break;\n\n            case RAB_OPERAND_rsp_vt_elementhigh:\n                self->word = RAB_INSTR_RSP_PACK_vt(self->word, 0);\n                self->word = RAB_INSTR_RSP_PACK_elementhigh(self->word, 0);\n                break;\n\n            case RAB_OPERAND_rsp_vt_elementlow:\n                self->word = RAB_INSTR_RSP_PACK_vt(self->word, 0);\n                self->word = RAB_INSTR_RSP_PACK_elementlow(self->word, 0);\n                break;\n\n            case RAB_OPERAND_rsp_vd_de:\n                self->word = RAB_INSTR_RSP_PACK_vd(self->word, 0);\n                self->word = RAB_INSTR_RSP_PACK_de(self->word, 0);\n                break;\n\n            case RAB_OPERAND_rsp_vs_index:\n                self->word = RAB_INSTR_RSP_PACK_vs(self->word, 0);\n                self->word = RAB_INSTR_RSP_PACK_index(self->word, 0);\n                break;\n\n            case RAB_OPERAND_rsp_offset_rs:\n                self->word = RAB_INSTR_RSP_PACK_offset(self->word, 0);\n                self->word = RAB_INSTR_PACK_rs(self->word, 0);\n                break;\n\n            case RAB_OPERAND_rsp_immediate_base:\n                self->word = RAB_INSTR_PACK_rs(self->word, 0);\n                self->word = RAB_INSTR_PACK_immediate(self->word, 0);\n                break;\n            /* rsp */\n\n            /* r5900 */\n            case RAB_OPERAND_r5900_I:\n            case RAB_OPERAND_r5900_Q:\n            case RAB_OPERAND_r5900_R:\n            case RAB_OPERAND_r5900_ACC:\n                // Not real registers encoded on the instruction itself\n                break;\n\n            case RAB_OPERAND_r5900_ACCxyzw:\n                self->word = RAB_INSTR_R5900_PACK_xyzw_x(self->word, 0);\n                self->word = RAB_INSTR_R5900_PACK_xyzw_y(self->word, 0);\n                self->word = RAB_INSTR_R5900_PACK_xyzw_z(self->word, 0);\n                self->word = RAB_INSTR_R5900_PACK_xyzw_w(self->word, 0);\n                break;\n\n            case RAB_OPERAND_r5900_vfs:\n                self->word = RAB_INSTR_R5900_PACK_vfs(self->word, 0);\n                break;\n\n            case RAB_OPERAND_r5900_vft:\n                self->word = RAB_INSTR_R5900_PACK_vft(self->word, 0);\n                break;\n\n            case RAB_OPERAND_r5900_vfd:\n                self->word = RAB_INSTR_R5900_PACK_vfd(self->word, 0);\n                break;\n\n            case RAB_OPERAND_r5900_vfsxyzw:\n                self->word = RAB_INSTR_R5900_PACK_vfs(self->word, 0);\n                self->word = RAB_INSTR_R5900_PACK_xyzw_x(self->word, 0);\n                self->word = RAB_INSTR_R5900_PACK_xyzw_y(self->word, 0);\n                self->word = RAB_INSTR_R5900_PACK_xyzw_z(self->word, 0);\n                self->word = RAB_INSTR_R5900_PACK_xyzw_w(self->word, 0);\n                break;\n\n            case RAB_OPERAND_r5900_vftxyzw:\n                self->word = RAB_INSTR_R5900_PACK_vft(self->word, 0);\n                self->word = RAB_INSTR_R5900_PACK_xyzw_x(self->word, 0);\n                self->word = RAB_INSTR_R5900_PACK_xyzw_y(self->word, 0);\n                self->word = RAB_INSTR_R5900_PACK_xyzw_z(self->word, 0);\n                self->word = RAB_INSTR_R5900_PACK_xyzw_w(self->word, 0);\n                break;\n\n            case RAB_OPERAND_r5900_vfdxyzw:\n                self->word = RAB_INSTR_R5900_PACK_vfd(self->word, 0);\n                self->word = RAB_INSTR_R5900_PACK_xyzw_x(self->word, 0);\n                self->word = RAB_INSTR_R5900_PACK_xyzw_y(self->word, 0);\n                self->word = RAB_INSTR_R5900_PACK_xyzw_z(self->word, 0);\n                self->word = RAB_INSTR_R5900_PACK_xyzw_w(self->word, 0);\n                break;\n\n            case RAB_OPERAND_r5900_vfsn:\n                self->word = RAB_INSTR_R5900_PACK_vfs(self->word, 0);\n                self->word = RAB_INSTR_R5900_PACK_n(self->word, 0);\n                break;\n\n            case RAB_OPERAND_r5900_vftn:\n                self->word = RAB_INSTR_R5900_PACK_vft(self->word, 0);\n                self->word = RAB_INSTR_R5900_PACK_n(self->word, 0);\n                break;\n\n            case RAB_OPERAND_r5900_vfdn:\n                self->word = RAB_INSTR_R5900_PACK_vfd(self->word, 0);\n                self->word = RAB_INSTR_R5900_PACK_n(self->word, 0);\n                break;\n\n            case RAB_OPERAND_r5900_vfsl:\n                self->word = RAB_INSTR_R5900_PACK_vfs(self->word, 0);\n                self->word = RAB_INSTR_R5900_PACK_l(self->word, 0);\n                break;\n\n            case RAB_OPERAND_r5900_vftl:\n                self->word = RAB_INSTR_R5900_PACK_vft(self->word, 0);\n                self->word = RAB_INSTR_R5900_PACK_l(self->word, 0);\n                break;\n\n            case RAB_OPERAND_r5900_vfdl:\n                self->word = RAB_INSTR_R5900_PACK_vfd(self->word, 0);\n                self->word = RAB_INSTR_R5900_PACK_l(self->word, 0);\n                break;\n\n            case RAB_OPERAND_r5900_vfsm:\n                self->word = RAB_INSTR_R5900_PACK_vfs(self->word, 0);\n                self->word = RAB_INSTR_R5900_PACK_m(self->word, 0);\n                break;\n\n            case RAB_OPERAND_r5900_vftm:\n                self->word = RAB_INSTR_R5900_PACK_vft(self->word, 0);\n                self->word = RAB_INSTR_R5900_PACK_m(self->word, 0);\n                break;\n\n            case RAB_OPERAND_r5900_vfdm:\n                self->word = RAB_INSTR_R5900_PACK_vfd(self->word, 0);\n                self->word = RAB_INSTR_R5900_PACK_m(self->word, 0);\n                break;\n\n            case RAB_OPERAND_r5900_vis:\n                self->word = RAB_INSTR_R5900_PACK_vis(self->word, 0);\n                break;\n\n            case RAB_OPERAND_r5900_vit:\n                self->word = RAB_INSTR_R5900_PACK_vit(self->word, 0);\n                break;\n\n            case RAB_OPERAND_r5900_vid:\n                self->word = RAB_INSTR_R5900_PACK_vid(self->word, 0);\n                break;\n\n            case RAB_OPERAND_r5900_vis_predecr:\n                self->word = RAB_INSTR_R5900_PACK_vis(self->word, 0);\n                break;\n\n            case RAB_OPERAND_r5900_vit_predecr:\n                self->word = RAB_INSTR_R5900_PACK_vit(self->word, 0);\n                break;\n\n            case RAB_OPERAND_r5900_vid_predecr:\n                self->word = RAB_INSTR_R5900_PACK_vid(self->word, 0);\n                break;\n\n            case RAB_OPERAND_r5900_vis_postincr:\n                self->word = RAB_INSTR_R5900_PACK_vis(self->word, 0);\n                break;\n\n            case RAB_OPERAND_r5900_vit_postincr:\n                self->word = RAB_INSTR_R5900_PACK_vit(self->word, 0);\n                break;\n\n            case RAB_OPERAND_r5900_vid_postincr:\n                self->word = RAB_INSTR_R5900_PACK_vid(self->word, 0);\n                break;\n\n            case RAB_OPERAND_r5900_immediate5:\n                self->word = RAB_INSTR_R5900_PACK_imm5(self->word, 0);\n                break;\n                /* r5900 */\n\n            case RAB_OPERAND_ALL_INVALID:\n            case RAB_OPERAND_ALL_MAX:\n                assert(self->descriptor->operands[i] != RAB_OPERAND_ALL_INVALID && self->descriptor->operands[i] != RAB_OPERAND_ALL_MAX);\n                break;\n        }\n    }\n}\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/src/instructions/RabbitizerInstruction/RabbitizerInstruction_Disassemble.c",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"instructions/RabbitizerInstruction.h\"\n#include \"instructions/RabbitizerInstructionRsp.h\"\n#include \"instructions/RabbitizerInstructionR5900.h\"\n\n#include <assert.h>\n#include <string.h>\n#include <stdio.h>\n\n#include \"common/Utils.h\"\n#include \"common/RabbitizerConfig.h\"\n#include \"instructions/RabbitizerRegister.h\"\n#include \"instructions/RabbitizerInstrSuffix.h\"\n\ntypedef size_t (*OperandCallback)(const RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength);\n\nsize_t RabbitizerOperandType_process_cpu_rs(const RabbitizerInstruction *self, char *dst, UNUSED const char *immOverride, UNUSED size_t immOverrideLength) {\n    size_t totalSize = 0;\n    const char *reg = RabbitizerRegister_getNameGpr(RAB_INSTR_GET_rs(self));\n\n    RABUTILS_BUFFER_CPY(dst, totalSize, reg);\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_cpu_rt(const RabbitizerInstruction *self, char *dst, UNUSED const char *immOverride, UNUSED size_t immOverrideLength) {\n    size_t totalSize = 0;\n    const char *reg = RabbitizerRegister_getNameGpr(RAB_INSTR_GET_rt(self));\n\n    RABUTILS_BUFFER_CPY(dst, totalSize, reg);\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_cpu_rd(const RabbitizerInstruction *self, char *dst, UNUSED const char *immOverride, UNUSED size_t immOverrideLength) {\n    size_t totalSize = 0;\n    const char *reg = RabbitizerRegister_getNameGpr(RAB_INSTR_GET_rd(self));\n\n    RABUTILS_BUFFER_CPY(dst, totalSize, reg);\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_cpu_zero(UNUSED const RabbitizerInstruction *self, char *dst, UNUSED const char *immOverride,\n                                              UNUSED size_t immOverrideLength) {\n    size_t totalSize = 0;\n    const char *reg = RabbitizerRegister_getNameGpr(0);\n\n    RABUTILS_BUFFER_CPY(dst, totalSize, reg);\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_cpu_cop0d(const RabbitizerInstruction *self, char *dst, UNUSED const char *immOverride, UNUSED size_t immOverrideLength) {\n    size_t totalSize = 0;\n    const char *reg = RabbitizerRegister_getNameCop0(RAB_INSTR_GET_cop0d(self));\n\n    RABUTILS_BUFFER_CPY(dst, totalSize, reg);\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_cpu_fs(const RabbitizerInstruction *self, char *dst, UNUSED const char *immOverride, UNUSED size_t immOverrideLength) {\n    size_t totalSize = 0;\n    const char *reg = RabbitizerRegister_getNameCop1(RAB_INSTR_GET_fs(self));\n\n    RABUTILS_BUFFER_CPY(dst, totalSize, reg);\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_cpu_ft(const RabbitizerInstruction *self, char *dst, UNUSED const char *immOverride, UNUSED size_t immOverrideLength) {\n    size_t totalSize = 0;\n    const char *reg = RabbitizerRegister_getNameCop1(RAB_INSTR_GET_ft(self));\n\n    RABUTILS_BUFFER_CPY(dst, totalSize, reg);\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_cpu_fd(const RabbitizerInstruction *self, char *dst, UNUSED const char *immOverride, UNUSED size_t immOverrideLength) {\n    size_t totalSize = 0;\n    const char *reg = RabbitizerRegister_getNameCop1(RAB_INSTR_GET_fd(self));\n\n    RABUTILS_BUFFER_CPY(dst, totalSize, reg);\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_cpu_cop1cs(const RabbitizerInstruction *self, char *dst, UNUSED const char *immOverride, UNUSED size_t immOverrideLength) {\n    size_t totalSize = 0;\n    const char *reg = RabbitizerRegister_getNameCop1Control(RAB_INSTR_GET_cop1cs(self));\n\n    RABUTILS_BUFFER_CPY(dst, totalSize, reg);\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_cpu_cop2t(const RabbitizerInstruction *self, char *dst, UNUSED const char *immOverride, UNUSED size_t immOverrideLength) {\n    size_t totalSize = 0;\n    const char *reg = RabbitizerRegister_getNameCop2(RAB_INSTR_GET_cop2t(self));\n\n    RABUTILS_BUFFER_CPY(dst, totalSize, reg);\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_cpu_sa(const RabbitizerInstruction *self, char *dst, UNUSED const char *immOverride, UNUSED size_t immOverrideLength) {\n    size_t totalSize = 0;\n\n// TODO: consider making this a proper configuration\n#if 0\n    if (RAB_INSTR_GET_sa(self) < 10) {\n        RABUTILS_BUFFER_SPRINTF(dst, totalSize, \"%i\", RAB_INSTR_GET_sa(self));\n    } else {\n        RABUTILS_BUFFER_SPRINTF(dst, totalSize, \"0x%x\", RAB_INSTR_GET_sa(self));\n    }\n#endif\n    RABUTILS_BUFFER_SPRINTF(dst, totalSize, \"%i\", RAB_INSTR_GET_sa(self));\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_cpu_op(const RabbitizerInstruction *self, char *dst, UNUSED const char *immOverride, UNUSED size_t immOverrideLength) {\n    size_t totalSize = 0;\n\n// TODO: consider making this a proper configuration\n#if 0\n    if (RAB_INSTR_GET_op(self) < 10) {\n        RABUTILS_BUFFER_SPRINTF(dst, totalSize, \"%i\", RAB_INSTR_GET_op(self));\n    } else {\n        RABUTILS_BUFFER_SPRINTF(dst, totalSize, \"0x%x\", RAB_INSTR_GET_op(self));\n    }\n#endif\n    RABUTILS_BUFFER_SPRINTF(dst, totalSize, \"0x%02X\", RAB_INSTR_GET_op(self));\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_cpu_code(const RabbitizerInstruction *self, char *dst, UNUSED const char *immOverride, UNUSED size_t immOverrideLength) {\n    size_t totalSize = 0;\n    int code = RAB_INSTR_GET_code_upper(self);\n    int lower = RAB_INSTR_GET_code_lower(self);\n\n    RABUTILS_BUFFER_SPRINTF(dst, totalSize, \"%i\", code);\n    if (lower) {\n        RABUTILS_BUFFER_SPRINTF(dst, totalSize, \", %i\", lower);\n    }\n\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_cpu_code_lower(const RabbitizerInstruction *self, char *dst, UNUSED const char *immOverride,\n                                                    UNUSED size_t immOverrideLength) {\n    size_t totalSize = 0;\n    int code_lower = RAB_INSTR_GET_code_lower(self);\n\n    RABUTILS_BUFFER_SPRINTF(dst, totalSize, \"%i\", code_lower);\n\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_cpu_copraw(const RabbitizerInstruction *self, char *dst, UNUSED const char *immOverride, UNUSED size_t immOverrideLength) {\n    size_t totalSize = 0;\n\n    RABUTILS_BUFFER_SPRINTF(dst, totalSize, \"0x%X\", RAB_INSTR_GET_copraw(self));\n\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_cpu_label(const RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength) {\n    size_t totalSize = 0;\n\n    if ((immOverride != NULL) && (immOverrideLength > 0)) {\n        memcpy(dst, immOverride, immOverrideLength);\n        return immOverrideLength;\n    }\n\n    RABUTILS_BUFFER_SPRINTF(dst, totalSize, \"func_%06X\", RabbitizerInstruction_getInstrIndexAsVram(self));\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_cpu_immediate(const RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength) {\n    size_t totalSize = 0;\n    int32_t number;\n\n    if ((immOverride != NULL) && (immOverrideLength > 0)) {\n        memcpy(dst, immOverride, immOverrideLength);\n        return immOverrideLength;\n    }\n\n    number = RabbitizerInstruction_getProcessedImmediate(self);\n    if (RabbitizerConfig_Cfg.misc.omit0XOnSmallImm) {\n        if (number > -10 && number < 10) {\n            RABUTILS_BUFFER_SPRINTF(dst, totalSize, \"%i\", number);\n            return totalSize;\n        }\n    }\n    if (number < 0) {\n        if (RabbitizerConfig_Cfg.misc.upperCaseImm) {\n            RABUTILS_BUFFER_SPRINTF(dst, totalSize, \"-0x%X\", -number);\n        } else {\n            RABUTILS_BUFFER_SPRINTF(dst, totalSize, \"-0x%x\", -number);\n        }\n    } else {\n        if (RabbitizerConfig_Cfg.misc.upperCaseImm) {\n            RABUTILS_BUFFER_SPRINTF(dst, totalSize, \"0x%X\", number);\n        } else {\n            RABUTILS_BUFFER_SPRINTF(dst, totalSize, \"0x%x\", number);\n        }\n    }\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_cpu_branch_target_label(const RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength) {\n    size_t totalSize = 0;\n\n    if ((immOverride != NULL) && (immOverrideLength > 0)) {\n        memcpy(dst, immOverride, immOverrideLength);\n        return immOverrideLength;\n    }\n\n    RABUTILS_BUFFER_CPY(dst, totalSize, \". + 4 + (\");\n    RABUTILS_BUFFER_ADVANCE(dst, totalSize, RabbitizerOperandType_process_cpu_immediate(self, dst, NULL, 0));\n    RABUTILS_BUFFER_CPY(dst, totalSize, \" << 2)\");\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_cpu_immediate_base(const RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength) {\n    size_t totalSize = 0;\n\n// TODO: consider making this a proper configuration\n#if 0\n    if ((immOverride != NULL) && (immOverrideLength > 0) || RAB_INSTR_GET_immediate(self) != 0) {\n        RABUTILS_BUFFER_ADVANCE(dst, totalSize, RabbitizerOperandType_process_cpu_immediate(self, dst, immOverride, immOverrideLength));\n    }\n#endif\n    RABUTILS_BUFFER_ADVANCE(dst, totalSize, RabbitizerOperandType_process_cpu_immediate(self, dst, immOverride, immOverrideLength));\n\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, '(');\n    RABUTILS_BUFFER_ADVANCE(dst, totalSize, RabbitizerOperandType_process_cpu_rs(self, dst, immOverride, immOverrideLength));\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, ')');\n\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_rsp_rs(const RabbitizerInstruction *self, char *dst, UNUSED const char *immOverride, UNUSED size_t immOverrideLength) {\n    size_t totalSize = 0;\n    const char *reg = RabbitizerRegister_getNameRspGpr(RAB_INSTR_GET_rs(self));\n\n    RABUTILS_BUFFER_CPY(dst, totalSize, reg);\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_rsp_rt(const RabbitizerInstruction *self, char *dst, UNUSED const char *immOverride, UNUSED size_t immOverrideLength) {\n    size_t totalSize = 0;\n    const char *reg = RabbitizerRegister_getNameRspGpr(RAB_INSTR_GET_rt(self));\n\n    RABUTILS_BUFFER_CPY(dst, totalSize, reg);\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_rsp_rd(const RabbitizerInstruction *self, char *dst, UNUSED const char *immOverride, UNUSED size_t immOverrideLength) {\n    size_t totalSize = 0;\n    const char *reg = RabbitizerRegister_getNameRspGpr(RAB_INSTR_GET_rd(self));\n\n    RABUTILS_BUFFER_CPY(dst, totalSize, reg);\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_rsp_cop0d(const RabbitizerInstruction *self, char *dst, UNUSED const char *immOverride, UNUSED size_t immOverrideLength) {\n    size_t totalSize = 0;\n    const char *reg = RabbitizerRegister_getNameRspCop0(RAB_INSTR_GET_cop0d(self));\n\n    RABUTILS_BUFFER_CPY(dst, totalSize, reg);\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_rsp_cop2t(const RabbitizerInstruction *self, char *dst, UNUSED const char *immOverride, UNUSED size_t immOverrideLength) {\n    size_t totalSize = 0;\n    const char *reg = RabbitizerRegister_getNameRspCop2(RAB_INSTR_RSP_GET_cop2t(self));\n\n    RABUTILS_BUFFER_CPY(dst, totalSize, reg);\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_rsp_cop2cd(const RabbitizerInstruction *self, char *dst, UNUSED const char *immOverride, UNUSED size_t immOverrideLength) {\n    size_t totalSize = 0;\n    const char *reg = RabbitizerRegister_getNameRspCop2Control(RAB_INSTR_RSP_GET_cop2cd(self));\n\n    RABUTILS_BUFFER_CPY(dst, totalSize, reg);\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_rsp_vs(const RabbitizerInstruction *self, char *dst, UNUSED const char *immOverride, UNUSED size_t immOverrideLength) {\n    size_t totalSize = 0;\n    const char *reg = RabbitizerRegister_getNameRspVector(RAB_INSTR_RSP_GET_vs(self));\n\n    RABUTILS_BUFFER_CPY(dst, totalSize, reg);\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_rsp_vt(const RabbitizerInstruction *self, char *dst, UNUSED const char *immOverride, UNUSED size_t immOverrideLength) {\n    size_t totalSize = 0;\n    const char *reg = RabbitizerRegister_getNameRspVector(RAB_INSTR_RSP_GET_vt(self));\n\n    RABUTILS_BUFFER_CPY(dst, totalSize, reg);\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_rsp_vd(const RabbitizerInstruction *self, char *dst, UNUSED const char *immOverride, UNUSED size_t immOverrideLength) {\n    size_t totalSize = 0;\n    const char *reg = RabbitizerRegister_getNameRspVector(RAB_INSTR_RSP_GET_vd(self));\n\n    RABUTILS_BUFFER_CPY(dst, totalSize, reg);\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_rsp_vt_elementhigh(const RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength) {\n    size_t totalSize = 0;\n    uint8_t element;\n\n    RABUTILS_BUFFER_ADVANCE(dst, totalSize, RabbitizerOperandType_process_rsp_vt(self, dst, immOverride, immOverrideLength));\n\n    element = RAB_INSTR_RSP_GET_elementhigh(self);\n    if (element != 0) {\n        if ((element & 0x8) == 0x8) {\n            RABUTILS_BUFFER_SPRINTF(dst, totalSize, \"[%i]\", element & 7);\n        } else if ((element & 0xC) == 0x4) {\n            RABUTILS_BUFFER_SPRINTF(dst, totalSize, \"[%ih]\", element & (~0xC));\n        } else if ((element & 0xE) == 0x2) {\n            RABUTILS_BUFFER_SPRINTF(dst, totalSize, \"[%iq]\", element & (~0xE));\n        } else {\n            RABUTILS_BUFFER_SPRINTF(dst, totalSize, \"[%i]\", element);\n        }\n    }\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_rsp_vt_elementlow(const RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength) {\n    size_t totalSize = 0;\n\n    RABUTILS_BUFFER_ADVANCE(dst, totalSize, RabbitizerOperandType_process_rsp_vt(self, dst, immOverride, immOverrideLength));\n\n    RABUTILS_BUFFER_SPRINTF(dst, totalSize, \"[%i]\", RAB_INSTR_RSP_GET_elementlow(self));\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_rsp_vd_de(const RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength) {\n    size_t totalSize = 0;\n    uint8_t de;\n\n    RABUTILS_BUFFER_ADVANCE(dst, totalSize, RabbitizerOperandType_process_rsp_vd(self, dst, immOverride, immOverrideLength));\n\n    de = RAB_INSTR_RSP_GET_de(self);\n    if ((de & 0x8) == 0x8) {\n        RABUTILS_BUFFER_SPRINTF(dst, totalSize, \"[%i]\", de & (~0x8));\n    } else if ((de & 0xC) == 0x4) {\n        RABUTILS_BUFFER_SPRINTF(dst, totalSize, \"[%ih]\", de & (~0xC));\n    } else if ((de & 0xE) == 0x2) {\n        RABUTILS_BUFFER_SPRINTF(dst, totalSize, \"[%iq]\", de & (~0xE));\n    } else {\n        RABUTILS_BUFFER_SPRINTF(dst, totalSize, \"[%i]\", de);\n    }\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_rsp_vs_index(const RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength) {\n    size_t totalSize = 0;\n\n    RABUTILS_BUFFER_ADVANCE(dst, totalSize, RabbitizerOperandType_process_rsp_vs(self, dst, immOverride, immOverrideLength));\n\n    RABUTILS_BUFFER_SPRINTF(dst, totalSize, \"[%i]\", RAB_INSTR_RSP_GET_index(self));\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_rsp_offset_rs(const RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength) {\n    size_t totalSize = 0;\n\n    RABUTILS_BUFFER_SPRINTF(dst, totalSize, \"0x%X\", RabbitizerInstructionRsp_GetOffsetVector(self));\n\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, '(');\n    RABUTILS_BUFFER_ADVANCE(dst, totalSize, RabbitizerOperandType_process_rsp_rs(self, dst, immOverride, immOverrideLength));\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, ')');\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_rsp_immediate_base(const RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength) {\n    size_t totalSize = 0;\n\n// TODO: consider making this a proper configuration\n#if 0\n    if ((immOverride != NULL) && (immOverrideLength > 0) || RAB_INSTR_GET_immediate(self) != 0) {\n        RABUTILS_BUFFER_ADVANCE(dst, totalSize, RabbitizerOperandType_process_cpu_immediate(self, dst, immOverride, immOverrideLength));\n    }\n#endif\n    RABUTILS_BUFFER_ADVANCE(dst, totalSize, RabbitizerOperandType_process_cpu_immediate(self, dst, immOverride, immOverrideLength));\n\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, '(');\n    RABUTILS_BUFFER_ADVANCE(dst, totalSize, RabbitizerOperandType_process_rsp_rs(self, dst, immOverride, immOverrideLength));\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, ')');\n\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_r5900_I(UNUSED const RabbitizerInstruction *self, char *dst, UNUSED const char *immOverride,\n                                             UNUSED size_t immOverrideLength) {\n    size_t totalSize = 0;\n\n    RABUTILS_BUFFER_CPY(dst, totalSize, \"$I\");\n\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_r5900_Q(UNUSED const RabbitizerInstruction *self, char *dst, UNUSED const char *immOverride,\n                                             UNUSED size_t immOverrideLength) {\n    size_t totalSize = 0;\n\n    RABUTILS_BUFFER_CPY(dst, totalSize, \"$Q\");\n\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_r5900_R(UNUSED const RabbitizerInstruction *self, char *dst, UNUSED const char *immOverride,\n                                             UNUSED size_t immOverrideLength) {\n    size_t totalSize = 0;\n\n    RABUTILS_BUFFER_CPY(dst, totalSize, \"$R\");\n\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_r5900_ACC(UNUSED const RabbitizerInstruction *self, char *dst, UNUSED const char *immOverride,\n                                               UNUSED size_t immOverrideLength) {\n    size_t totalSize = 0;\n\n    RABUTILS_BUFFER_CPY(dst, totalSize, \"$ACC\");\n\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_r5900_ACCxyzw(const RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength) {\n    size_t totalSize = 0;\n\n    RABUTILS_BUFFER_ADVANCE(dst, totalSize, RabbitizerOperandType_process_r5900_ACC(self, dst, immOverride, immOverrideLength));\n\n#if 0\n    if (RAB_INSTR_R5900_GET_xyzw_x(self)) {\n        RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, 'x');\n    }\n    if (RAB_INSTR_R5900_GET_xyzw_y(self)) {\n        RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, 'y');\n    }\n    if (RAB_INSTR_R5900_GET_xyzw_z(self)) {\n        RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, 'z');\n    }\n    if (RAB_INSTR_R5900_GET_xyzw_w(self)) {\n        RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, 'w');\n    }\n#endif\n\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_r5900_vfs(const RabbitizerInstruction *self, char *dst, UNUSED const char *immOverride, UNUSED size_t immOverrideLength) {\n    size_t totalSize = 0;\n    const char *reg = RabbitizerRegister_getNameR5900VF(RAB_INSTR_R5900_GET_vfs(self));\n\n    RABUTILS_BUFFER_CPY(dst, totalSize, reg);\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_r5900_vft(const RabbitizerInstruction *self, char *dst, UNUSED const char *immOverride, UNUSED size_t immOverrideLength) {\n    size_t totalSize = 0;\n    const char *reg = RabbitizerRegister_getNameR5900VF(RAB_INSTR_R5900_GET_vft(self));\n\n    RABUTILS_BUFFER_CPY(dst, totalSize, reg);\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_r5900_vfd(const RabbitizerInstruction *self, char *dst, UNUSED const char *immOverride, UNUSED size_t immOverrideLength) {\n    size_t totalSize = 0;\n    const char *reg = RabbitizerRegister_getNameR5900VF(RAB_INSTR_R5900_GET_vfd(self));\n\n    RABUTILS_BUFFER_CPY(dst, totalSize, reg);\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_r5900_vfsxyzw(const RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength) {\n    size_t totalSize = 0;\n\n    RABUTILS_BUFFER_ADVANCE(dst, totalSize, RabbitizerOperandType_process_r5900_vfs(self, dst, immOverride, immOverrideLength));\n\n#if 0\n    if (RAB_INSTR_R5900_GET_xyzw_x(self)) {\n        RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, 'x');\n    }\n    if (RAB_INSTR_R5900_GET_xyzw_y(self)) {\n        RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, 'y');\n    }\n    if (RAB_INSTR_R5900_GET_xyzw_z(self)) {\n        RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, 'z');\n    }\n    if (RAB_INSTR_R5900_GET_xyzw_w(self)) {\n        RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, 'w');\n    }\n#endif\n\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_r5900_vftxyzw(const RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength) {\n    size_t totalSize = 0;\n\n    RABUTILS_BUFFER_ADVANCE(dst, totalSize, RabbitizerOperandType_process_r5900_vft(self, dst, immOverride, immOverrideLength));\n\n#if 0\n    if (RAB_INSTR_R5900_GET_xyzw_x(self)) {\n        RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, 'x');\n    }\n    if (RAB_INSTR_R5900_GET_xyzw_y(self)) {\n        RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, 'y');\n    }\n    if (RAB_INSTR_R5900_GET_xyzw_z(self)) {\n        RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, 'z');\n    }\n    if (RAB_INSTR_R5900_GET_xyzw_w(self)) {\n        RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, 'w');\n    }\n#endif\n\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_r5900_vfdxyzw(const RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength) {\n    size_t totalSize = 0;\n\n    RABUTILS_BUFFER_ADVANCE(dst, totalSize, RabbitizerOperandType_process_r5900_vfd(self, dst, immOverride, immOverrideLength));\n\n#if 0\n    if (RAB_INSTR_R5900_GET_xyzw_x(self)) {\n        RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, 'x');\n    }\n    if (RAB_INSTR_R5900_GET_xyzw_y(self)) {\n        RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, 'y');\n    }\n    if (RAB_INSTR_R5900_GET_xyzw_z(self)) {\n        RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, 'z');\n    }\n    if (RAB_INSTR_R5900_GET_xyzw_w(self)) {\n        RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, 'w');\n    }\n#endif\n\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_r5900_vfsn(const RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength) {\n    size_t totalSize = 0;\n    uint8_t n;\n\n    RABUTILS_BUFFER_ADVANCE(dst, totalSize, RabbitizerOperandType_process_r5900_vfs(self, dst, immOverride, immOverrideLength));\n\n    n = RAB_INSTR_R5900_GET_n(self);\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, \"xyzw\"[n]);\n\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_r5900_vftn(const RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength) {\n    size_t totalSize = 0;\n    uint8_t n;\n\n    RABUTILS_BUFFER_ADVANCE(dst, totalSize, RabbitizerOperandType_process_r5900_vft(self, dst, immOverride, immOverrideLength));\n\n    n = RAB_INSTR_R5900_GET_n(self);\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, \"xyzw\"[n]);\n\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_r5900_vfdn(const RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength) {\n    size_t totalSize = 0;\n    uint8_t n;\n\n    RABUTILS_BUFFER_ADVANCE(dst, totalSize, RabbitizerOperandType_process_r5900_vfd(self, dst, immOverride, immOverrideLength));\n\n    n = RAB_INSTR_R5900_GET_n(self);\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, \"xyzw\"[n]);\n\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_r5900_vfsl(const RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength) {\n    size_t totalSize = 0;\n    uint8_t n;\n\n    RABUTILS_BUFFER_ADVANCE(dst, totalSize, RabbitizerOperandType_process_r5900_vfs(self, dst, immOverride, immOverrideLength));\n\n    n = RAB_INSTR_R5900_GET_l(self);\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, \"xyzw\"[n]);\n\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_r5900_vftl(const RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength) {\n    size_t totalSize = 0;\n    uint8_t n;\n\n    RABUTILS_BUFFER_ADVANCE(dst, totalSize, RabbitizerOperandType_process_r5900_vft(self, dst, immOverride, immOverrideLength));\n\n    n = RAB_INSTR_R5900_GET_l(self);\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, \"xyzw\"[n]);\n\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_r5900_vfdl(const RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength) {\n    size_t totalSize = 0;\n    uint8_t n;\n\n    RABUTILS_BUFFER_ADVANCE(dst, totalSize, RabbitizerOperandType_process_r5900_vfd(self, dst, immOverride, immOverrideLength));\n\n    n = RAB_INSTR_R5900_GET_l(self);\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, \"xyzw\"[n]);\n\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_r5900_vfsm(const RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength) {\n    size_t totalSize = 0;\n    uint8_t n;\n\n    RABUTILS_BUFFER_ADVANCE(dst, totalSize, RabbitizerOperandType_process_r5900_vfs(self, dst, immOverride, immOverrideLength));\n\n    n = RAB_INSTR_R5900_GET_m(self);\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, \"xyzw\"[n]);\n\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_r5900_vftm(const RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength) {\n    size_t totalSize = 0;\n    uint8_t n;\n\n    RABUTILS_BUFFER_ADVANCE(dst, totalSize, RabbitizerOperandType_process_r5900_vft(self, dst, immOverride, immOverrideLength));\n\n    n = RAB_INSTR_R5900_GET_m(self);\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, \"xyzw\"[n]);\n\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_r5900_vfdm(const RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength) {\n    size_t totalSize = 0;\n    uint8_t n;\n\n    RABUTILS_BUFFER_ADVANCE(dst, totalSize, RabbitizerOperandType_process_r5900_vfd(self, dst, immOverride, immOverrideLength));\n\n    n = RAB_INSTR_R5900_GET_m(self);\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, \"xyzw\"[n]);\n\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_r5900_vis(const RabbitizerInstruction *self, char *dst, UNUSED const char *immOverride, UNUSED size_t immOverrideLength) {\n    size_t totalSize = 0;\n    const char *reg = RabbitizerRegister_getNameR5900VI(RAB_INSTR_R5900_GET_vis(self));\n\n    RABUTILS_BUFFER_CPY(dst, totalSize, reg);\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_r5900_vit(const RabbitizerInstruction *self, char *dst, UNUSED const char *immOverride, UNUSED size_t immOverrideLength) {\n    size_t totalSize = 0;\n    const char *reg = RabbitizerRegister_getNameR5900VI(RAB_INSTR_R5900_GET_vit(self));\n\n    RABUTILS_BUFFER_CPY(dst, totalSize, reg);\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_r5900_vid(const RabbitizerInstruction *self, char *dst, UNUSED const char *immOverride, UNUSED size_t immOverrideLength) {\n    size_t totalSize = 0;\n    const char *reg = RabbitizerRegister_getNameR5900VI(RAB_INSTR_R5900_GET_vid(self));\n\n    RABUTILS_BUFFER_CPY(dst, totalSize, reg);\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_r5900_vis_predecr(const RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength) {\n    size_t totalSize = 0;\n\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, '(');\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, '-');\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, '-');\n\n    RABUTILS_BUFFER_ADVANCE(dst, totalSize, RabbitizerOperandType_process_r5900_vis(self, dst, immOverride, immOverrideLength));\n\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, ')');\n\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_r5900_vit_predecr(const RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength) {\n    size_t totalSize = 0;\n\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, '(');\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, '-');\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, '-');\n\n    RABUTILS_BUFFER_ADVANCE(dst, totalSize, RabbitizerOperandType_process_r5900_vit(self, dst, immOverride, immOverrideLength));\n\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, ')');\n\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_r5900_vid_predecr(const RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength) {\n    size_t totalSize = 0;\n\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, '(');\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, '-');\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, '-');\n\n    RABUTILS_BUFFER_ADVANCE(dst, totalSize, RabbitizerOperandType_process_r5900_vid(self, dst, immOverride, immOverrideLength));\n\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, ')');\n\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_r5900_vis_postincr(const RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength) {\n    size_t totalSize = 0;\n\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, '(');\n\n    RABUTILS_BUFFER_ADVANCE(dst, totalSize, RabbitizerOperandType_process_r5900_vis(self, dst, immOverride, immOverrideLength));\n\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, '+');\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, '+');\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, ')');\n\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_r5900_vit_postincr(const RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength) {\n    size_t totalSize = 0;\n\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, '(');\n\n    RABUTILS_BUFFER_ADVANCE(dst, totalSize, RabbitizerOperandType_process_r5900_vit(self, dst, immOverride, immOverrideLength));\n\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, '+');\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, '+');\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, ')');\n\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_r5900_vid_postincr(const RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength) {\n    size_t totalSize = 0;\n\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, '(');\n\n    RABUTILS_BUFFER_ADVANCE(dst, totalSize, RabbitizerOperandType_process_r5900_vid(self, dst, immOverride, immOverrideLength));\n\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, '+');\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, '+');\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, ')');\n\n    return totalSize;\n}\n\nsize_t RabbitizerOperandType_process_r5900_immediate5(const RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength) {\n    size_t totalSize = 0;\n    int32_t number;\n\n    if ((immOverride != NULL) && (immOverrideLength > 0)) {\n        memcpy(dst, immOverride, immOverrideLength);\n        return immOverrideLength;\n    }\n\n    number = RAB_INSTR_R5900_GET_imm5(self);\n    if (RabbitizerConfig_Cfg.misc.omit0XOnSmallImm) {\n        if (number > -10 && number < 10) {\n            RABUTILS_BUFFER_SPRINTF(dst, totalSize, \"%i\", number);\n            return totalSize;\n        }\n    }\n    if (number < 0) {\n        if (RabbitizerConfig_Cfg.misc.upperCaseImm) {\n            RABUTILS_BUFFER_SPRINTF(dst, totalSize, \"-0x%X\", -number);\n        } else {\n            RABUTILS_BUFFER_SPRINTF(dst, totalSize, \"-0x%x\", -number);\n        }\n    } else {\n        if (RabbitizerConfig_Cfg.misc.upperCaseImm) {\n            RABUTILS_BUFFER_SPRINTF(dst, totalSize, \"0x%X\", number);\n        } else {\n            RABUTILS_BUFFER_SPRINTF(dst, totalSize, \"0x%x\", number);\n        }\n    }\n    return totalSize;\n}\n\n#define RAB_DEF_OPERAND(prefix, operand) [RAB_OPERAND_##prefix##_##operand] = RabbitizerOperandType_process_##prefix##_##operand,\n\nconst OperandCallback instrOpercandCallbacks[] = {\n#include \"instructions/operands/RabbitizerOperandType_cpu.inc\"\n#include \"instructions/operands/RabbitizerOperandType_rsp.inc\"\n#include \"instructions/operands/RabbitizerOperandType_r5900.inc\"\n};\n\n#undef RAB_DEF_OPERAND\n\nsize_t RabbitizerInstruction_getSizeForBufferOperandsDisasm(const RabbitizerInstruction *self, size_t immOverrideLength) {\n    size_t totalSize = 0;\n    char auxBuffer[0x100] = { 0 };\n    char immOverride[0x100] = { 0 };\n\n    for (size_t i = 0; i < ARRAY_COUNT(self->descriptor->operands) && self->descriptor->operands[i] != RAB_OPERAND_ALL_INVALID; i++) {\n        RabbitizerOperandType operand;\n        OperandCallback callback;\n\n        if (i != 0) {\n            totalSize += 2;\n        }\n\n        operand = self->descriptor->operands[i];\n        assert(operand > RAB_OPERAND_ALL_INVALID);\n        assert(operand < RAB_OPERAND_ALL_MAX);\n\n        callback = instrOpercandCallbacks[operand];\n        assert(callback != NULL);\n        totalSize += callback(self, auxBuffer, immOverride, immOverrideLength);\n    }\n\n    return totalSize;\n}\n\nsize_t RabbitizerInstruction_disassembleOperands(const RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength) {\n    size_t totalSize = 0;\n\n    for (size_t i = 0; i < ARRAY_COUNT(self->descriptor->operands) && self->descriptor->operands[i] != RAB_OPERAND_ALL_INVALID; i++) {\n        RabbitizerOperandType operand;\n        OperandCallback callback;\n\n        if (i != 0) {\n            RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, ',');\n            RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, ' ');\n        }\n\n        operand = self->descriptor->operands[i];\n        assert(operand > RAB_OPERAND_ALL_INVALID);\n        assert(operand < RAB_OPERAND_ALL_MAX);\n\n        callback = instrOpercandCallbacks[operand];\n        assert(callback != NULL);\n\n        RABUTILS_BUFFER_ADVANCE(dst, totalSize, callback(self, dst, immOverride, immOverrideLength));\n    }\n\n    *dst = '\\0';\n    return totalSize;\n}\n\nsize_t RabbitizerInstruction_getSizeForBufferInstrDisasm(const RabbitizerInstruction *self, size_t immOverrideLength, int extraLJust) {\n    size_t totalSize = 0;\n    size_t opcodeNameLength;\n\n    opcodeNameLength = strlen(RabbitizerInstrId_getOpcodeName(self->uniqueId));\n\n    totalSize += opcodeNameLength;\n\n    totalSize += RabbitizerInstrSuffix_getSizeForBuffer(self, self->descriptor->instrSuffix);\n\n    if (self->descriptor->operands[0] == RAB_OPERAND_ALL_INVALID) {\n        // There are no operands\n        return totalSize;\n    }\n\n    if (RabbitizerConfig_Cfg.misc.opcodeLJust > 0) {\n        totalSize += RabbitizerConfig_Cfg.misc.opcodeLJust;\n    }\n    if (extraLJust > 0) {\n        totalSize += extraLJust;\n    }\n    totalSize++;\n\n    totalSize += RabbitizerInstruction_getSizeForBufferOperandsDisasm(self, immOverrideLength);\n\n    return totalSize;\n}\n\nsize_t RabbitizerInstruction_disassembleInstruction(const RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength,\n                                                    int extraLJust) {\n    size_t totalSize = 0;\n    const char *opcodeName = RabbitizerInstrId_getOpcodeName(self->uniqueId);\n\n    RABUTILS_BUFFER_CPY(dst, totalSize, opcodeName);\n\n    RABUTILS_BUFFER_ADVANCE(dst, totalSize, RabbitizerInstrSuffix_processSuffix(self, dst, self->descriptor->instrSuffix));\n\n    if (self->descriptor->operands[0] == RAB_OPERAND_ALL_INVALID) {\n        // There are no operands\n        *dst = '\\0';\n        return totalSize;\n    }\n\n    RABUTILS_BUFFER_ADVANCE(dst, totalSize, RabbitizerUtils_CharFill(dst, RabbitizerConfig_Cfg.misc.opcodeLJust + extraLJust - totalSize, ' '));\n    RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, ' ');\n\n    RABUTILS_BUFFER_ADVANCE(dst, totalSize, RabbitizerInstruction_disassembleOperands(self, dst, immOverride, immOverrideLength));\n\n    *dst = '\\0';\n    return totalSize;\n}\n\nsize_t RabbitizerInstruction_getSizeForBufferDataDisasm(UNUSED const RabbitizerInstruction *self, int extraLJust) {\n    size_t totalSize = 0;\n\n    totalSize += strlen(\".word\");\n    totalSize += RabbitizerConfig_Cfg.misc.opcodeLJust + extraLJust;\n    totalSize += 11;\n    return totalSize;\n}\n\nsize_t RabbitizerInstruction_disassembleAsData(const RabbitizerInstruction *self, char *dst, int extraLJust) {\n    size_t totalSize = 0;\n\n    RABUTILS_BUFFER_CPY(dst, totalSize, \".word\");\n\n    RABUTILS_BUFFER_ADVANCE(dst, totalSize, RabbitizerUtils_CharFill(dst, RabbitizerConfig_Cfg.misc.opcodeLJust + extraLJust - totalSize, ' '));\n\n    RABUTILS_BUFFER_SPRINTF(dst, totalSize, \" 0x%08X\", RabbitizerInstruction_getRaw(self));\n    return totalSize;\n}\n\nbool RabbitizerInstruction_mustDisasmAsData(const RabbitizerInstruction *self) {\n    if (RabbitizerConfig_Cfg.toolchainTweaks.sn64DivFix) {\n        if (self->uniqueId == RABBITIZER_INSTR_ID_cpu_break) {\n            return true;\n        }\n    }\n\n    if (!RabbitizerInstruction_isValid(self)) {\n        return true;\n    }\n    return false;\n}\n\nsize_t RabbitizerInstruction_getSizeForBuffer(const RabbitizerInstruction *self, size_t immOverrideLength, int extraLJust) {\n    if (!RabbitizerInstruction_isImplemented(self) || RabbitizerInstruction_mustDisasmAsData(self)) {\n        size_t totalSize = RabbitizerInstruction_getSizeForBufferDataDisasm(self, extraLJust);\n\n        if (RabbitizerConfig_Cfg.misc.unknownInstrComment) {\n            totalSize += 40;\n            totalSize += 3;\n            totalSize += RabbitizerInstruction_getSizeForBufferInstrDisasm(self, immOverrideLength, extraLJust);\n            totalSize += 11;\n        }\n        return totalSize;\n    }\n\n    return RabbitizerInstruction_getSizeForBufferInstrDisasm(self, immOverrideLength, extraLJust);\n}\n\nsize_t RabbitizerInstruction_disassemble(const RabbitizerInstruction *self, char *dst, const char *immOverride, size_t immOverrideLength, int extraLJust) {\n    assert(dst != NULL);\n\n    if (!RabbitizerInstruction_isImplemented(self) || RabbitizerInstruction_mustDisasmAsData(self)) {\n        size_t totalSize = 0;\n\n        RABUTILS_BUFFER_ADVANCE(dst, totalSize, RabbitizerInstruction_disassembleAsData(self, dst, extraLJust));\n\n        if (RabbitizerConfig_Cfg.misc.unknownInstrComment) {\n            uint32_t validBits;\n\n            RABUTILS_BUFFER_ADVANCE(dst, totalSize, RabbitizerUtils_CharFill(dst, 40 - totalSize, ' '));\n\n            RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, ' ');\n            RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, '#');\n            RABUTILS_BUFFER_WRITE_CHAR(dst, totalSize, ' ');\n\n            RABUTILS_BUFFER_ADVANCE(dst, totalSize, RabbitizerInstruction_disassembleInstruction(self, dst, immOverride, immOverrideLength, extraLJust));\n\n            validBits = RabbitizerInstruction_getValidBits(self);\n\n            RABUTILS_BUFFER_SPRINTF(dst, totalSize, \" # %08X\", ((~validBits) & self->word));\n        }\n\n        return totalSize;\n    }\n\n    return RabbitizerInstruction_disassembleInstruction(self, dst, immOverride, immOverrideLength, extraLJust);\n}\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/src/instructions/RabbitizerInstruction/RabbitizerInstruction_Examination.c",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"instructions/RabbitizerInstruction.h\"\n\n#include <assert.h>\n\n#include \"common/RabbitizerConfig.h\"\n#include \"instructions/RabbitizerInstructionRsp.h\"\n#include \"instructions/RabbitizerInstructionR5900.h\"\n#include \"instructions/RabbitizerRegister.h\"\n\nbool RabbitizerInstruction_isImplemented(const RabbitizerInstruction *self) {\n    switch (self->uniqueId) {\n        case RABBITIZER_INSTR_ID_cpu_INVALID:\n        case RABBITIZER_INSTR_ID_rsp_INVALID:\n        case RABBITIZER_INSTR_ID_r5900_INVALID:\n            return false;\n\n        default:\n            return true;\n    }\n}\n\nbool RabbitizerInstruction_isLikelyHandwritten(const RabbitizerInstruction *self) {\n    if (self->_handwrittenCategory) {\n        return true;\n    }\n\n    if (RabbitizerInstrDescriptor_isIType(self->descriptor) && !RabbitizerInstrDescriptor_isFloat(self->descriptor)) {\n        if (RAB_INSTR_GET_rs(self) == RABBITIZER_REG_GPR_O32_k0 || RAB_INSTR_GET_rs(self) == RABBITIZER_REG_GPR_O32_k1) {\n            return true;\n        }\n        if (RAB_INSTR_GET_rt(self) == RABBITIZER_REG_GPR_O32_k0 || RAB_INSTR_GET_rt(self) == RABBITIZER_REG_GPR_O32_k1) {\n            return true;\n        }\n    }\n\n    if (RabbitizerInstrDescriptor_notEmitedByCompilers(self->descriptor)) {\n        return true;\n    }\n\n    return false;\n}\n\nbool RabbitizerInstruction_isNop(const RabbitizerInstruction *self) {\n    return self->word == 0;\n}\n\nbool RabbitizerInstruction_isUnconditionalBranch(const RabbitizerInstruction *self) {\n    if (self->uniqueId == RABBITIZER_INSTR_ID_cpu_b) {\n        return true;\n    }\n    if (self->uniqueId == RABBITIZER_INSTR_ID_cpu_beq && RAB_INSTR_GET_rt(self) == 0 && RAB_INSTR_GET_rs(self) == 0) {\n        return true;\n    }\n    if (RabbitizerConfig_Cfg.toolchainTweaks.treatJAsUnconditionalBranch && self->uniqueId == RABBITIZER_INSTR_ID_cpu_j) {\n        return true;\n    }\n    return false;\n}\n\nbool RabbitizerInstruction_isJrRa(const RabbitizerInstruction *self) {\n    if (self->uniqueId == RABBITIZER_INSTR_ID_cpu_jr) {\n        // TODO: abi stuffs\n        return RAB_INSTR_GET_rs(self) == RABBITIZER_REG_GPR_O32_ra;\n    }\n    return false;\n}\n\nbool RabbitizerInstruction_isJrNotRa(const RabbitizerInstruction *self) {\n    if (self->uniqueId == RABBITIZER_INSTR_ID_cpu_jr) {\n        // TODO: abi stuffs\n        return RAB_INSTR_GET_rs(self) != RABBITIZER_REG_GPR_O32_ra;\n    }\n    return false;\n}\n\nbool RabbitizerInstruction_hasDelaySlot(const RabbitizerInstruction *self) {\n    return RabbitizerInstrDescriptor_isBranch(self->descriptor) || RabbitizerInstrDescriptor_isJump(self->descriptor);\n}\n\nconst char *RabbitizerInstruction_mapInstrToType(const RabbitizerInstruction *self) {\n    if (RabbitizerInstrDescriptor_isDouble(self->descriptor)) {\n        return \"f64\";\n    }\n    if (RabbitizerInstrDescriptor_isFloat(self->descriptor)) {\n        return \"f32\";\n    }\n    if (self->uniqueId == RABBITIZER_INSTR_ID_cpu_lwu) {\n        return \"u32\";\n    }\n    if (self->uniqueId == RABBITIZER_INSTR_ID_cpu_lh || self->uniqueId == RABBITIZER_INSTR_ID_cpu_sh) {\n        return \"s16\";\n    }\n    if (self->uniqueId == RABBITIZER_INSTR_ID_cpu_lhu) {\n        return \"u16\";\n    }\n    if (self->uniqueId == RABBITIZER_INSTR_ID_cpu_lb || self->uniqueId == RABBITIZER_INSTR_ID_cpu_sb) {\n        return \"s8\";\n    }\n    if (self->uniqueId == RABBITIZER_INSTR_ID_cpu_lbu) {\n        return \"u8\";\n    }\n    if (self->uniqueId == RABBITIZER_INSTR_ID_cpu_ld || self->uniqueId == RABBITIZER_INSTR_ID_cpu_sd) {\n        return \"s64\";\n    }\n    return NULL;\n}\n\nbool RabbitizerInstruction_sameOpcode(const RabbitizerInstruction *self, const RabbitizerInstruction *other) {\n    if (!RabbitizerInstruction_isImplemented(self) || !RabbitizerInstruction_isImplemented(other)) {\n        return false;\n    }\n    return self->uniqueId == other->uniqueId;\n}\n\nbool RabbitizerInstruction_sameOpcodeButDifferentArguments(const RabbitizerInstruction *self, const RabbitizerInstruction *other) {\n    if (!RabbitizerInstruction_sameOpcode(self, other)) {\n        return false;\n    }\n    return RabbitizerInstruction_getRaw(self) != RabbitizerInstruction_getRaw(other);\n}\n\nbool RabbitizerInstruction_hasOperand(const RabbitizerInstruction *self, RabbitizerOperandType operand) {\n    size_t i;\n\n    for (i = 0; i < ARRAY_COUNT(self->descriptor->operands) && self->descriptor->operands[i] != RAB_OPERAND_ALL_INVALID; i++) {\n        if (self->descriptor->operands[i] == operand) {\n            return true;\n        }\n    }\n\n    return false;\n}\n\nbool RabbitizerInstruction_hasOperandAlias(const RabbitizerInstruction *self, RabbitizerOperandType operand) {\n    switch (operand) {\n        case RAB_OPERAND_cpu_rs:\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_cpu_immediate_base)) {\n                return true;\n            }\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_rsp_rs)) {\n                return true;\n            }\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_rsp_offset_rs)) {\n                return true;\n            }\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_rsp_immediate_base)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_cpu_immediate:\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_cpu_immediate_base)) {\n                return true;\n            }\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_cpu_branch_target_label)) {\n                return true;\n            }\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_rsp_immediate_base)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_cpu_rt:\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_rsp_rt)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_cpu_rd:\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_rsp_rd)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_cpu_sa:\n        case RAB_OPERAND_cpu_zero:\n        // case RAB_OPERAND_cpu_function:\n        case RAB_OPERAND_cpu_cop0d:\n        case RAB_OPERAND_cpu_fs:\n        case RAB_OPERAND_cpu_ft:\n        case RAB_OPERAND_cpu_fd:\n        case RAB_OPERAND_cpu_cop1cs:\n        case RAB_OPERAND_cpu_cop2t:\n        case RAB_OPERAND_cpu_op:\n        case RAB_OPERAND_cpu_code:\n        case RAB_OPERAND_cpu_code_lower:\n        case RAB_OPERAND_cpu_copraw:\n        case RAB_OPERAND_cpu_label:\n            break;\n\n        case RAB_OPERAND_cpu_branch_target_label:\n            if (RabbitizerInstruction_hasOperandAlias(self, RAB_OPERAND_cpu_immediate)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_cpu_immediate_base:\n            if (RabbitizerInstruction_hasOperandAlias(self, RAB_OPERAND_cpu_rs)) {\n                return true;\n            }\n            if (RabbitizerInstruction_hasOperandAlias(self, RAB_OPERAND_cpu_immediate)) {\n                return true;\n            }\n            break;\n\n        /* rsp */\n        case RAB_OPERAND_rsp_rs:\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_cpu_rs)) {\n                return true;\n            }\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_rsp_offset_rs)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_rsp_rt:\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_cpu_rt)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_rsp_rd:\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_cpu_rd)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_rsp_cop0d:\n        case RAB_OPERAND_rsp_cop2t:\n        case RAB_OPERAND_rsp_cop2cd:\n            break;\n\n            // case RAB_OPERAND_rsp_elementhigh:\n            // case RAB_OPERAND_rsp_elementlow:\n            // case RAB_OPERAND_rsp_index:\n            // case RAB_OPERAND_rsp_offset:\n\n        case RAB_OPERAND_rsp_vs:\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_rsp_vs_index)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_rsp_vt:\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_rsp_vt_elementhigh)) {\n                return true;\n            }\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_rsp_vt_elementlow)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_rsp_vd:\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_rsp_vd_de)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_rsp_vt_elementhigh:\n            if (RabbitizerInstruction_hasOperandAlias(self, RAB_OPERAND_rsp_vt)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_rsp_vt_elementlow:\n            if (RabbitizerInstruction_hasOperandAlias(self, RAB_OPERAND_rsp_vt)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_rsp_vd_de:\n            if (RabbitizerInstruction_hasOperandAlias(self, RAB_OPERAND_rsp_vd)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_rsp_vs_index:\n            if (RabbitizerInstruction_hasOperandAlias(self, RAB_OPERAND_rsp_vs)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_rsp_offset_rs:\n            if (RabbitizerInstruction_hasOperandAlias(self, RAB_OPERAND_rsp_rs)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_rsp_immediate_base:\n            if (RabbitizerInstruction_hasOperandAlias(self, RAB_OPERAND_rsp_rs)) {\n                return true;\n            }\n            if (RabbitizerInstruction_hasOperandAlias(self, RAB_OPERAND_cpu_rs)) {\n                return true;\n            }\n            if (RabbitizerInstruction_hasOperandAlias(self, RAB_OPERAND_cpu_immediate)) {\n                return true;\n            }\n            break;\n            /* rsp */\n\n            /* r5900 */\n        case RAB_OPERAND_r5900_I:\n        case RAB_OPERAND_r5900_Q:\n        case RAB_OPERAND_r5900_R:\n            break;\n\n        case RAB_OPERAND_r5900_ACC:\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_r5900_ACCxyzw)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_r5900_ACCxyzw:\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_r5900_ACC)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_r5900_vfs:\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_r5900_vfsxyzw)) {\n                return true;\n            }\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_r5900_vfsn)) {\n                return true;\n            }\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_r5900_vfsl)) {\n                return true;\n            }\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_r5900_vfsm)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_r5900_vft:\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_r5900_vftxyzw)) {\n                return true;\n            }\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_r5900_vftn)) {\n                return true;\n            }\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_r5900_vftl)) {\n                return true;\n            }\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_r5900_vftm)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_r5900_vfd:\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_r5900_vfdxyzw)) {\n                return true;\n            }\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_r5900_vfdn)) {\n                return true;\n            }\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_r5900_vfdl)) {\n                return true;\n            }\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_r5900_vfdm)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_r5900_vfsxyzw:\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_r5900_vfs)) {\n                return true;\n            }\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_r5900_vfsn)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_r5900_vftxyzw:\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_r5900_vft)) {\n                return true;\n            }\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_r5900_vftn)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_r5900_vfdxyzw:\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_r5900_vfd)) {\n                return true;\n            }\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_r5900_vfdn)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_r5900_vfsn:\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_r5900_vfs)) {\n                return true;\n            }\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_r5900_vfsxyzw)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_r5900_vftn:\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_r5900_vft)) {\n                return true;\n            }\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_r5900_vftxyzw)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_r5900_vfdn:\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_r5900_vfd)) {\n                return true;\n            }\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_r5900_vfdxyzw)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_r5900_vfsl:\n            if (RabbitizerInstruction_hasOperandAlias(self, RAB_OPERAND_r5900_vfs)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_r5900_vftl:\n            if (RabbitizerInstruction_hasOperandAlias(self, RAB_OPERAND_r5900_vft)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_r5900_vfdl:\n            if (RabbitizerInstruction_hasOperandAlias(self, RAB_OPERAND_r5900_vfd)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_r5900_vfsm:\n            if (RabbitizerInstruction_hasOperandAlias(self, RAB_OPERAND_r5900_vfs)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_r5900_vftm:\n            if (RabbitizerInstruction_hasOperandAlias(self, RAB_OPERAND_r5900_vft)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_r5900_vfdm:\n            if (RabbitizerInstruction_hasOperandAlias(self, RAB_OPERAND_r5900_vfd)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_r5900_vis:\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_r5900_vis_predecr)) {\n                return true;\n            }\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_r5900_vis_postincr)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_r5900_vit:\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_r5900_vit_predecr)) {\n                return true;\n            }\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_r5900_vit_postincr)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_r5900_vid:\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_r5900_vid_predecr)) {\n                return true;\n            }\n            if (RabbitizerInstruction_hasOperand(self, RAB_OPERAND_r5900_vid_postincr)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_r5900_vis_predecr:\n            if (RabbitizerInstruction_hasOperandAlias(self, RAB_OPERAND_r5900_vis)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_r5900_vit_predecr:\n            if (RabbitizerInstruction_hasOperandAlias(self, RAB_OPERAND_r5900_vit)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_r5900_vid_predecr:\n            if (RabbitizerInstruction_hasOperandAlias(self, RAB_OPERAND_r5900_vid)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_r5900_vis_postincr:\n            if (RabbitizerInstruction_hasOperandAlias(self, RAB_OPERAND_r5900_vis)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_r5900_vit_postincr:\n            if (RabbitizerInstruction_hasOperandAlias(self, RAB_OPERAND_r5900_vit)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_r5900_vid_postincr:\n            if (RabbitizerInstruction_hasOperandAlias(self, RAB_OPERAND_r5900_vid)) {\n                return true;\n            }\n            break;\n\n        case RAB_OPERAND_r5900_immediate5:\n            break;\n            /* r5900 */\n\n        case RAB_OPERAND_ALL_INVALID:\n        case RAB_OPERAND_ALL_MAX:\n            assert(operand != RAB_OPERAND_ALL_INVALID && operand != RAB_OPERAND_ALL_MAX);\n            break;\n    }\n\n    return RabbitizerInstruction_hasOperand(self, operand);\n}\n\nuint32_t RabbitizerInstruction_getValidBits(const RabbitizerInstruction *self) {\n    size_t i;\n    uint32_t validbits;\n\n    validbits = self->_mandatorybits;\n\n    for (i = 0; i < ARRAY_COUNT(self->descriptor->operands) && self->descriptor->operands[i] != RAB_OPERAND_ALL_INVALID; i++) {\n\n        switch (self->descriptor->operands[i]) {\n            case RAB_OPERAND_cpu_rs:\n                validbits = RAB_INSTR_PACK_rs(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_cpu_rt:\n                validbits = RAB_INSTR_PACK_rt(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_cpu_rd:\n                validbits = RAB_INSTR_PACK_rd(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_cpu_sa:\n                validbits = RAB_INSTR_PACK_sa(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_cpu_zero:\n                break;\n\n            case RAB_OPERAND_cpu_cop0d:\n                validbits = RAB_INSTR_PACK_cop0d(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_cpu_fs:\n                validbits = RAB_INSTR_PACK_fs(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_cpu_ft:\n                validbits = RAB_INSTR_PACK_ft(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_cpu_fd:\n                validbits = RAB_INSTR_PACK_fd(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_cpu_cop1cs:\n                validbits = RAB_INSTR_PACK_cop1cs(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_cpu_cop2t:\n                validbits = RAB_INSTR_PACK_cop2t(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_cpu_op:\n                validbits = RAB_INSTR_PACK_op(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_cpu_code:\n                validbits = RAB_INSTR_PACK_code(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_cpu_code_lower:\n                validbits = RAB_INSTR_PACK_code_lower(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_cpu_copraw:\n                validbits = RAB_INSTR_PACK_copraw(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_cpu_label:\n                validbits = RAB_INSTR_PACK_instr_index(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_cpu_immediate:\n                validbits = RAB_INSTR_PACK_immediate(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_cpu_branch_target_label:\n                validbits = RAB_INSTR_PACK_immediate(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_cpu_immediate_base:\n                validbits = RAB_INSTR_PACK_immediate(validbits, ~0);\n                validbits = RAB_INSTR_PACK_rs(validbits, ~0);\n                break;\n\n            /* rsp */\n            case RAB_OPERAND_rsp_rs:\n                validbits = RAB_INSTR_PACK_rs(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_rsp_rt:\n                validbits = RAB_INSTR_PACK_rt(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_rsp_rd:\n                validbits = RAB_INSTR_PACK_rd(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_rsp_cop0d:\n                validbits = RAB_INSTR_PACK_cop0d(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_rsp_cop2t:\n                validbits = RAB_INSTR_RSP_PACK_cop2t(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_rsp_cop2cd:\n                validbits = RAB_INSTR_RSP_PACK_cop2cd(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_rsp_vs:\n                validbits = RAB_INSTR_RSP_PACK_vs(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_rsp_vt:\n                validbits = RAB_INSTR_RSP_PACK_vt(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_rsp_vd:\n                validbits = RAB_INSTR_RSP_PACK_vd(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_rsp_vt_elementhigh:\n                validbits = RAB_INSTR_RSP_PACK_vt(validbits, ~0);\n                validbits = RAB_INSTR_RSP_PACK_elementhigh(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_rsp_vt_elementlow:\n                validbits = RAB_INSTR_RSP_PACK_vt(validbits, ~0);\n                validbits = RAB_INSTR_RSP_PACK_elementlow(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_rsp_vd_de:\n                validbits = RAB_INSTR_RSP_PACK_vd(validbits, ~0);\n                validbits = RAB_INSTR_RSP_PACK_de(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_rsp_vs_index:\n                validbits = RAB_INSTR_RSP_PACK_vs(validbits, ~0);\n                validbits = RAB_INSTR_RSP_PACK_index(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_rsp_offset_rs:\n                validbits = RAB_INSTR_RSP_PACK_offset(validbits, ~0);\n                validbits = RAB_INSTR_PACK_rs(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_rsp_immediate_base:\n                validbits = RAB_INSTR_PACK_immediate(validbits, ~0);\n                validbits = RAB_INSTR_PACK_rs(validbits, ~0);\n                break;\n            /* rsp */\n\n            /* r5900 */\n            case RAB_OPERAND_r5900_I:\n            case RAB_OPERAND_r5900_Q:\n            case RAB_OPERAND_r5900_R:\n            case RAB_OPERAND_r5900_ACC:\n                // Not real registers encoded on the instruction itself\n                break;\n\n            case RAB_OPERAND_r5900_ACCxyzw:\n                validbits = RAB_INSTR_R5900_PACK_xyzw_x(validbits, ~0);\n                validbits = RAB_INSTR_R5900_PACK_xyzw_y(validbits, ~0);\n                validbits = RAB_INSTR_R5900_PACK_xyzw_z(validbits, ~0);\n                validbits = RAB_INSTR_R5900_PACK_xyzw_w(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_r5900_vfs:\n                validbits = RAB_INSTR_R5900_PACK_vfs(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_r5900_vft:\n                validbits = RAB_INSTR_R5900_PACK_vft(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_r5900_vfd:\n                validbits = RAB_INSTR_R5900_PACK_vfd(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_r5900_vfsxyzw:\n                validbits = RAB_INSTR_R5900_PACK_vfs(validbits, ~0);\n                validbits = RAB_INSTR_R5900_PACK_xyzw_x(validbits, ~0);\n                validbits = RAB_INSTR_R5900_PACK_xyzw_y(validbits, ~0);\n                validbits = RAB_INSTR_R5900_PACK_xyzw_z(validbits, ~0);\n                validbits = RAB_INSTR_R5900_PACK_xyzw_w(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_r5900_vftxyzw:\n                validbits = RAB_INSTR_R5900_PACK_vft(validbits, ~0);\n                validbits = RAB_INSTR_R5900_PACK_xyzw_x(validbits, ~0);\n                validbits = RAB_INSTR_R5900_PACK_xyzw_y(validbits, ~0);\n                validbits = RAB_INSTR_R5900_PACK_xyzw_z(validbits, ~0);\n                validbits = RAB_INSTR_R5900_PACK_xyzw_w(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_r5900_vfdxyzw:\n                validbits = RAB_INSTR_R5900_PACK_vfd(validbits, ~0);\n                validbits = RAB_INSTR_R5900_PACK_xyzw_x(validbits, ~0);\n                validbits = RAB_INSTR_R5900_PACK_xyzw_y(validbits, ~0);\n                validbits = RAB_INSTR_R5900_PACK_xyzw_z(validbits, ~0);\n                validbits = RAB_INSTR_R5900_PACK_xyzw_w(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_r5900_vfsn:\n                validbits = RAB_INSTR_R5900_PACK_vfs(validbits, ~0);\n                validbits = RAB_INSTR_R5900_PACK_n(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_r5900_vftn:\n                validbits = RAB_INSTR_R5900_PACK_vft(validbits, ~0);\n                validbits = RAB_INSTR_R5900_PACK_n(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_r5900_vfdn:\n                validbits = RAB_INSTR_R5900_PACK_vfd(validbits, ~0);\n                validbits = RAB_INSTR_R5900_PACK_n(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_r5900_vfsl:\n                validbits = RAB_INSTR_R5900_PACK_vfs(validbits, ~0);\n                validbits = RAB_INSTR_R5900_PACK_l(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_r5900_vftl:\n                validbits = RAB_INSTR_R5900_PACK_vft(validbits, ~0);\n                validbits = RAB_INSTR_R5900_PACK_l(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_r5900_vfdl:\n                validbits = RAB_INSTR_R5900_PACK_vfd(validbits, ~0);\n                validbits = RAB_INSTR_R5900_PACK_l(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_r5900_vfsm:\n                validbits = RAB_INSTR_R5900_PACK_vfs(validbits, ~0);\n                validbits = RAB_INSTR_R5900_PACK_m(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_r5900_vftm:\n                validbits = RAB_INSTR_R5900_PACK_vft(validbits, ~0);\n                validbits = RAB_INSTR_R5900_PACK_m(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_r5900_vfdm:\n                validbits = RAB_INSTR_R5900_PACK_vfd(validbits, ~0);\n                validbits = RAB_INSTR_R5900_PACK_m(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_r5900_vis:\n                validbits = RAB_INSTR_R5900_PACK_vis(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_r5900_vit:\n                validbits = RAB_INSTR_R5900_PACK_vit(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_r5900_vid:\n                validbits = RAB_INSTR_R5900_PACK_vid(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_r5900_vis_predecr:\n                validbits = RAB_INSTR_R5900_PACK_vis(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_r5900_vit_predecr:\n                validbits = RAB_INSTR_R5900_PACK_vit(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_r5900_vid_predecr:\n                validbits = RAB_INSTR_R5900_PACK_vid(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_r5900_vis_postincr:\n                validbits = RAB_INSTR_R5900_PACK_vis(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_r5900_vit_postincr:\n                validbits = RAB_INSTR_R5900_PACK_vit(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_r5900_vid_postincr:\n                validbits = RAB_INSTR_R5900_PACK_vid(validbits, ~0);\n                break;\n\n            case RAB_OPERAND_r5900_immediate5:\n                validbits = RAB_INSTR_R5900_PACK_imm5(validbits, ~0);\n                break;\n                /* r5900 */\n\n            case RAB_OPERAND_ALL_INVALID:\n            case RAB_OPERAND_ALL_MAX:\n                assert(self->descriptor->operands[i] != RAB_OPERAND_ALL_INVALID && self->descriptor->operands[i] != RAB_OPERAND_ALL_MAX);\n                break;\n        }\n    }\n\n    return validbits;\n}\n\nbool RabbitizerInstruction_isValid(const RabbitizerInstruction *self) {\n    uint32_t validbits;\n\n    validbits = RabbitizerInstruction_getValidBits(self);\n\n    return ((~validbits) & self->word) == 0;\n}\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/src/instructions/RabbitizerInstruction/RabbitizerInstruction_ProcessUniqueId.c",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"instructions/RabbitizerInstruction.h\"\n\n#include \"common/RabbitizerConfig.h\"\n#include \"instructions/RabbitizerRegister.h\"\n\n#define RABBITIZER_DEF_INSTR_ID(prefix, caseBits, name, ...)    \\\n    case (caseBits):                                            \\\n        self->uniqueId = RABBITIZER_INSTR_ID_##prefix##_##name; \\\n        break;\n#define RABBITIZER_DEF_INSTR_ID_ALTNAME(prefix, caseBits, name, altname, ...) RABBITIZER_DEF_INSTR_ID(prefix, caseBits, name, __VA_ARGS__)\n\nvoid RabbitizerInstruction_processUniqueId_Normal(RabbitizerInstruction *self) {\n    uint32_t opcode = RAB_INSTR_GET_opcode(self);\n\n    self->_mandatorybits = RAB_INSTR_PACK_opcode(self->_mandatorybits, opcode);\n\n    switch (opcode) {\n#include \"instructions/instr_id/cpu/cpu_normal.inc\"\n    }\n\n    if (RabbitizerConfig_Cfg.pseudos.enablePseudos) {\n        switch (self->uniqueId) {\n            case RABBITIZER_INSTR_ID_cpu_beq:\n                if (RAB_INSTR_GET_rt(self) == 0) {\n                    if (RAB_INSTR_GET_rs(self) == 0) {\n                        if (RabbitizerConfig_Cfg.pseudos.pseudoB) {\n                            self->uniqueId = RABBITIZER_INSTR_ID_cpu_b;\n                        }\n                    } else {\n                        if (RabbitizerConfig_Cfg.pseudos.pseudoBeqz) {\n                            self->uniqueId = RABBITIZER_INSTR_ID_cpu_beqz;\n                        }\n                    }\n                }\n                break;\n\n            case RABBITIZER_INSTR_ID_cpu_bne:\n                if (RAB_INSTR_GET_rt(self) == 0) {\n                    if (RabbitizerConfig_Cfg.pseudos.pseudoBnez) {\n                        self->uniqueId = RABBITIZER_INSTR_ID_cpu_bnez;\n                    }\n                }\n                break;\n\n            default:\n                break;\n        }\n    }\n\n    self->descriptor = &RabbitizerInstrDescriptor_Descriptors[self->uniqueId];\n}\n\nvoid RabbitizerInstruction_processUniqueId_Special(RabbitizerInstruction *self) {\n    uint32_t function = RAB_INSTR_GET_function(self);\n\n    self->_mandatorybits = RAB_INSTR_PACK_function(self->_mandatorybits, function);\n\n    switch (function) {\n#include \"instructions/instr_id/cpu/cpu_special.inc\"\n    }\n\n    if (RabbitizerInstruction_isNop(self)) {\n        // NOP is special enough\n        self->uniqueId = RABBITIZER_INSTR_ID_cpu_nop;\n    } else if (RabbitizerConfig_Cfg.pseudos.enablePseudos) {\n        switch (self->uniqueId) {\n            case RABBITIZER_INSTR_ID_cpu_or:\n                if (RAB_INSTR_GET_rt(self) == 0) {\n                    if (RabbitizerConfig_Cfg.pseudos.pseudoMove) {\n                        self->uniqueId = RABBITIZER_INSTR_ID_cpu_move;\n                    }\n                }\n                break;\n\n            case RABBITIZER_INSTR_ID_cpu_nor:\n                if (RAB_INSTR_GET_rt(self) == 0) {\n                    if (RabbitizerConfig_Cfg.pseudos.pseudoNot) {\n                        self->uniqueId = RABBITIZER_INSTR_ID_cpu_not;\n                    }\n                }\n                break;\n\n            case RABBITIZER_INSTR_ID_cpu_subu:\n                if (RAB_INSTR_GET_rs(self) == 0) {\n                    if (RabbitizerConfig_Cfg.pseudos.pseudoNegu) {\n                        self->uniqueId = RABBITIZER_INSTR_ID_cpu_negu;\n                    }\n                }\n                break;\n\n            default:\n                break;\n        }\n    }\n\n    self->descriptor = &RabbitizerInstrDescriptor_Descriptors[self->uniqueId];\n\n    switch (self->uniqueId) {\n        case RABBITIZER_INSTR_ID_cpu_jalr:\n            self->_mandatorybits = RAB_INSTR_PACK_rd(self->_mandatorybits, RAB_INSTR_GET_rd(self));\n\n            if (RabbitizerConfig_Cfg.regNames.gprAbiNames == RABBITIZER_ABI_NUMERIC || RabbitizerConfig_Cfg.regNames.gprAbiNames == RABBITIZER_ABI_O32) {\n                if (RAB_INSTR_GET_rd(self) != RABBITIZER_REG_GPR_O32_ra) {\n                    self->descriptor = &RabbitizerInstrDescriptor_Descriptors[RABBITIZER_INSTR_ID_cpu_jalr_rd];\n                }\n            } else {\n                if (RAB_INSTR_GET_rd(self) != RABBITIZER_REG_GPR_N32_ra) {\n                    self->descriptor = &RabbitizerInstrDescriptor_Descriptors[RABBITIZER_INSTR_ID_cpu_jalr_rd];\n                }\n            }\n            break;\n\n        case RABBITIZER_INSTR_ID_cpu_div:\n            if (RabbitizerConfig_Cfg.toolchainTweaks.sn64DivFix && !self->inHandwrittenFunction) {\n                self->descriptor = &RabbitizerInstrDescriptor_Descriptors[RABBITIZER_INSTR_ID_cpu_sn64_div];\n            }\n            break;\n\n        case RABBITIZER_INSTR_ID_cpu_divu:\n            if (RabbitizerConfig_Cfg.toolchainTweaks.sn64DivFix && !self->inHandwrittenFunction) {\n                self->descriptor = &RabbitizerInstrDescriptor_Descriptors[RABBITIZER_INSTR_ID_cpu_sn64_divu];\n            }\n            break;\n\n        default:\n            break;\n    }\n}\n\nvoid RabbitizerInstruction_processUniqueId_Regimm(RabbitizerInstruction *self) {\n    uint32_t rt = RAB_INSTR_GET_rt(self);\n\n    self->_mandatorybits = RAB_INSTR_PACK_rt(self->_mandatorybits, rt);\n\n    switch (rt) {\n#include \"instructions/instr_id/cpu/cpu_regimm.inc\"\n    }\n\n    if (RabbitizerConfig_Cfg.pseudos.enablePseudos) {\n        switch (self->uniqueId) {\n            case RABBITIZER_INSTR_ID_cpu_bgezal:\n                if (RAB_INSTR_GET_rs(self) == 0) {\n                    if (RabbitizerConfig_Cfg.pseudos.pseudoBal) {\n                        self->uniqueId = RABBITIZER_INSTR_ID_cpu_bal;\n                    }\n                }\n                break;\n\n            default:\n                break;\n        }\n    }\n\n    self->descriptor = &RabbitizerInstrDescriptor_Descriptors[self->uniqueId];\n}\n\nvoid RabbitizerInstruction_processUniqueId_Coprocessor0_BC0(RabbitizerInstruction *self) {\n    uint32_t fmt = RAB_INSTR_GET_bc_fmt(self);\n\n    self->_mandatorybits = RAB_INSTR_PACK_bc_fmt(self->_mandatorybits, fmt);\n\n    switch (fmt) {\n#include \"instructions/instr_id/cpu/cpu_cop0_bc0.inc\"\n    }\n}\n\nvoid RabbitizerInstruction_processUniqueId_Coprocessor0_Tlb(RabbitizerInstruction *self) {\n    uint32_t function = RAB_INSTR_GET_function(self);\n\n    self->_mandatorybits = RAB_INSTR_PACK_function(self->_mandatorybits, function);\n\n    switch (function) {\n#include \"instructions/instr_id/cpu/cpu_cop0_tlb.inc\"\n    }\n}\n\nvoid RabbitizerInstruction_processUniqueId_Coprocessor0(RabbitizerInstruction *self) {\n    uint32_t fmt = RAB_INSTR_GET_fmt(self);\n\n    self->_mandatorybits = RAB_INSTR_PACK_fmt(self->_mandatorybits, fmt);\n    self->_handwrittenCategory = true;\n\n    switch (fmt) {\n#include \"instructions/instr_id/cpu/cpu_cop0.inc\"\n\n        case 0x08:\n            RabbitizerInstruction_processUniqueId_Coprocessor0_BC0(self);\n            break;\n\n        case 0x10:\n            RabbitizerInstruction_processUniqueId_Coprocessor0_Tlb(self);\n            break;\n    }\n\n    self->descriptor = &RabbitizerInstrDescriptor_Descriptors[self->uniqueId];\n}\n\nvoid RabbitizerInstruction_processUniqueId_Coprocessor1_BC1(RabbitizerInstruction *self) {\n    uint32_t fmt = RAB_INSTR_GET_bc_fmt(self);\n\n    self->_mandatorybits = RAB_INSTR_PACK_bc_fmt(self->_mandatorybits, fmt);\n\n    switch (fmt) {\n#include \"instructions/instr_id/cpu/cpu_cop1_bc1.inc\"\n    }\n}\n\nvoid RabbitizerInstruction_processUniqueId_Coprocessor1_FpuS(RabbitizerInstruction *self) {\n    uint32_t function = RAB_INSTR_GET_function(self);\n\n    self->_mandatorybits = RAB_INSTR_PACK_function(self->_mandatorybits, function);\n\n    switch (function) {\n#include \"instructions/instr_id/cpu/cpu_cop1_fpu_s.inc\"\n    }\n}\n\nvoid RabbitizerInstruction_processUniqueId_Coprocessor1_FpuD(RabbitizerInstruction *self) {\n    uint32_t function = RAB_INSTR_GET_function(self);\n\n    self->_mandatorybits = RAB_INSTR_PACK_function(self->_mandatorybits, function);\n\n    switch (function) {\n#include \"instructions/instr_id/cpu/cpu_cop1_fpu_d.inc\"\n    }\n}\n\nvoid RabbitizerInstruction_processUniqueId_Coprocessor1_FpuW(RabbitizerInstruction *self) {\n    uint32_t function = RAB_INSTR_GET_function(self);\n\n    self->_mandatorybits = RAB_INSTR_PACK_function(self->_mandatorybits, function);\n\n    switch (function) {\n#include \"instructions/instr_id/cpu/cpu_cop1_fpu_w.inc\"\n    }\n}\n\nvoid RabbitizerInstruction_processUniqueId_Coprocessor1_FpuL(RabbitizerInstruction *self) {\n    uint32_t function = RAB_INSTR_GET_function(self);\n\n    self->_mandatorybits = RAB_INSTR_PACK_function(self->_mandatorybits, function);\n\n    switch (function) {\n#include \"instructions/instr_id/cpu/cpu_cop1_fpu_l.inc\"\n    }\n}\n\nvoid RabbitizerInstruction_processUniqueId_Coprocessor1(RabbitizerInstruction *self) {\n    uint8_t fmt = RAB_INSTR_GET_fmt(self);\n\n    self->_mandatorybits = RAB_INSTR_PACK_fmt(self->_mandatorybits, fmt);\n\n    switch (fmt) {\n#include \"instructions/instr_id/cpu/cpu_cop1.inc\"\n\n        case 0x08: // fmt = BC\n            RabbitizerInstruction_processUniqueId_Coprocessor1_BC1(self);\n            break;\n\n        case 0x10:\n            RabbitizerInstruction_processUniqueId_Coprocessor1_FpuS(self);\n            break;\n\n        case 0x11:\n            RabbitizerInstruction_processUniqueId_Coprocessor1_FpuD(self);\n            break;\n\n        case 0x14:\n            RabbitizerInstruction_processUniqueId_Coprocessor1_FpuW(self);\n            break;\n\n        case 0x15:\n            RabbitizerInstruction_processUniqueId_Coprocessor1_FpuL(self);\n            break;\n    }\n\n    self->descriptor = &RabbitizerInstrDescriptor_Descriptors[self->uniqueId];\n}\n\nvoid RabbitizerInstruction_processUniqueId_Coprocessor2(RabbitizerInstruction *self) {\n    self->_handwrittenCategory = true;\n\n    self->descriptor = &RabbitizerInstrDescriptor_Descriptors[self->uniqueId];\n}\n\n#undef RABBITIZER_DEF_INSTR_ID\n#undef RABBITIZER_DEF_INSTR_ID_ALTNAME\n\nvoid RabbitizerInstruction_processUniqueId(RabbitizerInstruction *self) {\n    uint32_t opcode = RAB_INSTR_GET_opcode(self);\n\n    self->_mandatorybits = RAB_INSTR_PACK_opcode(self->_mandatorybits, opcode);\n\n    self->uniqueId = RABBITIZER_INSTR_ID_cpu_INVALID;\n\n    switch (opcode) {\n        default:\n            RabbitizerInstruction_processUniqueId_Normal(self);\n            break;\n        case 0x00:\n            RabbitizerInstruction_processUniqueId_Special(self);\n            break;\n        case 0x01:\n            RabbitizerInstruction_processUniqueId_Regimm(self);\n            break;\n        case 0x10:\n            RabbitizerInstruction_processUniqueId_Coprocessor0(self);\n            break;\n        case 0x11:\n            RabbitizerInstruction_processUniqueId_Coprocessor1(self);\n            break;\n        case 0x12:\n            RabbitizerInstruction_processUniqueId_Coprocessor2(self);\n            break;\n    }\n}\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/src/instructions/RabbitizerInstructionR5900/RabbitizerInstructionR5900.c",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"instructions/RabbitizerInstructionR5900.h\"\n\nvoid RabbitizerInstructionR5900_init(RabbitizerInstruction *self, uint32_t word, uint32_t vram) {\n    RabbitizerInstruction_init(self, word, vram);\n\n    self->uniqueId = RABBITIZER_INSTR_ID_r5900_INVALID;\n    self->descriptor = &RabbitizerInstrDescriptor_Descriptors[self->uniqueId];\n\n    self->category = RABBITIZER_INSTRCAT_R5900;\n}\n\nvoid RabbitizerInstructionR5900_destroy(RabbitizerInstruction *self) {\n    RabbitizerInstruction_destroy(self);\n}\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/src/instructions/RabbitizerInstructionR5900/RabbitizerInstructionR5900_ProcessUniqueId.c",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"instructions/RabbitizerInstructionR5900.h\"\n\n#define RABBITIZER_DEF_INSTR_ID(prefix, caseBits, name, ...)    \\\n    case (caseBits):                                            \\\n        self->uniqueId = RABBITIZER_INSTR_ID_##prefix##_##name; \\\n        break;\n#define RABBITIZER_DEF_INSTR_ID_ALTNAME(prefix, caseBits, name, altname, ...) RABBITIZER_DEF_INSTR_ID(prefix, caseBits, name, __VA_ARGS__)\n\nvoid RabbitizerInstructionR5900_processUniqueId_Normal(RabbitizerInstruction *self) {\n    uint32_t opcode = RAB_INSTR_GET_opcode(self);\n    bool fetchDescriptor = true;\n\n    self->_mandatorybits = RAB_INSTR_PACK_opcode(self->_mandatorybits, opcode);\n\n    switch (opcode) {\n#include \"instructions/instr_id/r5900/r5900_normal.inc\"\n\n        default:\n            RabbitizerInstruction_processUniqueId_Normal(self);\n            fetchDescriptor = false;\n            break;\n    }\n\n    if (fetchDescriptor) {\n        self->descriptor = &RabbitizerInstrDescriptor_Descriptors[self->uniqueId];\n    }\n}\n\nvoid RabbitizerInstructionR5900_processUniqueId_Special(RabbitizerInstruction *self) {\n    uint32_t function = RAB_INSTR_GET_function(self);\n    bool fetchDescriptor = true;\n    uint32_t stype;\n\n    self->_mandatorybits = RAB_INSTR_PACK_function(self->_mandatorybits, function);\n\n    switch (function) {\n#include \"instructions/instr_id/r5900/r5900_special.inc\"\n\n        default:\n            RabbitizerInstruction_processUniqueId_Special(self);\n            fetchDescriptor = false;\n            break;\n    }\n\n    switch (self->uniqueId) {\n        case RABBITIZER_INSTR_ID_cpu_sync:\n            stype = RAB_INSTR_GET_stype(self);\n            self->_mandatorybits = RAB_INSTR_PACK_stype(self->_mandatorybits, stype);\n            if ((stype & 0x10) == 0x10) {\n                self->uniqueId = RABBITIZER_INSTR_ID_r5900_sync_p;\n                fetchDescriptor = true;\n            }\n            break;\n\n        default:\n            break;\n    }\n\n    if (fetchDescriptor) {\n        self->descriptor = &RabbitizerInstrDescriptor_Descriptors[self->uniqueId];\n    }\n}\n\nvoid RabbitizerInstructionR5900_processUniqueId_Regimm(RabbitizerInstruction *self) {\n    uint32_t rt = RAB_INSTR_GET_rt(self);\n    bool fetchDescriptor = true;\n\n    self->_mandatorybits = RAB_INSTR_PACK_rt(self->_mandatorybits, rt);\n\n    switch (rt) {\n#include \"instructions/instr_id/r5900/r5900_regimm.inc\"\n\n        default:\n            RabbitizerInstruction_processUniqueId_Regimm(self);\n            fetchDescriptor = false;\n            break;\n    }\n\n    if (fetchDescriptor) {\n        self->descriptor = &RabbitizerInstrDescriptor_Descriptors[self->uniqueId];\n    }\n}\n\nvoid RabbitizerInstructionR5900_processUniqueId_Coprocessor0_Tlb(RabbitizerInstruction *self) {\n    uint32_t function = RAB_INSTR_GET_function(self);\n\n    self->_mandatorybits = RAB_INSTR_PACK_function(self->_mandatorybits, function);\n\n    switch (function) {\n#include \"instructions/instr_id/r5900/r5900_cop0_tlb.inc\"\n\n        default:\n            RabbitizerInstruction_processUniqueId_Coprocessor0_Tlb(self);\n            break;\n    }\n}\n\nvoid RabbitizerInstructionR5900_processUniqueId_Coprocessor0(RabbitizerInstruction *self) {\n    uint32_t fmt = RAB_INSTR_GET_fmt(self);\n\n    self->_mandatorybits = RAB_INSTR_PACK_fmt(self->_mandatorybits, fmt);\n    self->_handwrittenCategory = true;\n\n    switch (fmt) {\n#include \"instructions/instr_id/cpu/cpu_cop0.inc\"\n\n        case 0x08:\n            RabbitizerInstruction_processUniqueId_Coprocessor0_BC0(self);\n            break;\n\n        case 0x10:\n            RabbitizerInstructionR5900_processUniqueId_Coprocessor0_Tlb(self);\n            break;\n    }\n\n    self->descriptor = &RabbitizerInstrDescriptor_Descriptors[self->uniqueId];\n}\n\nvoid RabbitizerInstructionR5900_processUniqueId_Coprocessor1_FpuS(RabbitizerInstruction *self) {\n    uint32_t function = RAB_INSTR_GET_function(self);\n\n    self->_mandatorybits = RAB_INSTR_PACK_function(self->_mandatorybits, function);\n\n    switch (function) {\n#include \"instructions/instr_id/r5900/r5900_cop1_fpu_s.inc\"\n\n        default:\n            RabbitizerInstruction_processUniqueId_Coprocessor1_FpuS(self);\n            break;\n    }\n}\n\nvoid RabbitizerInstructionR5900_processUniqueId_Coprocessor1(RabbitizerInstruction *self) {\n    uint8_t fmt = RAB_INSTR_GET_fmt(self);\n\n    self->_mandatorybits = RAB_INSTR_PACK_fmt(self->_mandatorybits, fmt);\n\n    switch (fmt) {\n#include \"instructions/instr_id/cpu/cpu_cop1.inc\"\n\n        case 0x08: // fmt = BC\n            RabbitizerInstruction_processUniqueId_Coprocessor1_BC1(self);\n            break;\n\n        case 0x10:\n            RabbitizerInstructionR5900_processUniqueId_Coprocessor1_FpuS(self);\n            break;\n\n        case 0x14:\n            RabbitizerInstruction_processUniqueId_Coprocessor1_FpuW(self);\n            break;\n    }\n\n    self->descriptor = &RabbitizerInstrDescriptor_Descriptors[self->uniqueId];\n}\n\nvoid RabbitizerInstruction_processUniqueId_Coprocessor2_BC2(RabbitizerInstruction *self) {\n    uint32_t fmt = RAB_INSTR_GET_bc_fmt(self);\n\n    self->_mandatorybits = RAB_INSTR_PACK_bc_fmt(self->_mandatorybits, fmt);\n\n    switch (fmt) {\n#include \"instructions/instr_id/r5900/r5900_cop2_bc2.inc\"\n    }\n}\n\nvoid RabbitizerInstructionR5900_processUniqueId_Coprocessor2_Special2(UNUSED RabbitizerInstruction *self) {\n    uint32_t fhiflo = RAB_INSTR_R5900_GET_fhi_flo(self);\n\n    self->_mandatorybits = RAB_INSTR_R5900_PACK_fhi_flo(self->_mandatorybits, fhiflo);\n\n    switch (fhiflo) {\n#include \"instructions/instr_id/r5900/r5900_cop2_special2.inc\"\n    }\n}\n\nvoid RabbitizerInstructionR5900_processUniqueId_Coprocessor2_Special1(RabbitizerInstruction *self) {\n    uint32_t function = RAB_INSTR_GET_function(self);\n\n    self->_mandatorybits = RAB_INSTR_PACK_function(self->_mandatorybits, function);\n\n    switch (function) {\n#include \"instructions/instr_id/r5900/r5900_cop2_special1.inc\"\n\n        case 0x3C:\n        case 0x3D:\n        case 0x3E:\n        case 0x3F:\n            RabbitizerInstructionR5900_processUniqueId_Coprocessor2_Special2(self);\n            break;\n    }\n}\n\nvoid RabbitizerInstructionR5900_processUniqueId_Coprocessor2(RabbitizerInstruction *self) {\n    uint8_t fmt = RAB_INSTR_GET_fmt(self);\n\n    self->_mandatorybits = RAB_INSTR_PACK_fmt(self->_mandatorybits, fmt);\n\n    switch (fmt) {\n#include \"instructions/instr_id/r5900/r5900_cop2.inc\"\n\n        case 0x08:\n            RabbitizerInstruction_processUniqueId_Coprocessor2_BC2(self);\n            break;\n\n        case 0x10:\n        case 0x11:\n        case 0x12:\n        case 0x13:\n        case 0x14:\n        case 0x15:\n        case 0x16:\n        case 0x17:\n        case 0x18:\n        case 0x19:\n        case 0x1A:\n        case 0x1B:\n        case 0x1C:\n        case 0x1D:\n        case 0x1E:\n        case 0x1F:\n            RabbitizerInstructionR5900_processUniqueId_Coprocessor2_Special1(self);\n            break;\n    }\n\n    self->descriptor = &RabbitizerInstrDescriptor_Descriptors[self->uniqueId];\n}\n\nvoid RabbitizerInstructionR5900_processUniqueId_MMI_0(RabbitizerInstruction *self) {\n    uint32_t function = RAB_INSTR_R5900_GET_mmi_function(self);\n\n    self->_mandatorybits = RAB_INSTR_R5900_PACK_mmi_function(self->_mandatorybits, function);\n\n    switch (function) {\n#include \"instructions/instr_id/r5900/r5900_mmi_0.inc\"\n    }\n}\n\nvoid RabbitizerInstructionR5900_processUniqueId_MMI_1(RabbitizerInstruction *self) {\n    uint32_t function = RAB_INSTR_R5900_GET_mmi_function(self);\n\n    self->_mandatorybits = RAB_INSTR_R5900_PACK_mmi_function(self->_mandatorybits, function);\n\n    switch (function) {\n#include \"instructions/instr_id/r5900/r5900_mmi_1.inc\"\n    }\n}\n\nvoid RabbitizerInstructionR5900_processUniqueId_MMI_2(RabbitizerInstruction *self) {\n    uint32_t function = RAB_INSTR_R5900_GET_mmi_function(self);\n\n    self->_mandatorybits = RAB_INSTR_R5900_PACK_mmi_function(self->_mandatorybits, function);\n\n    switch (function) {\n#include \"instructions/instr_id/r5900/r5900_mmi_2.inc\"\n    }\n}\n\nvoid RabbitizerInstructionR5900_processUniqueId_MMI_3(RabbitizerInstruction *self) {\n    uint32_t function = RAB_INSTR_R5900_GET_mmi_function(self);\n\n    self->_mandatorybits = RAB_INSTR_R5900_PACK_mmi_function(self->_mandatorybits, function);\n\n    switch (function) {\n#include \"instructions/instr_id/r5900/r5900_mmi_3.inc\"\n    }\n}\n\nvoid RabbitizerInstructionR5900_processUniqueId_MMI(RabbitizerInstruction *self) {\n    uint32_t function = RAB_INSTR_GET_function(self);\n\n    self->_mandatorybits = RAB_INSTR_PACK_function(self->_mandatorybits, function);\n\n    switch (function) {\n#include \"instructions/instr_id/r5900/r5900_mmi.inc\"\n\n        case 0x08:\n            RabbitizerInstructionR5900_processUniqueId_MMI_0(self);\n            break;\n        case 0x09:\n            RabbitizerInstructionR5900_processUniqueId_MMI_2(self);\n            break;\n        case 0x28:\n            RabbitizerInstructionR5900_processUniqueId_MMI_1(self);\n            break;\n        case 0x29:\n            RabbitizerInstructionR5900_processUniqueId_MMI_3(self);\n            break;\n    }\n\n    self->descriptor = &RabbitizerInstrDescriptor_Descriptors[self->uniqueId];\n}\n\n#undef RABBITIZER_DEF_INSTR_ID\n#undef RABBITIZER_DEF_INSTR_ID_ALTNAME\n\nvoid RabbitizerInstructionR5900_processUniqueId(RabbitizerInstruction *self) {\n    uint32_t opcode = RAB_INSTR_GET_opcode(self);\n\n    self->_mandatorybits = RAB_INSTR_PACK_opcode(self->_mandatorybits, opcode);\n\n    switch (opcode) {\n        default:\n            RabbitizerInstructionR5900_processUniqueId_Normal(self);\n            break;\n        case 0x00:\n            RabbitizerInstructionR5900_processUniqueId_Special(self);\n            break;\n        case 0x01:\n            RabbitizerInstructionR5900_processUniqueId_Regimm(self);\n            break;\n        case 0x10:\n            RabbitizerInstructionR5900_processUniqueId_Coprocessor0(self);\n            break;\n        case 0x11:\n            RabbitizerInstructionR5900_processUniqueId_Coprocessor1(self);\n            break;\n        case 0x12:\n            RabbitizerInstructionR5900_processUniqueId_Coprocessor2(self);\n            break;\n        case 0x1C:\n            RabbitizerInstructionR5900_processUniqueId_MMI(self);\n            break;\n    }\n}\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/src/instructions/RabbitizerInstructionRsp/RabbitizerInstructionRsp.c",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"instructions/RabbitizerInstructionRsp.h\"\n\nvoid RabbitizerInstructionRsp_init(RabbitizerInstruction *self, uint32_t word, uint32_t vram) {\n    RabbitizerInstruction_init(self, word, vram);\n\n    self->uniqueId = RABBITIZER_INSTR_ID_rsp_INVALID;\n    self->descriptor = &RabbitizerInstrDescriptor_Descriptors[self->uniqueId];\n\n    self->_handwrittenCategory = true;\n    self->category = RABBITIZER_INSTRCAT_RSP;\n}\n\nvoid RabbitizerInstructionRsp_destroy(RabbitizerInstruction *self) {\n    RabbitizerInstruction_destroy(self);\n}\n\nuint16_t RabbitizerInstructionRsp_GetOffsetVector(const RabbitizerInstruction *self) {\n    uint16_t offset = RAB_INSTR_RSP_GET_OFFSET_VECTOR_RAW(self);\n\n    switch (self->uniqueId) {\n        case RABBITIZER_INSTR_ID_rsp_lsv:\n        case RABBITIZER_INSTR_ID_rsp_ssv:\n            return offset << 1;\n\n        case RABBITIZER_INSTR_ID_rsp_llv:\n        case RABBITIZER_INSTR_ID_rsp_slv:\n            return offset << 2;\n\n        case RABBITIZER_INSTR_ID_rsp_ldv:\n        case RABBITIZER_INSTR_ID_rsp_sdv:\n        case RABBITIZER_INSTR_ID_rsp_lpv:\n        case RABBITIZER_INSTR_ID_rsp_spv:\n        case RABBITIZER_INSTR_ID_rsp_luv:\n        case RABBITIZER_INSTR_ID_rsp_suv:\n            return offset << 3;\n\n        case RABBITIZER_INSTR_ID_rsp_lqv:\n        case RABBITIZER_INSTR_ID_rsp_sqv:\n        case RABBITIZER_INSTR_ID_rsp_lrv:\n        case RABBITIZER_INSTR_ID_rsp_srv:\n        case RABBITIZER_INSTR_ID_rsp_lhv:\n        case RABBITIZER_INSTR_ID_rsp_shv:\n        case RABBITIZER_INSTR_ID_rsp_lfv:\n        case RABBITIZER_INSTR_ID_rsp_sfv:\n        case RABBITIZER_INSTR_ID_rsp_ltv:\n        case RABBITIZER_INSTR_ID_rsp_stv:\n        case RABBITIZER_INSTR_ID_rsp_swv:\n            return offset << 4;\n\n        default:\n            return offset;\n    }\n}\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/src/instructions/RabbitizerInstructionRsp/RabbitizerInstructionRsp_ProcessUniqueId.c",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"instructions/RabbitizerInstructionRsp.h\"\n\n#include \"common/RabbitizerConfig.h\"\n\n#define RABBITIZER_DEF_INSTR_ID(prefix, caseBits, name, ...)    \\\n    case (caseBits):                                            \\\n        self->uniqueId = RABBITIZER_INSTR_ID_##prefix##_##name; \\\n        break;\n#define RABBITIZER_DEF_INSTR_ID_ALTNAME(prefix, caseBits, name, altname, ...) RABBITIZER_DEF_INSTR_ID(prefix, caseBits, name, __VA_ARGS__)\n\nvoid RabbitizerInstructionRsp_processUniqueId_Normal_Lwc2(RabbitizerInstruction *self) {\n    uint32_t rd = RAB_INSTR_GET_rd(self);\n\n    self->_mandatorybits = RAB_INSTR_PACK_rd(self->_mandatorybits, rd);\n\n    switch (rd) {\n#include \"instructions/instr_id/rsp/rsp_normal_lwc2.inc\"\n    }\n}\n\nvoid RabbitizerInstructionRsp_processUniqueId_Normal_Swc2(RabbitizerInstruction *self) {\n    uint32_t rd = RAB_INSTR_GET_rd(self);\n    uint32_t elementlow;\n\n    self->_mandatorybits = RAB_INSTR_PACK_rd(self->_mandatorybits, rd);\n\n    switch (rd) {\n#include \"instructions/instr_id/rsp/rsp_normal_swc2.inc\"\n    }\n\n    switch (self->uniqueId) {\n        case RABBITIZER_INSTR_ID_rsp_suv:\n            elementlow = RAB_INSTR_RSP_GET_elementlow(self);\n            self->_mandatorybits = RAB_INSTR_RSP_PACK_elementlow(self->_mandatorybits, elementlow);\n            if (elementlow != 0) {\n                self->uniqueId = RABBITIZER_INSTR_ID_rsp_swv;\n            }\n            break;\n\n        default:\n            break;\n    }\n}\n\nvoid RabbitizerInstructionRsp_processUniqueId_Normal(RabbitizerInstruction *self) {\n    uint32_t opcode = RAB_INSTR_GET_opcode(self);\n\n    self->_mandatorybits = RAB_INSTR_PACK_opcode(self->_mandatorybits, opcode);\n\n    switch (opcode) {\n#include \"instructions/instr_id/rsp/rsp_normal.inc\"\n\n        // new rsp stuff\n        case 0x32:\n            RabbitizerInstructionRsp_processUniqueId_Normal_Lwc2(self);\n            break;\n\n        case 0x3A:\n            RabbitizerInstructionRsp_processUniqueId_Normal_Swc2(self);\n            break;\n    }\n\n    if (RabbitizerConfig_Cfg.pseudos.enablePseudos) {\n        if (RAB_INSTR_GET_rt(self) == 0) {\n            if (self->uniqueId == RABBITIZER_INSTR_ID_rsp_beq) {\n                if (RAB_INSTR_GET_rs(self) == 0) {\n                    if (RabbitizerConfig_Cfg.pseudos.pseudoB) {\n                        self->uniqueId = RABBITIZER_INSTR_ID_rsp_b;\n                    }\n                } else {\n                    if (RabbitizerConfig_Cfg.pseudos.pseudoBeqz) {\n                        self->uniqueId = RABBITIZER_INSTR_ID_rsp_beqz;\n                    }\n                }\n            } else if (self->uniqueId == RABBITIZER_INSTR_ID_rsp_bne) {\n                if (RabbitizerConfig_Cfg.pseudos.pseudoBnez) {\n                    self->uniqueId = RABBITIZER_INSTR_ID_rsp_bnez;\n                }\n            }\n        }\n    }\n\n    self->descriptor = &RabbitizerInstrDescriptor_Descriptors[self->uniqueId];\n}\n\nvoid RabbitizerInstructionRsp_processUniqueId_Special(RabbitizerInstruction *self) {\n    uint32_t function = RAB_INSTR_GET_function(self);\n\n    self->_mandatorybits = RAB_INSTR_PACK_function(self->_mandatorybits, function);\n\n    switch (function) {\n#include \"instructions/instr_id/rsp/rsp_special.inc\"\n    }\n\n    if (RabbitizerInstruction_isNop(self)) {\n        // NOP is special enough\n        self->uniqueId = RABBITIZER_INSTR_ID_rsp_nop;\n    } else if (RabbitizerConfig_Cfg.pseudos.enablePseudos) {\n        if (RAB_INSTR_GET_rt(self) == 0) {\n            if (self->uniqueId == RABBITIZER_INSTR_ID_rsp_or) {\n                if (RabbitizerConfig_Cfg.pseudos.pseudoMove) {\n                    self->uniqueId = RABBITIZER_INSTR_ID_rsp_move;\n                }\n            } else if (self->uniqueId == RABBITIZER_INSTR_ID_rsp_nor) {\n                if (RabbitizerConfig_Cfg.pseudos.pseudoNot) {\n                    self->uniqueId = RABBITIZER_INSTR_ID_rsp_not;\n                }\n            }\n        } else if (self->uniqueId == RABBITIZER_INSTR_ID_rsp_subu) {\n            if (RAB_INSTR_GET_rs(self) == 0) {\n                if (RabbitizerConfig_Cfg.pseudos.pseudoNegu) {\n                    self->uniqueId = RABBITIZER_INSTR_ID_rsp_negu;\n                }\n            }\n        }\n    }\n\n    self->descriptor = &RabbitizerInstrDescriptor_Descriptors[self->uniqueId];\n\n    if (self->uniqueId == RABBITIZER_INSTR_ID_rsp_jalr) {\n        // $ra\n        if (RAB_INSTR_GET_rd(self) != 31) {\n            self->descriptor = &RabbitizerInstrDescriptor_Descriptors[RABBITIZER_INSTR_ID_rsp_jalr_rd];\n        }\n    }\n}\n\nvoid RabbitizerInstructionRsp_processUniqueId_Regimm(RabbitizerInstruction *self) {\n    uint32_t rt = RAB_INSTR_GET_rt(self);\n\n    self->_mandatorybits = RAB_INSTR_PACK_rt(self->_mandatorybits, rt);\n\n    switch (rt) {\n#include \"instructions/instr_id/rsp/rsp_regimm.inc\"\n    }\n\n    if (RabbitizerConfig_Cfg.pseudos.enablePseudos) {\n        switch (self->uniqueId) {\n            case RABBITIZER_INSTR_ID_rsp_bgezal:\n                if (RAB_INSTR_GET_rs(self) == 0) {\n                    if (RabbitizerConfig_Cfg.pseudos.pseudoBal) {\n                        self->uniqueId = RABBITIZER_INSTR_ID_rsp_bal;\n                    }\n                }\n                break;\n\n            default:\n                break;\n        }\n    }\n\n    self->descriptor = &RabbitizerInstrDescriptor_Descriptors[self->uniqueId];\n}\n\nvoid RabbitizerInstructionRsp_processUniqueId_Coprocessor0(RabbitizerInstruction *self) {\n    uint32_t fmt = RAB_INSTR_GET_fmt(self);\n\n    self->_mandatorybits = RAB_INSTR_PACK_fmt(self->_mandatorybits, fmt);\n\n    switch (fmt) {\n#include \"instructions/instr_id/cpu/cpu_cop0.inc\"\n    }\n\n    self->descriptor = &RabbitizerInstrDescriptor_Descriptors[self->uniqueId];\n}\n\nvoid RabbitizerInstructionRsp_processUniqueId_Coprocessor2_Vu(RabbitizerInstruction *self) {\n    uint32_t aux = SHIFTR(self->word, 25, 1);\n    uint32_t function = RAB_INSTR_GET_function(self);\n\n    if (aux != 1) {\n        return;\n    }\n\n    // TODO: name this bit range\n    self->_mandatorybits = BITREPACK(self->_mandatorybits, aux, 25, 1);\n    self->_mandatorybits = RAB_INSTR_PACK_function(self->_mandatorybits, function);\n\n    switch (function) {\n#include \"instructions/instr_id/rsp/rsp_cop2_vu.inc\"\n    }\n}\n\nvoid RabbitizerInstructionRsp_processUniqueId_Coprocessor2(RabbitizerInstruction *self) {\n    uint32_t fmt = RAB_INSTR_GET_fmt(self);\n\n    self->_mandatorybits = RAB_INSTR_PACK_fmt(self->_mandatorybits, fmt);\n\n    switch (fmt) {\n#include \"instructions/instr_id/cpu/cpu_cop0.inc\"\n\n        default:\n            RabbitizerInstructionRsp_processUniqueId_Coprocessor2_Vu(self);\n            break;\n    }\n\n    self->descriptor = &RabbitizerInstrDescriptor_Descriptors[self->uniqueId];\n}\n\n#undef RABBITIZER_DEF_INSTR_ID\n#undef RABBITIZER_DEF_INSTR_ID_ALTNAME\n\nvoid RabbitizerInstructionRsp_processUniqueId(RabbitizerInstruction *self) {\n    uint32_t opcode = RAB_INSTR_GET_opcode(self);\n\n    self->_mandatorybits = RAB_INSTR_PACK_opcode(self->_mandatorybits, opcode);\n\n    self->uniqueId = RABBITIZER_INSTR_ID_rsp_INVALID;\n\n    switch (opcode) {\n        default:\n            RabbitizerInstructionRsp_processUniqueId_Normal(self);\n            break;\n        case 0x00:\n            RabbitizerInstructionRsp_processUniqueId_Special(self);\n            break;\n        case 0x01:\n            RabbitizerInstructionRsp_processUniqueId_Regimm(self);\n            break;\n        case 0x10:\n            RabbitizerInstructionRsp_processUniqueId_Coprocessor0(self);\n            break;\n        // case 0x11:\n        //    RabbitizerInstructionRsp_processUniqueId_Coprocessor1(self);\n        //    break;\n        case 0x12:\n            RabbitizerInstructionRsp_processUniqueId_Coprocessor2(self);\n            break;\n    }\n}\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/src/instructions/RabbitizerRegister.c",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"instructions/RabbitizerRegister.h\"\n\n#include <assert.h>\n\n#include \"common/Utils.h\"\n#include \"common/RabbitizerConfig.h\"\n\n#define RABBITIZER_DEF_REG(prefix, name, numeric) [RABBITIZER_REG_##prefix##_##name] = { \"$\" #numeric, \"$\" #name }\n\n#define RABBITIZER_DEF_REG_NODOLLAR(prefix, name, numeric) [RABBITIZER_REG_##prefix##_##name] = { \"$\" #numeric, #name }\n\n// numeric, named\n\nconst char *RabbitizerRegister_GprO32_Names[][2] = {\n#include \"instructions/registers/RabbitizerRegister_GprO32.inc\"\n};\n\nconst char *RabbitizerRegister_GprN32_Names[][2] = {\n#include \"instructions/registers/RabbitizerRegister_GprN32.inc\"\n};\n\nconst char *RabbitizerRegister_Cop0_Names[][2] = {\n#include \"instructions/registers/RabbitizerRegister_Cop0.inc\"\n};\n\nconst char *RabbitizerRegister_Cop1O32_Names[][2] = {\n#include \"instructions/registers/RabbitizerRegister_Cop1O32.inc\"\n};\n\nconst char *RabbitizerRegister_Cop1N32_Names[][2] = {\n#include \"instructions/registers/RabbitizerRegister_Cop1N32.inc\"\n};\n\nconst char *RabbitizerRegister_Cop1N64_Names[][2] = {\n#include \"instructions/registers/RabbitizerRegister_Cop1N64.inc\"\n};\n\nconst char *RabbitizerRegister_Cop1Control_Names[][2] = {\n#include \"instructions/registers/RabbitizerRegister_Cop1Control.inc\"\n};\n\nconst char *RabbitizerRegister_Cop2_Names[][2] = {\n#include \"instructions/registers/RabbitizerRegister_Cop2.inc\"\n};\n\n/* RSP */\n\nconst char *RabbitizerRegister_RspGpr_Names[][2] = {\n#include \"instructions/registers/RabbitizerRegister_RspGpr.inc\"\n};\n\nconst char *RabbitizerRegister_RspCop0_Names[][2] = {\n#include \"instructions/registers/RabbitizerRegister_RspCop0.inc\"\n};\n\nconst char *RabbitizerRegister_RspCop2_Names[][2] = {\n#include \"instructions/registers/RabbitizerRegister_RspCop2.inc\"\n};\n\nconst char *RabbitizerRegister_RspCop2Control_Names[][2] = {\n#include \"instructions/registers/RabbitizerRegister_RspCop2Control.inc\"\n};\n\nconst char *RabbitizerRegister_RspVector_Names[][2] = {\n#include \"instructions/registers/RabbitizerRegister_RspVector.inc\"\n};\n\n/* RSP */\n\n/* R5900 */\n\nconst char *RabbitizerRegister_R5900VF_Names[][2] = {\n#include \"instructions/registers/RabbitizerRegister_R5900VF.inc\"\n};\n\nconst char *RabbitizerRegister_R5900VI_Names[][2] = {\n#include \"instructions/registers/RabbitizerRegister_R5900VI.inc\"\n};\n\n/* R5900 */\n\nconst char *RabbitizerRegister_getNameGpr(uint8_t regValue) {\n    assert(regValue < ARRAY_COUNT(RabbitizerRegister_GprO32_Names));\n\n    switch (RabbitizerConfig_Cfg.regNames.gprAbiNames) {\n        case RABBITIZER_ABI_NUMERIC:\n            return RabbitizerRegister_GprO32_Names[regValue][0];\n\n        default:\n        case RABBITIZER_ABI_O32:\n            return RabbitizerRegister_GprO32_Names[regValue][RabbitizerConfig_Cfg.regNames.namedRegisters ? 1 : 0];\n\n        case RABBITIZER_ABI_N32:\n        case RABBITIZER_ABI_N64:\n            return RabbitizerRegister_GprN32_Names[regValue][RabbitizerConfig_Cfg.regNames.namedRegisters ? 1 : 0];\n    }\n}\n\nconst char *RabbitizerRegister_getNameCop0(uint8_t regValue) {\n    assert(regValue < ARRAY_COUNT(RabbitizerRegister_Cop0_Names));\n\n    return RabbitizerRegister_Cop0_Names[regValue]\n                                        [RabbitizerConfig_Cfg.regNames.namedRegisters && RabbitizerConfig_Cfg.regNames.vr4300Cop0NamedRegisters ? 1 : 0];\n}\n\nconst char *RabbitizerRegister_getNameCop1(uint8_t regValue) {\n    assert(regValue < ARRAY_COUNT(RabbitizerRegister_Cop1O32_Names));\n\n    switch (RabbitizerConfig_Cfg.regNames.fprAbiNames) {\n        default:\n        case RABBITIZER_ABI_NUMERIC:\n            return RabbitizerRegister_Cop1O32_Names[regValue][0];\n\n        case RABBITIZER_ABI_O32:\n            return RabbitizerRegister_Cop1O32_Names[regValue][RabbitizerConfig_Cfg.regNames.namedRegisters ? 1 : 0];\n\n        case RABBITIZER_ABI_N32:\n            return RabbitizerRegister_Cop1N32_Names[regValue][RabbitizerConfig_Cfg.regNames.namedRegisters ? 1 : 0];\n\n        case RABBITIZER_ABI_N64:\n            return RabbitizerRegister_Cop1N64_Names[regValue][RabbitizerConfig_Cfg.regNames.namedRegisters ? 1 : 0];\n    }\n}\n\nconst char *RabbitizerRegister_getNameCop1Control(uint8_t regValue) {\n    assert(regValue < ARRAY_COUNT(RabbitizerRegister_Cop1Control_Names));\n\n    return RabbitizerRegister_Cop1Control_Names[regValue][RabbitizerConfig_Cfg.regNames.namedRegisters && RabbitizerConfig_Cfg.regNames.userFpcCsr ? 1 : 0];\n}\n\nconst char *RabbitizerRegister_getNameCop2(uint8_t regValue) {\n    assert(regValue < ARRAY_COUNT(RabbitizerRegister_Cop2_Names));\n\n    return RabbitizerRegister_Cop2_Names[regValue][RabbitizerConfig_Cfg.regNames.namedRegisters ? 1 : 0];\n}\n\nconst char *RabbitizerRegister_getNameRspGpr(uint8_t regValue) {\n    assert(regValue < ARRAY_COUNT(RabbitizerRegister_RspGpr_Names));\n\n    return RabbitizerRegister_RspGpr_Names[regValue][RabbitizerConfig_Cfg.regNames.namedRegisters ? 1 : 0];\n}\n\nconst char *RabbitizerRegister_getNameRspCop0(uint8_t regValue) {\n    assert(regValue < ARRAY_COUNT(RabbitizerRegister_RspCop0_Names));\n\n    return RabbitizerRegister_RspCop0_Names[regValue]\n                                           [RabbitizerConfig_Cfg.regNames.namedRegisters && RabbitizerConfig_Cfg.regNames.vr4300RspCop0NamedRegisters ? 1 : 0];\n}\n\nconst char *RabbitizerRegister_getNameRspCop2(uint8_t regValue) {\n    assert(regValue < ARRAY_COUNT(RabbitizerRegister_RspCop2_Names));\n\n    return RabbitizerRegister_RspCop2_Names[regValue][RabbitizerConfig_Cfg.regNames.namedRegisters ? 1 : 0];\n}\n\nconst char *RabbitizerRegister_getNameRspCop2Control(uint8_t regValue) {\n    assert(regValue < ARRAY_COUNT(RabbitizerRegister_RspCop2Control_Names));\n\n    return RabbitizerRegister_RspCop2Control_Names[regValue][RabbitizerConfig_Cfg.regNames.namedRegisters ? 1 : 0];\n}\n\nconst char *RabbitizerRegister_getNameRspVector(uint8_t regValue) {\n    assert(regValue < ARRAY_COUNT(RabbitizerRegister_RspVector_Names));\n\n    return RabbitizerRegister_RspVector_Names[regValue][RabbitizerConfig_Cfg.regNames.namedRegisters ? 1 : 0];\n}\n\nconst char *RabbitizerRegister_getNameR5900VF(uint8_t regValue) {\n    assert(regValue < ARRAY_COUNT(RabbitizerRegister_R5900VF_Names));\n\n    return RabbitizerRegister_R5900VF_Names[regValue][RabbitizerConfig_Cfg.regNames.namedRegisters ? 1 : 0];\n}\n\nconst char *RabbitizerRegister_getNameR5900VI(uint8_t regValue) {\n    assert(regValue < ARRAY_COUNT(RabbitizerRegister_R5900VI_Names));\n\n    return RabbitizerRegister_R5900VI_Names[regValue][RabbitizerConfig_Cfg.regNames.namedRegisters ? 1 : 0];\n}\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/test.c",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"instructions/RabbitizerInstruction.h\"\n\n#include <assert.h>\n#include <stdio.h>\n#include <string.h>\n#include <stdlib.h>\n\n\nint main() {\n    uint32_t word;\n    RabbitizerInstruction instr;\n    char *buffer;\n    int extraLJust = 5;\n    size_t bufferSize;\n    size_t disassembledSize;\n\n    word = 0x8D4A7E18; // lw\n    //word = 0x00004010; // mfhi\n\n    RabbitizerInstruction_init(&instr, word, 0x80000000);\n\n    RabbitizerInstruction_processUniqueId(&instr);\n\n    bufferSize = RabbitizerInstruction_getSizeForBuffer(&instr, 0, extraLJust);\n    buffer = malloc(bufferSize + 1);\n    assert(buffer != NULL);\n\n    disassembledSize = RabbitizerInstruction_disassemble(&instr, buffer, NULL, 0, extraLJust);\n    assert(disassembledSize <= bufferSize);\n\n    printf(\"%08X: %s\\n\", word, buffer);\n\n    free(buffer);\n    RabbitizerInstruction_destroy(&instr);\n\n    return 0;\n}\n"
  },
  {
    "path": "tools/ido-static-recomp/tools/rabbitizer/tests/cplusplus/test.cpp",
    "content": "/* SPDX-FileCopyrightText: © 2022 Decompollaborate */\n/* SPDX-License-Identifier: MIT */\n\n#include \"instructions/InstructionCpu.hpp\"\n\n\nint main() {\n    uint32_t word = 0x8D4A7E18; // lw\n    uint32_t vram = 0x80000000;\n    int extraLJust = 5;\n    rabbitizer::InstructionCpu instr(word, vram);\n\n    printf(\"%08X: %s\\n\", word, instr.disassemble(extraLJust).c_str());\n\n    return 0;\n}\n"
  },
  {
    "path": "tools/ido5.3_compiler/LICENSE.md",
    "content": "# Silicon Graphics Freeware Legal Notice\n## Copyright 1995, Silicon Graphics, Inc. -- ALL RIGHTS RESERVED\n\nYou may copy, modify, use and distribute this software, (i) provided that you include the entirety of this reservation of rights notice in all such copies, and (ii) you comply with any additional or different obligations and/or use restrictions specified by any third party owner or supplier of the software in other notices that may be included with the software.\n\n**SGI DISCLAIMS ALL WARRANTIES WITH RESPECT TO THIS SOFTWARE, EXPRESS, IMPLIED, OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ALL WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT. SGI SHALL NOT BE LIABLE FOR ANY SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING, WITHOUT LIMITATION, LOST REVENUES, LOST PROFITS, OR LOSS OF PROSPECTIVE ECONOMIC ADVANTAGE, RESULTING FROM THE USE OR MISUSE OF THIS SOFTWARE.**\n\n**U.S. GOVERNMENT RESTRICTED RIGHTS LEGEND:**\n\nUse, duplication or disclosure by the Government is subject to restrictions as set forth in FAR 52.227.19(c)(2) or subparagraph (c)(1)(ii) of the Rights in Technical Data and Computer Software clause at DFARS 252.227-7013 and/or in similar or successor clauses in the FAR, or the DOD or NASA FAR Supplement. Unpublished - rights reserved under the Copyright Laws of United States. Contractor/manufacturer is Silicon Graphics, Inc., 2011 N. Shoreline Blvd. Mountain View, CA 94039-7311.\n\n## Product Support\n\nFreeware products are not supported by Silicon Graphics or any of its support providers. The software contained in this package is made available through the generous efforts of their authors. Although they are interested in your feedback, they are under no obligation to address bugs, enhancements, or answer questions. \n\n----\n\n**NOTE:** This license was copied verbatim from https://web.archive.org/web/19991008090202/http://toolbox.sgi.com/TasteOfDT/public/freeware1.0/legal_notice.html .\n"
  },
  {
    "path": "tools/ido5.3_compiler/usr/lib/err.english.cc",
    "content": "@\n  358   358   358\n 6464  6482  6553\n 6553  6593  6728\n 6728  6746  6803\n 6803  6808  6808\n 6808  6818  6818\n 6818  6826  6826\n 6826  6847  6847\n 6847  6875  6922\n 6922  6930  6930\n 6930  6939  6939\n 6939  6948  6948\n 6948  6974  7120\n 7120  7149  7204\n 7210  7248  7311\n 7317  7350  7442\n 7450  7497  7627\n 7635  7709  7930\n 7938  7975  8063\n 8071  8113  8253\n 8261  8289  8289\n 8298  8338  8445\n 8460  8502  8635\n 8650  8690  8819\n 8834  8857  8965\n 8965  9008  9113\n 9119  9142  9227\n 9235  9282  9451\n 9451  9462  9462\n 9462  9477  9477\n 9477  9497  9497\n 9497  9545  9545\n 9545  9584  9584\n 9584  9604  9662\n 9662  9682  9720\n 9720  9749  9749\n 9749  9788  9788\n 9788  9802  9802\n 9802  9829  9829\n 9829  9861  9861\n 9861  9904  9904\n 9904  9920  9920\n 9920  9962  9962\n 9962  9988  9988\n 9988 10014 10014\n10014 10035 10035\n10035 10054 10097\n10097 10115 10115\n10115 10147 10147\n10147 10183 10183\n10183 10208 10208\n10208 10236 10236\n10236 10269 10269\n10269 10304 10304\n10304 10328 10328\n10328 10351 10351\n10351 10371 10371\n10371 10402 10402\n10402 10447 10447\n10447 10497 10497\n10497 10533 10533\n10533 10598 10598\n10606 10630 10630\n10640 10671 10671\n10690 10719 10719\n10728 10752 10795\n10795 10837 10837\n10837 10876 10876\n10876 10900 10900\n10900 10948 10948\n10960 11021 11103\n11103 11128 11128\n11128 11153 11153\n11153 11216 11216\n11216 11239 11239\n11239 11303 11303\n11303 11347 11347\n11357 11393 11393\n11393 11432 11432\n11442 11494 11494\n11494 11536 11536\n11536 11595 11595\n11595 11622 11622\n11622 11684 11684\n11684 11726 11726\n11738 11778 11778\n11782 11813 11813\n11813 11850 11850\n11850 11900 12087\n12111 12120 12120\n12120 12129 12129\n12129 12158 12158\n12158 12192 12192\n12192 12237 12237\n12237 12273 12273\n12273 12326 12326\n12330 12366 12366\n12366 12423 12423\n12427 12482 12482\n12486 12560 12560\n12568 12631 12631\n12637 12691 12691\n12691 12743 12743\n12743 12785 12785\n12785 12826 12826\n12826 12865 12865\n12865 12883 12883\n12883 12946 12946\n12956 12995 12995\n13005 13066 13066\n13077 13163 13163\n13163 13211 13211\n13211 13270 13270\n13270 13318 13318\n13318 13350 13350\n13350 13387 13387\n13387 13428 13428\n13428 13464 13533\n13533 13580 13737\n13737 13776 13854\n13854 13913 13913\n13913 13950 13950\n13950 14118 14118\n14118 14150 14150\n14150 14163 14194\n14194 14224 14255\n14255 14275 14319\n14319 14353 14458\n14466 14484 14530\n14534 14567 14567\n14567 14635 14682\n14690 14742 14742\n14742 14789 14789\n14801 14875 14875\n14886 14947 14947\n14947 14992 14992\n14992 15035 15085\n15085 15134 15205\n15214 15267 15448\n15454 15496 16810\n16822 16875 16960\n16972 17053 17179\n17191 17236 17332\n17344 17491 17841\n17853 17939 18304\n18316 18471 18774\n18786 18952 19323\n19335 19364 19496\n19500 19527 19598\n19598 19613 19776\n19797 19808 19837\n19837 19862 19862\n19868 19927 20026\n20034 20075 20179\n20187 20223 20223\n20223 20290 20382\n20392 20441 20589\n20601 20656 20656\n20656 20699 20818\n20826 20860 21038\n21046 21094 21191\n21203 21236 21314\n21326 21395 21457\n21469 21502 21502\n21502 21587 21731\n21756 21789 21864\n21875 21901 21976\n22013 22059 22220\n22257 22397 22561\n22561 22595 22595\n22603 22623 22623\n22631 22667 22828\n22865 22919 22994\n23031 23059 23120\n23132 23201 23201\n23212 23274 23274\n23285 23345 23345\n23356 23393 23393\n23399 23431 23532\n23542 23587 23646\n23656 23697 23745\n23755 23796 23844\n23854 23876 23928\n23942 23971 24153\n24160 24243 24243\n24247 24273 24743\n24755 24784 24984\n24996 25034 25034\n25034 25075 25273\n25281 25332 25410\n25420 25467 25544\n25554 25583 25744\n25754 25783 26061\n26071 26111 26185\n26194 26239 26525\n26535 26568 26914\n26924 26951 26998\n27008 27035 27082\n27093 27120 27167\n27178 27206 27251\n27261 27289 27334\n27345 27391 27931\n27938 27959 28007\n28019 28037 28037\n28043 28069 28069\n28077 28147 28199\n28207 28266 28266\n28274 28306 28306\n28314 28339 28339\n28347 28404 28510\n28518 28567 28682\n28690 28728 28728\n28736 28782 29023\n29033 29085 29234\n29246 29303 29383\n29395 29432 29570\n29592 29631 29644\n29644 29693 29758\n29767 29810 29875\n29875 29911 29976\n29984 30014 30014\n30027 30086 30151\n30157 30223 30293\n30301 30369 30445\n30457 30511 30568\n30580 30630 30743\n30755 30812 30874\n30886 30959 31035\n31043 31076 31175\n31183 31243 31243\n31251 31323 31323\n31331 31433 31433\n31445 31544 31686\n31698 31740 31740\n31740 31783 31783\n31783 31824 31824\n31824 31873 31996\n32008 32056 32164\n32176 32210 32210\n32229 32271 32271\n32279 32323 32569\n32581 32642 32718\n32739 32779 32916\n32926 32953 33047\n33057 33116 33315\n33325 33373 33373\n33373 33407 33469\n33494 33527 33527\n33536 33573 33573\n33584 33650 33697\n33705 33763 33763\n33763 33797 33797\n33797 33829 33906\n33915 33976 33976\n33985 34016 34098\n34098 34133 34198\n34198 34261 34261\n34269 34312 34312\n34324 34363 34438\n34444 34530 34530\n34538 34596 34626\n34636 34675 34754\n34764 34821 34821\n34821 34867 34950\n34959 35016 35135\n35145 35198 35198\n35208 35266 35344\n35355 35382 35537\n35547 35576 35629\n35637 35705 35705\n35713 35764 35764\n35764 35784 35876\n35888 35932 35950\n35950 36013 36138\n36150 36191 36280\n36286 36314 36419\n36431 36516 36516\n36516 36554 36642\n36642 36689 36808\n36818 36881 37105\n37113 37183 37204\n37204 37225 37225\n37225 37255 37348\n37348 37388 37388\n37388 37454 37454\n37454 37518 37518\n37518 37584 37584\n37584 37717 37717\n37717 37752 37752\n37752 37783 37889\n37901 37928 38034\n38046 38115 38115\n38115 38140 38187\n38195 38219 38339\n38351 38422 38422\n38422 38486 38486\n38486 38555 38555\n38555 38619 38619\n38619 38641 38641\n38641 38758 38758\n38758 38929 38929\n38929 38975 39043\n39055 39084 39133\n39133 39175 39265\n39275 39310 39494\n39504 39547 39576\n39587 39614 39668\n39674 39697 39797\n39797 39845 40094\n40094 40158 40264\n40264 40369 40523\n40523 40593 40593\n40593 40629 40876\n40876 40911 40971\n40977 41026 41026\n41038 41077 41077\n41077 41116 41116\n41116 41156 41156\n41156 41195 41195\n41195 41237 41237\n41237 41285 41285\n41285 41304 41304\n41304 41371 41371\n41371 41429 41429\n41429 41491 41491\n41491 41519 41519\n41519 41572 41572\n41572 41642 41642\n41642 41676 41676\n41676 41713 41713\n41713 41751 41751\n41751 41792 41792\n41792 41856 41856\n41856 41881 41881\n41881 41936 41936\n41936 41977 41977\n41977 42018 42018\n42018 42090 42090\n42090 42162 42162\n42162 42205 42205\n42205 42267 42267\n42267 42294 42294\n42294 42309 42309\n42309 42338 42386\n42393 42425 42522\n42530 42577 42577\n42577 42623 42623\n42623 42643 42725\n42725 42748 42748\n42748 42829 42897\n42901 42952 42952\n42952 42978 43025\n43025 43116 43116\n43116 43171 43171\n43171 43204 43376\n43386 43453 43471\n43471 43547 43780\n43798 43921 44116\n44120 44120 44120\nOut of memory: %s\nThere is no more memory left in the system for compiling this program.\nInternal Error Unknown Error Message %s\n1) An internal error, while attempting to print an unavailable message\n2) The error message file is inaccessible or has other problems\nUnknown Signal %s\n1) An unknown signal has been caught\n2) 2 Nested signals\nline\nWarning: \nFatal: \nSource not available\nToo many errors... goodbye.\nThere is a limit of 30 errors before aborting.\nError: \nreserved\nreserved\nUnknown Control Statement\n1) The line begins with a '#' and is not of the form:\n\t# <line_number> \"<filename>\"\n2) Please compile this program with the preprocessor enabled.\nUnknown character %s ignored\nThe character is not part of the source character set.\n2.2.1\nUnknown control character \\%s ignored\nThe control character is not part of the source character set.\n2.2.1\nIllegal character %s in exponent\n1) Digits or sign expected after 'e' or 'E'.\n2) Digits are expected after sign in exponent.\n3.1.3.1\nConstant is out of range and may be truncated.\nThe constant is too large to be accurately represented and may be\ntruncated.  The limits are in the system include file limits.h.\n2.2.4.2\nConstant is out of range for a 32-bit data type, but accepted as written.\nThe constant is too large to fit in a 32-bit data type, but will be\naccurately represented in a wider data type.  The value may be truncated,\ndepending on its context.  The limits are in the system include file\nlimits.h.\n2.2.4.2\nCharacter constant size out of range\n1) No characters in a character constant.\n2) More than 4 bytes in a character constant.\n3.1.3.4\nWide character constant size out of range\n1) No characters in the multibyte sequence (0 assumed).\n2) More than 1 byte in the multi-byte sequence (only the first byte was converted).\n3.1.3.4\nInvalid multibyte character\n4.10.7.2\nNewline in string or character constant\n1) Terminate your string or character constant with closing quotes.\n2) Put a backslash before the newline.\n3.1.3.4, 3.1.4\nOctal character escape too large: %s > %s\n1) Terminate end of octal sequence with a non-octal character.\n2) Select a character value within the limits.\nValue may be truncated\n3.1.3.4, 3.1.4\nHex character escape too large: %s > %s\n1) Terminate end of hex sequence with a non-hex character.\n2) Select a character value within the limits.\nValue may be truncated\n3.1.3.4, 3.1.4\nUnexpected End-of-file\n1) Unterminated string or character constant\n2) Missing closing comment marker (*/)\n3) File system problems\nUnrecognized escape sequence in string \\%s\nRecognized escape sequences are \\a, \\b, \\f, \\n, \\r, \\t, and \\v.\nCharacter will be treated as un-escaped.\n3.9.2\nIllegal octal digit %s\nOctal constants, beginning with 0, must only have digits between 0 and 7,\ninclusive.\n3.1.3.2\nUnable to open temporary file for compiling %s\n1) TMPDIR environment variable is set to a directory that you have no\n   permissions for.\n2) The file system is full.\n3) System errors beyond the scope of the compiler.\n%s: Hangup\n%s: Interrupt \n%s: Quit (ASCII FS)\n%s: Illegal instruction (not reset when caught)\n%s: Trace trap (not reset when caught)\n%s: IOT instruction\nAlso SIGABRT, used by abort, replace SIGIOT in the future\n%s: EMT instruction\nAlso SIGXCPU, Exceeded CPU time limit\n%s: Floating point exception\n%s: Kill (cannot be caught or ignored)\n%s: Bus error\n%s: Segmentation violation\n%s: Bad argument to system call\n%s: Write on a pipe with no one to read it\n%s: Alarm clock\n%s: Software termination signal from kill\n%s: User defined signal 1\n%s: User defined signal 2\n%s: Death of a child\nPower-fail restart\n%s: Also SIGXFSZ, exceeded file size limit\n%s: Window change\n%s: Handset, line status change\n%s: Sendablestop signalnot from tty\n%s: Stop signal from tty\n%s: Pollable event occurred\n%s: Input/Output possible signal\n%s: Urgent condition on IO channel\n%s: Window size changes\n%s: Virtual time alarm\n%s: Profiling alarm\n%s: Continue a stopped process\n%s: To readers pgrp upon background tty read\n%s: Like TTIN for output if (tp->t_local&LTOSTOP)\n%s: Resource lost (eg, record-lock)\n'auto' and 'register' are not allowed in an external declaration\n3.7(10)\nmust have function type\n3.7.1(30)\nFunctions cannot return arrays\n3.7.1(33), 3.3.2.2\nDeclaration list not allowed\n3.7.1(5)\nToo many input files %s\nThe command line may contain only one file\ncpp internal error: input stack underflow\ncpp internal error: if stack underflow\nCannot open the file %s\nNo new-line character at the end of the file %s\n2.1.1.2(30)\nFatal: Exceeded the limit of nesting level for #include file\nFatal: Exceeded the limit of nesting level for #include file.  This limit\nis 200.\nFail to read the file %s\nCannot write the file %s\n%s: %s: An if directive is not terminated properly in the file\n%s: %s: nested comment\n%s:%s: Illegal macro name %s; macro name shall be an identifier\n%s:%s: Illegal preprocessing token sequence\n3.8.3(35)\n%s:%s: Illegal macro parameter name\n%s:%s: Non-unique macro parameter name\n3.8.3(18)\n%s:%s: Missing ')' in parameter list for #define %s\n%s:%s: Missing ')' in macro instantiation\n%s:%s: Bad punctuator in the parameter list for #define %s\n%s:%s: Macro %s redefined.\n%s:%s: # operator should be followed by a macro argument name\n%s:%s: Badly formed constant expression%s\n3.4(9), 3.8\n%s:%s: Division by zero in #if or #elif\n3.8\nunknown command line option %s\nextraneous input/output file name %s\n%s: %s: Unterminated string or character constant\nA preprocessing string or character constant token was not\nterminated.  Note that preprocessing directives are processed\nafter the source file has been divided into preprocessing tokens.\n2.1.1.2(30) 3.1(18) 3.8\n%s: %s: \n%s: %s: \n%s: %s: Unterminated comment\n%s: %s: Unknown directive type %s\n%s: %s: #elif or #else after #else directive\n%s: %s: Bad identifier after the %s\n%s: %s: #%s accepts only one identifier as parameter\n3.8\n%s: %s: Bad identifier after the %s\n%s: %s: text following #%s violates the ANSI C standard.\n3.8\n%s: %s: Bad character %s occurs after the # directive.\n3.8\n%s: %s: the ## operator shall not be the %s token in the replacement list\n3.8.3.3\n%s: %s: the defined operator takes identifier as operand only.\n3.8.1\n%s: %s: Not in a conditional directive while using %s\n%s: %s: Illegal filename specification for #include\n%s: %s: Invalid file name %s for #include\n%s: %s: Cannot open file %s for #include\n%s: %s: Bad argument for #line command\n%s: %s: #error %s\n%s: %s: Tried to redefine predefined macro %s, attempt ignored\n3.8.7(22)\n%s: %s: Undefining predefined macro %s\n3.8.7(22)\n%s: %s: Undefined the ANSI standard library defined macro %s\n4.1.2.1(9)\n%s: %s: The number of arguments in the macro invocation does not match the definition\n%s: %s: Illegal character %s in preprocessor if\n%s: %s: Illegal character %s for number in preprocessor if\n%s: %s: No string is allowed in preprocessor if\n%s: %s: Not supported pragma %s\n%s: %s: Not supported #pragma format\n%s: %s: ANSI C does not allow #ident; %s\n%s: %s: Not supported #ident format\nThis cpp extension accepts the following format:\n#ident \"any string\"\n%s: %s: Not supported #assert/#unassert format\nThis cpp extension accepts the following format:\n#assert identifier\n#assert identifier ( pp-tokens )\n#unassert identifier\n#unassert identifier ( pp-tokens )\n%s: %s: Bad assertion predicate format\nThe correct syntax for this cpp extension is:\n#assert identifier ( pp-token )\n%s: %s: directive is an upward-compatible ANSI C extension\n%s: This option requires an argument\n%s: %s: A macro has expanded recursively more than %s times.  Further expansion will be disabled!  Use command-line option: -Wp,-max_rec_depth=depth to recurse deeper.\nA status return from cpp to cfe\nSyntax Error\nThe token read was unexpected.\nSyntax Error -- cannot backup\nThe token read was unexpected.\nYacc stack overflow\nThe expression is too complicated to parse.\nTrailing comma in enumerator list\nThe use of a trailing comma in an enumerator list is not standard C.  There\nmay be portability problems.\n3.5.2.2\nEmpty declaration\nEmpty declarations are invalid in standard C.\n3.5\n%s declared, but not referenced.\nredeclaration of '%s'; previous declaration at line %s in file '%s'\nIdentifier redeclared in the same scope/block.\n3.1.2.3\n'%s' undefined; reoccurrences will not be reported.\nNon-function name referenced in function call.\n3.3.2.2(18)\nThe number of arguments doesn't agree with the number in the declaration.\n3.3.2.2(5)\n'%s' section name longer than 8 characters.  Name truncated.\n'%s' is already placed by pragma alloc_text.\nCannot write ucode file while compiling %s\n1) The file system is full\n2) Permissions problem\nMust have corresponding formal argument for '%s'\nParameter found in the declaration part, but not in the argument list.\n3.7.1(7)\nNon-prototype declaration is an obsolescent feature.\nThe use of function definitions with separate parameter identifier\nand declaration lists (not prototype-format parameter type and\nidentifier declarators) is an obsolescent feature.\n3.9.5\nIncompatible function declarations for %s\nFor two function types to be compatible, both shall specify compatible\nreturn types.  Moreover, the parameter type lists, if both are present,\nshall agree in the number of parameters and in use of the ellipsis\nterminator; corresponding parameters shall have compatible types.  If\none type has a parameter type list and the other type is specified by\na function declarator that is not part of a function definition and\ncontains an empty identifier list, the parameter list shall not have\nan ellipsis terminator and the type of each parameter shall be\ncompatible with they type that results from application of the default\nargument promotions.  If one type has a parameter type list and the\nother is specified by a function definition that contains a (possibly\nempty) identifier list, both shall agree in the number of parameters,\nand the type of each prototype parameter shall be compatible with the\ntype that results from application of the default argument promotions\nto the type of the corresponding identifier.  (For each parameter\ndeclared with function or array type, its type for these comparisons\nis the one that results from conversion to a pointer type.  For each\nparameter declared with qualified type, its type for these comparisons\nis the unqualified version of its declared type.)  There you have it!\n3.5.4.3(15)\nIncompatible function return type for this function.\nFor two function types to be compatible, both shall specify compatible\nreturn types.\n3.5.4.3(15)\nThe number of parameters for function is different from the previous declaration\nThe parameter type lists, if both are present, shall agree in the\nnumber of parameters and in use of the ellipsis terminator.\n3.5.4.3(15)\nIncompatible type for the function parameter\nIf both parameter type lists are present, corresponding\nparameters shall have compatible types.\n3.5.4.3(15)\nFunction %s is redeclared with an incompatible argument type (after default argument promotion), which could lead to undefined run-time behaviour.\nThe redeclaration could cause arguments at a call site to be passed \ninconsistently with what the function implementation expects, and\nparameters would therefore be accessed erroneously when executing the\nfunction body.  Note that a float argument is promoted to a double \nwhen passed (potentially through fp registers) to an unprototyped \nfunction.\n3.5.4.3(15)\nprototype and non-prototype declaration found for %s, ellipsis terminator not allowed\nIf one type has a parameter type list and the other type is specified\nby a function declarator that is not part of a function definition and\ncontains an empty identifier list, the parameter list shall not have\nan ellipsis terminator and the type of each parameter shall be\ncompatible with they type that results from application of the default\nargument promotions.\n3.5.4.3(15)\nprototype and non-prototype declaration found for %s, the type of this parameter is not compatible with the type after applying default argument promotion\nIf one type has a parameter type list and the other type is specified\nby a function declarator that is not part of a function definition and\ncontains an empty identifier list, the type of each parameter shall be\ncompatible with the type that results from application of the default\nargument promotions.\n3.5.4.3(15)\nprototype declaration and non-prototype definition found for %s, the type of this parameter is not compatible with the type after applying default argument promotion\nIf one type has a parameter type list and the other is specified by a\nfunction definition that contains a (possibly empty) identifier list,\nboth shall agree in the number of parameters, and the type of each\nprototype parameter shall be compatible with the type that results\nfrom application of the default argument promotions to the type of the\ncorresponding identifier.\n3.5.4.3(15)\nEmpty declaration specifiers\nStandard C requires at least a storage class specifier, type specifier,\nor a type qualifier in declarations.  'extern int' assumed.\n3.5\nCan't write to the file %s\n1) The output file cannot be opened for writing.\n2) Out of file space.\nDuplicate '%s'\ntypedef, extern, static, auto, register, const, volatile may not\nappear more than once in the same specifier list or qualifier list.\nDuplicate occurrence ignored.\n3.5.1(10) , 3.5.3(5)\nNull input\nThere is nothing to compile.\nIllegal type combination\n3.5.2\nMissing ';' at end of structure / union member declaration\nIn standard C, each member declaration must be terminated by a ';'.  A\nterminating ';' is assumed.\n3.5.2.1\nMissing member name in structure / union\nIn standard C, each member declaration have a member name.  The missing\nmember is assumed to not exist.\n3.5.2.1\nThis variable is initialized twice.\nNeither 'const' or 'volatile' have any effect on function results.\nQualifiers only apply to expressions designating an object that\ncan be altered or examined.\n3.5.3(10)\nAn integer constant expression is required here.\nThe expression that defines the value of an enumeration constant\nshall be an integral constant expression that has a value\nrepresentable as an int.\n3.5.2.2(28)\n(previous declaration of '%s' at line %s in file '%s')\nMust be an integer type greater than zero.\nThe array size must be either a char, signed or unsigned integer or\nan enumerated type with a value greater than zero.\n3.5.4.2\nArray size cannot be a long long.\nArrays with more than 2^32 elements are not yet supported.\nThe array size must be either a char, signed or unsigned integer or\nan enumerated type with a value greater than zero.\n3.5.4.2\nbit-field '%s' width is not an integer constant\nThe expression that specifies the width of a bit-field shall be an\nintegral constant expression.\n3.5.2.1(15)\nbit-field '%s' width is negative\nThe expression that specifies the width of a bit-field shall be\nnon-negative.\n3.5.2.1(15)\nbit-field '%s' type required to be int, unsigned int, or signed int.\nA bit-field shall have type int, unsigned int, or signed int.\n3.5.2.1(30)\nbit-field %s's type not integer.\nNon-scalar type or pointer type to a non-object for increment or decrement operator.\nThe operand of the prefix/postfix increment or decrement operator shall have scalar type; if it is of pointer type, it must point to an object.\n3.3.2.4(37), 3.3.3.1(25)\nAssign value to a function type.\nAn assignment operator shall have a modifiable lvalue as its left operand.\n3.2.2.1(5)\nAssign value to an array.\nAn assignment operator shall have a modifiable lvalue as its left operand.\n3.3.2.4(36), 3.3.3.1(24), 3.2.2.1(5)\nChange value for variable of incomplete type.\nThe operand of increment and decrement operator shall be a modifiable\nscalar lvalue.  An assignment operator shall have a modifiable lvalue\nas its left operand.\n3.3.2.4(36), 3.3.3.1(24), 3.2.2.1(5)\nThe left-hand side of the '.' operator must be an addressable lvalue, when a bit-field is not contained within a unit of 32 bits alignment.\nThis is a restriction in our implementation, which can be worked \naround by always accessing long long bit-fields indirectly (i.e. \nby means of the '->' operator).\nThis expression is not an lvalue.\n3.2.2.1\nModified an rvalue.\n3.2.2.1\nChange value for constant variable.\nThe operand of increment and decrement operators shall be modifiable\nscalar lvalues.  An assignment operator shall have a modifiable lvalue\nas its left operand.\n3.3.2.4(36), 3.3.3.1(24), 3.2.2.1(5)\nChange value for constant field of a struct or union.\nAn assignment operator shall have a modifiable lvalue as its left operand.\n3.3.2.4(36), 3.3.3.1(24), 3.2.2.1(5)\nDereferenced a non-pointer.\nThe operand of the unary * operator shall have pointer type.\n3.3.3.2(39)\nThe operand of the unary + or - operator shall have arithmetic type.\n3.3.3.3(6)\nThe operand of the unary ~ operator shall have integral type.\n3.3.3.3(6)\nThe operand of the unary ! operator shall have scalar type.\n3.3.3.3(6)\nConstants must have arithmetic type.\n3.1.3\nBad type name for cast operator\nThe type name for the cast operator should either be void or a\nqualified or unqualified scalar type.\n3.3.4(22)\nImproper cast of non-scalar type expression.\nThe operand for the cast operator shall be of scalar type.\n3.3.4(23)\nCast a pointer into a non-integral type.\nA pointer may be converted to an integral type.\n3.3.4(31)\nCast a non-integral type into a pointer.\nAn integral type may be converted to a pointer.\n3.3.4(31)\nDuplicate member '%s'\nTwo members of a struct may not have the same name.\n3.1.2.2(7,25)\nInvalid constant expression.\nConstant expressions shall not contain assignment, increment, decrement,\nfunction-call, or comma operators, except when they are contained within\nthe operand of the sizeof operator.\n3.4(9)\nConstant expressions must be derived from a constant value or a constant\nvariable.\n3.4\nDangerous operand of '&'.\nThe operand of the unary & operator shall be either a function\ndesignator or an lvalue that designates an object that is not a\nbit-field and is not declared with the register storage-class\nspecifier.  This operand is NOT an lvalue, but we let it pass.\nNote that a segmentation error with possible core dump will result\nwhen the resulting address does not denote a valid (declared)\nstorage location.  This feature will be discontinued in future\nreleases of the compiler!\n3.3.3.2(36)\nUnacceptable operand of '&'.\nThe operand of the unary & operator shall be either a function\ndesignator or an lvalue that designates an object that is not a\nbit-field and is not declared with the register storage-class\nspecifier.\n3.3.3.2(36)\n'&' before array or function; ignored\nUnacceptable operand of sizeof operator.\nThe sizeof operator shall not be applied to an expression that has\nfunction type or an incomplete type, to the parenthesized name of such\na type, or to an lvalue that designates a bit-field object.\n3.3.3.4\nUnacceptable operand of a multiplicative operator.\nEach of the operands of a multiplicative operator shall have arithmetic type.\n3.3.5(18)\nUnacceptable operand of the remainder operator\nEach of the operands of the remainder (%) operator shall have integral type.\n3.3.5(18)\nUnacceptable operand of '+'.\nFor the + operator, either both operands shall have arithmetic type, or\none operand shall be a pointer to an object type and the other shall\nhave integral type.\n3.3.6(39)\nUnacceptable operand of '-'.\nFor the subtraction operator, one of the following shall hold: both operands\nhave arithmetic type; operands are pointers to qualified or unqualified\nversions of compatible object types; or the left operand is a pointer\nto an object type and the right operand has integral type.\n3.3.6(39)\nUnacceptable operand of shift operator.\nEach of the operands of bitwise shift operators shall have integral type.\n3.3.7(9)\nUnacceptable operand of relational operator.\nFor relational operators, one of the following shall hold: both\noperands have arithmetic type; both operands are pointers to qualified\nor unqualified versions of compatible object types; or both operands\nare pointers to qualified or unqualified versions of compatible\nincomplete types.\n3.3.8(32)\nUnacceptable operand of == or !=\nFor the == or != operator, one of the following shall hold: both operands\nare pointers to qualified or unqualified versions of compatible types; one\noperand is a pointer to an object or incomplete type and the other is a\npointer to a qualified or unqualified version of void; or one operand is\na pointer and the other is a null pointer constant.\n3.3.9(21)\nUnacceptable operand of &.\nEach of the operands shall have integral type.\n3.3.10(7)\nUnacceptable operand of ^.\nEach of the operands shall have integral type.\n3.3.11(18)\nUnacceptable operand of |.\nEach of the operands shall have integral type.\n3.3.12(30)\nUnacceptable operand of &&.\nEach of the operands shall have scalar type.\n3.3.13(7)\nUnacceptable operand of ||.\nEach of the operands shall have scalar type.\n3.3.14(20)\nUnacceptable operand of conditional operator.\nThe first operand of conditional operator shall have scalar type.  One\nof the following shall hold for the second and third operands:\nboth operands have arithmetic type; both operands have compatible\nstructure or union types; both operands have void type; both operands\nare pointers to qualified or unqualified versions of compatible types;\none operand is a pointer and the other is a null pointer constant; or\none operand is pointer to an object or incomplete type and the other\nis a pointer to a qualified or unqualified version of void.\n3.3.15\nDuplicate label '%s'\nA label name can only occur once in a function.\n3.1.2.1(25)\nDivision by zero.\n3.3.5\nSubscripting a non-array.\n3.3.2.1\nSubscripting an array of incomplete type which is not an object type.\nThe element of the array shall have an object type.\n3.3.2.1\nShould only subscript an array with an integral expression\n3.3.2.1\nSubscripting an unbounded array\n3.3.2.1\nArray index out of range\n3.3.2.1\nSelector requires struct/union pointer as left hand side\nIn K&R mode the expression is implicitly converted to the '.' selector\nfor a struct/union left-hand side.\n3.3.2.3\nSelector requires struct/union as left hand side\nIn K&R mode the expression is implicitly converted to the '->' selector\nfor a struct/union pointer left-hand side.\n3.3.2.3\nmember of structure or union required\n3.3.2.3\ntypes have different qualifier specifications\nFor two qualified types to be compatible, both shall have the\nidentically qualified version of a compatible type; qualified\nand unqualified versions of a type are distinct types.  For two\ntypes to be compatible their types must be the same.\n3.5.3(26)\nIncompatible array type due to different array size\nFor two array types to be compatible, both shall have compatible element\ntypes; if both size specifiers are present, they shall have the\nsame value.\n3.5.4.2(11)\nIncompatible array type due to incompatible element type\nFor two array types to be compatible, both shall have compatible element\ntypes.\n3.5.4.2(11)\nIncompatible pointer type assignment\nThe type pointed to by the left-hand side of simple assignment\nstatement is incompatible with the type pointed to by the right-hand side.\n3.3.16.1, 3.5.4.1(21)\nIncompatible base type of pointer type\nK&R feature.\nType %s of %s is incompatible with type %s of %s\nIncompatible types can be resolved by casting or by other means.\n3.3.16.1\nillegal combination of pointer and integer\nAssigning an integral expression to a pointer is a bad practice.\nType for %s is incompatible with %s\nIncompatible types can be resolved by casting or by other means.\n3.1.2.6\nBad operand type for += or -=\n3.3.16.2(26)\nA case or default label appears outside a switch statement\nA case or default label shall appear only in a switch statement.\n3.6.1\nThe controlling expression of the if statement is not scalar type\nThe controlling expression of an if statement shall have scalar type.\n3.6.4.1\nThe controlling expression of switch statement is not integral type\nThe controlling expression of an switch statement shall have integral type.\n3.6.4.2(20)\nThe case label is not an integral constant expression\nThe case label shall be an integral constant expression.\n3.6.4.2(22)\nDuplicate case label in the same switch statement\nNo two of the case constant expressions in the same switch statement\nshall have the same value after conversion.\n3.6.4.2(22)\nMore than one default label in the same switch statement\nThere may be at most one default label in a switch statement.\n3.6.4.2(23)\nThe controlling expression of the iteration statement is not scalar\ntype\nThe controlling expression of a iteration statement shall have scalar\ntype.\n3.6.5.1\nlabel '%s' used, but not defined\nThe identifier in a goto statement shall name a label located\nsomewhere in the enclosing function.\n3.6.6.1\nA continue statement shall appear only in or as a loop body\n3.6.6.2\nA break statement shall appear only in or as a switch body or loop body\n3.6.6.3\nA return statement with an expression should not appear\nin a function '%s', whose return type is void\n3.6.6.4(24)\nA return statement without an expression appears in a\nfunction '%s', whose return type is not void\nIf a return statement without an expression is executed, and the value\nof the function call is used by the caller, the behavior is undefined.\n3.6.6.4(33)\nInternal Error: statement stack underflow\nLong double not supported; double assumed.\nLong float not standard; double assumed.\nOnly 'register' allowed in parameter declaration\nThe only storage-class specifier that shall occur in a parameter\ndeclaration is 'register'; illegal storage class ignored.\n3.5.4.3(25)\nName(s) without types in a function declaration\nAn old-style function declaration is not allowed to have names\nin the parameter list; useless names ignored\n3.5.4.3(26)\nFunctions cannot return functions\n3.7.1(33), 3.3.2.2\nFunctions cannot return a non-object type\n3.3.2.2\nenum declaration must contain enum literals\nAlthough structs or unions may delay the declaration of their members,\na similar construction with enum does not exist and is not necessary,\nas there can be no mutual dependencies between the declaration of an\nenumerated type and any other type.\n3.5.2.3(27)\nRegister qualification has no effect for this type of object\nRegister declarations for array, struct, and function types have\nno effect.\n3.5.1(16), 3.5.1(19)\nFunctions cannot be declared 'register'\nThe declaration of an identifier for a function that has block\nscope shall have no explicit storage-class specifier other than\n'extern'.\n3.5.1(19)\n'%s' cannot be initialized\nThe type of the entity to be initialized shall be an object type\nor an array of unknown size.\n3.5.7(32)\nCannot initialize 'extern' variable '%s' within a function\nIf the declaration of an identifier has block scope, and the\nidentifier has 'extern' or 'static' linkage, the declaration\nshall have no initializer for the identifier; initialization\nallowed anyway.\n3.5.7(35)\ninitializing an 'extern' is an ANSI C extension\nconflicting declarations for '%s'\n'static' and 'extern' declarations conflict.  Which is meant?\n3.1.2.2(15), 3.1.2.2(27)\nToo many initial values for '%s'\n3.5.7(1)\nincompatible types in initialization\n3.3.16(35)\nredefinition of '%s'; previous definition at line %s in file '%s'\nIdentifier redeclared in the same scope/block.\n3.1.2.3\nbit-fields as members of a union are an ANSI C invention.\nstorage size for '%s' isn't known\ntype mismatch in initialization\nMissing braces in a union initialization or illegally formed\ninitialization.\n3.5.7(5)\nunion '%s' only allowed one initializer for the first member\n3.5.7(5)\nwidth of '%s' exceeds its type\nthe specified bitfield width is too large to be contained within a\nbitfield type.\nstructure has no member named '%s'\nThis is allowed for compatibility with AT&T pcc-based compilers.\nReference of an expression of void type or an incomplete type.\n3.2.2.1\nelement size of an array shall not be zero\n3.2.2.5(25)\ninvalid combination of type specifiers\nAlthough order is unimportant, not all type specifiers can occur together.\n3.5.2\ndeclaration must at least declare an identifier, tag, or the member of an enumeration\n3.5(16)\nat most one storage class may be given in the declaration\nDuplicate occurrence ignored.\n3.5.1(10)\nsize of function's return type is zero\nThe return type of a function must be void or an object type other than array.\n3.7.1(33)\nExpecting an integral return type from the main function\nidentifier missing from parameter declaration\nPrototypes for function definitions require identifiers in parameter\ndeclarations.\n3.7.1(4)\nonly 'register' allowed for storage class for parameters\nThe declarations in the declaration list shall contain no storage class\nother than 'register', and no initializations.\n3.7.1(10)\nparameters declarations can not have initializations\n3.7.1(10)\nonly one instance of 'void' allowed in the parameter list\n'void' must occur by itself (specifying that the function has no parameters).\n3.5.4.3(1)\n%s must have function type\n1) An argument list must be explicitly present in the declarator; it cannot\n   be inherited from a typedef (3.5.4.3).\n2) The declarator is not a function.\n3.7.1(30)\nIllegal hexadecimal constant\nYou have no digits after the 0x or 0X.  0x0 assumed.\n3.1.3.2\nvalue overflows its type in this context.  Value is set to be '%s'!\n3.2.1.4\nvalue is outside range representable for type '%s'\nmissing member name\nK&R mode permits a missing member name; otherwise, only bitfields can omit\nthe member name.\n3.5.2.1(10)\nuseless keyword or type name in declaration\nType was ignored.\n'%s' declared within and is limited to this function prototype\nPossible program error, since parameter type checking will always fail\nunless the type declaration is visible to the caller.\n3.1.2.1(35)\nExtra spaces within operator, %s assumed\nIn ANSI C, the compound assignment operator cannot have embedded\nwhite space characters.\n3.1.5\nmissing size for array '%s'\nIncomplete types permitted for identifiers with internal or\nexternal linkage, but not automatic linkage.\n3.1.2.5(10)\ncan't jump into (from outside of) the body of a 'try' or into either type of handler\n'%s' missing, please #include excpt.h\nexcpt.h required to declare exception statements, intrinsics or compiler\nruntime names.\nlocal function declarations cannot be 'static'\nA function declaration can only contain the storage-class 'static'\nif it is at file scope.  Declaration made 'extern'.\n3.5.1(19)\nstatic function '%s' declared and referenced, but not defined.\nIf an identifier declared with internal linkage is used in an\nexpression (other than as a part of the operand of a sizeof\noperator), there shall be exactly one external definition for\nthe identifier in the translation unit.\n3.7(12)\npragma argument '%s' must be declared prior to being used in a pragma\nPragma name ignored.\nPragma not supported\n'%s' not enabled as intrinsic\nIt may have already appeared in a function pragma, or never occurred in\nan intrinsic pragma.\n'%s' is already enabled as an intrinsic\nweak definition for '%s' is later redefined; pragma weak ignored.\ndefinition of primary name '%s' not found; pragma weak ignored.\ndefinition of secondary name '%s' not found; pragma weak ignored.\nprimary name '%s' is declared as a common or external, and is not defined \nwith initial value within this file; pragma weak ignored.\nuseless '%s' storage class ignored\narray of functions not allowed\nThe element type must be an object type representing a region\nof data storage which can represent values.\n3.1.2.5(23)\narray of voids not allowed\nThe element type must be an object type representing a region\nof data storage which can represent values.\n3.1.2.5(23)\nargument for pragma pack must be an integer constant; pragma ignored\n'%s' has wrong tag type.\nIdentifier redeclared in the same scope/block.\n3.1.2.3\nmissing dimension bound\nFor multidimensional arrays, the constant bounds of the array may be\nomitted only for the first member of the sequence.\n3.1.2.5(23)\nInternal error in parameters to function substr; loc: '%s'; len: '%s'.\nInternal error in parameters to function insertstr; indx: '%s'.\nInternal error in function get_tag_name; input is a non-tagged type.\nInternal error in function gen_type_str -- not a type tree '%s'\nCannot open file '%s'\nPrototype should be moved after tag or a typedef declaration.\nPlease look for comments in the extracted header file.\nThe extracted header file includes prototypes for static functions,\nwhich should be removed, if you wish to include the header in a source file\nother than the originator.\nANSI C requires formal parameter before \"...\"\nThis extension is meant to be used for compatibility with varargs.h\n3.5.4.3(35)\nsyntax error: \"&...\" invalid\nextension used to access \"...\" formal arguments.\nfunction '%s' initialized like a variable\nThe type of entity to be initialized shall be an object type or an\narray of unknown size.\n3.5.7(31)\ninitializer not an array aggregate\nThe initializer for an object that has aggregate type shall be a\nbrace-enclosed list of initializers for the members of the aggregate,\nwritten in increasing subscript or member order.\n3.5.7(20)\n'%s' type is incomplete; cannot initialize\nWas the struct ever defined?\n3.5.7.(31)\n'%s' is not standard ANSI.\nThis keyword/type is not defined in strict ANSI mode.\n3.1.1\nnot a legal asm string\nThe first operand of an asm string should be, after argument substitution,\na legal assembly string.\nThe -float option will be ignored in ANSI mode.\nThe -float option is ignored, since otherwise program semantics would\nviolate the ANSI standard.  In particular, fp constants are always\n'double' with ANSI-C, while with -float the type of fp constants will\ndepend on the context and may be 'float'.\nANSI C support unavailable with C compiler bundled with RISC/os\nThe C compiler bundled with RISC/os does not support ANSI C.  ANSI\nC support requires a separate license.\nIgnored invalid warning number(s) in -woff option, %s%s !\nWarning numbers must be in the range %s to %s.\nThe set of warning numbers in cfe is disjoint from the set of warning numbers\nin accom, since accom warnings cannot be mapped one-to-one to cfe warnings.\n'%s' not handled as an intrinsic due to incompatible argument types .\n'__unalign' only qualifies pointers\n'__unalign' indicates the object pointed at by pointer is unaligned (e.g.,\nint * __unalign p).  This is an extension to ANSI C and like 'volatile'\nand 'const' can follow the '*' in pointer declarations, but unlike both\ncannot qualify a base type.\nindex expression is an anachronism\nANSI C++ doesn't support array index expressions in delete.\n5.3.4\nmember cannot be of function or incomplete type.\n3.5.2.1(12)\nIllegal lint option, '%s', is ignored.\ncannot open header message buffer file\ncannot write header message buffer file\ncannot read header message buffer file\ncannot seek in header message buffer file\nstruct/union/enum '%s' is used, but not defined\nstatic '%s' unused\nnonportable character comparison (chars may be signed or unsigned)\nredundant comparison of unsigned with constant expression\nredundant statement, control flow cannot reach this statement\n'%s' may be used before set\nfunction parameter '%s' is not used in function '%s'\n'%s' can be const qualified, since it is not set within its lifetime.\n'%s' is not used in function '%s'\n'%s' set but unused in function '%s'\ncontrol may fall through %s statement\nfunction '%s' has return(e); and return;\nfunction '%s' may return random value to place of invocation %s\nlabel without goto: '%s'\nwidth of %s constant is smaller than size of type (%s)\nexplicit conversion from '%s' to '%s' %s\nimplicit conversion from '%s' to '%s' %s\n'%s' may be indistinguishable from '%s' due to internal name truncation\nPromoted formal parameter and promoted argument have incompatible types\nNo prototype for the definition of '%s' %s\nReferences to '%s' are substituted by its literal initializer\n       (as included in %s)\n==============\nunsupported language linkage\nstring-literal specifies an unsupported linkage\n7.4(1)\nNo prototype for the call to %s\nTo achieve better type-checking, there should be a full prototype for\nthe function being called.\n3.5.4.3\n'inline' only applies to function declarations\nleave statment can occur only within try body\nMicrosoft extension\nUse of a Microsoft extension detected without usage of the\ncompiler option -msft.\nNo parameter mentioned\nA file with no declarations or definitions is accepted as an extension to ANSI C\nThe translation unit must contain at least one external definition.\n3.7\nIncompatible signed and unsigned version of a type\nYacc initialization error\nInternal error: yacc cannot initialize itself.\nThe cfe option %s may not be in future releases.  We suggest that you not use this option!\nIncompatible char and unsigned char versions of a type\nLshift with undefined behaviour.\nLshift with a negative right operand, or a right operand that is greater \nthan or equal to the width in bits of the promoted left operand, results \nin undefined behaviour.\n3.3.7(11)\nuseless type name in declaration, possibly a semicolon is missing.\nType was ignored.\nconstant initializer expression is invalid (refers to automatic variables).\nAll the expressions in an initializer for an object that has static storage\nduration or in the initializer list for an object that has aggregate or\nunion type shall be constant expressions.  Otherwise, unexpected results \nmay occur.\n3.5.7(32) and 3.4\ninvalid explicit or implicit conversion of an address constant to an integral value in a constant initializing expression.\nAn address constant in a constant initializing expression can neither \ninitialize a bit-field nor be directly or indirectly converted to an \nintegral type of size different from an address type.\n6.4\n"
  },
  {
    "path": "tools/mario_anims_converter.py",
    "content": "#!/usr/bin/env python3\nimport re\nimport os\nimport traceback\nimport sys\n\nnum_headers = 0\nitems = []\nlen_mapping = {}\norder_mapping = {}\nline_number_mapping = {}\n\ndef raise_error(filename, lineindex, msg):\n    raise SyntaxError(\"Error in \" + filename + \":\" + str(line_number_mapping[lineindex] + 1) + \": \" + msg)\n\ndef parse_struct(filename, lines, lineindex, name):\n    global items, order_mapping\n    lineindex += 1\n    if lineindex + 9 >= len(lines):\n        raise_error(filename, lineindex, \"struct Animation must be 11 lines\")\n    v1 = int(lines[lineindex + 0].rstrip(\",\"), 0)\n    v2 = int(lines[lineindex + 1].rstrip(\",\"), 0)\n    v3 = int(lines[lineindex + 2].rstrip(\",\"), 0)\n    v4 = int(lines[lineindex + 3].rstrip(\",\"), 0)\n    v5 = int(lines[lineindex + 4].rstrip(\",\"), 0)\n    values = lines[lineindex + 6].rstrip(\",\")\n    indices = lines[lineindex + 7].rstrip(\",\")\n    items.append((\"header\", name, (v1, v2, v3, v4, v5, values, indices)))\n    if lines[lineindex + 9] != \"};\":\n        raise_error(filename, lineindex + 9, \"Expected \\\"};\\\" but got \" + lines[lineindex + 9])\n    order_mapping[name] = len(items)\n    lineindex += 10\n    return lineindex\n\ndef parse_array(filename, lines, lineindex, name, is_indices):\n    global items, len_mapping, order_mapping\n    lineindex += 1\n    values = []\n    while lineindex < len(lines) and lines[lineindex] != \"};\":\n        line = lines[lineindex].rstrip(\",\")\n        if line:\n            values.extend(line.split(\",\"))\n        lineindex += 1\n    if lineindex >= len(lines):\n        raise_error(filename, lineindex, \"Expected \\\"};\\\" but reached end of file\")\n    items.append((\"array\", name, (is_indices, values)))\n    len_mapping[name] = len(values)\n    order_mapping[name] = len(items)\n    lineindex += 1\n    return lineindex\n\ndef parse_file(filename, lines):\n    global num_headers\n    lineindex = 0\n    while lineindex < len(lines):\n        line = lines[lineindex]\n        for prefix in [\"static \", \"const \"]:\n            if line.startswith(prefix):\n                line = line[len(prefix):]\n        lines[lineindex] = line\n\n        is_struct = line.startswith(\"struct Animation \") and line.endswith(\"[] = {\")\n        is_indices = line.startswith(\"u16 \") and line.endswith(\"[] = {\")\n        is_values = line.startswith(\"s16 \") and line.endswith(\"[] = {\")\n        if not is_struct and not is_indices and not is_values:\n            raise_error(filename, lineindex, \"\\\"\" + line + \"\\\" does not follow the pattern \\\"static const struct Animation anim_x[] = {\\\", \\\"static const u16 anim_x_indices[] = {\\\" or \\\"static const s16 anim_x_values[] = {\\\"\")\n\n        if is_struct:\n            name = lines[lineindex][len(\"struct Animation \"):-6]\n            lineindex = parse_struct(filename, lines, lineindex, name)\n            num_headers += 1\n        else:\n            name = lines[lineindex][len(\"s16 \"):-6]\n            lineindex = parse_array(filename, lines, lineindex, name, is_indices)\n\ntry:\n    files = os.listdir(\"assets/anims\")\n    files.sort()\n\n    for filename in files:\n        if filename.endswith(\".inc.c\"):\n            lines = []\n            with open(\"assets/anims/\" + filename) as f:\n                for i, line in enumerate(f):\n                    line = re.sub(r\"/\\*.*?\\*/\", \"\", line)\n                    if \"/*\" in line:\n                        line_number_mapping[-1] = i\n                        raise_error(filename, -1, \"Multiline comments are not supported\")\n                    line = line.split(\"//\", 1)[0].strip()\n                    if line:\n                        line_number_mapping[len(lines)] = i\n                        lines.append(line)\n            if lines:\n                parse_file(filename, lines)\n\n    structdef = [\"u32 numEntries;\", \"const struct Animation *addrPlaceholder;\", \"struct OffsetSizePair entries[\" + str(num_headers) + \"];\"]\n    structobj = [str(num_headers) + \",\", \"NULL,\",\"{\"]\n\n    for item in items:\n        type, name, obj = item\n        if type == \"header\":\n            v1, v2, v3, v4, v5, values, indices = obj\n            if order_mapping[indices] < order_mapping[name]:\n                raise SyntaxError(\"Error: Animation struct must be written before indices array for \" + name)\n            if order_mapping[values] < order_mapping[indices]:\n                raise SyntaxError(\"Error: values array must be written after indices array for \" + name)\n            values_num_values = len_mapping[values]\n            offset_to_struct = \"offsetof(struct MarioAnimsObj, \" + name + \")\"\n            offset_to_end = \"offsetof(struct MarioAnimsObj, \" + values + \") + sizeof(gMarioAnims.\" + values + \")\"\n            structobj.append(\"{\" + offset_to_struct + \", \" + offset_to_end + \" - \" + offset_to_struct + \"},\")\n    structobj.append(\"},\")\n\n    for item in items:\n        type, name, obj = item\n        if type == \"header\":\n            v1, v2, v3, v4, v5, values, indices = obj\n            indices_len = len_mapping[indices] // 6 - 1\n            values_num_values = len_mapping[values]\n            offset_to_struct = \"offsetof(struct MarioAnimsObj, \" + name + \")\"\n            offset_to_end = \"offsetof(struct MarioAnimsObj, \" + values + \") + sizeof(gMarioAnims.\" + values + \")\"\n            structdef.append(\"struct Animation \" + name + \";\")\n            structobj.append(\"{\" + \", \".join([\n                str(v1),\n                str(v2),\n                str(v3),\n                str(v4),\n                str(v5),\n                str(indices_len),\n                \"(const s16 *)(offsetof(struct MarioAnimsObj, \" + values + \") - \" + offset_to_struct + \")\",\n                \"(const u16 *)(offsetof(struct MarioAnimsObj, \" + indices + \") - \" + offset_to_struct + \")\",\n                offset_to_end + \" - \" + offset_to_struct\n            ]) + \"},\")\n        else:\n            is_indices, arr = obj\n            type = \"u16\" if is_indices else \"s16\"\n            structdef.append(\"{} {}[{}];\".format(type, name, len(arr)))\n            structobj.append(\"{\" + \",\".join(arr) + \"},\")\n\n    print(\"#include \\\"game/memory.h\\\"\")\n    print(\"#include <stddef.h>\")\n    print(\"\")\n\n    print(\"const struct MarioAnimsObj {\")\n    for s in structdef:\n        print(s)\n    print(\"} gMarioAnims = {\")\n    for s in structobj:\n        print(s)\n    print(\"};\")\n\nexcept Exception as e:\n    note = \"NOTE! The mario animation C files are not processed by a normal C compiler, but by the script in tools/mario_anims_converter.py. The format is much more strict than normal C, so please follow the syntax of existing files.\\n\"\n    if e is SyntaxError:\n        e.msg = note + e.msg\n    else:\n        print(note, file=sys.stderr)\n    traceback.print_exc()\n    sys.exit(1)\n"
  },
  {
    "path": "tools/patch_elf_32bit.c",
    "content": "#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <stdint.h>\n\n#define ARMAG  \"!<arch>\\n\"\n#define SARMAG 8\n\n/* from elf.h */\n\n/* Type for a 16-bit quantity.  */\ntypedef uint16_t Elf32_Half;\n\n/* Types for signed and unsigned 32-bit quantities.  */\ntypedef uint32_t Elf32_Word;\n\n/* Type of addresses.  */\ntypedef uint32_t Elf32_Addr;\n\n/* Type of file offsets.  */\ntypedef uint32_t Elf32_Off;\n\n/* The ELF file header.  This appears at the start of every ELF file.  */\n\n#define EI_NIDENT (16)\n\ntypedef struct\n{\n  unsigned char\te_ident[EI_NIDENT];\t/* Magic number and other info */\n  Elf32_Half\te_type;\t\t\t/* Object file type */\n  Elf32_Half\te_machine;\t\t/* Architecture */\n  Elf32_Word\te_version;\t\t/* Object file version */\n  Elf32_Addr\te_entry;\t\t/* Entry point virtual address */\n  Elf32_Off\te_phoff;\t\t/* Program header table file offset */\n  Elf32_Off\te_shoff;\t\t/* Section header table file offset */\n  Elf32_Word\te_flags;\t\t/* Processor-specific flags */\n  Elf32_Half\te_ehsize;\t\t/* ELF header size in bytes */\n  Elf32_Half\te_phentsize;\t\t/* Program header table entry size */\n  Elf32_Half\te_phnum;\t\t/* Program header table entry count */\n  Elf32_Half\te_shentsize;\t\t/* Section header table entry size */\n  Elf32_Half\te_shnum;\t\t/* Section header table entry count */\n  Elf32_Half\te_shstrndx;\t\t/* Section header string table index */\n} Elf32_Ehdr;\n\n/* Conglomeration of the identification bytes, for easy testing as a word.  */\n#define\tELFMAG\t\t\"\\177ELF\"\n#define\tSELFMAG\t\t4\n\n#define EI_CLASS\t4\t\t/* File class byte index */\n#define ELFCLASS32\t1\t\t/* 32-bit objects */\n\n#define EI_DATA\t\t5\t\t/* Data encoding byte index */\n#define ELFDATA2MSB\t2\t\t/* 2's complement, big endian */\n\n/* end from elf.h */\n\n// This file will find all mips3 object files in an ar archive and set the ABI flags to O32\n// this allows gcc to link them with the mips2 object files.\n// Irix CC doesn't set the elf e_flags properly.\n\n// the AR file is structured as followed\n//\"!<arch>\" followed by 0x0A (linefeed) 8 characters\n// then a file header that follows the following structure\n// everything is represented using space padded characters\n// the last two characters are alwos 0x60 0x0A\n// then come the file contents\n// you can find the location of the next header by adding file_size_in_bytes (after parsing)\n// all file headers start at an even offset so if the file size in bytes is odd you have to add 1\n// the first two \"files\" are special.  One is a symbol table with a pointer to the header of the file\n// contaning the symbol the other is an extended list of filenames\nstruct ar_header {\n    char identifier[16];\n    char file_modification_timestamp[12];\n    char owner_id[6];\n    char group_id[6];\n    char file_mode[8];\n    char file_size_in_bytes[10];\n    char ending[2];\n};\n\n//These constants found by inspecting output of objdump\n#define FLAGS_MIPS3 0x20\n#define FLAGS_O32ABI 0x100000 \n\nint fix_mips_elf(FILE *f, size_t filesize)\n{\n    Elf32_Ehdr hdr;\n    if (filesize < sizeof(hdr) || (1 != fread(&hdr, sizeof(hdr), 1, f))) {\n        printf(\"Failed to read ELF header\\n\");\n        return -1;\n    }\n\n    if (strncmp((const char *) hdr.e_ident, ELFMAG, SELFMAG) == 0) {\n        // found an ELF file.\n        if (hdr.e_ident[EI_CLASS] != ELFCLASS32 || hdr.e_ident[EI_DATA] != ELFDATA2MSB) {\n            printf(\"Expected 32bit big endian object files\\n\");\n            return -1;\n        }\n\n        if ((hdr.e_flags & 0xFF) == FLAGS_MIPS3 && (hdr.e_flags & FLAGS_O32ABI) == 0) {\n            hdr.e_flags |= FLAGS_O32ABI;\n            fseek(f, -(long)sizeof(hdr), SEEK_CUR);\n            if (1 != fwrite(&hdr, sizeof(hdr), 1, f)) {\n                printf(\"Failed to write back ELF header after patching.\\n\");\n                return -1;\n            }\n        }\n    }\n    return 0;\n}\n\nint fix_mips_ar(FILE *f)\n{\n    struct ar_header current_header;\n    fseek(f, 0x8, SEEK_SET); // skip header, this is safe enough given that we check to make sure the\n                             // file header is valid\n\n    while (1 == fread(&current_header, sizeof(current_header), 1, f)) {\n        if (current_header.ending[0] != 0x60 && current_header.ending[1] != 0x0A) {\n            printf(\"Expected file header\\n\");\n            return -1;\n        }\n        size_t filesize = atoi(current_header.file_size_in_bytes);\n        if (fix_mips_elf(f, filesize)) {\n            return -1;\n        }\n        if (filesize % 2 == 1)\n            filesize++;\n        fseek(f, filesize - sizeof(Elf32_Ehdr), SEEK_CUR);\n    }\n    return 0;\n}\n\nint main(int argc, char **argv) {\n    FILE *f = fopen(argv[1], \"r+b\");\n    uint8_t magic[8];\n    int status = 0;\n\n    if (f == NULL) {\n        printf(\"Failed to open file! %s\\n\", argv[1]);\n        return -1;\n    }\n    if (1 != fread(&magic, sizeof(magic), 1, f)) {\n        printf(\"Failed to read file magic\\n\");\n        return -1;\n    }\n    rewind(f);\n    if (!memcmp(ARMAG, magic, SARMAG)) {\n        status = fix_mips_ar(f);\n    } else if (!memcmp(ELFMAG, magic, SELFMAG)) {\n        fseek(f, 0, SEEK_END);\n        size_t filesize = ftell(f);\n        rewind(f);\n        status = fix_mips_elf(f, filesize);\n    } else {\n        printf(\"Unknown file magic: %02x%02x%02X%02X\\n\", magic[0], magic[1], magic[2], magic[3]);\n        status = -1;\n    }\n    fclose(f);\n    return status;\n}\n"
  },
  {
    "path": "tools/patch_libmalloc.py",
    "content": "#!/usr/bin/env python\n#\n# Patches the malloc() function in libmalloc.so to allocate more than the\n# specified number of bytes. This is needed to work around issues with the\n# compiler occasionally crashing.\n#\n# This script replaces the \"move a1, a0\" (00 80 28 25) instruction with\n# \"addiu a1, a0, n\" (24 85 nn nn), which causes the malloc function to add n to\n# the size parameter that was passed in.\n\nimport hashlib\nimport os.path\nimport sys\n\n# file to patch\nfilename = 'tools/ido5.3_compiler/lib/libmalloc.so'\n# Expected (unpatched) hash of file\nfilehash = 'adde672b5d79b52ca3cce9a47c7cb648'\n# location in file to patch\naddress = 0xAB4\n\n# Get parameter\nif len(sys.argv) != 2:\n    print('Usage: ' + sys.argv[0] + ' n\\n    where n is the number of extra bytes to allocate in malloc()')\n    exit(1)\nn = int(sys.argv[1])\n\n# Original instruction \"move a1, a0\"\noldinsn = bytearray([0x00, 0x80, 0x28, 0x25])\n\n# New instruction \"addiu a1, a0, n\"\nnewinsn = bytearray([0x24, 0x85, (n >> 8) & 0xFF, (n & 0xFF)])\n\n# Patch the file\ntry:\n    with open(filename, 'rb+') as f:\n        # Read file contents\n        contents = bytearray(f.read())\n\n        # Unpatch the file by restoring original instruction\n        contents[address:address+4] = oldinsn\n\n        # Verify the (unpatched) hash of the file\n        md5 = hashlib.md5()\n        md5.update(contents)\n        if md5.hexdigest() != filehash:\n            print('Error: ' + filename + ' does not appear to be the correct version.')\n            exit(1)\n\n        # Patch the file\n        if n != 0:\n            contents[address:address+4] = newinsn\n\n        # Write file\n        f.seek(0, os.SEEK_SET)\n        f.write(contents)\nexcept IOError as e:\n    print('Error: Could not open library file for writing: ' + str(e))\n"
  },
  {
    "path": "tools/rasm2armips.py",
    "content": "#!/usr/bin/env python\n\n# Copyright (c) 2020 queueRAM\n# \n# Permission is hereby granted, free of charge, to any person obtaining a copy\n# of this software and associated documentation files (the \"Software\"), to deal\n# in the Software without restriction, including without limitation the rights\n# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the Software is\n# furnished to do so, subject to the following conditions:\n# \n# The above copyright notice and this permission notice shall be included in\n# all copies or substantial portions of the Software.\n# \n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n# SOFTWARE.\n\nimport argparse\nimport re\nimport sys\n\ndef read_file(filepath):\n    with open(filepath) as f:\n        lines = f.readlines()\n        split_lines = [re.split(r'[ ,]+', l.strip().replace('$', '')) for l in lines]\n        return split_lines\n\n# jumps and branches with named targets\njumps = ['jal', 'j']\nbranches = ['beq', 'bgez', 'bgtz', 'blez', 'bltz', 'bne']\njump_branches = jumps + branches\n# jumps and branches with delay slots\nhas_delay_slot = jump_branches + ['jr']\n\ndef decode_references(instructions):\n    refs = []\n    for ins in instructions:\n        if ins[3] in jump_branches:\n            target = int(ins[-1], 0)\n            if target not in refs:\n                refs.append(target)\n    return refs\n\ndef reassemble(args, instructions, refs):\n    print('.rsp')\n    print('\\n.create DATA_FILE, 0x%04X' % 0x0000)\n    print('\\n.close // DATA_FILE\\n')\n    print('.create CODE_FILE, 0x%08X\\n' % args.base)\n    delay_slot = False\n    for ins in instructions:\n        addr = int(ins[0], 0)\n        if (addr & 0xFFFF) in refs:\n            print('%s_%08x:' % (args.name, addr))\n        sys.stdout.write(' ' * args.indent)\n        if delay_slot:\n            sys.stdout.write(' ')\n            delay_slot = False\n        if ins[3] in jumps:\n            target = int(ins[-1], 0) | (args.base & 0xFFFF0000)\n            ins[-1] = '%s_%08x' % (args.name, target)\n        elif ins[3] in branches:\n            if ins[3][-1] =='z' and ins[5] == 'zero':\n                del ins[5] # remove 'zero' operand from branch\n            target = (int(ins[-1], 0) & 0x1FFF) + (args.base & 0xFFFF0000)\n            ins[-1] = '%s_%08x' % (args.name, target)\n        elif ins[3] == 'vsar': # fixup last operand of vsar\n            reg_map = {'ACC_H': 0, 'ACC_M': 1, 'ACC_L': 2}\n            reg = ins[4].split(r'[')[0]\n            num = reg_map[ins[-1]]\n            ins[-1] = '%s[%d]' % (reg, num)\n        if ins[3] in has_delay_slot:\n            delay_slot = True\n        if len(ins) > 4: # with args\n            print('%-5s %s' % (ins[3], ', '.join(ins[4:])))\n        else:\n            print('%s' % ins[3])\n    print('\\n.close // CODE_FILE')\n\ndef main():\n    parser = argparse.ArgumentParser()\n    parser.add_argument('input_file', help=\"input assembly file generated from `rasm2 -D -e -a rsp -B -o 0x04001000 -f`\")\n    parser.add_argument('-b', type=int, help=\"base address of file\", dest='base', default=0x04001000)\n    parser.add_argument('-i', type=int, help=\"amount of indentation\", dest='indent', default=4)\n    parser.add_argument('-n', help=\"name to prefex labels with\", dest='name', default='f3d')\n    args = parser.parse_args()\n\n    lines = read_file(args.input_file)\n    refs = decode_references(lines)\n    reassemble(args, lines, refs)\n\nmain()\n"
  },
  {
    "path": "tools/revert_patch.sh",
    "content": "#!/bin/sh\n#\n# revert_patch.sh - Reverts an enhancement patch\n#\n\nif [ \"$#\" -ne 1 ]\nthen\n    echo \"Usage: $0 patch_file\"\n    echo '    Reverts the changes made by an enhancement patch'\n    exit 1\nfi\n\nread -p \"Do you wish to revert the patch '$1'? [Y/N] \" response\ncase \"$response\" in\n    Y|y)\n\tpatch -p1 -R < \"$1\"\n\t;;\n    N|n)\n\techo 'Quit'\n\texit 1\n\t;;\n    *)\n\techo \"Invalid response '$response'.\"\n\texit 1\n\t;;\nesac\n\n\n"
  },
  {
    "path": "tools/sdk-tools/README.md",
    "content": "# sdk-tools\nDecompilation of the Nintendo 64 SDK developer tools\n"
  },
  {
    "path": "tools/sdk-tools/adpcm/.gitignore",
    "content": "*.o\n*.s\n*.dump\n*.aiff\n*.aifc\n*.table\n/vadpcm_dec_irix\n/vadpcm_enc_irix\n/vadpcm_dec_native\n/vadpcm_enc_native\n/vadpcm_dec_orig\n/vadpcm_enc_orig\n"
  },
  {
    "path": "tools/sdk-tools/adpcm/Makefile",
    "content": "# Makefile for building vadpcm_enc and vadpcm_dec for either IRIX or natively.\n# For an IRIX build, the env variable IRIX_ROOT should point to the root of an\n# IRIX filesystem, and QEMU_IRIX should point to the qemu-irix binary.\n\nIRIX_CC := $(QEMU_IRIX) -silent -L $(IRIX_ROOT) $(IRIX_ROOT)/usr/bin/cc\nIRIX_CFLAGS := -fullwarn -woff 515,608,658,799 -Wab,-r4300_mul -g -Xcpluscomm -mips1 -o32\n\nNATIVE_CC := gcc\nNATIVE_CFLAGS := -g -Wall -O2 -Wno-unused-result -Wno-uninitialized\n\ndefault: native\nall: irix native\n\nirix: vadpcm_dec_irix vadpcm_enc_irix\nnative: vadpcm_dec_native vadpcm_enc_native\n\nclean:\n\t$(RM) *.o vadpcm_dec_irix vadpcm_enc_irix vadpcm_dec_native vadpcm_enc_native\n\n%.o: %.c\n\t$(IRIX_CC) -c $(IRIX_CFLAGS) $< -o $@\n\nvadpcm_dec_irix: SHELL := /usr/bin/env bash\nvadpcm_dec_irix: vadpcm_dec.o vpredictor.o sampleio.o vdecode.o util.o\n\t$(IRIX_CC) $^ -o $@ -lm\n\t@dd status=none iflag=skip_bytes,count_bytes skip=$$((0x120)) count=$$((0x5000 - 0x120)) if=$@ | sha256sum | diff -q - <(echo 'ffaf4d0e4a5d13279d8de8e1eb4ba0f6350e7e3940ad1339f665036bf74f81c1  -') >/dev/null && echo $@: OK || echo $@: FAILED\n\nvadpcm_enc_irix: SHELL := /usr/bin/env bash\nvadpcm_enc_irix: vadpcm_enc.o vpredictor.o quant.o util.o vencode.o\n\t$(IRIX_CC) $^ -o $@ -lm\n\t@dd status=none iflag=skip_bytes,count_bytes skip=$$((0x120)) count=$$((0x6000 - 0x120)) if=$@ | sha256sum | diff -q - <(echo '803be21f985c520eafdde0ff2d0ad2d6dd0db364f146c6d5f5763251f4c1796b  -') >/dev/null && echo $@: OK || echo $@: FAILED\n\nvadpcm_dec_native: vadpcm_dec.c vpredictor.c sampleio.c vdecode.c util.c\n\t$(NATIVE_CC) $(NATIVE_CFLAGS) $^ -o $@ -lm\n\nvadpcm_enc_native: vadpcm_enc.c vpredictor.c quant.c util.c vencode.c\n\t$(NATIVE_CC) $(NATIVE_CFLAGS) $^ -o $@ -lm\n\n.PHONY: default all irix native clean\n"
  },
  {
    "path": "tools/sdk-tools/adpcm/quant.c",
    "content": "#include \"vadpcm.h\"\n\n/**\n * Compute x / scale rounded to the nearest integer, with x.5 (fuzzy with an\n * epsilon of 1e-7) rounding towards zero.\n */\ns16 qsample(f32 x, s32 scale)\n{\n    if (x > 0.0f)\n    {\n        return (s16) ((x / scale) + 0.4999999);\n    }\n    else\n    {\n        return (s16) ((x / scale) - 0.4999999);\n    }\n}\n\n/**\n * Round all ('fs' many) values in 'e' to the nearest 'bits'-bit integer,\n * outputting to 'ie'.\n */\nvoid clamp(s32 fs, f32 *e, s32 *ie, s32 bits)\n{\n    s32 i;\n    f32 ulevel;\n    f32 llevel;\n\n    llevel = -(f32) (1 << (bits - 1));\n    ulevel = -llevel - 1.0f;\n    for (i = 0; i < fs; i++)\n    {\n        if (e[i] > ulevel)\n        {\n            e[i] = ulevel;\n        }\n        if (e[i] < llevel)\n        {\n            e[i] = llevel;\n        }\n\n        if (e[i] > 0.0f)\n        {\n            ie[i] = (s32) (e[i] + 0.5);\n        }\n        else\n        {\n            ie[i] = (s32) (e[i] - 0.5);\n        }\n    }\n}\n\n/**\n * Clamp ix to within [llevel, ulevel].\n */\ns32 clip(s32 ix, s32 llevel, s32 ulevel)\n{\n    if (ix < llevel || ix > ulevel)\n    {\n        if (ix < llevel)\n        {\n            return llevel;\n        }\n        if (ix > ulevel)\n        {\n            return ulevel;\n        }\n    }\n    return ix;\n}\n"
  },
  {
    "path": "tools/sdk-tools/adpcm/sampleio.c",
    "content": "#include <stdio.h>\n#include <stdlib.h>\n#include \"vadpcm.h\"\n\nstatic void fmtchan(s32 size, u8 *p, s32 *data, s32 stride)\n{\n    s32 i;\n    s32 c;\n\n    for (i = 0; i < size; i++)\n    {\n        c = *data++;\n        if (c < -0x7fff)\n        {\n            c = -0x7fff;\n        }\n        if (c >= 0x8000)\n        {\n            c = 0x7fff;\n        }\n        p[0] = c >> 8;\n        p[1] = c;\n        p += stride;\n    }\n}\n\nvoid writeout(FILE *outfd, s32 size, s32 *l_out, s32 *r_out, s32 chans)\n{\n    static u8 obuf[0x1000];\n    s32 i;\n\n    switch (chans)\n    {\n    case 2:\n        fmtchan(size, obuf, l_out, chans * 2);\n        fmtchan(size, obuf + 2, r_out, chans * 2);\n        if (outfd != NULL)\n        {\n            if ((i = fwrite(obuf, 1, size * 4, outfd)) != size * 4)\n            {\n                fprintf(stderr, \"write error %d\\n\", i);\n                exit(1);\n            }\n        }\n        break;\n\n    case 1:\n        fmtchan(size, obuf, l_out, 2);\n        if (outfd != NULL)\n        {\n            if ((i = fwrite(obuf, 1, size * 2, outfd)) != size * 2)\n            {\n                fprintf(stderr, \"write error %d\\n\", i);\n                exit(1);\n            }\n        }\n        break;\n\n    default:\n        fprintf(stderr, \"Error in number of channels\\n\");\n        exit(1);\n    }\n}\n"
  },
  {
    "path": "tools/sdk-tools/adpcm/util.c",
    "content": "#include <stdio.h>\n#include <stdlib.h>\n#include \"vadpcm.h\"\n\nstatic s32 input_word = 0;\nstatic s32 in_bit_pos = -1;\n\nstatic u32 getshort(FILE *ifile)\n{\n    u32 c1;\n    u32 c2;\n\n    if ((c1 = getc(ifile)) == -1)\n    {\n        return 0;\n    }\n\n    if ((c2 = getc(ifile)) == -1)\n    {\n        return 0;\n    }\n\n    return (c1 << 8) | c2;\n}\n\nu32 readbits(u32 nbits, FILE *ifile)\n{\n    u32 c;\n    u32 b;\n    u32 left;\n    u32 mask;\n\n    if (nbits <= in_bit_pos + 1)\n    {\n        mask = (1U << nbits) - 1;\n        b = ((u32) input_word >> (in_bit_pos - nbits + 1)) & mask;\n        in_bit_pos -= nbits;\n        if (in_bit_pos < 0)\n        {\n            c = getshort(ifile);\n            input_word = c;\n            in_bit_pos = 15;\n        }\n        return b;\n    }\n    else\n    {\n        b = input_word & ((1U << (in_bit_pos + 1)) - 1);\n        left = nbits - in_bit_pos - 1;\n        c = getshort(ifile);\n        input_word = c;\n        in_bit_pos = 15;\n        b = readbits(left, ifile) | (b << left);\n        return b;\n    }\n}\n\nchar *ReadPString(FILE *ifile)\n{\n    u8 c;\n    char *st;\n\n    fread(&c, 1, 1, ifile);\n    st = malloc(c + 1);\n    fread(st, c, 1, ifile);\n    st[c] = '\\0';\n    if ((c & 1) == 0)\n    {\n        fread(&c, 1, 1, ifile);\n    }\n    return st;\n}\n\ns32 lookupMarker(u32 *sample, s16 loopPoint, Marker *markers, s32 nmarkers)\n{\n    s32 i;\n\n    for (i = 0; i < nmarkers; i++)\n    {\n        if (markers[i].MarkerID == loopPoint)\n        {\n            *sample = (markers[i].positionH << 16) + markers[i].positionL;\n            return 0;\n        }\n    }\n    return 1;\n}\n\nALADPCMloop *readlooppoints(FILE *ifile, s16 *nloops)\n{\n    s32 i;\n    ALADPCMloop *al;\n\n    fread(nloops, sizeof(s16), 1, ifile);\n    BSWAP16(*nloops)\n    al = malloc(*nloops * sizeof(ALADPCMloop));\n    for (i = 0; i < *nloops; i++)\n    {\n        fread(&al[i], sizeof(ALADPCMloop), 1, ifile);\n        BSWAP32(al[i].start)\n        BSWAP32(al[i].end)\n        BSWAP32(al[i].count)\n        BSWAP16_MANY(al[i].state, 16)\n    }\n    return al;\n}\n"
  },
  {
    "path": "tools/sdk-tools/adpcm/vadpcm.h",
    "content": "#ifndef VADPCM_H\n#define VADPCM_H\n\n#include <stdio.h>\n\ntypedef signed char s8;\ntypedef short s16;\ntypedef int s32;\ntypedef long long s64;\ntypedef unsigned char u8;\ntypedef unsigned short u16;\ntypedef unsigned int u32;\ntypedef unsigned long long u64;\ntypedef float f32;\ntypedef double f64;\n\n#ifdef __sgi\n#  define BSWAP16(x)\n#  define BSWAP32(x)\n#  define BSWAP16_MANY(x, n)\n#else\n#  define BSWAP16(x) x = __builtin_bswap16(x);\n#  define BSWAP32(x) x = __builtin_bswap32(x);\n#  define BSWAP16_MANY(x, n) { s32 _i; for (_i = 0; _i < n; _i++) BSWAP16((x)[_i]) }\n#endif\n\n#ifdef __sgi\n#  define MODE_READ \"r\"\n#  define MODE_WRITE \"w\"\n#else\n#  define MODE_READ \"rb\"\n#  define MODE_WRITE \"wb\"\n#endif\n\ntypedef struct {\n    u32 ckID;\n    u32 ckSize;\n} ChunkHeader;\n\ntypedef struct {\n    u32 ckID;\n    u32 ckSize;\n    u32 formType;\n} Chunk;\n\ntypedef struct {\n    s16 numChannels;\n    u16 numFramesH;\n    u16 numFramesL;\n    s16 sampleSize;\n    s16 sampleRate[5]; // 80-bit float\n    u16 compressionTypeH;\n    u16 compressionTypeL;\n} CommonChunk;\n\ntypedef struct {\n    s16 MarkerID;\n    u16 positionH;\n    u16 positionL;\n} Marker;\n\ntypedef struct {\n    s16 playMode;\n    s16 beginLoop;\n    s16 endLoop;\n} Loop;\n\ntypedef struct {\n    s8 baseNote;\n    s8 detune;\n    s8 lowNote;\n    s8 highNote;\n    s8 lowVelocity;\n    s8 highVelocity;\n    s16 gain;\n    Loop sustainLoop;\n    Loop releaseLoop;\n} InstrumentChunk;\n\ntypedef struct {\n    s32 offset;\n    s32 blockSize;\n} SoundDataChunk;\n\ntypedef struct {\n    s16 version;\n    s16 order;\n    s16 nEntries;\n} CodeChunk;\n\ntypedef struct\n{\n    u32 start;\n    u32 end;\n    u32 count;\n    s16 state[16];\n} ALADPCMloop;\n\n// vpredictor.c\ns32 readcodebook(FILE *fhandle, s32 ****table, s32 *order, s32 *npredictors);\ns32 readaifccodebook(FILE *fhandle, s32 ****table, s16 *order, s16 *npredictors);\ns32 inner_product(s32 length, s32 *v1, s32 *v2);\n\n// quant.c\ns16 qsample(f32 x, s32 scale);\nvoid clamp(s32 fs, f32 *e, s32 *ie, s32 bits);\ns32 clip(s32 ix, s32 llevel, s32 ulevel);\n\n// vdecode.c\nvoid vdecodeframe(FILE *ifile, s32 *outp, s32 order, s32 ***coefTable);\n\n// vencode.c\nvoid vencodeframe(FILE *ofile, s16 *inBuffer, s32 *state, s32 ***coefTable, s32 order, s32 npredictors, s32 nsam);\n\n// util.c\nu32 readbits(u32 nbits, FILE *ifile);\nchar *ReadPString(FILE *ifile);\ns32 lookupMarker(u32 *sample, s16 loopPoint, Marker *markers, s32 nmarkers);\nALADPCMloop *readlooppoints(FILE *ifile, s16 *nloops);\n\n// sampleio.c\nvoid writeout(FILE *outfd, s32 size, s32 *l_out, s32 *r_out, s32 chans);\n\n#endif\n"
  },
  {
    "path": "tools/sdk-tools/adpcm/vadpcm_dec.c",
    "content": "#include <unistd.h>\n#include <assert.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdlib.h>\n#include <signal.h>\n#include <fcntl.h>\n#include \"vadpcm.h\"\n\nstatic void int_handler(s32 sig)\n{\n    s32 flags;\n\n    flags = fcntl(STDIN_FILENO, F_GETFL, 0);\n    flags &= ~FNDELAY;\n    fcntl(STDIN_FILENO, F_SETFL, flags);\n    exit(0);\n}\n\nstatic char usage[] = \"bitfile\";\n\n#ifdef __sgi\n\n// Declaring a sigaction like this is wildly unportable; you're supposed to\n// assign members one by one in code. We do that in the non-SGI case.\nstatic struct sigaction int_act = {\n    /* sa_flags =   */ SA_RESTART,\n    /* sa_handler = */ &int_handler,\n    /* sa_mask =    */ 0,\n};\n\n#endif\n\ns32 main(s32 argc, char **argv)\n{\n    s32 c;\n    u8 cc;\n    u8 doloop = 0;\n    s16 order;\n    s16 version;\n    s16 nloops;\n    s16 npredictors;\n    s32 flags;\n    s32 ***coefTable = NULL;\n    s32 i;\n    s32 j;\n    s32 *outp;\n    s32 *state;\n    s32 done = 0;\n    s32 num;\n    u32 ts;\n    s32 soundPointer;\n    s32 cType;\n    s32 offset;\n    s32 currPos = 0;\n    s32 nSamples;\n    s32 framePos;\n    s32 loopBegin;\n    s32 left;\n    ALADPCMloop *aloops;\n    Chunk FormChunk;\n    ChunkHeader Header;\n    CommonChunk CommChunk;\n    SoundDataChunk SndDChunk;\n    char *ChunkName;\n    FILE *ifile;\n    char *progname = argv[0];\n\n#ifndef __sgi\n    nloops = 0;\n#endif\n\n    if (argc < 2)\n    {\n        fprintf(stderr, \"%s %s\\n\", progname, usage);\n        exit(1);\n    }\n\n    while ((c = getopt(argc, argv, \"l\")) != -1)\n    {\n        switch (c)\n        {\n        case 'l':\n            doloop = 1;\n            break;\n        }\n    }\n\n    argv += optind - 1;\n    if ((ifile = fopen(argv[1], MODE_READ)) == NULL)\n    {\n        fprintf(stderr, \"%s: bitstream file [%s] could not be opened\\n\", progname, argv[1]);\n        exit(1);\n    }\n\n    state = malloc(16 * sizeof(int));\n    for (i = 0; i < 16; i++)\n    {\n        state[i] = 0;\n    }\n\n    fread(&FormChunk, sizeof(FormChunk), 1, ifile);\n    BSWAP32(FormChunk.ckID)\n    BSWAP32(FormChunk.formType)\n    if ((FormChunk.ckID != 0x464f524d) || (FormChunk.formType != 0x41494643)) // FORM, AIFC\n    {\n        fprintf(stderr, \"%s: [%s] is not an AIFF-C File\\n\", progname, argv[1]);\n        exit(1);\n    }\n\n    while (!done)\n    {\n        num = fread(&Header, sizeof(Header), 1, ifile);\n        if (num <= 0)\n        {\n            done = 1;\n            break;\n        }\n        BSWAP32(Header.ckID)\n        BSWAP32(Header.ckSize)\n\n        Header.ckSize++, Header.ckSize &= ~1;\n        switch (Header.ckID)\n        {\n        case 0x434f4d4d: // COMM\n            offset = ftell(ifile);\n            num = fread(&CommChunk, sizeof(CommChunk), 1, ifile);\n            if (num <= 0)\n            {\n                fprintf(stderr, \"%s: error parsing file [%s]\\n\", progname, argv[1]);\n                done = 1;\n            }\n            BSWAP16(CommChunk.numChannels)\n            BSWAP16(CommChunk.numFramesH)\n            BSWAP16(CommChunk.numFramesL)\n            BSWAP16(CommChunk.sampleSize)\n            BSWAP16(CommChunk.compressionTypeH)\n            BSWAP16(CommChunk.compressionTypeL)\n            cType = (CommChunk.compressionTypeH << 16) + CommChunk.compressionTypeL;\n            if (cType != 0x56415043) // VAPC\n            {\n                fprintf(stderr, \"%s: file [%s] is of the wrong compression type.\\n\", progname, argv[1]);\n                exit(1);\n            }\n            if (CommChunk.numChannels != 1)\n            {\n                fprintf(stderr, \"%s: file [%s] contains %ld channels, only 1 channel supported.\\n\", progname, argv[1], (long) CommChunk.numChannels);\n                exit(1);\n            }\n            if (CommChunk.sampleSize != 16)\n            {\n                fprintf(stderr, \"%s: file [%s] contains %ld bit samples, only 16 bit samples supported.\\n\", progname, argv[1], (long) CommChunk.sampleSize);\n                exit(1);\n            }\n            nSamples = (CommChunk.numFramesH << 16) + CommChunk.numFramesL;\n            fseek(ifile, offset + Header.ckSize, SEEK_SET);\n            break;\n\n        case 0x53534e44: // SSND\n            offset = ftell(ifile);\n            fread(&SndDChunk, sizeof(SndDChunk), 1, ifile);\n            BSWAP32(SndDChunk.offset)\n            BSWAP32(SndDChunk.blockSize)\n            // The assert error messages specify line numbers 165/166. Match\n            // that using a #line directive.\n#ifdef __sgi\n#  line 164\n#endif\n            assert(SndDChunk.offset == 0);\n            assert(SndDChunk.blockSize == 0);\n            soundPointer = ftell(ifile);\n            fseek(ifile, offset + Header.ckSize, SEEK_SET);\n            break;\n\n        case 0x4150504c: // APPL\n            offset = ftell(ifile);\n            fread(&ts, sizeof(u32), 1, ifile);\n            BSWAP32(ts)\n            if (ts == 0x73746f63) // stoc\n            {\n                ChunkName = ReadPString(ifile);\n                if (strcmp(\"VADPCMCODES\", ChunkName) == 0)\n                {\n                    fread(&version, sizeof(s16), 1, ifile);\n                    BSWAP16(version)\n                    if (version != 1)\n                    {\n                        fprintf(stderr, \"Non-identical codebook chunk versions\\n\");\n                    }\n                    readaifccodebook(ifile, &coefTable, &order, &npredictors);\n                }\n                else if (strcmp(\"VADPCMLOOPS\", ChunkName) == 0)\n                {\n                    fread(&version, sizeof(s16), 1, ifile);\n                    BSWAP16(version)\n                    if (version != 1)\n                    {\n                        fprintf(stderr, \"Non-identical loop chunk versions\\n\");\n                    }\n                    aloops = readlooppoints(ifile, &nloops);\n                }\n            }\n            fseek(ifile, offset + Header.ckSize, SEEK_SET);\n            break;\n\n        default:\n            // We don't understand this chunk. Skip it.\n            fseek(ifile, Header.ckSize, SEEK_CUR);\n            break;\n        }\n    }\n\n    if (coefTable == NULL)\n    {\n        // @bug should use progname; argv[0] may be an option\n        fprintf(stderr, \"%s: Codebook missing from bitstream [%s]\\n\", argv[0], argv[1]);\n        exit(1);\n    }\n\n    outp = malloc(16 * sizeof(s32));\n    for (i = 0; i < order; i++)\n    {\n        outp[15 - i] = 0;\n    }\n\n    fseek(ifile, soundPointer, SEEK_SET);\n    if (doloop && nloops > 0)\n    {\n#ifndef __sgi\n        struct sigaction int_act;\n        int_act.sa_flags = SA_RESTART;\n        int_act.sa_handler = int_handler;\n        sigemptyset(&int_act.sa_mask);\n#endif\n\n        sigaction(SIGINT, &int_act, NULL);\n        flags = fcntl(STDIN_FILENO, F_GETFL, 0);\n        flags |= FNDELAY;\n        fcntl(STDIN_FILENO, F_SETFL, flags);\n        for (i = 0; i < nloops; i++)\n        {\n            while (currPos < aloops[i].end)\n            {\n                left = aloops[i].end - currPos;\n                vdecodeframe(ifile, outp, order, coefTable);\n                writeout(stdout, left < 16 ? left : 16, outp, outp, 1);\n                currPos += 16;\n            }\n\n            while (read(STDIN_FILENO, &cc, 1) == 0)\n            {\n                framePos = (aloops[i].start >> 4) + 1;\n                fseek(ifile, (framePos * 9) + soundPointer, SEEK_SET);\n                for (j = 0; j < 16; j++)\n                {\n                    outp[j] = aloops[i].state[j];\n                }\n                loopBegin = aloops[i].start & 0xf;\n                writeout(stdout, 16 - loopBegin, outp + loopBegin, outp + loopBegin, 1);\n                currPos = framePos * 16;\n                while (currPos < aloops[i].end)\n                {\n                    left = aloops[i].end - currPos;\n                    vdecodeframe(ifile, outp, order, coefTable);\n                    writeout(stdout, left < 16 ? left : 16, outp, outp, 1);\n                    currPos += 16;\n                }\n            }\n\n            left = 16 - left;\n            if (left != 0)\n            {\n                writeout(stdout, left, &outp[left], &outp[left], 1);\n            }\n\n            while (currPos < nSamples)\n            {\n                vdecodeframe(ifile, outp, order, coefTable);\n                left = nSamples - currPos;\n                writeout(stdout, left < 16 ? left : 16, outp, outp, 1);\n                currPos += 16;\n            }\n\n            flags = fcntl(STDIN_FILENO, F_GETFL, 0);\n            flags &= ~FNDELAY;\n            fcntl(STDIN_FILENO, F_SETFL, flags);\n        }\n    }\n    else\n    {\n        while (currPos < nSamples)\n        {\n            vdecodeframe(ifile, outp, order, coefTable);\n            writeout(stdout, 16, outp, outp, 1);\n            currPos += 16;\n        }\n    }\n\n    fclose(ifile);\n    return 0;\n}\n"
  },
  {
    "path": "tools/sdk-tools/adpcm/vadpcm_enc.c",
    "content": "#include <string.h>\n#include <assert.h>\n#include <stdio.h>\n#include <stdlib.h>\n#include <getopt.h>\n#include \"vadpcm.h\"\n\nstatic char usage[] = \"[-t -l min_loop_length] -c codebook aifcfile compressedfile\";\n\nint main(int argc, char **argv)\n{\n    s32 c;\n    char *progname = argv[0];\n    s16 nloops = 0;\n    s16 numMarkers;\n    s16 *inBuffer;\n    s16 ts;\n    s32 minLoopLength = 800;\n    s32 ***coefTable = NULL;\n    s32 *state;\n    s32 order;\n    s32 npredictors;\n    s32 done = 0;\n    s32 truncate = 0;\n    s32 num;\n    s32 tableSize;\n    s32 nsam;\n    s32 left;\n    u32 newEnd;\n    s32 nRepeats;\n    s32 i;\n    s32 j;\n    s32 k;\n    s32 nFrames;\n    s32 offset;\n    s32 cChunkPos;\n    s32 currentPos;\n    s32 soundPointer = 0;\n    s32 startPointer = 0;\n    s32 startSoundPointer = 0;\n    s32 cType;\n    s32 nBytes = 0;\n    u32 loopEnd;\n    char *compName = \"VADPCM ~4-1\";\n    char *appCodeName = \"VADPCMCODES\";\n    char *appLoopName = \"VADPCMLOOPS\";\n    u8 strnLen;\n    Chunk AppChunk;\n    Chunk FormChunk;\n    ChunkHeader CSndChunk;\n    ChunkHeader Header;\n    CommonChunk CommChunk;\n    SoundDataChunk SndDChunk;\n    InstrumentChunk InstChunk;\n    Loop *loops = NULL;\n    ALADPCMloop *aloops;\n    Marker *markers;\n    CodeChunk cChunk;\n#ifdef __sgi\n    char filename[1024];\n#else\n    const char *filename;\n#endif\n    FILE *fhandle;\n    FILE *ifile;\n    FILE *ofile;\n\n    if (argc < 2)\n    {\n        fprintf(stderr, \"%s %s\\n\", progname, usage);\n        exit(1);\n    }\n\n    while ((c = getopt(argc, argv, \"tc:l:\")) != -1)\n    {\n        switch (c)\n        {\n        case 'c':\n#ifdef __sgi\n            if (sscanf(optarg, \"%s\", filename) == 1)\n#else\n            // Allow filenames with spaces\n            filename = optarg;\n#endif\n            {\n                if ((fhandle = fopen(filename, \"r\")) == NULL)\n                {\n                    fprintf(stderr, \"Codebook file %s could not be opened\\n\", filename);\n                    exit(1);\n                }\n                if (readcodebook(fhandle, &coefTable, &order, &npredictors) != 0)\n                {\n                    fprintf(stderr, \"Error reading codebook\\n\");\n                    exit(1);\n                }\n            }\n            break;\n\n        case 't':\n            truncate = 1;\n            break;\n\n        case 'l':\n            sscanf(optarg, \"%d\", &minLoopLength);\n            break;\n\n        default:\n            break;\n        }\n    }\n\n    if (coefTable == 0)\n    {\n        fprintf(stderr, \"You should specify a coefficient codebook with the [-c] option\\n\");\n        exit(1);\n    }\n\n    argv += optind - 1;\n    if ((ifile = fopen(argv[1], MODE_READ)) == NULL)\n    {\n        fprintf(stderr, \"%s: input file [%s] could not be opened.\\n\", progname, argv[1]);\n        exit(1);\n    }\n    if ((ofile = fopen(argv[2], MODE_WRITE)) == NULL)\n    {\n        fprintf(stderr, \"%s: output file [%s] could not be opened.\\n\", progname, argv[2]);\n        exit(1);\n    }\n\n    state = malloc(16 * sizeof(s32));\n    for (i = 0; i < 16; i++)\n    {\n        state[i] = 0;\n    }\n\n#ifndef __sgi\n    // If there is no instrument chunk, make sure to output zeroes instead of\n    // garbage. (This matches how the IRIX -g-compiled version behaves.)\n    memset(&InstChunk, 0, sizeof(InstChunk));\n#endif\n\n    inBuffer = malloc(16 * sizeof(s16));\n\n    fread(&FormChunk, sizeof(Chunk), 1, ifile);\n    BSWAP32(FormChunk.ckID)\n    BSWAP32(FormChunk.ckSize)\n    BSWAP32(FormChunk.formType)\n\n    // @bug This doesn't check for FORM for AIFF files, probably due to mistaken operator precedence.\n    if (!((FormChunk.ckID == 0x464f524d && // FORM\n           FormChunk.formType == 0x41494643) || // AIFC\n           FormChunk.formType == 0x41494646)) // AIFF\n    {\n        fprintf(stderr, \"%s: [%s] is not an AIFF-C File\\n\", progname, argv[1]);\n        exit(1);\n    }\n\n    while (!done)\n    {\n        num = fread(&Header, 8, 1, ifile);\n        if (num <= 0)\n        {\n            done = 1;\n            break;\n        }\n        BSWAP32(Header.ckID)\n        BSWAP32(Header.ckSize)\n\n        Header.ckSize++, Header.ckSize &= ~1;\n        switch (Header.ckID)\n        {\n        case 0x434f4d4d: // COMM\n            offset = ftell(ifile);\n            num = fread(&CommChunk, sizeof(CommonChunk), 1, ifile);\n            if (num <= 0)\n            {\n                fprintf(stderr, \"%s: error parsing file [%s]\\n\", progname, argv[1]);\n                done = 1;\n            }\n            BSWAP16(CommChunk.numChannels)\n            BSWAP16(CommChunk.numFramesH)\n            BSWAP16(CommChunk.numFramesL)\n            BSWAP16(CommChunk.sampleSize)\n            if (FormChunk.formType != 0x41494646) // AIFF\n            {\n                BSWAP16(CommChunk.compressionTypeH)\n                BSWAP16(CommChunk.compressionTypeL)\n                cType = (CommChunk.compressionTypeH << 16) + CommChunk.compressionTypeL;\n                if (cType != 0x4e4f4e45) // NONE\n                {\n                    fprintf(stderr, \"%s: file [%s] contains compressed data.\\n\", progname, argv[1]);\n                    exit(1);\n                }\n            }\n            if (CommChunk.numChannels != 1)\n            {\n                fprintf(stderr, \"%s: file [%s] contains %ld channels, only 1 channel supported.\\n\", progname, argv[1], (long) CommChunk.numChannels);\n                exit(1);\n            }\n            if (CommChunk.sampleSize != 16)\n            {\n                fprintf(stderr, \"%s: file [%s] contains %ld bit samples, only 16 bit samples supported.\\n\", progname, argv[1], (long) CommChunk.sampleSize);\n                exit(1);\n            }\n            fseek(ifile, offset + Header.ckSize, SEEK_SET);\n            break;\n\n        case 0x53534e44: // SSND\n            offset = ftell(ifile);\n            fread(&SndDChunk, sizeof(SoundDataChunk), 1, ifile);\n            BSWAP32(SndDChunk.offset)\n            BSWAP32(SndDChunk.blockSize)\n            // The assert error messages specify line numbers 219/220. Match\n            // that using a #line directive.\n#ifdef __sgi\n#  line 218\n#endif\n            assert(SndDChunk.offset == 0);\n            assert(SndDChunk.blockSize == 0);\n            soundPointer = ftell(ifile);\n            fseek(ifile, offset + Header.ckSize, SEEK_SET);\n            break;\n\n        case 0x4d41524b: // MARK\n            offset = ftell(ifile);\n            fread(&numMarkers, sizeof(s16), 1, ifile);\n            BSWAP16(numMarkers)\n            markers = malloc(numMarkers * sizeof(Marker));\n            for (i = 0; i < numMarkers; i++)\n            {\n                fread(&markers[i], sizeof(Marker), 1, ifile);\n                BSWAP16(markers[i].MarkerID)\n                BSWAP16(markers[i].positionH)\n                BSWAP16(markers[i].positionL)\n                fread(&strnLen, 1, 1, ifile);\n                if ((strnLen & 1) != 0)\n                {\n                    fseek(ifile, strnLen, SEEK_CUR);\n                }\n                else\n                {\n                    fseek(ifile, strnLen + 1, SEEK_CUR);\n                }\n            }\n            fseek(ifile, offset + Header.ckSize, SEEK_SET);\n            break;\n\n        case 0x494e5354: // INST\n            offset = ftell(ifile);\n            fread(&InstChunk, sizeof(InstrumentChunk), 1, ifile);\n            BSWAP16(InstChunk.sustainLoop.playMode)\n            BSWAP16(InstChunk.sustainLoop.beginLoop)\n            BSWAP16(InstChunk.sustainLoop.endLoop)\n            BSWAP16(InstChunk.releaseLoop.playMode)\n            BSWAP16(InstChunk.releaseLoop.beginLoop)\n            BSWAP16(InstChunk.releaseLoop.endLoop)\n            aloops = malloc(2 * sizeof(ALADPCMloop));\n            loops = malloc(2 * sizeof(Loop));\n            if (InstChunk.sustainLoop.playMode == 1)\n            {\n                loops[nloops].beginLoop = InstChunk.sustainLoop.beginLoop;\n                loops[nloops].endLoop = InstChunk.sustainLoop.endLoop;\n                nloops++;\n            }\n            if (InstChunk.releaseLoop.playMode == 1)\n            {\n                loops[nloops].beginLoop = InstChunk.releaseLoop.beginLoop;\n                loops[nloops].endLoop = InstChunk.releaseLoop.endLoop;\n                nloops++;\n            }\n            fseek(ifile, offset + Header.ckSize, SEEK_SET);\n            break;\n\n        default:\n            fseek(ifile, Header.ckSize, SEEK_CUR);\n            break;\n        }\n    }\n\n    FormChunk.formType = 0x41494643; // AIFC\n    BSWAP32(FormChunk.ckID)\n    BSWAP32(FormChunk.ckSize)\n    BSWAP32(FormChunk.formType)\n    fwrite(&FormChunk, sizeof(Chunk), 1, ofile);\n\n    Header.ckID = 0x434f4d4d; // COMM\n    Header.ckSize = sizeof(CommonChunk) + 1 + 11;\n    BSWAP32(Header.ckID)\n    BSWAP32(Header.ckSize)\n    fwrite(&Header, sizeof(ChunkHeader), 1, ofile);\n    CommChunk.compressionTypeH = 0x5641; // VA\n    CommChunk.compressionTypeL = 0x5043; // PC\n    cChunkPos = ftell(ofile);\n    // CommChunk written later\n    fwrite(&CommChunk, sizeof(CommonChunk), 1, ofile);\n    strnLen = sizeof(\"VADPCM ~4-1\") - 1;\n    fwrite(&strnLen, 1, 1, ofile);\n    fwrite(compName, strnLen, 1, ofile);\n\n    Header.ckID = 0x494e5354; // INST\n    Header.ckSize = sizeof(InstrumentChunk);\n    BSWAP32(Header.ckID)\n    BSWAP32(Header.ckSize)\n    fwrite(&Header, sizeof(ChunkHeader), 1, ofile);\n    BSWAP16(InstChunk.sustainLoop.playMode)\n    BSWAP16(InstChunk.sustainLoop.beginLoop)\n    BSWAP16(InstChunk.sustainLoop.endLoop)\n    BSWAP16(InstChunk.releaseLoop.playMode)\n    BSWAP16(InstChunk.releaseLoop.beginLoop)\n    BSWAP16(InstChunk.releaseLoop.endLoop)\n    fwrite(&InstChunk, sizeof(InstrumentChunk), 1, ofile);\n\n    tableSize = order * 2 * npredictors * 8;\n    strnLen = sizeof(\"VADPCMCODES\") - 1;\n    AppChunk.ckID = 0x4150504c; // APPL\n    AppChunk.ckSize = 4 + tableSize + 1 + strnLen + sizeof(CodeChunk);\n    AppChunk.formType = 0x73746f63; // stoc\n    BSWAP32(AppChunk.ckID)\n    BSWAP32(AppChunk.ckSize)\n    BSWAP32(AppChunk.formType)\n    fwrite(&AppChunk, sizeof(Chunk), 1, ofile);\n    cChunk.version = 1;\n    cChunk.order = order;\n    cChunk.nEntries = npredictors;\n    BSWAP16(cChunk.version)\n    BSWAP16(cChunk.order)\n    BSWAP16(cChunk.nEntries)\n    fwrite(&strnLen, 1, 1, ofile);\n    fwrite(appCodeName, strnLen, 1, ofile);\n    fwrite(&cChunk, sizeof(CodeChunk), 1, ofile);\n\n    for (i = 0; i < npredictors; i++)\n    {\n        for (j = 0; j < order; j++)\n        {\n            for (k = 0; k < 8; k++)\n            {\n                ts = coefTable[i][k][j];\n                BSWAP16(ts)\n                fwrite(&ts, sizeof(s16), 1, ofile);\n            }\n        }\n    }\n\n    currentPos = 0;\n    if (soundPointer > 0)\n    {\n        fseek(ifile, soundPointer, SEEK_SET);\n    }\n    else\n    {\n        fprintf(stderr, \"%s: Error in sound chunk\", progname);\n        exit(1);\n    }\n\n    soundPointer = ftell(ofile);\n    // CSndChunk written later\n    fwrite(&CSndChunk, sizeof(ChunkHeader), 1, ofile);\n    BSWAP32(SndDChunk.offset)\n    BSWAP32(SndDChunk.blockSize)\n    fwrite(&SndDChunk, sizeof(SoundDataChunk), 1, ofile);\n    startSoundPointer = ftell(ifile);\n    for (i = 0; i < nloops; i++)\n    {\n        if (lookupMarker(&aloops[i].start, loops[i].beginLoop, markers, numMarkers) != 0)\n        {\n            fprintf(stderr, \"%s: Start loop marker not found\\n\", progname);\n        }\n        else if (lookupMarker(&aloops[i].end, loops[i].endLoop, markers, numMarkers) != 0)\n        {\n            fprintf(stderr, \"%s: End loop marker not found\\n\", progname);\n        }\n        else\n        {\n            startPointer = startSoundPointer + aloops[i].start * 2;\n            nRepeats = 0;\n            newEnd = aloops[i].end;\n            while (newEnd - aloops[i].start < minLoopLength)\n            {\n                nRepeats++;\n                newEnd += aloops[i].end - aloops[i].start;\n            }\n\n            while (currentPos <= aloops[i].start)\n            {\n                if (fread(inBuffer, sizeof(s16), 16, ifile) == 16)\n                {\n                    BSWAP16_MANY(inBuffer, 16)\n                    vencodeframe(ofile, inBuffer, state, coefTable, order, npredictors, 16);\n                    currentPos += 16;\n                    nBytes += 9;\n                }\n                else\n                {\n                    fprintf(stderr, \"%s: Not enough samples in file [%s]\\n\", progname, argv[1]);\n                    exit(1);\n                }\n            }\n\n            for (j = 0; j < 16; j++)\n            {\n                if (state[j] >= 0x8000)\n                {\n                    state[j] = 0x7fff;\n                }\n                if (state[j] < -0x7fff)\n                {\n                    state[j] = -0x7fff;\n                }\n                aloops[i].state[j] = state[j];\n            }\n\n            aloops[i].count = -1;\n            while (nRepeats > 0)\n            {\n                for (; currentPos + 16 < aloops[i].end; currentPos += 16)\n                {\n                    if (fread(inBuffer, sizeof(s16), 16, ifile) == 16)\n                    {\n                        BSWAP16_MANY(inBuffer, 16)\n                        vencodeframe(ofile, inBuffer, state, coefTable, order, npredictors, 16);\n                        nBytes += 9;\n                    }\n                }\n                left = aloops[i].end - currentPos;\n                fread(inBuffer, sizeof(s16), left, ifile);\n                BSWAP16_MANY(inBuffer, left)\n                fseek(ifile, startPointer, SEEK_SET);\n                fread(inBuffer + left, sizeof(s16), 16 - left, ifile);\n                BSWAP16_MANY(inBuffer + left, 16 - left)\n                vencodeframe(ofile, inBuffer, state, coefTable, order, npredictors, 16);\n                nBytes += 9;\n                currentPos = aloops[i].start - left + 16;\n                nRepeats--;\n            }\n            aloops[i].end = newEnd;\n        }\n    }\n\n    nFrames = (CommChunk.numFramesH << 16) + CommChunk.numFramesL;\n    if ((nloops > 0U) & truncate)\n    {\n        lookupMarker(&loopEnd, loops[nloops - 1].endLoop, markers, numMarkers);\n        nFrames = (loopEnd + 16 < nFrames ? loopEnd + 16 : nFrames);\n    }\n\n    while (currentPos < nFrames)\n    {\n        if (nFrames - currentPos < 16)\n        {\n            nsam = nFrames - currentPos;\n        }\n        else\n        {\n            nsam = 16;\n        }\n\n        if (fread(inBuffer, 2, nsam, ifile) == nsam)\n        {\n            BSWAP16_MANY(inBuffer, nsam)\n            vencodeframe(ofile, inBuffer, state, coefTable, order, npredictors, nsam);\n            currentPos += nsam;\n            nBytes += 9;\n        }\n        else\n        {\n            fprintf(stderr, \"Missed a frame!\\n\");\n            break;\n        }\n    }\n\n    if (nBytes % 2)\n    {\n        nBytes++;\n        ts = 0;\n        fwrite(&ts, 1, 1, ofile);\n    }\n\n    if (nloops > 0)\n    {\n        strnLen = sizeof(\"VADPCMLOOPS\") - 1;\n        AppChunk.ckID = 0x4150504c; // APPL\n        AppChunk.ckSize = nloops * sizeof(ALADPCMloop) + strnLen + 4 + 1 + 2 + 2;\n        AppChunk.formType = 0x73746f63; // stoc\n        BSWAP32(AppChunk.ckID)\n        BSWAP32(AppChunk.ckSize)\n        BSWAP32(AppChunk.formType)\n        fwrite(&AppChunk, sizeof(Chunk), 1, ofile);\n        fwrite(&strnLen, 1, 1, ofile);\n        fwrite(appLoopName, strnLen, 1, ofile);\n        ts = 1;\n        BSWAP16(ts)\n        fwrite(&ts, sizeof(s16), 1, ofile);\n        BSWAP16(nloops)\n        fwrite(&nloops, sizeof(s16), 1, ofile);\n        BSWAP16(nloops)\n        for (i = 0; i < nloops; i++)\n        {\n            BSWAP32(aloops[i].start)\n            BSWAP32(aloops[i].end)\n            BSWAP32(aloops[i].count)\n            BSWAP16_MANY(aloops[i].state, 16)\n            fwrite(&aloops[i], sizeof(ALADPCMloop), 1, ofile);\n        }\n    }\n\n    fseek(ofile, soundPointer, SEEK_SET);\n    CSndChunk.ckID = 0x53534e44; // SSND\n    CSndChunk.ckSize = nBytes + 8;\n    BSWAP32(CSndChunk.ckID)\n    BSWAP32(CSndChunk.ckSize)\n    fwrite(&CSndChunk, sizeof(ChunkHeader), 1, ofile);\n    fseek(ofile, cChunkPos, SEEK_SET);\n    nFrames = nBytes * 16 / 9;\n    CommChunk.numFramesH = nFrames >> 16;\n    CommChunk.numFramesL = nFrames & 0xffff;\n    BSWAP16(CommChunk.numChannels)\n    BSWAP16(CommChunk.numFramesH)\n    BSWAP16(CommChunk.numFramesL)\n    BSWAP16(CommChunk.sampleSize)\n    BSWAP16(CommChunk.compressionTypeH)\n    BSWAP16(CommChunk.compressionTypeL)\n    fwrite(&CommChunk, sizeof(CommonChunk), 1, ofile);\n    fclose(ifile);\n    fclose(ofile);\n    return 0;\n}\n"
  },
  {
    "path": "tools/sdk-tools/adpcm/vdecode.c",
    "content": "#include <stdio.h>\n#include \"vadpcm.h\"\n\nvoid vdecodeframe(FILE *ifile, s32 *outp, s32 order, s32 ***coefTable)\n{\n    s32 optimalp;\n    s32 scale;\n    s32 maxlevel;\n    s32 i;\n    s32 j;\n    s32 in_vec[16];\n    s32 ix[16];\n    u8 header;\n    u8 c;\n\n    maxlevel = 7;\n    fread(&header, 1, 1, ifile);\n    scale = 1 << (header >> 4);\n    optimalp = header & 0xf;\n\n    for (i = 0; i < 16; i += 2)\n    {\n        fread(&c, 1, 1, ifile);\n        ix[i] = c >> 4;\n        ix[i + 1] = c & 0xf;\n\n        if (ix[i] <= maxlevel)\n        {\n            ix[i] *= scale;\n        }\n        else\n        {\n            ix[i] = (-0x10 - -ix[i]) * scale;\n        }\n\n        if (ix[i + 1] <= maxlevel)\n        {\n            ix[i + 1] *= scale;\n        }\n        else\n        {\n            ix[i + 1] = (-0x10 - -ix[i + 1]) * scale;\n        }\n    }\n\n    for (j = 0; j < 2; j++)\n    {\n        for (i = 0; i < 8; i++)\n        {\n            in_vec[i + order] = ix[j * 8 + i];\n        }\n\n        if (j == 0)\n        {\n            for (i = 0; i < order; i++)\n            {\n                in_vec[i] = outp[16 - order + i];\n            }\n        }\n        else\n        {\n            for (i = 0; i < order; i++)\n            {\n                in_vec[i] = outp[j * 8 - order + i];\n            }\n        }\n\n        for (i = 0; i < 8; i++)\n        {\n            outp[i + j * 8] = inner_product(order + 8, coefTable[optimalp][i], in_vec);\n        }\n    }\n}\n"
  },
  {
    "path": "tools/sdk-tools/adpcm/vencode.c",
    "content": "#include <stdio.h>\n#include <stdlib.h>\n#include <math.h>\n#include \"vadpcm.h\"\n\nvoid vencodeframe(FILE *ofile, s16 *inBuffer, s32 *state, s32 ***coefTable, s32 order, s32 npredictors, s32 nsam)\n{\n    s16 ix[16];\n    s32 prediction[16];\n    s32 inVector[16];\n    s32 saveState[16];\n    s32 optimalp;\n    s32 scale;\n    s32 llevel;\n    s32 ulevel;\n    s32 i;\n    s32 j;\n    s32 k;\n    s32 ie[16];\n    s32 nIter;\n    s32 max;\n    s32 cV;\n    s32 maxClip;\n    u8 header;\n    u8 c;\n    f32 e[16];\n    f32 se;\n    f32 min;\n\n    // We are only given 'nsam' samples; pad with zeroes to 16.\n    for (i = nsam; i < 16; i++)\n    {\n        inBuffer[i] = 0;\n    }\n\n    llevel = -8;\n    ulevel = -llevel - 1;\n\n    // Determine the best-fitting predictor.\n    min = 1e30;\n    optimalp = 0;\n    for (k = 0; k < npredictors; k++)\n    {\n        // Copy over the last 'order' samples from the previous output.\n        for (i = 0; i < order; i++)\n        {\n            inVector[i] = state[16 - order + i];\n        }\n\n        // For 8 samples...\n        for (i = 0; i < 8; i++)\n        {\n            // Compute a prediction based on 'order' values from the old state,\n            // plus previous errors in this chunk, as an inner product with the\n            // coefficient table.\n            prediction[i] = inner_product(order + i, coefTable[k][i], inVector);\n            // Record the error in inVector (thus, its first 'order' samples\n            // will contain actual values, the rest will be error terms), and\n            // in floating point form in e (for no particularly good reason).\n            inVector[i + order] = inBuffer[i] - prediction[i];\n            e[i] = (f32) inVector[i + order];\n        }\n\n        // For the next 8 samples, start with 'order' values from the end of\n        // the previous 8-sample chunk of inBuffer. (The code is equivalent to\n        // inVector[i] = inBuffer[8 - order + i].)\n        for (i = 0; i < order; i++)\n        {\n            inVector[i] = prediction[8 - order + i] + inVector[8 + i];\n        }\n\n        // ... and do the same thing as before to get predictions.\n        for (i = 0; i < 8; i++)\n        {\n            prediction[8 + i] = inner_product(order + i, coefTable[k][i], inVector);\n            inVector[i + order] = inBuffer[8 + i] - prediction[8 + i];\n            e[8 + i] = (f32) inVector[i + order];\n        }\n\n        // Compute the L2 norm of the errors; the lowest norm decides which\n        // predictor to use.\n        se = 0.0f;\n        for (j = 0; j < 16; j++)\n        {\n            se += e[j] * e[j];\n        }\n\n        if (se < min)\n        {\n            min = se;\n            optimalp = k;\n        }\n    }\n\n    // Do exactly the same thing again, for real.\n    for (i = 0; i < order; i++)\n    {\n        inVector[i] = state[16 - order + i];\n    }\n\n    for (i = 0; i < 8; i++)\n    {\n        prediction[i] = inner_product(order + i, coefTable[optimalp][i], inVector);\n        inVector[i + order] = inBuffer[i] - prediction[i];\n        e[i] = (f32) inVector[i + order];\n    }\n\n    for (i = 0; i < order; i++)\n    {\n        inVector[i] = prediction[8 - order + i] + inVector[8 + i];\n    }\n\n    for (i = 0; i < 8; i++)\n    {\n        prediction[8 + i] = inner_product(order + i, coefTable[optimalp][i], inVector);\n        inVector[i + order] = inBuffer[8 + i] - prediction[8 + i];\n        e[8 + i] = (f32) inVector[i + order];\n    }\n\n    // Clamp the errors to 16-bit signed ints, and put them in ie.\n    clamp(16, e, ie, 16);\n\n    // Find a value with highest absolute value.\n    // @bug If this first finds -2^n and later 2^n, it should set 'max' to the\n    // latter, which needs a higher value for 'scale'.\n    max = 0;\n    for (i = 0; i < 16; i++)\n    {\n        if (fabs(ie[i]) > fabs(max))\n        {\n            max = ie[i];\n        }\n    }\n\n    // Compute which power of two we need to scale down by in order to make\n    // all values representable as 4-bit signed integers (i.e. be in [-8, 7]).\n    // The worst-case 'max' is -2^15, so this will be at most 12.\n    for (scale = 0; scale <= 12; scale++)\n    {\n        if (max <= ulevel && max >= llevel)\n        {\n            goto out;\n        }\n        max /= 2;\n    }\nout:;\n\n    for (i = 0; i < 16; i++)\n    {\n        saveState[i] = state[i];\n    }\n\n    // Try with the computed scale, but if it turns out we don't fit in 4 bits\n    // (if some |cV| >= 2), use scale + 1 instead (i.e. downscaling by another\n    // factor of 2).\n    scale--;\n    nIter = 0;\n    do\n    {\n        nIter++;\n        maxClip = 0;\n        scale++;\n        if (scale > 12)\n        {\n            scale = 12;\n        }\n\n        // Copy over the last 'order' samples from the previous output.\n        for (i = 0; i < order; i++)\n        {\n            inVector[i] = saveState[16 - order + i];\n        }\n\n        // For 8 samples...\n        for (i = 0; i < 8; i++)\n        {\n            // Compute a prediction based on 'order' values from the old state,\n            // plus previous *quantized* errors in this chunk (because that's\n            // all the decoder will have available).\n            prediction[i] = inner_product(order + i, coefTable[optimalp][i], inVector);\n\n            // Compute the error, and divide it by 2^scale, rounding to the\n            // nearest integer. This should ideally result in a 4-bit integer.\n            se = (f32) inBuffer[i] - (f32) prediction[i];\n            ix[i] = qsample(se, 1 << scale);\n\n            // Clamp the error to a 4-bit signed integer, and record what delta\n            // was needed for that.\n            cV = (s16) clip(ix[i], llevel, ulevel) - ix[i];\n            if (maxClip < abs(cV))\n            {\n                maxClip = abs(cV);\n            }\n            ix[i] += cV;\n\n            // Record the quantized error in inVector for later predictions,\n            // and the quantized (decoded) output in state (for use in the next\n            // batch of 8 samples).\n            inVector[i + order] = ix[i] * (1 << scale);\n            state[i] = prediction[i] + inVector[i + order];\n        }\n\n        // Copy over the last 'order' decoded samples from the above chunk.\n        for (i = 0; i < order; i++)\n        {\n            inVector[i] = state[8 - order + i];\n        }\n\n        // ... and do the same thing as before.\n        for (i = 0; i < 8; i++)\n        {\n            prediction[8 + i] = inner_product(order + i, coefTable[optimalp][i], inVector);\n            se = (f32) inBuffer[8 + i] - (f32) prediction[8 + i];\n            ix[8 + i] = qsample(se, 1 << scale);\n            cV = (s16) clip(ix[8 + i], llevel, ulevel) - ix[8 + i];\n            if (maxClip < abs(cV))\n            {\n                maxClip = abs(cV);\n            }\n            ix[8 + i] += cV;\n            inVector[i + order] = ix[8 + i] * (1 << scale);\n            state[8 + i] = prediction[8 + i] + inVector[i + order];\n        }\n    }\n    while (maxClip >= 2 && nIter < 2);\n\n    // The scale, the predictor index, and the 16 computed outputs are now all\n    // 4-bit numbers. Write them out as 1 + 8 bytes.\n    header = (scale << 4) | (optimalp & 0xf);\n    fwrite(&header, 1, 1, ofile);\n    for (i = 0; i < 16; i += 2)\n    {\n        c = (ix[i] << 4) | (ix[i + 1] & 0xf);\n        fwrite(&c, 1, 1, ofile);\n    }\n}\n"
  },
  {
    "path": "tools/sdk-tools/adpcm/vpredictor.c",
    "content": "#include <stdio.h>\n#include <stdlib.h>\n#include \"vadpcm.h\"\n\ns32 readcodebook(FILE *fhandle, s32 ****table, s32 *order, s32 *npredictors)\n{\n    s32 **table_entry;\n    s32 i;\n    s32 j;\n    s32 k;\n\n    fscanf(fhandle, \"%d\", order);\n    fscanf(fhandle, \"%d\", npredictors);\n    *table = malloc(*npredictors * sizeof(s32 **));\n    for (i = 0; i < *npredictors; i++)\n    {\n        (*table)[i] = malloc(8 * sizeof(s32 *));\n        for (j = 0; j < 8; j++)\n        {\n            (*table)[i][j] = malloc((*order + 8) * sizeof(s32));\n        }\n    }\n\n    for (i = 0; i < *npredictors; i++)\n    {\n        table_entry = (*table)[i];\n        for (j = 0; j < *order; j++)\n        {\n            for (k = 0; k < 8; k++)\n            {\n                fscanf(fhandle, \"%d\", &table_entry[k][j]);\n            }\n        }\n\n        for (k = 1; k < 8; k++)\n        {\n            table_entry[k][*order] = table_entry[k - 1][*order - 1];\n        }\n\n        table_entry[0][*order] = 1 << 11;\n\n        for (k = 1; k < 8; k++)\n        {\n            for (j = 0; j < k; j++)\n            {\n                table_entry[j][k + *order] = 0;\n            }\n\n            for (; j < 8; j++)\n            {\n                table_entry[j][k + *order] = table_entry[j - k][*order];\n            }\n        }\n    }\n    return 0;\n}\n\ns32 readaifccodebook(FILE *fhandle, s32 ****table, s16 *order, s16 *npredictors)\n{\n    s32 **table_entry;\n    s32 i;\n    s32 j;\n    s32 k;\n    s16 ts;\n\n    fread(order, sizeof(s16), 1, fhandle);\n    BSWAP16(*order)\n    fread(npredictors, sizeof(s16), 1, fhandle);\n    BSWAP16(*npredictors)\n    *table = malloc(*npredictors * sizeof(s32 **));\n    for (i = 0; i < *npredictors; i++)\n    {\n        (*table)[i] = malloc(8 * sizeof(s32 *));\n        for (j = 0; j < 8; j++)\n        {\n            (*table)[i][j] = malloc((*order + 8) * sizeof(s32));\n        }\n    }\n\n    for (i = 0; i < *npredictors; i++)\n    {\n        table_entry = (*table)[i];\n        for (j = 0; j < *order; j++)\n        {\n            for (k = 0; k < 8; k++)\n            {\n                fread(&ts, sizeof(s16), 1, fhandle);\n                BSWAP16(ts)\n                table_entry[k][j] = ts;\n            }\n        }\n\n        for (k = 1; k < 8; k++)\n        {\n            table_entry[k][*order] = table_entry[k - 1][*order - 1];\n        }\n\n        table_entry[0][*order] = 1 << 11;\n\n        for (k = 1; k < 8; k++)\n        {\n            for (j = 0; j < k; j++)\n            {\n                table_entry[j][k + *order] = 0;\n            }\n\n            for (; j < 8; j++)\n            {\n                table_entry[j][k + *order] = table_entry[j - k][*order];\n            }\n        }\n    }\n    return 0;\n}\n\ns32 inner_product(s32 length, s32 *v1, s32 *v2)\n{\n    s32 j;\n    s32 dout;\n    s32 fiout;\n    s32 out;\n\n    j = 0;\n    out = 0;\n    for (; j < length; j++)\n    {\n        out += *v1++ * *v2++;\n    }\n\n    // Compute \"out / 2^11\", rounded down.\n    dout = out / (1 << 11);\n    fiout = dout * (1 << 11);\n    if (out - fiout < 0)\n    {\n        return dout - 1;\n    }\n    else\n    {\n        return dout;\n    }\n}\n"
  },
  {
    "path": "tools/sdk-tools/tabledesign/.gitignore",
    "content": "*.o\n*.s\n*.dump\n*.aiff\n*.aifc\n*.table\n/tabledesign_irix\n/tabledesign_native\n/tabledesign_orig\n"
  },
  {
    "path": "tools/sdk-tools/tabledesign/Makefile",
    "content": "# Makefile for building tabledesign for either IRIX or natively.\n# For an IRIX build, the env variable IRIX_ROOT should point to the root of an\n# IRIX filesystem, and QEMU_IRIX should point to the qemu-irix binary.\n\nIRIX_CC := $(QEMU_IRIX) -silent -L $(IRIX_ROOT) $(IRIX_ROOT)/usr/bin/cc\nIRIX_CFLAGS := -fullwarn -Wab,-r4300_mul -Xcpluscomm -mips1 -O2\n\nNATIVE_CC := gcc\nNATIVE_CFLAGS := -Wall -Wno-uninitialized -O2\n\nLDFLAGS := -lm -laudiofile\n\ndefault: native\nall: irix native\n\nirix: tabledesign_irix\nnative: tabledesign_native\n\nclean:\n\t$(RM) *.o tabledesign_irix tabledesign_native\n\n%.o: %.c\n\t$(IRIX_CC) -c $(IRIX_CFLAGS) $< -o $@\n\ntabledesign_irix: tabledesign.o codebook.o estimate.o print.o\n\t$(IRIX_CC) $^ -o $@ $(LDFLAGS)\n\ntabledesign_native: tabledesign.c codebook.c estimate.c print.c\n\t$(NATIVE_CC) $(NATIVE_CFLAGS) $^ -o $@ $(LDFLAGS)\n\n.PHONY: default all irix native clean\n"
  },
  {
    "path": "tools/sdk-tools/tabledesign/codebook.c",
    "content": "#include <stdlib.h>\n#include \"tabledesign.h\"\n\nvoid split(double **table, double *delta, int order, int npredictors, double scale)\n{\n    int i, j;\n\n    for (i = 0; i < npredictors; i++)\n    {\n        for (j = 0; j <= order; j++)\n        {\n            table[i + npredictors][j] = table[i][j] + delta[j] * scale;\n        }\n    }\n}\n\nvoid refine(double **table, int order, int npredictors, double **data, int dataSize, int refineIters, UNUSED double unused)\n{\n    int iter; // spD8\n    double **rsums;\n    int *counts; // spD0\n    double *temp_s7;\n    double dist;\n    double dummy; // spC0\n    double bestValue;\n    int bestIndex;\n    int i, j;\n\n    rsums = malloc(npredictors * sizeof(double*));\n    for (i = 0; i < npredictors; i++)\n    {\n        rsums[i] = malloc((order + 1) * sizeof(double));\n    }\n\n    counts = malloc(npredictors * sizeof(int));\n    temp_s7 = malloc((order + 1) * sizeof(double));\n\n    for (iter = 0; iter < refineIters; iter++)\n    {\n        for (i = 0; i < npredictors; i++)\n        {\n            counts[i] = 0;\n            for (j = 0; j <= order; j++)\n            {\n                rsums[i][j] = 0.0;\n            }\n        }\n\n        for (i = 0; i < dataSize; i++)\n        {\n            bestValue = 1e30;\n            bestIndex = 0;\n\n            for (j = 0; j < npredictors; j++)\n            {\n                dist = model_dist(table[j], data[i], order);\n                if (dist < bestValue)\n                {\n                    bestValue = dist;\n                    bestIndex = j;\n                }\n            }\n\n            counts[bestIndex]++;\n            rfroma(data[i], order, temp_s7);\n            for (j = 0; j <= order; j++)\n            {\n                rsums[bestIndex][j] += temp_s7[j];\n            }\n        }\n\n        for (i = 0; i < npredictors; i++)\n        {\n            if (counts[i] > 0)\n            {\n                for (j = 0; j <= order; j++)\n                {\n                    rsums[i][j] /= counts[i];\n                }\n            }\n        }\n\n        for (i = 0; i < npredictors; i++)\n        {\n            durbin(rsums[i], order, temp_s7, table[i], &dummy);\n\n            for (j = 1; j <= order; j++)\n            {\n                if (temp_s7[j] >=  1.0) temp_s7[j] =  0.9999999999;\n                if (temp_s7[j] <= -1.0) temp_s7[j] = -0.9999999999;\n            }\n\n            afromk(temp_s7, table[i], order);\n        }\n    }\n\n    free(counts);\n    for (i = 0; i < npredictors; i++)\n    {\n        free(rsums[i]);\n    }\n    free(rsums);\n    free(temp_s7);\n}\n"
  },
  {
    "path": "tools/sdk-tools/tabledesign/estimate.c",
    "content": "#include <math.h>\n#include <stdlib.h>\n#include \"tabledesign.h\"\n\n/**\n * Computes the autocorrelation of a vector. More precisely, it computes the\n * dot products of vec[i:] and vec[:-i] for i in [0, k). Unused.\n *\n * See https://en.wikipedia.org/wiki/Autocorrelation.\n */\nvoid acf(double *vec, int n, double *out, int k)\n{\n    int i, j;\n    double sum;\n    for (i = 0; i < k; i++)\n    {\n        sum = 0.0;\n        for (j = 0; j < n - i; j++)\n        {\n            sum += vec[j + i] * vec[j];\n        }\n        out[i] = sum;\n    }\n}\n\n// https://en.wikipedia.org/wiki/Durbin%E2%80%93Watson_statistic ?\n// \"detects the presence of autocorrelation at lag 1 in the residuals (prediction errors)\"\nint durbin(double *arg0, int n, double *arg2, double *arg3, double *outSomething)\n{\n    int i, j;\n    double sum, div;\n    int ret;\n\n    arg3[0] = 1.0;\n    div = arg0[0];\n    ret = 0;\n\n    for (i = 1; i <= n; i++)\n    {\n        sum = 0.0;\n        for (j = 1; j <= i-1; j++)\n        {\n            sum += arg3[j] * arg0[i - j];\n        }\n\n        arg3[i] = (div > 0.0 ? -(arg0[i] + sum) / div : 0.0);\n        arg2[i] = arg3[i];\n\n        if (fabs(arg2[i]) > 1.0)\n        {\n            ret++;\n        }\n\n        for (j = 1; j < i; j++)\n        {\n            arg3[j] += arg3[i - j] * arg3[i];\n        }\n\n        div *= 1.0 - arg3[i] * arg3[i];\n    }\n    *outSomething = div;\n    return ret;\n}\n\nvoid afromk(double *in, double *out, int n)\n{\n    int i, j;\n    out[0] = 1.0;\n    for (i = 1; i <= n; i++)\n    {\n        out[i] = in[i];\n        for (j = 1; j <= i - 1; j++)\n        {\n            out[j] += out[i - j] * out[i];\n        }\n    }\n}\n\nint kfroma(double *in, double *out, int n)\n{\n    int i, j;\n    double div;\n    double temp;\n    double *next;\n    int ret;\n\n    ret = 0;\n    next = malloc((n + 1) * sizeof(double));\n\n    out[n] = in[n];\n    for (i = n - 1; i >= 1; i--)\n    {\n        for (j = 0; j <= i; j++)\n        {\n            temp = out[i + 1];\n            div = 1.0 - (temp * temp);\n            if (div == 0.0)\n            {\n                free(next);\n                return 1;\n            }\n            next[j] = (in[j] - in[i + 1 - j] * temp) / div;\n        }\n\n        for (j = 0; j <= i; j++)\n        {\n            in[j] = next[j];\n        }\n\n        out[i] = next[i];\n        if (fabs(out[i]) > 1.0)\n        {\n            ret++;\n        }\n    }\n\n    free(next);\n    return ret;\n}\n\nvoid rfroma(double *arg0, int n, double *arg2)\n{\n    int i, j;\n    double **mat;\n    double div;\n\n    mat = malloc((n + 1) * sizeof(double*));\n    mat[n] = malloc((n + 1) * sizeof(double));\n    mat[n][0] = 1.0;\n    for (i = 1; i <= n; i++)\n    {\n        mat[n][i] = -arg0[i];\n    }\n\n    for (i = n; i >= 1; i--)\n    {\n        mat[i - 1] = malloc(i * sizeof(double));\n        div = 1.0 - mat[i][i] * mat[i][i];\n        for (j = 1; j <= i - 1; j++)\n        {\n            mat[i - 1][j] = (mat[i][i - j] * mat[i][i] + mat[i][j]) / div;\n        }\n    }\n\n    arg2[0] = 1.0;\n    for (i = 1; i <= n; i++)\n    {\n        arg2[i] = 0.0;\n        for (j = 1; j <= i; j++)\n        {\n            arg2[i] += mat[i][j] * arg2[i - j];\n        }\n    }\n\n    free(mat[n]);\n    for (i = n; i > 0; i--)\n    {\n        free(mat[i - 1]);\n    }\n    free(mat);\n}\n\ndouble model_dist(double *arg0, double *arg1, int n)\n{\n    double *sp3C;\n    double *sp38;\n    double ret;\n    int i, j;\n\n    sp3C = malloc((n + 1) * sizeof(double));\n    sp38 = malloc((n + 1) * sizeof(double));\n    rfroma(arg1, n, sp3C);\n\n    for (i = 0; i <= n; i++)\n    {\n        sp38[i] = 0.0;\n        for (j = 0; j <= n - i; j++)\n        {\n            sp38[i] += arg0[j] * arg0[i + j];\n        }\n    }\n\n    ret = sp38[0] * sp3C[0];\n    for (i = 1; i <= n; i++)\n    {\n        ret += 2 * sp3C[i] * sp38[i];\n    }\n\n    free(sp3C);\n    free(sp38);\n    return ret;\n}\n\n// compute autocorrelation matrix?\nvoid acmat(short *in, int n, int m, double **out)\n{\n    int i, j, k;\n    for (i = 1; i <= n; i++)\n    {\n        for (j = 1; j <= n; j++)\n        {\n            out[i][j] = 0.0;\n            for (k = 0; k < m; k++)\n            {\n                out[i][j] += in[k - i] * in[k - j];\n            }\n        }\n    }\n}\n\n// compute autocorrelation vector?\nvoid acvect(short *in, int n, int m, double *out)\n{\n    int i, j;\n    for (i = 0; i <= n; i++)\n    {\n        out[i] = 0.0;\n        for (j = 0; j < m; j++)\n        {\n            out[i] -= in[j - i] * in[j];\n        }\n    }\n}\n\n/**\n * Replaces a real n-by-n matrix \"a\" with the LU decomposition of a row-wise\n * permutation of itself.\n *\n * Input parameters:\n * a: The matrix which is operated on. 1-indexed; it should be of size\n *    (n+1) x (n+1), and row/column index 0 is not used.\n * n: The size of the matrix.\n *\n * Output parameters:\n * indx: The row permutation performed. 1-indexed; it should be of size n+1,\n *       and index 0 is not used.\n * d: the determinant of the permutation matrix.\n *\n * Returns 1 to indicate failure if the matrix is singular or has zeroes on the\n * diagonal, 0 on success.\n *\n * Derived from ludcmp in \"Numerical Recipes in C: The Art of Scientific Computing\",\n * with modified error handling.\n */\nint lud(double **a, int n, int *indx, int *d)\n{\n    int i,imax,j,k;\n    double big,dum,sum,temp;\n    double min,max;\n    double *vv;\n\n    vv = malloc((n + 1) * sizeof(double));\n    *d=1;\n    for (i=1;i<=n;i++) {\n        big=0.0;\n        for (j=1;j<=n;j++)\n            if ((temp=fabs(a[i][j])) > big) big=temp;\n        if (big == 0.0) return 1;\n        vv[i]=1.0/big;\n    }\n    for (j=1;j<=n;j++) {\n        for (i=1;i<j;i++) {\n            sum=a[i][j];\n            for (k=1;k<i;k++) sum -= a[i][k]*a[k][j];\n            a[i][j]=sum;\n        }\n        big=0.0;\n        for (i=j;i<=n;i++) {\n            sum=a[i][j];\n            for (k=1;k<j;k++)\n                sum -= a[i][k]*a[k][j];\n            a[i][j]=sum;\n            if ( (dum=vv[i]*fabs(sum)) >= big) {\n                big=dum;\n                imax=i;\n            }\n        }\n        if (j != imax) {\n            for (k=1;k<=n;k++) {\n                dum=a[imax][k];\n                a[imax][k]=a[j][k];\n                a[j][k]=dum;\n            }\n            *d = -(*d);\n            vv[imax]=vv[j];\n        }\n        indx[j]=imax;\n        if (a[j][j] == 0.0) return 1;\n        if (j != n) {\n            dum=1.0/(a[j][j]);\n            for (i=j+1;i<=n;i++) a[i][j] *= dum;\n        }\n    }\n    free(vv);\n\n    min = 1e10;\n    max = 0.0;\n    for (i = 1; i <= n; i++)\n    {\n        temp = fabs(a[i][i]);\n        if (temp < min) min = temp;\n        if (temp > max) max = temp;\n    }\n    return min / max < 1e-10 ? 1 : 0;\n}\n\n/**\n * Solves the set of n linear equations Ax = b, using LU decomposition\n * back-substitution.\n *\n * Input parameters:\n * a: The LU decomposition of a matrix, created by \"lud\".\n * n: The size of the matrix.\n * indx: Row permutation vector, created by \"lud\".\n * b: The vector b in the equation. 1-indexed; is should be of size n+1, and\n *    index 0 is not used.\n *\n * Output parameters:\n * b: The output vector x. 1-indexed.\n *\n * From \"Numerical Recipes in C: The Art of Scientific Computing\".\n */\nvoid lubksb(double **a, int n, int *indx, double *b)\n{\n    int i,ii=0,ip,j;\n    double sum;\n\n    for (i=1;i<=n;i++) {\n        ip=indx[i];\n        sum=b[ip];\n        b[ip]=b[i];\n        if (ii)\n            for (j=ii;j<=i-1;j++) sum -= a[i][j]*b[j];\n        else if (sum) ii=i;\n        b[i]=sum;\n    }\n    for (i=n;i>=1;i--) {\n        sum=b[i];\n        for (j=i+1;j<=n;j++) sum -= a[i][j]*b[j];\n        b[i]=sum/a[i][i];\n    }\n}\n"
  },
  {
    "path": "tools/sdk-tools/tabledesign/print.c",
    "content": "#include <stdio.h>\n#include <stdlib.h>\n#include \"tabledesign.h\"\n\nint print_entry(FILE *out, double *row, int order)\n{\n    double **table;\n    double fval;\n    int ival;\n    int i, j, k;\n    int overflows;\n\n    table = malloc(8 * sizeof(double*));\n\n    for (i = 0; i < 8; i++)\n    {\n        table[i] = malloc(order * sizeof(double));\n    }\n\n    for (i = 0; i < order; i++)\n    {\n        for (j = 0; j < i; j++)\n        {\n            table[i][j] = 0.0;\n        }\n\n        for (j = i; j < order; j++)\n        {\n            table[i][j] = -row[order - j + i];\n        }\n    }\n\n    for (i = order; i < 8; i++)\n    {\n        for (j = 0; j < order; j++)\n        {\n            table[i][j] = 0.0;\n        }\n    }\n\n    for (i = 1; i < 8; i++)\n    {\n        for (j = 1; j <= order; j++)\n        {\n            if (i - j >= 0)\n            {\n                for (k = 0; k < order; k++)\n                {\n                    table[i][k] -= row[j] * table[i - j][k];\n                }\n            }\n        }\n    }\n\n    overflows = 0;\n    for (i = 0; i < order; i++)\n    {\n        for (j = 0; j < 8; j++)\n        {\n            fval = table[j][i] * 2048.0;\n            if (fval < 0.0)\n            {\n                ival = (int) (fval - 0.5);\n                if (ival < -0x8000)\n                {\n                    overflows++;\n                }\n            }\n            else\n            {\n                ival = (int) (fval + 0.5);\n                if (ival >= 0x8000)\n                {\n                    overflows++;\n                }\n            }\n            fprintf(out, \"%5d \", ival);\n        }\n\n        fprintf(out, \"\\n\");\n    }\n\n    for (i = 0; i < 8; i++)\n    {\n        free(table[i]);\n    }\n    free(table);\n    return overflows;\n}\n"
  },
  {
    "path": "tools/sdk-tools/tabledesign/tabledesign.c",
    "content": "#include <stdio.h>\n#include <stdlib.h>\n#include <math.h>\n#include <getopt.h>\n#include <audiofile.h>\n#include \"tabledesign.h\"\n\n#ifdef __sgi\n\ntypedef long SampleFormat;\n\n#define MODE_READ \"r\"\n\n#else\n\n// The modern implementation of SGI's audiofile library which is in Ubuntu\n// (https://github.com/mpruett/audiofile/) has renamed some of the functions,\n// and changed some data types.\n\ntypedef int SampleFormat;\n#define AFopenfile afOpenFile\n#define AFgetchannels afGetChannels\n#define AFgettrackids afGetTrackIDs\n#define AFgetsampfmt afGetSampleFormat\n#define AFgetframecnt afGetFrameCount\n#define AFgetrate afGetRate\n#define AFreadframes afReadFrames\n\n#define MODE_READ \"rb\"\n\n#endif\n\nchar usage[80] = \"[-o order -s bits -t thresh -i refine_iter -f frame_size] aifcfile\";\n\nint main(int argc, char **argv)\n{\n    const char *programName; // sp118\n    double thresh; // sp110\n    int order; // sp10C\n    int bits; // sp108\n    int refineIters; // sp104\n    int frameSize; // sp100\n    UNUSED int rate;\n    int frameCount;\n    int opt;\n    double *spF4;\n    double dummy; // spE8\n    double **mat; // spE4\n    double **data; // spD0\n    double *splitDelta; // spCC\n    int j; // spC0\n    int permDet;\n    int curBits; // spB8\n    int npredictors; // spB4\n    int *perm; // spB0\n    int numOverflows; // spAC\n    SampleFormat sampleFormat; // sp90\n    SampleFormat sampleWidth; // sp8C\n    AFfilehandle afFile; // sp88\n    int channels;\n    int tracks;\n    double *vec; // s2\n    double **temp_s1;\n    short *temp_s3;\n    int i;\n    int dataSize; // s4\n\n    order = 2;\n    bits = 2;\n    refineIters = 2;\n    frameSize = 16;\n    numOverflows = 0;\n    programName = argv[0];\n    thresh = 10.0;\n\n    if (argc < 2)\n    {\n        fprintf(stderr, \"%s %s\\n\", argv[0], usage);\n        exit(1);\n    }\n\n    while ((opt = getopt(argc, argv, \"o:s:t:i:f:\")) != -1)\n    {\n        switch (opt)\n        {\n        case 'o':\n            if (sscanf(optarg, \"%d\", &order) != 1)\n                order = 2;\n            break;\n        case 's':\n            if (sscanf(optarg, \"%d\", &bits) != 1)\n                bits = 2;\n            break;\n        case 'f':\n            if (sscanf(optarg, \"%d\", &frameSize) != 1)\n                frameSize = 16;\n            break;\n        case 'i':\n            if (sscanf(optarg, \"%d\", &refineIters) != 1)\n                refineIters = 2;\n            break;\n        case 't':\n            if (sscanf(optarg, \"%lf\", &thresh) != 1)\n                thresh = 10.0;\n            break;\n        }\n    }\n\n    argv = &argv[optind - 1];\n\n    afFile = AFopenfile(argv[1], MODE_READ, NULL);\n    if (afFile == NULL)\n    {\n        fprintf(stderr,\n                \"%s: input AIFC file [%s] could not be opened.\\n\",\n                programName, argv[1]);\n        exit(1);\n    }\n\n    channels = AFgetchannels(afFile, AF_DEFAULT_TRACK);\n    if (channels != 1)\n    {\n        fprintf(stderr,\n                \"%s: file [%s] contains %d channels, only 1 channel supported.\\n\",\n                programName, argv[1], channels);\n        exit(1);\n    }\n\n    tracks = AFgettrackids(afFile, NULL);\n    if (tracks != 1)\n    {\n        fprintf(stderr,\n                \"%s: file [%s] contains %d tracks, only 1 track supported.\\n\",\n                programName, argv[1], tracks);\n        exit(1);\n    }\n\n    AFgetsampfmt(afFile, AF_DEFAULT_TRACK, &sampleFormat, &sampleWidth);\n    if (sampleWidth != 16)\n    {\n        fprintf(stderr,\n                \"%s: file [%s] contains %d bit samples, only 16 bit samples supported.\\n\",\n                programName, argv[1], (int)sampleWidth);\n        exit(1);\n    }\n\n    temp_s1 = malloc((1 << bits) * sizeof(double*));\n    for (i = 0; i < (1 << bits); i++)\n    {\n        temp_s1[i] = malloc((order + 1) * sizeof(double));\n    }\n\n    splitDelta = malloc((order + 1) * sizeof(double));\n    temp_s3 = malloc(frameSize * 2 * sizeof(short));\n    for (i = 0; i < frameSize * 2; i++)\n    {\n        temp_s3[i] = 0;\n    }\n\n    vec = malloc((order + 1) * sizeof(double));\n    spF4 = malloc((order + 1) * sizeof(double));\n    mat = malloc((order + 1) * sizeof(double*));\n    for (i = 0; i <= order; i++)\n    {\n        mat[i] = malloc((order + 1) * sizeof(double));\n    }\n\n    perm = malloc((order + 1) * sizeof(int));\n    frameCount = AFgetframecnt(afFile, AF_DEFAULT_TRACK);\n    rate = AFgetrate(afFile, AF_DEFAULT_TRACK);\n    data = malloc(frameCount * sizeof(double*));\n    dataSize = 0;\n\n    while (AFreadframes(afFile, AF_DEFAULT_TRACK, temp_s3 + frameSize, frameSize) == frameSize)\n    {\n        acvect(temp_s3 + frameSize, order, frameSize, vec);\n        if (fabs(vec[0]) > thresh)\n        {\n            acmat(temp_s3 + frameSize, order, frameSize, mat);\n            if (lud(mat, order, perm, &permDet) == 0)\n            {\n                lubksb(mat, order, perm, vec);\n                vec[0] = 1.0;\n                if (kfroma(vec, spF4, order) == 0)\n                {\n                    data[dataSize] = malloc((order + 1) * sizeof(double));\n                    data[dataSize][0] = 1.0;\n\n                    for (i = 1; i <= order; i++)\n                    {\n                        if (spF4[i] >=  1.0) spF4[i] =  0.9999999999;\n                        if (spF4[i] <= -1.0) spF4[i] = -0.9999999999;\n                    }\n\n                    afromk(spF4, data[dataSize], order);\n                    dataSize++;\n                }\n            }\n        }\n\n        for (i = 0; i < frameSize; i++)\n        {\n            temp_s3[i] = temp_s3[i + frameSize];\n        }\n    }\n\n    vec[0] = 1.0;\n    for (j = 1; j <= order; j++)\n    {\n        vec[j] = 0.0;\n    }\n\n    for (i = 0; i < dataSize; i++)\n    {\n        rfroma(data[i], order, temp_s1[0]);\n        for (j = 1; j <= order; j++)\n        {\n            vec[j] += temp_s1[0][j];\n        }\n    }\n\n    for (j = 1; j <= order; j++)\n    {\n        vec[j] /= dataSize;\n    }\n\n    durbin(vec, order, spF4, temp_s1[0], &dummy);\n\n    for (j = 1; j <= order; j++)\n    {\n        if (spF4[j] >=  1.0) spF4[j] =  0.9999999999;\n        if (spF4[j] <= -1.0) spF4[j] = -0.9999999999;\n    }\n\n    afromk(spF4, temp_s1[0], order);\n    curBits = 0;\n    while (curBits < bits)\n    {\n        for (i = 0; i <= order; i++)\n        {\n            splitDelta[i] = 0.0;\n        }\n        splitDelta[order - 1] = -1.0;\n        split(temp_s1, splitDelta, order, 1 << curBits, 0.01);\n        curBits++;\n        refine(temp_s1, order, 1 << curBits, data, dataSize, refineIters, 0.0);\n    }\n\n    npredictors = 1 << curBits;\n    fprintf(stdout, \"%d\\n%d\\n\", order, npredictors);\n\n    for (i = 0; i < npredictors; i++)\n    {\n        numOverflows += print_entry(stdout, temp_s1[i], order);\n    }\n\n    if (numOverflows > 0)\n    {\n        fprintf(stderr, \"There was overflow - check the table\\n\");\n    }\n    return 0;\n}\n"
  },
  {
    "path": "tools/sdk-tools/tabledesign/tabledesign.h",
    "content": "#ifndef TABLEDESIGN_H\n#define TABLEDESIGN_H\n\n#include <stdio.h>\n\n#ifdef __GNUC__\n#define UNUSED __attribute__((unused))\n#else\n#define UNUSED\n#endif\n\n//  estimate.c\nint durbin(double *thing, int n, double *thing2, double *thing3, double *outSomething);\nvoid afromk(double *in, double *out, int n);\nint kfroma(double *in, double *out, int n);\nvoid rfroma(double *dataRow, int n, double *thing3);\ndouble model_dist(double *first, double *second, int n);\nvoid acmat(short *in, int n, int m, double **mat);\nvoid acvect(short *in, int n, int m, double *vec);\nint lud(double **a, int n, int *indx, int *d);\nvoid lubksb(double **a, int n, int *indx, double *b);\n\n// codebook.c\nvoid split(double **table, double *delta, int order, int npredictors, double scale);\nvoid refine(double **table, int order, int npredictors, double **data, int dataSize, int refineIters, double unused);\n\n// print.c\nint print_entry(FILE *out, double *row, int order);\n\n#endif\n"
  },
  {
    "path": "tools/seq_decoder.py",
    "content": "#!/usr/bin/env python3\nimport sys\n\ncommands = {}\ncommands['seq'] = {\n    # non-arg commands\n    0xff: ['end'],\n    0xfe: ['delay1'],\n    0xfd: ['delay', 'var'],\n    0xfc: ['call', 'addr'],\n    0xfb: ['jump', 'addr'],\n    0xfa: ['beqz', 'addr'],\n    0xf9: ['bltz', 'addr'],\n    0xf8: ['loop', 'u8'],\n    0xf7: ['loopend'],\n    0xf5: ['bgez', 'addr'],\n    0xf2: ['reservenotes', 'u8'],\n    0xf1: ['unreservenotes'],\n    0xdf: ['transpose', 's8'],\n    0xde: ['transposerel', 's8'],\n    0xdd: ['settempo', 'u8'],\n    0xdc: ['addtempo', 's8'],\n    0xdb: ['setvol', 'u8'],\n    0xda: ['changevol', 's8'],\n    0xd7: ['initchannels', 'hex16'],\n    0xd6: ['disablechannels', 'hex16'],\n    0xd5: ['setmutescale', 's8'],\n    0xd4: ['mute'],\n    0xd3: ['setmutebhv', 'hex8'],\n    0xd2: ['setshortnotevelocitytable', 'addr'],\n    0xd1: ['setshortnotedurationtable', 'addr'],\n    0xd0: ['setnoteallocationpolicy', 'u8'],\n    0xcc: ['setval', 'u8'],\n    0xc9: ['bitand', 'u8'],\n    0xc8: ['subtract', 'u8'],\n    # arg commands\n    0x00: ['testchdisabled', 'bits:4'],\n    0x50: ['subvariation', 'bits:4:ign'],\n    0x70: ['setvariation', 'bits:4:ign'],\n    0x80: ['getvariation', 'bits:4:ign'],\n    0x90: ['startchannel', 'bits:4', 'addr'],\n}\n\ncommands['chan'] = {\n    # non-arg commands\n    0xff: ['end'],\n    0xfe: ['delay1'],\n    0xfd: ['delay', 'var'],\n    0xfc: ['call', 'addr'],\n    0xfb: ['jump', 'addr'],\n    0xfa: ['beqz', 'addr'],\n    0xf9: ['bltz', 'addr'],\n    0xf8: ['loop', 'u8'],\n    0xf7: ['loopend'],\n    0xf6: ['break'],\n    0xf5: ['bgez', 'addr'],\n    0xf3: ['hang'],\n    0xf2: ['reservenotes', 'u8'],\n    0xf1: ['unreservenotes'],\n    0xe4: ['dyncall'],\n    0xe3: ['setvibratodelay', 'u8'],\n    0xe2: ['setvibratoextentlinear', 'u8', 'u8', 'u8'],\n    0xe1: ['setvibratoratelinear', 'u8', 'u8', 'u8'],\n    0xe0: ['setvolscale', 'u8'],\n    0xdf: ['setvol', 'u8'],\n    0xde: ['freqscale', 'u16'],\n    0xdd: ['setpan', 'u8'],\n    0xdc: ['setpanmix', 'u8'],\n    0xdb: ['transpose', 's8'],\n    0xda: ['setenvelope', 'addr'],\n    0xd9: ['setdecayrelease', 'u8'],\n    0xd8: ['setvibratoextent', 'u8'],\n    0xd7: ['setvibratorate', 'u8'],\n    0xd6: ['setupdatesperframe_unimplemented', 'u8'],\n    0xd4: ['setreverb', 'u8'],\n    0xd3: ['pitchbend', 's8'],\n    0xd2: ['setsustain', 'u8'],\n    0xd1: ['setnoteallocationpolicy', 'u8'],\n    0xd0: ['stereoheadseteffects', 'u8'],\n    0xcc: ['setval', 'u8'],\n    0xcb: ['readseq', 'addr'],\n    0xca: ['setmutebhv', 'hex8'],\n    0xc9: ['bitand', 'u8'],\n    0xc8: ['subtract', 'u8'],\n    0xc7: ['writeseq', 'u8', 'addr'],\n    0xc6: ['setbank', 'u8'],\n    0xc5: ['dynsetdyntable'],\n    0xc4: ['largenoteson'],\n    0xc3: ['largenotesoff'],\n    0xc2: ['setdyntable', 'addr'],\n    0xc1: ['setinstr', 'u8'],\n    # arg commands\n    0x00: ['testlayerfinished', 'bits:4'],\n    0x10: ['startchannel', 'bits:4', 'addr'],\n    0x20: ['disablechannel', 'bits:4'],\n    0x30: ['iowriteval2', 'bits:4', 'u8'],\n    0x40: ['ioreadval2', 'bits:4', 'u8'],\n    0x50: ['ioreadvalsub', 'bits:4'],\n    0x60: ['setnotepriority', 'bits:4'],\n    0x70: ['iowriteval', 'bits:4'],\n    0x80: ['ioreadval', 'bits:4'],\n    0x90: ['setlayer', 'bits:4', 'addr'],\n    0xa0: ['freelayer', 'bits:4'],\n    0xb0: ['dynsetlayer', 'bits:4'],\n}\n\ncommands_layer_base = {\n    # non-arg commands\n    0xc0: ['delay', 'var'],\n    0xc1: ['setshortnotevelocity', 'u8'],\n    0xc2: ['transpose', 's8'],\n    0xc3: ['setshortnotedefaultplaypercentage', 'var'],\n    0xc4: ['somethingon'], # ?? (something to do with decay behavior)\n    0xc5: ['somethingoff'], # ??\n    0xc6: ['setinstr', 'u8'],\n    0xc7: ['portamento', 'hex8', 'u8', 'u8'],\n    0xc8: ['disableportamento'],\n    0xc9: ['setshortnoteduration', 'u8'],\n    0xca: ['setpan', 'u8'],\n    0xf7: ['loopend'],\n    0xf8: ['loop', 'u8'],\n    0xfb: ['jump', 'addr'],\n    0xfc: ['call', 'addr'],\n    0xff: ['end'],\n    # arg commands\n    0xd0: ['setshortnotevelocityfromtable', 'bits:4'],\n    0xe0: ['setshortnotedurationfromtable', 'bits:4'],\n}\n\ncommands['layer_large'] = dict(list(commands_layer_base.items()) + list({\n    0x00: ['note0', 'bits:6', 'var', 'u8', 'u8'],\n    0x40: ['note1', 'bits:6', 'var', 'u8'],\n    0x80: ['note2', 'bits:6', 'u8', 'u8'],\n}.items()))\n\ncommands['layer_small'] = dict(list(commands_layer_base.items()) + list({\n    0x00: ['smallnote0', 'bits:6', 'var'],\n    0x40: ['smallnote1', 'bits:6'],\n    0x80: ['smallnote2', 'bits:6'],\n}.items()))\n\nsh_chan_overrides = [\n    (0x80, ['testlayerfinished', 'bits:3']),\n    (0x88, ['setlayer', 'bits:3', 'addr']),\n    (0x60, ['ioreadval', 'bits:4']),\n    (0x90, ['freelayer', 'bits:4']),\n]\n\ndef valid_cmd_for_nbits(cmd_list, nbits):\n    for arg in cmd_list:\n        if arg.startswith('bits:'):\n            return int(arg.split(':')[1]) == nbits\n    return nbits == 0\n\nprint_end_padding = False\nif \"--print-end-padding\" in sys.argv:\n    print_end_padding = True\n    sys.argv.remove(\"--print-end-padding\")\n\nif len(sys.argv) != 2:\n    print(f\"Usage: {sys.argv[0]} (--emit-asm-macros | input.m64)\")\n    sys.exit(0)\n\nif sys.argv[1] == \"--emit-asm-macros\":\n    print(\"// Macros for disassembled sequence files. This file was automatically generated by seq_decoder.py.\")\n    print(\"// To regenerate it, run: ./tools/seq_decoder.py --emit-asm-macros > include/seq_macros.inc\")\n    print()\n    def print_hword(x):\n        print(f\"    .byte {x} >> 8, {x} & 0xff\")\n\n    def emit_cmd(key, op, cmd):\n        mn = cmd[0]\n        args = cmd[1:]\n        param_names = []\n        param_list = []\n        bits_param_name = None\n        for i, arg in enumerate(args):\n            param_name = chr(97 + i)\n            param_names.append(param_name)\n            param_list.append(param_name + (\"=0\" if arg.endswith(\":ign\") else \"\"))\n            if arg.startswith(\"bits:\"):\n                bits_param_name = param_name\n        print(f\".macro {key}_{mn} {', '.join(param_list)}\".rstrip())\n        if bits_param_name is not None:\n            print(f\"    .byte {hex(op)} + \\\\{bits_param_name}\")\n        else:\n            print(f\"    .byte {hex(op)}\")\n        for arg, param_name in zip(args, param_names):\n            if arg.startswith('bits:'):\n                pass\n            elif arg in ['s8', 'u8', 'hex8']:\n                print(f\"    .byte \\\\{param_name}\")\n            elif arg in ['u16', 'hex16']:\n                print_hword(\"\\\\\" + param_name)\n            elif arg == 'addr':\n                print_hword(f\"(\\\\{param_name} - sequence_start)\")\n            elif arg == 'var_long':\n                print(f\"    var_long \\\\{param_name}\")\n            elif arg == 'var':\n                print(f\"    var \\\\{param_name}\")\n            else:\n                raise Exception(\"Unknown argument type \" + arg)\n        print(\".endm\")\n        print()\n\n    def emit_env_cmd(op, cmd):\n        mn = cmd[0]\n        param_names = []\n        param_list = []\n        for i, arg in enumerate(cmd[1:]):\n            param_name = chr(97 + i)\n            param_names.append(param_name)\n            param_list.append(param_name + (\"=0\" if arg.endswith(\":ign\") else \"\"))\n        print(f\".macro envelope_{mn} {', '.join(param_list)}\".rstrip())\n        if op is not None:\n            print(f\"    .byte {hex(op >> 8)}, {hex(op & 0xff)}\")\n        for param in param_names:\n            print_hword(\"\\\\\" + param)\n        print(\".endm\\n\")\n\n    for key in ['seq', 'chan', 'layer']:\n        print(f\"// {key} commands\\n\")\n        if key == 'layer':\n            cmds = commands['layer_large']\n            for op in sorted(commands['layer_small'].keys()):\n                if op not in cmds:\n                    emit_cmd(key, op, commands['layer_small'][op])\n        else:\n            cmds = commands[key]\n        eu_sh = []\n        us_jp = []\n        sh = sh_chan_overrides if key == 'chan' else []\n        non_sh = []\n        for op in sorted(cmds.keys()):\n            mn = cmds[op][0]\n            if mn == 'setnotepriority':\n                eu_sh.append((0xe9, ['setnotepriority', 'u8']))\n                us_jp.append((op, cmds[op]))\n            elif mn in ['reservenotes', 'unreservenotes']:\n                eu_sh.append((op - 1, cmds[op]))\n                us_jp.append((op, cmds[op]))\n            elif mn in ['testlayerfinished', 'setlayer', 'ioreadval', 'freelayer']:\n                non_sh.append((op, cmds[op]))\n            elif mn not in ['portamento', 'writeseq']:\n                emit_cmd(key, op, cmds[op])\n\n        if key == 'chan':\n            print(\".macro chan_writeseq val, pos, offset\")\n            print(\"    .byte 0xc7, \\\\val\")\n            print_hword(\"(\\\\pos - sequence_start + \\\\offset)\")\n            print(\".endm\\n\")\n            print(\".macro chan_writeseq_nextinstr val, offset\")\n            print(\"    .byte 0xc7, \\\\val\")\n            print_hword(\"(writeseq\\\\@ - sequence_start + \\\\offset)\")\n            print(\"    writeseq\\\\@:\")\n            print(\".endm\\n\")\n            print(\".macro layer_portamento a, b, c\")\n            print(\"    .byte 0xc7, \\\\a, \\\\b\")\n            print(\"    .if ((\\\\a & 0x80) == 0)\")\n            print(\"        var \\\\c\")\n            print(\"    .else\")\n            print(\"        .byte \\\\c\")\n            print(\"    .endif\")\n            print(\".endm\\n\")\n            emit_cmd(key, 0xfd, ['delay_long', 'var_long'])\n        if key == 'layer':\n            emit_cmd(key, 0xc0, ['delay_long', 'var_long'])\n            emit_cmd(key, 0x40, ['note1_long', 'bits:4', 'var_long', 'u8'])\n        if eu_sh or us_jp or sh or non_sh:\n            print(\"#if defined(VERSION_SH) || defined(VERSION_CN)\\n\")\n            for (op, cmd) in eu_sh:\n                emit_cmd(key, op, cmd)\n            for (op, cmd) in sh:\n                emit_cmd(key, op, cmd)\n            print(\"#else\\n\")\n            for (op, cmd) in non_sh:\n                emit_cmd(key, op, cmd)\n            print(\"#ifdef VERSION_EU\\n\")\n            for (op, cmd) in eu_sh:\n                emit_cmd(key, op, cmd)\n            print(\"#else\\n\")\n            for (op, cmd) in us_jp:\n                emit_cmd(key, op, cmd)\n            print(\"#endif\\n\")\n            print(\"#endif\\n\")\n\n    print(\"// envelope commands\\n\")\n    emit_env_cmd(0, ['disable', 'u16'])\n    emit_env_cmd(2**16-1, ['hang', 'u16:ign'])\n    emit_env_cmd(2**16-2, ['goto', 'u16'])\n    emit_env_cmd(2**16-3, ['restart', 'u16:ign'])\n    emit_env_cmd(None, ['line', 'u16', 'u16'])\n\n    print(\"// other commands\\n\")\n    print(\".macro var_long x\")\n    print(\"     .byte (0x80 | (\\\\x & 0x7f00) >> 8), (\\\\x & 0xff)\")\n    print(\".endm\\n\")\n    print(\".macro var x\")\n    print(\"    .if (\\\\x >= 0x80)\")\n    print(\"        var_long \\\\x\")\n    print(\"    .else\")\n    print(\"        .byte \\\\x\")\n    print(\"    .endif\")\n    print(\".endm\\n\")\n    print(\".macro sound_ref a\")\n    print_hword(\"(\\\\a - sequence_start)\")\n    print(\".endm\")\n    sys.exit(0)\n\nfilename = sys.argv[1]\ntry:\n    lang = filename.split('/')[-2]\n    assert lang in ['us', 'jp', 'eu', 'sh']\n    seq_num = int(filename.split('/')[-1].split('_')[0], 16)\nexcept Exception:\n    lang = ''\n    seq_num = -1\n\ntry:\n    with open(filename, 'rb') as f:\n        data = f.read()\nexcept Exception:\n    print(\"Error: could not open file {filename} for reading.\", file=sys.stderr)\n    sys.exit(1)\n\noutput = [None] * len(data)\noutput_instate = [None] * len(data)\nlabel_name = [None] * len(data)\nscript_start = [False] * len(data)\nhit_eof = False\nerrors = []\nseq_writes = []\n\n# Our analysis of large notes mode doesn't persist through multiple channel activations\n# For simplicity, we force large notes always instead, which is valid for SM64.\nforce_large_notes = True\n\nif lang in ['eu', 'sh']:\n    # unreservenotes moved to 0xf0 in EU, and reservenotes took its place\n    commands['chan'][0xf0] = commands['chan'][0xf1]\n    commands['chan'][0xf1] = commands['chan'][0xf2]\n    del commands['chan'][0xf2]\n    # total guess: the same is true for the 'seq'-type command\n    commands['seq'][0xf0] = commands['seq'][0xf1]\n    commands['seq'][0xf1] = commands['seq'][0xf2]\n    del commands['seq'][0xf2]\n    # setnotepriority moved to 0xe9, becoming a non-arg command\n    commands['chan'][0xe9] = ['setnotepriority', 'u8']\n    del commands['chan'][0x60]\n\nif lang == 'sh':\n    del commands['chan'][0x00]\n    del commands['chan'][0xa0]\n    for op, cmd_list in sh_chan_overrides:\n        commands['chan'][op] = cmd_list\n\ndef gen_label(ind, tp):\n    nice_tp = tp.replace('_small', '').replace('_large', '')\n    addr = hex(ind)[2:].upper()\n    ret = f\".{nice_tp}_{addr}\"\n    if ind >= len(data):\n        errors.append(f\"reference to oob label {ret}\")\n        return ret\n\n    if label_name[ind] is not None:\n        return label_name[ind]\n    label_name[ind] = ret\n    return ret\n\ndef gen_mnemonic(tp, b):\n    nice_tp = tp.split('_')[0]\n    mn = commands[tp][b][0]\n    if not mn:\n        mn = f\"{b:02X}\"\n    return f\"{nice_tp}_{mn}\"\n\ndecode_list = []\n\ndef decode_one(state):\n    pos, tp, nesting, large = state\n    orig_pos = pos\n\n    if pos >= len(data):\n        global hit_eof\n        hit_eof = True\n        return\n\n    if output[pos] is not None:\n        if output_instate[pos] != state:\n            errors.append(f\"got to {gen_label(orig_pos, tp)} with both state {state} and {output_instate[pos]}\")\n        return\n\n    def u8():\n        nonlocal pos\n        global hit_eof\n        if pos == len(data):\n            hit_eof = True\n            return 0\n        ret = data[pos]\n        pos += 1\n        return ret\n\n    def u16():\n        hi = u8()\n        lo = u8()\n        return (hi << 8) | lo\n\n    def var():\n        ret = u8()\n        if ret & 0x80:\n            ret = (ret << 8) & 0x7f00;\n            ret |= u8()\n            return (ret, ret < 0x80)\n        return (ret, False)\n\n    if tp == 'soundref':\n        sound = u16()\n        decode_list.append((sound, 'chan', 0, True))\n        if sound < len(data):\n            script_start[sound] = True\n        for p in range(orig_pos, pos):\n            output[p] = ''\n            output_instate[p] = state\n        output[orig_pos] = 'sound_ref ' + gen_label(sound, 'chan')\n        return\n\n    if tp == 'envelope':\n        a = u16()\n        b = u16()\n        for p in range(orig_pos, pos):\n            output[p] = ''\n            output_instate[p] = state\n        if a >= 2**16 - 3:\n            a -= 2**16\n        if a <= 0:\n            mn = ['disable', 'hang', 'goto', 'restart'][-a]\n            output[orig_pos] = f'envelope_{mn} {b}'\n            # assume any goto is backwards and stop decoding\n        else:\n            output[orig_pos] = f'envelope_line {a} {b}'\n            decode_list.append((pos, tp, nesting, large))\n        return\n\n    ins_byte = u8()\n\n    cmds = commands[tp]\n    nbits = 0\n    used_b = ins_byte\n    while True:\n        if used_b in cmds and valid_cmd_for_nbits(cmds[used_b], nbits):\n            break\n        used_b &= ~(1 << nbits)\n        nbits += 1\n        if nbits == 8:\n            errors.append(f\"unrecognized instruction {hex(ins_byte)} for type {tp} at label {gen_label(orig_pos, tp)}\")\n            return\n\n    out_mn = gen_mnemonic(tp, used_b)\n    out_args = []\n    cmd_mn = cmds[used_b][0]\n    cmd_args = cmds[used_b][1:]\n    long_var = False\n\n    for a in cmd_args:\n        if cmd_mn == 'portamento' and len(out_args) == 2 and (int(out_args[0], 0) & 0x80) == 0:\n            a = 'var'\n        if a.startswith('bits:'):\n            low_bits = ins_byte & ((1 << nbits) - 1)\n            if not (a.endswith(':ign') and low_bits == 0):\n                out_args.append(str(low_bits))\n        elif a == 'u8':\n            out_args.append(str(u8()))\n        elif a == 'hex8':\n            out_args.append(hex(u8()))\n        elif a == 's8':\n            v = u8()\n            out_args.append(str(v if v < 128 else v - 256))\n        elif a == 'u16':\n            out_args.append(str(u16()))\n        elif a == 'hex16':\n            out_args.append(hex(u16()))\n        elif a == 'var':\n            val, bad = var()\n            out_args.append(hex(val))\n            if bad:\n                long_var = True\n        elif a == 'addr':\n            v = u16()\n\n            kind = 'addr'\n            if cmd_mn == 'call':\n                kind = tp + '_fn'\n            elif cmd_mn in ['jump', 'beqz', 'bltz', 'bgez']:\n                kind = tp\n            elif cmd_mn == 'startchannel':\n                kind = 'chan'\n            elif cmd_mn == 'setlayer':\n                kind = 'layer'\n            elif cmd_mn == 'setdyntable':\n                kind = 'table'\n            elif cmd_mn == 'setenvelope':\n                kind = 'envelope'\n\n            if v >= len(data):\n                label = gen_label(v, kind)\n                out_args.append(label)\n                errors.append(f\"reference to oob label {label}\")\n            elif cmd_mn == 'writeseq':\n                out_args.append('<fixup>')\n                seq_writes.append((orig_pos, v))\n            else:\n                out_args.append(gen_label(v, kind))\n                if cmd_mn == 'call':\n                    decode_list.append((v, tp, 0, large))\n                    script_start[v] = True\n                elif cmd_mn in ['jump', 'beqz', 'bltz', 'bgez']:\n                    decode_list.append((v, tp, nesting, large))\n                elif cmd_mn == 'startchannel':\n                    decode_list.append((v, 'chan', 0, force_large_notes))\n                    script_start[v] = True\n                elif cmd_mn == 'setlayer':\n                    if large:\n                        decode_list.append((v, 'layer_large', 0, True))\n                    else:\n                        decode_list.append((v, 'layer_small', 0, True))\n                    script_start[v] = True\n                elif cmd_mn == 'setenvelope':\n                    decode_list.append((v, 'envelope', 0, True))\n                    script_start[v] = True\n                else:\n                    script_start[v] = True\n\n    out_all = out_mn\n    if long_var:\n        out_all += \"_long\"\n    if out_args:\n        out_all += ' '\n        out_all += ', '.join(out_args)\n    for p in range(orig_pos, pos):\n        output[p] = ''\n        output_instate[p] = state\n    output[orig_pos] = out_all\n\n    if cmd_mn in ['hang', 'jump']:\n        return\n    if cmd_mn in ['loop']:\n        nesting += 1\n    if cmd_mn == 'end':\n        nesting -= 1\n    if cmd_mn in ['break', 'loopend']:\n        nesting -= 1\n        if nesting < 0:\n            # This is iffy, and actually happens in sequence 0. It will make us\n            # return to the caller's caller at function end.\n            nesting = 0\n    if cmd_mn == 'largenoteson':\n        large = True\n    if cmd_mn == 'largenotesoff':\n        large = False\n    if nesting >= 0:\n        decode_list.append((pos, tp, nesting, large))\n\ndef decode_rec(state, initial):\n    if not initial:\n        v = state[0]\n        gen_label(v, state[1])\n        script_start[v] = True\n    decode_list.append(state)\n    while decode_list:\n        decode_one(decode_list.pop())\n\ndef main():\n    decode_rec((0, 'seq', 0, False), initial=True)\n\n    if seq_num == 0:\n        if lang == 'jp':\n            sound_banks = [\n                (0x14C, 0x70),\n                (0x8A8, 0x38), # stated as 0x30\n                (0xB66, 0x38), # stated as 0x30\n                (0xE09, 0x80),\n                (0x194B, 0x28), # stated as 0x20\n                (0x1CA6, 0x80),\n                (0x27C9, 0x20),\n                (0x2975, 0x30),\n                # same script as bank 3\n                # same script as bank 5\n            ]\n            unused = [\n                (0x1FC4, 'layer_large'),\n                (0x2149, 'layer_large'),\n                (0x2223, 'layer_large'),\n                (0x28C5, 'chan'),\n                (0x3110, 'envelope'),\n                (0x31EC, 'envelope'),\n            ]\n        elif lang == 'us':\n            sound_banks = [\n                (0x14C, 0x70),\n                (0x8F6, 0x38), # stated as 0x30\n                (0xBB4, 0x40),\n                (0xF8E, 0x80),\n                (0x1AF3, 0x28), # stated as 0x20\n                (0x1E4E, 0x80),\n                (0x2971, 0x20),\n                (0x2B1D, 0x40),\n                # same script as bank 3\n                # same script as bank 5\n            ]\n            unused = [\n                (0x216C, 'layer_large'),\n                (0x22F1, 'layer_large'),\n                (0x23CB, 'layer_large'),\n                (0x2A6D, 'chan'),\n                (0x339C, 'envelope'),\n                (0x3478, 'envelope'),\n            ]\n        elif lang == 'eu':\n            sound_banks = [\n                (0x154, 0x70),\n                (0x8FE, 0x38), # stated as 0x30\n                (0xBBC, 0x40),\n                (0xFA5, 0x80),\n                (0x1B0C, 0x28), # stated as 0x20\n                (0x1E67, 0x80),\n                (0x298A, 0x20),\n                (0x2B36, 0x40),\n                # same script as bank 3\n                # same script as bank 5\n            ]\n            unused = [\n                (0xF9A, 'chan'),\n                (0x2185, 'layer_large'),\n                (0x230A, 'layer_large'),\n                (0x23E4, 'layer_large'),\n                (0x2A86, 'chan'),\n                (0x33CC, 'envelope'),\n                (0x34A8, 'envelope'),\n            ]\n        elif lang == 'sh':\n            sound_banks = [\n                (0x154, 0x70),\n                (0x8FE, 0x38), # stated as 0x30\n                (0xBBC, 0x40),\n                (0xFA5, 0x80),\n                (0x1B11, 0x28), # stated as 0x20\n                (0x1E6C, 0x80),\n                (0x298F, 0x20),\n                (0x2B3B, 0x40),\n                # same script as bank 3\n                # same script as bank 5\n            ]\n\n            unused = [\n                (0xF9A, 'chan'),\n                (0x218A, 'layer_large'),\n                (0x230F, 'layer_large'),\n                (0x23E9, 'layer_large'),\n                (0x2A8B, 'chan'),\n                (0x33D0, 'envelope'),\n                (0x34AC, 'envelope'),\n            ]\n\n\n        for (addr, count) in sound_banks:\n            for i in range(count):\n                decode_rec((addr + 2*i, 'soundref', 0, False), initial=True)\n\n        for (addr, tp) in unused:\n            gen_label(addr, tp + '_unused')\n            decode_rec((addr, tp, 0, force_large_notes), initial=False)\n\n    for (pos, write_to) in seq_writes:\n        assert '<fixup>' in output[pos]\n        delta = 0\n        while output[write_to] == '':\n            write_to -= 1\n            delta += 1\n        if write_to > pos and all(output[i] == '' for i in range(pos+1, write_to)):\n            nice_target = str(delta)\n            output[pos] = output[pos].replace('writeseq', 'writeseq_nextinstr')\n        else:\n            tp = output_instate[write_to][1] if output_instate[write_to] is not None else 'addr'\n            nice_target = gen_label(write_to, tp) + \", \" + str(delta)\n        output[pos] = output[pos].replace('<fixup>', nice_target)\n\n    # Add unreachable 'end' markers\n    for i in range(1, len(data)):\n        if (data[i] == 0xff and output[i] is None and output[i - 1] is not None\n                and label_name[i] is None):\n            tp = output_instate[i - 1][1]\n            if tp in [\"seq\", \"chan\", \"layer_small\", \"layer_large\"]:\n                output[i] = gen_mnemonic(tp, 0xff)\n\n    # Add envelope padding\n    for i in range(1, len(data) - 1):\n        if (data[i] == 0 and output[i] is None and output[i - 1] is not None and\n                output[i + 1] is not None and label_name[i] is None and\n                output[i + 1].startswith('envelope')):\n            script_start[i] = True\n            output[i] = \"# padding\\n.byte 0\"\n\n    # Add 'unused' marker labels\n    for i in range(1, len(data)):\n        if (output[i] is None and output[i - 1] is not None and label_name[i] is None):\n            script_start[i] = True\n            gen_label(i, 'unused')\n\n    # Remove up to 15 bytes of padding at the end\n    end_padding = 0\n    for i in range(len(data)-1, -1, -1):\n        if output[i] is not None:\n            break\n        end_padding += 1\n    if end_padding > 15:\n        end_padding = 0\n\n    if print_end_padding:\n        print(end_padding)\n        sys.exit(0)\n\n    print(\".include \\\"seq_macros.inc\\\"\")\n    print(\".section .rodata\")\n    print(\".align 0\")\n    print(\"sequence_start:\")\n    print()\n    for i in range(len(data) - end_padding):\n        if script_start[i] and i > 0:\n            print()\n        if label_name[i] is not None:\n            print(f\"{label_name[i]}:\")\n        o = output[i]\n        if o is None:\n            print(f\".byte {hex(data[i])}\")\n        elif o:\n            print(o)\n        elif label_name[i] is not None:\n            print(\"<mid-instruction>\")\n            errors.append(f\"mid-instruction label {label_name[i]}\")\n\n    if hit_eof:\n        errors.append(\"hit eof!?\")\n\n    if errors:\n        print(f\"[{filename}] errors:\", file=sys.stderr)\n        for w in errors:\n            print(w, file=sys.stderr)\n\nmain()\n"
  },
  {
    "path": "tools/skyconv.c",
    "content": "/* skybox generator */\n\n#define _GNU_SOURCE\n#include <assert.h>\n#include <string.h>\n#include <stdint.h>\n#include <stdlib.h>\n#include <limits.h>\n#include <stdio.h>\n#include <stdbool.h>\n#include <math.h>\n\n#include \"sm64tools/n64graphics.h\"\n#include \"sm64tools/utils.h\"\n\n#define SKYCONV_ENCODING ENCODING_U8\n\ntypedef struct {\n    rgba *px;\n    bool useless;\n    unsigned int pos;\n} TextureTile;\n\ntypedef enum {\n    InvalidType = -1,\n    Skybox,\n    Cake,\n    CakeEU,\n    CakeCN,\n    ImageType_MAX\n} ImageType;\n\ntypedef enum {\n    InvalidMode = -1,\n    Combine,\n    Split\n} OperationMode;\n\ntypedef struct {\n    int imageWidth, imageHeight;\n    int tileWidth, tileHeight;\n    int numCols, numRows;\n    bool wrapX;\n    bool optimizePositions;\n} ImageProps;\n\nstatic const ImageProps IMAGE_PROPERTIES[ImageType_MAX][2] = {\n    [Skybox] = {\n        {248, 248, 31, 31, 8, 8, true, true},\n        {256, 256, 32, 32, 8, 8, true, true},\n    },\n    [Cake] = {\n        {316, 228, 79, 19, 4, 12, false, false},\n        {320, 240, 80, 20, 4, 12, false, false},\n    },\n    [CakeEU] = {\n        {320, 224, 64, 32, 5, 7, false, false},\n        {320, 224, 64, 32, 5, 7, false, false},\n    },\n    [CakeCN] = {\n        {316, 228, 79, 19, 4, 12, false, false},\n        {320, 240, 80, 20, 4, 12, false, false},\n    },\n};\n\ntypedef struct {\n    int cols, rows;\n} TableDimension;\n\nstatic const TableDimension TABLE_DIMENSIONS[ImageType_MAX] = {\n    [Skybox]   = {8, 10},\n    [Cake]     = {4, 12},\n    [CakeEU]   = {5,  7},\n    [CakeCN]   = {4, 12},\n};\n\nTextureTile *tiles;\nImageType type = InvalidType;\nOperationMode mode = InvalidMode;\nchar *programName;\nchar *input, *output;\nchar *writeDir;\nchar skyboxName[256];\nbool expanded = false;\nbool writeTiles;\n\nstatic void allocate_tiles() {\n    const ImageProps props = IMAGE_PROPERTIES[type][true];\n    int tileWidth = props.tileWidth;\n    int tileHeight = props.tileHeight;\n    int numRows = props.numRows;\n    int numCols = props.numCols;\n\n    int tileSize = tileWidth * tileHeight * sizeof(rgba);\n    int totalSize = numRows * numCols * tileSize;\n    tiles = calloc(1, numRows * numCols * sizeof(TextureTile));\n    rgba *tileData = calloc(1, totalSize);\n    for (int row = 0; row < numRows; ++row) {\n        for (int col = 0; col < numCols; ++col) {\n            tiles[row * numCols + col].px = (tileData + (row * numCols + col) * (tileWidth * tileHeight));\n        }\n    }\n}\n\nstatic void free_tiles() {\n    free(tiles->px);\n    free(tiles);\n}\n\nstatic void split_tile(int col, int row, rgba *image, bool expanded) {\n    const ImageProps props = IMAGE_PROPERTIES[type][expanded];\n    int tileWidth = props.tileWidth;\n    int tileHeight = props.tileHeight;\n    int imageWidth = props.imageWidth;\n    int numCols = props.numCols;\n\n    int expandedWidth = IMAGE_PROPERTIES[type][true].tileWidth;\n\n    for (int y = 0; y < tileHeight; y++) {\n        for (int x = 0; x < tileWidth; x++) {\n            int ny = row * tileHeight + y;\n            int nx = col * tileWidth + x;\n            tiles[row * numCols + col].px[y * expandedWidth + x] = image[(ny * imageWidth + nx)];\n        }\n    }\n}\n\nstatic void expand_tiles(ImageType imageType) {\n    const ImageProps props = IMAGE_PROPERTIES[imageType][true];\n    int numRows = props.numRows;\n    int numCols = props.numCols;\n    int tileWidth = props.tileWidth;\n    int tileHeight = props.tileHeight;\n\n    // If the image type wraps,\n    // Copy each tile's left edge to the previous tile's right edge\n    // Each tile's height is still tileHeight - 1\n    if (props.wrapX) {\n        for (int row = 0; row < numRows; ++row) {\n            for (int col = 0; col < numCols; ++col) {\n                int nextCol = (col + 1) % numCols;\n                for (int y = 0; y < (tileHeight - 1); ++y) {\n                    tiles[row * numCols + col].px[(tileWidth - 1) + y * tileWidth] = tiles[row * numCols + nextCol].px[y * tileWidth];\n                }\n            }\n        }\n    } else {\n        // Don't wrap, copy the second to last column instead.\n        for (int row = 0; row < numRows; ++row) {\n            for (int col = 0; col < numCols - 1; ++col) {\n                int nextCol = (col + 1) % numCols;\n                for (int y = 0; y < (tileHeight - 1); ++y) {\n                    tiles[row * numCols + col].px[(tileWidth - 1) + y * tileWidth] = tiles[row * numCols + nextCol].px[y * tileWidth];\n                }\n            }\n            for (int y = 0; y < (tileHeight - 1); ++y) {\n                tiles[row * numCols + (numCols - 1)].px[(tileWidth - 1) + y * tileWidth] = tiles[row * numCols + (numCols - 1)].px[(tileWidth - 2) + y * tileWidth];\n            }\n\n        }\n    }\n\n    // Copy each tile's top edge to the previous tile's bottom edge, EXCEPT for the bottom row, which\n    // just duplicates its second-to-last row\n    for (int row = 0; row < numRows; ++row) {\n        if (row < numRows - 1) {\n            for (int col = 0; col < numCols; ++col) {\n                int nextRow = (row + 1) % numRows;\n                for (int x = 0; x < tileWidth; ++x) {\n                    tiles[row * numCols + col].px[x + (tileHeight - 1) * tileWidth] = tiles[nextRow * numCols + col].px[x];\n                }\n            }\n        }\n        // For the last row of tiles, duplicate each one's second to last row\n        else {\n            for (int col = 0; col < numCols; ++col) {\n                for (int x = 0; x < tileWidth; ++x) {\n                    tiles[row * numCols + col].px[x + (tileHeight - 1) * tileWidth] = tiles[row * numCols + col].px[x + (tileHeight - 2) * tileWidth];\n                }\n            }\n        }\n    }\n}\n\nstatic void init_tiles(rgba *image, bool expanded) {\n    const ImageProps props = IMAGE_PROPERTIES[type][expanded];\n\n    for (int row = 0; row < props.numRows; row++) {\n        for (int col = 0; col < props.numCols; col++) {\n            split_tile(col, row, image, expanded);\n        }\n    }\n\n    // Expand the tiles to their full size\n    if (!expanded) {\n        expand_tiles(type);\n    }\n}\n\nstatic void assign_tile_positions() {\n    const ImageProps props = IMAGE_PROPERTIES[type][true];\n    const size_t TILE_SIZE = props.tileWidth * props.tileHeight * sizeof(rgba);\n\n    unsigned int newPos = 0;\n    for (int i = 0; i < props.numRows * props.numCols; i++) {\n        if (props.optimizePositions) {\n            for (int j = 0; j < i; j++) {\n                if (!tiles[j].useless && memcmp(tiles[j].px, tiles[i].px, TILE_SIZE) == 0) {\n                    tiles[i].useless = 1;\n                    tiles[i].pos = j;\n                    break;\n                }\n            }\n        }\n\n        if (!tiles[i].useless) {\n            tiles[i].pos = newPos;\n            newPos++;\n        }\n    }\n}\n\n// Provide a replacement for realpath on Windows\n#ifdef _WIN32\n#define realpath(path, resolved_path) _fullpath(resolved_path, path, PATH_MAX)\n#endif\n\n/* write pngs to disc */\nvoid write_tiles() {\n    const ImageProps props = IMAGE_PROPERTIES[type][true];\n    char buffer[PATH_MAX];\n    char skyboxName[PATH_MAX];\n\n    if (realpath(writeDir, buffer) == NULL) {\n        fprintf(stderr, \"err: Could not find find img dir %s\", writeDir);\n        exit(EXIT_FAILURE);\n    }\n\n    strcat(buffer, \"/\");\n\n    switch(type) {\n        case Skybox:\n            strcat(buffer, skyboxName);\n        break;\n        case Cake:\n            strcat(buffer, \"cake\");\n        break;\n        case CakeEU:\n            strcat(buffer, \"cake_eu\");\n        break;\n        case CakeCN:\n            strcat(buffer, \"cake_cn\");\n        break;\n        default:\n            exit(EXIT_FAILURE);\n        break;\n    }\n\n    int dirLength = strlen(buffer);\n    char *filename = buffer + dirLength;\n    for (int i = 0; i < props.numRows * props.numCols; i++) {\n        if (!tiles[i].useless) {\n            *filename = 0;\n            snprintf(filename, PATH_MAX, \".%d.rgba16.png\", tiles[i].pos);\n            rgba2png(buffer, tiles[i].px, props.tileWidth, props.tileHeight);\n        }\n    }\n}\n\nstatic unsigned int get_index(TextureTile *t, unsigned int i) {\n    if (t[i].useless) {\n        i = t[i].pos;\n    }\n    return t[i].pos;\n}\n\nstatic void print_raw_data(FILE *cFile, TextureTile *tile) {\n    ImageProps props = IMAGE_PROPERTIES[type][true];\n    uint8_t *raw = malloc(props.tileWidth * props.tileHeight * 2);\n    int size = rgba2raw(raw, tile->px, props.tileWidth, props.tileHeight, 16);\n    fprint_write_output(cFile, SKYCONV_ENCODING, raw, size);\n    free(raw);\n}\n\nstatic void write_skybox_c() { /* write c data to disc */\n    const ImageProps props = IMAGE_PROPERTIES[type][true];\n\n    char fBuffer[PATH_MAX] = \"\";\n    FILE *cFile;\n\n    if (realpath(output, fBuffer) == NULL) {\n        fprintf(stderr, \"err: Could not find find src dir %s\", output);\n        exit(EXIT_FAILURE);\n    }\n\n    sprintf(fBuffer, \"%s/%s_skybox.c\", output, skyboxName);\n    cFile = fopen(fBuffer, \"w\"); /* reset file */\n\n    /* setup C file */\n\n    if (cFile == NULL) {\n        fprintf(stderr, \"err: Could not open %s\\n\", fBuffer);\n    }\n\n    fprintf(cFile, \"#include \\\"types.h\\\"\\n\\n#include \\\"make_const_nonconst.h\\\"\\n\\n\");\n\n    for (int i = 0; i < props.numRows * props.numCols; i++) {\n        if (!tiles[i].useless) {\n            fprintf(cFile, \"ALIGNED8 static const Texture %s_skybox_texture_%05X[] = {\\n\", skyboxName, tiles[i].pos);\n\n            print_raw_data(cFile, &tiles[i]);\n\n            fputs(\"};\\n\\n\", cFile);\n        }\n    }\n\n    fprintf(cFile, \"const Texture *const %s_skybox_ptrlist[] = {\\n\", skyboxName);\n\n    for (int row = 0; row < 8; row++) {\n        for (int col = 0; col < 10; col++) {\n            fprintf(cFile, \"%s_skybox_texture_%05X,\\n\", skyboxName, get_index(tiles, row * 8 + (col % 8)));\n        }\n    }\n\n    fputs(\"};\\n\\n\", cFile);\n    fclose(cFile);\n}\n\nstatic void write_cake_c() {\n    char buffer[PATH_MAX] = \"\";\n    if (realpath(output, buffer) == NULL) {\n        fprintf(stderr, \"err: Could not find find src dir %s\", output);\n        exit(EXIT_FAILURE);\n    }\n\n    if (type == CakeCN) {\n        strcat(buffer, \"/cake_cn.inc.c\");\n    }\n    else if (type == CakeEU) {\n        strcat(buffer, \"/cake_eu.inc.c\");\n    }\n    else {\n        strcat(buffer, \"/cake.inc.c\");\n    }\n\n    FILE *cFile = fopen(buffer, \"w\");\n\n    const char *euSuffx = \"\";\n    if (type == CakeEU) {\n        euSuffx = \"eu_\";\n    }\n\n    int numTiles = TABLE_DIMENSIONS[type].cols * TABLE_DIMENSIONS[type].rows;\n    for (int i = 0; i < numTiles; ++i) {\n        fprintf(cFile, \"ALIGNED8 static const Texture cake_end_texture_%s%d[] = {\\n\", euSuffx, i);\n        print_raw_data(cFile, &tiles[i]);\n        fputs(\"};\\n\\n\", cFile);\n    }\n    fclose(cFile);\n}\n\n// input: the skybox tiles + the table = up to 64 32x32 images (rgba16) + 80 pointers (u32)\n// some pointers point to duplicate entries\nvoid combine_skybox(const char *input, const char *output) {\n    enum { W = 10, H = 8, W2 = 8 };\n\n    FILE *file = fopen(input, \"rb\");\n    if (!file) goto fail;\n    if (fseek(file, 0, SEEK_END)) goto fail;\n\n    ssize_t fileSize = ftell(file);\n    if (fileSize < 8*10*4) goto fail;\n    rewind(file);\n\n    size_t tableIndex = fileSize - 8*10*4;\n    if (tableIndex % (32*32*2) != 0) goto fail;\n\n    // there are at most 64 tiles before the table\n    rgba *tiles[8*8];\n    size_t tileIndex = 0;\n    for (size_t pos = 0; pos < tableIndex; pos += 32*32*2) {\n        uint8_t buf[32*32*2];\n        if (fread(buf, sizeof(buf), 1, file) != 1) goto fail;\n        tiles[tileIndex] = raw2rgba(buf, 32, 32, 16);\n        tileIndex++;\n    }\n\n    uint32_t table[W*H];\n    if (fread(table, sizeof(table), 1, file) != 1) goto fail;\n\n    reverse_endian((unsigned char *) table, W*H*4);\n\n    uint32_t base = table[0];\n    for (int i = 0; i < W*H; i++) {\n        table[i] -= base;\n    }\n\n    // Convert the 256x256 skybox to an editable 248x248 image by skipping the duplicated rows and columns\n    // every 32nd column is a repeat of the 33rd, and\n    // every 32nd row is a repeat of the 33rd, EXCEPT for the last row, but that only matters when\n    // expanding the tiles\n    rgba combined[31*H * 31*W2];\n    for (int i = 0; i < H; i++) {\n        for (int j = 0; j < W2; j++) {\n            int index = table[i*W+j] / 0x800;\n            for (int y = 0; y < 31; y++) {\n                for (int x = 0; x < 31; x++) {\n                    combined[(i*31 + y) * (31*W2) + (j*31 + x)] = tiles[index][y*32 + x];\n                }\n            }\n        }\n    }\n    if (!rgba2png(output, combined, 31*W2, 31*H)) {\n        fprintf(stderr, \"Failed to write skybox image.\\n\");\n        exit(1);\n    }\n    return;\nfail:\n    fprintf(stderr, \"Failed to read skybox binary.\\n\");\n    exit(1);\n}\n\nvoid combine_cakeimg(const char *input, const char *output) {\n    int W, H, SMALLH, SMALLW;\n    if (type == CakeEU) {\n        W = 5;\n        H = 7;\n        SMALLH = 32;\n        SMALLW = 64;\n    } else {\n        W = 4;\n        H = 12;\n        SMALLH = 20;\n        SMALLW = 80;\n    }\n\n    FILE *file = fopen(input, \"rb\");\n    if (!file) goto fail;\n\n    rgba *combined;\n    if (type == Cake) {\n        combined = malloc((SMALLH-1)*H * (SMALLW-1)*W * sizeof(rgba));\n        for (int i = 0; i < H; i++) {\n            for (int j = 0; j < W; j++) {\n                //Read the full tile\n                uint8_t buf[SMALLH * SMALLW * 2];\n                if (fread(buf, sizeof(buf), 1, file) != 1) goto fail;\n                rgba *tile = raw2rgba(buf, SMALLH, SMALLW, 16);\n\n                //Only write the unique parts of each tile\n                for (int y = 0; y < SMALLH - 1; y++) {\n                    for (int x = 0; x < SMALLW - 1; x++) {\n                        combined[(i*(SMALLH-1) + y) * (SMALLW-1)*W + (j*(SMALLW-1) + x)] = tile[y*(SMALLW) + x];\n                    }\n                }\n            }\n        }\n        if (!rgba2png(output, combined, (SMALLW-1)*W, (SMALLH-1)*H)) {\n            fprintf(stderr, \"Failed to write cake image.\\n\");\n            exit(1);\n        }\n    }\n    else {\n        combined = malloc(SMALLH*H * SMALLW*W * sizeof(rgba));\n        for (int i = 0; i < H; i++) {\n            for (int j = 0; j < W; j++) {\n                uint8_t buf[SMALLH * SMALLW * 2];\n                if (fread(buf, sizeof(buf), 1, file) != 1) goto fail;\n                rgba *tile = raw2rgba(buf, SMALLH, SMALLW, 16);\n                for (int y = 0; y < SMALLH; y++) {\n                    for (int x = 0; x < SMALLW; x++) {\n                        combined[(i*SMALLH + y) * SMALLW*W + (j*SMALLW + x)] = tile[y*SMALLW + x];\n                    }\n                }\n            }\n        }\n        if (!rgba2png(output, combined, SMALLW*W, SMALLH*H)) {\n            fprintf(stderr, \"Failed to write cake image.\\n\");\n            exit(1);\n        }\n    }\n    return;\nfail:\n    fprintf(stderr, \"Failed to read cake binary.\\n\");\n    exit(1);\n}\n\n// Modified from n64split\nstatic void usage() {\n    fprintf(stderr,\n            \"Usage: %s --type sky|cake|cake-eu|cake-cn {--combine INPUT OUTPUT | --split INPUT OUTPUT}\\n\"\n            \"\\n\"\n            \"Optional arguments:\\n\"\n            \" --write-tiles OUTDIR      Also create the individual tiles' PNG files\\n\", programName);\n}\n\n// Modified from n64split\nstatic int parse_arguments(int argc, char *argv[]) {\n    programName = argv[0];\n    for (int i = 1; i < argc; ++i) {\n        if (strcmp(argv[i], \"--combine\") == 0) {\n            if (++i >= argc || mode != InvalidMode) {\n                goto invalid;\n            }\n\n            mode = Combine;\n            input = argv[i];\n            if (++i >= argc) {\n                goto invalid;\n            }\n\n            output = argv[i];\n        }\n\n        if (strcmp(argv[i], \"--split\") == 0) {\n            if (++i >= argc || mode != InvalidMode) {\n                goto invalid;\n            }\n\n            mode = Split;\n            input = argv[i];\n            if (++i >= argc) {\n                goto invalid;\n            }\n\n            output = argv[i];\n        }\n\n        if (strcmp(argv[i], \"--type\") == 0) {\n            if (++i >= argc || type != InvalidType) {\n                goto invalid;\n            }\n\n            if (strcmp(argv[i], \"sky\") == 0) {\n                type = Skybox;\n            } else if(strcmp(argv[i], \"cake-cn\") == 0) {\n                type = CakeCN;\n            } else if(strcmp(argv[i], \"cake-eu\") == 0) {\n                type = CakeEU;\n            } else if(strcmp(argv[i], \"cake\") == 0) {\n                type = Cake;\n            }\n        }\n\n        if (strcmp(argv[i], \"--write-tiles\") == 0) {\n            if (++i >= argc || argv[i][0] == '-') {\n                goto invalid;\n            }\n\n            writeTiles = true;\n            writeDir = argv[i];\n        }\n    }\n\n    return 1;\ninvalid:\n    usage();\n    return 0;\n}\n\nbool imageMatchesDimensions(int width, int height) {\n    bool matchesDimensions = false;\n    for (int expand = false; expand <= true; ++expand) {\n        if (width  == IMAGE_PROPERTIES[type][expand].imageWidth &&\n            height == IMAGE_PROPERTIES[type][expand].imageHeight) {\n            matchesDimensions = true;\n            expanded = expand;\n            break;\n        }\n    }\n    if (!matchesDimensions) {\n        if (type != CakeEU) {\n            fprintf(stderr, \"err: That type of image must be either %d x %d or %d x %d. Yours is %d x %d.\\n\",\n                    IMAGE_PROPERTIES[type][false].imageWidth, IMAGE_PROPERTIES[type][false].imageHeight,\n                    IMAGE_PROPERTIES[type][true].imageWidth, IMAGE_PROPERTIES[type][true].imageHeight,\n                    width, height);\n        }\n        else {\n            fprintf(stderr, \"err: That type of image must be %d x %d. Yours is %d x %d.\\n\",\n                    IMAGE_PROPERTIES[type][true].imageWidth, IMAGE_PROPERTIES[type][true].imageHeight,\n                    width, height);\n\n        }\n        return false;\n    }\n\n    if (type == CakeEU) {\n        expanded = true;\n    }\n\n    return true;\n}\n\nint main(int argc, char *argv[]) {\n    if (parse_arguments(argc, argv) == false) {\n        return EXIT_FAILURE;\n    }\n\n    if (type == Skybox && mode == Split) {\n        // Extract the skybox's name (ie: bbh, bidw) from the input png\n        char *base = basename(input);\n        strcpy(skyboxName, base);\n        char *extension = strrchr(skyboxName, '.');\n        if (extension) *extension = '\\0';\n    }\n\n    switch (mode) {\n        case Combine:\n            switch (type) {\n                case Skybox:\n                    combine_skybox(input, output);\n                break;\n                case Cake:\n                case CakeEU:\n                case CakeCN:\n                    combine_cakeimg(input, output);\n                break;\n                default:\n                    usage();\n                    return EXIT_FAILURE;\n                break;\n            }\n        break;\n\n        case Split: {\n            int width, height;\n            rgba *image = png2rgba(input, &width, &height);\n            if (image == NULL) {\n                fprintf(stderr, \"err: Could not load image %s\\n\", argv[1]);\n                return EXIT_FAILURE;\n            }\n\n            if (!imageMatchesDimensions(width, height)) {\n                return EXIT_FAILURE;\n            }\n\n            allocate_tiles();\n            \n            init_tiles(image, expanded);\n            switch (type) {\n                case Skybox:\n                    assign_tile_positions();\n                    write_skybox_c();\n                    break;\n                case Cake:\n                case CakeEU:\n                case CakeCN:\n                    assign_tile_positions();\n                    write_cake_c();\n                    break;\n                default:\n                    fprintf(stderr, \"err: Unknown image type.\\n\");\n                    return EXIT_FAILURE;\n                    break;\n            }\n\n            if (writeTiles) {\n                write_tiles();\n            }\n            free_tiles();\n            free(image);\n        } break;\n        default:\n            usage();\n            return EXIT_FAILURE;\n        break;\n    }\n\n\n    return EXIT_SUCCESS;\n}\n"
  },
  {
    "path": "tools/sm64tools/.gitignore",
    "content": "/mio0\n/n64cksum\n/n64graphics\n/n64graphics_ci\n"
  },
  {
    "path": "tools/sm64tools/Makefile",
    "content": "include ../../util.mk\n\nHOST_ENV := $(shell uname 2>/dev/null || echo Unknown)\nHOST_ENV := $(patsubst MINGW%,MinGW,$(HOST_ENV))\n\nCC           := gcc\nCXX          := g++\nCFLAGS       := -I . -Wall -Wextra -Wno-unused-parameter -pedantic -O2 -s\nLDFLAGS      := -lm\nALL_PROGRAMS := n64graphics n64graphics_ci mio0 n64cksum\n\nBUILD_PROGRAMS := $(ALL_PROGRAMS)\n\ndefault: all\n\nn64graphics_SOURCES := n64graphics.c utils.c\nn64graphics_CFLAGS  := -DN64GRAPHICS_STANDALONE\n\nn64graphics_ci_SOURCES := n64graphics_ci_dir/n64graphics_ci.c n64graphics_ci_dir/exoquant/exoquant.c n64graphics_ci_dir/utils.c\n\nmio0_SOURCES := libmio0.c\nmio0_CFLAGS  := -DMIO0_STANDALONE\n\nn64cksum_SOURCES := n64cksum.c utils.c\nn64cksum_CFLAGS  := -DN64CKSUM_STANDALONE\n\nall: $(BUILD_PROGRAMS)\n\nclean:\n\t$(RM) $(ALL_PROGRAMS)\n\ndefine COMPILE\n$(1): $($1_SOURCES)\n\t$$(CC) $(CFLAGS) $($1_CFLAGS) $$^ -o $$@ $($1_LDFLAGS) $(LDFLAGS)\nendef\n\n$(foreach p,$(BUILD_PROGRAMS),$(eval $(call COMPILE,$(p))))\n\n.PHONY: all clean default\n"
  },
  {
    "path": "tools/sm64tools/libmio0.c",
    "content": "#include <stdio.h>\n#include <string.h>\n#include <stdlib.h>\n#if defined(_WIN32) || defined(_WIN64)\n#include <io.h>\n#include <fcntl.h>\n#endif\n\n#include \"libmio0.h\"\n#include \"utils.h\"\n\n// defines\n\n#define MIO0_VERSION \"0.1\"\n\n#define GET_BIT(buf, bit) ((buf)[(bit) / 8] & (1 << (7 - ((bit) % 8))))\n\n// types\ntypedef struct\n{\n   int *indexes;\n   int allocated;\n   int count;\n   int start;\n} lookback;\n\n// functions\n#define LOOKBACK_COUNT 256\n#define LOOKBACK_INIT_SIZE 128\nstatic lookback *lookback_init(void)\n{\n   lookback *lb = malloc(LOOKBACK_COUNT * sizeof(*lb));\n   for (int i = 0; i < LOOKBACK_COUNT; i++) {\n      lb[i].allocated = LOOKBACK_INIT_SIZE;\n      lb[i].indexes = malloc(lb[i].allocated * sizeof(*lb[i].indexes));\n      lb[i].count = 0;\n      lb[i].start = 0;\n   }\n   return lb;\n}\n\nstatic void lookback_free(lookback *lb)\n{\n   for (int i = 0; i < LOOKBACK_COUNT; i++) {\n      free(lb[i].indexes);\n   }\n   free(lb);\n}\n\nstatic inline void lookback_push(lookback *lkbk, unsigned char val, int index)\n{\n   lookback *lb = &lkbk[val];\n   if (lb->count == lb->allocated) {\n      lb->allocated *= 4;\n      lb->indexes = realloc(lb->indexes, lb->allocated * sizeof(*lb->indexes));\n   }\n   lb->indexes[lb->count++] = index;\n}\n\nstatic void PUT_BIT(unsigned char *buf, int bit, int val)\n{\n   unsigned char mask = 1 << (7 - (bit % 8));\n   unsigned int offset = bit / 8;\n   buf[offset] = (buf[offset] & ~(mask)) | (val ? mask : 0);\n}\n\n// used to find longest matching stream in buffer\n// buf: buffer\n// start_offset: offset in buf to look back from\n// max_search: max number of bytes to find\n// found_offset: returned offset found (0 if none found)\n// returns max length of matching stream (0 if none found)\nstatic int find_longest(const unsigned char *buf, int start_offset, int max_search, int *found_offset, lookback *lkbk)\n{\n   int best_length = 0;\n   int best_offset = 0;\n   int cur_length;\n   int search_len;\n   int farthest, off, i;\n   int lb_idx;\n   const unsigned char first = buf[start_offset];\n   lookback *lb = &lkbk[first];\n\n   // buf\n   //  |    off        start                  max\n   //  V     |+i->       |+i->                 |\n   //  |--------------raw-data-----------------|\n   //        |+i->       |      |+i->\n   //                       +cur_length\n\n   // check at most the past 4096 values\n   farthest = MAX(start_offset - 4096, 0);\n   // find starting index\n   for (lb_idx = lb->start; lb_idx < lb->count && lb->indexes[lb_idx] < farthest; lb_idx++) {}\n   lb->start = lb_idx;\n   for ( ; lb_idx < lb->count && lb->indexes[lb_idx] < start_offset; lb_idx++) {\n      off = lb->indexes[lb_idx];\n      // check at most requested max or up until start\n      search_len = MIN(max_search, start_offset - off);\n      for (i = 0; i < search_len; i++) {\n         if (buf[start_offset + i] != buf[off + i]) {\n            break;\n         }\n      }\n      cur_length = i;\n      // if matched up until start, continue matching in already matched parts\n      if (cur_length == search_len) {\n         // check at most requested max less current length\n         search_len = max_search - cur_length;\n         for (i = 0; i < search_len; i++) {\n            if (buf[start_offset + cur_length + i] != buf[off + i]) {\n               break;\n            }\n         }\n         cur_length += i;\n      }\n      if (cur_length > best_length) {\n         best_offset = start_offset - off;\n         best_length = cur_length;\n      }\n   }\n\n   // return best reverse offset and length (may be 0)\n   *found_offset = best_offset;\n   return best_length;\n}\n\n// decode MIO0 header\n// returns 1 if valid header, 0 otherwise\nint mio0_decode_header(const unsigned char *buf, mio0_header_t *head)\n{\n   if (!memcmp(buf, \"MIO0\", 4)) {\n      head->dest_size = read_u32_be(&buf[4]);\n      head->comp_offset = read_u32_be(&buf[8]);\n      head->uncomp_offset = read_u32_be(&buf[12]);\n      return 1;\n   }\n   return 0;\n}\n\nvoid mio0_encode_header(unsigned char *buf, const mio0_header_t *head)\n{\n   memcpy(buf, \"MIO0\", 4);\n   write_u32_be(&buf[4], head->dest_size);\n   write_u32_be(&buf[8], head->comp_offset);\n   write_u32_be(&buf[12], head->uncomp_offset);\n}\n\nint mio0_decode(const unsigned char *in, unsigned char *out, unsigned int *end)\n{\n   mio0_header_t head;\n   unsigned int bytes_written = 0;\n   int bit_idx = 0;\n   int comp_idx = 0;\n   int uncomp_idx = 0;\n   int valid;\n\n   // extract header\n   valid = mio0_decode_header(in, &head);\n   // verify MIO0 header\n   if (!valid) {\n      return -2;\n   }\n\n   // decode data\n   while (bytes_written < head.dest_size) {\n      if (GET_BIT(&in[MIO0_HEADER_LENGTH], bit_idx)) {\n         // 1 - pull uncompressed data\n         out[bytes_written] = in[head.uncomp_offset + uncomp_idx];\n         bytes_written++;\n         uncomp_idx++;\n      } else {\n         // 0 - read compressed data\n         int idx;\n         int length;\n         int i;\n         const unsigned char *vals = &in[head.comp_offset + comp_idx];\n         comp_idx += 2;\n         length = ((vals[0] & 0xF0) >> 4) + 3;\n         idx = ((vals[0] & 0x0F) << 8) + vals[1] + 1;\n         for (i = 0; i < length; i++) {\n            out[bytes_written] = out[bytes_written - idx];\n            bytes_written++;\n         }\n      }\n      bit_idx++;\n   }\n\n   if (end) {\n      *end = head.uncomp_offset + uncomp_idx;\n   }\n\n   return bytes_written;\n}\n\nint mio0_encode(const unsigned char *in, unsigned int length, unsigned char *out)\n{\n   unsigned char *bit_buf;\n   unsigned char *comp_buf;\n   unsigned char *uncomp_buf;\n   unsigned int bit_length;\n   unsigned int comp_offset;\n   unsigned int uncomp_offset;\n   unsigned int bytes_proc = 0;\n   int bytes_written;\n   int bit_idx = 0;\n   int comp_idx = 0;\n   int uncomp_idx = 0;\n   lookback *lookbacks;\n\n   // initialize lookback buffer\n   lookbacks = lookback_init();\n\n   // allocate some temporary buffers worst case size\n   bit_buf = malloc((length + 7) / 8); // 1-bit/byte\n   comp_buf = malloc(length); // 16-bits/2bytes\n   uncomp_buf = malloc(length); // all uncompressed\n   memset(bit_buf, 0, (length + 7) / 8);\n\n   // encode data\n   // special case for first byte\n   lookback_push(lookbacks, in[0], 0);\n   uncomp_buf[uncomp_idx] = in[0];\n   uncomp_idx += 1;\n   bytes_proc += 1;\n   PUT_BIT(bit_buf, bit_idx++, 1);\n   while (bytes_proc < length) {\n      int offset;\n      int max_length = MIN(length - bytes_proc, 18);\n      int longest_match = find_longest(in, bytes_proc, max_length, &offset, lookbacks);\n      // push current byte before checking next longer match\n      lookback_push(lookbacks, in[bytes_proc], bytes_proc);\n      if (longest_match > 2) {\n         int lookahead_offset;\n         // lookahead to next byte to see if longer match\n         int lookahead_length = MIN(length - bytes_proc - 1, 18);\n         int lookahead_match = find_longest(in, bytes_proc + 1, lookahead_length, &lookahead_offset, lookbacks);\n         // better match found, use uncompressed + lookahead compressed\n         if ((longest_match + 1) < lookahead_match) {\n            // uncompressed byte\n            uncomp_buf[uncomp_idx] = in[bytes_proc];\n            uncomp_idx++;\n            PUT_BIT(bit_buf, bit_idx, 1);\n            bytes_proc++;\n            longest_match = lookahead_match;\n            offset = lookahead_offset;\n            bit_idx++;\n            lookback_push(lookbacks, in[bytes_proc], bytes_proc);\n         }\n         // first byte already pushed above\n         for (int i = 1; i < longest_match; i++) {\n            lookback_push(lookbacks, in[bytes_proc + i], bytes_proc + i);\n         }\n         // compressed block\n         comp_buf[comp_idx] = (((longest_match - 3) & 0x0F) << 4) |\n                              (((offset - 1) >> 8) & 0x0F);\n         comp_buf[comp_idx + 1] = (offset - 1) & 0xFF;\n         comp_idx += 2;\n         PUT_BIT(bit_buf, bit_idx, 0);\n         bytes_proc += longest_match;\n      } else {\n         // uncompressed byte\n         uncomp_buf[uncomp_idx] = in[bytes_proc];\n         uncomp_idx++;\n         PUT_BIT(bit_buf, bit_idx, 1);\n         bytes_proc++;\n      }\n      bit_idx++;\n   }\n\n   // compute final sizes and offsets\n   // +7 so int division accounts for all bits\n   bit_length = ((bit_idx + 7) / 8);\n   // compressed data after control bits and aligned to 4-byte boundary\n   comp_offset = ALIGN(MIO0_HEADER_LENGTH + bit_length, 4);\n   uncomp_offset = comp_offset + comp_idx;\n   bytes_written = uncomp_offset + uncomp_idx;\n\n   // output header\n   memcpy(out, \"MIO0\", 4);\n   write_u32_be(&out[4], length);\n   write_u32_be(&out[8], comp_offset);\n   write_u32_be(&out[12], uncomp_offset);\n   // output data\n   memcpy(&out[MIO0_HEADER_LENGTH], bit_buf, bit_length);\n   memcpy(&out[comp_offset], comp_buf, comp_idx);\n   memcpy(&out[uncomp_offset], uncomp_buf, uncomp_idx);\n\n   // free allocated buffers\n   free(bit_buf);\n   free(comp_buf);\n   free(uncomp_buf);\n   lookback_free(lookbacks);\n\n   return bytes_written;\n}\n\nstatic FILE *mio0_open_out_file(const char *out_file) {\n   if (strcmp(out_file, \"-\") == 0) {\n#if defined(_WIN32) || defined(_WIN64)\n      _setmode(_fileno(stdout), _O_BINARY);\n#endif\n      return stdout;\n   } else {\n      return fopen(out_file, \"wb\");\n   }\n}\n\nint mio0_decode_file(const char *in_file, unsigned long offset, const char *out_file)\n{\n   mio0_header_t head;\n   FILE *in;\n   FILE *out;\n   unsigned char *in_buf = NULL;\n   unsigned char *out_buf = NULL;\n   long file_size;\n   int ret_val = 0;\n   size_t bytes_read;\n   int bytes_decoded;\n   int bytes_written;\n   int valid;\n\n   in = fopen(in_file, \"rb\");\n   if (in == NULL) {\n      return 1;\n   }\n\n   // allocate buffer to read from offset to end of file\n   fseek(in, 0, SEEK_END);\n   file_size = ftell(in);\n   in_buf = malloc(file_size - offset);\n   fseek(in, offset, SEEK_SET);\n\n   // read bytes\n   bytes_read = fread(in_buf, 1, file_size - offset, in);\n   if (bytes_read != file_size - offset) {\n      ret_val = 2;\n      goto free_all;\n   }\n\n   // verify header\n   valid = mio0_decode_header(in_buf, &head);\n   if (!valid) {\n      ret_val = 3;\n      goto free_all;\n   }\n   out_buf = malloc(head.dest_size);\n\n   // decompress MIO0 encoded data\n   bytes_decoded = mio0_decode(in_buf, out_buf, NULL);\n   if (bytes_decoded < 0) {\n      ret_val = 3;\n      goto free_all;\n   }\n\n   // open output file\n   out = mio0_open_out_file(out_file);\n   if (out == NULL) {\n      ret_val = 4;\n      goto free_all;\n   }\n\n   // write data to file\n   bytes_written = fwrite(out_buf, 1, bytes_decoded, out);\n   if (bytes_written != bytes_decoded) {\n      ret_val = 5;\n   }\n\n   // clean up\n   if (out != stdout) {\n      fclose(out);\n   }\nfree_all:\n   if (out_buf) {\n      free(out_buf);\n   }\n   if (in_buf) {\n      free(in_buf);\n   }\n   fclose(in);\n\n   return ret_val;\n}\n\nint mio0_encode_file(const char *in_file, const char *out_file)\n{\n   FILE *in;\n   FILE *out;\n   unsigned char *in_buf = NULL;\n   unsigned char *out_buf = NULL;\n   size_t file_size;\n   size_t bytes_read;\n   int bytes_encoded;\n   int bytes_written;\n   int ret_val = 0;\n\n   in = fopen(in_file, \"rb\");\n   if (in == NULL) {\n      return 1;\n   }\n\n   // allocate buffer to read entire contents of files\n   fseek(in, 0, SEEK_END);\n   file_size = ftell(in);\n   fseek(in, 0, SEEK_SET);\n   in_buf = malloc(file_size);\n\n   // read bytes\n   bytes_read = fread(in_buf, 1, file_size, in);\n   if (bytes_read != file_size) {\n      ret_val = 2;\n      goto free_all;\n   }\n\n   // allocate worst case length\n   out_buf = malloc(MIO0_HEADER_LENGTH + ((file_size+7)/8) + file_size);\n\n   // compress data in MIO0 format\n   bytes_encoded = mio0_encode(in_buf, file_size, out_buf);\n\n   // open output file\n   out = mio0_open_out_file(out_file);\n   if (out == NULL) {\n      ret_val = 4;\n      goto free_all;\n   }\n\n   // write data to file\n   bytes_written = fwrite(out_buf, 1, bytes_encoded, out);\n   if (bytes_written != bytes_encoded) {\n      ret_val = 5;\n   }\n\n   // clean up\n   if (out != stdout) {\n      fclose(out);\n   }\nfree_all:\n   if (out_buf) {\n      free(out_buf);\n   }\n   if (in_buf) {\n      free(in_buf);\n   }\n   fclose(in);\n\n   return ret_val;\n}\n\n// mio0 standalone executable\n#ifdef MIO0_STANDALONE\ntypedef struct\n{\n   char *in_filename;\n   char *out_filename;\n   unsigned int offset;\n   int compress;\n} arg_config;\n\nstatic arg_config default_config =\n{\n   NULL,\n   NULL,\n   0,\n   1\n};\n\nstatic void print_usage(void)\n{\n   ERROR(\"Usage: mio0 [-c / -d] [-o OFFSET] FILE [OUTPUT]\\n\"\n         \"\\n\"\n         \"mio0 v\" MIO0_VERSION \": MIO0 compression and decompression tool\\n\"\n         \"\\n\"\n         \"Optional arguments:\\n\"\n         \" -c           compress raw data into MIO0 (default: compress)\\n\"\n         \" -d           decompress MIO0 into raw data\\n\"\n         \" -o OFFSET    starting offset in FILE (default: 0)\\n\"\n         \"\\n\"\n         \"File arguments:\\n\"\n         \" FILE        input file\\n\"\n         \" [OUTPUT]    output file (default: FILE.out), \\\"-\\\" for stdout\\n\");\n   exit(1);\n}\n\n// parse command line arguments\nstatic void parse_arguments(int argc, char *argv[], arg_config *config)\n{\n   int i;\n   int file_count = 0;\n   if (argc < 2) {\n      print_usage();\n      exit(1);\n   }\n   for (i = 1; i < argc; i++) {\n      if (argv[i][0] == '-' && argv[i][1] != '\\0') {\n         switch (argv[i][1]) {\n            case 'c':\n               config->compress = 1;\n               break;\n            case 'd':\n               config->compress = 0;\n               break;\n            case 'o':\n               if (++i >= argc) {\n                  print_usage();\n               }\n               config->offset = strtoul(argv[i], NULL, 0);\n               break;\n            default:\n               print_usage();\n               break;\n         }\n      } else {\n         switch (file_count) {\n            case 0:\n               config->in_filename = argv[i];\n               break;\n            case 1:\n               config->out_filename = argv[i];\n               break;\n            default: // too many\n               print_usage();\n               break;\n         }\n         file_count++;\n      }\n   }\n   if (file_count < 1) {\n      print_usage();\n   }\n}\n\nint main(int argc, char *argv[])\n{\n   char out_filename[FILENAME_MAX];\n   arg_config config;\n   int ret_val;\n\n   // get configuration from arguments\n   config = default_config;\n   parse_arguments(argc, argv, &config);\n   if (config.out_filename == NULL) {\n      config.out_filename = out_filename;\n      sprintf(config.out_filename, \"%s.out\", config.in_filename);\n   }\n\n   // operation\n   if (config.compress) {\n      ret_val = mio0_encode_file(config.in_filename, config.out_filename);\n   } else {\n      ret_val = mio0_decode_file(config.in_filename, config.offset, config.out_filename);\n   }\n\n   switch (ret_val) {\n      case 1:\n         ERROR(\"Error opening input file \\\"%s\\\"\\n\", config.in_filename);\n         break;\n      case 2:\n         ERROR(\"Error reading from input file \\\"%s\\\"\\n\", config.in_filename);\n         break;\n      case 3:\n         ERROR(\"Error decoding MIO0 data. Wrong offset (0x%X)?\\n\", config.offset);\n         break;\n      case 4:\n         ERROR(\"Error opening output file \\\"%s\\\"\\n\", config.out_filename);\n         break;\n      case 5:\n         ERROR(\"Error writing bytes to output file \\\"%s\\\"\\n\", config.out_filename);\n         break;\n   }\n\n   return ret_val;\n}\n#endif // MIO0_STANDALONE\n\n"
  },
  {
    "path": "tools/sm64tools/libmio0.h",
    "content": "#ifndef LIBMIO0_H_\n#define LIBMIO0_H_\n\n// defines\n\n#define MIO0_HEADER_LENGTH 16\n\n// typedefs\n\ntypedef struct\n{\n   unsigned int dest_size;\n   unsigned int comp_offset;\n   unsigned int uncomp_offset;\n} mio0_header_t;\n\n// function prototypes\n\n// decode MIO0 header\n// returns 1 if valid header, 0 otherwise\nint mio0_decode_header(const unsigned char *buf, mio0_header_t *head);\n\n// encode MIO0 header from struct\nvoid mio0_encode_header(unsigned char *buf, const mio0_header_t *head);\n\n// decode MIO0 data in memory\n// in: buffer containing MIO0 data\n// out: buffer for output data\n// end: output offset of the last byte decoded from in (set to NULL if unwanted)\n// returns bytes extracted to 'out' or negative value on failure\nint mio0_decode(const unsigned char *in, unsigned char *out, unsigned int *end);\n\n// encode MIO0 data in memory\n// in: buffer containing raw data\n// out: buffer for MIO0 data\n// returns size of compressed data in 'out' including MIO0 header\nint mio0_encode(const unsigned char *in, unsigned int length, unsigned char *out);\n\n// decode an entire MIO0 block at an offset from file to output file\n// in_file: input filename\n// offset: offset to start decoding from in_file\n// out_file: output filename\nint mio0_decode_file(const char *in_file, unsigned long offset, const char *out_file);\n\n// encode an entire file\n// in_file: input filename containing raw data to be encoded\n// out_file: output filename to write MIO0 compressed data to\nint mio0_encode_file(const char *in_file, const char *out_file);\n\n#endif // LIBMIO0_H_\n"
  },
  {
    "path": "tools/sm64tools/n64cksum.c",
    "content": "#include <stdio.h>\n#include <stdlib.h>\n\n#include \"n64cksum.h\"\n#include \"utils.h\"\n\n#define N64CKSUM_VERSION \"0.1\"\n\n// compute N64 ROM checksums\n// buf: buffer with extended SM64 data\n// cksum: two element array to write CRC1 and CRC2 to\nvoid n64cksum_calc_6102(unsigned char *buf, unsigned int cksum[]) {\n   uint32_t t2, t3, t4, t6, t7, t8, s0;\n   uint32_t a0, a1, a2, a3;\n   uint32_t v0, v1;\n   uint32_t seed, end_offset, cur_offset, buf_offset;\n\n   // derived from the SM64 boot code\n   seed = 0xF8CA4DDB; // 0x3f * 0x5d588b65;\n   end_offset = 0x100000;\n   cur_offset = 0;\n   buf_offset = 0x1000;\n   seed++;\n   a3 = seed;\n   t2 = seed;\n   t3 = seed;\n   s0 = seed;\n   a2 = seed;\n   t4 = seed;\n\n   do {\n      v0 = read_u32_be(&buf[buf_offset]);\n      v1 = a3 + v0;\n      a1 = v1;\n      if (v1 < a3) {\n         t2++;\n      }\n      v1 = v0 & 0x1F;\n      t7 = 32 - v1;\n      t8 = v0 >> t7;\n      t6 = v0 << v1;\n      a0 = t6 | t8;\n      a3 = a1;\n      t3 ^= v0;\n      s0 += a0;\n      if (a2 < v0) {\n         a2 ^= a3 ^ v0;\n      } else {\n         a2 ^= a0;\n      }\n      cur_offset += 4;\n      t7 = v0 ^ s0;\n      buf_offset += 4;\n      t4 += t7;\n   } while (cur_offset != end_offset);\n\n   cksum[0] = (a3 ^ t2) ^ t3;\n   cksum[1] = (s0 ^ a2) ^ t4;\n}\n\nvoid n64cksum_update_checksums(uint8_t *buf)\n{\n   unsigned int cksum_offsets[] = {0x10, 0x14};\n   uint32_t read_cksum[2];\n   uint32_t calc_cksum[2];\n   int i;\n\n   // assume CIC-NUS-6102\n   INFO(\"BootChip: CIC-NUS-6102\\n\");\n\n   // calculate new N64 header checksum\n   n64cksum_calc_6102(buf, calc_cksum);\n\n   // mimic the n64sums output\n   for (i = 0; i < 2; i++) {\n      read_cksum[i] = read_u32_be(&buf[cksum_offsets[i]]);\n      INFO(\"CRC%d: 0x%08X \", i+1, read_cksum[i]);\n      INFO(\"Calculated: 0x%08X \", calc_cksum[i]);\n      if (calc_cksum[i] == read_cksum[i]) {\n         INFO(\"(Good)\\n\");\n      } else {\n         INFO(\"(Bad)\\n\");\n      }\n   }\n\n   // write checksums into header\n   INFO(\"Writing back calculated Checksum\\n\");\n   write_u32_be(&buf[cksum_offsets[0]], calc_cksum[0]);\n   write_u32_be(&buf[cksum_offsets[1]], calc_cksum[1]);\n}\n\n#ifdef N64CKSUM_STANDALONE\nstatic void print_usage(void)\n{\n   ERROR(\"Usage: n64cksum ROM [ROM_OUT]\\n\"\n         \"\\n\"\n         \"n64cksum v\" N64CKSUM_VERSION \": N64 ROM checksum calculator\\n\"\n         \"\\n\"\n         \"File arguments:\\n\"\n         \" ROM          input ROM file\\n\"\n         \" ROM_OUT      output ROM file (default: overwrites input ROM)\\n\");\n}\n\nint main(int argc, char *argv[])\n{\n   unsigned char *rom_data;\n   char *file_in;\n   char *file_out;\n   long length;\n   long write_length;\n   if (argc < 2) {\n      print_usage();\n      return EXIT_FAILURE;\n   }\n\n   file_in = argv[1];\n   if (argc > 2) {\n      file_out = argv[2];\n   } else {\n      file_out = argv[1];\n   }\n\n   length = read_file(file_in, &rom_data);\n   if (length < 0) {\n      ERROR(\"Error reading input file \\\"%s\\\"\\n\", file_in);\n      return EXIT_FAILURE;\n   }\n\n   n64cksum_update_checksums(rom_data);\n\n   write_length = write_file(file_out, rom_data, length);\n\n   free(rom_data);\n\n   if (write_length != length) {\n      ERROR(\"Error writing to output file \\\"%s\\\"\\n\", file_out);\n      return EXIT_FAILURE;\n   }\n\n   return EXIT_SUCCESS;\n}\n#endif // N64CKSUM_STANDALONE\n"
  },
  {
    "path": "tools/sm64tools/n64cksum.h",
    "content": "#ifndef N64CKSUM_H_\n#define N64CKSUM_H_\n\n#include <stdint.h>\n\n// compute N64 ROM checksums\n// buf: buffer with extended SM64 data\n// cksum: two element array to write CRC1 and CRC2 to\nvoid n64cksum_calc_6102(unsigned char *buf, unsigned int cksum[]);\n\n// update N64 header checksums\n// buf: buffer containing ROM data\n// checksums are written into the buffer\nvoid n64cksum_update_checksums(uint8_t *buf);\n\n#endif // N64CKSUM_H_\n"
  },
  {
    "path": "tools/sm64tools/n64graphics.c",
    "content": "#include <stdio.h>\n#include <stdlib.h>\n#include <strings.h>\n\n#define STBI_NO_LINEAR\n#define STBI_NO_HDR\n#define STBI_NO_TGA\n#define STB_IMAGE_IMPLEMENTATION\n#include <stb/stb_image.h>\n#define STB_IMAGE_WRITE_IMPLEMENTATION\n#include <stb/stb_image_write.h>\n\n#include \"n64graphics.h\"\n#include \"utils.h\"\n\n// SCALE_M_N: upscale/downscale M-bit integer to N-bit\n#define SCALE_5_8(VAL_) (((VAL_) * 0xFF) / 0x1F)\n#define SCALE_8_5(VAL_) ((((VAL_) + 4) * 0x1F) / 0xFF)\n#define SCALE_4_8(VAL_) ((VAL_) * 0x11)\n#define SCALE_8_4(VAL_) ((VAL_) / 0x11)\n#define SCALE_3_8(VAL_) ((VAL_) * 0x24)\n#define SCALE_8_3(VAL_) ((VAL_) / 0x24)\n\n\ntypedef struct\n{\n    enum\n    {\n       IMG_FORMAT_RGBA,\n       IMG_FORMAT_IA,\n       IMG_FORMAT_I,\n       IMG_FORMAT_CI,\n    } format;\n    int depth;\n} img_format;\n\n//---------------------------------------------------------\n// N64 RGBA/IA/I/CI -> internal RGBA/IA\n//---------------------------------------------------------\n\nrgba *raw2rgba(const uint8_t *raw, int width, int height, int depth)\n{\n   rgba *img;\n   int img_size;\n\n   img_size = width * height * sizeof(*img);\n   img = malloc(img_size);\n   if (!img) {\n      ERROR(\"Error allocating %d bytes\\n\", img_size);\n      return NULL;\n   }\n\n   if (depth == 16) {\n      for (int i = 0; i < width * height; i++) {\n         img[i].red   = SCALE_5_8((raw[i*2] & 0xF8) >> 3);\n         img[i].green = SCALE_5_8(((raw[i*2] & 0x07) << 2) | ((raw[i*2+1] & 0xC0) >> 6));\n         img[i].blue  = SCALE_5_8((raw[i*2+1] & 0x3E) >> 1);\n         img[i].alpha = (raw[i*2+1] & 0x01) ? 0xFF : 0x00;\n      }\n   } else if (depth == 32) {\n      for (int i = 0; i < width * height; i++) {\n         img[i].red   = raw[i*4];\n         img[i].green = raw[i*4+1];\n         img[i].blue  = raw[i*4+2];\n         img[i].alpha = raw[i*4+3];\n      }\n   }\n\n   return img;\n}\n\nia *raw2ia(const uint8_t *raw, int width, int height, int depth)\n{\n   ia *img;\n   int img_size;\n\n   img_size = width * height * sizeof(*img);\n   img = malloc(img_size);\n   if (!img) {\n      ERROR(\"Error allocating %u bytes\\n\", img_size);\n      return NULL;\n   }\n\n   switch (depth) {\n      case 16:\n         for (int i = 0; i < width * height; i++) {\n            img[i].intensity = raw[i*2];\n            img[i].alpha     = raw[i*2+1];\n         }\n         break;\n      case 8:\n         for (int i = 0; i < width * height; i++) {\n            img[i].intensity = SCALE_4_8((raw[i] & 0xF0) >> 4);\n            img[i].alpha     = SCALE_4_8(raw[i] & 0x0F);\n         }\n         break;\n      case 4:\n         for (int i = 0; i < width * height; i++) {\n            uint8_t bits;\n            bits = raw[i/2];\n            if (i % 2) {\n               bits &= 0xF;\n            } else {\n               bits >>= 4;\n            }\n            img[i].intensity = SCALE_3_8((bits >> 1) & 0x07);\n            img[i].alpha     = (bits & 0x01) ? 0xFF : 0x00;\n         }\n         break;\n      case 1:\n         for (int i = 0; i < width * height; i++) {\n            uint8_t bits;\n            uint8_t mask;\n            bits = raw[i/8];\n            mask = 1 << (7 - (i % 8)); // MSb->LSb\n            bits = (bits & mask) ? 0xFF : 0x00;\n            img[i].intensity = bits;\n            img[i].alpha     = bits;\n         }\n         break;\n      default:\n         ERROR(\"Error invalid depth %d\\n\", depth);\n         break;\n   }\n\n   return img;\n}\n\nia *raw2i(const uint8_t *raw, int width, int height, int depth)\n{\n   ia *img = NULL;\n   int img_size;\n\n   img_size = width * height * sizeof(*img);\n   img = malloc(img_size);\n   if (!img) {\n      ERROR(\"Error allocating %u bytes\\n\", img_size);\n      return NULL;\n   }\n\n   switch (depth) {\n      case 8:\n         for (int i = 0; i < width * height; i++) {\n            img[i].intensity = raw[i];\n            img[i].alpha     = 0xFF;\n         }\n         break;\n      case 4:\n         for (int i = 0; i < width * height; i++) {\n            uint8_t bits;\n            bits = raw[i/2];\n            if (i % 2) {\n               bits &= 0xF;\n            } else {\n               bits >>= 4;\n            }\n            img[i].intensity = SCALE_4_8(bits);\n            img[i].alpha     = img[i].intensity; // alpha copy intensity\n            // TODO: modes\n            // img[i].alpha     = 0xFF; // alpha = 1\n            // img[i].alpha     = img[i].intensity ? 0xFF : 0x00; // binary\n         }\n         break;\n      default:\n         ERROR(\"Error invalid depth %d\\n\", depth);\n         break;\n   }\n\n   return img;\n}\n\n// convert CI raw data and palette to raw data (either RGBA16 or IA16)\nuint8_t *ci2raw(const uint8_t *rawci, const uint8_t *palette, int width, int height, int ci_depth)\n{\n   uint8_t *raw;\n   int raw_size;\n\n   // first convert to raw RGBA\n   raw_size = sizeof(uint16_t) * width * height;\n   raw = malloc(raw_size);\n   if (!raw) {\n      ERROR(\"Error allocating %u bytes\\n\", raw_size);\n      return NULL;\n   }\n\n   for (int i = 0; i < width * height; i++) {\n      int pal_idx = rawci[i];\n      if (ci_depth == 4) {\n         int byte_idx = i / 2;\n         int nibble = 1 - (i % 2);\n         int shift = 4 * nibble;\n         pal_idx = (rawci[byte_idx] >> shift) & 0xF;\n      }\n      raw[2*i]   = palette[2*pal_idx];\n      raw[2*i+1] = palette[2*pal_idx+1];\n   }\n\n   return raw;\n}\n\n\n//---------------------------------------------------------\n// internal RGBA/IA -> N64 RGBA/IA/I/CI\n// returns length written to 'raw' used or -1 on error\n//---------------------------------------------------------\n\nint rgba2raw(uint8_t *raw, const rgba *img, int width, int height, int depth)\n{\n   int size = (width * height * depth + 7) / 8;\n   INFO(\"Converting RGBA%d %dx%d to raw\\n\", depth, width, height);\n\n   if (depth == 16) {\n      for (int i = 0; i < width * height; i++) {\n         uint8_t r, g, b, a;\n         r = SCALE_8_5(img[i].red);\n         g = SCALE_8_5(img[i].green);\n         b = SCALE_8_5(img[i].blue);\n         a = img[i].alpha ? 0x1 : 0x0;\n         raw[i*2]   = (r << 3) | (g >> 2);\n         raw[i*2+1] = ((g & 0x3) << 6) | (b << 1) | a;\n      }\n   } else if (depth == 32) {\n      for (int i = 0; i < width * height; i++) {\n         raw[i*4]   = img[i].red;\n         raw[i*4+1] = img[i].green;\n         raw[i*4+2] = img[i].blue;\n         raw[i*4+3] = img[i].alpha;\n      }\n   } else {\n      ERROR(\"Error invalid depth %d\\n\", depth);\n      size = -1;\n   }\n\n   return size;\n}\n\nint ia2raw(uint8_t *raw, const ia *img, int width, int height, int depth)\n{\n   int size = (width * height * depth + 7) / 8;\n   INFO(\"Converting IA%d %dx%d to raw\\n\", depth, width, height);\n   memset(raw, 0, size);\n\n   switch (depth) {\n      case 16:\n         for (int i = 0; i < width * height; i++) {\n            raw[i*2]   = img[i].intensity;\n            raw[i*2+1] = img[i].alpha;\n         }\n         break;\n      case 8:\n         for (int i = 0; i < width * height; i++) {\n            uint8_t val = SCALE_8_4(img[i].intensity);\n            uint8_t alpha = SCALE_8_4(img[i].alpha);\n            raw[i] = (val << 4) | alpha;\n         }\n         break;\n      case 4:\n         for (int i = 0; i < width * height; i++) {\n            uint8_t val = SCALE_8_3(img[i].intensity);\n            uint8_t alpha = img[i].alpha ? 0x01 : 0x00;\n            uint8_t old = raw[i/2];\n            if (i % 2) {\n               raw[i/2] = (old & 0xF0) | (val << 1) | alpha;\n            } else {\n               raw[i/2] = (old & 0x0F) | (((val << 1) | alpha) << 4);\n            }\n         }\n         break;\n      case 1:\n         for (int i = 0; i < width * height; i++) {\n            uint8_t val = img[i].intensity;\n            uint8_t old = raw[i/8];\n            uint8_t bit = 1 << (7 - (i % 8));\n            if (val) {\n               raw[i/8] = old | bit;\n            } else {\n               raw[i/8] = old & (~bit);\n            }\n         }\n         break;\n      default:\n         ERROR(\"Error invalid depth %d\\n\", depth);\n         size = -1;\n         break;\n   }\n\n   return size;\n}\n\nint i2raw(uint8_t *raw, const ia *img, int width, int height, int depth)\n{\n   int size = (width * height * depth + 7) / 8;\n   INFO(\"Converting I%d %dx%d to raw\\n\", depth, width, height);\n   memset(raw, 0, size);\n\n   switch (depth) {\n      case 8:\n         for (int i = 0; i < width * height; i++) {\n            raw[i] = img[i].intensity;\n         }\n         break;\n      case 4:\n         for (int i = 0; i < width * height; i++) {\n            uint8_t val = SCALE_8_4(img[i].intensity);\n            uint8_t old = raw[i/2];\n            if (i % 2) {\n               raw[i/2] = (old & 0xF0) | val;\n            } else {\n               raw[i/2] = (old & 0x0F) | (val << 4);\n            }\n         }\n         break;\n      default:\n         ERROR(\"Error invalid depth %d\\n\", depth);\n         size = -1;\n         break;\n   }\n\n   return size;\n}\n\n\n//---------------------------------------------------------\n// internal RGBA/IA -> PNG\n//---------------------------------------------------------\n\nint rgba2png(const char *png_filename, const rgba *img, int width, int height)\n{\n   int ret = 0;\n   INFO(\"Saving RGBA %dx%d to \\\"%s\\\"\\n\", width, height, png_filename);\n\n   // convert to format stb_image_write expects\n   uint8_t *data = malloc(4*width*height);\n   if (data) {\n      for (int j = 0; j < height; j++) {\n         for (int i = 0; i < width; i++) {\n            int idx = j*width + i;\n            data[4*idx]     = img[idx].red;\n            data[4*idx + 1] = img[idx].green;\n            data[4*idx + 2] = img[idx].blue;\n            data[4*idx + 3] = img[idx].alpha;\n         }\n      }\n\n      ret = stbi_write_png(png_filename, width, height, 4, data, 0);\n\n      free(data);\n   }\n\n   return ret;\n}\n\nint ia2png(const char *png_filename, const ia *img, int width, int height)\n{\n   int ret = 0;\n   INFO(\"Saving IA %dx%d to \\\"%s\\\"\\n\", width, height, png_filename);\n\n   // convert to format stb_image_write expects\n   uint8_t *data = malloc(2*width*height);\n   if (data) {\n      for (int j = 0; j < height; j++) {\n         for (int i = 0; i < width; i++) {\n            int idx = j*width + i;\n            data[2*idx]     = img[idx].intensity;\n            data[2*idx + 1] = img[idx].alpha;\n         }\n      }\n\n      ret = stbi_write_png(png_filename, width, height, 2, data, 0);\n\n      free(data);\n   }\n\n   return ret;\n}\n\n//---------------------------------------------------------\n// PNG -> internal RGBA/IA\n//---------------------------------------------------------\n\nrgba *png2rgba(const char *png_filename, int *width, int *height)\n{\n   rgba *img = NULL;\n   int w = 0;\n   int h = 0;\n   int channels = 0;\n   int img_size;\n\n   stbi_uc *data = stbi_load(png_filename, &w, &h, &channels, STBI_default);\n   if (!data || w <= 0 || h <= 0) {\n      ERROR(\"Error loading \\\"%s\\\"\\n\", png_filename);\n      return NULL;\n   }\n   INFO(\"Read \\\"%s\\\" %dx%d channels: %d\\n\", png_filename, w, h, channels);\n\n   img_size = w * h * sizeof(*img);\n   img = malloc(img_size);\n   if (!img) {\n      ERROR(\"Error allocating %u bytes\\n\", img_size);\n      return NULL;\n   }\n\n   switch (channels) {\n      case 3: // red, green, blue\n      case 4: // red, green, blue, alpha\n         for (int j = 0; j < h; j++) {\n            for (int i = 0; i < w; i++) {\n               int idx = j*w + i;\n               img[idx].red   = data[channels*idx];\n               img[idx].green = data[channels*idx + 1];\n               img[idx].blue  = data[channels*idx + 2];\n               if (channels == 4) {\n                  img[idx].alpha = data[channels*idx + 3];\n               } else {\n                  img[idx].alpha = 0xFF;\n               }\n            }\n         }\n         break;\n      case 2: // grey, alpha\n         for (int j = 0; j < h; j++) {\n            for (int i = 0; i < w; i++) {\n               int idx = j*w + i;\n               img[idx].red   = data[2*idx];\n               img[idx].green = data[2*idx];\n               img[idx].blue  = data[2*idx];\n               img[idx].alpha = data[2*idx + 1];\n            }\n         }\n         break;\n      default:\n         ERROR(\"Don't know how to read channels: %d\\n\", channels);\n         free(img);\n         img = NULL;\n   }\n\n   // cleanup\n   stbi_image_free(data);\n\n   *width = w;\n   *height = h;\n   return img;\n}\n\nia *png2ia(const char *png_filename, int *width, int *height)\n{\n   ia *img = NULL;\n   int w = 0, h = 0;\n   int channels = 0;\n   int img_size;\n\n   stbi_uc *data = stbi_load(png_filename, &w, &h, &channels, STBI_default);\n   if (!data || w <= 0 || h <= 0) {\n      ERROR(\"Error loading \\\"%s\\\"\\n\", png_filename);\n      return NULL;\n   }\n   INFO(\"Read \\\"%s\\\" %dx%d channels: %d\\n\", png_filename, w, h, channels);\n\n   img_size = w * h * sizeof(*img);\n   img = malloc(img_size);\n   if (!img) {\n      ERROR(\"Error allocating %d bytes\\n\", img_size);\n      return NULL;\n   }\n\n   switch (channels) {\n      case 3: // red, green, blue\n      case 4: // red, green, blue, alpha\n         ERROR(\"Warning: averaging RGB PNG to create IA\\n\");\n         for (int j = 0; j < h; j++) {\n            for (int i = 0; i < w; i++) {\n               int idx = j*w + i;\n               int sum = data[channels*idx] + data[channels*idx + 1] + data[channels*idx + 2];\n               img[idx].intensity = (sum + 1) / 3; // add 1 to round up where appropriate\n               if (channels == 4) {\n                  img[idx].alpha = data[channels*idx + 3];\n               } else {\n                  img[idx].alpha = 0xFF;\n               }\n            }\n         }\n         break;\n      case 2: // grey, alpha\n         for (int j = 0; j < h; j++) {\n            for (int i = 0; i < w; i++) {\n               int idx = j*w + i;\n               img[idx].intensity = data[2*idx];\n               img[idx].alpha     = data[2*idx + 1];\n            }\n         }\n         break;\n      default:\n         ERROR(\"Don't know how to read channels: %d\\n\", channels);\n         free(img);\n         img = NULL;\n   }\n\n   // cleanup\n   stbi_image_free(data);\n\n   *width = w;\n   *height = h;\n   return img;\n}\n\n// find index of palette color\n// return -1 if not found\nstatic int pal_find_color(const palette_t *pal, uint16_t val)\n{\n   for (int i = 0; i < pal->used; i++) {\n      if (pal->data[i] == val) {\n         return i;\n      }\n   }\n   return -1;\n}\n\n// find value in palette, or add if not there\n// returns palette index entered or -1 if palette full\nstatic int pal_add_color(palette_t *pal, uint16_t val)\n{\n   int idx;\n   idx = pal_find_color(pal, val);\n   if (idx < 0) {\n      if (pal->used == pal->max) {\n         ERROR(\"Error: trying to use more than %d\\n\", pal->max);\n      } else {\n         idx = pal->used;\n         pal->data[pal->used] = val;\n         pal->used++;\n      }\n   }\n   return idx;\n}\n\n// convert from raw (RGBA16 or IA16) format to CI + palette\n// returns 1 on success\nint raw2ci(uint8_t *rawci, palette_t *pal, const uint8_t *raw, int raw_len, int ci_depth)\n{\n   // assign colors to palette\n   pal->used = 0;\n   memset(pal->data, 0, sizeof(pal->data));\n   int ci_idx = 0;\n   for (int i = 0; i < raw_len; i += sizeof(uint16_t)) {\n      uint16_t val = read_u16_be(&raw[i]);\n      int pal_idx = pal_add_color(pal, val);\n      if (pal_idx < 0) {\n         ERROR(\"Error adding color @ (%d): %d (used: %d/%d)\\n\", i, pal_idx, pal->used, pal->max);\n         return 0;\n      } else {\n         switch (ci_depth) {\n            case 8:\n               rawci[ci_idx] = (uint8_t)pal_idx;\n               break;\n            case 4:\n            {\n               int byte_idx = ci_idx / 2;\n               int nibble = 1 - (ci_idx % 2);\n               uint8_t mask = 0xF << (4 * (1 - nibble));\n               rawci[byte_idx] = (rawci[byte_idx] & mask) | (pal_idx << (4 * nibble));\n               break;\n            }\n         }\n         ci_idx++;\n      }\n   }\n   return 1;\n}\n\nconst char *n64graphics_get_read_version(void)\n{\n   return \"stb_image 2.19\";\n}\n\nconst char *n64graphics_get_write_version(void)\n{\n   return \"stb_image_write 1.09\";\n}\n\n#ifdef N64GRAPHICS_STANDALONE\n#define N64GRAPHICS_VERSION \"0.4\"\n#include <string.h>\n\ntypedef enum\n{\n   MODE_EXPORT,\n   MODE_IMPORT,\n} tool_mode;\n\ntypedef struct\n{\n   char *img_filename;\n   char *bin_filename;\n   char *pal_filename;\n   tool_mode mode;\n   write_encoding encoding;\n   unsigned int bin_offset;\n   unsigned int pal_offset;\n   img_format format;\n   img_format pal_format;\n   int width;\n   int height;\n   int bin_truncate;\n   int pal_truncate;\n} graphics_config;\n\nstatic const graphics_config default_config =\n{\n   .img_filename = NULL,\n   .bin_filename = NULL,\n   .pal_filename = NULL,\n   .mode = MODE_EXPORT,\n   .encoding = ENCODING_RAW,\n   .bin_offset = 0,\n   .pal_offset = 0,\n   .format = {IMG_FORMAT_RGBA, 16},\n   .pal_format = {IMG_FORMAT_RGBA, 16},\n   .width = 32,\n   .height = 32,\n   .bin_truncate = 1,\n   .pal_truncate = 1,\n};\n\ntypedef struct\n{\n   const char *name;\n   img_format format;\n} format_entry;\n\nstatic const format_entry format_table[] =\n{\n   {\"rgba16\", {IMG_FORMAT_RGBA, 16}},\n   {\"rgba32\", {IMG_FORMAT_RGBA, 32}},\n   {\"ia1\",    {IMG_FORMAT_IA,    1}},\n   {\"ia4\",    {IMG_FORMAT_IA,    4}},\n   {\"ia8\",    {IMG_FORMAT_IA,    8}},\n   {\"ia16\",   {IMG_FORMAT_IA,   16}},\n   {\"i4\",     {IMG_FORMAT_I,     4}},\n   {\"i8\",     {IMG_FORMAT_I,     8}},\n   {\"ci8\",    {IMG_FORMAT_CI,    8}},\n   {\"ci4\",    {IMG_FORMAT_CI,    4}},\n};\n\nstatic const char *format2str(const img_format *format)\n{\n   for (unsigned i = 0; i < DIM(format_table); i++) {\n      if (format->format == format_table[i].format.format && format->depth == format_table[i].format.depth) {\n         return format_table[i].name;\n      }\n   }\n   return \"unknown\";\n}\n\nstatic int parse_format(img_format *format, const char *str)\n{\n   for (unsigned i = 0; i < DIM(format_table); i++) {\n      if (!strcasecmp(str, format_table[i].name)) {\n         format->format = format_table[i].format.format;\n         format->depth = format_table[i].format.depth;\n         return 1;\n      }\n   }\n   return 0;\n}\n\ntypedef struct\n{\n   const char *name;\n   write_encoding encoding;\n} scheme_entry;\n\nstatic const scheme_entry encoding_table[] =\n{\n   {\"raw\", ENCODING_RAW},\n   {\"u8\",  ENCODING_U8},\n   {\"u16\", ENCODING_U16},\n   {\"u32\", ENCODING_U32},\n   {\"u64\", ENCODING_U64},\n};\n\nstatic const char *encoding2str(write_encoding encoding)\n{\n   for (unsigned i = 0; i < DIM(encoding_table); i++) {\n      if (encoding == encoding_table[i].encoding) {\n         return encoding_table[i].name;\n      }\n   }\n   return \"unknown\";\n}\n\nstatic int parse_encoding(write_encoding *encoding, const char *str)\n{\n   for (unsigned i = 0; i < DIM(encoding_table); i++) {\n      if (!strcasecmp(str, encoding_table[i].name)) {\n         *encoding = encoding_table[i].encoding;\n         return 1;\n      }\n   }\n   return 0;\n}\n\nstatic void print_usage(void)\n{\n   ERROR(\"Usage: n64graphics -e/-i BIN_FILE -g IMG_FILE [-p PAL_FILE] [-o BIN_OFFSET] [-P PAL_OFFSET] [-f FORMAT] [-c CI_FORMAT] [-w WIDTH] [-h HEIGHT] [-V]\\n\"\n         \"\\n\"\n         \"n64graphics v\" N64GRAPHICS_VERSION \": N64 graphics manipulator\\n\"\n         \"\\n\"\n         \"Required arguments:\\n\"\n         \" -e BIN_FILE   export from BIN_FILE to PNG_FILE\\n\"\n         \" -i BIN_FILE   import from PNG_FILE to BIN_FILE\\n\"\n         \" -g IMG_FILE   graphics file to import/export (.png)\\n\"\n         \"Optional arguments:\\n\"\n         \" -o BIN_OFFSET starting offset in BIN_FILE (prevents truncation during import)\\n\"\n         \" -f FORMAT     texture format: rgba16, rgba32, ia1, ia4, ia8, ia16, i4, i8, ci4, ci8 (default: %s)\\n\"\n         \" -s SCHEME     output scheme: raw, u8 (hex), u64 (hex) (default: %s)\\n\"\n         \" -w WIDTH      export texture width (default: %d)\\n\"\n         \" -h HEIGHT     export texture height (default: %d)\\n\"\n         \"CI arguments:\\n\"\n         \" -c CI_FORMAT  CI palette format: rgba16, ia16 (default: %s)\\n\"\n         \" -p PAL_FILE   palette binary file to import/export from/to\\n\"\n         \" -P PAL_OFFSET starting offset in PAL_FILE (prevents truncation during import)\\n\"\n         \"Other arguments:\\n\"\n         \" -v            verbose logging\\n\"\n         \" -V            print version information\\n\",\n         format2str(&default_config.format),\n         encoding2str(default_config.encoding),\n         default_config.width,\n         default_config.height,\n         format2str(&default_config.pal_format));\n}\n\nstatic void print_version(void)\n{\n   ERROR(\"n64graphics v\" N64GRAPHICS_VERSION \", using:\\n\"\n         \"  %s\\n\"\n         \"  %s\\n\",\n         n64graphics_get_read_version(), n64graphics_get_write_version());\n}\n\n// parse command line arguments\nstatic int parse_arguments(int argc, char *argv[], graphics_config *config)\n{\n   for (int i = 1; i < argc; i++) {\n      if (argv[i][0] == '-') {\n         switch (argv[i][1]) {\n            case 'c':\n               if (++i >= argc) return 0;\n               if (!parse_format(&config->pal_format, argv[i])) {\n                  return 0;\n               }\n               break;\n            case 'e':\n               if (++i >= argc) return 0;\n               config->bin_filename = argv[i];\n               config->mode = MODE_EXPORT;\n               break;\n            case 'f':\n               if (++i >= argc) return 0;\n               if (!parse_format(&config->format, argv[i])) {\n                  return 0;\n               }\n               break;\n            case 'g':\n               if (++i >= argc) return 0;\n               config->img_filename = argv[i];\n               break;\n            case 'h':\n               if (++i >= argc) return 0;\n               config->height = strtoul(argv[i], NULL, 0);\n               break;\n            case 'i':\n               if (++i >= argc) return 0;\n               config->bin_filename = argv[i];\n               config->mode = MODE_IMPORT;\n               break;\n            case 'o':\n               if (++i >= argc) return 0;\n               config->bin_offset = strtoul(argv[i], NULL, 0);\n               config->bin_truncate = 0;\n               break;\n            case 'p':\n               if (++i >= argc) return 0;\n               config->pal_filename = argv[i];\n               break;\n            case 'P':\n               if (++i >= argc) return 0;\n               config->pal_offset = strtoul(argv[i], NULL, 0);\n               config->pal_truncate = 0;\n               break;\n            case 's':\n               if (++i >= argc) return 0;\n               if (!parse_encoding(&config->encoding, argv[i])) {\n                  return 0;\n               }\n               break;\n            case 'v':\n               g_verbosity = 1;\n               break;\n            case 'V':\n               print_version();\n               exit(0);\n               break;\n            case 'w':\n               if (++i >= argc) return 0;\n               config->width = strtoul(argv[i], NULL, 0);\n               break;\n            default:\n               return 0;\n               break;\n         }\n      } else {\n         return 0;\n      }\n   }\n   return 1;\n}\n\n// returns 1 if config is valid\nstatic int valid_config(const graphics_config *config)\n{\n   if (!config->bin_filename || !config->img_filename) {\n      return 0;\n   }\n   if (config->format.format == IMG_FORMAT_CI) {\n      if (!config->pal_filename || (config->pal_format.depth != 16) ||\n         (config->pal_format.format != IMG_FORMAT_RGBA && config->pal_format.format != IMG_FORMAT_IA)) {\n         return 0;\n      }\n   }\n   return 1;\n}\n\nint main(int argc, char *argv[])\n{\n   graphics_config config = default_config;\n   rgba *imgr;\n   ia   *imgi;\n   FILE *bin_fp;\n   uint8_t *raw;\n   int raw_size;\n   int length = 0;\n   int flength;\n   int res;\n\n   int valid = parse_arguments(argc, argv, &config);\n   if (!valid || !valid_config(&config)) {\n      print_usage();\n      exit(EXIT_FAILURE);\n   }\n\n   if (config.mode == MODE_IMPORT) {\n      if (0 == strcmp(\"-\", config.bin_filename)) {\n         bin_fp = stdout;\n      } else {\n         if (config.bin_truncate) {\n            bin_fp = fopen(config.bin_filename, \"wb\");\n         } else {\n            bin_fp = fopen(config.bin_filename, \"r+b\");\n         }\n      }\n      if (!bin_fp) {\n         ERROR(\"Error opening \\\"%s\\\"\\n\", config.bin_filename);\n         return -1;\n      }\n      if (!config.bin_truncate) {\n         fseek(bin_fp, config.bin_offset, SEEK_SET);\n      }\n      switch (config.format.format) {\n         case IMG_FORMAT_RGBA:\n            imgr = png2rgba(config.img_filename, &config.width, &config.height);\n            raw_size = (config.width * config.height * config.format.depth + 7) / 8;\n            raw = malloc(raw_size);\n            if (!raw) {\n               ERROR(\"Error allocating %u bytes\\n\", raw_size);\n            }\n            length = rgba2raw(raw, imgr, config.width, config.height, config.format.depth);\n            break;\n         case IMG_FORMAT_IA:\n            imgi = png2ia(config.img_filename, &config.width, &config.height);\n            raw_size = (config.width * config.height * config.format.depth + 7) / 8;\n            raw = malloc(raw_size);\n            if (!raw) {\n               ERROR(\"Error allocating %u bytes\\n\", raw_size);\n            }\n            length = ia2raw(raw, imgi, config.width, config.height, config.format.depth);\n            break;\n         case IMG_FORMAT_I:\n            imgi = png2ia(config.img_filename, &config.width, &config.height);\n            raw_size = (config.width * config.height * config.format.depth + 7) / 8;\n            raw = malloc(raw_size);\n            if (!raw) {\n               ERROR(\"Error allocating %u bytes\\n\", raw_size);\n            }\n            length = i2raw(raw, imgi, config.width, config.height, config.format.depth);\n            break;\n         case IMG_FORMAT_CI:\n         {\n            palette_t pal = {0};\n            FILE *pal_fp;\n            uint8_t *raw16;\n            int raw16_size;\n            int raw16_length;\n            uint8_t *ci;\n            int ci_length;\n            int pal_success;\n            int pal_length;\n\n            if (config.pal_truncate) {\n               pal_fp = fopen(config.pal_filename, \"wb\");\n            } else {\n               pal_fp = fopen(config.pal_filename, \"r+b\");\n            }\n            if (!pal_fp) {\n               ERROR(\"Error opening \\\"%s\\\"\\n\", config.pal_filename);\n               return EXIT_FAILURE;\n            }\n            if (!config.pal_truncate) {\n               fseek(pal_fp, config.bin_offset, SEEK_SET);\n            }\n\n            raw16_size = config.width * config.height * config.pal_format.depth / 8;\n            raw16 = malloc(raw16_size);\n            if (!raw16) {\n               ERROR(\"Error allocating %d bytes\\n\", raw16_size);\n               return EXIT_FAILURE;\n            }\n            switch (config.pal_format.format) {\n               case IMG_FORMAT_RGBA:\n                  imgr = png2rgba(config.img_filename, &config.width, &config.height);\n                  raw16_length = rgba2raw(raw16, imgr, config.width, config.height, config.pal_format.depth);\n                  break;\n               case IMG_FORMAT_IA:\n                  imgi = png2ia(config.img_filename, &config.width, &config.height);\n                  raw16_length = ia2raw(raw16, imgi, config.width, config.height, config.pal_format.depth);\n                  break;\n               default:\n                  ERROR(\"Unsupported palette format: %s\\n\", format2str(&config.pal_format));\n                  exit(EXIT_FAILURE);\n            }\n\n            // convert raw to palette\n            pal.max = (1 << config.format.depth);\n            ci_length = config.width * config.height * config.format.depth / 8;\n            ci = malloc(ci_length);\n            pal_success = raw2ci(ci, &pal, raw16, raw16_length, config.format.depth);\n            if (!pal_success) {\n               ERROR(\"Error converting palette\\n\");\n               exit(EXIT_FAILURE);\n            }\n\n            // pack the bytes\n            uint8_t raw_pal[sizeof(pal.data)];\n            for (int i = 0; i < pal.max; i++) {\n               write_u16_be(&raw_pal[2*i], pal.data[i]);\n            }\n            pal_length = pal.max * sizeof(pal.data[0]);\n            INFO(\"Writing 0x%X bytes to offset 0x%X of \\\"%s\\\"\\n\", pal_length, config.pal_offset, config.pal_filename);\n            flength = fprint_write_output(pal_fp, config.encoding, raw_pal, pal_length);\n            if (config.encoding == ENCODING_RAW && flength != pal_length) {\n               ERROR(\"Error writing %d bytes to \\\"%s\\\"\\n\", pal_length, config.pal_filename);\n            }\n            INFO(\"Wrote 0x%X bytes to \\\"%s\\\"\\n\", flength, config.pal_filename);\n\n            raw = ci;\n            length = ci_length;\n\n            free(raw16);\n            fclose(pal_fp);\n            break;\n         }\n         default:\n            return EXIT_FAILURE;\n      }\n      if (length <= 0) {\n         ERROR(\"Error converting to raw format\\n\");\n         return EXIT_FAILURE;\n      }\n      INFO(\"Writing 0x%X bytes to offset 0x%X of \\\"%s\\\"\\n\", length, config.bin_offset, config.bin_filename);\n      flength = fprint_write_output(bin_fp, config.encoding, raw, length);\n      if (config.encoding == ENCODING_RAW && flength != length) {\n         ERROR(\"Error writing %d bytes to \\\"%s\\\"\\n\", length, config.bin_filename);\n      }\n      INFO(\"Wrote 0x%X bytes to \\\"%s\\\"\\n\", flength, config.bin_filename);\n      if (bin_fp != stdout) {\n         fclose(bin_fp);\n      }\n\n   } else {\n      if (config.width <= 0 || config.height <= 0 || config.format.depth <= 0) {\n         ERROR(\"Error: must set position width and height for export\\n\");\n         return EXIT_FAILURE;\n      }\n      bin_fp = fopen(config.bin_filename, \"rb\");\n      if (!bin_fp) {\n         ERROR(\"Error opening \\\"%s\\\"\\n\", config.bin_filename);\n         return -1;\n      }\n      raw_size = (config.width * config.height * config.format.depth + 7) / 8;\n      raw = malloc(raw_size);\n      if (config.bin_offset > 0) {\n         fseek(bin_fp, config.bin_offset, SEEK_SET);\n      }\n      flength = fread(raw, 1, raw_size, bin_fp);\n      if (flength != raw_size) {\n         ERROR(\"Error reading %d bytes from \\\"%s\\\"\\n\", raw_size, config.bin_filename);\n      }\n      switch (config.format.format) {\n         case IMG_FORMAT_RGBA:\n            imgr = raw2rgba(raw, config.width, config.height, config.format.depth);\n            res = rgba2png(config.img_filename, imgr, config.width, config.height);\n            break;\n         case IMG_FORMAT_IA:\n            imgi = raw2ia(raw, config.width, config.height, config.format.depth);\n            res = ia2png(config.img_filename, imgi, config.width, config.height);\n            break;\n         case IMG_FORMAT_I:\n            imgi = raw2i(raw, config.width, config.height, config.format.depth);\n            res = ia2png(config.img_filename, imgi, config.width, config.height);\n            break;\n         case IMG_FORMAT_CI:\n         {\n            FILE *pal_fp;\n            uint8_t *pal;\n            uint8_t *raw_fmt;\n            int pal_size;\n\n            INFO(\"Extracting %s offset 0x%X, pal.offset 0x%0X, pal.format %s\\n\", format2str(&config.format),\n                 config.bin_offset, config.pal_offset, format2str(&config.pal_format));\n\n            pal_fp = fopen(config.pal_filename, \"rb\");\n            if (!pal_fp) {\n               ERROR(\"Error opening \\\"%s\\\"\\n\", config.bin_filename);\n               return EXIT_FAILURE;\n            }\n            if (config.pal_offset > 0) {\n               fseek(pal_fp, config.pal_offset, SEEK_SET);\n            }\n\n            pal_size = sizeof(uint16_t) * (1 << config.format.depth);\n            INFO(\"Palette size: %d\\n\", pal_size);\n            pal = malloc(pal_size);\n            flength = fread(pal, 1, pal_size, pal_fp);\n            if (flength != pal_size) {\n               ERROR(\"Error reading %d bytes from \\\"%s\\\"\\n\", pal_size, config.pal_filename);\n            }\n            raw_fmt = ci2raw(raw, pal, config.width, config.height, config.format.depth);\n            switch (config.pal_format.format) {\n               case IMG_FORMAT_RGBA:\n                  INFO(\"Converting raw to RGBA16\\n\");\n                  imgr = raw2rgba(raw_fmt, config.width, config.height, config.pal_format.depth);\n                  res = rgba2png(config.img_filename, imgr, config.width, config.height);\n                  break;\n               case IMG_FORMAT_IA:\n                  INFO(\"Converting raw to IA16\\n\");\n                  imgi = raw2ia(raw_fmt, config.width, config.height, config.pal_format.depth);\n                  res = ia2png(config.img_filename, imgi, config.width, config.height);\n                  break;\n               default:\n                  ERROR(\"Unsupported palette format: %s\\n\", format2str(&config.pal_format));\n                  return EXIT_FAILURE;\n            }\n            free(raw_fmt);\n            free(pal);\n            break;\n         }\n         default:\n            return EXIT_FAILURE;\n      }\n      if (!res) {\n         ERROR(\"Error writing to \\\"%s\\\"\\n\", config.img_filename);\n         return EXIT_FAILURE;\n      }\n   }\n\n   return EXIT_SUCCESS;\n}\n#endif // N64GRAPHICS_STANDALONE\n"
  },
  {
    "path": "tools/sm64tools/n64graphics.h",
    "content": "#ifndef N64GRAPHICS_H_\n#define N64GRAPHICS_H_\n\n#include <stdint.h>\n\n// intermediate formats\ntypedef struct _rgba\n{\n   uint8_t red;\n   uint8_t green;\n   uint8_t blue;\n   uint8_t alpha;\n} rgba;\n\ntypedef struct _ia\n{\n   uint8_t intensity;\n   uint8_t alpha;\n} ia;\n\n// CI palette\ntypedef struct\n{\n   uint16_t data[256];\n   int max; // max number of entries\n   int used; // number of entries used\n} palette_t;\n\n//---------------------------------------------------------\n// N64 RGBA/IA/I/CI -> intermediate RGBA/IA\n//---------------------------------------------------------\n\n// N64 raw RGBA16/RGBA32 -> intermediate RGBA\nrgba *raw2rgba(const uint8_t *raw, int width, int height, int depth);\n\n// N64 raw IA1/IA4/IA8/IA16 -> intermediate IA\nia *raw2ia(const uint8_t *raw, int width, int height, int depth);\n\n// N64 raw I4/I8 -> intermediate IA\nia *raw2i(const uint8_t *raw, int width, int height, int depth);\n\n//---------------------------------------------------------\n// intermediate RGBA/IA -> N64 RGBA/IA/I/CI\n// returns length written to 'raw' used or -1 on error\n//---------------------------------------------------------\n\n// intermediate RGBA -> N64 raw RGBA16/RGBA32\nint rgba2raw(uint8_t *raw, const rgba *img, int width, int height, int depth);\n\n// intermediate IA -> N64 raw IA1/IA4/IA8/IA16\nint ia2raw(uint8_t *raw, const ia *img, int width, int height, int depth);\n\n// intermediate IA -> N64 raw I4/I8\nint i2raw(uint8_t *raw, const ia *img, int width, int height, int depth);\n\n\n//---------------------------------------------------------\n// N64 CI <-> N64 RGBA16/IA16\n//---------------------------------------------------------\n\n// N64 CI raw data and palette to raw data (either RGBA16 or IA16)\nuint8_t *ci2raw(const uint8_t *rawci, const uint8_t *palette, int width, int height, int ci_depth);\n\n// convert from raw (RGBA16 or IA16) format to CI + palette\nint raw2ci(uint8_t *rawci, palette_t *pal, const uint8_t *raw, int raw_len, int ci_depth);\n\n\n//---------------------------------------------------------\n// intermediate RGBA/IA -> PNG\n//---------------------------------------------------------\n\n// intermediate RGBA write to PNG file\nint rgba2png(const char *png_filename, const rgba *img, int width, int height);\n\n// intermediate IA write to grayscale PNG file\nint ia2png(const char *png_filename, const ia *img, int width, int height);\n\n\n//---------------------------------------------------------\n// PNG -> intermediate RGBA/IA\n//---------------------------------------------------------\n\n// PNG file -> intermediate RGBA\nrgba *png2rgba(const char *png_filename, int *width, int *height);\n\n// PNG file -> intermediate IA\nia *png2ia(const char *png_filename, int *width, int *height);\n\n\n//---------------------------------------------------------\n// version\n//---------------------------------------------------------\n\n// get version of underlying graphics reading library\nconst char *n64graphics_get_read_version(void);\n\n// get version of underlying graphics writing library\nconst char *n64graphics_get_write_version(void);\n\n#endif // N64GRAPHICS_H_\n"
  },
  {
    "path": "tools/sm64tools/n64graphics_ci_dir/LICENSE",
    "content": "MIT License\n\nCopyright (c) 2019 David Benepe\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "tools/sm64tools/n64graphics_ci_dir/README.md",
    "content": "# n64graphics_ci\n\nAllows you to convert PNG image files to/from N64 CI format. This is temporary until queueRAM adds CI support into his official n64graphics tool. This tool does not process RGBA, IA, or I textures, use n64graphics for those.\n\nCI4 textures will always assume a 16 color palette is used, and CI8 textures a 256 palette is used. The palette will be generated as a seperate file. The palette file will be named after the CI filename, but postpended with `.pal`.\n\n## Libraries Used (All MIT licensed)\n\n* **Exoquant** by Dennis Ranke, for color reduction. https://github.com/exoticorn/exoquant \n* **stb** by Sean Barrett, for loading PNG images. https://github.com/nothings/stb\n\n## PNG -> CI4 + Palette\n\n`./n64graphics_ci -i image.ci4 -g image.png -f ci4`\n\n## CI4 + Palette -> 32x32 PNG\n\n`./n64graphics_ci -e image.ci4 -g image.ci4.png -f ci4 -w 32 -h 32`\n\n## PNG -> CI8 + Palette\n\n`./n64graphics_ci -i image.ci8 -g image.png -f ci8`\n\n## CI8 + Palette -> 32x32 PNG\n\n`./n64graphics_ci -e image.ci8 -g image.ci8.png -f ci8 -w 32 -h 32`\n\n## Comparision\n![alt text](https://i.imgur.com/r3PhZp0.png)\n"
  },
  {
    "path": "tools/sm64tools/n64graphics_ci_dir/exoquant/exoquant.c",
    "content": "/*\nExoQuant v0.7\n\nCopyright (c) 2004 Dennis Ranke\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n*/\n\n#include \"exoquant.h\"\n#include <math.h>\n#include <stdlib.h>\n#include <stdio.h>\n\n#ifndef NULL\n#define NULL (0)\n#endif\n\n#define SCALE_R 1.0f\n#define SCALE_G 1.2f\n#define SCALE_B 0.8f\n#define SCALE_A 1.0f\n\nexq_data *exq_init()\n{\n\tint i;\n\texq_data *pExq;\n\n\tpExq = (exq_data*)malloc(sizeof(exq_data));\n\t\n\tfor(i = 0; i < EXQ_HASH_SIZE; i++)\n\t\tpExq->pHash[i] = NULL;\n\n\tpExq->numColors = 0;\n\tpExq->optimized = 0;\n\tpExq->transparency = 1;\n\tpExq->numBitsPerChannel = 8;\n\n\treturn pExq;\n}\n\nvoid exq_no_transparency(exq_data *pExq)\n{\n\tpExq->transparency = 0;\n}\n\nvoid exq_free(exq_data *pExq)\n{\n\tint i;\n\texq_histogram *pCur, *pNext;\n\n\tfor(i = 0; i < EXQ_HASH_SIZE; i++)\n\t\tfor(pCur = pExq->pHash[i]; pCur != NULL; pCur = pNext)\n\t\t{\n\t\t\tpNext = pCur->pNextInHash;\n\t\t\tfree(pCur);\n\t\t}\n\n\tfree(pExq);\n}\n\nstatic unsigned int exq_make_hash(unsigned int rgba)\n{\n\trgba -= (rgba >> 13) | (rgba << 19);\n\trgba -= (rgba >> 13) | (rgba << 19);\n\trgba -= (rgba >> 13) | (rgba << 19);\n\trgba -= (rgba >> 13) | (rgba << 19);\n\trgba -= (rgba >> 13) | (rgba << 19);\n\trgba &= EXQ_HASH_SIZE - 1;\n\treturn rgba;\n}\n\nvoid exq_feed(exq_data *pExq, unsigned char *pData, int nPixels)\n{\n\tint i;\n\tunsigned int hash;\n\tunsigned char r, g, b, a;\n\texq_histogram *pCur;\n\tunsigned char channelMask = 0xff00 >> pExq->numBitsPerChannel;\n\n\tfor(i = 0; i < nPixels; i++)\n\t{\n\t\tr = *pData++; g = *pData++; b = *pData++; a = *pData++;\n\t\thash = exq_make_hash(((unsigned int)r) | (((unsigned int)g) << 8) | (((unsigned int)b) << 16) | (((unsigned int)a) << 24));\n\n\t\tpCur = pExq->pHash[hash];\n\t\twhile(pCur != NULL && (pCur->ored != r || pCur->ogreen != g ||\n\t\t\tpCur->oblue != b || pCur->oalpha != a))\n\t\t\tpCur = pCur->pNextInHash;\n\n\t\tif(pCur != NULL)\n\t\t\tpCur->num++;\n\t\telse\n\t\t{\n\t\t\tpCur = (exq_histogram*)malloc(sizeof(exq_histogram));\n\t\t\tpCur->pNextInHash = pExq->pHash[hash];\n\t\t\tpExq->pHash[hash] = pCur;\n\t\t\tpCur->ored = r; pCur->ogreen = g; pCur->oblue = b; pCur->oalpha = a;\n\t\t\tr &= channelMask; g &= channelMask; b &= channelMask;\n\t\t\tpCur->color.r = r / 255.0f * SCALE_R;\n\t\t\tpCur->color.g = g / 255.0f * SCALE_G;\n\t\t\tpCur->color.b = b / 255.0f * SCALE_B;\n\t\t\tpCur->color.a = a / 255.0f * SCALE_A;\n\n\t\t\tif(pExq->transparency)\n\t\t\t{\n\t\t\t\tpCur->color.r *= pCur->color.a;\n\t\t\t\tpCur->color.g *= pCur->color.a;\n\t\t\t\tpCur->color.b *= pCur->color.a;\n\t\t\t}\n\n\t\t\tpCur->num = 1;\n\t\t\tpCur->palIndex = -1;\n\t\t\tpCur->ditherScale.r = pCur->ditherScale.g = pCur->ditherScale.b =\n\t\t\t\tpCur->ditherScale.a = -1;\n\t\t\tpCur->ditherIndex[0] = pCur->ditherIndex[1] = pCur->ditherIndex[2] =\n\t\t\t\tpCur->ditherIndex[3] = -1;\n\t\t}\n\t}\n}\n\nvoid exq_quantize(exq_data *pExq, int nColors)\n{\n\texq_quantize_ex(pExq, nColors, 0);\n}\n\nvoid exq_quantize_hq(exq_data *pExq, int nColors)\n{\n\texq_quantize_ex(pExq, nColors, 1);\n}\n\nvoid exq_quantize_ex(exq_data *pExq, int nColors, int hq)\n{\n\tint besti;\n\texq_float beste;\n\texq_histogram *pCur, *pNext;\n\tint i, j;\n\n\tif(nColors > 256)\n\t\tnColors = 256;\n\n\tif(pExq->numColors == 0)\n\t{\n\t\tpExq->node[0].pHistogram = NULL;\n\t\tfor(i = 0; i < EXQ_HASH_SIZE; i++)\n\t\t\tfor(pCur = pExq->pHash[i]; pCur != NULL; pCur = pCur->pNextInHash)\n\t\t\t{\n\t\t\t\tpCur->pNext = pExq->node[0].pHistogram;\n\t\t\t\tpExq->node[0].pHistogram = pCur;\n\t\t\t}\n\t\t\n\t\texq_sum_node(&pExq->node[0]);\n\n\t\tpExq->numColors = 1;\n\t}\n\n\tfor(i = pExq->numColors; i < nColors; i++)\n\t{\n\t\tbeste = 0;\n\t\tbesti = 0;\n\t\tfor(j = 0; j < i; j++)\n\t\t\tif(pExq->node[j].vdif >= beste)\n\t\t\t{\n\t\t\t\tbeste = pExq->node[j].vdif;\n\t\t\t\tbesti = j;\n\t\t\t}\n\n//\t\tprintf(\"node %d: %d, %f\\n\", besti, pExq->node[besti].num, beste);\n\n\t\tpCur = pExq->node[besti].pHistogram;\n\t\tpExq->node[besti].pHistogram = NULL;\n\t\tpExq->node[i].pHistogram = NULL;\n\t\twhile(pCur != NULL && pCur != pExq->node[besti].pSplit)\n\t\t{\n\t\t\tpNext = pCur->pNext;\n\t\t\tpCur->pNext = pExq->node[i].pHistogram;\n\t\t\tpExq->node[i].pHistogram = pCur;\n\t\t\tpCur = pNext;\n\t\t}\n\n\t\twhile(pCur != NULL)\n\t\t{\n\t\t\tpNext = pCur->pNext;\n\t\t\tpCur->pNext = pExq->node[besti].pHistogram;\n\t\t\tpExq->node[besti].pHistogram = pCur;\n\t\t\tpCur = pNext;\n\t\t}\n\n\t\texq_sum_node(&pExq->node[besti]);\n\t\texq_sum_node(&pExq->node[i]);\n\n\t\tpExq->numColors = i + 1;\n\t\tif(hq)\n\t\t\texq_optimize_palette(pExq, 1);\n\t}\n\n\tpExq->optimized = 0;\n}\n\nexq_float exq_get_mean_error(exq_data *pExq)\n{\n\tint i, n;\n\texq_float err;\n\n\tn = 0;\n\terr = 0;\n\tfor(i = 0; i < pExq->numColors; i++)\n\t{\n\t\tn += pExq->node[i].num;\n\t\terr += pExq->node[i].err;\n\t}\n\n\treturn sqrt(err / n) * 256;\n}\n\nvoid exq_get_palette(exq_data *pExq, unsigned char *pPal, int nColors)\n{\n\tint i, j;\n\texq_float r, g, b, a;\n\tunsigned char channelMask = 0xff00 >> pExq->numBitsPerChannel;\n\n\tif(nColors > pExq->numColors)\n\t\tnColors = pExq->numColors;\n\n\tif(!pExq->optimized)\n\t\texq_optimize_palette(pExq, 4);\n\n\tfor(i = 0; i < nColors; i++)\n\t{\n\t\tr = pExq->node[i].avg.r;\n\t\tg = pExq->node[i].avg.g;\n\t\tb = pExq->node[i].avg.b;\n\t\ta = pExq->node[i].avg.a;\n\n\t\tif(pExq->transparency == 1 && a != 0)\n\t\t{\n\t\t\tr /= a; g/= a; b/= a;\n\t\t}\n\n\t\tpPal[0] = (unsigned char)(r / SCALE_R * 255.9f);\n\t\tpPal[1] = (unsigned char)(g / SCALE_G * 255.9f);\n\t\tpPal[2] = (unsigned char)(b / SCALE_B * 255.9f);\n\t\tpPal[3] = (unsigned char)(a / SCALE_A * 255.9f);\n\n\t\tfor(j = 0; j < 3; j++)\n\t\t\tpPal[j] = (pPal[j] + (1 << (8 - pExq->numBitsPerChannel)) / 2) & channelMask;\n\t\tpPal += 4;\n\t}\n}\n\nvoid exq_set_palette(exq_data *pExq, unsigned char *pPal, int nColors)\n{\n\tint i;\n\n\tpExq->numColors = nColors;\n\n\tfor(i = 0; i < nColors; i++)\n\t{\n\t\tpExq->node[i].avg.r = *pPal++ * SCALE_R / 255.9f;\n\t\tpExq->node[i].avg.g = *pPal++ * SCALE_G / 255.9f;\n\t\tpExq->node[i].avg.b = *pPal++ * SCALE_B / 255.9f;\n\t\tpExq->node[i].avg.a = *pPal++ * SCALE_A / 255.9f;\n\t}\n\n\tpExq->optimized = 1;\n}\n\nvoid exq_sum_node(exq_node *pNode)\n{\n\tint n, n2;\n\texq_color fsum, fsum2, vc, tmp, tmp2, sum, sum2;\n\texq_histogram *pCur;\n\texq_float isqrt, nv, v;\n\n\tn = 0;\n\tfsum.r = fsum.g = fsum.b = fsum.a = 0;\n\tfsum2.r = fsum2.g = fsum2.b = fsum2.a = 0;\n\n\tfor(pCur = pNode->pHistogram; pCur != NULL; pCur = pCur->pNext)\n\t{\n\t\tn += pCur->num;\n\t\tfsum.r += pCur->color.r * pCur->num;\n\t\tfsum.g += pCur->color.g * pCur->num;\n\t\tfsum.b += pCur->color.b * pCur->num;\n\t\tfsum.a += pCur->color.a * pCur->num;\n\t\tfsum2.r += pCur->color.r * pCur->color.r * pCur->num;\n\t\tfsum2.g += pCur->color.g * pCur->color.g * pCur->num;\n\t\tfsum2.b += pCur->color.b * pCur->color.b * pCur->num;\n\t\tfsum2.a += pCur->color.a * pCur->color.a * pCur->num;\n\t}\n\tpNode->num = n;\n\tif(n == 0)\n\t{\n\t\tpNode->vdif = 0;\n\t\tpNode->err = 0;\n\t\treturn;\n\t}\n\n\tpNode->avg.r = fsum.r / n;\n\tpNode->avg.g = fsum.g / n;\n\tpNode->avg.b = fsum.b / n;\n\tpNode->avg.a = fsum.a / n;\n\n\tvc.r = fsum2.r - fsum.r * pNode->avg.r;\n\tvc.g = fsum2.g - fsum.g * pNode->avg.g;\n\tvc.b = fsum2.b - fsum.b * pNode->avg.b;\n\tvc.a = fsum2.a - fsum.a * pNode->avg.a;\n\n\tv = vc.r + vc.g + vc.b + vc.a;\n\tpNode->err = v;\n\tpNode->vdif = -v;\n\n\tif(vc.r > vc.g && vc.r > vc.b && vc.r > vc.a)\n\t\texq_sort(&pNode->pHistogram, exq_sort_by_r);\n\telse if(vc.g > vc.b && vc.g > vc.a)\n\t\texq_sort(&pNode->pHistogram, exq_sort_by_g);\n\telse if(vc.b > vc.a)\n\t\texq_sort(&pNode->pHistogram, exq_sort_by_b);\n\telse\n\t\texq_sort(&pNode->pHistogram, exq_sort_by_a);\n\n\tpNode->dir.r = pNode->dir.g = pNode->dir.b = pNode->dir.a = 0;\n\tfor(pCur = pNode->pHistogram; pCur != NULL; pCur = pCur->pNext)\n\t{\n\t\ttmp.r = (pCur->color.r - pNode->avg.r) * pCur->num;\n\t\ttmp.g = (pCur->color.g - pNode->avg.g) * pCur->num;\n\t\ttmp.b = (pCur->color.b - pNode->avg.b) * pCur->num;\n\t\ttmp.a = (pCur->color.a - pNode->avg.a) * pCur->num;\n\t\tif(tmp.r * pNode->dir.r + tmp.g * pNode->dir.g +\n\t\t\ttmp.b * pNode->dir.b + tmp.a * pNode->dir.a < 0)\n\t\t{\n\t\t\ttmp.r = -tmp.r;\n\t\t\ttmp.g = -tmp.g;\n\t\t\ttmp.b = -tmp.b;\n\t\t\ttmp.a = -tmp.a;\n\t\t}\n\t\tpNode->dir.r += tmp.r;\n\t\tpNode->dir.g += tmp.g;\n\t\tpNode->dir.b += tmp.b;\n\t\tpNode->dir.a += tmp.a;\n\t}\n\tisqrt = 1 / sqrt(pNode->dir.r * pNode->dir.r +\n\t\tpNode->dir.g * pNode->dir.g + pNode->dir.b * pNode->dir.b +\n\t\tpNode->dir.a * pNode->dir.a);\n\tpNode->dir.r *= isqrt;\n\tpNode->dir.g *= isqrt;\n\tpNode->dir.b *= isqrt;\n\tpNode->dir.a *= isqrt;\n\n\texq_sort_dir = pNode->dir;\n\texq_sort(&pNode->pHistogram, exq_sort_by_dir);\n\n\tsum.r = sum.g = sum.b = sum.a = 0;\n\tsum2.r = sum2.g = sum2.b = sum2.a = 0;\n\tn2 = 0;\n\tpNode->pSplit = pNode->pHistogram;\n\tfor(pCur = pNode->pHistogram; pCur != NULL; pCur = pCur->pNext)\n\t{\n\t\tif(pNode->pSplit == NULL)\n\t\t\tpNode->pSplit = pCur;\n\n\t\tn2 += pCur->num;\n\t\tsum.r += pCur->color.r * pCur->num;\n\t\tsum.g += pCur->color.g * pCur->num;\n\t\tsum.b += pCur->color.b * pCur->num;\n\t\tsum.a += pCur->color.a * pCur->num;\n\t\tsum2.r += pCur->color.r * pCur->color.r * pCur->num;\n\t\tsum2.g += pCur->color.g * pCur->color.g * pCur->num;\n\t\tsum2.b += pCur->color.b * pCur->color.b * pCur->num;\n\t\tsum2.a += pCur->color.a * pCur->color.a * pCur->num;\n\n\t\tif(n == n2)\n\t\t\tbreak;\n\n\t\ttmp.r = sum2.r - sum.r*sum.r / n2;\n\t\ttmp.g = sum2.g - sum.g*sum.g / n2;\n\t\ttmp.b = sum2.b - sum.b*sum.b / n2;\n\t\ttmp.a = sum2.a - sum.a*sum.a / n2;\n\t\ttmp2.r = (fsum2.r - sum2.r) - (fsum.r-sum.r)*(fsum.r-sum.r) / (n - n2);\n\t\ttmp2.g = (fsum2.g - sum2.g) - (fsum.g-sum.g)*(fsum.g-sum.g) / (n - n2);\n\t\ttmp2.b = (fsum2.b - sum2.b) - (fsum.b-sum.b)*(fsum.b-sum.b) / (n - n2);\n\t\ttmp2.a = (fsum2.a - sum2.a) - (fsum.a-sum.a)*(fsum.a-sum.a) / (n - n2);\n\n\t\tnv = tmp.r + tmp.g + tmp.b + tmp.a + tmp2.r + tmp2.g + tmp2.b + tmp2.a;\n\t\tif(-nv > pNode->vdif)\n\t\t{\n\t\t\tpNode->vdif = -nv;\n\t\t\tpNode->pSplit = NULL;\n\t\t}\n\t}\n\n\tif(pNode->pSplit == pNode->pHistogram)\n\t\tpNode->pSplit = pNode->pSplit->pNext;\n\n\tpNode->vdif += v;\n//\tprintf(\"error sum: %f, vdif: %f\\n\", pNode->err, pNode->vdif);\n}\n\nvoid exq_optimize_palette(exq_data *pExq, int iter)\n{\n\tint n, i, j;\n\texq_histogram *pCur;\n\n\tpExq->optimized = 1;\n\n\tfor(n = 0; n < iter; n++)\n\t{\n\t\tfor(i = 0; i < pExq->numColors; i++)\n\t\t\tpExq->node[i].pHistogram = NULL;\n\n\t\tfor(i = 0; i < EXQ_HASH_SIZE; i++)\n\t\t\tfor(pCur = pExq->pHash[i]; pCur != NULL; pCur = pCur->pNextInHash)\n\t\t\t{\n\t\t\t\tj = exq_find_nearest_color(pExq, &pCur->color);\n\t\t\t\tpCur->pNext = pExq->node[j].pHistogram;\n\t\t\t\tpExq->node[j].pHistogram = pCur;\n\t\t\t}\n\n\t\tfor(i = 0; i < pExq->numColors; i++)\n\t\t\texq_sum_node(&pExq->node[i]);\n\t}\n}\n\nvoid exq_map_image(exq_data *pExq, int nPixels, unsigned char *pIn,\n\t\t\t\t   unsigned char *pOut)\n{\n\tint i;\n\texq_color c;\n\texq_histogram *pHist;\n\n\tif(!pExq->optimized)\n\t\texq_optimize_palette(pExq, 4);\n\n\tfor(i = 0; i < nPixels; i++)\n\t{\n\t\tpHist = exq_find_histogram(pExq, pIn);\n\t\tif(pHist != NULL && pHist->palIndex != -1)\n\t\t{\n\t\t\t*pOut++ = (unsigned char)pHist->palIndex;\n\t\t\tpIn += 4;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tc.r = *pIn++ / 255.0f * SCALE_R;\n\t\t\tc.g = *pIn++ / 255.0f * SCALE_G;\n\t\t\tc.b = *pIn++ / 255.0f * SCALE_B;\n\t\t\tc.a = *pIn++ / 255.0f * SCALE_A;\n\n\t\t\tif(pExq->transparency)\n\t\t\t{\n\t\t\t\tc.r *= c.a; c.g *= c.a; c.b *= c.a;\n\t\t\t}\n\n\t\t\t*pOut = exq_find_nearest_color(pExq, &c);\n\t\t\tif(pHist != NULL)\n\t\t\t\tpHist->palIndex = *pOut;\n\t\t\tpOut++;\n\t\t}\n\t}\n}\n\nvoid exq_map_image_ordered(exq_data *pExq, int width, int height,\n\t\t\t\t\t\t   unsigned char *pIn, unsigned char *pOut)\n{\n\texq_map_image_dither(pExq, width, height, pIn, pOut, 1);\n}\n\nvoid exq_map_image_random(exq_data *pExq, int nPixels,\n\t\t\t\t\t\t   unsigned char *pIn, unsigned char *pOut)\n{\n\texq_map_image_dither(pExq, nPixels, 1, pIn, pOut, 0);\n}\n\nvoid exq_map_image_dither(exq_data *pExq, int width, int height,\n\t\t\t\t\t\t  unsigned char *pIn, unsigned char *pOut, int ordered)\n{\n\tint x, y, i, j, d;\n\texq_color p, scale, tmp;\n\texq_histogram *pHist;\n\tconst exq_float dither_matrix[4] = { -0.375, 0.125, 0.375, -0.125 };\n\n\tif(!pExq->optimized)\n\t\texq_optimize_palette(pExq, 4);\n\n\tfor(y = 0; y < height; y++)\n\t\tfor(x = 0; x < width; x++)\n\t\t{\n\t\t\tif(ordered)\n\t\t\t\td = (x & 1) + (y & 1) * 2;\n\t\t\telse\n\t\t\t\td = rand() & 3;\n\t\t\tpHist = exq_find_histogram(pExq, pIn);\n\t\t\tp.r = *pIn++ / 255.0f * SCALE_R;\n\t\t\tp.g = *pIn++ / 255.0f * SCALE_G;\n\t\t\tp.b = *pIn++ / 255.0f * SCALE_B;\n\t\t\tp.a = *pIn++ / 255.0f * SCALE_A;\n\n\t\t\tif(pExq->transparency)\n\t\t\t{\n\t\t\t\tp.r *= p.a; p.g *= p.a; p.b *= p.a;\n\t\t\t}\n\n\t\t\tif(pHist == NULL || pHist->ditherScale.r < 0)\n\t\t\t{\n\t\t\t\ti = exq_find_nearest_color(pExq, &p);\n\t\t\t\tscale.r = pExq->node[i].avg.r - p.r;\n\t\t\t\tscale.g = pExq->node[i].avg.g - p.g;\n\t\t\t\tscale.b = pExq->node[i].avg.b - p.b;\n\t\t\t\tscale.a = pExq->node[i].avg.a - p.a;\n\t\t\t\ttmp.r = p.r - scale.r / 3;\n\t\t\t\ttmp.g = p.g - scale.g / 3;\n\t\t\t\ttmp.b = p.b - scale.b / 3;\n\t\t\t\ttmp.a = p.a - scale.a / 3;\n\t\t\t\tj = exq_find_nearest_color(pExq, &tmp);\n\t\t\t\tif(i == j)\n\t\t\t\t{\n\t\t\t\t\ttmp.r = p.r - scale.r * 3;\n\t\t\t\t\ttmp.g = p.g - scale.g * 3;\n\t\t\t\t\ttmp.b = p.b - scale.b * 3;\n\t\t\t\t\ttmp.a = p.a - scale.a * 3;\n\t\t\t\t\tj = exq_find_nearest_color(pExq, &tmp);\n\t\t\t\t}\n\t\t\t\tif(i != j)\n\t\t\t\t{\n\t\t\t\t\tscale.r = (pExq->node[j].avg.r - pExq->node[i].avg.r) * 0.8f;\n\t\t\t\t\tscale.g = (pExq->node[j].avg.g - pExq->node[i].avg.g) * 0.8f;\n\t\t\t\t\tscale.b = (pExq->node[j].avg.b - pExq->node[i].avg.b) * 0.8f;\n\t\t\t\t\tscale.a = (pExq->node[j].avg.a - pExq->node[i].avg.a) * 0.8f;\n\t\t\t\t\tif(scale.r < 0) scale.r = -scale.r;\n\t\t\t\t\tif(scale.g < 0) scale.g = -scale.g;\n\t\t\t\t\tif(scale.b < 0) scale.b = -scale.b;\n\t\t\t\t\tif(scale.a < 0) scale.a = -scale.a;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\tscale.r = scale.g = scale.b = scale.a = 0;\n\n\t\t\t\tif(pHist != NULL)\n\t\t\t\t{\n\t\t\t\t\tpHist->ditherScale.r = scale.r;\n\t\t\t\t\tpHist->ditherScale.g = scale.g;\n\t\t\t\t\tpHist->ditherScale.b = scale.b;\n\t\t\t\t\tpHist->ditherScale.a = scale.a;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tscale.r = pHist->ditherScale.r;\n\t\t\t\tscale.g = pHist->ditherScale.g;\n\t\t\t\tscale.b = pHist->ditherScale.b;\n\t\t\t\tscale.a = pHist->ditherScale.a;\n\t\t\t}\n\n\t\t\tif(pHist != NULL && pHist->ditherIndex[d] >= 0)\n\t\t\t\t*pOut++ = (unsigned char)pHist->ditherIndex[d];\n\t\t\telse\n\t\t\t{\n\t\t\t\ttmp.r = p.r + scale.r * dither_matrix[d];\n\t\t\t\ttmp.g = p.g + scale.g * dither_matrix[d];\n\t\t\t\ttmp.b = p.b + scale.b * dither_matrix[d];\n\t\t\t\ttmp.a = p.a + scale.a * dither_matrix[d];\n\t\t\t\t*pOut = exq_find_nearest_color(pExq, &tmp);\n\t\t\t\tif(pHist != NULL)\n\t\t\t\t\tpHist->ditherIndex[d] = *pOut;\n\t\t\t\tpOut++;\n\t\t\t}\n\t\t}\n}\n\nexq_histogram *exq_find_histogram(exq_data *pExq, unsigned char *pCol)\n{\n\tunsigned int hash;\n\tint r, g, b, a;\n\texq_histogram *pCur;\n\n\tr = *pCol++; g = *pCol++; b = *pCol++; a = *pCol++;\n\thash = exq_make_hash(((unsigned int)r) | (((unsigned int)g) << 8) | (((unsigned int)b) << 16) | (((unsigned int)a) << 24));\n\n\tpCur = pExq->pHash[hash];\n\twhile(pCur != NULL && (pCur->ored != r || pCur->ogreen != g ||\n\t\tpCur->oblue != b || pCur->oalpha != a))\n\t\tpCur = pCur->pNextInHash;\n\n\treturn pCur;\n}\n\nunsigned char exq_find_nearest_color(exq_data *pExq, exq_color *pColor)\n{\n\texq_float bestv;\n\tint besti, i;\n\texq_color dif;\n\n\tbestv = 16;\n\tbesti = 0;\n\tfor(i = 0; i < pExq->numColors; i++)\n\t{\n\t\tdif.r = pColor->r - pExq->node[i].avg.r;\n\t\tdif.g = pColor->g - pExq->node[i].avg.g;\n\t\tdif.b = pColor->b - pExq->node[i].avg.b;\n\t\tdif.a = pColor->a - pExq->node[i].avg.a;\n\t\tif(dif.r*dif.r + dif.g*dif.g + dif.b*dif.b + dif.a*dif.a < bestv)\n\t\t{\n\t\t\tbestv = dif.r*dif.r + dif.g*dif.g + dif.b*dif.b + dif.a*dif.a;\n\t\t\tbesti = i;\n\t\t}\n\t}\n\n\treturn (unsigned char)besti;\n}\n\nvoid exq_sort(exq_histogram **ppHist, exq_float (*sortfunc)(const exq_histogram *pHist))\n{\n\texq_histogram *pLow, *pHigh, *pCur, *pNext;\n\tint n = 0;\n\texq_float sum = 0;\n\n\tfor(pCur = *ppHist; pCur != NULL; pCur = pCur->pNext)\n\t{\n\t\tn++;\n\t\tsum += sortfunc(pCur);\n\t}\n\n\tif(n < 2)\n\t\treturn;\n\n\tsum /= n;\n\n\tpLow = pHigh = NULL;\n\tfor(pCur = *ppHist; pCur != NULL; pCur = pNext)\n\t{\n\t\tpNext = pCur->pNext;\n\t\tif(sortfunc(pCur) < sum)\n\t\t{\n\t\t\tpCur->pNext = pLow;\n\t\t\tpLow = pCur;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tpCur->pNext = pHigh;\n\t\t\tpHigh = pCur;\n\t\t}\n\t}\n\n\tif(pLow == NULL)\n\t{\n\t\t*ppHist = pHigh;\n\t\treturn;\n\t}\n\tif(pHigh == NULL)\n\t{\n\t\t*ppHist = pLow;\n\t\treturn;\n\t}\n\n\texq_sort(&pLow, sortfunc);\n\texq_sort(&pHigh, sortfunc);\n\n\t*ppHist = pLow;\n\twhile(pLow->pNext != NULL)\n\t\tpLow = pLow->pNext;\n\n\tpLow->pNext = pHigh;\n}\n\nexq_float exq_sort_by_r(const exq_histogram *pHist)\n{\n\treturn pHist->color.r;\n}\n\nexq_float exq_sort_by_g(const exq_histogram *pHist)\n{\n\treturn pHist->color.g;\n}\n\nexq_float exq_sort_by_b(const exq_histogram *pHist)\n{\n\treturn pHist->color.b;\n}\n\nexq_float exq_sort_by_a(const exq_histogram *pHist)\n{\n\treturn pHist->color.a;\n}\n\nexq_color exq_sort_dir;\n\nexq_float exq_sort_by_dir(const exq_histogram *pHist)\n{\n\treturn pHist->color.r * exq_sort_dir.r +\n\t\tpHist->color.g * exq_sort_dir.g +\n\t\tpHist->color.b * exq_sort_dir.b +\n\t\tpHist->color.a * exq_sort_dir.a;\n}\n"
  },
  {
    "path": "tools/sm64tools/n64graphics_ci_dir/exoquant/exoquant.h",
    "content": "/*\nExoQuant v0.7\n\nCopyright (c) 2004 Dennis Ranke\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n*/\n\n/******************************************************************************\n* Usage:\n* ------\n*\n* exq_data *pExq = exq_init(); // init quantizer (per image)\n* exq_feed(pExq, <ptr to image>, <num of pixels); // feed pixel data (32bpp)\n* exq_quantize(pExq, <num of colors>); // find palette\n* exq_get_palette(pExq, <ptr to buffer>, <num of colors>); // get palette\n* exq_map_image(pExq, <num of pixels>, <ptr to input>, <ptr to output>);\n* or:\n* exq_map_image_ordered(pExq, <width>, <height>, <input>, <output>);\n*     // map image to palette\n* exq_free(pExq); // free memory again\n*\n* Notes:\n* ------\n*\n* All 32bpp data (input data and palette data) is considered a byte stream\n* of the format:\n* R0 G0 B0 A0 R1 G1 B1 A1 ...\n* If you want to use a different order, the easiest way to do this is to\n* change the SCALE_x constants in expquant.h, as those are the only differences\n* between the channels.\n*\n******************************************************************************/\n\n#ifndef __EXOQUANT_H\n#define __EXOQUANT_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* type definitions */\ntypedef double exq_float;\n\ntypedef struct _exq_color\n{\n\texq_float r, g, b, a;\n} exq_color;\n\ntypedef struct _exq_histogram\n{\n\texq_color\t\t\t\tcolor;\n\tunsigned char\t\t\tored, ogreen, oblue, oalpha;\n\tint\t\t\t\t\t\tpalIndex;\n\texq_color\t\t\t\tditherScale;\n\tint\t\t\t\t\t\tditherIndex[4];\n\tint\t\t\t\t\t\tnum;\n\tstruct _exq_histogram\t*pNext;\n\tstruct _exq_histogram\t*pNextInHash;\n} exq_histogram;\n\ntypedef struct _exq_node\n{\n\texq_color\t\t\t\tdir, avg;\n\texq_float\t\t\t\t\tvdif;\n\texq_float\t\t\t\t\terr;\n\tint\t\t\t\t\t\tnum;\n\texq_histogram\t\t\t*pHistogram;\n\texq_histogram\t\t\t*pSplit;\n} exq_node;\n\n#define EXQ_HASH_BITS\t\t\t16\n#define EXQ_HASH_SIZE\t\t\t(1 << (EXQ_HASH_BITS))\n\ntypedef struct _exq_data\n{\n\texq_histogram\t\t\t*pHash[EXQ_HASH_SIZE];\n\texq_node\t\t\t\tnode[256];\n\tint\t\t\t\t\t\tnumColors;\n\tint\t\t\t\t\t\tnumBitsPerChannel;\n\tint\t\t\t\t\t\toptimized;\n\tint\t\t\t\t\t\ttransparency;\n} exq_data;\n\n/* interface */\n\nexq_data\t\t\t*exq_init();\nvoid\t\t\t\texq_no_transparency(exq_data *pExq);\nvoid\t\t\t\texq_free(exq_data *pExq);\nvoid\t\t\t\texq_feed(exq_data *pExq, unsigned char *pData,\n\t\t\t\t\t\t\t int nPixels);\nvoid\t\t\t\texq_quantize(exq_data *pExq, int nColors);\nvoid\t\t\t\texq_quantize_hq(exq_data *pExq, int nColors);\nvoid\t\t\t\texq_quantize_ex(exq_data *pExq, int nColors, int hq);\nexq_float\t\t\texq_get_mean_error(exq_data *pExq);\nvoid\t\t\t\texq_get_palette(exq_data *pExq, unsigned char *pPal,\n\t\t\t\t\t\t\t\t\tint nColors);\nvoid\t\t\t\texq_set_palette(exq_data *pExq, unsigned char *pPal,\n\t\t\t\t\t\t\t\t\tint nColors);\nvoid\t\t\t\texq_map_image(exq_data *pExq, int nPixels,\n\t\t\t\t\t\t\t\t  unsigned char *pIn, unsigned char *pOut);\nvoid\t\t\t\texq_map_image_ordered(exq_data *pExq, int width,\n\t\t\t\t\t\t\t\t\t\t  int height, unsigned char *pIn,\n\t\t\t\t\t\t\t\t\t\t  unsigned char *pOut);\nvoid\t\t\t\texq_map_image_random(exq_data *pExq, int nPixels,\n\t\t\t\t\t\t\t\t\t\t  unsigned char *pIn, unsigned char *pOut);\n\n/* internal functions */\n\nvoid\t\t\t\texq_map_image_dither(exq_data *pExq, int width,\n\t\t\t\t\t\t\t\t\t\t int height, unsigned char *pIn,\n\t\t\t\t\t\t\t\t\t\t unsigned char *pOut, int ordered);\n\nvoid\t\t\t\texq_sum_node(exq_node *pNode);\nvoid\t\t\t\texq_optimize_palette(exq_data *pExp, int iter);\n\nunsigned char\t\texq_find_nearest_color(exq_data *pExp, exq_color *pColor);\nexq_histogram\t\t*exq_find_histogram(exq_data *pExp, unsigned char *pCol);\n\nvoid\t\t\t\texq_sort(exq_histogram **ppHist,\n\t\t\t\t\t\t exq_float (*sortfunc)(const exq_histogram *pHist));\nexq_float\t\t\texq_sort_by_r(const exq_histogram *pHist);\nexq_float\t\t\texq_sort_by_g(const exq_histogram *pHist);\nexq_float\t\t\texq_sort_by_b(const exq_histogram *pHist);\nexq_float\t\t\texq_sort_by_a(const exq_histogram *pHist);\nexq_float\t\t\texq_sort_by_dir(const exq_histogram *pHist);\n\nextern exq_color\texq_sort_dir;\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif // __EXOQUANT_H\n"
  },
  {
    "path": "tools/sm64tools/n64graphics_ci_dir/n64graphics_ci.c",
    "content": "#include <stdio.h>\n#include <stdlib.h>\n#include <strings.h>\n\n#define STBI_NO_LINEAR\n#define STBI_NO_HDR\n#define STBI_NO_TGA\n#define STB_IMAGE_IMPLEMENTATION\n#include \"../stb/stb_image.h\"\n#define STB_IMAGE_WRITE_IMPLEMENTATION\n#include \"../stb/stb_image_write.h\"\n\n#include \"exoquant/exoquant.h\"\n\n#include \"n64graphics_ci.h\"\n#include \"utils.h\"\n\n// SCALE_M_N: upscale/downscale M-bit integer to N-bit\n#define SCALE_5_8(VAL_) (((VAL_) * 0xFF) / 0x1F)\n#define SCALE_8_5(VAL_) ((((VAL_) + 4) * 0x1F) / 0xFF)\n#define SCALE_4_8(VAL_) ((VAL_) * 0x11)\n#define SCALE_8_4(VAL_) ((VAL_) / 0x11)\n#define SCALE_3_8(VAL_) ((VAL_) * 0x24)\n#define SCALE_8_3(VAL_) ((VAL_) / 0x24)\n\ntypedef enum\n{\n    IMG_FORMAT_CI\n} img_format;\n\nrgba *raw2rgba(const uint8_t *raw, int width, int height, int depth)\n{\n    rgba *img;\n    int img_size;\n\n    img_size = width * height * sizeof(*img);\n    img = malloc(img_size);\n    if (!img) {\n        ERROR(\"Error allocating %d bytes\\n\", img_size);\n        return NULL;\n    }\n\n    if (depth == 16) {\n        for (int i = 0; i < width * height; i++) {\n            img[i].red = SCALE_5_8((raw[i * 2] & 0xF8) >> 3);\n            img[i].green = SCALE_5_8(((raw[i * 2] & 0x07) << 2) | ((raw[i * 2 + 1] & 0xC0) >> 6));\n            img[i].blue = SCALE_5_8((raw[i * 2 + 1] & 0x3E) >> 1);\n            img[i].alpha = (raw[i * 2 + 1] & 0x01) ? 0xFF : 0x00;\n        }\n    }\n    else if (depth == 32) {\n        for (int i = 0; i < width * height; i++) {\n            img[i].red = raw[i * 4];\n            img[i].green = raw[i * 4 + 1];\n            img[i].blue = raw[i * 4 + 2];\n            img[i].alpha = raw[i * 4 + 3];\n        }\n    }\n\n    return img;\n}\n\n// extract RGBA from CI raw data and palette\nrgba *rawci2rgba(const uint8_t *rawci, const uint8_t *palette, int width, int height, int depth)\n{\n    uint8_t *raw_rgba;\n    rgba *img = NULL;\n    int raw_size;\n    int pal_index_1;\n    int pal_index_2;\n\n    // first convert to raw RGBA\n    raw_size = 2 * width * height;\n    raw_rgba = malloc(raw_size);\n    if (!raw_rgba) {\n        ERROR(\"Error allocating %u bytes\\n\", raw_size);\n        return NULL;\n    }\n\n    if (depth == 4) { // CI4\n        for (int i = 0; i < (width * height) / 2; i++) {\n            pal_index_1 = rawci[i] >> 4;\n            pal_index_2 = rawci[i] & 0xF;\n            raw_rgba[i * 4 + 0] = palette[pal_index_1 * 2 + 0];\n            raw_rgba[i * 4 + 1] = palette[pal_index_1 * 2 + 1];\n            raw_rgba[i * 4 + 2] = palette[pal_index_2 * 2 + 0];\n            raw_rgba[i * 4 + 3] = palette[pal_index_2 * 2 + 1];\n        }\n    } else { // CI8\n        for (int i = 0; i < width * height; i++) {\n            pal_index_1 = rawci[i];\n            raw_rgba[i * 2 + 0] = palette[pal_index_1 * 2 + 0];\n            raw_rgba[i * 2 + 1] = palette[pal_index_1 * 2 + 1];\n        }\n    }\n\n    // then convert to RGBA image data\n    img = raw2rgba(raw_rgba, width, height, 16);\n\n    free(raw_rgba);\n\n    return img;\n}\n\nint rgba2rawci(uint8_t *raw, uint8_t *out_palette, int *pal_len, const rgba *img, int width, int height, int depth)\n{\n    int size = width * height * depth / 8;\n    int num_colors = *pal_len / 2;\n\n    INFO(\"Converting RGBA %dx%d to raw CI%d\\n\", width, height, depth);\n\n    uint8_t *rgba32_palette = malloc(num_colors * 4);\n    uint8_t *ci8_raw = malloc(width * height);\n\n    // Use ExoQuant to convert the RGBA32 data buffer to an CI8 output\n    exq_data *pExq = exq_init();\n    exq_feed(pExq, (uint8_t*)img, width * height);\n    exq_quantize_hq(pExq, num_colors);\n    exq_get_palette(pExq, rgba32_palette, num_colors);\n    exq_map_image_ordered(pExq, width, height, (uint8_t*)img, ci8_raw);\n    exq_free(pExq);\n\n    if (depth == 4) {\n        // Convert CI8 image to CI4 image\n        for (int i = 0; i < size; i++) {\n            raw[i] = (ci8_raw[i * 2 + 0] << 4) | ci8_raw[i * 2 + 1];\n        }\n    }\n    else {\n        memcpy(raw, ci8_raw, size);\n    }\n\n    // Convert RGBA32 palette to RGBA16\n    for (int i = 0; i < num_colors; i++) {\n        unsigned char red = (rgba32_palette[i * 4 + 0] / 8) & 0x1F;\n        unsigned char green = (rgba32_palette[i * 4 + 1] / 8) & 0x1F;\n        unsigned char blue = (rgba32_palette[i * 4 + 2] / 8) & 0x1F;\n        unsigned char alpha = rgba32_palette[i * 4 + 3] > 0 ? 1 : 0; // 1 bit alpha\n\n        out_palette[i * 2 + 0] = (red << 3) | (green >> 2);\n        out_palette[i * 2 + 1] = ((green & 3) << 6) | (blue << 1) | alpha;\n    }\n\n    free(rgba32_palette);\n    free(ci8_raw);\n    return size;\n}\n\nrgba *png2rgba(const char *png_filename, int *width, int *height)\n{\n    rgba *img = NULL;\n    int w = 0;\n    int h = 0;\n    int channels = 0;\n    int img_size;\n\n    stbi_uc *data = stbi_load(png_filename, &w, &h, &channels, STBI_default);\n    if (!data || w <= 0 || h <= 0) {\n        ERROR(\"Error loading png file \\\"%s\\\"\\n\", png_filename);\n        return NULL;\n    }\n    INFO(\"Read \\\"%s\\\" %dx%d channels: %d\\n\", png_filename, w, h, channels);\n\n    img_size = w * h * sizeof(*img);\n    img = malloc(img_size);\n    if (!img) {\n        ERROR(\"Error allocating %u bytes\\n\", img_size);\n        return NULL;\n    }\n\n    switch (channels) {\n    case 3: // red, green, blue\n    case 4: // red, green, blue, alpha\n        for (int j = 0; j < h; j++) {\n            for (int i = 0; i < w; i++) {\n                int idx = j*w + i;\n                img[idx].red = data[channels*idx];\n                img[idx].green = data[channels*idx + 1];\n                img[idx].blue = data[channels*idx + 2];\n                if (channels == 4) {\n                    img[idx].alpha = data[channels*idx + 3];\n                }\n                else {\n                    img[idx].alpha = 0xFF;\n                }\n            }\n        }\n        break;\n    case 2: // grey, alpha\n        for (int j = 0; j < h; j++) {\n            for (int i = 0; i < w; i++) {\n                int idx = j*w + i;\n                img[idx].red = data[2 * idx];\n                img[idx].green = data[2 * idx];\n                img[idx].blue = data[2 * idx];\n                img[idx].alpha = data[2 * idx + 1];\n            }\n        }\n        break;\n    default:\n        ERROR(\"Don't know how to read channels: %d\\n\", channels);\n        free(img);\n        img = NULL;\n    }\n\n    // cleanup\n    stbi_image_free(data);\n\n    *width = w;\n    *height = h;\n    return img;\n}\n\nint rgba2png(const char *png_filename, const rgba *img, int width, int height)\n{\n    int ret = 0;\n    INFO(\"Saving RGBA %dx%d to \\\"%s\\\"\\n\", width, height, png_filename);\n\n    // convert to format stb_image_write expects\n    uint8_t *data = malloc(4 * width*height);\n    if (data) {\n        for (int j = 0; j < height; j++) {\n            for (int i = 0; i < width; i++) {\n                int idx = j*width + i;\n                data[4 * idx] = img[idx].red;\n                data[4 * idx + 1] = img[idx].green;\n                data[4 * idx + 2] = img[idx].blue;\n                data[4 * idx + 3] = img[idx].alpha;\n            }\n        }\n\n        ret = stbi_write_png(png_filename, width, height, 4, data, 0);\n\n        free(data);\n    }\n\n    return ret;\n}\n\nconst char *n64graphics_get_read_version(void)\n{\n    return \"stb_image 2.19\";\n}\n\nconst char *n64graphics_get_write_version(void)\n{\n    return \"stb_image_write 1.09\";\n}\n\n/***************************************************************/\n\n#define N64GRAPHICS_VERSION \"0.4 - CI Only Branch\"\n#include <string.h>\n\ntypedef enum\n{\n    MODE_EXPORT,\n    MODE_IMPORT,\n} tool_mode;\n\ntypedef struct\n{\n    char *img_filename;\n    char *bin_filename;\n    tool_mode mode;\n    unsigned int offset;\n    img_format format;\n    int depth;\n    int width;\n    int height;\n    int truncate;\n} graphics_config;\n\nstatic const graphics_config default_config =\n{\n    .img_filename = NULL,\n    .bin_filename = NULL,\n    .mode = MODE_EXPORT,\n    .offset = 0,\n    .format = IMG_FORMAT_CI,\n    .depth = 8,\n    .width = 32,\n    .height = 32,\n    .truncate = 1,\n};\n\ntypedef struct\n{\n    const char *name;\n    img_format format;\n    int depth;\n} format_entry;\n\nstatic const format_entry format_table[] =\n{\n    { \"ci4\",    IMG_FORMAT_CI,   4 },\n    { \"ci8\",    IMG_FORMAT_CI,   8 },\n};\n\nstatic const char *format2str(img_format format, int depth)\n{\n    for (unsigned i = 0; i < DIM(format_table); i++) {\n        if (format == format_table[i].format && depth == format_table[i].depth) {\n            return format_table[i].name;\n        }\n    }\n    return \"unknown\";\n}\n\nstatic int parse_format(graphics_config *config, const char *str)\n{\n    for (unsigned i = 0; i < DIM(format_table); i++) {\n        if (!strcasecmp(str, format_table[i].name)) {\n            config->format = format_table[i].format;\n            config->depth = format_table[i].depth;\n            return 1;\n        }\n    }\n    return 0;\n}\n\nstatic void print_usage(void)\n{\n    ERROR(\"Usage: n64graphics_ci -e/-i BIN_FILE -g PNG_FILE [-o offset] [-f FORMAT] [-w WIDTH] [-h HEIGHT] [-V]\\n\"\n        \"\\n\"\n        \"n64graphics v\" N64GRAPHICS_VERSION \": N64 graphics manipulator\\n\"\n        \"\\n\"\n        \"Required arguments:\\n\"\n        \" -e BIN_FILE  export from BIN_FILE to PNG_FILE\\n\"\n        \" -i BIN_FILE  import from PNG_FILE to BIN_FILE\\n\"\n        \" -g PNG_FILE  graphics file to import/export (.png)\\n\"\n        \"Optional arguments:\\n\"\n        \" -o OFFSET    starting offset in BIN_FILE (prevents truncation during import)\\n\"\n        \" -f FORMAT    texture format: ci4, ci8 (default: %s)\\n\"\n        \" -w WIDTH     export texture width (default: %d)\\n\"\n        \" -h HEIGHT    export texture height (default: %d)\\n\"\n        \" -v           verbose logging\\n\"\n        \" -V           print version information\\n\",\n        format2str(default_config.format, default_config.depth),\n        default_config.width,\n        default_config.height);\n}\n\nstatic void print_version(void)\n{\n    ERROR(\"n64graphics v\" N64GRAPHICS_VERSION \", using:\\n\"\n        \"  %s\\n\"\n        \"  %s\\n\",\n        n64graphics_get_read_version(), n64graphics_get_write_version());\n}\n\n// parse command line arguments\nstatic int parse_arguments(int argc, char *argv[], graphics_config *config)\n{\n    for (int i = 1; i < argc; i++) {\n        if (argv[i][0] == '-') {\n            switch (argv[i][1]) {\n            case 'e':\n                if (++i >= argc) return 0;\n                config->bin_filename = argv[i];\n                config->mode = MODE_EXPORT;\n                break;\n            case 'f':\n                if (++i >= argc) return 0;\n                if (!parse_format(config, argv[i])) {\n                    return 0;\n                }\n                break;\n            case 'i':\n                if (++i >= argc) return 0;\n                config->bin_filename = argv[i];\n                config->mode = MODE_IMPORT;\n                break;\n            case 'g':\n                if (++i >= argc) return 0;\n                config->img_filename = argv[i];\n                break;\n            case 'h':\n                if (++i >= argc) return 0;\n                config->height = strtoul(argv[i], NULL, 0);\n                break;\n            case 'o':\n                if (++i >= argc) return 0;\n                config->offset = strtoul(argv[i], NULL, 0);\n                config->truncate = 0;\n                break;\n            case 'w':\n                if (++i >= argc) return 0;\n                config->width = strtoul(argv[i], NULL, 0);\n                break;\n            case 'v':\n                g_verbosity = 1;\n                break;\n            case 'V':\n                print_version();\n                exit(0);\n                break;\n            default:\n                return 0;\n                break;\n            }\n        }\n        else {\n            return 0;\n        }\n    }\n    return 1;\n}\n\nchar* getPaletteFilename(char* ci_filename)\n{\n    int bin_filename_len;\n    int extension_len;\n    char* pal_bin_filename;\n    char* extension_loc;\n    char* extension;\n\n    // Write Palette file\n    bin_filename_len = strlen(ci_filename);\n    extension_loc = strrchr(ci_filename, '.');\n    extension_len = (int)(extension_loc - ci_filename);\n    extension = malloc(extension_len);\n    memcpy(extension, extension_loc, extension_len);\n    pal_bin_filename = malloc(bin_filename_len + 4); // +4 to include \".pal\"\n    if (!pal_bin_filename) {\n        ERROR(\"Error allocating bytes for palette filename\\n\");\n    }\n    memcpy(pal_bin_filename, ci_filename, bin_filename_len);\n    strcpy(pal_bin_filename + bin_filename_len, \".pal\");\n    //strcpy(pal_bin_filename + bin_filename_len, extension);\n\n    free(extension);\n\n    return pal_bin_filename;\n}\n\nint main(int argc, char* argv[])\n{\n    graphics_config config = default_config;\n    rgba *imgr;\n    FILE *fp;\n    uint8_t *raw;\n    int raw_size;\n    int length = 0;\n    int flength;\n    int res;\n    FILE *fp_pal; // for ci palette\n    uint8_t *pal;\n    int pal_len;\n    char* pal_bin_filename;\n\n    int valid = parse_arguments(argc, argv, &config);\n    if (!valid || !config.bin_filename || !config.bin_filename || !config.img_filename) {\n        print_usage();\n        exit(EXIT_FAILURE);\n    }\n\n    if (config.mode == MODE_IMPORT) {\n        printf(\"%s\\n\", config.bin_filename);\n        if (config.truncate) {\n            fp = fopen(config.bin_filename, \"wb\");\n        }\n        else {\n            fp = fopen(config.bin_filename, \"r+b\");\n        }\n        if (!fp) {\n            ERROR(\"Error opening binary file \\\"%s\\\"\\n\", config.bin_filename);\n            return -1;\n        }\n        if (!config.truncate) {\n            fseek(fp, config.offset, SEEK_SET);\n        }\n        switch (config.format) {\n        case IMG_FORMAT_CI:\n            imgr = png2rgba(config.img_filename, &config.width, &config.height);\n            raw_size = config.width * config.height * config.depth / 8;\n            raw = malloc(raw_size);\n            if (!raw) {\n                ERROR(\"Error allocating %u bytes\\n\", raw_size);\n            }\n            if (config.depth == 4) {\n                pal_len = 16 * 2; // CI4\n            }\n            else {\n                pal_len = 256 * 2; // CI8\n            }\n            pal = malloc(pal_len);\n            if (!pal) {\n                ERROR(\"Error allocating %u bytes for palette\\n\", pal_len);\n            }\n            length = rgba2rawci(raw, pal, &pal_len, imgr, config.width, config.height, config.depth);\n            //length = rgba2raw(raw, imgr, config.width, config.height, config.depth);\n            break;\n        }\n        if (length <= 0) {\n            ERROR(\"Error converting to raw format\\n\");\n            return EXIT_FAILURE;\n        }\n        INFO(\"Writing 0x%X bytes to offset 0x%X of \\\"%s\\\"\\n\", length, config.offset, config.bin_filename);\n        flength = fwrite(raw, 1, length, fp);\n        if (flength != length) {\n            ERROR(\"Error writing %d bytes to \\\"%s\\\"\\n\", length, config.bin_filename);\n        }\n        fclose(fp);\n\n        if (config.format == IMG_FORMAT_CI) {\n            pal_bin_filename = getPaletteFilename(config.bin_filename);\n\n            fp_pal = fopen(pal_bin_filename, \"wb\");\n            INFO(\"Writing 0x%X bytes to palette file \\\"%s\\\"\\n\", pal_len, pal_bin_filename);\n            flength = fwrite(pal, 1, pal_len, fp_pal);\n            if (flength != pal_len) {\n                ERROR(\"Error writing %d bytes to \\\"%s\\\"\\n\", pal_len, pal_bin_filename);\n            }\n            fclose(fp_pal);\n            free(pal_bin_filename);\n        }\n    } else { // Export\n        if (config.width <= 0 || config.height <= 0 || config.depth <= 0) {\n            ERROR(\"Error: must set position width and height for export\\n\");\n            return EXIT_FAILURE;\n        }\n        fp = fopen(config.bin_filename, \"rb\");\n        if (!fp) {\n            ERROR(\"Error opening \\\"%s\\\"\\n\", config.bin_filename);\n            return -1;\n        }\n        raw_size = config.width * config.height * config.depth / 8;\n        raw = malloc(raw_size);\n        if (config.offset > 0) {\n            fseek(fp, config.offset, SEEK_SET);\n        }\n        flength = fread(raw, 1, raw_size, fp);\n        if (flength != raw_size) {\n            ERROR(\"Error reading %d bytes from \\\"%s\\\"\\n\", raw_size, config.bin_filename);\n        }\n        switch (config.format) {\n        case IMG_FORMAT_CI:\n            // Read Palette file\n            pal_bin_filename = getPaletteFilename(config.bin_filename);\n            fp_pal = fopen(pal_bin_filename, \"rb\");\n            if (!fp_pal) {\n                ERROR(\"Error opening \\\"%s\\\"\\n\", pal_bin_filename);\n                return -1;\n            }\n            if (config.depth == 4) {\n                pal_len = 16 * 2; // CI4\n            }\n            else {\n                pal_len = 256 * 2; // CI8\n            }\n\n            pal = malloc(pal_len);\n            if (config.offset > 0) {\n                fseek(fp, config.offset, SEEK_SET);\n            }\n            flength = fread(pal, 1, pal_len, fp_pal);\n\n            imgr = rawci2rgba(raw, pal, config.width, config.height, config.depth);\n            res = rgba2png(config.img_filename, imgr, config.width, config.height);\n\n            free(pal_bin_filename);\n            break;\n        default:\n            return EXIT_FAILURE;\n        }\n        if (!res) {\n            ERROR(\"Error writing to \\\"%s\\\"\\n\", config.img_filename);\n        }\n    }\n\n    return 0;\n}\n"
  },
  {
    "path": "tools/sm64tools/n64graphics_ci_dir/n64graphics_ci.h",
    "content": "#ifndef N64GRAPHICS_CI_H_\n#define N64GRAPHICS_CI_H_\n\n#include <stdint.h>\n\n// intermediate formats\ntypedef struct _rgba\n{\n    uint8_t red;\n    uint8_t green;\n    uint8_t blue;\n    uint8_t alpha;\n} rgba;\n\ntypedef struct _ia\n{\n    uint8_t intensity;\n    uint8_t alpha;\n} ia;\n\n// N64 raw RGBA16/RGBA32 -> intermediate RGBA\nrgba *raw2rgba(const uint8_t *raw, int width, int height, int depth);\n\n// N64 raw CI + palette -> intermediate RGBA\nrgba *rawci2rgba(const uint8_t *rawci, const uint8_t *palette, int width, int height, int depth);\n\n// intermediate RGBA -> N64 raw CI + palette\nint rgba2rawci(uint8_t *raw, uint8_t *out_palette, int *pal_len, const rgba *img, int width, int height, int depth);\n\n// PNG file -> intermediate RGBA\nrgba *png2rgba(const char *png_filename, int *width, int *height);\n\n// intermediate RGBA write to PNG file\nint rgba2png(const char *png_filename, const rgba *img, int width, int height);\n\n// get version of underlying graphics reading library\nconst char *n64graphics_get_read_version(void);\n\n// get version of underlying graphics writing library\nconst char *n64graphics_get_write_version(void);\n\n#endif\n"
  },
  {
    "path": "tools/sm64tools/n64graphics_ci_dir/utils.c",
    "content": "#include <dirent.h>\n#include <fcntl.h>\n#include <stdint.h>\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <sys/stat.h>\n#if defined(_MSC_VER) || defined(__MINGW32__)\n  #include <io.h>\n  #include <sys/utime.h>\n#else\n  #include <unistd.h>\n  #include <utime.h>\n#endif\n\n#include \"utils.h\"\n\n// global verbosity setting\nint g_verbosity = 0;\n\nint read_s16_be(unsigned char *buf)\n{\n   unsigned tmp = read_u16_be(buf);\n   int ret;\n   if (tmp > 0x7FFF) {\n      ret = -((int)0x10000 - (int)tmp);\n   } else {\n      ret = (int)tmp;\n   }\n   return ret;\n}\n\nfloat read_f32_be(unsigned char *buf)\n{\n   union {uint32_t i; float f;} ret;\n   ret.i = read_u32_be(buf);\n   return ret.f;\n}\n\nint is_power2(unsigned int val)\n{\n   while (((val & 1) == 0) && (val > 1)) {\n      val >>= 1;\n   }\n   return (val == 1);\n}\n\nvoid fprint_hex(FILE *fp, const unsigned char *buf, int length)\n{\n   int i;\n   for (i = 0; i < length; i++) {\n      fprint_byte(fp, buf[i]);\n      fputc(' ', fp);\n   }\n}\n\nvoid fprint_hex_source(FILE *fp, const unsigned char *buf, int length)\n{\n   int i;\n   for (i = 0; i < length; i++) {\n      if (i > 0) fputs(\", \", fp);\n      fputs(\"0x\", fp);\n      fprint_byte(fp, buf[i]);\n   }\n}\n\nvoid print_hex(const unsigned char *buf, int length)\n{\n   fprint_hex(stdout, buf, length);\n}\n\nvoid swap_bytes(unsigned char *data, long length)\n{\n   long i;\n   unsigned char tmp;\n   for (i = 0; i < length; i += 2) {\n      tmp = data[i];\n      data[i] = data[i+1];\n      data[i+1] = tmp;\n   }\n}\n\nvoid reverse_endian(unsigned char *data, long length)\n{\n   long i;\n   unsigned char tmp;\n   for (i = 0; i < length; i += 4) {\n      tmp = data[i];\n      data[i] = data[i+3];\n      data[i+3] = tmp;\n      tmp = data[i+1];\n      data[i+1] = data[i+2];\n      data[i+2] = tmp;\n   }\n}\n\nlong filesize(const char *filename)\n{\n   struct stat st;\n\n   if (stat(filename, &st) == 0) {\n      return st.st_size;\n   }\n\n   return -1;\n}\n\nvoid touch_file(const char *filename)\n{\n   int fd;\n   //fd = open(filename, O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666);\n   fd = open(filename, O_WRONLY|O_CREAT, 0666);\n   if (fd >= 0) {\n      utime(filename, NULL);\n      close(fd);\n   }\n}\n\nlong read_file(const char *file_name, unsigned char **data)\n{\n   FILE *in;\n   unsigned char *in_buf = NULL;\n   long file_size;\n   long bytes_read;\n   in = fopen(file_name, \"rb\");\n   if (in == NULL) {\n      return -1;\n   }\n\n   // allocate buffer to read from offset to end of file\n   fseek(in, 0, SEEK_END);\n   file_size = ftell(in);\n\n   // sanity check\n   if (file_size > 256*MB) {\n      return -2;\n   }\n\n   in_buf = malloc(file_size);\n   fseek(in, 0, SEEK_SET);\n\n   // read bytes\n   bytes_read = fread(in_buf, 1, file_size, in);\n   if (bytes_read != file_size) {\n      return -3;\n   }\n\n   fclose(in);\n   *data = in_buf;\n   return bytes_read;\n}\n\nlong write_file(const char *file_name, unsigned char *data, long length)\n{\n   FILE *out;\n   long bytes_written;\n   // open output file\n   out = fopen(file_name, \"wb\");\n   if (out == NULL) {\n      perror(file_name);\n      return -1;\n   }\n   bytes_written = fwrite(data, 1, length, out);\n   fclose(out);\n   return bytes_written;\n}\n\nvoid generate_filename(const char *in_name, char *out_name, char *extension)\n{\n   char tmp_name[FILENAME_MAX];\n   int len;\n   int i;\n   strcpy(tmp_name, in_name);\n   len = strlen(tmp_name);\n   for (i = len - 1; i > 0; i--) {\n      if (tmp_name[i] == '.') {\n         break;\n      }\n   }\n   if (i <= 0) {\n      i = len;\n   }\n   tmp_name[i] = '\\0';\n   sprintf(out_name, \"%s.%s\", tmp_name, extension);\n}\n\nchar *basename(const char *name)\n{\n   const char *base = name;\n   while (*name) {\n      if (*name++ == '/') {\n         base = name;\n      }\n   }\n   return (char *)base;\n}\n\nvoid make_dir(const char *dir_name)\n{\n   struct stat st = {0};\n   if (stat(dir_name, &st) == -1) {\n      mkdir(dir_name, 0755);\n   }\n}\n\nlong copy_file(const char *src_name, const char *dst_name)\n{\n   unsigned char *buf;\n   long bytes_written;\n   long bytes_read;\n\n   bytes_read = read_file(src_name, &buf);\n\n   if (bytes_read > 0) {\n      bytes_written = write_file(dst_name, buf, bytes_read);\n      if (bytes_written != bytes_read) {\n         bytes_read = -1;\n      }\n      free(buf);\n   }\n\n   return bytes_read;\n}\n\nvoid dir_list_ext(const char *dir, const char *extension, dir_list *list)\n{\n   char *pool;\n   char *pool_ptr;\n   struct dirent *entry;\n   DIR *dfd;\n   int idx;\n\n   dfd = opendir(dir);\n   if (dfd == NULL) {\n      ERROR(\"Can't open '%s'\\n\", dir);\n      exit(1);\n   }\n\n   pool = malloc(FILENAME_MAX * MAX_DIR_FILES);\n   pool_ptr = pool;\n\n   idx = 0;\n   while ((entry = readdir(dfd)) != NULL && idx < MAX_DIR_FILES) {\n      if (!extension || str_ends_with(entry->d_name, extension)) {\n         sprintf(pool_ptr, \"%s/%s\", dir, entry->d_name);\n         list->files[idx] = pool_ptr;\n         pool_ptr += strlen(pool_ptr) + 1;\n         idx++;\n      }\n   }\n   list->count = idx;\n\n   closedir(dfd);\n}\n\nvoid dir_list_free(dir_list *list)\n{\n   // assume first entry in array is allocated\n   if (list->files[0]) {\n      free(list->files[0]);\n      list->files[0] = NULL;\n   }\n}\n\nint str_ends_with(const char *str, const char *suffix)\n{\n   if (!str || !suffix) {\n      return 0;\n   }\n   size_t len_str = strlen(str);\n   size_t len_suffix = strlen(suffix);\n   if (len_suffix > len_str) {\n      return 0;\n   }\n   return (0 == strncmp(str + len_str - len_suffix, suffix, len_suffix));\n}\n"
  },
  {
    "path": "tools/sm64tools/n64graphics_ci_dir/utils.h",
    "content": "#ifndef UTILS_H_\n#define UTILS_H_\n\n#include <stdio.h>\n\n// defines\n\n// printing size_t varies by compiler\n#if defined(_MSC_VER) || defined(__MINGW32__)\n  #define SIZE_T_FORMAT \"%Iu\"\n#else\n  #define SIZE_T_FORMAT \"%zu\"\n#endif\n\n#define KB 1024\n#define MB (1024 * KB)\n\n// number of elements in statically declared array\n#define DIM(S_ARR_) (sizeof(S_ARR_) / sizeof(S_ARR_[0]))\n\n#define MIN(A_, B_) ((A_) < (B_) ? (A_) : (B_))\n#define MAX(A_, B_) ((A_) > (B_) ? (A_) : (B_))\n\n// align value to N-byte boundary\n#define ALIGN(VAL_, ALIGNMENT_) (((VAL_) + ((ALIGNMENT_) - 1)) & ~((ALIGNMENT_) - 1))\n\n// read/write u32/16 big/little endian\n#define read_u32_be(buf) (unsigned int)(((buf)[0] << 24) + ((buf)[1] << 16) + ((buf)[2] << 8) + ((buf)[3]))\n#define read_u32_le(buf) (unsigned int)(((buf)[1] << 24) + ((buf)[0] << 16) + ((buf)[3] << 8) + ((buf)[2]))\n#define write_u32_be(buf, val) do { \\\n   (buf)[0] = ((val) >> 24) & 0xFF; \\\n   (buf)[1] = ((val) >> 16) & 0xFF; \\\n   (buf)[2] = ((val) >> 8) & 0xFF; \\\n   (buf)[3] = (val) & 0xFF; \\\n} while(0)\n#define read_u16_be(buf) (((buf)[0] << 8) + ((buf)[1]))\n#define write_u16_be(buf, val) do { \\\n   (buf)[0] = ((val) >> 8) & 0xFF; \\\n   (buf)[1] = ((val)) & 0xFF; \\\n} while(0)\n\n// print nibbles and bytes\n#define fprint_nibble(FP, NIB_) fputc((NIB_) < 10 ? ('0' + (NIB_)) : ('A' + (NIB_) - 0xA), FP)\n#define fprint_byte(FP, BYTE_) do { \\\n    fprint_nibble(FP, (BYTE_) >> 4); \\\n    fprint_nibble(FP, (BYTE_) & 0x0F); \\\n  } while(0)\n#define print_nibble(NIB_) fprint_nibble(stdout, NIB_)\n#define print_byte(BYTE_) fprint_byte(stdout, BYTE_)\n\n// Windows compatibility\n#if defined(_MSC_VER) || defined(__MINGW32__)\n  #include <direct.h>\n  #define mkdir(DIR_, PERM_) _mkdir(DIR_)\n  #ifndef strcasecmp\n    #define strcasecmp(A, B) stricmp(A, B)\n  #endif\n#endif\n\n// typedefs\n\n#define MAX_DIR_FILES 128\ntypedef struct\n{\n   char *files[MAX_DIR_FILES];\n   int count;\n} dir_list;\n\n// global verbosity setting\nextern int g_verbosity;\n\n#define ERROR(...) fprintf(stderr, __VA_ARGS__)\n#define INFO(...) if (g_verbosity) printf(__VA_ARGS__)\n#define INFO_HEX(...) if (g_verbosity) print_hex(__VA_ARGS__)\n\n// functions\n\n// convert two bytes in big-endian to signed int\nint read_s16_be(unsigned char *buf);\n\n// convert four bytes in big-endian to float\nfloat read_f32_be(unsigned char *buf);\n\n// determine if value is power of 2\n// returns 1 if val is power of 2, 0 otherwise\nint is_power2(unsigned int val);\n\n// print buffer as hex bytes\n// fp: file pointer\n// buf: buffer to read bytes from\n// length: length of buffer to print\nvoid fprint_hex(FILE *fp, const unsigned char *buf, int length);\nvoid fprint_hex_source(FILE *fp, const unsigned char *buf, int length);\nvoid print_hex(const unsigned char *buf, int length);\n\n// perform byteswapping to convert from v64 to z64 ordering\nvoid swap_bytes(unsigned char *data, long length);\n\n// reverse endian to convert from n64 to z64 ordering\nvoid reverse_endian(unsigned char *data, long length);\n\n// get size of file without opening it;\n// returns file size or negative on error\nlong filesize(const char *file_name);\n\n// update file timestamp to now, creating it if it doesn't exist\nvoid touch_file(const char *filename);\n\n// read entire contents of file into buffer\n// returns file size or negative on error\nlong read_file(const char *file_name, unsigned char **data);\n\n// write buffer to file\n// returns number of bytes written out or -1 on failure\nlong write_file(const char *file_name, unsigned char *data, long length);\n\n// generate an output file name from input name by replacing file extension\n// in_name: input file name\n// out_name: buffer to write output name in\n// extension: new file extension to use\nvoid generate_filename(const char *in_name, char *out_name, char *extension);\n\n// extract base filename from file path\n// name: path to file\n// returns just the file name after the last '/'\nchar *basename(const char *name);\n\n// make a directory if it doesn't exist\n// dir_name: name of the directory\nvoid make_dir(const char *dir_name);\n\n// copy a file from src_name to dst_name. will not make directories\n// src_name: source file name\n// dst_name: destination file name\nlong copy_file(const char *src_name, const char *dst_name);\n\n// list a directory, optionally filtering files by extension\n// dir: directory to list files in\n// extension: extension to filter files by (NULL if no filtering)\n// list: output list and count\nvoid dir_list_ext(const char *dir, const char *extension, dir_list *list);\n\n// free associated date from a directory list\n// list: directory list filled in by dir_list_ext() call\nvoid dir_list_free(dir_list *list);\n\n// determine if a string ends with another string\n// str: string to check if ends with 'suffix'\n// suffix: string to see if 'str' ends with\n// returns 1 if 'str' ends with 'suffix'\nint str_ends_with(const char *str, const char *suffix);\n\n#endif // UTILS_H_\n"
  },
  {
    "path": "tools/sm64tools/sm64tools.LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2015-2018 queueRAM\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"
  },
  {
    "path": "tools/sm64tools/stb/stb_image.h",
    "content": "/* stb_image - v2.19 - public domain image loader - http://nothings.org/stb\n                                  no warranty implied; use at your own risk\n\n   Do this:\n      #define STB_IMAGE_IMPLEMENTATION\n   before you include this file in *one* C or C++ file to create the implementation.\n\n   // i.e. it should look like this:\n   #include ...\n   #include ...\n   #include ...\n   #define STB_IMAGE_IMPLEMENTATION\n   #include \"stb_image.h\"\n\n   You can #define STBI_ASSERT(x) before the #include to avoid using assert.h.\n   And #define STBI_MALLOC, STBI_REALLOC, and STBI_FREE to avoid using malloc,realloc,free\n\n\n   QUICK NOTES:\n      Primarily of interest to game developers and other people who can\n          avoid problematic images and only need the trivial interface\n\n      JPEG baseline & progressive (12 bpc/arithmetic not supported, same as stock IJG lib)\n      PNG 1/2/4/8/16-bit-per-channel\n\n      TGA (not sure what subset, if a subset)\n      BMP non-1bpp, non-RLE\n      PSD (composited view only, no extra channels, 8/16 bit-per-channel)\n\n      GIF (*comp always reports as 4-channel)\n      HDR (radiance rgbE format)\n      PIC (Softimage PIC)\n      PNM (PPM and PGM binary only)\n\n      Animated GIF still needs a proper API, but here's one way to do it:\n          http://gist.github.com/urraka/685d9a6340b26b830d49\n\n      - decode from memory or through FILE (define STBI_NO_STDIO to remove code)\n      - decode from arbitrary I/O callbacks\n      - SIMD acceleration on x86/x64 (SSE2) and ARM (NEON)\n\n   Full documentation under \"DOCUMENTATION\" below.\n\n\nLICENSE\n\n  See end of file for license information.\n\nRECENT REVISION HISTORY:\n\n      2.19  (2018-02-11) fix warning\n      2.18  (2018-01-30) fix warnings\n      2.17  (2018-01-29) bugfix, 1-bit BMP, 16-bitness query, fix warnings\n      2.16  (2017-07-23) all functions have 16-bit variants; optimizations; bugfixes\n      2.15  (2017-03-18) fix png-1,2,4; all Imagenet JPGs; no runtime SSE detection on GCC\n      2.14  (2017-03-03) remove deprecated STBI_JPEG_OLD; fixes for Imagenet JPGs\n      2.13  (2016-12-04) experimental 16-bit API, only for PNG so far; fixes\n      2.12  (2016-04-02) fix typo in 2.11 PSD fix that caused crashes\n      2.11  (2016-04-02) 16-bit PNGS; enable SSE2 in non-gcc x64\n                         RGB-format JPEG; remove white matting in PSD;\n                         allocate large structures on the stack;\n                         correct channel count for PNG & BMP\n      2.10  (2016-01-22) avoid warning introduced in 2.09\n      2.09  (2016-01-16) 16-bit TGA; comments in PNM files; STBI_REALLOC_SIZED\n\n   See end of file for full revision history.\n\n\n ============================    Contributors    =========================\n\n Image formats                          Extensions, features\n    Sean Barrett (jpeg, png, bmp)          Jetro Lauha (stbi_info)\n    Nicolas Schulz (hdr, psd)              Martin \"SpartanJ\" Golini (stbi_info)\n    Jonathan Dummer (tga)                  James \"moose2000\" Brown (iPhone PNG)\n    Jean-Marc Lienher (gif)                Ben \"Disch\" Wenger (io callbacks)\n    Tom Seddon (pic)                       Omar Cornut (1/2/4-bit PNG)\n    Thatcher Ulrich (psd)                  Nicolas Guillemot (vertical flip)\n    Ken Miller (pgm, ppm)                  Richard Mitton (16-bit PSD)\n    github:urraka (animated gif)           Junggon Kim (PNM comments)\n    Christopher Forseth (animated gif)     Daniel Gibson (16-bit TGA)\n                                           socks-the-fox (16-bit PNG)\n                                           Jeremy Sawicki (handle all ImageNet JPGs)\n Optimizations & bugfixes                  Mikhail Morozov (1-bit BMP)\n    Fabian \"ryg\" Giesen                    Anael Seghezzi (is-16-bit query)\n    Arseny Kapoulkine\n    John-Mark Allen\n\n Bug & warning fixes\n    Marc LeBlanc            David Woo          Guillaume George   Martins Mozeiko\n    Christpher Lloyd        Jerry Jansson      Joseph Thomson     Phil Jordan\n    Dave Moore              Roy Eltham         Hayaki Saito       Nathan Reed\n    Won Chun                Luke Graham        Johan Duparc       Nick Verigakis\n    the Horde3D community   Thomas Ruf         Ronny Chevalier    github:rlyeh\n    Janez Zemva             John Bartholomew   Michal Cichon      github:romigrou\n    Jonathan Blow           Ken Hamada         Tero Hanninen      github:svdijk\n    Laurent Gomila          Cort Stratton      Sergio Gonzalez    github:snagar\n    Aruelien Pocheville     Thibault Reuille   Cass Everitt       github:Zelex\n    Ryamond Barbiero        Paul Du Bois       Engin Manap        github:grim210\n    Aldo Culquicondor       Philipp Wiesemann  Dale Weiler        github:sammyhw\n    Oriol Ferrer Mesia      Josh Tobin         Matthew Gregan     github:phprus\n    Julian Raschke          Gregory Mullen     Baldur Karlsson    github:poppolopoppo\n    Christian Floisand      Kevin Schmidt                         github:darealshinji\n    Blazej Dariusz Roszkowski                                     github:Michaelangel007\n*/\n\n#ifndef STBI_INCLUDE_STB_IMAGE_H\n#define STBI_INCLUDE_STB_IMAGE_H\n\n// DOCUMENTATION\n//\n// Limitations:\n//    - no 12-bit-per-channel JPEG\n//    - no JPEGs with arithmetic coding\n//    - GIF always returns *comp=4\n//\n// Basic usage (see HDR discussion below for HDR usage):\n//    int x,y,n;\n//    unsigned char *data = stbi_load(filename, &x, &y, &n, 0);\n//    // ... process data if not NULL ...\n//    // ... x = width, y = height, n = # 8-bit components per pixel ...\n//    // ... replace '0' with '1'..'4' to force that many components per pixel\n//    // ... but 'n' will always be the number that it would have been if you said 0\n//    stbi_image_free(data)\n//\n// Standard parameters:\n//    int *x                 -- outputs image width in pixels\n//    int *y                 -- outputs image height in pixels\n//    int *channels_in_file  -- outputs # of image components in image file\n//    int desired_channels   -- if non-zero, # of image components requested in result\n//\n// The return value from an image loader is an 'unsigned char *' which points\n// to the pixel data, or NULL on an allocation failure or if the image is\n// corrupt or invalid. The pixel data consists of *y scanlines of *x pixels,\n// with each pixel consisting of N interleaved 8-bit components; the first\n// pixel pointed to is top-left-most in the image. There is no padding between\n// image scanlines or between pixels, regardless of format. The number of\n// components N is 'desired_channels' if desired_channels is non-zero, or\n// *channels_in_file otherwise. If desired_channels is non-zero,\n// *channels_in_file has the number of components that _would_ have been\n// output otherwise. E.g. if you set desired_channels to 4, you will always\n// get RGBA output, but you can check *channels_in_file to see if it's trivially\n// opaque because e.g. there were only 3 channels in the source image.\n//\n// An output image with N components has the following components interleaved\n// in this order in each pixel:\n//\n//     N=#comp     components\n//       1           grey\n//       2           grey, alpha\n//       3           red, green, blue\n//       4           red, green, blue, alpha\n//\n// If image loading fails for any reason, the return value will be NULL,\n// and *x, *y, *channels_in_file will be unchanged. The function\n// stbi_failure_reason() can be queried for an extremely brief, end-user\n// unfriendly explanation of why the load failed. Define STBI_NO_FAILURE_STRINGS\n// to avoid compiling these strings at all, and STBI_FAILURE_USERMSG to get slightly\n// more user-friendly ones.\n//\n// Paletted PNG, BMP, GIF, and PIC images are automatically depalettized.\n//\n// ===========================================================================\n//\n// Philosophy\n//\n// stb libraries are designed with the following priorities:\n//\n//    1. easy to use\n//    2. easy to maintain\n//    3. good performance\n//\n// Sometimes I let \"good performance\" creep up in priority over \"easy to maintain\",\n// and for best performance I may provide less-easy-to-use APIs that give higher\n// performance, in addition to the easy to use ones. Nevertheless, it's important\n// to keep in mind that from the standpoint of you, a client of this library,\n// all you care about is #1 and #3, and stb libraries DO NOT emphasize #3 above all.\n//\n// Some secondary priorities arise directly from the first two, some of which\n// make more explicit reasons why performance can't be emphasized.\n//\n//    - Portable (\"ease of use\")\n//    - Small source code footprint (\"easy to maintain\")\n//    - No dependencies (\"ease of use\")\n//\n// ===========================================================================\n//\n// I/O callbacks\n//\n// I/O callbacks allow you to read from arbitrary sources, like packaged\n// files or some other source. Data read from callbacks are processed\n// through a small internal buffer (currently 128 bytes) to try to reduce\n// overhead.\n//\n// The three functions you must define are \"read\" (reads some bytes of data),\n// \"skip\" (skips some bytes of data), \"eof\" (reports if the stream is at the end).\n//\n// ===========================================================================\n//\n// SIMD support\n//\n// The JPEG decoder will try to automatically use SIMD kernels on x86 when\n// supported by the compiler. For ARM Neon support, you must explicitly\n// request it.\n//\n// (The old do-it-yourself SIMD API is no longer supported in the current\n// code.)\n//\n// On x86, SSE2 will automatically be used when available based on a run-time\n// test; if not, the generic C versions are used as a fall-back. On ARM targets,\n// the typical path is to have separate builds for NEON and non-NEON devices\n// (at least this is true for iOS and Android). Therefore, the NEON support is\n// toggled by a build flag: define STBI_NEON to get NEON loops.\n//\n// If for some reason you do not want to use any of SIMD code, or if\n// you have issues compiling it, you can disable it entirely by\n// defining STBI_NO_SIMD.\n//\n// ===========================================================================\n//\n// HDR image support   (disable by defining STBI_NO_HDR)\n//\n// stb_image now supports loading HDR images in general, and currently\n// the Radiance .HDR file format, although the support is provided\n// generically. You can still load any file through the existing interface;\n// if you attempt to load an HDR file, it will be automatically remapped to\n// LDR, assuming gamma 2.2 and an arbitrary scale factor defaulting to 1;\n// both of these constants can be reconfigured through this interface:\n//\n//     stbi_hdr_to_ldr_gamma(2.2f);\n//     stbi_hdr_to_ldr_scale(1.0f);\n//\n// (note, do not use _inverse_ constants; stbi_image will invert them\n// appropriately).\n//\n// Additionally, there is a new, parallel interface for loading files as\n// (linear) floats to preserve the full dynamic range:\n//\n//    float *data = stbi_loadf(filename, &x, &y, &n, 0);\n//\n// If you load LDR images through this interface, those images will\n// be promoted to floating point values, run through the inverse of\n// constants corresponding to the above:\n//\n//     stbi_ldr_to_hdr_scale(1.0f);\n//     stbi_ldr_to_hdr_gamma(2.2f);\n//\n// Finally, given a filename (or an open file or memory block--see header\n// file for details) containing image data, you can query for the \"most\n// appropriate\" interface to use (that is, whether the image is HDR or\n// not), using:\n//\n//     stbi_is_hdr(char *filename);\n//\n// ===========================================================================\n//\n// iPhone PNG support:\n//\n// By default we convert iphone-formatted PNGs back to RGB, even though\n// they are internally encoded differently. You can disable this conversion\n// by by calling stbi_convert_iphone_png_to_rgb(0), in which case\n// you will always just get the native iphone \"format\" through (which\n// is BGR stored in RGB).\n//\n// Call stbi_set_unpremultiply_on_load(1) as well to force a divide per\n// pixel to remove any premultiplied alpha *only* if the image file explicitly\n// says there's premultiplied data (currently only happens in iPhone images,\n// and only if iPhone convert-to-rgb processing is on).\n//\n// ===========================================================================\n//\n// ADDITIONAL CONFIGURATION\n//\n//  - You can suppress implementation of any of the decoders to reduce\n//    your code footprint by #defining one or more of the following\n//    symbols before creating the implementation.\n//\n//        STBI_NO_JPEG\n//        STBI_NO_PNG\n//        STBI_NO_BMP\n//        STBI_NO_PSD\n//        STBI_NO_TGA\n//        STBI_NO_GIF\n//        STBI_NO_HDR\n//        STBI_NO_PIC\n//        STBI_NO_PNM   (.ppm and .pgm)\n//\n//  - You can request *only* certain decoders and suppress all other ones\n//    (this will be more forward-compatible, as addition of new decoders\n//    doesn't require you to disable them explicitly):\n//\n//        STBI_ONLY_JPEG\n//        STBI_ONLY_PNG\n//        STBI_ONLY_BMP\n//        STBI_ONLY_PSD\n//        STBI_ONLY_TGA\n//        STBI_ONLY_GIF\n//        STBI_ONLY_HDR\n//        STBI_ONLY_PIC\n//        STBI_ONLY_PNM   (.ppm and .pgm)\n//\n//   - If you use STBI_NO_PNG (or _ONLY_ without PNG), and you still\n//     want the zlib decoder to be available, #define STBI_SUPPORT_ZLIB\n//\n\n\n#ifndef STBI_NO_STDIO\n#include <stdio.h>\n#endif // STBI_NO_STDIO\n\n#define STBI_VERSION 1\n\nenum\n{\n   STBI_default = 0, // only used for desired_channels\n\n   STBI_grey       = 1,\n   STBI_grey_alpha = 2,\n   STBI_rgb        = 3,\n   STBI_rgb_alpha  = 4\n};\n\ntypedef unsigned char stbi_uc;\ntypedef unsigned short stbi_us;\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#ifdef STB_IMAGE_STATIC\n#define STBIDEF static\n#else\n#define STBIDEF extern\n#endif\n\n//////////////////////////////////////////////////////////////////////////////\n//\n// PRIMARY API - works on images of any type\n//\n\n//\n// load image by filename, open file, or memory buffer\n//\n\ntypedef struct\n{\n   int      (*read)  (void *user,char *data,int size);   // fill 'data' with 'size' bytes.  return number of bytes actually read\n   void     (*skip)  (void *user,int n);                 // skip the next 'n' bytes, or 'unget' the last -n bytes if negative\n   int      (*eof)   (void *user);                       // returns nonzero if we are at end of file/data\n} stbi_io_callbacks;\n\n////////////////////////////////////\n//\n// 8-bits-per-channel interface\n//\n\nSTBIDEF stbi_uc *stbi_load_from_memory   (stbi_uc           const *buffer, int len   , int *x, int *y, int *channels_in_file, int desired_channels);\nSTBIDEF stbi_uc *stbi_load_from_callbacks(stbi_io_callbacks const *clbk  , void *user, int *x, int *y, int *channels_in_file, int desired_channels);\n#ifndef STBI_NO_GIF\nSTBIDEF stbi_uc *stbi_load_gif_from_memory(stbi_uc const *buffer, int len, int **delays, int *x, int *y, int *z, int *comp, int req_comp);\n#endif\n\n\n#ifndef STBI_NO_STDIO\nSTBIDEF stbi_uc *stbi_load            (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels);\nSTBIDEF stbi_uc *stbi_load_from_file  (FILE *f, int *x, int *y, int *channels_in_file, int desired_channels);\n// for stbi_load_from_file, file pointer is left pointing immediately after image\n#endif\n\n////////////////////////////////////\n//\n// 16-bits-per-channel interface\n//\n\nSTBIDEF stbi_us *stbi_load_16_from_memory   (stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels);\nSTBIDEF stbi_us *stbi_load_16_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels);\n\n#ifndef STBI_NO_STDIO\nSTBIDEF stbi_us *stbi_load_16          (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels);\nSTBIDEF stbi_us *stbi_load_from_file_16(FILE *f, int *x, int *y, int *channels_in_file, int desired_channels);\n#endif\n\n////////////////////////////////////\n//\n// float-per-channel interface\n//\n#ifndef STBI_NO_LINEAR\n   STBIDEF float *stbi_loadf_from_memory     (stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels);\n   STBIDEF float *stbi_loadf_from_callbacks  (stbi_io_callbacks const *clbk, void *user, int *x, int *y,  int *channels_in_file, int desired_channels);\n\n   #ifndef STBI_NO_STDIO\n   STBIDEF float *stbi_loadf            (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels);\n   STBIDEF float *stbi_loadf_from_file  (FILE *f, int *x, int *y, int *channels_in_file, int desired_channels);\n   #endif\n#endif\n\n#ifndef STBI_NO_HDR\n   STBIDEF void   stbi_hdr_to_ldr_gamma(float gamma);\n   STBIDEF void   stbi_hdr_to_ldr_scale(float scale);\n#endif // STBI_NO_HDR\n\n#ifndef STBI_NO_LINEAR\n   STBIDEF void   stbi_ldr_to_hdr_gamma(float gamma);\n   STBIDEF void   stbi_ldr_to_hdr_scale(float scale);\n#endif // STBI_NO_LINEAR\n\n// stbi_is_hdr is always defined, but always returns false if STBI_NO_HDR\nSTBIDEF int    stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clbk, void *user);\nSTBIDEF int    stbi_is_hdr_from_memory(stbi_uc const *buffer, int len);\n#ifndef STBI_NO_STDIO\nSTBIDEF int      stbi_is_hdr          (char const *filename);\nSTBIDEF int      stbi_is_hdr_from_file(FILE *f);\n#endif // STBI_NO_STDIO\n\n\n// get a VERY brief reason for failure\n// NOT THREADSAFE\nSTBIDEF const char *stbi_failure_reason  (void);\n\n// free the loaded image -- this is just free()\nSTBIDEF void     stbi_image_free      (void *retval_from_stbi_load);\n\n// get image dimensions & components without fully decoding\nSTBIDEF int      stbi_info_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp);\nSTBIDEF int      stbi_info_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp);\nSTBIDEF int      stbi_is_16_bit_from_memory(stbi_uc const *buffer, int len);\nSTBIDEF int      stbi_is_16_bit_from_callbacks(stbi_io_callbacks const *clbk, void *user);\n\n#ifndef STBI_NO_STDIO\nSTBIDEF int      stbi_info               (char const *filename,     int *x, int *y, int *comp);\nSTBIDEF int      stbi_info_from_file     (FILE *f,                  int *x, int *y, int *comp);\nSTBIDEF int      stbi_is_16_bit          (char const *filename);\nSTBIDEF int      stbi_is_16_bit_from_file(FILE *f);\n#endif\n\n\n\n// for image formats that explicitly notate that they have premultiplied alpha,\n// we just return the colors as stored in the file. set this flag to force\n// unpremultiplication. results are undefined if the unpremultiply overflow.\nSTBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply);\n\n// indicate whether we should process iphone images back to canonical format,\n// or just pass them through \"as-is\"\nSTBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert);\n\n// flip the image vertically, so the first pixel in the output array is the bottom left\nSTBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip);\n\n// ZLIB client - used by PNG, available for other purposes\n\nSTBIDEF char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int len, int initial_size, int *outlen);\nSTBIDEF char *stbi_zlib_decode_malloc_guesssize_headerflag(const char *buffer, int len, int initial_size, int *outlen, int parse_header);\nSTBIDEF char *stbi_zlib_decode_malloc(const char *buffer, int len, int *outlen);\nSTBIDEF int   stbi_zlib_decode_buffer(char *obuffer, int olen, const char *ibuffer, int ilen);\n\nSTBIDEF char *stbi_zlib_decode_noheader_malloc(const char *buffer, int len, int *outlen);\nSTBIDEF int   stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, const char *ibuffer, int ilen);\n\n\n#ifdef __cplusplus\n}\n#endif\n\n//\n//\n////   end header file   /////////////////////////////////////////////////////\n#endif // STBI_INCLUDE_STB_IMAGE_H\n\n#ifdef STB_IMAGE_IMPLEMENTATION\n\n#if defined(STBI_ONLY_JPEG) || defined(STBI_ONLY_PNG) || defined(STBI_ONLY_BMP) \\\n  || defined(STBI_ONLY_TGA) || defined(STBI_ONLY_GIF) || defined(STBI_ONLY_PSD) \\\n  || defined(STBI_ONLY_HDR) || defined(STBI_ONLY_PIC) || defined(STBI_ONLY_PNM) \\\n  || defined(STBI_ONLY_ZLIB)\n   #ifndef STBI_ONLY_JPEG\n   #define STBI_NO_JPEG\n   #endif\n   #ifndef STBI_ONLY_PNG\n   #define STBI_NO_PNG\n   #endif\n   #ifndef STBI_ONLY_BMP\n   #define STBI_NO_BMP\n   #endif\n   #ifndef STBI_ONLY_PSD\n   #define STBI_NO_PSD\n   #endif\n   #ifndef STBI_ONLY_TGA\n   #define STBI_NO_TGA\n   #endif\n   #ifndef STBI_ONLY_GIF\n   #define STBI_NO_GIF\n   #endif\n   #ifndef STBI_ONLY_HDR\n   #define STBI_NO_HDR\n   #endif\n   #ifndef STBI_ONLY_PIC\n   #define STBI_NO_PIC\n   #endif\n   #ifndef STBI_ONLY_PNM\n   #define STBI_NO_PNM\n   #endif\n#endif\n\n#if defined(STBI_NO_PNG) && !defined(STBI_SUPPORT_ZLIB) && !defined(STBI_NO_ZLIB)\n#define STBI_NO_ZLIB\n#endif\n\n\n#include <stdarg.h>\n#include <stddef.h> // ptrdiff_t on osx\n#include <stdlib.h>\n#include <string.h>\n#include <limits.h>\n\n#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR)\n#include <math.h>  // ldexp, pow\n#endif\n\n#ifndef STBI_NO_STDIO\n#include <stdio.h>\n#endif\n\n#ifndef STBI_ASSERT\n#include <assert.h>\n#define STBI_ASSERT(x) assert(x)\n#endif\n\n\n#ifndef _MSC_VER\n   #ifdef __cplusplus\n   #define stbi_inline inline\n   #else\n   #define stbi_inline\n   #endif\n#else\n   #define stbi_inline __forceinline\n#endif\n\n\n#ifdef _MSC_VER\ntypedef unsigned short stbi__uint16;\ntypedef   signed short stbi__int16;\ntypedef unsigned int   stbi__uint32;\ntypedef   signed int   stbi__int32;\n#else\n#include <stdint.h>\ntypedef uint16_t stbi__uint16;\ntypedef int16_t  stbi__int16;\ntypedef uint32_t stbi__uint32;\ntypedef int32_t  stbi__int32;\n#endif\n\n// should produce compiler error if size is wrong\ntypedef unsigned char validate_uint32[sizeof(stbi__uint32)==4 ? 1 : -1];\n\n#ifdef _MSC_VER\n#define STBI_NOTUSED(v)  (void)(v)\n#else\n#define STBI_NOTUSED(v)  (void)sizeof(v)\n#endif\n\n#ifdef _MSC_VER\n#define STBI_HAS_LROTL\n#endif\n\n#ifdef STBI_HAS_LROTL\n   #define stbi_lrot(x,y)  _lrotl(x,y)\n#else\n   #define stbi_lrot(x,y)  (((x) << (y)) | ((x) >> (32 - (y))))\n#endif\n\n#if defined(STBI_MALLOC) && defined(STBI_FREE) && (defined(STBI_REALLOC) || defined(STBI_REALLOC_SIZED))\n// ok\n#elif !defined(STBI_MALLOC) && !defined(STBI_FREE) && !defined(STBI_REALLOC) && !defined(STBI_REALLOC_SIZED)\n// ok\n#else\n#error \"Must define all or none of STBI_MALLOC, STBI_FREE, and STBI_REALLOC (or STBI_REALLOC_SIZED).\"\n#endif\n\n#ifndef STBI_MALLOC\n#define STBI_MALLOC(sz)           malloc(sz)\n#define STBI_REALLOC(p,newsz)     realloc(p,newsz)\n#define STBI_FREE(p)              free(p)\n#endif\n\n#ifndef STBI_REALLOC_SIZED\n#define STBI_REALLOC_SIZED(p,oldsz,newsz) STBI_REALLOC(p,newsz)\n#endif\n\n// x86/x64 detection\n#if defined(__x86_64__) || defined(_M_X64)\n#define STBI__X64_TARGET\n#elif defined(__i386) || defined(_M_IX86)\n#define STBI__X86_TARGET\n#endif\n\n#if defined(__GNUC__) && defined(STBI__X86_TARGET) && !defined(__SSE2__) && !defined(STBI_NO_SIMD)\n// gcc doesn't support sse2 intrinsics unless you compile with -msse2,\n// which in turn means it gets to use SSE2 everywhere. This is unfortunate,\n// but previous attempts to provide the SSE2 functions with runtime\n// detection caused numerous issues. The way architecture extensions are\n// exposed in GCC/Clang is, sadly, not really suited for one-file libs.\n// New behavior: if compiled with -msse2, we use SSE2 without any\n// detection; if not, we don't use it at all.\n#define STBI_NO_SIMD\n#endif\n\n#if defined(__MINGW32__) && defined(STBI__X86_TARGET) && !defined(STBI_MINGW_ENABLE_SSE2) && !defined(STBI_NO_SIMD)\n// Note that __MINGW32__ doesn't actually mean 32-bit, so we have to avoid STBI__X64_TARGET\n//\n// 32-bit MinGW wants ESP to be 16-byte aligned, but this is not in the\n// Windows ABI and VC++ as well as Windows DLLs don't maintain that invariant.\n// As a result, enabling SSE2 on 32-bit MinGW is dangerous when not\n// simultaneously enabling \"-mstackrealign\".\n//\n// See https://github.com/nothings/stb/issues/81 for more information.\n//\n// So default to no SSE2 on 32-bit MinGW. If you've read this far and added\n// -mstackrealign to your build settings, feel free to #define STBI_MINGW_ENABLE_SSE2.\n#define STBI_NO_SIMD\n#endif\n\n#if !defined(STBI_NO_SIMD) && (defined(STBI__X86_TARGET) || defined(STBI__X64_TARGET))\n#define STBI_SSE2\n#include <emmintrin.h>\n\n#ifdef _MSC_VER\n\n#if _MSC_VER >= 1400  // not VC6\n#include <intrin.h> // __cpuid\nstatic int stbi__cpuid3(void)\n{\n   int info[4];\n   __cpuid(info,1);\n   return info[3];\n}\n#else\nstatic int stbi__cpuid3(void)\n{\n   int res;\n   __asm {\n      mov  eax,1\n      cpuid\n      mov  res,edx\n   }\n   return res;\n}\n#endif\n\n#define STBI_SIMD_ALIGN(type, name) __declspec(align(16)) type name\n\nstatic int stbi__sse2_available(void)\n{\n   int info3 = stbi__cpuid3();\n   return ((info3 >> 26) & 1) != 0;\n}\n#else // assume GCC-style if not VC++\n#define STBI_SIMD_ALIGN(type, name) type name __attribute__((aligned(16)))\n\nstatic int stbi__sse2_available(void)\n{\n   // If we're even attempting to compile this on GCC/Clang, that means\n   // -msse2 is on, which means the compiler is allowed to use SSE2\n   // instructions at will, and so are we.\n   return 1;\n}\n#endif\n#endif\n\n// ARM NEON\n#if defined(STBI_NO_SIMD) && defined(STBI_NEON)\n#undef STBI_NEON\n#endif\n\n#ifdef STBI_NEON\n#include <arm_neon.h>\n// assume GCC or Clang on ARM targets\n#define STBI_SIMD_ALIGN(type, name) type name __attribute__((aligned(16)))\n#endif\n\n#ifndef STBI_SIMD_ALIGN\n#define STBI_SIMD_ALIGN(type, name) type name\n#endif\n\n///////////////////////////////////////////////\n//\n//  stbi__context struct and start_xxx functions\n\n// stbi__context structure is our basic context used by all images, so it\n// contains all the IO context, plus some basic image information\ntypedef struct\n{\n   stbi__uint32 img_x, img_y;\n   int img_n, img_out_n;\n\n   stbi_io_callbacks io;\n   void *io_user_data;\n\n   int read_from_callbacks;\n   int buflen;\n   stbi_uc buffer_start[128];\n\n   stbi_uc *img_buffer, *img_buffer_end;\n   stbi_uc *img_buffer_original, *img_buffer_original_end;\n} stbi__context;\n\n\nstatic void stbi__refill_buffer(stbi__context *s);\n\n// initialize a memory-decode context\nstatic void stbi__start_mem(stbi__context *s, stbi_uc const *buffer, int len)\n{\n   s->io.read = NULL;\n   s->read_from_callbacks = 0;\n   s->img_buffer = s->img_buffer_original = (stbi_uc *) buffer;\n   s->img_buffer_end = s->img_buffer_original_end = (stbi_uc *) buffer+len;\n}\n\n// initialize a callback-based context\nstatic void stbi__start_callbacks(stbi__context *s, stbi_io_callbacks *c, void *user)\n{\n   s->io = *c;\n   s->io_user_data = user;\n   s->buflen = sizeof(s->buffer_start);\n   s->read_from_callbacks = 1;\n   s->img_buffer_original = s->buffer_start;\n   stbi__refill_buffer(s);\n   s->img_buffer_original_end = s->img_buffer_end;\n}\n\n#ifndef STBI_NO_STDIO\n\nstatic int stbi__stdio_read(void *user, char *data, int size)\n{\n   return (int) fread(data,1,size,(FILE*) user);\n}\n\nstatic void stbi__stdio_skip(void *user, int n)\n{\n   fseek((FILE*) user, n, SEEK_CUR);\n}\n\nstatic int stbi__stdio_eof(void *user)\n{\n   return feof((FILE*) user);\n}\n\nstatic stbi_io_callbacks stbi__stdio_callbacks =\n{\n   stbi__stdio_read,\n   stbi__stdio_skip,\n   stbi__stdio_eof,\n};\n\nstatic void stbi__start_file(stbi__context *s, FILE *f)\n{\n   stbi__start_callbacks(s, &stbi__stdio_callbacks, (void *) f);\n}\n\n//static void stop_file(stbi__context *s) { }\n\n#endif // !STBI_NO_STDIO\n\nstatic void stbi__rewind(stbi__context *s)\n{\n   // conceptually rewind SHOULD rewind to the beginning of the stream,\n   // but we just rewind to the beginning of the initial buffer, because\n   // we only use it after doing 'test', which only ever looks at at most 92 bytes\n   s->img_buffer = s->img_buffer_original;\n   s->img_buffer_end = s->img_buffer_original_end;\n}\n\nenum\n{\n   STBI_ORDER_RGB,\n   STBI_ORDER_BGR\n};\n\ntypedef struct\n{\n   int bits_per_channel;\n   int num_channels;\n   int channel_order;\n} stbi__result_info;\n\n#ifndef STBI_NO_JPEG\nstatic int      stbi__jpeg_test(stbi__context *s);\nstatic void    *stbi__jpeg_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri);\nstatic int      stbi__jpeg_info(stbi__context *s, int *x, int *y, int *comp);\n#endif\n\n#ifndef STBI_NO_PNG\nstatic int      stbi__png_test(stbi__context *s);\nstatic void    *stbi__png_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri);\nstatic int      stbi__png_info(stbi__context *s, int *x, int *y, int *comp);\nstatic int      stbi__png_is16(stbi__context *s);\n#endif\n\n#ifndef STBI_NO_BMP\nstatic int      stbi__bmp_test(stbi__context *s);\nstatic void    *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri);\nstatic int      stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp);\n#endif\n\n#ifndef STBI_NO_TGA\nstatic int      stbi__tga_test(stbi__context *s);\nstatic void    *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri);\nstatic int      stbi__tga_info(stbi__context *s, int *x, int *y, int *comp);\n#endif\n\n#ifndef STBI_NO_PSD\nstatic int      stbi__psd_test(stbi__context *s);\nstatic void    *stbi__psd_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc);\nstatic int      stbi__psd_info(stbi__context *s, int *x, int *y, int *comp);\nstatic int      stbi__psd_is16(stbi__context *s);\n#endif\n\n#ifndef STBI_NO_HDR\nstatic int      stbi__hdr_test(stbi__context *s);\nstatic float   *stbi__hdr_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri);\nstatic int      stbi__hdr_info(stbi__context *s, int *x, int *y, int *comp);\n#endif\n\n#ifndef STBI_NO_PIC\nstatic int      stbi__pic_test(stbi__context *s);\nstatic void    *stbi__pic_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri);\nstatic int      stbi__pic_info(stbi__context *s, int *x, int *y, int *comp);\n#endif\n\n#ifndef STBI_NO_GIF\nstatic int      stbi__gif_test(stbi__context *s);\nstatic void    *stbi__gif_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri);\nstatic void    *stbi__load_gif_main(stbi__context *s, int **delays, int *x, int *y, int *z, int *comp, int req_comp);\nstatic int      stbi__gif_info(stbi__context *s, int *x, int *y, int *comp);\n#endif\n\n#ifndef STBI_NO_PNM\nstatic int      stbi__pnm_test(stbi__context *s);\nstatic void    *stbi__pnm_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri);\nstatic int      stbi__pnm_info(stbi__context *s, int *x, int *y, int *comp);\n#endif\n\n// this is not threadsafe\nstatic const char *stbi__g_failure_reason;\n\nSTBIDEF const char *stbi_failure_reason(void)\n{\n   return stbi__g_failure_reason;\n}\n\nstatic int stbi__err(const char *str)\n{\n   stbi__g_failure_reason = str;\n   return 0;\n}\n\nstatic void *stbi__malloc(size_t size)\n{\n    return STBI_MALLOC(size);\n}\n\n// stb_image uses ints pervasively, including for offset calculations.\n// therefore the largest decoded image size we can support with the\n// current code, even on 64-bit targets, is INT_MAX. this is not a\n// significant limitation for the intended use case.\n//\n// we do, however, need to make sure our size calculations don't\n// overflow. hence a few helper functions for size calculations that\n// multiply integers together, making sure that they're non-negative\n// and no overflow occurs.\n\n// return 1 if the sum is valid, 0 on overflow.\n// negative terms are considered invalid.\nstatic int stbi__addsizes_valid(int a, int b)\n{\n   if (b < 0) return 0;\n   // now 0 <= b <= INT_MAX, hence also\n   // 0 <= INT_MAX - b <= INTMAX.\n   // And \"a + b <= INT_MAX\" (which might overflow) is the\n   // same as a <= INT_MAX - b (no overflow)\n   return a <= INT_MAX - b;\n}\n\n// returns 1 if the product is valid, 0 on overflow.\n// negative factors are considered invalid.\nstatic int stbi__mul2sizes_valid(int a, int b)\n{\n   if (a < 0 || b < 0) return 0;\n   if (b == 0) return 1; // mul-by-0 is always safe\n   // portable way to check for no overflows in a*b\n   return a <= INT_MAX/b;\n}\n\n// returns 1 if \"a*b + add\" has no negative terms/factors and doesn't overflow\nstatic int stbi__mad2sizes_valid(int a, int b, int add)\n{\n   return stbi__mul2sizes_valid(a, b) && stbi__addsizes_valid(a*b, add);\n}\n\n// returns 1 if \"a*b*c + add\" has no negative terms/factors and doesn't overflow\nstatic int stbi__mad3sizes_valid(int a, int b, int c, int add)\n{\n   return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a*b, c) &&\n      stbi__addsizes_valid(a*b*c, add);\n}\n\n// returns 1 if \"a*b*c*d + add\" has no negative terms/factors and doesn't overflow\n#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR)\nstatic int stbi__mad4sizes_valid(int a, int b, int c, int d, int add)\n{\n   return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a*b, c) &&\n      stbi__mul2sizes_valid(a*b*c, d) && stbi__addsizes_valid(a*b*c*d, add);\n}\n#endif\n\n// mallocs with size overflow checking\nstatic void *stbi__malloc_mad2(int a, int b, int add)\n{\n   if (!stbi__mad2sizes_valid(a, b, add)) return NULL;\n   return stbi__malloc(a*b + add);\n}\n\nstatic void *stbi__malloc_mad3(int a, int b, int c, int add)\n{\n   if (!stbi__mad3sizes_valid(a, b, c, add)) return NULL;\n   return stbi__malloc(a*b*c + add);\n}\n\n#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR)\nstatic void *stbi__malloc_mad4(int a, int b, int c, int d, int add)\n{\n   if (!stbi__mad4sizes_valid(a, b, c, d, add)) return NULL;\n   return stbi__malloc(a*b*c*d + add);\n}\n#endif\n\n// stbi__err - error\n// stbi__errpf - error returning pointer to float\n// stbi__errpuc - error returning pointer to unsigned char\n\n#ifdef STBI_NO_FAILURE_STRINGS\n   #define stbi__err(x,y)  0\n#elif defined(STBI_FAILURE_USERMSG)\n   #define stbi__err(x,y)  stbi__err(y)\n#else\n   #define stbi__err(x,y)  stbi__err(x)\n#endif\n\n#define stbi__errpf(x,y)   ((float *)(size_t) (stbi__err(x,y)?NULL:NULL))\n#define stbi__errpuc(x,y)  ((unsigned char *)(size_t) (stbi__err(x,y)?NULL:NULL))\n\nSTBIDEF void stbi_image_free(void *retval_from_stbi_load)\n{\n   STBI_FREE(retval_from_stbi_load);\n}\n\n#ifndef STBI_NO_LINEAR\nstatic float   *stbi__ldr_to_hdr(stbi_uc *data, int x, int y, int comp);\n#endif\n\n#ifndef STBI_NO_HDR\nstatic stbi_uc *stbi__hdr_to_ldr(float   *data, int x, int y, int comp);\n#endif\n\nstatic int stbi__vertically_flip_on_load = 0;\n\nSTBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip)\n{\n    stbi__vertically_flip_on_load = flag_true_if_should_flip;\n}\n\nstatic void *stbi__load_main(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc)\n{\n   memset(ri, 0, sizeof(*ri)); // make sure it's initialized if we add new fields\n   ri->bits_per_channel = 8; // default is 8 so most paths don't have to be changed\n   ri->channel_order = STBI_ORDER_RGB; // all current input & output are this, but this is here so we can add BGR order\n   ri->num_channels = 0;\n\n   #ifndef STBI_NO_JPEG\n   if (stbi__jpeg_test(s)) return stbi__jpeg_load(s,x,y,comp,req_comp, ri);\n   #endif\n   #ifndef STBI_NO_PNG\n   if (stbi__png_test(s))  return stbi__png_load(s,x,y,comp,req_comp, ri);\n   #endif\n   #ifndef STBI_NO_BMP\n   if (stbi__bmp_test(s))  return stbi__bmp_load(s,x,y,comp,req_comp, ri);\n   #endif\n   #ifndef STBI_NO_GIF\n   if (stbi__gif_test(s))  return stbi__gif_load(s,x,y,comp,req_comp, ri);\n   #endif\n   #ifndef STBI_NO_PSD\n   if (stbi__psd_test(s))  return stbi__psd_load(s,x,y,comp,req_comp, ri, bpc);\n   #endif\n   #ifndef STBI_NO_PIC\n   if (stbi__pic_test(s))  return stbi__pic_load(s,x,y,comp,req_comp, ri);\n   #endif\n   #ifndef STBI_NO_PNM\n   if (stbi__pnm_test(s))  return stbi__pnm_load(s,x,y,comp,req_comp, ri);\n   #endif\n\n   #ifndef STBI_NO_HDR\n   if (stbi__hdr_test(s)) {\n      float *hdr = stbi__hdr_load(s, x,y,comp,req_comp, ri);\n      return stbi__hdr_to_ldr(hdr, *x, *y, req_comp ? req_comp : *comp);\n   }\n   #endif\n\n   #ifndef STBI_NO_TGA\n   // test tga last because it's a crappy test!\n   if (stbi__tga_test(s))\n      return stbi__tga_load(s,x,y,comp,req_comp, ri);\n   #endif\n\n   return stbi__errpuc(\"unknown image type\", \"Image not of any known type, or corrupt\");\n}\n\nstatic stbi_uc *stbi__convert_16_to_8(stbi__uint16 *orig, int w, int h, int channels)\n{\n   int i;\n   int img_len = w * h * channels;\n   stbi_uc *reduced;\n\n   reduced = (stbi_uc *) stbi__malloc(img_len);\n   if (reduced == NULL) return stbi__errpuc(\"outofmem\", \"Out of memory\");\n\n   for (i = 0; i < img_len; ++i)\n      reduced[i] = (stbi_uc)((orig[i] >> 8) & 0xFF); // top half of each byte is sufficient approx of 16->8 bit scaling\n\n   STBI_FREE(orig);\n   return reduced;\n}\n\nstatic stbi__uint16 *stbi__convert_8_to_16(stbi_uc *orig, int w, int h, int channels)\n{\n   int i;\n   int img_len = w * h * channels;\n   stbi__uint16 *enlarged;\n\n   enlarged = (stbi__uint16 *) stbi__malloc(img_len*2);\n   if (enlarged == NULL) return (stbi__uint16 *) stbi__errpuc(\"outofmem\", \"Out of memory\");\n\n   for (i = 0; i < img_len; ++i)\n      enlarged[i] = (stbi__uint16)((orig[i] << 8) + orig[i]); // replicate to high and low byte, maps 0->0, 255->0xffff\n\n   STBI_FREE(orig);\n   return enlarged;\n}\n\nstatic void stbi__vertical_flip(void *image, int w, int h, int bytes_per_pixel)\n{\n   int row;\n   size_t bytes_per_row = (size_t)w * bytes_per_pixel;\n   stbi_uc temp[2048];\n   stbi_uc *bytes = (stbi_uc *)image;\n\n   for (row = 0; row < (h>>1); row++) {\n      stbi_uc *row0 = bytes + row*bytes_per_row;\n      stbi_uc *row1 = bytes + (h - row - 1)*bytes_per_row;\n      // swap row0 with row1\n      size_t bytes_left = bytes_per_row;\n      while (bytes_left) {\n         size_t bytes_copy = (bytes_left < sizeof(temp)) ? bytes_left : sizeof(temp);\n         memcpy(temp, row0, bytes_copy);\n         memcpy(row0, row1, bytes_copy);\n         memcpy(row1, temp, bytes_copy);\n         row0 += bytes_copy;\n         row1 += bytes_copy;\n         bytes_left -= bytes_copy;\n      }\n   }\n}\n\nstatic void stbi__vertical_flip_slices(void *image, int w, int h, int z, int bytes_per_pixel)\n{\n   int slice;\n   int slice_size = w * h * bytes_per_pixel;\n\n   stbi_uc *bytes = (stbi_uc *)image;\n   for (slice = 0; slice < z; ++slice) {\n      stbi__vertical_flip(bytes, w, h, bytes_per_pixel); \n      bytes += slice_size; \n   }\n}\n\nstatic unsigned char *stbi__load_and_postprocess_8bit(stbi__context *s, int *x, int *y, int *comp, int req_comp)\n{\n   stbi__result_info ri;\n   void *result = stbi__load_main(s, x, y, comp, req_comp, &ri, 8);\n\n   if (result == NULL)\n      return NULL;\n\n   if (ri.bits_per_channel != 8) {\n      STBI_ASSERT(ri.bits_per_channel == 16);\n      result = stbi__convert_16_to_8((stbi__uint16 *) result, *x, *y, req_comp == 0 ? *comp : req_comp);\n      ri.bits_per_channel = 8;\n   }\n\n   // @TODO: move stbi__convert_format to here\n\n   if (stbi__vertically_flip_on_load) {\n      int channels = req_comp ? req_comp : *comp;\n      stbi__vertical_flip(result, *x, *y, channels * sizeof(stbi_uc));\n   }\n\n   return (unsigned char *) result;\n}\n\nstatic stbi__uint16 *stbi__load_and_postprocess_16bit(stbi__context *s, int *x, int *y, int *comp, int req_comp)\n{\n   stbi__result_info ri;\n   void *result = stbi__load_main(s, x, y, comp, req_comp, &ri, 16);\n\n   if (result == NULL)\n      return NULL;\n\n   if (ri.bits_per_channel != 16) {\n      STBI_ASSERT(ri.bits_per_channel == 8);\n      result = stbi__convert_8_to_16((stbi_uc *) result, *x, *y, req_comp == 0 ? *comp : req_comp);\n      ri.bits_per_channel = 16;\n   }\n\n   // @TODO: move stbi__convert_format16 to here\n   // @TODO: special case RGB-to-Y (and RGBA-to-YA) for 8-bit-to-16-bit case to keep more precision\n\n   if (stbi__vertically_flip_on_load) {\n      int channels = req_comp ? req_comp : *comp;\n      stbi__vertical_flip(result, *x, *y, channels * sizeof(stbi__uint16));\n   }\n\n   return (stbi__uint16 *) result;\n}\n\n#if !defined(STBI_NO_HDR) || !defined(STBI_NO_LINEAR)\nstatic void stbi__float_postprocess(float *result, int *x, int *y, int *comp, int req_comp)\n{\n   if (stbi__vertically_flip_on_load && result != NULL) {\n      int channels = req_comp ? req_comp : *comp;\n      stbi__vertical_flip(result, *x, *y, channels * sizeof(float));\n   }\n}\n#endif\n\n#ifndef STBI_NO_STDIO\n\nstatic FILE *stbi__fopen(char const *filename, char const *mode)\n{\n   FILE *f;\n#if defined(_MSC_VER) && _MSC_VER >= 1400\n   if (0 != fopen_s(&f, filename, mode))\n      f=0;\n#else\n   f = fopen(filename, mode);\n#endif\n   return f;\n}\n\n\nSTBIDEF stbi_uc *stbi_load(char const *filename, int *x, int *y, int *comp, int req_comp)\n{\n   FILE *f = stbi__fopen(filename, \"rb\");\n   unsigned char *result;\n   if (!f) return stbi__errpuc(\"can't fopen\", \"Unable to open file\");\n   result = stbi_load_from_file(f,x,y,comp,req_comp);\n   fclose(f);\n   return result;\n}\n\nSTBIDEF stbi_uc *stbi_load_from_file(FILE *f, int *x, int *y, int *comp, int req_comp)\n{\n   unsigned char *result;\n   stbi__context s;\n   stbi__start_file(&s,f);\n   result = stbi__load_and_postprocess_8bit(&s,x,y,comp,req_comp);\n   if (result) {\n      // need to 'unget' all the characters in the IO buffer\n      fseek(f, - (int) (s.img_buffer_end - s.img_buffer), SEEK_CUR);\n   }\n   return result;\n}\n\nSTBIDEF stbi__uint16 *stbi_load_from_file_16(FILE *f, int *x, int *y, int *comp, int req_comp)\n{\n   stbi__uint16 *result;\n   stbi__context s;\n   stbi__start_file(&s,f);\n   result = stbi__load_and_postprocess_16bit(&s,x,y,comp,req_comp);\n   if (result) {\n      // need to 'unget' all the characters in the IO buffer\n      fseek(f, - (int) (s.img_buffer_end - s.img_buffer), SEEK_CUR);\n   }\n   return result;\n}\n\nSTBIDEF stbi_us *stbi_load_16(char const *filename, int *x, int *y, int *comp, int req_comp)\n{\n   FILE *f = stbi__fopen(filename, \"rb\");\n   stbi__uint16 *result;\n   if (!f) return (stbi_us *) stbi__errpuc(\"can't fopen\", \"Unable to open file\");\n   result = stbi_load_from_file_16(f,x,y,comp,req_comp);\n   fclose(f);\n   return result;\n}\n\n\n#endif //!STBI_NO_STDIO\n\nSTBIDEF stbi_us *stbi_load_16_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels)\n{\n   stbi__context s;\n   stbi__start_mem(&s,buffer,len);\n   return stbi__load_and_postprocess_16bit(&s,x,y,channels_in_file,desired_channels);\n}\n\nSTBIDEF stbi_us *stbi_load_16_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels)\n{\n   stbi__context s;\n   stbi__start_callbacks(&s, (stbi_io_callbacks *)clbk, user);\n   return stbi__load_and_postprocess_16bit(&s,x,y,channels_in_file,desired_channels);\n}\n\nSTBIDEF stbi_uc *stbi_load_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp, int req_comp)\n{\n   stbi__context s;\n   stbi__start_mem(&s,buffer,len);\n   return stbi__load_and_postprocess_8bit(&s,x,y,comp,req_comp);\n}\n\nSTBIDEF stbi_uc *stbi_load_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp, int req_comp)\n{\n   stbi__context s;\n   stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user);\n   return stbi__load_and_postprocess_8bit(&s,x,y,comp,req_comp);\n}\n\n#ifndef STBI_NO_GIF\nSTBIDEF stbi_uc *stbi_load_gif_from_memory(stbi_uc const *buffer, int len, int **delays, int *x, int *y, int *z, int *comp, int req_comp)\n{\n   unsigned char *result;\n   stbi__context s; \n   stbi__start_mem(&s,buffer,len); \n   \n   result = (unsigned char*) stbi__load_gif_main(&s, delays, x, y, z, comp, req_comp);\n   if (stbi__vertically_flip_on_load) {\n      stbi__vertical_flip_slices( result, *x, *y, *z, *comp ); \n   }\n\n   return result; \n}\n#endif\n\n#ifndef STBI_NO_LINEAR\nstatic float *stbi__loadf_main(stbi__context *s, int *x, int *y, int *comp, int req_comp)\n{\n   unsigned char *data;\n   #ifndef STBI_NO_HDR\n   if (stbi__hdr_test(s)) {\n      stbi__result_info ri;\n      float *hdr_data = stbi__hdr_load(s,x,y,comp,req_comp, &ri);\n      if (hdr_data)\n         stbi__float_postprocess(hdr_data,x,y,comp,req_comp);\n      return hdr_data;\n   }\n   #endif\n   data = stbi__load_and_postprocess_8bit(s, x, y, comp, req_comp);\n   if (data)\n      return stbi__ldr_to_hdr(data, *x, *y, req_comp ? req_comp : *comp);\n   return stbi__errpf(\"unknown image type\", \"Image not of any known type, or corrupt\");\n}\n\nSTBIDEF float *stbi_loadf_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp, int req_comp)\n{\n   stbi__context s;\n   stbi__start_mem(&s,buffer,len);\n   return stbi__loadf_main(&s,x,y,comp,req_comp);\n}\n\nSTBIDEF float *stbi_loadf_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp, int req_comp)\n{\n   stbi__context s;\n   stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user);\n   return stbi__loadf_main(&s,x,y,comp,req_comp);\n}\n\n#ifndef STBI_NO_STDIO\nSTBIDEF float *stbi_loadf(char const *filename, int *x, int *y, int *comp, int req_comp)\n{\n   float *result;\n   FILE *f = stbi__fopen(filename, \"rb\");\n   if (!f) return stbi__errpf(\"can't fopen\", \"Unable to open file\");\n   result = stbi_loadf_from_file(f,x,y,comp,req_comp);\n   fclose(f);\n   return result;\n}\n\nSTBIDEF float *stbi_loadf_from_file(FILE *f, int *x, int *y, int *comp, int req_comp)\n{\n   stbi__context s;\n   stbi__start_file(&s,f);\n   return stbi__loadf_main(&s,x,y,comp,req_comp);\n}\n#endif // !STBI_NO_STDIO\n\n#endif // !STBI_NO_LINEAR\n\n// these is-hdr-or-not is defined independent of whether STBI_NO_LINEAR is\n// defined, for API simplicity; if STBI_NO_LINEAR is defined, it always\n// reports false!\n\nSTBIDEF int stbi_is_hdr_from_memory(stbi_uc const *buffer, int len)\n{\n   #ifndef STBI_NO_HDR\n   stbi__context s;\n   stbi__start_mem(&s,buffer,len);\n   return stbi__hdr_test(&s);\n   #else\n   STBI_NOTUSED(buffer);\n   STBI_NOTUSED(len);\n   return 0;\n   #endif\n}\n\n#ifndef STBI_NO_STDIO\nSTBIDEF int      stbi_is_hdr          (char const *filename)\n{\n   FILE *f = stbi__fopen(filename, \"rb\");\n   int result=0;\n   if (f) {\n      result = stbi_is_hdr_from_file(f);\n      fclose(f);\n   }\n   return result;\n}\n\nSTBIDEF int stbi_is_hdr_from_file(FILE *f)\n{\n   #ifndef STBI_NO_HDR\n   long pos = ftell(f);\n   int res;\n   stbi__context s;\n   stbi__start_file(&s,f);\n   res = stbi__hdr_test(&s);\n   fseek(f, pos, SEEK_SET);\n   return res;\n   #else\n   STBI_NOTUSED(f);\n   return 0;\n   #endif\n}\n#endif // !STBI_NO_STDIO\n\nSTBIDEF int      stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clbk, void *user)\n{\n   #ifndef STBI_NO_HDR\n   stbi__context s;\n   stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user);\n   return stbi__hdr_test(&s);\n   #else\n   STBI_NOTUSED(clbk);\n   STBI_NOTUSED(user);\n   return 0;\n   #endif\n}\n\n#ifndef STBI_NO_LINEAR\nstatic float stbi__l2h_gamma=2.2f, stbi__l2h_scale=1.0f;\n\nSTBIDEF void   stbi_ldr_to_hdr_gamma(float gamma) { stbi__l2h_gamma = gamma; }\nSTBIDEF void   stbi_ldr_to_hdr_scale(float scale) { stbi__l2h_scale = scale; }\n#endif\n\nstatic float stbi__h2l_gamma_i=1.0f/2.2f, stbi__h2l_scale_i=1.0f;\n\nSTBIDEF void   stbi_hdr_to_ldr_gamma(float gamma) { stbi__h2l_gamma_i = 1/gamma; }\nSTBIDEF void   stbi_hdr_to_ldr_scale(float scale) { stbi__h2l_scale_i = 1/scale; }\n\n\n//////////////////////////////////////////////////////////////////////////////\n//\n// Common code used by all image loaders\n//\n\nenum\n{\n   STBI__SCAN_load=0,\n   STBI__SCAN_type,\n   STBI__SCAN_header\n};\n\nstatic void stbi__refill_buffer(stbi__context *s)\n{\n   int n = (s->io.read)(s->io_user_data,(char*)s->buffer_start,s->buflen);\n   if (n == 0) {\n      // at end of file, treat same as if from memory, but need to handle case\n      // where s->img_buffer isn't pointing to safe memory, e.g. 0-byte file\n      s->read_from_callbacks = 0;\n      s->img_buffer = s->buffer_start;\n      s->img_buffer_end = s->buffer_start+1;\n      *s->img_buffer = 0;\n   } else {\n      s->img_buffer = s->buffer_start;\n      s->img_buffer_end = s->buffer_start + n;\n   }\n}\n\nstbi_inline static stbi_uc stbi__get8(stbi__context *s)\n{\n   if (s->img_buffer < s->img_buffer_end)\n      return *s->img_buffer++;\n   if (s->read_from_callbacks) {\n      stbi__refill_buffer(s);\n      return *s->img_buffer++;\n   }\n   return 0;\n}\n\nstbi_inline static int stbi__at_eof(stbi__context *s)\n{\n   if (s->io.read) {\n      if (!(s->io.eof)(s->io_user_data)) return 0;\n      // if feof() is true, check if buffer = end\n      // special case: we've only got the special 0 character at the end\n      if (s->read_from_callbacks == 0) return 1;\n   }\n\n   return s->img_buffer >= s->img_buffer_end;\n}\n\nstatic void stbi__skip(stbi__context *s, int n)\n{\n   if (n < 0) {\n      s->img_buffer = s->img_buffer_end;\n      return;\n   }\n   if (s->io.read) {\n      int blen = (int) (s->img_buffer_end - s->img_buffer);\n      if (blen < n) {\n         s->img_buffer = s->img_buffer_end;\n         (s->io.skip)(s->io_user_data, n - blen);\n         return;\n      }\n   }\n   s->img_buffer += n;\n}\n\nstatic int stbi__getn(stbi__context *s, stbi_uc *buffer, int n)\n{\n   if (s->io.read) {\n      int blen = (int) (s->img_buffer_end - s->img_buffer);\n      if (blen < n) {\n         int res, count;\n\n         memcpy(buffer, s->img_buffer, blen);\n\n         count = (s->io.read)(s->io_user_data, (char*) buffer + blen, n - blen);\n         res = (count == (n-blen));\n         s->img_buffer = s->img_buffer_end;\n         return res;\n      }\n   }\n\n   if (s->img_buffer+n <= s->img_buffer_end) {\n      memcpy(buffer, s->img_buffer, n);\n      s->img_buffer += n;\n      return 1;\n   } else\n      return 0;\n}\n\nstatic int stbi__get16be(stbi__context *s)\n{\n   int z = stbi__get8(s);\n   return (z << 8) + stbi__get8(s);\n}\n\nstatic stbi__uint32 stbi__get32be(stbi__context *s)\n{\n   stbi__uint32 z = stbi__get16be(s);\n   return (z << 16) + stbi__get16be(s);\n}\n\n#if defined(STBI_NO_BMP) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF)\n// nothing\n#else\nstatic int stbi__get16le(stbi__context *s)\n{\n   int z = stbi__get8(s);\n   return z + (stbi__get8(s) << 8);\n}\n#endif\n\n#ifndef STBI_NO_BMP\nstatic stbi__uint32 stbi__get32le(stbi__context *s)\n{\n   stbi__uint32 z = stbi__get16le(s);\n   return z + (stbi__get16le(s) << 16);\n}\n#endif\n\n#define STBI__BYTECAST(x)  ((stbi_uc) ((x) & 255))  // truncate int to byte without warnings\n\n\n//////////////////////////////////////////////////////////////////////////////\n//\n//  generic converter from built-in img_n to req_comp\n//    individual types do this automatically as much as possible (e.g. jpeg\n//    does all cases internally since it needs to colorspace convert anyway,\n//    and it never has alpha, so very few cases ). png can automatically\n//    interleave an alpha=255 channel, but falls back to this for other cases\n//\n//  assume data buffer is malloced, so malloc a new one and free that one\n//  only failure mode is malloc failing\n\nstatic stbi_uc stbi__compute_y(int r, int g, int b)\n{\n   return (stbi_uc) (((r*77) + (g*150) +  (29*b)) >> 8);\n}\n\nstatic unsigned char *stbi__convert_format(unsigned char *data, int img_n, int req_comp, unsigned int x, unsigned int y)\n{\n   int i,j;\n   unsigned char *good;\n\n   if (req_comp == img_n) return data;\n   STBI_ASSERT(req_comp >= 1 && req_comp <= 4);\n\n   good = (unsigned char *) stbi__malloc_mad3(req_comp, x, y, 0);\n   if (good == NULL) {\n      STBI_FREE(data);\n      return stbi__errpuc(\"outofmem\", \"Out of memory\");\n   }\n\n   for (j=0; j < (int) y; ++j) {\n      unsigned char *src  = data + j * x * img_n   ;\n      unsigned char *dest = good + j * x * req_comp;\n\n      #define STBI__COMBO(a,b)  ((a)*8+(b))\n      #define STBI__CASE(a,b)   case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b)\n      // convert source image with img_n components to one with req_comp components;\n      // avoid switch per pixel, so use switch per scanline and massive macros\n      switch (STBI__COMBO(img_n, req_comp)) {\n         STBI__CASE(1,2) { dest[0]=src[0], dest[1]=255;                                     } break;\n         STBI__CASE(1,3) { dest[0]=dest[1]=dest[2]=src[0];                                  } break;\n         STBI__CASE(1,4) { dest[0]=dest[1]=dest[2]=src[0], dest[3]=255;                     } break;\n         STBI__CASE(2,1) { dest[0]=src[0];                                                  } break;\n         STBI__CASE(2,3) { dest[0]=dest[1]=dest[2]=src[0];                                  } break;\n         STBI__CASE(2,4) { dest[0]=dest[1]=dest[2]=src[0], dest[3]=src[1];                  } break;\n         STBI__CASE(3,4) { dest[0]=src[0],dest[1]=src[1],dest[2]=src[2],dest[3]=255;        } break;\n         STBI__CASE(3,1) { dest[0]=stbi__compute_y(src[0],src[1],src[2]);                   } break;\n         STBI__CASE(3,2) { dest[0]=stbi__compute_y(src[0],src[1],src[2]), dest[1] = 255;    } break;\n         STBI__CASE(4,1) { dest[0]=stbi__compute_y(src[0],src[1],src[2]);                   } break;\n         STBI__CASE(4,2) { dest[0]=stbi__compute_y(src[0],src[1],src[2]), dest[1] = src[3]; } break;\n         STBI__CASE(4,3) { dest[0]=src[0],dest[1]=src[1],dest[2]=src[2];                    } break;\n         default: STBI_ASSERT(0);\n      }\n      #undef STBI__CASE\n   }\n\n   STBI_FREE(data);\n   return good;\n}\n\nstatic stbi__uint16 stbi__compute_y_16(int r, int g, int b)\n{\n   return (stbi__uint16) (((r*77) + (g*150) +  (29*b)) >> 8);\n}\n\nstatic stbi__uint16 *stbi__convert_format16(stbi__uint16 *data, int img_n, int req_comp, unsigned int x, unsigned int y)\n{\n   int i,j;\n   stbi__uint16 *good;\n\n   if (req_comp == img_n) return data;\n   STBI_ASSERT(req_comp >= 1 && req_comp <= 4);\n\n   good = (stbi__uint16 *) stbi__malloc(req_comp * x * y * 2);\n   if (good == NULL) {\n      STBI_FREE(data);\n      return (stbi__uint16 *) stbi__errpuc(\"outofmem\", \"Out of memory\");\n   }\n\n   for (j=0; j < (int) y; ++j) {\n      stbi__uint16 *src  = data + j * x * img_n   ;\n      stbi__uint16 *dest = good + j * x * req_comp;\n\n      #define STBI__COMBO(a,b)  ((a)*8+(b))\n      #define STBI__CASE(a,b)   case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b)\n      // convert source image with img_n components to one with req_comp components;\n      // avoid switch per pixel, so use switch per scanline and massive macros\n      switch (STBI__COMBO(img_n, req_comp)) {\n         STBI__CASE(1,2) { dest[0]=src[0], dest[1]=0xffff;                                     } break;\n         STBI__CASE(1,3) { dest[0]=dest[1]=dest[2]=src[0];                                     } break;\n         STBI__CASE(1,4) { dest[0]=dest[1]=dest[2]=src[0], dest[3]=0xffff;                     } break;\n         STBI__CASE(2,1) { dest[0]=src[0];                                                     } break;\n         STBI__CASE(2,3) { dest[0]=dest[1]=dest[2]=src[0];                                     } break;\n         STBI__CASE(2,4) { dest[0]=dest[1]=dest[2]=src[0], dest[3]=src[1];                     } break;\n         STBI__CASE(3,4) { dest[0]=src[0],dest[1]=src[1],dest[2]=src[2],dest[3]=0xffff;        } break;\n         STBI__CASE(3,1) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]);                   } break;\n         STBI__CASE(3,2) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]), dest[1] = 0xffff; } break;\n         STBI__CASE(4,1) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]);                   } break;\n         STBI__CASE(4,2) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]), dest[1] = src[3]; } break;\n         STBI__CASE(4,3) { dest[0]=src[0],dest[1]=src[1],dest[2]=src[2];                       } break;\n         default: STBI_ASSERT(0);\n      }\n      #undef STBI__CASE\n   }\n\n   STBI_FREE(data);\n   return good;\n}\n\n#ifndef STBI_NO_LINEAR\nstatic float   *stbi__ldr_to_hdr(stbi_uc *data, int x, int y, int comp)\n{\n   int i,k,n;\n   float *output;\n   if (!data) return NULL;\n   output = (float *) stbi__malloc_mad4(x, y, comp, sizeof(float), 0);\n   if (output == NULL) { STBI_FREE(data); return stbi__errpf(\"outofmem\", \"Out of memory\"); }\n   // compute number of non-alpha components\n   if (comp & 1) n = comp; else n = comp-1;\n   for (i=0; i < x*y; ++i) {\n      for (k=0; k < n; ++k) {\n         output[i*comp + k] = (float) (pow(data[i*comp+k]/255.0f, stbi__l2h_gamma) * stbi__l2h_scale);\n      }\n      if (k < comp) output[i*comp + k] = data[i*comp+k]/255.0f;\n   }\n   STBI_FREE(data);\n   return output;\n}\n#endif\n\n#ifndef STBI_NO_HDR\n#define stbi__float2int(x)   ((int) (x))\nstatic stbi_uc *stbi__hdr_to_ldr(float   *data, int x, int y, int comp)\n{\n   int i,k,n;\n   stbi_uc *output;\n   if (!data) return NULL;\n   output = (stbi_uc *) stbi__malloc_mad3(x, y, comp, 0);\n   if (output == NULL) { STBI_FREE(data); return stbi__errpuc(\"outofmem\", \"Out of memory\"); }\n   // compute number of non-alpha components\n   if (comp & 1) n = comp; else n = comp-1;\n   for (i=0; i < x*y; ++i) {\n      for (k=0; k < n; ++k) {\n         float z = (float) pow(data[i*comp+k]*stbi__h2l_scale_i, stbi__h2l_gamma_i) * 255 + 0.5f;\n         if (z < 0) z = 0;\n         if (z > 255) z = 255;\n         output[i*comp + k] = (stbi_uc) stbi__float2int(z);\n      }\n      if (k < comp) {\n         float z = data[i*comp+k] * 255 + 0.5f;\n         if (z < 0) z = 0;\n         if (z > 255) z = 255;\n         output[i*comp + k] = (stbi_uc) stbi__float2int(z);\n      }\n   }\n   STBI_FREE(data);\n   return output;\n}\n#endif\n\n//////////////////////////////////////////////////////////////////////////////\n//\n//  \"baseline\" JPEG/JFIF decoder\n//\n//    simple implementation\n//      - doesn't support delayed output of y-dimension\n//      - simple interface (only one output format: 8-bit interleaved RGB)\n//      - doesn't try to recover corrupt jpegs\n//      - doesn't allow partial loading, loading multiple at once\n//      - still fast on x86 (copying globals into locals doesn't help x86)\n//      - allocates lots of intermediate memory (full size of all components)\n//        - non-interleaved case requires this anyway\n//        - allows good upsampling (see next)\n//    high-quality\n//      - upsampled channels are bilinearly interpolated, even across blocks\n//      - quality integer IDCT derived from IJG's 'slow'\n//    performance\n//      - fast huffman; reasonable integer IDCT\n//      - some SIMD kernels for common paths on targets with SSE2/NEON\n//      - uses a lot of intermediate memory, could cache poorly\n\n#ifndef STBI_NO_JPEG\n\n// huffman decoding acceleration\n#define FAST_BITS   9  // larger handles more cases; smaller stomps less cache\n\ntypedef struct\n{\n   stbi_uc  fast[1 << FAST_BITS];\n   // weirdly, repacking this into AoS is a 10% speed loss, instead of a win\n   stbi__uint16 code[256];\n   stbi_uc  values[256];\n   stbi_uc  size[257];\n   unsigned int maxcode[18];\n   int    delta[17];   // old 'firstsymbol' - old 'firstcode'\n} stbi__huffman;\n\ntypedef struct\n{\n   stbi__context *s;\n   stbi__huffman huff_dc[4];\n   stbi__huffman huff_ac[4];\n   stbi__uint16 dequant[4][64];\n   stbi__int16 fast_ac[4][1 << FAST_BITS];\n\n// sizes for components, interleaved MCUs\n   int img_h_max, img_v_max;\n   int img_mcu_x, img_mcu_y;\n   int img_mcu_w, img_mcu_h;\n\n// definition of jpeg image component\n   struct\n   {\n      int id;\n      int h,v;\n      int tq;\n      int hd,ha;\n      int dc_pred;\n\n      int x,y,w2,h2;\n      stbi_uc *data;\n      void *raw_data, *raw_coeff;\n      stbi_uc *linebuf;\n      short   *coeff;   // progressive only\n      int      coeff_w, coeff_h; // number of 8x8 coefficient blocks\n   } img_comp[4];\n\n   stbi__uint32   code_buffer; // jpeg entropy-coded buffer\n   int            code_bits;   // number of valid bits\n   unsigned char  marker;      // marker seen while filling entropy buffer\n   int            nomore;      // flag if we saw a marker so must stop\n\n   int            progressive;\n   int            spec_start;\n   int            spec_end;\n   int            succ_high;\n   int            succ_low;\n   int            eob_run;\n   int            jfif;\n   int            app14_color_transform; // Adobe APP14 tag\n   int            rgb;\n\n   int scan_n, order[4];\n   int restart_interval, todo;\n\n// kernels\n   void (*idct_block_kernel)(stbi_uc *out, int out_stride, short data[64]);\n   void (*YCbCr_to_RGB_kernel)(stbi_uc *out, const stbi_uc *y, const stbi_uc *pcb, const stbi_uc *pcr, int count, int step);\n   stbi_uc *(*resample_row_hv_2_kernel)(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs);\n} stbi__jpeg;\n\nstatic int stbi__build_huffman(stbi__huffman *h, int *count)\n{\n   int i,j,k=0;\n   unsigned int code;\n   // build size list for each symbol (from JPEG spec)\n   for (i=0; i < 16; ++i)\n      for (j=0; j < count[i]; ++j)\n         h->size[k++] = (stbi_uc) (i+1);\n   h->size[k] = 0;\n\n   // compute actual symbols (from jpeg spec)\n   code = 0;\n   k = 0;\n   for(j=1; j <= 16; ++j) {\n      // compute delta to add to code to compute symbol id\n      h->delta[j] = k - code;\n      if (h->size[k] == j) {\n         while (h->size[k] == j)\n            h->code[k++] = (stbi__uint16) (code++);\n         if (code-1 >= (1u << j)) return stbi__err(\"bad code lengths\",\"Corrupt JPEG\");\n      }\n      // compute largest code + 1 for this size, preshifted as needed later\n      h->maxcode[j] = code << (16-j);\n      code <<= 1;\n   }\n   h->maxcode[j] = 0xffffffff;\n\n   // build non-spec acceleration table; 255 is flag for not-accelerated\n   memset(h->fast, 255, 1 << FAST_BITS);\n   for (i=0; i < k; ++i) {\n      int s = h->size[i];\n      if (s <= FAST_BITS) {\n         int c = h->code[i] << (FAST_BITS-s);\n         int m = 1 << (FAST_BITS-s);\n         for (j=0; j < m; ++j) {\n            h->fast[c+j] = (stbi_uc) i;\n         }\n      }\n   }\n   return 1;\n}\n\n// build a table that decodes both magnitude and value of small ACs in\n// one go.\nstatic void stbi__build_fast_ac(stbi__int16 *fast_ac, stbi__huffman *h)\n{\n   int i;\n   for (i=0; i < (1 << FAST_BITS); ++i) {\n      stbi_uc fast = h->fast[i];\n      fast_ac[i] = 0;\n      if (fast < 255) {\n         int rs = h->values[fast];\n         int run = (rs >> 4) & 15;\n         int magbits = rs & 15;\n         int len = h->size[fast];\n\n         if (magbits && len + magbits <= FAST_BITS) {\n            // magnitude code followed by receive_extend code\n            int k = ((i << len) & ((1 << FAST_BITS) - 1)) >> (FAST_BITS - magbits);\n            int m = 1 << (magbits - 1);\n            if (k < m) k += (~0U << magbits) + 1;\n            // if the result is small enough, we can fit it in fast_ac table\n            if (k >= -128 && k <= 127)\n               fast_ac[i] = (stbi__int16) ((k * 256) + (run * 16) + (len + magbits));\n         }\n      }\n   }\n}\n\nstatic void stbi__grow_buffer_unsafe(stbi__jpeg *j)\n{\n   do {\n      unsigned int b = j->nomore ? 0 : stbi__get8(j->s);\n      if (b == 0xff) {\n         int c = stbi__get8(j->s);\n         while (c == 0xff) c = stbi__get8(j->s); // consume fill bytes\n         if (c != 0) {\n            j->marker = (unsigned char) c;\n            j->nomore = 1;\n            return;\n         }\n      }\n      j->code_buffer |= b << (24 - j->code_bits);\n      j->code_bits += 8;\n   } while (j->code_bits <= 24);\n}\n\n// (1 << n) - 1\nstatic const stbi__uint32 stbi__bmask[17]={0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535};\n\n// decode a jpeg huffman value from the bitstream\nstbi_inline static int stbi__jpeg_huff_decode(stbi__jpeg *j, stbi__huffman *h)\n{\n   unsigned int temp;\n   int c,k;\n\n   if (j->code_bits < 16) stbi__grow_buffer_unsafe(j);\n\n   // look at the top FAST_BITS and determine what symbol ID it is,\n   // if the code is <= FAST_BITS\n   c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1);\n   k = h->fast[c];\n   if (k < 255) {\n      int s = h->size[k];\n      if (s > j->code_bits)\n         return -1;\n      j->code_buffer <<= s;\n      j->code_bits -= s;\n      return h->values[k];\n   }\n\n   // naive test is to shift the code_buffer down so k bits are\n   // valid, then test against maxcode. To speed this up, we've\n   // preshifted maxcode left so that it has (16-k) 0s at the\n   // end; in other words, regardless of the number of bits, it\n   // wants to be compared against something shifted to have 16;\n   // that way we don't need to shift inside the loop.\n   temp = j->code_buffer >> 16;\n   for (k=FAST_BITS+1 ; ; ++k)\n      if (temp < h->maxcode[k])\n         break;\n   if (k == 17) {\n      // error! code not found\n      j->code_bits -= 16;\n      return -1;\n   }\n\n   if (k > j->code_bits)\n      return -1;\n\n   // convert the huffman code to the symbol id\n   c = ((j->code_buffer >> (32 - k)) & stbi__bmask[k]) + h->delta[k];\n   STBI_ASSERT((((j->code_buffer) >> (32 - h->size[c])) & stbi__bmask[h->size[c]]) == h->code[c]);\n\n   // convert the id to a symbol\n   j->code_bits -= k;\n   j->code_buffer <<= k;\n   return h->values[c];\n}\n\n// bias[n] = (-1<<n) + 1\nstatic const int stbi__jbias[16] = {0,-1,-3,-7,-15,-31,-63,-127,-255,-511,-1023,-2047,-4095,-8191,-16383,-32767};\n\n// combined JPEG 'receive' and JPEG 'extend', since baseline\n// always extends everything it receives.\nstbi_inline static int stbi__extend_receive(stbi__jpeg *j, int n)\n{\n   unsigned int k;\n   int sgn;\n   if (j->code_bits < n) stbi__grow_buffer_unsafe(j);\n\n   sgn = (stbi__int32)j->code_buffer >> 31; // sign bit is always in MSB\n   k = stbi_lrot(j->code_buffer, n);\n   STBI_ASSERT(n >= 0 && n < (int) (sizeof(stbi__bmask)/sizeof(*stbi__bmask)));\n   j->code_buffer = k & ~stbi__bmask[n];\n   k &= stbi__bmask[n];\n   j->code_bits -= n;\n   return k + (stbi__jbias[n] & ~sgn);\n}\n\n// get some unsigned bits\nstbi_inline static int stbi__jpeg_get_bits(stbi__jpeg *j, int n)\n{\n   unsigned int k;\n   if (j->code_bits < n) stbi__grow_buffer_unsafe(j);\n   k = stbi_lrot(j->code_buffer, n);\n   j->code_buffer = k & ~stbi__bmask[n];\n   k &= stbi__bmask[n];\n   j->code_bits -= n;\n   return k;\n}\n\nstbi_inline static int stbi__jpeg_get_bit(stbi__jpeg *j)\n{\n   unsigned int k;\n   if (j->code_bits < 1) stbi__grow_buffer_unsafe(j);\n   k = j->code_buffer;\n   j->code_buffer <<= 1;\n   --j->code_bits;\n   return k & 0x80000000;\n}\n\n// given a value that's at position X in the zigzag stream,\n// where does it appear in the 8x8 matrix coded as row-major?\nstatic const stbi_uc stbi__jpeg_dezigzag[64+15] =\n{\n    0,  1,  8, 16,  9,  2,  3, 10,\n   17, 24, 32, 25, 18, 11,  4,  5,\n   12, 19, 26, 33, 40, 48, 41, 34,\n   27, 20, 13,  6,  7, 14, 21, 28,\n   35, 42, 49, 56, 57, 50, 43, 36,\n   29, 22, 15, 23, 30, 37, 44, 51,\n   58, 59, 52, 45, 38, 31, 39, 46,\n   53, 60, 61, 54, 47, 55, 62, 63,\n   // let corrupt input sample past end\n   63, 63, 63, 63, 63, 63, 63, 63,\n   63, 63, 63, 63, 63, 63, 63\n};\n\n// decode one 64-entry block--\nstatic int stbi__jpeg_decode_block(stbi__jpeg *j, short data[64], stbi__huffman *hdc, stbi__huffman *hac, stbi__int16 *fac, int b, stbi__uint16 *dequant)\n{\n   int diff,dc,k;\n   int t;\n\n   if (j->code_bits < 16) stbi__grow_buffer_unsafe(j);\n   t = stbi__jpeg_huff_decode(j, hdc);\n   if (t < 0) return stbi__err(\"bad huffman code\",\"Corrupt JPEG\");\n\n   // 0 all the ac values now so we can do it 32-bits at a time\n   memset(data,0,64*sizeof(data[0]));\n\n   diff = t ? stbi__extend_receive(j, t) : 0;\n   dc = j->img_comp[b].dc_pred + diff;\n   j->img_comp[b].dc_pred = dc;\n   data[0] = (short) (dc * dequant[0]);\n\n   // decode AC components, see JPEG spec\n   k = 1;\n   do {\n      unsigned int zig;\n      int c,r,s;\n      if (j->code_bits < 16) stbi__grow_buffer_unsafe(j);\n      c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1);\n      r = fac[c];\n      if (r) { // fast-AC path\n         k += (r >> 4) & 15; // run\n         s = r & 15; // combined length\n         j->code_buffer <<= s;\n         j->code_bits -= s;\n         // decode into unzigzag'd location\n         zig = stbi__jpeg_dezigzag[k++];\n         data[zig] = (short) ((r >> 8) * dequant[zig]);\n      } else {\n         int rs = stbi__jpeg_huff_decode(j, hac);\n         if (rs < 0) return stbi__err(\"bad huffman code\",\"Corrupt JPEG\");\n         s = rs & 15;\n         r = rs >> 4;\n         if (s == 0) {\n            if (rs != 0xf0) break; // end block\n            k += 16;\n         } else {\n            k += r;\n            // decode into unzigzag'd location\n            zig = stbi__jpeg_dezigzag[k++];\n            data[zig] = (short) (stbi__extend_receive(j,s) * dequant[zig]);\n         }\n      }\n   } while (k < 64);\n   return 1;\n}\n\nstatic int stbi__jpeg_decode_block_prog_dc(stbi__jpeg *j, short data[64], stbi__huffman *hdc, int b)\n{\n   int diff,dc;\n   int t;\n   if (j->spec_end != 0) return stbi__err(\"can't merge dc and ac\", \"Corrupt JPEG\");\n\n   if (j->code_bits < 16) stbi__grow_buffer_unsafe(j);\n\n   if (j->succ_high == 0) {\n      // first scan for DC coefficient, must be first\n      memset(data,0,64*sizeof(data[0])); // 0 all the ac values now\n      t = stbi__jpeg_huff_decode(j, hdc);\n      diff = t ? stbi__extend_receive(j, t) : 0;\n\n      dc = j->img_comp[b].dc_pred + diff;\n      j->img_comp[b].dc_pred = dc;\n      data[0] = (short) (dc << j->succ_low);\n   } else {\n      // refinement scan for DC coefficient\n      if (stbi__jpeg_get_bit(j))\n         data[0] += (short) (1 << j->succ_low);\n   }\n   return 1;\n}\n\n// @OPTIMIZE: store non-zigzagged during the decode passes,\n// and only de-zigzag when dequantizing\nstatic int stbi__jpeg_decode_block_prog_ac(stbi__jpeg *j, short data[64], stbi__huffman *hac, stbi__int16 *fac)\n{\n   int k;\n   if (j->spec_start == 0) return stbi__err(\"can't merge dc and ac\", \"Corrupt JPEG\");\n\n   if (j->succ_high == 0) {\n      int shift = j->succ_low;\n\n      if (j->eob_run) {\n         --j->eob_run;\n         return 1;\n      }\n\n      k = j->spec_start;\n      do {\n         unsigned int zig;\n         int c,r,s;\n         if (j->code_bits < 16) stbi__grow_buffer_unsafe(j);\n         c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1);\n         r = fac[c];\n         if (r) { // fast-AC path\n            k += (r >> 4) & 15; // run\n            s = r & 15; // combined length\n            j->code_buffer <<= s;\n            j->code_bits -= s;\n            zig = stbi__jpeg_dezigzag[k++];\n            data[zig] = (short) ((r >> 8) << shift);\n         } else {\n            int rs = stbi__jpeg_huff_decode(j, hac);\n            if (rs < 0) return stbi__err(\"bad huffman code\",\"Corrupt JPEG\");\n            s = rs & 15;\n            r = rs >> 4;\n            if (s == 0) {\n               if (r < 15) {\n                  j->eob_run = (1 << r);\n                  if (r)\n                     j->eob_run += stbi__jpeg_get_bits(j, r);\n                  --j->eob_run;\n                  break;\n               }\n               k += 16;\n            } else {\n               k += r;\n               zig = stbi__jpeg_dezigzag[k++];\n               data[zig] = (short) (stbi__extend_receive(j,s) << shift);\n            }\n         }\n      } while (k <= j->spec_end);\n   } else {\n      // refinement scan for these AC coefficients\n\n      short bit = (short) (1 << j->succ_low);\n\n      if (j->eob_run) {\n         --j->eob_run;\n         for (k = j->spec_start; k <= j->spec_end; ++k) {\n            short *p = &data[stbi__jpeg_dezigzag[k]];\n            if (*p != 0)\n               if (stbi__jpeg_get_bit(j))\n                  if ((*p & bit)==0) {\n                     if (*p > 0)\n                        *p += bit;\n                     else\n                        *p -= bit;\n                  }\n         }\n      } else {\n         k = j->spec_start;\n         do {\n            int r,s;\n            int rs = stbi__jpeg_huff_decode(j, hac); // @OPTIMIZE see if we can use the fast path here, advance-by-r is so slow, eh\n            if (rs < 0) return stbi__err(\"bad huffman code\",\"Corrupt JPEG\");\n            s = rs & 15;\n            r = rs >> 4;\n            if (s == 0) {\n               if (r < 15) {\n                  j->eob_run = (1 << r) - 1;\n                  if (r)\n                     j->eob_run += stbi__jpeg_get_bits(j, r);\n                  r = 64; // force end of block\n               } else {\n                  // r=15 s=0 should write 16 0s, so we just do\n                  // a run of 15 0s and then write s (which is 0),\n                  // so we don't have to do anything special here\n               }\n            } else {\n               if (s != 1) return stbi__err(\"bad huffman code\", \"Corrupt JPEG\");\n               // sign bit\n               if (stbi__jpeg_get_bit(j))\n                  s = bit;\n               else\n                  s = -bit;\n            }\n\n            // advance by r\n            while (k <= j->spec_end) {\n               short *p = &data[stbi__jpeg_dezigzag[k++]];\n               if (*p != 0) {\n                  if (stbi__jpeg_get_bit(j))\n                     if ((*p & bit)==0) {\n                        if (*p > 0)\n                           *p += bit;\n                        else\n                           *p -= bit;\n                     }\n               } else {\n                  if (r == 0) {\n                     *p = (short) s;\n                     break;\n                  }\n                  --r;\n               }\n            }\n         } while (k <= j->spec_end);\n      }\n   }\n   return 1;\n}\n\n// take a -128..127 value and stbi__clamp it and convert to 0..255\nstbi_inline static stbi_uc stbi__clamp(int x)\n{\n   // trick to use a single test to catch both cases\n   if ((unsigned int) x > 255) {\n      if (x < 0) return 0;\n      if (x > 255) return 255;\n   }\n   return (stbi_uc) x;\n}\n\n#define stbi__f2f(x)  ((int) (((x) * 4096 + 0.5)))\n#define stbi__fsh(x)  ((x) * 4096)\n\n// derived from jidctint -- DCT_ISLOW\n#define STBI__IDCT_1D(s0,s1,s2,s3,s4,s5,s6,s7) \\\n   int t0,t1,t2,t3,p1,p2,p3,p4,p5,x0,x1,x2,x3; \\\n   p2 = s2;                                    \\\n   p3 = s6;                                    \\\n   p1 = (p2+p3) * stbi__f2f(0.5411961f);       \\\n   t2 = p1 + p3*stbi__f2f(-1.847759065f);      \\\n   t3 = p1 + p2*stbi__f2f( 0.765366865f);      \\\n   p2 = s0;                                    \\\n   p3 = s4;                                    \\\n   t0 = stbi__fsh(p2+p3);                      \\\n   t1 = stbi__fsh(p2-p3);                      \\\n   x0 = t0+t3;                                 \\\n   x3 = t0-t3;                                 \\\n   x1 = t1+t2;                                 \\\n   x2 = t1-t2;                                 \\\n   t0 = s7;                                    \\\n   t1 = s5;                                    \\\n   t2 = s3;                                    \\\n   t3 = s1;                                    \\\n   p3 = t0+t2;                                 \\\n   p4 = t1+t3;                                 \\\n   p1 = t0+t3;                                 \\\n   p2 = t1+t2;                                 \\\n   p5 = (p3+p4)*stbi__f2f( 1.175875602f);      \\\n   t0 = t0*stbi__f2f( 0.298631336f);           \\\n   t1 = t1*stbi__f2f( 2.053119869f);           \\\n   t2 = t2*stbi__f2f( 3.072711026f);           \\\n   t3 = t3*stbi__f2f( 1.501321110f);           \\\n   p1 = p5 + p1*stbi__f2f(-0.899976223f);      \\\n   p2 = p5 + p2*stbi__f2f(-2.562915447f);      \\\n   p3 = p3*stbi__f2f(-1.961570560f);           \\\n   p4 = p4*stbi__f2f(-0.390180644f);           \\\n   t3 += p1+p4;                                \\\n   t2 += p2+p3;                                \\\n   t1 += p2+p4;                                \\\n   t0 += p1+p3;\n\nstatic void stbi__idct_block(stbi_uc *out, int out_stride, short data[64])\n{\n   int i,val[64],*v=val;\n   stbi_uc *o;\n   short *d = data;\n\n   // columns\n   for (i=0; i < 8; ++i,++d, ++v) {\n      // if all zeroes, shortcut -- this avoids dequantizing 0s and IDCTing\n      if (d[ 8]==0 && d[16]==0 && d[24]==0 && d[32]==0\n           && d[40]==0 && d[48]==0 && d[56]==0) {\n         //    no shortcut                 0     seconds\n         //    (1|2|3|4|5|6|7)==0          0     seconds\n         //    all separate               -0.047 seconds\n         //    1 && 2|3 && 4|5 && 6|7:    -0.047 seconds\n         int dcterm = d[0]*4;\n         v[0] = v[8] = v[16] = v[24] = v[32] = v[40] = v[48] = v[56] = dcterm;\n      } else {\n         STBI__IDCT_1D(d[ 0],d[ 8],d[16],d[24],d[32],d[40],d[48],d[56])\n         // constants scaled things up by 1<<12; let's bring them back\n         // down, but keep 2 extra bits of precision\n         x0 += 512; x1 += 512; x2 += 512; x3 += 512;\n         v[ 0] = (x0+t3) >> 10;\n         v[56] = (x0-t3) >> 10;\n         v[ 8] = (x1+t2) >> 10;\n         v[48] = (x1-t2) >> 10;\n         v[16] = (x2+t1) >> 10;\n         v[40] = (x2-t1) >> 10;\n         v[24] = (x3+t0) >> 10;\n         v[32] = (x3-t0) >> 10;\n      }\n   }\n\n   for (i=0, v=val, o=out; i < 8; ++i,v+=8,o+=out_stride) {\n      // no fast case since the first 1D IDCT spread components out\n      STBI__IDCT_1D(v[0],v[1],v[2],v[3],v[4],v[5],v[6],v[7])\n      // constants scaled things up by 1<<12, plus we had 1<<2 from first\n      // loop, plus horizontal and vertical each scale by sqrt(8) so together\n      // we've got an extra 1<<3, so 1<<17 total we need to remove.\n      // so we want to round that, which means adding 0.5 * 1<<17,\n      // aka 65536. Also, we'll end up with -128 to 127 that we want\n      // to encode as 0..255 by adding 128, so we'll add that before the shift\n      x0 += 65536 + (128<<17);\n      x1 += 65536 + (128<<17);\n      x2 += 65536 + (128<<17);\n      x3 += 65536 + (128<<17);\n      // tried computing the shifts into temps, or'ing the temps to see\n      // if any were out of range, but that was slower\n      o[0] = stbi__clamp((x0+t3) >> 17);\n      o[7] = stbi__clamp((x0-t3) >> 17);\n      o[1] = stbi__clamp((x1+t2) >> 17);\n      o[6] = stbi__clamp((x1-t2) >> 17);\n      o[2] = stbi__clamp((x2+t1) >> 17);\n      o[5] = stbi__clamp((x2-t1) >> 17);\n      o[3] = stbi__clamp((x3+t0) >> 17);\n      o[4] = stbi__clamp((x3-t0) >> 17);\n   }\n}\n\n#ifdef STBI_SSE2\n// sse2 integer IDCT. not the fastest possible implementation but it\n// produces bit-identical results to the generic C version so it's\n// fully \"transparent\".\nstatic void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64])\n{\n   // This is constructed to match our regular (generic) integer IDCT exactly.\n   __m128i row0, row1, row2, row3, row4, row5, row6, row7;\n   __m128i tmp;\n\n   // dot product constant: even elems=x, odd elems=y\n   #define dct_const(x,y)  _mm_setr_epi16((x),(y),(x),(y),(x),(y),(x),(y))\n\n   // out(0) = c0[even]*x + c0[odd]*y   (c0, x, y 16-bit, out 32-bit)\n   // out(1) = c1[even]*x + c1[odd]*y\n   #define dct_rot(out0,out1, x,y,c0,c1) \\\n      __m128i c0##lo = _mm_unpacklo_epi16((x),(y)); \\\n      __m128i c0##hi = _mm_unpackhi_epi16((x),(y)); \\\n      __m128i out0##_l = _mm_madd_epi16(c0##lo, c0); \\\n      __m128i out0##_h = _mm_madd_epi16(c0##hi, c0); \\\n      __m128i out1##_l = _mm_madd_epi16(c0##lo, c1); \\\n      __m128i out1##_h = _mm_madd_epi16(c0##hi, c1)\n\n   // out = in << 12  (in 16-bit, out 32-bit)\n   #define dct_widen(out, in) \\\n      __m128i out##_l = _mm_srai_epi32(_mm_unpacklo_epi16(_mm_setzero_si128(), (in)), 4); \\\n      __m128i out##_h = _mm_srai_epi32(_mm_unpackhi_epi16(_mm_setzero_si128(), (in)), 4)\n\n   // wide add\n   #define dct_wadd(out, a, b) \\\n      __m128i out##_l = _mm_add_epi32(a##_l, b##_l); \\\n      __m128i out##_h = _mm_add_epi32(a##_h, b##_h)\n\n   // wide sub\n   #define dct_wsub(out, a, b) \\\n      __m128i out##_l = _mm_sub_epi32(a##_l, b##_l); \\\n      __m128i out##_h = _mm_sub_epi32(a##_h, b##_h)\n\n   // butterfly a/b, add bias, then shift by \"s\" and pack\n   #define dct_bfly32o(out0, out1, a,b,bias,s) \\\n      { \\\n         __m128i abiased_l = _mm_add_epi32(a##_l, bias); \\\n         __m128i abiased_h = _mm_add_epi32(a##_h, bias); \\\n         dct_wadd(sum, abiased, b); \\\n         dct_wsub(dif, abiased, b); \\\n         out0 = _mm_packs_epi32(_mm_srai_epi32(sum_l, s), _mm_srai_epi32(sum_h, s)); \\\n         out1 = _mm_packs_epi32(_mm_srai_epi32(dif_l, s), _mm_srai_epi32(dif_h, s)); \\\n      }\n\n   // 8-bit interleave step (for transposes)\n   #define dct_interleave8(a, b) \\\n      tmp = a; \\\n      a = _mm_unpacklo_epi8(a, b); \\\n      b = _mm_unpackhi_epi8(tmp, b)\n\n   // 16-bit interleave step (for transposes)\n   #define dct_interleave16(a, b) \\\n      tmp = a; \\\n      a = _mm_unpacklo_epi16(a, b); \\\n      b = _mm_unpackhi_epi16(tmp, b)\n\n   #define dct_pass(bias,shift) \\\n      { \\\n         /* even part */ \\\n         dct_rot(t2e,t3e, row2,row6, rot0_0,rot0_1); \\\n         __m128i sum04 = _mm_add_epi16(row0, row4); \\\n         __m128i dif04 = _mm_sub_epi16(row0, row4); \\\n         dct_widen(t0e, sum04); \\\n         dct_widen(t1e, dif04); \\\n         dct_wadd(x0, t0e, t3e); \\\n         dct_wsub(x3, t0e, t3e); \\\n         dct_wadd(x1, t1e, t2e); \\\n         dct_wsub(x2, t1e, t2e); \\\n         /* odd part */ \\\n         dct_rot(y0o,y2o, row7,row3, rot2_0,rot2_1); \\\n         dct_rot(y1o,y3o, row5,row1, rot3_0,rot3_1); \\\n         __m128i sum17 = _mm_add_epi16(row1, row7); \\\n         __m128i sum35 = _mm_add_epi16(row3, row5); \\\n         dct_rot(y4o,y5o, sum17,sum35, rot1_0,rot1_1); \\\n         dct_wadd(x4, y0o, y4o); \\\n         dct_wadd(x5, y1o, y5o); \\\n         dct_wadd(x6, y2o, y5o); \\\n         dct_wadd(x7, y3o, y4o); \\\n         dct_bfly32o(row0,row7, x0,x7,bias,shift); \\\n         dct_bfly32o(row1,row6, x1,x6,bias,shift); \\\n         dct_bfly32o(row2,row5, x2,x5,bias,shift); \\\n         dct_bfly32o(row3,row4, x3,x4,bias,shift); \\\n      }\n\n   __m128i rot0_0 = dct_const(stbi__f2f(0.5411961f), stbi__f2f(0.5411961f) + stbi__f2f(-1.847759065f));\n   __m128i rot0_1 = dct_const(stbi__f2f(0.5411961f) + stbi__f2f( 0.765366865f), stbi__f2f(0.5411961f));\n   __m128i rot1_0 = dct_const(stbi__f2f(1.175875602f) + stbi__f2f(-0.899976223f), stbi__f2f(1.175875602f));\n   __m128i rot1_1 = dct_const(stbi__f2f(1.175875602f), stbi__f2f(1.175875602f) + stbi__f2f(-2.562915447f));\n   __m128i rot2_0 = dct_const(stbi__f2f(-1.961570560f) + stbi__f2f( 0.298631336f), stbi__f2f(-1.961570560f));\n   __m128i rot2_1 = dct_const(stbi__f2f(-1.961570560f), stbi__f2f(-1.961570560f) + stbi__f2f( 3.072711026f));\n   __m128i rot3_0 = dct_const(stbi__f2f(-0.390180644f) + stbi__f2f( 2.053119869f), stbi__f2f(-0.390180644f));\n   __m128i rot3_1 = dct_const(stbi__f2f(-0.390180644f), stbi__f2f(-0.390180644f) + stbi__f2f( 1.501321110f));\n\n   // rounding biases in column/row passes, see stbi__idct_block for explanation.\n   __m128i bias_0 = _mm_set1_epi32(512);\n   __m128i bias_1 = _mm_set1_epi32(65536 + (128<<17));\n\n   // load\n   row0 = _mm_load_si128((const __m128i *) (data + 0*8));\n   row1 = _mm_load_si128((const __m128i *) (data + 1*8));\n   row2 = _mm_load_si128((const __m128i *) (data + 2*8));\n   row3 = _mm_load_si128((const __m128i *) (data + 3*8));\n   row4 = _mm_load_si128((const __m128i *) (data + 4*8));\n   row5 = _mm_load_si128((const __m128i *) (data + 5*8));\n   row6 = _mm_load_si128((const __m128i *) (data + 6*8));\n   row7 = _mm_load_si128((const __m128i *) (data + 7*8));\n\n   // column pass\n   dct_pass(bias_0, 10);\n\n   {\n      // 16bit 8x8 transpose pass 1\n      dct_interleave16(row0, row4);\n      dct_interleave16(row1, row5);\n      dct_interleave16(row2, row6);\n      dct_interleave16(row3, row7);\n\n      // transpose pass 2\n      dct_interleave16(row0, row2);\n      dct_interleave16(row1, row3);\n      dct_interleave16(row4, row6);\n      dct_interleave16(row5, row7);\n\n      // transpose pass 3\n      dct_interleave16(row0, row1);\n      dct_interleave16(row2, row3);\n      dct_interleave16(row4, row5);\n      dct_interleave16(row6, row7);\n   }\n\n   // row pass\n   dct_pass(bias_1, 17);\n\n   {\n      // pack\n      __m128i p0 = _mm_packus_epi16(row0, row1); // a0a1a2a3...a7b0b1b2b3...b7\n      __m128i p1 = _mm_packus_epi16(row2, row3);\n      __m128i p2 = _mm_packus_epi16(row4, row5);\n      __m128i p3 = _mm_packus_epi16(row6, row7);\n\n      // 8bit 8x8 transpose pass 1\n      dct_interleave8(p0, p2); // a0e0a1e1...\n      dct_interleave8(p1, p3); // c0g0c1g1...\n\n      // transpose pass 2\n      dct_interleave8(p0, p1); // a0c0e0g0...\n      dct_interleave8(p2, p3); // b0d0f0h0...\n\n      // transpose pass 3\n      dct_interleave8(p0, p2); // a0b0c0d0...\n      dct_interleave8(p1, p3); // a4b4c4d4...\n\n      // store\n      _mm_storel_epi64((__m128i *) out, p0); out += out_stride;\n      _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p0, 0x4e)); out += out_stride;\n      _mm_storel_epi64((__m128i *) out, p2); out += out_stride;\n      _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p2, 0x4e)); out += out_stride;\n      _mm_storel_epi64((__m128i *) out, p1); out += out_stride;\n      _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p1, 0x4e)); out += out_stride;\n      _mm_storel_epi64((__m128i *) out, p3); out += out_stride;\n      _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p3, 0x4e));\n   }\n\n#undef dct_const\n#undef dct_rot\n#undef dct_widen\n#undef dct_wadd\n#undef dct_wsub\n#undef dct_bfly32o\n#undef dct_interleave8\n#undef dct_interleave16\n#undef dct_pass\n}\n\n#endif // STBI_SSE2\n\n#ifdef STBI_NEON\n\n// NEON integer IDCT. should produce bit-identical\n// results to the generic C version.\nstatic void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64])\n{\n   int16x8_t row0, row1, row2, row3, row4, row5, row6, row7;\n\n   int16x4_t rot0_0 = vdup_n_s16(stbi__f2f(0.5411961f));\n   int16x4_t rot0_1 = vdup_n_s16(stbi__f2f(-1.847759065f));\n   int16x4_t rot0_2 = vdup_n_s16(stbi__f2f( 0.765366865f));\n   int16x4_t rot1_0 = vdup_n_s16(stbi__f2f( 1.175875602f));\n   int16x4_t rot1_1 = vdup_n_s16(stbi__f2f(-0.899976223f));\n   int16x4_t rot1_2 = vdup_n_s16(stbi__f2f(-2.562915447f));\n   int16x4_t rot2_0 = vdup_n_s16(stbi__f2f(-1.961570560f));\n   int16x4_t rot2_1 = vdup_n_s16(stbi__f2f(-0.390180644f));\n   int16x4_t rot3_0 = vdup_n_s16(stbi__f2f( 0.298631336f));\n   int16x4_t rot3_1 = vdup_n_s16(stbi__f2f( 2.053119869f));\n   int16x4_t rot3_2 = vdup_n_s16(stbi__f2f( 3.072711026f));\n   int16x4_t rot3_3 = vdup_n_s16(stbi__f2f( 1.501321110f));\n\n#define dct_long_mul(out, inq, coeff) \\\n   int32x4_t out##_l = vmull_s16(vget_low_s16(inq), coeff); \\\n   int32x4_t out##_h = vmull_s16(vget_high_s16(inq), coeff)\n\n#define dct_long_mac(out, acc, inq, coeff) \\\n   int32x4_t out##_l = vmlal_s16(acc##_l, vget_low_s16(inq), coeff); \\\n   int32x4_t out##_h = vmlal_s16(acc##_h, vget_high_s16(inq), coeff)\n\n#define dct_widen(out, inq) \\\n   int32x4_t out##_l = vshll_n_s16(vget_low_s16(inq), 12); \\\n   int32x4_t out##_h = vshll_n_s16(vget_high_s16(inq), 12)\n\n// wide add\n#define dct_wadd(out, a, b) \\\n   int32x4_t out##_l = vaddq_s32(a##_l, b##_l); \\\n   int32x4_t out##_h = vaddq_s32(a##_h, b##_h)\n\n// wide sub\n#define dct_wsub(out, a, b) \\\n   int32x4_t out##_l = vsubq_s32(a##_l, b##_l); \\\n   int32x4_t out##_h = vsubq_s32(a##_h, b##_h)\n\n// butterfly a/b, then shift using \"shiftop\" by \"s\" and pack\n#define dct_bfly32o(out0,out1, a,b,shiftop,s) \\\n   { \\\n      dct_wadd(sum, a, b); \\\n      dct_wsub(dif, a, b); \\\n      out0 = vcombine_s16(shiftop(sum_l, s), shiftop(sum_h, s)); \\\n      out1 = vcombine_s16(shiftop(dif_l, s), shiftop(dif_h, s)); \\\n   }\n\n#define dct_pass(shiftop, shift) \\\n   { \\\n      /* even part */ \\\n      int16x8_t sum26 = vaddq_s16(row2, row6); \\\n      dct_long_mul(p1e, sum26, rot0_0); \\\n      dct_long_mac(t2e, p1e, row6, rot0_1); \\\n      dct_long_mac(t3e, p1e, row2, rot0_2); \\\n      int16x8_t sum04 = vaddq_s16(row0, row4); \\\n      int16x8_t dif04 = vsubq_s16(row0, row4); \\\n      dct_widen(t0e, sum04); \\\n      dct_widen(t1e, dif04); \\\n      dct_wadd(x0, t0e, t3e); \\\n      dct_wsub(x3, t0e, t3e); \\\n      dct_wadd(x1, t1e, t2e); \\\n      dct_wsub(x2, t1e, t2e); \\\n      /* odd part */ \\\n      int16x8_t sum15 = vaddq_s16(row1, row5); \\\n      int16x8_t sum17 = vaddq_s16(row1, row7); \\\n      int16x8_t sum35 = vaddq_s16(row3, row5); \\\n      int16x8_t sum37 = vaddq_s16(row3, row7); \\\n      int16x8_t sumodd = vaddq_s16(sum17, sum35); \\\n      dct_long_mul(p5o, sumodd, rot1_0); \\\n      dct_long_mac(p1o, p5o, sum17, rot1_1); \\\n      dct_long_mac(p2o, p5o, sum35, rot1_2); \\\n      dct_long_mul(p3o, sum37, rot2_0); \\\n      dct_long_mul(p4o, sum15, rot2_1); \\\n      dct_wadd(sump13o, p1o, p3o); \\\n      dct_wadd(sump24o, p2o, p4o); \\\n      dct_wadd(sump23o, p2o, p3o); \\\n      dct_wadd(sump14o, p1o, p4o); \\\n      dct_long_mac(x4, sump13o, row7, rot3_0); \\\n      dct_long_mac(x5, sump24o, row5, rot3_1); \\\n      dct_long_mac(x6, sump23o, row3, rot3_2); \\\n      dct_long_mac(x7, sump14o, row1, rot3_3); \\\n      dct_bfly32o(row0,row7, x0,x7,shiftop,shift); \\\n      dct_bfly32o(row1,row6, x1,x6,shiftop,shift); \\\n      dct_bfly32o(row2,row5, x2,x5,shiftop,shift); \\\n      dct_bfly32o(row3,row4, x3,x4,shiftop,shift); \\\n   }\n\n   // load\n   row0 = vld1q_s16(data + 0*8);\n   row1 = vld1q_s16(data + 1*8);\n   row2 = vld1q_s16(data + 2*8);\n   row3 = vld1q_s16(data + 3*8);\n   row4 = vld1q_s16(data + 4*8);\n   row5 = vld1q_s16(data + 5*8);\n   row6 = vld1q_s16(data + 6*8);\n   row7 = vld1q_s16(data + 7*8);\n\n   // add DC bias\n   row0 = vaddq_s16(row0, vsetq_lane_s16(1024, vdupq_n_s16(0), 0));\n\n   // column pass\n   dct_pass(vrshrn_n_s32, 10);\n\n   // 16bit 8x8 transpose\n   {\n// these three map to a single VTRN.16, VTRN.32, and VSWP, respectively.\n// whether compilers actually get this is another story, sadly.\n#define dct_trn16(x, y) { int16x8x2_t t = vtrnq_s16(x, y); x = t.val[0]; y = t.val[1]; }\n#define dct_trn32(x, y) { int32x4x2_t t = vtrnq_s32(vreinterpretq_s32_s16(x), vreinterpretq_s32_s16(y)); x = vreinterpretq_s16_s32(t.val[0]); y = vreinterpretq_s16_s32(t.val[1]); }\n#define dct_trn64(x, y) { int16x8_t x0 = x; int16x8_t y0 = y; x = vcombine_s16(vget_low_s16(x0), vget_low_s16(y0)); y = vcombine_s16(vget_high_s16(x0), vget_high_s16(y0)); }\n\n      // pass 1\n      dct_trn16(row0, row1); // a0b0a2b2a4b4a6b6\n      dct_trn16(row2, row3);\n      dct_trn16(row4, row5);\n      dct_trn16(row6, row7);\n\n      // pass 2\n      dct_trn32(row0, row2); // a0b0c0d0a4b4c4d4\n      dct_trn32(row1, row3);\n      dct_trn32(row4, row6);\n      dct_trn32(row5, row7);\n\n      // pass 3\n      dct_trn64(row0, row4); // a0b0c0d0e0f0g0h0\n      dct_trn64(row1, row5);\n      dct_trn64(row2, row6);\n      dct_trn64(row3, row7);\n\n#undef dct_trn16\n#undef dct_trn32\n#undef dct_trn64\n   }\n\n   // row pass\n   // vrshrn_n_s32 only supports shifts up to 16, we need\n   // 17. so do a non-rounding shift of 16 first then follow\n   // up with a rounding shift by 1.\n   dct_pass(vshrn_n_s32, 16);\n\n   {\n      // pack and round\n      uint8x8_t p0 = vqrshrun_n_s16(row0, 1);\n      uint8x8_t p1 = vqrshrun_n_s16(row1, 1);\n      uint8x8_t p2 = vqrshrun_n_s16(row2, 1);\n      uint8x8_t p3 = vqrshrun_n_s16(row3, 1);\n      uint8x8_t p4 = vqrshrun_n_s16(row4, 1);\n      uint8x8_t p5 = vqrshrun_n_s16(row5, 1);\n      uint8x8_t p6 = vqrshrun_n_s16(row6, 1);\n      uint8x8_t p7 = vqrshrun_n_s16(row7, 1);\n\n      // again, these can translate into one instruction, but often don't.\n#define dct_trn8_8(x, y) { uint8x8x2_t t = vtrn_u8(x, y); x = t.val[0]; y = t.val[1]; }\n#define dct_trn8_16(x, y) { uint16x4x2_t t = vtrn_u16(vreinterpret_u16_u8(x), vreinterpret_u16_u8(y)); x = vreinterpret_u8_u16(t.val[0]); y = vreinterpret_u8_u16(t.val[1]); }\n#define dct_trn8_32(x, y) { uint32x2x2_t t = vtrn_u32(vreinterpret_u32_u8(x), vreinterpret_u32_u8(y)); x = vreinterpret_u8_u32(t.val[0]); y = vreinterpret_u8_u32(t.val[1]); }\n\n      // sadly can't use interleaved stores here since we only write\n      // 8 bytes to each scan line!\n\n      // 8x8 8-bit transpose pass 1\n      dct_trn8_8(p0, p1);\n      dct_trn8_8(p2, p3);\n      dct_trn8_8(p4, p5);\n      dct_trn8_8(p6, p7);\n\n      // pass 2\n      dct_trn8_16(p0, p2);\n      dct_trn8_16(p1, p3);\n      dct_trn8_16(p4, p6);\n      dct_trn8_16(p5, p7);\n\n      // pass 3\n      dct_trn8_32(p0, p4);\n      dct_trn8_32(p1, p5);\n      dct_trn8_32(p2, p6);\n      dct_trn8_32(p3, p7);\n\n      // store\n      vst1_u8(out, p0); out += out_stride;\n      vst1_u8(out, p1); out += out_stride;\n      vst1_u8(out, p2); out += out_stride;\n      vst1_u8(out, p3); out += out_stride;\n      vst1_u8(out, p4); out += out_stride;\n      vst1_u8(out, p5); out += out_stride;\n      vst1_u8(out, p6); out += out_stride;\n      vst1_u8(out, p7);\n\n#undef dct_trn8_8\n#undef dct_trn8_16\n#undef dct_trn8_32\n   }\n\n#undef dct_long_mul\n#undef dct_long_mac\n#undef dct_widen\n#undef dct_wadd\n#undef dct_wsub\n#undef dct_bfly32o\n#undef dct_pass\n}\n\n#endif // STBI_NEON\n\n#define STBI__MARKER_none  0xff\n// if there's a pending marker from the entropy stream, return that\n// otherwise, fetch from the stream and get a marker. if there's no\n// marker, return 0xff, which is never a valid marker value\nstatic stbi_uc stbi__get_marker(stbi__jpeg *j)\n{\n   stbi_uc x;\n   if (j->marker != STBI__MARKER_none) { x = j->marker; j->marker = STBI__MARKER_none; return x; }\n   x = stbi__get8(j->s);\n   if (x != 0xff) return STBI__MARKER_none;\n   while (x == 0xff)\n      x = stbi__get8(j->s); // consume repeated 0xff fill bytes\n   return x;\n}\n\n// in each scan, we'll have scan_n components, and the order\n// of the components is specified by order[]\n#define STBI__RESTART(x)     ((x) >= 0xd0 && (x) <= 0xd7)\n\n// after a restart interval, stbi__jpeg_reset the entropy decoder and\n// the dc prediction\nstatic void stbi__jpeg_reset(stbi__jpeg *j)\n{\n   j->code_bits = 0;\n   j->code_buffer = 0;\n   j->nomore = 0;\n   j->img_comp[0].dc_pred = j->img_comp[1].dc_pred = j->img_comp[2].dc_pred = j->img_comp[3].dc_pred = 0;\n   j->marker = STBI__MARKER_none;\n   j->todo = j->restart_interval ? j->restart_interval : 0x7fffffff;\n   j->eob_run = 0;\n   // no more than 1<<31 MCUs if no restart_interal? that's plenty safe,\n   // since we don't even allow 1<<30 pixels\n}\n\nstatic int stbi__parse_entropy_coded_data(stbi__jpeg *z)\n{\n   stbi__jpeg_reset(z);\n   if (!z->progressive) {\n      if (z->scan_n == 1) {\n         int i,j;\n         STBI_SIMD_ALIGN(short, data[64]);\n         int n = z->order[0];\n         // non-interleaved data, we just need to process one block at a time,\n         // in trivial scanline order\n         // number of blocks to do just depends on how many actual \"pixels\" this\n         // component has, independent of interleaved MCU blocking and such\n         int w = (z->img_comp[n].x+7) >> 3;\n         int h = (z->img_comp[n].y+7) >> 3;\n         for (j=0; j < h; ++j) {\n            for (i=0; i < w; ++i) {\n               int ha = z->img_comp[n].ha;\n               if (!stbi__jpeg_decode_block(z, data, z->huff_dc+z->img_comp[n].hd, z->huff_ac+ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0;\n               z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*j*8+i*8, z->img_comp[n].w2, data);\n               // every data block is an MCU, so countdown the restart interval\n               if (--z->todo <= 0) {\n                  if (z->code_bits < 24) stbi__grow_buffer_unsafe(z);\n                  // if it's NOT a restart, then just bail, so we get corrupt data\n                  // rather than no data\n                  if (!STBI__RESTART(z->marker)) return 1;\n                  stbi__jpeg_reset(z);\n               }\n            }\n         }\n         return 1;\n      } else { // interleaved\n         int i,j,k,x,y;\n         STBI_SIMD_ALIGN(short, data[64]);\n         for (j=0; j < z->img_mcu_y; ++j) {\n            for (i=0; i < z->img_mcu_x; ++i) {\n               // scan an interleaved mcu... process scan_n components in order\n               for (k=0; k < z->scan_n; ++k) {\n                  int n = z->order[k];\n                  // scan out an mcu's worth of this component; that's just determined\n                  // by the basic H and V specified for the component\n                  for (y=0; y < z->img_comp[n].v; ++y) {\n                     for (x=0; x < z->img_comp[n].h; ++x) {\n                        int x2 = (i*z->img_comp[n].h + x)*8;\n                        int y2 = (j*z->img_comp[n].v + y)*8;\n                        int ha = z->img_comp[n].ha;\n                        if (!stbi__jpeg_decode_block(z, data, z->huff_dc+z->img_comp[n].hd, z->huff_ac+ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0;\n                        z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*y2+x2, z->img_comp[n].w2, data);\n                     }\n                  }\n               }\n               // after all interleaved components, that's an interleaved MCU,\n               // so now count down the restart interval\n               if (--z->todo <= 0) {\n                  if (z->code_bits < 24) stbi__grow_buffer_unsafe(z);\n                  if (!STBI__RESTART(z->marker)) return 1;\n                  stbi__jpeg_reset(z);\n               }\n            }\n         }\n         return 1;\n      }\n   } else {\n      if (z->scan_n == 1) {\n         int i,j;\n         int n = z->order[0];\n         // non-interleaved data, we just need to process one block at a time,\n         // in trivial scanline order\n         // number of blocks to do just depends on how many actual \"pixels\" this\n         // component has, independent of interleaved MCU blocking and such\n         int w = (z->img_comp[n].x+7) >> 3;\n         int h = (z->img_comp[n].y+7) >> 3;\n         for (j=0; j < h; ++j) {\n            for (i=0; i < w; ++i) {\n               short *data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w);\n               if (z->spec_start == 0) {\n                  if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n))\n                     return 0;\n               } else {\n                  int ha = z->img_comp[n].ha;\n                  if (!stbi__jpeg_decode_block_prog_ac(z, data, &z->huff_ac[ha], z->fast_ac[ha]))\n                     return 0;\n               }\n               // every data block is an MCU, so countdown the restart interval\n               if (--z->todo <= 0) {\n                  if (z->code_bits < 24) stbi__grow_buffer_unsafe(z);\n                  if (!STBI__RESTART(z->marker)) return 1;\n                  stbi__jpeg_reset(z);\n               }\n            }\n         }\n         return 1;\n      } else { // interleaved\n         int i,j,k,x,y;\n         for (j=0; j < z->img_mcu_y; ++j) {\n            for (i=0; i < z->img_mcu_x; ++i) {\n               // scan an interleaved mcu... process scan_n components in order\n               for (k=0; k < z->scan_n; ++k) {\n                  int n = z->order[k];\n                  // scan out an mcu's worth of this component; that's just determined\n                  // by the basic H and V specified for the component\n                  for (y=0; y < z->img_comp[n].v; ++y) {\n                     for (x=0; x < z->img_comp[n].h; ++x) {\n                        int x2 = (i*z->img_comp[n].h + x);\n                        int y2 = (j*z->img_comp[n].v + y);\n                        short *data = z->img_comp[n].coeff + 64 * (x2 + y2 * z->img_comp[n].coeff_w);\n                        if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n))\n                           return 0;\n                     }\n                  }\n               }\n               // after all interleaved components, that's an interleaved MCU,\n               // so now count down the restart interval\n               if (--z->todo <= 0) {\n                  if (z->code_bits < 24) stbi__grow_buffer_unsafe(z);\n                  if (!STBI__RESTART(z->marker)) return 1;\n                  stbi__jpeg_reset(z);\n               }\n            }\n         }\n         return 1;\n      }\n   }\n}\n\nstatic void stbi__jpeg_dequantize(short *data, stbi__uint16 *dequant)\n{\n   int i;\n   for (i=0; i < 64; ++i)\n      data[i] *= dequant[i];\n}\n\nstatic void stbi__jpeg_finish(stbi__jpeg *z)\n{\n   if (z->progressive) {\n      // dequantize and idct the data\n      int i,j,n;\n      for (n=0; n < z->s->img_n; ++n) {\n         int w = (z->img_comp[n].x+7) >> 3;\n         int h = (z->img_comp[n].y+7) >> 3;\n         for (j=0; j < h; ++j) {\n            for (i=0; i < w; ++i) {\n               short *data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w);\n               stbi__jpeg_dequantize(data, z->dequant[z->img_comp[n].tq]);\n               z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*j*8+i*8, z->img_comp[n].w2, data);\n            }\n         }\n      }\n   }\n}\n\nstatic int stbi__process_marker(stbi__jpeg *z, int m)\n{\n   int L;\n   switch (m) {\n      case STBI__MARKER_none: // no marker found\n         return stbi__err(\"expected marker\",\"Corrupt JPEG\");\n\n      case 0xDD: // DRI - specify restart interval\n         if (stbi__get16be(z->s) != 4) return stbi__err(\"bad DRI len\",\"Corrupt JPEG\");\n         z->restart_interval = stbi__get16be(z->s);\n         return 1;\n\n      case 0xDB: // DQT - define quantization table\n         L = stbi__get16be(z->s)-2;\n         while (L > 0) {\n            int q = stbi__get8(z->s);\n            int p = q >> 4, sixteen = (p != 0);\n            int t = q & 15,i;\n            if (p != 0 && p != 1) return stbi__err(\"bad DQT type\",\"Corrupt JPEG\");\n            if (t > 3) return stbi__err(\"bad DQT table\",\"Corrupt JPEG\");\n\n            for (i=0; i < 64; ++i)\n               z->dequant[t][stbi__jpeg_dezigzag[i]] = (stbi__uint16)(sixteen ? stbi__get16be(z->s) : stbi__get8(z->s));\n            L -= (sixteen ? 129 : 65);\n         }\n         return L==0;\n\n      case 0xC4: // DHT - define huffman table\n         L = stbi__get16be(z->s)-2;\n         while (L > 0) {\n            stbi_uc *v;\n            int sizes[16],i,n=0;\n            int q = stbi__get8(z->s);\n            int tc = q >> 4;\n            int th = q & 15;\n            if (tc > 1 || th > 3) return stbi__err(\"bad DHT header\",\"Corrupt JPEG\");\n            for (i=0; i < 16; ++i) {\n               sizes[i] = stbi__get8(z->s);\n               n += sizes[i];\n            }\n            L -= 17;\n            if (tc == 0) {\n               if (!stbi__build_huffman(z->huff_dc+th, sizes)) return 0;\n               v = z->huff_dc[th].values;\n            } else {\n               if (!stbi__build_huffman(z->huff_ac+th, sizes)) return 0;\n               v = z->huff_ac[th].values;\n            }\n            for (i=0; i < n; ++i)\n               v[i] = stbi__get8(z->s);\n            if (tc != 0)\n               stbi__build_fast_ac(z->fast_ac[th], z->huff_ac + th);\n            L -= n;\n         }\n         return L==0;\n   }\n\n   // check for comment block or APP blocks\n   if ((m >= 0xE0 && m <= 0xEF) || m == 0xFE) {\n      L = stbi__get16be(z->s);\n      if (L < 2) {\n         if (m == 0xFE)\n            return stbi__err(\"bad COM len\",\"Corrupt JPEG\");\n         else\n            return stbi__err(\"bad APP len\",\"Corrupt JPEG\");\n      }\n      L -= 2;\n\n      if (m == 0xE0 && L >= 5) { // JFIF APP0 segment\n         static const unsigned char tag[5] = {'J','F','I','F','\\0'};\n         int ok = 1;\n         int i;\n         for (i=0; i < 5; ++i)\n            if (stbi__get8(z->s) != tag[i])\n               ok = 0;\n         L -= 5;\n         if (ok)\n            z->jfif = 1;\n      } else if (m == 0xEE && L >= 12) { // Adobe APP14 segment\n         static const unsigned char tag[6] = {'A','d','o','b','e','\\0'};\n         int ok = 1;\n         int i;\n         for (i=0; i < 6; ++i)\n            if (stbi__get8(z->s) != tag[i])\n               ok = 0;\n         L -= 6;\n         if (ok) {\n            stbi__get8(z->s); // version\n            stbi__get16be(z->s); // flags0\n            stbi__get16be(z->s); // flags1\n            z->app14_color_transform = stbi__get8(z->s); // color transform\n            L -= 6;\n         }\n      }\n\n      stbi__skip(z->s, L);\n      return 1;\n   }\n\n   return stbi__err(\"unknown marker\",\"Corrupt JPEG\");\n}\n\n// after we see SOS\nstatic int stbi__process_scan_header(stbi__jpeg *z)\n{\n   int i;\n   int Ls = stbi__get16be(z->s);\n   z->scan_n = stbi__get8(z->s);\n   if (z->scan_n < 1 || z->scan_n > 4 || z->scan_n > (int) z->s->img_n) return stbi__err(\"bad SOS component count\",\"Corrupt JPEG\");\n   if (Ls != 6+2*z->scan_n) return stbi__err(\"bad SOS len\",\"Corrupt JPEG\");\n   for (i=0; i < z->scan_n; ++i) {\n      int id = stbi__get8(z->s), which;\n      int q = stbi__get8(z->s);\n      for (which = 0; which < z->s->img_n; ++which)\n         if (z->img_comp[which].id == id)\n            break;\n      if (which == z->s->img_n) return 0; // no match\n      z->img_comp[which].hd = q >> 4;   if (z->img_comp[which].hd > 3) return stbi__err(\"bad DC huff\",\"Corrupt JPEG\");\n      z->img_comp[which].ha = q & 15;   if (z->img_comp[which].ha > 3) return stbi__err(\"bad AC huff\",\"Corrupt JPEG\");\n      z->order[i] = which;\n   }\n\n   {\n      int aa;\n      z->spec_start = stbi__get8(z->s);\n      z->spec_end   = stbi__get8(z->s); // should be 63, but might be 0\n      aa = stbi__get8(z->s);\n      z->succ_high = (aa >> 4);\n      z->succ_low  = (aa & 15);\n      if (z->progressive) {\n         if (z->spec_start > 63 || z->spec_end > 63  || z->spec_start > z->spec_end || z->succ_high > 13 || z->succ_low > 13)\n            return stbi__err(\"bad SOS\", \"Corrupt JPEG\");\n      } else {\n         if (z->spec_start != 0) return stbi__err(\"bad SOS\",\"Corrupt JPEG\");\n         if (z->succ_high != 0 || z->succ_low != 0) return stbi__err(\"bad SOS\",\"Corrupt JPEG\");\n         z->spec_end = 63;\n      }\n   }\n\n   return 1;\n}\n\nstatic int stbi__free_jpeg_components(stbi__jpeg *z, int ncomp, int why)\n{\n   int i;\n   for (i=0; i < ncomp; ++i) {\n      if (z->img_comp[i].raw_data) {\n         STBI_FREE(z->img_comp[i].raw_data);\n         z->img_comp[i].raw_data = NULL;\n         z->img_comp[i].data = NULL;\n      }\n      if (z->img_comp[i].raw_coeff) {\n         STBI_FREE(z->img_comp[i].raw_coeff);\n         z->img_comp[i].raw_coeff = 0;\n         z->img_comp[i].coeff = 0;\n      }\n      if (z->img_comp[i].linebuf) {\n         STBI_FREE(z->img_comp[i].linebuf);\n         z->img_comp[i].linebuf = NULL;\n      }\n   }\n   return why;\n}\n\nstatic int stbi__process_frame_header(stbi__jpeg *z, int scan)\n{\n   stbi__context *s = z->s;\n   int Lf,p,i,q, h_max=1,v_max=1,c;\n   Lf = stbi__get16be(s);         if (Lf < 11) return stbi__err(\"bad SOF len\",\"Corrupt JPEG\"); // JPEG\n   p  = stbi__get8(s);            if (p != 8) return stbi__err(\"only 8-bit\",\"JPEG format not supported: 8-bit only\"); // JPEG baseline\n   s->img_y = stbi__get16be(s);   if (s->img_y == 0) return stbi__err(\"no header height\", \"JPEG format not supported: delayed height\"); // Legal, but we don't handle it--but neither does IJG\n   s->img_x = stbi__get16be(s);   if (s->img_x == 0) return stbi__err(\"0 width\",\"Corrupt JPEG\"); // JPEG requires\n   c = stbi__get8(s);\n   if (c != 3 && c != 1 && c != 4) return stbi__err(\"bad component count\",\"Corrupt JPEG\");\n   s->img_n = c;\n   for (i=0; i < c; ++i) {\n      z->img_comp[i].data = NULL;\n      z->img_comp[i].linebuf = NULL;\n   }\n\n   if (Lf != 8+3*s->img_n) return stbi__err(\"bad SOF len\",\"Corrupt JPEG\");\n\n   z->rgb = 0;\n   for (i=0; i < s->img_n; ++i) {\n      static const unsigned char rgb[3] = { 'R', 'G', 'B' };\n      z->img_comp[i].id = stbi__get8(s);\n      if (s->img_n == 3 && z->img_comp[i].id == rgb[i])\n         ++z->rgb;\n      q = stbi__get8(s);\n      z->img_comp[i].h = (q >> 4);  if (!z->img_comp[i].h || z->img_comp[i].h > 4) return stbi__err(\"bad H\",\"Corrupt JPEG\");\n      z->img_comp[i].v = q & 15;    if (!z->img_comp[i].v || z->img_comp[i].v > 4) return stbi__err(\"bad V\",\"Corrupt JPEG\");\n      z->img_comp[i].tq = stbi__get8(s);  if (z->img_comp[i].tq > 3) return stbi__err(\"bad TQ\",\"Corrupt JPEG\");\n   }\n\n   if (scan != STBI__SCAN_load) return 1;\n\n   if (!stbi__mad3sizes_valid(s->img_x, s->img_y, s->img_n, 0)) return stbi__err(\"too large\", \"Image too large to decode\");\n\n   for (i=0; i < s->img_n; ++i) {\n      if (z->img_comp[i].h > h_max) h_max = z->img_comp[i].h;\n      if (z->img_comp[i].v > v_max) v_max = z->img_comp[i].v;\n   }\n\n   // compute interleaved mcu info\n   z->img_h_max = h_max;\n   z->img_v_max = v_max;\n   z->img_mcu_w = h_max * 8;\n   z->img_mcu_h = v_max * 8;\n   // these sizes can't be more than 17 bits\n   z->img_mcu_x = (s->img_x + z->img_mcu_w-1) / z->img_mcu_w;\n   z->img_mcu_y = (s->img_y + z->img_mcu_h-1) / z->img_mcu_h;\n\n   for (i=0; i < s->img_n; ++i) {\n      // number of effective pixels (e.g. for non-interleaved MCU)\n      z->img_comp[i].x = (s->img_x * z->img_comp[i].h + h_max-1) / h_max;\n      z->img_comp[i].y = (s->img_y * z->img_comp[i].v + v_max-1) / v_max;\n      // to simplify generation, we'll allocate enough memory to decode\n      // the bogus oversized data from using interleaved MCUs and their\n      // big blocks (e.g. a 16x16 iMCU on an image of width 33); we won't\n      // discard the extra data until colorspace conversion\n      //\n      // img_mcu_x, img_mcu_y: <=17 bits; comp[i].h and .v are <=4 (checked earlier)\n      // so these muls can't overflow with 32-bit ints (which we require)\n      z->img_comp[i].w2 = z->img_mcu_x * z->img_comp[i].h * 8;\n      z->img_comp[i].h2 = z->img_mcu_y * z->img_comp[i].v * 8;\n      z->img_comp[i].coeff = 0;\n      z->img_comp[i].raw_coeff = 0;\n      z->img_comp[i].linebuf = NULL;\n      z->img_comp[i].raw_data = stbi__malloc_mad2(z->img_comp[i].w2, z->img_comp[i].h2, 15);\n      if (z->img_comp[i].raw_data == NULL)\n         return stbi__free_jpeg_components(z, i+1, stbi__err(\"outofmem\", \"Out of memory\"));\n      // align blocks for idct using mmx/sse\n      z->img_comp[i].data = (stbi_uc*) (((size_t) z->img_comp[i].raw_data + 15) & ~15);\n      if (z->progressive) {\n         // w2, h2 are multiples of 8 (see above)\n         z->img_comp[i].coeff_w = z->img_comp[i].w2 / 8;\n         z->img_comp[i].coeff_h = z->img_comp[i].h2 / 8;\n         z->img_comp[i].raw_coeff = stbi__malloc_mad3(z->img_comp[i].w2, z->img_comp[i].h2, sizeof(short), 15);\n         if (z->img_comp[i].raw_coeff == NULL)\n            return stbi__free_jpeg_components(z, i+1, stbi__err(\"outofmem\", \"Out of memory\"));\n         z->img_comp[i].coeff = (short*) (((size_t) z->img_comp[i].raw_coeff + 15) & ~15);\n      }\n   }\n\n   return 1;\n}\n\n// use comparisons since in some cases we handle more than one case (e.g. SOF)\n#define stbi__DNL(x)         ((x) == 0xdc)\n#define stbi__SOI(x)         ((x) == 0xd8)\n#define stbi__EOI(x)         ((x) == 0xd9)\n#define stbi__SOF(x)         ((x) == 0xc0 || (x) == 0xc1 || (x) == 0xc2)\n#define stbi__SOS(x)         ((x) == 0xda)\n\n#define stbi__SOF_progressive(x)   ((x) == 0xc2)\n\nstatic int stbi__decode_jpeg_header(stbi__jpeg *z, int scan)\n{\n   int m;\n   z->jfif = 0;\n   z->app14_color_transform = -1; // valid values are 0,1,2\n   z->marker = STBI__MARKER_none; // initialize cached marker to empty\n   m = stbi__get_marker(z);\n   if (!stbi__SOI(m)) return stbi__err(\"no SOI\",\"Corrupt JPEG\");\n   if (scan == STBI__SCAN_type) return 1;\n   m = stbi__get_marker(z);\n   while (!stbi__SOF(m)) {\n      if (!stbi__process_marker(z,m)) return 0;\n      m = stbi__get_marker(z);\n      while (m == STBI__MARKER_none) {\n         // some files have extra padding after their blocks, so ok, we'll scan\n         if (stbi__at_eof(z->s)) return stbi__err(\"no SOF\", \"Corrupt JPEG\");\n         m = stbi__get_marker(z);\n      }\n   }\n   z->progressive = stbi__SOF_progressive(m);\n   if (!stbi__process_frame_header(z, scan)) return 0;\n   return 1;\n}\n\n// decode image to YCbCr format\nstatic int stbi__decode_jpeg_image(stbi__jpeg *j)\n{\n   int m;\n   for (m = 0; m < 4; m++) {\n      j->img_comp[m].raw_data = NULL;\n      j->img_comp[m].raw_coeff = NULL;\n   }\n   j->restart_interval = 0;\n   if (!stbi__decode_jpeg_header(j, STBI__SCAN_load)) return 0;\n   m = stbi__get_marker(j);\n   while (!stbi__EOI(m)) {\n      if (stbi__SOS(m)) {\n         if (!stbi__process_scan_header(j)) return 0;\n         if (!stbi__parse_entropy_coded_data(j)) return 0;\n         if (j->marker == STBI__MARKER_none ) {\n            // handle 0s at the end of image data from IP Kamera 9060\n            while (!stbi__at_eof(j->s)) {\n               int x = stbi__get8(j->s);\n               if (x == 255) {\n                  j->marker = stbi__get8(j->s);\n                  break;\n               }\n            }\n            // if we reach eof without hitting a marker, stbi__get_marker() below will fail and we'll eventually return 0\n         }\n      } else if (stbi__DNL(m)) {\n         int Ld = stbi__get16be(j->s);\n         stbi__uint32 NL = stbi__get16be(j->s);\n         if (Ld != 4) return stbi__err(\"bad DNL len\", \"Corrupt JPEG\");\n         if (NL != j->s->img_y) return stbi__err(\"bad DNL height\", \"Corrupt JPEG\");\n      } else {\n         if (!stbi__process_marker(j, m)) return 0;\n      }\n      m = stbi__get_marker(j);\n   }\n   if (j->progressive)\n      stbi__jpeg_finish(j);\n   return 1;\n}\n\n// static jfif-centered resampling (across block boundaries)\n\ntypedef stbi_uc *(*resample_row_func)(stbi_uc *out, stbi_uc *in0, stbi_uc *in1,\n                                    int w, int hs);\n\n#define stbi__div4(x) ((stbi_uc) ((x) >> 2))\n\nstatic stbi_uc *resample_row_1(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs)\n{\n   STBI_NOTUSED(out);\n   STBI_NOTUSED(in_far);\n   STBI_NOTUSED(w);\n   STBI_NOTUSED(hs);\n   return in_near;\n}\n\nstatic stbi_uc* stbi__resample_row_v_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs)\n{\n   // need to generate two samples vertically for every one in input\n   int i;\n   STBI_NOTUSED(hs);\n   for (i=0; i < w; ++i)\n      out[i] = stbi__div4(3*in_near[i] + in_far[i] + 2);\n   return out;\n}\n\nstatic stbi_uc*  stbi__resample_row_h_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs)\n{\n   // need to generate two samples horizontally for every one in input\n   int i;\n   stbi_uc *input = in_near;\n\n   if (w == 1) {\n      // if only one sample, can't do any interpolation\n      out[0] = out[1] = input[0];\n      return out;\n   }\n\n   out[0] = input[0];\n   out[1] = stbi__div4(input[0]*3 + input[1] + 2);\n   for (i=1; i < w-1; ++i) {\n      int n = 3*input[i]+2;\n      out[i*2+0] = stbi__div4(n+input[i-1]);\n      out[i*2+1] = stbi__div4(n+input[i+1]);\n   }\n   out[i*2+0] = stbi__div4(input[w-2]*3 + input[w-1] + 2);\n   out[i*2+1] = input[w-1];\n\n   STBI_NOTUSED(in_far);\n   STBI_NOTUSED(hs);\n\n   return out;\n}\n\n#define stbi__div16(x) ((stbi_uc) ((x) >> 4))\n\nstatic stbi_uc *stbi__resample_row_hv_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs)\n{\n   // need to generate 2x2 samples for every one in input\n   int i,t0,t1;\n   if (w == 1) {\n      out[0] = out[1] = stbi__div4(3*in_near[0] + in_far[0] + 2);\n      return out;\n   }\n\n   t1 = 3*in_near[0] + in_far[0];\n   out[0] = stbi__div4(t1+2);\n   for (i=1; i < w; ++i) {\n      t0 = t1;\n      t1 = 3*in_near[i]+in_far[i];\n      out[i*2-1] = stbi__div16(3*t0 + t1 + 8);\n      out[i*2  ] = stbi__div16(3*t1 + t0 + 8);\n   }\n   out[w*2-1] = stbi__div4(t1+2);\n\n   STBI_NOTUSED(hs);\n\n   return out;\n}\n\n#if defined(STBI_SSE2) || defined(STBI_NEON)\nstatic stbi_uc *stbi__resample_row_hv_2_simd(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs)\n{\n   // need to generate 2x2 samples for every one in input\n   int i=0,t0,t1;\n\n   if (w == 1) {\n      out[0] = out[1] = stbi__div4(3*in_near[0] + in_far[0] + 2);\n      return out;\n   }\n\n   t1 = 3*in_near[0] + in_far[0];\n   // process groups of 8 pixels for as long as we can.\n   // note we can't handle the last pixel in a row in this loop\n   // because we need to handle the filter boundary conditions.\n   for (; i < ((w-1) & ~7); i += 8) {\n#if defined(STBI_SSE2)\n      // load and perform the vertical filtering pass\n      // this uses 3*x + y = 4*x + (y - x)\n      __m128i zero  = _mm_setzero_si128();\n      __m128i farb  = _mm_loadl_epi64((__m128i *) (in_far + i));\n      __m128i nearb = _mm_loadl_epi64((__m128i *) (in_near + i));\n      __m128i farw  = _mm_unpacklo_epi8(farb, zero);\n      __m128i nearw = _mm_unpacklo_epi8(nearb, zero);\n      __m128i diff  = _mm_sub_epi16(farw, nearw);\n      __m128i nears = _mm_slli_epi16(nearw, 2);\n      __m128i curr  = _mm_add_epi16(nears, diff); // current row\n\n      // horizontal filter works the same based on shifted vers of current\n      // row. \"prev\" is current row shifted right by 1 pixel; we need to\n      // insert the previous pixel value (from t1).\n      // \"next\" is current row shifted left by 1 pixel, with first pixel\n      // of next block of 8 pixels added in.\n      __m128i prv0 = _mm_slli_si128(curr, 2);\n      __m128i nxt0 = _mm_srli_si128(curr, 2);\n      __m128i prev = _mm_insert_epi16(prv0, t1, 0);\n      __m128i next = _mm_insert_epi16(nxt0, 3*in_near[i+8] + in_far[i+8], 7);\n\n      // horizontal filter, polyphase implementation since it's convenient:\n      // even pixels = 3*cur + prev = cur*4 + (prev - cur)\n      // odd  pixels = 3*cur + next = cur*4 + (next - cur)\n      // note the shared term.\n      __m128i bias  = _mm_set1_epi16(8);\n      __m128i curs = _mm_slli_epi16(curr, 2);\n      __m128i prvd = _mm_sub_epi16(prev, curr);\n      __m128i nxtd = _mm_sub_epi16(next, curr);\n      __m128i curb = _mm_add_epi16(curs, bias);\n      __m128i even = _mm_add_epi16(prvd, curb);\n      __m128i odd  = _mm_add_epi16(nxtd, curb);\n\n      // interleave even and odd pixels, then undo scaling.\n      __m128i int0 = _mm_unpacklo_epi16(even, odd);\n      __m128i int1 = _mm_unpackhi_epi16(even, odd);\n      __m128i de0  = _mm_srli_epi16(int0, 4);\n      __m128i de1  = _mm_srli_epi16(int1, 4);\n\n      // pack and write output\n      __m128i outv = _mm_packus_epi16(de0, de1);\n      _mm_storeu_si128((__m128i *) (out + i*2), outv);\n#elif defined(STBI_NEON)\n      // load and perform the vertical filtering pass\n      // this uses 3*x + y = 4*x + (y - x)\n      uint8x8_t farb  = vld1_u8(in_far + i);\n      uint8x8_t nearb = vld1_u8(in_near + i);\n      int16x8_t diff  = vreinterpretq_s16_u16(vsubl_u8(farb, nearb));\n      int16x8_t nears = vreinterpretq_s16_u16(vshll_n_u8(nearb, 2));\n      int16x8_t curr  = vaddq_s16(nears, diff); // current row\n\n      // horizontal filter works the same based on shifted vers of current\n      // row. \"prev\" is current row shifted right by 1 pixel; we need to\n      // insert the previous pixel value (from t1).\n      // \"next\" is current row shifted left by 1 pixel, with first pixel\n      // of next block of 8 pixels added in.\n      int16x8_t prv0 = vextq_s16(curr, curr, 7);\n      int16x8_t nxt0 = vextq_s16(curr, curr, 1);\n      int16x8_t prev = vsetq_lane_s16(t1, prv0, 0);\n      int16x8_t next = vsetq_lane_s16(3*in_near[i+8] + in_far[i+8], nxt0, 7);\n\n      // horizontal filter, polyphase implementation since it's convenient:\n      // even pixels = 3*cur + prev = cur*4 + (prev - cur)\n      // odd  pixels = 3*cur + next = cur*4 + (next - cur)\n      // note the shared term.\n      int16x8_t curs = vshlq_n_s16(curr, 2);\n      int16x8_t prvd = vsubq_s16(prev, curr);\n      int16x8_t nxtd = vsubq_s16(next, curr);\n      int16x8_t even = vaddq_s16(curs, prvd);\n      int16x8_t odd  = vaddq_s16(curs, nxtd);\n\n      // undo scaling and round, then store with even/odd phases interleaved\n      uint8x8x2_t o;\n      o.val[0] = vqrshrun_n_s16(even, 4);\n      o.val[1] = vqrshrun_n_s16(odd,  4);\n      vst2_u8(out + i*2, o);\n#endif\n\n      // \"previous\" value for next iter\n      t1 = 3*in_near[i+7] + in_far[i+7];\n   }\n\n   t0 = t1;\n   t1 = 3*in_near[i] + in_far[i];\n   out[i*2] = stbi__div16(3*t1 + t0 + 8);\n\n   for (++i; i < w; ++i) {\n      t0 = t1;\n      t1 = 3*in_near[i]+in_far[i];\n      out[i*2-1] = stbi__div16(3*t0 + t1 + 8);\n      out[i*2  ] = stbi__div16(3*t1 + t0 + 8);\n   }\n   out[w*2-1] = stbi__div4(t1+2);\n\n   STBI_NOTUSED(hs);\n\n   return out;\n}\n#endif\n\nstatic stbi_uc *stbi__resample_row_generic(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs)\n{\n   // resample with nearest-neighbor\n   int i,j;\n   STBI_NOTUSED(in_far);\n   for (i=0; i < w; ++i)\n      for (j=0; j < hs; ++j)\n         out[i*hs+j] = in_near[i];\n   return out;\n}\n\n// this is a reduced-precision calculation of YCbCr-to-RGB introduced\n// to make sure the code produces the same results in both SIMD and scalar\n#define stbi__float2fixed(x)  (((int) ((x) * 4096.0f + 0.5f)) << 8)\nstatic void stbi__YCbCr_to_RGB_row(stbi_uc *out, const stbi_uc *y, const stbi_uc *pcb, const stbi_uc *pcr, int count, int step)\n{\n   int i;\n   for (i=0; i < count; ++i) {\n      int y_fixed = (y[i] << 20) + (1<<19); // rounding\n      int r,g,b;\n      int cr = pcr[i] - 128;\n      int cb = pcb[i] - 128;\n      r = y_fixed +  cr* stbi__float2fixed(1.40200f);\n      g = y_fixed + (cr*-stbi__float2fixed(0.71414f)) + ((cb*-stbi__float2fixed(0.34414f)) & 0xffff0000);\n      b = y_fixed                                     +   cb* stbi__float2fixed(1.77200f);\n      r >>= 20;\n      g >>= 20;\n      b >>= 20;\n      if ((unsigned) r > 255) { if (r < 0) r = 0; else r = 255; }\n      if ((unsigned) g > 255) { if (g < 0) g = 0; else g = 255; }\n      if ((unsigned) b > 255) { if (b < 0) b = 0; else b = 255; }\n      out[0] = (stbi_uc)r;\n      out[1] = (stbi_uc)g;\n      out[2] = (stbi_uc)b;\n      out[3] = 255;\n      out += step;\n   }\n}\n\n#if defined(STBI_SSE2) || defined(STBI_NEON)\nstatic void stbi__YCbCr_to_RGB_simd(stbi_uc *out, stbi_uc const *y, stbi_uc const *pcb, stbi_uc const *pcr, int count, int step)\n{\n   int i = 0;\n\n#ifdef STBI_SSE2\n   // step == 3 is pretty ugly on the final interleave, and i'm not convinced\n   // it's useful in practice (you wouldn't use it for textures, for example).\n   // so just accelerate step == 4 case.\n   if (step == 4) {\n      // this is a fairly straightforward implementation and not super-optimized.\n      __m128i signflip  = _mm_set1_epi8(-0x80);\n      __m128i cr_const0 = _mm_set1_epi16(   (short) ( 1.40200f*4096.0f+0.5f));\n      __m128i cr_const1 = _mm_set1_epi16( - (short) ( 0.71414f*4096.0f+0.5f));\n      __m128i cb_const0 = _mm_set1_epi16( - (short) ( 0.34414f*4096.0f+0.5f));\n      __m128i cb_const1 = _mm_set1_epi16(   (short) ( 1.77200f*4096.0f+0.5f));\n      __m128i y_bias = _mm_set1_epi8((char) (unsigned char) 128);\n      __m128i xw = _mm_set1_epi16(255); // alpha channel\n\n      for (; i+7 < count; i += 8) {\n         // load\n         __m128i y_bytes = _mm_loadl_epi64((__m128i *) (y+i));\n         __m128i cr_bytes = _mm_loadl_epi64((__m128i *) (pcr+i));\n         __m128i cb_bytes = _mm_loadl_epi64((__m128i *) (pcb+i));\n         __m128i cr_biased = _mm_xor_si128(cr_bytes, signflip); // -128\n         __m128i cb_biased = _mm_xor_si128(cb_bytes, signflip); // -128\n\n         // unpack to short (and left-shift cr, cb by 8)\n         __m128i yw  = _mm_unpacklo_epi8(y_bias, y_bytes);\n         __m128i crw = _mm_unpacklo_epi8(_mm_setzero_si128(), cr_biased);\n         __m128i cbw = _mm_unpacklo_epi8(_mm_setzero_si128(), cb_biased);\n\n         // color transform\n         __m128i yws = _mm_srli_epi16(yw, 4);\n         __m128i cr0 = _mm_mulhi_epi16(cr_const0, crw);\n         __m128i cb0 = _mm_mulhi_epi16(cb_const0, cbw);\n         __m128i cb1 = _mm_mulhi_epi16(cbw, cb_const1);\n         __m128i cr1 = _mm_mulhi_epi16(crw, cr_const1);\n         __m128i rws = _mm_add_epi16(cr0, yws);\n         __m128i gwt = _mm_add_epi16(cb0, yws);\n         __m128i bws = _mm_add_epi16(yws, cb1);\n         __m128i gws = _mm_add_epi16(gwt, cr1);\n\n         // descale\n         __m128i rw = _mm_srai_epi16(rws, 4);\n         __m128i bw = _mm_srai_epi16(bws, 4);\n         __m128i gw = _mm_srai_epi16(gws, 4);\n\n         // back to byte, set up for transpose\n         __m128i brb = _mm_packus_epi16(rw, bw);\n         __m128i gxb = _mm_packus_epi16(gw, xw);\n\n         // transpose to interleave channels\n         __m128i t0 = _mm_unpacklo_epi8(brb, gxb);\n         __m128i t1 = _mm_unpackhi_epi8(brb, gxb);\n         __m128i o0 = _mm_unpacklo_epi16(t0, t1);\n         __m128i o1 = _mm_unpackhi_epi16(t0, t1);\n\n         // store\n         _mm_storeu_si128((__m128i *) (out + 0), o0);\n         _mm_storeu_si128((__m128i *) (out + 16), o1);\n         out += 32;\n      }\n   }\n#endif\n\n#ifdef STBI_NEON\n   // in this version, step=3 support would be easy to add. but is there demand?\n   if (step == 4) {\n      // this is a fairly straightforward implementation and not super-optimized.\n      uint8x8_t signflip = vdup_n_u8(0x80);\n      int16x8_t cr_const0 = vdupq_n_s16(   (short) ( 1.40200f*4096.0f+0.5f));\n      int16x8_t cr_const1 = vdupq_n_s16( - (short) ( 0.71414f*4096.0f+0.5f));\n      int16x8_t cb_const0 = vdupq_n_s16( - (short) ( 0.34414f*4096.0f+0.5f));\n      int16x8_t cb_const1 = vdupq_n_s16(   (short) ( 1.77200f*4096.0f+0.5f));\n\n      for (; i+7 < count; i += 8) {\n         // load\n         uint8x8_t y_bytes  = vld1_u8(y + i);\n         uint8x8_t cr_bytes = vld1_u8(pcr + i);\n         uint8x8_t cb_bytes = vld1_u8(pcb + i);\n         int8x8_t cr_biased = vreinterpret_s8_u8(vsub_u8(cr_bytes, signflip));\n         int8x8_t cb_biased = vreinterpret_s8_u8(vsub_u8(cb_bytes, signflip));\n\n         // expand to s16\n         int16x8_t yws = vreinterpretq_s16_u16(vshll_n_u8(y_bytes, 4));\n         int16x8_t crw = vshll_n_s8(cr_biased, 7);\n         int16x8_t cbw = vshll_n_s8(cb_biased, 7);\n\n         // color transform\n         int16x8_t cr0 = vqdmulhq_s16(crw, cr_const0);\n         int16x8_t cb0 = vqdmulhq_s16(cbw, cb_const0);\n         int16x8_t cr1 = vqdmulhq_s16(crw, cr_const1);\n         int16x8_t cb1 = vqdmulhq_s16(cbw, cb_const1);\n         int16x8_t rws = vaddq_s16(yws, cr0);\n         int16x8_t gws = vaddq_s16(vaddq_s16(yws, cb0), cr1);\n         int16x8_t bws = vaddq_s16(yws, cb1);\n\n         // undo scaling, round, convert to byte\n         uint8x8x4_t o;\n         o.val[0] = vqrshrun_n_s16(rws, 4);\n         o.val[1] = vqrshrun_n_s16(gws, 4);\n         o.val[2] = vqrshrun_n_s16(bws, 4);\n         o.val[3] = vdup_n_u8(255);\n\n         // store, interleaving r/g/b/a\n         vst4_u8(out, o);\n         out += 8*4;\n      }\n   }\n#endif\n\n   for (; i < count; ++i) {\n      int y_fixed = (y[i] << 20) + (1<<19); // rounding\n      int r,g,b;\n      int cr = pcr[i] - 128;\n      int cb = pcb[i] - 128;\n      r = y_fixed + cr* stbi__float2fixed(1.40200f);\n      g = y_fixed + cr*-stbi__float2fixed(0.71414f) + ((cb*-stbi__float2fixed(0.34414f)) & 0xffff0000);\n      b = y_fixed                                   +   cb* stbi__float2fixed(1.77200f);\n      r >>= 20;\n      g >>= 20;\n      b >>= 20;\n      if ((unsigned) r > 255) { if (r < 0) r = 0; else r = 255; }\n      if ((unsigned) g > 255) { if (g < 0) g = 0; else g = 255; }\n      if ((unsigned) b > 255) { if (b < 0) b = 0; else b = 255; }\n      out[0] = (stbi_uc)r;\n      out[1] = (stbi_uc)g;\n      out[2] = (stbi_uc)b;\n      out[3] = 255;\n      out += step;\n   }\n}\n#endif\n\n// set up the kernels\nstatic void stbi__setup_jpeg(stbi__jpeg *j)\n{\n   j->idct_block_kernel = stbi__idct_block;\n   j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_row;\n   j->resample_row_hv_2_kernel = stbi__resample_row_hv_2;\n\n#ifdef STBI_SSE2\n   if (stbi__sse2_available()) {\n      j->idct_block_kernel = stbi__idct_simd;\n      j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd;\n      j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd;\n   }\n#endif\n\n#ifdef STBI_NEON\n   j->idct_block_kernel = stbi__idct_simd;\n   j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd;\n   j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd;\n#endif\n}\n\n// clean up the temporary component buffers\nstatic void stbi__cleanup_jpeg(stbi__jpeg *j)\n{\n   stbi__free_jpeg_components(j, j->s->img_n, 0);\n}\n\ntypedef struct\n{\n   resample_row_func resample;\n   stbi_uc *line0,*line1;\n   int hs,vs;   // expansion factor in each axis\n   int w_lores; // horizontal pixels pre-expansion\n   int ystep;   // how far through vertical expansion we are\n   int ypos;    // which pre-expansion row we're on\n} stbi__resample;\n\n// fast 0..255 * 0..255 => 0..255 rounded multiplication\nstatic stbi_uc stbi__blinn_8x8(stbi_uc x, stbi_uc y)\n{\n   unsigned int t = x*y + 128;\n   return (stbi_uc) ((t + (t >>8)) >> 8);\n}\n\nstatic stbi_uc *load_jpeg_image(stbi__jpeg *z, int *out_x, int *out_y, int *comp, int req_comp)\n{\n   int n, decode_n, is_rgb;\n   z->s->img_n = 0; // make stbi__cleanup_jpeg safe\n\n   // validate req_comp\n   if (req_comp < 0 || req_comp > 4) return stbi__errpuc(\"bad req_comp\", \"Internal error\");\n\n   // load a jpeg image from whichever source, but leave in YCbCr format\n   if (!stbi__decode_jpeg_image(z)) { stbi__cleanup_jpeg(z); return NULL; }\n\n   // determine actual number of components to generate\n   n = req_comp ? req_comp : z->s->img_n >= 3 ? 3 : 1;\n\n   is_rgb = z->s->img_n == 3 && (z->rgb == 3 || (z->app14_color_transform == 0 && !z->jfif));\n\n   if (z->s->img_n == 3 && n < 3 && !is_rgb)\n      decode_n = 1;\n   else\n      decode_n = z->s->img_n;\n\n   // resample and color-convert\n   {\n      int k;\n      unsigned int i,j;\n      stbi_uc *output;\n      stbi_uc *coutput[4];\n\n      stbi__resample res_comp[4];\n\n      for (k=0; k < decode_n; ++k) {\n         stbi__resample *r = &res_comp[k];\n\n         // allocate line buffer big enough for upsampling off the edges\n         // with upsample factor of 4\n         z->img_comp[k].linebuf = (stbi_uc *) stbi__malloc(z->s->img_x + 3);\n         if (!z->img_comp[k].linebuf) { stbi__cleanup_jpeg(z); return stbi__errpuc(\"outofmem\", \"Out of memory\"); }\n\n         r->hs      = z->img_h_max / z->img_comp[k].h;\n         r->vs      = z->img_v_max / z->img_comp[k].v;\n         r->ystep   = r->vs >> 1;\n         r->w_lores = (z->s->img_x + r->hs-1) / r->hs;\n         r->ypos    = 0;\n         r->line0   = r->line1 = z->img_comp[k].data;\n\n         if      (r->hs == 1 && r->vs == 1) r->resample = resample_row_1;\n         else if (r->hs == 1 && r->vs == 2) r->resample = stbi__resample_row_v_2;\n         else if (r->hs == 2 && r->vs == 1) r->resample = stbi__resample_row_h_2;\n         else if (r->hs == 2 && r->vs == 2) r->resample = z->resample_row_hv_2_kernel;\n         else                               r->resample = stbi__resample_row_generic;\n      }\n\n      // can't error after this so, this is safe\n      output = (stbi_uc *) stbi__malloc_mad3(n, z->s->img_x, z->s->img_y, 1);\n      if (!output) { stbi__cleanup_jpeg(z); return stbi__errpuc(\"outofmem\", \"Out of memory\"); }\n\n      // now go ahead and resample\n      for (j=0; j < z->s->img_y; ++j) {\n         stbi_uc *out = output + n * z->s->img_x * j;\n         for (k=0; k < decode_n; ++k) {\n            stbi__resample *r = &res_comp[k];\n            int y_bot = r->ystep >= (r->vs >> 1);\n            coutput[k] = r->resample(z->img_comp[k].linebuf,\n                                     y_bot ? r->line1 : r->line0,\n                                     y_bot ? r->line0 : r->line1,\n                                     r->w_lores, r->hs);\n            if (++r->ystep >= r->vs) {\n               r->ystep = 0;\n               r->line0 = r->line1;\n               if (++r->ypos < z->img_comp[k].y)\n                  r->line1 += z->img_comp[k].w2;\n            }\n         }\n         if (n >= 3) {\n            stbi_uc *y = coutput[0];\n            if (z->s->img_n == 3) {\n               if (is_rgb) {\n                  for (i=0; i < z->s->img_x; ++i) {\n                     out[0] = y[i];\n                     out[1] = coutput[1][i];\n                     out[2] = coutput[2][i];\n                     out[3] = 255;\n                     out += n;\n                  }\n               } else {\n                  z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n);\n               }\n            } else if (z->s->img_n == 4) {\n               if (z->app14_color_transform == 0) { // CMYK\n                  for (i=0; i < z->s->img_x; ++i) {\n                     stbi_uc m = coutput[3][i];\n                     out[0] = stbi__blinn_8x8(coutput[0][i], m);\n                     out[1] = stbi__blinn_8x8(coutput[1][i], m);\n                     out[2] = stbi__blinn_8x8(coutput[2][i], m);\n                     out[3] = 255;\n                     out += n;\n                  }\n               } else if (z->app14_color_transform == 2) { // YCCK\n                  z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n);\n                  for (i=0; i < z->s->img_x; ++i) {\n                     stbi_uc m = coutput[3][i];\n                     out[0] = stbi__blinn_8x8(255 - out[0], m);\n                     out[1] = stbi__blinn_8x8(255 - out[1], m);\n                     out[2] = stbi__blinn_8x8(255 - out[2], m);\n                     out += n;\n                  }\n               } else { // YCbCr + alpha?  Ignore the fourth channel for now\n                  z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n);\n               }\n            } else\n               for (i=0; i < z->s->img_x; ++i) {\n                  out[0] = out[1] = out[2] = y[i];\n                  out[3] = 255; // not used if n==3\n                  out += n;\n               }\n         } else {\n            if (is_rgb) {\n               if (n == 1)\n                  for (i=0; i < z->s->img_x; ++i)\n                     *out++ = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]);\n               else {\n                  for (i=0; i < z->s->img_x; ++i, out += 2) {\n                     out[0] = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]);\n                     out[1] = 255;\n                  }\n               }\n            } else if (z->s->img_n == 4 && z->app14_color_transform == 0) {\n               for (i=0; i < z->s->img_x; ++i) {\n                  stbi_uc m = coutput[3][i];\n                  stbi_uc r = stbi__blinn_8x8(coutput[0][i], m);\n                  stbi_uc g = stbi__blinn_8x8(coutput[1][i], m);\n                  stbi_uc b = stbi__blinn_8x8(coutput[2][i], m);\n                  out[0] = stbi__compute_y(r, g, b);\n                  out[1] = 255;\n                  out += n;\n               }\n            } else if (z->s->img_n == 4 && z->app14_color_transform == 2) {\n               for (i=0; i < z->s->img_x; ++i) {\n                  out[0] = stbi__blinn_8x8(255 - coutput[0][i], coutput[3][i]);\n                  out[1] = 255;\n                  out += n;\n               }\n            } else {\n               stbi_uc *y = coutput[0];\n               if (n == 1)\n                  for (i=0; i < z->s->img_x; ++i) out[i] = y[i];\n               else\n                  for (i=0; i < z->s->img_x; ++i) *out++ = y[i], *out++ = 255;\n            }\n         }\n      }\n      stbi__cleanup_jpeg(z);\n      *out_x = z->s->img_x;\n      *out_y = z->s->img_y;\n      if (comp) *comp = z->s->img_n >= 3 ? 3 : 1; // report original components, not output\n      return output;\n   }\n}\n\nstatic void *stbi__jpeg_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri)\n{\n   unsigned char* result;\n   stbi__jpeg* j = (stbi__jpeg*) stbi__malloc(sizeof(stbi__jpeg));\n   STBI_NOTUSED(ri);\n   j->s = s;\n   stbi__setup_jpeg(j);\n   result = load_jpeg_image(j, x,y,comp,req_comp);\n   STBI_FREE(j);\n   return result;\n}\n\nstatic int stbi__jpeg_test(stbi__context *s)\n{\n   int r;\n   stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg));\n   j->s = s;\n   stbi__setup_jpeg(j);\n   r = stbi__decode_jpeg_header(j, STBI__SCAN_type);\n   stbi__rewind(s);\n   STBI_FREE(j);\n   return r;\n}\n\nstatic int stbi__jpeg_info_raw(stbi__jpeg *j, int *x, int *y, int *comp)\n{\n   if (!stbi__decode_jpeg_header(j, STBI__SCAN_header)) {\n      stbi__rewind( j->s );\n      return 0;\n   }\n   if (x) *x = j->s->img_x;\n   if (y) *y = j->s->img_y;\n   if (comp) *comp = j->s->img_n >= 3 ? 3 : 1;\n   return 1;\n}\n\nstatic int stbi__jpeg_info(stbi__context *s, int *x, int *y, int *comp)\n{\n   int result;\n   stbi__jpeg* j = (stbi__jpeg*) (stbi__malloc(sizeof(stbi__jpeg)));\n   j->s = s;\n   result = stbi__jpeg_info_raw(j, x, y, comp);\n   STBI_FREE(j);\n   return result;\n}\n#endif\n\n// public domain zlib decode    v0.2  Sean Barrett 2006-11-18\n//    simple implementation\n//      - all input must be provided in an upfront buffer\n//      - all output is written to a single output buffer (can malloc/realloc)\n//    performance\n//      - fast huffman\n\n#ifndef STBI_NO_ZLIB\n\n// fast-way is faster to check than jpeg huffman, but slow way is slower\n#define STBI__ZFAST_BITS  9 // accelerate all cases in default tables\n#define STBI__ZFAST_MASK  ((1 << STBI__ZFAST_BITS) - 1)\n\n// zlib-style huffman encoding\n// (jpegs packs from left, zlib from right, so can't share code)\ntypedef struct\n{\n   stbi__uint16 fast[1 << STBI__ZFAST_BITS];\n   stbi__uint16 firstcode[16];\n   int maxcode[17];\n   stbi__uint16 firstsymbol[16];\n   stbi_uc  size[288];\n   stbi__uint16 value[288];\n} stbi__zhuffman;\n\nstbi_inline static int stbi__bitreverse16(int n)\n{\n  n = ((n & 0xAAAA) >>  1) | ((n & 0x5555) << 1);\n  n = ((n & 0xCCCC) >>  2) | ((n & 0x3333) << 2);\n  n = ((n & 0xF0F0) >>  4) | ((n & 0x0F0F) << 4);\n  n = ((n & 0xFF00) >>  8) | ((n & 0x00FF) << 8);\n  return n;\n}\n\nstbi_inline static int stbi__bit_reverse(int v, int bits)\n{\n   STBI_ASSERT(bits <= 16);\n   // to bit reverse n bits, reverse 16 and shift\n   // e.g. 11 bits, bit reverse and shift away 5\n   return stbi__bitreverse16(v) >> (16-bits);\n}\n\nstatic int stbi__zbuild_huffman(stbi__zhuffman *z, const stbi_uc *sizelist, int num)\n{\n   int i,k=0;\n   int code, next_code[16], sizes[17];\n\n   // DEFLATE spec for generating codes\n   memset(sizes, 0, sizeof(sizes));\n   memset(z->fast, 0, sizeof(z->fast));\n   for (i=0; i < num; ++i)\n      ++sizes[sizelist[i]];\n   sizes[0] = 0;\n   for (i=1; i < 16; ++i)\n      if (sizes[i] > (1 << i))\n         return stbi__err(\"bad sizes\", \"Corrupt PNG\");\n   code = 0;\n   for (i=1; i < 16; ++i) {\n      next_code[i] = code;\n      z->firstcode[i] = (stbi__uint16) code;\n      z->firstsymbol[i] = (stbi__uint16) k;\n      code = (code + sizes[i]);\n      if (sizes[i])\n         if (code-1 >= (1 << i)) return stbi__err(\"bad codelengths\",\"Corrupt PNG\");\n      z->maxcode[i] = code << (16-i); // preshift for inner loop\n      code <<= 1;\n      k += sizes[i];\n   }\n   z->maxcode[16] = 0x10000; // sentinel\n   for (i=0; i < num; ++i) {\n      int s = sizelist[i];\n      if (s) {\n         int c = next_code[s] - z->firstcode[s] + z->firstsymbol[s];\n         stbi__uint16 fastv = (stbi__uint16) ((s << 9) | i);\n         z->size [c] = (stbi_uc     ) s;\n         z->value[c] = (stbi__uint16) i;\n         if (s <= STBI__ZFAST_BITS) {\n            int j = stbi__bit_reverse(next_code[s],s);\n            while (j < (1 << STBI__ZFAST_BITS)) {\n               z->fast[j] = fastv;\n               j += (1 << s);\n            }\n         }\n         ++next_code[s];\n      }\n   }\n   return 1;\n}\n\n// zlib-from-memory implementation for PNG reading\n//    because PNG allows splitting the zlib stream arbitrarily,\n//    and it's annoying structurally to have PNG call ZLIB call PNG,\n//    we require PNG read all the IDATs and combine them into a single\n//    memory buffer\n\ntypedef struct\n{\n   stbi_uc *zbuffer, *zbuffer_end;\n   int num_bits;\n   stbi__uint32 code_buffer;\n\n   char *zout;\n   char *zout_start;\n   char *zout_end;\n   int   z_expandable;\n\n   stbi__zhuffman z_length, z_distance;\n} stbi__zbuf;\n\nstbi_inline static stbi_uc stbi__zget8(stbi__zbuf *z)\n{\n   if (z->zbuffer >= z->zbuffer_end) return 0;\n   return *z->zbuffer++;\n}\n\nstatic void stbi__fill_bits(stbi__zbuf *z)\n{\n   do {\n      STBI_ASSERT(z->code_buffer < (1U << z->num_bits));\n      z->code_buffer |= (unsigned int) stbi__zget8(z) << z->num_bits;\n      z->num_bits += 8;\n   } while (z->num_bits <= 24);\n}\n\nstbi_inline static unsigned int stbi__zreceive(stbi__zbuf *z, int n)\n{\n   unsigned int k;\n   if (z->num_bits < n) stbi__fill_bits(z);\n   k = z->code_buffer & ((1 << n) - 1);\n   z->code_buffer >>= n;\n   z->num_bits -= n;\n   return k;\n}\n\nstatic int stbi__zhuffman_decode_slowpath(stbi__zbuf *a, stbi__zhuffman *z)\n{\n   int b,s,k;\n   // not resolved by fast table, so compute it the slow way\n   // use jpeg approach, which requires MSbits at top\n   k = stbi__bit_reverse(a->code_buffer, 16);\n   for (s=STBI__ZFAST_BITS+1; ; ++s)\n      if (k < z->maxcode[s])\n         break;\n   if (s == 16) return -1; // invalid code!\n   // code size is s, so:\n   b = (k >> (16-s)) - z->firstcode[s] + z->firstsymbol[s];\n   STBI_ASSERT(z->size[b] == s);\n   a->code_buffer >>= s;\n   a->num_bits -= s;\n   return z->value[b];\n}\n\nstbi_inline static int stbi__zhuffman_decode(stbi__zbuf *a, stbi__zhuffman *z)\n{\n   int b,s;\n   if (a->num_bits < 16) stbi__fill_bits(a);\n   b = z->fast[a->code_buffer & STBI__ZFAST_MASK];\n   if (b) {\n      s = b >> 9;\n      a->code_buffer >>= s;\n      a->num_bits -= s;\n      return b & 511;\n   }\n   return stbi__zhuffman_decode_slowpath(a, z);\n}\n\nstatic int stbi__zexpand(stbi__zbuf *z, char *zout, int n)  // need to make room for n bytes\n{\n   char *q;\n   int cur, limit, old_limit;\n   z->zout = zout;\n   if (!z->z_expandable) return stbi__err(\"output buffer limit\",\"Corrupt PNG\");\n   cur   = (int) (z->zout     - z->zout_start);\n   limit = old_limit = (int) (z->zout_end - z->zout_start);\n   while (cur + n > limit)\n      limit *= 2;\n   q = (char *) STBI_REALLOC_SIZED(z->zout_start, old_limit, limit);\n   STBI_NOTUSED(old_limit);\n   if (q == NULL) return stbi__err(\"outofmem\", \"Out of memory\");\n   z->zout_start = q;\n   z->zout       = q + cur;\n   z->zout_end   = q + limit;\n   return 1;\n}\n\nstatic const int stbi__zlength_base[31] = {\n   3,4,5,6,7,8,9,10,11,13,\n   15,17,19,23,27,31,35,43,51,59,\n   67,83,99,115,131,163,195,227,258,0,0 };\n\nstatic const int stbi__zlength_extra[31]=\n{ 0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0 };\n\nstatic const int stbi__zdist_base[32] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,\n257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0};\n\nstatic const int stbi__zdist_extra[32] =\n{ 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13};\n\nstatic int stbi__parse_huffman_block(stbi__zbuf *a)\n{\n   char *zout = a->zout;\n   for(;;) {\n      int z = stbi__zhuffman_decode(a, &a->z_length);\n      if (z < 256) {\n         if (z < 0) return stbi__err(\"bad huffman code\",\"Corrupt PNG\"); // error in huffman codes\n         if (zout >= a->zout_end) {\n            if (!stbi__zexpand(a, zout, 1)) return 0;\n            zout = a->zout;\n         }\n         *zout++ = (char) z;\n      } else {\n         stbi_uc *p;\n         int len,dist;\n         if (z == 256) {\n            a->zout = zout;\n            return 1;\n         }\n         z -= 257;\n         len = stbi__zlength_base[z];\n         if (stbi__zlength_extra[z]) len += stbi__zreceive(a, stbi__zlength_extra[z]);\n         z = stbi__zhuffman_decode(a, &a->z_distance);\n         if (z < 0) return stbi__err(\"bad huffman code\",\"Corrupt PNG\");\n         dist = stbi__zdist_base[z];\n         if (stbi__zdist_extra[z]) dist += stbi__zreceive(a, stbi__zdist_extra[z]);\n         if (zout - a->zout_start < dist) return stbi__err(\"bad dist\",\"Corrupt PNG\");\n         if (zout + len > a->zout_end) {\n            if (!stbi__zexpand(a, zout, len)) return 0;\n            zout = a->zout;\n         }\n         p = (stbi_uc *) (zout - dist);\n         if (dist == 1) { // run of one byte; common in images.\n            stbi_uc v = *p;\n            if (len) { do *zout++ = v; while (--len); }\n         } else {\n            if (len) { do *zout++ = *p++; while (--len); }\n         }\n      }\n   }\n}\n\nstatic int stbi__compute_huffman_codes(stbi__zbuf *a)\n{\n   static const stbi_uc length_dezigzag[19] = { 16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15 };\n   stbi__zhuffman z_codelength;\n   stbi_uc lencodes[286+32+137];//padding for maximum single op\n   stbi_uc codelength_sizes[19];\n   int i,n;\n\n   int hlit  = stbi__zreceive(a,5) + 257;\n   int hdist = stbi__zreceive(a,5) + 1;\n   int hclen = stbi__zreceive(a,4) + 4;\n   int ntot  = hlit + hdist;\n\n   memset(codelength_sizes, 0, sizeof(codelength_sizes));\n   for (i=0; i < hclen; ++i) {\n      int s = stbi__zreceive(a,3);\n      codelength_sizes[length_dezigzag[i]] = (stbi_uc) s;\n   }\n   if (!stbi__zbuild_huffman(&z_codelength, codelength_sizes, 19)) return 0;\n\n   n = 0;\n   while (n < ntot) {\n      int c = stbi__zhuffman_decode(a, &z_codelength);\n      if (c < 0 || c >= 19) return stbi__err(\"bad codelengths\", \"Corrupt PNG\");\n      if (c < 16)\n         lencodes[n++] = (stbi_uc) c;\n      else {\n         stbi_uc fill = 0;\n         if (c == 16) {\n            c = stbi__zreceive(a,2)+3;\n            if (n == 0) return stbi__err(\"bad codelengths\", \"Corrupt PNG\");\n            fill = lencodes[n-1];\n         } else if (c == 17)\n            c = stbi__zreceive(a,3)+3;\n         else {\n            STBI_ASSERT(c == 18);\n            c = stbi__zreceive(a,7)+11;\n         }\n         if (ntot - n < c) return stbi__err(\"bad codelengths\", \"Corrupt PNG\");\n         memset(lencodes+n, fill, c);\n         n += c;\n      }\n   }\n   if (n != ntot) return stbi__err(\"bad codelengths\",\"Corrupt PNG\");\n   if (!stbi__zbuild_huffman(&a->z_length, lencodes, hlit)) return 0;\n   if (!stbi__zbuild_huffman(&a->z_distance, lencodes+hlit, hdist)) return 0;\n   return 1;\n}\n\nstatic int stbi__parse_uncompressed_block(stbi__zbuf *a)\n{\n   stbi_uc header[4];\n   int len,nlen,k;\n   if (a->num_bits & 7)\n      stbi__zreceive(a, a->num_bits & 7); // discard\n   // drain the bit-packed data into header\n   k = 0;\n   while (a->num_bits > 0) {\n      header[k++] = (stbi_uc) (a->code_buffer & 255); // suppress MSVC run-time check\n      a->code_buffer >>= 8;\n      a->num_bits -= 8;\n   }\n   STBI_ASSERT(a->num_bits == 0);\n   // now fill header the normal way\n   while (k < 4)\n      header[k++] = stbi__zget8(a);\n   len  = header[1] * 256 + header[0];\n   nlen = header[3] * 256 + header[2];\n   if (nlen != (len ^ 0xffff)) return stbi__err(\"zlib corrupt\",\"Corrupt PNG\");\n   if (a->zbuffer + len > a->zbuffer_end) return stbi__err(\"read past buffer\",\"Corrupt PNG\");\n   if (a->zout + len > a->zout_end)\n      if (!stbi__zexpand(a, a->zout, len)) return 0;\n   memcpy(a->zout, a->zbuffer, len);\n   a->zbuffer += len;\n   a->zout += len;\n   return 1;\n}\n\nstatic int stbi__parse_zlib_header(stbi__zbuf *a)\n{\n   int cmf   = stbi__zget8(a);\n   int cm    = cmf & 15;\n   /* int cinfo = cmf >> 4; */\n   int flg   = stbi__zget8(a);\n   if ((cmf*256+flg) % 31 != 0) return stbi__err(\"bad zlib header\",\"Corrupt PNG\"); // zlib spec\n   if (flg & 32) return stbi__err(\"no preset dict\",\"Corrupt PNG\"); // preset dictionary not allowed in png\n   if (cm != 8) return stbi__err(\"bad compression\",\"Corrupt PNG\"); // DEFLATE required for png\n   // window = 1 << (8 + cinfo)... but who cares, we fully buffer output\n   return 1;\n}\n\nstatic const stbi_uc stbi__zdefault_length[288] =\n{\n   8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,\n   8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,\n   8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,\n   8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,\n   8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,\n   9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,\n   9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,\n   9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,\n   7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8\n};\nstatic const stbi_uc stbi__zdefault_distance[32] =\n{\n   5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5\n};\n/*\nInit algorithm:\n{\n   int i;   // use <= to match clearly with spec\n   for (i=0; i <= 143; ++i)     stbi__zdefault_length[i]   = 8;\n   for (   ; i <= 255; ++i)     stbi__zdefault_length[i]   = 9;\n   for (   ; i <= 279; ++i)     stbi__zdefault_length[i]   = 7;\n   for (   ; i <= 287; ++i)     stbi__zdefault_length[i]   = 8;\n\n   for (i=0; i <=  31; ++i)     stbi__zdefault_distance[i] = 5;\n}\n*/\n\nstatic int stbi__parse_zlib(stbi__zbuf *a, int parse_header)\n{\n   int final, type;\n   if (parse_header)\n      if (!stbi__parse_zlib_header(a)) return 0;\n   a->num_bits = 0;\n   a->code_buffer = 0;\n   do {\n      final = stbi__zreceive(a,1);\n      type = stbi__zreceive(a,2);\n      if (type == 0) {\n         if (!stbi__parse_uncompressed_block(a)) return 0;\n      } else if (type == 3) {\n         return 0;\n      } else {\n         if (type == 1) {\n            // use fixed code lengths\n            if (!stbi__zbuild_huffman(&a->z_length  , stbi__zdefault_length  , 288)) return 0;\n            if (!stbi__zbuild_huffman(&a->z_distance, stbi__zdefault_distance,  32)) return 0;\n         } else {\n            if (!stbi__compute_huffman_codes(a)) return 0;\n         }\n         if (!stbi__parse_huffman_block(a)) return 0;\n      }\n   } while (!final);\n   return 1;\n}\n\nstatic int stbi__do_zlib(stbi__zbuf *a, char *obuf, int olen, int exp, int parse_header)\n{\n   a->zout_start = obuf;\n   a->zout       = obuf;\n   a->zout_end   = obuf + olen;\n   a->z_expandable = exp;\n\n   return stbi__parse_zlib(a, parse_header);\n}\n\nSTBIDEF char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int len, int initial_size, int *outlen)\n{\n   stbi__zbuf a;\n   char *p = (char *) stbi__malloc(initial_size);\n   if (p == NULL) return NULL;\n   a.zbuffer = (stbi_uc *) buffer;\n   a.zbuffer_end = (stbi_uc *) buffer + len;\n   if (stbi__do_zlib(&a, p, initial_size, 1, 1)) {\n      if (outlen) *outlen = (int) (a.zout - a.zout_start);\n      return a.zout_start;\n   } else {\n      STBI_FREE(a.zout_start);\n      return NULL;\n   }\n}\n\nSTBIDEF char *stbi_zlib_decode_malloc(char const *buffer, int len, int *outlen)\n{\n   return stbi_zlib_decode_malloc_guesssize(buffer, len, 16384, outlen);\n}\n\nSTBIDEF char *stbi_zlib_decode_malloc_guesssize_headerflag(const char *buffer, int len, int initial_size, int *outlen, int parse_header)\n{\n   stbi__zbuf a;\n   char *p = (char *) stbi__malloc(initial_size);\n   if (p == NULL) return NULL;\n   a.zbuffer = (stbi_uc *) buffer;\n   a.zbuffer_end = (stbi_uc *) buffer + len;\n   if (stbi__do_zlib(&a, p, initial_size, 1, parse_header)) {\n      if (outlen) *outlen = (int) (a.zout - a.zout_start);\n      return a.zout_start;\n   } else {\n      STBI_FREE(a.zout_start);\n      return NULL;\n   }\n}\n\nSTBIDEF int stbi_zlib_decode_buffer(char *obuffer, int olen, char const *ibuffer, int ilen)\n{\n   stbi__zbuf a;\n   a.zbuffer = (stbi_uc *) ibuffer;\n   a.zbuffer_end = (stbi_uc *) ibuffer + ilen;\n   if (stbi__do_zlib(&a, obuffer, olen, 0, 1))\n      return (int) (a.zout - a.zout_start);\n   else\n      return -1;\n}\n\nSTBIDEF char *stbi_zlib_decode_noheader_malloc(char const *buffer, int len, int *outlen)\n{\n   stbi__zbuf a;\n   char *p = (char *) stbi__malloc(16384);\n   if (p == NULL) return NULL;\n   a.zbuffer = (stbi_uc *) buffer;\n   a.zbuffer_end = (stbi_uc *) buffer+len;\n   if (stbi__do_zlib(&a, p, 16384, 1, 0)) {\n      if (outlen) *outlen = (int) (a.zout - a.zout_start);\n      return a.zout_start;\n   } else {\n      STBI_FREE(a.zout_start);\n      return NULL;\n   }\n}\n\nSTBIDEF int stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, const char *ibuffer, int ilen)\n{\n   stbi__zbuf a;\n   a.zbuffer = (stbi_uc *) ibuffer;\n   a.zbuffer_end = (stbi_uc *) ibuffer + ilen;\n   if (stbi__do_zlib(&a, obuffer, olen, 0, 0))\n      return (int) (a.zout - a.zout_start);\n   else\n      return -1;\n}\n#endif\n\n// public domain \"baseline\" PNG decoder   v0.10  Sean Barrett 2006-11-18\n//    simple implementation\n//      - only 8-bit samples\n//      - no CRC checking\n//      - allocates lots of intermediate memory\n//        - avoids problem of streaming data between subsystems\n//        - avoids explicit window management\n//    performance\n//      - uses stb_zlib, a PD zlib implementation with fast huffman decoding\n\n#ifndef STBI_NO_PNG\ntypedef struct\n{\n   stbi__uint32 length;\n   stbi__uint32 type;\n} stbi__pngchunk;\n\nstatic stbi__pngchunk stbi__get_chunk_header(stbi__context *s)\n{\n   stbi__pngchunk c;\n   c.length = stbi__get32be(s);\n   c.type   = stbi__get32be(s);\n   return c;\n}\n\nstatic int stbi__check_png_header(stbi__context *s)\n{\n   static const stbi_uc png_sig[8] = { 137,80,78,71,13,10,26,10 };\n   int i;\n   for (i=0; i < 8; ++i)\n      if (stbi__get8(s) != png_sig[i]) return stbi__err(\"bad png sig\",\"Not a PNG\");\n   return 1;\n}\n\ntypedef struct\n{\n   stbi__context *s;\n   stbi_uc *idata, *expanded, *out;\n   int depth;\n} stbi__png;\n\n\nenum {\n   STBI__F_none=0,\n   STBI__F_sub=1,\n   STBI__F_up=2,\n   STBI__F_avg=3,\n   STBI__F_paeth=4,\n   // synthetic filters used for first scanline to avoid needing a dummy row of 0s\n   STBI__F_avg_first,\n   STBI__F_paeth_first\n};\n\nstatic stbi_uc first_row_filter[5] =\n{\n   STBI__F_none,\n   STBI__F_sub,\n   STBI__F_none,\n   STBI__F_avg_first,\n   STBI__F_paeth_first\n};\n\nstatic int stbi__paeth(int a, int b, int c)\n{\n   int p = a + b - c;\n   int pa = abs(p-a);\n   int pb = abs(p-b);\n   int pc = abs(p-c);\n   if (pa <= pb && pa <= pc) return a;\n   if (pb <= pc) return b;\n   return c;\n}\n\nstatic const stbi_uc stbi__depth_scale_table[9] = { 0, 0xff, 0x55, 0, 0x11, 0,0,0, 0x01 };\n\n// create the png data from post-deflated data\nstatic int stbi__create_png_image_raw(stbi__png *a, stbi_uc *raw, stbi__uint32 raw_len, int out_n, stbi__uint32 x, stbi__uint32 y, int depth, int color)\n{\n   int bytes = (depth == 16? 2 : 1);\n   stbi__context *s = a->s;\n   stbi__uint32 i,j,stride = x*out_n*bytes;\n   stbi__uint32 img_len, img_width_bytes;\n   int k;\n   int img_n = s->img_n; // copy it into a local for later\n\n   int output_bytes = out_n*bytes;\n   int filter_bytes = img_n*bytes;\n   int width = x;\n\n   STBI_ASSERT(out_n == s->img_n || out_n == s->img_n+1);\n   a->out = (stbi_uc *) stbi__malloc_mad3(x, y, output_bytes, 0); // extra bytes to write off the end into\n   if (!a->out) return stbi__err(\"outofmem\", \"Out of memory\");\n\n   if (!stbi__mad3sizes_valid(img_n, x, depth, 7)) return stbi__err(\"too large\", \"Corrupt PNG\");\n   img_width_bytes = (((img_n * x * depth) + 7) >> 3);\n   img_len = (img_width_bytes + 1) * y;\n\n   // we used to check for exact match between raw_len and img_len on non-interlaced PNGs,\n   // but issue #276 reported a PNG in the wild that had extra data at the end (all zeros),\n   // so just check for raw_len < img_len always.\n   if (raw_len < img_len) return stbi__err(\"not enough pixels\",\"Corrupt PNG\");\n\n   for (j=0; j < y; ++j) {\n      stbi_uc *cur = a->out + stride*j;\n      stbi_uc *prior;\n      int filter = *raw++;\n\n      if (filter > 4)\n         return stbi__err(\"invalid filter\",\"Corrupt PNG\");\n\n      if (depth < 8) {\n         STBI_ASSERT(img_width_bytes <= x);\n         cur += x*out_n - img_width_bytes; // store output to the rightmost img_len bytes, so we can decode in place\n         filter_bytes = 1;\n         width = img_width_bytes;\n      }\n      prior = cur - stride; // bugfix: need to compute this after 'cur +=' computation above\n\n      // if first row, use special filter that doesn't sample previous row\n      if (j == 0) filter = first_row_filter[filter];\n\n      // handle first byte explicitly\n      for (k=0; k < filter_bytes; ++k) {\n         switch (filter) {\n            case STBI__F_none       : cur[k] = raw[k]; break;\n            case STBI__F_sub        : cur[k] = raw[k]; break;\n            case STBI__F_up         : cur[k] = STBI__BYTECAST(raw[k] + prior[k]); break;\n            case STBI__F_avg        : cur[k] = STBI__BYTECAST(raw[k] + (prior[k]>>1)); break;\n            case STBI__F_paeth      : cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(0,prior[k],0)); break;\n            case STBI__F_avg_first  : cur[k] = raw[k]; break;\n            case STBI__F_paeth_first: cur[k] = raw[k]; break;\n         }\n      }\n\n      if (depth == 8) {\n         if (img_n != out_n)\n            cur[img_n] = 255; // first pixel\n         raw += img_n;\n         cur += out_n;\n         prior += out_n;\n      } else if (depth == 16) {\n         if (img_n != out_n) {\n            cur[filter_bytes]   = 255; // first pixel top byte\n            cur[filter_bytes+1] = 255; // first pixel bottom byte\n         }\n         raw += filter_bytes;\n         cur += output_bytes;\n         prior += output_bytes;\n      } else {\n         raw += 1;\n         cur += 1;\n         prior += 1;\n      }\n\n      // this is a little gross, so that we don't switch per-pixel or per-component\n      if (depth < 8 || img_n == out_n) {\n         int nk = (width - 1)*filter_bytes;\n         #define STBI__CASE(f) \\\n             case f:     \\\n                for (k=0; k < nk; ++k)\n         switch (filter) {\n            // \"none\" filter turns into a memcpy here; make that explicit.\n            case STBI__F_none:         memcpy(cur, raw, nk); break;\n            STBI__CASE(STBI__F_sub)          { cur[k] = STBI__BYTECAST(raw[k] + cur[k-filter_bytes]); } break;\n            STBI__CASE(STBI__F_up)           { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break;\n            STBI__CASE(STBI__F_avg)          { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k-filter_bytes])>>1)); } break;\n            STBI__CASE(STBI__F_paeth)        { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],prior[k],prior[k-filter_bytes])); } break;\n            STBI__CASE(STBI__F_avg_first)    { cur[k] = STBI__BYTECAST(raw[k] + (cur[k-filter_bytes] >> 1)); } break;\n            STBI__CASE(STBI__F_paeth_first)  { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],0,0)); } break;\n         }\n         #undef STBI__CASE\n         raw += nk;\n      } else {\n         STBI_ASSERT(img_n+1 == out_n);\n         #define STBI__CASE(f) \\\n             case f:     \\\n                for (i=x-1; i >= 1; --i, cur[filter_bytes]=255,raw+=filter_bytes,cur+=output_bytes,prior+=output_bytes) \\\n                   for (k=0; k < filter_bytes; ++k)\n         switch (filter) {\n            STBI__CASE(STBI__F_none)         { cur[k] = raw[k]; } break;\n            STBI__CASE(STBI__F_sub)          { cur[k] = STBI__BYTECAST(raw[k] + cur[k- output_bytes]); } break;\n            STBI__CASE(STBI__F_up)           { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break;\n            STBI__CASE(STBI__F_avg)          { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k- output_bytes])>>1)); } break;\n            STBI__CASE(STBI__F_paeth)        { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],prior[k],prior[k- output_bytes])); } break;\n            STBI__CASE(STBI__F_avg_first)    { cur[k] = STBI__BYTECAST(raw[k] + (cur[k- output_bytes] >> 1)); } break;\n            STBI__CASE(STBI__F_paeth_first)  { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],0,0)); } break;\n         }\n         #undef STBI__CASE\n\n         // the loop above sets the high byte of the pixels' alpha, but for\n         // 16 bit png files we also need the low byte set. we'll do that here.\n         if (depth == 16) {\n            cur = a->out + stride*j; // start at the beginning of the row again\n            for (i=0; i < x; ++i,cur+=output_bytes) {\n               cur[filter_bytes+1] = 255;\n            }\n         }\n      }\n   }\n\n   // we make a separate pass to expand bits to pixels; for performance,\n   // this could run two scanlines behind the above code, so it won't\n   // intefere with filtering but will still be in the cache.\n   if (depth < 8) {\n      for (j=0; j < y; ++j) {\n         stbi_uc *cur = a->out + stride*j;\n         stbi_uc *in  = a->out + stride*j + x*out_n - img_width_bytes;\n         // unpack 1/2/4-bit into a 8-bit buffer. allows us to keep the common 8-bit path optimal at minimal cost for 1/2/4-bit\n         // png guarante byte alignment, if width is not multiple of 8/4/2 we'll decode dummy trailing data that will be skipped in the later loop\n         stbi_uc scale = (color == 0) ? stbi__depth_scale_table[depth] : 1; // scale grayscale values to 0..255 range\n\n         // note that the final byte might overshoot and write more data than desired.\n         // we can allocate enough data that this never writes out of memory, but it\n         // could also overwrite the next scanline. can it overwrite non-empty data\n         // on the next scanline? yes, consider 1-pixel-wide scanlines with 1-bit-per-pixel.\n         // so we need to explicitly clamp the final ones\n\n         if (depth == 4) {\n            for (k=x*img_n; k >= 2; k-=2, ++in) {\n               *cur++ = scale * ((*in >> 4)       );\n               *cur++ = scale * ((*in     ) & 0x0f);\n            }\n            if (k > 0) *cur++ = scale * ((*in >> 4)       );\n         } else if (depth == 2) {\n            for (k=x*img_n; k >= 4; k-=4, ++in) {\n               *cur++ = scale * ((*in >> 6)       );\n               *cur++ = scale * ((*in >> 4) & 0x03);\n               *cur++ = scale * ((*in >> 2) & 0x03);\n               *cur++ = scale * ((*in     ) & 0x03);\n            }\n            if (k > 0) *cur++ = scale * ((*in >> 6)       );\n            if (k > 1) *cur++ = scale * ((*in >> 4) & 0x03);\n            if (k > 2) *cur++ = scale * ((*in >> 2) & 0x03);\n         } else if (depth == 1) {\n            for (k=x*img_n; k >= 8; k-=8, ++in) {\n               *cur++ = scale * ((*in >> 7)       );\n               *cur++ = scale * ((*in >> 6) & 0x01);\n               *cur++ = scale * ((*in >> 5) & 0x01);\n               *cur++ = scale * ((*in >> 4) & 0x01);\n               *cur++ = scale * ((*in >> 3) & 0x01);\n               *cur++ = scale * ((*in >> 2) & 0x01);\n               *cur++ = scale * ((*in >> 1) & 0x01);\n               *cur++ = scale * ((*in     ) & 0x01);\n            }\n            if (k > 0) *cur++ = scale * ((*in >> 7)       );\n            if (k > 1) *cur++ = scale * ((*in >> 6) & 0x01);\n            if (k > 2) *cur++ = scale * ((*in >> 5) & 0x01);\n            if (k > 3) *cur++ = scale * ((*in >> 4) & 0x01);\n            if (k > 4) *cur++ = scale * ((*in >> 3) & 0x01);\n            if (k > 5) *cur++ = scale * ((*in >> 2) & 0x01);\n            if (k > 6) *cur++ = scale * ((*in >> 1) & 0x01);\n         }\n         if (img_n != out_n) {\n            int q;\n            // insert alpha = 255\n            cur = a->out + stride*j;\n            if (img_n == 1) {\n               for (q=x-1; q >= 0; --q) {\n                  cur[q*2+1] = 255;\n                  cur[q*2+0] = cur[q];\n               }\n            } else {\n               STBI_ASSERT(img_n == 3);\n               for (q=x-1; q >= 0; --q) {\n                  cur[q*4+3] = 255;\n                  cur[q*4+2] = cur[q*3+2];\n                  cur[q*4+1] = cur[q*3+1];\n                  cur[q*4+0] = cur[q*3+0];\n               }\n            }\n         }\n      }\n   } else if (depth == 16) {\n      // force the image data from big-endian to platform-native.\n      // this is done in a separate pass due to the decoding relying\n      // on the data being untouched, but could probably be done\n      // per-line during decode if care is taken.\n      stbi_uc *cur = a->out;\n      stbi__uint16 *cur16 = (stbi__uint16*)cur;\n\n      for(i=0; i < x*y*out_n; ++i,cur16++,cur+=2) {\n         *cur16 = (cur[0] << 8) | cur[1];\n      }\n   }\n\n   return 1;\n}\n\nstatic int stbi__create_png_image(stbi__png *a, stbi_uc *image_data, stbi__uint32 image_data_len, int out_n, int depth, int color, int interlaced)\n{\n   int bytes = (depth == 16 ? 2 : 1);\n   int out_bytes = out_n * bytes;\n   stbi_uc *final;\n   int p;\n   if (!interlaced)\n      return stbi__create_png_image_raw(a, image_data, image_data_len, out_n, a->s->img_x, a->s->img_y, depth, color);\n\n   // de-interlacing\n   final = (stbi_uc *) stbi__malloc_mad3(a->s->img_x, a->s->img_y, out_bytes, 0);\n   for (p=0; p < 7; ++p) {\n      int xorig[] = { 0,4,0,2,0,1,0 };\n      int yorig[] = { 0,0,4,0,2,0,1 };\n      int xspc[]  = { 8,8,4,4,2,2,1 };\n      int yspc[]  = { 8,8,8,4,4,2,2 };\n      int i,j,x,y;\n      // pass1_x[4] = 0, pass1_x[5] = 1, pass1_x[12] = 1\n      x = (a->s->img_x - xorig[p] + xspc[p]-1) / xspc[p];\n      y = (a->s->img_y - yorig[p] + yspc[p]-1) / yspc[p];\n      if (x && y) {\n         stbi__uint32 img_len = ((((a->s->img_n * x * depth) + 7) >> 3) + 1) * y;\n         if (!stbi__create_png_image_raw(a, image_data, image_data_len, out_n, x, y, depth, color)) {\n            STBI_FREE(final);\n            return 0;\n         }\n         for (j=0; j < y; ++j) {\n            for (i=0; i < x; ++i) {\n               int out_y = j*yspc[p]+yorig[p];\n               int out_x = i*xspc[p]+xorig[p];\n               memcpy(final + out_y*a->s->img_x*out_bytes + out_x*out_bytes,\n                      a->out + (j*x+i)*out_bytes, out_bytes);\n            }\n         }\n         STBI_FREE(a->out);\n         image_data += img_len;\n         image_data_len -= img_len;\n      }\n   }\n   a->out = final;\n\n   return 1;\n}\n\nstatic int stbi__compute_transparency(stbi__png *z, stbi_uc tc[3], int out_n)\n{\n   stbi__context *s = z->s;\n   stbi__uint32 i, pixel_count = s->img_x * s->img_y;\n   stbi_uc *p = z->out;\n\n   // compute color-based transparency, assuming we've\n   // already got 255 as the alpha value in the output\n   STBI_ASSERT(out_n == 2 || out_n == 4);\n\n   if (out_n == 2) {\n      for (i=0; i < pixel_count; ++i) {\n         p[1] = (p[0] == tc[0] ? 0 : 255);\n         p += 2;\n      }\n   } else {\n      for (i=0; i < pixel_count; ++i) {\n         if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2])\n            p[3] = 0;\n         p += 4;\n      }\n   }\n   return 1;\n}\n\nstatic int stbi__compute_transparency16(stbi__png *z, stbi__uint16 tc[3], int out_n)\n{\n   stbi__context *s = z->s;\n   stbi__uint32 i, pixel_count = s->img_x * s->img_y;\n   stbi__uint16 *p = (stbi__uint16*) z->out;\n\n   // compute color-based transparency, assuming we've\n   // already got 65535 as the alpha value in the output\n   STBI_ASSERT(out_n == 2 || out_n == 4);\n\n   if (out_n == 2) {\n      for (i = 0; i < pixel_count; ++i) {\n         p[1] = (p[0] == tc[0] ? 0 : 65535);\n         p += 2;\n      }\n   } else {\n      for (i = 0; i < pixel_count; ++i) {\n         if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2])\n            p[3] = 0;\n         p += 4;\n      }\n   }\n   return 1;\n}\n\nstatic int stbi__expand_png_palette(stbi__png *a, stbi_uc *palette, int len, int pal_img_n)\n{\n   stbi__uint32 i, pixel_count = a->s->img_x * a->s->img_y;\n   stbi_uc *p, *temp_out, *orig = a->out;\n\n   p = (stbi_uc *) stbi__malloc_mad2(pixel_count, pal_img_n, 0);\n   if (p == NULL) return stbi__err(\"outofmem\", \"Out of memory\");\n\n   // between here and free(out) below, exitting would leak\n   temp_out = p;\n\n   if (pal_img_n == 3) {\n      for (i=0; i < pixel_count; ++i) {\n         int n = orig[i]*4;\n         p[0] = palette[n  ];\n         p[1] = palette[n+1];\n         p[2] = palette[n+2];\n         p += 3;\n      }\n   } else {\n      for (i=0; i < pixel_count; ++i) {\n         int n = orig[i]*4;\n         p[0] = palette[n  ];\n         p[1] = palette[n+1];\n         p[2] = palette[n+2];\n         p[3] = palette[n+3];\n         p += 4;\n      }\n   }\n   STBI_FREE(a->out);\n   a->out = temp_out;\n\n   STBI_NOTUSED(len);\n\n   return 1;\n}\n\nstatic int stbi__unpremultiply_on_load = 0;\nstatic int stbi__de_iphone_flag = 0;\n\nSTBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply)\n{\n   stbi__unpremultiply_on_load = flag_true_if_should_unpremultiply;\n}\n\nSTBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert)\n{\n   stbi__de_iphone_flag = flag_true_if_should_convert;\n}\n\nstatic void stbi__de_iphone(stbi__png *z)\n{\n   stbi__context *s = z->s;\n   stbi__uint32 i, pixel_count = s->img_x * s->img_y;\n   stbi_uc *p = z->out;\n\n   if (s->img_out_n == 3) {  // convert bgr to rgb\n      for (i=0; i < pixel_count; ++i) {\n         stbi_uc t = p[0];\n         p[0] = p[2];\n         p[2] = t;\n         p += 3;\n      }\n   } else {\n      STBI_ASSERT(s->img_out_n == 4);\n      if (stbi__unpremultiply_on_load) {\n         // convert bgr to rgb and unpremultiply\n         for (i=0; i < pixel_count; ++i) {\n            stbi_uc a = p[3];\n            stbi_uc t = p[0];\n            if (a) {\n               stbi_uc half = a / 2;\n               p[0] = (p[2] * 255 + half) / a;\n               p[1] = (p[1] * 255 + half) / a;\n               p[2] = ( t   * 255 + half) / a;\n            } else {\n               p[0] = p[2];\n               p[2] = t;\n            }\n            p += 4;\n         }\n      } else {\n         // convert bgr to rgb\n         for (i=0; i < pixel_count; ++i) {\n            stbi_uc t = p[0];\n            p[0] = p[2];\n            p[2] = t;\n            p += 4;\n         }\n      }\n   }\n}\n\n#define STBI__PNG_TYPE(a,b,c,d)  (((unsigned) (a) << 24) + ((unsigned) (b) << 16) + ((unsigned) (c) << 8) + (unsigned) (d))\n\nstatic int stbi__parse_png_file(stbi__png *z, int scan, int req_comp)\n{\n   stbi_uc palette[1024], pal_img_n=0;\n   stbi_uc has_trans=0, tc[3];\n   stbi__uint16 tc16[3];\n   stbi__uint32 ioff=0, idata_limit=0, i, pal_len=0;\n   int first=1,k,interlace=0, color=0, is_iphone=0;\n   stbi__context *s = z->s;\n\n   z->expanded = NULL;\n   z->idata = NULL;\n   z->out = NULL;\n\n   if (!stbi__check_png_header(s)) return 0;\n\n   if (scan == STBI__SCAN_type) return 1;\n\n   for (;;) {\n      stbi__pngchunk c = stbi__get_chunk_header(s);\n      switch (c.type) {\n         case STBI__PNG_TYPE('C','g','B','I'):\n            is_iphone = 1;\n            stbi__skip(s, c.length);\n            break;\n         case STBI__PNG_TYPE('I','H','D','R'): {\n            int comp,filter;\n            if (!first) return stbi__err(\"multiple IHDR\",\"Corrupt PNG\");\n            first = 0;\n            if (c.length != 13) return stbi__err(\"bad IHDR len\",\"Corrupt PNG\");\n            s->img_x = stbi__get32be(s); if (s->img_x > (1 << 24)) return stbi__err(\"too large\",\"Very large image (corrupt?)\");\n            s->img_y = stbi__get32be(s); if (s->img_y > (1 << 24)) return stbi__err(\"too large\",\"Very large image (corrupt?)\");\n            z->depth = stbi__get8(s);  if (z->depth != 1 && z->depth != 2 && z->depth != 4 && z->depth != 8 && z->depth != 16)  return stbi__err(\"1/2/4/8/16-bit only\",\"PNG not supported: 1/2/4/8/16-bit only\");\n            color = stbi__get8(s);  if (color > 6)         return stbi__err(\"bad ctype\",\"Corrupt PNG\");\n            if (color == 3 && z->depth == 16)                  return stbi__err(\"bad ctype\",\"Corrupt PNG\");\n            if (color == 3) pal_img_n = 3; else if (color & 1) return stbi__err(\"bad ctype\",\"Corrupt PNG\");\n            comp  = stbi__get8(s);  if (comp) return stbi__err(\"bad comp method\",\"Corrupt PNG\");\n            filter= stbi__get8(s);  if (filter) return stbi__err(\"bad filter method\",\"Corrupt PNG\");\n            interlace = stbi__get8(s); if (interlace>1) return stbi__err(\"bad interlace method\",\"Corrupt PNG\");\n            if (!s->img_x || !s->img_y) return stbi__err(\"0-pixel image\",\"Corrupt PNG\");\n            if (!pal_img_n) {\n               s->img_n = (color & 2 ? 3 : 1) + (color & 4 ? 1 : 0);\n               if ((1 << 30) / s->img_x / s->img_n < s->img_y) return stbi__err(\"too large\", \"Image too large to decode\");\n               if (scan == STBI__SCAN_header) return 1;\n            } else {\n               // if paletted, then pal_n is our final components, and\n               // img_n is # components to decompress/filter.\n               s->img_n = 1;\n               if ((1 << 30) / s->img_x / 4 < s->img_y) return stbi__err(\"too large\",\"Corrupt PNG\");\n               // if SCAN_header, have to scan to see if we have a tRNS\n            }\n            break;\n         }\n\n         case STBI__PNG_TYPE('P','L','T','E'):  {\n            if (first) return stbi__err(\"first not IHDR\", \"Corrupt PNG\");\n            if (c.length > 256*3) return stbi__err(\"invalid PLTE\",\"Corrupt PNG\");\n            pal_len = c.length / 3;\n            if (pal_len * 3 != c.length) return stbi__err(\"invalid PLTE\",\"Corrupt PNG\");\n            for (i=0; i < pal_len; ++i) {\n               palette[i*4+0] = stbi__get8(s);\n               palette[i*4+1] = stbi__get8(s);\n               palette[i*4+2] = stbi__get8(s);\n               palette[i*4+3] = 255;\n            }\n            break;\n         }\n\n         case STBI__PNG_TYPE('t','R','N','S'): {\n            if (first) return stbi__err(\"first not IHDR\", \"Corrupt PNG\");\n            if (z->idata) return stbi__err(\"tRNS after IDAT\",\"Corrupt PNG\");\n            if (pal_img_n) {\n               if (scan == STBI__SCAN_header) { s->img_n = 4; return 1; }\n               if (pal_len == 0) return stbi__err(\"tRNS before PLTE\",\"Corrupt PNG\");\n               if (c.length > pal_len) return stbi__err(\"bad tRNS len\",\"Corrupt PNG\");\n               pal_img_n = 4;\n               for (i=0; i < c.length; ++i)\n                  palette[i*4+3] = stbi__get8(s);\n            } else {\n               if (!(s->img_n & 1)) return stbi__err(\"tRNS with alpha\",\"Corrupt PNG\");\n               if (c.length != (stbi__uint32) s->img_n*2) return stbi__err(\"bad tRNS len\",\"Corrupt PNG\");\n               has_trans = 1;\n               if (z->depth == 16) {\n                  for (k = 0; k < s->img_n; ++k) tc16[k] = (stbi__uint16)stbi__get16be(s); // copy the values as-is\n               } else {\n                  for (k = 0; k < s->img_n; ++k) tc[k] = (stbi_uc)(stbi__get16be(s) & 255) * stbi__depth_scale_table[z->depth]; // non 8-bit images will be larger\n               }\n            }\n            break;\n         }\n\n         case STBI__PNG_TYPE('I','D','A','T'): {\n            if (first) return stbi__err(\"first not IHDR\", \"Corrupt PNG\");\n            if (pal_img_n && !pal_len) return stbi__err(\"no PLTE\",\"Corrupt PNG\");\n            if (scan == STBI__SCAN_header) { s->img_n = pal_img_n; return 1; }\n            if ((int)(ioff + c.length) < (int)ioff) return 0;\n            if (ioff + c.length > idata_limit) {\n               stbi__uint32 idata_limit_old = idata_limit;\n               stbi_uc *p;\n               if (idata_limit == 0) idata_limit = c.length > 4096 ? c.length : 4096;\n               while (ioff + c.length > idata_limit)\n                  idata_limit *= 2;\n               STBI_NOTUSED(idata_limit_old);\n               p = (stbi_uc *) STBI_REALLOC_SIZED(z->idata, idata_limit_old, idata_limit); if (p == NULL) return stbi__err(\"outofmem\", \"Out of memory\");\n               z->idata = p;\n            }\n            if (!stbi__getn(s, z->idata+ioff,c.length)) return stbi__err(\"outofdata\",\"Corrupt PNG\");\n            ioff += c.length;\n            break;\n         }\n\n         case STBI__PNG_TYPE('I','E','N','D'): {\n            stbi__uint32 raw_len, bpl;\n            if (first) return stbi__err(\"first not IHDR\", \"Corrupt PNG\");\n            if (scan != STBI__SCAN_load) return 1;\n            if (z->idata == NULL) return stbi__err(\"no IDAT\",\"Corrupt PNG\");\n            // initial guess for decoded data size to avoid unnecessary reallocs\n            bpl = (s->img_x * z->depth + 7) / 8; // bytes per line, per component\n            raw_len = bpl * s->img_y * s->img_n /* pixels */ + s->img_y /* filter mode per row */;\n            z->expanded = (stbi_uc *) stbi_zlib_decode_malloc_guesssize_headerflag((char *) z->idata, ioff, raw_len, (int *) &raw_len, !is_iphone);\n            if (z->expanded == NULL) return 0; // zlib should set error\n            STBI_FREE(z->idata); z->idata = NULL;\n            if ((req_comp == s->img_n+1 && req_comp != 3 && !pal_img_n) || has_trans)\n               s->img_out_n = s->img_n+1;\n            else\n               s->img_out_n = s->img_n;\n            if (!stbi__create_png_image(z, z->expanded, raw_len, s->img_out_n, z->depth, color, interlace)) return 0;\n            if (has_trans) {\n               if (z->depth == 16) {\n                  if (!stbi__compute_transparency16(z, tc16, s->img_out_n)) return 0;\n               } else {\n                  if (!stbi__compute_transparency(z, tc, s->img_out_n)) return 0;\n               }\n            }\n            if (is_iphone && stbi__de_iphone_flag && s->img_out_n > 2)\n               stbi__de_iphone(z);\n            if (pal_img_n) {\n               // pal_img_n == 3 or 4\n               s->img_n = pal_img_n; // record the actual colors we had\n               s->img_out_n = pal_img_n;\n               if (req_comp >= 3) s->img_out_n = req_comp;\n               if (!stbi__expand_png_palette(z, palette, pal_len, s->img_out_n))\n                  return 0;\n            } else if (has_trans) {\n               // non-paletted image with tRNS -> source image has (constant) alpha\n               ++s->img_n;\n            }\n            STBI_FREE(z->expanded); z->expanded = NULL;\n            return 1;\n         }\n\n         default:\n            // if critical, fail\n            if (first) return stbi__err(\"first not IHDR\", \"Corrupt PNG\");\n            if ((c.type & (1 << 29)) == 0) {\n               #ifndef STBI_NO_FAILURE_STRINGS\n               // not threadsafe\n               static char invalid_chunk[] = \"XXXX PNG chunk not known\";\n               invalid_chunk[0] = STBI__BYTECAST(c.type >> 24);\n               invalid_chunk[1] = STBI__BYTECAST(c.type >> 16);\n               invalid_chunk[2] = STBI__BYTECAST(c.type >>  8);\n               invalid_chunk[3] = STBI__BYTECAST(c.type >>  0);\n               #endif\n               return stbi__err(invalid_chunk, \"PNG not supported: unknown PNG chunk type\");\n            }\n            stbi__skip(s, c.length);\n            break;\n      }\n      // end of PNG chunk, read and skip CRC\n      stbi__get32be(s);\n   }\n}\n\nstatic void *stbi__do_png(stbi__png *p, int *x, int *y, int *n, int req_comp, stbi__result_info *ri)\n{\n   void *result=NULL;\n   if (req_comp < 0 || req_comp > 4) return stbi__errpuc(\"bad req_comp\", \"Internal error\");\n   if (stbi__parse_png_file(p, STBI__SCAN_load, req_comp)) {\n      if (p->depth < 8)\n         ri->bits_per_channel = 8;\n      else\n         ri->bits_per_channel = p->depth;\n      result = p->out;\n      p->out = NULL;\n      if (req_comp && req_comp != p->s->img_out_n) {\n         if (ri->bits_per_channel == 8)\n            result = stbi__convert_format((unsigned char *) result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y);\n         else\n            result = stbi__convert_format16((stbi__uint16 *) result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y);\n         p->s->img_out_n = req_comp;\n         if (result == NULL) return result;\n      }\n      *x = p->s->img_x;\n      *y = p->s->img_y;\n      if (n) *n = p->s->img_n;\n   }\n   STBI_FREE(p->out);      p->out      = NULL;\n   STBI_FREE(p->expanded); p->expanded = NULL;\n   STBI_FREE(p->idata);    p->idata    = NULL;\n\n   return result;\n}\n\nstatic void *stbi__png_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri)\n{\n   stbi__png p;\n   p.s = s;\n   return stbi__do_png(&p, x,y,comp,req_comp, ri);\n}\n\nstatic int stbi__png_test(stbi__context *s)\n{\n   int r;\n   r = stbi__check_png_header(s);\n   stbi__rewind(s);\n   return r;\n}\n\nstatic int stbi__png_info_raw(stbi__png *p, int *x, int *y, int *comp)\n{\n   if (!stbi__parse_png_file(p, STBI__SCAN_header, 0)) {\n      stbi__rewind( p->s );\n      return 0;\n   }\n   if (x) *x = p->s->img_x;\n   if (y) *y = p->s->img_y;\n   if (comp) *comp = p->s->img_n;\n   return 1;\n}\n\nstatic int stbi__png_info(stbi__context *s, int *x, int *y, int *comp)\n{\n   stbi__png p;\n   p.s = s;\n   return stbi__png_info_raw(&p, x, y, comp);\n}\n\nstatic int stbi__png_is16(stbi__context *s)\n{\n   stbi__png p;\n   p.s = s;\n   if (!stbi__png_info_raw(&p, NULL, NULL, NULL))\n\t   return 0;\n   if (p.depth != 16) {\n      stbi__rewind(p.s);\n      return 0;\n   }\n   return 1;\n}\n#endif\n\n// Microsoft/Windows BMP image\n\n#ifndef STBI_NO_BMP\nstatic int stbi__bmp_test_raw(stbi__context *s)\n{\n   int r;\n   int sz;\n   if (stbi__get8(s) != 'B') return 0;\n   if (stbi__get8(s) != 'M') return 0;\n   stbi__get32le(s); // discard filesize\n   stbi__get16le(s); // discard reserved\n   stbi__get16le(s); // discard reserved\n   stbi__get32le(s); // discard data offset\n   sz = stbi__get32le(s);\n   r = (sz == 12 || sz == 40 || sz == 56 || sz == 108 || sz == 124);\n   return r;\n}\n\nstatic int stbi__bmp_test(stbi__context *s)\n{\n   int r = stbi__bmp_test_raw(s);\n   stbi__rewind(s);\n   return r;\n}\n\n\n// returns 0..31 for the highest set bit\nstatic int stbi__high_bit(unsigned int z)\n{\n   int n=0;\n   if (z == 0) return -1;\n   if (z >= 0x10000) n += 16, z >>= 16;\n   if (z >= 0x00100) n +=  8, z >>=  8;\n   if (z >= 0x00010) n +=  4, z >>=  4;\n   if (z >= 0x00004) n +=  2, z >>=  2;\n   if (z >= 0x00002) n +=  1, z >>=  1;\n   return n;\n}\n\nstatic int stbi__bitcount(unsigned int a)\n{\n   a = (a & 0x55555555) + ((a >>  1) & 0x55555555); // max 2\n   a = (a & 0x33333333) + ((a >>  2) & 0x33333333); // max 4\n   a = (a + (a >> 4)) & 0x0f0f0f0f; // max 8 per 4, now 8 bits\n   a = (a + (a >> 8)); // max 16 per 8 bits\n   a = (a + (a >> 16)); // max 32 per 8 bits\n   return a & 0xff;\n}\n\n// extract an arbitrarily-aligned N-bit value (N=bits)\n// from v, and then make it 8-bits long and fractionally\n// extend it to full full range.\nstatic int stbi__shiftsigned(int v, int shift, int bits)\n{\n   static unsigned int mul_table[9] = {\n      0,\n      0xff/*0b11111111*/, 0x55/*0b01010101*/, 0x49/*0b01001001*/, 0x11/*0b00010001*/,\n      0x21/*0b00100001*/, 0x41/*0b01000001*/, 0x81/*0b10000001*/, 0x01/*0b00000001*/,\n   };\n   static unsigned int shift_table[9] = {\n      0, 0,0,1,0,2,4,6,0,\n   };\n   if (shift < 0)\n      v <<= -shift;\n   else\n      v >>= shift;\n   STBI_ASSERT(v >= 0 && v < 256);\n   v >>= (8-bits);\n   STBI_ASSERT(bits >= 0 && bits <= 8);\n   return (int) ((unsigned) v * mul_table[bits]) >> shift_table[bits];\n}\n\ntypedef struct\n{\n   int bpp, offset, hsz;\n   unsigned int mr,mg,mb,ma, all_a;\n} stbi__bmp_data;\n\nstatic void *stbi__bmp_parse_header(stbi__context *s, stbi__bmp_data *info)\n{\n   int hsz;\n   if (stbi__get8(s) != 'B' || stbi__get8(s) != 'M') return stbi__errpuc(\"not BMP\", \"Corrupt BMP\");\n   stbi__get32le(s); // discard filesize\n   stbi__get16le(s); // discard reserved\n   stbi__get16le(s); // discard reserved\n   info->offset = stbi__get32le(s);\n   info->hsz = hsz = stbi__get32le(s);\n   info->mr = info->mg = info->mb = info->ma = 0;\n\n   if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108 && hsz != 124) return stbi__errpuc(\"unknown BMP\", \"BMP type not supported: unknown\");\n   if (hsz == 12) {\n      s->img_x = stbi__get16le(s);\n      s->img_y = stbi__get16le(s);\n   } else {\n      s->img_x = stbi__get32le(s);\n      s->img_y = stbi__get32le(s);\n   }\n   if (stbi__get16le(s) != 1) return stbi__errpuc(\"bad BMP\", \"bad BMP\");\n   info->bpp = stbi__get16le(s);\n   if (hsz != 12) {\n      int compress = stbi__get32le(s);\n      if (compress == 1 || compress == 2) return stbi__errpuc(\"BMP RLE\", \"BMP type not supported: RLE\");\n      stbi__get32le(s); // discard sizeof\n      stbi__get32le(s); // discard hres\n      stbi__get32le(s); // discard vres\n      stbi__get32le(s); // discard colorsused\n      stbi__get32le(s); // discard max important\n      if (hsz == 40 || hsz == 56) {\n         if (hsz == 56) {\n            stbi__get32le(s);\n            stbi__get32le(s);\n            stbi__get32le(s);\n            stbi__get32le(s);\n         }\n         if (info->bpp == 16 || info->bpp == 32) {\n            if (compress == 0) {\n               if (info->bpp == 32) {\n                  info->mr = 0xffu << 16;\n                  info->mg = 0xffu <<  8;\n                  info->mb = 0xffu <<  0;\n                  info->ma = 0xffu << 24;\n                  info->all_a = 0; // if all_a is 0 at end, then we loaded alpha channel but it was all 0\n               } else {\n                  info->mr = 31u << 10;\n                  info->mg = 31u <<  5;\n                  info->mb = 31u <<  0;\n               }\n            } else if (compress == 3) {\n               info->mr = stbi__get32le(s);\n               info->mg = stbi__get32le(s);\n               info->mb = stbi__get32le(s);\n               // not documented, but generated by photoshop and handled by mspaint\n               if (info->mr == info->mg && info->mg == info->mb) {\n                  // ?!?!?\n                  return stbi__errpuc(\"bad BMP\", \"bad BMP\");\n               }\n            } else\n               return stbi__errpuc(\"bad BMP\", \"bad BMP\");\n         }\n      } else {\n         int i;\n         if (hsz != 108 && hsz != 124)\n            return stbi__errpuc(\"bad BMP\", \"bad BMP\");\n         info->mr = stbi__get32le(s);\n         info->mg = stbi__get32le(s);\n         info->mb = stbi__get32le(s);\n         info->ma = stbi__get32le(s);\n         stbi__get32le(s); // discard color space\n         for (i=0; i < 12; ++i)\n            stbi__get32le(s); // discard color space parameters\n         if (hsz == 124) {\n            stbi__get32le(s); // discard rendering intent\n            stbi__get32le(s); // discard offset of profile data\n            stbi__get32le(s); // discard size of profile data\n            stbi__get32le(s); // discard reserved\n         }\n      }\n   }\n   return (void *) 1;\n}\n\n\nstatic void *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri)\n{\n   stbi_uc *out;\n   unsigned int mr=0,mg=0,mb=0,ma=0, all_a;\n   stbi_uc pal[256][4];\n   int psize=0,i,j,width;\n   int flip_vertically, pad, target;\n   stbi__bmp_data info;\n   STBI_NOTUSED(ri);\n\n   info.all_a = 255;\n   if (stbi__bmp_parse_header(s, &info) == NULL)\n      return NULL; // error code already set\n\n   flip_vertically = ((int) s->img_y) > 0;\n   s->img_y = abs((int) s->img_y);\n\n   mr = info.mr;\n   mg = info.mg;\n   mb = info.mb;\n   ma = info.ma;\n   all_a = info.all_a;\n\n   if (info.hsz == 12) {\n      if (info.bpp < 24)\n         psize = (info.offset - 14 - 24) / 3;\n   } else {\n      if (info.bpp < 16)\n         psize = (info.offset - 14 - info.hsz) >> 2;\n   }\n\n   s->img_n = ma ? 4 : 3;\n   if (req_comp && req_comp >= 3) // we can directly decode 3 or 4\n      target = req_comp;\n   else\n      target = s->img_n; // if they want monochrome, we'll post-convert\n\n   // sanity-check size\n   if (!stbi__mad3sizes_valid(target, s->img_x, s->img_y, 0))\n      return stbi__errpuc(\"too large\", \"Corrupt BMP\");\n\n   out = (stbi_uc *) stbi__malloc_mad3(target, s->img_x, s->img_y, 0);\n   if (!out) return stbi__errpuc(\"outofmem\", \"Out of memory\");\n   if (info.bpp < 16) {\n      int z=0;\n      if (psize == 0 || psize > 256) { STBI_FREE(out); return stbi__errpuc(\"invalid\", \"Corrupt BMP\"); }\n      for (i=0; i < psize; ++i) {\n         pal[i][2] = stbi__get8(s);\n         pal[i][1] = stbi__get8(s);\n         pal[i][0] = stbi__get8(s);\n         if (info.hsz != 12) stbi__get8(s);\n         pal[i][3] = 255;\n      }\n      stbi__skip(s, info.offset - 14 - info.hsz - psize * (info.hsz == 12 ? 3 : 4));\n      if (info.bpp == 1) width = (s->img_x + 7) >> 3;\n      else if (info.bpp == 4) width = (s->img_x + 1) >> 1;\n      else if (info.bpp == 8) width = s->img_x;\n      else { STBI_FREE(out); return stbi__errpuc(\"bad bpp\", \"Corrupt BMP\"); }\n      pad = (-width)&3;\n      if (info.bpp == 1) {\n         for (j=0; j < (int) s->img_y; ++j) {\n            int bit_offset = 7, v = stbi__get8(s);\n            for (i=0; i < (int) s->img_x; ++i) {\n               int color = (v>>bit_offset)&0x1;\n               out[z++] = pal[color][0];\n               out[z++] = pal[color][1];\n               out[z++] = pal[color][2];\n               if((--bit_offset) < 0) {\n                  bit_offset = 7;\n                  v = stbi__get8(s);\n               }\n            }\n            stbi__skip(s, pad);\n         }\n      } else {\n         for (j=0; j < (int) s->img_y; ++j) {\n            for (i=0; i < (int) s->img_x; i += 2) {\n               int v=stbi__get8(s),v2=0;\n               if (info.bpp == 4) {\n                  v2 = v & 15;\n                  v >>= 4;\n               }\n               out[z++] = pal[v][0];\n               out[z++] = pal[v][1];\n               out[z++] = pal[v][2];\n               if (target == 4) out[z++] = 255;\n               if (i+1 == (int) s->img_x) break;\n               v = (info.bpp == 8) ? stbi__get8(s) : v2;\n               out[z++] = pal[v][0];\n               out[z++] = pal[v][1];\n               out[z++] = pal[v][2];\n               if (target == 4) out[z++] = 255;\n            }\n            stbi__skip(s, pad);\n         }\n      }\n   } else {\n      int rshift=0,gshift=0,bshift=0,ashift=0,rcount=0,gcount=0,bcount=0,acount=0;\n      int z = 0;\n      int easy=0;\n      stbi__skip(s, info.offset - 14 - info.hsz);\n      if (info.bpp == 24) width = 3 * s->img_x;\n      else if (info.bpp == 16) width = 2*s->img_x;\n      else /* bpp = 32 and pad = 0 */ width=0;\n      pad = (-width) & 3;\n      if (info.bpp == 24) {\n         easy = 1;\n      } else if (info.bpp == 32) {\n         if (mb == 0xff && mg == 0xff00 && mr == 0x00ff0000 && ma == 0xff000000)\n            easy = 2;\n      }\n      if (!easy) {\n         if (!mr || !mg || !mb) { STBI_FREE(out); return stbi__errpuc(\"bad masks\", \"Corrupt BMP\"); }\n         // right shift amt to put high bit in position #7\n         rshift = stbi__high_bit(mr)-7; rcount = stbi__bitcount(mr);\n         gshift = stbi__high_bit(mg)-7; gcount = stbi__bitcount(mg);\n         bshift = stbi__high_bit(mb)-7; bcount = stbi__bitcount(mb);\n         ashift = stbi__high_bit(ma)-7; acount = stbi__bitcount(ma);\n      }\n      for (j=0; j < (int) s->img_y; ++j) {\n         if (easy) {\n            for (i=0; i < (int) s->img_x; ++i) {\n               unsigned char a;\n               out[z+2] = stbi__get8(s);\n               out[z+1] = stbi__get8(s);\n               out[z+0] = stbi__get8(s);\n               z += 3;\n               a = (easy == 2 ? stbi__get8(s) : 255);\n               all_a |= a;\n               if (target == 4) out[z++] = a;\n            }\n         } else {\n            int bpp = info.bpp;\n            for (i=0; i < (int) s->img_x; ++i) {\n               stbi__uint32 v = (bpp == 16 ? (stbi__uint32) stbi__get16le(s) : stbi__get32le(s));\n               unsigned int a;\n               out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mr, rshift, rcount));\n               out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mg, gshift, gcount));\n               out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mb, bshift, bcount));\n               a = (ma ? stbi__shiftsigned(v & ma, ashift, acount) : 255);\n               all_a |= a;\n               if (target == 4) out[z++] = STBI__BYTECAST(a);\n            }\n         }\n         stbi__skip(s, pad);\n      }\n   }\n\n   // if alpha channel is all 0s, replace with all 255s\n   if (target == 4 && all_a == 0)\n      for (i=4*s->img_x*s->img_y-1; i >= 0; i -= 4)\n         out[i] = 255;\n\n   if (flip_vertically) {\n      stbi_uc t;\n      for (j=0; j < (int) s->img_y>>1; ++j) {\n         stbi_uc *p1 = out +      j     *s->img_x*target;\n         stbi_uc *p2 = out + (s->img_y-1-j)*s->img_x*target;\n         for (i=0; i < (int) s->img_x*target; ++i) {\n            t = p1[i], p1[i] = p2[i], p2[i] = t;\n         }\n      }\n   }\n\n   if (req_comp && req_comp != target) {\n      out = stbi__convert_format(out, target, req_comp, s->img_x, s->img_y);\n      if (out == NULL) return out; // stbi__convert_format frees input on failure\n   }\n\n   *x = s->img_x;\n   *y = s->img_y;\n   if (comp) *comp = s->img_n;\n   return out;\n}\n#endif\n\n// Targa Truevision - TGA\n// by Jonathan Dummer\n#ifndef STBI_NO_TGA\n// returns STBI_rgb or whatever, 0 on error\nstatic int stbi__tga_get_comp(int bits_per_pixel, int is_grey, int* is_rgb16)\n{\n   // only RGB or RGBA (incl. 16bit) or grey allowed\n   if (is_rgb16) *is_rgb16 = 0;\n   switch(bits_per_pixel) {\n      case 8:  return STBI_grey;\n      case 16: if(is_grey) return STBI_grey_alpha;\n               // fallthrough\n      case 15: if(is_rgb16) *is_rgb16 = 1;\n               return STBI_rgb;\n      case 24: // fallthrough\n      case 32: return bits_per_pixel/8;\n      default: return 0;\n   }\n}\n\nstatic int stbi__tga_info(stbi__context *s, int *x, int *y, int *comp)\n{\n    int tga_w, tga_h, tga_comp, tga_image_type, tga_bits_per_pixel, tga_colormap_bpp;\n    int sz, tga_colormap_type;\n    stbi__get8(s);                   // discard Offset\n    tga_colormap_type = stbi__get8(s); // colormap type\n    if( tga_colormap_type > 1 ) {\n        stbi__rewind(s);\n        return 0;      // only RGB or indexed allowed\n    }\n    tga_image_type = stbi__get8(s); // image type\n    if ( tga_colormap_type == 1 ) { // colormapped (paletted) image\n        if (tga_image_type != 1 && tga_image_type != 9) {\n            stbi__rewind(s);\n            return 0;\n        }\n        stbi__skip(s,4);       // skip index of first colormap entry and number of entries\n        sz = stbi__get8(s);    //   check bits per palette color entry\n        if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) {\n            stbi__rewind(s);\n            return 0;\n        }\n        stbi__skip(s,4);       // skip image x and y origin\n        tga_colormap_bpp = sz;\n    } else { // \"normal\" image w/o colormap - only RGB or grey allowed, +/- RLE\n        if ( (tga_image_type != 2) && (tga_image_type != 3) && (tga_image_type != 10) && (tga_image_type != 11) ) {\n            stbi__rewind(s);\n            return 0; // only RGB or grey allowed, +/- RLE\n        }\n        stbi__skip(s,9); // skip colormap specification and image x/y origin\n        tga_colormap_bpp = 0;\n    }\n    tga_w = stbi__get16le(s);\n    if( tga_w < 1 ) {\n        stbi__rewind(s);\n        return 0;   // test width\n    }\n    tga_h = stbi__get16le(s);\n    if( tga_h < 1 ) {\n        stbi__rewind(s);\n        return 0;   // test height\n    }\n    tga_bits_per_pixel = stbi__get8(s); // bits per pixel\n    stbi__get8(s); // ignore alpha bits\n    if (tga_colormap_bpp != 0) {\n        if((tga_bits_per_pixel != 8) && (tga_bits_per_pixel != 16)) {\n            // when using a colormap, tga_bits_per_pixel is the size of the indexes\n            // I don't think anything but 8 or 16bit indexes makes sense\n            stbi__rewind(s);\n            return 0;\n        }\n        tga_comp = stbi__tga_get_comp(tga_colormap_bpp, 0, NULL);\n    } else {\n        tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3) || (tga_image_type == 11), NULL);\n    }\n    if(!tga_comp) {\n      stbi__rewind(s);\n      return 0;\n    }\n    if (x) *x = tga_w;\n    if (y) *y = tga_h;\n    if (comp) *comp = tga_comp;\n    return 1;                   // seems to have passed everything\n}\n\nstatic int stbi__tga_test(stbi__context *s)\n{\n   int res = 0;\n   int sz, tga_color_type;\n   stbi__get8(s);      //   discard Offset\n   tga_color_type = stbi__get8(s);   //   color type\n   if ( tga_color_type > 1 ) goto errorEnd;   //   only RGB or indexed allowed\n   sz = stbi__get8(s);   //   image type\n   if ( tga_color_type == 1 ) { // colormapped (paletted) image\n      if (sz != 1 && sz != 9) goto errorEnd; // colortype 1 demands image type 1 or 9\n      stbi__skip(s,4);       // skip index of first colormap entry and number of entries\n      sz = stbi__get8(s);    //   check bits per palette color entry\n      if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) goto errorEnd;\n      stbi__skip(s,4);       // skip image x and y origin\n   } else { // \"normal\" image w/o colormap\n      if ( (sz != 2) && (sz != 3) && (sz != 10) && (sz != 11) ) goto errorEnd; // only RGB or grey allowed, +/- RLE\n      stbi__skip(s,9); // skip colormap specification and image x/y origin\n   }\n   if ( stbi__get16le(s) < 1 ) goto errorEnd;      //   test width\n   if ( stbi__get16le(s) < 1 ) goto errorEnd;      //   test height\n   sz = stbi__get8(s);   //   bits per pixel\n   if ( (tga_color_type == 1) && (sz != 8) && (sz != 16) ) goto errorEnd; // for colormapped images, bpp is size of an index\n   if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) goto errorEnd;\n\n   res = 1; // if we got this far, everything's good and we can return 1 instead of 0\n\nerrorEnd:\n   stbi__rewind(s);\n   return res;\n}\n\n// read 16bit value and convert to 24bit RGB\nstatic void stbi__tga_read_rgb16(stbi__context *s, stbi_uc* out)\n{\n   stbi__uint16 px = (stbi__uint16)stbi__get16le(s);\n   stbi__uint16 fiveBitMask = 31;\n   // we have 3 channels with 5bits each\n   int r = (px >> 10) & fiveBitMask;\n   int g = (px >> 5) & fiveBitMask;\n   int b = px & fiveBitMask;\n   // Note that this saves the data in RGB(A) order, so it doesn't need to be swapped later\n   out[0] = (stbi_uc)((r * 255)/31);\n   out[1] = (stbi_uc)((g * 255)/31);\n   out[2] = (stbi_uc)((b * 255)/31);\n\n   // some people claim that the most significant bit might be used for alpha\n   // (possibly if an alpha-bit is set in the \"image descriptor byte\")\n   // but that only made 16bit test images completely translucent..\n   // so let's treat all 15 and 16bit TGAs as RGB with no alpha.\n}\n\nstatic void *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri)\n{\n   //   read in the TGA header stuff\n   int tga_offset = stbi__get8(s);\n   int tga_indexed = stbi__get8(s);\n   int tga_image_type = stbi__get8(s);\n   int tga_is_RLE = 0;\n   int tga_palette_start = stbi__get16le(s);\n   int tga_palette_len = stbi__get16le(s);\n   int tga_palette_bits = stbi__get8(s);\n   int tga_x_origin = stbi__get16le(s);\n   int tga_y_origin = stbi__get16le(s);\n   int tga_width = stbi__get16le(s);\n   int tga_height = stbi__get16le(s);\n   int tga_bits_per_pixel = stbi__get8(s);\n   int tga_comp, tga_rgb16=0;\n   int tga_inverted = stbi__get8(s);\n   // int tga_alpha_bits = tga_inverted & 15; // the 4 lowest bits - unused (useless?)\n   //   image data\n   unsigned char *tga_data;\n   unsigned char *tga_palette = NULL;\n   int i, j;\n   unsigned char raw_data[4] = {0};\n   int RLE_count = 0;\n   int RLE_repeating = 0;\n   int read_next_pixel = 1;\n   STBI_NOTUSED(ri);\n\n   //   do a tiny bit of precessing\n   if ( tga_image_type >= 8 )\n   {\n      tga_image_type -= 8;\n      tga_is_RLE = 1;\n   }\n   tga_inverted = 1 - ((tga_inverted >> 5) & 1);\n\n   //   If I'm paletted, then I'll use the number of bits from the palette\n   if ( tga_indexed ) tga_comp = stbi__tga_get_comp(tga_palette_bits, 0, &tga_rgb16);\n   else tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3), &tga_rgb16);\n\n   if(!tga_comp) // shouldn't really happen, stbi__tga_test() should have ensured basic consistency\n      return stbi__errpuc(\"bad format\", \"Can't find out TGA pixelformat\");\n\n   //   tga info\n   *x = tga_width;\n   *y = tga_height;\n   if (comp) *comp = tga_comp;\n\n   if (!stbi__mad3sizes_valid(tga_width, tga_height, tga_comp, 0))\n      return stbi__errpuc(\"too large\", \"Corrupt TGA\");\n\n   tga_data = (unsigned char*)stbi__malloc_mad3(tga_width, tga_height, tga_comp, 0);\n   if (!tga_data) return stbi__errpuc(\"outofmem\", \"Out of memory\");\n\n   // skip to the data's starting position (offset usually = 0)\n   stbi__skip(s, tga_offset );\n\n   if ( !tga_indexed && !tga_is_RLE && !tga_rgb16 ) {\n      for (i=0; i < tga_height; ++i) {\n         int row = tga_inverted ? tga_height -i - 1 : i;\n         stbi_uc *tga_row = tga_data + row*tga_width*tga_comp;\n         stbi__getn(s, tga_row, tga_width * tga_comp);\n      }\n   } else  {\n      //   do I need to load a palette?\n      if ( tga_indexed)\n      {\n         //   any data to skip? (offset usually = 0)\n         stbi__skip(s, tga_palette_start );\n         //   load the palette\n         tga_palette = (unsigned char*)stbi__malloc_mad2(tga_palette_len, tga_comp, 0);\n         if (!tga_palette) {\n            STBI_FREE(tga_data);\n            return stbi__errpuc(\"outofmem\", \"Out of memory\");\n         }\n         if (tga_rgb16) {\n            stbi_uc *pal_entry = tga_palette;\n            STBI_ASSERT(tga_comp == STBI_rgb);\n            for (i=0; i < tga_palette_len; ++i) {\n               stbi__tga_read_rgb16(s, pal_entry);\n               pal_entry += tga_comp;\n            }\n         } else if (!stbi__getn(s, tga_palette, tga_palette_len * tga_comp)) {\n               STBI_FREE(tga_data);\n               STBI_FREE(tga_palette);\n               return stbi__errpuc(\"bad palette\", \"Corrupt TGA\");\n         }\n      }\n      //   load the data\n      for (i=0; i < tga_width * tga_height; ++i)\n      {\n         //   if I'm in RLE mode, do I need to get a RLE stbi__pngchunk?\n         if ( tga_is_RLE )\n         {\n            if ( RLE_count == 0 )\n            {\n               //   yep, get the next byte as a RLE command\n               int RLE_cmd = stbi__get8(s);\n               RLE_count = 1 + (RLE_cmd & 127);\n               RLE_repeating = RLE_cmd >> 7;\n               read_next_pixel = 1;\n            } else if ( !RLE_repeating )\n            {\n               read_next_pixel = 1;\n            }\n         } else\n         {\n            read_next_pixel = 1;\n         }\n         //   OK, if I need to read a pixel, do it now\n         if ( read_next_pixel )\n         {\n            //   load however much data we did have\n            if ( tga_indexed )\n            {\n               // read in index, then perform the lookup\n               int pal_idx = (tga_bits_per_pixel == 8) ? stbi__get8(s) : stbi__get16le(s);\n               if ( pal_idx >= tga_palette_len ) {\n                  // invalid index\n                  pal_idx = 0;\n               }\n               pal_idx *= tga_comp;\n               for (j = 0; j < tga_comp; ++j) {\n                  raw_data[j] = tga_palette[pal_idx+j];\n               }\n            } else if(tga_rgb16) {\n               STBI_ASSERT(tga_comp == STBI_rgb);\n               stbi__tga_read_rgb16(s, raw_data);\n            } else {\n               //   read in the data raw\n               for (j = 0; j < tga_comp; ++j) {\n                  raw_data[j] = stbi__get8(s);\n               }\n            }\n            //   clear the reading flag for the next pixel\n            read_next_pixel = 0;\n         } // end of reading a pixel\n\n         // copy data\n         for (j = 0; j < tga_comp; ++j)\n           tga_data[i*tga_comp+j] = raw_data[j];\n\n         //   in case we're in RLE mode, keep counting down\n         --RLE_count;\n      }\n      //   do I need to invert the image?\n      if ( tga_inverted )\n      {\n         for (j = 0; j*2 < tga_height; ++j)\n         {\n            int index1 = j * tga_width * tga_comp;\n            int index2 = (tga_height - 1 - j) * tga_width * tga_comp;\n            for (i = tga_width * tga_comp; i > 0; --i)\n            {\n               unsigned char temp = tga_data[index1];\n               tga_data[index1] = tga_data[index2];\n               tga_data[index2] = temp;\n               ++index1;\n               ++index2;\n            }\n         }\n      }\n      //   clear my palette, if I had one\n      if ( tga_palette != NULL )\n      {\n         STBI_FREE( tga_palette );\n      }\n   }\n\n   // swap RGB - if the source data was RGB16, it already is in the right order\n   if (tga_comp >= 3 && !tga_rgb16)\n   {\n      unsigned char* tga_pixel = tga_data;\n      for (i=0; i < tga_width * tga_height; ++i)\n      {\n         unsigned char temp = tga_pixel[0];\n         tga_pixel[0] = tga_pixel[2];\n         tga_pixel[2] = temp;\n         tga_pixel += tga_comp;\n      }\n   }\n\n   // convert to target component count\n   if (req_comp && req_comp != tga_comp)\n      tga_data = stbi__convert_format(tga_data, tga_comp, req_comp, tga_width, tga_height);\n\n   //   the things I do to get rid of an error message, and yet keep\n   //   Microsoft's C compilers happy... [8^(\n   tga_palette_start = tga_palette_len = tga_palette_bits =\n         tga_x_origin = tga_y_origin = 0;\n   //   OK, done\n   return tga_data;\n}\n#endif\n\n// *************************************************************************************************\n// Photoshop PSD loader -- PD by Thatcher Ulrich, integration by Nicolas Schulz, tweaked by STB\n\n#ifndef STBI_NO_PSD\nstatic int stbi__psd_test(stbi__context *s)\n{\n   int r = (stbi__get32be(s) == 0x38425053);\n   stbi__rewind(s);\n   return r;\n}\n\nstatic int stbi__psd_decode_rle(stbi__context *s, stbi_uc *p, int pixelCount)\n{\n   int count, nleft, len;\n\n   count = 0;\n   while ((nleft = pixelCount - count) > 0) {\n      len = stbi__get8(s);\n      if (len == 128) {\n         // No-op.\n      } else if (len < 128) {\n         // Copy next len+1 bytes literally.\n         len++;\n         if (len > nleft) return 0; // corrupt data\n         count += len;\n         while (len) {\n            *p = stbi__get8(s);\n            p += 4;\n            len--;\n         }\n      } else if (len > 128) {\n         stbi_uc   val;\n         // Next -len+1 bytes in the dest are replicated from next source byte.\n         // (Interpret len as a negative 8-bit int.)\n         len = 257 - len;\n         if (len > nleft) return 0; // corrupt data\n         val = stbi__get8(s);\n         count += len;\n         while (len) {\n            *p = val;\n            p += 4;\n            len--;\n         }\n      }\n   }\n\n   return 1;\n}\n\nstatic void *stbi__psd_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc)\n{\n   int pixelCount;\n   int channelCount, compression;\n   int channel, i;\n   int bitdepth;\n   int w,h;\n   stbi_uc *out;\n   STBI_NOTUSED(ri);\n\n   // Check identifier\n   if (stbi__get32be(s) != 0x38425053)   // \"8BPS\"\n      return stbi__errpuc(\"not PSD\", \"Corrupt PSD image\");\n\n   // Check file type version.\n   if (stbi__get16be(s) != 1)\n      return stbi__errpuc(\"wrong version\", \"Unsupported version of PSD image\");\n\n   // Skip 6 reserved bytes.\n   stbi__skip(s, 6 );\n\n   // Read the number of channels (R, G, B, A, etc).\n   channelCount = stbi__get16be(s);\n   if (channelCount < 0 || channelCount > 16)\n      return stbi__errpuc(\"wrong channel count\", \"Unsupported number of channels in PSD image\");\n\n   // Read the rows and columns of the image.\n   h = stbi__get32be(s);\n   w = stbi__get32be(s);\n\n   // Make sure the depth is 8 bits.\n   bitdepth = stbi__get16be(s);\n   if (bitdepth != 8 && bitdepth != 16)\n      return stbi__errpuc(\"unsupported bit depth\", \"PSD bit depth is not 8 or 16 bit\");\n\n   // Make sure the color mode is RGB.\n   // Valid options are:\n   //   0: Bitmap\n   //   1: Grayscale\n   //   2: Indexed color\n   //   3: RGB color\n   //   4: CMYK color\n   //   7: Multichannel\n   //   8: Duotone\n   //   9: Lab color\n   if (stbi__get16be(s) != 3)\n      return stbi__errpuc(\"wrong color format\", \"PSD is not in RGB color format\");\n\n   // Skip the Mode Data.  (It's the palette for indexed color; other info for other modes.)\n   stbi__skip(s,stbi__get32be(s) );\n\n   // Skip the image resources.  (resolution, pen tool paths, etc)\n   stbi__skip(s, stbi__get32be(s) );\n\n   // Skip the reserved data.\n   stbi__skip(s, stbi__get32be(s) );\n\n   // Find out if the data is compressed.\n   // Known values:\n   //   0: no compression\n   //   1: RLE compressed\n   compression = stbi__get16be(s);\n   if (compression > 1)\n      return stbi__errpuc(\"bad compression\", \"PSD has an unknown compression format\");\n\n   // Check size\n   if (!stbi__mad3sizes_valid(4, w, h, 0))\n      return stbi__errpuc(\"too large\", \"Corrupt PSD\");\n\n   // Create the destination image.\n\n   if (!compression && bitdepth == 16 && bpc == 16) {\n      out = (stbi_uc *) stbi__malloc_mad3(8, w, h, 0);\n      ri->bits_per_channel = 16;\n   } else\n      out = (stbi_uc *) stbi__malloc(4 * w*h);\n\n   if (!out) return stbi__errpuc(\"outofmem\", \"Out of memory\");\n   pixelCount = w*h;\n\n   // Initialize the data to zero.\n   //memset( out, 0, pixelCount * 4 );\n\n   // Finally, the image data.\n   if (compression) {\n      // RLE as used by .PSD and .TIFF\n      // Loop until you get the number of unpacked bytes you are expecting:\n      //     Read the next source byte into n.\n      //     If n is between 0 and 127 inclusive, copy the next n+1 bytes literally.\n      //     Else if n is between -127 and -1 inclusive, copy the next byte -n+1 times.\n      //     Else if n is 128, noop.\n      // Endloop\n\n      // The RLE-compressed data is preceeded by a 2-byte data count for each row in the data,\n      // which we're going to just skip.\n      stbi__skip(s, h * channelCount * 2 );\n\n      // Read the RLE data by channel.\n      for (channel = 0; channel < 4; channel++) {\n         stbi_uc *p;\n\n         p = out+channel;\n         if (channel >= channelCount) {\n            // Fill this channel with default data.\n            for (i = 0; i < pixelCount; i++, p += 4)\n               *p = (channel == 3 ? 255 : 0);\n         } else {\n            // Read the RLE data.\n            if (!stbi__psd_decode_rle(s, p, pixelCount)) {\n               STBI_FREE(out);\n               return stbi__errpuc(\"corrupt\", \"bad RLE data\");\n            }\n         }\n      }\n\n   } else {\n      // We're at the raw image data.  It's each channel in order (Red, Green, Blue, Alpha, ...)\n      // where each channel consists of an 8-bit (or 16-bit) value for each pixel in the image.\n\n      // Read the data by channel.\n      for (channel = 0; channel < 4; channel++) {\n         if (channel >= channelCount) {\n            // Fill this channel with default data.\n            if (bitdepth == 16 && bpc == 16) {\n               stbi__uint16 *q = ((stbi__uint16 *) out) + channel;\n               stbi__uint16 val = channel == 3 ? 65535 : 0;\n               for (i = 0; i < pixelCount; i++, q += 4)\n                  *q = val;\n            } else {\n               stbi_uc *p = out+channel;\n               stbi_uc val = channel == 3 ? 255 : 0;\n               for (i = 0; i < pixelCount; i++, p += 4)\n                  *p = val;\n            }\n         } else {\n            if (ri->bits_per_channel == 16) {    // output bpc\n               stbi__uint16 *q = ((stbi__uint16 *) out) + channel;\n               for (i = 0; i < pixelCount; i++, q += 4)\n                  *q = (stbi__uint16) stbi__get16be(s);\n            } else {\n               stbi_uc *p = out+channel;\n               if (bitdepth == 16) {  // input bpc\n                  for (i = 0; i < pixelCount; i++, p += 4)\n                     *p = (stbi_uc) (stbi__get16be(s) >> 8);\n               } else {\n                  for (i = 0; i < pixelCount; i++, p += 4)\n                     *p = stbi__get8(s);\n               }\n            }\n         }\n      }\n   }\n\n   // remove weird white matte from PSD\n   if (channelCount >= 4) {\n      if (ri->bits_per_channel == 16) {\n         for (i=0; i < w*h; ++i) {\n            stbi__uint16 *pixel = (stbi__uint16 *) out + 4*i;\n            if (pixel[3] != 0 && pixel[3] != 65535) {\n               float a = pixel[3] / 65535.0f;\n               float ra = 1.0f / a;\n               float inv_a = 65535.0f * (1 - ra);\n               pixel[0] = (stbi__uint16) (pixel[0]*ra + inv_a);\n               pixel[1] = (stbi__uint16) (pixel[1]*ra + inv_a);\n               pixel[2] = (stbi__uint16) (pixel[2]*ra + inv_a);\n            }\n         }\n      } else {\n         for (i=0; i < w*h; ++i) {\n            unsigned char *pixel = out + 4*i;\n            if (pixel[3] != 0 && pixel[3] != 255) {\n               float a = pixel[3] / 255.0f;\n               float ra = 1.0f / a;\n               float inv_a = 255.0f * (1 - ra);\n               pixel[0] = (unsigned char) (pixel[0]*ra + inv_a);\n               pixel[1] = (unsigned char) (pixel[1]*ra + inv_a);\n               pixel[2] = (unsigned char) (pixel[2]*ra + inv_a);\n            }\n         }\n      }\n   }\n\n   // convert to desired output format\n   if (req_comp && req_comp != 4) {\n      if (ri->bits_per_channel == 16)\n         out = (stbi_uc *) stbi__convert_format16((stbi__uint16 *) out, 4, req_comp, w, h);\n      else\n         out = stbi__convert_format(out, 4, req_comp, w, h);\n      if (out == NULL) return out; // stbi__convert_format frees input on failure\n   }\n\n   if (comp) *comp = 4;\n   *y = h;\n   *x = w;\n\n   return out;\n}\n#endif\n\n// *************************************************************************************************\n// Softimage PIC loader\n// by Tom Seddon\n//\n// See http://softimage.wiki.softimage.com/index.php/INFO:_PIC_file_format\n// See http://ozviz.wasp.uwa.edu.au/~pbourke/dataformats/softimagepic/\n\n#ifndef STBI_NO_PIC\nstatic int stbi__pic_is4(stbi__context *s,const char *str)\n{\n   int i;\n   for (i=0; i<4; ++i)\n      if (stbi__get8(s) != (stbi_uc)str[i])\n         return 0;\n\n   return 1;\n}\n\nstatic int stbi__pic_test_core(stbi__context *s)\n{\n   int i;\n\n   if (!stbi__pic_is4(s,\"\\x53\\x80\\xF6\\x34\"))\n      return 0;\n\n   for(i=0;i<84;++i)\n      stbi__get8(s);\n\n   if (!stbi__pic_is4(s,\"PICT\"))\n      return 0;\n\n   return 1;\n}\n\ntypedef struct\n{\n   stbi_uc size,type,channel;\n} stbi__pic_packet;\n\nstatic stbi_uc *stbi__readval(stbi__context *s, int channel, stbi_uc *dest)\n{\n   int mask=0x80, i;\n\n   for (i=0; i<4; ++i, mask>>=1) {\n      if (channel & mask) {\n         if (stbi__at_eof(s)) return stbi__errpuc(\"bad file\",\"PIC file too short\");\n         dest[i]=stbi__get8(s);\n      }\n   }\n\n   return dest;\n}\n\nstatic void stbi__copyval(int channel,stbi_uc *dest,const stbi_uc *src)\n{\n   int mask=0x80,i;\n\n   for (i=0;i<4; ++i, mask>>=1)\n      if (channel&mask)\n         dest[i]=src[i];\n}\n\nstatic stbi_uc *stbi__pic_load_core(stbi__context *s,int width,int height,int *comp, stbi_uc *result)\n{\n   int act_comp=0,num_packets=0,y,chained;\n   stbi__pic_packet packets[10];\n\n   // this will (should...) cater for even some bizarre stuff like having data\n    // for the same channel in multiple packets.\n   do {\n      stbi__pic_packet *packet;\n\n      if (num_packets==sizeof(packets)/sizeof(packets[0]))\n         return stbi__errpuc(\"bad format\",\"too many packets\");\n\n      packet = &packets[num_packets++];\n\n      chained = stbi__get8(s);\n      packet->size    = stbi__get8(s);\n      packet->type    = stbi__get8(s);\n      packet->channel = stbi__get8(s);\n\n      act_comp |= packet->channel;\n\n      if (stbi__at_eof(s))          return stbi__errpuc(\"bad file\",\"file too short (reading packets)\");\n      if (packet->size != 8)  return stbi__errpuc(\"bad format\",\"packet isn't 8bpp\");\n   } while (chained);\n\n   *comp = (act_comp & 0x10 ? 4 : 3); // has alpha channel?\n\n   for(y=0; y<height; ++y) {\n      int packet_idx;\n\n      for(packet_idx=0; packet_idx < num_packets; ++packet_idx) {\n         stbi__pic_packet *packet = &packets[packet_idx];\n         stbi_uc *dest = result+y*width*4;\n\n         switch (packet->type) {\n            default:\n               return stbi__errpuc(\"bad format\",\"packet has bad compression type\");\n\n            case 0: {//uncompressed\n               int x;\n\n               for(x=0;x<width;++x, dest+=4)\n                  if (!stbi__readval(s,packet->channel,dest))\n                     return 0;\n               break;\n            }\n\n            case 1://Pure RLE\n               {\n                  int left=width, i;\n\n                  while (left>0) {\n                     stbi_uc count,value[4];\n\n                     count=stbi__get8(s);\n                     if (stbi__at_eof(s))   return stbi__errpuc(\"bad file\",\"file too short (pure read count)\");\n\n                     if (count > left)\n                        count = (stbi_uc) left;\n\n                     if (!stbi__readval(s,packet->channel,value))  return 0;\n\n                     for(i=0; i<count; ++i,dest+=4)\n                        stbi__copyval(packet->channel,dest,value);\n                     left -= count;\n                  }\n               }\n               break;\n\n            case 2: {//Mixed RLE\n               int left=width;\n               while (left>0) {\n                  int count = stbi__get8(s), i;\n                  if (stbi__at_eof(s))  return stbi__errpuc(\"bad file\",\"file too short (mixed read count)\");\n\n                  if (count >= 128) { // Repeated\n                     stbi_uc value[4];\n\n                     if (count==128)\n                        count = stbi__get16be(s);\n                     else\n                        count -= 127;\n                     if (count > left)\n                        return stbi__errpuc(\"bad file\",\"scanline overrun\");\n\n                     if (!stbi__readval(s,packet->channel,value))\n                        return 0;\n\n                     for(i=0;i<count;++i, dest += 4)\n                        stbi__copyval(packet->channel,dest,value);\n                  } else { // Raw\n                     ++count;\n                     if (count>left) return stbi__errpuc(\"bad file\",\"scanline overrun\");\n\n                     for(i=0;i<count;++i, dest+=4)\n                        if (!stbi__readval(s,packet->channel,dest))\n                           return 0;\n                  }\n                  left-=count;\n               }\n               break;\n            }\n         }\n      }\n   }\n\n   return result;\n}\n\nstatic void *stbi__pic_load(stbi__context *s,int *px,int *py,int *comp,int req_comp, stbi__result_info *ri)\n{\n   stbi_uc *result;\n   int i, x,y, internal_comp;\n   STBI_NOTUSED(ri);\n\n   if (!comp) comp = &internal_comp;\n\n   for (i=0; i<92; ++i)\n      stbi__get8(s);\n\n   x = stbi__get16be(s);\n   y = stbi__get16be(s);\n   if (stbi__at_eof(s))  return stbi__errpuc(\"bad file\",\"file too short (pic header)\");\n   if (!stbi__mad3sizes_valid(x, y, 4, 0)) return stbi__errpuc(\"too large\", \"PIC image too large to decode\");\n\n   stbi__get32be(s); //skip `ratio'\n   stbi__get16be(s); //skip `fields'\n   stbi__get16be(s); //skip `pad'\n\n   // intermediate buffer is RGBA\n   result = (stbi_uc *) stbi__malloc_mad3(x, y, 4, 0);\n   memset(result, 0xff, x*y*4);\n\n   if (!stbi__pic_load_core(s,x,y,comp, result)) {\n      STBI_FREE(result);\n      result=0;\n   }\n   *px = x;\n   *py = y;\n   if (req_comp == 0) req_comp = *comp;\n   result=stbi__convert_format(result,4,req_comp,x,y);\n\n   return result;\n}\n\nstatic int stbi__pic_test(stbi__context *s)\n{\n   int r = stbi__pic_test_core(s);\n   stbi__rewind(s);\n   return r;\n}\n#endif\n\n// *************************************************************************************************\n// GIF loader -- public domain by Jean-Marc Lienher -- simplified/shrunk by stb\n\n#ifndef STBI_NO_GIF\ntypedef struct\n{\n   stbi__int16 prefix;\n   stbi_uc first;\n   stbi_uc suffix;\n} stbi__gif_lzw;\n\ntypedef struct\n{\n   int w,h;\n   stbi_uc *out;                 // output buffer (always 4 components)\n   stbi_uc *background;          // The current \"background\" as far as a gif is concerned\n   stbi_uc *history; \n   int flags, bgindex, ratio, transparent, eflags;\n   stbi_uc  pal[256][4];\n   stbi_uc lpal[256][4];\n   stbi__gif_lzw codes[8192];\n   stbi_uc *color_table;\n   int parse, step;\n   int lflags;\n   int start_x, start_y;\n   int max_x, max_y;\n   int cur_x, cur_y;\n   int line_size;\n   int delay;\n} stbi__gif;\n\nstatic int stbi__gif_test_raw(stbi__context *s)\n{\n   int sz;\n   if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8') return 0;\n   sz = stbi__get8(s);\n   if (sz != '9' && sz != '7') return 0;\n   if (stbi__get8(s) != 'a') return 0;\n   return 1;\n}\n\nstatic int stbi__gif_test(stbi__context *s)\n{\n   int r = stbi__gif_test_raw(s);\n   stbi__rewind(s);\n   return r;\n}\n\nstatic void stbi__gif_parse_colortable(stbi__context *s, stbi_uc pal[256][4], int num_entries, int transp)\n{\n   int i;\n   for (i=0; i < num_entries; ++i) {\n      pal[i][2] = stbi__get8(s);\n      pal[i][1] = stbi__get8(s);\n      pal[i][0] = stbi__get8(s);\n      pal[i][3] = transp == i ? 0 : 255;\n   }\n}\n\nstatic int stbi__gif_header(stbi__context *s, stbi__gif *g, int *comp, int is_info)\n{\n   stbi_uc version;\n   if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8')\n      return stbi__err(\"not GIF\", \"Corrupt GIF\");\n\n   version = stbi__get8(s);\n   if (version != '7' && version != '9')    return stbi__err(\"not GIF\", \"Corrupt GIF\");\n   if (stbi__get8(s) != 'a')                return stbi__err(\"not GIF\", \"Corrupt GIF\");\n\n   stbi__g_failure_reason = \"\";\n   g->w = stbi__get16le(s);\n   g->h = stbi__get16le(s);\n   g->flags = stbi__get8(s);\n   g->bgindex = stbi__get8(s);\n   g->ratio = stbi__get8(s);\n   g->transparent = -1;\n\n   if (comp != 0) *comp = 4;  // can't actually tell whether it's 3 or 4 until we parse the comments\n\n   if (is_info) return 1;\n\n   if (g->flags & 0x80)\n      stbi__gif_parse_colortable(s,g->pal, 2 << (g->flags & 7), -1);\n\n   return 1;\n}\n\nstatic int stbi__gif_info_raw(stbi__context *s, int *x, int *y, int *comp)\n{\n   stbi__gif* g = (stbi__gif*) stbi__malloc(sizeof(stbi__gif));\n   if (!stbi__gif_header(s, g, comp, 1)) {\n      STBI_FREE(g);\n      stbi__rewind( s );\n      return 0;\n   }\n   if (x) *x = g->w;\n   if (y) *y = g->h;\n   STBI_FREE(g);\n   return 1;\n}\n\nstatic void stbi__out_gif_code(stbi__gif *g, stbi__uint16 code)\n{\n   stbi_uc *p, *c;\n   int idx; \n\n   // recurse to decode the prefixes, since the linked-list is backwards,\n   // and working backwards through an interleaved image would be nasty\n   if (g->codes[code].prefix >= 0)\n      stbi__out_gif_code(g, g->codes[code].prefix);\n\n   if (g->cur_y >= g->max_y) return;\n\n   idx = g->cur_x + g->cur_y; \n   p = &g->out[idx];\n   g->history[idx / 4] = 1;  \n\n   c = &g->color_table[g->codes[code].suffix * 4];\n   if (c[3] > 128) { // don't render transparent pixels; \n      p[0] = c[2];\n      p[1] = c[1];\n      p[2] = c[0];\n      p[3] = c[3];\n   }\n   g->cur_x += 4;\n\n   if (g->cur_x >= g->max_x) {\n      g->cur_x = g->start_x;\n      g->cur_y += g->step;\n\n      while (g->cur_y >= g->max_y && g->parse > 0) {\n         g->step = (1 << g->parse) * g->line_size;\n         g->cur_y = g->start_y + (g->step >> 1);\n         --g->parse;\n      }\n   }\n}\n\nstatic stbi_uc *stbi__process_gif_raster(stbi__context *s, stbi__gif *g)\n{\n   stbi_uc lzw_cs;\n   stbi__int32 len, init_code;\n   stbi__uint32 first;\n   stbi__int32 codesize, codemask, avail, oldcode, bits, valid_bits, clear;\n   stbi__gif_lzw *p;\n\n   lzw_cs = stbi__get8(s);\n   if (lzw_cs > 12) return NULL;\n   clear = 1 << lzw_cs;\n   first = 1;\n   codesize = lzw_cs + 1;\n   codemask = (1 << codesize) - 1;\n   bits = 0;\n   valid_bits = 0;\n   for (init_code = 0; init_code < clear; init_code++) {\n      g->codes[init_code].prefix = -1;\n      g->codes[init_code].first = (stbi_uc) init_code;\n      g->codes[init_code].suffix = (stbi_uc) init_code;\n   }\n\n   // support no starting clear code\n   avail = clear+2;\n   oldcode = -1;\n\n   len = 0;\n   for(;;) {\n      if (valid_bits < codesize) {\n         if (len == 0) {\n            len = stbi__get8(s); // start new block\n            if (len == 0)\n               return g->out;\n         }\n         --len;\n         bits |= (stbi__int32) stbi__get8(s) << valid_bits;\n         valid_bits += 8;\n      } else {\n         stbi__int32 code = bits & codemask;\n         bits >>= codesize;\n         valid_bits -= codesize;\n         // @OPTIMIZE: is there some way we can accelerate the non-clear path?\n         if (code == clear) {  // clear code\n            codesize = lzw_cs + 1;\n            codemask = (1 << codesize) - 1;\n            avail = clear + 2;\n            oldcode = -1;\n            first = 0;\n         } else if (code == clear + 1) { // end of stream code\n            stbi__skip(s, len);\n            while ((len = stbi__get8(s)) > 0)\n               stbi__skip(s,len);\n            return g->out;\n         } else if (code <= avail) {\n            if (first) {\n               return stbi__errpuc(\"no clear code\", \"Corrupt GIF\");\n            }\n\n            if (oldcode >= 0) {\n               p = &g->codes[avail++];\n               if (avail > 8192) {\n                  return stbi__errpuc(\"too many codes\", \"Corrupt GIF\");\n               }\n\n               p->prefix = (stbi__int16) oldcode;\n               p->first = g->codes[oldcode].first;\n               p->suffix = (code == avail) ? p->first : g->codes[code].first;\n            } else if (code == avail)\n               return stbi__errpuc(\"illegal code in raster\", \"Corrupt GIF\");\n\n            stbi__out_gif_code(g, (stbi__uint16) code);\n\n            if ((avail & codemask) == 0 && avail <= 0x0FFF) {\n               codesize++;\n               codemask = (1 << codesize) - 1;\n            }\n\n            oldcode = code;\n         } else {\n            return stbi__errpuc(\"illegal code in raster\", \"Corrupt GIF\");\n         }\n      }\n   }\n}\n\n// this function is designed to support animated gifs, although stb_image doesn't support it\n// two back is the image from two frames ago, used for a very specific disposal format\nstatic stbi_uc *stbi__gif_load_next(stbi__context *s, stbi__gif *g, int *comp, int req_comp, stbi_uc *two_back)\n{\n   int dispose; \n   int first_frame; \n   int pi; \n   int pcount; \n\n   // on first frame, any non-written pixels get the background colour (non-transparent)\n   first_frame = 0; \n   if (g->out == 0) {\n      if (!stbi__gif_header(s, g, comp,0))     return 0; // stbi__g_failure_reason set by stbi__gif_header\n      g->out = (stbi_uc *) stbi__malloc(4 * g->w * g->h);\n      g->background = (stbi_uc *) stbi__malloc(4 * g->w * g->h); \n      g->history = (stbi_uc *) stbi__malloc(g->w * g->h); \n      if (g->out == 0)                      return stbi__errpuc(\"outofmem\", \"Out of memory\");\n\n      // image is treated as \"tranparent\" at the start - ie, nothing overwrites the current background; \n      // background colour is only used for pixels that are not rendered first frame, after that \"background\"\n      // color refers to teh color that was there the previous frame. \n      memset( g->out, 0x00, 4 * g->w * g->h ); \n      memset( g->background, 0x00, 4 * g->w * g->h ); // state of the background (starts transparent)\n      memset( g->history, 0x00, g->w * g->h );        // pixels that were affected previous frame\n      first_frame = 1; \n   } else {\n      // second frame - how do we dispoase of the previous one?\n      dispose = (g->eflags & 0x1C) >> 2; \n      pcount = g->w * g->h; \n\n      if ((dispose == 3) && (two_back == 0)) {\n         dispose = 2; // if I don't have an image to revert back to, default to the old background\n      }\n\n      if (dispose == 3) { // use previous graphic\n         for (pi = 0; pi < pcount; ++pi) {\n            if (g->history[pi]) {\n               memcpy( &g->out[pi * 4], &two_back[pi * 4], 4 ); \n            }\n         }\n      } else if (dispose == 2) { \n         // restore what was changed last frame to background before that frame; \n         for (pi = 0; pi < pcount; ++pi) {\n            if (g->history[pi]) {\n               memcpy( &g->out[pi * 4], &g->background[pi * 4], 4 ); \n            }\n         }\n      } else {\n         // This is a non-disposal case eithe way, so just \n         // leave the pixels as is, and they will become the new background\n         // 1: do not dispose\n         // 0:  not specified.\n      }\n\n      // background is what out is after the undoing of the previou frame; \n      memcpy( g->background, g->out, 4 * g->w * g->h ); \n   }\n\n   // clear my history; \n   memset( g->history, 0x00, g->w * g->h );        // pixels that were affected previous frame\n\n   for (;;) {\n      int tag = stbi__get8(s); \n      switch (tag) {\n         case 0x2C: /* Image Descriptor */\n         {\n            stbi__int32 x, y, w, h;\n            stbi_uc *o;\n\n            x = stbi__get16le(s);\n            y = stbi__get16le(s);\n            w = stbi__get16le(s);\n            h = stbi__get16le(s);\n            if (((x + w) > (g->w)) || ((y + h) > (g->h)))\n               return stbi__errpuc(\"bad Image Descriptor\", \"Corrupt GIF\");\n\n            g->line_size = g->w * 4;\n            g->start_x = x * 4;\n            g->start_y = y * g->line_size;\n            g->max_x   = g->start_x + w * 4;\n            g->max_y   = g->start_y + h * g->line_size;\n            g->cur_x   = g->start_x;\n            g->cur_y   = g->start_y;\n\n            g->lflags = stbi__get8(s);\n\n            if (g->lflags & 0x40) {\n               g->step = 8 * g->line_size; // first interlaced spacing\n               g->parse = 3;\n            } else {\n               g->step = g->line_size;\n               g->parse = 0;\n            }\n\n            if (g->lflags & 0x80) {\n               stbi__gif_parse_colortable(s,g->lpal, 2 << (g->lflags & 7), g->eflags & 0x01 ? g->transparent : -1);\n               g->color_table = (stbi_uc *) g->lpal;\n            } else if (g->flags & 0x80) {\n               g->color_table = (stbi_uc *) g->pal;\n            } else\n               return stbi__errpuc(\"missing color table\", \"Corrupt GIF\");            \n            \n            o = stbi__process_gif_raster(s, g);\n            if (o == NULL) return NULL;\n\n            // if this was the first frame, \n            pcount = g->w * g->h; \n            if (first_frame && (g->bgindex > 0)) {\n               // if first frame, any pixel not drawn to gets the background color\n               for (pi = 0; pi < pcount; ++pi) {\n                  if (g->history[pi] == 0) {\n                     g->pal[g->bgindex][3] = 255; // just in case it was made transparent, undo that; It will be reset next frame if need be; \n                     memcpy( &g->out[pi * 4], &g->pal[g->bgindex], 4 ); \n                  }\n               }\n            }\n\n            return o;\n         }\n\n         case 0x21: // Comment Extension.\n         {\n            int len;\n            int ext = stbi__get8(s); \n            if (ext == 0xF9) { // Graphic Control Extension.\n               len = stbi__get8(s);\n               if (len == 4) {\n                  g->eflags = stbi__get8(s);\n                  g->delay = 10 * stbi__get16le(s); // delay - 1/100th of a second, saving as 1/1000ths.\n\n                  // unset old transparent\n                  if (g->transparent >= 0) {\n                     g->pal[g->transparent][3] = 255; \n                  } \n                  if (g->eflags & 0x01) {\n                     g->transparent = stbi__get8(s);\n                     if (g->transparent >= 0) {\n                        g->pal[g->transparent][3] = 0; \n                     }\n                  } else {\n                     // don't need transparent\n                     stbi__skip(s, 1); \n                     g->transparent = -1; \n                  }\n               } else {\n                  stbi__skip(s, len);\n                  break;\n               }\n            } \n            while ((len = stbi__get8(s)) != 0) {\n               stbi__skip(s, len);\n            }\n            break;\n         }\n\n         case 0x3B: // gif stream termination code\n            return (stbi_uc *) s; // using '1' causes warning on some compilers\n\n         default:\n            return stbi__errpuc(\"unknown code\", \"Corrupt GIF\");\n      }\n   }\n}\n\nstatic void *stbi__load_gif_main(stbi__context *s, int **delays, int *x, int *y, int *z, int *comp, int req_comp)\n{\n   if (stbi__gif_test(s)) {\n      int layers = 0; \n      stbi_uc *u = 0;\n      stbi_uc *out = 0;\n      stbi_uc *two_back = 0; \n      stbi__gif g;\n      int stride; \n      memset(&g, 0, sizeof(g));\n      if (delays) {\n         *delays = 0; \n      }\n\n      do {\n         u = stbi__gif_load_next(s, &g, comp, req_comp, two_back);\n         if (u == (stbi_uc *) s) u = 0;  // end of animated gif marker\n\n         if (u) {\n            *x = g.w;\n            *y = g.h;\n            ++layers; \n            stride = g.w * g.h * 4; \n         \n            if (out) {\n               out = (stbi_uc*) STBI_REALLOC( out, layers * stride ); \n               if (delays) {\n                  *delays = (int*) STBI_REALLOC( *delays, sizeof(int) * layers ); \n               }\n            } else {\n               out = (stbi_uc*)stbi__malloc( layers * stride ); \n               if (delays) {\n                  *delays = (int*) stbi__malloc( layers * sizeof(int) ); \n               }\n            }\n            memcpy( out + ((layers - 1) * stride), u, stride ); \n            if (layers >= 2) {\n               two_back = out - 2 * stride; \n            }\n\n            if (delays) {\n               (*delays)[layers - 1U] = g.delay; \n            }\n         }\n      } while (u != 0); \n\n      // free temp buffer; \n      STBI_FREE(g.out); \n      STBI_FREE(g.history); \n      STBI_FREE(g.background); \n\n      // do the final conversion after loading everything; \n      if (req_comp && req_comp != 4)\n         out = stbi__convert_format(out, 4, req_comp, layers * g.w, g.h);\n\n      *z = layers; \n      return out;\n   } else {\n      return stbi__errpuc(\"not GIF\", \"Image was not as a gif type.\"); \n   }\n}\n\nstatic void *stbi__gif_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri)\n{\n   stbi_uc *u = 0;\n   stbi__gif g;\n   memset(&g, 0, sizeof(g));\n\n   u = stbi__gif_load_next(s, &g, comp, req_comp, 0);\n   if (u == (stbi_uc *) s) u = 0;  // end of animated gif marker\n   if (u) {\n      *x = g.w;\n      *y = g.h;\n\n      // moved conversion to after successful load so that the same\n      // can be done for multiple frames. \n      if (req_comp && req_comp != 4)\n         u = stbi__convert_format(u, 4, req_comp, g.w, g.h);\n   }\n\n   // free buffers needed for multiple frame loading; \n   STBI_FREE(g.history);\n   STBI_FREE(g.background); \n\n   return u;\n}\n\nstatic int stbi__gif_info(stbi__context *s, int *x, int *y, int *comp)\n{\n   return stbi__gif_info_raw(s,x,y,comp);\n}\n#endif\n\n// *************************************************************************************************\n// Radiance RGBE HDR loader\n// originally by Nicolas Schulz\n#ifndef STBI_NO_HDR\nstatic int stbi__hdr_test_core(stbi__context *s, const char *signature)\n{\n   int i;\n   for (i=0; signature[i]; ++i)\n      if (stbi__get8(s) != signature[i])\n          return 0;\n   stbi__rewind(s);\n   return 1;\n}\n\nstatic int stbi__hdr_test(stbi__context* s)\n{\n   int r = stbi__hdr_test_core(s, \"#?RADIANCE\\n\");\n   stbi__rewind(s);\n   if(!r) {\n       r = stbi__hdr_test_core(s, \"#?RGBE\\n\");\n       stbi__rewind(s);\n   }\n   return r;\n}\n\n#define STBI__HDR_BUFLEN  1024\nstatic char *stbi__hdr_gettoken(stbi__context *z, char *buffer)\n{\n   int len=0;\n   char c = '\\0';\n\n   c = (char) stbi__get8(z);\n\n   while (!stbi__at_eof(z) && c != '\\n') {\n      buffer[len++] = c;\n      if (len == STBI__HDR_BUFLEN-1) {\n         // flush to end of line\n         while (!stbi__at_eof(z) && stbi__get8(z) != '\\n')\n            ;\n         break;\n      }\n      c = (char) stbi__get8(z);\n   }\n\n   buffer[len] = 0;\n   return buffer;\n}\n\nstatic void stbi__hdr_convert(float *output, stbi_uc *input, int req_comp)\n{\n   if ( input[3] != 0 ) {\n      float f1;\n      // Exponent\n      f1 = (float) ldexp(1.0f, input[3] - (int)(128 + 8));\n      if (req_comp <= 2)\n         output[0] = (input[0] + input[1] + input[2]) * f1 / 3;\n      else {\n         output[0] = input[0] * f1;\n         output[1] = input[1] * f1;\n         output[2] = input[2] * f1;\n      }\n      if (req_comp == 2) output[1] = 1;\n      if (req_comp == 4) output[3] = 1;\n   } else {\n      switch (req_comp) {\n         case 4: output[3] = 1; /* fallthrough */\n         case 3: output[0] = output[1] = output[2] = 0;\n                 break;\n         case 2: output[1] = 1; /* fallthrough */\n         case 1: output[0] = 0;\n                 break;\n      }\n   }\n}\n\nstatic float *stbi__hdr_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri)\n{\n   char buffer[STBI__HDR_BUFLEN];\n   char *token;\n   int valid = 0;\n   int width, height;\n   stbi_uc *scanline;\n   float *hdr_data;\n   int len;\n   unsigned char count, value;\n   int i, j, k, c1,c2, z;\n   const char *headerToken;\n   STBI_NOTUSED(ri);\n\n   // Check identifier\n   headerToken = stbi__hdr_gettoken(s,buffer);\n   if (strcmp(headerToken, \"#?RADIANCE\") != 0 && strcmp(headerToken, \"#?RGBE\") != 0)\n      return stbi__errpf(\"not HDR\", \"Corrupt HDR image\");\n\n   // Parse header\n   for(;;) {\n      token = stbi__hdr_gettoken(s,buffer);\n      if (token[0] == 0) break;\n      if (strcmp(token, \"FORMAT=32-bit_rle_rgbe\") == 0) valid = 1;\n   }\n\n   if (!valid)    return stbi__errpf(\"unsupported format\", \"Unsupported HDR format\");\n\n   // Parse width and height\n   // can't use sscanf() if we're not using stdio!\n   token = stbi__hdr_gettoken(s,buffer);\n   if (strncmp(token, \"-Y \", 3))  return stbi__errpf(\"unsupported data layout\", \"Unsupported HDR format\");\n   token += 3;\n   height = (int) strtol(token, &token, 10);\n   while (*token == ' ') ++token;\n   if (strncmp(token, \"+X \", 3))  return stbi__errpf(\"unsupported data layout\", \"Unsupported HDR format\");\n   token += 3;\n   width = (int) strtol(token, NULL, 10);\n\n   *x = width;\n   *y = height;\n\n   if (comp) *comp = 3;\n   if (req_comp == 0) req_comp = 3;\n\n   if (!stbi__mad4sizes_valid(width, height, req_comp, sizeof(float), 0))\n      return stbi__errpf(\"too large\", \"HDR image is too large\");\n\n   // Read data\n   hdr_data = (float *) stbi__malloc_mad4(width, height, req_comp, sizeof(float), 0);\n   if (!hdr_data)\n      return stbi__errpf(\"outofmem\", \"Out of memory\");\n\n   // Load image data\n   // image data is stored as some number of sca\n   if ( width < 8 || width >= 32768) {\n      // Read flat data\n      for (j=0; j < height; ++j) {\n         for (i=0; i < width; ++i) {\n            stbi_uc rgbe[4];\n           main_decode_loop:\n            stbi__getn(s, rgbe, 4);\n            stbi__hdr_convert(hdr_data + j * width * req_comp + i * req_comp, rgbe, req_comp);\n         }\n      }\n   } else {\n      // Read RLE-encoded data\n      scanline = NULL;\n\n      for (j = 0; j < height; ++j) {\n         c1 = stbi__get8(s);\n         c2 = stbi__get8(s);\n         len = stbi__get8(s);\n         if (c1 != 2 || c2 != 2 || (len & 0x80)) {\n            // not run-length encoded, so we have to actually use THIS data as a decoded\n            // pixel (note this can't be a valid pixel--one of RGB must be >= 128)\n            stbi_uc rgbe[4];\n            rgbe[0] = (stbi_uc) c1;\n            rgbe[1] = (stbi_uc) c2;\n            rgbe[2] = (stbi_uc) len;\n            rgbe[3] = (stbi_uc) stbi__get8(s);\n            stbi__hdr_convert(hdr_data, rgbe, req_comp);\n            i = 1;\n            j = 0;\n            STBI_FREE(scanline);\n            goto main_decode_loop; // yes, this makes no sense\n         }\n         len <<= 8;\n         len |= stbi__get8(s);\n         if (len != width) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf(\"invalid decoded scanline length\", \"corrupt HDR\"); }\n         if (scanline == NULL) {\n            scanline = (stbi_uc *) stbi__malloc_mad2(width, 4, 0);\n            if (!scanline) {\n               STBI_FREE(hdr_data);\n               return stbi__errpf(\"outofmem\", \"Out of memory\");\n            }\n         }\n\n         for (k = 0; k < 4; ++k) {\n            int nleft;\n            i = 0;\n            while ((nleft = width - i) > 0) {\n               count = stbi__get8(s);\n               if (count > 128) {\n                  // Run\n                  value = stbi__get8(s);\n                  count -= 128;\n                  if (count > nleft) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf(\"corrupt\", \"bad RLE data in HDR\"); }\n                  for (z = 0; z < count; ++z)\n                     scanline[i++ * 4 + k] = value;\n               } else {\n                  // Dump\n                  if (count > nleft) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf(\"corrupt\", \"bad RLE data in HDR\"); }\n                  for (z = 0; z < count; ++z)\n                     scanline[i++ * 4 + k] = stbi__get8(s);\n               }\n            }\n         }\n         for (i=0; i < width; ++i)\n            stbi__hdr_convert(hdr_data+(j*width + i)*req_comp, scanline + i*4, req_comp);\n      }\n      if (scanline)\n         STBI_FREE(scanline);\n   }\n\n   return hdr_data;\n}\n\nstatic int stbi__hdr_info(stbi__context *s, int *x, int *y, int *comp)\n{\n   char buffer[STBI__HDR_BUFLEN];\n   char *token;\n   int valid = 0;\n   int dummy;\n\n   if (!x) x = &dummy;\n   if (!y) y = &dummy;\n   if (!comp) comp = &dummy;\n\n   if (stbi__hdr_test(s) == 0) {\n       stbi__rewind( s );\n       return 0;\n   }\n\n   for(;;) {\n      token = stbi__hdr_gettoken(s,buffer);\n      if (token[0] == 0) break;\n      if (strcmp(token, \"FORMAT=32-bit_rle_rgbe\") == 0) valid = 1;\n   }\n\n   if (!valid) {\n       stbi__rewind( s );\n       return 0;\n   }\n   token = stbi__hdr_gettoken(s,buffer);\n   if (strncmp(token, \"-Y \", 3)) {\n       stbi__rewind( s );\n       return 0;\n   }\n   token += 3;\n   *y = (int) strtol(token, &token, 10);\n   while (*token == ' ') ++token;\n   if (strncmp(token, \"+X \", 3)) {\n       stbi__rewind( s );\n       return 0;\n   }\n   token += 3;\n   *x = (int) strtol(token, NULL, 10);\n   *comp = 3;\n   return 1;\n}\n#endif // STBI_NO_HDR\n\n#ifndef STBI_NO_BMP\nstatic int stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp)\n{\n   void *p;\n   stbi__bmp_data info;\n\n   info.all_a = 255;\n   p = stbi__bmp_parse_header(s, &info);\n   stbi__rewind( s );\n   if (p == NULL)\n      return 0;\n   if (x) *x = s->img_x;\n   if (y) *y = s->img_y;\n   if (comp) *comp = info.ma ? 4 : 3;\n   return 1;\n}\n#endif\n\n#ifndef STBI_NO_PSD\nstatic int stbi__psd_info(stbi__context *s, int *x, int *y, int *comp)\n{\n   int channelCount, dummy, depth;\n   if (!x) x = &dummy;\n   if (!y) y = &dummy;\n   if (!comp) comp = &dummy;\n   if (stbi__get32be(s) != 0x38425053) {\n       stbi__rewind( s );\n       return 0;\n   }\n   if (stbi__get16be(s) != 1) {\n       stbi__rewind( s );\n       return 0;\n   }\n   stbi__skip(s, 6);\n   channelCount = stbi__get16be(s);\n   if (channelCount < 0 || channelCount > 16) {\n       stbi__rewind( s );\n       return 0;\n   }\n   *y = stbi__get32be(s);\n   *x = stbi__get32be(s);\n   depth = stbi__get16be(s);\n   if (depth != 8 && depth != 16) {\n       stbi__rewind( s );\n       return 0;\n   }\n   if (stbi__get16be(s) != 3) {\n       stbi__rewind( s );\n       return 0;\n   }\n   *comp = 4;\n   return 1;\n}\n\nstatic int stbi__psd_is16(stbi__context *s)\n{\n   int channelCount, depth;\n   if (stbi__get32be(s) != 0x38425053) {\n       stbi__rewind( s );\n       return 0;\n   }\n   if (stbi__get16be(s) != 1) {\n       stbi__rewind( s );\n       return 0;\n   }\n   stbi__skip(s, 6);\n   channelCount = stbi__get16be(s);\n   if (channelCount < 0 || channelCount > 16) {\n       stbi__rewind( s );\n       return 0;\n   }\n   (void) stbi__get32be(s);\n   (void) stbi__get32be(s);\n   depth = stbi__get16be(s);\n   if (depth != 16) {\n       stbi__rewind( s );\n       return 0;\n   }\n   return 1;\n}\n#endif\n\n#ifndef STBI_NO_PIC\nstatic int stbi__pic_info(stbi__context *s, int *x, int *y, int *comp)\n{\n   int act_comp=0,num_packets=0,chained,dummy;\n   stbi__pic_packet packets[10];\n\n   if (!x) x = &dummy;\n   if (!y) y = &dummy;\n   if (!comp) comp = &dummy;\n\n   if (!stbi__pic_is4(s,\"\\x53\\x80\\xF6\\x34\")) {\n      stbi__rewind(s);\n      return 0;\n   }\n\n   stbi__skip(s, 88);\n\n   *x = stbi__get16be(s);\n   *y = stbi__get16be(s);\n   if (stbi__at_eof(s)) {\n      stbi__rewind( s);\n      return 0;\n   }\n   if ( (*x) != 0 && (1 << 28) / (*x) < (*y)) {\n      stbi__rewind( s );\n      return 0;\n   }\n\n   stbi__skip(s, 8);\n\n   do {\n      stbi__pic_packet *packet;\n\n      if (num_packets==sizeof(packets)/sizeof(packets[0]))\n         return 0;\n\n      packet = &packets[num_packets++];\n      chained = stbi__get8(s);\n      packet->size    = stbi__get8(s);\n      packet->type    = stbi__get8(s);\n      packet->channel = stbi__get8(s);\n      act_comp |= packet->channel;\n\n      if (stbi__at_eof(s)) {\n          stbi__rewind( s );\n          return 0;\n      }\n      if (packet->size != 8) {\n          stbi__rewind( s );\n          return 0;\n      }\n   } while (chained);\n\n   *comp = (act_comp & 0x10 ? 4 : 3);\n\n   return 1;\n}\n#endif\n\n// *************************************************************************************************\n// Portable Gray Map and Portable Pixel Map loader\n// by Ken Miller\n//\n// PGM: http://netpbm.sourceforge.net/doc/pgm.html\n// PPM: http://netpbm.sourceforge.net/doc/ppm.html\n//\n// Known limitations:\n//    Does not support comments in the header section\n//    Does not support ASCII image data (formats P2 and P3)\n//    Does not support 16-bit-per-channel\n\n#ifndef STBI_NO_PNM\n\nstatic int      stbi__pnm_test(stbi__context *s)\n{\n   char p, t;\n   p = (char) stbi__get8(s);\n   t = (char) stbi__get8(s);\n   if (p != 'P' || (t != '5' && t != '6')) {\n       stbi__rewind( s );\n       return 0;\n   }\n   return 1;\n}\n\nstatic void *stbi__pnm_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri)\n{\n   stbi_uc *out;\n   STBI_NOTUSED(ri);\n\n   if (!stbi__pnm_info(s, (int *)&s->img_x, (int *)&s->img_y, (int *)&s->img_n))\n      return 0;\n\n   *x = s->img_x;\n   *y = s->img_y;\n   if (comp) *comp = s->img_n;\n\n   if (!stbi__mad3sizes_valid(s->img_n, s->img_x, s->img_y, 0))\n      return stbi__errpuc(\"too large\", \"PNM too large\");\n\n   out = (stbi_uc *) stbi__malloc_mad3(s->img_n, s->img_x, s->img_y, 0);\n   if (!out) return stbi__errpuc(\"outofmem\", \"Out of memory\");\n   stbi__getn(s, out, s->img_n * s->img_x * s->img_y);\n\n   if (req_comp && req_comp != s->img_n) {\n      out = stbi__convert_format(out, s->img_n, req_comp, s->img_x, s->img_y);\n      if (out == NULL) return out; // stbi__convert_format frees input on failure\n   }\n   return out;\n}\n\nstatic int      stbi__pnm_isspace(char c)\n{\n   return c == ' ' || c == '\\t' || c == '\\n' || c == '\\v' || c == '\\f' || c == '\\r';\n}\n\nstatic void     stbi__pnm_skip_whitespace(stbi__context *s, char *c)\n{\n   for (;;) {\n      while (!stbi__at_eof(s) && stbi__pnm_isspace(*c))\n         *c = (char) stbi__get8(s);\n\n      if (stbi__at_eof(s) || *c != '#')\n         break;\n\n      while (!stbi__at_eof(s) && *c != '\\n' && *c != '\\r' )\n         *c = (char) stbi__get8(s);\n   }\n}\n\nstatic int      stbi__pnm_isdigit(char c)\n{\n   return c >= '0' && c <= '9';\n}\n\nstatic int      stbi__pnm_getinteger(stbi__context *s, char *c)\n{\n   int value = 0;\n\n   while (!stbi__at_eof(s) && stbi__pnm_isdigit(*c)) {\n      value = value*10 + (*c - '0');\n      *c = (char) stbi__get8(s);\n   }\n\n   return value;\n}\n\nstatic int      stbi__pnm_info(stbi__context *s, int *x, int *y, int *comp)\n{\n   int maxv, dummy;\n   char c, p, t;\n\n   if (!x) x = &dummy;\n   if (!y) y = &dummy;\n   if (!comp) comp = &dummy;\n\n   stbi__rewind(s);\n\n   // Get identifier\n   p = (char) stbi__get8(s);\n   t = (char) stbi__get8(s);\n   if (p != 'P' || (t != '5' && t != '6')) {\n       stbi__rewind(s);\n       return 0;\n   }\n\n   *comp = (t == '6') ? 3 : 1;  // '5' is 1-component .pgm; '6' is 3-component .ppm\n\n   c = (char) stbi__get8(s);\n   stbi__pnm_skip_whitespace(s, &c);\n\n   *x = stbi__pnm_getinteger(s, &c); // read width\n   stbi__pnm_skip_whitespace(s, &c);\n\n   *y = stbi__pnm_getinteger(s, &c); // read height\n   stbi__pnm_skip_whitespace(s, &c);\n\n   maxv = stbi__pnm_getinteger(s, &c);  // read max value\n\n   if (maxv > 255)\n      return stbi__err(\"max value > 255\", \"PPM image not 8-bit\");\n   else\n      return 1;\n}\n#endif\n\nstatic int stbi__info_main(stbi__context *s, int *x, int *y, int *comp)\n{\n   #ifndef STBI_NO_JPEG\n   if (stbi__jpeg_info(s, x, y, comp)) return 1;\n   #endif\n\n   #ifndef STBI_NO_PNG\n   if (stbi__png_info(s, x, y, comp))  return 1;\n   #endif\n\n   #ifndef STBI_NO_GIF\n   if (stbi__gif_info(s, x, y, comp))  return 1;\n   #endif\n\n   #ifndef STBI_NO_BMP\n   if (stbi__bmp_info(s, x, y, comp))  return 1;\n   #endif\n\n   #ifndef STBI_NO_PSD\n   if (stbi__psd_info(s, x, y, comp))  return 1;\n   #endif\n\n   #ifndef STBI_NO_PIC\n   if (stbi__pic_info(s, x, y, comp))  return 1;\n   #endif\n\n   #ifndef STBI_NO_PNM\n   if (stbi__pnm_info(s, x, y, comp))  return 1;\n   #endif\n\n   #ifndef STBI_NO_HDR\n   if (stbi__hdr_info(s, x, y, comp))  return 1;\n   #endif\n\n   // test tga last because it's a crappy test!\n   #ifndef STBI_NO_TGA\n   if (stbi__tga_info(s, x, y, comp))\n       return 1;\n   #endif\n   return stbi__err(\"unknown image type\", \"Image not of any known type, or corrupt\");\n}\n\nstatic int stbi__is_16_main(stbi__context *s)\n{\n   #ifndef STBI_NO_PNG\n   if (stbi__png_is16(s))  return 1;\n   #endif\n\n   #ifndef STBI_NO_PSD\n   if (stbi__psd_is16(s))  return 1;\n   #endif\n\n   return 0;\n}\n\n#ifndef STBI_NO_STDIO\nSTBIDEF int stbi_info(char const *filename, int *x, int *y, int *comp)\n{\n    FILE *f = stbi__fopen(filename, \"rb\");\n    int result;\n    if (!f) return stbi__err(\"can't fopen\", \"Unable to open file\");\n    result = stbi_info_from_file(f, x, y, comp);\n    fclose(f);\n    return result;\n}\n\nSTBIDEF int stbi_info_from_file(FILE *f, int *x, int *y, int *comp)\n{\n   int r;\n   stbi__context s;\n   long pos = ftell(f);\n   stbi__start_file(&s, f);\n   r = stbi__info_main(&s,x,y,comp);\n   fseek(f,pos,SEEK_SET);\n   return r;\n}\n\nSTBIDEF int stbi_is_16_bit(char const *filename)\n{\n    FILE *f = stbi__fopen(filename, \"rb\");\n    int result;\n    if (!f) return stbi__err(\"can't fopen\", \"Unable to open file\");\n    result = stbi_is_16_bit_from_file(f);\n    fclose(f);\n    return result;\n}\n\nSTBIDEF int stbi_is_16_bit_from_file(FILE *f)\n{\n   int r;\n   stbi__context s;\n   long pos = ftell(f);\n   stbi__start_file(&s, f);\n   r = stbi__is_16_main(&s);\n   fseek(f,pos,SEEK_SET);\n   return r;\n}\n#endif // !STBI_NO_STDIO\n\nSTBIDEF int stbi_info_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp)\n{\n   stbi__context s;\n   stbi__start_mem(&s,buffer,len);\n   return stbi__info_main(&s,x,y,comp);\n}\n\nSTBIDEF int stbi_info_from_callbacks(stbi_io_callbacks const *c, void *user, int *x, int *y, int *comp)\n{\n   stbi__context s;\n   stbi__start_callbacks(&s, (stbi_io_callbacks *) c, user);\n   return stbi__info_main(&s,x,y,comp);\n}\n\nSTBIDEF int stbi_is_16_bit_from_memory(stbi_uc const *buffer, int len)\n{\n   stbi__context s;\n   stbi__start_mem(&s,buffer,len);\n   return stbi__is_16_main(&s);\n}\n\nSTBIDEF int stbi_is_16_bit_from_callbacks(stbi_io_callbacks const *c, void *user)\n{\n   stbi__context s;\n   stbi__start_callbacks(&s, (stbi_io_callbacks *) c, user);\n   return stbi__is_16_main(&s);\n}\n\n#endif // STB_IMAGE_IMPLEMENTATION\n\n/*\n   revision history:\n      2.19  (2018-02-11) fix warning\n      2.18  (2018-01-30) fix warnings\n      2.17  (2018-01-29) change sbti__shiftsigned to avoid clang -O2 bug\n                         1-bit BMP\n                         *_is_16_bit api\n                         avoid warnings\n      2.16  (2017-07-23) all functions have 16-bit variants;\n                         STBI_NO_STDIO works again;\n                         compilation fixes;\n                         fix rounding in unpremultiply;\n                         optimize vertical flip;\n                         disable raw_len validation;\n                         documentation fixes\n      2.15  (2017-03-18) fix png-1,2,4 bug; now all Imagenet JPGs decode;\n                         warning fixes; disable run-time SSE detection on gcc;\n                         uniform handling of optional \"return\" values;\n                         thread-safe initialization of zlib tables\n      2.14  (2017-03-03) remove deprecated STBI_JPEG_OLD; fixes for Imagenet JPGs\n      2.13  (2016-11-29) add 16-bit API, only supported for PNG right now\n      2.12  (2016-04-02) fix typo in 2.11 PSD fix that caused crashes\n      2.11  (2016-04-02) allocate large structures on the stack\n                         remove white matting for transparent PSD\n                         fix reported channel count for PNG & BMP\n                         re-enable SSE2 in non-gcc 64-bit\n                         support RGB-formatted JPEG\n                         read 16-bit PNGs (only as 8-bit)\n      2.10  (2016-01-22) avoid warning introduced in 2.09 by STBI_REALLOC_SIZED\n      2.09  (2016-01-16) allow comments in PNM files\n                         16-bit-per-pixel TGA (not bit-per-component)\n                         info() for TGA could break due to .hdr handling\n                         info() for BMP to shares code instead of sloppy parse\n                         can use STBI_REALLOC_SIZED if allocator doesn't support realloc\n                         code cleanup\n      2.08  (2015-09-13) fix to 2.07 cleanup, reading RGB PSD as RGBA\n      2.07  (2015-09-13) fix compiler warnings\n                         partial animated GIF support\n                         limited 16-bpc PSD support\n                         #ifdef unused functions\n                         bug with < 92 byte PIC,PNM,HDR,TGA\n      2.06  (2015-04-19) fix bug where PSD returns wrong '*comp' value\n      2.05  (2015-04-19) fix bug in progressive JPEG handling, fix warning\n      2.04  (2015-04-15) try to re-enable SIMD on MinGW 64-bit\n      2.03  (2015-04-12) extra corruption checking (mmozeiko)\n                         stbi_set_flip_vertically_on_load (nguillemot)\n                         fix NEON support; fix mingw support\n      2.02  (2015-01-19) fix incorrect assert, fix warning\n      2.01  (2015-01-17) fix various warnings; suppress SIMD on gcc 32-bit without -msse2\n      2.00b (2014-12-25) fix STBI_MALLOC in progressive JPEG\n      2.00  (2014-12-25) optimize JPG, including x86 SSE2 & NEON SIMD (ryg)\n                         progressive JPEG (stb)\n                         PGM/PPM support (Ken Miller)\n                         STBI_MALLOC,STBI_REALLOC,STBI_FREE\n                         GIF bugfix -- seemingly never worked\n                         STBI_NO_*, STBI_ONLY_*\n      1.48  (2014-12-14) fix incorrectly-named assert()\n      1.47  (2014-12-14) 1/2/4-bit PNG support, both direct and paletted (Omar Cornut & stb)\n                         optimize PNG (ryg)\n                         fix bug in interlaced PNG with user-specified channel count (stb)\n      1.46  (2014-08-26)\n              fix broken tRNS chunk (colorkey-style transparency) in non-paletted PNG\n      1.45  (2014-08-16)\n              fix MSVC-ARM internal compiler error by wrapping malloc\n      1.44  (2014-08-07)\n              various warning fixes from Ronny Chevalier\n      1.43  (2014-07-15)\n              fix MSVC-only compiler problem in code changed in 1.42\n      1.42  (2014-07-09)\n              don't define _CRT_SECURE_NO_WARNINGS (affects user code)\n              fixes to stbi__cleanup_jpeg path\n              added STBI_ASSERT to avoid requiring assert.h\n      1.41  (2014-06-25)\n              fix search&replace from 1.36 that messed up comments/error messages\n      1.40  (2014-06-22)\n              fix gcc struct-initialization warning\n      1.39  (2014-06-15)\n              fix to TGA optimization when req_comp != number of components in TGA;\n              fix to GIF loading because BMP wasn't rewinding (whoops, no GIFs in my test suite)\n              add support for BMP version 5 (more ignored fields)\n      1.38  (2014-06-06)\n              suppress MSVC warnings on integer casts truncating values\n              fix accidental rename of 'skip' field of I/O\n      1.37  (2014-06-04)\n              remove duplicate typedef\n      1.36  (2014-06-03)\n              convert to header file single-file library\n              if de-iphone isn't set, load iphone images color-swapped instead of returning NULL\n      1.35  (2014-05-27)\n              various warnings\n              fix broken STBI_SIMD path\n              fix bug where stbi_load_from_file no longer left file pointer in correct place\n              fix broken non-easy path for 32-bit BMP (possibly never used)\n              TGA optimization by Arseny Kapoulkine\n      1.34  (unknown)\n              use STBI_NOTUSED in stbi__resample_row_generic(), fix one more leak in tga failure case\n      1.33  (2011-07-14)\n              make stbi_is_hdr work in STBI_NO_HDR (as specified), minor compiler-friendly improvements\n      1.32  (2011-07-13)\n              support for \"info\" function for all supported filetypes (SpartanJ)\n      1.31  (2011-06-20)\n              a few more leak fixes, bug in PNG handling (SpartanJ)\n      1.30  (2011-06-11)\n              added ability to load files via callbacks to accomidate custom input streams (Ben Wenger)\n              removed deprecated format-specific test/load functions\n              removed support for installable file formats (stbi_loader) -- would have been broken for IO callbacks anyway\n              error cases in bmp and tga give messages and don't leak (Raymond Barbiero, grisha)\n              fix inefficiency in decoding 32-bit BMP (David Woo)\n      1.29  (2010-08-16)\n              various warning fixes from Aurelien Pocheville\n      1.28  (2010-08-01)\n              fix bug in GIF palette transparency (SpartanJ)\n      1.27  (2010-08-01)\n              cast-to-stbi_uc to fix warnings\n      1.26  (2010-07-24)\n              fix bug in file buffering for PNG reported by SpartanJ\n      1.25  (2010-07-17)\n              refix trans_data warning (Won Chun)\n      1.24  (2010-07-12)\n              perf improvements reading from files on platforms with lock-heavy fgetc()\n              minor perf improvements for jpeg\n              deprecated type-specific functions so we'll get feedback if they're needed\n              attempt to fix trans_data warning (Won Chun)\n      1.23    fixed bug in iPhone support\n      1.22  (2010-07-10)\n              removed image *writing* support\n              stbi_info support from Jetro Lauha\n              GIF support from Jean-Marc Lienher\n              iPhone PNG-extensions from James Brown\n              warning-fixes from Nicolas Schulz and Janez Zemva (i.stbi__err. Janez (U+017D)emva)\n      1.21    fix use of 'stbi_uc' in header (reported by jon blow)\n      1.20    added support for Softimage PIC, by Tom Seddon\n      1.19    bug in interlaced PNG corruption check (found by ryg)\n      1.18  (2008-08-02)\n              fix a threading bug (local mutable static)\n      1.17    support interlaced PNG\n      1.16    major bugfix - stbi__convert_format converted one too many pixels\n      1.15    initialize some fields for thread safety\n      1.14    fix threadsafe conversion bug\n              header-file-only version (#define STBI_HEADER_FILE_ONLY before including)\n      1.13    threadsafe\n      1.12    const qualifiers in the API\n      1.11    Support installable IDCT, colorspace conversion routines\n      1.10    Fixes for 64-bit (don't use \"unsigned long\")\n              optimized upsampling by Fabian \"ryg\" Giesen\n      1.09    Fix format-conversion for PSD code (bad global variables!)\n      1.08    Thatcher Ulrich's PSD code integrated by Nicolas Schulz\n      1.07    attempt to fix C++ warning/errors again\n      1.06    attempt to fix C++ warning/errors again\n      1.05    fix TGA loading to return correct *comp and use good luminance calc\n      1.04    default float alpha is 1, not 255; use 'void *' for stbi_image_free\n      1.03    bugfixes to STBI_NO_STDIO, STBI_NO_HDR\n      1.02    support for (subset of) HDR files, float interface for preferred access to them\n      1.01    fix bug: possible bug in handling right-side up bmps... not sure\n              fix bug: the stbi__bmp_load() and stbi__tga_load() functions didn't work at all\n      1.00    interface to zlib that skips zlib header\n      0.99    correct handling of alpha in palette\n      0.98    TGA loader by lonesock; dynamically add loaders (untested)\n      0.97    jpeg errors on too large a file; also catch another malloc failure\n      0.96    fix detection of invalid v value - particleman@mollyrocket forum\n      0.95    during header scan, seek to markers in case of padding\n      0.94    STBI_NO_STDIO to disable stdio usage; rename all #defines the same\n      0.93    handle jpegtran output; verbose errors\n      0.92    read 4,8,16,24,32-bit BMP files of several formats\n      0.91    output 24-bit Windows 3.0 BMP files\n      0.90    fix a few more warnings; bump version number to approach 1.0\n      0.61    bugfixes due to Marc LeBlanc, Christopher Lloyd\n      0.60    fix compiling as c++\n      0.59    fix warnings: merge Dave Moore's -Wall fixes\n      0.58    fix bug: zlib uncompressed mode len/nlen was wrong endian\n      0.57    fix bug: jpg last huffman symbol before marker was >9 bits but less than 16 available\n      0.56    fix bug: zlib uncompressed mode len vs. nlen\n      0.55    fix bug: restart_interval not initialized to 0\n      0.54    allow NULL for 'int *comp'\n      0.53    fix bug in png 3->4; speedup png decoding\n      0.52    png handles req_comp=3,4 directly; minor cleanup; jpeg comments\n      0.51    obey req_comp requests, 1-component jpegs return as 1-component,\n              on 'test' only check type, not whether we support this variant\n      0.50  (2006-11-19)\n              first released version\n*/\n\n\n/*\n------------------------------------------------------------------------------\nThis software is available under 2 licenses -- choose whichever you prefer.\n------------------------------------------------------------------------------\nALTERNATIVE A - MIT License\nCopyright (c) 2017 Sean Barrett\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n------------------------------------------------------------------------------\nALTERNATIVE B - Public Domain (www.unlicense.org)\nThis is free and unencumbered software released into the public domain.\nAnyone is free to copy, modify, publish, use, compile, sell, or distribute this\nsoftware, either in source code form or as a compiled binary, for any purpose,\ncommercial or non-commercial, and by any means.\nIn jurisdictions that recognize copyright laws, the author or authors of this\nsoftware dedicate any and all copyright interest in the software to the public\ndomain. We make this dedication for the benefit of the public at large and to\nthe detriment of our heirs and successors. We intend this dedication to be an\novert act of relinquishment in perpetuity of all present and future rights to\nthis software under copyright law.\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\nACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n------------------------------------------------------------------------------\n*/\n"
  },
  {
    "path": "tools/sm64tools/stb/stb_image_write.h",
    "content": "/* stb_image_write - v1.09 - public domain - http://nothings.org/stb/stb_image_write.h\n   writes out PNG/BMP/TGA/JPEG/HDR images to C stdio - Sean Barrett 2010-2015\n                                     no warranty implied; use at your own risk\n\n   Before #including,\n\n       #define STB_IMAGE_WRITE_IMPLEMENTATION\n\n   in the file that you want to have the implementation.\n\n   Will probably not work correctly with strict-aliasing optimizations.\n\n   If using a modern Microsoft Compiler, non-safe versions of CRT calls may cause \n   compilation warnings or even errors. To avoid this, also before #including,\n\n       #define STBI_MSC_SECURE_CRT\n\nABOUT:\n\n   This header file is a library for writing images to C stdio. It could be\n   adapted to write to memory or a general streaming interface; let me know.\n\n   The PNG output is not optimal; it is 20-50% larger than the file\n   written by a decent optimizing implementation; though providing a custom\n   zlib compress function (see STBIW_ZLIB_COMPRESS) can mitigate that.\n   This library is designed for source code compactness and simplicity,\n   not optimal image file size or run-time performance.\n\nBUILDING:\n\n   You can #define STBIW_ASSERT(x) before the #include to avoid using assert.h.\n   You can #define STBIW_MALLOC(), STBIW_REALLOC(), and STBIW_FREE() to replace\n   malloc,realloc,free.\n   You can #define STBIW_MEMMOVE() to replace memmove()\n   You can #define STBIW_ZLIB_COMPRESS to use a custom zlib-style compress function\n   for PNG compression (instead of the builtin one), it must have the following signature:\n   unsigned char * my_compress(unsigned char *data, int data_len, int *out_len, int quality);\n   The returned data will be freed with STBIW_FREE() (free() by default),\n   so it must be heap allocated with STBIW_MALLOC() (malloc() by default),\n\nUSAGE:\n\n   There are five functions, one for each image file format:\n\n     int stbi_write_png(char const *filename, int w, int h, int comp, const void *data, int stride_in_bytes);\n     int stbi_write_bmp(char const *filename, int w, int h, int comp, const void *data);\n     int stbi_write_tga(char const *filename, int w, int h, int comp, const void *data);\n     int stbi_write_jpg(char const *filename, int w, int h, int comp, const void *data, int quality);\n     int stbi_write_hdr(char const *filename, int w, int h, int comp, const float *data);\n\n     void stbi_flip_vertically_on_write(int flag); // flag is non-zero to flip data vertically\n\n   There are also five equivalent functions that use an arbitrary write function. You are\n   expected to open/close your file-equivalent before and after calling these:\n\n     int stbi_write_png_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void  *data, int stride_in_bytes);\n     int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void  *data);\n     int stbi_write_tga_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void  *data);\n     int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const float *data);\n     int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality);\n\n   where the callback is:\n      void stbi_write_func(void *context, void *data, int size);\n\n   You can configure it with these global variables:\n      int stbi_write_tga_with_rle;             // defaults to true; set to 0 to disable RLE\n      int stbi_write_png_compression_level;    // defaults to 8; set to higher for more compression\n      int stbi_write_force_png_filter;         // defaults to -1; set to 0..5 to force a filter mode\n\n\n   You can define STBI_WRITE_NO_STDIO to disable the file variant of these\n   functions, so the library will not use stdio.h at all. However, this will\n   also disable HDR writing, because it requires stdio for formatted output.\n\n   Each function returns 0 on failure and non-0 on success.\n\n   The functions create an image file defined by the parameters. The image\n   is a rectangle of pixels stored from left-to-right, top-to-bottom.\n   Each pixel contains 'comp' channels of data stored interleaved with 8-bits\n   per channel, in the following order: 1=Y, 2=YA, 3=RGB, 4=RGBA. (Y is\n   monochrome color.) The rectangle is 'w' pixels wide and 'h' pixels tall.\n   The *data pointer points to the first byte of the top-left-most pixel.\n   For PNG, \"stride_in_bytes\" is the distance in bytes from the first byte of\n   a row of pixels to the first byte of the next row of pixels.\n\n   PNG creates output files with the same number of components as the input.\n   The BMP format expands Y to RGB in the file format and does not\n   output alpha.\n\n   PNG supports writing rectangles of data even when the bytes storing rows of\n   data are not consecutive in memory (e.g. sub-rectangles of a larger image),\n   by supplying the stride between the beginning of adjacent rows. The other\n   formats do not. (Thus you cannot write a native-format BMP through the BMP\n   writer, both because it is in BGR order and because it may have padding\n   at the end of the line.)\n\n   PNG allows you to set the deflate compression level by setting the global\n   variable 'stbi_write_png_compression_level' (it defaults to 8).\n\n   HDR expects linear float data. Since the format is always 32-bit rgb(e)\n   data, alpha (if provided) is discarded, and for monochrome data it is\n   replicated across all three channels.\n\n   TGA supports RLE or non-RLE compressed data. To use non-RLE-compressed\n   data, set the global variable 'stbi_write_tga_with_rle' to 0.\n   \n   JPEG does ignore alpha channels in input data; quality is between 1 and 100.\n   Higher quality looks better but results in a bigger image.\n   JPEG baseline (no JPEG progressive).\n\nCREDITS:\n\n\n   Sean Barrett           -    PNG/BMP/TGA \n   Baldur Karlsson        -    HDR\n   Jean-Sebastien Guay    -    TGA monochrome\n   Tim Kelsey             -    misc enhancements\n   Alan Hickman           -    TGA RLE\n   Emmanuel Julien        -    initial file IO callback implementation\n   Jon Olick              -    original jo_jpeg.cpp code\n   Daniel Gibson          -    integrate JPEG, allow external zlib\n   Aarni Koskela          -    allow choosing PNG filter\n\n   bugfixes:\n      github:Chribba\n      Guillaume Chereau\n      github:jry2\n      github:romigrou\n      Sergio Gonzalez\n      Jonas Karlsson\n      Filip Wasil\n      Thatcher Ulrich\n      github:poppolopoppo\n      Patrick Boettcher\n      github:xeekworx\n      Cap Petschulat\n      Simon Rodriguez\n      Ivan Tikhonov\n      github:ignotion\n      Adam Schackart\n\nLICENSE\n\n  See end of file for license information.\n\n*/\n\n#ifndef INCLUDE_STB_IMAGE_WRITE_H\n#define INCLUDE_STB_IMAGE_WRITE_H\n\n// if STB_IMAGE_WRITE_STATIC causes problems, try defining STBIWDEF to 'inline' or 'static inline'\n#ifndef STBIWDEF\n#ifdef STB_IMAGE_WRITE_STATIC\n#define STBIWDEF  static\n#else\n#ifdef __cplusplus\n#define STBIWDEF  extern \"C\"\n#else\n#define STBIWDEF  extern\n#endif\n#endif\n#endif\n\n#ifndef STB_IMAGE_WRITE_STATIC  // C++ forbids static forward declarations\nextern int stbi_write_tga_with_rle;\nextern int stbi_write_png_compression_level;\nextern int stbi_write_force_png_filter;\n#endif\n\n#ifndef STBI_WRITE_NO_STDIO\nSTBIWDEF int stbi_write_png(char const *filename, int w, int h, int comp, const void  *data, int stride_in_bytes);\nSTBIWDEF int stbi_write_bmp(char const *filename, int w, int h, int comp, const void  *data);\nSTBIWDEF int stbi_write_tga(char const *filename, int w, int h, int comp, const void  *data);\nSTBIWDEF int stbi_write_hdr(char const *filename, int w, int h, int comp, const float *data);\nSTBIWDEF int stbi_write_jpg(char const *filename, int x, int y, int comp, const void  *data, int quality);\n#endif\n\ntypedef void stbi_write_func(void *context, void *data, int size);\n\nSTBIWDEF int stbi_write_png_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void  *data, int stride_in_bytes);\nSTBIWDEF int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void  *data);\nSTBIWDEF int stbi_write_tga_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void  *data);\nSTBIWDEF int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const float *data);\nSTBIWDEF int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void  *data, int quality);\n\nSTBIWDEF void stbi_flip_vertically_on_write(int flip_boolean);\n\n#endif//INCLUDE_STB_IMAGE_WRITE_H\n\n#ifdef STB_IMAGE_WRITE_IMPLEMENTATION\n\n#ifdef _WIN32\n   #ifndef _CRT_SECURE_NO_WARNINGS\n   #define _CRT_SECURE_NO_WARNINGS\n   #endif\n   #ifndef _CRT_NONSTDC_NO_DEPRECATE\n   #define _CRT_NONSTDC_NO_DEPRECATE\n   #endif\n#endif\n\n#ifndef STBI_WRITE_NO_STDIO\n#include <stdio.h>\n#endif // STBI_WRITE_NO_STDIO\n\n#include <stdarg.h>\n#include <stdlib.h>\n#include <string.h>\n#include <math.h>\n\n#if defined(STBIW_MALLOC) && defined(STBIW_FREE) && (defined(STBIW_REALLOC) || defined(STBIW_REALLOC_SIZED))\n// ok\n#elif !defined(STBIW_MALLOC) && !defined(STBIW_FREE) && !defined(STBIW_REALLOC) && !defined(STBIW_REALLOC_SIZED)\n// ok\n#else\n#error \"Must define all or none of STBIW_MALLOC, STBIW_FREE, and STBIW_REALLOC (or STBIW_REALLOC_SIZED).\"\n#endif\n\n#ifndef STBIW_MALLOC\n#define STBIW_MALLOC(sz)        malloc(sz)\n#define STBIW_REALLOC(p,newsz)  realloc(p,newsz)\n#define STBIW_FREE(p)           free(p)\n#endif\n\n#ifndef STBIW_REALLOC_SIZED\n#define STBIW_REALLOC_SIZED(p,oldsz,newsz) STBIW_REALLOC(p,newsz)\n#endif\n\n\n#ifndef STBIW_MEMMOVE\n#define STBIW_MEMMOVE(a,b,sz) memmove(a,b,sz)\n#endif\n\n\n#ifndef STBIW_ASSERT\n#include <assert.h>\n#define STBIW_ASSERT(x) assert(x)\n#endif\n\n#define STBIW_UCHAR(x) (unsigned char) ((x) & 0xff)\n\n#ifdef STB_IMAGE_WRITE_STATIC\nstatic int stbi__flip_vertically_on_write=0;\nstatic int stbi_write_png_compression_level = 8;\nstatic int stbi_write_tga_with_rle = 1;\nstatic int stbi_write_force_png_filter = -1;\n#else\nint stbi_write_png_compression_level = 8;\nint stbi__flip_vertically_on_write=0;\nint stbi_write_tga_with_rle = 1;\nint stbi_write_force_png_filter = -1;\n#endif\n\nSTBIWDEF void stbi_flip_vertically_on_write(int flag)\n{\n   stbi__flip_vertically_on_write = flag;\n}\n\ntypedef struct\n{\n   stbi_write_func *func;\n   void *context;\n} stbi__write_context;\n\n// initialize a callback-based context\nstatic void stbi__start_write_callbacks(stbi__write_context *s, stbi_write_func *c, void *context)\n{\n   s->func    = c;\n   s->context = context;\n}\n\n#ifndef STBI_WRITE_NO_STDIO\n\nstatic void stbi__stdio_write(void *context, void *data, int size)\n{\n   fwrite(data,1,size,(FILE*) context);\n}\n\nstatic int stbi__start_write_file(stbi__write_context *s, const char *filename)\n{\n   FILE *f;\n#ifdef STBI_MSC_SECURE_CRT\n   if (fopen_s(&f, filename, \"wb\"))\n      f = NULL;\n#else\n   f = fopen(filename, \"wb\");\n#endif\n   stbi__start_write_callbacks(s, stbi__stdio_write, (void *) f);\n   return f != NULL;\n}\n\nstatic void stbi__end_write_file(stbi__write_context *s)\n{\n   fclose((FILE *)s->context);\n}\n\n#endif // !STBI_WRITE_NO_STDIO\n\ntypedef unsigned int stbiw_uint32;\ntypedef int stb_image_write_test[sizeof(stbiw_uint32)==4 ? 1 : -1];\n\nstatic void stbiw__writefv(stbi__write_context *s, const char *fmt, va_list v)\n{\n   while (*fmt) {\n      switch (*fmt++) {\n         case ' ': break;\n         case '1': { unsigned char x = STBIW_UCHAR(va_arg(v, int));\n                     s->func(s->context,&x,1);\n                     break; }\n         case '2': { int x = va_arg(v,int);\n                     unsigned char b[2];\n                     b[0] = STBIW_UCHAR(x);\n                     b[1] = STBIW_UCHAR(x>>8);\n                     s->func(s->context,b,2);\n                     break; }\n         case '4': { stbiw_uint32 x = va_arg(v,int);\n                     unsigned char b[4];\n                     b[0]=STBIW_UCHAR(x);\n                     b[1]=STBIW_UCHAR(x>>8);\n                     b[2]=STBIW_UCHAR(x>>16);\n                     b[3]=STBIW_UCHAR(x>>24);\n                     s->func(s->context,b,4);\n                     break; }\n         default:\n            STBIW_ASSERT(0);\n            return;\n      }\n   }\n}\n\nstatic void stbiw__writef(stbi__write_context *s, const char *fmt, ...)\n{\n   va_list v;\n   va_start(v, fmt);\n   stbiw__writefv(s, fmt, v);\n   va_end(v);\n}\n\nstatic void stbiw__putc(stbi__write_context *s, unsigned char c)\n{\n   s->func(s->context, &c, 1);\n}\n\nstatic void stbiw__write3(stbi__write_context *s, unsigned char a, unsigned char b, unsigned char c)\n{\n   unsigned char arr[3];\n   arr[0] = a, arr[1] = b, arr[2] = c;\n   s->func(s->context, arr, 3);\n}\n\nstatic void stbiw__write_pixel(stbi__write_context *s, int rgb_dir, int comp, int write_alpha, int expand_mono, unsigned char *d)\n{\n   unsigned char bg[3] = { 255, 0, 255}, px[3];\n   int k;\n\n   if (write_alpha < 0)\n      s->func(s->context, &d[comp - 1], 1);\n\n   switch (comp) {\n      case 2: // 2 pixels = mono + alpha, alpha is written separately, so same as 1-channel case\n      case 1:\n         if (expand_mono)\n            stbiw__write3(s, d[0], d[0], d[0]); // monochrome bmp\n         else\n            s->func(s->context, d, 1);  // monochrome TGA\n         break;\n      case 4:\n         if (!write_alpha) {\n            // composite against pink background\n            for (k = 0; k < 3; ++k)\n               px[k] = bg[k] + ((d[k] - bg[k]) * d[3]) / 255;\n            stbiw__write3(s, px[1 - rgb_dir], px[1], px[1 + rgb_dir]);\n            break;\n         }\n         /* FALLTHROUGH */\n      case 3:\n         stbiw__write3(s, d[1 - rgb_dir], d[1], d[1 + rgb_dir]);\n         break;\n   }\n   if (write_alpha > 0)\n      s->func(s->context, &d[comp - 1], 1);\n}\n\nstatic void stbiw__write_pixels(stbi__write_context *s, int rgb_dir, int vdir, int x, int y, int comp, void *data, int write_alpha, int scanline_pad, int expand_mono)\n{\n   stbiw_uint32 zero = 0;\n   int i,j, j_end;\n\n   if (y <= 0)\n      return;\n\n   if (stbi__flip_vertically_on_write)\n      vdir *= -1;\n\n   if (vdir < 0)\n      j_end = -1, j = y-1;\n   else\n      j_end =  y, j = 0;\n\n   for (; j != j_end; j += vdir) {\n      for (i=0; i < x; ++i) {\n         unsigned char *d = (unsigned char *) data + (j*x+i)*comp;\n         stbiw__write_pixel(s, rgb_dir, comp, write_alpha, expand_mono, d);\n      }\n      s->func(s->context, &zero, scanline_pad);\n   }\n}\n\nstatic int stbiw__outfile(stbi__write_context *s, int rgb_dir, int vdir, int x, int y, int comp, int expand_mono, void *data, int alpha, int pad, const char *fmt, ...)\n{\n   if (y < 0 || x < 0) {\n      return 0;\n   } else {\n      va_list v;\n      va_start(v, fmt);\n      stbiw__writefv(s, fmt, v);\n      va_end(v);\n      stbiw__write_pixels(s,rgb_dir,vdir,x,y,comp,data,alpha,pad, expand_mono);\n      return 1;\n   }\n}\n\nstatic int stbi_write_bmp_core(stbi__write_context *s, int x, int y, int comp, const void *data)\n{\n   int pad = (-x*3) & 3;\n   return stbiw__outfile(s,-1,-1,x,y,comp,1,(void *) data,0,pad,\n           \"11 4 22 4\" \"4 44 22 444444\",\n           'B', 'M', 14+40+(x*3+pad)*y, 0,0, 14+40,  // file header\n            40, x,y, 1,24, 0,0,0,0,0,0);             // bitmap header\n}\n\nSTBIWDEF int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data)\n{\n   stbi__write_context s;\n   stbi__start_write_callbacks(&s, func, context);\n   return stbi_write_bmp_core(&s, x, y, comp, data);\n}\n\n#ifndef STBI_WRITE_NO_STDIO\nSTBIWDEF int stbi_write_bmp(char const *filename, int x, int y, int comp, const void *data)\n{\n   stbi__write_context s;\n   if (stbi__start_write_file(&s,filename)) {\n      int r = stbi_write_bmp_core(&s, x, y, comp, data);\n      stbi__end_write_file(&s);\n      return r;\n   } else\n      return 0;\n}\n#endif //!STBI_WRITE_NO_STDIO\n\nstatic int stbi_write_tga_core(stbi__write_context *s, int x, int y, int comp, void *data)\n{\n   int has_alpha = (comp == 2 || comp == 4);\n   int colorbytes = has_alpha ? comp-1 : comp;\n   int format = colorbytes < 2 ? 3 : 2; // 3 color channels (RGB/RGBA) = 2, 1 color channel (Y/YA) = 3\n\n   if (y < 0 || x < 0)\n      return 0;\n\n   if (!stbi_write_tga_with_rle) {\n      return stbiw__outfile(s, -1, -1, x, y, comp, 0, (void *) data, has_alpha, 0,\n         \"111 221 2222 11\", 0, 0, format, 0, 0, 0, 0, 0, x, y, (colorbytes + has_alpha) * 8, has_alpha * 8);\n   } else {\n      int i,j,k;\n      int jend, jdir;\n\n      stbiw__writef(s, \"111 221 2222 11\", 0,0,format+8, 0,0,0, 0,0,x,y, (colorbytes + has_alpha) * 8, has_alpha * 8);\n\n      if (stbi__flip_vertically_on_write) {\n         j = 0;\n         jend = y;\n         jdir = 1;\n      } else {\n         j = y-1;\n         jend = -1;\n         jdir = -1;\n      }\n      for (; j != jend; j += jdir) {\n         unsigned char *row = (unsigned char *) data + j * x * comp;\n         int len;\n\n         for (i = 0; i < x; i += len) {\n            unsigned char *begin = row + i * comp;\n            int diff = 1;\n            len = 1;\n\n            if (i < x - 1) {\n               ++len;\n               diff = memcmp(begin, row + (i + 1) * comp, comp);\n               if (diff) {\n                  const unsigned char *prev = begin;\n                  for (k = i + 2; k < x && len < 128; ++k) {\n                     if (memcmp(prev, row + k * comp, comp)) {\n                        prev += comp;\n                        ++len;\n                     } else {\n                        --len;\n                        break;\n                     }\n                  }\n               } else {\n                  for (k = i + 2; k < x && len < 128; ++k) {\n                     if (!memcmp(begin, row + k * comp, comp)) {\n                        ++len;\n                     } else {\n                        break;\n                     }\n                  }\n               }\n            }\n\n            if (diff) {\n               unsigned char header = STBIW_UCHAR(len - 1);\n               s->func(s->context, &header, 1);\n               for (k = 0; k < len; ++k) {\n                  stbiw__write_pixel(s, -1, comp, has_alpha, 0, begin + k * comp);\n               }\n            } else {\n               unsigned char header = STBIW_UCHAR(len - 129);\n               s->func(s->context, &header, 1);\n               stbiw__write_pixel(s, -1, comp, has_alpha, 0, begin);\n            }\n         }\n      }\n   }\n   return 1;\n}\n\nSTBIWDEF int stbi_write_tga_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data)\n{\n   stbi__write_context s;\n   stbi__start_write_callbacks(&s, func, context);\n   return stbi_write_tga_core(&s, x, y, comp, (void *) data);\n}\n\n#ifndef STBI_WRITE_NO_STDIO\nSTBIWDEF int stbi_write_tga(char const *filename, int x, int y, int comp, const void *data)\n{\n   stbi__write_context s;\n   if (stbi__start_write_file(&s,filename)) {\n      int r = stbi_write_tga_core(&s, x, y, comp, (void *) data);\n      stbi__end_write_file(&s);\n      return r;\n   } else\n      return 0;\n}\n#endif\n\n// *************************************************************************************************\n// Radiance RGBE HDR writer\n// by Baldur Karlsson\n\n#define stbiw__max(a, b)  ((a) > (b) ? (a) : (b))\n\nvoid stbiw__linear_to_rgbe(unsigned char *rgbe, float *linear)\n{\n   int exponent;\n   float maxcomp = stbiw__max(linear[0], stbiw__max(linear[1], linear[2]));\n\n   if (maxcomp < 1e-32f) {\n      rgbe[0] = rgbe[1] = rgbe[2] = rgbe[3] = 0;\n   } else {\n      float normalize = (float) frexp(maxcomp, &exponent) * 256.0f/maxcomp;\n\n      rgbe[0] = (unsigned char)(linear[0] * normalize);\n      rgbe[1] = (unsigned char)(linear[1] * normalize);\n      rgbe[2] = (unsigned char)(linear[2] * normalize);\n      rgbe[3] = (unsigned char)(exponent + 128);\n   }\n}\n\nvoid stbiw__write_run_data(stbi__write_context *s, int length, unsigned char databyte)\n{\n   unsigned char lengthbyte = STBIW_UCHAR(length+128);\n   STBIW_ASSERT(length+128 <= 255);\n   s->func(s->context, &lengthbyte, 1);\n   s->func(s->context, &databyte, 1);\n}\n\nvoid stbiw__write_dump_data(stbi__write_context *s, int length, unsigned char *data)\n{\n   unsigned char lengthbyte = STBIW_UCHAR(length);\n   STBIW_ASSERT(length <= 128); // inconsistent with spec but consistent with official code\n   s->func(s->context, &lengthbyte, 1);\n   s->func(s->context, data, length);\n}\n\nvoid stbiw__write_hdr_scanline(stbi__write_context *s, int width, int ncomp, unsigned char *scratch, float *scanline)\n{\n   unsigned char scanlineheader[4] = { 2, 2, 0, 0 };\n   unsigned char rgbe[4];\n   float linear[3];\n   int x;\n\n   scanlineheader[2] = (width&0xff00)>>8;\n   scanlineheader[3] = (width&0x00ff);\n\n   /* skip RLE for images too small or large */\n   if (width < 8 || width >= 32768) {\n      for (x=0; x < width; x++) {\n         switch (ncomp) {\n            case 4: /* fallthrough */\n            case 3: linear[2] = scanline[x*ncomp + 2];\n                    linear[1] = scanline[x*ncomp + 1];\n                    linear[0] = scanline[x*ncomp + 0];\n                    break;\n            default:\n                    linear[0] = linear[1] = linear[2] = scanline[x*ncomp + 0];\n                    break;\n         }\n         stbiw__linear_to_rgbe(rgbe, linear);\n         s->func(s->context, rgbe, 4);\n      }\n   } else {\n      int c,r;\n      /* encode into scratch buffer */\n      for (x=0; x < width; x++) {\n         switch(ncomp) {\n            case 4: /* fallthrough */\n            case 3: linear[2] = scanline[x*ncomp + 2];\n                    linear[1] = scanline[x*ncomp + 1];\n                    linear[0] = scanline[x*ncomp + 0];\n                    break;\n            default:\n                    linear[0] = linear[1] = linear[2] = scanline[x*ncomp + 0];\n                    break;\n         }\n         stbiw__linear_to_rgbe(rgbe, linear);\n         scratch[x + width*0] = rgbe[0];\n         scratch[x + width*1] = rgbe[1];\n         scratch[x + width*2] = rgbe[2];\n         scratch[x + width*3] = rgbe[3];\n      }\n\n      s->func(s->context, scanlineheader, 4);\n\n      /* RLE each component separately */\n      for (c=0; c < 4; c++) {\n         unsigned char *comp = &scratch[width*c];\n\n         x = 0;\n         while (x < width) {\n            // find first run\n            r = x;\n            while (r+2 < width) {\n               if (comp[r] == comp[r+1] && comp[r] == comp[r+2])\n                  break;\n               ++r;\n            }\n            if (r+2 >= width)\n               r = width;\n            // dump up to first run\n            while (x < r) {\n               int len = r-x;\n               if (len > 128) len = 128;\n               stbiw__write_dump_data(s, len, &comp[x]);\n               x += len;\n            }\n            // if there's a run, output it\n            if (r+2 < width) { // same test as what we break out of in search loop, so only true if we break'd\n               // find next byte after run\n               while (r < width && comp[r] == comp[x])\n                  ++r;\n               // output run up to r\n               while (x < r) {\n                  int len = r-x;\n                  if (len > 127) len = 127;\n                  stbiw__write_run_data(s, len, comp[x]);\n                  x += len;\n               }\n            }\n         }\n      }\n   }\n}\n\nstatic int stbi_write_hdr_core(stbi__write_context *s, int x, int y, int comp, float *data)\n{\n   if (y <= 0 || x <= 0 || data == NULL)\n      return 0;\n   else {\n      // Each component is stored separately. Allocate scratch space for full output scanline.\n      unsigned char *scratch = (unsigned char *) STBIW_MALLOC(x*4);\n      int i, len;\n      char buffer[128];\n      char header[] = \"#?RADIANCE\\n# Written by stb_image_write.h\\nFORMAT=32-bit_rle_rgbe\\n\";\n      s->func(s->context, header, sizeof(header)-1);\n\n#ifdef STBI_MSC_SECURE_CRT\n      len = sprintf_s(buffer, \"EXPOSURE=          1.0000000000000\\n\\n-Y %d +X %d\\n\", y, x);\n#else\n      len = sprintf(buffer, \"EXPOSURE=          1.0000000000000\\n\\n-Y %d +X %d\\n\", y, x);\n#endif\n      s->func(s->context, buffer, len);\n\n      for(i=0; i < y; i++)\n         stbiw__write_hdr_scanline(s, x, comp, scratch, data + comp*x*(stbi__flip_vertically_on_write ? y-1-i : i)*x);\n      STBIW_FREE(scratch);\n      return 1;\n   }\n}\n\nSTBIWDEF int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const float *data)\n{\n   stbi__write_context s;\n   stbi__start_write_callbacks(&s, func, context);\n   return stbi_write_hdr_core(&s, x, y, comp, (float *) data);\n}\n\n#ifndef STBI_WRITE_NO_STDIO\nSTBIWDEF int stbi_write_hdr(char const *filename, int x, int y, int comp, const float *data)\n{\n   stbi__write_context s;\n   if (stbi__start_write_file(&s,filename)) {\n      int r = stbi_write_hdr_core(&s, x, y, comp, (float *) data);\n      stbi__end_write_file(&s);\n      return r;\n   } else\n      return 0;\n}\n#endif // STBI_WRITE_NO_STDIO\n\n\n//////////////////////////////////////////////////////////////////////////////\n//\n// PNG writer\n//\n\n#ifndef STBIW_ZLIB_COMPRESS\n// stretchy buffer; stbiw__sbpush() == vector<>::push_back() -- stbiw__sbcount() == vector<>::size()\n#define stbiw__sbraw(a) ((int *) (a) - 2)\n#define stbiw__sbm(a)   stbiw__sbraw(a)[0]\n#define stbiw__sbn(a)   stbiw__sbraw(a)[1]\n\n#define stbiw__sbneedgrow(a,n)  ((a)==0 || stbiw__sbn(a)+n >= stbiw__sbm(a))\n#define stbiw__sbmaybegrow(a,n) (stbiw__sbneedgrow(a,(n)) ? stbiw__sbgrow(a,n) : 0)\n#define stbiw__sbgrow(a,n)  stbiw__sbgrowf((void **) &(a), (n), sizeof(*(a)))\n\n#define stbiw__sbpush(a, v)      (stbiw__sbmaybegrow(a,1), (a)[stbiw__sbn(a)++] = (v))\n#define stbiw__sbcount(a)        ((a) ? stbiw__sbn(a) : 0)\n#define stbiw__sbfree(a)         ((a) ? STBIW_FREE(stbiw__sbraw(a)),0 : 0)\n\nstatic void *stbiw__sbgrowf(void **arr, int increment, int itemsize)\n{\n   int m = *arr ? 2*stbiw__sbm(*arr)+increment : increment+1;\n   void *p = STBIW_REALLOC_SIZED(*arr ? stbiw__sbraw(*arr) : 0, *arr ? (stbiw__sbm(*arr)*itemsize + sizeof(int)*2) : 0, itemsize * m + sizeof(int)*2);\n   STBIW_ASSERT(p);\n   if (p) {\n      if (!*arr) ((int *) p)[1] = 0;\n      *arr = (void *) ((int *) p + 2);\n      stbiw__sbm(*arr) = m;\n   }\n   return *arr;\n}\n\nstatic unsigned char *stbiw__zlib_flushf(unsigned char *data, unsigned int *bitbuffer, int *bitcount)\n{\n   while (*bitcount >= 8) {\n      stbiw__sbpush(data, STBIW_UCHAR(*bitbuffer));\n      *bitbuffer >>= 8;\n      *bitcount -= 8;\n   }\n   return data;\n}\n\nstatic int stbiw__zlib_bitrev(int code, int codebits)\n{\n   int res=0;\n   while (codebits--) {\n      res = (res << 1) | (code & 1);\n      code >>= 1;\n   }\n   return res;\n}\n\nstatic unsigned int stbiw__zlib_countm(unsigned char *a, unsigned char *b, int limit)\n{\n   int i;\n   for (i=0; i < limit && i < 258; ++i)\n      if (a[i] != b[i]) break;\n   return i;\n}\n\nstatic unsigned int stbiw__zhash(unsigned char *data)\n{\n   stbiw_uint32 hash = data[0] + (data[1] << 8) + (data[2] << 16);\n   hash ^= hash << 3;\n   hash += hash >> 5;\n   hash ^= hash << 4;\n   hash += hash >> 17;\n   hash ^= hash << 25;\n   hash += hash >> 6;\n   return hash;\n}\n\n#define stbiw__zlib_flush() (out = stbiw__zlib_flushf(out, &bitbuf, &bitcount))\n#define stbiw__zlib_add(code,codebits) \\\n      (bitbuf |= (code) << bitcount, bitcount += (codebits), stbiw__zlib_flush())\n#define stbiw__zlib_huffa(b,c)  stbiw__zlib_add(stbiw__zlib_bitrev(b,c),c)\n// default huffman tables\n#define stbiw__zlib_huff1(n)  stbiw__zlib_huffa(0x30 + (n), 8)\n#define stbiw__zlib_huff2(n)  stbiw__zlib_huffa(0x190 + (n)-144, 9)\n#define stbiw__zlib_huff3(n)  stbiw__zlib_huffa(0 + (n)-256,7)\n#define stbiw__zlib_huff4(n)  stbiw__zlib_huffa(0xc0 + (n)-280,8)\n#define stbiw__zlib_huff(n)  ((n) <= 143 ? stbiw__zlib_huff1(n) : (n) <= 255 ? stbiw__zlib_huff2(n) : (n) <= 279 ? stbiw__zlib_huff3(n) : stbiw__zlib_huff4(n))\n#define stbiw__zlib_huffb(n) ((n) <= 143 ? stbiw__zlib_huff1(n) : stbiw__zlib_huff2(n))\n\n#define stbiw__ZHASH   16384\n\n#endif // STBIW_ZLIB_COMPRESS\n\nunsigned char * stbi_zlib_compress(unsigned char *data, int data_len, int *out_len, int quality)\n{\n#ifdef STBIW_ZLIB_COMPRESS\n   // user provided a zlib compress implementation, use that\n   return STBIW_ZLIB_COMPRESS(data, data_len, out_len, quality);\n#else // use builtin\n   static unsigned short lengthc[] = { 3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258, 259 };\n   static unsigned char  lengtheb[]= { 0,0,0,0,0,0,0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4,  4,  5,  5,  5,  5,  0 };\n   static unsigned short distc[]   = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577, 32768 };\n   static unsigned char  disteb[]  = { 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13 };\n   unsigned int bitbuf=0;\n   int i,j, bitcount=0;\n   unsigned char *out = NULL;\n   unsigned char ***hash_table = (unsigned char***) STBIW_MALLOC(stbiw__ZHASH * sizeof(char**));\n   if (hash_table == NULL)\n      return NULL;\n   if (quality < 5) quality = 5;\n\n   stbiw__sbpush(out, 0x78);   // DEFLATE 32K window\n   stbiw__sbpush(out, 0x5e);   // FLEVEL = 1\n   stbiw__zlib_add(1,1);  // BFINAL = 1\n   stbiw__zlib_add(1,2);  // BTYPE = 1 -- fixed huffman\n\n   for (i=0; i < stbiw__ZHASH; ++i)\n      hash_table[i] = NULL;\n\n   i=0;\n   while (i < data_len-3) {\n      // hash next 3 bytes of data to be compressed\n      int h = stbiw__zhash(data+i)&(stbiw__ZHASH-1), best=3;\n      unsigned char *bestloc = 0;\n      unsigned char **hlist = hash_table[h];\n      int n = stbiw__sbcount(hlist);\n      for (j=0; j < n; ++j) {\n         if (hlist[j]-data > i-32768) { // if entry lies within window\n            int d = stbiw__zlib_countm(hlist[j], data+i, data_len-i);\n            if (d >= best) best=d,bestloc=hlist[j];\n         }\n      }\n      // when hash table entry is too long, delete half the entries\n      if (hash_table[h] && stbiw__sbn(hash_table[h]) == 2*quality) {\n         STBIW_MEMMOVE(hash_table[h], hash_table[h]+quality, sizeof(hash_table[h][0])*quality);\n         stbiw__sbn(hash_table[h]) = quality;\n      }\n      stbiw__sbpush(hash_table[h],data+i);\n\n      if (bestloc) {\n         // \"lazy matching\" - check match at *next* byte, and if it's better, do cur byte as literal\n         h = stbiw__zhash(data+i+1)&(stbiw__ZHASH-1);\n         hlist = hash_table[h];\n         n = stbiw__sbcount(hlist);\n         for (j=0; j < n; ++j) {\n            if (hlist[j]-data > i-32767) {\n               int e = stbiw__zlib_countm(hlist[j], data+i+1, data_len-i-1);\n               if (e > best) { // if next match is better, bail on current match\n                  bestloc = NULL;\n                  break;\n               }\n            }\n         }\n      }\n\n      if (bestloc) {\n         int d = (int) (data+i - bestloc); // distance back\n         STBIW_ASSERT(d <= 32767 && best <= 258);\n         for (j=0; best > lengthc[j+1]-1; ++j);\n         stbiw__zlib_huff(j+257);\n         if (lengtheb[j]) stbiw__zlib_add(best - lengthc[j], lengtheb[j]);\n         for (j=0; d > distc[j+1]-1; ++j);\n         stbiw__zlib_add(stbiw__zlib_bitrev(j,5),5);\n         if (disteb[j]) stbiw__zlib_add(d - distc[j], disteb[j]);\n         i += best;\n      } else {\n         stbiw__zlib_huffb(data[i]);\n         ++i;\n      }\n   }\n   // write out final bytes\n   for (;i < data_len; ++i)\n      stbiw__zlib_huffb(data[i]);\n   stbiw__zlib_huff(256); // end of block\n   // pad with 0 bits to byte boundary\n   while (bitcount)\n      stbiw__zlib_add(0,1);\n\n   for (i=0; i < stbiw__ZHASH; ++i)\n      (void) stbiw__sbfree(hash_table[i]);\n   STBIW_FREE(hash_table);\n\n   {\n      // compute adler32 on input\n      unsigned int s1=1, s2=0;\n      int blocklen = (int) (data_len % 5552);\n      j=0;\n      while (j < data_len) {\n         for (i=0; i < blocklen; ++i) s1 += data[j+i], s2 += s1;\n         s1 %= 65521, s2 %= 65521;\n         j += blocklen;\n         blocklen = 5552;\n      }\n      stbiw__sbpush(out, STBIW_UCHAR(s2 >> 8));\n      stbiw__sbpush(out, STBIW_UCHAR(s2));\n      stbiw__sbpush(out, STBIW_UCHAR(s1 >> 8));\n      stbiw__sbpush(out, STBIW_UCHAR(s1));\n   }\n   *out_len = stbiw__sbn(out);\n   // make returned pointer freeable\n   STBIW_MEMMOVE(stbiw__sbraw(out), out, *out_len);\n   return (unsigned char *) stbiw__sbraw(out);\n#endif // STBIW_ZLIB_COMPRESS\n}\n\nstatic unsigned int stbiw__crc32(unsigned char *buffer, int len)\n{\n   static unsigned int crc_table[256] =\n   {\n      0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,\n      0x0eDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,\n      0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,\n      0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5,\n      0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,\n      0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,\n      0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,\n      0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,\n      0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,\n      0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,\n      0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457,\n      0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,\n      0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB,\n      0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,\n      0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,\n      0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,\n      0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683,\n      0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,\n      0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7,\n      0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,\n      0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,\n      0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79,\n      0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F,\n      0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,\n      0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,\n      0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21,\n      0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,\n      0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,\n      0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB,\n      0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,\n      0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,\n      0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D\n   };\n\n   unsigned int crc = ~0u;\n   int i;\n   for (i=0; i < len; ++i)\n      crc = (crc >> 8) ^ crc_table[buffer[i] ^ (crc & 0xff)];\n   return ~crc;\n}\n\n#define stbiw__wpng4(o,a,b,c,d) ((o)[0]=STBIW_UCHAR(a),(o)[1]=STBIW_UCHAR(b),(o)[2]=STBIW_UCHAR(c),(o)[3]=STBIW_UCHAR(d),(o)+=4)\n#define stbiw__wp32(data,v) stbiw__wpng4(data, (v)>>24,(v)>>16,(v)>>8,(v));\n#define stbiw__wptag(data,s) stbiw__wpng4(data, s[0],s[1],s[2],s[3])\n\nstatic void stbiw__wpcrc(unsigned char **data, int len)\n{\n   unsigned int crc = stbiw__crc32(*data - len - 4, len+4);\n   stbiw__wp32(*data, crc);\n}\n\nstatic unsigned char stbiw__paeth(int a, int b, int c)\n{\n   int p = a + b - c, pa = abs(p-a), pb = abs(p-b), pc = abs(p-c);\n   if (pa <= pb && pa <= pc) return STBIW_UCHAR(a);\n   if (pb <= pc) return STBIW_UCHAR(b);\n   return STBIW_UCHAR(c);\n}\n\n// @OPTIMIZE: provide an option that always forces left-predict or paeth predict\nstatic void stbiw__encode_png_line(unsigned char *pixels, int stride_bytes, int width, int height, int y, int n, int filter_type, signed char *line_buffer)\n{\n   static int mapping[] = { 0,1,2,3,4 };\n   static int firstmap[] = { 0,1,0,5,6 };\n   int *mymap = (y != 0) ? mapping : firstmap;\n   int i;\n   int type = mymap[filter_type];\n   unsigned char *z = pixels + stride_bytes * (stbi__flip_vertically_on_write ? height-1-y : y);\n   int signed_stride = stbi__flip_vertically_on_write ? -stride_bytes : stride_bytes;\n   for (i = 0; i < n; ++i) {\n      switch (type) {\n         case 0: line_buffer[i] = z[i]; break;\n         case 1: line_buffer[i] = z[i]; break;\n         case 2: line_buffer[i] = z[i] - z[i-signed_stride]; break;\n         case 3: line_buffer[i] = z[i] - (z[i-signed_stride]>>1); break;\n         case 4: line_buffer[i] = (signed char) (z[i] - stbiw__paeth(0,z[i-signed_stride],0)); break;\n         case 5: line_buffer[i] = z[i]; break;\n         case 6: line_buffer[i] = z[i]; break;\n      }\n   }\n   for (i=n; i < width*n; ++i) {\n      switch (type) {\n         case 0: line_buffer[i] = z[i]; break;\n         case 1: line_buffer[i] = z[i] - z[i-n]; break;\n         case 2: line_buffer[i] = z[i] - z[i-signed_stride]; break;\n         case 3: line_buffer[i] = z[i] - ((z[i-n] + z[i-signed_stride])>>1); break;\n         case 4: line_buffer[i] = z[i] - stbiw__paeth(z[i-n], z[i-signed_stride], z[i-signed_stride-n]); break;\n         case 5: line_buffer[i] = z[i] - (z[i-n]>>1); break;\n         case 6: line_buffer[i] = z[i] - stbiw__paeth(z[i-n], 0,0); break;\n      }\n   }\n}\n\nunsigned char *stbi_write_png_to_mem(unsigned char *pixels, int stride_bytes, int x, int y, int n, int *out_len)\n{\n   int force_filter = stbi_write_force_png_filter;\n   int ctype[5] = { -1, 0, 4, 2, 6 };\n   unsigned char sig[8] = { 137,80,78,71,13,10,26,10 };\n   unsigned char *out,*o, *filt, *zlib;\n   signed char *line_buffer;\n   int j,zlen;\n\n   if (stride_bytes == 0)\n      stride_bytes = x * n;\n\n   if (force_filter >= 5) {\n      force_filter = -1;\n   }\n\n   filt = (unsigned char *) STBIW_MALLOC((x*n+1) * y); if (!filt) return 0;\n   line_buffer = (signed char *) STBIW_MALLOC(x * n); if (!line_buffer) { STBIW_FREE(filt); return 0; }\n   for (j=0; j < y; ++j) {\n      int filter_type;\n      if (force_filter > -1) {\n         filter_type = force_filter;\n         stbiw__encode_png_line(pixels, stride_bytes, x, y, j, n, force_filter, line_buffer);\n      } else { // Estimate the best filter by running through all of them:\n         int best_filter = 0, best_filter_val = 0x7fffffff, est, i;\n         for (filter_type = 0; filter_type < 5; filter_type++) {\n            stbiw__encode_png_line(pixels, stride_bytes, x, y, j, n, filter_type, line_buffer);\n\n            // Estimate the entropy of the line using this filter; the less, the better.\n            est = 0;\n            for (i = 0; i < x*n; ++i) {\n               est += abs((signed char) line_buffer[i]);\n            }\n            if (est < best_filter_val) {\n               best_filter_val = est;\n               best_filter = filter_type;\n            }\n         }\n         if (filter_type != best_filter) {  // If the last iteration already got us the best filter, don't redo it\n            stbiw__encode_png_line(pixels, stride_bytes, x, y, j, n, best_filter, line_buffer);\n            filter_type = best_filter;\n         }\n      }\n      // when we get here, filter_type contains the filter type, and line_buffer contains the data\n      filt[j*(x*n+1)] = (unsigned char) filter_type;\n      STBIW_MEMMOVE(filt+j*(x*n+1)+1, line_buffer, x*n);\n   }\n   STBIW_FREE(line_buffer);\n   zlib = stbi_zlib_compress(filt, y*( x*n+1), &zlen, stbi_write_png_compression_level);\n   STBIW_FREE(filt);\n   if (!zlib) return 0;\n\n   // each tag requires 12 bytes of overhead\n   out = (unsigned char *) STBIW_MALLOC(8 + 12+13 + 12+zlen + 12);\n   if (!out) return 0;\n   *out_len = 8 + 12+13 + 12+zlen + 12;\n\n   o=out;\n   STBIW_MEMMOVE(o,sig,8); o+= 8;\n   stbiw__wp32(o, 13); // header length\n   stbiw__wptag(o, \"IHDR\");\n   stbiw__wp32(o, x);\n   stbiw__wp32(o, y);\n   *o++ = 8;\n   *o++ = STBIW_UCHAR(ctype[n]);\n   *o++ = 0;\n   *o++ = 0;\n   *o++ = 0;\n   stbiw__wpcrc(&o,13);\n\n   stbiw__wp32(o, zlen);\n   stbiw__wptag(o, \"IDAT\");\n   STBIW_MEMMOVE(o, zlib, zlen);\n   o += zlen;\n   STBIW_FREE(zlib);\n   stbiw__wpcrc(&o, zlen);\n\n   stbiw__wp32(o,0);\n   stbiw__wptag(o, \"IEND\");\n   stbiw__wpcrc(&o,0);\n\n   STBIW_ASSERT(o == out + *out_len);\n\n   return out;\n}\n\n#ifndef STBI_WRITE_NO_STDIO\nSTBIWDEF int stbi_write_png(char const *filename, int x, int y, int comp, const void *data, int stride_bytes)\n{\n   FILE *f;\n   int len;\n   unsigned char *png = stbi_write_png_to_mem((unsigned char *) data, stride_bytes, x, y, comp, &len);\n   if (png == NULL) return 0;\n#ifdef STBI_MSC_SECURE_CRT\n   if (fopen_s(&f, filename, \"wb\"))\n      f = NULL;\n#else\n   f = fopen(filename, \"wb\");\n#endif\n   if (!f) { STBIW_FREE(png); return 0; }\n   fwrite(png, 1, len, f);\n   fclose(f);\n   STBIW_FREE(png);\n   return 1;\n}\n#endif\n\nSTBIWDEF int stbi_write_png_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int stride_bytes)\n{\n   int len;\n   unsigned char *png = stbi_write_png_to_mem((unsigned char *) data, stride_bytes, x, y, comp, &len);\n   if (png == NULL) return 0;\n   func(context, png, len);\n   STBIW_FREE(png);\n   return 1;\n}\n\n\n/* ***************************************************************************\n *\n * JPEG writer\n *\n * This is based on Jon Olick's jo_jpeg.cpp:\n * public domain Simple, Minimalistic JPEG writer - http://www.jonolick.com/code.html\n */\n\nstatic const unsigned char stbiw__jpg_ZigZag[] = { 0,1,5,6,14,15,27,28,2,4,7,13,16,26,29,42,3,8,12,17,25,30,41,43,9,11,18,\n      24,31,40,44,53,10,19,23,32,39,45,52,54,20,22,33,38,46,51,55,60,21,34,37,47,50,56,59,61,35,36,48,49,57,58,62,63 };\n\nstatic void stbiw__jpg_writeBits(stbi__write_context *s, int *bitBufP, int *bitCntP, const unsigned short *bs) {\n   int bitBuf = *bitBufP, bitCnt = *bitCntP;\n   bitCnt += bs[1];\n   bitBuf |= bs[0] << (24 - bitCnt);\n   while(bitCnt >= 8) {\n      unsigned char c = (bitBuf >> 16) & 255;\n      stbiw__putc(s, c);\n      if(c == 255) {\n         stbiw__putc(s, 0);\n      }\n      bitBuf <<= 8;\n      bitCnt -= 8;\n   }\n   *bitBufP = bitBuf;\n   *bitCntP = bitCnt;\n}\n\nstatic void stbiw__jpg_DCT(float *d0p, float *d1p, float *d2p, float *d3p, float *d4p, float *d5p, float *d6p, float *d7p) {\n   float d0 = *d0p, d1 = *d1p, d2 = *d2p, d3 = *d3p, d4 = *d4p, d5 = *d5p, d6 = *d6p, d7 = *d7p;\n   float z1, z2, z3, z4, z5, z11, z13;\n\n   float tmp0 = d0 + d7;\n   float tmp7 = d0 - d7;\n   float tmp1 = d1 + d6;\n   float tmp6 = d1 - d6;\n   float tmp2 = d2 + d5;\n   float tmp5 = d2 - d5;\n   float tmp3 = d3 + d4;\n   float tmp4 = d3 - d4;\n\n   // Even part\n   float tmp10 = tmp0 + tmp3;   // phase 2\n   float tmp13 = tmp0 - tmp3;\n   float tmp11 = tmp1 + tmp2;\n   float tmp12 = tmp1 - tmp2;\n\n   d0 = tmp10 + tmp11;       // phase 3\n   d4 = tmp10 - tmp11;\n\n   z1 = (tmp12 + tmp13) * 0.707106781f; // c4\n   d2 = tmp13 + z1;       // phase 5\n   d6 = tmp13 - z1;\n\n   // Odd part\n   tmp10 = tmp4 + tmp5;       // phase 2\n   tmp11 = tmp5 + tmp6;\n   tmp12 = tmp6 + tmp7;\n\n   // The rotator is modified from fig 4-8 to avoid extra negations.\n   z5 = (tmp10 - tmp12) * 0.382683433f; // c6\n   z2 = tmp10 * 0.541196100f + z5; // c2-c6\n   z4 = tmp12 * 1.306562965f + z5; // c2+c6\n   z3 = tmp11 * 0.707106781f; // c4\n\n   z11 = tmp7 + z3;      // phase 5\n   z13 = tmp7 - z3;\n\n   *d5p = z13 + z2;         // phase 6\n   *d3p = z13 - z2;\n   *d1p = z11 + z4;\n   *d7p = z11 - z4;\n\n   *d0p = d0;  *d2p = d2;  *d4p = d4;  *d6p = d6;\n}\n\nstatic void stbiw__jpg_calcBits(int val, unsigned short bits[2]) {\n   int tmp1 = val < 0 ? -val : val;\n   val = val < 0 ? val-1 : val;\n   bits[1] = 1;\n   while(tmp1 >>= 1) {\n      ++bits[1];\n   }\n   bits[0] = val & ((1<<bits[1])-1);\n}\n\nstatic int stbiw__jpg_processDU(stbi__write_context *s, int *bitBuf, int *bitCnt, float *CDU, float *fdtbl, int DC, const unsigned short HTDC[256][2], const unsigned short HTAC[256][2]) {\n   const unsigned short EOB[2] = { HTAC[0x00][0], HTAC[0x00][1] };\n   const unsigned short M16zeroes[2] = { HTAC[0xF0][0], HTAC[0xF0][1] };\n   int dataOff, i, diff, end0pos;\n   int DU[64];\n\n   // DCT rows\n   for(dataOff=0; dataOff<64; dataOff+=8) {\n      stbiw__jpg_DCT(&CDU[dataOff], &CDU[dataOff+1], &CDU[dataOff+2], &CDU[dataOff+3], &CDU[dataOff+4], &CDU[dataOff+5], &CDU[dataOff+6], &CDU[dataOff+7]);\n   }\n   // DCT columns\n   for(dataOff=0; dataOff<8; ++dataOff) {\n      stbiw__jpg_DCT(&CDU[dataOff], &CDU[dataOff+8], &CDU[dataOff+16], &CDU[dataOff+24], &CDU[dataOff+32], &CDU[dataOff+40], &CDU[dataOff+48], &CDU[dataOff+56]);\n   }\n   // Quantize/descale/zigzag the coefficients\n   for(i=0; i<64; ++i) {\n      float v = CDU[i]*fdtbl[i];\n      // DU[stbiw__jpg_ZigZag[i]] = (int)(v < 0 ? ceilf(v - 0.5f) : floorf(v + 0.5f));\n      // ceilf() and floorf() are C99, not C89, but I /think/ they're not needed here anyway?\n      DU[stbiw__jpg_ZigZag[i]] = (int)(v < 0 ? v - 0.5f : v + 0.5f);\n   }\n\n   // Encode DC\n   diff = DU[0] - DC;\n   if (diff == 0) {\n      stbiw__jpg_writeBits(s, bitBuf, bitCnt, HTDC[0]);\n   } else {\n      unsigned short bits[2];\n      stbiw__jpg_calcBits(diff, bits);\n      stbiw__jpg_writeBits(s, bitBuf, bitCnt, HTDC[bits[1]]);\n      stbiw__jpg_writeBits(s, bitBuf, bitCnt, bits);\n   }\n   // Encode ACs\n   end0pos = 63;\n   for(; (end0pos>0)&&(DU[end0pos]==0); --end0pos) {\n   }\n   // end0pos = first element in reverse order !=0\n   if(end0pos == 0) {\n      stbiw__jpg_writeBits(s, bitBuf, bitCnt, EOB);\n      return DU[0];\n   }\n   for(i = 1; i <= end0pos; ++i) {\n      int startpos = i;\n      int nrzeroes;\n      unsigned short bits[2];\n      for (; DU[i]==0 && i<=end0pos; ++i) {\n      }\n      nrzeroes = i-startpos;\n      if ( nrzeroes >= 16 ) {\n         int lng = nrzeroes>>4;\n         int nrmarker;\n         for (nrmarker=1; nrmarker <= lng; ++nrmarker)\n            stbiw__jpg_writeBits(s, bitBuf, bitCnt, M16zeroes);\n         nrzeroes &= 15;\n      }\n      stbiw__jpg_calcBits(DU[i], bits);\n      stbiw__jpg_writeBits(s, bitBuf, bitCnt, HTAC[(nrzeroes<<4)+bits[1]]);\n      stbiw__jpg_writeBits(s, bitBuf, bitCnt, bits);\n   }\n   if(end0pos != 63) {\n      stbiw__jpg_writeBits(s, bitBuf, bitCnt, EOB);\n   }\n   return DU[0];\n}\n\nstatic int stbi_write_jpg_core(stbi__write_context *s, int width, int height, int comp, const void* data, int quality) {\n   // Constants that don't pollute global namespace\n   static const unsigned char std_dc_luminance_nrcodes[] = {0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0};\n   static const unsigned char std_dc_luminance_values[] = {0,1,2,3,4,5,6,7,8,9,10,11};\n   static const unsigned char std_ac_luminance_nrcodes[] = {0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,0x7d};\n   static const unsigned char std_ac_luminance_values[] = {\n      0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08,\n      0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28,\n      0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,\n      0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89,\n      0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,\n      0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2,\n      0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa\n   };\n   static const unsigned char std_dc_chrominance_nrcodes[] = {0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0};\n   static const unsigned char std_dc_chrominance_values[] = {0,1,2,3,4,5,6,7,8,9,10,11};\n   static const unsigned char std_ac_chrominance_nrcodes[] = {0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,0x77};\n   static const unsigned char std_ac_chrominance_values[] = {\n      0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,\n      0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26,\n      0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,\n      0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87,\n      0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,\n      0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,\n      0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa\n   };\n   // Huffman tables\n   static const unsigned short YDC_HT[256][2] = { {0,2},{2,3},{3,3},{4,3},{5,3},{6,3},{14,4},{30,5},{62,6},{126,7},{254,8},{510,9}};\n   static const unsigned short UVDC_HT[256][2] = { {0,2},{1,2},{2,2},{6,3},{14,4},{30,5},{62,6},{126,7},{254,8},{510,9},{1022,10},{2046,11}};\n   static const unsigned short YAC_HT[256][2] = {\n      {10,4},{0,2},{1,2},{4,3},{11,4},{26,5},{120,7},{248,8},{1014,10},{65410,16},{65411,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {12,4},{27,5},{121,7},{502,9},{2038,11},{65412,16},{65413,16},{65414,16},{65415,16},{65416,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {28,5},{249,8},{1015,10},{4084,12},{65417,16},{65418,16},{65419,16},{65420,16},{65421,16},{65422,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {58,6},{503,9},{4085,12},{65423,16},{65424,16},{65425,16},{65426,16},{65427,16},{65428,16},{65429,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {59,6},{1016,10},{65430,16},{65431,16},{65432,16},{65433,16},{65434,16},{65435,16},{65436,16},{65437,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {122,7},{2039,11},{65438,16},{65439,16},{65440,16},{65441,16},{65442,16},{65443,16},{65444,16},{65445,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {123,7},{4086,12},{65446,16},{65447,16},{65448,16},{65449,16},{65450,16},{65451,16},{65452,16},{65453,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {250,8},{4087,12},{65454,16},{65455,16},{65456,16},{65457,16},{65458,16},{65459,16},{65460,16},{65461,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {504,9},{32704,15},{65462,16},{65463,16},{65464,16},{65465,16},{65466,16},{65467,16},{65468,16},{65469,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {505,9},{65470,16},{65471,16},{65472,16},{65473,16},{65474,16},{65475,16},{65476,16},{65477,16},{65478,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {506,9},{65479,16},{65480,16},{65481,16},{65482,16},{65483,16},{65484,16},{65485,16},{65486,16},{65487,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {1017,10},{65488,16},{65489,16},{65490,16},{65491,16},{65492,16},{65493,16},{65494,16},{65495,16},{65496,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {1018,10},{65497,16},{65498,16},{65499,16},{65500,16},{65501,16},{65502,16},{65503,16},{65504,16},{65505,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {2040,11},{65506,16},{65507,16},{65508,16},{65509,16},{65510,16},{65511,16},{65512,16},{65513,16},{65514,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {65515,16},{65516,16},{65517,16},{65518,16},{65519,16},{65520,16},{65521,16},{65522,16},{65523,16},{65524,16},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {2041,11},{65525,16},{65526,16},{65527,16},{65528,16},{65529,16},{65530,16},{65531,16},{65532,16},{65533,16},{65534,16},{0,0},{0,0},{0,0},{0,0},{0,0}\n   };\n   static const unsigned short UVAC_HT[256][2] = {\n      {0,2},{1,2},{4,3},{10,4},{24,5},{25,5},{56,6},{120,7},{500,9},{1014,10},{4084,12},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {11,4},{57,6},{246,8},{501,9},{2038,11},{4085,12},{65416,16},{65417,16},{65418,16},{65419,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {26,5},{247,8},{1015,10},{4086,12},{32706,15},{65420,16},{65421,16},{65422,16},{65423,16},{65424,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {27,5},{248,8},{1016,10},{4087,12},{65425,16},{65426,16},{65427,16},{65428,16},{65429,16},{65430,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {58,6},{502,9},{65431,16},{65432,16},{65433,16},{65434,16},{65435,16},{65436,16},{65437,16},{65438,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {59,6},{1017,10},{65439,16},{65440,16},{65441,16},{65442,16},{65443,16},{65444,16},{65445,16},{65446,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {121,7},{2039,11},{65447,16},{65448,16},{65449,16},{65450,16},{65451,16},{65452,16},{65453,16},{65454,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {122,7},{2040,11},{65455,16},{65456,16},{65457,16},{65458,16},{65459,16},{65460,16},{65461,16},{65462,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {249,8},{65463,16},{65464,16},{65465,16},{65466,16},{65467,16},{65468,16},{65469,16},{65470,16},{65471,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {503,9},{65472,16},{65473,16},{65474,16},{65475,16},{65476,16},{65477,16},{65478,16},{65479,16},{65480,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {504,9},{65481,16},{65482,16},{65483,16},{65484,16},{65485,16},{65486,16},{65487,16},{65488,16},{65489,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {505,9},{65490,16},{65491,16},{65492,16},{65493,16},{65494,16},{65495,16},{65496,16},{65497,16},{65498,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {506,9},{65499,16},{65500,16},{65501,16},{65502,16},{65503,16},{65504,16},{65505,16},{65506,16},{65507,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {2041,11},{65508,16},{65509,16},{65510,16},{65511,16},{65512,16},{65513,16},{65514,16},{65515,16},{65516,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {16352,14},{65517,16},{65518,16},{65519,16},{65520,16},{65521,16},{65522,16},{65523,16},{65524,16},{65525,16},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {1018,10},{32707,15},{65526,16},{65527,16},{65528,16},{65529,16},{65530,16},{65531,16},{65532,16},{65533,16},{65534,16},{0,0},{0,0},{0,0},{0,0},{0,0}\n   };\n   static const int YQT[] = {16,11,10,16,24,40,51,61,12,12,14,19,26,58,60,55,14,13,16,24,40,57,69,56,14,17,22,29,51,87,80,62,18,22,\n                             37,56,68,109,103,77,24,35,55,64,81,104,113,92,49,64,78,87,103,121,120,101,72,92,95,98,112,100,103,99};\n   static const int UVQT[] = {17,18,24,47,99,99,99,99,18,21,26,66,99,99,99,99,24,26,56,99,99,99,99,99,47,66,99,99,99,99,99,99,\n                              99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99};\n   static const float aasf[] = { 1.0f * 2.828427125f, 1.387039845f * 2.828427125f, 1.306562965f * 2.828427125f, 1.175875602f * 2.828427125f, \n                                 1.0f * 2.828427125f, 0.785694958f * 2.828427125f, 0.541196100f * 2.828427125f, 0.275899379f * 2.828427125f };\n\n   int row, col, i, k;\n   float fdtbl_Y[64], fdtbl_UV[64];\n   unsigned char YTable[64], UVTable[64];\n\n   if(!data || !width || !height || comp > 4 || comp < 1) {\n      return 0;\n   }\n\n   quality = quality ? quality : 90;\n   quality = quality < 1 ? 1 : quality > 100 ? 100 : quality;\n   quality = quality < 50 ? 5000 / quality : 200 - quality * 2;\n\n   for(i = 0; i < 64; ++i) {\n      int uvti, yti = (YQT[i]*quality+50)/100;\n      YTable[stbiw__jpg_ZigZag[i]] = (unsigned char) (yti < 1 ? 1 : yti > 255 ? 255 : yti);\n      uvti = (UVQT[i]*quality+50)/100;\n      UVTable[stbiw__jpg_ZigZag[i]] = (unsigned char) (uvti < 1 ? 1 : uvti > 255 ? 255 : uvti);\n   }\n\n   for(row = 0, k = 0; row < 8; ++row) {\n      for(col = 0; col < 8; ++col, ++k) {\n         fdtbl_Y[k]  = 1 / (YTable [stbiw__jpg_ZigZag[k]] * aasf[row] * aasf[col]);\n         fdtbl_UV[k] = 1 / (UVTable[stbiw__jpg_ZigZag[k]] * aasf[row] * aasf[col]);\n      }\n   }\n\n   // Write Headers\n   {\n      static const unsigned char head0[] = { 0xFF,0xD8,0xFF,0xE0,0,0x10,'J','F','I','F',0,1,1,0,0,1,0,1,0,0,0xFF,0xDB,0,0x84,0 };\n      static const unsigned char head2[] = { 0xFF,0xDA,0,0xC,3,1,0,2,0x11,3,0x11,0,0x3F,0 };\n      const unsigned char head1[] = { 0xFF,0xC0,0,0x11,8,(unsigned char)(height>>8),STBIW_UCHAR(height),(unsigned char)(width>>8),STBIW_UCHAR(width),\n                                      3,1,0x11,0,2,0x11,1,3,0x11,1,0xFF,0xC4,0x01,0xA2,0 };\n      s->func(s->context, (void*)head0, sizeof(head0));\n      s->func(s->context, (void*)YTable, sizeof(YTable));\n      stbiw__putc(s, 1);\n      s->func(s->context, UVTable, sizeof(UVTable));\n      s->func(s->context, (void*)head1, sizeof(head1));\n      s->func(s->context, (void*)(std_dc_luminance_nrcodes+1), sizeof(std_dc_luminance_nrcodes)-1);\n      s->func(s->context, (void*)std_dc_luminance_values, sizeof(std_dc_luminance_values));\n      stbiw__putc(s, 0x10); // HTYACinfo\n      s->func(s->context, (void*)(std_ac_luminance_nrcodes+1), sizeof(std_ac_luminance_nrcodes)-1);\n      s->func(s->context, (void*)std_ac_luminance_values, sizeof(std_ac_luminance_values));\n      stbiw__putc(s, 1); // HTUDCinfo\n      s->func(s->context, (void*)(std_dc_chrominance_nrcodes+1), sizeof(std_dc_chrominance_nrcodes)-1);\n      s->func(s->context, (void*)std_dc_chrominance_values, sizeof(std_dc_chrominance_values));\n      stbiw__putc(s, 0x11); // HTUACinfo\n      s->func(s->context, (void*)(std_ac_chrominance_nrcodes+1), sizeof(std_ac_chrominance_nrcodes)-1);\n      s->func(s->context, (void*)std_ac_chrominance_values, sizeof(std_ac_chrominance_values));\n      s->func(s->context, (void*)head2, sizeof(head2));\n   }\n\n   // Encode 8x8 macroblocks\n   {\n      static const unsigned short fillBits[] = {0x7F, 7};\n      const unsigned char *imageData = (const unsigned char *)data;\n      int DCY=0, DCU=0, DCV=0;\n      int bitBuf=0, bitCnt=0;\n      // comp == 2 is grey+alpha (alpha is ignored)\n      int ofsG = comp > 2 ? 1 : 0, ofsB = comp > 2 ? 2 : 0;\n      int x, y, pos;\n      for(y = 0; y < height; y += 8) {\n         for(x = 0; x < width; x += 8) {\n            float YDU[64], UDU[64], VDU[64];\n            for(row = y, pos = 0; row < y+8; ++row) {\n               for(col = x; col < x+8; ++col, ++pos) {\n                  int p = (stbi__flip_vertically_on_write ? height-1-row : row)*width*comp + col*comp;\n                  float r, g, b;\n                  if(row >= height) {\n                     p -= width*comp*(row+1 - height);\n                  }\n                  if(col >= width) {\n                     p -= comp*(col+1 - width);\n                  }\n\n                  r = imageData[p+0];\n                  g = imageData[p+ofsG];\n                  b = imageData[p+ofsB];\n                  YDU[pos]=+0.29900f*r+0.58700f*g+0.11400f*b-128;\n                  UDU[pos]=-0.16874f*r-0.33126f*g+0.50000f*b;\n                  VDU[pos]=+0.50000f*r-0.41869f*g-0.08131f*b;\n               }\n            }\n\n            DCY = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, YDU, fdtbl_Y, DCY, YDC_HT, YAC_HT);\n            DCU = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, UDU, fdtbl_UV, DCU, UVDC_HT, UVAC_HT);\n            DCV = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, VDU, fdtbl_UV, DCV, UVDC_HT, UVAC_HT);\n         }\n      }\n\n      // Do the bit alignment of the EOI marker\n      stbiw__jpg_writeBits(s, &bitBuf, &bitCnt, fillBits);\n   }\n\n   // EOI\n   stbiw__putc(s, 0xFF);\n   stbiw__putc(s, 0xD9);\n\n   return 1;\n}\n\nSTBIWDEF int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality)\n{\n   stbi__write_context s;\n   stbi__start_write_callbacks(&s, func, context);\n   return stbi_write_jpg_core(&s, x, y, comp, (void *) data, quality);\n}\n\n\n#ifndef STBI_WRITE_NO_STDIO\nSTBIWDEF int stbi_write_jpg(char const *filename, int x, int y, int comp, const void *data, int quality)\n{\n   stbi__write_context s;\n   if (stbi__start_write_file(&s,filename)) {\n      int r = stbi_write_jpg_core(&s, x, y, comp, data, quality);\n      stbi__end_write_file(&s);\n      return r;\n   } else\n      return 0;\n}\n#endif\n\n#endif // STB_IMAGE_WRITE_IMPLEMENTATION\n\n/* Revision history\n      1.09  (2018-02-11)\n             fix typo in zlib quality API, improve STB_I_W_STATIC in C++\n      1.08  (2018-01-29)\n             add stbi__flip_vertically_on_write, external zlib, zlib quality, choose PNG filter\n      1.07  (2017-07-24)\n             doc fix\n      1.06 (2017-07-23)\n             writing JPEG (using Jon Olick's code)\n      1.05   ???\n      1.04 (2017-03-03)\n             monochrome BMP expansion\n      1.03   ???\n      1.02 (2016-04-02)\n             avoid allocating large structures on the stack\n      1.01 (2016-01-16)\n             STBIW_REALLOC_SIZED: support allocators with no realloc support\n             avoid race-condition in crc initialization\n             minor compile issues\n      1.00 (2015-09-14)\n             installable file IO function\n      0.99 (2015-09-13)\n             warning fixes; TGA rle support\n      0.98 (2015-04-08)\n             added STBIW_MALLOC, STBIW_ASSERT etc\n      0.97 (2015-01-18)\n             fixed HDR asserts, rewrote HDR rle logic\n      0.96 (2015-01-17)\n             add HDR output\n             fix monochrome BMP\n      0.95 (2014-08-17)\n\t\t       add monochrome TGA output\n      0.94 (2014-05-31)\n             rename private functions to avoid conflicts with stb_image.h\n      0.93 (2014-05-27)\n             warning fixes\n      0.92 (2010-08-01)\n             casts to unsigned char to fix warnings\n      0.91 (2010-07-17)\n             first public release\n      0.90   first internal release\n*/\n\n/*\n------------------------------------------------------------------------------\nThis software is available under 2 licenses -- choose whichever you prefer.\n------------------------------------------------------------------------------\nALTERNATIVE A - MIT License\nCopyright (c) 2017 Sean Barrett\nPermission is hereby granted, free of charge, to any person obtaining a copy of \nthis software and associated documentation files (the \"Software\"), to deal in \nthe Software without restriction, including without limitation the rights to \nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies \nof the Software, and to permit persons to whom the Software is furnished to do \nso, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all \ncopies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, \nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE \nSOFTWARE.\n------------------------------------------------------------------------------\nALTERNATIVE B - Public Domain (www.unlicense.org)\nThis is free and unencumbered software released into the public domain.\nAnyone is free to copy, modify, publish, use, compile, sell, or distribute this \nsoftware, either in source code form or as a compiled binary, for any purpose, \ncommercial or non-commercial, and by any means.\nIn jurisdictions that recognize copyright laws, the author or authors of this \nsoftware dedicate any and all copyright interest in the software to the public \ndomain. We make this dedication for the benefit of the public at large and to \nthe detriment of our heirs and successors. We intend this dedication to be an \novert act of relinquishment in perpetuity of all present and future rights to \nthis software under copyright law.\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE \nAUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN \nACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION \nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n------------------------------------------------------------------------------\n*/\n"
  },
  {
    "path": "tools/sm64tools/utils.c",
    "content": "#include <dirent.h>\n#include <fcntl.h>\n#include <stdint.h>\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <sys/stat.h>\n#if defined(_MSC_VER) || defined(__MINGW32__)\n  #include <io.h>\n  #include <sys/utime.h>\n#else\n  #include <unistd.h>\n  #include <utime.h>\n#endif\n\n#include \"utils.h\"\n\n// global verbosity setting\nint g_verbosity = 0;\n\nint read_s16_be(unsigned char *buf)\n{\n   unsigned tmp = read_u16_be(buf);\n   int ret;\n   if (tmp > 0x7FFF) {\n      ret = -((int)0x10000 - (int)tmp);\n   } else {\n      ret = (int)tmp;\n   }\n   return ret;\n}\n\nfloat read_f32_be(unsigned char *buf)\n{\n   union {uint32_t i; float f;} ret;\n   ret.i = read_u32_be(buf);\n   return ret.f;\n}\n\nint is_power2(unsigned int val)\n{\n   while (((val & 1) == 0) && (val > 1)) {\n      val >>= 1;\n   }\n   return (val == 1);\n}\n\nint fprint_write_output(FILE *fp, write_encoding encoding, const uint8_t *raw, int length)\n{\n   typedef struct {\n      int bytes_per_val;\n      const char *suffix;\n   } encoding_format;\n   const encoding_format enc_fmt[] = {\n      [ENCODING_RAW] = {0,                \"\"},\n      [ENCODING_U8]  = {sizeof(uint8_t),  \"\"},\n      [ENCODING_U16] = {sizeof(uint16_t), \"\"},\n      [ENCODING_U32] = {sizeof(uint32_t), \"\"},\n      [ENCODING_U64] = {sizeof(uint64_t), \"ULL\"},\n   };\n   int flength = 0;\n   const encoding_format *fmt = &enc_fmt[encoding];\n   switch (encoding) {\n      case ENCODING_RAW:\n         flength = fwrite(raw, 1, length, fp);\n         break;\n      case ENCODING_U8:\n      case ENCODING_U16:\n      case ENCODING_U32:\n      case ENCODING_U64:\n         for (int w = 0; w < length; w += fmt->bytes_per_val) {\n            flength += fprintf(fp, \"0x\");\n            for (int b = 0; b < fmt->bytes_per_val; b++) {\n               int off = w + b;\n               flength += fprintf(fp, \"%02x\", off < length ? raw[off] : 0x00);\n            }\n            flength += fprintf(fp, \"%s%c\", fmt->suffix, (w < length - fmt->bytes_per_val) ? ',' : '\\n');\n         }\n         break;\n   }\n   return flength;\n}\n\nvoid swap_bytes(unsigned char *data, long length)\n{\n   long i;\n   unsigned char tmp;\n   for (i = 0; i < length; i += 2) {\n      tmp = data[i];\n      data[i] = data[i+1];\n      data[i+1] = tmp;\n   }\n}\n\nvoid reverse_endian(unsigned char *data, long length)\n{\n   long i;\n   unsigned char tmp;\n   for (i = 0; i < length; i += 4) {\n      tmp = data[i];\n      data[i] = data[i+3];\n      data[i+3] = tmp;\n      tmp = data[i+1];\n      data[i+1] = data[i+2];\n      data[i+2] = tmp;\n   }\n}\n\nlong filesize(const char *filename)\n{\n   struct stat st;\n\n   if (stat(filename, &st) == 0) {\n      return st.st_size;\n   }\n\n   return -1;\n}\n\nvoid touch_file(const char *filename)\n{\n   int fd;\n   //fd = open(filename, O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666);\n   fd = open(filename, O_WRONLY|O_CREAT, 0666);\n   if (fd >= 0) {\n      utime(filename, NULL);\n      close(fd);\n   }\n}\n\nlong read_file(const char *file_name, unsigned char **data)\n{\n   FILE *in;\n   unsigned char *in_buf = NULL;\n   long file_size;\n   long bytes_read;\n   in = fopen(file_name, \"rb\");\n   if (in == NULL) {\n      return -1;\n   }\n\n   // allocate buffer to read from offset to end of file\n   fseek(in, 0, SEEK_END);\n   file_size = ftell(in);\n\n   // sanity check\n   if (file_size > 256*MB) {\n      return -2;\n   }\n\n   in_buf = malloc(file_size);\n   fseek(in, 0, SEEK_SET);\n\n   // read bytes\n   bytes_read = fread(in_buf, 1, file_size, in);\n   if (bytes_read != file_size) {\n      return -3;\n   }\n\n   fclose(in);\n   *data = in_buf;\n   return bytes_read;\n}\n\nlong write_file(const char *file_name, unsigned char *data, long length)\n{\n   FILE *out;\n   long bytes_written;\n   // open output file\n   out = fopen(file_name, \"wb\");\n   if (out == NULL) {\n      perror(file_name);\n      return -1;\n   }\n   bytes_written = fwrite(data, 1, length, out);\n   fclose(out);\n   return bytes_written;\n}\n\nvoid generate_filename(const char *in_name, char *out_name, char *extension)\n{\n   char tmp_name[FILENAME_MAX];\n   int len;\n   int i;\n   strcpy(tmp_name, in_name);\n   len = strlen(tmp_name);\n   for (i = len - 1; i > 0; i--) {\n      if (tmp_name[i] == '.') {\n         break;\n      }\n   }\n   if (i <= 0) {\n      i = len;\n   }\n   tmp_name[i] = '\\0';\n   sprintf(out_name, \"%s.%s\", tmp_name, extension);\n}\n\nchar *basename(const char *name)\n{\n   const char *base = name;\n   while (*name) {\n      if (*name++ == '/') {\n         base = name;\n      }\n   }\n   return (char *)base;\n}\n\nvoid make_dir(const char *dir_name)\n{\n   struct stat st = {0};\n   if (stat(dir_name, &st) == -1) {\n      mkdir(dir_name, 0755);\n   }\n}\n\nlong copy_file(const char *src_name, const char *dst_name)\n{\n   unsigned char *buf;\n   long bytes_written;\n   long bytes_read;\n\n   bytes_read = read_file(src_name, &buf);\n\n   if (bytes_read > 0) {\n      bytes_written = write_file(dst_name, buf, bytes_read);\n      if (bytes_written != bytes_read) {\n         bytes_read = -1;\n      }\n      free(buf);\n   }\n\n   return bytes_read;\n}\n\nvoid dir_list_ext(const char *dir, const char *extension, dir_list *list)\n{\n   char *pool;\n   char *pool_ptr;\n   struct dirent *entry;\n   DIR *dfd;\n   int idx;\n\n   dfd = opendir(dir);\n   if (dfd == NULL) {\n      ERROR(\"Can't open '%s'\\n\", dir);\n      exit(1);\n   }\n\n   pool = malloc(FILENAME_MAX * MAX_DIR_FILES);\n   pool_ptr = pool;\n\n   idx = 0;\n   while ((entry = readdir(dfd)) != NULL && idx < MAX_DIR_FILES) {\n      if (!extension || str_ends_with(entry->d_name, extension)) {\n         sprintf(pool_ptr, \"%s/%s\", dir, entry->d_name);\n         list->files[idx] = pool_ptr;\n         pool_ptr += strlen(pool_ptr) + 1;\n         idx++;\n      }\n   }\n   list->count = idx;\n\n   closedir(dfd);\n}\n\nvoid dir_list_free(dir_list *list)\n{\n   // assume first entry in array is allocated\n   if (list->files[0]) {\n      free(list->files[0]);\n      list->files[0] = NULL;\n   }\n}\n\nint str_ends_with(const char *str, const char *suffix)\n{\n   if (!str || !suffix) {\n      return 0;\n   }\n   size_t len_str = strlen(str);\n   size_t len_suffix = strlen(suffix);\n   if (len_suffix > len_str) {\n      return 0;\n   }\n   return (0 == strncmp(str + len_str - len_suffix, suffix, len_suffix));\n}\n"
  },
  {
    "path": "tools/sm64tools/utils.h",
    "content": "#ifndef UTILS_H_\n#define UTILS_H_\n\n#include <stdio.h>\n#include <stdint.h>\n\n// defines\n\n// printing size_t varies by compiler\n#if defined(_MSC_VER) || defined(__MINGW32__)\n  #define SIZE_T_FORMAT \"%Iu\"\n#else\n  #define SIZE_T_FORMAT \"%zu\"\n#endif\n\n#define KB 1024\n#define MB (1024 * KB)\n\n// number of elements in statically declared array\n#define DIM(S_ARR_) (sizeof(S_ARR_) / sizeof(S_ARR_[0]))\n\n#define MIN(A_, B_) ((A_) < (B_) ? (A_) : (B_))\n#define MAX(A_, B_) ((A_) > (B_) ? (A_) : (B_))\n\n// align value to N-byte boundary\n#define ALIGN(VAL_, ALIGNMENT_) (((VAL_) + ((ALIGNMENT_) - 1)) & ~((ALIGNMENT_) - 1))\n\n// read/write u32/16 big/little endian\n#define read_u32_be(buf) (unsigned int)(((buf)[0] << 24) + ((buf)[1] << 16) + ((buf)[2] << 8) + ((buf)[3]))\n#define read_u32_le(buf) (unsigned int)(((buf)[1] << 24) + ((buf)[0] << 16) + ((buf)[3] << 8) + ((buf)[2]))\n#define write_u32_be(buf, val) do { \\\n   (buf)[0] = ((val) >> 24) & 0xFF; \\\n   (buf)[1] = ((val) >> 16) & 0xFF; \\\n   (buf)[2] = ((val) >> 8) & 0xFF; \\\n   (buf)[3] = (val) & 0xFF; \\\n} while(0)\n#define read_u16_be(buf) (((buf)[0] << 8) + ((buf)[1]))\n#define write_u16_be(buf, val) do { \\\n   (buf)[0] = ((val) >> 8) & 0xFF; \\\n   (buf)[1] = ((val)) & 0xFF; \\\n} while(0)\n\n// Windows compatibility\n#if defined(_MSC_VER) || defined(__MINGW32__)\n  #include <direct.h>\n  #define mkdir(DIR_, PERM_) _mkdir(DIR_)\n  #ifndef strcasecmp\n    #define strcasecmp(A, B) stricmp(A, B)\n  #endif\n#endif\n\n// typedefs\n\n#define MAX_DIR_FILES 128\ntypedef struct\n{\n   char *files[MAX_DIR_FILES];\n   int count;\n} dir_list;\n\ntypedef enum\n{\n   ENCODING_RAW,\n   ENCODING_U8,\n   ENCODING_U16,\n   ENCODING_U32,\n   ENCODING_U64,\n} write_encoding;\n\n// global verbosity setting\nextern int g_verbosity;\n\n#define ERROR(...) fprintf(stderr, __VA_ARGS__)\n#define INFO(...) if (g_verbosity) printf(__VA_ARGS__)\n\n// functions\n\n// convert two bytes in big-endian to signed int\nint read_s16_be(unsigned char *buf);\n\n// convert four bytes in big-endian to float\nfloat read_f32_be(unsigned char *buf);\n\n// determine if value is power of 2\n// returns 1 if val is power of 2, 0 otherwise\nint is_power2(unsigned int val);\n\n// print buffer as raw binary, hex u8, hex u16, hex u32, hex u64. pads to encoding size\n// fp: file pointer\n// encoding: encoding type to use (see write_encoding)\n// buf: buffer to read bytes from\n// length: length of buffer to print\nint fprint_write_output(FILE *fp, write_encoding encoding, const uint8_t *buf, int length);\n\n// perform byteswapping to convert from v64 to z64 ordering\nvoid swap_bytes(unsigned char *data, long length);\n\n// reverse endian to convert from n64 to z64 ordering\nvoid reverse_endian(unsigned char *data, long length);\n\n// get size of file without opening it;\n// returns file size or negative on error\nlong filesize(const char *file_name);\n\n// update file timestamp to now, creating it if it doesn't exist\nvoid touch_file(const char *filename);\n\n// read entire contents of file into buffer\n// returns file size or negative on error\nlong read_file(const char *file_name, unsigned char **data);\n\n// write buffer to file\n// returns number of bytes written out or -1 on failure\nlong write_file(const char *file_name, unsigned char *data, long length);\n\n// generate an output file name from input name by replacing file extension\n// in_name: input file name\n// out_name: buffer to write output name in\n// extension: new file extension to use\nvoid generate_filename(const char *in_name, char *out_name, char *extension);\n\n// extract base filename from file path\n// name: path to file\n// returns just the file name after the last '/'\nchar *basename(const char *name);\n\n// make a directory if it doesn't exist\n// dir_name: name of the directory\nvoid make_dir(const char *dir_name);\n\n// copy a file from src_name to dst_name. will not make directories\n// src_name: source file name\n// dst_name: destination file name\nlong copy_file(const char *src_name, const char *dst_name);\n\n// list a directory, optionally filtering files by extension\n// dir: directory to list files in\n// extension: extension to filter files by (NULL if no filtering)\n// list: output list and count\nvoid dir_list_ext(const char *dir, const char *extension, dir_list *list);\n\n// free associated date from a directory list\n// list: directory list filled in by dir_list_ext() call\nvoid dir_list_free(dir_list *list);\n\n// determine if a string ends with another string\n// str: string to check if ends with 'suffix'\n// suffix: string to see if 'str' ends with\n// returns 1 if 'str' ends with 'suffix'\nint str_ends_with(const char *str, const char *suffix);\n\n#endif // UTILS_H_\n"
  },
  {
    "path": "tools/textconv.c",
    "content": "#include <ctype.h>\n#include <errno.h>\n#include <stdarg.h>\n#include <stdint.h>\n#include <stdlib.h>\n#include <stdio.h>\n#include <string.h>\n\n#include \"hashtable.h\"\n#include \"utf8.h\"\n\n#define ARRAY_COUNT(arr) (sizeof(arr) / sizeof(arr[0]))\n\n#define INVALID_CHAR 0xFFFFFFFF\n\nstruct CharmapEntry\n{\n    uint32_t unicode[3];\n    int length; // length of the unicode array. TODO: use dynamic memory allocation\n    int bytesCount;\n    uint8_t bytes[4]; // bytes to convert unicode array to, (e.g. 'A' = 0x0A)\n};\n\nstatic struct HashTable *charmap;\n\nstatic void fatal_error(const char *msgfmt, ...)\n{\n    va_list args;\n\n    fputs(\"error: \", stderr);\n\n    va_start(args, msgfmt);\n    vfprintf(stderr, msgfmt, args);\n    va_end(args);\n\n    fputc('\\n', stderr);\n\n    exit(1);\n}\n\nstatic void parse_error(const char *filename, int lineNum, const char *msgfmt, ...)\n{\n    va_list args;\n\n    fprintf(stderr, \"%s: line %i: \", filename, lineNum);\n\n    va_start(args, msgfmt);\n    vfprintf(stderr, msgfmt, args);\n    va_end(args);\n\n    fputc('\\n', stderr);\n\n    exit(1);\n}\n\n// Reads the whole file and returns a null-terminated buffer with its contents\nvoid *read_text_file(const char *filename)\n{\n    if (strcmp(filename, \"-\") != 0)\n    {\n        FILE *file = fopen(filename, \"rb\");\n        uint8_t *buffer;\n        size_t size;\n\n        if (file == NULL)\n            fatal_error(\"failed to open file '%s' for reading: %s\", filename, strerror(errno));\n\n        // get size\n        fseek(file, 0, SEEK_END);\n        size = ftell(file);\n\n        // allocate buffer\n        buffer = malloc(size + 1);\n        if (buffer == NULL)\n            fatal_error(\"could not allocate buffer of size %u\", (uint32_t)(size + 1));\n\n        // read file\n        fseek(file, 0, SEEK_SET);\n        if (fread(buffer, size, 1, file) != 1)\n            fatal_error(\"error reading from file '%s': %s\", filename, strerror(errno));\n\n        // null-terminate the buffer\n        buffer[size] = 0;\n\n        fclose(file);\n\n        return buffer;\n    }\n    else\n    {\n        size_t size = 0;\n        size_t capacity = 1024;\n        uint8_t *buffer = malloc(capacity + 1);\n\n        if (buffer == NULL)\n            fatal_error(\"could not allocate buffer of size %u\", (uint32_t)(capacity + 1));\n\n        for (;;)\n        {\n            size += fread(buffer + size, 1, capacity - size, stdin);\n            if (size == capacity)\n            {\n                capacity *= 2;\n                buffer = realloc(buffer, capacity + 1);\n                if (buffer == NULL)\n                    fatal_error(\"could not allocate buffer of size %u\", (uint32_t)(capacity + 1));\n            }\n            else if (feof(stdin))\n            {\n                break;\n            }\n            else\n            {\n                fatal_error(\"error reading from stdin: %s\", strerror(errno));\n            }\n        }\n\n        // null-terminate the buffer\n        buffer[size] = 0;\n        return buffer;\n    }\n}\n\nstatic char *skip_whitespace(char *str)\n{\n    while (isspace(*str))\n        str++;\n    return str;\n}\n\n// null terminates the current line and returns a pointer to the next line\nstatic char *line_split(char *str)\n{\n    while (*str != '\\n')\n    {\n        if (*str == 0)\n            return str;  // end of string\n        str++;\n    }\n    *str = 0;  // terminate line\n    return str + 1;\n}\n\nstatic char *parse_number(const char *str, unsigned int *num)\n{\n    char *endptr;\n    unsigned int n = strtol(str, &endptr, 0);\n\n    *num = n;\n    if (endptr > str)\n        return endptr;\n    else\n        return NULL;\n}\n\nstatic int is_identifier_char(char c)\n{\n    return isalnum(c) || c == '_';\n}\n\nstatic uint32_t get_escape_char(int c)\n{\n    const uint8_t escapeTable[] =\n    {\n        ['0'] = '\\0',\n        ['a'] = '\\a',\n        ['b'] = '\\b',\n        ['f'] = '\\f',\n        ['n'] = '\\n',\n        ['r'] = '\\r',\n        ['t'] = '\\t',\n        ['v'] = '\\v',\n        ['\\\\'] = '\\\\',\n        ['\\''] = '\\'',\n        ['\"'] = '\"',\n    };\n\n    if ((unsigned int)c < ARRAY_COUNT(escapeTable) && (escapeTable[c] != 0 || c == '0'))\n        return escapeTable[c];\n    else\n        return INVALID_CHAR;\n}\n\nstatic void read_charmap(const char *filename)\n{\n    char *filedata = read_text_file(filename);\n    char *line = filedata;\n    int lineNum = 1;\n\n    while (line[0] != 0)\n    {\n        char *nextLine = line_split(line);\n\n        struct CharmapEntry entry;\n        struct CharmapEntry *existing;\n\n        line = skip_whitespace(line);\n        if (line[0] != 0 && !(line[0] == '/' && line[1] == '/'))  // ignore empty lines and comments\n        {\n            int len = 0;\n            /* Read Character */\n\n            // opening quote\n            if (*line != '\\'')\n                parse_error(filename, lineNum, \"expected '\");\n            line++;\n\n            // perform analysis of charmap entry, we are in the quote\n            while(1)\n            {\n                if(*line == '\\'')\n                {\n                    line++;\n                    break;\n                }\n                else if(len == ARRAY_COUNT(entry.unicode))\n                {\n                    // TODO: Use dynamic memory allocation so this is unnecessary.\n                    parse_error(filename, lineNum, \"string limit exceeded\");\n                }\n                else if (*line == '\\\\')\n                {\n                    line++; // advance to get the character being escaped\n                    if (*line == '\\r')\n                        line++;\n                    if (*line == '\\n')\n                    {\n                        // Backslash at end of line is ignored\n                        continue;\n                    }\n                    entry.unicode[len] = get_escape_char(*line);\n                    if (entry.unicode[len] == INVALID_CHAR)\n                        parse_error(filename, lineNum, \"unknown escape sequence \\\\%c\", *line);\n                    line++; // increment again to get past the escape sequence.\n                }\n                else\n                {\n                    line = utf8_decode(line, &entry.unicode[len]);\n                    if (line == NULL)\n                        parse_error(filename, lineNum, \"invalid UTF8\");\n                }\n                len++;\n            }\n            entry.length = len;\n\n            // equals sign\n            line = skip_whitespace(line);\n            if (*line != '=')\n                parse_error(filename, lineNum, \"expected = after character \\\\%c\", *line);\n            line++;\n\n            entry.bytesCount = 0;\n\n            // value\n            while (1)\n            {\n                uint32_t value;\n\n                if (entry.bytesCount >= 4)\n                    parse_error(filename, lineNum, \"more than 4 values specified\");\n\n                line = skip_whitespace(line);\n\n                line = parse_number(line, &value);\n                if (line == NULL)\n                    parse_error(filename, lineNum, \"expected number after =\");\n                if (value > 0xFF)\n                    parse_error(filename, lineNum, \"0x%X is larger than 1 byte\", value);\n\n                entry.bytes[entry.bytesCount] = value;\n                entry.bytesCount++;\n\n                line = skip_whitespace(line);\n                if (*line == 0)\n                    break;\n                if (*line != ',')\n                    parse_error(filename, lineNum, \"junk at end of line\");\n                line++;\n            }\n\n            existing = hashtable_query(charmap, &entry);\n\n            if (existing != NULL) {\n                const char *fmt = \"0x%02X, \";\n                int fmtlen = 6;\n\n                char str[32];\n                int i;\n\n                for (i = 0; i < existing->bytesCount; i++) {\n                    sprintf(&str[fmtlen * i], fmt, existing->bytes[i]);\n                }\n\n                str[fmtlen * i - 2] = '\\0';\n\n                parse_error(filename, lineNum, \"entry for character already exists (%s)\", str);\n            } else {\n                hashtable_insert(charmap, &entry);\n            }\n        }\n\n        line = nextLine;\n        lineNum++;\n    }\n\n    free(filedata);\n}\n\nstatic int count_line_num(const char *start, const char *pos)\n{\n    const char *c;\n    int lineNum = 1;\n\n    for (c = start; c < pos; c++)\n    {\n        if (*c == '\\n')\n            lineNum++;\n    }\n    return lineNum;\n}\n\nstatic char *convert_string(char *pos, FILE *fout, const char *inputFileName, char *start, int uncompressed, int cnOneByte)\n{\n    const struct CharmapEntry terminatorInput = {.unicode = {'\\0'}, .length = 1};\n    struct CharmapEntry *terminator;\n    int hasString = 0;\n    int i;\n\n    while (1)\n    {\n        pos = skip_whitespace(pos);\n        if (*pos == ')')\n        {\n            if (hasString)\n                break;\n            else\n                parse_error(inputFileName, count_line_num(start, pos), \"expected quoted string after '_('\");\n        }\n        else if (*pos != '\"')\n            parse_error(inputFileName, count_line_num(start, pos), \"unexpected character '%c'\", *pos);\n        pos++;\n\n        hasString = 1;\n\n        // convert quoted string\n        while (*pos != '\"')\n        {\n            struct CharmapEntry input;\n            struct CharmapEntry *last_valid_entry = NULL;\n            struct CharmapEntry *entry;\n            uint32_t c;\n            int length = 0;\n            char* last_valid_pos = NULL;\n            // safely erase the unicode area before use\n            memset(input.unicode, 0, sizeof (input.unicode));\n            input.length = 0;\n\n            // Find a charmap entry of longest length possible starting from this position\n            while (*pos != '\"')\n            {\n                if ((uncompressed && length == 1) || length == ARRAY_COUNT(entry->unicode))\n                {\n                    // Stop searching after length 3; we only support strings of lengths up\n                    // to that right now. Unless uncompressed is set, in which we ignore multi\n                    // texts by discarding entries longer than 1.\n                    break;\n                }\n\n                if (*pos == 0)\n                    parse_error(inputFileName, count_line_num(start, pos), \"EOF in string literal\");\n                if (*pos == '\\\\')\n                {\n                    pos++;\n                    c = get_escape_char(*pos);\n                    if (c == INVALID_CHAR)\n                        parse_error(inputFileName, count_line_num(start, pos), \"unknown escape sequence \\\\%c\", *pos);\n                    input.unicode[length] = c;\n                    pos++;\n                }\n                else\n                {\n                    pos = utf8_decode(pos, &input.unicode[length]);\n                    if (pos == NULL)\n                        parse_error(inputFileName, count_line_num(start, pos), \"invalid unicode encountered in file\");\n                }\n                length++;\n                input.length = length;\n\n                entry = hashtable_query(charmap, &input);\n                if (entry != NULL)\n                {\n                    last_valid_entry = entry;\n                    last_valid_pos = pos;\n                }\n            }\n\n            entry = last_valid_entry;\n            pos = last_valid_pos;\n            if (entry == NULL)\n                parse_error(inputFileName, count_line_num(start, pos), \"no charmap entry for U+%X\", input.unicode[0]);\n\n            for (i = 0; i < entry->bytesCount; i++) {\n                if (entry->bytesCount > 1 && cnOneByte && i % 2 == 0) {\n                    continue;\n                }\n                fprintf(fout, \"0x%02X,\", entry->bytes[i]);\n            }\n        }\n        pos++;  // skip over closing '\"'\n    }\n    pos++;  // skip over closing ')'\n    // use terminator \\0 from charmap if provided, otherwise default 0xFF\n    terminator = hashtable_query(charmap, &terminatorInput);\n    if (terminator == NULL)\n        fputs(\"0xFF\", fout);\n    else\n    {\n        for (i = 0; i < (cnOneByte ? 1 : terminator->bytesCount); i++)\n            fprintf(fout, \"0x%02X,\", terminator->bytes[i]);\n    }\n    return pos;\n}\n\nstatic void convert_file(const char *infilename, const char *outfilename)\n{\n    char *in = read_text_file(infilename);\n    FILE *fout = strcmp(outfilename, \"-\") != 0 ? fopen(outfilename, \"wb\") : stdout;\n\n    if (fout == NULL)\n        fatal_error(\"failed to open file '%s' for writing: %s\", strerror(errno));\n\n    char *start = in;\n    char *end = in;\n    char *pos = in;\n\n    while (1)\n    {\n        if (*pos == 0)  // end of file\n            goto eof;\n\n        // check for comment\n        if (*pos == '/')\n        {\n            pos++;\n            // skip over // comment\n            if (*pos == '/')\n            {\n                pos++;\n                // skip over next newline\n                while (*pos != '\\n')\n                {\n                    if (*pos == 0)\n                        goto eof;\n                    pos++;\n                }\n                pos++;\n            }\n            // skip over /* */ comment\n            else if (*pos == '*')\n            {\n                pos++;\n                while (*pos != '*' && pos[1] != '/')\n                {\n                    if (*pos == 0)\n                        goto eof;\n                    pos++;\n                }\n                pos += 2;\n            }\n        }\n        // skip over normal string literal\n        else if (*pos == '\"')\n        {\n            pos++;\n            while (*pos != '\"')\n            {\n                if (*pos == 0)\n                    goto eof;\n                if (*pos == '\\\\')\n                    pos++;\n                pos++;\n            }\n            pos++;\n        }\n        // check for _( sequence\n        else if ((*pos == '_') && (pos == in || !is_identifier_char(pos[-1])))\n        {\n            int uncompressed = 0;\n            int cnOneByte = 0;\n            end = pos;\n            pos++;\n            if (*pos == '_') // an extra _ signifies uncompressed strings. Enable uncompressed flag\n            {\n                pos++;\n                uncompressed = 1;\n            }\n            if (*pos == '%') // an extra % signifies a one-byte long characters on iQue instead of two-byte\n            {\n                pos++;\n                cnOneByte = 1;\n            }\n            if (*pos == '(')\n            {\n                pos++;\n                fwrite(start, end - start, 1, fout);\n                pos = convert_string(pos, fout, infilename, in, uncompressed, cnOneByte);\n                start = pos;\n            }\n        }\n        else\n        {\n            pos++;\n        }\n    }\n\n  eof:\n    fwrite(start, pos - start, 1, fout);\n    if (strcmp(outfilename, \"-\") != 0)\n        fclose(fout);\n    free(in);\n}\n\nstatic unsigned int charmap_hash(const void *value)\n{\n    const struct CharmapEntry* entry = value;\n    unsigned int ret = 0;\n    for (int i = 0; i < entry->length; i++)\n        ret = ret * 17 + entry->unicode[i];\n    return ret;\n}\n\nstatic int charmap_cmp(const void *a, const void *b)\n{\n    const struct CharmapEntry *ea = a;\n    const struct CharmapEntry *eb = b;\n    if (ea->length != eb->length)\n        return 0;\n    for(int i = 0; i < ea->length; i++)\n        if(ea->unicode[i] != eb->unicode[i])\n            return 0;\n    return 1;\n}\n\nstatic void usage(const char *execName)\n{\n    fprintf(stderr, \"Usage: %s CHARMAP INPUT OUTPUT\\n\", execName);\n}\n\nint main(int argc, char **argv)\n{\n    if (argc != 4)\n    {\n        usage(argv[0]);\n        return 1;\n    }\n\n    charmap = hashtable_new(charmap_hash, charmap_cmp, 256, sizeof(struct CharmapEntry));\n\n    read_charmap(argv[1]);\n    convert_file(argv[2], argv[3]);\n\n    hashtable_free(charmap);\n\n    return 0;\n}\n"
  },
  {
    "path": "tools/utf8.c",
    "content": "#include <stdint.h>\n#include <stdlib.h>\n\n#include \"utf8.h\"\n\n/* Copyright (c) 2008-2009 Bjoern Hoehrmann <bjoern@hoehrmann.de>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n#define UTF8_ACCEPT 0\n#define UTF8_REJECT 1\n\nstatic const uint8_t utf8d[] = {\n  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 00..1f\n  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 20..3f\n  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 40..5f\n  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 60..7f\n  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, // 80..9f\n  7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, // a0..bf\n  8,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, // c0..df\n  0xa,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x4,0x3,0x3, // e0..ef\n  0xb,0x6,0x6,0x6,0x5,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8, // f0..ff\n  0x0,0x1,0x2,0x3,0x5,0x8,0x7,0x1,0x1,0x1,0x4,0x6,0x1,0x1,0x1,0x1, // s0..s0\n  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,0,1,1,1,1,1,1, // s1..s2\n  1,2,1,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1, // s3..s4\n  1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,3,1,1,1,1,1,1, // s5..s6\n  1,3,1,1,1,1,1,3,1,3,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1, // s7..s8\n};\n\nstatic uint32_t\ndecode(uint32_t* state, uint32_t* codep, uint32_t byte) {\n  uint32_t type = utf8d[byte];\n\n  *codep = (*state != UTF8_ACCEPT) ?\n    (byte & 0x3fu) | (*codep << 6) :\n    (0xff >> type) & (byte);\n\n  *state = utf8d[256 + *state*16 + type];\n  return *state;\n}\n\nchar *utf8_decode(char *str, uint32_t *codep)\n{\n    uint32_t state = UTF8_ACCEPT;\n\n    *codep = 0;\n    while (*str != 0)\n    {\n        int result = decode(&state, codep, (unsigned char)*str);\n        str++;\n        if (result == UTF8_ACCEPT)\n            return str;\n        if (result == UTF8_REJECT)\n            return NULL;\n    }\n    return NULL;\n}\n"
  },
  {
    "path": "tools/utf8.h",
    "content": "#ifndef UTF8_H_\n#define UTF8_H_\n\nchar *utf8_decode(char *str, uint32_t *codep);\n\n#endif // UTF8_H_\n"
  },
  {
    "path": "tools/util/audiofile_strip.patch",
    "content": "diff --git a/libaudiofile/FileHandle.cpp b/libaudiofile/FileHandle.cpp\nindex 8562d4b..5d6342a 100644\n--- a/libaudiofile/FileHandle.cpp\n+++ b/libaudiofile/FileHandle.cpp\n@@ -74,26 +74,8 @@ _AFfilehandle *_AFfilehandle::create(int fileFormat)\n \t\tcase AF_FILE_AIFF:\n \t\tcase AF_FILE_AIFFC:\n \t\t\treturn new AIFFFile();\n-\t\tcase AF_FILE_NEXTSND:\n-\t\t\treturn new NeXTFile();\n \t\tcase AF_FILE_WAVE:\n \t\t\treturn new WAVEFile();\n-\t\tcase AF_FILE_BICSF:\n-\t\t\treturn new IRCAMFile();\n-\t\tcase AF_FILE_AVR:\n-\t\t\treturn new AVRFile();\n-\t\tcase AF_FILE_IFF_8SVX:\n-\t\t\treturn new IFFFile();\n-\t\tcase AF_FILE_SAMPLEVISION:\n-\t\t\treturn new SampleVisionFile();\n-\t\tcase AF_FILE_VOC:\n-\t\t\treturn new VOCFile();\n-\t\tcase AF_FILE_NIST_SPHERE:\n-\t\t\treturn new NISTFile();\n-\t\tcase AF_FILE_CAF:\n-\t\t\treturn new CAFFile();\n-\t\tcase AF_FILE_FLAC:\n-\t\t\treturn new FLACFile();\n \t\tdefault:\n \t\t\treturn NULL;\n \t}\ndiff --git a/libaudiofile/aupv.c b/libaudiofile/aupv.c\nindex 64e798b..374838b 100644\n--- a/libaudiofile/aupv.c\n+++ b/libaudiofile/aupv.c\n@@ -47,7 +47,7 @@ AUpvlist AUpvnew (int maxitems)\n \tif (aupvlist == NULL)\n \t\treturn AU_NULL_PVLIST;\n \n-\taupvlist->items = calloc(maxitems, sizeof (struct _AUpvitem));\n+\taupvlist->items = (struct _AUpvitem *)calloc(maxitems, sizeof (struct _AUpvitem));\n \n \tassert(aupvlist->items);\n \tif (aupvlist->items == NULL)\ndiff --git a/libaudiofile/g711.c b/libaudiofile/g711.c\nindex 8fb2323..1b323ec 100644\n--- a/libaudiofile/g711.c\n+++ b/libaudiofile/g711.c\n@@ -74,8 +74,7 @@ static int search(int val, const short *table, int size)\n  * John Wiley & Sons, pps 98-111 and 472-476.\n  */\n unsigned char\n-_af_linear2alaw(pcm_val)\n-\tint\t\tpcm_val;\t/* 2's complement (16-bit range) */\n+_af_linear2alaw(int\tpcm_val)\n {\n \tint\t\tmask;\n \tint\t\tseg;\n@@ -110,8 +109,7 @@ _af_linear2alaw(pcm_val)\n  *\n  */\n int\n-_af_alaw2linear(a_val)\n-\tunsigned char\ta_val;\n+_af_alaw2linear(unsigned char\ta_val)\n {\n \tint\t\tt;\n \tint\t\tseg;\ndiff --git a/libaudiofile/units.cpp b/libaudiofile/units.cpp\nindex ffd0a63..51d2dc3 100644\n--- a/libaudiofile/units.cpp\n+++ b/libaudiofile/units.cpp\n@@ -32,24 +32,12 @@\n #include \"units.h\"\n \n #include \"AIFF.h\"\n-#include \"AVR.h\"\n-#include \"CAF.h\"\n-#include \"FLACFile.h\"\n-#include \"IFF.h\"\n-#include \"IRCAM.h\"\n-#include \"NeXT.h\"\n-#include \"NIST.h\"\n #include \"Raw.h\"\n-#include \"SampleVision.h\"\n-#include \"VOC.h\"\n #include \"WAVE.h\"\n \n #include \"compression.h\"\n \n-#include \"modules/ALAC.h\"\n-#include \"modules/FLAC.h\"\n #include \"modules/G711.h\"\n-#include \"modules/IMA.h\"\n #include \"modules/MSADPCM.h\"\n #include \"modules/PCM.h\"\n \n@@ -99,20 +87,6 @@ const Unit _af_units[_AF_NUM_UNITS] =\n \t\t_AF_AIFF_NUM_INSTPARAMS,\n \t\t_af_aiff_inst_params\n \t},\n-\t{\n-\t\tAF_FILE_NEXTSND,\n-\t\t\"NeXT .snd/Sun .au\", \"NeXT .snd/Sun .au Format\", \"next\",\n-\t\ttrue,\n-\t\tNeXTFile::completeSetup,\n-\t\tNeXTFile::recognize,\n-\t\tAF_SAMPFMT_TWOSCOMP, 16,\n-\t\t_AF_NEXT_NUM_COMPTYPES,\n-\t\t_af_next_compression_types,\n-\t\t0,\t/* maximum marker count */\n-\t\t0,\t/* maximum instrument count */\n-\t\t0,\t/* maximum number of loops per instrument */\n-\t\t0, NULL\n-\t},\n \t{\n \t\tAF_FILE_WAVE,\n \t\t\"MS RIFF WAVE\", \"Microsoft RIFF WAVE Format\", \"wave\",\n@@ -128,144 +102,6 @@ const Unit _af_units[_AF_NUM_UNITS] =\n \t\t_AF_WAVE_NUM_INSTPARAMS,\n \t\t_af_wave_inst_params\n \t},\n-\t{\n-\t\tAF_FILE_IRCAM,\n-\t\t\"BICSF\", \"Berkeley/IRCAM/CARL Sound Format\", \"bicsf\",\n-\t\ttrue,\n-\t\tIRCAMFile::completeSetup,\n-\t\tIRCAMFile::recognize,\n-\t\tAF_SAMPFMT_TWOSCOMP, 16,\n-\t\t_AF_IRCAM_NUM_COMPTYPES,\n-\t\t_af_ircam_compression_types,\n-\t\t0,\t\t// maximum marker count\n-\t\t0,\t\t// maximum instrument count\n-\t\t0,\t\t// maximum number of loops per instrument\n-\t\t0,\t\t// number of instrument parameters\n-\t\tNULL\t// instrument parameters\n-\t},\n-\t{\n-\t\tAF_FILE_MPEG1BITSTREAM,\n-\t\t\"MPEG\", \"MPEG Audio Bitstream\", \"mpeg\",\n-\t\tfalse\n-\t},\n-\t{\n-\t\tAF_FILE_SOUNDDESIGNER1,\n-\t\t\"Sound Designer 1\", \"Sound Designer 1 File Format\", \"sd1\",\n-\t\tfalse\n-\t},\n-\t{\n-\t\tAF_FILE_SOUNDDESIGNER2,\n-\t\t\"Sound Designer 2\", \"Sound Designer 2 File Format\", \"sd2\",\n-\t\tfalse\n-\t},\n-\t{\n-\t\tAF_FILE_AVR,\n-\t\t\"AVR\", \"Audio Visual Research File Format\", \"avr\",\n-\t\ttrue,\n-\t\tAVRFile::completeSetup,\n-\t\tAVRFile::recognize,\n-\t\tAF_SAMPFMT_TWOSCOMP, 16,\n-\t\t0,\t/* number of compression types */\n-\t\tNULL,\t/* compression types */\n-\t\t0,\t/* maximum marker count */\n-\t\t0,\t/* maximum instrument count */\n-\t\t0,\t/* maximum number of loops per instrument */\n-\t\t0,\t/* number of instrument parameters */\n-\t},\n-\t{\n-\t\tAF_FILE_IFF_8SVX,\n-\t\t\"IFF/8SVX\", \"Amiga IFF/8SVX Sound File Format\", \"iff\",\n-\t\ttrue,\n-\t\tIFFFile::completeSetup,\n-\t\tIFFFile::recognize,\n-\t\tAF_SAMPFMT_TWOSCOMP, 8,\n-\t\t0,\t/* number of compression types */\n-\t\tNULL,\t/* compression types */\n-\t\t0,\t/* maximum marker count */\n-\t\t0,\t/* maximum instrument count */\n-\t\t0,\t/* maximum number of loops per instrument */\n-\t\t0,\t/* number of instrument parameters */\n-\t},\n-\t{\n-\t\tAF_FILE_SAMPLEVISION,\n-\t\t\"Sample Vision\", \"Sample Vision File Format\", \"smp\",\n-\t\ttrue,\n-\t\tSampleVisionFile::completeSetup,\n-\t\tSampleVisionFile::recognize,\n-\t\tAF_SAMPFMT_TWOSCOMP, 16,\n-\t\t0,\t\t// number of compression types\n-\t\tNULL,\t// compression types\n-\t\t0,\t\t// maximum marker count\n-\t\t0,\t\t// maximum instrument count\n-\t\t0,\t\t// maximum number of loops per instrument\n-\t\t0,\t\t// number of instrument parameters\n-\t\tNULL\t// instrument parameters\n-\t},\n-\t{\n-\t\tAF_FILE_VOC,\n-\t\t\"VOC\", \"Creative Voice File Format\", \"voc\",\n-\t\ttrue,\n-\t\tVOCFile::completeSetup,\n-\t\tVOCFile::recognize,\n-\t\tAF_SAMPFMT_TWOSCOMP, 16,\n-\t\t_AF_VOC_NUM_COMPTYPES,\n-\t\t_af_voc_compression_types,\n-\t\t0,\t\t// maximum marker count\n-\t\t0,\t\t// maximum instrument count\n-\t\t0,\t\t// maximum number of loops per instrument\n-\t\t0,\t\t// number of instrument parameters\n-\t\tNULL\t// instrument parameters\n-\t},\n-\t{\n-\t\tAF_FILE_NIST_SPHERE,\n-\t\t\"NIST SPHERE\", \"NIST SPHERE File Format\", \"nist\",\n-\t\ttrue,\n-\t\tNISTFile::completeSetup,\n-\t\tNISTFile::recognize,\n-\t\tAF_SAMPFMT_TWOSCOMP, 16,\n-\t\t0,\t/* number of compression types */\n-\t\tNULL,\t/* compression types */\n-\t\t0,\t/* maximum marker count */\n-\t\t0,\t/* maximum instrument count */\n-\t\t0,\t/* maximum number of loops per instrument */\n-\t\t0,\t/* number of instrument parameters */\n-\t\tNULL\t/* instrument parameters */\n-\t},\n-\t{\n-\t\tAF_FILE_SOUNDFONT2,\n-\t\t\"SoundFont 2\", \"SoundFont 2 File Format\", \"sf2\",\n-\t\tfalse\n-\t},\n-\t{\n-\t\tAF_FILE_CAF,\n-\t\t\"CAF\", \"Core Audio Format\", \"caf\",\n-\t\ttrue,\n-\t\tCAFFile::completeSetup,\n-\t\tCAFFile::recognize,\n-\t\tAF_SAMPFMT_TWOSCOMP, 16,\n-\t\t_AF_CAF_NUM_COMPTYPES,\n-\t\t_af_caf_compression_types,\n-\t\t0,\t\t// maximum marker count\n-\t\t0,\t\t// maximum instrument count\n-\t\t0,\t\t// maximum number of loops per instrument\n-\t\t0,\t\t// number of instrument parameters\n-\t\tNULL\t// instrument parameters\n-\t},\n-\t{\n-\t\tAF_FILE_FLAC,\n-\t\t\"FLAC\", \"Free Lossless Audio Codec\", \"flac\",\n-\t\ttrue,\n-\t\tFLACFile::completeSetup,\n-\t\tFLACFile::recognize,\n-\t\tAF_SAMPFMT_TWOSCOMP, 16,\n-\t\t_AF_FLAC_NUM_COMPTYPES,\n-\t\t_af_flac_compression_types,\n-\t\t0,\t\t// maximum marker count\n-\t\t0,\t\t// maximum instrument count\n-\t\t0,\t\t// maximum number of loops per instrument\n-\t\t0,\t\t// number of instrument parameters\n-\t\tNULL\t// instrument parameters\n-\t}\n };\n \n const CompressionUnit _af_compression[_AF_NUM_COMPRESSION] =\n@@ -309,19 +145,6 @@ const CompressionUnit _af_compression[_AF_NUM_COMPRESSION] =\n \t\t_af_g711_format_ok,\n \t\t_AFg711initcompress, _AFg711initdecompress\n \t},\n-\t{\n-\t\tAF_COMPRESSION_IMA,\n-\t\ttrue,\n-\t\t\"ima4\",\t/* label */\n-\t\t\"IMA ADPCM\",\t/* short name */\n-\t\t\"IMA DVI ADPCM\",\n-\t\t4.0,\n-\t\tAF_SAMPFMT_TWOSCOMP, 16,\n-\t\ttrue,\t/* needsRebuffer */\n-\t\tfalse,\t/* multiple_of */\n-\t\t_af_ima_adpcm_format_ok,\n-\t\t_af_ima_adpcm_init_compress, _af_ima_adpcm_init_decompress\n-\t},\n \t{\n \t\tAF_COMPRESSION_MS_ADPCM,\n \t\ttrue,\n@@ -335,34 +158,4 @@ const CompressionUnit _af_compression[_AF_NUM_COMPRESSION] =\n \t\t_af_ms_adpcm_format_ok,\n \t\t_af_ms_adpcm_init_compress, _af_ms_adpcm_init_decompress\n \t},\n-\t{\n-\t\tAF_COMPRESSION_FLAC,\n-#if ENABLE(FLAC)\n-\t\ttrue,\n-#else\n-\t\tfalse,\n-#endif\n-\t\t\"flac\",\t// label\n-\t\t\"FLAC\",\t// short name\n-\t\t\"Free Lossless Audio Codec\",\n-\t\t1.0,\n-\t\tAF_SAMPFMT_TWOSCOMP, 16,\n-\t\tfalse,\t// needsRebuffer\n-\t\tfalse,\t// multiple_of\n-\t\t_af_flac_format_ok,\n-\t\t_af_flac_init_compress, _af_flac_init_decompress\n-\t},\n-\t{\n-\t\tAF_COMPRESSION_ALAC,\n-\t\ttrue,\n-\t\t\"alac\",\t// label\n-\t\t\"ALAC\",\t// short name\n-\t\t\"Apple Lossless Audio Codec\",\n-\t\t1.0,\n-\t\tAF_SAMPFMT_TWOSCOMP, 16,\n-\t\ttrue,\t// needsRebuffer\n-\t\tfalse,\t// multiple_of\n-\t\t_af_alac_format_ok,\n-\t\t_af_alac_init_compress, _af_alac_init_decompress\n-\t}\n };\n"
  },
  {
    "path": "tools/util/generate_armips_cpp.py",
    "content": "#!/usr/bin/env python\n\nimport os\nimport re\nimport sys\n\nfile_list = [\n    'stdafx.h',\n    'ext/tinyformat/tinyformat.h',\n    'Commands/CAssemblerCommand.h',\n    'Core/Expression.h',\n    'Core/ExpressionFunctions.h',\n    'Core/SymbolData.h',\n    'Util/Util.h',\n    'Util/FileClasses.h',\n    'Util/ByteArray.h',\n    'Core/FileManager.h',\n    'Core/ELF/ElfTypes.h',\n    'Core/ELF/ElfFile.h',\n    'Core/ELF/ElfRelocator.h',\n    'Archs/Architecture.h',\n    'Archs/MIPS/Mips.h',\n    'Archs/MIPS/MipsOpcodes.h',\n    'Archs/MIPS/CMipsInstruction.h',\n    'Util/EncodingTable.h',\n    'Core/Misc.h',\n    'Core/Assembler.h',\n    'Core/SymbolTable.h',\n    'Core/Common.h',\n    'Parser/DirectivesParser.h',\n    'Parser/Tokenizer.h',\n    'Archs/MIPS/MipsMacros.h',\n    'Archs/MIPS/MipsParser.h',\n    'Archs/MIPS/CMipsInstruction.cpp',\n    'Archs/MIPS/MipsExpressionFunctions.h',\n    'Archs/MIPS/MipsElfRelocator.h',\n    'Archs/MIPS/Mips.cpp',\n    'Archs/MIPS/MipsElfFile.h',\n    'Util/CRC.h',\n    'Archs/MIPS/MipsElfFile.cpp',\n    'Commands/CommandSequence.h',\n    'Parser/Parser.h',\n    'Archs/MIPS/MipsElfRelocator.cpp',\n    'Archs/MIPS/MipsExpressionFunctions.cpp',\n    'Archs/MIPS/MipsMacros.cpp',\n    'Archs/MIPS/MipsOpcodes.cpp',\n    'Parser/ExpressionParser.h',\n    'Archs/MIPS/PsxRelocator.h',\n    'Commands/CDirectiveFile.h',\n    'Archs/MIPS/MipsParser.cpp',\n    'Archs/MIPS/PsxRelocator.cpp',\n    'Archs/Architecture.cpp',\n    'Commands/CAssemblerCommand.cpp',\n    'Commands/CAssemblerLabel.h',\n    'Commands/CAssemblerLabel.cpp',\n    'Commands/CDirectiveArea.h',\n    'Commands/CDirectiveArea.cpp',\n    'Commands/CDirectiveConditional.h',\n    'Commands/CDirectiveConditional.cpp',\n    'Commands/CDirectiveData.h',\n    'Commands/CDirectiveData.cpp',\n    'Commands/CDirectiveFile.cpp',\n    'Commands/CDirectiveMessage.h',\n    'Commands/CDirectiveMessage.cpp',\n    'Commands/CommandSequence.cpp',\n    'Parser/DirectivesParser.cpp',\n    'Parser/ExpressionParser.cpp',\n    'Parser/Parser.cpp',\n    'Parser/Tokenizer.cpp',\n    'Util/ByteArray.cpp',\n    'Util/CRC.cpp',\n    'Util/EncodingTable.cpp',\n    'Util/FileClasses.cpp',\n    'Util/Util.cpp',\n    'Main/CommandLineInterface.h',\n    'Main/CommandLineInterface.cpp',\n    'Core/ELF/ElfFile.cpp',\n    'Core/ELF/ElfRelocator.cpp',\n    'Core/Assembler.cpp',\n    'Core/Common.cpp',\n    'Core/Expression.cpp',\n    'Core/ExpressionFunctions.cpp',\n    'Core/FileManager.cpp',\n    'Core/Misc.cpp',\n    'Core/SymbolData.cpp',\n    'Core/SymbolTable.cpp',\n    'Main/main.cpp',\n]\n\nfile_header =  \\\n\"\"\"// armips assembler v0.11\n// https://github.com/Kingcom/armips/\n// To simplify compilation, all files have been concatenated into one.\n// MIPS only, ARM is not included.\\n\\n\"\"\"\n\ndef banned(line):\n    return '#pragma once' in line or '#include \"' in line\n\ndef cat_file(fout, fin_name):\n    with open(fin_name) as fin:\n        lines = fin.readlines()\n        lines = [l.rstrip() for l in lines if not banned(l)]\n        for l in lines:\n            if re.search(r'\\bArm\\b', l):\n                fout.write(\"#ifdef ARMIPS_ARM\\n\") # must manually insert #endif\n            fout.write(l + '\\n')\n        fout.write('\\n')\n\ndef combine_armips(fout_name, armips_path):\n    with open(fout_name, 'w') as fout:\n        fout.write(file_header)\n        fout.write(\"/*\\n\")\n        cat_file(fout, os.path.join(armips_path, 'LICENSE.txt'))\n        fout.write(\"*/\\n\\n\")\n        for f in file_list:\n            fout.write(f\"// file: {f}\\n\")\n            cat_file(fout, os.path.join(armips_path, f))\n\ndef main():\n    if len(sys.argv) > 1 and sys.argv[1] in ['-h', '--help']:\n        print('Usage: generate_armips_cpp.py [output_filename] [armips_src_dir]')\n        print('Defaults: [output_filename = \"armips.cpp\"] [armips_src_dir = \"./armips\"]')\n        return\n    fout_name = sys.argv[1] if len(sys.argv) > 1 else 'armips.cpp'\n    armips_path = sys.argv[2] if len(sys.argv) > 2 else './armips'\n    combine_armips(fout_name, os.path.expanduser(armips_path))\n\nmain()\n"
  },
  {
    "path": "tools/util/generate_audiofile_cpp.py",
    "content": "#!/usr/bin/env python\n\nimport os\nimport re\nimport sys\n\nfile_list = [\n    'Features.h',\n    'Compiler.h',\n    'error.h',\n    'extended.h',\n    'compression.h',\n    'aupvinternal.h',\n    'aupvlist.h',\n    'audiofile.h',\n    'afinternal.h',\n    'byteorder.h',\n    'AudioFormat.h',\n    'debug.h',\n    'util.h',\n    'units.h',\n    'UUID.h',\n    'Shared.h',\n    'Buffer.h',\n    'File.h',\n    'FileHandle.h',\n    'Instrument.h',\n    'Track.h',\n    'Marker.h',\n    'Setup.h',\n    'Tag.h',\n    'PacketTable.h',\n    'pcm.h',\n    'g711.h',\n    'af_vfs.h',\n    'Raw.h',\n    'WAVE.h',\n    'SampleVision.h',\n    'modules/Module.h',\n    'modules/ModuleState.h',\n    'modules/SimpleModule.h',\n    'modules/FileModule.h',\n    'modules/RebufferModule.h',\n    'modules/BlockCodec.h',\n    'modules/BlockCodec.cpp',\n    'modules/FileModule.cpp',\n    'modules/G711.h',\n    'modules/G711.cpp',\n    'modules/Module.cpp',\n    'modules/ModuleState.cpp',\n    'modules/MSADPCM.h',\n    'modules/MSADPCM.cpp',\n    'modules/PCM.h',\n    'modules/PCM.cpp',\n    'modules/SimpleModule.cpp',\n    'modules/RebufferModule.cpp',\n    'AIFF.h',\n    'AIFF.cpp',\n    'AudioFormat.cpp',\n    'Buffer.cpp',\n    'File.cpp',\n    'FileHandle.cpp',\n    'Instrument.cpp',\n    'Loop.cpp',\n    'Marker.cpp',\n    'Miscellaneous.cpp',\n    'PacketTable.cpp',\n    'Raw.cpp',\n    'Setup.cpp',\n    'Track.cpp',\n    'UUID.cpp',\n    'WAVE.cpp',\n    'aes.cpp',\n    'af_vfs.cpp',\n    'aupv.c',\n    'compression.cpp',\n    'data.cpp',\n    'debug.cpp',\n    'error.c',\n    'extended.c',\n    'format.cpp',\n    'g711.c',\n    'openclose.cpp',\n    'pcm.cpp',\n    'query.cpp',\n    'units.cpp',\n    'util.cpp',\n]\n\nfile_header =  \\\n\"\"\"// libaudiofile b62c902\n// https://github.com/mpruett/audiofile\n// To simplify compilation, all files have been concatenated into one.\n// Support for all formats except WAVE, AIFF(C) and RAW has been stripped out.\n\"\"\"\n\nprepend_defs =  \\\n\"\"\"#define HAVE_UNISTD_H 1\n#if defined __BIG_ENDIAN__\n# define WORDS_BIGENDIAN 1\n#endif\n#include <stdlib.h>\n\"\"\"\n\ndef banned(line):\n    return '#pragma once' in line or '#include \"' in line or '#include <config.h>' in line\n\ndef cat_file(fout, fin_name):\n    with open(fin_name) as fin:\n        lines = fin.readlines()\n        lines = [l.rstrip() for l in lines if not banned(l)]\n        for l in lines:\n            fout.write(l + '\\n')\n        fout.write('\\n')\n\ndef combine_libaudiofile(fout_name, libaudiofile_path):\n    with open(fout_name, 'w') as fout:\n        fout.write(file_header + \"\\n\")\n        fout.write(\"/*\\n\")\n        cat_file(fout, os.path.join(libaudiofile_path, '../COPYING'))\n        fout.write(\"*/\\n\\n\")\n        fout.write(prepend_defs + \"\\n\")\n        for f in file_list:\n            fout.write(f\"// file: {f}\\n\")\n            cat_file(fout, os.path.join(libaudiofile_path, f))\n\ndef main():\n    if len(sys.argv) > 1 and sys.argv[1] in ['-h', '--help']:\n        print('Usage: generate_audiofile_cpp.py [output_filename] [libaudiofile_src_dir]')\n        print('Defaults: [output_filename = \"audiofile.cpp\"] [libaudiofile_src_dir = \"./audiofile/libaudiofile\"]')\n        return\n    fout_name = sys.argv[1] if len(sys.argv) > 1 else 'audiofile.cpp'\n    libaudiofile_path = sys.argv[2] if len(sys.argv) > 2 else './audiofile/libaudiofile'\n    combine_libaudiofile(fout_name, os.path.expanduser(libaudiofile_path))\n\nmain()\n"
  },
  {
    "path": "undefined_syms.txt",
    "content": "/* libultra OS symbols */\n\n/* boot and osException symbols */\n\n/* exceptions */\n\nEXCEPTION_TLB_MISS = 0x80000000;\n\n/* SP */\n\nSP_DMEM       = 0xA4000000;\nSP_DMEM_UNK0  = 0xA40004C0;\nSP_DMEM_UNK1  = 0xA4000774;\nSP_IMEM       = 0xA4001000;\nSP_STATUS_REG = 0xA4040010;\nSP_PC         = 0xA4080000;\n\nD_CN_0400049C = 0x0400049C;\nD_CN_0400074C = 0x0400074C;\n\n/* MI */\n\nMI_MODE_REG      = 0xA4300000;\nMI_VERSION_REG   = 0xA4300004;\nMI_INTR_REG      = 0xA4300008;\nMI_INTR_MASK_REG = 0xA430000C;\n\n/* VI */\n\nVI_CURRENT_REG = 0xA4400010;\n\n/* AI */\n\nAI_STATUS_REG = 0xA450000C;\n\n/* PI */\n\nPI_DRAM_ADDR_REG = 0xA4600000;\nPI_CART_ADDR_REG = 0xA4600004;\nPI_WR_LEN_REG    = 0xA460000C;\nPI_STATUS_REG    = 0xA4600010;\nPI_BSD_DOM1_LAT_REG = 0xA4600014;\nPI_BSD_DOM1_PWD_REG = 0xA4600018;\nPI_BSD_DOM1_PGS_REG = 0xA460001C;\nPI_BSD_DOM1_RLS_REG = 0xA4600020;\n\n/* RI */\n\nRI_MODE_REG    = 0xA4700000;\nRI_REFRESH_REG = 0xA4700010;\n\n/* SI */\n\nSI_STATUS_REG = 0xA4800018;\n\n/* Unknown */\nD_B0000008 = 0xB0000008;\nD_B0000010 = 0xB0000010;\nD_B0000014 = 0xB0000014;\nD_C0000000 = 0xC0000000;\nD_C0000008 = 0xC0000008;\nD_C000000C = 0xC000000C;\n\n/* iQue symbols */\n__osBbEepromAddress = 0x8000035C;\n__osBbEepromSize = 0x80000360;\n__osBbFlashAddress = 0x80000364;\n__osBbFlashSize = 0x80000368;\n__osBbSramAddress = 0x8000036C;\n__osBbSramSize = 0x80000370;\n__osBbPakAddress = 0x80000374;\n__osBbPakSize = 0x80000384;\n__osBbIsBb = 0x80000388;\n__osBbHackFlags = 0x8000038C;\n"
  },
  {
    "path": "util.mk",
    "content": "# util.mk - Miscellaneous utility functions for use in Makefiles\n\n# Throws an error if the value of the variable named by $(1) is not in the list given by $(2)\ndefine validate-option\n  # value must be part of the list\n  ifeq ($$(filter $($(1)),$(2)),)\n    $$(error Value of $(1) must be one of the following: $(2))\n  endif\n  # value must be a single word (no whitespace)\n  ifneq ($$(words $($(1))),1)\n    $$(error Value of $(1) must be one of the following: $(2))\n  endif\nendef\n\n# Returns the path to the command $(1) if exists. Otherwise returns an empty string.\nfind-command = $(shell which $(1) 2>/dev/null)\n"
  }
]